From: Daiki Ueno Date: Mon, 24 Apr 2023 03:39:42 +0000 (+0900) Subject: build: re-indent code X-Git-Tag: 3.8.1~17^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=aa5950abab56b011331ad4331409b6ff8efb8aeb;p=thirdparty%2Fgnutls.git build: re-indent code Signed-off-by: Daiki Ueno --- diff --git a/doc/alert-printlist.c b/doc/alert-printlist.c index 0aede185e1..d2bcc19c72 100644 --- a/doc/alert-printlist.c +++ b/doc/alert-printlist.c @@ -52,25 +52,24 @@ static void main_texinfo(void) gnutls_mac_algorithm_t mac; gnutls_protocol_t version; - printf - ("@multitable @columnfractions .55 .10 .30\n@anchor{tab:alerts}\n"); + printf("@multitable @columnfractions .55 .10 .30\n@anchor{tab:alerts}\n"); printf("@headitem Alert @tab ID @tab Description\n"); for (i = 0; i < 256; i++) { if (gnutls_alert_get_strname(i) == NULL) continue; printf("@item %s\n@tab %d\n@tab %s\n", - escape_texi_string(gnutls_alert_get_strname - (i), buffer, - sizeof(buffer)), + escape_texi_string(gnutls_alert_get_strname(i), + buffer, sizeof(buffer)), (unsigned int)i, gnutls_alert_get_name(i)); } printf("@end multitable\n"); - } } static const char headers[] = "\\tablefirsthead{%\n" - "\\hline\n" "Alert & ID & Description\\\\\n" "\\hline}\n" + "\\hline\n" + "Alert & ID & Description\\\\\n" + "\\hline}\n" #if 0 "\\tablehead{%\n" "\\hline\n" @@ -81,7 +80,8 @@ static const char headers[] = "\\tablefirsthead{%\n" "\\multicolumn{3}{|r|}{\\small\\sl continued on next page}\\\\\n" "\\hline}\n" #endif - "\\tablelasttail{\\hline}\n" "\\bottomcaption{The TLS alert table}\n\n"; + "\\tablelasttail{\\hline}\n" + "\\bottomcaption{The TLS alert table}\n\n"; static void main_latex(void) { @@ -91,8 +91,7 @@ static void main_latex(void) puts(headers); - printf - ("\\begin{supertabular}{|p{.50\\linewidth}|p{.07\\linewidth}|p{.34\\linewidth}|}\n\\label{tab:alerts}\n"); + printf("\\begin{supertabular}{|p{.50\\linewidth}|p{.07\\linewidth}|p{.34\\linewidth}|}\n\\label{tab:alerts}\n"); { size_t i; @@ -113,9 +112,7 @@ static void main_latex(void) } printf("\\end{supertabular}\n\n"); - } return; - } diff --git a/doc/common.c b/doc/common.c index 0c14f7ea16..b4142abab1 100644 --- a/doc/common.c +++ b/doc/common.c @@ -20,7 +20,6 @@ char *escape_string(const char *str, char *buffer, int buffer_size) buffer[j] = 0; return buffer; - } char *escape_texi_string(const char *str, char *buffer, int buffer_size) @@ -41,5 +40,4 @@ char *escape_texi_string(const char *str, char *buffer, int buffer_size) buffer[j] = 0; return buffer; - } diff --git a/doc/errcodes.c b/doc/errcodes.c index 0750a08887..a5e4c042e1 100644 --- a/doc/errcodes.c +++ b/doc/errcodes.c @@ -19,7 +19,7 @@ */ #ifdef HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include @@ -41,15 +41,16 @@ typedef struct { static int compar(const void *_n1, const void *_n2) { const error_name *n1 = (const error_name *)_n1, - *n2 = (const error_name *)_n2; + *n2 = (const error_name *)_n2; return strcmp(n1->name, n2->name); } static const char headers[] = "\\tablefirsthead{%\n" - "\\hline\n" - "\\multicolumn{1}{|c}{Code} &\n" - "\\multicolumn{1}{c}{Name} &\n" - "\\multicolumn{1}{c|}{Description} \\\\\n" "\\hline}\n" + "\\hline\n" + "\\multicolumn{1}{|c}{Code} &\n" + "\\multicolumn{1}{c}{Name} &\n" + "\\multicolumn{1}{c|}{Description} \\\\\n" + "\\hline}\n" #if 0 "\\tablehead{%\n" "\\hline\n" @@ -60,7 +61,8 @@ static const char headers[] = "\\tablefirsthead{%\n" "\\multicolumn{3}{|r|}{\\small\\sl continued on next page}\\\\\n" "\\hline}\n" #endif - "\\tablelasttail{\\hline}\n" "\\bottomcaption{The error codes table}\n\n"; + "\\tablelasttail{\\hline}\n" + "\\bottomcaption{The error codes table}\n\n"; int main(int argc, char *argv[]) { @@ -78,7 +80,7 @@ static int main_texinfo(void) const char *desc; const char *_name; char buffer[500]; - error_name names_to_sort[MAX_CODES]; /* up to MAX_CODES names */ + error_name names_to_sort[MAX_CODES]; /* up to MAX_CODES names */ printf("@multitable @columnfractions .15 .40 .37\n"); @@ -111,12 +113,11 @@ static void main_latex(void) static char buffer2[500]; const char *desc; const char *_name; - error_name names_to_sort[MAX_CODES]; /* up to MAX_CODES names */ + error_name names_to_sort[MAX_CODES]; /* up to MAX_CODES names */ puts(headers); - printf - ("\\begin{supertabular}{|p{.05\\linewidth}|p{.40\\linewidth}|p{.45\\linewidth}|}\n"); + printf("\\begin{supertabular}{|p{.05\\linewidth}|p{.40\\linewidth}|p{.45\\linewidth}|}\n"); memset(names_to_sort, 0, sizeof(names_to_sort)); j = 0; @@ -130,7 +131,7 @@ static void main_latex(void) j++; } -//qsort( names_to_sort, j, sizeof(error_name), compar); + //qsort( names_to_sort, j, sizeof(error_name), compar); for (i = 0; i < j; i++) { _name = names_to_sort[i].name; @@ -139,10 +140,8 @@ static void main_latex(void) continue; printf("%d & {\\scriptsize{%s}} & %s", - names_to_sort[i].error_index, escape_string(_name, - buffer1, - sizeof - (buffer1)), + names_to_sort[i].error_index, + escape_string(_name, buffer1, sizeof(buffer1)), escape_string(desc, buffer2, sizeof(buffer2))); printf("\\\\\n"); } @@ -150,5 +149,4 @@ static void main_latex(void) printf("\\end{supertabular}\n\n"); return; - } diff --git a/doc/examples/ex-alert.c b/doc/examples/ex-alert.c index 56e7467d13..176a2a8dc9 100644 --- a/doc/examples/ex-alert.c +++ b/doc/examples/ex-alert.c @@ -1,7 +1,7 @@ /* This example code is placed in the public domain. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -18,8 +18,8 @@ void check_alert(gnutls_session_t session, int ret) { int last_alert; - if (ret == GNUTLS_E_WARNING_ALERT_RECEIVED - || ret == GNUTLS_E_FATAL_ALERT_RECEIVED) { + if (ret == GNUTLS_E_WARNING_ALERT_RECEIVED || + ret == GNUTLS_E_FATAL_ALERT_RECEIVED) { last_alert = gnutls_alert_get(session); /* The check for renegotiation is only useful if we are diff --git a/doc/examples/ex-cert-select-pkcs11.c b/doc/examples/ex-cert-select-pkcs11.c index 0cc3ed4cd5..e24c8a7be3 100644 --- a/doc/examples/ex-cert-select-pkcs11.c +++ b/doc/examples/ex-cert-select-pkcs11.c @@ -1,7 +1,7 @@ /* This example code is placed in the public domain. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -18,34 +18,35 @@ #include #include #include -#include /* for getpass() */ +#include /* for getpass() */ /* A TLS client that loads the certificate and key. */ -#define CHECK(x) assert((x)>=0) +#define CHECK(x) assert((x) >= 0) #define MAX_BUF 1024 #define MSG "GET / HTTP/1.0\r\n\r\n" -#define MIN(x,y) (((x)<(y))?(x):(y)) +#define MIN(x, y) (((x) < (y)) ? (x) : (y)) #define CAFILE "/etc/ssl/certs/ca-certificates.crt" /* The URLs of the objects can be obtained * using p11tool --list-all --login */ -#define KEY_URL "pkcs11:manufacturer=SomeManufacturer;object=Private%20Key" \ - ";objecttype=private;id=%db%5b%3e%b5%72%33" -#define CERT_URL "pkcs11:manufacturer=SomeManufacturer;object=Certificate;" \ - "objecttype=cert;id=db%5b%3e%b5%72%33" +#define KEY_URL \ + "pkcs11:manufacturer=SomeManufacturer;object=Private%20Key" \ + ";objecttype=private;id=%db%5b%3e%b5%72%33" +#define CERT_URL \ + "pkcs11:manufacturer=SomeManufacturer;object=Certificate;" \ + "objecttype=cert;id=db%5b%3e%b5%72%33" extern int tcp_connect(void); extern void tcp_close(int sd); -static int -pin_callback(void *user, int attempt, const char *token_url, - const char *token_label, unsigned int flags, char *pin, - size_t pin_max) +static int pin_callback(void *user, int attempt, const char *token_url, + const char *token_label, unsigned int flags, char *pin, + size_t pin_max) { const char *password; int len; @@ -161,7 +162,7 @@ int main(void) CHECK(gnutls_bye(session, GNUTLS_SHUT_RDWR)); - end: +end: tcp_close(sd); diff --git a/doc/examples/ex-cert-select.c b/doc/examples/ex-cert-select.c index 93ec9ddce7..258712e7fe 100644 --- a/doc/examples/ex-cert-select.c +++ b/doc/examples/ex-cert-select.c @@ -1,7 +1,7 @@ /* This example code is placed in the public domain. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -22,7 +22,7 @@ /* A TLS client that loads the certificate and key. */ -#define CHECK(x) assert((x)>=0) +#define CHECK(x) assert((x) >= 0) #define MAX_BUF 1024 #define MSG "GET / HTTP/1.0\r\n\r\n" @@ -34,12 +34,11 @@ extern int tcp_connect(void); extern void tcp_close(int sd); -static int -cert_callback(gnutls_session_t session, - const gnutls_datum_t * req_ca_rdn, int nreqs, - const gnutls_pk_algorithm_t * sign_algos, - int sign_algos_length, gnutls_pcert_st ** pcert, - unsigned int *pcert_length, gnutls_privkey_t * pkey); +static int cert_callback(gnutls_session_t session, + const gnutls_datum_t *req_ca_rdn, int nreqs, + const gnutls_pk_algorithm_t *sign_algos, + int sign_algos_length, gnutls_pcert_st **pcert, + unsigned int *pcert_length, gnutls_privkey_t *pkey); gnutls_pcert_st pcrt; gnutls_privkey_t key; @@ -52,8 +51,8 @@ static void load_keys(void) CHECK(gnutls_load_file(CERT_FILE, &data)); - CHECK(gnutls_pcert_import_x509_raw(&pcrt, &data, - GNUTLS_X509_FMT_PEM, 0)); + CHECK(gnutls_pcert_import_x509_raw(&pcrt, &data, GNUTLS_X509_FMT_PEM, + 0)); gnutls_free(data.data); @@ -61,8 +60,8 @@ static void load_keys(void) CHECK(gnutls_privkey_init(&key)); - CHECK(gnutls_privkey_import_x509_raw(key, &data, - GNUTLS_X509_FMT_PEM, NULL, 0)); + CHECK(gnutls_privkey_import_x509_raw(key, &data, GNUTLS_X509_FMT_PEM, + NULL, 0)); gnutls_free(data.data); } @@ -146,7 +145,7 @@ int main(void) CHECK(gnutls_bye(session, GNUTLS_SHUT_RDWR)); - end: +end: tcp_close(sd); @@ -164,12 +163,11 @@ int main(void) * before a handshake. */ -static int -cert_callback(gnutls_session_t session, - const gnutls_datum_t * req_ca_rdn, int nreqs, - const gnutls_pk_algorithm_t * sign_algos, - int sign_algos_length, gnutls_pcert_st ** pcert, - unsigned int *pcert_length, gnutls_privkey_t * pkey) +static int cert_callback(gnutls_session_t session, + const gnutls_datum_t *req_ca_rdn, int nreqs, + const gnutls_pk_algorithm_t *sign_algos, + int sign_algos_length, gnutls_pcert_st **pcert, + unsigned int *pcert_length, gnutls_privkey_t *pkey) { char issuer_dn[256]; int i, ret; @@ -181,8 +179,7 @@ cert_callback(gnutls_session_t session, if (nreqs > 0) printf("- Server's trusted authorities:\n"); else - printf - ("- Server did not send us any trusted authorities names.\n"); + printf("- Server did not send us any trusted authorities names.\n"); /* print the names (if any) */ for (i = 0; i < nreqs; i++) { @@ -208,5 +205,4 @@ cert_callback(gnutls_session_t session, } return 0; - } diff --git a/doc/examples/ex-client-anon.c b/doc/examples/ex-client-anon.c index 38e70264b1..da25251858 100644 --- a/doc/examples/ex-client-anon.c +++ b/doc/examples/ex-client-anon.c @@ -1,7 +1,7 @@ /* This example code is placed in the public domain. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -17,11 +17,11 @@ /* A very basic TLS client, with anonymous authentication. */ -#define LOOP_CHECK(rval, cmd) \ - do { \ - rval = cmd; \ - } while(rval == GNUTLS_E_AGAIN || rval == GNUTLS_E_INTERRUPTED); \ - assert(rval >= 0) +#define LOOP_CHECK(rval, cmd) \ + do { \ + rval = cmd; \ + } while (rval == GNUTLS_E_AGAIN || rval == GNUTLS_E_INTERRUPTED); \ + assert(rval >= 0) #define MAX_BUF 1024 #define MSG "GET / HTTP/1.0\r\n\r\n" @@ -46,8 +46,8 @@ int main(void) gnutls_init(&session, GNUTLS_CLIENT); /* Use default priorities */ - gnutls_priority_set_direct(session, - "PERFORMANCE:+ANON-ECDH:+ANON-DH", NULL); + gnutls_priority_set_direct(session, "PERFORMANCE:+ANON-ECDH:+ANON-DH", + NULL); /* put the anonymous credentials to the current session */ @@ -64,8 +64,7 @@ int main(void) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fprintf(stderr, "*** Handshake failed\n"); @@ -102,7 +101,7 @@ int main(void) LOOP_CHECK(ret, gnutls_bye(session, GNUTLS_SHUT_RDWR)); - end: +end: tcp_close(sd); diff --git a/doc/examples/ex-client-dtls.c b/doc/examples/ex-client-dtls.c index 1ecf95b7eb..7fb0cc999f 100644 --- a/doc/examples/ex-client-dtls.c +++ b/doc/examples/ex-client-dtls.c @@ -1,7 +1,7 @@ /* This example code is placed in the public domain. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -18,12 +18,12 @@ /* A very basic Datagram TLS client, over UDP with X.509 authentication. */ -#define CHECK(x) assert((x)>=0) -#define LOOP_CHECK(rval, cmd) \ - do { \ - rval = cmd; \ - } while(rval == GNUTLS_E_AGAIN || rval == GNUTLS_E_INTERRUPTED); \ - assert(rval >= 0) +#define CHECK(x) assert((x) >= 0) +#define LOOP_CHECK(rval, cmd) \ + do { \ + rval = cmd; \ + } while (rval == GNUTLS_E_AGAIN || rval == GNUTLS_E_INTERRUPTED); \ + assert(rval >= 0) #define MAX_BUF 1024 #define MSG "GET / HTTP/1.0\r\n\r\n" @@ -62,9 +62,9 @@ int main(void) /* put the x509 credentials to the current session */ CHECK(gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred)); - CHECK(gnutls_server_name_set - (session, GNUTLS_NAME_DNS, "www.example.com", - strlen("www.example.com"))); + CHECK(gnutls_server_name_set(session, GNUTLS_NAME_DNS, + "www.example.com", + strlen("www.example.com"))); gnutls_session_set_verify_cert(session, "www.example.com", 0); @@ -80,8 +80,7 @@ int main(void) /* Perform the TLS handshake */ do { ret = gnutls_handshake(session); - } - while (ret == GNUTLS_E_INTERRUPTED || ret == GNUTLS_E_AGAIN); + } while (ret == GNUTLS_E_INTERRUPTED || ret == GNUTLS_E_AGAIN); /* Note that DTLS may also receive GNUTLS_E_LARGE_PACKET */ if (ret < 0) { @@ -122,7 +121,7 @@ int main(void) * be lost */ CHECK(gnutls_bye(session, GNUTLS_SHUT_WR)); - end: +end: udp_close(sd); diff --git a/doc/examples/ex-client-psk.c b/doc/examples/ex-client-psk.c index 069b387373..e35c185d67 100644 --- a/doc/examples/ex-client-psk.c +++ b/doc/examples/ex-client-psk.c @@ -1,7 +1,7 @@ /* This example code is placed in the public domain. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -17,12 +17,12 @@ /* A very basic TLS client, with PSK authentication. */ -#define CHECK(x) assert((x)>=0) -#define LOOP_CHECK(rval, cmd) \ - do { \ - rval = cmd; \ - } while(rval == GNUTLS_E_AGAIN || rval == GNUTLS_E_INTERRUPTED); \ - assert(rval >= 0) +#define CHECK(x) assert((x) >= 0) +#define LOOP_CHECK(rval, cmd) \ + do { \ + rval = cmd; \ + } while (rval == GNUTLS_E_AGAIN || rval == GNUTLS_E_INTERRUPTED); \ + assert(rval >= 0) #define MAX_BUF 1024 #define MSG "GET / HTTP/1.0\r\n\r\n" @@ -55,10 +55,8 @@ int main(void) */ CHECK(gnutls_init(&session, GNUTLS_CLIENT)); - ret = - gnutls_set_default_priority_append(session, - "-KX-ALL:+ECDHE-PSK:+DHE-PSK:+PSK", - &err, 0); + ret = gnutls_set_default_priority_append( + session, "-KX-ALL:+ECDHE-PSK:+DHE-PSK:+PSK", &err, 0); /* Alternative for pre-3.6.3 versions: * gnutls_priority_set_direct(session, "NORMAL:+ECDHE-PSK:+DHE-PSK:+PSK", &err) @@ -85,8 +83,7 @@ int main(void) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fprintf(stderr, "*** Handshake failed\n"); @@ -123,7 +120,7 @@ int main(void) CHECK(gnutls_bye(session, GNUTLS_SHUT_RDWR)); - end: +end: tcp_close(sd); diff --git a/doc/examples/ex-client-resume.c b/doc/examples/ex-client-resume.c index b3510bd193..2997b64e48 100644 --- a/doc/examples/ex-client-resume.c +++ b/doc/examples/ex-client-resume.c @@ -1,7 +1,7 @@ /* This example code is placed in the public domain. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -20,12 +20,12 @@ extern void tcp_close(int sd); * Note that error recovery is minimal for simplicity. */ -#define CHECK(x) assert((x)>=0) -#define LOOP_CHECK(rval, cmd) \ - do { \ - rval = cmd; \ - } while(rval == GNUTLS_E_AGAIN || rval == GNUTLS_E_INTERRUPTED); \ - assert(rval >= 0) +#define CHECK(x) assert((x) >= 0) +#define LOOP_CHECK(rval, cmd) \ + do { \ + rval = cmd; \ + } while (rval == GNUTLS_E_AGAIN || rval == GNUTLS_E_INTERRUPTED); \ + assert(rval >= 0) #define MAX_BUF 1024 #define MSG "GET / HTTP/1.0\r\n\r\n" @@ -49,7 +49,7 @@ int main(void) CHECK(gnutls_certificate_allocate_credentials(&xcred)); CHECK(gnutls_certificate_set_x509_system_trust(xcred)); - for (t = 0; t < 2; t++) { /* connect 2 times to the server */ + for (t = 0; t < 2; t++) { /* connect 2 times to the server */ sd = tcp_connect(); @@ -79,8 +79,7 @@ int main(void) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fprintf(stderr, "*** Handshake failed\n"); @@ -90,10 +89,10 @@ int main(void) printf("- Handshake was completed\n"); } - if (t == 0) { /* the first time we connect */ + if (t == 0) { /* the first time we connect */ /* get the session data */ CHECK(gnutls_session_get_data2(session, &sdata)); - } else { /* the second time we connect */ + } else { /* the second time we connect */ /* check if we actually resumed the previous session */ if (gnutls_session_is_resumed(session) != 0) { @@ -129,13 +128,13 @@ int main(void) gnutls_bye(session, GNUTLS_SHUT_RDWR); - end: + end: tcp_close(sd); gnutls_deinit(session); - } /* for() */ + } /* for() */ gnutls_certificate_free_credentials(xcred); diff --git a/doc/examples/ex-client-srp.c b/doc/examples/ex-client-srp.c index 3ae7e8596d..b51dded380 100644 --- a/doc/examples/ex-client-srp.c +++ b/doc/examples/ex-client-srp.c @@ -1,7 +1,7 @@ /* This example code is placed in the public domain. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -56,8 +56,8 @@ int main(void) /* Set the priorities. */ - gnutls_priority_set_direct(session, - "NORMAL:+SRP:+SRP-RSA:+SRP-DSS", NULL); + gnutls_priority_set_direct(session, "NORMAL:+SRP:+SRP-RSA:+SRP-DSS", + NULL); /* put the SRP credentials to the current session */ @@ -71,8 +71,7 @@ int main(void) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fprintf(stderr, "*** Handshake failed\n"); @@ -110,7 +109,7 @@ int main(void) } gnutls_bye(session, GNUTLS_SHUT_RDWR); - end: +end: tcp_close(sd); diff --git a/doc/examples/ex-client-x509-3.1.c b/doc/examples/ex-client-x509-3.1.c index 891efb9c54..5a4501323e 100644 --- a/doc/examples/ex-client-x509-3.1.c +++ b/doc/examples/ex-client-x509-3.1.c @@ -1,7 +1,7 @@ /* This example code is placed in the public domain. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -17,12 +17,12 @@ * Note that error recovery is minimal for simplicity. */ -#define CHECK(x) assert((x)>=0) -#define LOOP_CHECK(rval, cmd) \ - do { \ - rval = cmd; \ - } while(rval == GNUTLS_E_AGAIN || rval == GNUTLS_E_INTERRUPTED); \ - assert(rval >= 0) +#define CHECK(x) assert((x) >= 0) +#define LOOP_CHECK(rval, cmd) \ + do { \ + rval = cmd; \ + } while (rval == GNUTLS_E_AGAIN || rval == GNUTLS_E_INTERRUPTED); \ + assert(rval >= 0) #define MAX_BUF 1024 #define CAFILE "/etc/ssl/certs/ca-certificates.crt" @@ -101,8 +101,7 @@ int main(void) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fprintf(stderr, "*** Handshake failed\n"); @@ -139,7 +138,7 @@ int main(void) CHECK(gnutls_bye(session, GNUTLS_SHUT_RDWR)); - end: +end: tcp_close(sd); @@ -173,14 +172,14 @@ static int _verify_certificate_callback(gnutls_session_t session) type = gnutls_certificate_type_get(session); - CHECK(gnutls_certificate_verification_status_print(status, type, - &out, 0)); + CHECK(gnutls_certificate_verification_status_print(status, type, &out, + 0)); printf("%s", out.data); gnutls_free(out.data); - if (status != 0) /* Certificate is not trusted */ + if (status != 0) /* Certificate is not trusted */ return GNUTLS_E_CERTIFICATE_ERROR; /* notify gnutls to continue handshake normally */ diff --git a/doc/examples/ex-client-x509.c b/doc/examples/ex-client-x509.c index aa6d6cee1d..bed318785c 100644 --- a/doc/examples/ex-client-x509.c +++ b/doc/examples/ex-client-x509.c @@ -1,7 +1,7 @@ /* This example code is placed in the public domain. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -16,12 +16,12 @@ * verification. Note that error recovery is minimal for simplicity. */ -#define CHECK(x) assert((x)>=0) -#define LOOP_CHECK(rval, cmd) \ - do { \ - rval = cmd; \ - } while(rval == GNUTLS_E_AGAIN || rval == GNUTLS_E_INTERRUPTED); \ - assert(rval >= 0) +#define CHECK(x) assert((x) >= 0) +#define LOOP_CHECK(rval, cmd) \ + do { \ + rval = cmd; \ + } while (rval == GNUTLS_E_AGAIN || rval == GNUTLS_E_INTERRUPTED); \ + assert(rval >= 0) #define MAX_BUF 1024 #define MSG "GET / HTTP/1.0\r\n\r\n" @@ -63,9 +63,9 @@ int main(void) /* Initialize TLS session */ CHECK(gnutls_init(&session, GNUTLS_CLIENT)); - CHECK(gnutls_server_name_set - (session, GNUTLS_NAME_DNS, "www.example.com", - strlen("www.example.com"))); + CHECK(gnutls_server_name_set(session, GNUTLS_NAME_DNS, + "www.example.com", + strlen("www.example.com"))); /* It is recommended to use the default priorities */ CHECK(gnutls_set_default_priority(session)); @@ -86,15 +86,14 @@ int main(void) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { if (ret == GNUTLS_E_CERTIFICATE_VERIFICATION_ERROR) { /* check certificate verification status */ type = gnutls_certificate_type_get(session); status = gnutls_session_get_verify_cert_status(session); - CHECK(gnutls_certificate_verification_status_print - (status, type, &out, 0)); + CHECK(gnutls_certificate_verification_status_print( + status, type, &out, 0)); printf("cert verify output: %s\n", out.data); gnutls_free(out.data); } @@ -131,7 +130,7 @@ int main(void) CHECK(gnutls_bye(session, GNUTLS_SHUT_RDWR)); - end: +end: tcp_close(sd); diff --git a/doc/examples/ex-crq.c b/doc/examples/ex-crq.c index a06e430cf0..9ba81f573f 100644 --- a/doc/examples/ex-crq.c +++ b/doc/examples/ex-crq.c @@ -1,7 +1,7 @@ /* This example code is placed in the public domain. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,17 +35,17 @@ int main(void) /* Generate an RSA key of moderate security. */ - bits = - gnutls_sec_param_to_pk_bits(GNUTLS_PK_RSA, GNUTLS_SEC_PARAM_MEDIUM); + bits = gnutls_sec_param_to_pk_bits(GNUTLS_PK_RSA, + GNUTLS_SEC_PARAM_MEDIUM); gnutls_x509_privkey_generate(key, GNUTLS_PK_RSA, bits, 0); /* Add stuff to the distinguished name */ - gnutls_x509_crq_set_dn_by_oid(crq, GNUTLS_OID_X520_COUNTRY_NAME, - 0, "GR", 2); + gnutls_x509_crq_set_dn_by_oid(crq, GNUTLS_OID_X520_COUNTRY_NAME, 0, + "GR", 2); - gnutls_x509_crq_set_dn_by_oid(crq, GNUTLS_OID_X520_COMMON_NAME, - 0, "Nikos", strlen("Nikos")); + gnutls_x509_crq_set_dn_by_oid(crq, GNUTLS_OID_X520_COMMON_NAME, 0, + "Nikos", strlen("Nikos")); /* Set the request version. */ @@ -84,5 +84,4 @@ int main(void) gnutls_x509_privkey_deinit(key); return 0; - } diff --git a/doc/examples/ex-ocsp-client.c b/doc/examples/ex-ocsp-client.c index 92f053a89f..6273fe35a2 100644 --- a/doc/examples/ex-ocsp-client.c +++ b/doc/examples/ex-ocsp-client.c @@ -1,7 +1,7 @@ /* This example code is placed in the public domain. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -11,19 +11,17 @@ #include #include #ifndef NO_LIBCURL -# include +#include #endif #include "read-file.h" size_t get_data(void *buffer, size_t size, size_t nmemb, void *userp); static gnutls_x509_crt_t load_cert(const char *cert_file); -static void _response_info(const gnutls_datum_t * data); -static void -_generate_request(gnutls_datum_t * rdata, gnutls_x509_crt_t cert, - gnutls_x509_crt_t issuer, gnutls_datum_t * nonce); -static int -_verify_response(gnutls_datum_t * data, gnutls_x509_crt_t cert, - gnutls_x509_crt_t signer, gnutls_datum_t * nonce); +static void _response_info(const gnutls_datum_t *data); +static void _generate_request(gnutls_datum_t *rdata, gnutls_x509_crt_t cert, + gnutls_x509_crt_t issuer, gnutls_datum_t *nonce); +static int _verify_response(gnutls_datum_t *data, gnutls_x509_crt_t cert, + gnutls_x509_crt_t signer, gnutls_datum_t *nonce); /* This program queries an OCSP server. It expects three files. argv[1] containing the certificate to @@ -66,14 +64,9 @@ int main(int argc, char *argv[]) signer = load_cert(signer_file); if (hostname == NULL) { - for (seq = 0;; seq++) { - ret = - gnutls_x509_crt_get_authority_info_access(cert, - seq, - GNUTLS_IA_OCSP_URI, - &tmp, - NULL); + ret = gnutls_x509_crt_get_authority_info_access( + cert, seq, GNUTLS_IA_OCSP_URI, &tmp, NULL); if (ret == GNUTLS_E_UNKNOWN_ALGORITHM) continue; if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { @@ -101,7 +94,6 @@ int main(int argc, char *argv[]) gnutls_free(tmp.data); break; } - } /* Note that the OCSP servers hostname might be available @@ -120,9 +112,8 @@ int main(int argc, char *argv[]) if (handle == NULL) exit(1); - headers = - curl_slist_append(headers, - "Content-Type: application/ocsp-request"); + headers = curl_slist_append(headers, + "Content-Type: application/ocsp-request"); curl_easy_setopt(handle, CURLOPT_HTTPHEADER, headers); curl_easy_setopt(handle, CURLOPT_POSTFIELDS, (void *)req.data); @@ -152,7 +143,7 @@ int main(int argc, char *argv[]) return v; } -static void _response_info(const gnutls_datum_t * data) +static void _response_info(const gnutls_datum_t *data) { gnutls_ocsp_resp_t resp; int ret; @@ -206,9 +197,8 @@ static gnutls_x509_crt_t load_cert(const char *cert_file) return crt; } -static void -_generate_request(gnutls_datum_t * rdata, gnutls_x509_crt_t cert, - gnutls_x509_crt_t issuer, gnutls_datum_t * nonce) +static void _generate_request(gnutls_datum_t *rdata, gnutls_x509_crt_t cert, + gnutls_x509_crt_t issuer, gnutls_datum_t *nonce) { gnutls_ocsp_req_t req; int ret; @@ -234,9 +224,8 @@ _generate_request(gnutls_datum_t * rdata, gnutls_x509_crt_t cert, return; } -static int -_verify_response(gnutls_datum_t * data, gnutls_x509_crt_t cert, - gnutls_x509_crt_t signer, gnutls_datum_t * nonce) +static int _verify_response(gnutls_datum_t *data, gnutls_x509_crt_t cert, + gnutls_x509_crt_t signer, gnutls_datum_t *nonce) { gnutls_ocsp_resp_t resp; int ret; @@ -259,8 +248,8 @@ _verify_response(gnutls_datum_t * data, gnutls_x509_crt_t cert, if (ret < 0) exit(1); - if (rnonce.size != nonce->size || memcmp(nonce->data, rnonce.data, - nonce->size) != 0) { + if (rnonce.size != nonce->size || + memcmp(nonce->data, rnonce.data, nonce->size) != 0) { exit(1); } diff --git a/doc/examples/ex-pkcs11-list.c b/doc/examples/ex-pkcs11-list.c index 3f9c370584..736002f32b 100644 --- a/doc/examples/ex-pkcs11-list.c +++ b/doc/examples/ex-pkcs11-list.c @@ -17,15 +17,15 @@ int main(int argc, char **argv) int ret; unsigned int i; - ret = gnutls_pkcs11_obj_list_import_url4(&obj_list, &obj_list_size, URL, - GNUTLS_PKCS11_OBJ_FLAG_CRT | - GNUTLS_PKCS11_OBJ_FLAG_WITH_PRIVKEY); + ret = gnutls_pkcs11_obj_list_import_url4( + &obj_list, &obj_list_size, URL, + GNUTLS_PKCS11_OBJ_FLAG_CRT | + GNUTLS_PKCS11_OBJ_FLAG_WITH_PRIVKEY); if (ret < 0) return -1; /* now all certificates are in obj_list */ for (i = 0; i < obj_list_size; i++) { - gnutls_x509_crt_init(&xcrt); gnutls_x509_crt_import_pkcs11(xcrt, obj_list[i]); diff --git a/doc/examples/ex-pkcs12.c b/doc/examples/ex-pkcs12.c index a77c697a37..d0f3cf2c76 100644 --- a/doc/examples/ex-pkcs12.c +++ b/doc/examples/ex-pkcs12.c @@ -1,7 +1,7 @@ /* This example code is placed in the public domain. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -19,9 +19,8 @@ * encrypted using a PKCS #12 cipher, or some browsers will crash) * password: is the password used to encrypt the PKCS #12 packet. */ -int -write_pkcs12(const gnutls_datum_t * cert, - const gnutls_datum_t * pkcs8_key, const char *password) +int write_pkcs12(const gnutls_datum_t *cert, const gnutls_datum_t *pkcs8_key, + const char *password) { gnutls_pkcs12_t pkcs12; int ret, bag_index; @@ -71,9 +70,8 @@ write_pkcs12(const gnutls_datum_t * cert, /* Now the key. */ - ret = gnutls_pkcs12_bag_set_data(key_bag, - GNUTLS_BAG_PKCS8_ENCRYPTED_KEY, - pkcs8_key); + ret = gnutls_pkcs12_bag_set_data( + key_bag, GNUTLS_BAG_PKCS8_ENCRYPTED_KEY, pkcs8_key); if (ret < 0) { fprintf(stderr, "ret: %s\n", gnutls_strerror(ret)); return 1; @@ -104,9 +102,8 @@ write_pkcs12(const gnutls_datum_t * cert, gnutls_pkcs12_generate_mac(pkcs12, password); pkcs12_struct_size = sizeof(pkcs12_struct); - ret = - gnutls_pkcs12_export(pkcs12, GNUTLS_X509_FMT_DER, - pkcs12_struct, &pkcs12_struct_size); + ret = gnutls_pkcs12_export(pkcs12, GNUTLS_X509_FMT_DER, pkcs12_struct, + &pkcs12_struct_size); if (ret < 0) { fprintf(stderr, "ret: %s\n", gnutls_strerror(ret)); return 1; diff --git a/doc/examples/ex-serv-anon.c b/doc/examples/ex-serv-anon.c index 618de8a546..a90e7d6719 100644 --- a/doc/examples/ex-serv-anon.c +++ b/doc/examples/ex-serv-anon.c @@ -1,7 +1,7 @@ /* This example code is placed in the public domain. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -18,9 +18,13 @@ /* This is a sample TLS 1.0 echo server, for anonymous authentication only. */ -#define SOCKET_ERR(err,s) if(err==-1) {perror(s);return(1);} +#define SOCKET_ERR(err, s) \ + if (err == -1) { \ + perror(s); \ + return (1); \ + } #define MAX_BUF 1024 -#define PORT 5556 /* listen to 5556 port */ +#define PORT 5556 /* listen to 5556 port */ int main(void) { @@ -57,7 +61,7 @@ int main(void) memset(&sa_serv, '\0', sizeof(sa_serv)); sa_serv.sin_family = AF_INET; sa_serv.sin_addr.s_addr = INADDR_ANY; - sa_serv.sin_port = htons(PORT); /* Server Port number */ + sa_serv.sin_port = htons(PORT); /* Server Port number */ setsockopt(listen_sd, SOL_SOCKET, SO_REUSEADDR, (void *)&optval, sizeof(int)); @@ -80,20 +84,19 @@ int main(void) printf("- connection from %s, port %d\n", inet_ntop(AF_INET, &sa_cli.sin_addr, topbuf, - sizeof(topbuf)), ntohs(sa_cli.sin_port)); + sizeof(topbuf)), + ntohs(sa_cli.sin_port)); gnutls_transport_set_int(session, sd); do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(sd); gnutls_deinit(session); - fprintf(stderr, - "*** Handshake has failed (%s)\n\n", + fprintf(stderr, "*** Handshake has failed (%s)\n\n", gnutls_strerror(ret)); continue; } @@ -106,14 +109,14 @@ int main(void) ret = gnutls_record_recv(session, buffer, MAX_BUF); if (ret == 0) { - printf - ("\n- Peer has closed the GnuTLS connection\n"); + printf("\n- Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0 && gnutls_error_is_fatal(ret) == 0) { fprintf(stderr, "*** Warning: %s\n", gnutls_strerror(ret)); } else if (ret < 0) { - fprintf(stderr, "\n*** Received corrupted " + fprintf(stderr, + "\n*** Received corrupted " "data(%d). Closing the connection.\n\n", ret); break; @@ -130,7 +133,6 @@ int main(void) close(sd); gnutls_deinit(session); - } close(listen_sd); @@ -139,5 +141,4 @@ int main(void) gnutls_global_deinit(); return 0; - } diff --git a/doc/examples/ex-serv-dtls.c b/doc/examples/ex-serv-dtls.c index 73811f49d6..1fc4380cbe 100644 --- a/doc/examples/ex-serv-dtls.c +++ b/doc/examples/ex-serv-dtls.c @@ -1,7 +1,7 @@ /* This example code is placed in the public domain. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -28,9 +28,9 @@ */ #define LOOP_CHECK(rval, cmd) \ - do { \ - rval = cmd; \ - } while(rval == GNUTLS_E_AGAIN || rval == GNUTLS_E_INTERRUPTED) + do { \ + rval = cmd; \ + } while (rval == GNUTLS_E_AGAIN || rval == GNUTLS_E_INTERRUPTED) #define MAX_BUFFER 1024 #define PORT 5557 @@ -81,9 +81,8 @@ int main(void) gnutls_certificate_set_x509_crl_file(x509_cred, CRLFILE, GNUTLS_X509_FMT_PEM); - ret = - gnutls_certificate_set_x509_key_file(x509_cred, CERTFILE, - KEYFILE, GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_file(x509_cred, CERTFILE, KEYFILE, + GNUTLS_X509_FMT_PEM); if (ret < 0) { printf("No certificate or key were found\n"); exit(1); @@ -97,9 +96,8 @@ int main(void) * "NORMAL:-VERS-TLS-ALL:+VERS-DTLS1.0:%SERVER_PRECEDENCE", * NULL); */ - gnutls_priority_init2(&priority_cache, - "%SERVER_PRECEDENCE", - NULL, GNUTLS_PRIORITY_INIT_DEF_APPEND); + gnutls_priority_init2(&priority_cache, "%SERVER_PRECEDENCE", NULL, + GNUTLS_PRIORITY_INIT_DEF_APPEND); gnutls_key_generate(&cookie_key, GNUTLS_COOKIE_KEY_SIZE); @@ -112,7 +110,7 @@ int main(void) sa_serv.sin_addr.s_addr = INADDR_ANY; sa_serv.sin_port = htons(PORT); - { /* DTLS requires the IP don't fragment (DF) bit to be set */ + { /* DTLS requires the IP don't fragment (DF) bit to be set */ #if defined(IP_DONTFRAG) int optval = 1; setsockopt(listen_sd, IPPROTO_IP, IP_DONTFRAG, @@ -139,12 +137,10 @@ int main(void) (struct sockaddr *)&cli_addr, &cli_addr_size); if (ret > 0) { memset(&prestate, 0, sizeof(prestate)); - ret = - gnutls_dtls_cookie_verify(&cookie_key, - &cli_addr, - sizeof(cli_addr), - buffer, ret, &prestate); - if (ret < 0) { /* cookie not valid */ + ret = gnutls_dtls_cookie_verify(&cookie_key, &cli_addr, + sizeof(cli_addr), + buffer, ret, &prestate); + if (ret < 0) { /* cookie not valid */ priv_data_st s; memset(&s, 0, sizeof(s)); @@ -152,19 +148,15 @@ int main(void) s.cli_addr = (void *)&cli_addr; s.cli_addr_size = sizeof(cli_addr); - printf - ("Sending hello verify request to %s\n", - human_addr((struct sockaddr *) - &cli_addr, - sizeof(cli_addr), buffer, - sizeof(buffer))); + printf("Sending hello verify request to %s\n", + human_addr((struct sockaddr *)&cli_addr, + sizeof(cli_addr), buffer, + sizeof(buffer))); - gnutls_dtls_cookie_send(&cookie_key, - &cli_addr, - sizeof(cli_addr), - &prestate, - (gnutls_transport_ptr_t) - & s, push_func); + gnutls_dtls_cookie_send( + &cookie_key, &cli_addr, + sizeof(cli_addr), &prestate, + (gnutls_transport_ptr_t)&s, push_func); /* discard peeked data */ recvfrom(sock, buffer, sizeof(buffer), 0, @@ -174,9 +166,9 @@ int main(void) continue; } printf("Accepted connection from %s\n", - human_addr((struct sockaddr *) - &cli_addr, sizeof(cli_addr), - buffer, sizeof(buffer))); + human_addr((struct sockaddr *)&cli_addr, + sizeof(cli_addr), buffer, + sizeof(buffer))); } else continue; @@ -214,10 +206,9 @@ int main(void) printf("- Handshake was completed\n"); for (;;) { - LOOP_CHECK(ret, - gnutls_record_recv_seq(session, buffer, - MAX_BUFFER, - sequence)); + LOOP_CHECK(ret, gnutls_record_recv_seq(session, buffer, + MAX_BUFFER, + sequence)); if (ret < 0 && gnutls_error_is_fatal(ret) == 0) { fprintf(stderr, "*** Warning: %s\n", @@ -235,11 +226,10 @@ int main(void) } buffer[ret] = 0; - printf - ("received[%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x]: %s\n", - sequence[0], sequence[1], sequence[2], - sequence[3], sequence[4], sequence[5], - sequence[6], sequence[7], buffer); + printf("received[%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x]: %s\n", + sequence[0], sequence[1], sequence[2], + sequence[3], sequence[4], sequence[5], + sequence[6], sequence[7], buffer); /* reply back */ LOOP_CHECK(ret, @@ -253,7 +243,6 @@ int main(void) LOOP_CHECK(ret, gnutls_bye(session, GNUTLS_SHUT_WR)); gnutls_deinit(session); - } close(listen_sd); @@ -263,7 +252,6 @@ int main(void) gnutls_global_deinit(); return 0; - } static int wait_for_connection(int fd) @@ -315,20 +303,19 @@ static int pull_timeout_func(gnutls_transport_ptr_t ptr, unsigned int ms) * from */ cli_addr_size = sizeof(cli_addr); - ret = - recvfrom(priv->fd, &c, 1, MSG_PEEK, - (struct sockaddr *)&cli_addr, &cli_addr_size); + ret = recvfrom(priv->fd, &c, 1, MSG_PEEK, (struct sockaddr *)&cli_addr, + &cli_addr_size); if (ret > 0) { - if (cli_addr_size == priv->cli_addr_size - && memcmp(&cli_addr, priv->cli_addr, sizeof(cli_addr)) == 0) + if (cli_addr_size == priv->cli_addr_size && + memcmp(&cli_addr, priv->cli_addr, sizeof(cli_addr)) == 0) return 1; } return 0; } -static ssize_t -push_func(gnutls_transport_ptr_t p, const void *data, size_t size) +static ssize_t push_func(gnutls_transport_ptr_t p, const void *data, + size_t size) { priv_data_st *priv = p; @@ -345,21 +332,18 @@ static ssize_t pull_func(gnutls_transport_ptr_t p, void *data, size_t size) int ret; cli_addr_size = sizeof(cli_addr); - ret = - recvfrom(priv->fd, data, size, 0, - (struct sockaddr *)&cli_addr, &cli_addr_size); + ret = recvfrom(priv->fd, data, size, 0, (struct sockaddr *)&cli_addr, + &cli_addr_size); if (ret == -1) return ret; - if (cli_addr_size == priv->cli_addr_size - && memcmp(&cli_addr, priv->cli_addr, sizeof(cli_addr)) == 0) + if (cli_addr_size == priv->cli_addr_size && + memcmp(&cli_addr, priv->cli_addr, sizeof(cli_addr)) == 0) return ret; - printf("Denied connection from %s\n", human_addr((struct sockaddr *) - &cli_addr, - sizeof(cli_addr), - buffer, - sizeof(buffer))); + printf("Denied connection from %s\n", + human_addr((struct sockaddr *)&cli_addr, sizeof(cli_addr), + buffer, sizeof(buffer))); gnutls_transport_set_errno(priv->session, EAGAIN); return -1; diff --git a/doc/examples/ex-serv-psk.c b/doc/examples/ex-serv-psk.c index 92cd2d44d2..5130de7c93 100644 --- a/doc/examples/ex-serv-psk.c +++ b/doc/examples/ex-serv-psk.c @@ -1,7 +1,7 @@ /* This example code is placed in the public domain. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -21,20 +21,24 @@ #define CRLFILE "crl.pem" #define LOOP_CHECK(rval, cmd) \ - do { \ - rval = cmd; \ - } while(rval == GNUTLS_E_AGAIN || rval == GNUTLS_E_INTERRUPTED) + do { \ + rval = cmd; \ + } while (rval == GNUTLS_E_AGAIN || rval == GNUTLS_E_INTERRUPTED) /* This is a sample TLS echo server, supporting X.509 and PSK authentication. */ -#define SOCKET_ERR(err,s) if(err==-1) {perror(s);return(1);} +#define SOCKET_ERR(err, s) \ + if (err == -1) { \ + perror(s); \ + return (1); \ + } #define MAX_BUF 1024 -#define PORT 5556 /* listen to 5556 port */ +#define PORT 5556 /* listen to 5556 port */ -static int -pskfunc(gnutls_session_t session, const char *username, gnutls_datum_t * key) +static int pskfunc(gnutls_session_t session, const char *username, + gnutls_datum_t *key) { printf("psk: username %s\n", username); key->data = gnutls_malloc(4); @@ -89,9 +93,8 @@ int main(void) * "NORMAL:+PSK:+ECDHE-PSK:+DHE-PSK", * NULL); */ - gnutls_priority_init2(&priority_cache, - "+ECDHE-PSK:+DHE-PSK:+PSK", - NULL, GNUTLS_PRIORITY_INIT_DEF_APPEND); + gnutls_priority_init2(&priority_cache, "+ECDHE-PSK:+DHE-PSK:+PSK", NULL, + GNUTLS_PRIORITY_INIT_DEF_APPEND); gnutls_certificate_set_known_dh_params(x509_cred, GNUTLS_SEC_PARAM_MEDIUM); @@ -104,7 +107,7 @@ int main(void) memset(&sa_serv, '\0', sizeof(sa_serv)); sa_serv.sin_family = AF_INET; sa_serv.sin_addr.s_addr = INADDR_ANY; - sa_serv.sin_port = htons(PORT); /* Server Port number */ + sa_serv.sin_port = htons(PORT); /* Server Port number */ setsockopt(listen_sd, SOL_SOCKET, SO_REUSEADDR, (void *)&optval, sizeof(int)); @@ -133,15 +136,15 @@ int main(void) printf("- connection from %s, port %d\n", inet_ntop(AF_INET, &sa_cli.sin_addr, topbuf, - sizeof(topbuf)), ntohs(sa_cli.sin_port)); + sizeof(topbuf)), + ntohs(sa_cli.sin_port)); gnutls_transport_set_int(session, sd); LOOP_CHECK(ret, gnutls_handshake(session)); if (ret < 0) { close(sd); gnutls_deinit(session); - fprintf(stderr, - "*** Handshake has failed (%s)\n\n", + fprintf(stderr, "*** Handshake has failed (%s)\n\n", gnutls_strerror(ret)); continue; } @@ -158,19 +161,18 @@ int main(void) /* print_info(session); */ for (;;) { - LOOP_CHECK(ret, - gnutls_record_recv(session, buffer, - MAX_BUF)); + LOOP_CHECK(ret, gnutls_record_recv(session, buffer, + MAX_BUF)); if (ret == 0) { - printf - ("\n- Peer has closed the GnuTLS connection\n"); + printf("\n- Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0 && gnutls_error_is_fatal(ret) == 0) { fprintf(stderr, "*** Warning: %s\n", gnutls_strerror(ret)); } else if (ret < 0) { - fprintf(stderr, "\n*** Received corrupted " + fprintf(stderr, + "\n*** Received corrupted " "data(%d). Closing the connection.\n\n", ret); break; @@ -187,7 +189,6 @@ int main(void) close(sd); gnutls_deinit(session); - } close(listen_sd); @@ -199,5 +200,4 @@ int main(void) gnutls_global_deinit(); return 0; - } diff --git a/doc/examples/ex-serv-srp.c b/doc/examples/ex-serv-srp.c index cdf5fe7ebc..eac21ad541 100644 --- a/doc/examples/ex-serv-srp.c +++ b/doc/examples/ex-serv-srp.c @@ -1,7 +1,7 @@ /* This example code is placed in the public domain. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -23,16 +23,20 @@ #define CAFILE "/etc/ssl/certs/ca-certificates.crt" #define LOOP_CHECK(rval, cmd) \ - do { \ - rval = cmd; \ - } while(rval == GNUTLS_E_AGAIN || rval == GNUTLS_E_INTERRUPTED) + do { \ + rval = cmd; \ + } while (rval == GNUTLS_E_AGAIN || rval == GNUTLS_E_INTERRUPTED) /* This is a sample TLS-SRP echo server. */ -#define SOCKET_ERR(err,s) if(err==-1) {perror(s);return(1);} +#define SOCKET_ERR(err, s) \ + if (err == -1) { \ + perror(s); \ + return (1); \ + } #define MAX_BUF 1024 -#define PORT 5556 /* listen to 5556 port */ +#define PORT 5556 /* listen to 5556 port */ int main(void) { @@ -80,7 +84,7 @@ int main(void) memset(&sa_serv, '\0', sizeof(sa_serv)); sa_serv.sin_family = AF_INET; sa_serv.sin_addr.s_addr = INADDR_ANY; - sa_serv.sin_port = htons(PORT); /* Server Port number */ + sa_serv.sin_port = htons(PORT); /* Server Port number */ setsockopt(listen_sd, SOL_SOCKET, SO_REUSEADDR, (void *)&optval, sizeof(int)); @@ -117,7 +121,8 @@ int main(void) printf("- connection from %s, port %d\n", inet_ntop(AF_INET, &sa_cli.sin_addr, topbuf, - sizeof(topbuf)), ntohs(sa_cli.sin_port)); + sizeof(topbuf)), + ntohs(sa_cli.sin_port)); gnutls_transport_set_int(session, sd); @@ -125,8 +130,7 @@ int main(void) if (ret < 0) { close(sd); gnutls_deinit(session); - fprintf(stderr, - "*** Handshake has failed (%s)\n\n", + fprintf(stderr, "*** Handshake has failed (%s)\n\n", gnutls_strerror(ret)); continue; } @@ -137,19 +141,18 @@ int main(void) /* print_info(session); */ for (;;) { - LOOP_CHECK(ret, - gnutls_record_recv(session, buffer, - MAX_BUF)); + LOOP_CHECK(ret, gnutls_record_recv(session, buffer, + MAX_BUF)); if (ret == 0) { - printf - ("\n- Peer has closed the GnuTLS connection\n"); + printf("\n- Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0 && gnutls_error_is_fatal(ret) == 0) { fprintf(stderr, "*** Warning: %s\n", gnutls_strerror(ret)); } else if (ret < 0) { - fprintf(stderr, "\n*** Received corrupted " + fprintf(stderr, + "\n*** Received corrupted " "data(%d). Closing the connection.\n\n", ret); break; @@ -165,7 +168,6 @@ int main(void) close(sd); gnutls_deinit(session); - } close(listen_sd); @@ -175,5 +177,4 @@ int main(void) gnutls_global_deinit(); return 0; - } diff --git a/doc/examples/ex-serv-x509.c b/doc/examples/ex-serv-x509.c index a42040abab..977aec004d 100644 --- a/doc/examples/ex-serv-x509.c +++ b/doc/examples/ex-serv-x509.c @@ -1,7 +1,7 @@ /* This example code is placed in the public domain. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -21,11 +21,11 @@ #define CAFILE "/etc/ssl/certs/ca-certificates.crt" #define CRLFILE "crl.pem" -#define CHECK(x) assert((x)>=0) +#define CHECK(x) assert((x) >= 0) #define LOOP_CHECK(rval, cmd) \ - do { \ - rval = cmd; \ - } while(rval == GNUTLS_E_AGAIN || rval == GNUTLS_E_INTERRUPTED) + do { \ + rval = cmd; \ + } while (rval == GNUTLS_E_AGAIN || rval == GNUTLS_E_INTERRUPTED) /* The OCSP status file contains up to date information about revocation * of the server's certificate. That can be periodically be updated @@ -40,7 +40,7 @@ */ #define MAX_BUF 1024 -#define PORT 5556 /* listen to 5556 port */ +#define PORT 5556 /* listen to 5556 port */ int main(void) { @@ -73,13 +73,11 @@ int main(void) * (the latter since 3.5.6). See the manual pages of the individual * functions for more information. */ - CHECK(gnutls_certificate_set_x509_key_file(x509_cred, CERTFILE, - KEYFILE, + CHECK(gnutls_certificate_set_x509_key_file(x509_cred, CERTFILE, KEYFILE, GNUTLS_X509_FMT_PEM)); - CHECK(gnutls_certificate_set_ocsp_status_request_file(x509_cred, - OCSP_STATUS_FILE, - 0)); + CHECK(gnutls_certificate_set_ocsp_status_request_file( + x509_cred, OCSP_STATUS_FILE, 0)); CHECK(gnutls_priority_init(&priority_cache, NULL, NULL)); @@ -105,7 +103,7 @@ int main(void) memset(&sa_serv, '\0', sizeof(sa_serv)); sa_serv.sin_family = AF_INET; sa_serv.sin_addr.s_addr = INADDR_ANY; - sa_serv.sin_port = htons(PORT); /* Server Port number */ + sa_serv.sin_port = htons(PORT); /* Server Port number */ setsockopt(listen_sd, SOL_SOCKET, SO_REUSEADDR, (void *)&optval, sizeof(int)); @@ -137,7 +135,8 @@ int main(void) printf("- connection from %s, port %d\n", inet_ntop(AF_INET, &sa_cli.sin_addr, topbuf, - sizeof(topbuf)), ntohs(sa_cli.sin_port)); + sizeof(topbuf)), + ntohs(sa_cli.sin_port)); gnutls_transport_set_int(session, sd); @@ -145,8 +144,7 @@ int main(void) if (ret < 0) { close(sd); gnutls_deinit(session); - fprintf(stderr, - "*** Handshake has failed (%s)\n\n", + fprintf(stderr, "*** Handshake has failed (%s)\n\n", gnutls_strerror(ret)); continue; } @@ -156,19 +154,18 @@ int main(void) /* print_info(session); */ for (;;) { - LOOP_CHECK(ret, - gnutls_record_recv(session, buffer, - MAX_BUF)); + LOOP_CHECK(ret, gnutls_record_recv(session, buffer, + MAX_BUF)); if (ret == 0) { - printf - ("\n- Peer has closed the GnuTLS connection\n"); + printf("\n- Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0 && gnutls_error_is_fatal(ret) == 0) { fprintf(stderr, "*** Warning: %s\n", gnutls_strerror(ret)); } else if (ret < 0) { - fprintf(stderr, "\n*** Received corrupted " + fprintf(stderr, + "\n*** Received corrupted " "data(%d). Closing the connection.\n\n", ret); break; @@ -185,7 +182,6 @@ int main(void) close(sd); gnutls_deinit(session); - } close(listen_sd); @@ -195,5 +191,4 @@ int main(void) gnutls_global_deinit(); return 0; - } diff --git a/doc/examples/ex-session-info.c b/doc/examples/ex-session-info.c index bd51c2c8da..225fd74569 100644 --- a/doc/examples/ex-session-info.c +++ b/doc/examples/ex-session-info.c @@ -1,7 +1,7 @@ /* This example code is placed in the public domain. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -62,7 +62,7 @@ int print_info(gnutls_session_t session) dhe = 1; break; - case GNUTLS_CRD_ANON: /* anonymous authentication */ + case GNUTLS_CRD_ANON: /* anonymous authentication */ printf("- Anonymous authentication.\n"); if (kx == GNUTLS_KX_ANON_ECDH) @@ -71,14 +71,14 @@ int print_info(gnutls_session_t session) dhe = 1; break; - case GNUTLS_CRD_CERTIFICATE: /* certificate authentication */ + case GNUTLS_CRD_CERTIFICATE: /* certificate authentication */ /* Check if we have been using ephemeral Diffie-Hellman. */ if (kx == GNUTLS_KX_DHE_RSA || kx == GNUTLS_KX_DHE_DSS) dhe = 1; - else if (kx == GNUTLS_KX_ECDHE_RSA - || kx == GNUTLS_KX_ECDHE_ECDSA) + else if (kx == GNUTLS_KX_ECDHE_RSA || + kx == GNUTLS_KX_ECDHE_ECDSA) ecdh = 1; /* if the certificate list is available, then @@ -88,7 +88,7 @@ int print_info(gnutls_session_t session) break; default: break; - } /* switch */ + } /* switch */ /* read the negotiated group - if any */ group = gnutls_group_get(session); @@ -97,8 +97,8 @@ int print_info(gnutls_session_t session) } else { if (ecdh != 0) printf("- Ephemeral ECDH using curve %s\n", - gnutls_ecc_curve_get_name(gnutls_ecc_curve_get - (session))); + gnutls_ecc_curve_get_name( + gnutls_ecc_curve_get(session))); else if (dhe != 0) printf("- Ephemeral DH using prime of %d bits\n", gnutls_dh_get_prime_bits(session)); diff --git a/doc/examples/ex-verify-ssh.c b/doc/examples/ex-verify-ssh.c index 66750545ca..e4d1212149 100644 --- a/doc/examples/ex-verify-ssh.c +++ b/doc/examples/ex-verify-ssh.c @@ -1,7 +1,7 @@ /* This example code is placed in the public domain. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -12,7 +12,7 @@ #include #include "examples.h" -#define CHECK(x) assert((x)>=0) +#define CHECK(x) assert((x) >= 0) /* This function will verify the peer's certificate, check * if the hostname matches. In addition it will perform an @@ -38,13 +38,13 @@ int _ssh_verify_certificate_callback(gnutls_session_t session) type = gnutls_certificate_type_get(session); - CHECK(gnutls_certificate_verification_status_print(status, - type, &out, 0)); + CHECK(gnutls_certificate_verification_status_print(status, type, &out, + 0)); printf("%s", out.data); gnutls_free(out.data); - if (status != 0) /* Certificate is not trusted */ + if (status != 0) /* Certificate is not trusted */ return GNUTLS_E_CERTIFICATE_ERROR; /* Do SSH verification */ @@ -55,8 +55,8 @@ int _ssh_verify_certificate_callback(gnutls_session_t session) } /* service may be obtained alternatively using getservbyport() */ - ret = gnutls_verify_stored_pubkey(NULL, NULL, hostname, "https", - type, &cert_list[0], 0); + ret = gnutls_verify_stored_pubkey(NULL, NULL, hostname, "https", type, + &cert_list[0], 0); if (ret == GNUTLS_E_NO_CERTIFICATE_FOUND) { printf("Host %s is not known.", hostname); if (status == 0) @@ -68,11 +68,9 @@ int _ssh_verify_certificate_callback(gnutls_session_t session) /* if not trusted */ return GNUTLS_E_CERTIFICATE_ERROR; } else if (ret == GNUTLS_E_CERTIFICATE_KEY_MISMATCH) { - printf - ("Warning: host %s is known but has another key associated.", - hostname); - printf - ("It might be that the server has multiple keys, or you are under attack\n"); + printf("Warning: host %s is known but has another key associated.", + hostname); + printf("It might be that the server has multiple keys, or you are under attack\n"); if (status == 0) printf("Its certificate is valid for %s.\n", hostname); @@ -89,8 +87,8 @@ int _ssh_verify_certificate_callback(gnutls_session_t session) /* user trusts the key -> store it */ if (ret != 0) { - CHECK(gnutls_store_pubkey(NULL, NULL, hostname, "https", - type, &cert_list[0], 0, 0)); + CHECK(gnutls_store_pubkey(NULL, NULL, hostname, "https", type, + &cert_list[0], 0, 0)); } /* notify gnutls to continue handshake normally */ diff --git a/doc/examples/ex-verify.c b/doc/examples/ex-verify.c index b37bd115d4..c2946424a1 100644 --- a/doc/examples/ex-verify.c +++ b/doc/examples/ex-verify.c @@ -1,7 +1,7 @@ /* This example code is placed in the public domain. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -13,7 +13,7 @@ #include "examples.h" -#define CHECK(x) assert((x)>=0) +#define CHECK(x) assert((x) >= 0) /* All the available CRLs */ @@ -25,18 +25,16 @@ int crl_list_size; gnutls_x509_crt_t *ca_list; int ca_list_size; -static int print_details_func(gnutls_x509_crt_t cert, - gnutls_x509_crt_t issuer, +static int print_details_func(gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer, gnutls_x509_crl_t crl, unsigned int verification_output); /* This function will try to verify the peer's certificate chain, and * also check if the hostname matches. */ -void -verify_certificate_chain(const char *hostname, - const gnutls_datum_t * cert_chain, - int cert_chain_length) +void verify_certificate_chain(const char *hostname, + const gnutls_datum_t *cert_chain, + int cert_chain_length) { int i; gnutls_x509_trust_list_t tlist; @@ -66,27 +64,22 @@ verify_certificate_chain(const char *hostname, GNUTLS_X509_FMT_DER)); } - CHECK(gnutls_x509_trust_list_verify_named_crt(tlist, cert[0], - hostname, - strlen(hostname), - GNUTLS_VERIFY_DISABLE_CRL_CHECKS, - &output, - print_details_func)); + CHECK(gnutls_x509_trust_list_verify_named_crt( + tlist, cert[0], hostname, strlen(hostname), + GNUTLS_VERIFY_DISABLE_CRL_CHECKS, &output, print_details_func)); /* if this certificate is not explicitly trusted verify against CAs */ if (output != 0) { - CHECK(gnutls_x509_trust_list_verify_crt(tlist, cert, - cert_chain_length, 0, - &output, - print_details_func)); + CHECK(gnutls_x509_trust_list_verify_crt( + tlist, cert, cert_chain_length, 0, &output, + print_details_func)); } if (output & GNUTLS_CERT_INVALID) { fprintf(stderr, "Not trusted\n"); - CHECK(gnutls_certificate_verification_status_print(output, - GNUTLS_CRT_X509, - &txt, 0)); + CHECK(gnutls_certificate_verification_status_print( + output, GNUTLS_CRT_X509, &txt, 0)); fprintf(stderr, "Error: %s\n", txt.data); gnutls_free(txt.data); @@ -96,9 +89,8 @@ verify_certificate_chain(const char *hostname, /* Check if the name in the first certificate matches our destination! */ if (!gnutls_x509_crt_check_hostname(cert[0], hostname)) { - printf - ("The certificate's owner does not match hostname '%s'\n", - hostname); + printf("The certificate's owner does not match hostname '%s'\n", + hostname); } for (i = 0; i < cert_chain_length; i++) { @@ -111,10 +103,9 @@ verify_certificate_chain(const char *hostname, return; } -static int -print_details_func(gnutls_x509_crt_t cert, - gnutls_x509_crt_t issuer, gnutls_x509_crl_t crl, - unsigned int verification_output) +static int print_details_func(gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer, + gnutls_x509_crl_t crl, + unsigned int verification_output) { char name[512]; char issuer_name[512]; diff --git a/doc/examples/ex-x509-info.c b/doc/examples/ex-x509-info.c index f312a38ba8..3a75ca7d13 100644 --- a/doc/examples/ex-x509-info.c +++ b/doc/examples/ex-x509-info.c @@ -1,7 +1,7 @@ /* This example code is placed in the public domain. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -69,9 +69,8 @@ void print_x509_certificate_info(gnutls_session_t session) /* This is the preferred way of printing short information about a certificate. */ - ret = - gnutls_x509_crt_print(cert, GNUTLS_CRT_PRINT_ONELINE, - &cinfo); + ret = gnutls_x509_crt_print(cert, GNUTLS_CRT_PRINT_ONELINE, + &cinfo); if (ret == 0) { printf("\t%s\n", cinfo.data); gnutls_free(cinfo.data); @@ -117,6 +116,5 @@ void print_x509_certificate_info(gnutls_session_t session) printf("\tIssuer's DN: %s\n", dn); gnutls_x509_crt_deinit(cert); - } } diff --git a/doc/examples/examples.h b/doc/examples/examples.h index 910cc0b0ad..28452b7675 100644 --- a/doc/examples/examples.h +++ b/doc/examples/examples.h @@ -1,10 +1,10 @@ #ifndef EXAMPLES_H -# define EXAMPLES_H +#define EXAMPLES_H void check_alert(gnutls_session_t session, int ret); -int write_pkcs12(const gnutls_datum_t * cert, - const gnutls_datum_t * pkcs8_key, const char *password); +int write_pkcs12(const gnutls_datum_t *cert, const gnutls_datum_t *pkcs8_key, + const char *password); void verify_certificate(gnutls_session_t session, const char *hostname); @@ -14,11 +14,10 @@ void print_x509_certificate_info(gnutls_session_t session); int _ssh_verify_certificate_callback(gnutls_session_t session); -void -verify_certificate_chain(const char *hostname, - const gnutls_datum_t * cert_chain, - int cert_chain_length); +void verify_certificate_chain(const char *hostname, + const gnutls_datum_t *cert_chain, + int cert_chain_length); int verify_certificate_callback(gnutls_session_t session); -#endif /* EXAMPLES_H */ +#endif /* EXAMPLES_H */ diff --git a/doc/examples/print-ciphersuites.c b/doc/examples/print-ciphersuites.c index ab26088786..67d52649f8 100644 --- a/doc/examples/print-ciphersuites.c +++ b/doc/examples/print-ciphersuites.c @@ -27,21 +27,19 @@ static void print_cipher_suite_list(const char *priorities) } for (i = 0;; i++) { - ret = - gnutls_priority_get_cipher_suite_index(pcache, - i, &idx); + ret = gnutls_priority_get_cipher_suite_index(pcache, i, + &idx); if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) break; if (ret == GNUTLS_E_UNKNOWN_CIPHER_SUITE) continue; - name = - gnutls_cipher_suite_info(idx, id, NULL, NULL, - NULL, &version); + name = gnutls_cipher_suite_info(idx, id, NULL, NULL, + NULL, &version); if (name != NULL) - printf("%-50s\t0x%02x, 0x%02x\t%s\n", - name, (unsigned char)id[0], + printf("%-50s\t0x%02x, 0x%02x\t%s\n", name, + (unsigned char)id[0], (unsigned char)id[1], gnutls_protocol_get_name(version)); } diff --git a/doc/examples/tcp.c b/doc/examples/tcp.c index 283f12342d..22ebe320df 100644 --- a/doc/examples/tcp.c +++ b/doc/examples/tcp.c @@ -1,7 +1,7 @@ /* This example code is placed in the public domain. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -49,6 +49,6 @@ extern int tcp_connect(void) */ extern void tcp_close(int sd) { - shutdown(sd, SHUT_RDWR); /* no more receptions */ + shutdown(sd, SHUT_RDWR); /* no more receptions */ close(sd); } diff --git a/doc/examples/tlsproxy/buffer.c b/doc/examples/tlsproxy/buffer.c index e983495f80..b4d34a8d67 100644 --- a/doc/examples/tlsproxy/buffer.c +++ b/doc/examples/tlsproxy/buffer.c @@ -88,7 +88,7 @@ buffer_t *bufNew(ssize_t size, ssize_t hwm) return b; } -void bufFree(buffer_t * b) +void bufFree(buffer_t *b) { free(b->buf); free(b); @@ -97,7 +97,7 @@ void bufFree(buffer_t * b) /* get a maximal span to read. Returns 0 if buffer * is empty */ -ssize_t bufGetReadSpan(buffer_t * b, void **addr) +ssize_t bufGetReadSpan(buffer_t *b, void **addr) { if (b->empty) { *addr = NULL; @@ -112,7 +112,7 @@ ssize_t bufGetReadSpan(buffer_t * b, void **addr) /* get a maximal span to write. Returns 0 id buffer is full */ -ssize_t bufGetWriteSpan(buffer_t * b, void **addr) +ssize_t bufGetWriteSpan(buffer_t *b, void **addr) { if (b->empty) { *addr = b->buf; @@ -132,7 +132,7 @@ ssize_t bufGetWriteSpan(buffer_t * b, void **addr) } /* mark size bytes as read */ -void bufDoneRead(buffer_t * b, ssize_t size) +void bufDoneRead(buffer_t *b, ssize_t size) { while (!b->empty && (size > 0)) { /* empty can't occur here, so equal pointers means full */ @@ -159,7 +159,7 @@ void bufDoneRead(buffer_t * b, ssize_t size) } /* mark size bytes as written */ -void bufDoneWrite(buffer_t * b, ssize_t size) +void bufDoneWrite(buffer_t *b, ssize_t size) { while ((b->empty || (b->ridx != b->widx)) && (size > 0)) { /* full can't occur here, so equal pointers means empty */ @@ -182,27 +182,27 @@ void bufDoneWrite(buffer_t * b, ssize_t size) } } -int bufIsEmpty(buffer_t * b) +int bufIsEmpty(buffer_t *b) { return b->empty; } -int bufIsFull(buffer_t * b) +int bufIsFull(buffer_t *b) { return !b->empty && (b->ridx == b->widx); } -int bufIsOverHWM(buffer_t * b) +int bufIsOverHWM(buffer_t *b) { return bufGetCount(b) > b->hwm; } -ssize_t bufGetFree(buffer_t * b) +ssize_t bufGetFree(buffer_t *b) { return b->size - bufGetCount(b); } -ssize_t bufGetCount(buffer_t * b) +ssize_t bufGetCount(buffer_t *b) { if (b->empty) return 0; diff --git a/doc/examples/tlsproxy/buffer.h b/doc/examples/tlsproxy/buffer.h index 6d8a205a56..28b08e4632 100644 --- a/doc/examples/tlsproxy/buffer.h +++ b/doc/examples/tlsproxy/buffer.h @@ -23,23 +23,23 @@ OTHER DEALINGS IN THE SOFTWARE. */ #ifndef __TLSPROXY_BUFFERS_H -# define __TLSPROXY_BUFFERS_H +#define __TLSPROXY_BUFFERS_H -# include -# include +#include +#include typedef struct buffer buffer_t; buffer_t *bufNew(ssize_t size, ssize_t hwm); -void bufFree(buffer_t * b); -ssize_t bufGetReadSpan(buffer_t * b, void **addr); -ssize_t bufGetWriteSpan(buffer_t * b, void **addr); -void bufDoneRead(buffer_t * b, ssize_t size); -void bufDoneWrite(buffer_t * b, ssize_t size); -int bufIsEmpty(buffer_t * b); -int bufIsFull(buffer_t * b); -int bufIsOverHWM(buffer_t * b); -ssize_t bufGetFree(buffer_t * b); -ssize_t bufGetCount(buffer_t * b); +void bufFree(buffer_t *b); +ssize_t bufGetReadSpan(buffer_t *b, void **addr); +ssize_t bufGetWriteSpan(buffer_t *b, void **addr); +void bufDoneRead(buffer_t *b, ssize_t size); +void bufDoneWrite(buffer_t *b, ssize_t size); +int bufIsEmpty(buffer_t *b); +int bufIsFull(buffer_t *b); +int bufIsOverHWM(buffer_t *b); +ssize_t bufGetFree(buffer_t *b); +ssize_t bufGetCount(buffer_t *b); #endif diff --git a/doc/examples/tlsproxy/crypto-gnutls.c b/doc/examples/tlsproxy/crypto-gnutls.c index a9da58912b..b0495f99b9 100644 --- a/doc/examples/tlsproxy/crypto-gnutls.c +++ b/doc/examples/tlsproxy/crypto-gnutls.c @@ -60,20 +60,20 @@ struct tlssession { }; #define BUF_SIZE 65536 -#define BUF_HWM ((BUF_SIZE*3)/4) +#define BUF_HWM ((BUF_SIZE * 3) / 4) static int falsequit(void *opaque) { return FALSE; } -static int quit(tlssession_t * s) +static int quit(tlssession_t *s) { return s->quitfn(s->opaque); } #if defined __clang__ || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) -# pragma GCC diagnostic ignored "-Wsuggest-attribute=format" +#pragma GCC diagnostic ignored "-Wsuggest-attribute=format" #endif static int stderrout(void *opaque, const char *format, va_list ap) @@ -81,7 +81,7 @@ static int stderrout(void *opaque, const char *format, va_list ap) return vfprintf(stderr, format, ap); } -static int errout(tlssession_t * s, const char *format, ...) +static int errout(tlssession_t *s, const char *format, ...) { va_list ap; int ret; @@ -91,7 +91,7 @@ static int errout(tlssession_t * s, const char *format, ...) return ret; } -static int debugout(tlssession_t * s, const char *format, ...) +static int debugout(tlssession_t *s, const char *format, ...) { va_list ap; int ret = 0; @@ -122,7 +122,7 @@ static int verify_certificate_callback(gnutls_session_t session) tlssession_t *s; /* read session pointer */ - s = (tlssession_t *) gnutls_session_get_ptr(session); + s = (tlssession_t *)gnutls_session_get_ptr(session); if (gnutls_certificate_type_get(session) != GNUTLS_CRT_X509) return GNUTLS_E_CERTIFICATE_ERROR; @@ -131,9 +131,8 @@ static int verify_certificate_callback(gnutls_session_t session) * structure. So you must have installed one or more CA certificates. */ if (s->hostname && *s->hostname) - ret = - gnutls_certificate_verify_peers3(session, s->hostname, - &status); + ret = gnutls_certificate_verify_peers3(session, s->hostname, + &status); else ret = gnutls_certificate_verify_peers2(session, &status); @@ -145,10 +144,8 @@ static int verify_certificate_callback(gnutls_session_t session) if (status) { gnutls_datum_t txt; - ret = - gnutls_certificate_verification_status_print(status, - GNUTLS_CRT_X509, - &txt, 0); + ret = gnutls_certificate_verification_status_print( + status, GNUTLS_CRT_X509, &txt, 0); if (ret >= 0) { debugout(s, "verification error: %s\n", txt.data); gnutls_free(txt.data); @@ -163,12 +160,12 @@ static int verify_certificate_callback(gnutls_session_t session) return 0; } -tlssession_t *tlssession_new(int isserver, - char *keyfile, char *certfile, char *cacertfile, - char *hostname, int insecure, int debug, - int (*quitfn)(void *opaque), +tlssession_t *tlssession_new(int isserver, char *keyfile, char *certfile, + char *cacertfile, char *hostname, int insecure, + int debug, int (*quitfn)(void *opaque), int (*erroutfn)(void *opaque, const char *format, - va_list ap), void *opaque) + va_list ap), + void *opaque) { int ret; tlssession_t *s = calloc(1, sizeof(tlssession_t)); @@ -196,9 +193,8 @@ tlssession_t *tlssession_new(int isserver, } if (cacertfile != NULL) { - ret = - gnutls_certificate_set_x509_trust_file(s->creds, cacertfile, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_file( + s->creds, cacertfile, GNUTLS_X509_FMT_PEM); if (ret < 0) { errout(s, "Error setting the x509 trust file: %s\n", gnutls_strerror(ret)); @@ -206,10 +202,10 @@ tlssession_t *tlssession_new(int isserver, } if (!insecure) { - gnutls_certificate_set_verify_function(s->creds, - verify_certificate_callback); - gnutls_certificate_set_verify_flags(s->creds, - GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT); + gnutls_certificate_set_verify_function( + s->creds, verify_certificate_callback); + gnutls_certificate_set_verify_flags( + s->creds, GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT); } } @@ -217,10 +213,8 @@ tlssession_t *tlssession_new(int isserver, certfile = keyfile; if (certfile != NULL && keyfile != NULL) { - ret = - gnutls_certificate_set_x509_key_file(s->creds, certfile, - keyfile, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_file( + s->creds, certfile, keyfile, GNUTLS_X509_FMT_PEM); if (ret < 0) { errout(s, @@ -244,9 +238,8 @@ tlssession_t *tlssession_new(int isserver, gnutls_session_set_ptr(s->session, (void *)s); if (!isserver && s->hostname && *s->hostname) { - ret = - gnutls_server_name_set(s->session, GNUTLS_NAME_DNS, - s->hostname, strlen(s->hostname)); + ret = gnutls_server_name_set(s->session, GNUTLS_NAME_DNS, + s->hostname, strlen(s->hostname)); if (ret < 0) { errout(s, "Cannot set server name: %s\n", gnutls_strerror(ret)); @@ -261,9 +254,8 @@ tlssession_t *tlssession_new(int isserver, goto error; } - ret = - gnutls_credentials_set(s->session, GNUTLS_CRD_CERTIFICATE, - s->creds); + ret = gnutls_credentials_set(s->session, GNUTLS_CRD_CERTIFICATE, + s->creds); if (ret < 0) { errout(s, "Cannot set session GNUTL credentials: %s\n", gnutls_strerror(ret)); @@ -278,14 +270,14 @@ tlssession_t *tlssession_new(int isserver, return s; - error: +error: if (s->session) gnutls_deinit(s->session); free(s); return NULL; } -void tlssession_close(tlssession_t * s) +void tlssession_close(tlssession_t *s) { if (s->session) gnutls_deinit(s->session); @@ -298,7 +290,7 @@ int tlssession_init(void) return gnutls_global_init(); } -int tlssession_mainloop(int cryptfd, int plainfd, tlssession_t * s) +int tlssession_mainloop(int cryptfd, int plainfd, tlssession_t *s) { fd_set readfds; fd_set writefds; @@ -318,7 +310,7 @@ int tlssession_mainloop(int cryptfd, int plainfd, tlssession_t * s) /* set it up to work with our FD */ gnutls_transport_set_ptr(s->session, - (gnutls_transport_ptr_t) (intptr_t) cryptfd); + (gnutls_transport_ptr_t)(intptr_t)cryptfd); /* Now do the handshake */ ret = gnutls_handshake(s->session); @@ -350,7 +342,7 @@ int tlssession_mainloop(int cryptfd, int plainfd, tlssession_t * s) size_t buffered = gnutls_record_check_pending(s->session); if (buffered) - wait = FALSE; /* do not wait for select to return if we have buffered data */ + wait = FALSE; /* do not wait for select to return if we have buffered data */ if (plainEOF) { /* plain text end has closed, but me may still have @@ -384,12 +376,11 @@ int tlssession_mainloop(int cryptfd, int plainfd, tlssession_t * s) do { timeout.tv_sec = wait ? 1 : 0; timeout.tv_usec = 0; - result = - select(maxfd, &readfds, &writefds, NULL, &timeout); + result = select(maxfd, &readfds, &writefds, NULL, + &timeout); selecterrno = errno; - } - while ((result == -1) && (selecterrno == EINTR) && !quit(s)); + } while ((result == -1) && (selecterrno == EINTR) && !quit(s)); if (quit(s)) break; @@ -404,9 +395,8 @@ int tlssession_mainloop(int cryptfd, int plainfd, tlssession_t * s) if (len > 0) { do { ret = read(plainfd, addr, (size_t)len); - } - while ((ret < 0) && (errno == EINTR) - && !quit(s)); + } while ((ret < 0) && (errno == EINTR) && + !quit(s)); if (quit(s)) break; if (ret < 0) { @@ -417,7 +407,9 @@ int tlssession_mainloop(int cryptfd, int plainfd, tlssession_t * s) if (ret == 0) { plainEOF = TRUE; } else { - bufDoneWrite(plainToCrypt, ret); /* mark ret bytes as written to the buffer */ + bufDoneWrite( + plainToCrypt, + ret); /* mark ret bytes as written to the buffer */ } } } @@ -433,9 +425,8 @@ int tlssession_mainloop(int cryptfd, int plainfd, tlssession_t * s) if (len > 0) { do { ret = write(plainfd, addr, (size_t)len); - } - while ((ret < 0) && (errno == EINTR) - && !quit(s)); + } while ((ret < 0) && (errno == EINTR) && + !quit(s)); if (quit(s)) break; if (ret < 0) { @@ -443,7 +434,9 @@ int tlssession_mainloop(int cryptfd, int plainfd, tlssession_t * s) "Error on write to plain socket: %m\n"); goto error; } - bufDoneRead(cryptToPlain, ret); /* mark ret bytes as read from the buffer */ + bufDoneRead( + cryptToPlain, + ret); /* mark ret bytes as read from the buffer */ } } @@ -457,11 +450,10 @@ int tlssession_mainloop(int cryptfd, int plainfd, tlssession_t * s) ssize_t len = bufGetWriteSpan(cryptToPlain, &addr); if (len > 0) { do { - ret = - gnutls_record_recv(s->session, addr, - (size_t)len); - } - while (ret == GNUTLS_E_INTERRUPTED && !quit(s)); + ret = gnutls_record_recv( + s->session, addr, (size_t)len); + } while (ret == GNUTLS_E_INTERRUPTED && + !quit(s)); /* do not loop on GNUTLS_E_AGAIN - this means we'd block so we'd loop for * ever */ @@ -476,7 +468,9 @@ int tlssession_mainloop(int cryptfd, int plainfd, tlssession_t * s) if (ret == 0) { cryptEOF = TRUE; } else { - bufDoneWrite(cryptToPlain, ret); /* mark ret bytes as written to the buffer */ + bufDoneWrite( + cryptToPlain, + ret); /* mark ret bytes as written to the buffer */ } } } @@ -492,16 +486,14 @@ int tlssession_mainloop(int cryptfd, int plainfd, tlssession_t * s) if (len > 0) { do { if (tls_wr_interrupted) { - ret = - gnutls_record_send - (s->session, NULL, 0); + ret = gnutls_record_send( + s->session, NULL, 0); } else { - ret = - gnutls_record_send - (s->session, addr, len); + ret = gnutls_record_send( + s->session, addr, len); } - } - while (ret == GNUTLS_E_INTERRUPTED && !quit(s)); + } while (ret == GNUTLS_E_INTERRUPTED && + !quit(s)); if (quit(s)) break; if (ret == GNUTLS_E_AGAIN) { @@ -515,7 +507,9 @@ int tlssession_mainloop(int cryptfd, int plainfd, tlssession_t * s) gnutls_strerror(ret)); goto error; } else { - bufDoneRead(plainToCrypt, ret); /* mark ret bytes as read from the buffer */ + bufDoneRead( + plainToCrypt, + ret); /* mark ret bytes as read from the buffer */ } } } @@ -524,10 +518,10 @@ int tlssession_mainloop(int cryptfd, int plainfd, tlssession_t * s) ret = 0; goto freereturn; - error: +error: ret = -1; - freereturn: +freereturn: gnutls_bye(s->session, GNUTLS_SHUT_RDWR); shutdown(plainfd, SHUT_RDWR); bufFree(plainToCrypt); diff --git a/doc/examples/tlsproxy/crypto-gnutls.h b/doc/examples/tlsproxy/crypto-gnutls.h index be04e665d2..b315c9a274 100644 --- a/doc/examples/tlsproxy/crypto-gnutls.h +++ b/doc/examples/tlsproxy/crypto-gnutls.h @@ -25,19 +25,18 @@ OTHER DEALINGS IN THE SOFTWARE. */ #ifndef __TLSPROXY_CRYPTO_GNUTLS_H -# define __TLSPROXY_CRYPTO_GNUTLS_H +#define __TLSPROXY_CRYPTO_GNUTLS_H int tlssession_init(void); typedef struct tlssession tlssession_t; -tlssession_t *tlssession_new(int isserver, - char *keyfile, char *certfile, char *cacertfile, - char *hostname, int insecure, int debug, - int (*quitfn)(void *opaque), - int (*erroutfn)(void *opaque, - const char *format, - va_list ap), void *opaque); -void tlssession_close(tlssession_t * s); -int tlssession_mainloop(int cryptfd, int plainfd, tlssession_t * session); +tlssession_t *tlssession_new(int isserver, char *keyfile, char *certfile, + char *cacertfile, char *hostname, int insecure, + int debug, int (*quitfn)(void *opaque), + int (*erroutfn)(void *opaque, const char *format, + va_list ap), + void *opaque); +void tlssession_close(tlssession_t *s); +int tlssession_mainloop(int cryptfd, int plainfd, tlssession_t *session); #endif diff --git a/doc/examples/tlsproxy/tlsproxy.c b/doc/examples/tlsproxy/tlsproxy.c index f9ce373fdc..dc5bea2aee 100644 --- a/doc/examples/tlsproxy/tlsproxy.c +++ b/doc/examples/tlsproxy/tlsproxy.c @@ -64,10 +64,10 @@ static int bindtoaddress(char *addrport) snprintf(addr, sizeof(addr), "%s", addrport); memset(&hints, 0, sizeof(struct addrinfo)); - hints.ai_flags = AI_PASSIVE; /* For wildcard IP address */ - hints.ai_family = AF_UNSPEC; /* Allow IPv4 or IPv6 */ - hints.ai_socktype = SOCK_STREAM; /* Stream socket */ - hints.ai_protocol = 0; /* any protocol */ + hints.ai_flags = AI_PASSIVE; /* For wildcard IP address */ + hints.ai_family = AF_UNSPEC; /* Allow IPv4 or IPv6 */ + hints.ai_socktype = SOCK_STREAM; /* Stream socket */ + hints.ai_protocol = 0; /* any protocol */ char *colon = strrchr(addr, ':'); const char *port = defaultport; @@ -90,9 +90,8 @@ static int bindtoaddress(char *addrport) if (fd >= 0) { int one = 1; - if (setsockopt - (fd, SOL_SOCKET, SO_REUSEADDR, &one, - sizeof(one)) < 0) { + if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &one, + sizeof(one)) < 0) { close(fd); continue; } @@ -108,7 +107,7 @@ static int bindtoaddress(char *addrport) return -1; } - freeaddrinfo(result); /* No longer needed */ + freeaddrinfo(result); /* No longer needed */ if (listen(fd, 5) < 0) { close(fd); @@ -128,10 +127,10 @@ static int connecttoaddress(char *addrport) snprintf(addr, sizeof(addr), "%s", addrport); memset(&hints, 0, sizeof(struct addrinfo)); - hints.ai_flags = AI_PASSIVE; /* For wildcard IP address */ - hints.ai_family = AF_UNSPEC; /* Allow IPv4 or IPv6 */ - hints.ai_socktype = SOCK_STREAM; /* Stream socket */ - hints.ai_protocol = 0; /* any protocol */ + hints.ai_flags = AI_PASSIVE; /* For wildcard IP address */ + hints.ai_family = AF_UNSPEC; /* Allow IPv4 or IPv6 */ + hints.ai_socktype = SOCK_STREAM; /* Stream socket */ + hints.ai_protocol = 0; /* any protocol */ char *colon = strrchr(addr, ':'); const char *port = defaultport; @@ -166,7 +165,7 @@ static int connecttoaddress(char *addrport) return -1; } - freeaddrinfo(result); /* No longer needed */ + freeaddrinfo(result); /* No longer needed */ return fd; } @@ -185,10 +184,9 @@ static int runproxy(int acceptfd) return -1; } - tlssession_t *session = - tlssession_new(server, keyfile, certfile, cacertfile, hostname, - insecure, - debug, quitfn, NULL, NULL); + tlssession_t *session = tlssession_new(server, keyfile, certfile, + cacertfile, hostname, insecure, + debug, quitfn, NULL, NULL); if (!session) { fprintf(stderr, "Could create TLS session\n"); close(connectfd); @@ -235,8 +233,7 @@ static int runlistener(void) return -1; } } - } - while (fd < 0 && !rxsigquit); + } while (fd < 0 && !rxsigquit); if (rxsigquit) break; if (nofork < 2) { @@ -287,18 +284,18 @@ static void processoptions(int argc, char **argv) { while (1) { static const struct option longopts[] = { - {"connect", required_argument, 0, 'c'}, - {"listen", required_argument, 0, 'l'}, - {"key", required_argument, 0, 'K'}, - {"cert", required_argument, 0, 'C'}, - {"cacert", required_argument, 0, 'A'}, - {"hostname", required_argument, 0, 'H'}, - {"server", no_argument, 0, 's'}, - {"insecure", no_argument, 0, 'i'}, - {"nofork", no_argument, 0, 'n'}, - {"debug", no_argument, 0, 'd'}, - {"help", no_argument, 0, 'h'}, - {0, 0, 0, 0} + { "connect", required_argument, 0, 'c' }, + { "listen", required_argument, 0, 'l' }, + { "key", required_argument, 0, 'K' }, + { "cert", required_argument, 0, 'C' }, + { "cacert", required_argument, 0, 'A' }, + { "hostname", required_argument, 0, 'H' }, + { "server", no_argument, 0, 's' }, + { "insecure", no_argument, 0, 'i' }, + { "nofork", no_argument, 0, 'n' }, + { "debug", no_argument, 0, 'd' }, + { "help", no_argument, 0, 'h' }, + { 0, 0, 0, 0 } }; int optidx = 0; @@ -309,7 +306,7 @@ static void processoptions(int argc, char **argv) break; switch (c) { - case 0: /* set a flag, nothing else to do */ + case 0: /* set a flag, nothing else to do */ break; case 'c': diff --git a/doc/examples/udp.c b/doc/examples/udp.c index beded4d0d1..09181afa0f 100644 --- a/doc/examples/udp.c +++ b/doc/examples/udp.c @@ -1,7 +1,7 @@ /* This example code is placed in the public domain. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -41,12 +41,12 @@ extern int udp_connect(void) #if defined(IP_DONTFRAG) optval = 1; - setsockopt(sd, IPPROTO_IP, IP_DONTFRAG, - (const void *)&optval, sizeof(optval)); + setsockopt(sd, IPPROTO_IP, IP_DONTFRAG, (const void *)&optval, + sizeof(optval)); #elif defined(IP_MTU_DISCOVER) optval = IP_PMTUDISC_DO; - setsockopt(sd, IPPROTO_IP, IP_MTU_DISCOVER, - (const void *)&optval, sizeof(optval)); + setsockopt(sd, IPPROTO_IP, IP_MTU_DISCOVER, (const void *)&optval, + sizeof(optval)); #endif err = connect(sd, (struct sockaddr *)&sa, sizeof(sa)); diff --git a/doc/examples/verify.c b/doc/examples/verify.c index 62e6cfd462..fb6475cca6 100644 --- a/doc/examples/verify.c +++ b/doc/examples/verify.c @@ -1,5 +1,5 @@ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -43,8 +43,8 @@ int verify_certificate_callback(gnutls_session_t session) type = gnutls_certificate_type_get(session); - ret = - gnutls_certificate_verification_status_print(status, type, &out, 0); + ret = gnutls_certificate_verification_status_print(status, type, &out, + 0); if (ret < 0) { printf("Error\n"); return GNUTLS_E_CERTIFICATE_ERROR; @@ -54,7 +54,7 @@ int verify_certificate_callback(gnutls_session_t session) gnutls_free(out.data); - if (status != 0) /* Certificate is not trusted */ + if (status != 0) /* Certificate is not trusted */ return GNUTLS_E_CERTIFICATE_ERROR; /* notify gnutls to continue handshake normally */ diff --git a/doc/printlist.c b/doc/printlist.c index fac3a2d795..8099033f26 100644 --- a/doc/printlist.c +++ b/doc/printlist.c @@ -56,24 +56,20 @@ static void main_texinfo(void) printf("@heading Ciphersuites\n"); printf("@multitable @columnfractions .60 .20 .20\n"); printf("@headitem Ciphersuite name @tab TLS ID @tab Since\n"); - for (i = 0; - (name = - gnutls_cipher_suite_info(i, id, &kx, &cipher, &mac, - &version)); i++) { + for (i = 0; (name = gnutls_cipher_suite_info( + i, id, &kx, &cipher, &mac, &version)); + i++) { printf("@item %s\n@tab 0x%02X 0x%02X\n@tab %s\n", - escape_texi_string(name, buffer, - sizeof(buffer)), - (unsigned char)id[0], - (unsigned char)id[1], + escape_texi_string(name, buffer, sizeof(buffer)), + (unsigned char)id[0], (unsigned char)id[1], gnutls_protocol_get_name(version)); } printf("@end multitable\n"); - } { const gnutls_certificate_type_t *p = - gnutls_certificate_type_list(); + gnutls_certificate_type_list(); printf("\n\n@heading Certificate types\n"); printf("@table @code\n"); @@ -137,8 +133,7 @@ static void main_texinfo(void) { const gnutls_sign_algorithm_t *p = gnutls_sign_list(); - printf - ("\n@heading Public key signature algorithms\n@table @code\n"); + printf("\n@heading Public key signature algorithms\n@table @code\n"); for (; *p; p++) { printf("@item %s\n", gnutls_sign_get_name(*p)); } @@ -157,7 +152,9 @@ static void main_texinfo(void) } static const char headers[] = "\\tablefirsthead{%\n" - "\\hline\n" "Ciphersuite name & TLS ID & Since\\\\\n" "\\hline}\n" + "\\hline\n" + "Ciphersuite name & TLS ID & Since\\\\\n" + "\\hline}\n" #if 0 "\\tablehead{%\n" "\\hline\n" @@ -168,7 +165,8 @@ static const char headers[] = "\\tablefirsthead{%\n" "\\multicolumn{3}{|r|}{\\small\\sl continued on next page}\\\\\n" "\\hline}\n" #endif - "\\tablelasttail{\\hline}\n" "\\bottomcaption{The ciphersuites table}\n\n"; + "\\tablelasttail{\\hline}\n" + "\\bottomcaption{The ciphersuites table}\n\n"; static void main_latex(void) { @@ -178,8 +176,7 @@ static void main_latex(void) puts(headers); - printf - ("\\begin{supertabular}{|p{.64\\linewidth}|p{.12\\linewidth}|p{.09\\linewidth}|}\n"); + printf("\\begin{supertabular}{|p{.64\\linewidth}|p{.12\\linewidth}|p{.09\\linewidth}|}\n"); { size_t i; @@ -190,19 +187,17 @@ static void main_latex(void) gnutls_mac_algorithm_t mac; gnutls_protocol_t version; - for (i = 0; (name = gnutls_cipher_suite_info - (i, id, &kx, &cipher, &mac, &version)); i++) { - printf - ("{\\small{%s}} & \\code{0x%02X 0x%02X} & %s", - escape_string(name, buffer, sizeof(buffer)), - (unsigned char)id[0], (unsigned char)id[1], - gnutls_protocol_get_name(version)); + for (i = 0; (name = gnutls_cipher_suite_info( + i, id, &kx, &cipher, &mac, &version)); + i++) { + printf("{\\small{%s}} & \\code{0x%02X 0x%02X} & %s", + escape_string(name, buffer, sizeof(buffer)), + (unsigned char)id[0], (unsigned char)id[1], + gnutls_protocol_get_name(version)); printf("\\\\\n"); } printf("\\end{supertabular}\n\n"); - } return; - } diff --git a/extra/gnutls_openssl.c b/extra/gnutls_openssl.c index f61d09829a..f4a63ae219 100644 --- a/extra/gnutls_openssl.c +++ b/extra/gnutls_openssl.c @@ -33,7 +33,7 @@ * undefine it to avoid the conflict with openssl.h. */ #ifdef X509_NAME -# undef X509_NAME +#undef X509_NAME #endif #include @@ -42,8 +42,8 @@ #undef shutdown /* XXX: See lib/gnutls_int.h. */ -#define GNUTLS_POINTER_TO_INT(_) ((int) GNUTLS_POINTER_TO_INT_CAST (_)) -#define GNUTLS_INT_TO_POINTER(_) ((void*) GNUTLS_POINTER_TO_INT_CAST (_)) +#define GNUTLS_POINTER_TO_INT(_) ((int)GNUTLS_POINTER_TO_INT_CAST(_)) +#define GNUTLS_INT_TO_POINTER(_) ((void *)GNUTLS_POINTER_TO_INT_CAST(_)) /* WARNING: Error functions aren't currently thread-safe */ @@ -64,11 +64,11 @@ void OpenSSL_add_all_algorithms(void) /* SSL_CTX structure handling */ -SSL_CTX *SSL_CTX_new(SSL_METHOD * method) +SSL_CTX *SSL_CTX_new(SSL_METHOD *method) { SSL_CTX *ctx; - ctx = (SSL_CTX *) calloc(1, sizeof(SSL_CTX)); + ctx = (SSL_CTX *)calloc(1, sizeof(SSL_CTX)); if (!ctx) return NULL; @@ -77,18 +77,18 @@ SSL_CTX *SSL_CTX_new(SSL_METHOD * method) return ctx; } -void SSL_CTX_free(SSL_CTX * ctx) +void SSL_CTX_free(SSL_CTX *ctx) { free(ctx->method); free(ctx); } -int SSL_CTX_set_default_verify_paths(SSL_CTX * ctx) +int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx) { return 0; } -int SSL_CTX_use_certificate_file(SSL_CTX * ctx, const char *certfile, int type) +int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *certfile, int type) { ctx->certfile = (char *)calloc(1, strlen(certfile) + 1); if (!ctx->certfile) @@ -100,7 +100,7 @@ int SSL_CTX_use_certificate_file(SSL_CTX * ctx, const char *certfile, int type) return 1; } -int SSL_CTX_use_PrivateKey_file(SSL_CTX * ctx, const char *keyfile, int type) +int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *keyfile, int type) { ctx->keyfile = (char *)calloc(1, strlen(keyfile) + 1); if (!ctx->keyfile) @@ -110,28 +110,26 @@ int SSL_CTX_use_PrivateKey_file(SSL_CTX * ctx, const char *keyfile, int type) ctx->keyfile_type = type; return 1; - } -void -SSL_CTX_set_verify(SSL_CTX * ctx, int verify_mode, - int (*verify_callback)(int, X509_STORE_CTX *)) +void SSL_CTX_set_verify(SSL_CTX *ctx, int verify_mode, + int (*verify_callback)(int, X509_STORE_CTX *)) { ctx->verify_mode = verify_mode; ctx->verify_callback = verify_callback; } -unsigned long SSL_CTX_set_options(SSL_CTX * ctx, unsigned long options) +unsigned long SSL_CTX_set_options(SSL_CTX *ctx, unsigned long options) { return (ctx->options |= options); } -long SSL_CTX_set_mode(SSL_CTX * ctx, long mode) +long SSL_CTX_set_mode(SSL_CTX *ctx, long mode) { return 0; } -int SSL_CTX_set_cipher_list(SSL_CTX * ctx, const char *list) +int SSL_CTX_set_cipher_list(SSL_CTX *ctx, const char *list) { /* FIXME: ignore this for the moment */ /* We're going to have to parse the "list" string to do this */ @@ -144,64 +142,64 @@ int SSL_CTX_set_cipher_list(SSL_CTX * ctx, const char *list) /* SSL_CTX statistics */ -long SSL_CTX_sess_number(SSL_CTX * ctx) +long SSL_CTX_sess_number(SSL_CTX *ctx) { return 0; } -long SSL_CTX_sess_connect(SSL_CTX * ctx) +long SSL_CTX_sess_connect(SSL_CTX *ctx) { return 0; } -long SSL_CTX_sess_connect_good(SSL_CTX * ctx) +long SSL_CTX_sess_connect_good(SSL_CTX *ctx) { return 0; } -long SSL_CTX_sess_connect_renegotiate(SSL_CTX * ctx) +long SSL_CTX_sess_connect_renegotiate(SSL_CTX *ctx) { return 0; } -long SSL_CTX_sess_accept(SSL_CTX * ctx) +long SSL_CTX_sess_accept(SSL_CTX *ctx) { return 0; } -long SSL_CTX_sess_accept_good(SSL_CTX * ctx) +long SSL_CTX_sess_accept_good(SSL_CTX *ctx) { return 0; } -long SSL_CTX_sess_accept_renegotiate(SSL_CTX * ctx) +long SSL_CTX_sess_accept_renegotiate(SSL_CTX *ctx) { return 0; } -long SSL_CTX_sess_hits(SSL_CTX * ctx) +long SSL_CTX_sess_hits(SSL_CTX *ctx) { return 0; } -long SSL_CTX_sess_misses(SSL_CTX * ctx) +long SSL_CTX_sess_misses(SSL_CTX *ctx) { return 0; } -long SSL_CTX_sess_timeouts(SSL_CTX * ctx) +long SSL_CTX_sess_timeouts(SSL_CTX *ctx) { return 0; } /* SSL structure handling */ -SSL *SSL_new(SSL_CTX * ctx) +SSL *SSL_new(SSL_CTX *ctx) { SSL *ssl; int err; - ssl = (SSL *) calloc(1, sizeof(SSL)); + ssl = (SSL *)calloc(1, sizeof(SSL)); if (!ssl) return NULL; @@ -220,9 +218,8 @@ SSL *SSL_new(SSL_CTX * ctx) gnutls_credentials_set(ssl->gnutls_state, GNUTLS_CRD_CERTIFICATE, ssl->gnutls_cred); if (ctx->certfile) - gnutls_certificate_set_x509_trust_file(ssl->gnutls_cred, - ctx->certfile, - ctx->certfile_type); + gnutls_certificate_set_x509_trust_file( + ssl->gnutls_cred, ctx->certfile, ctx->certfile_type); if (ctx->keyfile) gnutls_certificate_set_x509_key_file(ssl->gnutls_cred, ctx->certfile, @@ -234,13 +231,13 @@ SSL *SSL_new(SSL_CTX * ctx) ssl->options = ctx->options; - ssl->rfd = (gnutls_transport_ptr_t) - 1; - ssl->wfd = (gnutls_transport_ptr_t) - 1; + ssl->rfd = (gnutls_transport_ptr_t)-1; + ssl->wfd = (gnutls_transport_ptr_t)-1; return ssl; } -void SSL_free(SSL * ssl) +void SSL_free(SSL *ssl) { gnutls_certificate_free_credentials(ssl->gnutls_cred); gnutls_deinit(ssl->gnutls_state); @@ -251,7 +248,7 @@ void SSL_load_error_strings(void) { } -int SSL_get_error(SSL * ssl, int ret) +int SSL_get_error(SSL *ssl, int ret) { if (ret > 0) return SSL_ERROR_NONE; @@ -259,58 +256,57 @@ int SSL_get_error(SSL * ssl, int ret) return SSL_ERROR_ZERO_RETURN; } -int SSL_set_fd(SSL * ssl, int fd) +int SSL_set_fd(SSL *ssl, int fd) { gnutls_transport_set_ptr(ssl->gnutls_state, GNUTLS_INT_TO_POINTER(fd)); return 1; } -int SSL_set_rfd(SSL * ssl, int fd) +int SSL_set_rfd(SSL *ssl, int fd) { ssl->rfd = GNUTLS_INT_TO_POINTER(fd); - if (ssl->wfd != (gnutls_transport_ptr_t) - 1) + if (ssl->wfd != (gnutls_transport_ptr_t)-1) gnutls_transport_set_ptr2(ssl->gnutls_state, ssl->rfd, ssl->wfd); return 1; } -int SSL_set_wfd(SSL * ssl, int fd) +int SSL_set_wfd(SSL *ssl, int fd) { ssl->wfd = GNUTLS_INT_TO_POINTER(fd); - if (ssl->rfd != (gnutls_transport_ptr_t) - 1) + if (ssl->rfd != (gnutls_transport_ptr_t)-1) gnutls_transport_set_ptr2(ssl->gnutls_state, ssl->rfd, ssl->wfd); return 1; } -void SSL_set_bio(SSL * ssl, BIO * rbio, BIO * wbio) +void SSL_set_bio(SSL *ssl, BIO *rbio, BIO *wbio) { gnutls_transport_set_ptr2(ssl->gnutls_state, rbio->fd, wbio->fd); /* free(BIO); ? */ } -void SSL_set_connect_state(SSL * ssl) +void SSL_set_connect_state(SSL *ssl) { } -int SSL_pending(SSL * ssl) +int SSL_pending(SSL *ssl) { return gnutls_record_check_pending(ssl->gnutls_state); } -void -SSL_set_verify(SSL * ssl, int verify_mode, - int (*verify_callback)(int, X509_STORE_CTX *)) +void SSL_set_verify(SSL *ssl, int verify_mode, + int (*verify_callback)(int, X509_STORE_CTX *)) { ssl->verify_mode = verify_mode; ssl->verify_callback = verify_callback; } -const X509 *SSL_get_peer_certificate(SSL * ssl) +const X509 *SSL_get_peer_certificate(SSL *ssl) { const gnutls_datum_t *cert_list; unsigned int cert_list_size = 0; @@ -323,7 +319,7 @@ const X509 *SSL_get_peer_certificate(SSL * ssl) /* SSL connection open/close/read/write functions */ -int SSL_connect(SSL * ssl) +int SSL_connect(SSL *ssl) { X509_STORE_CTX *store; unsigned int cert_list_size = 0; @@ -335,9 +331,8 @@ int SSL_connect(SSL * ssl) if (ssl->options & SSL_OP_NO_TLSv1) { snprintf(x_priority, sizeof(x_priority), "%s:-VERS-TLS1.0", ssl->ctx->method->priority_string); - err = - gnutls_priority_set_direct(ssl->gnutls_state, - x_priority, NULL); + err = gnutls_priority_set_direct(ssl->gnutls_state, x_priority, + NULL); if (err < 0) { last_error = err; return 0; @@ -352,7 +347,7 @@ int SSL_connect(SSL * ssl) return 0; } - store = (X509_STORE_CTX *) calloc(1, sizeof(X509_STORE_CTX)); + store = (X509_STORE_CTX *)calloc(1, sizeof(X509_STORE_CTX)); if (!store) return 0; @@ -373,7 +368,7 @@ int SSL_connect(SSL * ssl) return 1; } -int SSL_accept(SSL * ssl) +int SSL_accept(SSL *ssl) { X509_STORE_CTX *store; unsigned int cert_list_size = 0; @@ -385,9 +380,8 @@ int SSL_accept(SSL * ssl) if (ssl->options & SSL_OP_NO_TLSv1) { snprintf(x_priority, sizeof(x_priority), "%s:-VERS-TLS1.0", ssl->ctx->method->priority_string); - err = - gnutls_priority_set_direct(ssl->gnutls_state, - x_priority, NULL); + err = gnutls_priority_set_direct(ssl->gnutls_state, x_priority, + NULL); if (err < 0) { last_error = err; return 0; @@ -404,7 +398,7 @@ int SSL_accept(SSL * ssl) return 0; } - store = (X509_STORE_CTX *) calloc(1, sizeof(X509_STORE_CTX)); + store = (X509_STORE_CTX *)calloc(1, sizeof(X509_STORE_CTX)); if (!store) return 0; store->ssl = ssl; @@ -424,7 +418,7 @@ int SSL_accept(SSL * ssl) return 1; } -int SSL_shutdown(SSL * ssl) +int SSL_shutdown(SSL *ssl) { if (!ssl->shutdown) { gnutls_bye(ssl->gnutls_state, GNUTLS_SHUT_WR); @@ -438,7 +432,7 @@ int SSL_shutdown(SSL * ssl) return 1; } -int SSL_read(SSL * ssl, void *buf, int len) +int SSL_read(SSL *ssl, void *buf, int len) { int ret; @@ -453,7 +447,7 @@ int SSL_read(SSL * ssl, void *buf, int len) return ret; } -int SSL_write(SSL * ssl, const void *buf, int len) +int SSL_write(SSL *ssl, const void *buf, int len) { int ret; @@ -468,7 +462,7 @@ int SSL_write(SSL * ssl, const void *buf, int len) return ret; } -int SSL_want(SSL * ssl) +int SSL_want(SSL *ssl) { return SSL_NOTHING; } @@ -478,7 +472,7 @@ int SSL_want(SSL * ssl) SSL_METHOD *SSLv23_client_method(void) { SSL_METHOD *m; - m = (SSL_METHOD *) calloc(1, sizeof(SSL_METHOD)); + m = (SSL_METHOD *)calloc(1, sizeof(SSL_METHOD)); if (!m) return NULL; @@ -492,7 +486,7 @@ SSL_METHOD *SSLv23_client_method(void) SSL_METHOD *SSLv23_server_method(void) { SSL_METHOD *m; - m = (SSL_METHOD *) calloc(1, sizeof(SSL_METHOD)); + m = (SSL_METHOD *)calloc(1, sizeof(SSL_METHOD)); if (!m) return NULL; @@ -505,7 +499,7 @@ SSL_METHOD *SSLv23_server_method(void) SSL_METHOD *SSLv3_client_method(void) { SSL_METHOD *m; - m = (SSL_METHOD *) calloc(1, sizeof(SSL_METHOD)); + m = (SSL_METHOD *)calloc(1, sizeof(SSL_METHOD)); if (!m) return NULL; @@ -519,7 +513,7 @@ SSL_METHOD *SSLv3_client_method(void) SSL_METHOD *SSLv3_server_method(void) { SSL_METHOD *m; - m = (SSL_METHOD *) calloc(1, sizeof(SSL_METHOD)); + m = (SSL_METHOD *)calloc(1, sizeof(SSL_METHOD)); if (!m) return NULL; @@ -533,7 +527,7 @@ SSL_METHOD *SSLv3_server_method(void) SSL_METHOD *TLSv1_client_method(void) { SSL_METHOD *m; - m = (SSL_METHOD *) calloc(1, sizeof(SSL_METHOD)); + m = (SSL_METHOD *)calloc(1, sizeof(SSL_METHOD)); if (!m) return NULL; @@ -547,7 +541,7 @@ SSL_METHOD *TLSv1_client_method(void) SSL_METHOD *TLSv1_server_method(void) { SSL_METHOD *m; - m = (SSL_METHOD *) calloc(1, sizeof(SSL_METHOD)); + m = (SSL_METHOD *)calloc(1, sizeof(SSL_METHOD)); if (!m) return NULL; @@ -560,33 +554,33 @@ SSL_METHOD *TLSv1_server_method(void) /* SSL_CIPHER functions */ -SSL_CIPHER *SSL_get_current_cipher(SSL * ssl) +SSL_CIPHER *SSL_get_current_cipher(SSL *ssl) { if (!ssl) return NULL; ssl->ciphersuite.version = - gnutls_protocol_get_version(ssl->gnutls_state); + gnutls_protocol_get_version(ssl->gnutls_state); ssl->ciphersuite.cipher = gnutls_cipher_get(ssl->gnutls_state); ssl->ciphersuite.kx = gnutls_kx_get(ssl->gnutls_state); ssl->ciphersuite.mac = gnutls_mac_get(ssl->gnutls_state); ssl->ciphersuite.compression = - gnutls_compression_get(ssl->gnutls_state); + gnutls_compression_get(ssl->gnutls_state); ssl->ciphersuite.cert = gnutls_certificate_type_get(ssl->gnutls_state); return &(ssl->ciphersuite); } -const char *SSL_CIPHER_get_name(SSL_CIPHER * cipher) +const char *SSL_CIPHER_get_name(SSL_CIPHER *cipher) { if (!cipher) return ("NONE"); - return gnutls_cipher_suite_get_name(cipher->kx, - cipher->cipher, cipher->mac); + return gnutls_cipher_suite_get_name(cipher->kx, cipher->cipher, + cipher->mac); } -int SSL_CIPHER_get_bits(SSL_CIPHER * cipher, int *bits) +int SSL_CIPHER_get_bits(SSL_CIPHER *cipher, int *bits) { int bit_result; @@ -601,7 +595,7 @@ int SSL_CIPHER_get_bits(SSL_CIPHER * cipher, int *bits) return bit_result; } -const char *SSL_CIPHER_get_version(SSL_CIPHER * cipher) +const char *SSL_CIPHER_get_version(SSL_CIPHER *cipher) { const char *ret; @@ -615,7 +609,7 @@ const char *SSL_CIPHER_get_version(SSL_CIPHER * cipher) return ("unknown"); } -char *SSL_CIPHER_description(SSL_CIPHER * cipher, char *buf, int size) +char *SSL_CIPHER_description(SSL_CIPHER *cipher, char *buf, int size) { char *tmpbuf; int tmpsize; @@ -646,10 +640,10 @@ char *SSL_CIPHER_description(SSL_CIPHER * cipher, char *buf, int size) /* X509 functions */ -X509_NAME *X509_get_subject_name(const X509 * cert) +X509_NAME *X509_get_subject_name(const X509 *cert) { gnutls_x509_dn *dn; - dn = (gnutls_x509_dn *) calloc(1, sizeof(gnutls_x509_dn)); + dn = (gnutls_x509_dn *)calloc(1, sizeof(gnutls_x509_dn)); if (!dn) return (NULL); if (gnutls_x509_extract_certificate_dn(cert, dn) < 0) { @@ -659,10 +653,10 @@ X509_NAME *X509_get_subject_name(const X509 * cert) return dn; } -X509_NAME *X509_get_issuer_name(const X509 * cert) +X509_NAME *X509_get_issuer_name(const X509 *cert) { gnutls_x509_dn *dn; - dn = (gnutls_x509_dn *) calloc(1, sizeof(gnutls_x509_dn)); + dn = (gnutls_x509_dn *)calloc(1, sizeof(gnutls_x509_dn)); if (!dn) return (NULL); if (gnutls_x509_extract_certificate_issuer_dn(cert, dn) < 0) { @@ -672,15 +666,14 @@ X509_NAME *X509_get_issuer_name(const X509 * cert) return dn; } -char *X509_NAME_oneline(gnutls_x509_dn * name, char *buf, int len) +char *X509_NAME_oneline(gnutls_x509_dn *name, char *buf, int len) { /* XXX openssl allocates buffer if buf == NULL */ if (!buf) return NULL; memset(buf, 0, len); - snprintf(buf, len - 1, - "C=%s, ST=%s, L=%s, O=%s, OU=%s, CN=%s/Email=%s", + snprintf(buf, len - 1, "C=%s, ST=%s, L=%s, O=%s, OU=%s, CN=%s/Email=%s", name->country, name->state_or_province_name, name->locality_name, name->organization, name->organizational_unit_name, name->common_name, @@ -688,7 +681,7 @@ char *X509_NAME_oneline(gnutls_x509_dn * name, char *buf, int len) return buf; } -void X509_free(const X509 * cert) +void X509_free(const X509 *cert) { /* only get certificates as const items */ } @@ -705,7 +698,7 @@ BIO *BIO_new_socket(int sock, int close_flag) { BIO *bio; - bio = (BIO *) malloc(sizeof(BIO)); + bio = (BIO *)malloc(sizeof(BIO)); if (!bio) return NULL; @@ -777,7 +770,7 @@ int RAND_egd_bytes(const char *path, int bytes) /* message digest functions */ -void MD5_Init(MD5_CTX * ctx) +void MD5_Init(MD5_CTX *ctx) { int ret; ret = gnutls_hash_init((void *)&ctx->handle, GNUTLS_DIG_MD5); @@ -785,12 +778,12 @@ void MD5_Init(MD5_CTX * ctx) abort(); } -void MD5_Update(MD5_CTX * ctx, const void *buf, int len) +void MD5_Update(MD5_CTX *ctx, const void *buf, int len) { gnutls_hash(ctx->handle, buf, len); } -void MD5_Final(unsigned char *md, MD5_CTX * ctx) +void MD5_Final(unsigned char *md, MD5_CTX *ctx) { gnutls_hash_deinit(ctx->handle, md); } @@ -806,7 +799,7 @@ unsigned char *MD5(const unsigned char *buf, unsigned long len, return md; } -void RIPEMD160_Init(RIPEMD160_CTX * ctx) +void RIPEMD160_Init(RIPEMD160_CTX *ctx) { int ret; ret = gnutls_hash_init((void *)&ctx->handle, GNUTLS_DIG_RMD160); @@ -814,12 +807,12 @@ void RIPEMD160_Init(RIPEMD160_CTX * ctx) abort(); } -void RIPEMD160_Update(RIPEMD160_CTX * ctx, const void *buf, int len) +void RIPEMD160_Update(RIPEMD160_CTX *ctx, const void *buf, int len) { gnutls_hash(ctx->handle, buf, len); } -void RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX * ctx) +void RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX *ctx) { gnutls_hash_deinit(ctx->handle, md); } diff --git a/extra/includes/gnutls/openssl.h b/extra/includes/gnutls/openssl.h index aead126767..0383ee6997 100644 --- a/extra/includes/gnutls/openssl.h +++ b/extra/includes/gnutls/openssl.h @@ -29,283 +29,284 @@ */ #ifndef GNUTLS_OPENSSL_H -# define GNUTLS_OPENSSL_H +#define GNUTLS_OPENSSL_H -# ifdef __cplusplus +#ifdef __cplusplus extern "C" { -# endif +#endif -# include +#include /* Extra definitions that no longer exist in gnutls. */ -# define GNUTLS_X509_CN_SIZE 256 -# define GNUTLS_X509_C_SIZE 3 -# define GNUTLS_X509_O_SIZE 256 -# define GNUTLS_X509_OU_SIZE 256 -# define GNUTLS_X509_L_SIZE 256 -# define GNUTLS_X509_S_SIZE 256 -# define GNUTLS_X509_EMAIL_SIZE 256 - - typedef struct { - char common_name[GNUTLS_X509_CN_SIZE]; - char country[GNUTLS_X509_C_SIZE]; - char organization[GNUTLS_X509_O_SIZE]; - char organizational_unit_name[GNUTLS_X509_OU_SIZE]; - char locality_name[GNUTLS_X509_L_SIZE]; - char state_or_province_name[GNUTLS_X509_S_SIZE]; - char email[GNUTLS_X509_EMAIL_SIZE]; - } gnutls_x509_dn; - -# define OPENSSL_VERSION_NUMBER (0x0090604F) -# define SSLEAY_VERSION_NUMBER OPENSSL_VERSION_NUMBER -# define OPENSSL_VERSION_TEXT ("GNUTLS " GNUTLS_VERSION " ") - -# define SSL_ERROR_NONE (0) -# define SSL_ERROR_SSL (1) -# define SSL_ERROR_WANT_READ (2) -# define SSL_ERROR_WANT_WRITE (3) -# define SSL_ERROR_SYSCALL (5) -# define SSL_ERROR_ZERO_RETURN (6) - -# define SSL_FILETYPE_PEM (GNUTLS_X509_FMT_PEM) - -# define SSL_VERIFY_NONE (0) - -# define SSL_ST_OK (1) - -# define X509_V_ERR_CERT_NOT_YET_VALID (1) -# define X509_V_ERR_CERT_HAS_EXPIRED (2) -# define X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT (3) - -# define SSL_OP_ALL (0x000FFFFF) -# define SSL_OP_NO_TLSv1 (0x0400000) - -# define SSL_MODE_ENABLE_PARTIAL_WRITE (0x1) -# define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER (0x2) -# define SSL_MODE_AUTO_RETRY (0x4) - -# undef X509_NAME -# undef X509 - typedef gnutls_x509_dn X509_NAME; - typedef gnutls_datum_t X509; - - typedef struct _SSL SSL; - - typedef struct { - char priority_string[256]; - unsigned int connend; - } SSL_METHOD; - - typedef struct { - gnutls_protocol_t version; - gnutls_cipher_algorithm_t cipher; - gnutls_kx_algorithm_t kx; - gnutls_mac_algorithm_t mac; - gnutls_compression_method_t compression; - gnutls_certificate_type_t cert; - } SSL_CIPHER; - - typedef struct _BIO { - gnutls_transport_ptr_t fd; - } BIO; - - typedef struct { - SSL *ssl; - int error; - const gnutls_datum_t *cert_list; -# define current_cert cert_list - } X509_STORE_CTX; - -# define X509_STORE_CTX_get_current_cert(ctx) ((ctx)->current_cert) - - typedef struct _SSL_CTX { - SSL_METHOD *method; - char *certfile; - int certfile_type; - char *keyfile; - int keyfile_type; - unsigned long options; - - int (*verify_callback)(int, X509_STORE_CTX *); - int verify_mode; - - } SSL_CTX; - - struct _SSL { - gnutls_session_t gnutls_state; - - gnutls_certificate_client_credentials gnutls_cred; - - SSL_CTX *ctx; - SSL_CIPHER ciphersuite; - - int last_error; - int shutdown; - int state; - unsigned long options; - - int (*verify_callback)(int, X509_STORE_CTX *); - int verify_mode; +#define GNUTLS_X509_CN_SIZE 256 +#define GNUTLS_X509_C_SIZE 3 +#define GNUTLS_X509_O_SIZE 256 +#define GNUTLS_X509_OU_SIZE 256 +#define GNUTLS_X509_L_SIZE 256 +#define GNUTLS_X509_S_SIZE 256 +#define GNUTLS_X509_EMAIL_SIZE 256 + +typedef struct { + char common_name[GNUTLS_X509_CN_SIZE]; + char country[GNUTLS_X509_C_SIZE]; + char organization[GNUTLS_X509_O_SIZE]; + char organizational_unit_name[GNUTLS_X509_OU_SIZE]; + char locality_name[GNUTLS_X509_L_SIZE]; + char state_or_province_name[GNUTLS_X509_S_SIZE]; + char email[GNUTLS_X509_EMAIL_SIZE]; +} gnutls_x509_dn; + +#define OPENSSL_VERSION_NUMBER (0x0090604F) +#define SSLEAY_VERSION_NUMBER OPENSSL_VERSION_NUMBER +#define OPENSSL_VERSION_TEXT ("GNUTLS " GNUTLS_VERSION " ") + +#define SSL_ERROR_NONE (0) +#define SSL_ERROR_SSL (1) +#define SSL_ERROR_WANT_READ (2) +#define SSL_ERROR_WANT_WRITE (3) +#define SSL_ERROR_SYSCALL (5) +#define SSL_ERROR_ZERO_RETURN (6) + +#define SSL_FILETYPE_PEM (GNUTLS_X509_FMT_PEM) + +#define SSL_VERIFY_NONE (0) + +#define SSL_ST_OK (1) + +#define X509_V_ERR_CERT_NOT_YET_VALID (1) +#define X509_V_ERR_CERT_HAS_EXPIRED (2) +#define X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT (3) + +#define SSL_OP_ALL (0x000FFFFF) +#define SSL_OP_NO_TLSv1 (0x0400000) + +#define SSL_MODE_ENABLE_PARTIAL_WRITE (0x1) +#define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER (0x2) +#define SSL_MODE_AUTO_RETRY (0x4) + +#undef X509_NAME +#undef X509 +typedef gnutls_x509_dn X509_NAME; +typedef gnutls_datum_t X509; + +typedef struct _SSL SSL; + +typedef struct { + char priority_string[256]; + unsigned int connend; +} SSL_METHOD; + +typedef struct { + gnutls_protocol_t version; + gnutls_cipher_algorithm_t cipher; + gnutls_kx_algorithm_t kx; + gnutls_mac_algorithm_t mac; + gnutls_compression_method_t compression; + gnutls_certificate_type_t cert; +} SSL_CIPHER; + +typedef struct _BIO { + gnutls_transport_ptr_t fd; +} BIO; + +typedef struct { + SSL *ssl; + int error; + const gnutls_datum_t *cert_list; +#define current_cert cert_list +} X509_STORE_CTX; + +#define X509_STORE_CTX_get_current_cert(ctx) ((ctx)->current_cert) + +typedef struct _SSL_CTX { + SSL_METHOD *method; + char *certfile; + int certfile_type; + char *keyfile; + int keyfile_type; + unsigned long options; + + int (*verify_callback)(int, X509_STORE_CTX *); + int verify_mode; + +} SSL_CTX; + +struct _SSL { + gnutls_session_t gnutls_state; + + gnutls_certificate_client_credentials gnutls_cred; + + SSL_CTX *ctx; + SSL_CIPHER ciphersuite; + + int last_error; + int shutdown; + int state; + unsigned long options; + + int (*verify_callback)(int, X509_STORE_CTX *); + int verify_mode; + + gnutls_transport_ptr_t rfd; + gnutls_transport_ptr_t wfd; +}; - gnutls_transport_ptr_t rfd; - gnutls_transport_ptr_t wfd; - }; +#define rbio gnutls_state -# define rbio gnutls_state +typedef struct { + void *handle; +} MD_CTX; - typedef struct { - void *handle; - } MD_CTX; +struct rsa_st; +typedef struct rsa_st RSA; - struct rsa_st; - typedef struct rsa_st RSA; +#define MD5_CTX MD_CTX +#define RIPEMD160_CTX MD_CTX -# define MD5_CTX MD_CTX -# define RIPEMD160_CTX MD_CTX +#define OpenSSL_add_ssl_algorithms() SSL_library_init() +#define SSLeay_add_ssl_algorithms() SSL_library_init() +#define SSLeay_add_all_algorithms() OpenSSL_add_all_algorithms() -# define OpenSSL_add_ssl_algorithms() SSL_library_init() -# define SSLeay_add_ssl_algorithms() SSL_library_init() -# define SSLeay_add_all_algorithms() OpenSSL_add_all_algorithms() - -# define SSL_get_cipher_name(ssl) SSL_CIPHER_get_name(SSL_get_current_cipher(ssl)) -# define SSL_get_cipher(ssl) SSL_get_cipher_name(ssl) -# define SSL_get_cipher_bits(ssl,bp) SSL_CIPHER_get_bits(SSL_get_current_cipher(ssl),(bp)) -# define SSL_get_cipher_version(ssl) SSL_CIPHER_get_version(SSL_get_current_cipher(ssl)) +#define SSL_get_cipher_name(ssl) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(ssl)) +#define SSL_get_cipher(ssl) SSL_get_cipher_name(ssl) +#define SSL_get_cipher_bits(ssl, bp) \ + SSL_CIPHER_get_bits(SSL_get_current_cipher(ssl), (bp)) +#define SSL_get_cipher_version(ssl) \ + SSL_CIPHER_get_version(SSL_get_current_cipher(ssl)) /* Library initialisation functions */ - int SSL_library_init(void); - void OpenSSL_add_all_algorithms(void); +int SSL_library_init(void); +void OpenSSL_add_all_algorithms(void); /* SSL_CTX structure handling */ - SSL_CTX *SSL_CTX_new(SSL_METHOD * method); - void SSL_CTX_free(SSL_CTX * ctx); - int SSL_CTX_set_default_verify_paths(SSL_CTX * ctx); - int SSL_CTX_use_certificate_file(SSL_CTX * ctx, - const char *certfile, int type); - int SSL_CTX_use_PrivateKey_file(SSL_CTX * ctx, const char *keyfile, - int type); - void SSL_CTX_set_verify(SSL_CTX * ctx, int verify_mode, - int (*verify_callback)(int, X509_STORE_CTX *)); - unsigned long SSL_CTX_set_options(SSL_CTX * ctx, unsigned long options); - long SSL_CTX_set_mode(SSL_CTX * ctx, long mode); - int SSL_CTX_set_cipher_list(SSL_CTX * ctx, const char *list); +SSL_CTX *SSL_CTX_new(SSL_METHOD *method); +void SSL_CTX_free(SSL_CTX *ctx); +int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); +int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *certfile, int type); +int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *keyfile, int type); +void SSL_CTX_set_verify(SSL_CTX *ctx, int verify_mode, + int (*verify_callback)(int, X509_STORE_CTX *)); +unsigned long SSL_CTX_set_options(SSL_CTX *ctx, unsigned long options); +long SSL_CTX_set_mode(SSL_CTX *ctx, long mode); +int SSL_CTX_set_cipher_list(SSL_CTX *ctx, const char *list); /* SSL_CTX statistics */ - long SSL_CTX_sess_number(SSL_CTX * ctx); - long SSL_CTX_sess_connect(SSL_CTX * ctx); - long SSL_CTX_sess_connect_good(SSL_CTX * ctx); - long SSL_CTX_sess_connect_renegotiate(SSL_CTX * ctx); - long SSL_CTX_sess_accept(SSL_CTX * ctx); - long SSL_CTX_sess_accept_good(SSL_CTX * ctx); - long SSL_CTX_sess_accept_renegotiate(SSL_CTX * ctx); - long SSL_CTX_sess_hits(SSL_CTX * ctx); - long SSL_CTX_sess_misses(SSL_CTX * ctx); - long SSL_CTX_sess_timeouts(SSL_CTX * ctx); +long SSL_CTX_sess_number(SSL_CTX *ctx); +long SSL_CTX_sess_connect(SSL_CTX *ctx); +long SSL_CTX_sess_connect_good(SSL_CTX *ctx); +long SSL_CTX_sess_connect_renegotiate(SSL_CTX *ctx); +long SSL_CTX_sess_accept(SSL_CTX *ctx); +long SSL_CTX_sess_accept_good(SSL_CTX *ctx); +long SSL_CTX_sess_accept_renegotiate(SSL_CTX *ctx); +long SSL_CTX_sess_hits(SSL_CTX *ctx); +long SSL_CTX_sess_misses(SSL_CTX *ctx); +long SSL_CTX_sess_timeouts(SSL_CTX *ctx); /* SSL structure handling */ - SSL *SSL_new(SSL_CTX * ctx); - void SSL_free(SSL * ssl); - void SSL_load_error_strings(void); - int SSL_get_error(SSL * ssl, int ret); - int SSL_set_fd(SSL * ssl, int fd); - int SSL_set_rfd(SSL * ssl, int fd); - int SSL_set_wfd(SSL * ssl, int fd); - void SSL_set_bio(SSL * ssl, BIO * rbio, BIO * wbio); - void SSL_set_connect_state(SSL * ssl); - int SSL_pending(SSL * ssl); - void SSL_set_verify(SSL * ssl, int verify_mode, - int (*verify_callback)(int, X509_STORE_CTX *)); - const X509 *SSL_get_peer_certificate(SSL * ssl); +SSL *SSL_new(SSL_CTX *ctx); +void SSL_free(SSL *ssl); +void SSL_load_error_strings(void); +int SSL_get_error(SSL *ssl, int ret); +int SSL_set_fd(SSL *ssl, int fd); +int SSL_set_rfd(SSL *ssl, int fd); +int SSL_set_wfd(SSL *ssl, int fd); +void SSL_set_bio(SSL *ssl, BIO *rbio, BIO *wbio); +void SSL_set_connect_state(SSL *ssl); +int SSL_pending(SSL *ssl); +void SSL_set_verify(SSL *ssl, int verify_mode, + int (*verify_callback)(int, X509_STORE_CTX *)); +const X509 *SSL_get_peer_certificate(SSL *ssl); /* SSL connection open/close/read/write functions */ - int SSL_connect(SSL * ssl); - int SSL_accept(SSL * ssl); - int SSL_shutdown(SSL * ssl); - int SSL_read(SSL * ssl, void *buf, int len); - int SSL_write(SSL * ssl, const void *buf, int len); +int SSL_connect(SSL *ssl); +int SSL_accept(SSL *ssl); +int SSL_shutdown(SSL *ssl); +int SSL_read(SSL *ssl, void *buf, int len); +int SSL_write(SSL *ssl, const void *buf, int len); - int SSL_want(SSL * ssl); +int SSL_want(SSL *ssl); -# define SSL_NOTHING (1) -# define SSL_WRITING (2) -# define SSL_READING (3) -# define SSL_X509_LOOKUP (4) +#define SSL_NOTHING (1) +#define SSL_WRITING (2) +#define SSL_READING (3) +#define SSL_X509_LOOKUP (4) -# define SSL_want_nothing(s) (SSL_want(s) == SSL_NOTHING) -# define SSL_want_read(s) (SSL_want(s) == SSL_READING) -# define SSL_want_write(s) (SSL_want(s) == SSL_WRITING) -# define SSL_want_x509_lookup(s) (SSL_want(s) == SSL_X509_LOOKUP) +#define SSL_want_nothing(s) (SSL_want(s) == SSL_NOTHING) +#define SSL_want_read(s) (SSL_want(s) == SSL_READING) +#define SSL_want_write(s) (SSL_want(s) == SSL_WRITING) +#define SSL_want_x509_lookup(s) (SSL_want(s) == SSL_X509_LOOKUP) /* SSL_METHOD functions */ - SSL_METHOD *SSLv23_client_method(void); - SSL_METHOD *SSLv23_server_method(void); - SSL_METHOD *SSLv3_client_method(void); - SSL_METHOD *SSLv3_server_method(void); - SSL_METHOD *TLSv1_client_method(void); - SSL_METHOD *TLSv1_server_method(void); +SSL_METHOD *SSLv23_client_method(void); +SSL_METHOD *SSLv23_server_method(void); +SSL_METHOD *SSLv3_client_method(void); +SSL_METHOD *SSLv3_server_method(void); +SSL_METHOD *TLSv1_client_method(void); +SSL_METHOD *TLSv1_server_method(void); /* SSL_CIPHER functions */ - SSL_CIPHER *SSL_get_current_cipher(SSL * ssl); - const char *SSL_CIPHER_get_name(SSL_CIPHER * cipher); - int SSL_CIPHER_get_bits(SSL_CIPHER * cipher, int *bits); - const char *SSL_CIPHER_get_version(SSL_CIPHER * cipher); - char *SSL_CIPHER_description(SSL_CIPHER * cipher, char *buf, int size); +SSL_CIPHER *SSL_get_current_cipher(SSL *ssl); +const char *SSL_CIPHER_get_name(SSL_CIPHER *cipher); +int SSL_CIPHER_get_bits(SSL_CIPHER *cipher, int *bits); +const char *SSL_CIPHER_get_version(SSL_CIPHER *cipher); +char *SSL_CIPHER_description(SSL_CIPHER *cipher, char *buf, int size); /* X509 functions */ - X509_NAME *X509_get_subject_name(const X509 * cert); - X509_NAME *X509_get_issuer_name(const X509 * cert); - char *X509_NAME_oneline(gnutls_x509_dn * name, char *buf, int len); - void X509_free(const X509 * cert); +X509_NAME *X509_get_subject_name(const X509 *cert); +X509_NAME *X509_get_issuer_name(const X509 *cert); +char *X509_NAME_oneline(gnutls_x509_dn *name, char *buf, int len); +void X509_free(const X509 *cert); /* BIO functions */ - void BIO_get_fd(gnutls_session_t gnutls_state, int *fd); - BIO *BIO_new_socket(int sock, int close_flag); +void BIO_get_fd(gnutls_session_t gnutls_state, int *fd); +BIO *BIO_new_socket(int sock, int close_flag); /* error handling */ - unsigned long ERR_get_error(void); - const char *ERR_error_string(unsigned long e, char *buf); +unsigned long ERR_get_error(void); +const char *ERR_error_string(unsigned long e, char *buf); /* RAND functions */ - int RAND_status(void); - void RAND_seed(const void *buf, int num); - int RAND_bytes(unsigned char *buf, int num); - int RAND_pseudo_bytes(unsigned char *buf, int num); - const char *RAND_file_name(char *buf, size_t len); - int RAND_load_file(const char *name, long maxbytes); - int RAND_write_file(const char *name); +int RAND_status(void); +void RAND_seed(const void *buf, int num); +int RAND_bytes(unsigned char *buf, int num); +int RAND_pseudo_bytes(unsigned char *buf, int num); +const char *RAND_file_name(char *buf, size_t len); +int RAND_load_file(const char *name, long maxbytes); +int RAND_write_file(const char *name); - int RAND_egd_bytes(const char *path, int bytes); -# define RAND_egd(p) RAND_egd_bytes((p), 255) +int RAND_egd_bytes(const char *path, int bytes); +#define RAND_egd(p) RAND_egd_bytes((p), 255) /* message digest functions */ -# define MD5_DIGEST_LENGTH 16 +#define MD5_DIGEST_LENGTH 16 - void MD5_Init(MD5_CTX * ctx); - void MD5_Update(MD5_CTX * ctx, const void *buf, int len); - void MD5_Final(unsigned char *md, MD5_CTX * ctx); - unsigned char *MD5(const unsigned char *buf, unsigned long len, - unsigned char *md); +void MD5_Init(MD5_CTX *ctx); +void MD5_Update(MD5_CTX *ctx, const void *buf, int len); +void MD5_Final(unsigned char *md, MD5_CTX *ctx); +unsigned char *MD5(const unsigned char *buf, unsigned long len, + unsigned char *md); - void RIPEMD160_Init(RIPEMD160_CTX * ctx); - void RIPEMD160_Update(RIPEMD160_CTX * ctx, const void *buf, int len); - void RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX * ctx); - unsigned char *RIPEMD160(const unsigned char *buf, - unsigned long len, unsigned char *md); +void RIPEMD160_Init(RIPEMD160_CTX *ctx); +void RIPEMD160_Update(RIPEMD160_CTX *ctx, const void *buf, int len); +void RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX *ctx); +unsigned char *RIPEMD160(const unsigned char *buf, unsigned long len, + unsigned char *md); -# ifdef __cplusplus +#ifdef __cplusplus } -# endif +#endif #endif diff --git a/extra/openssl_compat.c b/extra/openssl_compat.c index f50e8f61cd..da81b7131e 100644 --- a/extra/openssl_compat.c +++ b/extra/openssl_compat.c @@ -26,7 +26,7 @@ #include "gnutls_int.h" -#include /* memset */ +#include /* memset */ #include #include #include @@ -42,9 +42,8 @@ * peer is invalid, or in any other failure this function returns error. * Returns a negative error code in case of an error. -*/ -int -gnutls_x509_extract_certificate_dn(const gnutls_datum_t * cert, - gnutls_x509_dn * ret) +int gnutls_x509_extract_certificate_dn(const gnutls_datum_t *cert, + gnutls_x509_dn *ret) { gnutls_x509_crt_t xcert; int result; @@ -61,13 +60,12 @@ gnutls_x509_extract_certificate_dn(const gnutls_datum_t * cert, } len = sizeof(ret->country); - gnutls_x509_crt_get_dn_by_oid(xcert, GNUTLS_OID_X520_COUNTRY_NAME, - 0, 0, ret->country, &len); + gnutls_x509_crt_get_dn_by_oid(xcert, GNUTLS_OID_X520_COUNTRY_NAME, 0, 0, + ret->country, &len); len = sizeof(ret->organization); - gnutls_x509_crt_get_dn_by_oid(xcert, - GNUTLS_OID_X520_ORGANIZATION_NAME, 0, - 0, ret->organization, &len); + gnutls_x509_crt_get_dn_by_oid(xcert, GNUTLS_OID_X520_ORGANIZATION_NAME, + 0, 0, ret->organization, &len); len = sizeof(ret->organizational_unit_name); gnutls_x509_crt_get_dn_by_oid(xcert, @@ -76,17 +74,17 @@ gnutls_x509_extract_certificate_dn(const gnutls_datum_t * cert, &len); len = sizeof(ret->common_name); - gnutls_x509_crt_get_dn_by_oid(xcert, GNUTLS_OID_X520_COMMON_NAME, - 0, 0, ret->common_name, &len); + gnutls_x509_crt_get_dn_by_oid(xcert, GNUTLS_OID_X520_COMMON_NAME, 0, 0, + ret->common_name, &len); len = sizeof(ret->locality_name); - gnutls_x509_crt_get_dn_by_oid(xcert, GNUTLS_OID_X520_LOCALITY_NAME, - 0, 0, ret->locality_name, &len); + gnutls_x509_crt_get_dn_by_oid(xcert, GNUTLS_OID_X520_LOCALITY_NAME, 0, + 0, ret->locality_name, &len); len = sizeof(ret->state_or_province_name); gnutls_x509_crt_get_dn_by_oid(xcert, - GNUTLS_OID_X520_STATE_OR_PROVINCE_NAME, - 0, 0, ret->state_or_province_name, &len); + GNUTLS_OID_X520_STATE_OR_PROVINCE_NAME, 0, + 0, ret->state_or_province_name, &len); len = sizeof(ret->email); gnutls_x509_crt_get_dn_by_oid(xcert, GNUTLS_OID_PKCS9_EMAIL, 0, 0, @@ -107,9 +105,8 @@ gnutls_x509_extract_certificate_dn(const gnutls_datum_t * cert, * peer is invalid, or in any other failure this function returns error. * Returns a negative error code in case of an error. -*/ -int -gnutls_x509_extract_certificate_issuer_dn(const gnutls_datum_t * cert, - gnutls_x509_dn * ret) +int gnutls_x509_extract_certificate_issuer_dn(const gnutls_datum_t *cert, + gnutls_x509_dn *ret) { gnutls_x509_crt_t xcert; int result; @@ -126,9 +123,8 @@ gnutls_x509_extract_certificate_issuer_dn(const gnutls_datum_t * cert, } len = sizeof(ret->country); - gnutls_x509_crt_get_issuer_dn_by_oid(xcert, - GNUTLS_OID_X520_COUNTRY_NAME, - 0, 0, ret->country, &len); + gnutls_x509_crt_get_issuer_dn_by_oid( + xcert, GNUTLS_OID_X520_COUNTRY_NAME, 0, 0, ret->country, &len); len = sizeof(ret->organization); gnutls_x509_crt_get_issuer_dn_by_oid(xcert, @@ -136,31 +132,27 @@ gnutls_x509_extract_certificate_issuer_dn(const gnutls_datum_t * cert, 0, 0, ret->organization, &len); len = sizeof(ret->organizational_unit_name); - gnutls_x509_crt_get_issuer_dn_by_oid(xcert, - GNUTLS_OID_X520_ORGANIZATIONAL_UNIT_NAME, - 0, 0, - ret->organizational_unit_name, - &len); + gnutls_x509_crt_get_issuer_dn_by_oid( + xcert, GNUTLS_OID_X520_ORGANIZATIONAL_UNIT_NAME, 0, 0, + ret->organizational_unit_name, &len); len = sizeof(ret->common_name); - gnutls_x509_crt_get_issuer_dn_by_oid(xcert, - GNUTLS_OID_X520_COMMON_NAME, + gnutls_x509_crt_get_issuer_dn_by_oid(xcert, GNUTLS_OID_X520_COMMON_NAME, 0, 0, ret->common_name, &len); len = sizeof(ret->locality_name); gnutls_x509_crt_get_issuer_dn_by_oid(xcert, - GNUTLS_OID_X520_LOCALITY_NAME, - 0, 0, ret->locality_name, &len); + GNUTLS_OID_X520_LOCALITY_NAME, 0, + 0, ret->locality_name, &len); len = sizeof(ret->state_or_province_name); - gnutls_x509_crt_get_issuer_dn_by_oid(xcert, - GNUTLS_OID_X520_STATE_OR_PROVINCE_NAME, - 0, 0, - ret->state_or_province_name, &len); + gnutls_x509_crt_get_issuer_dn_by_oid( + xcert, GNUTLS_OID_X520_STATE_OR_PROVINCE_NAME, 0, 0, + ret->state_or_province_name, &len); len = sizeof(ret->email); - gnutls_x509_crt_get_issuer_dn_by_oid(xcert, GNUTLS_OID_PKCS9_EMAIL, - 0, 0, ret->email, &len); + gnutls_x509_crt_get_issuer_dn_by_oid(xcert, GNUTLS_OID_PKCS9_EMAIL, 0, + 0, ret->email, &len); gnutls_x509_crt_deinit(xcert); diff --git a/extra/openssl_compat.h b/extra/openssl_compat.h index f09897cdad..b05cacb606 100644 --- a/extra/openssl_compat.h +++ b/extra/openssl_compat.h @@ -21,10 +21,10 @@ */ #ifndef GNUTLS_COMPAT8_H -# define GNUTLS_COMPAT8_H +#define GNUTLS_COMPAT8_H /* Extra definitions */ -# include +#include int gnutls_x509_extract_certificate_dn(const gnutls_datum_t *, gnutls_x509_dn *); diff --git a/fuzz/certs.h b/fuzz/certs.h index feb831cf4e..caf4deefd2 100644 --- a/fuzz/certs.h +++ b/fuzz/certs.h @@ -22,7 +22,7 @@ */ #ifndef CERTS_H -# define CERTS_H +#define CERTS_H static const uint8_t kRSACertificateDER[] = { 0x30, 0x82, 0x02, 0xff, 0x30, 0x82, 0x01, 0xe7, 0xa0, 0x03, 0x02, 0x01, @@ -197,108 +197,76 @@ static const uint8_t kRSAPrivateKeyDER[] = { static const uint8_t kECDSACertificateDER[] = { 0x30, 0x82, 0x02, 0xA6, 0x30, 0x82, 0x01, 0x5E, 0xA0, 0x03, 0x02, 0x01, - 0x02, 0x02, 0x08, 0x53, - 0x66, 0x2B, 0x39, 0x11, 0xBE, 0x18, 0xCB, 0x30, 0x0D, 0x06, 0x09, 0x2A, - 0x86, 0x48, 0x86, 0xF7, - 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x30, 0x19, 0x31, 0x17, 0x30, 0x15, - 0x06, 0x03, 0x55, 0x04, + 0x02, 0x02, 0x08, 0x53, 0x66, 0x2B, 0x39, 0x11, 0xBE, 0x18, 0xCB, 0x30, + 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, + 0x05, 0x00, 0x30, 0x19, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0E, 0x47, 0x6E, 0x75, 0x54, 0x4C, 0x53, 0x20, 0x54, 0x65, - 0x73, 0x74, 0x20, 0x43, - 0x41, 0x30, 0x22, 0x18, 0x0F, 0x32, 0x30, 0x31, 0x34, 0x30, 0x35, 0x30, - 0x34, 0x31, 0x31, 0x35, - 0x37, 0x34, 0x36, 0x5A, 0x18, 0x0F, 0x39, 0x39, 0x39, 0x39, 0x31, 0x32, - 0x33, 0x31, 0x32, 0x33, + 0x73, 0x74, 0x20, 0x43, 0x41, 0x30, 0x22, 0x18, 0x0F, 0x32, 0x30, 0x31, + 0x34, 0x30, 0x35, 0x30, 0x34, 0x31, 0x31, 0x35, 0x37, 0x34, 0x36, 0x5A, + 0x18, 0x0F, 0x39, 0x39, 0x39, 0x39, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5A, 0x30, 0x14, 0x31, 0x12, 0x30, 0x10, 0x06, - 0x03, 0x55, 0x04, 0x03, - 0x13, 0x09, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x68, 0x6F, 0x73, 0x74, 0x30, - 0x59, 0x30, 0x13, 0x06, - 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A, 0x86, - 0x48, 0xCE, 0x3D, 0x03, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x09, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x68, + 0x6F, 0x73, 0x74, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, + 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x4C, 0x54, 0x46, 0xB0, 0x82, 0x30, - 0x2F, 0x08, 0x16, 0xB7, - 0x9F, 0x23, 0xFF, 0xCF, 0xBA, 0x05, 0x0D, 0x8B, 0x6D, 0x18, 0x58, 0xAC, - 0x46, 0xB9, 0xD0, 0x9E, - 0xAB, 0x72, 0x76, 0xF7, 0xC8, 0x0B, 0x3B, 0xD7, 0x6F, 0x6D, 0xC4, 0x97, - 0xFB, 0x0D, 0x88, 0x33, + 0x2F, 0x08, 0x16, 0xB7, 0x9F, 0x23, 0xFF, 0xCF, 0xBA, 0x05, 0x0D, 0x8B, + 0x6D, 0x18, 0x58, 0xAC, 0x46, 0xB9, 0xD0, 0x9E, 0xAB, 0x72, 0x76, 0xF7, + 0xC8, 0x0B, 0x3B, 0xD7, 0x6F, 0x6D, 0xC4, 0x97, 0xFB, 0x0D, 0x88, 0x33, 0xBD, 0x17, 0xE2, 0xFE, 0x43, 0x8B, 0x48, 0x99, 0x60, 0x24, 0x57, 0x9C, - 0xB7, 0x25, 0x6E, 0x71, - 0x4A, 0x3F, 0x03, 0x64, 0xDC, 0xB1, 0xA3, 0x81, 0x8D, 0x30, 0x81, 0x8A, - 0x30, 0x0C, 0x06, 0x03, - 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x02, 0x30, 0x00, 0x30, 0x14, - 0x06, 0x03, 0x55, 0x1D, + 0xB7, 0x25, 0x6E, 0x71, 0x4A, 0x3F, 0x03, 0x64, 0xDC, 0xB1, 0xA3, 0x81, + 0x8D, 0x30, 0x81, 0x8A, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, + 0x01, 0xFF, 0x04, 0x02, 0x30, 0x00, 0x30, 0x14, 0x06, 0x03, 0x55, 0x1D, 0x11, 0x04, 0x0D, 0x30, 0x0B, 0x82, 0x09, 0x6C, 0x6F, 0x63, 0x61, 0x6C, - 0x68, 0x6F, 0x73, 0x74, - 0x30, 0x13, 0x06, 0x03, 0x55, 0x1D, 0x25, 0x04, 0x0C, 0x30, 0x0A, 0x06, - 0x08, 0x2B, 0x06, 0x01, - 0x05, 0x05, 0x07, 0x03, 0x01, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x1D, 0x0F, - 0x01, 0x01, 0xFF, 0x04, + 0x68, 0x6F, 0x73, 0x74, 0x30, 0x13, 0x06, 0x03, 0x55, 0x1D, 0x25, 0x04, + 0x0C, 0x30, 0x0A, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, + 0x01, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x05, 0x03, 0x03, 0x07, 0x80, 0x00, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, - 0x0E, 0x04, 0x16, 0x04, - 0x14, 0xBE, 0xF6, 0x00, 0xC6, 0x24, 0x6B, 0x60, 0xEA, 0xB5, 0xF8, 0x13, - 0xC9, 0xA5, 0xD5, 0xE0, - 0xC9, 0x29, 0xD5, 0xD7, 0x33, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, - 0x04, 0x18, 0x30, 0x16, + 0x0E, 0x04, 0x16, 0x04, 0x14, 0xBE, 0xF6, 0x00, 0xC6, 0x24, 0x6B, 0x60, + 0xEA, 0xB5, 0xF8, 0x13, 0xC9, 0xA5, 0xD5, 0xE0, 0xC9, 0x29, 0xD5, 0xD7, + 0x33, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x4D, 0x56, 0xB7, 0x6A, 0x00, 0x58, 0xF1, 0x67, 0x92, 0xF4, - 0xA6, 0x75, 0x55, 0x1B, - 0x8E, 0x53, 0x01, 0x03, 0xEF, 0xCF, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, - 0x48, 0x86, 0xF7, 0x0D, - 0x01, 0x01, 0x0B, 0x05, 0x00, 0x03, 0x82, 0x01, 0x31, 0x00, 0x63, 0xCD, - 0xAF, 0xA6, 0xFF, 0xCC, + 0xA6, 0x75, 0x55, 0x1B, 0x8E, 0x53, 0x01, 0x03, 0xEF, 0xCF, 0x30, 0x0D, + 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x31, 0x00, 0x63, 0xCD, 0xAF, 0xA6, 0xFF, 0xCC, 0x78, 0x47, 0xE5, 0x00, 0xE3, 0x69, 0xF8, 0xC5, 0x19, 0x47, 0xA0, 0xD7, - 0x0A, 0x95, 0x95, 0x5C, - 0xC7, 0x88, 0x1C, 0x0A, 0x2A, 0x97, 0x1C, 0x7E, 0xC0, 0x0E, 0xBD, 0x3D, - 0xFF, 0x9A, 0xBC, 0x17, - 0x0E, 0xD9, 0xB8, 0x30, 0xDE, 0x84, 0x5F, 0x13, 0xA7, 0xA3, 0xC4, 0xA3, - 0x3F, 0x01, 0x4F, 0x48, + 0x0A, 0x95, 0x95, 0x5C, 0xC7, 0x88, 0x1C, 0x0A, 0x2A, 0x97, 0x1C, 0x7E, + 0xC0, 0x0E, 0xBD, 0x3D, 0xFF, 0x9A, 0xBC, 0x17, 0x0E, 0xD9, 0xB8, 0x30, + 0xDE, 0x84, 0x5F, 0x13, 0xA7, 0xA3, 0xC4, 0xA3, 0x3F, 0x01, 0x4F, 0x48, 0xBB, 0x8A, 0xD2, 0x59, 0x4F, 0x17, 0x6B, 0x99, 0xD7, 0xD7, 0x26, 0xF7, - 0xFB, 0xFB, 0xAB, 0x8F, - 0x79, 0x45, 0x1C, 0x6C, 0x46, 0xD3, 0x4A, 0xB3, 0x39, 0x70, 0xE2, 0x40, - 0x12, 0x02, 0x60, 0xCA, - 0xE9, 0x6E, 0xDB, 0x13, 0xC8, 0x24, 0x46, 0x38, 0xAB, 0x4A, 0xBC, 0xCE, - 0xFF, 0x3C, 0x2D, 0x99, + 0xFB, 0xFB, 0xAB, 0x8F, 0x79, 0x45, 0x1C, 0x6C, 0x46, 0xD3, 0x4A, 0xB3, + 0x39, 0x70, 0xE2, 0x40, 0x12, 0x02, 0x60, 0xCA, 0xE9, 0x6E, 0xDB, 0x13, + 0xC8, 0x24, 0x46, 0x38, 0xAB, 0x4A, 0xBC, 0xCE, 0xFF, 0x3C, 0x2D, 0x99, 0xDC, 0x53, 0xF5, 0xC2, 0x2D, 0x42, 0x3A, 0xA8, 0xB6, 0x3D, 0x4D, 0x1C, - 0x1D, 0x7D, 0xF3, 0x38, - 0x89, 0xC0, 0xDE, 0xCB, 0x90, 0x00, 0x5A, 0x5A, 0xB8, 0xA5, 0x3C, 0x76, - 0xD7, 0x1D, 0x60, 0xE9, - 0x12, 0x31, 0x2B, 0x8C, 0xD3, 0xA0, 0xA0, 0x6B, 0x67, 0x17, 0xE8, 0xAD, - 0x50, 0x87, 0xCA, 0x24, + 0x1D, 0x7D, 0xF3, 0x38, 0x89, 0xC0, 0xDE, 0xCB, 0x90, 0x00, 0x5A, 0x5A, + 0xB8, 0xA5, 0x3C, 0x76, 0xD7, 0x1D, 0x60, 0xE9, 0x12, 0x31, 0x2B, 0x8C, + 0xD3, 0xA0, 0xA0, 0x6B, 0x67, 0x17, 0xE8, 0xAD, 0x50, 0x87, 0xCA, 0x24, 0x74, 0xFD, 0x4E, 0xED, 0x21, 0x10, 0xC1, 0x70, 0x59, 0x7E, 0x2B, 0x9D, - 0x8B, 0x0E, 0xCB, 0x03, - 0xEC, 0xE5, 0x75, 0xC8, 0x1E, 0xB4, 0xAA, 0x1F, 0x81, 0x93, 0x1B, 0x8D, - 0x77, 0xAF, 0x96, 0x83, - 0xBD, 0x03, 0xEC, 0x68, 0x4D, 0xE5, 0x1A, 0x7E, 0x32, 0x78, 0x85, 0x0D, - 0x34, 0xBC, 0x60, 0xE2, + 0x8B, 0x0E, 0xCB, 0x03, 0xEC, 0xE5, 0x75, 0xC8, 0x1E, 0xB4, 0xAA, 0x1F, + 0x81, 0x93, 0x1B, 0x8D, 0x77, 0xAF, 0x96, 0x83, 0xBD, 0x03, 0xEC, 0x68, + 0x4D, 0xE5, 0x1A, 0x7E, 0x32, 0x78, 0x85, 0x0D, 0x34, 0xBC, 0x60, 0xE2, 0xDC, 0x2F, 0x43, 0x42, 0x1D, 0xE5, 0x66, 0xD2, 0x45, 0xAA, 0x86, 0x84, - 0x41, 0xB3, 0x31, 0xA9, - 0xC8, 0x2F, 0xA6, 0x79, 0xC6, 0xA2, 0xBB, 0x7E, 0x08, 0x84, 0x43, 0x14, - 0xBC, 0xB9, 0x30, 0xCA, - 0xA4, 0x46, 0x51, 0xFA, 0x40, 0xF4, 0x09, 0xAC, 0x03, 0xE0, 0xBC, 0xCE, - 0x2C, 0xB3, 0xB4, 0x55, + 0x41, 0xB3, 0x31, 0xA9, 0xC8, 0x2F, 0xA6, 0x79, 0xC6, 0xA2, 0xBB, 0x7E, + 0x08, 0x84, 0x43, 0x14, 0xBC, 0xB9, 0x30, 0xCA, 0xA4, 0x46, 0x51, 0xFA, + 0x40, 0xF4, 0x09, 0xAC, 0x03, 0xE0, 0xBC, 0xCE, 0x2C, 0xB3, 0xB4, 0x55, 0xC7, 0x20, 0x4F, 0xE8, 0xAC, 0xC4, 0x95, 0x81, 0x6B, 0x4B, 0x1C, 0x02, - 0x12, 0xB7, 0xA4, 0x1A, - 0x69, 0x69, 0xF1, 0x7D, 0x97, 0x55, 0xB4, 0x53, 0x40, 0x95, 0x10, 0x3A, - 0x23, 0xE9, 0x43, 0xD3, - 0x62, 0xB7, 0x07, 0xAF, 0xE0, 0xF6, 0x81, 0x47, 0x93, 0x55, 0x1E, 0xE1, - 0x0A, 0x64, 0xAA, 0x62, + 0x12, 0xB7, 0xA4, 0x1A, 0x69, 0x69, 0xF1, 0x7D, 0x97, 0x55, 0xB4, 0x53, + 0x40, 0x95, 0x10, 0x3A, 0x23, 0xE9, 0x43, 0xD3, 0x62, 0xB7, 0x07, 0xAF, + 0xE0, 0xF6, 0x81, 0x47, 0x93, 0x55, 0x1E, 0xE1, 0x0A, 0x64, 0xAA, 0x62, 0x1D, 0x8B, 0xEA, 0xFA, 0xC7, 0x15, 0xA0, 0x8F, 0x88, 0xE0 }; static const uint8_t kECDSAPrivateKeyDER[] = { 0x30, 0x78, 0x02, 0x01, 0x01, 0x04, 0x21, 0x00, 0xDB, 0x98, 0xC6, 0xEB, - 0xDB, 0xC9, 0x68, 0x33, - 0x25, 0x2C, 0x0B, 0xA9, 0xEC, 0x0C, 0x98, 0x4A, 0x3A, 0x01, 0x38, 0xB6, - 0x10, 0x70, 0x4E, 0x24, - 0x5B, 0xAB, 0xB7, 0xD0, 0xB2, 0xC3, 0x99, 0xAB, 0xA0, 0x0A, 0x06, 0x08, - 0x2A, 0x86, 0x48, 0xCE, + 0xDB, 0xC9, 0x68, 0x33, 0x25, 0x2C, 0x0B, 0xA9, 0xEC, 0x0C, 0x98, 0x4A, + 0x3A, 0x01, 0x38, 0xB6, 0x10, 0x70, 0x4E, 0x24, 0x5B, 0xAB, 0xB7, 0xD0, + 0xB2, 0xC3, 0x99, 0xAB, 0xA0, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07, 0xA1, 0x44, 0x03, 0x42, 0x00, 0x04, 0x4C, 0x54, - 0x46, 0xB0, 0x82, 0x30, - 0x2F, 0x08, 0x16, 0xB7, 0x9F, 0x23, 0xFF, 0xCF, 0xBA, 0x05, 0x0D, 0x8B, - 0x6D, 0x18, 0x58, 0xAC, - 0x46, 0xB9, 0xD0, 0x9E, 0xAB, 0x72, 0x76, 0xF7, 0xC8, 0x0B, 0x3B, 0xD7, - 0x6F, 0x6D, 0xC4, 0x97, + 0x46, 0xB0, 0x82, 0x30, 0x2F, 0x08, 0x16, 0xB7, 0x9F, 0x23, 0xFF, 0xCF, + 0xBA, 0x05, 0x0D, 0x8B, 0x6D, 0x18, 0x58, 0xAC, 0x46, 0xB9, 0xD0, 0x9E, + 0xAB, 0x72, 0x76, 0xF7, 0xC8, 0x0B, 0x3B, 0xD7, 0x6F, 0x6D, 0xC4, 0x97, 0xFB, 0x0D, 0x88, 0x33, 0xBD, 0x17, 0xE2, 0xFE, 0x43, 0x8B, 0x48, 0x99, - 0x60, 0x24, 0x57, 0x9C, - 0xB7, 0x25, 0x6E, 0x71, 0x4A, 0x3F, 0x03, 0x64, 0xDC, 0xB1 + 0x60, 0x24, 0x57, 0x9C, 0xB7, 0x25, 0x6E, 0x71, 0x4A, 0x3F, 0x03, 0x64, + 0xDC, 0xB1 }; static const uint8_t kEd25519CertificateDER[] = { @@ -350,13 +318,13 @@ static const uint8_t kEd25519PrivateKeyDER[] = { }; static const uint8_t kEd448PrivateKeyDER[] = { - 0x30, 0x47, 0x02, 0x01, 0x00, 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, 0x71, - 0x04, 0x3b, 0x04, 0x39, 0x0c, 0xf8, 0x7e, 0xb0, 0x94, 0xbf, 0x46, 0xd1, - 0x61, 0xbd, 0xe3, 0xb9, 0x9d, 0x1d, 0x32, 0x85, 0x6f, 0xec, 0xfa, 0xe0, - 0x14, 0x23, 0x92, 0xcd, 0x98, 0xc0, 0x91, 0xdb, 0x20, 0x6d, 0x17, 0x4b, - 0xbf, 0x8e, 0xf4, 0x76, 0xa9, 0xcf, 0x74, 0x6d, 0x94, 0x30, 0x6c, 0x56, - 0x5f, 0x97, 0xac, 0x50, 0x79, 0x6f, 0x02, 0x1e, 0xff, 0x8d, 0x77, 0x9c, - 0xa5 + 0x30, 0x47, 0x02, 0x01, 0x00, 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, + 0x71, 0x04, 0x3b, 0x04, 0x39, 0x0c, 0xf8, 0x7e, 0xb0, 0x94, 0xbf, + 0x46, 0xd1, 0x61, 0xbd, 0xe3, 0xb9, 0x9d, 0x1d, 0x32, 0x85, 0x6f, + 0xec, 0xfa, 0xe0, 0x14, 0x23, 0x92, 0xcd, 0x98, 0xc0, 0x91, 0xdb, + 0x20, 0x6d, 0x17, 0x4b, 0xbf, 0x8e, 0xf4, 0x76, 0xa9, 0xcf, 0x74, + 0x6d, 0x94, 0x30, 0x6c, 0x56, 0x5f, 0x97, 0xac, 0x50, 0x79, 0x6f, + 0x02, 0x1e, 0xff, 0x8d, 0x77, 0x9c, 0xa5 }; static const uint8_t kEd448CertificateDER[] = { @@ -419,17 +387,17 @@ static const uint8_t kEd448CertificateDER[] = { /* Raw public-key key material for testing */ static char rawpk_public_key_pem1[] = - "-----BEGIN PUBLIC KEY-----\n" - "MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAyAeBq7Ti7oVExeVT1PqH\n" - "GBXzC+johdeVnZgZRLhDTIaIGODV5F5JhE4NNb1O/DYLlAy5IIO8tfAE2KIxlarN\n" - "H/+AcfV6ZJQSG4SSmhoIGzfdcdjuBmFfdfhO+z/cgqiewh53/fFCQlaJweHhpmim\n" - "/LVL/M/1Rd6Urskv/5jXGG4FVUNfhXKQag0uzWsqcztCPX7Lrqr2BSOmkA1nWzdo\n" - "h5oBuxdooaH9/kwphqJAp03LwtaSStX/yz6Mh+ZqEbBuM4mWw/xKzbEbs7zA+d8s\n" - "ryHXkC8nsdA+h+IRd8bPa/KuWQNfjxXKNPzgmsZddHmHtYtWvAcoIMvtyO23Y2Nh\n" - "N4V0/7fwFLbZtfUBg4pqUl2ktkdwsNguTT1qzJCsYhsHXaqqvHy+5HR2D0w07y2X\n" - "1qCVmfHzBZCM5OhxoeoauE+xu+5nvYrgsgPE0y5Nty0y2MrApg3digaiKUXrI+mE\n" - "VKn9vsQeaVvw9D6PgNQM99HkbGhRMGPOzcHjS/ZeLd1zAgMBAAE=\n" - "-----END PUBLIC KEY-----"; + "-----BEGIN PUBLIC KEY-----\n" + "MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAyAeBq7Ti7oVExeVT1PqH\n" + "GBXzC+johdeVnZgZRLhDTIaIGODV5F5JhE4NNb1O/DYLlAy5IIO8tfAE2KIxlarN\n" + "H/+AcfV6ZJQSG4SSmhoIGzfdcdjuBmFfdfhO+z/cgqiewh53/fFCQlaJweHhpmim\n" + "/LVL/M/1Rd6Urskv/5jXGG4FVUNfhXKQag0uzWsqcztCPX7Lrqr2BSOmkA1nWzdo\n" + "h5oBuxdooaH9/kwphqJAp03LwtaSStX/yz6Mh+ZqEbBuM4mWw/xKzbEbs7zA+d8s\n" + "ryHXkC8nsdA+h+IRd8bPa/KuWQNfjxXKNPzgmsZddHmHtYtWvAcoIMvtyO23Y2Nh\n" + "N4V0/7fwFLbZtfUBg4pqUl2ktkdwsNguTT1qzJCsYhsHXaqqvHy+5HR2D0w07y2X\n" + "1qCVmfHzBZCM5OhxoeoauE+xu+5nvYrgsgPE0y5Nty0y2MrApg3digaiKUXrI+mE\n" + "VKn9vsQeaVvw9D6PgNQM99HkbGhRMGPOzcHjS/ZeLd1zAgMBAAE=\n" + "-----END PUBLIC KEY-----"; const gnutls_datum_t rawpk_public_key1 = { (unsigned char *)rawpk_public_key_pem1, @@ -437,59 +405,59 @@ const gnutls_datum_t rawpk_public_key1 = { }; static char rawpk_private_key_pem1[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIG4wIBAAKCAYEAyAeBq7Ti7oVExeVT1PqHGBXzC+johdeVnZgZRLhDTIaIGODV\n" - "5F5JhE4NNb1O/DYLlAy5IIO8tfAE2KIxlarNH/+AcfV6ZJQSG4SSmhoIGzfdcdju\n" - "BmFfdfhO+z/cgqiewh53/fFCQlaJweHhpmim/LVL/M/1Rd6Urskv/5jXGG4FVUNf\n" - "hXKQag0uzWsqcztCPX7Lrqr2BSOmkA1nWzdoh5oBuxdooaH9/kwphqJAp03LwtaS\n" - "StX/yz6Mh+ZqEbBuM4mWw/xKzbEbs7zA+d8sryHXkC8nsdA+h+IRd8bPa/KuWQNf\n" - "jxXKNPzgmsZddHmHtYtWvAcoIMvtyO23Y2NhN4V0/7fwFLbZtfUBg4pqUl2ktkdw\n" - "sNguTT1qzJCsYhsHXaqqvHy+5HR2D0w07y2X1qCVmfHzBZCM5OhxoeoauE+xu+5n\n" - "vYrgsgPE0y5Nty0y2MrApg3digaiKUXrI+mEVKn9vsQeaVvw9D6PgNQM99HkbGhR\n" - "MGPOzcHjS/ZeLd1zAgMBAAECggGBALHiAw3Yscqd11gJpbCMDqF7u4VG3alQ26un\n" - "PClhl++w380H/Q62TriK1LKKpHgj8834NpXUsXg2d4jTTDcmCn6/L9GoFOzmxOeV\n" - "0O2b4sOZvaNl397qrwLxDAPhec7z9yL4B4tcBqmJ3b3+izX6cS3gaC/uG9fDpgN9\n" - "xOKPYBFInhOB86twAz9cc9eXysto0nJvlODDBj/xwUjvso9qydl1Or7PhWvf7Ek+\n" - "H9ur5MUjqOWe/b/xaSWsfTrJzF/ovbRnGbXLIpozIx609TZS4wYSqU5FUjkL0zTB\n" - "bTdb3jgFm/5SHnnThD67zbZavCxiN9wiTs3zeGlxYf8hMeaTkOYiAOR4/1bOTe2J\n" - "ttRA1EcY+i6H0+JOtLkqwj5ka0m3lrH2KD3E/mHs1yfERQx7VVjw9IpeAKmi5lzQ\n" - "v1lhIXiv75Mb0NMsCknGYPLHCyOY5aA2dhR8Wnr67gOYu3ssexLzMKczk5OTzl5c\n" - "PRHJRXDpJqgOYWujF99uCYhnxonO4QKBwQDUQB0s4shWTyOylq7j4rCSbHf2zHDf\n" - "HBYC75wyjQECNQXNk6hp5jJz2BC0XvnO7PYSRXaVauMc/S3V7V7GMsry3uugfwLy\n" - "XNnyRVY4voe5SNt/WAArybNsPNPEIPzgkZmeWvcpoY8ESufPfVW54BvGHt3YjPjI\n" - "gYmFUkpPRUWXfji91NpTlIrsP6jtBTYXGV4kVm+TawP06a6FdCjJQaI7Nm2dwUiX\n" - "Cmf4oFSo8mGxi0wimX+BiLJep2bYnUF2gqMCgcEA8UKESDX3jBpyz59vpSjmfpw1\n" - "AnlEfR6s83W92m0HfEYLulfxq9xA2zaQjy4GbaKVRfLrO2Pj3bZWs89RGXTQVGgq\n" - "ztCLIRsL+M1SQ883e8yx4jwFaqIM+pPpvAjOOOTdpgY33h7w20tgrbzVKeOl1ghC\n" - "IZ+K8C/tIGZXI5/TYppl7csIOoYRtzuRpyDE0tmwy658RfyxzEtfLxJoaLiFXOE0\n" - "zFFrEvT/jto4jN+cwsdnHhxrY9+bVNUNyb9ZH7bxAoHARvcIyjEo+nKLZPKsltT8\n" - "ZHiPw5ynQHGLin/CocQzSiGgRxPPg1jMFZ9wNl5q95ySyZkgBOUv+klMQfKTdYEW\n" - "Cg4uigLtYUtaM36rTV2m03RgrzslE37k1pOf2juNUShdTGztpqW1w6Gnz+AAAZ3E\n" - "q4E2e2jm5WMqL8FLxyVKF1TEc/Pu63MG3+aI/HZ5l0+MAmpD8+4b7I8VItmrqV6g\n" - "d1vDWrN9KcL48E/q/nHL6CjC0+6uiwjBWpRt9o7djFoxAoHAJzK/e1wJVGIXtVQa\n" - "N6Nlj7yhgD1ju1B4mTXQGuUMCkz3KtePFHU8tGExK5I2ySlZR3wobAXWx/cQLzbH\n" - "3nL0RkKGcgPAFyjl0Q7LBulsAllHrZJC7whVQ4E0wLBNkUDeIlNwUE6Go5qjopbD\n" - "q4KpNxUwaXYahNvEkzcNgWQ+XA7p8LDELX4K8tJi39ybHgbwiqdW2ags2xyD4ooD\n" - "HMCeKnEMuwWfd/0GaJdcCMdsGNl9D49eg2OZQTc8fkLwoA6BAoHATQdk3VZwGGn/\n" - "93p9vu189alkshTmir+SOo/ufH5U+j7t8cPeT7psuYAPZWS+Z6KEzvHxj54pAvcp\n" - "mlAngD3+AfHDn/VAtYv5HVcpZ+K2K0X4v8N5HGIubgaebs2oVNz+RAWnd8K2drDG\n" - "NcJV3C+zLziTCwvpGCIy3T/lHjKe+YczjGfhg2e6PgfwhTqPAjuhUZ8wScYo7l7V\n" - "zAhlSL0665IXJ32zX+3LyQFDbkB6pbKy5TU+rX3DmDyj3MSbc3kR\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIIG4wIBAAKCAYEAyAeBq7Ti7oVExeVT1PqHGBXzC+johdeVnZgZRLhDTIaIGODV\n" + "5F5JhE4NNb1O/DYLlAy5IIO8tfAE2KIxlarNH/+AcfV6ZJQSG4SSmhoIGzfdcdju\n" + "BmFfdfhO+z/cgqiewh53/fFCQlaJweHhpmim/LVL/M/1Rd6Urskv/5jXGG4FVUNf\n" + "hXKQag0uzWsqcztCPX7Lrqr2BSOmkA1nWzdoh5oBuxdooaH9/kwphqJAp03LwtaS\n" + "StX/yz6Mh+ZqEbBuM4mWw/xKzbEbs7zA+d8sryHXkC8nsdA+h+IRd8bPa/KuWQNf\n" + "jxXKNPzgmsZddHmHtYtWvAcoIMvtyO23Y2NhN4V0/7fwFLbZtfUBg4pqUl2ktkdw\n" + "sNguTT1qzJCsYhsHXaqqvHy+5HR2D0w07y2X1qCVmfHzBZCM5OhxoeoauE+xu+5n\n" + "vYrgsgPE0y5Nty0y2MrApg3digaiKUXrI+mEVKn9vsQeaVvw9D6PgNQM99HkbGhR\n" + "MGPOzcHjS/ZeLd1zAgMBAAECggGBALHiAw3Yscqd11gJpbCMDqF7u4VG3alQ26un\n" + "PClhl++w380H/Q62TriK1LKKpHgj8834NpXUsXg2d4jTTDcmCn6/L9GoFOzmxOeV\n" + "0O2b4sOZvaNl397qrwLxDAPhec7z9yL4B4tcBqmJ3b3+izX6cS3gaC/uG9fDpgN9\n" + "xOKPYBFInhOB86twAz9cc9eXysto0nJvlODDBj/xwUjvso9qydl1Or7PhWvf7Ek+\n" + "H9ur5MUjqOWe/b/xaSWsfTrJzF/ovbRnGbXLIpozIx609TZS4wYSqU5FUjkL0zTB\n" + "bTdb3jgFm/5SHnnThD67zbZavCxiN9wiTs3zeGlxYf8hMeaTkOYiAOR4/1bOTe2J\n" + "ttRA1EcY+i6H0+JOtLkqwj5ka0m3lrH2KD3E/mHs1yfERQx7VVjw9IpeAKmi5lzQ\n" + "v1lhIXiv75Mb0NMsCknGYPLHCyOY5aA2dhR8Wnr67gOYu3ssexLzMKczk5OTzl5c\n" + "PRHJRXDpJqgOYWujF99uCYhnxonO4QKBwQDUQB0s4shWTyOylq7j4rCSbHf2zHDf\n" + "HBYC75wyjQECNQXNk6hp5jJz2BC0XvnO7PYSRXaVauMc/S3V7V7GMsry3uugfwLy\n" + "XNnyRVY4voe5SNt/WAArybNsPNPEIPzgkZmeWvcpoY8ESufPfVW54BvGHt3YjPjI\n" + "gYmFUkpPRUWXfji91NpTlIrsP6jtBTYXGV4kVm+TawP06a6FdCjJQaI7Nm2dwUiX\n" + "Cmf4oFSo8mGxi0wimX+BiLJep2bYnUF2gqMCgcEA8UKESDX3jBpyz59vpSjmfpw1\n" + "AnlEfR6s83W92m0HfEYLulfxq9xA2zaQjy4GbaKVRfLrO2Pj3bZWs89RGXTQVGgq\n" + "ztCLIRsL+M1SQ883e8yx4jwFaqIM+pPpvAjOOOTdpgY33h7w20tgrbzVKeOl1ghC\n" + "IZ+K8C/tIGZXI5/TYppl7csIOoYRtzuRpyDE0tmwy658RfyxzEtfLxJoaLiFXOE0\n" + "zFFrEvT/jto4jN+cwsdnHhxrY9+bVNUNyb9ZH7bxAoHARvcIyjEo+nKLZPKsltT8\n" + "ZHiPw5ynQHGLin/CocQzSiGgRxPPg1jMFZ9wNl5q95ySyZkgBOUv+klMQfKTdYEW\n" + "Cg4uigLtYUtaM36rTV2m03RgrzslE37k1pOf2juNUShdTGztpqW1w6Gnz+AAAZ3E\n" + "q4E2e2jm5WMqL8FLxyVKF1TEc/Pu63MG3+aI/HZ5l0+MAmpD8+4b7I8VItmrqV6g\n" + "d1vDWrN9KcL48E/q/nHL6CjC0+6uiwjBWpRt9o7djFoxAoHAJzK/e1wJVGIXtVQa\n" + "N6Nlj7yhgD1ju1B4mTXQGuUMCkz3KtePFHU8tGExK5I2ySlZR3wobAXWx/cQLzbH\n" + "3nL0RkKGcgPAFyjl0Q7LBulsAllHrZJC7whVQ4E0wLBNkUDeIlNwUE6Go5qjopbD\n" + "q4KpNxUwaXYahNvEkzcNgWQ+XA7p8LDELX4K8tJi39ybHgbwiqdW2ags2xyD4ooD\n" + "HMCeKnEMuwWfd/0GaJdcCMdsGNl9D49eg2OZQTc8fkLwoA6BAoHATQdk3VZwGGn/\n" + "93p9vu189alkshTmir+SOo/ufH5U+j7t8cPeT7psuYAPZWS+Z6KEzvHxj54pAvcp\n" + "mlAngD3+AfHDn/VAtYv5HVcpZ+K2K0X4v8N5HGIubgaebs2oVNz+RAWnd8K2drDG\n" + "NcJV3C+zLziTCwvpGCIy3T/lHjKe+YczjGfhg2e6PgfwhTqPAjuhUZ8wScYo7l7V\n" + "zAhlSL0665IXJ32zX+3LyQFDbkB6pbKy5TU+rX3DmDyj3MSbc3kR\n" + "-----END RSA PRIVATE KEY-----\n"; const gnutls_datum_t rawpk_private_key1 = { (unsigned char *)rawpk_private_key_pem1, sizeof(rawpk_private_key_pem1) - 1 }; -# define IGNORE_CERTS \ - (void) kEd25519PrivateKeyDER; \ - (void) kEd25519CertificateDER; \ - (void) kEd448PrivateKeyDER; \ - (void) kEd448CertificateDER; \ - (void) kECDSAPrivateKeyDER; \ - (void) kECDSACertificateDER; \ - (void) kRSAPrivateKeyDER; \ - (void) kRSACertificateDER +#define IGNORE_CERTS \ + (void)kEd25519PrivateKeyDER; \ + (void)kEd25519CertificateDER; \ + (void)kEd448PrivateKeyDER; \ + (void)kEd448CertificateDER; \ + (void)kECDSAPrivateKeyDER; \ + (void)kECDSACertificateDER; \ + (void)kRSAPrivateKeyDER; \ + (void)kRSACertificateDER #endif diff --git a/fuzz/fuzzer.h b/fuzz/fuzzer.h index 66141adddc..f6cc3efc02 100644 --- a/fuzz/fuzzer.h +++ b/fuzz/fuzzer.h @@ -15,19 +15,21 @@ * along with gnutls. If not, see . */ -#include // size_t -#include // uint8_t +#include // size_t +#include // uint8_t #include #if defined __clang__ || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) -# pragma GCC diagnostic ignored "-Wvla-larger-than=" +#pragma GCC diagnostic ignored "-Wvla-larger-than=" #endif #ifdef __cplusplus extern "C" #endif -#define VERS_STR "-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0:+VERS-SSL3.0" -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size); +#define VERS_STR \ + "-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0:+VERS-SSL3.0" + int + LLVMFuzzerTestOneInput(const uint8_t *data, size_t size); static void __attribute__((constructor)) init(void) { diff --git a/fuzz/gnutls_base64_decoder_fuzzer.c b/fuzz/gnutls_base64_decoder_fuzzer.c index 8cc8bc8c1f..8f71e0226d 100644 --- a/fuzz/gnutls_base64_decoder_fuzzer.c +++ b/fuzz/gnutls_base64_decoder_fuzzer.c @@ -21,9 +21,9 @@ #include #include "fuzzer.h" -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { - gnutls_datum_t raw = {.data = (unsigned char *)data,.size = size }; + gnutls_datum_t raw = { .data = (unsigned char *)data, .size = size }; gnutls_datum_t out; unsigned char result[50]; size_t result_size = sizeof(result); diff --git a/fuzz/gnutls_base64_encoder_fuzzer.c b/fuzz/gnutls_base64_encoder_fuzzer.c index 07c2017bf3..0f178c3bb0 100644 --- a/fuzz/gnutls_base64_encoder_fuzzer.c +++ b/fuzz/gnutls_base64_encoder_fuzzer.c @@ -21,9 +21,9 @@ #include #include "fuzzer.h" -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { - gnutls_datum_t raw = {.data = (unsigned char *)data,.size = size }; + gnutls_datum_t raw = { .data = (unsigned char *)data, .size = size }; gnutls_datum_t out; char result[50]; size_t result_size = sizeof(result); diff --git a/fuzz/gnutls_client_fuzzer.c b/fuzz/gnutls_client_fuzzer.c index 7c3b62168a..a6ad995cce 100644 --- a/fuzz/gnutls_client_fuzzer.c +++ b/fuzz/gnutls_client_fuzzer.c @@ -30,7 +30,7 @@ #include "mem.h" #include "fuzzer.h" -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { int res; gnutls_session_t session; @@ -46,10 +46,8 @@ int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) assert(res >= 0); /*res = gnutls_set_default_priority(session); */ - res = - gnutls_priority_set_direct(session, - "NORMAL:+SIGN-EDDSA-ED448:" VERS_STR, - NULL); + res = gnutls_priority_set_direct( + session, "NORMAL:+SIGN-EDDSA-ED448:" VERS_STR, NULL); assert(res >= 0); memdata.data = data; diff --git a/fuzz/gnutls_client_rawpk_fuzzer.c b/fuzz/gnutls_client_rawpk_fuzzer.c index 9302ac7453..a945002c32 100644 --- a/fuzz/gnutls_client_rawpk_fuzzer.c +++ b/fuzz/gnutls_client_rawpk_fuzzer.c @@ -51,7 +51,7 @@ #include "mem.h" #include "fuzzer.h" -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { IGNORE_CERTS; int res; @@ -65,26 +65,23 @@ int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) res = gnutls_certificate_allocate_credentials(&rawpk_cred); assert(res >= 0); - res = - gnutls_certificate_set_rawpk_key_mem(rawpk_cred, - &rawpk_public_key1, - &rawpk_private_key1, - GNUTLS_X509_FMT_PEM, - NULL, 0, NULL, 0, 0); + res = gnutls_certificate_set_rawpk_key_mem( + rawpk_cred, &rawpk_public_key1, &rawpk_private_key1, + GNUTLS_X509_FMT_PEM, NULL, 0, NULL, 0, 0); assert(res >= 0); gnutls_certificate_set_known_dh_params(rawpk_cred, GNUTLS_SEC_PARAM_MEDIUM); - res = - gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, rawpk_cred); + res = gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, + rawpk_cred); assert(res >= 0); - res = - gnutls_priority_set_direct(session, - "NORMAL:" VERS_STR - ":-CTYPE-ALL:+CTYPE-CLI-RAWPK:+CTYPE-SRV-RAWPK", - NULL); + res = gnutls_priority_set_direct( + session, + "NORMAL:" VERS_STR + ":-CTYPE-ALL:+CTYPE-CLI-RAWPK:+CTYPE-SRV-RAWPK", + NULL); assert(res >= 0); memdata.data = data; diff --git a/fuzz/gnutls_dn_parser_fuzzer.c b/fuzz/gnutls_dn_parser_fuzzer.c index 4c7e3d6511..ccaa722990 100644 --- a/fuzz/gnutls_dn_parser_fuzzer.c +++ b/fuzz/gnutls_dn_parser_fuzzer.c @@ -24,7 +24,7 @@ #include "fuzzer.h" -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { gnutls_datum_t out, raw; gnutls_x509_dn_t dn; @@ -48,7 +48,7 @@ int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) gnutls_free(out.data); - cleanup: +cleanup: gnutls_x509_dn_deinit(dn); return 0; } diff --git a/fuzz/gnutls_ext_raw_parse_fuzzer.c b/fuzz/gnutls_ext_raw_parse_fuzzer.c index d97e1f7885..b0ae78d0fd 100644 --- a/fuzz/gnutls_ext_raw_parse_fuzzer.c +++ b/fuzz/gnutls_ext_raw_parse_fuzzer.c @@ -26,14 +26,13 @@ #include "fuzzer.h" -static -int cb(void *ctx, unsigned tls_id, const unsigned char *data, - unsigned data_size) +static int cb(void *ctx, unsigned tls_id, const unsigned char *data, + unsigned data_size) { return 0; } -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { gnutls_datum_t raw; diff --git a/fuzz/gnutls_handshake_client_fuzzer.c b/fuzz/gnutls_handshake_client_fuzzer.c index dec0305cc1..35cbc5b1ac 100644 --- a/fuzz/gnutls_handshake_client_fuzzer.c +++ b/fuzz/gnutls_handshake_client_fuzzer.c @@ -32,7 +32,7 @@ #include "fuzzer.h" int __attribute__((visibility("protected"))) - gnutls_rnd(gnutls_rnd_level_t level, void *data, size_t len) +gnutls_rnd(gnutls_rnd_level_t level, void *data, size_t len) { memset(data, 0xff, len); @@ -43,7 +43,7 @@ int __attribute__((visibility("protected"))) return 0; } -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { int res; gnutls_session_t session; @@ -60,10 +60,8 @@ int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) assert(res >= 0); /*res = gnutls_set_default_priority(session); */ - res = - gnutls_priority_set_direct(session, - "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", - NULL); + res = gnutls_priority_set_direct( + session, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", NULL); assert(res >= 0); memdata.data = data; diff --git a/fuzz/gnutls_handshake_server_fuzzer.c b/fuzz/gnutls_handshake_server_fuzzer.c index de9e1197e3..89c4292be0 100644 --- a/fuzz/gnutls_handshake_server_fuzzer.c +++ b/fuzz/gnutls_handshake_server_fuzzer.c @@ -30,7 +30,7 @@ #include "fuzzer.h" int __attribute__((visibility("protected"))) - gnutls_rnd(gnutls_rnd_level_t level, void *data, size_t len) +gnutls_rnd(gnutls_rnd_level_t level, void *data, size_t len) { memset(data, 0xff, len); @@ -41,7 +41,7 @@ int __attribute__((visibility("protected"))) return 0; } -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { int res; gnutls_datum_t rsa_cert, rsa_key; @@ -79,25 +79,20 @@ int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) ed448_key.data = (unsigned char *)kEd448PrivateKeyDER; ed448_key.size = sizeof(kEd448PrivateKeyDER); - res = - gnutls_certificate_set_x509_key_mem(xcred, &rsa_cert, &rsa_key, - GNUTLS_X509_FMT_DER); + res = gnutls_certificate_set_x509_key_mem(xcred, &rsa_cert, &rsa_key, + GNUTLS_X509_FMT_DER); assert(res >= 0); - res = - gnutls_certificate_set_x509_key_mem(xcred, &ecdsa_cert, &ecdsa_key, - GNUTLS_X509_FMT_DER); + res = gnutls_certificate_set_x509_key_mem( + xcred, &ecdsa_cert, &ecdsa_key, GNUTLS_X509_FMT_DER); assert(res >= 0); - res = - gnutls_certificate_set_x509_key_mem(xcred, &ed25519_cert, - &ed25519_key, - GNUTLS_X509_FMT_DER); + res = gnutls_certificate_set_x509_key_mem( + xcred, &ed25519_cert, &ed25519_key, GNUTLS_X509_FMT_DER); assert(res >= 0); - res = - gnutls_certificate_set_x509_key_mem(xcred, &ed448_cert, &ed448_key, - GNUTLS_X509_FMT_DER); + res = gnutls_certificate_set_x509_key_mem( + xcred, &ed448_cert, &ed448_key, GNUTLS_X509_FMT_DER); assert(res >= 0); gnutls_certificate_set_known_dh_params(xcred, GNUTLS_SEC_PARAM_MEDIUM); @@ -106,10 +101,8 @@ int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) assert(res >= 0); /*res = gnutls_set_default_priority(session); */ - res = - gnutls_priority_set_direct(session, - "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", - NULL); + res = gnutls_priority_set_direct( + session, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", NULL); assert(res >= 0); memdata.data = data; diff --git a/fuzz/gnutls_idna_parser_fuzzer.c b/fuzz/gnutls_idna_parser_fuzzer.c index 5c7c6a0d13..cd72d6cf7a 100644 --- a/fuzz/gnutls_idna_parser_fuzzer.c +++ b/fuzz/gnutls_idna_parser_fuzzer.c @@ -25,7 +25,7 @@ #include "fuzzer.h" -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { gnutls_datum_t out; diff --git a/fuzz/gnutls_ocsp_req_parser_fuzzer.c b/fuzz/gnutls_ocsp_req_parser_fuzzer.c index b317dc315a..17c945d807 100644 --- a/fuzz/gnutls_ocsp_req_parser_fuzzer.c +++ b/fuzz/gnutls_ocsp_req_parser_fuzzer.c @@ -24,7 +24,7 @@ #include "fuzzer.h" -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { gnutls_datum_t raw; gnutls_datum_t out; diff --git a/fuzz/gnutls_ocsp_resp_parser_fuzzer.c b/fuzz/gnutls_ocsp_resp_parser_fuzzer.c index f0e6fbea66..003f273a21 100644 --- a/fuzz/gnutls_ocsp_resp_parser_fuzzer.c +++ b/fuzz/gnutls_ocsp_resp_parser_fuzzer.c @@ -24,7 +24,7 @@ #include "fuzzer.h" -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { gnutls_datum_t raw; gnutls_datum_t out; @@ -39,8 +39,8 @@ int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) ret = gnutls_ocsp_resp_import(resp, &raw); if (ret >= 0) { - ret = - gnutls_ocsp_resp_print(resp, GNUTLS_OCSP_PRINT_FULL, &out); + ret = gnutls_ocsp_resp_print(resp, GNUTLS_OCSP_PRINT_FULL, + &out); assert(ret >= 0); gnutls_free(out.data); } diff --git a/fuzz/gnutls_pkcs12_key_parser_fuzzer.c b/fuzz/gnutls_pkcs12_key_parser_fuzzer.c index ffa2cdaa33..b731a09667 100644 --- a/fuzz/gnutls_pkcs12_key_parser_fuzzer.c +++ b/fuzz/gnutls_pkcs12_key_parser_fuzzer.c @@ -24,7 +24,7 @@ #include "fuzzer.h" -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { gnutls_datum_t raw = { (unsigned char *)data, (unsigned int)size }; gnutls_pkcs12_t p12; @@ -49,9 +49,8 @@ int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) /* catch crashes */ gnutls_pkcs12_verify_mac(p12, "1234"); - ret = - gnutls_pkcs12_simple_parse(p12, "1234", &key, &chain, &chain_len, - &extras, &extras_len, &crl, 0); + ret = gnutls_pkcs12_simple_parse(p12, "1234", &key, &chain, &chain_len, + &extras, &extras_len, &crl, 0); if (ret >= 0) { gnutls_x509_privkey_deinit(key); if (crl) @@ -68,7 +67,7 @@ int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) } } - cleanup: +cleanup: gnutls_pkcs12_deinit(p12); return 0; } diff --git a/fuzz/gnutls_pkcs7_parser_fuzzer.c b/fuzz/gnutls_pkcs7_parser_fuzzer.c index 570f3065d4..92f1f33d3f 100644 --- a/fuzz/gnutls_pkcs7_parser_fuzzer.c +++ b/fuzz/gnutls_pkcs7_parser_fuzzer.c @@ -24,7 +24,7 @@ #include "fuzzer.h" -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { gnutls_datum_t raw; gnutls_datum_t out; diff --git a/fuzz/gnutls_pkcs8_key_parser_fuzzer.c b/fuzz/gnutls_pkcs8_key_parser_fuzzer.c index 8e86682a92..97379620d2 100644 --- a/fuzz/gnutls_pkcs8_key_parser_fuzzer.c +++ b/fuzz/gnutls_pkcs8_key_parser_fuzzer.c @@ -24,7 +24,7 @@ #include "fuzzer.h" -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { gnutls_datum_t raw; gnutls_x509_privkey_t key; @@ -37,9 +37,8 @@ int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) ret = gnutls_x509_privkey_init(&key); assert(ret >= 0); - ret = - gnutls_x509_privkey_import_pkcs8(key, &raw, GNUTLS_X509_FMT_DER, - "password", 0); + ret = gnutls_x509_privkey_import_pkcs8(key, &raw, GNUTLS_X509_FMT_DER, + "password", 0); if (ret < 0) { goto cleanup; } @@ -52,7 +51,7 @@ int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) gnutls_free(out.data); - cleanup: +cleanup: gnutls_x509_privkey_deinit(key); return 0; } diff --git a/fuzz/gnutls_private_key_parser_fuzzer.c b/fuzz/gnutls_private_key_parser_fuzzer.c index 8260dc5254..c7d4a7b526 100644 --- a/fuzz/gnutls_private_key_parser_fuzzer.c +++ b/fuzz/gnutls_private_key_parser_fuzzer.c @@ -24,7 +24,7 @@ #include "fuzzer.h" -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { gnutls_datum_t raw; gnutls_x509_privkey_t key; diff --git a/fuzz/gnutls_psk_client_fuzzer.c b/fuzz/gnutls_psk_client_fuzzer.c index 31ec258bc6..65ece84cff 100644 --- a/fuzz/gnutls_psk_client_fuzzer.c +++ b/fuzz/gnutls_psk_client_fuzzer.c @@ -35,7 +35,7 @@ #include "mem.h" #include "fuzzer.h" -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { int res; gnutls_session_t session; @@ -52,18 +52,16 @@ int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) res = gnutls_psk_allocate_client_credentials(&pcred); assert(res >= 0); - res = - gnutls_psk_set_client_credentials(pcred, "test", &psk_key, - GNUTLS_PSK_KEY_RAW); + res = gnutls_psk_set_client_credentials(pcred, "test", &psk_key, + GNUTLS_PSK_KEY_RAW); assert(res >= 0); res = gnutls_credentials_set(session, GNUTLS_CRD_PSK, pcred); assert(res >= 0); - res = - gnutls_priority_set_direct(session, - "NORMAL:-KX-ALL:+ECDHE-PSK:+DHE-PSK:+PSK:" - VERS_STR, NULL); + res = gnutls_priority_set_direct( + session, "NORMAL:-KX-ALL:+ECDHE-PSK:+DHE-PSK:+PSK:" VERS_STR, + NULL); assert(res >= 0); memdata.data = data; diff --git a/fuzz/gnutls_psk_server_fuzzer.c b/fuzz/gnutls_psk_server_fuzzer.c index a4b8007fdb..f5a123fc03 100644 --- a/fuzz/gnutls_psk_server_fuzzer.c +++ b/fuzz/gnutls_psk_server_fuzzer.c @@ -35,7 +35,7 @@ #include "fuzzer.h" static int psk_cb(gnutls_session_t session, const char *username, - gnutls_datum_t * key) + gnutls_datum_t *key) { key->data = (unsigned char *)gnutls_malloc(16); assert(key->data != NULL); @@ -46,7 +46,7 @@ static int psk_cb(gnutls_session_t session, const char *username, return 0; } -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { int res; gnutls_datum_t rsa_cert, rsa_key; @@ -90,25 +90,20 @@ int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) ed448_key.data = (unsigned char *)kEd448PrivateKeyDER; ed448_key.size = sizeof(kEd448PrivateKeyDER); - res = - gnutls_certificate_set_x509_key_mem(xcred, &rsa_cert, &rsa_key, - GNUTLS_X509_FMT_DER); + res = gnutls_certificate_set_x509_key_mem(xcred, &rsa_cert, &rsa_key, + GNUTLS_X509_FMT_DER); assert(res >= 0); - res = - gnutls_certificate_set_x509_key_mem(xcred, &ecdsa_cert, &ecdsa_key, - GNUTLS_X509_FMT_DER); + res = gnutls_certificate_set_x509_key_mem( + xcred, &ecdsa_cert, &ecdsa_key, GNUTLS_X509_FMT_DER); assert(res >= 0); - res = - gnutls_certificate_set_x509_key_mem(xcred, &ed25519_cert, - &ed25519_key, - GNUTLS_X509_FMT_DER); + res = gnutls_certificate_set_x509_key_mem( + xcred, &ed25519_cert, &ed25519_key, GNUTLS_X509_FMT_DER); assert(res >= 0); - res = - gnutls_certificate_set_x509_key_mem(xcred, &ed448_cert, &ed448_key, - GNUTLS_X509_FMT_DER); + res = gnutls_certificate_set_x509_key_mem( + xcred, &ed448_cert, &ed448_key, GNUTLS_X509_FMT_DER); assert(res >= 0); gnutls_certificate_set_known_dh_params(xcred, GNUTLS_SEC_PARAM_MEDIUM); @@ -119,10 +114,10 @@ int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) res = gnutls_credentials_set(session, GNUTLS_CRD_PSK, pcred); assert(res >= 0); - res = - gnutls_priority_set_direct(session, - "NORMAL:-KX-ALL:+ECDHE-PSK:+DHE-PSK:+PSK:+RSA-PSK:" - VERS_STR, NULL); + res = gnutls_priority_set_direct( + session, + "NORMAL:-KX-ALL:+ECDHE-PSK:+DHE-PSK:+PSK:+RSA-PSK:" VERS_STR, + NULL); assert(res >= 0); memdata.data = data; diff --git a/fuzz/gnutls_reverse_idna_parser_fuzzer.c b/fuzz/gnutls_reverse_idna_parser_fuzzer.c index 00402e05e4..34310d9deb 100644 --- a/fuzz/gnutls_reverse_idna_parser_fuzzer.c +++ b/fuzz/gnutls_reverse_idna_parser_fuzzer.c @@ -25,7 +25,7 @@ #include "fuzzer.h" -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { gnutls_datum_t out; int ret; @@ -37,6 +37,6 @@ int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) assert(out.size == strlen((char *)out.data)); gnutls_free(out.data); - cleanup: +cleanup: return 0; } diff --git a/fuzz/gnutls_server_fuzzer.c b/fuzz/gnutls_server_fuzzer.c index 6ceeb8340c..c5a363fcc6 100644 --- a/fuzz/gnutls_server_fuzzer.c +++ b/fuzz/gnutls_server_fuzzer.c @@ -28,7 +28,7 @@ #include "mem.h" #include "fuzzer.h" -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { int res; gnutls_datum_t rsa_cert, rsa_key; @@ -65,25 +65,20 @@ int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) ed448_key.data = (unsigned char *)kEd448PrivateKeyDER; ed448_key.size = sizeof(kEd448PrivateKeyDER); - res = - gnutls_certificate_set_x509_key_mem(xcred, &rsa_cert, &rsa_key, - GNUTLS_X509_FMT_DER); + res = gnutls_certificate_set_x509_key_mem(xcred, &rsa_cert, &rsa_key, + GNUTLS_X509_FMT_DER); assert(res >= 0); - res = - gnutls_certificate_set_x509_key_mem(xcred, &ecdsa_cert, &ecdsa_key, - GNUTLS_X509_FMT_DER); + res = gnutls_certificate_set_x509_key_mem( + xcred, &ecdsa_cert, &ecdsa_key, GNUTLS_X509_FMT_DER); assert(res >= 0); - res = - gnutls_certificate_set_x509_key_mem(xcred, &ed25519_cert, - &ed25519_key, - GNUTLS_X509_FMT_DER); + res = gnutls_certificate_set_x509_key_mem( + xcred, &ed25519_cert, &ed25519_key, GNUTLS_X509_FMT_DER); assert(res >= 0); - res = - gnutls_certificate_set_x509_key_mem(xcred, &ed448_cert, &ed448_key, - GNUTLS_X509_FMT_DER); + res = gnutls_certificate_set_x509_key_mem( + xcred, &ed448_cert, &ed448_key, GNUTLS_X509_FMT_DER); assert(res >= 0); gnutls_certificate_set_known_dh_params(xcred, GNUTLS_SEC_PARAM_MEDIUM); @@ -92,10 +87,8 @@ int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) assert(res >= 0); /*res = gnutls_set_default_priority(session); */ - res = - gnutls_priority_set_direct(session, - "NORMAL:+SIGN-EDDSA-ED448:" VERS_STR, - NULL); + res = gnutls_priority_set_direct( + session, "NORMAL:+SIGN-EDDSA-ED448:" VERS_STR, NULL); assert(res >= 0); memdata.data = data; diff --git a/fuzz/gnutls_server_rawpk_fuzzer.c b/fuzz/gnutls_server_rawpk_fuzzer.c index 0ac40e5920..940599ceed 100644 --- a/fuzz/gnutls_server_rawpk_fuzzer.c +++ b/fuzz/gnutls_server_rawpk_fuzzer.c @@ -48,7 +48,7 @@ #include "mem.h" #include "fuzzer.h" -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { IGNORE_CERTS; int res; @@ -62,26 +62,23 @@ int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) res = gnutls_certificate_allocate_credentials(&rawpk_cred); assert(res >= 0); - res = - gnutls_certificate_set_rawpk_key_mem(rawpk_cred, - &rawpk_public_key1, - &rawpk_private_key1, - GNUTLS_X509_FMT_PEM, - NULL, 0, NULL, 0, 0); + res = gnutls_certificate_set_rawpk_key_mem( + rawpk_cred, &rawpk_public_key1, &rawpk_private_key1, + GNUTLS_X509_FMT_PEM, NULL, 0, NULL, 0, 0); assert(res >= 0); gnutls_certificate_set_known_dh_params(rawpk_cred, GNUTLS_SEC_PARAM_MEDIUM); - res = - gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, rawpk_cred); + res = gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, + rawpk_cred); assert(res >= 0); - res = - gnutls_priority_set_direct(session, - "NORMAL:" VERS_STR - ":-CTYPE-ALL:+CTYPE-CLI-RAWPK:+CTYPE-SRV-RAWPK", - NULL); + res = gnutls_priority_set_direct( + session, + "NORMAL:" VERS_STR + ":-CTYPE-ALL:+CTYPE-CLI-RAWPK:+CTYPE-SRV-RAWPK", + NULL); assert(res >= 0); memdata.data = data; diff --git a/fuzz/gnutls_set_trust_file_fuzzer.c b/fuzz/gnutls_set_trust_file_fuzzer.c index c5dec58258..21c51e6471 100644 --- a/fuzz/gnutls_set_trust_file_fuzzer.c +++ b/fuzz/gnutls_set_trust_file_fuzzer.c @@ -26,14 +26,15 @@ static const uint8_t *g_data; static size_t g_size; -#if ! defined _WIN32 && defined HAVE_FMEMOPEN -# include -# include -# include +#if !defined _WIN32 && defined HAVE_FMEMOPEN +#include +#include +#include FILE *fopen(const char *pathname, const char *mode) { FILE *(*libc_fopen)(const char *, const char *) = - (FILE *(*)(const char *, const char *))dlsym(RTLD_NEXT, "fopen"); + (FILE * (*)(const char *, const char *)) + dlsym(RTLD_NEXT, "fopen"); if (!strcmp(pathname, "ca_or_crl")) return fmemopen((void *)g_data, g_size, mode); @@ -42,7 +43,7 @@ FILE *fopen(const char *pathname, const char *mode) } #endif -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { g_data = data; g_size = size; diff --git a/fuzz/gnutls_srp_client_fuzzer.c b/fuzz/gnutls_srp_client_fuzzer.c index bdd86fad86..501d31389d 100644 --- a/fuzz/gnutls_srp_client_fuzzer.c +++ b/fuzz/gnutls_srp_client_fuzzer.c @@ -35,7 +35,7 @@ #include "mem.h" #include "fuzzer.h" -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { int res; gnutls_session_t session; @@ -54,10 +54,8 @@ int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) res = gnutls_credentials_set(session, GNUTLS_CRD_SRP, pcred); assert(res >= 0); - res = - gnutls_priority_set_direct(session, - "NORMAL:-KX-ALL:+SRP:+SRP-RSA:+SRP-DSS", - NULL); + res = gnutls_priority_set_direct( + session, "NORMAL:-KX-ALL:+SRP:+SRP-RSA:+SRP-DSS", NULL); assert(res >= 0); memdata.data = data; diff --git a/fuzz/gnutls_srp_server_fuzzer.c b/fuzz/gnutls_srp_server_fuzzer.c index 6c9cd51efa..021128fa2c 100644 --- a/fuzz/gnutls_srp_server_fuzzer.c +++ b/fuzz/gnutls_srp_server_fuzzer.c @@ -34,10 +34,9 @@ #include "mem.h" #include "fuzzer.h" -static int -srp_cb(gnutls_session_t session, const char *username, - gnutls_datum_t * salt, gnutls_datum_t * verifier, - gnutls_datum_t * generator, gnutls_datum_t * prime) +static int srp_cb(gnutls_session_t session, const char *username, + gnutls_datum_t *salt, gnutls_datum_t *verifier, + gnutls_datum_t *generator, gnutls_datum_t *prime) { int ret; @@ -45,28 +44,27 @@ srp_cb(gnutls_session_t session, const char *username, memcpy(salt->data, (unsigned char *)SALT, SALT_SIZE); salt->size = SALT_SIZE; - generator->data = (unsigned char *) - gnutls_malloc(gnutls_srp_1024_group_generator.size); + generator->data = (unsigned char *)gnutls_malloc( + gnutls_srp_1024_group_generator.size); memcpy(generator->data, gnutls_srp_1024_group_generator.data, gnutls_srp_1024_group_generator.size); generator->size = gnutls_srp_1024_group_generator.size; - prime->data = - (unsigned char *)gnutls_malloc(gnutls_srp_1024_group_prime.size); + prime->data = (unsigned char *)gnutls_malloc( + gnutls_srp_1024_group_prime.size); memcpy(prime->data, gnutls_srp_1024_group_prime.data, gnutls_srp_1024_group_prime.size); prime->size = gnutls_srp_1024_group_prime.size; - ret = - gnutls_srp_verifier(USERNAME, PASSWORD, salt, generator, prime, - verifier); + ret = gnutls_srp_verifier(USERNAME, PASSWORD, salt, generator, prime, + verifier); if (ret < 0) return -1; return 0; } -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { IGNORE_CERTS; int res; @@ -104,20 +102,16 @@ int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) ed25519_key.data = (unsigned char *)kEd25519PrivateKeyDER; ed25519_key.size = sizeof(kEd25519PrivateKeyDER); - res = - gnutls_certificate_set_x509_key_mem(xcred, &rsa_cert, &rsa_key, - GNUTLS_X509_FMT_DER); + res = gnutls_certificate_set_x509_key_mem(xcred, &rsa_cert, &rsa_key, + GNUTLS_X509_FMT_DER); assert(res >= 0); - res = - gnutls_certificate_set_x509_key_mem(xcred, &ecdsa_cert, &ecdsa_key, - GNUTLS_X509_FMT_DER); + res = gnutls_certificate_set_x509_key_mem( + xcred, &ecdsa_cert, &ecdsa_key, GNUTLS_X509_FMT_DER); assert(res >= 0); - res = - gnutls_certificate_set_x509_key_mem(xcred, &ed25519_cert, - &ed25519_key, - GNUTLS_X509_FMT_DER); + res = gnutls_certificate_set_x509_key_mem( + xcred, &ed25519_cert, &ed25519_key, GNUTLS_X509_FMT_DER); assert(res >= 0); gnutls_certificate_set_known_dh_params(xcred, GNUTLS_SEC_PARAM_MEDIUM); @@ -128,10 +122,8 @@ int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) res = gnutls_credentials_set(session, GNUTLS_CRD_SRP, pcred); assert(res >= 0); - res = - gnutls_priority_set_direct(session, - "NORMAL:-KX-ALL:+SRP:+SRP-RSA:+SRP-DSS", - NULL); + res = gnutls_priority_set_direct( + session, "NORMAL:-KX-ALL:+SRP:+SRP-RSA:+SRP-DSS", NULL); assert(res >= 0); memdata.data = data; diff --git a/fuzz/gnutls_x509_crl_parser_fuzzer.c b/fuzz/gnutls_x509_crl_parser_fuzzer.c index 005aca769a..b306501df2 100644 --- a/fuzz/gnutls_x509_crl_parser_fuzzer.c +++ b/fuzz/gnutls_x509_crl_parser_fuzzer.c @@ -26,7 +26,7 @@ #include "fuzzer.h" -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { gnutls_datum_t raw; gnutls_datum_t out; diff --git a/fuzz/gnutls_x509_crq_parser_fuzzer.c b/fuzz/gnutls_x509_crq_parser_fuzzer.c index 2249afee83..4f7ebee78d 100644 --- a/fuzz/gnutls_x509_crq_parser_fuzzer.c +++ b/fuzz/gnutls_x509_crq_parser_fuzzer.c @@ -26,7 +26,7 @@ #include "fuzzer.h" -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { gnutls_datum_t raw; gnutls_datum_t out; diff --git a/fuzz/gnutls_x509_parser_fuzzer.c b/fuzz/gnutls_x509_parser_fuzzer.c index 33acea74c1..87b09c4f71 100644 --- a/fuzz/gnutls_x509_parser_fuzzer.c +++ b/fuzz/gnutls_x509_parser_fuzzer.c @@ -24,7 +24,7 @@ #include "fuzzer.h" -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { gnutls_datum_t raw; gnutls_datum_t out; diff --git a/fuzz/gnutls_x509_verify_fuzzer.c b/fuzz/gnutls_x509_verify_fuzzer.c index f8b20a92bb..19773d1a81 100644 --- a/fuzz/gnutls_x509_verify_fuzzer.c +++ b/fuzz/gnutls_x509_verify_fuzzer.c @@ -161,7 +161,7 @@ unsigned char _ca_der[] = { unsigned int _ca_der_len = 1510; -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1553835274; if (t) @@ -170,7 +170,7 @@ static time_t mytime(time_t * t) return then; } -int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { gnutls_datum_t raw; gnutls_datum_t ca; @@ -200,14 +200,15 @@ int LLVMFuzzerTestOneInput(const uint8_t * data, size_t size) if (ret < 0) goto fail; - ret = gnutls_x509_crt_list_verify(&crt, 1, &ca_crt, 1, NULL, 0, - GNUTLS_VERIFY_ALLOW_UNSORTED_CHAIN | - GNUTLS_VERIFY_ALLOW_BROKEN | - GNUTLS_VERIFY_DISABLE_TRUSTED_TIME_CHECKS, - &status); + ret = gnutls_x509_crt_list_verify( + &crt, 1, &ca_crt, 1, NULL, 0, + GNUTLS_VERIFY_ALLOW_UNSORTED_CHAIN | + GNUTLS_VERIFY_ALLOW_BROKEN | + GNUTLS_VERIFY_DISABLE_TRUSTED_TIME_CHECKS, + &status); assert(ret < 0 || status != 0); - fail: +fail: gnutls_x509_crt_deinit(crt); gnutls_x509_crt_deinit(ca_crt); return 0; diff --git a/fuzz/handshake.h b/fuzz/handshake.h index 429c521908..333b3403aa 100644 --- a/fuzz/handshake.h +++ b/fuzz/handshake.h @@ -22,17 +22,17 @@ */ #ifndef HANDSHAKE_H -# define HANDSHAKE_H +#define HANDSHAKE_H -# define HANDSHAKE_MAX_RETRY_COUNT 10 +#define HANDSHAKE_MAX_RETRY_COUNT 10 typedef struct mem_st { const uint8_t *data; size_t size; } mem_st; -static ssize_t -error_push(gnutls_transport_ptr_t tr, const void *data, size_t len) +static ssize_t error_push(gnutls_transport_ptr_t tr, const void *data, + size_t len) { return -1; } @@ -42,16 +42,15 @@ static ssize_t error_pull(gnutls_transport_ptr_t tr, void *data, size_t len) return -1; } -static int -handshake_discard(gnutls_session_t session, - gnutls_record_encryption_level_t level, - gnutls_handshake_description_t htype, - const void *data, size_t data_size) +static int handshake_discard(gnutls_session_t session, + gnutls_record_encryption_level_t level, + gnutls_handshake_description_t htype, + const void *data, size_t data_size) { return 0; } -static int handshake_pull(gnutls_session_t session, mem_st * data) +static int handshake_pull(gnutls_session_t session, mem_st *data) { uint32_t level, size; int ret; @@ -61,7 +60,7 @@ static int handshake_pull(gnutls_session_t session, mem_st * data) } level = ((unsigned)data->data[0] << 24) | (data->data[1] << 16) | - (data->data[2] << 8) | data->data[3]; + (data->data[2] << 8) | data->data[3]; data->size -= 4; data->data += 4; @@ -71,7 +70,7 @@ static int handshake_pull(gnutls_session_t session, mem_st * data) } size = ((unsigned)data->data[0] << 24) | (data->data[1] << 16) | - (data->data[2] << 8) | data->data[3]; + (data->data[2] << 8) | data->data[3]; data->size -= 4; data->data += 4; @@ -81,7 +80,7 @@ static int handshake_pull(gnutls_session_t session, mem_st * data) } ret = gnutls_handshake_write(session, - (gnutls_record_encryption_level_t) level, + (gnutls_record_encryption_level_t)level, data->data, size); data->size -= size; data->data += size; diff --git a/fuzz/main.c b/fuzz/main.c index 207ad775e1..03a45615a6 100644 --- a/fuzz/main.c +++ b/fuzz/main.c @@ -35,13 +35,13 @@ #ifdef TEST_RUN -# include +#include -# ifdef _WIN32 -# define SLASH '\\' -# else -# define SLASH '/' -# endif +#ifdef _WIN32 +#define SLASH '\\' +#else +#define SLASH '/' +#endif static int test_single_file(const char *fname) { @@ -121,13 +121,13 @@ int main(int argc, char **argv) target_len = strlen(target); -# ifdef _WIN32 - target_len -= 4; // ignore .exe -# endif +#ifdef _WIN32 + target_len -= 4; // ignore .exe +#endif - if (argc > 1) { /* test a single file */ + if (argc > 1) { /* test a single file */ test_single_file(argv[1]); - } else { /* test the target directory */ + } else { /* test the target directory */ int rc; char corporadir[sizeof(SRCDIR) + 1 + target_len + 8]; snprintf(corporadir, sizeof(corporadir), SRCDIR "/%.*s.in", @@ -149,7 +149,7 @@ int main(int argc, char **argv) #else -# ifndef __AFL_LOOP +#ifndef __AFL_LOOP static int __AFL_LOOP(int n) { static int first = 1; @@ -161,14 +161,14 @@ static int __AFL_LOOP(int n) return 0; } -# endif +#endif int main(int argc, char **argv) { int ret; unsigned char buf[64 * 1024]; - while (__AFL_LOOP(10000)) { // only works with afl-clang-fast + while (__AFL_LOOP(10000)) { // only works with afl-clang-fast ret = fread(buf, 1, sizeof(buf), stdin); if (ret < 0) return 0; @@ -179,4 +179,4 @@ int main(int argc, char **argv) return 0; } -#endif /* TEST_RUN */ +#endif /* TEST_RUN */ diff --git a/fuzz/mem.h b/fuzz/mem.h index 78de427503..4c107962b5 100644 --- a/fuzz/mem.h +++ b/fuzz/mem.h @@ -22,14 +22,14 @@ */ #ifndef MEM_H -# define MEM_H +#define MEM_H typedef struct mem_st { const uint8_t *data; size_t size; } mem_st; -# define MIN(x,y) ((x)<(y)?(x):(y)) +#define MIN(x, y) ((x) < (y) ? (x) : (y)) static ssize_t mem_push(gnutls_transport_ptr_t tr, const void *data, size_t len) { return len; @@ -52,15 +52,14 @@ static ssize_t mem_pull(gnutls_transport_ptr_t tr, void *data, size_t len) return len; } -static -int mem_pull_timeout(gnutls_transport_ptr_t tr, unsigned int ms) +static int mem_pull_timeout(gnutls_transport_ptr_t tr, unsigned int ms) { struct mem_st *p = (struct mem_st *)tr; if (p->size > 0) - return 1; /* available data */ + return 1; /* available data */ else - return 0; /* timeout */ + return 0; /* timeout */ } #endif diff --git a/fuzz/psk.h b/fuzz/psk.h index fe4a8af743..a47b40d4ea 100644 --- a/fuzz/psk.h +++ b/fuzz/psk.h @@ -22,11 +22,10 @@ */ #ifndef PSK_H -# define PSK_H +#define PSK_H -static const uint8_t psk_key16[] = { - 0x8a, 0x77, 0x59, 0xb3, 0xf2, 0x69, 0x83, 0xc4, - 0x53, 0xe4, 0x48, 0x06, 0x0b, 0xde, 0x89, 0x81 -}; +static const uint8_t psk_key16[] = { 0x8a, 0x77, 0x59, 0xb3, 0xf2, 0x69, + 0x83, 0xc4, 0x53, 0xe4, 0x48, 0x06, + 0x0b, 0xde, 0x89, 0x81 }; #endif diff --git a/fuzz/srp.h b/fuzz/srp.h index 9a384ab9f0..75a388dccd 100644 --- a/fuzz/srp.h +++ b/fuzz/srp.h @@ -22,12 +22,12 @@ */ #ifndef SRP_H -# define SRP_H +#define SRP_H -# define USERNAME "test" -# define PASSWORD "test" +#define USERNAME "test" +#define PASSWORD "test" -# define SALT "\xeb\x0e\x6a\x5c\x02\x0d\x4b\xa9\x97\xb6\xbe\x73\x4a\x71\xc5\x00" -# define SALT_SIZE 16 +#define SALT "\xeb\x0e\x6a\x5c\x02\x0d\x4b\xa9\x97\xb6\xbe\x73\x4a\x71\xc5\x00" +#define SALT_SIZE 16 #endif diff --git a/lib/abstract_int.h b/lib/abstract_int.h index 03bc0aa9c3..88d4cb40a9 100644 --- a/lib/abstract_int.h +++ b/lib/abstract_int.h @@ -21,13 +21,13 @@ */ #ifndef GNUTLS_LIB_ABSTRACT_INT_H -# define GNUTLS_LIB_ABSTRACT_INT_H +#define GNUTLS_LIB_ABSTRACT_INT_H -# include +#include typedef int (*gnutls_privkey_pk_params_func)(gnutls_privkey_t key, void *userdata, - gnutls_pk_params_st * params); + gnutls_pk_params_st *params); struct gnutls_privkey_st { gnutls_privkey_type_t type; @@ -35,11 +35,11 @@ struct gnutls_privkey_st { union { gnutls_x509_privkey_t x509; -# ifdef ENABLE_PKCS11 +#ifdef ENABLE_PKCS11 gnutls_pkcs11_privkey_t pkcs11; -# endif +#endif struct { - gnutls_privkey_sign_func sign_func; /* raw like TLS 1.x */ + gnutls_privkey_sign_func sign_func; /* raw like TLS 1.x */ gnutls_privkey_sign_data_func sign_data_func; gnutls_privkey_sign_hash_func sign_hash_func; gnutls_privkey_decrypt_func decrypt_func; @@ -57,7 +57,7 @@ struct gnutls_privkey_st { }; struct gnutls_pubkey_st { - unsigned int bits; /* an indication of the security parameter */ + unsigned int bits; /* an indication of the security parameter */ /* the size of params depends on the public * key algorithm @@ -70,7 +70,7 @@ struct gnutls_pubkey_st { */ gnutls_pk_params_st params; - unsigned int key_usage; /* bits from GNUTLS_KEY_* */ + unsigned int key_usage; /* bits from GNUTLS_KEY_* */ struct pin_info_st pin; }; @@ -79,12 +79,12 @@ int _gnutls_privkey_get_public_mpis(gnutls_privkey_t key, gnutls_pk_params_st *); int _gnutls_privkey_get_spki_params(gnutls_privkey_t key, - gnutls_x509_spki_st * params); + gnutls_x509_spki_st *params); int _gnutls_privkey_update_spki_params(gnutls_privkey_t key, gnutls_pk_algorithm_t pk, gnutls_digest_algorithm_t dig, unsigned flags, - gnutls_x509_spki_st * params); + gnutls_x509_spki_st *params); unsigned _gnutls_privkey_compatible_with_sig(gnutls_privkey_t key, gnutls_sign_algorithm_t sig); @@ -92,34 +92,29 @@ unsigned _gnutls_privkey_compatible_with_sig(gnutls_privkey_t key, void _gnutls_privkey_cleanup(gnutls_privkey_t key); int privkey_sign_and_hash_data(gnutls_privkey_t signer, - const gnutls_sign_entry_st * se, - const gnutls_datum_t * data, - gnutls_datum_t * signature, - gnutls_x509_spki_st * params); -int -privkey_sign_raw_data(gnutls_privkey_t key, - const gnutls_sign_entry_st * se, - const gnutls_datum_t * data, - gnutls_datum_t * signature, gnutls_x509_spki_st * params); - -unsigned pubkey_to_bits(const gnutls_pk_params_st * params); -int _gnutls_pubkey_compatible_with_sig(gnutls_session_t, - gnutls_pubkey_t pubkey, - const version_entry_st * ver, + const gnutls_sign_entry_st *se, + const gnutls_datum_t *data, + gnutls_datum_t *signature, + gnutls_x509_spki_st *params); +int privkey_sign_raw_data(gnutls_privkey_t key, const gnutls_sign_entry_st *se, + const gnutls_datum_t *data, gnutls_datum_t *signature, + gnutls_x509_spki_st *params); + +unsigned pubkey_to_bits(const gnutls_pk_params_st *params); +int _gnutls_pubkey_compatible_with_sig(gnutls_session_t, gnutls_pubkey_t pubkey, + const version_entry_st *ver, gnutls_sign_algorithm_t sign); -int _gnutls_pubkey_get_mpis(gnutls_pubkey_t key, gnutls_pk_params_st * params); +int _gnutls_pubkey_get_mpis(gnutls_pubkey_t key, gnutls_pk_params_st *params); -int pubkey_verify_data(const gnutls_sign_entry_st * se, - const mac_entry_st * me, - const gnutls_datum_t * data, - const gnutls_datum_t * signature, - gnutls_pk_params_st * params, - gnutls_x509_spki_st * sign_params, unsigned vflags); +int pubkey_verify_data(const gnutls_sign_entry_st *se, const mac_entry_st *me, + const gnutls_datum_t *data, + const gnutls_datum_t *signature, + gnutls_pk_params_st *params, + gnutls_x509_spki_st *sign_params, unsigned vflags); -const mac_entry_st *_gnutls_dsa_q_to_hash(const gnutls_pk_params_st * - params, unsigned int *hash_len); +const mac_entry_st *_gnutls_dsa_q_to_hash(const gnutls_pk_params_st *params, + unsigned int *hash_len); -int -_gnutls_privkey_get_mpis(gnutls_privkey_t key, gnutls_pk_params_st * params); +int _gnutls_privkey_get_mpis(gnutls_privkey_t key, gnutls_pk_params_st *params); -#endif /* GNUTLS_LIB_ABSTRACT_INT_H */ +#endif /* GNUTLS_LIB_ABSTRACT_INT_H */ diff --git a/lib/accelerated/aarch64/aarch64-common.c b/lib/accelerated/aarch64/aarch64-common.c index c40aacd60a..1b16c9cd4e 100644 --- a/lib/accelerated/aarch64/aarch64-common.c +++ b/lib/accelerated/aarch64/aarch64-common.c @@ -30,21 +30,21 @@ #include #include "errors.h" #ifdef HAVE_LIBNETTLE -# include /* for key generation in 192 and 256 bits */ -# include "sha-aarch64.h" -# include "aes-aarch64.h" +#include /* for key generation in 192 and 256 bits */ +#include "sha-aarch64.h" +#include "aes-aarch64.h" #endif #include "aarch64-common.h" #ifdef HAVE_GETAUXVAL -# include -# ifdef AT_HWCAP -# define USE_AUXVAL -# endif +#include +#ifdef AT_HWCAP +#define USE_AUXVAL +#endif #elif defined(__OpenBSD__) -# include -# include -# include +#include +#include +#include #endif #if defined(__GNUC__) @@ -70,13 +70,13 @@ static void capabilities_to_cpuid(unsigned capabilities) /* Correspond to asm/hwcap.h for aarch64 */ #ifdef USE_AUXVAL -# define HWCAP_ASIMD (1 << 1) -# define HWCAP_AES (1 << 3) -# define HWCAP_PMULL (1 << 4) -# define HWCAP_SHA1 (1 << 5) -# define HWCAP_SHA2 (1 << 6) -# define HWCAP_SHA3 (1 << 17) -# define HWCAP_SHA512 (1 << 21) +#define HWCAP_ASIMD (1 << 1) +#define HWCAP_AES (1 << 3) +#define HWCAP_PMULL (1 << 4) +#define HWCAP_SHA1 (1 << 5) +#define HWCAP_SHA2 (1 << 6) +#define HWCAP_SHA3 (1 << 17) +#define HWCAP_SHA512 (1 << 21) #endif static void discover_caps(unsigned int *caps) @@ -118,8 +118,7 @@ static void discover_caps(unsigned int *caps) #endif } -static -void _register_aarch64_crypto(unsigned capabilities) +static void _register_aarch64_crypto(unsigned capabilities) { int ret; @@ -132,18 +131,14 @@ void _register_aarch64_crypto(unsigned capabilities) if (_gnutls_arm_cpuid_s & ARMV8_SHA1) { _gnutls_debug_log("Aarch64 SHA1 was detected\n"); - ret = - gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA1, - 80, - &_gnutls_sha_aarch64, - 0); + ret = gnutls_crypto_single_digest_register( + GNUTLS_DIG_SHA1, 80, &_gnutls_sha_aarch64, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_mac_register - (GNUTLS_MAC_SHA1, 80, &_gnutls_hmac_sha_aarch64, 0); + ret = gnutls_crypto_single_mac_register( + GNUTLS_MAC_SHA1, 80, &_gnutls_hmac_sha_aarch64, 0); if (ret < 0) { gnutls_assert(); } @@ -152,66 +147,50 @@ void _register_aarch64_crypto(unsigned capabilities) if (_gnutls_arm_cpuid_s & ARMV8_SHA256) { _gnutls_debug_log("Aarch64 SHA2 was detected\n"); - ret = - gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA224, - 80, - &_gnutls_sha_aarch64, - 0); + ret = gnutls_crypto_single_digest_register( + GNUTLS_DIG_SHA224, 80, &_gnutls_sha_aarch64, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_mac_register - (GNUTLS_MAC_SHA224, 80, &_gnutls_hmac_sha_aarch64, 0); + ret = gnutls_crypto_single_mac_register( + GNUTLS_MAC_SHA224, 80, &_gnutls_hmac_sha_aarch64, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA256, - 80, - &_gnutls_sha_aarch64, - 0); + ret = gnutls_crypto_single_digest_register( + GNUTLS_DIG_SHA256, 80, &_gnutls_sha_aarch64, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_mac_register - (GNUTLS_MAC_SHA256, 80, &_gnutls_hmac_sha_aarch64, 0); + ret = gnutls_crypto_single_mac_register( + GNUTLS_MAC_SHA256, 80, &_gnutls_hmac_sha_aarch64, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA384, - 80, - &_gnutls_sha_aarch64, - 0); + ret = gnutls_crypto_single_digest_register( + GNUTLS_DIG_SHA384, 80, &_gnutls_sha_aarch64, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_mac_register - (GNUTLS_MAC_SHA384, 80, &_gnutls_hmac_sha_aarch64, 0); + ret = gnutls_crypto_single_mac_register( + GNUTLS_MAC_SHA384, 80, &_gnutls_hmac_sha_aarch64, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA512, - 80, - &_gnutls_sha_aarch64, - 0); + ret = gnutls_crypto_single_digest_register( + GNUTLS_DIG_SHA512, 80, &_gnutls_sha_aarch64, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_mac_register - (GNUTLS_MAC_SHA512, 80, &_gnutls_hmac_sha_aarch64, 0); + ret = gnutls_crypto_single_mac_register( + GNUTLS_MAC_SHA512, 80, &_gnutls_hmac_sha_aarch64, 0); if (ret < 0) { gnutls_assert(); } @@ -223,59 +202,52 @@ void _register_aarch64_crypto(unsigned capabilities) if (_gnutls_arm_cpuid_s & ARMV8_PMULL) { _gnutls_debug_log("Aarch64 PMULL was detected\n"); - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_128_GCM, 90, - &_gnutls_aes_gcm_aarch64, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_128_GCM, 90, + &_gnutls_aes_gcm_aarch64, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_192_GCM, 90, - &_gnutls_aes_gcm_aarch64, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_192_GCM, 90, + &_gnutls_aes_gcm_aarch64, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_256_GCM, 90, - &_gnutls_aes_gcm_aarch64, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_256_GCM, 90, + &_gnutls_aes_gcm_aarch64, 0); if (ret < 0) { gnutls_assert(); } } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_128_CBC, 90, &_gnutls_aes_cbc_aarch64, - 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_128_CBC, 90, &_gnutls_aes_cbc_aarch64, + 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_256_CBC, 90, &_gnutls_aes_cbc_aarch64, - 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_256_CBC, 90, &_gnutls_aes_cbc_aarch64, + 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_128_CCM, 90, &_gnutls_aes_ccm_aarch64, - 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_128_CCM, 90, &_gnutls_aes_ccm_aarch64, + 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_256_CCM, 90, &_gnutls_aes_ccm_aarch64, - 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_256_CCM, 90, &_gnutls_aes_ccm_aarch64, + 0); if (ret < 0) { gnutls_assert(); } diff --git a/lib/accelerated/aarch64/aarch64-common.h b/lib/accelerated/aarch64/aarch64-common.h index 6ba1936e74..f47d09513f 100644 --- a/lib/accelerated/aarch64/aarch64-common.h +++ b/lib/accelerated/aarch64/aarch64-common.h @@ -21,28 +21,27 @@ */ #ifndef GNUTLS_LIB_ACCELERATED_AARCH64_AARCH64_COMMON_H -# define GNUTLS_LIB_ACCELERATED_AARCH64_AARCH64_COMMON_H +#define GNUTLS_LIB_ACCELERATED_AARCH64_AARCH64_COMMON_H -# if !__ASSEMBLER__ -# define NN_HASH(name, update_func, digest_func, NAME) { \ - #name, \ - sizeof(struct name##_ctx), \ - NAME##_DIGEST_SIZE, \ - NAME##_DATA_SIZE, \ - (nettle_hash_init_func *) name##_init, \ - (nettle_hash_update_func *) update_func, \ - (nettle_hash_digest_func *) digest_func \ -} +#if !__ASSEMBLER__ +#define NN_HASH(name, update_func, digest_func, NAME) \ + { \ +#name, sizeof(struct name##_ctx), NAME##_DIGEST_SIZE, \ + NAME##_DATA_SIZE, \ + (nettle_hash_init_func *)name##_init, \ + (nettle_hash_update_func *)update_func, \ + (nettle_hash_digest_func *)digest_func \ + } void register_aarch64_crypto(void); -# endif +#endif -# define ARMV7_NEON (1<<0) -# define ARMV7_TICK (1<<1) -# define ARMV8_AES (1<<2) -# define ARMV8_SHA1 (1<<3) -# define ARMV8_SHA256 (1<<4) -# define ARMV8_PMULL (1<<5) -# define ARMV8_SHA512 (1<<6) +#define ARMV7_NEON (1 << 0) +#define ARMV7_TICK (1 << 1) +#define ARMV8_AES (1 << 2) +#define ARMV8_SHA1 (1 << 3) +#define ARMV8_SHA256 (1 << 4) +#define ARMV8_PMULL (1 << 5) +#define ARMV8_SHA512 (1 << 6) -#endif /* GNUTLS_LIB_ACCELERATED_AARCH64_AARCH64_COMMON_H */ +#endif /* GNUTLS_LIB_ACCELERATED_AARCH64_AARCH64_COMMON_H */ diff --git a/lib/accelerated/aarch64/aes-aarch64.h b/lib/accelerated/aarch64/aes-aarch64.h index 46bfaaa16e..acea6c1340 100644 --- a/lib/accelerated/aarch64/aes-aarch64.h +++ b/lib/accelerated/aarch64/aes-aarch64.h @@ -1,13 +1,13 @@ #ifndef GNUTLS_LIB_ACCELERATED_AARCH64_AES_AARCH64_H -# define GNUTLS_LIB_ACCELERATED_AARCH64_AES_AARCH64_H +#define GNUTLS_LIB_ACCELERATED_AARCH64_AES_AARCH64_H -# include "gnutls_int.h" +#include "gnutls_int.h" -# define ALIGN16(x) \ - ((void *)(((ptrdiff_t)(x)+(ptrdiff_t)0x0f)&~((ptrdiff_t)0x0f))) +#define ALIGN16(x) \ + ((void *)(((ptrdiff_t)(x) + (ptrdiff_t)0x0f) & ~((ptrdiff_t)0x0f))) -# define AES_KEY_ALIGN_SIZE 4 -# define AES_MAXNR 14 +#define AES_KEY_ALIGN_SIZE 4 +#define AES_MAXNR 14 typedef struct { /* We add few more integers to allow alignment * on a 16-byte boundary. @@ -16,12 +16,12 @@ typedef struct { uint32_t rounds; } AES_KEY; -# define CHECK_AES_KEYSIZE(s) \ +#define CHECK_AES_KEYSIZE(s) \ if (s != 16 && s != 24 && s != 32) \ - return GNUTLS_E_INVALID_REQUEST + return GNUTLS_E_INVALID_REQUEST -# include -# define AES_GCM_ENCRYPT_MAX_BYTES ((1ULL << 36) - 32) +#include +#define AES_GCM_ENCRYPT_MAX_BYTES ((1ULL << 36) - 32) static inline int record_aes_gcm_encrypt_size(size_t *counter, size_t size) { size_t sum; @@ -36,19 +36,19 @@ static inline int record_aes_gcm_encrypt_size(size_t *counter, size_t size) } int aes_v8_set_encrypt_key(const unsigned char *userKey, int bits, - AES_KEY * key); + AES_KEY *key); int aes_v8_set_decrypt_key(const unsigned char *userKey, int bits, - AES_KEY * key); + AES_KEY *key); void aes_v8_cbc_encrypt(const unsigned char *in, unsigned char *out, - size_t length, const AES_KEY * key, unsigned char *ivec, + size_t length, const AES_KEY *key, unsigned char *ivec, int enc); void aes_v8_encrypt(const unsigned char *in, unsigned char *out, - const AES_KEY * key); + const AES_KEY *key); void aes_v8_decrypt(const unsigned char *in, unsigned char *out, - const AES_KEY * key); + const AES_KEY *key); extern const gnutls_crypto_cipher_st _gnutls_aes_gcm_aarch64; extern const gnutls_crypto_cipher_st _gnutls_aes_cbc_aarch64; extern const gnutls_crypto_cipher_st _gnutls_aes_ccm_aarch64; -#endif /* GNUTLS_LIB_ACCELERATED_AARCH64_AES_AARCH64_H */ +#endif /* GNUTLS_LIB_ACCELERATED_AARCH64_AES_AARCH64_H */ diff --git a/lib/accelerated/aarch64/aes-cbc-aarch64.c b/lib/accelerated/aarch64/aes-cbc-aarch64.c index a185447d70..457ddff70e 100644 --- a/lib/accelerated/aarch64/aes-cbc-aarch64.c +++ b/lib/accelerated/aarch64/aes-cbc-aarch64.c @@ -39,13 +39,13 @@ struct aes_ctx { int enc; }; -static int -aes_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, int enc) +static int aes_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, + int enc) { /* we use key size to distinguish */ - if (algorithm != GNUTLS_CIPHER_AES_128_CBC - && algorithm != GNUTLS_CIPHER_AES_192_CBC - && algorithm != GNUTLS_CIPHER_AES_256_CBC) + if (algorithm != GNUTLS_CIPHER_AES_128_CBC && + algorithm != GNUTLS_CIPHER_AES_192_CBC && + algorithm != GNUTLS_CIPHER_AES_256_CBC) return GNUTLS_E_INVALID_REQUEST; *_ctx = gnutls_calloc(1, sizeof(struct aes_ctx)); @@ -59,8 +59,8 @@ aes_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, int enc) return 0; } -static int -aes_aarch64_cipher_setkey(void *_ctx, const void *userkey, size_t keysize) +static int aes_aarch64_cipher_setkey(void *_ctx, const void *userkey, + size_t keysize) { struct aes_ctx *ctx = _ctx; int ret; @@ -68,13 +68,11 @@ aes_aarch64_cipher_setkey(void *_ctx, const void *userkey, size_t keysize) CHECK_AES_KEYSIZE(keysize); if (ctx->enc) - ret = - aes_v8_set_encrypt_key(userkey, keysize * 8, - ALIGN16(&ctx->expanded_key)); + ret = aes_v8_set_encrypt_key(userkey, keysize * 8, + ALIGN16(&ctx->expanded_key)); else - ret = - aes_v8_set_decrypt_key(userkey, keysize * 8, - ALIGN16(&ctx->expanded_key)); + ret = aes_v8_set_decrypt_key(userkey, keysize * 8, + ALIGN16(&ctx->expanded_key)); if (ret != 0) return gnutls_assert_val(GNUTLS_E_ENCRYPTION_FAILED); @@ -82,9 +80,8 @@ aes_aarch64_cipher_setkey(void *_ctx, const void *userkey, size_t keysize) return 0; } -static int -aes_aarch64_encrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t dst_size) +static int aes_aarch64_encrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t dst_size) { struct aes_ctx *ctx = _ctx; @@ -99,9 +96,8 @@ aes_aarch64_encrypt(void *_ctx, const void *src, size_t src_size, return 0; } -static int -aes_aarch64_decrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t dst_size) +static int aes_aarch64_decrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t dst_size) { struct aes_ctx *ctx = _ctx; diff --git a/lib/accelerated/aarch64/aes-ccm-aarch64.c b/lib/accelerated/aarch64/aes-ccm-aarch64.c index 74f9897fec..579b23ac55 100644 --- a/lib/accelerated/aarch64/aes-ccm-aarch64.c +++ b/lib/accelerated/aarch64/aes-ccm-aarch64.c @@ -30,13 +30,13 @@ #ifdef HAVE_LIBNETTLE -# include -# include "errors.h" -# include -# include -# include -# include -# include +#include +#include "errors.h" +#include +#include +#include +#include +#include typedef struct ccm_aarch64_aes_ctx { AES_KEY key; @@ -44,9 +44,8 @@ typedef struct ccm_aarch64_aes_ctx { /* CCM mode */ -static void aarch64_aes_encrypt(const void *_ctx, - size_t length, uint8_t * dst, - const uint8_t * src) +static void aarch64_aes_encrypt(const void *_ctx, size_t length, uint8_t *dst, + const uint8_t *src) { AES_KEY *ctx = (void *)_ctx; unsigned i; @@ -58,8 +57,8 @@ static void aarch64_aes_encrypt(const void *_ctx, } } -static int -aes_ccm_cipher_init(gnutls_cipher_algorithm_t algorithm, void **ctx, int enc) +static int aes_ccm_cipher_init(gnutls_cipher_algorithm_t algorithm, void **ctx, + int enc) { /* we use key size to distinguish */ if (algorithm != GNUTLS_CIPHER_AES_128_CCM && @@ -88,13 +87,11 @@ static int aes_ccm_cipher_setkey(void *_ctx, const void *key, size_t length) return 0; } -static int -aes_ccm_aead_encrypt(void *_ctx, - const void *nonce, size_t nonce_size, - const void *auth, size_t auth_size, - size_t tag_size, - const void *plain, size_t plain_size, - void *encr, size_t encr_size) +static int aes_ccm_aead_encrypt(void *_ctx, const void *nonce, + size_t nonce_size, const void *auth, + size_t auth_size, size_t tag_size, + const void *plain, size_t plain_size, + void *encr, size_t encr_size) { struct ccm_aarch64_aes_ctx *ctx = _ctx; /* proper AEAD cipher */ @@ -126,20 +123,17 @@ aes_ccm_aead_encrypt(void *_ctx, break; } - ccm_encrypt_message(&ctx->key, aarch64_aes_encrypt, - nonce_size, nonce, - auth_size, auth, - tag_size, plain_size + tag_size, encr, plain); + ccm_encrypt_message(&ctx->key, aarch64_aes_encrypt, nonce_size, nonce, + auth_size, auth, tag_size, plain_size + tag_size, + encr, plain); return 0; } -static int -aes_ccm_aead_decrypt(void *_ctx, - const void *nonce, size_t nonce_size, - const void *auth, size_t auth_size, - size_t tag_size, - const void *encr, size_t encr_size, - void *plain, size_t plain_size) +static int aes_ccm_aead_decrypt(void *_ctx, const void *nonce, + size_t nonce_size, const void *auth, + size_t auth_size, size_t tag_size, + const void *encr, size_t encr_size, void *plain, + size_t plain_size) { struct ccm_aarch64_aes_ctx *ctx = _ctx; int ret; @@ -174,10 +168,9 @@ aes_ccm_aead_decrypt(void *_ctx, break; } - ret = ccm_decrypt_message(&ctx->key, aarch64_aes_encrypt, - nonce_size, nonce, - auth_size, auth, - tag_size, encr_size - tag_size, plain, encr); + ret = ccm_decrypt_message(&ctx->key, aarch64_aes_encrypt, nonce_size, + nonce, auth_size, auth, tag_size, + encr_size - tag_size, plain, encr); if (unlikely(ret == 0)) return gnutls_assert_val(GNUTLS_E_DECRYPTION_FAILED); diff --git a/lib/accelerated/aarch64/aes-gcm-aarch64.c b/lib/accelerated/aarch64/aes-gcm-aarch64.c index 8d247897f3..ca266f765a 100644 --- a/lib/accelerated/aarch64/aes-gcm-aarch64.c +++ b/lib/accelerated/aarch64/aes-gcm-aarch64.c @@ -66,8 +66,8 @@ struct aes_gcm_ctx { }; void gcm_init_v8(u128 Htable[16], const uint64_t Xi[2]); -void gcm_ghash_v8(uint64_t Xi[2], const u128 Htable[16], - const uint8_t * inp, size_t len); +void gcm_ghash_v8(uint64_t Xi[2], const u128 Htable[16], const uint8_t *inp, + size_t len); void gcm_gmult_v8(uint64_t Xi[2], const u128 Htable[16]); static void aes_gcm_deinit(void *_ctx) @@ -78,8 +78,8 @@ static void aes_gcm_deinit(void *_ctx) gnutls_free(ctx); } -static int -aes_gcm_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, int enc) +static int aes_gcm_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, + int enc) { /* we use key size to distinguish */ if (algorithm != GNUTLS_CIPHER_AES_128_GCM && @@ -96,17 +96,16 @@ aes_gcm_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, int enc) return 0; } -static int -aes_gcm_cipher_setkey(void *_ctx, const void *userkey, size_t keysize) +static int aes_gcm_cipher_setkey(void *_ctx, const void *userkey, + size_t keysize) { struct aes_gcm_ctx *ctx = _ctx; int ret; CHECK_AES_KEYSIZE(keysize); - ret = - aes_v8_set_encrypt_key(userkey, keysize * 8, - ALIGN16(&ctx->expanded_key)); + ret = aes_v8_set_encrypt_key(userkey, keysize * 8, + ALIGN16(&ctx->expanded_key)); if (ret != 0) return gnutls_assert_val(GNUTLS_E_ENCRYPTION_FAILED); @@ -146,8 +145,8 @@ static int aes_gcm_setiv(void *_ctx, const void *iv, size_t iv_size) return 0; } -static void -gcm_ghash(struct aes_gcm_ctx *ctx, const uint8_t * src, size_t src_size) +static void gcm_ghash(struct aes_gcm_ctx *ctx, const uint8_t *src, + size_t src_size) { size_t rest = src_size % GCM_BLOCK_SIZE; size_t aligned_size = src_size - rest; @@ -161,10 +160,10 @@ gcm_ghash(struct aes_gcm_ctx *ctx, const uint8_t * src, size_t src_size) } } -static void -ctr32_encrypt_blocks_inplace(const unsigned char *in, unsigned char *out, - size_t blocks, const AES_KEY * key, - const unsigned char ivec[16]) +static void ctr32_encrypt_blocks_inplace(const unsigned char *in, + unsigned char *out, size_t blocks, + const AES_KEY *key, + const unsigned char ivec[16]) { unsigned i; uint8_t ctr[16]; @@ -182,10 +181,9 @@ ctr32_encrypt_blocks_inplace(const unsigned char *in, unsigned char *out, } } -static void -ctr32_encrypt_blocks(const unsigned char *in, unsigned char *out, - size_t blocks, const AES_KEY * key, - const unsigned char ivec[16]) +static void ctr32_encrypt_blocks(const unsigned char *in, unsigned char *out, + size_t blocks, const AES_KEY *key, + const unsigned char ivec[16]) { unsigned i; uint8_t ctr[16]; @@ -205,24 +203,21 @@ ctr32_encrypt_blocks(const unsigned char *in, unsigned char *out, } } -static inline void -ctr_encrypt_last(struct aes_gcm_ctx *ctx, const uint8_t * src, - uint8_t * dst, size_t pos, size_t length) +static inline void ctr_encrypt_last(struct aes_gcm_ctx *ctx, const uint8_t *src, + uint8_t *dst, size_t pos, size_t length) { uint8_t tmp[GCM_BLOCK_SIZE]; uint8_t out[GCM_BLOCK_SIZE]; memcpy(tmp, &src[pos], length); - ctr32_encrypt_blocks(tmp, out, 1, - ALIGN16(&ctx->expanded_key), ctx->gcm.Yi.c); + ctr32_encrypt_blocks(tmp, out, 1, ALIGN16(&ctx->expanded_key), + ctx->gcm.Yi.c); memcpy(&dst[pos], out, length); - } -static int -aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t length) +static int aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t length) { struct aes_gcm_ctx *ctx = _ctx; int blocks = src_size / GCM_BLOCK_SIZE; @@ -243,8 +238,7 @@ aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, } if (blocks > 0) { - ctr32_encrypt_blocks(src, dst, - blocks, + ctr32_encrypt_blocks(src, dst, blocks, ALIGN16(&ctx->expanded_key), ctx->gcm.Yi.c); @@ -253,7 +247,7 @@ aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, _gnutls_write_uint32(counter, ctx->gcm.Yi.c + 12); } - if (rest > 0) { /* last incomplete block */ + if (rest > 0) { /* last incomplete block */ ctr_encrypt_last(ctx, src, dst, exp_blocks, rest); ctx->finished = 1; } @@ -264,9 +258,8 @@ aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, return 0; } -static int -aes_gcm_decrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t dst_size) +static int aes_gcm_decrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t dst_size) { struct aes_gcm_ctx *ctx = _ctx; int blocks = src_size / GCM_BLOCK_SIZE; @@ -284,8 +277,7 @@ aes_gcm_decrypt(void *_ctx, const void *src, size_t src_size, ctx->gcm.len.u[1] += src_size; if (blocks > 0) { - ctr32_encrypt_blocks(src, dst, - blocks, + ctr32_encrypt_blocks(src, dst, blocks, ALIGN16(&ctx->expanded_key), ctx->gcm.Yi.c); @@ -294,7 +286,7 @@ aes_gcm_decrypt(void *_ctx, const void *src, size_t src_size, _gnutls_write_uint32(counter, ctx->gcm.Yi.c + 12); } - if (rest > 0) { /* last incomplete block */ + if (rest > 0) { /* last incomplete block */ ctr_encrypt_last(ctx, src, dst, exp_blocks, rest); ctx->finished = 1; } diff --git a/lib/accelerated/aarch64/hmac-sha-aarch64.c b/lib/accelerated/aarch64/hmac-sha-aarch64.c index c60c37644d..42bc1c9f58 100644 --- a/lib/accelerated/aarch64/hmac-sha-aarch64.c +++ b/lib/accelerated/aarch64/hmac-sha-aarch64.c @@ -57,133 +57,120 @@ struct aarch64_hmac_ctx { set_key_func setkey; }; -static void -aarch64_hmac_sha1_set_key(struct hmac_sha1_ctx *ctx, - size_t key_length, const uint8_t * key) +static void aarch64_hmac_sha1_set_key(struct hmac_sha1_ctx *ctx, + size_t key_length, const uint8_t *key) { HMAC_SET_KEY(ctx, &aarch64_sha1, key_length, key); } -static void -aarch64_hmac_sha1_update(struct hmac_sha1_ctx *ctx, - size_t length, const uint8_t * data) +static void aarch64_hmac_sha1_update(struct hmac_sha1_ctx *ctx, size_t length, + const uint8_t *data) { aarch64_sha1_update(&ctx->state, length, data); } -static void -aarch64_hmac_sha1_digest(struct hmac_sha1_ctx *ctx, - size_t length, uint8_t * digest) +static void aarch64_hmac_sha1_digest(struct hmac_sha1_ctx *ctx, size_t length, + uint8_t *digest) { HMAC_DIGEST(ctx, &aarch64_sha1, length, digest); } -static void -aarch64_hmac_sha256_set_key(struct hmac_sha256_ctx *ctx, - size_t key_length, const uint8_t * key) +static void aarch64_hmac_sha256_set_key(struct hmac_sha256_ctx *ctx, + size_t key_length, const uint8_t *key) { HMAC_SET_KEY(ctx, &aarch64_sha256, key_length, key); } -static void -aarch64_hmac_sha256_update(struct hmac_sha256_ctx *ctx, - size_t length, const uint8_t * data) +static void aarch64_hmac_sha256_update(struct hmac_sha256_ctx *ctx, + size_t length, const uint8_t *data) { aarch64_sha256_update(&ctx->state, length, data); } -static void -aarch64_hmac_sha256_digest(struct hmac_sha256_ctx *ctx, - size_t length, uint8_t * digest) +static void aarch64_hmac_sha256_digest(struct hmac_sha256_ctx *ctx, + size_t length, uint8_t *digest) { HMAC_DIGEST(ctx, &aarch64_sha256, length, digest); } -static void -aarch64_hmac_sha224_set_key(struct hmac_sha224_ctx *ctx, - size_t key_length, const uint8_t * key) +static void aarch64_hmac_sha224_set_key(struct hmac_sha224_ctx *ctx, + size_t key_length, const uint8_t *key) { HMAC_SET_KEY(ctx, &aarch64_sha224, key_length, key); } -static void -aarch64_hmac_sha224_digest(struct hmac_sha224_ctx *ctx, - size_t length, uint8_t * digest) +static void aarch64_hmac_sha224_digest(struct hmac_sha224_ctx *ctx, + size_t length, uint8_t *digest) { HMAC_DIGEST(ctx, &aarch64_sha224, length, digest); } -static void -aarch64_hmac_sha384_set_key(struct hmac_sha384_ctx *ctx, - size_t key_length, const uint8_t * key) +static void aarch64_hmac_sha384_set_key(struct hmac_sha384_ctx *ctx, + size_t key_length, const uint8_t *key) { HMAC_SET_KEY(ctx, &aarch64_sha384, key_length, key); } -static void -aarch64_hmac_sha384_digest(struct hmac_sha384_ctx *ctx, - size_t length, uint8_t * digest) +static void aarch64_hmac_sha384_digest(struct hmac_sha384_ctx *ctx, + size_t length, uint8_t *digest) { HMAC_DIGEST(ctx, &aarch64_sha384, length, digest); } -static void -aarch64_hmac_sha512_set_key(struct hmac_sha512_ctx *ctx, - size_t key_length, const uint8_t * key) +static void aarch64_hmac_sha512_set_key(struct hmac_sha512_ctx *ctx, + size_t key_length, const uint8_t *key) { HMAC_SET_KEY(ctx, &aarch64_sha512, key_length, key); } -static void -aarch64_hmac_sha512_update(struct hmac_sha512_ctx *ctx, - size_t length, const uint8_t * data) +static void aarch64_hmac_sha512_update(struct hmac_sha512_ctx *ctx, + size_t length, const uint8_t *data) { aarch64_sha512_update(&ctx->state, length, data); } -static void -aarch64_hmac_sha512_digest(struct hmac_sha512_ctx *ctx, - size_t length, uint8_t * digest) +static void aarch64_hmac_sha512_digest(struct hmac_sha512_ctx *ctx, + size_t length, uint8_t *digest) { HMAC_DIGEST(ctx, &aarch64_sha512, length, digest); } -static int -_hmac_ctx_init(gnutls_mac_algorithm_t algo, struct aarch64_hmac_ctx *ctx) +static int _hmac_ctx_init(gnutls_mac_algorithm_t algo, + struct aarch64_hmac_ctx *ctx) { switch (algo) { case GNUTLS_MAC_SHA1: - ctx->update = (update_func) aarch64_hmac_sha1_update; - ctx->digest = (digest_func) aarch64_hmac_sha1_digest; - ctx->setkey = (set_key_func) aarch64_hmac_sha1_set_key; + ctx->update = (update_func)aarch64_hmac_sha1_update; + ctx->digest = (digest_func)aarch64_hmac_sha1_digest; + ctx->setkey = (set_key_func)aarch64_hmac_sha1_set_key; ctx->ctx_ptr = &ctx->ctx.sha1; ctx->length = SHA1_DIGEST_SIZE; break; case GNUTLS_MAC_SHA224: - ctx->update = (update_func) aarch64_hmac_sha256_update; - ctx->digest = (digest_func) aarch64_hmac_sha224_digest; - ctx->setkey = (set_key_func) aarch64_hmac_sha224_set_key; + ctx->update = (update_func)aarch64_hmac_sha256_update; + ctx->digest = (digest_func)aarch64_hmac_sha224_digest; + ctx->setkey = (set_key_func)aarch64_hmac_sha224_set_key; ctx->ctx_ptr = &ctx->ctx.sha224; ctx->length = SHA224_DIGEST_SIZE; break; case GNUTLS_MAC_SHA256: - ctx->update = (update_func) aarch64_hmac_sha256_update; - ctx->digest = (digest_func) aarch64_hmac_sha256_digest; - ctx->setkey = (set_key_func) aarch64_hmac_sha256_set_key; + ctx->update = (update_func)aarch64_hmac_sha256_update; + ctx->digest = (digest_func)aarch64_hmac_sha256_digest; + ctx->setkey = (set_key_func)aarch64_hmac_sha256_set_key; ctx->ctx_ptr = &ctx->ctx.sha256; ctx->length = SHA256_DIGEST_SIZE; break; case GNUTLS_MAC_SHA384: - ctx->update = (update_func) aarch64_hmac_sha512_update; - ctx->digest = (digest_func) aarch64_hmac_sha384_digest; - ctx->setkey = (set_key_func) aarch64_hmac_sha384_set_key; + ctx->update = (update_func)aarch64_hmac_sha512_update; + ctx->digest = (digest_func)aarch64_hmac_sha384_digest; + ctx->setkey = (set_key_func)aarch64_hmac_sha384_set_key; ctx->ctx_ptr = &ctx->ctx.sha384; ctx->length = SHA384_DIGEST_SIZE; break; case GNUTLS_MAC_SHA512: - ctx->update = (update_func) aarch64_hmac_sha512_update; - ctx->digest = (digest_func) aarch64_hmac_sha512_digest; - ctx->setkey = (set_key_func) aarch64_hmac_sha512_set_key; + ctx->update = (update_func)aarch64_hmac_sha512_update; + ctx->digest = (digest_func)aarch64_hmac_sha512_digest; + ctx->setkey = (set_key_func)aarch64_hmac_sha512_set_key; ctx->ctx_ptr = &ctx->ctx.sha512; ctx->length = SHA512_DIGEST_SIZE; break; @@ -221,7 +208,7 @@ static void *wrap_aarch64_hmac_copy(const void *_ctx) { struct aarch64_hmac_ctx *new_ctx; const struct aarch64_hmac_ctx *ctx = _ctx; - ptrdiff_t off = (uint8_t *) ctx->ctx_ptr - (uint8_t *) (&ctx->ctx); + ptrdiff_t off = (uint8_t *)ctx->ctx_ptr - (uint8_t *)(&ctx->ctx); new_ctx = gnutls_malloc(sizeof(struct aarch64_hmac_ctx)); if (new_ctx == NULL) { @@ -230,7 +217,7 @@ static void *wrap_aarch64_hmac_copy(const void *_ctx) } memcpy(new_ctx, ctx, sizeof(*new_ctx)); - new_ctx->ctx_ptr = (uint8_t *) & new_ctx->ctx + off; + new_ctx->ctx_ptr = (uint8_t *)&new_ctx->ctx + off; return new_ctx; } @@ -244,8 +231,8 @@ static int wrap_aarch64_hmac_setkey(void *_ctx, const void *key, size_t keylen) return GNUTLS_E_SUCCESS; } -static int -wrap_aarch64_hmac_update(void *_ctx, const void *text, size_t textsize) +static int wrap_aarch64_hmac_update(void *_ctx, const void *text, + size_t textsize) { struct aarch64_hmac_ctx *ctx = _ctx; @@ -254,8 +241,8 @@ wrap_aarch64_hmac_update(void *_ctx, const void *text, size_t textsize) return GNUTLS_E_SUCCESS; } -static int -wrap_aarch64_hmac_output(void *src_ctx, void *digest, size_t digestsize) +static int wrap_aarch64_hmac_output(void *src_ctx, void *digest, + size_t digestsize) { struct aarch64_hmac_ctx *ctx; ctx = src_ctx; @@ -311,4 +298,4 @@ const gnutls_crypto_mac_st _gnutls_hmac_sha_aarch64 = { .fast = wrap_aarch64_hmac_fast, }; -#endif /* HAVE_LIBNETTLE */ +#endif /* HAVE_LIBNETTLE */ diff --git a/lib/accelerated/aarch64/sha-aarch64.c b/lib/accelerated/aarch64/sha-aarch64.c index f4df58371e..c8fc3acbec 100644 --- a/lib/accelerated/aarch64/sha-aarch64.c +++ b/lib/accelerated/aarch64/sha-aarch64.c @@ -56,8 +56,8 @@ struct aarch64_hash_ctx { init_func init; }; -static int -wrap_aarch64_hash_update(void *_ctx, const void *text, size_t textsize) +static int wrap_aarch64_hash_update(void *_ctx, const void *text, + size_t textsize) { struct aarch64_hash_ctx *ctx = _ctx; @@ -72,7 +72,7 @@ static void wrap_aarch64_hash_deinit(void *hd) } void aarch64_sha1_update(struct sha1_ctx *ctx, size_t length, - const uint8_t * data) + const uint8_t *data) { struct { uint32_t h0, h1, h2, h3, h4; @@ -105,7 +105,6 @@ void aarch64_sha1_update(struct sha1_ctx *ctx, size_t length, length -= res; if (length > 0) { - t2 = length / SHA1_DATA_SIZE; sha1_block_data_order(&octx, data, t2); @@ -127,11 +126,10 @@ void aarch64_sha1_update(struct sha1_ctx *ctx, size_t length, if (res > 0) { sha1_update(ctx, res, data); } - } void aarch64_sha256_update(struct sha256_ctx *ctx, size_t length, - const uint8_t * data) + const uint8_t *data) { struct { uint32_t h[8]; @@ -179,7 +177,7 @@ void aarch64_sha256_update(struct sha256_ctx *ctx, size_t length, } void aarch64_sha512_update(struct sha512_ctx *ctx, size_t length, - const uint8_t * data) + const uint8_t *data) { struct { uint64_t h[8]; @@ -235,41 +233,41 @@ static int _ctx_init(gnutls_digest_algorithm_t algo, switch (algo) { case GNUTLS_DIG_SHA1: sha1_init(&ctx->ctx.sha1); - ctx->update = (update_func) aarch64_sha1_update; - ctx->digest = (digest_func) sha1_digest; - ctx->init = (init_func) sha1_init; + ctx->update = (update_func)aarch64_sha1_update; + ctx->digest = (digest_func)sha1_digest; + ctx->init = (init_func)sha1_init; ctx->ctx_ptr = &ctx->ctx.sha1; ctx->length = SHA1_DIGEST_SIZE; break; case GNUTLS_DIG_SHA224: sha224_init(&ctx->ctx.sha224); - ctx->update = (update_func) aarch64_sha256_update; - ctx->digest = (digest_func) sha224_digest; - ctx->init = (init_func) sha224_init; + ctx->update = (update_func)aarch64_sha256_update; + ctx->digest = (digest_func)sha224_digest; + ctx->init = (init_func)sha224_init; ctx->ctx_ptr = &ctx->ctx.sha224; ctx->length = SHA224_DIGEST_SIZE; break; case GNUTLS_DIG_SHA256: sha256_init(&ctx->ctx.sha256); - ctx->update = (update_func) aarch64_sha256_update; - ctx->digest = (digest_func) sha256_digest; - ctx->init = (init_func) sha256_init; + ctx->update = (update_func)aarch64_sha256_update; + ctx->digest = (digest_func)sha256_digest; + ctx->init = (init_func)sha256_init; ctx->ctx_ptr = &ctx->ctx.sha256; ctx->length = SHA256_DIGEST_SIZE; break; case GNUTLS_DIG_SHA384: sha384_init(&ctx->ctx.sha384); - ctx->update = (update_func) aarch64_sha512_update; - ctx->digest = (digest_func) sha384_digest; - ctx->init = (init_func) sha384_init; + ctx->update = (update_func)aarch64_sha512_update; + ctx->digest = (digest_func)sha384_digest; + ctx->init = (init_func)sha384_init; ctx->ctx_ptr = &ctx->ctx.sha384; ctx->length = SHA384_DIGEST_SIZE; break; case GNUTLS_DIG_SHA512: sha512_init(&ctx->ctx.sha512); - ctx->update = (update_func) aarch64_sha512_update; - ctx->digest = (digest_func) sha512_digest; - ctx->init = (init_func) sha512_init; + ctx->update = (update_func)aarch64_sha512_update; + ctx->digest = (digest_func)sha512_digest; + ctx->init = (init_func)sha512_init; ctx->ctx_ptr = &ctx->ctx.sha512; ctx->length = SHA512_DIGEST_SIZE; break; @@ -308,7 +306,7 @@ static void *wrap_aarch64_hash_copy(const void *_ctx) { struct aarch64_hash_ctx *new_ctx; const struct aarch64_hash_ctx *ctx = _ctx; - ptrdiff_t off = (uint8_t *) ctx->ctx_ptr - (uint8_t *) (&ctx->ctx); + ptrdiff_t off = (uint8_t *)ctx->ctx_ptr - (uint8_t *)(&ctx->ctx); new_ctx = gnutls_malloc(sizeof(struct aarch64_hash_ctx)); if (new_ctx == NULL) { @@ -317,13 +315,13 @@ static void *wrap_aarch64_hash_copy(const void *_ctx) } memcpy(new_ctx, ctx, sizeof(*new_ctx)); - new_ctx->ctx_ptr = (uint8_t *) & new_ctx->ctx + off; + new_ctx->ctx_ptr = (uint8_t *)&new_ctx->ctx + off; return new_ctx; } -static int -wrap_aarch64_hash_output(void *src_ctx, void *digest, size_t digestsize) +static int wrap_aarch64_hash_output(void *src_ctx, void *digest, + size_t digestsize) { struct aarch64_hash_ctx *ctx; ctx = src_ctx; @@ -354,16 +352,16 @@ static int wrap_aarch64_hash_fast(gnutls_digest_algorithm_t algo, } const struct nettle_hash aarch64_sha1 = -NN_HASH(sha1, aarch64_sha1_update, sha1_digest, SHA1); + NN_HASH(sha1, aarch64_sha1_update, sha1_digest, SHA1); const struct nettle_hash aarch64_sha224 = -NN_HASH(sha224, aarch64_sha256_update, sha224_digest, SHA224); + NN_HASH(sha224, aarch64_sha256_update, sha224_digest, SHA224); const struct nettle_hash aarch64_sha256 = -NN_HASH(sha256, aarch64_sha256_update, sha256_digest, SHA256); + NN_HASH(sha256, aarch64_sha256_update, sha256_digest, SHA256); const struct nettle_hash aarch64_sha384 = -NN_HASH(sha384, aarch64_sha512_update, sha384_digest, SHA384); + NN_HASH(sha384, aarch64_sha512_update, sha384_digest, SHA384); const struct nettle_hash aarch64_sha512 = -NN_HASH(sha512, aarch64_sha512_update, sha512_digest, SHA512); + NN_HASH(sha512, aarch64_sha512_update, sha512_digest, SHA512); const gnutls_crypto_digest_st _gnutls_sha_aarch64 = { .init = wrap_aarch64_hash_init, diff --git a/lib/accelerated/aarch64/sha-aarch64.h b/lib/accelerated/aarch64/sha-aarch64.h index ee13a7dbd0..25eb4f3d60 100644 --- a/lib/accelerated/aarch64/sha-aarch64.h +++ b/lib/accelerated/aarch64/sha-aarch64.h @@ -1,7 +1,7 @@ #ifndef GNUTLS_LIB_ACCELERATED_AARCH64_SHA_AARCH64_H -# define GNUTLS_LIB_ACCELERATED_AARCH64_SHA_AARCH64_H +#define GNUTLS_LIB_ACCELERATED_AARCH64_SHA_AARCH64_H -# include +#include extern const struct nettle_hash aarch64_sha1; extern const struct nettle_hash aarch64_sha224; @@ -13,10 +13,10 @@ extern const gnutls_crypto_digest_st _gnutls_sha_aarch64; extern const gnutls_crypto_mac_st _gnutls_hmac_sha_aarch64; void aarch64_sha1_update(struct sha1_ctx *ctx, size_t length, - const uint8_t * data); + const uint8_t *data); void aarch64_sha256_update(struct sha256_ctx *ctx, size_t length, - const uint8_t * data); + const uint8_t *data); void aarch64_sha512_update(struct sha512_ctx *ctx, size_t length, - const uint8_t * data); + const uint8_t *data); -#endif /* GNUTLS_LIB_ACCELERATED_AARCH64_SHA_AARCH64_H */ +#endif /* GNUTLS_LIB_ACCELERATED_AARCH64_SHA_AARCH64_H */ diff --git a/lib/accelerated/accelerated.c b/lib/accelerated/accelerated.c index 8fb0b11f65..c7d0442f09 100644 --- a/lib/accelerated/accelerated.c +++ b/lib/accelerated/accelerated.c @@ -23,10 +23,10 @@ #include #include #if defined(ASM_X86) -# include -# include +#include +#include #elif defined(ASM_AARCH64) -# include +#include #endif void _gnutls_register_accel_crypto(void) diff --git a/lib/accelerated/accelerated.h b/lib/accelerated/accelerated.h index 3f722aa2c1..990ddbc717 100644 --- a/lib/accelerated/accelerated.h +++ b/lib/accelerated/accelerated.h @@ -1,6 +1,6 @@ #ifndef GNUTLS_LIB_ACCELERATED_ACCELERATED_H -# define GNUTLS_LIB_ACCELERATED_ACCELERATED_H +#define GNUTLS_LIB_ACCELERATED_ACCELERATED_H void _gnutls_register_accel_crypto(void); -#endif /* GNUTLS_LIB_ACCELERATED_ACCELERATED_H */ +#endif /* GNUTLS_LIB_ACCELERATED_ACCELERATED_H */ diff --git a/lib/accelerated/afalg.c b/lib/accelerated/afalg.c index 9c27fc95e6..d7cb1d940b 100644 --- a/lib/accelerated/afalg.c +++ b/lib/accelerated/afalg.c @@ -23,13 +23,13 @@ #ifdef ENABLE_AFALG -# include "errors.h" -# include "gnutls_int.h" +#include "errors.h" +#include "gnutls_int.h" -# include -# include -# include -# include "malloca.h" +#include +#include +#include +#include "malloca.h" /************************ Symmetric cipher algorithms ************************/ @@ -52,8 +52,8 @@ static const char *gnutls_cipher_map[] = { [GNUTLS_CIPHER_AES_256_XTS] = "xts(aes)", }; -static int -afalg_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, int enc) +static int afalg_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, + int enc) { struct kcapi_handle *handle; struct kcapi_ctx *ctx; @@ -102,14 +102,14 @@ static int afalg_cipher_setiv(void *_ctx, const void *iv, size_t iv_size) memcpy(ctx->iv, iv, iv_size); if (ctx->enc) { - if (kcapi_cipher_stream_init_enc(ctx->handle, ctx->iv, NULL, 0) - < 0) { + if (kcapi_cipher_stream_init_enc(ctx->handle, ctx->iv, NULL, + 0) < 0) { gnutls_assert(); return GNUTLS_E_ENCRYPTION_FAILED; } } else { - if (kcapi_cipher_stream_init_dec(ctx->handle, ctx->iv, NULL, 0) - < 0) { + if (kcapi_cipher_stream_init_dec(ctx->handle, ctx->iv, NULL, + 0) < 0) { gnutls_assert(); return GNUTLS_E_ENCRYPTION_FAILED; } @@ -218,9 +218,8 @@ static int afalg_cipher_register(void) _gnutls_debug_log("afalg: registering: %s\n", gnutls_cipher_get_name(i)); - ret = gnutls_crypto_single_cipher_register(i, 90, - &afalg_cipher_struct, - 0); + ret = gnutls_crypto_single_cipher_register( + i, 90, &afalg_cipher_struct, 0); if (ret < 0) { gnutls_assert(); return ret; @@ -255,8 +254,8 @@ static void afalg_aead_deinit(void *_ctx) gnutls_free(ctx); } -static int -afalg_aead_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, int enc) +static int afalg_aead_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, + int enc) { struct kcapi_handle *handle; struct kcapi_aead_ctx *ctx; @@ -299,12 +298,10 @@ static int afalg_aead_setkey(void *_ctx, const void *key, size_t keysize) return 0; } -static int afalg_aead_decrypt(void *_ctx, - const void *nonce, size_t nonce_size, +static int afalg_aead_decrypt(void *_ctx, const void *nonce, size_t nonce_size, const void *auth, size_t auth_size, - size_t tag_size, - const void *encr, size_t encr_size, - void *plain, size_t plain_size) + size_t tag_size, const void *encr, + size_t encr_size, void *plain, size_t plain_size) { int ret = 0; struct kcapi_aead_ctx *ctx = _ctx; @@ -349,8 +346,8 @@ static int afalg_aead_decrypt(void *_ctx, ret = GNUTLS_E_DECRYPTION_FAILED; goto end; } - if (kcapi_aead_stream_init_dec(ctx->handle, ccm_iv, NULL, 0) - < 0) { + if (kcapi_aead_stream_init_dec(ctx->handle, ccm_iv, NULL, 0) < + 0) { free(ccm_iv); gnutls_assert(); ret = GNUTLS_E_DECRYPTION_FAILED; @@ -358,8 +355,8 @@ static int afalg_aead_decrypt(void *_ctx, } free(ccm_iv); } else { - if (kcapi_aead_stream_init_dec(ctx->handle, nonce, NULL, 0) - < 0) { + if (kcapi_aead_stream_init_dec(ctx->handle, nonce, NULL, 0) < + 0) { gnutls_assert(); ret = GNUTLS_E_DECRYPTION_FAILED; goto end; @@ -392,8 +389,8 @@ static int afalg_aead_decrypt(void *_ctx, /* Set PT buffer to be filled by kernel */ uint32_t outbuflen = kcapi_aead_outbuflen_dec(ctx->handle, encr_size - tag_size, - auth_size, - tag_size) - auth_size; + auth_size, tag_size) - + auth_size; iov[1].iov_base = (void *)plain; iov[1].iov_len = (plain_size > outbuflen) ? outbuflen : plain_size; @@ -403,16 +400,15 @@ static int afalg_aead_decrypt(void *_ctx, goto end; } - end: +end: freea(authtmp); return ret; } static int afalg_aead_encrypt(void *_ctx, const void *nonce, size_t nonce_size, const void *auth, size_t auth_size, - size_t tag_size, - const void *plain, size_t plain_size, - void *encr, size_t encr_size) + size_t tag_size, const void *plain, + size_t plain_size, void *encr, size_t encr_size) { int ret = 0; struct kcapi_aead_ctx *ctx = _ctx; @@ -460,8 +456,8 @@ static int afalg_aead_encrypt(void *_ctx, const void *nonce, size_t nonce_size, ret = GNUTLS_E_ENCRYPTION_FAILED; goto end; } - if (kcapi_aead_stream_init_enc(ctx->handle, ccm_iv, NULL, 0) - < 0) { + if (kcapi_aead_stream_init_enc(ctx->handle, ccm_iv, NULL, 0) < + 0) { free(ccm_iv); gnutls_assert(); ret = GNUTLS_E_ENCRYPTION_FAILED; @@ -469,8 +465,8 @@ static int afalg_aead_encrypt(void *_ctx, const void *nonce, size_t nonce_size, } free(ccm_iv); } else { - if (kcapi_aead_stream_init_enc(ctx->handle, nonce, NULL, 0) - < 0) { + if (kcapi_aead_stream_init_enc(ctx->handle, nonce, NULL, 0) < + 0) { gnutls_assert(); ret = GNUTLS_E_ENCRYPTION_FAILED; goto end; @@ -513,9 +509,9 @@ static int afalg_aead_encrypt(void *_ctx, const void *nonce, size_t nonce_size, iov[0].iov_len = auth_size; /* Set CT buffer to be filled by kernel */ - uint32_t outbuflen = kcapi_aead_outbuflen_enc(ctx->handle, - plain_size, auth_size, - tag_size) - auth_size; + uint32_t outbuflen = kcapi_aead_outbuflen_enc(ctx->handle, plain_size, + auth_size, tag_size) - + auth_size; iov[1].iov_base = encr; iov[1].iov_len = (encr_size > outbuflen) ? outbuflen : encr_size; @@ -526,7 +522,7 @@ static int afalg_aead_encrypt(void *_ctx, const void *nonce, size_t nonce_size, goto end; } - end: +end: freea(authtmp); return ret; } @@ -544,8 +540,8 @@ static int afalg_aead_register(void) unsigned int i; int ret = 0; - for (i = 0; - i < sizeof(gnutls_aead_map) / sizeof(gnutls_aead_map[0]); i++) { + for (i = 0; i < sizeof(gnutls_aead_map) / sizeof(gnutls_aead_map[0]); + i++) { struct kcapi_handle *handle; if (gnutls_aead_map[i] == 0) @@ -559,9 +555,8 @@ static int afalg_aead_register(void) _gnutls_debug_log("afalg: registering: %s\n", gnutls_cipher_get_name(i)); - ret = gnutls_crypto_single_cipher_register(i, 90, - &afalg_aead_struct, - 0); + ret = gnutls_crypto_single_cipher_register( + i, 90, &afalg_aead_struct, 0); if (ret < 0) { gnutls_assert(); return ret; @@ -639,7 +634,6 @@ static int afalg_mac_output(void *ctx, void *digest, size_t digestsize) } return 0; - } static void afalg_mac_deinit(void *ctx) @@ -686,7 +680,7 @@ static int afalg_mac_fast(gnutls_mac_algorithm_t algorithm, const void *nonce, ret = 0; - out: +out: kcapi_md_destroy(handle); return ret; @@ -707,7 +701,8 @@ static int afalg_mac_register(void) unsigned int i; int ret = 0; - for (i = 0; i < sizeof(gnutls_mac_map) / sizeof(gnutls_mac_map[0]); i++) { + for (i = 0; i < sizeof(gnutls_mac_map) / sizeof(gnutls_mac_map[0]); + i++) { struct kcapi_handle *handle; if (gnutls_mac_map[i] == 0) @@ -787,7 +782,7 @@ static int afalg_digest_fast(gnutls_digest_algorithm_t algorithm, ret = 0; - out: +out: kcapi_md_destroy(handle); return ret; @@ -822,9 +817,8 @@ static int afalg_digest_register(void) _gnutls_debug_log("afalg: registering: %s\n", gnutls_digest_get_name(i)); - ret = gnutls_crypto_single_digest_register(i, 90, - &afalg_digest_struct, - 0); + ret = gnutls_crypto_single_digest_register( + i, 90, &afalg_digest_struct, 0); if (ret < 0) { gnutls_assert(); return ret; @@ -858,7 +852,7 @@ void _gnutls_afalg_deinit(void) return; } -#else /* ENABLE_AFALG */ +#else /* ENABLE_AFALG */ int _gnutls_afalg_init(void) { @@ -870,4 +864,4 @@ void _gnutls_afalg_deinit(void) return; } -#endif /* ENABLE_AFALG */ +#endif /* ENABLE_AFALG */ diff --git a/lib/accelerated/cryptodev-gcm.c b/lib/accelerated/cryptodev-gcm.c index 35073b8b62..8a8fb68ffa 100644 --- a/lib/accelerated/cryptodev-gcm.c +++ b/lib/accelerated/cryptodev-gcm.c @@ -28,21 +28,21 @@ #ifdef ENABLE_CRYPTODEV -# include -# include -# include +#include +#include +#include -# ifndef CRYPTO_CIPHER_MAX_KEY_LEN -# define CRYPTO_CIPHER_MAX_KEY_LEN 64 -# endif +#ifndef CRYPTO_CIPHER_MAX_KEY_LEN +#define CRYPTO_CIPHER_MAX_KEY_LEN 64 +#endif -# ifndef EALG_MAX_BLOCK_LEN -# define EALG_MAX_BLOCK_LEN 16 -# endif +#ifndef EALG_MAX_BLOCK_LEN +#define EALG_MAX_BLOCK_LEN 16 +#endif -# ifdef CIOCAUTHCRYPT +#ifdef CIOCAUTHCRYPT -# define GCM_BLOCK_SIZE 16 +#define GCM_BLOCK_SIZE 16 struct cryptodev_gcm_ctx { struct session_op sess; @@ -53,7 +53,7 @@ struct cryptodev_gcm_ctx { void *auth_data; unsigned int auth_data_size; - int op; /* whether encryption op has been executed */ + int op; /* whether encryption op has been executed */ int cfd; }; @@ -72,8 +72,8 @@ static const int cipher_map[] = { [GNUTLS_CIPHER_AES_256_GCM] = CRYPTO_AES_GCM, }; -static int -aes_gcm_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, int enc) +static int aes_gcm_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, + int enc) { struct cryptodev_gcm_ctx *ctx; @@ -92,8 +92,8 @@ aes_gcm_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, int enc) return 0; } -static int -aes_gcm_cipher_setkey(void *_ctx, const void *userkey, size_t keysize) +static int aes_gcm_cipher_setkey(void *_ctx, const void *userkey, + size_t keysize) { struct cryptodev_gcm_ctx *ctx = _ctx; @@ -125,9 +125,8 @@ static int aes_gcm_setiv(void *_ctx, const void *iv, size_t iv_size) return 0; } -static int -aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t dst_size) +static int aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t dst_size) { struct cryptodev_gcm_ctx *ctx = _ctx; @@ -152,13 +151,12 @@ aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, ctx->cryp.auth_len = 0; ctx->op = 1; - memcpy(ctx->tag, &((uint8_t *) dst)[src_size], GCM_BLOCK_SIZE); + memcpy(ctx->tag, &((uint8_t *)dst)[src_size], GCM_BLOCK_SIZE); return 0; } -static int -aes_gcm_decrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t dst_size) +static int aes_gcm_decrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t dst_size) { struct cryptodev_gcm_ctx *ctx = _ctx; @@ -183,7 +181,7 @@ aes_gcm_decrypt(void *_ctx, const void *src, size_t src_size, ctx->cryp.auth_len = 0; ctx->op = 1; - memcpy(ctx->tag, &((uint8_t *) dst)[src_size], GCM_BLOCK_SIZE); + memcpy(ctx->tag, &((uint8_t *)dst)[src_size], GCM_BLOCK_SIZE); return 0; } @@ -221,7 +219,7 @@ static void aes_gcm_tag(void *_ctx, void *tag, size_t tagsize) ctx->op = 0; } -# include "x86/aes-gcm-aead.h" +#include "x86/aes-gcm-aead.h" static const gnutls_crypto_cipher_st cipher_struct = { .init = aes_gcm_cipher_init, @@ -242,11 +240,11 @@ int _cryptodev_register_gcm_crypto(int cfd) uint8_t fake_key[CRYPTO_CIPHER_MAX_KEY_LEN]; unsigned int i; int ret; -# ifdef CIOCGSESSINFO +#ifdef CIOCGSESSINFO struct session_info_op siop; memset(&siop, 0, sizeof(siop)); -# endif +#endif memset(&sess, 0, sizeof(sess)); @@ -262,33 +260,32 @@ int _cryptodev_register_gcm_crypto(int cfd) if (ioctl(cfd, CIOCGSESSION, &sess)) { continue; } -# ifdef CIOCGSESSINFO - siop.ses = sess.ses; /* do not register ciphers that are not hw accelerated */ +#ifdef CIOCGSESSINFO + siop.ses = + sess.ses; /* do not register ciphers that are not hw accelerated */ if (ioctl(cfd, CIOCGSESSINFO, &siop) == 0) { if (!(siop.flags & SIOP_FLAG_KERNEL_DRIVER_ONLY)) { ioctl(cfd, CIOCFSESSION, &sess.ses); continue; } } -# endif +#endif ioctl(cfd, CIOCFSESSION, &sess.ses); _gnutls_debug_log("/dev/crypto: registering: %s\n", gnutls_cipher_get_name(i)); - ret = - gnutls_crypto_single_cipher_register(i, 90, - &cipher_struct, 0); + ret = gnutls_crypto_single_cipher_register(i, 90, + &cipher_struct, 0); if (ret < 0) { gnutls_assert(); return ret; } - } return 0; } -# endif /* CIOCAUTHCRYPT */ +#endif /* CIOCAUTHCRYPT */ -#endif /* ENABLE_CRYPTODEV */ +#endif /* ENABLE_CRYPTODEV */ diff --git a/lib/accelerated/cryptodev.c b/lib/accelerated/cryptodev.c index 0a60ab241d..beb148f9c4 100644 --- a/lib/accelerated/cryptodev.c +++ b/lib/accelerated/cryptodev.c @@ -28,18 +28,18 @@ #ifdef ENABLE_CRYPTODEV -# include -# include -# include -# include +#include +#include +#include +#include -# ifndef CRYPTO_CIPHER_MAX_KEY_LEN -# define CRYPTO_CIPHER_MAX_KEY_LEN 64 -# endif +#ifndef CRYPTO_CIPHER_MAX_KEY_LEN +#define CRYPTO_CIPHER_MAX_KEY_LEN 64 +#endif -# ifndef EALG_MAX_BLOCK_LEN -# define EALG_MAX_BLOCK_LEN 16 -# endif +#ifndef EALG_MAX_BLOCK_LEN +#define EALG_MAX_BLOCK_LEN 16 +#endif int _gnutls_cryptodev_fd = -1; @@ -64,8 +64,8 @@ static const int gnutls_cipher_map[] = { [GNUTLS_CIPHER_DES_CBC] = CRYPTO_DES_CBC, }; -static int -cryptodev_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, int enc) +static int cryptodev_cipher_init(gnutls_cipher_algorithm_t algorithm, + void **_ctx, int enc) { struct cryptodev_ctx *ctx; int cipher = gnutls_cipher_map[algorithm]; @@ -115,9 +115,8 @@ static int cryptodev_setiv(void *_ctx, const void *iv, size_t iv_size) return 0; } -static int -cryptodev_encrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t dst_size) +static int cryptodev_encrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t dst_size) { struct cryptodev_ctx *ctx = _ctx; ctx->cryp.len = src_size; @@ -139,9 +138,8 @@ cryptodev_encrypt(void *_ctx, const void *src, size_t src_size, return 0; } -static int -cryptodev_decrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t dst_size) +static int cryptodev_decrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t dst_size) { struct cryptodev_ctx *ctx = _ctx; @@ -187,9 +185,9 @@ static int register_crypto(int cfd) uint8_t fake_key[CRYPTO_CIPHER_MAX_KEY_LEN]; unsigned int i; int ret; -# ifdef CIOCGSESSINFO +#ifdef CIOCGSESSINFO struct session_info_op siop; -# endif +#endif memset(&sess, 0, sizeof(sess)); @@ -207,37 +205,36 @@ static int register_crypto(int cfd) if (ioctl(cfd, CIOCGSESSION, &sess)) { continue; } -# ifdef CIOCGSESSINFO +#ifdef CIOCGSESSINFO memset(&siop, 0, sizeof(siop)); - siop.ses = sess.ses; /* do not register ciphers that are not hw accelerated */ + siop.ses = + sess.ses; /* do not register ciphers that are not hw accelerated */ if (ioctl(cfd, CIOCGSESSINFO, &siop) == 0) { if (!(siop.flags & SIOP_FLAG_KERNEL_DRIVER_ONLY)) { ioctl(cfd, CIOCFSESSION, &sess.ses); continue; } } -# endif +#endif ioctl(cfd, CIOCFSESSION, &sess.ses); _gnutls_debug_log("/dev/crypto: registering: %s\n", gnutls_cipher_get_name(i)); - ret = - gnutls_crypto_single_cipher_register(i, 90, - &cipher_struct, 0); + ret = gnutls_crypto_single_cipher_register(i, 90, + &cipher_struct, 0); if (ret < 0) { gnutls_assert(); return ret; } - } -# ifdef CIOCAUTHCRYPT +#ifdef CIOCAUTHCRYPT return _cryptodev_register_gcm_crypto(cfd); -# else +#else return 0; -# endif +#endif } int _gnutls_cryptodev_init(void) @@ -250,7 +247,7 @@ int _gnutls_cryptodev_init(void) gnutls_assert(); return GNUTLS_E_CRYPTODEV_DEVICE_ERROR; } -# ifndef CRIOGET_NOT_NEEDED +#ifndef CRIOGET_NOT_NEEDED { int cfd = -1; /* Clone file descriptor */ @@ -268,7 +265,7 @@ int _gnutls_cryptodev_init(void) close(_gnutls_cryptodev_fd); _gnutls_cryptodev_fd = cfd; } -# endif +#endif ret = register_crypto(_gnutls_cryptodev_fd); if (ret < 0) @@ -298,7 +295,7 @@ void _gnutls_cryptodev_deinit(void) /* if we are using linux /dev/crypto */ -# if defined(COP_FLAG_UPDATE) && defined(COP_FLAG_RESET) +#if defined(COP_FLAG_UPDATE) && defined(COP_FLAG_RESET) static const int gnutls_mac_map[] = { [GNUTLS_MAC_MD5] = CRYPTO_MD5_HMAC, @@ -308,11 +305,10 @@ static const int gnutls_mac_map[] = { [GNUTLS_MAC_SHA512] = CRYPTO_SHA2_512_HMAC, }; -static int -cryptodev_mac_fast(gnutls_mac_algorithm_t algo, - const void *nonce, size_t nonce_size, - const void *key, size_t key_size, const void *text, - size_t text_size, void *digest) +static int cryptodev_mac_fast(gnutls_mac_algorithm_t algo, const void *nonce, + size_t nonce_size, const void *key, + size_t key_size, const void *text, + size_t text_size, void *digest) { struct cryptodev_ctx ctx; int ret; @@ -346,17 +342,15 @@ cryptodev_mac_fast(gnutls_mac_algorithm_t algo, return 0; } -# define cryptodev_mac_deinit cryptodev_deinit +#define cryptodev_mac_deinit cryptodev_deinit -static const gnutls_crypto_mac_st mac_struct = { - .init = NULL, - .setkey = NULL, - .setnonce = NULL, - .hash = NULL, - .output = NULL, - .deinit = NULL, - .fast = cryptodev_mac_fast -}; +static const gnutls_crypto_mac_st mac_struct = { .init = NULL, + .setkey = NULL, + .setnonce = NULL, + .hash = NULL, + .output = NULL, + .deinit = NULL, + .fast = cryptodev_mac_fast }; /* Digest algorithms */ @@ -368,9 +362,9 @@ static const int gnutls_digest_map[] = { [GNUTLS_DIG_SHA512] = CRYPTO_SHA2_512, }; -static int -cryptodev_digest_fast(gnutls_digest_algorithm_t algo, - const void *text, size_t text_size, void *digest) +static int cryptodev_digest_fast(gnutls_digest_algorithm_t algo, + const void *text, size_t text_size, + void *digest) { struct cryptodev_ctx ctx; int ret; @@ -413,12 +407,13 @@ static int register_mac_digest(int cfd) uint8_t fake_key[CRYPTO_CIPHER_MAX_KEY_LEN]; unsigned int i; int ret; -# ifdef CIOCGSESSINFO +#ifdef CIOCGSESSINFO struct session_info_op siop; -# endif +#endif memset(&sess, 0, sizeof(sess)); - for (i = 0; i < sizeof(gnutls_mac_map) / sizeof(gnutls_mac_map[0]); i++) { + for (i = 0; i < sizeof(gnutls_mac_map) / sizeof(gnutls_mac_map[0]); + i++) { if (gnutls_mac_map[i] == 0) continue; @@ -429,17 +424,18 @@ static int register_mac_digest(int cfd) if (ioctl(cfd, CIOCGSESSION, &sess)) { continue; } -# ifdef CIOCGSESSINFO +#ifdef CIOCGSESSINFO memset(&siop, 0, sizeof(siop)); - siop.ses = sess.ses; /* do not register ciphers that are not hw accelerated */ + siop.ses = + sess.ses; /* do not register ciphers that are not hw accelerated */ if (ioctl(cfd, CIOCGSESSINFO, &siop) == 0) { if (!(siop.flags & SIOP_FLAG_KERNEL_DRIVER_ONLY)) { ioctl(cfd, CIOCFSESSION, &sess.ses); continue; } } -# endif +#endif _gnutls_debug_log("/dev/crypto: registering: HMAC-%s\n", gnutls_mac_get_name(i)); @@ -464,7 +460,7 @@ static int register_mac_digest(int cfd) if (ioctl(cfd, CIOCGSESSION, &sess)) { continue; } -# ifdef CIOCGSESSINFO +#ifdef CIOCGSESSINFO memset(&siop, 0, sizeof(siop)); siop.ses = sess.ses; @@ -474,15 +470,14 @@ static int register_mac_digest(int cfd) continue; } } -# endif +#endif ioctl(cfd, CIOCFSESSION, &sess.ses); _gnutls_debug_log("/dev/crypto: registering: %s\n", gnutls_mac_get_name(i)); - ret = - gnutls_crypto_single_digest_register(i, 90, - &digest_struct, 0); + ret = gnutls_crypto_single_digest_register(i, 90, + &digest_struct, 0); if (ret < 0) { gnutls_assert(); return ret; @@ -492,15 +487,15 @@ static int register_mac_digest(int cfd) return 0; } -# else +#else static int register_mac_digest(int cfd) { return 0; } -# endif /* defined(COP_FLAG_UPDATE) */ +#endif /* defined(COP_FLAG_UPDATE) */ -#else /* ENABLE_CRYPTODEV */ +#else /* ENABLE_CRYPTODEV */ int _gnutls_cryptodev_init(void) { return 0; @@ -510,4 +505,4 @@ void _gnutls_cryptodev_deinit(void) { return; } -#endif /* ENABLE_CRYPTODEV */ +#endif /* ENABLE_CRYPTODEV */ diff --git a/lib/accelerated/cryptodev.h b/lib/accelerated/cryptodev.h index bd3567b5cc..9d40183fa6 100644 --- a/lib/accelerated/cryptodev.h +++ b/lib/accelerated/cryptodev.h @@ -1,14 +1,14 @@ #ifndef GNUTLS_LIB_ACCELERATED_CRYPTODEV_H -# define GNUTLS_LIB_ACCELERATED_CRYPTODEV_H +#define GNUTLS_LIB_ACCELERATED_CRYPTODEV_H extern int _gnutls_cryptodev_fd; -# define CHECK_AES_KEYSIZE(s) \ +#define CHECK_AES_KEYSIZE(s) \ if (s != 16 && s != 24 && s != 32) \ - return GNUTLS_E_INVALID_REQUEST + return GNUTLS_E_INVALID_REQUEST void _gnutls_cryptodev_deinit(void); int _gnutls_cryptodev_init(void); int _cryptodev_register_gcm_crypto(int cfd); -#endif /* GNUTLS_LIB_ACCELERATED_CRYPTODEV_H */ +#endif /* GNUTLS_LIB_ACCELERATED_CRYPTODEV_H */ diff --git a/lib/accelerated/x86/aes-cbc-x86-aesni.c b/lib/accelerated/x86/aes-cbc-x86-aesni.c index 3029701b8d..cf3c81df1a 100644 --- a/lib/accelerated/x86/aes-cbc-x86-aesni.c +++ b/lib/accelerated/x86/aes-cbc-x86-aesni.c @@ -40,13 +40,13 @@ struct aes_ctx { int enc; }; -static int -aes_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, int enc) +static int aes_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, + int enc) { /* we use key size to distinguish */ - if (algorithm != GNUTLS_CIPHER_AES_128_CBC - && algorithm != GNUTLS_CIPHER_AES_192_CBC - && algorithm != GNUTLS_CIPHER_AES_256_CBC) + if (algorithm != GNUTLS_CIPHER_AES_128_CBC && + algorithm != GNUTLS_CIPHER_AES_192_CBC && + algorithm != GNUTLS_CIPHER_AES_256_CBC) return GNUTLS_E_INVALID_REQUEST; *_ctx = gnutls_calloc(1, sizeof(struct aes_ctx)); @@ -68,13 +68,11 @@ static int aes_cipher_setkey(void *_ctx, const void *userkey, size_t keysize) CHECK_AES_KEYSIZE(keysize); if (ctx->enc) - ret = - aesni_set_encrypt_key(userkey, keysize * 8, - ALIGN16(&ctx->expanded_key)); + ret = aesni_set_encrypt_key(userkey, keysize * 8, + ALIGN16(&ctx->expanded_key)); else - ret = - aesni_set_decrypt_key(userkey, keysize * 8, - ALIGN16(&ctx->expanded_key)); + ret = aesni_set_decrypt_key(userkey, keysize * 8, + ALIGN16(&ctx->expanded_key)); if (ret != 0) return gnutls_assert_val(GNUTLS_E_ENCRYPTION_FAILED); @@ -93,9 +91,8 @@ static int aes_setiv(void *_ctx, const void *iv, size_t iv_size) return 0; } -static int -aes_encrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t dst_size) +static int aes_encrypt(void *_ctx, const void *src, size_t src_size, void *dst, + size_t dst_size) { struct aes_ctx *ctx = _ctx; @@ -110,9 +107,8 @@ aes_encrypt(void *_ctx, const void *src, size_t src_size, return 0; } -static int -aes_decrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t dst_size) +static int aes_decrypt(void *_ctx, const void *src, size_t src_size, void *dst, + size_t dst_size) { struct aes_ctx *ctx = _ctx; diff --git a/lib/accelerated/x86/aes-cbc-x86-ssse3.c b/lib/accelerated/x86/aes-cbc-x86-ssse3.c index ff5c128745..633006c1ae 100644 --- a/lib/accelerated/x86/aes-cbc-x86-ssse3.c +++ b/lib/accelerated/x86/aes-cbc-x86-ssse3.c @@ -40,13 +40,13 @@ struct aes_ctx { int enc; }; -static int -aes_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, int enc) +static int aes_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, + int enc) { /* we use key size to distinguish */ - if (algorithm != GNUTLS_CIPHER_AES_128_CBC - && algorithm != GNUTLS_CIPHER_AES_192_CBC - && algorithm != GNUTLS_CIPHER_AES_256_CBC) + if (algorithm != GNUTLS_CIPHER_AES_128_CBC && + algorithm != GNUTLS_CIPHER_AES_192_CBC && + algorithm != GNUTLS_CIPHER_AES_256_CBC) return GNUTLS_E_INVALID_REQUEST; *_ctx = gnutls_calloc(1, sizeof(struct aes_ctx)); @@ -60,8 +60,8 @@ aes_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, int enc) return 0; } -static int -aes_ssse3_cipher_setkey(void *_ctx, const void *userkey, size_t keysize) +static int aes_ssse3_cipher_setkey(void *_ctx, const void *userkey, + size_t keysize) { struct aes_ctx *ctx = _ctx; int ret; @@ -69,13 +69,11 @@ aes_ssse3_cipher_setkey(void *_ctx, const void *userkey, size_t keysize) CHECK_AES_KEYSIZE(keysize); if (ctx->enc) - ret = - vpaes_set_encrypt_key(userkey, keysize * 8, - ALIGN16(&ctx->expanded_key)); + ret = vpaes_set_encrypt_key(userkey, keysize * 8, + ALIGN16(&ctx->expanded_key)); else - ret = - vpaes_set_decrypt_key(userkey, keysize * 8, - ALIGN16(&ctx->expanded_key)); + ret = vpaes_set_decrypt_key(userkey, keysize * 8, + ALIGN16(&ctx->expanded_key)); if (ret != 0) return gnutls_assert_val(GNUTLS_E_ENCRYPTION_FAILED); @@ -83,9 +81,8 @@ aes_ssse3_cipher_setkey(void *_ctx, const void *userkey, size_t keysize) return 0; } -static int -aes_ssse3_encrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t dst_size) +static int aes_ssse3_encrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t dst_size) { struct aes_ctx *ctx = _ctx; @@ -100,9 +97,8 @@ aes_ssse3_encrypt(void *_ctx, const void *src, size_t src_size, return 0; } -static int -aes_ssse3_decrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t dst_size) +static int aes_ssse3_decrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t dst_size) { struct aes_ctx *ctx = _ctx; diff --git a/lib/accelerated/x86/aes-ccm-x86-aesni.c b/lib/accelerated/x86/aes-ccm-x86-aesni.c index 2c0d6733e4..98e8028c8f 100644 --- a/lib/accelerated/x86/aes-ccm-x86-aesni.c +++ b/lib/accelerated/x86/aes-ccm-x86-aesni.c @@ -30,14 +30,14 @@ #ifdef HAVE_LIBNETTLE -# include -# include "errors.h" -# include -# include -# include -# include -# include -# include +#include +#include "errors.h" +#include +#include +#include +#include +#include +#include typedef struct ccm_x86_aes_ctx { AES_KEY key; @@ -45,15 +45,15 @@ typedef struct ccm_x86_aes_ctx { /* CCM mode */ -static void x86_aes_encrypt(const void *_ctx, - size_t length, uint8_t * dst, const uint8_t * src) +static void x86_aes_encrypt(const void *_ctx, size_t length, uint8_t *dst, + const uint8_t *src) { AES_KEY *ctx = (void *)_ctx; aesni_ecb_encrypt(src, dst, length, ctx, 1); } -static int -aes_ccm_cipher_init(gnutls_cipher_algorithm_t algorithm, void **ctx, int enc) +static int aes_ccm_cipher_init(gnutls_cipher_algorithm_t algorithm, void **ctx, + int enc) { /* we use key size to distinguish */ if (algorithm != GNUTLS_CIPHER_AES_128_CCM && @@ -79,13 +79,11 @@ static int aes_ccm_cipher_setkey(void *_ctx, const void *key, size_t length) return 0; } -static int -aes_ccm_aead_encrypt(void *_ctx, - const void *nonce, size_t nonce_size, - const void *auth, size_t auth_size, - size_t tag_size, - const void *plain, size_t plain_size, - void *encr, size_t encr_size) +static int aes_ccm_aead_encrypt(void *_ctx, const void *nonce, + size_t nonce_size, const void *auth, + size_t auth_size, size_t tag_size, + const void *plain, size_t plain_size, + void *encr, size_t encr_size) { struct ccm_x86_aes_ctx *ctx = _ctx; /* proper AEAD cipher */ @@ -117,20 +115,17 @@ aes_ccm_aead_encrypt(void *_ctx, break; } - ccm_encrypt_message(&ctx->key, x86_aes_encrypt, - nonce_size, nonce, - auth_size, auth, - tag_size, plain_size + tag_size, encr, plain); + ccm_encrypt_message(&ctx->key, x86_aes_encrypt, nonce_size, nonce, + auth_size, auth, tag_size, plain_size + tag_size, + encr, plain); return 0; } -static int -aes_ccm_aead_decrypt(void *_ctx, - const void *nonce, size_t nonce_size, - const void *auth, size_t auth_size, - size_t tag_size, - const void *encr, size_t encr_size, - void *plain, size_t plain_size) +static int aes_ccm_aead_decrypt(void *_ctx, const void *nonce, + size_t nonce_size, const void *auth, + size_t auth_size, size_t tag_size, + const void *encr, size_t encr_size, void *plain, + size_t plain_size) { struct ccm_x86_aes_ctx *ctx = _ctx; int ret; @@ -165,10 +160,9 @@ aes_ccm_aead_decrypt(void *_ctx, break; } - ret = ccm_decrypt_message(&ctx->key, x86_aes_encrypt, - nonce_size, nonce, - auth_size, auth, - tag_size, encr_size - tag_size, plain, encr); + ret = ccm_decrypt_message(&ctx->key, x86_aes_encrypt, nonce_size, nonce, + auth_size, auth, tag_size, + encr_size - tag_size, plain, encr); if (unlikely(ret == 0)) return gnutls_assert_val(GNUTLS_E_DECRYPTION_FAILED); diff --git a/lib/accelerated/x86/aes-gcm-aead.h b/lib/accelerated/x86/aes-gcm-aead.h index 6f9bdb1d36..3041861f5c 100644 --- a/lib/accelerated/x86/aes-gcm-aead.h +++ b/lib/accelerated/x86/aes-gcm-aead.h @@ -1,13 +1,10 @@ #ifndef GNUTLS_LIB_ACCELERATED_X86_AES_GCM_AEAD_H -# define GNUTLS_LIB_ACCELERATED_X86_AES_GCM_AEAD_H - -static int -aes_gcm_aead_encrypt(void *ctx, - const void *nonce, size_t nonce_size, - const void *auth, size_t auth_size, - size_t tag_size, - const void *plain, size_t plain_size, - void *encr, size_t encr_size) +#define GNUTLS_LIB_ACCELERATED_X86_AES_GCM_AEAD_H + +static int aes_gcm_aead_encrypt(void *ctx, const void *nonce, size_t nonce_size, + const void *auth, size_t auth_size, + size_t tag_size, const void *plain, + size_t plain_size, void *encr, size_t encr_size) { /* proper AEAD cipher */ if (unlikely(encr_size - tag_size < plain_size)) @@ -18,17 +15,15 @@ aes_gcm_aead_encrypt(void *ctx, aes_gcm_encrypt(ctx, plain, plain_size, encr, encr_size); - aes_gcm_tag(ctx, ((uint8_t *) encr) + plain_size, tag_size); + aes_gcm_tag(ctx, ((uint8_t *)encr) + plain_size, tag_size); return 0; } -static int -aes_gcm_aead_decrypt(void *ctx, - const void *nonce, size_t nonce_size, - const void *auth, size_t auth_size, - size_t tag_size, - const void *encr, size_t encr_size, - void *plain, size_t plain_size) +static int aes_gcm_aead_decrypt(void *ctx, const void *nonce, size_t nonce_size, + const void *auth, size_t auth_size, + size_t tag_size, const void *encr, + size_t encr_size, void *plain, + size_t plain_size) { uint8_t tag[MAX_HASH_SIZE]; @@ -46,10 +41,10 @@ aes_gcm_aead_decrypt(void *ctx, aes_gcm_tag(ctx, tag, tag_size); - if (gnutls_memcmp(((uint8_t *) encr) + encr_size, tag, tag_size) != 0) + if (gnutls_memcmp(((uint8_t *)encr) + encr_size, tag, tag_size) != 0) return gnutls_assert_val(GNUTLS_E_DECRYPTION_FAILED); return 0; } -#endif /* GNUTLS_LIB_ACCELERATED_X86_AES_GCM_AEAD_H */ +#endif /* GNUTLS_LIB_ACCELERATED_X86_AES_GCM_AEAD_H */ diff --git a/lib/accelerated/x86/aes-gcm-padlock.c b/lib/accelerated/x86/aes-gcm-padlock.c index a822762592..3ffaa32fc4 100644 --- a/lib/accelerated/x86/aes-gcm-padlock.c +++ b/lib/accelerated/x86/aes-gcm-padlock.c @@ -29,28 +29,27 @@ #ifdef HAVE_LIBNETTLE -# include -# include "errors.h" -# include -# include -# include -# include -# include +#include +#include "errors.h" +#include +#include +#include +#include +#include -# define GCM_BLOCK_SIZE 16 +#define GCM_BLOCK_SIZE 16 /* GCM mode * Actually padlock doesn't include GCM mode. We just use * the ECB part of padlock and nettle for everything else. */ struct gcm_padlock_aes_ctx { - struct GCM_CTX (struct padlock_ctx) inner; + struct GCM_CTX(struct padlock_ctx) inner; size_t rekey_counter; }; -static void padlock_aes_encrypt(const void *_ctx, - size_t length, uint8_t * dst, - const uint8_t * src) +static void padlock_aes_encrypt(const void *_ctx, size_t length, uint8_t *dst, + const uint8_t *src) { struct padlock_ctx *ctx = (void *)_ctx; struct padlock_cipher_data *pce; @@ -62,7 +61,7 @@ static void padlock_aes_encrypt(const void *_ctx, } static void padlock_aes128_set_encrypt_key(struct padlock_ctx *_ctx, - const uint8_t * key) + const uint8_t *key) { struct padlock_ctx *ctx = _ctx; ctx->enc = 1; @@ -71,7 +70,7 @@ static void padlock_aes128_set_encrypt_key(struct padlock_ctx *_ctx, } static void padlock_aes256_set_encrypt_key(struct padlock_ctx *_ctx, - const uint8_t * key) + const uint8_t *key) { struct padlock_ctx *ctx = _ctx; ctx->enc = 1; @@ -87,8 +86,8 @@ static void aes_gcm_deinit(void *_ctx) gnutls_free(ctx); } -static int -aes_gcm_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, int enc) +static int aes_gcm_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, + int enc) { /* we use key size to distinguish */ if (algorithm != GNUTLS_CIPHER_AES_128_GCM && @@ -134,9 +133,8 @@ static int aes_gcm_setiv(void *_ctx, const void *iv, size_t iv_size) return 0; } -static int -aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t length) +static int aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t length) { struct gcm_padlock_aes_ctx *ctx = _ctx; int ret; @@ -154,9 +152,8 @@ aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, return 0; } -static int -aes_gcm_decrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t dst_size) +static int aes_gcm_decrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t dst_size) { struct gcm_padlock_aes_ctx *ctx = _ctx; @@ -183,7 +180,7 @@ static void aes_gcm_tag(void *_ctx, void *tag, size_t tagsize) GCM_DIGEST(&ctx->inner, padlock_aes_encrypt, tagsize, tag); } -# include "aes-gcm-aead.h" +#include "aes-gcm-aead.h" const gnutls_crypto_cipher_st _gnutls_aes_gcm_padlock = { .init = aes_gcm_cipher_init, diff --git a/lib/accelerated/x86/aes-gcm-x86-aesni.c b/lib/accelerated/x86/aes-gcm-x86-aesni.c index b36a8e452d..ef90b94dae 100644 --- a/lib/accelerated/x86/aes-gcm-x86-aesni.c +++ b/lib/accelerated/x86/aes-gcm-x86-aesni.c @@ -30,52 +30,52 @@ #ifdef HAVE_LIBNETTLE -# include -# include "errors.h" -# include -# include -# include -# include +#include +#include "errors.h" +#include +#include +#include +#include /* GCM mode * It is used when the CPU doesn't include the PCLMUL instructions. */ struct gcm_x86_aes_ctx { - struct GCM_CTX (AES_KEY) inner; + struct GCM_CTX(AES_KEY) inner; size_t rekey_counter; }; -static void x86_aes_encrypt(const void *_ctx, - size_t length, uint8_t * dst, const uint8_t * src) +static void x86_aes_encrypt(const void *_ctx, size_t length, uint8_t *dst, + const uint8_t *src) { AES_KEY *ctx = (void *)_ctx; aesni_ecb_encrypt(src, dst, length, ctx, 1); } -static void x86_aes128_set_encrypt_key(void *_ctx, const uint8_t * key) +static void x86_aes128_set_encrypt_key(void *_ctx, const uint8_t *key) { AES_KEY *ctx = _ctx; aesni_set_encrypt_key(key, 16 * 8, ctx); } -static void x86_aes192_set_encrypt_key(void *_ctx, const uint8_t * key) +static void x86_aes192_set_encrypt_key(void *_ctx, const uint8_t *key) { AES_KEY *ctx = _ctx; aesni_set_encrypt_key(key, 24 * 8, ctx); } -static void x86_aes256_set_encrypt_key(void *_ctx, const uint8_t * key) +static void x86_aes256_set_encrypt_key(void *_ctx, const uint8_t *key) { AES_KEY *ctx = _ctx; aesni_set_encrypt_key(key, 32 * 8, ctx); } -static int -aes_gcm_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, int enc) +static int aes_gcm_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, + int enc) { /* we use key size to distinguish */ if (algorithm != GNUTLS_CIPHER_AES_128_GCM && @@ -125,9 +125,8 @@ static int aes_gcm_setiv(void *_ctx, const void *iv, size_t iv_size) return 0; } -static int -aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t length) +static int aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t length) { struct gcm_x86_aes_ctx *ctx = _ctx; int ret; @@ -145,9 +144,8 @@ aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, return 0; } -static int -aes_gcm_decrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t dst_size) +static int aes_gcm_decrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t dst_size) { struct gcm_x86_aes_ctx *ctx = _ctx; @@ -182,7 +180,7 @@ static void aes_gcm_deinit(void *_ctx) gnutls_free(ctx); } -# include "aes-gcm-aead.h" +#include "aes-gcm-aead.h" const gnutls_crypto_cipher_st _gnutls_aes_gcm_x86_aesni = { .init = aes_gcm_cipher_init, diff --git a/lib/accelerated/x86/aes-gcm-x86-pclmul-avx.c b/lib/accelerated/x86/aes-gcm-x86-pclmul-avx.c index c0e6173ce2..fd1689e930 100644 --- a/lib/accelerated/x86/aes-gcm-x86-pclmul-avx.c +++ b/lib/accelerated/x86/aes-gcm-x86-pclmul-avx.c @@ -65,7 +65,7 @@ struct aes_gcm_ctx { }; void gcm_init_avx(u128 Htable[16], const uint64_t Xi[2]); -void gcm_ghash_avx(uint64_t Xi[2], const u128 Htable[16], const uint8_t * in, +void gcm_ghash_avx(uint64_t Xi[2], const u128 Htable[16], const uint8_t *in, size_t len); void gcm_gmult_avx(uint64_t Xi[2], const u128 Htable[16]); @@ -77,8 +77,8 @@ static void aes_gcm_deinit(void *_ctx) gnutls_free(ctx); } -static int -aes_gcm_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, int enc) +static int aes_gcm_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, + int enc) { /* we use key size to distinguish */ if (algorithm != GNUTLS_CIPHER_AES_128_GCM && @@ -95,22 +95,21 @@ aes_gcm_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, int enc) return 0; } -static int -aes_gcm_cipher_setkey(void *_ctx, const void *userkey, size_t keysize) +static int aes_gcm_cipher_setkey(void *_ctx, const void *userkey, + size_t keysize) { struct aes_gcm_ctx *ctx = _ctx; int ret; CHECK_AES_KEYSIZE(keysize); - ret = - aesni_set_encrypt_key(userkey, keysize * 8, - ALIGN16(&ctx->expanded_key)); + ret = aesni_set_encrypt_key(userkey, keysize * 8, + ALIGN16(&ctx->expanded_key)); if (ret != 0) return gnutls_assert_val(GNUTLS_E_ENCRYPTION_FAILED); - aesni_ecb_encrypt(ctx->gcm.H.c, ctx->gcm.H.c, - GCM_BLOCK_SIZE, ALIGN16(&ctx->expanded_key), 1); + aesni_ecb_encrypt(ctx->gcm.H.c, ctx->gcm.H.c, GCM_BLOCK_SIZE, + ALIGN16(&ctx->expanded_key), 1); ctx->gcm.H.u[0] = bswap_64(ctx->gcm.H.u[0]); ctx->gcm.H.u[1] = bswap_64(ctx->gcm.H.u[1]); @@ -137,8 +136,8 @@ static int aes_gcm_setiv(void *_ctx, const void *iv, size_t iv_size) ctx->gcm.Yi.c[GCM_BLOCK_SIZE - 2] = 0; ctx->gcm.Yi.c[GCM_BLOCK_SIZE - 1] = 1; - aesni_ecb_encrypt(ctx->gcm.Yi.c, ctx->gcm.EK0.c, - GCM_BLOCK_SIZE, ALIGN16(&ctx->expanded_key), 1); + aesni_ecb_encrypt(ctx->gcm.Yi.c, ctx->gcm.EK0.c, GCM_BLOCK_SIZE, + ALIGN16(&ctx->expanded_key), 1); ctx->gcm.Yi.c[GCM_BLOCK_SIZE - 1] = 2; ctx->finished = 0; ctx->auth_finished = 0; @@ -146,8 +145,8 @@ static int aes_gcm_setiv(void *_ctx, const void *iv, size_t iv_size) return 0; } -static void -gcm_ghash(struct aes_gcm_ctx *ctx, const uint8_t * src, size_t src_size) +static void gcm_ghash(struct aes_gcm_ctx *ctx, const uint8_t *src, + size_t src_size) { size_t rest = src_size % GCM_BLOCK_SIZE; size_t aligned_size = src_size - rest; @@ -162,24 +161,21 @@ gcm_ghash(struct aes_gcm_ctx *ctx, const uint8_t * src, size_t src_size) } } -static inline void -ctr_encrypt_last(struct aes_gcm_ctx *ctx, const uint8_t * src, - uint8_t * dst, size_t pos, size_t length) +static inline void ctr_encrypt_last(struct aes_gcm_ctx *ctx, const uint8_t *src, + uint8_t *dst, size_t pos, size_t length) { uint8_t tmp[GCM_BLOCK_SIZE]; uint8_t out[GCM_BLOCK_SIZE]; memcpy(tmp, &src[pos], length); - aesni_ctr32_encrypt_blocks(tmp, out, 1, - ALIGN16(&ctx->expanded_key), ctx->gcm.Yi.c); + aesni_ctr32_encrypt_blocks(tmp, out, 1, ALIGN16(&ctx->expanded_key), + ctx->gcm.Yi.c); memcpy(&dst[pos], out, length); - } -static int -aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t length) +static int aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t length) { struct aes_gcm_ctx *ctx = _ctx; int blocks = src_size / GCM_BLOCK_SIZE; @@ -200,8 +196,7 @@ aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, } if (blocks > 0) { - aesni_ctr32_encrypt_blocks(src, dst, - blocks, + aesni_ctr32_encrypt_blocks(src, dst, blocks, ALIGN16(&ctx->expanded_key), ctx->gcm.Yi.c); @@ -210,7 +205,7 @@ aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, _gnutls_write_uint32(counter, ctx->gcm.Yi.c + 12); } - if (rest > 0) { /* last incomplete block */ + if (rest > 0) { /* last incomplete block */ ctr_encrypt_last(ctx, src, dst, exp_blocks, rest); ctx->finished = 1; } @@ -221,9 +216,8 @@ aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, return 0; } -static int -aes_gcm_decrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t dst_size) +static int aes_gcm_decrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t dst_size) { struct aes_gcm_ctx *ctx = _ctx; int blocks = src_size / GCM_BLOCK_SIZE; @@ -241,8 +235,7 @@ aes_gcm_decrypt(void *_ctx, const void *src, size_t src_size, ctx->gcm.len.u[1] += src_size; if (blocks > 0) { - aesni_ctr32_encrypt_blocks(src, dst, - blocks, + aesni_ctr32_encrypt_blocks(src, dst, blocks, ALIGN16(&ctx->expanded_key), ctx->gcm.Yi.c); @@ -251,7 +244,7 @@ aes_gcm_decrypt(void *_ctx, const void *src, size_t src_size, _gnutls_write_uint32(counter, ctx->gcm.Yi.c + 12); } - if (rest > 0) { /* last incomplete block */ + if (rest > 0) { /* last incomplete block */ ctr_encrypt_last(ctx, src, dst, exp_blocks, rest); ctx->finished = 1; } @@ -297,13 +290,11 @@ static void aes_gcm_tag(void *_ctx, void *tag, size_t tagsize) #ifdef ASM_X86_64 /* requires AVX */ -static int -aesni_gcm_aead_encrypt(void *_ctx, - const void *nonce, size_t nonce_size, - const void *auth, size_t auth_size, - size_t tag_size, - const void *plain, size_t plain_size, - void *encr, size_t encr_size) +static int aesni_gcm_aead_encrypt(void *_ctx, const void *nonce, + size_t nonce_size, const void *auth, + size_t auth_size, size_t tag_size, + const void *plain, size_t plain_size, + void *encr, size_t encr_size) { struct aes_gcm_ctx *ctx = _ctx; size_t s = 0; @@ -322,21 +313,19 @@ aesni_gcm_aead_encrypt(void *_ctx, } if ((plain_size - s) > 0) - aes_gcm_encrypt(ctx, ((uint8_t *) plain) + s, plain_size - s, - ((uint8_t *) encr) + s, encr_size - s); + aes_gcm_encrypt(ctx, ((uint8_t *)plain) + s, plain_size - s, + ((uint8_t *)encr) + s, encr_size - s); - aes_gcm_tag(ctx, ((uint8_t *) encr) + plain_size, tag_size); + aes_gcm_tag(ctx, ((uint8_t *)encr) + plain_size, tag_size); return 0; } -static int -aesni_gcm_aead_decrypt(void *_ctx, - const void *nonce, size_t nonce_size, - const void *auth, size_t auth_size, - size_t tag_size, - const void *encr, size_t encr_size, - void *plain, size_t plain_size) +static int aesni_gcm_aead_decrypt(void *_ctx, const void *nonce, + size_t nonce_size, const void *auth, + size_t auth_size, size_t tag_size, + const void *encr, size_t encr_size, + void *plain, size_t plain_size) { struct aes_gcm_ctx *ctx = _ctx; uint8_t tag[MAX_HASH_SIZE]; @@ -361,21 +350,21 @@ aesni_gcm_aead_decrypt(void *_ctx, } if ((encr_size - s) > 0) { - aes_gcm_decrypt(ctx, ((uint8_t *) encr) + s, encr_size - s, - ((uint8_t *) plain) + s, plain_size - s); + aes_gcm_decrypt(ctx, ((uint8_t *)encr) + s, encr_size - s, + ((uint8_t *)plain) + s, plain_size - s); } aes_gcm_tag(ctx, tag, tag_size); - if (gnutls_memcmp(((uint8_t *) encr) + encr_size, tag, tag_size) != 0) + if (gnutls_memcmp(((uint8_t *)encr) + encr_size, tag, tag_size) != 0) return gnutls_assert_val(GNUTLS_E_DECRYPTION_FAILED); return 0; } #else -# define aesni_gcm_aead_decrypt aes_gcm_aead_decrypt -# define aesni_gcm_aead_encrypt aes_gcm_aead_encrypt -# include "aes-gcm-aead.h" +#define aesni_gcm_aead_decrypt aes_gcm_aead_decrypt +#define aesni_gcm_aead_encrypt aes_gcm_aead_encrypt +#include "aes-gcm-aead.h" #endif const gnutls_crypto_cipher_st _gnutls_aes_gcm_pclmul_avx = { diff --git a/lib/accelerated/x86/aes-gcm-x86-pclmul.c b/lib/accelerated/x86/aes-gcm-x86-pclmul.c index 8c8901eb82..596332c437 100644 --- a/lib/accelerated/x86/aes-gcm-x86-pclmul.c +++ b/lib/accelerated/x86/aes-gcm-x86-pclmul.c @@ -64,8 +64,8 @@ struct aes_gcm_ctx { }; void gcm_init_clmul(u128 Htable[16], const uint64_t Xi[2]); -void gcm_ghash_clmul(uint64_t Xi[2], const u128 Htable[16], - const uint8_t * inp, size_t len); +void gcm_ghash_clmul(uint64_t Xi[2], const u128 Htable[16], const uint8_t *inp, + size_t len); void gcm_gmult_clmul(uint64_t Xi[2], const u128 Htable[16]); static void aes_gcm_deinit(void *_ctx) @@ -76,8 +76,8 @@ static void aes_gcm_deinit(void *_ctx) gnutls_free(ctx); } -static int -aes_gcm_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, int enc) +static int aes_gcm_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, + int enc) { /* we use key size to distinguish */ if (algorithm != GNUTLS_CIPHER_AES_128_GCM && @@ -94,22 +94,21 @@ aes_gcm_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, int enc) return 0; } -static int -aes_gcm_cipher_setkey(void *_ctx, const void *userkey, size_t keysize) +static int aes_gcm_cipher_setkey(void *_ctx, const void *userkey, + size_t keysize) { struct aes_gcm_ctx *ctx = _ctx; int ret; CHECK_AES_KEYSIZE(keysize); - ret = - aesni_set_encrypt_key(userkey, keysize * 8, - ALIGN16(&ctx->expanded_key)); + ret = aesni_set_encrypt_key(userkey, keysize * 8, + ALIGN16(&ctx->expanded_key)); if (ret != 0) return gnutls_assert_val(GNUTLS_E_ENCRYPTION_FAILED); - aesni_ecb_encrypt(ctx->gcm.H.c, ctx->gcm.H.c, - GCM_BLOCK_SIZE, ALIGN16(&ctx->expanded_key), 1); + aesni_ecb_encrypt(ctx->gcm.H.c, ctx->gcm.H.c, GCM_BLOCK_SIZE, + ALIGN16(&ctx->expanded_key), 1); ctx->gcm.H.u[0] = bswap_64(ctx->gcm.H.u[0]); ctx->gcm.H.u[1] = bswap_64(ctx->gcm.H.u[1]); @@ -136,8 +135,8 @@ static int aes_gcm_setiv(void *_ctx, const void *iv, size_t iv_size) ctx->gcm.Yi.c[GCM_BLOCK_SIZE - 2] = 0; ctx->gcm.Yi.c[GCM_BLOCK_SIZE - 1] = 1; - aesni_ecb_encrypt(ctx->gcm.Yi.c, ctx->gcm.EK0.c, - GCM_BLOCK_SIZE, ALIGN16(&ctx->expanded_key), 1); + aesni_ecb_encrypt(ctx->gcm.Yi.c, ctx->gcm.EK0.c, GCM_BLOCK_SIZE, + ALIGN16(&ctx->expanded_key), 1); ctx->gcm.Yi.c[GCM_BLOCK_SIZE - 1] = 2; ctx->finished = 0; ctx->auth_finished = 0; @@ -145,8 +144,8 @@ static int aes_gcm_setiv(void *_ctx, const void *iv, size_t iv_size) return 0; } -static void -gcm_ghash(struct aes_gcm_ctx *ctx, const uint8_t * src, size_t src_size) +static void gcm_ghash(struct aes_gcm_ctx *ctx, const uint8_t *src, + size_t src_size) { size_t rest = src_size % GCM_BLOCK_SIZE; size_t aligned_size = src_size - rest; @@ -161,24 +160,21 @@ gcm_ghash(struct aes_gcm_ctx *ctx, const uint8_t * src, size_t src_size) } } -static inline void -ctr_encrypt_last(struct aes_gcm_ctx *ctx, const uint8_t * src, - uint8_t * dst, size_t pos, size_t length) +static inline void ctr_encrypt_last(struct aes_gcm_ctx *ctx, const uint8_t *src, + uint8_t *dst, size_t pos, size_t length) { uint8_t tmp[GCM_BLOCK_SIZE]; uint8_t out[GCM_BLOCK_SIZE]; memcpy(tmp, &src[pos], length); - aesni_ctr32_encrypt_blocks(tmp, out, 1, - ALIGN16(&ctx->expanded_key), ctx->gcm.Yi.c); + aesni_ctr32_encrypt_blocks(tmp, out, 1, ALIGN16(&ctx->expanded_key), + ctx->gcm.Yi.c); memcpy(&dst[pos], out, length); - } -static int -aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t length) +static int aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t length) { struct aes_gcm_ctx *ctx = _ctx; int blocks = src_size / GCM_BLOCK_SIZE; @@ -199,8 +195,7 @@ aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, } if (blocks > 0) { - aesni_ctr32_encrypt_blocks(src, dst, - blocks, + aesni_ctr32_encrypt_blocks(src, dst, blocks, ALIGN16(&ctx->expanded_key), ctx->gcm.Yi.c); @@ -209,7 +204,7 @@ aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, _gnutls_write_uint32(counter, ctx->gcm.Yi.c + 12); } - if (rest > 0) { /* last incomplete block */ + if (rest > 0) { /* last incomplete block */ ctr_encrypt_last(ctx, src, dst, exp_blocks, rest); ctx->finished = 1; } @@ -220,9 +215,8 @@ aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, return 0; } -static int -aes_gcm_decrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t dst_size) +static int aes_gcm_decrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t dst_size) { struct aes_gcm_ctx *ctx = _ctx; int blocks = src_size / GCM_BLOCK_SIZE; @@ -240,8 +234,7 @@ aes_gcm_decrypt(void *_ctx, const void *src, size_t src_size, ctx->gcm.len.u[1] += src_size; if (blocks > 0) { - aesni_ctr32_encrypt_blocks(src, dst, - blocks, + aesni_ctr32_encrypt_blocks(src, dst, blocks, ALIGN16(&ctx->expanded_key), ctx->gcm.Yi.c); @@ -250,7 +243,7 @@ aes_gcm_decrypt(void *_ctx, const void *src, size_t src_size, _gnutls_write_uint32(counter, ctx->gcm.Yi.c + 12); } - if (rest > 0) { /* last incomplete block */ + if (rest > 0) { /* last incomplete block */ ctr_encrypt_last(ctx, src, dst, exp_blocks, rest); ctx->finished = 1; } diff --git a/lib/accelerated/x86/aes-gcm-x86-ssse3.c b/lib/accelerated/x86/aes-gcm-x86-ssse3.c index b3aad36c8a..eee6ee944e 100644 --- a/lib/accelerated/x86/aes-gcm-x86-ssse3.c +++ b/lib/accelerated/x86/aes-gcm-x86-ssse3.c @@ -30,24 +30,24 @@ #ifdef HAVE_LIBNETTLE -# include -# include "errors.h" -# include -# include -# include -# include -# include +#include +#include "errors.h" +#include +#include +#include +#include +#include /* GCM mode * It is used when the CPU doesn't include the PCLMUL instructions. */ struct gcm_x86_aes_ctx { - struct GCM_CTX (AES_KEY) inner; + struct GCM_CTX(AES_KEY) inner; size_t rekey_counter; }; -static void x86_aes_encrypt(const void *_ctx, - size_t length, uint8_t * dst, const uint8_t * src) +static void x86_aes_encrypt(const void *_ctx, size_t length, uint8_t *dst, + const uint8_t *src) { AES_KEY *ctx = (void *)_ctx; unsigned i; @@ -62,29 +62,29 @@ static void x86_aes_encrypt(const void *_ctx, } } -static void x86_aes_128_set_encrypt_key(void *_ctx, const uint8_t * key) +static void x86_aes_128_set_encrypt_key(void *_ctx, const uint8_t *key) { AES_KEY *ctx = _ctx; vpaes_set_encrypt_key(key, 16 * 8, ctx); } -static void x86_aes_192_set_encrypt_key(void *_ctx, const uint8_t * key) +static void x86_aes_192_set_encrypt_key(void *_ctx, const uint8_t *key) { AES_KEY *ctx = _ctx; vpaes_set_encrypt_key(key, 24 * 8, ctx); } -static void x86_aes_256_set_encrypt_key(void *_ctx, const uint8_t * key) +static void x86_aes_256_set_encrypt_key(void *_ctx, const uint8_t *key) { AES_KEY *ctx = _ctx; vpaes_set_encrypt_key(key, 32 * 8, ctx); } -static int -aes_gcm_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, int enc) +static int aes_gcm_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, + int enc) { /* we use key size to distinguish */ if (algorithm != GNUTLS_CIPHER_AES_128_GCM && @@ -134,9 +134,8 @@ static int aes_gcm_setiv(void *_ctx, const void *iv, size_t iv_size) return 0; } -static int -aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t length) +static int aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t length) { struct gcm_x86_aes_ctx *ctx = _ctx; int ret; @@ -154,9 +153,8 @@ aes_gcm_encrypt(void *_ctx, const void *src, size_t src_size, return 0; } -static int -aes_gcm_decrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t dst_size) +static int aes_gcm_decrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t dst_size) { struct gcm_x86_aes_ctx *ctx = _ctx; @@ -191,7 +189,7 @@ static void aes_gcm_deinit(void *_ctx) gnutls_free(ctx); } -# include "aes-gcm-aead.h" +#include "aes-gcm-aead.h" const gnutls_crypto_cipher_st _gnutls_aes_gcm_x86_ssse3 = { .init = aes_gcm_cipher_init, diff --git a/lib/accelerated/x86/aes-padlock.c b/lib/accelerated/x86/aes-padlock.c index 6e1e755fa2..518d8bd4a8 100644 --- a/lib/accelerated/x86/aes-padlock.c +++ b/lib/accelerated/x86/aes-padlock.c @@ -32,17 +32,17 @@ #include "errors.h" #include #include -#include /* for key generation in 192 and 256 bits */ +#include /* for key generation in 192 and 256 bits */ #include #include -static int -aes_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, int enc) +static int aes_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, + int enc) { /* we use key size to distinguish */ - if (algorithm != GNUTLS_CIPHER_AES_128_CBC - && algorithm != GNUTLS_CIPHER_AES_256_CBC - && algorithm != GNUTLS_CIPHER_AES_192_CBC) + if (algorithm != GNUTLS_CIPHER_AES_128_CBC && + algorithm != GNUTLS_CIPHER_AES_256_CBC && + algorithm != GNUTLS_CIPHER_AES_192_CBC) return GNUTLS_E_INVALID_REQUEST; *_ctx = gnutls_calloc(1, sizeof(struct padlock_ctx)); @@ -125,9 +125,8 @@ static int aes_setiv(void *_ctx, const void *iv, size_t iv_size) return 0; } -static int -padlock_aes_cbc_encrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t dst_size) +static int padlock_aes_cbc_encrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t dst_size) { struct padlock_ctx *ctx = _ctx; struct padlock_cipher_data *pce; @@ -144,9 +143,8 @@ padlock_aes_cbc_encrypt(void *_ctx, const void *src, size_t src_size, return ret ? 0 : GNUTLS_E_ENCRYPTION_FAILED; } -static int -padlock_aes_cbc_decrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t dst_size) +static int padlock_aes_cbc_decrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t dst_size) { struct padlock_ctx *ctx = _ctx; struct padlock_cipher_data *pcd; diff --git a/lib/accelerated/x86/aes-padlock.h b/lib/accelerated/x86/aes-padlock.h index a33391ef19..0b638e2127 100644 --- a/lib/accelerated/x86/aes-padlock.h +++ b/lib/accelerated/x86/aes-padlock.h @@ -1,25 +1,25 @@ #ifndef GNUTLS_LIB_ACCELERATED_X86_AES_PADLOCK_H -# define GNUTLS_LIB_ACCELERATED_X86_AES_PADLOCK_H +#define GNUTLS_LIB_ACCELERATED_X86_AES_PADLOCK_H -# include "gnutls_int.h" -# include +#include "gnutls_int.h" +#include struct padlock_cipher_data { - unsigned char iv[16]; /* Initialization vector */ + unsigned char iv[16]; /* Initialization vector */ union { unsigned int pad[4]; struct { - unsigned rounds:4; - unsigned dgst:1; /* n/a in C3 */ - unsigned align:1; /* n/a in C3 */ - unsigned ciphr:1; /* n/a in C3 */ - unsigned int keygen:1; - unsigned interm:1; - unsigned int encdec:1; - unsigned ksize:2; + unsigned rounds : 4; + unsigned dgst : 1; /* n/a in C3 */ + unsigned align : 1; /* n/a in C3 */ + unsigned ciphr : 1; /* n/a in C3 */ + unsigned int keygen : 1; + unsigned interm : 1; + unsigned int encdec : 1; + unsigned ksize : 2; } b; - } cword; /* Control word */ - AES_KEY ks; /* Encryption key */ + } cword; /* Control word */ + AES_KEY ks; /* Encryption key */ }; struct padlock_ctx { @@ -42,4 +42,4 @@ int padlock_ecb_encrypt(void *out, const void *inp, struct padlock_cipher_data *ctx, size_t len); int padlock_cbc_encrypt(void *out, const void *inp, struct padlock_cipher_data *ctx, size_t len); -#endif /* GNUTLS_LIB_ACCELERATED_X86_AES_PADLOCK_H */ +#endif /* GNUTLS_LIB_ACCELERATED_X86_AES_PADLOCK_H */ diff --git a/lib/accelerated/x86/aes-x86.h b/lib/accelerated/x86/aes-x86.h index b9e6dc5b2a..c6bc1cb399 100644 --- a/lib/accelerated/x86/aes-x86.h +++ b/lib/accelerated/x86/aes-x86.h @@ -1,15 +1,15 @@ #ifndef GNUTLS_LIB_ACCELERATED_X86_AES_X86_H -# define GNUTLS_LIB_ACCELERATED_X86_AES_X86_H +#define GNUTLS_LIB_ACCELERATED_X86_AES_X86_H -# include "gnutls_int.h" +#include "gnutls_int.h" void register_x86_crypto(void); -# define ALIGN16(x) \ - ((void *)(((ptrdiff_t)(x)+(ptrdiff_t)0x0f)&~((ptrdiff_t)0x0f))) +#define ALIGN16(x) \ + ((void *)(((ptrdiff_t)(x) + (ptrdiff_t)0x0f) & ~((ptrdiff_t)0x0f))) -# define AES_KEY_ALIGN_SIZE 4 -# define AES_MAXNR 14 +#define AES_KEY_ALIGN_SIZE 4 +#define AES_MAXNR 14 typedef struct { /* We add few more integers to allow alignment * on a 16-byte boundary. @@ -18,12 +18,12 @@ typedef struct { uint32_t rounds; } AES_KEY; -# define CHECK_AES_KEYSIZE(s) \ +#define CHECK_AES_KEYSIZE(s) \ if (s != 16 && s != 24 && s != 32) \ - return GNUTLS_E_INVALID_REQUEST + return GNUTLS_E_INVALID_REQUEST -# include -# define AES_GCM_ENCRYPT_MAX_BYTES ((1ULL << 36) - 32) +#include +#define AES_GCM_ENCRYPT_MAX_BYTES ((1ULL << 36) - 32) static inline int record_aes_gcm_encrypt_size(size_t *counter, size_t size) { size_t sum; @@ -37,49 +37,45 @@ static inline int record_aes_gcm_encrypt_size(size_t *counter, size_t size) return 0; } -void aesni_ecb_encrypt(const unsigned char *in, unsigned char *out, - size_t len, const AES_KEY * key, int enc); +void aesni_ecb_encrypt(const unsigned char *in, unsigned char *out, size_t len, + const AES_KEY *key, int enc); -void aesni_cbc_encrypt(const unsigned char *in, unsigned char *out, - size_t len, const AES_KEY * key, - unsigned char *ivec, const int enc); +void aesni_cbc_encrypt(const unsigned char *in, unsigned char *out, size_t len, + const AES_KEY *key, unsigned char *ivec, const int enc); int aesni_set_decrypt_key(const unsigned char *userKey, const int bits, - AES_KEY * key); + AES_KEY *key); int aesni_set_encrypt_key(const unsigned char *userKey, const int bits, - AES_KEY * key); + AES_KEY *key); -void aesni_ctr32_encrypt_blocks(const unsigned char *in, - unsigned char *out, - size_t blocks, - const void *key, const unsigned char *ivec); +void aesni_ctr32_encrypt_blocks(const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + const unsigned char *ivec); size_t aesni_gcm_encrypt(const void *inp, void *out, size_t len, - const AES_KEY * key, const unsigned char iv[16], - uint64_t * Xi); + const AES_KEY *key, const unsigned char iv[16], + uint64_t *Xi); size_t aesni_gcm_decrypt(const void *inp, void *out, size_t len, - const AES_KEY * key, const unsigned char iv[16], - uint64_t * Xi); + const AES_KEY *key, const unsigned char iv[16], + uint64_t *Xi); -void aesni_xts_encrypt(const unsigned char *in, unsigned char *out, - size_t len, const AES_KEY * key, const AES_KEY * key2, +void aesni_xts_encrypt(const unsigned char *in, unsigned char *out, size_t len, + const AES_KEY *key, const AES_KEY *key2, const unsigned char iv[16]); -void aesni_xts_decrypt(const unsigned char *in, unsigned char *out, - size_t len, const AES_KEY * key, const AES_KEY * key2, +void aesni_xts_decrypt(const unsigned char *in, unsigned char *out, size_t len, + const AES_KEY *key, const AES_KEY *key2, const unsigned char iv[16]); -int vpaes_set_encrypt_key(const unsigned char *userKey, int bits, - AES_KEY * key); -int vpaes_set_decrypt_key(const unsigned char *userKey, int bits, - AES_KEY * key); +int vpaes_set_encrypt_key(const unsigned char *userKey, int bits, AES_KEY *key); +int vpaes_set_decrypt_key(const unsigned char *userKey, int bits, AES_KEY *key); void vpaes_cbc_encrypt(const unsigned char *in, unsigned char *out, - size_t length, const AES_KEY * key, unsigned char *ivec, + size_t length, const AES_KEY *key, unsigned char *ivec, int enc); void vpaes_encrypt(const unsigned char *in, unsigned char *out, - const AES_KEY * key); + const AES_KEY *key); void vpaes_decrypt(const unsigned char *in, unsigned char *out, - const AES_KEY * key); + const AES_KEY *key); extern const gnutls_crypto_cipher_st _gnutls_aes_gcm_pclmul; extern const gnutls_crypto_cipher_st _gnutls_aes_gcm_pclmul_avx; @@ -92,4 +88,4 @@ extern const gnutls_crypto_cipher_st _gnutls_aes_ssse3; extern const gnutls_crypto_cipher_st _gnutls_aesni_x86; -#endif /* GNUTLS_LIB_ACCELERATED_X86_AES_X86_H */ +#endif /* GNUTLS_LIB_ACCELERATED_X86_AES_X86_H */ diff --git a/lib/accelerated/x86/aes-xts-x86-aesni.c b/lib/accelerated/x86/aes-xts-x86-aesni.c index 52761068c3..0f02f1b3ed 100644 --- a/lib/accelerated/x86/aes-xts-x86-aesni.c +++ b/lib/accelerated/x86/aes-xts-x86-aesni.c @@ -40,9 +40,8 @@ struct x86_aes_xts_ctx { int enc; }; -static int -x86_aes_xts_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, - int enc) +static int x86_aes_xts_cipher_init(gnutls_cipher_algorithm_t algorithm, + void **_ctx, int enc) { if (algorithm != GNUTLS_CIPHER_AES_128_XTS && algorithm != GNUTLS_CIPHER_AES_256_XTS) @@ -59,8 +58,8 @@ x86_aes_xts_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, return 0; } -static int -x86_aes_xts_cipher_setkey(void *_ctx, const void *userkey, size_t keysize) +static int x86_aes_xts_cipher_setkey(void *_ctx, const void *userkey, + size_t keysize) { struct x86_aes_xts_ctx *ctx = _ctx; int ret; @@ -81,20 +80,17 @@ x86_aes_xts_cipher_setkey(void *_ctx, const void *userkey, size_t keysize) keybits = keysize * 4; if (ctx->enc) - ret = - aesni_set_encrypt_key(key, keybits, - ALIGN16(&ctx->block_key)); + ret = aesni_set_encrypt_key(key, keybits, + ALIGN16(&ctx->block_key)); else - ret = - aesni_set_decrypt_key(key, keybits, - ALIGN16(&ctx->block_key)); + ret = aesni_set_decrypt_key(key, keybits, + ALIGN16(&ctx->block_key)); if (ret != 0) return gnutls_assert_val(GNUTLS_E_ENCRYPTION_FAILED); - ret = - aesni_set_encrypt_key(key + (keysize / 2), keybits, - ALIGN16(&ctx->tweak_key)); + ret = aesni_set_encrypt_key(key + (keysize / 2), keybits, + ALIGN16(&ctx->tweak_key)); if (ret != 0) return gnutls_assert_val(GNUTLS_E_ENCRYPTION_FAILED); @@ -112,9 +108,8 @@ static int x86_aes_xts_setiv(void *_ctx, const void *iv, size_t iv_size) return 0; } -static int -x86_aes_xts_encrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t dst_size) +static int x86_aes_xts_encrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t dst_size) { struct x86_aes_xts_ctx *ctx = _ctx; @@ -129,9 +124,8 @@ x86_aes_xts_encrypt(void *_ctx, const void *src, size_t src_size, return 0; } -static int -x86_aes_xts_decrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t dst_size) +static int x86_aes_xts_decrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t dst_size) { struct x86_aes_xts_ctx *ctx = _ctx; diff --git a/lib/accelerated/x86/hmac-padlock.c b/lib/accelerated/x86/hmac-padlock.c index 8913166f34..5dd3f450dc 100644 --- a/lib/accelerated/x86/hmac-padlock.c +++ b/lib/accelerated/x86/hmac-padlock.c @@ -37,9 +37,9 @@ #ifdef HAVE_LIBNETTLE -# define IPAD 0x36 -# define OPAD 0x5c -# define MAX_SHA_DIGEST_SIZE (512/8) +#define IPAD 0x36 +#define OPAD 0x5c +#define MAX_SHA_DIGEST_SIZE (512 / 8) typedef void (*update_func)(void *, size_t, const uint8_t *); typedef void (*digest_func)(void *, size_t, uint8_t *); @@ -62,133 +62,120 @@ struct padlock_hmac_ctx { set_key_func setkey; }; -static void -padlock_hmac_sha1_set_key(struct hmac_sha1_ctx *ctx, - size_t key_length, const uint8_t * key) +static void padlock_hmac_sha1_set_key(struct hmac_sha1_ctx *ctx, + size_t key_length, const uint8_t *key) { HMAC_SET_KEY(ctx, &padlock_sha1, key_length, key); } -static void -padlock_hmac_sha1_update(struct hmac_sha1_ctx *ctx, - size_t length, const uint8_t * data) +static void padlock_hmac_sha1_update(struct hmac_sha1_ctx *ctx, size_t length, + const uint8_t *data) { padlock_sha1_update(&ctx->state, length, data); } -static void -padlock_hmac_sha1_digest(struct hmac_sha1_ctx *ctx, - size_t length, uint8_t * digest) +static void padlock_hmac_sha1_digest(struct hmac_sha1_ctx *ctx, size_t length, + uint8_t *digest) { HMAC_DIGEST(ctx, &padlock_sha1, length, digest); } -static void -padlock_hmac_sha256_set_key(struct hmac_sha256_ctx *ctx, - size_t key_length, const uint8_t * key) +static void padlock_hmac_sha256_set_key(struct hmac_sha256_ctx *ctx, + size_t key_length, const uint8_t *key) { HMAC_SET_KEY(ctx, &padlock_sha256, key_length, key); } -static void -padlock_hmac_sha256_update(struct hmac_sha256_ctx *ctx, - size_t length, const uint8_t * data) +static void padlock_hmac_sha256_update(struct hmac_sha256_ctx *ctx, + size_t length, const uint8_t *data) { padlock_sha256_update(&ctx->state, length, data); } -static void -padlock_hmac_sha256_digest(struct hmac_sha256_ctx *ctx, - size_t length, uint8_t * digest) +static void padlock_hmac_sha256_digest(struct hmac_sha256_ctx *ctx, + size_t length, uint8_t *digest) { HMAC_DIGEST(ctx, &padlock_sha256, length, digest); } -static void -padlock_hmac_sha224_set_key(struct hmac_sha224_ctx *ctx, - size_t key_length, const uint8_t * key) +static void padlock_hmac_sha224_set_key(struct hmac_sha224_ctx *ctx, + size_t key_length, const uint8_t *key) { HMAC_SET_KEY(ctx, &padlock_sha224, key_length, key); } -static void -padlock_hmac_sha224_digest(struct hmac_sha224_ctx *ctx, - size_t length, uint8_t * digest) +static void padlock_hmac_sha224_digest(struct hmac_sha224_ctx *ctx, + size_t length, uint8_t *digest) { HMAC_DIGEST(ctx, &padlock_sha224, length, digest); } -static void -padlock_hmac_sha384_set_key(struct hmac_sha384_ctx *ctx, - size_t key_length, const uint8_t * key) +static void padlock_hmac_sha384_set_key(struct hmac_sha384_ctx *ctx, + size_t key_length, const uint8_t *key) { HMAC_SET_KEY(ctx, &padlock_sha384, key_length, key); } -static void -padlock_hmac_sha384_digest(struct hmac_sha384_ctx *ctx, - size_t length, uint8_t * digest) +static void padlock_hmac_sha384_digest(struct hmac_sha384_ctx *ctx, + size_t length, uint8_t *digest) { HMAC_DIGEST(ctx, &padlock_sha384, length, digest); } -static void -padlock_hmac_sha512_set_key(struct hmac_sha512_ctx *ctx, - size_t key_length, const uint8_t * key) +static void padlock_hmac_sha512_set_key(struct hmac_sha512_ctx *ctx, + size_t key_length, const uint8_t *key) { HMAC_SET_KEY(ctx, &padlock_sha512, key_length, key); } -static void -padlock_hmac_sha512_update(struct hmac_sha512_ctx *ctx, - size_t length, const uint8_t * data) +static void padlock_hmac_sha512_update(struct hmac_sha512_ctx *ctx, + size_t length, const uint8_t *data) { padlock_sha512_update(&ctx->state, length, data); } -static void -padlock_hmac_sha512_digest(struct hmac_sha512_ctx *ctx, - size_t length, uint8_t * digest) +static void padlock_hmac_sha512_digest(struct hmac_sha512_ctx *ctx, + size_t length, uint8_t *digest) { HMAC_DIGEST(ctx, &padlock_sha512, length, digest); } -static int -_hmac_ctx_init(gnutls_mac_algorithm_t algo, struct padlock_hmac_ctx *ctx) +static int _hmac_ctx_init(gnutls_mac_algorithm_t algo, + struct padlock_hmac_ctx *ctx) { switch (algo) { case GNUTLS_MAC_SHA1: - ctx->update = (update_func) padlock_hmac_sha1_update; - ctx->digest = (digest_func) padlock_hmac_sha1_digest; - ctx->setkey = (set_key_func) padlock_hmac_sha1_set_key; + ctx->update = (update_func)padlock_hmac_sha1_update; + ctx->digest = (digest_func)padlock_hmac_sha1_digest; + ctx->setkey = (set_key_func)padlock_hmac_sha1_set_key; ctx->ctx_ptr = &ctx->ctx.sha1; ctx->length = SHA1_DIGEST_SIZE; break; case GNUTLS_MAC_SHA224: - ctx->update = (update_func) padlock_hmac_sha256_update; - ctx->digest = (digest_func) padlock_hmac_sha224_digest; - ctx->setkey = (set_key_func) padlock_hmac_sha224_set_key; + ctx->update = (update_func)padlock_hmac_sha256_update; + ctx->digest = (digest_func)padlock_hmac_sha224_digest; + ctx->setkey = (set_key_func)padlock_hmac_sha224_set_key; ctx->ctx_ptr = &ctx->ctx.sha224; ctx->length = SHA224_DIGEST_SIZE; break; case GNUTLS_MAC_SHA256: - ctx->update = (update_func) padlock_hmac_sha256_update; - ctx->digest = (digest_func) padlock_hmac_sha256_digest; - ctx->setkey = (set_key_func) padlock_hmac_sha256_set_key; + ctx->update = (update_func)padlock_hmac_sha256_update; + ctx->digest = (digest_func)padlock_hmac_sha256_digest; + ctx->setkey = (set_key_func)padlock_hmac_sha256_set_key; ctx->ctx_ptr = &ctx->ctx.sha256; ctx->length = SHA256_DIGEST_SIZE; break; case GNUTLS_MAC_SHA384: - ctx->update = (update_func) padlock_hmac_sha512_update; - ctx->digest = (digest_func) padlock_hmac_sha384_digest; - ctx->setkey = (set_key_func) padlock_hmac_sha384_set_key; + ctx->update = (update_func)padlock_hmac_sha512_update; + ctx->digest = (digest_func)padlock_hmac_sha384_digest; + ctx->setkey = (set_key_func)padlock_hmac_sha384_set_key; ctx->ctx_ptr = &ctx->ctx.sha384; ctx->length = SHA384_DIGEST_SIZE; break; case GNUTLS_MAC_SHA512: - ctx->update = (update_func) padlock_hmac_sha512_update; - ctx->digest = (digest_func) padlock_hmac_sha512_digest; - ctx->setkey = (set_key_func) padlock_hmac_sha512_set_key; + ctx->update = (update_func)padlock_hmac_sha512_update; + ctx->digest = (digest_func)padlock_hmac_sha512_digest; + ctx->setkey = (set_key_func)padlock_hmac_sha512_set_key; ctx->ctx_ptr = &ctx->ctx.sha512; ctx->length = SHA512_DIGEST_SIZE; break; @@ -226,7 +213,7 @@ static void *wrap_padlock_hmac_copy(const void *_ctx) { struct padlock_hmac_ctx *new_ctx; const struct padlock_hmac_ctx *ctx = _ctx; - ptrdiff_t off = (uint8_t *) ctx->ctx_ptr - (uint8_t *) (&ctx->ctx); + ptrdiff_t off = (uint8_t *)ctx->ctx_ptr - (uint8_t *)(&ctx->ctx); new_ctx = gnutls_malloc(sizeof(struct padlock_hmac_ctx)); if (new_ctx == NULL) { @@ -235,7 +222,7 @@ static void *wrap_padlock_hmac_copy(const void *_ctx) } memcpy(new_ctx, ctx, sizeof(*new_ctx)); - new_ctx->ctx_ptr = (uint8_t *) & new_ctx->ctx + off; + new_ctx->ctx_ptr = (uint8_t *)&new_ctx->ctx + off; return new_ctx; } @@ -249,8 +236,8 @@ static int wrap_padlock_hmac_setkey(void *_ctx, const void *key, size_t keylen) return GNUTLS_E_SUCCESS; } -static int -wrap_padlock_hmac_update(void *_ctx, const void *text, size_t textsize) +static int wrap_padlock_hmac_update(void *_ctx, const void *text, + size_t textsize) { struct padlock_hmac_ctx *ctx = _ctx; @@ -259,8 +246,8 @@ wrap_padlock_hmac_update(void *_ctx, const void *text, size_t textsize) return GNUTLS_E_SUCCESS; } -static int -wrap_padlock_hmac_output(void *src_ctx, void *digest, size_t digestsize) +static int wrap_padlock_hmac_output(void *src_ctx, void *digest, + size_t digestsize) { struct padlock_hmac_ctx *ctx; ctx = src_ctx; @@ -283,22 +270,22 @@ static void wrap_padlock_hmac_deinit(void *hd) gnutls_free(ctx); } -static int -wrap_padlock_hmac_fast(gnutls_mac_algorithm_t algo, - const void *nonce, size_t nonce_size, - const void *key, size_t key_size, const void *text, - size_t text_size, void *digest) +static int wrap_padlock_hmac_fast(gnutls_mac_algorithm_t algo, + const void *nonce, size_t nonce_size, + const void *key, size_t key_size, + const void *text, size_t text_size, + void *digest) { if (algo == GNUTLS_MAC_SHA1 || algo == GNUTLS_MAC_SHA256) { unsigned char *pad; unsigned char pad2[SHA1_DATA_SIZE + MAX_SHA_DIGEST_SIZE]; unsigned char hkey[MAX_SHA_DIGEST_SIZE]; unsigned int digest_size = - _gnutls_mac_get_algo_len(mac_to_entry(algo)); + _gnutls_mac_get_algo_len(mac_to_entry(algo)); if (key_size > SHA1_DATA_SIZE) { - wrap_padlock_hash_fast((gnutls_digest_algorithm_t) - algo, key, key_size, hkey); + wrap_padlock_hash_fast((gnutls_digest_algorithm_t)algo, + key, key_size, hkey); key = hkey; key_size = digest_size; } @@ -312,8 +299,8 @@ wrap_padlock_hmac_fast(gnutls_mac_algorithm_t algo, memcpy(&pad[SHA1_DATA_SIZE], text, text_size); - wrap_padlock_hash_fast((gnutls_digest_algorithm_t) algo, - pad, text_size + SHA1_DATA_SIZE, + wrap_padlock_hash_fast((gnutls_digest_algorithm_t)algo, pad, + text_size + SHA1_DATA_SIZE, &pad2[SHA1_DATA_SIZE]); zeroize_temp_key(pad, text_size + SHA1_DATA_SIZE); @@ -322,9 +309,8 @@ wrap_padlock_hmac_fast(gnutls_mac_algorithm_t algo, memset(pad2, OPAD, SHA1_DATA_SIZE); memxor(pad2, key, key_size); - wrap_padlock_hash_fast((gnutls_digest_algorithm_t) algo, - pad2, digest_size + SHA1_DATA_SIZE, - digest); + wrap_padlock_hash_fast((gnutls_digest_algorithm_t)algo, pad2, + digest_size + SHA1_DATA_SIZE, digest); zeroize_temp_key(pad2, sizeof(pad2)); zeroize_temp_key(hkey, sizeof(hkey)); @@ -370,4 +356,4 @@ const gnutls_crypto_mac_st _gnutls_hmac_sha_padlock = { .fast = wrap_padlock_hmac_fast, }; -#endif /* HAVE_LIBNETTLE */ +#endif /* HAVE_LIBNETTLE */ diff --git a/lib/accelerated/x86/hmac-x86-ssse3.c b/lib/accelerated/x86/hmac-x86-ssse3.c index d743e28bf7..e037c4658b 100644 --- a/lib/accelerated/x86/hmac-x86-ssse3.c +++ b/lib/accelerated/x86/hmac-x86-ssse3.c @@ -57,92 +57,80 @@ struct x86_hmac_ctx { set_key_func setkey; }; -static void -x86_hmac_sha1_set_key(struct hmac_sha1_ctx *ctx, - size_t key_length, const uint8_t * key) +static void x86_hmac_sha1_set_key(struct hmac_sha1_ctx *ctx, size_t key_length, + const uint8_t *key) { HMAC_SET_KEY(ctx, &x86_sha1, key_length, key); } -static void -x86_hmac_sha1_update(struct hmac_sha1_ctx *ctx, - size_t length, const uint8_t * data) +static void x86_hmac_sha1_update(struct hmac_sha1_ctx *ctx, size_t length, + const uint8_t *data) { x86_sha1_update(&ctx->state, length, data); } -static void -x86_hmac_sha1_digest(struct hmac_sha1_ctx *ctx, size_t length, uint8_t * digest) +static void x86_hmac_sha1_digest(struct hmac_sha1_ctx *ctx, size_t length, + uint8_t *digest) { HMAC_DIGEST(ctx, &x86_sha1, length, digest); } -static void -x86_hmac_sha256_set_key(struct hmac_sha256_ctx *ctx, - size_t key_length, const uint8_t * key) +static void x86_hmac_sha256_set_key(struct hmac_sha256_ctx *ctx, + size_t key_length, const uint8_t *key) { HMAC_SET_KEY(ctx, &x86_sha256, key_length, key); } -static void -x86_hmac_sha256_update(struct hmac_sha256_ctx *ctx, - size_t length, const uint8_t * data) +static void x86_hmac_sha256_update(struct hmac_sha256_ctx *ctx, size_t length, + const uint8_t *data) { x86_sha256_update(&ctx->state, length, data); } -static void -x86_hmac_sha256_digest(struct hmac_sha256_ctx *ctx, - size_t length, uint8_t * digest) +static void x86_hmac_sha256_digest(struct hmac_sha256_ctx *ctx, size_t length, + uint8_t *digest) { HMAC_DIGEST(ctx, &x86_sha256, length, digest); } -static void -x86_hmac_sha224_set_key(struct hmac_sha224_ctx *ctx, - size_t key_length, const uint8_t * key) +static void x86_hmac_sha224_set_key(struct hmac_sha224_ctx *ctx, + size_t key_length, const uint8_t *key) { HMAC_SET_KEY(ctx, &x86_sha224, key_length, key); } -static void -x86_hmac_sha224_digest(struct hmac_sha224_ctx *ctx, - size_t length, uint8_t * digest) +static void x86_hmac_sha224_digest(struct hmac_sha224_ctx *ctx, size_t length, + uint8_t *digest) { HMAC_DIGEST(ctx, &x86_sha224, length, digest); } -static void -x86_hmac_sha384_set_key(struct hmac_sha384_ctx *ctx, - size_t key_length, const uint8_t * key) +static void x86_hmac_sha384_set_key(struct hmac_sha384_ctx *ctx, + size_t key_length, const uint8_t *key) { HMAC_SET_KEY(ctx, &x86_sha384, key_length, key); } -static void -x86_hmac_sha384_digest(struct hmac_sha384_ctx *ctx, - size_t length, uint8_t * digest) +static void x86_hmac_sha384_digest(struct hmac_sha384_ctx *ctx, size_t length, + uint8_t *digest) { HMAC_DIGEST(ctx, &x86_sha384, length, digest); } -static void -x86_hmac_sha512_set_key(struct hmac_sha512_ctx *ctx, - size_t key_length, const uint8_t * key) +static void x86_hmac_sha512_set_key(struct hmac_sha512_ctx *ctx, + size_t key_length, const uint8_t *key) { HMAC_SET_KEY(ctx, &x86_sha512, key_length, key); } -static void -x86_hmac_sha512_update(struct hmac_sha512_ctx *ctx, - size_t length, const uint8_t * data) +static void x86_hmac_sha512_update(struct hmac_sha512_ctx *ctx, size_t length, + const uint8_t *data) { x86_sha512_update(&ctx->state, length, data); } -static void -x86_hmac_sha512_digest(struct hmac_sha512_ctx *ctx, - size_t length, uint8_t * digest) +static void x86_hmac_sha512_digest(struct hmac_sha512_ctx *ctx, size_t length, + uint8_t *digest) { HMAC_DIGEST(ctx, &x86_sha512, length, digest); } @@ -151,37 +139,37 @@ static int _hmac_ctx_init(gnutls_mac_algorithm_t algo, struct x86_hmac_ctx *ctx) { switch (algo) { case GNUTLS_MAC_SHA1: - ctx->update = (update_func) x86_hmac_sha1_update; - ctx->digest = (digest_func) x86_hmac_sha1_digest; - ctx->setkey = (set_key_func) x86_hmac_sha1_set_key; + ctx->update = (update_func)x86_hmac_sha1_update; + ctx->digest = (digest_func)x86_hmac_sha1_digest; + ctx->setkey = (set_key_func)x86_hmac_sha1_set_key; ctx->ctx_ptr = &ctx->ctx.sha1; ctx->length = SHA1_DIGEST_SIZE; break; case GNUTLS_MAC_SHA224: - ctx->update = (update_func) x86_hmac_sha256_update; - ctx->digest = (digest_func) x86_hmac_sha224_digest; - ctx->setkey = (set_key_func) x86_hmac_sha224_set_key; + ctx->update = (update_func)x86_hmac_sha256_update; + ctx->digest = (digest_func)x86_hmac_sha224_digest; + ctx->setkey = (set_key_func)x86_hmac_sha224_set_key; ctx->ctx_ptr = &ctx->ctx.sha224; ctx->length = SHA224_DIGEST_SIZE; break; case GNUTLS_MAC_SHA256: - ctx->update = (update_func) x86_hmac_sha256_update; - ctx->digest = (digest_func) x86_hmac_sha256_digest; - ctx->setkey = (set_key_func) x86_hmac_sha256_set_key; + ctx->update = (update_func)x86_hmac_sha256_update; + ctx->digest = (digest_func)x86_hmac_sha256_digest; + ctx->setkey = (set_key_func)x86_hmac_sha256_set_key; ctx->ctx_ptr = &ctx->ctx.sha256; ctx->length = SHA256_DIGEST_SIZE; break; case GNUTLS_MAC_SHA384: - ctx->update = (update_func) x86_hmac_sha512_update; - ctx->digest = (digest_func) x86_hmac_sha384_digest; - ctx->setkey = (set_key_func) x86_hmac_sha384_set_key; + ctx->update = (update_func)x86_hmac_sha512_update; + ctx->digest = (digest_func)x86_hmac_sha384_digest; + ctx->setkey = (set_key_func)x86_hmac_sha384_set_key; ctx->ctx_ptr = &ctx->ctx.sha384; ctx->length = SHA384_DIGEST_SIZE; break; case GNUTLS_MAC_SHA512: - ctx->update = (update_func) x86_hmac_sha512_update; - ctx->digest = (digest_func) x86_hmac_sha512_digest; - ctx->setkey = (set_key_func) x86_hmac_sha512_set_key; + ctx->update = (update_func)x86_hmac_sha512_update; + ctx->digest = (digest_func)x86_hmac_sha512_digest; + ctx->setkey = (set_key_func)x86_hmac_sha512_set_key; ctx->ctx_ptr = &ctx->ctx.sha512; ctx->length = SHA512_DIGEST_SIZE; break; @@ -219,7 +207,7 @@ static void *wrap_x86_hmac_copy(const void *_ctx) { struct x86_hmac_ctx *new_ctx; const struct x86_hmac_ctx *ctx = _ctx; - ptrdiff_t off = (uint8_t *) ctx->ctx_ptr - (uint8_t *) (&ctx->ctx); + ptrdiff_t off = (uint8_t *)ctx->ctx_ptr - (uint8_t *)(&ctx->ctx); new_ctx = gnutls_malloc(sizeof(struct x86_hmac_ctx)); if (new_ctx == NULL) { @@ -228,7 +216,7 @@ static void *wrap_x86_hmac_copy(const void *_ctx) } memcpy(new_ctx, ctx, sizeof(*new_ctx)); - new_ctx->ctx_ptr = (uint8_t *) & new_ctx->ctx + off; + new_ctx->ctx_ptr = (uint8_t *)&new_ctx->ctx + off; return new_ctx; } @@ -274,10 +262,10 @@ static void wrap_x86_hmac_deinit(void *hd) gnutls_free(ctx); } -static int wrap_x86_hmac_fast(gnutls_mac_algorithm_t algo, - const void *nonce, size_t nonce_size, - const void *key, size_t key_size, - const void *text, size_t text_size, void *digest) +static int wrap_x86_hmac_fast(gnutls_mac_algorithm_t algo, const void *nonce, + size_t nonce_size, const void *key, + size_t key_size, const void *text, + size_t text_size, void *digest) { struct x86_hmac_ctx ctx; int ret; @@ -306,4 +294,4 @@ const gnutls_crypto_mac_st _gnutls_hmac_sha_x86_ssse3 = { .fast = wrap_x86_hmac_fast, }; -#endif /* HAVE_LIBNETTLE */ +#endif /* HAVE_LIBNETTLE */ diff --git a/lib/accelerated/x86/sha-padlock.c b/lib/accelerated/x86/sha-padlock.c index 14f1d85976..1671c2f32a 100644 --- a/lib/accelerated/x86/sha-padlock.c +++ b/lib/accelerated/x86/sha-padlock.c @@ -55,8 +55,8 @@ struct padlock_hash_ctx { init_func init; }; -static int -wrap_padlock_hash_update(void *_ctx, const void *text, size_t textsize) +static int wrap_padlock_hash_update(void *_ctx, const void *text, + size_t textsize) { struct padlock_hash_ctx *ctx = _ctx; @@ -70,32 +70,33 @@ static void wrap_padlock_hash_deinit(void *hd) gnutls_free(hd); } -# define MD1_INCR(c) (c->count++) -# define SHA1_COMPRESS(ctx, data) (padlock_sha1_blocks((void*)(ctx)->state, data, 1)) -# define SHA256_COMPRESS(ctx, data) (padlock_sha256_blocks((void*)(ctx)->state, data, 1)) -# define SHA512_COMPRESS(ctx, data) (padlock_sha512_blocks((void*)(ctx)->state, data, 1)) +#define MD1_INCR(c) (c->count++) +#define SHA1_COMPRESS(ctx, data) \ + (padlock_sha1_blocks((void *)(ctx)->state, data, 1)) +#define SHA256_COMPRESS(ctx, data) \ + (padlock_sha256_blocks((void *)(ctx)->state, data, 1)) +#define SHA512_COMPRESS(ctx, data) \ + (padlock_sha512_blocks((void *)(ctx)->state, data, 1)) -void -padlock_sha1_update(struct sha1_ctx *ctx, size_t length, const uint8_t * data) +void padlock_sha1_update(struct sha1_ctx *ctx, size_t length, + const uint8_t *data) { MD_UPDATE(ctx, length, data, SHA1_COMPRESS, MD1_INCR(ctx)); } -void -padlock_sha256_update(struct sha256_ctx *ctx, - size_t length, const uint8_t * data) +void padlock_sha256_update(struct sha256_ctx *ctx, size_t length, + const uint8_t *data) { MD_UPDATE(ctx, length, data, SHA256_COMPRESS, MD1_INCR(ctx)); } -void -padlock_sha512_update(struct sha512_ctx *ctx, - size_t length, const uint8_t * data) +void padlock_sha512_update(struct sha512_ctx *ctx, size_t length, + const uint8_t *data) { MD_UPDATE(ctx, length, data, SHA512_COMPRESS, MD_INCR(ctx)); } -static void _nettle_write_be32(unsigned length, uint8_t * dst, uint32_t * src) +static void _nettle_write_be32(unsigned length, uint8_t *dst, uint32_t *src) { unsigned i; unsigned words; @@ -128,8 +129,8 @@ static void _nettle_write_be32(unsigned length, uint8_t * dst, uint32_t * src) } } -static void -padlock_sha1_digest(struct sha1_ctx *ctx, size_t length, uint8_t * digest) +static void padlock_sha1_digest(struct sha1_ctx *ctx, size_t length, + uint8_t *digest) { uint64_t bit_count; @@ -147,8 +148,8 @@ padlock_sha1_digest(struct sha1_ctx *ctx, size_t length, uint8_t * digest) _nettle_write_be32(length, digest, ctx->state); } -static void -padlock_sha256_digest(struct sha256_ctx *ctx, size_t length, uint8_t * digest) +static void padlock_sha256_digest(struct sha256_ctx *ctx, size_t length, + uint8_t *digest) { uint64_t bit_count; @@ -168,8 +169,8 @@ padlock_sha256_digest(struct sha256_ctx *ctx, size_t length, uint8_t * digest) _nettle_write_be32(length, digest, ctx->state); } -static void -padlock_sha512_digest(struct sha512_ctx *ctx, size_t length, uint8_t * digest) +static void padlock_sha512_digest(struct sha512_ctx *ctx, size_t length, + uint8_t *digest) { uint64_t high, low; @@ -215,41 +216,41 @@ static int _ctx_init(gnutls_digest_algorithm_t algo, switch (algo) { case GNUTLS_DIG_SHA1: sha1_init(&ctx->ctx.sha1); - ctx->update = (update_func) padlock_sha1_update; - ctx->digest = (digest_func) padlock_sha1_digest; - ctx->init = (init_func) sha1_init; + ctx->update = (update_func)padlock_sha1_update; + ctx->digest = (digest_func)padlock_sha1_digest; + ctx->init = (init_func)sha1_init; ctx->ctx_ptr = &ctx->ctx.sha1; ctx->length = SHA1_DIGEST_SIZE; break; case GNUTLS_DIG_SHA224: sha224_init(&ctx->ctx.sha224); - ctx->update = (update_func) padlock_sha256_update; - ctx->digest = (digest_func) padlock_sha256_digest; - ctx->init = (init_func) sha224_init; + ctx->update = (update_func)padlock_sha256_update; + ctx->digest = (digest_func)padlock_sha256_digest; + ctx->init = (init_func)sha224_init; ctx->ctx_ptr = &ctx->ctx.sha224; ctx->length = SHA224_DIGEST_SIZE; break; case GNUTLS_DIG_SHA256: sha256_init(&ctx->ctx.sha256); - ctx->update = (update_func) padlock_sha256_update; - ctx->digest = (digest_func) padlock_sha256_digest; - ctx->init = (init_func) sha256_init; + ctx->update = (update_func)padlock_sha256_update; + ctx->digest = (digest_func)padlock_sha256_digest; + ctx->init = (init_func)sha256_init; ctx->ctx_ptr = &ctx->ctx.sha256; ctx->length = SHA256_DIGEST_SIZE; break; case GNUTLS_DIG_SHA384: sha384_init(&ctx->ctx.sha384); - ctx->update = (update_func) padlock_sha512_update; - ctx->digest = (digest_func) padlock_sha512_digest; - ctx->init = (init_func) sha384_init; + ctx->update = (update_func)padlock_sha512_update; + ctx->digest = (digest_func)padlock_sha512_digest; + ctx->init = (init_func)sha384_init; ctx->ctx_ptr = &ctx->ctx.sha384; ctx->length = SHA384_DIGEST_SIZE; break; case GNUTLS_DIG_SHA512: sha512_init(&ctx->ctx.sha512); - ctx->update = (update_func) padlock_sha512_update; - ctx->digest = (digest_func) padlock_sha512_digest; - ctx->init = (init_func) sha512_init; + ctx->update = (update_func)padlock_sha512_update; + ctx->digest = (digest_func)padlock_sha512_digest; + ctx->init = (init_func)sha512_init; ctx->ctx_ptr = &ctx->ctx.sha512; ctx->length = SHA512_DIGEST_SIZE; break; @@ -288,7 +289,7 @@ static void *wrap_padlock_hash_copy(const void *_ctx) { struct padlock_hash_ctx *new_ctx; const struct padlock_hash_ctx *ctx = _ctx; - ptrdiff_t off = (uint8_t *) ctx->ctx_ptr - (uint8_t *) (&ctx->ctx); + ptrdiff_t off = (uint8_t *)ctx->ctx_ptr - (uint8_t *)(&ctx->ctx); new_ctx = gnutls_malloc(sizeof(struct padlock_hash_ctx)); if (new_ctx == NULL) { @@ -297,13 +298,13 @@ static void *wrap_padlock_hash_copy(const void *_ctx) } memcpy(new_ctx, ctx, sizeof(*new_ctx)); - new_ctx->ctx_ptr = (uint8_t *) & new_ctx->ctx + off; + new_ctx->ctx_ptr = (uint8_t *)&new_ctx->ctx + off; return new_ctx; } -static int -wrap_padlock_hash_output(void *src_ctx, void *digest, size_t digestsize) +static int wrap_padlock_hash_output(void *src_ctx, void *digest, + size_t digestsize) { struct padlock_hash_ctx *ctx; ctx = src_ctx; @@ -318,27 +319,22 @@ wrap_padlock_hash_output(void *src_ctx, void *digest, size_t digestsize) return 0; } -int wrap_padlock_hash_fast(gnutls_digest_algorithm_t algo, - const void *text, size_t text_size, void *digest) +int wrap_padlock_hash_fast(gnutls_digest_algorithm_t algo, const void *text, + size_t text_size, void *digest) { if (text_size == 0 && text == NULL) text = digest; if (algo == GNUTLS_DIG_SHA1) { uint32_t iv[5] = { - 0x67452301UL, - 0xEFCDAB89UL, - 0x98BADCFEUL, - 0x10325476UL, - 0xC3D2E1F0UL, + 0x67452301UL, 0xEFCDAB89UL, 0x98BADCFEUL, + 0x10325476UL, 0xC3D2E1F0UL, }; padlock_sha1_oneshot(iv, text, text_size); _nettle_write_be32(20, digest, iv); } else if (algo == GNUTLS_DIG_SHA256) { uint32_t iv[8] = { - 0x6a09e667UL, 0xbb67ae85UL, 0x3c6ef372UL, - 0xa54ff53aUL, - 0x510e527fUL, 0x9b05688cUL, 0x1f83d9abUL, - 0x5be0cd19UL, + 0x6a09e667UL, 0xbb67ae85UL, 0x3c6ef372UL, 0xa54ff53aUL, + 0x510e527fUL, 0x9b05688cUL, 0x1f83d9abUL, 0x5be0cd19UL, }; padlock_sha256_oneshot(iv, text, text_size); _nettle_write_be32(32, digest, iv); @@ -360,15 +356,15 @@ int wrap_padlock_hash_fast(gnutls_digest_algorithm_t algo, } const struct nettle_hash padlock_sha1 = -NN_HASH(sha1, padlock_sha1_update, padlock_sha1_digest, SHA1); + NN_HASH(sha1, padlock_sha1_update, padlock_sha1_digest, SHA1); const struct nettle_hash padlock_sha224 = -NN_HASH(sha224, padlock_sha256_update, padlock_sha256_digest, SHA224); + NN_HASH(sha224, padlock_sha256_update, padlock_sha256_digest, SHA224); const struct nettle_hash padlock_sha256 = -NN_HASH(sha256, padlock_sha256_update, padlock_sha256_digest, SHA256); + NN_HASH(sha256, padlock_sha256_update, padlock_sha256_digest, SHA256); const struct nettle_hash padlock_sha384 = -NN_HASH(sha384, padlock_sha512_update, padlock_sha512_digest, SHA384); + NN_HASH(sha384, padlock_sha512_update, padlock_sha512_digest, SHA384); const struct nettle_hash padlock_sha512 = -NN_HASH(sha512, padlock_sha512_update, padlock_sha512_digest, SHA512); + NN_HASH(sha512, padlock_sha512_update, padlock_sha512_digest, SHA512); const gnutls_crypto_digest_st _gnutls_sha_padlock_oneshot = { .init = NULL, @@ -387,4 +383,4 @@ const gnutls_crypto_digest_st _gnutls_sha_padlock = { .fast = wrap_padlock_hash_fast, }; -#endif /* HAVE_LIBNETTLE */ +#endif /* HAVE_LIBNETTLE */ diff --git a/lib/accelerated/x86/sha-padlock.h b/lib/accelerated/x86/sha-padlock.h index fe5b9e4185..990c02d989 100644 --- a/lib/accelerated/x86/sha-padlock.h +++ b/lib/accelerated/x86/sha-padlock.h @@ -1,7 +1,7 @@ #ifndef GNUTLS_LIB_ACCELERATED_X86_SHA_PADLOCK_H -# define GNUTLS_LIB_ACCELERATED_X86_SHA_PADLOCK_H +#define GNUTLS_LIB_ACCELERATED_X86_SHA_PADLOCK_H -# include +#include void padlock_sha1_oneshot(void *ctx, const void *inp, size_t len); void padlock_sha256_oneshot(void *ctx, const void *inp, size_t len); @@ -10,15 +10,15 @@ void padlock_sha1_blocks(unsigned int *ctx, const void *inp, size_t blocks); void padlock_sha256_blocks(unsigned int *ctx, const void *inp, size_t blocks); void padlock_sha512_blocks(unsigned int *ctx, const void *inp, size_t blocks); -int wrap_padlock_hash_fast(gnutls_digest_algorithm_t algo, - const void *text, size_t text_size, void *digest); +int wrap_padlock_hash_fast(gnutls_digest_algorithm_t algo, const void *text, + size_t text_size, void *digest); -void padlock_sha1_update(struct sha1_ctx *ctx, - size_t length, const uint8_t * data); -void padlock_sha256_update(struct sha256_ctx *ctx, - size_t length, const uint8_t * data); -void padlock_sha512_update(struct sha512_ctx *ctx, - size_t length, const uint8_t * data); +void padlock_sha1_update(struct sha1_ctx *ctx, size_t length, + const uint8_t *data); +void padlock_sha256_update(struct sha256_ctx *ctx, size_t length, + const uint8_t *data); +void padlock_sha512_update(struct sha512_ctx *ctx, size_t length, + const uint8_t *data); extern const struct nettle_hash padlock_sha1; extern const struct nettle_hash padlock_sha224; @@ -29,4 +29,4 @@ extern const struct nettle_hash padlock_sha512; extern const gnutls_crypto_mac_st _gnutls_hmac_sha_padlock; extern const gnutls_crypto_digest_st _gnutls_sha_padlock; -#endif /* GNUTLS_LIB_ACCELERATED_X86_SHA_PADLOCK_H */ +#endif /* GNUTLS_LIB_ACCELERATED_X86_SHA_PADLOCK_H */ diff --git a/lib/accelerated/x86/sha-x86-ssse3.c b/lib/accelerated/x86/sha-x86-ssse3.c index bcfcc4d337..5f099d5cb0 100644 --- a/lib/accelerated/x86/sha-x86-ssse3.c +++ b/lib/accelerated/x86/sha-x86-ssse3.c @@ -70,7 +70,7 @@ static void wrap_x86_hash_deinit(void *hd) gnutls_free(hd); } -void x86_sha1_update(struct sha1_ctx *ctx, size_t length, const uint8_t * data) +void x86_sha1_update(struct sha1_ctx *ctx, size_t length, const uint8_t *data) { struct { uint32_t h0, h1, h2, h3, h4; @@ -103,7 +103,6 @@ void x86_sha1_update(struct sha1_ctx *ctx, size_t length, const uint8_t * data) length -= res; if (length > 0) { - t2 = length / SHA1_DATA_SIZE; sha1_block_data_order(&octx, data, t2); @@ -125,11 +124,10 @@ void x86_sha1_update(struct sha1_ctx *ctx, size_t length, const uint8_t * data) if (res > 0) { sha1_update(ctx, res, data); } - } void x86_sha256_update(struct sha256_ctx *ctx, size_t length, - const uint8_t * data) + const uint8_t *data) { struct { uint32_t h[8]; @@ -177,7 +175,7 @@ void x86_sha256_update(struct sha256_ctx *ctx, size_t length, } void x86_sha512_update(struct sha512_ctx *ctx, size_t length, - const uint8_t * data) + const uint8_t *data) { struct { uint64_t h[8]; @@ -232,41 +230,41 @@ static int _ctx_init(gnutls_digest_algorithm_t algo, struct x86_hash_ctx *ctx) switch (algo) { case GNUTLS_DIG_SHA1: sha1_init(&ctx->ctx.sha1); - ctx->update = (update_func) x86_sha1_update; - ctx->digest = (digest_func) sha1_digest; - ctx->init = (init_func) sha1_init; + ctx->update = (update_func)x86_sha1_update; + ctx->digest = (digest_func)sha1_digest; + ctx->init = (init_func)sha1_init; ctx->ctx_ptr = &ctx->ctx.sha1; ctx->length = SHA1_DIGEST_SIZE; break; case GNUTLS_DIG_SHA224: sha224_init(&ctx->ctx.sha224); - ctx->update = (update_func) x86_sha256_update; - ctx->digest = (digest_func) sha224_digest; - ctx->init = (init_func) sha224_init; + ctx->update = (update_func)x86_sha256_update; + ctx->digest = (digest_func)sha224_digest; + ctx->init = (init_func)sha224_init; ctx->ctx_ptr = &ctx->ctx.sha224; ctx->length = SHA224_DIGEST_SIZE; break; case GNUTLS_DIG_SHA256: sha256_init(&ctx->ctx.sha256); - ctx->update = (update_func) x86_sha256_update; - ctx->digest = (digest_func) sha256_digest; - ctx->init = (init_func) sha256_init; + ctx->update = (update_func)x86_sha256_update; + ctx->digest = (digest_func)sha256_digest; + ctx->init = (init_func)sha256_init; ctx->ctx_ptr = &ctx->ctx.sha256; ctx->length = SHA256_DIGEST_SIZE; break; case GNUTLS_DIG_SHA384: sha384_init(&ctx->ctx.sha384); - ctx->update = (update_func) x86_sha512_update; - ctx->digest = (digest_func) sha384_digest; - ctx->init = (init_func) sha384_init; + ctx->update = (update_func)x86_sha512_update; + ctx->digest = (digest_func)sha384_digest; + ctx->init = (init_func)sha384_init; ctx->ctx_ptr = &ctx->ctx.sha384; ctx->length = SHA384_DIGEST_SIZE; break; case GNUTLS_DIG_SHA512: sha512_init(&ctx->ctx.sha512); - ctx->update = (update_func) x86_sha512_update; - ctx->digest = (digest_func) sha512_digest; - ctx->init = (init_func) sha512_init; + ctx->update = (update_func)x86_sha512_update; + ctx->digest = (digest_func)sha512_digest; + ctx->init = (init_func)sha512_init; ctx->ctx_ptr = &ctx->ctx.sha512; ctx->length = SHA512_DIGEST_SIZE; break; @@ -305,7 +303,7 @@ static void *wrap_x86_hash_copy(const void *_ctx) { struct x86_hash_ctx *new_ctx; const struct x86_hash_ctx *ctx = _ctx; - ptrdiff_t off = (uint8_t *) ctx->ctx_ptr - (uint8_t *) (&ctx->ctx); + ptrdiff_t off = (uint8_t *)ctx->ctx_ptr - (uint8_t *)(&ctx->ctx); new_ctx = gnutls_malloc(sizeof(struct x86_hash_ctx)); if (new_ctx == NULL) { @@ -314,7 +312,7 @@ static void *wrap_x86_hash_copy(const void *_ctx) } memcpy(new_ctx, ctx, sizeof(*new_ctx)); - new_ctx->ctx_ptr = (uint8_t *) & new_ctx->ctx + off; + new_ctx->ctx_ptr = (uint8_t *)&new_ctx->ctx + off; return new_ctx; } @@ -332,8 +330,8 @@ static int wrap_x86_hash_output(void *src_ctx, void *digest, size_t digestsize) return 0; } -static int wrap_x86_hash_fast(gnutls_digest_algorithm_t algo, - const void *text, size_t text_size, void *digest) +static int wrap_x86_hash_fast(gnutls_digest_algorithm_t algo, const void *text, + size_t text_size, void *digest) { struct x86_hash_ctx ctx; int ret; @@ -349,16 +347,16 @@ static int wrap_x86_hash_fast(gnutls_digest_algorithm_t algo, } const struct nettle_hash x86_sha1 = -NN_HASH(sha1, x86_sha1_update, sha1_digest, SHA1); + NN_HASH(sha1, x86_sha1_update, sha1_digest, SHA1); const struct nettle_hash x86_sha224 = -NN_HASH(sha224, x86_sha256_update, sha224_digest, SHA224); + NN_HASH(sha224, x86_sha256_update, sha224_digest, SHA224); const struct nettle_hash x86_sha256 = -NN_HASH(sha256, x86_sha256_update, sha256_digest, SHA256); + NN_HASH(sha256, x86_sha256_update, sha256_digest, SHA256); const struct nettle_hash x86_sha384 = -NN_HASH(sha384, x86_sha512_update, sha384_digest, SHA384); + NN_HASH(sha384, x86_sha512_update, sha384_digest, SHA384); const struct nettle_hash x86_sha512 = -NN_HASH(sha512, x86_sha512_update, sha512_digest, SHA512); + NN_HASH(sha512, x86_sha512_update, sha512_digest, SHA512); const gnutls_crypto_digest_st _gnutls_sha_x86_ssse3 = { .init = wrap_x86_hash_init, diff --git a/lib/accelerated/x86/sha-x86.h b/lib/accelerated/x86/sha-x86.h index f1fcea055b..d96936663f 100644 --- a/lib/accelerated/x86/sha-x86.h +++ b/lib/accelerated/x86/sha-x86.h @@ -1,7 +1,7 @@ #ifndef GNUTLS_LIB_ACCELERATED_X86_SHA_X86_H -# define GNUTLS_LIB_ACCELERATED_X86_SHA_X86_H +#define GNUTLS_LIB_ACCELERATED_X86_SHA_X86_H -# include +#include extern const struct nettle_hash x86_sha1; extern const struct nettle_hash x86_sha224; @@ -9,13 +9,13 @@ extern const struct nettle_hash x86_sha256; extern const struct nettle_hash x86_sha384; extern const struct nettle_hash x86_sha512; -void x86_sha1_update(struct sha1_ctx *ctx, size_t length, const uint8_t * data); +void x86_sha1_update(struct sha1_ctx *ctx, size_t length, const uint8_t *data); void x86_sha256_update(struct sha256_ctx *ctx, size_t length, - const uint8_t * data); + const uint8_t *data); void x86_sha512_update(struct sha512_ctx *ctx, size_t length, - const uint8_t * data); + const uint8_t *data); extern const gnutls_crypto_digest_st _gnutls_sha_x86_ssse3; extern const gnutls_crypto_mac_st _gnutls_hmac_sha_x86_ssse3; -#endif /* GNUTLS_LIB_ACCELERATED_X86_SHA_X86_H */ +#endif /* GNUTLS_LIB_ACCELERATED_X86_SHA_X86_H */ diff --git a/lib/accelerated/x86/x86-common.c b/lib/accelerated/x86/x86-common.c index 24744c41cb..a7047a7ba1 100644 --- a/lib/accelerated/x86/x86-common.c +++ b/lib/accelerated/x86/x86-common.c @@ -34,15 +34,15 @@ #include #include #ifdef HAVE_LIBNETTLE -# include /* for key generation in 192 and 256 bits */ -# include +#include /* for key generation in 192 and 256 bits */ +#include #endif #include #ifdef HAVE_CPUID_H -# include +#include #else -# define __get_cpuid(...) 0 -# define __get_cpuid_count(...) 0 +#define __get_cpuid(...) 0 +#define __get_cpuid_count(...) 0 #endif /* ebx, ecx, edx @@ -56,57 +56,57 @@ __hidden unsigned int GNUTLS_x86_cpuid_s[4]; #ifndef bit_SHA -# define bit_SHA (1<<29) +#define bit_SHA (1 << 29) #endif /* ecx */ #ifndef bit_AVX512BITALG -# define bit_AVX512BITALG 0x4000 +#define bit_AVX512BITALG 0x4000 #endif #ifndef bit_PCLMUL -# define bit_PCLMUL 0x2 +#define bit_PCLMUL 0x2 #endif #ifndef bit_SSSE3 /* ecx */ -# define bit_SSSE3 0x0000200 +#define bit_SSSE3 0x0000200 #endif #ifndef bit_AES -# define bit_AES 0x2000000 +#define bit_AES 0x2000000 #endif #ifndef bit_AVX -# define bit_AVX 0x10000000 +#define bit_AVX 0x10000000 #endif #ifndef bit_AVX2 -# define bit_AVX2 0x00000020 +#define bit_AVX2 0x00000020 #endif #ifndef bit_AVX512F -# define bit_AVX512F 0x00010000 +#define bit_AVX512F 0x00010000 #endif #ifndef bit_AVX512IFMA -# define bit_AVX512IFMA 0x00200000 +#define bit_AVX512IFMA 0x00200000 #endif #ifndef bit_AVX512BW -# define bit_AVX512BW 0x40000000 +#define bit_AVX512BW 0x40000000 #endif #ifndef bit_AVX512VL -# define bit_AVX512VL 0x80000000 +#define bit_AVX512VL 0x80000000 #endif #ifndef bit_OSXSAVE -# define bit_OSXSAVE 0x8000000 +#define bit_OSXSAVE 0x8000000 #endif #ifndef bit_MOVBE -# define bit_MOVBE 0x00400000 +#define bit_MOVBE 0x00400000 #endif #define bit_PADLOCK (0x3 << 6) @@ -116,19 +116,18 @@ unsigned int GNUTLS_x86_cpuid_s[4]; /* Our internal bit-string for cpu capabilities. Should be set * in GNUTLS_CPUID_OVERRIDE */ #define EMPTY_SET 1 -#define INTEL_AES_NI (1<<1) -#define INTEL_SSSE3 (1<<2) -#define INTEL_PCLMUL (1<<3) -#define INTEL_AVX (1<<4) -#define INTEL_SHA (1<<5) -#define PADLOCK (1<<20) -#define PADLOCK_PHE (1<<21) -#define PADLOCK_PHE_SHA512 (1<<22) +#define INTEL_AES_NI (1 << 1) +#define INTEL_SSSE3 (1 << 2) +#define INTEL_PCLMUL (1 << 3) +#define INTEL_AVX (1 << 4) +#define INTEL_SHA (1 << 5) +#define PADLOCK (1 << 20) +#define PADLOCK_PHE (1 << 21) +#define PADLOCK_PHE_SHA512 (1 << 22) #ifndef HAVE_GET_CPUID_COUNT -static inline void -get_cpuid_level7(unsigned int *eax, unsigned int *ebx, - unsigned int *ecx, unsigned int *edx) +static inline void get_cpuid_level7(unsigned int *eax, unsigned int *ebx, + unsigned int *ecx, unsigned int *edx) { /* we avoid using __get_cpuid_count, because it is not available with gcc 4.8 */ if (__get_cpuid_max(7, 0) < 7) @@ -138,7 +137,7 @@ get_cpuid_level7(unsigned int *eax, unsigned int *ebx, return; } #else -# define get_cpuid_level7(a,b,c,d) __get_cpuid_count(7, 0, a, b, c, d) +#define get_cpuid_level7(a, b, c, d) __get_cpuid_count(7, 0, a, b, c, d) #endif static unsigned read_cpuid_vals(unsigned int vals[4]) @@ -170,7 +169,7 @@ static unsigned check_4th_gen_intel_features(unsigned ecx) #if defined(_MSC_VER) && !defined(__clang__) xcr0 = _xgetbv(0); #else - __asm__("xgetbv": "=a"(xcr0): "c"(0):"%edx"); + __asm__("xgetbv" : "=a"(xcr0) : "c"(0) : "%edx"); #endif /* Check if xmm and ymm state are enabled in XCR0. */ return (xcr0 & 6) == 6; @@ -191,8 +190,8 @@ static void capabilities_to_intel_cpuid(unsigned capabilities) if (a[1] & bit_AES) { GNUTLS_x86_cpuid_s[1] |= bit_AES; } else { - _gnutls_debug_log - ("AESNI acceleration requested but not available\n"); + _gnutls_debug_log( + "AESNI acceleration requested but not available\n"); } } @@ -200,8 +199,8 @@ static void capabilities_to_intel_cpuid(unsigned capabilities) if (a[1] & bit_SSSE3) { GNUTLS_x86_cpuid_s[1] |= bit_SSSE3; } else { - _gnutls_debug_log - ("SSSE3 acceleration requested but not available\n"); + _gnutls_debug_log( + "SSSE3 acceleration requested but not available\n"); } } @@ -210,8 +209,8 @@ static void capabilities_to_intel_cpuid(unsigned capabilities) check_4th_gen_intel_features(a[1])) { GNUTLS_x86_cpuid_s[1] |= bit_AVX | bit_MOVBE; } else { - _gnutls_debug_log - ("AVX acceleration requested but not available\n"); + _gnutls_debug_log( + "AVX acceleration requested but not available\n"); } } @@ -219,8 +218,8 @@ static void capabilities_to_intel_cpuid(unsigned capabilities) if (a[1] & bit_PCLMUL) { GNUTLS_x86_cpuid_s[1] |= bit_PCLMUL; } else { - _gnutls_debug_log - ("PCLMUL acceleration requested but not available\n"); + _gnutls_debug_log( + "PCLMUL acceleration requested but not available\n"); } } @@ -228,8 +227,8 @@ static void capabilities_to_intel_cpuid(unsigned capabilities) if (a[2] & bit_SHA) { GNUTLS_x86_cpuid_s[2] |= bit_SHA; } else { - _gnutls_debug_log - ("SHA acceleration requested but not available\n"); + _gnutls_debug_log( + "SHA acceleration requested but not available\n"); } } } @@ -253,7 +252,7 @@ static unsigned check_sha(void) static unsigned check_avx_movbe(void) { return (GNUTLS_x86_cpuid_s[1] & (bit_AVX | bit_MOVBE)) == - (bit_AVX | bit_MOVBE); + (bit_AVX | bit_MOVBE); } static unsigned check_pclmul(void) @@ -277,8 +276,8 @@ static unsigned capabilities_to_zhaoxin_edx(unsigned capabilities) if (c & bit_PADLOCK) { GNUTLS_x86_cpuid_s[2] |= bit_PADLOCK; } else { - _gnutls_debug_log - ("Padlock acceleration requested but not available\n"); + _gnutls_debug_log( + "Padlock acceleration requested but not available\n"); } } @@ -286,8 +285,8 @@ static unsigned capabilities_to_zhaoxin_edx(unsigned capabilities) if (c & bit_PADLOCK_PHE) { GNUTLS_x86_cpuid_s[2] |= bit_PADLOCK_PHE; } else { - _gnutls_debug_log - ("Padlock-PHE acceleration requested but not available\n"); + _gnutls_debug_log( + "Padlock-PHE acceleration requested but not available\n"); } } @@ -295,8 +294,8 @@ static unsigned capabilities_to_zhaoxin_edx(unsigned capabilities) if (c & bit_PADLOCK_PHE_SHA512) { GNUTLS_x86_cpuid_s[2] |= bit_PADLOCK_PHE_SHA512; } else { - _gnutls_debug_log - ("Padlock-PHE-SHA512 acceleration requested but not available\n"); + _gnutls_debug_log( + "Padlock-PHE-SHA512 acceleration requested but not available\n"); } } @@ -340,12 +339,10 @@ static int check_fast_pclmul(void) static int check_phe_partial(void) { - const char text[64] = - "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" - "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; - uint32_t iv[5] = { 0x67452301UL, 0xEFCDAB89UL, - 0x98BADCFEUL, 0x10325476UL, 0xC3D2E1F0UL - }; + const char text[64] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; + uint32_t iv[5] = { 0x67452301UL, 0xEFCDAB89UL, 0x98BADCFEUL, + 0x10325476UL, 0xC3D2E1F0UL }; /* If EAX is set to -1 (this is the case with padlock_sha1_blocks), the * xsha1 instruction takes a complete SHA-1 block (64 bytes), while it @@ -368,19 +365,17 @@ static unsigned check_zhaoxin(void) return 0; /* Zhaoxin and VIA CPU was detected */ - if ((memcmp(&b, "Cent", 4) == 0 && - memcmp(&d, "aurH", 4) == 0 && + if ((memcmp(&b, "Cent", 4) == 0 && memcmp(&d, "aurH", 4) == 0 && memcmp(&c, "auls", 4) == 0) || - (memcmp(&b, " Sh", 4) == 0 && - memcmp(&d, "angh", 4) == 0 && memcmp(&c, "ai ", 4) == 0)) { + (memcmp(&b, " Sh", 4) == 0 && memcmp(&d, "angh", 4) == 0 && + memcmp(&c, "ai ", 4) == 0)) { return 1; } return 0; } -static -void register_x86_padlock_crypto(unsigned capabilities) +static void register_x86_padlock_crypto(unsigned capabilities) { int ret, phe; unsigned edx; @@ -402,47 +397,41 @@ void register_x86_padlock_crypto(unsigned capabilities) if (check_ssse3()) { _gnutls_debug_log("Zhaoxin SSSE3 was detected\n"); - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_128_GCM, 90, - &_gnutls_aes_gcm_x86_ssse3, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_128_GCM, 90, + &_gnutls_aes_gcm_x86_ssse3, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_192_GCM, 90, - &_gnutls_aes_gcm_x86_ssse3, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_192_GCM, 90, + &_gnutls_aes_gcm_x86_ssse3, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_256_GCM, 90, - &_gnutls_aes_gcm_x86_ssse3, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_256_GCM, 90, + &_gnutls_aes_gcm_x86_ssse3, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_128_CBC, 90, &_gnutls_aes_ssse3, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_128_CBC, 90, &_gnutls_aes_ssse3, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_192_CBC, 90, &_gnutls_aes_ssse3, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_192_CBC, 90, &_gnutls_aes_ssse3, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_256_CBC, 90, &_gnutls_aes_ssse3, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_256_CBC, 90, &_gnutls_aes_ssse3, 0); if (ret < 0) { gnutls_assert(); } @@ -452,239 +441,191 @@ void register_x86_padlock_crypto(unsigned capabilities) if (check_sha()) _gnutls_debug_log("Zhaoxin SHA was detected\n"); - ret = - gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA1, - 80, - &_gnutls_sha_x86_ssse3, - 0); + ret = gnutls_crypto_single_digest_register( + GNUTLS_DIG_SHA1, 80, &_gnutls_sha_x86_ssse3, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA224, - 80, - &_gnutls_sha_x86_ssse3, - 0); + ret = gnutls_crypto_single_digest_register( + GNUTLS_DIG_SHA224, 80, &_gnutls_sha_x86_ssse3, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA256, - 80, - &_gnutls_sha_x86_ssse3, - 0); + ret = gnutls_crypto_single_digest_register( + GNUTLS_DIG_SHA256, 80, &_gnutls_sha_x86_ssse3, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA1, - 80, - &_gnutls_hmac_sha_x86_ssse3, - 0); + ret = gnutls_crypto_single_mac_register( + GNUTLS_MAC_SHA1, 80, &_gnutls_hmac_sha_x86_ssse3, 0); if (ret < 0) gnutls_assert(); - ret = - gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA224, - 80, - &_gnutls_hmac_sha_x86_ssse3, - 0); + ret = gnutls_crypto_single_mac_register( + GNUTLS_MAC_SHA224, 80, &_gnutls_hmac_sha_x86_ssse3, 0); if (ret < 0) gnutls_assert(); - ret = - gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA256, - 80, - &_gnutls_hmac_sha_x86_ssse3, - 0); + ret = gnutls_crypto_single_mac_register( + GNUTLS_MAC_SHA256, 80, &_gnutls_hmac_sha_x86_ssse3, 0); if (ret < 0) gnutls_assert(); - ret = - gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA384, - 80, - &_gnutls_sha_x86_ssse3, - 0); + ret = gnutls_crypto_single_digest_register( + GNUTLS_DIG_SHA384, 80, &_gnutls_sha_x86_ssse3, 0); if (ret < 0) gnutls_assert(); - ret = - gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA512, - 80, - &_gnutls_sha_x86_ssse3, - 0); + ret = gnutls_crypto_single_digest_register( + GNUTLS_DIG_SHA512, 80, &_gnutls_sha_x86_ssse3, 0); if (ret < 0) gnutls_assert(); - ret = - gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA384, - 80, - &_gnutls_hmac_sha_x86_ssse3, - 0); + ret = gnutls_crypto_single_mac_register( + GNUTLS_MAC_SHA384, 80, &_gnutls_hmac_sha_x86_ssse3, 0); if (ret < 0) gnutls_assert(); - ret = - gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA512, - 80, - &_gnutls_hmac_sha_x86_ssse3, - 0); + ret = gnutls_crypto_single_mac_register( + GNUTLS_MAC_SHA512, 80, &_gnutls_hmac_sha_x86_ssse3, 0); if (ret < 0) gnutls_assert(); } if (check_optimized_aes()) { _gnutls_debug_log("Zhaoxin AES accelerator was detected\n"); - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_128_CBC, 80, &_gnutls_aesni_x86, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_128_CBC, 80, &_gnutls_aesni_x86, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_192_CBC, 80, &_gnutls_aesni_x86, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_192_CBC, 80, &_gnutls_aesni_x86, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_256_CBC, 80, &_gnutls_aesni_x86, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_256_CBC, 80, &_gnutls_aesni_x86, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_128_CCM, 80, - &_gnutls_aes_ccm_x86_aesni, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_128_CCM, 80, + &_gnutls_aes_ccm_x86_aesni, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_256_CCM, 80, - &_gnutls_aes_ccm_x86_aesni, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_256_CCM, 80, + &_gnutls_aes_ccm_x86_aesni, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_128_CCM_8, 80, - &_gnutls_aes_ccm_x86_aesni, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_128_CCM_8, 80, + &_gnutls_aes_ccm_x86_aesni, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_256_CCM_8, 80, - &_gnutls_aes_ccm_x86_aesni, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_256_CCM_8, 80, + &_gnutls_aes_ccm_x86_aesni, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_128_XTS, 80, - &_gnutls_aes_xts_x86_aesni, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_128_XTS, 80, + &_gnutls_aes_xts_x86_aesni, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_256_XTS, 80, - &_gnutls_aes_xts_x86_aesni, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_256_XTS, 80, + &_gnutls_aes_xts_x86_aesni, 0); if (ret < 0) { gnutls_assert(); } -# ifdef ASM_X86_64 +#ifdef ASM_X86_64 if (check_pclmul()) { /* register GCM ciphers */ - _gnutls_debug_log - ("Zhaoxin GCM accelerator was detected\n"); + _gnutls_debug_log( + "Zhaoxin GCM accelerator was detected\n"); if (check_avx_movbe() && check_fast_pclmul()) { - _gnutls_debug_log - ("Zhaoxin GCM accelerator (AVX) was detected\n"); - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_128_GCM, 80, - &_gnutls_aes_gcm_pclmul_avx, 0); + _gnutls_debug_log( + "Zhaoxin GCM accelerator (AVX) was detected\n"); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_128_GCM, 80, + &_gnutls_aes_gcm_pclmul_avx, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_192_GCM, 80, - &_gnutls_aes_gcm_pclmul_avx, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_192_GCM, 80, + &_gnutls_aes_gcm_pclmul_avx, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_256_GCM, 80, - &_gnutls_aes_gcm_pclmul_avx, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_256_GCM, 80, + &_gnutls_aes_gcm_pclmul_avx, 0); if (ret < 0) { gnutls_assert(); } } else { - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_128_GCM, 80, - &_gnutls_aes_gcm_pclmul, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_128_GCM, 80, + &_gnutls_aes_gcm_pclmul, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_192_GCM, 80, - &_gnutls_aes_gcm_pclmul, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_192_GCM, 80, + &_gnutls_aes_gcm_pclmul, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_256_GCM, 80, - &_gnutls_aes_gcm_pclmul, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_256_GCM, 80, + &_gnutls_aes_gcm_pclmul, 0); if (ret < 0) { gnutls_assert(); } } } else -# endif +#endif { - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_128_GCM, 80, - &_gnutls_aes_gcm_x86_aesni, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_128_GCM, 80, + &_gnutls_aes_gcm_x86_aesni, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_192_GCM, 80, - &_gnutls_aes_gcm_x86_aesni, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_192_GCM, 80, + &_gnutls_aes_gcm_x86_aesni, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_256_GCM, 80, - &_gnutls_aes_gcm_x86_aesni, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_256_GCM, 80, + &_gnutls_aes_gcm_x86_aesni, 0); if (ret < 0) { gnutls_assert(); } @@ -693,40 +634,35 @@ void register_x86_padlock_crypto(unsigned capabilities) if (check_padlock(edx)) { _gnutls_debug_log("Padlock AES accelerator was detected\n"); - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_128_CBC, 80, &_gnutls_aes_padlock, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_128_CBC, 80, &_gnutls_aes_padlock, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_192_CBC, 80, &_gnutls_aes_padlock, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_192_CBC, 80, &_gnutls_aes_padlock, 0); if (ret < 0) { gnutls_assert(); } /* register GCM ciphers */ - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_128_GCM, 90, - &_gnutls_aes_gcm_padlock, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_128_GCM, 90, &_gnutls_aes_gcm_padlock, + 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_256_CBC, 80, &_gnutls_aes_padlock, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_256_CBC, 80, &_gnutls_aes_padlock, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_256_GCM, 90, - &_gnutls_aes_gcm_padlock, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_256_GCM, 90, &_gnutls_aes_gcm_padlock, + 0); if (ret < 0) { gnutls_assert(); } @@ -735,134 +671,105 @@ void register_x86_padlock_crypto(unsigned capabilities) if (!check_optimized_aes() && !check_padlock(edx)) _gnutls_priority_update_non_aesni(); -# ifdef HAVE_LIBNETTLE +#ifdef HAVE_LIBNETTLE phe = check_phe(edx); if (phe && check_phe_partial()) { - _gnutls_debug_log - ("Padlock SHA1 and SHA256 (partial) accelerator was detected\n"); + _gnutls_debug_log( + "Padlock SHA1 and SHA256 (partial) accelerator was detected\n"); if (check_phe_sha512(edx)) { - _gnutls_debug_log - ("Padlock SHA512 (partial) accelerator was detected\n"); - ret = - gnutls_crypto_single_digest_register - (GNUTLS_DIG_SHA384, 80, &_gnutls_sha_padlock, 0); + _gnutls_debug_log( + "Padlock SHA512 (partial) accelerator was detected\n"); + ret = gnutls_crypto_single_digest_register( + GNUTLS_DIG_SHA384, 80, &_gnutls_sha_padlock, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_digest_register - (GNUTLS_DIG_SHA512, 80, &_gnutls_sha_padlock, 0); + ret = gnutls_crypto_single_digest_register( + GNUTLS_DIG_SHA512, 80, &_gnutls_sha_padlock, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_mac_register - (GNUTLS_MAC_SHA384, 80, - &_gnutls_hmac_sha_padlock, 0); + ret = gnutls_crypto_single_mac_register( + GNUTLS_MAC_SHA384, 80, + &_gnutls_hmac_sha_padlock, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_mac_register - (GNUTLS_MAC_SHA512, 80, - &_gnutls_hmac_sha_padlock, 0); + ret = gnutls_crypto_single_mac_register( + GNUTLS_MAC_SHA512, 80, + &_gnutls_hmac_sha_padlock, 0); if (ret < 0) { gnutls_assert(); } } - ret = - gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA1, - 90, - &_gnutls_sha_padlock, - 0); + ret = gnutls_crypto_single_digest_register( + GNUTLS_DIG_SHA1, 90, &_gnutls_sha_padlock, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA224, - 90, - &_gnutls_sha_padlock, - 0); + ret = gnutls_crypto_single_digest_register( + GNUTLS_DIG_SHA224, 90, &_gnutls_sha_padlock, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA256, - 90, - &_gnutls_sha_padlock, - 0); + ret = gnutls_crypto_single_digest_register( + GNUTLS_DIG_SHA256, 90, &_gnutls_sha_padlock, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA1, - 90, - &_gnutls_hmac_sha_padlock, - 0); + ret = gnutls_crypto_single_mac_register( + GNUTLS_MAC_SHA1, 90, &_gnutls_hmac_sha_padlock, 0); if (ret < 0) { gnutls_assert(); } /* we don't register MAC_SHA224 because it is not used by TLS */ - ret = - gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA256, - 90, - &_gnutls_hmac_sha_padlock, - 0); + ret = gnutls_crypto_single_mac_register( + GNUTLS_MAC_SHA256, 90, &_gnutls_hmac_sha_padlock, 0); if (ret < 0) { gnutls_assert(); } } else if (phe) { /* Original padlock PHE. Does not support incremental operations. */ - _gnutls_debug_log - ("Padlock SHA1 and SHA256 accelerator was detected\n"); - ret = - gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA1, - 90, - &_gnutls_sha_padlock_oneshot, - 0); + _gnutls_debug_log( + "Padlock SHA1 and SHA256 accelerator was detected\n"); + ret = gnutls_crypto_single_digest_register( + GNUTLS_DIG_SHA1, 90, &_gnutls_sha_padlock_oneshot, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA256, - 90, - &_gnutls_sha_padlock_oneshot, - 0); + ret = gnutls_crypto_single_digest_register( + GNUTLS_DIG_SHA256, 90, &_gnutls_sha_padlock_oneshot, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA1, - 90, - &_gnutls_hmac_sha_padlock_oneshot, - 0); + ret = gnutls_crypto_single_mac_register( + GNUTLS_MAC_SHA1, 90, &_gnutls_hmac_sha_padlock_oneshot, + 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA256, - 90, - &_gnutls_hmac_sha_padlock_oneshot, - 0); + ret = gnutls_crypto_single_mac_register( + GNUTLS_MAC_SHA256, 90, + &_gnutls_hmac_sha_padlock_oneshot, 0); if (ret < 0) { gnutls_assert(); } } -# endif +#endif return; } @@ -882,21 +789,20 @@ static enum x86_cpu_vendor check_x86_cpu_vendor(void) return X86_CPU_VENDOR_OTHER; } - if (memcmp(&b, "Genu", 4) == 0 && - memcmp(&d, "ineI", 4) == 0 && memcmp(&c, "ntel", 4) == 0) { + if (memcmp(&b, "Genu", 4) == 0 && memcmp(&d, "ineI", 4) == 0 && + memcmp(&c, "ntel", 4) == 0) { return X86_CPU_VENDOR_INTEL; } - if (memcmp(&b, "Auth", 4) == 0 && - memcmp(&d, "enti", 4) == 0 && memcmp(&c, "cAMD", 4) == 0) { + if (memcmp(&b, "Auth", 4) == 0 && memcmp(&d, "enti", 4) == 0 && + memcmp(&c, "cAMD", 4) == 0) { return X86_CPU_VENDOR_AMD; } return X86_CPU_VENDOR_OTHER; } -static -void register_x86_intel_crypto(unsigned capabilities) +static void register_x86_intel_crypto(unsigned capabilities) { int ret; enum x86_cpu_vendor vendor; @@ -918,10 +824,9 @@ void register_x86_intel_crypto(unsigned capabilities) * OpenSSL does. Should we clear * bit_AVX512DQ, bit_AVX512PF, bit_AVX512ER, * and bit_AVX512CD? */ - GNUTLS_x86_cpuid_s[2] &= ~(bit_AVX2 | - bit_AVX512F | - bit_AVX512IFMA | - bit_AVX512BW | bit_AVX512BW); + GNUTLS_x86_cpuid_s[2] &= + ~(bit_AVX2 | bit_AVX512F | bit_AVX512IFMA | + bit_AVX512BW | bit_AVX512BW); } } else { capabilities_to_intel_cpuid(capabilities); @@ -937,47 +842,41 @@ void register_x86_intel_crypto(unsigned capabilities) if (check_ssse3()) { _gnutls_debug_log("Intel SSSE3 was detected\n"); - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_128_GCM, 90, - &_gnutls_aes_gcm_x86_ssse3, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_128_GCM, 90, + &_gnutls_aes_gcm_x86_ssse3, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_192_GCM, 90, - &_gnutls_aes_gcm_x86_ssse3, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_192_GCM, 90, + &_gnutls_aes_gcm_x86_ssse3, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_256_GCM, 90, - &_gnutls_aes_gcm_x86_ssse3, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_256_GCM, 90, + &_gnutls_aes_gcm_x86_ssse3, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_128_CBC, 90, &_gnutls_aes_ssse3, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_128_CBC, 90, &_gnutls_aes_ssse3, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_192_CBC, 90, &_gnutls_aes_ssse3, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_192_CBC, 90, &_gnutls_aes_ssse3, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_256_CBC, 90, &_gnutls_aes_ssse3, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_256_CBC, 90, &_gnutls_aes_ssse3, 0); if (ret < 0) { gnutls_assert(); } @@ -987,156 +886,117 @@ void register_x86_intel_crypto(unsigned capabilities) if (check_sha()) _gnutls_debug_log("Intel SHA was detected\n"); - ret = - gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA1, - 80, - &_gnutls_sha_x86_ssse3, - 0); + ret = gnutls_crypto_single_digest_register( + GNUTLS_DIG_SHA1, 80, &_gnutls_sha_x86_ssse3, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA224, - 80, - &_gnutls_sha_x86_ssse3, - 0); + ret = gnutls_crypto_single_digest_register( + GNUTLS_DIG_SHA224, 80, &_gnutls_sha_x86_ssse3, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA256, - 80, - &_gnutls_sha_x86_ssse3, - 0); + ret = gnutls_crypto_single_digest_register( + GNUTLS_DIG_SHA256, 80, &_gnutls_sha_x86_ssse3, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA1, - 80, - &_gnutls_hmac_sha_x86_ssse3, - 0); + ret = gnutls_crypto_single_mac_register( + GNUTLS_MAC_SHA1, 80, &_gnutls_hmac_sha_x86_ssse3, 0); if (ret < 0) gnutls_assert(); - ret = - gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA224, - 80, - &_gnutls_hmac_sha_x86_ssse3, - 0); + ret = gnutls_crypto_single_mac_register( + GNUTLS_MAC_SHA224, 80, &_gnutls_hmac_sha_x86_ssse3, 0); if (ret < 0) gnutls_assert(); - ret = - gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA256, - 80, - &_gnutls_hmac_sha_x86_ssse3, - 0); + ret = gnutls_crypto_single_mac_register( + GNUTLS_MAC_SHA256, 80, &_gnutls_hmac_sha_x86_ssse3, 0); if (ret < 0) gnutls_assert(); - ret = - gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA384, - 80, - &_gnutls_sha_x86_ssse3, - 0); + ret = gnutls_crypto_single_digest_register( + GNUTLS_DIG_SHA384, 80, &_gnutls_sha_x86_ssse3, 0); if (ret < 0) gnutls_assert(); - ret = - gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA512, - 80, - &_gnutls_sha_x86_ssse3, - 0); + ret = gnutls_crypto_single_digest_register( + GNUTLS_DIG_SHA512, 80, &_gnutls_sha_x86_ssse3, 0); if (ret < 0) gnutls_assert(); - ret = - gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA384, - 80, - &_gnutls_hmac_sha_x86_ssse3, - 0); + ret = gnutls_crypto_single_mac_register( + GNUTLS_MAC_SHA384, 80, &_gnutls_hmac_sha_x86_ssse3, 0); if (ret < 0) gnutls_assert(); - ret = - gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA512, - 80, - &_gnutls_hmac_sha_x86_ssse3, - 0); + ret = gnutls_crypto_single_mac_register( + GNUTLS_MAC_SHA512, 80, &_gnutls_hmac_sha_x86_ssse3, 0); if (ret < 0) gnutls_assert(); } if (check_optimized_aes()) { _gnutls_debug_log("Intel AES accelerator was detected\n"); - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_128_CBC, 80, &_gnutls_aesni_x86, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_128_CBC, 80, &_gnutls_aesni_x86, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_192_CBC, 80, &_gnutls_aesni_x86, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_192_CBC, 80, &_gnutls_aesni_x86, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_256_CBC, 80, &_gnutls_aesni_x86, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_256_CBC, 80, &_gnutls_aesni_x86, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_128_CCM, 80, - &_gnutls_aes_ccm_x86_aesni, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_128_CCM, 80, + &_gnutls_aes_ccm_x86_aesni, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_256_CCM, 80, - &_gnutls_aes_ccm_x86_aesni, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_256_CCM, 80, + &_gnutls_aes_ccm_x86_aesni, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_128_CCM_8, 80, - &_gnutls_aes_ccm_x86_aesni, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_128_CCM_8, 80, + &_gnutls_aes_ccm_x86_aesni, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_256_CCM_8, 80, - &_gnutls_aes_ccm_x86_aesni, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_256_CCM_8, 80, + &_gnutls_aes_ccm_x86_aesni, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_128_XTS, 80, - &_gnutls_aes_xts_x86_aesni, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_128_XTS, 80, + &_gnutls_aes_xts_x86_aesni, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_256_XTS, 80, - &_gnutls_aes_xts_x86_aesni, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_256_XTS, 80, + &_gnutls_aes_xts_x86_aesni, 0); if (ret < 0) { gnutls_assert(); } @@ -1145,54 +1005,48 @@ void register_x86_intel_crypto(unsigned capabilities) if (check_pclmul()) { /* register GCM ciphers */ if (check_avx_movbe()) { - _gnutls_debug_log - ("Intel GCM accelerator (AVX) was detected\n"); - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_128_GCM, 80, - &_gnutls_aes_gcm_pclmul_avx, 0); + _gnutls_debug_log( + "Intel GCM accelerator (AVX) was detected\n"); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_128_GCM, 80, + &_gnutls_aes_gcm_pclmul_avx, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_192_GCM, 80, - &_gnutls_aes_gcm_pclmul_avx, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_192_GCM, 80, + &_gnutls_aes_gcm_pclmul_avx, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_256_GCM, 80, - &_gnutls_aes_gcm_pclmul_avx, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_256_GCM, 80, + &_gnutls_aes_gcm_pclmul_avx, 0); if (ret < 0) { gnutls_assert(); } } else { - _gnutls_debug_log - ("Intel GCM accelerator was detected\n"); - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_128_GCM, 80, - &_gnutls_aes_gcm_pclmul, 0); + _gnutls_debug_log( + "Intel GCM accelerator was detected\n"); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_128_GCM, 80, + &_gnutls_aes_gcm_pclmul, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_192_GCM, 80, - &_gnutls_aes_gcm_pclmul, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_192_GCM, 80, + &_gnutls_aes_gcm_pclmul, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_256_GCM, 80, - &_gnutls_aes_gcm_pclmul, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_256_GCM, 80, + &_gnutls_aes_gcm_pclmul, 0); if (ret < 0) { gnutls_assert(); } @@ -1200,26 +1054,23 @@ void register_x86_intel_crypto(unsigned capabilities) } else #endif { - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_128_GCM, 80, - &_gnutls_aes_gcm_x86_aesni, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_128_GCM, 80, + &_gnutls_aes_gcm_x86_aesni, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_192_GCM, 80, - &_gnutls_aes_gcm_x86_aesni, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_192_GCM, 80, + &_gnutls_aes_gcm_x86_aesni, 0); if (ret < 0) { gnutls_assert(); } - ret = - gnutls_crypto_single_cipher_register - (GNUTLS_CIPHER_AES_256_GCM, 80, - &_gnutls_aes_gcm_x86_aesni, 0); + ret = gnutls_crypto_single_cipher_register( + GNUTLS_CIPHER_AES_256_GCM, 80, + &_gnutls_aes_gcm_x86_aesni, 0); if (ret < 0) { gnutls_assert(); } diff --git a/lib/accelerated/x86/x86-common.h b/lib/accelerated/x86/x86-common.h index 8d6d14f4af..97d984677c 100644 --- a/lib/accelerated/x86/x86-common.h +++ b/lib/accelerated/x86/x86-common.h @@ -20,29 +20,28 @@ * */ #ifndef GNUTLS_LIB_ACCELERATED_X86_X86_COMMON_H -# define GNUTLS_LIB_ACCELERATED_X86_X86_COMMON_H +#define GNUTLS_LIB_ACCELERATED_X86_X86_COMMON_H -# include +#include -# if defined(ASM_X86) +#if defined(ASM_X86) void gnutls_cpuid(unsigned int func, unsigned int *ax, unsigned int *bx, unsigned int *cx, unsigned int *dx); -# endif +#endif -# define CHECK_AES_KEYSIZE(s) \ +#define CHECK_AES_KEYSIZE(s) \ if (s != 16 && s != 24 && s != 32) \ - return GNUTLS_E_INVALID_REQUEST + return GNUTLS_E_INVALID_REQUEST -# define NN_HASH(name, update_func, digest_func, NAME) { \ - #name, \ - sizeof(struct name##_ctx), \ - NAME##_DIGEST_SIZE, \ - NAME##_DATA_SIZE, \ - (nettle_hash_init_func *) name##_init, \ - (nettle_hash_update_func *) update_func, \ - (nettle_hash_digest_func *) digest_func \ -} +#define NN_HASH(name, update_func, digest_func, NAME) \ + { \ +#name, sizeof(struct name##_ctx), NAME##_DIGEST_SIZE, \ + NAME##_DATA_SIZE, \ + (nettle_hash_init_func *)name##_init, \ + (nettle_hash_update_func *)update_func, \ + (nettle_hash_digest_func *)digest_func \ + } #endif diff --git a/lib/alert.c b/lib/alert.c index f0b9e5da0c..97608ead5c 100644 --- a/lib/alert.c +++ b/lib/alert.c @@ -33,8 +33,10 @@ typedef struct { const char *desc; } gnutls_alert_entry; -#define ALERT_ENTRY(x,y) \ - {x, #x, y} +#define ALERT_ENTRY(x, y) \ + { \ + x, #x, y \ + } static const gnutls_alert_entry sup_alerts[] = { ALERT_ENTRY(GNUTLS_A_CLOSE_NOTIFY, N_("Close notify")), @@ -42,26 +44,22 @@ static const gnutls_alert_entry sup_alerts[] = { ALERT_ENTRY(GNUTLS_A_BAD_RECORD_MAC, N_("Bad record MAC")), ALERT_ENTRY(GNUTLS_A_DECRYPTION_FAILED, N_("Decryption failed")), ALERT_ENTRY(GNUTLS_A_RECORD_OVERFLOW, N_("Record overflow")), - ALERT_ENTRY(GNUTLS_A_DECOMPRESSION_FAILURE, - N_("Decompression failed")), + ALERT_ENTRY(GNUTLS_A_DECOMPRESSION_FAILURE, N_("Decompression failed")), ALERT_ENTRY(GNUTLS_A_HANDSHAKE_FAILURE, N_("Handshake failed")), ALERT_ENTRY(GNUTLS_A_BAD_CERTIFICATE, N_("Certificate is bad")), ALERT_ENTRY(GNUTLS_A_UNSUPPORTED_CERTIFICATE, N_("Certificate is not supported")), ALERT_ENTRY(GNUTLS_A_CERTIFICATE_REVOKED, N_("Certificate was revoked")), - ALERT_ENTRY(GNUTLS_A_CERTIFICATE_EXPIRED, - N_("Certificate is expired")), - ALERT_ENTRY(GNUTLS_A_CERTIFICATE_UNKNOWN, - N_("Unknown certificate")), + ALERT_ENTRY(GNUTLS_A_CERTIFICATE_EXPIRED, N_("Certificate is expired")), + ALERT_ENTRY(GNUTLS_A_CERTIFICATE_UNKNOWN, N_("Unknown certificate")), ALERT_ENTRY(GNUTLS_A_ILLEGAL_PARAMETER, N_("Illegal parameter")), ALERT_ENTRY(GNUTLS_A_UNKNOWN_CA, N_("CA is unknown")), ALERT_ENTRY(GNUTLS_A_ACCESS_DENIED, N_("Access was denied")), ALERT_ENTRY(GNUTLS_A_DECODE_ERROR, N_("Decode error")), ALERT_ENTRY(GNUTLS_A_DECRYPT_ERROR, N_("Decrypt error")), ALERT_ENTRY(GNUTLS_A_EXPORT_RESTRICTION, N_("Export restriction")), - ALERT_ENTRY(GNUTLS_A_PROTOCOL_VERSION, - N_("Error in protocol version")), + ALERT_ENTRY(GNUTLS_A_PROTOCOL_VERSION, N_("Error in protocol version")), ALERT_ENTRY(GNUTLS_A_INSUFFICIENT_SECURITY, N_("Insufficient security")), ALERT_ENTRY(GNUTLS_A_USER_CANCELED, N_("User canceled")), @@ -83,11 +81,10 @@ static const gnutls_alert_entry sup_alerts[] = { ALERT_ENTRY(GNUTLS_A_MISSING_EXTENSION, N_("An extension was expected but was not seen")), ALERT_ENTRY(GNUTLS_A_NO_APPLICATION_PROTOCOL, - N_ - ("No supported application protocol could be negotiated")), + N_("No supported application protocol could be negotiated")), ALERT_ENTRY(GNUTLS_A_CERTIFICATE_REQUIRED, N_("Certificate is required")), - {0, NULL, NULL} + { 0, NULL, NULL } }; /** @@ -149,22 +146,21 @@ const char *gnutls_alert_get_strname(gnutls_alert_description_t alert) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise * an error code is returned. **/ -int -gnutls_alert_send(gnutls_session_t session, gnutls_alert_level_t level, - gnutls_alert_description_t desc) +int gnutls_alert_send(gnutls_session_t session, gnutls_alert_level_t level, + gnutls_alert_description_t desc) { uint8_t data[2]; int ret; const char *name; - data[0] = (uint8_t) level; - data[1] = (uint8_t) desc; + data[0] = (uint8_t)level; + data[1] = (uint8_t)desc; - name = gnutls_alert_get_name((gnutls_alert_description_t) data[1]); + name = gnutls_alert_get_name((gnutls_alert_description_t)data[1]); if (name == NULL) name = "(unknown)"; - _gnutls_record_log("REC: Sending Alert[%d|%d] - %s\n", data[0], - data[1], name); + _gnutls_record_log("REC: Sending Alert[%d|%d] - %s\n", data[0], data[1], + name); if (session->internals.alert_read_func) { record_parameters_st *params; @@ -172,17 +168,16 @@ gnutls_alert_send(gnutls_session_t session, gnutls_alert_level_t level, ret = _gnutls_epoch_get(session, EPOCH_WRITE_CURRENT, ¶ms); if (ret < 0) return gnutls_assert_val(ret); - ret = session->internals.alert_read_func(session, - params->write.level, - level, desc); + ret = session->internals.alert_read_func( + session, params->write.level, level, desc); if (ret < 0) return gnutls_assert_val(ret); return ret; } - ret = _gnutls_send_int(session, GNUTLS_ALERT, -1, - EPOCH_WRITE_CURRENT, data, 2, MBUFFER_FLUSH); + ret = _gnutls_send_int(session, GNUTLS_ALERT, -1, EPOCH_WRITE_CURRENT, + data, 2, MBUFFER_FLUSH); return (ret < 0) ? ret : 0; } @@ -207,7 +202,7 @@ int gnutls_error_to_alert(int err, int *level) { int ret, _level = -1; - switch (err) { /* send appropriate alert */ + switch (err) { /* send appropriate alert */ case GNUTLS_E_PK_SIG_VERIFY_FAILED: case GNUTLS_E_ERROR_IN_FINISHED_PACKET: ret = GNUTLS_A_DECRYPT_ERROR; @@ -384,14 +379,14 @@ int gnutls_alert_send_appropriate(gnutls_session_t session, int err) int alert; int level; - if (err != GNUTLS_E_REHANDSHAKE && (!gnutls_error_is_fatal(err) || - err == - GNUTLS_E_FATAL_ALERT_RECEIVED)) + if (err != GNUTLS_E_REHANDSHAKE && + (!gnutls_error_is_fatal(err) || + err == GNUTLS_E_FATAL_ALERT_RECEIVED)) return gnutls_assert_val(0); alert = gnutls_error_to_alert(err, &level); - return gnutls_alert_send(session, (gnutls_alert_level_t) level, alert); + return gnutls_alert_send(session, (gnutls_alert_level_t)level, alert); } /** @@ -409,5 +404,5 @@ int gnutls_alert_send_appropriate(gnutls_session_t session, int err) **/ gnutls_alert_description_t gnutls_alert_get(gnutls_session_t session) { - return (gnutls_alert_description_t) session->internals.last_alert; + return (gnutls_alert_description_t)session->internals.last_alert; } diff --git a/lib/algorithms.h b/lib/algorithms.h index 727bc5c9f9..c59dc87b8b 100644 --- a/lib/algorithms.h +++ b/lib/algorithms.h @@ -22,41 +22,45 @@ */ #ifndef GNUTLS_LIB_ALGORITHMS_H -# define GNUTLS_LIB_ALGORITHMS_H +#define GNUTLS_LIB_ALGORITHMS_H -# include "auth.h" +#include "auth.h" -# ifdef DISABLE_SYSTEM_CONFIG -# define SYSTEM_CONFIG_OR_CONST const -# else -# define SYSTEM_CONFIG_OR_CONST -# endif +#ifdef DISABLE_SYSTEM_CONFIG +#define SYSTEM_CONFIG_OR_CONST const +#else +#define SYSTEM_CONFIG_OR_CONST +#endif -# define version_to_entry _gnutls_version_to_entry +#define version_to_entry _gnutls_version_to_entry -# define GNUTLS_RENEGO_PROTECTION_REQUEST_MAJOR 0x00 -# define GNUTLS_RENEGO_PROTECTION_REQUEST_MINOR 0xFF +#define GNUTLS_RENEGO_PROTECTION_REQUEST_MAJOR 0x00 +#define GNUTLS_RENEGO_PROTECTION_REQUEST_MINOR 0xFF -# define GNUTLS_FALLBACK_SCSV_MAJOR 0x56 -# define GNUTLS_FALLBACK_SCSV_MINOR 0x00 +#define GNUTLS_FALLBACK_SCSV_MAJOR 0x56 +#define GNUTLS_FALLBACK_SCSV_MINOR 0x00 -# define IS_GOSTEC(x) (((x)==GNUTLS_PK_GOST_01) || \ - ((x)==GNUTLS_PK_GOST_12_256)|| \ - ((x)==GNUTLS_PK_GOST_12_512)) +#define IS_GOSTEC(x) \ + (((x) == GNUTLS_PK_GOST_01) || ((x) == GNUTLS_PK_GOST_12_256) || \ + ((x) == GNUTLS_PK_GOST_12_512)) -# define IS_EC(x) (((x)==GNUTLS_PK_ECDSA)|| \ - ((x)==GNUTLS_PK_ECDH_X25519)||((x)==GNUTLS_PK_EDDSA_ED25519)|| \ - ((x)==GNUTLS_PK_ECDH_X448)||((x)==GNUTLS_PK_EDDSA_ED448)) +#define IS_EC(x) \ + (((x) == GNUTLS_PK_ECDSA) || ((x) == GNUTLS_PK_ECDH_X25519) || \ + ((x) == GNUTLS_PK_EDDSA_ED25519) || ((x) == GNUTLS_PK_ECDH_X448) || \ + ((x) == GNUTLS_PK_EDDSA_ED448)) -# define SIG_SEM_PRE_TLS12 (1<<1) -# define SIG_SEM_TLS13 (1<<2) -# define SIG_SEM_DEFAULT (SIG_SEM_PRE_TLS12|SIG_SEM_TLS13) +#define SIG_SEM_PRE_TLS12 (1 << 1) +#define SIG_SEM_TLS13 (1 << 2) +#define SIG_SEM_DEFAULT (SIG_SEM_PRE_TLS12 | SIG_SEM_TLS13) -# define TLS_SIGN_AID_UNKNOWN {{255, 255}, 0} -# define HAVE_UNKNOWN_SIGAID(aid) ((aid)->id[0] == 255 && (aid)->id[1] == 255) +#define TLS_SIGN_AID_UNKNOWN \ + { \ + { 255, 255 }, 0 \ + } +#define HAVE_UNKNOWN_SIGAID(aid) ((aid)->id[0] == 255 && (aid)->id[1] == 255) -# define CS_INVALID_MAJOR 0x00 -# define CS_INVALID_MINOR 0x00 +#define CS_INVALID_MAJOR 0x00 +#define CS_INVALID_MINOR 0x00 /* Functions for version handling. */ const version_entry_st *version_to_entry(gnutls_protocol_t version); @@ -67,23 +71,22 @@ const version_entry_st *_gnutls_legacy_version_max(gnutls_session_t session); const version_entry_st *_gnutls_version_max(gnutls_session_t session); int _gnutls_version_priority(gnutls_session_t session, gnutls_protocol_t version); -int _gnutls_nversion_is_supported(gnutls_session_t session, - unsigned char major, unsigned char minor); +int _gnutls_nversion_is_supported(gnutls_session_t session, unsigned char major, + unsigned char minor); gnutls_protocol_t _gnutls_version_get(uint8_t major, uint8_t minor); unsigned _gnutls_version_is_too_high(gnutls_session_t session, uint8_t major, uint8_t minor); -int _gnutls_write_supported_versions(gnutls_session_t session, uint8_t * buffer, +int _gnutls_write_supported_versions(gnutls_session_t session, uint8_t *buffer, ssize_t buffer_size); /* Functions for feature checks */ -int -_gnutls_figure_common_ciphersuite(gnutls_session_t session, - const ciphersuite_list_st * peer_clist, - const gnutls_cipher_suite_entry_st ** ce); +int _gnutls_figure_common_ciphersuite(gnutls_session_t session, + const ciphersuite_list_st *peer_clist, + const gnutls_cipher_suite_entry_st **ce); inline static int -_gnutls_version_has_selectable_prf(const version_entry_st * ver) +_gnutls_version_has_selectable_prf(const version_entry_st *ver) { if (unlikely(ver == NULL)) return 0; @@ -91,23 +94,21 @@ _gnutls_version_has_selectable_prf(const version_entry_st * ver) } inline static int -_gnutls_version_has_selectable_sighash(const version_entry_st * ver) +_gnutls_version_has_selectable_sighash(const version_entry_st *ver) { if (unlikely(ver == NULL)) return 0; return ver->selectable_sighash; } -inline static -int _gnutls_version_has_extensions(const version_entry_st * ver) +inline static int _gnutls_version_has_extensions(const version_entry_st *ver) { if (unlikely(ver == NULL)) return 0; return ver->extensions; } -inline static -int _gnutls_version_has_explicit_iv(const version_entry_st * ver) +inline static int _gnutls_version_has_explicit_iv(const version_entry_st *ver) { if (unlikely(ver == NULL)) return 0; @@ -116,10 +117,10 @@ int _gnutls_version_has_explicit_iv(const version_entry_st * ver) /* Functions for MACs. */ const mac_entry_st *_gnutls_mac_to_entry(gnutls_mac_algorithm_t c); -# define mac_to_entry(x) _gnutls_mac_to_entry(x) -# define hash_to_entry(x) mac_to_entry((gnutls_mac_algorithm_t)(x)) +#define mac_to_entry(x) _gnutls_mac_to_entry(x) +#define hash_to_entry(x) mac_to_entry((gnutls_mac_algorithm_t)(x)) -inline static int _gnutls_mac_is_ok(const mac_entry_st * e) +inline static int _gnutls_mac_is_ok(const mac_entry_st *e) { if (unlikely(e == NULL) || e->id == 0) return 0; @@ -136,7 +137,7 @@ inline static int _gnutls_mac_is_ok(const mac_entry_st * e) * Returns: length (in bytes) of the MAC output size, or 0 if the * given MAC algorithm is invalid. -*/ -inline static size_t _gnutls_mac_get_algo_len(const mac_entry_st * e) +inline static size_t _gnutls_mac_get_algo_len(const mac_entry_st *e) { if (unlikely(e == NULL)) return 0; @@ -144,7 +145,7 @@ inline static size_t _gnutls_mac_get_algo_len(const mac_entry_st * e) return e->output_size; } -inline static const char *_gnutls_x509_mac_to_oid(const mac_entry_st * e) +inline static const char *_gnutls_x509_mac_to_oid(const mac_entry_st *e) { if (unlikely(e == NULL)) return NULL; @@ -152,7 +153,7 @@ inline static const char *_gnutls_x509_mac_to_oid(const mac_entry_st * e) return e->oid; } -inline static const char *_gnutls_mac_get_name(const mac_entry_st * e) +inline static const char *_gnutls_mac_get_name(const mac_entry_st *e) { if (unlikely(e == NULL)) return NULL; @@ -160,7 +161,7 @@ inline static const char *_gnutls_mac_get_name(const mac_entry_st * e) return e->name; } -inline static int _gnutls_mac_block_size(const mac_entry_st * e) +inline static int _gnutls_mac_block_size(const mac_entry_st *e) { if (unlikely(e == NULL)) return 0; @@ -168,7 +169,7 @@ inline static int _gnutls_mac_block_size(const mac_entry_st * e) return e->block_size; } -inline static int _gnutls_mac_get_key_size(const mac_entry_st * e) +inline static int _gnutls_mac_get_key_size(const mac_entry_st *e) { if (unlikely(e == NULL)) return 0; @@ -182,20 +183,20 @@ _gnutls_mac_to_dig(gnutls_mac_algorithm_t mac) if (unlikely(mac >= GNUTLS_MAC_AEAD)) return GNUTLS_DIG_UNKNOWN; - return (gnutls_digest_algorithm_t) mac; + return (gnutls_digest_algorithm_t)mac; } -# define MAC_TO_DIG(mac) _gnutls_mac_to_dig(mac) +#define MAC_TO_DIG(mac) _gnutls_mac_to_dig(mac) /* Functions for digests. */ -# define _gnutls_x509_digest_to_oid _gnutls_x509_mac_to_oid -# define _gnutls_digest_get_name _gnutls_mac_get_name -# define _gnutls_hash_get_algo_len _gnutls_mac_get_algo_len +#define _gnutls_x509_digest_to_oid _gnutls_x509_mac_to_oid +#define _gnutls_digest_get_name _gnutls_mac_get_name +#define _gnutls_hash_get_algo_len _gnutls_mac_get_algo_len -# define DIG_TO_MAC(dig) (gnutls_mac_algorithm_t)(dig) +#define DIG_TO_MAC(dig) (gnutls_mac_algorithm_t)(dig) /* Security against pre-image attacks */ -inline static int _gnutls_digest_is_secure(const mac_entry_st * e) +inline static int _gnutls_digest_is_secure(const mac_entry_st *e) { if (unlikely(e == NULL)) return 0; @@ -205,93 +206,92 @@ inline static int _gnutls_digest_is_secure(const mac_entry_st * e) /* Functions for cipher suites. */ int _gnutls_get_client_ciphersuites(gnutls_session_t session, - gnutls_buffer_st * cdata, - const version_entry_st * minver, + gnutls_buffer_st *cdata, + const version_entry_st *minver, unsigned add_scsv); int _gnutls_supported_ciphersuites(gnutls_session_t session, - uint8_t * cipher_suites, + uint8_t *cipher_suites, unsigned int max_cipher_suite_size); -const gnutls_cipher_suite_entry_st - * cipher_suite_get(gnutls_kx_algorithm_t kx_algorithm, - gnutls_cipher_algorithm_t cipher_algorithm, - gnutls_mac_algorithm_t mac_algorithm); +const gnutls_cipher_suite_entry_st * +cipher_suite_get(gnutls_kx_algorithm_t kx_algorithm, + gnutls_cipher_algorithm_t cipher_algorithm, + gnutls_mac_algorithm_t mac_algorithm); const char *_gnutls_cipher_suite_get_name(const uint8_t suite[2]); gnutls_kx_algorithm_t _gnutls_cipher_suite_get_kx_algo(const uint8_t suite[2]); -int -_gnutls_cipher_suite_get_id(gnutls_kx_algorithm_t kx_algorithm, - gnutls_cipher_algorithm_t cipher_algorithm, - gnutls_mac_algorithm_t mac_algorithm, - uint8_t suite[2]); +int _gnutls_cipher_suite_get_id(gnutls_kx_algorithm_t kx_algorithm, + gnutls_cipher_algorithm_t cipher_algorithm, + gnutls_mac_algorithm_t mac_algorithm, + uint8_t suite[2]); -const gnutls_cipher_suite_entry_st *ciphersuite_to_entry(const uint8_t - suite[2]); +const gnutls_cipher_suite_entry_st * +ciphersuite_to_entry(const uint8_t suite[2]); /* Functions for ciphers. */ const cipher_entry_st *_gnutls_cipher_to_entry(gnutls_cipher_algorithm_t c); -# define cipher_to_entry(x) _gnutls_cipher_to_entry(x) +#define cipher_to_entry(x) _gnutls_cipher_to_entry(x) const cipher_entry_st *cipher_name_to_entry(const char *name); -inline static cipher_type_t _gnutls_cipher_type(const cipher_entry_st * e) +inline static cipher_type_t _gnutls_cipher_type(const cipher_entry_st *e) { if (unlikely(e == NULL)) - return CIPHER_AEAD; /* doesn't matter */ + return CIPHER_AEAD; /* doesn't matter */ return e->type; } -inline static int _gnutls_cipher_get_block_size(const cipher_entry_st * e) +inline static int _gnutls_cipher_get_block_size(const cipher_entry_st *e) { if (unlikely(e == NULL)) return 0; return e->blocksize; } -inline static int _gnutls_cipher_get_implicit_iv_size(const cipher_entry_st * e) +inline static int _gnutls_cipher_get_implicit_iv_size(const cipher_entry_st *e) { if (unlikely(e == NULL)) return 0; return e->implicit_iv; } -inline static int _gnutls_cipher_get_iv_size(const cipher_entry_st * e) +inline static int _gnutls_cipher_get_iv_size(const cipher_entry_st *e) { if (unlikely(e == NULL)) return 0; return e->cipher_iv; } -inline static int _gnutls_cipher_get_explicit_iv_size(const cipher_entry_st * e) +inline static int _gnutls_cipher_get_explicit_iv_size(const cipher_entry_st *e) { if (unlikely(e == NULL)) return 0; return e->explicit_iv; } -inline static int _gnutls_cipher_get_key_size(const cipher_entry_st * e) +inline static int _gnutls_cipher_get_key_size(const cipher_entry_st *e) { if (unlikely(e == NULL)) return 0; return e->keysize; } -inline static const char *_gnutls_cipher_get_name(const cipher_entry_st * e) +inline static const char *_gnutls_cipher_get_name(const cipher_entry_st *e) { if (unlikely(e == NULL)) return NULL; return e->name; } -inline static int _gnutls_cipher_algo_is_aead(const cipher_entry_st * e) +inline static int _gnutls_cipher_algo_is_aead(const cipher_entry_st *e) { if (unlikely(e == NULL)) return 0; return (e->type == CIPHER_AEAD) ? 1 : 0; } -inline static int _gnutls_cipher_is_ok(const cipher_entry_st * e) +inline static int _gnutls_cipher_is_ok(const cipher_entry_st *e) { if (unlikely(e == NULL) || e->id == 0) return 0; @@ -299,7 +299,7 @@ inline static int _gnutls_cipher_is_ok(const cipher_entry_st * e) return 1; } -inline static int _gnutls_cipher_get_tag_size(const cipher_entry_st * e) +inline static int _gnutls_cipher_get_tag_size(const cipher_entry_st *e) { size_t ret = 0; @@ -318,20 +318,22 @@ int _gnutls_kx_is_ok(gnutls_kx_algorithm_t algorithm); int _gnutls_kx_get_id(const char *name); -gnutls_credentials_type_t _gnutls_map_kx_get_cred(gnutls_kx_algorithm_t - algorithm, int server); +gnutls_credentials_type_t +_gnutls_map_kx_get_cred(gnutls_kx_algorithm_t algorithm, int server); /* KX to PK mapping. */ -unsigned -_gnutls_kx_supports_pk(gnutls_kx_algorithm_t kx_algorithm, - gnutls_pk_algorithm_t pk_algorithm); +unsigned _gnutls_kx_supports_pk(gnutls_kx_algorithm_t kx_algorithm, + gnutls_pk_algorithm_t pk_algorithm); -unsigned -_gnutls_kx_supports_pk_usage(gnutls_kx_algorithm_t kx_algorithm, - gnutls_pk_algorithm_t pk_algorithm, - unsigned key_usage); +unsigned _gnutls_kx_supports_pk_usage(gnutls_kx_algorithm_t kx_algorithm, + gnutls_pk_algorithm_t pk_algorithm, + unsigned key_usage); -enum encipher_type { CIPHER_ENCRYPT = 0, CIPHER_SIGN = 1, CIPHER_IGN }; +enum encipher_type { + CIPHER_ENCRYPT = 0, + CIPHER_SIGN = 1, + CIPHER_IGN +}; enum encipher_type _gnutls_kx_encipher_type(gnutls_kx_algorithm_t kx_algorithm); @@ -369,10 +371,11 @@ void _gnutls_version_mark_disabled_all(void); void _gnutls_sign_mark_insecure_all(hash_security_level_t level); void _gnutls_digest_mark_insecure_all(void); -# define GNUTLS_SIGN_FLAG_TLS13_OK 1 /* if it is ok to use under TLS1.3 */ -# define GNUTLS_SIGN_FLAG_CRT_VRFY_REVERSE (1 << 1) /* reverse order of bytes in CrtVrfy signature */ -# define GNUTLS_SIGN_FLAG_INSECURE_REVERTIBLE (1 << 2) -# define GNUTLS_SIGN_FLAG_ALLOW_INSECURE_REVERTIBLE (1 << 3) +#define GNUTLS_SIGN_FLAG_TLS13_OK 1 /* if it is ok to use under TLS1.3 */ +#define GNUTLS_SIGN_FLAG_CRT_VRFY_REVERSE \ + (1 << 1) /* reverse order of bytes in CrtVrfy signature */ +#define GNUTLS_SIGN_FLAG_INSECURE_REVERTIBLE (1 << 2) +#define GNUTLS_SIGN_FLAG_ALLOW_INSECURE_REVERTIBLE (1 << 3) struct gnutls_sign_entry_st { const char *name; const char *oid; @@ -398,7 +401,8 @@ struct gnutls_sign_entry_st { /* See RFC 5246 HashAlgorithm and SignatureAlgorithm for values to use in aid struct. */ const sign_algorithm_st aid; - hash_security_level_t slevel; /* contains values of hash_security_level_t */ + hash_security_level_t + slevel; /* contains values of hash_security_level_t */ /* 0 if it matches the predefined hash output size, otherwise * it is truncated or expanded (with XOF) */ @@ -407,15 +411,15 @@ struct gnutls_sign_entry_st { typedef struct gnutls_sign_entry_st gnutls_sign_entry_st; const gnutls_sign_entry_st *_gnutls_sign_to_entry(gnutls_sign_algorithm_t sign); -const gnutls_sign_entry_st *_gnutls_pk_to_sign_entry(gnutls_pk_algorithm_t pk, - gnutls_digest_algorithm_t - hash); +const gnutls_sign_entry_st * +_gnutls_pk_to_sign_entry(gnutls_pk_algorithm_t pk, + gnutls_digest_algorithm_t hash); const gnutls_sign_entry_st *_gnutls_oid_to_sign_entry(const char *oid); /* returns true if that signature can be generated * from the given private key algorithm. */ inline static unsigned -sign_supports_priv_pk_algorithm(const gnutls_sign_entry_st * se, +sign_supports_priv_pk_algorithm(const gnutls_sign_entry_st *se, gnutls_pk_algorithm_t pk) { if (pk == se->pk || (se->priv_pk && se->priv_pk == pk)) @@ -427,34 +431,33 @@ sign_supports_priv_pk_algorithm(const gnutls_sign_entry_st * se, /* returns true if that signature can be verified with * the given public key algorithm. */ inline static unsigned -sign_supports_cert_pk_algorithm(const gnutls_sign_entry_st * se, +sign_supports_cert_pk_algorithm(const gnutls_sign_entry_st *se, gnutls_pk_algorithm_t pk) { - if ((!se->cert_pk && pk == se->pk) - || (se->cert_pk && se->cert_pk == pk)) + if ((!se->cert_pk && pk == se->pk) || + (se->cert_pk && se->cert_pk == pk)) return 1; return 0; } -bool _gnutls_sign_is_secure2(const gnutls_sign_entry_st * se, +bool _gnutls_sign_is_secure2(const gnutls_sign_entry_st *se, unsigned int flags); gnutls_pk_algorithm_t _gnutls_x509_sign_to_pk(gnutls_sign_algorithm_t sign); const char *_gnutls_x509_sign_to_oid(gnutls_pk_algorithm_t, gnutls_digest_algorithm_t mac); -const gnutls_sign_entry_st *_gnutls_tls_aid_to_sign_entry(uint8_t id0, - uint8_t id1, - const version_entry_st - * ver); +const gnutls_sign_entry_st * +_gnutls_tls_aid_to_sign_entry(uint8_t id0, uint8_t id1, + const version_entry_st *ver); -gnutls_sign_algorithm_t -_gnutls_tls_aid_to_sign(uint8_t id0, uint8_t id1, const version_entry_st * ver); +gnutls_sign_algorithm_t _gnutls_tls_aid_to_sign(uint8_t id0, uint8_t id1, + const version_entry_st *ver); const sign_algorithm_st *_gnutls_sign_to_tls_aid(gnutls_sign_algorithm_t sign); -const gnutls_sign_entry_st - * _gnutls13_sign_get_compatible_with_privkey(gnutls_privkey_t privkey); +const gnutls_sign_entry_st * +_gnutls13_sign_get_compatible_with_privkey(gnutls_privkey_t privkey); unsigned int _gnutls_pk_bits_to_subgroup_bits(unsigned int pk_bits); gnutls_digest_algorithm_t _gnutls_pk_bits_to_sha_hash(unsigned int pk_bits); @@ -469,16 +472,16 @@ typedef struct gnutls_ecc_curve_entry_st { const char *oid; gnutls_ecc_curve_t id; gnutls_pk_algorithm_t pk; - unsigned size; /* the size in bytes */ - unsigned sig_size; /* the size of curve signatures in bytes (EdDSA) */ + unsigned size; /* the size in bytes */ + unsigned sig_size; /* the size of curve signatures in bytes (EdDSA) */ unsigned gost_curve; bool supported; bool supported_revertible; gnutls_group_t group; } gnutls_ecc_curve_entry_st; -const gnutls_ecc_curve_entry_st - * _gnutls_ecc_curve_get_params(gnutls_ecc_curve_t curve); +const gnutls_ecc_curve_entry_st * +_gnutls_ecc_curve_get_params(gnutls_ecc_curve_t curve); unsigned _gnutls_ecc_curve_is_supported(gnutls_ecc_curve_t); @@ -489,12 +492,12 @@ gnutls_group_t _gnutls_group_get_id(const char *name); gnutls_ecc_curve_t _gnutls_ecc_bits_to_curve(gnutls_pk_algorithm_t pk, int bits); -# define MAX_ECC_CURVE_SIZE 66 +#define MAX_ECC_CURVE_SIZE 66 gnutls_pk_algorithm_t _gnutls_oid_to_pk_and_curve(const char *oid, - gnutls_ecc_curve_t * curve); + gnutls_ecc_curve_t *curve); -inline static int _curve_is_eddsa(const gnutls_ecc_curve_entry_st * e) +inline static int _curve_is_eddsa(const gnutls_ecc_curve_entry_st *e) { if (unlikely(e == NULL)) return 0; @@ -503,7 +506,7 @@ inline static int _curve_is_eddsa(const gnutls_ecc_curve_entry_st * e) return 0; } -inline static int _curve_is_modern_ecdh(const gnutls_ecc_curve_entry_st * e) +inline static int _curve_is_modern_ecdh(const gnutls_ecc_curve_entry_st *e) { if (unlikely(e == NULL)) return 0; @@ -559,19 +562,19 @@ static inline unsigned _gnutls_kx_is_vko_gost(gnutls_kx_algorithm_t kx) return 0; } -static inline bool _sign_is_gost(const gnutls_sign_entry_st * se) +static inline bool _sign_is_gost(const gnutls_sign_entry_st *se) { gnutls_pk_algorithm_t pk = se->pk; - return (pk == GNUTLS_PK_GOST_01) || - (pk == GNUTLS_PK_GOST_12_256) || (pk == GNUTLS_PK_GOST_12_512); + return (pk == GNUTLS_PK_GOST_01) || (pk == GNUTLS_PK_GOST_12_256) || + (pk == GNUTLS_PK_GOST_12_512); } static inline int _sig_is_ecdsa(gnutls_sign_algorithm_t sig) { if (sig == GNUTLS_SIGN_ECDSA_SHA1 || sig == GNUTLS_SIGN_ECDSA_SHA224 || - sig == GNUTLS_SIGN_ECDSA_SHA256 || sig == GNUTLS_SIGN_ECDSA_SHA384 - || sig == GNUTLS_SIGN_ECDSA_SHA512) + sig == GNUTLS_SIGN_ECDSA_SHA256 || + sig == GNUTLS_SIGN_ECDSA_SHA384 || sig == GNUTLS_SIGN_ECDSA_SHA512) return 1; return 0; @@ -582,4 +585,4 @@ bool _gnutls_pk_are_compat(gnutls_pk_algorithm_t pk1, unsigned _gnutls_sign_get_hash_strength(gnutls_sign_algorithm_t sign); -#endif /* GNUTLS_LIB_ALGORITHMS_H */ +#endif /* GNUTLS_LIB_ALGORITHMS_H */ diff --git a/lib/algorithms/cert_types.c b/lib/algorithms/cert_types.c index 41c3b903a1..e78ec2e4f6 100644 --- a/lib/algorithms/cert_types.c +++ b/lib/algorithms/cert_types.c @@ -69,9 +69,7 @@ gnutls_certificate_type_t gnutls_certificate_type_get_id(const char *name) } static const gnutls_certificate_type_t supported_certificate_types[] = { - GNUTLS_CRT_X509, - GNUTLS_CRT_RAWPK, - 0 + GNUTLS_CRT_X509, GNUTLS_CRT_RAWPK, 0 }; /** diff --git a/lib/algorithms/ciphers.c b/lib/algorithms/ciphers.c index 3a6b86efcc..3efe121cb8 100644 --- a/lib/algorithms/ciphers.c +++ b/lib/algorithms/ciphers.c @@ -38,332 +38,348 @@ * that specify them (they will be a no-op). */ static const cipher_entry_st algorithms[] = { - {.name = "AES-256-CBC", - .id = GNUTLS_CIPHER_AES_256_CBC, - .blocksize = 16, - .keysize = 32, - .type = CIPHER_BLOCK, - .explicit_iv = 16, - .cipher_iv = 16}, - {.name = "AES-192-CBC", - .id = GNUTLS_CIPHER_AES_192_CBC, - .blocksize = 16, - .keysize = 24, - .type = CIPHER_BLOCK, - .explicit_iv = 16, - .cipher_iv = 16}, - {.name = "AES-128-CBC", - .id = GNUTLS_CIPHER_AES_128_CBC, - .blocksize = 16, - .keysize = 16, - .type = CIPHER_BLOCK, - .explicit_iv = 16, - .cipher_iv = 16}, - {.name = "AES-128-GCM", - .id = GNUTLS_CIPHER_AES_128_GCM, - .blocksize = 16, - .keysize = 16, - .type = CIPHER_AEAD, - .implicit_iv = 4, - .explicit_iv = 8, - .cipher_iv = 12, - .tagsize = 16}, - {.name = "AES-192-GCM", - .id = GNUTLS_CIPHER_AES_192_GCM, - .blocksize = 16, - .keysize = 24, - .type = CIPHER_AEAD, - .implicit_iv = 4, - .explicit_iv = 8, - .cipher_iv = 12, - .tagsize = 16}, - {.name = "AES-256-GCM", - .id = GNUTLS_CIPHER_AES_256_GCM, - .blocksize = 16, - .keysize = 32, - .type = CIPHER_AEAD, - .implicit_iv = 4, - .explicit_iv = 8, - .cipher_iv = 12, - .tagsize = 16}, - {.name = "AES-128-CCM", - .id = GNUTLS_CIPHER_AES_128_CCM, - .blocksize = 16, - .keysize = 16, - .type = CIPHER_AEAD, - .implicit_iv = 4, - .explicit_iv = 8, - .cipher_iv = 12, - .flags = GNUTLS_CIPHER_FLAG_ONLY_AEAD, - .tagsize = 16}, - {.name = "AES-256-CCM", - .id = GNUTLS_CIPHER_AES_256_CCM, - .blocksize = 16, - .keysize = 32, - .type = CIPHER_AEAD, - .implicit_iv = 4, - .explicit_iv = 8, - .cipher_iv = 12, - .flags = GNUTLS_CIPHER_FLAG_ONLY_AEAD, - .tagsize = 16}, - {.name = "AES-128-CCM-8", - .id = GNUTLS_CIPHER_AES_128_CCM_8, - .blocksize = 16, - .keysize = 16, - .type = CIPHER_AEAD, - .implicit_iv = 4, - .explicit_iv = 8, - .cipher_iv = 12, - .flags = GNUTLS_CIPHER_FLAG_ONLY_AEAD, - .tagsize = 8}, - {.name = "AES-256-CCM-8", - .id = GNUTLS_CIPHER_AES_256_CCM_8, - .blocksize = 16, - .keysize = 32, - .type = CIPHER_AEAD, - .implicit_iv = 4, - .explicit_iv = 8, - .cipher_iv = 12, - .flags = GNUTLS_CIPHER_FLAG_ONLY_AEAD, - .tagsize = 8}, - {.name = "ARCFOUR-128", - .id = GNUTLS_CIPHER_ARCFOUR_128, - .blocksize = 1, - .keysize = 16, - .type = CIPHER_STREAM, - 0, 0, 0, 0}, - {.name = "ESTREAM-SALSA20-256", - .id = GNUTLS_CIPHER_ESTREAM_SALSA20_256, - .blocksize = 64, - .keysize = 32, - .type = CIPHER_STREAM, 0, 0, 8, 0}, - {.name = "SALSA20-256", - .id = GNUTLS_CIPHER_SALSA20_256, - .blocksize = 64, - .keysize = 32, - .type = CIPHER_STREAM, - .explicit_iv = 0, - .cipher_iv = 8}, - {.name = "CHACHA20-32", - .id = GNUTLS_CIPHER_CHACHA20_32, - .blocksize = 64, - .keysize = 32, - .type = CIPHER_STREAM, - .explicit_iv = 0, - /* IV includes counter */ - .cipher_iv = 16}, - {.name = "CHACHA20-64", - .id = GNUTLS_CIPHER_CHACHA20_64, - .blocksize = 64, - .keysize = 32, - .type = CIPHER_STREAM, - .explicit_iv = 0, - /* IV includes counter */ - .cipher_iv = 16}, - {.name = "CAMELLIA-256-CBC", - .id = GNUTLS_CIPHER_CAMELLIA_256_CBC, - .blocksize = 16, - .keysize = 32, - .type = CIPHER_BLOCK, - .explicit_iv = 16, - .cipher_iv = 16}, - {.name = "CAMELLIA-192-CBC", - .id = GNUTLS_CIPHER_CAMELLIA_192_CBC, - .blocksize = 16, - .keysize = 24, - .type = CIPHER_BLOCK, - .explicit_iv = 16, - .cipher_iv = 16}, - {.name = "CAMELLIA-128-CBC", - .id = GNUTLS_CIPHER_CAMELLIA_128_CBC, - .blocksize = 16, - .keysize = 16, - .type = CIPHER_BLOCK, - .explicit_iv = 16, - .cipher_iv = 16}, - {.name = "CHACHA20-POLY1305", - .id = GNUTLS_CIPHER_CHACHA20_POLY1305, - .blocksize = 64, - .keysize = 32, - .type = CIPHER_AEAD, - .implicit_iv = 12, - .explicit_iv = 0, - /* in chacha20 we don't need a rekey after 2^24 messages */ - .flags = GNUTLS_CIPHER_FLAG_XOR_NONCE | GNUTLS_CIPHER_FLAG_NO_REKEY, - .cipher_iv = 12, - .tagsize = 16}, - {.name = "CAMELLIA-128-GCM", - .id = GNUTLS_CIPHER_CAMELLIA_128_GCM, - .blocksize = 16, - .keysize = 16, - .type = CIPHER_AEAD, 4, 8, 12, 16}, - {.name = "CAMELLIA-256-GCM", - .id = GNUTLS_CIPHER_CAMELLIA_256_GCM, - .blocksize = 16, - .keysize = 32, - .type = CIPHER_AEAD, - .implicit_iv = 4, - .explicit_iv = 8, - .cipher_iv = 12, - .tagsize = 16}, - {.name = "GOST28147-TC26Z-CFB", - .id = GNUTLS_CIPHER_GOST28147_TC26Z_CFB, - .blocksize = 8, - .keysize = 32, - .type = CIPHER_STREAM, - .implicit_iv = 8, - .cipher_iv = 8}, - {.name = "GOST28147-CPA-CFB", - .id = GNUTLS_CIPHER_GOST28147_CPA_CFB, - .blocksize = 8, - .keysize = 32, - .type = CIPHER_STREAM, - .implicit_iv = 8, - .cipher_iv = 8}, - {.name = "GOST28147-CPB-CFB", - .id = GNUTLS_CIPHER_GOST28147_CPB_CFB, - .blocksize = 8, - .keysize = 32, - .type = CIPHER_STREAM, - .implicit_iv = 8, - .cipher_iv = 8}, - {.name = "GOST28147-CPC-CFB", - .id = GNUTLS_CIPHER_GOST28147_CPC_CFB, - .blocksize = 8, - .keysize = 32, - .type = CIPHER_STREAM, - .implicit_iv = 8, - .cipher_iv = 8}, - {.name = "GOST28147-CPD-CFB", - .id = GNUTLS_CIPHER_GOST28147_CPD_CFB, - .blocksize = 8, - .keysize = 32, - .type = CIPHER_STREAM, - .implicit_iv = 8, - .cipher_iv = 8}, + { .name = "AES-256-CBC", + .id = GNUTLS_CIPHER_AES_256_CBC, + .blocksize = 16, + .keysize = 32, + .type = CIPHER_BLOCK, + .explicit_iv = 16, + .cipher_iv = 16 }, + { .name = "AES-192-CBC", + .id = GNUTLS_CIPHER_AES_192_CBC, + .blocksize = 16, + .keysize = 24, + .type = CIPHER_BLOCK, + .explicit_iv = 16, + .cipher_iv = 16 }, + { .name = "AES-128-CBC", + .id = GNUTLS_CIPHER_AES_128_CBC, + .blocksize = 16, + .keysize = 16, + .type = CIPHER_BLOCK, + .explicit_iv = 16, + .cipher_iv = 16 }, + { .name = "AES-128-GCM", + .id = GNUTLS_CIPHER_AES_128_GCM, + .blocksize = 16, + .keysize = 16, + .type = CIPHER_AEAD, + .implicit_iv = 4, + .explicit_iv = 8, + .cipher_iv = 12, + .tagsize = 16 }, + { .name = "AES-192-GCM", + .id = GNUTLS_CIPHER_AES_192_GCM, + .blocksize = 16, + .keysize = 24, + .type = CIPHER_AEAD, + .implicit_iv = 4, + .explicit_iv = 8, + .cipher_iv = 12, + .tagsize = 16 }, + { .name = "AES-256-GCM", + .id = GNUTLS_CIPHER_AES_256_GCM, + .blocksize = 16, + .keysize = 32, + .type = CIPHER_AEAD, + .implicit_iv = 4, + .explicit_iv = 8, + .cipher_iv = 12, + .tagsize = 16 }, + { .name = "AES-128-CCM", + .id = GNUTLS_CIPHER_AES_128_CCM, + .blocksize = 16, + .keysize = 16, + .type = CIPHER_AEAD, + .implicit_iv = 4, + .explicit_iv = 8, + .cipher_iv = 12, + .flags = GNUTLS_CIPHER_FLAG_ONLY_AEAD, + .tagsize = 16 }, + { .name = "AES-256-CCM", + .id = GNUTLS_CIPHER_AES_256_CCM, + .blocksize = 16, + .keysize = 32, + .type = CIPHER_AEAD, + .implicit_iv = 4, + .explicit_iv = 8, + .cipher_iv = 12, + .flags = GNUTLS_CIPHER_FLAG_ONLY_AEAD, + .tagsize = 16 }, + { .name = "AES-128-CCM-8", + .id = GNUTLS_CIPHER_AES_128_CCM_8, + .blocksize = 16, + .keysize = 16, + .type = CIPHER_AEAD, + .implicit_iv = 4, + .explicit_iv = 8, + .cipher_iv = 12, + .flags = GNUTLS_CIPHER_FLAG_ONLY_AEAD, + .tagsize = 8 }, + { .name = "AES-256-CCM-8", + .id = GNUTLS_CIPHER_AES_256_CCM_8, + .blocksize = 16, + .keysize = 32, + .type = CIPHER_AEAD, + .implicit_iv = 4, + .explicit_iv = 8, + .cipher_iv = 12, + .flags = GNUTLS_CIPHER_FLAG_ONLY_AEAD, + .tagsize = 8 }, + { .name = "ARCFOUR-128", + .id = GNUTLS_CIPHER_ARCFOUR_128, + .blocksize = 1, + .keysize = 16, + .type = CIPHER_STREAM, + 0, + 0, + 0, + 0 }, + { .name = "ESTREAM-SALSA20-256", + .id = GNUTLS_CIPHER_ESTREAM_SALSA20_256, + .blocksize = 64, + .keysize = 32, + .type = CIPHER_STREAM, + 0, + 0, + 8, + 0 }, + { .name = "SALSA20-256", + .id = GNUTLS_CIPHER_SALSA20_256, + .blocksize = 64, + .keysize = 32, + .type = CIPHER_STREAM, + .explicit_iv = 0, + .cipher_iv = 8 }, + { .name = "CHACHA20-32", + .id = GNUTLS_CIPHER_CHACHA20_32, + .blocksize = 64, + .keysize = 32, + .type = CIPHER_STREAM, + .explicit_iv = 0, + /* IV includes counter */ + .cipher_iv = 16 }, + { .name = "CHACHA20-64", + .id = GNUTLS_CIPHER_CHACHA20_64, + .blocksize = 64, + .keysize = 32, + .type = CIPHER_STREAM, + .explicit_iv = 0, + /* IV includes counter */ + .cipher_iv = 16 }, + { .name = "CAMELLIA-256-CBC", + .id = GNUTLS_CIPHER_CAMELLIA_256_CBC, + .blocksize = 16, + .keysize = 32, + .type = CIPHER_BLOCK, + .explicit_iv = 16, + .cipher_iv = 16 }, + { .name = "CAMELLIA-192-CBC", + .id = GNUTLS_CIPHER_CAMELLIA_192_CBC, + .blocksize = 16, + .keysize = 24, + .type = CIPHER_BLOCK, + .explicit_iv = 16, + .cipher_iv = 16 }, + { .name = "CAMELLIA-128-CBC", + .id = GNUTLS_CIPHER_CAMELLIA_128_CBC, + .blocksize = 16, + .keysize = 16, + .type = CIPHER_BLOCK, + .explicit_iv = 16, + .cipher_iv = 16 }, + { .name = "CHACHA20-POLY1305", + .id = GNUTLS_CIPHER_CHACHA20_POLY1305, + .blocksize = 64, + .keysize = 32, + .type = CIPHER_AEAD, + .implicit_iv = 12, + .explicit_iv = 0, + /* in chacha20 we don't need a rekey after 2^24 messages */ + .flags = GNUTLS_CIPHER_FLAG_XOR_NONCE | GNUTLS_CIPHER_FLAG_NO_REKEY, + .cipher_iv = 12, + .tagsize = 16 }, + { .name = "CAMELLIA-128-GCM", + .id = GNUTLS_CIPHER_CAMELLIA_128_GCM, + .blocksize = 16, + .keysize = 16, + .type = CIPHER_AEAD, + 4, + 8, + 12, + 16 }, + { .name = "CAMELLIA-256-GCM", + .id = GNUTLS_CIPHER_CAMELLIA_256_GCM, + .blocksize = 16, + .keysize = 32, + .type = CIPHER_AEAD, + .implicit_iv = 4, + .explicit_iv = 8, + .cipher_iv = 12, + .tagsize = 16 }, + { .name = "GOST28147-TC26Z-CFB", + .id = GNUTLS_CIPHER_GOST28147_TC26Z_CFB, + .blocksize = 8, + .keysize = 32, + .type = CIPHER_STREAM, + .implicit_iv = 8, + .cipher_iv = 8 }, + { .name = "GOST28147-CPA-CFB", + .id = GNUTLS_CIPHER_GOST28147_CPA_CFB, + .blocksize = 8, + .keysize = 32, + .type = CIPHER_STREAM, + .implicit_iv = 8, + .cipher_iv = 8 }, + { .name = "GOST28147-CPB-CFB", + .id = GNUTLS_CIPHER_GOST28147_CPB_CFB, + .blocksize = 8, + .keysize = 32, + .type = CIPHER_STREAM, + .implicit_iv = 8, + .cipher_iv = 8 }, + { .name = "GOST28147-CPC-CFB", + .id = GNUTLS_CIPHER_GOST28147_CPC_CFB, + .blocksize = 8, + .keysize = 32, + .type = CIPHER_STREAM, + .implicit_iv = 8, + .cipher_iv = 8 }, + { .name = "GOST28147-CPD-CFB", + .id = GNUTLS_CIPHER_GOST28147_CPD_CFB, + .blocksize = 8, + .keysize = 32, + .type = CIPHER_STREAM, + .implicit_iv = 8, + .cipher_iv = 8 }, - {.name = "AES-128-CFB8", - .id = GNUTLS_CIPHER_AES_128_CFB8, - .blocksize = 16, - .keysize = 16, - .type = CIPHER_BLOCK, - .explicit_iv = 16, - .cipher_iv = 16}, - {.name = "AES-192-CFB8", - .id = GNUTLS_CIPHER_AES_192_CFB8, - .blocksize = 16, - .keysize = 24, - .type = CIPHER_BLOCK, - .explicit_iv = 16, - .cipher_iv = 16}, - {.name = "AES-256-CFB8", - .id = GNUTLS_CIPHER_AES_256_CFB8, - .blocksize = 16, - .keysize = 32, - .type = CIPHER_BLOCK, - .explicit_iv = 16, - .cipher_iv = 16}, - {.name = "AES-128-XTS", - .id = GNUTLS_CIPHER_AES_128_XTS, - .blocksize = 16, - .keysize = 32, - .type = CIPHER_BLOCK, - .explicit_iv = 16, - .cipher_iv = 16}, - {.name = "AES-256-XTS", - .id = GNUTLS_CIPHER_AES_256_XTS, - .blocksize = 16, - .keysize = 64, - .type = CIPHER_BLOCK, - .explicit_iv = 16, - .cipher_iv = 16}, - {.name = "AES-128-SIV", - .id = GNUTLS_CIPHER_AES_128_SIV, - .blocksize = 16, - .keysize = 32, - .type = CIPHER_AEAD, - .explicit_iv = 16, - .cipher_iv = 16, - .flags = GNUTLS_CIPHER_FLAG_ONLY_AEAD | - GNUTLS_CIPHER_FLAG_TAG_PREFIXED, - .tagsize = 16}, - {.name = "AES-256-SIV", - .id = GNUTLS_CIPHER_AES_256_SIV, - .blocksize = 16, - .keysize = 64, - .type = CIPHER_AEAD, - .explicit_iv = 16, - .cipher_iv = 16, - .flags = GNUTLS_CIPHER_FLAG_ONLY_AEAD | - GNUTLS_CIPHER_FLAG_TAG_PREFIXED, - .tagsize = 16}, - {.name = "GOST28147-TC26Z-CNT", - .id = GNUTLS_CIPHER_GOST28147_TC26Z_CNT, - .blocksize = 8, - .keysize = 32, - .type = CIPHER_STREAM, - .implicit_iv = 8, - .cipher_iv = 8}, - {.name = "MAGMA-CTR-ACPKM", - .id = GNUTLS_CIPHER_MAGMA_CTR_ACPKM, - .blocksize = 8, - .keysize = 32, - .type = CIPHER_STREAM, - .implicit_iv = 4, - .cipher_iv = 8}, - {.name = "KUZNYECHIK-CTR-ACPKM", - .id = GNUTLS_CIPHER_KUZNYECHIK_CTR_ACPKM, - .blocksize = 16, - .keysize = 32, - .type = CIPHER_STREAM, - .implicit_iv = 8, - .cipher_iv = 16}, - {.name = "3DES-CBC", - .id = GNUTLS_CIPHER_3DES_CBC, - .blocksize = 8, - .keysize = 24, - .type = CIPHER_BLOCK, - .explicit_iv = 8, - .cipher_iv = 8}, - {.name = "DES-CBC", - .id = GNUTLS_CIPHER_DES_CBC, - .blocksize = 8, - .keysize = 8, - .type = CIPHER_BLOCK, - .explicit_iv = 8, - .cipher_iv = 8}, - {.name = "ARCFOUR-40", - .id = GNUTLS_CIPHER_ARCFOUR_40, - .blocksize = 1, - .keysize = 5, - .type = CIPHER_STREAM}, - {.name = "RC2-40", - .id = GNUTLS_CIPHER_RC2_40_CBC, - .blocksize = 8, - .keysize = 5, - .type = CIPHER_BLOCK, - .explicit_iv = 8, - .cipher_iv = 8}, - {.name = "NULL", - .id = GNUTLS_CIPHER_NULL, - .blocksize = 1, - .keysize = 0, - .type = CIPHER_STREAM}, - {0, 0, 0, 0, 0, 0, 0} + { .name = "AES-128-CFB8", + .id = GNUTLS_CIPHER_AES_128_CFB8, + .blocksize = 16, + .keysize = 16, + .type = CIPHER_BLOCK, + .explicit_iv = 16, + .cipher_iv = 16 }, + { .name = "AES-192-CFB8", + .id = GNUTLS_CIPHER_AES_192_CFB8, + .blocksize = 16, + .keysize = 24, + .type = CIPHER_BLOCK, + .explicit_iv = 16, + .cipher_iv = 16 }, + { .name = "AES-256-CFB8", + .id = GNUTLS_CIPHER_AES_256_CFB8, + .blocksize = 16, + .keysize = 32, + .type = CIPHER_BLOCK, + .explicit_iv = 16, + .cipher_iv = 16 }, + { .name = "AES-128-XTS", + .id = GNUTLS_CIPHER_AES_128_XTS, + .blocksize = 16, + .keysize = 32, + .type = CIPHER_BLOCK, + .explicit_iv = 16, + .cipher_iv = 16 }, + { .name = "AES-256-XTS", + .id = GNUTLS_CIPHER_AES_256_XTS, + .blocksize = 16, + .keysize = 64, + .type = CIPHER_BLOCK, + .explicit_iv = 16, + .cipher_iv = 16 }, + { .name = "AES-128-SIV", + .id = GNUTLS_CIPHER_AES_128_SIV, + .blocksize = 16, + .keysize = 32, + .type = CIPHER_AEAD, + .explicit_iv = 16, + .cipher_iv = 16, + .flags = GNUTLS_CIPHER_FLAG_ONLY_AEAD | + GNUTLS_CIPHER_FLAG_TAG_PREFIXED, + .tagsize = 16 }, + { .name = "AES-256-SIV", + .id = GNUTLS_CIPHER_AES_256_SIV, + .blocksize = 16, + .keysize = 64, + .type = CIPHER_AEAD, + .explicit_iv = 16, + .cipher_iv = 16, + .flags = GNUTLS_CIPHER_FLAG_ONLY_AEAD | + GNUTLS_CIPHER_FLAG_TAG_PREFIXED, + .tagsize = 16 }, + { .name = "GOST28147-TC26Z-CNT", + .id = GNUTLS_CIPHER_GOST28147_TC26Z_CNT, + .blocksize = 8, + .keysize = 32, + .type = CIPHER_STREAM, + .implicit_iv = 8, + .cipher_iv = 8 }, + { .name = "MAGMA-CTR-ACPKM", + .id = GNUTLS_CIPHER_MAGMA_CTR_ACPKM, + .blocksize = 8, + .keysize = 32, + .type = CIPHER_STREAM, + .implicit_iv = 4, + .cipher_iv = 8 }, + { .name = "KUZNYECHIK-CTR-ACPKM", + .id = GNUTLS_CIPHER_KUZNYECHIK_CTR_ACPKM, + .blocksize = 16, + .keysize = 32, + .type = CIPHER_STREAM, + .implicit_iv = 8, + .cipher_iv = 16 }, + { .name = "3DES-CBC", + .id = GNUTLS_CIPHER_3DES_CBC, + .blocksize = 8, + .keysize = 24, + .type = CIPHER_BLOCK, + .explicit_iv = 8, + .cipher_iv = 8 }, + { .name = "DES-CBC", + .id = GNUTLS_CIPHER_DES_CBC, + .blocksize = 8, + .keysize = 8, + .type = CIPHER_BLOCK, + .explicit_iv = 8, + .cipher_iv = 8 }, + { .name = "ARCFOUR-40", + .id = GNUTLS_CIPHER_ARCFOUR_40, + .blocksize = 1, + .keysize = 5, + .type = CIPHER_STREAM }, + { .name = "RC2-40", + .id = GNUTLS_CIPHER_RC2_40_CBC, + .blocksize = 8, + .keysize = 5, + .type = CIPHER_BLOCK, + .explicit_iv = 8, + .cipher_iv = 8 }, + { .name = "NULL", + .id = GNUTLS_CIPHER_NULL, + .blocksize = 1, + .keysize = 0, + .type = CIPHER_STREAM }, + { 0, 0, 0, 0, 0, 0, 0 } }; -#define GNUTLS_CIPHER_LOOP(b) \ - const cipher_entry_st *p; \ - for(p = algorithms; p->name != NULL; p++) { b ; } +#define GNUTLS_CIPHER_LOOP(b) \ + const cipher_entry_st *p; \ + for (p = algorithms; p->name != NULL; p++) { \ + b; \ + } -#define GNUTLS_ALG_LOOP(a) \ - GNUTLS_CIPHER_LOOP( if(p->id == algorithm) { a; break; } ) +#define GNUTLS_ALG_LOOP(a) \ + GNUTLS_CIPHER_LOOP(if (p->id == algorithm) { \ + a; \ + break; \ + }) /* CIPHER functions */ const cipher_entry_st *_gnutls_cipher_to_entry(gnutls_cipher_algorithm_t c) { - GNUTLS_CIPHER_LOOP(if (c == p->id) return p) ; + GNUTLS_CIPHER_LOOP(if (c == p->id) return p); return NULL; } @@ -373,9 +389,7 @@ const cipher_entry_st *_gnutls_cipher_to_entry(gnutls_cipher_algorithm_t c) */ const cipher_entry_st *cipher_name_to_entry(const char *name) { - GNUTLS_CIPHER_LOOP(if (c_strcasecmp(p->name, name) == 0) { - return p;} - ) ; + GNUTLS_CIPHER_LOOP(if (c_strcasecmp(p->name, name) == 0) { return p; }); return NULL; } @@ -393,7 +407,6 @@ unsigned gnutls_cipher_get_block_size(gnutls_cipher_algorithm_t algorithm) size_t ret = 0; GNUTLS_ALG_LOOP(ret = p->blocksize); return ret; - } /** @@ -441,11 +454,10 @@ unsigned gnutls_cipher_get_iv_size(gnutls_cipher_algorithm_t algorithm) * the given cipher is invalid. **/ size_t gnutls_cipher_get_key_size(gnutls_cipher_algorithm_t algorithm) -{ /* In bytes */ +{ /* In bytes */ size_t ret = 0; GNUTLS_ALG_LOOP(ret = p->keysize); return ret; - } /** @@ -481,10 +493,10 @@ gnutls_cipher_algorithm_t gnutls_cipher_get_id(const char *name) gnutls_cipher_algorithm_t ret = GNUTLS_CIPHER_UNKNOWN; GNUTLS_CIPHER_LOOP(if (c_strcasecmp(p->name, name) == 0) { - if (p->id == GNUTLS_CIPHER_NULL - || _gnutls_cipher_exists(p->id)) - ret = p->id; break;} - ) ; + if (p->id == GNUTLS_CIPHER_NULL || _gnutls_cipher_exists(p->id)) + ret = p->id; + break; + }); return ret; } @@ -510,10 +522,9 @@ const gnutls_cipher_algorithm_t *gnutls_cipher_list(void) if (supported_ciphers[0] == 0) { int i = 0; - GNUTLS_CIPHER_LOOP(if - (p->id == GNUTLS_CIPHER_NULL - || _gnutls_cipher_exists(p->id)) - supported_ciphers[i++] = p->id;) ; + GNUTLS_CIPHER_LOOP(if (p->id == GNUTLS_CIPHER_NULL || + _gnutls_cipher_exists(p->id)) + supported_ciphers[i++] = p->id;); supported_ciphers[i++] = 0; } diff --git a/lib/algorithms/ciphersuites.c b/lib/algorithms/ciphersuites.c index 7df945bf83..8e702ce6d9 100644 --- a/lib/algorithms/ciphersuites.c +++ b/lib/algorithms/ciphersuites.c @@ -33,1097 +33,1535 @@ #include #ifndef ENABLE_SSL3 -# define GNUTLS_SSL3 GNUTLS_TLS1 +#define GNUTLS_SSL3 GNUTLS_TLS1 #endif /* Cipher SUITES */ -#define ENTRY( name, canonical_name, block_algorithm, kx_algorithm, mac_algorithm, min_version, dtls_version ) \ - { #name, name, canonical_name, block_algorithm, kx_algorithm, mac_algorithm, min_version, GNUTLS_TLS1_2, dtls_version, GNUTLS_DTLS1_2, GNUTLS_MAC_SHA256} -#define ENTRY_PRF( name, canonical_name, block_algorithm, kx_algorithm, mac_algorithm, min_version, dtls_version, prf ) \ - { #name, name, canonical_name, block_algorithm, kx_algorithm, mac_algorithm, min_version, GNUTLS_TLS1_2, dtls_version, GNUTLS_DTLS1_2, prf} -#define ENTRY_TLS13( name, canonical_name, block_algorithm, min_version, prf ) \ - { #name, name, canonical_name, block_algorithm, 0, GNUTLS_MAC_AEAD, min_version, GNUTLS_TLS1_3, GNUTLS_VERSION_UNKNOWN, GNUTLS_VERSION_UNKNOWN, prf} +#define ENTRY(name, canonical_name, block_algorithm, kx_algorithm, \ + mac_algorithm, min_version, dtls_version) \ + { \ +#name, name, canonical_name, block_algorithm, kx_algorithm, \ + mac_algorithm, min_version, GNUTLS_TLS1_2, \ + dtls_version, GNUTLS_DTLS1_2, GNUTLS_MAC_SHA256 \ + } +#define ENTRY_PRF(name, canonical_name, block_algorithm, kx_algorithm, \ + mac_algorithm, min_version, dtls_version, prf) \ + { \ +#name, name, canonical_name, block_algorithm, kx_algorithm, \ + mac_algorithm, min_version, GNUTLS_TLS1_2, \ + dtls_version, GNUTLS_DTLS1_2, prf \ + } +#define ENTRY_TLS13(name, canonical_name, block_algorithm, min_version, prf) \ + { \ +#name, name, canonical_name, block_algorithm, 0, \ + GNUTLS_MAC_AEAD, min_version, GNUTLS_TLS1_3, \ + GNUTLS_VERSION_UNKNOWN, GNUTLS_VERSION_UNKNOWN, prf \ + } /* TLS 1.3 ciphersuites */ -#define GNUTLS_AES_128_GCM_SHA256 { 0x13, 0x01 } -#define GNUTLS_AES_256_GCM_SHA384 { 0x13, 0x02 } -#define GNUTLS_CHACHA20_POLY1305_SHA256 { 0x13, 0x03 } -#define GNUTLS_AES_128_CCM_SHA256 { 0x13, 0x04 } -#define GNUTLS_AES_128_CCM_8_SHA256 { 0x13,0x05 } +#define GNUTLS_AES_128_GCM_SHA256 \ + { \ + 0x13, 0x01 \ + } +#define GNUTLS_AES_256_GCM_SHA384 \ + { \ + 0x13, 0x02 \ + } +#define GNUTLS_CHACHA20_POLY1305_SHA256 \ + { \ + 0x13, 0x03 \ + } +#define GNUTLS_AES_128_CCM_SHA256 \ + { \ + 0x13, 0x04 \ + } +#define GNUTLS_AES_128_CCM_8_SHA256 \ + { \ + 0x13, 0x05 \ + } /* RSA with NULL cipher and MD5 MAC * for test purposes. */ -#define GNUTLS_RSA_NULL_MD5 { 0x00, 0x01 } -#define GNUTLS_RSA_NULL_SHA1 { 0x00, 0x02 } -#define GNUTLS_RSA_NULL_SHA256 { 0x00, 0x3B } +#define GNUTLS_RSA_NULL_MD5 \ + { \ + 0x00, 0x01 \ + } +#define GNUTLS_RSA_NULL_SHA1 \ + { \ + 0x00, 0x02 \ + } +#define GNUTLS_RSA_NULL_SHA256 \ + { \ + 0x00, 0x3B \ + } /* ANONymous cipher suites. */ -#define GNUTLS_DH_ANON_3DES_EDE_CBC_SHA1 { 0x00, 0x1B } -#define GNUTLS_DH_ANON_ARCFOUR_128_MD5 { 0x00, 0x18 } +#define GNUTLS_DH_ANON_3DES_EDE_CBC_SHA1 \ + { \ + 0x00, 0x1B \ + } +#define GNUTLS_DH_ANON_ARCFOUR_128_MD5 \ + { \ + 0x00, 0x18 \ + } - /* rfc3268: */ -#define GNUTLS_DH_ANON_AES_128_CBC_SHA1 { 0x00, 0x34 } -#define GNUTLS_DH_ANON_AES_256_CBC_SHA1 { 0x00, 0x3A } +/* rfc3268: */ +#define GNUTLS_DH_ANON_AES_128_CBC_SHA1 \ + { \ + 0x00, 0x34 \ + } +#define GNUTLS_DH_ANON_AES_256_CBC_SHA1 \ + { \ + 0x00, 0x3A \ + } /* rfc4132 */ -#define GNUTLS_DH_ANON_CAMELLIA_128_CBC_SHA1 { 0x00,0x46 } -#define GNUTLS_DH_ANON_CAMELLIA_256_CBC_SHA1 { 0x00,0x89 } +#define GNUTLS_DH_ANON_CAMELLIA_128_CBC_SHA1 \ + { \ + 0x00, 0x46 \ + } +#define GNUTLS_DH_ANON_CAMELLIA_256_CBC_SHA1 \ + { \ + 0x00, 0x89 \ + } /* rfc5932 */ -#define GNUTLS_RSA_CAMELLIA_128_CBC_SHA256 { 0x00,0xBA } -#define GNUTLS_DHE_DSS_CAMELLIA_128_CBC_SHA256 { 0x00,0xBD } -#define GNUTLS_DHE_RSA_CAMELLIA_128_CBC_SHA256 { 0x00,0xBE } -#define GNUTLS_DH_ANON_CAMELLIA_128_CBC_SHA256 { 0x00,0xBF } -#define GNUTLS_RSA_CAMELLIA_256_CBC_SHA256 { 0x00,0xC0 } -#define GNUTLS_DHE_DSS_CAMELLIA_256_CBC_SHA256 { 0x00,0xC3 } -#define GNUTLS_DHE_RSA_CAMELLIA_256_CBC_SHA256 { 0x00,0xC4 } -#define GNUTLS_DH_ANON_CAMELLIA_256_CBC_SHA256 { 0x00,0xC5 } +#define GNUTLS_RSA_CAMELLIA_128_CBC_SHA256 \ + { \ + 0x00, 0xBA \ + } +#define GNUTLS_DHE_DSS_CAMELLIA_128_CBC_SHA256 \ + { \ + 0x00, 0xBD \ + } +#define GNUTLS_DHE_RSA_CAMELLIA_128_CBC_SHA256 \ + { \ + 0x00, 0xBE \ + } +#define GNUTLS_DH_ANON_CAMELLIA_128_CBC_SHA256 \ + { \ + 0x00, 0xBF \ + } +#define GNUTLS_RSA_CAMELLIA_256_CBC_SHA256 \ + { \ + 0x00, 0xC0 \ + } +#define GNUTLS_DHE_DSS_CAMELLIA_256_CBC_SHA256 \ + { \ + 0x00, 0xC3 \ + } +#define GNUTLS_DHE_RSA_CAMELLIA_256_CBC_SHA256 \ + { \ + 0x00, 0xC4 \ + } +#define GNUTLS_DH_ANON_CAMELLIA_256_CBC_SHA256 \ + { \ + 0x00, 0xC5 \ + } /* rfc6367 */ -#define GNUTLS_ECDHE_ECDSA_CAMELLIA_128_CBC_SHA256 { 0xC0,0x72 } -#define GNUTLS_ECDHE_ECDSA_CAMELLIA_256_CBC_SHA384 { 0xC0,0x73 } -#define GNUTLS_ECDHE_RSA_CAMELLIA_128_CBC_SHA256 { 0xC0,0x76 } -#define GNUTLS_ECDHE_RSA_CAMELLIA_256_CBC_SHA384 { 0xC0,0x77 } -#define GNUTLS_PSK_CAMELLIA_128_CBC_SHA256 { 0xC0,0x94 } -#define GNUTLS_PSK_CAMELLIA_256_CBC_SHA384 { 0xC0,0x95 } -#define GNUTLS_DHE_PSK_CAMELLIA_128_CBC_SHA256 { 0xC0,0x96 } -#define GNUTLS_DHE_PSK_CAMELLIA_256_CBC_SHA384 { 0xC0,0x97 } -#define GNUTLS_RSA_PSK_CAMELLIA_128_CBC_SHA256 { 0xC0,0x98 } -#define GNUTLS_RSA_PSK_CAMELLIA_256_CBC_SHA384 { 0xC0,0x99 } -#define GNUTLS_ECDHE_PSK_CAMELLIA_128_CBC_SHA256 { 0xC0,0x9A } -#define GNUTLS_ECDHE_PSK_CAMELLIA_256_CBC_SHA384 { 0xC0,0x9B } - -#define GNUTLS_RSA_CAMELLIA_128_GCM_SHA256 { 0xC0, 0x7A } -#define GNUTLS_RSA_CAMELLIA_256_GCM_SHA384 { 0xC0,0x7B } -#define GNUTLS_DHE_RSA_CAMELLIA_128_GCM_SHA256 { 0xC0,0x7C } -#define GNUTLS_DHE_RSA_CAMELLIA_256_GCM_SHA384 { 0xC0,0x7D } -#define GNUTLS_DHE_DSS_CAMELLIA_128_GCM_SHA256 { 0xC0,0x80 } -#define GNUTLS_DHE_DSS_CAMELLIA_256_GCM_SHA384 { 0xC0,0x81 } -#define GNUTLS_DH_ANON_CAMELLIA_128_GCM_SHA256 { 0xC0,0x84 } -#define GNUTLS_DH_ANON_CAMELLIA_256_GCM_SHA384 { 0xC0,0x85 } -#define GNUTLS_ECDHE_ECDSA_CAMELLIA_128_GCM_SHA256 { 0xC0,0x86 } -#define GNUTLS_ECDHE_ECDSA_CAMELLIA_256_GCM_SHA384 { 0xC0,0x87 } -#define GNUTLS_ECDHE_RSA_CAMELLIA_128_GCM_SHA256 { 0xC0,0x8A } -#define GNUTLS_ECDHE_RSA_CAMELLIA_256_GCM_SHA384 { 0xC0,0x8B } -#define GNUTLS_PSK_CAMELLIA_128_GCM_SHA256 { 0xC0,0x8E } -#define GNUTLS_PSK_CAMELLIA_256_GCM_SHA384 { 0xC0,0x8F } -#define GNUTLS_DHE_PSK_CAMELLIA_128_GCM_SHA256 { 0xC0,0x90 } -#define GNUTLS_DHE_PSK_CAMELLIA_256_GCM_SHA384 { 0xC0,0x91 } -#define GNUTLS_RSA_PSK_CAMELLIA_128_GCM_SHA256 { 0xC0,0x92 } -#define GNUTLS_RSA_PSK_CAMELLIA_256_GCM_SHA384 { 0xC0,0x93 } - -#define GNUTLS_DH_ANON_AES_128_CBC_SHA256 { 0x00, 0x6C } -#define GNUTLS_DH_ANON_AES_256_CBC_SHA256 { 0x00, 0x6D } +#define GNUTLS_ECDHE_ECDSA_CAMELLIA_128_CBC_SHA256 \ + { \ + 0xC0, 0x72 \ + } +#define GNUTLS_ECDHE_ECDSA_CAMELLIA_256_CBC_SHA384 \ + { \ + 0xC0, 0x73 \ + } +#define GNUTLS_ECDHE_RSA_CAMELLIA_128_CBC_SHA256 \ + { \ + 0xC0, 0x76 \ + } +#define GNUTLS_ECDHE_RSA_CAMELLIA_256_CBC_SHA384 \ + { \ + 0xC0, 0x77 \ + } +#define GNUTLS_PSK_CAMELLIA_128_CBC_SHA256 \ + { \ + 0xC0, 0x94 \ + } +#define GNUTLS_PSK_CAMELLIA_256_CBC_SHA384 \ + { \ + 0xC0, 0x95 \ + } +#define GNUTLS_DHE_PSK_CAMELLIA_128_CBC_SHA256 \ + { \ + 0xC0, 0x96 \ + } +#define GNUTLS_DHE_PSK_CAMELLIA_256_CBC_SHA384 \ + { \ + 0xC0, 0x97 \ + } +#define GNUTLS_RSA_PSK_CAMELLIA_128_CBC_SHA256 \ + { \ + 0xC0, 0x98 \ + } +#define GNUTLS_RSA_PSK_CAMELLIA_256_CBC_SHA384 \ + { \ + 0xC0, 0x99 \ + } +#define GNUTLS_ECDHE_PSK_CAMELLIA_128_CBC_SHA256 \ + { \ + 0xC0, 0x9A \ + } +#define GNUTLS_ECDHE_PSK_CAMELLIA_256_CBC_SHA384 \ + { \ + 0xC0, 0x9B \ + } + +#define GNUTLS_RSA_CAMELLIA_128_GCM_SHA256 \ + { \ + 0xC0, 0x7A \ + } +#define GNUTLS_RSA_CAMELLIA_256_GCM_SHA384 \ + { \ + 0xC0, 0x7B \ + } +#define GNUTLS_DHE_RSA_CAMELLIA_128_GCM_SHA256 \ + { \ + 0xC0, 0x7C \ + } +#define GNUTLS_DHE_RSA_CAMELLIA_256_GCM_SHA384 \ + { \ + 0xC0, 0x7D \ + } +#define GNUTLS_DHE_DSS_CAMELLIA_128_GCM_SHA256 \ + { \ + 0xC0, 0x80 \ + } +#define GNUTLS_DHE_DSS_CAMELLIA_256_GCM_SHA384 \ + { \ + 0xC0, 0x81 \ + } +#define GNUTLS_DH_ANON_CAMELLIA_128_GCM_SHA256 \ + { \ + 0xC0, 0x84 \ + } +#define GNUTLS_DH_ANON_CAMELLIA_256_GCM_SHA384 \ + { \ + 0xC0, 0x85 \ + } +#define GNUTLS_ECDHE_ECDSA_CAMELLIA_128_GCM_SHA256 \ + { \ + 0xC0, 0x86 \ + } +#define GNUTLS_ECDHE_ECDSA_CAMELLIA_256_GCM_SHA384 \ + { \ + 0xC0, 0x87 \ + } +#define GNUTLS_ECDHE_RSA_CAMELLIA_128_GCM_SHA256 \ + { \ + 0xC0, 0x8A \ + } +#define GNUTLS_ECDHE_RSA_CAMELLIA_256_GCM_SHA384 \ + { \ + 0xC0, 0x8B \ + } +#define GNUTLS_PSK_CAMELLIA_128_GCM_SHA256 \ + { \ + 0xC0, 0x8E \ + } +#define GNUTLS_PSK_CAMELLIA_256_GCM_SHA384 \ + { \ + 0xC0, 0x8F \ + } +#define GNUTLS_DHE_PSK_CAMELLIA_128_GCM_SHA256 \ + { \ + 0xC0, 0x90 \ + } +#define GNUTLS_DHE_PSK_CAMELLIA_256_GCM_SHA384 \ + { \ + 0xC0, 0x91 \ + } +#define GNUTLS_RSA_PSK_CAMELLIA_128_GCM_SHA256 \ + { \ + 0xC0, 0x92 \ + } +#define GNUTLS_RSA_PSK_CAMELLIA_256_GCM_SHA384 \ + { \ + 0xC0, 0x93 \ + } + +#define GNUTLS_DH_ANON_AES_128_CBC_SHA256 \ + { \ + 0x00, 0x6C \ + } +#define GNUTLS_DH_ANON_AES_256_CBC_SHA256 \ + { \ + 0x00, 0x6D \ + } /* draft-ietf-tls-chacha20-poly1305-02 */ -#define GNUTLS_ECDHE_RSA_CHACHA20_POLY1305 { 0xCC, 0xA8 } -#define GNUTLS_ECDHE_ECDSA_CHACHA20_POLY1305 { 0xCC, 0xA9 } -#define GNUTLS_DHE_RSA_CHACHA20_POLY1305 { 0xCC, 0xAA } +#define GNUTLS_ECDHE_RSA_CHACHA20_POLY1305 \ + { \ + 0xCC, 0xA8 \ + } +#define GNUTLS_ECDHE_ECDSA_CHACHA20_POLY1305 \ + { \ + 0xCC, 0xA9 \ + } +#define GNUTLS_DHE_RSA_CHACHA20_POLY1305 \ + { \ + 0xCC, 0xAA \ + } -#define GNUTLS_PSK_CHACHA20_POLY1305 { 0xCC, 0xAB } -#define GNUTLS_ECDHE_PSK_CHACHA20_POLY1305 { 0xCC, 0xAC } -#define GNUTLS_DHE_PSK_CHACHA20_POLY1305 { 0xCC, 0xAD } -#define GNUTLS_RSA_PSK_CHACHA20_POLY1305 { 0xCC, 0xAE } +#define GNUTLS_PSK_CHACHA20_POLY1305 \ + { \ + 0xCC, 0xAB \ + } +#define GNUTLS_ECDHE_PSK_CHACHA20_POLY1305 \ + { \ + 0xCC, 0xAC \ + } +#define GNUTLS_DHE_PSK_CHACHA20_POLY1305 \ + { \ + 0xCC, 0xAD \ + } +#define GNUTLS_RSA_PSK_CHACHA20_POLY1305 \ + { \ + 0xCC, 0xAE \ + } /* PSK (not in TLS 1.0) * draft-ietf-tls-psk: */ -#define GNUTLS_PSK_ARCFOUR_128_SHA1 { 0x00, 0x8A } -#define GNUTLS_PSK_3DES_EDE_CBC_SHA1 { 0x00, 0x8B } -#define GNUTLS_PSK_AES_128_CBC_SHA1 { 0x00, 0x8C } -#define GNUTLS_PSK_AES_256_CBC_SHA1 { 0x00, 0x8D } +#define GNUTLS_PSK_ARCFOUR_128_SHA1 \ + { \ + 0x00, 0x8A \ + } +#define GNUTLS_PSK_3DES_EDE_CBC_SHA1 \ + { \ + 0x00, 0x8B \ + } +#define GNUTLS_PSK_AES_128_CBC_SHA1 \ + { \ + 0x00, 0x8C \ + } +#define GNUTLS_PSK_AES_256_CBC_SHA1 \ + { \ + 0x00, 0x8D \ + } -#define GNUTLS_DHE_PSK_ARCFOUR_128_SHA1 { 0x00, 0x8E } -#define GNUTLS_DHE_PSK_3DES_EDE_CBC_SHA1 { 0x00, 0x8F } -#define GNUTLS_DHE_PSK_AES_128_CBC_SHA1 { 0x00, 0x90 } -#define GNUTLS_DHE_PSK_AES_256_CBC_SHA1 { 0x00, 0x91 } +#define GNUTLS_DHE_PSK_ARCFOUR_128_SHA1 \ + { \ + 0x00, 0x8E \ + } +#define GNUTLS_DHE_PSK_3DES_EDE_CBC_SHA1 \ + { \ + 0x00, 0x8F \ + } +#define GNUTLS_DHE_PSK_AES_128_CBC_SHA1 \ + { \ + 0x00, 0x90 \ + } +#define GNUTLS_DHE_PSK_AES_256_CBC_SHA1 \ + { \ + 0x00, 0x91 \ + } -#define GNUTLS_RSA_PSK_ARCFOUR_128_SHA1 { 0x00, 0x92 } -#define GNUTLS_RSA_PSK_3DES_EDE_CBC_SHA1 { 0x00, 0x93 } -#define GNUTLS_RSA_PSK_AES_128_CBC_SHA1 { 0x00, 0x94 } -#define GNUTLS_RSA_PSK_AES_256_CBC_SHA1 { 0x00, 0x95 } +#define GNUTLS_RSA_PSK_ARCFOUR_128_SHA1 \ + { \ + 0x00, 0x92 \ + } +#define GNUTLS_RSA_PSK_3DES_EDE_CBC_SHA1 \ + { \ + 0x00, 0x93 \ + } +#define GNUTLS_RSA_PSK_AES_128_CBC_SHA1 \ + { \ + 0x00, 0x94 \ + } +#define GNUTLS_RSA_PSK_AES_256_CBC_SHA1 \ + { \ + 0x00, 0x95 \ + } #ifdef ENABLE_SRP /* SRP (rfc5054) */ -# define GNUTLS_SRP_SHA_3DES_EDE_CBC_SHA1 { 0xC0, 0x1A } -# define GNUTLS_SRP_SHA_RSA_3DES_EDE_CBC_SHA1 { 0xC0, 0x1B } -# define GNUTLS_SRP_SHA_DSS_3DES_EDE_CBC_SHA1 { 0xC0, 0x1C } +#define GNUTLS_SRP_SHA_3DES_EDE_CBC_SHA1 \ + { \ + 0xC0, 0x1A \ + } +#define GNUTLS_SRP_SHA_RSA_3DES_EDE_CBC_SHA1 \ + { \ + 0xC0, 0x1B \ + } +#define GNUTLS_SRP_SHA_DSS_3DES_EDE_CBC_SHA1 \ + { \ + 0xC0, 0x1C \ + } -# define GNUTLS_SRP_SHA_AES_128_CBC_SHA1 { 0xC0, 0x1D } -# define GNUTLS_SRP_SHA_RSA_AES_128_CBC_SHA1 { 0xC0, 0x1E } -# define GNUTLS_SRP_SHA_DSS_AES_128_CBC_SHA1 { 0xC0, 0x1F } +#define GNUTLS_SRP_SHA_AES_128_CBC_SHA1 \ + { \ + 0xC0, 0x1D \ + } +#define GNUTLS_SRP_SHA_RSA_AES_128_CBC_SHA1 \ + { \ + 0xC0, 0x1E \ + } +#define GNUTLS_SRP_SHA_DSS_AES_128_CBC_SHA1 \ + { \ + 0xC0, 0x1F \ + } -# define GNUTLS_SRP_SHA_AES_256_CBC_SHA1 { 0xC0, 0x20 } -# define GNUTLS_SRP_SHA_RSA_AES_256_CBC_SHA1 { 0xC0, 0x21 } -# define GNUTLS_SRP_SHA_DSS_AES_256_CBC_SHA1 { 0xC0, 0x22 } +#define GNUTLS_SRP_SHA_AES_256_CBC_SHA1 \ + { \ + 0xC0, 0x20 \ + } +#define GNUTLS_SRP_SHA_RSA_AES_256_CBC_SHA1 \ + { \ + 0xC0, 0x21 \ + } +#define GNUTLS_SRP_SHA_DSS_AES_256_CBC_SHA1 \ + { \ + 0xC0, 0x22 \ + } #endif /* RSA */ -#define GNUTLS_RSA_ARCFOUR_128_SHA1 { 0x00, 0x05 } -#define GNUTLS_RSA_ARCFOUR_128_MD5 { 0x00, 0x04 } -#define GNUTLS_RSA_3DES_EDE_CBC_SHA1 { 0x00, 0x0A } +#define GNUTLS_RSA_ARCFOUR_128_SHA1 \ + { \ + 0x00, 0x05 \ + } +#define GNUTLS_RSA_ARCFOUR_128_MD5 \ + { \ + 0x00, 0x04 \ + } +#define GNUTLS_RSA_3DES_EDE_CBC_SHA1 \ + { \ + 0x00, 0x0A \ + } /* rfc3268: */ -#define GNUTLS_RSA_AES_128_CBC_SHA1 { 0x00, 0x2F } -#define GNUTLS_RSA_AES_256_CBC_SHA1 { 0x00, 0x35 } +#define GNUTLS_RSA_AES_128_CBC_SHA1 \ + { \ + 0x00, 0x2F \ + } +#define GNUTLS_RSA_AES_256_CBC_SHA1 \ + { \ + 0x00, 0x35 \ + } /* rfc4132 */ -#define GNUTLS_RSA_CAMELLIA_128_CBC_SHA1 { 0x00,0x41 } -#define GNUTLS_RSA_CAMELLIA_256_CBC_SHA1 { 0x00,0x84 } +#define GNUTLS_RSA_CAMELLIA_128_CBC_SHA1 \ + { \ + 0x00, 0x41 \ + } +#define GNUTLS_RSA_CAMELLIA_256_CBC_SHA1 \ + { \ + 0x00, 0x84 \ + } -#define GNUTLS_RSA_AES_128_CBC_SHA256 { 0x00, 0x3C } -#define GNUTLS_RSA_AES_256_CBC_SHA256 { 0x00, 0x3D } +#define GNUTLS_RSA_AES_128_CBC_SHA256 \ + { \ + 0x00, 0x3C \ + } +#define GNUTLS_RSA_AES_256_CBC_SHA256 \ + { \ + 0x00, 0x3D \ + } /* DHE DSS */ -#define GNUTLS_DHE_DSS_3DES_EDE_CBC_SHA1 { 0x00, 0x13 } +#define GNUTLS_DHE_DSS_3DES_EDE_CBC_SHA1 \ + { \ + 0x00, 0x13 \ + } /* draft-ietf-tls-56-bit-ciphersuites-01: */ -#define GNUTLS_DHE_DSS_ARCFOUR_128_SHA1 { 0x00, 0x66 } +#define GNUTLS_DHE_DSS_ARCFOUR_128_SHA1 \ + { \ + 0x00, 0x66 \ + } /* rfc3268: */ -#define GNUTLS_DHE_DSS_AES_256_CBC_SHA1 { 0x00, 0x38 } -#define GNUTLS_DHE_DSS_AES_128_CBC_SHA1 { 0x00, 0x32 } +#define GNUTLS_DHE_DSS_AES_256_CBC_SHA1 \ + { \ + 0x00, 0x38 \ + } +#define GNUTLS_DHE_DSS_AES_128_CBC_SHA1 \ + { \ + 0x00, 0x32 \ + } /* rfc4132 */ -#define GNUTLS_DHE_DSS_CAMELLIA_128_CBC_SHA1 { 0x00,0x44 } -#define GNUTLS_DHE_DSS_CAMELLIA_256_CBC_SHA1 { 0x00,0x87 } +#define GNUTLS_DHE_DSS_CAMELLIA_128_CBC_SHA1 \ + { \ + 0x00, 0x44 \ + } +#define GNUTLS_DHE_DSS_CAMELLIA_256_CBC_SHA1 \ + { \ + 0x00, 0x87 \ + } -#define GNUTLS_DHE_DSS_AES_128_CBC_SHA256 { 0x00, 0x40 } -#define GNUTLS_DHE_DSS_AES_256_CBC_SHA256 { 0x00, 0x6A } +#define GNUTLS_DHE_DSS_AES_128_CBC_SHA256 \ + { \ + 0x00, 0x40 \ + } +#define GNUTLS_DHE_DSS_AES_256_CBC_SHA256 \ + { \ + 0x00, 0x6A \ + } /* DHE RSA */ -#define GNUTLS_DHE_RSA_3DES_EDE_CBC_SHA1 { 0x00, 0x16 } +#define GNUTLS_DHE_RSA_3DES_EDE_CBC_SHA1 \ + { \ + 0x00, 0x16 \ + } /* rfc3268: */ -#define GNUTLS_DHE_RSA_AES_128_CBC_SHA1 { 0x00, 0x33 } -#define GNUTLS_DHE_RSA_AES_256_CBC_SHA1 { 0x00, 0x39 } +#define GNUTLS_DHE_RSA_AES_128_CBC_SHA1 \ + { \ + 0x00, 0x33 \ + } +#define GNUTLS_DHE_RSA_AES_256_CBC_SHA1 \ + { \ + 0x00, 0x39 \ + } /* rfc4132 */ -#define GNUTLS_DHE_RSA_CAMELLIA_128_CBC_SHA1 { 0x00,0x45 } -#define GNUTLS_DHE_RSA_CAMELLIA_256_CBC_SHA1 { 0x00,0x88 } +#define GNUTLS_DHE_RSA_CAMELLIA_128_CBC_SHA1 \ + { \ + 0x00, 0x45 \ + } +#define GNUTLS_DHE_RSA_CAMELLIA_256_CBC_SHA1 \ + { \ + 0x00, 0x88 \ + } -#define GNUTLS_DHE_RSA_AES_128_CBC_SHA256 { 0x00, 0x67 } -#define GNUTLS_DHE_RSA_AES_256_CBC_SHA256 { 0x00, 0x6B } +#define GNUTLS_DHE_RSA_AES_128_CBC_SHA256 \ + { \ + 0x00, 0x67 \ + } +#define GNUTLS_DHE_RSA_AES_256_CBC_SHA256 \ + { \ + 0x00, 0x6B \ + } /* GCM: RFC5288 */ -#define GNUTLS_RSA_AES_128_GCM_SHA256 { 0x00, 0x9C } -#define GNUTLS_DHE_RSA_AES_128_GCM_SHA256 {0x00,0x9E} -#define GNUTLS_DHE_DSS_AES_128_GCM_SHA256 {0x00,0xA2} -#define GNUTLS_DH_ANON_AES_128_GCM_SHA256 {0x00,0xA6} -#define GNUTLS_RSA_AES_256_GCM_SHA384 { 0x00, 0x9D } -#define GNUTLS_DHE_RSA_AES_256_GCM_SHA384 {0x00,0x9F} -#define GNUTLS_DHE_DSS_AES_256_GCM_SHA384 {0x00,0xA3} -#define GNUTLS_DH_ANON_AES_256_GCM_SHA384 {0x00,0xA7} +#define GNUTLS_RSA_AES_128_GCM_SHA256 \ + { \ + 0x00, 0x9C \ + } +#define GNUTLS_DHE_RSA_AES_128_GCM_SHA256 \ + { \ + 0x00, 0x9E \ + } +#define GNUTLS_DHE_DSS_AES_128_GCM_SHA256 \ + { \ + 0x00, 0xA2 \ + } +#define GNUTLS_DH_ANON_AES_128_GCM_SHA256 \ + { \ + 0x00, 0xA6 \ + } +#define GNUTLS_RSA_AES_256_GCM_SHA384 \ + { \ + 0x00, 0x9D \ + } +#define GNUTLS_DHE_RSA_AES_256_GCM_SHA384 \ + { \ + 0x00, 0x9F \ + } +#define GNUTLS_DHE_DSS_AES_256_GCM_SHA384 \ + { \ + 0x00, 0xA3 \ + } +#define GNUTLS_DH_ANON_AES_256_GCM_SHA384 \ + { \ + 0x00, 0xA7 \ + } /* CCM: RFC6655/7251 */ -#define GNUTLS_RSA_AES_128_CCM { 0xC0, 0x9C } -#define GNUTLS_RSA_AES_256_CCM { 0xC0, 0x9D } -#define GNUTLS_DHE_RSA_AES_128_CCM {0xC0,0x9E} -#define GNUTLS_DHE_RSA_AES_256_CCM {0xC0,0x9F} +#define GNUTLS_RSA_AES_128_CCM \ + { \ + 0xC0, 0x9C \ + } +#define GNUTLS_RSA_AES_256_CCM \ + { \ + 0xC0, 0x9D \ + } +#define GNUTLS_DHE_RSA_AES_128_CCM \ + { \ + 0xC0, 0x9E \ + } +#define GNUTLS_DHE_RSA_AES_256_CCM \ + { \ + 0xC0, 0x9F \ + } -#define GNUTLS_ECDHE_ECDSA_AES_128_CCM {0xC0,0xAC} -#define GNUTLS_ECDHE_ECDSA_AES_256_CCM {0xC0,0xAD} +#define GNUTLS_ECDHE_ECDSA_AES_128_CCM \ + { \ + 0xC0, 0xAC \ + } +#define GNUTLS_ECDHE_ECDSA_AES_256_CCM \ + { \ + 0xC0, 0xAD \ + } -#define GNUTLS_PSK_AES_128_CCM { 0xC0, 0xA4 } -#define GNUTLS_PSK_AES_256_CCM { 0xC0, 0xA5 } -#define GNUTLS_DHE_PSK_AES_128_CCM {0xC0,0xA6} -#define GNUTLS_DHE_PSK_AES_256_CCM {0xC0,0xA7} +#define GNUTLS_PSK_AES_128_CCM \ + { \ + 0xC0, 0xA4 \ + } +#define GNUTLS_PSK_AES_256_CCM \ + { \ + 0xC0, 0xA5 \ + } +#define GNUTLS_DHE_PSK_AES_128_CCM \ + { \ + 0xC0, 0xA6 \ + } +#define GNUTLS_DHE_PSK_AES_256_CCM \ + { \ + 0xC0, 0xA7 \ + } /* CCM-8: RFC6655/7251 */ -#define GNUTLS_RSA_AES_128_CCM_8 { 0xC0, 0xA0 } -#define GNUTLS_RSA_AES_256_CCM_8 { 0xC0, 0xA1 } -#define GNUTLS_DHE_RSA_AES_128_CCM_8 {0xC0,0xA2} -#define GNUTLS_DHE_RSA_AES_256_CCM_8 {0xC0,0xA3} +#define GNUTLS_RSA_AES_128_CCM_8 \ + { \ + 0xC0, 0xA0 \ + } +#define GNUTLS_RSA_AES_256_CCM_8 \ + { \ + 0xC0, 0xA1 \ + } +#define GNUTLS_DHE_RSA_AES_128_CCM_8 \ + { \ + 0xC0, 0xA2 \ + } +#define GNUTLS_DHE_RSA_AES_256_CCM_8 \ + { \ + 0xC0, 0xA3 \ + } -#define GNUTLS_ECDHE_ECDSA_AES_128_CCM_8 {0xC0,0xAE} -#define GNUTLS_ECDHE_ECDSA_AES_256_CCM_8 {0xC0,0xAF} +#define GNUTLS_ECDHE_ECDSA_AES_128_CCM_8 \ + { \ + 0xC0, 0xAE \ + } +#define GNUTLS_ECDHE_ECDSA_AES_256_CCM_8 \ + { \ + 0xC0, 0xAF \ + } -#define GNUTLS_PSK_AES_128_CCM_8 { 0xC0, 0xA8 } -#define GNUTLS_PSK_AES_256_CCM_8 { 0xC0, 0xA9 } -#define GNUTLS_DHE_PSK_AES_128_CCM_8 {0xC0,0xAA} -#define GNUTLS_DHE_PSK_AES_256_CCM_8 {0xC0,0xAB} +#define GNUTLS_PSK_AES_128_CCM_8 \ + { \ + 0xC0, 0xA8 \ + } +#define GNUTLS_PSK_AES_256_CCM_8 \ + { \ + 0xC0, 0xA9 \ + } +#define GNUTLS_DHE_PSK_AES_128_CCM_8 \ + { \ + 0xC0, 0xAA \ + } +#define GNUTLS_DHE_PSK_AES_256_CCM_8 \ + { \ + 0xC0, 0xAB \ + } /* RFC 5487 */ /* GCM-PSK */ -#define GNUTLS_PSK_AES_128_GCM_SHA256 { 0x00, 0xA8 } -#define GNUTLS_DHE_PSK_AES_128_GCM_SHA256 { 0x00, 0xAA } -#define GNUTLS_PSK_AES_256_GCM_SHA384 { 0x00, 0xA9 } -#define GNUTLS_DHE_PSK_AES_256_GCM_SHA384 { 0x00, 0xAB } - -#define GNUTLS_PSK_AES_256_CBC_SHA384 { 0x00,0xAF } -#define GNUTLS_PSK_NULL_SHA384 { 0x00,0xB1 } -#define GNUTLS_DHE_PSK_AES_256_CBC_SHA384 { 0x00,0xB3 } -#define GNUTLS_DHE_PSK_NULL_SHA384 { 0x00,0xB5 } - -#define GNUTLS_PSK_NULL_SHA1 { 0x00,0x2C } -#define GNUTLS_DHE_PSK_NULL_SHA1 { 0x00,0x2D } -#define GNUTLS_RSA_PSK_NULL_SHA1 { 0x00,0x2E } -#define GNUTLS_ECDHE_PSK_NULL_SHA1 { 0xC0,0x39 } - -#define GNUTLS_RSA_PSK_AES_128_GCM_SHA256 { 0x00,0xAC } -#define GNUTLS_RSA_PSK_AES_256_GCM_SHA384 { 0x00,0xAD } -#define GNUTLS_RSA_PSK_AES_128_CBC_SHA256 { 0x00,0xB6 } -#define GNUTLS_RSA_PSK_AES_256_CBC_SHA384 { 0x00,0xB7 } -#define GNUTLS_RSA_PSK_NULL_SHA256 { 0x00,0xB8 } -#define GNUTLS_RSA_PSK_NULL_SHA384 { 0x00,0xB9 } +#define GNUTLS_PSK_AES_128_GCM_SHA256 \ + { \ + 0x00, 0xA8 \ + } +#define GNUTLS_DHE_PSK_AES_128_GCM_SHA256 \ + { \ + 0x00, 0xAA \ + } +#define GNUTLS_PSK_AES_256_GCM_SHA384 \ + { \ + 0x00, 0xA9 \ + } +#define GNUTLS_DHE_PSK_AES_256_GCM_SHA384 \ + { \ + 0x00, 0xAB \ + } + +#define GNUTLS_PSK_AES_256_CBC_SHA384 \ + { \ + 0x00, 0xAF \ + } +#define GNUTLS_PSK_NULL_SHA384 \ + { \ + 0x00, 0xB1 \ + } +#define GNUTLS_DHE_PSK_AES_256_CBC_SHA384 \ + { \ + 0x00, 0xB3 \ + } +#define GNUTLS_DHE_PSK_NULL_SHA384 \ + { \ + 0x00, 0xB5 \ + } + +#define GNUTLS_PSK_NULL_SHA1 \ + { \ + 0x00, 0x2C \ + } +#define GNUTLS_DHE_PSK_NULL_SHA1 \ + { \ + 0x00, 0x2D \ + } +#define GNUTLS_RSA_PSK_NULL_SHA1 \ + { \ + 0x00, 0x2E \ + } +#define GNUTLS_ECDHE_PSK_NULL_SHA1 \ + { \ + 0xC0, 0x39 \ + } + +#define GNUTLS_RSA_PSK_AES_128_GCM_SHA256 \ + { \ + 0x00, 0xAC \ + } +#define GNUTLS_RSA_PSK_AES_256_GCM_SHA384 \ + { \ + 0x00, 0xAD \ + } +#define GNUTLS_RSA_PSK_AES_128_CBC_SHA256 \ + { \ + 0x00, 0xB6 \ + } +#define GNUTLS_RSA_PSK_AES_256_CBC_SHA384 \ + { \ + 0x00, 0xB7 \ + } +#define GNUTLS_RSA_PSK_NULL_SHA256 \ + { \ + 0x00, 0xB8 \ + } +#define GNUTLS_RSA_PSK_NULL_SHA384 \ + { \ + 0x00, 0xB9 \ + } /* PSK - SHA256 HMAC */ -#define GNUTLS_PSK_AES_128_CBC_SHA256 { 0x00, 0xAE } -#define GNUTLS_DHE_PSK_AES_128_CBC_SHA256 { 0x00, 0xB2 } +#define GNUTLS_PSK_AES_128_CBC_SHA256 \ + { \ + 0x00, 0xAE \ + } +#define GNUTLS_DHE_PSK_AES_128_CBC_SHA256 \ + { \ + 0x00, 0xB2 \ + } -#define GNUTLS_PSK_NULL_SHA256 { 0x00, 0xB0 } -#define GNUTLS_DHE_PSK_NULL_SHA256 { 0x00, 0xB4 } +#define GNUTLS_PSK_NULL_SHA256 \ + { \ + 0x00, 0xB0 \ + } +#define GNUTLS_DHE_PSK_NULL_SHA256 \ + { \ + 0x00, 0xB4 \ + } /* ECC */ -#define GNUTLS_ECDH_ANON_NULL_SHA1 { 0xC0, 0x15 } -#define GNUTLS_ECDH_ANON_3DES_EDE_CBC_SHA1 { 0xC0, 0x17 } -#define GNUTLS_ECDH_ANON_AES_128_CBC_SHA1 { 0xC0, 0x18 } -#define GNUTLS_ECDH_ANON_AES_256_CBC_SHA1 { 0xC0, 0x19 } -#define GNUTLS_ECDH_ANON_ARCFOUR_128_SHA1 { 0xC0, 0x16 } +#define GNUTLS_ECDH_ANON_NULL_SHA1 \ + { \ + 0xC0, 0x15 \ + } +#define GNUTLS_ECDH_ANON_3DES_EDE_CBC_SHA1 \ + { \ + 0xC0, 0x17 \ + } +#define GNUTLS_ECDH_ANON_AES_128_CBC_SHA1 \ + { \ + 0xC0, 0x18 \ + } +#define GNUTLS_ECDH_ANON_AES_256_CBC_SHA1 \ + { \ + 0xC0, 0x19 \ + } +#define GNUTLS_ECDH_ANON_ARCFOUR_128_SHA1 \ + { \ + 0xC0, 0x16 \ + } /* ECC-RSA */ -#define GNUTLS_ECDHE_RSA_NULL_SHA1 { 0xC0, 0x10 } -#define GNUTLS_ECDHE_RSA_3DES_EDE_CBC_SHA1 { 0xC0, 0x12 } -#define GNUTLS_ECDHE_RSA_AES_128_CBC_SHA1 { 0xC0, 0x13 } -#define GNUTLS_ECDHE_RSA_AES_256_CBC_SHA1 { 0xC0, 0x14 } -#define GNUTLS_ECDHE_RSA_ARCFOUR_128_SHA1 { 0xC0, 0x11 } +#define GNUTLS_ECDHE_RSA_NULL_SHA1 \ + { \ + 0xC0, 0x10 \ + } +#define GNUTLS_ECDHE_RSA_3DES_EDE_CBC_SHA1 \ + { \ + 0xC0, 0x12 \ + } +#define GNUTLS_ECDHE_RSA_AES_128_CBC_SHA1 \ + { \ + 0xC0, 0x13 \ + } +#define GNUTLS_ECDHE_RSA_AES_256_CBC_SHA1 \ + { \ + 0xC0, 0x14 \ + } +#define GNUTLS_ECDHE_RSA_ARCFOUR_128_SHA1 \ + { \ + 0xC0, 0x11 \ + } /* ECC-ECDSA */ -#define GNUTLS_ECDHE_ECDSA_NULL_SHA1 { 0xC0, 0x06 } -#define GNUTLS_ECDHE_ECDSA_3DES_EDE_CBC_SHA1 { 0xC0, 0x08 } -#define GNUTLS_ECDHE_ECDSA_AES_128_CBC_SHA1 { 0xC0, 0x09 } -#define GNUTLS_ECDHE_ECDSA_AES_256_CBC_SHA1 { 0xC0, 0x0A } -#define GNUTLS_ECDHE_ECDSA_ARCFOUR_128_SHA1 { 0xC0, 0x07 } +#define GNUTLS_ECDHE_ECDSA_NULL_SHA1 \ + { \ + 0xC0, 0x06 \ + } +#define GNUTLS_ECDHE_ECDSA_3DES_EDE_CBC_SHA1 \ + { \ + 0xC0, 0x08 \ + } +#define GNUTLS_ECDHE_ECDSA_AES_128_CBC_SHA1 \ + { \ + 0xC0, 0x09 \ + } +#define GNUTLS_ECDHE_ECDSA_AES_256_CBC_SHA1 \ + { \ + 0xC0, 0x0A \ + } +#define GNUTLS_ECDHE_ECDSA_ARCFOUR_128_SHA1 \ + { \ + 0xC0, 0x07 \ + } /* RFC5289 */ /* ECC with SHA2 */ -#define GNUTLS_ECDHE_ECDSA_AES_128_CBC_SHA256 {0xC0,0x23} -#define GNUTLS_ECDHE_RSA_AES_128_CBC_SHA256 {0xC0,0x27} -#define GNUTLS_ECDHE_RSA_AES_256_CBC_SHA384 { 0xC0,0x28 } +#define GNUTLS_ECDHE_ECDSA_AES_128_CBC_SHA256 \ + { \ + 0xC0, 0x23 \ + } +#define GNUTLS_ECDHE_RSA_AES_128_CBC_SHA256 \ + { \ + 0xC0, 0x27 \ + } +#define GNUTLS_ECDHE_RSA_AES_256_CBC_SHA384 \ + { \ + 0xC0, 0x28 \ + } /* ECC with AES-GCM */ -#define GNUTLS_ECDHE_ECDSA_AES_128_GCM_SHA256 {0xC0,0x2B} -#define GNUTLS_ECDHE_RSA_AES_128_GCM_SHA256 {0xC0,0x2F} -#define GNUTLS_ECDHE_RSA_AES_256_GCM_SHA384 {0xC0,0x30} +#define GNUTLS_ECDHE_ECDSA_AES_128_GCM_SHA256 \ + { \ + 0xC0, 0x2B \ + } +#define GNUTLS_ECDHE_RSA_AES_128_GCM_SHA256 \ + { \ + 0xC0, 0x2F \ + } +#define GNUTLS_ECDHE_RSA_AES_256_GCM_SHA384 \ + { \ + 0xC0, 0x30 \ + } /* SuiteB */ -#define GNUTLS_ECDHE_ECDSA_AES_256_GCM_SHA384 {0xC0,0x2C} -#define GNUTLS_ECDHE_ECDSA_AES_256_CBC_SHA384 {0xC0,0x24} +#define GNUTLS_ECDHE_ECDSA_AES_256_GCM_SHA384 \ + { \ + 0xC0, 0x2C \ + } +#define GNUTLS_ECDHE_ECDSA_AES_256_CBC_SHA384 \ + { \ + 0xC0, 0x24 \ + } /* ECC with PSK */ -#define GNUTLS_ECDHE_PSK_3DES_EDE_CBC_SHA1 { 0xC0, 0x34 } -#define GNUTLS_ECDHE_PSK_AES_128_CBC_SHA1 { 0xC0, 0x35 } -#define GNUTLS_ECDHE_PSK_AES_256_CBC_SHA1 { 0xC0, 0x36 } -#define GNUTLS_ECDHE_PSK_AES_128_CBC_SHA256 { 0xC0, 0x37 } -#define GNUTLS_ECDHE_PSK_AES_256_CBC_SHA384 { 0xC0, 0x38 } -#define GNUTLS_ECDHE_PSK_ARCFOUR_128_SHA1 { 0xC0, 0x33 } -#define GNUTLS_ECDHE_PSK_NULL_SHA256 { 0xC0, 0x3A } -#define GNUTLS_ECDHE_PSK_NULL_SHA384 { 0xC0, 0x3B } +#define GNUTLS_ECDHE_PSK_3DES_EDE_CBC_SHA1 \ + { \ + 0xC0, 0x34 \ + } +#define GNUTLS_ECDHE_PSK_AES_128_CBC_SHA1 \ + { \ + 0xC0, 0x35 \ + } +#define GNUTLS_ECDHE_PSK_AES_256_CBC_SHA1 \ + { \ + 0xC0, 0x36 \ + } +#define GNUTLS_ECDHE_PSK_AES_128_CBC_SHA256 \ + { \ + 0xC0, 0x37 \ + } +#define GNUTLS_ECDHE_PSK_AES_256_CBC_SHA384 \ + { \ + 0xC0, 0x38 \ + } +#define GNUTLS_ECDHE_PSK_ARCFOUR_128_SHA1 \ + { \ + 0xC0, 0x33 \ + } +#define GNUTLS_ECDHE_PSK_NULL_SHA256 \ + { \ + 0xC0, 0x3A \ + } +#define GNUTLS_ECDHE_PSK_NULL_SHA384 \ + { \ + 0xC0, 0x3B \ + } /* draft-smyshlyaev-tls12-gost-suites */ #ifdef ENABLE_GOST -# define GNUTLS_GOSTR341112_256_28147_CNT_IMIT { 0xc1, 0x02 } +#define GNUTLS_GOSTR341112_256_28147_CNT_IMIT \ + { \ + 0xc1, 0x02 \ + } #endif -#define CIPHER_SUITES_COUNT (sizeof(cs_algorithms)/sizeof(gnutls_cipher_suite_entry_st)-1) +#define CIPHER_SUITES_COUNT \ + (sizeof(cs_algorithms) / sizeof(gnutls_cipher_suite_entry_st) - 1) /* The following is a potential list of ciphersuites. For the options to be * available, the ciphers and MACs must be available to gnutls as well. */ static const gnutls_cipher_suite_entry_st cs_algorithms[] = { -/* TLS 1.3 */ + /* TLS 1.3 */ ENTRY_TLS13(GNUTLS_AES_128_GCM_SHA256, "TLS_AES_128_GCM_SHA256", - GNUTLS_CIPHER_AES_128_GCM, - GNUTLS_TLS1_3, + GNUTLS_CIPHER_AES_128_GCM, GNUTLS_TLS1_3, GNUTLS_MAC_SHA256), ENTRY_TLS13(GNUTLS_AES_256_GCM_SHA384, "TLS_AES_256_GCM_SHA384", - GNUTLS_CIPHER_AES_256_GCM, - GNUTLS_TLS1_3, + GNUTLS_CIPHER_AES_256_GCM, GNUTLS_TLS1_3, GNUTLS_MAC_SHA384), ENTRY_TLS13(GNUTLS_CHACHA20_POLY1305_SHA256, "TLS_CHACHA20_POLY1305_SHA256", - GNUTLS_CIPHER_CHACHA20_POLY1305, - GNUTLS_TLS1_3, + GNUTLS_CIPHER_CHACHA20_POLY1305, GNUTLS_TLS1_3, GNUTLS_MAC_SHA256), ENTRY_TLS13(GNUTLS_AES_128_CCM_SHA256, "TLS_AES_128_CCM_SHA256", - GNUTLS_CIPHER_AES_128_CCM, - GNUTLS_TLS1_3, + GNUTLS_CIPHER_AES_128_CCM, GNUTLS_TLS1_3, GNUTLS_MAC_SHA256), ENTRY_TLS13(GNUTLS_AES_128_CCM_8_SHA256, "TLS_AES_128_CCM_8_SHA256", - GNUTLS_CIPHER_AES_128_CCM_8, - GNUTLS_TLS1_3, + GNUTLS_CIPHER_AES_128_CCM_8, GNUTLS_TLS1_3, GNUTLS_MAC_SHA256), /* RSA-NULL */ - ENTRY(GNUTLS_RSA_NULL_MD5, "TLS_RSA_WITH_NULL_MD5", - GNUTLS_CIPHER_NULL, + ENTRY(GNUTLS_RSA_NULL_MD5, "TLS_RSA_WITH_NULL_MD5", GNUTLS_CIPHER_NULL, GNUTLS_KX_RSA, GNUTLS_MAC_MD5, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), - ENTRY(GNUTLS_RSA_NULL_SHA1, "TLS_RSA_WITH_NULL_SHA", - GNUTLS_CIPHER_NULL, + ENTRY(GNUTLS_RSA_NULL_SHA1, "TLS_RSA_WITH_NULL_SHA", GNUTLS_CIPHER_NULL, GNUTLS_KX_RSA, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_RSA_NULL_SHA256, "TLS_RSA_WITH_NULL_SHA256", - GNUTLS_CIPHER_NULL, - GNUTLS_KX_RSA, GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_NULL, GNUTLS_KX_RSA, GNUTLS_MAC_SHA256, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), /* RSA */ ENTRY(GNUTLS_RSA_ARCFOUR_128_SHA1, "TLS_RSA_WITH_RC4_128_SHA", - GNUTLS_CIPHER_ARCFOUR_128, - GNUTLS_KX_RSA, GNUTLS_MAC_SHA1, GNUTLS_SSL3, - GNUTLS_VERSION_UNKNOWN), + GNUTLS_CIPHER_ARCFOUR_128, GNUTLS_KX_RSA, GNUTLS_MAC_SHA1, + GNUTLS_SSL3, GNUTLS_VERSION_UNKNOWN), ENTRY(GNUTLS_RSA_ARCFOUR_128_MD5, "TLS_RSA_WITH_RC4_128_MD5", - GNUTLS_CIPHER_ARCFOUR_128, - GNUTLS_KX_RSA, GNUTLS_MAC_MD5, GNUTLS_SSL3, - GNUTLS_VERSION_UNKNOWN), + GNUTLS_CIPHER_ARCFOUR_128, GNUTLS_KX_RSA, GNUTLS_MAC_MD5, + GNUTLS_SSL3, GNUTLS_VERSION_UNKNOWN), ENTRY(GNUTLS_RSA_3DES_EDE_CBC_SHA1, "TLS_RSA_WITH_3DES_EDE_CBC_SHA", - GNUTLS_CIPHER_3DES_CBC, - GNUTLS_KX_RSA, GNUTLS_MAC_SHA1, GNUTLS_SSL3, - GNUTLS_DTLS_VERSION_MIN), + GNUTLS_CIPHER_3DES_CBC, GNUTLS_KX_RSA, GNUTLS_MAC_SHA1, + GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_RSA_AES_128_CBC_SHA1, "TLS_RSA_WITH_AES_128_CBC_SHA", - GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_RSA, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, - GNUTLS_DTLS_VERSION_MIN), + GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_RSA, GNUTLS_MAC_SHA1, + GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_RSA_AES_256_CBC_SHA1, "TLS_RSA_WITH_AES_256_CBC_SHA", - GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_RSA, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, - GNUTLS_DTLS_VERSION_MIN), + GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_RSA, GNUTLS_MAC_SHA1, + GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_RSA_CAMELLIA_128_CBC_SHA256, "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256", - GNUTLS_CIPHER_CAMELLIA_128_CBC, GNUTLS_KX_RSA, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_CAMELLIA_128_CBC, GNUTLS_KX_RSA, GNUTLS_MAC_SHA256, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_RSA_CAMELLIA_256_CBC_SHA256, "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256", - GNUTLS_CIPHER_CAMELLIA_256_CBC, GNUTLS_KX_RSA, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_CAMELLIA_256_CBC, GNUTLS_KX_RSA, GNUTLS_MAC_SHA256, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_RSA_CAMELLIA_128_CBC_SHA1, "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA", - GNUTLS_CIPHER_CAMELLIA_128_CBC, GNUTLS_KX_RSA, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, - GNUTLS_DTLS_VERSION_MIN), + GNUTLS_CIPHER_CAMELLIA_128_CBC, GNUTLS_KX_RSA, GNUTLS_MAC_SHA1, + GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_RSA_CAMELLIA_256_CBC_SHA1, "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA", - GNUTLS_CIPHER_CAMELLIA_256_CBC, GNUTLS_KX_RSA, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, - GNUTLS_DTLS_VERSION_MIN), + GNUTLS_CIPHER_CAMELLIA_256_CBC, GNUTLS_KX_RSA, GNUTLS_MAC_SHA1, + GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_RSA_AES_128_CBC_SHA256, "TLS_RSA_WITH_AES_128_CBC_SHA256", - GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_RSA, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_RSA, GNUTLS_MAC_SHA256, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_RSA_AES_256_CBC_SHA256, "TLS_RSA_WITH_AES_256_CBC_SHA256", - GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_RSA, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_RSA, GNUTLS_MAC_SHA256, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), -/* GCM */ + /* GCM */ ENTRY(GNUTLS_RSA_AES_128_GCM_SHA256, "TLS_RSA_WITH_AES_128_GCM_SHA256", - GNUTLS_CIPHER_AES_128_GCM, GNUTLS_KX_RSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_AES_128_GCM, GNUTLS_KX_RSA, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_RSA_AES_256_GCM_SHA384, - "TLS_RSA_WITH_AES_256_GCM_SHA384", - GNUTLS_CIPHER_AES_256_GCM, GNUTLS_KX_RSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + "TLS_RSA_WITH_AES_256_GCM_SHA384", GNUTLS_CIPHER_AES_256_GCM, + GNUTLS_KX_RSA, GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2, + GNUTLS_MAC_SHA384), ENTRY(GNUTLS_RSA_CAMELLIA_128_GCM_SHA256, "TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256", - GNUTLS_CIPHER_CAMELLIA_128_GCM, GNUTLS_KX_RSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_CAMELLIA_128_GCM, GNUTLS_KX_RSA, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_RSA_CAMELLIA_256_GCM_SHA384, "TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384", GNUTLS_CIPHER_CAMELLIA_256_GCM, GNUTLS_KX_RSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2, + GNUTLS_MAC_SHA384), -/* CCM */ + /* CCM */ ENTRY(GNUTLS_RSA_AES_128_CCM, "TLS_RSA_WITH_AES_128_CCM", - GNUTLS_CIPHER_AES_128_CCM, GNUTLS_KX_RSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_AES_128_CCM, GNUTLS_KX_RSA, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_RSA_AES_256_CCM, "TLS_RSA_WITH_AES_256_CCM", - GNUTLS_CIPHER_AES_256_CCM, GNUTLS_KX_RSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_AES_256_CCM, GNUTLS_KX_RSA, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), -/* CCM_8 */ + /* CCM_8 */ ENTRY(GNUTLS_RSA_AES_128_CCM_8, "TLS_RSA_WITH_AES_128_CCM_8", - GNUTLS_CIPHER_AES_128_CCM_8, GNUTLS_KX_RSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_AES_128_CCM_8, GNUTLS_KX_RSA, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_RSA_AES_256_CCM_8, "TLS_RSA_WITH_AES_256_CCM_8", - GNUTLS_CIPHER_AES_256_CCM_8, GNUTLS_KX_RSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_AES_256_CCM_8, GNUTLS_KX_RSA, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), - /* DHE_DSS */ +/* DHE_DSS */ #ifdef ENABLE_DHE ENTRY(GNUTLS_DHE_DSS_ARCFOUR_128_SHA1, "TLS_DHE_DSS_RC4_128_SHA", - GNUTLS_CIPHER_ARCFOUR_128, GNUTLS_KX_DHE_DSS, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, - GNUTLS_VERSION_UNKNOWN), + GNUTLS_CIPHER_ARCFOUR_128, GNUTLS_KX_DHE_DSS, GNUTLS_MAC_SHA1, + GNUTLS_SSL3, GNUTLS_VERSION_UNKNOWN), ENTRY(GNUTLS_DHE_DSS_3DES_EDE_CBC_SHA1, - "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA", - GNUTLS_CIPHER_3DES_CBC, GNUTLS_KX_DHE_DSS, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA", GNUTLS_CIPHER_3DES_CBC, + GNUTLS_KX_DHE_DSS, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_DHE_DSS_AES_128_CBC_SHA1, - "TLS_DHE_DSS_WITH_AES_128_CBC_SHA", - GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_DHE_DSS, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_DHE_DSS_WITH_AES_128_CBC_SHA", GNUTLS_CIPHER_AES_128_CBC, + GNUTLS_KX_DHE_DSS, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_DHE_DSS_AES_256_CBC_SHA1, - "TLS_DHE_DSS_WITH_AES_256_CBC_SHA", - GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_DHE_DSS, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_DHE_DSS_WITH_AES_256_CBC_SHA", GNUTLS_CIPHER_AES_256_CBC, + GNUTLS_KX_DHE_DSS, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_DHE_DSS_CAMELLIA_128_CBC_SHA256, "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256", - GNUTLS_CIPHER_CAMELLIA_128_CBC, - GNUTLS_KX_DHE_DSS, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_CAMELLIA_128_CBC, GNUTLS_KX_DHE_DSS, + GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_DHE_DSS_CAMELLIA_256_CBC_SHA256, "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256", - GNUTLS_CIPHER_CAMELLIA_256_CBC, - GNUTLS_KX_DHE_DSS, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_CAMELLIA_256_CBC, GNUTLS_KX_DHE_DSS, + GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_DHE_DSS_CAMELLIA_128_CBC_SHA1, "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA", - GNUTLS_CIPHER_CAMELLIA_128_CBC, - GNUTLS_KX_DHE_DSS, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, - GNUTLS_DTLS_VERSION_MIN), + GNUTLS_CIPHER_CAMELLIA_128_CBC, GNUTLS_KX_DHE_DSS, + GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_DHE_DSS_CAMELLIA_256_CBC_SHA1, "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA", - GNUTLS_CIPHER_CAMELLIA_256_CBC, - GNUTLS_KX_DHE_DSS, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, - GNUTLS_DTLS_VERSION_MIN), + GNUTLS_CIPHER_CAMELLIA_256_CBC, GNUTLS_KX_DHE_DSS, + GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_DHE_DSS_AES_128_CBC_SHA256, - "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256", - GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_DHE_DSS, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, + "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256", GNUTLS_CIPHER_AES_128_CBC, + GNUTLS_KX_DHE_DSS, GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_DHE_DSS_AES_256_CBC_SHA256, - "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256", - GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_DHE_DSS, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, + "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256", GNUTLS_CIPHER_AES_256_CBC, + GNUTLS_KX_DHE_DSS, GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), -/* GCM */ + /* GCM */ ENTRY(GNUTLS_DHE_DSS_AES_128_GCM_SHA256, - "TLS_DHE_DSS_WITH_AES_128_GCM_SHA256", - GNUTLS_CIPHER_AES_128_GCM, GNUTLS_KX_DHE_DSS, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, + "TLS_DHE_DSS_WITH_AES_128_GCM_SHA256", GNUTLS_CIPHER_AES_128_GCM, + GNUTLS_KX_DHE_DSS, GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_DHE_DSS_AES_256_GCM_SHA384, "TLS_DHE_DSS_WITH_AES_256_GCM_SHA384", - GNUTLS_CIPHER_AES_256_GCM, GNUTLS_KX_DHE_DSS, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_CIPHER_AES_256_GCM, GNUTLS_KX_DHE_DSS, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), ENTRY(GNUTLS_DHE_DSS_CAMELLIA_128_GCM_SHA256, "TLS_DHE_DSS_WITH_CAMELLIA_128_GCM_SHA256", GNUTLS_CIPHER_CAMELLIA_128_GCM, GNUTLS_KX_DHE_DSS, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_DHE_DSS_CAMELLIA_256_GCM_SHA384, "TLS_DHE_DSS_WITH_CAMELLIA_256_GCM_SHA384", GNUTLS_CIPHER_CAMELLIA_256_GCM, GNUTLS_KX_DHE_DSS, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2, + GNUTLS_MAC_SHA384), /* DHE_RSA */ ENTRY(GNUTLS_DHE_RSA_3DES_EDE_CBC_SHA1, - "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA", - GNUTLS_CIPHER_3DES_CBC, GNUTLS_KX_DHE_RSA, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA", GNUTLS_CIPHER_3DES_CBC, + GNUTLS_KX_DHE_RSA, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_DHE_RSA_AES_128_CBC_SHA1, - "TLS_DHE_RSA_WITH_AES_128_CBC_SHA", - GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_DHE_RSA, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_DHE_RSA_WITH_AES_128_CBC_SHA", GNUTLS_CIPHER_AES_128_CBC, + GNUTLS_KX_DHE_RSA, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_DHE_RSA_AES_256_CBC_SHA1, - "TLS_DHE_RSA_WITH_AES_256_CBC_SHA", - GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_DHE_RSA, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_DHE_RSA_WITH_AES_256_CBC_SHA", GNUTLS_CIPHER_AES_256_CBC, + GNUTLS_KX_DHE_RSA, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_DHE_RSA_CAMELLIA_128_CBC_SHA256, "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256", - GNUTLS_CIPHER_CAMELLIA_128_CBC, - GNUTLS_KX_DHE_RSA, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_CAMELLIA_128_CBC, GNUTLS_KX_DHE_RSA, + GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_DHE_RSA_CAMELLIA_256_CBC_SHA256, "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256", - GNUTLS_CIPHER_CAMELLIA_256_CBC, - GNUTLS_KX_DHE_RSA, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_CAMELLIA_256_CBC, GNUTLS_KX_DHE_RSA, + GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_DHE_RSA_CAMELLIA_128_CBC_SHA1, "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA", - GNUTLS_CIPHER_CAMELLIA_128_CBC, - GNUTLS_KX_DHE_RSA, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, - GNUTLS_DTLS_VERSION_MIN), + GNUTLS_CIPHER_CAMELLIA_128_CBC, GNUTLS_KX_DHE_RSA, + GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_DHE_RSA_CAMELLIA_256_CBC_SHA1, "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA", - GNUTLS_CIPHER_CAMELLIA_256_CBC, - GNUTLS_KX_DHE_RSA, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, - GNUTLS_DTLS_VERSION_MIN), + GNUTLS_CIPHER_CAMELLIA_256_CBC, GNUTLS_KX_DHE_RSA, + GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_DHE_RSA_AES_128_CBC_SHA256, - "TLS_DHE_RSA_WITH_AES_128_CBC_SHA256", - GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_DHE_RSA, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, + "TLS_DHE_RSA_WITH_AES_128_CBC_SHA256", GNUTLS_CIPHER_AES_128_CBC, + GNUTLS_KX_DHE_RSA, GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_DHE_RSA_AES_256_CBC_SHA256, - "TLS_DHE_RSA_WITH_AES_256_CBC_SHA256", - GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_DHE_RSA, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, + "TLS_DHE_RSA_WITH_AES_256_CBC_SHA256", GNUTLS_CIPHER_AES_256_CBC, + GNUTLS_KX_DHE_RSA, GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), -/* GCM */ + /* GCM */ ENTRY(GNUTLS_DHE_RSA_AES_128_GCM_SHA256, - "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256", - GNUTLS_CIPHER_AES_128_GCM, GNUTLS_KX_DHE_RSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, + "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256", GNUTLS_CIPHER_AES_128_GCM, + GNUTLS_KX_DHE_RSA, GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_DHE_RSA_AES_256_GCM_SHA384, "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384", - GNUTLS_CIPHER_AES_256_GCM, GNUTLS_KX_DHE_RSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_CIPHER_AES_256_GCM, GNUTLS_KX_DHE_RSA, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), ENTRY(GNUTLS_DHE_RSA_CAMELLIA_128_GCM_SHA256, "TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256", GNUTLS_CIPHER_CAMELLIA_128_GCM, GNUTLS_KX_DHE_RSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_DHE_RSA_CAMELLIA_256_GCM_SHA384, "TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384", GNUTLS_CIPHER_CAMELLIA_256_GCM, GNUTLS_KX_DHE_RSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2, + GNUTLS_MAC_SHA384), ENTRY(GNUTLS_DHE_RSA_CHACHA20_POLY1305, "TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256", GNUTLS_CIPHER_CHACHA20_POLY1305, GNUTLS_KX_DHE_RSA, GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), -/* CCM */ + /* CCM */ ENTRY(GNUTLS_DHE_RSA_AES_128_CCM, "TLS_DHE_RSA_WITH_AES_128_CCM", - GNUTLS_CIPHER_AES_128_CCM, GNUTLS_KX_DHE_RSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_AES_128_CCM, GNUTLS_KX_DHE_RSA, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_DHE_RSA_AES_256_CCM, "TLS_DHE_RSA_WITH_AES_256_CCM", - GNUTLS_CIPHER_AES_256_CCM, GNUTLS_KX_DHE_RSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_AES_256_CCM, GNUTLS_KX_DHE_RSA, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_DHE_RSA_AES_128_CCM_8, "TLS_DHE_RSA_WITH_AES_128_CCM_8", - GNUTLS_CIPHER_AES_128_CCM_8, GNUTLS_KX_DHE_RSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_AES_128_CCM_8, GNUTLS_KX_DHE_RSA, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_DHE_RSA_AES_256_CCM_8, "TLS_DHE_RSA_WITH_AES_256_CCM_8", - GNUTLS_CIPHER_AES_256_CCM_8, GNUTLS_KX_DHE_RSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_AES_256_CCM_8, GNUTLS_KX_DHE_RSA, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), -#endif /* DHE */ +#endif /* DHE */ #ifdef ENABLE_ECDHE -/* ECC-RSA */ + /* ECC-RSA */ ENTRY(GNUTLS_ECDHE_RSA_NULL_SHA1, "TLS_ECDHE_RSA_WITH_NULL_SHA", - GNUTLS_CIPHER_NULL, GNUTLS_KX_ECDHE_RSA, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, - GNUTLS_DTLS_VERSION_MIN), + GNUTLS_CIPHER_NULL, GNUTLS_KX_ECDHE_RSA, GNUTLS_MAC_SHA1, + GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_ECDHE_RSA_3DES_EDE_CBC_SHA1, - "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", - GNUTLS_CIPHER_3DES_CBC, GNUTLS_KX_ECDHE_RSA, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", GNUTLS_CIPHER_3DES_CBC, + GNUTLS_KX_ECDHE_RSA, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_ECDHE_RSA_AES_128_CBC_SHA1, - "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", - GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_ECDHE_RSA, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", GNUTLS_CIPHER_AES_128_CBC, + GNUTLS_KX_ECDHE_RSA, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_ECDHE_RSA_AES_256_CBC_SHA1, - "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", - GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_ECDHE_RSA, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", GNUTLS_CIPHER_AES_256_CBC, + GNUTLS_KX_ECDHE_RSA, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY_PRF(GNUTLS_ECDHE_RSA_AES_256_CBC_SHA384, "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384", GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_ECDHE_RSA, - GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, GNUTLS_DTLS1_2, + GNUTLS_MAC_SHA384), ENTRY(GNUTLS_ECDHE_RSA_ARCFOUR_128_SHA1, - "TLS_ECDHE_RSA_WITH_RC4_128_SHA", - GNUTLS_CIPHER_ARCFOUR, GNUTLS_KX_ECDHE_RSA, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_ECDHE_RSA_WITH_RC4_128_SHA", GNUTLS_CIPHER_ARCFOUR, + GNUTLS_KX_ECDHE_RSA, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_VERSION_UNKNOWN), ENTRY(GNUTLS_ECDHE_RSA_CAMELLIA_128_CBC_SHA256, "TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256", GNUTLS_CIPHER_CAMELLIA_128_CBC, GNUTLS_KX_ECDHE_RSA, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_ECDHE_RSA_CAMELLIA_256_CBC_SHA384, "TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384", GNUTLS_CIPHER_CAMELLIA_256_CBC, GNUTLS_KX_ECDHE_RSA, - GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, GNUTLS_DTLS1_2, + GNUTLS_MAC_SHA384), /* ECDHE-ECDSA */ ENTRY(GNUTLS_ECDHE_ECDSA_NULL_SHA1, "TLS_ECDHE_ECDSA_WITH_NULL_SHA", - GNUTLS_CIPHER_NULL, GNUTLS_KX_ECDHE_ECDSA, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, - GNUTLS_DTLS_VERSION_MIN), + GNUTLS_CIPHER_NULL, GNUTLS_KX_ECDHE_ECDSA, GNUTLS_MAC_SHA1, + GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_ECDHE_ECDSA_3DES_EDE_CBC_SHA1, - "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA", - GNUTLS_CIPHER_3DES_CBC, GNUTLS_KX_ECDHE_ECDSA, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA", GNUTLS_CIPHER_3DES_CBC, + GNUTLS_KX_ECDHE_ECDSA, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_ECDHE_ECDSA_AES_128_CBC_SHA1, - "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", - GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_ECDHE_ECDSA, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", GNUTLS_CIPHER_AES_128_CBC, + GNUTLS_KX_ECDHE_ECDSA, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_ECDHE_ECDSA_AES_256_CBC_SHA1, - "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA", - GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_ECDHE_ECDSA, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA", GNUTLS_CIPHER_AES_256_CBC, + GNUTLS_KX_ECDHE_ECDSA, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_ECDHE_ECDSA_ARCFOUR_128_SHA1, - "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", - GNUTLS_CIPHER_ARCFOUR, GNUTLS_KX_ECDHE_ECDSA, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", GNUTLS_CIPHER_ARCFOUR, + GNUTLS_KX_ECDHE_ECDSA, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_VERSION_UNKNOWN), ENTRY(GNUTLS_ECDHE_ECDSA_CAMELLIA_128_CBC_SHA256, "TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256", GNUTLS_CIPHER_CAMELLIA_128_CBC, GNUTLS_KX_ECDHE_ECDSA, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_ECDHE_ECDSA_CAMELLIA_256_CBC_SHA384, "TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384", GNUTLS_CIPHER_CAMELLIA_256_CBC, GNUTLS_KX_ECDHE_ECDSA, - GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, GNUTLS_DTLS1_2, + GNUTLS_MAC_SHA384), /* More ECC */ ENTRY(GNUTLS_ECDHE_ECDSA_AES_128_CBC_SHA256, "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256", GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_ECDHE_ECDSA, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_ECDHE_RSA_AES_128_CBC_SHA256, "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", - GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_ECDHE_RSA, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_ECDHE_RSA, GNUTLS_MAC_SHA256, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_ECDHE_ECDSA_CAMELLIA_128_GCM_SHA256, "TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256", GNUTLS_CIPHER_CAMELLIA_128_GCM, GNUTLS_KX_ECDHE_ECDSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_ECDHE_ECDSA_CAMELLIA_256_GCM_SHA384, "TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384", GNUTLS_CIPHER_CAMELLIA_256_GCM, GNUTLS_KX_ECDHE_ECDSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2, + GNUTLS_MAC_SHA384), ENTRY(GNUTLS_ECDHE_ECDSA_AES_128_GCM_SHA256, "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", - GNUTLS_CIPHER_AES_128_GCM, GNUTLS_KX_ECDHE_ECDSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_AES_128_GCM, GNUTLS_KX_ECDHE_ECDSA, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_ECDHE_ECDSA_AES_256_GCM_SHA384, "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", GNUTLS_CIPHER_AES_256_GCM, GNUTLS_KX_ECDHE_ECDSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2, + GNUTLS_MAC_SHA384), ENTRY(GNUTLS_ECDHE_RSA_AES_128_GCM_SHA256, "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", - GNUTLS_CIPHER_AES_128_GCM, GNUTLS_KX_ECDHE_RSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_AES_128_GCM, GNUTLS_KX_ECDHE_RSA, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_ECDHE_RSA_AES_256_GCM_SHA384, "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", GNUTLS_CIPHER_AES_256_GCM, GNUTLS_KX_ECDHE_RSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2, + GNUTLS_MAC_SHA384), ENTRY_PRF(GNUTLS_ECDHE_ECDSA_AES_256_CBC_SHA384, "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384", GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_ECDHE_ECDSA, - GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, GNUTLS_DTLS1_2, + GNUTLS_MAC_SHA384), ENTRY(GNUTLS_ECDHE_RSA_CAMELLIA_128_GCM_SHA256, "TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256", GNUTLS_CIPHER_CAMELLIA_128_GCM, GNUTLS_KX_ECDHE_RSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_ECDHE_RSA_CAMELLIA_256_GCM_SHA384, "TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384", GNUTLS_CIPHER_CAMELLIA_256_GCM, GNUTLS_KX_ECDHE_RSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2, + GNUTLS_MAC_SHA384), ENTRY(GNUTLS_ECDHE_RSA_CHACHA20_POLY1305, "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256", GNUTLS_CIPHER_CHACHA20_POLY1305, GNUTLS_KX_ECDHE_RSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_ECDHE_ECDSA_CHACHA20_POLY1305, "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256", GNUTLS_CIPHER_CHACHA20_POLY1305, GNUTLS_KX_ECDHE_ECDSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_ECDHE_ECDSA_AES_128_CCM, - "TLS_ECDHE_ECDSA_WITH_AES_128_CCM", - GNUTLS_CIPHER_AES_128_CCM, GNUTLS_KX_ECDHE_ECDSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, + "TLS_ECDHE_ECDSA_WITH_AES_128_CCM", GNUTLS_CIPHER_AES_128_CCM, + GNUTLS_KX_ECDHE_ECDSA, GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_ECDHE_ECDSA_AES_256_CCM, - "TLS_ECDHE_ECDSA_WITH_AES_256_CCM", - GNUTLS_CIPHER_AES_256_CCM, GNUTLS_KX_ECDHE_ECDSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, + "TLS_ECDHE_ECDSA_WITH_AES_256_CCM", GNUTLS_CIPHER_AES_256_CCM, + GNUTLS_KX_ECDHE_ECDSA, GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_ECDHE_ECDSA_AES_128_CCM_8, - "TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8", - GNUTLS_CIPHER_AES_128_CCM_8, GNUTLS_KX_ECDHE_ECDSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, + "TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8", GNUTLS_CIPHER_AES_128_CCM_8, + GNUTLS_KX_ECDHE_ECDSA, GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_ECDHE_ECDSA_AES_256_CCM_8, - "TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8", - GNUTLS_CIPHER_AES_256_CCM_8, GNUTLS_KX_ECDHE_ECDSA, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, + "TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8", GNUTLS_CIPHER_AES_256_CCM_8, + GNUTLS_KX_ECDHE_ECDSA, GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), #endif #ifdef ENABLE_PSK /* ECC - PSK */ ENTRY(GNUTLS_ECDHE_PSK_3DES_EDE_CBC_SHA1, - "TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA", - GNUTLS_CIPHER_3DES_CBC, GNUTLS_KX_ECDHE_PSK, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA", GNUTLS_CIPHER_3DES_CBC, + GNUTLS_KX_ECDHE_PSK, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_ECDHE_PSK_AES_128_CBC_SHA1, - "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA", - GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_ECDHE_PSK, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA", GNUTLS_CIPHER_AES_128_CBC, + GNUTLS_KX_ECDHE_PSK, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_ECDHE_PSK_AES_256_CBC_SHA1, - "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA", - GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_ECDHE_PSK, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA", GNUTLS_CIPHER_AES_256_CBC, + GNUTLS_KX_ECDHE_PSK, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_ECDHE_PSK_AES_128_CBC_SHA256, "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256", - GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_ECDHE_PSK, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_ECDHE_PSK, GNUTLS_MAC_SHA256, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_ECDHE_PSK_AES_256_CBC_SHA384, "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384", GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_ECDHE_PSK, - GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, GNUTLS_DTLS1_2, + GNUTLS_MAC_SHA384), ENTRY(GNUTLS_ECDHE_PSK_ARCFOUR_128_SHA1, - "TLS_ECDHE_PSK_WITH_RC4_128_SHA", - GNUTLS_CIPHER_ARCFOUR, GNUTLS_KX_ECDHE_PSK, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_ECDHE_PSK_WITH_RC4_128_SHA", GNUTLS_CIPHER_ARCFOUR, + GNUTLS_KX_ECDHE_PSK, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_VERSION_UNKNOWN), ENTRY(GNUTLS_ECDHE_PSK_NULL_SHA1, "TLS_ECDHE_PSK_WITH_NULL_SHA", - GNUTLS_CIPHER_NULL, GNUTLS_KX_ECDHE_PSK, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, - GNUTLS_DTLS_VERSION_MIN), + GNUTLS_CIPHER_NULL, GNUTLS_KX_ECDHE_PSK, GNUTLS_MAC_SHA1, + GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_ECDHE_PSK_NULL_SHA256, "TLS_ECDHE_PSK_WITH_NULL_SHA256", - GNUTLS_CIPHER_NULL, GNUTLS_KX_ECDHE_PSK, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_NULL, GNUTLS_KX_ECDHE_PSK, GNUTLS_MAC_SHA256, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_ECDHE_PSK_NULL_SHA384, - "TLS_ECDHE_PSK_WITH_NULL_SHA384", - GNUTLS_CIPHER_NULL, GNUTLS_KX_ECDHE_PSK, - GNUTLS_MAC_SHA384, GNUTLS_TLS1, + "TLS_ECDHE_PSK_WITH_NULL_SHA384", GNUTLS_CIPHER_NULL, + GNUTLS_KX_ECDHE_PSK, GNUTLS_MAC_SHA384, GNUTLS_TLS1, GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), ENTRY(GNUTLS_ECDHE_PSK_CAMELLIA_128_CBC_SHA256, "TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256", GNUTLS_CIPHER_CAMELLIA_128_CBC, GNUTLS_KX_ECDHE_PSK, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_ECDHE_PSK_CAMELLIA_256_CBC_SHA384, "TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384", GNUTLS_CIPHER_CAMELLIA_256_CBC, GNUTLS_KX_ECDHE_PSK, - GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, GNUTLS_DTLS1_2, + GNUTLS_MAC_SHA384), /* PSK */ ENTRY(GNUTLS_PSK_ARCFOUR_128_SHA1, "TLS_PSK_WITH_RC4_128_SHA", - GNUTLS_CIPHER_ARCFOUR, GNUTLS_KX_PSK, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, - GNUTLS_VERSION_UNKNOWN), + GNUTLS_CIPHER_ARCFOUR, GNUTLS_KX_PSK, GNUTLS_MAC_SHA1, + GNUTLS_SSL3, GNUTLS_VERSION_UNKNOWN), ENTRY(GNUTLS_PSK_3DES_EDE_CBC_SHA1, "TLS_PSK_WITH_3DES_EDE_CBC_SHA", - GNUTLS_CIPHER_3DES_CBC, GNUTLS_KX_PSK, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, - GNUTLS_DTLS_VERSION_MIN), + GNUTLS_CIPHER_3DES_CBC, GNUTLS_KX_PSK, GNUTLS_MAC_SHA1, + GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_PSK_AES_128_CBC_SHA1, "TLS_PSK_WITH_AES_128_CBC_SHA", - GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_PSK, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, - GNUTLS_DTLS_VERSION_MIN), + GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_PSK, GNUTLS_MAC_SHA1, + GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_PSK_AES_256_CBC_SHA1, "TLS_PSK_WITH_AES_256_CBC_SHA", - GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_PSK, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, - GNUTLS_DTLS_VERSION_MIN), + GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_PSK, GNUTLS_MAC_SHA1, + GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_PSK_AES_128_CBC_SHA256, "TLS_PSK_WITH_AES_128_CBC_SHA256", - GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_PSK, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_PSK, GNUTLS_MAC_SHA256, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_PSK_AES_256_GCM_SHA384, - "TLS_PSK_WITH_AES_256_GCM_SHA384", - GNUTLS_CIPHER_AES_256_GCM, GNUTLS_KX_PSK, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + "TLS_PSK_WITH_AES_256_GCM_SHA384", GNUTLS_CIPHER_AES_256_GCM, + GNUTLS_KX_PSK, GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2, + GNUTLS_MAC_SHA384), ENTRY(GNUTLS_PSK_CAMELLIA_128_GCM_SHA256, "TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256", - GNUTLS_CIPHER_CAMELLIA_128_GCM, GNUTLS_KX_PSK, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_CAMELLIA_128_GCM, GNUTLS_KX_PSK, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_PSK_CAMELLIA_256_GCM_SHA384, "TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384", GNUTLS_CIPHER_CAMELLIA_256_GCM, GNUTLS_KX_PSK, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2, + GNUTLS_MAC_SHA384), ENTRY(GNUTLS_PSK_AES_128_GCM_SHA256, "TLS_PSK_WITH_AES_128_GCM_SHA256", - GNUTLS_CIPHER_AES_128_GCM, GNUTLS_KX_PSK, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), - ENTRY(GNUTLS_PSK_NULL_SHA1, "TLS_PSK_WITH_NULL_SHA", - GNUTLS_CIPHER_NULL, GNUTLS_KX_PSK, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + GNUTLS_CIPHER_AES_128_GCM, GNUTLS_KX_PSK, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), + ENTRY(GNUTLS_PSK_NULL_SHA1, "TLS_PSK_WITH_NULL_SHA", GNUTLS_CIPHER_NULL, + GNUTLS_KX_PSK, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_PSK_NULL_SHA256, "TLS_PSK_WITH_NULL_SHA256", - GNUTLS_CIPHER_NULL, GNUTLS_KX_PSK, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_NULL, GNUTLS_KX_PSK, GNUTLS_MAC_SHA256, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_PSK_CAMELLIA_128_CBC_SHA256, "TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256", - GNUTLS_CIPHER_CAMELLIA_128_CBC, GNUTLS_KX_PSK, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_CAMELLIA_128_CBC, GNUTLS_KX_PSK, GNUTLS_MAC_SHA256, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_PSK_CAMELLIA_256_CBC_SHA384, "TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384", GNUTLS_CIPHER_CAMELLIA_256_CBC, GNUTLS_KX_PSK, - GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, GNUTLS_DTLS1_2, + GNUTLS_MAC_SHA384), ENTRY_PRF(GNUTLS_PSK_AES_256_CBC_SHA384, - "TLS_PSK_WITH_AES_256_CBC_SHA384", - GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_PSK, - GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, + "TLS_PSK_WITH_AES_256_CBC_SHA384", GNUTLS_CIPHER_AES_256_CBC, + GNUTLS_KX_PSK, GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), ENTRY_PRF(GNUTLS_PSK_NULL_SHA384, "TLS_PSK_WITH_NULL_SHA384", - GNUTLS_CIPHER_NULL, GNUTLS_KX_PSK, - GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_CIPHER_NULL, GNUTLS_KX_PSK, GNUTLS_MAC_SHA384, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), /* RSA-PSK */ ENTRY(GNUTLS_RSA_PSK_ARCFOUR_128_SHA1, "TLS_RSA_PSK_WITH_RC4_128_SHA", - GNUTLS_CIPHER_ARCFOUR, GNUTLS_KX_RSA_PSK, - GNUTLS_MAC_SHA1, GNUTLS_TLS1, - GNUTLS_VERSION_UNKNOWN), + GNUTLS_CIPHER_ARCFOUR, GNUTLS_KX_RSA_PSK, GNUTLS_MAC_SHA1, + GNUTLS_TLS1, GNUTLS_VERSION_UNKNOWN), ENTRY(GNUTLS_RSA_PSK_3DES_EDE_CBC_SHA1, - "TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA", - GNUTLS_CIPHER_3DES_CBC, GNUTLS_KX_RSA_PSK, - GNUTLS_MAC_SHA1, GNUTLS_TLS1, + "TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA", GNUTLS_CIPHER_3DES_CBC, + GNUTLS_KX_RSA_PSK, GNUTLS_MAC_SHA1, GNUTLS_TLS1, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_RSA_PSK_AES_128_CBC_SHA1, - "TLS_RSA_PSK_WITH_AES_128_CBC_SHA", - GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_RSA_PSK, - GNUTLS_MAC_SHA1, GNUTLS_TLS1, + "TLS_RSA_PSK_WITH_AES_128_CBC_SHA", GNUTLS_CIPHER_AES_128_CBC, + GNUTLS_KX_RSA_PSK, GNUTLS_MAC_SHA1, GNUTLS_TLS1, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_RSA_PSK_AES_256_CBC_SHA1, - "TLS_RSA_PSK_WITH_AES_256_CBC_SHA", - GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_RSA_PSK, - GNUTLS_MAC_SHA1, GNUTLS_TLS1, + "TLS_RSA_PSK_WITH_AES_256_CBC_SHA", GNUTLS_CIPHER_AES_256_CBC, + GNUTLS_KX_RSA_PSK, GNUTLS_MAC_SHA1, GNUTLS_TLS1, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_RSA_PSK_CAMELLIA_128_GCM_SHA256, "TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256", GNUTLS_CIPHER_CAMELLIA_128_GCM, GNUTLS_KX_RSA_PSK, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_RSA_PSK_CAMELLIA_256_GCM_SHA384, "TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384", GNUTLS_CIPHER_CAMELLIA_256_GCM, GNUTLS_KX_RSA_PSK, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2, + GNUTLS_MAC_SHA384), ENTRY(GNUTLS_RSA_PSK_AES_128_GCM_SHA256, - "TLS_RSA_PSK_WITH_AES_128_GCM_SHA256", - GNUTLS_CIPHER_AES_128_GCM, GNUTLS_KX_RSA_PSK, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, + "TLS_RSA_PSK_WITH_AES_128_GCM_SHA256", GNUTLS_CIPHER_AES_128_GCM, + GNUTLS_KX_RSA_PSK, GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_RSA_PSK_AES_128_CBC_SHA256, - "TLS_RSA_PSK_WITH_AES_128_CBC_SHA256", - GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_RSA_PSK, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, + "TLS_RSA_PSK_WITH_AES_128_CBC_SHA256", GNUTLS_CIPHER_AES_128_CBC, + GNUTLS_KX_RSA_PSK, GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_RSA_PSK_NULL_SHA1, "TLS_RSA_PSK_WITH_NULL_SHA", - GNUTLS_CIPHER_NULL, GNUTLS_KX_RSA_PSK, - GNUTLS_MAC_SHA1, GNUTLS_TLS1, - GNUTLS_DTLS_VERSION_MIN), + GNUTLS_CIPHER_NULL, GNUTLS_KX_RSA_PSK, GNUTLS_MAC_SHA1, + GNUTLS_TLS1, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_RSA_PSK_NULL_SHA256, "TLS_RSA_PSK_WITH_NULL_SHA256", - GNUTLS_CIPHER_NULL, GNUTLS_KX_RSA_PSK, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_NULL, GNUTLS_KX_RSA_PSK, GNUTLS_MAC_SHA256, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_RSA_PSK_AES_256_GCM_SHA384, "TLS_RSA_PSK_WITH_AES_256_GCM_SHA384", - GNUTLS_CIPHER_AES_256_GCM, GNUTLS_KX_RSA_PSK, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_CIPHER_AES_256_GCM, GNUTLS_KX_RSA_PSK, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), ENTRY_PRF(GNUTLS_RSA_PSK_AES_256_CBC_SHA384, "TLS_RSA_PSK_WITH_AES_256_CBC_SHA384", GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_RSA_PSK, - GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, GNUTLS_DTLS1_2, + GNUTLS_MAC_SHA384), ENTRY_PRF(GNUTLS_RSA_PSK_NULL_SHA384, "TLS_RSA_PSK_WITH_NULL_SHA384", - GNUTLS_CIPHER_NULL, GNUTLS_KX_RSA_PSK, - GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_CIPHER_NULL, GNUTLS_KX_RSA_PSK, GNUTLS_MAC_SHA384, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), ENTRY(GNUTLS_RSA_PSK_CAMELLIA_128_CBC_SHA256, "TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256", GNUTLS_CIPHER_CAMELLIA_128_CBC, GNUTLS_KX_RSA_PSK, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_RSA_PSK_CAMELLIA_256_CBC_SHA384, "TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384", GNUTLS_CIPHER_CAMELLIA_256_CBC, GNUTLS_KX_RSA_PSK, - GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, GNUTLS_DTLS1_2, + GNUTLS_MAC_SHA384), /* DHE-PSK */ ENTRY(GNUTLS_DHE_PSK_ARCFOUR_128_SHA1, "TLS_DHE_PSK_WITH_RC4_128_SHA", - GNUTLS_CIPHER_ARCFOUR, GNUTLS_KX_DHE_PSK, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, - GNUTLS_VERSION_UNKNOWN), + GNUTLS_CIPHER_ARCFOUR, GNUTLS_KX_DHE_PSK, GNUTLS_MAC_SHA1, + GNUTLS_SSL3, GNUTLS_VERSION_UNKNOWN), ENTRY(GNUTLS_DHE_PSK_3DES_EDE_CBC_SHA1, - "TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA", - GNUTLS_CIPHER_3DES_CBC, GNUTLS_KX_DHE_PSK, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA", GNUTLS_CIPHER_3DES_CBC, + GNUTLS_KX_DHE_PSK, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_DHE_PSK_AES_128_CBC_SHA1, - "TLS_DHE_PSK_WITH_AES_128_CBC_SHA", - GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_DHE_PSK, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_DHE_PSK_WITH_AES_128_CBC_SHA", GNUTLS_CIPHER_AES_128_CBC, + GNUTLS_KX_DHE_PSK, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_DHE_PSK_AES_256_CBC_SHA1, - "TLS_DHE_PSK_WITH_AES_256_CBC_SHA", - GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_DHE_PSK, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_DHE_PSK_WITH_AES_256_CBC_SHA", GNUTLS_CIPHER_AES_256_CBC, + GNUTLS_KX_DHE_PSK, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_DHE_PSK_AES_128_CBC_SHA256, - "TLS_DHE_PSK_WITH_AES_128_CBC_SHA256", - GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_DHE_PSK, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, + "TLS_DHE_PSK_WITH_AES_128_CBC_SHA256", GNUTLS_CIPHER_AES_128_CBC, + GNUTLS_KX_DHE_PSK, GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_DHE_PSK_AES_128_GCM_SHA256, - "TLS_DHE_PSK_WITH_AES_128_GCM_SHA256", - GNUTLS_CIPHER_AES_128_GCM, GNUTLS_KX_DHE_PSK, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, + "TLS_DHE_PSK_WITH_AES_128_GCM_SHA256", GNUTLS_CIPHER_AES_128_GCM, + GNUTLS_KX_DHE_PSK, GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_DHE_PSK_NULL_SHA1, "TLS_DHE_PSK_WITH_NULL_SHA", - GNUTLS_CIPHER_NULL, GNUTLS_KX_DHE_PSK, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, - GNUTLS_DTLS_VERSION_MIN), + GNUTLS_CIPHER_NULL, GNUTLS_KX_DHE_PSK, GNUTLS_MAC_SHA1, + GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_DHE_PSK_NULL_SHA256, "TLS_DHE_PSK_WITH_NULL_SHA256", - GNUTLS_CIPHER_NULL, GNUTLS_KX_DHE_PSK, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_NULL, GNUTLS_KX_DHE_PSK, GNUTLS_MAC_SHA256, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_DHE_PSK_NULL_SHA384, "TLS_DHE_PSK_WITH_NULL_SHA384", - GNUTLS_CIPHER_NULL, GNUTLS_KX_DHE_PSK, - GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_CIPHER_NULL, GNUTLS_KX_DHE_PSK, GNUTLS_MAC_SHA384, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), ENTRY_PRF(GNUTLS_DHE_PSK_AES_256_CBC_SHA384, "TLS_DHE_PSK_WITH_AES_256_CBC_SHA384", GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_DHE_PSK, - GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, GNUTLS_DTLS1_2, + GNUTLS_MAC_SHA384), ENTRY_PRF(GNUTLS_DHE_PSK_AES_256_GCM_SHA384, "TLS_DHE_PSK_WITH_AES_256_GCM_SHA384", - GNUTLS_CIPHER_AES_256_GCM, GNUTLS_KX_DHE_PSK, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_CIPHER_AES_256_GCM, GNUTLS_KX_DHE_PSK, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), ENTRY(GNUTLS_DHE_PSK_CAMELLIA_128_CBC_SHA256, "TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256", GNUTLS_CIPHER_CAMELLIA_128_CBC, GNUTLS_KX_DHE_PSK, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_DHE_PSK_CAMELLIA_256_CBC_SHA384, "TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384", GNUTLS_CIPHER_CAMELLIA_256_CBC, GNUTLS_KX_DHE_PSK, - GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_MAC_SHA384, GNUTLS_TLS1_2, GNUTLS_DTLS1_2, + GNUTLS_MAC_SHA384), ENTRY(GNUTLS_DHE_PSK_CAMELLIA_128_GCM_SHA256, "TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256", GNUTLS_CIPHER_CAMELLIA_128_GCM, GNUTLS_KX_DHE_PSK, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_DHE_PSK_CAMELLIA_256_GCM_SHA384, "TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384", GNUTLS_CIPHER_CAMELLIA_256_GCM, GNUTLS_KX_DHE_PSK, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2, + GNUTLS_MAC_SHA384), ENTRY(GNUTLS_PSK_AES_128_CCM, "TLS_PSK_WITH_AES_128_CCM", - GNUTLS_CIPHER_AES_128_CCM, GNUTLS_KX_PSK, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_AES_128_CCM, GNUTLS_KX_PSK, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_PSK_AES_256_CCM, "TLS_PSK_WITH_AES_256_CCM", - GNUTLS_CIPHER_AES_256_CCM, GNUTLS_KX_PSK, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_AES_256_CCM, GNUTLS_KX_PSK, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_DHE_PSK_AES_128_CCM, "TLS_DHE_PSK_WITH_AES_128_CCM", - GNUTLS_CIPHER_AES_128_CCM, GNUTLS_KX_DHE_PSK, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_AES_128_CCM, GNUTLS_KX_DHE_PSK, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_DHE_PSK_AES_256_CCM, "TLS_DHE_PSK_WITH_AES_256_CCM", - GNUTLS_CIPHER_AES_256_CCM, GNUTLS_KX_DHE_PSK, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_AES_256_CCM, GNUTLS_KX_DHE_PSK, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_PSK_AES_128_CCM_8, "TLS_PSK_WITH_AES_128_CCM_8", - GNUTLS_CIPHER_AES_128_CCM_8, GNUTLS_KX_PSK, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_AES_128_CCM_8, GNUTLS_KX_PSK, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_PSK_AES_256_CCM_8, "TLS_PSK_WITH_AES_256_CCM_8", - GNUTLS_CIPHER_AES_256_CCM_8, GNUTLS_KX_PSK, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_AES_256_CCM_8, GNUTLS_KX_PSK, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_DHE_PSK_AES_128_CCM_8, "TLS_PSK_DHE_WITH_AES_128_CCM_8", - GNUTLS_CIPHER_AES_128_CCM_8, GNUTLS_KX_DHE_PSK, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_AES_128_CCM_8, GNUTLS_KX_DHE_PSK, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_DHE_PSK_AES_256_CCM_8, "TLS_PSK_DHE_WITH_AES_256_CCM_8", - GNUTLS_CIPHER_AES_256_CCM_8, GNUTLS_KX_DHE_PSK, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_AES_256_CCM_8, GNUTLS_KX_DHE_PSK, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_DHE_PSK_CHACHA20_POLY1305, "TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256", GNUTLS_CIPHER_CHACHA20_POLY1305, GNUTLS_KX_DHE_PSK, @@ -1140,164 +1578,133 @@ static const gnutls_cipher_suite_entry_st cs_algorithms[] = { ENTRY(GNUTLS_PSK_CHACHA20_POLY1305, "TLS_PSK_WITH_CHACHA20_POLY1305_SHA256", - GNUTLS_CIPHER_CHACHA20_POLY1305, GNUTLS_KX_PSK, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), + GNUTLS_CIPHER_CHACHA20_POLY1305, GNUTLS_KX_PSK, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2), #endif #ifdef ENABLE_ANON /* DH_ANON */ ENTRY(GNUTLS_DH_ANON_ARCFOUR_128_MD5, "TLS_DH_anon_WITH_RC4_128_MD5", - GNUTLS_CIPHER_ARCFOUR_128, - GNUTLS_KX_ANON_DH, GNUTLS_MAC_MD5, + GNUTLS_CIPHER_ARCFOUR_128, GNUTLS_KX_ANON_DH, GNUTLS_MAC_MD5, GNUTLS_SSL3, GNUTLS_VERSION_UNKNOWN), ENTRY(GNUTLS_DH_ANON_3DES_EDE_CBC_SHA1, - "TLS_DH_anon_WITH_3DES_EDE_CBC_SHA", - GNUTLS_CIPHER_3DES_CBC, GNUTLS_KX_ANON_DH, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_DH_anon_WITH_3DES_EDE_CBC_SHA", GNUTLS_CIPHER_3DES_CBC, + GNUTLS_KX_ANON_DH, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_DH_ANON_AES_128_CBC_SHA1, - "TLS_DH_anon_WITH_AES_128_CBC_SHA", - GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_ANON_DH, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_DH_anon_WITH_AES_128_CBC_SHA", GNUTLS_CIPHER_AES_128_CBC, + GNUTLS_KX_ANON_DH, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_DH_ANON_AES_256_CBC_SHA1, - "TLS_DH_anon_WITH_AES_256_CBC_SHA", - GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_ANON_DH, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_DH_anon_WITH_AES_256_CBC_SHA", GNUTLS_CIPHER_AES_256_CBC, + GNUTLS_KX_ANON_DH, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_DH_ANON_CAMELLIA_128_CBC_SHA256, "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256", - GNUTLS_CIPHER_CAMELLIA_128_CBC, - GNUTLS_KX_ANON_DH, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_CAMELLIA_128_CBC, GNUTLS_KX_ANON_DH, + GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_DH_ANON_CAMELLIA_256_CBC_SHA256, "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256", - GNUTLS_CIPHER_CAMELLIA_256_CBC, - GNUTLS_KX_ANON_DH, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_CIPHER_CAMELLIA_256_CBC, GNUTLS_KX_ANON_DH, + GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_DH_ANON_CAMELLIA_128_CBC_SHA1, "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA", - GNUTLS_CIPHER_CAMELLIA_128_CBC, - GNUTLS_KX_ANON_DH, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, - GNUTLS_DTLS_VERSION_MIN), + GNUTLS_CIPHER_CAMELLIA_128_CBC, GNUTLS_KX_ANON_DH, + GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_DH_ANON_CAMELLIA_256_CBC_SHA1, "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA", - GNUTLS_CIPHER_CAMELLIA_256_CBC, - GNUTLS_KX_ANON_DH, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, - GNUTLS_DTLS_VERSION_MIN), + GNUTLS_CIPHER_CAMELLIA_256_CBC, GNUTLS_KX_ANON_DH, + GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_DH_ANON_AES_128_CBC_SHA256, - "TLS_DH_anon_WITH_AES_128_CBC_SHA256", - GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_ANON_DH, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, + "TLS_DH_anon_WITH_AES_128_CBC_SHA256", GNUTLS_CIPHER_AES_128_CBC, + GNUTLS_KX_ANON_DH, GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_DH_ANON_AES_256_CBC_SHA256, - "TLS_DH_anon_WITH_AES_256_CBC_SHA256", - GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_ANON_DH, - GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, + "TLS_DH_anon_WITH_AES_256_CBC_SHA256", GNUTLS_CIPHER_AES_256_CBC, + GNUTLS_KX_ANON_DH, GNUTLS_MAC_SHA256, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY(GNUTLS_DH_ANON_AES_128_GCM_SHA256, - "TLS_DH_anon_WITH_AES_128_GCM_SHA256", - GNUTLS_CIPHER_AES_128_GCM, GNUTLS_KX_ANON_DH, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, + "TLS_DH_anon_WITH_AES_128_GCM_SHA256", GNUTLS_CIPHER_AES_128_GCM, + GNUTLS_KX_ANON_DH, GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_DH_ANON_AES_256_GCM_SHA384, "TLS_DH_anon_WITH_AES_256_GCM_SHA384", - GNUTLS_CIPHER_AES_256_GCM, GNUTLS_KX_ANON_DH, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_CIPHER_AES_256_GCM, GNUTLS_KX_ANON_DH, GNUTLS_MAC_AEAD, + GNUTLS_TLS1_2, GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), ENTRY(GNUTLS_DH_ANON_CAMELLIA_128_GCM_SHA256, "TLS_DH_anon_WITH_CAMELLIA_128_GCM_SHA256", GNUTLS_CIPHER_CAMELLIA_128_GCM, GNUTLS_KX_ANON_DH, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2), + GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2), ENTRY_PRF(GNUTLS_DH_ANON_CAMELLIA_256_GCM_SHA384, "TLS_DH_anon_WITH_CAMELLIA_256_GCM_SHA384", GNUTLS_CIPHER_CAMELLIA_256_GCM, GNUTLS_KX_ANON_DH, - GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, - GNUTLS_DTLS1_2, GNUTLS_MAC_SHA384), + GNUTLS_MAC_AEAD, GNUTLS_TLS1_2, GNUTLS_DTLS1_2, + GNUTLS_MAC_SHA384), -/* ECC-ANON */ + /* ECC-ANON */ ENTRY(GNUTLS_ECDH_ANON_NULL_SHA1, "TLS_ECDH_anon_WITH_NULL_SHA", - GNUTLS_CIPHER_NULL, GNUTLS_KX_ANON_ECDH, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, - GNUTLS_DTLS_VERSION_MIN), + GNUTLS_CIPHER_NULL, GNUTLS_KX_ANON_ECDH, GNUTLS_MAC_SHA1, + GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_ECDH_ANON_3DES_EDE_CBC_SHA1, - "TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA", - GNUTLS_CIPHER_3DES_CBC, GNUTLS_KX_ANON_ECDH, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA", GNUTLS_CIPHER_3DES_CBC, + GNUTLS_KX_ANON_ECDH, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_ECDH_ANON_AES_128_CBC_SHA1, - "TLS_ECDH_anon_WITH_AES_128_CBC_SHA", - GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_ANON_ECDH, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_ECDH_anon_WITH_AES_128_CBC_SHA", GNUTLS_CIPHER_AES_128_CBC, + GNUTLS_KX_ANON_ECDH, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_ECDH_ANON_AES_256_CBC_SHA1, - "TLS_ECDH_anon_WITH_AES_256_CBC_SHA", - GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_ANON_ECDH, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_ECDH_anon_WITH_AES_256_CBC_SHA", GNUTLS_CIPHER_AES_256_CBC, + GNUTLS_KX_ANON_ECDH, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_ECDH_ANON_ARCFOUR_128_SHA1, - "TLS_ECDH_anon_WITH_RC4_128_SHA", - GNUTLS_CIPHER_ARCFOUR, GNUTLS_KX_ANON_ECDH, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_ECDH_anon_WITH_RC4_128_SHA", GNUTLS_CIPHER_ARCFOUR, + GNUTLS_KX_ANON_ECDH, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_VERSION_UNKNOWN), #endif #ifdef ENABLE_SRP /* SRP */ ENTRY(GNUTLS_SRP_SHA_3DES_EDE_CBC_SHA1, - "TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA", - GNUTLS_CIPHER_3DES_CBC, GNUTLS_KX_SRP, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA", GNUTLS_CIPHER_3DES_CBC, + GNUTLS_KX_SRP, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_SRP_SHA_AES_128_CBC_SHA1, - "TLS_SRP_SHA_WITH_AES_128_CBC_SHA", - GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_SRP, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_SRP_SHA_WITH_AES_128_CBC_SHA", GNUTLS_CIPHER_AES_128_CBC, + GNUTLS_KX_SRP, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_SRP_SHA_AES_256_CBC_SHA1, - "TLS_SRP_SHA_WITH_AES_256_CBC_SHA", - GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_SRP, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_SRP_SHA_WITH_AES_256_CBC_SHA", GNUTLS_CIPHER_AES_256_CBC, + GNUTLS_KX_SRP, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_SRP_SHA_DSS_3DES_EDE_CBC_SHA1, - "TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA", - GNUTLS_CIPHER_3DES_CBC, GNUTLS_KX_SRP_DSS, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA", GNUTLS_CIPHER_3DES_CBC, + GNUTLS_KX_SRP_DSS, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_SRP_SHA_RSA_3DES_EDE_CBC_SHA1, - "TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA", - GNUTLS_CIPHER_3DES_CBC, GNUTLS_KX_SRP_RSA, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA", GNUTLS_CIPHER_3DES_CBC, + GNUTLS_KX_SRP_RSA, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_SRP_SHA_DSS_AES_128_CBC_SHA1, - "TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA", - GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_SRP_DSS, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA", GNUTLS_CIPHER_AES_128_CBC, + GNUTLS_KX_SRP_DSS, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_SRP_SHA_RSA_AES_128_CBC_SHA1, - "TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA", - GNUTLS_CIPHER_AES_128_CBC, GNUTLS_KX_SRP_RSA, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA", GNUTLS_CIPHER_AES_128_CBC, + GNUTLS_KX_SRP_RSA, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_SRP_SHA_DSS_AES_256_CBC_SHA1, - "TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA", - GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_SRP_DSS, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA", GNUTLS_CIPHER_AES_256_CBC, + GNUTLS_KX_SRP_DSS, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), ENTRY(GNUTLS_SRP_SHA_RSA_AES_256_CBC_SHA1, - "TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA", - GNUTLS_CIPHER_AES_256_CBC, GNUTLS_KX_SRP_RSA, - GNUTLS_MAC_SHA1, GNUTLS_SSL3, + "TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA", GNUTLS_CIPHER_AES_256_CBC, + GNUTLS_KX_SRP_RSA, GNUTLS_MAC_SHA1, GNUTLS_SSL3, GNUTLS_DTLS_VERSION_MIN), #endif @@ -1309,15 +1716,23 @@ static const gnutls_cipher_suite_entry_st cs_algorithms[] = { GNUTLS_VERSION_UNKNOWN, GNUTLS_MAC_STREEBOG_256), #endif - {0, {0, 0}, 0, 0, 0, 0, 0, 0} + { 0, { 0, 0 }, 0, 0, 0, 0, 0, 0 } }; -#define CIPHER_SUITE_LOOP(b) { \ - const gnutls_cipher_suite_entry_st *p; \ - for(p = cs_algorithms; p->name != NULL; p++) { b ; } } +#define CIPHER_SUITE_LOOP(b) \ + { \ + const gnutls_cipher_suite_entry_st *p; \ + for (p = cs_algorithms; p->name != NULL; p++) { \ + b; \ + } \ + } -#define CIPHER_SUITE_ALG_LOOP(a, suite) \ - CIPHER_SUITE_LOOP( if( (p->id[0] == suite[0]) && (p->id[1] == suite[1])) { a; break; } ) +#define CIPHER_SUITE_ALG_LOOP(a, suite) \ + CIPHER_SUITE_LOOP( \ + if ((p->id[0] == suite[0]) && (p->id[1] == suite[1])) { \ + a; \ + break; \ + }) /* Cipher Suite's functions */ const gnutls_cipher_suite_entry_st *ciphersuite_to_entry(const uint8_t suite[2]) @@ -1332,7 +1747,6 @@ gnutls_kx_algorithm_t _gnutls_cipher_suite_get_kx_algo(const uint8_t suite[2]) CIPHER_SUITE_ALG_LOOP(ret = p->kx_algorithm, suite); return ret; - } const char *_gnutls_cipher_suite_get_name(const uint8_t suite[2]) @@ -1345,18 +1759,19 @@ const char *_gnutls_cipher_suite_get_name(const uint8_t suite[2]) return ret; } -const gnutls_cipher_suite_entry_st - * cipher_suite_get(gnutls_kx_algorithm_t kx_algorithm, - gnutls_cipher_algorithm_t cipher_algorithm, - gnutls_mac_algorithm_t mac_algorithm) +const gnutls_cipher_suite_entry_st * +cipher_suite_get(gnutls_kx_algorithm_t kx_algorithm, + gnutls_cipher_algorithm_t cipher_algorithm, + gnutls_mac_algorithm_t mac_algorithm) { const gnutls_cipher_suite_entry_st *ret = NULL; CIPHER_SUITE_LOOP(if (kx_algorithm == p->kx_algorithm && - cipher_algorithm == p->block_algorithm - && mac_algorithm == p->mac_algorithm) { - ret = p; break;} - ) ; + cipher_algorithm == p->block_algorithm && + mac_algorithm == p->mac_algorithm) { + ret = p; + break; + }); return ret; } @@ -1364,9 +1779,9 @@ const gnutls_cipher_suite_entry_st /* Returns 0 if the given KX has not the corresponding parameters * (DH or RSA) set up. Otherwise returns 1. */ -static unsigned -check_server_dh_params(gnutls_session_t session, - unsigned cred_type, gnutls_kx_algorithm_t kx) +static unsigned check_server_dh_params(gnutls_session_t session, + unsigned cred_type, + gnutls_kx_algorithm_t kx) { unsigned have_dh_params = 0; @@ -1385,41 +1800,41 @@ check_server_dh_params(gnutls_session_t session, */ if (cred_type == GNUTLS_CRD_CERTIFICATE) { gnutls_certificate_credentials_t x509_cred = - (gnutls_certificate_credentials_t) - _gnutls_get_cred(session, cred_type); + (gnutls_certificate_credentials_t)_gnutls_get_cred( + session, cred_type); - if (x509_cred != NULL - && (x509_cred->dh_params || x509_cred->params_func - || x509_cred->dh_sec_param)) { + if (x509_cred != NULL && + (x509_cred->dh_params || x509_cred->params_func || + x509_cred->dh_sec_param)) { have_dh_params = 1; } #ifdef ENABLE_ANON } else if (cred_type == GNUTLS_CRD_ANON) { gnutls_anon_server_credentials_t anon_cred = - (gnutls_anon_server_credentials_t) - _gnutls_get_cred(session, cred_type); + (gnutls_anon_server_credentials_t)_gnutls_get_cred( + session, cred_type); - if (anon_cred != NULL - && (anon_cred->dh_params || anon_cred->params_func - || anon_cred->dh_sec_param)) { + if (anon_cred != NULL && + (anon_cred->dh_params || anon_cred->params_func || + anon_cred->dh_sec_param)) { have_dh_params = 1; } #endif #ifdef ENABLE_PSK } else if (cred_type == GNUTLS_CRD_PSK) { gnutls_psk_server_credentials_t psk_cred = - (gnutls_psk_server_credentials_t) - _gnutls_get_cred(session, cred_type); + (gnutls_psk_server_credentials_t)_gnutls_get_cred( + session, cred_type); - if (psk_cred != NULL - && (psk_cred->dh_params || psk_cred->params_func - || psk_cred->dh_sec_param)) { + if (psk_cred != NULL && + (psk_cred->dh_params || psk_cred->params_func || + psk_cred->dh_sec_param)) { have_dh_params = 1; } #endif } else { - return 1; /* no need for params */ + return 1; /* no need for params */ } return have_dh_params; @@ -1441,11 +1856,10 @@ check_server_dh_params(gnutls_session_t session, * Returns: a string that contains the name of a TLS cipher suite, * specified by the given algorithms, or %NULL. **/ -const char *gnutls_cipher_suite_get_name(gnutls_kx_algorithm_t - kx_algorithm, - gnutls_cipher_algorithm_t - cipher_algorithm, - gnutls_mac_algorithm_t mac_algorithm) +const char * +gnutls_cipher_suite_get_name(gnutls_kx_algorithm_t kx_algorithm, + gnutls_cipher_algorithm_t cipher_algorithm, + gnutls_mac_algorithm_t mac_algorithm) { const gnutls_cipher_suite_entry_st *ce; @@ -1468,11 +1882,10 @@ const char *gnutls_cipher_suite_get_name(gnutls_kx_algorithm_t * * Returns: 0 on success or a negative error code otherwise. -*/ -int -_gnutls_cipher_suite_get_id(gnutls_kx_algorithm_t kx_algorithm, - gnutls_cipher_algorithm_t cipher_algorithm, - gnutls_mac_algorithm_t mac_algorithm, - uint8_t suite[2]) +int _gnutls_cipher_suite_get_id(gnutls_kx_algorithm_t kx_algorithm, + gnutls_cipher_algorithm_t cipher_algorithm, + gnutls_mac_algorithm_t mac_algorithm, + uint8_t suite[2]) { const gnutls_cipher_suite_entry_st *ce; @@ -1504,12 +1917,11 @@ _gnutls_cipher_suite_get_id(gnutls_kx_algorithm_t kx_algorithm, * about the cipher suite in the output variables. If @idx is out of * bounds, %NULL is returned. **/ -const char *gnutls_cipher_suite_info(size_t idx, - unsigned char *cs_id, - gnutls_kx_algorithm_t * kx, - gnutls_cipher_algorithm_t * cipher, - gnutls_mac_algorithm_t * mac, - gnutls_protocol_t * min_version) +const char *gnutls_cipher_suite_info(size_t idx, unsigned char *cs_id, + gnutls_kx_algorithm_t *kx, + gnutls_cipher_algorithm_t *cipher, + gnutls_mac_algorithm_t *mac, + gnutls_protocol_t *min_version) { if (idx >= CIPHER_SUITES_COUNT) return NULL; @@ -1528,37 +1940,38 @@ const char *gnutls_cipher_suite_info(size_t idx, return cs_algorithms[idx].name + sizeof("GNU") - 1; } -#define VERSION_CHECK(entry) \ - if (is_dtls) { \ - if (entry->min_dtls_version == GNUTLS_VERSION_UNKNOWN || \ - version->id < entry->min_dtls_version || \ - version->id > entry->max_dtls_version) \ - continue; \ - } else { \ - if (entry->min_version == GNUTLS_VERSION_UNKNOWN || \ - version->id < entry->min_version || \ - version->id > entry->max_version) \ - continue; \ - } +#define VERSION_CHECK(entry) \ + if (is_dtls) { \ + if (entry->min_dtls_version == GNUTLS_VERSION_UNKNOWN || \ + version->id < entry->min_dtls_version || \ + version->id > entry->max_dtls_version) \ + continue; \ + } else { \ + if (entry->min_version == GNUTLS_VERSION_UNKNOWN || \ + version->id < entry->min_version || \ + version->id > entry->max_version) \ + continue; \ + } -#define CIPHER_CHECK(algo) \ - if (session->internals.priorities->force_etm && !have_etm) { \ - const cipher_entry_st *_cipher; \ - _cipher = cipher_to_entry(algo); \ - if (_cipher == NULL || _gnutls_cipher_type(_cipher) == CIPHER_BLOCK) \ - continue; \ - } +#define CIPHER_CHECK(algo) \ + if (session->internals.priorities->force_etm && !have_etm) { \ + const cipher_entry_st *_cipher; \ + _cipher = cipher_to_entry(algo); \ + if (_cipher == NULL || \ + _gnutls_cipher_type(_cipher) == CIPHER_BLOCK) \ + continue; \ + } -#define KX_SRP_CHECKS(kx, action) \ +#define KX_SRP_CHECKS(kx, action) \ if (kx == GNUTLS_KX_SRP_RSA || kx == GNUTLS_KX_SRP_DSS) { \ if (!_gnutls_get_cred(session, GNUTLS_CRD_SRP)) { \ - action; \ - } \ + action; \ + } \ } static unsigned kx_is_ok(gnutls_session_t session, gnutls_kx_algorithm_t kx, unsigned cred_type, - const gnutls_group_entry_st ** sgroup) + const gnutls_group_entry_st **sgroup) { if (_gnutls_kx_is_ecc(kx)) { if (session->internals.cand_ec_group == NULL) { @@ -1581,18 +1994,17 @@ static unsigned kx_is_ok(gnutls_session_t session, gnutls_kx_algorithm_t kx, } /* Called on server-side only */ -int -_gnutls_figure_common_ciphersuite(gnutls_session_t session, - const ciphersuite_list_st * peer_clist, - const gnutls_cipher_suite_entry_st ** ce) +int _gnutls_figure_common_ciphersuite(gnutls_session_t session, + const ciphersuite_list_st *peer_clist, + const gnutls_cipher_suite_entry_st **ce) { - unsigned int i, j; int ret; const version_entry_st *version = get_version(session); unsigned int is_dtls = IS_DTLS(session); gnutls_kx_algorithm_t kx; - gnutls_credentials_type_t cred_type = GNUTLS_CRD_CERTIFICATE; /* default for TLS1.3 */ + gnutls_credentials_type_t cred_type = + GNUTLS_CRD_CERTIFICATE; /* default for TLS1.3 */ const gnutls_group_entry_st *sgroup = NULL; gnutls_ext_priv_data_t epriv; unsigned have_etm = 0; @@ -1605,7 +2017,7 @@ _gnutls_figure_common_ciphersuite(gnutls_session_t session, * because we only set (security_params) EtM to true only after the ciphersuite is * negotiated. */ ret = _gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_ETM, &epriv); - if (ret >= 0 && ((intptr_t) epriv) != 0) + if (ret >= 0 && ((intptr_t)epriv) != 0) have_etm = 1; /* If we didn't receive the supported_groups extension, then @@ -1616,16 +2028,16 @@ _gnutls_figure_common_ciphersuite(gnutls_session_t session, !_gnutls_hello_ext_is_present(session, GNUTLS_EXTENSION_SUPPORTED_GROUPS)) { session->internals.cand_ec_group = - _gnutls_id_to_group(DEFAULT_EC_GROUP); + _gnutls_id_to_group(DEFAULT_EC_GROUP); } if (session->internals.priorities->server_precedence == 0) { for (i = 0; i < peer_clist->size; i++) { - _gnutls_debug_log - ("checking %.2x.%.2x (%s) for compatibility\n", - (unsigned)peer_clist->entry[i]->id[0], - (unsigned)peer_clist->entry[i]->id[1], - peer_clist->entry[i]->name); + _gnutls_debug_log( + "checking %.2x.%.2x (%s) for compatibility\n", + (unsigned)peer_clist->entry[i]->id[0], + (unsigned)peer_clist->entry[i]->id[1], + peer_clist->entry[i]->name); VERSION_CHECK(peer_clist->entry[i]); kx = peer_clist->entry[i]->kx_algorithm; @@ -1637,29 +2049,29 @@ _gnutls_figure_common_ciphersuite(gnutls_session_t session, for (j = 0; j < session->internals.priorities->cs.size; j++) { - if (session->internals.priorities-> - cs.entry[j] == peer_clist->entry[i]) { + if (session->internals.priorities->cs.entry[j] == + peer_clist->entry[i]) { sgroup = NULL; - if (!kx_is_ok - (session, kx, cred_type, &sgroup)) + if (!kx_is_ok(session, kx, cred_type, + &sgroup)) continue; /* if we have selected PSK, we need a ciphersuites which matches * the selected binder */ if (session->internals.hsk_flags & HSK_PSK_SELECTED) { - if (session->key. - binders[0].prf->id != - session-> - internals.priorities->cs. - entry[j]->prf) + if (session->key.binders[0] + .prf->id != + session->internals + .priorities->cs + .entry[j] + ->prf) continue; } else if (cred_type == GNUTLS_CRD_CERTIFICATE) { - ret = - _gnutls_select_server_cert - (session, - peer_clist->entry[i]); + ret = _gnutls_select_server_cert( + session, + peer_clist->entry[i]); if (ret < 0) { /* couldn't select cert with this ciphersuite */ gnutls_assert(); @@ -1669,8 +2081,8 @@ _gnutls_figure_common_ciphersuite(gnutls_session_t session, /* select the group based on the selected ciphersuite */ if (sgroup) - _gnutls_session_group_set - (session, sgroup); + _gnutls_session_group_set( + session, sgroup); *ce = peer_clist->entry[i]; return 0; } @@ -1678,49 +2090,49 @@ _gnutls_figure_common_ciphersuite(gnutls_session_t session, } } else { for (j = 0; j < session->internals.priorities->cs.size; j++) { - VERSION_CHECK(session->internals.priorities-> - cs.entry[j]); + VERSION_CHECK( + session->internals.priorities->cs.entry[j]); - CIPHER_CHECK(session->internals.priorities-> - cs.entry[j]->block_algorithm); + CIPHER_CHECK(session->internals.priorities->cs.entry[j] + ->block_algorithm); for (i = 0; i < peer_clist->size; i++) { - _gnutls_debug_log - ("checking %.2x.%.2x (%s) for compatibility\n", - (unsigned)peer_clist->entry[i]->id[0], - (unsigned)peer_clist->entry[i]->id[1], - peer_clist->entry[i]->name); - - if (session->internals.priorities-> - cs.entry[j] == peer_clist->entry[i]) { + _gnutls_debug_log( + "checking %.2x.%.2x (%s) for compatibility\n", + (unsigned)peer_clist->entry[i]->id[0], + (unsigned)peer_clist->entry[i]->id[1], + peer_clist->entry[i]->name); + + if (session->internals.priorities->cs.entry[j] == + peer_clist->entry[i]) { sgroup = NULL; kx = peer_clist->entry[i]->kx_algorithm; if (!version->tls13_sem) cred_type = - _gnutls_map_kx_get_cred(kx, - 1); + _gnutls_map_kx_get_cred( + kx, 1); - if (!kx_is_ok - (session, kx, cred_type, &sgroup)) + if (!kx_is_ok(session, kx, cred_type, + &sgroup)) break; /* if we have selected PSK, we need a ciphersuites which matches * the selected binder */ if (session->internals.hsk_flags & HSK_PSK_SELECTED) { - if (session->key. - binders[0].prf->id != - session-> - internals.priorities->cs. - entry[j]->prf) + if (session->key.binders[0] + .prf->id != + session->internals + .priorities->cs + .entry[j] + ->prf) break; } else if (cred_type == GNUTLS_CRD_CERTIFICATE) { - ret = - _gnutls_select_server_cert - (session, - peer_clist->entry[i]); + ret = _gnutls_select_server_cert( + session, + peer_clist->entry[i]); if (ret < 0) { /* couldn't select cert with this ciphersuite */ gnutls_assert(); @@ -1730,14 +2142,13 @@ _gnutls_figure_common_ciphersuite(gnutls_session_t session, /* select the group based on the selected ciphersuite */ if (sgroup) - _gnutls_session_group_set - (session, sgroup); + _gnutls_session_group_set( + session, sgroup); *ce = peer_clist->entry[i]; return 0; } } } - } /* nothing in common */ @@ -1745,23 +2156,21 @@ _gnutls_figure_common_ciphersuite(gnutls_session_t session, return gnutls_assert_val(GNUTLS_E_NO_CIPHER_SUITES); } -#define CLIENT_VERSION_CHECK(minver, maxver, e) \ - if (is_dtls) { \ - if (e->min_dtls_version > maxver->id) \ - continue; \ - } else { \ - if (e->min_version > maxver->id) \ - continue; \ - } +#define CLIENT_VERSION_CHECK(minver, maxver, e) \ + if (is_dtls) { \ + if (e->min_dtls_version > maxver->id) \ + continue; \ + } else { \ + if (e->min_version > maxver->id) \ + continue; \ + } #define RESERVED_CIPHERSUITES 4 -int -_gnutls_get_client_ciphersuites(gnutls_session_t session, - gnutls_buffer_st * cdata, - const version_entry_st * vmin, - unsigned add_scsv) +int _gnutls_get_client_ciphersuites(gnutls_session_t session, + gnutls_buffer_st *cdata, + const version_entry_st *vmin, + unsigned add_scsv) { - unsigned int j; int ret; unsigned int is_dtls = IS_DTLS(session); @@ -1777,32 +2186,32 @@ _gnutls_get_client_ciphersuites(gnutls_session_t session, return gnutls_assert_val(GNUTLS_E_NO_PRIORITIES_WERE_SET); for (j = 0; j < session->internals.priorities->cs.size; j++) { - CLIENT_VERSION_CHECK(vmin, vmax, - session->internals.priorities-> - cs.entry[j]); + CLIENT_VERSION_CHECK( + vmin, vmax, session->internals.priorities->cs.entry[j]); kx = session->internals.priorities->cs.entry[j]->kx_algorithm; - if (kx != GNUTLS_KX_UNKNOWN) { /* In TLS 1.3 ciphersuites don't map to credentials */ + if (kx != + GNUTLS_KX_UNKNOWN) { /* In TLS 1.3 ciphersuites don't map to credentials */ cred_type = _gnutls_map_kx_get_cred(kx, 0); - if (!session->internals.premaster_set - && _gnutls_get_cred(session, cred_type) == NULL) + if (!session->internals.premaster_set && + _gnutls_get_cred(session, cred_type) == NULL) continue; KX_SRP_CHECKS(kx, continue); } - _gnutls_debug_log("Keeping ciphersuite %.2x.%.2x (%s)\n", - (unsigned)session->internals.priorities-> - cs.entry[j]->id[0], - (unsigned)session->internals.priorities-> - cs.entry[j]->id[1], - session->internals.priorities->cs. - entry[j]->name); + _gnutls_debug_log( + "Keeping ciphersuite %.2x.%.2x (%s)\n", + (unsigned)session->internals.priorities->cs.entry[j] + ->id[0], + (unsigned)session->internals.priorities->cs.entry[j] + ->id[1], + session->internals.priorities->cs.entry[j]->name); cipher_suites[cipher_suites_size] = - session->internals.priorities->cs.entry[j]->id[0]; + session->internals.priorities->cs.entry[j]->id[0]; cipher_suites[cipher_suites_size + 1] = - session->internals.priorities->cs.entry[j]->id[1]; + session->internals.priorities->cs.entry[j]->id[1]; cipher_suites_size += 2; if (cipher_suites_size >= MAX_CIPHERSUITE_SIZE * 2) @@ -1825,13 +2234,12 @@ _gnutls_get_client_ciphersuites(gnutls_session_t session, if (session->internals.priorities->fallback) { cipher_suites[cipher_suites_size] = GNUTLS_FALLBACK_SCSV_MAJOR; cipher_suites[cipher_suites_size + 1] = - GNUTLS_FALLBACK_SCSV_MINOR; + GNUTLS_FALLBACK_SCSV_MINOR; cipher_suites_size += 2; } - ret = - _gnutls_buffer_append_data_prefix(cdata, 16, cipher_suites, - cipher_suites_size); + ret = _gnutls_buffer_append_data_prefix(cdata, 16, cipher_suites, + cipher_suites_size); if (ret < 0) return gnutls_assert_val(ret); @@ -1856,9 +2264,8 @@ _gnutls_get_client_ciphersuites(gnutls_session_t session, * * Since: 3.0.9 **/ -int -gnutls_priority_get_cipher_suite_index(gnutls_priority_t pcache, - unsigned int idx, unsigned int *sidx) +int gnutls_priority_get_cipher_suite_index(gnutls_priority_t pcache, + unsigned int idx, unsigned int *sidx) { unsigned int i, j; unsigned max_tls = 0; @@ -1873,8 +2280,8 @@ gnutls_priority_get_cipher_suite_index(gnutls_priority_t pcache, pcache->protocol.priorities[j] >= max_tls) { max_tls = pcache->protocol.priorities[j]; } else if (pcache->protocol.priorities[j] <= - GNUTLS_DTLS_VERSION_MAX - && pcache->protocol.priorities[j] >= max_dtls) { + GNUTLS_DTLS_VERSION_MAX && + pcache->protocol.priorities[j] >= max_dtls) { max_dtls = pcache->protocol.priorities[j]; } } diff --git a/lib/algorithms/ecc.c b/lib/algorithms/ecc.c index f5eadd1dbd..fe60543f84 100644 --- a/lib/algorithms/ecc.c +++ b/lib/algorithms/ecc.c @@ -33,86 +33,86 @@ static SYSTEM_CONFIG_OR_CONST gnutls_ecc_curve_entry_st ecc_curves[] = { #ifdef ENABLE_NON_SUITEB_CURVES { - .name = "SECP192R1", - .oid = "1.2.840.10045.3.1.1", - .id = GNUTLS_ECC_CURVE_SECP192R1, - .group = GNUTLS_GROUP_SECP192R1, - .pk = GNUTLS_PK_ECDSA, - .size = 24, - .supported = 1, - }, + .name = "SECP192R1", + .oid = "1.2.840.10045.3.1.1", + .id = GNUTLS_ECC_CURVE_SECP192R1, + .group = GNUTLS_GROUP_SECP192R1, + .pk = GNUTLS_PK_ECDSA, + .size = 24, + .supported = 1, + }, { - .name = "SECP224R1", - .oid = "1.3.132.0.33", - .id = GNUTLS_ECC_CURVE_SECP224R1, - .group = GNUTLS_GROUP_SECP224R1, - .pk = GNUTLS_PK_ECDSA, - .size = 28, - .supported = 1, - }, + .name = "SECP224R1", + .oid = "1.3.132.0.33", + .id = GNUTLS_ECC_CURVE_SECP224R1, + .group = GNUTLS_GROUP_SECP224R1, + .pk = GNUTLS_PK_ECDSA, + .size = 28, + .supported = 1, + }, #endif { - .name = "SECP256R1", - .oid = "1.2.840.10045.3.1.7", - .id = GNUTLS_ECC_CURVE_SECP256R1, - .group = GNUTLS_GROUP_SECP256R1, - .pk = GNUTLS_PK_ECDSA, - .size = 32, - .supported = 1, - }, + .name = "SECP256R1", + .oid = "1.2.840.10045.3.1.7", + .id = GNUTLS_ECC_CURVE_SECP256R1, + .group = GNUTLS_GROUP_SECP256R1, + .pk = GNUTLS_PK_ECDSA, + .size = 32, + .supported = 1, + }, { - .name = "SECP384R1", - .oid = "1.3.132.0.34", - .id = GNUTLS_ECC_CURVE_SECP384R1, - .group = GNUTLS_GROUP_SECP384R1, - .pk = GNUTLS_PK_ECDSA, - .size = 48, - .supported = 1, - }, + .name = "SECP384R1", + .oid = "1.3.132.0.34", + .id = GNUTLS_ECC_CURVE_SECP384R1, + .group = GNUTLS_GROUP_SECP384R1, + .pk = GNUTLS_PK_ECDSA, + .size = 48, + .supported = 1, + }, { - .name = "SECP521R1", - .oid = "1.3.132.0.35", - .id = GNUTLS_ECC_CURVE_SECP521R1, - .group = GNUTLS_GROUP_SECP521R1, - .pk = GNUTLS_PK_ECDSA, - .size = 66, - .supported = 1, - }, + .name = "SECP521R1", + .oid = "1.3.132.0.35", + .id = GNUTLS_ECC_CURVE_SECP521R1, + .group = GNUTLS_GROUP_SECP521R1, + .pk = GNUTLS_PK_ECDSA, + .size = 66, + .supported = 1, + }, { - .name = "X25519", - .oid = ECDH_X25519_OID, - .id = GNUTLS_ECC_CURVE_X25519, - .group = GNUTLS_GROUP_X25519, - .pk = GNUTLS_PK_ECDH_X25519, - .size = 32, - .supported = 1, - }, + .name = "X25519", + .oid = ECDH_X25519_OID, + .id = GNUTLS_ECC_CURVE_X25519, + .group = GNUTLS_GROUP_X25519, + .pk = GNUTLS_PK_ECDH_X25519, + .size = 32, + .supported = 1, + }, { - .name = "Ed25519", - .oid = SIG_EDDSA_SHA512_OID, - .id = GNUTLS_ECC_CURVE_ED25519, - .pk = GNUTLS_PK_EDDSA_ED25519, - .size = 32, - .sig_size = 64, - .supported = 1, - }, + .name = "Ed25519", + .oid = SIG_EDDSA_SHA512_OID, + .id = GNUTLS_ECC_CURVE_ED25519, + .pk = GNUTLS_PK_EDDSA_ED25519, + .size = 32, + .sig_size = 64, + .supported = 1, + }, { - .name = "X448", - .oid = ECDH_X448_OID, - .id = GNUTLS_ECC_CURVE_X448, - .pk = GNUTLS_PK_ECDH_X448, - .size = 56, - .supported = 1, - }, + .name = "X448", + .oid = ECDH_X448_OID, + .id = GNUTLS_ECC_CURVE_X448, + .pk = GNUTLS_PK_ECDH_X448, + .size = 56, + .supported = 1, + }, { - .name = "Ed448", - .oid = SIG_ED448_OID, - .id = GNUTLS_ECC_CURVE_ED448, - .pk = GNUTLS_PK_EDDSA_ED448, - .size = 57, - .sig_size = 114, - .supported = 1, - }, + .name = "Ed448", + .oid = SIG_ED448_OID, + .id = GNUTLS_ECC_CURVE_ED448, + .pk = GNUTLS_PK_EDDSA_ED448, + .size = 57, + .sig_size = 114, + .supported = 1, + }, #if ENABLE_GOST /* Curves for usage in GOST digital signature algorithm (GOST R * 34.10-2001/-2012) and key agreement (VKO GOST R 34.10-2001/-2012). @@ -138,132 +138,136 @@ static SYSTEM_CONFIG_OR_CONST gnutls_ecc_curve_entry_st ecc_curves[] = { * TC26 OIDs are usable only for GOST R 34.10-2012 keys. */ { - .name = "CryptoPro-A", - .oid = "1.2.643.2.2.35.1", - .id = GNUTLS_ECC_CURVE_GOST256CPA, - .group = GNUTLS_GROUP_GC256B, - .pk = GNUTLS_PK_UNKNOWN, - .size = 32, - .gost_curve = 1, - .supported = 1, - }, + .name = "CryptoPro-A", + .oid = "1.2.643.2.2.35.1", + .id = GNUTLS_ECC_CURVE_GOST256CPA, + .group = GNUTLS_GROUP_GC256B, + .pk = GNUTLS_PK_UNKNOWN, + .size = 32, + .gost_curve = 1, + .supported = 1, + }, { - .name = "CryptoPro-B", - .oid = "1.2.643.2.2.35.2", - .id = GNUTLS_ECC_CURVE_GOST256CPB, - .group = GNUTLS_GROUP_GC256C, - .pk = GNUTLS_PK_UNKNOWN, - .size = 32, - .gost_curve = 1, - .supported = 1, - }, + .name = "CryptoPro-B", + .oid = "1.2.643.2.2.35.2", + .id = GNUTLS_ECC_CURVE_GOST256CPB, + .group = GNUTLS_GROUP_GC256C, + .pk = GNUTLS_PK_UNKNOWN, + .size = 32, + .gost_curve = 1, + .supported = 1, + }, { - .name = "CryptoPro-C", - .oid = "1.2.643.2.2.35.3", - .id = GNUTLS_ECC_CURVE_GOST256CPC, - .group = GNUTLS_GROUP_GC256D, - .pk = GNUTLS_PK_UNKNOWN, - .size = 32, - .gost_curve = 1, - .supported = 1, - }, + .name = "CryptoPro-C", + .oid = "1.2.643.2.2.35.3", + .id = GNUTLS_ECC_CURVE_GOST256CPC, + .group = GNUTLS_GROUP_GC256D, + .pk = GNUTLS_PK_UNKNOWN, + .size = 32, + .gost_curve = 1, + .supported = 1, + }, { - .name = "CryptoPro-XchA", - .oid = "1.2.643.2.2.36.0", - .id = GNUTLS_ECC_CURVE_GOST256CPXA, - .group = GNUTLS_GROUP_GC256B, - .pk = GNUTLS_PK_UNKNOWN, - .size = 32, - .gost_curve = 1, - .supported = 1, - }, + .name = "CryptoPro-XchA", + .oid = "1.2.643.2.2.36.0", + .id = GNUTLS_ECC_CURVE_GOST256CPXA, + .group = GNUTLS_GROUP_GC256B, + .pk = GNUTLS_PK_UNKNOWN, + .size = 32, + .gost_curve = 1, + .supported = 1, + }, { - .name = "CryptoPro-XchB", - .oid = "1.2.643.2.2.36.1", - .id = GNUTLS_ECC_CURVE_GOST256CPXB, - .group = GNUTLS_GROUP_GC256D, - .pk = GNUTLS_PK_UNKNOWN, - .size = 32, - .gost_curve = 1, - .supported = 1, - }, + .name = "CryptoPro-XchB", + .oid = "1.2.643.2.2.36.1", + .id = GNUTLS_ECC_CURVE_GOST256CPXB, + .group = GNUTLS_GROUP_GC256D, + .pk = GNUTLS_PK_UNKNOWN, + .size = 32, + .gost_curve = 1, + .supported = 1, + }, { - .name = "TC26-256-A", - .oid = "1.2.643.7.1.2.1.1.1", - .id = GNUTLS_ECC_CURVE_GOST256A, - .group = GNUTLS_GROUP_GC256A, - .pk = GNUTLS_PK_GOST_12_256, - .size = 32, - .gost_curve = 1, - .supported = 1, - }, + .name = "TC26-256-A", + .oid = "1.2.643.7.1.2.1.1.1", + .id = GNUTLS_ECC_CURVE_GOST256A, + .group = GNUTLS_GROUP_GC256A, + .pk = GNUTLS_PK_GOST_12_256, + .size = 32, + .gost_curve = 1, + .supported = 1, + }, { - .name = "TC26-256-B", - .oid = "1.2.643.7.1.2.1.1.2", - .id = GNUTLS_ECC_CURVE_GOST256B, - .group = GNUTLS_GROUP_GC256B, - .pk = GNUTLS_PK_GOST_12_256, - .size = 32, - .gost_curve = 1, - .supported = 1, - }, + .name = "TC26-256-B", + .oid = "1.2.643.7.1.2.1.1.2", + .id = GNUTLS_ECC_CURVE_GOST256B, + .group = GNUTLS_GROUP_GC256B, + .pk = GNUTLS_PK_GOST_12_256, + .size = 32, + .gost_curve = 1, + .supported = 1, + }, { - .name = "TC26-256-C", - .oid = "1.2.643.7.1.2.1.1.3", - .id = GNUTLS_ECC_CURVE_GOST256C, - .group = GNUTLS_GROUP_GC256C, - .pk = GNUTLS_PK_GOST_12_256, - .size = 32, - .gost_curve = 1, - .supported = 1, - }, + .name = "TC26-256-C", + .oid = "1.2.643.7.1.2.1.1.3", + .id = GNUTLS_ECC_CURVE_GOST256C, + .group = GNUTLS_GROUP_GC256C, + .pk = GNUTLS_PK_GOST_12_256, + .size = 32, + .gost_curve = 1, + .supported = 1, + }, { - .name = "TC26-256-D", - .oid = "1.2.643.7.1.2.1.1.4", - .id = GNUTLS_ECC_CURVE_GOST256D, - .group = GNUTLS_GROUP_GC256D, - .pk = GNUTLS_PK_GOST_12_256, - .size = 32, - .gost_curve = 1, - .supported = 1, - }, + .name = "TC26-256-D", + .oid = "1.2.643.7.1.2.1.1.4", + .id = GNUTLS_ECC_CURVE_GOST256D, + .group = GNUTLS_GROUP_GC256D, + .pk = GNUTLS_PK_GOST_12_256, + .size = 32, + .gost_curve = 1, + .supported = 1, + }, { - .name = "TC26-512-A", - .oid = "1.2.643.7.1.2.1.2.1", - .id = GNUTLS_ECC_CURVE_GOST512A, - .group = GNUTLS_GROUP_GC512A, - .pk = GNUTLS_PK_GOST_12_512, - .size = 64, - .gost_curve = 1, - .supported = 1, - }, + .name = "TC26-512-A", + .oid = "1.2.643.7.1.2.1.2.1", + .id = GNUTLS_ECC_CURVE_GOST512A, + .group = GNUTLS_GROUP_GC512A, + .pk = GNUTLS_PK_GOST_12_512, + .size = 64, + .gost_curve = 1, + .supported = 1, + }, { - .name = "TC26-512-B", - .oid = "1.2.643.7.1.2.1.2.2", - .id = GNUTLS_ECC_CURVE_GOST512B, - .group = GNUTLS_GROUP_GC512B, - .pk = GNUTLS_PK_GOST_12_512, - .size = 64, - .gost_curve = 1, - .supported = 1, - }, + .name = "TC26-512-B", + .oid = "1.2.643.7.1.2.1.2.2", + .id = GNUTLS_ECC_CURVE_GOST512B, + .group = GNUTLS_GROUP_GC512B, + .pk = GNUTLS_PK_GOST_12_512, + .size = 64, + .gost_curve = 1, + .supported = 1, + }, { - .name = "TC26-512-C", - .oid = "1.2.643.7.1.2.1.2.3", - .id = GNUTLS_ECC_CURVE_GOST512C, - .group = GNUTLS_GROUP_GC512C, - .pk = GNUTLS_PK_GOST_12_512, - .size = 64, - .gost_curve = 1, - .supported = 1, - }, + .name = "TC26-512-C", + .oid = "1.2.643.7.1.2.1.2.3", + .id = GNUTLS_ECC_CURVE_GOST512C, + .group = GNUTLS_GROUP_GC512C, + .pk = GNUTLS_PK_GOST_12_512, + .size = 64, + .gost_curve = 1, + .supported = 1, + }, #endif - {0, 0, 0} + { 0, 0, 0 } }; -#define GNUTLS_ECC_CURVE_LOOP(b) \ - { const gnutls_ecc_curve_entry_st *p; \ - for(p = ecc_curves; p->name != NULL; p++) { b ; } } +#define GNUTLS_ECC_CURVE_LOOP(b) \ + { \ + const gnutls_ecc_curve_entry_st *p; \ + for (p = ecc_curves; p->name != NULL; p++) { \ + b; \ + } \ + } /** * gnutls_ecc_curve_list: @@ -282,10 +286,9 @@ const gnutls_ecc_curve_t *gnutls_ecc_curve_list(void) if (supported_curves[0] == 0) { int i = 0; - GNUTLS_ECC_CURVE_LOOP(if - (p->supported - && _gnutls_pk_curve_exists(p->id)) - supported_curves[i++] = p->id;) ; + GNUTLS_ECC_CURVE_LOOP( + if (p->supported && _gnutls_pk_curve_exists(p->id)) + supported_curves[i++] = p->id;); supported_curves[i++] = 0; } @@ -294,10 +297,8 @@ const gnutls_ecc_curve_t *gnutls_ecc_curve_list(void) unsigned _gnutls_ecc_curve_is_supported(gnutls_ecc_curve_t curve) { - GNUTLS_ECC_CURVE_LOOP(if - (p->id == curve && p->supported - && _gnutls_pk_curve_exists(p->id)) - return 1;) ; + GNUTLS_ECC_CURVE_LOOP(if (p->id == curve && p->supported && + _gnutls_pk_curve_exists(p->id)) return 1;); return 0; } @@ -314,12 +315,12 @@ gnutls_ecc_curve_t gnutls_oid_to_ecc_curve(const char *oid) { gnutls_ecc_curve_t ret = GNUTLS_ECC_CURVE_INVALID; - GNUTLS_ECC_CURVE_LOOP(if - (p->oid != NULL && c_strcasecmp(p->oid, oid) == 0 - && p->supported - && _gnutls_pk_curve_exists(p->id)) { - ret = p->id; break;} - ) ; + GNUTLS_ECC_CURVE_LOOP( + if (p->oid != NULL && c_strcasecmp(p->oid, oid) == 0 && + p->supported && _gnutls_pk_curve_exists(p->id)) { + ret = p->id; + break; + }); return ret; } @@ -339,11 +340,12 @@ gnutls_ecc_curve_t gnutls_ecc_curve_get_id(const char *name) { gnutls_ecc_curve_t ret = GNUTLS_ECC_CURVE_INVALID; - GNUTLS_ECC_CURVE_LOOP(if - (c_strcasecmp(p->name, name) == 0 && p->supported - && _gnutls_pk_curve_exists(p->id)) { - ret = p->id; break;} - ) ; + GNUTLS_ECC_CURVE_LOOP(if (c_strcasecmp(p->name, name) == 0 && + p->supported && + _gnutls_pk_curve_exists(p->id)) { + ret = p->id; + break; + }); return ret; } @@ -374,16 +376,16 @@ void _gnutls_ecc_curve_mark_disabled_all(void) } } -int -_gnutls_ecc_curve_set_enabled(gnutls_ecc_curve_t curve, unsigned int enabled) +int _gnutls_ecc_curve_set_enabled(gnutls_ecc_curve_t curve, + unsigned int enabled) { gnutls_ecc_curve_entry_st *p; for (p = ecc_curves; p->name != NULL; p++) { if (p->id == curve) { if (!p->supported_revertible) { - return - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + return gnutls_assert_val( + GNUTLS_E_INVALID_REQUEST); } p->supported = enabled; return 0; @@ -393,7 +395,7 @@ _gnutls_ecc_curve_set_enabled(gnutls_ecc_curve_t curve, unsigned int enabled) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); } -static int _gnutls_ecc_pk_compatible(const gnutls_ecc_curve_entry_st * p, +static int _gnutls_ecc_pk_compatible(const gnutls_ecc_curve_entry_st *p, gnutls_pk_algorithm_t pk) { if (!p->supported || !_gnutls_pk_curve_exists(p->id)) @@ -425,10 +427,11 @@ gnutls_ecc_curve_t _gnutls_ecc_bits_to_curve(gnutls_pk_algorithm_t pk, int bits) else ret = GNUTLS_ECC_CURVE_ED25519; - GNUTLS_ECC_CURVE_LOOP(if (_gnutls_ecc_pk_compatible(p, pk) - && 8 * p->size >= (unsigned)bits) { - ret = p->id; break;} - ) ; + GNUTLS_ECC_CURVE_LOOP(if (_gnutls_ecc_pk_compatible(p, pk) && + 8 * p->size >= (unsigned)bits) { + ret = p->id; + break; + }); return ret; } @@ -449,8 +452,9 @@ const char *gnutls_ecc_curve_get_name(gnutls_ecc_curve_t curve) const char *ret = NULL; GNUTLS_ECC_CURVE_LOOP(if (p->id == curve) { - ret = p->name; break;} - ) ; + ret = p->name; + break; + }); return ret; } @@ -471,8 +475,9 @@ const char *gnutls_ecc_curve_get_oid(gnutls_ecc_curve_t curve) const char *ret = NULL; GNUTLS_ECC_CURVE_LOOP(if (p->id == curve) { - ret = p->oid; break;} - ) ; + ret = p->oid; + break; + }); return ret; } @@ -485,14 +490,15 @@ const char *gnutls_ecc_curve_get_oid(gnutls_ecc_curve_t curve) * * Returns: a pointer to #gnutls_ecc_curve_entry_st or %NULL. -*/ -const gnutls_ecc_curve_entry_st - * _gnutls_ecc_curve_get_params(gnutls_ecc_curve_t curve) +const gnutls_ecc_curve_entry_st * +_gnutls_ecc_curve_get_params(gnutls_ecc_curve_t curve) { const gnutls_ecc_curve_entry_st *ret = NULL; GNUTLS_ECC_CURVE_LOOP(if (p->id == curve) { - ret = p; break;} - ) ; + ret = p; + break; + }); return ret; } @@ -510,8 +516,9 @@ int gnutls_ecc_curve_get_size(gnutls_ecc_curve_t curve) int ret = 0; GNUTLS_ECC_CURVE_LOOP(if (p->id == curve) { - ret = p->size; break;} - ) ; + ret = p->size; + break; + }); return ret; } @@ -529,8 +536,9 @@ gnutls_pk_algorithm_t gnutls_ecc_curve_get_pk(gnutls_ecc_curve_t curve) int ret = GNUTLS_PK_UNKNOWN; GNUTLS_ECC_CURVE_LOOP(if (p->id == curve && p->supported) { - ret = p->pk; break;} - ) ; + ret = p->pk; + break; + }); return ret; } @@ -547,11 +555,11 @@ gnutls_group_t _gnutls_ecc_curve_get_group(gnutls_ecc_curve_t curve) { gnutls_group_t ret = GNUTLS_GROUP_INVALID; - GNUTLS_ECC_CURVE_LOOP(if - (p->id == curve && p->supported - && _gnutls_pk_curve_exists(p->id)) { - ret = p->group; break;} - ) ; + GNUTLS_ECC_CURVE_LOOP(if (p->id == curve && p->supported && + _gnutls_pk_curve_exists(p->id)) { + ret = p->group; + break; + }); return ret; } diff --git a/lib/algorithms/groups.c b/lib/algorithms/groups.c index dba091cbc6..ed8a3aa284 100644 --- a/lib/algorithms/groups.c +++ b/lib/algorithms/groups.c @@ -32,167 +32,163 @@ static const gnutls_group_entry_st supported_groups[] = { { - .name = "SECP192R1", - .id = GNUTLS_GROUP_SECP192R1, - .curve = GNUTLS_ECC_CURVE_SECP192R1, - .tls_id = 19, - .pk = GNUTLS_PK_ECDSA, - }, + .name = "SECP192R1", + .id = GNUTLS_GROUP_SECP192R1, + .curve = GNUTLS_ECC_CURVE_SECP192R1, + .tls_id = 19, + .pk = GNUTLS_PK_ECDSA, + }, { - .name = "SECP224R1", - .id = GNUTLS_GROUP_SECP224R1, - .curve = GNUTLS_ECC_CURVE_SECP224R1, - .tls_id = 21, - .pk = GNUTLS_PK_ECDSA, - }, + .name = "SECP224R1", + .id = GNUTLS_GROUP_SECP224R1, + .curve = GNUTLS_ECC_CURVE_SECP224R1, + .tls_id = 21, + .pk = GNUTLS_PK_ECDSA, + }, { - .name = "SECP256R1", - .id = GNUTLS_GROUP_SECP256R1, - .curve = GNUTLS_ECC_CURVE_SECP256R1, - .tls_id = 23, - .pk = GNUTLS_PK_ECDSA, - }, + .name = "SECP256R1", + .id = GNUTLS_GROUP_SECP256R1, + .curve = GNUTLS_ECC_CURVE_SECP256R1, + .tls_id = 23, + .pk = GNUTLS_PK_ECDSA, + }, { - .name = "SECP384R1", - .id = GNUTLS_GROUP_SECP384R1, - .curve = GNUTLS_ECC_CURVE_SECP384R1, - .tls_id = 24, - .pk = GNUTLS_PK_ECDSA, - }, + .name = "SECP384R1", + .id = GNUTLS_GROUP_SECP384R1, + .curve = GNUTLS_ECC_CURVE_SECP384R1, + .tls_id = 24, + .pk = GNUTLS_PK_ECDSA, + }, { - .name = "SECP521R1", - .id = GNUTLS_GROUP_SECP521R1, - .curve = GNUTLS_ECC_CURVE_SECP521R1, - .tls_id = 25, - .pk = GNUTLS_PK_ECDSA, - }, - { - .name = "X25519", - .id = GNUTLS_GROUP_X25519, - .curve = GNUTLS_ECC_CURVE_X25519, - .tls_id = 29, - .pk = GNUTLS_PK_ECDH_X25519}, + .name = "SECP521R1", + .id = GNUTLS_GROUP_SECP521R1, + .curve = GNUTLS_ECC_CURVE_SECP521R1, + .tls_id = 25, + .pk = GNUTLS_PK_ECDSA, + }, + { .name = "X25519", + .id = GNUTLS_GROUP_X25519, + .curve = GNUTLS_ECC_CURVE_X25519, + .tls_id = 29, + .pk = GNUTLS_PK_ECDH_X25519 }, #ifdef ENABLE_GOST /* draft-smyshlyaev-tls12-gost-suites-06, Section 6 */ { - .name = "GC256A", - .id = GNUTLS_GROUP_GC256A, - .curve = GNUTLS_ECC_CURVE_GOST256A, - .pk = GNUTLS_PK_GOST_12_256, - .tls_id = 34, - }, + .name = "GC256A", + .id = GNUTLS_GROUP_GC256A, + .curve = GNUTLS_ECC_CURVE_GOST256A, + .pk = GNUTLS_PK_GOST_12_256, + .tls_id = 34, + }, { - .name = "GC256B", - .id = GNUTLS_GROUP_GC256B, - .curve = GNUTLS_ECC_CURVE_GOST256B, - .pk = GNUTLS_PK_GOST_12_256, - .tls_id = 35, - }, + .name = "GC256B", + .id = GNUTLS_GROUP_GC256B, + .curve = GNUTLS_ECC_CURVE_GOST256B, + .pk = GNUTLS_PK_GOST_12_256, + .tls_id = 35, + }, { - .name = "GC256C", - .id = GNUTLS_GROUP_GC256C, - .curve = GNUTLS_ECC_CURVE_GOST256C, - .pk = GNUTLS_PK_GOST_12_256, - .tls_id = 36, - }, + .name = "GC256C", + .id = GNUTLS_GROUP_GC256C, + .curve = GNUTLS_ECC_CURVE_GOST256C, + .pk = GNUTLS_PK_GOST_12_256, + .tls_id = 36, + }, { - .name = "GC256D", - .id = GNUTLS_GROUP_GC256D, - .curve = GNUTLS_ECC_CURVE_GOST256D, - .pk = GNUTLS_PK_GOST_12_256, - .tls_id = 37, - }, + .name = "GC256D", + .id = GNUTLS_GROUP_GC256D, + .curve = GNUTLS_ECC_CURVE_GOST256D, + .pk = GNUTLS_PK_GOST_12_256, + .tls_id = 37, + }, { - .name = "GC512A", - .id = GNUTLS_GROUP_GC512A, - .curve = GNUTLS_ECC_CURVE_GOST512A, - .pk = GNUTLS_PK_GOST_12_512, - .tls_id = 38, - }, + .name = "GC512A", + .id = GNUTLS_GROUP_GC512A, + .curve = GNUTLS_ECC_CURVE_GOST512A, + .pk = GNUTLS_PK_GOST_12_512, + .tls_id = 38, + }, { - .name = "GC512B", - .id = GNUTLS_GROUP_GC512B, - .curve = GNUTLS_ECC_CURVE_GOST512B, - .pk = GNUTLS_PK_GOST_12_512, - .tls_id = 39, - }, + .name = "GC512B", + .id = GNUTLS_GROUP_GC512B, + .curve = GNUTLS_ECC_CURVE_GOST512B, + .pk = GNUTLS_PK_GOST_12_512, + .tls_id = 39, + }, { - .name = "GC512C", - .id = GNUTLS_GROUP_GC512C, - .curve = GNUTLS_ECC_CURVE_GOST512C, - .pk = GNUTLS_PK_GOST_12_512, - .tls_id = 40, - }, + .name = "GC512C", + .id = GNUTLS_GROUP_GC512C, + .curve = GNUTLS_ECC_CURVE_GOST512C, + .pk = GNUTLS_PK_GOST_12_512, + .tls_id = 40, + }, #endif - { - .name = "X448", - .id = GNUTLS_GROUP_X448, - .curve = GNUTLS_ECC_CURVE_X448, - .tls_id = 30, - .pk = GNUTLS_PK_ECDH_X448}, + { .name = "X448", + .id = GNUTLS_GROUP_X448, + .curve = GNUTLS_ECC_CURVE_X448, + .tls_id = 30, + .pk = GNUTLS_PK_ECDH_X448 }, #ifdef ENABLE_DHE - { - .name = "FFDHE2048", - .id = GNUTLS_GROUP_FFDHE2048, - .generator = &gnutls_ffdhe_2048_group_generator, - .prime = &gnutls_ffdhe_2048_group_prime, - .q = &gnutls_ffdhe_2048_group_q, - .q_bits = &gnutls_ffdhe_2048_key_bits, - .pk = GNUTLS_PK_DH, - .tls_id = 0x100}, - { - .name = "FFDHE3072", - .id = GNUTLS_GROUP_FFDHE3072, - .generator = &gnutls_ffdhe_3072_group_generator, - .prime = &gnutls_ffdhe_3072_group_prime, - .q = &gnutls_ffdhe_3072_group_q, - .q_bits = &gnutls_ffdhe_3072_key_bits, - .pk = GNUTLS_PK_DH, - .tls_id = 0x101}, - { - .name = "FFDHE4096", - .id = GNUTLS_GROUP_FFDHE4096, - .generator = &gnutls_ffdhe_4096_group_generator, - .prime = &gnutls_ffdhe_4096_group_prime, - .q = &gnutls_ffdhe_4096_group_q, - .q_bits = &gnutls_ffdhe_4096_key_bits, - .pk = GNUTLS_PK_DH, - .tls_id = 0x102}, - { - .name = "FFDHE6144", - .id = GNUTLS_GROUP_FFDHE6144, - .generator = &gnutls_ffdhe_6144_group_generator, - .prime = &gnutls_ffdhe_6144_group_prime, - .q = &gnutls_ffdhe_6144_group_q, - .q_bits = &gnutls_ffdhe_6144_key_bits, - .pk = GNUTLS_PK_DH, - .tls_id = 0x103}, - { - .name = "FFDHE8192", - .id = GNUTLS_GROUP_FFDHE8192, - .generator = &gnutls_ffdhe_8192_group_generator, - .prime = &gnutls_ffdhe_8192_group_prime, - .q = &gnutls_ffdhe_8192_group_q, - .q_bits = &gnutls_ffdhe_8192_key_bits, - .pk = GNUTLS_PK_DH, - .tls_id = 0x104}, + { .name = "FFDHE2048", + .id = GNUTLS_GROUP_FFDHE2048, + .generator = &gnutls_ffdhe_2048_group_generator, + .prime = &gnutls_ffdhe_2048_group_prime, + .q = &gnutls_ffdhe_2048_group_q, + .q_bits = &gnutls_ffdhe_2048_key_bits, + .pk = GNUTLS_PK_DH, + .tls_id = 0x100 }, + { .name = "FFDHE3072", + .id = GNUTLS_GROUP_FFDHE3072, + .generator = &gnutls_ffdhe_3072_group_generator, + .prime = &gnutls_ffdhe_3072_group_prime, + .q = &gnutls_ffdhe_3072_group_q, + .q_bits = &gnutls_ffdhe_3072_key_bits, + .pk = GNUTLS_PK_DH, + .tls_id = 0x101 }, + { .name = "FFDHE4096", + .id = GNUTLS_GROUP_FFDHE4096, + .generator = &gnutls_ffdhe_4096_group_generator, + .prime = &gnutls_ffdhe_4096_group_prime, + .q = &gnutls_ffdhe_4096_group_q, + .q_bits = &gnutls_ffdhe_4096_key_bits, + .pk = GNUTLS_PK_DH, + .tls_id = 0x102 }, + { .name = "FFDHE6144", + .id = GNUTLS_GROUP_FFDHE6144, + .generator = &gnutls_ffdhe_6144_group_generator, + .prime = &gnutls_ffdhe_6144_group_prime, + .q = &gnutls_ffdhe_6144_group_q, + .q_bits = &gnutls_ffdhe_6144_key_bits, + .pk = GNUTLS_PK_DH, + .tls_id = 0x103 }, + { .name = "FFDHE8192", + .id = GNUTLS_GROUP_FFDHE8192, + .generator = &gnutls_ffdhe_8192_group_generator, + .prime = &gnutls_ffdhe_8192_group_prime, + .q = &gnutls_ffdhe_8192_group_q, + .q_bits = &gnutls_ffdhe_8192_key_bits, + .pk = GNUTLS_PK_DH, + .tls_id = 0x104 }, #endif - {0, 0, 0} + { 0, 0, 0 } }; -#define GNUTLS_GROUP_LOOP(b) \ - { const gnutls_group_entry_st *p; \ - for(p = supported_groups; p->name != NULL; p++) { b ; } } +#define GNUTLS_GROUP_LOOP(b) \ + { \ + const gnutls_group_entry_st *p; \ + for (p = supported_groups; p->name != NULL; p++) { \ + b; \ + } \ + } /* Returns the TLS id of the given curve */ const gnutls_group_entry_st *_gnutls_tls_id_to_group(unsigned num) { - GNUTLS_GROUP_LOOP(if (p->tls_id == num && - (p->curve == 0 - || _gnutls_ecc_curve_is_supported(p->curve))) { - return p;} - ) ; + GNUTLS_GROUP_LOOP( + if (p->tls_id == num && + (p->curve == 0 || + _gnutls_ecc_curve_is_supported(p->curve))) { return p; }); return NULL; } @@ -202,11 +198,11 @@ const gnutls_group_entry_st *_gnutls_id_to_group(unsigned id) if (id == 0) return NULL; - GNUTLS_GROUP_LOOP(if (p->id == id && - (p->curve == 0 - || _gnutls_ecc_curve_is_supported(p->curve))) { - return p;} - ) ; + GNUTLS_GROUP_LOOP( + if (p->id == id && (p->curve == 0 || + _gnutls_ecc_curve_is_supported(p->curve))) { + return p; + }); return NULL; } @@ -230,10 +226,9 @@ const gnutls_group_t *gnutls_group_list(void) if (groups[0] == 0) { int i = 0; - GNUTLS_GROUP_LOOP(if - (p->curve == 0 - || _gnutls_ecc_curve_is_supported(p->curve)) - groups[i++] = p->id;) ; + GNUTLS_GROUP_LOOP(if (p->curve == 0 || + _gnutls_ecc_curve_is_supported(p->curve)) + groups[i++] = p->id;); groups[i++] = 0; } @@ -255,12 +250,12 @@ gnutls_group_t gnutls_group_get_id(const char *name) { gnutls_group_t ret = GNUTLS_GROUP_INVALID; - GNUTLS_GROUP_LOOP(if - (c_strcasecmp(p->name, name) == 0 - && (p->curve == 0 - || _gnutls_ecc_curve_is_supported(p->curve))) { - ret = p->id; break;} - ) ; + GNUTLS_GROUP_LOOP(if (c_strcasecmp(p->name, name) == 0 && + (p->curve == 0 || + _gnutls_ecc_curve_is_supported(p->curve))) { + ret = p->id; + break; + }); return ret; } @@ -273,8 +268,9 @@ gnutls_group_t _gnutls_group_get_id(const char *name) gnutls_group_t ret = GNUTLS_GROUP_INVALID; GNUTLS_GROUP_LOOP(if (c_strcasecmp(p->name, name) == 0) { - ret = p->id; break;} - ) ; + ret = p->id; + break; + }); return ret; } @@ -292,9 +288,7 @@ gnutls_group_t _gnutls_group_get_id(const char *name) **/ const char *gnutls_group_get_name(gnutls_group_t group) { - GNUTLS_GROUP_LOOP(if (p->id == group) { - return p->name;} - ) ; + GNUTLS_GROUP_LOOP(if (p->id == group) { return p->name; }); return NULL; } diff --git a/lib/algorithms/kx.c b/lib/algorithms/kx.c index df020d8a3f..41b65b5cd7 100644 --- a/lib/algorithms/kx.c +++ b/lib/algorithms/kx.c @@ -50,36 +50,36 @@ extern mod_auth_st vko_gost_auth_struct; typedef struct { gnutls_kx_algorithm_t algorithm; gnutls_credentials_type_t client_type; - gnutls_credentials_type_t server_type; /* The type of credentials a server + gnutls_credentials_type_t server_type; /* The type of credentials a server * needs to set */ } gnutls_cred_map; static const gnutls_cred_map cred_mappings[] = { - {GNUTLS_KX_ECDHE_RSA, GNUTLS_CRD_CERTIFICATE, - GNUTLS_CRD_CERTIFICATE}, - {GNUTLS_KX_ECDHE_ECDSA, GNUTLS_CRD_CERTIFICATE, - GNUTLS_CRD_CERTIFICATE}, - {GNUTLS_KX_RSA, GNUTLS_CRD_CERTIFICATE, GNUTLS_CRD_CERTIFICATE}, - {GNUTLS_KX_DHE_DSS, GNUTLS_CRD_CERTIFICATE, - GNUTLS_CRD_CERTIFICATE}, - {GNUTLS_KX_DHE_RSA, GNUTLS_CRD_CERTIFICATE, - GNUTLS_CRD_CERTIFICATE}, - {GNUTLS_KX_ECDHE_PSK, GNUTLS_CRD_PSK, GNUTLS_CRD_PSK}, - {GNUTLS_KX_PSK, GNUTLS_CRD_PSK, GNUTLS_CRD_PSK}, - {GNUTLS_KX_DHE_PSK, GNUTLS_CRD_PSK, GNUTLS_CRD_PSK}, - {GNUTLS_KX_RSA_PSK, GNUTLS_CRD_PSK, GNUTLS_CRD_CERTIFICATE}, - {GNUTLS_KX_SRP, GNUTLS_CRD_SRP, GNUTLS_CRD_SRP}, - {GNUTLS_KX_SRP_RSA, GNUTLS_CRD_SRP, GNUTLS_CRD_CERTIFICATE}, - {GNUTLS_KX_SRP_DSS, GNUTLS_CRD_SRP, GNUTLS_CRD_CERTIFICATE}, - {GNUTLS_KX_ANON_DH, GNUTLS_CRD_ANON, GNUTLS_CRD_ANON}, - {GNUTLS_KX_ANON_ECDH, GNUTLS_CRD_ANON, GNUTLS_CRD_ANON}, - {GNUTLS_KX_VKO_GOST_12, GNUTLS_CRD_CERTIFICATE, GNUTLS_CRD_CERTIFICATE}, - {0, 0, 0} + { GNUTLS_KX_ECDHE_RSA, GNUTLS_CRD_CERTIFICATE, GNUTLS_CRD_CERTIFICATE }, + { GNUTLS_KX_ECDHE_ECDSA, GNUTLS_CRD_CERTIFICATE, + GNUTLS_CRD_CERTIFICATE }, + { GNUTLS_KX_RSA, GNUTLS_CRD_CERTIFICATE, GNUTLS_CRD_CERTIFICATE }, + { GNUTLS_KX_DHE_DSS, GNUTLS_CRD_CERTIFICATE, GNUTLS_CRD_CERTIFICATE }, + { GNUTLS_KX_DHE_RSA, GNUTLS_CRD_CERTIFICATE, GNUTLS_CRD_CERTIFICATE }, + { GNUTLS_KX_ECDHE_PSK, GNUTLS_CRD_PSK, GNUTLS_CRD_PSK }, + { GNUTLS_KX_PSK, GNUTLS_CRD_PSK, GNUTLS_CRD_PSK }, + { GNUTLS_KX_DHE_PSK, GNUTLS_CRD_PSK, GNUTLS_CRD_PSK }, + { GNUTLS_KX_RSA_PSK, GNUTLS_CRD_PSK, GNUTLS_CRD_CERTIFICATE }, + { GNUTLS_KX_SRP, GNUTLS_CRD_SRP, GNUTLS_CRD_SRP }, + { GNUTLS_KX_SRP_RSA, GNUTLS_CRD_SRP, GNUTLS_CRD_CERTIFICATE }, + { GNUTLS_KX_SRP_DSS, GNUTLS_CRD_SRP, GNUTLS_CRD_CERTIFICATE }, + { GNUTLS_KX_ANON_DH, GNUTLS_CRD_ANON, GNUTLS_CRD_ANON }, + { GNUTLS_KX_ANON_ECDH, GNUTLS_CRD_ANON, GNUTLS_CRD_ANON }, + { GNUTLS_KX_VKO_GOST_12, GNUTLS_CRD_CERTIFICATE, + GNUTLS_CRD_CERTIFICATE }, + { 0, 0, 0 } }; -#define GNUTLS_KX_MAP_LOOP(b) \ - const gnutls_cred_map *p; \ - for(p = cred_mappings; p->algorithm != 0; p++) { b ; } +#define GNUTLS_KX_MAP_LOOP(b) \ + const gnutls_cred_map *p; \ + for (p = cred_mappings; p->algorithm != 0; p++) { \ + b; \ + } struct gnutls_kx_algo_entry { const char *name; @@ -92,54 +92,59 @@ typedef struct gnutls_kx_algo_entry gnutls_kx_algo_entry; static const gnutls_kx_algo_entry _gnutls_kx_algorithms[] = { #ifdef ENABLE_ECDHE - {"ECDHE-RSA", GNUTLS_KX_ECDHE_RSA, &ecdhe_rsa_auth_struct, 0, 1}, - {"ECDHE-ECDSA", GNUTLS_KX_ECDHE_ECDSA, &ecdhe_ecdsa_auth_struct, - 0, 1}, + { "ECDHE-RSA", GNUTLS_KX_ECDHE_RSA, &ecdhe_rsa_auth_struct, 0, 1 }, + { "ECDHE-ECDSA", GNUTLS_KX_ECDHE_ECDSA, &ecdhe_ecdsa_auth_struct, 0, + 1 }, #endif - {"RSA", GNUTLS_KX_RSA, &rsa_auth_struct, 0, 0}, + { "RSA", GNUTLS_KX_RSA, &rsa_auth_struct, 0, 0 }, #ifdef ENABLE_DHE - {"DHE-RSA", GNUTLS_KX_DHE_RSA, &dhe_rsa_auth_struct, 1, 1}, - {"DHE-DSS", GNUTLS_KX_DHE_DSS, &dhe_dss_auth_struct, 1, 1}, + { "DHE-RSA", GNUTLS_KX_DHE_RSA, &dhe_rsa_auth_struct, 1, 1 }, + { "DHE-DSS", GNUTLS_KX_DHE_DSS, &dhe_dss_auth_struct, 1, 1 }, #endif #ifdef ENABLE_PSK - {"PSK", GNUTLS_KX_PSK, &psk_auth_struct, 0, 0}, - {"RSA-PSK", GNUTLS_KX_RSA_PSK, &rsa_psk_auth_struct, 0, 0}, -# ifdef ENABLE_DHE - {"DHE-PSK", GNUTLS_KX_DHE_PSK, &dhe_psk_auth_struct, - 1 /* needs DHE params */ , 0}, -# endif -# ifdef ENABLE_ECDHE - {"ECDHE-PSK", GNUTLS_KX_ECDHE_PSK, &ecdhe_psk_auth_struct, 0, 0}, -# endif + { "PSK", GNUTLS_KX_PSK, &psk_auth_struct, 0, 0 }, + { "RSA-PSK", GNUTLS_KX_RSA_PSK, &rsa_psk_auth_struct, 0, 0 }, +#ifdef ENABLE_DHE + { "DHE-PSK", GNUTLS_KX_DHE_PSK, &dhe_psk_auth_struct, + 1 /* needs DHE params */, 0 }, +#endif +#ifdef ENABLE_ECDHE + { "ECDHE-PSK", GNUTLS_KX_ECDHE_PSK, &ecdhe_psk_auth_struct, 0, 0 }, +#endif #endif #ifdef ENABLE_SRP - {"SRP-DSS", GNUTLS_KX_SRP_DSS, &srp_dss_auth_struct, 0, 0}, - {"SRP-RSA", GNUTLS_KX_SRP_RSA, &srp_rsa_auth_struct, 0, 0}, - {"SRP", GNUTLS_KX_SRP, &srp_auth_struct, 0, 0}, + { "SRP-DSS", GNUTLS_KX_SRP_DSS, &srp_dss_auth_struct, 0, 0 }, + { "SRP-RSA", GNUTLS_KX_SRP_RSA, &srp_rsa_auth_struct, 0, 0 }, + { "SRP", GNUTLS_KX_SRP, &srp_auth_struct, 0, 0 }, #endif #if defined(ENABLE_ANON) && defined(ENABLE_DHE) - {"ANON-DH", GNUTLS_KX_ANON_DH, &anon_auth_struct, 1, 0}, + { "ANON-DH", GNUTLS_KX_ANON_DH, &anon_auth_struct, 1, 0 }, #endif #if defined(ENABLE_ANON) && defined(ENABLE_ECDHE) - {"ANON-ECDH", GNUTLS_KX_ANON_ECDH, &anon_ecdh_auth_struct, 0, 0}, + { "ANON-ECDH", GNUTLS_KX_ANON_ECDH, &anon_ecdh_auth_struct, 0, 0 }, #endif #ifdef ENABLE_GOST - {"VKO-GOST-12", GNUTLS_KX_VKO_GOST_12, &vko_gost_auth_struct, 0, 0}, + { "VKO-GOST-12", GNUTLS_KX_VKO_GOST_12, &vko_gost_auth_struct, 0, 0 }, #endif /* for deprecated and legacy algorithms no longer supported, use * GNUTLS_KX_INVALID as an entry. This will make them available * as priority strings, but they will be a no-op. */ - {"RSA-EXPORT", GNUTLS_KX_INVALID, NULL, 0, 0}, - {0, 0, 0, 0, 0} + { "RSA-EXPORT", GNUTLS_KX_INVALID, NULL, 0, 0 }, + { 0, 0, 0, 0, 0 } }; -#define GNUTLS_KX_LOOP(b) \ - const gnutls_kx_algo_entry *p; \ - for(p = _gnutls_kx_algorithms; p->name != NULL; p++) { b ; } +#define GNUTLS_KX_LOOP(b) \ + const gnutls_kx_algo_entry *p; \ + for (p = _gnutls_kx_algorithms; p->name != NULL; p++) { \ + b; \ + } -#define GNUTLS_KX_ALG_LOOP(a) \ - GNUTLS_KX_LOOP( if(p->algorithm == algorithm) { a; break; } ) +#define GNUTLS_KX_ALG_LOOP(a) \ + GNUTLS_KX_LOOP(if (p->algorithm == algorithm) { \ + a; \ + break; \ + }) /* Key EXCHANGE functions */ mod_auth_st *_gnutls_kx_auth_struct(gnutls_kx_algorithm_t algorithm) @@ -147,7 +152,6 @@ mod_auth_st *_gnutls_kx_auth_struct(gnutls_kx_algorithm_t algorithm) mod_auth_st *ret = NULL; GNUTLS_KX_ALG_LOOP(ret = p->auth_struct); return ret; - } /** @@ -183,11 +187,11 @@ gnutls_kx_algorithm_t gnutls_kx_get_id(const char *name) { gnutls_kx_algorithm_t ret = GNUTLS_KX_UNKNOWN; - GNUTLS_KX_LOOP(if - (c_strcasecmp(p->name, name) == 0 - && (int)p->algorithm != GNUTLS_KX_INVALID) { - ret = p->algorithm; break;} - ) ; + GNUTLS_KX_LOOP(if (c_strcasecmp(p->name, name) == 0 && + (int)p->algorithm != GNUTLS_KX_INVALID) { + ret = p->algorithm; + break; + }); return ret; } @@ -201,8 +205,9 @@ int _gnutls_kx_get_id(const char *name) gnutls_kx_algorithm_t ret = GNUTLS_KX_UNKNOWN; GNUTLS_KX_LOOP(if (c_strcasecmp(p->name, name) == 0) { - ret = p->algorithm; break;} - ) ; + ret = p->algorithm; + break; + }); return ret; } @@ -258,9 +263,8 @@ bool _gnutls_kx_allows_false_start(gnutls_session_t session) #if defined(ENABLE_DHE) || defined(ENABLE_ANON) if (needs_dh != 0) { - bits = - gnutls_sec_param_to_pk_bits(GNUTLS_PK_DH, - GNUTLS_SEC_PARAM_HIGH); + bits = gnutls_sec_param_to_pk_bits( + GNUTLS_PK_DH, GNUTLS_SEC_PARAM_HIGH); /* check whether sizes are sufficient */ if (e && e->prime) { if (e->prime->size * 8 < (unsigned)bits) @@ -269,14 +273,13 @@ bool _gnutls_kx_allows_false_start(gnutls_session_t session) ret = 0; } else #endif - if (algorithm == GNUTLS_KX_ECDHE_RSA - || algorithm == GNUTLS_KX_ECDHE_ECDSA) { - bits = - gnutls_sec_param_to_pk_bits(GNUTLS_PK_EC, - GNUTLS_SEC_PARAM_HIGH); - - if (e != NULL - && gnutls_ecc_curve_get_size(e->curve) * 8 < bits) + if (algorithm == GNUTLS_KX_ECDHE_RSA || + algorithm == GNUTLS_KX_ECDHE_ECDSA) { + bits = gnutls_sec_param_to_pk_bits( + GNUTLS_PK_EC, GNUTLS_SEC_PARAM_HIGH); + + if (e != NULL && + gnutls_ecc_curve_get_size(e->curve) * 8 < bits) ret = 0; } } @@ -299,12 +302,14 @@ _gnutls_map_kx_get_cred(gnutls_kx_algorithm_t algorithm, int server) gnutls_credentials_type_t ret = -1; if (server) { GNUTLS_KX_MAP_LOOP(if (p->algorithm == algorithm) { - ret = p->server_type; break;} - ) ; + ret = p->server_type; + break; + }); } else { GNUTLS_KX_MAP_LOOP(if (p->algorithm == algorithm) { - ret = p->client_type; break;} - ) ; + ret = p->client_type; + break; + }); } return ret; diff --git a/lib/algorithms/mac.c b/lib/algorithms/mac.c index 50ad49a3ba..9d1c9b8f3b 100644 --- a/lib/algorithms/mac.c +++ b/lib/algorithms/mac.c @@ -37,185 +37,189 @@ #define MAC_OID_STREEBOG_512 "1.2.643.7.1.1.4.2" static SYSTEM_CONFIG_OR_CONST mac_entry_st hash_algorithms[] = { - {.name = "SHA1", - .oid = HASH_OID_SHA1, - .mac_oid = MAC_OID_SHA1, - .id = GNUTLS_MAC_SHA1, - .output_size = 20, - .key_size = 20, - .block_size = 64}, - {.name = "MD5+SHA1", - .id = GNUTLS_MAC_MD5_SHA1, - .output_size = 36, - .key_size = 36, - .flags = GNUTLS_MAC_FLAG_PREIMAGE_INSECURE, - .block_size = 64}, - {.name = "SHA256", - .oid = HASH_OID_SHA256, - .mac_oid = MAC_OID_SHA256, - .id = GNUTLS_MAC_SHA256, - .output_size = 32, - .key_size = 32, - .block_size = 64}, - {.name = "SHA384", - .oid = HASH_OID_SHA384, - .mac_oid = MAC_OID_SHA384, - .id = GNUTLS_MAC_SHA384, - .output_size = 48, - .key_size = 48, - .block_size = 128}, - {.name = "SHA512", - .oid = HASH_OID_SHA512, - .mac_oid = MAC_OID_SHA512, - .id = GNUTLS_MAC_SHA512, - .output_size = 64, - .key_size = 64, - .block_size = 128}, - {.name = "SHA224", - .oid = HASH_OID_SHA224, - .mac_oid = MAC_OID_SHA224, - .id = GNUTLS_MAC_SHA224, - .output_size = 28, - .key_size = 28, - .block_size = 64}, - {.name = "SHA3-256", - .oid = HASH_OID_SHA3_256, - .id = GNUTLS_MAC_SHA3_256, - .output_size = 32, - .key_size = 32, - .block_size = 136}, - {.name = "SHA3-384", - .oid = HASH_OID_SHA3_384, - .id = GNUTLS_MAC_SHA3_384, - .output_size = 48, - .key_size = 48, - .block_size = 104}, - {.name = "SHA3-512", - .oid = HASH_OID_SHA3_512, - .id = GNUTLS_MAC_SHA3_512, - .output_size = 64, - .key_size = 64, - .block_size = 72}, - {.name = "SHA3-224", - .oid = HASH_OID_SHA3_224, - .id = GNUTLS_MAC_SHA3_224, - .output_size = 28, - .key_size = 28, - .block_size = 144}, - {.name = "UMAC-96", - .id = GNUTLS_MAC_UMAC_96, - .output_size = 12, - .key_size = 16, - .nonce_size = 8}, - {.name = "UMAC-128", - .id = GNUTLS_MAC_UMAC_128, - .output_size = 16, - .key_size = 16, - .nonce_size = 8}, - {.name = "AEAD", - .id = GNUTLS_MAC_AEAD, - .placeholder = 1}, - {.name = "MD5", - .oid = HASH_OID_MD5, - .id = GNUTLS_MAC_MD5, - .output_size = 16, - .key_size = 16, - .flags = GNUTLS_MAC_FLAG_PREIMAGE_INSECURE, - .block_size = 64}, - {.name = "MD2", - .oid = HASH_OID_MD2, - .flags = GNUTLS_MAC_FLAG_PREIMAGE_INSECURE, - .id = GNUTLS_MAC_MD2}, - {.name = "RIPEMD160", - .oid = HASH_OID_RMD160, - .id = GNUTLS_MAC_RMD160, - .output_size = 20, - .key_size = 20, - .block_size = 64}, - {.name = "GOSTR341194", - .oid = HASH_OID_GOST_R_3411_94, - .mac_oid = MAC_OID_GOST_R_3411_94, - .id = GNUTLS_MAC_GOSTR_94, - .output_size = 32, - .key_size = 32, - .block_size = 32, - .flags = GNUTLS_MAC_FLAG_PREIMAGE_INSECURE}, - {.name = "STREEBOG-256", - .oid = HASH_OID_STREEBOG_256, - .mac_oid = MAC_OID_STREEBOG_256, - .id = GNUTLS_MAC_STREEBOG_256, - .output_size = 32, - .key_size = 32, - .block_size = 64}, - {.name = "STREEBOG-512", - .oid = HASH_OID_STREEBOG_512, - .mac_oid = MAC_OID_STREEBOG_512, - .id = GNUTLS_MAC_STREEBOG_512, - .output_size = 64, - .key_size = 64, - .block_size = 64}, - {.name = "AES-CMAC-128", - .id = GNUTLS_MAC_AES_CMAC_128, - .output_size = 16, - .key_size = 16,}, - {.name = "AES-CMAC-256", - .id = GNUTLS_MAC_AES_CMAC_256, - .output_size = 16, - .key_size = 32}, - {.name = "AES-GMAC-128", - .id = GNUTLS_MAC_AES_GMAC_128, - .output_size = 16, - .key_size = 16, - .nonce_size = 12}, - {.name = "AES-GMAC-192", - .id = GNUTLS_MAC_AES_GMAC_192, - .output_size = 16, - .key_size = 24, - .nonce_size = 12}, - {.name = "AES-GMAC-256", - .id = GNUTLS_MAC_AES_GMAC_256, - .output_size = 16, - .key_size = 32, - .nonce_size = 12}, - {.name = "GOST28147-TC26Z-IMIT", - .id = GNUTLS_MAC_GOST28147_TC26Z_IMIT, - .output_size = 4, - .key_size = 32, - .block_size = 8, - .flags = GNUTLS_MAC_FLAG_CONTINUOUS_MAC}, - {.name = "SHAKE-128", - .oid = HASH_OID_SHAKE_128, - .id = GNUTLS_MAC_SHAKE_128, - .block_size = 168}, - {.name = "SHAKE-256", - .oid = HASH_OID_SHAKE_256, - .id = GNUTLS_MAC_SHAKE_256, - .block_size = 136}, - {.name = "OMAC-MAGMA", - .id = GNUTLS_MAC_MAGMA_OMAC, - .output_size = 8, - .key_size = 32, - .block_size = 8}, - {.name = "OMAC-KUZNYECHIK", - .id = GNUTLS_MAC_KUZNYECHIK_OMAC, - .output_size = 16, - .key_size = 32, - .block_size = 16}, - {.name = "MAC-NULL", - .id = GNUTLS_MAC_NULL}, - {0, 0, 0, 0, 0, 0, 0, 0, 0} + { .name = "SHA1", + .oid = HASH_OID_SHA1, + .mac_oid = MAC_OID_SHA1, + .id = GNUTLS_MAC_SHA1, + .output_size = 20, + .key_size = 20, + .block_size = 64 }, + { .name = "MD5+SHA1", + .id = GNUTLS_MAC_MD5_SHA1, + .output_size = 36, + .key_size = 36, + .flags = GNUTLS_MAC_FLAG_PREIMAGE_INSECURE, + .block_size = 64 }, + { .name = "SHA256", + .oid = HASH_OID_SHA256, + .mac_oid = MAC_OID_SHA256, + .id = GNUTLS_MAC_SHA256, + .output_size = 32, + .key_size = 32, + .block_size = 64 }, + { .name = "SHA384", + .oid = HASH_OID_SHA384, + .mac_oid = MAC_OID_SHA384, + .id = GNUTLS_MAC_SHA384, + .output_size = 48, + .key_size = 48, + .block_size = 128 }, + { .name = "SHA512", + .oid = HASH_OID_SHA512, + .mac_oid = MAC_OID_SHA512, + .id = GNUTLS_MAC_SHA512, + .output_size = 64, + .key_size = 64, + .block_size = 128 }, + { .name = "SHA224", + .oid = HASH_OID_SHA224, + .mac_oid = MAC_OID_SHA224, + .id = GNUTLS_MAC_SHA224, + .output_size = 28, + .key_size = 28, + .block_size = 64 }, + { .name = "SHA3-256", + .oid = HASH_OID_SHA3_256, + .id = GNUTLS_MAC_SHA3_256, + .output_size = 32, + .key_size = 32, + .block_size = 136 }, + { .name = "SHA3-384", + .oid = HASH_OID_SHA3_384, + .id = GNUTLS_MAC_SHA3_384, + .output_size = 48, + .key_size = 48, + .block_size = 104 }, + { .name = "SHA3-512", + .oid = HASH_OID_SHA3_512, + .id = GNUTLS_MAC_SHA3_512, + .output_size = 64, + .key_size = 64, + .block_size = 72 }, + { .name = "SHA3-224", + .oid = HASH_OID_SHA3_224, + .id = GNUTLS_MAC_SHA3_224, + .output_size = 28, + .key_size = 28, + .block_size = 144 }, + { .name = "UMAC-96", + .id = GNUTLS_MAC_UMAC_96, + .output_size = 12, + .key_size = 16, + .nonce_size = 8 }, + { .name = "UMAC-128", + .id = GNUTLS_MAC_UMAC_128, + .output_size = 16, + .key_size = 16, + .nonce_size = 8 }, + { .name = "AEAD", .id = GNUTLS_MAC_AEAD, .placeholder = 1 }, + { .name = "MD5", + .oid = HASH_OID_MD5, + .id = GNUTLS_MAC_MD5, + .output_size = 16, + .key_size = 16, + .flags = GNUTLS_MAC_FLAG_PREIMAGE_INSECURE, + .block_size = 64 }, + { .name = "MD2", + .oid = HASH_OID_MD2, + .flags = GNUTLS_MAC_FLAG_PREIMAGE_INSECURE, + .id = GNUTLS_MAC_MD2 }, + { .name = "RIPEMD160", + .oid = HASH_OID_RMD160, + .id = GNUTLS_MAC_RMD160, + .output_size = 20, + .key_size = 20, + .block_size = 64 }, + { .name = "GOSTR341194", + .oid = HASH_OID_GOST_R_3411_94, + .mac_oid = MAC_OID_GOST_R_3411_94, + .id = GNUTLS_MAC_GOSTR_94, + .output_size = 32, + .key_size = 32, + .block_size = 32, + .flags = GNUTLS_MAC_FLAG_PREIMAGE_INSECURE }, + { .name = "STREEBOG-256", + .oid = HASH_OID_STREEBOG_256, + .mac_oid = MAC_OID_STREEBOG_256, + .id = GNUTLS_MAC_STREEBOG_256, + .output_size = 32, + .key_size = 32, + .block_size = 64 }, + { .name = "STREEBOG-512", + .oid = HASH_OID_STREEBOG_512, + .mac_oid = MAC_OID_STREEBOG_512, + .id = GNUTLS_MAC_STREEBOG_512, + .output_size = 64, + .key_size = 64, + .block_size = 64 }, + { + .name = "AES-CMAC-128", + .id = GNUTLS_MAC_AES_CMAC_128, + .output_size = 16, + .key_size = 16, + }, + { .name = "AES-CMAC-256", + .id = GNUTLS_MAC_AES_CMAC_256, + .output_size = 16, + .key_size = 32 }, + { .name = "AES-GMAC-128", + .id = GNUTLS_MAC_AES_GMAC_128, + .output_size = 16, + .key_size = 16, + .nonce_size = 12 }, + { .name = "AES-GMAC-192", + .id = GNUTLS_MAC_AES_GMAC_192, + .output_size = 16, + .key_size = 24, + .nonce_size = 12 }, + { .name = "AES-GMAC-256", + .id = GNUTLS_MAC_AES_GMAC_256, + .output_size = 16, + .key_size = 32, + .nonce_size = 12 }, + { .name = "GOST28147-TC26Z-IMIT", + .id = GNUTLS_MAC_GOST28147_TC26Z_IMIT, + .output_size = 4, + .key_size = 32, + .block_size = 8, + .flags = GNUTLS_MAC_FLAG_CONTINUOUS_MAC }, + { .name = "SHAKE-128", + .oid = HASH_OID_SHAKE_128, + .id = GNUTLS_MAC_SHAKE_128, + .block_size = 168 }, + { .name = "SHAKE-256", + .oid = HASH_OID_SHAKE_256, + .id = GNUTLS_MAC_SHAKE_256, + .block_size = 136 }, + { .name = "OMAC-MAGMA", + .id = GNUTLS_MAC_MAGMA_OMAC, + .output_size = 8, + .key_size = 32, + .block_size = 8 }, + { .name = "OMAC-KUZNYECHIK", + .id = GNUTLS_MAC_KUZNYECHIK_OMAC, + .output_size = 16, + .key_size = 32, + .block_size = 16 }, + { .name = "MAC-NULL", .id = GNUTLS_MAC_NULL }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; -#define GNUTLS_HASH_LOOP(b) \ - const mac_entry_st *p; \ - for(p = hash_algorithms; p->name != NULL; p++) { b ; } +#define GNUTLS_HASH_LOOP(b) \ + const mac_entry_st *p; \ + for (p = hash_algorithms; p->name != NULL; p++) { \ + b; \ + } -#define GNUTLS_HASH_ALG_LOOP(a) \ - GNUTLS_HASH_LOOP( if(p->id == algorithm) { a; break; } ) +#define GNUTLS_HASH_ALG_LOOP(a) \ + GNUTLS_HASH_LOOP(if (p->id == algorithm) { \ + a; \ + break; \ + }) const mac_entry_st *_gnutls_mac_to_entry(gnutls_mac_algorithm_t c) { - GNUTLS_HASH_LOOP(if (c == p->id) return p) ; + GNUTLS_HASH_LOOP(if (c == p->id) return p); return NULL; } @@ -253,8 +257,9 @@ const char *gnutls_digest_get_name(gnutls_digest_algorithm_t algorithm) const char *ret = NULL; GNUTLS_HASH_LOOP(if (algorithm == (unsigned)p->id && p->oid != NULL) { - ret = p->name; break;} - ) ; + ret = p->name; + break; + }); return ret; } @@ -273,11 +278,12 @@ gnutls_digest_algorithm_t gnutls_digest_get_id(const char *name) { gnutls_digest_algorithm_t ret = GNUTLS_DIG_UNKNOWN; - GNUTLS_HASH_LOOP(if (p->oid != NULL && c_strcasecmp(p->name, name) == 0) { - if (_gnutls_digest_exists - ((gnutls_digest_algorithm_t) p->id)) - ret = (gnutls_digest_algorithm_t) p->id; break;} - ) ; + GNUTLS_HASH_LOOP(if (p->oid != NULL && + c_strcasecmp(p->name, name) == 0) { + if (_gnutls_digest_exists((gnutls_digest_algorithm_t)p->id)) + ret = (gnutls_digest_algorithm_t)p->id; + break; + }); return ret; } @@ -289,7 +295,7 @@ int _gnutls_digest_mark_insecure(gnutls_digest_algorithm_t dig) mac_entry_st *p; for (p = hash_algorithms; p->name != NULL; p++) { - if (p->oid != NULL && p->id == (gnutls_mac_algorithm_t) dig) { + if (p->oid != NULL && p->id == (gnutls_mac_algorithm_t)dig) { p->flags |= GNUTLS_MAC_FLAG_PREIMAGE_INSECURE; return 0; } @@ -307,25 +313,24 @@ void _gnutls_digest_mark_insecure_all(void) for (p = hash_algorithms; p->name != NULL; p++) { p->flags |= GNUTLS_MAC_FLAG_PREIMAGE_INSECURE_REVERTIBLE | - GNUTLS_MAC_FLAG_PREIMAGE_INSECURE; + GNUTLS_MAC_FLAG_PREIMAGE_INSECURE; } #endif } -int -_gnutls_digest_set_secure(gnutls_digest_algorithm_t dig, unsigned int secure) +int _gnutls_digest_set_secure(gnutls_digest_algorithm_t dig, + unsigned int secure) { #ifndef DISABLE_SYSTEM_CONFIG mac_entry_st *p; for (p = hash_algorithms; p->name != NULL; p++) { - if (p->oid != NULL && p->id == (gnutls_mac_algorithm_t) dig) { - if (! - (p->flags & - GNUTLS_MAC_FLAG_PREIMAGE_INSECURE_REVERTIBLE)) { - return - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + if (p->oid != NULL && p->id == (gnutls_mac_algorithm_t)dig) { + if (!(p->flags & + GNUTLS_MAC_FLAG_PREIMAGE_INSECURE_REVERTIBLE)) { + return gnutls_assert_val( + GNUTLS_E_INVALID_REQUEST); } if (secure) { p->flags &= ~GNUTLS_MAC_FLAG_PREIMAGE_INSECURE; @@ -345,7 +350,7 @@ unsigned _gnutls_digest_is_insecure(gnutls_digest_algorithm_t dig) const mac_entry_st *p; for (p = hash_algorithms; p->name != NULL; p++) { - if (p->oid != NULL && p->id == (gnutls_mac_algorithm_t) dig) { + if (p->oid != NULL && p->id == (gnutls_mac_algorithm_t)dig) { return p->flags & GNUTLS_MAC_FLAG_PREIMAGE_INSECURE; } } @@ -358,12 +363,11 @@ bool _gnutls_digest_is_insecure2(gnutls_digest_algorithm_t dig, unsigned flags) const mac_entry_st *p; for (p = hash_algorithms; p->name != NULL; p++) { - if (p->oid != NULL && p->id == (gnutls_mac_algorithm_t) dig) { + if (p->oid != NULL && p->id == (gnutls_mac_algorithm_t)dig) { return (p->flags & GNUTLS_MAC_FLAG_PREIMAGE_INSECURE && - !(flags & - GNUTLS_MAC_FLAG_ALLOW_INSECURE_REVERTIBLE - && p->flags & - GNUTLS_MAC_FLAG_PREIMAGE_INSECURE_REVERTIBLE)); + !(flags & GNUTLS_MAC_FLAG_ALLOW_INSECURE_REVERTIBLE && + p->flags & + GNUTLS_MAC_FLAG_PREIMAGE_INSECURE_REVERTIBLE)); } } @@ -385,9 +389,10 @@ gnutls_mac_algorithm_t gnutls_mac_get_id(const char *name) gnutls_mac_algorithm_t ret = GNUTLS_MAC_UNKNOWN; GNUTLS_HASH_LOOP(if (c_strcasecmp(p->name, name) == 0) { - if (p->placeholder != 0 || _gnutls_mac_exists(p->id)) - ret = p->id; break;} - ) ; + if (p->placeholder != 0 || _gnutls_mac_exists(p->id)) + ret = p->id; + break; + }); return ret; } @@ -448,10 +453,9 @@ const gnutls_mac_algorithm_t *gnutls_mac_list(void) if (supported_macs[0] == 0) { int i = 0; - GNUTLS_HASH_LOOP(if - (p->placeholder != 0 - || _gnutls_mac_exists(p->id)) - supported_macs[i++] = p->id;) ; + GNUTLS_HASH_LOOP( + if (p->placeholder != 0 || _gnutls_mac_exists(p->id)) + supported_macs[i++] = p->id;); supported_macs[i++] = 0; } @@ -475,13 +479,12 @@ const gnutls_digest_algorithm_t *gnutls_digest_list(void) if (supported_digests[0] == 0) { int i = 0; - GNUTLS_HASH_LOOP(if (p->oid != NULL && (p->placeholder != 0 || - _gnutls_mac_exists - (p->id))) { - - supported_digests[i++] = - (gnutls_digest_algorithm_t) p->id;} - ) ; + GNUTLS_HASH_LOOP( + if (p->oid != NULL && (p->placeholder != 0 || + _gnutls_mac_exists(p->id))) { + supported_digests[i++] = + (gnutls_digest_algorithm_t)p->id; + }); supported_digests[i++] = 0; } @@ -502,11 +505,11 @@ const gnutls_digest_algorithm_t *gnutls_digest_list(void) gnutls_digest_algorithm_t gnutls_oid_to_digest(const char *oid) { GNUTLS_HASH_LOOP(if (p->oid && strcmp(oid, p->oid) == 0) { - if (_gnutls_digest_exists - ((gnutls_digest_algorithm_t) p->id)) { - return (gnutls_digest_algorithm_t) p->id;} - break;} - ) ; + if (_gnutls_digest_exists((gnutls_digest_algorithm_t)p->id)) { + return (gnutls_digest_algorithm_t)p->id; + } + break; + }); return GNUTLS_DIG_UNKNOWN; } @@ -525,10 +528,11 @@ gnutls_digest_algorithm_t gnutls_oid_to_digest(const char *oid) gnutls_mac_algorithm_t gnutls_oid_to_mac(const char *oid) { GNUTLS_HASH_LOOP(if (p->mac_oid && strcmp(oid, p->mac_oid) == 0) { - if (_gnutls_mac_exists(p->id)) { - return p->id;} - break;} - ) ; + if (_gnutls_mac_exists(p->id)) { + return p->id; + } + break; + }); return GNUTLS_MAC_UNKNOWN; } @@ -547,8 +551,8 @@ gnutls_mac_algorithm_t gnutls_oid_to_mac(const char *oid) const char *gnutls_digest_get_oid(gnutls_digest_algorithm_t algorithm) { GNUTLS_HASH_LOOP(if (algorithm == (unsigned)p->id && p->oid != NULL) { - return p->oid;} - ) ; + return p->oid; + }); return NULL; } diff --git a/lib/algorithms/protocols.c b/lib/algorithms/protocols.c index d3f5398857..947cf09473 100644 --- a/lib/algorithms/protocols.c +++ b/lib/algorithms/protocols.c @@ -29,133 +29,133 @@ /* TLS Versions */ static SYSTEM_CONFIG_OR_CONST version_entry_st sup_versions[] = { - {.name = "SSL3.0", - .id = GNUTLS_SSL3, - .age = 0, - .major = 3, - .minor = 0, - .transport = GNUTLS_STREAM, + { .name = "SSL3.0", + .id = GNUTLS_SSL3, + .age = 0, + .major = 3, + .minor = 0, + .transport = GNUTLS_STREAM, #ifdef ENABLE_SSL3 - .supported = 1, + .supported = 1, #endif - .explicit_iv = 0, - .extensions = 0, - .selectable_sighash = 0, - .selectable_prf = 0, - .obsolete = 1, - .only_extension = 0, - .tls_sig_sem = SIG_SEM_PRE_TLS12, - .false_start = 0}, - {.name = "TLS1.0", - .id = GNUTLS_TLS1, - .age = 1, - .major = 3, - .minor = 1, - .transport = GNUTLS_STREAM, - .supported = 1, - .explicit_iv = 0, - .extensions = 1, - .selectable_sighash = 0, - .selectable_prf = 0, - .obsolete = 0, - .only_extension = 0, - .tls_sig_sem = SIG_SEM_PRE_TLS12, - .false_start = 0}, - {.name = "TLS1.1", - .id = GNUTLS_TLS1_1, - .age = 2, - .major = 3, - .minor = 2, - .transport = GNUTLS_STREAM, - .supported = 1, - .explicit_iv = 1, - .extensions = 1, - .selectable_sighash = 0, - .selectable_prf = 0, - .obsolete = 0, - .only_extension = 0, - .tls_sig_sem = SIG_SEM_PRE_TLS12, - .false_start = 0}, - {.name = "TLS1.2", - .id = GNUTLS_TLS1_2, - .age = 3, - .major = 3, - .minor = 3, - .transport = GNUTLS_STREAM, - .supported = 1, - .explicit_iv = 1, - .extensions = 1, - .selectable_sighash = 1, - .selectable_prf = 1, - .obsolete = 0, - .only_extension = 0, - .tls_sig_sem = SIG_SEM_PRE_TLS12, - .false_start = 1}, - {.name = "TLS1.3", - .id = GNUTLS_TLS1_3, - .age = 5, - .major = 3, - .minor = 4, - .transport = GNUTLS_STREAM, - .supported = 1, - .explicit_iv = 0, - .extensions = 1, - .selectable_sighash = 1, - .selectable_prf = 1, - .tls13_sem = 1, - .obsolete = 0, - .only_extension = 1, - .post_handshake_auth = 1, - .multi_ocsp = 1, - .key_shares = 1, - .false_start = 0, /* doesn't make sense */ - .tls_sig_sem = SIG_SEM_TLS13}, - {.name = "DTLS0.9", /* Cisco AnyConnect (based on about OpenSSL 0.9.8e) */ - .id = GNUTLS_DTLS0_9, - .age = 200, - .major = 1, - .minor = 0, - .transport = GNUTLS_DGRAM, - .supported = 1, - .explicit_iv = 1, - .extensions = 1, - .selectable_sighash = 0, - .selectable_prf = 0, - .obsolete = 0, - .only_extension = 0, - .tls_sig_sem = SIG_SEM_PRE_TLS12, - .false_start = 0}, - {.name = "DTLS1.0", - .id = GNUTLS_DTLS1_0, - .age = 201, - .major = 254, - .minor = 255, - .transport = GNUTLS_DGRAM, - .supported = 1, - .explicit_iv = 1, - .extensions = 1, - .selectable_sighash = 0, - .selectable_prf = 0, - .obsolete = 0, - .only_extension = 0, - .tls_sig_sem = SIG_SEM_PRE_TLS12, - .false_start = 0}, - {.name = "DTLS1.2", - .id = GNUTLS_DTLS1_2, - .age = 202, - .major = 254, - .minor = 253, - .transport = GNUTLS_DGRAM, - .supported = 1, - .explicit_iv = 1, - .extensions = 1, - .selectable_sighash = 1, - .selectable_prf = 1, - .obsolete = 0, - .only_extension = 0, - .tls_sig_sem = SIG_SEM_PRE_TLS12, - .false_start = 1}, - {0, 0, 0, 0, 0} + .explicit_iv = 0, + .extensions = 0, + .selectable_sighash = 0, + .selectable_prf = 0, + .obsolete = 1, + .only_extension = 0, + .tls_sig_sem = SIG_SEM_PRE_TLS12, + .false_start = 0 }, + { .name = "TLS1.0", + .id = GNUTLS_TLS1, + .age = 1, + .major = 3, + .minor = 1, + .transport = GNUTLS_STREAM, + .supported = 1, + .explicit_iv = 0, + .extensions = 1, + .selectable_sighash = 0, + .selectable_prf = 0, + .obsolete = 0, + .only_extension = 0, + .tls_sig_sem = SIG_SEM_PRE_TLS12, + .false_start = 0 }, + { .name = "TLS1.1", + .id = GNUTLS_TLS1_1, + .age = 2, + .major = 3, + .minor = 2, + .transport = GNUTLS_STREAM, + .supported = 1, + .explicit_iv = 1, + .extensions = 1, + .selectable_sighash = 0, + .selectable_prf = 0, + .obsolete = 0, + .only_extension = 0, + .tls_sig_sem = SIG_SEM_PRE_TLS12, + .false_start = 0 }, + { .name = "TLS1.2", + .id = GNUTLS_TLS1_2, + .age = 3, + .major = 3, + .minor = 3, + .transport = GNUTLS_STREAM, + .supported = 1, + .explicit_iv = 1, + .extensions = 1, + .selectable_sighash = 1, + .selectable_prf = 1, + .obsolete = 0, + .only_extension = 0, + .tls_sig_sem = SIG_SEM_PRE_TLS12, + .false_start = 1 }, + { .name = "TLS1.3", + .id = GNUTLS_TLS1_3, + .age = 5, + .major = 3, + .minor = 4, + .transport = GNUTLS_STREAM, + .supported = 1, + .explicit_iv = 0, + .extensions = 1, + .selectable_sighash = 1, + .selectable_prf = 1, + .tls13_sem = 1, + .obsolete = 0, + .only_extension = 1, + .post_handshake_auth = 1, + .multi_ocsp = 1, + .key_shares = 1, + .false_start = 0, /* doesn't make sense */ + .tls_sig_sem = SIG_SEM_TLS13 }, + { .name = "DTLS0.9", /* Cisco AnyConnect (based on about OpenSSL 0.9.8e) */ + .id = GNUTLS_DTLS0_9, + .age = 200, + .major = 1, + .minor = 0, + .transport = GNUTLS_DGRAM, + .supported = 1, + .explicit_iv = 1, + .extensions = 1, + .selectable_sighash = 0, + .selectable_prf = 0, + .obsolete = 0, + .only_extension = 0, + .tls_sig_sem = SIG_SEM_PRE_TLS12, + .false_start = 0 }, + { .name = "DTLS1.0", + .id = GNUTLS_DTLS1_0, + .age = 201, + .major = 254, + .minor = 255, + .transport = GNUTLS_DGRAM, + .supported = 1, + .explicit_iv = 1, + .extensions = 1, + .selectable_sighash = 0, + .selectable_prf = 0, + .obsolete = 0, + .only_extension = 0, + .tls_sig_sem = SIG_SEM_PRE_TLS12, + .false_start = 0 }, + { .name = "DTLS1.2", + .id = GNUTLS_DTLS1_2, + .age = 202, + .major = 254, + .minor = 253, + .transport = GNUTLS_DGRAM, + .supported = 1, + .explicit_iv = 1, + .extensions = 1, + .selectable_sighash = 1, + .selectable_prf = 1, + .obsolete = 0, + .only_extension = 0, + .tls_sig_sem = SIG_SEM_PRE_TLS12, + .false_start = 1 }, + { 0, 0, 0, 0, 0 } }; const version_entry_st *version_to_entry(gnutls_protocol_t version) @@ -179,12 +179,11 @@ const version_entry_st *nversion_to_entry(uint8_t major, uint8_t minor) return NULL; } -static int -version_is_valid_for_session(gnutls_session_t session, - const version_entry_st * v) +static int version_is_valid_for_session(gnutls_session_t session, + const version_entry_st *v) { - if (!v->supported - && !(v->supported_revertible && _gnutls_allowlisting_mode())) + if (!v->supported && + !(v->supported_revertible && _gnutls_allowlisting_mode())) return 0; if (v->transport != session->internals.transport) return 0; @@ -219,8 +218,8 @@ void _gnutls_version_mark_disabled_all(void) #endif } -int -_gnutls_protocol_set_enabled(gnutls_protocol_t version, unsigned int enabled) +int _gnutls_protocol_set_enabled(gnutls_protocol_t version, + unsigned int enabled) { #ifndef DISABLE_SYSTEM_CONFIG version_entry_st *p; @@ -228,8 +227,8 @@ _gnutls_protocol_set_enabled(gnutls_protocol_t version, unsigned int enabled) for (p = sup_versions; p->name != NULL; p++) if (p->id == version) { if (!p->supported_revertible) { - return - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + return gnutls_assert_val( + GNUTLS_E_INVALID_REQUEST); } p->supported = enabled; return 0; @@ -239,8 +238,8 @@ _gnutls_protocol_set_enabled(gnutls_protocol_t version, unsigned int enabled) } /* Return the priority of the provided version number */ -int -_gnutls_version_priority(gnutls_session_t session, gnutls_protocol_t version) +int _gnutls_version_priority(gnutls_session_t session, + gnutls_protocol_t version) { unsigned int i; @@ -265,7 +264,7 @@ const version_entry_st *_gnutls_version_lowest(gnutls_session_t session) for (i = 0; i < session->internals.priorities->protocol.num_priorities; i++) { cur_prot = - session->internals.priorities->protocol.priorities[i]; + session->internals.priorities->protocol.priorities[i]; v = version_to_entry(cur_prot); if (v != NULL && version_is_valid_for_session(session, v)) { @@ -302,7 +301,7 @@ const version_entry_st *_gnutls_version_max(gnutls_session_t session) for (i = 0; i < session->internals.priorities->protocol.num_priorities; i++) { cur_prot = - session->internals.priorities->protocol.priorities[i]; + session->internals.priorities->protocol.priorities[i]; for (p = sup_versions; p->name != NULL; p++) { if (p->id == cur_prot) { @@ -310,18 +309,17 @@ const version_entry_st *_gnutls_version_max(gnutls_session_t session) if (p->obsolete != 0) break; #endif - if (!p->supported - && !(p->supported_revertible - && _gnutls_allowlisting_mode())) + if (!p->supported && + !(p->supported_revertible && + _gnutls_allowlisting_mode())) break; if (p->transport != session->internals.transport) break; - if (p->tls13_sem - && (session-> - internals.flags & INT_FLAG_NO_TLS13)) + if (p->tls13_sem && (session->internals.flags & + INT_FLAG_NO_TLS13)) break; if (max == NULL || cur_prot > max->id) { @@ -356,7 +354,7 @@ const version_entry_st *_gnutls_legacy_version_max(gnutls_session_t session) * error code. It will return GNUTLS_E_UNSUPPORTED_VERSION_PACKET * if there is no version >= TLS 1.3. */ -int _gnutls_write_supported_versions(gnutls_session_t session, uint8_t * buffer, +int _gnutls_write_supported_versions(gnutls_session_t session, uint8_t *buffer, ssize_t buffer_size) { gnutls_protocol_t cur_prot; @@ -368,16 +366,16 @@ int _gnutls_write_supported_versions(gnutls_session_t session, uint8_t * buffer, for (i = 0; i < session->internals.priorities->protocol.num_priorities; i++) { cur_prot = - session->internals.priorities->protocol.priorities[i]; + session->internals.priorities->protocol.priorities[i]; for (p = sup_versions; p->name != NULL; p++) { if (p->id == cur_prot) { if (p->obsolete != 0) break; - if (!p->supported - && !(p->supported_revertible - && _gnutls_allowlisting_mode())) + if (!p->supported && + !(p->supported_revertible && + _gnutls_allowlisting_mode())) break; if (p->transport != @@ -388,9 +386,9 @@ int _gnutls_write_supported_versions(gnutls_session_t session, uint8_t * buffer, at_least_one_new = 1; if (buffer_size > 2) { - _gnutls_debug_log - ("Advertizing version %d.%d\n", - (int)p->major, (int)p->minor); + _gnutls_debug_log( + "Advertizing version %d.%d\n", + (int)p->major, (int)p->minor); buffer[0] = p->major; buffer[1] = p->minor; written_bytes += 2; @@ -407,7 +405,7 @@ int _gnutls_write_supported_versions(gnutls_session_t session, uint8_t * buffer, } } - finish: +finish: if (written_bytes == 0) return gnutls_assert_val(GNUTLS_E_NO_PRIORITIES_WERE_SET); @@ -425,7 +423,8 @@ unsigned _gnutls_version_is_too_high(gnutls_session_t session, uint8_t major, const version_entry_st *e; e = _gnutls_legacy_version_max(session); - if (e == NULL) /* we don't know; but that means something is unconfigured */ + if (e == + NULL) /* we don't know; but that means something is unconfigured */ return 1; if (e->transport == GNUTLS_DGRAM) { @@ -552,9 +551,8 @@ gnutls_protocol_t _gnutls_version_get(uint8_t major, uint8_t minor) /* Version Functions */ -int -_gnutls_nversion_is_supported(gnutls_session_t session, - unsigned char major, unsigned char minor) +int _gnutls_nversion_is_supported(gnutls_session_t session, unsigned char major, + unsigned char minor) { const version_entry_st *p; int version = 0; @@ -565,13 +563,12 @@ _gnutls_nversion_is_supported(gnutls_session_t session, if (p->obsolete != 0) return 0; #endif - if (p->tls13_sem - && (session->internals.flags & INT_FLAG_NO_TLS13)) + if (p->tls13_sem && + (session->internals.flags & INT_FLAG_NO_TLS13)) return 0; - if (!p->supported - && !(p->supported_revertible - && _gnutls_allowlisting_mode())) + if (!p->supported && !(p->supported_revertible && + _gnutls_allowlisting_mode())) return 0; if (p->transport != session->internals.transport) @@ -586,7 +583,7 @@ _gnutls_nversion_is_supported(gnutls_session_t session, return 0; if (_gnutls_version_priority(session, version) < 0) - return 0; /* disabled by the user */ + return 0; /* disabled by the user */ else return 1; } diff --git a/lib/algorithms/publickey.c b/lib/algorithms/publickey.c index 010fabd7d5..77c947510f 100644 --- a/lib/algorithms/publickey.c +++ b/lib/algorithms/publickey.c @@ -30,7 +30,8 @@ typedef struct { gnutls_kx_algorithm_t kx_algorithm; gnutls_pk_algorithm_t pk_algorithm; - enum encipher_type encipher_type; /* CIPHER_ENCRYPT if this algorithm is to be used + enum encipher_type + encipher_type; /* CIPHER_ENCRYPT if this algorithm is to be used * for encryption, CIPHER_SIGN if signature only, * CIPHER_IGN if this does not apply at all. * @@ -45,60 +46,60 @@ typedef struct { * use GNUTLS_KX_RSA or GNUTLS_KX_DHE_RSA. */ static const gnutls_pk_map pk_mappings[] = { - {GNUTLS_KX_RSA, GNUTLS_PK_RSA, CIPHER_ENCRYPT}, - {GNUTLS_KX_DHE_RSA, GNUTLS_PK_RSA, CIPHER_SIGN}, - {GNUTLS_KX_SRP_RSA, GNUTLS_PK_RSA, CIPHER_SIGN}, - {GNUTLS_KX_ECDHE_RSA, GNUTLS_PK_RSA, CIPHER_SIGN}, - {GNUTLS_KX_ECDHE_ECDSA, GNUTLS_PK_EC, CIPHER_SIGN}, - {GNUTLS_KX_ECDHE_ECDSA, GNUTLS_PK_EDDSA_ED25519, CIPHER_SIGN}, - {GNUTLS_KX_ECDHE_ECDSA, GNUTLS_PK_EDDSA_ED448, CIPHER_SIGN}, - {GNUTLS_KX_DHE_DSS, GNUTLS_PK_DSA, CIPHER_SIGN}, - {GNUTLS_KX_DHE_RSA, GNUTLS_PK_RSA_PSS, CIPHER_SIGN}, - {GNUTLS_KX_ECDHE_RSA, GNUTLS_PK_RSA_PSS, CIPHER_SIGN}, - {GNUTLS_KX_SRP_DSS, GNUTLS_PK_DSA, CIPHER_SIGN}, - {GNUTLS_KX_RSA_PSK, GNUTLS_PK_RSA, CIPHER_ENCRYPT}, - {GNUTLS_KX_VKO_GOST_12, GNUTLS_PK_GOST_01, CIPHER_SIGN}, - {GNUTLS_KX_VKO_GOST_12, GNUTLS_PK_GOST_12_256, CIPHER_SIGN}, - {GNUTLS_KX_VKO_GOST_12, GNUTLS_PK_GOST_12_512, CIPHER_SIGN}, - {0, 0, 0} + { GNUTLS_KX_RSA, GNUTLS_PK_RSA, CIPHER_ENCRYPT }, + { GNUTLS_KX_DHE_RSA, GNUTLS_PK_RSA, CIPHER_SIGN }, + { GNUTLS_KX_SRP_RSA, GNUTLS_PK_RSA, CIPHER_SIGN }, + { GNUTLS_KX_ECDHE_RSA, GNUTLS_PK_RSA, CIPHER_SIGN }, + { GNUTLS_KX_ECDHE_ECDSA, GNUTLS_PK_EC, CIPHER_SIGN }, + { GNUTLS_KX_ECDHE_ECDSA, GNUTLS_PK_EDDSA_ED25519, CIPHER_SIGN }, + { GNUTLS_KX_ECDHE_ECDSA, GNUTLS_PK_EDDSA_ED448, CIPHER_SIGN }, + { GNUTLS_KX_DHE_DSS, GNUTLS_PK_DSA, CIPHER_SIGN }, + { GNUTLS_KX_DHE_RSA, GNUTLS_PK_RSA_PSS, CIPHER_SIGN }, + { GNUTLS_KX_ECDHE_RSA, GNUTLS_PK_RSA_PSS, CIPHER_SIGN }, + { GNUTLS_KX_SRP_DSS, GNUTLS_PK_DSA, CIPHER_SIGN }, + { GNUTLS_KX_RSA_PSK, GNUTLS_PK_RSA, CIPHER_ENCRYPT }, + { GNUTLS_KX_VKO_GOST_12, GNUTLS_PK_GOST_01, CIPHER_SIGN }, + { GNUTLS_KX_VKO_GOST_12, GNUTLS_PK_GOST_12_256, CIPHER_SIGN }, + { GNUTLS_KX_VKO_GOST_12, GNUTLS_PK_GOST_12_512, CIPHER_SIGN }, + { 0, 0, 0 } }; -#define GNUTLS_PK_MAP_LOOP(b) \ - const gnutls_pk_map *p; \ - for(p = pk_mappings; p->kx_algorithm != 0; p++) { b } +#define GNUTLS_PK_MAP_LOOP(b) \ + const gnutls_pk_map *p; \ + for (p = pk_mappings; p->kx_algorithm != 0; p++) { \ + b \ + } -#define GNUTLS_PK_MAP_ALG_LOOP(a) \ - GNUTLS_PK_MAP_LOOP( if(p->kx_algorithm == kx_algorithm) { a; break; }) +#define GNUTLS_PK_MAP_ALG_LOOP(a) \ + GNUTLS_PK_MAP_LOOP(if (p->kx_algorithm == kx_algorithm) { \ + a; \ + break; \ + }) -unsigned -_gnutls_kx_supports_pk(gnutls_kx_algorithm_t kx_algorithm, - gnutls_pk_algorithm_t pk_algorithm) +unsigned _gnutls_kx_supports_pk(gnutls_kx_algorithm_t kx_algorithm, + gnutls_pk_algorithm_t pk_algorithm) { - GNUTLS_PK_MAP_LOOP(if - (p->kx_algorithm == kx_algorithm - && p->pk_algorithm == pk_algorithm) { - return 1;} - ) - return 0; + GNUTLS_PK_MAP_LOOP(if (p->kx_algorithm == kx_algorithm && + p->pk_algorithm == pk_algorithm) { return 1; }) + return 0; } -unsigned -_gnutls_kx_supports_pk_usage(gnutls_kx_algorithm_t kx_algorithm, - gnutls_pk_algorithm_t pk_algorithm, - unsigned int key_usage) +unsigned _gnutls_kx_supports_pk_usage(gnutls_kx_algorithm_t kx_algorithm, + gnutls_pk_algorithm_t pk_algorithm, + unsigned int key_usage) { const gnutls_pk_map *p; for (p = pk_mappings; p->kx_algorithm != 0; p++) { - if (p->kx_algorithm == kx_algorithm - && p->pk_algorithm == pk_algorithm) { + if (p->kx_algorithm == kx_algorithm && + p->pk_algorithm == pk_algorithm) { if (key_usage == 0) return 1; - else if (p->encipher_type == CIPHER_SIGN - && (key_usage & GNUTLS_KEY_DIGITAL_SIGNATURE)) + else if (p->encipher_type == CIPHER_SIGN && + (key_usage & GNUTLS_KEY_DIGITAL_SIGNATURE)) return 1; - else if (p->encipher_type == CIPHER_ENCRYPT - && (key_usage & GNUTLS_KEY_KEY_ENCIPHERMENT)) + else if (p->encipher_type == CIPHER_ENCRYPT && + (key_usage & GNUTLS_KEY_KEY_ENCIPHERMENT)) return 1; else return 0; @@ -114,63 +115,103 @@ struct gnutls_pk_entry { const char *name; const char *oid; gnutls_pk_algorithm_t id; - gnutls_ecc_curve_t curve; /* to map PK to specific OID, we need to know the curve for EdDSA */ - bool no_prehashed; /* non-zero if the algorithm cannot sign pre-hashed data */ + gnutls_ecc_curve_t + curve; /* to map PK to specific OID, we need to know the curve for EdDSA */ + bool no_prehashed; /* non-zero if the algorithm cannot sign pre-hashed data */ }; typedef struct gnutls_pk_entry gnutls_pk_entry; static const gnutls_pk_entry pk_algorithms[] = { /* having duplicate entries is ok, as long as the one * we want to return OID from is first */ - {.name = "RSA",.oid = PK_PKIX1_RSA_OID,.id = GNUTLS_PK_RSA, - .curve = GNUTLS_ECC_CURVE_INVALID}, - {.name = "RSA-PSS",.oid = PK_PKIX1_RSA_PSS_OID,.id = GNUTLS_PK_RSA_PSS, - .curve = GNUTLS_ECC_CURVE_INVALID}, - {.name = "RSA (X.509)",.oid = PK_X509_RSA_OID,.id = GNUTLS_PK_RSA, - .curve = GNUTLS_ECC_CURVE_INVALID}, /* some certificates use this OID for RSA */ - {.name = "RSA-MD5",.oid = SIG_RSA_MD5_OID,.id = GNUTLS_PK_RSA, - .curve = GNUTLS_ECC_CURVE_INVALID}, /* some other broken certificates set RSA with MD5 as an indicator of RSA */ - {.name = "RSA-SHA1",.oid = SIG_RSA_SHA1_OID,.id = GNUTLS_PK_RSA, - .curve = GNUTLS_ECC_CURVE_INVALID}, /* some other broken certificates set RSA with SHA1 as an indicator of RSA */ - {.name = "RSA-SHA1",.oid = ISO_SIG_RSA_SHA1_OID,.id = GNUTLS_PK_RSA, - .curve = GNUTLS_ECC_CURVE_INVALID}, /* some other broken certificates set RSA with SHA1 as an indicator of RSA */ - {.name = "DSA",.oid = PK_DSA_OID,.id = GNUTLS_PK_DSA, - .curve = GNUTLS_ECC_CURVE_INVALID}, - {.name = "GOST R 34.10-2012-512",.oid = PK_GOST_R3410_2012_512_OID,.id = - GNUTLS_PK_GOST_12_512, - .curve = GNUTLS_ECC_CURVE_INVALID}, - {.name = "GOST R 34.10-2012-256",.oid = PK_GOST_R3410_2012_256_OID,.id = - GNUTLS_PK_GOST_12_256, - .curve = GNUTLS_ECC_CURVE_INVALID}, - {.name = "GOST R 34.10-2001",.oid = PK_GOST_R3410_2001_OID,.id = - GNUTLS_PK_GOST_01, - .curve = GNUTLS_ECC_CURVE_INVALID}, - {.name = "GOST R 34.10-94",.oid = PK_GOST_R3410_94_OID,.id = - GNUTLS_PK_UNKNOWN, - .curve = GNUTLS_ECC_CURVE_INVALID}, - {.name = "EC/ECDSA",.oid = "1.2.840.10045.2.1",.id = GNUTLS_PK_ECDSA, - .curve = GNUTLS_ECC_CURVE_INVALID}, - {.name = "EdDSA (Ed25519)",.oid = SIG_EDDSA_SHA512_OID,.id = - GNUTLS_PK_EDDSA_ED25519, - .curve = GNUTLS_ECC_CURVE_ED25519,.no_prehashed = 1}, - {.name = "EdDSA (Ed448)",.oid = SIG_ED448_OID,.id = - GNUTLS_PK_EDDSA_ED448, - .curve = GNUTLS_ECC_CURVE_ED448,.no_prehashed = 1}, - {.name = "DH",.oid = NULL,.id = GNUTLS_PK_DH, - .curve = GNUTLS_ECC_CURVE_INVALID}, - {.name = "ECDH (X25519)",.oid = ECDH_X25519_OID,.id = - GNUTLS_PK_ECDH_X25519, - .curve = GNUTLS_ECC_CURVE_X25519}, - {.name = "ECDH (X448)",.oid = ECDH_X448_OID,.id = GNUTLS_PK_ECDH_X448, - .curve = GNUTLS_ECC_CURVE_X448}, - {.name = "UNKNOWN",.oid = NULL,.id = GNUTLS_PK_UNKNOWN, - .curve = GNUTLS_ECC_CURVE_INVALID}, - {0, 0, 0, 0} + { .name = "RSA", + .oid = PK_PKIX1_RSA_OID, + .id = GNUTLS_PK_RSA, + .curve = GNUTLS_ECC_CURVE_INVALID }, + { .name = "RSA-PSS", + .oid = PK_PKIX1_RSA_PSS_OID, + .id = GNUTLS_PK_RSA_PSS, + .curve = GNUTLS_ECC_CURVE_INVALID }, + { .name = "RSA (X.509)", + .oid = PK_X509_RSA_OID, + .id = GNUTLS_PK_RSA, + .curve = + GNUTLS_ECC_CURVE_INVALID }, /* some certificates use this OID for RSA */ + { .name = "RSA-MD5", + .oid = SIG_RSA_MD5_OID, + .id = GNUTLS_PK_RSA, + .curve = + GNUTLS_ECC_CURVE_INVALID }, /* some other broken certificates set RSA with MD5 as an indicator of RSA */ + { .name = "RSA-SHA1", + .oid = SIG_RSA_SHA1_OID, + .id = GNUTLS_PK_RSA, + .curve = + GNUTLS_ECC_CURVE_INVALID }, /* some other broken certificates set RSA with SHA1 as an indicator of RSA */ + { .name = "RSA-SHA1", + .oid = ISO_SIG_RSA_SHA1_OID, + .id = GNUTLS_PK_RSA, + .curve = + GNUTLS_ECC_CURVE_INVALID }, /* some other broken certificates set RSA with SHA1 as an indicator of RSA */ + { .name = "DSA", + .oid = PK_DSA_OID, + .id = GNUTLS_PK_DSA, + .curve = GNUTLS_ECC_CURVE_INVALID }, + { .name = "GOST R 34.10-2012-512", + .oid = PK_GOST_R3410_2012_512_OID, + .id = GNUTLS_PK_GOST_12_512, + .curve = GNUTLS_ECC_CURVE_INVALID }, + { .name = "GOST R 34.10-2012-256", + .oid = PK_GOST_R3410_2012_256_OID, + .id = GNUTLS_PK_GOST_12_256, + .curve = GNUTLS_ECC_CURVE_INVALID }, + { .name = "GOST R 34.10-2001", + .oid = PK_GOST_R3410_2001_OID, + .id = GNUTLS_PK_GOST_01, + .curve = GNUTLS_ECC_CURVE_INVALID }, + { .name = "GOST R 34.10-94", + .oid = PK_GOST_R3410_94_OID, + .id = GNUTLS_PK_UNKNOWN, + .curve = GNUTLS_ECC_CURVE_INVALID }, + { .name = "EC/ECDSA", + .oid = "1.2.840.10045.2.1", + .id = GNUTLS_PK_ECDSA, + .curve = GNUTLS_ECC_CURVE_INVALID }, + { .name = "EdDSA (Ed25519)", + .oid = SIG_EDDSA_SHA512_OID, + .id = GNUTLS_PK_EDDSA_ED25519, + .curve = GNUTLS_ECC_CURVE_ED25519, + .no_prehashed = 1 }, + { .name = "EdDSA (Ed448)", + .oid = SIG_ED448_OID, + .id = GNUTLS_PK_EDDSA_ED448, + .curve = GNUTLS_ECC_CURVE_ED448, + .no_prehashed = 1 }, + { .name = "DH", + .oid = NULL, + .id = GNUTLS_PK_DH, + .curve = GNUTLS_ECC_CURVE_INVALID }, + { .name = "ECDH (X25519)", + .oid = ECDH_X25519_OID, + .id = GNUTLS_PK_ECDH_X25519, + .curve = GNUTLS_ECC_CURVE_X25519 }, + { .name = "ECDH (X448)", + .oid = ECDH_X448_OID, + .id = GNUTLS_PK_ECDH_X448, + .curve = GNUTLS_ECC_CURVE_X448 }, + { .name = "UNKNOWN", + .oid = NULL, + .id = GNUTLS_PK_UNKNOWN, + .curve = GNUTLS_ECC_CURVE_INVALID }, + { 0, 0, 0, 0 } }; -#define GNUTLS_PK_LOOP(b) \ - { const gnutls_pk_entry *p; \ - for(p = pk_algorithms; p->name != NULL; p++) { b ; } } +#define GNUTLS_PK_LOOP(b) \ + { \ + const gnutls_pk_entry *p; \ + for (p = pk_algorithms; p->name != NULL; p++) { \ + b; \ + } \ + } /** * gnutls_pk_algorithm_get_name: @@ -186,8 +227,9 @@ const char *gnutls_pk_algorithm_get_name(gnutls_pk_algorithm_t algorithm) const char *ret = NULL; GNUTLS_PK_LOOP(if (p->id == algorithm) { - ret = p->name; break;} - ) ; + ret = p->name; + break; + }); return ret; } @@ -211,11 +253,12 @@ const gnutls_pk_algorithm_t *gnutls_pk_list(void) if (supported_pks[0] == 0) { int i = 0; - GNUTLS_PK_LOOP(if (p->id != GNUTLS_PK_UNKNOWN && - supported_pks[i > 0 ? (i - 1) : 0] != p->id - && _gnutls_pk_exists(p->id)) { - supported_pks[i++] = p->id;} - ) ; + GNUTLS_PK_LOOP( + if (p->id != GNUTLS_PK_UNKNOWN && + supported_pks[i > 0 ? (i - 1) : 0] != p->id && + _gnutls_pk_exists(p->id)) { + supported_pks[i++] = p->id; + }); supported_pks[i++] = 0; } @@ -361,7 +404,7 @@ const char *gnutls_pk_get_oid(gnutls_pk_algorithm_t algorithm) * Since: 3.6.0 -*/ gnutls_pk_algorithm_t _gnutls_oid_to_pk_and_curve(const char *oid, - gnutls_ecc_curve_t * curve) + gnutls_ecc_curve_t *curve) { gnutls_pk_algorithm_t ret = GNUTLS_PK_UNKNOWN; const gnutls_pk_entry *p; @@ -389,8 +432,7 @@ enum encipher_type _gnutls_kx_encipher_type(gnutls_kx_algorithm_t kx_algorithm) { int ret = CIPHER_IGN; GNUTLS_PK_MAP_ALG_LOOP(ret = p->encipher_type) - return ret; - + return ret; } bool _gnutls_pk_are_compat(gnutls_pk_algorithm_t pk1, gnutls_pk_algorithm_t pk2) diff --git a/lib/algorithms/secparams.c b/lib/algorithms/secparams.c index 60fa9d38f5..a1268bbc78 100644 --- a/lib/algorithms/secparams.c +++ b/lib/algorithms/secparams.c @@ -28,34 +28,35 @@ typedef struct { const char *name; gnutls_sec_param_t sec_param; - unsigned int bits; /* security level */ - unsigned int pk_bits; /* DH, RSA, SRP */ - unsigned int dsa_bits; /* bits for DSA. Handled differently since + unsigned int bits; /* security level */ + unsigned int pk_bits; /* DH, RSA, SRP */ + unsigned int dsa_bits; /* bits for DSA. Handled differently since * choice of key size in DSA is political. */ - unsigned int subgroup_bits; /* subgroup bits */ - unsigned int ecc_bits; /* bits for ECC keys */ + unsigned int subgroup_bits; /* subgroup bits */ + unsigned int ecc_bits; /* bits for ECC keys */ } gnutls_sec_params_entry; static const gnutls_sec_params_entry sec_params[] = { - {"Insecure", GNUTLS_SEC_PARAM_INSECURE, 0, 0, 0, 0, 0}, - {"Export", GNUTLS_SEC_PARAM_EXPORT, 42, 512, 0, 84, 0}, - {"Very weak", GNUTLS_SEC_PARAM_VERY_WEAK, 64, 767, 0, 128, 0}, - {"Weak", GNUTLS_SEC_PARAM_WEAK, 72, 1008, 1008, 160, 160}, + { "Insecure", GNUTLS_SEC_PARAM_INSECURE, 0, 0, 0, 0, 0 }, + { "Export", GNUTLS_SEC_PARAM_EXPORT, 42, 512, 0, 84, 0 }, + { "Very weak", GNUTLS_SEC_PARAM_VERY_WEAK, 64, 767, 0, 128, 0 }, + { "Weak", GNUTLS_SEC_PARAM_WEAK, 72, 1008, 1008, 160, 160 }, #ifdef ENABLE_FIPS140 - {"Low", GNUTLS_SEC_PARAM_LOW, 80, 1024, 1024, 160, 160}, - {"Legacy", GNUTLS_SEC_PARAM_LEGACY, 96, 1024, 1024, 192, 192}, - {"Medium", GNUTLS_SEC_PARAM_MEDIUM, 112, 2048, 2048, 224, 224}, - {"High", GNUTLS_SEC_PARAM_HIGH, 128, 3072, 3072, 256, 256}, + { "Low", GNUTLS_SEC_PARAM_LOW, 80, 1024, 1024, 160, 160 }, + { "Legacy", GNUTLS_SEC_PARAM_LEGACY, 96, 1024, 1024, 192, 192 }, + { "Medium", GNUTLS_SEC_PARAM_MEDIUM, 112, 2048, 2048, 224, 224 }, + { "High", GNUTLS_SEC_PARAM_HIGH, 128, 3072, 3072, 256, 256 }, #else - {"Low", GNUTLS_SEC_PARAM_LOW, 80, 1024, 1024, 160, 160}, /* ENISA-LEGACY */ - {"Legacy", GNUTLS_SEC_PARAM_LEGACY, 96, 1776, 2048, 192, 192}, - {"Medium", GNUTLS_SEC_PARAM_MEDIUM, 112, 2048, 2048, 256, 224}, - {"High", GNUTLS_SEC_PARAM_HIGH, 128, 3072, 3072, 256, 256}, + { "Low", GNUTLS_SEC_PARAM_LOW, 80, 1024, 1024, 160, + 160 }, /* ENISA-LEGACY */ + { "Legacy", GNUTLS_SEC_PARAM_LEGACY, 96, 1776, 2048, 192, 192 }, + { "Medium", GNUTLS_SEC_PARAM_MEDIUM, 112, 2048, 2048, 256, 224 }, + { "High", GNUTLS_SEC_PARAM_HIGH, 128, 3072, 3072, 256, 256 }, #endif - {"Ultra", GNUTLS_SEC_PARAM_ULTRA, 192, 8192, 8192, 384, 384}, - {"Future", GNUTLS_SEC_PARAM_FUTURE, 256, 15360, 15360, 512, 512}, - {NULL, 0, 0, 0, 0, 0} + { "Ultra", GNUTLS_SEC_PARAM_ULTRA, 192, 8192, 8192, 384, 384 }, + { "Future", GNUTLS_SEC_PARAM_FUTURE, 256, 15360, 15360, 512, 512 }, + { NULL, 0, 0, 0, 0, 0 } }; /** @@ -73,9 +74,8 @@ static const gnutls_sec_params_entry sec_params[] = { * * Since: 2.12.0 **/ -unsigned int -gnutls_sec_param_to_pk_bits(gnutls_pk_algorithm_t algo, - gnutls_sec_param_t param) +unsigned int gnutls_sec_param_to_pk_bits(gnutls_pk_algorithm_t algo, + gnutls_sec_param_t param) { unsigned int ret = 0; const gnutls_sec_params_entry *p; @@ -201,8 +201,8 @@ const char *gnutls_sec_param_get_name(gnutls_sec_param_t param) * * Since: 2.12.0 **/ -gnutls_sec_param_t -gnutls_pk_bits_to_sec_param(gnutls_pk_algorithm_t algo, unsigned int bits) +gnutls_sec_param_t gnutls_pk_bits_to_sec_param(gnutls_pk_algorithm_t algo, + unsigned int bits) { gnutls_sec_param_t ret = GNUTLS_SEC_PARAM_INSECURE; const gnutls_sec_params_entry *p; diff --git a/lib/algorithms/sign.c b/lib/algorithms/sign.c index 7f0e6ae934..9e1356dfd7 100644 --- a/lib/algorithms/sign.c +++ b/lib/algorithms/sign.c @@ -33,109 +33,110 @@ */ #ifdef ALLOW_SHA1 -# define SHA1_SECURE_VAL _SECURE +#define SHA1_SECURE_VAL _SECURE #else -# define SHA1_SECURE_VAL _INSECURE_FOR_CERTS +#define SHA1_SECURE_VAL _INSECURE_FOR_CERTS #endif static SYSTEM_CONFIG_OR_CONST gnutls_sign_entry_st sign_algorithms[] = { /* RSA-PKCS#1 1.5: must be before PSS, * so that gnutls_pk_to_sign() will return * these first for backwards compatibility. */ - {.name = "RSA-SHA256", - .oid = SIG_RSA_SHA256_OID, - .id = GNUTLS_SIGN_RSA_SHA256, - .pk = GNUTLS_PK_RSA, - .hash = GNUTLS_DIG_SHA256, - .aid = {{4, 1}, SIG_SEM_DEFAULT}}, - {.name = "RSA-SHA384", - .oid = SIG_RSA_SHA384_OID, - .id = GNUTLS_SIGN_RSA_SHA384, - .pk = GNUTLS_PK_RSA, - .hash = GNUTLS_DIG_SHA384, - .aid = {{5, 1}, SIG_SEM_DEFAULT}}, - {.name = "RSA-SHA512", - .oid = SIG_RSA_SHA512_OID, - .id = GNUTLS_SIGN_RSA_SHA512, - .pk = GNUTLS_PK_RSA, - .hash = GNUTLS_DIG_SHA512, - .aid = {{6, 1}, SIG_SEM_DEFAULT}}, + { .name = "RSA-SHA256", + .oid = SIG_RSA_SHA256_OID, + .id = GNUTLS_SIGN_RSA_SHA256, + .pk = GNUTLS_PK_RSA, + .hash = GNUTLS_DIG_SHA256, + .aid = { { 4, 1 }, SIG_SEM_DEFAULT } }, + { .name = "RSA-SHA384", + .oid = SIG_RSA_SHA384_OID, + .id = GNUTLS_SIGN_RSA_SHA384, + .pk = GNUTLS_PK_RSA, + .hash = GNUTLS_DIG_SHA384, + .aid = { { 5, 1 }, SIG_SEM_DEFAULT } }, + { .name = "RSA-SHA512", + .oid = SIG_RSA_SHA512_OID, + .id = GNUTLS_SIGN_RSA_SHA512, + .pk = GNUTLS_PK_RSA, + .hash = GNUTLS_DIG_SHA512, + .aid = { { 6, 1 }, SIG_SEM_DEFAULT } }, /* RSA-PSS */ - {.name = "RSA-PSS-SHA256", - .oid = PK_PKIX1_RSA_PSS_OID, - .id = GNUTLS_SIGN_RSA_PSS_SHA256, - .pk = GNUTLS_PK_RSA_PSS, - .priv_pk = GNUTLS_PK_RSA, /* PKCS#11 doesn't separate RSA from RSA-PSS privkeys */ - .hash = GNUTLS_DIG_SHA256, - .flags = GNUTLS_SIGN_FLAG_TLS13_OK, - .aid = {{8, 9}, SIG_SEM_DEFAULT}}, - {.name = "RSA-PSS-RSAE-SHA256", - .oid = PK_PKIX1_RSA_PSS_OID, - .id = GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, - .pk = GNUTLS_PK_RSA_PSS, - .cert_pk = GNUTLS_PK_RSA, - .priv_pk = GNUTLS_PK_RSA, - .hash = GNUTLS_DIG_SHA256, - .flags = GNUTLS_SIGN_FLAG_TLS13_OK, - .aid = {{8, 4}, SIG_SEM_DEFAULT}}, - {.name = "RSA-PSS-SHA384", - .oid = PK_PKIX1_RSA_PSS_OID, - .id = GNUTLS_SIGN_RSA_PSS_SHA384, - .pk = GNUTLS_PK_RSA_PSS, - .priv_pk = GNUTLS_PK_RSA, - .hash = GNUTLS_DIG_SHA384, - .flags = GNUTLS_SIGN_FLAG_TLS13_OK, - .aid = {{8, 0x0A}, SIG_SEM_DEFAULT}}, - {.name = "RSA-PSS-RSAE-SHA384", - .oid = PK_PKIX1_RSA_PSS_OID, - .id = GNUTLS_SIGN_RSA_PSS_RSAE_SHA384, - .pk = GNUTLS_PK_RSA_PSS, - .cert_pk = GNUTLS_PK_RSA, - .priv_pk = GNUTLS_PK_RSA, - .hash = GNUTLS_DIG_SHA384, - .flags = GNUTLS_SIGN_FLAG_TLS13_OK, - .aid = {{8, 5}, SIG_SEM_DEFAULT}}, - {.name = "RSA-PSS-SHA512", - .oid = PK_PKIX1_RSA_PSS_OID, - .id = GNUTLS_SIGN_RSA_PSS_SHA512, - .pk = GNUTLS_PK_RSA_PSS, - .priv_pk = GNUTLS_PK_RSA, - .hash = GNUTLS_DIG_SHA512, - .flags = GNUTLS_SIGN_FLAG_TLS13_OK, - .aid = {{8, 0x0B}, SIG_SEM_DEFAULT}}, - {.name = "RSA-PSS-RSAE-SHA512", - .oid = PK_PKIX1_RSA_PSS_OID, - .id = GNUTLS_SIGN_RSA_PSS_RSAE_SHA512, - .pk = GNUTLS_PK_RSA_PSS, - .cert_pk = GNUTLS_PK_RSA, - .priv_pk = GNUTLS_PK_RSA, - .hash = GNUTLS_DIG_SHA512, - .flags = GNUTLS_SIGN_FLAG_TLS13_OK, - .aid = {{8, 6}, SIG_SEM_DEFAULT}}, + { .name = "RSA-PSS-SHA256", + .oid = PK_PKIX1_RSA_PSS_OID, + .id = GNUTLS_SIGN_RSA_PSS_SHA256, + .pk = GNUTLS_PK_RSA_PSS, + .priv_pk = + GNUTLS_PK_RSA, /* PKCS#11 doesn't separate RSA from RSA-PSS privkeys */ + .hash = GNUTLS_DIG_SHA256, + .flags = GNUTLS_SIGN_FLAG_TLS13_OK, + .aid = { { 8, 9 }, SIG_SEM_DEFAULT } }, + { .name = "RSA-PSS-RSAE-SHA256", + .oid = PK_PKIX1_RSA_PSS_OID, + .id = GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, + .pk = GNUTLS_PK_RSA_PSS, + .cert_pk = GNUTLS_PK_RSA, + .priv_pk = GNUTLS_PK_RSA, + .hash = GNUTLS_DIG_SHA256, + .flags = GNUTLS_SIGN_FLAG_TLS13_OK, + .aid = { { 8, 4 }, SIG_SEM_DEFAULT } }, + { .name = "RSA-PSS-SHA384", + .oid = PK_PKIX1_RSA_PSS_OID, + .id = GNUTLS_SIGN_RSA_PSS_SHA384, + .pk = GNUTLS_PK_RSA_PSS, + .priv_pk = GNUTLS_PK_RSA, + .hash = GNUTLS_DIG_SHA384, + .flags = GNUTLS_SIGN_FLAG_TLS13_OK, + .aid = { { 8, 0x0A }, SIG_SEM_DEFAULT } }, + { .name = "RSA-PSS-RSAE-SHA384", + .oid = PK_PKIX1_RSA_PSS_OID, + .id = GNUTLS_SIGN_RSA_PSS_RSAE_SHA384, + .pk = GNUTLS_PK_RSA_PSS, + .cert_pk = GNUTLS_PK_RSA, + .priv_pk = GNUTLS_PK_RSA, + .hash = GNUTLS_DIG_SHA384, + .flags = GNUTLS_SIGN_FLAG_TLS13_OK, + .aid = { { 8, 5 }, SIG_SEM_DEFAULT } }, + { .name = "RSA-PSS-SHA512", + .oid = PK_PKIX1_RSA_PSS_OID, + .id = GNUTLS_SIGN_RSA_PSS_SHA512, + .pk = GNUTLS_PK_RSA_PSS, + .priv_pk = GNUTLS_PK_RSA, + .hash = GNUTLS_DIG_SHA512, + .flags = GNUTLS_SIGN_FLAG_TLS13_OK, + .aid = { { 8, 0x0B }, SIG_SEM_DEFAULT } }, + { .name = "RSA-PSS-RSAE-SHA512", + .oid = PK_PKIX1_RSA_PSS_OID, + .id = GNUTLS_SIGN_RSA_PSS_RSAE_SHA512, + .pk = GNUTLS_PK_RSA_PSS, + .cert_pk = GNUTLS_PK_RSA, + .priv_pk = GNUTLS_PK_RSA, + .hash = GNUTLS_DIG_SHA512, + .flags = GNUTLS_SIGN_FLAG_TLS13_OK, + .aid = { { 8, 6 }, SIG_SEM_DEFAULT } }, /* Ed25519: The hash algorithm here is set to be SHA512, although that is * an internal detail of Ed25519; we set it, because CMS/PKCS#7 requires * that mapping. */ - {.name = "EdDSA-Ed25519", - .oid = SIG_EDDSA_SHA512_OID, - .id = GNUTLS_SIGN_EDDSA_ED25519, - .pk = GNUTLS_PK_EDDSA_ED25519, - .hash = GNUTLS_DIG_SHA512, - .flags = GNUTLS_SIGN_FLAG_TLS13_OK, - .aid = {{8, 7}, SIG_SEM_DEFAULT}}, + { .name = "EdDSA-Ed25519", + .oid = SIG_EDDSA_SHA512_OID, + .id = GNUTLS_SIGN_EDDSA_ED25519, + .pk = GNUTLS_PK_EDDSA_ED25519, + .hash = GNUTLS_DIG_SHA512, + .flags = GNUTLS_SIGN_FLAG_TLS13_OK, + .aid = { { 8, 7 }, SIG_SEM_DEFAULT } }, /* Ed448: The hash algorithm here is set to be SHAKE256, although that is * an internal detail of Ed448; we set it, because CMS/PKCS#7 requires * that mapping. */ - {.name = "EdDSA-Ed448", - .oid = SIG_ED448_OID, - .id = GNUTLS_SIGN_EDDSA_ED448, - .pk = GNUTLS_PK_EDDSA_ED448, - .hash = GNUTLS_DIG_SHAKE_256, - .flags = GNUTLS_SIGN_FLAG_TLS13_OK, - .aid = {{8, 8}, SIG_SEM_DEFAULT}, - .hash_output_size = 114}, + { .name = "EdDSA-Ed448", + .oid = SIG_ED448_OID, + .id = GNUTLS_SIGN_EDDSA_ED448, + .pk = GNUTLS_PK_EDDSA_ED448, + .hash = GNUTLS_DIG_SHAKE_256, + .flags = GNUTLS_SIGN_FLAG_TLS13_OK, + .aid = { { 8, 8 }, SIG_SEM_DEFAULT }, + .hash_output_size = 114 }, /* ECDSA */ /* The following three signature algorithms @@ -147,277 +148,282 @@ static SYSTEM_CONFIG_OR_CONST gnutls_sign_entry_st sign_algorithms[] = { * as an alias to them. */ /* we have intentionally the ECDSA-SHAXXX algorithms first * so that gnutls_pk_to_sign() will return these. */ - {.name = "ECDSA-SHA256", - .oid = "1.2.840.10045.4.3.2", - .id = GNUTLS_SIGN_ECDSA_SHA256, - .pk = GNUTLS_PK_ECDSA, - .hash = GNUTLS_DIG_SHA256, - .aid = {{4, 3}, SIG_SEM_PRE_TLS12}}, - {.name = "ECDSA-SHA384", - .oid = "1.2.840.10045.4.3.3", - .id = GNUTLS_SIGN_ECDSA_SHA384, - .pk = GNUTLS_PK_ECDSA, - .hash = GNUTLS_DIG_SHA384, - .aid = {{5, 3}, SIG_SEM_PRE_TLS12}}, - {.name = "ECDSA-SHA512", - .oid = "1.2.840.10045.4.3.4", - .id = GNUTLS_SIGN_ECDSA_SHA512, - .pk = GNUTLS_PK_ECDSA, - .hash = GNUTLS_DIG_SHA512, - .aid = {{6, 3}, SIG_SEM_PRE_TLS12}}, - - {.name = "ECDSA-SECP256R1-SHA256", - .id = GNUTLS_SIGN_ECDSA_SECP256R1_SHA256, - .pk = GNUTLS_PK_ECDSA, - .curve = GNUTLS_ECC_CURVE_SECP256R1, - .hash = GNUTLS_DIG_SHA256, - .flags = GNUTLS_SIGN_FLAG_TLS13_OK, - .aid = {{4, 3}, SIG_SEM_TLS13}}, - {.name = "ECDSA-SECP384R1-SHA384", - .id = GNUTLS_SIGN_ECDSA_SECP384R1_SHA384, - .pk = GNUTLS_PK_ECDSA, - .curve = GNUTLS_ECC_CURVE_SECP384R1, - .hash = GNUTLS_DIG_SHA384, - .flags = GNUTLS_SIGN_FLAG_TLS13_OK, - .aid = {{5, 3}, SIG_SEM_TLS13}}, - {.name = "ECDSA-SECP521R1-SHA512", - .id = GNUTLS_SIGN_ECDSA_SECP521R1_SHA512, - .pk = GNUTLS_PK_ECDSA, - .curve = GNUTLS_ECC_CURVE_SECP521R1, - .hash = GNUTLS_DIG_SHA512, - .flags = GNUTLS_SIGN_FLAG_TLS13_OK, - .aid = {{6, 3}, SIG_SEM_TLS13}}, + { .name = "ECDSA-SHA256", + .oid = "1.2.840.10045.4.3.2", + .id = GNUTLS_SIGN_ECDSA_SHA256, + .pk = GNUTLS_PK_ECDSA, + .hash = GNUTLS_DIG_SHA256, + .aid = { { 4, 3 }, SIG_SEM_PRE_TLS12 } }, + { .name = "ECDSA-SHA384", + .oid = "1.2.840.10045.4.3.3", + .id = GNUTLS_SIGN_ECDSA_SHA384, + .pk = GNUTLS_PK_ECDSA, + .hash = GNUTLS_DIG_SHA384, + .aid = { { 5, 3 }, SIG_SEM_PRE_TLS12 } }, + { .name = "ECDSA-SHA512", + .oid = "1.2.840.10045.4.3.4", + .id = GNUTLS_SIGN_ECDSA_SHA512, + .pk = GNUTLS_PK_ECDSA, + .hash = GNUTLS_DIG_SHA512, + .aid = { { 6, 3 }, SIG_SEM_PRE_TLS12 } }, + + { .name = "ECDSA-SECP256R1-SHA256", + .id = GNUTLS_SIGN_ECDSA_SECP256R1_SHA256, + .pk = GNUTLS_PK_ECDSA, + .curve = GNUTLS_ECC_CURVE_SECP256R1, + .hash = GNUTLS_DIG_SHA256, + .flags = GNUTLS_SIGN_FLAG_TLS13_OK, + .aid = { { 4, 3 }, SIG_SEM_TLS13 } }, + { .name = "ECDSA-SECP384R1-SHA384", + .id = GNUTLS_SIGN_ECDSA_SECP384R1_SHA384, + .pk = GNUTLS_PK_ECDSA, + .curve = GNUTLS_ECC_CURVE_SECP384R1, + .hash = GNUTLS_DIG_SHA384, + .flags = GNUTLS_SIGN_FLAG_TLS13_OK, + .aid = { { 5, 3 }, SIG_SEM_TLS13 } }, + { .name = "ECDSA-SECP521R1-SHA512", + .id = GNUTLS_SIGN_ECDSA_SECP521R1_SHA512, + .pk = GNUTLS_PK_ECDSA, + .curve = GNUTLS_ECC_CURVE_SECP521R1, + .hash = GNUTLS_DIG_SHA512, + .flags = GNUTLS_SIGN_FLAG_TLS13_OK, + .aid = { { 6, 3 }, SIG_SEM_TLS13 } }, /* ECDSA-SHA3 */ - {.name = "ECDSA-SHA3-224", - .oid = SIG_ECDSA_SHA3_224_OID, - .id = GNUTLS_SIGN_ECDSA_SHA3_224, - .pk = GNUTLS_PK_EC, - .hash = GNUTLS_DIG_SHA3_224, - .aid = TLS_SIGN_AID_UNKNOWN}, - {.name = "ECDSA-SHA3-256", - .oid = SIG_ECDSA_SHA3_256_OID, - .id = GNUTLS_SIGN_ECDSA_SHA3_256, - .pk = GNUTLS_PK_EC, - .hash = GNUTLS_DIG_SHA3_256, - .aid = TLS_SIGN_AID_UNKNOWN}, - {.name = "ECDSA-SHA3-384", - .oid = SIG_ECDSA_SHA3_384_OID, - .id = GNUTLS_SIGN_ECDSA_SHA3_384, - .pk = GNUTLS_PK_EC, - .hash = GNUTLS_DIG_SHA3_384, - .aid = TLS_SIGN_AID_UNKNOWN}, - {.name = "ECDSA-SHA3-512", - .oid = SIG_ECDSA_SHA3_512_OID, - .id = GNUTLS_SIGN_ECDSA_SHA3_512, - .pk = GNUTLS_PK_EC, - .hash = GNUTLS_DIG_SHA3_512, - .aid = TLS_SIGN_AID_UNKNOWN}, - {.name = "RSA-SHA3-224", - .oid = SIG_RSA_SHA3_224_OID, - .id = GNUTLS_SIGN_RSA_SHA3_224, - .pk = GNUTLS_PK_RSA, - .hash = GNUTLS_DIG_SHA3_224, - .aid = TLS_SIGN_AID_UNKNOWN}, - {.name = "RSA-SHA3-256", - .oid = SIG_RSA_SHA3_256_OID, - .id = GNUTLS_SIGN_RSA_SHA3_256, - .pk = GNUTLS_PK_RSA, - .hash = GNUTLS_DIG_SHA3_256, - .aid = TLS_SIGN_AID_UNKNOWN}, - {.name = "RSA-SHA3-384", - .oid = SIG_RSA_SHA3_384_OID, - .id = GNUTLS_SIGN_RSA_SHA3_384, - .pk = GNUTLS_PK_RSA, - .hash = GNUTLS_DIG_SHA3_384, - .aid = TLS_SIGN_AID_UNKNOWN}, - {.name = "RSA-SHA3-512", - .oid = SIG_RSA_SHA3_512_OID, - .id = GNUTLS_SIGN_RSA_SHA3_512, - .pk = GNUTLS_PK_RSA, - .hash = GNUTLS_DIG_SHA3_512, - .aid = TLS_SIGN_AID_UNKNOWN}, + { .name = "ECDSA-SHA3-224", + .oid = SIG_ECDSA_SHA3_224_OID, + .id = GNUTLS_SIGN_ECDSA_SHA3_224, + .pk = GNUTLS_PK_EC, + .hash = GNUTLS_DIG_SHA3_224, + .aid = TLS_SIGN_AID_UNKNOWN }, + { .name = "ECDSA-SHA3-256", + .oid = SIG_ECDSA_SHA3_256_OID, + .id = GNUTLS_SIGN_ECDSA_SHA3_256, + .pk = GNUTLS_PK_EC, + .hash = GNUTLS_DIG_SHA3_256, + .aid = TLS_SIGN_AID_UNKNOWN }, + { .name = "ECDSA-SHA3-384", + .oid = SIG_ECDSA_SHA3_384_OID, + .id = GNUTLS_SIGN_ECDSA_SHA3_384, + .pk = GNUTLS_PK_EC, + .hash = GNUTLS_DIG_SHA3_384, + .aid = TLS_SIGN_AID_UNKNOWN }, + { .name = "ECDSA-SHA3-512", + .oid = SIG_ECDSA_SHA3_512_OID, + .id = GNUTLS_SIGN_ECDSA_SHA3_512, + .pk = GNUTLS_PK_EC, + .hash = GNUTLS_DIG_SHA3_512, + .aid = TLS_SIGN_AID_UNKNOWN }, + { .name = "RSA-SHA3-224", + .oid = SIG_RSA_SHA3_224_OID, + .id = GNUTLS_SIGN_RSA_SHA3_224, + .pk = GNUTLS_PK_RSA, + .hash = GNUTLS_DIG_SHA3_224, + .aid = TLS_SIGN_AID_UNKNOWN }, + { .name = "RSA-SHA3-256", + .oid = SIG_RSA_SHA3_256_OID, + .id = GNUTLS_SIGN_RSA_SHA3_256, + .pk = GNUTLS_PK_RSA, + .hash = GNUTLS_DIG_SHA3_256, + .aid = TLS_SIGN_AID_UNKNOWN }, + { .name = "RSA-SHA3-384", + .oid = SIG_RSA_SHA3_384_OID, + .id = GNUTLS_SIGN_RSA_SHA3_384, + .pk = GNUTLS_PK_RSA, + .hash = GNUTLS_DIG_SHA3_384, + .aid = TLS_SIGN_AID_UNKNOWN }, + { .name = "RSA-SHA3-512", + .oid = SIG_RSA_SHA3_512_OID, + .id = GNUTLS_SIGN_RSA_SHA3_512, + .pk = GNUTLS_PK_RSA, + .hash = GNUTLS_DIG_SHA3_512, + .aid = TLS_SIGN_AID_UNKNOWN }, /* DSA-SHA3 */ - {.name = "DSA-SHA3-224", - .oid = SIG_DSA_SHA3_224_OID, - .id = GNUTLS_SIGN_DSA_SHA3_224, - .pk = GNUTLS_PK_DSA, - .hash = GNUTLS_DIG_SHA3_224, - .aid = TLS_SIGN_AID_UNKNOWN}, - {.name = "DSA-SHA3-256", - .oid = SIG_DSA_SHA3_256_OID, - .id = GNUTLS_SIGN_DSA_SHA3_256, - .pk = GNUTLS_PK_DSA, - .hash = GNUTLS_DIG_SHA3_256, - .aid = TLS_SIGN_AID_UNKNOWN}, - {.name = "DSA-SHA3-384", - .oid = SIG_DSA_SHA3_384_OID, - .id = GNUTLS_SIGN_DSA_SHA3_384, - .pk = GNUTLS_PK_DSA, - .hash = GNUTLS_DIG_SHA3_384, - .aid = TLS_SIGN_AID_UNKNOWN}, - {.name = "DSA-SHA3-512", - .oid = SIG_DSA_SHA3_512_OID, - .id = GNUTLS_SIGN_DSA_SHA3_512, - .pk = GNUTLS_PK_DSA, - .hash = GNUTLS_DIG_SHA3_512, - .aid = TLS_SIGN_AID_UNKNOWN}, + { .name = "DSA-SHA3-224", + .oid = SIG_DSA_SHA3_224_OID, + .id = GNUTLS_SIGN_DSA_SHA3_224, + .pk = GNUTLS_PK_DSA, + .hash = GNUTLS_DIG_SHA3_224, + .aid = TLS_SIGN_AID_UNKNOWN }, + { .name = "DSA-SHA3-256", + .oid = SIG_DSA_SHA3_256_OID, + .id = GNUTLS_SIGN_DSA_SHA3_256, + .pk = GNUTLS_PK_DSA, + .hash = GNUTLS_DIG_SHA3_256, + .aid = TLS_SIGN_AID_UNKNOWN }, + { .name = "DSA-SHA3-384", + .oid = SIG_DSA_SHA3_384_OID, + .id = GNUTLS_SIGN_DSA_SHA3_384, + .pk = GNUTLS_PK_DSA, + .hash = GNUTLS_DIG_SHA3_384, + .aid = TLS_SIGN_AID_UNKNOWN }, + { .name = "DSA-SHA3-512", + .oid = SIG_DSA_SHA3_512_OID, + .id = GNUTLS_SIGN_DSA_SHA3_512, + .pk = GNUTLS_PK_DSA, + .hash = GNUTLS_DIG_SHA3_512, + .aid = TLS_SIGN_AID_UNKNOWN }, /* legacy */ - {.name = "RSA-RAW", - .oid = NULL, - .id = GNUTLS_SIGN_RSA_RAW, - .pk = GNUTLS_PK_RSA, - .hash = GNUTLS_DIG_UNKNOWN, - .aid = TLS_SIGN_AID_UNKNOWN}, - {.name = "RSA-SHA1", - .oid = SIG_RSA_SHA1_OID, - .id = GNUTLS_SIGN_RSA_SHA1, - .pk = GNUTLS_PK_RSA, - .hash = GNUTLS_DIG_SHA1, - .slevel = SHA1_SECURE_VAL, - .aid = {{2, 1}, SIG_SEM_DEFAULT}}, - {.name = "RSA-SHA1", - .oid = ISO_SIG_RSA_SHA1_OID, - .id = GNUTLS_SIGN_RSA_SHA1, - .pk = GNUTLS_PK_RSA, - .slevel = SHA1_SECURE_VAL, - .hash = GNUTLS_DIG_SHA1, - .aid = {{2, 1}, SIG_SEM_DEFAULT}}, - {.name = "RSA-SHA224", - .oid = SIG_RSA_SHA224_OID, - .id = GNUTLS_SIGN_RSA_SHA224, - .pk = GNUTLS_PK_RSA, - .hash = GNUTLS_DIG_SHA224, - .aid = TLS_SIGN_AID_UNKNOWN}, - {.name = "RSA-RMD160", - .oid = SIG_RSA_RMD160_OID, - .id = GNUTLS_SIGN_RSA_RMD160, - .pk = GNUTLS_PK_RSA, - .hash = GNUTLS_DIG_RMD160, - .slevel = _INSECURE_FOR_CERTS, - .aid = TLS_SIGN_AID_UNKNOWN}, - {.name = "DSA-SHA1", - .oid = SIG_DSA_SHA1_OID, - .id = GNUTLS_SIGN_DSA_SHA1, - .pk = GNUTLS_PK_DSA, - .slevel = SHA1_SECURE_VAL, - .hash = GNUTLS_DIG_SHA1, - .aid = {{2, 2}, SIG_SEM_PRE_TLS12}}, - {.name = "DSA-SHA1", - .oid = "1.3.14.3.2.27", - .id = GNUTLS_SIGN_DSA_SHA1, - .pk = GNUTLS_PK_DSA, - .hash = GNUTLS_DIG_SHA1, - .slevel = SHA1_SECURE_VAL, - .aid = {{2, 2}, SIG_SEM_PRE_TLS12}}, - {.name = "DSA-SHA224", - .oid = SIG_DSA_SHA224_OID, - .id = GNUTLS_SIGN_DSA_SHA224, - .pk = GNUTLS_PK_DSA, - .hash = GNUTLS_DIG_SHA224, - .aid = TLS_SIGN_AID_UNKNOWN}, - {.name = "DSA-SHA256", - .oid = SIG_DSA_SHA256_OID, - .id = GNUTLS_SIGN_DSA_SHA256, - .pk = GNUTLS_PK_DSA, - .hash = GNUTLS_DIG_SHA256, - .aid = TLS_SIGN_AID_UNKNOWN}, - {.name = "RSA-MD5", - .oid = SIG_RSA_MD5_OID, - .id = GNUTLS_SIGN_RSA_MD5, - .pk = GNUTLS_PK_RSA, - .hash = GNUTLS_DIG_MD5, - .slevel = _INSECURE, - .aid = TLS_SIGN_AID_UNKNOWN}, - {.name = "RSA-MD5", - .oid = "1.3.14.3.2.25", - .id = GNUTLS_SIGN_RSA_MD5, - .pk = GNUTLS_PK_RSA, - .hash = GNUTLS_DIG_MD5, - .slevel = _INSECURE, - .aid = TLS_SIGN_AID_UNKNOWN}, - {.name = "RSA-MD2", - .oid = SIG_RSA_MD2_OID, - .id = GNUTLS_SIGN_RSA_MD2, - .pk = GNUTLS_PK_RSA, - .hash = GNUTLS_DIG_MD2, - .slevel = _INSECURE, - .aid = TLS_SIGN_AID_UNKNOWN}, - {.name = "ECDSA-SHA1", - .oid = "1.2.840.10045.4.1", - .id = GNUTLS_SIGN_ECDSA_SHA1, - .pk = GNUTLS_PK_EC, - .slevel = SHA1_SECURE_VAL, - .hash = GNUTLS_DIG_SHA1, - .aid = {{2, 3}, SIG_SEM_DEFAULT}}, - {.name = "ECDSA-SHA224", - .oid = "1.2.840.10045.4.3.1", - .id = GNUTLS_SIGN_ECDSA_SHA224, - .pk = GNUTLS_PK_EC, - .hash = GNUTLS_DIG_SHA224, - .aid = TLS_SIGN_AID_UNKNOWN}, + { .name = "RSA-RAW", + .oid = NULL, + .id = GNUTLS_SIGN_RSA_RAW, + .pk = GNUTLS_PK_RSA, + .hash = GNUTLS_DIG_UNKNOWN, + .aid = TLS_SIGN_AID_UNKNOWN }, + { .name = "RSA-SHA1", + .oid = SIG_RSA_SHA1_OID, + .id = GNUTLS_SIGN_RSA_SHA1, + .pk = GNUTLS_PK_RSA, + .hash = GNUTLS_DIG_SHA1, + .slevel = SHA1_SECURE_VAL, + .aid = { { 2, 1 }, SIG_SEM_DEFAULT } }, + { .name = "RSA-SHA1", + .oid = ISO_SIG_RSA_SHA1_OID, + .id = GNUTLS_SIGN_RSA_SHA1, + .pk = GNUTLS_PK_RSA, + .slevel = SHA1_SECURE_VAL, + .hash = GNUTLS_DIG_SHA1, + .aid = { { 2, 1 }, SIG_SEM_DEFAULT } }, + { .name = "RSA-SHA224", + .oid = SIG_RSA_SHA224_OID, + .id = GNUTLS_SIGN_RSA_SHA224, + .pk = GNUTLS_PK_RSA, + .hash = GNUTLS_DIG_SHA224, + .aid = TLS_SIGN_AID_UNKNOWN }, + { .name = "RSA-RMD160", + .oid = SIG_RSA_RMD160_OID, + .id = GNUTLS_SIGN_RSA_RMD160, + .pk = GNUTLS_PK_RSA, + .hash = GNUTLS_DIG_RMD160, + .slevel = _INSECURE_FOR_CERTS, + .aid = TLS_SIGN_AID_UNKNOWN }, + { .name = "DSA-SHA1", + .oid = SIG_DSA_SHA1_OID, + .id = GNUTLS_SIGN_DSA_SHA1, + .pk = GNUTLS_PK_DSA, + .slevel = SHA1_SECURE_VAL, + .hash = GNUTLS_DIG_SHA1, + .aid = { { 2, 2 }, SIG_SEM_PRE_TLS12 } }, + { .name = "DSA-SHA1", + .oid = "1.3.14.3.2.27", + .id = GNUTLS_SIGN_DSA_SHA1, + .pk = GNUTLS_PK_DSA, + .hash = GNUTLS_DIG_SHA1, + .slevel = SHA1_SECURE_VAL, + .aid = { { 2, 2 }, SIG_SEM_PRE_TLS12 } }, + { .name = "DSA-SHA224", + .oid = SIG_DSA_SHA224_OID, + .id = GNUTLS_SIGN_DSA_SHA224, + .pk = GNUTLS_PK_DSA, + .hash = GNUTLS_DIG_SHA224, + .aid = TLS_SIGN_AID_UNKNOWN }, + { .name = "DSA-SHA256", + .oid = SIG_DSA_SHA256_OID, + .id = GNUTLS_SIGN_DSA_SHA256, + .pk = GNUTLS_PK_DSA, + .hash = GNUTLS_DIG_SHA256, + .aid = TLS_SIGN_AID_UNKNOWN }, + { .name = "RSA-MD5", + .oid = SIG_RSA_MD5_OID, + .id = GNUTLS_SIGN_RSA_MD5, + .pk = GNUTLS_PK_RSA, + .hash = GNUTLS_DIG_MD5, + .slevel = _INSECURE, + .aid = TLS_SIGN_AID_UNKNOWN }, + { .name = "RSA-MD5", + .oid = "1.3.14.3.2.25", + .id = GNUTLS_SIGN_RSA_MD5, + .pk = GNUTLS_PK_RSA, + .hash = GNUTLS_DIG_MD5, + .slevel = _INSECURE, + .aid = TLS_SIGN_AID_UNKNOWN }, + { .name = "RSA-MD2", + .oid = SIG_RSA_MD2_OID, + .id = GNUTLS_SIGN_RSA_MD2, + .pk = GNUTLS_PK_RSA, + .hash = GNUTLS_DIG_MD2, + .slevel = _INSECURE, + .aid = TLS_SIGN_AID_UNKNOWN }, + { .name = "ECDSA-SHA1", + .oid = "1.2.840.10045.4.1", + .id = GNUTLS_SIGN_ECDSA_SHA1, + .pk = GNUTLS_PK_EC, + .slevel = SHA1_SECURE_VAL, + .hash = GNUTLS_DIG_SHA1, + .aid = { { 2, 3 }, SIG_SEM_DEFAULT } }, + { .name = "ECDSA-SHA224", + .oid = "1.2.840.10045.4.3.1", + .id = GNUTLS_SIGN_ECDSA_SHA224, + .pk = GNUTLS_PK_EC, + .hash = GNUTLS_DIG_SHA224, + .aid = TLS_SIGN_AID_UNKNOWN }, /* GOST R 34.10-2012-512 */ - {.name = "GOSTR341012-512", - .oid = SIG_GOST_R3410_2012_512_OID, - .id = GNUTLS_SIGN_GOST_512, - .pk = GNUTLS_PK_GOST_12_512, - .hash = GNUTLS_DIG_STREEBOG_512, - .flags = GNUTLS_SIGN_FLAG_CRT_VRFY_REVERSE, - .aid = {{8, 65}, SIG_SEM_PRE_TLS12}}, + { .name = "GOSTR341012-512", + .oid = SIG_GOST_R3410_2012_512_OID, + .id = GNUTLS_SIGN_GOST_512, + .pk = GNUTLS_PK_GOST_12_512, + .hash = GNUTLS_DIG_STREEBOG_512, + .flags = GNUTLS_SIGN_FLAG_CRT_VRFY_REVERSE, + .aid = { { 8, 65 }, SIG_SEM_PRE_TLS12 } }, /* GOST R 34.10-2012-256 */ - {.name = "GOSTR341012-256", - .oid = SIG_GOST_R3410_2012_256_OID, - .id = GNUTLS_SIGN_GOST_256, - .pk = GNUTLS_PK_GOST_12_256, - .hash = GNUTLS_DIG_STREEBOG_256, - .flags = GNUTLS_SIGN_FLAG_CRT_VRFY_REVERSE, - .aid = {{8, 64}, SIG_SEM_PRE_TLS12}}, + { .name = "GOSTR341012-256", + .oid = SIG_GOST_R3410_2012_256_OID, + .id = GNUTLS_SIGN_GOST_256, + .pk = GNUTLS_PK_GOST_12_256, + .hash = GNUTLS_DIG_STREEBOG_256, + .flags = GNUTLS_SIGN_FLAG_CRT_VRFY_REVERSE, + .aid = { { 8, 64 }, SIG_SEM_PRE_TLS12 } }, /* GOST R 34.10-2001 */ - {.name = "GOSTR341001", - .oid = SIG_GOST_R3410_2001_OID, - .id = GNUTLS_SIGN_GOST_94, - .pk = GNUTLS_PK_GOST_01, - .hash = GNUTLS_DIG_GOSTR_94, - .flags = GNUTLS_SIGN_FLAG_CRT_VRFY_REVERSE, - .aid = TLS_SIGN_AID_UNKNOWN}, + { .name = "GOSTR341001", + .oid = SIG_GOST_R3410_2001_OID, + .id = GNUTLS_SIGN_GOST_94, + .pk = GNUTLS_PK_GOST_01, + .hash = GNUTLS_DIG_GOSTR_94, + .flags = GNUTLS_SIGN_FLAG_CRT_VRFY_REVERSE, + .aid = TLS_SIGN_AID_UNKNOWN }, /* GOST R 34.10-94 */ - {.name = "GOSTR341094", - .oid = SIG_GOST_R3410_94_OID, - .id = 0, - .pk = 0, - .hash = 0, - .aid = TLS_SIGN_AID_UNKNOWN}, - {.name = "DSA-SHA384", - .oid = SIG_DSA_SHA384_OID, - .id = GNUTLS_SIGN_DSA_SHA384, - .pk = GNUTLS_PK_DSA, - .hash = GNUTLS_DIG_SHA384, - .aid = TLS_SIGN_AID_UNKNOWN}, - {.name = "DSA-SHA512", - .oid = SIG_DSA_SHA512_OID, - .id = GNUTLS_SIGN_DSA_SHA512, - .pk = GNUTLS_PK_DSA, - .hash = GNUTLS_DIG_SHA512, - .aid = TLS_SIGN_AID_UNKNOWN}, - - {.name = 0, - .oid = 0, - .id = 0, - .pk = 0, - .hash = 0, - .aid = TLS_SIGN_AID_UNKNOWN} + { .name = "GOSTR341094", + .oid = SIG_GOST_R3410_94_OID, + .id = 0, + .pk = 0, + .hash = 0, + .aid = TLS_SIGN_AID_UNKNOWN }, + { .name = "DSA-SHA384", + .oid = SIG_DSA_SHA384_OID, + .id = GNUTLS_SIGN_DSA_SHA384, + .pk = GNUTLS_PK_DSA, + .hash = GNUTLS_DIG_SHA384, + .aid = TLS_SIGN_AID_UNKNOWN }, + { .name = "DSA-SHA512", + .oid = SIG_DSA_SHA512_OID, + .id = GNUTLS_SIGN_DSA_SHA512, + .pk = GNUTLS_PK_DSA, + .hash = GNUTLS_DIG_SHA512, + .aid = TLS_SIGN_AID_UNKNOWN }, + + { .name = 0, + .oid = 0, + .id = 0, + .pk = 0, + .hash = 0, + .aid = TLS_SIGN_AID_UNKNOWN } }; -#define GNUTLS_SIGN_LOOP(b) \ - do { \ - const gnutls_sign_entry_st *p; \ - for(p = sign_algorithms; p->name != NULL; p++) { b ; } \ - } while (0) +#define GNUTLS_SIGN_LOOP(b) \ + do { \ + const gnutls_sign_entry_st *p; \ + for (p = sign_algorithms; p->name != NULL; p++) { \ + b; \ + } \ + } while (0) -#define GNUTLS_SIGN_ALG_LOOP(a) \ - GNUTLS_SIGN_LOOP( if(p->id && p->id == sign) { a; break; } ) +#define GNUTLS_SIGN_ALG_LOOP(a) \ + GNUTLS_SIGN_LOOP(if (p->id && p->id == sign) { \ + a; \ + break; \ + }) /** * gnutls_sign_get_name: @@ -450,24 +456,23 @@ unsigned gnutls_sign_is_secure(gnutls_sign_algorithm_t algorithm) return gnutls_sign_is_secure2(algorithm, 0); } -bool _gnutls_sign_is_secure2(const gnutls_sign_entry_st * se, - unsigned int flags) +bool _gnutls_sign_is_secure2(const gnutls_sign_entry_st *se, unsigned int flags) { if (se->hash != GNUTLS_DIG_UNKNOWN && - _gnutls_digest_is_insecure2(se->hash, - flags & - GNUTLS_SIGN_FLAG_ALLOW_INSECURE_REVERTIBLE - ? - GNUTLS_MAC_FLAG_ALLOW_INSECURE_REVERTIBLE - : 0)) { + _gnutls_digest_is_insecure2( + se->hash, + flags & GNUTLS_SIGN_FLAG_ALLOW_INSECURE_REVERTIBLE ? + GNUTLS_MAC_FLAG_ALLOW_INSECURE_REVERTIBLE : + 0)) { return gnutls_assert_val(false); } return (flags & GNUTLS_SIGN_FLAG_SECURE_FOR_CERTS ? - se->slevel == _SECURE : - (se->slevel == _SECURE || se->slevel == _INSECURE_FOR_CERTS)) || - (flags & GNUTLS_SIGN_FLAG_ALLOW_INSECURE_REVERTIBLE && - se->flags & GNUTLS_SIGN_FLAG_INSECURE_REVERTIBLE); + se->slevel == _SECURE : + (se->slevel == _SECURE || + se->slevel == _INSECURE_FOR_CERTS)) || + (flags & GNUTLS_SIGN_FLAG_ALLOW_INSECURE_REVERTIBLE && + se->flags & GNUTLS_SIGN_FLAG_INSECURE_REVERTIBLE); } /* This is only called by cfg_apply in priority.c, in blocklisting mode. */ @@ -505,18 +510,18 @@ void _gnutls_sign_mark_insecure_all(hash_security_level_t level) #endif } -int -_gnutls_sign_set_secure(gnutls_sign_algorithm_t sign, - hash_security_level_t slevel) +int _gnutls_sign_set_secure(gnutls_sign_algorithm_t sign, + hash_security_level_t slevel) { #ifndef DISABLE_SYSTEM_CONFIG gnutls_sign_entry_st *p; for (p = sign_algorithms; p->name != NULL; p++) { if (p->id && p->id == sign) { - if (!(p->flags & GNUTLS_SIGN_FLAG_INSECURE_REVERTIBLE)) { - return - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + if (!(p->flags & + GNUTLS_SIGN_FLAG_INSECURE_REVERTIBLE)) { + return gnutls_assert_val( + GNUTLS_E_INVALID_REQUEST); } p->slevel = slevel; return 0; @@ -563,13 +568,13 @@ const gnutls_sign_algorithm_t *gnutls_sign_list(void) int i = 0; GNUTLS_SIGN_LOOP( - /* list all algorithms, but not duplicates */ - if (supported_sign[i] != p->id && - _gnutls_pk_sign_exists(p->id)) { - assert(i + 1 < MAX_ALGOS); - supported_sign[i++] = p->id; - supported_sign[i + 1] = 0;} - ) ; + /* list all algorithms, but not duplicates */ + if (supported_sign[i] != p->id && + _gnutls_pk_sign_exists(p->id)) { + assert(i + 1 < MAX_ALGOS); + supported_sign[i++] = p->id; + supported_sign[i + 1] = 0; + }); } return supported_sign; @@ -589,18 +594,16 @@ gnutls_sign_algorithm_t gnutls_sign_get_id(const char *name) gnutls_sign_algorithm_t ret = GNUTLS_SIGN_UNKNOWN; GNUTLS_SIGN_LOOP(if (c_strcasecmp(p->name, name) == 0) { - ret = p->id; break;} - ) ; + ret = p->id; + break; + }); return ret; - } const gnutls_sign_entry_st *_gnutls_oid_to_sign_entry(const char *oid) { - GNUTLS_SIGN_LOOP(if (p->oid && strcmp(oid, p->oid) == 0) { - return p;} - ) ; + GNUTLS_SIGN_LOOP(if (p->oid && strcmp(oid, p->oid) == 0) { return p; }); return NULL; } @@ -627,13 +630,11 @@ gnutls_sign_algorithm_t gnutls_oid_to_sign(const char *oid) return se->id; } -const gnutls_sign_entry_st *_gnutls_pk_to_sign_entry(gnutls_pk_algorithm_t pk, - gnutls_digest_algorithm_t - hash) +const gnutls_sign_entry_st * +_gnutls_pk_to_sign_entry(gnutls_pk_algorithm_t pk, + gnutls_digest_algorithm_t hash) { - GNUTLS_SIGN_LOOP(if (pk == p->pk && hash == p->hash) { - return p;} - ) ; + GNUTLS_SIGN_LOOP(if (pk == p->pk && hash == p->hash) { return p; }); return NULL; } @@ -648,8 +649,8 @@ const gnutls_sign_entry_st *_gnutls_pk_to_sign_entry(gnutls_pk_algorithm_t pk, * * Returns: return a #gnutls_sign_algorithm_t value, or %GNUTLS_SIGN_UNKNOWN on error. **/ -gnutls_sign_algorithm_t -gnutls_pk_to_sign(gnutls_pk_algorithm_t pk, gnutls_digest_algorithm_t hash) +gnutls_sign_algorithm_t gnutls_pk_to_sign(gnutls_pk_algorithm_t pk, + gnutls_digest_algorithm_t hash) { const gnutls_sign_entry_st *e; @@ -735,9 +736,8 @@ gnutls_pk_algorithm_t gnutls_sign_get_pk_algorithm(gnutls_sign_algorithm_t sign) * * Returns: return non-zero when the provided algorithms are compatible. **/ -unsigned -gnutls_sign_supports_pk_algorithm(gnutls_sign_algorithm_t sign, - gnutls_pk_algorithm_t pk) +unsigned gnutls_sign_supports_pk_algorithm(gnutls_sign_algorithm_t sign, + gnutls_pk_algorithm_t pk) { const gnutls_sign_entry_st *p; unsigned r; @@ -753,20 +753,19 @@ gnutls_sign_supports_pk_algorithm(gnutls_sign_algorithm_t sign, return 0; } -gnutls_sign_algorithm_t -_gnutls_tls_aid_to_sign(uint8_t id0, uint8_t id1, const version_entry_st * ver) +gnutls_sign_algorithm_t _gnutls_tls_aid_to_sign(uint8_t id0, uint8_t id1, + const version_entry_st *ver) { gnutls_sign_algorithm_t ret = GNUTLS_SIGN_UNKNOWN; if (id0 == 255 && id1 == 255) return ret; - GNUTLS_SIGN_LOOP(if (p->aid.id[0] == id0 && - p->aid.id[1] == id1 && + GNUTLS_SIGN_LOOP(if (p->aid.id[0] == id0 && p->aid.id[1] == id1 && ((p->aid.tls_sem & ver->tls_sig_sem) != 0)) { - - ret = p->id; break;} - ) ; + ret = p->id; + break; + }); return ret; } @@ -794,32 +793,26 @@ const gnutls_sign_entry_st *_gnutls_sign_to_entry(gnutls_sign_algorithm_t sign) return ret; } -const gnutls_sign_entry_st *_gnutls_tls_aid_to_sign_entry(uint8_t id0, - uint8_t id1, - const version_entry_st - * ver) +const gnutls_sign_entry_st * +_gnutls_tls_aid_to_sign_entry(uint8_t id0, uint8_t id1, + const version_entry_st *ver) { if (id0 == 255 && id1 == 255) return NULL; - GNUTLS_SIGN_LOOP(if (p->aid.id[0] == id0 && - p->aid.id[1] == id1 && - ((p->aid.tls_sem & ver->tls_sig_sem) != 0)) { - - return p;} - ) ; + GNUTLS_SIGN_LOOP( + if (p->aid.id[0] == id0 && p->aid.id[1] == id1 && + ((p->aid.tls_sem & ver->tls_sig_sem) != 0)) { return p; }); return NULL; } -const gnutls_sign_entry_st - * _gnutls13_sign_get_compatible_with_privkey(gnutls_privkey_t privkey) +const gnutls_sign_entry_st * +_gnutls13_sign_get_compatible_with_privkey(gnutls_privkey_t privkey) { GNUTLS_SIGN_LOOP(if ((p->flags & GNUTLS_SIGN_FLAG_TLS13_OK) && - _gnutls_privkey_compatible_with_sig(privkey, - p->id)) { - return p;} - ) ; + _gnutls_privkey_compatible_with_sig( + privkey, p->id)) { return p; }); return NULL; } diff --git a/lib/anon_cred.c b/lib/anon_cred.c index 851b1643c4..6f9c787cfa 100644 --- a/lib/anon_cred.c +++ b/lib/anon_cred.c @@ -24,12 +24,12 @@ #ifdef ENABLE_ANON -# include "errors.h" -# include -# include "auth.h" -# include "dh.h" -# include "num.h" -# include "mpi.h" +#include "errors.h" +#include +#include "auth.h" +#include "dh.h" +#include "num.h" +#include "mpi.h" /** * gnutls_anon_free_server_credentials: @@ -53,10 +53,8 @@ void gnutls_anon_free_server_credentials(gnutls_anon_server_credentials_t sc) * * Returns: %GNUTLS_E_SUCCESS on success, or an error code. **/ -int -gnutls_anon_allocate_server_credentials(gnutls_anon_server_credentials_t * sc) +int gnutls_anon_allocate_server_credentials(gnutls_anon_server_credentials_t *sc) { - *sc = gnutls_calloc(1, sizeof(anon_server_credentials_st)); return 0; @@ -83,8 +81,7 @@ static const gnutls_anon_client_credentials_t anon_dummy = &anon_dummy_struct; * * Returns: %GNUTLS_E_SUCCESS on success, or an error code. **/ -int -gnutls_anon_allocate_client_credentials(gnutls_anon_client_credentials_t * sc) +int gnutls_anon_allocate_client_credentials(gnutls_anon_client_credentials_t *sc) { /* anon_dummy is only there for *sc not to be null. * it is not used at all; @@ -107,9 +104,8 @@ gnutls_anon_allocate_client_credentials(gnutls_anon_client_credentials_t * sc) * or later. Since 3.6.0, DH parameters are negotiated * following RFC7919. **/ -void -gnutls_anon_set_server_dh_params(gnutls_anon_server_credentials_t res, - gnutls_dh_params_t dh_params) +void gnutls_anon_set_server_dh_params(gnutls_anon_server_credentials_t res, + gnutls_dh_params_t dh_params) { if (res->deinit_dh_params) { res->deinit_dh_params = 0; @@ -118,10 +114,8 @@ gnutls_anon_set_server_dh_params(gnutls_anon_server_credentials_t res, } res->dh_params = dh_params; - res->dh_sec_param = - gnutls_pk_bits_to_sec_param(GNUTLS_PK_DH, - _gnutls_mpi_get_nbits(dh_params->params - [0])); + res->dh_sec_param = gnutls_pk_bits_to_sec_param( + GNUTLS_PK_DH, _gnutls_mpi_get_nbits(dh_params->params[0])); } /** @@ -143,9 +137,8 @@ gnutls_anon_set_server_dh_params(gnutls_anon_server_credentials_t res, * * Since: 3.5.6 **/ -int -gnutls_anon_set_server_known_dh_params(gnutls_anon_server_credentials_t res, - gnutls_sec_param_t sec_param) +int gnutls_anon_set_server_known_dh_params(gnutls_anon_server_credentials_t res, + gnutls_sec_param_t sec_param) { res->dh_sec_param = sec_param; @@ -166,9 +159,8 @@ gnutls_anon_set_server_known_dh_params(gnutls_anon_server_credentials_t res, * following RFC7919. * **/ -void -gnutls_anon_set_server_params_function(gnutls_anon_server_credentials_t - res, gnutls_params_function * func) +void gnutls_anon_set_server_params_function( + gnutls_anon_server_credentials_t res, gnutls_params_function *func) { res->params_func = func; } @@ -187,9 +179,8 @@ gnutls_anon_set_server_params_function(gnutls_anon_server_credentials_t * following RFC7919. * **/ -void -gnutls_anon_set_params_function(gnutls_anon_server_credentials_t res, - gnutls_params_function * func) +void gnutls_anon_set_params_function(gnutls_anon_server_credentials_t res, + gnutls_params_function *func) { res->params_func = func; } diff --git a/lib/asn1_tab.c b/lib/asn1_tab.c index a657b94686..ab11171882 100644 --- a/lib/asn1_tab.c +++ b/lib/asn1_tab.c @@ -1,70 +1,70 @@ #if HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include const asn1_static_node gnutls_asn1_tab[] = { - {"GNUTLS", 536872976, NULL}, - {NULL, 1073741836, NULL}, - {"RSAPublicKey", 1610612741, NULL}, - {"modulus", 1073741827, NULL}, - {"publicExponent", 3, NULL}, - {"RSAPrivateKey", 1610612741, NULL}, - {"version", 1073741827, NULL}, - {"modulus", 1073741827, NULL}, - {"publicExponent", 1073741827, NULL}, - {"privateExponent", 1073741827, NULL}, - {"prime1", 1073741827, NULL}, - {"prime2", 1073741827, NULL}, - {"exponent1", 1073741827, NULL}, - {"exponent2", 1073741827, NULL}, - {"coefficient", 1073741827, NULL}, - {"otherPrimeInfos", 16386, "OtherPrimeInfos"}, - {"OtherPrimeInfos", 1612709899, NULL}, - {"MAX", 1074266122, "1"}, - {NULL, 2, "OtherPrimeInfo"}, - {"OtherPrimeInfo", 1610612741, NULL}, - {"prime", 1073741827, NULL}, - {"exponent", 1073741827, NULL}, - {"coefficient", 3, NULL}, - {"AlgorithmIdentifier", 1610612741, NULL}, - {"algorithm", 1073741836, NULL}, - {"parameters", 541081613, NULL}, - {"algorithm", 1, NULL}, - {"DigestInfo", 1610612741, NULL}, - {"digestAlgorithm", 1073741826, "DigestAlgorithmIdentifier"}, - {"digest", 2, "Digest"}, - {"DigestAlgorithmIdentifier", 1073741826, "AlgorithmIdentifier"}, - {"Digest", 1073741831, NULL}, - {"DSAPublicKey", 1073741827, NULL}, - {"DSAParameters", 1610612741, NULL}, - {"p", 1073741827, NULL}, - {"q", 1073741827, NULL}, - {"g", 3, NULL}, - {"DSASignatureValue", 1610612741, NULL}, - {"r", 1073741827, NULL}, - {"s", 3, NULL}, - {"DSAPrivateKey", 1610612741, NULL}, - {"version", 1073741827, NULL}, - {"p", 1073741827, NULL}, - {"q", 1073741827, NULL}, - {"g", 1073741827, NULL}, - {"Y", 1073741827, NULL}, - {"priv", 3, NULL}, - {"DHParameter", 1610612741, NULL}, - {"prime", 1073741827, NULL}, - {"base", 1073741827, NULL}, - {"privateValueLength", 16387, NULL}, - {"ECPoint", 1073741831, NULL}, - {"ECParameters", 1610612754, NULL}, - {"namedCurve", 12, NULL}, - {"ECPrivateKey", 536870917, NULL}, - {"Version", 1073741827, NULL}, - {"privateKey", 1073741831, NULL}, - {"parameters", 1610637314, "ECParameters"}, - {NULL, 2056, "0"}, - {"publicKey", 536895494, NULL}, - {NULL, 2056, "1"}, - {NULL, 0, NULL} + { "GNUTLS", 536872976, NULL }, + { NULL, 1073741836, NULL }, + { "RSAPublicKey", 1610612741, NULL }, + { "modulus", 1073741827, NULL }, + { "publicExponent", 3, NULL }, + { "RSAPrivateKey", 1610612741, NULL }, + { "version", 1073741827, NULL }, + { "modulus", 1073741827, NULL }, + { "publicExponent", 1073741827, NULL }, + { "privateExponent", 1073741827, NULL }, + { "prime1", 1073741827, NULL }, + { "prime2", 1073741827, NULL }, + { "exponent1", 1073741827, NULL }, + { "exponent2", 1073741827, NULL }, + { "coefficient", 1073741827, NULL }, + { "otherPrimeInfos", 16386, "OtherPrimeInfos" }, + { "OtherPrimeInfos", 1612709899, NULL }, + { "MAX", 1074266122, "1" }, + { NULL, 2, "OtherPrimeInfo" }, + { "OtherPrimeInfo", 1610612741, NULL }, + { "prime", 1073741827, NULL }, + { "exponent", 1073741827, NULL }, + { "coefficient", 3, NULL }, + { "AlgorithmIdentifier", 1610612741, NULL }, + { "algorithm", 1073741836, NULL }, + { "parameters", 541081613, NULL }, + { "algorithm", 1, NULL }, + { "DigestInfo", 1610612741, NULL }, + { "digestAlgorithm", 1073741826, "DigestAlgorithmIdentifier" }, + { "digest", 2, "Digest" }, + { "DigestAlgorithmIdentifier", 1073741826, "AlgorithmIdentifier" }, + { "Digest", 1073741831, NULL }, + { "DSAPublicKey", 1073741827, NULL }, + { "DSAParameters", 1610612741, NULL }, + { "p", 1073741827, NULL }, + { "q", 1073741827, NULL }, + { "g", 3, NULL }, + { "DSASignatureValue", 1610612741, NULL }, + { "r", 1073741827, NULL }, + { "s", 3, NULL }, + { "DSAPrivateKey", 1610612741, NULL }, + { "version", 1073741827, NULL }, + { "p", 1073741827, NULL }, + { "q", 1073741827, NULL }, + { "g", 1073741827, NULL }, + { "Y", 1073741827, NULL }, + { "priv", 3, NULL }, + { "DHParameter", 1610612741, NULL }, + { "prime", 1073741827, NULL }, + { "base", 1073741827, NULL }, + { "privateValueLength", 16387, NULL }, + { "ECPoint", 1073741831, NULL }, + { "ECParameters", 1610612754, NULL }, + { "namedCurve", 12, NULL }, + { "ECPrivateKey", 536870917, NULL }, + { "Version", 1073741827, NULL }, + { "privateKey", 1073741831, NULL }, + { "parameters", 1610637314, "ECParameters" }, + { NULL, 2056, "0" }, + { "publicKey", 536895494, NULL }, + { NULL, 2056, "1" }, + { NULL, 0, NULL } }; diff --git a/lib/atfork.c b/lib/atfork.c index e46aa4a3aa..79ec55a922 100644 --- a/lib/atfork.c +++ b/lib/atfork.c @@ -35,15 +35,15 @@ unsigned int _gnutls_forkid = 0; #ifndef _WIN32 -# ifdef HAVE_ATFORK +#ifdef HAVE_ATFORK static void fork_handler(void) { _gnutls_forkid++; } -# endif +#endif -# if defined(HAVE___REGISTER_ATFORK) -extern int __register_atfork(void (*)(void), void(*)(void), void (*)(void), +#if defined(HAVE___REGISTER_ATFORK) +extern int __register_atfork(void (*)(void), void (*)(void), void (*)(void), void *); extern void *__dso_handle; @@ -54,7 +54,7 @@ int _gnutls_register_fork_handler(void) return 0; } -# else +#else unsigned int _gnutls_get_forkid(void) { @@ -75,6 +75,6 @@ int _gnutls_register_fork_handler(void) return 0; } -# endif +#endif -#endif /* !_WIN32 */ +#endif /* !_WIN32 */ diff --git a/lib/atfork.h b/lib/atfork.h index 6c8ef3e06b..9ffe40f685 100644 --- a/lib/atfork.h +++ b/lib/atfork.h @@ -21,23 +21,23 @@ */ #ifndef GNUTLS_LIB_ATFORK_H -# define GNUTLS_LIB_ATFORK_H +#define GNUTLS_LIB_ATFORK_H -# include -# include "gnutls_int.h" +#include +#include "gnutls_int.h" extern unsigned int _gnutls_forkid; -# if defined(HAVE___REGISTER_ATFORK) -# define HAVE_ATFORK -# endif +#if defined(HAVE___REGISTER_ATFORK) +#define HAVE_ATFORK +#endif -# ifndef _WIN32 +#ifndef _WIN32 /* API */ -int _gnutls_register_fork_handler(void); /* global init */ +int _gnutls_register_fork_handler(void); /* global init */ -# if defined(HAVE_ATFORK) +#if defined(HAVE_ATFORK) inline static int _gnutls_detect_fork(unsigned int forkid) { if (forkid == _gnutls_forkid) @@ -49,16 +49,16 @@ inline static unsigned int _gnutls_get_forkid(void) { return _gnutls_forkid; } -# else +#else int _gnutls_detect_fork(unsigned int forkid); unsigned int _gnutls_get_forkid(void); -# endif +#endif -# else +#else -# define _gnutls_detect_fork(x) 0 -# define _gnutls_get_forkid() 0 +#define _gnutls_detect_fork(x) 0 +#define _gnutls_get_forkid() 0 -# endif +#endif -#endif /* GNUTLS_LIB_ATFORK_H */ +#endif /* GNUTLS_LIB_ATFORK_H */ diff --git a/lib/atomic.h b/lib/atomic.h index 8f50bb453b..e01476ca26 100644 --- a/lib/atomic.h +++ b/lib/atomic.h @@ -21,20 +21,20 @@ */ #ifndef GNUTLS_LIB_ATOMIC_H -# define GNUTLS_LIB_ATOMIC_H +#define GNUTLS_LIB_ATOMIC_H -# ifdef HAVE_STDATOMIC_H -# include +#ifdef HAVE_STDATOMIC_H +#include -# define gnutls_atomic_uint_t atomic_uint -# define DEF_ATOMIC_INT(x) atomic_uint x -# define gnutls_atomic_increment(x) (*x)++ -# define gnutls_atomic_decrement(x) (*x)-- -# define gnutls_atomic_init(x) (*x)=(0) -# define gnutls_atomic_deinit(x) -# define gnutls_atomic_val(x) (*x) -# else -# include "locks.h" +#define gnutls_atomic_uint_t atomic_uint +#define DEF_ATOMIC_INT(x) atomic_uint x +#define gnutls_atomic_increment(x) (*x)++ +#define gnutls_atomic_decrement(x) (*x)-- +#define gnutls_atomic_init(x) (*x) = (0) +#define gnutls_atomic_deinit(x) +#define gnutls_atomic_val(x) (*x) +#else +#include "locks.h" struct gnutls_atomic_uint_st { void *lock; @@ -42,7 +42,7 @@ struct gnutls_atomic_uint_st { }; typedef struct gnutls_atomic_uint_st *gnutls_atomic_uint_t; -# define DEF_ATOMIC_INT(x) struct gnutls_atomic_uint_st x +#define DEF_ATOMIC_INT(x) struct gnutls_atomic_uint_st x inline static unsigned gnutls_atomic_val(gnutls_atomic_uint_t x) { @@ -77,6 +77,6 @@ inline static void gnutls_atomic_deinit(gnutls_atomic_uint_t x) { gnutls_mutex_deinit(&x->lock); } -# endif +#endif -#endif /* GNUTLS_LIB_ATOMIC_H */ +#endif /* GNUTLS_LIB_ATOMIC_H */ diff --git a/lib/auth.c b/lib/auth.c index ffa4d6e784..6bbda1f8ae 100644 --- a/lib/auth.c +++ b/lib/auth.c @@ -45,7 +45,7 @@ **/ void gnutls_credentials_clear(gnutls_session_t session) { - if (session->key.cred) { /* beginning of the list */ + if (session->key.cred) { /* beginning of the list */ auth_cred_st *ccred, *ncred; ccred = session->key.cred; while (ccred != NULL) { @@ -91,14 +91,13 @@ void gnutls_credentials_clear(gnutls_session_t session) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, * otherwise a negative error code is returned. **/ -int -gnutls_credentials_set(gnutls_session_t session, - gnutls_credentials_type_t type, void *cred) +int gnutls_credentials_set(gnutls_session_t session, + gnutls_credentials_type_t type, void *cred) { auth_cred_st *ccred = NULL, *pcred = NULL; int exists = 0; - if (session->key.cred == NULL) { /* beginning of the list */ + if (session->key.cred == NULL) { /* beginning of the list */ session->key.cred = gnutls_malloc(sizeof(auth_cred_st)); if (session->key.cred == NULL) @@ -122,7 +121,7 @@ gnutls_credentials_set(gnutls_session_t session, /* After this, pcred is not null. */ - if (exists == 0) { /* new entry */ + if (exists == 0) { /* new entry */ pcred->next = gnutls_malloc(sizeof(auth_cred_st)); if (pcred->next == NULL) return GNUTLS_E_MEMORY_ERROR; @@ -134,7 +133,7 @@ gnutls_credentials_set(gnutls_session_t session, ccred->next = NULL; ccred->algorithm = type; - } else { /* modify existing entry */ + } else { /* modify existing entry */ ccred->credentials = cred; } } @@ -148,20 +147,20 @@ gnutls_credentials_set(gnutls_session_t session, if (c != NULL && c->ncerts != 0) { for (i = 0; i < c->ncerts; i++) { - key_usage = - get_key_usage(session, - c->certs[i]. - cert_list[0].pubkey); - if (key_usage == 0 - || (key_usage & - GNUTLS_KEY_DIGITAL_SIGNATURE)) { + key_usage = get_key_usage( + session, + c->certs[i].cert_list[0].pubkey); + if (key_usage == 0 || + (key_usage & + GNUTLS_KEY_DIGITAL_SIGNATURE)) { allow_tls13 = 1; break; } } - if (session->security_parameters.entity == GNUTLS_SERVER - && !c->tls13_ok) + if (session->security_parameters.entity == + GNUTLS_SERVER && + !c->tls13_ok) allow_tls13 = 0; if (!allow_tls13) { @@ -198,9 +197,8 @@ gnutls_credentials_set(gnutls_session_t session, * * Since: 3.3.3 **/ -int -gnutls_credentials_get(gnutls_session_t session, - gnutls_credentials_type_t type, void **cred) +int gnutls_credentials_get(gnutls_session_t session, + gnutls_credentials_type_t type, void **cred) { const void *_cred; @@ -285,8 +283,8 @@ gnutls_credentials_type_t gnutls_auth_client_get_type(gnutls_session_t session) const void *_gnutls_get_kx_cred(gnutls_session_t session, gnutls_kx_algorithm_t algo) { - int server = - session->security_parameters.entity == GNUTLS_SERVER ? 1 : 0; + int server = session->security_parameters.entity == GNUTLS_SERVER ? 1 : + 0; return _gnutls_get_cred(session, _gnutls_map_kx_get_cred(algo, server)); } @@ -328,93 +326,83 @@ void _gnutls_free_auth_info(gnutls_session_t session) } switch (session->key.auth_info_type) { - case GNUTLS_CRD_SRP: - { - srp_server_auth_info_t info = - _gnutls_get_auth_info(session, GNUTLS_CRD_SRP); + case GNUTLS_CRD_SRP: { + srp_server_auth_info_t info = + _gnutls_get_auth_info(session, GNUTLS_CRD_SRP); - if (info == NULL) - break; + if (info == NULL) + break; - gnutls_free(info->username); - info->username = NULL; - } - break; + gnutls_free(info->username); + info->username = NULL; + } break; #ifdef ENABLE_ANON - case GNUTLS_CRD_ANON: - { - anon_auth_info_t info = - _gnutls_get_auth_info(session, GNUTLS_CRD_ANON); + case GNUTLS_CRD_ANON: { + anon_auth_info_t info = + _gnutls_get_auth_info(session, GNUTLS_CRD_ANON); - if (info == NULL) - break; + if (info == NULL) + break; - dh_info = &info->dh; - _gnutls_free_dh_info(dh_info); - } - break; + dh_info = &info->dh; + _gnutls_free_dh_info(dh_info); + } break; #endif - case GNUTLS_CRD_PSK: - { - psk_auth_info_t info = - _gnutls_get_auth_info(session, GNUTLS_CRD_PSK); + case GNUTLS_CRD_PSK: { + psk_auth_info_t info = + _gnutls_get_auth_info(session, GNUTLS_CRD_PSK); - if (info == NULL) - break; + if (info == NULL) + break; - gnutls_free(info->username); - info->username = NULL; - info->username_len = 0; + gnutls_free(info->username); + info->username = NULL; + info->username_len = 0; - gnutls_free(info->hint); - info->hint = NULL; - info->hint_len = 0; + gnutls_free(info->hint); + info->hint = NULL; + info->hint_len = 0; #ifdef ENABLE_DHE - dh_info = &info->dh; - _gnutls_free_dh_info(dh_info); + dh_info = &info->dh; + _gnutls_free_dh_info(dh_info); #endif - } - break; - case GNUTLS_CRD_CERTIFICATE: - { - unsigned int i; - cert_auth_info_t info = _gnutls_get_auth_info(session, - GNUTLS_CRD_CERTIFICATE); - - if (info == NULL) - break; + } break; + case GNUTLS_CRD_CERTIFICATE: { + unsigned int i; + cert_auth_info_t info = + _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE); - dh_info = &info->dh; - for (i = 0; i < info->ncerts; i++) { - _gnutls_free_datum(&info->raw_certificate_list - [i]); - } + if (info == NULL) + break; - for (i = 0; i < info->nocsp; i++) { - _gnutls_free_datum(&info->raw_ocsp_list[i]); - } + dh_info = &info->dh; + for (i = 0; i < info->ncerts; i++) { + _gnutls_free_datum(&info->raw_certificate_list[i]); + } + + for (i = 0; i < info->nocsp; i++) { + _gnutls_free_datum(&info->raw_ocsp_list[i]); + } - gnutls_free(info->raw_certificate_list); - gnutls_free(info->raw_ocsp_list); - info->ncerts = 0; - info->nocsp = 0; + gnutls_free(info->raw_certificate_list); + gnutls_free(info->raw_ocsp_list); + info->ncerts = 0; + info->nocsp = 0; #ifdef ENABLE_DHE - _gnutls_free_dh_info(dh_info); + _gnutls_free_dh_info(dh_info); #endif - } + } - break; + break; default: return; - } gnutls_free(session->key.auth_info); session->key.auth_info_size = 0; session->key.auth_info_type = 0; - } /* This function will create the auth info structure in the key @@ -423,10 +411,9 @@ void _gnutls_free_auth_info(gnutls_session_t session) * If allow change is !=0 then this will allow changing the auth * info structure to a different type. */ -int -_gnutls_auth_info_init(gnutls_session_t session, - gnutls_credentials_type_t type, int size, - int allow_change) +int _gnutls_auth_info_init(gnutls_session_t session, + gnutls_credentials_type_t type, int size, + int allow_change) { if (session->key.auth_info == NULL) { session->key.auth_info = gnutls_calloc(1, size); @@ -456,7 +443,6 @@ _gnutls_auth_info_init(gnutls_session_t session, * to passive eavesdropers. */ if (type != session->key.auth_info_type) { - _gnutls_free_auth_info(session); session->key.auth_info = gnutls_calloc(1, size); diff --git a/lib/auth.h b/lib/auth.h index 71a6ae5956..96bafc82c6 100644 --- a/lib/auth.h +++ b/lib/auth.h @@ -21,33 +21,34 @@ */ #ifndef GNUTLS_LIB_AUTH_H -# define GNUTLS_LIB_AUTH_H +#define GNUTLS_LIB_AUTH_H -# include "str.h" +#include "str.h" typedef struct mod_auth_st_int { - const char *name; /* null terminated */ + const char *name; /* null terminated */ int (*gnutls_generate_server_certificate)(gnutls_session_t, gnutls_buffer_st *); int (*gnutls_generate_client_certificate)(gnutls_session_t, gnutls_buffer_st *); int (*gnutls_generate_server_kx)(gnutls_session_t, gnutls_buffer_st *); - int (*gnutls_generate_client_kx)(gnutls_session_t, gnutls_buffer_st *); /* used in SRP */ + int (*gnutls_generate_client_kx)(gnutls_session_t, + gnutls_buffer_st *); /* used in SRP */ int (*gnutls_generate_client_crt_vrfy)(gnutls_session_t, gnutls_buffer_st *); int (*gnutls_generate_server_crt_request)(gnutls_session_t, gnutls_buffer_st *); - int (*gnutls_process_server_certificate)(gnutls_session_t, - uint8_t *, size_t); - int (*gnutls_process_client_certificate)(gnutls_session_t, - uint8_t *, size_t); + int (*gnutls_process_server_certificate)(gnutls_session_t, uint8_t *, + size_t); + int (*gnutls_process_client_certificate)(gnutls_session_t, uint8_t *, + size_t); int (*gnutls_process_server_kx)(gnutls_session_t, uint8_t *, size_t); int (*gnutls_process_client_kx)(gnutls_session_t, uint8_t *, size_t); int (*gnutls_process_client_crt_vrfy)(gnutls_session_t, uint8_t *, size_t); - int (*gnutls_process_server_crt_request)(gnutls_session_t, - uint8_t *, size_t); + int (*gnutls_process_server_crt_request)(gnutls_session_t, uint8_t *, + size_t); } mod_auth_st; const void *_gnutls_get_cred(gnutls_session_t session, @@ -71,9 +72,8 @@ int _gnutls_auth_info_init(gnutls_session_t session, * In case of GNUTLS_CRD_CERTIFICATE returns a type of &cert_auth_info_t; * In case of GNUTLS_CRD_SRP returns a type of &srp_(server/client)_auth_info_t; -*/ -inline static -void *_gnutls_get_auth_info(gnutls_session_t session, - gnutls_credentials_type_t type) +inline static void *_gnutls_get_auth_info(gnutls_session_t session, + gnutls_credentials_type_t type) { if (type == session->key.auth_info_type) return session->key.auth_info; @@ -81,4 +81,4 @@ void *_gnutls_get_auth_info(gnutls_session_t session, return NULL; } -#endif /* GNUTLS_LIB_AUTH_H */ +#endif /* GNUTLS_LIB_AUTH_H */ diff --git a/lib/auth/anon.c b/lib/auth/anon.c index b84a9d098c..24bc5a214c 100644 --- a/lib/auth/anon.c +++ b/lib/auth/anon.c @@ -30,14 +30,14 @@ #if defined(ENABLE_ANON) && defined(ENABLE_DHE) -# include "auth.h" -# include "errors.h" -# include "dh.h" -# include "auth/anon.h" -# include "num.h" -# include "mpi.h" -# include -# include +#include "auth.h" +#include "errors.h" +#include "dh.h" +#include "auth/anon.h" +#include "num.h" +#include "mpi.h" +#include +#include static int gen_anon_server_kx(gnutls_session_t, gnutls_buffer_st *); static int proc_anon_client_kx(gnutls_session_t, uint8_t *, size_t); @@ -48,40 +48,38 @@ const mod_auth_st anon_auth_struct = { NULL, NULL, gen_anon_server_kx, - _gnutls_gen_dh_common_client_kx, /* this can be shared */ + _gnutls_gen_dh_common_client_kx, /* this can be shared */ NULL, NULL, NULL, - NULL, /* certificate */ + NULL, /* certificate */ proc_anon_server_kx, proc_anon_client_kx, NULL, NULL }; -static int gen_anon_server_kx(gnutls_session_t session, gnutls_buffer_st * data) +static int gen_anon_server_kx(gnutls_session_t session, gnutls_buffer_st *data) { int ret; gnutls_anon_server_credentials_t cred; - cred = (gnutls_anon_server_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_ANON); + cred = (gnutls_anon_server_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_ANON); if (cred == NULL) { gnutls_assert(); return GNUTLS_E_INSUFFICIENT_CREDENTIALS; } - if ((ret = - _gnutls_auth_info_init(session, GNUTLS_CRD_ANON, - sizeof(anon_auth_info_st), 1)) < 0) { + if ((ret = _gnutls_auth_info_init(session, GNUTLS_CRD_ANON, + sizeof(anon_auth_info_st), 1)) < 0) { gnutls_assert(); return ret; } - ret = - _gnutls_figure_dh_params(session, cred->dh_params, - cred->params_func, cred->dh_sec_param); + ret = _gnutls_figure_dh_params(session, cred->dh_params, + cred->params_func, cred->dh_sec_param); if (ret < 0) { return gnutls_assert_val(ret); } @@ -94,24 +92,21 @@ static int gen_anon_server_kx(gnutls_session_t session, gnutls_buffer_st * data) return ret; } -static int -proc_anon_client_kx(gnutls_session_t session, uint8_t * data, size_t _data_size) +static int proc_anon_client_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size) { - return - _gnutls_proc_dh_common_client_kx(session, data, _data_size, NULL); - + return _gnutls_proc_dh_common_client_kx(session, data, _data_size, + NULL); } -int -proc_anon_server_kx(gnutls_session_t session, uint8_t * data, size_t _data_size) +int proc_anon_server_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size) { - int ret; /* set auth_info */ - if ((ret = - _gnutls_auth_info_init(session, GNUTLS_CRD_ANON, - sizeof(anon_auth_info_st), 1)) < 0) { + if ((ret = _gnutls_auth_info_init(session, GNUTLS_CRD_ANON, + sizeof(anon_auth_info_st), 1)) < 0) { gnutls_assert(); return ret; } @@ -125,4 +120,4 @@ proc_anon_server_kx(gnutls_session_t session, uint8_t * data, size_t _data_size) return 0; } -#endif /* ENABLE_ANON */ +#endif /* ENABLE_ANON */ diff --git a/lib/auth/anon.h b/lib/auth/anon.h index 943fda97c6..3a8db4b5b3 100644 --- a/lib/auth/anon.h +++ b/lib/auth/anon.h @@ -21,11 +21,11 @@ */ #ifndef GNUTLS_LIB_AUTH_ANON_H -# define GNUTLS_LIB_AUTH_ANON_H +#define GNUTLS_LIB_AUTH_ANON_H /* this is not to be included by gnutls_anon.c */ -# include -# include +#include +#include typedef struct gnutls_anon_server_credentials_st { gnutls_dh_params_t dh_params; @@ -49,4 +49,4 @@ typedef struct anon_auth_info_st { typedef struct anon_auth_info_st anon_auth_info_st; -#endif /* GNUTLS_LIB_AUTH_ANON_H */ +#endif /* GNUTLS_LIB_AUTH_ANON_H */ diff --git a/lib/auth/anon_ecdh.c b/lib/auth/anon_ecdh.c index 8564532d73..caf26bbe1b 100644 --- a/lib/auth/anon_ecdh.c +++ b/lib/auth/anon_ecdh.c @@ -29,15 +29,15 @@ #if defined(ENABLE_ANON) && defined(ENABLE_ECDHE) -# include "auth.h" -# include "errors.h" -# include "dh.h" -# include "auth/anon.h" -# include "num.h" -# include "mpi.h" -# include -# include -# include +#include "auth.h" +#include "errors.h" +#include "dh.h" +#include "auth/anon.h" +#include "num.h" +#include "mpi.h" +#include +#include +#include static int gen_anon_ecdh_server_kx(gnutls_session_t, gnutls_buffer_st *); static int proc_anon_ecdh_client_kx(gnutls_session_t, uint8_t *, size_t); @@ -48,41 +48,39 @@ const mod_auth_st anon_ecdh_auth_struct = { NULL, NULL, gen_anon_ecdh_server_kx, - _gnutls_gen_ecdh_common_client_kx, /* this can be shared */ + _gnutls_gen_ecdh_common_client_kx, /* this can be shared */ NULL, NULL, NULL, - NULL, /* certificate */ + NULL, /* certificate */ proc_anon_ecdh_server_kx, proc_anon_ecdh_client_kx, NULL, NULL }; -static int -gen_anon_ecdh_server_kx(gnutls_session_t session, gnutls_buffer_st * data) +static int gen_anon_ecdh_server_kx(gnutls_session_t session, + gnutls_buffer_st *data) { int ret; gnutls_anon_server_credentials_t cred; - cred = (gnutls_anon_server_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_ANON); + cred = (gnutls_anon_server_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_ANON); if (cred == NULL) { gnutls_assert(); return GNUTLS_E_INSUFFICIENT_CREDENTIALS; } - if ((ret = - _gnutls_auth_info_init(session, GNUTLS_CRD_ANON, - sizeof(anon_auth_info_st), 1)) < 0) { + if ((ret = _gnutls_auth_info_init(session, GNUTLS_CRD_ANON, + sizeof(anon_auth_info_st), 1)) < 0) { gnutls_assert(); return ret; } - ret = - _gnutls_ecdh_common_print_server_kx(session, data, - get_group(session)); + ret = _gnutls_ecdh_common_print_server_kx(session, data, + get_group(session)); if (ret < 0) { gnutls_assert(); } @@ -90,35 +88,30 @@ gen_anon_ecdh_server_kx(gnutls_session_t session, gnutls_buffer_st * data) return ret; } -static int -proc_anon_ecdh_client_kx(gnutls_session_t session, uint8_t * data, - size_t _data_size) +static int proc_anon_ecdh_client_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size) { gnutls_anon_server_credentials_t cred; - cred = (gnutls_anon_server_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_ANON); + cred = (gnutls_anon_server_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_ANON); if (cred == NULL) { gnutls_assert(); return GNUTLS_E_INSUFFICIENT_CREDENTIALS; } - return _gnutls_proc_ecdh_common_client_kx(session, data, - _data_size, + return _gnutls_proc_ecdh_common_client_kx(session, data, _data_size, get_group(session), NULL); } -int -proc_anon_ecdh_server_kx(gnutls_session_t session, uint8_t * data, - size_t _data_size) +int proc_anon_ecdh_server_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size) { - int ret; /* set auth_info */ - if ((ret = - _gnutls_auth_info_init(session, GNUTLS_CRD_ANON, - sizeof(anon_auth_info_st), 1)) < 0) { + if ((ret = _gnutls_auth_info_init(session, GNUTLS_CRD_ANON, + sizeof(anon_auth_info_st), 1)) < 0) { gnutls_assert(); return ret; } @@ -132,4 +125,4 @@ proc_anon_ecdh_server_kx(gnutls_session_t session, uint8_t * data, return 0; } -#endif /* ENABLE_ANON */ +#endif /* ENABLE_ANON */ diff --git a/lib/auth/cert.c b/lib/auth/cert.c index 8b484c1380..d331d44055 100644 --- a/lib/auth/cert.c +++ b/lib/auth/cert.c @@ -47,17 +47,19 @@ #include "abstract_int.h" #include "debug.h" -static void -selected_certs_set(gnutls_session_t session, - gnutls_pcert_st * certs, int ncerts, - gnutls_ocsp_data_st * ocsp, unsigned nocsp, - gnutls_privkey_t key, int need_free, - gnutls_status_request_ocsp_func ocsp_func, - void *ocsp_func_ptr); +static void selected_certs_set(gnutls_session_t session, gnutls_pcert_st *certs, + int ncerts, gnutls_ocsp_data_st *ocsp, + unsigned nocsp, gnutls_privkey_t key, + int need_free, + gnutls_status_request_ocsp_func ocsp_func, + void *ocsp_func_ptr); #define MAX_CLIENT_SIGN_ALGOS 5 -#define CERTTYPE_SIZE (MAX_CLIENT_SIGN_ALGOS+1) -typedef enum CertificateSigType { RSA_SIGN = 1, DSA_SIGN = 2, ECDSA_SIGN = 64, +#define CERTTYPE_SIZE (MAX_CLIENT_SIGN_ALGOS + 1) +typedef enum CertificateSigType { + RSA_SIGN = 1, + DSA_SIGN = 2, + ECDSA_SIGN = 64, #ifdef ENABLE_GOST GOSTR34102012_256_SIGN = 67, GOSTR34102012_512_SIGN = 68 @@ -78,7 +80,7 @@ enum CertificateSigTypeFlags { * another internal certificate struct (cert_auth_info_t), and deinitializes * the former. */ -int _gnutls_pcert_to_auth_info(cert_auth_info_t info, gnutls_pcert_st * certs, +int _gnutls_pcert_to_auth_info(cert_auth_info_t info, gnutls_pcert_st *certs, size_t ncerts) { size_t i, j; @@ -96,7 +98,7 @@ int _gnutls_pcert_to_auth_info(cert_auth_info_t info, gnutls_pcert_st * certs, } info->raw_certificate_list = - gnutls_calloc(ncerts, sizeof(gnutls_datum_t)); + gnutls_calloc(ncerts, sizeof(gnutls_datum_t)); if (info->raw_certificate_list == NULL) { gnutls_assert(); return GNUTLS_E_MEMORY_ERROR; @@ -119,10 +121,9 @@ int _gnutls_pcert_to_auth_info(cert_auth_info_t info, gnutls_pcert_st * certs, /* returns 0 if the algo_to-check exists in the pk_algos list, * -1 otherwise. */ -inline static int -check_pk_algo_in_list(const gnutls_pk_algorithm_t * - pk_algos, int pk_algos_length, - gnutls_pk_algorithm_t algo_to_check) +inline static int check_pk_algo_in_list(const gnutls_pk_algorithm_t *pk_algos, + int pk_algos_length, + gnutls_pk_algorithm_t algo_to_check) { int i; for (i = 0; i < pk_algos_length; i++) { @@ -136,14 +137,15 @@ check_pk_algo_in_list(const gnutls_pk_algorithm_t * /* Returns the issuer's Distinguished name in odn, of the certificate * specified in cert. */ -static int cert_get_issuer_dn(gnutls_pcert_st * cert, gnutls_datum_t * odn) +static int cert_get_issuer_dn(gnutls_pcert_st *cert, gnutls_datum_t *odn) { asn1_node dn; int len, result; int start, end; - if ((result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.Certificate", &dn)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.Certificate", &dn)) != + ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -156,10 +158,10 @@ static int cert_get_issuer_dn(gnutls_pcert_st * cert, gnutls_datum_t * odn) return _gnutls_asn2err(result); } - result = - asn1_der_decoding_startEnd(dn, cert->cert.data, - cert->cert.size, - "tbsCertificate.issuer", &start, &end); + result = asn1_der_decoding_startEnd(dn, cert->cert.data, + cert->cert.size, + "tbsCertificate.issuer", &start, + &end); if (result != ASN1_SUCCESS) { /* couldn't decode DER */ @@ -183,12 +185,11 @@ static int cert_get_issuer_dn(gnutls_pcert_st * cert, gnutls_datum_t * odn) * That is to guess which certificate to use, based on the * CAs and sign algorithms supported by the peer server. */ -static int -find_x509_client_cert(gnutls_session_t session, - const gnutls_certificate_credentials_t cred, - const uint8_t * _data, size_t _data_size, - const gnutls_pk_algorithm_t * pk_algos, - int pk_algos_length, int *indx) +static int find_x509_client_cert(gnutls_session_t session, + const gnutls_certificate_credentials_t cred, + const uint8_t *_data, size_t _data_size, + const gnutls_pk_algorithm_t *pk_algos, + int pk_algos_length, int *indx) { unsigned size; gnutls_datum_t odn = { NULL, 0 }, asked_dn; @@ -204,21 +205,18 @@ find_x509_client_cert(gnutls_session_t session, * then send that one. */ if (cred->ncerts == 1 && - (data_size == 0 - || (session->internals.flags & GNUTLS_FORCE_CLIENT_CERT))) { + (data_size == 0 || + (session->internals.flags & GNUTLS_FORCE_CLIENT_CERT))) { if (cred->certs[0].cert_list[0].type == GNUTLS_CRT_X509) { - - key_usage = - get_key_usage(session, - cred->certs[0].cert_list[0].pubkey); + key_usage = get_key_usage( + session, cred->certs[0].cert_list[0].pubkey); /* For client certificates we require signatures */ - result = - _gnutls_check_key_usage_for_sig(session, key_usage, - 1); + result = _gnutls_check_key_usage_for_sig(session, + key_usage, 1); if (result < 0) { - _gnutls_debug_log - ("Client certificate is not suitable for signing\n"); + _gnutls_debug_log( + "Client certificate is not suitable for signing\n"); return gnutls_assert_val(result); } @@ -239,10 +237,9 @@ find_x509_client_cert(gnutls_session_t session, for (i = 0; i < cred->ncerts; i++) { for (j = 0; j < cred->certs[i].cert_list_length; j++) { - if ((result = - cert_get_issuer_dn(&cred->certs - [i].cert_list - [j], &odn)) < 0) { + if ((result = cert_get_issuer_dn( + &cred->certs[i].cert_list[j], + &odn)) < 0) { gnutls_assert(); return result; } @@ -250,16 +247,15 @@ find_x509_client_cert(gnutls_session_t session, if (odn.size == 0 || odn.size != asked_dn.size) continue; - key_usage = - get_key_usage(session, - cred->certs[i]. - cert_list[0].pubkey); + key_usage = get_key_usage( + session, + cred->certs[i].cert_list[0].pubkey); /* For client certificates we require signatures */ - if (_gnutls_check_key_usage_for_sig - (session, key_usage, 1) < 0) { - _gnutls_debug_log - ("Client certificate is not suitable for signing\n"); + if (_gnutls_check_key_usage_for_sig( + session, key_usage, 1) < 0) { + _gnutls_debug_log( + "Client certificate is not suitable for signing\n"); continue; } @@ -267,19 +263,15 @@ find_x509_client_cert(gnutls_session_t session, * the *_SIGN algorithm matches * the cert is our cert! */ - cert_pk = - gnutls_pubkey_get_pk_algorithm(cred->certs - [i].cert_list - [0].pubkey, - NULL); - - if ((memcmp - (odn.data, asked_dn.data, - asked_dn.size) == 0) - && - (check_pk_algo_in_list - (pk_algos, pk_algos_length, - cert_pk) == 0)) { + cert_pk = gnutls_pubkey_get_pk_algorithm( + cred->certs[i].cert_list[0].pubkey, + NULL); + + if ((memcmp(odn.data, asked_dn.data, + asked_dn.size) == 0) && + (check_pk_algo_in_list(pk_algos, + pk_algos_length, + cert_pk) == 0)) { *indx = i; break; } @@ -293,11 +285,9 @@ find_x509_client_cert(gnutls_session_t session, /* move to next record */ data += size; - } - while (1); + } while (1); return 0; - } /* Locates the first raw public-key. @@ -305,11 +295,10 @@ find_x509_client_cert(gnutls_session_t session, * Associating more raw pubkeys with a session has no use because we * don't know how to select the correct one. */ -static int -find_rawpk_client_cert(gnutls_session_t session, - const gnutls_certificate_credentials_t cred, - const gnutls_pk_algorithm_t * pk_algos, - int pk_algos_length, int *indx) +static int find_rawpk_client_cert(gnutls_session_t session, + const gnutls_certificate_credentials_t cred, + const gnutls_pk_algorithm_t *pk_algos, + int pk_algos_length, int *indx) { unsigned i; int ret; @@ -321,33 +310,31 @@ find_rawpk_client_cert(gnutls_session_t session, /* We know that our list length will be 1, therefore we can * ignore the rest. */ - if (cred->certs[i].cert_list_length == 1 - && cred->certs[i].cert_list[0].type == GNUTLS_CRT_RAWPK) { - pk = gnutls_pubkey_get_pk_algorithm(cred-> - certs[i].cert_list - [0].pubkey, NULL); + if (cred->certs[i].cert_list_length == 1 && + cred->certs[i].cert_list[0].type == GNUTLS_CRT_RAWPK) { + pk = gnutls_pubkey_get_pk_algorithm( + cred->certs[i].cert_list[0].pubkey, NULL); /* For client certificates we require signatures */ - ret = - _gnutls_check_key_usage_for_sig(session, - get_key_usage - (session, - cred-> - certs[i].cert_list - [0].pubkey), 1); + ret = _gnutls_check_key_usage_for_sig( + session, + get_key_usage( + session, + cred->certs[i].cert_list[0].pubkey), + 1); if (ret < 0) { /* we return an error instead of skipping so that the user is notified about * the key incompatibility */ - _gnutls_debug_log - ("Client certificate is not suitable for signing\n"); + _gnutls_debug_log( + "Client certificate is not suitable for signing\n"); return gnutls_assert_val(ret); } /* Check whether the public-key algorithm of our credential is in * the list with supported public-key algorithms and whether the * cert type matches. */ - if ((check_pk_algo_in_list - (pk_algos, pk_algos_length, pk) == 0)) { + if ((check_pk_algo_in_list(pk_algos, pk_algos_length, + pk) == 0)) { // We found a compatible credential *indx = i; break; @@ -361,9 +348,8 @@ find_rawpk_client_cert(gnutls_session_t session, /* Returns the number of issuers in the server's * certificate request packet. */ -static int -get_issuers_num(gnutls_session_t session, const uint8_t * data, - ssize_t data_size) +static int get_issuers_num(gnutls_session_t session, const uint8_t *data, + ssize_t data_size) { int issuers_dn_len = 0; unsigned size; @@ -400,10 +386,8 @@ get_issuers_num(gnutls_session_t session, const uint8_t * data, /* Returns the issuers in the server's certificate request * packet. */ -static int -get_issuers(gnutls_session_t session, - gnutls_datum_t * issuers_dn, int issuers_len, - const uint8_t * data, size_t data_size) +static int get_issuers(gnutls_session_t session, gnutls_datum_t *issuers_dn, + int issuers_len, const uint8_t *data, size_t data_size) { int i; unsigned size; @@ -416,7 +400,6 @@ get_issuers(gnutls_session_t session, * of X509 certificates. */ if (issuers_len > 0) { - for (i = 0; i < issuers_len; i++) { /* The checks here for the buffer boundaries * are not needed since the buffer has been @@ -442,11 +425,11 @@ get_issuers(gnutls_session_t session, /* Calls the client or server certificate get callback. */ -static int -call_get_cert_callback(gnutls_session_t session, - const gnutls_datum_t * issuers_dn, - int issuers_dn_length, - gnutls_pk_algorithm_t * pk_algos, int pk_algos_length) +static int call_get_cert_callback(gnutls_session_t session, + const gnutls_datum_t *issuers_dn, + int issuers_dn_length, + gnutls_pk_algorithm_t *pk_algos, + int pk_algos_length) { gnutls_privkey_t local_key = NULL; int ret = GNUTLS_E_INTERNAL_ERROR; @@ -457,8 +440,8 @@ call_get_cert_callback(gnutls_session_t session, unsigned int ocsp_length = 0; unsigned int pcert_length = 0; - cred = (gnutls_certificate_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_CERTIFICATE); + cred = (gnutls_certificate_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_CERTIFICATE); if (cred == NULL) { gnutls_assert(); return GNUTLS_E_INSUFFICIENT_CREDENTIALS; @@ -480,11 +463,10 @@ call_get_cert_callback(gnutls_session_t session, info.cred = cred; /* we avoid all allocations and transformations */ - ret = - cred->get_cert_callback3(session, &info, - &pcert, &pcert_length, - &ocsp, &ocsp_length, - &local_key, &flags); + ret = cred->get_cert_callback3(session, &info, &pcert, + &pcert_length, &ocsp, + &ocsp_length, &local_key, + &flags); if (ret < 0) return gnutls_assert_val(GNUTLS_E_USER_ERROR); @@ -496,12 +478,11 @@ call_get_cert_callback(gnutls_session_t session, local_key = NULL; } - selected_certs_set(session, pcert, pcert_length, - ocsp, ocsp_length, - local_key, - (flags & GNUTLS_CERT_RETR_DEINIT_ALL) ? 1 : - 0, cred->glob_ocsp_func, - cred->glob_ocsp_func_ptr); + selected_certs_set( + session, pcert, pcert_length, ocsp, ocsp_length, + local_key, + (flags & GNUTLS_CERT_RETR_DEINIT_ALL) ? 1 : 0, + cred->glob_ocsp_func, cred->glob_ocsp_func_ptr); return 0; } else { @@ -516,11 +497,10 @@ call_get_cert_callback(gnutls_session_t session, * 20020128: added ability to select a certificate depending on the SIGN * algorithm (only in automatic mode). */ -int -_gnutls_select_client_cert(gnutls_session_t session, - const uint8_t * _data, size_t _data_size, - gnutls_pk_algorithm_t * pk_algos, - int pk_algos_length) +int _gnutls_select_client_cert(gnutls_session_t session, const uint8_t *_data, + size_t _data_size, + gnutls_pk_algorithm_t *pk_algos, + int pk_algos_length) { int result; int indx = -1; @@ -531,8 +511,8 @@ _gnutls_select_client_cert(gnutls_session_t session, gnutls_datum_t *issuers_dn = NULL; gnutls_certificate_type_t cert_type; - cred = (gnutls_certificate_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_CERTIFICATE); + cred = (gnutls_certificate_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_CERTIFICATE); if (cred == NULL) { gnutls_assert(); return GNUTLS_E_INSUFFICIENT_CREDENTIALS; @@ -541,12 +521,11 @@ _gnutls_select_client_cert(gnutls_session_t session, cert_type = get_certificate_type(session, GNUTLS_CTYPE_CLIENT); if (cred->get_cert_callback3 != NULL) { - /* use a callback to get certificate */ if (cert_type == GNUTLS_CRT_X509) { issuers_dn_length = - get_issuers_num(session, data, data_size); + get_issuers_num(session, data, data_size); if (issuers_dn_length < 0) { gnutls_assert(); return issuers_dn_length; @@ -554,17 +533,16 @@ _gnutls_select_client_cert(gnutls_session_t session, if (issuers_dn_length > 0) { issuers_dn = - gnutls_malloc(sizeof(gnutls_datum_t) * - issuers_dn_length); + gnutls_malloc(sizeof(gnutls_datum_t) * + issuers_dn_length); if (issuers_dn == NULL) { gnutls_assert(); return GNUTLS_E_MEMORY_ERROR; } - result = - get_issuers(session, issuers_dn, - issuers_dn_length, data, - data_size); + result = get_issuers(session, issuers_dn, + issuers_dn_length, data, + data_size); if (result < 0) { gnutls_assert(); goto cleanup; @@ -574,10 +552,9 @@ _gnutls_select_client_cert(gnutls_session_t session, issuers_dn_length = 0; } - result = - call_get_cert_callback(session, issuers_dn, - issuers_dn_length, pk_algos, - pk_algos_length); + result = call_get_cert_callback(session, issuers_dn, + issuers_dn_length, pk_algos, + pk_algos_length); goto cleanup; } else { @@ -590,8 +567,7 @@ _gnutls_select_client_cert(gnutls_session_t session, pk_algos_length, &indx); break; case GNUTLS_CRT_RAWPK: - result = find_rawpk_client_cert(session, cred, - pk_algos, + result = find_rawpk_client_cert(session, cred, pk_algos, pk_algos_length, &indx); break; default: @@ -609,25 +585,24 @@ _gnutls_select_client_cert(gnutls_session_t session, cred->certs[indx].cert_list_length, cred->certs[indx].ocsp_data, cred->certs[indx].ocsp_data_length, - cred->certs[indx].pkey, 0, - NULL, NULL); + cred->certs[indx].pkey, 0, NULL, + NULL); } else { - selected_certs_set(session, NULL, 0, NULL, 0, - NULL, 0, NULL, NULL); + selected_certs_set(session, NULL, 0, NULL, 0, NULL, 0, + NULL, NULL); } result = 0; } - cleanup: +cleanup: gnutls_free(issuers_dn); return result; - } /* Generate certificate message */ -static int gen_x509_crt(gnutls_session_t session, gnutls_buffer_st * data) +static int gen_x509_crt(gnutls_session_t session, gnutls_buffer_st *data) { int ret, i; gnutls_pcert_st *apr_cert_list; @@ -637,9 +612,9 @@ static int gen_x509_crt(gnutls_session_t session, gnutls_buffer_st * data) /* find the appropriate certificate */ - if ((ret = - _gnutls_get_selected_cert(session, &apr_cert_list, - &apr_cert_list_length, &apr_pkey)) < 0) { + if ((ret = _gnutls_get_selected_cert(session, &apr_cert_list, + &apr_cert_list_length, + &apr_pkey)) < 0) { gnutls_assert(); return ret; } @@ -665,12 +640,9 @@ static int gen_x509_crt(gnutls_session_t session, gnutls_buffer_st * data) return gnutls_assert_val(ret); for (i = 0; i < apr_cert_list_length; i++) { - ret = - _gnutls_buffer_append_data_prefix(data, 24, - apr_cert_list[i]. - cert.data, - apr_cert_list[i]. - cert.size); + ret = _gnutls_buffer_append_data_prefix( + data, 24, apr_cert_list[i].cert.data, + apr_cert_list[i].cert.size); if (ret < 0) return gnutls_assert_val(ret); } @@ -683,7 +655,7 @@ static int gen_x509_crt(gnutls_session_t session, gnutls_buffer_st * data) * * Returns the number of bytes sent or a negative error code. */ -int _gnutls_gen_rawpk_crt(gnutls_session_t session, gnutls_buffer_st * data) +int _gnutls_gen_rawpk_crt(gnutls_session_t session, gnutls_buffer_st *data) { int ret; gnutls_pcert_st *apr_cert_list; @@ -712,11 +684,9 @@ int _gnutls_gen_rawpk_crt(gnutls_session_t session, gnutls_buffer_st * data) if (apr_cert_list_length == 0) { ret = _gnutls_buffer_append_prefix(data, 24, 0); } else { - ret = _gnutls_buffer_append_data_prefix(data, 24, - apr_cert_list[0]. - cert.data, - apr_cert_list[0]. - cert.size); + ret = _gnutls_buffer_append_data_prefix( + data, 24, apr_cert_list[0].cert.data, + apr_cert_list[0].cert.size); } if (ret < 0) @@ -725,8 +695,8 @@ int _gnutls_gen_rawpk_crt(gnutls_session_t session, gnutls_buffer_st * data) return data->length; } -int -_gnutls_gen_cert_client_crt(gnutls_session_t session, gnutls_buffer_st * data) +int _gnutls_gen_cert_client_crt(gnutls_session_t session, + gnutls_buffer_st *data) { gnutls_certificate_type_t cert_type; @@ -743,8 +713,8 @@ _gnutls_gen_cert_client_crt(gnutls_session_t session, gnutls_buffer_st * data) } } -int -_gnutls_gen_cert_server_crt(gnutls_session_t session, gnutls_buffer_st * data) +int _gnutls_gen_cert_server_crt(gnutls_session_t session, + gnutls_buffer_st *data) { gnutls_certificate_type_t cert_type; @@ -761,8 +731,7 @@ _gnutls_gen_cert_server_crt(gnutls_session_t session, gnutls_buffer_st * data) } } -static -int check_pk_compat(gnutls_session_t session, gnutls_pubkey_t pubkey) +static int check_pk_compat(gnutls_session_t session, gnutls_pubkey_t pubkey) { unsigned cert_pk; unsigned kx; @@ -789,10 +758,11 @@ int check_pk_compat(gnutls_session_t session, gnutls_pubkey_t pubkey) /* Process server certificate */ -#define CLEAR_CERTS for(x=0;x 0) { - if ((ret = - _gnutls_handshake_sign_crt_vrfy(session, - &apr_cert_list[0], - apr_pkey, - &signature)) < 0) { + if ((ret = _gnutls_handshake_sign_crt_vrfy( + session, &apr_cert_list[0], apr_pkey, + &signature)) < 0) { gnutls_assert(); return ret; } @@ -1226,9 +1181,8 @@ _gnutls_gen_cert_client_crt_vrfy(gnutls_session_t session, } } - ret = - _gnutls_buffer_append_data_prefix(data, 16, signature.data, - signature.size); + ret = _gnutls_buffer_append_data_prefix(data, 16, signature.data, + signature.size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -1236,21 +1190,20 @@ _gnutls_gen_cert_client_crt_vrfy(gnutls_session_t session, ret = data->length - init_pos; - cleanup: +cleanup: _gnutls_free_datum(&signature); return ret; } -int -_gnutls_proc_cert_client_crt_vrfy(gnutls_session_t session, - uint8_t * data, size_t data_size) +int _gnutls_proc_cert_client_crt_vrfy(gnutls_session_t session, uint8_t *data, + size_t data_size) { int size, ret; ssize_t dsize = data_size; uint8_t *pdata = data; gnutls_datum_t sig; cert_auth_info_t info = - _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE); + _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE); gnutls_pcert_st peer_cert; gnutls_sign_algorithm_t sign_algo = GNUTLS_SIGN_UNKNOWN; const version_entry_st *ver = get_version(session); @@ -1263,15 +1216,15 @@ _gnutls_proc_cert_client_crt_vrfy(gnutls_session_t session, return GNUTLS_E_INTERNAL_ERROR; } - cred = (gnutls_certificate_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_CERTIFICATE); + cred = (gnutls_certificate_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_CERTIFICATE); if (cred == NULL) { gnutls_assert(); return GNUTLS_E_INSUFFICIENT_CREDENTIALS; } - vflags = - cred->verify_flags | session->internals.additional_verify_flags; + vflags = cred->verify_flags | + session->internals.additional_verify_flags; if (_gnutls_version_has_selectable_sighash(ver)) { DECR_LEN(dsize, 2); @@ -1286,8 +1239,8 @@ _gnutls_proc_cert_client_crt_vrfy(gnutls_session_t session, ret = _gnutls_session_sign_algo_enabled(session, sign_algo); if (ret < 0) - return - gnutls_assert_val(GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM); + return gnutls_assert_val( + GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM); DECR_LEN(dsize, 2); size = _gnutls_read_uint16(pdata); @@ -1298,18 +1251,16 @@ _gnutls_proc_cert_client_crt_vrfy(gnutls_session_t session, sig.data = pdata; sig.size = size; - ret = _gnutls_get_auth_info_pcert(&peer_cert, - session->security_parameters. - client_ctype, info); + ret = _gnutls_get_auth_info_pcert( + &peer_cert, session->security_parameters.client_ctype, info); if (ret < 0) { gnutls_assert(); return ret; } - if ((ret = - _gnutls_handshake_verify_crt_vrfy(session, vflags, &peer_cert, - &sig, sign_algo)) < 0) { + if ((ret = _gnutls_handshake_verify_crt_vrfy( + session, vflags, &peer_cert, &sig, sign_algo)) < 0) { gnutls_assert(); gnutls_pcert_deinit(&peer_cert); return ret; @@ -1319,9 +1270,8 @@ _gnutls_proc_cert_client_crt_vrfy(gnutls_session_t session, return 0; } -int -_gnutls_gen_cert_server_cert_req(gnutls_session_t session, - gnutls_buffer_st * data) +int _gnutls_gen_cert_server_cert_req(gnutls_session_t session, + gnutls_buffer_st *data) { gnutls_certificate_credentials_t cred; int ret, i; @@ -1338,8 +1288,8 @@ _gnutls_gen_cert_server_cert_req(gnutls_session_t session, * performance. */ - cred = (gnutls_certificate_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_CERTIFICATE); + cred = (gnutls_certificate_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_CERTIFICATE); if (cred == NULL) { gnutls_assert(); return GNUTLS_E_INSUFFICIENT_CREDENTIALS; @@ -1349,9 +1299,10 @@ _gnutls_gen_cert_server_cert_req(gnutls_session_t session, size_t j; flags = 0; - for (j = 0; j < session->internals.priorities->sigalg.size; j++) { + for (j = 0; j < session->internals.priorities->sigalg.size; + j++) { const gnutls_sign_entry_st *se = - session->internals.priorities->sigalg.entry[j]; + session->internals.priorities->sigalg.entry[j]; switch (se->pk) { case GNUTLS_PK_RSA: case GNUTLS_PK_RSA_PSS: @@ -1373,19 +1324,18 @@ _gnutls_gen_cert_server_cert_req(gnutls_session_t session, #endif default: gnutls_assert(); - _gnutls_debug_log - ("%s is unsupported for cert request\n", - gnutls_pk_get_name(se->pk)); + _gnutls_debug_log( + "%s is unsupported for cert request\n", + gnutls_pk_get_name(se->pk)); } } } else { #ifdef ENABLE_GOST - if (_gnutls_kx_is_vko_gost - (session->security_parameters.cs->kx_algorithm)) { - flags = - GOSTR34102012_256_SIGN_FLAG | - GOSTR34102012_512_SIGN_FLAG; + if (_gnutls_kx_is_vko_gost( + session->security_parameters.cs->kx_algorithm)) { + flags = GOSTR34102012_256_SIGN_FLAG | + GOSTR34102012_512_SIGN_FLAG; } else #endif { @@ -1427,15 +1377,9 @@ _gnutls_gen_cert_server_cert_req(gnutls_session_t session, if (session->security_parameters.client_ctype == GNUTLS_CRT_X509 && session->internals.ignore_rdn_sequence == 0) { - - ret = - _gnutls_buffer_append_data_prefix(data, 16, - cred-> - tlist->x509_rdn_sequence. - data, - cred-> - tlist->x509_rdn_sequence. - size); + ret = _gnutls_buffer_append_data_prefix( + data, 16, cred->tlist->x509_rdn_sequence.data, + cred->tlist->x509_rdn_sequence.size); if (ret < 0) return gnutls_assert_val(ret); } else { @@ -1454,32 +1398,29 @@ _gnutls_gen_cert_server_cert_req(gnutls_session_t session, * It is normal to return 0 with no certificates in client side. * */ -int -_gnutls_get_selected_cert(gnutls_session_t session, - gnutls_pcert_st ** apr_cert_list, - int *apr_cert_list_length, - gnutls_privkey_t * apr_pkey) +int _gnutls_get_selected_cert(gnutls_session_t session, + gnutls_pcert_st **apr_cert_list, + int *apr_cert_list_length, + gnutls_privkey_t *apr_pkey) { if (session->security_parameters.entity == GNUTLS_SERVER) { - *apr_cert_list = session->internals.selected_cert_list; *apr_pkey = session->internals.selected_key; *apr_cert_list_length = - session->internals.selected_cert_list_length; + session->internals.selected_cert_list_length; if (*apr_cert_list_length == 0 || *apr_cert_list == NULL) { gnutls_assert(); return GNUTLS_E_INSUFFICIENT_CREDENTIALS; } - } else { /* CLIENT SIDE */ + } else { /* CLIENT SIDE */ /* _gnutls_select_client_cert() must have been called before. */ *apr_cert_list = session->internals.selected_cert_list; *apr_cert_list_length = - session->internals.selected_cert_list_length; + session->internals.selected_cert_list_length; *apr_pkey = session->internals.selected_key; - } return 0; @@ -1490,16 +1431,16 @@ void _gnutls_selected_certs_deinit(gnutls_session_t session) if (session->internals.selected_need_free != 0) { int i; - for (i = 0; - i < session->internals.selected_cert_list_length; i++) { - gnutls_pcert_deinit(&session->internals. - selected_cert_list[i]); + for (i = 0; i < session->internals.selected_cert_list_length; + i++) { + gnutls_pcert_deinit( + &session->internals.selected_cert_list[i]); } gnutls_free(session->internals.selected_cert_list); for (i = 0; i < session->internals.selected_ocsp_length; i++) { - _gnutls_free_datum(&session->internals. - selected_ocsp[i].response); + _gnutls_free_datum( + &session->internals.selected_ocsp[i].response); } gnutls_free(session->internals.selected_ocsp); @@ -1515,13 +1456,12 @@ void _gnutls_selected_certs_deinit(gnutls_session_t session) return; } -static void -selected_certs_set(gnutls_session_t session, - gnutls_pcert_st * certs, int ncerts, - gnutls_ocsp_data_st * ocsp, unsigned nocsp, - gnutls_privkey_t key, int need_free, - gnutls_status_request_ocsp_func ocsp_func, - void *ocsp_func_ptr) +static void selected_certs_set(gnutls_session_t session, gnutls_pcert_st *certs, + int ncerts, gnutls_ocsp_data_st *ocsp, + unsigned nocsp, gnutls_privkey_t key, + int need_free, + gnutls_status_request_ocsp_func ocsp_func, + void *ocsp_func_ptr) { _gnutls_selected_certs_deinit(session); @@ -1538,7 +1478,7 @@ selected_certs_set(gnutls_session_t session, session->internals.selected_ocsp_func_ptr = ocsp_func_ptr; } -static void get_server_name(gnutls_session_t session, uint8_t * name, +static void get_server_name(gnutls_session_t session, uint8_t *name, size_t max_name_size) { int ret, i; @@ -1548,8 +1488,8 @@ static void get_server_name(gnutls_session_t session, uint8_t * name, ret = 0; for (i = 0; !(ret < 0); i++) { max_name = max_name_size; - ret = - gnutls_server_name_get(session, name, &max_name, &type, i); + ret = gnutls_server_name_get(session, name, &max_name, &type, + i); if (ret >= 0 && type == GNUTLS_NAME_DNS) return; } @@ -1571,11 +1511,10 @@ static void get_server_name(gnutls_session_t session, uint8_t * name, * If, in the future, this routine is called at the client then we * need to adapt the implementation accordingly. */ -static -int cert_select_sign_algorithm(gnutls_session_t session, - gnutls_pcert_st * cert, - gnutls_privkey_t pkey, - const gnutls_cipher_suite_entry_st * cs) +static int cert_select_sign_algorithm(gnutls_session_t session, + gnutls_pcert_st *cert, + gnutls_privkey_t pkey, + const gnutls_cipher_suite_entry_st *cs) { gnutls_pubkey_t pubkey = cert->pubkey; gnutls_certificate_type_t cert_type = cert->type; @@ -1597,32 +1536,30 @@ int cert_select_sign_algorithm(gnutls_session_t session, key_usage = get_key_usage(session, pubkey); /* In TLS1.3 we support only signatures; ensure the selected key supports them */ - if (ver->tls13_sem - && _gnutls_check_key_usage_for_sig(session, key_usage, 1) < 0) + if (ver->tls13_sem && + _gnutls_check_key_usage_for_sig(session, key_usage, 1) < 0) return gnutls_assert_val(GNUTLS_E_INSUFFICIENT_CREDENTIALS); - if (!ver->tls13_sem - && !_gnutls_kx_supports_pk_usage(cs->kx_algorithm, pk, key_usage)) { + if (!ver->tls13_sem && + !_gnutls_kx_supports_pk_usage(cs->kx_algorithm, pk, key_usage)) { return gnutls_assert_val(GNUTLS_E_INSUFFICIENT_CREDENTIALS); } - if (!ver->tls13_sem - && _gnutls_kx_encipher_type(cs->kx_algorithm) != CIPHER_SIGN) + if (!ver->tls13_sem && + _gnutls_kx_encipher_type(cs->kx_algorithm) != CIPHER_SIGN) return 0; if (!_gnutls_version_has_selectable_sighash(ver)) { /* For SSL3.0 and TLS1.0 we lie as we cannot express md5-sha1 as * signature algorithm. */ - algo = - gnutls_pk_to_sign(cert->pubkey->params.algo, - GNUTLS_DIG_SHA1); + algo = gnutls_pk_to_sign(cert->pubkey->params.algo, + GNUTLS_DIG_SHA1); gnutls_sign_algorithm_set_server(session, algo); return 0; } - algo = - _gnutls_session_get_sign_algo(session, cert, pkey, 0, - cs->kx_algorithm); + algo = _gnutls_session_get_sign_algo(session, cert, pkey, 0, + cs->kx_algorithm); if (algo == GNUTLS_SIGN_UNKNOWN) return gnutls_assert_val(GNUTLS_E_INCOMPATIBLE_SIG_WITH_KEY); @@ -1643,19 +1580,18 @@ int cert_select_sign_algorithm(gnutls_session_t session, * selected certificate will be in session->internals.selected_*. * */ -int -_gnutls_select_server_cert(gnutls_session_t session, - const gnutls_cipher_suite_entry_st * cs) +int _gnutls_select_server_cert(gnutls_session_t session, + const gnutls_cipher_suite_entry_st *cs) { unsigned i, j; int idx, ret; gnutls_certificate_credentials_t cred; char server_name[MAX_CN]; - cred = (gnutls_certificate_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_CERTIFICATE); + cred = (gnutls_certificate_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_CERTIFICATE); if (cred == NULL) { - gnutls_assert(); /* we don't need to select a cert */ + gnutls_assert(); /* we don't need to select a cert */ return 0; } @@ -1670,34 +1606,29 @@ _gnutls_select_server_cert(gnutls_session_t session, return gnutls_assert_val(ret); if (session->internals.selected_cert_list_length == 0) - return - gnutls_assert_val - (GNUTLS_E_INSUFFICIENT_CREDENTIALS); - - if (unlikely - (session->internals.selected_cert_list == NULL)) { - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + return gnutls_assert_val( + GNUTLS_E_INSUFFICIENT_CREDENTIALS); + + if (unlikely(session->internals.selected_cert_list == + NULL)) { + return gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); } - _gnutls_debug_log("Selected (%s) cert\n", - gnutls_pk_get_name(session-> - internals.selected_cert_list - [0].pubkey-> - params.algo)); + _gnutls_debug_log( + "Selected (%s) cert\n", + gnutls_pk_get_name( + session->internals.selected_cert_list[0] + .pubkey->params.algo)); } if (session->internals.selected_key == NULL) - return - gnutls_assert_val - (GNUTLS_E_INSUFFICIENT_CREDENTIALS); + return gnutls_assert_val( + GNUTLS_E_INSUFFICIENT_CREDENTIALS); - ret = cert_select_sign_algorithm(session, - &session-> - internals.selected_cert_list - [0], - session-> - internals.selected_key, cs); + ret = cert_select_sign_algorithm( + session, &session->internals.selected_cert_list[0], + session->internals.selected_key, cs); if (ret < 0) return gnutls_assert_val(ret); @@ -1710,9 +1641,9 @@ _gnutls_select_server_cert(gnutls_session_t session, get_server_name(session, (unsigned char *)server_name, sizeof(server_name)); - _gnutls_handshake_log("HSK[%p]: Requested server name: '%s'\n", - session, server_name); - idx = -1; /* default is use no certificate */ + _gnutls_handshake_log("HSK[%p]: Requested server name: '%s'\n", session, + server_name); + idx = -1; /* default is use no certificate */ /* find certificates that match the requested server_name */ @@ -1721,28 +1652,25 @@ _gnutls_select_server_cert(gnutls_session_t session, for (j = 0; j < cred->ncerts; j++) { i = cred->sorted_cert_idx[j]; - if (cred->certs[i].names != NULL - && _gnutls_str_array_match(cred->certs[i].names, - server_name) != 0) { + if (cred->certs[i].names != NULL && + _gnutls_str_array_match(cred->certs[i].names, + server_name) != 0) { /* if requested algorithms are also compatible select it */ - ret = cert_select_sign_algorithm(session, - &cred->certs - [i].cert_list - [0], - cred-> - certs[i].pkey, - cs); + ret = cert_select_sign_algorithm( + session, &cred->certs[i].cert_list[0], + cred->certs[i].pkey, cs); if (ret >= 0) { idx = i; - _gnutls_debug_log - ("Selected (%s) cert based on ciphersuite %x.%x: %s\n", - gnutls_pk_get_name(cred->certs - [i].cert_list - [0].pubkey-> - params.algo), - (unsigned)cs->id[0], - (unsigned)cs->id[1], cs->name); + _gnutls_debug_log( + "Selected (%s) cert based on ciphersuite %x.%x: %s\n", + gnutls_pk_get_name( + cred->certs[i] + .cert_list[0] + .pubkey->params + .algo), + (unsigned)cs->id[0], + (unsigned)cs->id[1], cs->name); /* found */ goto finished; } @@ -1754,25 +1682,27 @@ _gnutls_select_server_cert(gnutls_session_t session, for (j = 0; j < cred->ncerts; j++) { i = cred->sorted_cert_idx[j]; - _gnutls_handshake_log - ("HSK[%p]: checking compat of %s with certificate[%d] (%s/%s)\n", - session, cs->name, i, - gnutls_pk_get_name(cred->certs[i].cert_list[0].pubkey-> - params.algo), - gnutls_certificate_type_get_name(cred->certs[i]. - cert_list[0].type)); + _gnutls_handshake_log( + "HSK[%p]: checking compat of %s with certificate[%d] (%s/%s)\n", + session, cs->name, i, + gnutls_pk_get_name( + cred->certs[i].cert_list[0].pubkey->params.algo), + gnutls_certificate_type_get_name( + cred->certs[i].cert_list[0].type)); ret = cert_select_sign_algorithm(session, &cred->certs[i].cert_list[0], cred->certs[i].pkey, cs); if (ret >= 0) { idx = i; - _gnutls_debug_log - ("Selected (%s) cert based on ciphersuite %x.%x: %s\n", - gnutls_pk_get_name(cred->certs[i]. - cert_list[0].pubkey->params. - algo), (unsigned)cs->id[0], - (unsigned)cs->id[1], cs->name); + _gnutls_debug_log( + "Selected (%s) cert based on ciphersuite %x.%x: %s\n", + gnutls_pk_get_name( + cred->certs[i] + .cert_list[0] + .pubkey->params.algo), + (unsigned)cs->id[0], (unsigned)cs->id[1], + cs->name); /* found */ goto finished; } @@ -1781,7 +1711,7 @@ _gnutls_select_server_cert(gnutls_session_t session, /* store the certificate pointer for future use, in the handshake. * (This will allow not calling this callback again.) */ - finished: +finished: if (idx >= 0) { gnutls_status_request_ocsp_func ocsp_func = NULL; void *ocsp_ptr = NULL; @@ -1799,12 +1729,10 @@ _gnutls_select_server_cert(gnutls_session_t session, ocsp_ptr = cred->certs[idx].ocsp_func_ptr; } - selected_certs_set(session, - &cred->certs[idx].cert_list[0], - cred->certs[idx].cert_list_length, - ocsp, nocsp, - cred->certs[idx].pkey, 0, - ocsp_func, ocsp_ptr); + selected_certs_set(session, &cred->certs[idx].cert_list[0], + cred->certs[idx].cert_list_length, ocsp, + nocsp, cred->certs[idx].pkey, 0, ocsp_func, + ocsp_ptr); } else { /* Certificate does not support REQUESTED_ALGO. */ return gnutls_assert_val(GNUTLS_E_INSUFFICIENT_CREDENTIALS); @@ -1813,9 +1741,8 @@ _gnutls_select_server_cert(gnutls_session_t session, return 0; } -int _gnutls_gen_dhe_signature(gnutls_session_t session, - gnutls_buffer_st * data, uint8_t * plain, - unsigned plain_size) +int _gnutls_gen_dhe_signature(gnutls_session_t session, gnutls_buffer_st *data, + uint8_t *plain, unsigned plain_size) { gnutls_pcert_st *apr_cert_list; gnutls_privkey_t apr_pkey; @@ -1832,25 +1759,23 @@ int _gnutls_gen_dhe_signature(gnutls_session_t session, ddata.size = plain_size; /* find the appropriate certificate */ - if ((ret = - _gnutls_get_selected_cert(session, &apr_cert_list, - &apr_cert_list_length, &apr_pkey)) < 0) { + if ((ret = _gnutls_get_selected_cert(session, &apr_cert_list, + &apr_cert_list_length, + &apr_pkey)) < 0) { gnutls_assert(); return ret; } if (apr_cert_list_length > 0) { - if ((ret = - _gnutls_handshake_sign_data(session, - &apr_cert_list[0], - apr_pkey, &ddata, - &signature, &sign_algo)) < 0) { + if ((ret = _gnutls_handshake_sign_data( + session, &apr_cert_list[0], apr_pkey, &ddata, + &signature, &sign_algo)) < 0) { gnutls_assert(); goto cleanup; } } else { gnutls_assert(); - ret = 0; /* ANON-DH, do not put a signature - ILLEGAL! */ + ret = 0; /* ANON-DH, do not put a signature - ILLEGAL! */ goto cleanup; } @@ -1880,29 +1805,27 @@ int _gnutls_gen_dhe_signature(gnutls_session_t session, } } - ret = - _gnutls_buffer_append_data_prefix(data, 16, signature.data, - signature.size); + ret = _gnutls_buffer_append_data_prefix(data, 16, signature.data, + signature.size); if (ret < 0) { gnutls_assert(); } ret = 0; - cleanup: +cleanup: _gnutls_free_datum(&signature); return ret; } -int -_gnutls_proc_dhe_signature(gnutls_session_t session, uint8_t * data, - size_t _data_size, gnutls_datum_t * vparams) +int _gnutls_proc_dhe_signature(gnutls_session_t session, uint8_t *data, + size_t _data_size, gnutls_datum_t *vparams) { int sigsize; gnutls_datum_t signature; int ret; cert_auth_info_t info = - _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE); + _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE); ssize_t data_size = _data_size; gnutls_pcert_st peer_cert; gnutls_sign_algorithm_t sign_algo = GNUTLS_SIGN_UNKNOWN; @@ -1917,15 +1840,15 @@ _gnutls_proc_dhe_signature(gnutls_session_t session, uint8_t * data, return GNUTLS_E_INTERNAL_ERROR; } - cred = (gnutls_certificate_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_CERTIFICATE); + cred = (gnutls_certificate_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_CERTIFICATE); if (cred == NULL) { gnutls_assert(); return GNUTLS_E_INSUFFICIENT_CREDENTIALS; } - vflags = - cred->verify_flags | session->internals.additional_verify_flags; + vflags = cred->verify_flags | + session->internals.additional_verify_flags; /* VERIFY SIGNATURE */ if (_gnutls_version_has_selectable_sighash(ver)) { @@ -1955,15 +1878,14 @@ _gnutls_proc_dhe_signature(gnutls_session_t session, uint8_t * data, // Retrieve the negotiated certificate type cert_type = get_certificate_type(session, GNUTLS_CTYPE_SERVER); - if ((ret = - _gnutls_get_auth_info_pcert(&peer_cert, cert_type, info)) < 0) { + if ((ret = _gnutls_get_auth_info_pcert(&peer_cert, cert_type, info)) < + 0) { gnutls_assert(); return ret; } - ret = - _gnutls_handshake_verify_data(session, vflags, &peer_cert, vparams, - &signature, sign_algo); + ret = _gnutls_handshake_verify_data(session, vflags, &peer_cert, + vparams, &signature, sign_algo); gnutls_pcert_deinit(&peer_cert); if (ret < 0) { diff --git a/lib/auth/cert.h b/lib/auth/cert.h index d571526c3f..aec0bc327e 100644 --- a/lib/auth/cert.h +++ b/lib/auth/cert.h @@ -22,17 +22,17 @@ */ #ifndef GNUTLS_LIB_AUTH_CERT_H -# define GNUTLS_LIB_AUTH_CERT_H +#define GNUTLS_LIB_AUTH_CERT_H -# include "auth.h" -# include -# include -# include -# include -# include -# include "abstract_int.h" +#include "auth.h" +#include +#include +#include +#include +#include +#include "abstract_int.h" -# define MAX_OCSP_RESPONSES 8 +#define MAX_OCSP_RESPONSES 8 /* We use the structure below to hold a certificate chain * with corresponding public/private key pair. This structure will @@ -41,12 +41,12 @@ * the list length is always 1. */ typedef struct { - gnutls_pcert_st *cert_list; /* a certificate chain */ - unsigned int cert_list_length; /* its length */ - gnutls_str_array_t names; /* the names in the first certificate */ + gnutls_pcert_st *cert_list; /* a certificate chain */ + unsigned int cert_list_length; /* its length */ + gnutls_str_array_t names; /* the names in the first certificate */ gnutls_status_request_ocsp_func ocsp_func; - void *ocsp_func_ptr; /* corresponding OCSP response function + ptr */ + void *ocsp_func_ptr; /* corresponding OCSP response function + ptr */ gnutls_ocsp_data_st ocsp_data[MAX_OCSP_RESPONSES]; unsigned int ocsp_data_length; @@ -60,8 +60,8 @@ typedef struct { */ typedef struct gnutls_certificate_credentials_st { gnutls_dh_params_t dh_params; - unsigned deinit_dh_params; /* if the internal values are set */ - gnutls_sec_param_t dh_sec_param; /* used in RFC7919 negotiation */ + unsigned deinit_dh_params; /* if the internal values are set */ + gnutls_sec_param_t dh_sec_param; /* used in RFC7919 negotiation */ /* this callback is used to retrieve the DH or RSA * parameters. @@ -69,7 +69,7 @@ typedef struct gnutls_certificate_credentials_st { gnutls_params_function *params_func; certs_st *certs; - unsigned ncerts; /* the number of certs */ + unsigned ncerts; /* the number of certs */ /* contains sorted index values for certs. Sorted in a way * that RSA-PSS keys always take precedence over plain RSA keys @@ -80,8 +80,8 @@ typedef struct gnutls_certificate_credentials_st { /* X509 specific stuff */ gnutls_x509_trust_list_t tlist; - unsigned flags; /* gnutls_certificate_flags */ - unsigned int verify_flags; /* flags to be used at + unsigned flags; /* gnutls_certificate_flags */ + unsigned int verify_flags; /* flags to be used at * certificate verification. */ unsigned int verify_depth; @@ -89,7 +89,7 @@ typedef struct gnutls_certificate_credentials_st { /* It's a mess here. However we need to keep the old 3 functions * for compatibility */ - gnutls_certificate_retrieve_function *legacy_cert_cb1; /* deprecated */ + gnutls_certificate_retrieve_function *legacy_cert_cb1; /* deprecated */ gnutls_certificate_retrieve_function2 *legacy_cert_cb2; gnutls_certificate_retrieve_function3 *get_cert_callback3; @@ -101,7 +101,7 @@ typedef struct gnutls_certificate_credentials_st { /* OCSP */ gnutls_status_request_ocsp_func glob_ocsp_func; - void *glob_ocsp_func_ptr; /* corresponding OCSP response function */ + void *glob_ocsp_func_ptr; /* corresponding OCSP response function */ /* This is only used by server to indicate whether this * credentials can be used for signing in TLS 1.3. */ @@ -141,53 +141,50 @@ int _gnutls_proc_cert_cert_req(gnutls_session_t, uint8_t *, size_t); int _gnutls_proc_cert_client_crt_vrfy(gnutls_session_t, uint8_t *, size_t); int _gnutls_proc_crt(gnutls_session_t, uint8_t *, size_t); int _gnutls_get_selected_cert(gnutls_session_t session, - gnutls_pcert_st ** apr_cert_list, + gnutls_pcert_st **apr_cert_list, int *apr_cert_list_length, - gnutls_privkey_t * apr_pkey); + gnutls_privkey_t *apr_pkey); -int -_gnutls_select_client_cert(gnutls_session_t session, - const uint8_t * _data, size_t _data_size, - gnutls_pk_algorithm_t * pk_algos, - int pk_algos_length); +int _gnutls_select_client_cert(gnutls_session_t session, const uint8_t *_data, + size_t _data_size, + gnutls_pk_algorithm_t *pk_algos, + int pk_algos_length); -int _gnutls_pcert_to_auth_info(cert_auth_info_t info, gnutls_pcert_st * certs, +int _gnutls_pcert_to_auth_info(cert_auth_info_t info, gnutls_pcert_st *certs, size_t ncerts); -int -_gnutls_select_server_cert(gnutls_session_t session, - const gnutls_cipher_suite_entry_st * cs); +int _gnutls_select_server_cert(gnutls_session_t session, + const gnutls_cipher_suite_entry_st *cs); void _gnutls_selected_certs_deinit(gnutls_session_t session); -int _gnutls_get_auth_info_pcert(gnutls_pcert_st * gcert, +int _gnutls_get_auth_info_pcert(gnutls_pcert_st *gcert, gnutls_certificate_type_t type, cert_auth_info_t info); int _gnutls_selected_cert_supported_kx(struct gnutls_session_int *session, - gnutls_kx_algorithm_t * alg, + gnutls_kx_algorithm_t *alg, int *alg_size); int _gnutls_check_key_cert_match(gnutls_certificate_credentials_t res); -int _gnutls_gen_dhe_signature(gnutls_session_t session, - gnutls_buffer_st * data, uint8_t * plain, - unsigned plain_size); -int _gnutls_proc_dhe_signature(gnutls_session_t session, uint8_t * data, - size_t _data_size, gnutls_datum_t * vparams); +int _gnutls_gen_dhe_signature(gnutls_session_t session, gnutls_buffer_st *data, + uint8_t *plain, unsigned plain_size); +int _gnutls_proc_dhe_signature(gnutls_session_t session, uint8_t *data, + size_t _data_size, gnutls_datum_t *vparams); -int _gnutls_gen_rawpk_crt(gnutls_session_t session, gnutls_buffer_st * data); -int _gnutls_proc_rawpk_crt(gnutls_session_t session, - uint8_t * data, size_t data_size); +int _gnutls_gen_rawpk_crt(gnutls_session_t session, gnutls_buffer_st *data); +int _gnutls_proc_rawpk_crt(gnutls_session_t session, uint8_t *data, + size_t data_size); inline static unsigned get_key_usage(gnutls_session_t session, gnutls_pubkey_t pubkey) { if (unlikely(session->internals.priorities && - session->internals. - priorities->allow_server_key_usage_violation)) + session->internals.priorities + ->allow_server_key_usage_violation)) return 0; else return pubkey->key_usage; } -#endif /* GNUTLS_LIB_AUTH_CERT_H */ +#endif /* GNUTLS_LIB_AUTH_CERT_H */ diff --git a/lib/auth/dh_common.c b/lib/auth/dh_common.c index e5f8930402..925e98c5d4 100644 --- a/lib/auth/dh_common.c +++ b/lib/auth/dh_common.c @@ -43,7 +43,7 @@ /* Frees the dh_info_st structure. */ -void _gnutls_free_dh_info(dh_info_st * dh) +void _gnutls_free_dh_info(dh_info_st *dh) { dh->secret_bits = 0; _gnutls_free_datum(&dh->prime); @@ -51,10 +51,8 @@ void _gnutls_free_dh_info(dh_info_st * dh) _gnutls_free_datum(&dh->public_key); } -int -_gnutls_proc_dh_common_client_kx(gnutls_session_t session, - uint8_t * data, size_t _data_size, - gnutls_datum_t * psk_key) +int _gnutls_proc_dh_common_client_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size, gnutls_datum_t *psk_key) { uint16_t n_Y; size_t _n_Y; @@ -74,10 +72,10 @@ _gnutls_proc_dh_common_client_kx(gnutls_session_t session, if (data_size != 0) return gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET_LENGTH); - if (_gnutls_mpi_init_scan_nz - (&session->key.proto.tls12.dh.client_Y, &data[2], _n_Y)) { + if (_gnutls_mpi_init_scan_nz(&session->key.proto.tls12.dh.client_Y, + &data[2], _n_Y)) { gnutls_assert(); - return GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER; /* most likely zero or illegal size */ + return GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER; /* most likely zero or illegal size */ } _gnutls_dh_set_peer_public(session, @@ -86,9 +84,8 @@ _gnutls_proc_dh_common_client_kx(gnutls_session_t session, peer_pub.params[DH_Y] = session->key.proto.tls12.dh.client_Y; /* calculate the key after calculating the message */ - ret = - _gnutls_pk_derive(GNUTLS_PK_DH, &tmp_dh_key, - &session->key.proto.tls12.dh.params, &peer_pub); + ret = _gnutls_pk_derive(GNUTLS_PK_DH, &tmp_dh_key, + &session->key.proto.tls12.dh.params, &peer_pub); if (ret < 0) { gnutls_assert(); goto error; @@ -97,9 +94,9 @@ _gnutls_proc_dh_common_client_kx(gnutls_session_t session, if (psk_key == NULL) { session->key.key.data = tmp_dh_key.data; session->key.key.size = tmp_dh_key.size; - } else { /* In DHE_PSK the key is set differently */ - ret = - _gnutls_set_psk_session_key(session, psk_key, &tmp_dh_key); + } else { /* In DHE_PSK the key is set differently */ + ret = _gnutls_set_psk_session_key(session, psk_key, + &tmp_dh_key); _gnutls_free_temp_key_datum(&tmp_dh_key); } @@ -109,7 +106,7 @@ _gnutls_proc_dh_common_client_kx(gnutls_session_t session, } ret = 0; - error: +error: _gnutls_mpi_release(&session->key.proto.tls12.dh.client_Y); gnutls_pk_params_clear(&session->key.proto.tls12.dh.params); @@ -117,15 +114,14 @@ _gnutls_proc_dh_common_client_kx(gnutls_session_t session, } int _gnutls_gen_dh_common_client_kx(gnutls_session_t session, - gnutls_buffer_st * data) + gnutls_buffer_st *data) { return _gnutls_gen_dh_common_client_kx_int(session, data, NULL); } -int -_gnutls_gen_dh_common_client_kx_int(gnutls_session_t session, - gnutls_buffer_st * data, - gnutls_datum_t * pskkey) +int _gnutls_gen_dh_common_client_kx_int(gnutls_session_t session, + gnutls_buffer_st *data, + gnutls_datum_t *pskkey) { int ret; gnutls_pk_params_st peer_pub; @@ -134,21 +130,18 @@ _gnutls_gen_dh_common_client_kx_int(gnutls_session_t session, gnutls_pk_params_init(&peer_pub); - ret = - _gnutls_pk_generate_keys(GNUTLS_PK_DH, 0, - &session->key.proto.tls12.dh.params, 1); + ret = _gnutls_pk_generate_keys(GNUTLS_PK_DH, 0, + &session->key.proto.tls12.dh.params, 1); if (ret < 0) return gnutls_assert_val(ret); - _gnutls_dh_set_secret_bits(session, - _gnutls_mpi_get_nbits(session->key. - proto.tls12.dh. - params.params[DH_X])); + _gnutls_dh_set_secret_bits( + session, + _gnutls_mpi_get_nbits( + session->key.proto.tls12.dh.params.params[DH_X])); - ret = - _gnutls_buffer_append_mpi(data, 16, - session->key.proto.tls12.dh. - params.params[DH_Y], 0); + ret = _gnutls_buffer_append_mpi( + data, 16, session->key.proto.tls12.dh.params.params[DH_Y], 0); if (ret < 0) { gnutls_assert(); goto error; @@ -157,18 +150,18 @@ _gnutls_gen_dh_common_client_kx_int(gnutls_session_t session, peer_pub.params[DH_Y] = session->key.proto.tls12.dh.client_Y; /* calculate the key after calculating the message */ - ret = - _gnutls_pk_derive(GNUTLS_PK_DH, &tmp_dh_key, - &session->key.proto.tls12.dh.params, &peer_pub); + ret = _gnutls_pk_derive(GNUTLS_PK_DH, &tmp_dh_key, + &session->key.proto.tls12.dh.params, &peer_pub); if (ret < 0) { gnutls_assert(); goto error; } - if (session->security_parameters.cs->kx_algorithm != GNUTLS_KX_DHE_PSK) { + if (session->security_parameters.cs->kx_algorithm != + GNUTLS_KX_DHE_PSK) { session->key.key.data = tmp_dh_key.data; session->key.key.size = tmp_dh_key.size; - } else { /* In DHE_PSK the key is set differently */ + } else { /* In DHE_PSK the key is set differently */ ret = _gnutls_set_psk_session_key(session, pskkey, &tmp_dh_key); _gnutls_free_temp_key_datum(&tmp_dh_key); } @@ -180,15 +173,14 @@ _gnutls_gen_dh_common_client_kx_int(gnutls_session_t session, ret = data->length - init_pos; - error: +error: gnutls_pk_params_clear(&session->key.proto.tls12.dh.params); return ret; } /* Returns the bytes parsed */ -int -_gnutls_proc_dh_common_server_kx(gnutls_session_t session, - uint8_t * data, size_t _data_size) +int _gnutls_proc_dh_common_server_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size) { uint16_t n_Y, n_g, n_p; size_t _n_Y, _n_g, _n_p, _n_q; @@ -234,8 +226,8 @@ _gnutls_proc_dh_common_server_kx(gnutls_session_t session, _n_g = n_g; _n_p = n_p; - if (_gnutls_mpi_init_scan_nz - (&session->key.proto.tls12.dh.client_Y, data_Y, _n_Y) != 0) { + if (_gnutls_mpi_init_scan_nz(&session->key.proto.tls12.dh.client_Y, + data_Y, _n_Y) != 0) { gnutls_assert(); return GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER; } @@ -244,77 +236,79 @@ _gnutls_proc_dh_common_server_kx(gnutls_session_t session, if (session->internals.priorities->groups.have_ffdhe != 0) { /* verify whether the received parameters match the advertised, otherwise * log that. */ - for (j = 0; j < session->internals.priorities->groups.size; j++) { - if (session->internals.priorities->groups. - entry[j]->generator - && session->internals.priorities->groups. - entry[j]->generator->size == n_g - && session->internals.priorities->groups. - entry[j]->prime->size == n_p - && memcmp(session->internals.priorities-> - groups.entry[j]->generator->data, data_g, - n_g) == 0 - && memcmp(session->internals.priorities-> - groups.entry[j]->prime->data, data_p, - n_p) == 0) { - + for (j = 0; j < session->internals.priorities->groups.size; + j++) { + if (session->internals.priorities->groups.entry[j] + ->generator && + session->internals.priorities->groups.entry[j] + ->generator->size == n_g && + session->internals.priorities->groups.entry[j] + ->prime->size == n_p && + memcmp(session->internals.priorities->groups + .entry[j] + ->generator->data, + data_g, n_g) == 0 && + memcmp(session->internals.priorities->groups + .entry[j] + ->prime->data, + data_p, n_p) == 0) { session->internals.hsk_flags |= HSK_USED_FFDHE; - _gnutls_session_group_set(session, - session-> - internals.priorities-> - groups.entry[j]); + _gnutls_session_group_set( + session, session->internals.priorities + ->groups.entry[j]); session->key.proto.tls12.dh.params.qbits = - *session->internals.priorities-> - groups.entry[j]->q_bits; - data_q = - session->internals.priorities-> - groups.entry[j]->q->data; - _n_q = - session->internals.priorities-> - groups.entry[j]->q->size; + *session->internals.priorities->groups + .entry[j] + ->q_bits; + data_q = session->internals.priorities->groups + .entry[j] + ->q->data; + _n_q = session->internals.priorities->groups + .entry[j] + ->q->size; break; } } if (!(session->internals.hsk_flags & HSK_USED_FFDHE)) { - _gnutls_audit_log(session, - "FFDHE groups advertised, but server didn't support it; falling back to server's choice\n"); + _gnutls_audit_log( + session, + "FFDHE groups advertised, but server didn't support it; falling back to server's choice\n"); } } -# ifdef ENABLE_FIPS140 +#ifdef ENABLE_FIPS140 if (gnutls_fips140_mode_enabled() && !_gnutls_dh_prime_match_fips_approved(data_p, n_p, data_g, n_g, NULL, NULL)) { gnutls_assert(); return GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER; } -# endif +#endif - if (_gnutls_mpi_init_scan_nz - (&session->key.proto.tls12.dh.params.params[DH_G], data_g, - _n_g) != 0) { + if (_gnutls_mpi_init_scan_nz( + &session->key.proto.tls12.dh.params.params[DH_G], data_g, + _n_g) != 0) { gnutls_assert(); return GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER; } - if (_gnutls_mpi_init_scan_nz - (&session->key.proto.tls12.dh.params.params[DH_P], data_p, - _n_p) != 0) { + if (_gnutls_mpi_init_scan_nz( + &session->key.proto.tls12.dh.params.params[DH_P], data_p, + _n_p) != 0) { gnutls_assert(); /* we release now because session->key.proto.tls12.dh.params.params_nr is not yet set */ - _gnutls_mpi_release(&session->key.proto.tls12.dh. - params.params[DH_G]); + _gnutls_mpi_release( + &session->key.proto.tls12.dh.params.params[DH_G]); return GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER; } - if (data_q - && _gnutls_mpi_init_scan_nz(&session->key.proto.tls12.dh. - params.params[DH_Q], data_q, - _n_q) != 0) { + if (data_q && _gnutls_mpi_init_scan_nz( + &session->key.proto.tls12.dh.params.params[DH_Q], + data_q, _n_q) != 0) { /* we release now because params_nr is not yet set */ - _gnutls_mpi_release(&session->key.proto.tls12.dh. - params.params[DH_P]); - _gnutls_mpi_release(&session->key.proto.tls12.dh. - params.params[DH_G]); + _gnutls_mpi_release( + &session->key.proto.tls12.dh.params.params[DH_P]); + _gnutls_mpi_release( + &session->key.proto.tls12.dh.params.params[DH_G]); return GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER; } @@ -329,29 +323,27 @@ _gnutls_proc_dh_common_server_kx(gnutls_session_t session, return bits; } - p_bits = - _gnutls_mpi_get_nbits(session->key.proto.tls12.dh. - params.params[DH_P]); + p_bits = _gnutls_mpi_get_nbits( + session->key.proto.tls12.dh.params.params[DH_P]); if (p_bits < bits) { /* the prime used by the peer is not acceptable */ gnutls_assert(); - _gnutls_debug_log - ("Received a prime of %u bits, limit is %u\n", - (unsigned)_gnutls_mpi_get_nbits(session->key. - proto.tls12.dh. - params.params - [DH_P]), - (unsigned)bits); + _gnutls_debug_log( + "Received a prime of %u bits, limit is %u\n", + (unsigned)_gnutls_mpi_get_nbits( + session->key.proto.tls12.dh.params + .params[DH_P]), + (unsigned)bits); return GNUTLS_E_DH_PRIME_UNACCEPTABLE; } if (p_bits >= DEFAULT_MAX_VERIFY_BITS) { gnutls_assert(); - _gnutls_debug_log - ("Received a prime of %u bits, limit is %u\n", - (unsigned)p_bits, - (unsigned)DEFAULT_MAX_VERIFY_BITS); + _gnutls_debug_log( + "Received a prime of %u bits, limit is %u\n", + (unsigned)p_bits, + (unsigned)DEFAULT_MAX_VERIFY_BITS); return GNUTLS_E_DH_PRIME_UNACCEPTABLE; } } @@ -367,9 +359,8 @@ _gnutls_proc_dh_common_server_kx(gnutls_session_t session, return ret; } -int -_gnutls_dh_common_print_server_kx(gnutls_session_t session, - gnutls_buffer_st * data) +int _gnutls_dh_common_print_server_kx(gnutls_session_t session, + gnutls_buffer_st *data) { int ret; unsigned q_bits = session->key.proto.tls12.dh.params.qbits; @@ -379,43 +370,36 @@ _gnutls_dh_common_print_server_kx(gnutls_session_t session, gnutls_assert(); _gnutls_debug_log("too small q_bits value for DH: %u\n", q_bits); - q_bits = 0; /* auto-detect */ + q_bits = 0; /* auto-detect */ } /* Y=g^x mod p */ - ret = - _gnutls_pk_generate_keys(GNUTLS_PK_DH, q_bits, - &session->key.proto.tls12.dh.params, 1); + ret = _gnutls_pk_generate_keys(GNUTLS_PK_DH, q_bits, + &session->key.proto.tls12.dh.params, 1); if (ret < 0) return gnutls_assert_val(ret); - _gnutls_dh_set_secret_bits(session, - _gnutls_mpi_get_nbits(session->key. - proto.tls12.dh. - params.params[DH_X])); + _gnutls_dh_set_secret_bits( + session, + _gnutls_mpi_get_nbits( + session->key.proto.tls12.dh.params.params[DH_X])); - ret = - _gnutls_buffer_append_mpi(data, 16, - session->key.proto.tls12.dh. - params.params[DH_P], 0); + ret = _gnutls_buffer_append_mpi( + data, 16, session->key.proto.tls12.dh.params.params[DH_P], 0); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _gnutls_buffer_append_mpi(data, 16, - session->key.proto.tls12.dh. - params.params[DH_G], 0); + ret = _gnutls_buffer_append_mpi( + data, 16, session->key.proto.tls12.dh.params.params[DH_G], 0); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _gnutls_buffer_append_mpi(data, 16, - session->key.proto.tls12.dh. - params.params[DH_Y], 0); + ret = _gnutls_buffer_append_mpi( + data, 16, session->key.proto.tls12.dh.params.params[DH_Y], 0); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -423,7 +407,7 @@ _gnutls_dh_common_print_server_kx(gnutls_session_t session, ret = data->length - init_pos; - cleanup: +cleanup: return ret; } diff --git a/lib/auth/dh_common.h b/lib/auth/dh_common.h index cc523d633e..cb93f9f5f5 100644 --- a/lib/auth/dh_common.h +++ b/lib/auth/dh_common.h @@ -21,9 +21,9 @@ */ #ifndef GNUTLS_LIB_AUTH_DH_COMMON_H -# define GNUTLS_LIB_AUTH_DH_COMMON_H +#define GNUTLS_LIB_AUTH_DH_COMMON_H -# include +#include typedef struct { int secret_bits; @@ -33,18 +33,16 @@ typedef struct { gnutls_datum_t public_key; } dh_info_st; -void _gnutls_free_dh_info(dh_info_st * dh); +void _gnutls_free_dh_info(dh_info_st *dh); -int _gnutls_gen_dh_common_client_kx_int(gnutls_session_t, - gnutls_buffer_st *, - gnutls_datum_t * pskkey); +int _gnutls_gen_dh_common_client_kx_int(gnutls_session_t, gnutls_buffer_st *, + gnutls_datum_t *pskkey); int _gnutls_gen_dh_common_client_kx(gnutls_session_t, gnutls_buffer_st *); -int _gnutls_proc_dh_common_client_kx(gnutls_session_t session, - uint8_t * data, size_t _data_size, - gnutls_datum_t * psk_key); -int _gnutls_dh_common_print_server_kx(gnutls_session_t, - gnutls_buffer_st * data); -int _gnutls_proc_dh_common_server_kx(gnutls_session_t session, - uint8_t * data, size_t _data_size); +int _gnutls_proc_dh_common_client_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size, + gnutls_datum_t *psk_key); +int _gnutls_dh_common_print_server_kx(gnutls_session_t, gnutls_buffer_st *data); +int _gnutls_proc_dh_common_server_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size); -#endif /* GNUTLS_LIB_AUTH_DH_COMMON_H */ +#endif /* GNUTLS_LIB_AUTH_DH_COMMON_H */ diff --git a/lib/auth/dhe.c b/lib/auth/dhe.c index 5a01457675..eeaf831c7f 100644 --- a/lib/auth/dhe.c +++ b/lib/auth/dhe.c @@ -52,15 +52,15 @@ const mod_auth_st dhe_rsa_auth_struct = { _gnutls_gen_cert_client_crt, gen_dhe_server_kx, _gnutls_gen_dh_common_client_kx, - _gnutls_gen_cert_client_crt_vrfy, /* gen client cert vrfy */ - _gnutls_gen_cert_server_cert_req, /* server cert request */ + _gnutls_gen_cert_client_crt_vrfy, /* gen client cert vrfy */ + _gnutls_gen_cert_server_cert_req, /* server cert request */ _gnutls_proc_crt, _gnutls_proc_crt, proc_dhe_server_kx, proc_dhe_client_kx, - _gnutls_proc_cert_client_crt_vrfy, /* proc client cert vrfy */ - _gnutls_proc_cert_cert_req /* proc server cert request */ + _gnutls_proc_cert_client_crt_vrfy, /* proc client cert vrfy */ + _gnutls_proc_cert_cert_req /* proc server cert request */ }; const mod_auth_st dhe_dss_auth_struct = { @@ -69,27 +69,27 @@ const mod_auth_st dhe_dss_auth_struct = { _gnutls_gen_cert_client_crt, gen_dhe_server_kx, _gnutls_gen_dh_common_client_kx, - _gnutls_gen_cert_client_crt_vrfy, /* gen client cert vrfy */ - _gnutls_gen_cert_server_cert_req, /* server cert request */ + _gnutls_gen_cert_client_crt_vrfy, /* gen client cert vrfy */ + _gnutls_gen_cert_server_cert_req, /* server cert request */ _gnutls_proc_crt, _gnutls_proc_crt, proc_dhe_server_kx, proc_dhe_client_kx, - _gnutls_proc_cert_client_crt_vrfy, /* proc client cert vrfy */ - _gnutls_proc_cert_cert_req /* proc server cert request */ + _gnutls_proc_cert_client_crt_vrfy, /* proc client cert vrfy */ + _gnutls_proc_cert_cert_req /* proc server cert request */ }; #endif -static int gen_dhe_server_kx(gnutls_session_t session, gnutls_buffer_st * data) +static int gen_dhe_server_kx(gnutls_session_t session, gnutls_buffer_st *data) { int ret = 0; gnutls_certificate_credentials_t cred; unsigned sig_pos; - cred = (gnutls_certificate_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_CERTIFICATE); + cred = (gnutls_certificate_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_CERTIFICATE); if (cred == NULL) { gnutls_assert(); return GNUTLS_E_INSUFFICIENT_CREDENTIALS; @@ -101,9 +101,8 @@ static int gen_dhe_server_kx(gnutls_session_t session, gnutls_buffer_st * data) return ret; } - ret = - _gnutls_figure_dh_params(session, cred->dh_params, - cred->params_func, cred->dh_sec_param); + ret = _gnutls_figure_dh_params(session, cred->dh_params, + cred->params_func, cred->dh_sec_param); if (ret < 0) { return gnutls_assert_val(ret); } @@ -121,8 +120,8 @@ static int gen_dhe_server_kx(gnutls_session_t session, gnutls_buffer_st * data) data->length - sig_pos); } -static int -proc_dhe_server_kx(gnutls_session_t session, uint8_t * data, size_t _data_size) +static int proc_dhe_server_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size) { gnutls_datum_t vdata; int ret; @@ -134,12 +133,12 @@ proc_dhe_server_kx(gnutls_session_t session, uint8_t * data, size_t _data_size) vdata.data = data; vdata.size = ret; - return _gnutls_proc_dhe_signature(session, data + ret, - _data_size - ret, &vdata); + return _gnutls_proc_dhe_signature(session, data + ret, _data_size - ret, + &vdata); } -static int -proc_dhe_client_kx(gnutls_session_t session, uint8_t * data, size_t _data_size) +static int proc_dhe_client_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size) { return _gnutls_proc_dh_common_client_kx(session, data, _data_size, NULL); diff --git a/lib/auth/dhe_psk.c b/lib/auth/dhe_psk.c index 6ff31012db..ab5eddd16a 100644 --- a/lib/auth/dhe_psk.c +++ b/lib/auth/dhe_psk.c @@ -32,78 +32,73 @@ /* Contains PSK code for DHE and ECDHE */ -# include "auth.h" -# include "errors.h" -# include "dh.h" -# include -# include "num.h" -# include "mpi.h" -# include -# include -# include -# include -# include - -static int -proc_ecdhe_psk_server_kx(gnutls_session_t session, uint8_t * data, - size_t _data_size); +#include "auth.h" +#include "errors.h" +#include "dh.h" +#include +#include "num.h" +#include "mpi.h" +#include +#include +#include +#include +#include + +static int proc_ecdhe_psk_server_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size); static int gen_dhe_psk_server_kx(gnutls_session_t, gnutls_buffer_st *); static int gen_dhe_psk_client_kx(gnutls_session_t, gnutls_buffer_st *); static int gen_ecdhe_psk_client_kx(gnutls_session_t, gnutls_buffer_st *); static int proc_ecdhe_psk_client_kx(gnutls_session_t, uint8_t *, size_t); static int proc_dhe_psk_server_kx(gnutls_session_t, uint8_t *, size_t); static int gen_ecdhe_psk_server_kx(gnutls_session_t session, - gnutls_buffer_st * data); -static int proc_dhe_psk_client_kx(gnutls_session_t session, uint8_t * data, + gnutls_buffer_st *data); +static int proc_dhe_psk_client_kx(gnutls_session_t session, uint8_t *data, size_t _data_size); -# ifdef ENABLE_DHE -const mod_auth_st dhe_psk_auth_struct = { - "DHE PSK", - NULL, - NULL, - gen_dhe_psk_server_kx, - gen_dhe_psk_client_kx, - NULL, - NULL, - - NULL, - NULL, /* certificate */ - proc_dhe_psk_server_kx, - proc_dhe_psk_client_kx, - NULL, - NULL -}; -# endif - -# ifdef ENABLE_ECDHE -const mod_auth_st ecdhe_psk_auth_struct = { - "ECDHE PSK", - NULL, - NULL, - gen_ecdhe_psk_server_kx, - gen_ecdhe_psk_client_kx, - NULL, - NULL, - - NULL, - NULL, /* certificate */ - proc_ecdhe_psk_server_kx, - proc_ecdhe_psk_client_kx, - NULL, - NULL -}; -# endif - -static int -gen_ecdhe_psk_client_kx(gnutls_session_t session, gnutls_buffer_st * data) +#ifdef ENABLE_DHE +const mod_auth_st dhe_psk_auth_struct = { "DHE PSK", + NULL, + NULL, + gen_dhe_psk_server_kx, + gen_dhe_psk_client_kx, + NULL, + NULL, + + NULL, + NULL, /* certificate */ + proc_dhe_psk_server_kx, + proc_dhe_psk_client_kx, + NULL, + NULL }; +#endif + +#ifdef ENABLE_ECDHE +const mod_auth_st ecdhe_psk_auth_struct = { "ECDHE PSK", + NULL, + NULL, + gen_ecdhe_psk_server_kx, + gen_ecdhe_psk_client_kx, + NULL, + NULL, + + NULL, + NULL, /* certificate */ + proc_ecdhe_psk_server_kx, + proc_ecdhe_psk_client_kx, + NULL, + NULL }; +#endif + +static int gen_ecdhe_psk_client_kx(gnutls_session_t session, + gnutls_buffer_st *data) { int ret, free; gnutls_psk_client_credentials_t cred; gnutls_datum_t username, key; unsigned init_pos = data->length; - cred = (gnutls_psk_client_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_PSK); + cred = (gnutls_psk_client_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_PSK); if (cred == NULL) return gnutls_assert_val(GNUTLS_E_INSUFFICIENT_CREDENTIALS); @@ -112,9 +107,8 @@ gen_ecdhe_psk_client_kx(gnutls_session_t session, gnutls_buffer_st * data) if (ret < 0) return gnutls_assert_val(ret); - ret = - _gnutls_buffer_append_data_prefix(data, 16, username.data, - username.size); + ret = _gnutls_buffer_append_data_prefix(data, 16, username.data, + username.size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -129,7 +123,7 @@ gen_ecdhe_psk_client_kx(gnutls_session_t session, gnutls_buffer_st * data) ret = data->length - init_pos; - cleanup: +cleanup: if (free) { _gnutls_free_datum(&username); _gnutls_free_temp_key_datum(&key); @@ -138,16 +132,16 @@ gen_ecdhe_psk_client_kx(gnutls_session_t session, gnutls_buffer_st * data) return ret; } -static int -gen_dhe_psk_client_kx(gnutls_session_t session, gnutls_buffer_st * data) +static int gen_dhe_psk_client_kx(gnutls_session_t session, + gnutls_buffer_st *data) { int ret, free; gnutls_psk_client_credentials_t cred; gnutls_datum_t username, key; unsigned init_pos = data->length; - cred = (gnutls_psk_client_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_PSK); + cred = (gnutls_psk_client_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_PSK); if (cred == NULL) return gnutls_assert_val(GNUTLS_E_INSUFFICIENT_CREDENTIALS); @@ -156,9 +150,8 @@ gen_dhe_psk_client_kx(gnutls_session_t session, gnutls_buffer_st * data) if (ret < 0) return gnutls_assert_val(ret); - ret = - _gnutls_buffer_append_data_prefix(data, 16, username.data, - username.size); + ret = _gnutls_buffer_append_data_prefix(data, 16, username.data, + username.size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -173,7 +166,7 @@ gen_dhe_psk_client_kx(gnutls_session_t session, gnutls_buffer_st * data) ret = data->length - init_pos; - cleanup: +cleanup: if (free) { _gnutls_free_datum(&username); _gnutls_free_temp_key_datum(&key); @@ -182,37 +175,35 @@ gen_dhe_psk_client_kx(gnutls_session_t session, gnutls_buffer_st * data) return ret; } -static int -gen_dhe_psk_server_kx(gnutls_session_t session, gnutls_buffer_st * data) +static int gen_dhe_psk_server_kx(gnutls_session_t session, + gnutls_buffer_st *data) { int ret; gnutls_psk_server_credentials_t cred; gnutls_datum_t hint = { NULL, 0 }; - cred = (gnutls_psk_server_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_PSK); + cred = (gnutls_psk_server_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_PSK); if (cred == NULL) { gnutls_assert(); return GNUTLS_E_INSUFFICIENT_CREDENTIALS; } - if ((ret = - _gnutls_auth_info_init(session, GNUTLS_CRD_PSK, - sizeof(psk_auth_info_st), 1)) < 0) { + if ((ret = _gnutls_auth_info_init(session, GNUTLS_CRD_PSK, + sizeof(psk_auth_info_st), 1)) < 0) { gnutls_assert(); return ret; } - ret = - _gnutls_figure_dh_params(session, cred->dh_params, - cred->params_func, cred->dh_sec_param); + ret = _gnutls_figure_dh_params(session, cred->dh_params, + cred->params_func, cred->dh_sec_param); if (ret < 0) { gnutls_assert(); return ret; } if (cred->hint) { - hint.data = (uint8_t *) cred->hint; + hint.data = (uint8_t *)cred->hint; hint.size = strlen(cred->hint); } @@ -227,22 +218,21 @@ gen_dhe_psk_server_kx(gnutls_session_t session, gnutls_buffer_st * data) return ret; } -static int -gen_ecdhe_psk_server_kx(gnutls_session_t session, gnutls_buffer_st * data) +static int gen_ecdhe_psk_server_kx(gnutls_session_t session, + gnutls_buffer_st *data) { int ret; gnutls_psk_server_credentials_t cred; gnutls_datum_t hint = { NULL, 0 }; - if ((ret = - _gnutls_auth_info_init(session, GNUTLS_CRD_PSK, - sizeof(psk_auth_info_st), 1)) < 0) { + if ((ret = _gnutls_auth_info_init(session, GNUTLS_CRD_PSK, + sizeof(psk_auth_info_st), 1)) < 0) { gnutls_assert(); return ret; } - cred = (gnutls_psk_server_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_PSK); + cred = (gnutls_psk_server_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_PSK); if (cred == NULL) { gnutls_assert(); @@ -250,7 +240,7 @@ gen_ecdhe_psk_server_kx(gnutls_session_t session, gnutls_buffer_st * data) } if (cred->hint) { - hint.data = (uint8_t *) cred->hint; + hint.data = (uint8_t *)cred->hint; hint.size = strlen(cred->hint); } @@ -266,9 +256,8 @@ gen_ecdhe_psk_server_kx(gnutls_session_t session, gnutls_buffer_st * data) return ret; } -static int -proc_dhe_psk_client_kx(gnutls_session_t session, uint8_t * data, - size_t _data_size) +static int proc_dhe_psk_client_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size) { int ret; gnutls_datum_t psk_key; @@ -277,17 +266,16 @@ proc_dhe_psk_client_kx(gnutls_session_t session, uint8_t * data, gnutls_datum_t username; ssize_t data_size = _data_size; - cred = (gnutls_psk_server_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_PSK); + cred = (gnutls_psk_server_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_PSK); if (cred == NULL) { gnutls_assert(); return GNUTLS_E_INSUFFICIENT_CREDENTIALS; } - if ((ret = - _gnutls_auth_info_init(session, GNUTLS_CRD_PSK, - sizeof(psk_auth_info_st), 1)) < 0) { + if ((ret = _gnutls_auth_info_init(session, GNUTLS_CRD_PSK, + sizeof(psk_auth_info_st), 1)) < 0) { gnutls_assert(); return ret; } @@ -319,9 +307,8 @@ proc_dhe_psk_client_kx(gnutls_session_t session, uint8_t * data, /* Adjust the data */ data += username.size + 2; - ret = - _gnutls_psk_pwd_find_entry(session, info->username, - info->username_len, &psk_key); + ret = _gnutls_psk_pwd_find_entry(session, info->username, + info->username_len, &psk_key); if (ret < 0) return gnutls_assert_val(ret); @@ -331,12 +318,10 @@ proc_dhe_psk_client_kx(gnutls_session_t session, uint8_t * data, _gnutls_free_key_datum(&psk_key); return ret; - } -static int -proc_ecdhe_psk_client_kx(gnutls_session_t session, uint8_t * data, - size_t _data_size) +static int proc_ecdhe_psk_client_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size) { int ret; gnutls_psk_server_credentials_t cred; @@ -345,17 +330,16 @@ proc_ecdhe_psk_client_kx(gnutls_session_t session, uint8_t * data, gnutls_datum_t username; ssize_t data_size = _data_size; - cred = (gnutls_psk_server_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_PSK); + cred = (gnutls_psk_server_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_PSK); if (cred == NULL) { gnutls_assert(); return GNUTLS_E_INSUFFICIENT_CREDENTIALS; } - if ((ret = - _gnutls_auth_info_init(session, GNUTLS_CRD_PSK, - sizeof(psk_auth_info_st), 1)) < 0) { + if ((ret = _gnutls_auth_info_init(session, GNUTLS_CRD_PSK, + sizeof(psk_auth_info_st), 1)) < 0) { gnutls_assert(); return ret; } @@ -389,9 +373,8 @@ proc_ecdhe_psk_client_kx(gnutls_session_t session, uint8_t * data, /* should never fail. It will always return a key even if it is * a random one */ - ret = - _gnutls_psk_pwd_find_entry(session, info->username, - info->username_len, &psk_key); + ret = _gnutls_psk_pwd_find_entry(session, info->username, + info->username_len, &psk_key); if (ret < 0) return gnutls_assert_val(ret); @@ -403,20 +386,17 @@ proc_ecdhe_psk_client_kx(gnutls_session_t session, uint8_t * data, return ret; } -static int -proc_dhe_psk_server_kx(gnutls_session_t session, uint8_t * data, - size_t _data_size) +static int proc_dhe_psk_server_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size) { - int ret; ssize_t data_size = _data_size; psk_auth_info_t info; gnutls_datum_t hint; /* set auth_info */ - if ((ret = - _gnutls_auth_info_init(session, GNUTLS_CRD_PSK, - sizeof(psk_auth_info_st), 1)) < 0) { + if ((ret = _gnutls_auth_info_init(session, GNUTLS_CRD_PSK, + sizeof(psk_auth_info_st), 1)) < 0) { gnutls_assert(); return ret; } @@ -451,20 +431,17 @@ proc_dhe_psk_server_kx(gnutls_session_t session, uint8_t * data, return 0; } -static int -proc_ecdhe_psk_server_kx(gnutls_session_t session, uint8_t * data, - size_t _data_size) +static int proc_ecdhe_psk_server_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size) { - int ret; ssize_t data_size = _data_size; psk_auth_info_t info; gnutls_datum_t hint; /* set auth_info */ - if ((ret = - _gnutls_auth_info_init(session, GNUTLS_CRD_PSK, - sizeof(psk_auth_info_st), 1)) < 0) { + if ((ret = _gnutls_auth_info_init(session, GNUTLS_CRD_PSK, + sizeof(psk_auth_info_st), 1)) < 0) { gnutls_assert(); return ret; } @@ -499,4 +476,4 @@ proc_ecdhe_psk_server_kx(gnutls_session_t session, uint8_t * data, return 0; } -#endif /* ENABLE_PSK */ +#endif /* ENABLE_PSK */ diff --git a/lib/auth/ecdhe.c b/lib/auth/ecdhe.c index 350cb27da7..b69323c539 100644 --- a/lib/auth/ecdhe.c +++ b/lib/auth/ecdhe.c @@ -44,12 +44,10 @@ #include static int gen_ecdhe_server_kx(gnutls_session_t, gnutls_buffer_st *); -static int -proc_ecdhe_server_kx(gnutls_session_t session, - uint8_t * data, size_t _data_size); -static int -proc_ecdhe_client_kx(gnutls_session_t session, - uint8_t * data, size_t _data_size); +static int proc_ecdhe_server_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size); +static int proc_ecdhe_client_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size); #if defined(ENABLE_ECDHE) const mod_auth_st ecdhe_ecdsa_auth_struct = { @@ -57,7 +55,7 @@ const mod_auth_st ecdhe_ecdsa_auth_struct = { _gnutls_gen_cert_server_crt, _gnutls_gen_cert_client_crt, gen_ecdhe_server_kx, - _gnutls_gen_ecdh_common_client_kx, /* This is the only difference */ + _gnutls_gen_ecdh_common_client_kx, /* This is the only difference */ _gnutls_gen_cert_client_crt_vrfy, _gnutls_gen_cert_server_cert_req, @@ -74,7 +72,7 @@ const mod_auth_st ecdhe_rsa_auth_struct = { _gnutls_gen_cert_server_crt, _gnutls_gen_cert_client_crt, gen_ecdhe_server_kx, - _gnutls_gen_ecdh_common_client_kx, /* This is the only difference */ + _gnutls_gen_ecdh_common_client_kx, /* This is the only difference */ _gnutls_gen_cert_client_crt_vrfy, _gnutls_gen_cert_server_cert_req, @@ -86,9 +84,8 @@ const mod_auth_st ecdhe_rsa_auth_struct = { _gnutls_proc_cert_cert_req }; -static int calc_ecdh_key(gnutls_session_t session, - gnutls_datum_t * psk_key, - const gnutls_ecc_curve_entry_st * ecurve) +static int calc_ecdh_key(gnutls_session_t session, gnutls_datum_t *psk_key, + const gnutls_ecc_curve_entry_st *ecurve) { gnutls_pk_params_st pub; int ret; @@ -101,9 +98,8 @@ static int calc_ecdh_key(gnutls_session_t session, pub.raw_pub.size = session->key.proto.tls12.ecdh.raw.size; pub.curve = ecurve->id; - ret = - _gnutls_pk_derive(ecurve->pk, &tmp_dh_key, - &session->key.proto.tls12.ecdh.params, &pub); + ret = _gnutls_pk_derive(ecurve->pk, &tmp_dh_key, + &session->key.proto.tls12.ecdh.params, &pub); if (ret < 0) { ret = gnutls_assert_val(ret); goto cleanup; @@ -111,10 +107,10 @@ static int calc_ecdh_key(gnutls_session_t session, if (psk_key == NULL) { memcpy(&session->key.key, &tmp_dh_key, sizeof(gnutls_datum_t)); - tmp_dh_key.data = NULL; /* no longer needed */ + tmp_dh_key.data = NULL; /* no longer needed */ } else { - ret = - _gnutls_set_psk_session_key(session, psk_key, &tmp_dh_key); + ret = _gnutls_set_psk_session_key(session, psk_key, + &tmp_dh_key); _gnutls_free_temp_key_datum(&tmp_dh_key); if (ret < 0) { @@ -125,7 +121,7 @@ static int calc_ecdh_key(gnutls_session_t session, ret = 0; - cleanup: +cleanup: /* no longer needed */ _gnutls_mpi_release(&session->key.proto.tls12.ecdh.x); _gnutls_mpi_release(&session->key.proto.tls12.ecdh.y); @@ -134,10 +130,9 @@ static int calc_ecdh_key(gnutls_session_t session, return ret; } -int _gnutls_proc_ecdh_common_client_kx(gnutls_session_t session, - uint8_t * data, size_t _data_size, - const struct gnutls_group_entry_st - *group, gnutls_datum_t * psk_key) +int _gnutls_proc_ecdh_common_client_kx( + gnutls_session_t session, uint8_t *data, size_t _data_size, + const struct gnutls_group_entry_st *group, gnutls_datum_t *psk_key) { ssize_t data_size = _data_size; int ret, i = 0; @@ -163,12 +158,9 @@ int _gnutls_proc_ecdh_common_client_kx(gnutls_session_t session, DECR_LEN(data_size, point_size); if (ecurve->pk == GNUTLS_PK_EC) { - ret = - _gnutls_ecc_ansi_x962_import(&data[i], point_size, - &session->key.proto.tls12. - ecdh.x, - &session->key.proto.tls12. - ecdh.y); + ret = _gnutls_ecc_ansi_x962_import( + &data[i], point_size, &session->key.proto.tls12.ecdh.x, + &session->key.proto.tls12.ecdh.y); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -176,9 +168,8 @@ int _gnutls_proc_ecdh_common_client_kx(gnutls_session_t session, } else if (ecurve->pk == GNUTLS_PK_ECDH_X25519 || ecurve->pk == GNUTLS_PK_ECDH_X448) { if (ecurve->size != point_size) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); ret = _gnutls_set_datum(&session->key.proto.tls12.ecdh.raw, &data[i], point_size); @@ -190,8 +181,8 @@ int _gnutls_proc_ecdh_common_client_kx(gnutls_session_t session, /* RFC7748 requires to mask the MSB in the final byte * for X25519 (not X448) */ if (ecurve->id == GNUTLS_ECC_CURVE_X25519) { - session->key.proto.tls12.ecdh.raw.data[point_size - - 1] &= 0x7f; + session->key.proto.tls12.ecdh.raw.data[point_size - 1] &= + 0x7f; } } else { return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); @@ -208,7 +199,7 @@ int _gnutls_proc_ecdh_common_client_kx(gnutls_session_t session, gnutls_assert(); goto cleanup; } - cleanup: +cleanup: _gnutls_mpi_release(&session->key.proto.tls12.ecdh.x); _gnutls_mpi_release(&session->key.proto.tls12.ecdh.y); _gnutls_free_datum(&session->key.proto.tls12.ecdh.raw); @@ -216,35 +207,31 @@ int _gnutls_proc_ecdh_common_client_kx(gnutls_session_t session, return ret; } -static int -proc_ecdhe_client_kx(gnutls_session_t session, - uint8_t * data, size_t _data_size) +static int proc_ecdhe_client_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size) { gnutls_certificate_credentials_t cred; - cred = (gnutls_certificate_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_CERTIFICATE); + cred = (gnutls_certificate_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_CERTIFICATE); if (cred == NULL) { gnutls_assert(); return GNUTLS_E_INSUFFICIENT_CREDENTIALS; } - return _gnutls_proc_ecdh_common_client_kx(session, data, - _data_size, + return _gnutls_proc_ecdh_common_client_kx(session, data, _data_size, get_group(session), NULL); } -int -_gnutls_gen_ecdh_common_client_kx(gnutls_session_t session, - gnutls_buffer_st * data) +int _gnutls_gen_ecdh_common_client_kx(gnutls_session_t session, + gnutls_buffer_st *data) { return _gnutls_gen_ecdh_common_client_kx_int(session, data, NULL); } -int -_gnutls_gen_ecdh_common_client_kx_int(gnutls_session_t session, - gnutls_buffer_st * data, - gnutls_datum_t * psk_key) +int _gnutls_gen_ecdh_common_client_kx_int(gnutls_session_t session, + gnutls_buffer_st *data, + gnutls_datum_t *psk_key) { int ret; gnutls_datum_t out; @@ -263,31 +250,27 @@ _gnutls_gen_ecdh_common_client_kx_int(gnutls_session_t session, pk = ecurve->pk; /* generate temporal key */ - ret = - _gnutls_pk_generate_keys(pk, ecurve->id, - &session->key.proto.tls12.ecdh.params, 1); + ret = _gnutls_pk_generate_keys( + pk, ecurve->id, &session->key.proto.tls12.ecdh.params, 1); if (ret < 0) return gnutls_assert_val(ret); if (pk == GNUTLS_PK_EC) { - ret = - _gnutls_ecc_ansi_x962_export(ecurve->id, - session->key.proto.tls12. - ecdh.params. - params[ECC_X] /* x */ , - session->key.proto.tls12. - ecdh.params. - params[ECC_Y] /* y */ , - &out); + ret = _gnutls_ecc_ansi_x962_export( + ecurve->id, + session->key.proto.tls12.ecdh.params + .params[ECC_X] /* x */, + session->key.proto.tls12.ecdh.params + .params[ECC_Y] /* y */, + &out); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _gnutls_buffer_append_data_prefix(data, 8, out.data, - out.size); + ret = _gnutls_buffer_append_data_prefix(data, 8, out.data, + out.size); _gnutls_free_datum(&out); @@ -296,14 +279,10 @@ _gnutls_gen_ecdh_common_client_kx_int(gnutls_session_t session, goto cleanup; } } else if (pk == GNUTLS_PK_ECDH_X25519 || pk == GNUTLS_PK_ECDH_X448) { - ret = - _gnutls_buffer_append_data_prefix(data, 8, - session->key.proto. - tls12.ecdh.params.raw_pub. - data, - session->key.proto. - tls12.ecdh.params.raw_pub. - size); + ret = _gnutls_buffer_append_data_prefix( + data, 8, + session->key.proto.tls12.ecdh.params.raw_pub.data, + session->key.proto.tls12.ecdh.params.raw_pub.size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -318,14 +297,13 @@ _gnutls_gen_ecdh_common_client_kx_int(gnutls_session_t session, } ret = data->length - init_pos; - cleanup: +cleanup: gnutls_pk_params_clear(&session->key.proto.tls12.ecdh.params); return ret; } -static int -proc_ecdhe_server_kx(gnutls_session_t session, - uint8_t * data, size_t _data_size) +static int proc_ecdhe_server_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size) { int ret; gnutls_datum_t vparams; @@ -337,13 +315,12 @@ proc_ecdhe_server_kx(gnutls_session_t session, vparams.data = data; vparams.size = ret; - return _gnutls_proc_dhe_signature(session, data + ret, - _data_size - ret, &vparams); + return _gnutls_proc_dhe_signature(session, data + ret, _data_size - ret, + &vparams); } -int -_gnutls_proc_ecdh_common_server_kx(gnutls_session_t session, - uint8_t * data, size_t _data_size) +int _gnutls_proc_ecdh_common_server_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size) { int i, ret; unsigned point_size; @@ -392,21 +369,17 @@ _gnutls_proc_ecdh_common_server_kx(gnutls_session_t session, DECR_LEN(data_size, point_size); if (ecurve->pk == GNUTLS_PK_EC) { - ret = - _gnutls_ecc_ansi_x962_import(&data[i], point_size, - &session->key.proto.tls12. - ecdh.x, - &session->key.proto.tls12. - ecdh.y); + ret = _gnutls_ecc_ansi_x962_import( + &data[i], point_size, &session->key.proto.tls12.ecdh.x, + &session->key.proto.tls12.ecdh.y); if (ret < 0) return gnutls_assert_val(ret); } else if (ecurve->pk == GNUTLS_PK_ECDH_X25519 || ecurve->pk == GNUTLS_PK_ECDH_X448) { if (ecurve->size != point_size) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); ret = _gnutls_set_datum(&session->key.proto.tls12.ecdh.raw, &data[i], point_size); @@ -416,8 +389,8 @@ _gnutls_proc_ecdh_common_server_kx(gnutls_session_t session, /* RFC7748 requires to mask the MSB in the final byte * for X25519 (not X448) */ if (ecurve->id == GNUTLS_ECC_CURVE_X25519) { - session->key.proto.tls12.ecdh.raw.data[point_size - - 1] &= 0x7f; + session->key.proto.tls12.ecdh.raw.data[point_size - 1] &= + 0x7f; } } else { return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); @@ -431,8 +404,8 @@ _gnutls_proc_ecdh_common_server_kx(gnutls_session_t session, /* If the psk flag is set, then an empty psk_identity_hint will * be inserted */ int _gnutls_ecdh_common_print_server_kx(gnutls_session_t session, - gnutls_buffer_st * data, - const gnutls_group_entry_st * group) + gnutls_buffer_st *data, + const gnutls_group_entry_st *group) { uint8_t p; int ret; @@ -459,28 +432,25 @@ int _gnutls_ecdh_common_print_server_kx(gnutls_session_t session, return gnutls_assert_val(ret); /* generate temporal key */ - ret = - _gnutls_pk_generate_keys(group->pk, group->curve, - &session->key.proto.tls12.ecdh.params, 1); + ret = _gnutls_pk_generate_keys(group->pk, group->curve, + &session->key.proto.tls12.ecdh.params, + 1); if (ret < 0) return gnutls_assert_val(ret); if (group->pk == GNUTLS_PK_EC) { - ret = - _gnutls_ecc_ansi_x962_export(group->curve, - session->key.proto.tls12. - ecdh.params. - params[ECC_X] /* x */ , - session->key.proto.tls12. - ecdh.params. - params[ECC_Y] /* y */ , - &out); + ret = _gnutls_ecc_ansi_x962_export( + group->curve, + session->key.proto.tls12.ecdh.params + .params[ECC_X] /* x */, + session->key.proto.tls12.ecdh.params + .params[ECC_Y] /* y */, + &out); if (ret < 0) return gnutls_assert_val(ret); - ret = - _gnutls_buffer_append_data_prefix(data, 8, out.data, - out.size); + ret = _gnutls_buffer_append_data_prefix(data, 8, out.data, + out.size); _gnutls_free_datum(&out); @@ -489,14 +459,10 @@ int _gnutls_ecdh_common_print_server_kx(gnutls_session_t session, } else if (group->pk == GNUTLS_PK_ECDH_X25519 || group->pk == GNUTLS_PK_ECDH_X448) { - ret = - _gnutls_buffer_append_data_prefix(data, 8, - session->key.proto. - tls12.ecdh.params.raw_pub. - data, - session->key.proto. - tls12.ecdh.params.raw_pub. - size); + ret = _gnutls_buffer_append_data_prefix( + data, 8, + session->key.proto.tls12.ecdh.params.raw_pub.data, + session->key.proto.tls12.ecdh.params.raw_pub.size); if (ret < 0) return gnutls_assert_val(ret); } else { @@ -506,15 +472,14 @@ int _gnutls_ecdh_common_print_server_kx(gnutls_session_t session, return data->length - init_pos; } -static int -gen_ecdhe_server_kx(gnutls_session_t session, gnutls_buffer_st * data) +static int gen_ecdhe_server_kx(gnutls_session_t session, gnutls_buffer_st *data) { int ret = 0; gnutls_certificate_credentials_t cred; unsigned sig_pos; - cred = (gnutls_certificate_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_CERTIFICATE); + cred = (gnutls_certificate_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_CERTIFICATE); if (cred == NULL) { gnutls_assert(); return GNUTLS_E_INSUFFICIENT_CREDENTIALS; @@ -528,9 +493,8 @@ gen_ecdhe_server_kx(gnutls_session_t session, gnutls_buffer_st * data) sig_pos = data->length; - ret = - _gnutls_ecdh_common_print_server_kx(session, data, - get_group(session)); + ret = _gnutls_ecdh_common_print_server_kx(session, data, + get_group(session)); if (ret < 0) { gnutls_assert(); return ret; diff --git a/lib/auth/ecdhe.h b/lib/auth/ecdhe.h index a691360b7f..d0eba71506 100644 --- a/lib/auth/ecdhe.h +++ b/lib/auth/ecdhe.h @@ -22,30 +22,25 @@ */ #ifndef GNUTLS_LIB_AUTH_ECDHE_H -# define GNUTLS_LIB_AUTH_ECDHE_H +#define GNUTLS_LIB_AUTH_ECDHE_H -# include +#include -int -_gnutls_gen_ecdh_common_client_kx(gnutls_session_t session, - gnutls_buffer_st * data); +int _gnutls_gen_ecdh_common_client_kx(gnutls_session_t session, + gnutls_buffer_st *data); -int -_gnutls_gen_ecdh_common_client_kx_int(gnutls_session_t session, - gnutls_buffer_st * data, - gnutls_datum_t * psk_key); +int _gnutls_gen_ecdh_common_client_kx_int(gnutls_session_t session, + gnutls_buffer_st *data, + gnutls_datum_t *psk_key); -int -_gnutls_proc_ecdh_common_client_kx(gnutls_session_t session, - uint8_t * data, size_t _data_size, - const struct gnutls_group_entry_st *group, - gnutls_datum_t * psk_key); +int _gnutls_proc_ecdh_common_client_kx( + gnutls_session_t session, uint8_t *data, size_t _data_size, + const struct gnutls_group_entry_st *group, gnutls_datum_t *psk_key); -int _gnutls_ecdh_common_print_server_kx(gnutls_session_t, - gnutls_buffer_st * data, - const struct gnutls_group_entry_st - *group); -int _gnutls_proc_ecdh_common_server_kx(gnutls_session_t session, uint8_t * data, +int _gnutls_ecdh_common_print_server_kx( + gnutls_session_t, gnutls_buffer_st *data, + const struct gnutls_group_entry_st *group); +int _gnutls_proc_ecdh_common_server_kx(gnutls_session_t session, uint8_t *data, size_t _data_size); -#endif /* GNUTLS_LIB_AUTH_ECDHE_H */ +#endif /* GNUTLS_LIB_AUTH_ECDHE_H */ diff --git a/lib/auth/psk.c b/lib/auth/psk.c index 25eea8785d..17206f69c5 100644 --- a/lib/auth/psk.c +++ b/lib/auth/psk.c @@ -24,43 +24,39 @@ #ifdef ENABLE_PSK -# include "errors.h" -# include "auth.h" -# include "debug.h" -# include "num.h" -# include -# include -# include -# include +#include "errors.h" +#include "auth.h" +#include "debug.h" +#include "num.h" +#include +#include +#include +#include static int _gnutls_proc_psk_client_kx(gnutls_session_t, uint8_t *, size_t); -static int -_gnutls_proc_psk_server_kx(gnutls_session_t session, uint8_t * data, - size_t _data_size); - -const mod_auth_st psk_auth_struct = { - "PSK", - NULL, - NULL, - _gnutls_gen_psk_server_kx, - _gnutls_gen_psk_client_kx, - NULL, - NULL, - - NULL, - NULL, /* certificate */ - _gnutls_proc_psk_server_kx, - _gnutls_proc_psk_client_kx, - NULL, - NULL -}; +static int _gnutls_proc_psk_server_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size); + +const mod_auth_st psk_auth_struct = { "PSK", + NULL, + NULL, + _gnutls_gen_psk_server_kx, + _gnutls_gen_psk_client_kx, + NULL, + NULL, + + NULL, + NULL, /* certificate */ + _gnutls_proc_psk_server_kx, + _gnutls_proc_psk_client_kx, + NULL, + NULL }; /* Set the PSK premaster secret. */ -int -_gnutls_set_psk_session_key(gnutls_session_t session, - gnutls_datum_t * ppsk /* key */ , - gnutls_datum_t * dh_secret) +int _gnutls_set_psk_session_key(gnutls_session_t session, + gnutls_datum_t *ppsk /* key */, + gnutls_datum_t *dh_secret) { gnutls_datum_t pwd_psk = { NULL, 0 }; size_t dh_secret_size; @@ -103,7 +99,7 @@ _gnutls_set_psk_session_key(gnutls_session_t session, ret = 0; - error: +error: _gnutls_free_temp_key_datum(&pwd_psk); return ret; } @@ -118,7 +114,7 @@ _gnutls_set_psk_session_key(gnutls_session_t session, * } ClientKeyExchange; * */ -int _gnutls_gen_psk_client_kx(gnutls_session_t session, gnutls_buffer_st * data) +int _gnutls_gen_psk_client_kx(gnutls_session_t session, gnutls_buffer_st *data) { int ret, free; gnutls_datum_t username = { NULL, 0 }; @@ -126,8 +122,8 @@ int _gnutls_gen_psk_client_kx(gnutls_session_t session, gnutls_buffer_st * data) gnutls_psk_client_credentials_t cred; psk_auth_info_t info; - cred = (gnutls_psk_client_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_PSK); + cred = (gnutls_psk_client_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_PSK); if (cred == NULL) { gnutls_assert(); @@ -150,9 +146,8 @@ int _gnutls_gen_psk_client_kx(gnutls_session_t session, gnutls_buffer_st * data) goto cleanup; } - ret = - _gnutls_buffer_append_data_prefix(data, 16, username.data, - username.size); + ret = _gnutls_buffer_append_data_prefix(data, 16, username.data, + username.size); if (ret < 0) { gnutls_assert(); } @@ -170,7 +165,7 @@ int _gnutls_gen_psk_client_kx(gnutls_session_t session, gnutls_buffer_st * data) goto cleanup; } - cleanup: +cleanup: if (free) { gnutls_free(username.data); _gnutls_free_temp_key_datum(&key); @@ -181,9 +176,8 @@ int _gnutls_gen_psk_client_kx(gnutls_session_t session, gnutls_buffer_st * data) /* just read the username from the client key exchange. */ -static int -_gnutls_proc_psk_client_kx(gnutls_session_t session, uint8_t * data, - size_t _data_size) +static int _gnutls_proc_psk_client_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size) { ssize_t data_size = _data_size; int ret; @@ -191,17 +185,16 @@ _gnutls_proc_psk_client_kx(gnutls_session_t session, uint8_t * data, gnutls_psk_server_credentials_t cred; psk_auth_info_t info; - cred = (gnutls_psk_server_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_PSK); + cred = (gnutls_psk_server_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_PSK); if (cred == NULL) { gnutls_assert(); return GNUTLS_E_INSUFFICIENT_CREDENTIALS; } - if ((ret = - _gnutls_auth_info_init(session, GNUTLS_CRD_PSK, - sizeof(psk_auth_info_st), 1)) < 0) { + if ((ret = _gnutls_auth_info_init(session, GNUTLS_CRD_PSK, + sizeof(psk_auth_info_st), 1)) < 0) { gnutls_assert(); return ret; } @@ -230,9 +223,8 @@ _gnutls_proc_psk_client_kx(gnutls_session_t session, uint8_t * data, if (ret < 0) return gnutls_assert_val(ret); - ret = - _gnutls_psk_pwd_find_entry(session, info->username, - info->username_len, &psk_key); + ret = _gnutls_psk_pwd_find_entry(session, info->username, + info->username_len, &psk_key); if (ret < 0) return gnutls_assert_val(ret); @@ -244,7 +236,7 @@ _gnutls_proc_psk_client_kx(gnutls_session_t session, uint8_t * data, ret = 0; - error: +error: _gnutls_free_key_datum(&psk_key); return ret; @@ -261,13 +253,13 @@ _gnutls_proc_psk_client_kx(gnutls_session_t session, uint8_t * data, * } ServerKeyExchange; * */ -int _gnutls_gen_psk_server_kx(gnutls_session_t session, gnutls_buffer_st * data) +int _gnutls_gen_psk_server_kx(gnutls_session_t session, gnutls_buffer_st *data) { gnutls_psk_server_credentials_t cred; gnutls_datum_t hint; - cred = (gnutls_psk_server_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_PSK); + cred = (gnutls_psk_server_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_PSK); if (cred == NULL) { gnutls_assert(); @@ -280,7 +272,7 @@ int _gnutls_gen_psk_server_kx(gnutls_session_t session, gnutls_buffer_st * data) return GNUTLS_E_INT_RET_0; } - hint.data = (uint8_t *) cred->hint; + hint.data = (uint8_t *)cred->hint; hint.size = strlen(cred->hint); return _gnutls_buffer_append_data_prefix(data, 16, hint.data, @@ -288,9 +280,8 @@ int _gnutls_gen_psk_server_kx(gnutls_session_t session, gnutls_buffer_st * data) } /* Read the hint from the server key exchange */ -static int -_gnutls_proc_psk_server_kx(gnutls_session_t session, uint8_t * data, - size_t _data_size) +static int _gnutls_proc_psk_server_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size) { int ret; ssize_t data_size = _data_size; @@ -298,15 +289,13 @@ _gnutls_proc_psk_server_kx(gnutls_session_t session, uint8_t * data, psk_auth_info_t info; gnutls_datum_t hint; - cred = - (gnutls_psk_client_credentials_t) _gnutls_get_cred(session, - GNUTLS_CRD_PSK); + cred = (gnutls_psk_client_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_PSK); if (cred == NULL) return gnutls_assert_val(GNUTLS_E_INSUFFICIENT_CREDENTIALS); - ret = - _gnutls_auth_info_init(session, GNUTLS_CRD_PSK, - sizeof(psk_auth_info_st), 1); + ret = _gnutls_auth_info_init(session, GNUTLS_CRD_PSK, + sizeof(psk_auth_info_st), 1); if (ret < 0) return gnutls_assert_val(ret); @@ -327,4 +316,4 @@ _gnutls_proc_psk_server_kx(gnutls_session_t session, uint8_t * data, return ret; } -#endif /* ENABLE_PSK */ +#endif /* ENABLE_PSK */ diff --git a/lib/auth/psk.h b/lib/auth/psk.h index d5a55f58bc..06d7913c85 100644 --- a/lib/auth/psk.h +++ b/lib/auth/psk.h @@ -21,15 +21,16 @@ */ #ifndef GNUTLS_LIB_AUTH_PSK_H -# define GNUTLS_LIB_AUTH_PSK_H +#define GNUTLS_LIB_AUTH_PSK_H -# include -# include +#include +#include -# define _gnutls_copy_psk_username(info, datum) \ - _gnutls_copy_psk_string(&(info)->username, &(info)->username_len, (datum)) +#define _gnutls_copy_psk_username(info, datum) \ + _gnutls_copy_psk_string(&(info)->username, &(info)->username_len, \ + (datum)) -# define _gnutls_copy_psk_hint(info, datum) \ +#define _gnutls_copy_psk_hint(info, datum) \ _gnutls_copy_psk_string(&(info)->hint, &(info)->hint_len, (datum)) typedef struct gnutls_psk_client_credentials_st { @@ -74,9 +75,8 @@ typedef struct psk_auth_info_st { typedef struct psk_auth_info_st psk_auth_info_st; -inline static int -_gnutls_copy_psk_string(char **dest, uint16_t * dest_len, - const gnutls_datum_t str) +inline static int _gnutls_copy_psk_string(char **dest, uint16_t *dest_len, + const gnutls_datum_t str) { char *_tmp; @@ -95,17 +95,15 @@ _gnutls_copy_psk_string(char **dest, uint16_t * dest_len, return GNUTLS_E_SUCCESS; } -# ifdef ENABLE_PSK +#ifdef ENABLE_PSK -int -_gnutls_set_psk_session_key(gnutls_session_t session, gnutls_datum_t * key, - gnutls_datum_t * psk2); -int _gnutls_gen_psk_server_kx(gnutls_session_t session, - gnutls_buffer_st * data); +int _gnutls_set_psk_session_key(gnutls_session_t session, gnutls_datum_t *key, + gnutls_datum_t *psk2); +int _gnutls_gen_psk_server_kx(gnutls_session_t session, gnutls_buffer_st *data); int _gnutls_gen_psk_client_kx(gnutls_session_t, gnutls_buffer_st *); -# else -# define _gnutls_set_psk_session_key(x,y,z) GNUTLS_E_UNIMPLEMENTED_FEATURE -# endif /* ENABLE_PSK */ +#else +#define _gnutls_set_psk_session_key(x, y, z) GNUTLS_E_UNIMPLEMENTED_FEATURE +#endif /* ENABLE_PSK */ -#endif /* GNUTLS_LIB_AUTH_PSK_H */ +#endif /* GNUTLS_LIB_AUTH_PSK_H */ diff --git a/lib/auth/psk_passwd.c b/lib/auth/psk_passwd.c index 35cfff311d..70f59c7738 100644 --- a/lib/auth/psk_passwd.c +++ b/lib/auth/psk_passwd.c @@ -39,7 +39,7 @@ /* this function parses passwd.psk file. Format is: * string(username):hex(passwd) */ -static int pwd_put_values(gnutls_datum_t * psk, char *str) +static int pwd_put_values(gnutls_datum_t *psk, char *str) { char *p; int len, ret; @@ -74,8 +74,8 @@ static int pwd_put_values(gnutls_datum_t * psk, char *str) return 0; } -static bool username_matches(const gnutls_datum_t * username, - const char *line, size_t line_size) +static bool username_matches(const gnutls_datum_t *username, const char *line, + size_t line_size) { int retval; unsigned i; @@ -94,8 +94,7 @@ static bool username_matches(const gnutls_datum_t * username, /* move to first ':' */ i = 0; - while ((i < line_size) && (line[i] != '\0') - && (line[i] != ':')) { + while ((i < line_size) && (line[i] != '\0') && (line[i] != ':')) { i++; } @@ -108,17 +107,15 @@ static bool username_matches(const gnutls_datum_t * username, return gnutls_assert_val(0); if (hex_username.size == username->size) - retval = - memcmp(username->data, hex_username.data, - username->size); + retval = memcmp(username->data, hex_username.data, + username->size); else retval = -1; _gnutls_free_datum(&hex_username); } else { - retval = - strncmp((const char *)username->data, line, - MAX(i, username->size)); + retval = strncmp((const char *)username->data, line, + MAX(i, username->size)); } return (retval == 0); @@ -127,7 +124,7 @@ static bool username_matches(const gnutls_datum_t * username, /* Randomizes the given password entry. It actually sets a random password. * Returns 0 on success. */ -static int _randomize_psk(gnutls_datum_t * psk) +static int _randomize_psk(gnutls_datum_t *psk) { int ret; @@ -151,23 +148,19 @@ static int _randomize_psk(gnutls_datum_t * psk) /* Returns the PSK key of the given user. * If the user doesn't exist a random password is returned instead. */ -int -_gnutls_psk_pwd_find_entry(gnutls_session_t session, - const char *username, uint16_t username_len, - gnutls_datum_t * psk) +int _gnutls_psk_pwd_find_entry(gnutls_session_t session, const char *username, + uint16_t username_len, gnutls_datum_t *psk) { gnutls_psk_server_credentials_t cred; FILE *fp; char *line = NULL; size_t line_size = 0; int ret; - gnutls_datum_t username_datum = { - .data = (unsigned char *)username, - .size = username_len - }; + gnutls_datum_t username_datum = { .data = (unsigned char *)username, + .size = username_len }; - cred = (gnutls_psk_server_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_PSK); + cred = (gnutls_psk_server_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_PSK); if (cred == NULL) { gnutls_assert(); return GNUTLS_E_INSUFFICIENT_CREDENTIALS; @@ -179,7 +172,7 @@ _gnutls_psk_pwd_find_entry(gnutls_session_t session, if (cred->pwd_callback != NULL) { ret = cred->pwd_callback(session, &username_datum, psk); - if (ret == 1) { /* the user does not exist */ + if (ret == 1) { /* the user does not exist */ ret = _randomize_psk(psk); if (ret < 0) { gnutls_assert(); @@ -232,7 +225,7 @@ _gnutls_psk_pwd_find_entry(gnutls_session_t session, } ret = 0; - cleanup: +cleanup: if (fp != NULL) fclose(fp); @@ -240,7 +233,6 @@ _gnutls_psk_pwd_find_entry(gnutls_session_t session, free(line); return ret; - } /* returns the username and they key for the PSK session. @@ -248,7 +240,7 @@ _gnutls_psk_pwd_find_entry(gnutls_session_t session, */ int _gnutls_find_psk_key(gnutls_session_t session, gnutls_psk_client_credentials_t cred, - gnutls_datum_t * username, gnutls_datum_t * key, + gnutls_datum_t *username, gnutls_datum_t *key, int *free) { int ret; diff --git a/lib/auth/psk_passwd.h b/lib/auth/psk_passwd.h index a1a1d8d83b..18ac72b34b 100644 --- a/lib/auth/psk_passwd.h +++ b/lib/auth/psk_passwd.h @@ -21,16 +21,15 @@ */ #ifndef GNUTLS_LIB_AUTH_PSK_PASSWD_H -# define GNUTLS_LIB_AUTH_PSK_PASSWD_H +#define GNUTLS_LIB_AUTH_PSK_PASSWD_H /* this is locally allocated. It should be freed using the provided function */ -int _gnutls_psk_pwd_find_entry(gnutls_session_t, - const char *username, uint16_t username_len, - gnutls_datum_t * key); +int _gnutls_psk_pwd_find_entry(gnutls_session_t, const char *username, + uint16_t username_len, gnutls_datum_t *key); int _gnutls_find_psk_key(gnutls_session_t session, gnutls_psk_client_credentials_t cred, - gnutls_datum_t * username, gnutls_datum_t * key, + gnutls_datum_t *username, gnutls_datum_t *key, int *free); -#endif /* GNUTLS_LIB_AUTH_PSK_PASSWD_H */ +#endif /* GNUTLS_LIB_AUTH_PSK_PASSWD_H */ diff --git a/lib/auth/rsa.c b/lib/auth/rsa.c index 492ec119fa..a11c33fd86 100644 --- a/lib/auth/rsa.c +++ b/lib/auth/rsa.c @@ -49,33 +49,34 @@ const mod_auth_st rsa_auth_struct = { "RSA", _gnutls_gen_cert_server_crt, _gnutls_gen_cert_client_crt, - NULL, /* gen server kx */ + NULL, /* gen server kx */ _gnutls_gen_rsa_client_kx, - _gnutls_gen_cert_client_crt_vrfy, /* gen client cert vrfy */ - _gnutls_gen_cert_server_cert_req, /* server cert request */ + _gnutls_gen_cert_client_crt_vrfy, /* gen client cert vrfy */ + _gnutls_gen_cert_server_cert_req, /* server cert request */ _gnutls_proc_crt, _gnutls_proc_crt, - NULL, /* proc server kx */ - proc_rsa_client_kx, /* proc client kx */ - _gnutls_proc_cert_client_crt_vrfy, /* proc client cert vrfy */ - _gnutls_proc_cert_cert_req /* proc server cert request */ + NULL, /* proc server kx */ + proc_rsa_client_kx, /* proc client kx */ + _gnutls_proc_cert_client_crt_vrfy, /* proc client cert vrfy */ + _gnutls_proc_cert_cert_req /* proc server cert request */ }; -static -int check_key_usage_for_enc(gnutls_session_t session, unsigned key_usage) +static int check_key_usage_for_enc(gnutls_session_t session, unsigned key_usage) { if (key_usage != 0) { - if (!(key_usage & GNUTLS_KEY_KEY_ENCIPHERMENT) - && !(key_usage & GNUTLS_KEY_KEY_AGREEMENT)) { + if (!(key_usage & GNUTLS_KEY_KEY_ENCIPHERMENT) && + !(key_usage & GNUTLS_KEY_KEY_AGREEMENT)) { gnutls_assert(); if (session->internals.allow_key_usage_violation == 0) { - _gnutls_audit_log(session, - "Peer's certificate does not allow encryption. Key usage violation detected.\n"); + _gnutls_audit_log( + session, + "Peer's certificate does not allow encryption. Key usage violation detected.\n"); return GNUTLS_E_KEY_USAGE_VIOLATION; } else { - _gnutls_audit_log(session, - "Peer's certificate does not allow encryption. Key usage violation detected (ignored).\n"); + _gnutls_audit_log( + session, + "Peer's certificate does not allow encryption. Key usage violation detected (ignored).\n"); } } } @@ -96,9 +97,8 @@ int check_key_usage_for_enc(gnutls_session_t session, unsigned key_usage) * checks need to be build in order to retrieve the correct * certificate type. */ -int -_gnutls_get_public_rsa_params(gnutls_session_t session, - gnutls_pk_params_st * params) +int _gnutls_get_public_rsa_params(gnutls_session_t session, + gnutls_pk_params_st *params) { int ret; cert_auth_info_t info; @@ -145,14 +145,14 @@ _gnutls_get_public_rsa_params(gnutls_session_t session, gnutls_pcert_deinit(&peer_cert); return 0; - cleanup2: +cleanup2: gnutls_pcert_deinit(&peer_cert); return ret; } -static int -proc_rsa_client_kx(gnutls_session_t session, uint8_t * data, size_t _data_size) +static int proc_rsa_client_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size) { gnutls_datum_t ciphertext; int ret, dsize; @@ -201,8 +201,8 @@ proc_rsa_client_kx(gnutls_session_t session, uint8_t * data, size_t _data_size) return ret; } - gnutls_privkey_decrypt_data2(session->internals.selected_key, - 0, &ciphertext, session->key.key.data, + gnutls_privkey_decrypt_data2(session->internals.selected_key, 0, + &ciphertext, session->key.key.data, session->key.key.size); /* After this point, any conditional on failure that cause differences * in execution may create a timing or cache access pattern side @@ -230,10 +230,10 @@ proc_rsa_client_kx(gnutls_session_t session, uint8_t * data, size_t _data_size) /* return RSA(random) using the peers public key */ -int _gnutls_gen_rsa_client_kx(gnutls_session_t session, gnutls_buffer_st * data) +int _gnutls_gen_rsa_client_kx(gnutls_session_t session, gnutls_buffer_st *data) { cert_auth_info_t auth = session->key.auth_info; - gnutls_datum_t sdata; /* data to send */ + gnutls_datum_t sdata; /* data to send */ gnutls_pk_params_st params; int ret; @@ -262,14 +262,14 @@ int _gnutls_gen_rsa_client_kx(gnutls_session_t session, gnutls_buffer_st * data) if (session->internals.rsa_pms_version[0] == 0) { session->key.key.data[0] = - _gnutls_get_adv_version_major(session); + _gnutls_get_adv_version_major(session); session->key.key.data[1] = - _gnutls_get_adv_version_minor(session); - } else { /* use the version provided */ + _gnutls_get_adv_version_minor(session); + } else { /* use the version provided */ session->key.key.data[0] = - session->internals.rsa_pms_version[0]; + session->internals.rsa_pms_version[0]; session->key.key.data[1] = - session->internals.rsa_pms_version[1]; + session->internals.rsa_pms_version[1]; } /* move RSA parameters to key (session). @@ -279,9 +279,8 @@ int _gnutls_gen_rsa_client_kx(gnutls_session_t session, gnutls_buffer_st * data) return ret; } - ret = - _gnutls_pk_encrypt(GNUTLS_PK_RSA, &sdata, &session->key.key, - ¶ms); + ret = _gnutls_pk_encrypt(GNUTLS_PK_RSA, &sdata, &session->key.key, + ¶ms); gnutls_pk_params_release(¶ms); @@ -297,10 +296,9 @@ int _gnutls_gen_rsa_client_kx(gnutls_session_t session, gnutls_buffer_st * data) return ret; } else #endif - { /* TLS 1.x */ - ret = - _gnutls_buffer_append_data_prefix(data, 16, sdata.data, - sdata.size); + { /* TLS 1.x */ + ret = _gnutls_buffer_append_data_prefix(data, 16, sdata.data, + sdata.size); _gnutls_free_datum(&sdata); return ret; diff --git a/lib/auth/rsa_common.h b/lib/auth/rsa_common.h index e56b095d7e..8a68bc0bfa 100644 --- a/lib/auth/rsa_common.h +++ b/lib/auth/rsa_common.h @@ -28,12 +28,11 @@ */ #ifndef GNUTLS_LIB_AUTH_RSA_COMMON_H -# define GNUTLS_LIB_AUTH_RSA_COMMON_H +#define GNUTLS_LIB_AUTH_RSA_COMMON_H -# include +#include -int -_gnutls_get_public_rsa_params(gnutls_session_t session, - gnutls_pk_params_st * params); +int _gnutls_get_public_rsa_params(gnutls_session_t session, + gnutls_pk_params_st *params); -#endif /* GNUTLS_LIB_AUTH_RSA_COMMON_H */ +#endif /* GNUTLS_LIB_AUTH_RSA_COMMON_H */ diff --git a/lib/auth/rsa_psk.c b/lib/auth/rsa_psk.c index c1e9ac4dab..e9e99761cf 100644 --- a/lib/auth/rsa_psk.c +++ b/lib/auth/rsa_psk.c @@ -29,52 +29,51 @@ #ifdef ENABLE_PSK -# include "auth.h" -# include "dh.h" -# include "errors.h" -# include "mpi.h" -# include "num.h" -# include "gnutls_int.h" -# include "pk.h" -# include "random.h" -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include "auth.h" +#include "dh.h" +#include "errors.h" +#include "mpi.h" +#include "num.h" +#include "gnutls_int.h" +#include "pk.h" +#include "random.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include static int _gnutls_gen_rsa_psk_client_kx(gnutls_session_t session, - gnutls_buffer_st * data); + gnutls_buffer_st *data); static int _gnutls_proc_rsa_psk_client_kx(gnutls_session_t, uint8_t *, size_t); -static int -_gnutls_proc_rsa_psk_server_kx(gnutls_session_t session, uint8_t * data, - size_t _data_size); +static int _gnutls_proc_rsa_psk_server_kx(gnutls_session_t session, + uint8_t *data, size_t _data_size); const mod_auth_st rsa_psk_auth_struct = { "RSA PSK", _gnutls_gen_cert_server_crt, - NULL, /* generate_client_certificate */ + NULL, /* generate_client_certificate */ _gnutls_gen_psk_server_kx, _gnutls_gen_rsa_psk_client_kx, - NULL, /* generate_client_cert_vrfy */ - NULL, /* generate_server_certificate_request */ + NULL, /* generate_client_cert_vrfy */ + NULL, /* generate_server_certificate_request */ _gnutls_proc_crt, - NULL, /* process_client_certificate */ + NULL, /* process_client_certificate */ _gnutls_proc_rsa_psk_server_kx, _gnutls_proc_rsa_psk_client_kx, - NULL, /* process_client_cert_vrfy */ - NULL /* process_server_certificate_reuqest */ + NULL, /* process_client_cert_vrfy */ + NULL /* process_server_certificate_reuqest */ }; /* Set the PSK premaster secret. */ -static int -set_rsa_psk_session_key(gnutls_session_t session, - gnutls_datum_t * ppsk, gnutls_datum_t * rsa_secret) +static int set_rsa_psk_session_key(gnutls_session_t session, + gnutls_datum_t *ppsk, + gnutls_datum_t *rsa_secret) { unsigned char *p; size_t rsa_secret_size; @@ -107,7 +106,7 @@ set_rsa_psk_session_key(gnutls_session_t session, ret = 0; - error: +error: return ret; } @@ -121,11 +120,11 @@ set_rsa_psk_session_key(gnutls_session_t session, * } exchange_keys; * } ClientKeyExchange; */ -static int -_gnutls_gen_rsa_psk_client_kx(gnutls_session_t session, gnutls_buffer_st * data) +static int _gnutls_gen_rsa_psk_client_kx(gnutls_session_t session, + gnutls_buffer_st *data) { cert_auth_info_t auth = session->key.auth_info; - gnutls_datum_t sdata; /* data to send */ + gnutls_datum_t sdata; /* data to send */ gnutls_pk_params_st params; gnutls_psk_client_credentials_t cred; gnutls_datum_t username, key; @@ -160,14 +159,14 @@ _gnutls_gen_rsa_psk_client_kx(gnutls_session_t session, gnutls_buffer_st * data) /* Set version */ if (session->internals.rsa_pms_version[0] == 0) { premaster_secret.data[0] = - _gnutls_get_adv_version_major(session); + _gnutls_get_adv_version_major(session); premaster_secret.data[1] = - _gnutls_get_adv_version_minor(session); - } else { /* use the version provided */ + _gnutls_get_adv_version_minor(session); + } else { /* use the version provided */ premaster_secret.data[0] = - session->internals.rsa_pms_version[0]; + session->internals.rsa_pms_version[0]; premaster_secret.data[1] = - session->internals.rsa_pms_version[1]; + session->internals.rsa_pms_version[1]; } /* move RSA parameters to key (session). @@ -178,17 +177,16 @@ _gnutls_gen_rsa_psk_client_kx(gnutls_session_t session, gnutls_buffer_st * data) } /* Encrypt premaster secret */ - if ((ret = - _gnutls_pk_encrypt(GNUTLS_PK_RSA, &sdata, &premaster_secret, - ¶ms)) < 0) { + if ((ret = _gnutls_pk_encrypt(GNUTLS_PK_RSA, &sdata, &premaster_secret, + ¶ms)) < 0) { gnutls_assert(); return ret; } gnutls_pk_params_release(¶ms); - cred = (gnutls_psk_client_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_PSK); + cred = (gnutls_psk_client_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_PSK); if (cred == NULL) { gnutls_assert(); @@ -218,16 +216,15 @@ _gnutls_gen_rsa_psk_client_kx(gnutls_session_t session, gnutls_buffer_st * data) /* Write psk_identity and EncryptedPreMasterSecret into data stream */ - ret = - _gnutls_buffer_append_data_prefix(data, 16, - username.data, username.size); + ret = _gnutls_buffer_append_data_prefix(data, 16, username.data, + username.size); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _gnutls_buffer_append_data_prefix(data, 16, sdata.data, sdata.size); + ret = _gnutls_buffer_append_data_prefix(data, 16, sdata.data, + sdata.size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -235,7 +232,7 @@ _gnutls_gen_rsa_psk_client_kx(gnutls_session_t session, gnutls_buffer_st * data) ret = data->length - init_pos; - cleanup: +cleanup: _gnutls_free_datum(&sdata); _gnutls_free_temp_key_datum(&premaster_secret); if (free) { @@ -249,9 +246,8 @@ _gnutls_gen_rsa_psk_client_kx(gnutls_session_t session, gnutls_buffer_st * data) /* Process the client key exchange message */ -static int -_gnutls_proc_rsa_psk_client_kx(gnutls_session_t session, uint8_t * data, - size_t _data_size) +static int _gnutls_proc_rsa_psk_client_kx(gnutls_session_t session, + uint8_t *data, size_t _data_size) { gnutls_datum_t username; psk_auth_info_t info; @@ -264,8 +260,8 @@ _gnutls_proc_rsa_psk_client_kx(gnutls_session_t session, uint8_t * data, gnutls_psk_server_credentials_t cred; gnutls_datum_t premaster_secret = { NULL, 0 }; - cred = (gnutls_psk_server_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_PSK); + cred = (gnutls_psk_server_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_PSK); if (cred == NULL) { gnutls_assert(); @@ -279,7 +275,7 @@ _gnutls_proc_rsa_psk_client_kx(gnutls_session_t session, uint8_t * data, return ret; } - /*** 1. Extract user psk_identity ***/ + /*** 1. Extract user psk_identity ***/ DECR_LEN(data_size, 2); username.size = _gnutls_read_uint16(&data[0]); @@ -308,7 +304,7 @@ _gnutls_proc_rsa_psk_client_kx(gnutls_session_t session, uint8_t * data, /* Adjust data so it points to EncryptedPreMasterSecret */ data += username.size + 2; - /*** 2. Decrypt and extract EncryptedPreMasterSecret ***/ + /*** 2. Decrypt and extract EncryptedPreMasterSecret ***/ DECR_LEN(data_size, 2); ciphertext.data = &data[2]; @@ -320,17 +316,16 @@ _gnutls_proc_rsa_psk_client_kx(gnutls_session_t session, uint8_t * data, } ciphertext.size = dsize; - ret = - gnutls_privkey_decrypt_data(session->internals.selected_key, 0, - &ciphertext, &plaintext); + ret = gnutls_privkey_decrypt_data(session->internals.selected_key, 0, + &ciphertext, &plaintext); if (ret < 0 || plaintext.size != GNUTLS_MASTER_SIZE) { /* In case decryption fails then don't inform * the peer. Just use a random key. (in order to avoid * attack against pkcs-1 formatting). */ gnutls_assert(); - _gnutls_debug_log - ("auth_rsa_psk: Possible PKCS #1 format attack\n"); + _gnutls_debug_log( + "auth_rsa_psk: Possible PKCS #1 format attack\n"); if (ret >= 0) { gnutls_free(plaintext.data); } @@ -339,10 +334,11 @@ _gnutls_proc_rsa_psk_client_kx(gnutls_session_t session, uint8_t * data, /* If the secret was properly formatted, then * check the version number. */ - if (_gnutls_get_adv_version_major(session) != plaintext.data[0] - || (session->internals.allow_wrong_pms == 0 - && _gnutls_get_adv_version_minor(session) != - plaintext.data[1])) { + if (_gnutls_get_adv_version_major(session) != + plaintext.data[0] || + (session->internals.allow_wrong_pms == 0 && + _gnutls_get_adv_version_minor(session) != + plaintext.data[1])) { /* No error is returned here, if the version number check * fails. We proceed normally. * That is to defend against the attack described in the paper @@ -350,8 +346,8 @@ _gnutls_proc_rsa_psk_client_kx(gnutls_session_t session, uint8_t * data, * Ondej Pokorny and Tomas Rosa. */ gnutls_assert(); - _gnutls_debug_log - ("auth_rsa: Possible PKCS #1 version check format attack\n"); + _gnutls_debug_log( + "auth_rsa: Possible PKCS #1 version check format attack\n"); } } @@ -385,9 +381,8 @@ _gnutls_proc_rsa_psk_client_kx(gnutls_session_t session, uint8_t * data, /* find the key of this username */ - ret = - _gnutls_psk_pwd_find_entry(session, info->username, - strlen(info->username), &pwd_psk); + ret = _gnutls_psk_pwd_find_entry(session, info->username, + strlen(info->username), &pwd_psk); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -400,16 +395,15 @@ _gnutls_proc_rsa_psk_client_kx(gnutls_session_t session, uint8_t * data, } ret = 0; - cleanup: +cleanup: _gnutls_free_key_datum(&pwd_psk); _gnutls_free_temp_key_datum(&premaster_secret); return ret; } -static int -_gnutls_proc_rsa_psk_server_kx(gnutls_session_t session, uint8_t * data, - size_t _data_size) +static int _gnutls_proc_rsa_psk_server_kx(gnutls_session_t session, + uint8_t *data, size_t _data_size) { /* In RSA-PSK the key is calculated elsewhere. * Moreover, since we only keep a single auth info structure, we cannot @@ -421,4 +415,4 @@ _gnutls_proc_rsa_psk_server_kx(gnutls_session_t session, uint8_t * data, return 0; } -#endif /* ENABLE_PSK */ +#endif /* ENABLE_PSK */ diff --git a/lib/auth/srp_kx.c b/lib/auth/srp_kx.c index ed27b47caf..8658c81eb5 100644 --- a/lib/auth/srp_kx.c +++ b/lib/auth/srp_kx.c @@ -24,41 +24,39 @@ #ifdef ENABLE_SRP -# include "errors.h" -# include -# include "auth.h" -# include "srp.h" -# include "num.h" -# include -# include -# include -# include - -const mod_auth_st srp_auth_struct = { - "SRP", - NULL, - NULL, - _gnutls_gen_srp_server_kx, - _gnutls_gen_srp_client_kx, - NULL, - NULL, - - NULL, - NULL, /* certificate */ - _gnutls_proc_srp_server_kx, - _gnutls_proc_srp_client_kx, - NULL, - NULL -}; - -# define _b session->key.proto.tls12.srp.b -# define B session->key.proto.tls12.srp.B -# define _a session->key.proto.tls12.srp.a -# define A session->key.proto.tls12.srp.A -# define N session->key.proto.tls12.srp.srp_p -# define G session->key.proto.tls12.srp.srp_g -# define V session->key.proto.tls12.srp.x -# define S session->key.proto.tls12.srp.srp_key +#include "errors.h" +#include +#include "auth.h" +#include "srp.h" +#include "num.h" +#include +#include +#include +#include + +const mod_auth_st srp_auth_struct = { "SRP", + NULL, + NULL, + _gnutls_gen_srp_server_kx, + _gnutls_gen_srp_client_kx, + NULL, + NULL, + + NULL, + NULL, /* certificate */ + _gnutls_proc_srp_server_kx, + _gnutls_proc_srp_client_kx, + NULL, + NULL }; + +#define _b session->key.proto.tls12.srp.b +#define B session->key.proto.tls12.srp.B +#define _a session->key.proto.tls12.srp.a +#define A session->key.proto.tls12.srp.A +#define N session->key.proto.tls12.srp.srp_p +#define G session->key.proto.tls12.srp.srp_g +#define V session->key.proto.tls12.srp.x +#define S session->key.proto.tls12.srp.srp_key /* Checks if a%n==0,+1,-1%n which is a fatal srp error. * Returns a proper error code in that case, and 0 when @@ -112,7 +110,7 @@ inline static int check_param_mod_n(bigint_t a, bigint_t n, int is_a) /* Send the first key exchange message ( g, n, s) and append the verifier algorithm number * Data is allocated by the caller, and should have data_size size. */ -int _gnutls_gen_srp_server_kx(gnutls_session_t session, gnutls_buffer_st * data) +int _gnutls_gen_srp_server_kx(gnutls_session_t session, gnutls_buffer_st *data) { int ret; SRP_PWD_ENTRY *pwd_entry; @@ -123,15 +121,15 @@ int _gnutls_gen_srp_server_kx(gnutls_session_t session, gnutls_buffer_st * data) unsigned init_pos; ret = _gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_SRP, &epriv); - if (ret < 0) { /* peer didn't send a username */ + if (ret < 0) { /* peer didn't send a username */ gnutls_assert(); return GNUTLS_E_UNKNOWN_SRP_USERNAME; } priv = epriv; - if ((ret = - _gnutls_auth_info_init(session, GNUTLS_CRD_SRP, - sizeof(srp_server_auth_info_st), 1)) < 0) { + if ((ret = _gnutls_auth_info_init(session, GNUTLS_CRD_SRP, + sizeof(srp_server_auth_info_st), 1)) < + 0) { gnutls_assert(); return ret; } @@ -190,9 +188,8 @@ int _gnutls_gen_srp_server_kx(gnutls_session_t session, gnutls_buffer_st * data) /* copy N (mod n) */ - ret = - _gnutls_buffer_append_data_prefix(data, 16, pwd_entry->n.data, - pwd_entry->n.size); + ret = _gnutls_buffer_append_data_prefix(data, 16, pwd_entry->n.data, + pwd_entry->n.size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -200,9 +197,8 @@ int _gnutls_gen_srp_server_kx(gnutls_session_t session, gnutls_buffer_st * data) /* copy G (generator) to data */ - ret = - _gnutls_buffer_append_data_prefix(data, 16, pwd_entry->g.data, - pwd_entry->g.size); + ret = _gnutls_buffer_append_data_prefix(data, 16, pwd_entry->g.data, + pwd_entry->g.size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -210,10 +206,8 @@ int _gnutls_gen_srp_server_kx(gnutls_session_t session, gnutls_buffer_st * data) /* copy the salt */ - ret = - _gnutls_buffer_append_data_prefix(data, 8, - pwd_entry->salt.data, - pwd_entry->salt.size); + ret = _gnutls_buffer_append_data_prefix(data, 8, pwd_entry->salt.data, + pwd_entry->salt.size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -232,13 +226,13 @@ int _gnutls_gen_srp_server_kx(gnutls_session_t session, gnutls_buffer_st * data) ret = data->length - init_pos; - cleanup: +cleanup: _gnutls_srp_entry_free(pwd_entry); return ret; } /* return A = g^a % N */ -int _gnutls_gen_srp_client_kx(gnutls_session_t session, gnutls_buffer_st * data) +int _gnutls_gen_srp_client_kx(gnutls_session_t session, gnutls_buffer_st *data) { int ret; char *username, *password; @@ -247,14 +241,14 @@ int _gnutls_gen_srp_client_kx(gnutls_session_t session, gnutls_buffer_st * data) srp_ext_st *priv; ret = _gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_SRP, &epriv); - if (ret < 0) { /* peer didn't send a username */ + if (ret < 0) { /* peer didn't send a username */ gnutls_assert(); return GNUTLS_E_UNKNOWN_SRP_USERNAME; } priv = epriv; - cred = (gnutls_srp_client_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_SRP); + cred = (gnutls_srp_client_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_SRP); if (cred == NULL) { gnutls_assert(); @@ -265,7 +259,6 @@ int _gnutls_gen_srp_client_kx(gnutls_session_t session, gnutls_buffer_st * data) username = cred->username; password = cred->password; } else { - username = priv->username; password = priv->password; } @@ -315,9 +308,8 @@ int _gnutls_gen_srp_client_kx(gnutls_session_t session, gnutls_buffer_st * data) zrelease_temp_mpi_key(&session->key.proto.tls12.srp.u); zrelease_temp_mpi_key(&B); - ret = - _gnutls_mpi_dprint(session->key.proto.tls12.srp.srp_key, - &session->key.key); + ret = _gnutls_mpi_dprint(session->key.proto.tls12.srp.srp_key, + &session->key.key); zrelease_temp_mpi_key(&S); if (ret < 0) { @@ -337,9 +329,8 @@ int _gnutls_gen_srp_client_kx(gnutls_session_t session, gnutls_buffer_st * data) } /* just read A and put it to session */ -int -_gnutls_proc_srp_client_kx(gnutls_session_t session, uint8_t * data, - size_t _data_size) +int _gnutls_proc_srp_client_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size) { ssize_t _n_A; ssize_t data_size = _data_size; @@ -391,9 +382,8 @@ _gnutls_proc_srp_client_kx(gnutls_session_t session, uint8_t * data, zrelease_temp_mpi_key(&session->key.proto.tls12.srp.u); zrelease_temp_mpi_key(&B); - ret = - _gnutls_mpi_dprint(session->key.proto.tls12.srp.srp_key, - &session->key.key); + ret = _gnutls_mpi_dprint(session->key.proto.tls12.srp.srp_key, + &session->key.key); zrelease_temp_mpi_key(&S); if (ret < 0) { @@ -404,28 +394,23 @@ _gnutls_proc_srp_client_kx(gnutls_session_t session, uint8_t * data, return 0; } -#endif /* ENABLE_SRP */ +#endif /* ENABLE_SRP */ /* Static parameters according to draft-ietf-tls-srp-07 * Note that if more parameters are added check_g_n() * and _gnutls_srp_entry_free() should be changed. */ static const unsigned char srp_params_1024[] = { - 0xEE, 0xAF, 0x0A, 0xB9, 0xAD, 0xB3, 0x8D, 0xD6, - 0x9C, 0x33, 0xF8, 0x0A, 0xFA, 0x8F, 0xC5, 0xE8, - 0x60, 0x72, 0x61, 0x87, 0x75, 0xFF, 0x3C, 0x0B, - 0x9E, 0xA2, 0x31, 0x4C, 0x9C, 0x25, 0x65, 0x76, - 0xD6, 0x74, 0xDF, 0x74, 0x96, 0xEA, 0x81, 0xD3, - 0x38, 0x3B, 0x48, 0x13, 0xD6, 0x92, 0xC6, 0xE0, - 0xE0, 0xD5, 0xD8, 0xE2, 0x50, 0xB9, 0x8B, 0xE4, - 0x8E, 0x49, 0x5C, 0x1D, 0x60, 0x89, 0xDA, 0xD1, - 0x5D, 0xC7, 0xD7, 0xB4, 0x61, 0x54, 0xD6, 0xB6, - 0xCE, 0x8E, 0xF4, 0xAD, 0x69, 0xB1, 0x5D, 0x49, - 0x82, 0x55, 0x9B, 0x29, 0x7B, 0xCF, 0x18, 0x85, - 0xC5, 0x29, 0xF5, 0x66, 0x66, 0x0E, 0x57, 0xEC, - 0x68, 0xED, 0xBC, 0x3C, 0x05, 0x72, 0x6C, 0xC0, - 0x2F, 0xD4, 0xCB, 0xF4, 0x97, 0x6E, 0xAA, 0x9A, - 0xFD, 0x51, 0x38, 0xFE, 0x83, 0x76, 0x43, 0x5B, + 0xEE, 0xAF, 0x0A, 0xB9, 0xAD, 0xB3, 0x8D, 0xD6, 0x9C, 0x33, 0xF8, 0x0A, + 0xFA, 0x8F, 0xC5, 0xE8, 0x60, 0x72, 0x61, 0x87, 0x75, 0xFF, 0x3C, 0x0B, + 0x9E, 0xA2, 0x31, 0x4C, 0x9C, 0x25, 0x65, 0x76, 0xD6, 0x74, 0xDF, 0x74, + 0x96, 0xEA, 0x81, 0xD3, 0x38, 0x3B, 0x48, 0x13, 0xD6, 0x92, 0xC6, 0xE0, + 0xE0, 0xD5, 0xD8, 0xE2, 0x50, 0xB9, 0x8B, 0xE4, 0x8E, 0x49, 0x5C, 0x1D, + 0x60, 0x89, 0xDA, 0xD1, 0x5D, 0xC7, 0xD7, 0xB4, 0x61, 0x54, 0xD6, 0xB6, + 0xCE, 0x8E, 0xF4, 0xAD, 0x69, 0xB1, 0x5D, 0x49, 0x82, 0x55, 0x9B, 0x29, + 0x7B, 0xCF, 0x18, 0x85, 0xC5, 0x29, 0xF5, 0x66, 0x66, 0x0E, 0x57, 0xEC, + 0x68, 0xED, 0xBC, 0x3C, 0x05, 0x72, 0x6C, 0xC0, 0x2F, 0xD4, 0xCB, 0xF4, + 0x97, 0x6E, 0xAA, 0x9A, 0xFD, 0x51, 0x38, 0xFE, 0x83, 0x76, 0x43, 0x5B, 0x9F, 0xC6, 0x1D, 0x2F, 0xC0, 0xEB, 0x06, 0xE3 }; @@ -433,226 +418,156 @@ static const unsigned char srp_generator = 0x02; static const unsigned char srp3072_generator = 0x05; static const unsigned char srp8192_generator = 19; -const gnutls_datum_t gnutls_srp_1024_group_prime = { - (void *)srp_params_1024, sizeof(srp_params_1024) -}; +const gnutls_datum_t gnutls_srp_1024_group_prime = { (void *)srp_params_1024, + sizeof(srp_params_1024) }; const gnutls_datum_t gnutls_srp_1024_group_generator = { (void *)&srp_generator, sizeof(srp_generator) }; static const unsigned char srp_params_1536[] = { - 0x9D, 0xEF, 0x3C, 0xAF, 0xB9, 0x39, 0x27, 0x7A, 0xB1, - 0xF1, 0x2A, 0x86, 0x17, 0xA4, 0x7B, 0xBB, 0xDB, 0xA5, - 0x1D, 0xF4, 0x99, 0xAC, 0x4C, 0x80, 0xBE, 0xEE, 0xA9, - 0x61, 0x4B, 0x19, 0xCC, 0x4D, 0x5F, 0x4F, 0x5F, 0x55, - 0x6E, 0x27, 0xCB, 0xDE, 0x51, 0xC6, 0xA9, 0x4B, 0xE4, - 0x60, 0x7A, 0x29, 0x15, 0x58, 0x90, 0x3B, 0xA0, 0xD0, - 0xF8, 0x43, 0x80, 0xB6, 0x55, 0xBB, 0x9A, 0x22, 0xE8, - 0xDC, 0xDF, 0x02, 0x8A, 0x7C, 0xEC, 0x67, 0xF0, 0xD0, - 0x81, 0x34, 0xB1, 0xC8, 0xB9, 0x79, 0x89, 0x14, 0x9B, - 0x60, 0x9E, 0x0B, 0xE3, 0xBA, 0xB6, 0x3D, 0x47, 0x54, - 0x83, 0x81, 0xDB, 0xC5, 0xB1, 0xFC, 0x76, 0x4E, 0x3F, - 0x4B, 0x53, 0xDD, 0x9D, 0xA1, 0x15, 0x8B, 0xFD, 0x3E, - 0x2B, 0x9C, 0x8C, 0xF5, 0x6E, 0xDF, 0x01, 0x95, 0x39, - 0x34, 0x96, 0x27, 0xDB, 0x2F, 0xD5, 0x3D, 0x24, 0xB7, - 0xC4, 0x86, 0x65, 0x77, 0x2E, 0x43, 0x7D, 0x6C, 0x7F, - 0x8C, 0xE4, 0x42, 0x73, 0x4A, 0xF7, 0xCC, 0xB7, 0xAE, - 0x83, 0x7C, 0x26, 0x4A, 0xE3, 0xA9, 0xBE, 0xB8, 0x7F, - 0x8A, 0x2F, 0xE9, 0xB8, 0xB5, 0x29, 0x2E, 0x5A, 0x02, - 0x1F, 0xFF, 0x5E, 0x91, 0x47, 0x9E, 0x8C, 0xE7, 0xA2, - 0x8C, 0x24, 0x42, 0xC6, 0xF3, 0x15, 0x18, 0x0F, 0x93, - 0x49, 0x9A, 0x23, 0x4D, 0xCF, 0x76, 0xE3, 0xFE, 0xD1, - 0x35, 0xF9, 0xBB + 0x9D, 0xEF, 0x3C, 0xAF, 0xB9, 0x39, 0x27, 0x7A, 0xB1, 0xF1, 0x2A, 0x86, + 0x17, 0xA4, 0x7B, 0xBB, 0xDB, 0xA5, 0x1D, 0xF4, 0x99, 0xAC, 0x4C, 0x80, + 0xBE, 0xEE, 0xA9, 0x61, 0x4B, 0x19, 0xCC, 0x4D, 0x5F, 0x4F, 0x5F, 0x55, + 0x6E, 0x27, 0xCB, 0xDE, 0x51, 0xC6, 0xA9, 0x4B, 0xE4, 0x60, 0x7A, 0x29, + 0x15, 0x58, 0x90, 0x3B, 0xA0, 0xD0, 0xF8, 0x43, 0x80, 0xB6, 0x55, 0xBB, + 0x9A, 0x22, 0xE8, 0xDC, 0xDF, 0x02, 0x8A, 0x7C, 0xEC, 0x67, 0xF0, 0xD0, + 0x81, 0x34, 0xB1, 0xC8, 0xB9, 0x79, 0x89, 0x14, 0x9B, 0x60, 0x9E, 0x0B, + 0xE3, 0xBA, 0xB6, 0x3D, 0x47, 0x54, 0x83, 0x81, 0xDB, 0xC5, 0xB1, 0xFC, + 0x76, 0x4E, 0x3F, 0x4B, 0x53, 0xDD, 0x9D, 0xA1, 0x15, 0x8B, 0xFD, 0x3E, + 0x2B, 0x9C, 0x8C, 0xF5, 0x6E, 0xDF, 0x01, 0x95, 0x39, 0x34, 0x96, 0x27, + 0xDB, 0x2F, 0xD5, 0x3D, 0x24, 0xB7, 0xC4, 0x86, 0x65, 0x77, 0x2E, 0x43, + 0x7D, 0x6C, 0x7F, 0x8C, 0xE4, 0x42, 0x73, 0x4A, 0xF7, 0xCC, 0xB7, 0xAE, + 0x83, 0x7C, 0x26, 0x4A, 0xE3, 0xA9, 0xBE, 0xB8, 0x7F, 0x8A, 0x2F, 0xE9, + 0xB8, 0xB5, 0x29, 0x2E, 0x5A, 0x02, 0x1F, 0xFF, 0x5E, 0x91, 0x47, 0x9E, + 0x8C, 0xE7, 0xA2, 0x8C, 0x24, 0x42, 0xC6, 0xF3, 0x15, 0x18, 0x0F, 0x93, + 0x49, 0x9A, 0x23, 0x4D, 0xCF, 0x76, 0xE3, 0xFE, 0xD1, 0x35, 0xF9, 0xBB }; -const gnutls_datum_t gnutls_srp_1536_group_prime = { - (void *)srp_params_1536, sizeof(srp_params_1536) -}; +const gnutls_datum_t gnutls_srp_1536_group_prime = { (void *)srp_params_1536, + sizeof(srp_params_1536) }; const gnutls_datum_t gnutls_srp_1536_group_generator = { (void *)&srp_generator, sizeof(srp_generator) }; static const unsigned char srp_params_2048[] = { - 0xAC, 0x6B, 0xDB, 0x41, 0x32, 0x4A, 0x9A, 0x9B, 0xF1, - 0x66, 0xDE, 0x5E, 0x13, 0x89, 0x58, 0x2F, 0xAF, 0x72, - 0xB6, 0x65, 0x19, 0x87, 0xEE, 0x07, 0xFC, 0x31, 0x92, - 0x94, 0x3D, 0xB5, 0x60, 0x50, 0xA3, 0x73, 0x29, 0xCB, - 0xB4, 0xA0, 0x99, 0xED, 0x81, 0x93, 0xE0, 0x75, 0x77, - 0x67, 0xA1, 0x3D, 0xD5, 0x23, 0x12, 0xAB, 0x4B, 0x03, - 0x31, 0x0D, 0xCD, 0x7F, 0x48, 0xA9, 0xDA, 0x04, 0xFD, - 0x50, 0xE8, 0x08, 0x39, 0x69, 0xED, 0xB7, 0x67, 0xB0, - 0xCF, 0x60, 0x95, 0x17, 0x9A, 0x16, 0x3A, 0xB3, 0x66, - 0x1A, 0x05, 0xFB, 0xD5, 0xFA, 0xAA, 0xE8, 0x29, 0x18, - 0xA9, 0x96, 0x2F, 0x0B, 0x93, 0xB8, 0x55, 0xF9, 0x79, - 0x93, 0xEC, 0x97, 0x5E, 0xEA, 0xA8, 0x0D, 0x74, 0x0A, - 0xDB, 0xF4, 0xFF, 0x74, 0x73, 0x59, 0xD0, 0x41, 0xD5, - 0xC3, 0x3E, 0xA7, 0x1D, 0x28, 0x1E, 0x44, 0x6B, 0x14, - 0x77, 0x3B, 0xCA, 0x97, 0xB4, 0x3A, 0x23, 0xFB, 0x80, - 0x16, 0x76, 0xBD, 0x20, 0x7A, 0x43, 0x6C, 0x64, 0x81, - 0xF1, 0xD2, 0xB9, 0x07, 0x87, 0x17, 0x46, 0x1A, 0x5B, - 0x9D, 0x32, 0xE6, 0x88, 0xF8, 0x77, 0x48, 0x54, 0x45, - 0x23, 0xB5, 0x24, 0xB0, 0xD5, 0x7D, 0x5E, 0xA7, 0x7A, - 0x27, 0x75, 0xD2, 0xEC, 0xFA, 0x03, 0x2C, 0xFB, 0xDB, - 0xF5, 0x2F, 0xB3, 0x78, 0x61, 0x60, 0x27, 0x90, 0x04, - 0xE5, 0x7A, 0xE6, 0xAF, 0x87, 0x4E, 0x73, 0x03, 0xCE, - 0x53, 0x29, 0x9C, 0xCC, 0x04, 0x1C, 0x7B, 0xC3, 0x08, - 0xD8, 0x2A, 0x56, 0x98, 0xF3, 0xA8, 0xD0, 0xC3, 0x82, - 0x71, 0xAE, 0x35, 0xF8, 0xE9, 0xDB, 0xFB, 0xB6, 0x94, - 0xB5, 0xC8, 0x03, 0xD8, 0x9F, 0x7A, 0xE4, 0x35, 0xDE, - 0x23, 0x6D, 0x52, 0x5F, 0x54, 0x75, 0x9B, 0x65, 0xE3, - 0x72, 0xFC, 0xD6, 0x8E, 0xF2, 0x0F, 0xA7, 0x11, 0x1F, + 0xAC, 0x6B, 0xDB, 0x41, 0x32, 0x4A, 0x9A, 0x9B, 0xF1, 0x66, 0xDE, 0x5E, + 0x13, 0x89, 0x58, 0x2F, 0xAF, 0x72, 0xB6, 0x65, 0x19, 0x87, 0xEE, 0x07, + 0xFC, 0x31, 0x92, 0x94, 0x3D, 0xB5, 0x60, 0x50, 0xA3, 0x73, 0x29, 0xCB, + 0xB4, 0xA0, 0x99, 0xED, 0x81, 0x93, 0xE0, 0x75, 0x77, 0x67, 0xA1, 0x3D, + 0xD5, 0x23, 0x12, 0xAB, 0x4B, 0x03, 0x31, 0x0D, 0xCD, 0x7F, 0x48, 0xA9, + 0xDA, 0x04, 0xFD, 0x50, 0xE8, 0x08, 0x39, 0x69, 0xED, 0xB7, 0x67, 0xB0, + 0xCF, 0x60, 0x95, 0x17, 0x9A, 0x16, 0x3A, 0xB3, 0x66, 0x1A, 0x05, 0xFB, + 0xD5, 0xFA, 0xAA, 0xE8, 0x29, 0x18, 0xA9, 0x96, 0x2F, 0x0B, 0x93, 0xB8, + 0x55, 0xF9, 0x79, 0x93, 0xEC, 0x97, 0x5E, 0xEA, 0xA8, 0x0D, 0x74, 0x0A, + 0xDB, 0xF4, 0xFF, 0x74, 0x73, 0x59, 0xD0, 0x41, 0xD5, 0xC3, 0x3E, 0xA7, + 0x1D, 0x28, 0x1E, 0x44, 0x6B, 0x14, 0x77, 0x3B, 0xCA, 0x97, 0xB4, 0x3A, + 0x23, 0xFB, 0x80, 0x16, 0x76, 0xBD, 0x20, 0x7A, 0x43, 0x6C, 0x64, 0x81, + 0xF1, 0xD2, 0xB9, 0x07, 0x87, 0x17, 0x46, 0x1A, 0x5B, 0x9D, 0x32, 0xE6, + 0x88, 0xF8, 0x77, 0x48, 0x54, 0x45, 0x23, 0xB5, 0x24, 0xB0, 0xD5, 0x7D, + 0x5E, 0xA7, 0x7A, 0x27, 0x75, 0xD2, 0xEC, 0xFA, 0x03, 0x2C, 0xFB, 0xDB, + 0xF5, 0x2F, 0xB3, 0x78, 0x61, 0x60, 0x27, 0x90, 0x04, 0xE5, 0x7A, 0xE6, + 0xAF, 0x87, 0x4E, 0x73, 0x03, 0xCE, 0x53, 0x29, 0x9C, 0xCC, 0x04, 0x1C, + 0x7B, 0xC3, 0x08, 0xD8, 0x2A, 0x56, 0x98, 0xF3, 0xA8, 0xD0, 0xC3, 0x82, + 0x71, 0xAE, 0x35, 0xF8, 0xE9, 0xDB, 0xFB, 0xB6, 0x94, 0xB5, 0xC8, 0x03, + 0xD8, 0x9F, 0x7A, 0xE4, 0x35, 0xDE, 0x23, 0x6D, 0x52, 0x5F, 0x54, 0x75, + 0x9B, 0x65, 0xE3, 0x72, 0xFC, 0xD6, 0x8E, 0xF2, 0x0F, 0xA7, 0x11, 0x1F, 0x9E, 0x4A, 0xFF, 0x73 }; -const gnutls_datum_t gnutls_srp_2048_group_prime = { - (void *)srp_params_2048, sizeof(srp_params_2048) -}; +const gnutls_datum_t gnutls_srp_2048_group_prime = { (void *)srp_params_2048, + sizeof(srp_params_2048) }; const gnutls_datum_t gnutls_srp_2048_group_generator = { (void *)&srp_generator, sizeof(srp_generator) }; static const unsigned char srp_params_3072[] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, - 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34, 0xC4, 0xC6, - 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, 0x29, 0x02, 0x4E, - 0x08, 0x8A, 0x67, 0xCC, 0x74, 0x02, 0x0B, 0xBE, 0xA6, - 0x3B, 0x13, 0x9B, 0x22, 0x51, 0x4A, 0x08, 0x79, 0x8E, - 0x34, 0x04, 0xDD, 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, - 0x43, 0x1B, 0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, - 0x37, 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, - 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, 0xF4, - 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B, 0x0B, 0xFF, - 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, 0xEE, 0x38, 0x6B, - 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 0xAE, 0x9F, 0x24, 0x11, - 0x7C, 0x4B, 0x1F, 0xE6, 0x49, 0x28, 0x66, 0x51, 0xEC, - 0xE4, 0x5B, 0x3D, 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, - 0xBF, 0x05, 0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, - 0x9A, 0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, - 0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, 0x1C, - 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB, 0x9E, 0xD5, - 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, 0x67, 0x0C, 0x35, - 0x4E, 0x4A, 0xBC, 0x98, 0x04, 0xF1, 0x74, 0x6C, 0x08, - 0xCA, 0x18, 0x21, 0x7C, 0x32, 0x90, 0x5E, 0x46, 0x2E, - 0x36, 0xCE, 0x3B, 0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, - 0x86, 0x03, 0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, - 0x8F, 0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, - 0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, 0x39, - 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5, 0x15, 0xD2, - 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, 0x15, 0x72, 0x8E, - 0x5A, 0x8A, 0xAA, 0xC4, 0x2D, 0xAD, 0x33, 0x17, 0x0D, - 0x04, 0x50, 0x7A, 0x33, 0xA8, 0x55, 0x21, 0xAB, 0xDF, - 0x1C, 0xBA, 0x64, 0xEC, 0xFB, 0x85, 0x04, 0x58, 0xDB, - 0xEF, 0x0A, 0x8A, 0xEA, 0x71, 0x57, 0x5D, 0x06, 0x0C, - 0x7D, 0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, 0xC7, - 0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, 0x33, 0xD7, 0x1E, - 0x8C, 0x94, 0xE0, 0x4A, 0x25, 0x61, 0x9D, 0xCE, 0xE3, - 0xD2, 0x26, 0x1A, 0xD2, 0xEE, 0x6B, 0xF1, 0x2F, 0xFA, - 0x06, 0xD9, 0x8A, 0x08, 0x64, 0xD8, 0x76, 0x02, 0x73, - 0x3E, 0xC8, 0x6A, 0x64, 0x52, 0x1F, 0x2B, 0x18, 0x17, - 0x7B, 0x20, 0x0C, 0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, - 0x5D, 0x6C, 0x77, 0x09, 0x88, 0xC0, 0xBA, 0xD9, 0x46, - 0xE2, 0x08, 0xE2, 0x4F, 0xA0, 0x74, 0xE5, 0xAB, 0x31, - 0x43, 0xDB, 0x5B, 0xFC, 0xE0, 0xFD, 0x10, 0x8E, 0x4B, - 0x82, 0xD1, 0x20, 0xA9, 0x3A, 0xD2, 0xCA, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x0F, 0xDA, 0xA2, + 0x21, 0x68, 0xC2, 0x34, 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, + 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, 0x02, 0x0B, 0xBE, 0xA6, + 0x3B, 0x13, 0x9B, 0x22, 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, + 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, 0x30, 0x2B, 0x0A, 0x6D, + 0xF2, 0x5F, 0x14, 0x37, 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, + 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, 0xF4, 0x4C, 0x42, 0xE9, + 0xA6, 0x37, 0xED, 0x6B, 0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, + 0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 0xAE, 0x9F, 0x24, 0x11, + 0x7C, 0x4B, 0x1F, 0xE6, 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, + 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, 0x98, 0xDA, 0x48, 0x36, + 0x1C, 0x55, 0xD3, 0x9A, 0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, + 0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, 0x1C, 0x62, 0xF3, 0x56, + 0x20, 0x85, 0x52, 0xBB, 0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, + 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, 0xF1, 0x74, 0x6C, 0x08, + 0xCA, 0x18, 0x21, 0x7C, 0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B, + 0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, 0x9B, 0x27, 0x83, 0xA2, + 0xEC, 0x07, 0xA2, 0x8F, 0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, + 0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, 0x39, 0x95, 0x49, 0x7C, + 0xEA, 0x95, 0x6A, 0xE5, 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, + 0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAA, 0xC4, 0x2D, 0xAD, 0x33, 0x17, 0x0D, + 0x04, 0x50, 0x7A, 0x33, 0xA8, 0x55, 0x21, 0xAB, 0xDF, 0x1C, 0xBA, 0x64, + 0xEC, 0xFB, 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A, 0x8A, 0xEA, 0x71, 0x57, + 0x5D, 0x06, 0x0C, 0x7D, 0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, 0xC7, + 0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, 0x33, 0xD7, 0x1E, 0x8C, 0x94, 0xE0, + 0x4A, 0x25, 0x61, 0x9D, 0xCE, 0xE3, 0xD2, 0x26, 0x1A, 0xD2, 0xEE, 0x6B, + 0xF1, 0x2F, 0xFA, 0x06, 0xD9, 0x8A, 0x08, 0x64, 0xD8, 0x76, 0x02, 0x73, + 0x3E, 0xC8, 0x6A, 0x64, 0x52, 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C, + 0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, 0x6C, 0x77, 0x09, 0x88, 0xC0, + 0xBA, 0xD9, 0x46, 0xE2, 0x08, 0xE2, 0x4F, 0xA0, 0x74, 0xE5, 0xAB, 0x31, + 0x43, 0xDB, 0x5B, 0xFC, 0xE0, 0xFD, 0x10, 0x8E, 0x4B, 0x82, 0xD1, 0x20, + 0xA9, 0x3A, 0xD2, 0xCA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; const gnutls_datum_t gnutls_srp_3072_group_generator = { (void *)&srp3072_generator, sizeof(srp3072_generator) }; -const gnutls_datum_t gnutls_srp_3072_group_prime = { - (void *)srp_params_3072, sizeof(srp_params_3072) -}; +const gnutls_datum_t gnutls_srp_3072_group_prime = { (void *)srp_params_3072, + sizeof(srp_params_3072) }; static const unsigned char srp_params_4096[] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x0F, 0xDA, - 0xA2, - 0x21, 0x68, 0xC2, 0x34, 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, - 0xD1, - 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, 0x02, 0x0B, 0xBE, - 0xA6, - 0x3B, 0x13, 0x9B, 0x22, 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, - 0xDD, - 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, 0x30, 0x2B, 0x0A, - 0x6D, - 0xF2, 0x5F, 0x14, 0x37, 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, - 0x45, - 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, 0xF4, 0x4C, 0x42, - 0xE9, - 0xA6, 0x37, 0xED, 0x6B, 0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, - 0xED, - 0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 0xAE, 0x9F, 0x24, - 0x11, - 0x7C, 0x4B, 0x1F, 0xE6, 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, - 0x3D, - 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, 0x98, 0xDA, 0x48, - 0x36, - 0x1C, 0x55, 0xD3, 0x9A, 0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, - 0x5F, - 0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, 0x1C, 0x62, 0xF3, - 0x56, - 0x20, 0x85, 0x52, 0xBB, 0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, - 0x6D, - 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, 0xF1, 0x74, 0x6C, - 0x08, - 0xCA, 0x18, 0x21, 0x7C, 0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, - 0x3B, - 0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, 0x9B, 0x27, 0x83, - 0xA2, - 0xEC, 0x07, 0xA2, 0x8F, 0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, - 0xC9, - 0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, 0x39, 0x95, 0x49, - 0x7C, - 0xEA, 0x95, 0x6A, 0xE5, 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, - 0x10, - 0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAA, 0xC4, 0x2D, 0xAD, 0x33, 0x17, - 0x0D, - 0x04, 0x50, 0x7A, 0x33, 0xA8, 0x55, 0x21, 0xAB, 0xDF, 0x1C, 0xBA, - 0x64, - 0xEC, 0xFB, 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A, 0x8A, 0xEA, 0x71, - 0x57, - 0x5D, 0x06, 0x0C, 0x7D, 0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, - 0xC7, - 0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, 0x33, 0xD7, 0x1E, 0x8C, 0x94, - 0xE0, - 0x4A, 0x25, 0x61, 0x9D, 0xCE, 0xE3, 0xD2, 0x26, 0x1A, 0xD2, 0xEE, - 0x6B, - 0xF1, 0x2F, 0xFA, 0x06, 0xD9, 0x8A, 0x08, 0x64, 0xD8, 0x76, 0x02, - 0x73, - 0x3E, 0xC8, 0x6A, 0x64, 0x52, 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, - 0x0C, - 0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, 0x6C, 0x77, 0x09, 0x88, - 0xC0, - 0xBA, 0xD9, 0x46, 0xE2, 0x08, 0xE2, 0x4F, 0xA0, 0x74, 0xE5, 0xAB, - 0x31, - 0x43, 0xDB, 0x5B, 0xFC, 0xE0, 0xFD, 0x10, 0x8E, 0x4B, 0x82, 0xD1, - 0x20, - 0xA9, 0x21, 0x08, 0x01, 0x1A, 0x72, 0x3C, 0x12, 0xA7, 0x87, 0xE6, - 0xD7, - 0x88, 0x71, 0x9A, 0x10, 0xBD, 0xBA, 0x5B, 0x26, 0x99, 0xC3, 0x27, - 0x18, - 0x6A, 0xF4, 0xE2, 0x3C, 0x1A, 0x94, 0x68, 0x34, 0xB6, 0x15, 0x0B, - 0xDA, - 0x25, 0x83, 0xE9, 0xCA, 0x2A, 0xD4, 0x4C, 0xE8, 0xDB, 0xBB, 0xC2, - 0xDB, - 0x04, 0xDE, 0x8E, 0xF9, 0x2E, 0x8E, 0xFC, 0x14, 0x1F, 0xBE, 0xCA, - 0xA6, - 0x28, 0x7C, 0x59, 0x47, 0x4E, 0x6B, 0xC0, 0x5D, 0x99, 0xB2, 0x96, - 0x4F, - 0xA0, 0x90, 0xC3, 0xA2, 0x23, 0x3B, 0xA1, 0x86, 0x51, 0x5B, 0xE7, - 0xED, - 0x1F, 0x61, 0x29, 0x70, 0xCE, 0xE2, 0xD7, 0xAF, 0xB8, 0x1B, 0xDD, - 0x76, - 0x21, 0x70, 0x48, 0x1C, 0xD0, 0x06, 0x91, 0x27, 0xD5, 0xB0, 0x5A, - 0xA9, - 0x93, 0xB4, 0xEA, 0x98, 0x8D, 0x8F, 0xDD, 0xC1, 0x86, 0xFF, 0xB7, - 0xDC, - 0x90, 0xA6, 0xC0, 0x8F, 0x4D, 0xF4, 0x35, 0xC9, 0x34, 0x06, 0x31, - 0x99, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x0F, 0xDA, 0xA2, + 0x21, 0x68, 0xC2, 0x34, 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, + 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, 0x02, 0x0B, 0xBE, 0xA6, + 0x3B, 0x13, 0x9B, 0x22, 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, + 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, 0x30, 0x2B, 0x0A, 0x6D, + 0xF2, 0x5F, 0x14, 0x37, 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, + 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, 0xF4, 0x4C, 0x42, 0xE9, + 0xA6, 0x37, 0xED, 0x6B, 0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, + 0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 0xAE, 0x9F, 0x24, 0x11, + 0x7C, 0x4B, 0x1F, 0xE6, 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, + 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, 0x98, 0xDA, 0x48, 0x36, + 0x1C, 0x55, 0xD3, 0x9A, 0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, + 0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, 0x1C, 0x62, 0xF3, 0x56, + 0x20, 0x85, 0x52, 0xBB, 0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, + 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, 0xF1, 0x74, 0x6C, 0x08, + 0xCA, 0x18, 0x21, 0x7C, 0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B, + 0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, 0x9B, 0x27, 0x83, 0xA2, + 0xEC, 0x07, 0xA2, 0x8F, 0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, + 0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, 0x39, 0x95, 0x49, 0x7C, + 0xEA, 0x95, 0x6A, 0xE5, 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, + 0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAA, 0xC4, 0x2D, 0xAD, 0x33, 0x17, 0x0D, + 0x04, 0x50, 0x7A, 0x33, 0xA8, 0x55, 0x21, 0xAB, 0xDF, 0x1C, 0xBA, 0x64, + 0xEC, 0xFB, 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A, 0x8A, 0xEA, 0x71, 0x57, + 0x5D, 0x06, 0x0C, 0x7D, 0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, 0xC7, + 0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, 0x33, 0xD7, 0x1E, 0x8C, 0x94, 0xE0, + 0x4A, 0x25, 0x61, 0x9D, 0xCE, 0xE3, 0xD2, 0x26, 0x1A, 0xD2, 0xEE, 0x6B, + 0xF1, 0x2F, 0xFA, 0x06, 0xD9, 0x8A, 0x08, 0x64, 0xD8, 0x76, 0x02, 0x73, + 0x3E, 0xC8, 0x6A, 0x64, 0x52, 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C, + 0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, 0x6C, 0x77, 0x09, 0x88, 0xC0, + 0xBA, 0xD9, 0x46, 0xE2, 0x08, 0xE2, 0x4F, 0xA0, 0x74, 0xE5, 0xAB, 0x31, + 0x43, 0xDB, 0x5B, 0xFC, 0xE0, 0xFD, 0x10, 0x8E, 0x4B, 0x82, 0xD1, 0x20, + 0xA9, 0x21, 0x08, 0x01, 0x1A, 0x72, 0x3C, 0x12, 0xA7, 0x87, 0xE6, 0xD7, + 0x88, 0x71, 0x9A, 0x10, 0xBD, 0xBA, 0x5B, 0x26, 0x99, 0xC3, 0x27, 0x18, + 0x6A, 0xF4, 0xE2, 0x3C, 0x1A, 0x94, 0x68, 0x34, 0xB6, 0x15, 0x0B, 0xDA, + 0x25, 0x83, 0xE9, 0xCA, 0x2A, 0xD4, 0x4C, 0xE8, 0xDB, 0xBB, 0xC2, 0xDB, + 0x04, 0xDE, 0x8E, 0xF9, 0x2E, 0x8E, 0xFC, 0x14, 0x1F, 0xBE, 0xCA, 0xA6, + 0x28, 0x7C, 0x59, 0x47, 0x4E, 0x6B, 0xC0, 0x5D, 0x99, 0xB2, 0x96, 0x4F, + 0xA0, 0x90, 0xC3, 0xA2, 0x23, 0x3B, 0xA1, 0x86, 0x51, 0x5B, 0xE7, 0xED, + 0x1F, 0x61, 0x29, 0x70, 0xCE, 0xE2, 0xD7, 0xAF, 0xB8, 0x1B, 0xDD, 0x76, + 0x21, 0x70, 0x48, 0x1C, 0xD0, 0x06, 0x91, 0x27, 0xD5, 0xB0, 0x5A, 0xA9, + 0x93, 0xB4, 0xEA, 0x98, 0x8D, 0x8F, 0xDD, 0xC1, 0x86, 0xFF, 0xB7, 0xDC, + 0x90, 0xA6, 0xC0, 0x8F, 0x4D, 0xF4, 0x35, 0xC9, 0x34, 0x06, 0x31, 0x99, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; @@ -660,144 +575,100 @@ const gnutls_datum_t gnutls_srp_4096_group_generator = { (void *)&srp3072_generator, sizeof(srp3072_generator) }; -const gnutls_datum_t gnutls_srp_4096_group_prime = { - (void *)srp_params_4096, sizeof(srp_params_4096) -}; +const gnutls_datum_t gnutls_srp_4096_group_prime = { (void *)srp_params_4096, + sizeof(srp_params_4096) }; static const unsigned char srp_params_8192[] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34, - 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, - 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, - 0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22, - 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, - 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, - 0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37, - 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, - 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, - 0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B, - 0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, - 0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, - 0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6, - 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, - 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, - 0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A, - 0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, - 0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, - 0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB, - 0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, - 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, - 0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, 0x21, 0x7C, - 0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B, - 0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, - 0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, 0x8F, - 0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, - 0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, - 0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5, - 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, - 0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAA, 0xC4, 0x2D, - 0xAD, 0x33, 0x17, 0x0D, 0x04, 0x50, 0x7A, 0x33, - 0xA8, 0x55, 0x21, 0xAB, 0xDF, 0x1C, 0xBA, 0x64, - 0xEC, 0xFB, 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A, - 0x8A, 0xEA, 0x71, 0x57, 0x5D, 0x06, 0x0C, 0x7D, - 0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, 0xC7, - 0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, 0x33, 0xD7, - 0x1E, 0x8C, 0x94, 0xE0, 0x4A, 0x25, 0x61, 0x9D, - 0xCE, 0xE3, 0xD2, 0x26, 0x1A, 0xD2, 0xEE, 0x6B, - 0xF1, 0x2F, 0xFA, 0x06, 0xD9, 0x8A, 0x08, 0x64, - 0xD8, 0x76, 0x02, 0x73, 0x3E, 0xC8, 0x6A, 0x64, - 0x52, 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C, - 0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, 0x6C, - 0x77, 0x09, 0x88, 0xC0, 0xBA, 0xD9, 0x46, 0xE2, - 0x08, 0xE2, 0x4F, 0xA0, 0x74, 0xE5, 0xAB, 0x31, - 0x43, 0xDB, 0x5B, 0xFC, 0xE0, 0xFD, 0x10, 0x8E, - 0x4B, 0x82, 0xD1, 0x20, 0xA9, 0x21, 0x08, 0x01, - 0x1A, 0x72, 0x3C, 0x12, 0xA7, 0x87, 0xE6, 0xD7, - 0x88, 0x71, 0x9A, 0x10, 0xBD, 0xBA, 0x5B, 0x26, - 0x99, 0xC3, 0x27, 0x18, 0x6A, 0xF4, 0xE2, 0x3C, - 0x1A, 0x94, 0x68, 0x34, 0xB6, 0x15, 0x0B, 0xDA, - 0x25, 0x83, 0xE9, 0xCA, 0x2A, 0xD4, 0x4C, 0xE8, - 0xDB, 0xBB, 0xC2, 0xDB, 0x04, 0xDE, 0x8E, 0xF9, - 0x2E, 0x8E, 0xFC, 0x14, 0x1F, 0xBE, 0xCA, 0xA6, - 0x28, 0x7C, 0x59, 0x47, 0x4E, 0x6B, 0xC0, 0x5D, - 0x99, 0xB2, 0x96, 0x4F, 0xA0, 0x90, 0xC3, 0xA2, - 0x23, 0x3B, 0xA1, 0x86, 0x51, 0x5B, 0xE7, 0xED, - 0x1F, 0x61, 0x29, 0x70, 0xCE, 0xE2, 0xD7, 0xAF, - 0xB8, 0x1B, 0xDD, 0x76, 0x21, 0x70, 0x48, 0x1C, - 0xD0, 0x06, 0x91, 0x27, 0xD5, 0xB0, 0x5A, 0xA9, - 0x93, 0xB4, 0xEA, 0x98, 0x8D, 0x8F, 0xDD, 0xC1, - 0x86, 0xFF, 0xB7, 0xDC, 0x90, 0xA6, 0xC0, 0x8F, - 0x4D, 0xF4, 0x35, 0xC9, 0x34, 0x02, 0x84, 0x92, - 0x36, 0xC3, 0xFA, 0xB4, 0xD2, 0x7C, 0x70, 0x26, - 0xC1, 0xD4, 0xDC, 0xB2, 0x60, 0x26, 0x46, 0xDE, - 0xC9, 0x75, 0x1E, 0x76, 0x3D, 0xBA, 0x37, 0xBD, - 0xF8, 0xFF, 0x94, 0x06, 0xAD, 0x9E, 0x53, 0x0E, - 0xE5, 0xDB, 0x38, 0x2F, 0x41, 0x30, 0x01, 0xAE, - 0xB0, 0x6A, 0x53, 0xED, 0x90, 0x27, 0xD8, 0x31, - 0x17, 0x97, 0x27, 0xB0, 0x86, 0x5A, 0x89, 0x18, - 0xDA, 0x3E, 0xDB, 0xEB, 0xCF, 0x9B, 0x14, 0xED, - 0x44, 0xCE, 0x6C, 0xBA, 0xCE, 0xD4, 0xBB, 0x1B, - 0xDB, 0x7F, 0x14, 0x47, 0xE6, 0xCC, 0x25, 0x4B, - 0x33, 0x20, 0x51, 0x51, 0x2B, 0xD7, 0xAF, 0x42, - 0x6F, 0xB8, 0xF4, 0x01, 0x37, 0x8C, 0xD2, 0xBF, - 0x59, 0x83, 0xCA, 0x01, 0xC6, 0x4B, 0x92, 0xEC, - 0xF0, 0x32, 0xEA, 0x15, 0xD1, 0x72, 0x1D, 0x03, - 0xF4, 0x82, 0xD7, 0xCE, 0x6E, 0x74, 0xFE, 0xF6, - 0xD5, 0x5E, 0x70, 0x2F, 0x46, 0x98, 0x0C, 0x82, - 0xB5, 0xA8, 0x40, 0x31, 0x90, 0x0B, 0x1C, 0x9E, - 0x59, 0xE7, 0xC9, 0x7F, 0xBE, 0xC7, 0xE8, 0xF3, - 0x23, 0xA9, 0x7A, 0x7E, 0x36, 0xCC, 0x88, 0xBE, - 0x0F, 0x1D, 0x45, 0xB7, 0xFF, 0x58, 0x5A, 0xC5, - 0x4B, 0xD4, 0x07, 0xB2, 0x2B, 0x41, 0x54, 0xAA, - 0xCC, 0x8F, 0x6D, 0x7E, 0xBF, 0x48, 0xE1, 0xD8, - 0x14, 0xCC, 0x5E, 0xD2, 0x0F, 0x80, 0x37, 0xE0, - 0xA7, 0x97, 0x15, 0xEE, 0xF2, 0x9B, 0xE3, 0x28, - 0x06, 0xA1, 0xD5, 0x8B, 0xB7, 0xC5, 0xDA, 0x76, - 0xF5, 0x50, 0xAA, 0x3D, 0x8A, 0x1F, 0xBF, 0xF0, - 0xEB, 0x19, 0xCC, 0xB1, 0xA3, 0x13, 0xD5, 0x5C, - 0xDA, 0x56, 0xC9, 0xEC, 0x2E, 0xF2, 0x96, 0x32, - 0x38, 0x7F, 0xE8, 0xD7, 0x6E, 0x3C, 0x04, 0x68, - 0x04, 0x3E, 0x8F, 0x66, 0x3F, 0x48, 0x60, 0xEE, - 0x12, 0xBF, 0x2D, 0x5B, 0x0B, 0x74, 0x74, 0xD6, - 0xE6, 0x94, 0xF9, 0x1E, 0x6D, 0xBE, 0x11, 0x59, - 0x74, 0xA3, 0x92, 0x6F, 0x12, 0xFE, 0xE5, 0xE4, - 0x38, 0x77, 0x7C, 0xB6, 0xA9, 0x32, 0xDF, 0x8C, - 0xD8, 0xBE, 0xC4, 0xD0, 0x73, 0xB9, 0x31, 0xBA, - 0x3B, 0xC8, 0x32, 0xB6, 0x8D, 0x9D, 0xD3, 0x00, - 0x74, 0x1F, 0xA7, 0xBF, 0x8A, 0xFC, 0x47, 0xED, - 0x25, 0x76, 0xF6, 0x93, 0x6B, 0xA4, 0x24, 0x66, - 0x3A, 0xAB, 0x63, 0x9C, 0x5A, 0xE4, 0xF5, 0x68, - 0x34, 0x23, 0xB4, 0x74, 0x2B, 0xF1, 0xC9, 0x78, - 0x23, 0x8F, 0x16, 0xCB, 0xE3, 0x9D, 0x65, 0x2D, - 0xE3, 0xFD, 0xB8, 0xBE, 0xFC, 0x84, 0x8A, 0xD9, - 0x22, 0x22, 0x2E, 0x04, 0xA4, 0x03, 0x7C, 0x07, - 0x13, 0xEB, 0x57, 0xA8, 0x1A, 0x23, 0xF0, 0xC7, - 0x34, 0x73, 0xFC, 0x64, 0x6C, 0xEA, 0x30, 0x6B, - 0x4B, 0xCB, 0xC8, 0x86, 0x2F, 0x83, 0x85, 0xDD, - 0xFA, 0x9D, 0x4B, 0x7F, 0xA2, 0xC0, 0x87, 0xE8, - 0x79, 0x68, 0x33, 0x03, 0xED, 0x5B, 0xDD, 0x3A, - 0x06, 0x2B, 0x3C, 0xF5, 0xB3, 0xA2, 0x78, 0xA6, - 0x6D, 0x2A, 0x13, 0xF8, 0x3F, 0x44, 0xF8, 0x2D, - 0xDF, 0x31, 0x0E, 0xE0, 0x74, 0xAB, 0x6A, 0x36, - 0x45, 0x97, 0xE8, 0x99, 0xA0, 0x25, 0x5D, 0xC1, - 0x64, 0xF3, 0x1C, 0xC5, 0x08, 0x46, 0x85, 0x1D, - 0xF9, 0xAB, 0x48, 0x19, 0x5D, 0xED, 0x7E, 0xA1, - 0xB1, 0xD5, 0x10, 0xBD, 0x7E, 0xE7, 0x4D, 0x73, - 0xFA, 0xF3, 0x6B, 0xC3, 0x1E, 0xCF, 0xA2, 0x68, - 0x35, 0x90, 0x46, 0xF4, 0xEB, 0x87, 0x9F, 0x92, - 0x40, 0x09, 0x43, 0x8B, 0x48, 0x1C, 0x6C, 0xD7, - 0x88, 0x9A, 0x00, 0x2E, 0xD5, 0xEE, 0x38, 0x2B, - 0xC9, 0x19, 0x0D, 0xA6, 0xFC, 0x02, 0x6E, 0x47, - 0x95, 0x58, 0xE4, 0x47, 0x56, 0x77, 0xE9, 0xAA, - 0x9E, 0x30, 0x50, 0xE2, 0x76, 0x56, 0x94, 0xDF, - 0xC8, 0x1F, 0x56, 0xE8, 0x80, 0xB9, 0x6E, 0x71, - 0x60, 0xC9, 0x80, 0xDD, 0x98, 0xED, 0xD3, 0xDF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x0F, 0xDA, 0xA2, + 0x21, 0x68, 0xC2, 0x34, 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, + 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, 0x02, 0x0B, 0xBE, 0xA6, + 0x3B, 0x13, 0x9B, 0x22, 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, + 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, 0x30, 0x2B, 0x0A, 0x6D, + 0xF2, 0x5F, 0x14, 0x37, 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, + 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, 0xF4, 0x4C, 0x42, 0xE9, + 0xA6, 0x37, 0xED, 0x6B, 0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, + 0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 0xAE, 0x9F, 0x24, 0x11, + 0x7C, 0x4B, 0x1F, 0xE6, 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, + 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, 0x98, 0xDA, 0x48, 0x36, + 0x1C, 0x55, 0xD3, 0x9A, 0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, + 0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, 0x1C, 0x62, 0xF3, 0x56, + 0x20, 0x85, 0x52, 0xBB, 0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, + 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, 0xF1, 0x74, 0x6C, 0x08, + 0xCA, 0x18, 0x21, 0x7C, 0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B, + 0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, 0x9B, 0x27, 0x83, 0xA2, + 0xEC, 0x07, 0xA2, 0x8F, 0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, + 0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, 0x39, 0x95, 0x49, 0x7C, + 0xEA, 0x95, 0x6A, 0xE5, 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, + 0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAA, 0xC4, 0x2D, 0xAD, 0x33, 0x17, 0x0D, + 0x04, 0x50, 0x7A, 0x33, 0xA8, 0x55, 0x21, 0xAB, 0xDF, 0x1C, 0xBA, 0x64, + 0xEC, 0xFB, 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A, 0x8A, 0xEA, 0x71, 0x57, + 0x5D, 0x06, 0x0C, 0x7D, 0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, 0xC7, + 0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, 0x33, 0xD7, 0x1E, 0x8C, 0x94, 0xE0, + 0x4A, 0x25, 0x61, 0x9D, 0xCE, 0xE3, 0xD2, 0x26, 0x1A, 0xD2, 0xEE, 0x6B, + 0xF1, 0x2F, 0xFA, 0x06, 0xD9, 0x8A, 0x08, 0x64, 0xD8, 0x76, 0x02, 0x73, + 0x3E, 0xC8, 0x6A, 0x64, 0x52, 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C, + 0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, 0x6C, 0x77, 0x09, 0x88, 0xC0, + 0xBA, 0xD9, 0x46, 0xE2, 0x08, 0xE2, 0x4F, 0xA0, 0x74, 0xE5, 0xAB, 0x31, + 0x43, 0xDB, 0x5B, 0xFC, 0xE0, 0xFD, 0x10, 0x8E, 0x4B, 0x82, 0xD1, 0x20, + 0xA9, 0x21, 0x08, 0x01, 0x1A, 0x72, 0x3C, 0x12, 0xA7, 0x87, 0xE6, 0xD7, + 0x88, 0x71, 0x9A, 0x10, 0xBD, 0xBA, 0x5B, 0x26, 0x99, 0xC3, 0x27, 0x18, + 0x6A, 0xF4, 0xE2, 0x3C, 0x1A, 0x94, 0x68, 0x34, 0xB6, 0x15, 0x0B, 0xDA, + 0x25, 0x83, 0xE9, 0xCA, 0x2A, 0xD4, 0x4C, 0xE8, 0xDB, 0xBB, 0xC2, 0xDB, + 0x04, 0xDE, 0x8E, 0xF9, 0x2E, 0x8E, 0xFC, 0x14, 0x1F, 0xBE, 0xCA, 0xA6, + 0x28, 0x7C, 0x59, 0x47, 0x4E, 0x6B, 0xC0, 0x5D, 0x99, 0xB2, 0x96, 0x4F, + 0xA0, 0x90, 0xC3, 0xA2, 0x23, 0x3B, 0xA1, 0x86, 0x51, 0x5B, 0xE7, 0xED, + 0x1F, 0x61, 0x29, 0x70, 0xCE, 0xE2, 0xD7, 0xAF, 0xB8, 0x1B, 0xDD, 0x76, + 0x21, 0x70, 0x48, 0x1C, 0xD0, 0x06, 0x91, 0x27, 0xD5, 0xB0, 0x5A, 0xA9, + 0x93, 0xB4, 0xEA, 0x98, 0x8D, 0x8F, 0xDD, 0xC1, 0x86, 0xFF, 0xB7, 0xDC, + 0x90, 0xA6, 0xC0, 0x8F, 0x4D, 0xF4, 0x35, 0xC9, 0x34, 0x02, 0x84, 0x92, + 0x36, 0xC3, 0xFA, 0xB4, 0xD2, 0x7C, 0x70, 0x26, 0xC1, 0xD4, 0xDC, 0xB2, + 0x60, 0x26, 0x46, 0xDE, 0xC9, 0x75, 0x1E, 0x76, 0x3D, 0xBA, 0x37, 0xBD, + 0xF8, 0xFF, 0x94, 0x06, 0xAD, 0x9E, 0x53, 0x0E, 0xE5, 0xDB, 0x38, 0x2F, + 0x41, 0x30, 0x01, 0xAE, 0xB0, 0x6A, 0x53, 0xED, 0x90, 0x27, 0xD8, 0x31, + 0x17, 0x97, 0x27, 0xB0, 0x86, 0x5A, 0x89, 0x18, 0xDA, 0x3E, 0xDB, 0xEB, + 0xCF, 0x9B, 0x14, 0xED, 0x44, 0xCE, 0x6C, 0xBA, 0xCE, 0xD4, 0xBB, 0x1B, + 0xDB, 0x7F, 0x14, 0x47, 0xE6, 0xCC, 0x25, 0x4B, 0x33, 0x20, 0x51, 0x51, + 0x2B, 0xD7, 0xAF, 0x42, 0x6F, 0xB8, 0xF4, 0x01, 0x37, 0x8C, 0xD2, 0xBF, + 0x59, 0x83, 0xCA, 0x01, 0xC6, 0x4B, 0x92, 0xEC, 0xF0, 0x32, 0xEA, 0x15, + 0xD1, 0x72, 0x1D, 0x03, 0xF4, 0x82, 0xD7, 0xCE, 0x6E, 0x74, 0xFE, 0xF6, + 0xD5, 0x5E, 0x70, 0x2F, 0x46, 0x98, 0x0C, 0x82, 0xB5, 0xA8, 0x40, 0x31, + 0x90, 0x0B, 0x1C, 0x9E, 0x59, 0xE7, 0xC9, 0x7F, 0xBE, 0xC7, 0xE8, 0xF3, + 0x23, 0xA9, 0x7A, 0x7E, 0x36, 0xCC, 0x88, 0xBE, 0x0F, 0x1D, 0x45, 0xB7, + 0xFF, 0x58, 0x5A, 0xC5, 0x4B, 0xD4, 0x07, 0xB2, 0x2B, 0x41, 0x54, 0xAA, + 0xCC, 0x8F, 0x6D, 0x7E, 0xBF, 0x48, 0xE1, 0xD8, 0x14, 0xCC, 0x5E, 0xD2, + 0x0F, 0x80, 0x37, 0xE0, 0xA7, 0x97, 0x15, 0xEE, 0xF2, 0x9B, 0xE3, 0x28, + 0x06, 0xA1, 0xD5, 0x8B, 0xB7, 0xC5, 0xDA, 0x76, 0xF5, 0x50, 0xAA, 0x3D, + 0x8A, 0x1F, 0xBF, 0xF0, 0xEB, 0x19, 0xCC, 0xB1, 0xA3, 0x13, 0xD5, 0x5C, + 0xDA, 0x56, 0xC9, 0xEC, 0x2E, 0xF2, 0x96, 0x32, 0x38, 0x7F, 0xE8, 0xD7, + 0x6E, 0x3C, 0x04, 0x68, 0x04, 0x3E, 0x8F, 0x66, 0x3F, 0x48, 0x60, 0xEE, + 0x12, 0xBF, 0x2D, 0x5B, 0x0B, 0x74, 0x74, 0xD6, 0xE6, 0x94, 0xF9, 0x1E, + 0x6D, 0xBE, 0x11, 0x59, 0x74, 0xA3, 0x92, 0x6F, 0x12, 0xFE, 0xE5, 0xE4, + 0x38, 0x77, 0x7C, 0xB6, 0xA9, 0x32, 0xDF, 0x8C, 0xD8, 0xBE, 0xC4, 0xD0, + 0x73, 0xB9, 0x31, 0xBA, 0x3B, 0xC8, 0x32, 0xB6, 0x8D, 0x9D, 0xD3, 0x00, + 0x74, 0x1F, 0xA7, 0xBF, 0x8A, 0xFC, 0x47, 0xED, 0x25, 0x76, 0xF6, 0x93, + 0x6B, 0xA4, 0x24, 0x66, 0x3A, 0xAB, 0x63, 0x9C, 0x5A, 0xE4, 0xF5, 0x68, + 0x34, 0x23, 0xB4, 0x74, 0x2B, 0xF1, 0xC9, 0x78, 0x23, 0x8F, 0x16, 0xCB, + 0xE3, 0x9D, 0x65, 0x2D, 0xE3, 0xFD, 0xB8, 0xBE, 0xFC, 0x84, 0x8A, 0xD9, + 0x22, 0x22, 0x2E, 0x04, 0xA4, 0x03, 0x7C, 0x07, 0x13, 0xEB, 0x57, 0xA8, + 0x1A, 0x23, 0xF0, 0xC7, 0x34, 0x73, 0xFC, 0x64, 0x6C, 0xEA, 0x30, 0x6B, + 0x4B, 0xCB, 0xC8, 0x86, 0x2F, 0x83, 0x85, 0xDD, 0xFA, 0x9D, 0x4B, 0x7F, + 0xA2, 0xC0, 0x87, 0xE8, 0x79, 0x68, 0x33, 0x03, 0xED, 0x5B, 0xDD, 0x3A, + 0x06, 0x2B, 0x3C, 0xF5, 0xB3, 0xA2, 0x78, 0xA6, 0x6D, 0x2A, 0x13, 0xF8, + 0x3F, 0x44, 0xF8, 0x2D, 0xDF, 0x31, 0x0E, 0xE0, 0x74, 0xAB, 0x6A, 0x36, + 0x45, 0x97, 0xE8, 0x99, 0xA0, 0x25, 0x5D, 0xC1, 0x64, 0xF3, 0x1C, 0xC5, + 0x08, 0x46, 0x85, 0x1D, 0xF9, 0xAB, 0x48, 0x19, 0x5D, 0xED, 0x7E, 0xA1, + 0xB1, 0xD5, 0x10, 0xBD, 0x7E, 0xE7, 0x4D, 0x73, 0xFA, 0xF3, 0x6B, 0xC3, + 0x1E, 0xCF, 0xA2, 0x68, 0x35, 0x90, 0x46, 0xF4, 0xEB, 0x87, 0x9F, 0x92, + 0x40, 0x09, 0x43, 0x8B, 0x48, 0x1C, 0x6C, 0xD7, 0x88, 0x9A, 0x00, 0x2E, + 0xD5, 0xEE, 0x38, 0x2B, 0xC9, 0x19, 0x0D, 0xA6, 0xFC, 0x02, 0x6E, 0x47, + 0x95, 0x58, 0xE4, 0x47, 0x56, 0x77, 0xE9, 0xAA, 0x9E, 0x30, 0x50, 0xE2, + 0x76, 0x56, 0x94, 0xDF, 0xC8, 0x1F, 0x56, 0xE8, 0x80, 0xB9, 0x6E, 0x71, + 0x60, 0xC9, 0x80, 0xDD, 0x98, 0xED, 0xD3, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF }; -const gnutls_datum_t gnutls_srp_8192_group_prime = { - (void *)srp_params_8192, sizeof(srp_params_8192) -}; +const gnutls_datum_t gnutls_srp_8192_group_prime = { (void *)srp_params_8192, + sizeof(srp_params_8192) }; const gnutls_datum_t gnutls_srp_8192_group_generator = { (void *)&srp8192_generator, sizeof(srp8192_generator) @@ -807,27 +678,25 @@ const gnutls_datum_t gnutls_srp_8192_group_generator = { /* Check if G and N are parameters from the SRP draft. */ -static int -check_g_n(const uint8_t * g, size_t n_g, const uint8_t * n, size_t n_n) +static int check_g_n(const uint8_t *g, size_t n_g, const uint8_t *n, size_t n_n) { - if (n_n == sizeof(srp_params_8192)) { - if (memcmp(srp_params_8192, n, n_n) == 0 && - n_g == 1 && g[0] == srp8192_generator) + if (memcmp(srp_params_8192, n, n_n) == 0 && n_g == 1 && + g[0] == srp8192_generator) return 0; return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); } if (n_n == sizeof(srp_params_4096)) { - if (memcmp(srp_params_4096, n, n_n) == 0 && - n_g == 1 && g[0] == srp3072_generator) + if (memcmp(srp_params_4096, n, n_n) == 0 && n_g == 1 && + g[0] == srp3072_generator) return 0; return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); } if (n_n == sizeof(srp_params_3072)) { - if (memcmp(srp_params_3072, n, n_n) == 0 && - n_g == 1 && g[0] == srp3072_generator) + if (memcmp(srp_params_3072, n, n_n) == 0 && n_g == 1 && + g[0] == srp3072_generator) return 0; return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); } @@ -859,9 +728,8 @@ check_g_n(const uint8_t * g, size_t n_g, const uint8_t * n, size_t n_n) /* receive the key exchange message ( n, g, s, B) */ -int -_gnutls_proc_srp_server_kx(gnutls_session_t session, uint8_t * data, - size_t _data_size) +int _gnutls_proc_srp_server_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size) { uint8_t n_s; uint16_t n_g, n_n, n_b; @@ -885,8 +753,8 @@ _gnutls_proc_srp_server_kx(gnutls_session_t session, uint8_t * data, } priv = epriv; - cred = (gnutls_srp_client_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_SRP); + cred = (gnutls_srp_client_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_SRP); if (cred == NULL) { gnutls_assert(); @@ -987,22 +855,21 @@ _gnutls_proc_srp_server_kx(gnutls_session_t session, uint8_t * data, /* generate x = SHA(s | SHA(U | ":" | p)) * (or the equivalent using bcrypt) */ - if ((ret = - _gnutls_calc_srp_x(username, password, (uint8_t *) data_s, - n_s, &_n_g, hd)) < 0) { + if ((ret = _gnutls_calc_srp_x(username, password, (uint8_t *)data_s, + n_s, &_n_g, hd)) < 0) { gnutls_assert(); return ret; } - if (_gnutls_mpi_init_scan_nz(&session->key.proto.tls12.srp.x, hd, _n_g) - != 0) { + if (_gnutls_mpi_init_scan_nz(&session->key.proto.tls12.srp.x, hd, + _n_g) != 0) { gnutls_assert(); return GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER; } - return i; /* return the processed data + return i; /* return the processed data * needed in auth_srp_rsa. */ } -#endif /* ENABLE_SRP */ +#endif /* ENABLE_SRP */ diff --git a/lib/auth/srp_kx.h b/lib/auth/srp_kx.h index 1a7de64e0a..f4fd7eca70 100644 --- a/lib/auth/srp_kx.h +++ b/lib/auth/srp_kx.h @@ -21,11 +21,11 @@ */ #ifndef GNUTLS_LIB_AUTH_SRP_KX_H -# define GNUTLS_LIB_AUTH_SRP_KX_H +#define GNUTLS_LIB_AUTH_SRP_KX_H -# include +#include -# define MAX_FAKE_SALT_SEED_SIZE 64 +#define MAX_FAKE_SALT_SEED_SIZE 64 typedef struct gnutls_srp_client_credentials_st { char *username; @@ -50,11 +50,11 @@ typedef struct srp_server_auth_info_st { char *username; } *srp_server_auth_info_t; -# ifdef ENABLE_SRP +#ifdef ENABLE_SRP -int _gnutls_proc_srp_server_hello(gnutls_session_t state, - const uint8_t * data, size_t data_size); -int _gnutls_gen_srp_server_hello(gnutls_session_t state, uint8_t * data, +int _gnutls_proc_srp_server_hello(gnutls_session_t state, const uint8_t *data, + size_t data_size); +int _gnutls_gen_srp_server_hello(gnutls_session_t state, uint8_t *data, size_t data_size); int _gnutls_gen_srp_server_kx(gnutls_session_t, gnutls_buffer_st *); @@ -67,8 +67,8 @@ typedef struct srp_server_auth_info_st srp_server_auth_info_st; /* MAC algorithm used to generate fake salts for unknown usernames */ -# define SRP_FAKE_SALT_MAC GNUTLS_MAC_SHA1 +#define SRP_FAKE_SALT_MAC GNUTLS_MAC_SHA1 -# endif /* ENABLE_SRP */ +#endif /* ENABLE_SRP */ -#endif /* GNUTLS_LIB_AUTH_SRP_KX_H */ +#endif /* GNUTLS_LIB_AUTH_SRP_KX_H */ diff --git a/lib/auth/srp_passwd.c b/lib/auth/srp_passwd.c index ac375b339a..a3766d477e 100644 --- a/lib/auth/srp_passwd.c +++ b/lib/auth/srp_passwd.c @@ -26,28 +26,28 @@ #ifdef ENABLE_SRP -# include "x509_b64.h" -# include "errors.h" -# include -# include -# include "auth.h" -# include "srp.h" -# include "dh.h" -# include "debug.h" -# include -# include -# include -# include -# include - -static int _randomize_pwd_entry(SRP_PWD_ENTRY * entry, +#include "x509_b64.h" +#include "errors.h" +#include +#include +#include "auth.h" +#include "srp.h" +#include "dh.h" +#include "debug.h" +#include +#include +#include +#include +#include + +static int _randomize_pwd_entry(SRP_PWD_ENTRY *entry, gnutls_srp_server_credentials_t cred, const char *username); /* this function parses tpasswd.conf file. Format is: * string(username):base64(v):base64(salt):int(index) */ -static int parse_tpasswd_values(SRP_PWD_ENTRY * entry, char *str) +static int parse_tpasswd_values(SRP_PWD_ENTRY *entry, char *str) { char *p; int len, ret; @@ -55,7 +55,7 @@ static int parse_tpasswd_values(SRP_PWD_ENTRY * entry, char *str) size_t verifier_size; int indx; - p = strrchr(str, ':'); /* we have index */ + p = strrchr(str, ':'); /* we have index */ if (p == NULL) { gnutls_assert(); return GNUTLS_E_SRP_PWD_PARSING_ERROR; @@ -71,7 +71,7 @@ static int parse_tpasswd_values(SRP_PWD_ENTRY * entry, char *str) } /* now go for salt */ - p = strrchr(str, ':'); /* we have salt */ + p = strrchr(str, ':'); /* we have salt */ if (p == NULL) { gnutls_assert(); return GNUTLS_E_SRP_PWD_PARSING_ERROR; @@ -90,7 +90,7 @@ static int parse_tpasswd_values(SRP_PWD_ENTRY * entry, char *str) } /* now go for verifier */ - p = strrchr(str, ':'); /* we have verifier */ + p = strrchr(str, ':'); /* we have verifier */ if (p == NULL) { _gnutls_free_datum(&entry->salt); return GNUTLS_E_SRP_PWD_PARSING_ERROR; @@ -128,14 +128,14 @@ static int parse_tpasswd_values(SRP_PWD_ENTRY * entry, char *str) /* this function parses tpasswd.conf file. Format is: * int(index):base64(n):int(g) */ -static int parse_tpasswd_conf_values(SRP_PWD_ENTRY * entry, char *str) +static int parse_tpasswd_conf_values(SRP_PWD_ENTRY *entry, char *str) { char *p; int len; uint8_t *tmp; int ret; - p = strrchr(str, ':'); /* we have g */ + p = strrchr(str, ':'); /* we have g */ if (p == NULL) { gnutls_assert(); return GNUTLS_E_SRP_PWD_PARSING_ERROR; @@ -159,7 +159,7 @@ static int parse_tpasswd_conf_values(SRP_PWD_ENTRY * entry, char *str) entry->g.size = ret; /* now go for n - modulo */ - p = strrchr(str, ':'); /* we have n */ + p = strrchr(str, ':'); /* we have n */ if (p == NULL) { _gnutls_free_datum(&entry->g); gnutls_assert(); @@ -187,7 +187,7 @@ static int parse_tpasswd_conf_values(SRP_PWD_ENTRY * entry, char *str) /* this function opens the tpasswd.conf file and reads the g and n * values. They are put in the entry. */ -static int pwd_read_conf(const char *pconf_file, SRP_PWD_ENTRY * entry, int idx) +static int pwd_read_conf(const char *pconf_file, SRP_PWD_ENTRY *entry, int idx) { FILE *fp; char *line = NULL; @@ -208,8 +208,8 @@ static int pwd_read_conf(const char *pconf_file, SRP_PWD_ENTRY * entry, int idx) while (getline(&line, &line_size, fp) > 0) { /* move to first ':' */ i = 0; - while ((i < line_size) && (line[i] != ':') - && (line[i] != '\0')) { + while ((i < line_size) && (line[i] != ':') && + (line[i] != '\0')) { i++; } @@ -225,17 +225,15 @@ static int pwd_read_conf(const char *pconf_file, SRP_PWD_ENTRY * entry, int idx) } ret = GNUTLS_E_SRP_PWD_ERROR; - cleanup: +cleanup: zeroize_key(line, line_size); free(line); fclose(fp); return ret; - } -int -_gnutls_srp_pwd_read_entry(gnutls_session_t state, char *username, - SRP_PWD_ENTRY ** _entry) +int _gnutls_srp_pwd_read_entry(gnutls_session_t state, char *username, + SRP_PWD_ENTRY **_entry) { gnutls_srp_server_credentials_t cred; FILE *fp = NULL; @@ -253,8 +251,8 @@ _gnutls_srp_pwd_read_entry(gnutls_session_t state, char *username, } entry = *_entry; - cred = (gnutls_srp_server_credentials_t) - _gnutls_get_cred(state, GNUTLS_CRD_SRP); + cred = (gnutls_srp_server_credentials_t)_gnutls_get_cred( + state, GNUTLS_CRD_SRP); if (cred == NULL) { gnutls_assert(); ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS; @@ -268,10 +266,10 @@ _gnutls_srp_pwd_read_entry(gnutls_session_t state, char *username, ret = cred->pwd_callback(state, username, &entry->salt, &entry->v, &entry->g, &entry->n); - if (ret == 1) { /* the user does not exist */ + if (ret == 1) { /* the user does not exist */ if (entry->g.size != 0 && entry->n.size != 0) { - ret = - _randomize_pwd_entry(entry, cred, username); + ret = _randomize_pwd_entry(entry, cred, + username); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -279,7 +277,7 @@ _gnutls_srp_pwd_read_entry(gnutls_session_t state, char *username, return 0; } else { gnutls_assert(); - ret = -1; /* error in the callback */ + ret = -1; /* error in the callback */ } } @@ -314,8 +312,8 @@ _gnutls_srp_pwd_read_entry(gnutls_session_t state, char *username, while (getline(&line, &line_size, fp) > 0) { /* move to first ':' */ i = 0; - while ((i < line_size) && (line[i] != '\0') - && (line[i] != ':')) { + while ((i < line_size) && (line[i] != '\0') && + (line[i] != ':')) { i++; } @@ -324,9 +322,8 @@ _gnutls_srp_pwd_read_entry(gnutls_session_t state, char *username, /* Keep the last index in memory, so we can retrieve fake parameters (g,n) * when the user does not exist. */ - if (pwd_read_conf - (cred->password_conf_file, entry, - idx) == 0) { + if (pwd_read_conf(cred->password_conf_file, + entry, idx) == 0) { ret = 0; goto found; } else { @@ -358,11 +355,11 @@ _gnutls_srp_pwd_read_entry(gnutls_session_t state, char *username, ret = GNUTLS_E_SRP_PWD_ERROR; - cleanup: +cleanup: gnutls_assert(); _gnutls_srp_entry_free(entry); - found: +found: if (line) { zeroize_key(line, line_size); free(line); @@ -376,7 +373,7 @@ _gnutls_srp_pwd_read_entry(gnutls_session_t state, char *username, * to random data and sets the salt based on fake_salt_seed and * username. Returns 0 on success. */ -static int _randomize_pwd_entry(SRP_PWD_ENTRY * entry, +static int _randomize_pwd_entry(SRP_PWD_ENTRY *entry, gnutls_srp_server_credentials_t sc, const char *username) { @@ -439,7 +436,7 @@ static int _randomize_pwd_entry(SRP_PWD_ENTRY * entry, /* Free all the entry parameters, except if g and n are * the static ones defined in gnutls.h */ -void _gnutls_srp_entry_free(SRP_PWD_ENTRY * entry) +void _gnutls_srp_entry_free(SRP_PWD_ENTRY *entry) { _gnutls_free_key_datum(&entry->v); _gnutls_free_datum(&entry->salt); @@ -464,4 +461,4 @@ void _gnutls_srp_entry_free(SRP_PWD_ENTRY * entry) gnutls_free(entry); } -#endif /* ENABLE SRP */ +#endif /* ENABLE SRP */ diff --git a/lib/auth/srp_passwd.h b/lib/auth/srp_passwd.h index d9d97bc011..05270a273b 100644 --- a/lib/auth/srp_passwd.h +++ b/lib/auth/srp_passwd.h @@ -21,9 +21,9 @@ */ #ifndef GNUTLS_LIB_AUTH_SRP_PASSWD_H -# define GNUTLS_LIB_AUTH_SRP_PASSWD_H +#define GNUTLS_LIB_AUTH_SRP_PASSWD_H -# ifdef ENABLE_SRP +#ifdef ENABLE_SRP typedef struct { char *username; @@ -37,9 +37,9 @@ typedef struct { /* this is locally allocated. It should be freed using the provided function */ int _gnutls_srp_pwd_read_entry(gnutls_session_t state, char *username, SRP_PWD_ENTRY **); -void _gnutls_srp_entry_free(SRP_PWD_ENTRY * entry); -int _gnutls_sbase64_decode(char *data, size_t data_size, uint8_t ** result); +void _gnutls_srp_entry_free(SRP_PWD_ENTRY *entry); +int _gnutls_sbase64_decode(char *data, size_t data_size, uint8_t **result); -# endif /* ENABLE_SRP */ +#endif /* ENABLE_SRP */ -#endif /* GNUTLS_LIB_AUTH_SRP_PASSWD_H */ +#endif /* GNUTLS_LIB_AUTH_SRP_PASSWD_H */ diff --git a/lib/auth/srp_rsa.c b/lib/auth/srp_rsa.c index 13b2664608..1a16f46996 100644 --- a/lib/auth/srp_rsa.c +++ b/lib/auth/srp_rsa.c @@ -24,60 +24,56 @@ #ifdef ENABLE_SRP -# include "errors.h" -# include -# include "auth.h" -# include "auth.h" -# include "srp.h" -# include "debug.h" -# include "num.h" -# include -# include -# include -# include -# include -# include -# include +#include "errors.h" +#include +#include "auth.h" +#include "auth.h" +#include "srp.h" +#include "debug.h" +#include "num.h" +#include +#include +#include +#include +#include +#include +#include static int gen_srp_cert_server_kx(gnutls_session_t, gnutls_buffer_st *); static int proc_srp_cert_server_kx(gnutls_session_t, uint8_t *, size_t); -const mod_auth_st srp_rsa_auth_struct = { - "SRP", - _gnutls_gen_cert_server_crt, - NULL, - gen_srp_cert_server_kx, - _gnutls_gen_srp_client_kx, - NULL, - NULL, - - _gnutls_proc_crt, - NULL, /* certificate */ - proc_srp_cert_server_kx, - _gnutls_proc_srp_client_kx, - NULL, - NULL -}; - -const mod_auth_st srp_dss_auth_struct = { - "SRP", - _gnutls_gen_cert_server_crt, - NULL, - gen_srp_cert_server_kx, - _gnutls_gen_srp_client_kx, - NULL, - NULL, - - _gnutls_proc_crt, - NULL, /* certificate */ - proc_srp_cert_server_kx, - _gnutls_proc_srp_client_kx, - NULL, - NULL -}; - -static int -gen_srp_cert_server_kx(gnutls_session_t session, gnutls_buffer_st * data) +const mod_auth_st srp_rsa_auth_struct = { "SRP", + _gnutls_gen_cert_server_crt, + NULL, + gen_srp_cert_server_kx, + _gnutls_gen_srp_client_kx, + NULL, + NULL, + + _gnutls_proc_crt, + NULL, /* certificate */ + proc_srp_cert_server_kx, + _gnutls_proc_srp_client_kx, + NULL, + NULL }; + +const mod_auth_st srp_dss_auth_struct = { "SRP", + _gnutls_gen_cert_server_crt, + NULL, + gen_srp_cert_server_kx, + _gnutls_gen_srp_client_kx, + NULL, + NULL, + + _gnutls_proc_crt, + NULL, /* certificate */ + proc_srp_cert_server_kx, + _gnutls_proc_srp_client_kx, + NULL, + NULL }; + +static int gen_srp_cert_server_kx(gnutls_session_t session, + gnutls_buffer_st *data) { ssize_t ret; gnutls_datum_t signature, ddata; @@ -102,25 +98,24 @@ gen_srp_cert_server_kx(gnutls_session_t session, gnutls_buffer_st * data) ddata.data = &data->data[init_pos]; ddata.size = data->length - init_pos; - cred = (gnutls_certificate_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_CERTIFICATE); + cred = (gnutls_certificate_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_CERTIFICATE); if (cred == NULL) { gnutls_assert(); return GNUTLS_E_INSUFFICIENT_CREDENTIALS; } /* find the appropriate certificate */ - if ((ret = - _gnutls_get_selected_cert(session, &apr_cert_list, - &apr_cert_list_length, &apr_pkey)) < 0) { + if ((ret = _gnutls_get_selected_cert(session, &apr_cert_list, + &apr_cert_list_length, + &apr_pkey)) < 0) { gnutls_assert(); return ret; } - if ((ret = - _gnutls_handshake_sign_data(session, &apr_cert_list[0], - apr_pkey, &ddata, &signature, - &sign_algo)) < 0) { + if ((ret = _gnutls_handshake_sign_data(session, &apr_cert_list[0], + apr_pkey, &ddata, &signature, + &sign_algo)) < 0) { gnutls_assert(); return ret; } @@ -151,9 +146,8 @@ gen_srp_cert_server_kx(gnutls_session_t session, gnutls_buffer_st * data) } } - ret = - _gnutls_buffer_append_data_prefix(data, 16, signature.data, - signature.size); + ret = _gnutls_buffer_append_data_prefix(data, 16, signature.data, + signature.size); if (ret < 0) { gnutls_assert(); @@ -162,14 +156,13 @@ gen_srp_cert_server_kx(gnutls_session_t session, gnutls_buffer_st * data) ret = data->length - init_pos; - cleanup: +cleanup: _gnutls_free_datum(&signature); return ret; } -static int -proc_srp_cert_server_kx(gnutls_session_t session, uint8_t * data, - size_t _data_size) +static int proc_srp_cert_server_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size) { ssize_t ret; int sigsize; @@ -192,15 +185,15 @@ proc_srp_cert_server_kx(gnutls_session_t session, uint8_t * data, data_size = _data_size - ret; - cred = (gnutls_certificate_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_CERTIFICATE); + cred = (gnutls_certificate_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_CERTIFICATE); if (cred == NULL) { gnutls_assert(); return GNUTLS_E_INSUFFICIENT_CREDENTIALS; } - vflags = - cred->verify_flags | session->internals.additional_verify_flags; + vflags = cred->verify_flags | + session->internals.additional_verify_flags; info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE); if (info == NULL || info->ncerts == 0) { @@ -211,7 +204,7 @@ proc_srp_cert_server_kx(gnutls_session_t session, uint8_t * data, /* VERIFY SIGNATURE */ - vparams.size = ret; /* all the data minus the signature */ + vparams.size = ret; /* all the data minus the signature */ vparams.data = data; p = &data[vparams.size]; @@ -239,19 +232,16 @@ proc_srp_cert_server_kx(gnutls_session_t session, uint8_t * data, signature.data = &p[2]; signature.size = sigsize; - ret = - _gnutls_get_auth_info_pcert(&peer_cert, - session-> - security_parameters.server_ctype, info); + ret = _gnutls_get_auth_info_pcert( + &peer_cert, session->security_parameters.server_ctype, info); if (ret < 0) { gnutls_assert(); return ret; } - ret = - _gnutls_handshake_verify_data(session, vflags, &peer_cert, &vparams, - &signature, sign_algo); + ret = _gnutls_handshake_verify_data(session, vflags, &peer_cert, + &vparams, &signature, sign_algo); gnutls_pcert_deinit(&peer_cert); if (ret < 0) { @@ -262,4 +252,4 @@ proc_srp_cert_server_kx(gnutls_session_t session, uint8_t * data, return 0; } -#endif /* ENABLE_SRP */ +#endif /* ENABLE_SRP */ diff --git a/lib/auth/srp_sb64.c b/lib/auth/srp_sb64.c index 34835b66c1..6683ac3d31 100644 --- a/lib/auth/srp_sb64.c +++ b/lib/auth/srp_sb64.c @@ -32,36 +32,24 @@ * It seems that everybody makes their own base64 conversion. */ static const uint8_t b64table[] = - "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz./"; + "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz./"; static const uint8_t asciitable[128] = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0x3e, 0x3f, - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, - 0x06, 0x07, 0x08, 0x09, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x0a, - 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, - 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, - 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, - 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, - 0x23, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0x24, 0x25, 0x26, 0x27, 0x28, - 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, - 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, - 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, - 0x3b, 0x3c, 0x3d, 0xff, 0xff, 0xff, - 0xff, 0xff + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3e, 0x3f, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, + 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, + 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, + 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, + 0x3b, 0x3c, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff }; -inline static int encode(uint8_t * result, const uint8_t * rdata, unsigned left) +inline static int encode(uint8_t *result, const uint8_t *rdata, unsigned left) { - int data_len; int c, ret = 4; uint8_t data[3]; @@ -78,26 +66,23 @@ inline static int encode(uint8_t * result, const uint8_t * rdata, unsigned left) case 3: result[0] = b64table[((data[0] & 0xfc) >> 2)]; result[1] = - b64table[(((((data[0] & 0x03) & 0xff) << 4) & 0xff) | - ((data[1] & 0xf0) >> 4))]; - result[2] = - b64table[((((data[1] & 0x0f) << 2) & 0xff) | - ((data[2] & 0xc0) >> 6))]; + b64table[(((((data[0] & 0x03) & 0xff) << 4) & 0xff) | + ((data[1] & 0xf0) >> 4))]; + result[2] = b64table[((((data[1] & 0x0f) << 2) & 0xff) | + ((data[2] & 0xc0) >> 6))]; result[3] = b64table[(data[2] & 0x3f) & 0xff]; break; case 2: if ((c = ((data[0] & 0xf0) >> 4)) != 0) { result[0] = b64table[c]; - result[1] = - b64table[((((data[0] & 0x0f) << 2) & 0xff) | - ((data[1] & 0xc0) >> 6))]; + result[1] = b64table[((((data[0] & 0x0f) << 2) & 0xff) | + ((data[1] & 0xc0) >> 6))]; result[2] = b64table[(data[1] & 0x3f) & 0xff]; result[3] = '\0'; ret -= 1; } else { - if ((c = - ((data[0] & 0x0f) << 2) | ((data[1] & 0xc0) >> - 6)) != 0) { + if ((c = ((data[0] & 0x0f) << 2) | + ((data[1] & 0xc0) >> 6)) != 0) { result[0] = b64table[c]; result[1] = b64table[data[1] & 0x3f]; result[2] = '\0'; @@ -132,14 +117,13 @@ inline static int encode(uint8_t * result, const uint8_t * rdata, unsigned left) } return ret; - } /* encodes data and puts the result into result (locally allocated) * The result_size is the return value */ -static int -_gnutls_sbase64_encode(uint8_t * data, size_t data_size, char **result) +static int _gnutls_sbase64_encode(uint8_t *data, size_t data_size, + char **result) { unsigned i, j; int ret, tmp; @@ -159,7 +143,7 @@ _gnutls_sbase64_encode(uint8_t * data, size_t data_size, char **result) return GNUTLS_E_MEMORY_ERROR; i = j = 0; -/* encode the bytes that are not a multiple of 3 + /* encode the bytes that are not a multiple of 3 */ if (mod > 0) { tmp = encode(tmpres, &data[0], mod); @@ -171,9 +155,8 @@ _gnutls_sbase64_encode(uint8_t * data, size_t data_size, char **result) memcpy(&(*result)[0], tmpres, tmp); i = mod; j = tmp; - } -/* encode the rest + /* encode the rest */ for (; i < data_size; i += 3, j += 4) { tmp = encode(tmpres, &data[i], data_size - i); @@ -190,8 +173,8 @@ _gnutls_sbase64_encode(uint8_t * data, size_t data_size, char **result) /* data must be 4 bytes * result should be 3 bytes */ -# define TOASCII(c) (c < 127 ? asciitable[c] : 0xff) -inline static int decode(uint8_t * result, const uint8_t * data) +#define TOASCII(c) (c < 127 ? asciitable[c] : 0xff) +inline static int decode(uint8_t *result, const uint8_t *data) { uint8_t a1, a2; int ret = 3; @@ -233,7 +216,7 @@ inline static int decode(uint8_t * result, const uint8_t * data) * That function does not ignore newlines tabs etc. You should remove them * before calling it. */ -int _gnutls_sbase64_decode(char *data, size_t idata_size, uint8_t ** result) +int _gnutls_sbase64_decode(char *data, size_t idata_size, uint8_t **result) { unsigned i, j; int ret, left; @@ -272,7 +255,7 @@ int _gnutls_sbase64_decode(char *data, size_t idata_size, uint8_t ** result) /* rest data */ for (i = left, j = tmp; i < idata_size; i += 4) { - tmp = decode(tmpres, (uint8_t *) & data[i]); + tmp = decode(tmpres, (uint8_t *)&data[i]); if (tmp < 0) { gnutls_free((*result)); return tmp; @@ -303,9 +286,8 @@ int _gnutls_sbase64_decode(char *data, size_t idata_size, uint8_t ** result) * Returns: %GNUTLS_E_SHORT_MEMORY_BUFFER if the buffer given is not * long enough, or 0 on success. **/ -int -gnutls_srp_base64_encode(const gnutls_datum_t * data, char *result, - size_t *result_size) +int gnutls_srp_base64_encode(const gnutls_datum_t *data, char *result, + size_t *result_size) { char *res; int size; @@ -344,8 +326,8 @@ gnutls_srp_base64_encode(const gnutls_datum_t * data, char *result, * * Returns: 0 on success, or an error code. **/ -int -gnutls_srp_base64_encode2(const gnutls_datum_t * data, gnutls_datum_t * result) +int gnutls_srp_base64_encode2(const gnutls_datum_t *data, + gnutls_datum_t *result) { char *res; int size; @@ -358,7 +340,7 @@ gnutls_srp_base64_encode2(const gnutls_datum_t * data, gnutls_datum_t * result) gnutls_free(res); return GNUTLS_E_INVALID_REQUEST; } else { - result->data = (uint8_t *) res; + result->data = (uint8_t *)res; result->size = size; } @@ -382,16 +364,14 @@ gnutls_srp_base64_encode2(const gnutls_datum_t * data, gnutls_datum_t * result) * Returns: %GNUTLS_E_SHORT_MEMORY_BUFFER if the buffer given is not * long enough, or 0 on success. **/ -int -gnutls_srp_base64_decode(const gnutls_datum_t * b64_data, char *result, - size_t *result_size) +int gnutls_srp_base64_decode(const gnutls_datum_t *b64_data, char *result, + size_t *result_size) { uint8_t *res; int size; - size = - _gnutls_sbase64_decode((char *)b64_data->data, b64_data->size, - &res); + size = _gnutls_sbase64_decode((char *)b64_data->data, b64_data->size, + &res); if (size < 0) return size; @@ -424,16 +404,14 @@ gnutls_srp_base64_decode(const gnutls_datum_t * b64_data, char *result, * * Returns: 0 on success, or an error code. **/ -int -gnutls_srp_base64_decode2(const gnutls_datum_t * b64_data, - gnutls_datum_t * result) +int gnutls_srp_base64_decode2(const gnutls_datum_t *b64_data, + gnutls_datum_t *result) { uint8_t *ret; int size; - size = - _gnutls_sbase64_decode((char *)b64_data->data, b64_data->size, - &ret); + size = _gnutls_sbase64_decode((char *)b64_data->data, b64_data->size, + &ret); if (size < 0) return size; @@ -450,34 +428,30 @@ gnutls_srp_base64_decode2(const gnutls_datum_t * b64_data, #else -int -gnutls_srp_base64_encode(const gnutls_datum_t * data MAYBE_UNUSED, - char *result MAYBE_UNUSED, - size_t *result_size MAYBE_UNUSED) +int gnutls_srp_base64_encode(const gnutls_datum_t *data MAYBE_UNUSED, + char *result MAYBE_UNUSED, + size_t *result_size MAYBE_UNUSED) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int -gnutls_srp_base64_encode2(const gnutls_datum_t * data MAYBE_UNUSED, - gnutls_datum_t * result MAYBE_UNUSED) +int gnutls_srp_base64_encode2(const gnutls_datum_t *data MAYBE_UNUSED, + gnutls_datum_t *result MAYBE_UNUSED) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int -gnutls_srp_base64_decode(const gnutls_datum_t * b64_data MAYBE_UNUSED, - char *result MAYBE_UNUSED, - size_t *result_size MAYBE_UNUSED) +int gnutls_srp_base64_decode(const gnutls_datum_t *b64_data MAYBE_UNUSED, + char *result MAYBE_UNUSED, + size_t *result_size MAYBE_UNUSED) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int -gnutls_srp_base64_decode2(const gnutls_datum_t * b64_data MAYBE_UNUSED, - gnutls_datum_t * result MAYBE_UNUSED) +int gnutls_srp_base64_decode2(const gnutls_datum_t *b64_data MAYBE_UNUSED, + gnutls_datum_t *result MAYBE_UNUSED) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -#endif /* ENABLE_SRP */ +#endif /* ENABLE_SRP */ diff --git a/lib/auth/vko_gost.c b/lib/auth/vko_gost.c index 45503708aa..cd8dc11cfa 100644 --- a/lib/auth/vko_gost.c +++ b/lib/auth/vko_gost.c @@ -33,8 +33,8 @@ #if defined(ENABLE_GOST) static int gen_vko_gost_client_kx(gnutls_session_t, gnutls_buffer_st *); -static int proc_vko_gost_client_kx(gnutls_session_t session, - uint8_t * data, size_t _data_size); +static int proc_vko_gost_client_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size); /* VKO GOST Key Exchange: * see draft-smyshlyaev-tls12-gost-suites-06, Section 4.2.4 @@ -51,26 +51,24 @@ static int proc_vko_gost_client_kx(gnutls_session_t session, * Note, this KX is not PFS one, despite using ephemeral key pairs on client * side. */ -const mod_auth_st vko_gost_auth_struct = { - "VKO_GOST", - _gnutls_gen_cert_server_crt, - _gnutls_gen_cert_client_crt, - NULL, - gen_vko_gost_client_kx, - _gnutls_gen_cert_client_crt_vrfy, - _gnutls_gen_cert_server_cert_req, - - _gnutls_proc_crt, - _gnutls_proc_crt, - NULL, - proc_vko_gost_client_kx, - _gnutls_proc_cert_client_crt_vrfy, - _gnutls_proc_cert_cert_req -}; - -# define VKO_GOST_UKM_LEN 8 - -static int calc_ukm(gnutls_session_t session, uint8_t * ukm) +const mod_auth_st vko_gost_auth_struct = { "VKO_GOST", + _gnutls_gen_cert_server_crt, + _gnutls_gen_cert_client_crt, + NULL, + gen_vko_gost_client_kx, + _gnutls_gen_cert_client_crt_vrfy, + _gnutls_gen_cert_server_cert_req, + + _gnutls_proc_crt, + _gnutls_proc_crt, + NULL, + proc_vko_gost_client_kx, + _gnutls_proc_cert_client_crt_vrfy, + _gnutls_proc_cert_cert_req }; + +#define VKO_GOST_UKM_LEN 8 + +static int calc_ukm(gnutls_session_t session, uint8_t *ukm) { gnutls_digest_algorithm_t digalg = GNUTLS_DIG_STREEBOG_256; gnutls_hash_hd_t dig; @@ -91,7 +89,7 @@ static int calc_ukm(gnutls_session_t session, uint8_t * ukm) return gnutls_hash_get_len(digalg); } -static int print_priv_key(gnutls_pk_params_st * params) +static int print_priv_key(gnutls_pk_params_st *params) { int ret; uint8_t priv_buf[512 / 8]; @@ -106,15 +104,15 @@ static int print_priv_key(gnutls_pk_params_st * params) if (ret < 0) return gnutls_assert_val(ret); - _gnutls_hard_log("INT: VKO PRIVATE KEY[%zd]: %s\n", - bytes, _gnutls_bin2hex(priv_buf, - bytes, buf, sizeof(buf), NULL)); + _gnutls_hard_log("INT: VKO PRIVATE KEY[%zd]: %s\n", bytes, + _gnutls_bin2hex(priv_buf, bytes, buf, sizeof(buf), + NULL)); return 0; } -static int -vko_prepare_client_keys(gnutls_session_t session, - gnutls_pk_params_st * pub, gnutls_pk_params_st * priv) +static int vko_prepare_client_keys(gnutls_session_t session, + gnutls_pk_params_st *pub, + gnutls_pk_params_st *priv) { int ret; gnutls_ecc_curve_t curve; @@ -126,9 +124,8 @@ vko_prepare_client_keys(gnutls_session_t session, if (info == NULL || info->ncerts == 0) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - ret = _gnutls_get_auth_info_pcert(&peer_cert, - session->security_parameters. - server_ctype, info); + ret = _gnutls_get_auth_info_pcert( + &peer_cert, session->security_parameters.server_ctype, info); if (ret < 0) return gnutls_assert_val(ret); @@ -167,7 +164,7 @@ vko_prepare_client_keys(gnutls_session_t session, print_priv_key(priv); - session->key.key.size = 32; /* GOST key size */ + session->key.key.size = 32; /* GOST key size */ session->key.key.data = gnutls_malloc(session->key.key.size); if (session->key.key.data == NULL) { gnutls_assert(); @@ -202,9 +199,8 @@ vko_prepare_client_keys(gnutls_session_t session, _gnutls_gost_keytrans_decrypt will decrypt GostR3410-KeyTransport */ -static int -proc_vko_gost_client_kx(gnutls_session_t session, - uint8_t * data, size_t _data_size) +static int proc_vko_gost_client_kx(gnutls_session_t session, uint8_t *data, + size_t _data_size) { int ret, i = 0; ssize_t data_size = _data_size; @@ -237,7 +233,7 @@ proc_vko_gost_client_kx(gnutls_session_t session, data += i; /* Now do the tricky part: determine length of GostR3410-KeyTransport */ - DECR_LEN(data_size, 1); /* tag */ + DECR_LEN(data_size, 1); /* tag */ ret = asn1_get_length_der(&data[1], data_size, &len); DECR_LEN_FINAL(data_size, len + ret); @@ -248,19 +244,19 @@ proc_vko_gost_client_kx(gnutls_session_t session, if (ret < 0) return gnutls_assert_val(ret); - ret = _gnutls_gost_keytrans_decrypt(&privkey->key.x509->params, - &cek, &ukm, &session->key.key); + ret = _gnutls_gost_keytrans_decrypt(&privkey->key.x509->params, &cek, + &ukm, &session->key.key); if (ret < 0) return gnutls_assert_val(ret); return 0; } -static int -gen_vko_gost_client_kx(gnutls_session_t session, gnutls_buffer_st * data) +static int gen_vko_gost_client_kx(gnutls_session_t session, + gnutls_buffer_st *data) { int ret; - gnutls_datum_t out = { }; + gnutls_datum_t out = {}; uint8_t ukm_data[MAX_HASH_SIZE]; gnutls_datum_t ukm = { ukm_data, VKO_GOST_UKM_LEN }; gnutls_pk_params_st pub; @@ -278,9 +274,8 @@ gen_vko_gost_client_kx(gnutls_session_t session, gnutls_buffer_st * data) if (ret < 0) return gnutls_assert_val(ret); - ret = _gnutls_gost_keytrans_encrypt(&pub, - &priv, - &session->key.key, &ukm, &out); + ret = _gnutls_gost_keytrans_encrypt(&pub, &priv, &session->key.key, + &ukm, &out); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -301,7 +296,7 @@ gen_vko_gost_client_kx(gnutls_session_t session, gnutls_buffer_st * data) } ret = data->length; - cleanup: +cleanup: /* no longer needed */ gnutls_pk_params_release(&priv); gnutls_pk_params_release(&pub); diff --git a/lib/auto-verify.c b/lib/auto-verify.c index 60b390d8f9..5047df4e06 100644 --- a/lib/auto-verify.c +++ b/lib/auto-verify.c @@ -37,12 +37,9 @@ static int auto_verify_cb(gnutls_session_t session) if (session->internals.vc_elements == 0) { ret = gnutls_certificate_verify_peers2(session, &status); } else { - ret = - gnutls_certificate_verify_peers(session, - session->internals.vc_data, - session-> - internals.vc_elements, - &status); + ret = gnutls_certificate_verify_peers( + session, session->internals.vc_data, + session->internals.vc_elements, &status); } if (ret < 0) { return gnutls_assert_val(GNUTLS_E_CERTIFICATE_ERROR); @@ -50,9 +47,9 @@ static int auto_verify_cb(gnutls_session_t session) session->internals.vc_status = status; - if (status != 0) /* Certificate is not trusted */ - return - gnutls_assert_val(GNUTLS_E_CERTIFICATE_VERIFICATION_ERROR); + if (status != 0) /* Certificate is not trusted */ + return gnutls_assert_val( + GNUTLS_E_CERTIFICATE_VERIFICATION_ERROR); /* notify gnutls to continue handshake normally */ return 0; @@ -125,7 +122,7 @@ void gnutls_session_set_verify_cert(gnutls_session_t session, * Since: 3.4.6 **/ void gnutls_session_set_verify_cert2(gnutls_session_t session, - gnutls_typed_vdata_st * data, + gnutls_typed_vdata_st *data, unsigned elements, unsigned flags) { session->internals.vc_data = data; diff --git a/lib/buffers.c b/lib/buffers.c index 957bb5716c..5f5b15fb97 100644 --- a/lib/buffers.c +++ b/lib/buffers.c @@ -48,14 +48,14 @@ #include #include #include -#include /* gnutls_epoch_get */ -#include /* remaining_time() */ +#include /* gnutls_epoch_get */ +#include /* remaining_time() */ #include #include #include "debug.h" #ifndef EAGAIN -# define EAGAIN EWOULDBLOCK +#define EAGAIN EWOULDBLOCK #endif /* this is the maximum number of messages allowed to queue. @@ -65,11 +65,9 @@ /* Buffers received packets of type APPLICATION DATA, * HANDSHAKE DATA and HEARTBEAT. */ -void -_gnutls_record_buffer_put(gnutls_session_t session, - content_type_t type, uint64_t seq, mbuffer_st * bufel) +void _gnutls_record_buffer_put(gnutls_session_t session, content_type_t type, + uint64_t seq, mbuffer_st *bufel) { - bufel->type = type; bufel->record_sequence = seq; @@ -112,10 +110,8 @@ size_t gnutls_record_check_corked(gnutls_session_t session) return session->internals.record_presend_buffer.length; } -int -_gnutls_record_buffer_get(content_type_t type, - gnutls_session_t session, uint8_t * data, - size_t length, uint8_t seq[8]) +int _gnutls_record_buffer_get(content_type_t type, gnutls_session_t session, + uint8_t *data, size_t length, uint8_t seq[8]) { gnutls_datum_t msg; mbuffer_st *bufel; @@ -125,22 +121,24 @@ _gnutls_record_buffer_get(content_type_t type, return GNUTLS_E_INVALID_REQUEST; } - bufel = - _mbuffer_head_get_first(&session->internals.record_buffer, &msg); + bufel = _mbuffer_head_get_first(&session->internals.record_buffer, + &msg); if (bufel == NULL) return gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); if (type != bufel->type) { if (IS_DTLS(session)) - _gnutls_audit_log(session, - "Discarded unexpected %s (%d) packet (expecting: %s (%d))\n", - _gnutls_packet2str(bufel->type), - (int)bufel->type, - _gnutls_packet2str(type), (int)type); + _gnutls_audit_log( + session, + "Discarded unexpected %s (%d) packet (expecting: %s (%d))\n", + _gnutls_packet2str(bufel->type), + (int)bufel->type, _gnutls_packet2str(type), + (int)type); else - _gnutls_debug_log - ("received unexpected packet: %s(%d)\n", - _gnutls_packet2str(bufel->type), (int)bufel->type); + _gnutls_debug_log( + "received unexpected packet: %s(%d)\n", + _gnutls_packet2str(bufel->type), + (int)bufel->type); _mbuffer_head_remove_bytes(&session->internals.record_buffer, msg.size); @@ -159,9 +157,9 @@ _gnutls_record_buffer_get(content_type_t type, return length; } -int -_gnutls_record_buffer_get_packet(content_type_t type, gnutls_session_t session, - gnutls_packet_t * packet) +int _gnutls_record_buffer_get_packet(content_type_t type, + gnutls_session_t session, + gnutls_packet_t *packet) { mbuffer_st *bufel; @@ -171,11 +169,11 @@ _gnutls_record_buffer_get_packet(content_type_t type, gnutls_session_t session, if (type != bufel->type) { if (IS_DTLS(session)) - _gnutls_audit_log(session, - "Discarded unexpected %s (%d) packet (expecting: %s)\n", - _gnutls_packet2str(bufel->type), - (int)bufel->type, - _gnutls_packet2str(type)); + _gnutls_audit_log( + session, + "Discarded unexpected %s (%d) packet (expecting: %s)\n", + _gnutls_packet2str(bufel->type), + (int)bufel->type, _gnutls_packet2str(type)); _mbuffer_head_remove_bytes(&session->internals.record_buffer, bufel->msg.size); return gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET); @@ -198,14 +196,12 @@ inline static int get_errno(gnutls_session_t session) if (session->internals.errnum != 0) ret = session->internals.errnum; else - ret = - session->internals.errno_func(session->internals. - transport_recv_ptr); + ret = session->internals.errno_func( + session->internals.transport_recv_ptr); return ret; } -inline static -int errno_to_gerr(int err, unsigned dtls) +inline static int errno_to_gerr(int err, unsigned dtls) { switch (err) { case EAGAIN: @@ -225,9 +221,8 @@ int errno_to_gerr(int err, unsigned dtls) } } -static ssize_t -_gnutls_dgram_read(gnutls_session_t session, mbuffer_st ** bufel, - gnutls_pull_func pull_func, unsigned int *ms) +static ssize_t _gnutls_dgram_read(gnutls_session_t session, mbuffer_st **bufel, + gnutls_pull_func pull_func, unsigned int *ms) { ssize_t i, ret; uint8_t *ptr; @@ -293,14 +288,14 @@ _gnutls_dgram_read(gnutls_session_t session, mbuffer_st ** bufel, return i; - cleanup: +cleanup: _mbuffer_xfree(bufel); return ret; } -static ssize_t -_gnutls_stream_read(gnutls_session_t session, mbuffer_st ** bufel, - size_t size, gnutls_pull_func pull_func, unsigned int *ms) +static ssize_t _gnutls_stream_read(gnutls_session_t session, mbuffer_st **bufel, + size_t size, gnutls_pull_func pull_func, + unsigned int *ms) { size_t left; ssize_t i = 0; @@ -313,9 +308,8 @@ _gnutls_stream_read(gnutls_session_t session, mbuffer_st ** bufel, session->internals.direction = 0; - *bufel = - _mbuffer_alloc_align16(MAX(max_size, size), - get_total_headers(session)); + *bufel = _mbuffer_alloc_align16(MAX(max_size, size), + get_total_headers(session)); if (!*bufel) { gnutls_assert(); return GNUTLS_E_MEMORY_ERROR; @@ -341,16 +335,15 @@ _gnutls_stream_read(gnutls_session_t session, mbuffer_st ** bufel, if (i < 0) { int err = get_errno(session); - _gnutls_read_log - ("READ: %d returned from %p, errno=%d gerrno=%d\n", - (int)i, fd, errno, session->internals.errnum); + _gnutls_read_log( + "READ: %d returned from %p, errno=%d gerrno=%d\n", + (int)i, fd, errno, session->internals.errnum); if (err == EAGAIN || err == EINTR) { if (size - left > 0) { - - _gnutls_read_log - ("READ: returning %d bytes from %p\n", - (int)(size - left), fd); + _gnutls_read_log( + "READ: returning %d bytes from %p\n", + (int)(size - left), fd); goto finish; } @@ -363,12 +356,11 @@ _gnutls_stream_read(gnutls_session_t session, mbuffer_st ** bufel, goto cleanup; } } else { - - _gnutls_read_log("READ: Got %d bytes from %p\n", - (int)i, fd); + _gnutls_read_log("READ: Got %d bytes from %p\n", (int)i, + fd); if (i == 0) - break; /* EOF */ + break; /* EOF */ } left -= i; @@ -386,17 +378,17 @@ _gnutls_stream_read(gnutls_session_t session, mbuffer_st ** bufel, } } - finish: +finish: - _gnutls_read_log("READ: read %d bytes from %p\n", - (int)(size - left), fd); + _gnutls_read_log("READ: read %d bytes from %p\n", (int)(size - left), + fd); if (size - left == 0) _mbuffer_xfree(bufel); return (size - left); - cleanup: +cleanup: _mbuffer_xfree(bufel); return ret; } @@ -406,9 +398,9 @@ _gnutls_stream_read(gnutls_session_t session, mbuffer_st ** bufel, * * Flags are only used if the default recv() function is being used. */ -static ssize_t -_gnutls_read(gnutls_session_t session, mbuffer_st ** bufel, - size_t size, gnutls_pull_func pull_func, unsigned int *ms) +static ssize_t _gnutls_read(gnutls_session_t session, mbuffer_st **bufel, + size_t size, gnutls_pull_func pull_func, + unsigned int *ms) { if (IS_DTLS(session)) /* Size is not passed, since a whole datagram will be read. */ @@ -420,10 +412,10 @@ _gnutls_read(gnutls_session_t session, mbuffer_st ** bufel, /* @vec: if non-zero then the vector function will be used to * push the data. */ -static ssize_t -_gnutls_writev_emu(gnutls_session_t session, gnutls_transport_ptr_t fd, - const giovec_t * giovec, unsigned int giovec_cnt, - unsigned vec) +static ssize_t _gnutls_writev_emu(gnutls_session_t session, + gnutls_transport_ptr_t fd, + const giovec_t *giovec, + unsigned int giovec_cnt, unsigned vec) { unsigned int j = 0; size_t total = 0; @@ -431,8 +423,8 @@ _gnutls_writev_emu(gnutls_session_t session, gnutls_transport_ptr_t fd, for (j = 0; j < giovec_cnt; j++) { if (vec) { - ret = - session->internals.vec_push_func(fd, &giovec[j], 1); + ret = session->internals.vec_push_func(fd, &giovec[j], + 1); } else { size_t sent = 0; ssize_t left = giovec[j].iov_len; @@ -469,9 +461,8 @@ _gnutls_writev_emu(gnutls_session_t session, gnutls_transport_ptr_t fd, /* @total: The sum of the data in giovec */ -static ssize_t -_gnutls_writev(gnutls_session_t session, const giovec_t * giovec, - unsigned giovec_cnt, unsigned total) +static ssize_t _gnutls_writev(gnutls_session_t session, const giovec_t *giovec, + unsigned giovec_cnt, unsigned total) { int i; bool is_dtls = IS_DTLS(session); @@ -501,8 +492,8 @@ _gnutls_writev(gnutls_session_t session, const giovec_t * giovec, if (i == -1) { int err = get_errno(session); - _gnutls_debug_log("WRITE: %d returned from %p, errno: %d\n", - i, fd, err); + _gnutls_debug_log("WRITE: %d returned from %p, errno: %d\n", i, + fd, err); return errno_to_gerr(err, is_dtls); } @@ -524,9 +515,8 @@ _gnutls_writev(gnutls_session_t session, const giovec_t * giovec, * the given amount of milliseconds or return GNUTLS_E_TIMEDOUT. * */ -ssize_t -_gnutls_io_read_buffered(gnutls_session_t session, size_t total, - content_type_t recv_type, unsigned int *ms) +ssize_t _gnutls_io_read_buffered(gnutls_session_t session, size_t total, + content_type_t recv_type, unsigned int *ms) { ssize_t ret; size_t min; @@ -560,18 +550,17 @@ _gnutls_io_read_buffered(gnutls_session_t session, size_t total, /* Check if the previously read data plus the new data to * receive are longer than the maximum receive buffer size. */ - if ((session->internals.record_recv_buffer.byte_length + - recvdata) > max_record_recv_size(session)) { - gnutls_assert(); /* internal error */ + if ((session->internals.record_recv_buffer.byte_length + recvdata) > + max_record_recv_size(session)) { + gnutls_assert(); /* internal error */ return GNUTLS_E_INVALID_REQUEST; } /* READ DATA */ if (readsize > 0) { - ret = - _gnutls_read(session, &bufel, readsize, - session->internals.pull_func, ms); + ret = _gnutls_read(session, &bufel, readsize, + session->internals.pull_func, ms); /* return immediately if we got an interrupt or eagain * error. @@ -580,28 +569,26 @@ _gnutls_io_read_buffered(gnutls_session_t session, size_t total, return gnutls_assert_val(ret); } - if (ret == 0) /* EOF */ + if (ret == 0) /* EOF */ return gnutls_assert_val(0); /* copy fresh data to our buffer. */ - _gnutls_read_log - ("RB: Have %d bytes into buffer. Adding %d bytes.\n", - (int)session->internals.record_recv_buffer.byte_length, - (int)ret); + _gnutls_read_log( + "RB: Have %d bytes into buffer. Adding %d bytes.\n", + (int)session->internals.record_recv_buffer.byte_length, + (int)ret); _gnutls_read_log("RB: Requested %d bytes\n", (int)total); _mbuffer_enqueue(&session->internals.record_recv_buffer, bufel); if (IS_DTLS(session)) - ret = - MIN(total, - session->internals.record_recv_buffer. - byte_length); + ret = MIN(total, session->internals.record_recv_buffer + .byte_length); else ret = session->internals.record_recv_buffer.byte_length; - if ((ret > 0) && ((size_t)ret < total)) /* Short Read */ + if ((ret > 0) && ((size_t)ret < total)) /* Short Read */ return gnutls_assert_val(GNUTLS_E_AGAIN); else return ret; @@ -622,12 +609,11 @@ _gnutls_io_read_buffered(gnutls_session_t session, size_t total, * to decrypt and verify the integrity. * */ -ssize_t -_gnutls_io_write_buffered(gnutls_session_t session, - mbuffer_st * bufel, unsigned int mflag) +ssize_t _gnutls_io_write_buffered(gnutls_session_t session, mbuffer_st *bufel, + unsigned int mflag) { mbuffer_head_st *const send_buffer = - &session->internals.record_send_buffer; + &session->internals.record_send_buffer; /* to know where the procedure was interrupted. */ @@ -635,10 +621,10 @@ _gnutls_io_write_buffered(gnutls_session_t session, _mbuffer_enqueue(send_buffer, bufel); - _gnutls_write_log - ("WRITE: enqueued %d bytes for %p. Total %d bytes.\n", - (int)bufel->msg.size, session->internals.transport_recv_ptr, - (int)send_buffer->byte_length); + _gnutls_write_log("WRITE: enqueued %d bytes for %p. Total %d bytes.\n", + (int)bufel->msg.size, + session->internals.transport_recv_ptr, + (int)send_buffer->byte_length); if (mflag == MBUFFER_FLUSH) return _gnutls_io_write_flush(session); @@ -646,7 +632,7 @@ _gnutls_io_write_buffered(gnutls_session_t session, return bufel->msg.size; } -typedef ssize_t(*send_func) (gnutls_session_t, const giovec_t *, int); +typedef ssize_t (*send_func)(gnutls_session_t, const giovec_t *, int); /* This function writes the data that are left in the * TLS write buffer (ie. because the previous write was @@ -666,8 +652,8 @@ ssize_t _gnutls_io_write_flush(gnutls_session_t session) _gnutls_write_log("WRITE FLUSH: %d bytes in buffer.\n", (int)send_buffer->byte_length); - for (cur = _mbuffer_head_get_first(send_buffer, &msg); - cur != NULL; cur = _mbuffer_head_get_next(cur, &msg)) { + for (cur = _mbuffer_head_get_first(send_buffer, &msg); cur != NULL; + cur = _mbuffer_head_get_next(cur, &msg)) { iovec[i].iov_base = msg.data; iovec[i++].iov_len = msg.size; tosend += msg.size; @@ -687,9 +673,8 @@ ssize_t _gnutls_io_write_flush(gnutls_session_t session) ret = _gnutls_writev(session, iovec, i, tosend); if (ret >= 0) { _mbuffer_head_remove_bytes(send_buffer, ret); - _gnutls_write_log - ("WRITE: wrote %d bytes, %d bytes left.\n", ret, - (int)send_buffer->byte_length); + _gnutls_write_log("WRITE: wrote %d bytes, %d bytes left.\n", + ret, (int)send_buffer->byte_length); sent += ret; } else if (ret == GNUTLS_E_INTERRUPTED || ret == GNUTLS_E_AGAIN) { @@ -698,13 +683,13 @@ ssize_t _gnutls_io_write_flush(gnutls_session_t session) return ret; } else if (ret == GNUTLS_E_LARGE_PACKET) { _mbuffer_head_remove_bytes(send_buffer, tosend); - _gnutls_write_log - ("WRITE cannot send large packet (%u bytes).\n", - (unsigned int)tosend); + _gnutls_write_log( + "WRITE cannot send large packet (%u bytes).\n", + (unsigned int)tosend); return ret; } else { - _gnutls_write_log("WRITE error: code %d, %d bytes left.\n", - ret, (int)send_buffer->byte_length); + _gnutls_write_log("WRITE error: code %d, %d bytes left.\n", ret, + (int)send_buffer->byte_length); gnutls_assert(); return ret; @@ -729,8 +714,8 @@ int _gnutls_io_check_recv(gnutls_session_t session, unsigned int ms) int ret = 0, err; if (NO_TIMEOUT_FUNC_SET(session)) { - _gnutls_debug_log - ("The pull function has been replaced but not the pull timeout.\n"); + _gnutls_debug_log( + "The pull function has been replaced but not the pull timeout.\n"); return gnutls_assert_val(GNUTLS_E_PULL_ERROR); } @@ -739,9 +724,9 @@ int _gnutls_io_check_recv(gnutls_session_t session, unsigned int ms) ret = session->internals.pull_timeout_func(fd, ms); if (ret == -1) { err = get_errno(session); - _gnutls_read_log - ("READ_TIMEOUT: %d returned from %p, errno=%d (timeout: %u)\n", - (int)ret, fd, err, ms); + _gnutls_read_log( + "READ_TIMEOUT: %d returned from %p, errno=%d (timeout: %u)\n", + (int)ret, fd, err, ms); return errno_to_gerr(err, IS_DTLS(session)); } @@ -762,7 +747,7 @@ int _gnutls_io_check_recv(gnutls_session_t session, unsigned int ms) ssize_t _gnutls_handshake_io_write_flush(gnutls_session_t session) { mbuffer_head_st *const send_buffer = - &session->internals.handshake_send_buffer; + &session->internals.handshake_send_buffer; gnutls_datum_t msg; int ret; uint16_t epoch; @@ -774,8 +759,8 @@ ssize_t _gnutls_handshake_io_write_flush(gnutls_session_t session) if (IS_DTLS(session)) return _dtls_transmit(session); - for (cur = _mbuffer_head_get_first(send_buffer, &msg); - cur != NULL; cur = _mbuffer_head_get_first(send_buffer, &msg)) { + for (cur = _mbuffer_head_get_first(send_buffer, &msg); cur != NULL; + cur = _mbuffer_head_get_first(send_buffer, &msg)) { epoch = cur->epoch; if (session->internals.h_read_func) { @@ -784,38 +769,33 @@ ssize_t _gnutls_handshake_io_write_flush(gnutls_session_t session) ret = _gnutls_epoch_get(session, epoch, ¶ms); if (ret < 0) return gnutls_assert_val(ret); - ret = session->internals.h_read_func(session, - params-> - write.level, - cur->htype, - msg.data, - msg.size); + ret = session->internals.h_read_func( + session, params->write.level, cur->htype, + msg.data, msg.size); if (ret < 0) return gnutls_assert_val(ret); ret = msg.size; } else { - ret = _gnutls_send_int(session, cur->type, - cur->htype, + ret = _gnutls_send_int(session, cur->type, cur->htype, epoch, msg.data, msg.size, 0); } if (ret >= 0) { - ret = _mbuffer_head_remove_bytes(send_buffer, ret); /* for each queued message we send, ensure that * we drop the epoch refcount set in _gnutls_handshake_io_cache_int(). */ if (ret == 1) _gnutls_epoch_refcount_dec(session, epoch); - _gnutls_write_log - ("HWRITE: wrote %d bytes, %d bytes left.\n", - ret, (int)send_buffer->byte_length); + _gnutls_write_log( + "HWRITE: wrote %d bytes, %d bytes left.\n", ret, + (int)send_buffer->byte_length); } else { - _gnutls_write_log - ("HWRITE error: code %d, %d bytes left.\n", - ret, (int)send_buffer->byte_length); + _gnutls_write_log( + "HWRITE error: code %d, %d bytes left.\n", ret, + (int)send_buffer->byte_length); gnutls_assert(); return ret; @@ -829,24 +809,23 @@ ssize_t _gnutls_handshake_io_write_flush(gnutls_session_t session) * protocol. Just makes sure that all data have been sent. * */ -int -_gnutls_handshake_io_cache_int(gnutls_session_t session, - gnutls_handshake_description_t htype, - mbuffer_st * bufel) +int _gnutls_handshake_io_cache_int(gnutls_session_t session, + gnutls_handshake_description_t htype, + mbuffer_st *bufel) { mbuffer_head_st *send_buffer; if (IS_DTLS(session)) { bufel->handshake_sequence = - session->internals.dtls.hsk_write_seq - 1; + session->internals.dtls.hsk_write_seq - 1; } send_buffer = &session->internals.handshake_send_buffer; /* ensure that our epoch does not get garbage collected * before we send all queued messages with it */ - bufel->epoch = - (uint16_t) _gnutls_epoch_refcount_inc(session, EPOCH_WRITE_CURRENT); + bufel->epoch = (uint16_t)_gnutls_epoch_refcount_inc( + session, EPOCH_WRITE_CURRENT); bufel->htype = htype; if (bufel->htype == GNUTLS_HANDSHAKE_CHANGE_CIPHER_SPEC) bufel->type = GNUTLS_CHANGE_CIPHER_SPEC; @@ -855,10 +834,9 @@ _gnutls_handshake_io_cache_int(gnutls_session_t session, _mbuffer_enqueue(send_buffer, bufel); - _gnutls_write_log - ("HWRITE: enqueued [%s] %d. Total %d bytes.\n", - _gnutls_handshake2str(bufel->htype), (int)bufel->msg.size, - (int)send_buffer->byte_length); + _gnutls_write_log("HWRITE: enqueued [%s] %d. Total %d bytes.\n", + _gnutls_handshake2str(bufel->htype), + (int)bufel->msg.size, (int)send_buffer->byte_length); return 0; } @@ -875,13 +853,12 @@ static int handshake_compare(const void *_e1, const void *_e2) } #define SSL2_HEADERS 1 -static int -parse_handshake_header(gnutls_session_t session, mbuffer_st * bufel, - handshake_buffer_st * hsk) +static int parse_handshake_header(gnutls_session_t session, mbuffer_st *bufel, + handshake_buffer_st *hsk) { - uint8_t *dataptr = NULL; /* for realloc */ - size_t handshake_header_size = - HANDSHAKE_HEADER_SIZE(session), data_size, frag_size; + uint8_t *dataptr = NULL; /* for realloc */ + size_t handshake_header_size = HANDSHAKE_HEADER_SIZE(session), + data_size, frag_size; /* Note: SSL2_HEADERS == 1 */ if (_mbuffer_get_udata_size(bufel) < handshake_header_size) @@ -891,11 +868,14 @@ parse_handshake_header(gnutls_session_t session, mbuffer_st * bufel, /* if reading a client hello of SSLv2 */ #ifdef ENABLE_SSL2 - if (unlikely(!IS_DTLS(session) - && bufel->htype == GNUTLS_HANDSHAKE_CLIENT_HELLO_V2)) { - handshake_header_size = SSL2_HEADERS; /* we've already read one byte */ + if (unlikely(!IS_DTLS(session) && + bufel->htype == GNUTLS_HANDSHAKE_CLIENT_HELLO_V2)) { + handshake_header_size = + SSL2_HEADERS; /* we've already read one byte */ - frag_size = _mbuffer_get_udata_size(bufel) - handshake_header_size; /* we've read the first byte */ + frag_size = + _mbuffer_get_udata_size(bufel) - + handshake_header_size; /* we've read the first byte */ if (dataptr[0] != GNUTLS_HANDSHAKE_CLIENT_HELLO) return gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET); @@ -907,7 +887,7 @@ parse_handshake_header(gnutls_session_t session, mbuffer_st * bufel, hsk->length = frag_size; } else #endif - { /* TLS or DTLS handshake headers */ + { /* TLS or DTLS handshake headers */ hsk->rtype = hsk->htype = dataptr[0]; @@ -923,21 +903,22 @@ parse_handshake_header(gnutls_session_t session, mbuffer_st * bufel, } else { hsk->sequence = 0; hsk->start_offset = 0; - frag_size = - MIN((_mbuffer_get_udata_size(bufel) - - handshake_header_size), hsk->length); + frag_size = MIN((_mbuffer_get_udata_size(bufel) - + handshake_header_size), + hsk->length); } /* TLS1.3: distinguish server hello versus hello retry request. * The epitome of slick protocol design. */ - if (hsk->htype == GNUTLS_HANDSHAKE_SERVER_HELLO - && hsk->start_offset == 0 && !IS_DTLS(session)) { + if (hsk->htype == GNUTLS_HANDSHAKE_SERVER_HELLO && + hsk->start_offset == 0 && !IS_DTLS(session)) { if (_mbuffer_get_udata_size(bufel) > - handshake_header_size + 2 + GNUTLS_RANDOM_SIZE - && memcmp(dataptr + handshake_header_size + 2, - HRR_RANDOM, GNUTLS_RANDOM_SIZE) == 0) { + handshake_header_size + 2 + + GNUTLS_RANDOM_SIZE && + memcmp(dataptr + handshake_header_size + 2, + HRR_RANDOM, GNUTLS_RANDOM_SIZE) == 0) { hsk->htype = - GNUTLS_HANDSHAKE_HELLO_RETRY_REQUEST; + GNUTLS_HANDSHAKE_HELLO_RETRY_REQUEST; } } } @@ -948,29 +929,29 @@ parse_handshake_header(gnutls_session_t session, mbuffer_st * bufel, else hsk->end_offset = 0; - _gnutls_handshake_log - ("HSK[%p]: %s (%u) was received. Length %d[%d], frag offset %d, frag length: %d, sequence: %d\n", - session, _gnutls_handshake2str(hsk->htype), - (unsigned)hsk->htype, (int)hsk->length, (int)data_size, - hsk->start_offset, (int)frag_size, (int)hsk->sequence); + _gnutls_handshake_log( + "HSK[%p]: %s (%u) was received. Length %d[%d], frag offset %d, frag length: %d, sequence: %d\n", + session, _gnutls_handshake2str(hsk->htype), + (unsigned)hsk->htype, (int)hsk->length, (int)data_size, + hsk->start_offset, (int)frag_size, (int)hsk->sequence); hsk->header_size = handshake_header_size; memcpy(hsk->header, _mbuffer_get_udata_ptr(bufel), handshake_header_size); - if (hsk->length > 0 && (frag_size > data_size || - (frag_size > 0 && - hsk->end_offset >= hsk->length))) { + if (hsk->length > 0 && + (frag_size > data_size || + (frag_size > 0 && hsk->end_offset >= hsk->length))) { return gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET_LENGTH); - } else if (hsk->length == 0 && hsk->end_offset != 0 - && hsk->start_offset != 0) + } else if (hsk->length == 0 && hsk->end_offset != 0 && + hsk->start_offset != 0) return gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET_LENGTH); return handshake_header_size; } -static void _gnutls_handshake_buffer_move(handshake_buffer_st * dst, - handshake_buffer_st * src) +static void _gnutls_handshake_buffer_move(handshake_buffer_st *dst, + handshake_buffer_st *src) { memcpy(dst, src, sizeof(*dst)); memset(src, 0, sizeof(*src)); @@ -982,7 +963,7 @@ static void _gnutls_handshake_buffer_move(handshake_buffer_st * dst, * Only used in DTLS. */ static int merge_handshake_packet(gnutls_session_t session, - handshake_buffer_st * hsk) + handshake_buffer_st *hsk) { int exists = 0, i, pos = 0; int ret; @@ -1003,8 +984,8 @@ static int merge_handshake_packet(gnutls_session_t session, return gnutls_assert_val(GNUTLS_E_TOO_MANY_HANDSHAKE_PACKETS); if (!exists) { - if (hsk->length > 0 && hsk->end_offset > 0 - && hsk->end_offset - hsk->start_offset + 1 != hsk->length) { + if (hsk->length > 0 && hsk->end_offset > 0 && + hsk->end_offset - hsk->start_offset + 1 != hsk->length) { ret = _gnutls_buffer_resize(&hsk->data, hsk->length); if (ret < 0) return gnutls_assert_val(ret); @@ -1023,44 +1004,44 @@ static int merge_handshake_packet(gnutls_session_t session, _gnutls_write_uint24(0, &hsk->header[6]); _gnutls_write_uint24(hsk->length, &hsk->header[9]); - _gnutls_handshake_buffer_move(&session->internals. - handshake_recv_buffer[pos], hsk); + _gnutls_handshake_buffer_move( + &session->internals.handshake_recv_buffer[pos], hsk); } else { if (hsk->start_offset < - session->internals.handshake_recv_buffer[pos].start_offset - && hsk->end_offset + 1 >= - session->internals.handshake_recv_buffer[pos]. - start_offset) { - memcpy(&session->internals. - handshake_recv_buffer[pos].data.data[hsk-> - start_offset], + session->internals.handshake_recv_buffer[pos] + .start_offset && + hsk->end_offset + 1 >= + session->internals.handshake_recv_buffer[pos] + .start_offset) { + memcpy(&session->internals.handshake_recv_buffer[pos] + .data.data[hsk->start_offset], hsk->data.data, hsk->data.length); - session->internals.handshake_recv_buffer[pos]. - start_offset = hsk->start_offset; - session->internals.handshake_recv_buffer[pos]. - end_offset = - MIN(hsk->end_offset, - session->internals. - handshake_recv_buffer[pos].end_offset); + session->internals.handshake_recv_buffer[pos] + .start_offset = hsk->start_offset; + session->internals.handshake_recv_buffer[pos] + .end_offset = MIN( + hsk->end_offset, + session->internals.handshake_recv_buffer[pos] + .end_offset); } else if (hsk->end_offset > - session->internals.handshake_recv_buffer[pos]. - end_offset - && hsk->start_offset <= - session->internals.handshake_recv_buffer[pos]. - end_offset + 1) { - memcpy(&session->internals. - handshake_recv_buffer[pos].data.data[hsk-> - start_offset], + session->internals.handshake_recv_buffer[pos] + .end_offset && + hsk->start_offset <= + session->internals.handshake_recv_buffer[pos] + .end_offset + + 1) { + memcpy(&session->internals.handshake_recv_buffer[pos] + .data.data[hsk->start_offset], hsk->data.data, hsk->data.length); - session->internals.handshake_recv_buffer[pos]. - end_offset = hsk->end_offset; - session->internals.handshake_recv_buffer[pos]. - start_offset = - MIN(hsk->start_offset, - session->internals. - handshake_recv_buffer[pos].start_offset); + session->internals.handshake_recv_buffer[pos] + .end_offset = hsk->end_offset; + session->internals.handshake_recv_buffer[pos] + .start_offset = MIN( + hsk->start_offset, + session->internals.handshake_recv_buffer[pos] + .start_offset); } _gnutls_handshake_buffer_clear(hsk); } @@ -1077,8 +1058,8 @@ inline static int cmp_hsk_types(gnutls_handshake_description_t expected, return 1; #ifdef ENABLE_SSL2 - if (expected == GNUTLS_HANDSHAKE_CLIENT_HELLO - && recvd == GNUTLS_HANDSHAKE_CLIENT_HELLO_V2) + if (expected == GNUTLS_HANDSHAKE_CLIENT_HELLO && + recvd == GNUTLS_HANDSHAKE_CLIENT_HELLO_V2) return 1; #endif if (expected != recvd) @@ -1087,16 +1068,16 @@ inline static int cmp_hsk_types(gnutls_handshake_description_t expected, return 1; } -#define LAST_ELEMENT (session->internals.handshake_recv_buffer_size-1) +#define LAST_ELEMENT (session->internals.handshake_recv_buffer_size - 1) /* returns the last stored handshake packet. */ static int get_last_packet(gnutls_session_t session, gnutls_handshake_description_t htype, - handshake_buffer_st * hsk, unsigned int optional) + handshake_buffer_st *hsk, unsigned int optional) { handshake_buffer_st *recv_buf = - session->internals.handshake_recv_buffer; + session->internals.handshake_recv_buffer; if (IS_DTLS(session)) { if (session->internals.handshake_recv_buffer_size == 0 || @@ -1106,23 +1087,23 @@ static int get_last_packet(gnutls_session_t session, if (htype != recv_buf[LAST_ELEMENT].htype) { if (optional == 0) - _gnutls_audit_log(session, - "Received unexpected handshake message '%s' (%d). Expected '%s' (%d)\n", - _gnutls_handshake2str - (recv_buf[0].htype), - (int)recv_buf[0].htype, - _gnutls_handshake2str - (htype), (int)htype); - - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_HANDSHAKE_PACKET); + _gnutls_audit_log( + session, + "Received unexpected handshake message '%s' (%d). Expected '%s' (%d)\n", + _gnutls_handshake2str( + recv_buf[0].htype), + (int)recv_buf[0].htype, + _gnutls_handshake2str(htype), + (int)htype); + + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_HANDSHAKE_PACKET); } else if ((recv_buf[LAST_ELEMENT].start_offset == 0 && recv_buf[LAST_ELEMENT].end_offset == - recv_buf[LAST_ELEMENT].length - 1) - || recv_buf[LAST_ELEMENT].length == 0) { + recv_buf[LAST_ELEMENT].length - 1) || + recv_buf[LAST_ELEMENT].length == 0) { session->internals.dtls.hsk_read_seq++; _gnutls_handshake_buffer_move(hsk, &recv_buf[LAST_ELEMENT]); @@ -1133,33 +1114,31 @@ static int get_last_packet(gnutls_session_t session, * have queued data waiting, try again to reconstruct the * handshake packet, using the queued */ if (recv_buf[LAST_ELEMENT].end_offset != - recv_buf[LAST_ELEMENT].length - 1 - && record_check_unprocessed(session) > 0) - return - gnutls_assert_val(GNUTLS_E_INT_CHECK_AGAIN); + recv_buf[LAST_ELEMENT].length - 1 && + record_check_unprocessed(session) > 0) + return gnutls_assert_val( + GNUTLS_E_INT_CHECK_AGAIN); else goto timeout; } - } else { /* TLS */ + } else { /* TLS */ - if (session->internals.handshake_recv_buffer_size > 0 - && recv_buf[0].length == recv_buf[0].data.length) { + if (session->internals.handshake_recv_buffer_size > 0 && + recv_buf[0].length == recv_buf[0].data.length) { if (cmp_hsk_types(htype, recv_buf[0].htype) == 0) { - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_HANDSHAKE_PACKET); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_HANDSHAKE_PACKET); } _gnutls_handshake_buffer_move(hsk, &recv_buf[0]); session->internals.handshake_recv_buffer_size--; return 0; } else - return - gnutls_assert_val - (GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); + return gnutls_assert_val( + GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); } - timeout: +timeout: RETURN_DTLS_EAGAIN_OR_TIMEOUT(session, 0); } @@ -1175,10 +1154,10 @@ int _gnutls_parse_record_buffered_msgs(gnutls_session_t session) int ret; size_t data_size; handshake_buffer_st *recv_buf = - session->internals.handshake_recv_buffer; + session->internals.handshake_recv_buffer; - bufel = - _mbuffer_head_get_first(&session->internals.record_buffer, &msg); + bufel = _mbuffer_head_get_first(&session->internals.record_buffer, + &msg); if (bufel == NULL) return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; @@ -1187,95 +1166,93 @@ int _gnutls_parse_record_buffered_msgs(gnutls_session_t session) do { if (bufel->type != GNUTLS_HANDSHAKE) - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET); - - if (unlikely - (session->internals.handshake_recv_buffer_size == 0 - && msg.size < HANDSHAKE_HEADER_SIZE(session) - && session->internals. - handshake_header_recv_buffer.byte_length < - HANDSHAKE_HEADER_SIZE(session) - msg.size)) { - bufel = - _mbuffer_head_pop_first(&session-> - internals.record_buffer); - _mbuffer_enqueue(&session-> - internals.handshake_header_recv_buffer, - bufel); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET); + + if (unlikely( + session->internals + .handshake_recv_buffer_size == + 0 && + msg.size < HANDSHAKE_HEADER_SIZE(session) && + session->internals + .handshake_header_recv_buffer + .byte_length < + HANDSHAKE_HEADER_SIZE(session) - + msg.size)) { + bufel = _mbuffer_head_pop_first( + &session->internals.record_buffer); + _mbuffer_enqueue( + &session->internals + .handshake_header_recv_buffer, + bufel); break; - } else if (session-> - internals.handshake_recv_buffer_size > 0 - && recv_buf[0].length > - recv_buf[0].data.length) { + } else if (session->internals.handshake_recv_buffer_size > + 0 && + recv_buf[0].length > + recv_buf[0].data.length) { /* this is the rest of a previous message */ append = MIN(msg.size, recv_buf[0].length - - recv_buf[0].data.length); + recv_buf[0].data.length); - ret = - _gnutls_buffer_append_data(&recv_buf - [0].data, - msg.data, - append); + ret = _gnutls_buffer_append_data( + &recv_buf[0].data, msg.data, append); if (ret < 0) return gnutls_assert_val(ret); - _mbuffer_head_remove_bytes - (&session->internals.record_buffer, append); - } else { /* received new message */ - if (unlikely - (session->internals. - handshake_header_recv_buffer.length > 0)) { - bufel = - _mbuffer_head_pop_first - (&session->internals.record_buffer); - _mbuffer_enqueue(&session->internals. - handshake_header_recv_buffer, - bufel); - ret = - _mbuffer_linearize_align16 - (&session->internals. - handshake_header_recv_buffer, - get_total_headers(session)); + _mbuffer_head_remove_bytes( + &session->internals.record_buffer, + append); + } else { /* received new message */ + if (unlikely( + session->internals + .handshake_header_recv_buffer + .length > 0)) { + bufel = _mbuffer_head_pop_first( + &session->internals + .record_buffer); + _mbuffer_enqueue( + &session->internals + .handshake_header_recv_buffer, + bufel); + ret = _mbuffer_linearize_align16( + &session->internals + .handshake_header_recv_buffer, + get_total_headers(session)); if (ret < 0) return gnutls_assert_val(ret); - bufel = - _mbuffer_head_pop_first - (&session->internals. - handshake_header_recv_buffer); - _mbuffer_head_push_first - (&session->internals.record_buffer, - bufel); + bufel = _mbuffer_head_pop_first( + &session->internals + .handshake_header_recv_buffer); + _mbuffer_head_push_first( + &session->internals + .record_buffer, + bufel); } - ret = - parse_handshake_header(session, bufel, - &recv_buf[0]); + ret = parse_handshake_header(session, bufel, + &recv_buf[0]); if (ret < 0) return gnutls_assert_val(ret); header_size = ret; session->internals.handshake_recv_buffer_size = - 1; + 1; _mbuffer_set_uhead_size(bufel, header_size); - data_size = - MIN(recv_buf[0].length, - _mbuffer_get_udata_size(bufel)); - ret = - _gnutls_buffer_append_data(&recv_buf - [0].data, - _mbuffer_get_udata_ptr - (bufel), - data_size); + data_size = MIN(recv_buf[0].length, + _mbuffer_get_udata_size(bufel)); + ret = _gnutls_buffer_append_data( + &recv_buf[0].data, + _mbuffer_get_udata_ptr(bufel), + data_size); if (ret < 0) return gnutls_assert_val(ret); _mbuffer_set_uhead_size(bufel, 0); - _mbuffer_head_remove_bytes - (&session->internals.record_buffer, - data_size + header_size); + _mbuffer_head_remove_bytes( + &session->internals.record_buffer, + data_size + header_size); } /* if packet is complete then return it @@ -1283,17 +1260,15 @@ int _gnutls_parse_record_buffered_msgs(gnutls_session_t session) if (recv_buf[0].length == recv_buf[0].data.length) { return 0; } - bufel = - _mbuffer_head_get_first(&session->internals. - record_buffer, &msg); - } - while (bufel != NULL); + bufel = _mbuffer_head_get_first( + &session->internals.record_buffer, &msg); + } while (bufel != NULL); /* if we are here it means that the received packets were not * enough to complete the handshake packet. */ return gnutls_assert_val(GNUTLS_E_AGAIN); - } else { /* DTLS */ + } else { /* DTLS */ handshake_buffer_st tmp; @@ -1307,59 +1282,56 @@ int _gnutls_parse_record_buffered_msgs(gnutls_session_t session) do { if (bufel->type != GNUTLS_HANDSHAKE) { gnutls_assert(); - goto next; /* ignore packet */ + goto next; /* ignore packet */ } _gnutls_handshake_buffer_init(&tmp); - ret = - parse_handshake_header(session, bufel, - &tmp); + ret = parse_handshake_header(session, bufel, + &tmp); if (ret < 0) { gnutls_assert(); - _gnutls_audit_log(session, - "Invalid handshake packet headers. Discarding.\n"); + _gnutls_audit_log( + session, + "Invalid handshake packet headers. Discarding.\n"); break; } - _mbuffer_consume(&session->internals. - record_buffer, bufel, ret); + _mbuffer_consume( + &session->internals.record_buffer, + bufel, ret); - data_size = - MIN(tmp.length, - tmp.end_offset - tmp.start_offset + 1); + data_size = MIN(tmp.length, + tmp.end_offset - + tmp.start_offset + 1); - ret = - _gnutls_buffer_append_data(&tmp.data, - _mbuffer_get_udata_ptr - (bufel), - data_size); + ret = _gnutls_buffer_append_data( + &tmp.data, + _mbuffer_get_udata_ptr(bufel), + data_size); if (ret < 0) return gnutls_assert_val(ret); - _mbuffer_consume(&session->internals. - record_buffer, bufel, - data_size); + _mbuffer_consume( + &session->internals.record_buffer, + bufel, data_size); ret = merge_handshake_packet(session, &tmp); if (ret < 0) return gnutls_assert_val(ret); - } - while (_mbuffer_get_udata_size(bufel) > 0); + } while (_mbuffer_get_udata_size(bufel) > 0); prev = bufel; - bufel = - _mbuffer_dequeue(&session->internals.record_buffer, - bufel); + bufel = _mbuffer_dequeue( + &session->internals.record_buffer, bufel); _mbuffer_xfree(&prev); continue; - next: + next: bufel = _mbuffer_head_get_next(bufel, NULL); - } - while (bufel != NULL); + } while (bufel != NULL); /* sort in descending order */ if (session->internals.handshake_recv_buffer_size > 1) @@ -1369,10 +1341,11 @@ int _gnutls_parse_record_buffered_msgs(gnutls_session_t session) while (session->internals.handshake_recv_buffer_size > 0 && recv_buf[LAST_ELEMENT].sequence < - session->internals.dtls.hsk_read_seq) { - _gnutls_audit_log(session, - "Discarded replayed handshake packet with sequence %d\n", - recv_buf[LAST_ELEMENT].sequence); + session->internals.dtls.hsk_read_seq) { + _gnutls_audit_log( + session, + "Discarded replayed handshake packet with sequence %d\n", + recv_buf[LAST_ELEMENT].sequence); _gnutls_handshake_buffer_clear(&recv_buf[LAST_ELEMENT]); session->internals.handshake_recv_buffer_size--; } @@ -1384,10 +1357,10 @@ int _gnutls_parse_record_buffered_msgs(gnutls_session_t session) /* This is a receive function for the gnutls handshake * protocol. Makes sure that we have received all data. */ -ssize_t -_gnutls_handshake_io_recv_int(gnutls_session_t session, - gnutls_handshake_description_t htype, - handshake_buffer_st * hsk, unsigned int optional) +ssize_t _gnutls_handshake_io_recv_int(gnutls_session_t session, + gnutls_handshake_description_t htype, + handshake_buffer_st *hsk, + unsigned int optional) { int ret; unsigned int tleft = 0; @@ -1413,8 +1386,8 @@ _gnutls_handshake_io_recv_int(gnutls_session_t session, if (ret >= 0) return ret; } else { - if ((ret != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE - && ret < 0) || ret >= 0) + if ((ret != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE && ret < 0) || + ret >= 0) return gnutls_assert_val(ret); } @@ -1422,7 +1395,7 @@ _gnutls_handshake_io_recv_int(gnutls_session_t session, if (session->internals.h_read_func) return GNUTLS_E_AGAIN; - if (htype != (gnutls_handshake_description_t) - 1) { + if (htype != (gnutls_handshake_description_t)-1) { ret = handshake_remaining_time(session); if (ret < 0) return gnutls_assert_val(ret); @@ -1432,9 +1405,8 @@ _gnutls_handshake_io_recv_int(gnutls_session_t session, do { /* if we don't have a complete message waiting for us, try * receiving more */ - ret = - _gnutls_recv_in_buffers(session, GNUTLS_HANDSHAKE, htype, - tleft); + ret = _gnutls_recv_in_buffers(session, GNUTLS_HANDSHAKE, htype, + tleft); if (ret < 0) return gnutls_assert_val_fatal(ret); @@ -1444,8 +1416,8 @@ _gnutls_handshake_io_recv_int(gnutls_session_t session, } /* we put an upper limit (retries) to the number of partial handshake * messages in a record packet. */ - } while (IS_DTLS(session) && ret == GNUTLS_E_INT_CHECK_AGAIN - && retries-- > 0); + } while (IS_DTLS(session) && ret == GNUTLS_E_INT_CHECK_AGAIN && + retries-- > 0); if (unlikely(IS_DTLS(session) && ret == GNUTLS_E_INT_CHECK_AGAIN)) { ret = gnutls_assert_val(GNUTLS_E_TOO_MANY_HANDSHAKE_PACKETS); diff --git a/lib/buffers.h b/lib/buffers.h index f709ebc022..c609b5d877 100644 --- a/lib/buffers.h +++ b/lib/buffers.h @@ -21,24 +21,24 @@ */ #ifndef GNUTLS_LIB_BUFFERS_H -# define GNUTLS_LIB_BUFFERS_H +#define GNUTLS_LIB_BUFFERS_H -# include "mbuffers.h" +#include "mbuffers.h" -# define MBUFFER_FLUSH 1 +#define MBUFFER_FLUSH 1 -void -_gnutls_record_buffer_put(gnutls_session_t session, - content_type_t type, uint64_t seq, - mbuffer_st * bufel); +void _gnutls_record_buffer_put(gnutls_session_t session, content_type_t type, + uint64_t seq, mbuffer_st *bufel); inline static int _gnutls_record_buffer_get_size(gnutls_session_t session) { return session->internals.record_buffer.byte_length; } -# define NO_TIMEOUT_FUNC_SET(session) unlikely(session->internals.pull_timeout_func == gnutls_system_recv_timeout \ - && session->internals.pull_func != system_read) +#define NO_TIMEOUT_FUNC_SET(session) \ + unlikely(session->internals.pull_timeout_func == \ + gnutls_system_recv_timeout && \ + session->internals.pull_func != system_read) /*- * record_check_unprocessed: @@ -55,39 +55,38 @@ inline static size_t record_check_unprocessed(gnutls_session_t session) return session->internals.record_recv_buffer.byte_length; } -int _gnutls_record_buffer_get(content_type_t type, - gnutls_session_t session, uint8_t * data, - size_t length, uint8_t seq[8]); +int _gnutls_record_buffer_get(content_type_t type, gnutls_session_t session, + uint8_t *data, size_t length, uint8_t seq[8]); int _gnutls_record_buffer_get_packet(content_type_t type, gnutls_session_t session, - gnutls_packet_t * packet); -ssize_t _gnutls_io_read_buffered(gnutls_session_t, size_t n, - content_type_t, unsigned int *ms); + gnutls_packet_t *packet); +ssize_t _gnutls_io_read_buffered(gnutls_session_t, size_t n, content_type_t, + unsigned int *ms); int _gnutls_io_clear_peeked_data(gnutls_session_t session); -ssize_t _gnutls_io_write_buffered(gnutls_session_t session, - mbuffer_st * bufel, unsigned int mflag); +ssize_t _gnutls_io_write_buffered(gnutls_session_t session, mbuffer_st *bufel, + unsigned int mflag); int _gnutls_handshake_io_cache_int(gnutls_session_t, gnutls_handshake_description_t, - mbuffer_st * bufel); + mbuffer_st *bufel); -ssize_t -_gnutls_handshake_io_recv_int(gnutls_session_t session, - gnutls_handshake_description_t htype, - handshake_buffer_st * hsk, unsigned int optional); +ssize_t _gnutls_handshake_io_recv_int(gnutls_session_t session, + gnutls_handshake_description_t htype, + handshake_buffer_st *hsk, + unsigned int optional); ssize_t _gnutls_io_write_flush(gnutls_session_t session); int _gnutls_io_check_recv(gnutls_session_t session, unsigned int ms); ssize_t _gnutls_handshake_io_write_flush(gnutls_session_t session); -inline static void _gnutls_handshake_buffer_clear(handshake_buffer_st * hsk) +inline static void _gnutls_handshake_buffer_clear(handshake_buffer_st *hsk) { _gnutls_buffer_clear(&hsk->data); hsk->htype = -1; } -inline static void _gnutls_handshake_buffer_init(handshake_buffer_st * hsk) +inline static void _gnutls_handshake_buffer_init(handshake_buffer_st *hsk) { memset(hsk, 0, sizeof(*hsk)); _gnutls_buffer_init(&hsk->data); @@ -98,8 +97,8 @@ inline static void _gnutls_handshake_recv_buffer_clear(gnutls_session_t session) { int i; for (i = 0; i < session->internals.handshake_recv_buffer_size; i++) - _gnutls_handshake_buffer_clear(&session->internals. - handshake_recv_buffer[i]); + _gnutls_handshake_buffer_clear( + &session->internals.handshake_recv_buffer[i]); session->internals.handshake_recv_buffer_size = 0; _mbuffer_head_clear(&session->internals.handshake_header_recv_buffer); } @@ -108,8 +107,8 @@ inline static void _gnutls_handshake_recv_buffer_init(gnutls_session_t session) { int i; for (i = 0; i < MAX_HANDSHAKE_MSGS; i++) { - _gnutls_handshake_buffer_init(&session->internals. - handshake_recv_buffer[i]); + _gnutls_handshake_buffer_init( + &session->internals.handshake_recv_buffer[i]); } session->internals.handshake_recv_buffer_size = 0; _mbuffer_head_init(&session->internals.handshake_header_recv_buffer); @@ -117,12 +116,12 @@ inline static void _gnutls_handshake_recv_buffer_init(gnutls_session_t session) int _gnutls_parse_record_buffered_msgs(gnutls_session_t session); -ssize_t -_gnutls_recv_in_buffers(gnutls_session_t session, content_type_t type, - gnutls_handshake_description_t htype, unsigned int ms); +ssize_t _gnutls_recv_in_buffers(gnutls_session_t session, content_type_t type, + gnutls_handshake_description_t htype, + unsigned int ms); -# define _gnutls_handshake_io_buffer_clear( session) \ - _mbuffer_head_clear( &session->internals.handshake_send_buffer); \ - _gnutls_handshake_recv_buffer_clear( session); +#define _gnutls_handshake_io_buffer_clear(session) \ + _mbuffer_head_clear(&session->internals.handshake_send_buffer); \ + _gnutls_handshake_recv_buffer_clear(session); -#endif /* GNUTLS_LIB_BUFFERS_H */ +#endif /* GNUTLS_LIB_BUFFERS_H */ diff --git a/lib/cert-cred-rawpk.c b/lib/cert-cred-rawpk.c index dd0dcc2f29..56da4630a3 100644 --- a/lib/cert-cred-rawpk.c +++ b/lib/cert-cred-rawpk.c @@ -82,15 +82,11 @@ * * Since: 3.6.6 **/ -int gnutls_certificate_set_rawpk_key_mem(gnutls_certificate_credentials_t cred, - const gnutls_datum_t * spki, - const gnutls_datum_t * pkey, - gnutls_x509_crt_fmt_t format, - const char *pass, - unsigned int key_usage, - const char **names, - unsigned int names_length, - unsigned int flags) +int gnutls_certificate_set_rawpk_key_mem( + gnutls_certificate_credentials_t cred, const gnutls_datum_t *spki, + const gnutls_datum_t *pkey, gnutls_x509_crt_fmt_t format, + const char *pass, unsigned int key_usage, const char **names, + unsigned int names_length, unsigned int flags) { int ret; gnutls_privkey_t privkey; @@ -104,8 +100,8 @@ int gnutls_certificate_set_rawpk_key_mem(gnutls_certificate_credentials_t cred, /* Import our private key. This function does all the necessary * inits, checks and imports. */ - ret = _gnutls_read_key_mem(cred, pkey->data, pkey->size, - format, pass, flags, &privkey); + ret = _gnutls_read_key_mem(cred, pkey->data, pkey->size, format, pass, + flags, &privkey); if (ret < 0) { return gnutls_assert_val(ret); } @@ -130,9 +126,8 @@ int gnutls_certificate_set_rawpk_key_mem(gnutls_certificate_credentials_t cred, if (names != NULL && names_length > 0) { for (i = 0; i < names_length; i++) { - ret = - _gnutls_str_array_append_idna(&str_names, names[i], - strlen(names[i])); + ret = _gnutls_str_array_append_idna( + &str_names, names[i], strlen(names[i])); if (ret < 0) { gnutls_privkey_deinit(privkey); _gnutls_str_array_clear(&str_names); @@ -144,9 +139,8 @@ int gnutls_certificate_set_rawpk_key_mem(gnutls_certificate_credentials_t cred, /* Now that we have converted the key material to our internal structures * we can now add them to the credentials structure */ - ret = - _gnutls_certificate_credential_append_keypair(cred, privkey, - str_names, pcert, 1); + ret = _gnutls_certificate_credential_append_keypair( + cred, privkey, str_names, pcert, 1); // Check for errors if (ret < 0) { gnutls_privkey_deinit(privkey); @@ -223,16 +217,11 @@ int gnutls_certificate_set_rawpk_key_mem(gnutls_certificate_credentials_t cred, * * Since: 3.6.6 */ -int gnutls_certificate_set_rawpk_key_file(gnutls_certificate_credentials_t cred, - const char *rawpkfile, - const char *privkeyfile, - gnutls_x509_crt_fmt_t format, - const char *pass, - unsigned int key_usage, - const char **names, - unsigned int names_length, - unsigned int privkey_flags, - unsigned int pkcs11_flags) +int gnutls_certificate_set_rawpk_key_file( + gnutls_certificate_credentials_t cred, const char *rawpkfile, + const char *privkeyfile, gnutls_x509_crt_fmt_t format, const char *pass, + unsigned int key_usage, const char **names, unsigned int names_length, + unsigned int privkey_flags, unsigned int pkcs11_flags) { int ret; gnutls_privkey_t privkey; @@ -247,9 +236,8 @@ int gnutls_certificate_set_rawpk_key_file(gnutls_certificate_credentials_t cred, /* Import our private key. This function does all the necessary * inits, checks and imports. */ - ret = - _gnutls_read_key_file(cred, privkeyfile, format, pass, - privkey_flags, &privkey); + ret = _gnutls_read_key_file(cred, privkeyfile, format, pass, + privkey_flags, &privkey); if (ret < 0) { return gnutls_assert_val(ret); } @@ -265,7 +253,6 @@ int gnutls_certificate_set_rawpk_key_file(gnutls_certificate_credentials_t cred, * or from a regular file. */ if (gnutls_url_is_supported(rawpkfile)) { - ret = gnutls_pubkey_init(&pubkey); if (ret < 0) { gnutls_privkey_deinit(privkey); @@ -290,26 +277,25 @@ int gnutls_certificate_set_rawpk_key_file(gnutls_certificate_credentials_t cred, } } else { - gnutls_datum_t rawpubkey; // to hold rawpk data from file + gnutls_datum_t rawpubkey; // to hold rawpk data from file size_t key_size; /* Read our raw public-key into memory from file */ - rawpubkey.data = (void *)read_file(rawpkfile, - RF_BINARY | RF_SENSITIVE, - &key_size); + rawpubkey.data = (void *)read_file( + rawpkfile, RF_BINARY | RF_SENSITIVE, &key_size); if (rawpubkey.data == NULL) { gnutls_privkey_deinit(privkey); return gnutls_assert_val(GNUTLS_E_FILE_ERROR); } - rawpubkey.size = key_size; // Implicit type casting + rawpubkey.size = key_size; // Implicit type casting /* We now convert our raw public key that we've loaded into memory to * a parsed certificate (pcert) structure. Note that rawpubkey will * be copied into pcert. Therefore we can directly cleanup rawpubkey. */ - ret = gnutls_pcert_import_rawpk_raw(pcert, &rawpubkey, - format, key_usage, 0); + ret = gnutls_pcert_import_rawpk_raw(pcert, &rawpubkey, format, + key_usage, 0); zeroize_key(rawpubkey.data, rawpubkey.size); free(rawpubkey.data); @@ -320,7 +306,6 @@ int gnutls_certificate_set_rawpk_key_file(gnutls_certificate_credentials_t cred, return gnutls_assert_val(ret); } - } /* Process the names, if any */ @@ -328,9 +313,8 @@ int gnutls_certificate_set_rawpk_key_file(gnutls_certificate_credentials_t cred, if (names != NULL && names_length > 0) { for (i = 0; i < names_length; i++) { - ret = - _gnutls_str_array_append_idna(&str_names, names[i], - strlen(names[i])); + ret = _gnutls_str_array_append_idna( + &str_names, names[i], strlen(names[i])); if (ret < 0) { gnutls_privkey_deinit(privkey); _gnutls_str_array_clear(&str_names); @@ -342,9 +326,8 @@ int gnutls_certificate_set_rawpk_key_file(gnutls_certificate_credentials_t cred, /* Now that we have converted the key material to our internal structures * we can now add them to the credentials structure */ - ret = - _gnutls_certificate_credential_append_keypair(cred, privkey, - str_names, pcert, 1); + ret = _gnutls_certificate_credential_append_keypair( + cred, privkey, str_names, pcert, 1); if (ret < 0) { gnutls_privkey_deinit(privkey); gnutls_pcert_deinit(pcert); diff --git a/lib/cert-cred-x509.c b/lib/cert-cred-x509.c index 3799bc1029..9a8af94e89 100644 --- a/lib/cert-cred-x509.c +++ b/lib/cert-cred-x509.c @@ -48,7 +48,7 @@ #include "urls.h" #include "cert-cred.h" #ifdef _WIN32 -# include +#include #endif /* @@ -58,7 +58,7 @@ /* Returns the name of the certificate of a null name */ -int _gnutls_get_x509_name(gnutls_x509_crt_t crt, gnutls_str_array_t * names) +int _gnutls_get_x509_name(gnutls_x509_crt_t crt, gnutls_str_array_t *names) { size_t max_size; int i, ret = 0, ret2; @@ -68,15 +68,13 @@ int _gnutls_get_x509_name(gnutls_x509_crt_t crt, gnutls_str_array_t * names) for (i = 0; !(ret < 0); i++) { max_size = sizeof(name); - ret = - gnutls_x509_crt_get_subject_alt_name(crt, i, name, - &max_size, NULL); + ret = gnutls_x509_crt_get_subject_alt_name(crt, i, name, + &max_size, NULL); if (ret == GNUTLS_SAN_DNSNAME) { have_dns_name = 1; - ret2 = - _gnutls_str_array_append_idna(names, name, - max_size); + ret2 = _gnutls_str_array_append_idna(names, name, + max_size); if (ret2 < 0) { _gnutls_str_array_clear(names); return gnutls_assert_val(ret2); @@ -86,13 +84,11 @@ int _gnutls_get_x509_name(gnutls_x509_crt_t crt, gnutls_str_array_t * names) if (have_dns_name == 0) { max_size = sizeof(name); - ret = - gnutls_x509_crt_get_dn_by_oid(crt, OID_X520_COMMON_NAME, 0, - 0, name, &max_size); + ret = gnutls_x509_crt_get_dn_by_oid(crt, OID_X520_COMMON_NAME, + 0, 0, name, &max_size); if (ret >= 0) { - ret = - _gnutls_str_array_append_idna(names, name, - max_size); + ret = _gnutls_str_array_append_idna(names, name, + max_size); if (ret < 0) { _gnutls_str_array_clear(names); return gnutls_assert_val(ret); @@ -106,10 +102,9 @@ int _gnutls_get_x509_name(gnutls_x509_crt_t crt, gnutls_str_array_t * names) /* Reads a DER encoded certificate list from memory and stores it to a * gnutls_cert structure. Returns the number of certificates parsed. */ -static int -parse_der_cert_mem(gnutls_certificate_credentials_t res, - gnutls_privkey_t key, - const void *input_cert, int input_cert_size) +static int parse_der_cert_mem(gnutls_certificate_credentials_t res, + gnutls_privkey_t key, const void *input_cert, + int input_cert_size) { gnutls_datum_t tmp; gnutls_x509_crt_t crt; @@ -131,7 +126,7 @@ parse_der_cert_mem(gnutls_certificate_credentials_t res, goto cleanup; } - tmp.data = (uint8_t *) input_cert; + tmp.data = (uint8_t *)input_cert; tmp.size = input_cert_size; ret = gnutls_x509_crt_import(crt, &tmp, GNUTLS_X509_FMT_DER); @@ -156,9 +151,8 @@ parse_der_cert_mem(gnutls_certificate_credentials_t res, goto cleanup; } - ret = - _gnutls_certificate_credential_append_keypair(res, key, names, - ccert, 1); + ret = _gnutls_certificate_credential_append_keypair(res, key, names, + ccert, 1); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -166,7 +160,7 @@ parse_der_cert_mem(gnutls_certificate_credentials_t res, return ret; - cleanup: +cleanup: _gnutls_str_array_clear(&names); gnutls_free(ccert); return ret; @@ -175,10 +169,9 @@ parse_der_cert_mem(gnutls_certificate_credentials_t res, /* Reads a base64 encoded certificate list from memory and stores it to * a gnutls_cert structure. Returns the number of certificate parsed. */ -static int -parse_pem_cert_mem(gnutls_certificate_credentials_t res, - gnutls_privkey_t key, - const char *input_cert, int input_cert_size) +static int parse_pem_cert_mem(gnutls_certificate_credentials_t res, + gnutls_privkey_t key, const char *input_cert, + int input_cert_size) { int size; const char *ptr; @@ -193,11 +186,11 @@ parse_pem_cert_mem(gnutls_certificate_credentials_t res, /* move to the certificate */ - ptr = memmem(input_cert, input_cert_size, - PEM_CERT_SEP, sizeof(PEM_CERT_SEP) - 1); + ptr = memmem(input_cert, input_cert_size, PEM_CERT_SEP, + sizeof(PEM_CERT_SEP) - 1); if (ptr == NULL) - ptr = memmem(input_cert, input_cert_size, - PEM_CERT_SEP2, sizeof(PEM_CERT_SEP2) - 1); + ptr = memmem(input_cert, input_cert_size, PEM_CERT_SEP2, + sizeof(PEM_CERT_SEP2) - 1); if (ptr == NULL) { gnutls_assert(); @@ -217,9 +210,8 @@ parse_pem_cert_mem(gnutls_certificate_credentials_t res, goto cleanup; } - ret = - gnutls_x509_crt_import(unsorted[count], &tmp, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(unsorted[count], &tmp, + GNUTLS_X509_FMT_PEM); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -237,9 +229,8 @@ parse_pem_cert_mem(gnutls_certificate_credentials_t res, if (size > 0) { char *ptr3; - ptr3 = - memmem(ptr, size, PEM_CERT_SEP, - sizeof(PEM_CERT_SEP) - 1); + ptr3 = memmem(ptr, size, PEM_CERT_SEP, + sizeof(PEM_CERT_SEP) - 1); if (ptr3 == NULL) ptr3 = memmem(ptr, size, PEM_CERT_SEP2, sizeof(PEM_CERT_SEP2) - 1); @@ -249,8 +240,7 @@ parse_pem_cert_mem(gnutls_certificate_credentials_t res, } else ptr = NULL; - } - while (ptr != NULL && count < DEFAULT_MAX_VERIFY_DEPTH); + } while (ptr != NULL && count < DEFAULT_MAX_VERIFY_DEPTH); ret = _gnutls_get_x509_name(unsorted[0], &names); if (ret < 0) { @@ -265,18 +255,16 @@ parse_pem_cert_mem(gnutls_certificate_credentials_t res, } ncerts = count; - ret = - gnutls_pcert_import_x509_list(pcerts, unsorted, &ncerts, - GNUTLS_X509_CRT_LIST_SORT); + ret = gnutls_pcert_import_x509_list(pcerts, unsorted, &ncerts, + GNUTLS_X509_CRT_LIST_SORT); if (ret < 0) { gnutls_free(pcerts); gnutls_assert(); goto cleanup; } - ret = - _gnutls_certificate_credential_append_keypair(res, key, names, - pcerts, ncerts); + ret = _gnutls_certificate_credential_append_keypair(res, key, names, + pcerts, ncerts); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -287,7 +275,7 @@ parse_pem_cert_mem(gnutls_certificate_credentials_t res, return ncerts; - cleanup: +cleanup: _gnutls_str_array_clear(&names); for (i = 0; i < count; i++) gnutls_x509_crt_deinit(unsorted[i]); @@ -301,10 +289,9 @@ parse_pem_cert_mem(gnutls_certificate_credentials_t res, /* Reads a DER or PEM certificate from memory */ -static int -read_cert_mem(gnutls_certificate_credentials_t res, - gnutls_privkey_t key, - const void *cert, int cert_size, gnutls_x509_crt_fmt_t type) +static int read_cert_mem(gnutls_certificate_credentials_t res, + gnutls_privkey_t key, const void *cert, int cert_size, + gnutls_x509_crt_fmt_t type) { int ret; @@ -322,8 +309,8 @@ read_cert_mem(gnutls_certificate_credentials_t res, } static int tmp_pin_cb(void *userdata, int attempt, const char *token_url, - const char *token_label, unsigned int flags, - char *pin, size_t pin_max) + const char *token_label, unsigned int flags, char *pin, + size_t pin_max) { const char *tmp_pin = userdata; @@ -340,18 +327,17 @@ static int tmp_pin_cb(void *userdata, int attempt, const char *token_url, * * It returns the private key read in @rkey. */ -int -_gnutls_read_key_mem(gnutls_certificate_credentials_t res, - const void *key, int key_size, gnutls_x509_crt_fmt_t type, - const char *pass, unsigned int flags, - gnutls_privkey_t * rkey) +int _gnutls_read_key_mem(gnutls_certificate_credentials_t res, const void *key, + int key_size, gnutls_x509_crt_fmt_t type, + const char *pass, unsigned int flags, + gnutls_privkey_t *rkey) { int ret; gnutls_datum_t tmp; gnutls_privkey_t privkey; if (key) { - tmp.data = (uint8_t *) key; + tmp.data = (uint8_t *)key; tmp.size = key_size; ret = gnutls_privkey_init(&privkey); @@ -361,20 +347,17 @@ _gnutls_read_key_mem(gnutls_certificate_credentials_t res, } if (res->pin.cb) { - gnutls_privkey_set_pin_function(privkey, - res->pin.cb, + gnutls_privkey_set_pin_function(privkey, res->pin.cb, res->pin.data); } else if (pass != NULL) { snprintf(res->pin_tmp, sizeof(res->pin_tmp), "%s", pass); - gnutls_privkey_set_pin_function(privkey, - tmp_pin_cb, + gnutls_privkey_set_pin_function(privkey, tmp_pin_cb, res->pin_tmp); } - ret = - gnutls_privkey_import_x509_raw(privkey, &tmp, type, - pass, flags); + ret = gnutls_privkey_import_x509_raw(privkey, &tmp, type, pass, + flags); if (ret < 0) { gnutls_assert(); gnutls_privkey_deinit(privkey); @@ -392,9 +375,8 @@ _gnutls_read_key_mem(gnutls_certificate_credentials_t res, /* Reads a private key from a token. */ -static int -read_key_url(gnutls_certificate_credentials_t res, const char *url, - gnutls_privkey_t * rkey) +static int read_key_url(gnutls_certificate_credentials_t res, const char *url, + gnutls_privkey_t *rkey) { int ret; gnutls_privkey_t pkey = NULL; @@ -421,7 +403,7 @@ read_key_url(gnutls_certificate_credentials_t res, const char *url, return 0; - cleanup: +cleanup: if (pkey) gnutls_privkey_deinit(pkey); @@ -431,9 +413,8 @@ read_key_url(gnutls_certificate_credentials_t res, const char *url, #define MAX_PKCS11_CERT_CHAIN 8 /* Reads a certificate key from a token. */ -static int -read_cert_url(gnutls_certificate_credentials_t res, gnutls_privkey_t key, - const char *url) +static int read_cert_url(gnutls_certificate_credentials_t res, + gnutls_privkey_t key, const char *url) { int ret; gnutls_x509_crt_t crt = NULL; @@ -464,9 +445,8 @@ read_cert_url(gnutls_certificate_credentials_t res, gnutls_privkey_t key, ret = gnutls_x509_crt_import_url(crt, url, 0); if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) - ret = - gnutls_x509_crt_import_url(crt, url, - GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + ret = gnutls_x509_crt_import_url(crt, url, + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -513,9 +493,8 @@ read_cert_url(gnutls_certificate_credentials_t res, gnutls_privkey_t key, gnutls_free(t.data); } - ret = - _gnutls_certificate_credential_append_keypair(res, key, names, - ccert, count); + ret = _gnutls_certificate_credential_append_keypair(res, key, names, + ccert, count); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -525,7 +504,7 @@ read_cert_url(gnutls_certificate_credentials_t res, gnutls_privkey_t key, gnutls_x509_crt_deinit(crt); return 0; - cleanup: +cleanup: if (crt != NULL) gnutls_x509_crt_deinit(crt); gnutls_free(t.data); @@ -536,10 +515,9 @@ read_cert_url(gnutls_certificate_credentials_t res, gnutls_privkey_t key, /* Reads a certificate file */ -static int -read_cert_file(gnutls_certificate_credentials_t res, - gnutls_privkey_t key, - const char *certfile, gnutls_x509_crt_fmt_t type) +static int read_cert_file(gnutls_certificate_credentials_t res, + gnutls_privkey_t key, const char *certfile, + gnutls_x509_crt_fmt_t type) { int ret; size_t size; @@ -560,17 +538,15 @@ read_cert_file(gnutls_certificate_credentials_t res, free(data); return ret; - } /* Reads PKCS-1 RSA private key file or a DSA file (in the format openssl * stores it). */ -int -_gnutls_read_key_file(gnutls_certificate_credentials_t res, - const char *keyfile, gnutls_x509_crt_fmt_t type, - const char *pass, unsigned int flags, - gnutls_privkey_t * rkey) +int _gnutls_read_key_file(gnutls_certificate_credentials_t res, + const char *keyfile, gnutls_x509_crt_fmt_t type, + const char *pass, unsigned int flags, + gnutls_privkey_t *rkey) { int ret; size_t size; @@ -583,15 +559,14 @@ _gnutls_read_key_file(gnutls_certificate_credentials_t res, if (pass != NULL && res->pin.cb == NULL) { snprintf(res->pin_tmp, sizeof(res->pin_tmp), "%s", pass); - gnutls_certificate_set_pin_function(res, - tmp_pin_cb, - res->pin_tmp); + gnutls_certificate_set_pin_function( + res, tmp_pin_cb, res->pin_tmp); } return read_key_url(res, keyfile, rkey); } else - return - gnutls_assert_val(GNUTLS_E_UNIMPLEMENTED_FEATURE); + return gnutls_assert_val( + GNUTLS_E_UNIMPLEMENTED_FEATURE); } data = read_file(keyfile, RF_BINARY | RF_SENSITIVE, &size); @@ -637,14 +612,13 @@ _gnutls_read_key_file(gnutls_certificate_credentials_t res, * Returns: On success this functions returns zero, and otherwise a negative value on error (see above for modifying that behavior). * **/ -int -gnutls_certificate_set_x509_key_mem(gnutls_certificate_credentials_t res, - const gnutls_datum_t * cert, - const gnutls_datum_t * key, - gnutls_x509_crt_fmt_t type) +int gnutls_certificate_set_x509_key_mem(gnutls_certificate_credentials_t res, + const gnutls_datum_t *cert, + const gnutls_datum_t *key, + gnutls_x509_crt_fmt_t type) { - return gnutls_certificate_set_x509_key_mem2(res, cert, key, type, - NULL, 0); + return gnutls_certificate_set_x509_key_mem2(res, cert, key, type, NULL, + 0); } /** @@ -677,12 +651,11 @@ gnutls_certificate_set_x509_key_mem(gnutls_certificate_credentials_t res, * * Returns: On success this functions returns zero, and otherwise a negative value on error (see above for modifying that behavior). **/ -int -gnutls_certificate_set_x509_key_mem2(gnutls_certificate_credentials_t res, - const gnutls_datum_t * cert, - const gnutls_datum_t * key, - gnutls_x509_crt_fmt_t type, - const char *pass, unsigned int flags) +int gnutls_certificate_set_x509_key_mem2(gnutls_certificate_credentials_t res, + const gnutls_datum_t *cert, + const gnutls_datum_t *key, + gnutls_x509_crt_fmt_t type, + const char *pass, unsigned int flags) { int ret; gnutls_privkey_t rkey; @@ -690,11 +663,12 @@ gnutls_certificate_set_x509_key_mem2(gnutls_certificate_credentials_t res, /* this should be first */ if ((ret = _gnutls_read_key_mem(res, key ? key->data : NULL, - key ? key->size : 0, type, pass, - flags, &rkey)) < 0) + key ? key->size : 0, type, pass, flags, + &rkey)) < 0) return ret; - if ((ret = read_cert_mem(res, rkey, cert->data, cert->size, type)) < 0) { + if ((ret = read_cert_mem(res, rkey, cert->data, cert->size, type)) < + 0) { gnutls_privkey_deinit(rkey); return ret; } @@ -737,10 +711,10 @@ gnutls_certificate_set_x509_key_mem2(gnutls_certificate_credentials_t res, * * Since: 2.4.0 **/ -int -gnutls_certificate_set_x509_key(gnutls_certificate_credentials_t res, - gnutls_x509_crt_t * cert_list, - int cert_list_size, gnutls_x509_privkey_t key) +int gnutls_certificate_set_x509_key(gnutls_certificate_credentials_t res, + gnutls_x509_crt_t *cert_list, + int cert_list_size, + gnutls_x509_privkey_t key) { int ret; int npcerts = 0; @@ -785,19 +759,17 @@ gnutls_certificate_set_x509_key(gnutls_certificate_credentials_t res, goto cleanup; } - ret = - gnutls_pcert_import_x509_list(pcerts, cert_list, - (unsigned int *)&cert_list_size, - GNUTLS_X509_CRT_LIST_SORT); + ret = gnutls_pcert_import_x509_list(pcerts, cert_list, + (unsigned int *)&cert_list_size, + GNUTLS_X509_CRT_LIST_SORT); if (ret < 0) { gnutls_assert(); goto cleanup; } npcerts = cert_list_size; - ret = - _gnutls_certificate_credential_append_keypair(res, pkey, names, - pcerts, npcerts); + ret = _gnutls_certificate_credential_append_keypair(res, pkey, names, + pcerts, npcerts); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -815,7 +787,7 @@ gnutls_certificate_set_x509_key(gnutls_certificate_credentials_t res, CRED_RET_SUCCESS(res); - cleanup: +cleanup: while (npcerts-- > 0) gnutls_pcert_deinit(&pcerts[npcerts]); gnutls_free(pcerts); @@ -848,9 +820,8 @@ gnutls_certificate_set_x509_key(gnutls_certificate_credentials_t res, * * Since: 3.4.0 */ -int -gnutls_certificate_get_x509_key(gnutls_certificate_credentials_t res, - unsigned index, gnutls_x509_privkey_t * key) +int gnutls_certificate_get_x509_key(gnutls_certificate_credentials_t res, + unsigned index, gnutls_x509_privkey_t *key) { if (index >= res->ncerts) { gnutls_assert(); @@ -889,11 +860,10 @@ gnutls_certificate_get_x509_key(gnutls_certificate_credentials_t res, * * Since: 3.4.0 */ -int -gnutls_certificate_get_x509_crt(gnutls_certificate_credentials_t res, - unsigned index, - gnutls_x509_crt_t ** crt_list, - unsigned *crt_list_size) +int gnutls_certificate_get_x509_crt(gnutls_certificate_credentials_t res, + unsigned index, + gnutls_x509_crt_t **crt_list, + unsigned *crt_list_size) { int ret; unsigned i; @@ -913,9 +883,8 @@ gnutls_certificate_get_x509_crt(gnutls_certificate_credentials_t res, } for (i = 0; i < res->certs[index].cert_list_length; ++i) { - ret = - gnutls_pcert_export_x509(&res->certs[index].cert_list[i], - &(*crt_list)[i]); + ret = gnutls_pcert_export_x509(&res->certs[index].cert_list[i], + &(*crt_list)[i]); if (ret < 0) { while (i--) gnutls_x509_crt_deinit((*crt_list)[i]); @@ -942,10 +911,9 @@ gnutls_certificate_get_x509_crt(gnutls_certificate_credentials_t res, * * Since: 3.2.2 **/ -void -gnutls_certificate_set_trust_list(gnutls_certificate_credentials_t res, - gnutls_x509_trust_list_t tlist, - unsigned flags) +void gnutls_certificate_set_trust_list(gnutls_certificate_credentials_t res, + gnutls_x509_trust_list_t tlist, + unsigned flags) { gnutls_x509_trust_list_deinit(res->tlist, 1); @@ -964,9 +932,8 @@ gnutls_certificate_set_trust_list(gnutls_certificate_credentials_t res, * * Since: 3.4.0 **/ -void -gnutls_certificate_get_trust_list(gnutls_certificate_credentials_t res, - gnutls_x509_trust_list_t * tlist) +void gnutls_certificate_get_trust_list(gnutls_certificate_credentials_t res, + gnutls_x509_trust_list_t *tlist) { *tlist = res->tlist; } @@ -1008,14 +975,13 @@ gnutls_certificate_get_trust_list(gnutls_certificate_credentials_t res, * * Since: 3.1.11 **/ -int -gnutls_certificate_set_x509_key_file(gnutls_certificate_credentials_t res, - const char *certfile, - const char *keyfile, - gnutls_x509_crt_fmt_t type) +int gnutls_certificate_set_x509_key_file(gnutls_certificate_credentials_t res, + const char *certfile, + const char *keyfile, + gnutls_x509_crt_fmt_t type) { - return gnutls_certificate_set_x509_key_file2(res, certfile, - keyfile, type, NULL, 0); + return gnutls_certificate_set_x509_key_file2(res, certfile, keyfile, + type, NULL, 0); } /** @@ -1058,20 +1024,19 @@ gnutls_certificate_set_x509_key_file(gnutls_certificate_credentials_t res, * Returns: On success this functions returns zero, and otherwise a negative value on error (see above for modifying that behavior). * **/ -int -gnutls_certificate_set_x509_key_file2(gnutls_certificate_credentials_t res, - const char *certfile, - const char *keyfile, - gnutls_x509_crt_fmt_t type, - const char *pass, unsigned int flags) +int gnutls_certificate_set_x509_key_file2(gnutls_certificate_credentials_t res, + const char *certfile, + const char *keyfile, + gnutls_x509_crt_fmt_t type, + const char *pass, unsigned int flags) { int ret; gnutls_privkey_t rkey; /* this should be first */ - if ((ret = - _gnutls_read_key_file(res, keyfile, type, pass, flags, &rkey)) < 0) + if ((ret = _gnutls_read_key_file(res, keyfile, type, pass, flags, + &rkey)) < 0) return ret; if ((ret = read_cert_file(res, rkey, certfile, type)) < 0) { @@ -1108,16 +1073,14 @@ gnutls_certificate_set_x509_key_file2(gnutls_certificate_credentials_t res, * Returns: the number of certificates processed or a negative error code * on error. **/ -int -gnutls_certificate_set_x509_trust_mem(gnutls_certificate_credentials_t res, - const gnutls_datum_t * ca, - gnutls_x509_crt_fmt_t type) +int gnutls_certificate_set_x509_trust_mem(gnutls_certificate_credentials_t res, + const gnutls_datum_t *ca, + gnutls_x509_crt_fmt_t type) { int ret; - ret = gnutls_x509_trust_list_add_trust_mem(res->tlist, ca, NULL, - type, GNUTLS_TL_USE_IN_TLS, - 0); + ret = gnutls_x509_trust_list_add_trust_mem(res->tlist, ca, NULL, type, + GNUTLS_TL_USE_IN_TLS, 0); if (ret == GNUTLS_E_NO_CERTIFICATE_FOUND) return 0; @@ -1145,9 +1108,9 @@ gnutls_certificate_set_x509_trust_mem(gnutls_certificate_credentials_t res, * * Since: 2.4.0 **/ -int -gnutls_certificate_set_x509_trust(gnutls_certificate_credentials_t res, - gnutls_x509_crt_t * ca_list, int ca_list_size) +int gnutls_certificate_set_x509_trust(gnutls_certificate_credentials_t res, + gnutls_x509_crt_t *ca_list, + int ca_list_size) { int ret, i, j; gnutls_x509_crt_t *new_list; @@ -1174,9 +1137,8 @@ gnutls_certificate_set_x509_trust(gnutls_certificate_credentials_t res, } } - ret = - gnutls_x509_trust_list_add_cas(res->tlist, new_list, - ca_list_size, GNUTLS_TL_USE_IN_TLS); + ret = gnutls_x509_trust_list_add_cas(res->tlist, new_list, ca_list_size, + GNUTLS_TL_USE_IN_TLS); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -1185,7 +1147,7 @@ gnutls_certificate_set_x509_trust(gnutls_certificate_credentials_t res, gnutls_free(new_list); return ret; - cleanup: +cleanup: for (j = 0; j < i; j++) gnutls_x509_crt_deinit(new_list[j]); gnutls_free(new_list); @@ -1215,16 +1177,14 @@ gnutls_certificate_set_x509_trust(gnutls_certificate_credentials_t res, * * Returns: the number of certificates processed **/ -int -gnutls_certificate_set_x509_trust_file(gnutls_certificate_credentials_t - cred, const char *cafile, - gnutls_x509_crt_fmt_t type) +int gnutls_certificate_set_x509_trust_file(gnutls_certificate_credentials_t cred, + const char *cafile, + gnutls_x509_crt_fmt_t type) { int ret; - ret = gnutls_x509_trust_list_add_trust_file(cred->tlist, cafile, NULL, - type, GNUTLS_TL_USE_IN_TLS, - 0); + ret = gnutls_x509_trust_list_add_trust_file( + cred->tlist, cafile, NULL, type, GNUTLS_TL_USE_IN_TLS, 0); if (ret == GNUTLS_E_NO_CERTIFICATE_FOUND) return 0; @@ -1247,16 +1207,14 @@ gnutls_certificate_set_x509_trust_file(gnutls_certificate_credentials_t * Since: 3.3.6 * **/ -int -gnutls_certificate_set_x509_trust_dir(gnutls_certificate_credentials_t cred, - const char *ca_dir, - gnutls_x509_crt_fmt_t type) +int gnutls_certificate_set_x509_trust_dir(gnutls_certificate_credentials_t cred, + const char *ca_dir, + gnutls_x509_crt_fmt_t type) { int ret; - ret = gnutls_x509_trust_list_add_trust_dir(cred->tlist, ca_dir, NULL, - type, GNUTLS_TL_USE_IN_TLS, - 0); + ret = gnutls_x509_trust_list_add_trust_dir( + cred->tlist, ca_dir, NULL, type, GNUTLS_TL_USE_IN_TLS, 0); if (ret == GNUTLS_E_NO_CERTIFICATE_FOUND) return 0; @@ -1278,8 +1236,8 @@ gnutls_certificate_set_x509_trust_dir(gnutls_certificate_credentials_t cred, * * Since: 3.0.20 **/ -int -gnutls_certificate_set_x509_system_trust(gnutls_certificate_credentials_t cred) +int gnutls_certificate_set_x509_system_trust( + gnutls_certificate_credentials_t cred) { return gnutls_x509_trust_list_add_system_trust(cred->tlist, GNUTLS_TL_USE_IN_TLS, 0); @@ -1299,10 +1257,9 @@ gnutls_certificate_set_x509_system_trust(gnutls_certificate_credentials_t cred) * * Returns: number of CRLs processed, or a negative error code on error. **/ -int -gnutls_certificate_set_x509_crl_mem(gnutls_certificate_credentials_t res, - const gnutls_datum_t * CRL, - gnutls_x509_crt_fmt_t type) +int gnutls_certificate_set_x509_crl_mem(gnutls_certificate_credentials_t res, + const gnutls_datum_t *CRL, + gnutls_x509_crt_fmt_t type) { unsigned flags = GNUTLS_TL_USE_IN_TLS; int ret; @@ -1310,8 +1267,8 @@ gnutls_certificate_set_x509_crl_mem(gnutls_certificate_credentials_t res, if (res->flags & GNUTLS_CERTIFICATE_VERIFY_CRLS) flags |= GNUTLS_TL_VERIFY_CRL | GNUTLS_TL_FAIL_ON_INVALID_CRL; - ret = gnutls_x509_trust_list_add_trust_mem(res->tlist, NULL, CRL, - type, flags, 0); + ret = gnutls_x509_trust_list_add_trust_mem(res->tlist, NULL, CRL, type, + flags, 0); if (ret == GNUTLS_E_NO_CERTIFICATE_FOUND) return 0; @@ -1334,9 +1291,9 @@ gnutls_certificate_set_x509_crl_mem(gnutls_certificate_credentials_t res, * * Since: 2.4.0 **/ -int -gnutls_certificate_set_x509_crl(gnutls_certificate_credentials_t res, - gnutls_x509_crl_t * crl_list, int crl_list_size) +int gnutls_certificate_set_x509_crl(gnutls_certificate_credentials_t res, + gnutls_x509_crl_t *crl_list, + int crl_list_size) { int ret, i, j; gnutls_x509_crl_t *new_crl; @@ -1365,9 +1322,8 @@ gnutls_certificate_set_x509_crl(gnutls_certificate_credentials_t res, } } - ret = - gnutls_x509_trust_list_add_crls(res->tlist, new_crl, - crl_list_size, flags, 0); + ret = gnutls_x509_trust_list_add_crls(res->tlist, new_crl, + crl_list_size, flags, 0); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -1376,7 +1332,7 @@ gnutls_certificate_set_x509_crl(gnutls_certificate_credentials_t res, free(new_crl); return ret; - cleanup: +cleanup: for (j = 0; j < i; j++) gnutls_x509_crl_deinit(new_crl[j]); free(new_crl); @@ -1398,10 +1354,9 @@ gnutls_certificate_set_x509_crl(gnutls_certificate_credentials_t res, * * Returns: number of CRLs processed or a negative error code on error. **/ -int -gnutls_certificate_set_x509_crl_file(gnutls_certificate_credentials_t res, - const char *crlfile, - gnutls_x509_crt_fmt_t type) +int gnutls_certificate_set_x509_crl_file(gnutls_certificate_credentials_t res, + const char *crlfile, + gnutls_x509_crt_fmt_t type) { int ret; unsigned flags = GNUTLS_TL_USE_IN_TLS; @@ -1457,25 +1412,24 @@ gnutls_certificate_set_x509_crl_file(gnutls_certificate_credentials_t res, * Returns: On success this functions returns zero, and otherwise a negative value on error (see above for modifying that behavior). * **/ -int - gnutls_certificate_set_x509_simple_pkcs12_file - (gnutls_certificate_credentials_t res, const char *pkcs12file, - gnutls_x509_crt_fmt_t type, const char *password) { +int gnutls_certificate_set_x509_simple_pkcs12_file( + gnutls_certificate_credentials_t res, const char *pkcs12file, + gnutls_x509_crt_fmt_t type, const char *password) +{ gnutls_datum_t p12blob; size_t size; int ret; - p12blob.data = (void *)read_file(pkcs12file, RF_BINARY | RF_SENSITIVE, - &size); + p12blob.data = + (void *)read_file(pkcs12file, RF_BINARY | RF_SENSITIVE, &size); p12blob.size = (unsigned int)size; if (p12blob.data == NULL) { gnutls_assert(); return GNUTLS_E_FILE_ERROR; } - ret = - gnutls_certificate_set_x509_simple_pkcs12_mem(res, &p12blob, - type, password); + ret = gnutls_certificate_set_x509_simple_pkcs12_mem(res, &p12blob, type, + password); zeroize_key(p12blob.data, p12blob.size); free(p12blob.data); p12blob.size = 0; @@ -1521,10 +1475,10 @@ int * * Since: 2.8.0 **/ -int - gnutls_certificate_set_x509_simple_pkcs12_mem - (gnutls_certificate_credentials_t res, const gnutls_datum_t * p12blob, - gnutls_x509_crt_fmt_t type, const char *password) { +int gnutls_certificate_set_x509_simple_pkcs12_mem( + gnutls_certificate_credentials_t res, const gnutls_datum_t *p12blob, + gnutls_x509_crt_fmt_t type, const char *password) +{ gnutls_pkcs12_t p12; gnutls_x509_privkey_t key = NULL; gnutls_x509_crt_t *chain = NULL; @@ -1554,9 +1508,8 @@ int } } - ret = - gnutls_pkcs12_simple_parse(p12, password, &key, &chain, - &chain_size, NULL, NULL, &crl, 0); + ret = gnutls_pkcs12_simple_parse(p12, password, &key, &chain, + &chain_size, NULL, NULL, &crl, 0); gnutls_pkcs12_deinit(p12); if (ret < 0) { gnutls_assert(); @@ -1564,9 +1517,8 @@ int } if (key && chain) { - ret = - gnutls_certificate_set_x509_key(res, chain, chain_size, - key); + ret = gnutls_certificate_set_x509_key(res, chain, chain_size, + key); if (ret < 0) { gnutls_assert(); goto done; @@ -1592,7 +1544,7 @@ int else ret = 0; - done: +done: if (chain) { for (i = 0; i < chain_size; i++) gnutls_x509_crt_deinit(chain[i]); @@ -1634,8 +1586,8 @@ void gnutls_certificate_free_crls(gnutls_certificate_credentials_t sc) * * Since: 3.1.0 **/ -void gnutls_certificate_set_pin_function(gnutls_certificate_credentials_t - cred, gnutls_pin_callback_t fn, +void gnutls_certificate_set_pin_function(gnutls_certificate_credentials_t cred, + gnutls_pin_callback_t fn, void *userdata) { cred->pin.cb = fn; diff --git a/lib/cert-cred.c b/lib/cert-cred.c index 8b1e491cff..b63b6a9d32 100644 --- a/lib/cert-cred.c +++ b/lib/cert-cred.c @@ -48,24 +48,20 @@ /* * Adds a public/private key pair to a certificate credential */ -int -_gnutls_certificate_credential_append_keypair(gnutls_certificate_credentials_t - res, gnutls_privkey_t key, - gnutls_str_array_t names, - gnutls_pcert_st * crt, int nr) +int _gnutls_certificate_credential_append_keypair( + gnutls_certificate_credentials_t res, gnutls_privkey_t key, + gnutls_str_array_t names, gnutls_pcert_st *crt, int nr) { if (unlikely(INT_ADD_OVERFLOW(res->ncerts, 1))) { return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); } - res->sorted_cert_idx = _gnutls_reallocarray_fast(res->sorted_cert_idx, - res->ncerts + 1, - sizeof(unsigned int)); + res->sorted_cert_idx = _gnutls_reallocarray_fast( + res->sorted_cert_idx, res->ncerts + 1, sizeof(unsigned int)); if (res->sorted_cert_idx == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - res->certs = _gnutls_reallocarray_fast(res->certs, - res->ncerts + 1, + res->certs = _gnutls_reallocarray_fast(res->certs, res->ncerts + 1, sizeof(certs_st)); if (res->certs == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); @@ -103,9 +99,8 @@ _gnutls_certificate_credential_append_keypair(gnutls_certificate_credentials_t /* otherwise append it normally on the end */ res->sorted_cert_idx[res->ncerts] = res->ncerts; - finish: +finish: return 0; - } /** @@ -142,12 +137,10 @@ _gnutls_certificate_credential_append_keypair(gnutls_certificate_credentials_t * * Since: 3.0 **/ -int -gnutls_certificate_set_key(gnutls_certificate_credentials_t res, - const char **names, - int names_size, - gnutls_pcert_st * pcert_list, - int pcert_list_size, gnutls_privkey_t key) +int gnutls_certificate_set_key(gnutls_certificate_credentials_t res, + const char **names, int names_size, + gnutls_pcert_st *pcert_list, int pcert_list_size, + gnutls_privkey_t key) { int ret, i; gnutls_str_array_t str_names; @@ -168,9 +161,8 @@ gnutls_certificate_set_key(gnutls_certificate_credentials_t res, if (names != NULL && names_size > 0) { for (i = 0; i < names_size; i++) { - ret = - _gnutls_str_array_append_idna(&str_names, names[i], - strlen(names[i])); + ret = _gnutls_str_array_append_idna( + &str_names, names[i], strlen(names[i])); if (ret < 0) { ret = gnutls_assert_val(ret); goto cleanup; @@ -185,9 +177,8 @@ gnutls_certificate_set_key(gnutls_certificate_credentials_t res, goto cleanup; } - ret = - gnutls_x509_crt_import(crt, &pcert_list[0].cert, - GNUTLS_X509_FMT_DER); + ret = gnutls_x509_crt_import(crt, &pcert_list[0].cert, + GNUTLS_X509_FMT_DER); if (ret < 0) { gnutls_assert(); gnutls_x509_crt_deinit(crt); @@ -215,10 +206,8 @@ gnutls_certificate_set_key(gnutls_certificate_credentials_t res, memcpy(new_pcert_list, pcert_list, sizeof(gnutls_pcert_st) * pcert_list_size); - ret = - _gnutls_certificate_credential_append_keypair(res, key, str_names, - new_pcert_list, - pcert_list_size); + ret = _gnutls_certificate_credential_append_keypair( + res, key, str_names, new_pcert_list, pcert_list_size); if (ret < 0) { gnutls_assert(); gnutls_free(new_pcert_list); @@ -240,7 +229,7 @@ gnutls_certificate_set_key(gnutls_certificate_credentials_t res, CRED_RET_SUCCESS(res); - cleanup: +cleanup: _gnutls_str_array_clear(&str_names); return ret; } @@ -312,10 +301,9 @@ void gnutls_certificate_free_cas(gnutls_certificate_credentials_t sc) * * Since: 3.0 **/ -int -gnutls_certificate_get_issuer(gnutls_certificate_credentials_t sc, - gnutls_x509_crt_t cert, - gnutls_x509_crt_t * issuer, unsigned int flags) +int gnutls_certificate_get_issuer(gnutls_certificate_credentials_t sc, + gnutls_x509_crt_t cert, + gnutls_x509_crt_t *issuer, unsigned int flags) { return gnutls_x509_trust_list_get_issuer(sc->tlist, cert, issuer, flags); @@ -340,10 +328,9 @@ gnutls_certificate_get_issuer(gnutls_certificate_credentials_t sc, * * Since: 3.2.5 **/ -int -gnutls_certificate_get_crt_raw(gnutls_certificate_credentials_t sc, - unsigned idx1, - unsigned idx2, gnutls_datum_t * cert) +int gnutls_certificate_get_crt_raw(gnutls_certificate_credentials_t sc, + unsigned idx1, unsigned idx2, + gnutls_datum_t *cert) { if (idx1 >= sc->ncerts) return gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); @@ -411,8 +398,8 @@ void gnutls_certificate_free_credentials(gnutls_certificate_credentials_t sc) * * Returns: %GNUTLS_E_SUCCESS on success, or an error code. **/ -int -gnutls_certificate_allocate_credentials(gnutls_certificate_credentials_t * res) +int gnutls_certificate_allocate_credentials( + gnutls_certificate_credentials_t *res) { int ret; @@ -436,8 +423,8 @@ gnutls_certificate_allocate_credentials(gnutls_certificate_credentials_t * res) /* converts the given x509 certificate list to gnutls_pcert_st* and allocates * space for them. */ -static gnutls_pcert_st *alloc_and_load_x509_certs(gnutls_x509_crt_t * - certs, unsigned ncerts) +static gnutls_pcert_st *alloc_and_load_x509_certs(gnutls_x509_crt_t *certs, + unsigned ncerts) { gnutls_pcert_st *local_certs; int ret = 0; @@ -452,8 +439,8 @@ static gnutls_pcert_st *alloc_and_load_x509_certs(gnutls_x509_crt_t * return NULL; } - local_certs = _gnutls_reallocarray(NULL, ncerts, - sizeof(gnutls_pcert_st)); + local_certs = + _gnutls_reallocarray(NULL, ncerts, sizeof(gnutls_pcert_st)); if (local_certs == NULL) { gnutls_assert(); return NULL; @@ -480,8 +467,8 @@ static gnutls_pcert_st *alloc_and_load_x509_certs(gnutls_x509_crt_t * /* converts the given x509 key to gnutls_privkey* and allocates * space for it. */ -static gnutls_privkey_t -alloc_and_load_x509_key(gnutls_x509_privkey_t key, int deinit) +static gnutls_privkey_t alloc_and_load_x509_key(gnutls_x509_privkey_t key, + int deinit) { gnutls_privkey_t local_key; int ret = 0; @@ -495,10 +482,9 @@ alloc_and_load_x509_key(gnutls_x509_privkey_t key, int deinit) return NULL; } - ret = - gnutls_privkey_import_x509(local_key, key, - deinit ? - GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE : 0); + ret = gnutls_privkey_import_x509( + local_key, key, + deinit ? GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE : 0); if (ret < 0) { gnutls_assert(); gnutls_privkey_deinit(local_key); @@ -513,8 +499,8 @@ alloc_and_load_x509_key(gnutls_x509_privkey_t key, int deinit) /* converts the given raw key to gnutls_privkey* and allocates * space for it. */ -static gnutls_privkey_t -alloc_and_load_pkcs11_key(gnutls_pkcs11_privkey_t key, int deinit) +static gnutls_privkey_t alloc_and_load_pkcs11_key(gnutls_pkcs11_privkey_t key, + int deinit) { gnutls_privkey_t local_key; int ret = 0; @@ -528,11 +514,9 @@ alloc_and_load_pkcs11_key(gnutls_pkcs11_privkey_t key, int deinit) return NULL; } - ret = - gnutls_privkey_import_pkcs11(local_key, key, - deinit ? - GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE - : 0); + ret = gnutls_privkey_import_pkcs11( + local_key, key, + deinit ? GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE : 0); if (ret < 0) { gnutls_assert(); gnutls_privkey_deinit(local_key); @@ -556,20 +540,19 @@ alloc_and_load_pkcs11_key(gnutls_pkcs11_privkey_t key, int deinit) * function then the client will not be asked to send a certificate. Invoking * the function with @req GNUTLS_CERT_IGNORE has the same effect. **/ -void -gnutls_certificate_server_set_request(gnutls_session_t session, - gnutls_certificate_request_t req) +void gnutls_certificate_server_set_request(gnutls_session_t session, + gnutls_certificate_request_t req) { session->internals.send_cert_req = req; } static int call_legacy_cert_cb1(gnutls_session_t session, const struct gnutls_cert_retr_st *info, - gnutls_pcert_st ** certs, + gnutls_pcert_st **certs, unsigned int *pcert_length, - gnutls_ocsp_data_st ** ocsp, + gnutls_ocsp_data_st **ocsp, unsigned int *ocsp_length, - gnutls_privkey_t * privkey, unsigned int *flags) + gnutls_privkey_t *privkey, unsigned int *flags) { gnutls_retr2_st st2; gnutls_pcert_st *local_certs = NULL; @@ -581,10 +564,9 @@ static int call_legacy_cert_cb1(gnutls_session_t session, memset(&st2, 0, sizeof(st2)); - ret = - info->cred->legacy_cert_cb1(session, info->req_ca_rdn, info->nreqs, - info->pk_algos, info->pk_algos_length, - &st2); + ret = info->cred->legacy_cert_cb1(session, info->req_ca_rdn, + info->nreqs, info->pk_algos, + info->pk_algos_length, &st2); if (ret < 0) return gnutls_assert_val(ret); @@ -612,9 +594,8 @@ static int call_legacy_cert_cb1(gnutls_session_t session, #ifdef ENABLE_PKCS11 case GNUTLS_PRIVKEY_PKCS11: if (st2.key.pkcs11 != NULL) { - local_key = - alloc_and_load_pkcs11_key(st2.key.pkcs11, - st2.deinit_all); + local_key = alloc_and_load_pkcs11_key(st2.key.pkcs11, + st2.deinit_all); if (local_key == NULL) { gnutls_assert(); ret = GNUTLS_E_INTERNAL_ERROR; @@ -625,9 +606,8 @@ static int call_legacy_cert_cb1(gnutls_session_t session, #endif case GNUTLS_PRIVKEY_X509: if (st2.key.x509 != NULL) { - local_key = - alloc_and_load_x509_key(st2.key.x509, - st2.deinit_all); + local_key = alloc_and_load_x509_key(st2.key.x509, + st2.deinit_all); if (local_key == NULL) { gnutls_assert(); ret = GNUTLS_E_INTERNAL_ERROR; @@ -650,7 +630,7 @@ static int call_legacy_cert_cb1(gnutls_session_t session, ret = 0; - cleanup: +cleanup: if (st2.cert_type == GNUTLS_CRT_X509) { if (st2.deinit_all) { @@ -662,7 +642,6 @@ static int call_legacy_cert_cb1(gnutls_session_t session, } return ret; - } /** @@ -705,9 +684,10 @@ static int call_legacy_cert_cb1(gnutls_session_t session, * * Since: 3.0 **/ -void gnutls_certificate_set_retrieve_function - (gnutls_certificate_credentials_t cred, - gnutls_certificate_retrieve_function * func) { +void gnutls_certificate_set_retrieve_function( + gnutls_certificate_credentials_t cred, + gnutls_certificate_retrieve_function *func) +{ cred->legacy_cert_cb1 = func; if (!func) cred->get_cert_callback3 = NULL; @@ -717,20 +697,20 @@ void gnutls_certificate_set_retrieve_function static int call_legacy_cert_cb2(gnutls_session_t session, const struct gnutls_cert_retr_st *info, - gnutls_pcert_st ** certs, + gnutls_pcert_st **certs, unsigned int *pcert_length, - gnutls_ocsp_data_st ** ocsp, + gnutls_ocsp_data_st **ocsp, unsigned int *ocsp_length, - gnutls_privkey_t * privkey, unsigned int *flags) + gnutls_privkey_t *privkey, unsigned int *flags) { int ret; *ocsp_length = 0; /* flags will be assumed to be zero */ - ret = - info->cred->legacy_cert_cb2(session, info->req_ca_rdn, info->nreqs, - info->pk_algos, info->pk_algos_length, - certs, pcert_length, privkey); + ret = info->cred->legacy_cert_cb2(session, info->req_ca_rdn, + info->nreqs, info->pk_algos, + info->pk_algos_length, certs, + pcert_length, privkey); if (ret < 0) { gnutls_assert(); } @@ -782,9 +762,10 @@ static int call_legacy_cert_cb2(gnutls_session_t session, * * Since: 3.0 **/ -void gnutls_certificate_set_retrieve_function2 - (gnutls_certificate_credentials_t cred, - gnutls_certificate_retrieve_function2 * func) { +void gnutls_certificate_set_retrieve_function2( + gnutls_certificate_credentials_t cred, + gnutls_certificate_retrieve_function2 *func) +{ cred->legacy_cert_cb2 = func; if (!func) cred->get_cert_callback3 = NULL; @@ -850,9 +831,10 @@ void gnutls_certificate_set_retrieve_function2 * * Since: 3.6.3 **/ -void gnutls_certificate_set_retrieve_function3 - (gnutls_certificate_credentials_t cred, - gnutls_certificate_retrieve_function3 * func) { +void gnutls_certificate_set_retrieve_function3( + gnutls_certificate_credentials_t cred, + gnutls_certificate_retrieve_function3 *func) +{ cred->get_cert_callback3 = func; } @@ -879,9 +861,10 @@ void gnutls_certificate_set_retrieve_function3 * * Since: 2.10.0 **/ -void gnutls_certificate_set_verify_function - (gnutls_certificate_credentials_t cred, - gnutls_certificate_verify_function * func) { +void gnutls_certificate_set_verify_function( + gnutls_certificate_credentials_t cred, + gnutls_certificate_verify_function *func) +{ cred->verify_callback = func; } @@ -917,10 +900,9 @@ void gnutls_certificate_set_verify_function * * Since: 3.7.0 **/ -void gnutls_x509_trust_list_set_getissuer_function(gnutls_x509_trust_list_t - tlist, - gnutls_x509_trust_list_getissuer_function - * func) +void gnutls_x509_trust_list_set_getissuer_function( + gnutls_x509_trust_list_t tlist, + gnutls_x509_trust_list_getissuer_function *func) { tlist->issuer_callback = func; } @@ -986,9 +968,8 @@ void *gnutls_x509_trust_list_get_ptr(gnutls_x509_trust_list_t tlist) * * Since: 3.7.0 **/ -void gnutls_session_set_verify_output_function(gnutls_session_t session, - gnutls_verify_output_function * - func) +void gnutls_session_set_verify_output_function( + gnutls_session_t session, gnutls_verify_output_function *func) { session->internals.cert_output_callback = func; } @@ -1008,17 +989,15 @@ int _gnutls_check_key_cert_match(gnutls_certificate_credentials_t res) if (res->flags & GNUTLS_CERTIFICATE_SKIP_KEY_CERT_MATCH) return 0; - pk = gnutls_pubkey_get_pk_algorithm(res->certs[res->ncerts - - 1].cert_list[0].pubkey, - NULL); - pk2 = - gnutls_privkey_get_pk_algorithm(res->certs[res->ncerts - 1].pkey, - NULL); + pk = gnutls_pubkey_get_pk_algorithm( + res->certs[res->ncerts - 1].cert_list[0].pubkey, NULL); + pk2 = gnutls_privkey_get_pk_algorithm(res->certs[res->ncerts - 1].pkey, + NULL); if (GNUTLS_PK_IS_RSA(pk) && GNUTLS_PK_IS_RSA(pk2)) { if (pk2 == GNUTLS_PK_RSA_PSS && pk == GNUTLS_PK_RSA) { - _gnutls_debug_log - ("you cannot mix an RSA-PSS key with an RSA certificate\n"); + _gnutls_debug_log( + "you cannot mix an RSA-PSS key with an RSA certificate\n"); return GNUTLS_E_CERTIFICATE_KEY_MISMATCH; } @@ -1056,17 +1035,16 @@ int _gnutls_check_key_cert_match(gnutls_certificate_credentials_t res) goto finish; } - ret = - gnutls_pubkey_verify_data2(res->certs[res->ncerts - 1]. - cert_list[0].pubkey, sign_algo, - GNUTLS_VERIFY_ALLOW_BROKEN, &test, &sig); + ret = gnutls_pubkey_verify_data2( + res->certs[res->ncerts - 1].cert_list[0].pubkey, sign_algo, + GNUTLS_VERIFY_ALLOW_BROKEN, &test, &sig); gnutls_free(sig.data); if (ret < 0) return gnutls_assert_val(GNUTLS_E_CERTIFICATE_KEY_MISMATCH); - finish: +finish: return 0; } @@ -1087,11 +1065,10 @@ int _gnutls_check_key_cert_match(gnutls_certificate_credentials_t res) * * Since: 3.1.4 **/ -int -gnutls_certificate_verification_status_print(unsigned int status, - gnutls_certificate_type_t - type, gnutls_datum_t * out, - unsigned int flags) +int gnutls_certificate_verification_status_print(unsigned int status, + gnutls_certificate_type_t type, + gnutls_datum_t *out, + unsigned int flags) { gnutls_buffer_st str; @@ -1101,91 +1078,88 @@ gnutls_certificate_verification_status_print(unsigned int status, _gnutls_buffer_append_str(&str, _("The certificate is trusted. ")); else - _gnutls_buffer_append_str(&str, - _ - ("The certificate is NOT trusted. ")); + _gnutls_buffer_append_str( + &str, _("The certificate is NOT trusted. ")); if (type == GNUTLS_CRT_X509) { if (status & GNUTLS_CERT_REVOKED) - _gnutls_buffer_append_str(&str, - _ - ("The certificate chain is revoked. ")); + _gnutls_buffer_append_str( + &str, _("The certificate chain is revoked. ")); if (status & GNUTLS_CERT_MISMATCH) - _gnutls_buffer_append_str(&str, - _ - ("The certificate doesn't match the local copy (TOFU). ")); + _gnutls_buffer_append_str( + &str, + _("The certificate doesn't match the local copy (TOFU). ")); if (status & GNUTLS_CERT_REVOCATION_DATA_SUPERSEDED) - _gnutls_buffer_append_str(&str, - _ - ("The revocation or OCSP data are old and have been superseded. ")); + _gnutls_buffer_append_str( + &str, + _("The revocation or OCSP data are old and have been superseded. ")); if (status & GNUTLS_CERT_REVOCATION_DATA_ISSUED_IN_FUTURE) - _gnutls_buffer_append_str(&str, - _ - ("The revocation or OCSP data are issued with a future date. ")); + _gnutls_buffer_append_str( + &str, + _("The revocation or OCSP data are issued with a future date. ")); if (status & GNUTLS_CERT_SIGNER_NOT_FOUND) - _gnutls_buffer_append_str(&str, - _ - ("The certificate issuer is unknown. ")); + _gnutls_buffer_append_str( + &str, _("The certificate issuer is unknown. ")); if (status & GNUTLS_CERT_SIGNER_NOT_CA) - _gnutls_buffer_append_str(&str, - _ - ("The certificate issuer is not a CA. ")); + _gnutls_buffer_append_str( + &str, + _("The certificate issuer is not a CA. ")); } if (status & GNUTLS_CERT_INSECURE_ALGORITHM) - _gnutls_buffer_append_str(&str, - _ - ("The certificate chain uses insecure algorithm. ")); + _gnutls_buffer_append_str( + &str, + _("The certificate chain uses insecure algorithm. ")); if (status & GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE) - _gnutls_buffer_append_str(&str, - _ - ("The certificate chain violates the signer's constraints. ")); + _gnutls_buffer_append_str( + &str, + _("The certificate chain violates the signer's constraints. ")); if (status & GNUTLS_CERT_PURPOSE_MISMATCH) - _gnutls_buffer_append_str(&str, - _ - ("The certificate chain does not match the intended purpose. ")); + _gnutls_buffer_append_str( + &str, + _("The certificate chain does not match the intended purpose. ")); if (status & GNUTLS_CERT_NOT_ACTIVATED) - _gnutls_buffer_append_str(&str, - _ - ("The certificate chain uses not yet valid certificate. ")); + _gnutls_buffer_append_str( + &str, + _("The certificate chain uses not yet valid certificate. ")); if (status & GNUTLS_CERT_EXPIRED) - _gnutls_buffer_append_str(&str, - _ - ("The certificate chain uses expired certificate. ")); + _gnutls_buffer_append_str( + &str, + _("The certificate chain uses expired certificate. ")); if (status & GNUTLS_CERT_SIGNATURE_FAILURE) - _gnutls_buffer_append_str(&str, - _ - ("The signature in the certificate is invalid. ")); + _gnutls_buffer_append_str( + &str, + _("The signature in the certificate is invalid. ")); if (status & GNUTLS_CERT_UNEXPECTED_OWNER) - _gnutls_buffer_append_str(&str, - _ - ("The name in the certificate does not match the expected. ")); + _gnutls_buffer_append_str( + &str, + _("The name in the certificate does not match the expected. ")); if (status & GNUTLS_CERT_MISSING_OCSP_STATUS) - _gnutls_buffer_append_str(&str, - _ - ("The certificate requires the server to include an OCSP status in its response, but the OCSP status is missing. ")); + _gnutls_buffer_append_str( + &str, + _("The certificate requires the server to include an OCSP status in its response, but the OCSP status is missing. ")); if (status & GNUTLS_CERT_INVALID_OCSP_STATUS) - _gnutls_buffer_append_str(&str, - _ - ("The received OCSP status response is invalid. ")); + _gnutls_buffer_append_str( + &str, + _("The received OCSP status response is invalid. ")); if (status & GNUTLS_CERT_UNKNOWN_CRIT_EXTENSIONS) - _gnutls_buffer_append_str(&str, - _ - ("The certificate contains an unknown critical extension. ")); + _gnutls_buffer_append_str( + &str, + _("The certificate contains an unknown critical extension. ")); return _gnutls_buffer_to_datum(&str, out, 1); } @@ -1207,9 +1181,8 @@ gnutls_certificate_verification_status_print(unsigned int status, * following RFC7919. * **/ -void -gnutls_certificate_set_dh_params(gnutls_certificate_credentials_t res, - gnutls_dh_params_t dh_params) +void gnutls_certificate_set_dh_params(gnutls_certificate_credentials_t res, + gnutls_dh_params_t dh_params) { if (res->deinit_dh_params) { res->deinit_dh_params = 0; @@ -1218,10 +1191,8 @@ gnutls_certificate_set_dh_params(gnutls_certificate_credentials_t res, } res->dh_params = dh_params; - res->dh_sec_param = - gnutls_pk_bits_to_sec_param(GNUTLS_PK_DH, - _gnutls_mpi_get_nbits(dh_params->params - [0])); + res->dh_sec_param = gnutls_pk_bits_to_sec_param( + GNUTLS_PK_DH, _gnutls_mpi_get_nbits(dh_params->params[0])); } /** @@ -1243,13 +1214,12 @@ gnutls_certificate_set_dh_params(gnutls_certificate_credentials_t res, * * Since: 3.5.6 **/ -int -gnutls_certificate_set_known_dh_params(gnutls_certificate_credentials_t res, - gnutls_sec_param_t sec_param) +int gnutls_certificate_set_known_dh_params(gnutls_certificate_credentials_t res, + gnutls_sec_param_t sec_param) { res->dh_sec_param = sec_param; return 0; } -#endif /* DH */ +#endif /* DH */ diff --git a/lib/cert-cred.h b/lib/cert-cred.h index 76b8288a56..245a83ed5d 100644 --- a/lib/cert-cred.h +++ b/lib/cert-cred.h @@ -21,36 +21,32 @@ */ #ifndef GNUTLS_LIB_CERT_CRED_H -# define GNUTLS_LIB_CERT_CRED_H +#define GNUTLS_LIB_CERT_CRED_H -# include -# include "str_array.h" +#include +#include "str_array.h" -int -_gnutls_certificate_credential_append_keypair(gnutls_certificate_credentials_t - res, gnutls_privkey_t key, - gnutls_str_array_t names, - gnutls_pcert_st * crt, int nr); +int _gnutls_certificate_credential_append_keypair( + gnutls_certificate_credentials_t res, gnutls_privkey_t key, + gnutls_str_array_t names, gnutls_pcert_st *crt, int nr); -int -_gnutls_read_key_mem(gnutls_certificate_credentials_t res, - const void *key, int key_size, gnutls_x509_crt_fmt_t type, - const char *pass, unsigned int flags, - gnutls_privkey_t * rkey); +int _gnutls_read_key_mem(gnutls_certificate_credentials_t res, const void *key, + int key_size, gnutls_x509_crt_fmt_t type, + const char *pass, unsigned int flags, + gnutls_privkey_t *rkey); -int -_gnutls_read_key_file(gnutls_certificate_credentials_t res, - const char *keyfile, gnutls_x509_crt_fmt_t type, - const char *pass, unsigned int flags, - gnutls_privkey_t * rkey); +int _gnutls_read_key_file(gnutls_certificate_credentials_t res, + const char *keyfile, gnutls_x509_crt_fmt_t type, + const char *pass, unsigned int flags, + gnutls_privkey_t *rkey); -int _gnutls_get_x509_name(gnutls_x509_crt_t crt, gnutls_str_array_t * names); +int _gnutls_get_x509_name(gnutls_x509_crt_t crt, gnutls_str_array_t *names); -# define CRED_RET_SUCCESS(cred) \ +#define CRED_RET_SUCCESS(cred) \ if (cred->flags & GNUTLS_CERTIFICATE_API_V2) { \ - return cred->ncerts-1; \ - } else { \ - return 0; \ + return cred->ncerts - 1; \ + } else { \ + return 0; \ } -#endif /* GNUTLS_LIB_CERT_CRED_H */ +#endif /* GNUTLS_LIB_CERT_CRED_H */ diff --git a/lib/cert-session.c b/lib/cert-session.c index 5c514943bc..56a305c8aa 100644 --- a/lib/cert-session.c +++ b/lib/cert-session.c @@ -63,8 +63,8 @@ const gnutls_datum_t *gnutls_certificate_get_ours(gnutls_session_t session) CHECK_AUTH_TYPE(GNUTLS_CRD_CERTIFICATE, NULL); - cred = (gnutls_certificate_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_CERTIFICATE); + cred = (gnutls_certificate_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_CERTIFICATE); if (cred == NULL) { gnutls_assert(); return NULL; @@ -97,8 +97,7 @@ const gnutls_datum_t *gnutls_certificate_get_ours(gnutls_session_t session) * certificates, or %NULL in case of an error or if no certificate * was used. **/ -const gnutls_datum_t *gnutls_certificate_get_peers(gnutls_session_t - session, +const gnutls_datum_t *gnutls_certificate_get_peers(gnutls_session_t session, unsigned int *list_size) { cert_auth_info_t info; @@ -143,9 +142,8 @@ unsigned gnutls_certificate_client_get_request_status(gnutls_session_t session) * following RFC7919. * **/ -void -gnutls_certificate_set_params_function(gnutls_certificate_credentials_t - res, gnutls_params_function * func) +void gnutls_certificate_set_params_function( + gnutls_certificate_credentials_t res, gnutls_params_function *func) { res->params_func = func; } @@ -161,9 +159,8 @@ gnutls_certificate_set_params_function(gnutls_certificate_credentials_t * * Since: 3.4.7 **/ -void -gnutls_certificate_set_flags(gnutls_certificate_credentials_t res, - unsigned int flags) +void gnutls_certificate_set_flags(gnutls_certificate_credentials_t res, + unsigned int flags) { res->flags = flags; } @@ -178,9 +175,8 @@ gnutls_certificate_set_flags(gnutls_certificate_credentials_t res, * #gnutls_certificate_verify_flags enumerations. * **/ -void -gnutls_certificate_set_verify_flags(gnutls_certificate_credentials_t - res, unsigned int flags) +void gnutls_certificate_set_verify_flags(gnutls_certificate_credentials_t res, + unsigned int flags) { res->verify_flags = flags; } @@ -213,33 +209,30 @@ gnutls_certificate_get_verify_flags(gnutls_certificate_credentials_t res) * denial of service attacks. You can set them to zero to disable * limits. **/ -void -gnutls_certificate_set_verify_limits(gnutls_certificate_credentials_t res, - unsigned int max_bits, - unsigned int max_depth) +void gnutls_certificate_set_verify_limits(gnutls_certificate_credentials_t res, + unsigned int max_bits, + unsigned int max_depth) { res->verify_depth = max_depth; res->verify_bits = max_bits; } #ifdef ENABLE_OCSP -static int -_gnutls_ocsp_verify_mandatory_stapling(gnutls_session_t session, - gnutls_x509_crt_t cert, - unsigned int *ocsp_status); +static int _gnutls_ocsp_verify_mandatory_stapling(gnutls_session_t session, + gnutls_x509_crt_t cert, + unsigned int *ocsp_status); /* If the certificate is revoked status will be GNUTLS_CERT_REVOKED. * * Returns: * Zero on success, a negative error code otherwise. */ -static int -check_ocsp_response(gnutls_session_t session, gnutls_x509_crt_t cert, - gnutls_x509_trust_list_t tl, - unsigned verify_flags, - gnutls_x509_crt_t * cand_issuers, - unsigned cand_issuers_size, gnutls_datum_t * data, - unsigned int *ostatus) +static int check_ocsp_response(gnutls_session_t session, gnutls_x509_crt_t cert, + gnutls_x509_trust_list_t tl, + unsigned verify_flags, + gnutls_x509_crt_t *cand_issuers, + unsigned cand_issuers_size, gnutls_datum_t *data, + unsigned int *ostatus) { gnutls_ocsp_resp_t resp; int ret; @@ -255,9 +248,10 @@ check_ocsp_response(gnutls_session_t session, gnutls_x509_crt_t cert, ret = gnutls_ocsp_resp_import(resp, data); if (ret < 0) { - _gnutls_audit_log(session, - "There was an error parsing the OCSP response: %s.\n", - gnutls_strerror(ret)); + _gnutls_audit_log( + session, + "There was an error parsing the OCSP response: %s.\n", + gnutls_strerror(ret)); ret = gnutls_assert_val(0); check_failed = 1; *ostatus |= GNUTLS_CERT_INVALID; @@ -266,17 +260,17 @@ check_ocsp_response(gnutls_session_t session, gnutls_x509_crt_t cert, } if (gnutls_ocsp_resp_get_status(resp) != GNUTLS_OCSP_RESP_SUCCESSFUL) { - ret = - _gnutls_ocsp_verify_mandatory_stapling(session, cert, - ostatus); + ret = _gnutls_ocsp_verify_mandatory_stapling(session, cert, + ostatus); if (ret < 0) { gnutls_assert(); goto cleanup; } if (*ostatus & GNUTLS_CERT_MISSING_OCSP_STATUS) { - _gnutls_audit_log(session, - "Missing basic OCSP response while required: %s.\n", - gnutls_strerror(ret)); + _gnutls_audit_log( + session, + "Missing basic OCSP response while required: %s.\n", + gnutls_strerror(ret)); check_failed = 1; } ret = gnutls_assert_val(0); @@ -286,8 +280,9 @@ check_ocsp_response(gnutls_session_t session, gnutls_x509_crt_t cert, ret = gnutls_ocsp_resp_check_crt(resp, 0, cert); if (ret < 0) { ret = gnutls_assert_val(0); - _gnutls_audit_log(session, - "Got OCSP response with an unrelated certificate.\n"); + _gnutls_audit_log( + session, + "Got OCSP response with an unrelated certificate.\n"); check_failed = 1; *ostatus |= GNUTLS_CERT_INVALID; *ostatus |= GNUTLS_CERT_INVALID_OCSP_STATUS; @@ -299,9 +294,8 @@ check_ocsp_response(gnutls_session_t session, gnutls_x509_crt_t cert, if ((ret < 0 || status != 0) && cand_issuers_size > 0) { /* Attempt to verify against the certificate list provided by the server */ - ret = - gnutls_ocsp_resp_verify_direct(resp, cand_issuers[0], - &status, verify_flags); + ret = gnutls_ocsp_resp_verify_direct(resp, cand_issuers[0], + &status, verify_flags); /* if verification fails attempt to find whether any of the other * bundled CAs is an issuer of the OCSP response */ if ((ret < 0 || status != 0) && cand_issuers_size > 1) { @@ -309,12 +303,9 @@ check_ocsp_response(gnutls_session_t session, gnutls_x509_crt_t cert, unsigned status2, i; for (i = 1; i < cand_issuers_size; i++) { - ret2 = - gnutls_ocsp_resp_verify_direct(resp, - cand_issuers - [i], - &status2, - verify_flags); + ret2 = gnutls_ocsp_resp_verify_direct( + resp, cand_issuers[i], &status2, + verify_flags); if (ret2 >= 0 && status2 == 0) { status = status2; ret = ret2; @@ -349,12 +340,13 @@ check_ocsp_response(gnutls_session_t session, gnutls_x509_crt_t cert, } ret = gnutls_ocsp_resp_get_single(resp, 0, NULL, NULL, NULL, NULL, - &cert_status, &vtime, &ntime, - &rtime, NULL); + &cert_status, &vtime, &ntime, &rtime, + NULL); if (ret < 0) { - _gnutls_audit_log(session, - "There was an error parsing the OCSP response: %s.\n", - gnutls_strerror(ret)); + _gnutls_audit_log( + session, + "There was an error parsing the OCSP response: %s.\n", + gnutls_strerror(ret)); ret = gnutls_assert_val(0); check_failed = 1; *ostatus |= GNUTLS_CERT_INVALID; @@ -388,8 +380,9 @@ check_ocsp_response(gnutls_session_t session, gnutls_x509_crt_t cert, } else { /* there is a newer OCSP answer, don't trust this one */ if (ntime < now) { - _gnutls_audit_log(session, - "There is a newer OCSP response but was not provided by the server\n"); + _gnutls_audit_log( + session, + "There is a newer OCSP response but was not provided by the server\n"); check_failed = 1; *ostatus |= GNUTLS_CERT_INVALID; *ostatus |= GNUTLS_CERT_REVOCATION_DATA_SUPERSEDED; @@ -398,7 +391,7 @@ check_ocsp_response(gnutls_session_t session, gnutls_x509_crt_t cert, } ret = 0; - cleanup: +cleanup: if (check_failed == 0) session->internals.ocsp_check_ok = 1; @@ -407,10 +400,9 @@ check_ocsp_response(gnutls_session_t session, gnutls_x509_crt_t cert, return ret; } -static int -_gnutls_ocsp_verify_mandatory_stapling(gnutls_session_t session, - gnutls_x509_crt_t cert, - unsigned int *ocsp_status) +static int _gnutls_ocsp_verify_mandatory_stapling(gnutls_session_t session, + gnutls_x509_crt_t cert, + unsigned int *ocsp_status) { gnutls_x509_tlsfeatures_t tlsfeatures; int i, ret; @@ -434,9 +426,8 @@ _gnutls_ocsp_verify_mandatory_stapling(gnutls_session_t session, /* We have requested the status, now check whether the certificate mandates a response */ if (gnutls_x509_crt_get_tlsfeatures(cert, tlsfeatures, 0, NULL) == 0) { for (i = 0;; ++i) { - ret = - gnutls_x509_tlsfeatures_get(tlsfeatures, i, - &feature); + ret = gnutls_x509_tlsfeatures_get(tlsfeatures, i, + &feature); if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { break; } @@ -446,7 +437,7 @@ _gnutls_ocsp_verify_mandatory_stapling(gnutls_session_t session, goto cleanup; } - if (feature == 5 /* TLS ID for status request */ ) { + if (feature == 5 /* TLS ID for status request */) { /* We sent a status request, the certificate mandates a reply, but we did not get any. */ *ocsp_status |= GNUTLS_CERT_INVALID; *ocsp_status |= GNUTLS_CERT_MISSING_OCSP_STATUS; @@ -456,17 +447,18 @@ _gnutls_ocsp_verify_mandatory_stapling(gnutls_session_t session, } ret = 0; - cleanup: +cleanup: gnutls_x509_tlsfeatures_deinit(tlsfeatures); return ret; } #endif -#define CLEAR_CERTS for(x=0;xverify_flags | session->internals.additional_verify_flags; + verify_flags = cred->verify_flags | + session->internals.additional_verify_flags; /* generate a list of gnutls_certs based on the auth info * raw certs. */ peer_certificate_list_size = info->ncerts; - peer_certificate_list = - gnutls_calloc(peer_certificate_list_size, - sizeof(gnutls_x509_crt_t)); + peer_certificate_list = gnutls_calloc(peer_certificate_list_size, + sizeof(gnutls_x509_crt_t)); if (peer_certificate_list == NULL) { gnutls_assert(); return GNUTLS_E_MEMORY_ERROR; @@ -540,10 +530,9 @@ _gnutls_x509_cert_verify_peers(gnutls_session_t session, return ret; } - ret = - gnutls_x509_crt_import(peer_certificate_list[i], - &info->raw_certificate_list[i], - GNUTLS_X509_FMT_DER); + ret = gnutls_x509_crt_import(peer_certificate_list[i], + &info->raw_certificate_list[i], + GNUTLS_X509_FMT_DER); if (ret < 0) { gnutls_assert(); CLEAR_CERTS; @@ -559,11 +548,9 @@ _gnutls_x509_cert_verify_peers(gnutls_session_t session, for (i = 0; i < peer_certificate_list_size; i++) { ret = gnutls_ocsp_status_request_get2(session, i, &resp); if (ret < 0) { - ret = - _gnutls_ocsp_verify_mandatory_stapling(session, - peer_certificate_list - [i], - &ocsp_status); + ret = _gnutls_ocsp_verify_mandatory_stapling( + session, peer_certificate_list[i], + &ocsp_status); if (ret < 0) { gnutls_assert(); CLEAR_CERTS; @@ -580,12 +567,10 @@ _gnutls_x509_cert_verify_peers(gnutls_session_t session, cand_issuers_size = peer_certificate_list_size - i - 1; } - ret = - check_ocsp_response(session, - peer_certificate_list[i], - cred->tlist, - verify_flags, cand_issuers, - cand_issuers_size, &resp, &ocsp_status); + ret = check_ocsp_response(session, peer_certificate_list[i], + cred->tlist, verify_flags, + cand_issuers, cand_issuers_size, + &resp, &ocsp_status); if (ret < 0) { CLEAR_CERTS; @@ -594,28 +579,22 @@ _gnutls_x509_cert_verify_peers(gnutls_session_t session, } #endif - skip_ocsp: +skip_ocsp: /* Verify certificate */ if (session->internals.cert_output_callback != NULL) { - _gnutls_debug_log - ("Print full certificate path validation to trust root.\n"); - ret = - gnutls_x509_trust_list_verify_crt2(cred->tlist, - peer_certificate_list, - peer_certificate_list_size, - data, elements, - verify_flags, status, - session-> - internals.cert_output_callback); + _gnutls_debug_log( + "Print full certificate path validation to trust root.\n"); + ret = gnutls_x509_trust_list_verify_crt2( + cred->tlist, peer_certificate_list, + peer_certificate_list_size, data, elements, + verify_flags, status, + session->internals.cert_output_callback); } else { - ret = - gnutls_x509_trust_list_verify_crt2(cred->tlist, - peer_certificate_list, - peer_certificate_list_size, - data, elements, - verify_flags, status, - NULL); + ret = gnutls_x509_trust_list_verify_crt2( + cred->tlist, peer_certificate_list, + peer_certificate_list_size, data, elements, + verify_flags, status, NULL); } if (ret < 0) { @@ -663,8 +642,8 @@ _gnutls_x509_cert_verify_peers(gnutls_session_t session, * Returns: %GNUTLS_E_SUCCESS (0) when the validation is performed, or a negative error code otherwise. * A successful error code means that the @status parameter must be checked to obtain the validation status. **/ -int -gnutls_certificate_verify_peers2(gnutls_session_t session, unsigned int *status) +int gnutls_certificate_verify_peers2(gnutls_session_t session, + unsigned int *status) { return gnutls_certificate_verify_peers(session, NULL, 0, status); } @@ -709,9 +688,8 @@ gnutls_certificate_verify_peers2(gnutls_session_t session, unsigned int *status) * * Since: 3.1.4 **/ -int -gnutls_certificate_verify_peers3(gnutls_session_t session, - const char *hostname, unsigned int *status) +int gnutls_certificate_verify_peers3(gnutls_session_t session, + const char *hostname, unsigned int *status) { gnutls_typed_vdata_st data; @@ -767,10 +745,9 @@ gnutls_certificate_verify_peers3(gnutls_session_t session, * * Since: 3.3.0 **/ -int -gnutls_certificate_verify_peers(gnutls_session_t session, - gnutls_typed_vdata_st * data, - unsigned int elements, unsigned int *status) +int gnutls_certificate_verify_peers(gnutls_session_t session, + gnutls_typed_vdata_st *data, + unsigned int elements, unsigned int *status) { cert_auth_info_t info; @@ -804,19 +781,19 @@ gnutls_certificate_verify_peers(gnutls_session_t session, * -*/ static time_t -_gnutls_x509_get_raw_crt_activation_time(const gnutls_datum_t * cert) +_gnutls_x509_get_raw_crt_activation_time(const gnutls_datum_t *cert) { gnutls_x509_crt_t xcert; time_t result; result = gnutls_x509_crt_init(&xcert); if (result < 0) - return (time_t) - 1; + return (time_t)-1; result = gnutls_x509_crt_import(xcert, cert, GNUTLS_X509_FMT_DER); if (result < 0) { gnutls_x509_crt_deinit(xcert); - return (time_t) - 1; + return (time_t)-1; } result = gnutls_x509_crt_get_activation_time(xcert); @@ -837,19 +814,19 @@ _gnutls_x509_get_raw_crt_activation_time(const gnutls_datum_t * cert) * -*/ static time_t -_gnutls_x509_get_raw_crt_expiration_time(const gnutls_datum_t * cert) +_gnutls_x509_get_raw_crt_expiration_time(const gnutls_datum_t *cert) { gnutls_x509_crt_t xcert; time_t result; result = gnutls_x509_crt_init(&xcert); if (result < 0) - return (time_t) - 1; + return (time_t)-1; result = gnutls_x509_crt_import(xcert, cert, GNUTLS_X509_FMT_DER); if (result < 0) { gnutls_x509_crt_deinit(xcert); - return (time_t) - 1; + return (time_t)-1; } result = gnutls_x509_crt_get_expiration_time(xcert); @@ -877,21 +854,20 @@ time_t gnutls_certificate_expiration_time_peers(gnutls_session_t session) info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE); if (info == NULL) { - return (time_t) - 1; + return (time_t)-1; } if (info->raw_certificate_list == NULL || info->ncerts == 0) { gnutls_assert(); - return (time_t) - 1; + return (time_t)-1; } switch (get_certificate_type(session, GNUTLS_CTYPE_PEERS)) { case GNUTLS_CRT_X509: - return - _gnutls_x509_get_raw_crt_expiration_time - (&info->raw_certificate_list[0]); + return _gnutls_x509_get_raw_crt_expiration_time( + &info->raw_certificate_list[0]); default: - return (time_t) - 1; + return (time_t)-1; } } @@ -913,20 +889,19 @@ time_t gnutls_certificate_activation_time_peers(gnutls_session_t session) info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE); if (info == NULL) { - return (time_t) - 1; + return (time_t)-1; } if (info->raw_certificate_list == NULL || info->ncerts == 0) { gnutls_assert(); - return (time_t) - 1; + return (time_t)-1; } switch (get_certificate_type(session, GNUTLS_CTYPE_PEERS)) { case GNUTLS_CRT_X509: - return - _gnutls_x509_get_raw_crt_activation_time - (&info->raw_certificate_list[0]); + return _gnutls_x509_get_raw_crt_activation_time( + &info->raw_certificate_list[0]); default: - return (time_t) - 1; + return (time_t)-1; } } diff --git a/lib/cipher-cbc.c b/lib/cipher-cbc.c index 3b4992192a..732ffcc5fc 100644 --- a/lib/cipher-cbc.c +++ b/lib/cipher-cbc.c @@ -25,15 +25,15 @@ #include "gnutls_int.h" #include "cipher.h" -static void dummy_wait(record_parameters_st * params, - const uint8_t * data, size_t data_size, - unsigned int mac_data, unsigned int max_mac_data) +static void dummy_wait(record_parameters_st *params, const uint8_t *data, + size_t data_size, unsigned int mac_data, + unsigned int max_mac_data) { /* this hack is only needed on CBC ciphers when Encrypt-then-MAC mode * is not supported by the peer. */ unsigned v; unsigned int tag_size = - _gnutls_auth_cipher_tag_len(¶ms->read.ctx.tls12); + _gnutls_auth_cipher_tag_len(¶ms->read.ctx.tls12); unsigned hash_block = _gnutls_mac_block_size(params->mac); /* force additional hash compression function evaluations to prevent timing @@ -43,14 +43,14 @@ static void dummy_wait(record_parameters_st * params, if (params->mac && params->mac->id == GNUTLS_MAC_SHA384) /* v = 1 for the hash function padding + 16 for message length */ v = 17; - else /* v = 1 for the hash function padding + 8 for message length */ + else /* v = 1 for the hash function padding + 8 for message length */ v = 9; if (hash_block > 0) { int max_blocks = - (max_mac_data + v + hash_block - 1) / hash_block; + (max_mac_data + v + hash_block - 1) / hash_block; int hashed_blocks = - (mac_data + v + hash_block - 1) / hash_block; + (mac_data + v + hash_block - 1) / hash_block; unsigned to_hash; max_blocks -= hashed_blocks; @@ -59,10 +59,10 @@ static void dummy_wait(record_parameters_st * params, to_hash = max_blocks * hash_block; if ((unsigned)to_hash + 1 + tag_size < data_size) { - _gnutls_auth_cipher_add_auth - (¶ms->read.ctx.tls12, - data + data_size - tag_size - to_hash - 1, - to_hash); + _gnutls_auth_cipher_add_auth( + ¶ms->read.ctx.tls12, + data + data_size - tag_size - to_hash - 1, + to_hash); } } } @@ -71,11 +71,10 @@ static void dummy_wait(record_parameters_st * params, * any leaks which could make CBC ciphersuites without EtM usable as an * oracle to attacks. */ -int cbc_mac_verify(gnutls_session_t session, record_parameters_st * params, - uint8_t preamble[MAX_PREAMBLE_SIZE], - content_type_t type, - uint64_t sequence, - const uint8_t * data, size_t data_size, size_t tag_size) +int cbc_mac_verify(gnutls_session_t session, record_parameters_st *params, + uint8_t preamble[MAX_PREAMBLE_SIZE], content_type_t type, + uint64_t sequence, const uint8_t *data, size_t data_size, + size_t tag_size) { int ret; const version_entry_st *ver = get_version(session); @@ -89,7 +88,7 @@ int cbc_mac_verify(gnutls_session_t session, record_parameters_st * params, unsigned blocksize = _gnutls_cipher_get_block_size(params->cipher); #endif - pad = data[data_size - 1]; /* pad */ + pad = data[data_size - 1]; /* pad */ /* Check the padding bytes (TLS 1.x). * Note that we access all 256 bytes of ciphertext for padding check @@ -108,8 +107,8 @@ int cbc_mac_verify(gnutls_session_t session, record_parameters_st * params, } } - if (unlikely - (pad_failed != 0 || (1 + pad > ((int)data_size - tag_size)))) { + if (unlikely(pad_failed != 0 || + (1 + pad > ((int)data_size - tag_size)))) { /* We do not fail here. We check below for the * the pad_failed. If zero means success. */ @@ -124,16 +123,15 @@ int cbc_mac_verify(gnutls_session_t session, record_parameters_st * params, * MAC. */ preamble_size = - _gnutls_make_preamble(sequence, type, length, ver, preamble); + _gnutls_make_preamble(sequence, type, length, ver, preamble); - ret = - _gnutls_auth_cipher_add_auth(¶ms->read.ctx.tls12, preamble, - preamble_size); + ret = _gnutls_auth_cipher_add_auth(¶ms->read.ctx.tls12, preamble, + preamble_size); if (unlikely(ret < 0)) return gnutls_assert_val(ret); - ret = - _gnutls_auth_cipher_add_auth(¶ms->read.ctx.tls12, data, length); + ret = _gnutls_auth_cipher_add_auth(¶ms->read.ctx.tls12, data, + length); if (unlikely(ret < 0)) return gnutls_assert_val(ret); @@ -141,11 +139,10 @@ int cbc_mac_verify(gnutls_session_t session, record_parameters_st * params, if (unlikely(ret < 0)) return gnutls_assert_val(ret); - if (unlikely - (gnutls_memcmp(tag, tag_ptr, tag_size) != 0 || pad_failed != 0)) { + if (unlikely(gnutls_memcmp(tag, tag_ptr, tag_size) != 0 || + pad_failed != 0)) { /* HMAC was not the same. */ - dummy_wait(params, data, data_size, - length + preamble_size, + dummy_wait(params, data, data_size, length + preamble_size, preamble_size + data_size - tag_size - 1); return gnutls_assert_val(GNUTLS_E_DECRYPTION_FAILED); diff --git a/lib/cipher.c b/lib/cipher.c index eb4f2b8c90..352d631eed 100644 --- a/lib/cipher.c +++ b/lib/cipher.c @@ -44,81 +44,68 @@ #include -static int encrypt_packet(gnutls_session_t session, - uint8_t * cipher_data, int cipher_size, - gnutls_datum_t * plain, - size_t min_pad, - content_type_t _type, record_parameters_st * params); - -static int decrypt_packet(gnutls_session_t session, - gnutls_datum_t * ciphertext, - gnutls_datum_t * plain, - content_type_t type, - record_parameters_st * params, uint64_t sequence); - -static int -decrypt_packet_tls13(gnutls_session_t session, - gnutls_datum_t * ciphertext, - gnutls_datum_t * plain, - content_type_t * type, record_parameters_st * params, - uint64_t sequence); - -static int -encrypt_packet_tls13(gnutls_session_t session, - uint8_t * cipher_data, size_t cipher_size, - gnutls_datum_t * plain, - size_t pad_size, - uint8_t type, record_parameters_st * params); +static int encrypt_packet(gnutls_session_t session, uint8_t *cipher_data, + int cipher_size, gnutls_datum_t *plain, + size_t min_pad, content_type_t _type, + record_parameters_st *params); + +static int decrypt_packet(gnutls_session_t session, gnutls_datum_t *ciphertext, + gnutls_datum_t *plain, content_type_t type, + record_parameters_st *params, uint64_t sequence); + +static int decrypt_packet_tls13(gnutls_session_t session, + gnutls_datum_t *ciphertext, + gnutls_datum_t *plain, content_type_t *type, + record_parameters_st *params, + uint64_t sequence); + +static int encrypt_packet_tls13(gnutls_session_t session, uint8_t *cipher_data, + size_t cipher_size, gnutls_datum_t *plain, + size_t pad_size, uint8_t type, + record_parameters_st *params); /* returns ciphertext which contains the headers too. This also * calculates the size in the header field. * */ -int -_gnutls_encrypt(gnutls_session_t session, - const uint8_t * data, size_t data_size, - size_t min_pad, - mbuffer_st * bufel, - content_type_t type, record_parameters_st * params) +int _gnutls_encrypt(gnutls_session_t session, const uint8_t *data, + size_t data_size, size_t min_pad, mbuffer_st *bufel, + content_type_t type, record_parameters_st *params) { gnutls_datum_t plaintext; const version_entry_st *vers = - (session->internals.hsk_flags & HSK_EARLY_DATA_IN_FLIGHT) && - !IS_SERVER(session) ? - session->internals.resumed_security_parameters.pversion : - get_version(session); + (session->internals.hsk_flags & HSK_EARLY_DATA_IN_FLIGHT) && + !IS_SERVER(session) ? + session->internals.resumed_security_parameters.pversion : + get_version(session); int ret; - plaintext.data = (uint8_t *) data; + plaintext.data = (uint8_t *)data; plaintext.size = data_size; if (vers && vers->tls13_sem) { /* it fills the header, as it is included in the authenticated * data of the AEAD cipher. */ - ret = - encrypt_packet_tls13(session, - _mbuffer_get_udata_ptr(bufel), - _mbuffer_get_udata_size(bufel), - &plaintext, min_pad, type, params); + ret = encrypt_packet_tls13(session, + _mbuffer_get_udata_ptr(bufel), + _mbuffer_get_udata_size(bufel), + &plaintext, min_pad, type, params); if (ret < 0) return gnutls_assert_val(ret); } else { - ret = - encrypt_packet(session, - _mbuffer_get_udata_ptr(bufel), - _mbuffer_get_udata_size - (bufel), &plaintext, min_pad, type, params); + ret = encrypt_packet(session, _mbuffer_get_udata_ptr(bufel), + _mbuffer_get_udata_size(bufel), &plaintext, + min_pad, type, params); if (ret < 0) return gnutls_assert_val(ret); - } if (IS_DTLS(session)) - _gnutls_write_uint16(ret, ((uint8_t *) - _mbuffer_get_uhead_ptr(bufel)) + 11); + _gnutls_write_uint16( + ret, ((uint8_t *)_mbuffer_get_uhead_ptr(bufel)) + 11); else - _gnutls_write_uint16(ret, ((uint8_t *) - _mbuffer_get_uhead_ptr(bufel)) + 3); + _gnutls_write_uint16( + ret, ((uint8_t *)_mbuffer_get_uhead_ptr(bufel)) + 3); _mbuffer_set_udata_size(bufel, ret); _mbuffer_set_uhead_size(bufel, 0); @@ -131,12 +118,9 @@ _gnutls_encrypt(gnutls_session_t session, * * The output is preallocated with the maximum allowed data size. */ -int -_gnutls_decrypt(gnutls_session_t session, - gnutls_datum_t * ciphertext, - gnutls_datum_t * output, - content_type_t * type, - record_parameters_st * params, uint64_t sequence) +int _gnutls_decrypt(gnutls_session_t session, gnutls_datum_t *ciphertext, + gnutls_datum_t *output, content_type_t *type, + record_parameters_st *params, uint64_t sequence) { int ret; const version_entry_st *vers = get_version(session); @@ -145,25 +129,22 @@ _gnutls_decrypt(gnutls_session_t session, return 0; if (vers && vers->tls13_sem) - ret = - decrypt_packet_tls13(session, ciphertext, - output, type, params, sequence); + ret = decrypt_packet_tls13(session, ciphertext, output, type, + params, sequence); else - ret = - decrypt_packet(session, ciphertext, - output, *type, params, sequence); + ret = decrypt_packet(session, ciphertext, output, *type, params, + sequence); if (ret < 0) return gnutls_assert_val(ret); return ret; } -inline static int -calc_enc_length_block(gnutls_session_t session, - const version_entry_st * ver, - int data_size, - int hash_size, uint8_t * pad, - unsigned auth_cipher, uint16_t blocksize, unsigned etm) +inline static int calc_enc_length_block(gnutls_session_t session, + const version_entry_st *ver, + int data_size, int hash_size, + uint8_t *pad, unsigned auth_cipher, + uint16_t blocksize, unsigned etm) { /* pad is the LH pad the user wants us to add. Besides * this LH pad, we only add minimal padding @@ -174,7 +155,7 @@ calc_enc_length_block(gnutls_session_t session, if (etm == 0) pre_length += hash_size; - new_pad = (uint8_t) (blocksize - (pre_length % blocksize)) + *pad; + new_pad = (uint8_t)(blocksize - (pre_length % blocksize)) + *pad; if (new_pad > 255) new_pad -= blocksize; @@ -183,15 +164,15 @@ calc_enc_length_block(gnutls_session_t session, length = data_size + hash_size + *pad; if (_gnutls_version_has_explicit_iv(ver)) - length += blocksize; /* for the IV */ + length += blocksize; /* for the IV */ return length; } -inline static int -calc_enc_length_stream(gnutls_session_t session, int data_size, - int hash_size, unsigned auth_cipher, - unsigned exp_iv_size) +inline static int calc_enc_length_stream(gnutls_session_t session, + int data_size, int hash_size, + unsigned auth_cipher, + unsigned exp_iv_size) { unsigned int length; @@ -205,10 +186,9 @@ calc_enc_length_stream(gnutls_session_t session, int data_size, /* generates the authentication data (data to be hashed only * and are not to be sent). Returns their size. */ -int -_gnutls_make_preamble(uint64_t uint64_data, uint8_t type, unsigned int length, - const version_entry_st * ver, - uint8_t preamble[MAX_PREAMBLE_SIZE]) +int _gnutls_make_preamble(uint64_t uint64_data, uint8_t type, + unsigned int length, const version_entry_st *ver, + uint8_t preamble[MAX_PREAMBLE_SIZE]) { uint8_t *p = preamble; uint16_t c_length; @@ -222,7 +202,7 @@ _gnutls_make_preamble(uint64_t uint64_data, uint8_t type, unsigned int length, #ifdef ENABLE_SSL3 if (ver->id != GNUTLS_SSL3) #endif - { /* TLS protocols */ + { /* TLS protocols */ *p = ver->major; p++; *p = ver->minor; @@ -238,12 +218,10 @@ _gnutls_make_preamble(uint64_t uint64_data, uint8_t type, unsigned int length, * which has cipher_size size. * return the actual encrypted data length. */ -static int -encrypt_packet(gnutls_session_t session, - uint8_t * cipher_data, int cipher_size, - gnutls_datum_t * plain, - size_t min_pad, - content_type_t type, record_parameters_st * params) +static int encrypt_packet(gnutls_session_t session, uint8_t *cipher_data, + int cipher_size, gnutls_datum_t *plain, + size_t min_pad, content_type_t type, + record_parameters_st *params) { uint8_t pad; int length, ret; @@ -266,8 +244,8 @@ encrypt_packet(gnutls_session_t session, if (algo_type == CIPHER_BLOCK && params->etm != 0) etm = 1; - _gnutls_hard_log("ENC[%p]: cipher: %s, MAC: %s, Epoch: %u\n", - session, _gnutls_cipher_get_name(params->cipher), + _gnutls_hard_log("ENC[%p]: cipher: %s, MAC: %s, Epoch: %u\n", session, + _gnutls_cipher_get_name(params->cipher), _gnutls_mac_get_name(params->mac), (unsigned int)params->epoch); @@ -282,20 +260,18 @@ encrypt_packet(gnutls_session_t session, pad = min_pad; - length = - calc_enc_length_block(session, ver, plain->size, - tag_size, &pad, auth_cipher, - blocksize, etm); - } else { /* AEAD + STREAM */ + length = calc_enc_length_block(session, ver, plain->size, + tag_size, &pad, auth_cipher, + blocksize, etm); + } else { /* AEAD + STREAM */ imp_iv_size = - _gnutls_cipher_get_implicit_iv_size(params->cipher); + _gnutls_cipher_get_implicit_iv_size(params->cipher); exp_iv_size = - _gnutls_cipher_get_explicit_iv_size(params->cipher); + _gnutls_cipher_get_explicit_iv_size(params->cipher); pad = 0; - length = - calc_enc_length_stream(session, plain->size, - tag_size, auth_cipher, exp_iv_size); + length = calc_enc_length_stream(session, plain->size, tag_size, + auth_cipher, exp_iv_size); } if (length < 0) @@ -314,22 +290,22 @@ encrypt_packet(gnutls_session_t session, /* copy the random IV. */ memcpy(data_ptr, nonce, blocksize); - ret = - _gnutls_auth_cipher_setiv(¶ms->write.ctx.tls12, - data_ptr, blocksize); + ret = _gnutls_auth_cipher_setiv( + ¶ms->write.ctx.tls12, data_ptr, blocksize); if (ret < 0) return gnutls_assert_val(ret); /*data_ptr += blocksize; */ cipher_data += blocksize; } - } else { /* AEAD */ - if ((params->cipher->flags & GNUTLS_CIPHER_FLAG_XOR_NONCE) == 0) { + } else { /* AEAD */ + if ((params->cipher->flags & GNUTLS_CIPHER_FLAG_XOR_NONCE) == + 0) { /* Values in AEAD are pretty fixed in TLS 1.2 for 128-bit block */ if (params->write.iv_size != imp_iv_size) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + return gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); /* Instead of generating a new nonce on every packet, we use the * write.sequence_number (It is a MAY on RFC 5288), and safer @@ -343,12 +319,11 @@ encrypt_packet(gnutls_session_t session, /*data_ptr += exp_iv_size; */ cipher_data += exp_iv_size; - } else { /* XOR nonce with IV */ - if (unlikely - (params->write.iv_size != 12 || imp_iv_size != 12 - || exp_iv_size != 0)) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + } else { /* XOR nonce with IV */ + if (unlikely(params->write.iv_size != 12 || + imp_iv_size != 12 || exp_iv_size != 0)) + return gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); memset(nonce, 0, 4); _gnutls_write_uint64(params->write.sequence_number, @@ -363,47 +338,39 @@ encrypt_packet(gnutls_session_t session, else ret = plain->size; - preamble_size = - _gnutls_make_preamble(params->write.sequence_number, - type, ret, ver, preamble); + preamble_size = _gnutls_make_preamble(params->write.sequence_number, + type, ret, ver, preamble); if (algo_type == CIPHER_BLOCK || algo_type == CIPHER_STREAM) { /* add the authenticated data */ - ret = - _gnutls_auth_cipher_add_auth(¶ms->write.ctx.tls12, - preamble, preamble_size); + ret = _gnutls_auth_cipher_add_auth(¶ms->write.ctx.tls12, + preamble, preamble_size); if (ret < 0) return gnutls_assert_val(ret); if (etm && explicit_iv) { /* In EtM we need to hash the IV as well */ - ret = - _gnutls_auth_cipher_add_auth(¶ms->write. - ctx.tls12, - full_cipher_ptr, - blocksize); + ret = _gnutls_auth_cipher_add_auth( + ¶ms->write.ctx.tls12, full_cipher_ptr, + blocksize); if (ret < 0) return gnutls_assert_val(ret); } /* Actual encryption. */ - ret = - _gnutls_auth_cipher_encrypt2_tag(¶ms->write.ctx.tls12, - plain->data, - plain->size, cipher_data, - cipher_size, pad); + ret = _gnutls_auth_cipher_encrypt2_tag(¶ms->write.ctx.tls12, + plain->data, plain->size, + cipher_data, cipher_size, + pad); if (ret < 0) return gnutls_assert_val(ret); - } else { /* AEAD */ - ret = - _gnutls_aead_cipher_encrypt(¶ms->write.ctx.tls12.cipher, - nonce, - imp_iv_size + exp_iv_size, - preamble, preamble_size, - tag_size, plain->data, - plain->size, cipher_data, - cipher_size); + } else { /* AEAD */ + ret = _gnutls_aead_cipher_encrypt( + ¶ms->write.ctx.tls12.cipher, nonce, + imp_iv_size + exp_iv_size, preamble, preamble_size, + tag_size, plain->data, plain->size, cipher_data, + cipher_size); if (ret < 0) return gnutls_assert_val(ret); } @@ -411,12 +378,10 @@ encrypt_packet(gnutls_session_t session, return length; } -static int -encrypt_packet_tls13(gnutls_session_t session, - uint8_t * cipher_data, size_t cipher_size, - gnutls_datum_t * plain, - size_t pad_size, - uint8_t type, record_parameters_st * params) +static int encrypt_packet_tls13(gnutls_session_t session, uint8_t *cipher_data, + size_t cipher_size, gnutls_datum_t *plain, + size_t pad_size, uint8_t type, + record_parameters_st *params) { int ret; unsigned int tag_size = params->write.aead_tag_size; @@ -431,8 +396,8 @@ encrypt_packet_tls13(gnutls_session_t session, if (unlikely(ver == NULL)) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - _gnutls_hard_log("ENC[%p]: cipher: %s, MAC: %s, Epoch: %u\n", - session, _gnutls_cipher_get_name(params->cipher), + _gnutls_hard_log("ENC[%p]: cipher: %s, MAC: %s, Epoch: %u\n", session, + _gnutls_cipher_get_name(params->cipher), _gnutls_mac_get_name(params->mac), (unsigned int)params->epoch); @@ -460,7 +425,7 @@ encrypt_packet_tls13(gnutls_session_t session, /* check whether padding would exceed max */ if (total > max) { - if (unlikely(max < (ssize_t) plain->size + 1)) + if (unlikely(max < (ssize_t)plain->size + 1)) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); pad_size = max - plain->size - 1; @@ -479,7 +444,8 @@ encrypt_packet_tls13(gnutls_session_t session, iov[0].iov_base = plain->data; iov[0].iov_len = plain->size; - if (pad_size || (session->internals.flags & GNUTLS_SAFE_PADDING_CHECK)) { + if (pad_size || + (session->internals.flags & GNUTLS_SAFE_PADDING_CHECK)) { uint8_t *pad = gnutls_calloc(1, 1 + pad_size); if (pad == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); @@ -490,22 +456,18 @@ encrypt_packet_tls13(gnutls_session_t session, iov[1].iov_len = 1 + pad_size; ret = gnutls_aead_cipher_encryptv(¶ms->write.ctx.aead, - nonce, iv_size, - auth_iov, 1, - tag_size, - iov, 2, - cipher_data, &cipher_size); + nonce, iv_size, auth_iov, 1, + tag_size, iov, 2, cipher_data, + &cipher_size); gnutls_free(pad); } else { iov[1].iov_base = &type; iov[1].iov_len = 1; ret = gnutls_aead_cipher_encryptv(¶ms->write.ctx.aead, - nonce, iv_size, - auth_iov, 1, - tag_size, - iov, 2, - cipher_data, &cipher_size); + nonce, iv_size, auth_iov, 1, + tag_size, iov, 2, cipher_data, + &cipher_size); } if (ret < 0) @@ -517,12 +479,9 @@ encrypt_packet_tls13(gnutls_session_t session, /* Deciphers the ciphertext packet, and puts the result to plain. * Returns the actual plaintext packet size. */ -static int -decrypt_packet(gnutls_session_t session, - gnutls_datum_t * ciphertext, - gnutls_datum_t * plain, - content_type_t type, record_parameters_st * params, - uint64_t sequence) +static int decrypt_packet(gnutls_session_t session, gnutls_datum_t *ciphertext, + gnutls_datum_t *plain, content_type_t type, + record_parameters_st *params, uint64_t sequence) { uint8_t tag[MAX_HASH_SIZE]; uint8_t nonce[MAX_CIPHER_IV_SIZE]; @@ -535,7 +494,7 @@ decrypt_packet(gnutls_session_t session, unsigned int preamble_size = 0; const version_entry_st *ver = get_version(session); unsigned int tag_size = - _gnutls_auth_cipher_tag_len(¶ms->read.ctx.tls12); + _gnutls_auth_cipher_tag_len(¶ms->read.ctx.tls12); unsigned int explicit_iv = _gnutls_version_has_explicit_iv(ver); unsigned imp_iv_size, exp_iv_size; unsigned cipher_type = _gnutls_cipher_type(params->cipher); @@ -554,18 +513,15 @@ decrypt_packet(gnutls_session_t session, /* if EtM mode and not AEAD */ if (etm) { if (unlikely(ciphertext->size < tag_size)) - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET_LENGTH); - - preamble_size = _gnutls_make_preamble(sequence, - type, - ciphertext->size - - tag_size, ver, preamble); - - ret = - _gnutls_auth_cipher_add_auth(¶ms->read.ctx.tls12, - preamble, preamble_size); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + + preamble_size = _gnutls_make_preamble( + sequence, type, ciphertext->size - tag_size, ver, + preamble); + + ret = _gnutls_auth_cipher_add_auth(¶ms->read.ctx.tls12, + preamble, preamble_size); if (unlikely(ret < 0)) return gnutls_assert_val(ret); @@ -575,16 +531,15 @@ decrypt_packet(gnutls_session_t session, if (unlikely(ret < 0)) return gnutls_assert_val(ret); - ret = - _gnutls_auth_cipher_tag(¶ms->read.ctx.tls12, tag, - tag_size); + ret = _gnutls_auth_cipher_tag(¶ms->read.ctx.tls12, tag, + tag_size); if (unlikely(ret < 0)) return gnutls_assert_val(ret); - if (unlikely - (gnutls_memcmp - (tag, &ciphertext->data[ciphertext->size - tag_size], - tag_size) != 0)) { + if (unlikely(gnutls_memcmp(tag, + &ciphertext->data[ciphertext->size - + tag_size], + tag_size) != 0)) { /* HMAC was not the same. */ return gnutls_assert_val(GNUTLS_E_DECRYPTION_FAILED); } @@ -597,35 +552,33 @@ decrypt_packet(gnutls_session_t session, /* The way AEAD ciphers are defined in RFC5246, it allows * only stream ciphers. */ - if (unlikely - (_gnutls_auth_cipher_is_aead(¶ms->read.ctx.tls12) == 0)) + if (unlikely(_gnutls_auth_cipher_is_aead( + ¶ms->read.ctx.tls12) == 0)) return gnutls_assert_val(GNUTLS_E_DECRYPTION_FAILED); if (unlikely(ciphertext->size < (tag_size + exp_iv_size))) return gnutls_assert_val(GNUTLS_E_DECRYPTION_FAILED); - if ((params->cipher->flags & GNUTLS_CIPHER_FLAG_XOR_NONCE) == 0) { + if ((params->cipher->flags & GNUTLS_CIPHER_FLAG_XOR_NONCE) == + 0) { /* Values in AEAD are pretty fixed in TLS 1.2 for 128-bit block */ if (unlikely(params->read.iv_size != 4)) - return - gnutls_assert_val - (GNUTLS_E_DECRYPTION_FAILED); + return gnutls_assert_val( + GNUTLS_E_DECRYPTION_FAILED); memcpy(nonce, params->read.iv, imp_iv_size); - memcpy(&nonce[imp_iv_size], - ciphertext->data, exp_iv_size); + memcpy(&nonce[imp_iv_size], ciphertext->data, + exp_iv_size); ciphertext->data += exp_iv_size; ciphertext->size -= exp_iv_size; - } else { /* XOR nonce with IV */ - if (unlikely - (params->read.iv_size != 12 || imp_iv_size != 12 - || exp_iv_size != 0)) - return - gnutls_assert_val - (GNUTLS_E_DECRYPTION_FAILED); + } else { /* XOR nonce with IV */ + if (unlikely(params->read.iv_size != 12 || + imp_iv_size != 12 || exp_iv_size != 0)) + return gnutls_assert_val( + GNUTLS_E_DECRYPTION_FAILED); memset(nonce, 0, 4); _gnutls_write_uint64(sequence, &nonce[4]); @@ -640,26 +593,23 @@ decrypt_packet(gnutls_session_t session, /* Pass the type, version, length and plain through * MAC. */ - preamble_size = - _gnutls_make_preamble(sequence, type, - length, ver, preamble); + preamble_size = _gnutls_make_preamble(sequence, type, length, + ver, preamble); if (unlikely((unsigned)length_to_decrypt > plain->size)) { - _gnutls_audit_log(session, - "Received %u bytes, while expecting less than %u\n", - (unsigned int)length_to_decrypt, - (unsigned int)plain->size); + _gnutls_audit_log( + session, + "Received %u bytes, while expecting less than %u\n", + (unsigned int)length_to_decrypt, + (unsigned int)plain->size); return gnutls_assert_val(GNUTLS_E_DECRYPTION_FAILED); } - ret = - _gnutls_aead_cipher_decrypt(¶ms->read.ctx.tls12.cipher, - nonce, - exp_iv_size + imp_iv_size, - preamble, preamble_size, - tag_size, ciphertext->data, - length_to_decrypt, plain->data, - plain->size); + ret = _gnutls_aead_cipher_decrypt( + ¶ms->read.ctx.tls12.cipher, nonce, + exp_iv_size + imp_iv_size, preamble, preamble_size, + tag_size, ciphertext->data, length_to_decrypt, + plain->data, plain->size); if (unlikely(ret < 0)) return gnutls_assert_val(ret); @@ -668,9 +618,8 @@ decrypt_packet(gnutls_session_t session, break; case CIPHER_STREAM: if (unlikely(ciphertext->size < tag_size)) - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET_LENGTH); length_to_decrypt = ciphertext->size; length = ciphertext->size - tag_size; @@ -679,36 +628,33 @@ decrypt_packet(gnutls_session_t session, /* Pass the type, version, length and plain through * MAC. */ - preamble_size = - _gnutls_make_preamble(sequence, type, - length, ver, preamble); + preamble_size = _gnutls_make_preamble(sequence, type, length, + ver, preamble); - ret = - _gnutls_auth_cipher_add_auth(¶ms->read.ctx.tls12, - preamble, preamble_size); + ret = _gnutls_auth_cipher_add_auth(¶ms->read.ctx.tls12, + preamble, preamble_size); if (unlikely(ret < 0)) return gnutls_assert_val(ret); if (unlikely((unsigned)length_to_decrypt > plain->size)) { - _gnutls_audit_log(session, - "Received %u bytes, while expecting less than %u\n", - (unsigned int)length_to_decrypt, - (unsigned int)plain->size); + _gnutls_audit_log( + session, + "Received %u bytes, while expecting less than %u\n", + (unsigned int)length_to_decrypt, + (unsigned int)plain->size); return gnutls_assert_val(GNUTLS_E_DECRYPTION_FAILED); } - ret = - _gnutls_auth_cipher_decrypt2(¶ms->read.ctx.tls12, - ciphertext->data, - length_to_decrypt, - plain->data, plain->size); + ret = _gnutls_auth_cipher_decrypt2(¶ms->read.ctx.tls12, + ciphertext->data, + length_to_decrypt, + plain->data, plain->size); if (unlikely(ret < 0)) return gnutls_assert_val(ret); - ret = - _gnutls_auth_cipher_tag(¶ms->read.ctx.tls12, tag, - tag_size); + ret = _gnutls_auth_cipher_tag(¶ms->read.ctx.tls12, tag, + tag_size); if (unlikely(ret < 0)) return gnutls_assert_val(ret); @@ -719,21 +665,19 @@ decrypt_packet(gnutls_session_t session, break; case CIPHER_BLOCK: if (unlikely(ciphertext->size < blocksize)) - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET_LENGTH); if (etm == 0) { if (unlikely(ciphertext->size % blocksize != 0)) - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET_LENGTH); } else { - if (unlikely - ((ciphertext->size - tag_size) % blocksize != 0)) - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + if (unlikely((ciphertext->size - tag_size) % + blocksize != + 0)) + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET_LENGTH); } /* ignore the IV in TLS 1.1+ @@ -762,11 +706,10 @@ decrypt_packet(gnutls_session_t session, return gnutls_assert_val(GNUTLS_E_DECRYPTION_FAILED); if (etm == 0) { - ret = - _gnutls_cipher_decrypt2(¶ms->read.ctx.tls12. - cipher, ciphertext->data, - ciphertext->size, - plain->data, plain->size); + ret = _gnutls_cipher_decrypt2( + ¶ms->read.ctx.tls12.cipher, + ciphertext->data, ciphertext->size, plain->data, + plain->size); if (unlikely(ret < 0)) return gnutls_assert_val(ret); @@ -777,22 +720,21 @@ decrypt_packet(gnutls_session_t session, return gnutls_assert_val(ret); length = ret; - } else { /* EtM */ - ret = - _gnutls_cipher_decrypt2(¶ms->read.ctx.tls12. - cipher, ciphertext->data, - ciphertext->size - tag_size, - plain->data, plain->size); + } else { /* EtM */ + ret = _gnutls_cipher_decrypt2( + ¶ms->read.ctx.tls12.cipher, + ciphertext->data, ciphertext->size - tag_size, + plain->data, plain->size); if (unlikely(ret < 0)) return gnutls_assert_val(ret); - pad = plain->data[ciphertext->size - tag_size - 1]; /* pad */ + pad = plain->data[ciphertext->size - tag_size - + 1]; /* pad */ length = ciphertext->size - tag_size - pad - 1; if (unlikely(length < 0)) - return - gnutls_assert_val - (GNUTLS_E_DECRYPTION_FAILED); + return gnutls_assert_val( + GNUTLS_E_DECRYPTION_FAILED); } break; default: @@ -802,12 +744,10 @@ decrypt_packet(gnutls_session_t session, return length; } -static int -decrypt_packet_tls13(gnutls_session_t session, - gnutls_datum_t * ciphertext, - gnutls_datum_t * plain, - content_type_t * type, record_parameters_st * params, - uint64_t sequence) +static int decrypt_packet_tls13(gnutls_session_t session, + gnutls_datum_t *ciphertext, + gnutls_datum_t *plain, content_type_t *type, + record_parameters_st *params, uint64_t sequence) { uint8_t nonce[MAX_CIPHER_IV_SIZE]; size_t length, length_to_decrypt; @@ -852,10 +792,11 @@ decrypt_packet_tls13(gnutls_session_t session, length_to_decrypt = ciphertext->size; if (unlikely((unsigned)length_to_decrypt > plain->size)) { - _gnutls_audit_log(session, - "Received %u bytes, while expecting less than %u\n", - (unsigned int)length_to_decrypt, - (unsigned int)plain->size); + _gnutls_audit_log( + session, + "Received %u bytes, while expecting less than %u\n", + (unsigned int)length_to_decrypt, + (unsigned int)plain->size); return gnutls_assert_val(GNUTLS_E_DECRYPTION_FAILED); } @@ -864,10 +805,8 @@ decrypt_packet_tls13(gnutls_session_t session, aad[2] = 0x03; _gnutls_write_uint16(ciphertext->size, &aad[3]); - ret = gnutls_aead_cipher_decrypt(¶ms->read.ctx.aead, - nonce, iv_size, - aad, sizeof(aad), - tag_size, + ret = gnutls_aead_cipher_decrypt(¶ms->read.ctx.aead, nonce, iv_size, + aad, sizeof(aad), tag_size, ciphertext->data, length_to_decrypt, plain->data, &length); if (unlikely(ret < 0)) @@ -875,9 +814,9 @@ decrypt_packet_tls13(gnutls_session_t session, /* 1 octet for content type */ if (length > max_decrypted_size(session) + 1) { - _gnutls_audit_log - (session, "Received packet with illegal length: %u\n", - (unsigned int)length); + _gnutls_audit_log(session, + "Received packet with illegal length: %u\n", + (unsigned int)length); return gnutls_assert_val(GNUTLS_E_RECORD_OVERFLOW); } @@ -892,9 +831,8 @@ decrypt_packet_tls13(gnutls_session_t session, *type = plain->data[j - 1]; length = j - 1; length_set = 1; - if (! - (session-> - internals.flags & GNUTLS_SAFE_PADDING_CHECK)) + if (!(session->internals.flags & + GNUTLS_SAFE_PADDING_CHECK)) break; } } diff --git a/lib/cipher.h b/lib/cipher.h index ee077ce47a..ae147df241 100644 --- a/lib/cipher.h +++ b/lib/cipher.h @@ -21,30 +21,25 @@ */ #ifndef GNUTLS_LIB_CIPHER_H -# define GNUTLS_LIB_CIPHER_H +#define GNUTLS_LIB_CIPHER_H -int _gnutls_encrypt(gnutls_session_t session, - const uint8_t * data, - size_t data_size, size_t min_pad, - mbuffer_st * bufel, - content_type_t type, record_parameters_st * params); +int _gnutls_encrypt(gnutls_session_t session, const uint8_t *data, + size_t data_size, size_t min_pad, mbuffer_st *bufel, + content_type_t type, record_parameters_st *params); -int _gnutls_decrypt(gnutls_session_t session, - gnutls_datum_t * ciphertext, gnutls_datum_t * output, - content_type_t * type, record_parameters_st * params, - uint64_t sequence); +int _gnutls_decrypt(gnutls_session_t session, gnutls_datum_t *ciphertext, + gnutls_datum_t *output, content_type_t *type, + record_parameters_st *params, uint64_t sequence); -# define MAX_PREAMBLE_SIZE 16 +#define MAX_PREAMBLE_SIZE 16 -int -_gnutls_make_preamble(uint64_t uint64_data, uint8_t type, unsigned int length, - const version_entry_st * ver, - uint8_t preamble[MAX_PREAMBLE_SIZE]); +int _gnutls_make_preamble(uint64_t uint64_data, uint8_t type, + unsigned int length, const version_entry_st *ver, + uint8_t preamble[MAX_PREAMBLE_SIZE]); -int cbc_mac_verify(gnutls_session_t session, record_parameters_st * params, - uint8_t preamble[MAX_PREAMBLE_SIZE], - content_type_t type, - uint64_t sequence, - const uint8_t * data, size_t data_size, size_t tag_size); +int cbc_mac_verify(gnutls_session_t session, record_parameters_st *params, + uint8_t preamble[MAX_PREAMBLE_SIZE], content_type_t type, + uint64_t sequence, const uint8_t *data, size_t data_size, + size_t tag_size); -#endif /* GNUTLS_LIB_CIPHER_H */ +#endif /* GNUTLS_LIB_CIPHER_H */ diff --git a/lib/cipher_int.c b/lib/cipher_int.c index b5f7460782..34741a5ece 100644 --- a/lib/cipher_int.c +++ b/lib/cipher_int.c @@ -30,22 +30,25 @@ #include #include -#define SR_FB(x, cleanup) ret=(x); if ( ret<0 ) { \ - if (ret == GNUTLS_E_NEED_FALLBACK) { \ - if (handle->handle) \ - handle->deinit(handle->handle); \ - goto fallback; \ - } \ - gnutls_assert(); \ - ret = GNUTLS_E_INTERNAL_ERROR; \ - goto cleanup; \ - } - -#define SR(x, cleanup) if ( (x)<0 ) { \ - gnutls_assert(); \ - ret = GNUTLS_E_INTERNAL_ERROR; \ - goto cleanup; \ - } +#define SR_FB(x, cleanup) \ + ret = (x); \ + if (ret < 0) { \ + if (ret == GNUTLS_E_NEED_FALLBACK) { \ + if (handle->handle) \ + handle->deinit(handle->handle); \ + goto fallback; \ + } \ + gnutls_assert(); \ + ret = GNUTLS_E_INTERNAL_ERROR; \ + goto cleanup; \ + } + +#define SR(x, cleanup) \ + if ((x) < 0) { \ + gnutls_assert(); \ + ret = GNUTLS_E_INTERNAL_ERROR; \ + goto cleanup; \ + } /* Returns true(non-zero) or false(0) if the * provided cipher exists @@ -73,10 +76,9 @@ int _gnutls_cipher_exists(gnutls_cipher_algorithm_t cipher) return ret; } -int -_gnutls_cipher_init(cipher_hd_st * handle, const cipher_entry_st * e, - const gnutls_datum_t * key, const gnutls_datum_t * iv, - int enc) +int _gnutls_cipher_init(cipher_hd_st *handle, const cipher_entry_st *e, + const gnutls_datum_t *key, const gnutls_datum_t *iv, + int enc) { int ret = GNUTLS_E_INTERNAL_ERROR; const gnutls_crypto_cipher_st *cc = NULL; @@ -117,8 +119,8 @@ _gnutls_cipher_init(cipher_hd_st * handle, const cipher_entry_st * e, handle->deinit(handle->handle); goto fallback; } - return - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + return gnutls_assert_val( + GNUTLS_E_INVALID_REQUEST); } SR(cc->setiv(handle->handle, iv->data, iv->size), cc_cleanup); @@ -127,7 +129,7 @@ _gnutls_cipher_init(cipher_hd_st * handle, const cipher_entry_st * e, return 0; } - fallback: +fallback: handle->encrypt = _gnutls_cipher_ops.encrypt; handle->decrypt = _gnutls_cipher_ops.decrypt; handle->aead_encrypt = _gnutls_cipher_ops.aead_encrypt; @@ -154,9 +156,8 @@ _gnutls_cipher_init(cipher_hd_st * handle, const cipher_entry_st * e, } if (iv) { - ret = - _gnutls_cipher_ops.setiv(handle->handle, iv->data, - iv->size); + ret = _gnutls_cipher_ops.setiv(handle->handle, iv->data, + iv->size); if (ret < 0) { gnutls_assert(); goto cc_cleanup; @@ -165,7 +166,7 @@ _gnutls_cipher_init(cipher_hd_st * handle, const cipher_entry_st * e, return 0; - cc_cleanup: +cc_cleanup: if (handle->handle) handle->deinit(handle->handle); @@ -175,12 +176,11 @@ _gnutls_cipher_init(cipher_hd_st * handle, const cipher_entry_st * e, /* Auth_cipher API */ -int _gnutls_auth_cipher_init(auth_cipher_hd_st * handle, - const cipher_entry_st * e, - const gnutls_datum_t * cipher_key, - const gnutls_datum_t * iv, - const mac_entry_st * me, - const gnutls_datum_t * mac_key, unsigned etm, +int _gnutls_auth_cipher_init(auth_cipher_hd_st *handle, + const cipher_entry_st *e, + const gnutls_datum_t *cipher_key, + const gnutls_datum_t *iv, const mac_entry_st *me, + const gnutls_datum_t *mac_key, unsigned etm, #ifdef ENABLE_SSL3 unsigned ssl_hmac, #endif @@ -198,9 +198,8 @@ int _gnutls_auth_cipher_init(auth_cipher_hd_st * handle, if (e->id != GNUTLS_CIPHER_NULL) { handle->non_null = 1; - ret = - _gnutls_cipher_init(&handle->cipher, e, cipher_key, iv, - enc); + ret = _gnutls_cipher_init(&handle->cipher, e, cipher_key, iv, + enc); if (ret < 0) return gnutls_assert_val(ret); } else @@ -212,21 +211,20 @@ int _gnutls_auth_cipher_init(auth_cipher_hd_st * handle, handle->ssl_hmac = ssl_hmac; if (ssl_hmac) - ret = - _gnutls_mac_init_ssl3(&handle->mac.dig, me, - mac_key->data, mac_key->size); + ret = _gnutls_mac_init_ssl3(&handle->mac.dig, me, + mac_key->data, + mac_key->size); else #endif - ret = - _gnutls_mac_init(&handle->mac.mac, me, - mac_key->data, mac_key->size); + ret = _gnutls_mac_init(&handle->mac.mac, me, + mac_key->data, mac_key->size); if (ret < 0) { gnutls_assert(); goto cleanup; } #ifdef ENABLE_GOST handle->continuous_mac = - !!(me->flags & GNUTLS_MAC_FLAG_CONTINUOUS_MAC); + !!(me->flags & GNUTLS_MAC_FLAG_CONTINUOUS_MAC); #endif handle->tag_size = _gnutls_mac_get_algo_len(me); @@ -239,32 +237,30 @@ int _gnutls_auth_cipher_init(auth_cipher_hd_st * handle, } return 0; - cleanup: +cleanup: if (handle->non_null != 0) _gnutls_cipher_deinit(&handle->cipher); return ret; - } #ifdef ENABLE_SSL3 -# define MAC(handle, text, textlen) \ - if (handle->ssl_hmac) { \ - ret = \ - _gnutls_hash(&handle->mac.dig, text, textlen); \ - } else { \ - ret = _gnutls_mac(&handle->mac.mac, text, textlen); \ - } \ - if (unlikely(ret < 0)) \ - return gnutls_assert_val(ret) +#define MAC(handle, text, textlen) \ + if (handle->ssl_hmac) { \ + ret = _gnutls_hash(&handle->mac.dig, text, textlen); \ + } else { \ + ret = _gnutls_mac(&handle->mac.mac, text, textlen); \ + } \ + if (unlikely(ret < 0)) \ + return gnutls_assert_val(ret) #else -# define MAC(handle, text, textlen) \ - ret = _gnutls_mac(&handle->mac.mac, text, textlen); \ - if (unlikely(ret < 0)) \ - return gnutls_assert_val(ret) +#define MAC(handle, text, textlen) \ + ret = _gnutls_mac(&handle->mac.mac, text, textlen); \ + if (unlikely(ret < 0)) \ + return gnutls_assert_val(ret) #endif -int _gnutls_auth_cipher_add_auth(auth_cipher_hd_st * handle, - const void *text, int textlen) +int _gnutls_auth_cipher_add_auth(auth_cipher_hd_st *handle, const void *text, + int textlen) { int ret; @@ -276,8 +272,8 @@ int _gnutls_auth_cipher_add_auth(auth_cipher_hd_st * handle, } /* The caller must make sure that textlen+pad_size+tag_size is divided by the block size of the cipher */ -int _gnutls_auth_cipher_encrypt2_tag(auth_cipher_hd_st * handle, - const uint8_t * text, int textlen, +int _gnutls_auth_cipher_encrypt2_tag(auth_cipher_hd_st *handle, + const uint8_t *text, int textlen, void *_ciphertext, int ciphertextlen, int pad_size) { @@ -288,44 +284,42 @@ int _gnutls_auth_cipher_encrypt2_tag(auth_cipher_hd_st * handle, assert(ciphertext != NULL); - if (handle->is_mac) { /* cipher + mac */ - if (handle->non_null == 0) { /* NULL cipher + MAC */ + if (handle->is_mac) { /* cipher + mac */ + if (handle->non_null == 0) { /* NULL cipher + MAC */ MAC(handle, text, textlen); if (unlikely(textlen + pad_size + handle->tag_size) > ciphertextlen) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + return gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); if (text != ciphertext) memcpy(ciphertext, text, textlen); - ret = - _gnutls_auth_cipher_tag(handle, - ciphertext + textlen, - handle->tag_size); + ret = _gnutls_auth_cipher_tag( + handle, ciphertext + textlen, handle->tag_size); if (ret < 0) return gnutls_assert_val(ret); } else { uint8_t *orig_ciphertext = ciphertext; - if (handle->etm == 0 - || handle->cipher.e->type != CIPHER_BLOCK) { + if (handle->etm == 0 || + handle->cipher.e->type != CIPHER_BLOCK) { MAC(handle, text, textlen); } if (unlikely(textlen + pad_size + handle->tag_size) > ciphertextlen) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + return gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); assert(blocksize != 0); l = (textlen / blocksize) * blocksize; if (l > 0) { - ret = - _gnutls_cipher_encrypt2(&handle->cipher, - text, l, ciphertext, - ciphertextlen); + ret = _gnutls_cipher_encrypt2(&handle->cipher, + text, l, + ciphertext, + ciphertextlen); if (ret < 0) return gnutls_assert_val(ret); @@ -338,13 +332,11 @@ int _gnutls_auth_cipher_encrypt2_tag(auth_cipher_hd_st * handle, if (ciphertext != text && textlen > 0) memcpy(ciphertext, text, textlen); - if (handle->etm == 0 - || handle->cipher.e->type != CIPHER_BLOCK) { - ret = - _gnutls_auth_cipher_tag(handle, - ciphertext + - textlen, - handle->tag_size); + if (handle->etm == 0 || + handle->cipher.e->type != CIPHER_BLOCK) { + ret = _gnutls_auth_cipher_tag( + handle, ciphertext + textlen, + handle->tag_size); if (ret < 0) return gnutls_assert_val(ret); textlen += handle->tag_size; @@ -357,46 +349,43 @@ int _gnutls_auth_cipher_encrypt2_tag(auth_cipher_hd_st * handle, textlen += pad_size; } - ret = - _gnutls_cipher_encrypt2(&handle->cipher, - ciphertext, textlen, - ciphertext, ciphertextlen); + ret = _gnutls_cipher_encrypt2(&handle->cipher, + ciphertext, textlen, + ciphertext, + ciphertextlen); if (ret < 0) return gnutls_assert_val(ret); - if (handle->etm != 0 - && handle->cipher.e->type == CIPHER_BLOCK) { + if (handle->etm != 0 && + handle->cipher.e->type == CIPHER_BLOCK) { MAC(handle, orig_ciphertext, l); MAC(handle, ciphertext, textlen); - ret = - _gnutls_auth_cipher_tag(handle, - ciphertext + - textlen, - handle->tag_size); + ret = _gnutls_auth_cipher_tag( + handle, ciphertext + textlen, + handle->tag_size); if (ret < 0) return gnutls_assert_val(ret); } } } else if (_gnutls_cipher_is_aead(&handle->cipher)) { - ret = - _gnutls_cipher_encrypt2(&handle->cipher, text, textlen, - ciphertext, ciphertextlen); + ret = _gnutls_cipher_encrypt2(&handle->cipher, text, textlen, + ciphertext, ciphertextlen); if (unlikely(ret < 0)) return gnutls_assert_val(ret); - ret = - _gnutls_auth_cipher_tag(handle, ciphertext + textlen, - handle->tag_size); + ret = _gnutls_auth_cipher_tag(handle, ciphertext + textlen, + handle->tag_size); if (unlikely(ret < 0)) return gnutls_assert_val(ret); - } else if (handle->non_null == 0 && text != ciphertext) /* NULL cipher - no MAC */ + } else if (handle->non_null == 0 && + text != ciphertext) /* NULL cipher - no MAC */ memcpy(ciphertext, text, textlen); return 0; } -int _gnutls_auth_cipher_decrypt2(auth_cipher_hd_st * handle, +int _gnutls_auth_cipher_decrypt2(auth_cipher_hd_st *handle, const void *ciphertext, int ciphertextlen, void *text, int textlen) { @@ -405,8 +394,8 @@ int _gnutls_auth_cipher_decrypt2(auth_cipher_hd_st * handle, if (unlikely(ciphertextlen > textlen)) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - if (handle->is_mac - && (handle->etm != 0 && handle->cipher.e->type == CIPHER_BLOCK)) { + if (handle->is_mac && + (handle->etm != 0 && handle->cipher.e->type == CIPHER_BLOCK)) { /* The MAC is not to be hashed */ ciphertextlen -= handle->tag_size; @@ -414,16 +403,15 @@ int _gnutls_auth_cipher_decrypt2(auth_cipher_hd_st * handle, } if (handle->non_null != 0) { - ret = - _gnutls_cipher_decrypt2(&handle->cipher, ciphertext, - ciphertextlen, text, textlen); + ret = _gnutls_cipher_decrypt2(&handle->cipher, ciphertext, + ciphertextlen, text, textlen); if (ret < 0) return gnutls_assert_val(ret); } else if (handle->non_null == 0 && text != ciphertext) memcpy(text, ciphertext, ciphertextlen); - if (handle->is_mac - && (handle->etm == 0 || handle->cipher.e->type != CIPHER_BLOCK)) { + if (handle->is_mac && + (handle->etm == 0 || handle->cipher.e->type != CIPHER_BLOCK)) { /* The MAC is not to be hashed */ ciphertextlen -= handle->tag_size; @@ -433,28 +421,29 @@ int _gnutls_auth_cipher_decrypt2(auth_cipher_hd_st * handle, return 0; } -int _gnutls_auth_cipher_tag(auth_cipher_hd_st * handle, void *tag, int tag_size) +int _gnutls_auth_cipher_tag(auth_cipher_hd_st *handle, void *tag, int tag_size) { if (handle->is_mac) { #ifdef ENABLE_SSL3 if (handle->ssl_hmac) { int ret = - _gnutls_mac_output_ssl3(&handle->mac.dig, tag); + _gnutls_mac_output_ssl3(&handle->mac.dig, tag); if (ret < 0) return gnutls_assert_val(ret); } else #endif #ifdef ENABLE_GOST /* draft-smyshlyaev-tls12-gost-suites section 4.1.2 */ - if (handle->continuous_mac) { - mac_hd_st temp_mac; - int ret = _gnutls_mac_copy(&handle->mac.mac, &temp_mac); - if (ret < 0) - return gnutls_assert_val(ret); - _gnutls_mac_deinit(&temp_mac, tag); - } else + if (handle->continuous_mac) { + mac_hd_st temp_mac; + int ret = _gnutls_mac_copy(&handle->mac.mac, + &temp_mac); + if (ret < 0) + return gnutls_assert_val(ret); + _gnutls_mac_deinit(&temp_mac, tag); + } else #endif - _gnutls_mac_output(&handle->mac.mac, tag); + _gnutls_mac_output(&handle->mac.mac, tag); } else if (_gnutls_cipher_is_aead(&handle->cipher)) { _gnutls_cipher_tag(&handle->cipher, tag, tag_size); } else @@ -463,11 +452,11 @@ int _gnutls_auth_cipher_tag(auth_cipher_hd_st * handle, void *tag, int tag_size) return 0; } -void _gnutls_auth_cipher_deinit(auth_cipher_hd_st * handle) +void _gnutls_auth_cipher_deinit(auth_cipher_hd_st *handle) { if (handle->is_mac) { #ifdef ENABLE_SSL3 - if (handle->ssl_hmac) /* failure here doesn't matter */ + if (handle->ssl_hmac) /* failure here doesn't matter */ _gnutls_mac_deinit_ssl3(&handle->mac.dig, NULL); else #endif diff --git a/lib/cipher_int.h b/lib/cipher_int.h index ff6e3a1874..fd5bce640d 100644 --- a/lib/cipher_int.h +++ b/lib/cipher_int.h @@ -21,29 +21,25 @@ */ #ifndef GNUTLS_LIB_CIPHER_INT_H -# define GNUTLS_LIB_CIPHER_INT_H +#define GNUTLS_LIB_CIPHER_INT_H -# include -# include "errors.h" -# include +#include +#include "errors.h" +#include extern int crypto_cipher_prio; extern gnutls_crypto_cipher_st _gnutls_cipher_ops; -typedef int (*cipher_encrypt_func)(void *hd, const void *plaintext, - size_t, void *ciphertext, size_t); -typedef int (*cipher_decrypt_func)(void *hd, const void *ciphertext, - size_t, void *plaintext, size_t); -typedef int (*aead_cipher_encrypt_func)(void *hd, - const void *nonce, size_t, - const void *auth, size_t, - size_t tag, +typedef int (*cipher_encrypt_func)(void *hd, const void *plaintext, size_t, + void *ciphertext, size_t); +typedef int (*cipher_decrypt_func)(void *hd, const void *ciphertext, size_t, + void *plaintext, size_t); +typedef int (*aead_cipher_encrypt_func)(void *hd, const void *nonce, size_t, + const void *auth, size_t, size_t tag, const void *plaintext, size_t, void *ciphertext, size_t); -typedef int (*aead_cipher_decrypt_func)(void *hd, - const void *nonce, size_t, - const void *auth, size_t, - size_t tag, +typedef int (*aead_cipher_decrypt_func)(void *hd, const void *nonce, size_t, + const void *auth, size_t, size_t tag, const void *ciphertext, size_t, void *plaintext, size_t); typedef void (*cipher_deinit_func)(void *hd); @@ -71,18 +67,18 @@ typedef struct { cipher_deinit_func deinit; } cipher_hd_st; -int _gnutls_cipher_init(cipher_hd_st *, const cipher_entry_st * e, - const gnutls_datum_t * key, - const gnutls_datum_t * iv, int enc); +int _gnutls_cipher_init(cipher_hd_st *, const cipher_entry_st *e, + const gnutls_datum_t *key, const gnutls_datum_t *iv, + int enc); -inline static int _gnutls_cipher_setiv(const cipher_hd_st * handle, +inline static int _gnutls_cipher_setiv(const cipher_hd_st *handle, const void *iv, size_t ivlen) { return handle->setiv(handle->handle, iv, ivlen); } -inline static int _gnutls_cipher_getiv(const cipher_hd_st * handle, - void *iv, size_t ivlen) +inline static int _gnutls_cipher_getiv(const cipher_hd_st *handle, void *iv, + size_t ivlen) { if (unlikely(handle == NULL || handle->handle == NULL || handle->getiv == NULL)) @@ -91,15 +87,16 @@ inline static int _gnutls_cipher_getiv(const cipher_hd_st * handle, return handle->getiv(handle->handle, iv, ivlen); } -inline static int _gnutls_cipher_setkey(const cipher_hd_st * handle, +inline static int _gnutls_cipher_setkey(const cipher_hd_st *handle, const void *key, size_t keylen) { return handle->setkey(handle->handle, key, keylen); } -inline static int -_gnutls_cipher_encrypt2(const cipher_hd_st * handle, const void *text, - size_t textlen, void *ciphertext, size_t ciphertextlen) +inline static int _gnutls_cipher_encrypt2(const cipher_hd_st *handle, + const void *text, size_t textlen, + void *ciphertext, + size_t ciphertextlen) { if (likely(handle != NULL && handle->handle != NULL)) { if (handle->encrypt == NULL) { @@ -112,10 +109,10 @@ _gnutls_cipher_encrypt2(const cipher_hd_st * handle, const void *text, return 0; } -inline static int -_gnutls_cipher_decrypt2(const cipher_hd_st * handle, - const void *ciphertext, size_t ciphertextlen, - void *text, size_t textlen) +inline static int _gnutls_cipher_decrypt2(const cipher_hd_st *handle, + const void *ciphertext, + size_t ciphertextlen, void *text, + size_t textlen) { if (likely(handle != NULL && handle->handle != NULL)) { if (handle->decrypt == NULL) { @@ -129,16 +126,13 @@ _gnutls_cipher_decrypt2(const cipher_hd_st * handle, } inline static int -_gnutls_aead_cipher_encrypt(const cipher_hd_st * handle, - const void *nonce, size_t nonce_len, - const void *auth, size_t auth_len, - size_t tag, - const void *text, size_t textlen, +_gnutls_aead_cipher_encrypt(const cipher_hd_st *handle, const void *nonce, + size_t nonce_len, const void *auth, size_t auth_len, + size_t tag, const void *text, size_t textlen, void *ciphertext, size_t ciphertextlen) { - if (likely - (handle != NULL && handle->handle != NULL - && handle->aead_encrypt != NULL)) { + if (likely(handle != NULL && handle->handle != NULL && + handle->aead_encrypt != NULL)) { return handle->aead_encrypt(handle->handle, nonce, nonce_len, auth, auth_len, tag, text, textlen, ciphertext, ciphertextlen); @@ -148,16 +142,13 @@ _gnutls_aead_cipher_encrypt(const cipher_hd_st * handle, } inline static int -_gnutls_aead_cipher_decrypt(const cipher_hd_st * handle, - const void *nonce, size_t nonce_len, - const void *auth, size_t auth_len, - size_t tag, - const void *ciphertext, size_t ciphertextlen, - void *text, size_t textlen) +_gnutls_aead_cipher_decrypt(const cipher_hd_st *handle, const void *nonce, + size_t nonce_len, const void *auth, size_t auth_len, + size_t tag, const void *ciphertext, + size_t ciphertextlen, void *text, size_t textlen) { - if (likely - (handle != NULL && handle->handle != NULL - && handle->aead_decrypt != NULL)) { + if (likely(handle != NULL && handle->handle != NULL && + handle->aead_decrypt != NULL)) { return handle->aead_decrypt(handle->handle, nonce, nonce_len, auth, auth_len, tag, ciphertext, ciphertextlen, text, textlen); @@ -166,7 +157,7 @@ _gnutls_aead_cipher_decrypt(const cipher_hd_st * handle, return GNUTLS_E_INVALID_REQUEST; } -inline static void _gnutls_cipher_deinit(cipher_hd_st * handle) +inline static void _gnutls_cipher_deinit(cipher_hd_st *handle) { if (likely(handle != NULL && handle->handle != NULL)) { handle->deinit(handle->handle); @@ -180,11 +171,11 @@ int _gnutls_cipher_get_iv(gnutls_cipher_hd_t handle, void *iv, size_t ivlen); int _gnutls_cipher_set_key(gnutls_cipher_hd_t handle, void *key, size_t keylen); -# define _gnutls_cipher_is_aead(h) _gnutls_cipher_algo_is_aead((h)->e) +#define _gnutls_cipher_is_aead(h) _gnutls_cipher_algo_is_aead((h)->e) /* returns the tag in AUTHENC ciphers */ -inline static void _gnutls_cipher_tag(const cipher_hd_st * handle, - void *tag, size_t tag_size) +inline static void _gnutls_cipher_tag(const cipher_hd_st *handle, void *tag, + size_t tag_size) { if (likely(handle != NULL && handle->handle != NULL)) { handle->tag(handle->handle, tag, tag_size); @@ -193,7 +184,7 @@ inline static void _gnutls_cipher_tag(const cipher_hd_st * handle, /* Add auth data for AUTHENC ciphers */ -inline static int _gnutls_cipher_auth(const cipher_hd_st * handle, +inline static int _gnutls_cipher_auth(const cipher_hd_st *handle, const void *text, size_t textlen) { if (likely(handle != NULL && handle->handle != NULL)) { @@ -202,8 +193,8 @@ inline static int _gnutls_cipher_auth(const cipher_hd_st * handle, return GNUTLS_E_INTERNAL_ERROR; } -# define _gnutls_cipher_encrypt(x,y,z) _gnutls_cipher_encrypt2(x,y,z,y,z) -# define _gnutls_cipher_decrypt(x,y,z) _gnutls_cipher_decrypt2(x,y,z,y,z) +#define _gnutls_cipher_encrypt(x, y, z) _gnutls_cipher_encrypt2(x, y, z, y, z) +#define _gnutls_cipher_decrypt(x, y, z) _gnutls_cipher_decrypt2(x, y, z, y, z) /* auth_cipher API. Allows combining a cipher with a MAC. */ @@ -214,56 +205,53 @@ typedef struct { digest_hd_st dig; mac_hd_st mac; } mac; - unsigned int is_mac:1; -# ifdef ENABLE_SSL3 - unsigned int ssl_hmac:1; -# endif -# ifdef ENABLE_GOST - unsigned int continuous_mac:1; -# endif - unsigned int non_null:1; - unsigned int etm:1; + unsigned int is_mac : 1; +#ifdef ENABLE_SSL3 + unsigned int ssl_hmac : 1; +#endif +#ifdef ENABLE_GOST + unsigned int continuous_mac : 1; +#endif + unsigned int non_null : 1; + unsigned int etm : 1; size_t tag_size; } auth_cipher_hd_st; -int _gnutls_auth_cipher_init(auth_cipher_hd_st * handle, - const cipher_entry_st * e, - const gnutls_datum_t * cipher_key, - const gnutls_datum_t * iv, - const mac_entry_st * me, - const gnutls_datum_t * mac_key, unsigned etm, -# ifdef ENABLE_SSL3 +int _gnutls_auth_cipher_init(auth_cipher_hd_st *handle, + const cipher_entry_st *e, + const gnutls_datum_t *cipher_key, + const gnutls_datum_t *iv, const mac_entry_st *me, + const gnutls_datum_t *mac_key, unsigned etm, +#ifdef ENABLE_SSL3 unsigned ssl_hmac, -# endif +#endif int enc); -int _gnutls_auth_cipher_add_auth(auth_cipher_hd_st * handle, - const void *text, int textlen); +int _gnutls_auth_cipher_add_auth(auth_cipher_hd_st *handle, const void *text, + int textlen); -int _gnutls_auth_cipher_encrypt2_tag(auth_cipher_hd_st * handle, - const uint8_t * text, int textlen, +int _gnutls_auth_cipher_encrypt2_tag(auth_cipher_hd_st *handle, + const uint8_t *text, int textlen, void *ciphertext, int ciphertextlen, int pad_size); -int _gnutls_auth_cipher_decrypt2(auth_cipher_hd_st * handle, +int _gnutls_auth_cipher_decrypt2(auth_cipher_hd_st *handle, const void *ciphertext, int ciphertextlen, void *text, int textlen); -int _gnutls_auth_cipher_tag(auth_cipher_hd_st * handle, void *tag, - int tag_size); +int _gnutls_auth_cipher_tag(auth_cipher_hd_st *handle, void *tag, int tag_size); -inline static int _gnutls_auth_cipher_setiv(const auth_cipher_hd_st * - handle, const void *iv, - size_t ivlen) +inline static int _gnutls_auth_cipher_setiv(const auth_cipher_hd_st *handle, + const void *iv, size_t ivlen) { return _gnutls_cipher_setiv(&handle->cipher, iv, ivlen); } -inline static size_t _gnutls_auth_cipher_tag_len(auth_cipher_hd_st * handle) +inline static size_t _gnutls_auth_cipher_tag_len(auth_cipher_hd_st *handle) { return handle->tag_size; } -# define _gnutls_auth_cipher_is_aead(h) _gnutls_cipher_is_aead(&(h)->cipher) +#define _gnutls_auth_cipher_is_aead(h) _gnutls_cipher_is_aead(&(h)->cipher) -void _gnutls_auth_cipher_deinit(auth_cipher_hd_st * handle); +void _gnutls_auth_cipher_deinit(auth_cipher_hd_st *handle); -#endif /* GNUTLS_LIB_CIPHER_INT_H */ +#endif /* GNUTLS_LIB_CIPHER_INT_H */ diff --git a/lib/compress.c b/lib/compress.c index afaf86fe14..a6b04fdfa5 100644 --- a/lib/compress.c +++ b/lib/compress.c @@ -23,16 +23,16 @@ #include "compress.h" #ifdef HAVE_LIBZ -# include +#include #endif #ifdef HAVE_LIBBROTLI -# include -# include +#include +#include #endif #ifdef HAVE_LIBZSTD -# include +#include #endif typedef struct { @@ -40,33 +40,29 @@ typedef struct { const char *name; } comp_entry; -static const comp_entry comp_algs[] = { - {GNUTLS_COMP_NULL, "NULL"}, +static const comp_entry comp_algs[] = { { GNUTLS_COMP_NULL, "NULL" }, #ifdef HAVE_LIBZ - {GNUTLS_COMP_ZLIB, "ZLIB"}, + { GNUTLS_COMP_ZLIB, "ZLIB" }, #endif #ifdef HAVE_LIBBROTLI - {GNUTLS_COMP_BROTLI, "BROTLI"}, + { GNUTLS_COMP_BROTLI, "BROTLI" }, #endif #ifdef HAVE_LIBZSTD - {GNUTLS_COMP_ZSTD, "ZSTD"}, + { GNUTLS_COMP_ZSTD, "ZSTD" }, #endif - {GNUTLS_COMP_UNKNOWN, NULL} -}; + { GNUTLS_COMP_UNKNOWN, NULL } }; -static const gnutls_compression_method_t alg_list[] = { - GNUTLS_COMP_NULL, +static const gnutls_compression_method_t alg_list[] = { GNUTLS_COMP_NULL, #ifdef HAVE_LIBZ - GNUTLS_COMP_ZLIB, + GNUTLS_COMP_ZLIB, #endif #ifdef HAVE_LIBBROTLI - GNUTLS_COMP_BROTLI, + GNUTLS_COMP_BROTLI, #endif #ifdef HAVE_LIBZSTD - GNUTLS_COMP_ZSTD, + GNUTLS_COMP_ZSTD, #endif - 0 -}; + 0 }; /** * gnutls_compression_get_name: @@ -146,63 +142,47 @@ size_t _gnutls_compress_bound(gnutls_compression_method_t alg, size_t src_len) return 0; } -int -_gnutls_compress(gnutls_compression_method_t alg, - uint8_t * dst, size_t dst_len, - const uint8_t * src, size_t src_len) +int _gnutls_compress(gnutls_compression_method_t alg, uint8_t *dst, + size_t dst_len, const uint8_t *src, size_t src_len) { int ret = GNUTLS_E_COMPRESSION_FAILED; switch (alg) { #ifdef HAVE_LIBZ - case GNUTLS_COMP_ZLIB: - { - int err; - uLongf comp_len = dst_len; + case GNUTLS_COMP_ZLIB: { + int err; + uLongf comp_len = dst_len; - err = compress(dst, &comp_len, src, src_len); - if (err != Z_OK) - return - gnutls_assert_val - (GNUTLS_E_COMPRESSION_FAILED); - ret = comp_len; - } - break; + err = compress(dst, &comp_len, src, src_len); + if (err != Z_OK) + return gnutls_assert_val(GNUTLS_E_COMPRESSION_FAILED); + ret = comp_len; + } break; #endif #ifdef HAVE_LIBBROTLI - case GNUTLS_COMP_BROTLI: - { - BROTLI_BOOL err; - size_t comp_len = dst_len; - - err = BrotliEncoderCompress(BROTLI_DEFAULT_QUALITY, - BROTLI_DEFAULT_WINDOW, - BROTLI_DEFAULT_MODE, - src_len, src, &comp_len, - dst); - if (!err) - return - gnutls_assert_val - (GNUTLS_E_COMPRESSION_FAILED); - ret = comp_len; - } - break; + case GNUTLS_COMP_BROTLI: { + BROTLI_BOOL err; + size_t comp_len = dst_len; + + err = BrotliEncoderCompress(BROTLI_DEFAULT_QUALITY, + BROTLI_DEFAULT_WINDOW, + BROTLI_DEFAULT_MODE, src_len, src, + &comp_len, dst); + if (!err) + return gnutls_assert_val(GNUTLS_E_COMPRESSION_FAILED); + ret = comp_len; + } break; #endif #ifdef HAVE_LIBZSTD - case GNUTLS_COMP_ZSTD: - { - size_t comp_len; + case GNUTLS_COMP_ZSTD: { + size_t comp_len; - comp_len = - ZSTD_compress(dst, dst_len, src, src_len, - ZSTD_CLEVEL_DEFAULT); - if (ZSTD_isError(comp_len)) - return - gnutls_assert_val - (GNUTLS_E_COMPRESSION_FAILED); - ret = comp_len; - } - break; + comp_len = ZSTD_compress(dst, dst_len, src, src_len, + ZSTD_CLEVEL_DEFAULT); + if (ZSTD_isError(comp_len)) + return gnutls_assert_val(GNUTLS_E_COMPRESSION_FAILED); + ret = comp_len; + } break; #endif default: return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); @@ -216,59 +196,43 @@ _gnutls_compress(gnutls_compression_method_t alg, return ret; } -int -_gnutls_decompress(gnutls_compression_method_t alg, - uint8_t * dst, size_t dst_len, - const uint8_t * src, size_t src_len) +int _gnutls_decompress(gnutls_compression_method_t alg, uint8_t *dst, + size_t dst_len, const uint8_t *src, size_t src_len) { int ret = GNUTLS_E_DECOMPRESSION_FAILED; switch (alg) { #ifdef HAVE_LIBZ - case GNUTLS_COMP_ZLIB: - { - int err; - uLongf plain_len = dst_len; + case GNUTLS_COMP_ZLIB: { + int err; + uLongf plain_len = dst_len; - err = uncompress(dst, &plain_len, src, src_len); - if (err != Z_OK) - return - gnutls_assert_val - (GNUTLS_E_DECOMPRESSION_FAILED); - ret = plain_len; - } - break; + err = uncompress(dst, &plain_len, src, src_len); + if (err != Z_OK) + return gnutls_assert_val(GNUTLS_E_DECOMPRESSION_FAILED); + ret = plain_len; + } break; #endif #ifdef HAVE_LIBBROTLI - case GNUTLS_COMP_BROTLI: - { - BrotliDecoderResult err; - size_t plain_len = dst_len; + case GNUTLS_COMP_BROTLI: { + BrotliDecoderResult err; + size_t plain_len = dst_len; - err = - BrotliDecoderDecompress(src_len, src, &plain_len, - dst); - if (err != BROTLI_DECODER_RESULT_SUCCESS) - return - gnutls_assert_val - (GNUTLS_E_DECOMPRESSION_FAILED); - ret = plain_len; - } - break; + err = BrotliDecoderDecompress(src_len, src, &plain_len, dst); + if (err != BROTLI_DECODER_RESULT_SUCCESS) + return gnutls_assert_val(GNUTLS_E_DECOMPRESSION_FAILED); + ret = plain_len; + } break; #endif #ifdef HAVE_LIBZSTD - case GNUTLS_COMP_ZSTD: - { - size_t plain_len; - - plain_len = ZSTD_decompress(dst, dst_len, src, src_len); - if (ZSTD_isError(plain_len)) - return - gnutls_assert_val - (GNUTLS_E_DECOMPRESSION_FAILED); - ret = plain_len; - } - break; + case GNUTLS_COMP_ZSTD: { + size_t plain_len; + + plain_len = ZSTD_decompress(dst, dst_len, src, src_len); + if (ZSTD_isError(plain_len)) + return gnutls_assert_val(GNUTLS_E_DECOMPRESSION_FAILED); + ret = plain_len; + } break; #endif default: return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); diff --git a/lib/compress.h b/lib/compress.h index 859004d0a3..7d31206e6f 100644 --- a/lib/compress.h +++ b/lib/compress.h @@ -21,14 +21,14 @@ */ #ifndef GNUTLS_LIB_COMPRESS_H -# define GNUTLS_LIB_COMPRESS_H +#define GNUTLS_LIB_COMPRESS_H -# include "gnutls_int.h" +#include "gnutls_int.h" size_t _gnutls_compress_bound(gnutls_compression_method_t alg, size_t src_len); -int _gnutls_compress(gnutls_compression_method_t alg, uint8_t * dst, - size_t dst_len, const uint8_t * src, size_t src_len); -int _gnutls_decompress(gnutls_compression_method_t alg, uint8_t * dst, - size_t dst_len, const uint8_t * src, size_t src_len); +int _gnutls_compress(gnutls_compression_method_t alg, uint8_t *dst, + size_t dst_len, const uint8_t *src, size_t src_len); +int _gnutls_decompress(gnutls_compression_method_t alg, uint8_t *dst, + size_t dst_len, const uint8_t *src, size_t src_len); -#endif /* GNUTLS_LIB_COMPRESS_H */ +#endif /* GNUTLS_LIB_COMPRESS_H */ diff --git a/lib/constate.c b/lib/constate.c index ab5f72c35e..70a887b6fe 100644 --- a/lib/constate.c +++ b/lib/constate.c @@ -45,18 +45,17 @@ static const char keyexp[] = "key expansion"; static const int keyexp_length = sizeof(keyexp) - 1; -static int -_tls13_init_record_state(gnutls_cipher_algorithm_t algo, - record_state_st * state); +static int _tls13_init_record_state(gnutls_cipher_algorithm_t algo, + record_state_st *state); /* This function is to be called after handshake, when master_secret, * client_random and server_random have been initialized. * This function creates the keys and stores them into pending session. * (session->cipher_specs) */ -static int -_gnutls_set_keys(gnutls_session_t session, record_parameters_st * params, - unsigned hash_size, unsigned IV_size, unsigned key_size) +static int _gnutls_set_keys(gnutls_session_t session, + record_parameters_st *params, unsigned hash_size, + unsigned IV_size, unsigned key_size) { uint8_t rnd[2 * GNUTLS_RANDOM_SIZE]; int pos, ret; @@ -87,25 +86,23 @@ _gnutls_set_keys(gnutls_session_t session, record_parameters_st * params, _gnutls_memory_mark_defined(session->security_parameters.master_secret, GNUTLS_MASTER_SIZE); #ifdef ENABLE_SSL3 - if (get_num_version(session) == GNUTLS_SSL3) { /* SSL 3 */ - ret = - _gnutls_ssl3_generate_random - (session->security_parameters.master_secret, - GNUTLS_MASTER_SIZE, rnd, 2 * GNUTLS_RANDOM_SIZE, - block_size, key_block); - } else /* TLS 1.0+ */ + if (get_num_version(session) == GNUTLS_SSL3) { /* SSL 3 */ + ret = _gnutls_ssl3_generate_random( + session->security_parameters.master_secret, + GNUTLS_MASTER_SIZE, rnd, 2 * GNUTLS_RANDOM_SIZE, + block_size, key_block); + } else /* TLS 1.0+ */ #endif - ret = - _gnutls_PRF(session, - session->security_parameters.master_secret, - GNUTLS_MASTER_SIZE, keyexp, keyexp_length, - rnd, 2 * GNUTLS_RANDOM_SIZE, block_size, - key_block); + ret = _gnutls_PRF(session, + session->security_parameters.master_secret, + GNUTLS_MASTER_SIZE, keyexp, keyexp_length, + rnd, 2 * GNUTLS_RANDOM_SIZE, block_size, + key_block); if (ret < 0) { - _gnutls_memory_mark_undefined(session-> - security_parameters.master_secret, - GNUTLS_MASTER_SIZE); + _gnutls_memory_mark_undefined( + session->security_parameters.master_secret, + GNUTLS_MASTER_SIZE); return gnutls_assert_val(ret); } @@ -129,14 +126,14 @@ _gnutls_set_keys(gnutls_session_t session, record_parameters_st * params, _gnutls_hard_log("INT: CLIENT MAC KEY [%d]: %s\n", client_write->mac_key_size, _gnutls_bin2hex(client_write->mac_key, - hash_size, - buf, sizeof(buf), NULL)); + hash_size, buf, sizeof(buf), + NULL)); _gnutls_hard_log("INT: SERVER MAC KEY [%d]: %s\n", server_write->mac_key_size, _gnutls_bin2hex(server_write->mac_key, - hash_size, - buf, sizeof(buf), NULL)); + hash_size, buf, sizeof(buf), + NULL)); } if (key_size > 0) { @@ -151,18 +148,13 @@ _gnutls_set_keys(gnutls_session_t session, record_parameters_st * params, pos += key_size; - _gnutls_hard_log("INT: CLIENT WRITE KEY [%d]: %s\n", - key_size, - _gnutls_bin2hex(client_write->key, - key_size, + _gnutls_hard_log("INT: CLIENT WRITE KEY [%d]: %s\n", key_size, + _gnutls_bin2hex(client_write->key, key_size, buf, sizeof(buf), NULL)); - _gnutls_hard_log("INT: SERVER WRITE KEY [%d]: %s\n", - key_size, - _gnutls_bin2hex(server_write->key, - key_size, + _gnutls_hard_log("INT: SERVER WRITE KEY [%d]: %s\n", key_size, + _gnutls_bin2hex(server_write->key, key_size, buf, sizeof(buf), NULL)); - } /* IV generation in export and non export ciphers. @@ -181,23 +173,22 @@ _gnutls_set_keys(gnutls_session_t session, record_parameters_st * params, _gnutls_hard_log("INT: CLIENT WRITE IV [%d]: %s\n", client_write->iv_size, _gnutls_bin2hex(client_write->iv, - client_write->iv_size, - buf, sizeof(buf), NULL)); + client_write->iv_size, buf, + sizeof(buf), NULL)); _gnutls_hard_log("INT: SERVER WRITE IV [%d]: %s\n", server_write->iv_size, _gnutls_bin2hex(server_write->iv, - server_write->iv_size, - buf, sizeof(buf), NULL)); + server_write->iv_size, buf, + sizeof(buf), NULL)); } return 0; } -static int -_tls13_update_keys(gnutls_session_t session, hs_stage_t stage, - record_parameters_st * params, - unsigned iv_size, unsigned key_size) +static int _tls13_update_keys(gnutls_session_t session, hs_stage_t stage, + record_parameters_st *params, unsigned iv_size, + unsigned key_size) { uint8_t key_block[MAX_CIPHER_KEY_SIZE]; uint8_t iv_block[MAX_CIPHER_IV_SIZE]; @@ -221,20 +212,18 @@ _tls13_update_keys(gnutls_session_t session, hs_stage_t stage, params->read.key_size = prev->read.key_size; memcpy(params->read.key, prev->read.key, prev->read.key_size); - _gnutls_hard_log("INT: READ KEY [%d]: %s\n", - params->read.key_size, - _gnutls_bin2hex(params->read.key, - params->read.key_size, buf, - sizeof(buf), NULL)); + _gnutls_hard_log( + "INT: READ KEY [%d]: %s\n", params->read.key_size, + _gnutls_bin2hex(params->read.key, params->read.key_size, + buf, sizeof(buf), NULL)); params->read.iv_size = prev->read.iv_size; memcpy(params->read.iv, prev->read.iv, prev->read.key_size); - _gnutls_hard_log("INT: READ IV [%d]: %s\n", - params->read.iv_size, - _gnutls_bin2hex(params->read.iv, - params->read.iv_size, buf, - sizeof(buf), NULL)); + _gnutls_hard_log( + "INT: READ IV [%d]: %s\n", params->read.iv_size, + _gnutls_bin2hex(params->read.iv, params->read.iv_size, + buf, sizeof(buf), NULL)); } else { upd_state = ¶ms->read; @@ -258,64 +247,56 @@ _tls13_update_keys(gnutls_session_t session, hs_stage_t stage, params->write.iv_size = prev->write.iv_size; memcpy(params->write.iv, prev->write.iv, prev->write.iv_size); - _gnutls_hard_log("INT: WRITE IV [%d]: %s\n", - params->write.iv_size, - _gnutls_bin2hex(params->write.iv, - params->write.iv_size, buf, - sizeof(buf), NULL)); + _gnutls_hard_log( + "INT: WRITE IV [%d]: %s\n", params->write.iv_size, + _gnutls_bin2hex(params->write.iv, params->write.iv_size, + buf, sizeof(buf), NULL)); } - if ((session->security_parameters.entity == GNUTLS_CLIENT - && stage == STAGE_UPD_OURS) - || (session->security_parameters.entity == GNUTLS_SERVER - && stage == STAGE_UPD_PEERS)) { - + if ((session->security_parameters.entity == GNUTLS_CLIENT && + stage == STAGE_UPD_OURS) || + (session->security_parameters.entity == GNUTLS_SERVER && + stage == STAGE_UPD_PEERS)) { /* client keys */ - ret = _tls13_expand_secret(session, APPLICATION_TRAFFIC_UPDATE, - sizeof(APPLICATION_TRAFFIC_UPDATE) - - 1, NULL, 0, - session->key.proto.tls13.ap_ckey, - session->security_parameters. - prf->output_size, - session->key.proto.tls13.ap_ckey); + ret = _tls13_expand_secret( + session, APPLICATION_TRAFFIC_UPDATE, + sizeof(APPLICATION_TRAFFIC_UPDATE) - 1, NULL, 0, + session->key.proto.tls13.ap_ckey, + session->security_parameters.prf->output_size, + session->key.proto.tls13.ap_ckey); if (ret < 0) return gnutls_assert_val(ret); - ret = - _tls13_expand_secret(session, "key", 3, NULL, 0, - session->key.proto.tls13.ap_ckey, - key_size, key_block); + ret = _tls13_expand_secret(session, "key", 3, NULL, 0, + session->key.proto.tls13.ap_ckey, + key_size, key_block); if (ret < 0) return gnutls_assert_val(ret); - ret = - _tls13_expand_secret(session, "iv", 2, NULL, 0, - session->key.proto.tls13.ap_ckey, - iv_size, iv_block); + ret = _tls13_expand_secret(session, "iv", 2, NULL, 0, + session->key.proto.tls13.ap_ckey, + iv_size, iv_block); if (ret < 0) return gnutls_assert_val(ret); } else { - ret = _tls13_expand_secret(session, APPLICATION_TRAFFIC_UPDATE, - sizeof(APPLICATION_TRAFFIC_UPDATE) - - 1, NULL, 0, - session->key.proto.tls13.ap_skey, - session->security_parameters. - prf->output_size, - session->key.proto.tls13.ap_skey); + ret = _tls13_expand_secret( + session, APPLICATION_TRAFFIC_UPDATE, + sizeof(APPLICATION_TRAFFIC_UPDATE) - 1, NULL, 0, + session->key.proto.tls13.ap_skey, + session->security_parameters.prf->output_size, + session->key.proto.tls13.ap_skey); if (ret < 0) return gnutls_assert_val(ret); - ret = - _tls13_expand_secret(session, "key", 3, NULL, 0, - session->key.proto.tls13.ap_skey, - key_size, key_block); + ret = _tls13_expand_secret(session, "key", 3, NULL, 0, + session->key.proto.tls13.ap_skey, + key_size, key_block); if (ret < 0) return gnutls_assert_val(ret); - ret = - _tls13_expand_secret(session, "iv", 2, NULL, 0, - session->key.proto.tls13.ap_skey, - iv_size, iv_block); + ret = _tls13_expand_secret(session, "iv", 2, NULL, 0, + session->key.proto.tls13.ap_skey, + iv_size, iv_block); if (ret < 0) return gnutls_assert_val(ret); } @@ -326,11 +307,10 @@ _tls13_update_keys(gnutls_session_t session, hs_stage_t stage, memcpy(upd_state->key, key_block, key_size); upd_state->key_size = key_size; - _gnutls_hard_log("INT: NEW %s KEY [%d]: %s\n", - (upd_state == ¶ms->read) ? "READ" : "WRITE", - key_size, - _gnutls_bin2hex(key_block, key_size, - buf, sizeof(buf), NULL)); + _gnutls_hard_log( + "INT: NEW %s KEY [%d]: %s\n", + (upd_state == ¶ms->read) ? "READ" : "WRITE", key_size, + _gnutls_bin2hex(key_block, key_size, buf, sizeof(buf), NULL)); if (iv_size > 0) { assert(iv_size <= sizeof(upd_state->iv)); @@ -338,8 +318,9 @@ _tls13_update_keys(gnutls_session_t session, hs_stage_t stage, upd_state->iv_size = iv_size; _gnutls_hard_log("INT: NEW %s IV [%d]: %s\n", - (upd_state == - ¶ms->read) ? "READ" : "WRITE", iv_size, + (upd_state == ¶ms->read) ? "READ" : + "WRITE", + iv_size, _gnutls_bin2hex(iv_block, iv_size, buf, sizeof(buf), NULL)); } @@ -347,10 +328,9 @@ _tls13_update_keys(gnutls_session_t session, hs_stage_t stage, return 0; } -static int -_tls13_set_early_keys(gnutls_session_t session, - record_parameters_st * params, - unsigned iv_size, unsigned key_size) +static int _tls13_set_early_keys(gnutls_session_t session, + record_parameters_st *params, unsigned iv_size, + unsigned key_size) { uint8_t key_block[MAX_CIPHER_KEY_SIZE]; uint8_t iv_block[MAX_CIPHER_IV_SIZE]; @@ -363,19 +343,15 @@ _tls13_set_early_keys(gnutls_session_t session, return GNUTLS_E_INVALID_REQUEST; } - ret = - _tls13_expand_secret2(session->internals. - resumed_security_parameters.prf, "key", 3, - NULL, 0, session->key.proto.tls13.e_ckey, - key_size, key_block); + ret = _tls13_expand_secret2( + session->internals.resumed_security_parameters.prf, "key", 3, + NULL, 0, session->key.proto.tls13.e_ckey, key_size, key_block); if (ret < 0) return gnutls_assert_val(ret); - ret = - _tls13_expand_secret2(session->internals. - resumed_security_parameters.prf, "iv", 2, - NULL, 0, session->key.proto.tls13.e_ckey, - iv_size, iv_block); + ret = _tls13_expand_secret2( + session->internals.resumed_security_parameters.prf, "iv", 2, + NULL, 0, session->key.proto.tls13.e_ckey, iv_size, iv_block); if (ret < 0) return gnutls_assert_val(ret); @@ -391,29 +367,26 @@ _tls13_set_early_keys(gnutls_session_t session, memcpy(early_state->key, key_block, key_size); early_state->key_size = key_size; - _gnutls_hard_log("INT: EARLY KEY [%d]: %s\n", - key_size, - _gnutls_bin2hex(key_block, key_size, - buf, sizeof(buf), NULL)); + _gnutls_hard_log("INT: EARLY KEY [%d]: %s\n", key_size, + _gnutls_bin2hex(key_block, key_size, buf, sizeof(buf), + NULL)); if (iv_size > 0) { assert(iv_size <= sizeof(early_state->iv)); memcpy(early_state->iv, iv_block, iv_size); early_state->iv_size = iv_size; - _gnutls_hard_log("INT: EARLY IV [%d]: %s\n", - iv_size, - _gnutls_bin2hex(iv_block, iv_size, - buf, sizeof(buf), NULL)); + _gnutls_hard_log("INT: EARLY IV [%d]: %s\n", iv_size, + _gnutls_bin2hex(iv_block, iv_size, buf, + sizeof(buf), NULL)); } return 0; } -static int -_tls13_set_keys(gnutls_session_t session, hs_stage_t stage, - record_parameters_st * params, - unsigned iv_size, unsigned key_size) +static int _tls13_set_keys(gnutls_session_t session, hs_stage_t stage, + record_parameters_st *params, unsigned iv_size, + unsigned key_size) { uint8_t ckey_block[MAX_CIPHER_KEY_SIZE]; uint8_t civ_block[MAX_CIPHER_IV_SIZE]; @@ -428,12 +401,12 @@ _tls13_set_keys(gnutls_session_t session, hs_stage_t stage, int ret; if (stage == STAGE_UPD_OURS || stage == STAGE_UPD_PEERS) - return _tls13_update_keys(session, stage, - params, iv_size, key_size); + return _tls13_update_keys(session, stage, params, iv_size, + key_size); else if (stage == STAGE_EARLY) - return _tls13_set_early_keys(session, - params, iv_size, key_size); + return _tls13_set_early_keys(session, params, iv_size, + key_size); else if (stage == STAGE_HS) { label = HANDSHAKE_CLIENT_TRAFFIC_LABEL; @@ -444,37 +417,33 @@ _tls13_set_keys(gnutls_session_t session, hs_stage_t stage, } else { label = APPLICATION_CLIENT_TRAFFIC_LABEL; label_size = sizeof(APPLICATION_CLIENT_TRAFFIC_LABEL) - 1; - hsk_len = - session-> - internals.handshake_hash_buffer_server_finished_len; + hsk_len = session->internals + .handshake_hash_buffer_server_finished_len; keylog_label = "CLIENT_TRAFFIC_SECRET_0"; ckey = session->key.proto.tls13.ap_ckey; } - ret = _tls13_derive_secret(session, label, label_size, - session->internals. - handshake_hash_buffer.data, hsk_len, - session->key.proto.tls13.temp_secret, ckey); + ret = _tls13_derive_secret( + session, label, label_size, + session->internals.handshake_hash_buffer.data, hsk_len, + session->key.proto.tls13.temp_secret, ckey); if (ret < 0) return gnutls_assert_val(ret); - ret = _gnutls_call_keylog_func(session, keylog_label, - ckey, - session->security_parameters. - prf->output_size); + ret = _gnutls_call_keylog_func( + session, keylog_label, ckey, + session->security_parameters.prf->output_size); if (ret < 0) return gnutls_assert_val(ret); /* client keys */ - ret = - _tls13_expand_secret(session, "key", 3, NULL, 0, ckey, key_size, - ckey_block); + ret = _tls13_expand_secret(session, "key", 3, NULL, 0, ckey, key_size, + ckey_block); if (ret < 0) return gnutls_assert_val(ret); - ret = - _tls13_expand_secret(session, "iv", 2, NULL, 0, ckey, iv_size, - civ_block); + ret = _tls13_expand_secret(session, "iv", 2, NULL, 0, ckey, iv_size, + civ_block); if (ret < 0) return gnutls_assert_val(ret); @@ -491,30 +460,27 @@ _tls13_set_keys(gnutls_session_t session, hs_stage_t stage, skey = session->key.proto.tls13.ap_skey; } - ret = _tls13_derive_secret(session, label, label_size, - session->internals. - handshake_hash_buffer.data, hsk_len, - session->key.proto.tls13.temp_secret, skey); + ret = _tls13_derive_secret( + session, label, label_size, + session->internals.handshake_hash_buffer.data, hsk_len, + session->key.proto.tls13.temp_secret, skey); if (ret < 0) return gnutls_assert_val(ret); - ret = _gnutls_call_keylog_func(session, keylog_label, - skey, - session->security_parameters. - prf->output_size); + ret = _gnutls_call_keylog_func( + session, keylog_label, skey, + session->security_parameters.prf->output_size); if (ret < 0) return gnutls_assert_val(ret); - ret = - _tls13_expand_secret(session, "key", 3, NULL, 0, skey, key_size, - skey_block); + ret = _tls13_expand_secret(session, "key", 3, NULL, 0, skey, key_size, + skey_block); if (ret < 0) return gnutls_assert_val(ret); - ret = - _tls13_expand_secret(session, "iv", 2, NULL, 0, skey, iv_size, - siv_block); + ret = _tls13_expand_secret(session, "iv", 2, NULL, 0, skey, iv_size, + siv_block); if (ret < 0) return gnutls_assert_val(ret); @@ -533,49 +499,44 @@ _tls13_set_keys(gnutls_session_t session, hs_stage_t stage, memcpy(client_write->key, ckey_block, key_size); client_write->key_size = key_size; - _gnutls_hard_log("INT: CLIENT WRITE KEY [%d]: %s\n", - key_size, - _gnutls_bin2hex(ckey_block, key_size, - buf, sizeof(buf), NULL)); + _gnutls_hard_log("INT: CLIENT WRITE KEY [%d]: %s\n", key_size, + _gnutls_bin2hex(ckey_block, key_size, buf, sizeof(buf), + NULL)); memcpy(server_write->key, skey_block, key_size); server_write->key_size = key_size; - _gnutls_hard_log("INT: SERVER WRITE KEY [%d]: %s\n", - key_size, - _gnutls_bin2hex(skey_block, key_size, - buf, sizeof(buf), NULL)); + _gnutls_hard_log("INT: SERVER WRITE KEY [%d]: %s\n", key_size, + _gnutls_bin2hex(skey_block, key_size, buf, sizeof(buf), + NULL)); if (iv_size > 0) { assert(iv_size <= sizeof(client_write->iv)); memcpy(client_write->iv, civ_block, iv_size); client_write->iv_size = iv_size; - _gnutls_hard_log("INT: CLIENT WRITE IV [%d]: %s\n", - iv_size, - _gnutls_bin2hex(civ_block, iv_size, - buf, sizeof(buf), NULL)); + _gnutls_hard_log("INT: CLIENT WRITE IV [%d]: %s\n", iv_size, + _gnutls_bin2hex(civ_block, iv_size, buf, + sizeof(buf), NULL)); memcpy(server_write->iv, siv_block, iv_size); server_write->iv_size = iv_size; - _gnutls_hard_log("INT: SERVER WRITE IV [%d]: %s\n", - iv_size, - _gnutls_bin2hex(siv_block, iv_size, - buf, sizeof(buf), NULL)); + _gnutls_hard_log("INT: SERVER WRITE IV [%d]: %s\n", iv_size, + _gnutls_bin2hex(siv_block, iv_size, buf, + sizeof(buf), NULL)); } - client_write->level = server_write->level = stage == STAGE_HS ? - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE : - GNUTLS_ENCRYPTION_LEVEL_APPLICATION; + client_write->level = server_write->level = + stage == STAGE_HS ? GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE : + GNUTLS_ENCRYPTION_LEVEL_APPLICATION; return 0; } -static int -_gnutls_init_record_state(record_parameters_st * params, - const version_entry_st * ver, int read, - record_state_st * state) +static int _gnutls_init_record_state(record_parameters_st *params, + const version_entry_st *ver, int read, + record_state_st *state) { int ret; gnutls_datum_t *iv = NULL, _iv; @@ -600,13 +561,12 @@ _gnutls_init_record_state(record_parameters_st * params, iv = &_iv; } - ret = _gnutls_auth_cipher_init(&state->ctx.tls12, - params->cipher, &key, iv, - params->mac, &mac, params->etm, + ret = _gnutls_auth_cipher_init(&state->ctx.tls12, params->cipher, &key, + iv, params->mac, &mac, params->etm, #ifdef ENABLE_SSL3 (ver->id == GNUTLS_SSL3) ? 1 : 0, #endif - 1 - read /*1==encrypt */ ); + 1 - read /*1==encrypt */); if (ret < 0 && params->cipher->id != GNUTLS_CIPHER_NULL) { _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); return gnutls_assert_val(ret); @@ -620,9 +580,8 @@ _gnutls_init_record_state(record_parameters_st * params, return 0; } -int -_gnutls_set_cipher_suite2(gnutls_session_t session, - const gnutls_cipher_suite_entry_st * cs) +int _gnutls_set_cipher_suite2(gnutls_session_t session, + const gnutls_cipher_suite_entry_st *cs) { const cipher_entry_st *cipher_algo; const mac_entry_st *mac_algo; @@ -638,13 +597,11 @@ _gnutls_set_cipher_suite2(gnutls_session_t session, mac_algo = mac_to_entry(cs->mac_algorithm); if (ver->tls13_sem && (session->internals.hsk_flags & HSK_HRR_SENT)) { - if (params->initialized && (params->cipher != cipher_algo || - params->mac != mac_algo - || cs != - session->security_parameters.cs)) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + if (params->initialized && + (params->cipher != cipher_algo || params->mac != mac_algo || + cs != session->security_parameters.cs)) + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); return 0; } @@ -652,18 +609,18 @@ _gnutls_set_cipher_suite2(gnutls_session_t session, /* The params shouldn't have been initialized at this point, unless we * are doing trial encryption/decryption of early data. */ - if (unlikely - (!((session->internals.hsk_flags & HSK_EARLY_DATA_IN_FLIGHT && - !IS_SERVER(session)) || - (session->internals.hsk_flags & HSK_EARLY_DATA_ACCEPTED && - IS_SERVER(session))) && - (params->initialized - || params->cipher != NULL || params->mac != NULL))) { + if (unlikely( + !((session->internals.hsk_flags & HSK_EARLY_DATA_IN_FLIGHT && + !IS_SERVER(session)) || + (session->internals.hsk_flags & HSK_EARLY_DATA_ACCEPTED && + IS_SERVER(session))) && + (params->initialized || params->cipher != NULL || + params->mac != NULL))) { return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); } - if (_gnutls_cipher_is_ok(cipher_algo) == 0 - || _gnutls_mac_is_ok(mac_algo) == 0) + if (_gnutls_cipher_is_ok(cipher_algo) == 0 || + _gnutls_mac_is_ok(mac_algo) == 0) return gnutls_assert_val(GNUTLS_E_UNWANTED_ALGORITHM); if (_gnutls_version_has_selectable_prf(get_version(session))) { @@ -673,7 +630,7 @@ _gnutls_set_cipher_suite2(gnutls_session_t session, session->security_parameters.prf = mac_to_entry(cs->prf); } else { session->security_parameters.prf = - mac_to_entry(GNUTLS_MAC_MD5_SHA1); + mac_to_entry(GNUTLS_MAC_MD5_SHA1); } session->security_parameters.cs = cs; @@ -721,9 +678,9 @@ int _gnutls_epoch_set_keys(gnutls_session_t session, uint16_t epoch, record_parameters_st *params; int ret; const version_entry_st *ver = - stage == STAGE_EARLY && !IS_SERVER(session) ? - session->internals.resumed_security_parameters.pversion : - get_version(session); + stage == STAGE_EARLY && !IS_SERVER(session) ? + session->internals.resumed_security_parameters.pversion : + get_version(session); if (unlikely(ver == NULL)) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); @@ -735,8 +692,8 @@ int _gnutls_epoch_set_keys(gnutls_session_t session, uint16_t epoch, if (params->initialized) return 0; - _gnutls_record_log - ("REC[%p]: Initializing epoch #%u\n", session, params->epoch); + _gnutls_record_log("REC[%p]: Initializing epoch #%u\n", session, + params->epoch); if (_gnutls_cipher_is_ok(params->cipher) == 0 || _gnutls_mac_is_ok(params->mac) == 0) @@ -754,31 +711,29 @@ int _gnutls_epoch_set_keys(gnutls_session_t session, uint16_t epoch, params->etm = session->security_parameters.etm; if (ver->tls13_sem) { - ret = _tls13_set_keys - (session, stage, params, IV_size, key_size); + ret = _tls13_set_keys(session, stage, params, IV_size, + key_size); if (ret < 0) return gnutls_assert_val(ret); if (stage != STAGE_EARLY || session->security_parameters.entity == GNUTLS_SERVER) { - ret = - _tls13_init_record_state(params->cipher->id, - ¶ms->read); + ret = _tls13_init_record_state(params->cipher->id, + ¶ms->read); if (ret < 0) return gnutls_assert_val(ret); } if (stage != STAGE_EARLY || session->security_parameters.entity == GNUTLS_CLIENT) { - ret = - _tls13_init_record_state(params->cipher->id, - ¶ms->write); + ret = _tls13_init_record_state(params->cipher->id, + ¶ms->write); if (ret < 0) return gnutls_assert_val(ret); } } else { - ret = _gnutls_set_keys - (session, params, hash_size, IV_size, key_size); + ret = _gnutls_set_keys(session, params, hash_size, IV_size, + key_size); if (ret < 0) return gnutls_assert_val(ret); @@ -794,24 +749,23 @@ int _gnutls_epoch_set_keys(gnutls_session_t session, uint16_t epoch, /* The TLS1.3 limit of 256 additional bytes is also enforced under CBC * ciphers to ensure we interoperate with gnutls 2.12.x which could add padding * data exceeding the maximum. */ - if (ver->tls13_sem - || _gnutls_cipher_type(params->cipher) == CIPHER_BLOCK) { + if (ver->tls13_sem || + _gnutls_cipher_type(params->cipher) == CIPHER_BLOCK) { session->internals.max_recv_size = 256; } else { session->internals.max_recv_size = 0; } if (!ver->tls13_sem) { - session->internals.max_recv_size += - _gnutls_record_overhead(ver, params->cipher, params->mac, - 1); + session->internals.max_recv_size += _gnutls_record_overhead( + ver, params->cipher, params->mac, 1); if (session->internals.allow_large_records != 0) session->internals.max_recv_size += EXTRA_COMP_SIZE; } session->internals.max_recv_size += - session->security_parameters.max_record_recv_size + - RECORD_HEADER_SIZE(session); + session->security_parameters.max_record_recv_size + + RECORD_HEADER_SIZE(session); _dtls_reset_window(params); @@ -825,7 +779,7 @@ int _gnutls_epoch_set_keys(gnutls_session_t session, uint16_t epoch, void _gnutls_set_resumed_parameters(gnutls_session_t session) { security_parameters_st *src = - &session->internals.resumed_security_parameters; + &session->internals.resumed_security_parameters; security_parameters_st *dst = &session->security_parameters; const version_entry_st *ver = get_version(session); @@ -859,9 +813,8 @@ void _gnutls_set_resumed_parameters(gnutls_session_t session) dst->client_auth_type = src->client_auth_type; dst->server_auth_type = src->server_auth_type; - if (!ver->tls13_sem && - !(session-> - internals.hsk_flags & HSK_RECORD_SIZE_LIMIT_NEGOTIATED)) { + if (!ver->tls13_sem && !(session->internals.hsk_flags & + HSK_RECORD_SIZE_LIMIT_NEGOTIATED)) { dst->max_record_recv_size = src->max_record_recv_size; dst->max_record_send_size = src->max_record_send_size; } @@ -877,7 +830,7 @@ int _gnutls_connection_state_init(gnutls_session_t session) { int ret; -/* Setup the master secret + /* Setup the master secret */ if ((ret = _gnutls_generate_master(session, 0)) < 0) return gnutls_assert_val(ret); @@ -904,8 +857,8 @@ int _gnutls_read_connection_state_init(gnutls_session_t session) if (ret < 0) return ret; - _gnutls_handshake_log("HSK[%p]: Cipher Suite: %s\n", - session, session->security_parameters.cs->name); + _gnutls_handshake_log("HSK[%p]: Cipher Suite: %s\n", session, + session->security_parameters.cs->name); session->security_parameters.epoch_read = epoch_next; @@ -922,12 +875,13 @@ int _gnutls_write_connection_state_init(gnutls_session_t session) /* reset max_record_send_size if it was negotiated in the * previous handshake using the record_size_limit extension */ - if (!(session->internals.hsk_flags & HSK_RECORD_SIZE_LIMIT_NEGOTIATED) - && session->security_parameters.entity == GNUTLS_SERVER) + if (!(session->internals.hsk_flags & + HSK_RECORD_SIZE_LIMIT_NEGOTIATED) && + session->security_parameters.entity == GNUTLS_SERVER) session->security_parameters.max_record_send_size = - session->security_parameters.max_user_record_send_size; + session->security_parameters.max_user_record_send_size; -/* Update internals from CipherSuite selected. + /* Update internals from CipherSuite selected. * If we are resuming just copy the connection session */ if (session->internals.resumed && @@ -941,18 +895,17 @@ int _gnutls_write_connection_state_init(gnutls_session_t session) _gnutls_handshake_log("HSK[%p]: Cipher Suite: %s\n", session, session->security_parameters.cs->name); - _gnutls_handshake_log - ("HSK[%p]: Initializing internal [write] cipher sessions\n", - session); + _gnutls_handshake_log( + "HSK[%p]: Initializing internal [write] cipher sessions\n", + session); session->security_parameters.epoch_write = epoch_next; return 0; } -static inline int -epoch_resolve(gnutls_session_t session, - unsigned int epoch_rel, uint16_t * epoch_out) +static inline int epoch_resolve(gnutls_session_t session, + unsigned int epoch_rel, uint16_t *epoch_out) { switch (epoch_rel) { case EPOCH_READ_CURRENT: @@ -976,15 +929,15 @@ epoch_resolve(gnutls_session_t session, } } -static inline record_parameters_st **epoch_get_slot(gnutls_session_t - session, uint16_t epoch) +static inline record_parameters_st **epoch_get_slot(gnutls_session_t session, + uint16_t epoch) { uint16_t epoch_index = epoch - session->security_parameters.epoch_min; if (epoch_index >= MAX_EPOCH_INDEX) { - _gnutls_handshake_log - ("Epoch %d out of range (idx: %d, max: %d)\n", - (int)epoch, (int)epoch_index, MAX_EPOCH_INDEX); + _gnutls_handshake_log( + "Epoch %d out of range (idx: %d, max: %d)\n", + (int)epoch, (int)epoch_index, MAX_EPOCH_INDEX); gnutls_assert(); return NULL; } @@ -992,9 +945,8 @@ static inline record_parameters_st **epoch_get_slot(gnutls_session_t return &session->record_parameters[epoch_index]; } -int -_gnutls_epoch_get(gnutls_session_t session, unsigned int epoch_rel, - record_parameters_st ** params_out) +int _gnutls_epoch_get(gnutls_session_t session, unsigned int epoch_rel, + record_parameters_st **params_out) { uint16_t epoch; record_parameters_st **params; @@ -1019,7 +971,7 @@ _gnutls_epoch_get(gnutls_session_t session, unsigned int epoch_rel, ret = 0; - cleanup: +cleanup: gnutls_mutex_unlock(&session->internals.epoch_lock); return ret; } @@ -1028,9 +980,8 @@ _gnutls_epoch_get(gnutls_session_t session, unsigned int epoch_rel, * is to be setup, call with @null_epoch set to true. In that case * the epoch is fully initialized after call. */ -int -_gnutls_epoch_setup_next(gnutls_session_t session, unsigned null_epoch, - record_parameters_st ** newp) +int _gnutls_epoch_setup_next(gnutls_session_t session, unsigned null_epoch, + record_parameters_st **newp) { record_parameters_st **slot; @@ -1040,12 +991,12 @@ _gnutls_epoch_setup_next(gnutls_session_t session, unsigned null_epoch, if (slot == NULL) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - if (*slot != NULL) { /* already initialized */ + if (*slot != NULL) { /* already initialized */ if (unlikely(null_epoch && !(*slot)->initialized)) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - if (unlikely - ((*slot)->epoch != session->security_parameters.epoch_next)) + if (unlikely((*slot)->epoch != + session->security_parameters.epoch_next)) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); goto finish; @@ -1072,20 +1023,20 @@ _gnutls_epoch_setup_next(gnutls_session_t session, unsigned null_epoch, if (IS_DTLS(session)) { uint64_t seq = (*slot)->write.sequence_number; seq &= UINT64_C(0xffffffffffff); - seq |= - ((uint64_t) session->security_parameters.epoch_next) << 48; + seq |= ((uint64_t)session->security_parameters.epoch_next) + << 48; (*slot)->write.sequence_number = seq; } - finish: +finish: if (newp != NULL) *newp = *slot; return 0; } -static inline int -epoch_is_active(gnutls_session_t session, record_parameters_st * params) +static inline int epoch_is_active(gnutls_session_t session, + record_parameters_st *params) { const security_parameters_st *sp = &session->security_parameters; @@ -1101,8 +1052,8 @@ epoch_is_active(gnutls_session_t session, record_parameters_st * params) return 0; } -static inline int -epoch_alive(gnutls_session_t session, record_parameters_st * params) +static inline int epoch_alive(gnutls_session_t session, + record_parameters_st *params) { if (params->usage_cnt > 0) return 1; @@ -1122,19 +1073,19 @@ void _gnutls_epoch_gc(gnutls_session_t session) /* Free all dead cipher state */ for (i = 0; i < MAX_EPOCH_INDEX; i++) { if (session->record_parameters[i] != NULL) { - if (!epoch_is_active - (session, session->record_parameters[i]) - && session->record_parameters[i]->usage_cnt) - _gnutls_record_log - ("REC[%p]: Note inactive epoch %d has %d users\n", - session, - session->record_parameters[i]->epoch, - session->record_parameters[i]->usage_cnt); - if (!epoch_alive - (session, session->record_parameters[i])) { - _gnutls_epoch_free(session, - session->record_parameters - [i]); + if (!epoch_is_active(session, + session->record_parameters[i]) && + session->record_parameters[i]->usage_cnt) + _gnutls_record_log( + "REC[%p]: Note inactive epoch %d has %d users\n", + session, + session->record_parameters[i]->epoch, + session->record_parameters[i] + ->usage_cnt); + if (!epoch_alive(session, + session->record_parameters[i])) { + _gnutls_epoch_free( + session, session->record_parameters[i]); session->record_parameters[i] = NULL; } } @@ -1142,15 +1093,15 @@ void _gnutls_epoch_gc(gnutls_session_t session) /* Look for contiguous NULLs at the start of the array */ for (i = 0; - i < MAX_EPOCH_INDEX && session->record_parameters[i] == NULL; - i++) ; + i < MAX_EPOCH_INDEX && session->record_parameters[i] == NULL; i++) + ; min_index = i; /* Pick up the slack in the epoch window. */ if (min_index != 0) { for (i = 0, j = min_index; j < MAX_EPOCH_INDEX; i++, j++) { session->record_parameters[i] = - session->record_parameters[j]; + session->record_parameters[j]; session->record_parameters[j] = NULL; } } @@ -1158,14 +1109,14 @@ void _gnutls_epoch_gc(gnutls_session_t session) /* Set the new epoch_min */ if (session->record_parameters[0] != NULL) session->security_parameters.epoch_min = - session->record_parameters[0]->epoch; + session->record_parameters[0]->epoch; gnutls_mutex_unlock(&session->internals.epoch_lock); _gnutls_record_log("REC[%p]: End of epoch cleanup\n", session); } -static inline void free_record_state(record_state_st * state) +static inline void free_record_state(record_state_st *state) { zeroize_temp_key(state->mac_key, state->mac_key_size); zeroize_temp_key(state->iv, state->iv_size); @@ -1177,7 +1128,7 @@ static inline void free_record_state(record_state_st * state) _gnutls_auth_cipher_deinit(&state->ctx.tls12); } -void _gnutls_epoch_free(gnutls_session_t session, record_parameters_st * params) +void _gnutls_epoch_free(gnutls_session_t session, record_parameters_st *params) { _gnutls_record_log("REC[%p]: Epoch #%u freed\n", session, params->epoch); @@ -1188,9 +1139,8 @@ void _gnutls_epoch_free(gnutls_session_t session, record_parameters_st * params) gnutls_free(params); } -static int -_gnutls_call_secret_func(gnutls_session_t session, - hs_stage_t stage, bool for_read, bool for_write) +static int _gnutls_call_secret_func(gnutls_session_t session, hs_stage_t stage, + bool for_read, bool for_write) { const mac_entry_st *prf = NULL; gnutls_record_encryption_level_t level; @@ -1204,19 +1154,17 @@ _gnutls_call_secret_func(gnutls_session_t session, prf = session->key.binders[0].prf; level = GNUTLS_ENCRYPTION_LEVEL_EARLY; if (for_read) { - if (unlikely - (session->security_parameters.entity == - GNUTLS_CLIENT)) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + if (unlikely(session->security_parameters.entity == + GNUTLS_CLIENT)) + return gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); secret_read = session->key.proto.tls13.e_ckey; } if (for_write) { - if (unlikely - (session->security_parameters.entity == - GNUTLS_SERVER)) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + if (unlikely(session->security_parameters.entity == + GNUTLS_SERVER)) + return gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); secret_write = session->key.proto.tls13.e_ckey; } break; @@ -1224,15 +1172,16 @@ _gnutls_call_secret_func(gnutls_session_t session, prf = session->security_parameters.prf; level = GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE; if (for_read) - secret_read = - session->security_parameters.entity == - GNUTLS_CLIENT ? session->key.proto. - tls13.hs_skey : session->key.proto.tls13.hs_ckey; + secret_read = session->security_parameters.entity == + GNUTLS_CLIENT ? + session->key.proto.tls13.hs_skey : + session->key.proto.tls13.hs_ckey; if (for_write) secret_write = - session->security_parameters.entity == - GNUTLS_CLIENT ? session->key.proto. - tls13.hs_ckey : session->key.proto.tls13.hs_skey; + session->security_parameters.entity == + GNUTLS_CLIENT ? + session->key.proto.tls13.hs_ckey : + session->key.proto.tls13.hs_skey; break; case STAGE_APP: case STAGE_UPD_OURS: @@ -1240,23 +1189,23 @@ _gnutls_call_secret_func(gnutls_session_t session, prf = session->security_parameters.prf; level = GNUTLS_ENCRYPTION_LEVEL_APPLICATION; if (for_read) - secret_read = - session->security_parameters.entity == - GNUTLS_CLIENT ? session->key.proto. - tls13.ap_skey : session->key.proto.tls13.ap_ckey; + secret_read = session->security_parameters.entity == + GNUTLS_CLIENT ? + session->key.proto.tls13.ap_skey : + session->key.proto.tls13.ap_ckey; if (for_write) secret_write = - session->security_parameters.entity == - GNUTLS_CLIENT ? session->key.proto. - tls13.ap_ckey : session->key.proto.tls13.ap_skey; + session->security_parameters.entity == + GNUTLS_CLIENT ? + session->key.proto.tls13.ap_ckey : + session->key.proto.tls13.ap_skey; break; default: return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); } - return session->internals.h_secret_func(session, level, - secret_read, secret_write, - prf->output_size); + return session->internals.h_secret_func(session, level, secret_read, + secret_write, prf->output_size); } int _tls13_connection_state_init(gnutls_session_t session, hs_stage_t stage) @@ -1295,11 +1244,12 @@ int _tls13_read_connection_state_init(gnutls_session_t session, if (ret < 0) return ret; - _gnutls_handshake_log - ("HSK[%p]: TLS 1.3 set read key with cipher suite: %s\n", session, - stage == - STAGE_EARLY ? session->internals.resumed_security_parameters. - cs->name : session->security_parameters.cs->name); + _gnutls_handshake_log( + "HSK[%p]: TLS 1.3 set read key with cipher suite: %s\n", + session, + stage == STAGE_EARLY ? + session->internals.resumed_security_parameters.cs->name : + session->security_parameters.cs->name); session->security_parameters.epoch_read = epoch_next; @@ -1324,11 +1274,12 @@ int _tls13_write_connection_state_init(gnutls_session_t session, if (ret < 0) return ret; - _gnutls_handshake_log - ("HSK[%p]: TLS 1.3 set write key with cipher suite: %s\n", session, - stage == - STAGE_EARLY ? session->internals.resumed_security_parameters. - cs->name : session->security_parameters.cs->name); + _gnutls_handshake_log( + "HSK[%p]: TLS 1.3 set write key with cipher suite: %s\n", + session, + stage == STAGE_EARLY ? + session->internals.resumed_security_parameters.cs->name : + session->security_parameters.cs->name); session->security_parameters.epoch_write = epoch_next; @@ -1339,9 +1290,8 @@ int _tls13_write_connection_state_init(gnutls_session_t session, return 0; } -static int -_tls13_init_record_state(gnutls_cipher_algorithm_t algo, - record_state_st * state) +static int _tls13_init_record_state(gnutls_cipher_algorithm_t algo, + record_state_st *state) { int ret; gnutls_datum_t key; @@ -1376,9 +1326,8 @@ _tls13_init_record_state(gnutls_cipher_algorithm_t algo, * * Since: 3.7.0 */ -void -gnutls_handshake_set_secret_function(gnutls_session_t session, - gnutls_handshake_secret_func func) +void gnutls_handshake_set_secret_function(gnutls_session_t session, + gnutls_handshake_secret_func func) { session->internals.h_secret_func = func; } diff --git a/lib/constate.h b/lib/constate.h index 2b230c11bc..15ad5c1057 100644 --- a/lib/constate.h +++ b/lib/constate.h @@ -21,10 +21,10 @@ */ #ifndef GNUTLS_LIB_CONSTATE_H -# define GNUTLS_LIB_CONSTATE_H +#define GNUTLS_LIB_CONSTATE_H int _gnutls_set_cipher_suite2(gnutls_session_t session, - const gnutls_cipher_suite_entry_st * cs); + const gnutls_cipher_suite_entry_st *cs); int _gnutls_epoch_set_keys(gnutls_session_t session, uint16_t epoch, hs_stage_t stage); @@ -32,17 +32,16 @@ int _gnutls_connection_state_init(gnutls_session_t session); int _gnutls_read_connection_state_init(gnutls_session_t session); int _gnutls_write_connection_state_init(gnutls_session_t session); -# define _gnutls_epoch_bump(session) \ - (session)->security_parameters.epoch_next++ +#define _gnutls_epoch_bump(session) (session)->security_parameters.epoch_next++ int _gnutls_epoch_dup(gnutls_session_t session, unsigned int epoch_rel); int _gnutls_epoch_get(gnutls_session_t session, unsigned int epoch_rel, - record_parameters_st ** params_out); + record_parameters_st **params_out); int _gnutls_epoch_setup_next(gnutls_session_t session, unsigned null_epoch, - record_parameters_st ** newp); + record_parameters_st **newp); void _gnutls_epoch_gc(gnutls_session_t session); -void _gnutls_epoch_free(gnutls_session_t session, record_parameters_st * state); +void _gnutls_epoch_free(gnutls_session_t session, record_parameters_st *state); void _gnutls_set_resumed_parameters(gnutls_session_t session); @@ -96,4 +95,4 @@ static inline int _gnutls_epoch_refcount_dec(gnutls_session_t session, return 0; } -#endif /* GNUTLS_LIB_CONSTATE_H */ +#endif /* GNUTLS_LIB_CONSTATE_H */ diff --git a/lib/crypto-api.c b/lib/crypto-api.c index 568edf7571..57e7872ff5 100644 --- a/lib/crypto-api.c +++ b/lib/crypto-api.c @@ -55,10 +55,9 @@ typedef struct api_cipher_hd_st { * * Since: 2.10.0 **/ -int -gnutls_cipher_init(gnutls_cipher_hd_t * handle, - gnutls_cipher_algorithm_t cipher, - const gnutls_datum_t * key, const gnutls_datum_t * iv) +int gnutls_cipher_init(gnutls_cipher_hd_t *handle, + gnutls_cipher_algorithm_t cipher, + const gnutls_datum_t *key, const gnutls_datum_t *iv) { api_cipher_hd_st *h; int ret; @@ -153,9 +152,8 @@ int gnutls_cipher_tag(gnutls_cipher_hd_t handle, void *tag, size_t tag_size) * * Since: 3.0 **/ -int -gnutls_cipher_add_auth(gnutls_cipher_hd_t handle, const void *ptext, - size_t ptext_size) +int gnutls_cipher_add_auth(gnutls_cipher_hd_t handle, const void *ptext, + size_t ptext_size) { api_cipher_hd_st *h = handle; int ret; @@ -270,8 +268,8 @@ int _gnutls_cipher_set_key(gnutls_cipher_hd_t handle, void *key, size_t keylen) * * Since: 2.10.0 **/ -int -gnutls_cipher_encrypt(gnutls_cipher_hd_t handle, void *ptext, size_t ptext_len) +int gnutls_cipher_encrypt(gnutls_cipher_hd_t handle, void *ptext, + size_t ptext_len) { api_cipher_hd_st *h = handle; int ret; @@ -301,8 +299,8 @@ gnutls_cipher_encrypt(gnutls_cipher_hd_t handle, void *ptext, size_t ptext_len) * * Since: 2.10.0 **/ -int -gnutls_cipher_decrypt(gnutls_cipher_hd_t handle, void *ctext, size_t ctext_len) +int gnutls_cipher_decrypt(gnutls_cipher_hd_t handle, void *ctext, + size_t ctext_len) { api_cipher_hd_st *h = handle; int ret; @@ -338,15 +336,14 @@ gnutls_cipher_decrypt(gnutls_cipher_hd_t handle, void *ctext, size_t ctext_len) * * Since: 2.12.0 **/ -int -gnutls_cipher_encrypt2(gnutls_cipher_hd_t handle, const void *ptext, - size_t ptext_len, void *ctext, size_t ctext_len) +int gnutls_cipher_encrypt2(gnutls_cipher_hd_t handle, const void *ptext, + size_t ptext_len, void *ctext, size_t ctext_len) { api_cipher_hd_st *h = handle; int ret; - ret = _gnutls_cipher_encrypt2(&h->ctx_enc, ptext, ptext_len, - ctext, ctext_len); + ret = _gnutls_cipher_encrypt2(&h->ctx_enc, ptext, ptext_len, ctext, + ctext_len); if (ret < 0) { _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); } else { @@ -375,19 +372,18 @@ gnutls_cipher_encrypt2(gnutls_cipher_hd_t handle, const void *ptext, * * Since: 2.12.0 **/ -int -gnutls_cipher_decrypt2(gnutls_cipher_hd_t handle, const void *ctext, - size_t ctext_len, void *ptext, size_t ptext_len) +int gnutls_cipher_decrypt2(gnutls_cipher_hd_t handle, const void *ctext, + size_t ctext_len, void *ptext, size_t ptext_len) { api_cipher_hd_st *h = handle; int ret; if (_gnutls_cipher_type(h->ctx_enc.e) != CIPHER_BLOCK) { - ret = _gnutls_cipher_decrypt2(&h->ctx_enc, ctext, - ctext_len, ptext, ptext_len); + ret = _gnutls_cipher_decrypt2(&h->ctx_enc, ctext, ctext_len, + ptext, ptext_len); } else { - ret = _gnutls_cipher_decrypt2(&h->ctx_dec, ctext, - ctext_len, ptext, ptext_len); + ret = _gnutls_cipher_decrypt2(&h->ctx_dec, ctext, ctext_len, + ptext, ptext_len); } if (ret < 0) { @@ -423,10 +419,9 @@ gnutls_cipher_decrypt2(gnutls_cipher_hd_t handle, const void *ctext, * * Since: 3.7.7 **/ -int -gnutls_cipher_encrypt3(gnutls_cipher_hd_t handle, - const void *ptext, size_t ptext_len, - void *ctext, size_t *ctext_len, unsigned flags) +int gnutls_cipher_encrypt3(gnutls_cipher_hd_t handle, const void *ptext, + size_t ptext_len, void *ctext, size_t *ctext_len, + unsigned flags) { api_cipher_hd_st *h = handle; const cipher_entry_st *e = h->ctx_enc.e; @@ -462,8 +457,7 @@ gnutls_cipher_encrypt3(gnutls_cipher_hd_t handle, /* Encrypt up to the last complete block */ r = ptext_len % block_size; - ret = _gnutls_cipher_encrypt2(&h->ctx_enc, - ptext, ptext_len - r, + ret = _gnutls_cipher_encrypt2(&h->ctx_enc, ptext, ptext_len - r, ctext, ptext_len - r); if (ret < 0) { goto error; @@ -474,9 +468,9 @@ gnutls_cipher_encrypt3(gnutls_cipher_hd_t handle, if (r > 0) { memcpy(last_block, &p[ptext_len - r], r); } - ret = _gnutls_cipher_encrypt2(&h->ctx_enc, - last_block, block_size, - &c[ptext_len - r], block_size); + ret = _gnutls_cipher_encrypt2(&h->ctx_enc, last_block, + block_size, &c[ptext_len - r], + block_size); if (ret < 0) { goto error; } @@ -495,7 +489,7 @@ gnutls_cipher_encrypt3(gnutls_cipher_hd_t handle, *ctext_len = ptext_len; } - error: +error: if (ret < 0) { _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); } else { @@ -522,16 +516,15 @@ gnutls_cipher_encrypt3(gnutls_cipher_hd_t handle, * * Since: 3.7.7 **/ -int -gnutls_cipher_decrypt3(gnutls_cipher_hd_t handle, - const void *ctext, size_t ctext_len, - void *ptext, size_t *ptext_len, unsigned flags) +int gnutls_cipher_decrypt3(gnutls_cipher_hd_t handle, const void *ctext, + size_t ctext_len, void *ptext, size_t *ptext_len, + unsigned flags) { api_cipher_hd_st *h = handle; int ret; - ret = gnutls_cipher_decrypt2(handle, - ctext, ctext_len, ptext, *ptext_len); + ret = gnutls_cipher_decrypt2(handle, ctext, ctext_len, ptext, + *ptext_len); if (ret < 0) { return ret; } @@ -540,16 +533,15 @@ gnutls_cipher_decrypt3(gnutls_cipher_hd_t handle, (flags & GNUTLS_CIPHER_PADDING_PKCS7)) { uint8_t *p = ptext; uint8_t padding = p[*ptext_len - 1]; - if (!padding - || padding > _gnutls_cipher_get_block_size(h->ctx_enc.e)) { + if (!padding || + padding > _gnutls_cipher_get_block_size(h->ctx_enc.e)) { return gnutls_assert_val(GNUTLS_E_DECRYPTION_FAILED); } /* Check that the prior bytes are all PADDING */ for (size_t i = *ptext_len - padding; i < *ptext_len; i++) { if (padding != p[*ptext_len - 1]) { - return - gnutls_assert_val - (GNUTLS_E_DECRYPTION_FAILED); + return gnutls_assert_val( + GNUTLS_E_DECRYPTION_FAILED); } } *ptext_len -= padding; @@ -598,10 +590,8 @@ void gnutls_cipher_deinit(gnutls_cipher_hd_t handle) * * Since: 2.10.0 **/ -int -gnutls_hmac_init(gnutls_hmac_hd_t * dig, - gnutls_mac_algorithm_t algorithm, - const void *key, size_t keylen) +int gnutls_hmac_init(gnutls_hmac_hd_t *dig, gnutls_mac_algorithm_t algorithm, + const void *key, size_t keylen) { int ret; bool not_approved = false; @@ -626,8 +616,8 @@ gnutls_hmac_init(gnutls_hmac_hd_t * dig, return GNUTLS_E_MEMORY_ERROR; } - ret = _gnutls_mac_init(((mac_hd_st *) * dig), - mac_to_entry(algorithm), key, keylen); + ret = _gnutls_mac_init(((mac_hd_st *)*dig), mac_to_entry(algorithm), + key, keylen); if (ret < 0) { _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); } else if (not_approved) { @@ -648,11 +638,10 @@ gnutls_hmac_init(gnutls_hmac_hd_t * dig, * * Since: 3.2.0 **/ -void -gnutls_hmac_set_nonce(gnutls_hmac_hd_t handle, const void *nonce, - size_t nonce_len) +void gnutls_hmac_set_nonce(gnutls_hmac_hd_t handle, const void *nonce, + size_t nonce_len) { - _gnutls_mac_set_nonce((mac_hd_st *) handle, nonce, nonce_len); + _gnutls_mac_set_nonce((mac_hd_st *)handle, nonce, nonce_len); } /** @@ -672,7 +661,7 @@ int gnutls_hmac(gnutls_hmac_hd_t handle, const void *ptext, size_t ptext_len) { int ret; - ret = _gnutls_mac((mac_hd_st *) handle, ptext, ptext_len); + ret = _gnutls_mac((mac_hd_st *)handle, ptext, ptext_len); if (ret < 0) { _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); } else { @@ -693,7 +682,7 @@ int gnutls_hmac(gnutls_hmac_hd_t handle, const void *ptext, size_t ptext_len) **/ void gnutls_hmac_output(gnutls_hmac_hd_t handle, void *digest) { - _gnutls_mac_output((mac_hd_st *) handle, digest); + _gnutls_mac_output((mac_hd_st *)handle, digest); } /** @@ -708,7 +697,7 @@ void gnutls_hmac_output(gnutls_hmac_hd_t handle, void *digest) **/ void gnutls_hmac_deinit(gnutls_hmac_hd_t handle, void *digest) { - _gnutls_mac_deinit((mac_hd_st *) handle, digest); + _gnutls_mac_deinit((mac_hd_st *)handle, digest); gnutls_free(handle); } @@ -762,10 +751,9 @@ unsigned gnutls_hmac_get_key_size(gnutls_mac_algorithm_t algorithm) * * Since: 2.10.0 **/ -int -gnutls_hmac_fast(gnutls_mac_algorithm_t algorithm, - const void *key, size_t keylen, - const void *ptext, size_t ptext_len, void *digest) +int gnutls_hmac_fast(gnutls_mac_algorithm_t algorithm, const void *key, + size_t keylen, const void *ptext, size_t ptext_len, + void *digest) { int ret; bool not_approved = false; @@ -820,7 +808,7 @@ gnutls_hmac_hd_t gnutls_hmac_copy(gnutls_hmac_hd_t handle) return NULL; } - if (_gnutls_mac_copy((const mac_hd_st *)handle, (mac_hd_st *) dig) != + if (_gnutls_mac_copy((const mac_hd_st *)handle, (mac_hd_st *)dig) != GNUTLS_E_SUCCESS) { gnutls_assert(); gnutls_free(dig); @@ -847,8 +835,7 @@ gnutls_hmac_hd_t gnutls_hmac_copy(gnutls_hmac_hd_t handle) * * Since: 2.10.0 **/ -int -gnutls_hash_init(gnutls_hash_hd_t * dig, gnutls_digest_algorithm_t algorithm) +int gnutls_hash_init(gnutls_hash_hd_t *dig, gnutls_digest_algorithm_t algorithm) { int ret; bool not_approved = false; @@ -867,7 +854,7 @@ gnutls_hash_init(gnutls_hash_hd_t * dig, gnutls_digest_algorithm_t algorithm) return GNUTLS_E_MEMORY_ERROR; } - ret = _gnutls_hash_init(((digest_hd_st *) * dig), + ret = _gnutls_hash_init(((digest_hd_st *)*dig), hash_to_entry(algorithm)); if (ret < 0) { _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); @@ -896,7 +883,7 @@ int gnutls_hash(gnutls_hash_hd_t handle, const void *ptext, size_t ptext_len) { int ret; - ret = _gnutls_hash((digest_hd_st *) handle, ptext, ptext_len); + ret = _gnutls_hash((digest_hd_st *)handle, ptext, ptext_len); if (ret < 0) { _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); } @@ -915,7 +902,7 @@ int gnutls_hash(gnutls_hash_hd_t handle, const void *ptext, size_t ptext_len) **/ void gnutls_hash_output(gnutls_hash_hd_t handle, void *digest) { - _gnutls_hash_output((digest_hd_st *) handle, digest); + _gnutls_hash_output((digest_hd_st *)handle, digest); } /** @@ -930,7 +917,7 @@ void gnutls_hash_output(gnutls_hash_hd_t handle, void *digest) **/ void gnutls_hash_deinit(gnutls_hash_hd_t handle, void *digest) { - _gnutls_hash_deinit((digest_hd_st *) handle, digest); + _gnutls_hash_deinit((digest_hd_st *)handle, digest); gnutls_free(handle); } @@ -964,9 +951,8 @@ unsigned gnutls_hash_get_len(gnutls_digest_algorithm_t algorithm) * * Since: 2.10.0 **/ -int -gnutls_hash_fast(gnutls_digest_algorithm_t algorithm, - const void *ptext, size_t ptext_len, void *digest) +int gnutls_hash_fast(gnutls_digest_algorithm_t algorithm, const void *ptext, + size_t ptext_len, void *digest) { int ret; bool not_approved = false; @@ -1014,9 +1000,8 @@ gnutls_hash_hd_t gnutls_hash_copy(gnutls_hash_hd_t handle) return NULL; } - if (_gnutls_hash_copy - ((const digest_hd_st *)handle, - (digest_hd_st *) dig) != GNUTLS_E_SUCCESS) { + if (_gnutls_hash_copy((const digest_hd_st *)handle, + (digest_hd_st *)dig) != GNUTLS_E_SUCCESS) { gnutls_assert(); gnutls_free(dig); _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); @@ -1039,7 +1024,7 @@ gnutls_hash_hd_t gnutls_hash_copy(gnutls_hash_hd_t handle) * * Since: 3.0 **/ -int gnutls_key_generate(gnutls_datum_t * key, unsigned int key_size) +int gnutls_key_generate(gnutls_datum_t *key, unsigned int key_size) { int ret; bool not_approved = false; @@ -1074,7 +1059,7 @@ int gnutls_key_generate(gnutls_datum_t * key, unsigned int key_size) goto error; } - error: +error: if (ret < 0) { _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); } else if (not_approved) { @@ -1102,9 +1087,9 @@ int gnutls_key_generate(gnutls_datum_t * key, unsigned int key_size) * * Since: 3.4.0 **/ -int gnutls_aead_cipher_init(gnutls_aead_cipher_hd_t * handle, +int gnutls_aead_cipher_init(gnutls_aead_cipher_hd_t *handle, gnutls_cipher_algorithm_t cipher, - const gnutls_datum_t * key) + const gnutls_datum_t *key) { api_aead_cipher_hd_st *h; const cipher_entry_st *e; @@ -1162,7 +1147,7 @@ int gnutls_aead_cipher_init(gnutls_aead_cipher_hd_t * handle, * Since: 3.7.5 **/ int gnutls_aead_cipher_set_key(gnutls_aead_cipher_hd_t handle, - const gnutls_datum_t * key) + const gnutls_datum_t *key) { const cipher_entry_st *e; int ret; @@ -1172,8 +1157,8 @@ int gnutls_aead_cipher_set_key(gnutls_aead_cipher_hd_t handle, return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); } - ret = handle->ctx_enc.setkey(handle->ctx_enc.handle, - key->data, key->size); + ret = handle->ctx_enc.setkey(handle->ctx_enc.handle, key->data, + key->size); if (ret < 0) { _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); } @@ -1205,20 +1190,19 @@ int gnutls_aead_cipher_set_key(gnutls_aead_cipher_hd_t handle, * * Since: 3.4.0 **/ -int -gnutls_aead_cipher_decrypt(gnutls_aead_cipher_hd_t handle, - const void *nonce, size_t nonce_len, - const void *auth, size_t auth_len, - size_t tag_size, - const void *ctext, size_t ctext_len, - void *ptext, size_t *ptext_len) +int gnutls_aead_cipher_decrypt(gnutls_aead_cipher_hd_t handle, + const void *nonce, size_t nonce_len, + const void *auth, size_t auth_len, + size_t tag_size, const void *ctext, + size_t ctext_len, void *ptext, size_t *ptext_len) { int ret; api_aead_cipher_hd_st *h = handle; if (tag_size == 0) tag_size = _gnutls_cipher_get_tag_size(h->ctx_enc.e); - else if (tag_size > (unsigned)_gnutls_cipher_get_tag_size(h->ctx_enc.e)) { + else if (tag_size > + (unsigned)_gnutls_cipher_get_tag_size(h->ctx_enc.e)) { _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); } @@ -1228,11 +1212,9 @@ gnutls_aead_cipher_decrypt(gnutls_aead_cipher_hd_t handle, return gnutls_assert_val(GNUTLS_E_DECRYPTION_FAILED); } - ret = _gnutls_aead_cipher_decrypt(&h->ctx_enc, - nonce, nonce_len, - auth, auth_len, - tag_size, - ctext, ctext_len, ptext, *ptext_len); + ret = _gnutls_aead_cipher_decrypt(&h->ctx_enc, nonce, nonce_len, auth, + auth_len, tag_size, ctext, ctext_len, + ptext, *ptext_len); if (unlikely(ret < 0)) { _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); return gnutls_assert_val(ret); @@ -1267,20 +1249,19 @@ gnutls_aead_cipher_decrypt(gnutls_aead_cipher_hd_t handle, * * Since: 3.4.0 **/ -int -gnutls_aead_cipher_encrypt(gnutls_aead_cipher_hd_t handle, - const void *nonce, size_t nonce_len, - const void *auth, size_t auth_len, - size_t tag_size, - const void *ptext, size_t ptext_len, - void *ctext, size_t *ctext_len) +int gnutls_aead_cipher_encrypt(gnutls_aead_cipher_hd_t handle, + const void *nonce, size_t nonce_len, + const void *auth, size_t auth_len, + size_t tag_size, const void *ptext, + size_t ptext_len, void *ctext, size_t *ctext_len) { api_aead_cipher_hd_st *h = handle; int ret; if (tag_size == 0) tag_size = _gnutls_cipher_get_tag_size(h->ctx_enc.e); - else if (tag_size > (unsigned)_gnutls_cipher_get_tag_size(h->ctx_enc.e)) { + else if (tag_size > + (unsigned)_gnutls_cipher_get_tag_size(h->ctx_enc.e)) { _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); } @@ -1290,11 +1271,9 @@ gnutls_aead_cipher_encrypt(gnutls_aead_cipher_hd_t handle, return gnutls_assert_val(GNUTLS_E_SHORT_MEMORY_BUFFER); } - ret = _gnutls_aead_cipher_encrypt(&h->ctx_enc, - nonce, nonce_len, - auth, auth_len, - tag_size, - ptext, ptext_len, ctext, *ctext_len); + ret = _gnutls_aead_cipher_encrypt(&h->ctx_enc, nonce, nonce_len, auth, + auth_len, tag_size, ptext, ptext_len, + ctext, *ctext_len); if (unlikely(ret < 0)) { _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); return gnutls_assert_val(ret); @@ -1337,8 +1316,8 @@ static int iov_store_grow(struct iov_store_st *s, size_t length) return 0; } -static int -append_from_iov(struct iov_store_st *dst, const giovec_t * iov, int iovcnt) +static int append_from_iov(struct iov_store_st *dst, const giovec_t *iov, + int iovcnt) { if (iovcnt > 0) { int i; @@ -1348,8 +1327,8 @@ append_from_iov(struct iov_store_st *dst, const giovec_t * iov, int iovcnt) for (i = 0; i < iovcnt; i++) { if (INT_ADD_OVERFLOW(new_capacity, iov[i].iov_len)) { - return - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + return gnutls_assert_val( + GNUTLS_E_INVALID_REQUEST); } new_capacity += iov[i].iov_len; } @@ -1360,7 +1339,7 @@ append_from_iov(struct iov_store_st *dst, const giovec_t * iov, int iovcnt) dst->data = new_data; dst->capacity = new_capacity; - p = (uint8_t *) dst->data + dst->length; + p = (uint8_t *)dst->data + dst->length; for (i = 0; i < iovcnt; i++) { if (iov[i].iov_len > 0) { memcpy(p, iov[i].iov_base, iov[i].iov_len); @@ -1372,15 +1351,15 @@ append_from_iov(struct iov_store_st *dst, const giovec_t * iov, int iovcnt) return 0; } -static int -copy_to_iov(const uint8_t * data, size_t size, const giovec_t * iov, int iovcnt) +static int copy_to_iov(const uint8_t *data, size_t size, const giovec_t *iov, + int iovcnt) { size_t offset = 0; int i; for (i = 0; i < iovcnt && size > 0; i++) { size_t to_copy = MIN(size, iov[i].iov_len); - memcpy(iov[i].iov_base, (uint8_t *) data + offset, to_copy); + memcpy(iov[i].iov_base, (uint8_t *)data + offset, to_copy); offset += to_copy; size -= to_copy; } @@ -1389,15 +1368,17 @@ copy_to_iov(const uint8_t * data, size_t size, const giovec_t * iov, int iovcnt) return 0; } -#define IOV_STORE_INIT { NULL, 0, 0 } +#define IOV_STORE_INIT \ + { \ + NULL, 0, 0 \ + } -static int -aead_cipher_encryptv_fallback(gnutls_aead_cipher_hd_t handle, - const void *nonce, size_t nonce_len, - const giovec_t * auth_iov, int auth_iovcnt, - size_t tag_size, - const giovec_t * iov, int iovcnt, - void *ctext, size_t *ctext_len) +static int aead_cipher_encryptv_fallback(gnutls_aead_cipher_hd_t handle, + const void *nonce, size_t nonce_len, + const giovec_t *auth_iov, + int auth_iovcnt, size_t tag_size, + const giovec_t *iov, int iovcnt, + void *ctext, size_t *ctext_len) { struct iov_store_st auth = IOV_STORE_INIT; struct iov_store_st ptext = IOV_STORE_INIT; @@ -1424,11 +1405,9 @@ aead_cipher_encryptv_fallback(gnutls_aead_cipher_hd_t handle, return gnutls_assert_val(ret); } - ret = gnutls_aead_cipher_encrypt(handle, nonce, nonce_len, - auth.data, auth.length, - tag_size, - ptext.data, ptext.length, - ctext, ctext_len); + ret = gnutls_aead_cipher_encrypt(handle, nonce, nonce_len, auth.data, + auth.length, tag_size, ptext.data, + ptext.length, ctext, ctext_len); iov_store_free(&auth); iov_store_free(&ptext); @@ -1436,13 +1415,11 @@ aead_cipher_encryptv_fallback(gnutls_aead_cipher_hd_t handle, return ret; } -static int -aead_cipher_encryptv(gnutls_aead_cipher_hd_t handle, - const void *nonce, size_t nonce_len, - const giovec_t * auth_iov, int auth_iovcnt, - size_t tag_size, - const giovec_t * iov, int iovcnt, - void *ctext, size_t *ctext_len) +static int aead_cipher_encryptv(gnutls_aead_cipher_hd_t handle, + const void *nonce, size_t nonce_len, + const giovec_t *auth_iov, int auth_iovcnt, + size_t tag_size, const giovec_t *iov, + int iovcnt, void *ctext, size_t *ctext_len) { int ret; uint8_t *dst; @@ -1503,8 +1480,8 @@ aead_cipher_encryptv(gnutls_aead_cipher_hd_t handle, if (ret == 0) break; len = ret; - ret = _gnutls_cipher_encrypt2(&handle->ctx_enc, - p, len, dst, dst_size); + ret = _gnutls_cipher_encrypt2(&handle->ctx_enc, p, len, dst, + dst_size); if (unlikely(ret < 0)) { _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); return gnutls_assert_val(ret); @@ -1550,13 +1527,11 @@ aead_cipher_encryptv(gnutls_aead_cipher_hd_t handle, * * Since: 3.6.3 **/ -int -gnutls_aead_cipher_encryptv(gnutls_aead_cipher_hd_t handle, - const void *nonce, size_t nonce_len, - const giovec_t * auth_iov, int auth_iovcnt, - size_t tag_size, - const giovec_t * iov, int iovcnt, - void *ctext, size_t *ctext_len) +int gnutls_aead_cipher_encryptv(gnutls_aead_cipher_hd_t handle, + const void *nonce, size_t nonce_len, + const giovec_t *auth_iov, int auth_iovcnt, + size_t tag_size, const giovec_t *iov, + int iovcnt, void *ctext, size_t *ctext_len) { /* Limitation: this function provides an optimization under the internally registered * AEAD ciphers. When an AEAD cipher is used registered with gnutls_crypto_register_aead_cipher(), @@ -1564,27 +1539,23 @@ gnutls_aead_cipher_encryptv(gnutls_aead_cipher_hd_t handle, * necessary for piecemeal encryption. */ if ((handle->ctx_enc.e->flags & GNUTLS_CIPHER_FLAG_ONLY_AEAD) || handle->ctx_enc.encrypt == NULL) { - return aead_cipher_encryptv_fallback(handle, - nonce, nonce_len, + return aead_cipher_encryptv_fallback(handle, nonce, nonce_len, auth_iov, auth_iovcnt, - tag_size, - iov, iovcnt, + tag_size, iov, iovcnt, ctext, ctext_len); } else { - return aead_cipher_encryptv(handle, - nonce, nonce_len, - auth_iov, auth_iovcnt, - tag_size, - iov, iovcnt, ctext, ctext_len); + return aead_cipher_encryptv(handle, nonce, nonce_len, auth_iov, + auth_iovcnt, tag_size, iov, iovcnt, + ctext, ctext_len); } } -static int -aead_cipher_encryptv2_fallback(gnutls_aead_cipher_hd_t handle, - const void *nonce, size_t nonce_len, - const giovec_t * auth_iov, int auth_iovcnt, - const giovec_t * iov, int iovcnt, - void *tag, size_t *tag_size) +static int aead_cipher_encryptv2_fallback(gnutls_aead_cipher_hd_t handle, + const void *nonce, size_t nonce_len, + const giovec_t *auth_iov, + int auth_iovcnt, const giovec_t *iov, + int iovcnt, void *tag, + size_t *tag_size) { struct iov_store_st auth = IOV_STORE_INIT; struct iov_store_st ptext = IOV_STORE_INIT; @@ -1631,7 +1602,7 @@ aead_cipher_encryptv2_fallback(gnutls_aead_cipher_hd_t handle, /* We must set ptext_data after the above * grow/append opereations, otherwise it will point to an invalid pointer after realloc. */ - ptext_data = (uint8_t *) ptext.data + _tag_size; + ptext_data = (uint8_t *)ptext.data + _tag_size; ptext_size = ptext.length - _tag_size; } else { ret = append_from_iov(&ptext, iov, iovcnt); @@ -1655,22 +1626,20 @@ aead_cipher_encryptv2_fallback(gnutls_aead_cipher_hd_t handle, } ctext_size = ptext.capacity; - ret = gnutls_aead_cipher_encrypt(handle, nonce, nonce_len, - auth.data, auth.length, - _tag_size, - ptext_data, ptext_size, - ptext.data, &ctext_size); + ret = gnutls_aead_cipher_encrypt(handle, nonce, nonce_len, auth.data, + auth.length, _tag_size, ptext_data, + ptext_size, ptext.data, &ctext_size); if (ret < 0) { gnutls_assert(); goto error; } if (handle->ctx_enc.e->flags & GNUTLS_CIPHER_FLAG_TAG_PREFIXED) { - ctext_data = (uint8_t *) ptext.data + _tag_size; + ctext_data = (uint8_t *)ptext.data + _tag_size; _tag = ptext.data; } else { ctext_data = ptext.data; - _tag = (uint8_t *) ptext.data + ptext_size; + _tag = (uint8_t *)ptext.data + ptext_size; } ret = copy_to_iov(ctext_data, ptext_size, iov, iovcnt); @@ -1686,7 +1655,7 @@ aead_cipher_encryptv2_fallback(gnutls_aead_cipher_hd_t handle, *tag_size = _tag_size; } - error: +error: iov_store_free(&auth); iov_store_free(&ptext); @@ -1697,12 +1666,11 @@ aead_cipher_encryptv2_fallback(gnutls_aead_cipher_hd_t handle, return ret; } -static int -aead_cipher_encryptv2(gnutls_aead_cipher_hd_t handle, - const void *nonce, size_t nonce_len, - const giovec_t * auth_iov, int auth_iovcnt, - const giovec_t * iov, int iovcnt, - void *tag, size_t *tag_size) +static int aead_cipher_encryptv2(gnutls_aead_cipher_hd_t handle, + const void *nonce, size_t nonce_len, + const giovec_t *auth_iov, int auth_iovcnt, + const giovec_t *iov, int iovcnt, void *tag, + size_t *tag_size) { api_aead_cipher_hd_st *h = handle; int ret; @@ -1802,12 +1770,11 @@ aead_cipher_encryptv2(gnutls_aead_cipher_hd_t handle, * * Since: 3.6.10 **/ -int -gnutls_aead_cipher_encryptv2(gnutls_aead_cipher_hd_t handle, - const void *nonce, size_t nonce_len, - const giovec_t * auth_iov, int auth_iovcnt, - const giovec_t * iov, int iovcnt, - void *tag, size_t *tag_size) +int gnutls_aead_cipher_encryptv2(gnutls_aead_cipher_hd_t handle, + const void *nonce, size_t nonce_len, + const giovec_t *auth_iov, int auth_iovcnt, + const giovec_t *iov, int iovcnt, void *tag, + size_t *tag_size) { /* Limitation: this function provides an optimization under the internally registered * AEAD ciphers. When an AEAD cipher is used registered with gnutls_crypto_register_aead_cipher(), @@ -1815,25 +1782,23 @@ gnutls_aead_cipher_encryptv2(gnutls_aead_cipher_hd_t handle, * necessary for piecemeal encryption. */ if ((handle->ctx_enc.e->flags & GNUTLS_CIPHER_FLAG_ONLY_AEAD) || handle->ctx_enc.encrypt == NULL) { - return aead_cipher_encryptv2_fallback(handle, - nonce, nonce_len, + return aead_cipher_encryptv2_fallback(handle, nonce, nonce_len, auth_iov, auth_iovcnt, - iov, iovcnt, - tag, tag_size); + iov, iovcnt, tag, + tag_size); } else { - return aead_cipher_encryptv2(handle, - nonce, nonce_len, - auth_iov, auth_iovcnt, - iov, iovcnt, tag, tag_size); + return aead_cipher_encryptv2(handle, nonce, nonce_len, auth_iov, + auth_iovcnt, iov, iovcnt, tag, + tag_size); } } -static int -aead_cipher_decryptv2_fallback(gnutls_aead_cipher_hd_t handle, - const void *nonce, size_t nonce_len, - const giovec_t * auth_iov, int auth_iovcnt, - const giovec_t * iov, int iovcnt, - void *tag, size_t tag_size) +static int aead_cipher_decryptv2_fallback(gnutls_aead_cipher_hd_t handle, + const void *nonce, size_t nonce_len, + const giovec_t *auth_iov, + int auth_iovcnt, const giovec_t *iov, + int iovcnt, void *tag, + size_t tag_size) { struct iov_store_st auth = IOV_STORE_INIT; struct iov_store_st ctext = IOV_STORE_INIT; @@ -1874,7 +1839,7 @@ aead_cipher_decryptv2_fallback(gnutls_aead_cipher_hd_t handle, /* We must set ctext_data after the above * grow/append opereations, otherwise it will point to an invalid pointer after realloc. */ - ctext_data = (uint8_t *) ctext.data + tag_size; + ctext_data = (uint8_t *)ctext.data + tag_size; } else { ret = append_from_iov(&ctext, iov, iovcnt); if (ret < 0) { @@ -1888,7 +1853,7 @@ aead_cipher_decryptv2_fallback(gnutls_aead_cipher_hd_t handle, gnutls_assert(); goto error; } - memcpy((uint8_t *) ctext.data + ctext.length, tag, tag_size); + memcpy((uint8_t *)ctext.data + ctext.length, tag, tag_size); ctext.length += tag_size; /* We must set ctext_data after the above @@ -1898,11 +1863,9 @@ aead_cipher_decryptv2_fallback(gnutls_aead_cipher_hd_t handle, } ptext_size = ctext.capacity; - ret = gnutls_aead_cipher_decrypt(handle, nonce, nonce_len, - auth.data, auth.length, - tag_size, - ctext.data, ctext.length, - ctext_data, &ptext_size); + ret = gnutls_aead_cipher_decrypt(handle, nonce, nonce_len, auth.data, + auth.length, tag_size, ctext.data, + ctext.length, ctext_data, &ptext_size); if (ret < 0) { gnutls_assert(); goto error; @@ -1914,7 +1877,7 @@ aead_cipher_decryptv2_fallback(gnutls_aead_cipher_hd_t handle, goto error; } - error: +error: iov_store_free(&auth); iov_store_free(&ctext); @@ -1925,12 +1888,11 @@ aead_cipher_decryptv2_fallback(gnutls_aead_cipher_hd_t handle, return ret; } -static int -aead_cipher_decryptv2(gnutls_aead_cipher_hd_t handle, - const void *nonce, size_t nonce_len, - const giovec_t * auth_iov, int auth_iovcnt, - const giovec_t * iov, int iovcnt, - void *tag, size_t tag_size) +static int aead_cipher_decryptv2(gnutls_aead_cipher_hd_t handle, + const void *nonce, size_t nonce_len, + const giovec_t *auth_iov, int auth_iovcnt, + const giovec_t *iov, int iovcnt, void *tag, + size_t tag_size) { int ret; uint8_t *p; @@ -2032,12 +1994,11 @@ aead_cipher_decryptv2(gnutls_aead_cipher_hd_t handle, * * Since: 3.6.10 **/ -int -gnutls_aead_cipher_decryptv2(gnutls_aead_cipher_hd_t handle, - const void *nonce, size_t nonce_len, - const giovec_t * auth_iov, int auth_iovcnt, - const giovec_t * iov, int iovcnt, - void *tag, size_t tag_size) +int gnutls_aead_cipher_decryptv2(gnutls_aead_cipher_hd_t handle, + const void *nonce, size_t nonce_len, + const giovec_t *auth_iov, int auth_iovcnt, + const giovec_t *iov, int iovcnt, void *tag, + size_t tag_size) { /* Limitation: this function provides an optimization under the internally registered * AEAD ciphers. When an AEAD cipher is used registered with gnutls_crypto_register_aead_cipher(), @@ -2045,16 +2006,14 @@ gnutls_aead_cipher_decryptv2(gnutls_aead_cipher_hd_t handle, * necessary for piecemeal encryption. */ if ((handle->ctx_enc.e->flags & GNUTLS_CIPHER_FLAG_ONLY_AEAD) || handle->ctx_enc.encrypt == NULL) { - return aead_cipher_decryptv2_fallback(handle, - nonce, nonce_len, + return aead_cipher_decryptv2_fallback(handle, nonce, nonce_len, auth_iov, auth_iovcnt, - iov, iovcnt, - tag, tag_size); + iov, iovcnt, tag, + tag_size); } else { - return aead_cipher_decryptv2(handle, - nonce, nonce_len, - auth_iov, auth_iovcnt, - iov, iovcnt, tag, tag_size); + return aead_cipher_decryptv2(handle, nonce, nonce_len, auth_iov, + auth_iovcnt, iov, iovcnt, tag, + tag_size); } } @@ -2076,10 +2035,8 @@ void gnutls_aead_cipher_deinit(gnutls_aead_cipher_hd_t handle) extern gnutls_crypto_kdf_st _gnutls_kdf_ops; /* Same as @gnutls_hkdf_extract but without changing FIPS context */ -int -_gnutls_hkdf_extract(gnutls_mac_algorithm_t mac, - const gnutls_datum_t * key, - const gnutls_datum_t * salt, void *output) +int _gnutls_hkdf_extract(gnutls_mac_algorithm_t mac, const gnutls_datum_t *key, + const gnutls_datum_t *salt, void *output) { /* MD5 is only allowed internally for TLS */ if (!is_mac_algo_allowed(mac)) { @@ -2109,10 +2066,8 @@ _gnutls_hkdf_extract(gnutls_mac_algorithm_t mac, * * Since: 3.6.13 */ -int -gnutls_hkdf_extract(gnutls_mac_algorithm_t mac, - const gnutls_datum_t * key, - const gnutls_datum_t * salt, void *output) +int gnutls_hkdf_extract(gnutls_mac_algorithm_t mac, const gnutls_datum_t *key, + const gnutls_datum_t *salt, void *output) { int ret; @@ -2126,10 +2081,8 @@ gnutls_hkdf_extract(gnutls_mac_algorithm_t mac, } /* Same as @gnutls_hkdf_expand but without changing FIPS context */ -int -_gnutls_hkdf_expand(gnutls_mac_algorithm_t mac, - const gnutls_datum_t * key, - const gnutls_datum_t * info, void *output, size_t length) +int _gnutls_hkdf_expand(gnutls_mac_algorithm_t mac, const gnutls_datum_t *key, + const gnutls_datum_t *info, void *output, size_t length) { /* MD5 is only allowed internally for TLS */ if (!is_mac_algo_allowed(mac)) { @@ -2141,8 +2094,8 @@ _gnutls_hkdf_expand(gnutls_mac_algorithm_t mac, * only approved in TLS, which is handled separately. */ return _gnutls_kdf_ops.hkdf_expand(mac, key->data, key->size, - info->data, info->size, - output, length); + info->data, info->size, output, + length); } /** @@ -2161,10 +2114,8 @@ _gnutls_hkdf_expand(gnutls_mac_algorithm_t mac, * * Since: 3.6.13 */ -int -gnutls_hkdf_expand(gnutls_mac_algorithm_t mac, - const gnutls_datum_t * key, - const gnutls_datum_t * info, void *output, size_t length) +int gnutls_hkdf_expand(gnutls_mac_algorithm_t mac, const gnutls_datum_t *key, + const gnutls_datum_t *info, void *output, size_t length) { int ret; @@ -2193,11 +2144,9 @@ gnutls_hkdf_expand(gnutls_mac_algorithm_t mac, * * Since: 3.6.13 */ -int -gnutls_pbkdf2(gnutls_mac_algorithm_t mac, - const gnutls_datum_t * key, - const gnutls_datum_t * salt, - unsigned iter_count, void *output, size_t length) +int gnutls_pbkdf2(gnutls_mac_algorithm_t mac, const gnutls_datum_t *key, + const gnutls_datum_t *salt, unsigned iter_count, void *output, + size_t length) { int ret; bool not_approved = false; @@ -2228,9 +2177,8 @@ gnutls_pbkdf2(gnutls_mac_algorithm_t mac, not_approved = true; } - ret = _gnutls_kdf_ops.pbkdf2(mac, key->data, key->size, - salt->data, salt->size, iter_count, - output, length); + ret = _gnutls_kdf_ops.pbkdf2(mac, key->data, key->size, salt->data, + salt->size, iter_count, output, length); if (ret < 0) { _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); } else if (not_approved) { diff --git a/lib/crypto-api.h b/lib/crypto-api.h index d796ef36cc..7e44de0281 100644 --- a/lib/crypto-api.h +++ b/lib/crypto-api.h @@ -22,14 +22,13 @@ */ #ifndef GNUTLS_LIB_CRYPTO_API_H -# define GNUTLS_LIB_CRYPTO_API_H +#define GNUTLS_LIB_CRYPTO_API_H -# include +#include -inline static -int _gnutls_aead_cipher_init(gnutls_aead_cipher_hd_t handle, - gnutls_cipher_algorithm_t cipher, - const gnutls_datum_t * key) +inline static int _gnutls_aead_cipher_init(gnutls_aead_cipher_hd_t handle, + gnutls_cipher_algorithm_t cipher, + const gnutls_datum_t *key) { const cipher_entry_st *e; @@ -40,22 +39,18 @@ int _gnutls_aead_cipher_init(gnutls_aead_cipher_hd_t handle, return _gnutls_cipher_init(&handle->ctx_enc, e, key, NULL, 1); } -inline static -void _gnutls_aead_cipher_deinit(gnutls_aead_cipher_hd_t handle) +inline static void _gnutls_aead_cipher_deinit(gnutls_aead_cipher_hd_t handle) { api_aead_cipher_hd_st *h = handle; _gnutls_cipher_deinit(&h->ctx_enc); } -int -_gnutls_hkdf_extract(gnutls_mac_algorithm_t mac, - const gnutls_datum_t * key, - const gnutls_datum_t * salt, void *output); +int _gnutls_hkdf_extract(gnutls_mac_algorithm_t mac, const gnutls_datum_t *key, + const gnutls_datum_t *salt, void *output); -int -_gnutls_hkdf_expand(gnutls_mac_algorithm_t mac, - const gnutls_datum_t * key, - const gnutls_datum_t * info, void *output, size_t length); +int _gnutls_hkdf_expand(gnutls_mac_algorithm_t mac, const gnutls_datum_t *key, + const gnutls_datum_t *info, void *output, + size_t length); -#endif /* GNUTLS_LIB_CRYPTO_API_H */ +#endif /* GNUTLS_LIB_CRYPTO_API_H */ diff --git a/lib/crypto-backend.c b/lib/crypto-backend.c index 52772f7363..f2880b89a6 100644 --- a/lib/crypto-backend.c +++ b/lib/crypto-backend.c @@ -47,8 +47,8 @@ typedef struct algo_list { #define mac_list algo_list #define digest_list algo_list -static int -_algo_register(algo_list * al, int algorithm, int priority, void *s, int free_s) +static int _algo_register(algo_list *al, int algorithm, int priority, void *s, + int free_s) { algo_list *cl; algo_list *last_cl = al; @@ -97,13 +97,13 @@ _algo_register(algo_list * al, int algorithm, int priority, void *s, int free_s) last_cl->next = cl; return 0; - cleanup: +cleanup: if (free_s) gnutls_free(s); return ret; } -static const void *_get_algo(algo_list * al, int algo) +static const void *_get_algo(algo_list *al, int algo) { cipher_list *cl; @@ -124,7 +124,7 @@ static cipher_list glob_cl = { GNUTLS_CIPHER_NULL, 0, NULL, 0, NULL }; static mac_list glob_ml = { GNUTLS_MAC_NULL, 0, NULL, 0, NULL }; static digest_list glob_dl = { GNUTLS_MAC_NULL, 0, NULL, 0, NULL }; -static void _deregister(algo_list * cl) +static void _deregister(algo_list *cl) { algo_list *next; @@ -172,18 +172,17 @@ void _gnutls_crypto_deregister(void) * * Since: 2.6.0 -*/ -int -gnutls_crypto_single_cipher_register(gnutls_cipher_algorithm_t algorithm, - int priority, - const gnutls_crypto_cipher_st * s, - int free_s) +int gnutls_crypto_single_cipher_register(gnutls_cipher_algorithm_t algorithm, + int priority, + const gnutls_crypto_cipher_st *s, + int free_s) { /* we override const in case free_s is set */ return _algo_register(&glob_cl, algorithm, priority, (void *)s, free_s); } -const gnutls_crypto_cipher_st - * _gnutls_get_crypto_cipher(gnutls_cipher_algorithm_t algo) +const gnutls_crypto_cipher_st * +_gnutls_get_crypto_cipher(gnutls_cipher_algorithm_t algo) { return _get_algo(&glob_cl, algo); } @@ -218,33 +217,29 @@ const gnutls_crypto_cipher_st * * Since: 3.4.0 **/ -int -gnutls_crypto_register_cipher(gnutls_cipher_algorithm_t algorithm, - int priority, - gnutls_cipher_init_func init, - gnutls_cipher_setkey_func setkey, - gnutls_cipher_setiv_func setiv, - gnutls_cipher_encrypt_func encrypt, - gnutls_cipher_decrypt_func decrypt, - gnutls_cipher_deinit_func deinit) +int gnutls_crypto_register_cipher(gnutls_cipher_algorithm_t algorithm, + int priority, gnutls_cipher_init_func init, + gnutls_cipher_setkey_func setkey, + gnutls_cipher_setiv_func setiv, + gnutls_cipher_encrypt_func encrypt, + gnutls_cipher_decrypt_func decrypt, + gnutls_cipher_deinit_func deinit) { - _gnutls_debug_log - ("called the deprecated gnutls_crypto_register_cipher()\n"); + _gnutls_debug_log( + "called the deprecated gnutls_crypto_register_cipher()\n"); return 0; } -int -_gnutls_crypto_register_cipher(gnutls_cipher_algorithm_t algorithm, - int priority, - gnutls_cipher_init_func init, - gnutls_cipher_setkey_func setkey, - gnutls_cipher_setiv_func setiv, - gnutls_cipher_encrypt_func encrypt, - gnutls_cipher_decrypt_func decrypt, - gnutls_cipher_deinit_func deinit) +int _gnutls_crypto_register_cipher(gnutls_cipher_algorithm_t algorithm, + int priority, gnutls_cipher_init_func init, + gnutls_cipher_setkey_func setkey, + gnutls_cipher_setiv_func setiv, + gnutls_cipher_encrypt_func encrypt, + gnutls_cipher_decrypt_func decrypt, + gnutls_cipher_deinit_func deinit) { gnutls_crypto_cipher_st *s = - gnutls_calloc(1, sizeof(gnutls_crypto_cipher_st)); + gnutls_calloc(1, sizeof(gnutls_crypto_cipher_st)); if (s == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); @@ -286,17 +281,15 @@ _gnutls_crypto_register_cipher(gnutls_cipher_algorithm_t algorithm, * * Since: 3.4.0 **/ -int -gnutls_crypto_register_aead_cipher(gnutls_cipher_algorithm_t algorithm, - int priority, - gnutls_cipher_init_func init, - gnutls_cipher_setkey_func setkey, - gnutls_cipher_aead_encrypt_func aead_encrypt, - gnutls_cipher_aead_decrypt_func aead_decrypt, - gnutls_cipher_deinit_func deinit) +int gnutls_crypto_register_aead_cipher( + gnutls_cipher_algorithm_t algorithm, int priority, + gnutls_cipher_init_func init, gnutls_cipher_setkey_func setkey, + gnutls_cipher_aead_encrypt_func aead_encrypt, + gnutls_cipher_aead_decrypt_func aead_decrypt, + gnutls_cipher_deinit_func deinit) { - _gnutls_debug_log - ("called the deprecated gnutls_crypto_register_aead_cipher()\n"); + _gnutls_debug_log( + "called the deprecated gnutls_crypto_register_aead_cipher()\n"); return 0; } @@ -320,7 +313,7 @@ gnutls_crypto_register_aead_cipher(gnutls_cipher_algorithm_t algorithm, * * Since: 2.6.0 -*/ -int gnutls_crypto_rnd_register(int priority, const gnutls_crypto_rnd_st * s) +int gnutls_crypto_rnd_register(int priority, const gnutls_crypto_rnd_st *s) { if (crypto_rnd_prio >= priority) { memcpy(&_gnutls_rnd_ops, s, sizeof(*s)); @@ -352,10 +345,9 @@ int gnutls_crypto_rnd_register(int priority, const gnutls_crypto_rnd_st * s) * * Since: 2.6.0 -*/ -int -gnutls_crypto_single_mac_register(gnutls_mac_algorithm_t algorithm, - int priority, - const gnutls_crypto_mac_st * s, int free_s) +int gnutls_crypto_single_mac_register(gnutls_mac_algorithm_t algorithm, + int priority, + const gnutls_crypto_mac_st *s, int free_s) { return _algo_register(&glob_ml, algorithm, priority, (void *)s, free_s); } @@ -386,17 +378,16 @@ const gnutls_crypto_mac_st *_gnutls_get_crypto_mac(gnutls_mac_algorithm_t algo) * * Since: 2.6.0 -*/ -int -gnutls_crypto_single_digest_register(gnutls_digest_algorithm_t algorithm, - int priority, - const gnutls_crypto_digest_st * s, - int free_s) +int gnutls_crypto_single_digest_register(gnutls_digest_algorithm_t algorithm, + int priority, + const gnutls_crypto_digest_st *s, + int free_s) { return _algo_register(&glob_dl, algorithm, priority, (void *)s, free_s); } -const gnutls_crypto_digest_st - * _gnutls_get_crypto_digest(gnutls_digest_algorithm_t algo) +const gnutls_crypto_digest_st * +_gnutls_get_crypto_digest(gnutls_digest_algorithm_t algo) { return _get_algo(&glob_dl, algo); } @@ -425,19 +416,17 @@ const gnutls_crypto_digest_st * * Since: 3.4.0 **/ -int -gnutls_crypto_register_mac(gnutls_mac_algorithm_t algorithm, - int priority, - gnutls_mac_init_func init, - gnutls_mac_setkey_func setkey, - gnutls_mac_setnonce_func setnonce, - gnutls_mac_hash_func hash, - gnutls_mac_output_func output, - gnutls_mac_deinit_func deinit, - gnutls_mac_fast_func hash_fast) +int gnutls_crypto_register_mac(gnutls_mac_algorithm_t algorithm, int priority, + gnutls_mac_init_func init, + gnutls_mac_setkey_func setkey, + gnutls_mac_setnonce_func setnonce, + gnutls_mac_hash_func hash, + gnutls_mac_output_func output, + gnutls_mac_deinit_func deinit, + gnutls_mac_fast_func hash_fast) { - _gnutls_debug_log - ("called the deprecated gnutls_crypto_register_mac()\n"); + _gnutls_debug_log( + "called the deprecated gnutls_crypto_register_mac()\n"); return 0; } @@ -463,16 +452,14 @@ gnutls_crypto_register_mac(gnutls_mac_algorithm_t algorithm, * * Since: 3.4.0 **/ -int -gnutls_crypto_register_digest(gnutls_digest_algorithm_t algorithm, - int priority, - gnutls_digest_init_func init, - gnutls_digest_hash_func hash, - gnutls_digest_output_func output, - gnutls_digest_deinit_func deinit, - gnutls_digest_fast_func hash_fast) +int gnutls_crypto_register_digest(gnutls_digest_algorithm_t algorithm, + int priority, gnutls_digest_init_func init, + gnutls_digest_hash_func hash, + gnutls_digest_output_func output, + gnutls_digest_deinit_func deinit, + gnutls_digest_fast_func hash_fast) { - _gnutls_debug_log - ("called the deprecated gnutls_crypto_register_digest()\n"); + _gnutls_debug_log( + "called the deprecated gnutls_crypto_register_digest()\n"); return 0; } diff --git a/lib/crypto-backend.h b/lib/crypto-backend.h index 03c5ca5433..8f11ce9036 100644 --- a/lib/crypto-backend.h +++ b/lib/crypto-backend.h @@ -21,13 +21,13 @@ */ #ifndef GNUTLS_LIB_CRYPTO_BACKEND_H -# define GNUTLS_LIB_CRYPTO_BACKEND_H +#define GNUTLS_LIB_CRYPTO_BACKEND_H -# include +#include -# define gnutls_crypto_single_cipher_st gnutls_crypto_cipher_st -# define gnutls_crypto_single_mac_st gnutls_crypto_mac_st -# define gnutls_crypto_single_digest_st gnutls_crypto_digest_st +#define gnutls_crypto_single_cipher_st gnutls_crypto_cipher_st +#define gnutls_crypto_single_mac_st gnutls_crypto_mac_st +#define gnutls_crypto_single_digest_st gnutls_crypto_digest_st typedef struct { gnutls_cipher_init_func init; @@ -44,7 +44,7 @@ typedef struct { /* Not needed for registered on run-time. Only included * should define it. */ - int (*exists)(gnutls_cipher_algorithm_t); /* true/false */ + int (*exists)(gnutls_cipher_algorithm_t); /* true/false */ } gnutls_crypto_cipher_st; typedef struct { @@ -76,25 +76,23 @@ typedef struct { } gnutls_crypto_digest_st; typedef struct { - int (*hkdf_extract)(gnutls_mac_algorithm_t, - const void *key, size_t keysize, - const void *salt, size_t saltsize, void *output); - int (*hkdf_expand)(gnutls_mac_algorithm_t, - const void *key, size_t keysize, - const void *info, size_t infosize, + int (*hkdf_extract)(gnutls_mac_algorithm_t, const void *key, + size_t keysize, const void *salt, size_t saltsize, + void *output); + int (*hkdf_expand)(gnutls_mac_algorithm_t, const void *key, + size_t keysize, const void *info, size_t infosize, void *output, size_t length); - int (*pbkdf2)(gnutls_mac_algorithm_t, - const void *key, size_t keysize, - const void *salt, size_t saltsize, - unsigned iter_count, void *output, size_t length); + int (*pbkdf2)(gnutls_mac_algorithm_t, const void *key, size_t keysize, + const void *salt, size_t saltsize, unsigned iter_count, + void *output, size_t length); } gnutls_crypto_kdf_st; typedef struct gnutls_crypto_rnd { - int (*init)(void **ctx); /* called prior to first usage of randomness */ + int (*init)(void **ctx); /* called prior to first usage of randomness */ int (*rnd)(void *ctx, int level, void *data, size_t datasize); void (*rnd_refresh)(void *ctx); void (*deinit)(void *ctx); - int (*self_test)(void); /* this should not require rng initialization */ + int (*self_test)(void); /* this should not require rng initialization */ } gnutls_crypto_rnd_st; typedef void *bigint_t; @@ -121,7 +119,7 @@ typedef struct gnutls_crypto_bigint { int (*bigint_init)(bigint_t *); int (*bigint_init_multi)(bigint_t *, ...); void (*bigint_release)(bigint_t n); - void (*bigint_clear)(bigint_t n); /* zeros the int */ + void (*bigint_clear)(bigint_t n); /* zeros the int */ /* 0 for equality, > 0 for m1>m2, < 0 for m1 ret == a */ int (*bigint_set)(bigint_t a, const bigint_t b); - bigint_t(*bigint_copy) (const bigint_t a); + bigint_t (*bigint_copy)(const bigint_t a); /* a = b -> ret == a */ int (*bigint_set_ui)(bigint_t a, unsigned long b); unsigned int (*bigint_get_nbits)(const bigint_t a); /* w = b ^ e mod m */ - int (*bigint_powm)(bigint_t w, const bigint_t b, - const bigint_t e, const bigint_t m); + int (*bigint_powm)(bigint_t w, const bigint_t b, const bigint_t e, + const bigint_t m); /* w = a + b mod m */ - int (*bigint_addm)(bigint_t w, const bigint_t a, - const bigint_t b, const bigint_t m); + int (*bigint_addm)(bigint_t w, const bigint_t a, const bigint_t b, + const bigint_t m); /* w = a - b mod m */ - int (*bigint_subm)(bigint_t w, const bigint_t a, - const bigint_t b, const bigint_t m); + int (*bigint_subm)(bigint_t w, const bigint_t a, const bigint_t b, + const bigint_t m); /* w = a * b mod m */ - int (*bigint_mulm)(bigint_t w, const bigint_t a, - const bigint_t b, const bigint_t m); - /* w = a + b */ int (*bigint_add)(bigint_t w, - const bigint_t a, const bigint_t b); - /* w = a - b */ int (*bigint_sub)(bigint_t w, - const bigint_t a, const bigint_t b); + int (*bigint_mulm)(bigint_t w, const bigint_t a, const bigint_t b, + const bigint_t m); + /* w = a + b */ int (*bigint_add)(bigint_t w, const bigint_t a, + const bigint_t b); + /* w = a - b */ int (*bigint_sub)(bigint_t w, const bigint_t a, + const bigint_t b); /* w = a * b */ int (*bigint_mul)(bigint_t w, const bigint_t a, const bigint_t b); /* w = a + b */ @@ -170,8 +168,8 @@ typedef struct gnutls_crypto_bigint { */ int (*bigint_scan)(bigint_t m, const void *buf, size_t buf_size, gnutls_bigint_format_t format); - int (*bigint_print)(const bigint_t a, void *buf, - size_t *buf_size, gnutls_bigint_format_t format); + int (*bigint_print)(const bigint_t a, void *buf, size_t *buf_size, + gnutls_bigint_format_t format); } gnutls_crypto_bigint_st; /* Additional information about the public key, filled from @@ -202,17 +200,18 @@ typedef struct gnutls_x509_spki_st { unsigned int flags; } gnutls_x509_spki_st; -# define GNUTLS_MAX_PK_PARAMS 16 +#define GNUTLS_MAX_PK_PARAMS 16 typedef struct { bigint_t params[GNUTLS_MAX_PK_PARAMS]; - unsigned int params_nr; /* the number of parameters */ - unsigned int pkflags; /* gnutls_pk_flag_t */ - unsigned int qbits; /* GNUTLS_PK_DH */ - gnutls_ecc_curve_t curve; /* GNUTLS_PK_EC, GNUTLS_PK_ED25519, GNUTLS_PK_GOST* */ - gnutls_group_t dh_group; /* GNUTLS_PK_DH - used by ext/key_share */ - gnutls_gost_paramset_t gost_params; /* GNUTLS_PK_GOST_* */ - gnutls_datum_t raw_pub; /* used by x25519 */ + unsigned int params_nr; /* the number of parameters */ + unsigned int pkflags; /* gnutls_pk_flag_t */ + unsigned int qbits; /* GNUTLS_PK_DH */ + gnutls_ecc_curve_t + curve; /* GNUTLS_PK_EC, GNUTLS_PK_ED25519, GNUTLS_PK_GOST* */ + gnutls_group_t dh_group; /* GNUTLS_PK_DH - used by ext/key_share */ + gnutls_gost_paramset_t gost_params; /* GNUTLS_PK_GOST_* */ + gnutls_datum_t raw_pub; /* used by x25519 */ gnutls_datum_t raw_priv; unsigned int seed_size; @@ -237,52 +236,54 @@ typedef enum { GNUTLS_PK_FLAG_RSA_PSS_FIXED_SALT_LENGTH = 4 } gnutls_pk_flag_t; -# define FIX_SIGN_PARAMS(params, flags, dig) do { \ - if ((flags) & GNUTLS_PRIVKEY_FLAG_REPRODUCIBLE) { \ - (params).flags |= GNUTLS_PK_FLAG_REPRODUCIBLE; \ - } \ - if ((params).pk == GNUTLS_PK_DSA || (params).pk == GNUTLS_PK_ECDSA) { \ - (params).dsa_dig = (dig); \ - } \ -} while (0) +#define FIX_SIGN_PARAMS(params, flags, dig) \ + do { \ + if ((flags)&GNUTLS_PRIVKEY_FLAG_REPRODUCIBLE) { \ + (params).flags |= GNUTLS_PK_FLAG_REPRODUCIBLE; \ + } \ + if ((params).pk == GNUTLS_PK_DSA || \ + (params).pk == GNUTLS_PK_ECDSA) { \ + (params).dsa_dig = (dig); \ + } \ + } while (0) -void gnutls_pk_params_release(gnutls_pk_params_st * p); -void gnutls_pk_params_clear(gnutls_pk_params_st * p); -void gnutls_pk_params_init(gnutls_pk_params_st * p); +void gnutls_pk_params_release(gnutls_pk_params_st *p); +void gnutls_pk_params_clear(gnutls_pk_params_st *p); +void gnutls_pk_params_init(gnutls_pk_params_st *p); -# define MAX_PUBLIC_PARAMS_SIZE 4 /* ok for RSA and DSA */ +#define MAX_PUBLIC_PARAMS_SIZE 4 /* ok for RSA and DSA */ /* parameters should not be larger than this limit */ -# define DSA_PUBLIC_PARAMS 4 -# define DH_PUBLIC_PARAMS 4 -# define RSA_PUBLIC_PARAMS 2 -# define ECC_PUBLIC_PARAMS 2 -# define GOST_PUBLIC_PARAMS 2 +#define DSA_PUBLIC_PARAMS 4 +#define DH_PUBLIC_PARAMS 4 +#define RSA_PUBLIC_PARAMS 2 +#define ECC_PUBLIC_PARAMS 2 +#define GOST_PUBLIC_PARAMS 2 -# define MAX_PRIV_PARAMS_SIZE GNUTLS_MAX_PK_PARAMS /* ok for RSA and DSA */ +#define MAX_PRIV_PARAMS_SIZE GNUTLS_MAX_PK_PARAMS /* ok for RSA and DSA */ /* parameters should not be larger than this limit */ -# define DSA_PRIVATE_PARAMS 5 -# define DH_PRIVATE_PARAMS 5 -# define RSA_PRIVATE_PARAMS 8 -# define ECC_PRIVATE_PARAMS 3 -# define GOST_PRIVATE_PARAMS 3 +#define DSA_PRIVATE_PARAMS 5 +#define DH_PRIVATE_PARAMS 5 +#define RSA_PRIVATE_PARAMS 8 +#define ECC_PRIVATE_PARAMS 3 +#define GOST_PRIVATE_PARAMS 3 -# if MAX_PRIV_PARAMS_SIZE - RSA_PRIVATE_PARAMS < 0 -# error INCREASE MAX_PRIV_PARAMS -# endif +#if MAX_PRIV_PARAMS_SIZE - RSA_PRIVATE_PARAMS < 0 +#error INCREASE MAX_PRIV_PARAMS +#endif -# if MAX_PRIV_PARAMS_SIZE - ECC_PRIVATE_PARAMS < 0 -# error INCREASE MAX_PRIV_PARAMS -# endif +#if MAX_PRIV_PARAMS_SIZE - ECC_PRIVATE_PARAMS < 0 +#error INCREASE MAX_PRIV_PARAMS +#endif -# if MAX_PRIV_PARAMS_SIZE - GOST_PRIVATE_PARAMS < 0 -# error INCREASE MAX_PRIV_PARAMS -# endif +#if MAX_PRIV_PARAMS_SIZE - GOST_PRIVATE_PARAMS < 0 +#error INCREASE MAX_PRIV_PARAMS +#endif -# if MAX_PRIV_PARAMS_SIZE - DSA_PRIVATE_PARAMS < 0 -# error INCREASE MAX_PRIV_PARAMS -# endif +#if MAX_PRIV_PARAMS_SIZE - DSA_PRIVATE_PARAMS < 0 +#error INCREASE MAX_PRIV_PARAMS +#endif /* params are: * RSA: @@ -319,34 +320,34 @@ void gnutls_pk_params_init(gnutls_pk_params_st * p); * [8] is k (private key) */ -# define ECC_X 0 -# define ECC_Y 1 -# define ECC_K 2 - -# define GOST_X 0 -# define GOST_Y 1 -# define GOST_K 2 - -# define DSA_P 0 -# define DSA_Q 1 -# define DSA_G 2 -# define DSA_Y 3 -# define DSA_X 4 - -# define DH_P 0 -# define DH_Q 1 -# define DH_G 2 -# define DH_Y 3 -# define DH_X 4 - -# define RSA_MODULUS 0 -# define RSA_PUB 1 -# define RSA_PRIV 2 -# define RSA_PRIME1 3 -# define RSA_PRIME2 4 -# define RSA_COEF 5 -# define RSA_E1 6 -# define RSA_E2 7 +#define ECC_X 0 +#define ECC_Y 1 +#define ECC_K 2 + +#define GOST_X 0 +#define GOST_Y 1 +#define GOST_K 2 + +#define DSA_P 0 +#define DSA_Q 1 +#define DSA_G 2 +#define DSA_Y 3 +#define DSA_X 4 + +#define DH_P 0 +#define DH_Q 1 +#define DH_G 2 +#define DH_Y 3 +#define DH_X 4 + +#define RSA_MODULUS 0 +#define RSA_PUB 1 +#define RSA_PRIV 2 +#define RSA_PRIME1 3 +#define RSA_PRIME2 4 +#define RSA_COEF 5 +#define RSA_E1 6 +#define RSA_E2 7 /** * gnutls_direction_t: @@ -364,30 +365,26 @@ typedef enum { typedef struct gnutls_crypto_pk { /* The params structure should contain the private or public key * parameters, depending on the operation */ - int (*encrypt)(gnutls_pk_algorithm_t, gnutls_datum_t * ciphertext, - const gnutls_datum_t * plaintext, - const gnutls_pk_params_st * pub); - int (*decrypt)(gnutls_pk_algorithm_t, - gnutls_datum_t * plaintext, - const gnutls_datum_t * ciphertext, - const gnutls_pk_params_st * priv); - int (*decrypt2)(gnutls_pk_algorithm_t, - const gnutls_datum_t * ciphertext, - unsigned char *plaintext, - size_t paintext_size, const gnutls_pk_params_st * priv); - int (*sign)(gnutls_pk_algorithm_t, gnutls_datum_t * signature, - const gnutls_datum_t * data, - const gnutls_pk_params_st * priv, - const gnutls_x509_spki_st * sign); - int (*verify)(gnutls_pk_algorithm_t, const gnutls_datum_t * data, - const gnutls_datum_t * sig, - const gnutls_pk_params_st * pub, - const gnutls_x509_spki_st * sign); + int (*encrypt)(gnutls_pk_algorithm_t, gnutls_datum_t *ciphertext, + const gnutls_datum_t *plaintext, + const gnutls_pk_params_st *pub); + int (*decrypt)(gnutls_pk_algorithm_t, gnutls_datum_t *plaintext, + const gnutls_datum_t *ciphertext, + const gnutls_pk_params_st *priv); + int (*decrypt2)(gnutls_pk_algorithm_t, const gnutls_datum_t *ciphertext, + unsigned char *plaintext, size_t paintext_size, + const gnutls_pk_params_st *priv); + int (*sign)(gnutls_pk_algorithm_t, gnutls_datum_t *signature, + const gnutls_datum_t *data, const gnutls_pk_params_st *priv, + const gnutls_x509_spki_st *sign); + int (*verify)(gnutls_pk_algorithm_t, const gnutls_datum_t *data, + const gnutls_datum_t *sig, const gnutls_pk_params_st *pub, + const gnutls_x509_spki_st *sign); /* sanity checks the public key parameters */ int (*verify_priv_params)(gnutls_pk_algorithm_t, - const gnutls_pk_params_st * priv); + const gnutls_pk_params_st *priv); int (*verify_pub_params)(gnutls_pk_algorithm_t, - const gnutls_pk_params_st * pub); + const gnutls_pk_params_st *pub); int (*generate_keys)(gnutls_pk_algorithm_t, unsigned int nbits, gnutls_pk_params_st *, unsigned ephemeral); int (*generate_params)(gnutls_pk_algorithm_t, unsigned int nbits, @@ -398,67 +395,58 @@ typedef struct gnutls_crypto_pk { int (*pk_fixup_private_params)(gnutls_pk_algorithm_t, gnutls_direction_t, gnutls_pk_params_st *); -# define PK_DERIVE_TLS13 1 - int (*derive)(gnutls_pk_algorithm_t, gnutls_datum_t * out, - const gnutls_pk_params_st * priv, - const gnutls_pk_params_st * pub, - const gnutls_datum_t * nonce, unsigned int flags); - - int (*curve_exists)(gnutls_ecc_curve_t); /* true/false */ - int (*pk_exists)(gnutls_pk_algorithm_t); /* true/false */ - int (*sign_exists)(gnutls_sign_algorithm_t); /* true/false */ +#define PK_DERIVE_TLS13 1 + int (*derive)(gnutls_pk_algorithm_t, gnutls_datum_t *out, + const gnutls_pk_params_st *priv, + const gnutls_pk_params_st *pub, + const gnutls_datum_t *nonce, unsigned int flags); + + int (*curve_exists)(gnutls_ecc_curve_t); /* true/false */ + int (*pk_exists)(gnutls_pk_algorithm_t); /* true/false */ + int (*sign_exists)(gnutls_sign_algorithm_t); /* true/false */ } gnutls_crypto_pk_st; /* priority: infinity for backend algorithms, 90 for kernel algorithms, lowest wins */ -int gnutls_crypto_single_cipher_register(gnutls_cipher_algorithm_t - algorithm, int priority, - const gnutls_crypto_single_cipher_st * - s, int free_s); +int gnutls_crypto_single_cipher_register( + gnutls_cipher_algorithm_t algorithm, int priority, + const gnutls_crypto_single_cipher_st *s, int free_s); int gnutls_crypto_single_mac_register(gnutls_mac_algorithm_t algorithm, int priority, - const gnutls_crypto_single_mac_st * s, + const gnutls_crypto_single_mac_st *s, int free_s); -int gnutls_crypto_single_digest_register(gnutls_digest_algorithm_t algorithm, - int priority, - const gnutls_crypto_single_digest_st * - s, int free_s); +int gnutls_crypto_single_digest_register( + gnutls_digest_algorithm_t algorithm, int priority, + const gnutls_crypto_single_digest_st *s, int free_s); -int gnutls_crypto_rnd_register(int priority, const gnutls_crypto_rnd_st * s); -int gnutls_crypto_pk_register(int priority, const gnutls_crypto_pk_st * s); +int gnutls_crypto_rnd_register(int priority, const gnutls_crypto_rnd_st *s); +int gnutls_crypto_pk_register(int priority, const gnutls_crypto_pk_st *s); int gnutls_crypto_bigint_register(int priority, - const gnutls_crypto_bigint_st * s); + const gnutls_crypto_bigint_st *s); /* Provided by crypto-backend */ -int -_gnutls_prf_raw(gnutls_mac_algorithm_t mac, - size_t master_size, const void *master, - size_t label_size, const char *label, - size_t seed_size, const uint8_t * seed, size_t outsize, - char *out); +int _gnutls_prf_raw(gnutls_mac_algorithm_t mac, size_t master_size, + const void *master, size_t label_size, const char *label, + size_t seed_size, const uint8_t *seed, size_t outsize, + char *out); int _gnutls_gost_key_wrap(gnutls_gost_paramset_t gost_params, - const gnutls_datum_t * kek, - const gnutls_datum_t * ukm, - const gnutls_datum_t * cek, - gnutls_datum_t * enc, gnutls_datum_t * imit); + const gnutls_datum_t *kek, const gnutls_datum_t *ukm, + const gnutls_datum_t *cek, gnutls_datum_t *enc, + gnutls_datum_t *imit); int _gnutls_gost_key_unwrap(gnutls_gost_paramset_t gost_params, - const gnutls_datum_t * kek, - const gnutls_datum_t * ukm, - const gnutls_datum_t * enc, - const gnutls_datum_t * imit, gnutls_datum_t * cek); - -int -_gnutls_rsa_pkcs1_sign_pad(size_t key_bits, - const gnutls_datum_t * data, - unsigned char *buffer, size_t buffer_size); - -int -_gnutls_rsa_pss_sign_pad(gnutls_x509_spki_st * params, - size_t key_bits, - const gnutls_datum_t * data, - unsigned char *buffer, size_t buffer_size); - -#endif /* GNUTLS_LIB_CRYPTO_BACKEND_H */ + const gnutls_datum_t *kek, + const gnutls_datum_t *ukm, + const gnutls_datum_t *enc, + const gnutls_datum_t *imit, gnutls_datum_t *cek); + +int _gnutls_rsa_pkcs1_sign_pad(size_t key_bits, const gnutls_datum_t *data, + unsigned char *buffer, size_t buffer_size); + +int _gnutls_rsa_pss_sign_pad(gnutls_x509_spki_st *params, size_t key_bits, + const gnutls_datum_t *data, unsigned char *buffer, + size_t buffer_size); + +#endif /* GNUTLS_LIB_CRYPTO_BACKEND_H */ diff --git a/lib/crypto-selftests-pk.c b/lib/crypto-selftests-pk.c index 9062199d40..be0cbd7ad4 100644 --- a/lib/crypto-selftests-pk.c +++ b/lib/crypto-selftests-pk.c @@ -33,199 +33,203 @@ #include #define DATASTR "Hello there!" -static const gnutls_datum_t signed_data = { - .data = (void *)DATASTR, - .size = sizeof(DATASTR) - 1 -}; +static const gnutls_datum_t signed_data = { .data = (void *)DATASTR, + .size = sizeof(DATASTR) - 1 }; -static const gnutls_datum_t bad_data = { - .data = (void *)DATASTR, - .size = sizeof(DATASTR) - 2 -}; +static const gnutls_datum_t bad_data = { .data = (void *)DATASTR, + .size = sizeof(DATASTR) - 2 }; /* RSA 2048 private key and signature */ static const char rsa_2048_privkey[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIEogIBAAKCAQEA6yCv+BLrRP/dMPBXJWK21c0aqxIX6JkODL4K+zlyEURt8/Wp\n" - "nw37CJwHD3VrimSnk2SJvBfTNhzYhCsLShDOPvi4qBrLZ1WozjoVJ8tRE4VCcjQJ\n" - "snpJ7ldiV+Eos1Z3FkbV/uQcw5CYCb/TciSukaWlI+G/xas9EOOFt4aELbc1yDe0\n" - "hyfPDtoaKfek4GhT9qT1I8pTC40P9OrA9Jt8lblqxHWwqmdunLTjPjB5zJT6QgI+\n" - "j1xuq7ZOQhveNA/AOyzh574GIpgsuvPPLBQwsCQkscr7cFnCsyOPgYJrQW3De2+l\n" - "wjp2D7gZeeQcFQKazXcFoiqNpJWoBWmU0qqsgwIDAQABAoIBAAghNzRioxPdrO42\n" - "QS0fvqah0tw7Yew+7oduQr7w+4qxTQP0aIsBVr6zdmMIclF0rX6hKUoBoOHsGWho\n" - "fJlw/1CaFPhrBMFr6sxGodigZQtBvkxolDVBmTDOgK39MQUSZke0501K4du5MiiU\n" - "I2F89zQ9//m/onvZMeFVnJf95LAX5qHr/FLARQFtOpgWzcGVxdvJdJlYb1zMUril\n" - "PqyAZXo1j0vgHWwSd54k8mBLus7l8KT57VFce8+9nBPrOrqW4rDVXzs/go3S+kiI\n" - "OyzYeUs9czg1N1e3VhEaC+EdYUawc0ASuEkbsJ53L8pwDvS+2ly2ykYziJp95Fjv\n" - "bzyd1dECgYEA8FzGCxu7A6/ei9Dn0Fmi8Ns/QvEgbdlGw4v4MlXHjrGJYdOB0BwG\n" - "2D2k0ODNYKlUX2J4hi5x8aCH33y/v0EcOHyuqM33vOWBVbdcumCqcOmp341UebAO\n" - "uCPgDJNhjxXaeDVPnizqnOBA1B9sTxwmCOmFIiFRLbR+XluvDh3t8L0CgYEA+my6\n" - "124Rw7kcFx+9JoB/Z+bUJDYpefUT91gBUhhEdEMx5fujhMzAbLpIRjFQq+75Qb7v\n" - "0NyIS09B4oKOqQYzVEJwqKY7H71BTl7QuzJ8Qtuh/DMZsVIt6xpvdeuAKpEOqz44\n" - "ZD3fW1B59A3ja7kqZadCqq2b02UTk+gdeOrYBj8CgYACX3gZDfoHrEnPKY3QUcI5\n" - "DIEQYR8H1phLP+uAW7ZvozMPAy6J5mzu35Tr9vwwExvhITC9amH3l7UfsLSX58Wm\n" - "jRyQUBA9Dir7tKa2tFOab8Qcj+GgnetXSAtjNGVHK1kPzL7vedQLHm+laHYCRe3e\n" - "Mqf80UVi5SBGQDN3OTZrJQKBgEkj2oozDqMwfGDQl0kYfJ2XEFynKQQCrVsva+tT\n" - "RSMDwR4fmcmel5Dp81P08U/WExy9rIM+9duxAVgrs4jwU6uHYCoRqvEBMIK4NJSI\n" - "ETzhsvTa4+UjUF/7L5SsPJmyFiuzl3rHi2W7InNCXyrGQPjBmjoJTJq4SbiIMZtw\n" - "U7m3AoGACG2rE/Ud71kyOJcKwxzEt8kd+2CMuaZeE/xk+3zLSSjXJzKPficogM3I\n" - "K37/N7N0FjhdQ5hRuD3GH1fcjv9AKdGHsH7RuaG+jHTRUjS1glr17SSQzh6xXnWj\n" - "jG0M4UZm5P9STL09nZuWH0wfpr/eg+9+A6yOVfnADI13v+Ygk7k=\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIIEogIBAAKCAQEA6yCv+BLrRP/dMPBXJWK21c0aqxIX6JkODL4K+zlyEURt8/Wp\n" + "nw37CJwHD3VrimSnk2SJvBfTNhzYhCsLShDOPvi4qBrLZ1WozjoVJ8tRE4VCcjQJ\n" + "snpJ7ldiV+Eos1Z3FkbV/uQcw5CYCb/TciSukaWlI+G/xas9EOOFt4aELbc1yDe0\n" + "hyfPDtoaKfek4GhT9qT1I8pTC40P9OrA9Jt8lblqxHWwqmdunLTjPjB5zJT6QgI+\n" + "j1xuq7ZOQhveNA/AOyzh574GIpgsuvPPLBQwsCQkscr7cFnCsyOPgYJrQW3De2+l\n" + "wjp2D7gZeeQcFQKazXcFoiqNpJWoBWmU0qqsgwIDAQABAoIBAAghNzRioxPdrO42\n" + "QS0fvqah0tw7Yew+7oduQr7w+4qxTQP0aIsBVr6zdmMIclF0rX6hKUoBoOHsGWho\n" + "fJlw/1CaFPhrBMFr6sxGodigZQtBvkxolDVBmTDOgK39MQUSZke0501K4du5MiiU\n" + "I2F89zQ9//m/onvZMeFVnJf95LAX5qHr/FLARQFtOpgWzcGVxdvJdJlYb1zMUril\n" + "PqyAZXo1j0vgHWwSd54k8mBLus7l8KT57VFce8+9nBPrOrqW4rDVXzs/go3S+kiI\n" + "OyzYeUs9czg1N1e3VhEaC+EdYUawc0ASuEkbsJ53L8pwDvS+2ly2ykYziJp95Fjv\n" + "bzyd1dECgYEA8FzGCxu7A6/ei9Dn0Fmi8Ns/QvEgbdlGw4v4MlXHjrGJYdOB0BwG\n" + "2D2k0ODNYKlUX2J4hi5x8aCH33y/v0EcOHyuqM33vOWBVbdcumCqcOmp341UebAO\n" + "uCPgDJNhjxXaeDVPnizqnOBA1B9sTxwmCOmFIiFRLbR+XluvDh3t8L0CgYEA+my6\n" + "124Rw7kcFx+9JoB/Z+bUJDYpefUT91gBUhhEdEMx5fujhMzAbLpIRjFQq+75Qb7v\n" + "0NyIS09B4oKOqQYzVEJwqKY7H71BTl7QuzJ8Qtuh/DMZsVIt6xpvdeuAKpEOqz44\n" + "ZD3fW1B59A3ja7kqZadCqq2b02UTk+gdeOrYBj8CgYACX3gZDfoHrEnPKY3QUcI5\n" + "DIEQYR8H1phLP+uAW7ZvozMPAy6J5mzu35Tr9vwwExvhITC9amH3l7UfsLSX58Wm\n" + "jRyQUBA9Dir7tKa2tFOab8Qcj+GgnetXSAtjNGVHK1kPzL7vedQLHm+laHYCRe3e\n" + "Mqf80UVi5SBGQDN3OTZrJQKBgEkj2oozDqMwfGDQl0kYfJ2XEFynKQQCrVsva+tT\n" + "RSMDwR4fmcmel5Dp81P08U/WExy9rIM+9duxAVgrs4jwU6uHYCoRqvEBMIK4NJSI\n" + "ETzhsvTa4+UjUF/7L5SsPJmyFiuzl3rHi2W7InNCXyrGQPjBmjoJTJq4SbiIMZtw\n" + "U7m3AoGACG2rE/Ud71kyOJcKwxzEt8kd+2CMuaZeE/xk+3zLSSjXJzKPficogM3I\n" + "K37/N7N0FjhdQ5hRuD3GH1fcjv9AKdGHsH7RuaG+jHTRUjS1glr17SSQzh6xXnWj\n" + "jG0M4UZm5P9STL09nZuWH0wfpr/eg+9+A6yOVfnADI13v+Ygk7k=\n" + "-----END RSA PRIVATE KEY-----\n"; static const char rsa_2048_sig[] = - "\x7a\xb3\xf8\xb0\xf9\xf0\x52\x88\x37\x17\x97\x9f\xbe\x61\xb4\xd2" - "\x43\x78\x9f\x79\x92\xd0\xad\x08\xdb\xbd\x3c\x72\x7a\xb5\x51\x59" - "\x63\xd6\x7d\xf1\x9c\x1e\x10\x7b\x27\xab\xf8\xd4\x9d\xcd\xc5\xf9" - "\xae\xf7\x09\x6b\x40\x93\xc5\xe9\x1c\x0f\xb4\x82\xa1\x47\x86\x54" - "\x63\xd2\x4d\x40\x9a\x80\xb9\x38\x45\x69\xa2\xd6\x92\xb6\x69\x7f" - "\x3f\xf3\x5b\xa5\x1d\xac\x06\xad\xdf\x4e\xbb\xe6\xda\x68\x0d\xe5" - "\xab\xef\xd2\xf0\xc5\xd8\xc0\xed\x80\xe2\xd4\x76\x98\xec\x44\xa2" - "\xfc\x3f\xce\x2e\x8b\xc4\x4b\xab\xb0\x70\x24\x52\x85\x2a\x36\xcd" - "\x9a\xb5\x05\x00\xea\x98\x7c\x72\x06\x68\xb1\x38\x44\x16\x80\x6a" - "\x3b\x64\x72\xbb\xfd\x4b\xc9\xdd\xda\x2a\x68\xde\x7f\x6e\x48\x28" - "\xc1\x63\x57\x2b\xde\x83\xa3\x27\x34\xd7\xa6\x87\x18\x35\x10\xff" - "\x31\xd9\x47\xc9\x84\x35\xe1\xaa\xe2\xf7\x98\xfa\x19\xd3\xf1\x94" - "\x25\x2a\x96\xe4\xa8\xa7\x05\x10\x93\x87\xde\x96\x85\xe5\x68\xb8" - "\xe5\x4e\xbf\x66\x85\x91\xbd\x52\x5b\x3d\x9f\x1b\x79\xea\xe3\x8b" - "\xef\x62\x18\x39\x7a\x50\x01\x46\x1b\xde\x8d\x37\xbc\x90\x6c\x07" - "\xc0\x07\xed\x60\xce\x2e\x31\xd6\x8f\xe8\x75\xdb\x45\x21\xc6\xcb"; + "\x7a\xb3\xf8\xb0\xf9\xf0\x52\x88\x37\x17\x97\x9f\xbe\x61\xb4\xd2" + "\x43\x78\x9f\x79\x92\xd0\xad\x08\xdb\xbd\x3c\x72\x7a\xb5\x51\x59" + "\x63\xd6\x7d\xf1\x9c\x1e\x10\x7b\x27\xab\xf8\xd4\x9d\xcd\xc5\xf9" + "\xae\xf7\x09\x6b\x40\x93\xc5\xe9\x1c\x0f\xb4\x82\xa1\x47\x86\x54" + "\x63\xd2\x4d\x40\x9a\x80\xb9\x38\x45\x69\xa2\xd6\x92\xb6\x69\x7f" + "\x3f\xf3\x5b\xa5\x1d\xac\x06\xad\xdf\x4e\xbb\xe6\xda\x68\x0d\xe5" + "\xab\xef\xd2\xf0\xc5\xd8\xc0\xed\x80\xe2\xd4\x76\x98\xec\x44\xa2" + "\xfc\x3f\xce\x2e\x8b\xc4\x4b\xab\xb0\x70\x24\x52\x85\x2a\x36\xcd" + "\x9a\xb5\x05\x00\xea\x98\x7c\x72\x06\x68\xb1\x38\x44\x16\x80\x6a" + "\x3b\x64\x72\xbb\xfd\x4b\xc9\xdd\xda\x2a\x68\xde\x7f\x6e\x48\x28" + "\xc1\x63\x57\x2b\xde\x83\xa3\x27\x34\xd7\xa6\x87\x18\x35\x10\xff" + "\x31\xd9\x47\xc9\x84\x35\xe1\xaa\xe2\xf7\x98\xfa\x19\xd3\xf1\x94" + "\x25\x2a\x96\xe4\xa8\xa7\x05\x10\x93\x87\xde\x96\x85\xe5\x68\xb8" + "\xe5\x4e\xbf\x66\x85\x91\xbd\x52\x5b\x3d\x9f\x1b\x79\xea\xe3\x8b" + "\xef\x62\x18\x39\x7a\x50\x01\x46\x1b\xde\x8d\x37\xbc\x90\x6c\x07" + "\xc0\x07\xed\x60\xce\x2e\x31\xd6\x8f\xe8\x75\xdb\x45\x21\xc6\xcb"; /* DSA 2048 private key and signature */ static const char dsa_2048_privkey[] = - "-----BEGIN DSA PRIVATE KEY-----\n" - "MIIDTQIBAAKCAQEAh60B6yPMRIT7udq2kKuwnQDohvT1U0w+RJcSr23C05cM/Ovn\n" - "UP/8Rrj6T8K+uYhMbKgLaZiJJW9q04jaPQk0cfUphbLvRjzVHwE/0Bkb+Y1Rv7ni\n" - "Jot2IFMq5iuNraf889PC0WREvFCcIkSFY2Ac4WT7mCcBtfx/raGFXDUjcUrJ0HwZ\n" - "IOhjQDfcXUsztuyYsYA75ociEY8kyDZq/ixyr5++R1VjNf30Re8AbQlXOEGxEN5t\n" - "t+Tvpq8K5L3prQs2KNSzyOUmedjb/ojH4T4qe/RL9EVjjeuIGHDNUT6F197yZ91y\n" - "qLLTf1WjnUyZcKij5rryX0LJBBWawEZjNSHZawIdAMQlyycia4NigCdiDR+QptUn\n" - "2xrj9o14fXkIrXcCggEAXRZm1rbPhsjSTo6cpCVrmDzO1grv83EHiBH4MvRQQnP8\n" - "FpAREsBA5cYju97XvLaLhioZeMjLn08kU7TUbHRUB+ULTuVvE2dQbBpGuKiLRRt9\n" - "6U2T0eD3xGLoM+o8EY/kpqaWGEpZv7hzM9xuo4vy55+viAZgFWULqmltwfG/7w7V\n" - "NXUHNv5H4Ipw//fSDLTPqzUlNqSSswDLz6pCjWEs0rWAqNAMaOiLTz4id9pL48Oe\n" - "oAfpcQR9tgTEnwyXfZBnrJVclHhkHKGeXvU05IgCzpKO76Z5R+By50T0i/JV7vzM\n" - "l2yS9aAl/cprT6U7yI3oU/blldCVNpMcFAFb+fO8DAKCAQBVMo8xptyvQOJeSvbO\n" - "SSYdJ3IiI/0GdkcGWXblWg9z7mrPaWEnT7OquEm/+vYtWd3GHDtyNM+jzsN4Xgjc\n" - "TL3AEd2hLiozJQ1BFKw25VU08UHAYTzUxZhO4Vwtmp46Kwj8YLDQ3NHRWCBxpDQR\n" - "fbiFvyXP+qXap6plMfrydnUD1mae/JSOWOYgdB7tFIehstLxVXx/cAnjwgFU03Df\n" - "grjsad92zA1Hc9wIjbsgAQdTR5DWnFRkRt3UtayBwoyqm6QceZHsv1NAGvkQ4ion\n" - "bEjkHkjF9YCkR9/rspR8cLghRIXMjOpypuSbaRPeeWq0gP2UOxFL/d3iWH0ETr/L\n" - "kTlCAhxYGpVgtfB96qmJukyl9GOGvfkwFTgEyIDoV84M\n" - "-----END DSA PRIVATE KEY-----\n"; + "-----BEGIN DSA PRIVATE KEY-----\n" + "MIIDTQIBAAKCAQEAh60B6yPMRIT7udq2kKuwnQDohvT1U0w+RJcSr23C05cM/Ovn\n" + "UP/8Rrj6T8K+uYhMbKgLaZiJJW9q04jaPQk0cfUphbLvRjzVHwE/0Bkb+Y1Rv7ni\n" + "Jot2IFMq5iuNraf889PC0WREvFCcIkSFY2Ac4WT7mCcBtfx/raGFXDUjcUrJ0HwZ\n" + "IOhjQDfcXUsztuyYsYA75ociEY8kyDZq/ixyr5++R1VjNf30Re8AbQlXOEGxEN5t\n" + "t+Tvpq8K5L3prQs2KNSzyOUmedjb/ojH4T4qe/RL9EVjjeuIGHDNUT6F197yZ91y\n" + "qLLTf1WjnUyZcKij5rryX0LJBBWawEZjNSHZawIdAMQlyycia4NigCdiDR+QptUn\n" + "2xrj9o14fXkIrXcCggEAXRZm1rbPhsjSTo6cpCVrmDzO1grv83EHiBH4MvRQQnP8\n" + "FpAREsBA5cYju97XvLaLhioZeMjLn08kU7TUbHRUB+ULTuVvE2dQbBpGuKiLRRt9\n" + "6U2T0eD3xGLoM+o8EY/kpqaWGEpZv7hzM9xuo4vy55+viAZgFWULqmltwfG/7w7V\n" + "NXUHNv5H4Ipw//fSDLTPqzUlNqSSswDLz6pCjWEs0rWAqNAMaOiLTz4id9pL48Oe\n" + "oAfpcQR9tgTEnwyXfZBnrJVclHhkHKGeXvU05IgCzpKO76Z5R+By50T0i/JV7vzM\n" + "l2yS9aAl/cprT6U7yI3oU/blldCVNpMcFAFb+fO8DAKCAQBVMo8xptyvQOJeSvbO\n" + "SSYdJ3IiI/0GdkcGWXblWg9z7mrPaWEnT7OquEm/+vYtWd3GHDtyNM+jzsN4Xgjc\n" + "TL3AEd2hLiozJQ1BFKw25VU08UHAYTzUxZhO4Vwtmp46Kwj8YLDQ3NHRWCBxpDQR\n" + "fbiFvyXP+qXap6plMfrydnUD1mae/JSOWOYgdB7tFIehstLxVXx/cAnjwgFU03Df\n" + "grjsad92zA1Hc9wIjbsgAQdTR5DWnFRkRt3UtayBwoyqm6QceZHsv1NAGvkQ4ion\n" + "bEjkHkjF9YCkR9/rspR8cLghRIXMjOpypuSbaRPeeWq0gP2UOxFL/d3iWH0ETr/L\n" + "kTlCAhxYGpVgtfB96qmJukyl9GOGvfkwFTgEyIDoV84M\n" + "-----END DSA PRIVATE KEY-----\n"; static const char dsa_2048_sig[] = - "\x30\x3d\x02\x1d\x00\xbe\x87\x2f\xcf\xa1\xe4\x86\x5c\x72\x58\x4a" - "\x7b\x8f\x32\x7f\xa5\x1b\xdc\x5c\xae\xda\x98\xea\x15\x32\xed\x0c" - "\x4e\x02\x1c\x4c\x76\x01\x2b\xcd\xb9\x33\x95\xf2\xfa\xde\x56\x01" - "\xb7\xaa\xe4\x5a\x4a\x2e\xf1\x24\x5a\xd1\xb5\x83\x9a\x93\x61"; + "\x30\x3d\x02\x1d\x00\xbe\x87\x2f\xcf\xa1\xe4\x86\x5c\x72\x58\x4a" + "\x7b\x8f\x32\x7f\xa5\x1b\xdc\x5c\xae\xda\x98\xea\x15\x32\xed\x0c" + "\x4e\x02\x1c\x4c\x76\x01\x2b\xcd\xb9\x33\x95\xf2\xfa\xde\x56\x01" + "\xb7\xaa\xe4\x5a\x4a\x2e\xf1\x24\x5a\xd1\xb5\x83\x9a\x93\x61"; /* secp256r1 private key and signature */ static const char ecdsa_secp256r1_privkey[] = - "-----BEGIN EC PRIVATE KEY-----\n" - "MHcCAQEEIPAKWV7+pZe9c5EubMNfAEKWRQtP/MvlO9HehwHmJssNoAoGCCqGSM49\n" - "AwEHoUQDQgAE2CNONRio3ciuXtoomJKs3MdbzLbd44VPhtzJN30VLFm5gvnfiCj2\n" - "zzz7pl9Cv0ECHl6yedNI8QEKdcwCDgEmkQ==\n" "-----END EC PRIVATE KEY-----\n"; + "-----BEGIN EC PRIVATE KEY-----\n" + "MHcCAQEEIPAKWV7+pZe9c5EubMNfAEKWRQtP/MvlO9HehwHmJssNoAoGCCqGSM49\n" + "AwEHoUQDQgAE2CNONRio3ciuXtoomJKs3MdbzLbd44VPhtzJN30VLFm5gvnfiCj2\n" + "zzz7pl9Cv0ECHl6yedNI8QEKdcwCDgEmkQ==\n" + "-----END EC PRIVATE KEY-----\n"; static const char ecdsa_secp256r1_sig[] = - "\x30\x45\x02\x21\x00\x80\x67\x18\xb9\x72\xc6\x0b\xe1\xc9\x89\x9b" - "\x85\x11\x49\x29\x08\xd9\x86\x76\xcc\xfb\xc1\xf4\xd0\xa2\x5e\xa7" - "\xb9\x12\xfb\x1a\x68\x02\x20\x67\x12\xb1\x89\x9e\x1d\x9d\x5c\x0f" - "\xef\x6e\xa7\x2a\x95\x8c\xfa\x54\x20\x80\xc8\x30\x7c\xff\x06\xbc" - "\xc8\xe2\x9a\x2f\x05\x2f\x67"; + "\x30\x45\x02\x21\x00\x80\x67\x18\xb9\x72\xc6\x0b\xe1\xc9\x89\x9b" + "\x85\x11\x49\x29\x08\xd9\x86\x76\xcc\xfb\xc1\xf4\xd0\xa2\x5e\xa7" + "\xb9\x12\xfb\x1a\x68\x02\x20\x67\x12\xb1\x89\x9e\x1d\x9d\x5c\x0f" + "\xef\x6e\xa7\x2a\x95\x8c\xfa\x54\x20\x80\xc8\x30\x7c\xff\x06\xbc" + "\xc8\xe2\x9a\x2f\x05\x2f\x67"; #ifdef ENABLE_NON_SUITEB_CURVES /* secp192r1 private key and signature */ static const char ecdsa_secp192r1_privkey[] = - "-----BEGIN EC PRIVATE KEY-----" - "MF8CAQEEGLjezFcbgDMeApVrdtZHvu/k1a8/tVZ41KAKBggqhkjOPQMBAaE0AzIA" - "BO1lciKdgxeRH8k64vxcaV1OYIK9akVrW02Dw21MXhRLP0l0wzCw6LGSr5rS6AaL" - "Fg==" "-----END EC PRIVATE KEY-----"; + "-----BEGIN EC PRIVATE KEY-----" + "MF8CAQEEGLjezFcbgDMeApVrdtZHvu/k1a8/tVZ41KAKBggqhkjOPQMBAaE0AzIA" + "BO1lciKdgxeRH8k64vxcaV1OYIK9akVrW02Dw21MXhRLP0l0wzCw6LGSr5rS6AaL" + "Fg==" + "-----END EC PRIVATE KEY-----"; static const char ecdsa_secp192r1_sig[] = - "\x30\x34\x02\x18\x7c\x43\xe3\xb7\x26\x90\x43\xb5\xf5\x63\x8f\xee" - "\xac\x78\x3d\xac\x35\x35\xd0\x1e\x83\x17\x2b\x64\x02\x18\x14\x6e" - "\x94\xd5\x7e\xac\x43\x42\x0b\x71\x7a\xc8\x29\xe6\xe3\xda\xf2\x95" - "\x0e\xe0\x63\x24\xed\xf2"; + "\x30\x34\x02\x18\x7c\x43\xe3\xb7\x26\x90\x43\xb5\xf5\x63\x8f\xee" + "\xac\x78\x3d\xac\x35\x35\xd0\x1e\x83\x17\x2b\x64\x02\x18\x14\x6e" + "\x94\xd5\x7e\xac\x43\x42\x0b\x71\x7a\xc8\x29\xe6\xe3\xda\xf2\x95" + "\x0e\xe0\x63\x24\xed\xf2"; /* secp224r1 private key and signature */ static const char ecdsa_secp224r1_privkey[] = - "-----BEGIN EC PRIVATE KEY-----" - "MGgCAQEEHOKWJFdWdrR/CgVrUeTeawOrJ9GozE9KKx2a8PmgBwYFK4EEACGhPAM6" - "AAQKQj3YpenWT7lFR41SnBvmj/+Bj+kgzQnaF65qWAtPRJsZXFlLTu3/IUNqSRu9" - "DqPsk8xBHAB7pA==" "-----END EC PRIVATE KEY-----"; + "-----BEGIN EC PRIVATE KEY-----" + "MGgCAQEEHOKWJFdWdrR/CgVrUeTeawOrJ9GozE9KKx2a8PmgBwYFK4EEACGhPAM6" + "AAQKQj3YpenWT7lFR41SnBvmj/+Bj+kgzQnaF65qWAtPRJsZXFlLTu3/IUNqSRu9" + "DqPsk8xBHAB7pA==" + "-----END EC PRIVATE KEY-----"; static const char ecdsa_secp224r1_sig[] = - "\x30\x3d\x02\x1c\x14\x22\x09\xa1\x51\x33\x37\xfd\x78\x73\xbd\x84" - "\x6e\x76\xa8\x60\x90\xf5\xb6\x57\x34\x25\xe0\x79\xe3\x01\x61\xa9" - "\x02\x1d\x00\xb1\xee\xdb\xae\xb3\xe6\x9c\x04\x68\xd5\xe1\x0d\xb6" - "\xfc\x5c\x45\xc3\x4f\xbf\x2b\xa5\xe0\x89\x37\x84\x04\x82\x5f"; + "\x30\x3d\x02\x1c\x14\x22\x09\xa1\x51\x33\x37\xfd\x78\x73\xbd\x84" + "\x6e\x76\xa8\x60\x90\xf5\xb6\x57\x34\x25\xe0\x79\xe3\x01\x61\xa9" + "\x02\x1d\x00\xb1\xee\xdb\xae\xb3\xe6\x9c\x04\x68\xd5\xe1\x0d\xb6" + "\xfc\x5c\x45\xc3\x4f\xbf\x2b\xa5\xe0\x89\x37\x84\x04\x82\x5f"; #endif /* secp384r1 private key and signature */ static const char ecdsa_secp384r1_privkey[] = - "-----BEGIN EC PRIVATE KEY-----" - "MIGkAgEBBDDevshD6gb+4rZpC9vwFcIwNs4KmGzdqCxyyN40a8uOWRbyf7aHdiSS" - "03oAyKtc4JCgBwYFK4EEACKhZANiAARO1KkPMno2tnNXx1S9EZkp8SOpDCZ4aobH" - "IYv8RHnSmKf8I3OKD6TaoeR+1MwJmNJUH90Bj45WXla68/vsPiFcfVKboxsZYe/n" - "pv8e4ugXagVQVBXNZJ859iYPdJR24vo=" "-----END EC PRIVATE KEY-----"; + "-----BEGIN EC PRIVATE KEY-----" + "MIGkAgEBBDDevshD6gb+4rZpC9vwFcIwNs4KmGzdqCxyyN40a8uOWRbyf7aHdiSS" + "03oAyKtc4JCgBwYFK4EEACKhZANiAARO1KkPMno2tnNXx1S9EZkp8SOpDCZ4aobH" + "IYv8RHnSmKf8I3OKD6TaoeR+1MwJmNJUH90Bj45WXla68/vsPiFcfVKboxsZYe/n" + "pv8e4ugXagVQVBXNZJ859iYPdJR24vo=" + "-----END EC PRIVATE KEY-----"; static const char ecdsa_secp384r1_sig[] = - "\x30\x65\x02\x31\x00\xa7\x73\x60\x16\xdb\xf9\x1f\xfc\x9e\xd2\x12" - "\x23\xd4\x04\xa7\x31\x1f\x15\x28\xfd\x87\x9c\x2c\xb1\xf3\x38\x35" - "\x23\x3b\x6e\xfe\x6a\x5d\x89\x34\xbe\x02\x82\xc6\x27\xea\x45\x53" - "\xa9\x87\xc5\x31\x0a\x02\x30\x76\x32\x80\x6b\x43\x3c\xb4\xfd\x90" - "\x03\xe0\x1d\x5d\x77\x18\x45\xf6\x71\x29\xa9\x05\x87\x49\x75\x3a" - "\x78\x9c\x49\xe5\x6c\x8e\x18\xcd\x5d\xee\x2c\x6f\x92\xf7\x15\xd3" - "\x38\xd5\xf9\x9b\x9d\x1a\xf4"; + "\x30\x65\x02\x31\x00\xa7\x73\x60\x16\xdb\xf9\x1f\xfc\x9e\xd2\x12" + "\x23\xd4\x04\xa7\x31\x1f\x15\x28\xfd\x87\x9c\x2c\xb1\xf3\x38\x35" + "\x23\x3b\x6e\xfe\x6a\x5d\x89\x34\xbe\x02\x82\xc6\x27\xea\x45\x53" + "\xa9\x87\xc5\x31\x0a\x02\x30\x76\x32\x80\x6b\x43\x3c\xb4\xfd\x90" + "\x03\xe0\x1d\x5d\x77\x18\x45\xf6\x71\x29\xa9\x05\x87\x49\x75\x3a" + "\x78\x9c\x49\xe5\x6c\x8e\x18\xcd\x5d\xee\x2c\x6f\x92\xf7\x15\xd3" + "\x38\xd5\xf9\x9b\x9d\x1a\xf4"; /* secp521r1 private key and signature */ static const char ecdsa_secp521r1_privkey[] = - "-----BEGIN EC PRIVATE KEY-----" - "MIHbAgEBBEGO2n7NN363qSCvJVdlQtCvudtaW4o0fEufXRjE1AsCrle+VXX0Zh0w" - "Y1slSeDHMndpakoiF+XkQ+bhcB867UV6aKAHBgUrgQQAI6GBiQOBhgAEAQb6jDpo" - "byy1tF8Zucg0TMGUzIN2DK+RZJ3QQRdWdirO25OIC3FoFi1Yird6rpoB6HlNyJ7R" - "0bNG9Uv34bSHMn8yAFoiqxUCdJZQbEenMoZsi6COaePe3e0QqvDMr0hEWT23Sr3t" - "LpEV7eZGFfFIJw5wSUp2KOcs+O9WjmoukTWtDKNV" "-----END EC PRIVATE KEY-----"; + "-----BEGIN EC PRIVATE KEY-----" + "MIHbAgEBBEGO2n7NN363qSCvJVdlQtCvudtaW4o0fEufXRjE1AsCrle+VXX0Zh0w" + "Y1slSeDHMndpakoiF+XkQ+bhcB867UV6aKAHBgUrgQQAI6GBiQOBhgAEAQb6jDpo" + "byy1tF8Zucg0TMGUzIN2DK+RZJ3QQRdWdirO25OIC3FoFi1Yird6rpoB6HlNyJ7R" + "0bNG9Uv34bSHMn8yAFoiqxUCdJZQbEenMoZsi6COaePe3e0QqvDMr0hEWT23Sr3t" + "LpEV7eZGFfFIJw5wSUp2KOcs+O9WjmoukTWtDKNV" + "-----END EC PRIVATE KEY-----"; static const char ecdsa_secp521r1_sig[] = - "\x30\x81\x88\x02\x42\x01\x9d\x13\x2e\xc9\x75\x1b\x60\x10\x62\xc5" - "\x0d\xcb\x08\x9e\x86\x01\xd3\xc9\x8c\xee\x2e\x16\x3d\x8c\xc2\x65" - "\x80\xe1\x32\x56\xc3\x02\x9d\xf0\x4a\x89\x8d\x2e\x33\x2a\x90\x4e" - "\x72\x1d\xaa\x84\x14\xe8\xcb\xdf\x7a\x4a\xc9\x67\x2e\xba\xa3\xf2" - "\xc2\x07\xf7\x1b\xa5\x91\xbd\x02\x42\x01\xe3\x32\xd2\x25\xeb\x2e" - "\xaf\xb4\x6c\xc0\xaa\x5c\xc1\x56\x14\x13\x23\x7f\x62\xcf\x4c\xb8" - "\xd1\x96\xe0\x29\x6d\xed\x74\xdd\x23\x64\xf9\x29\x86\x40\x22\x2f" - "\xb6\x8d\x4c\x8e\x0b\x7a\xda\xdb\x03\x44\x01\x9b\x81\x1c\x3c\xab" - "\x78\xee\xf2\xc5\x24\x33\x61\x65\x01\x87\x66"; + "\x30\x81\x88\x02\x42\x01\x9d\x13\x2e\xc9\x75\x1b\x60\x10\x62\xc5" + "\x0d\xcb\x08\x9e\x86\x01\xd3\xc9\x8c\xee\x2e\x16\x3d\x8c\xc2\x65" + "\x80\xe1\x32\x56\xc3\x02\x9d\xf0\x4a\x89\x8d\x2e\x33\x2a\x90\x4e" + "\x72\x1d\xaa\x84\x14\xe8\xcb\xdf\x7a\x4a\xc9\x67\x2e\xba\xa3\xf2" + "\xc2\x07\xf7\x1b\xa5\x91\xbd\x02\x42\x01\xe3\x32\xd2\x25\xeb\x2e" + "\xaf\xb4\x6c\xc0\xaa\x5c\xc1\x56\x14\x13\x23\x7f\x62\xcf\x4c\xb8" + "\xd1\x96\xe0\x29\x6d\xed\x74\xdd\x23\x64\xf9\x29\x86\x40\x22\x2f" + "\xb6\x8d\x4c\x8e\x0b\x7a\xda\xdb\x03\x44\x01\x9b\x81\x1c\x3c\xab" + "\x78\xee\xf2\xc5\x24\x33\x61\x65\x01\x87\x66"; /* GOST01 private key */ static const char gost01_privkey[] = - "-----BEGIN PRIVATE KEY-----\n" - "MEUCAQAwHAYGKoUDAgITMBIGByqFAwICIwEGByqFAwICHgEEIgQgdNfuHGmmTdPm\n" - "p5dAa3ea9UYxpdYQPP9lbDwzQwG2bJM=\n" "-----END PRIVATE KEY-----\n"; + "-----BEGIN PRIVATE KEY-----\n" + "MEUCAQAwHAYGKoUDAgITMBIGByqFAwICIwEGByqFAwICHgEEIgQgdNfuHGmmTdPm\n" + "p5dAa3ea9UYxpdYQPP9lbDwzQwG2bJM=\n" + "-----END PRIVATE KEY-----\n"; /* GOST12 256 private key */ static const char gost12_256_privkey[] = - "-----BEGIN PRIVATE KEY-----\n" - "MEgCAQAwHwYIKoUDBwEBAQEwEwYHKoUDAgIjAQYIKoUDBwEBAgIEIgQgKOF96tom\n" - "D61rhSnzKjyrmO3fv0gdlHei+6ovrc8SnBk=\n" "-----END PRIVATE KEY-----\n"; + "-----BEGIN PRIVATE KEY-----\n" + "MEgCAQAwHwYIKoUDBwEBAQEwEwYHKoUDAgIjAQYIKoUDBwEBAgIEIgQgKOF96tom\n" + "D61rhSnzKjyrmO3fv0gdlHei+6ovrc8SnBk=\n" + "-----END PRIVATE KEY-----\n"; /* GOST12 512 private key */ static const char gost12_512_privkey[] = - "-----BEGIN PRIVATE KEY-----\n" - "MGoCAQAwIQYIKoUDBwEBAQIwFQYJKoUDBwECAQIBBggqhQMHAQECAwRCBECjFpvp\n" - "B0vdc7u59b99TCNXhHiB69JJtUjvieNkGYJpoaaIvoKZTNCjpSZASsZcQZCHOTof\n" - "hsQ3JCCy4xnd5jWT\n" "-----END PRIVATE KEY-----\n"; - -static int test_rsa_enc(gnutls_pk_algorithm_t pk, - unsigned bits, gnutls_digest_algorithm_t ign) + "-----BEGIN PRIVATE KEY-----\n" + "MGoCAQAwIQYIKoUDBwEBAQIwFQYJKoUDBwECAQIBBggqhQMHAQECAwRCBECjFpvp\n" + "B0vdc7u59b99TCNXhHiB69JJtUjvieNkGYJpoaaIvoKZTNCjpSZASsZcQZCHOTof\n" + "hsQ3JCCy4xnd5jWT\n" + "-----END PRIVATE KEY-----\n"; + +static int test_rsa_enc(gnutls_pk_algorithm_t pk, unsigned bits, + gnutls_digest_algorithm_t ign) { int ret; gnutls_datum_t enc = { NULL, 0 }; gnutls_datum_t dec = { NULL, 0 }; - gnutls_datum_t raw_rsa_key = - { (void *)rsa_2048_privkey, sizeof(rsa_2048_privkey) - 1 }; + gnutls_datum_t raw_rsa_key = { (void *)rsa_2048_privkey, + sizeof(rsa_2048_privkey) - 1 }; gnutls_privkey_t key; gnutls_pubkey_t pub = NULL; unsigned char plaintext2[sizeof(DATASTR) - 1]; @@ -240,9 +244,8 @@ static int test_rsa_enc(gnutls_pk_algorithm_t pk, goto cleanup; } - ret = - gnutls_privkey_import_x509_raw(key, &raw_rsa_key, - GNUTLS_X509_FMT_PEM, NULL, 0); + ret = gnutls_privkey_import_x509_raw(key, &raw_rsa_key, + GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -260,8 +263,8 @@ static int test_rsa_enc(gnutls_pk_algorithm_t pk, goto cleanup; } - if (enc.size == signed_data.size && memcmp(signed_data.data, enc.data, - enc.size) == 0) { + if (enc.size == signed_data.size && + memcmp(signed_data.data, enc.data, enc.size) == 0) { gnutls_assert(); ret = GNUTLS_E_SELF_TEST_ERROR; goto cleanup; @@ -273,8 +276,8 @@ static int test_rsa_enc(gnutls_pk_algorithm_t pk, goto cleanup; } - if (dec.size != signed_data.size - || memcmp(dec.data, signed_data.data, dec.size) != 0) { + if (dec.size != signed_data.size || + memcmp(dec.data, signed_data.data, dec.size) != 0) { ret = GNUTLS_E_SELF_TEST_ERROR; gnutls_assert(); goto cleanup; @@ -293,7 +296,7 @@ static int test_rsa_enc(gnutls_pk_algorithm_t pk, } ret = 0; - cleanup: +cleanup: if (pub != NULL) gnutls_pubkey_deinit(pub); gnutls_privkey_deinit(key); @@ -310,8 +313,8 @@ static int test_rsa_enc(gnutls_pk_algorithm_t pk, return ret; } -static int test_sig(gnutls_pk_algorithm_t pk, - unsigned bits, gnutls_sign_algorithm_t sigalgo) +static int test_sig(gnutls_pk_algorithm_t pk, unsigned bits, + gnutls_sign_algorithm_t sigalgo) { int ret; gnutls_privkey_t key; @@ -406,9 +409,8 @@ static int test_sig(gnutls_pk_algorithm_t pk, goto cleanup; } - ret = - gnutls_privkey_import_x509_raw(key, &raw_key, GNUTLS_X509_FMT_PEM, - NULL, 0); + ret = gnutls_privkey_import_x509_raw(key, &raw_key, GNUTLS_X509_FMT_PEM, + NULL, 0); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -426,9 +428,8 @@ static int test_sig(gnutls_pk_algorithm_t pk, goto cleanup; } - ret = - gnutls_pubkey_verify_data2(pub, sigalgo, vflags, - &signed_data, &sig); + ret = gnutls_pubkey_verify_data2(pub, sigalgo, vflags, &signed_data, + &sig); if (ret < 0) { ret = GNUTLS_E_SELF_TEST_ERROR; gnutls_assert(); @@ -445,7 +446,7 @@ static int test_sig(gnutls_pk_algorithm_t pk, ret = 0; - cleanup: +cleanup: if (pub != NULL) gnutls_pubkey_deinit(pub); gnutls_privkey_deinit(key); @@ -462,10 +463,9 @@ static int test_sig(gnutls_pk_algorithm_t pk, } static int test_known_sig(gnutls_pk_algorithm_t pk, unsigned bits, - gnutls_digest_algorithm_t dig, - const void *privkey, size_t privkey_size, - const void *stored_sig, size_t stored_sig_size, - gnutls_privkey_flags_t flags) + gnutls_digest_algorithm_t dig, const void *privkey, + size_t privkey_size, const void *stored_sig, + size_t stored_sig_size, gnutls_privkey_flags_t flags) { int ret; gnutls_datum_t sig = { NULL, 0 }; @@ -475,8 +475,7 @@ static int test_known_sig(gnutls_pk_algorithm_t pk, unsigned bits, char param_name[32]; unsigned vflags = 0; - if (pk == GNUTLS_PK_EC || - pk == GNUTLS_PK_GOST_01 || + if (pk == GNUTLS_PK_EC || pk == GNUTLS_PK_GOST_01 || pk == GNUTLS_PK_GOST_12_256 || pk == GNUTLS_PK_GOST_12_512) { snprintf(param_name, sizeof(param_name), "%s", gnutls_ecc_curve_get_name(GNUTLS_BITS_TO_CURVE(bits))); @@ -499,9 +498,8 @@ static int test_known_sig(gnutls_pk_algorithm_t pk, unsigned bits, t.data = (void *)privkey; t.size = privkey_size; - ret = - gnutls_privkey_import_x509_raw(key, &t, GNUTLS_X509_FMT_PEM, - NULL, 0); + ret = gnutls_privkey_import_x509_raw(key, &t, GNUTLS_X509_FMT_PEM, NULL, + 0); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -522,7 +520,8 @@ static int test_known_sig(gnutls_pk_algorithm_t pk, unsigned bits, ssig.data = (void *)stored_sig; ssig.size = stored_sig_size; - if (sig.size != ssig.size || memcmp(sig.data, ssig.data, sig.size) != 0) { + if (sig.size != ssig.size || + memcmp(sig.data, ssig.data, sig.size) != 0) { ret = GNUTLS_E_SELF_TEST_ERROR; #if 0 unsigned i; @@ -549,9 +548,8 @@ static int test_known_sig(gnutls_pk_algorithm_t pk, unsigned bits, goto cleanup; } - ret = - gnutls_pubkey_verify_data2(pub, gnutls_pk_to_sign(pk, dig), vflags, - &signed_data, &sig); + ret = gnutls_pubkey_verify_data2(pub, gnutls_pk_to_sign(pk, dig), + vflags, &signed_data, &sig); if (ret < 0) { ret = GNUTLS_E_SELF_TEST_ERROR; gnutls_assert(); @@ -560,9 +558,8 @@ static int test_known_sig(gnutls_pk_algorithm_t pk, unsigned bits, /* Test if a broken signature will cause verification error */ - ret = - gnutls_pubkey_verify_data2(pub, gnutls_pk_to_sign(pk, dig), 0, - &bad_data, &sig); + ret = gnutls_pubkey_verify_data2(pub, gnutls_pk_to_sign(pk, dig), 0, + &bad_data, &sig); if (ret != GNUTLS_E_PK_SIG_VERIFY_FAILED) { ret = GNUTLS_E_SELF_TEST_ERROR; @@ -572,7 +569,7 @@ static int test_known_sig(gnutls_pk_algorithm_t pk, unsigned bits, ret = 0; - cleanup: +cleanup: gnutls_free(sig.data); if (pub != 0) gnutls_pubkey_deinit(pub); @@ -589,18 +586,19 @@ static int test_known_sig(gnutls_pk_algorithm_t pk, unsigned bits, } #define PK_TEST(pk, func, bits, sigalgo) \ - ret = func(pk, bits, sigalgo); \ - if (ret < 0) { \ - gnutls_assert(); \ - goto cleanup; \ - } - -#define PK_KNOWN_TEST(pk, bits, dig, pkey, sig, flags) \ - ret = test_known_sig(pk, bits, dig, pkey, sizeof(pkey)-1, sig, sizeof(sig)-1, flags); \ - if (ret < 0) { \ - gnutls_assert(); \ - goto cleanup; \ - } + ret = func(pk, bits, sigalgo); \ + if (ret < 0) { \ + gnutls_assert(); \ + goto cleanup; \ + } + +#define PK_KNOWN_TEST(pk, bits, dig, pkey, sig, flags) \ + ret = test_known_sig(pk, bits, dig, pkey, sizeof(pkey) - 1, sig, \ + sizeof(sig) - 1, flags); \ + if (ret < 0) { \ + gnutls_assert(); \ + goto cleanup; \ + } /* Known answer tests for DH */ static int test_dh(void) @@ -695,7 +693,8 @@ static int test_dh(void) 0x1d, 0x98, 0x17, 0x45, 0xa3, 0xee, 0x21, 0xa0, 0x97, 0x38, 0x80, 0xc5, 0x28, 0x1f, }; - static const uint8_t test_y[] = { /* y=g^x mod p */ + static const uint8_t test_y[] = { + /* y=g^x mod p */ 0x93, 0xeb, 0x5c, 0x37, 0x1d, 0x3c, 0x06, 0x6f, 0xbf, 0xbe, 0x96, 0x51, 0x26, 0x58, 0x81, 0x36, 0xc6, 0x4f, 0x9a, 0x34, 0xc4, 0xc5, 0xa8, 0xa3, 0x2c, 0x41, 0x76, 0xa8, 0xc6, 0xc0, @@ -790,7 +789,7 @@ static int test_dh(void) } ret = 0; - cleanup: +cleanup: _gnutls_mpi_release(&pub.params[DH_Y]); _gnutls_mpi_release(&priv.params[DH_G]); _gnutls_mpi_release(&priv.params[DH_P]); @@ -813,25 +812,27 @@ static int test_ecdh(void) gnutls_pk_params_st priv; gnutls_pk_params_st pub; gnutls_datum_t out = { NULL, 0 }; - static const uint8_t known_key[] = { - 0x22, 0x7a, 0x95, 0x98, 0x5f, 0xb1, 0x25, 0x79, - 0xee, 0x07, 0xe3, 0x8b, 0x1a, 0x97, 0x1d, 0x63, - 0x53, 0xa8, 0xbd, 0xde, 0x67, 0x4b, 0xcf, 0xa4, - 0x5f, 0x5e, 0x67, 0x27, 0x6d, 0x86, 0x27, 0x26 - }; - static const uint8_t test_k[] = { /* priv */ + static const uint8_t known_key[] = { 0x22, 0x7a, 0x95, 0x98, 0x5f, 0xb1, + 0x25, 0x79, 0xee, 0x07, 0xe3, 0x8b, + 0x1a, 0x97, 0x1d, 0x63, 0x53, 0xa8, + 0xbd, 0xde, 0x67, 0x4b, 0xcf, 0xa4, + 0x5f, 0x5e, 0x67, 0x27, 0x6d, 0x86, + 0x27, 0x26 }; + static const uint8_t test_k[] = { + /* priv */ 0x52, 0x9c, 0x30, 0xac, 0x6b, 0xce, 0x71, 0x9a, 0x37, 0xcd, 0x40, 0x93, 0xbf, 0xf0, 0x36, 0x89, 0x53, 0xcc, 0x0e, 0x17, 0xc6, 0xb6, 0xe2, 0x6a, 0x3c, 0x2c, 0x51, 0xdb, 0xa6, 0x69, 0x8c, 0xb1 }; - static const uint8_t test_x[] = { - 0x51, 0x35, 0xd1, 0xd2, 0xb6, 0xad, 0x13, 0xf4, - 0xa2, 0x25, 0xd3, 0x85, 0x83, 0xbe, 0x42, 0x1e, - 0x19, 0x09, 0x54, 0x39, 0x00, 0x46, 0x91, 0x49, - 0x0f, 0x3f, 0xaf, 0x3f, 0x67, 0xda, 0x10, 0x6f - }; - static const uint8_t test_y[] = { /* y=g^x mod p */ + static const uint8_t test_x[] = { 0x51, 0x35, 0xd1, 0xd2, 0xb6, 0xad, + 0x13, 0xf4, 0xa2, 0x25, 0xd3, 0x85, + 0x83, 0xbe, 0x42, 0x1e, 0x19, 0x09, + 0x54, 0x39, 0x00, 0x46, 0x91, 0x49, + 0x0f, 0x3f, 0xaf, 0x3f, 0x67, 0xda, + 0x10, 0x6f }; + static const uint8_t test_y[] = { + /* y=g^x mod p */ 0x07, 0x3a, 0xa1, 0xa2, 0x47, 0x3d, 0xa2, 0x74, 0x74, 0xc2, 0xde, 0x62, 0xb6, 0xb9, 0x59, 0xc9, 0x56, 0xf6, 0x9e, 0x17, 0xea, 0xbf, 0x7d, 0xa1, @@ -845,22 +846,22 @@ static int test_ecdh(void) priv.algo = pub.algo = GNUTLS_PK_EC; - ret = - _gnutls_mpi_init_scan(&priv.params[ECC_K], test_k, sizeof(test_k)); + ret = _gnutls_mpi_init_scan(&priv.params[ECC_K], test_k, + sizeof(test_k)); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _gnutls_mpi_init_scan(&priv.params[ECC_X], test_x, sizeof(test_x)); + ret = _gnutls_mpi_init_scan(&priv.params[ECC_X], test_x, + sizeof(test_x)); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _gnutls_mpi_init_scan(&priv.params[ECC_Y], test_y, sizeof(test_y)); + ret = _gnutls_mpi_init_scan(&priv.params[ECC_Y], test_y, + sizeof(test_y)); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -898,7 +899,7 @@ static int test_ecdh(void) } ret = 0; - cleanup: +cleanup: _gnutls_mpi_release(&pub.params[ECC_Y]); _gnutls_mpi_release(&pub.params[ECC_X]); _gnutls_mpi_release(&priv.params[ECC_K]); @@ -998,16 +999,16 @@ int gnutls_pk_self_test(unsigned flags, gnutls_pk_algorithm_t pk) /* Test ECDSA */ if (is_post || !is_fips140_mode_enabled) { PK_KNOWN_TEST(GNUTLS_PK_EC, - GNUTLS_CURVE_TO_BITS - (GNUTLS_ECC_CURVE_SECP256R1), + GNUTLS_CURVE_TO_BITS( + GNUTLS_ECC_CURVE_SECP256R1), GNUTLS_DIG_SHA256, ecdsa_secp256r1_privkey, ecdsa_secp256r1_sig, GNUTLS_PRIVKEY_FLAG_REPRODUCIBLE); } else { PK_TEST(GNUTLS_PK_EC, test_sig, - GNUTLS_CURVE_TO_BITS - (GNUTLS_ECC_CURVE_SECP256R1), + GNUTLS_CURVE_TO_BITS( + GNUTLS_ECC_CURVE_SECP256R1), GNUTLS_SIGN_ECDSA_SHA256); } @@ -1016,62 +1017,62 @@ int gnutls_pk_self_test(unsigned flags, gnutls_pk_algorithm_t pk) if (is_post || !is_fips140_mode_enabled) { PK_KNOWN_TEST(GNUTLS_PK_EC, - GNUTLS_CURVE_TO_BITS - (GNUTLS_ECC_CURVE_SECP384R1), + GNUTLS_CURVE_TO_BITS( + GNUTLS_ECC_CURVE_SECP384R1), GNUTLS_DIG_SHA384, ecdsa_secp384r1_privkey, ecdsa_secp384r1_sig, GNUTLS_PRIVKEY_FLAG_REPRODUCIBLE); } else { PK_TEST(GNUTLS_PK_EC, test_sig, - GNUTLS_CURVE_TO_BITS - (GNUTLS_ECC_CURVE_SECP384R1), + GNUTLS_CURVE_TO_BITS( + GNUTLS_ECC_CURVE_SECP384R1), GNUTLS_SIGN_ECDSA_SHA384); } if (is_post || !is_fips140_mode_enabled) { PK_KNOWN_TEST(GNUTLS_PK_EC, - GNUTLS_CURVE_TO_BITS - (GNUTLS_ECC_CURVE_SECP521R1), + GNUTLS_CURVE_TO_BITS( + GNUTLS_ECC_CURVE_SECP521R1), GNUTLS_DIG_SHA512, ecdsa_secp521r1_privkey, ecdsa_secp521r1_sig, GNUTLS_PRIVKEY_FLAG_REPRODUCIBLE); } else { PK_TEST(GNUTLS_PK_EC, test_sig, - GNUTLS_CURVE_TO_BITS - (GNUTLS_ECC_CURVE_SECP521R1), + GNUTLS_CURVE_TO_BITS( + GNUTLS_ECC_CURVE_SECP521R1), GNUTLS_SIGN_ECDSA_SHA512); } #ifdef ENABLE_NON_SUITEB_CURVES if (is_post || !is_fips140_mode_enabled) { PK_KNOWN_TEST(GNUTLS_PK_EC, - GNUTLS_CURVE_TO_BITS - (GNUTLS_ECC_CURVE_SECP192R1), + GNUTLS_CURVE_TO_BITS( + GNUTLS_ECC_CURVE_SECP192R1), GNUTLS_DIG_SHA256, ecdsa_secp192r1_privkey, ecdsa_secp192r1_sig, GNUTLS_PRIVKEY_FLAG_REPRODUCIBLE); } else { PK_TEST(GNUTLS_PK_EC, test_sig, - GNUTLS_CURVE_TO_BITS - (GNUTLS_ECC_CURVE_SECP192R1), + GNUTLS_CURVE_TO_BITS( + GNUTLS_ECC_CURVE_SECP192R1), GNUTLS_SIGN_ECDSA_SHA256); } if (is_post || !is_fips140_mode_enabled) { PK_KNOWN_TEST(GNUTLS_PK_EC, - GNUTLS_CURVE_TO_BITS - (GNUTLS_ECC_CURVE_SECP224R1), + GNUTLS_CURVE_TO_BITS( + GNUTLS_ECC_CURVE_SECP224R1), GNUTLS_DIG_SHA256, ecdsa_secp224r1_privkey, ecdsa_secp224r1_sig, GNUTLS_PRIVKEY_FLAG_REPRODUCIBLE); } else { PK_TEST(GNUTLS_PK_EC, test_sig, - GNUTLS_CURVE_TO_BITS - (GNUTLS_ECC_CURVE_SECP224R1), + GNUTLS_CURVE_TO_BITS( + GNUTLS_ECC_CURVE_SECP224R1), GNUTLS_SIGN_ECDSA_SHA256); } #endif @@ -1111,6 +1112,6 @@ int gnutls_pk_self_test(unsigned flags, gnutls_pk_algorithm_t pk) ret = 0; - cleanup: +cleanup: return ret; } diff --git a/lib/crypto-selftests.c b/lib/crypto-selftests.c index 5c9bd917b9..67b286abec 100644 --- a/lib/crypto-selftests.c +++ b/lib/crypto-selftests.c @@ -32,10 +32,9 @@ #include #define STR(tag, tag_size, val) \ - .tag = (uint8_t*)val, \ - .tag_size = (sizeof(val)-1) + .tag = (uint8_t *)val, .tag_size = (sizeof(val) - 1) -#define V(x) (x), (sizeof(x)/sizeof(x[0])) +#define V(x) (x), (sizeof(x) / sizeof(x[0])) /* This does check the AES and SHA implementation against test vectors. * This should not run under valgrind in order to use the native @@ -48,7 +47,7 @@ struct cipher_vectors_st { const uint8_t *plaintext; unsigned int plaintext_size; - const uint8_t *ciphertext; /* also of plaintext_size */ + const uint8_t *ciphertext; /* also of plaintext_size */ const uint8_t *iv; unsigned int iv_size; @@ -67,7 +66,7 @@ struct cipher_aead_vectors_st { const uint8_t *plaintext; unsigned int plaintext_size; - const uint8_t *ciphertext; /* also of plaintext_size */ + const uint8_t *ciphertext; /* also of plaintext_size */ unsigned int iv_size; const uint8_t *iv; @@ -77,376 +76,334 @@ struct cipher_aead_vectors_st { }; const struct cipher_aead_vectors_st chacha_poly1305_vectors[] = { - { - .compat_apis = 1, - STR(key, key_size, - "\x1c\x92\x40\xa5\xeb\x55\xd3\x8a\xf3\x33\x88\x86\x04\xf6\xb5\xf0\x47\x39\x17\xc1\x40\x2b\x80\x09\x9d\xca\x5c\xbc\x20\x70\x75\xc0"), - .auth = (void *)"\xf3\x33\x88\x86\x00\x00\x00\x00\x00\x00\x4e\x91", - .auth_size = 12, - .plaintext = (void *) - "\x49\x6e\x74\x65\x72\x6e\x65\x74\x2d\x44\x72\x61\x66\x74\x73\x20\x61\x72\x65\x20\x64\x72\x61\x66\x74\x20\x64\x6f\x63\x75\x6d\x65\x6e\x74\x73\x20\x76\x61\x6c\x69\x64\x20\x66\x6f\x72\x20\x61\x20\x6d\x61\x78\x69\x6d\x75\x6d\x20\x6f\x66\x20\x73\x69\x78\x20\x6d\x6f\x6e\x74\x68\x73\x20\x61\x6e\x64\x20\x6d\x61\x79\x20\x62\x65\x20\x75\x70\x64\x61\x74\x65\x64\x2c\x20\x72\x65\x70\x6c\x61\x63\x65\x64\x2c\x20\x6f\x72\x20\x6f\x62\x73\x6f\x6c\x65\x74\x65\x64\x20\x62\x79\x20\x6f\x74\x68\x65\x72\x20\x64\x6f\x63\x75\x6d\x65\x6e\x74\x73\x20\x61\x74\x20\x61\x6e\x79\x20\x74\x69\x6d\x65\x2e\x20\x49\x74\x20\x69\x73\x20\x69\x6e\x61\x70\x70\x72\x6f\x70\x72\x69\x61\x74\x65\x20\x74\x6f\x20\x75\x73\x65\x20\x49\x6e\x74\x65\x72\x6e\x65\x74\x2d\x44\x72\x61\x66\x74\x73\x20\x61\x73\x20\x72\x65\x66\x65\x72\x65\x6e\x63\x65\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x20\x6f\x72\x20\x74\x6f\x20\x63\x69\x74\x65\x20\x74\x68\x65\x6d\x20\x6f\x74\x68\x65\x72\x20\x74\x68\x61\x6e\x20\x61\x73\x20\x2f\xe2\x80\x9c\x77\x6f\x72\x6b\x20\x69\x6e\x20\x70\x72\x6f\x67\x72\x65\x73\x73\x2e\x2f\xe2\x80\x9d", - .plaintext_size = 265, - .ciphertext = (void *) - "\x64\xa0\x86\x15\x75\x86\x1a\xf4\x60\xf0\x62\xc7\x9b\xe6\x43\xbd\x5e\x80\x5c\xfd\x34\x5c\xf3\x89\xf1\x08\x67\x0a\xc7\x6c\x8c\xb2\x4c\x6c\xfc\x18\x75\x5d\x43\xee\xa0\x9e\xe9\x4e\x38\x2d\x26\xb0\xbd\xb7\xb7\x3c\x32\x1b\x01\x00\xd4\xf0\x3b\x7f\x35\x58\x94\xcf\x33\x2f\x83\x0e\x71\x0b\x97\xce\x98\xc8\xa8\x4a\xbd\x0b\x94\x81\x14\xad\x17\x6e\x00\x8d\x33\xbd\x60\xf9\x82\xb1\xff\x37\xc8\x55\x97\x97\xa0\x6e\xf4\xf0\xef\x61\xc1\x86\x32\x4e\x2b\x35\x06\x38\x36\x06\x90\x7b\x6a\x7c\x02\xb0\xf9\xf6\x15\x7b\x53\xc8\x67\xe4\xb9\x16\x6c\x76\x7b\x80\x4d\x46\xa5\x9b\x52\x16\xcd\xe7\xa4\xe9\x90\x40\xc5\xa4\x04\x33\x22\x5e\xe2\x82\xa1\xb0\xa0\x6c\x52\x3e\xaf\x45\x34\xd7\xf8\x3f\xa1\x15\x5b\x00\x47\x71\x8c\xbc\x54\x6a\x0d\x07\x2b\x04\xb3\x56\x4e\xea\x1b\x42\x22\x73\xf5\x48\x27\x1a\x0b\xb2\x31\x60\x53\xfa\x76\x99\x19\x55\xeb\xd6\x31\x59\x43\x4e\xce\xbb\x4e\x46\x6d\xae\x5a\x10\x73\xa6\x72\x76\x27\x09\x7a\x10\x49\xe6\x17\xd9\x1d\x36\x10\x94\xfa\x68\xf0\xff\x77\x98\x71\x30\x30\x5b\xea\xba\x2e\xda\x04\xdf\x99\x7b\x71\x4d\x6c\x6f\x2c\x29\xa6\xad\x5c\xb4\x02\x2b\x02\x70\x9b", - STR(iv, iv_size, - "\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\x07\x08"), - .tag_size = 16, - .tag = (void *) - "\xee\xad\x9d\x67\x89\x0c\xbb\x22\x39\x23\x36\xfe\xa1\x85\x1f\x38"}, + { .compat_apis = 1, + STR(key, key_size, + "\x1c\x92\x40\xa5\xeb\x55\xd3\x8a\xf3\x33\x88\x86\x04\xf6\xb5\xf0\x47\x39\x17\xc1\x40\x2b\x80\x09\x9d\xca\x5c\xbc\x20\x70\x75\xc0"), + .auth = (void *)"\xf3\x33\x88\x86\x00\x00\x00\x00\x00\x00\x4e\x91", + .auth_size = 12, + .plaintext = + (void *)"\x49\x6e\x74\x65\x72\x6e\x65\x74\x2d\x44\x72\x61\x66\x74\x73\x20\x61\x72\x65\x20\x64\x72\x61\x66\x74\x20\x64\x6f\x63\x75\x6d\x65\x6e\x74\x73\x20\x76\x61\x6c\x69\x64\x20\x66\x6f\x72\x20\x61\x20\x6d\x61\x78\x69\x6d\x75\x6d\x20\x6f\x66\x20\x73\x69\x78\x20\x6d\x6f\x6e\x74\x68\x73\x20\x61\x6e\x64\x20\x6d\x61\x79\x20\x62\x65\x20\x75\x70\x64\x61\x74\x65\x64\x2c\x20\x72\x65\x70\x6c\x61\x63\x65\x64\x2c\x20\x6f\x72\x20\x6f\x62\x73\x6f\x6c\x65\x74\x65\x64\x20\x62\x79\x20\x6f\x74\x68\x65\x72\x20\x64\x6f\x63\x75\x6d\x65\x6e\x74\x73\x20\x61\x74\x20\x61\x6e\x79\x20\x74\x69\x6d\x65\x2e\x20\x49\x74\x20\x69\x73\x20\x69\x6e\x61\x70\x70\x72\x6f\x70\x72\x69\x61\x74\x65\x20\x74\x6f\x20\x75\x73\x65\x20\x49\x6e\x74\x65\x72\x6e\x65\x74\x2d\x44\x72\x61\x66\x74\x73\x20\x61\x73\x20\x72\x65\x66\x65\x72\x65\x6e\x63\x65\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x20\x6f\x72\x20\x74\x6f\x20\x63\x69\x74\x65\x20\x74\x68\x65\x6d\x20\x6f\x74\x68\x65\x72\x20\x74\x68\x61\x6e\x20\x61\x73\x20\x2f\xe2\x80\x9c\x77\x6f\x72\x6b\x20\x69\x6e\x20\x70\x72\x6f\x67\x72\x65\x73\x73\x2e\x2f\xe2\x80\x9d", + .plaintext_size = 265, + .ciphertext = + (void *)"\x64\xa0\x86\x15\x75\x86\x1a\xf4\x60\xf0\x62\xc7\x9b\xe6\x43\xbd\x5e\x80\x5c\xfd\x34\x5c\xf3\x89\xf1\x08\x67\x0a\xc7\x6c\x8c\xb2\x4c\x6c\xfc\x18\x75\x5d\x43\xee\xa0\x9e\xe9\x4e\x38\x2d\x26\xb0\xbd\xb7\xb7\x3c\x32\x1b\x01\x00\xd4\xf0\x3b\x7f\x35\x58\x94\xcf\x33\x2f\x83\x0e\x71\x0b\x97\xce\x98\xc8\xa8\x4a\xbd\x0b\x94\x81\x14\xad\x17\x6e\x00\x8d\x33\xbd\x60\xf9\x82\xb1\xff\x37\xc8\x55\x97\x97\xa0\x6e\xf4\xf0\xef\x61\xc1\x86\x32\x4e\x2b\x35\x06\x38\x36\x06\x90\x7b\x6a\x7c\x02\xb0\xf9\xf6\x15\x7b\x53\xc8\x67\xe4\xb9\x16\x6c\x76\x7b\x80\x4d\x46\xa5\x9b\x52\x16\xcd\xe7\xa4\xe9\x90\x40\xc5\xa4\x04\x33\x22\x5e\xe2\x82\xa1\xb0\xa0\x6c\x52\x3e\xaf\x45\x34\xd7\xf8\x3f\xa1\x15\x5b\x00\x47\x71\x8c\xbc\x54\x6a\x0d\x07\x2b\x04\xb3\x56\x4e\xea\x1b\x42\x22\x73\xf5\x48\x27\x1a\x0b\xb2\x31\x60\x53\xfa\x76\x99\x19\x55\xeb\xd6\x31\x59\x43\x4e\xce\xbb\x4e\x46\x6d\xae\x5a\x10\x73\xa6\x72\x76\x27\x09\x7a\x10\x49\xe6\x17\xd9\x1d\x36\x10\x94\xfa\x68\xf0\xff\x77\x98\x71\x30\x30\x5b\xea\xba\x2e\xda\x04\xdf\x99\x7b\x71\x4d\x6c\x6f\x2c\x29\xa6\xad\x5c\xb4\x02\x2b\x02\x70\x9b", + STR(iv, iv_size, "\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\x07\x08"), + .tag_size = 16, + .tag = (void *)"\xee\xad\x9d\x67\x89\x0c\xbb\x22\x39\x23\x36\xfe\xa1\x85\x1f\x38" }, }; const struct cipher_aead_vectors_st aes128_gcm_vectors[] = { - { - .compat_apis = 1, - STR(key, key_size, - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), - .auth = NULL, - .auth_size = 0, - .plaintext = NULL, - .plaintext_size = 0, - .ciphertext = NULL, - STR(iv, iv_size, - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), - .tag_size = 16, - .tag = (void *) - "\x58\xe2\xfc\xce\xfa\x7e\x30\x61\x36\x7f\x1d\x57\xa4\xe7\x45\x5a"}, - { - .compat_apis = 1, - STR(key, key_size, - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), - .auth = NULL, - .auth_size = 0, - STR(plaintext, plaintext_size, - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), - .ciphertext = (void *) - "\x03\x88\xda\xce\x60\xb6\xa3\x92\xf3\x28\xc2\xb9\x71\xb2\xfe\x78", - STR(iv, iv_size, - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), - .tag_size = 16, - .tag = (void *) - "\xab\x6e\x47\xd4\x2c\xec\x13\xbd\xf5\x3a\x67\xb2\x12\x57\xbd\xdf"}, - { - .compat_apis = 1, - STR(key, key_size, - "\xfe\xff\xe9\x92\x86\x65\x73\x1c\x6d\x6a\x8f\x94\x67\x30\x83\x08"), - .auth = (void *) - "\xfe\xed\xfa\xce\xde\xad\xbe\xef\xfe\xed\xfa\xce\xde\xad\xbe\xef\xab\xad\xda\xd2", - .auth_size = 20, - STR(plaintext, plaintext_size, - "\xd9\x31\x32\x25\xf8\x84\x06\xe5\xa5\x59\x09\xc5\xaf\xf5\x26\x9a\x86\xa7\xa9\x53\x15\x34\xf7\xda\x2e\x4c\x30\x3d\x8a\x31\x8a\x72\x1c\x3c\x0c\x95\x95\x68\x09\x53\x2f\xcf\x0e\x24\x49\xa6\xb5\x25\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57\xba\x63\x7b\x39"), - .ciphertext = (void *) - "\x42\x83\x1e\xc2\x21\x77\x74\x24\x4b\x72\x21\xb7\x84\xd0\xd4\x9c\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0\x35\xc1\x7e\x23\x29\xac\xa1\x2e\x21\xd5\x14\xb2\x54\x66\x93\x1c\x7d\x8f\x6a\x5a\xac\x84\xaa\x05\x1b\xa3\x0b\x39\x6a\x0a\xac\x97\x3d\x58\xe0\x91", - STR(iv, iv_size, - "\xca\xfe\xba\xbe\xfa\xce\xdb\xad\xde\xca\xf8\x88"), - .tag_size = 16, - .tag = (void *) - "\x5b\xc9\x4f\xbc\x32\x21\xa5\xdb\x94\xfa\xe9\x5a\xe7\x12\x1a\x47"} + { .compat_apis = 1, + STR(key, key_size, + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), + .auth = NULL, + .auth_size = 0, + .plaintext = NULL, + .plaintext_size = 0, + .ciphertext = NULL, + STR(iv, iv_size, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), + .tag_size = 16, + .tag = (void *)"\x58\xe2\xfc\xce\xfa\x7e\x30\x61\x36\x7f\x1d\x57\xa4\xe7\x45\x5a" }, + { .compat_apis = 1, + STR(key, key_size, + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), + .auth = NULL, + .auth_size = 0, + STR(plaintext, plaintext_size, + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), + .ciphertext = + (void *)"\x03\x88\xda\xce\x60\xb6\xa3\x92\xf3\x28\xc2\xb9\x71\xb2\xfe\x78", + STR(iv, iv_size, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), + .tag_size = 16, + .tag = (void *)"\xab\x6e\x47\xd4\x2c\xec\x13\xbd\xf5\x3a\x67\xb2\x12\x57\xbd\xdf" }, + { .compat_apis = 1, + STR(key, key_size, + "\xfe\xff\xe9\x92\x86\x65\x73\x1c\x6d\x6a\x8f\x94\x67\x30\x83\x08"), + .auth = (void *)"\xfe\xed\xfa\xce\xde\xad\xbe\xef\xfe\xed\xfa\xce\xde\xad\xbe\xef\xab\xad\xda\xd2", + .auth_size = 20, + STR(plaintext, plaintext_size, + "\xd9\x31\x32\x25\xf8\x84\x06\xe5\xa5\x59\x09\xc5\xaf\xf5\x26\x9a\x86\xa7\xa9\x53\x15\x34\xf7\xda\x2e\x4c\x30\x3d\x8a\x31\x8a\x72\x1c\x3c\x0c\x95\x95\x68\x09\x53\x2f\xcf\x0e\x24\x49\xa6\xb5\x25\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57\xba\x63\x7b\x39"), + .ciphertext = + (void *)"\x42\x83\x1e\xc2\x21\x77\x74\x24\x4b\x72\x21\xb7\x84\xd0\xd4\x9c\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0\x35\xc1\x7e\x23\x29\xac\xa1\x2e\x21\xd5\x14\xb2\x54\x66\x93\x1c\x7d\x8f\x6a\x5a\xac\x84\xaa\x05\x1b\xa3\x0b\x39\x6a\x0a\xac\x97\x3d\x58\xe0\x91", + STR(iv, iv_size, "\xca\xfe\xba\xbe\xfa\xce\xdb\xad\xde\xca\xf8\x88"), + .tag_size = 16, + .tag = (void *)"\x5b\xc9\x4f\xbc\x32\x21\xa5\xdb\x94\xfa\xe9\x5a\xe7\x12\x1a\x47" } }; const struct cipher_aead_vectors_st aes192_gcm_vectors[] = { - { - .compat_apis = 1, - STR(key, key_size, - "\xfe\xff\xe9\x92\x86\x65\x73\x1c\x6d\x6a\x8f\x94\x67\x30\x83\x08\xfe\xff\xe9\x92\x86\x65\x73\x1c"), - .auth = NULL, - .auth_size = 0, - STR(plaintext, plaintext_size, - "\xd9\x31\x32\x25\xf8\x84\x06\xe5\xa5\x59\x09\xc5\xaf\xf5\x26\x9a\x86\xa7\xa9\x53\x15\x34\xf7\xda\x2e\x4c\x30\x3d\x8a\x31\x8a\x72\x1c\x3c\x0c\x95\x95\x68\x09\x53\x2f\xcf\x0e\x24\x49\xa6\xb5\x25\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57\xba\x63\x7b\x39\x1a\xaf\xd2\x55"), - .ciphertext = (uint8_t *) - "\x39\x80\xca\x0b\x3c\x00\xe8\x41\xeb\x06\xfa\xc4\x87\x2a\x27\x57\x85\x9e\x1c\xea\xa6\xef\xd9\x84\x62\x85\x93\xb4\x0c\xa1\xe1\x9c\x7d\x77\x3d\x00\xc1\x44\xc5\x25\xac\x61\x9d\x18\xc8\x4a\x3f\x47\x18\xe2\x44\x8b\x2f\xe3\x24\xd9\xcc\xda\x27\x10\xac\xad\xe2\x56", - STR(iv, iv_size, - "\xca\xfe\xba\xbe\xfa\xce\xdb\xad\xde\xca\xf8\x88"), - .tag_size = 16, - .tag = (void *) - "\x99\x24\xa7\xc8\x58\x73\x36\xbf\xb1\x18\x02\x4d\xb8\x67\x4a\x14"}, + { .compat_apis = 1, + STR(key, key_size, + "\xfe\xff\xe9\x92\x86\x65\x73\x1c\x6d\x6a\x8f\x94\x67\x30\x83\x08\xfe\xff\xe9\x92\x86\x65\x73\x1c"), + .auth = NULL, + .auth_size = 0, + STR(plaintext, plaintext_size, + "\xd9\x31\x32\x25\xf8\x84\x06\xe5\xa5\x59\x09\xc5\xaf\xf5\x26\x9a\x86\xa7\xa9\x53\x15\x34\xf7\xda\x2e\x4c\x30\x3d\x8a\x31\x8a\x72\x1c\x3c\x0c\x95\x95\x68\x09\x53\x2f\xcf\x0e\x24\x49\xa6\xb5\x25\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57\xba\x63\x7b\x39\x1a\xaf\xd2\x55"), + .ciphertext = + (uint8_t *)"\x39\x80\xca\x0b\x3c\x00\xe8\x41\xeb\x06\xfa\xc4\x87\x2a\x27\x57\x85\x9e\x1c\xea\xa6\xef\xd9\x84\x62\x85\x93\xb4\x0c\xa1\xe1\x9c\x7d\x77\x3d\x00\xc1\x44\xc5\x25\xac\x61\x9d\x18\xc8\x4a\x3f\x47\x18\xe2\x44\x8b\x2f\xe3\x24\xd9\xcc\xda\x27\x10\xac\xad\xe2\x56", + STR(iv, iv_size, "\xca\xfe\xba\xbe\xfa\xce\xdb\xad\xde\xca\xf8\x88"), + .tag_size = 16, + .tag = (void *)"\x99\x24\xa7\xc8\x58\x73\x36\xbf\xb1\x18\x02\x4d\xb8\x67\x4a\x14" }, }; const struct cipher_aead_vectors_st aes256_gcm_vectors[] = { - { - .compat_apis = 1, - STR(key, key_size, - "\xfe\xff\xe9\x92\x86\x65\x73\x1c\x6d\x6a\x8f\x94\x67\x30\x83\x08\xfe\xff\xe9\x92\x86\x65\x73\x1c\x6d\x6a\x8f\x94\x67\x30\x83\x08"), - .auth = NULL, - .auth_size = 0, - STR(plaintext, plaintext_size, - "\xd9\x31\x32\x25\xf8\x84\x06\xe5\xa5\x59\x09\xc5\xaf\xf5\x26\x9a\x86\xa7\xa9\x53\x15\x34\xf7\xda\x2e\x4c\x30\x3d\x8a\x31\x8a\x72\x1c\x3c\x0c\x95\x95\x68\x09\x53\x2f\xcf\x0e\x24\x49\xa6\xb5\x25\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57\xba\x63\x7b\x39\x1a\xaf\xd2\x55"), - .ciphertext = (uint8_t *) - "\x52\x2d\xc1\xf0\x99\x56\x7d\x07\xf4\x7f\x37\xa3\x2a\x84\x42\x7d\x64\x3a\x8c\xdc\xbf\xe5\xc0\xc9\x75\x98\xa2\xbd\x25\x55\xd1\xaa\x8c\xb0\x8e\x48\x59\x0d\xbb\x3d\xa7\xb0\x8b\x10\x56\x82\x88\x38\xc5\xf6\x1e\x63\x93\xba\x7a\x0a\xbc\xc9\xf6\x62\x89\x80\x15\xad", - STR(iv, iv_size, - "\xca\xfe\xba\xbe\xfa\xce\xdb\xad\xde\xca\xf8\x88"), - .tag_size = 16, - .tag = (void *) - "\xb0\x94\xda\xc5\xd9\x34\x71\xbd\xec\x1a\x50\x22\x70\xe3\xcc\x6c"}, + { .compat_apis = 1, + STR(key, key_size, + "\xfe\xff\xe9\x92\x86\x65\x73\x1c\x6d\x6a\x8f\x94\x67\x30\x83\x08\xfe\xff\xe9\x92\x86\x65\x73\x1c\x6d\x6a\x8f\x94\x67\x30\x83\x08"), + .auth = NULL, + .auth_size = 0, + STR(plaintext, plaintext_size, + "\xd9\x31\x32\x25\xf8\x84\x06\xe5\xa5\x59\x09\xc5\xaf\xf5\x26\x9a\x86\xa7\xa9\x53\x15\x34\xf7\xda\x2e\x4c\x30\x3d\x8a\x31\x8a\x72\x1c\x3c\x0c\x95\x95\x68\x09\x53\x2f\xcf\x0e\x24\x49\xa6\xb5\x25\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57\xba\x63\x7b\x39\x1a\xaf\xd2\x55"), + .ciphertext = + (uint8_t *)"\x52\x2d\xc1\xf0\x99\x56\x7d\x07\xf4\x7f\x37\xa3\x2a\x84\x42\x7d\x64\x3a\x8c\xdc\xbf\xe5\xc0\xc9\x75\x98\xa2\xbd\x25\x55\xd1\xaa\x8c\xb0\x8e\x48\x59\x0d\xbb\x3d\xa7\xb0\x8b\x10\x56\x82\x88\x38\xc5\xf6\x1e\x63\x93\xba\x7a\x0a\xbc\xc9\xf6\x62\x89\x80\x15\xad", + STR(iv, iv_size, "\xca\xfe\xba\xbe\xfa\xce\xdb\xad\xde\xca\xf8\x88"), + .tag_size = 16, + .tag = (void *)"\xb0\x94\xda\xc5\xd9\x34\x71\xbd\xec\x1a\x50\x22\x70\xe3\xcc\x6c" }, }; const struct cipher_aead_vectors_st aes256_ccm_vectors[] = { - { - .compat_apis = 0, - STR(key, key_size, - "\xfb\x76\x15\xb2\x3d\x80\x89\x1d\xd4\x70\x98\x0b\xc7\x95\x84\xc8\xb2\xfb\x64\xce\x60\x97\x8f\x4d\x17\xfc\xe4\x5a\x49\xe8\x30\xb7"), - .auth = NULL, - .auth_size = 0, - STR(plaintext, plaintext_size, - "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e"), - .ciphertext = (void *) - "\xcc\x88\x12\x61\xc6\xa7\xfa\x72\xb9\x6a\x17\x39\x17\x6b\x27\x7f", - STR(iv, iv_size, - "\xdb\xd1\xa3\x63\x60\x24\xb7\xb4\x02\xda\x7d\x6f"), - .tag_size = 16, - .tag = (void *) - "\x34\x72\xe1\x14\x5f\x2c\x0c\xbe\x14\x63\x49\x06\x2c\xf0\xe4\x23"}, - { - .compat_apis = 0, - STR(key, key_size, - "\xfb\x76\x15\xb2\x3d\x80\x89\x1d\xd4\x70\x98\x0b\xc7\x95\x84\xc8\xb2\xfb\x64\xce\x60\x97\x87\x8d\x17\xfc\xe4\x5a\x49\xe8\x30\xb7"), - STR(auth, auth_size, "\x36"), - STR(plaintext, plaintext_size, - "\xa9"), - .ciphertext = (void *) - "\x9d", - STR(iv, iv_size, - "\xdb\xd1\xa3\x63\x60\x24\xb7\xb4\x02\xda\x7d\x6f"), - .tag_size = 16, - .tag = (void *) - "\x32\x61\xb1\xcf\x93\x14\x31\xe9\x9a\x32\x80\x67\x38\xec\xbd\x2a"}, + { .compat_apis = 0, + STR(key, key_size, + "\xfb\x76\x15\xb2\x3d\x80\x89\x1d\xd4\x70\x98\x0b\xc7\x95\x84\xc8\xb2\xfb\x64\xce\x60\x97\x8f\x4d\x17\xfc\xe4\x5a\x49\xe8\x30\xb7"), + .auth = NULL, + .auth_size = 0, + STR(plaintext, plaintext_size, + "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e"), + .ciphertext = + (void *)"\xcc\x88\x12\x61\xc6\xa7\xfa\x72\xb9\x6a\x17\x39\x17\x6b\x27\x7f", + STR(iv, iv_size, "\xdb\xd1\xa3\x63\x60\x24\xb7\xb4\x02\xda\x7d\x6f"), + .tag_size = 16, + .tag = (void *)"\x34\x72\xe1\x14\x5f\x2c\x0c\xbe\x14\x63\x49\x06\x2c\xf0\xe4\x23" }, + { .compat_apis = 0, + STR(key, key_size, + "\xfb\x76\x15\xb2\x3d\x80\x89\x1d\xd4\x70\x98\x0b\xc7\x95\x84\xc8\xb2\xfb\x64\xce\x60\x97\x87\x8d\x17\xfc\xe4\x5a\x49\xe8\x30\xb7"), + STR(auth, auth_size, "\x36"), + STR(plaintext, plaintext_size, "\xa9"), + .ciphertext = (void *)"\x9d", + STR(iv, iv_size, "\xdb\xd1\xa3\x63\x60\x24\xb7\xb4\x02\xda\x7d\x6f"), + .tag_size = 16, + .tag = (void *)"\x32\x61\xb1\xcf\x93\x14\x31\xe9\x9a\x32\x80\x67\x38\xec\xbd\x2a" }, }; const struct cipher_aead_vectors_st aes128_ccm_vectors[] = { - { - .compat_apis = 0, - STR(key, key_size, - "\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF"), - STR(auth, auth_size, - "\x08\xD0\x84\x21\x43\x01\x00\x00\x00\x00\x48\xDE\xAC\x02\x05\x00\x00\x00\x55\xCF\x00\x00\x51\x52\x53\x54"), - .plaintext = NULL, - .plaintext_size = 0, - STR(iv, iv_size, - "\xAC\xDE\x48\x00\x00\x00\x00\x01\x00\x00\x00\x05\x02"), - .tag_size = 8, - .tag = (void *) - "\x22\x3B\xC1\xEC\x84\x1A\xB5\x53"}, - { - .compat_apis = 0, - STR(key, key_size, - "\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"), - STR(auth, auth_size, "\x00\x01\x02\x03\x04\x05\x06\x07"), - STR(plaintext, plaintext_size, - "\x20\x21\x22\x23"), - .ciphertext = (void *) - "\x71\x62\x01\x5b", - STR(iv, iv_size, - "\x10\x11\x12\x13\x14\x15\x16"), - .tag_size = 4, - .tag = (void *) - "\x4d\xac\x25\x5d"}, + { .compat_apis = 0, + STR(key, key_size, + "\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF"), + STR(auth, auth_size, + "\x08\xD0\x84\x21\x43\x01\x00\x00\x00\x00\x48\xDE\xAC\x02\x05\x00\x00\x00\x55\xCF\x00\x00\x51\x52\x53\x54"), + .plaintext = NULL, + .plaintext_size = 0, + STR(iv, iv_size, + "\xAC\xDE\x48\x00\x00\x00\x00\x01\x00\x00\x00\x05\x02"), + .tag_size = 8, + .tag = (void *)"\x22\x3B\xC1\xEC\x84\x1A\xB5\x53" }, + { .compat_apis = 0, + STR(key, key_size, + "\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"), + STR(auth, auth_size, "\x00\x01\x02\x03\x04\x05\x06\x07"), + STR(plaintext, plaintext_size, "\x20\x21\x22\x23"), + .ciphertext = (void *)"\x71\x62\x01\x5b", + STR(iv, iv_size, "\x10\x11\x12\x13\x14\x15\x16"), + .tag_size = 4, + .tag = (void *)"\x4d\xac\x25\x5d" }, /* from rfc3610 */ - { - .compat_apis = 0, - STR(key, key_size, - "\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF"), - STR(auth, auth_size, "\x00\x01\x02\x03\x04\x05\x06\x07"), - STR(plaintext, plaintext_size, - "\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E"), - .ciphertext = (void *) - "\x01\x35\xD1\xB2\xC9\x5F\x41\xD5\xD1\xD4\xFE\xC1\x85\xD1\x66\xB8\x09\x4E\x99\x9D\xFE\xD9\x6C", - STR(iv, iv_size, - "\x00\x00\x00\x09\x08\x07\x06\xA0\xA1\xA2\xA3\xA4\xA5"), - .tag_size = 10, - .tag = (void *) - "\x04\x8C\x56\x60\x2C\x97\xAC\xBB\x74\x90"}, - { - .compat_apis = 0, - STR(key, key_size, - "\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF"), - STR(auth, auth_size, "\x00\x01\x02\x03\x04\x05\x06\x07"), - STR(plaintext, plaintext_size, - "\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E"), - .ciphertext = (void *) - "\x58\x8C\x97\x9A\x61\xC6\x63\xD2\xF0\x66\xD0\xC2\xC0\xF9\x89\x80\x6D\x5F\x6B\x61\xDA\xC3\x84", - STR(iv, iv_size, - "\x00\x00\x00\x03\x02\x01\x00\xA0\xA1\xA2\xA3\xA4\xA5"), - .tag_size = 8, - .tag = (void *) - "\x17\xE8\xD1\x2C\xFD\xF9\x26\xE0"}, + { .compat_apis = 0, + STR(key, key_size, + "\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF"), + STR(auth, auth_size, "\x00\x01\x02\x03\x04\x05\x06\x07"), + STR(plaintext, plaintext_size, + "\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E"), + .ciphertext = + (void *)"\x01\x35\xD1\xB2\xC9\x5F\x41\xD5\xD1\xD4\xFE\xC1\x85\xD1\x66\xB8\x09\x4E\x99\x9D\xFE\xD9\x6C", + STR(iv, iv_size, + "\x00\x00\x00\x09\x08\x07\x06\xA0\xA1\xA2\xA3\xA4\xA5"), + .tag_size = 10, + .tag = (void *)"\x04\x8C\x56\x60\x2C\x97\xAC\xBB\x74\x90" }, + { .compat_apis = 0, + STR(key, key_size, + "\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF"), + STR(auth, auth_size, "\x00\x01\x02\x03\x04\x05\x06\x07"), + STR(plaintext, plaintext_size, + "\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E"), + .ciphertext = + (void *)"\x58\x8C\x97\x9A\x61\xC6\x63\xD2\xF0\x66\xD0\xC2\xC0\xF9\x89\x80\x6D\x5F\x6B\x61\xDA\xC3\x84", + STR(iv, iv_size, + "\x00\x00\x00\x03\x02\x01\x00\xA0\xA1\xA2\xA3\xA4\xA5"), + .tag_size = 8, + .tag = (void *)"\x17\xE8\xD1\x2C\xFD\xF9\x26\xE0" }, }; const struct cipher_vectors_st aes128_cbc_vectors[] = { { - STR(key, key_size, - "\x2b\x7e\x15\x16\x28\xae\xd2\xa6\xab\xf7\x15\x88\x09\xcf\x4f\x3c"), - STR(plaintext, plaintext_size, - "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96\xe9\x3d\x7e\x11\x73\x93\x17\x2a"), - .ciphertext = (uint8_t *) - "\x76\x49\xab\xac\x81\x19\xb2\x46\xce\xe9\x8e\x9b\x12\xe9\x19\x7d", - STR(iv, iv_size, - "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F"), - }, - { - STR(key, key_size, - "\x2b\x7e\x15\x16\x28\xae\xd2\xa6\xab\xf7\x15\x88\x09\xcf\x4f\x3c"), - STR(plaintext, plaintext_size, - "\xae\x2d\x8a\x57\x1e\x03\xac\x9c\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"), - .ciphertext = (uint8_t *) - "\x50\x86\xcb\x9b\x50\x72\x19\xee\x95\xdb\x11\x3a\x91\x76\x78\xb2", - STR(iv, iv_size, - "\x76\x49\xab\xac\x81\x19\xb2\x46\xce\xe9\x8e\x9b\x12\xe9\x19\x7d"), - }, + STR(key, key_size, + "\x2b\x7e\x15\x16\x28\xae\xd2\xa6\xab\xf7\x15\x88\x09\xcf\x4f\x3c"), + STR(plaintext, plaintext_size, + "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96\xe9\x3d\x7e\x11\x73\x93\x17\x2a"), + .ciphertext = + (uint8_t *)"\x76\x49\xab\xac\x81\x19\xb2\x46\xce\xe9\x8e\x9b\x12\xe9\x19\x7d", + STR(iv, iv_size, + "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F"), + }, + { + STR(key, key_size, + "\x2b\x7e\x15\x16\x28\xae\xd2\xa6\xab\xf7\x15\x88\x09\xcf\x4f\x3c"), + STR(plaintext, plaintext_size, + "\xae\x2d\x8a\x57\x1e\x03\xac\x9c\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"), + .ciphertext = + (uint8_t *)"\x50\x86\xcb\x9b\x50\x72\x19\xee\x95\xdb\x11\x3a\x91\x76\x78\xb2", + STR(iv, iv_size, + "\x76\x49\xab\xac\x81\x19\xb2\x46\xce\xe9\x8e\x9b\x12\xe9\x19\x7d"), + }, }; const struct cipher_vectors_st aes192_cbc_vectors[] = { { - STR(key, key_size, - "\x8e\x73\xb0\xf7\xda\x0e\x64\x52\xc8\x10\xf3\x2b\x80\x90\x79\xe5\x62\xf8\xea\xd2\x52\x2c\x6b\x7b"), - STR(plaintext, plaintext_size, - "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96\xe9\x3d\x7e\x11\x73\x93\x17\x2a"), - .ciphertext = (uint8_t *) - "\x4f\x02\x1d\xb2\x43\xbc\x63\x3d\x71\x78\x18\x3a\x9f\xa0\x71\xe8", - STR(iv, iv_size, - "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F"), - }, - { - STR(key, key_size, - "\x8e\x73\xb0\xf7\xda\x0e\x64\x52\xc8\x10\xf3\x2b\x80\x90\x79\xe5\x62\xf8\xea\xd2\x52\x2c\x6b\x7b"), - STR(plaintext, plaintext_size, - "\xae\x2d\x8a\x57\x1e\x03\xac\x9c\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"), - .ciphertext = (uint8_t *) - "\xb4\xd9\xad\xa9\xad\x7d\xed\xf4\xe5\xe7\x38\x76\x3f\x69\x14\x5a", - STR(iv, iv_size, - "\x4F\x02\x1D\xB2\x43\xBC\x63\x3D\x71\x78\x18\x3A\x9F\xA0\x71\xE8"), - }, + STR(key, key_size, + "\x8e\x73\xb0\xf7\xda\x0e\x64\x52\xc8\x10\xf3\x2b\x80\x90\x79\xe5\x62\xf8\xea\xd2\x52\x2c\x6b\x7b"), + STR(plaintext, plaintext_size, + "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96\xe9\x3d\x7e\x11\x73\x93\x17\x2a"), + .ciphertext = + (uint8_t *)"\x4f\x02\x1d\xb2\x43\xbc\x63\x3d\x71\x78\x18\x3a\x9f\xa0\x71\xe8", + STR(iv, iv_size, + "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F"), + }, + { + STR(key, key_size, + "\x8e\x73\xb0\xf7\xda\x0e\x64\x52\xc8\x10\xf3\x2b\x80\x90\x79\xe5\x62\xf8\xea\xd2\x52\x2c\x6b\x7b"), + STR(plaintext, plaintext_size, + "\xae\x2d\x8a\x57\x1e\x03\xac\x9c\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"), + .ciphertext = + (uint8_t *)"\xb4\xd9\xad\xa9\xad\x7d\xed\xf4\xe5\xe7\x38\x76\x3f\x69\x14\x5a", + STR(iv, iv_size, + "\x4F\x02\x1D\xB2\x43\xBC\x63\x3D\x71\x78\x18\x3A\x9F\xA0\x71\xE8"), + }, }; const struct cipher_vectors_st aes256_cbc_vectors[] = { { - STR(key, key_size, - "\x60\x3d\xeb\x10\x15\xca\x71\xbe\x2b\x73\xae\xf0\x85\x7d\x77\x81\x1f\x35\x2c\x07\x3b\x61\x08\xd7\x2d\x98\x10\xa3\x09\x14\xdf\xf4"), - STR(plaintext, plaintext_size, - "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96\xe9\x3d\x7e\x11\x73\x93\x17\x2a"), - .ciphertext = (uint8_t *) - "\xF5\x8C\x4C\x04\xD6\xE5\xF1\xBA\x77\x9E\xAB\xFB\x5F\x7B\xFB\xD6", - STR(iv, iv_size, - "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F"), - }, - { - STR(key, key_size, - "\x60\x3d\xeb\x10\x15\xca\x71\xbe\x2b\x73\xae\xf0\x85\x7d\x77\x81\x1f\x35\x2c\x07\x3b\x61\x08\xd7\x2d\x98\x10\xa3\x09\x14\xdf\xf4"), - STR(plaintext, plaintext_size, - "\xae\x2d\x8a\x57\x1e\x03\xac\x9c\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"), - .ciphertext = (uint8_t *) - "\x9c\xfc\x4e\x96\x7e\xdb\x80\x8d\x67\x9f\x77\x7b\xc6\x70\x2c\x7d", - STR(iv, iv_size, - "\xF5\x8C\x4C\x04\xD6\xE5\xF1\xBA\x77\x9E\xAB\xFB\x5F\x7B\xFB\xD6"), - }, + STR(key, key_size, + "\x60\x3d\xeb\x10\x15\xca\x71\xbe\x2b\x73\xae\xf0\x85\x7d\x77\x81\x1f\x35\x2c\x07\x3b\x61\x08\xd7\x2d\x98\x10\xa3\x09\x14\xdf\xf4"), + STR(plaintext, plaintext_size, + "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96\xe9\x3d\x7e\x11\x73\x93\x17\x2a"), + .ciphertext = + (uint8_t *)"\xF5\x8C\x4C\x04\xD6\xE5\xF1\xBA\x77\x9E\xAB\xFB\x5F\x7B\xFB\xD6", + STR(iv, iv_size, + "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F"), + }, + { + STR(key, key_size, + "\x60\x3d\xeb\x10\x15\xca\x71\xbe\x2b\x73\xae\xf0\x85\x7d\x77\x81\x1f\x35\x2c\x07\x3b\x61\x08\xd7\x2d\x98\x10\xa3\x09\x14\xdf\xf4"), + STR(plaintext, plaintext_size, + "\xae\x2d\x8a\x57\x1e\x03\xac\x9c\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"), + .ciphertext = + (uint8_t *)"\x9c\xfc\x4e\x96\x7e\xdb\x80\x8d\x67\x9f\x77\x7b\xc6\x70\x2c\x7d", + STR(iv, iv_size, + "\xF5\x8C\x4C\x04\xD6\xE5\xF1\xBA\x77\x9E\xAB\xFB\x5F\x7B\xFB\xD6"), + }, }; const struct cipher_vectors_st tdes_cbc_vectors[] = { -/* First 2 from https://www.cosic.esat.kuleuven.be/nessie/testvectors/bc/des/Triple-Des-3-Key-192-64.unverified.test-vectors */ - { - STR(key, key_size, - "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17"), - STR(plaintext, plaintext_size, - "\x98\x26\x62\x60\x55\x53\x24\x4D"), - .ciphertext = (uint8_t *) - "\x00\x11\x22\x33\x44\x55\x66\x77", - STR(iv, iv_size, "\x00\x00\x00\x00\x00\x00\x00\x00"), - }, - { - STR(key, key_size, - "\x2B\xD6\x45\x9F\x82\xC5\xB3\x00\x95\x2C\x49\x10\x48\x81\xFF\x48\x2B\xD6\x45\x9F\x82\xC5\xB3\x00"), - STR(plaintext, plaintext_size, - "\x85\x98\x53\x8A\x8E\xCF\x11\x7D"), - .ciphertext = (uint8_t *) - "\xEA\x02\x47\x14\xAD\x5C\x4D\x84", - STR(iv, iv_size, "\x00\x00\x00\x00\x00\x00\x00\x00"), - }, -}; - -const struct cipher_vectors_st arcfour_vectors[] = { /* RFC6229 */ - { - STR(key, key_size, - "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18"), - STR(plaintext, plaintext_size, - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), - .ciphertext = (uint8_t *) - "\x05\x95\xe5\x7f\xe5\xf0\xbb\x3c\x70\x6e\xda\xc8\xa4\xb2\xdb\x11", - .iv = NULL, - .iv_size = 0}, - { - STR(key, key_size, - "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"), - STR(plaintext, plaintext_size, - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), - .ciphertext = (uint8_t *) - "\xea\xa6\xbd\x25\x88\x0b\xf9\x3d\x3f\x5d\x1e\x4c\xa2\x61\x1d\x91", - .iv = NULL, - .iv_size = 0}, - { - STR(key, key_size, - "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"), - STR(plaintext, plaintext_size, - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), - .ciphertext = (uint8_t *) - "\x9a\xc7\xcc\x9a\x60\x9d\x1e\xf7\xb2\x93\x28\x99\xcd\xe4\x1b\x97", - .iv = NULL, - .iv_size = 0}, -}; - -const struct cipher_vectors_st aes128_cfb8_vectors[] = { /* NIST 800-38a */ - { - STR(key, key_size, - "\x2b\x7e\x15\x16\x28\xae\xd2\xa6\xab\xf7\x15\x88\x09\xcf\x4f\x3c"), - STR(plaintext, plaintext_size, - "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96\xe9\x3d\x7e\x11\x73\x93\x17\x2a" - "\xae\x2d"), - .ciphertext = (uint8_t *) - "\x3b\x79\x42\x4c\x9c\x0d\xd4\x36\xba\xce\x9e\x0e\xd4\x58\x6a\x4f" - "\x32\xb9", - STR(iv, iv_size, - "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"), - /* the least significant 16 bytes of ciphertext */ - STR(internal_iv, internal_iv_size, - "\x42\x4c\x9c\x0d\xd4\x36\xba\xce\x9e\x0e\xd4\x58\x6a\x4f\x32\xb9"), - }, -}; - -const struct cipher_vectors_st aes192_cfb8_vectors[] = { /* NIST 800-38a */ - { - STR(key, key_size, - "\x8e\x73\xb0\xf7\xda\x0e\x64\x52\xc8\x10\xf3\x2b\x80\x90\x79\xe5" - "\x62\xf8\xea\xd2\x52\x2c\x6b\x7b"), - STR(plaintext, plaintext_size, - "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96\xe9\x3d\x7e\x11\x73\x93\x17\x2a" - "\xae\x2d"), - .ciphertext = (uint8_t *) - "\xcd\xa2\x52\x1e\xf0\xa9\x05\xca\x44\xcd\x05\x7c\xbf\x0d\x47\xa0" - "\x67\x8a", - STR(iv, iv_size, - "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"), - /* the least significant 16 bytes of ciphertext */ - STR(internal_iv, internal_iv_size, - "\x52\x1e\xf0\xa9\x05\xca\x44\xcd\x05\x7c\xbf\x0d\x47\xa0\x67\x8a"), - }, -}; - -const struct cipher_vectors_st aes256_cfb8_vectors[] = { /* NIST 800-38a */ - { - STR(key, key_size, - "\x60\x3d\xeb\x10\x15\xca\x71\xbe\x2b\x73\xae\xf0\x85\x7d\x77\x81" - "\x1f\x35\x2c\x07\x3b\x61\x08\xd7\x2d\x98\x10\xa3\x09\x14\xdf\xf4"), - STR(plaintext, plaintext_size, - "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96\xe9\x3d\x7e\x11\x73\x93\x17\x2a" - "\xae\x2d"), - .ciphertext = (uint8_t *) - "\xdc\x1f\x1a\x85\x20\xa6\x4d\xb5\x5f\xcc\x8a\xc5\x54\x84\x4e\x88" - "\x97\x00", - STR(iv, iv_size, - "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"), - /* the least significant 16 bytes of ciphertext */ - STR(internal_iv, internal_iv_size, - "\x1a\x85\x20\xa6\x4d\xb5\x5f\xcc\x8a\xc5\x54\x84\x4e\x88\x97\x00"), - }, + /* First 2 from https://www.cosic.esat.kuleuven.be/nessie/testvectors/bc/des/Triple-Des-3-Key-192-64.unverified.test-vectors */ + { + STR(key, key_size, + "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17"), + STR(plaintext, plaintext_size, + "\x98\x26\x62\x60\x55\x53\x24\x4D"), + .ciphertext = (uint8_t *)"\x00\x11\x22\x33\x44\x55\x66\x77", + STR(iv, iv_size, "\x00\x00\x00\x00\x00\x00\x00\x00"), + }, + { + STR(key, key_size, + "\x2B\xD6\x45\x9F\x82\xC5\xB3\x00\x95\x2C\x49\x10\x48\x81\xFF\x48\x2B\xD6\x45\x9F\x82\xC5\xB3\x00"), + STR(plaintext, plaintext_size, + "\x85\x98\x53\x8A\x8E\xCF\x11\x7D"), + .ciphertext = (uint8_t *)"\xEA\x02\x47\x14\xAD\x5C\x4D\x84", + STR(iv, iv_size, "\x00\x00\x00\x00\x00\x00\x00\x00"), + }, +}; + +const struct cipher_vectors_st arcfour_vectors[] = { + /* RFC6229 */ + { STR(key, key_size, + "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18"), + STR(plaintext, plaintext_size, + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), + .ciphertext = + (uint8_t *)"\x05\x95\xe5\x7f\xe5\xf0\xbb\x3c\x70\x6e\xda\xc8\xa4\xb2\xdb\x11", + .iv = NULL, .iv_size = 0 }, + { STR(key, key_size, + "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"), + STR(plaintext, plaintext_size, + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), + .ciphertext = + (uint8_t *)"\xea\xa6\xbd\x25\x88\x0b\xf9\x3d\x3f\x5d\x1e\x4c\xa2\x61\x1d\x91", + .iv = NULL, .iv_size = 0 }, + { STR(key, key_size, + "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"), + STR(plaintext, plaintext_size, + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), + .ciphertext = + (uint8_t *)"\x9a\xc7\xcc\x9a\x60\x9d\x1e\xf7\xb2\x93\x28\x99\xcd\xe4\x1b\x97", + .iv = NULL, .iv_size = 0 }, +}; + +const struct cipher_vectors_st aes128_cfb8_vectors[] = { + /* NIST 800-38a */ + { + STR(key, key_size, + "\x2b\x7e\x15\x16\x28\xae\xd2\xa6\xab\xf7\x15\x88\x09\xcf\x4f\x3c"), + STR(plaintext, plaintext_size, + "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96\xe9\x3d\x7e\x11\x73\x93\x17\x2a" + "\xae\x2d"), + .ciphertext = + (uint8_t *)"\x3b\x79\x42\x4c\x9c\x0d\xd4\x36\xba\xce\x9e\x0e\xd4\x58\x6a\x4f" + "\x32\xb9", + STR(iv, iv_size, + "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"), + /* the least significant 16 bytes of ciphertext */ + STR(internal_iv, internal_iv_size, + "\x42\x4c\x9c\x0d\xd4\x36\xba\xce\x9e\x0e\xd4\x58\x6a\x4f\x32\xb9"), + }, +}; + +const struct cipher_vectors_st aes192_cfb8_vectors[] = { + /* NIST 800-38a */ + { + STR(key, key_size, + "\x8e\x73\xb0\xf7\xda\x0e\x64\x52\xc8\x10\xf3\x2b\x80\x90\x79\xe5" + "\x62\xf8\xea\xd2\x52\x2c\x6b\x7b"), + STR(plaintext, plaintext_size, + "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96\xe9\x3d\x7e\x11\x73\x93\x17\x2a" + "\xae\x2d"), + .ciphertext = + (uint8_t *)"\xcd\xa2\x52\x1e\xf0\xa9\x05\xca\x44\xcd\x05\x7c\xbf\x0d\x47\xa0" + "\x67\x8a", + STR(iv, iv_size, + "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"), + /* the least significant 16 bytes of ciphertext */ + STR(internal_iv, internal_iv_size, + "\x52\x1e\xf0\xa9\x05\xca\x44\xcd\x05\x7c\xbf\x0d\x47\xa0\x67\x8a"), + }, +}; + +const struct cipher_vectors_st aes256_cfb8_vectors[] = { + /* NIST 800-38a */ + { + STR(key, key_size, + "\x60\x3d\xeb\x10\x15\xca\x71\xbe\x2b\x73\xae\xf0\x85\x7d\x77\x81" + "\x1f\x35\x2c\x07\x3b\x61\x08\xd7\x2d\x98\x10\xa3\x09\x14\xdf\xf4"), + STR(plaintext, plaintext_size, + "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96\xe9\x3d\x7e\x11\x73\x93\x17\x2a" + "\xae\x2d"), + .ciphertext = + (uint8_t *)"\xdc\x1f\x1a\x85\x20\xa6\x4d\xb5\x5f\xcc\x8a\xc5\x54\x84\x4e\x88" + "\x97\x00", + STR(iv, iv_size, + "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"), + /* the least significant 16 bytes of ciphertext */ + STR(internal_iv, internal_iv_size, + "\x1a\x85\x20\xa6\x4d\xb5\x5f\xcc\x8a\xc5\x54\x84\x4e\x88\x97\x00"), + }, }; /* GOST 28147-89 vectors come from the testsuite contributed to OpenSSL by @@ -454,880 +411,856 @@ const struct cipher_vectors_st aes256_cfb8_vectors[] = { /* NIST 800-38a */ * TC26Z is calculated using Nettle */ const struct cipher_vectors_st gost28147_cpa_cfb_vectors[] = { { - STR(key, key_size, - "\x8d\x5a\x2c\x83\xa7\xc7\x0a\x61\xd6\x1b\x34\xb5\x1f\xdf\x42\x68" - "\x66\x71\xa3\x5d\x87\x4c\xfd\x84\x99\x36\x63\xb6\x1e\xd6\x0d\xad"), - STR(plaintext, plaintext_size, - "\xd2\xfd\xf8\x3a\xc1\xb4\x39\x23\x2e\xaa\xcc\x98\x0a\x02\xda\x33"), - .ciphertext = (uint8_t *) - "\x88\xb7\x75\x16\x74\xa5\xee\x2d\x14\xfe\x91\x67\xd0\x5c\xcc\x40", - STR(iv, iv_size, - "\x46\x60\x6f\x0d\x88\x34\x23\x5a"), - }, + STR(key, key_size, + "\x8d\x5a\x2c\x83\xa7\xc7\x0a\x61\xd6\x1b\x34\xb5\x1f\xdf\x42\x68" + "\x66\x71\xa3\x5d\x87\x4c\xfd\x84\x99\x36\x63\xb6\x1e\xd6\x0d\xad"), + STR(plaintext, plaintext_size, + "\xd2\xfd\xf8\x3a\xc1\xb4\x39\x23\x2e\xaa\xcc\x98\x0a\x02\xda\x33"), + .ciphertext = + (uint8_t *)"\x88\xb7\x75\x16\x74\xa5\xee\x2d\x14\xfe\x91\x67\xd0\x5c\xcc\x40", + STR(iv, iv_size, "\x46\x60\x6f\x0d\x88\x34\x23\x5a"), + }, }; const struct cipher_vectors_st gost28147_cpb_cfb_vectors[] = { { - STR(key, key_size, - "\x48\x0c\x74\x1b\x02\x6b\x55\xd5\xb6\x6d\xd7\x1d\x40\x48\x05\x6b" - "\x6d\xeb\x3c\x29\x0f\x84\x80\x23\xee\x0d\x47\x77\xe3\xfe\x61\xc9"), - STR(plaintext, plaintext_size, - "\x8c\x9c\x44\x35\xfb\xe9\xa5\xa3\xa0\xae\x28\x56\x91\x10\x8e\x1e" - "\xd2\xbb\x18\x53\x81\x27\x0d\xa6\x68\x59\x36\xc5\x81\x62\x9a\x8e" - "\x7d\x50\xf1\x6f\x97\x62\x29\xec\x80\x51\xe3\x7d\x6c\xc4\x07\x95" - "\x28\x63\xdc\xb4\xb9\x2d\xb8\x13\xb1\x05\xb5\xf9\xeb\x75\x37"), - .ciphertext = (uint8_t *) - "\x23\xc6\x7f\x20\xa1\x23\x58\xbc\x7b\x05\xdb\x21\x15\xcf\x96\x41" - "\xc7\x88\xef\x76\x5c\x49\xdb\x42\xbf\xf3\xc0\xf5\xbd\x5d\xd9\x8e" - "\xaf\x3d\xf4\xe4\xda\x88\xbd\xbc\x47\x5d\x76\x07\xc9\x5f\x54\x1d" - "\x1d\x6a\xa1\x2e\x18\xd6\x60\x84\x02\x18\x37\x92\x92\x15\xab", - STR(iv, iv_size, - "\x1f\x3f\x82\x1e\x0d\xd8\x1e\x22"), - }, + STR(key, key_size, + "\x48\x0c\x74\x1b\x02\x6b\x55\xd5\xb6\x6d\xd7\x1d\x40\x48\x05\x6b" + "\x6d\xeb\x3c\x29\x0f\x84\x80\x23\xee\x0d\x47\x77\xe3\xfe\x61\xc9"), + STR(plaintext, plaintext_size, + "\x8c\x9c\x44\x35\xfb\xe9\xa5\xa3\xa0\xae\x28\x56\x91\x10\x8e\x1e" + "\xd2\xbb\x18\x53\x81\x27\x0d\xa6\x68\x59\x36\xc5\x81\x62\x9a\x8e" + "\x7d\x50\xf1\x6f\x97\x62\x29\xec\x80\x51\xe3\x7d\x6c\xc4\x07\x95" + "\x28\x63\xdc\xb4\xb9\x2d\xb8\x13\xb1\x05\xb5\xf9\xeb\x75\x37"), + .ciphertext = + (uint8_t *)"\x23\xc6\x7f\x20\xa1\x23\x58\xbc\x7b\x05\xdb\x21\x15\xcf\x96\x41" + "\xc7\x88\xef\x76\x5c\x49\xdb\x42\xbf\xf3\xc0\xf5\xbd\x5d\xd9\x8e" + "\xaf\x3d\xf4\xe4\xda\x88\xbd\xbc\x47\x5d\x76\x07\xc9\x5f\x54\x1d" + "\x1d\x6a\xa1\x2e\x18\xd6\x60\x84\x02\x18\x37\x92\x92\x15\xab", + STR(iv, iv_size, "\x1f\x3f\x82\x1e\x0d\xd8\x1e\x22"), + }, }; const struct cipher_vectors_st gost28147_cpc_cfb_vectors[] = { { - STR(key, key_size, - "\x77\xc3\x45\x8e\xf6\x42\xe7\x04\x8e\xfc\x08\xe4\x70\x96\xd6\x05" - "\x93\x59\x02\x6d\x6f\x97\xca\xe9\xcf\x89\x44\x4b\xde\x6c\x22\x1d"), - STR(plaintext, plaintext_size, - "\x07\x9c\x91\xbe"), - .ciphertext = (uint8_t *) - "\x19\x35\x81\x34", - STR(iv, iv_size, - "\x43\x7c\x3e\x8e\x2f\x2a\x00\x98"), - }, + STR(key, key_size, + "\x77\xc3\x45\x8e\xf6\x42\xe7\x04\x8e\xfc\x08\xe4\x70\x96\xd6\x05" + "\x93\x59\x02\x6d\x6f\x97\xca\xe9\xcf\x89\x44\x4b\xde\x6c\x22\x1d"), + STR(plaintext, plaintext_size, "\x07\x9c\x91\xbe"), + .ciphertext = (uint8_t *)"\x19\x35\x81\x34", + STR(iv, iv_size, "\x43\x7c\x3e\x8e\x2f\x2a\x00\x98"), + }, }; const struct cipher_vectors_st gost28147_cpd_cfb_vectors[] = { { - STR(key, key_size, - "\x38\x9f\xe8\x37\xff\x9c\x5d\x29\xfc\x48\x55\xa0\x87\xea\xe8\x40" - "\x20\x87\x5b\xb2\x01\x15\x55\xa7\xe3\x2d\xcb\x3d\xd6\x59\x04\x73"), - STR(plaintext, plaintext_size, - "\x2f\x31\xd8\x83\xb4\x20\xe8\x6e\xda"), - .ciphertext = (uint8_t *) - "\x6d\xa4\xed\x40\x08\x88\x71\xad\x16", - STR(iv, iv_size, - "\xc5\xa2\xd2\x1f\x2f\xdf\xb8\xeb"), - }, + STR(key, key_size, + "\x38\x9f\xe8\x37\xff\x9c\x5d\x29\xfc\x48\x55\xa0\x87\xea\xe8\x40" + "\x20\x87\x5b\xb2\x01\x15\x55\xa7\xe3\x2d\xcb\x3d\xd6\x59\x04\x73"), + STR(plaintext, plaintext_size, + "\x2f\x31\xd8\x83\xb4\x20\xe8\x6e\xda"), + .ciphertext = (uint8_t *)"\x6d\xa4\xed\x40\x08\x88\x71\xad\x16", + STR(iv, iv_size, "\xc5\xa2\xd2\x1f\x2f\xdf\xb8\xeb"), + }, }; const struct cipher_vectors_st gost28147_tc26z_cfb_vectors[] = { { - STR(key, key_size, - "\x8d\x5a\x2c\x83\xa7\xc7\x0a\x61\xd6\x1b\x34\xb5\x1f\xdf\x42\x68" - "\x66\x71\xa3\x5d\x87\x4c\xfd\x84\x99\x36\x63\xb6\x1e\xd6\x0d\xad"), - STR(plaintext, plaintext_size, - "\xd2\xfd\xf8\x3a\xc1\xb4\x39\x23\x2e\xaa\xcc\x98\x0a\x02\xda\x33"), - .ciphertext = (uint8_t *) - "\xed\xa7\xf1\x41\x01\x9c\xbd\xcd\x44\x6b\x00\x96\x87\xf7\xc7\xe6", - STR(iv, iv_size, - "\x46\x60\x6f\x0d\x88\x34\x23\x5a"), - }, -}; - -const struct cipher_vectors_st gost28147_tc26z_cnt_vectors[] = { - { - STR(key, key_size, - "\x59\x9f\x84\xba\xc3\xf3\xd2\xf1\x60\xe1\xe3\xf2\x6a\x96\x1a\xf9" - "\x9c\x48\xb2\x4e\xbc\xbb\xbf\x7c\xd8\xf3\xac\xcd\x96\x8d\x28\x6a"), - STR(plaintext, plaintext_size, - "\x90\xa2\x39\x66\xae\x01\xb9\xa3\x52\x4e\xc8\xed\x6c\xdd\x88\x30"), - .ciphertext = (uint8_t *) - "\xe8\xb1\x4f\xc7\x30\xdc\x25\xbb\x36\xba\x64\x3c\x17\xdb\xff\x99", - STR(iv, iv_size, - "\x8d\xaf\xa8\xd1\x58\xed\x05\x8d"), - } -}; + STR(key, key_size, + "\x8d\x5a\x2c\x83\xa7\xc7\x0a\x61\xd6\x1b\x34\xb5\x1f\xdf\x42\x68" + "\x66\x71\xa3\x5d\x87\x4c\xfd\x84\x99\x36\x63\xb6\x1e\xd6\x0d\xad"), + STR(plaintext, plaintext_size, + "\xd2\xfd\xf8\x3a\xc1\xb4\x39\x23\x2e\xaa\xcc\x98\x0a\x02\xda\x33"), + .ciphertext = + (uint8_t *)"\xed\xa7\xf1\x41\x01\x9c\xbd\xcd\x44\x6b\x00\x96\x87\xf7\xc7\xe6", + STR(iv, iv_size, "\x46\x60\x6f\x0d\x88\x34\x23\x5a"), + }, +}; + +const struct cipher_vectors_st gost28147_tc26z_cnt_vectors[] = { { + STR(key, key_size, + "\x59\x9f\x84\xba\xc3\xf3\xd2\xf1\x60\xe1\xe3\xf2\x6a\x96\x1a\xf9" + "\x9c\x48\xb2\x4e\xbc\xbb\xbf\x7c\xd8\xf3\xac\xcd\x96\x8d\x28\x6a"), + STR(plaintext, plaintext_size, + "\x90\xa2\x39\x66\xae\x01\xb9\xa3\x52\x4e\xc8\xed\x6c\xdd\x88\x30"), + .ciphertext = + (uint8_t *)"\xe8\xb1\x4f\xc7\x30\xdc\x25\xbb\x36\xba\x64\x3c\x17\xdb\xff\x99", + STR(iv, iv_size, "\x8d\xaf\xa8\xd1\x58\xed\x05\x8d"), +} }; /* Manually calculated to overcome section size differences between TLS cipher * and test vectors defined in recommendation for standardization * R 1323565.1.017-2018. TLS uses 1024 byte sections, we need more to have at * least one rekeying. */ -const struct cipher_vectors_st magma_ctr_acpkm_vectors[] = { - { - STR(key, key_size, - "\x88\x99\xaa\xbb\xcc\xdd\xee\xff\x00\x11\x22\x33\x44\x55\x66\x77" - "\xfe\xdc\xba\x98\x76\x54\x32\x10\x01\x23\x45\x67\x89\xab\xcd\xef"), - STR(plaintext, plaintext_size, - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88"), - .ciphertext = (uint8_t *) - "\x2a\xb8\x1d\xee\xeb\x1e\x4c\xab\x68\xe1\x04\xc4\xbd\x6b\x94\xea" - "\xc0\x4d\xdb\x07\xea\x92\x8f\xa2\x22\x0d\x97\x91\x83\x20\x78\x6b" - "\x17\x0d\x8e\xaf\x6e\x3c\xa1\xab\xf2\x92\x93\x9a\xb1\x19\x54\xbb" - "\xd3\x3f\x07\x38\x54\x26\x56\xed\xe3\xed\x4d\x54\x42\xb3\x0d\x0d" - "\x43\xa1\x2e\xe8\xcf\x83\x81\x30\xe5\x90\xf3\x71\xe6\x7a\x42\xc3" - "\xf8\x75\x91\xeb\xb8\xf7\xea\x17\xb3\xc4\xec\x9f\xa0\xca\x54\xd5" - "\xbc\x42\x9b\x60\xd8\x90\xce\x61\xc1\xb4\x0d\x20\x52\x45\x0a\xfa" - "\x77\xb4\x83\x54\xb4\x43\x77\x11\x50\x8f\xdc\xf4\xc4\x8f\x24\x2b" - "\x84\xec\x97\xc9\xc1\x76\x3c\xf3\x17\x3c\x5a\xe8\x57\x86\x41\x22" - "\xb6\x5b\x57\x29\xae\x1b\xb0\x75\x06\x95\xe5\xe2\x37\x93\x3b\x5a" - "\xbe\x85\x5d\xb0\x16\x70\x5b\x53\x35\x57\x52\xdb\x87\x50\x89\x34" - "\xa3\xd2\x1e\xc3\x83\x03\xbd\xdc\xc1\x24\xc3\xc9\x9d\xd7\x1b\x45" - "\xfb\xcb\x4e\xd5\x64\x10\x5c\xe6\xc5\x93\x4d\xa9\x9b\xea\xed\xc5" - "\xf4\x02\x30\x13\xbc\x41\x97\x81\x05\xb0\xcc\x6a\x39\x83\xe9\x05" - "\x25\x11\x6e\x04\x63\x14\x6d\x85\x78\x9a\x09\xa7\x0d\x4c\x7b\xd7" - "\xdf\xb1\x33\xeb\xbf\xeb\x92\x58\xf3\xda\x9d\xed\x8e\xf9\x8a\x3c" - "\x71\x8d\x19\x67\x1a\x12\x49\xdf\x0e\xb1\x88\x3c\x9e\xf5\x1b\x77" - "\x13\x60\x80\x1a\x28\x46\xa0\x48\x31\xec\xc2\xcb\xe7\xe7\x72\xdb" - "\x92\x2a\x7b\x04\xd0\xa3\xd0\x17\x8c\xb2\x4d\xb3\xa2\x43\x16\x17" - "\x8d\xec\x78\xf0\xdd\xe5\x60\x07\x77\x49\x66\xad\xb3\x36\xdd\xe4" - "\xc9\xef\xf7\x6d\xe4\x00\xfc\x9c\x5b\x9d\x8a\x65\x58\xbb\xbd\x5c" - "\xfe\x18\xe6\x97\x83\xd1\xae\x20\xed\x12\xac\xe5\x29\x7f\x58\xab" - "\x83\xea\xd2\x92\xea\x17\x00\xaf\x2b\x55\x43\x7c\x5b\x17\xf2\x91" - "\x0e\x79\x0b\x95\xb4\xe0\x4a\xb0\x55\x62\xe5\x5d\xda\x55\x02\xd6" - "\xa1\xea\x99\x73\x16\x59\xb3\x3e\xc9\x86\x92\x1d\xb2\x1a\xf1\x4e" - "\x6b\x2e\xeb\x49\x7d\xf6\x35\xc0\x23\xae\xb5\x56\xff\x90\xe7\xc5" - "\xc5\x4c\xef\xea\x8f\x9e\xf1\xc2\xd0\x1c\xee\xef\xb7\xac\x0c\x0c" - "\x43\xdf\xcc\x8e\x95\xe2\xd3\xd5\x9f\x17\x81\x85\x66\x87\x7e\xdb" - "\x5e\x45\xde\xb2\x45\x95\x69\x90\x75\x80\xc1\x5e\x0c\x3d\xe8\xd9" - "\x9a\x17\xc5\x62\x49\x90\xa6\x54\x68\xc2\xfa\xb0\x96\xc9\xac\x42" - "\x9e\xa9\x6f\x33\x0c\x5b\xc2\xc5\x81\xc1\xc5\x5d\x91\x44\xb7\x48" - "\xd0\x32\xc6\x7d\x99\xa1\xad\x43\x6c\xba\xc5\xf5\x10\xbd\xf2\x44" - "\x75\x36\xe8\x7e\x91\x21\x8c\x16\xce\x74\xa4\xc2\x3d\x18\x28\x1a" - "\x82\x79\x04\x3e\x15\x73\x22\x30\x7a\x33\x7f\x76\x63\xbc\x9b\x0b" - "\xcb\x3c\xe2\x3d\x66\x22\x28\x20\x1c\xc3\x43\x12\x89\x2d\x05\x51" - "\x0b\x65\x2b\xf3\xca\x0f\x21\xd7\x57\xac\xa9\x4d\x4f\xd0\x03\x13" - "\x89\x94\xec\xad\x38\x9b\x95\xaf\xf8\x0a\xc5\xb0\x8b\xb3\x57\xcd" - "\xdd\xe7\xa3\xfe\x3e\x84\x35\xad\xe6\x87\x69\xd5\xb7\xc5\xf0\xde" - "\xcc\xc7\x81\x59\xd7\x52\x4b\xa1\x77\x8f\xec\x6a\x9d\xcd\x0d\x08" - "\xa7\xbf\x32\x6b\x5a\xa3\xc8\x4a\x0b\xde\x8c\xf8\x12\x86\xf1\x6b" - "\x78\x86\xaf\xf3\x49\x78\x81\x5b\x9d\x6b\xe9\xf7\x59\xe2\x36\xea" - "\xab\x40\x87\x1b\x0b\x2a\x70\x9b\x4c\x29\x3f\x3d\x5a\xfb\x09\x11" - "\x9a\x39\xfc\x41\x65\xac\x64\xbd\xfd\x8b\xf3\x09\x1b\x13\xde\x38" - "\x5b\x35\x0e\xce\x71\xab\x87\x99\x82\xd4\x26\x5c\x5d\x4d\x5b\xfe" - "\xe8\x33\x11\x37\xf8\x3b\x16\x93\x20\xbe\x47\x68\xd9\x19\x94\x17" - "\xdf\x56\xce\xbf\x82\x34\x75\x74\x7a\x39\xb3\xb5\xc3\x54\x86\x30" - "\x33\x7e\xbd\xe7\xd9\x24\x18\x8f\xbf\xc1\x69\x28\x75\x37\xb6\x90" - "\x2e\x4c\x71\x88\xcf\xfe\x90\xd6\xe5\x3d\xf3\xf2\x42\x8f\xee\x76" - "\x00\xb8\x84\x5f\xeb\xbc\x5d\x46\xcd\xa6\x13\xaf\x3b\x37\xae\xb4" - "\x82\xd5\x37\x88\x86\x94\x0f\xd8\x00\x0b\x97\x86\xa3\x91\x43\x8f" - "\x05\x40\x04\xdb\x7c\x17\x5e\xbf\xf0\x07\x29\x94\x34\x04\x6b\x1f" - "\x32\xa0\xa3\x30\x1a\xc8\x72\xde\xd7\x42\xfe\xb8\xe2\x2e\x6c\xe9" - "\x71\x3e\xe5\x9a\x6c\x83\xc1\x75\xc2\x04\xfb\x8d\x45\x4a\x52\x7a" - "\xac\xca\x87\x7a\xf3\x88\x42\x42\xfb\x40\x71\x67\xc0\xa7\xcc\x10" - "\x30\x32\xc2\x7e\x3d\x93\x40\xb6\xb2\x53\xcd\xe4\x23\x4b\x5a\x99" - "\x20\xfe\xe9\xef\xce\x82\xb0\x0f\x4e\x21\xa6\xc0\xad\x6a\x7b\x08" - "\xb9\x33\x6b\xc2\x35\x5e\x0d\x6e\xd5\x9d\x65\xef\x70\x5d\xc7\x02" - "\xa8\x4e\x5e\x80\xb1\x9c\xa8\x50\xfd\x25\x44\x0d\xe6\x78\x8c\xd9" - "\x18\x01\x43\xd0\xee\x9f\xa7\x68\xd9\x37\xf3\x5e\xcb\xf6\x08\x92" - "\x75\x02\x65\xee\xcf\xed\xdc\xe5\x3f\x6d\x9f\x84\x75\x39\x93\x27" - "\xff\xc5\x97\x37\x6e\xc7\x60\x9c\x1d\x39\x4d\xbc\x27\xa2\xe5\x85" - "\x05\xa4\x3d\x28\xce\x42\x51\x81\xd5\xcb\xbd\x83\x11\x13\x05\x93" - "\x4f\x70\xb3\x97\xa9\xfa\x14\x95\x77\xc5\x1e\x40\xd0\x4d\x77\xef" - "\xa8\x53\xfc\x26\x30\xd4\xfe\xda\xd0\x74\x58\x38\x21\xc0\xbb\x21" - "\xd9\x6a\xf3\xcc\x57\x01\xcb\xbb\x01\x9a\x99\xe6\x4e\xaf\xf2\x32", - STR(iv, iv_size, - "\x12\x34\x56\x78\x00\x00\x00\x00"), - } -}; +const struct cipher_vectors_st magma_ctr_acpkm_vectors[] = { { + STR(key, key_size, + "\x88\x99\xaa\xbb\xcc\xdd\xee\xff\x00\x11\x22\x33\x44\x55\x66\x77" + "\xfe\xdc\xba\x98\x76\x54\x32\x10\x01\x23\x45\x67\x89\xab\xcd\xef"), + STR(plaintext, plaintext_size, + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88"), + .ciphertext = + (uint8_t *)"\x2a\xb8\x1d\xee\xeb\x1e\x4c\xab\x68\xe1\x04\xc4\xbd\x6b\x94\xea" + "\xc0\x4d\xdb\x07\xea\x92\x8f\xa2\x22\x0d\x97\x91\x83\x20\x78\x6b" + "\x17\x0d\x8e\xaf\x6e\x3c\xa1\xab\xf2\x92\x93\x9a\xb1\x19\x54\xbb" + "\xd3\x3f\x07\x38\x54\x26\x56\xed\xe3\xed\x4d\x54\x42\xb3\x0d\x0d" + "\x43\xa1\x2e\xe8\xcf\x83\x81\x30\xe5\x90\xf3\x71\xe6\x7a\x42\xc3" + "\xf8\x75\x91\xeb\xb8\xf7\xea\x17\xb3\xc4\xec\x9f\xa0\xca\x54\xd5" + "\xbc\x42\x9b\x60\xd8\x90\xce\x61\xc1\xb4\x0d\x20\x52\x45\x0a\xfa" + "\x77\xb4\x83\x54\xb4\x43\x77\x11\x50\x8f\xdc\xf4\xc4\x8f\x24\x2b" + "\x84\xec\x97\xc9\xc1\x76\x3c\xf3\x17\x3c\x5a\xe8\x57\x86\x41\x22" + "\xb6\x5b\x57\x29\xae\x1b\xb0\x75\x06\x95\xe5\xe2\x37\x93\x3b\x5a" + "\xbe\x85\x5d\xb0\x16\x70\x5b\x53\x35\x57\x52\xdb\x87\x50\x89\x34" + "\xa3\xd2\x1e\xc3\x83\x03\xbd\xdc\xc1\x24\xc3\xc9\x9d\xd7\x1b\x45" + "\xfb\xcb\x4e\xd5\x64\x10\x5c\xe6\xc5\x93\x4d\xa9\x9b\xea\xed\xc5" + "\xf4\x02\x30\x13\xbc\x41\x97\x81\x05\xb0\xcc\x6a\x39\x83\xe9\x05" + "\x25\x11\x6e\x04\x63\x14\x6d\x85\x78\x9a\x09\xa7\x0d\x4c\x7b\xd7" + "\xdf\xb1\x33\xeb\xbf\xeb\x92\x58\xf3\xda\x9d\xed\x8e\xf9\x8a\x3c" + "\x71\x8d\x19\x67\x1a\x12\x49\xdf\x0e\xb1\x88\x3c\x9e\xf5\x1b\x77" + "\x13\x60\x80\x1a\x28\x46\xa0\x48\x31\xec\xc2\xcb\xe7\xe7\x72\xdb" + "\x92\x2a\x7b\x04\xd0\xa3\xd0\x17\x8c\xb2\x4d\xb3\xa2\x43\x16\x17" + "\x8d\xec\x78\xf0\xdd\xe5\x60\x07\x77\x49\x66\xad\xb3\x36\xdd\xe4" + "\xc9\xef\xf7\x6d\xe4\x00\xfc\x9c\x5b\x9d\x8a\x65\x58\xbb\xbd\x5c" + "\xfe\x18\xe6\x97\x83\xd1\xae\x20\xed\x12\xac\xe5\x29\x7f\x58\xab" + "\x83\xea\xd2\x92\xea\x17\x00\xaf\x2b\x55\x43\x7c\x5b\x17\xf2\x91" + "\x0e\x79\x0b\x95\xb4\xe0\x4a\xb0\x55\x62\xe5\x5d\xda\x55\x02\xd6" + "\xa1\xea\x99\x73\x16\x59\xb3\x3e\xc9\x86\x92\x1d\xb2\x1a\xf1\x4e" + "\x6b\x2e\xeb\x49\x7d\xf6\x35\xc0\x23\xae\xb5\x56\xff\x90\xe7\xc5" + "\xc5\x4c\xef\xea\x8f\x9e\xf1\xc2\xd0\x1c\xee\xef\xb7\xac\x0c\x0c" + "\x43\xdf\xcc\x8e\x95\xe2\xd3\xd5\x9f\x17\x81\x85\x66\x87\x7e\xdb" + "\x5e\x45\xde\xb2\x45\x95\x69\x90\x75\x80\xc1\x5e\x0c\x3d\xe8\xd9" + "\x9a\x17\xc5\x62\x49\x90\xa6\x54\x68\xc2\xfa\xb0\x96\xc9\xac\x42" + "\x9e\xa9\x6f\x33\x0c\x5b\xc2\xc5\x81\xc1\xc5\x5d\x91\x44\xb7\x48" + "\xd0\x32\xc6\x7d\x99\xa1\xad\x43\x6c\xba\xc5\xf5\x10\xbd\xf2\x44" + "\x75\x36\xe8\x7e\x91\x21\x8c\x16\xce\x74\xa4\xc2\x3d\x18\x28\x1a" + "\x82\x79\x04\x3e\x15\x73\x22\x30\x7a\x33\x7f\x76\x63\xbc\x9b\x0b" + "\xcb\x3c\xe2\x3d\x66\x22\x28\x20\x1c\xc3\x43\x12\x89\x2d\x05\x51" + "\x0b\x65\x2b\xf3\xca\x0f\x21\xd7\x57\xac\xa9\x4d\x4f\xd0\x03\x13" + "\x89\x94\xec\xad\x38\x9b\x95\xaf\xf8\x0a\xc5\xb0\x8b\xb3\x57\xcd" + "\xdd\xe7\xa3\xfe\x3e\x84\x35\xad\xe6\x87\x69\xd5\xb7\xc5\xf0\xde" + "\xcc\xc7\x81\x59\xd7\x52\x4b\xa1\x77\x8f\xec\x6a\x9d\xcd\x0d\x08" + "\xa7\xbf\x32\x6b\x5a\xa3\xc8\x4a\x0b\xde\x8c\xf8\x12\x86\xf1\x6b" + "\x78\x86\xaf\xf3\x49\x78\x81\x5b\x9d\x6b\xe9\xf7\x59\xe2\x36\xea" + "\xab\x40\x87\x1b\x0b\x2a\x70\x9b\x4c\x29\x3f\x3d\x5a\xfb\x09\x11" + "\x9a\x39\xfc\x41\x65\xac\x64\xbd\xfd\x8b\xf3\x09\x1b\x13\xde\x38" + "\x5b\x35\x0e\xce\x71\xab\x87\x99\x82\xd4\x26\x5c\x5d\x4d\x5b\xfe" + "\xe8\x33\x11\x37\xf8\x3b\x16\x93\x20\xbe\x47\x68\xd9\x19\x94\x17" + "\xdf\x56\xce\xbf\x82\x34\x75\x74\x7a\x39\xb3\xb5\xc3\x54\x86\x30" + "\x33\x7e\xbd\xe7\xd9\x24\x18\x8f\xbf\xc1\x69\x28\x75\x37\xb6\x90" + "\x2e\x4c\x71\x88\xcf\xfe\x90\xd6\xe5\x3d\xf3\xf2\x42\x8f\xee\x76" + "\x00\xb8\x84\x5f\xeb\xbc\x5d\x46\xcd\xa6\x13\xaf\x3b\x37\xae\xb4" + "\x82\xd5\x37\x88\x86\x94\x0f\xd8\x00\x0b\x97\x86\xa3\x91\x43\x8f" + "\x05\x40\x04\xdb\x7c\x17\x5e\xbf\xf0\x07\x29\x94\x34\x04\x6b\x1f" + "\x32\xa0\xa3\x30\x1a\xc8\x72\xde\xd7\x42\xfe\xb8\xe2\x2e\x6c\xe9" + "\x71\x3e\xe5\x9a\x6c\x83\xc1\x75\xc2\x04\xfb\x8d\x45\x4a\x52\x7a" + "\xac\xca\x87\x7a\xf3\x88\x42\x42\xfb\x40\x71\x67\xc0\xa7\xcc\x10" + "\x30\x32\xc2\x7e\x3d\x93\x40\xb6\xb2\x53\xcd\xe4\x23\x4b\x5a\x99" + "\x20\xfe\xe9\xef\xce\x82\xb0\x0f\x4e\x21\xa6\xc0\xad\x6a\x7b\x08" + "\xb9\x33\x6b\xc2\x35\x5e\x0d\x6e\xd5\x9d\x65\xef\x70\x5d\xc7\x02" + "\xa8\x4e\x5e\x80\xb1\x9c\xa8\x50\xfd\x25\x44\x0d\xe6\x78\x8c\xd9" + "\x18\x01\x43\xd0\xee\x9f\xa7\x68\xd9\x37\xf3\x5e\xcb\xf6\x08\x92" + "\x75\x02\x65\xee\xcf\xed\xdc\xe5\x3f\x6d\x9f\x84\x75\x39\x93\x27" + "\xff\xc5\x97\x37\x6e\xc7\x60\x9c\x1d\x39\x4d\xbc\x27\xa2\xe5\x85" + "\x05\xa4\x3d\x28\xce\x42\x51\x81\xd5\xcb\xbd\x83\x11\x13\x05\x93" + "\x4f\x70\xb3\x97\xa9\xfa\x14\x95\x77\xc5\x1e\x40\xd0\x4d\x77\xef" + "\xa8\x53\xfc\x26\x30\xd4\xfe\xda\xd0\x74\x58\x38\x21\xc0\xbb\x21" + "\xd9\x6a\xf3\xcc\x57\x01\xcb\xbb\x01\x9a\x99\xe6\x4e\xaf\xf2\x32", + STR(iv, iv_size, "\x12\x34\x56\x78\x00\x00\x00\x00"), +} }; /* Manually calculated to overcome section size differences between TLS cipher * and test vectors defined in recommendation for standardization * R 1323565.1.017-2018. TLS uses 4096 byte sections, we need more to have at * least one rekeying. */ -const struct cipher_vectors_st kuznyechik_ctr_acpkm_vectors[] = { - { - STR(key, key_size, - "\x88\x99\xaa\xbb\xcc\xdd\xee\xff\x00\x11\x22\x33\x44\x55\x66\x77" - "\xfe\xdc\xba\x98\x76\x54\x32\x10\x01\x23\x45\x67\x89\xab\xcd\xef"), - STR(plaintext, plaintext_size, - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88"), - .ciphertext = (uint8_t *) - "\xf1\x95\xd8\xbe\xc1\x0e\xd1\xdb\xd5\x7b\x5f\xa2\x40\xbd\xa1\xb8" - "\x85\xee\xe7\x33\xf6\xa1\x3e\x5d\xf3\x3c\xe4\xb3\x3c\x45\xde\xe4" - "\xa5\xea\xe8\x8b\xe6\x35\x6e\xd3\xd5\xe8\x77\xf1\x35\x64\xa3\xa5" - "\xcb\x91\xfa\xb1\xf2\x0c\xba\xb6\xd1\xc6\xd1\x58\x20\xbd\xba\x73" - "\x7e\x08\xf5\x9f\x71\xb8\x56\x08\xe3\x89\x55\xb1\x7b\x53\xed\x27" - "\xee\x04\xce\x2c\x02\xae\xf0\x75\x8f\x5d\x64\x77\xea\x0a\x79\xb2" - "\x9f\xc0\xb0\x9a\xf0\x93\xd5\xbf\xb9\xdf\xab\x18\x25\xf7\x51\xc9" - "\x82\x69\x88\x08\x00\x2b\x35\x8e\x2c\x2f\x7c\x01\xdc\x31\x56\x1d" - "\x52\xb4\xca\x07\xbf\x02\xa5\x9a\x80\x88\x91\x19\xf1\x26\x0b\x7f" - "\x9d\x3e\x1c\xe5\xf9\x92\x1a\xf5\xb5\x53\xed\x1e\x1a\xdf\xdc\x53" - "\x9e\x2e\x79\x65\xbd\x7b\x48\x48\x57\x58\x90\x76\x40\x57\x86\x76" - "\x7d\xe3\xb2\x82\x06\xed\xeb\xce\x35\x1b\xcc\x5c\xee\x54\xe4\x3f" - "\x53\x4b\xb5\x0d\x07\x0a\x2d\x0c\xb7\xcf\x7c\xf8\x81\xad\x32\x01" - "\x26\x50\x0f\xe9\x32\xf3\xd7\xc9\xf0\x86\xab\xb8\xf8\xea\x72\x3a" - "\x9a\x17\x48\x12\xa5\xbb\x3b\xa9\x6d\x01\x51\x82\xc0\xe2\x98\x4d" - "\x69\x3c\xbd\x67\x6a\xa0\xb1\x7d\x7a\xa8\x2c\xb8\xe2\xb9\xf6\x68" - "\xfa\xeb\xae\x0d\x41\xcb\xb0\xfe\xe5\x55\x65\xb6\x5d\x56\xe5\x05" - "\x20\x08\x51\x77\x7c\x18\x3a\x25\x69\xaa\xa2\x39\x68\xcf\xd1\x3e" - "\x51\x47\xb5\xd8\x13\xcc\xaf\x2d\x31\xd5\x28\xae\x61\x48\xe6\x9a" - "\x0a\xd8\x30\x0b\x1f\x7c\xef\x3d\x32\xa5\x40\x05\x41\xdf\x84\x1e" - "\xce\xde\xca\x31\x42\xa6\xc4\xbc\x2b\x56\xb7\x7e\xa6\x22\x1f\x85" - "\x7b\xe8\x80\x01\xc1\xff\x78\x45\x14\xb5\x4d\x9b\xe3\x21\xf7\xb8" - "\x13\xd5\x44\x3d\x6f\x33\x85\x46\x56\x07\x79\x15\xb4\xec\xe5\xfd" - "\x34\x35\xc8\x8a\x5f\x4d\x58\x84\x82\x9d\xb6\x4d\x0e\x90\x65\xb0" - "\x5e\x61\x83\x30\x3d\x51\x34\xe3\x0e\x6e\x78\x05\xc8\x6d\x1e\x7d" - "\x76\xe2\x3d\x85\x33\x82\x42\x7c\x7d\x67\x33\xbb\x60\x5e\x4d\xb0" - "\xc8\xd0\x7a\x6c\xbe\x4e\xc8\xc4\x82\x9d\xb6\x25\x56\xc9\x1b\x52" - "\x3b\x9b\x4a\xf5\x8f\x67\x12\xd5\x41\x60\xe6\x97\x08\x90\x7b\x17" - "\x3b\xf9\x1c\x82\x0d\x15\x0a\x3d\x1b\x27\xd4\x46\xd6\x91\x5c\x74" - "\x48\x45\x1a\x4c\x60\x26\xf3\xe3\x1f\xe7\x0a\xfc\x79\x42\x8a\x5f" - "\x5f\x5b\x33\xf4\xb3\xda\xbd\x4c\x4a\x10\x5e\x3b\x9d\x09\xf8\xf2" - "\x51\x25\x44\x37\x7b\xca\x88\xf0\x88\xa9\x5d\x2e\x9e\x42\xf6\xac" - "\x3d\xd6\x01\x06\x06\x5c\x96\x4b\x13\xf5\x5f\xaa\x06\x34\x16\x67" - "\xfd\xa5\x49\x12\xcc\x21\x8f\xb4\xb9\x33\xfc\x58\xf0\x36\xeb\xd7" - "\x50\xf2\x38\x39\x9e\x93\x7b\xf7\xf5\xc7\x9c\x73\x36\x1f\xbe\xa9" - "\x49\xf9\x2c\x4f\x17\xfc\xb3\x64\x51\x68\xaf\xed\xe3\x43\xbf\x2f" - "\x3f\x57\xbb\x74\x93\x51\xc4\x93\x1e\x2e\x05\xed\xda\x74\x27\x1b" - "\x7b\xa8\x98\x3e\xa6\x62\x75\xbd\x68\xab\x44\xe8\xe4\x2d\x2f\x08" - "\x44\x64\x85\xa6\x42\xfe\xdb\x11\xb5\xbc\x1a\x83\xc4\x58\x7a\xd1" - "\x0d\x64\xa2\xdb\xd5\x4c\x3a\xd7\x2a\xd8\xc7\x0b\xf5\x33\x80\xe2" - "\xaa\xc6\xaf\xad\xee\x39\x83\x1c\xfb\xda\x39\xd6\xe4\xbe\x6f\xde" - "\x46\xd1\xdc\xc8\x77\x3b\x42\x3a\x19\x83\xdb\x79\x5e\x9d\xd9\xef" - "\xe7\x54\x9e\xfa\xde\x56\x26\x0e\x33\x44\xb6\xac\xc7\x25\x1f\x0b" - "\xd0\x12\x4a\x75\x6f\xef\x9f\xb7\xe7\xf1\xc3\xb2\x77\xa7\x01\xc1" - "\x24\xf2\x60\xf2\x04\xa4\x07\x47\x25\x81\x2a\x51\x36\x1d\xb3\x42" - "\x3c\xc5\x12\xbb\x53\x89\xc3\x00\xb4\xe8\x0e\xd8\xed\x5d\x9c\x18" - "\x08\x16\x05\x57\x22\x99\xc1\xcb\x97\x4d\x7d\x42\xb0\xbf\xf3\x35" - "\x9e\xc9\xc0\x4e\xe6\x42\xec\x49\x06\x5e\x50\x7f\x6c\x86\x20\x9e" - "\xe0\x49\x6a\x1d\x50\x45\x52\x3d\x66\xdc\x66\xb2\xa1\x57\xbb\x1d" - "\x65\x30\xf9\x3e\x6c\x8b\xf8\x07\x5e\xf9\xb0\xcf\x15\x1f\xa4\x22" - "\xe6\x28\xdf\x40\x44\x27\x80\x99\xbf\xcc\x86\x94\x3d\xe1\x97\xbc" - "\x64\x7b\xc9\x8a\xc8\xb7\xdd\x8e\xd9\x95\xfa\x97\x44\x59\x70\xb6" - "\xa4\x59\xdd\x94\x2a\x4e\x71\x76\xe1\xf8\xff\x2e\xef\xf7\xf3\x26" - "\x0d\xeb\x63\x9b\x34\x74\xcf\xc7\xe4\x99\xb3\x8b\xe5\xf8\xfa\xf8" - "\x60\x6a\x8f\x16\xfe\xb3\x12\xe8\x66\x5c\x26\x61\x11\xaa\x14\x85" - "\x5e\x4c\x0f\xf8\x47\x99\x49\x4c\x22\xa5\x37\xb7\x4b\xed\x1d\x33" - "\x54\xe4\x6f\xfe\x4b\x7e\x95\x44\x56\xa9\xa9\x48\x6f\x40\x08\x42" - "\x28\xa0\xd6\x8e\x52\x72\x84\x87\xd5\xcc\x08\xf4\x34\x9b\xc7\xf7" - "\x92\xac\x5d\x5a\x30\x4c\x87\xc2\x2c\x94\x68\x10\x03\x02\x8c\x38" - "\x6e\xf6\xca\xd1\xd6\x55\x02\x3c\x3a\xf4\x21\x1c\x90\x03\x7c\x33" - "\xcd\x81\x93\x3f\x4c\xa1\xe6\x7c\x7d\x27\xaf\x97\x7a\xd8\xb0\x32" - "\xcb\x1f\xb6\x5d\xb0\x7c\x9e\xf7\x15\x6a\x29\xc9\xb3\x13\x8e\xb2" - "\x2e\xf2\x9d\xb2\x64\xe9\xc7\x13\x86\xc3\x46\x97\x9e\x53\x37\xac" - "\xd1\x75\x0b\xe2\x20\x4a\x5e\x3a\x47\xdf\xb3\x67\x78\x23\x22\xa6" - "\xb6\x69\x83\x1b\x41\xe1\xdc\xe3\xbb\x63\x8e\x6a\x70\xe2\x91\x30" - "\xa2\x48\x43\x07\x9b\xf1\x87\x9d\xd9\x2f\x36\x62\xaf\x51\x70\x10" - "\x5d\x68\x42\x6e\x95\xe6\x86\x85\x90\x08\x80\x42\xc6\x11\x7d\x38" - "\x37\x94\xc7\x7a\x9d\xec\xff\x87\x15\x0d\x30\x42\x7d\xbf\xb0\x21" - "\xa8\x28\xc3\xa9\x56\x31\xda\x2e\x91\x8d\x0d\x78\x93\xe2\x4d\x7f" - "\xb3\xdb\x87\x5b\xf2\x2a\x55\x54\xc4\x1a\x47\x9b\x51\x79\x2c\x55" - "\xaa\xaf\x57\x89\x90\x32\x26\xfa\xcf\x26\x3d\xbd\xc3\x59\x7e\x4b" - "\x53\x7a\xa3\xf8\xec\x31\x3e\x9f\x22\x33\x41\xec\xe5\xf1\x50\x41" - "\x57\x64\x37\x0e\x24\x0f\x03\x0c\x93\xaf\xd7\x44\xef\x33\xf9\x96" - "\x8e\x63\x9c\x79\x09\xdf\x58\xdb\xcd\xd2\xf2\x81\xed\x97\x28\x5e" - "\x6d\x99\x45\xad\xf1\xa4\xe8\x59\xaa\xeb\x59\xbd\xfa\x54\x27\xe2" - "\x01\x6d\xfa\x08\xe5\x1a\x46\x92\x31\xa0\xfd\x2e\x25\x21\x5e\x9d" - "\x1d\x41\x82\x16\x21\xea\xe8\x29\x5a\xe7\xd4\xd8\x7c\x91\x6d\xa8" - "\x69\xa8\x6b\xac\xf9\x3d\x2c\x07\xfa\xaf\x65\x5e\x84\x63\x5c\x1c" - "\xb6\x71\x1c\x6e\x1a\x1a\xcf\x5f\x39\x08\x02\xeb\xde\x75\x28\x44" - "\x90\x3b\x6d\x09\xf5\xa4\x3a\x00\x99\xc1\x6e\xb8\x23\x47\xb6\xe6" - "\x44\x69\x24\x86\x0d\x93\x7d\xc2\x1a\xe7\xf8\x97\x97\x6d\x2f\x7d" - "\x6a\x3e\xd7\x6d\x94\xbe\x9b\xfa\x7d\x40\xff\x35\x7e\x2d\x9c\x50" - "\x71\xf8\x99\x5f\xf3\x53\x16\x59\x77\x72\x4b\xef\x8d\x21\x8c\x28" - "\x15\x8a\x57\x6d\x3d\x35\xf4\x2c\x37\x39\x0e\x97\x8f\xd3\x45\x17" - "\xac\x0b\xa2\xaa\x16\xe7\x98\x70\xbd\x91\x4b\x7b\xc9\x14\x5b\x85" - "\x29\xe5\xd9\x20\xa6\xf3\x89\x63\xc8\x01\x94\x2c\x20\xb0\xf1\x1c" - "\x61\x90\x5b\xe8\xaf\xdb\xe2\x20\x62\x4f\xd0\x3c\x51\x1f\x5f\x14" - "\x28\x13\x07\x5e\xbc\x4a\xa0\x46\xa7\x9c\xc7\x00\x24\xb4\x67\x0d" - "\x9c\xe8\x05\xa7\xe3\x37\x94\xd3\x97\xc5\xd6\x1d\xb3\x79\x0c\x7f" - "\xf0\xeb\x68\xa7\xa9\x75\x30\x3c\xf1\xf8\xfb\x96\x4b\xa5\x99\xb1" - "\xf0\x71\xab\xb4\x8a\xa6\x5d\x97\xb5\x6f\x42\x81\xef\x38\x0e\x41" - "\x21\xcd\x15\xe4\xf1\xdc\x02\xc2\xe5\xe4\xb2\xf2\xdb\xc5\x42\x0f" - "\xeb\x00\xb8\x49\x48\x90\x97\x59\x69\x8c\x3d\x90\xfa\x7f\xaf\x75" - "\xff\xe8\x0f\xff\x13\x2f\x7a\xca\x33\xbc\xb0\x41\x7b\xd4\x94\xce" - "\xd5\xd7\x53\xe5\x36\x9d\xea\x0c\x13\x60\x63\xd9\x79\x83\x53\x03" - "\x3c\x5f\x33\x6b\x16\xd2\xd6\x07\xbd\xbc\xa9\xcd\xd6\x21\x58\x8a" - "\x90\xac\x85\x7c\x0a\x85\xf1\x02\xfd\x6c\x5b\xac\x92\xa5\x6f\xfc" - "\x02\x60\xb3\x05\x91\x31\x80\xd5\x75\x82\xa8\xab\xcc\x7b\x47\xdb" - "\x79\xaf\x85\xea\x75\x2d\xf4\x46\x45\xa6\x24\x35\x2d\xba\x9e\x19" - "\x4e\x48\xb3\x5f\x40\x96\x6c\x73\x44\x09\x67\x27\xee\xdb\xdb\xca" - "\xf6\x14\x3f\x32\xdf\x3b\xd3\xcb\x87\x48\x6b\x03\xda\xfe\xb5\x20" - "\xf8\x72\xd0\xe4\x65\xfd\x14\x5d\x9b\xd3\xc5\x67\x4b\x41\xf4\xcb" - "\xac\xe4\xce\x61\xe0\x06\x8e\xb6\xca\xef\xa5\xe4\x70\xd4\xff\x4f" - "\x4c\x81\xb7\xc7\xc1\xe3\x1d\x6b\xfe\x44\x37\xfe\x7e\xb4\xec\xda" - "\x55\xbc\x26\xdd\x44\x08\x28\x49\x19\xc9\x52\x20\x4a\x5e\xe1\xae" - "\x6b\x87\x35\xa2\x9a\x02\x17\xb0\x74\xe1\x19\x92\xca\x5d\x34\x81" - "\xd7\x3f\xb1\x14\xe2\x44\x97\x7f\xab\x0a\xc3\x44\x8d\x9c\xe6\x27" - "\x84\x5e\x2e\xe1\x0e\x7b\x74\xee\x47\xe2\x6f\x79\x3a\x0d\x25\x90" - "\x9b\x32\x13\x78\xd3\xd1\x19\x10\xb7\x88\xc4\xb4\xb8\x0f\x84\x0c" - "\xc4\x6d\xb3\xbc\xbc\xea\x1d\x84\xfe\x6f\x95\x1e\x44\x78\xbb\x73" - "\xd0\x08\x8b\xbe\xae\x91\x6f\x84\xeb\x6c\x05\x58\x3a\xb7\x68\xee" - "\x62\x14\x0b\xba\xd3\xd6\x78\x23\x35\x03\x2f\xed\xac\xf2\x35\xa7" - "\x0b\xf5\x37\xa1\xa5\x4d\x57\x0e\x2e\x5e\x0d\x0c\xd6\x04\xc8\x07" - "\x60\xe6\xda\xd9\x55\x16\xf6\xc6\x0c\x53\xc0\x46\xa8\x91\xa6\xdd" - "\x22\x99\x88\x9f\x23\x93\x64\x81\xdb\x4b\xe8\x99\x1e\x16\x5c\xb5" - "\x08\xc0\x74\xf9\x79\xd3\xc1\x6a\xe5\x38\x6b\xcd\xf0\xcb\x1e\xb8" - "\x5c\x6b\x14\xd6\x85\x58\xa3\xc8\x3d\x5b\x14\x50\xc4\x70\x97\xb2" - "\xcd\x93\xd6\x3a\x42\x2f\x3a\x88\x28\x8a\xd0\xa7\xe9\x98\x87\xbe" - "\x66\x89\x69\xd9\xbd\x11\x91\xd3\x9b\xc4\x22\x14\xe6\x8f\xc8\xbd" - "\x95\x5d\x3d\xd2\x1d\x10\xbd\x61\x69\x87\xf9\x4a\x9c\x61\x5b\x80" - "\x9b\x3f\x32\xce\x17\xcd\x98\x79\xb9\xeb\x45\xf7\x54\x3c\xc9\xa6" - "\x2e\xb4\x0b\x0d\x84\x0d\x35\xcc\x64\x5f\x5a\x92\xf8\xcb\xd6\xfa" - "\xae\xd9\xce\x9c\x41\x83\xc2\xab\xd5\x73\x21\xea\x95\xd5\x73\x2f" - "\xf1\xd0\x71\x95\x45\x07\x7c\x1f\xcc\xba\xf3\xb0\x75\xfa\x1a\xd4" - "\x89\x66\x4e\x93\x93\x80\xb7\x67\xd5\xdf\x99\xd8\x43\x6d\xf6\xde" - "\x19\xc8\x13\x56\xf8\x63\xe5\xf2\x53\xfd\x2e\x62\x8d\xde\x92\xd4" - "\x98\xfc\x1c\x36\x08\x3d\x33\x0f\xee\xbc\xb8\x2f\x49\xa2\xb3\xb4" - "\x9b\x0c\x7e\x16\xd4\xe8\xc0\x98\xd0\x5c\xda\x25\xaa\xe4\x60\x95" - "\xe6\xc5\x7b\x62\xa5\xe9\xbc\xa1\x5e\x11\x4f\x5d\xb4\x19\x29\x33" - "\x6f\xff\xf4\xef\x7f\x62\x2b\xf2\xbd\x47\x90\xcb\xba\xbc\xe8\xa8" - "\xd7\xcf\xac\x44\x05\x67\xf3\xd3\x93\x22\xc0\x48\x23\xdf\xef\x54" - "\x3d\x64\xc7\x13\xfd\x4f\x0a\x21\x20\x2b\xad\x34\x88\x02\x69\x84" - "\xaf\x8a\xfb\xbb\x97\x7d\xca\x0e\x80\xdc\x8a\x50\x51\x49\xc8\x1f" - "\xbd\x35\x46\x11\xf6\xdf\x52\x29\xc2\x52\xc4\xae\xd5\x16\xbb\x67" - "\x21\x7b\x25\xeb\xc4\x21\x0d\xc7\x3f\x1b\xae\x42\xc2\x21\x58\x1e" - "\x32\x46\x0d\x72\x15\x89\x75\xaa\xd9\x0b\x2d\xa7\x25\x3a\x2a\x3d" - "\xc6\x46\xd1\xa3\x9d\xed\x52\xd8\xbb\x53\xb9\x1f\x6d\xfc\x63\xb7" - "\x28\xa1\x78\x78\x18\x43\xa2\x3d\x6f\xcd\x6a\x40\x6a\xc2\x44\x88" - "\x59\x03\xdd\xd3\x47\x8d\x3d\xe2\x24\xc2\x11\x00\xb1\x2e\xc7\x24" - "\x81\x4b\xc0\x9c\x90\x64\xb7\x8b\xfb\x3a\xdc\x69\xe1\x4c\xf4\xc4" - "\xc7\x78\x5a\xca\xf8\x6f\x16\xa0\xb8\xe3\xb0\x66\x94\xab\x7a\x86" - "\x5c\xa8\xb9\x7f\xf7\x6a\x64\x1d\x8f\x03\xcf\x4b\x4b\xb0\xd8\xc2" - "\xc2\xea\x02\x5a\xaa\x14\x19\x8f\x60\x49\x5b\xf4\x05\xc8\x98\x30" - "\xeb\xbc\x00\x12\xa4\xc0\x27\x5f\x38\x91\x89\x73\xfa\xb7\xc1\x3a" - "\xf4\x7c\x18\xe4\xe7\x7f\x8c\x82\x51\xb0\x64\x2b\x9d\xa3\x98\x47" - "\x67\xe4\x0f\x1f\x30\x8e\x78\x0a\x3e\xc4\xa8\xc4\x1c\x79\x0a\x09" - "\x91\xbd\xa1\x6a\xab\x47\xce\x54\x24\xda\x4b\xa6\x7b\x40\x43\x92" - "\xd5\x43\xbb\x50\x53\x54\x1d\xf0\x0c\x87\x01\xc0\x82\x0a\xf0\xd8" - "\x7d\xd7\x22\xfc\x33\x59\xf7\x54\x87\x5c\x45\xc8\x2d\x92\x6d\x3a" - "\xfc\x90\x03\xa9\x23\xa8\xa3\xa5\x00\x3d\x3f\x7d\x9f\x6c\x7a\xba" - "\xdd\xff\xfd\x09\x04\x9b\x82\xea\x9f\x0e\x05\x92\xed\x08\x24\x1d" - "\x00\xfa\xac\x61\xf0\xe7\xc7\x37\x7e\x0d\x73\x38\x3e\x7a\x63\xcb" - "\x4e\x26\x21\xd6\x50\x12\xe4\x95\x1e\xc7\xd0\xed\xcb\xf9\xbf\x1d" - "\x34\x81\x81\xa4\x0e\xeb\xf6\xe8\xc5\x1e\x98\xca\x79\xad\x15\x3c" - "\xdc\xf5\xe3\xa9\xfe\xe9\x4c\x6a\xc5\x79\x55\x89\x18\xf2\xd1\x86" - "\x4e\xd6\x95\x38\xf8\x78\x0b\xfc\x50\x40\x72\xd4\x3c\x45\xdf\xaa" - "\x13\x1e\x9e\x74\xff\xde\xa9\x33\x5e\xa8\xa1\x70\x75\xd7\x7c\x4f" - "\x71\xf1\x03\xb3\xfb\x0f\xad\x19\x4f\x5d\xfe\xbb\xc5\x98\x81\x11" - "\xee\x24\x24\x13\xa4\xa4\xfe\x40\x4b\x20\x38\x61\x6e\xe3\xec\x05" - "\x15\x46\x35\x2d\xd4\x61\x7d\x0f\x4a\x34\xf1\x23\x87\x5e\xc6\x8e" - "\xf5\x77\x8c\x03\x4b\x58\xe2\x3b\x35\x08\x2f\x40\x60\xd6\xe3\x3a" - "\xf0\xb4\xdd\xb9\x18\xfc\x7d\x79\x7a\xf3\x0a\x5c\x89\x2e\xcc\x30" - "\x9b\x8f\x7e\x3c\xd3\x1d\x45\xcb\xfb\xb5\x09\xe8\x6e\xd4\x87\xb0" - "\xc5\x5c\x0e\x70\xec\xd9\x04\xb2\xc1\x44\x9b\x78\x4f\x46\x92\x4b" - "\x18\x0b\x90\xaa\xe3\xf9\x11\x8d\xf8\x9e\x5e\xc6\x2e\xfb\x9f\xba" - "\x31\x49\x9e\x9d\xb7\xb8\x5c\x0b\x09\xcf\x45\xb0\x82\x9d\x6a\xd7" - "\xeb\x1d\x79\x6f\x26\x1a\xec\x5d\x16\xb1\xa8\xc5\x90\x00\x9a\x79" - "\x51\x9b\xab\x79\x09\xa1\x7f\x65\x74\xa0\xf8\x54\xfd\xf3\x74\x52" - "\x80\x09\x25\x33\xa4\xd5\x22\xba\x79\xc0\x77\xe0\x56\xfb\x19\xa9" - "\x8f\x23\x16\x29\xa9\x39\x54\x10\x0d\x85\xb9\x20\xd3\x27\xa2\x7d" - "\xe4\x81\x9e\x0a\x4a\xc4\xf6\xef\xc7\x0b\xb8\x6a\x50\xa9\xed\x72" - "\xb4\x79\x01\xf3\xc3\x89\x5d\x19\x5e\x9a\xf1\x35\x14\xcc\x04\x4c" - "\x2d\xe5\x0f\xd8\x07\xee\x50\xee\x3f\xaf\x74\x86\xcd\xc5\xf8\x34" - "\x0f\xeb\x32\x7f\x36\xcc\x03\xa8\xbc\xde\xd9\xf8\xfc\x01\x73\x83" - "\x74\x4a\x26\xdc\x70\x1a\x76\x71\x5a\xee\xac\x0b\xe0\xdb\x16\xd4" - "\x26\x7c\xfb\xb8\x96\x74\x00\x7d\xb8\x5c\x4a\x07\xfc\x9e\xc9\xff" - "\x4a\xd0\xaf\x86\x4b\xb0\xc6\x29\x8e\x3f\x2e\x9f\xa0\x33\xd3\xdf" - "\xb9\xe0\xd5\x48\xb9\xf0\x08\x7e\xae\xdd\xd0\x2e\xf5\x41\xd8\xa3" - "\x9a\xff\x76\x93\x04\x7a\xef\xd2\xf5\xb8\x05\xa1\x55\x8e\xe8\x03" - "\x9f\x6e\xd9\xc4\x75\xd0\xfe\x75\xd1\x77\x3f\x22\xbe\x2e\xc7\x27" - "\x10\x4e\x2c\xab\x2f\x38\x53\xcb\xe7\x27\x9d\xff\xd8\x86\xb7\xca" - "\xc1\x7e\xeb\x23\xd8\x8f\x5e\x85\xa3\x2a\xa3\xe6\xc8\x8f\x71\x30" - "\x98\x91\x1d\x11\x8d\x76\xdf\x42\xe8\x72\x6b\x41\x3a\x70\x46\x26" - "\x78\x16\xc8\x6a\x21\x66\x81\xdc\xec\xac\x3e\x5d\x8a\x9a\x01\x03" - "\xee\xee\x0a\x34\x1a\xad\xdc\xc9\x4f\x3d\x22\x3b\x48\x67\x43\x7d" - "\x7e\x53\x08\x91\x26\xbf\x7d\x60\x4a\xf4\xfb\x21\xcf\x74\xc9\xc6" - "\x47\x9b\x39\x58\x61\xde\x5d\x3c\xbe\x60\x2e\x2b\x6c\x08\x42\x3e" - "\xe3\x03\x76\x6d\xa8\xac\xba\x11\xb2\xce\x0f\xdb\x95\x6a\x33\xf4" - "\x00\xc9\x66\x13\xd4\x5f\xab\xe7\x1b\x17\x62\xa1\xe6\x4a\x82\x67" - "\x28\xa3\x7b\xf7\x4b\xfc\x57\xcb\x16\x3e\xfe\xb5\xa4\xef\x3b\x35" - "\xdd\x14\xd5\x48\x41\x5e\xa5\x62\xcc\x18\xba\x97\x6c\x75\xe9\x39" - "\x63\xd4\x9d\xce\x2d\x9d\x4c\xc3\x82\xb1\x31\x69\x91\x90\x3e\x6d" - "\x66\xc7\xea\xd3\x88\x02\xd3\x39\x10\x22\x04\x1a\xbf\xc5\x0d\x02" - "\xb8\x7c\x9a\x86\xc5\x04\x87\xef\xaf\x75\xe5\xc7\xe6\x21\xba\xa1" - "\xbd\x9c\x14\x90\xc3\x99\x80\xbb\x61\xe3\xe2\xc1\x79\xf0\xc6\x46" - "\x4f\x38\x86\x35\x93\x1a\x55\xd8\x76\x0f\x7c\xa2\xae\x3b\x6a\xa8" - "\xe4\x74\x74\xc2\x50\x38\xcf\xc5\xda\x85\xee\xe0\x2f\x23\x1a\x83" - "\x17\x54\xa7\x34\xa0\x1f\xd7\xd3\xb2\x53\xe3\x77\xfe\x8e\x97\x49" - "\xc5\x5b\xe0\x5f\xcb\x2c\x90\xe9\x09\x83\x40\x89\x81\x51\xf6\x40" - "\x64\x2c\x89\xca\xcf\x61\xda\x04\x0d\xaf\x3b\x48\xf9\x8a\xfa\x74" - "\x6a\x6a\xe5\x29\x5e\x3a\x6b\xee\xb5\x5e\xa3\x0c\x78\xf1\xe0\xcb" - "\x74\x69\x2c\x7b\xf6\x73\xc1\x53\x20\x8c\x15\x54\x03\x5d\x96\xe3" - "\x6a\x8d\x19\x5d\xec\x5a\xd4\xe3\x6b\x1a\x72\x27\x73\x73\xbb\x2e" - "\x7c\x4e\xbb\x63\x26\xdb\x9d\x9c\xde\x67\xd8\x50\x7c\x85\x1a\xff" - "\xf0\xd0\x12\x4d\x3e\x69\xb1\x2d\x2a\xd1\x28\x4a\xc9\x82\x1e\xd5" - "\xfc\xa3\x64\x0b\x2f\xcc\x4c\xef\x17\xa6\xe5\x0b\xd5\x76\xb4\x33" - "\xff\x3b\x3d\xc3\xb0\x28\xf7\x38\xf5\x7a\x76\x2c\x84\xf7\xcc\x4f" - "\x3a\xdf\x68\xab\xbc\x6b\x24\xac\x84\x8a\x09\x5e\x0d\x89\x9d\x85" - "\x98\xf5\x61\x60\x38\xb0\xdd\x86\xe1\xb5\x42\xa0\x6c\x25\x77\x28" - "\x8f\xf1\x21\xb3\xa8\xed\x8c\xfd\x18\xcf\x23\xae\x2a\x9f\x1c\x67" - "\xc3\x17\x48\x73\x3b\x6e\xbf\x02\x88\xed\x4d\xa2\x86\x07\x6a\x5d" - "\x16\x55\x3b\x87\x29\x88\xd0\x8d\xe3\x30\x3b\x89\x22\x5c\xa2\xb6" - "\xbb\xcf\xda\xd8\x1f\xe4\x7f\xa5\x50\xb9\x8b\xc2\x61\x73\x86\x61" - "\x92\x44\x1b\xc2\x9d\x34\x72\x81\x30\xca\x22\x83\x78\xe0\xa5\xb5" - "\x39\xba\xa3\x46\x7a\x4c\xd9\x2b\x5e\xaf\x42\xdf\xba\x80\x4a\x83" - "\x9c\x20\xe0\x86\x90\x88\x4e\xbf\x7b\xa6\x44\x3d\x7f\x9c\xbe\xc8" - "\xdf\x74\xe8\x2c\xf7\x4b\xc0\x06\x3f\x9e\x23\x30\xe8\x31\xc6\x07" - "\x5b\xc9\x26\xf1\x1c\xc8\xbe\xe3\xc7\xcb\x4f\x1b\x37\x09\xf0\xcf" - "\x0c\x5e\x1d\xac\x1c\xb8\x91\xcf\x0a\x54\x09\x6c\xa9\x4e\x9f\xa1" - "\x36\xde\x41\xa8\x67\xe4\x4c\x65\xc9\x28\x20\x0f\xbd\x49\x74\x7f" - "\x83\x26\x48\xb1\xe6\xca\x6f\xd8\x88\x27\x94\xdd\xa4\xaa\x03\x43" - "\xc6\x19\xab\x8b\x83\x78\x4f\x2a\x51\x34\x98\xff\x27\x6b\xda\x39" - "\xe4\x2e\xf6\xe9\xe7\xd6\x96\x86\x60\x3b\xc3\x80\xb8\xba\x51\x77" - "\x8a\x79\x07\x62\xb1\xaa\xa9\x58\x96\x54\x84\x04\x9e\xee\x24\x8d" - "\xf1\xac\x34\x03\x43\x8e\xd0\x92\xdc\x4d\xbc\xc7\x15\xdc\x82\xfc" - "\x19\x9b\x7e\x43\xe1\x36\xc5\x6b\xfb\xb8\x9e\xf4\x22\x5e\x29\x6f" - "\x4c\x45\xdd\xfe\xcb\x17\x77\xee\xd3\x6b\x80\x50\x96\xd0\x07\xa3" - "\xb2\xf0\x68\xc7\x40\xeb\x24\x16\x23\xa7\x57\xc4\xbb\x9c\x69\x16" - "\x49\x30\xb8\xd9\x4d\x41\x4e\x22\xc6\x24\x7f\x44\x59\x4e\x3c\x46" - "\x61\x64\x60\xc5\x82\xc2\x60\xc5\x63\xe7\xb3\xe1\xb9\xd1\x71\x65" - "\x32\xaa\x88\xa1\x4e\x98\xdb\x0b\x29\xe8\x5a\xa4\xbc\x61\x20\x62" - "\xbc\xea\xb0\x90\x3c\x2f\x29\xef\x74\x87\x4b\x1b\x36\xf7\x01\xde" - "\x30\xf0\x00\xe3\xd7\x2d\xf6\x52\x09\xe1\xe5\x84\x13\x04\xfe\x1f" - "\x2c\x1c\xeb\xfb\x2c\x40\x7d\x4d\xf5\x9c\x6e\x47\xe9\x2d\xb0\xca" - "\x88\x37\xf4\x8d\xbe\x50\xfb\xec\x5e\xee\x5d\x0f\x1a\x71\x42\xe3" - "\xc0\x9c\x57\xe3\x50\xba\x98\x0d\x79\xfa\x56\xe9\x7a\x09\x03\x75" - "\x21\x0f\x97\x69\xe0\xed\x9d\x10\x8f\x64\xdd\xd5\x10\xdc\x3b\x21" - "\x08\xc2\x7e\x7e\xac\x6e\x7c\x0b\xb9\x71\x65\x3e\xfa\x1c\xf3\x13" - "\xdc\x03\x9c\xf2\xa4\x21\xf1\xfc\x07\xaa\xef\xa0\x55\xd7\x21\xfc" - "\x0c\x17\x6a\x06\x57\x6b\x0e\x8e\x1d\xea\xb2\xc8\x23\xb3\xad\x42" - "\x00\x41\xe2\x9c\x1f\x2e\xa8\x51\x19\x3d\xdb\x24\x73\x4a\x8f\x08" - "\x74\xb5\x6b\x58\x48\x7a\x4e\x7b\xa6\x5c\x4b\x81\xd6\x38\xf9\xe5" - "\x66\xe3\x15\x9a\x74\x49\x68\x8e\x5b\x1e\xdd\x3f\x4f\xc8\xe3\x0c" - "\x73\x32\xf0\x35\x16\x8c\xd9\x84\xc3\x9a\x65\x16\x93\x65\x0f\x47" - "\x15\x97\xc8\xb4\x6a\x7f\x91\x0a\x05\xf2\x08\x36\xf0\x7e\x2c\xcb" - "\x79\xc4\xc4\xcb\x5a\xa0\x25\xc9\xe9\xac\x35\x8f\x56\xf6\x87\x4e" - "\x9b\x4b\x9d\x1a\x38\xb0\x43\x41\x94\x07\x17\x78\xec\xd3\x8c\x89" - "\x58\x09\xef\x07\xe1\xd8\x65\x97\x3e\xce\x61\xad\x51\x0a\x48\x3d" - "\x64\xd5\x6e\xa1\xe5\x86\x06\xb7\x22\xcd\x03\x44\xec\x94\x52\x15" - "\x5d\xf6\x9b\xc6\xb6\x22\x49\x5e\xb1\xdb\x01\x24\xd2\xc2\xac\x13" - "\xdc\xec\xb3\x93\x4c\x88\x3b\x11\x6d\x77\xab\x44\x67\x8c\xca\xa8" - "\x18\x47\xe3\xdc\x58\x13\x45\x43\xb3\x7f\xdf\x3a\xdf\xef\x0e\x4f" - "\xc0\xf3\x95\xb6\x7d\xdf\x97\xd7\x0d\x03\x9d\x14\x76\xd6\xae\x5f" - "\xb4\x13\x7f\x2a\xdb\x00\xa2\xe7\xfd\x33\xa6\x4d\x3f\xc1\x14\x58" - "\x7c\x55\x30\x6a\xae\x71\x0f\x73\xe3\x64\x1f\xc5\x2e\x6f\x82\x82" - "\x62\xd2\x02\xde\xf8\x29\x1e\xd5\x71\x3a\xbe\xcd\x43\xf8\x71\x5e" - "\xa1\xce\x68\xca\xcb\x23\xfa\x83\xba\xc2\x0f\x9b\x6b\x86\x5d\x9f", - STR(iv, iv_size, - "\x12\x34\x56\x78\x90\xab\xce\xf0\x00\x00\x00\x00\x00\x00\x00\x00"), - } -}; +const struct cipher_vectors_st kuznyechik_ctr_acpkm_vectors[] = { { + STR(key, key_size, + "\x88\x99\xaa\xbb\xcc\xdd\xee\xff\x00\x11\x22\x33\x44\x55\x66\x77" + "\xfe\xdc\xba\x98\x76\x54\x32\x10\x01\x23\x45\x67\x89\xab\xcd\xef"), + STR(plaintext, plaintext_size, + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11" + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88"), + .ciphertext = + (uint8_t *)"\xf1\x95\xd8\xbe\xc1\x0e\xd1\xdb\xd5\x7b\x5f\xa2\x40\xbd\xa1\xb8" + "\x85\xee\xe7\x33\xf6\xa1\x3e\x5d\xf3\x3c\xe4\xb3\x3c\x45\xde\xe4" + "\xa5\xea\xe8\x8b\xe6\x35\x6e\xd3\xd5\xe8\x77\xf1\x35\x64\xa3\xa5" + "\xcb\x91\xfa\xb1\xf2\x0c\xba\xb6\xd1\xc6\xd1\x58\x20\xbd\xba\x73" + "\x7e\x08\xf5\x9f\x71\xb8\x56\x08\xe3\x89\x55\xb1\x7b\x53\xed\x27" + "\xee\x04\xce\x2c\x02\xae\xf0\x75\x8f\x5d\x64\x77\xea\x0a\x79\xb2" + "\x9f\xc0\xb0\x9a\xf0\x93\xd5\xbf\xb9\xdf\xab\x18\x25\xf7\x51\xc9" + "\x82\x69\x88\x08\x00\x2b\x35\x8e\x2c\x2f\x7c\x01\xdc\x31\x56\x1d" + "\x52\xb4\xca\x07\xbf\x02\xa5\x9a\x80\x88\x91\x19\xf1\x26\x0b\x7f" + "\x9d\x3e\x1c\xe5\xf9\x92\x1a\xf5\xb5\x53\xed\x1e\x1a\xdf\xdc\x53" + "\x9e\x2e\x79\x65\xbd\x7b\x48\x48\x57\x58\x90\x76\x40\x57\x86\x76" + "\x7d\xe3\xb2\x82\x06\xed\xeb\xce\x35\x1b\xcc\x5c\xee\x54\xe4\x3f" + "\x53\x4b\xb5\x0d\x07\x0a\x2d\x0c\xb7\xcf\x7c\xf8\x81\xad\x32\x01" + "\x26\x50\x0f\xe9\x32\xf3\xd7\xc9\xf0\x86\xab\xb8\xf8\xea\x72\x3a" + "\x9a\x17\x48\x12\xa5\xbb\x3b\xa9\x6d\x01\x51\x82\xc0\xe2\x98\x4d" + "\x69\x3c\xbd\x67\x6a\xa0\xb1\x7d\x7a\xa8\x2c\xb8\xe2\xb9\xf6\x68" + "\xfa\xeb\xae\x0d\x41\xcb\xb0\xfe\xe5\x55\x65\xb6\x5d\x56\xe5\x05" + "\x20\x08\x51\x77\x7c\x18\x3a\x25\x69\xaa\xa2\x39\x68\xcf\xd1\x3e" + "\x51\x47\xb5\xd8\x13\xcc\xaf\x2d\x31\xd5\x28\xae\x61\x48\xe6\x9a" + "\x0a\xd8\x30\x0b\x1f\x7c\xef\x3d\x32\xa5\x40\x05\x41\xdf\x84\x1e" + "\xce\xde\xca\x31\x42\xa6\xc4\xbc\x2b\x56\xb7\x7e\xa6\x22\x1f\x85" + "\x7b\xe8\x80\x01\xc1\xff\x78\x45\x14\xb5\x4d\x9b\xe3\x21\xf7\xb8" + "\x13\xd5\x44\x3d\x6f\x33\x85\x46\x56\x07\x79\x15\xb4\xec\xe5\xfd" + "\x34\x35\xc8\x8a\x5f\x4d\x58\x84\x82\x9d\xb6\x4d\x0e\x90\x65\xb0" + "\x5e\x61\x83\x30\x3d\x51\x34\xe3\x0e\x6e\x78\x05\xc8\x6d\x1e\x7d" + "\x76\xe2\x3d\x85\x33\x82\x42\x7c\x7d\x67\x33\xbb\x60\x5e\x4d\xb0" + "\xc8\xd0\x7a\x6c\xbe\x4e\xc8\xc4\x82\x9d\xb6\x25\x56\xc9\x1b\x52" + "\x3b\x9b\x4a\xf5\x8f\x67\x12\xd5\x41\x60\xe6\x97\x08\x90\x7b\x17" + "\x3b\xf9\x1c\x82\x0d\x15\x0a\x3d\x1b\x27\xd4\x46\xd6\x91\x5c\x74" + "\x48\x45\x1a\x4c\x60\x26\xf3\xe3\x1f\xe7\x0a\xfc\x79\x42\x8a\x5f" + "\x5f\x5b\x33\xf4\xb3\xda\xbd\x4c\x4a\x10\x5e\x3b\x9d\x09\xf8\xf2" + "\x51\x25\x44\x37\x7b\xca\x88\xf0\x88\xa9\x5d\x2e\x9e\x42\xf6\xac" + "\x3d\xd6\x01\x06\x06\x5c\x96\x4b\x13\xf5\x5f\xaa\x06\x34\x16\x67" + "\xfd\xa5\x49\x12\xcc\x21\x8f\xb4\xb9\x33\xfc\x58\xf0\x36\xeb\xd7" + "\x50\xf2\x38\x39\x9e\x93\x7b\xf7\xf5\xc7\x9c\x73\x36\x1f\xbe\xa9" + "\x49\xf9\x2c\x4f\x17\xfc\xb3\x64\x51\x68\xaf\xed\xe3\x43\xbf\x2f" + "\x3f\x57\xbb\x74\x93\x51\xc4\x93\x1e\x2e\x05\xed\xda\x74\x27\x1b" + "\x7b\xa8\x98\x3e\xa6\x62\x75\xbd\x68\xab\x44\xe8\xe4\x2d\x2f\x08" + "\x44\x64\x85\xa6\x42\xfe\xdb\x11\xb5\xbc\x1a\x83\xc4\x58\x7a\xd1" + "\x0d\x64\xa2\xdb\xd5\x4c\x3a\xd7\x2a\xd8\xc7\x0b\xf5\x33\x80\xe2" + "\xaa\xc6\xaf\xad\xee\x39\x83\x1c\xfb\xda\x39\xd6\xe4\xbe\x6f\xde" + "\x46\xd1\xdc\xc8\x77\x3b\x42\x3a\x19\x83\xdb\x79\x5e\x9d\xd9\xef" + "\xe7\x54\x9e\xfa\xde\x56\x26\x0e\x33\x44\xb6\xac\xc7\x25\x1f\x0b" + "\xd0\x12\x4a\x75\x6f\xef\x9f\xb7\xe7\xf1\xc3\xb2\x77\xa7\x01\xc1" + "\x24\xf2\x60\xf2\x04\xa4\x07\x47\x25\x81\x2a\x51\x36\x1d\xb3\x42" + "\x3c\xc5\x12\xbb\x53\x89\xc3\x00\xb4\xe8\x0e\xd8\xed\x5d\x9c\x18" + "\x08\x16\x05\x57\x22\x99\xc1\xcb\x97\x4d\x7d\x42\xb0\xbf\xf3\x35" + "\x9e\xc9\xc0\x4e\xe6\x42\xec\x49\x06\x5e\x50\x7f\x6c\x86\x20\x9e" + "\xe0\x49\x6a\x1d\x50\x45\x52\x3d\x66\xdc\x66\xb2\xa1\x57\xbb\x1d" + "\x65\x30\xf9\x3e\x6c\x8b\xf8\x07\x5e\xf9\xb0\xcf\x15\x1f\xa4\x22" + "\xe6\x28\xdf\x40\x44\x27\x80\x99\xbf\xcc\x86\x94\x3d\xe1\x97\xbc" + "\x64\x7b\xc9\x8a\xc8\xb7\xdd\x8e\xd9\x95\xfa\x97\x44\x59\x70\xb6" + "\xa4\x59\xdd\x94\x2a\x4e\x71\x76\xe1\xf8\xff\x2e\xef\xf7\xf3\x26" + "\x0d\xeb\x63\x9b\x34\x74\xcf\xc7\xe4\x99\xb3\x8b\xe5\xf8\xfa\xf8" + "\x60\x6a\x8f\x16\xfe\xb3\x12\xe8\x66\x5c\x26\x61\x11\xaa\x14\x85" + "\x5e\x4c\x0f\xf8\x47\x99\x49\x4c\x22\xa5\x37\xb7\x4b\xed\x1d\x33" + "\x54\xe4\x6f\xfe\x4b\x7e\x95\x44\x56\xa9\xa9\x48\x6f\x40\x08\x42" + "\x28\xa0\xd6\x8e\x52\x72\x84\x87\xd5\xcc\x08\xf4\x34\x9b\xc7\xf7" + "\x92\xac\x5d\x5a\x30\x4c\x87\xc2\x2c\x94\x68\x10\x03\x02\x8c\x38" + "\x6e\xf6\xca\xd1\xd6\x55\x02\x3c\x3a\xf4\x21\x1c\x90\x03\x7c\x33" + "\xcd\x81\x93\x3f\x4c\xa1\xe6\x7c\x7d\x27\xaf\x97\x7a\xd8\xb0\x32" + "\xcb\x1f\xb6\x5d\xb0\x7c\x9e\xf7\x15\x6a\x29\xc9\xb3\x13\x8e\xb2" + "\x2e\xf2\x9d\xb2\x64\xe9\xc7\x13\x86\xc3\x46\x97\x9e\x53\x37\xac" + "\xd1\x75\x0b\xe2\x20\x4a\x5e\x3a\x47\xdf\xb3\x67\x78\x23\x22\xa6" + "\xb6\x69\x83\x1b\x41\xe1\xdc\xe3\xbb\x63\x8e\x6a\x70\xe2\x91\x30" + "\xa2\x48\x43\x07\x9b\xf1\x87\x9d\xd9\x2f\x36\x62\xaf\x51\x70\x10" + "\x5d\x68\x42\x6e\x95\xe6\x86\x85\x90\x08\x80\x42\xc6\x11\x7d\x38" + "\x37\x94\xc7\x7a\x9d\xec\xff\x87\x15\x0d\x30\x42\x7d\xbf\xb0\x21" + "\xa8\x28\xc3\xa9\x56\x31\xda\x2e\x91\x8d\x0d\x78\x93\xe2\x4d\x7f" + "\xb3\xdb\x87\x5b\xf2\x2a\x55\x54\xc4\x1a\x47\x9b\x51\x79\x2c\x55" + "\xaa\xaf\x57\x89\x90\x32\x26\xfa\xcf\x26\x3d\xbd\xc3\x59\x7e\x4b" + "\x53\x7a\xa3\xf8\xec\x31\x3e\x9f\x22\x33\x41\xec\xe5\xf1\x50\x41" + "\x57\x64\x37\x0e\x24\x0f\x03\x0c\x93\xaf\xd7\x44\xef\x33\xf9\x96" + "\x8e\x63\x9c\x79\x09\xdf\x58\xdb\xcd\xd2\xf2\x81\xed\x97\x28\x5e" + "\x6d\x99\x45\xad\xf1\xa4\xe8\x59\xaa\xeb\x59\xbd\xfa\x54\x27\xe2" + "\x01\x6d\xfa\x08\xe5\x1a\x46\x92\x31\xa0\xfd\x2e\x25\x21\x5e\x9d" + "\x1d\x41\x82\x16\x21\xea\xe8\x29\x5a\xe7\xd4\xd8\x7c\x91\x6d\xa8" + "\x69\xa8\x6b\xac\xf9\x3d\x2c\x07\xfa\xaf\x65\x5e\x84\x63\x5c\x1c" + "\xb6\x71\x1c\x6e\x1a\x1a\xcf\x5f\x39\x08\x02\xeb\xde\x75\x28\x44" + "\x90\x3b\x6d\x09\xf5\xa4\x3a\x00\x99\xc1\x6e\xb8\x23\x47\xb6\xe6" + "\x44\x69\x24\x86\x0d\x93\x7d\xc2\x1a\xe7\xf8\x97\x97\x6d\x2f\x7d" + "\x6a\x3e\xd7\x6d\x94\xbe\x9b\xfa\x7d\x40\xff\x35\x7e\x2d\x9c\x50" + "\x71\xf8\x99\x5f\xf3\x53\x16\x59\x77\x72\x4b\xef\x8d\x21\x8c\x28" + "\x15\x8a\x57\x6d\x3d\x35\xf4\x2c\x37\x39\x0e\x97\x8f\xd3\x45\x17" + "\xac\x0b\xa2\xaa\x16\xe7\x98\x70\xbd\x91\x4b\x7b\xc9\x14\x5b\x85" + "\x29\xe5\xd9\x20\xa6\xf3\x89\x63\xc8\x01\x94\x2c\x20\xb0\xf1\x1c" + "\x61\x90\x5b\xe8\xaf\xdb\xe2\x20\x62\x4f\xd0\x3c\x51\x1f\x5f\x14" + "\x28\x13\x07\x5e\xbc\x4a\xa0\x46\xa7\x9c\xc7\x00\x24\xb4\x67\x0d" + "\x9c\xe8\x05\xa7\xe3\x37\x94\xd3\x97\xc5\xd6\x1d\xb3\x79\x0c\x7f" + "\xf0\xeb\x68\xa7\xa9\x75\x30\x3c\xf1\xf8\xfb\x96\x4b\xa5\x99\xb1" + "\xf0\x71\xab\xb4\x8a\xa6\x5d\x97\xb5\x6f\x42\x81\xef\x38\x0e\x41" + "\x21\xcd\x15\xe4\xf1\xdc\x02\xc2\xe5\xe4\xb2\xf2\xdb\xc5\x42\x0f" + "\xeb\x00\xb8\x49\x48\x90\x97\x59\x69\x8c\x3d\x90\xfa\x7f\xaf\x75" + "\xff\xe8\x0f\xff\x13\x2f\x7a\xca\x33\xbc\xb0\x41\x7b\xd4\x94\xce" + "\xd5\xd7\x53\xe5\x36\x9d\xea\x0c\x13\x60\x63\xd9\x79\x83\x53\x03" + "\x3c\x5f\x33\x6b\x16\xd2\xd6\x07\xbd\xbc\xa9\xcd\xd6\x21\x58\x8a" + "\x90\xac\x85\x7c\x0a\x85\xf1\x02\xfd\x6c\x5b\xac\x92\xa5\x6f\xfc" + "\x02\x60\xb3\x05\x91\x31\x80\xd5\x75\x82\xa8\xab\xcc\x7b\x47\xdb" + "\x79\xaf\x85\xea\x75\x2d\xf4\x46\x45\xa6\x24\x35\x2d\xba\x9e\x19" + "\x4e\x48\xb3\x5f\x40\x96\x6c\x73\x44\x09\x67\x27\xee\xdb\xdb\xca" + "\xf6\x14\x3f\x32\xdf\x3b\xd3\xcb\x87\x48\x6b\x03\xda\xfe\xb5\x20" + "\xf8\x72\xd0\xe4\x65\xfd\x14\x5d\x9b\xd3\xc5\x67\x4b\x41\xf4\xcb" + "\xac\xe4\xce\x61\xe0\x06\x8e\xb6\xca\xef\xa5\xe4\x70\xd4\xff\x4f" + "\x4c\x81\xb7\xc7\xc1\xe3\x1d\x6b\xfe\x44\x37\xfe\x7e\xb4\xec\xda" + "\x55\xbc\x26\xdd\x44\x08\x28\x49\x19\xc9\x52\x20\x4a\x5e\xe1\xae" + "\x6b\x87\x35\xa2\x9a\x02\x17\xb0\x74\xe1\x19\x92\xca\x5d\x34\x81" + "\xd7\x3f\xb1\x14\xe2\x44\x97\x7f\xab\x0a\xc3\x44\x8d\x9c\xe6\x27" + "\x84\x5e\x2e\xe1\x0e\x7b\x74\xee\x47\xe2\x6f\x79\x3a\x0d\x25\x90" + "\x9b\x32\x13\x78\xd3\xd1\x19\x10\xb7\x88\xc4\xb4\xb8\x0f\x84\x0c" + "\xc4\x6d\xb3\xbc\xbc\xea\x1d\x84\xfe\x6f\x95\x1e\x44\x78\xbb\x73" + "\xd0\x08\x8b\xbe\xae\x91\x6f\x84\xeb\x6c\x05\x58\x3a\xb7\x68\xee" + "\x62\x14\x0b\xba\xd3\xd6\x78\x23\x35\x03\x2f\xed\xac\xf2\x35\xa7" + "\x0b\xf5\x37\xa1\xa5\x4d\x57\x0e\x2e\x5e\x0d\x0c\xd6\x04\xc8\x07" + "\x60\xe6\xda\xd9\x55\x16\xf6\xc6\x0c\x53\xc0\x46\xa8\x91\xa6\xdd" + "\x22\x99\x88\x9f\x23\x93\x64\x81\xdb\x4b\xe8\x99\x1e\x16\x5c\xb5" + "\x08\xc0\x74\xf9\x79\xd3\xc1\x6a\xe5\x38\x6b\xcd\xf0\xcb\x1e\xb8" + "\x5c\x6b\x14\xd6\x85\x58\xa3\xc8\x3d\x5b\x14\x50\xc4\x70\x97\xb2" + "\xcd\x93\xd6\x3a\x42\x2f\x3a\x88\x28\x8a\xd0\xa7\xe9\x98\x87\xbe" + "\x66\x89\x69\xd9\xbd\x11\x91\xd3\x9b\xc4\x22\x14\xe6\x8f\xc8\xbd" + "\x95\x5d\x3d\xd2\x1d\x10\xbd\x61\x69\x87\xf9\x4a\x9c\x61\x5b\x80" + "\x9b\x3f\x32\xce\x17\xcd\x98\x79\xb9\xeb\x45\xf7\x54\x3c\xc9\xa6" + "\x2e\xb4\x0b\x0d\x84\x0d\x35\xcc\x64\x5f\x5a\x92\xf8\xcb\xd6\xfa" + "\xae\xd9\xce\x9c\x41\x83\xc2\xab\xd5\x73\x21\xea\x95\xd5\x73\x2f" + "\xf1\xd0\x71\x95\x45\x07\x7c\x1f\xcc\xba\xf3\xb0\x75\xfa\x1a\xd4" + "\x89\x66\x4e\x93\x93\x80\xb7\x67\xd5\xdf\x99\xd8\x43\x6d\xf6\xde" + "\x19\xc8\x13\x56\xf8\x63\xe5\xf2\x53\xfd\x2e\x62\x8d\xde\x92\xd4" + "\x98\xfc\x1c\x36\x08\x3d\x33\x0f\xee\xbc\xb8\x2f\x49\xa2\xb3\xb4" + "\x9b\x0c\x7e\x16\xd4\xe8\xc0\x98\xd0\x5c\xda\x25\xaa\xe4\x60\x95" + "\xe6\xc5\x7b\x62\xa5\xe9\xbc\xa1\x5e\x11\x4f\x5d\xb4\x19\x29\x33" + "\x6f\xff\xf4\xef\x7f\x62\x2b\xf2\xbd\x47\x90\xcb\xba\xbc\xe8\xa8" + "\xd7\xcf\xac\x44\x05\x67\xf3\xd3\x93\x22\xc0\x48\x23\xdf\xef\x54" + "\x3d\x64\xc7\x13\xfd\x4f\x0a\x21\x20\x2b\xad\x34\x88\x02\x69\x84" + "\xaf\x8a\xfb\xbb\x97\x7d\xca\x0e\x80\xdc\x8a\x50\x51\x49\xc8\x1f" + "\xbd\x35\x46\x11\xf6\xdf\x52\x29\xc2\x52\xc4\xae\xd5\x16\xbb\x67" + "\x21\x7b\x25\xeb\xc4\x21\x0d\xc7\x3f\x1b\xae\x42\xc2\x21\x58\x1e" + "\x32\x46\x0d\x72\x15\x89\x75\xaa\xd9\x0b\x2d\xa7\x25\x3a\x2a\x3d" + "\xc6\x46\xd1\xa3\x9d\xed\x52\xd8\xbb\x53\xb9\x1f\x6d\xfc\x63\xb7" + "\x28\xa1\x78\x78\x18\x43\xa2\x3d\x6f\xcd\x6a\x40\x6a\xc2\x44\x88" + "\x59\x03\xdd\xd3\x47\x8d\x3d\xe2\x24\xc2\x11\x00\xb1\x2e\xc7\x24" + "\x81\x4b\xc0\x9c\x90\x64\xb7\x8b\xfb\x3a\xdc\x69\xe1\x4c\xf4\xc4" + "\xc7\x78\x5a\xca\xf8\x6f\x16\xa0\xb8\xe3\xb0\x66\x94\xab\x7a\x86" + "\x5c\xa8\xb9\x7f\xf7\x6a\x64\x1d\x8f\x03\xcf\x4b\x4b\xb0\xd8\xc2" + "\xc2\xea\x02\x5a\xaa\x14\x19\x8f\x60\x49\x5b\xf4\x05\xc8\x98\x30" + "\xeb\xbc\x00\x12\xa4\xc0\x27\x5f\x38\x91\x89\x73\xfa\xb7\xc1\x3a" + "\xf4\x7c\x18\xe4\xe7\x7f\x8c\x82\x51\xb0\x64\x2b\x9d\xa3\x98\x47" + "\x67\xe4\x0f\x1f\x30\x8e\x78\x0a\x3e\xc4\xa8\xc4\x1c\x79\x0a\x09" + "\x91\xbd\xa1\x6a\xab\x47\xce\x54\x24\xda\x4b\xa6\x7b\x40\x43\x92" + "\xd5\x43\xbb\x50\x53\x54\x1d\xf0\x0c\x87\x01\xc0\x82\x0a\xf0\xd8" + "\x7d\xd7\x22\xfc\x33\x59\xf7\x54\x87\x5c\x45\xc8\x2d\x92\x6d\x3a" + "\xfc\x90\x03\xa9\x23\xa8\xa3\xa5\x00\x3d\x3f\x7d\x9f\x6c\x7a\xba" + "\xdd\xff\xfd\x09\x04\x9b\x82\xea\x9f\x0e\x05\x92\xed\x08\x24\x1d" + "\x00\xfa\xac\x61\xf0\xe7\xc7\x37\x7e\x0d\x73\x38\x3e\x7a\x63\xcb" + "\x4e\x26\x21\xd6\x50\x12\xe4\x95\x1e\xc7\xd0\xed\xcb\xf9\xbf\x1d" + "\x34\x81\x81\xa4\x0e\xeb\xf6\xe8\xc5\x1e\x98\xca\x79\xad\x15\x3c" + "\xdc\xf5\xe3\xa9\xfe\xe9\x4c\x6a\xc5\x79\x55\x89\x18\xf2\xd1\x86" + "\x4e\xd6\x95\x38\xf8\x78\x0b\xfc\x50\x40\x72\xd4\x3c\x45\xdf\xaa" + "\x13\x1e\x9e\x74\xff\xde\xa9\x33\x5e\xa8\xa1\x70\x75\xd7\x7c\x4f" + "\x71\xf1\x03\xb3\xfb\x0f\xad\x19\x4f\x5d\xfe\xbb\xc5\x98\x81\x11" + "\xee\x24\x24\x13\xa4\xa4\xfe\x40\x4b\x20\x38\x61\x6e\xe3\xec\x05" + "\x15\x46\x35\x2d\xd4\x61\x7d\x0f\x4a\x34\xf1\x23\x87\x5e\xc6\x8e" + "\xf5\x77\x8c\x03\x4b\x58\xe2\x3b\x35\x08\x2f\x40\x60\xd6\xe3\x3a" + "\xf0\xb4\xdd\xb9\x18\xfc\x7d\x79\x7a\xf3\x0a\x5c\x89\x2e\xcc\x30" + "\x9b\x8f\x7e\x3c\xd3\x1d\x45\xcb\xfb\xb5\x09\xe8\x6e\xd4\x87\xb0" + "\xc5\x5c\x0e\x70\xec\xd9\x04\xb2\xc1\x44\x9b\x78\x4f\x46\x92\x4b" + "\x18\x0b\x90\xaa\xe3\xf9\x11\x8d\xf8\x9e\x5e\xc6\x2e\xfb\x9f\xba" + "\x31\x49\x9e\x9d\xb7\xb8\x5c\x0b\x09\xcf\x45\xb0\x82\x9d\x6a\xd7" + "\xeb\x1d\x79\x6f\x26\x1a\xec\x5d\x16\xb1\xa8\xc5\x90\x00\x9a\x79" + "\x51\x9b\xab\x79\x09\xa1\x7f\x65\x74\xa0\xf8\x54\xfd\xf3\x74\x52" + "\x80\x09\x25\x33\xa4\xd5\x22\xba\x79\xc0\x77\xe0\x56\xfb\x19\xa9" + "\x8f\x23\x16\x29\xa9\x39\x54\x10\x0d\x85\xb9\x20\xd3\x27\xa2\x7d" + "\xe4\x81\x9e\x0a\x4a\xc4\xf6\xef\xc7\x0b\xb8\x6a\x50\xa9\xed\x72" + "\xb4\x79\x01\xf3\xc3\x89\x5d\x19\x5e\x9a\xf1\x35\x14\xcc\x04\x4c" + "\x2d\xe5\x0f\xd8\x07\xee\x50\xee\x3f\xaf\x74\x86\xcd\xc5\xf8\x34" + "\x0f\xeb\x32\x7f\x36\xcc\x03\xa8\xbc\xde\xd9\xf8\xfc\x01\x73\x83" + "\x74\x4a\x26\xdc\x70\x1a\x76\x71\x5a\xee\xac\x0b\xe0\xdb\x16\xd4" + "\x26\x7c\xfb\xb8\x96\x74\x00\x7d\xb8\x5c\x4a\x07\xfc\x9e\xc9\xff" + "\x4a\xd0\xaf\x86\x4b\xb0\xc6\x29\x8e\x3f\x2e\x9f\xa0\x33\xd3\xdf" + "\xb9\xe0\xd5\x48\xb9\xf0\x08\x7e\xae\xdd\xd0\x2e\xf5\x41\xd8\xa3" + "\x9a\xff\x76\x93\x04\x7a\xef\xd2\xf5\xb8\x05\xa1\x55\x8e\xe8\x03" + "\x9f\x6e\xd9\xc4\x75\xd0\xfe\x75\xd1\x77\x3f\x22\xbe\x2e\xc7\x27" + "\x10\x4e\x2c\xab\x2f\x38\x53\xcb\xe7\x27\x9d\xff\xd8\x86\xb7\xca" + "\xc1\x7e\xeb\x23\xd8\x8f\x5e\x85\xa3\x2a\xa3\xe6\xc8\x8f\x71\x30" + "\x98\x91\x1d\x11\x8d\x76\xdf\x42\xe8\x72\x6b\x41\x3a\x70\x46\x26" + "\x78\x16\xc8\x6a\x21\x66\x81\xdc\xec\xac\x3e\x5d\x8a\x9a\x01\x03" + "\xee\xee\x0a\x34\x1a\xad\xdc\xc9\x4f\x3d\x22\x3b\x48\x67\x43\x7d" + "\x7e\x53\x08\x91\x26\xbf\x7d\x60\x4a\xf4\xfb\x21\xcf\x74\xc9\xc6" + "\x47\x9b\x39\x58\x61\xde\x5d\x3c\xbe\x60\x2e\x2b\x6c\x08\x42\x3e" + "\xe3\x03\x76\x6d\xa8\xac\xba\x11\xb2\xce\x0f\xdb\x95\x6a\x33\xf4" + "\x00\xc9\x66\x13\xd4\x5f\xab\xe7\x1b\x17\x62\xa1\xe6\x4a\x82\x67" + "\x28\xa3\x7b\xf7\x4b\xfc\x57\xcb\x16\x3e\xfe\xb5\xa4\xef\x3b\x35" + "\xdd\x14\xd5\x48\x41\x5e\xa5\x62\xcc\x18\xba\x97\x6c\x75\xe9\x39" + "\x63\xd4\x9d\xce\x2d\x9d\x4c\xc3\x82\xb1\x31\x69\x91\x90\x3e\x6d" + "\x66\xc7\xea\xd3\x88\x02\xd3\x39\x10\x22\x04\x1a\xbf\xc5\x0d\x02" + "\xb8\x7c\x9a\x86\xc5\x04\x87\xef\xaf\x75\xe5\xc7\xe6\x21\xba\xa1" + "\xbd\x9c\x14\x90\xc3\x99\x80\xbb\x61\xe3\xe2\xc1\x79\xf0\xc6\x46" + "\x4f\x38\x86\x35\x93\x1a\x55\xd8\x76\x0f\x7c\xa2\xae\x3b\x6a\xa8" + "\xe4\x74\x74\xc2\x50\x38\xcf\xc5\xda\x85\xee\xe0\x2f\x23\x1a\x83" + "\x17\x54\xa7\x34\xa0\x1f\xd7\xd3\xb2\x53\xe3\x77\xfe\x8e\x97\x49" + "\xc5\x5b\xe0\x5f\xcb\x2c\x90\xe9\x09\x83\x40\x89\x81\x51\xf6\x40" + "\x64\x2c\x89\xca\xcf\x61\xda\x04\x0d\xaf\x3b\x48\xf9\x8a\xfa\x74" + "\x6a\x6a\xe5\x29\x5e\x3a\x6b\xee\xb5\x5e\xa3\x0c\x78\xf1\xe0\xcb" + "\x74\x69\x2c\x7b\xf6\x73\xc1\x53\x20\x8c\x15\x54\x03\x5d\x96\xe3" + "\x6a\x8d\x19\x5d\xec\x5a\xd4\xe3\x6b\x1a\x72\x27\x73\x73\xbb\x2e" + "\x7c\x4e\xbb\x63\x26\xdb\x9d\x9c\xde\x67\xd8\x50\x7c\x85\x1a\xff" + "\xf0\xd0\x12\x4d\x3e\x69\xb1\x2d\x2a\xd1\x28\x4a\xc9\x82\x1e\xd5" + "\xfc\xa3\x64\x0b\x2f\xcc\x4c\xef\x17\xa6\xe5\x0b\xd5\x76\xb4\x33" + "\xff\x3b\x3d\xc3\xb0\x28\xf7\x38\xf5\x7a\x76\x2c\x84\xf7\xcc\x4f" + "\x3a\xdf\x68\xab\xbc\x6b\x24\xac\x84\x8a\x09\x5e\x0d\x89\x9d\x85" + "\x98\xf5\x61\x60\x38\xb0\xdd\x86\xe1\xb5\x42\xa0\x6c\x25\x77\x28" + "\x8f\xf1\x21\xb3\xa8\xed\x8c\xfd\x18\xcf\x23\xae\x2a\x9f\x1c\x67" + "\xc3\x17\x48\x73\x3b\x6e\xbf\x02\x88\xed\x4d\xa2\x86\x07\x6a\x5d" + "\x16\x55\x3b\x87\x29\x88\xd0\x8d\xe3\x30\x3b\x89\x22\x5c\xa2\xb6" + "\xbb\xcf\xda\xd8\x1f\xe4\x7f\xa5\x50\xb9\x8b\xc2\x61\x73\x86\x61" + "\x92\x44\x1b\xc2\x9d\x34\x72\x81\x30\xca\x22\x83\x78\xe0\xa5\xb5" + "\x39\xba\xa3\x46\x7a\x4c\xd9\x2b\x5e\xaf\x42\xdf\xba\x80\x4a\x83" + "\x9c\x20\xe0\x86\x90\x88\x4e\xbf\x7b\xa6\x44\x3d\x7f\x9c\xbe\xc8" + "\xdf\x74\xe8\x2c\xf7\x4b\xc0\x06\x3f\x9e\x23\x30\xe8\x31\xc6\x07" + "\x5b\xc9\x26\xf1\x1c\xc8\xbe\xe3\xc7\xcb\x4f\x1b\x37\x09\xf0\xcf" + "\x0c\x5e\x1d\xac\x1c\xb8\x91\xcf\x0a\x54\x09\x6c\xa9\x4e\x9f\xa1" + "\x36\xde\x41\xa8\x67\xe4\x4c\x65\xc9\x28\x20\x0f\xbd\x49\x74\x7f" + "\x83\x26\x48\xb1\xe6\xca\x6f\xd8\x88\x27\x94\xdd\xa4\xaa\x03\x43" + "\xc6\x19\xab\x8b\x83\x78\x4f\x2a\x51\x34\x98\xff\x27\x6b\xda\x39" + "\xe4\x2e\xf6\xe9\xe7\xd6\x96\x86\x60\x3b\xc3\x80\xb8\xba\x51\x77" + "\x8a\x79\x07\x62\xb1\xaa\xa9\x58\x96\x54\x84\x04\x9e\xee\x24\x8d" + "\xf1\xac\x34\x03\x43\x8e\xd0\x92\xdc\x4d\xbc\xc7\x15\xdc\x82\xfc" + "\x19\x9b\x7e\x43\xe1\x36\xc5\x6b\xfb\xb8\x9e\xf4\x22\x5e\x29\x6f" + "\x4c\x45\xdd\xfe\xcb\x17\x77\xee\xd3\x6b\x80\x50\x96\xd0\x07\xa3" + "\xb2\xf0\x68\xc7\x40\xeb\x24\x16\x23\xa7\x57\xc4\xbb\x9c\x69\x16" + "\x49\x30\xb8\xd9\x4d\x41\x4e\x22\xc6\x24\x7f\x44\x59\x4e\x3c\x46" + "\x61\x64\x60\xc5\x82\xc2\x60\xc5\x63\xe7\xb3\xe1\xb9\xd1\x71\x65" + "\x32\xaa\x88\xa1\x4e\x98\xdb\x0b\x29\xe8\x5a\xa4\xbc\x61\x20\x62" + "\xbc\xea\xb0\x90\x3c\x2f\x29\xef\x74\x87\x4b\x1b\x36\xf7\x01\xde" + "\x30\xf0\x00\xe3\xd7\x2d\xf6\x52\x09\xe1\xe5\x84\x13\x04\xfe\x1f" + "\x2c\x1c\xeb\xfb\x2c\x40\x7d\x4d\xf5\x9c\x6e\x47\xe9\x2d\xb0\xca" + "\x88\x37\xf4\x8d\xbe\x50\xfb\xec\x5e\xee\x5d\x0f\x1a\x71\x42\xe3" + "\xc0\x9c\x57\xe3\x50\xba\x98\x0d\x79\xfa\x56\xe9\x7a\x09\x03\x75" + "\x21\x0f\x97\x69\xe0\xed\x9d\x10\x8f\x64\xdd\xd5\x10\xdc\x3b\x21" + "\x08\xc2\x7e\x7e\xac\x6e\x7c\x0b\xb9\x71\x65\x3e\xfa\x1c\xf3\x13" + "\xdc\x03\x9c\xf2\xa4\x21\xf1\xfc\x07\xaa\xef\xa0\x55\xd7\x21\xfc" + "\x0c\x17\x6a\x06\x57\x6b\x0e\x8e\x1d\xea\xb2\xc8\x23\xb3\xad\x42" + "\x00\x41\xe2\x9c\x1f\x2e\xa8\x51\x19\x3d\xdb\x24\x73\x4a\x8f\x08" + "\x74\xb5\x6b\x58\x48\x7a\x4e\x7b\xa6\x5c\x4b\x81\xd6\x38\xf9\xe5" + "\x66\xe3\x15\x9a\x74\x49\x68\x8e\x5b\x1e\xdd\x3f\x4f\xc8\xe3\x0c" + "\x73\x32\xf0\x35\x16\x8c\xd9\x84\xc3\x9a\x65\x16\x93\x65\x0f\x47" + "\x15\x97\xc8\xb4\x6a\x7f\x91\x0a\x05\xf2\x08\x36\xf0\x7e\x2c\xcb" + "\x79\xc4\xc4\xcb\x5a\xa0\x25\xc9\xe9\xac\x35\x8f\x56\xf6\x87\x4e" + "\x9b\x4b\x9d\x1a\x38\xb0\x43\x41\x94\x07\x17\x78\xec\xd3\x8c\x89" + "\x58\x09\xef\x07\xe1\xd8\x65\x97\x3e\xce\x61\xad\x51\x0a\x48\x3d" + "\x64\xd5\x6e\xa1\xe5\x86\x06\xb7\x22\xcd\x03\x44\xec\x94\x52\x15" + "\x5d\xf6\x9b\xc6\xb6\x22\x49\x5e\xb1\xdb\x01\x24\xd2\xc2\xac\x13" + "\xdc\xec\xb3\x93\x4c\x88\x3b\x11\x6d\x77\xab\x44\x67\x8c\xca\xa8" + "\x18\x47\xe3\xdc\x58\x13\x45\x43\xb3\x7f\xdf\x3a\xdf\xef\x0e\x4f" + "\xc0\xf3\x95\xb6\x7d\xdf\x97\xd7\x0d\x03\x9d\x14\x76\xd6\xae\x5f" + "\xb4\x13\x7f\x2a\xdb\x00\xa2\xe7\xfd\x33\xa6\x4d\x3f\xc1\x14\x58" + "\x7c\x55\x30\x6a\xae\x71\x0f\x73\xe3\x64\x1f\xc5\x2e\x6f\x82\x82" + "\x62\xd2\x02\xde\xf8\x29\x1e\xd5\x71\x3a\xbe\xcd\x43\xf8\x71\x5e" + "\xa1\xce\x68\xca\xcb\x23\xfa\x83\xba\xc2\x0f\x9b\x6b\x86\x5d\x9f", + STR(iv, iv_size, + "\x12\x34\x56\x78\x90\xab\xce\xf0\x00\x00\x00\x00\x00\x00\x00\x00"), +} }; const struct cipher_vectors_st aes128_xts_vectors[] = { { - STR(key, key_size, - "\xa1\xb9\x0c\xba\x3f\x06\xac\x35\x3b\x2c\x34\x38\x76\x08\x17\x62" - "\x09\x09\x23\x02\x6e\x91\x77\x18\x15\xf2\x9d\xab\x01\x93\x2f\x2f"), - STR(plaintext, plaintext_size, - "\xeb\xab\xce\x95\xb1\x4d\x3c\x8d\x6f\xb3\x50\x39\x07\x90\x31\x1c"), - .ciphertext = (uint8_t *) - "\x77\x8a\xe8\xb4\x3c\xb9\x8d\x5a\x82\x50\x81\xd5\xbe\x47\x1c\x63", - STR(iv, iv_size, - "\x4f\xae\xf7\x11\x7c\xda\x59\xc6\x6e\x4b\x92\x01\x3e\x76\x8a\xd5"), - }, - { - STR(key, key_size, - "\x75\x03\x72\xc3\xd8\x2f\x63\x38\x28\x67\xbe\x66\x62\xac\xfa\x4a" - "\x25\x9b\xe3\xfa\x9b\xc6\x62\xa1\x15\x4f\xfa\xae\xd8\xb4\x48\xa5"), - STR(plaintext, plaintext_size, - "\xd8\xe3\xa5\x65\x59\xa4\x36\xce\x0d\x8b\x21\x2c\x80\xa8\x8b\x23" - "\xaf\x62\xb0\xe5\x98\xf2\x08\xe0\x3c\x1f\x2e\x9f\xa5\x63\xa5\x4b"), - .ciphertext = (uint8_t *) - "\x49\x5f\x78\x55\x53\x5e\xfd\x13\x34\x64\xdc\x9a\x9a\xbf\x8a\x0f" - "\x28\xfa\xcb\xce\x21\xbd\x3c\x22\x17\x8e\xc4\x89\xb7\x99\xe4\x91", - STR(iv, iv_size, - "\x93\xa2\x92\x54\xc4\x7e\x42\x60\x66\x96\x21\x30\x7d\x4f\x5c\xd3"), - }, + STR(key, key_size, + "\xa1\xb9\x0c\xba\x3f\x06\xac\x35\x3b\x2c\x34\x38\x76\x08\x17\x62" + "\x09\x09\x23\x02\x6e\x91\x77\x18\x15\xf2\x9d\xab\x01\x93\x2f\x2f"), + STR(plaintext, plaintext_size, + "\xeb\xab\xce\x95\xb1\x4d\x3c\x8d\x6f\xb3\x50\x39\x07\x90\x31\x1c"), + .ciphertext = + (uint8_t *)"\x77\x8a\xe8\xb4\x3c\xb9\x8d\x5a\x82\x50\x81\xd5\xbe\x47\x1c\x63", + STR(iv, iv_size, + "\x4f\xae\xf7\x11\x7c\xda\x59\xc6\x6e\x4b\x92\x01\x3e\x76\x8a\xd5"), + }, + { + STR(key, key_size, + "\x75\x03\x72\xc3\xd8\x2f\x63\x38\x28\x67\xbe\x66\x62\xac\xfa\x4a" + "\x25\x9b\xe3\xfa\x9b\xc6\x62\xa1\x15\x4f\xfa\xae\xd8\xb4\x48\xa5"), + STR(plaintext, plaintext_size, + "\xd8\xe3\xa5\x65\x59\xa4\x36\xce\x0d\x8b\x21\x2c\x80\xa8\x8b\x23" + "\xaf\x62\xb0\xe5\x98\xf2\x08\xe0\x3c\x1f\x2e\x9f\xa5\x63\xa5\x4b"), + .ciphertext = + (uint8_t *)"\x49\x5f\x78\x55\x53\x5e\xfd\x13\x34\x64\xdc\x9a\x9a\xbf\x8a\x0f" + "\x28\xfa\xcb\xce\x21\xbd\x3c\x22\x17\x8e\xc4\x89\xb7\x99\xe4\x91", + STR(iv, iv_size, + "\x93\xa2\x92\x54\xc4\x7e\x42\x60\x66\x96\x21\x30\x7d\x4f\x5c\xd3"), + }, }; const struct cipher_vectors_st aes256_xts_vectors[] = { { - STR(key, key_size, - "\x1e\xa6\x61\xc5\x8d\x94\x3a\x0e\x48\x01\xe4\x2f\x4b\x09\x47\x14" - "\x9e\x7f\x9f\x8e\x3e\x68\xd0\xc7\x50\x52\x10\xbd\x31\x1a\x0e\x7c" - "\xd6\xe1\x3f\xfd\xf2\x41\x8d\x8d\x19\x11\xc0\x04\xcd\xa5\x8d\xa3" - "\xd6\x19\xb7\xe2\xb9\x14\x1e\x58\x31\x8e\xea\x39\x2c\xf4\x1b\x08"), - STR(plaintext, plaintext_size, - "\x2e\xed\xea\x52\xcd\x82\x15\xe1\xac\xc6\x47\xe8\x10\xbb\xc3\x64" - "\x2e\x87\x28\x7f\x8d\x2e\x57\xe3\x6c\x0a\x24\xfb\xc1\x2a\x20\x2e"), - .ciphertext = (uint8_t *) - "\xcb\xaa\xd0\xe2\xf6\xce\xa3\xf5\x0b\x37\xf9\x34\xd4\x6a\x9b\x13" - "\x0b\x9d\x54\xf0\x7e\x34\xf3\x6a\xf7\x93\xe8\x6f\x73\xc6\xd7\xdb", - STR(iv, iv_size, - "\xad\xf8\xd9\x26\x27\x46\x4a\xd2\xf0\x42\x8e\x84\xa9\xf8\x75\x64"), - }, -}; - -const struct cipher_aead_vectors_st aes128_siv_vectors[] = { - { - STR(key, key_size, - "\x7f\x7e\x7d\x7c\x7b\x7a\x79\x78\x77\x76\x75\x74\x73\x72\x71\x70" - "\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"), - STR(auth, auth_size, - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xdd\xee\xff" - "\xde\xad\xda\xda\xde\xad\xda\xda\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x77\x66\x55\x44\x33\x22\x11\x00"), - STR(plaintext, plaintext_size, - "\x74\x68\x69\x73\x20\x69\x73\x20\x73\x6f\x6d\x65\x20\x70\x6c\x61" - "\x69\x6e\x74\x65\x78\x74\x20\x74\x6f\x20\x65\x6e\x63\x72\x79\x70" - "\x74\x20\x75\x73\x69\x6e\x67\x20\x53\x49\x56\x2d\x41\x45\x53"), - .ciphertext = (uint8_t *) - "\xa4\xff\xb8\x7f\xdb\xa9\x7c\x89\x44\xa6\x23\x25\xf1\x33\xb4\xe0" - "\x1c\xa5\x52\x76\xe2\x26\x1c\x1a\x1d\x1d\x42\x48\xd1\xda\x30\xba" - "\x52\xb9\xc8\xd7\x95\x5d\x65\xc8\xd2\xce\x6e\xb7\xe3\x67\xd0", - STR(iv, iv_size, - "\x02\x03\x04"), - .tag_size = 16, - .tag = (void *) - "\xf1\xdb\xa3\x3d\xe5\xb3\x36\x9e\x88\x3f\x67\xb6\xfc\x82\x3c\xee", - .tag_prepended = 1, - } -}; - -const struct cipher_aead_vectors_st aes256_siv_vectors[] = { - { - STR(key, key_size, - "\xc2\x7d\xf2\xfd\xae\xc3\x5d\x4a\x2a\x41\x2a\x50\xc3\xe8\xc4\x7d" - "\x2d\x56\x8e\x91\xa3\x8e\x54\x14\x8a\xbd\xc0\xb6\xe8\x6c\xaf\x87" - "\x69\x5c\x0a\x8a\xdf\x4c\x5f\x8e\xb2\xc6\xc8\xb1\x36\x52\x98\x64" - "\xf3\xb8\x4b\x3a\xe8\xe3\x67\x6c\xe7\x60\xc4\x61\xf3\xa1\x3e\x83"), - STR(auth, auth_size, - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xdd\xee\xff" - "\xde\xad\xda\xda\xde\xad\xda\xda\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x77\x66\x55\x44\x33\x22\x11\x00"), - STR(plaintext, plaintext_size, - "\x74\x68\x69\x73\x20\x69\x73\x20\x73\x6f\x6d\x65\x20\x70\x6c\x61" - "\x69\x6e\x74\x65\x78\x74\x20\x74\x6f\x20\x65\x6e\x63\x72\x79\x70" - "\x74\x20\x75\x73\x69\x6e\x67\x20\x53\x49\x56\x2d\x41\x45\x53"), - .ciphertext = (uint8_t *) - "\x50\x93\x3d\xa8\x04\x7b\xc3\x06\xfa\xba\xf0\xc3\xd9\xfa\x84\x71" - "\xc7\x0a\x7d\xef\x39\xa2\xf9\x1d\x68\xa2\x02\x1c\x99\xac\x7e\x2a\x24" - "\x53\x5a\x13\x4b\xa2\x3e\xc1\x57\x87\xce\xbe\x5c\x53\xcc", - STR(iv, iv_size, - "\x09\xf9\x11\x02\x9d\x74\xe3\x5b\xd8\x41\x56\xc5\x63\x56\x88\xc0"), - .tag_size = 16, - .tag = (void *) - "\x5a\x97\x9b\x0d\xa5\x8f\xde\x80\x51\x62\x1a\xe6\xbf\x96\xfe\xda", - .tag_prepended = 1, - } -}; - -const struct cipher_vectors_st chacha20_32_vectors[] = { /* RFC8439 */ - { - STR(key, key_size, - "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"), - STR(plaintext, plaintext_size, - "\x4c\x61\x64\x69\x65\x73\x20\x61\x6e\x64\x20\x47\x65\x6e\x74\x6c\x65\x6d\x65\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x63\x6c\x61\x73\x73\x20\x6f\x66\x20\x27\x39\x39\x3a\x20\x49\x66\x20\x49\x20\x63\x6f\x75\x6c\x64\x20\x6f\x66\x66\x65\x72\x20\x79\x6f\x75\x20\x6f\x6e\x6c\x79\x20\x6f\x6e\x65\x20\x74\x69\x70\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x66\x75\x74\x75\x72\x65\x2c\x20\x73\x75\x6e\x73\x63\x72\x65\x65\x6e\x20\x77\x6f\x75\x6c\x64\x20\x62\x65\x20\x69\x74\x2e"), - .ciphertext = (uint8_t *) - "\x6e\x2e\x35\x9a\x25\x68\xf9\x80\x41\xba\x07\x28\xdd\x0d\x69\x81\xe9\x7e\x7a\xec\x1d\x43\x60\xc2\x0a\x27\xaf\xcc\xfd\x9f\xae\x0b\xf9\x1b\x65\xc5\x52\x47\x33\xab\x8f\x59\x3d\xab\xcd\x62\xb3\x57\x16\x39\xd6\x24\xe6\x51\x52\xab\x8f\x53\x0c\x35\x9f\x08\x61\xd8\x07\xca\x0d\xbf\x50\x0d\x6a\x61\x56\xa3\x8e\x08\x8a\x22\xb6\x5e\x52\xbc\x51\x4d\x16\xcc\xf8\x06\x81\x8c\xe9\x1a\xb7\x79\x37\x36\x5a\xf9\x0b\xbf\x74\xa3\x5b\xe6\xb4\x0b\x8e\xed\xf2\x78\x5e\x42\x87\x4d", - STR(iv, iv_size, - "\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00") - }, + STR(key, key_size, + "\x1e\xa6\x61\xc5\x8d\x94\x3a\x0e\x48\x01\xe4\x2f\x4b\x09\x47\x14" + "\x9e\x7f\x9f\x8e\x3e\x68\xd0\xc7\x50\x52\x10\xbd\x31\x1a\x0e\x7c" + "\xd6\xe1\x3f\xfd\xf2\x41\x8d\x8d\x19\x11\xc0\x04\xcd\xa5\x8d\xa3" + "\xd6\x19\xb7\xe2\xb9\x14\x1e\x58\x31\x8e\xea\x39\x2c\xf4\x1b\x08"), + STR(plaintext, plaintext_size, + "\x2e\xed\xea\x52\xcd\x82\x15\xe1\xac\xc6\x47\xe8\x10\xbb\xc3\x64" + "\x2e\x87\x28\x7f\x8d\x2e\x57\xe3\x6c\x0a\x24\xfb\xc1\x2a\x20\x2e"), + .ciphertext = + (uint8_t *)"\xcb\xaa\xd0\xe2\xf6\xce\xa3\xf5\x0b\x37\xf9\x34\xd4\x6a\x9b\x13" + "\x0b\x9d\x54\xf0\x7e\x34\xf3\x6a\xf7\x93\xe8\x6f\x73\xc6\xd7\xdb", + STR(iv, iv_size, + "\xad\xf8\xd9\x26\x27\x46\x4a\xd2\xf0\x42\x8e\x84\xa9\xf8\x75\x64"), + }, +}; + +const struct cipher_aead_vectors_st aes128_siv_vectors[] = { { + STR(key, key_size, + "\x7f\x7e\x7d\x7c\x7b\x7a\x79\x78\x77\x76\x75\x74\x73\x72\x71\x70" + "\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"), + STR(auth, auth_size, + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xdd\xee\xff" + "\xde\xad\xda\xda\xde\xad\xda\xda\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x77\x66\x55\x44\x33\x22\x11\x00"), + STR(plaintext, plaintext_size, + "\x74\x68\x69\x73\x20\x69\x73\x20\x73\x6f\x6d\x65\x20\x70\x6c\x61" + "\x69\x6e\x74\x65\x78\x74\x20\x74\x6f\x20\x65\x6e\x63\x72\x79\x70" + "\x74\x20\x75\x73\x69\x6e\x67\x20\x53\x49\x56\x2d\x41\x45\x53"), + .ciphertext = + (uint8_t *)"\xa4\xff\xb8\x7f\xdb\xa9\x7c\x89\x44\xa6\x23\x25\xf1\x33\xb4\xe0" + "\x1c\xa5\x52\x76\xe2\x26\x1c\x1a\x1d\x1d\x42\x48\xd1\xda\x30\xba" + "\x52\xb9\xc8\xd7\x95\x5d\x65\xc8\xd2\xce\x6e\xb7\xe3\x67\xd0", + STR(iv, iv_size, "\x02\x03\x04"), + .tag_size = 16, + .tag = (void *)"\xf1\xdb\xa3\x3d\xe5\xb3\x36\x9e\x88\x3f\x67\xb6\xfc\x82\x3c\xee", + .tag_prepended = 1, +} }; + +const struct cipher_aead_vectors_st aes256_siv_vectors[] = { { + STR(key, key_size, + "\xc2\x7d\xf2\xfd\xae\xc3\x5d\x4a\x2a\x41\x2a\x50\xc3\xe8\xc4\x7d" + "\x2d\x56\x8e\x91\xa3\x8e\x54\x14\x8a\xbd\xc0\xb6\xe8\x6c\xaf\x87" + "\x69\x5c\x0a\x8a\xdf\x4c\x5f\x8e\xb2\xc6\xc8\xb1\x36\x52\x98\x64" + "\xf3\xb8\x4b\x3a\xe8\xe3\x67\x6c\xe7\x60\xc4\x61\xf3\xa1\x3e\x83"), + STR(auth, auth_size, + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xdd\xee\xff" + "\xde\xad\xda\xda\xde\xad\xda\xda\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x77\x66\x55\x44\x33\x22\x11\x00"), + STR(plaintext, plaintext_size, + "\x74\x68\x69\x73\x20\x69\x73\x20\x73\x6f\x6d\x65\x20\x70\x6c\x61" + "\x69\x6e\x74\x65\x78\x74\x20\x74\x6f\x20\x65\x6e\x63\x72\x79\x70" + "\x74\x20\x75\x73\x69\x6e\x67\x20\x53\x49\x56\x2d\x41\x45\x53"), + .ciphertext = + (uint8_t *)"\x50\x93\x3d\xa8\x04\x7b\xc3\x06\xfa\xba\xf0\xc3\xd9\xfa\x84\x71" + "\xc7\x0a\x7d\xef\x39\xa2\xf9\x1d\x68\xa2\x02\x1c\x99\xac\x7e\x2a\x24" + "\x53\x5a\x13\x4b\xa2\x3e\xc1\x57\x87\xce\xbe\x5c\x53\xcc", + STR(iv, iv_size, + "\x09\xf9\x11\x02\x9d\x74\xe3\x5b\xd8\x41\x56\xc5\x63\x56\x88\xc0"), + .tag_size = 16, + .tag = (void *)"\x5a\x97\x9b\x0d\xa5\x8f\xde\x80\x51\x62\x1a\xe6\xbf\x96\xfe\xda", + .tag_prepended = 1, +} }; + +const struct cipher_vectors_st chacha20_32_vectors[] = { + /* RFC8439 */ + { STR(key, key_size, + "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"), + STR(plaintext, plaintext_size, + "\x4c\x61\x64\x69\x65\x73\x20\x61\x6e\x64\x20\x47\x65\x6e\x74\x6c\x65\x6d\x65\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x63\x6c\x61\x73\x73\x20\x6f\x66\x20\x27\x39\x39\x3a\x20\x49\x66\x20\x49\x20\x63\x6f\x75\x6c\x64\x20\x6f\x66\x66\x65\x72\x20\x79\x6f\x75\x20\x6f\x6e\x6c\x79\x20\x6f\x6e\x65\x20\x74\x69\x70\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x66\x75\x74\x75\x72\x65\x2c\x20\x73\x75\x6e\x73\x63\x72\x65\x65\x6e\x20\x77\x6f\x75\x6c\x64\x20\x62\x65\x20\x69\x74\x2e"), + .ciphertext = + (uint8_t *)"\x6e\x2e\x35\x9a\x25\x68\xf9\x80\x41\xba\x07\x28\xdd\x0d\x69\x81\xe9\x7e\x7a\xec\x1d\x43\x60\xc2\x0a\x27\xaf\xcc\xfd\x9f\xae\x0b\xf9\x1b\x65\xc5\x52\x47\x33\xab\x8f\x59\x3d\xab\xcd\x62\xb3\x57\x16\x39\xd6\x24\xe6\x51\x52\xab\x8f\x53\x0c\x35\x9f\x08\x61\xd8\x07\xca\x0d\xbf\x50\x0d\x6a\x61\x56\xa3\x8e\x08\x8a\x22\xb6\x5e\x52\xbc\x51\x4d\x16\xcc\xf8\x06\x81\x8c\xe9\x1a\xb7\x79\x37\x36\x5a\xf9\x0b\xbf\x74\xa3\x5b\xe6\xb4\x0b\x8e\xed\xf2\x78\x5e\x42\x87\x4d", + STR(iv, iv_size, + "\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00") }, }; static int test_cipher(gnutls_cipher_algorithm_t cipher, @@ -1359,24 +1292,22 @@ static int test_cipher(gnutls_cipher_algorithm_t cipher, return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); } - ret = - gnutls_cipher_encrypt2(hd, - vectors[i].plaintext, - vectors[i].plaintext_size, - tmp, sizeof(tmp)); + ret = gnutls_cipher_encrypt2(hd, vectors[i].plaintext, + vectors[i].plaintext_size, tmp, + sizeof(tmp)); if (ret < 0) return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); - if (memcmp - (tmp, vectors[i].ciphertext, - vectors[i].plaintext_size) != 0) { + if (memcmp(tmp, vectors[i].ciphertext, + vectors[i].plaintext_size) != 0) { _gnutls_debug_log("%s test vector %d failed!\n", gnutls_cipher_get_name(cipher), i); return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); } /* check in-place encryption */ - if (cipher != GNUTLS_CIPHER_ARCFOUR_128) { /* arcfour is stream */ + if (cipher != + GNUTLS_CIPHER_ARCFOUR_128) { /* arcfour is stream */ if (cipher == GNUTLS_CIPHER_MAGMA_CTR_ACPKM || cipher == GNUTLS_CIPHER_KUZNYECHIK_CTR_ACPKM) _gnutls_cipher_set_key(hd, @@ -1387,21 +1318,19 @@ static int test_cipher(gnutls_cipher_algorithm_t cipher, memcpy(tmp, vectors[i].plaintext, vectors[i].plaintext_size); - ret = - gnutls_cipher_encrypt(hd, tmp, - vectors[i].plaintext_size); + ret = gnutls_cipher_encrypt(hd, tmp, + vectors[i].plaintext_size); if (ret < 0) - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); - - if (memcmp - (tmp, vectors[i].ciphertext, - vectors[i].plaintext_size) != 0) { - _gnutls_debug_log - ("%s vector %d in-place encryption failed!\n", - gnutls_cipher_get_name(cipher), i); - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); + + if (memcmp(tmp, vectors[i].ciphertext, + vectors[i].plaintext_size) != 0) { + _gnutls_debug_log( + "%s vector %d in-place encryption failed!\n", + gnutls_cipher_get_name(cipher), i); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); } } @@ -1409,15 +1338,15 @@ static int test_cipher(gnutls_cipher_algorithm_t cipher, if (vectors[i].internal_iv_size > 0) { ret = _gnutls_cipher_get_iv(hd, tmp, sizeof(tmp)); if (ret < 0) - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); if (memcmp(tmp, vectors[i].internal_iv, ret) != 0) { - _gnutls_debug_log - ("%s vector %d internal IV check failed!\n", - gnutls_cipher_get_name(cipher), i); - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); + _gnutls_debug_log( + "%s vector %d internal IV check failed!\n", + gnutls_cipher_get_name(cipher), i); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); } } @@ -1436,28 +1365,26 @@ static int test_cipher(gnutls_cipher_algorithm_t cipher, if (ret < 0) return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); - ret = - gnutls_cipher_decrypt2(hd, - vectors[i].ciphertext, - vectors[i].plaintext_size, tmp, - sizeof(tmp)); + ret = gnutls_cipher_decrypt2(hd, vectors[i].ciphertext, + vectors[i].plaintext_size, tmp, + sizeof(tmp)); if (ret < 0) { - _gnutls_debug_log - ("%s decryption of test vector %d failed!\n", - gnutls_cipher_get_name(cipher), i); + _gnutls_debug_log( + "%s decryption of test vector %d failed!\n", + gnutls_cipher_get_name(cipher), i); return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); } - if (memcmp - (tmp, vectors[i].plaintext, - vectors[i].plaintext_size) != 0) { + if (memcmp(tmp, vectors[i].plaintext, + vectors[i].plaintext_size) != 0) { _gnutls_debug_log("%s test vector %d failed!\n", gnutls_cipher_get_name(cipher), i); return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); } /* check in-place decryption */ - if (cipher != GNUTLS_CIPHER_ARCFOUR_128) { /* arcfour is stream */ + if (cipher != + GNUTLS_CIPHER_ARCFOUR_128) { /* arcfour is stream */ if (cipher == GNUTLS_CIPHER_MAGMA_CTR_ACPKM || cipher == GNUTLS_CIPHER_KUZNYECHIK_CTR_ACPKM) _gnutls_cipher_set_key(hd, @@ -1468,29 +1395,27 @@ static int test_cipher(gnutls_cipher_algorithm_t cipher, memcpy(tmp, vectors[i].ciphertext, vectors[i].plaintext_size); - ret = - gnutls_cipher_decrypt(hd, tmp, - vectors[i].plaintext_size); + ret = gnutls_cipher_decrypt(hd, tmp, + vectors[i].plaintext_size); if (ret < 0) - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); - - if (memcmp - (tmp, vectors[i].plaintext, - vectors[i].plaintext_size) != 0) { - _gnutls_debug_log - ("%s vector %d in-place decryption failed!\n", - gnutls_cipher_get_name(cipher), i); - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); + + if (memcmp(tmp, vectors[i].plaintext, + vectors[i].plaintext_size) != 0) { + _gnutls_debug_log( + "%s vector %d in-place decryption failed!\n", + gnutls_cipher_get_name(cipher), i); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); } } gnutls_cipher_deinit(hd); } - _gnutls_debug_log - ("%s self check succeeded\n", gnutls_cipher_get_name(cipher)); + _gnutls_debug_log("%s self check succeeded\n", + gnutls_cipher_get_name(cipher)); return 0; } @@ -1516,48 +1441,39 @@ static int test_cipher_all_block_sizes(gnutls_cipher_algorithm_t cipher, iv.size = gnutls_cipher_get_iv_size(cipher); if (iv.size != vectors[i].iv_size) - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); ret = gnutls_cipher_init(&hd, cipher, &key, &iv); if (ret < 0) { - _gnutls_debug_log("error initializing: %s\n", - gnutls_cipher_get_name - (cipher)); - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); + _gnutls_debug_log( + "error initializing: %s\n", + gnutls_cipher_get_name(cipher)); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); } - for (offset = 0; - offset < vectors[i].plaintext_size; + for (offset = 0; offset < vectors[i].plaintext_size; offset += block) { - ret = - gnutls_cipher_encrypt2(hd, - vectors[i].plaintext - + offset, MIN(block, - vectors - [i].plaintext_size - - - offset), - tmp + offset, - sizeof(tmp) - - offset); + ret = gnutls_cipher_encrypt2( + hd, vectors[i].plaintext + offset, + MIN(block, + vectors[i].plaintext_size - offset), + tmp + offset, sizeof(tmp) - offset); if (ret < 0) - return - gnutls_assert_val - (GNUTLS_E_SELF_TEST_ERROR); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); } - if (memcmp - (tmp, vectors[i].ciphertext, - vectors[i].plaintext_size) != 0) { - _gnutls_debug_log - ("%s encryption of test vector %d failed with block size %d/%d!\n", - gnutls_cipher_get_name(cipher), i, - (int)block, - (int)vectors[i].plaintext_size); - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); + if (memcmp(tmp, vectors[i].ciphertext, + vectors[i].plaintext_size) != 0) { + _gnutls_debug_log( + "%s encryption of test vector %d failed with block size %d/%d!\n", + gnutls_cipher_get_name(cipher), i, + (int)block, + (int)vectors[i].plaintext_size); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); } gnutls_cipher_deinit(hd); @@ -1574,46 +1490,38 @@ static int test_cipher_all_block_sizes(gnutls_cipher_algorithm_t cipher, ret = gnutls_cipher_init(&hd, cipher, &key, &iv); if (ret < 0) - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); for (offset = 0; offset + block <= vectors[i].plaintext_size; offset += block) { - ret = - gnutls_cipher_decrypt2(hd, - vectors[i].ciphertext - + offset, MIN(block, - vectors - [i].plaintext_size - - - offset), - tmp + offset, - sizeof(tmp) - - offset); + ret = gnutls_cipher_decrypt2( + hd, vectors[i].ciphertext + offset, + MIN(block, + vectors[i].plaintext_size - offset), + tmp + offset, sizeof(tmp) - offset); if (ret < 0) - return - gnutls_assert_val - (GNUTLS_E_SELF_TEST_ERROR); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); } - if (memcmp - (tmp, vectors[i].plaintext, - vectors[i].plaintext_size) != 0) { - _gnutls_debug_log - ("%s decryption of test vector %d failed with block size %d!\n", - gnutls_cipher_get_name(cipher), i, - (int)block); - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); + if (memcmp(tmp, vectors[i].plaintext, + vectors[i].plaintext_size) != 0) { + _gnutls_debug_log( + "%s decryption of test vector %d failed with block size %d!\n", + gnutls_cipher_get_name(cipher), i, + (int)block); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); } gnutls_cipher_deinit(hd); } } - _gnutls_debug_log - ("%s self check succeeded\n", gnutls_cipher_get_name(cipher)); + _gnutls_debug_log("%s self check succeeded\n", + gnutls_cipher_get_name(cipher)); return 0; } @@ -1650,64 +1558,59 @@ static int test_cipher_aead_compat(gnutls_cipher_algorithm_t cipher, ret = gnutls_cipher_init(&hd, cipher, &key, &iv); if (ret < 0) { if (vectors[i].compat_apis == 0) { - return 0; /* expected */ + return 0; /* expected */ } else { - _gnutls_debug_log - ("compat: error initializing: %s\n", - gnutls_cipher_get_name(cipher)); - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); + _gnutls_debug_log( + "compat: error initializing: %s\n", + gnutls_cipher_get_name(cipher)); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); } } if (vectors[i].compat_apis == 0) { - _gnutls_debug_log - ("compat: initialized but shouldn't: %s\n", - gnutls_cipher_get_name(cipher)); + _gnutls_debug_log( + "compat: initialized but shouldn't: %s\n", + gnutls_cipher_get_name(cipher)); return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); } if (vectors[i].auth_size) { - ret = - gnutls_cipher_add_auth(hd, vectors[i].auth, - vectors[i].auth_size); + ret = gnutls_cipher_add_auth(hd, vectors[i].auth, + vectors[i].auth_size); if (ret < 0) - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); } - ret = - gnutls_cipher_encrypt2(hd, vectors[i].plaintext, - vectors[i].plaintext_size, tmp, - sizeof(tmp)); + ret = gnutls_cipher_encrypt2(hd, vectors[i].plaintext, + vectors[i].plaintext_size, tmp, + sizeof(tmp)); if (ret < 0) return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); - ret = - gnutls_cipher_tag(hd, tmp + vectors[i].plaintext_size, - tag_size); + ret = gnutls_cipher_tag(hd, tmp + vectors[i].plaintext_size, + tag_size); if (ret < 0) return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); - if (memcmp - (tmp + vectors[i].plaintext_size, vectors[i].tag, - tag_size) != 0) { - _gnutls_debug_log - ("compat: %s test vector %d failed (tag)!\n", - gnutls_cipher_get_name(cipher), i); + if (memcmp(tmp + vectors[i].plaintext_size, vectors[i].tag, + tag_size) != 0) { + _gnutls_debug_log( + "compat: %s test vector %d failed (tag)!\n", + gnutls_cipher_get_name(cipher), i); return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); } if (vectors[i].plaintext_size > 0) { - if (memcmp - (tmp, vectors[i].ciphertext, - vectors[i].plaintext_size) != 0) { - _gnutls_debug_log - ("compat: %s test vector %d failed!\n", - gnutls_cipher_get_name(cipher), i); - - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); + if (memcmp(tmp, vectors[i].ciphertext, + vectors[i].plaintext_size) != 0) { + _gnutls_debug_log( + "compat: %s test vector %d failed!\n", + gnutls_cipher_get_name(cipher), i); + + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); } } @@ -1718,19 +1621,18 @@ static int test_cipher_aead_compat(gnutls_cipher_algorithm_t cipher, memcpy(tmp2, vectors[i].plaintext, vectors[i].plaintext_size); - ret = - gnutls_cipher_encrypt(hd, tmp2, - vectors[i].plaintext_size); + ret = gnutls_cipher_encrypt(hd, tmp2, + vectors[i].plaintext_size); if (ret < 0) - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); if (memcmp(tmp, tmp2, vectors[i].plaintext_size) != 0) { - _gnutls_debug_log - ("compat: %s vector %d in-place encryption failed!\n", - gnutls_cipher_get_name(cipher), i); - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); + _gnutls_debug_log( + "compat: %s vector %d in-place encryption failed!\n", + gnutls_cipher_get_name(cipher), i); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); } /* check decryption with separate buffers */ @@ -1738,32 +1640,28 @@ static int test_cipher_aead_compat(gnutls_cipher_algorithm_t cipher, vectors[i].iv_size); if (vectors[i].auth_size) { - ret = - gnutls_cipher_add_auth(hd, vectors[i].auth, - vectors - [i].auth_size); + ret = gnutls_cipher_add_auth( + hd, vectors[i].auth, + vectors[i].auth_size); if (ret < 0) - return - gnutls_assert_val - (GNUTLS_E_SELF_TEST_ERROR); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); } - ret = - gnutls_cipher_decrypt2(hd, tmp, - vectors[i].plaintext_size, - tmp2, sizeof(tmp2)); + ret = gnutls_cipher_decrypt2(hd, tmp, + vectors[i].plaintext_size, + tmp2, sizeof(tmp2)); if (ret < 0) - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); - - if (memcmp - (tmp2, vectors[i].plaintext, - vectors[i].plaintext_size) != 0) { - _gnutls_debug_log - ("compat: %s test vector %d failed (decryption)!\n", - gnutls_cipher_get_name(cipher), i); - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); + + if (memcmp(tmp2, vectors[i].plaintext, + vectors[i].plaintext_size) != 0) { + _gnutls_debug_log( + "compat: %s test vector %d failed (decryption)!\n", + gnutls_cipher_get_name(cipher), i); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); } /* check in-place decryption */ @@ -1772,37 +1670,29 @@ static int test_cipher_aead_compat(gnutls_cipher_algorithm_t cipher, vectors[i].iv_size); if (vectors[i].auth_size) { - ret = - gnutls_cipher_add_auth(hd, - vectors - [i].auth, - vectors - [i].auth_size); + ret = gnutls_cipher_add_auth( + hd, vectors[i].auth, + vectors[i].auth_size); if (ret < 0) - return - gnutls_assert_val - (GNUTLS_E_SELF_TEST_ERROR); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); } memcpy(tmp2, tmp, vectors[i].plaintext_size); - ret = - gnutls_cipher_decrypt(hd, tmp2, - vectors - [i].plaintext_size); + ret = gnutls_cipher_decrypt( + hd, tmp2, vectors[i].plaintext_size); if (ret < 0) - return - gnutls_assert_val - (GNUTLS_E_SELF_TEST_ERROR); - - if (memcmp - (tmp2, vectors[i].plaintext, - vectors[i].plaintext_size) != 0) { - _gnutls_debug_log - ("compat: %s vector %d in-place decryption failed!\n", - gnutls_cipher_get_name(cipher), i); - return - gnutls_assert_val - (GNUTLS_E_SELF_TEST_ERROR); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); + + if (memcmp(tmp2, vectors[i].plaintext, + vectors[i].plaintext_size) != 0) { + _gnutls_debug_log( + "compat: %s vector %d in-place decryption failed!\n", + gnutls_cipher_get_name(cipher), + i); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); } } } @@ -1810,19 +1700,18 @@ static int test_cipher_aead_compat(gnutls_cipher_algorithm_t cipher, gnutls_cipher_deinit(hd); } - _gnutls_debug_log - ("%s compat self check succeeded\n", - gnutls_cipher_get_name(cipher)); + _gnutls_debug_log("%s compat self check succeeded\n", + gnutls_cipher_get_name(cipher)); return 0; - } #define IOV_PARTS 8 /* AEAD modes - scatter read */ -static int test_cipher_aead_scatter(gnutls_cipher_algorithm_t cipher, const struct cipher_aead_vectors_st - *vectors, size_t vectors_size, - unsigned flags) +static int +test_cipher_aead_scatter(gnutls_cipher_algorithm_t cipher, + const struct cipher_aead_vectors_st *vectors, + size_t vectors_size, unsigned flags) { gnutls_aead_cipher_hd_t hd; int ret; @@ -1872,12 +1761,10 @@ static int test_cipher_aead_scatter(gnutls_cipher_algorithm_t cipher, const stru iov[0].iov_base = (void *)vectors[i].plaintext; iov[0].iov_len = vectors[i].plaintext_size; - ret = - gnutls_aead_cipher_encryptv(hd, - iv.data, iv.size, - auth_iov, auth_iov_len, - vectors[i].tag_size, - iov, iov_len, tmp, &s); + ret = gnutls_aead_cipher_encryptv(hd, iv.data, iv.size, + auth_iov, auth_iov_len, + vectors[i].tag_size, iov, + iov_len, tmp, &s); if (ret < 0) return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); @@ -1891,9 +1778,8 @@ static int test_cipher_aead_scatter(gnutls_cipher_algorithm_t cipher, const stru tag = tmp + vectors[i].plaintext_size; if (memcmp(tag, vectors[i].tag, tag_size) != 0) { - _gnutls_debug_log - ("%s test vector %d failed (tag)!\n", - gnutls_cipher_get_name(cipher), i); + _gnutls_debug_log("%s test vector %d failed (tag)!\n", + gnutls_cipher_get_name(cipher), i); return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); } @@ -1903,15 +1789,14 @@ static int test_cipher_aead_scatter(gnutls_cipher_algorithm_t cipher, const stru ciphertext = tmp; if (vectors[i].plaintext_size > 0) { - if (memcmp - (ciphertext, vectors[i].ciphertext, - vectors[i].plaintext_size) != 0) { - _gnutls_debug_log - ("%s test vector %d failed!\n", - gnutls_cipher_get_name(cipher), i); - - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); + if (memcmp(ciphertext, vectors[i].ciphertext, + vectors[i].plaintext_size) != 0) { + _gnutls_debug_log( + "%s test vector %d failed!\n", + gnutls_cipher_get_name(cipher), i); + + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); } } @@ -1922,10 +1807,11 @@ static int test_cipher_aead_scatter(gnutls_cipher_algorithm_t cipher, const stru assert(split > 0); for (z = 0; z < IOV_PARTS; z++) { auth_iov[z].iov_base = - (void *)(vectors[i].auth + (z * split)); + (void *)(vectors[i].auth + (z * split)); if (z == IOV_PARTS - 1) auth_iov[z].iov_len = - vectors[i].auth_size - z * split; + vectors[i].auth_size - + z * split; else auth_iov[z].iov_len = split; auth_iov_len++; @@ -1943,12 +1829,12 @@ static int test_cipher_aead_scatter(gnutls_cipher_algorithm_t cipher, const stru for (z = 0; z < IOV_PARTS; z++) { iov[z].iov_base = - (void *)(vectors[i].plaintext + - (z * split)); + (void *)(vectors[i].plaintext + + (z * split)); if (z == IOV_PARTS - 1) iov[z].iov_len = - vectors[i].plaintext_size - - z * split; + vectors[i].plaintext_size - + z * split; else iov[z].iov_len = split; iov_len++; @@ -1961,12 +1847,10 @@ static int test_cipher_aead_scatter(gnutls_cipher_algorithm_t cipher, const stru s = sizeof(tmp); - ret = - gnutls_aead_cipher_encryptv(hd, - iv.data, iv.size, - auth_iov, auth_iov_len, - vectors[i].tag_size, - iov, iov_len, tmp, &s); + ret = gnutls_aead_cipher_encryptv(hd, iv.data, iv.size, + auth_iov, auth_iov_len, + vectors[i].tag_size, iov, + iov_len, tmp, &s); if (ret < 0) return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); @@ -1980,9 +1864,8 @@ static int test_cipher_aead_scatter(gnutls_cipher_algorithm_t cipher, const stru tag = tmp + vectors[i].plaintext_size; if (memcmp(tag, vectors[i].tag, tag_size) != 0) { - _gnutls_debug_log - ("%s test vector %d failed (tag)!\n", - gnutls_cipher_get_name(cipher), i); + _gnutls_debug_log("%s test vector %d failed (tag)!\n", + gnutls_cipher_get_name(cipher), i); return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); } @@ -1992,24 +1875,22 @@ static int test_cipher_aead_scatter(gnutls_cipher_algorithm_t cipher, const stru ciphertext = tmp; if (vectors[i].plaintext_size > 0) { - if (memcmp - (ciphertext, vectors[i].ciphertext, - vectors[i].plaintext_size) != 0) { - _gnutls_debug_log - ("%s test vector %d failed!\n", - gnutls_cipher_get_name(cipher), i); - - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); + if (memcmp(ciphertext, vectors[i].ciphertext, + vectors[i].plaintext_size) != 0) { + _gnutls_debug_log( + "%s test vector %d failed!\n", + gnutls_cipher_get_name(cipher), i); + + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); } } gnutls_aead_cipher_deinit(hd); } - _gnutls_debug_log - ("%s scatter self check succeeded\n", - gnutls_cipher_get_name(cipher)); + _gnutls_debug_log("%s scatter self check succeeded\n", + gnutls_cipher_get_name(cipher)); if (flags & GNUTLS_SELF_TEST_FLAG_NO_COMPAT) return 0; @@ -2061,15 +1942,11 @@ static int test_cipher_aead(gnutls_cipher_algorithm_t cipher, s = sizeof(tmp); - ret = - gnutls_aead_cipher_encrypt(hd, - iv.data, iv.size, - vectors[i].auth, - vectors[i].auth_size, - vectors[i].tag_size, - vectors[i].plaintext, - vectors[i].plaintext_size, tmp, - &s); + ret = gnutls_aead_cipher_encrypt( + hd, iv.data, iv.size, vectors[i].auth, + vectors[i].auth_size, vectors[i].tag_size, + vectors[i].plaintext, vectors[i].plaintext_size, tmp, + &s); if (ret < 0) return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); @@ -2083,9 +1960,8 @@ static int test_cipher_aead(gnutls_cipher_algorithm_t cipher, tag = tmp + vectors[i].plaintext_size; if (memcmp(tag, vectors[i].tag, tag_size) != 0) { - _gnutls_debug_log - ("%s test vector %d failed (tag)!\n", - gnutls_cipher_get_name(cipher), i); + _gnutls_debug_log("%s test vector %d failed (tag)!\n", + gnutls_cipher_get_name(cipher), i); return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); } @@ -2095,41 +1971,38 @@ static int test_cipher_aead(gnutls_cipher_algorithm_t cipher, ciphertext = tmp; if (vectors[i].plaintext_size > 0) { - if (memcmp - (ciphertext, vectors[i].ciphertext, - vectors[i].plaintext_size) != 0) { - _gnutls_debug_log - ("%s test vector %d failed!\n", - gnutls_cipher_get_name(cipher), i); - - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); + if (memcmp(ciphertext, vectors[i].ciphertext, + vectors[i].plaintext_size) != 0) { + _gnutls_debug_log( + "%s test vector %d failed!\n", + gnutls_cipher_get_name(cipher), i); + + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); } } /* check decryption */ { s2 = sizeof(tmp2); - ret = - gnutls_aead_cipher_decrypt(hd, - iv.data, iv.size, - vectors[i].auth, - vectors[i].auth_size, - vectors[i].tag_size, tmp, - s, tmp2, &s2); + ret = gnutls_aead_cipher_decrypt(hd, iv.data, iv.size, + vectors[i].auth, + vectors[i].auth_size, + vectors[i].tag_size, + tmp, s, tmp2, &s2); if (ret < 0) - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); if (s2 != vectors[i].plaintext_size || (vectors[i].plaintext_size > 0 && memcmp(tmp2, vectors[i].plaintext, vectors[i].plaintext_size) != 0)) { - _gnutls_debug_log - ("%s test vector %d failed (decryption)!\n", - gnutls_cipher_get_name(cipher), i); - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); + _gnutls_debug_log( + "%s test vector %d failed (decryption)!\n", + gnutls_cipher_get_name(cipher), i); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); } /* test tag verification */ @@ -2137,24 +2010,17 @@ static int test_cipher_aead(gnutls_cipher_algorithm_t cipher, (*ciphertext)++; s2 = sizeof(tmp2); - ret = - gnutls_aead_cipher_decrypt(hd, - iv.data, iv.size, - vectors[i].auth, - vectors - [i].auth_size, - vectors - [i].tag_size, - tmp, s, tmp2, - &s2); + ret = gnutls_aead_cipher_decrypt( + hd, iv.data, iv.size, vectors[i].auth, + vectors[i].auth_size, + vectors[i].tag_size, tmp, s, tmp2, &s2); if (ret >= 0) { - _gnutls_debug_log - ("%s: tag check failed\n", - gnutls_cipher_get_name(cipher)); - return - gnutls_assert_val - (GNUTLS_E_SELF_TEST_ERROR); + _gnutls_debug_log( + "%s: tag check failed\n", + gnutls_cipher_get_name(cipher)); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); } } } @@ -2162,8 +2028,8 @@ static int test_cipher_aead(gnutls_cipher_algorithm_t cipher, gnutls_aead_cipher_deinit(hd); } - _gnutls_debug_log - ("%s self check succeeded\n", gnutls_cipher_get_name(cipher)); + _gnutls_debug_log("%s self check succeeded\n", + gnutls_cipher_get_name(cipher)); return test_cipher_aead_scatter(cipher, vectors, vectors_size, flags); } @@ -2177,159 +2043,155 @@ struct hash_vectors_st { const struct hash_vectors_st md5_vectors[] = { { - STR(plaintext, plaintext_size, "abcdefghijklmnopqrstuvwxyz"), - STR(output, output_size, - "\xc3\xfc\xd3\xd7\x61\x92\xe4\x00\x7d\xfb\x49\x6c\xca\x67\xe1\x3b"), - }, + STR(plaintext, plaintext_size, "abcdefghijklmnopqrstuvwxyz"), + STR(output, output_size, + "\xc3\xfc\xd3\xd7\x61\x92\xe4\x00\x7d\xfb\x49\x6c\xca\x67\xe1\x3b"), + }, }; const struct hash_vectors_st sha1_vectors[] = { { - STR(plaintext, plaintext_size, "what do ya want for nothing?"), - STR(output, output_size, - "\x8f\x82\x03\x94\xf9\x53\x35\x18\x20\x45\xda\x24\xf3\x4d\xe5\x2b\xf8\xbc\x34\x32"), - }, + STR(plaintext, plaintext_size, "what do ya want for nothing?"), + STR(output, output_size, + "\x8f\x82\x03\x94\xf9\x53\x35\x18\x20\x45\xda\x24\xf3\x4d\xe5\x2b\xf8\xbc\x34\x32"), + }, { - STR(plaintext, plaintext_size, - "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqabcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqabcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"), - STR(output, output_size, - "\xbe\xae\xd1\x6d\x65\x8e\xc7\x92\x9e\xdf\xd6\x2b\xfa\xfe\xac\x29\x9f\x0d\x74\x4d"), - }, + STR(plaintext, plaintext_size, + "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqabcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqabcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"), + STR(output, output_size, + "\xbe\xae\xd1\x6d\x65\x8e\xc7\x92\x9e\xdf\xd6\x2b\xfa\xfe\xac\x29\x9f\x0d\x74\x4d"), + }, }; const struct hash_vectors_st sha224_vectors[] = { { - STR(plaintext, plaintext_size, - "The quick brown fox jumps over the lazy dog"), - STR(output, output_size, - "\x73\x0e\x10\x9b\xd7\xa8\xa3\x2b\x1c\xb9\xd9\xa0\x9a\xa2\x32\x5d\x24\x30\x58\x7d\xdb\xc0\xc3\x8b\xad\x91\x15\x25"), - }, + STR(plaintext, plaintext_size, + "The quick brown fox jumps over the lazy dog"), + STR(output, output_size, + "\x73\x0e\x10\x9b\xd7\xa8\xa3\x2b\x1c\xb9\xd9\xa0\x9a\xa2\x32\x5d\x24\x30\x58\x7d\xdb\xc0\xc3\x8b\xad\x91\x15\x25"), + }, }; const struct hash_vectors_st sha256_vectors[] = { { - STR(plaintext, plaintext_size, - "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"), - STR(output, output_size, - "\x24\x8d\x6a\x61\xd2\x06\x38\xb8\xe5\xc0\x26\x93\x0c\x3e\x60\x39\xa3\x3c\xe4\x59\x64\xff\x21\x67\xf6\xec\xed\xd4\x19\xdb\x06\xc1"), - }, + STR(plaintext, plaintext_size, + "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"), + STR(output, output_size, + "\x24\x8d\x6a\x61\xd2\x06\x38\xb8\xe5\xc0\x26\x93\x0c\x3e\x60\x39\xa3\x3c\xe4\x59\x64\xff\x21\x67\xf6\xec\xed\xd4\x19\xdb\x06\xc1"), + }, { - STR(plaintext, plaintext_size, - "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqabcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqabcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"), - STR(output, output_size, - "\x50\xea\x82\x5d\x96\x84\xf4\x22\x9c\xa2\x9f\x1f\xec\x51\x15\x93\xe2\x81\xe4\x6a\x14\x0d\x81\xe0\x00\x5f\x8f\x68\x86\x69\xa0\x6c"), - }, + STR(plaintext, plaintext_size, + "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqabcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqabcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"), + STR(output, output_size, + "\x50\xea\x82\x5d\x96\x84\xf4\x22\x9c\xa2\x9f\x1f\xec\x51\x15\x93\xe2\x81\xe4\x6a\x14\x0d\x81\xe0\x00\x5f\x8f\x68\x86\x69\xa0\x6c"), + }, }; const struct hash_vectors_st sha384_vectors[] = { { - STR(plaintext, plaintext_size, - "The quick brown fox jumps over the lazy dog"), - STR(output, output_size, - "\xca\x73\x7f\x10\x14\xa4\x8f\x4c\x0b\x6d\xd4\x3c\xb1\x77\xb0\xaf\xd9\xe5\x16\x93\x67\x54\x4c\x49\x40\x11\xe3\x31\x7d\xbf\x9a\x50\x9c\xb1\xe5\xdc\x1e\x85\xa9\x41\xbb\xee\x3d\x7f\x2a\xfb\xc9\xb1"), - }, + STR(plaintext, plaintext_size, + "The quick brown fox jumps over the lazy dog"), + STR(output, output_size, + "\xca\x73\x7f\x10\x14\xa4\x8f\x4c\x0b\x6d\xd4\x3c\xb1\x77\xb0\xaf\xd9\xe5\x16\x93\x67\x54\x4c\x49\x40\x11\xe3\x31\x7d\xbf\x9a\x50\x9c\xb1\xe5\xdc\x1e\x85\xa9\x41\xbb\xee\x3d\x7f\x2a\xfb\xc9\xb1"), + }, }; const struct hash_vectors_st sha512_vectors[] = { { - STR(plaintext, plaintext_size, - "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"), - STR(output, output_size, - "\x8e\x95\x9b\x75\xda\xe3\x13\xda\x8c\xf4\xf7\x28\x14\xfc\x14\x3f\x8f\x77\x79\xc6\xeb\x9f\x7f\xa1\x72\x99\xae\xad\xb6\x88\x90\x18\x50\x1d\x28\x9e\x49\x00\xf7\xe4\x33\x1b\x99\xde\xc4\xb5\x43\x3a\xc7\xd3\x29\xee\xb6\xdd\x26\x54\x5e\x96\xe5\x5b\x87\x4b\xe9\x09"), - }, + STR(plaintext, plaintext_size, + "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"), + STR(output, output_size, + "\x8e\x95\x9b\x75\xda\xe3\x13\xda\x8c\xf4\xf7\x28\x14\xfc\x14\x3f\x8f\x77\x79\xc6\xeb\x9f\x7f\xa1\x72\x99\xae\xad\xb6\x88\x90\x18\x50\x1d\x28\x9e\x49\x00\xf7\xe4\x33\x1b\x99\xde\xc4\xb5\x43\x3a\xc7\xd3\x29\xee\xb6\xdd\x26\x54\x5e\x96\xe5\x5b\x87\x4b\xe9\x09"), + }, }; const struct hash_vectors_st sha3_224_vectors[] = { { - STR(plaintext, plaintext_size, - "\xC1\xEC\xFD\xFC"), - STR(output, output_size, - "\xA3\x3C\x58\xDF\x8A\x80\x26\xF0\xF9\x59\x19\x66\xBD\x6D\x00\xEE\xD3\xB1\xE8\x29\x58\x0A\xB9\xBE\x26\x8C\xAF\x39"), - }, + STR(plaintext, plaintext_size, "\xC1\xEC\xFD\xFC"), + STR(output, output_size, + "\xA3\x3C\x58\xDF\x8A\x80\x26\xF0\xF9\x59\x19\x66\xBD\x6D\x00\xEE\xD3\xB1\xE8\x29\x58\x0A\xB9\xBE\x26\x8C\xAF\x39"), + }, }; -const struct hash_vectors_st sha3_256_vectors[] = { - { - STR(plaintext, plaintext_size, - "\xC1\xEC\xFD\xFC"), - STR(output, output_size, - "\xC5\x85\x9B\xE8\x25\x60\xCC\x87\x89\x13\x3F\x7C\x83\x4A\x6E\xE6\x28\xE3\x51\xE5\x04\xE6\x01\xE8\x05\x9A\x06\x67\xFF\x62\xC1\x24"), - } -}; +const struct hash_vectors_st sha3_256_vectors[] = { { + STR(plaintext, plaintext_size, "\xC1\xEC\xFD\xFC"), + STR(output, output_size, + "\xC5\x85\x9B\xE8\x25\x60\xCC\x87\x89\x13\x3F\x7C\x83\x4A\x6E\xE6\x28\xE3\x51\xE5\x04\xE6\x01\xE8\x05\x9A\x06\x67\xFF\x62\xC1\x24"), +} }; const struct hash_vectors_st sha3_384_vectors[] = { { - STR(plaintext, plaintext_size, - "\x4A\x4F\x20\x24\x84\x51\x25\x26"), - STR(output, output_size, - "\x89\xDB\xF4\xC3\x9B\x8F\xB4\x6F\xDF\x0A\x69\x26\xCE\xC0\x35\x5A\x4B\xDB\xF9\xC6\xA4\x46\xE1\x40\xB7\xC8\xBD\x08\xFF\x6F\x48\x9F\x20\x5D\xAF\x8E\xFF\xE1\x60\xF4\x37\xF6\x74\x91\xEF\x89\x7C\x23"), - }, + STR(plaintext, plaintext_size, + "\x4A\x4F\x20\x24\x84\x51\x25\x26"), + STR(output, output_size, + "\x89\xDB\xF4\xC3\x9B\x8F\xB4\x6F\xDF\x0A\x69\x26\xCE\xC0\x35\x5A\x4B\xDB\xF9\xC6\xA4\x46\xE1\x40\xB7\xC8\xBD\x08\xFF\x6F\x48\x9F\x20\x5D\xAF\x8E\xFF\xE1\x60\xF4\x37\xF6\x74\x91\xEF\x89\x7C\x23"), + }, }; const struct hash_vectors_st sha3_512_vectors[] = { { - STR(plaintext, plaintext_size, - "\x82\xE1\x92\xE4\x04\x3D\xDC\xD1\x2E\xCF\x52\x96\x9D\x0F\x80\x7E\xED"), - STR(output, output_size, - "\x96\x44\xE3\xC9\x0B\x67\xE2\x21\x24\xE9\x6D\xFE\xDC\xE5\x3D\x33\xC4\x60\xF1\x32\x86\x8F\x09\x75\xD1\x8B\x22\xCF\xD5\x9F\x63\x7D\xD8\x5A\xA4\x05\xE3\x98\x08\xA4\x55\x70\xA4\x98\xC0\xB8\xF2\xCB\xA5\x9F\x8E\x14\x37\xEA\xEF\x89\xF2\x0B\x88\x29\x8A\xDF\xA2\xDE"), - }, + STR(plaintext, plaintext_size, + "\x82\xE1\x92\xE4\x04\x3D\xDC\xD1\x2E\xCF\x52\x96\x9D\x0F\x80\x7E\xED"), + STR(output, output_size, + "\x96\x44\xE3\xC9\x0B\x67\xE2\x21\x24\xE9\x6D\xFE\xDC\xE5\x3D\x33\xC4\x60\xF1\x32\x86\x8F\x09\x75\xD1\x8B\x22\xCF\xD5\x9F\x63\x7D\xD8\x5A\xA4\x05\xE3\x98\x08\xA4\x55\x70\xA4\x98\xC0\xB8\xF2\xCB\xA5\x9F\x8E\x14\x37\xEA\xEF\x89\xF2\x0B\x88\x29\x8A\xDF\xA2\xDE"), + }, }; const struct hash_vectors_st gostr_94_vectors[] = { { - STR(plaintext, plaintext_size, - "The quick brown fox jumps over the lazy dog"), - STR(output, output_size, - "\x90\x04\x29\x4a\x36\x1a\x50\x8c\x58\x6f\xe5\x3d\x1f\x1b\x02\x74\x67\x65\xe7\x1b\x76\x54\x72\x78\x6e\x47\x70\xd5\x65\x83\x0a\x76"), - }, + STR(plaintext, plaintext_size, + "The quick brown fox jumps over the lazy dog"), + STR(output, output_size, + "\x90\x04\x29\x4a\x36\x1a\x50\x8c\x58\x6f\xe5\x3d\x1f\x1b\x02\x74\x67\x65\xe7\x1b\x76\x54\x72\x78\x6e\x47\x70\xd5\x65\x83\x0a\x76"), + }, }; /* GOST R 34.11-2012 */ const struct hash_vectors_st streebog_512_vectors[] = { { - STR(plaintext, plaintext_size, - "\xd1\xe5\x20\xe2\xe5\xf2\xf0\xe8\x2c\x20\xd1\xf2\xf0\xe8\xe1\xee" - "\xe6\xe8\x20\xe2\xed\xf3\xf6\xe8\x2c\x20\xe2\xe5\xfe\xf2\xfa\x20" - "\xf1\x20\xec\xee\xf0\xff\x20\xf1\xf2\xf0\xe5\xeb\xe0\xec\xe8\x20" - "\xed\xe0\x20\xf5\xf0\xe0\xe1\xf0\xfb\xff\x20\xef\xeb\xfa\xea\xfb" - "\x20\xc8\xe3\xee\xf0\xe5\xe2\xfb"), - STR(output, output_size, - "\x1e\x88\xe6\x22\x26\xbf\xca\x6f\x99\x94\xf1\xf2\xd5\x15\x69\xe0" - "\xda\xf8\x47\x5a\x3b\x0f\xe6\x1a\x53\x00\xee\xe4\x6d\x96\x13\x76" - "\x03\x5f\xe8\x35\x49\xad\xa2\xb8\x62\x0f\xcd\x7c\x49\x6c\xe5\xb3" - "\x3f\x0c\xb9\xdd\xdc\x2b\x64\x60\x14\x3b\x03\xda\xba\xc9\xfb\x28"), - }, - { - STR(plaintext, plaintext_size, - "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" - "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" - "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" - "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" - "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" - "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" - "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" - "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), - STR(output, output_size, - "\x90\xa1\x61\xd1\x2a\xd3\x09\x49\x8d\x3f\xe5\xd4\x82\x02\xd8\xa4" - "\xe9\xc4\x06\xd6\xa2\x64\xae\xab\x25\x8a\xc5\xec\xc3\x7a\x79\x62" - "\xaa\xf9\x58\x7a\x5a\xbb\x09\xb6\xbb\x81\xec\x4b\x37\x52\xa3\xff" - "\x5a\x83\x8e\xf1\x75\xbe\x57\x72\x05\x6b\xc5\xfe\x54\xfc\xfc\x7e"), - }, + STR(plaintext, plaintext_size, + "\xd1\xe5\x20\xe2\xe5\xf2\xf0\xe8\x2c\x20\xd1\xf2\xf0\xe8\xe1\xee" + "\xe6\xe8\x20\xe2\xed\xf3\xf6\xe8\x2c\x20\xe2\xe5\xfe\xf2\xfa\x20" + "\xf1\x20\xec\xee\xf0\xff\x20\xf1\xf2\xf0\xe5\xeb\xe0\xec\xe8\x20" + "\xed\xe0\x20\xf5\xf0\xe0\xe1\xf0\xfb\xff\x20\xef\xeb\xfa\xea\xfb" + "\x20\xc8\xe3\xee\xf0\xe5\xe2\xfb"), + STR(output, output_size, + "\x1e\x88\xe6\x22\x26\xbf\xca\x6f\x99\x94\xf1\xf2\xd5\x15\x69\xe0" + "\xda\xf8\x47\x5a\x3b\x0f\xe6\x1a\x53\x00\xee\xe4\x6d\x96\x13\x76" + "\x03\x5f\xe8\x35\x49\xad\xa2\xb8\x62\x0f\xcd\x7c\x49\x6c\xe5\xb3" + "\x3f\x0c\xb9\xdd\xdc\x2b\x64\x60\x14\x3b\x03\xda\xba\xc9\xfb\x28"), + }, + { + STR(plaintext, plaintext_size, + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"), + STR(output, output_size, + "\x90\xa1\x61\xd1\x2a\xd3\x09\x49\x8d\x3f\xe5\xd4\x82\x02\xd8\xa4" + "\xe9\xc4\x06\xd6\xa2\x64\xae\xab\x25\x8a\xc5\xec\xc3\x7a\x79\x62" + "\xaa\xf9\x58\x7a\x5a\xbb\x09\xb6\xbb\x81\xec\x4b\x37\x52\xa3\xff" + "\x5a\x83\x8e\xf1\x75\xbe\x57\x72\x05\x6b\xc5\xfe\x54\xfc\xfc\x7e"), + }, }; /* GOST R 34.11-2012 */ const struct hash_vectors_st streebog_256_vectors[] = { { - STR(plaintext, plaintext_size, - "\xd1\xe5\x20\xe2\xe5\xf2\xf0\xe8\x2c\x20\xd1\xf2\xf0\xe8\xe1\xee" - "\xe6\xe8\x20\xe2\xed\xf3\xf6\xe8\x2c\x20\xe2\xe5\xfe\xf2\xfa\x20" - "\xf1\x20\xec\xee\xf0\xff\x20\xf1\xf2\xf0\xe5\xeb\xe0\xec\xe8\x20" - "\xed\xe0\x20\xf5\xf0\xe0\xe1\xf0\xfb\xff\x20\xef\xeb\xfa\xea\xfb" - "\x20\xc8\xe3\xee\xf0\xe5\xe2\xfb"), - STR(output, output_size, - "\x9d\xd2\xfe\x4e\x90\x40\x9e\x5d\xa8\x7f\x53\x97\x6d\x74\x05\xb0" - "\xc0\xca\xc6\x28\xfc\x66\x9a\x74\x1d\x50\x06\x3c\x55\x7e\x8f\x50"), - }, + STR(plaintext, plaintext_size, + "\xd1\xe5\x20\xe2\xe5\xf2\xf0\xe8\x2c\x20\xd1\xf2\xf0\xe8\xe1\xee" + "\xe6\xe8\x20\xe2\xed\xf3\xf6\xe8\x2c\x20\xe2\xe5\xfe\xf2\xfa\x20" + "\xf1\x20\xec\xee\xf0\xff\x20\xf1\xf2\xf0\xe5\xeb\xe0\xec\xe8\x20" + "\xed\xe0\x20\xf5\xf0\xe0\xe1\xf0\xfb\xff\x20\xef\xeb\xfa\xea\xfb" + "\x20\xc8\xe3\xee\xf0\xe5\xe2\xfb"), + STR(output, output_size, + "\x9d\xd2\xfe\x4e\x90\x40\x9e\x5d\xa8\x7f\x53\x97\x6d\x74\x05\xb0" + "\xc0\xca\xc6\x28\xfc\x66\x9a\x74\x1d\x50\x06\x3c\x55\x7e\x8f\x50"), + }, }; #define HASH_DATA_SIZE 64 @@ -2367,8 +2229,7 @@ static int test_digest(gnutls_digest_algorithm_t dig, gnutls_digest_get_name(dig)); } - ret = gnutls_hash(hd, - &vectors[i].plaintext[1], + ret = gnutls_hash(hd, &vectors[i].plaintext[1], vectors[i].plaintext_size - 1); if (ret < 0) return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); @@ -2380,31 +2241,30 @@ static int test_digest(gnutls_digest_algorithm_t dig, return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); if (data_size != vectors[i].output_size || - memcmp(data, vectors[i].output, - vectors[i].output_size) != 0) { + memcmp(data, vectors[i].output, vectors[i].output_size) != + 0) { _gnutls_debug_log("%s test vector %d failed!\n", gnutls_digest_get_name(dig), i); return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); } if (copy != NULL) { - ret = gnutls_hash(copy, - &vectors[i].plaintext[1], + ret = gnutls_hash(copy, &vectors[i].plaintext[1], vectors[i].plaintext_size - 1); if (ret < 0) - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); memset(data, 0xaa, data_size); gnutls_hash_deinit(copy, data); if (memcmp(data, vectors[i].output, vectors[i].output_size) != 0) { - _gnutls_debug_log - ("%s copy test vector %d failed!\n", - gnutls_digest_get_name(dig), i); - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); + _gnutls_debug_log( + "%s copy test vector %d failed!\n", + gnutls_digest_get_name(dig), i); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); } } } @@ -2428,219 +2288,222 @@ struct mac_vectors_st { const struct mac_vectors_st hmac_md5_vectors[] = { { - STR(key, key_size, "Jefe"), - STR(plaintext, plaintext_size, "what do ya want for nothing?"), - STR(output, output_size, - "\x75\x0c\x78\x3e\x6a\xb0\xb5\x03\xea\xa8\x6e\x31\x0a\x5d\xb7\x38"), - }, + STR(key, key_size, "Jefe"), + STR(plaintext, plaintext_size, "what do ya want for nothing?"), + STR(output, output_size, + "\x75\x0c\x78\x3e\x6a\xb0\xb5\x03\xea\xa8\x6e\x31\x0a\x5d\xb7\x38"), + }, }; const struct mac_vectors_st hmac_sha1_vectors[] = { { - STR(key, key_size, - "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"), - STR(plaintext, plaintext_size, "Hi There"), - STR(output, output_size, - "\x67\x5b\x0b\x3a\x1b\x4d\xdf\x4e\x12\x48\x72\xda\x6c\x2f\x63\x2b\xfe\xd9\x57\xe9"), - }, + STR(key, key_size, + "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"), + STR(plaintext, plaintext_size, "Hi There"), + STR(output, output_size, + "\x67\x5b\x0b\x3a\x1b\x4d\xdf\x4e\x12\x48\x72\xda\x6c\x2f\x63\x2b\xfe\xd9\x57\xe9"), + }, }; - /* from rfc4231 */ +/* from rfc4231 */ const struct mac_vectors_st hmac_sha224_vectors[] = { { - STR(key, key_size, - "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"), - STR(plaintext, plaintext_size, "Hi There"), - STR(output, output_size, - "\x89\x6f\xb1\x12\x8a\xbb\xdf\x19\x68\x32\x10\x7c\xd4\x9d\xf3\x3f\x47\xb4\xb1\x16\x99\x12\xba\x4f\x53\x68\x4b\x22"), - }, + STR(key, key_size, + "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"), + STR(plaintext, plaintext_size, "Hi There"), + STR(output, output_size, + "\x89\x6f\xb1\x12\x8a\xbb\xdf\x19\x68\x32\x10\x7c\xd4\x9d\xf3\x3f\x47\xb4\xb1\x16\x99\x12\xba\x4f\x53\x68\x4b\x22"), + }, }; const struct mac_vectors_st hmac_sha256_vectors[] = { { - STR(key, key_size, - "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"), - STR(plaintext, plaintext_size, "Hi There"), - STR(output, output_size, - "\xb0\x34\x4c\x61\xd8\xdb\x38\x53\x5c\xa8\xaf\xce\xaf\x0b\xf1\x2b\x88\x1d\xc2\x00\xc9\x83\x3d\xa7\x26\xe9\x37\x6c\x2e\x32\xcf\xf7"), - }, + STR(key, key_size, + "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"), + STR(plaintext, plaintext_size, "Hi There"), + STR(output, output_size, + "\xb0\x34\x4c\x61\xd8\xdb\x38\x53\x5c\xa8\xaf\xce\xaf\x0b\xf1\x2b\x88\x1d\xc2\x00\xc9\x83\x3d\xa7\x26\xe9\x37\x6c\x2e\x32\xcf\xf7"), + }, }; const struct mac_vectors_st hmac_sha384_vectors[] = { { - STR(key, key_size, - "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"), - STR(plaintext, plaintext_size, "Hi There"), - STR(output, output_size, - "\xaf\xd0\x39\x44\xd8\x48\x95\x62\x6b\x08\x25\xf4\xab\x46\x90\x7f\x15\xf9\xda\xdb\xe4\x10\x1e\xc6\x82\xaa\x03\x4c\x7c\xeb\xc5\x9c\xfa\xea\x9e\xa9\x07\x6e\xde\x7f\x4a\xf1\x52\xe8\xb2\xfa\x9c\xb6"), - }, + STR(key, key_size, + "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"), + STR(plaintext, plaintext_size, "Hi There"), + STR(output, output_size, + "\xaf\xd0\x39\x44\xd8\x48\x95\x62\x6b\x08\x25\xf4\xab\x46\x90\x7f\x15\xf9\xda\xdb\xe4\x10\x1e\xc6\x82\xaa\x03\x4c\x7c\xeb\xc5\x9c\xfa\xea\x9e\xa9\x07\x6e\xde\x7f\x4a\xf1\x52\xe8\xb2\xfa\x9c\xb6"), + }, }; const struct mac_vectors_st hmac_sha512_vectors[] = { { - STR(key, key_size, - "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"), - STR(plaintext, plaintext_size, "Hi There"), - STR(output, output_size, - "\x87\xaa\x7c\xde\xa5\xef\x61\x9d\x4f\xf0\xb4\x24\x1a\x1d\x6c\xb0\x23\x79\xf4\xe2\xce\x4e\xc2\x78\x7a\xd0\xb3\x05\x45\xe1\x7c\xde\xda\xa8\x33\xb7\xd6\xb8\xa7\x02\x03\x8b\x27\x4e\xae\xa3\xf4\xe4\xbe\x9d\x91\x4e\xeb\x61\xf1\x70\x2e\x69\x6c\x20\x3a\x12\x68\x54"), - }, + STR(key, key_size, + "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"), + STR(plaintext, plaintext_size, "Hi There"), + STR(output, output_size, + "\x87\xaa\x7c\xde\xa5\xef\x61\x9d\x4f\xf0\xb4\x24\x1a\x1d\x6c\xb0\x23\x79\xf4\xe2\xce\x4e\xc2\x78\x7a\xd0\xb3\x05\x45\xe1\x7c\xde\xda\xa8\x33\xb7\xd6\xb8\xa7\x02\x03\x8b\x27\x4e\xae\xa3\xf4\xe4\xbe\x9d\x91\x4e\xeb\x61\xf1\x70\x2e\x69\x6c\x20\x3a\x12\x68\x54"), + }, }; /* Calculated */ const struct mac_vectors_st hmac_gostr_94_vectors[] = { { - STR(key, key_size, - "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f" - "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"), - STR(plaintext, plaintext_size, - "\x01\x26\xbd\xb8\x78\x00\xaf\x21\x43\x41\x45\x65\x63\x78\x01\x00"), - STR(output, output_size, - "\xba\xd7\x0b\x61\xc4\x10\x95\xbc\x47\xe1\x14\x1c\xfa\xed\x42\x72" - "\x6a\x5c\xee\xbd\x62\xce\x75\xdb\xbb\x9a\xd7\x6c\xda\x9f\x72\xf7"), - }, + STR(key, key_size, + "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f" + "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"), + STR(plaintext, plaintext_size, + "\x01\x26\xbd\xb8\x78\x00\xaf\x21\x43\x41\x45\x65\x63\x78\x01\x00"), + STR(output, output_size, + "\xba\xd7\x0b\x61\xc4\x10\x95\xbc\x47\xe1\x14\x1c\xfa\xed\x42\x72" + "\x6a\x5c\xee\xbd\x62\xce\x75\xdb\xbb\x9a\xd7\x6c\xda\x9f\x72\xf7"), + }, }; /* RFC 7836 */ const struct mac_vectors_st hmac_streebog_512_vectors[] = { { - STR(key, key_size, - "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f" - "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"), - STR(plaintext, plaintext_size, - "\x01\x26\xbd\xb8\x78\x00\xaf\x21\x43\x41\x45\x65\x63\x78\x01\x00"), - STR(output, output_size, - "\xa5\x9b\xab\x22\xec\xae\x19\xc6\x5f\xbd\xe6\xe5\xf4\xe9\xf5\xd8" - "\x54\x9d\x31\xf0\x37\xf9\xdf\x9b\x90\x55\x00\xe1\x71\x92\x3a\x77" - "\x3d\x5f\x15\x30\xf2\xed\x7e\x96\x4c\xb2\xee\xdc\x29\xe9\xad\x2f" - "\x3a\xfe\x93\xb2\x81\x4f\x79\xf5\x00\x0f\xfc\x03\x66\xc2\x51\xe6"), - }, + STR(key, key_size, + "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f" + "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"), + STR(plaintext, plaintext_size, + "\x01\x26\xbd\xb8\x78\x00\xaf\x21\x43\x41\x45\x65\x63\x78\x01\x00"), + STR(output, output_size, + "\xa5\x9b\xab\x22\xec\xae\x19\xc6\x5f\xbd\xe6\xe5\xf4\xe9\xf5\xd8" + "\x54\x9d\x31\xf0\x37\xf9\xdf\x9b\x90\x55\x00\xe1\x71\x92\x3a\x77" + "\x3d\x5f\x15\x30\xf2\xed\x7e\x96\x4c\xb2\xee\xdc\x29\xe9\xad\x2f" + "\x3a\xfe\x93\xb2\x81\x4f\x79\xf5\x00\x0f\xfc\x03\x66\xc2\x51\xe6"), + }, }; /* RFC 7836 */ const struct mac_vectors_st hmac_streebog_256_vectors[] = { { - STR(key, key_size, - "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f" - "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"), - STR(plaintext, plaintext_size, - "\x01\x26\xbd\xb8\x78\x00\xaf\x21\x43\x41\x45\x65\x63\x78\x01\x00"), - STR(output, output_size, - "\xa1\xaa\x5f\x7d\xe4\x02\xd7\xb3\xd3\x23\xf2\x99\x1c\x8d\x45\x34" - "\x01\x31\x37\x01\x0a\x83\x75\x4f\xd0\xaf\x6d\x7c\xd4\x92\x2e\xd9"), - }, -}; - -const struct mac_vectors_st aes_cmac_128_vectors[] = { /* NIST SP800-38A */ - { - STR(key, key_size, - "\x2b\x7e\x15\x16\x28\xae\xd2\xa6\xab\xf7\x15\x88\x09\xcf\x4f\x3c"), - STR(plaintext, plaintext_size, - "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96\xe9\x3d\x7e\x11\x73\x93\x17\x2a"), - STR(output, output_size, - "\x07\x0a\x16\xb4\x6b\x4d\x41\x44\xf7\x9b\xdd\x9d\xd0\x4a\x28\x7c"), - }, -}; - -const struct mac_vectors_st aes_cmac_256_vectors[] = { /* NIST SP800-38A */ - { - STR(key, key_size, - "\x60\x3d\xeb\x10\x15\xca\x71\xbe\x2b\x73\xae\xf0\x85\x7d\x77\x81" - "\x1f\x35\x2c\x07\x3b\x61\x08\xd7\x2d\x98\x10\xa3\x09\x14\xdf\xf4"), - STR(plaintext, plaintext_size, - "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96\xe9\x3d\x7e\x11\x73\x93\x17\x2a"), - STR(output, output_size, - "\x28\xa7\x02\x3f\x45\x2e\x8f\x82\xbd\x4b\xf2\x8d\x8c\x37\xc3\x5c"), - }, -}; - -const struct mac_vectors_st aes_gmac_128_vectors[] = { /* NIST test vectors */ - { - STR(key, key_size, - "\x23\x70\xe3\x20\xd4\x34\x42\x08\xe0\xff\x56\x83\xf2\x43\xb2\x13"), - STR(nonce, nonce_size, - "\x04\xdb\xb8\x2f\x04\x4d\x30\x83\x1c\x44\x12\x28"), - STR(plaintext, plaintext_size, - "\xd4\x3a\x8e\x50\x89\xee\xa0\xd0\x26\xc0\x3a\x85\x17\x8b\x27\xda"), - STR(output, output_size, - "\x2a\x04\x9c\x04\x9d\x25\xaa\x95\x96\x9b\x45\x1d\x93\xc3\x1c\x6e"), - }, -}; - -const struct mac_vectors_st aes_gmac_192_vectors[] = { /* NIST test vectors */ - { - STR(key, key_size, - "\xaa\x92\x1c\xb5\xa2\x43\xab\x08\x91\x1f\x32\x89\x26\x6b\x39\xda" - "\xb1\x33\xf5\xc4\x20\xa6\xc5\xcd"), - STR(nonce, nonce_size, - "\x8f\x73\xdb\x68\xda\xee\xed\x2d\x15\x5f\xb1\xa0"), - STR(plaintext, plaintext_size, - "\x48\x74\x43\xc7\xc1\x4c\xe4\x74\xcb\x3d\x29\x1f\x25\x70\x70\xa2"), - STR(output, output_size, - "\xb1\x26\x74\xfb\xea\xc6\x88\x9a\x24\x94\x8f\x27\x92\xe3\x0a\x50"), - }, -}; - -const struct mac_vectors_st aes_gmac_256_vectors[] = { /* NIST test vectors */ - { - STR(key, key_size, - "\x6d\xfd\xaf\xd6\x70\x3c\x28\x5c\x01\xf1\x4f\xd1\x0a\x60\x12\x86" - "\x2b\x2a\xf9\x50\xd4\x73\x3a\xbb\x40\x3b\x2e\x74\x5b\x26\x94\x5d"), - STR(nonce, nonce_size, - "\x37\x49\xd0\xb3\xd5\xba\xcb\x71\xbe\x06\xad\xe6"), - STR(plaintext, plaintext_size, - "\xc0\xd2\x49\x87\x19\x92\xe7\x03\x02\xae\x00\x81\x93\xd1\xe8\x9f"), - STR(output, output_size, - "\x4a\xa4\xcc\x69\xf8\x4e\xe6\xac\x16\xd9\xbf\xb4\xe0\x5d\xe5\x00"), - }, + STR(key, key_size, + "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f" + "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"), + STR(plaintext, plaintext_size, + "\x01\x26\xbd\xb8\x78\x00\xaf\x21\x43\x41\x45\x65\x63\x78\x01\x00"), + STR(output, output_size, + "\xa1\xaa\x5f\x7d\xe4\x02\xd7\xb3\xd3\x23\xf2\x99\x1c\x8d\x45\x34" + "\x01\x31\x37\x01\x0a\x83\x75\x4f\xd0\xaf\x6d\x7c\xd4\x92\x2e\xd9"), + }, +}; + +const struct mac_vectors_st aes_cmac_128_vectors[] = { + /* NIST SP800-38A */ + { + STR(key, key_size, + "\x2b\x7e\x15\x16\x28\xae\xd2\xa6\xab\xf7\x15\x88\x09\xcf\x4f\x3c"), + STR(plaintext, plaintext_size, + "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96\xe9\x3d\x7e\x11\x73\x93\x17\x2a"), + STR(output, output_size, + "\x07\x0a\x16\xb4\x6b\x4d\x41\x44\xf7\x9b\xdd\x9d\xd0\x4a\x28\x7c"), + }, +}; + +const struct mac_vectors_st aes_cmac_256_vectors[] = { + /* NIST SP800-38A */ + { + STR(key, key_size, + "\x60\x3d\xeb\x10\x15\xca\x71\xbe\x2b\x73\xae\xf0\x85\x7d\x77\x81" + "\x1f\x35\x2c\x07\x3b\x61\x08\xd7\x2d\x98\x10\xa3\x09\x14\xdf\xf4"), + STR(plaintext, plaintext_size, + "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96\xe9\x3d\x7e\x11\x73\x93\x17\x2a"), + STR(output, output_size, + "\x28\xa7\x02\x3f\x45\x2e\x8f\x82\xbd\x4b\xf2\x8d\x8c\x37\xc3\x5c"), + }, +}; + +const struct mac_vectors_st aes_gmac_128_vectors[] = { + /* NIST test vectors */ + { + STR(key, key_size, + "\x23\x70\xe3\x20\xd4\x34\x42\x08\xe0\xff\x56\x83\xf2\x43\xb2\x13"), + STR(nonce, nonce_size, + "\x04\xdb\xb8\x2f\x04\x4d\x30\x83\x1c\x44\x12\x28"), + STR(plaintext, plaintext_size, + "\xd4\x3a\x8e\x50\x89\xee\xa0\xd0\x26\xc0\x3a\x85\x17\x8b\x27\xda"), + STR(output, output_size, + "\x2a\x04\x9c\x04\x9d\x25\xaa\x95\x96\x9b\x45\x1d\x93\xc3\x1c\x6e"), + }, +}; + +const struct mac_vectors_st aes_gmac_192_vectors[] = { + /* NIST test vectors */ + { + STR(key, key_size, + "\xaa\x92\x1c\xb5\xa2\x43\xab\x08\x91\x1f\x32\x89\x26\x6b\x39\xda" + "\xb1\x33\xf5\xc4\x20\xa6\xc5\xcd"), + STR(nonce, nonce_size, + "\x8f\x73\xdb\x68\xda\xee\xed\x2d\x15\x5f\xb1\xa0"), + STR(plaintext, plaintext_size, + "\x48\x74\x43\xc7\xc1\x4c\xe4\x74\xcb\x3d\x29\x1f\x25\x70\x70\xa2"), + STR(output, output_size, + "\xb1\x26\x74\xfb\xea\xc6\x88\x9a\x24\x94\x8f\x27\x92\xe3\x0a\x50"), + }, +}; + +const struct mac_vectors_st aes_gmac_256_vectors[] = { + /* NIST test vectors */ + { + STR(key, key_size, + "\x6d\xfd\xaf\xd6\x70\x3c\x28\x5c\x01\xf1\x4f\xd1\x0a\x60\x12\x86" + "\x2b\x2a\xf9\x50\xd4\x73\x3a\xbb\x40\x3b\x2e\x74\x5b\x26\x94\x5d"), + STR(nonce, nonce_size, + "\x37\x49\xd0\xb3\xd5\xba\xcb\x71\xbe\x06\xad\xe6"), + STR(plaintext, plaintext_size, + "\xc0\xd2\x49\x87\x19\x92\xe7\x03\x02\xae\x00\x81\x93\xd1\xe8\x9f"), + STR(output, output_size, + "\x4a\xa4\xcc\x69\xf8\x4e\xe6\xac\x16\xd9\xbf\xb4\xe0\x5d\xe5\x00"), + }, }; const struct mac_vectors_st gost28147_tc26z_imit_vectors[] = { { - STR(key, key_size, - "\x9d\x05\xb7\x9e\x90\xca\xd0\x0a\x2c\xda\xd2\x2e\xf4\xe8\x6f\x5c" - "\xf5\xdc\x37\x68\x19\x85\xb3\xbf\xaa\x18\xc1\xc3\x05\x0a\x91\xa2"), - STR(plaintext, plaintext_size, - "\xb5\xa1\xf0\xe3\xce\x2f\x02\x1d\x67\x61\x94\x34\x5c\x41\xe3\x6e"), - STR(output, output_size, - "\x03\xe5\x67\x66"), - }, + STR(key, key_size, + "\x9d\x05\xb7\x9e\x90\xca\xd0\x0a\x2c\xda\xd2\x2e\xf4\xe8\x6f\x5c" + "\xf5\xdc\x37\x68\x19\x85\xb3\xbf\xaa\x18\xc1\xc3\x05\x0a\x91\xa2"), + STR(plaintext, plaintext_size, + "\xb5\xa1\xf0\xe3\xce\x2f\x02\x1d\x67\x61\x94\x34\x5c\x41\xe3\x6e"), + STR(output, output_size, "\x03\xe5\x67\x66"), + }, }; /* GOST R 34.13-2015 */ const struct mac_vectors_st magma_omac_vectors[] = { { - STR(key, key_size, - "\xff\xee\xdd\xcc\xbb\xaa\x99\x88\x77\x66\x55\x44\x33\x22\x11\x00" - "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"), - STR(plaintext, plaintext_size, - "\x92\xde\xf0\x6b\x3c\x13\x0a\x59" - "\xdb\x54\xc7\x04\xf8\x18\x9d\x20" - "\x4a\x98\xfb\x2e\x67\xa8\x02\x4c" - "\x89\x12\x40\x9b\x17\xb5\x7e\x41"), - STR(output, output_size, - "\x15\x4e\x72\x10\x20\x30\xc5\xbb"), - }, + STR(key, key_size, + "\xff\xee\xdd\xcc\xbb\xaa\x99\x88\x77\x66\x55\x44\x33\x22\x11\x00" + "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"), + STR(plaintext, plaintext_size, + "\x92\xde\xf0\x6b\x3c\x13\x0a\x59" + "\xdb\x54\xc7\x04\xf8\x18\x9d\x20" + "\x4a\x98\xfb\x2e\x67\xa8\x02\x4c" + "\x89\x12\x40\x9b\x17\xb5\x7e\x41"), + STR(output, output_size, "\x15\x4e\x72\x10\x20\x30\xc5\xbb"), + }, }; /* GOST R 34.13-2015 */ const struct mac_vectors_st kuznyechik_omac_vectors[] = { { - STR(key, key_size, - "\x88\x99\xaa\xbb\xcc\xdd\xee\xff\x00\x11\x22\x33\x44\x55\x66\x77" - "\xfe\xdc\xba\x98\x76\x54\x32\x10\x01\x23\x45\x67\x89\xab\xcd\xef"), - STR(plaintext, plaintext_size, - "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" - "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" - "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" - "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11"), - STR(output, output_size, - "\x33\x6f\x4d\x29\x60\x59\xfb\xe3\x4d\xde\xb3\x5b\x37\x74\x9c\x67"), - }, + STR(key, key_size, + "\x88\x99\xaa\xbb\xcc\xdd\xee\xff\x00\x11\x22\x33\x44\x55\x66\x77" + "\xfe\xdc\xba\x98\x76\x54\x32\x10\x01\x23\x45\x67\x89\xab\xcd\xef"), + STR(plaintext, plaintext_size, + "\x11\x22\x33\x44\x55\x66\x77\x00\xff\xee\xdd\xcc\xbb\xaa\x99\x88" + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a" + "\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00" + "\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xee\xff\x0a\x00\x11"), + STR(output, output_size, + "\x33\x6f\x4d\x29\x60\x59\xfb\xe3\x4d\xde\xb3\x5b\x37\x74\x9c\x67"), + }, }; static int test_mac(gnutls_mac_algorithm_t mac, - const struct mac_vectors_st *vectors, - size_t vectors_size, unsigned flags) + const struct mac_vectors_st *vectors, size_t vectors_size, + unsigned flags) { uint8_t data[HASH_DATA_SIZE]; unsigned int i; @@ -2650,8 +2513,7 @@ static int test_mac(gnutls_mac_algorithm_t mac, gnutls_hmac_hd_t copy; for (i = 0; i < vectors_size; i++) { - ret = gnutls_hmac_init(&hd, - mac, vectors[i].key, + ret = gnutls_hmac_init(&hd, mac, vectors[i].key, vectors[i].key_size); if (ret < 0) { @@ -2661,8 +2523,7 @@ static int test_mac(gnutls_mac_algorithm_t mac, } if (vectors[i].nonce_size) - gnutls_hmac_set_nonce(hd, - vectors[i].nonce, + gnutls_hmac_set_nonce(hd, vectors[i].nonce, vectors[i].nonce_size); ret = gnutls_hmac(hd, vectors[i].plaintext, 1); @@ -2675,8 +2536,7 @@ static int test_mac(gnutls_mac_algorithm_t mac, gnutls_mac_get_name(mac)); } - ret = gnutls_hmac(hd, - &vectors[i].plaintext[1], + ret = gnutls_hmac(hd, &vectors[i].plaintext[1], vectors[i].plaintext_size - 1); if (ret < 0) return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); @@ -2688,63 +2548,63 @@ static int test_mac(gnutls_mac_algorithm_t mac, return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); if (data_size != vectors[i].output_size || - memcmp(data, vectors[i].output, - vectors[i].output_size) != 0) { - - _gnutls_debug_log - ("MAC-%s test vector %d failed!\n", - gnutls_mac_get_name(mac), i); + memcmp(data, vectors[i].output, vectors[i].output_size) != + 0) { + _gnutls_debug_log("MAC-%s test vector %d failed!\n", + gnutls_mac_get_name(mac), i); return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); } if (copy != NULL) { - ret = gnutls_hmac(copy, - &vectors[i].plaintext[1], + ret = gnutls_hmac(copy, &vectors[i].plaintext[1], vectors[i].plaintext_size - 1); if (ret < 0) - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); memset(data, 0xaa, data_size); gnutls_hmac_deinit(copy, data); if (memcmp(data, vectors[i].output, vectors[i].output_size) != 0) { - _gnutls_debug_log - ("MAC-%s copy test vector %d failed!\n", - gnutls_mac_get_name(mac), i); - return - gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); + _gnutls_debug_log( + "MAC-%s copy test vector %d failed!\n", + gnutls_mac_get_name(mac), i); + return gnutls_assert_val( + GNUTLS_E_SELF_TEST_ERROR); } } } - _gnutls_debug_log - ("MAC-%s self check succeeded\n", gnutls_mac_get_name(mac)); + _gnutls_debug_log("MAC-%s self check succeeded\n", + gnutls_mac_get_name(mac)); return 0; } -#define CASE(x, func, vectors) case x: \ - ret = func(x, V(vectors), flags); \ - if (!(flags & GNUTLS_SELF_TEST_FLAG_ALL) || ret < 0) \ - return ret - -#define CASE2(x, func, func2, vectors) case x: \ - ret = func(x, V(vectors), flags); \ - if (!(flags & GNUTLS_SELF_TEST_FLAG_ALL) || ret < 0) \ - return ret; \ - ret = func2(x, V(vectors), flags); \ +#define CASE(x, func, vectors) \ + case x: \ + ret = func(x, V(vectors), flags); \ + if (!(flags & GNUTLS_SELF_TEST_FLAG_ALL) || ret < 0) \ + return ret + +#define CASE2(x, func, func2, vectors) \ + case x: \ + ret = func(x, V(vectors), flags); \ + if (!(flags & GNUTLS_SELF_TEST_FLAG_ALL) || ret < 0) \ + return ret; \ + ret = func2(x, V(vectors), flags); \ + if (!(flags & GNUTLS_SELF_TEST_FLAG_ALL) || ret < 0) \ + return ret + +#define NON_FIPS_CASE(x, func, vectors) \ + case x: \ + if (_gnutls_fips_mode_enabled() == 0) { \ + ret = func(x, V(vectors), flags); \ if (!(flags & GNUTLS_SELF_TEST_FLAG_ALL) || ret < 0) \ - return ret - -#define NON_FIPS_CASE(x, func, vectors) case x: \ - if (_gnutls_fips_mode_enabled() == 0) { \ - ret = func(x, V(vectors), flags); \ - if (!(flags & GNUTLS_SELF_TEST_FLAG_ALL) || ret < 0) \ - return ret; \ - } + return ret; \ + } /*- * gnutls_cipher_self_test: @@ -3007,62 +2867,62 @@ struct hkdf_vectors_st { const struct hkdf_vectors_st hkdf_sha256_vectors[] = { /* RFC 5869: A.1. Test Case 1: Basic test case with SHA-256 */ { - STR(ikm, ikm_size, - "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b" - "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"), - STR(salt, salt_size, - "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c"), - STR(prk, prk_size, - "\x07\x77\x09\x36\x2c\x2e\x32\xdf\x0d\xdc\x3f\x0d\xc4\x7b" - "\xba\x63\x90\xb6\xc7\x3b\xb5\x0f\x9c\x31\x22\xec\x84\x4a" - "\xd7\xc2\xb3\xe5"), - STR(info, info_size, - "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9"), - STR(okm, okm_size, - "\x3c\xb2\x5f\x25\xfa\xac\xd5\x7a\x90\x43\x4f\x64\xd0\x36" - "\x2f\x2a\x2d\x2d\x0a\x90\xcf\x1a\x5a\x4c\x5d\xb0\x2d\x56" - "\xec\xc4\xc5\xbf\x34\x00\x72\x08\xd5\xb8\x87\x18\x58\x65"), - }, + STR(ikm, ikm_size, + "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b" + "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"), + STR(salt, salt_size, + "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c"), + STR(prk, prk_size, + "\x07\x77\x09\x36\x2c\x2e\x32\xdf\x0d\xdc\x3f\x0d\xc4\x7b" + "\xba\x63\x90\xb6\xc7\x3b\xb5\x0f\x9c\x31\x22\xec\x84\x4a" + "\xd7\xc2\xb3\xe5"), + STR(info, info_size, + "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9"), + STR(okm, okm_size, + "\x3c\xb2\x5f\x25\xfa\xac\xd5\x7a\x90\x43\x4f\x64\xd0\x36" + "\x2f\x2a\x2d\x2d\x0a\x90\xcf\x1a\x5a\x4c\x5d\xb0\x2d\x56" + "\xec\xc4\xc5\xbf\x34\x00\x72\x08\xd5\xb8\x87\x18\x58\x65"), + }, /* RFC 5869: A.2. Test Case 2: Test with SHA-256 and longer inputs/outputs */ { - STR(ikm, ikm_size, - "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d" - "\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b" - "\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29" - "\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37" - "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40\x41\x42\x43\x44\x45" - "\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"), - STR(salt, salt_size, - "\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d" - "\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b" - "\x7c\x7d\x7e\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89" - "\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97" - "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5" - "\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf"), - STR(prk, prk_size, - "\x06\xa6\xb8\x8c\x58\x53\x36\x1a\x06\x10\x4c\x9c\xeb\x35" - "\xb4\x5c\xef\x76\x00\x14\x90\x46\x71\x01\x4a\x19\x3f\x40" - "\xc1\x5f\xc2\x44"), - STR(info, info_size, - "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd" - "\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb" - "\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9" - "\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7" - "\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5" - "\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"), - STR(okm, okm_size, - "\xb1\x1e\x39\x8d\xc8\x03\x27\xa1\xc8\xe7\xf7\x8c\x59\x6a" - "\x49\x34\x4f\x01\x2e\xda\x2d\x4e\xfa\xd8\xa0\x50\xcc\x4c" - "\x19\xaf\xa9\x7c\x59\x04\x5a\x99\xca\xc7\x82\x72\x71\xcb" - "\x41\xc6\x5e\x59\x0e\x09\xda\x32\x75\x60\x0c\x2f\x09\xb8" - "\x36\x77\x93\xa9\xac\xa3\xdb\x71\xcc\x30\xc5\x81\x79\xec" - "\x3e\x87\xc1\x4c\x01\xd5\xc1\xf3\x43\x4f\x1d\x87"), - }, + STR(ikm, ikm_size, + "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d" + "\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b" + "\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29" + "\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37" + "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40\x41\x42\x43\x44\x45" + "\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"), + STR(salt, salt_size, + "\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d" + "\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b" + "\x7c\x7d\x7e\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89" + "\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97" + "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5" + "\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf"), + STR(prk, prk_size, + "\x06\xa6\xb8\x8c\x58\x53\x36\x1a\x06\x10\x4c\x9c\xeb\x35" + "\xb4\x5c\xef\x76\x00\x14\x90\x46\x71\x01\x4a\x19\x3f\x40" + "\xc1\x5f\xc2\x44"), + STR(info, info_size, + "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd" + "\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb" + "\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9" + "\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7" + "\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5" + "\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"), + STR(okm, okm_size, + "\xb1\x1e\x39\x8d\xc8\x03\x27\xa1\xc8\xe7\xf7\x8c\x59\x6a" + "\x49\x34\x4f\x01\x2e\xda\x2d\x4e\xfa\xd8\xa0\x50\xcc\x4c" + "\x19\xaf\xa9\x7c\x59\x04\x5a\x99\xca\xc7\x82\x72\x71\xcb" + "\x41\xc6\x5e\x59\x0e\x09\xda\x32\x75\x60\x0c\x2f\x09\xb8" + "\x36\x77\x93\xa9\xac\xa3\xdb\x71\xcc\x30\xc5\x81\x79\xec" + "\x3e\x87\xc1\x4c\x01\xd5\xc1\xf3\x43\x4f\x1d\x87"), + }, }; static int test_hkdf(gnutls_mac_algorithm_t mac, - const struct hkdf_vectors_st *vectors, - size_t vectors_size, unsigned flags) + const struct hkdf_vectors_st *vectors, size_t vectors_size, + unsigned flags) { unsigned int i; @@ -3084,9 +2944,9 @@ static int test_hkdf(gnutls_mac_algorithm_t mac, } if (memcmp(output, vectors[i].prk, vectors[i].prk_size) != 0) { - _gnutls_debug_log - ("HKDF extract: MAC-%s test vector failed!\n", - gnutls_mac_get_name(mac)); + _gnutls_debug_log( + "HKDF extract: MAC-%s test vector failed!\n", + gnutls_mac_get_name(mac)); return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); } @@ -3096,8 +2956,8 @@ static int test_hkdf(gnutls_mac_algorithm_t mac, info.data = (void *)vectors[i].info; info.size = vectors[i].info_size; - ret = gnutls_hkdf_expand(mac, &prk, &info, - output, vectors[i].okm_size); + ret = gnutls_hkdf_expand(mac, &prk, &info, output, + vectors[i].okm_size); if (ret < 0) { _gnutls_debug_log("error extracting HKDF: MAC-%s\n", gnutls_mac_get_name(mac)); @@ -3105,16 +2965,16 @@ static int test_hkdf(gnutls_mac_algorithm_t mac, } if (memcmp(output, vectors[i].okm, vectors[i].okm_size) != 0) { - _gnutls_debug_log - ("HKDF expand: MAC-%s test vector failed!\n", - gnutls_mac_get_name(mac)); + _gnutls_debug_log( + "HKDF expand: MAC-%s test vector failed!\n", + gnutls_mac_get_name(mac)); return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); } } - _gnutls_debug_log - ("HKDF: MAC-%s self check succeeded\n", gnutls_mac_get_name(mac)); + _gnutls_debug_log("HKDF: MAC-%s self check succeeded\n", + gnutls_mac_get_name(mac)); return 0; } @@ -3162,39 +3022,39 @@ struct pbkdf2_vectors_st { const struct pbkdf2_vectors_st pbkdf2_sha256_vectors[] = { /* RFC 7914: 11. Test Vectors for PBKDF2 with HMAC-SHA-256 */ { - STR(key, key_size, "passwd"), - STR(salt, salt_size, "salt"), - .iter_count = 1, - STR(output, output_size, - "\x55\xac\x04\x6e\x56\xe3\x08\x9f\xec\x16\x91\xc2\x25\x44" - "\xb6\x05\xf9\x41\x85\x21\x6d\xde\x04\x65\xe6\x8b\x9d\x57" - "\xc2\x0d\xac\xbc\x49\xca\x9c\xcc\xf1\x79\xb6\x45\x99\x16" - "\x64\xb3\x9d\x77\xef\x31\x7c\x71\xb8\x45\xb1\xe3\x0b\xd5" - "\x09\x11\x20\x41\xd3\xa1\x97\x83"), - }, + STR(key, key_size, "passwd"), + STR(salt, salt_size, "salt"), + .iter_count = 1, + STR(output, output_size, + "\x55\xac\x04\x6e\x56\xe3\x08\x9f\xec\x16\x91\xc2\x25\x44" + "\xb6\x05\xf9\x41\x85\x21\x6d\xde\x04\x65\xe6\x8b\x9d\x57" + "\xc2\x0d\xac\xbc\x49\xca\x9c\xcc\xf1\x79\xb6\x45\x99\x16" + "\x64\xb3\x9d\x77\xef\x31\x7c\x71\xb8\x45\xb1\xe3\x0b\xd5" + "\x09\x11\x20\x41\xd3\xa1\x97\x83"), + }, /* RFC 7914: 11. Test Vectors for PBKDF2 with HMAC-SHA-256 */ { - STR(key, key_size, "Password"), - STR(salt, salt_size, "NaCl"), - .iter_count = 80000, - STR(output, output_size, - "\x4d\xdc\xd8\xf6\x0b\x98\xbe\x21\x83\x0c\xee\x5e\xf2\x27" - "\x01\xf9\x64\x1a\x44\x18\xd0\x4c\x04\x14\xae\xff\x08\x87" - "\x6b\x34\xab\x56\xa1\xd4\x25\xa1\x22\x58\x33\x54\x9a\xdb" - "\x84\x1b\x51\xc9\xb3\x17\x6a\x27\x2b\xde\xbb\xa1\xd0\x78" - "\x47\x8f\x62\xb3\x97\xf3\x3c\x8d"), - }, + STR(key, key_size, "Password"), + STR(salt, salt_size, "NaCl"), + .iter_count = 80000, + STR(output, output_size, + "\x4d\xdc\xd8\xf6\x0b\x98\xbe\x21\x83\x0c\xee\x5e\xf2\x27" + "\x01\xf9\x64\x1a\x44\x18\xd0\x4c\x04\x14\xae\xff\x08\x87" + "\x6b\x34\xab\x56\xa1\xd4\x25\xa1\x22\x58\x33\x54\x9a\xdb" + "\x84\x1b\x51\xc9\xb3\x17\x6a\x27\x2b\xde\xbb\xa1\xd0\x78" + "\x47\x8f\x62\xb3\x97\xf3\x3c\x8d"), + }, /* Test vector extracted from: * https://dev.gnupg.org/source/libgcrypt/browse/master/cipher/kdf.c */ { - STR(key, key_size, "passwordPASSWORDpassword"), - STR(salt, salt_size, "saltSALTsaltSALTsaltSALTsaltSALTsalt"), - .iter_count = 4096, - STR(output, output_size, - "\x34\x8c\x89\xdb\xcb\xd3\x2b\x2f\x32\xd8\x14\xb8\x11\x6e" - "\x84\xcf\x2b\x17\x34\x7e\xbc\x18\x00\x18\x1c\x4e\x2a\x1f" - "\xb8\xdd\x53\xe1\xc6\x35\x51\x8c\x7d\xac\x47\xe9"), - }, + STR(key, key_size, "passwordPASSWORDpassword"), + STR(salt, salt_size, "saltSALTsaltSALTsaltSALTsaltSALTsalt"), + .iter_count = 4096, + STR(output, output_size, + "\x34\x8c\x89\xdb\xcb\xd3\x2b\x2f\x32\xd8\x14\xb8\x11\x6e" + "\x84\xcf\x2b\x17\x34\x7e\xbc\x18\x00\x18\x1c\x4e\x2a\x1f" + "\xb8\xdd\x53\xe1\xc6\x35\x51\x8c\x7d\xac\x47\xe9"), + }, }; static int test_pbkdf2(gnutls_mac_algorithm_t mac, @@ -3223,16 +3083,16 @@ static int test_pbkdf2(gnutls_mac_algorithm_t mac, if (memcmp(output, vectors[i].output, vectors[i].output_size) != 0) { - _gnutls_debug_log - ("PBKDF2: MAC-%s test vector failed!\n", - gnutls_mac_get_name(mac)); + _gnutls_debug_log( + "PBKDF2: MAC-%s test vector failed!\n", + gnutls_mac_get_name(mac)); return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); } } - _gnutls_debug_log - ("PBKDF2: MAC-%s self check succeeded\n", gnutls_mac_get_name(mac)); + _gnutls_debug_log("PBKDF2: MAC-%s self check succeeded\n", + gnutls_mac_get_name(mac)); return 0; } @@ -3281,87 +3141,82 @@ struct tlsprf_vectors_st { const struct tlsprf_vectors_st tls10prf_vectors[] = { /* tests/tls10-prf.c: test1 */ { - STR(key, key_size, - "\x26\x3b\xdb\xbb\x6f\x6d\x4c\x66\x4e\x05\x8d\x0a\xa9\xd3" - "\x21\xbe"), - STR(label, label_size, - "test label"), - STR(seed, seed_size, - "\xb9\x20\x57\x3b\x19\x96\x01\x02\x4f\x04\xd6\xdc\x61\x96" - "\x6e\x65"), - STR(output, output_size, - "\x66\x17\x99\x37\x65\xfa\x6c\xa7\x03\xd1\x9e\xc7\x0d\xd5" - "\xdd\x16\x0f\xfc\xc0\x77\x25\xfa\xfb\x71\x4a\x9f\x81\x5a" - "\x2a\x30\xbf\xb7\xe3\xbb\xfb\x7e\xee\x57\x4b\x3b\x61\x3e" - "\xb7\xfe\x80\xee\xc9\x69\x1d\x8c\x1b\x0e\x2d\x9b\x3c\x8b" - "\x4b\x02\xb6\xb6\xd6\xdb\x88\xe2\x09\x46\x23\xef\x62\x40" - "\x60\x7e\xda\x7a\xbe\x3c\x84\x6e\x82\xa3"), - }, + STR(key, key_size, + "\x26\x3b\xdb\xbb\x6f\x6d\x4c\x66\x4e\x05\x8d\x0a\xa9\xd3" + "\x21\xbe"), + STR(label, label_size, "test label"), + STR(seed, seed_size, + "\xb9\x20\x57\x3b\x19\x96\x01\x02\x4f\x04\xd6\xdc\x61\x96" + "\x6e\x65"), + STR(output, output_size, + "\x66\x17\x99\x37\x65\xfa\x6c\xa7\x03\xd1\x9e\xc7\x0d\xd5" + "\xdd\x16\x0f\xfc\xc0\x77\x25\xfa\xfb\x71\x4a\x9f\x81\x5a" + "\x2a\x30\xbf\xb7\xe3\xbb\xfb\x7e\xee\x57\x4b\x3b\x61\x3e" + "\xb7\xfe\x80\xee\xc9\x69\x1d\x8c\x1b\x0e\x2d\x9b\x3c\x8b" + "\x4b\x02\xb6\xb6\xd6\xdb\x88\xe2\x09\x46\x23\xef\x62\x40" + "\x60\x7e\xda\x7a\xbe\x3c\x84\x6e\x82\xa3"), + }, }; const struct tlsprf_vectors_st tls12prf_sha256_vectors[] = { /* tests/tls12-prf.c: sha256_test1 */ { - STR(key, key_size, - "\x04\x50\xb0\xea\x9e\xcd\x36\x02\xee\x0d\x76\xc5\xc3\xc8" - "\x6f\x4a"), - STR(label, label_size, - "test label"), - STR(seed, seed_size, - "\x20\x7a\xcc\x02\x54\xb8\x67\xf5\xb9\x25\xb4\x5a\x33\x60" - "\x1d\x8b"), - STR(output, output_size, - "\xae\x67\x9e\x0e\x71\x4f\x59\x75\x76\x37\x68\xb1\x66\x97" - "\x9e\x1d"), - }, + STR(key, key_size, + "\x04\x50\xb0\xea\x9e\xcd\x36\x02\xee\x0d\x76\xc5\xc3\xc8" + "\x6f\x4a"), + STR(label, label_size, "test label"), + STR(seed, seed_size, + "\x20\x7a\xcc\x02\x54\xb8\x67\xf5\xb9\x25\xb4\x5a\x33\x60" + "\x1d\x8b"), + STR(output, output_size, + "\xae\x67\x9e\x0e\x71\x4f\x59\x75\x76\x37\x68\xb1\x66\x97" + "\x9e\x1d"), + }, /* tests/tls12-prf.c: sha256_test2 */ { - STR(key, key_size, - "\x34\x20\x4a\x9d\xf0\xbe\x6e\xb4\xe9\x25\xa8\x02\x7c\xf6" - "\xc6\x02"), - STR(label, label_size, - "test label"), - STR(seed, seed_size, - "\x98\xb2\xc4\x0b\xcd\x66\x4c\x83\xbb\x92\x0c\x18\x20\x1a" - "\x63\x95"), - STR(output, output_size, - "\xaf\xa9\x31\x24\x53\xc2\x2f\xa8\x3d\x2b\x51\x1b\x37\x2d" - "\x73\xa4\x02\xa2\xa6\x28\x73\x23\x9a\x51\xfa\xde\x45\x08" - "\x2f\xaf\x3f\xd2\xbb\x7f\xfb\x3e\x9b\xf3\x6e\x28\xb3\x14" - "\x1a\xab\xa4\x84\x00\x53\x32\xa9\xf9\xe3\x88\xa4\xd3\x29" - "\xf1\x58\x7a\x4b\x31\x7d\xa0\x77\x08\xea\x1b\xa9\x5a\x53" - "\xf8\x78\x67\x24\xbd\x83\xce\x4b\x03\xaf"), - }, + STR(key, key_size, + "\x34\x20\x4a\x9d\xf0\xbe\x6e\xb4\xe9\x25\xa8\x02\x7c\xf6" + "\xc6\x02"), + STR(label, label_size, "test label"), + STR(seed, seed_size, + "\x98\xb2\xc4\x0b\xcd\x66\x4c\x83\xbb\x92\x0c\x18\x20\x1a" + "\x63\x95"), + STR(output, output_size, + "\xaf\xa9\x31\x24\x53\xc2\x2f\xa8\x3d\x2b\x51\x1b\x37\x2d" + "\x73\xa4\x02\xa2\xa6\x28\x73\x23\x9a\x51\xfa\xde\x45\x08" + "\x2f\xaf\x3f\xd2\xbb\x7f\xfb\x3e\x9b\xf3\x6e\x28\xb3\x14" + "\x1a\xab\xa4\x84\x00\x53\x32\xa9\xf9\xe3\x88\xa4\xd3\x29" + "\xf1\x58\x7a\x4b\x31\x7d\xa0\x77\x08\xea\x1b\xa9\x5a\x53" + "\xf8\x78\x67\x24\xbd\x83\xce\x4b\x03\xaf"), + }, /* tests/tls12-prf.c: sha256_test3 */ { - STR(key, key_size, - "\xa3\x69\x1a\xa1\xf6\x81\x4b\x80\x59\x2b\xf1\xcf\x2a\xcf" - "\x16\x97"), - STR(label, label_size, - "test label"), - STR(seed, seed_size, - "\x55\x23\xd4\x1e\x32\x0e\x69\x4d\x0c\x1f\xf5\x73\x4d\x83" - "\x0b\x93\x3e\x46\x92\x70\x71\xc9\x26\x21"), - STR(output, output_size, - "\x6a\xd0\x98\x4f\xa0\x6f\x78\xfe\x16\x1b\xd4\x6d\x7c\x26" - "\x1d\xe4\x33\x40\xd7\x28\xdd\xdc\x3d\x0f\xf0\xdd\x7e\x0d"), - }, + STR(key, key_size, + "\xa3\x69\x1a\xa1\xf6\x81\x4b\x80\x59\x2b\xf1\xcf\x2a\xcf" + "\x16\x97"), + STR(label, label_size, "test label"), + STR(seed, seed_size, + "\x55\x23\xd4\x1e\x32\x0e\x69\x4d\x0c\x1f\xf5\x73\x4d\x83" + "\x0b\x93\x3e\x46\x92\x70\x71\xc9\x26\x21"), + STR(output, output_size, + "\x6a\xd0\x98\x4f\xa0\x6f\x78\xfe\x16\x1b\xd4\x6d\x7c\x26" + "\x1d\xe4\x33\x40\xd7\x28\xdd\xdc\x3d\x0f\xf0\xdd\x7e\x0d"), + }, /* tests/tls12-prf.c: sha256_test4 */ { - STR(key, key_size, - "\x21\x0e\xc9\x37\x06\x97\x07\xe5\x46\x5b\xc4\x6b\xf7\x79" - "\xe1\x04\x10\x8b\x18\xfd\xb7\x93\xbe\x7b\x21\x8d\xbf\x14" - "\x5c\x86\x41\xf3"), - STR(label, label_size, - "test label"), - STR(seed, seed_size, - "\x1e\x35\x1a\x0b\xaf\x35\xc7\x99\x45\x92\x43\x94\xb8\x81" - "\xcf\xe3\x1d\xae\x8f\x1c\x1e\xd5\x4d\x3b"), - STR(output, output_size, - "\x76\x53\xfa\x80\x9c\xde\x3b\x55\x3c\x4a\x17\xe2\xcd\xbc" - "\xc9\x18\xf3\x65\x27\xf2\x22\x19\xa7\xd7\xf9\x5d\x97\x24" - "\x3f\xf2\xd5\xde\xe8\x26\x5e\xf0\xaf\x03"), - }, + STR(key, key_size, + "\x21\x0e\xc9\x37\x06\x97\x07\xe5\x46\x5b\xc4\x6b\xf7\x79" + "\xe1\x04\x10\x8b\x18\xfd\xb7\x93\xbe\x7b\x21\x8d\xbf\x14" + "\x5c\x86\x41\xf3"), + STR(label, label_size, "test label"), + STR(seed, seed_size, + "\x1e\x35\x1a\x0b\xaf\x35\xc7\x99\x45\x92\x43\x94\xb8\x81" + "\xcf\xe3\x1d\xae\x8f\x1c\x1e\xd5\x4d\x3b"), + STR(output, output_size, + "\x76\x53\xfa\x80\x9c\xde\x3b\x55\x3c\x4a\x17\xe2\xcd\xbc" + "\xc9\x18\xf3\x65\x27\xf2\x22\x19\xa7\xd7\xf9\x5d\x97\x24" + "\x3f\xf2\xd5\xde\xe8\x26\x5e\xf0\xaf\x03"), + }, }; const struct tlsprf_vectors_st tls12prf_sha384_vectors[] = { @@ -3369,27 +3224,26 @@ const struct tlsprf_vectors_st tls12prf_sha384_vectors[] = { * https://www.ietf.org/mail-archive/web/tls/current/msg03416.html */ { - STR(key, key_size, - "\xb8\x0b\x73\x3d\x6c\xee\xfc\xdc\x71\x56\x6e\xa4\x8e\x55" - "\x67\xdf"), - STR(label, label_size, - "test label"), - STR(seed, seed_size, - "\xcd\x66\x5c\xf6\xa8\x44\x7d\xd6\xff\x8b\x27\x55\x5e\xdb" - "\x74\x65"), - STR(output, output_size, - "\x7b\x0c\x18\xe9\xce\xd4\x10\xed\x18\x04\xf2\xcf\xa3\x4a" - "\x33\x6a\x1c\x14\xdf\xfb\x49\x00\xbb\x5f\xd7\x94\x21\x07" - "\xe8\x1c\x83\xcd\xe9\xca\x0f\xaa\x60\xbe\x9f\xe3\x4f\x82" - "\xb1\x23\x3c\x91\x46\xa0\xe5\x34\xcb\x40\x0f\xed\x27\x00" - "\x88\x4f\x9d\xc2\x36\xf8\x0e\xdd\x8b\xfa\x96\x11\x44\xc9" - "\xe8\xd7\x92\xec\xa7\x22\xa7\xb3\x2f\xc3\xd4\x16\xd4\x73" - "\xeb\xc2\xc5\xfd\x4a\xbf\xda\xd0\x5d\x91\x84\x25\x9b\x5b" - "\xf8\xcd\x4d\x90\xfa\x0d\x31\xe2\xde\xc4\x79\xe4\xf1\xa2" - "\x60\x66\xf2\xee\xa9\xa6\x92\x36\xa3\xe5\x26\x55\xc9\xe9" - "\xae\xe6\x91\xc8\xf3\xa2\x68\x54\x30\x8d\x5e\xaa\x3b\xe8" - "\x5e\x09\x90\x70\x3d\x73\xe5\x6f"), - }, + STR(key, key_size, + "\xb8\x0b\x73\x3d\x6c\xee\xfc\xdc\x71\x56\x6e\xa4\x8e\x55" + "\x67\xdf"), + STR(label, label_size, "test label"), + STR(seed, seed_size, + "\xcd\x66\x5c\xf6\xa8\x44\x7d\xd6\xff\x8b\x27\x55\x5e\xdb" + "\x74\x65"), + STR(output, output_size, + "\x7b\x0c\x18\xe9\xce\xd4\x10\xed\x18\x04\xf2\xcf\xa3\x4a" + "\x33\x6a\x1c\x14\xdf\xfb\x49\x00\xbb\x5f\xd7\x94\x21\x07" + "\xe8\x1c\x83\xcd\xe9\xca\x0f\xaa\x60\xbe\x9f\xe3\x4f\x82" + "\xb1\x23\x3c\x91\x46\xa0\xe5\x34\xcb\x40\x0f\xed\x27\x00" + "\x88\x4f\x9d\xc2\x36\xf8\x0e\xdd\x8b\xfa\x96\x11\x44\xc9" + "\xe8\xd7\x92\xec\xa7\x22\xa7\xb3\x2f\xc3\xd4\x16\xd4\x73" + "\xeb\xc2\xc5\xfd\x4a\xbf\xda\xd0\x5d\x91\x84\x25\x9b\x5b" + "\xf8\xcd\x4d\x90\xfa\x0d\x31\xe2\xde\xc4\x79\xe4\xf1\xa2" + "\x60\x66\xf2\xee\xa9\xa6\x92\x36\xa3\xe5\x26\x55\xc9\xe9" + "\xae\xe6\x91\xc8\xf3\xa2\x68\x54\x30\x8d\x5e\xaa\x3b\xe8" + "\x5e\x09\x90\x70\x3d\x73\xe5\x6f"), + }, }; static int test_tlsprf(gnutls_mac_algorithm_t mac, @@ -3402,8 +3256,7 @@ static int test_tlsprf(gnutls_mac_algorithm_t mac, char output[4096]; int ret; - ret = _gnutls_prf_raw(mac, - vectors[i].key_size, vectors[i].key, + ret = _gnutls_prf_raw(mac, vectors[i].key_size, vectors[i].key, vectors[i].label_size, (const char *)vectors[i].label, vectors[i].seed_size, vectors[i].seed, @@ -3416,17 +3269,16 @@ static int test_tlsprf(gnutls_mac_algorithm_t mac, if (memcmp(output, vectors[i].output, vectors[i].output_size) != 0) { - _gnutls_debug_log - ("TLS-PRF: MAC-%s test vector failed!\n", - gnutls_mac_get_name(mac)); + _gnutls_debug_log( + "TLS-PRF: MAC-%s test vector failed!\n", + gnutls_mac_get_name(mac)); return gnutls_assert_val(GNUTLS_E_SELF_TEST_ERROR); } } - _gnutls_debug_log - ("TLS-PRF: MAC-%s self check succeeded\n", - gnutls_mac_get_name(mac)); + _gnutls_debug_log("TLS-PRF: MAC-%s self check succeeded\n", + gnutls_mac_get_name(mac)); return 0; } diff --git a/lib/crypto.h b/lib/crypto.h index 8a5638ba03..940356040a 100644 --- a/lib/crypto.h +++ b/lib/crypto.h @@ -21,21 +21,20 @@ */ #ifndef GNUTLS_LIB_CRYPTO_H -# define GNUTLS_LIB_CRYPTO_H +#define GNUTLS_LIB_CRYPTO_H -const gnutls_crypto_cipher_st - * _gnutls_get_crypto_cipher(gnutls_cipher_algorithm_t algo); -const gnutls_crypto_digest_st - * _gnutls_get_crypto_digest(gnutls_digest_algorithm_t algo); +const gnutls_crypto_cipher_st * +_gnutls_get_crypto_cipher(gnutls_cipher_algorithm_t algo); +const gnutls_crypto_digest_st * +_gnutls_get_crypto_digest(gnutls_digest_algorithm_t algo); const gnutls_crypto_mac_st *_gnutls_get_crypto_mac(gnutls_mac_algorithm_t algo); void _gnutls_crypto_deregister(void); int _gnutls_crypto_register_cipher(gnutls_cipher_algorithm_t algorithm, - int priority, - gnutls_cipher_init_func init, + int priority, gnutls_cipher_init_func init, gnutls_cipher_setkey_func setkey, gnutls_cipher_setiv_func setiv, gnutls_cipher_encrypt_func encrypt, gnutls_cipher_decrypt_func decrypt, gnutls_cipher_deinit_func deinit); -#endif /* GNUTLS_LIB_CRYPTO_H */ +#endif /* GNUTLS_LIB_CRYPTO_H */ diff --git a/lib/datum.c b/lib/datum.c index a374c905d4..23a1b338b3 100644 --- a/lib/datum.c +++ b/lib/datum.c @@ -31,7 +31,7 @@ #include "errors.h" /* On error, @dat is not changed. */ -int _gnutls_set_datum(gnutls_datum_t * dat, const void *data, size_t data_size) +int _gnutls_set_datum(gnutls_datum_t *dat, const void *data, size_t data_size) { if (data_size == 0 || data == NULL) { dat->data = NULL; @@ -54,8 +54,8 @@ int _gnutls_set_datum(gnutls_datum_t * dat, const void *data, size_t data_size) * The function always returns an allocated string in @dat on success. * On error, @dat is not changed. */ -int -_gnutls_set_strdatum(gnutls_datum_t * dat, const void *data, size_t data_size) +int _gnutls_set_strdatum(gnutls_datum_t *dat, const void *data, + size_t data_size) { if (data == NULL) return gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER); diff --git a/lib/datum.h b/lib/datum.h index 87fb91b5fe..1ae62e3d11 100644 --- a/lib/datum.h +++ b/lib/datum.h @@ -21,24 +21,24 @@ */ #ifndef GNUTLS_LIB_DATUM_H -# define GNUTLS_LIB_DATUM_H +#define GNUTLS_LIB_DATUM_H -# include "gnutls_int.h" +#include "gnutls_int.h" /* This will copy the provided data in @dat. If the provided data are * NULL or zero-size @dat will be NULL as well. */ -NODISCARD ATTRIBUTE_NONNULL((1)) -int _gnutls_set_datum(gnutls_datum_t * dat, const void *data, size_t data_size); +NODISCARD ATTRIBUTE_NONNULL((1)) int _gnutls_set_datum(gnutls_datum_t *dat, + const void *data, + size_t data_size); /* This will always return a non-NULL, and zero-terminated string in @dat. */ -NODISCARD ATTRIBUTE_NONNULL((1)) -int _gnutls_set_strdatum(gnutls_datum_t * dat, const void *data, - size_t data_size); +NODISCARD ATTRIBUTE_NONNULL((1)) int _gnutls_set_strdatum(gnutls_datum_t *dat, + const void *data, + size_t data_size); -inline static -void _gnutls_free_datum(gnutls_datum_t * dat) +inline static void _gnutls_free_datum(gnutls_datum_t *dat) { if (dat != NULL) { gnutls_free(dat->data); @@ -46,8 +46,8 @@ void _gnutls_free_datum(gnutls_datum_t * dat) } } -inline static ATTRIBUTE_NONNULL() -void _gnutls_free_temp_key_datum(gnutls_datum_t * dat) +inline static ATTRIBUTE_NONNULL() void _gnutls_free_temp_key_datum( + gnutls_datum_t *dat) { if (dat->data != NULL) { zeroize_temp_key(dat->data, dat->size); @@ -57,8 +57,8 @@ void _gnutls_free_temp_key_datum(gnutls_datum_t * dat) dat->size = 0; } -inline static ATTRIBUTE_NONNULL() -void _gnutls_free_key_datum(gnutls_datum_t * dat) +inline static ATTRIBUTE_NONNULL() void _gnutls_free_key_datum( + gnutls_datum_t *dat) { if (dat->data != NULL) { zeroize_key(dat->data, dat->size); @@ -68,4 +68,4 @@ void _gnutls_free_key_datum(gnutls_datum_t * dat) dat->size = 0; } -#endif /* GNUTLS_LIB_DATUM_H */ +#endif /* GNUTLS_LIB_DATUM_H */ diff --git a/lib/db.c b/lib/db.c index e2dcf9dfc4..abd2db2971 100644 --- a/lib/db.c +++ b/lib/db.c @@ -48,9 +48,8 @@ * The first argument to @retr_func will be null unless * gnutls_db_set_ptr() has been called. **/ -void -gnutls_db_set_retrieve_function(gnutls_session_t session, - gnutls_db_retr_func retr_func) +void gnutls_db_set_retrieve_function(gnutls_session_t session, + gnutls_db_retr_func retr_func) { session->internals.db_retrieve_func = retr_func; } @@ -66,9 +65,8 @@ gnutls_db_set_retrieve_function(gnutls_session_t session, * The first argument to @rem_func will be null unless * gnutls_db_set_ptr() has been called. **/ -void -gnutls_db_set_remove_function(gnutls_session_t session, - gnutls_db_remove_func rem_func) +void gnutls_db_set_remove_function(gnutls_session_t session, + gnutls_db_remove_func rem_func) { session->internals.db_remove_func = rem_func; } @@ -84,9 +82,8 @@ gnutls_db_set_remove_function(gnutls_session_t session, * The first argument to @store_func will be null unless * gnutls_db_set_ptr() has been called. **/ -void -gnutls_db_set_store_function(gnutls_session_t session, - gnutls_db_store_func store_func) +void gnutls_db_set_store_function(gnutls_session_t session, + gnutls_db_store_func store_func) { session->internals.db_store_func = store_func; } @@ -159,8 +156,8 @@ unsigned gnutls_db_get_default_cache_expiration(void) * * Deprecated: This function is deprecated. **/ -int -gnutls_db_check_entry(gnutls_session_t session, gnutls_datum_t session_entry) +int gnutls_db_check_entry(gnutls_session_t session, + gnutls_datum_t session_entry) { return 0; } @@ -174,7 +171,7 @@ gnutls_db_check_entry(gnutls_session_t session, gnutls_datum_t session_entry) * * Returns: The time this entry was created, or zero on error. **/ -time_t gnutls_db_check_entry_time(gnutls_datum_t * entry) +time_t gnutls_db_check_entry_time(gnutls_datum_t *entry) { uint32_t t; uint32_t magic; @@ -203,7 +200,7 @@ time_t gnutls_db_check_entry_time(gnutls_datum_t * entry) * * Since: 3.6.5 **/ -time_t gnutls_db_check_entry_expire_time(gnutls_datum_t * entry) +time_t gnutls_db_check_entry_expire_time(gnutls_datum_t *entry) { uint32_t t; uint32_t e; @@ -240,9 +237,8 @@ static int db_func_is_ok(gnutls_session_t session) /* Stores session data to the db backend. */ -static int -store_session(gnutls_session_t session, - gnutls_datum_t session_id, gnutls_datum_t session_data) +static int store_session(gnutls_session_t session, gnutls_datum_t session_id, + gnutls_datum_t session_data) { int ret = 0; @@ -299,19 +295,18 @@ int _gnutls_check_resumed_params(gnutls_session_t session) const version_entry_st *vers; /* check whether the session is expired */ - if (timestamp - + if (timestamp - session->internals.resumed_security_parameters.timestamp > + session->internals.expire_time || session->internals.resumed_security_parameters.timestamp > - session->internals.expire_time - || session->internals.resumed_security_parameters.timestamp > - timestamp) + timestamp) return gnutls_assert_val(GNUTLS_E_EXPIRED); /* check various parameters applicable to resumption in TLS1.2 or earlier */ vers = get_version(session); if (!vers || !vers->tls13_sem) { - if (session->internals. - resumed_security_parameters.ext_master_secret != + if (session->internals.resumed_security_parameters + .ext_master_secret != session->security_parameters.ext_master_secret) return gnutls_assert_val(GNUTLS_E_INVALID_SESSION); @@ -322,9 +317,8 @@ int _gnutls_check_resumed_params(gnutls_session_t session) return 0; } -int -_gnutls_server_restore_session(gnutls_session_t session, - uint8_t * session_id, int session_id_size) +int _gnutls_server_restore_session(gnutls_session_t session, + uint8_t *session_id, int session_id_size) { gnutls_datum_t data; gnutls_datum_t key; @@ -335,14 +329,15 @@ _gnutls_server_restore_session(gnutls_session_t session, return GNUTLS_E_INVALID_REQUEST; } - if (session->internals.premaster_set != 0) { /* hack for CISCO's DTLS-0.9 */ + if (session->internals.premaster_set != + 0) { /* hack for CISCO's DTLS-0.9 */ if (session_id_size == - session->internals.resumed_security_parameters. - session_id_size - && memcmp(session_id, - session->internals. - resumed_security_parameters.session_id, - session_id_size) == 0) + session->internals.resumed_security_parameters + .session_id_size && + memcmp(session_id, + session->internals.resumed_security_parameters + .session_id, + session_id_size) == 0) return 0; } @@ -354,8 +349,8 @@ _gnutls_server_restore_session(gnutls_session_t session, return GNUTLS_E_INVALID_SESSION; } - data = - session->internals.db_retrieve_func(session->internals.db_ptr, key); + data = session->internals.db_retrieve_func(session->internals.db_ptr, + key); if (data.data == NULL) { gnutls_assert(); @@ -400,12 +395,12 @@ void gnutls_db_remove_session(gnutls_session_t session) if (session->internals.db_remove_func == NULL) { gnutls_assert(); - return /* GNUTLS_E_DB_ERROR */ ; + return /* GNUTLS_E_DB_ERROR */; } if (session_id.data == NULL || session_id.size == 0) { gnutls_assert(); - return /* GNUTLS_E_INVALID_SESSION */ ; + return /* GNUTLS_E_INVALID_SESSION */; } /* if we can't read why bother writing? */ diff --git a/lib/db.h b/lib/db.h index b45ee912e2..7783e68165 100644 --- a/lib/db.h +++ b/lib/db.h @@ -21,14 +21,14 @@ */ #ifndef GNUTLS_LIB_DB_H -# define GNUTLS_LIB_DB_H +#define GNUTLS_LIB_DB_H int _gnutls_server_register_current_session(gnutls_session_t session); int _gnutls_server_restore_session(gnutls_session_t session, - uint8_t * session_id, int session_id_size); + uint8_t *session_id, int session_id_size); int _gnutls_check_resumed_params(gnutls_session_t session); -# define PACKED_SESSION_MAGIC ((0xfadebadd)+(_gnutls_global_version)) +#define PACKED_SESSION_MAGIC ((0xfadebadd) + (_gnutls_global_version)) -#endif /* GNUTLS_LIB_DB_H */ +#endif /* GNUTLS_LIB_DB_H */ diff --git a/lib/debug.c b/lib/debug.c index 532fa2a92d..cb1b0ca594 100644 --- a/lib/debug.c +++ b/lib/debug.c @@ -35,19 +35,19 @@ void _gnutls_dump_mpi(const char *prefix, bigint_t a) size_t n = sizeof buf; if (_gnutls_mpi_print(a, buf, &n)) - strcpy(buf, "[can't print value]"); /* Flawfinder: ignore */ + strcpy(buf, "[can't print value]"); /* Flawfinder: ignore */ _gnutls_debug_log("MPI: length: %d\n\t%s%s\n", (int)n, prefix, _gnutls_bin2hex(buf, n, buf_hex, sizeof(buf_hex), NULL)); } -void _gnutls_dump_vector(const char *prefix, const uint8_t * a, size_t a_size) +void _gnutls_dump_vector(const char *prefix, const uint8_t *a, size_t a_size) { char buf_hex[2 * a_size + 1]; - _gnutls_debug_log("Vector: length: %d\n\t%s%s\n", (int)a_size, - prefix, _gnutls_bin2hex(a, a_size, buf_hex, - sizeof(buf_hex), NULL)); + _gnutls_debug_log("Vector: length: %d\n\t%s%s\n", (int)a_size, prefix, + _gnutls_bin2hex(a, a_size, buf_hex, sizeof(buf_hex), + NULL)); } #endif @@ -78,8 +78,8 @@ const char *_gnutls_packet2str(content_type_t packet) * Returns: a string that contains the name of the specified handshake * message or %NULL. **/ -const char -*gnutls_handshake_description_get_name(gnutls_handshake_description_t type) +const char * +gnutls_handshake_description_get_name(gnutls_handshake_description_t type) { switch (type) { case GNUTLS_HANDSHAKE_END_OF_EARLY_DATA: diff --git a/lib/debug.h b/lib/debug.h index 6455a59fe8..baae999666 100644 --- a/lib/debug.h +++ b/lib/debug.h @@ -21,7 +21,7 @@ */ #ifndef GNUTLS_LIB_DEBUG_H -# define GNUTLS_LIB_DEBUG_H +#define GNUTLS_LIB_DEBUG_H const char *_gnutls_packet2str(content_type_t packet); inline static const char *_gnutls_handshake2str(unsigned x) @@ -34,6 +34,6 @@ inline static const char *_gnutls_handshake2str(unsigned x) } void _gnutls_dump_mpi(const char *prefix, bigint_t a); -void _gnutls_dump_vector(const char *prefix, const uint8_t * a, size_t a_size); +void _gnutls_dump_vector(const char *prefix, const uint8_t *a, size_t a_size); -#endif /* GNUTLS_LIB_DEBUG_H */ +#endif /* GNUTLS_LIB_DEBUG_H */ diff --git a/lib/dh-primes.c b/lib/dh-primes.c index c20b7df958..a007eea77f 100644 --- a/lib/dh-primes.c +++ b/lib/dh-primes.c @@ -28,82 +28,52 @@ static const unsigned char ffdhe_generator = 0x02; static const unsigned char ffdhe_params_2048[] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xAD, 0xF8, 0x54, 0x58, 0xA2, 0xBB, - 0x4A, 0x9A, 0xAF, 0xDC, 0x56, 0x20, 0x27, - 0x3D, 0x3C, 0xF1, 0xD8, 0xB9, 0xC5, 0x83, - 0xCE, 0x2D, 0x36, 0x95, 0xA9, 0xE1, 0x36, - 0x41, 0x14, 0x64, 0x33, 0xFB, 0xCC, 0x93, - 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9, 0x7D, - 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8, - 0xF6, 0x81, 0xB2, 0x02, 0xAE, 0xC4, 0x61, - 0x7A, 0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, - 0x65, 0x61, 0x24, 0x33, 0xF5, 0x1F, 0x5F, - 0x06, 0x6E, 0xD0, 0x85, 0x63, 0x65, 0x55, - 0x3D, 0xED, 0x1A, 0xF3, 0xB5, 0x57, 0x13, - 0x5E, 0x7F, 0x57, 0xC9, 0x35, 0x98, 0x4F, - 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77, 0xE2, - 0xA6, 0x89, 0xDA, 0xF3, 0xEF, 0xE8, 0x72, - 0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, - 0x35, 0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, - 0x79, 0x7A, 0xBC, 0x0A, 0xB1, 0x82, 0xB3, - 0x24, 0xFB, 0x61, 0xD1, 0x08, 0xA9, 0x4B, - 0xB2, 0xC8, 0xE3, 0xFB, 0xB9, 0x6A, 0xDA, - 0xB7, 0x60, 0xD7, 0xF4, 0x68, 0x1D, 0x4F, - 0x42, 0xA3, 0xDE, 0x39, 0x4D, 0xF4, 0xAE, - 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19, - 0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, - 0x70, 0x9E, 0x02, 0xFC, 0xE1, 0xCD, 0xF7, - 0xE2, 0xEC, 0xC0, 0x34, 0x04, 0xCD, 0x28, - 0x34, 0x2F, 0x61, 0x91, 0x72, 0xFE, 0x9C, - 0xE9, 0x85, 0x83, 0xFF, 0x8E, 0x4F, 0x12, - 0x32, 0xEE, 0xF2, 0x81, 0x83, 0xC3, 0xFE, - 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73, 0x3B, - 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05, - 0xC5, 0x8E, 0xF1, 0x83, 0x7D, 0x16, 0x83, - 0xB2, 0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, - 0xEF, 0xFA, 0x88, 0x6B, 0x42, 0x38, 0x61, - 0x28, 0x5C, 0x97, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xF8, 0x54, 0x58, + 0xA2, 0xBB, 0x4A, 0x9A, 0xAF, 0xDC, 0x56, 0x20, 0x27, 0x3D, 0x3C, 0xF1, + 0xD8, 0xB9, 0xC5, 0x83, 0xCE, 0x2D, 0x36, 0x95, 0xA9, 0xE1, 0x36, 0x41, + 0x14, 0x64, 0x33, 0xFB, 0xCC, 0x93, 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9, + 0x7D, 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8, 0xF6, 0x81, 0xB2, 0x02, + 0xAE, 0xC4, 0x61, 0x7A, 0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, 0x65, 0x61, + 0x24, 0x33, 0xF5, 0x1F, 0x5F, 0x06, 0x6E, 0xD0, 0x85, 0x63, 0x65, 0x55, + 0x3D, 0xED, 0x1A, 0xF3, 0xB5, 0x57, 0x13, 0x5E, 0x7F, 0x57, 0xC9, 0x35, + 0x98, 0x4F, 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77, 0xE2, 0xA6, 0x89, 0xDA, + 0xF3, 0xEF, 0xE8, 0x72, 0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, 0x35, + 0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, 0x79, 0x7A, 0xBC, 0x0A, 0xB1, 0x82, + 0xB3, 0x24, 0xFB, 0x61, 0xD1, 0x08, 0xA9, 0x4B, 0xB2, 0xC8, 0xE3, 0xFB, + 0xB9, 0x6A, 0xDA, 0xB7, 0x60, 0xD7, 0xF4, 0x68, 0x1D, 0x4F, 0x42, 0xA3, + 0xDE, 0x39, 0x4D, 0xF4, 0xAE, 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19, + 0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, 0x70, 0x9E, 0x02, 0xFC, 0xE1, + 0xCD, 0xF7, 0xE2, 0xEC, 0xC0, 0x34, 0x04, 0xCD, 0x28, 0x34, 0x2F, 0x61, + 0x91, 0x72, 0xFE, 0x9C, 0xE9, 0x85, 0x83, 0xFF, 0x8E, 0x4F, 0x12, 0x32, + 0xEE, 0xF2, 0x81, 0x83, 0xC3, 0xFE, 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73, + 0x3B, 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05, 0xC5, 0x8E, 0xF1, 0x83, + 0x7D, 0x16, 0x83, 0xB2, 0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, 0xEF, 0xFA, + 0x88, 0x6B, 0x42, 0x38, 0x61, 0x28, 0x5C, 0x97, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; static const unsigned char ffdhe_q_2048[] = { - 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xD6, 0xFC, 0x2A, 0x2C, 0x51, 0x5D, - 0xA5, 0x4D, 0x57, 0xEE, 0x2B, 0x10, 0x13, - 0x9E, 0x9E, 0x78, 0xEC, 0x5C, 0xE2, 0xC1, - 0xE7, 0x16, 0x9B, 0x4A, 0xD4, 0xF0, 0x9B, - 0x20, 0x8A, 0x32, 0x19, 0xFD, 0xE6, 0x49, - 0xCE, 0xE7, 0x12, 0x4D, 0x9F, 0x7C, 0xBE, - 0x97, 0xF1, 0xB1, 0xB1, 0x86, 0x3A, 0xEC, - 0x7B, 0x40, 0xD9, 0x01, 0x57, 0x62, 0x30, - 0xBD, 0x69, 0xEF, 0x8F, 0x6A, 0xEA, 0xFE, - 0xB2, 0xB0, 0x92, 0x19, 0xFA, 0x8F, 0xAF, - 0x83, 0x37, 0x68, 0x42, 0xB1, 0xB2, 0xAA, - 0x9E, 0xF6, 0x8D, 0x79, 0xDA, 0xAB, 0x89, - 0xAF, 0x3F, 0xAB, 0xE4, 0x9A, 0xCC, 0x27, - 0x86, 0x38, 0x70, 0x73, 0x45, 0xBB, 0xF1, - 0x53, 0x44, 0xED, 0x79, 0xF7, 0xF4, 0x39, - 0x0E, 0xF8, 0xAC, 0x50, 0x9B, 0x56, 0xF3, - 0x9A, 0x98, 0x56, 0x65, 0x27, 0xA4, 0x1D, - 0x3C, 0xBD, 0x5E, 0x05, 0x58, 0xC1, 0x59, - 0x92, 0x7D, 0xB0, 0xE8, 0x84, 0x54, 0xA5, - 0xD9, 0x64, 0x71, 0xFD, 0xDC, 0xB5, 0x6D, - 0x5B, 0xB0, 0x6B, 0xFA, 0x34, 0x0E, 0xA7, - 0xA1, 0x51, 0xEF, 0x1C, 0xA6, 0xFA, 0x57, - 0x2B, 0x76, 0xF3, 0xB1, 0xB9, 0x5D, 0x8C, - 0x85, 0x83, 0xD3, 0xE4, 0x77, 0x05, 0x36, - 0xB8, 0x4F, 0x01, 0x7E, 0x70, 0xE6, 0xFB, - 0xF1, 0x76, 0x60, 0x1A, 0x02, 0x66, 0x94, - 0x1A, 0x17, 0xB0, 0xC8, 0xB9, 0x7F, 0x4E, - 0x74, 0xC2, 0xC1, 0xFF, 0xC7, 0x27, 0x89, - 0x19, 0x77, 0x79, 0x40, 0xC1, 0xE1, 0xFF, - 0x1D, 0x8D, 0xA6, 0x37, 0xD6, 0xB9, 0x9D, - 0xDA, 0xFE, 0x5E, 0x17, 0x61, 0x10, 0x02, - 0xE2, 0xC7, 0x78, 0xC1, 0xBE, 0x8B, 0x41, - 0xD9, 0x63, 0x79, 0xA5, 0x13, 0x60, 0xD9, - 0x77, 0xFD, 0x44, 0x35, 0xA1, 0x1C, 0x30, - 0x94, 0x2E, 0x4B, 0xFF, 0xFF, 0xFF, 0xFF, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0xFC, 0x2A, 0x2C, + 0x51, 0x5D, 0xA5, 0x4D, 0x57, 0xEE, 0x2B, 0x10, 0x13, 0x9E, 0x9E, 0x78, + 0xEC, 0x5C, 0xE2, 0xC1, 0xE7, 0x16, 0x9B, 0x4A, 0xD4, 0xF0, 0x9B, 0x20, + 0x8A, 0x32, 0x19, 0xFD, 0xE6, 0x49, 0xCE, 0xE7, 0x12, 0x4D, 0x9F, 0x7C, + 0xBE, 0x97, 0xF1, 0xB1, 0xB1, 0x86, 0x3A, 0xEC, 0x7B, 0x40, 0xD9, 0x01, + 0x57, 0x62, 0x30, 0xBD, 0x69, 0xEF, 0x8F, 0x6A, 0xEA, 0xFE, 0xB2, 0xB0, + 0x92, 0x19, 0xFA, 0x8F, 0xAF, 0x83, 0x37, 0x68, 0x42, 0xB1, 0xB2, 0xAA, + 0x9E, 0xF6, 0x8D, 0x79, 0xDA, 0xAB, 0x89, 0xAF, 0x3F, 0xAB, 0xE4, 0x9A, + 0xCC, 0x27, 0x86, 0x38, 0x70, 0x73, 0x45, 0xBB, 0xF1, 0x53, 0x44, 0xED, + 0x79, 0xF7, 0xF4, 0x39, 0x0E, 0xF8, 0xAC, 0x50, 0x9B, 0x56, 0xF3, 0x9A, + 0x98, 0x56, 0x65, 0x27, 0xA4, 0x1D, 0x3C, 0xBD, 0x5E, 0x05, 0x58, 0xC1, + 0x59, 0x92, 0x7D, 0xB0, 0xE8, 0x84, 0x54, 0xA5, 0xD9, 0x64, 0x71, 0xFD, + 0xDC, 0xB5, 0x6D, 0x5B, 0xB0, 0x6B, 0xFA, 0x34, 0x0E, 0xA7, 0xA1, 0x51, + 0xEF, 0x1C, 0xA6, 0xFA, 0x57, 0x2B, 0x76, 0xF3, 0xB1, 0xB9, 0x5D, 0x8C, + 0x85, 0x83, 0xD3, 0xE4, 0x77, 0x05, 0x36, 0xB8, 0x4F, 0x01, 0x7E, 0x70, + 0xE6, 0xFB, 0xF1, 0x76, 0x60, 0x1A, 0x02, 0x66, 0x94, 0x1A, 0x17, 0xB0, + 0xC8, 0xB9, 0x7F, 0x4E, 0x74, 0xC2, 0xC1, 0xFF, 0xC7, 0x27, 0x89, 0x19, + 0x77, 0x79, 0x40, 0xC1, 0xE1, 0xFF, 0x1D, 0x8D, 0xA6, 0x37, 0xD6, 0xB9, + 0x9D, 0xDA, 0xFE, 0x5E, 0x17, 0x61, 0x10, 0x02, 0xE2, 0xC7, 0x78, 0xC1, + 0xBE, 0x8B, 0x41, 0xD9, 0x63, 0x79, 0xA5, 0x13, 0x60, 0xD9, 0x77, 0xFD, + 0x44, 0x35, 0xA1, 0x1C, 0x30, 0x94, 0x2E, 0x4B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; @@ -111,9 +81,8 @@ const gnutls_datum_t gnutls_ffdhe_2048_group_prime = { (void *)ffdhe_params_2048, sizeof(ffdhe_params_2048) }; -const gnutls_datum_t gnutls_ffdhe_2048_group_q = { - (void *)ffdhe_q_2048, sizeof(ffdhe_q_2048) -}; +const gnutls_datum_t gnutls_ffdhe_2048_group_q = { (void *)ffdhe_q_2048, + sizeof(ffdhe_q_2048) }; const gnutls_datum_t gnutls_ffdhe_2048_group_generator = { (void *)&ffdhe_generator, sizeof(ffdhe_generator) @@ -122,128 +91,81 @@ const gnutls_datum_t gnutls_ffdhe_2048_group_generator = { const unsigned int gnutls_ffdhe_2048_key_bits = 256; static const unsigned char ffdhe_params_3072[] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xAD, 0xF8, 0x54, 0x58, 0xA2, 0xBB, - 0x4A, 0x9A, 0xAF, 0xDC, 0x56, 0x20, 0x27, - 0x3D, 0x3C, 0xF1, 0xD8, 0xB9, 0xC5, 0x83, - 0xCE, 0x2D, 0x36, 0x95, 0xA9, 0xE1, 0x36, - 0x41, 0x14, 0x64, 0x33, 0xFB, 0xCC, 0x93, - 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9, 0x7D, - 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8, - 0xF6, 0x81, 0xB2, 0x02, 0xAE, 0xC4, 0x61, - 0x7A, 0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, - 0x65, 0x61, 0x24, 0x33, 0xF5, 0x1F, 0x5F, - 0x06, 0x6E, 0xD0, 0x85, 0x63, 0x65, 0x55, - 0x3D, 0xED, 0x1A, 0xF3, 0xB5, 0x57, 0x13, - 0x5E, 0x7F, 0x57, 0xC9, 0x35, 0x98, 0x4F, - 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77, 0xE2, - 0xA6, 0x89, 0xDA, 0xF3, 0xEF, 0xE8, 0x72, - 0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, - 0x35, 0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, - 0x79, 0x7A, 0xBC, 0x0A, 0xB1, 0x82, 0xB3, - 0x24, 0xFB, 0x61, 0xD1, 0x08, 0xA9, 0x4B, - 0xB2, 0xC8, 0xE3, 0xFB, 0xB9, 0x6A, 0xDA, - 0xB7, 0x60, 0xD7, 0xF4, 0x68, 0x1D, 0x4F, - 0x42, 0xA3, 0xDE, 0x39, 0x4D, 0xF4, 0xAE, - 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19, - 0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, - 0x70, 0x9E, 0x02, 0xFC, 0xE1, 0xCD, 0xF7, - 0xE2, 0xEC, 0xC0, 0x34, 0x04, 0xCD, 0x28, - 0x34, 0x2F, 0x61, 0x91, 0x72, 0xFE, 0x9C, - 0xE9, 0x85, 0x83, 0xFF, 0x8E, 0x4F, 0x12, - 0x32, 0xEE, 0xF2, 0x81, 0x83, 0xC3, 0xFE, - 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73, 0x3B, - 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05, - 0xC5, 0x8E, 0xF1, 0x83, 0x7D, 0x16, 0x83, - 0xB2, 0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, - 0xEF, 0xFA, 0x88, 0x6B, 0x42, 0x38, 0x61, - 0x1F, 0xCF, 0xDC, 0xDE, 0x35, 0x5B, 0x3B, - 0x65, 0x19, 0x03, 0x5B, 0xBC, 0x34, 0xF4, - 0xDE, 0xF9, 0x9C, 0x02, 0x38, 0x61, 0xB4, - 0x6F, 0xC9, 0xD6, 0xE6, 0xC9, 0x07, 0x7A, - 0xD9, 0x1D, 0x26, 0x91, 0xF7, 0xF7, 0xEE, - 0x59, 0x8C, 0xB0, 0xFA, 0xC1, 0x86, 0xD9, - 0x1C, 0xAE, 0xFE, 0x13, 0x09, 0x85, 0x13, - 0x92, 0x70, 0xB4, 0x13, 0x0C, 0x93, 0xBC, - 0x43, 0x79, 0x44, 0xF4, 0xFD, 0x44, 0x52, - 0xE2, 0xD7, 0x4D, 0xD3, 0x64, 0xF2, 0xE2, - 0x1E, 0x71, 0xF5, 0x4B, 0xFF, 0x5C, 0xAE, - 0x82, 0xAB, 0x9C, 0x9D, 0xF6, 0x9E, 0xE8, - 0x6D, 0x2B, 0xC5, 0x22, 0x36, 0x3A, 0x0D, - 0xAB, 0xC5, 0x21, 0x97, 0x9B, 0x0D, 0xEA, - 0xDA, 0x1D, 0xBF, 0x9A, 0x42, 0xD5, 0xC4, - 0x48, 0x4E, 0x0A, 0xBC, 0xD0, 0x6B, 0xFA, - 0x53, 0xDD, 0xEF, 0x3C, 0x1B, 0x20, 0xEE, - 0x3F, 0xD5, 0x9D, 0x7C, 0x25, 0xE4, 0x1D, - 0x2B, 0x66, 0xC6, 0x2E, 0x37, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xF8, 0x54, 0x58, + 0xA2, 0xBB, 0x4A, 0x9A, 0xAF, 0xDC, 0x56, 0x20, 0x27, 0x3D, 0x3C, 0xF1, + 0xD8, 0xB9, 0xC5, 0x83, 0xCE, 0x2D, 0x36, 0x95, 0xA9, 0xE1, 0x36, 0x41, + 0x14, 0x64, 0x33, 0xFB, 0xCC, 0x93, 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9, + 0x7D, 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8, 0xF6, 0x81, 0xB2, 0x02, + 0xAE, 0xC4, 0x61, 0x7A, 0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, 0x65, 0x61, + 0x24, 0x33, 0xF5, 0x1F, 0x5F, 0x06, 0x6E, 0xD0, 0x85, 0x63, 0x65, 0x55, + 0x3D, 0xED, 0x1A, 0xF3, 0xB5, 0x57, 0x13, 0x5E, 0x7F, 0x57, 0xC9, 0x35, + 0x98, 0x4F, 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77, 0xE2, 0xA6, 0x89, 0xDA, + 0xF3, 0xEF, 0xE8, 0x72, 0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, 0x35, + 0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, 0x79, 0x7A, 0xBC, 0x0A, 0xB1, 0x82, + 0xB3, 0x24, 0xFB, 0x61, 0xD1, 0x08, 0xA9, 0x4B, 0xB2, 0xC8, 0xE3, 0xFB, + 0xB9, 0x6A, 0xDA, 0xB7, 0x60, 0xD7, 0xF4, 0x68, 0x1D, 0x4F, 0x42, 0xA3, + 0xDE, 0x39, 0x4D, 0xF4, 0xAE, 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19, + 0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, 0x70, 0x9E, 0x02, 0xFC, 0xE1, + 0xCD, 0xF7, 0xE2, 0xEC, 0xC0, 0x34, 0x04, 0xCD, 0x28, 0x34, 0x2F, 0x61, + 0x91, 0x72, 0xFE, 0x9C, 0xE9, 0x85, 0x83, 0xFF, 0x8E, 0x4F, 0x12, 0x32, + 0xEE, 0xF2, 0x81, 0x83, 0xC3, 0xFE, 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73, + 0x3B, 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05, 0xC5, 0x8E, 0xF1, 0x83, + 0x7D, 0x16, 0x83, 0xB2, 0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, 0xEF, 0xFA, + 0x88, 0x6B, 0x42, 0x38, 0x61, 0x1F, 0xCF, 0xDC, 0xDE, 0x35, 0x5B, 0x3B, + 0x65, 0x19, 0x03, 0x5B, 0xBC, 0x34, 0xF4, 0xDE, 0xF9, 0x9C, 0x02, 0x38, + 0x61, 0xB4, 0x6F, 0xC9, 0xD6, 0xE6, 0xC9, 0x07, 0x7A, 0xD9, 0x1D, 0x26, + 0x91, 0xF7, 0xF7, 0xEE, 0x59, 0x8C, 0xB0, 0xFA, 0xC1, 0x86, 0xD9, 0x1C, + 0xAE, 0xFE, 0x13, 0x09, 0x85, 0x13, 0x92, 0x70, 0xB4, 0x13, 0x0C, 0x93, + 0xBC, 0x43, 0x79, 0x44, 0xF4, 0xFD, 0x44, 0x52, 0xE2, 0xD7, 0x4D, 0xD3, + 0x64, 0xF2, 0xE2, 0x1E, 0x71, 0xF5, 0x4B, 0xFF, 0x5C, 0xAE, 0x82, 0xAB, + 0x9C, 0x9D, 0xF6, 0x9E, 0xE8, 0x6D, 0x2B, 0xC5, 0x22, 0x36, 0x3A, 0x0D, + 0xAB, 0xC5, 0x21, 0x97, 0x9B, 0x0D, 0xEA, 0xDA, 0x1D, 0xBF, 0x9A, 0x42, + 0xD5, 0xC4, 0x48, 0x4E, 0x0A, 0xBC, 0xD0, 0x6B, 0xFA, 0x53, 0xDD, 0xEF, + 0x3C, 0x1B, 0x20, 0xEE, 0x3F, 0xD5, 0x9D, 0x7C, 0x25, 0xE4, 0x1D, 0x2B, + 0x66, 0xC6, 0x2E, 0x37, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; static const unsigned char ffdhe_q_3072[] = { - 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xD6, 0xFC, 0x2A, 0x2C, 0x51, 0x5D, - 0xA5, 0x4D, 0x57, 0xEE, 0x2B, 0x10, 0x13, - 0x9E, 0x9E, 0x78, 0xEC, 0x5C, 0xE2, 0xC1, - 0xE7, 0x16, 0x9B, 0x4A, 0xD4, 0xF0, 0x9B, - 0x20, 0x8A, 0x32, 0x19, 0xFD, 0xE6, 0x49, - 0xCE, 0xE7, 0x12, 0x4D, 0x9F, 0x7C, 0xBE, - 0x97, 0xF1, 0xB1, 0xB1, 0x86, 0x3A, 0xEC, - 0x7B, 0x40, 0xD9, 0x01, 0x57, 0x62, 0x30, - 0xBD, 0x69, 0xEF, 0x8F, 0x6A, 0xEA, 0xFE, - 0xB2, 0xB0, 0x92, 0x19, 0xFA, 0x8F, 0xAF, - 0x83, 0x37, 0x68, 0x42, 0xB1, 0xB2, 0xAA, - 0x9E, 0xF6, 0x8D, 0x79, 0xDA, 0xAB, 0x89, - 0xAF, 0x3F, 0xAB, 0xE4, 0x9A, 0xCC, 0x27, - 0x86, 0x38, 0x70, 0x73, 0x45, 0xBB, 0xF1, - 0x53, 0x44, 0xED, 0x79, 0xF7, 0xF4, 0x39, - 0x0E, 0xF8, 0xAC, 0x50, 0x9B, 0x56, 0xF3, - 0x9A, 0x98, 0x56, 0x65, 0x27, 0xA4, 0x1D, - 0x3C, 0xBD, 0x5E, 0x05, 0x58, 0xC1, 0x59, - 0x92, 0x7D, 0xB0, 0xE8, 0x84, 0x54, 0xA5, - 0xD9, 0x64, 0x71, 0xFD, 0xDC, 0xB5, 0x6D, - 0x5B, 0xB0, 0x6B, 0xFA, 0x34, 0x0E, 0xA7, - 0xA1, 0x51, 0xEF, 0x1C, 0xA6, 0xFA, 0x57, - 0x2B, 0x76, 0xF3, 0xB1, 0xB9, 0x5D, 0x8C, - 0x85, 0x83, 0xD3, 0xE4, 0x77, 0x05, 0x36, - 0xB8, 0x4F, 0x01, 0x7E, 0x70, 0xE6, 0xFB, - 0xF1, 0x76, 0x60, 0x1A, 0x02, 0x66, 0x94, - 0x1A, 0x17, 0xB0, 0xC8, 0xB9, 0x7F, 0x4E, - 0x74, 0xC2, 0xC1, 0xFF, 0xC7, 0x27, 0x89, - 0x19, 0x77, 0x79, 0x40, 0xC1, 0xE1, 0xFF, - 0x1D, 0x8D, 0xA6, 0x37, 0xD6, 0xB9, 0x9D, - 0xDA, 0xFE, 0x5E, 0x17, 0x61, 0x10, 0x02, - 0xE2, 0xC7, 0x78, 0xC1, 0xBE, 0x8B, 0x41, - 0xD9, 0x63, 0x79, 0xA5, 0x13, 0x60, 0xD9, - 0x77, 0xFD, 0x44, 0x35, 0xA1, 0x1C, 0x30, - 0x8F, 0xE7, 0xEE, 0x6F, 0x1A, 0xAD, 0x9D, - 0xB2, 0x8C, 0x81, 0xAD, 0xDE, 0x1A, 0x7A, - 0x6F, 0x7C, 0xCE, 0x01, 0x1C, 0x30, 0xDA, - 0x37, 0xE4, 0xEB, 0x73, 0x64, 0x83, 0xBD, - 0x6C, 0x8E, 0x93, 0x48, 0xFB, 0xFB, 0xF7, - 0x2C, 0xC6, 0x58, 0x7D, 0x60, 0xC3, 0x6C, - 0x8E, 0x57, 0x7F, 0x09, 0x84, 0xC2, 0x89, - 0xC9, 0x38, 0x5A, 0x09, 0x86, 0x49, 0xDE, - 0x21, 0xBC, 0xA2, 0x7A, 0x7E, 0xA2, 0x29, - 0x71, 0x6B, 0xA6, 0xE9, 0xB2, 0x79, 0x71, - 0x0F, 0x38, 0xFA, 0xA5, 0xFF, 0xAE, 0x57, - 0x41, 0x55, 0xCE, 0x4E, 0xFB, 0x4F, 0x74, - 0x36, 0x95, 0xE2, 0x91, 0x1B, 0x1D, 0x06, - 0xD5, 0xE2, 0x90, 0xCB, 0xCD, 0x86, 0xF5, - 0x6D, 0x0E, 0xDF, 0xCD, 0x21, 0x6A, 0xE2, - 0x24, 0x27, 0x05, 0x5E, 0x68, 0x35, 0xFD, - 0x29, 0xEE, 0xF7, 0x9E, 0x0D, 0x90, 0x77, - 0x1F, 0xEA, 0xCE, 0xBE, 0x12, 0xF2, 0x0E, - 0x95, 0xB3, 0x63, 0x17, 0x1B, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0xFC, 0x2A, 0x2C, + 0x51, 0x5D, 0xA5, 0x4D, 0x57, 0xEE, 0x2B, 0x10, 0x13, 0x9E, 0x9E, 0x78, + 0xEC, 0x5C, 0xE2, 0xC1, 0xE7, 0x16, 0x9B, 0x4A, 0xD4, 0xF0, 0x9B, 0x20, + 0x8A, 0x32, 0x19, 0xFD, 0xE6, 0x49, 0xCE, 0xE7, 0x12, 0x4D, 0x9F, 0x7C, + 0xBE, 0x97, 0xF1, 0xB1, 0xB1, 0x86, 0x3A, 0xEC, 0x7B, 0x40, 0xD9, 0x01, + 0x57, 0x62, 0x30, 0xBD, 0x69, 0xEF, 0x8F, 0x6A, 0xEA, 0xFE, 0xB2, 0xB0, + 0x92, 0x19, 0xFA, 0x8F, 0xAF, 0x83, 0x37, 0x68, 0x42, 0xB1, 0xB2, 0xAA, + 0x9E, 0xF6, 0x8D, 0x79, 0xDA, 0xAB, 0x89, 0xAF, 0x3F, 0xAB, 0xE4, 0x9A, + 0xCC, 0x27, 0x86, 0x38, 0x70, 0x73, 0x45, 0xBB, 0xF1, 0x53, 0x44, 0xED, + 0x79, 0xF7, 0xF4, 0x39, 0x0E, 0xF8, 0xAC, 0x50, 0x9B, 0x56, 0xF3, 0x9A, + 0x98, 0x56, 0x65, 0x27, 0xA4, 0x1D, 0x3C, 0xBD, 0x5E, 0x05, 0x58, 0xC1, + 0x59, 0x92, 0x7D, 0xB0, 0xE8, 0x84, 0x54, 0xA5, 0xD9, 0x64, 0x71, 0xFD, + 0xDC, 0xB5, 0x6D, 0x5B, 0xB0, 0x6B, 0xFA, 0x34, 0x0E, 0xA7, 0xA1, 0x51, + 0xEF, 0x1C, 0xA6, 0xFA, 0x57, 0x2B, 0x76, 0xF3, 0xB1, 0xB9, 0x5D, 0x8C, + 0x85, 0x83, 0xD3, 0xE4, 0x77, 0x05, 0x36, 0xB8, 0x4F, 0x01, 0x7E, 0x70, + 0xE6, 0xFB, 0xF1, 0x76, 0x60, 0x1A, 0x02, 0x66, 0x94, 0x1A, 0x17, 0xB0, + 0xC8, 0xB9, 0x7F, 0x4E, 0x74, 0xC2, 0xC1, 0xFF, 0xC7, 0x27, 0x89, 0x19, + 0x77, 0x79, 0x40, 0xC1, 0xE1, 0xFF, 0x1D, 0x8D, 0xA6, 0x37, 0xD6, 0xB9, + 0x9D, 0xDA, 0xFE, 0x5E, 0x17, 0x61, 0x10, 0x02, 0xE2, 0xC7, 0x78, 0xC1, + 0xBE, 0x8B, 0x41, 0xD9, 0x63, 0x79, 0xA5, 0x13, 0x60, 0xD9, 0x77, 0xFD, + 0x44, 0x35, 0xA1, 0x1C, 0x30, 0x8F, 0xE7, 0xEE, 0x6F, 0x1A, 0xAD, 0x9D, + 0xB2, 0x8C, 0x81, 0xAD, 0xDE, 0x1A, 0x7A, 0x6F, 0x7C, 0xCE, 0x01, 0x1C, + 0x30, 0xDA, 0x37, 0xE4, 0xEB, 0x73, 0x64, 0x83, 0xBD, 0x6C, 0x8E, 0x93, + 0x48, 0xFB, 0xFB, 0xF7, 0x2C, 0xC6, 0x58, 0x7D, 0x60, 0xC3, 0x6C, 0x8E, + 0x57, 0x7F, 0x09, 0x84, 0xC2, 0x89, 0xC9, 0x38, 0x5A, 0x09, 0x86, 0x49, + 0xDE, 0x21, 0xBC, 0xA2, 0x7A, 0x7E, 0xA2, 0x29, 0x71, 0x6B, 0xA6, 0xE9, + 0xB2, 0x79, 0x71, 0x0F, 0x38, 0xFA, 0xA5, 0xFF, 0xAE, 0x57, 0x41, 0x55, + 0xCE, 0x4E, 0xFB, 0x4F, 0x74, 0x36, 0x95, 0xE2, 0x91, 0x1B, 0x1D, 0x06, + 0xD5, 0xE2, 0x90, 0xCB, 0xCD, 0x86, 0xF5, 0x6D, 0x0E, 0xDF, 0xCD, 0x21, + 0x6A, 0xE2, 0x24, 0x27, 0x05, 0x5E, 0x68, 0x35, 0xFD, 0x29, 0xEE, 0xF7, + 0x9E, 0x0D, 0x90, 0x77, 0x1F, 0xEA, 0xCE, 0xBE, 0x12, 0xF2, 0x0E, 0x95, + 0xB3, 0x63, 0x17, 0x1B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; const gnutls_datum_t gnutls_ffdhe_3072_group_prime = { (void *)ffdhe_params_3072, sizeof(ffdhe_params_3072) }; -const gnutls_datum_t gnutls_ffdhe_3072_group_q = { - (void *)ffdhe_q_3072, sizeof(ffdhe_q_3072) -}; +const gnutls_datum_t gnutls_ffdhe_3072_group_q = { (void *)ffdhe_q_3072, + sizeof(ffdhe_q_3072) }; const gnutls_datum_t gnutls_ffdhe_3072_group_generator = { (void *)&ffdhe_generator, sizeof(ffdhe_generator) @@ -252,166 +174,103 @@ const gnutls_datum_t gnutls_ffdhe_3072_group_generator = { const unsigned int gnutls_ffdhe_3072_key_bits = 276; static const unsigned char ffdhe_params_4096[] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xAD, 0xF8, 0x54, 0x58, 0xA2, 0xBB, - 0x4A, 0x9A, 0xAF, 0xDC, 0x56, 0x20, 0x27, - 0x3D, 0x3C, 0xF1, 0xD8, 0xB9, 0xC5, 0x83, - 0xCE, 0x2D, 0x36, 0x95, 0xA9, 0xE1, 0x36, - 0x41, 0x14, 0x64, 0x33, 0xFB, 0xCC, 0x93, - 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9, 0x7D, - 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8, - 0xF6, 0x81, 0xB2, 0x02, 0xAE, 0xC4, 0x61, - 0x7A, 0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, - 0x65, 0x61, 0x24, 0x33, 0xF5, 0x1F, 0x5F, - 0x06, 0x6E, 0xD0, 0x85, 0x63, 0x65, 0x55, - 0x3D, 0xED, 0x1A, 0xF3, 0xB5, 0x57, 0x13, - 0x5E, 0x7F, 0x57, 0xC9, 0x35, 0x98, 0x4F, - 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77, 0xE2, - 0xA6, 0x89, 0xDA, 0xF3, 0xEF, 0xE8, 0x72, - 0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, - 0x35, 0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, - 0x79, 0x7A, 0xBC, 0x0A, 0xB1, 0x82, 0xB3, - 0x24, 0xFB, 0x61, 0xD1, 0x08, 0xA9, 0x4B, - 0xB2, 0xC8, 0xE3, 0xFB, 0xB9, 0x6A, 0xDA, - 0xB7, 0x60, 0xD7, 0xF4, 0x68, 0x1D, 0x4F, - 0x42, 0xA3, 0xDE, 0x39, 0x4D, 0xF4, 0xAE, - 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19, - 0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, - 0x70, 0x9E, 0x02, 0xFC, 0xE1, 0xCD, 0xF7, - 0xE2, 0xEC, 0xC0, 0x34, 0x04, 0xCD, 0x28, - 0x34, 0x2F, 0x61, 0x91, 0x72, 0xFE, 0x9C, - 0xE9, 0x85, 0x83, 0xFF, 0x8E, 0x4F, 0x12, - 0x32, 0xEE, 0xF2, 0x81, 0x83, 0xC3, 0xFE, - 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73, 0x3B, - 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05, - 0xC5, 0x8E, 0xF1, 0x83, 0x7D, 0x16, 0x83, - 0xB2, 0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, - 0xEF, 0xFA, 0x88, 0x6B, 0x42, 0x38, 0x61, - 0x1F, 0xCF, 0xDC, 0xDE, 0x35, 0x5B, 0x3B, - 0x65, 0x19, 0x03, 0x5B, 0xBC, 0x34, 0xF4, - 0xDE, 0xF9, 0x9C, 0x02, 0x38, 0x61, 0xB4, - 0x6F, 0xC9, 0xD6, 0xE6, 0xC9, 0x07, 0x7A, - 0xD9, 0x1D, 0x26, 0x91, 0xF7, 0xF7, 0xEE, - 0x59, 0x8C, 0xB0, 0xFA, 0xC1, 0x86, 0xD9, - 0x1C, 0xAE, 0xFE, 0x13, 0x09, 0x85, 0x13, - 0x92, 0x70, 0xB4, 0x13, 0x0C, 0x93, 0xBC, - 0x43, 0x79, 0x44, 0xF4, 0xFD, 0x44, 0x52, - 0xE2, 0xD7, 0x4D, 0xD3, 0x64, 0xF2, 0xE2, - 0x1E, 0x71, 0xF5, 0x4B, 0xFF, 0x5C, 0xAE, - 0x82, 0xAB, 0x9C, 0x9D, 0xF6, 0x9E, 0xE8, - 0x6D, 0x2B, 0xC5, 0x22, 0x36, 0x3A, 0x0D, - 0xAB, 0xC5, 0x21, 0x97, 0x9B, 0x0D, 0xEA, - 0xDA, 0x1D, 0xBF, 0x9A, 0x42, 0xD5, 0xC4, - 0x48, 0x4E, 0x0A, 0xBC, 0xD0, 0x6B, 0xFA, - 0x53, 0xDD, 0xEF, 0x3C, 0x1B, 0x20, 0xEE, - 0x3F, 0xD5, 0x9D, 0x7C, 0x25, 0xE4, 0x1D, - 0x2B, 0x66, 0x9E, 0x1E, 0xF1, 0x6E, 0x6F, - 0x52, 0xC3, 0x16, 0x4D, 0xF4, 0xFB, 0x79, - 0x30, 0xE9, 0xE4, 0xE5, 0x88, 0x57, 0xB6, - 0xAC, 0x7D, 0x5F, 0x42, 0xD6, 0x9F, 0x6D, - 0x18, 0x77, 0x63, 0xCF, 0x1D, 0x55, 0x03, - 0x40, 0x04, 0x87, 0xF5, 0x5B, 0xA5, 0x7E, - 0x31, 0xCC, 0x7A, 0x71, 0x35, 0xC8, 0x86, - 0xEF, 0xB4, 0x31, 0x8A, 0xED, 0x6A, 0x1E, - 0x01, 0x2D, 0x9E, 0x68, 0x32, 0xA9, 0x07, - 0x60, 0x0A, 0x91, 0x81, 0x30, 0xC4, 0x6D, - 0xC7, 0x78, 0xF9, 0x71, 0xAD, 0x00, 0x38, - 0x09, 0x29, 0x99, 0xA3, 0x33, 0xCB, 0x8B, - 0x7A, 0x1A, 0x1D, 0xB9, 0x3D, 0x71, 0x40, - 0x00, 0x3C, 0x2A, 0x4E, 0xCE, 0xA9, 0xF9, - 0x8D, 0x0A, 0xCC, 0x0A, 0x82, 0x91, 0xCD, - 0xCE, 0xC9, 0x7D, 0xCF, 0x8E, 0xC9, 0xB5, - 0x5A, 0x7F, 0x88, 0xA4, 0x6B, 0x4D, 0xB5, - 0xA8, 0x51, 0xF4, 0x41, 0x82, 0xE1, 0xC6, - 0x8A, 0x00, 0x7E, 0x5E, 0x65, 0x5F, 0x6A, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xF8, 0x54, 0x58, + 0xA2, 0xBB, 0x4A, 0x9A, 0xAF, 0xDC, 0x56, 0x20, 0x27, 0x3D, 0x3C, 0xF1, + 0xD8, 0xB9, 0xC5, 0x83, 0xCE, 0x2D, 0x36, 0x95, 0xA9, 0xE1, 0x36, 0x41, + 0x14, 0x64, 0x33, 0xFB, 0xCC, 0x93, 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9, + 0x7D, 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8, 0xF6, 0x81, 0xB2, 0x02, + 0xAE, 0xC4, 0x61, 0x7A, 0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, 0x65, 0x61, + 0x24, 0x33, 0xF5, 0x1F, 0x5F, 0x06, 0x6E, 0xD0, 0x85, 0x63, 0x65, 0x55, + 0x3D, 0xED, 0x1A, 0xF3, 0xB5, 0x57, 0x13, 0x5E, 0x7F, 0x57, 0xC9, 0x35, + 0x98, 0x4F, 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77, 0xE2, 0xA6, 0x89, 0xDA, + 0xF3, 0xEF, 0xE8, 0x72, 0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, 0x35, + 0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, 0x79, 0x7A, 0xBC, 0x0A, 0xB1, 0x82, + 0xB3, 0x24, 0xFB, 0x61, 0xD1, 0x08, 0xA9, 0x4B, 0xB2, 0xC8, 0xE3, 0xFB, + 0xB9, 0x6A, 0xDA, 0xB7, 0x60, 0xD7, 0xF4, 0x68, 0x1D, 0x4F, 0x42, 0xA3, + 0xDE, 0x39, 0x4D, 0xF4, 0xAE, 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19, + 0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, 0x70, 0x9E, 0x02, 0xFC, 0xE1, + 0xCD, 0xF7, 0xE2, 0xEC, 0xC0, 0x34, 0x04, 0xCD, 0x28, 0x34, 0x2F, 0x61, + 0x91, 0x72, 0xFE, 0x9C, 0xE9, 0x85, 0x83, 0xFF, 0x8E, 0x4F, 0x12, 0x32, + 0xEE, 0xF2, 0x81, 0x83, 0xC3, 0xFE, 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73, + 0x3B, 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05, 0xC5, 0x8E, 0xF1, 0x83, + 0x7D, 0x16, 0x83, 0xB2, 0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, 0xEF, 0xFA, + 0x88, 0x6B, 0x42, 0x38, 0x61, 0x1F, 0xCF, 0xDC, 0xDE, 0x35, 0x5B, 0x3B, + 0x65, 0x19, 0x03, 0x5B, 0xBC, 0x34, 0xF4, 0xDE, 0xF9, 0x9C, 0x02, 0x38, + 0x61, 0xB4, 0x6F, 0xC9, 0xD6, 0xE6, 0xC9, 0x07, 0x7A, 0xD9, 0x1D, 0x26, + 0x91, 0xF7, 0xF7, 0xEE, 0x59, 0x8C, 0xB0, 0xFA, 0xC1, 0x86, 0xD9, 0x1C, + 0xAE, 0xFE, 0x13, 0x09, 0x85, 0x13, 0x92, 0x70, 0xB4, 0x13, 0x0C, 0x93, + 0xBC, 0x43, 0x79, 0x44, 0xF4, 0xFD, 0x44, 0x52, 0xE2, 0xD7, 0x4D, 0xD3, + 0x64, 0xF2, 0xE2, 0x1E, 0x71, 0xF5, 0x4B, 0xFF, 0x5C, 0xAE, 0x82, 0xAB, + 0x9C, 0x9D, 0xF6, 0x9E, 0xE8, 0x6D, 0x2B, 0xC5, 0x22, 0x36, 0x3A, 0x0D, + 0xAB, 0xC5, 0x21, 0x97, 0x9B, 0x0D, 0xEA, 0xDA, 0x1D, 0xBF, 0x9A, 0x42, + 0xD5, 0xC4, 0x48, 0x4E, 0x0A, 0xBC, 0xD0, 0x6B, 0xFA, 0x53, 0xDD, 0xEF, + 0x3C, 0x1B, 0x20, 0xEE, 0x3F, 0xD5, 0x9D, 0x7C, 0x25, 0xE4, 0x1D, 0x2B, + 0x66, 0x9E, 0x1E, 0xF1, 0x6E, 0x6F, 0x52, 0xC3, 0x16, 0x4D, 0xF4, 0xFB, + 0x79, 0x30, 0xE9, 0xE4, 0xE5, 0x88, 0x57, 0xB6, 0xAC, 0x7D, 0x5F, 0x42, + 0xD6, 0x9F, 0x6D, 0x18, 0x77, 0x63, 0xCF, 0x1D, 0x55, 0x03, 0x40, 0x04, + 0x87, 0xF5, 0x5B, 0xA5, 0x7E, 0x31, 0xCC, 0x7A, 0x71, 0x35, 0xC8, 0x86, + 0xEF, 0xB4, 0x31, 0x8A, 0xED, 0x6A, 0x1E, 0x01, 0x2D, 0x9E, 0x68, 0x32, + 0xA9, 0x07, 0x60, 0x0A, 0x91, 0x81, 0x30, 0xC4, 0x6D, 0xC7, 0x78, 0xF9, + 0x71, 0xAD, 0x00, 0x38, 0x09, 0x29, 0x99, 0xA3, 0x33, 0xCB, 0x8B, 0x7A, + 0x1A, 0x1D, 0xB9, 0x3D, 0x71, 0x40, 0x00, 0x3C, 0x2A, 0x4E, 0xCE, 0xA9, + 0xF9, 0x8D, 0x0A, 0xCC, 0x0A, 0x82, 0x91, 0xCD, 0xCE, 0xC9, 0x7D, 0xCF, + 0x8E, 0xC9, 0xB5, 0x5A, 0x7F, 0x88, 0xA4, 0x6B, 0x4D, 0xB5, 0xA8, 0x51, + 0xF4, 0x41, 0x82, 0xE1, 0xC6, 0x8A, 0x00, 0x7E, 0x5E, 0x65, 0x5F, 0x6A, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; static const unsigned char ffdhe_q_4096[] = { - 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xD6, 0xFC, 0x2A, 0x2C, 0x51, 0x5D, - 0xA5, 0x4D, 0x57, 0xEE, 0x2B, 0x10, 0x13, - 0x9E, 0x9E, 0x78, 0xEC, 0x5C, 0xE2, 0xC1, - 0xE7, 0x16, 0x9B, 0x4A, 0xD4, 0xF0, 0x9B, - 0x20, 0x8A, 0x32, 0x19, 0xFD, 0xE6, 0x49, - 0xCE, 0xE7, 0x12, 0x4D, 0x9F, 0x7C, 0xBE, - 0x97, 0xF1, 0xB1, 0xB1, 0x86, 0x3A, 0xEC, - 0x7B, 0x40, 0xD9, 0x01, 0x57, 0x62, 0x30, - 0xBD, 0x69, 0xEF, 0x8F, 0x6A, 0xEA, 0xFE, - 0xB2, 0xB0, 0x92, 0x19, 0xFA, 0x8F, 0xAF, - 0x83, 0x37, 0x68, 0x42, 0xB1, 0xB2, 0xAA, - 0x9E, 0xF6, 0x8D, 0x79, 0xDA, 0xAB, 0x89, - 0xAF, 0x3F, 0xAB, 0xE4, 0x9A, 0xCC, 0x27, - 0x86, 0x38, 0x70, 0x73, 0x45, 0xBB, 0xF1, - 0x53, 0x44, 0xED, 0x79, 0xF7, 0xF4, 0x39, - 0x0E, 0xF8, 0xAC, 0x50, 0x9B, 0x56, 0xF3, - 0x9A, 0x98, 0x56, 0x65, 0x27, 0xA4, 0x1D, - 0x3C, 0xBD, 0x5E, 0x05, 0x58, 0xC1, 0x59, - 0x92, 0x7D, 0xB0, 0xE8, 0x84, 0x54, 0xA5, - 0xD9, 0x64, 0x71, 0xFD, 0xDC, 0xB5, 0x6D, - 0x5B, 0xB0, 0x6B, 0xFA, 0x34, 0x0E, 0xA7, - 0xA1, 0x51, 0xEF, 0x1C, 0xA6, 0xFA, 0x57, - 0x2B, 0x76, 0xF3, 0xB1, 0xB9, 0x5D, 0x8C, - 0x85, 0x83, 0xD3, 0xE4, 0x77, 0x05, 0x36, - 0xB8, 0x4F, 0x01, 0x7E, 0x70, 0xE6, 0xFB, - 0xF1, 0x76, 0x60, 0x1A, 0x02, 0x66, 0x94, - 0x1A, 0x17, 0xB0, 0xC8, 0xB9, 0x7F, 0x4E, - 0x74, 0xC2, 0xC1, 0xFF, 0xC7, 0x27, 0x89, - 0x19, 0x77, 0x79, 0x40, 0xC1, 0xE1, 0xFF, - 0x1D, 0x8D, 0xA6, 0x37, 0xD6, 0xB9, 0x9D, - 0xDA, 0xFE, 0x5E, 0x17, 0x61, 0x10, 0x02, - 0xE2, 0xC7, 0x78, 0xC1, 0xBE, 0x8B, 0x41, - 0xD9, 0x63, 0x79, 0xA5, 0x13, 0x60, 0xD9, - 0x77, 0xFD, 0x44, 0x35, 0xA1, 0x1C, 0x30, - 0x8F, 0xE7, 0xEE, 0x6F, 0x1A, 0xAD, 0x9D, - 0xB2, 0x8C, 0x81, 0xAD, 0xDE, 0x1A, 0x7A, - 0x6F, 0x7C, 0xCE, 0x01, 0x1C, 0x30, 0xDA, - 0x37, 0xE4, 0xEB, 0x73, 0x64, 0x83, 0xBD, - 0x6C, 0x8E, 0x93, 0x48, 0xFB, 0xFB, 0xF7, - 0x2C, 0xC6, 0x58, 0x7D, 0x60, 0xC3, 0x6C, - 0x8E, 0x57, 0x7F, 0x09, 0x84, 0xC2, 0x89, - 0xC9, 0x38, 0x5A, 0x09, 0x86, 0x49, 0xDE, - 0x21, 0xBC, 0xA2, 0x7A, 0x7E, 0xA2, 0x29, - 0x71, 0x6B, 0xA6, 0xE9, 0xB2, 0x79, 0x71, - 0x0F, 0x38, 0xFA, 0xA5, 0xFF, 0xAE, 0x57, - 0x41, 0x55, 0xCE, 0x4E, 0xFB, 0x4F, 0x74, - 0x36, 0x95, 0xE2, 0x91, 0x1B, 0x1D, 0x06, - 0xD5, 0xE2, 0x90, 0xCB, 0xCD, 0x86, 0xF5, - 0x6D, 0x0E, 0xDF, 0xCD, 0x21, 0x6A, 0xE2, - 0x24, 0x27, 0x05, 0x5E, 0x68, 0x35, 0xFD, - 0x29, 0xEE, 0xF7, 0x9E, 0x0D, 0x90, 0x77, - 0x1F, 0xEA, 0xCE, 0xBE, 0x12, 0xF2, 0x0E, - 0x95, 0xB3, 0x4F, 0x0F, 0x78, 0xB7, 0x37, - 0xA9, 0x61, 0x8B, 0x26, 0xFA, 0x7D, 0xBC, - 0x98, 0x74, 0xF2, 0x72, 0xC4, 0x2B, 0xDB, - 0x56, 0x3E, 0xAF, 0xA1, 0x6B, 0x4F, 0xB6, - 0x8C, 0x3B, 0xB1, 0xE7, 0x8E, 0xAA, 0x81, - 0xA0, 0x02, 0x43, 0xFA, 0xAD, 0xD2, 0xBF, - 0x18, 0xE6, 0x3D, 0x38, 0x9A, 0xE4, 0x43, - 0x77, 0xDA, 0x18, 0xC5, 0x76, 0xB5, 0x0F, - 0x00, 0x96, 0xCF, 0x34, 0x19, 0x54, 0x83, - 0xB0, 0x05, 0x48, 0xC0, 0x98, 0x62, 0x36, - 0xE3, 0xBC, 0x7C, 0xB8, 0xD6, 0x80, 0x1C, - 0x04, 0x94, 0xCC, 0xD1, 0x99, 0xE5, 0xC5, - 0xBD, 0x0D, 0x0E, 0xDC, 0x9E, 0xB8, 0xA0, - 0x00, 0x1E, 0x15, 0x27, 0x67, 0x54, 0xFC, - 0xC6, 0x85, 0x66, 0x05, 0x41, 0x48, 0xE6, - 0xE7, 0x64, 0xBE, 0xE7, 0xC7, 0x64, 0xDA, - 0xAD, 0x3F, 0xC4, 0x52, 0x35, 0xA6, 0xDA, - 0xD4, 0x28, 0xFA, 0x20, 0xC1, 0x70, 0xE3, - 0x45, 0x00, 0x3F, 0x2F, 0x32, 0xAF, 0xB5, - 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0xFC, 0x2A, 0x2C, + 0x51, 0x5D, 0xA5, 0x4D, 0x57, 0xEE, 0x2B, 0x10, 0x13, 0x9E, 0x9E, 0x78, + 0xEC, 0x5C, 0xE2, 0xC1, 0xE7, 0x16, 0x9B, 0x4A, 0xD4, 0xF0, 0x9B, 0x20, + 0x8A, 0x32, 0x19, 0xFD, 0xE6, 0x49, 0xCE, 0xE7, 0x12, 0x4D, 0x9F, 0x7C, + 0xBE, 0x97, 0xF1, 0xB1, 0xB1, 0x86, 0x3A, 0xEC, 0x7B, 0x40, 0xD9, 0x01, + 0x57, 0x62, 0x30, 0xBD, 0x69, 0xEF, 0x8F, 0x6A, 0xEA, 0xFE, 0xB2, 0xB0, + 0x92, 0x19, 0xFA, 0x8F, 0xAF, 0x83, 0x37, 0x68, 0x42, 0xB1, 0xB2, 0xAA, + 0x9E, 0xF6, 0x8D, 0x79, 0xDA, 0xAB, 0x89, 0xAF, 0x3F, 0xAB, 0xE4, 0x9A, + 0xCC, 0x27, 0x86, 0x38, 0x70, 0x73, 0x45, 0xBB, 0xF1, 0x53, 0x44, 0xED, + 0x79, 0xF7, 0xF4, 0x39, 0x0E, 0xF8, 0xAC, 0x50, 0x9B, 0x56, 0xF3, 0x9A, + 0x98, 0x56, 0x65, 0x27, 0xA4, 0x1D, 0x3C, 0xBD, 0x5E, 0x05, 0x58, 0xC1, + 0x59, 0x92, 0x7D, 0xB0, 0xE8, 0x84, 0x54, 0xA5, 0xD9, 0x64, 0x71, 0xFD, + 0xDC, 0xB5, 0x6D, 0x5B, 0xB0, 0x6B, 0xFA, 0x34, 0x0E, 0xA7, 0xA1, 0x51, + 0xEF, 0x1C, 0xA6, 0xFA, 0x57, 0x2B, 0x76, 0xF3, 0xB1, 0xB9, 0x5D, 0x8C, + 0x85, 0x83, 0xD3, 0xE4, 0x77, 0x05, 0x36, 0xB8, 0x4F, 0x01, 0x7E, 0x70, + 0xE6, 0xFB, 0xF1, 0x76, 0x60, 0x1A, 0x02, 0x66, 0x94, 0x1A, 0x17, 0xB0, + 0xC8, 0xB9, 0x7F, 0x4E, 0x74, 0xC2, 0xC1, 0xFF, 0xC7, 0x27, 0x89, 0x19, + 0x77, 0x79, 0x40, 0xC1, 0xE1, 0xFF, 0x1D, 0x8D, 0xA6, 0x37, 0xD6, 0xB9, + 0x9D, 0xDA, 0xFE, 0x5E, 0x17, 0x61, 0x10, 0x02, 0xE2, 0xC7, 0x78, 0xC1, + 0xBE, 0x8B, 0x41, 0xD9, 0x63, 0x79, 0xA5, 0x13, 0x60, 0xD9, 0x77, 0xFD, + 0x44, 0x35, 0xA1, 0x1C, 0x30, 0x8F, 0xE7, 0xEE, 0x6F, 0x1A, 0xAD, 0x9D, + 0xB2, 0x8C, 0x81, 0xAD, 0xDE, 0x1A, 0x7A, 0x6F, 0x7C, 0xCE, 0x01, 0x1C, + 0x30, 0xDA, 0x37, 0xE4, 0xEB, 0x73, 0x64, 0x83, 0xBD, 0x6C, 0x8E, 0x93, + 0x48, 0xFB, 0xFB, 0xF7, 0x2C, 0xC6, 0x58, 0x7D, 0x60, 0xC3, 0x6C, 0x8E, + 0x57, 0x7F, 0x09, 0x84, 0xC2, 0x89, 0xC9, 0x38, 0x5A, 0x09, 0x86, 0x49, + 0xDE, 0x21, 0xBC, 0xA2, 0x7A, 0x7E, 0xA2, 0x29, 0x71, 0x6B, 0xA6, 0xE9, + 0xB2, 0x79, 0x71, 0x0F, 0x38, 0xFA, 0xA5, 0xFF, 0xAE, 0x57, 0x41, 0x55, + 0xCE, 0x4E, 0xFB, 0x4F, 0x74, 0x36, 0x95, 0xE2, 0x91, 0x1B, 0x1D, 0x06, + 0xD5, 0xE2, 0x90, 0xCB, 0xCD, 0x86, 0xF5, 0x6D, 0x0E, 0xDF, 0xCD, 0x21, + 0x6A, 0xE2, 0x24, 0x27, 0x05, 0x5E, 0x68, 0x35, 0xFD, 0x29, 0xEE, 0xF7, + 0x9E, 0x0D, 0x90, 0x77, 0x1F, 0xEA, 0xCE, 0xBE, 0x12, 0xF2, 0x0E, 0x95, + 0xB3, 0x4F, 0x0F, 0x78, 0xB7, 0x37, 0xA9, 0x61, 0x8B, 0x26, 0xFA, 0x7D, + 0xBC, 0x98, 0x74, 0xF2, 0x72, 0xC4, 0x2B, 0xDB, 0x56, 0x3E, 0xAF, 0xA1, + 0x6B, 0x4F, 0xB6, 0x8C, 0x3B, 0xB1, 0xE7, 0x8E, 0xAA, 0x81, 0xA0, 0x02, + 0x43, 0xFA, 0xAD, 0xD2, 0xBF, 0x18, 0xE6, 0x3D, 0x38, 0x9A, 0xE4, 0x43, + 0x77, 0xDA, 0x18, 0xC5, 0x76, 0xB5, 0x0F, 0x00, 0x96, 0xCF, 0x34, 0x19, + 0x54, 0x83, 0xB0, 0x05, 0x48, 0xC0, 0x98, 0x62, 0x36, 0xE3, 0xBC, 0x7C, + 0xB8, 0xD6, 0x80, 0x1C, 0x04, 0x94, 0xCC, 0xD1, 0x99, 0xE5, 0xC5, 0xBD, + 0x0D, 0x0E, 0xDC, 0x9E, 0xB8, 0xA0, 0x00, 0x1E, 0x15, 0x27, 0x67, 0x54, + 0xFC, 0xC6, 0x85, 0x66, 0x05, 0x41, 0x48, 0xE6, 0xE7, 0x64, 0xBE, 0xE7, + 0xC7, 0x64, 0xDA, 0xAD, 0x3F, 0xC4, 0x52, 0x35, 0xA6, 0xDA, 0xD4, 0x28, + 0xFA, 0x20, 0xC1, 0x70, 0xE3, 0x45, 0x00, 0x3F, 0x2F, 0x32, 0xAF, 0xB5, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; const gnutls_datum_t gnutls_ffdhe_4096_group_prime = { (void *)ffdhe_params_4096, sizeof(ffdhe_params_4096) }; -const gnutls_datum_t gnutls_ffdhe_4096_group_q = { - (void *)ffdhe_q_4096, sizeof(ffdhe_q_4096) -}; +const gnutls_datum_t gnutls_ffdhe_4096_group_q = { (void *)ffdhe_q_4096, + sizeof(ffdhe_q_4096) }; const gnutls_datum_t gnutls_ffdhe_4096_group_generator = { (void *)&ffdhe_generator, sizeof(ffdhe_generator) @@ -420,238 +279,145 @@ const gnutls_datum_t gnutls_ffdhe_4096_group_generator = { const unsigned int gnutls_ffdhe_4096_key_bits = 336; static const unsigned char ffdhe_params_6144[] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xAD, 0xF8, 0x54, 0x58, 0xA2, 0xBB, - 0x4A, 0x9A, 0xAF, 0xDC, 0x56, 0x20, 0x27, - 0x3D, 0x3C, 0xF1, 0xD8, 0xB9, 0xC5, 0x83, - 0xCE, 0x2D, 0x36, 0x95, 0xA9, 0xE1, 0x36, - 0x41, 0x14, 0x64, 0x33, 0xFB, 0xCC, 0x93, - 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9, 0x7D, - 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8, - 0xF6, 0x81, 0xB2, 0x02, 0xAE, 0xC4, 0x61, - 0x7A, 0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, - 0x65, 0x61, 0x24, 0x33, 0xF5, 0x1F, 0x5F, - 0x06, 0x6E, 0xD0, 0x85, 0x63, 0x65, 0x55, - 0x3D, 0xED, 0x1A, 0xF3, 0xB5, 0x57, 0x13, - 0x5E, 0x7F, 0x57, 0xC9, 0x35, 0x98, 0x4F, - 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77, 0xE2, - 0xA6, 0x89, 0xDA, 0xF3, 0xEF, 0xE8, 0x72, - 0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, - 0x35, 0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, - 0x79, 0x7A, 0xBC, 0x0A, 0xB1, 0x82, 0xB3, - 0x24, 0xFB, 0x61, 0xD1, 0x08, 0xA9, 0x4B, - 0xB2, 0xC8, 0xE3, 0xFB, 0xB9, 0x6A, 0xDA, - 0xB7, 0x60, 0xD7, 0xF4, 0x68, 0x1D, 0x4F, - 0x42, 0xA3, 0xDE, 0x39, 0x4D, 0xF4, 0xAE, - 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19, - 0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, - 0x70, 0x9E, 0x02, 0xFC, 0xE1, 0xCD, 0xF7, - 0xE2, 0xEC, 0xC0, 0x34, 0x04, 0xCD, 0x28, - 0x34, 0x2F, 0x61, 0x91, 0x72, 0xFE, 0x9C, - 0xE9, 0x85, 0x83, 0xFF, 0x8E, 0x4F, 0x12, - 0x32, 0xEE, 0xF2, 0x81, 0x83, 0xC3, 0xFE, - 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73, 0x3B, - 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05, - 0xC5, 0x8E, 0xF1, 0x83, 0x7D, 0x16, 0x83, - 0xB2, 0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, - 0xEF, 0xFA, 0x88, 0x6B, 0x42, 0x38, 0x61, - 0x1F, 0xCF, 0xDC, 0xDE, 0x35, 0x5B, 0x3B, - 0x65, 0x19, 0x03, 0x5B, 0xBC, 0x34, 0xF4, - 0xDE, 0xF9, 0x9C, 0x02, 0x38, 0x61, 0xB4, - 0x6F, 0xC9, 0xD6, 0xE6, 0xC9, 0x07, 0x7A, - 0xD9, 0x1D, 0x26, 0x91, 0xF7, 0xF7, 0xEE, - 0x59, 0x8C, 0xB0, 0xFA, 0xC1, 0x86, 0xD9, - 0x1C, 0xAE, 0xFE, 0x13, 0x09, 0x85, 0x13, - 0x92, 0x70, 0xB4, 0x13, 0x0C, 0x93, 0xBC, - 0x43, 0x79, 0x44, 0xF4, 0xFD, 0x44, 0x52, - 0xE2, 0xD7, 0x4D, 0xD3, 0x64, 0xF2, 0xE2, - 0x1E, 0x71, 0xF5, 0x4B, 0xFF, 0x5C, 0xAE, - 0x82, 0xAB, 0x9C, 0x9D, 0xF6, 0x9E, 0xE8, - 0x6D, 0x2B, 0xC5, 0x22, 0x36, 0x3A, 0x0D, - 0xAB, 0xC5, 0x21, 0x97, 0x9B, 0x0D, 0xEA, - 0xDA, 0x1D, 0xBF, 0x9A, 0x42, 0xD5, 0xC4, - 0x48, 0x4E, 0x0A, 0xBC, 0xD0, 0x6B, 0xFA, - 0x53, 0xDD, 0xEF, 0x3C, 0x1B, 0x20, 0xEE, - 0x3F, 0xD5, 0x9D, 0x7C, 0x25, 0xE4, 0x1D, - 0x2B, 0x66, 0x9E, 0x1E, 0xF1, 0x6E, 0x6F, - 0x52, 0xC3, 0x16, 0x4D, 0xF4, 0xFB, 0x79, - 0x30, 0xE9, 0xE4, 0xE5, 0x88, 0x57, 0xB6, - 0xAC, 0x7D, 0x5F, 0x42, 0xD6, 0x9F, 0x6D, - 0x18, 0x77, 0x63, 0xCF, 0x1D, 0x55, 0x03, - 0x40, 0x04, 0x87, 0xF5, 0x5B, 0xA5, 0x7E, - 0x31, 0xCC, 0x7A, 0x71, 0x35, 0xC8, 0x86, - 0xEF, 0xB4, 0x31, 0x8A, 0xED, 0x6A, 0x1E, - 0x01, 0x2D, 0x9E, 0x68, 0x32, 0xA9, 0x07, - 0x60, 0x0A, 0x91, 0x81, 0x30, 0xC4, 0x6D, - 0xC7, 0x78, 0xF9, 0x71, 0xAD, 0x00, 0x38, - 0x09, 0x29, 0x99, 0xA3, 0x33, 0xCB, 0x8B, - 0x7A, 0x1A, 0x1D, 0xB9, 0x3D, 0x71, 0x40, - 0x00, 0x3C, 0x2A, 0x4E, 0xCE, 0xA9, 0xF9, - 0x8D, 0x0A, 0xCC, 0x0A, 0x82, 0x91, 0xCD, - 0xCE, 0xC9, 0x7D, 0xCF, 0x8E, 0xC9, 0xB5, - 0x5A, 0x7F, 0x88, 0xA4, 0x6B, 0x4D, 0xB5, - 0xA8, 0x51, 0xF4, 0x41, 0x82, 0xE1, 0xC6, - 0x8A, 0x00, 0x7E, 0x5E, 0x0D, 0xD9, 0x02, - 0x0B, 0xFD, 0x64, 0xB6, 0x45, 0x03, 0x6C, - 0x7A, 0x4E, 0x67, 0x7D, 0x2C, 0x38, 0x53, - 0x2A, 0x3A, 0x23, 0xBA, 0x44, 0x42, 0xCA, - 0xF5, 0x3E, 0xA6, 0x3B, 0xB4, 0x54, 0x32, - 0x9B, 0x76, 0x24, 0xC8, 0x91, 0x7B, 0xDD, - 0x64, 0xB1, 0xC0, 0xFD, 0x4C, 0xB3, 0x8E, - 0x8C, 0x33, 0x4C, 0x70, 0x1C, 0x3A, 0xCD, - 0xAD, 0x06, 0x57, 0xFC, 0xCF, 0xEC, 0x71, - 0x9B, 0x1F, 0x5C, 0x3E, 0x4E, 0x46, 0x04, - 0x1F, 0x38, 0x81, 0x47, 0xFB, 0x4C, 0xFD, - 0xB4, 0x77, 0xA5, 0x24, 0x71, 0xF7, 0xA9, - 0xA9, 0x69, 0x10, 0xB8, 0x55, 0x32, 0x2E, - 0xDB, 0x63, 0x40, 0xD8, 0xA0, 0x0E, 0xF0, - 0x92, 0x35, 0x05, 0x11, 0xE3, 0x0A, 0xBE, - 0xC1, 0xFF, 0xF9, 0xE3, 0xA2, 0x6E, 0x7F, - 0xB2, 0x9F, 0x8C, 0x18, 0x30, 0x23, 0xC3, - 0x58, 0x7E, 0x38, 0xDA, 0x00, 0x77, 0xD9, - 0xB4, 0x76, 0x3E, 0x4E, 0x4B, 0x94, 0xB2, - 0xBB, 0xC1, 0x94, 0xC6, 0x65, 0x1E, 0x77, - 0xCA, 0xF9, 0x92, 0xEE, 0xAA, 0xC0, 0x23, - 0x2A, 0x28, 0x1B, 0xF6, 0xB3, 0xA7, 0x39, - 0xC1, 0x22, 0x61, 0x16, 0x82, 0x0A, 0xE8, - 0xDB, 0x58, 0x47, 0xA6, 0x7C, 0xBE, 0xF9, - 0xC9, 0x09, 0x1B, 0x46, 0x2D, 0x53, 0x8C, - 0xD7, 0x2B, 0x03, 0x74, 0x6A, 0xE7, 0x7F, - 0x5E, 0x62, 0x29, 0x2C, 0x31, 0x15, 0x62, - 0xA8, 0x46, 0x50, 0x5D, 0xC8, 0x2D, 0xB8, - 0x54, 0x33, 0x8A, 0xE4, 0x9F, 0x52, 0x35, - 0xC9, 0x5B, 0x91, 0x17, 0x8C, 0xCF, 0x2D, - 0xD5, 0xCA, 0xCE, 0xF4, 0x03, 0xEC, 0x9D, - 0x18, 0x10, 0xC6, 0x27, 0x2B, 0x04, 0x5B, - 0x3B, 0x71, 0xF9, 0xDC, 0x6B, 0x80, 0xD6, - 0x3F, 0xDD, 0x4A, 0x8E, 0x9A, 0xDB, 0x1E, - 0x69, 0x62, 0xA6, 0x95, 0x26, 0xD4, 0x31, - 0x61, 0xC1, 0xA4, 0x1D, 0x57, 0x0D, 0x79, - 0x38, 0xDA, 0xD4, 0xA4, 0x0E, 0x32, 0x9C, - 0xD0, 0xE4, 0x0E, 0x65, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xF8, 0x54, 0x58, + 0xA2, 0xBB, 0x4A, 0x9A, 0xAF, 0xDC, 0x56, 0x20, 0x27, 0x3D, 0x3C, 0xF1, + 0xD8, 0xB9, 0xC5, 0x83, 0xCE, 0x2D, 0x36, 0x95, 0xA9, 0xE1, 0x36, 0x41, + 0x14, 0x64, 0x33, 0xFB, 0xCC, 0x93, 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9, + 0x7D, 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8, 0xF6, 0x81, 0xB2, 0x02, + 0xAE, 0xC4, 0x61, 0x7A, 0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, 0x65, 0x61, + 0x24, 0x33, 0xF5, 0x1F, 0x5F, 0x06, 0x6E, 0xD0, 0x85, 0x63, 0x65, 0x55, + 0x3D, 0xED, 0x1A, 0xF3, 0xB5, 0x57, 0x13, 0x5E, 0x7F, 0x57, 0xC9, 0x35, + 0x98, 0x4F, 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77, 0xE2, 0xA6, 0x89, 0xDA, + 0xF3, 0xEF, 0xE8, 0x72, 0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, 0x35, + 0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, 0x79, 0x7A, 0xBC, 0x0A, 0xB1, 0x82, + 0xB3, 0x24, 0xFB, 0x61, 0xD1, 0x08, 0xA9, 0x4B, 0xB2, 0xC8, 0xE3, 0xFB, + 0xB9, 0x6A, 0xDA, 0xB7, 0x60, 0xD7, 0xF4, 0x68, 0x1D, 0x4F, 0x42, 0xA3, + 0xDE, 0x39, 0x4D, 0xF4, 0xAE, 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19, + 0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, 0x70, 0x9E, 0x02, 0xFC, 0xE1, + 0xCD, 0xF7, 0xE2, 0xEC, 0xC0, 0x34, 0x04, 0xCD, 0x28, 0x34, 0x2F, 0x61, + 0x91, 0x72, 0xFE, 0x9C, 0xE9, 0x85, 0x83, 0xFF, 0x8E, 0x4F, 0x12, 0x32, + 0xEE, 0xF2, 0x81, 0x83, 0xC3, 0xFE, 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73, + 0x3B, 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05, 0xC5, 0x8E, 0xF1, 0x83, + 0x7D, 0x16, 0x83, 0xB2, 0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, 0xEF, 0xFA, + 0x88, 0x6B, 0x42, 0x38, 0x61, 0x1F, 0xCF, 0xDC, 0xDE, 0x35, 0x5B, 0x3B, + 0x65, 0x19, 0x03, 0x5B, 0xBC, 0x34, 0xF4, 0xDE, 0xF9, 0x9C, 0x02, 0x38, + 0x61, 0xB4, 0x6F, 0xC9, 0xD6, 0xE6, 0xC9, 0x07, 0x7A, 0xD9, 0x1D, 0x26, + 0x91, 0xF7, 0xF7, 0xEE, 0x59, 0x8C, 0xB0, 0xFA, 0xC1, 0x86, 0xD9, 0x1C, + 0xAE, 0xFE, 0x13, 0x09, 0x85, 0x13, 0x92, 0x70, 0xB4, 0x13, 0x0C, 0x93, + 0xBC, 0x43, 0x79, 0x44, 0xF4, 0xFD, 0x44, 0x52, 0xE2, 0xD7, 0x4D, 0xD3, + 0x64, 0xF2, 0xE2, 0x1E, 0x71, 0xF5, 0x4B, 0xFF, 0x5C, 0xAE, 0x82, 0xAB, + 0x9C, 0x9D, 0xF6, 0x9E, 0xE8, 0x6D, 0x2B, 0xC5, 0x22, 0x36, 0x3A, 0x0D, + 0xAB, 0xC5, 0x21, 0x97, 0x9B, 0x0D, 0xEA, 0xDA, 0x1D, 0xBF, 0x9A, 0x42, + 0xD5, 0xC4, 0x48, 0x4E, 0x0A, 0xBC, 0xD0, 0x6B, 0xFA, 0x53, 0xDD, 0xEF, + 0x3C, 0x1B, 0x20, 0xEE, 0x3F, 0xD5, 0x9D, 0x7C, 0x25, 0xE4, 0x1D, 0x2B, + 0x66, 0x9E, 0x1E, 0xF1, 0x6E, 0x6F, 0x52, 0xC3, 0x16, 0x4D, 0xF4, 0xFB, + 0x79, 0x30, 0xE9, 0xE4, 0xE5, 0x88, 0x57, 0xB6, 0xAC, 0x7D, 0x5F, 0x42, + 0xD6, 0x9F, 0x6D, 0x18, 0x77, 0x63, 0xCF, 0x1D, 0x55, 0x03, 0x40, 0x04, + 0x87, 0xF5, 0x5B, 0xA5, 0x7E, 0x31, 0xCC, 0x7A, 0x71, 0x35, 0xC8, 0x86, + 0xEF, 0xB4, 0x31, 0x8A, 0xED, 0x6A, 0x1E, 0x01, 0x2D, 0x9E, 0x68, 0x32, + 0xA9, 0x07, 0x60, 0x0A, 0x91, 0x81, 0x30, 0xC4, 0x6D, 0xC7, 0x78, 0xF9, + 0x71, 0xAD, 0x00, 0x38, 0x09, 0x29, 0x99, 0xA3, 0x33, 0xCB, 0x8B, 0x7A, + 0x1A, 0x1D, 0xB9, 0x3D, 0x71, 0x40, 0x00, 0x3C, 0x2A, 0x4E, 0xCE, 0xA9, + 0xF9, 0x8D, 0x0A, 0xCC, 0x0A, 0x82, 0x91, 0xCD, 0xCE, 0xC9, 0x7D, 0xCF, + 0x8E, 0xC9, 0xB5, 0x5A, 0x7F, 0x88, 0xA4, 0x6B, 0x4D, 0xB5, 0xA8, 0x51, + 0xF4, 0x41, 0x82, 0xE1, 0xC6, 0x8A, 0x00, 0x7E, 0x5E, 0x0D, 0xD9, 0x02, + 0x0B, 0xFD, 0x64, 0xB6, 0x45, 0x03, 0x6C, 0x7A, 0x4E, 0x67, 0x7D, 0x2C, + 0x38, 0x53, 0x2A, 0x3A, 0x23, 0xBA, 0x44, 0x42, 0xCA, 0xF5, 0x3E, 0xA6, + 0x3B, 0xB4, 0x54, 0x32, 0x9B, 0x76, 0x24, 0xC8, 0x91, 0x7B, 0xDD, 0x64, + 0xB1, 0xC0, 0xFD, 0x4C, 0xB3, 0x8E, 0x8C, 0x33, 0x4C, 0x70, 0x1C, 0x3A, + 0xCD, 0xAD, 0x06, 0x57, 0xFC, 0xCF, 0xEC, 0x71, 0x9B, 0x1F, 0x5C, 0x3E, + 0x4E, 0x46, 0x04, 0x1F, 0x38, 0x81, 0x47, 0xFB, 0x4C, 0xFD, 0xB4, 0x77, + 0xA5, 0x24, 0x71, 0xF7, 0xA9, 0xA9, 0x69, 0x10, 0xB8, 0x55, 0x32, 0x2E, + 0xDB, 0x63, 0x40, 0xD8, 0xA0, 0x0E, 0xF0, 0x92, 0x35, 0x05, 0x11, 0xE3, + 0x0A, 0xBE, 0xC1, 0xFF, 0xF9, 0xE3, 0xA2, 0x6E, 0x7F, 0xB2, 0x9F, 0x8C, + 0x18, 0x30, 0x23, 0xC3, 0x58, 0x7E, 0x38, 0xDA, 0x00, 0x77, 0xD9, 0xB4, + 0x76, 0x3E, 0x4E, 0x4B, 0x94, 0xB2, 0xBB, 0xC1, 0x94, 0xC6, 0x65, 0x1E, + 0x77, 0xCA, 0xF9, 0x92, 0xEE, 0xAA, 0xC0, 0x23, 0x2A, 0x28, 0x1B, 0xF6, + 0xB3, 0xA7, 0x39, 0xC1, 0x22, 0x61, 0x16, 0x82, 0x0A, 0xE8, 0xDB, 0x58, + 0x47, 0xA6, 0x7C, 0xBE, 0xF9, 0xC9, 0x09, 0x1B, 0x46, 0x2D, 0x53, 0x8C, + 0xD7, 0x2B, 0x03, 0x74, 0x6A, 0xE7, 0x7F, 0x5E, 0x62, 0x29, 0x2C, 0x31, + 0x15, 0x62, 0xA8, 0x46, 0x50, 0x5D, 0xC8, 0x2D, 0xB8, 0x54, 0x33, 0x8A, + 0xE4, 0x9F, 0x52, 0x35, 0xC9, 0x5B, 0x91, 0x17, 0x8C, 0xCF, 0x2D, 0xD5, + 0xCA, 0xCE, 0xF4, 0x03, 0xEC, 0x9D, 0x18, 0x10, 0xC6, 0x27, 0x2B, 0x04, + 0x5B, 0x3B, 0x71, 0xF9, 0xDC, 0x6B, 0x80, 0xD6, 0x3F, 0xDD, 0x4A, 0x8E, + 0x9A, 0xDB, 0x1E, 0x69, 0x62, 0xA6, 0x95, 0x26, 0xD4, 0x31, 0x61, 0xC1, + 0xA4, 0x1D, 0x57, 0x0D, 0x79, 0x38, 0xDA, 0xD4, 0xA4, 0x0E, 0x32, 0x9C, + 0xD0, 0xE4, 0x0E, 0x65, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; static const unsigned char ffdhe_q_6144[] = { - 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xD6, 0xFC, 0x2A, 0x2C, 0x51, 0x5D, - 0xA5, 0x4D, 0x57, 0xEE, 0x2B, 0x10, 0x13, - 0x9E, 0x9E, 0x78, 0xEC, 0x5C, 0xE2, 0xC1, - 0xE7, 0x16, 0x9B, 0x4A, 0xD4, 0xF0, 0x9B, - 0x20, 0x8A, 0x32, 0x19, 0xFD, 0xE6, 0x49, - 0xCE, 0xE7, 0x12, 0x4D, 0x9F, 0x7C, 0xBE, - 0x97, 0xF1, 0xB1, 0xB1, 0x86, 0x3A, 0xEC, - 0x7B, 0x40, 0xD9, 0x01, 0x57, 0x62, 0x30, - 0xBD, 0x69, 0xEF, 0x8F, 0x6A, 0xEA, 0xFE, - 0xB2, 0xB0, 0x92, 0x19, 0xFA, 0x8F, 0xAF, - 0x83, 0x37, 0x68, 0x42, 0xB1, 0xB2, 0xAA, - 0x9E, 0xF6, 0x8D, 0x79, 0xDA, 0xAB, 0x89, - 0xAF, 0x3F, 0xAB, 0xE4, 0x9A, 0xCC, 0x27, - 0x86, 0x38, 0x70, 0x73, 0x45, 0xBB, 0xF1, - 0x53, 0x44, 0xED, 0x79, 0xF7, 0xF4, 0x39, - 0x0E, 0xF8, 0xAC, 0x50, 0x9B, 0x56, 0xF3, - 0x9A, 0x98, 0x56, 0x65, 0x27, 0xA4, 0x1D, - 0x3C, 0xBD, 0x5E, 0x05, 0x58, 0xC1, 0x59, - 0x92, 0x7D, 0xB0, 0xE8, 0x84, 0x54, 0xA5, - 0xD9, 0x64, 0x71, 0xFD, 0xDC, 0xB5, 0x6D, - 0x5B, 0xB0, 0x6B, 0xFA, 0x34, 0x0E, 0xA7, - 0xA1, 0x51, 0xEF, 0x1C, 0xA6, 0xFA, 0x57, - 0x2B, 0x76, 0xF3, 0xB1, 0xB9, 0x5D, 0x8C, - 0x85, 0x83, 0xD3, 0xE4, 0x77, 0x05, 0x36, - 0xB8, 0x4F, 0x01, 0x7E, 0x70, 0xE6, 0xFB, - 0xF1, 0x76, 0x60, 0x1A, 0x02, 0x66, 0x94, - 0x1A, 0x17, 0xB0, 0xC8, 0xB9, 0x7F, 0x4E, - 0x74, 0xC2, 0xC1, 0xFF, 0xC7, 0x27, 0x89, - 0x19, 0x77, 0x79, 0x40, 0xC1, 0xE1, 0xFF, - 0x1D, 0x8D, 0xA6, 0x37, 0xD6, 0xB9, 0x9D, - 0xDA, 0xFE, 0x5E, 0x17, 0x61, 0x10, 0x02, - 0xE2, 0xC7, 0x78, 0xC1, 0xBE, 0x8B, 0x41, - 0xD9, 0x63, 0x79, 0xA5, 0x13, 0x60, 0xD9, - 0x77, 0xFD, 0x44, 0x35, 0xA1, 0x1C, 0x30, - 0x8F, 0xE7, 0xEE, 0x6F, 0x1A, 0xAD, 0x9D, - 0xB2, 0x8C, 0x81, 0xAD, 0xDE, 0x1A, 0x7A, - 0x6F, 0x7C, 0xCE, 0x01, 0x1C, 0x30, 0xDA, - 0x37, 0xE4, 0xEB, 0x73, 0x64, 0x83, 0xBD, - 0x6C, 0x8E, 0x93, 0x48, 0xFB, 0xFB, 0xF7, - 0x2C, 0xC6, 0x58, 0x7D, 0x60, 0xC3, 0x6C, - 0x8E, 0x57, 0x7F, 0x09, 0x84, 0xC2, 0x89, - 0xC9, 0x38, 0x5A, 0x09, 0x86, 0x49, 0xDE, - 0x21, 0xBC, 0xA2, 0x7A, 0x7E, 0xA2, 0x29, - 0x71, 0x6B, 0xA6, 0xE9, 0xB2, 0x79, 0x71, - 0x0F, 0x38, 0xFA, 0xA5, 0xFF, 0xAE, 0x57, - 0x41, 0x55, 0xCE, 0x4E, 0xFB, 0x4F, 0x74, - 0x36, 0x95, 0xE2, 0x91, 0x1B, 0x1D, 0x06, - 0xD5, 0xE2, 0x90, 0xCB, 0xCD, 0x86, 0xF5, - 0x6D, 0x0E, 0xDF, 0xCD, 0x21, 0x6A, 0xE2, - 0x24, 0x27, 0x05, 0x5E, 0x68, 0x35, 0xFD, - 0x29, 0xEE, 0xF7, 0x9E, 0x0D, 0x90, 0x77, - 0x1F, 0xEA, 0xCE, 0xBE, 0x12, 0xF2, 0x0E, - 0x95, 0xB3, 0x4F, 0x0F, 0x78, 0xB7, 0x37, - 0xA9, 0x61, 0x8B, 0x26, 0xFA, 0x7D, 0xBC, - 0x98, 0x74, 0xF2, 0x72, 0xC4, 0x2B, 0xDB, - 0x56, 0x3E, 0xAF, 0xA1, 0x6B, 0x4F, 0xB6, - 0x8C, 0x3B, 0xB1, 0xE7, 0x8E, 0xAA, 0x81, - 0xA0, 0x02, 0x43, 0xFA, 0xAD, 0xD2, 0xBF, - 0x18, 0xE6, 0x3D, 0x38, 0x9A, 0xE4, 0x43, - 0x77, 0xDA, 0x18, 0xC5, 0x76, 0xB5, 0x0F, - 0x00, 0x96, 0xCF, 0x34, 0x19, 0x54, 0x83, - 0xB0, 0x05, 0x48, 0xC0, 0x98, 0x62, 0x36, - 0xE3, 0xBC, 0x7C, 0xB8, 0xD6, 0x80, 0x1C, - 0x04, 0x94, 0xCC, 0xD1, 0x99, 0xE5, 0xC5, - 0xBD, 0x0D, 0x0E, 0xDC, 0x9E, 0xB8, 0xA0, - 0x00, 0x1E, 0x15, 0x27, 0x67, 0x54, 0xFC, - 0xC6, 0x85, 0x66, 0x05, 0x41, 0x48, 0xE6, - 0xE7, 0x64, 0xBE, 0xE7, 0xC7, 0x64, 0xDA, - 0xAD, 0x3F, 0xC4, 0x52, 0x35, 0xA6, 0xDA, - 0xD4, 0x28, 0xFA, 0x20, 0xC1, 0x70, 0xE3, - 0x45, 0x00, 0x3F, 0x2F, 0x06, 0xEC, 0x81, - 0x05, 0xFE, 0xB2, 0x5B, 0x22, 0x81, 0xB6, - 0x3D, 0x27, 0x33, 0xBE, 0x96, 0x1C, 0x29, - 0x95, 0x1D, 0x11, 0xDD, 0x22, 0x21, 0x65, - 0x7A, 0x9F, 0x53, 0x1D, 0xDA, 0x2A, 0x19, - 0x4D, 0xBB, 0x12, 0x64, 0x48, 0xBD, 0xEE, - 0xB2, 0x58, 0xE0, 0x7E, 0xA6, 0x59, 0xC7, - 0x46, 0x19, 0xA6, 0x38, 0x0E, 0x1D, 0x66, - 0xD6, 0x83, 0x2B, 0xFE, 0x67, 0xF6, 0x38, - 0xCD, 0x8F, 0xAE, 0x1F, 0x27, 0x23, 0x02, - 0x0F, 0x9C, 0x40, 0xA3, 0xFD, 0xA6, 0x7E, - 0xDA, 0x3B, 0xD2, 0x92, 0x38, 0xFB, 0xD4, - 0xD4, 0xB4, 0x88, 0x5C, 0x2A, 0x99, 0x17, - 0x6D, 0xB1, 0xA0, 0x6C, 0x50, 0x07, 0x78, - 0x49, 0x1A, 0x82, 0x88, 0xF1, 0x85, 0x5F, - 0x60, 0xFF, 0xFC, 0xF1, 0xD1, 0x37, 0x3F, - 0xD9, 0x4F, 0xC6, 0x0C, 0x18, 0x11, 0xE1, - 0xAC, 0x3F, 0x1C, 0x6D, 0x00, 0x3B, 0xEC, - 0xDA, 0x3B, 0x1F, 0x27, 0x25, 0xCA, 0x59, - 0x5D, 0xE0, 0xCA, 0x63, 0x32, 0x8F, 0x3B, - 0xE5, 0x7C, 0xC9, 0x77, 0x55, 0x60, 0x11, - 0x95, 0x14, 0x0D, 0xFB, 0x59, 0xD3, 0x9C, - 0xE0, 0x91, 0x30, 0x8B, 0x41, 0x05, 0x74, - 0x6D, 0xAC, 0x23, 0xD3, 0x3E, 0x5F, 0x7C, - 0xE4, 0x84, 0x8D, 0xA3, 0x16, 0xA9, 0xC6, - 0x6B, 0x95, 0x81, 0xBA, 0x35, 0x73, 0xBF, - 0xAF, 0x31, 0x14, 0x96, 0x18, 0x8A, 0xB1, - 0x54, 0x23, 0x28, 0x2E, 0xE4, 0x16, 0xDC, - 0x2A, 0x19, 0xC5, 0x72, 0x4F, 0xA9, 0x1A, - 0xE4, 0xAD, 0xC8, 0x8B, 0xC6, 0x67, 0x96, - 0xEA, 0xE5, 0x67, 0x7A, 0x01, 0xF6, 0x4E, - 0x8C, 0x08, 0x63, 0x13, 0x95, 0x82, 0x2D, - 0x9D, 0xB8, 0xFC, 0xEE, 0x35, 0xC0, 0x6B, - 0x1F, 0xEE, 0xA5, 0x47, 0x4D, 0x6D, 0x8F, - 0x34, 0xB1, 0x53, 0x4A, 0x93, 0x6A, 0x18, - 0xB0, 0xE0, 0xD2, 0x0E, 0xAB, 0x86, 0xBC, - 0x9C, 0x6D, 0x6A, 0x52, 0x07, 0x19, 0x4E, - 0x68, 0x72, 0x07, 0x32, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0xFC, 0x2A, 0x2C, + 0x51, 0x5D, 0xA5, 0x4D, 0x57, 0xEE, 0x2B, 0x10, 0x13, 0x9E, 0x9E, 0x78, + 0xEC, 0x5C, 0xE2, 0xC1, 0xE7, 0x16, 0x9B, 0x4A, 0xD4, 0xF0, 0x9B, 0x20, + 0x8A, 0x32, 0x19, 0xFD, 0xE6, 0x49, 0xCE, 0xE7, 0x12, 0x4D, 0x9F, 0x7C, + 0xBE, 0x97, 0xF1, 0xB1, 0xB1, 0x86, 0x3A, 0xEC, 0x7B, 0x40, 0xD9, 0x01, + 0x57, 0x62, 0x30, 0xBD, 0x69, 0xEF, 0x8F, 0x6A, 0xEA, 0xFE, 0xB2, 0xB0, + 0x92, 0x19, 0xFA, 0x8F, 0xAF, 0x83, 0x37, 0x68, 0x42, 0xB1, 0xB2, 0xAA, + 0x9E, 0xF6, 0x8D, 0x79, 0xDA, 0xAB, 0x89, 0xAF, 0x3F, 0xAB, 0xE4, 0x9A, + 0xCC, 0x27, 0x86, 0x38, 0x70, 0x73, 0x45, 0xBB, 0xF1, 0x53, 0x44, 0xED, + 0x79, 0xF7, 0xF4, 0x39, 0x0E, 0xF8, 0xAC, 0x50, 0x9B, 0x56, 0xF3, 0x9A, + 0x98, 0x56, 0x65, 0x27, 0xA4, 0x1D, 0x3C, 0xBD, 0x5E, 0x05, 0x58, 0xC1, + 0x59, 0x92, 0x7D, 0xB0, 0xE8, 0x84, 0x54, 0xA5, 0xD9, 0x64, 0x71, 0xFD, + 0xDC, 0xB5, 0x6D, 0x5B, 0xB0, 0x6B, 0xFA, 0x34, 0x0E, 0xA7, 0xA1, 0x51, + 0xEF, 0x1C, 0xA6, 0xFA, 0x57, 0x2B, 0x76, 0xF3, 0xB1, 0xB9, 0x5D, 0x8C, + 0x85, 0x83, 0xD3, 0xE4, 0x77, 0x05, 0x36, 0xB8, 0x4F, 0x01, 0x7E, 0x70, + 0xE6, 0xFB, 0xF1, 0x76, 0x60, 0x1A, 0x02, 0x66, 0x94, 0x1A, 0x17, 0xB0, + 0xC8, 0xB9, 0x7F, 0x4E, 0x74, 0xC2, 0xC1, 0xFF, 0xC7, 0x27, 0x89, 0x19, + 0x77, 0x79, 0x40, 0xC1, 0xE1, 0xFF, 0x1D, 0x8D, 0xA6, 0x37, 0xD6, 0xB9, + 0x9D, 0xDA, 0xFE, 0x5E, 0x17, 0x61, 0x10, 0x02, 0xE2, 0xC7, 0x78, 0xC1, + 0xBE, 0x8B, 0x41, 0xD9, 0x63, 0x79, 0xA5, 0x13, 0x60, 0xD9, 0x77, 0xFD, + 0x44, 0x35, 0xA1, 0x1C, 0x30, 0x8F, 0xE7, 0xEE, 0x6F, 0x1A, 0xAD, 0x9D, + 0xB2, 0x8C, 0x81, 0xAD, 0xDE, 0x1A, 0x7A, 0x6F, 0x7C, 0xCE, 0x01, 0x1C, + 0x30, 0xDA, 0x37, 0xE4, 0xEB, 0x73, 0x64, 0x83, 0xBD, 0x6C, 0x8E, 0x93, + 0x48, 0xFB, 0xFB, 0xF7, 0x2C, 0xC6, 0x58, 0x7D, 0x60, 0xC3, 0x6C, 0x8E, + 0x57, 0x7F, 0x09, 0x84, 0xC2, 0x89, 0xC9, 0x38, 0x5A, 0x09, 0x86, 0x49, + 0xDE, 0x21, 0xBC, 0xA2, 0x7A, 0x7E, 0xA2, 0x29, 0x71, 0x6B, 0xA6, 0xE9, + 0xB2, 0x79, 0x71, 0x0F, 0x38, 0xFA, 0xA5, 0xFF, 0xAE, 0x57, 0x41, 0x55, + 0xCE, 0x4E, 0xFB, 0x4F, 0x74, 0x36, 0x95, 0xE2, 0x91, 0x1B, 0x1D, 0x06, + 0xD5, 0xE2, 0x90, 0xCB, 0xCD, 0x86, 0xF5, 0x6D, 0x0E, 0xDF, 0xCD, 0x21, + 0x6A, 0xE2, 0x24, 0x27, 0x05, 0x5E, 0x68, 0x35, 0xFD, 0x29, 0xEE, 0xF7, + 0x9E, 0x0D, 0x90, 0x77, 0x1F, 0xEA, 0xCE, 0xBE, 0x12, 0xF2, 0x0E, 0x95, + 0xB3, 0x4F, 0x0F, 0x78, 0xB7, 0x37, 0xA9, 0x61, 0x8B, 0x26, 0xFA, 0x7D, + 0xBC, 0x98, 0x74, 0xF2, 0x72, 0xC4, 0x2B, 0xDB, 0x56, 0x3E, 0xAF, 0xA1, + 0x6B, 0x4F, 0xB6, 0x8C, 0x3B, 0xB1, 0xE7, 0x8E, 0xAA, 0x81, 0xA0, 0x02, + 0x43, 0xFA, 0xAD, 0xD2, 0xBF, 0x18, 0xE6, 0x3D, 0x38, 0x9A, 0xE4, 0x43, + 0x77, 0xDA, 0x18, 0xC5, 0x76, 0xB5, 0x0F, 0x00, 0x96, 0xCF, 0x34, 0x19, + 0x54, 0x83, 0xB0, 0x05, 0x48, 0xC0, 0x98, 0x62, 0x36, 0xE3, 0xBC, 0x7C, + 0xB8, 0xD6, 0x80, 0x1C, 0x04, 0x94, 0xCC, 0xD1, 0x99, 0xE5, 0xC5, 0xBD, + 0x0D, 0x0E, 0xDC, 0x9E, 0xB8, 0xA0, 0x00, 0x1E, 0x15, 0x27, 0x67, 0x54, + 0xFC, 0xC6, 0x85, 0x66, 0x05, 0x41, 0x48, 0xE6, 0xE7, 0x64, 0xBE, 0xE7, + 0xC7, 0x64, 0xDA, 0xAD, 0x3F, 0xC4, 0x52, 0x35, 0xA6, 0xDA, 0xD4, 0x28, + 0xFA, 0x20, 0xC1, 0x70, 0xE3, 0x45, 0x00, 0x3F, 0x2F, 0x06, 0xEC, 0x81, + 0x05, 0xFE, 0xB2, 0x5B, 0x22, 0x81, 0xB6, 0x3D, 0x27, 0x33, 0xBE, 0x96, + 0x1C, 0x29, 0x95, 0x1D, 0x11, 0xDD, 0x22, 0x21, 0x65, 0x7A, 0x9F, 0x53, + 0x1D, 0xDA, 0x2A, 0x19, 0x4D, 0xBB, 0x12, 0x64, 0x48, 0xBD, 0xEE, 0xB2, + 0x58, 0xE0, 0x7E, 0xA6, 0x59, 0xC7, 0x46, 0x19, 0xA6, 0x38, 0x0E, 0x1D, + 0x66, 0xD6, 0x83, 0x2B, 0xFE, 0x67, 0xF6, 0x38, 0xCD, 0x8F, 0xAE, 0x1F, + 0x27, 0x23, 0x02, 0x0F, 0x9C, 0x40, 0xA3, 0xFD, 0xA6, 0x7E, 0xDA, 0x3B, + 0xD2, 0x92, 0x38, 0xFB, 0xD4, 0xD4, 0xB4, 0x88, 0x5C, 0x2A, 0x99, 0x17, + 0x6D, 0xB1, 0xA0, 0x6C, 0x50, 0x07, 0x78, 0x49, 0x1A, 0x82, 0x88, 0xF1, + 0x85, 0x5F, 0x60, 0xFF, 0xFC, 0xF1, 0xD1, 0x37, 0x3F, 0xD9, 0x4F, 0xC6, + 0x0C, 0x18, 0x11, 0xE1, 0xAC, 0x3F, 0x1C, 0x6D, 0x00, 0x3B, 0xEC, 0xDA, + 0x3B, 0x1F, 0x27, 0x25, 0xCA, 0x59, 0x5D, 0xE0, 0xCA, 0x63, 0x32, 0x8F, + 0x3B, 0xE5, 0x7C, 0xC9, 0x77, 0x55, 0x60, 0x11, 0x95, 0x14, 0x0D, 0xFB, + 0x59, 0xD3, 0x9C, 0xE0, 0x91, 0x30, 0x8B, 0x41, 0x05, 0x74, 0x6D, 0xAC, + 0x23, 0xD3, 0x3E, 0x5F, 0x7C, 0xE4, 0x84, 0x8D, 0xA3, 0x16, 0xA9, 0xC6, + 0x6B, 0x95, 0x81, 0xBA, 0x35, 0x73, 0xBF, 0xAF, 0x31, 0x14, 0x96, 0x18, + 0x8A, 0xB1, 0x54, 0x23, 0x28, 0x2E, 0xE4, 0x16, 0xDC, 0x2A, 0x19, 0xC5, + 0x72, 0x4F, 0xA9, 0x1A, 0xE4, 0xAD, 0xC8, 0x8B, 0xC6, 0x67, 0x96, 0xEA, + 0xE5, 0x67, 0x7A, 0x01, 0xF6, 0x4E, 0x8C, 0x08, 0x63, 0x13, 0x95, 0x82, + 0x2D, 0x9D, 0xB8, 0xFC, 0xEE, 0x35, 0xC0, 0x6B, 0x1F, 0xEE, 0xA5, 0x47, + 0x4D, 0x6D, 0x8F, 0x34, 0xB1, 0x53, 0x4A, 0x93, 0x6A, 0x18, 0xB0, 0xE0, + 0xD2, 0x0E, 0xAB, 0x86, 0xBC, 0x9C, 0x6D, 0x6A, 0x52, 0x07, 0x19, 0x4E, + 0x68, 0x72, 0x07, 0x32, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; const gnutls_datum_t gnutls_ffdhe_6144_group_prime = { (void *)ffdhe_params_6144, sizeof(ffdhe_params_6144) }; -const gnutls_datum_t gnutls_ffdhe_6144_group_q = { - (void *)ffdhe_q_6144, sizeof(ffdhe_q_6144) -}; +const gnutls_datum_t gnutls_ffdhe_6144_group_q = { (void *)ffdhe_q_6144, + sizeof(ffdhe_q_6144) }; const gnutls_datum_t gnutls_ffdhe_6144_group_generator = { (void *)&ffdhe_generator, sizeof(ffdhe_generator) @@ -660,312 +426,189 @@ const gnutls_datum_t gnutls_ffdhe_6144_group_generator = { const unsigned int gnutls_ffdhe_6144_key_bits = 376; static const unsigned char ffdhe_params_8192[] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xAD, 0xF8, 0x54, 0x58, 0xA2, 0xBB, - 0x4A, 0x9A, 0xAF, 0xDC, 0x56, 0x20, 0x27, - 0x3D, 0x3C, 0xF1, 0xD8, 0xB9, 0xC5, 0x83, - 0xCE, 0x2D, 0x36, 0x95, 0xA9, 0xE1, 0x36, - 0x41, 0x14, 0x64, 0x33, 0xFB, 0xCC, 0x93, - 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9, 0x7D, - 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8, - 0xF6, 0x81, 0xB2, 0x02, 0xAE, 0xC4, 0x61, - 0x7A, 0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, - 0x65, 0x61, 0x24, 0x33, 0xF5, 0x1F, 0x5F, - 0x06, 0x6E, 0xD0, 0x85, 0x63, 0x65, 0x55, - 0x3D, 0xED, 0x1A, 0xF3, 0xB5, 0x57, 0x13, - 0x5E, 0x7F, 0x57, 0xC9, 0x35, 0x98, 0x4F, - 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77, 0xE2, - 0xA6, 0x89, 0xDA, 0xF3, 0xEF, 0xE8, 0x72, - 0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, - 0x35, 0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, - 0x79, 0x7A, 0xBC, 0x0A, 0xB1, 0x82, 0xB3, - 0x24, 0xFB, 0x61, 0xD1, 0x08, 0xA9, 0x4B, - 0xB2, 0xC8, 0xE3, 0xFB, 0xB9, 0x6A, 0xDA, - 0xB7, 0x60, 0xD7, 0xF4, 0x68, 0x1D, 0x4F, - 0x42, 0xA3, 0xDE, 0x39, 0x4D, 0xF4, 0xAE, - 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19, - 0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, - 0x70, 0x9E, 0x02, 0xFC, 0xE1, 0xCD, 0xF7, - 0xE2, 0xEC, 0xC0, 0x34, 0x04, 0xCD, 0x28, - 0x34, 0x2F, 0x61, 0x91, 0x72, 0xFE, 0x9C, - 0xE9, 0x85, 0x83, 0xFF, 0x8E, 0x4F, 0x12, - 0x32, 0xEE, 0xF2, 0x81, 0x83, 0xC3, 0xFE, - 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73, 0x3B, - 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05, - 0xC5, 0x8E, 0xF1, 0x83, 0x7D, 0x16, 0x83, - 0xB2, 0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, - 0xEF, 0xFA, 0x88, 0x6B, 0x42, 0x38, 0x61, - 0x1F, 0xCF, 0xDC, 0xDE, 0x35, 0x5B, 0x3B, - 0x65, 0x19, 0x03, 0x5B, 0xBC, 0x34, 0xF4, - 0xDE, 0xF9, 0x9C, 0x02, 0x38, 0x61, 0xB4, - 0x6F, 0xC9, 0xD6, 0xE6, 0xC9, 0x07, 0x7A, - 0xD9, 0x1D, 0x26, 0x91, 0xF7, 0xF7, 0xEE, - 0x59, 0x8C, 0xB0, 0xFA, 0xC1, 0x86, 0xD9, - 0x1C, 0xAE, 0xFE, 0x13, 0x09, 0x85, 0x13, - 0x92, 0x70, 0xB4, 0x13, 0x0C, 0x93, 0xBC, - 0x43, 0x79, 0x44, 0xF4, 0xFD, 0x44, 0x52, - 0xE2, 0xD7, 0x4D, 0xD3, 0x64, 0xF2, 0xE2, - 0x1E, 0x71, 0xF5, 0x4B, 0xFF, 0x5C, 0xAE, - 0x82, 0xAB, 0x9C, 0x9D, 0xF6, 0x9E, 0xE8, - 0x6D, 0x2B, 0xC5, 0x22, 0x36, 0x3A, 0x0D, - 0xAB, 0xC5, 0x21, 0x97, 0x9B, 0x0D, 0xEA, - 0xDA, 0x1D, 0xBF, 0x9A, 0x42, 0xD5, 0xC4, - 0x48, 0x4E, 0x0A, 0xBC, 0xD0, 0x6B, 0xFA, - 0x53, 0xDD, 0xEF, 0x3C, 0x1B, 0x20, 0xEE, - 0x3F, 0xD5, 0x9D, 0x7C, 0x25, 0xE4, 0x1D, - 0x2B, 0x66, 0x9E, 0x1E, 0xF1, 0x6E, 0x6F, - 0x52, 0xC3, 0x16, 0x4D, 0xF4, 0xFB, 0x79, - 0x30, 0xE9, 0xE4, 0xE5, 0x88, 0x57, 0xB6, - 0xAC, 0x7D, 0x5F, 0x42, 0xD6, 0x9F, 0x6D, - 0x18, 0x77, 0x63, 0xCF, 0x1D, 0x55, 0x03, - 0x40, 0x04, 0x87, 0xF5, 0x5B, 0xA5, 0x7E, - 0x31, 0xCC, 0x7A, 0x71, 0x35, 0xC8, 0x86, - 0xEF, 0xB4, 0x31, 0x8A, 0xED, 0x6A, 0x1E, - 0x01, 0x2D, 0x9E, 0x68, 0x32, 0xA9, 0x07, - 0x60, 0x0A, 0x91, 0x81, 0x30, 0xC4, 0x6D, - 0xC7, 0x78, 0xF9, 0x71, 0xAD, 0x00, 0x38, - 0x09, 0x29, 0x99, 0xA3, 0x33, 0xCB, 0x8B, - 0x7A, 0x1A, 0x1D, 0xB9, 0x3D, 0x71, 0x40, - 0x00, 0x3C, 0x2A, 0x4E, 0xCE, 0xA9, 0xF9, - 0x8D, 0x0A, 0xCC, 0x0A, 0x82, 0x91, 0xCD, - 0xCE, 0xC9, 0x7D, 0xCF, 0x8E, 0xC9, 0xB5, - 0x5A, 0x7F, 0x88, 0xA4, 0x6B, 0x4D, 0xB5, - 0xA8, 0x51, 0xF4, 0x41, 0x82, 0xE1, 0xC6, - 0x8A, 0x00, 0x7E, 0x5E, 0x0D, 0xD9, 0x02, - 0x0B, 0xFD, 0x64, 0xB6, 0x45, 0x03, 0x6C, - 0x7A, 0x4E, 0x67, 0x7D, 0x2C, 0x38, 0x53, - 0x2A, 0x3A, 0x23, 0xBA, 0x44, 0x42, 0xCA, - 0xF5, 0x3E, 0xA6, 0x3B, 0xB4, 0x54, 0x32, - 0x9B, 0x76, 0x24, 0xC8, 0x91, 0x7B, 0xDD, - 0x64, 0xB1, 0xC0, 0xFD, 0x4C, 0xB3, 0x8E, - 0x8C, 0x33, 0x4C, 0x70, 0x1C, 0x3A, 0xCD, - 0xAD, 0x06, 0x57, 0xFC, 0xCF, 0xEC, 0x71, - 0x9B, 0x1F, 0x5C, 0x3E, 0x4E, 0x46, 0x04, - 0x1F, 0x38, 0x81, 0x47, 0xFB, 0x4C, 0xFD, - 0xB4, 0x77, 0xA5, 0x24, 0x71, 0xF7, 0xA9, - 0xA9, 0x69, 0x10, 0xB8, 0x55, 0x32, 0x2E, - 0xDB, 0x63, 0x40, 0xD8, 0xA0, 0x0E, 0xF0, - 0x92, 0x35, 0x05, 0x11, 0xE3, 0x0A, 0xBE, - 0xC1, 0xFF, 0xF9, 0xE3, 0xA2, 0x6E, 0x7F, - 0xB2, 0x9F, 0x8C, 0x18, 0x30, 0x23, 0xC3, - 0x58, 0x7E, 0x38, 0xDA, 0x00, 0x77, 0xD9, - 0xB4, 0x76, 0x3E, 0x4E, 0x4B, 0x94, 0xB2, - 0xBB, 0xC1, 0x94, 0xC6, 0x65, 0x1E, 0x77, - 0xCA, 0xF9, 0x92, 0xEE, 0xAA, 0xC0, 0x23, - 0x2A, 0x28, 0x1B, 0xF6, 0xB3, 0xA7, 0x39, - 0xC1, 0x22, 0x61, 0x16, 0x82, 0x0A, 0xE8, - 0xDB, 0x58, 0x47, 0xA6, 0x7C, 0xBE, 0xF9, - 0xC9, 0x09, 0x1B, 0x46, 0x2D, 0x53, 0x8C, - 0xD7, 0x2B, 0x03, 0x74, 0x6A, 0xE7, 0x7F, - 0x5E, 0x62, 0x29, 0x2C, 0x31, 0x15, 0x62, - 0xA8, 0x46, 0x50, 0x5D, 0xC8, 0x2D, 0xB8, - 0x54, 0x33, 0x8A, 0xE4, 0x9F, 0x52, 0x35, - 0xC9, 0x5B, 0x91, 0x17, 0x8C, 0xCF, 0x2D, - 0xD5, 0xCA, 0xCE, 0xF4, 0x03, 0xEC, 0x9D, - 0x18, 0x10, 0xC6, 0x27, 0x2B, 0x04, 0x5B, - 0x3B, 0x71, 0xF9, 0xDC, 0x6B, 0x80, 0xD6, - 0x3F, 0xDD, 0x4A, 0x8E, 0x9A, 0xDB, 0x1E, - 0x69, 0x62, 0xA6, 0x95, 0x26, 0xD4, 0x31, - 0x61, 0xC1, 0xA4, 0x1D, 0x57, 0x0D, 0x79, - 0x38, 0xDA, 0xD4, 0xA4, 0x0E, 0x32, 0x9C, - 0xCF, 0xF4, 0x6A, 0xAA, 0x36, 0xAD, 0x00, - 0x4C, 0xF6, 0x00, 0xC8, 0x38, 0x1E, 0x42, - 0x5A, 0x31, 0xD9, 0x51, 0xAE, 0x64, 0xFD, - 0xB2, 0x3F, 0xCE, 0xC9, 0x50, 0x9D, 0x43, - 0x68, 0x7F, 0xEB, 0x69, 0xED, 0xD1, 0xCC, - 0x5E, 0x0B, 0x8C, 0xC3, 0xBD, 0xF6, 0x4B, - 0x10, 0xEF, 0x86, 0xB6, 0x31, 0x42, 0xA3, - 0xAB, 0x88, 0x29, 0x55, 0x5B, 0x2F, 0x74, - 0x7C, 0x93, 0x26, 0x65, 0xCB, 0x2C, 0x0F, - 0x1C, 0xC0, 0x1B, 0xD7, 0x02, 0x29, 0x38, - 0x88, 0x39, 0xD2, 0xAF, 0x05, 0xE4, 0x54, - 0x50, 0x4A, 0xC7, 0x8B, 0x75, 0x82, 0x82, - 0x28, 0x46, 0xC0, 0xBA, 0x35, 0xC3, 0x5F, - 0x5C, 0x59, 0x16, 0x0C, 0xC0, 0x46, 0xFD, - 0x82, 0x51, 0x54, 0x1F, 0xC6, 0x8C, 0x9C, - 0x86, 0xB0, 0x22, 0xBB, 0x70, 0x99, 0x87, - 0x6A, 0x46, 0x0E, 0x74, 0x51, 0xA8, 0xA9, - 0x31, 0x09, 0x70, 0x3F, 0xEE, 0x1C, 0x21, - 0x7E, 0x6C, 0x38, 0x26, 0xE5, 0x2C, 0x51, - 0xAA, 0x69, 0x1E, 0x0E, 0x42, 0x3C, 0xFC, - 0x99, 0xE9, 0xE3, 0x16, 0x50, 0xC1, 0x21, - 0x7B, 0x62, 0x48, 0x16, 0xCD, 0xAD, 0x9A, - 0x95, 0xF9, 0xD5, 0xB8, 0x01, 0x94, 0x88, - 0xD9, 0xC0, 0xA0, 0xA1, 0xFE, 0x30, 0x75, - 0xA5, 0x77, 0xE2, 0x31, 0x83, 0xF8, 0x1D, - 0x4A, 0x3F, 0x2F, 0xA4, 0x57, 0x1E, 0xFC, - 0x8C, 0xE0, 0xBA, 0x8A, 0x4F, 0xE8, 0xB6, - 0x85, 0x5D, 0xFE, 0x72, 0xB0, 0xA6, 0x6E, - 0xDE, 0xD2, 0xFB, 0xAB, 0xFB, 0xE5, 0x8A, - 0x30, 0xFA, 0xFA, 0xBE, 0x1C, 0x5D, 0x71, - 0xA8, 0x7E, 0x2F, 0x74, 0x1E, 0xF8, 0xC1, - 0xFE, 0x86, 0xFE, 0xA6, 0xBB, 0xFD, 0xE5, - 0x30, 0x67, 0x7F, 0x0D, 0x97, 0xD1, 0x1D, - 0x49, 0xF7, 0xA8, 0x44, 0x3D, 0x08, 0x22, - 0xE5, 0x06, 0xA9, 0xF4, 0x61, 0x4E, 0x01, - 0x1E, 0x2A, 0x94, 0x83, 0x8F, 0xF8, 0x8C, - 0xD6, 0x8C, 0x8B, 0xB7, 0xC5, 0xC6, 0x42, - 0x4C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xF8, 0x54, 0x58, + 0xA2, 0xBB, 0x4A, 0x9A, 0xAF, 0xDC, 0x56, 0x20, 0x27, 0x3D, 0x3C, 0xF1, + 0xD8, 0xB9, 0xC5, 0x83, 0xCE, 0x2D, 0x36, 0x95, 0xA9, 0xE1, 0x36, 0x41, + 0x14, 0x64, 0x33, 0xFB, 0xCC, 0x93, 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9, + 0x7D, 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8, 0xF6, 0x81, 0xB2, 0x02, + 0xAE, 0xC4, 0x61, 0x7A, 0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, 0x65, 0x61, + 0x24, 0x33, 0xF5, 0x1F, 0x5F, 0x06, 0x6E, 0xD0, 0x85, 0x63, 0x65, 0x55, + 0x3D, 0xED, 0x1A, 0xF3, 0xB5, 0x57, 0x13, 0x5E, 0x7F, 0x57, 0xC9, 0x35, + 0x98, 0x4F, 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77, 0xE2, 0xA6, 0x89, 0xDA, + 0xF3, 0xEF, 0xE8, 0x72, 0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, 0x35, + 0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, 0x79, 0x7A, 0xBC, 0x0A, 0xB1, 0x82, + 0xB3, 0x24, 0xFB, 0x61, 0xD1, 0x08, 0xA9, 0x4B, 0xB2, 0xC8, 0xE3, 0xFB, + 0xB9, 0x6A, 0xDA, 0xB7, 0x60, 0xD7, 0xF4, 0x68, 0x1D, 0x4F, 0x42, 0xA3, + 0xDE, 0x39, 0x4D, 0xF4, 0xAE, 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19, + 0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, 0x70, 0x9E, 0x02, 0xFC, 0xE1, + 0xCD, 0xF7, 0xE2, 0xEC, 0xC0, 0x34, 0x04, 0xCD, 0x28, 0x34, 0x2F, 0x61, + 0x91, 0x72, 0xFE, 0x9C, 0xE9, 0x85, 0x83, 0xFF, 0x8E, 0x4F, 0x12, 0x32, + 0xEE, 0xF2, 0x81, 0x83, 0xC3, 0xFE, 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73, + 0x3B, 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05, 0xC5, 0x8E, 0xF1, 0x83, + 0x7D, 0x16, 0x83, 0xB2, 0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, 0xEF, 0xFA, + 0x88, 0x6B, 0x42, 0x38, 0x61, 0x1F, 0xCF, 0xDC, 0xDE, 0x35, 0x5B, 0x3B, + 0x65, 0x19, 0x03, 0x5B, 0xBC, 0x34, 0xF4, 0xDE, 0xF9, 0x9C, 0x02, 0x38, + 0x61, 0xB4, 0x6F, 0xC9, 0xD6, 0xE6, 0xC9, 0x07, 0x7A, 0xD9, 0x1D, 0x26, + 0x91, 0xF7, 0xF7, 0xEE, 0x59, 0x8C, 0xB0, 0xFA, 0xC1, 0x86, 0xD9, 0x1C, + 0xAE, 0xFE, 0x13, 0x09, 0x85, 0x13, 0x92, 0x70, 0xB4, 0x13, 0x0C, 0x93, + 0xBC, 0x43, 0x79, 0x44, 0xF4, 0xFD, 0x44, 0x52, 0xE2, 0xD7, 0x4D, 0xD3, + 0x64, 0xF2, 0xE2, 0x1E, 0x71, 0xF5, 0x4B, 0xFF, 0x5C, 0xAE, 0x82, 0xAB, + 0x9C, 0x9D, 0xF6, 0x9E, 0xE8, 0x6D, 0x2B, 0xC5, 0x22, 0x36, 0x3A, 0x0D, + 0xAB, 0xC5, 0x21, 0x97, 0x9B, 0x0D, 0xEA, 0xDA, 0x1D, 0xBF, 0x9A, 0x42, + 0xD5, 0xC4, 0x48, 0x4E, 0x0A, 0xBC, 0xD0, 0x6B, 0xFA, 0x53, 0xDD, 0xEF, + 0x3C, 0x1B, 0x20, 0xEE, 0x3F, 0xD5, 0x9D, 0x7C, 0x25, 0xE4, 0x1D, 0x2B, + 0x66, 0x9E, 0x1E, 0xF1, 0x6E, 0x6F, 0x52, 0xC3, 0x16, 0x4D, 0xF4, 0xFB, + 0x79, 0x30, 0xE9, 0xE4, 0xE5, 0x88, 0x57, 0xB6, 0xAC, 0x7D, 0x5F, 0x42, + 0xD6, 0x9F, 0x6D, 0x18, 0x77, 0x63, 0xCF, 0x1D, 0x55, 0x03, 0x40, 0x04, + 0x87, 0xF5, 0x5B, 0xA5, 0x7E, 0x31, 0xCC, 0x7A, 0x71, 0x35, 0xC8, 0x86, + 0xEF, 0xB4, 0x31, 0x8A, 0xED, 0x6A, 0x1E, 0x01, 0x2D, 0x9E, 0x68, 0x32, + 0xA9, 0x07, 0x60, 0x0A, 0x91, 0x81, 0x30, 0xC4, 0x6D, 0xC7, 0x78, 0xF9, + 0x71, 0xAD, 0x00, 0x38, 0x09, 0x29, 0x99, 0xA3, 0x33, 0xCB, 0x8B, 0x7A, + 0x1A, 0x1D, 0xB9, 0x3D, 0x71, 0x40, 0x00, 0x3C, 0x2A, 0x4E, 0xCE, 0xA9, + 0xF9, 0x8D, 0x0A, 0xCC, 0x0A, 0x82, 0x91, 0xCD, 0xCE, 0xC9, 0x7D, 0xCF, + 0x8E, 0xC9, 0xB5, 0x5A, 0x7F, 0x88, 0xA4, 0x6B, 0x4D, 0xB5, 0xA8, 0x51, + 0xF4, 0x41, 0x82, 0xE1, 0xC6, 0x8A, 0x00, 0x7E, 0x5E, 0x0D, 0xD9, 0x02, + 0x0B, 0xFD, 0x64, 0xB6, 0x45, 0x03, 0x6C, 0x7A, 0x4E, 0x67, 0x7D, 0x2C, + 0x38, 0x53, 0x2A, 0x3A, 0x23, 0xBA, 0x44, 0x42, 0xCA, 0xF5, 0x3E, 0xA6, + 0x3B, 0xB4, 0x54, 0x32, 0x9B, 0x76, 0x24, 0xC8, 0x91, 0x7B, 0xDD, 0x64, + 0xB1, 0xC0, 0xFD, 0x4C, 0xB3, 0x8E, 0x8C, 0x33, 0x4C, 0x70, 0x1C, 0x3A, + 0xCD, 0xAD, 0x06, 0x57, 0xFC, 0xCF, 0xEC, 0x71, 0x9B, 0x1F, 0x5C, 0x3E, + 0x4E, 0x46, 0x04, 0x1F, 0x38, 0x81, 0x47, 0xFB, 0x4C, 0xFD, 0xB4, 0x77, + 0xA5, 0x24, 0x71, 0xF7, 0xA9, 0xA9, 0x69, 0x10, 0xB8, 0x55, 0x32, 0x2E, + 0xDB, 0x63, 0x40, 0xD8, 0xA0, 0x0E, 0xF0, 0x92, 0x35, 0x05, 0x11, 0xE3, + 0x0A, 0xBE, 0xC1, 0xFF, 0xF9, 0xE3, 0xA2, 0x6E, 0x7F, 0xB2, 0x9F, 0x8C, + 0x18, 0x30, 0x23, 0xC3, 0x58, 0x7E, 0x38, 0xDA, 0x00, 0x77, 0xD9, 0xB4, + 0x76, 0x3E, 0x4E, 0x4B, 0x94, 0xB2, 0xBB, 0xC1, 0x94, 0xC6, 0x65, 0x1E, + 0x77, 0xCA, 0xF9, 0x92, 0xEE, 0xAA, 0xC0, 0x23, 0x2A, 0x28, 0x1B, 0xF6, + 0xB3, 0xA7, 0x39, 0xC1, 0x22, 0x61, 0x16, 0x82, 0x0A, 0xE8, 0xDB, 0x58, + 0x47, 0xA6, 0x7C, 0xBE, 0xF9, 0xC9, 0x09, 0x1B, 0x46, 0x2D, 0x53, 0x8C, + 0xD7, 0x2B, 0x03, 0x74, 0x6A, 0xE7, 0x7F, 0x5E, 0x62, 0x29, 0x2C, 0x31, + 0x15, 0x62, 0xA8, 0x46, 0x50, 0x5D, 0xC8, 0x2D, 0xB8, 0x54, 0x33, 0x8A, + 0xE4, 0x9F, 0x52, 0x35, 0xC9, 0x5B, 0x91, 0x17, 0x8C, 0xCF, 0x2D, 0xD5, + 0xCA, 0xCE, 0xF4, 0x03, 0xEC, 0x9D, 0x18, 0x10, 0xC6, 0x27, 0x2B, 0x04, + 0x5B, 0x3B, 0x71, 0xF9, 0xDC, 0x6B, 0x80, 0xD6, 0x3F, 0xDD, 0x4A, 0x8E, + 0x9A, 0xDB, 0x1E, 0x69, 0x62, 0xA6, 0x95, 0x26, 0xD4, 0x31, 0x61, 0xC1, + 0xA4, 0x1D, 0x57, 0x0D, 0x79, 0x38, 0xDA, 0xD4, 0xA4, 0x0E, 0x32, 0x9C, + 0xCF, 0xF4, 0x6A, 0xAA, 0x36, 0xAD, 0x00, 0x4C, 0xF6, 0x00, 0xC8, 0x38, + 0x1E, 0x42, 0x5A, 0x31, 0xD9, 0x51, 0xAE, 0x64, 0xFD, 0xB2, 0x3F, 0xCE, + 0xC9, 0x50, 0x9D, 0x43, 0x68, 0x7F, 0xEB, 0x69, 0xED, 0xD1, 0xCC, 0x5E, + 0x0B, 0x8C, 0xC3, 0xBD, 0xF6, 0x4B, 0x10, 0xEF, 0x86, 0xB6, 0x31, 0x42, + 0xA3, 0xAB, 0x88, 0x29, 0x55, 0x5B, 0x2F, 0x74, 0x7C, 0x93, 0x26, 0x65, + 0xCB, 0x2C, 0x0F, 0x1C, 0xC0, 0x1B, 0xD7, 0x02, 0x29, 0x38, 0x88, 0x39, + 0xD2, 0xAF, 0x05, 0xE4, 0x54, 0x50, 0x4A, 0xC7, 0x8B, 0x75, 0x82, 0x82, + 0x28, 0x46, 0xC0, 0xBA, 0x35, 0xC3, 0x5F, 0x5C, 0x59, 0x16, 0x0C, 0xC0, + 0x46, 0xFD, 0x82, 0x51, 0x54, 0x1F, 0xC6, 0x8C, 0x9C, 0x86, 0xB0, 0x22, + 0xBB, 0x70, 0x99, 0x87, 0x6A, 0x46, 0x0E, 0x74, 0x51, 0xA8, 0xA9, 0x31, + 0x09, 0x70, 0x3F, 0xEE, 0x1C, 0x21, 0x7E, 0x6C, 0x38, 0x26, 0xE5, 0x2C, + 0x51, 0xAA, 0x69, 0x1E, 0x0E, 0x42, 0x3C, 0xFC, 0x99, 0xE9, 0xE3, 0x16, + 0x50, 0xC1, 0x21, 0x7B, 0x62, 0x48, 0x16, 0xCD, 0xAD, 0x9A, 0x95, 0xF9, + 0xD5, 0xB8, 0x01, 0x94, 0x88, 0xD9, 0xC0, 0xA0, 0xA1, 0xFE, 0x30, 0x75, + 0xA5, 0x77, 0xE2, 0x31, 0x83, 0xF8, 0x1D, 0x4A, 0x3F, 0x2F, 0xA4, 0x57, + 0x1E, 0xFC, 0x8C, 0xE0, 0xBA, 0x8A, 0x4F, 0xE8, 0xB6, 0x85, 0x5D, 0xFE, + 0x72, 0xB0, 0xA6, 0x6E, 0xDE, 0xD2, 0xFB, 0xAB, 0xFB, 0xE5, 0x8A, 0x30, + 0xFA, 0xFA, 0xBE, 0x1C, 0x5D, 0x71, 0xA8, 0x7E, 0x2F, 0x74, 0x1E, 0xF8, + 0xC1, 0xFE, 0x86, 0xFE, 0xA6, 0xBB, 0xFD, 0xE5, 0x30, 0x67, 0x7F, 0x0D, + 0x97, 0xD1, 0x1D, 0x49, 0xF7, 0xA8, 0x44, 0x3D, 0x08, 0x22, 0xE5, 0x06, + 0xA9, 0xF4, 0x61, 0x4E, 0x01, 0x1E, 0x2A, 0x94, 0x83, 0x8F, 0xF8, 0x8C, + 0xD6, 0x8C, 0x8B, 0xB7, 0xC5, 0xC6, 0x42, 0x4C, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF }; static const unsigned char ffdhe_q_8192[] = { - 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xD6, 0xFC, 0x2A, 0x2C, 0x51, 0x5D, - 0xA5, 0x4D, 0x57, 0xEE, 0x2B, 0x10, 0x13, - 0x9E, 0x9E, 0x78, 0xEC, 0x5C, 0xE2, 0xC1, - 0xE7, 0x16, 0x9B, 0x4A, 0xD4, 0xF0, 0x9B, - 0x20, 0x8A, 0x32, 0x19, 0xFD, 0xE6, 0x49, - 0xCE, 0xE7, 0x12, 0x4D, 0x9F, 0x7C, 0xBE, - 0x97, 0xF1, 0xB1, 0xB1, 0x86, 0x3A, 0xEC, - 0x7B, 0x40, 0xD9, 0x01, 0x57, 0x62, 0x30, - 0xBD, 0x69, 0xEF, 0x8F, 0x6A, 0xEA, 0xFE, - 0xB2, 0xB0, 0x92, 0x19, 0xFA, 0x8F, 0xAF, - 0x83, 0x37, 0x68, 0x42, 0xB1, 0xB2, 0xAA, - 0x9E, 0xF6, 0x8D, 0x79, 0xDA, 0xAB, 0x89, - 0xAF, 0x3F, 0xAB, 0xE4, 0x9A, 0xCC, 0x27, - 0x86, 0x38, 0x70, 0x73, 0x45, 0xBB, 0xF1, - 0x53, 0x44, 0xED, 0x79, 0xF7, 0xF4, 0x39, - 0x0E, 0xF8, 0xAC, 0x50, 0x9B, 0x56, 0xF3, - 0x9A, 0x98, 0x56, 0x65, 0x27, 0xA4, 0x1D, - 0x3C, 0xBD, 0x5E, 0x05, 0x58, 0xC1, 0x59, - 0x92, 0x7D, 0xB0, 0xE8, 0x84, 0x54, 0xA5, - 0xD9, 0x64, 0x71, 0xFD, 0xDC, 0xB5, 0x6D, - 0x5B, 0xB0, 0x6B, 0xFA, 0x34, 0x0E, 0xA7, - 0xA1, 0x51, 0xEF, 0x1C, 0xA6, 0xFA, 0x57, - 0x2B, 0x76, 0xF3, 0xB1, 0xB9, 0x5D, 0x8C, - 0x85, 0x83, 0xD3, 0xE4, 0x77, 0x05, 0x36, - 0xB8, 0x4F, 0x01, 0x7E, 0x70, 0xE6, 0xFB, - 0xF1, 0x76, 0x60, 0x1A, 0x02, 0x66, 0x94, - 0x1A, 0x17, 0xB0, 0xC8, 0xB9, 0x7F, 0x4E, - 0x74, 0xC2, 0xC1, 0xFF, 0xC7, 0x27, 0x89, - 0x19, 0x77, 0x79, 0x40, 0xC1, 0xE1, 0xFF, - 0x1D, 0x8D, 0xA6, 0x37, 0xD6, 0xB9, 0x9D, - 0xDA, 0xFE, 0x5E, 0x17, 0x61, 0x10, 0x02, - 0xE2, 0xC7, 0x78, 0xC1, 0xBE, 0x8B, 0x41, - 0xD9, 0x63, 0x79, 0xA5, 0x13, 0x60, 0xD9, - 0x77, 0xFD, 0x44, 0x35, 0xA1, 0x1C, 0x30, - 0x8F, 0xE7, 0xEE, 0x6F, 0x1A, 0xAD, 0x9D, - 0xB2, 0x8C, 0x81, 0xAD, 0xDE, 0x1A, 0x7A, - 0x6F, 0x7C, 0xCE, 0x01, 0x1C, 0x30, 0xDA, - 0x37, 0xE4, 0xEB, 0x73, 0x64, 0x83, 0xBD, - 0x6C, 0x8E, 0x93, 0x48, 0xFB, 0xFB, 0xF7, - 0x2C, 0xC6, 0x58, 0x7D, 0x60, 0xC3, 0x6C, - 0x8E, 0x57, 0x7F, 0x09, 0x84, 0xC2, 0x89, - 0xC9, 0x38, 0x5A, 0x09, 0x86, 0x49, 0xDE, - 0x21, 0xBC, 0xA2, 0x7A, 0x7E, 0xA2, 0x29, - 0x71, 0x6B, 0xA6, 0xE9, 0xB2, 0x79, 0x71, - 0x0F, 0x38, 0xFA, 0xA5, 0xFF, 0xAE, 0x57, - 0x41, 0x55, 0xCE, 0x4E, 0xFB, 0x4F, 0x74, - 0x36, 0x95, 0xE2, 0x91, 0x1B, 0x1D, 0x06, - 0xD5, 0xE2, 0x90, 0xCB, 0xCD, 0x86, 0xF5, - 0x6D, 0x0E, 0xDF, 0xCD, 0x21, 0x6A, 0xE2, - 0x24, 0x27, 0x05, 0x5E, 0x68, 0x35, 0xFD, - 0x29, 0xEE, 0xF7, 0x9E, 0x0D, 0x90, 0x77, - 0x1F, 0xEA, 0xCE, 0xBE, 0x12, 0xF2, 0x0E, - 0x95, 0xB3, 0x4F, 0x0F, 0x78, 0xB7, 0x37, - 0xA9, 0x61, 0x8B, 0x26, 0xFA, 0x7D, 0xBC, - 0x98, 0x74, 0xF2, 0x72, 0xC4, 0x2B, 0xDB, - 0x56, 0x3E, 0xAF, 0xA1, 0x6B, 0x4F, 0xB6, - 0x8C, 0x3B, 0xB1, 0xE7, 0x8E, 0xAA, 0x81, - 0xA0, 0x02, 0x43, 0xFA, 0xAD, 0xD2, 0xBF, - 0x18, 0xE6, 0x3D, 0x38, 0x9A, 0xE4, 0x43, - 0x77, 0xDA, 0x18, 0xC5, 0x76, 0xB5, 0x0F, - 0x00, 0x96, 0xCF, 0x34, 0x19, 0x54, 0x83, - 0xB0, 0x05, 0x48, 0xC0, 0x98, 0x62, 0x36, - 0xE3, 0xBC, 0x7C, 0xB8, 0xD6, 0x80, 0x1C, - 0x04, 0x94, 0xCC, 0xD1, 0x99, 0xE5, 0xC5, - 0xBD, 0x0D, 0x0E, 0xDC, 0x9E, 0xB8, 0xA0, - 0x00, 0x1E, 0x15, 0x27, 0x67, 0x54, 0xFC, - 0xC6, 0x85, 0x66, 0x05, 0x41, 0x48, 0xE6, - 0xE7, 0x64, 0xBE, 0xE7, 0xC7, 0x64, 0xDA, - 0xAD, 0x3F, 0xC4, 0x52, 0x35, 0xA6, 0xDA, - 0xD4, 0x28, 0xFA, 0x20, 0xC1, 0x70, 0xE3, - 0x45, 0x00, 0x3F, 0x2F, 0x06, 0xEC, 0x81, - 0x05, 0xFE, 0xB2, 0x5B, 0x22, 0x81, 0xB6, - 0x3D, 0x27, 0x33, 0xBE, 0x96, 0x1C, 0x29, - 0x95, 0x1D, 0x11, 0xDD, 0x22, 0x21, 0x65, - 0x7A, 0x9F, 0x53, 0x1D, 0xDA, 0x2A, 0x19, - 0x4D, 0xBB, 0x12, 0x64, 0x48, 0xBD, 0xEE, - 0xB2, 0x58, 0xE0, 0x7E, 0xA6, 0x59, 0xC7, - 0x46, 0x19, 0xA6, 0x38, 0x0E, 0x1D, 0x66, - 0xD6, 0x83, 0x2B, 0xFE, 0x67, 0xF6, 0x38, - 0xCD, 0x8F, 0xAE, 0x1F, 0x27, 0x23, 0x02, - 0x0F, 0x9C, 0x40, 0xA3, 0xFD, 0xA6, 0x7E, - 0xDA, 0x3B, 0xD2, 0x92, 0x38, 0xFB, 0xD4, - 0xD4, 0xB4, 0x88, 0x5C, 0x2A, 0x99, 0x17, - 0x6D, 0xB1, 0xA0, 0x6C, 0x50, 0x07, 0x78, - 0x49, 0x1A, 0x82, 0x88, 0xF1, 0x85, 0x5F, - 0x60, 0xFF, 0xFC, 0xF1, 0xD1, 0x37, 0x3F, - 0xD9, 0x4F, 0xC6, 0x0C, 0x18, 0x11, 0xE1, - 0xAC, 0x3F, 0x1C, 0x6D, 0x00, 0x3B, 0xEC, - 0xDA, 0x3B, 0x1F, 0x27, 0x25, 0xCA, 0x59, - 0x5D, 0xE0, 0xCA, 0x63, 0x32, 0x8F, 0x3B, - 0xE5, 0x7C, 0xC9, 0x77, 0x55, 0x60, 0x11, - 0x95, 0x14, 0x0D, 0xFB, 0x59, 0xD3, 0x9C, - 0xE0, 0x91, 0x30, 0x8B, 0x41, 0x05, 0x74, - 0x6D, 0xAC, 0x23, 0xD3, 0x3E, 0x5F, 0x7C, - 0xE4, 0x84, 0x8D, 0xA3, 0x16, 0xA9, 0xC6, - 0x6B, 0x95, 0x81, 0xBA, 0x35, 0x73, 0xBF, - 0xAF, 0x31, 0x14, 0x96, 0x18, 0x8A, 0xB1, - 0x54, 0x23, 0x28, 0x2E, 0xE4, 0x16, 0xDC, - 0x2A, 0x19, 0xC5, 0x72, 0x4F, 0xA9, 0x1A, - 0xE4, 0xAD, 0xC8, 0x8B, 0xC6, 0x67, 0x96, - 0xEA, 0xE5, 0x67, 0x7A, 0x01, 0xF6, 0x4E, - 0x8C, 0x08, 0x63, 0x13, 0x95, 0x82, 0x2D, - 0x9D, 0xB8, 0xFC, 0xEE, 0x35, 0xC0, 0x6B, - 0x1F, 0xEE, 0xA5, 0x47, 0x4D, 0x6D, 0x8F, - 0x34, 0xB1, 0x53, 0x4A, 0x93, 0x6A, 0x18, - 0xB0, 0xE0, 0xD2, 0x0E, 0xAB, 0x86, 0xBC, - 0x9C, 0x6D, 0x6A, 0x52, 0x07, 0x19, 0x4E, - 0x67, 0xFA, 0x35, 0x55, 0x1B, 0x56, 0x80, - 0x26, 0x7B, 0x00, 0x64, 0x1C, 0x0F, 0x21, - 0x2D, 0x18, 0xEC, 0xA8, 0xD7, 0x32, 0x7E, - 0xD9, 0x1F, 0xE7, 0x64, 0xA8, 0x4E, 0xA1, - 0xB4, 0x3F, 0xF5, 0xB4, 0xF6, 0xE8, 0xE6, - 0x2F, 0x05, 0xC6, 0x61, 0xDE, 0xFB, 0x25, - 0x88, 0x77, 0xC3, 0x5B, 0x18, 0xA1, 0x51, - 0xD5, 0xC4, 0x14, 0xAA, 0xAD, 0x97, 0xBA, - 0x3E, 0x49, 0x93, 0x32, 0xE5, 0x96, 0x07, - 0x8E, 0x60, 0x0D, 0xEB, 0x81, 0x14, 0x9C, - 0x44, 0x1C, 0xE9, 0x57, 0x82, 0xF2, 0x2A, - 0x28, 0x25, 0x63, 0xC5, 0xBA, 0xC1, 0x41, - 0x14, 0x23, 0x60, 0x5D, 0x1A, 0xE1, 0xAF, - 0xAE, 0x2C, 0x8B, 0x06, 0x60, 0x23, 0x7E, - 0xC1, 0x28, 0xAA, 0x0F, 0xE3, 0x46, 0x4E, - 0x43, 0x58, 0x11, 0x5D, 0xB8, 0x4C, 0xC3, - 0xB5, 0x23, 0x07, 0x3A, 0x28, 0xD4, 0x54, - 0x98, 0x84, 0xB8, 0x1F, 0xF7, 0x0E, 0x10, - 0xBF, 0x36, 0x1C, 0x13, 0x72, 0x96, 0x28, - 0xD5, 0x34, 0x8F, 0x07, 0x21, 0x1E, 0x7E, - 0x4C, 0xF4, 0xF1, 0x8B, 0x28, 0x60, 0x90, - 0xBD, 0xB1, 0x24, 0x0B, 0x66, 0xD6, 0xCD, - 0x4A, 0xFC, 0xEA, 0xDC, 0x00, 0xCA, 0x44, - 0x6C, 0xE0, 0x50, 0x50, 0xFF, 0x18, 0x3A, - 0xD2, 0xBB, 0xF1, 0x18, 0xC1, 0xFC, 0x0E, - 0xA5, 0x1F, 0x97, 0xD2, 0x2B, 0x8F, 0x7E, - 0x46, 0x70, 0x5D, 0x45, 0x27, 0xF4, 0x5B, - 0x42, 0xAE, 0xFF, 0x39, 0x58, 0x53, 0x37, - 0x6F, 0x69, 0x7D, 0xD5, 0xFD, 0xF2, 0xC5, - 0x18, 0x7D, 0x7D, 0x5F, 0x0E, 0x2E, 0xB8, - 0xD4, 0x3F, 0x17, 0xBA, 0x0F, 0x7C, 0x60, - 0xFF, 0x43, 0x7F, 0x53, 0x5D, 0xFE, 0xF2, - 0x98, 0x33, 0xBF, 0x86, 0xCB, 0xE8, 0x8E, - 0xA4, 0xFB, 0xD4, 0x22, 0x1E, 0x84, 0x11, - 0x72, 0x83, 0x54, 0xFA, 0x30, 0xA7, 0x00, - 0x8F, 0x15, 0x4A, 0x41, 0xC7, 0xFC, 0x46, - 0x6B, 0x46, 0x45, 0xDB, 0xE2, 0xE3, 0x21, - 0x26, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0xFC, 0x2A, 0x2C, + 0x51, 0x5D, 0xA5, 0x4D, 0x57, 0xEE, 0x2B, 0x10, 0x13, 0x9E, 0x9E, 0x78, + 0xEC, 0x5C, 0xE2, 0xC1, 0xE7, 0x16, 0x9B, 0x4A, 0xD4, 0xF0, 0x9B, 0x20, + 0x8A, 0x32, 0x19, 0xFD, 0xE6, 0x49, 0xCE, 0xE7, 0x12, 0x4D, 0x9F, 0x7C, + 0xBE, 0x97, 0xF1, 0xB1, 0xB1, 0x86, 0x3A, 0xEC, 0x7B, 0x40, 0xD9, 0x01, + 0x57, 0x62, 0x30, 0xBD, 0x69, 0xEF, 0x8F, 0x6A, 0xEA, 0xFE, 0xB2, 0xB0, + 0x92, 0x19, 0xFA, 0x8F, 0xAF, 0x83, 0x37, 0x68, 0x42, 0xB1, 0xB2, 0xAA, + 0x9E, 0xF6, 0x8D, 0x79, 0xDA, 0xAB, 0x89, 0xAF, 0x3F, 0xAB, 0xE4, 0x9A, + 0xCC, 0x27, 0x86, 0x38, 0x70, 0x73, 0x45, 0xBB, 0xF1, 0x53, 0x44, 0xED, + 0x79, 0xF7, 0xF4, 0x39, 0x0E, 0xF8, 0xAC, 0x50, 0x9B, 0x56, 0xF3, 0x9A, + 0x98, 0x56, 0x65, 0x27, 0xA4, 0x1D, 0x3C, 0xBD, 0x5E, 0x05, 0x58, 0xC1, + 0x59, 0x92, 0x7D, 0xB0, 0xE8, 0x84, 0x54, 0xA5, 0xD9, 0x64, 0x71, 0xFD, + 0xDC, 0xB5, 0x6D, 0x5B, 0xB0, 0x6B, 0xFA, 0x34, 0x0E, 0xA7, 0xA1, 0x51, + 0xEF, 0x1C, 0xA6, 0xFA, 0x57, 0x2B, 0x76, 0xF3, 0xB1, 0xB9, 0x5D, 0x8C, + 0x85, 0x83, 0xD3, 0xE4, 0x77, 0x05, 0x36, 0xB8, 0x4F, 0x01, 0x7E, 0x70, + 0xE6, 0xFB, 0xF1, 0x76, 0x60, 0x1A, 0x02, 0x66, 0x94, 0x1A, 0x17, 0xB0, + 0xC8, 0xB9, 0x7F, 0x4E, 0x74, 0xC2, 0xC1, 0xFF, 0xC7, 0x27, 0x89, 0x19, + 0x77, 0x79, 0x40, 0xC1, 0xE1, 0xFF, 0x1D, 0x8D, 0xA6, 0x37, 0xD6, 0xB9, + 0x9D, 0xDA, 0xFE, 0x5E, 0x17, 0x61, 0x10, 0x02, 0xE2, 0xC7, 0x78, 0xC1, + 0xBE, 0x8B, 0x41, 0xD9, 0x63, 0x79, 0xA5, 0x13, 0x60, 0xD9, 0x77, 0xFD, + 0x44, 0x35, 0xA1, 0x1C, 0x30, 0x8F, 0xE7, 0xEE, 0x6F, 0x1A, 0xAD, 0x9D, + 0xB2, 0x8C, 0x81, 0xAD, 0xDE, 0x1A, 0x7A, 0x6F, 0x7C, 0xCE, 0x01, 0x1C, + 0x30, 0xDA, 0x37, 0xE4, 0xEB, 0x73, 0x64, 0x83, 0xBD, 0x6C, 0x8E, 0x93, + 0x48, 0xFB, 0xFB, 0xF7, 0x2C, 0xC6, 0x58, 0x7D, 0x60, 0xC3, 0x6C, 0x8E, + 0x57, 0x7F, 0x09, 0x84, 0xC2, 0x89, 0xC9, 0x38, 0x5A, 0x09, 0x86, 0x49, + 0xDE, 0x21, 0xBC, 0xA2, 0x7A, 0x7E, 0xA2, 0x29, 0x71, 0x6B, 0xA6, 0xE9, + 0xB2, 0x79, 0x71, 0x0F, 0x38, 0xFA, 0xA5, 0xFF, 0xAE, 0x57, 0x41, 0x55, + 0xCE, 0x4E, 0xFB, 0x4F, 0x74, 0x36, 0x95, 0xE2, 0x91, 0x1B, 0x1D, 0x06, + 0xD5, 0xE2, 0x90, 0xCB, 0xCD, 0x86, 0xF5, 0x6D, 0x0E, 0xDF, 0xCD, 0x21, + 0x6A, 0xE2, 0x24, 0x27, 0x05, 0x5E, 0x68, 0x35, 0xFD, 0x29, 0xEE, 0xF7, + 0x9E, 0x0D, 0x90, 0x77, 0x1F, 0xEA, 0xCE, 0xBE, 0x12, 0xF2, 0x0E, 0x95, + 0xB3, 0x4F, 0x0F, 0x78, 0xB7, 0x37, 0xA9, 0x61, 0x8B, 0x26, 0xFA, 0x7D, + 0xBC, 0x98, 0x74, 0xF2, 0x72, 0xC4, 0x2B, 0xDB, 0x56, 0x3E, 0xAF, 0xA1, + 0x6B, 0x4F, 0xB6, 0x8C, 0x3B, 0xB1, 0xE7, 0x8E, 0xAA, 0x81, 0xA0, 0x02, + 0x43, 0xFA, 0xAD, 0xD2, 0xBF, 0x18, 0xE6, 0x3D, 0x38, 0x9A, 0xE4, 0x43, + 0x77, 0xDA, 0x18, 0xC5, 0x76, 0xB5, 0x0F, 0x00, 0x96, 0xCF, 0x34, 0x19, + 0x54, 0x83, 0xB0, 0x05, 0x48, 0xC0, 0x98, 0x62, 0x36, 0xE3, 0xBC, 0x7C, + 0xB8, 0xD6, 0x80, 0x1C, 0x04, 0x94, 0xCC, 0xD1, 0x99, 0xE5, 0xC5, 0xBD, + 0x0D, 0x0E, 0xDC, 0x9E, 0xB8, 0xA0, 0x00, 0x1E, 0x15, 0x27, 0x67, 0x54, + 0xFC, 0xC6, 0x85, 0x66, 0x05, 0x41, 0x48, 0xE6, 0xE7, 0x64, 0xBE, 0xE7, + 0xC7, 0x64, 0xDA, 0xAD, 0x3F, 0xC4, 0x52, 0x35, 0xA6, 0xDA, 0xD4, 0x28, + 0xFA, 0x20, 0xC1, 0x70, 0xE3, 0x45, 0x00, 0x3F, 0x2F, 0x06, 0xEC, 0x81, + 0x05, 0xFE, 0xB2, 0x5B, 0x22, 0x81, 0xB6, 0x3D, 0x27, 0x33, 0xBE, 0x96, + 0x1C, 0x29, 0x95, 0x1D, 0x11, 0xDD, 0x22, 0x21, 0x65, 0x7A, 0x9F, 0x53, + 0x1D, 0xDA, 0x2A, 0x19, 0x4D, 0xBB, 0x12, 0x64, 0x48, 0xBD, 0xEE, 0xB2, + 0x58, 0xE0, 0x7E, 0xA6, 0x59, 0xC7, 0x46, 0x19, 0xA6, 0x38, 0x0E, 0x1D, + 0x66, 0xD6, 0x83, 0x2B, 0xFE, 0x67, 0xF6, 0x38, 0xCD, 0x8F, 0xAE, 0x1F, + 0x27, 0x23, 0x02, 0x0F, 0x9C, 0x40, 0xA3, 0xFD, 0xA6, 0x7E, 0xDA, 0x3B, + 0xD2, 0x92, 0x38, 0xFB, 0xD4, 0xD4, 0xB4, 0x88, 0x5C, 0x2A, 0x99, 0x17, + 0x6D, 0xB1, 0xA0, 0x6C, 0x50, 0x07, 0x78, 0x49, 0x1A, 0x82, 0x88, 0xF1, + 0x85, 0x5F, 0x60, 0xFF, 0xFC, 0xF1, 0xD1, 0x37, 0x3F, 0xD9, 0x4F, 0xC6, + 0x0C, 0x18, 0x11, 0xE1, 0xAC, 0x3F, 0x1C, 0x6D, 0x00, 0x3B, 0xEC, 0xDA, + 0x3B, 0x1F, 0x27, 0x25, 0xCA, 0x59, 0x5D, 0xE0, 0xCA, 0x63, 0x32, 0x8F, + 0x3B, 0xE5, 0x7C, 0xC9, 0x77, 0x55, 0x60, 0x11, 0x95, 0x14, 0x0D, 0xFB, + 0x59, 0xD3, 0x9C, 0xE0, 0x91, 0x30, 0x8B, 0x41, 0x05, 0x74, 0x6D, 0xAC, + 0x23, 0xD3, 0x3E, 0x5F, 0x7C, 0xE4, 0x84, 0x8D, 0xA3, 0x16, 0xA9, 0xC6, + 0x6B, 0x95, 0x81, 0xBA, 0x35, 0x73, 0xBF, 0xAF, 0x31, 0x14, 0x96, 0x18, + 0x8A, 0xB1, 0x54, 0x23, 0x28, 0x2E, 0xE4, 0x16, 0xDC, 0x2A, 0x19, 0xC5, + 0x72, 0x4F, 0xA9, 0x1A, 0xE4, 0xAD, 0xC8, 0x8B, 0xC6, 0x67, 0x96, 0xEA, + 0xE5, 0x67, 0x7A, 0x01, 0xF6, 0x4E, 0x8C, 0x08, 0x63, 0x13, 0x95, 0x82, + 0x2D, 0x9D, 0xB8, 0xFC, 0xEE, 0x35, 0xC0, 0x6B, 0x1F, 0xEE, 0xA5, 0x47, + 0x4D, 0x6D, 0x8F, 0x34, 0xB1, 0x53, 0x4A, 0x93, 0x6A, 0x18, 0xB0, 0xE0, + 0xD2, 0x0E, 0xAB, 0x86, 0xBC, 0x9C, 0x6D, 0x6A, 0x52, 0x07, 0x19, 0x4E, + 0x67, 0xFA, 0x35, 0x55, 0x1B, 0x56, 0x80, 0x26, 0x7B, 0x00, 0x64, 0x1C, + 0x0F, 0x21, 0x2D, 0x18, 0xEC, 0xA8, 0xD7, 0x32, 0x7E, 0xD9, 0x1F, 0xE7, + 0x64, 0xA8, 0x4E, 0xA1, 0xB4, 0x3F, 0xF5, 0xB4, 0xF6, 0xE8, 0xE6, 0x2F, + 0x05, 0xC6, 0x61, 0xDE, 0xFB, 0x25, 0x88, 0x77, 0xC3, 0x5B, 0x18, 0xA1, + 0x51, 0xD5, 0xC4, 0x14, 0xAA, 0xAD, 0x97, 0xBA, 0x3E, 0x49, 0x93, 0x32, + 0xE5, 0x96, 0x07, 0x8E, 0x60, 0x0D, 0xEB, 0x81, 0x14, 0x9C, 0x44, 0x1C, + 0xE9, 0x57, 0x82, 0xF2, 0x2A, 0x28, 0x25, 0x63, 0xC5, 0xBA, 0xC1, 0x41, + 0x14, 0x23, 0x60, 0x5D, 0x1A, 0xE1, 0xAF, 0xAE, 0x2C, 0x8B, 0x06, 0x60, + 0x23, 0x7E, 0xC1, 0x28, 0xAA, 0x0F, 0xE3, 0x46, 0x4E, 0x43, 0x58, 0x11, + 0x5D, 0xB8, 0x4C, 0xC3, 0xB5, 0x23, 0x07, 0x3A, 0x28, 0xD4, 0x54, 0x98, + 0x84, 0xB8, 0x1F, 0xF7, 0x0E, 0x10, 0xBF, 0x36, 0x1C, 0x13, 0x72, 0x96, + 0x28, 0xD5, 0x34, 0x8F, 0x07, 0x21, 0x1E, 0x7E, 0x4C, 0xF4, 0xF1, 0x8B, + 0x28, 0x60, 0x90, 0xBD, 0xB1, 0x24, 0x0B, 0x66, 0xD6, 0xCD, 0x4A, 0xFC, + 0xEA, 0xDC, 0x00, 0xCA, 0x44, 0x6C, 0xE0, 0x50, 0x50, 0xFF, 0x18, 0x3A, + 0xD2, 0xBB, 0xF1, 0x18, 0xC1, 0xFC, 0x0E, 0xA5, 0x1F, 0x97, 0xD2, 0x2B, + 0x8F, 0x7E, 0x46, 0x70, 0x5D, 0x45, 0x27, 0xF4, 0x5B, 0x42, 0xAE, 0xFF, + 0x39, 0x58, 0x53, 0x37, 0x6F, 0x69, 0x7D, 0xD5, 0xFD, 0xF2, 0xC5, 0x18, + 0x7D, 0x7D, 0x5F, 0x0E, 0x2E, 0xB8, 0xD4, 0x3F, 0x17, 0xBA, 0x0F, 0x7C, + 0x60, 0xFF, 0x43, 0x7F, 0x53, 0x5D, 0xFE, 0xF2, 0x98, 0x33, 0xBF, 0x86, + 0xCB, 0xE8, 0x8E, 0xA4, 0xFB, 0xD4, 0x22, 0x1E, 0x84, 0x11, 0x72, 0x83, + 0x54, 0xFA, 0x30, 0xA7, 0x00, 0x8F, 0x15, 0x4A, 0x41, 0xC7, 0xFC, 0x46, + 0x6B, 0x46, 0x45, 0xDB, 0xE2, 0xE3, 0x21, 0x26, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF }; const gnutls_datum_t gnutls_ffdhe_8192_group_prime = { (void *)ffdhe_params_8192, sizeof(ffdhe_params_8192) }; -const gnutls_datum_t gnutls_ffdhe_8192_group_q = { - (void *)ffdhe_q_8192, sizeof(ffdhe_q_8192) -}; +const gnutls_datum_t gnutls_ffdhe_8192_group_q = { (void *)ffdhe_q_8192, + sizeof(ffdhe_q_8192) }; const gnutls_datum_t gnutls_ffdhe_8192_group_generator = { (void *)&ffdhe_generator, sizeof(ffdhe_generator) @@ -976,82 +619,52 @@ const unsigned int gnutls_ffdhe_8192_key_bits = 512; static const unsigned char modp_generator = 0x02; static const unsigned char modp_params_2048[] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, - 0xC2, 0x34, 0xC4, 0xC6, 0x62, 0x8B, 0x80, - 0xDC, 0x1C, 0xD1, 0x29, 0x02, 0x4E, 0x08, - 0x8A, 0x67, 0xCC, 0x74, 0x02, 0x0B, 0xBE, - 0xA6, 0x3B, 0x13, 0x9B, 0x22, 0x51, 0x4A, - 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, 0xEF, - 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, - 0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, - 0x37, 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, - 0xC2, 0x45, 0xE4, 0x85, 0xB5, 0x76, 0x62, - 0x5E, 0x7E, 0xC6, 0xF4, 0x4C, 0x42, 0xE9, - 0xA6, 0x37, 0xED, 0x6B, 0x0B, 0xFF, 0x5C, - 0xB6, 0xF4, 0x06, 0xB7, 0xED, 0xEE, 0x38, - 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 0xAE, - 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6, - 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, - 0x3D, 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, - 0xBF, 0x05, 0x98, 0xDA, 0x48, 0x36, 0x1C, - 0x55, 0xD3, 0x9A, 0x69, 0x16, 0x3F, 0xA8, - 0xFD, 0x24, 0xCF, 0x5F, 0x83, 0x65, 0x5D, - 0x23, 0xDC, 0xA3, 0xAD, 0x96, 0x1C, 0x62, - 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB, 0x9E, - 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, - 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, - 0x04, 0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, - 0x21, 0x7C, 0x32, 0x90, 0x5E, 0x46, 0x2E, - 0x36, 0xCE, 0x3B, 0xE3, 0x9E, 0x77, 0x2C, - 0x18, 0x0E, 0x86, 0x03, 0x9B, 0x27, 0x83, - 0xA2, 0xEC, 0x07, 0xA2, 0x8F, 0xB5, 0xC5, - 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, 0xDE, - 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, - 0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, - 0xE5, 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, - 0x05, 0x10, 0x15, 0x72, 0x8E, 0x5A, 0x8A, - 0xAC, 0xAA, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x0F, 0xDA, 0xA2, + 0x21, 0x68, 0xC2, 0x34, 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, + 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, 0x02, 0x0B, 0xBE, 0xA6, + 0x3B, 0x13, 0x9B, 0x22, 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, + 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, 0x30, 0x2B, 0x0A, 0x6D, + 0xF2, 0x5F, 0x14, 0x37, 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, + 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, 0xF4, 0x4C, 0x42, 0xE9, + 0xA6, 0x37, 0xED, 0x6B, 0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, + 0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 0xAE, 0x9F, 0x24, 0x11, + 0x7C, 0x4B, 0x1F, 0xE6, 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, + 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, 0x98, 0xDA, 0x48, 0x36, + 0x1C, 0x55, 0xD3, 0x9A, 0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, + 0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, 0x1C, 0x62, 0xF3, 0x56, + 0x20, 0x85, 0x52, 0xBB, 0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, + 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, 0xF1, 0x74, 0x6C, 0x08, + 0xCA, 0x18, 0x21, 0x7C, 0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B, + 0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, 0x9B, 0x27, 0x83, 0xA2, + 0xEC, 0x07, 0xA2, 0x8F, 0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, + 0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, 0x39, 0x95, 0x49, 0x7C, + 0xEA, 0x95, 0x6A, 0xE5, 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, + 0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAC, 0xAA, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; static const unsigned char modp_q_2048[] = { - 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xE4, 0x87, 0xED, 0x51, 0x10, 0xB4, - 0x61, 0x1A, 0x62, 0x63, 0x31, 0x45, 0xC0, - 0x6E, 0x0E, 0x68, 0x94, 0x81, 0x27, 0x04, - 0x45, 0x33, 0xE6, 0x3A, 0x01, 0x05, 0xDF, - 0x53, 0x1D, 0x89, 0xCD, 0x91, 0x28, 0xA5, - 0x04, 0x3C, 0xC7, 0x1A, 0x02, 0x6E, 0xF7, - 0xCA, 0x8C, 0xD9, 0xE6, 0x9D, 0x21, 0x8D, - 0x98, 0x15, 0x85, 0x36, 0xF9, 0x2F, 0x8A, - 0x1B, 0xA7, 0xF0, 0x9A, 0xB6, 0xB6, 0xA8, - 0xE1, 0x22, 0xF2, 0x42, 0xDA, 0xBB, 0x31, - 0x2F, 0x3F, 0x63, 0x7A, 0x26, 0x21, 0x74, - 0xD3, 0x1B, 0xF6, 0xB5, 0x85, 0xFF, 0xAE, - 0x5B, 0x7A, 0x03, 0x5B, 0xF6, 0xF7, 0x1C, - 0x35, 0xFD, 0xAD, 0x44, 0xCF, 0xD2, 0xD7, - 0x4F, 0x92, 0x08, 0xBE, 0x25, 0x8F, 0xF3, - 0x24, 0x94, 0x33, 0x28, 0xF6, 0x72, 0x2D, - 0x9E, 0xE1, 0x00, 0x3E, 0x5C, 0x50, 0xB1, - 0xDF, 0x82, 0xCC, 0x6D, 0x24, 0x1B, 0x0E, - 0x2A, 0xE9, 0xCD, 0x34, 0x8B, 0x1F, 0xD4, - 0x7E, 0x92, 0x67, 0xAF, 0xC1, 0xB2, 0xAE, - 0x91, 0xEE, 0x51, 0xD6, 0xCB, 0x0E, 0x31, - 0x79, 0xAB, 0x10, 0x42, 0xA9, 0x5D, 0xCF, - 0x6A, 0x94, 0x83, 0xB8, 0x4B, 0x4B, 0x36, - 0xB3, 0x86, 0x1A, 0xA7, 0x25, 0x5E, 0x4C, - 0x02, 0x78, 0xBA, 0x36, 0x04, 0x65, 0x0C, - 0x10, 0xBE, 0x19, 0x48, 0x2F, 0x23, 0x17, - 0x1B, 0x67, 0x1D, 0xF1, 0xCF, 0x3B, 0x96, - 0x0C, 0x07, 0x43, 0x01, 0xCD, 0x93, 0xC1, - 0xD1, 0x76, 0x03, 0xD1, 0x47, 0xDA, 0xE2, - 0xAE, 0xF8, 0x37, 0xA6, 0x29, 0x64, 0xEF, - 0x15, 0xE5, 0xFB, 0x4A, 0xAC, 0x0B, 0x8C, - 0x1C, 0xCA, 0xA4, 0xBE, 0x75, 0x4A, 0xB5, - 0x72, 0x8A, 0xE9, 0x13, 0x0C, 0x4C, 0x7D, - 0x02, 0x88, 0x0A, 0xB9, 0x47, 0x2D, 0x45, - 0x56, 0x55, 0x34, 0x7F, 0xFF, 0xFF, 0xFF, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x87, 0xED, 0x51, + 0x10, 0xB4, 0x61, 0x1A, 0x62, 0x63, 0x31, 0x45, 0xC0, 0x6E, 0x0E, 0x68, + 0x94, 0x81, 0x27, 0x04, 0x45, 0x33, 0xE6, 0x3A, 0x01, 0x05, 0xDF, 0x53, + 0x1D, 0x89, 0xCD, 0x91, 0x28, 0xA5, 0x04, 0x3C, 0xC7, 0x1A, 0x02, 0x6E, + 0xF7, 0xCA, 0x8C, 0xD9, 0xE6, 0x9D, 0x21, 0x8D, 0x98, 0x15, 0x85, 0x36, + 0xF9, 0x2F, 0x8A, 0x1B, 0xA7, 0xF0, 0x9A, 0xB6, 0xB6, 0xA8, 0xE1, 0x22, + 0xF2, 0x42, 0xDA, 0xBB, 0x31, 0x2F, 0x3F, 0x63, 0x7A, 0x26, 0x21, 0x74, + 0xD3, 0x1B, 0xF6, 0xB5, 0x85, 0xFF, 0xAE, 0x5B, 0x7A, 0x03, 0x5B, 0xF6, + 0xF7, 0x1C, 0x35, 0xFD, 0xAD, 0x44, 0xCF, 0xD2, 0xD7, 0x4F, 0x92, 0x08, + 0xBE, 0x25, 0x8F, 0xF3, 0x24, 0x94, 0x33, 0x28, 0xF6, 0x72, 0x2D, 0x9E, + 0xE1, 0x00, 0x3E, 0x5C, 0x50, 0xB1, 0xDF, 0x82, 0xCC, 0x6D, 0x24, 0x1B, + 0x0E, 0x2A, 0xE9, 0xCD, 0x34, 0x8B, 0x1F, 0xD4, 0x7E, 0x92, 0x67, 0xAF, + 0xC1, 0xB2, 0xAE, 0x91, 0xEE, 0x51, 0xD6, 0xCB, 0x0E, 0x31, 0x79, 0xAB, + 0x10, 0x42, 0xA9, 0x5D, 0xCF, 0x6A, 0x94, 0x83, 0xB8, 0x4B, 0x4B, 0x36, + 0xB3, 0x86, 0x1A, 0xA7, 0x25, 0x5E, 0x4C, 0x02, 0x78, 0xBA, 0x36, 0x04, + 0x65, 0x0C, 0x10, 0xBE, 0x19, 0x48, 0x2F, 0x23, 0x17, 0x1B, 0x67, 0x1D, + 0xF1, 0xCF, 0x3B, 0x96, 0x0C, 0x07, 0x43, 0x01, 0xCD, 0x93, 0xC1, 0xD1, + 0x76, 0x03, 0xD1, 0x47, 0xDA, 0xE2, 0xAE, 0xF8, 0x37, 0xA6, 0x29, 0x64, + 0xEF, 0x15, 0xE5, 0xFB, 0x4A, 0xAC, 0x0B, 0x8C, 0x1C, 0xCA, 0xA4, 0xBE, + 0x75, 0x4A, 0xB5, 0x72, 0x8A, 0xE9, 0x13, 0x0C, 0x4C, 0x7D, 0x02, 0x88, + 0x0A, 0xB9, 0x47, 0x2D, 0x45, 0x56, 0x55, 0x34, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; @@ -1059,9 +672,8 @@ const gnutls_datum_t gnutls_modp_2048_group_prime = { (void *)modp_params_2048, sizeof(modp_params_2048) }; -const gnutls_datum_t gnutls_modp_2048_group_q = { - (void *)modp_q_2048, sizeof(modp_q_2048) -}; +const gnutls_datum_t gnutls_modp_2048_group_q = { (void *)modp_q_2048, + sizeof(modp_q_2048) }; const gnutls_datum_t gnutls_modp_2048_group_generator = { (void *)&modp_generator, sizeof(modp_generator) @@ -1070,128 +682,81 @@ const gnutls_datum_t gnutls_modp_2048_group_generator = { const unsigned int gnutls_modp_2048_key_bits = 256; static const unsigned char modp_params_3072[] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, - 0xC2, 0x34, 0xC4, 0xC6, 0x62, 0x8B, 0x80, - 0xDC, 0x1C, 0xD1, 0x29, 0x02, 0x4E, 0x08, - 0x8A, 0x67, 0xCC, 0x74, 0x02, 0x0B, 0xBE, - 0xA6, 0x3B, 0x13, 0x9B, 0x22, 0x51, 0x4A, - 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, 0xEF, - 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, - 0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, - 0x37, 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, - 0xC2, 0x45, 0xE4, 0x85, 0xB5, 0x76, 0x62, - 0x5E, 0x7E, 0xC6, 0xF4, 0x4C, 0x42, 0xE9, - 0xA6, 0x37, 0xED, 0x6B, 0x0B, 0xFF, 0x5C, - 0xB6, 0xF4, 0x06, 0xB7, 0xED, 0xEE, 0x38, - 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 0xAE, - 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6, - 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, - 0x3D, 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, - 0xBF, 0x05, 0x98, 0xDA, 0x48, 0x36, 0x1C, - 0x55, 0xD3, 0x9A, 0x69, 0x16, 0x3F, 0xA8, - 0xFD, 0x24, 0xCF, 0x5F, 0x83, 0x65, 0x5D, - 0x23, 0xDC, 0xA3, 0xAD, 0x96, 0x1C, 0x62, - 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB, 0x9E, - 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, - 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, - 0x04, 0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, - 0x21, 0x7C, 0x32, 0x90, 0x5E, 0x46, 0x2E, - 0x36, 0xCE, 0x3B, 0xE3, 0x9E, 0x77, 0x2C, - 0x18, 0x0E, 0x86, 0x03, 0x9B, 0x27, 0x83, - 0xA2, 0xEC, 0x07, 0xA2, 0x8F, 0xB5, 0xC5, - 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, 0xDE, - 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, - 0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, - 0xE5, 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, - 0x05, 0x10, 0x15, 0x72, 0x8E, 0x5A, 0x8A, - 0xAA, 0xC4, 0x2D, 0xAD, 0x33, 0x17, 0x0D, - 0x04, 0x50, 0x7A, 0x33, 0xA8, 0x55, 0x21, - 0xAB, 0xDF, 0x1C, 0xBA, 0x64, 0xEC, 0xFB, - 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A, 0x8A, - 0xEA, 0x71, 0x57, 0x5D, 0x06, 0x0C, 0x7D, - 0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, - 0xC7, 0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, - 0x33, 0xD7, 0x1E, 0x8C, 0x94, 0xE0, 0x4A, - 0x25, 0x61, 0x9D, 0xCE, 0xE3, 0xD2, 0x26, - 0x1A, 0xD2, 0xEE, 0x6B, 0xF1, 0x2F, 0xFA, - 0x06, 0xD9, 0x8A, 0x08, 0x64, 0xD8, 0x76, - 0x02, 0x73, 0x3E, 0xC8, 0x6A, 0x64, 0x52, - 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C, - 0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, - 0x6C, 0x77, 0x09, 0x88, 0xC0, 0xBA, 0xD9, - 0x46, 0xE2, 0x08, 0xE2, 0x4F, 0xA0, 0x74, - 0xE5, 0xAB, 0x31, 0x43, 0xDB, 0x5B, 0xFC, - 0xE0, 0xFD, 0x10, 0x8E, 0x4B, 0x82, 0xD1, - 0x20, 0xA9, 0x3A, 0xD2, 0xCA, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x0F, 0xDA, 0xA2, + 0x21, 0x68, 0xC2, 0x34, 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, + 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, 0x02, 0x0B, 0xBE, 0xA6, + 0x3B, 0x13, 0x9B, 0x22, 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, + 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, 0x30, 0x2B, 0x0A, 0x6D, + 0xF2, 0x5F, 0x14, 0x37, 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, + 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, 0xF4, 0x4C, 0x42, 0xE9, + 0xA6, 0x37, 0xED, 0x6B, 0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, + 0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 0xAE, 0x9F, 0x24, 0x11, + 0x7C, 0x4B, 0x1F, 0xE6, 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, + 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, 0x98, 0xDA, 0x48, 0x36, + 0x1C, 0x55, 0xD3, 0x9A, 0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, + 0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, 0x1C, 0x62, 0xF3, 0x56, + 0x20, 0x85, 0x52, 0xBB, 0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, + 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, 0xF1, 0x74, 0x6C, 0x08, + 0xCA, 0x18, 0x21, 0x7C, 0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B, + 0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, 0x9B, 0x27, 0x83, 0xA2, + 0xEC, 0x07, 0xA2, 0x8F, 0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, + 0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, 0x39, 0x95, 0x49, 0x7C, + 0xEA, 0x95, 0x6A, 0xE5, 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, + 0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAA, 0xC4, 0x2D, 0xAD, 0x33, 0x17, 0x0D, + 0x04, 0x50, 0x7A, 0x33, 0xA8, 0x55, 0x21, 0xAB, 0xDF, 0x1C, 0xBA, 0x64, + 0xEC, 0xFB, 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A, 0x8A, 0xEA, 0x71, 0x57, + 0x5D, 0x06, 0x0C, 0x7D, 0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, 0xC7, + 0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, 0x33, 0xD7, 0x1E, 0x8C, 0x94, 0xE0, + 0x4A, 0x25, 0x61, 0x9D, 0xCE, 0xE3, 0xD2, 0x26, 0x1A, 0xD2, 0xEE, 0x6B, + 0xF1, 0x2F, 0xFA, 0x06, 0xD9, 0x8A, 0x08, 0x64, 0xD8, 0x76, 0x02, 0x73, + 0x3E, 0xC8, 0x6A, 0x64, 0x52, 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C, + 0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, 0x6C, 0x77, 0x09, 0x88, 0xC0, + 0xBA, 0xD9, 0x46, 0xE2, 0x08, 0xE2, 0x4F, 0xA0, 0x74, 0xE5, 0xAB, 0x31, + 0x43, 0xDB, 0x5B, 0xFC, 0xE0, 0xFD, 0x10, 0x8E, 0x4B, 0x82, 0xD1, 0x20, + 0xA9, 0x3A, 0xD2, 0xCA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; static const unsigned char modp_q_3072[] = { - 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xE4, 0x87, 0xED, 0x51, 0x10, 0xB4, - 0x61, 0x1A, 0x62, 0x63, 0x31, 0x45, 0xC0, - 0x6E, 0x0E, 0x68, 0x94, 0x81, 0x27, 0x04, - 0x45, 0x33, 0xE6, 0x3A, 0x01, 0x05, 0xDF, - 0x53, 0x1D, 0x89, 0xCD, 0x91, 0x28, 0xA5, - 0x04, 0x3C, 0xC7, 0x1A, 0x02, 0x6E, 0xF7, - 0xCA, 0x8C, 0xD9, 0xE6, 0x9D, 0x21, 0x8D, - 0x98, 0x15, 0x85, 0x36, 0xF9, 0x2F, 0x8A, - 0x1B, 0xA7, 0xF0, 0x9A, 0xB6, 0xB6, 0xA8, - 0xE1, 0x22, 0xF2, 0x42, 0xDA, 0xBB, 0x31, - 0x2F, 0x3F, 0x63, 0x7A, 0x26, 0x21, 0x74, - 0xD3, 0x1B, 0xF6, 0xB5, 0x85, 0xFF, 0xAE, - 0x5B, 0x7A, 0x03, 0x5B, 0xF6, 0xF7, 0x1C, - 0x35, 0xFD, 0xAD, 0x44, 0xCF, 0xD2, 0xD7, - 0x4F, 0x92, 0x08, 0xBE, 0x25, 0x8F, 0xF3, - 0x24, 0x94, 0x33, 0x28, 0xF6, 0x72, 0x2D, - 0x9E, 0xE1, 0x00, 0x3E, 0x5C, 0x50, 0xB1, - 0xDF, 0x82, 0xCC, 0x6D, 0x24, 0x1B, 0x0E, - 0x2A, 0xE9, 0xCD, 0x34, 0x8B, 0x1F, 0xD4, - 0x7E, 0x92, 0x67, 0xAF, 0xC1, 0xB2, 0xAE, - 0x91, 0xEE, 0x51, 0xD6, 0xCB, 0x0E, 0x31, - 0x79, 0xAB, 0x10, 0x42, 0xA9, 0x5D, 0xCF, - 0x6A, 0x94, 0x83, 0xB8, 0x4B, 0x4B, 0x36, - 0xB3, 0x86, 0x1A, 0xA7, 0x25, 0x5E, 0x4C, - 0x02, 0x78, 0xBA, 0x36, 0x04, 0x65, 0x0C, - 0x10, 0xBE, 0x19, 0x48, 0x2F, 0x23, 0x17, - 0x1B, 0x67, 0x1D, 0xF1, 0xCF, 0x3B, 0x96, - 0x0C, 0x07, 0x43, 0x01, 0xCD, 0x93, 0xC1, - 0xD1, 0x76, 0x03, 0xD1, 0x47, 0xDA, 0xE2, - 0xAE, 0xF8, 0x37, 0xA6, 0x29, 0x64, 0xEF, - 0x15, 0xE5, 0xFB, 0x4A, 0xAC, 0x0B, 0x8C, - 0x1C, 0xCA, 0xA4, 0xBE, 0x75, 0x4A, 0xB5, - 0x72, 0x8A, 0xE9, 0x13, 0x0C, 0x4C, 0x7D, - 0x02, 0x88, 0x0A, 0xB9, 0x47, 0x2D, 0x45, - 0x55, 0x62, 0x16, 0xD6, 0x99, 0x8B, 0x86, - 0x82, 0x28, 0x3D, 0x19, 0xD4, 0x2A, 0x90, - 0xD5, 0xEF, 0x8E, 0x5D, 0x32, 0x76, 0x7D, - 0xC2, 0x82, 0x2C, 0x6D, 0xF7, 0x85, 0x45, - 0x75, 0x38, 0xAB, 0xAE, 0x83, 0x06, 0x3E, - 0xD9, 0xCB, 0x87, 0xC2, 0xD3, 0x70, 0xF2, - 0x63, 0xD5, 0xFA, 0xD7, 0x46, 0x6D, 0x84, - 0x99, 0xEB, 0x8F, 0x46, 0x4A, 0x70, 0x25, - 0x12, 0xB0, 0xCE, 0xE7, 0x71, 0xE9, 0x13, - 0x0D, 0x69, 0x77, 0x35, 0xF8, 0x97, 0xFD, - 0x03, 0x6C, 0xC5, 0x04, 0x32, 0x6C, 0x3B, - 0x01, 0x39, 0x9F, 0x64, 0x35, 0x32, 0x29, - 0x0F, 0x95, 0x8C, 0x0B, 0xBD, 0x90, 0x06, - 0x5D, 0xF0, 0x8B, 0xAB, 0xBD, 0x30, 0xAE, - 0xB6, 0x3B, 0x84, 0xC4, 0x60, 0x5D, 0x6C, - 0xA3, 0x71, 0x04, 0x71, 0x27, 0xD0, 0x3A, - 0x72, 0xD5, 0x98, 0xA1, 0xED, 0xAD, 0xFE, - 0x70, 0x7E, 0x88, 0x47, 0x25, 0xC1, 0x68, - 0x90, 0x54, 0x9D, 0x69, 0x65, 0x7F, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x87, 0xED, 0x51, + 0x10, 0xB4, 0x61, 0x1A, 0x62, 0x63, 0x31, 0x45, 0xC0, 0x6E, 0x0E, 0x68, + 0x94, 0x81, 0x27, 0x04, 0x45, 0x33, 0xE6, 0x3A, 0x01, 0x05, 0xDF, 0x53, + 0x1D, 0x89, 0xCD, 0x91, 0x28, 0xA5, 0x04, 0x3C, 0xC7, 0x1A, 0x02, 0x6E, + 0xF7, 0xCA, 0x8C, 0xD9, 0xE6, 0x9D, 0x21, 0x8D, 0x98, 0x15, 0x85, 0x36, + 0xF9, 0x2F, 0x8A, 0x1B, 0xA7, 0xF0, 0x9A, 0xB6, 0xB6, 0xA8, 0xE1, 0x22, + 0xF2, 0x42, 0xDA, 0xBB, 0x31, 0x2F, 0x3F, 0x63, 0x7A, 0x26, 0x21, 0x74, + 0xD3, 0x1B, 0xF6, 0xB5, 0x85, 0xFF, 0xAE, 0x5B, 0x7A, 0x03, 0x5B, 0xF6, + 0xF7, 0x1C, 0x35, 0xFD, 0xAD, 0x44, 0xCF, 0xD2, 0xD7, 0x4F, 0x92, 0x08, + 0xBE, 0x25, 0x8F, 0xF3, 0x24, 0x94, 0x33, 0x28, 0xF6, 0x72, 0x2D, 0x9E, + 0xE1, 0x00, 0x3E, 0x5C, 0x50, 0xB1, 0xDF, 0x82, 0xCC, 0x6D, 0x24, 0x1B, + 0x0E, 0x2A, 0xE9, 0xCD, 0x34, 0x8B, 0x1F, 0xD4, 0x7E, 0x92, 0x67, 0xAF, + 0xC1, 0xB2, 0xAE, 0x91, 0xEE, 0x51, 0xD6, 0xCB, 0x0E, 0x31, 0x79, 0xAB, + 0x10, 0x42, 0xA9, 0x5D, 0xCF, 0x6A, 0x94, 0x83, 0xB8, 0x4B, 0x4B, 0x36, + 0xB3, 0x86, 0x1A, 0xA7, 0x25, 0x5E, 0x4C, 0x02, 0x78, 0xBA, 0x36, 0x04, + 0x65, 0x0C, 0x10, 0xBE, 0x19, 0x48, 0x2F, 0x23, 0x17, 0x1B, 0x67, 0x1D, + 0xF1, 0xCF, 0x3B, 0x96, 0x0C, 0x07, 0x43, 0x01, 0xCD, 0x93, 0xC1, 0xD1, + 0x76, 0x03, 0xD1, 0x47, 0xDA, 0xE2, 0xAE, 0xF8, 0x37, 0xA6, 0x29, 0x64, + 0xEF, 0x15, 0xE5, 0xFB, 0x4A, 0xAC, 0x0B, 0x8C, 0x1C, 0xCA, 0xA4, 0xBE, + 0x75, 0x4A, 0xB5, 0x72, 0x8A, 0xE9, 0x13, 0x0C, 0x4C, 0x7D, 0x02, 0x88, + 0x0A, 0xB9, 0x47, 0x2D, 0x45, 0x55, 0x62, 0x16, 0xD6, 0x99, 0x8B, 0x86, + 0x82, 0x28, 0x3D, 0x19, 0xD4, 0x2A, 0x90, 0xD5, 0xEF, 0x8E, 0x5D, 0x32, + 0x76, 0x7D, 0xC2, 0x82, 0x2C, 0x6D, 0xF7, 0x85, 0x45, 0x75, 0x38, 0xAB, + 0xAE, 0x83, 0x06, 0x3E, 0xD9, 0xCB, 0x87, 0xC2, 0xD3, 0x70, 0xF2, 0x63, + 0xD5, 0xFA, 0xD7, 0x46, 0x6D, 0x84, 0x99, 0xEB, 0x8F, 0x46, 0x4A, 0x70, + 0x25, 0x12, 0xB0, 0xCE, 0xE7, 0x71, 0xE9, 0x13, 0x0D, 0x69, 0x77, 0x35, + 0xF8, 0x97, 0xFD, 0x03, 0x6C, 0xC5, 0x04, 0x32, 0x6C, 0x3B, 0x01, 0x39, + 0x9F, 0x64, 0x35, 0x32, 0x29, 0x0F, 0x95, 0x8C, 0x0B, 0xBD, 0x90, 0x06, + 0x5D, 0xF0, 0x8B, 0xAB, 0xBD, 0x30, 0xAE, 0xB6, 0x3B, 0x84, 0xC4, 0x60, + 0x5D, 0x6C, 0xA3, 0x71, 0x04, 0x71, 0x27, 0xD0, 0x3A, 0x72, 0xD5, 0x98, + 0xA1, 0xED, 0xAD, 0xFE, 0x70, 0x7E, 0x88, 0x47, 0x25, 0xC1, 0x68, 0x90, + 0x54, 0x9D, 0x69, 0x65, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; const gnutls_datum_t gnutls_modp_3072_group_prime = { (void *)modp_params_3072, sizeof(modp_params_3072) }; -const gnutls_datum_t gnutls_modp_3072_group_q = { - (void *)modp_q_3072, sizeof(modp_q_3072) -}; +const gnutls_datum_t gnutls_modp_3072_group_q = { (void *)modp_q_3072, + sizeof(modp_q_3072) }; const gnutls_datum_t gnutls_modp_3072_group_generator = { (void *)&modp_generator, sizeof(modp_generator) @@ -1200,166 +765,103 @@ const gnutls_datum_t gnutls_modp_3072_group_generator = { const unsigned int gnutls_modp_3072_key_bits = 276; static const unsigned char modp_params_4096[] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, - 0xC2, 0x34, 0xC4, 0xC6, 0x62, 0x8B, 0x80, - 0xDC, 0x1C, 0xD1, 0x29, 0x02, 0x4E, 0x08, - 0x8A, 0x67, 0xCC, 0x74, 0x02, 0x0B, 0xBE, - 0xA6, 0x3B, 0x13, 0x9B, 0x22, 0x51, 0x4A, - 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, 0xEF, - 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, - 0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, - 0x37, 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, - 0xC2, 0x45, 0xE4, 0x85, 0xB5, 0x76, 0x62, - 0x5E, 0x7E, 0xC6, 0xF4, 0x4C, 0x42, 0xE9, - 0xA6, 0x37, 0xED, 0x6B, 0x0B, 0xFF, 0x5C, - 0xB6, 0xF4, 0x06, 0xB7, 0xED, 0xEE, 0x38, - 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 0xAE, - 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6, - 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, - 0x3D, 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, - 0xBF, 0x05, 0x98, 0xDA, 0x48, 0x36, 0x1C, - 0x55, 0xD3, 0x9A, 0x69, 0x16, 0x3F, 0xA8, - 0xFD, 0x24, 0xCF, 0x5F, 0x83, 0x65, 0x5D, - 0x23, 0xDC, 0xA3, 0xAD, 0x96, 0x1C, 0x62, - 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB, 0x9E, - 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, - 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, - 0x04, 0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, - 0x21, 0x7C, 0x32, 0x90, 0x5E, 0x46, 0x2E, - 0x36, 0xCE, 0x3B, 0xE3, 0x9E, 0x77, 0x2C, - 0x18, 0x0E, 0x86, 0x03, 0x9B, 0x27, 0x83, - 0xA2, 0xEC, 0x07, 0xA2, 0x8F, 0xB5, 0xC5, - 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, 0xDE, - 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, - 0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, - 0xE5, 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, - 0x05, 0x10, 0x15, 0x72, 0x8E, 0x5A, 0x8A, - 0xAA, 0xC4, 0x2D, 0xAD, 0x33, 0x17, 0x0D, - 0x04, 0x50, 0x7A, 0x33, 0xA8, 0x55, 0x21, - 0xAB, 0xDF, 0x1C, 0xBA, 0x64, 0xEC, 0xFB, - 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A, 0x8A, - 0xEA, 0x71, 0x57, 0x5D, 0x06, 0x0C, 0x7D, - 0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, - 0xC7, 0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, - 0x33, 0xD7, 0x1E, 0x8C, 0x94, 0xE0, 0x4A, - 0x25, 0x61, 0x9D, 0xCE, 0xE3, 0xD2, 0x26, - 0x1A, 0xD2, 0xEE, 0x6B, 0xF1, 0x2F, 0xFA, - 0x06, 0xD9, 0x8A, 0x08, 0x64, 0xD8, 0x76, - 0x02, 0x73, 0x3E, 0xC8, 0x6A, 0x64, 0x52, - 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C, - 0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, - 0x6C, 0x77, 0x09, 0x88, 0xC0, 0xBA, 0xD9, - 0x46, 0xE2, 0x08, 0xE2, 0x4F, 0xA0, 0x74, - 0xE5, 0xAB, 0x31, 0x43, 0xDB, 0x5B, 0xFC, - 0xE0, 0xFD, 0x10, 0x8E, 0x4B, 0x82, 0xD1, - 0x20, 0xA9, 0x21, 0x08, 0x01, 0x1A, 0x72, - 0x3C, 0x12, 0xA7, 0x87, 0xE6, 0xD7, 0x88, - 0x71, 0x9A, 0x10, 0xBD, 0xBA, 0x5B, 0x26, - 0x99, 0xC3, 0x27, 0x18, 0x6A, 0xF4, 0xE2, - 0x3C, 0x1A, 0x94, 0x68, 0x34, 0xB6, 0x15, - 0x0B, 0xDA, 0x25, 0x83, 0xE9, 0xCA, 0x2A, - 0xD4, 0x4C, 0xE8, 0xDB, 0xBB, 0xC2, 0xDB, - 0x04, 0xDE, 0x8E, 0xF9, 0x2E, 0x8E, 0xFC, - 0x14, 0x1F, 0xBE, 0xCA, 0xA6, 0x28, 0x7C, - 0x59, 0x47, 0x4E, 0x6B, 0xC0, 0x5D, 0x99, - 0xB2, 0x96, 0x4F, 0xA0, 0x90, 0xC3, 0xA2, - 0x23, 0x3B, 0xA1, 0x86, 0x51, 0x5B, 0xE7, - 0xED, 0x1F, 0x61, 0x29, 0x70, 0xCE, 0xE2, - 0xD7, 0xAF, 0xB8, 0x1B, 0xDD, 0x76, 0x21, - 0x70, 0x48, 0x1C, 0xD0, 0x06, 0x91, 0x27, - 0xD5, 0xB0, 0x5A, 0xA9, 0x93, 0xB4, 0xEA, - 0x98, 0x8D, 0x8F, 0xDD, 0xC1, 0x86, 0xFF, - 0xB7, 0xDC, 0x90, 0xA6, 0xC0, 0x8F, 0x4D, - 0xF4, 0x35, 0xC9, 0x34, 0x06, 0x31, 0x99, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x0F, 0xDA, 0xA2, + 0x21, 0x68, 0xC2, 0x34, 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, + 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, 0x02, 0x0B, 0xBE, 0xA6, + 0x3B, 0x13, 0x9B, 0x22, 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, + 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, 0x30, 0x2B, 0x0A, 0x6D, + 0xF2, 0x5F, 0x14, 0x37, 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, + 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, 0xF4, 0x4C, 0x42, 0xE9, + 0xA6, 0x37, 0xED, 0x6B, 0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, + 0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 0xAE, 0x9F, 0x24, 0x11, + 0x7C, 0x4B, 0x1F, 0xE6, 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, + 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, 0x98, 0xDA, 0x48, 0x36, + 0x1C, 0x55, 0xD3, 0x9A, 0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, + 0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, 0x1C, 0x62, 0xF3, 0x56, + 0x20, 0x85, 0x52, 0xBB, 0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, + 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, 0xF1, 0x74, 0x6C, 0x08, + 0xCA, 0x18, 0x21, 0x7C, 0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B, + 0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, 0x9B, 0x27, 0x83, 0xA2, + 0xEC, 0x07, 0xA2, 0x8F, 0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, + 0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, 0x39, 0x95, 0x49, 0x7C, + 0xEA, 0x95, 0x6A, 0xE5, 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, + 0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAA, 0xC4, 0x2D, 0xAD, 0x33, 0x17, 0x0D, + 0x04, 0x50, 0x7A, 0x33, 0xA8, 0x55, 0x21, 0xAB, 0xDF, 0x1C, 0xBA, 0x64, + 0xEC, 0xFB, 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A, 0x8A, 0xEA, 0x71, 0x57, + 0x5D, 0x06, 0x0C, 0x7D, 0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, 0xC7, + 0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, 0x33, 0xD7, 0x1E, 0x8C, 0x94, 0xE0, + 0x4A, 0x25, 0x61, 0x9D, 0xCE, 0xE3, 0xD2, 0x26, 0x1A, 0xD2, 0xEE, 0x6B, + 0xF1, 0x2F, 0xFA, 0x06, 0xD9, 0x8A, 0x08, 0x64, 0xD8, 0x76, 0x02, 0x73, + 0x3E, 0xC8, 0x6A, 0x64, 0x52, 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C, + 0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, 0x6C, 0x77, 0x09, 0x88, 0xC0, + 0xBA, 0xD9, 0x46, 0xE2, 0x08, 0xE2, 0x4F, 0xA0, 0x74, 0xE5, 0xAB, 0x31, + 0x43, 0xDB, 0x5B, 0xFC, 0xE0, 0xFD, 0x10, 0x8E, 0x4B, 0x82, 0xD1, 0x20, + 0xA9, 0x21, 0x08, 0x01, 0x1A, 0x72, 0x3C, 0x12, 0xA7, 0x87, 0xE6, 0xD7, + 0x88, 0x71, 0x9A, 0x10, 0xBD, 0xBA, 0x5B, 0x26, 0x99, 0xC3, 0x27, 0x18, + 0x6A, 0xF4, 0xE2, 0x3C, 0x1A, 0x94, 0x68, 0x34, 0xB6, 0x15, 0x0B, 0xDA, + 0x25, 0x83, 0xE9, 0xCA, 0x2A, 0xD4, 0x4C, 0xE8, 0xDB, 0xBB, 0xC2, 0xDB, + 0x04, 0xDE, 0x8E, 0xF9, 0x2E, 0x8E, 0xFC, 0x14, 0x1F, 0xBE, 0xCA, 0xA6, + 0x28, 0x7C, 0x59, 0x47, 0x4E, 0x6B, 0xC0, 0x5D, 0x99, 0xB2, 0x96, 0x4F, + 0xA0, 0x90, 0xC3, 0xA2, 0x23, 0x3B, 0xA1, 0x86, 0x51, 0x5B, 0xE7, 0xED, + 0x1F, 0x61, 0x29, 0x70, 0xCE, 0xE2, 0xD7, 0xAF, 0xB8, 0x1B, 0xDD, 0x76, + 0x21, 0x70, 0x48, 0x1C, 0xD0, 0x06, 0x91, 0x27, 0xD5, 0xB0, 0x5A, 0xA9, + 0x93, 0xB4, 0xEA, 0x98, 0x8D, 0x8F, 0xDD, 0xC1, 0x86, 0xFF, 0xB7, 0xDC, + 0x90, 0xA6, 0xC0, 0x8F, 0x4D, 0xF4, 0x35, 0xC9, 0x34, 0x06, 0x31, 0x99, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; static const unsigned char modp_q_4096[] = { - 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xE4, 0x87, 0xED, 0x51, 0x10, 0xB4, - 0x61, 0x1A, 0x62, 0x63, 0x31, 0x45, 0xC0, - 0x6E, 0x0E, 0x68, 0x94, 0x81, 0x27, 0x04, - 0x45, 0x33, 0xE6, 0x3A, 0x01, 0x05, 0xDF, - 0x53, 0x1D, 0x89, 0xCD, 0x91, 0x28, 0xA5, - 0x04, 0x3C, 0xC7, 0x1A, 0x02, 0x6E, 0xF7, - 0xCA, 0x8C, 0xD9, 0xE6, 0x9D, 0x21, 0x8D, - 0x98, 0x15, 0x85, 0x36, 0xF9, 0x2F, 0x8A, - 0x1B, 0xA7, 0xF0, 0x9A, 0xB6, 0xB6, 0xA8, - 0xE1, 0x22, 0xF2, 0x42, 0xDA, 0xBB, 0x31, - 0x2F, 0x3F, 0x63, 0x7A, 0x26, 0x21, 0x74, - 0xD3, 0x1B, 0xF6, 0xB5, 0x85, 0xFF, 0xAE, - 0x5B, 0x7A, 0x03, 0x5B, 0xF6, 0xF7, 0x1C, - 0x35, 0xFD, 0xAD, 0x44, 0xCF, 0xD2, 0xD7, - 0x4F, 0x92, 0x08, 0xBE, 0x25, 0x8F, 0xF3, - 0x24, 0x94, 0x33, 0x28, 0xF6, 0x72, 0x2D, - 0x9E, 0xE1, 0x00, 0x3E, 0x5C, 0x50, 0xB1, - 0xDF, 0x82, 0xCC, 0x6D, 0x24, 0x1B, 0x0E, - 0x2A, 0xE9, 0xCD, 0x34, 0x8B, 0x1F, 0xD4, - 0x7E, 0x92, 0x67, 0xAF, 0xC1, 0xB2, 0xAE, - 0x91, 0xEE, 0x51, 0xD6, 0xCB, 0x0E, 0x31, - 0x79, 0xAB, 0x10, 0x42, 0xA9, 0x5D, 0xCF, - 0x6A, 0x94, 0x83, 0xB8, 0x4B, 0x4B, 0x36, - 0xB3, 0x86, 0x1A, 0xA7, 0x25, 0x5E, 0x4C, - 0x02, 0x78, 0xBA, 0x36, 0x04, 0x65, 0x0C, - 0x10, 0xBE, 0x19, 0x48, 0x2F, 0x23, 0x17, - 0x1B, 0x67, 0x1D, 0xF1, 0xCF, 0x3B, 0x96, - 0x0C, 0x07, 0x43, 0x01, 0xCD, 0x93, 0xC1, - 0xD1, 0x76, 0x03, 0xD1, 0x47, 0xDA, 0xE2, - 0xAE, 0xF8, 0x37, 0xA6, 0x29, 0x64, 0xEF, - 0x15, 0xE5, 0xFB, 0x4A, 0xAC, 0x0B, 0x8C, - 0x1C, 0xCA, 0xA4, 0xBE, 0x75, 0x4A, 0xB5, - 0x72, 0x8A, 0xE9, 0x13, 0x0C, 0x4C, 0x7D, - 0x02, 0x88, 0x0A, 0xB9, 0x47, 0x2D, 0x45, - 0x55, 0x62, 0x16, 0xD6, 0x99, 0x8B, 0x86, - 0x82, 0x28, 0x3D, 0x19, 0xD4, 0x2A, 0x90, - 0xD5, 0xEF, 0x8E, 0x5D, 0x32, 0x76, 0x7D, - 0xC2, 0x82, 0x2C, 0x6D, 0xF7, 0x85, 0x45, - 0x75, 0x38, 0xAB, 0xAE, 0x83, 0x06, 0x3E, - 0xD9, 0xCB, 0x87, 0xC2, 0xD3, 0x70, 0xF2, - 0x63, 0xD5, 0xFA, 0xD7, 0x46, 0x6D, 0x84, - 0x99, 0xEB, 0x8F, 0x46, 0x4A, 0x70, 0x25, - 0x12, 0xB0, 0xCE, 0xE7, 0x71, 0xE9, 0x13, - 0x0D, 0x69, 0x77, 0x35, 0xF8, 0x97, 0xFD, - 0x03, 0x6C, 0xC5, 0x04, 0x32, 0x6C, 0x3B, - 0x01, 0x39, 0x9F, 0x64, 0x35, 0x32, 0x29, - 0x0F, 0x95, 0x8C, 0x0B, 0xBD, 0x90, 0x06, - 0x5D, 0xF0, 0x8B, 0xAB, 0xBD, 0x30, 0xAE, - 0xB6, 0x3B, 0x84, 0xC4, 0x60, 0x5D, 0x6C, - 0xA3, 0x71, 0x04, 0x71, 0x27, 0xD0, 0x3A, - 0x72, 0xD5, 0x98, 0xA1, 0xED, 0xAD, 0xFE, - 0x70, 0x7E, 0x88, 0x47, 0x25, 0xC1, 0x68, - 0x90, 0x54, 0x90, 0x84, 0x00, 0x8D, 0x39, - 0x1E, 0x09, 0x53, 0xC3, 0xF3, 0x6B, 0xC4, - 0x38, 0xCD, 0x08, 0x5E, 0xDD, 0x2D, 0x93, - 0x4C, 0xE1, 0x93, 0x8C, 0x35, 0x7A, 0x71, - 0x1E, 0x0D, 0x4A, 0x34, 0x1A, 0x5B, 0x0A, - 0x85, 0xED, 0x12, 0xC1, 0xF4, 0xE5, 0x15, - 0x6A, 0x26, 0x74, 0x6D, 0xDD, 0xE1, 0x6D, - 0x82, 0x6F, 0x47, 0x7C, 0x97, 0x47, 0x7E, - 0x0A, 0x0F, 0xDF, 0x65, 0x53, 0x14, 0x3E, - 0x2C, 0xA3, 0xA7, 0x35, 0xE0, 0x2E, 0xCC, - 0xD9, 0x4B, 0x27, 0xD0, 0x48, 0x61, 0xD1, - 0x11, 0x9D, 0xD0, 0xC3, 0x28, 0xAD, 0xF3, - 0xF6, 0x8F, 0xB0, 0x94, 0xB8, 0x67, 0x71, - 0x6B, 0xD7, 0xDC, 0x0D, 0xEE, 0xBB, 0x10, - 0xB8, 0x24, 0x0E, 0x68, 0x03, 0x48, 0x93, - 0xEA, 0xD8, 0x2D, 0x54, 0xC9, 0xDA, 0x75, - 0x4C, 0x46, 0xC7, 0xEE, 0xE0, 0xC3, 0x7F, - 0xDB, 0xEE, 0x48, 0x53, 0x60, 0x47, 0xA6, - 0xFA, 0x1A, 0xE4, 0x9A, 0x03, 0x18, 0xCC, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x87, 0xED, 0x51, + 0x10, 0xB4, 0x61, 0x1A, 0x62, 0x63, 0x31, 0x45, 0xC0, 0x6E, 0x0E, 0x68, + 0x94, 0x81, 0x27, 0x04, 0x45, 0x33, 0xE6, 0x3A, 0x01, 0x05, 0xDF, 0x53, + 0x1D, 0x89, 0xCD, 0x91, 0x28, 0xA5, 0x04, 0x3C, 0xC7, 0x1A, 0x02, 0x6E, + 0xF7, 0xCA, 0x8C, 0xD9, 0xE6, 0x9D, 0x21, 0x8D, 0x98, 0x15, 0x85, 0x36, + 0xF9, 0x2F, 0x8A, 0x1B, 0xA7, 0xF0, 0x9A, 0xB6, 0xB6, 0xA8, 0xE1, 0x22, + 0xF2, 0x42, 0xDA, 0xBB, 0x31, 0x2F, 0x3F, 0x63, 0x7A, 0x26, 0x21, 0x74, + 0xD3, 0x1B, 0xF6, 0xB5, 0x85, 0xFF, 0xAE, 0x5B, 0x7A, 0x03, 0x5B, 0xF6, + 0xF7, 0x1C, 0x35, 0xFD, 0xAD, 0x44, 0xCF, 0xD2, 0xD7, 0x4F, 0x92, 0x08, + 0xBE, 0x25, 0x8F, 0xF3, 0x24, 0x94, 0x33, 0x28, 0xF6, 0x72, 0x2D, 0x9E, + 0xE1, 0x00, 0x3E, 0x5C, 0x50, 0xB1, 0xDF, 0x82, 0xCC, 0x6D, 0x24, 0x1B, + 0x0E, 0x2A, 0xE9, 0xCD, 0x34, 0x8B, 0x1F, 0xD4, 0x7E, 0x92, 0x67, 0xAF, + 0xC1, 0xB2, 0xAE, 0x91, 0xEE, 0x51, 0xD6, 0xCB, 0x0E, 0x31, 0x79, 0xAB, + 0x10, 0x42, 0xA9, 0x5D, 0xCF, 0x6A, 0x94, 0x83, 0xB8, 0x4B, 0x4B, 0x36, + 0xB3, 0x86, 0x1A, 0xA7, 0x25, 0x5E, 0x4C, 0x02, 0x78, 0xBA, 0x36, 0x04, + 0x65, 0x0C, 0x10, 0xBE, 0x19, 0x48, 0x2F, 0x23, 0x17, 0x1B, 0x67, 0x1D, + 0xF1, 0xCF, 0x3B, 0x96, 0x0C, 0x07, 0x43, 0x01, 0xCD, 0x93, 0xC1, 0xD1, + 0x76, 0x03, 0xD1, 0x47, 0xDA, 0xE2, 0xAE, 0xF8, 0x37, 0xA6, 0x29, 0x64, + 0xEF, 0x15, 0xE5, 0xFB, 0x4A, 0xAC, 0x0B, 0x8C, 0x1C, 0xCA, 0xA4, 0xBE, + 0x75, 0x4A, 0xB5, 0x72, 0x8A, 0xE9, 0x13, 0x0C, 0x4C, 0x7D, 0x02, 0x88, + 0x0A, 0xB9, 0x47, 0x2D, 0x45, 0x55, 0x62, 0x16, 0xD6, 0x99, 0x8B, 0x86, + 0x82, 0x28, 0x3D, 0x19, 0xD4, 0x2A, 0x90, 0xD5, 0xEF, 0x8E, 0x5D, 0x32, + 0x76, 0x7D, 0xC2, 0x82, 0x2C, 0x6D, 0xF7, 0x85, 0x45, 0x75, 0x38, 0xAB, + 0xAE, 0x83, 0x06, 0x3E, 0xD9, 0xCB, 0x87, 0xC2, 0xD3, 0x70, 0xF2, 0x63, + 0xD5, 0xFA, 0xD7, 0x46, 0x6D, 0x84, 0x99, 0xEB, 0x8F, 0x46, 0x4A, 0x70, + 0x25, 0x12, 0xB0, 0xCE, 0xE7, 0x71, 0xE9, 0x13, 0x0D, 0x69, 0x77, 0x35, + 0xF8, 0x97, 0xFD, 0x03, 0x6C, 0xC5, 0x04, 0x32, 0x6C, 0x3B, 0x01, 0x39, + 0x9F, 0x64, 0x35, 0x32, 0x29, 0x0F, 0x95, 0x8C, 0x0B, 0xBD, 0x90, 0x06, + 0x5D, 0xF0, 0x8B, 0xAB, 0xBD, 0x30, 0xAE, 0xB6, 0x3B, 0x84, 0xC4, 0x60, + 0x5D, 0x6C, 0xA3, 0x71, 0x04, 0x71, 0x27, 0xD0, 0x3A, 0x72, 0xD5, 0x98, + 0xA1, 0xED, 0xAD, 0xFE, 0x70, 0x7E, 0x88, 0x47, 0x25, 0xC1, 0x68, 0x90, + 0x54, 0x90, 0x84, 0x00, 0x8D, 0x39, 0x1E, 0x09, 0x53, 0xC3, 0xF3, 0x6B, + 0xC4, 0x38, 0xCD, 0x08, 0x5E, 0xDD, 0x2D, 0x93, 0x4C, 0xE1, 0x93, 0x8C, + 0x35, 0x7A, 0x71, 0x1E, 0x0D, 0x4A, 0x34, 0x1A, 0x5B, 0x0A, 0x85, 0xED, + 0x12, 0xC1, 0xF4, 0xE5, 0x15, 0x6A, 0x26, 0x74, 0x6D, 0xDD, 0xE1, 0x6D, + 0x82, 0x6F, 0x47, 0x7C, 0x97, 0x47, 0x7E, 0x0A, 0x0F, 0xDF, 0x65, 0x53, + 0x14, 0x3E, 0x2C, 0xA3, 0xA7, 0x35, 0xE0, 0x2E, 0xCC, 0xD9, 0x4B, 0x27, + 0xD0, 0x48, 0x61, 0xD1, 0x11, 0x9D, 0xD0, 0xC3, 0x28, 0xAD, 0xF3, 0xF6, + 0x8F, 0xB0, 0x94, 0xB8, 0x67, 0x71, 0x6B, 0xD7, 0xDC, 0x0D, 0xEE, 0xBB, + 0x10, 0xB8, 0x24, 0x0E, 0x68, 0x03, 0x48, 0x93, 0xEA, 0xD8, 0x2D, 0x54, + 0xC9, 0xDA, 0x75, 0x4C, 0x46, 0xC7, 0xEE, 0xE0, 0xC3, 0x7F, 0xDB, 0xEE, + 0x48, 0x53, 0x60, 0x47, 0xA6, 0xFA, 0x1A, 0xE4, 0x9A, 0x03, 0x18, 0xCC, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; const gnutls_datum_t gnutls_modp_4096_group_prime = { (void *)modp_params_4096, sizeof(modp_params_4096) }; -const gnutls_datum_t gnutls_modp_4096_group_q = { - (void *)modp_q_4096, sizeof(modp_q_4096) -}; +const gnutls_datum_t gnutls_modp_4096_group_q = { (void *)modp_q_4096, + sizeof(modp_q_4096) }; const gnutls_datum_t gnutls_modp_4096_group_generator = { (void *)&modp_generator, sizeof(modp_generator) @@ -1368,238 +870,145 @@ const gnutls_datum_t gnutls_modp_4096_group_generator = { const unsigned int gnutls_modp_4096_key_bits = 336; static const unsigned char modp_params_6144[] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, - 0xC2, 0x34, 0xC4, 0xC6, 0x62, 0x8B, 0x80, - 0xDC, 0x1C, 0xD1, 0x29, 0x02, 0x4E, 0x08, - 0x8A, 0x67, 0xCC, 0x74, 0x02, 0x0B, 0xBE, - 0xA6, 0x3B, 0x13, 0x9B, 0x22, 0x51, 0x4A, - 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, 0xEF, - 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, - 0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, - 0x37, 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, - 0xC2, 0x45, 0xE4, 0x85, 0xB5, 0x76, 0x62, - 0x5E, 0x7E, 0xC6, 0xF4, 0x4C, 0x42, 0xE9, - 0xA6, 0x37, 0xED, 0x6B, 0x0B, 0xFF, 0x5C, - 0xB6, 0xF4, 0x06, 0xB7, 0xED, 0xEE, 0x38, - 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 0xAE, - 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6, - 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, - 0x3D, 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, - 0xBF, 0x05, 0x98, 0xDA, 0x48, 0x36, 0x1C, - 0x55, 0xD3, 0x9A, 0x69, 0x16, 0x3F, 0xA8, - 0xFD, 0x24, 0xCF, 0x5F, 0x83, 0x65, 0x5D, - 0x23, 0xDC, 0xA3, 0xAD, 0x96, 0x1C, 0x62, - 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB, 0x9E, - 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, - 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, - 0x04, 0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, - 0x21, 0x7C, 0x32, 0x90, 0x5E, 0x46, 0x2E, - 0x36, 0xCE, 0x3B, 0xE3, 0x9E, 0x77, 0x2C, - 0x18, 0x0E, 0x86, 0x03, 0x9B, 0x27, 0x83, - 0xA2, 0xEC, 0x07, 0xA2, 0x8F, 0xB5, 0xC5, - 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, 0xDE, - 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, - 0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, - 0xE5, 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, - 0x05, 0x10, 0x15, 0x72, 0x8E, 0x5A, 0x8A, - 0xAA, 0xC4, 0x2D, 0xAD, 0x33, 0x17, 0x0D, - 0x04, 0x50, 0x7A, 0x33, 0xA8, 0x55, 0x21, - 0xAB, 0xDF, 0x1C, 0xBA, 0x64, 0xEC, 0xFB, - 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A, 0x8A, - 0xEA, 0x71, 0x57, 0x5D, 0x06, 0x0C, 0x7D, - 0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, - 0xC7, 0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, - 0x33, 0xD7, 0x1E, 0x8C, 0x94, 0xE0, 0x4A, - 0x25, 0x61, 0x9D, 0xCE, 0xE3, 0xD2, 0x26, - 0x1A, 0xD2, 0xEE, 0x6B, 0xF1, 0x2F, 0xFA, - 0x06, 0xD9, 0x8A, 0x08, 0x64, 0xD8, 0x76, - 0x02, 0x73, 0x3E, 0xC8, 0x6A, 0x64, 0x52, - 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C, - 0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, - 0x6C, 0x77, 0x09, 0x88, 0xC0, 0xBA, 0xD9, - 0x46, 0xE2, 0x08, 0xE2, 0x4F, 0xA0, 0x74, - 0xE5, 0xAB, 0x31, 0x43, 0xDB, 0x5B, 0xFC, - 0xE0, 0xFD, 0x10, 0x8E, 0x4B, 0x82, 0xD1, - 0x20, 0xA9, 0x21, 0x08, 0x01, 0x1A, 0x72, - 0x3C, 0x12, 0xA7, 0x87, 0xE6, 0xD7, 0x88, - 0x71, 0x9A, 0x10, 0xBD, 0xBA, 0x5B, 0x26, - 0x99, 0xC3, 0x27, 0x18, 0x6A, 0xF4, 0xE2, - 0x3C, 0x1A, 0x94, 0x68, 0x34, 0xB6, 0x15, - 0x0B, 0xDA, 0x25, 0x83, 0xE9, 0xCA, 0x2A, - 0xD4, 0x4C, 0xE8, 0xDB, 0xBB, 0xC2, 0xDB, - 0x04, 0xDE, 0x8E, 0xF9, 0x2E, 0x8E, 0xFC, - 0x14, 0x1F, 0xBE, 0xCA, 0xA6, 0x28, 0x7C, - 0x59, 0x47, 0x4E, 0x6B, 0xC0, 0x5D, 0x99, - 0xB2, 0x96, 0x4F, 0xA0, 0x90, 0xC3, 0xA2, - 0x23, 0x3B, 0xA1, 0x86, 0x51, 0x5B, 0xE7, - 0xED, 0x1F, 0x61, 0x29, 0x70, 0xCE, 0xE2, - 0xD7, 0xAF, 0xB8, 0x1B, 0xDD, 0x76, 0x21, - 0x70, 0x48, 0x1C, 0xD0, 0x06, 0x91, 0x27, - 0xD5, 0xB0, 0x5A, 0xA9, 0x93, 0xB4, 0xEA, - 0x98, 0x8D, 0x8F, 0xDD, 0xC1, 0x86, 0xFF, - 0xB7, 0xDC, 0x90, 0xA6, 0xC0, 0x8F, 0x4D, - 0xF4, 0x35, 0xC9, 0x34, 0x02, 0x84, 0x92, - 0x36, 0xC3, 0xFA, 0xB4, 0xD2, 0x7C, 0x70, - 0x26, 0xC1, 0xD4, 0xDC, 0xB2, 0x60, 0x26, - 0x46, 0xDE, 0xC9, 0x75, 0x1E, 0x76, 0x3D, - 0xBA, 0x37, 0xBD, 0xF8, 0xFF, 0x94, 0x06, - 0xAD, 0x9E, 0x53, 0x0E, 0xE5, 0xDB, 0x38, - 0x2F, 0x41, 0x30, 0x01, 0xAE, 0xB0, 0x6A, - 0x53, 0xED, 0x90, 0x27, 0xD8, 0x31, 0x17, - 0x97, 0x27, 0xB0, 0x86, 0x5A, 0x89, 0x18, - 0xDA, 0x3E, 0xDB, 0xEB, 0xCF, 0x9B, 0x14, - 0xED, 0x44, 0xCE, 0x6C, 0xBA, 0xCE, 0xD4, - 0xBB, 0x1B, 0xDB, 0x7F, 0x14, 0x47, 0xE6, - 0xCC, 0x25, 0x4B, 0x33, 0x20, 0x51, 0x51, - 0x2B, 0xD7, 0xAF, 0x42, 0x6F, 0xB8, 0xF4, - 0x01, 0x37, 0x8C, 0xD2, 0xBF, 0x59, 0x83, - 0xCA, 0x01, 0xC6, 0x4B, 0x92, 0xEC, 0xF0, - 0x32, 0xEA, 0x15, 0xD1, 0x72, 0x1D, 0x03, - 0xF4, 0x82, 0xD7, 0xCE, 0x6E, 0x74, 0xFE, - 0xF6, 0xD5, 0x5E, 0x70, 0x2F, 0x46, 0x98, - 0x0C, 0x82, 0xB5, 0xA8, 0x40, 0x31, 0x90, - 0x0B, 0x1C, 0x9E, 0x59, 0xE7, 0xC9, 0x7F, - 0xBE, 0xC7, 0xE8, 0xF3, 0x23, 0xA9, 0x7A, - 0x7E, 0x36, 0xCC, 0x88, 0xBE, 0x0F, 0x1D, - 0x45, 0xB7, 0xFF, 0x58, 0x5A, 0xC5, 0x4B, - 0xD4, 0x07, 0xB2, 0x2B, 0x41, 0x54, 0xAA, - 0xCC, 0x8F, 0x6D, 0x7E, 0xBF, 0x48, 0xE1, - 0xD8, 0x14, 0xCC, 0x5E, 0xD2, 0x0F, 0x80, - 0x37, 0xE0, 0xA7, 0x97, 0x15, 0xEE, 0xF2, - 0x9B, 0xE3, 0x28, 0x06, 0xA1, 0xD5, 0x8B, - 0xB7, 0xC5, 0xDA, 0x76, 0xF5, 0x50, 0xAA, - 0x3D, 0x8A, 0x1F, 0xBF, 0xF0, 0xEB, 0x19, - 0xCC, 0xB1, 0xA3, 0x13, 0xD5, 0x5C, 0xDA, - 0x56, 0xC9, 0xEC, 0x2E, 0xF2, 0x96, 0x32, - 0x38, 0x7F, 0xE8, 0xD7, 0x6E, 0x3C, 0x04, - 0x68, 0x04, 0x3E, 0x8F, 0x66, 0x3F, 0x48, - 0x60, 0xEE, 0x12, 0xBF, 0x2D, 0x5B, 0x0B, - 0x74, 0x74, 0xD6, 0xE6, 0x94, 0xF9, 0x1E, - 0x6D, 0xCC, 0x40, 0x24, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x0F, 0xDA, 0xA2, + 0x21, 0x68, 0xC2, 0x34, 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, + 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, 0x02, 0x0B, 0xBE, 0xA6, + 0x3B, 0x13, 0x9B, 0x22, 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, + 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, 0x30, 0x2B, 0x0A, 0x6D, + 0xF2, 0x5F, 0x14, 0x37, 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, + 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, 0xF4, 0x4C, 0x42, 0xE9, + 0xA6, 0x37, 0xED, 0x6B, 0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, + 0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 0xAE, 0x9F, 0x24, 0x11, + 0x7C, 0x4B, 0x1F, 0xE6, 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, + 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, 0x98, 0xDA, 0x48, 0x36, + 0x1C, 0x55, 0xD3, 0x9A, 0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, + 0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, 0x1C, 0x62, 0xF3, 0x56, + 0x20, 0x85, 0x52, 0xBB, 0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, + 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, 0xF1, 0x74, 0x6C, 0x08, + 0xCA, 0x18, 0x21, 0x7C, 0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B, + 0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, 0x9B, 0x27, 0x83, 0xA2, + 0xEC, 0x07, 0xA2, 0x8F, 0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, + 0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, 0x39, 0x95, 0x49, 0x7C, + 0xEA, 0x95, 0x6A, 0xE5, 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, + 0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAA, 0xC4, 0x2D, 0xAD, 0x33, 0x17, 0x0D, + 0x04, 0x50, 0x7A, 0x33, 0xA8, 0x55, 0x21, 0xAB, 0xDF, 0x1C, 0xBA, 0x64, + 0xEC, 0xFB, 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A, 0x8A, 0xEA, 0x71, 0x57, + 0x5D, 0x06, 0x0C, 0x7D, 0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, 0xC7, + 0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, 0x33, 0xD7, 0x1E, 0x8C, 0x94, 0xE0, + 0x4A, 0x25, 0x61, 0x9D, 0xCE, 0xE3, 0xD2, 0x26, 0x1A, 0xD2, 0xEE, 0x6B, + 0xF1, 0x2F, 0xFA, 0x06, 0xD9, 0x8A, 0x08, 0x64, 0xD8, 0x76, 0x02, 0x73, + 0x3E, 0xC8, 0x6A, 0x64, 0x52, 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C, + 0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, 0x6C, 0x77, 0x09, 0x88, 0xC0, + 0xBA, 0xD9, 0x46, 0xE2, 0x08, 0xE2, 0x4F, 0xA0, 0x74, 0xE5, 0xAB, 0x31, + 0x43, 0xDB, 0x5B, 0xFC, 0xE0, 0xFD, 0x10, 0x8E, 0x4B, 0x82, 0xD1, 0x20, + 0xA9, 0x21, 0x08, 0x01, 0x1A, 0x72, 0x3C, 0x12, 0xA7, 0x87, 0xE6, 0xD7, + 0x88, 0x71, 0x9A, 0x10, 0xBD, 0xBA, 0x5B, 0x26, 0x99, 0xC3, 0x27, 0x18, + 0x6A, 0xF4, 0xE2, 0x3C, 0x1A, 0x94, 0x68, 0x34, 0xB6, 0x15, 0x0B, 0xDA, + 0x25, 0x83, 0xE9, 0xCA, 0x2A, 0xD4, 0x4C, 0xE8, 0xDB, 0xBB, 0xC2, 0xDB, + 0x04, 0xDE, 0x8E, 0xF9, 0x2E, 0x8E, 0xFC, 0x14, 0x1F, 0xBE, 0xCA, 0xA6, + 0x28, 0x7C, 0x59, 0x47, 0x4E, 0x6B, 0xC0, 0x5D, 0x99, 0xB2, 0x96, 0x4F, + 0xA0, 0x90, 0xC3, 0xA2, 0x23, 0x3B, 0xA1, 0x86, 0x51, 0x5B, 0xE7, 0xED, + 0x1F, 0x61, 0x29, 0x70, 0xCE, 0xE2, 0xD7, 0xAF, 0xB8, 0x1B, 0xDD, 0x76, + 0x21, 0x70, 0x48, 0x1C, 0xD0, 0x06, 0x91, 0x27, 0xD5, 0xB0, 0x5A, 0xA9, + 0x93, 0xB4, 0xEA, 0x98, 0x8D, 0x8F, 0xDD, 0xC1, 0x86, 0xFF, 0xB7, 0xDC, + 0x90, 0xA6, 0xC0, 0x8F, 0x4D, 0xF4, 0x35, 0xC9, 0x34, 0x02, 0x84, 0x92, + 0x36, 0xC3, 0xFA, 0xB4, 0xD2, 0x7C, 0x70, 0x26, 0xC1, 0xD4, 0xDC, 0xB2, + 0x60, 0x26, 0x46, 0xDE, 0xC9, 0x75, 0x1E, 0x76, 0x3D, 0xBA, 0x37, 0xBD, + 0xF8, 0xFF, 0x94, 0x06, 0xAD, 0x9E, 0x53, 0x0E, 0xE5, 0xDB, 0x38, 0x2F, + 0x41, 0x30, 0x01, 0xAE, 0xB0, 0x6A, 0x53, 0xED, 0x90, 0x27, 0xD8, 0x31, + 0x17, 0x97, 0x27, 0xB0, 0x86, 0x5A, 0x89, 0x18, 0xDA, 0x3E, 0xDB, 0xEB, + 0xCF, 0x9B, 0x14, 0xED, 0x44, 0xCE, 0x6C, 0xBA, 0xCE, 0xD4, 0xBB, 0x1B, + 0xDB, 0x7F, 0x14, 0x47, 0xE6, 0xCC, 0x25, 0x4B, 0x33, 0x20, 0x51, 0x51, + 0x2B, 0xD7, 0xAF, 0x42, 0x6F, 0xB8, 0xF4, 0x01, 0x37, 0x8C, 0xD2, 0xBF, + 0x59, 0x83, 0xCA, 0x01, 0xC6, 0x4B, 0x92, 0xEC, 0xF0, 0x32, 0xEA, 0x15, + 0xD1, 0x72, 0x1D, 0x03, 0xF4, 0x82, 0xD7, 0xCE, 0x6E, 0x74, 0xFE, 0xF6, + 0xD5, 0x5E, 0x70, 0x2F, 0x46, 0x98, 0x0C, 0x82, 0xB5, 0xA8, 0x40, 0x31, + 0x90, 0x0B, 0x1C, 0x9E, 0x59, 0xE7, 0xC9, 0x7F, 0xBE, 0xC7, 0xE8, 0xF3, + 0x23, 0xA9, 0x7A, 0x7E, 0x36, 0xCC, 0x88, 0xBE, 0x0F, 0x1D, 0x45, 0xB7, + 0xFF, 0x58, 0x5A, 0xC5, 0x4B, 0xD4, 0x07, 0xB2, 0x2B, 0x41, 0x54, 0xAA, + 0xCC, 0x8F, 0x6D, 0x7E, 0xBF, 0x48, 0xE1, 0xD8, 0x14, 0xCC, 0x5E, 0xD2, + 0x0F, 0x80, 0x37, 0xE0, 0xA7, 0x97, 0x15, 0xEE, 0xF2, 0x9B, 0xE3, 0x28, + 0x06, 0xA1, 0xD5, 0x8B, 0xB7, 0xC5, 0xDA, 0x76, 0xF5, 0x50, 0xAA, 0x3D, + 0x8A, 0x1F, 0xBF, 0xF0, 0xEB, 0x19, 0xCC, 0xB1, 0xA3, 0x13, 0xD5, 0x5C, + 0xDA, 0x56, 0xC9, 0xEC, 0x2E, 0xF2, 0x96, 0x32, 0x38, 0x7F, 0xE8, 0xD7, + 0x6E, 0x3C, 0x04, 0x68, 0x04, 0x3E, 0x8F, 0x66, 0x3F, 0x48, 0x60, 0xEE, + 0x12, 0xBF, 0x2D, 0x5B, 0x0B, 0x74, 0x74, 0xD6, 0xE6, 0x94, 0xF9, 0x1E, + 0x6D, 0xCC, 0x40, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; static const unsigned char modp_q_6144[] = { - 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xE4, 0x87, 0xED, 0x51, 0x10, 0xB4, - 0x61, 0x1A, 0x62, 0x63, 0x31, 0x45, 0xC0, - 0x6E, 0x0E, 0x68, 0x94, 0x81, 0x27, 0x04, - 0x45, 0x33, 0xE6, 0x3A, 0x01, 0x05, 0xDF, - 0x53, 0x1D, 0x89, 0xCD, 0x91, 0x28, 0xA5, - 0x04, 0x3C, 0xC7, 0x1A, 0x02, 0x6E, 0xF7, - 0xCA, 0x8C, 0xD9, 0xE6, 0x9D, 0x21, 0x8D, - 0x98, 0x15, 0x85, 0x36, 0xF9, 0x2F, 0x8A, - 0x1B, 0xA7, 0xF0, 0x9A, 0xB6, 0xB6, 0xA8, - 0xE1, 0x22, 0xF2, 0x42, 0xDA, 0xBB, 0x31, - 0x2F, 0x3F, 0x63, 0x7A, 0x26, 0x21, 0x74, - 0xD3, 0x1B, 0xF6, 0xB5, 0x85, 0xFF, 0xAE, - 0x5B, 0x7A, 0x03, 0x5B, 0xF6, 0xF7, 0x1C, - 0x35, 0xFD, 0xAD, 0x44, 0xCF, 0xD2, 0xD7, - 0x4F, 0x92, 0x08, 0xBE, 0x25, 0x8F, 0xF3, - 0x24, 0x94, 0x33, 0x28, 0xF6, 0x72, 0x2D, - 0x9E, 0xE1, 0x00, 0x3E, 0x5C, 0x50, 0xB1, - 0xDF, 0x82, 0xCC, 0x6D, 0x24, 0x1B, 0x0E, - 0x2A, 0xE9, 0xCD, 0x34, 0x8B, 0x1F, 0xD4, - 0x7E, 0x92, 0x67, 0xAF, 0xC1, 0xB2, 0xAE, - 0x91, 0xEE, 0x51, 0xD6, 0xCB, 0x0E, 0x31, - 0x79, 0xAB, 0x10, 0x42, 0xA9, 0x5D, 0xCF, - 0x6A, 0x94, 0x83, 0xB8, 0x4B, 0x4B, 0x36, - 0xB3, 0x86, 0x1A, 0xA7, 0x25, 0x5E, 0x4C, - 0x02, 0x78, 0xBA, 0x36, 0x04, 0x65, 0x0C, - 0x10, 0xBE, 0x19, 0x48, 0x2F, 0x23, 0x17, - 0x1B, 0x67, 0x1D, 0xF1, 0xCF, 0x3B, 0x96, - 0x0C, 0x07, 0x43, 0x01, 0xCD, 0x93, 0xC1, - 0xD1, 0x76, 0x03, 0xD1, 0x47, 0xDA, 0xE2, - 0xAE, 0xF8, 0x37, 0xA6, 0x29, 0x64, 0xEF, - 0x15, 0xE5, 0xFB, 0x4A, 0xAC, 0x0B, 0x8C, - 0x1C, 0xCA, 0xA4, 0xBE, 0x75, 0x4A, 0xB5, - 0x72, 0x8A, 0xE9, 0x13, 0x0C, 0x4C, 0x7D, - 0x02, 0x88, 0x0A, 0xB9, 0x47, 0x2D, 0x45, - 0x55, 0x62, 0x16, 0xD6, 0x99, 0x8B, 0x86, - 0x82, 0x28, 0x3D, 0x19, 0xD4, 0x2A, 0x90, - 0xD5, 0xEF, 0x8E, 0x5D, 0x32, 0x76, 0x7D, - 0xC2, 0x82, 0x2C, 0x6D, 0xF7, 0x85, 0x45, - 0x75, 0x38, 0xAB, 0xAE, 0x83, 0x06, 0x3E, - 0xD9, 0xCB, 0x87, 0xC2, 0xD3, 0x70, 0xF2, - 0x63, 0xD5, 0xFA, 0xD7, 0x46, 0x6D, 0x84, - 0x99, 0xEB, 0x8F, 0x46, 0x4A, 0x70, 0x25, - 0x12, 0xB0, 0xCE, 0xE7, 0x71, 0xE9, 0x13, - 0x0D, 0x69, 0x77, 0x35, 0xF8, 0x97, 0xFD, - 0x03, 0x6C, 0xC5, 0x04, 0x32, 0x6C, 0x3B, - 0x01, 0x39, 0x9F, 0x64, 0x35, 0x32, 0x29, - 0x0F, 0x95, 0x8C, 0x0B, 0xBD, 0x90, 0x06, - 0x5D, 0xF0, 0x8B, 0xAB, 0xBD, 0x30, 0xAE, - 0xB6, 0x3B, 0x84, 0xC4, 0x60, 0x5D, 0x6C, - 0xA3, 0x71, 0x04, 0x71, 0x27, 0xD0, 0x3A, - 0x72, 0xD5, 0x98, 0xA1, 0xED, 0xAD, 0xFE, - 0x70, 0x7E, 0x88, 0x47, 0x25, 0xC1, 0x68, - 0x90, 0x54, 0x90, 0x84, 0x00, 0x8D, 0x39, - 0x1E, 0x09, 0x53, 0xC3, 0xF3, 0x6B, 0xC4, - 0x38, 0xCD, 0x08, 0x5E, 0xDD, 0x2D, 0x93, - 0x4C, 0xE1, 0x93, 0x8C, 0x35, 0x7A, 0x71, - 0x1E, 0x0D, 0x4A, 0x34, 0x1A, 0x5B, 0x0A, - 0x85, 0xED, 0x12, 0xC1, 0xF4, 0xE5, 0x15, - 0x6A, 0x26, 0x74, 0x6D, 0xDD, 0xE1, 0x6D, - 0x82, 0x6F, 0x47, 0x7C, 0x97, 0x47, 0x7E, - 0x0A, 0x0F, 0xDF, 0x65, 0x53, 0x14, 0x3E, - 0x2C, 0xA3, 0xA7, 0x35, 0xE0, 0x2E, 0xCC, - 0xD9, 0x4B, 0x27, 0xD0, 0x48, 0x61, 0xD1, - 0x11, 0x9D, 0xD0, 0xC3, 0x28, 0xAD, 0xF3, - 0xF6, 0x8F, 0xB0, 0x94, 0xB8, 0x67, 0x71, - 0x6B, 0xD7, 0xDC, 0x0D, 0xEE, 0xBB, 0x10, - 0xB8, 0x24, 0x0E, 0x68, 0x03, 0x48, 0x93, - 0xEA, 0xD8, 0x2D, 0x54, 0xC9, 0xDA, 0x75, - 0x4C, 0x46, 0xC7, 0xEE, 0xE0, 0xC3, 0x7F, - 0xDB, 0xEE, 0x48, 0x53, 0x60, 0x47, 0xA6, - 0xFA, 0x1A, 0xE4, 0x9A, 0x01, 0x42, 0x49, - 0x1B, 0x61, 0xFD, 0x5A, 0x69, 0x3E, 0x38, - 0x13, 0x60, 0xEA, 0x6E, 0x59, 0x30, 0x13, - 0x23, 0x6F, 0x64, 0xBA, 0x8F, 0x3B, 0x1E, - 0xDD, 0x1B, 0xDE, 0xFC, 0x7F, 0xCA, 0x03, - 0x56, 0xCF, 0x29, 0x87, 0x72, 0xED, 0x9C, - 0x17, 0xA0, 0x98, 0x00, 0xD7, 0x58, 0x35, - 0x29, 0xF6, 0xC8, 0x13, 0xEC, 0x18, 0x8B, - 0xCB, 0x93, 0xD8, 0x43, 0x2D, 0x44, 0x8C, - 0x6D, 0x1F, 0x6D, 0xF5, 0xE7, 0xCD, 0x8A, - 0x76, 0xA2, 0x67, 0x36, 0x5D, 0x67, 0x6A, - 0x5D, 0x8D, 0xED, 0xBF, 0x8A, 0x23, 0xF3, - 0x66, 0x12, 0xA5, 0x99, 0x90, 0x28, 0xA8, - 0x95, 0xEB, 0xD7, 0xA1, 0x37, 0xDC, 0x7A, - 0x00, 0x9B, 0xC6, 0x69, 0x5F, 0xAC, 0xC1, - 0xE5, 0x00, 0xE3, 0x25, 0xC9, 0x76, 0x78, - 0x19, 0x75, 0x0A, 0xE8, 0xB9, 0x0E, 0x81, - 0xFA, 0x41, 0x6B, 0xE7, 0x37, 0x3A, 0x7F, - 0x7B, 0x6A, 0xAF, 0x38, 0x17, 0xA3, 0x4C, - 0x06, 0x41, 0x5A, 0xD4, 0x20, 0x18, 0xC8, - 0x05, 0x8E, 0x4F, 0x2C, 0xF3, 0xE4, 0xBF, - 0xDF, 0x63, 0xF4, 0x79, 0x91, 0xD4, 0xBD, - 0x3F, 0x1B, 0x66, 0x44, 0x5F, 0x07, 0x8E, - 0xA2, 0xDB, 0xFF, 0xAC, 0x2D, 0x62, 0xA5, - 0xEA, 0x03, 0xD9, 0x15, 0xA0, 0xAA, 0x55, - 0x66, 0x47, 0xB6, 0xBF, 0x5F, 0xA4, 0x70, - 0xEC, 0x0A, 0x66, 0x2F, 0x69, 0x07, 0xC0, - 0x1B, 0xF0, 0x53, 0xCB, 0x8A, 0xF7, 0x79, - 0x4D, 0xF1, 0x94, 0x03, 0x50, 0xEA, 0xC5, - 0xDB, 0xE2, 0xED, 0x3B, 0x7A, 0xA8, 0x55, - 0x1E, 0xC5, 0x0F, 0xDF, 0xF8, 0x75, 0x8C, - 0xE6, 0x58, 0xD1, 0x89, 0xEA, 0xAE, 0x6D, - 0x2B, 0x64, 0xF6, 0x17, 0x79, 0x4B, 0x19, - 0x1C, 0x3F, 0xF4, 0x6B, 0xB7, 0x1E, 0x02, - 0x34, 0x02, 0x1F, 0x47, 0xB3, 0x1F, 0xA4, - 0x30, 0x77, 0x09, 0x5F, 0x96, 0xAD, 0x85, - 0xBA, 0x3A, 0x6B, 0x73, 0x4A, 0x7C, 0x8F, - 0x36, 0xE6, 0x20, 0x12, 0x7F, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x87, 0xED, 0x51, + 0x10, 0xB4, 0x61, 0x1A, 0x62, 0x63, 0x31, 0x45, 0xC0, 0x6E, 0x0E, 0x68, + 0x94, 0x81, 0x27, 0x04, 0x45, 0x33, 0xE6, 0x3A, 0x01, 0x05, 0xDF, 0x53, + 0x1D, 0x89, 0xCD, 0x91, 0x28, 0xA5, 0x04, 0x3C, 0xC7, 0x1A, 0x02, 0x6E, + 0xF7, 0xCA, 0x8C, 0xD9, 0xE6, 0x9D, 0x21, 0x8D, 0x98, 0x15, 0x85, 0x36, + 0xF9, 0x2F, 0x8A, 0x1B, 0xA7, 0xF0, 0x9A, 0xB6, 0xB6, 0xA8, 0xE1, 0x22, + 0xF2, 0x42, 0xDA, 0xBB, 0x31, 0x2F, 0x3F, 0x63, 0x7A, 0x26, 0x21, 0x74, + 0xD3, 0x1B, 0xF6, 0xB5, 0x85, 0xFF, 0xAE, 0x5B, 0x7A, 0x03, 0x5B, 0xF6, + 0xF7, 0x1C, 0x35, 0xFD, 0xAD, 0x44, 0xCF, 0xD2, 0xD7, 0x4F, 0x92, 0x08, + 0xBE, 0x25, 0x8F, 0xF3, 0x24, 0x94, 0x33, 0x28, 0xF6, 0x72, 0x2D, 0x9E, + 0xE1, 0x00, 0x3E, 0x5C, 0x50, 0xB1, 0xDF, 0x82, 0xCC, 0x6D, 0x24, 0x1B, + 0x0E, 0x2A, 0xE9, 0xCD, 0x34, 0x8B, 0x1F, 0xD4, 0x7E, 0x92, 0x67, 0xAF, + 0xC1, 0xB2, 0xAE, 0x91, 0xEE, 0x51, 0xD6, 0xCB, 0x0E, 0x31, 0x79, 0xAB, + 0x10, 0x42, 0xA9, 0x5D, 0xCF, 0x6A, 0x94, 0x83, 0xB8, 0x4B, 0x4B, 0x36, + 0xB3, 0x86, 0x1A, 0xA7, 0x25, 0x5E, 0x4C, 0x02, 0x78, 0xBA, 0x36, 0x04, + 0x65, 0x0C, 0x10, 0xBE, 0x19, 0x48, 0x2F, 0x23, 0x17, 0x1B, 0x67, 0x1D, + 0xF1, 0xCF, 0x3B, 0x96, 0x0C, 0x07, 0x43, 0x01, 0xCD, 0x93, 0xC1, 0xD1, + 0x76, 0x03, 0xD1, 0x47, 0xDA, 0xE2, 0xAE, 0xF8, 0x37, 0xA6, 0x29, 0x64, + 0xEF, 0x15, 0xE5, 0xFB, 0x4A, 0xAC, 0x0B, 0x8C, 0x1C, 0xCA, 0xA4, 0xBE, + 0x75, 0x4A, 0xB5, 0x72, 0x8A, 0xE9, 0x13, 0x0C, 0x4C, 0x7D, 0x02, 0x88, + 0x0A, 0xB9, 0x47, 0x2D, 0x45, 0x55, 0x62, 0x16, 0xD6, 0x99, 0x8B, 0x86, + 0x82, 0x28, 0x3D, 0x19, 0xD4, 0x2A, 0x90, 0xD5, 0xEF, 0x8E, 0x5D, 0x32, + 0x76, 0x7D, 0xC2, 0x82, 0x2C, 0x6D, 0xF7, 0x85, 0x45, 0x75, 0x38, 0xAB, + 0xAE, 0x83, 0x06, 0x3E, 0xD9, 0xCB, 0x87, 0xC2, 0xD3, 0x70, 0xF2, 0x63, + 0xD5, 0xFA, 0xD7, 0x46, 0x6D, 0x84, 0x99, 0xEB, 0x8F, 0x46, 0x4A, 0x70, + 0x25, 0x12, 0xB0, 0xCE, 0xE7, 0x71, 0xE9, 0x13, 0x0D, 0x69, 0x77, 0x35, + 0xF8, 0x97, 0xFD, 0x03, 0x6C, 0xC5, 0x04, 0x32, 0x6C, 0x3B, 0x01, 0x39, + 0x9F, 0x64, 0x35, 0x32, 0x29, 0x0F, 0x95, 0x8C, 0x0B, 0xBD, 0x90, 0x06, + 0x5D, 0xF0, 0x8B, 0xAB, 0xBD, 0x30, 0xAE, 0xB6, 0x3B, 0x84, 0xC4, 0x60, + 0x5D, 0x6C, 0xA3, 0x71, 0x04, 0x71, 0x27, 0xD0, 0x3A, 0x72, 0xD5, 0x98, + 0xA1, 0xED, 0xAD, 0xFE, 0x70, 0x7E, 0x88, 0x47, 0x25, 0xC1, 0x68, 0x90, + 0x54, 0x90, 0x84, 0x00, 0x8D, 0x39, 0x1E, 0x09, 0x53, 0xC3, 0xF3, 0x6B, + 0xC4, 0x38, 0xCD, 0x08, 0x5E, 0xDD, 0x2D, 0x93, 0x4C, 0xE1, 0x93, 0x8C, + 0x35, 0x7A, 0x71, 0x1E, 0x0D, 0x4A, 0x34, 0x1A, 0x5B, 0x0A, 0x85, 0xED, + 0x12, 0xC1, 0xF4, 0xE5, 0x15, 0x6A, 0x26, 0x74, 0x6D, 0xDD, 0xE1, 0x6D, + 0x82, 0x6F, 0x47, 0x7C, 0x97, 0x47, 0x7E, 0x0A, 0x0F, 0xDF, 0x65, 0x53, + 0x14, 0x3E, 0x2C, 0xA3, 0xA7, 0x35, 0xE0, 0x2E, 0xCC, 0xD9, 0x4B, 0x27, + 0xD0, 0x48, 0x61, 0xD1, 0x11, 0x9D, 0xD0, 0xC3, 0x28, 0xAD, 0xF3, 0xF6, + 0x8F, 0xB0, 0x94, 0xB8, 0x67, 0x71, 0x6B, 0xD7, 0xDC, 0x0D, 0xEE, 0xBB, + 0x10, 0xB8, 0x24, 0x0E, 0x68, 0x03, 0x48, 0x93, 0xEA, 0xD8, 0x2D, 0x54, + 0xC9, 0xDA, 0x75, 0x4C, 0x46, 0xC7, 0xEE, 0xE0, 0xC3, 0x7F, 0xDB, 0xEE, + 0x48, 0x53, 0x60, 0x47, 0xA6, 0xFA, 0x1A, 0xE4, 0x9A, 0x01, 0x42, 0x49, + 0x1B, 0x61, 0xFD, 0x5A, 0x69, 0x3E, 0x38, 0x13, 0x60, 0xEA, 0x6E, 0x59, + 0x30, 0x13, 0x23, 0x6F, 0x64, 0xBA, 0x8F, 0x3B, 0x1E, 0xDD, 0x1B, 0xDE, + 0xFC, 0x7F, 0xCA, 0x03, 0x56, 0xCF, 0x29, 0x87, 0x72, 0xED, 0x9C, 0x17, + 0xA0, 0x98, 0x00, 0xD7, 0x58, 0x35, 0x29, 0xF6, 0xC8, 0x13, 0xEC, 0x18, + 0x8B, 0xCB, 0x93, 0xD8, 0x43, 0x2D, 0x44, 0x8C, 0x6D, 0x1F, 0x6D, 0xF5, + 0xE7, 0xCD, 0x8A, 0x76, 0xA2, 0x67, 0x36, 0x5D, 0x67, 0x6A, 0x5D, 0x8D, + 0xED, 0xBF, 0x8A, 0x23, 0xF3, 0x66, 0x12, 0xA5, 0x99, 0x90, 0x28, 0xA8, + 0x95, 0xEB, 0xD7, 0xA1, 0x37, 0xDC, 0x7A, 0x00, 0x9B, 0xC6, 0x69, 0x5F, + 0xAC, 0xC1, 0xE5, 0x00, 0xE3, 0x25, 0xC9, 0x76, 0x78, 0x19, 0x75, 0x0A, + 0xE8, 0xB9, 0x0E, 0x81, 0xFA, 0x41, 0x6B, 0xE7, 0x37, 0x3A, 0x7F, 0x7B, + 0x6A, 0xAF, 0x38, 0x17, 0xA3, 0x4C, 0x06, 0x41, 0x5A, 0xD4, 0x20, 0x18, + 0xC8, 0x05, 0x8E, 0x4F, 0x2C, 0xF3, 0xE4, 0xBF, 0xDF, 0x63, 0xF4, 0x79, + 0x91, 0xD4, 0xBD, 0x3F, 0x1B, 0x66, 0x44, 0x5F, 0x07, 0x8E, 0xA2, 0xDB, + 0xFF, 0xAC, 0x2D, 0x62, 0xA5, 0xEA, 0x03, 0xD9, 0x15, 0xA0, 0xAA, 0x55, + 0x66, 0x47, 0xB6, 0xBF, 0x5F, 0xA4, 0x70, 0xEC, 0x0A, 0x66, 0x2F, 0x69, + 0x07, 0xC0, 0x1B, 0xF0, 0x53, 0xCB, 0x8A, 0xF7, 0x79, 0x4D, 0xF1, 0x94, + 0x03, 0x50, 0xEA, 0xC5, 0xDB, 0xE2, 0xED, 0x3B, 0x7A, 0xA8, 0x55, 0x1E, + 0xC5, 0x0F, 0xDF, 0xF8, 0x75, 0x8C, 0xE6, 0x58, 0xD1, 0x89, 0xEA, 0xAE, + 0x6D, 0x2B, 0x64, 0xF6, 0x17, 0x79, 0x4B, 0x19, 0x1C, 0x3F, 0xF4, 0x6B, + 0xB7, 0x1E, 0x02, 0x34, 0x02, 0x1F, 0x47, 0xB3, 0x1F, 0xA4, 0x30, 0x77, + 0x09, 0x5F, 0x96, 0xAD, 0x85, 0xBA, 0x3A, 0x6B, 0x73, 0x4A, 0x7C, 0x8F, + 0x36, 0xE6, 0x20, 0x12, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; const gnutls_datum_t gnutls_modp_6144_group_prime = { (void *)modp_params_6144, sizeof(modp_params_6144) }; -const gnutls_datum_t gnutls_modp_6144_group_q = { - (void *)modp_q_6144, sizeof(modp_q_6144) -}; +const gnutls_datum_t gnutls_modp_6144_group_q = { (void *)modp_q_6144, + sizeof(modp_q_6144) }; const gnutls_datum_t gnutls_modp_6144_group_generator = { (void *)&modp_generator, sizeof(modp_generator) @@ -1608,312 +1017,189 @@ const gnutls_datum_t gnutls_modp_6144_group_generator = { const unsigned int gnutls_modp_6144_key_bits = 376; static const unsigned char modp_params_8192[] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, - 0xC2, 0x34, 0xC4, 0xC6, 0x62, 0x8B, 0x80, - 0xDC, 0x1C, 0xD1, 0x29, 0x02, 0x4E, 0x08, - 0x8A, 0x67, 0xCC, 0x74, 0x02, 0x0B, 0xBE, - 0xA6, 0x3B, 0x13, 0x9B, 0x22, 0x51, 0x4A, - 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, 0xEF, - 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, - 0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, - 0x37, 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, - 0xC2, 0x45, 0xE4, 0x85, 0xB5, 0x76, 0x62, - 0x5E, 0x7E, 0xC6, 0xF4, 0x4C, 0x42, 0xE9, - 0xA6, 0x37, 0xED, 0x6B, 0x0B, 0xFF, 0x5C, - 0xB6, 0xF4, 0x06, 0xB7, 0xED, 0xEE, 0x38, - 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 0xAE, - 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6, - 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, - 0x3D, 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, - 0xBF, 0x05, 0x98, 0xDA, 0x48, 0x36, 0x1C, - 0x55, 0xD3, 0x9A, 0x69, 0x16, 0x3F, 0xA8, - 0xFD, 0x24, 0xCF, 0x5F, 0x83, 0x65, 0x5D, - 0x23, 0xDC, 0xA3, 0xAD, 0x96, 0x1C, 0x62, - 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB, 0x9E, - 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, - 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, - 0x04, 0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, - 0x21, 0x7C, 0x32, 0x90, 0x5E, 0x46, 0x2E, - 0x36, 0xCE, 0x3B, 0xE3, 0x9E, 0x77, 0x2C, - 0x18, 0x0E, 0x86, 0x03, 0x9B, 0x27, 0x83, - 0xA2, 0xEC, 0x07, 0xA2, 0x8F, 0xB5, 0xC5, - 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, 0xDE, - 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, - 0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, - 0xE5, 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, - 0x05, 0x10, 0x15, 0x72, 0x8E, 0x5A, 0x8A, - 0xAA, 0xC4, 0x2D, 0xAD, 0x33, 0x17, 0x0D, - 0x04, 0x50, 0x7A, 0x33, 0xA8, 0x55, 0x21, - 0xAB, 0xDF, 0x1C, 0xBA, 0x64, 0xEC, 0xFB, - 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A, 0x8A, - 0xEA, 0x71, 0x57, 0x5D, 0x06, 0x0C, 0x7D, - 0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, - 0xC7, 0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, - 0x33, 0xD7, 0x1E, 0x8C, 0x94, 0xE0, 0x4A, - 0x25, 0x61, 0x9D, 0xCE, 0xE3, 0xD2, 0x26, - 0x1A, 0xD2, 0xEE, 0x6B, 0xF1, 0x2F, 0xFA, - 0x06, 0xD9, 0x8A, 0x08, 0x64, 0xD8, 0x76, - 0x02, 0x73, 0x3E, 0xC8, 0x6A, 0x64, 0x52, - 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C, - 0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, - 0x6C, 0x77, 0x09, 0x88, 0xC0, 0xBA, 0xD9, - 0x46, 0xE2, 0x08, 0xE2, 0x4F, 0xA0, 0x74, - 0xE5, 0xAB, 0x31, 0x43, 0xDB, 0x5B, 0xFC, - 0xE0, 0xFD, 0x10, 0x8E, 0x4B, 0x82, 0xD1, - 0x20, 0xA9, 0x21, 0x08, 0x01, 0x1A, 0x72, - 0x3C, 0x12, 0xA7, 0x87, 0xE6, 0xD7, 0x88, - 0x71, 0x9A, 0x10, 0xBD, 0xBA, 0x5B, 0x26, - 0x99, 0xC3, 0x27, 0x18, 0x6A, 0xF4, 0xE2, - 0x3C, 0x1A, 0x94, 0x68, 0x34, 0xB6, 0x15, - 0x0B, 0xDA, 0x25, 0x83, 0xE9, 0xCA, 0x2A, - 0xD4, 0x4C, 0xE8, 0xDB, 0xBB, 0xC2, 0xDB, - 0x04, 0xDE, 0x8E, 0xF9, 0x2E, 0x8E, 0xFC, - 0x14, 0x1F, 0xBE, 0xCA, 0xA6, 0x28, 0x7C, - 0x59, 0x47, 0x4E, 0x6B, 0xC0, 0x5D, 0x99, - 0xB2, 0x96, 0x4F, 0xA0, 0x90, 0xC3, 0xA2, - 0x23, 0x3B, 0xA1, 0x86, 0x51, 0x5B, 0xE7, - 0xED, 0x1F, 0x61, 0x29, 0x70, 0xCE, 0xE2, - 0xD7, 0xAF, 0xB8, 0x1B, 0xDD, 0x76, 0x21, - 0x70, 0x48, 0x1C, 0xD0, 0x06, 0x91, 0x27, - 0xD5, 0xB0, 0x5A, 0xA9, 0x93, 0xB4, 0xEA, - 0x98, 0x8D, 0x8F, 0xDD, 0xC1, 0x86, 0xFF, - 0xB7, 0xDC, 0x90, 0xA6, 0xC0, 0x8F, 0x4D, - 0xF4, 0x35, 0xC9, 0x34, 0x02, 0x84, 0x92, - 0x36, 0xC3, 0xFA, 0xB4, 0xD2, 0x7C, 0x70, - 0x26, 0xC1, 0xD4, 0xDC, 0xB2, 0x60, 0x26, - 0x46, 0xDE, 0xC9, 0x75, 0x1E, 0x76, 0x3D, - 0xBA, 0x37, 0xBD, 0xF8, 0xFF, 0x94, 0x06, - 0xAD, 0x9E, 0x53, 0x0E, 0xE5, 0xDB, 0x38, - 0x2F, 0x41, 0x30, 0x01, 0xAE, 0xB0, 0x6A, - 0x53, 0xED, 0x90, 0x27, 0xD8, 0x31, 0x17, - 0x97, 0x27, 0xB0, 0x86, 0x5A, 0x89, 0x18, - 0xDA, 0x3E, 0xDB, 0xEB, 0xCF, 0x9B, 0x14, - 0xED, 0x44, 0xCE, 0x6C, 0xBA, 0xCE, 0xD4, - 0xBB, 0x1B, 0xDB, 0x7F, 0x14, 0x47, 0xE6, - 0xCC, 0x25, 0x4B, 0x33, 0x20, 0x51, 0x51, - 0x2B, 0xD7, 0xAF, 0x42, 0x6F, 0xB8, 0xF4, - 0x01, 0x37, 0x8C, 0xD2, 0xBF, 0x59, 0x83, - 0xCA, 0x01, 0xC6, 0x4B, 0x92, 0xEC, 0xF0, - 0x32, 0xEA, 0x15, 0xD1, 0x72, 0x1D, 0x03, - 0xF4, 0x82, 0xD7, 0xCE, 0x6E, 0x74, 0xFE, - 0xF6, 0xD5, 0x5E, 0x70, 0x2F, 0x46, 0x98, - 0x0C, 0x82, 0xB5, 0xA8, 0x40, 0x31, 0x90, - 0x0B, 0x1C, 0x9E, 0x59, 0xE7, 0xC9, 0x7F, - 0xBE, 0xC7, 0xE8, 0xF3, 0x23, 0xA9, 0x7A, - 0x7E, 0x36, 0xCC, 0x88, 0xBE, 0x0F, 0x1D, - 0x45, 0xB7, 0xFF, 0x58, 0x5A, 0xC5, 0x4B, - 0xD4, 0x07, 0xB2, 0x2B, 0x41, 0x54, 0xAA, - 0xCC, 0x8F, 0x6D, 0x7E, 0xBF, 0x48, 0xE1, - 0xD8, 0x14, 0xCC, 0x5E, 0xD2, 0x0F, 0x80, - 0x37, 0xE0, 0xA7, 0x97, 0x15, 0xEE, 0xF2, - 0x9B, 0xE3, 0x28, 0x06, 0xA1, 0xD5, 0x8B, - 0xB7, 0xC5, 0xDA, 0x76, 0xF5, 0x50, 0xAA, - 0x3D, 0x8A, 0x1F, 0xBF, 0xF0, 0xEB, 0x19, - 0xCC, 0xB1, 0xA3, 0x13, 0xD5, 0x5C, 0xDA, - 0x56, 0xC9, 0xEC, 0x2E, 0xF2, 0x96, 0x32, - 0x38, 0x7F, 0xE8, 0xD7, 0x6E, 0x3C, 0x04, - 0x68, 0x04, 0x3E, 0x8F, 0x66, 0x3F, 0x48, - 0x60, 0xEE, 0x12, 0xBF, 0x2D, 0x5B, 0x0B, - 0x74, 0x74, 0xD6, 0xE6, 0x94, 0xF9, 0x1E, - 0x6D, 0xBE, 0x11, 0x59, 0x74, 0xA3, 0x92, - 0x6F, 0x12, 0xFE, 0xE5, 0xE4, 0x38, 0x77, - 0x7C, 0xB6, 0xA9, 0x32, 0xDF, 0x8C, 0xD8, - 0xBE, 0xC4, 0xD0, 0x73, 0xB9, 0x31, 0xBA, - 0x3B, 0xC8, 0x32, 0xB6, 0x8D, 0x9D, 0xD3, - 0x00, 0x74, 0x1F, 0xA7, 0xBF, 0x8A, 0xFC, - 0x47, 0xED, 0x25, 0x76, 0xF6, 0x93, 0x6B, - 0xA4, 0x24, 0x66, 0x3A, 0xAB, 0x63, 0x9C, - 0x5A, 0xE4, 0xF5, 0x68, 0x34, 0x23, 0xB4, - 0x74, 0x2B, 0xF1, 0xC9, 0x78, 0x23, 0x8F, - 0x16, 0xCB, 0xE3, 0x9D, 0x65, 0x2D, 0xE3, - 0xFD, 0xB8, 0xBE, 0xFC, 0x84, 0x8A, 0xD9, - 0x22, 0x22, 0x2E, 0x04, 0xA4, 0x03, 0x7C, - 0x07, 0x13, 0xEB, 0x57, 0xA8, 0x1A, 0x23, - 0xF0, 0xC7, 0x34, 0x73, 0xFC, 0x64, 0x6C, - 0xEA, 0x30, 0x6B, 0x4B, 0xCB, 0xC8, 0x86, - 0x2F, 0x83, 0x85, 0xDD, 0xFA, 0x9D, 0x4B, - 0x7F, 0xA2, 0xC0, 0x87, 0xE8, 0x79, 0x68, - 0x33, 0x03, 0xED, 0x5B, 0xDD, 0x3A, 0x06, - 0x2B, 0x3C, 0xF5, 0xB3, 0xA2, 0x78, 0xA6, - 0x6D, 0x2A, 0x13, 0xF8, 0x3F, 0x44, 0xF8, - 0x2D, 0xDF, 0x31, 0x0E, 0xE0, 0x74, 0xAB, - 0x6A, 0x36, 0x45, 0x97, 0xE8, 0x99, 0xA0, - 0x25, 0x5D, 0xC1, 0x64, 0xF3, 0x1C, 0xC5, - 0x08, 0x46, 0x85, 0x1D, 0xF9, 0xAB, 0x48, - 0x19, 0x5D, 0xED, 0x7E, 0xA1, 0xB1, 0xD5, - 0x10, 0xBD, 0x7E, 0xE7, 0x4D, 0x73, 0xFA, - 0xF3, 0x6B, 0xC3, 0x1E, 0xCF, 0xA2, 0x68, - 0x35, 0x90, 0x46, 0xF4, 0xEB, 0x87, 0x9F, - 0x92, 0x40, 0x09, 0x43, 0x8B, 0x48, 0x1C, - 0x6C, 0xD7, 0x88, 0x9A, 0x00, 0x2E, 0xD5, - 0xEE, 0x38, 0x2B, 0xC9, 0x19, 0x0D, 0xA6, - 0xFC, 0x02, 0x6E, 0x47, 0x95, 0x58, 0xE4, - 0x47, 0x56, 0x77, 0xE9, 0xAA, 0x9E, 0x30, - 0x50, 0xE2, 0x76, 0x56, 0x94, 0xDF, 0xC8, - 0x1F, 0x56, 0xE8, 0x80, 0xB9, 0x6E, 0x71, - 0x60, 0xC9, 0x80, 0xDD, 0x98, 0xED, 0xD3, - 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x0F, 0xDA, 0xA2, + 0x21, 0x68, 0xC2, 0x34, 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, + 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, 0x02, 0x0B, 0xBE, 0xA6, + 0x3B, 0x13, 0x9B, 0x22, 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, + 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, 0x30, 0x2B, 0x0A, 0x6D, + 0xF2, 0x5F, 0x14, 0x37, 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, + 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, 0xF4, 0x4C, 0x42, 0xE9, + 0xA6, 0x37, 0xED, 0x6B, 0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, + 0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 0xAE, 0x9F, 0x24, 0x11, + 0x7C, 0x4B, 0x1F, 0xE6, 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, + 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, 0x98, 0xDA, 0x48, 0x36, + 0x1C, 0x55, 0xD3, 0x9A, 0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, + 0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, 0x1C, 0x62, 0xF3, 0x56, + 0x20, 0x85, 0x52, 0xBB, 0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, + 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, 0xF1, 0x74, 0x6C, 0x08, + 0xCA, 0x18, 0x21, 0x7C, 0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B, + 0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, 0x9B, 0x27, 0x83, 0xA2, + 0xEC, 0x07, 0xA2, 0x8F, 0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, + 0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, 0x39, 0x95, 0x49, 0x7C, + 0xEA, 0x95, 0x6A, 0xE5, 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, + 0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAA, 0xC4, 0x2D, 0xAD, 0x33, 0x17, 0x0D, + 0x04, 0x50, 0x7A, 0x33, 0xA8, 0x55, 0x21, 0xAB, 0xDF, 0x1C, 0xBA, 0x64, + 0xEC, 0xFB, 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A, 0x8A, 0xEA, 0x71, 0x57, + 0x5D, 0x06, 0x0C, 0x7D, 0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, 0xC7, + 0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, 0x33, 0xD7, 0x1E, 0x8C, 0x94, 0xE0, + 0x4A, 0x25, 0x61, 0x9D, 0xCE, 0xE3, 0xD2, 0x26, 0x1A, 0xD2, 0xEE, 0x6B, + 0xF1, 0x2F, 0xFA, 0x06, 0xD9, 0x8A, 0x08, 0x64, 0xD8, 0x76, 0x02, 0x73, + 0x3E, 0xC8, 0x6A, 0x64, 0x52, 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C, + 0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, 0x6C, 0x77, 0x09, 0x88, 0xC0, + 0xBA, 0xD9, 0x46, 0xE2, 0x08, 0xE2, 0x4F, 0xA0, 0x74, 0xE5, 0xAB, 0x31, + 0x43, 0xDB, 0x5B, 0xFC, 0xE0, 0xFD, 0x10, 0x8E, 0x4B, 0x82, 0xD1, 0x20, + 0xA9, 0x21, 0x08, 0x01, 0x1A, 0x72, 0x3C, 0x12, 0xA7, 0x87, 0xE6, 0xD7, + 0x88, 0x71, 0x9A, 0x10, 0xBD, 0xBA, 0x5B, 0x26, 0x99, 0xC3, 0x27, 0x18, + 0x6A, 0xF4, 0xE2, 0x3C, 0x1A, 0x94, 0x68, 0x34, 0xB6, 0x15, 0x0B, 0xDA, + 0x25, 0x83, 0xE9, 0xCA, 0x2A, 0xD4, 0x4C, 0xE8, 0xDB, 0xBB, 0xC2, 0xDB, + 0x04, 0xDE, 0x8E, 0xF9, 0x2E, 0x8E, 0xFC, 0x14, 0x1F, 0xBE, 0xCA, 0xA6, + 0x28, 0x7C, 0x59, 0x47, 0x4E, 0x6B, 0xC0, 0x5D, 0x99, 0xB2, 0x96, 0x4F, + 0xA0, 0x90, 0xC3, 0xA2, 0x23, 0x3B, 0xA1, 0x86, 0x51, 0x5B, 0xE7, 0xED, + 0x1F, 0x61, 0x29, 0x70, 0xCE, 0xE2, 0xD7, 0xAF, 0xB8, 0x1B, 0xDD, 0x76, + 0x21, 0x70, 0x48, 0x1C, 0xD0, 0x06, 0x91, 0x27, 0xD5, 0xB0, 0x5A, 0xA9, + 0x93, 0xB4, 0xEA, 0x98, 0x8D, 0x8F, 0xDD, 0xC1, 0x86, 0xFF, 0xB7, 0xDC, + 0x90, 0xA6, 0xC0, 0x8F, 0x4D, 0xF4, 0x35, 0xC9, 0x34, 0x02, 0x84, 0x92, + 0x36, 0xC3, 0xFA, 0xB4, 0xD2, 0x7C, 0x70, 0x26, 0xC1, 0xD4, 0xDC, 0xB2, + 0x60, 0x26, 0x46, 0xDE, 0xC9, 0x75, 0x1E, 0x76, 0x3D, 0xBA, 0x37, 0xBD, + 0xF8, 0xFF, 0x94, 0x06, 0xAD, 0x9E, 0x53, 0x0E, 0xE5, 0xDB, 0x38, 0x2F, + 0x41, 0x30, 0x01, 0xAE, 0xB0, 0x6A, 0x53, 0xED, 0x90, 0x27, 0xD8, 0x31, + 0x17, 0x97, 0x27, 0xB0, 0x86, 0x5A, 0x89, 0x18, 0xDA, 0x3E, 0xDB, 0xEB, + 0xCF, 0x9B, 0x14, 0xED, 0x44, 0xCE, 0x6C, 0xBA, 0xCE, 0xD4, 0xBB, 0x1B, + 0xDB, 0x7F, 0x14, 0x47, 0xE6, 0xCC, 0x25, 0x4B, 0x33, 0x20, 0x51, 0x51, + 0x2B, 0xD7, 0xAF, 0x42, 0x6F, 0xB8, 0xF4, 0x01, 0x37, 0x8C, 0xD2, 0xBF, + 0x59, 0x83, 0xCA, 0x01, 0xC6, 0x4B, 0x92, 0xEC, 0xF0, 0x32, 0xEA, 0x15, + 0xD1, 0x72, 0x1D, 0x03, 0xF4, 0x82, 0xD7, 0xCE, 0x6E, 0x74, 0xFE, 0xF6, + 0xD5, 0x5E, 0x70, 0x2F, 0x46, 0x98, 0x0C, 0x82, 0xB5, 0xA8, 0x40, 0x31, + 0x90, 0x0B, 0x1C, 0x9E, 0x59, 0xE7, 0xC9, 0x7F, 0xBE, 0xC7, 0xE8, 0xF3, + 0x23, 0xA9, 0x7A, 0x7E, 0x36, 0xCC, 0x88, 0xBE, 0x0F, 0x1D, 0x45, 0xB7, + 0xFF, 0x58, 0x5A, 0xC5, 0x4B, 0xD4, 0x07, 0xB2, 0x2B, 0x41, 0x54, 0xAA, + 0xCC, 0x8F, 0x6D, 0x7E, 0xBF, 0x48, 0xE1, 0xD8, 0x14, 0xCC, 0x5E, 0xD2, + 0x0F, 0x80, 0x37, 0xE0, 0xA7, 0x97, 0x15, 0xEE, 0xF2, 0x9B, 0xE3, 0x28, + 0x06, 0xA1, 0xD5, 0x8B, 0xB7, 0xC5, 0xDA, 0x76, 0xF5, 0x50, 0xAA, 0x3D, + 0x8A, 0x1F, 0xBF, 0xF0, 0xEB, 0x19, 0xCC, 0xB1, 0xA3, 0x13, 0xD5, 0x5C, + 0xDA, 0x56, 0xC9, 0xEC, 0x2E, 0xF2, 0x96, 0x32, 0x38, 0x7F, 0xE8, 0xD7, + 0x6E, 0x3C, 0x04, 0x68, 0x04, 0x3E, 0x8F, 0x66, 0x3F, 0x48, 0x60, 0xEE, + 0x12, 0xBF, 0x2D, 0x5B, 0x0B, 0x74, 0x74, 0xD6, 0xE6, 0x94, 0xF9, 0x1E, + 0x6D, 0xBE, 0x11, 0x59, 0x74, 0xA3, 0x92, 0x6F, 0x12, 0xFE, 0xE5, 0xE4, + 0x38, 0x77, 0x7C, 0xB6, 0xA9, 0x32, 0xDF, 0x8C, 0xD8, 0xBE, 0xC4, 0xD0, + 0x73, 0xB9, 0x31, 0xBA, 0x3B, 0xC8, 0x32, 0xB6, 0x8D, 0x9D, 0xD3, 0x00, + 0x74, 0x1F, 0xA7, 0xBF, 0x8A, 0xFC, 0x47, 0xED, 0x25, 0x76, 0xF6, 0x93, + 0x6B, 0xA4, 0x24, 0x66, 0x3A, 0xAB, 0x63, 0x9C, 0x5A, 0xE4, 0xF5, 0x68, + 0x34, 0x23, 0xB4, 0x74, 0x2B, 0xF1, 0xC9, 0x78, 0x23, 0x8F, 0x16, 0xCB, + 0xE3, 0x9D, 0x65, 0x2D, 0xE3, 0xFD, 0xB8, 0xBE, 0xFC, 0x84, 0x8A, 0xD9, + 0x22, 0x22, 0x2E, 0x04, 0xA4, 0x03, 0x7C, 0x07, 0x13, 0xEB, 0x57, 0xA8, + 0x1A, 0x23, 0xF0, 0xC7, 0x34, 0x73, 0xFC, 0x64, 0x6C, 0xEA, 0x30, 0x6B, + 0x4B, 0xCB, 0xC8, 0x86, 0x2F, 0x83, 0x85, 0xDD, 0xFA, 0x9D, 0x4B, 0x7F, + 0xA2, 0xC0, 0x87, 0xE8, 0x79, 0x68, 0x33, 0x03, 0xED, 0x5B, 0xDD, 0x3A, + 0x06, 0x2B, 0x3C, 0xF5, 0xB3, 0xA2, 0x78, 0xA6, 0x6D, 0x2A, 0x13, 0xF8, + 0x3F, 0x44, 0xF8, 0x2D, 0xDF, 0x31, 0x0E, 0xE0, 0x74, 0xAB, 0x6A, 0x36, + 0x45, 0x97, 0xE8, 0x99, 0xA0, 0x25, 0x5D, 0xC1, 0x64, 0xF3, 0x1C, 0xC5, + 0x08, 0x46, 0x85, 0x1D, 0xF9, 0xAB, 0x48, 0x19, 0x5D, 0xED, 0x7E, 0xA1, + 0xB1, 0xD5, 0x10, 0xBD, 0x7E, 0xE7, 0x4D, 0x73, 0xFA, 0xF3, 0x6B, 0xC3, + 0x1E, 0xCF, 0xA2, 0x68, 0x35, 0x90, 0x46, 0xF4, 0xEB, 0x87, 0x9F, 0x92, + 0x40, 0x09, 0x43, 0x8B, 0x48, 0x1C, 0x6C, 0xD7, 0x88, 0x9A, 0x00, 0x2E, + 0xD5, 0xEE, 0x38, 0x2B, 0xC9, 0x19, 0x0D, 0xA6, 0xFC, 0x02, 0x6E, 0x47, + 0x95, 0x58, 0xE4, 0x47, 0x56, 0x77, 0xE9, 0xAA, 0x9E, 0x30, 0x50, 0xE2, + 0x76, 0x56, 0x94, 0xDF, 0xC8, 0x1F, 0x56, 0xE8, 0x80, 0xB9, 0x6E, 0x71, + 0x60, 0xC9, 0x80, 0xDD, 0x98, 0xED, 0xD3, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF }; static const unsigned char modp_q_8192[] = { - 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xE4, 0x87, 0xED, 0x51, 0x10, 0xB4, - 0x61, 0x1A, 0x62, 0x63, 0x31, 0x45, 0xC0, - 0x6E, 0x0E, 0x68, 0x94, 0x81, 0x27, 0x04, - 0x45, 0x33, 0xE6, 0x3A, 0x01, 0x05, 0xDF, - 0x53, 0x1D, 0x89, 0xCD, 0x91, 0x28, 0xA5, - 0x04, 0x3C, 0xC7, 0x1A, 0x02, 0x6E, 0xF7, - 0xCA, 0x8C, 0xD9, 0xE6, 0x9D, 0x21, 0x8D, - 0x98, 0x15, 0x85, 0x36, 0xF9, 0x2F, 0x8A, - 0x1B, 0xA7, 0xF0, 0x9A, 0xB6, 0xB6, 0xA8, - 0xE1, 0x22, 0xF2, 0x42, 0xDA, 0xBB, 0x31, - 0x2F, 0x3F, 0x63, 0x7A, 0x26, 0x21, 0x74, - 0xD3, 0x1B, 0xF6, 0xB5, 0x85, 0xFF, 0xAE, - 0x5B, 0x7A, 0x03, 0x5B, 0xF6, 0xF7, 0x1C, - 0x35, 0xFD, 0xAD, 0x44, 0xCF, 0xD2, 0xD7, - 0x4F, 0x92, 0x08, 0xBE, 0x25, 0x8F, 0xF3, - 0x24, 0x94, 0x33, 0x28, 0xF6, 0x72, 0x2D, - 0x9E, 0xE1, 0x00, 0x3E, 0x5C, 0x50, 0xB1, - 0xDF, 0x82, 0xCC, 0x6D, 0x24, 0x1B, 0x0E, - 0x2A, 0xE9, 0xCD, 0x34, 0x8B, 0x1F, 0xD4, - 0x7E, 0x92, 0x67, 0xAF, 0xC1, 0xB2, 0xAE, - 0x91, 0xEE, 0x51, 0xD6, 0xCB, 0x0E, 0x31, - 0x79, 0xAB, 0x10, 0x42, 0xA9, 0x5D, 0xCF, - 0x6A, 0x94, 0x83, 0xB8, 0x4B, 0x4B, 0x36, - 0xB3, 0x86, 0x1A, 0xA7, 0x25, 0x5E, 0x4C, - 0x02, 0x78, 0xBA, 0x36, 0x04, 0x65, 0x0C, - 0x10, 0xBE, 0x19, 0x48, 0x2F, 0x23, 0x17, - 0x1B, 0x67, 0x1D, 0xF1, 0xCF, 0x3B, 0x96, - 0x0C, 0x07, 0x43, 0x01, 0xCD, 0x93, 0xC1, - 0xD1, 0x76, 0x03, 0xD1, 0x47, 0xDA, 0xE2, - 0xAE, 0xF8, 0x37, 0xA6, 0x29, 0x64, 0xEF, - 0x15, 0xE5, 0xFB, 0x4A, 0xAC, 0x0B, 0x8C, - 0x1C, 0xCA, 0xA4, 0xBE, 0x75, 0x4A, 0xB5, - 0x72, 0x8A, 0xE9, 0x13, 0x0C, 0x4C, 0x7D, - 0x02, 0x88, 0x0A, 0xB9, 0x47, 0x2D, 0x45, - 0x55, 0x62, 0x16, 0xD6, 0x99, 0x8B, 0x86, - 0x82, 0x28, 0x3D, 0x19, 0xD4, 0x2A, 0x90, - 0xD5, 0xEF, 0x8E, 0x5D, 0x32, 0x76, 0x7D, - 0xC2, 0x82, 0x2C, 0x6D, 0xF7, 0x85, 0x45, - 0x75, 0x38, 0xAB, 0xAE, 0x83, 0x06, 0x3E, - 0xD9, 0xCB, 0x87, 0xC2, 0xD3, 0x70, 0xF2, - 0x63, 0xD5, 0xFA, 0xD7, 0x46, 0x6D, 0x84, - 0x99, 0xEB, 0x8F, 0x46, 0x4A, 0x70, 0x25, - 0x12, 0xB0, 0xCE, 0xE7, 0x71, 0xE9, 0x13, - 0x0D, 0x69, 0x77, 0x35, 0xF8, 0x97, 0xFD, - 0x03, 0x6C, 0xC5, 0x04, 0x32, 0x6C, 0x3B, - 0x01, 0x39, 0x9F, 0x64, 0x35, 0x32, 0x29, - 0x0F, 0x95, 0x8C, 0x0B, 0xBD, 0x90, 0x06, - 0x5D, 0xF0, 0x8B, 0xAB, 0xBD, 0x30, 0xAE, - 0xB6, 0x3B, 0x84, 0xC4, 0x60, 0x5D, 0x6C, - 0xA3, 0x71, 0x04, 0x71, 0x27, 0xD0, 0x3A, - 0x72, 0xD5, 0x98, 0xA1, 0xED, 0xAD, 0xFE, - 0x70, 0x7E, 0x88, 0x47, 0x25, 0xC1, 0x68, - 0x90, 0x54, 0x90, 0x84, 0x00, 0x8D, 0x39, - 0x1E, 0x09, 0x53, 0xC3, 0xF3, 0x6B, 0xC4, - 0x38, 0xCD, 0x08, 0x5E, 0xDD, 0x2D, 0x93, - 0x4C, 0xE1, 0x93, 0x8C, 0x35, 0x7A, 0x71, - 0x1E, 0x0D, 0x4A, 0x34, 0x1A, 0x5B, 0x0A, - 0x85, 0xED, 0x12, 0xC1, 0xF4, 0xE5, 0x15, - 0x6A, 0x26, 0x74, 0x6D, 0xDD, 0xE1, 0x6D, - 0x82, 0x6F, 0x47, 0x7C, 0x97, 0x47, 0x7E, - 0x0A, 0x0F, 0xDF, 0x65, 0x53, 0x14, 0x3E, - 0x2C, 0xA3, 0xA7, 0x35, 0xE0, 0x2E, 0xCC, - 0xD9, 0x4B, 0x27, 0xD0, 0x48, 0x61, 0xD1, - 0x11, 0x9D, 0xD0, 0xC3, 0x28, 0xAD, 0xF3, - 0xF6, 0x8F, 0xB0, 0x94, 0xB8, 0x67, 0x71, - 0x6B, 0xD7, 0xDC, 0x0D, 0xEE, 0xBB, 0x10, - 0xB8, 0x24, 0x0E, 0x68, 0x03, 0x48, 0x93, - 0xEA, 0xD8, 0x2D, 0x54, 0xC9, 0xDA, 0x75, - 0x4C, 0x46, 0xC7, 0xEE, 0xE0, 0xC3, 0x7F, - 0xDB, 0xEE, 0x48, 0x53, 0x60, 0x47, 0xA6, - 0xFA, 0x1A, 0xE4, 0x9A, 0x01, 0x42, 0x49, - 0x1B, 0x61, 0xFD, 0x5A, 0x69, 0x3E, 0x38, - 0x13, 0x60, 0xEA, 0x6E, 0x59, 0x30, 0x13, - 0x23, 0x6F, 0x64, 0xBA, 0x8F, 0x3B, 0x1E, - 0xDD, 0x1B, 0xDE, 0xFC, 0x7F, 0xCA, 0x03, - 0x56, 0xCF, 0x29, 0x87, 0x72, 0xED, 0x9C, - 0x17, 0xA0, 0x98, 0x00, 0xD7, 0x58, 0x35, - 0x29, 0xF6, 0xC8, 0x13, 0xEC, 0x18, 0x8B, - 0xCB, 0x93, 0xD8, 0x43, 0x2D, 0x44, 0x8C, - 0x6D, 0x1F, 0x6D, 0xF5, 0xE7, 0xCD, 0x8A, - 0x76, 0xA2, 0x67, 0x36, 0x5D, 0x67, 0x6A, - 0x5D, 0x8D, 0xED, 0xBF, 0x8A, 0x23, 0xF3, - 0x66, 0x12, 0xA5, 0x99, 0x90, 0x28, 0xA8, - 0x95, 0xEB, 0xD7, 0xA1, 0x37, 0xDC, 0x7A, - 0x00, 0x9B, 0xC6, 0x69, 0x5F, 0xAC, 0xC1, - 0xE5, 0x00, 0xE3, 0x25, 0xC9, 0x76, 0x78, - 0x19, 0x75, 0x0A, 0xE8, 0xB9, 0x0E, 0x81, - 0xFA, 0x41, 0x6B, 0xE7, 0x37, 0x3A, 0x7F, - 0x7B, 0x6A, 0xAF, 0x38, 0x17, 0xA3, 0x4C, - 0x06, 0x41, 0x5A, 0xD4, 0x20, 0x18, 0xC8, - 0x05, 0x8E, 0x4F, 0x2C, 0xF3, 0xE4, 0xBF, - 0xDF, 0x63, 0xF4, 0x79, 0x91, 0xD4, 0xBD, - 0x3F, 0x1B, 0x66, 0x44, 0x5F, 0x07, 0x8E, - 0xA2, 0xDB, 0xFF, 0xAC, 0x2D, 0x62, 0xA5, - 0xEA, 0x03, 0xD9, 0x15, 0xA0, 0xAA, 0x55, - 0x66, 0x47, 0xB6, 0xBF, 0x5F, 0xA4, 0x70, - 0xEC, 0x0A, 0x66, 0x2F, 0x69, 0x07, 0xC0, - 0x1B, 0xF0, 0x53, 0xCB, 0x8A, 0xF7, 0x79, - 0x4D, 0xF1, 0x94, 0x03, 0x50, 0xEA, 0xC5, - 0xDB, 0xE2, 0xED, 0x3B, 0x7A, 0xA8, 0x55, - 0x1E, 0xC5, 0x0F, 0xDF, 0xF8, 0x75, 0x8C, - 0xE6, 0x58, 0xD1, 0x89, 0xEA, 0xAE, 0x6D, - 0x2B, 0x64, 0xF6, 0x17, 0x79, 0x4B, 0x19, - 0x1C, 0x3F, 0xF4, 0x6B, 0xB7, 0x1E, 0x02, - 0x34, 0x02, 0x1F, 0x47, 0xB3, 0x1F, 0xA4, - 0x30, 0x77, 0x09, 0x5F, 0x96, 0xAD, 0x85, - 0xBA, 0x3A, 0x6B, 0x73, 0x4A, 0x7C, 0x8F, - 0x36, 0xDF, 0x08, 0xAC, 0xBA, 0x51, 0xC9, - 0x37, 0x89, 0x7F, 0x72, 0xF2, 0x1C, 0x3B, - 0xBE, 0x5B, 0x54, 0x99, 0x6F, 0xC6, 0x6C, - 0x5F, 0x62, 0x68, 0x39, 0xDC, 0x98, 0xDD, - 0x1D, 0xE4, 0x19, 0x5B, 0x46, 0xCE, 0xE9, - 0x80, 0x3A, 0x0F, 0xD3, 0xDF, 0xC5, 0x7E, - 0x23, 0xF6, 0x92, 0xBB, 0x7B, 0x49, 0xB5, - 0xD2, 0x12, 0x33, 0x1D, 0x55, 0xB1, 0xCE, - 0x2D, 0x72, 0x7A, 0xB4, 0x1A, 0x11, 0xDA, - 0x3A, 0x15, 0xF8, 0xE4, 0xBC, 0x11, 0xC7, - 0x8B, 0x65, 0xF1, 0xCE, 0xB2, 0x96, 0xF1, - 0xFE, 0xDC, 0x5F, 0x7E, 0x42, 0x45, 0x6C, - 0x91, 0x11, 0x17, 0x02, 0x52, 0x01, 0xBE, - 0x03, 0x89, 0xF5, 0xAB, 0xD4, 0x0D, 0x11, - 0xF8, 0x63, 0x9A, 0x39, 0xFE, 0x32, 0x36, - 0x75, 0x18, 0x35, 0xA5, 0xE5, 0xE4, 0x43, - 0x17, 0xC1, 0xC2, 0xEE, 0xFD, 0x4E, 0xA5, - 0xBF, 0xD1, 0x60, 0x43, 0xF4, 0x3C, 0xB4, - 0x19, 0x81, 0xF6, 0xAD, 0xEE, 0x9D, 0x03, - 0x15, 0x9E, 0x7A, 0xD9, 0xD1, 0x3C, 0x53, - 0x36, 0x95, 0x09, 0xFC, 0x1F, 0xA2, 0x7C, - 0x16, 0xEF, 0x98, 0x87, 0x70, 0x3A, 0x55, - 0xB5, 0x1B, 0x22, 0xCB, 0xF4, 0x4C, 0xD0, - 0x12, 0xAE, 0xE0, 0xB2, 0x79, 0x8E, 0x62, - 0x84, 0x23, 0x42, 0x8E, 0xFC, 0xD5, 0xA4, - 0x0C, 0xAE, 0xF6, 0xBF, 0x50, 0xD8, 0xEA, - 0x88, 0x5E, 0xBF, 0x73, 0xA6, 0xB9, 0xFD, - 0x79, 0xB5, 0xE1, 0x8F, 0x67, 0xD1, 0x34, - 0x1A, 0xC8, 0x23, 0x7A, 0x75, 0xC3, 0xCF, - 0xC9, 0x20, 0x04, 0xA1, 0xC5, 0xA4, 0x0E, - 0x36, 0x6B, 0xC4, 0x4D, 0x00, 0x17, 0x6A, - 0xF7, 0x1C, 0x15, 0xE4, 0x8C, 0x86, 0xD3, - 0x7E, 0x01, 0x37, 0x23, 0xCA, 0xAC, 0x72, - 0x23, 0xAB, 0x3B, 0xF4, 0xD5, 0x4F, 0x18, - 0x28, 0x71, 0x3B, 0x2B, 0x4A, 0x6F, 0xE4, - 0x0F, 0xAB, 0x74, 0x40, 0x5C, 0xB7, 0x38, - 0xB0, 0x64, 0xC0, 0x6E, 0xCC, 0x76, 0xE9, - 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x87, 0xED, 0x51, + 0x10, 0xB4, 0x61, 0x1A, 0x62, 0x63, 0x31, 0x45, 0xC0, 0x6E, 0x0E, 0x68, + 0x94, 0x81, 0x27, 0x04, 0x45, 0x33, 0xE6, 0x3A, 0x01, 0x05, 0xDF, 0x53, + 0x1D, 0x89, 0xCD, 0x91, 0x28, 0xA5, 0x04, 0x3C, 0xC7, 0x1A, 0x02, 0x6E, + 0xF7, 0xCA, 0x8C, 0xD9, 0xE6, 0x9D, 0x21, 0x8D, 0x98, 0x15, 0x85, 0x36, + 0xF9, 0x2F, 0x8A, 0x1B, 0xA7, 0xF0, 0x9A, 0xB6, 0xB6, 0xA8, 0xE1, 0x22, + 0xF2, 0x42, 0xDA, 0xBB, 0x31, 0x2F, 0x3F, 0x63, 0x7A, 0x26, 0x21, 0x74, + 0xD3, 0x1B, 0xF6, 0xB5, 0x85, 0xFF, 0xAE, 0x5B, 0x7A, 0x03, 0x5B, 0xF6, + 0xF7, 0x1C, 0x35, 0xFD, 0xAD, 0x44, 0xCF, 0xD2, 0xD7, 0x4F, 0x92, 0x08, + 0xBE, 0x25, 0x8F, 0xF3, 0x24, 0x94, 0x33, 0x28, 0xF6, 0x72, 0x2D, 0x9E, + 0xE1, 0x00, 0x3E, 0x5C, 0x50, 0xB1, 0xDF, 0x82, 0xCC, 0x6D, 0x24, 0x1B, + 0x0E, 0x2A, 0xE9, 0xCD, 0x34, 0x8B, 0x1F, 0xD4, 0x7E, 0x92, 0x67, 0xAF, + 0xC1, 0xB2, 0xAE, 0x91, 0xEE, 0x51, 0xD6, 0xCB, 0x0E, 0x31, 0x79, 0xAB, + 0x10, 0x42, 0xA9, 0x5D, 0xCF, 0x6A, 0x94, 0x83, 0xB8, 0x4B, 0x4B, 0x36, + 0xB3, 0x86, 0x1A, 0xA7, 0x25, 0x5E, 0x4C, 0x02, 0x78, 0xBA, 0x36, 0x04, + 0x65, 0x0C, 0x10, 0xBE, 0x19, 0x48, 0x2F, 0x23, 0x17, 0x1B, 0x67, 0x1D, + 0xF1, 0xCF, 0x3B, 0x96, 0x0C, 0x07, 0x43, 0x01, 0xCD, 0x93, 0xC1, 0xD1, + 0x76, 0x03, 0xD1, 0x47, 0xDA, 0xE2, 0xAE, 0xF8, 0x37, 0xA6, 0x29, 0x64, + 0xEF, 0x15, 0xE5, 0xFB, 0x4A, 0xAC, 0x0B, 0x8C, 0x1C, 0xCA, 0xA4, 0xBE, + 0x75, 0x4A, 0xB5, 0x72, 0x8A, 0xE9, 0x13, 0x0C, 0x4C, 0x7D, 0x02, 0x88, + 0x0A, 0xB9, 0x47, 0x2D, 0x45, 0x55, 0x62, 0x16, 0xD6, 0x99, 0x8B, 0x86, + 0x82, 0x28, 0x3D, 0x19, 0xD4, 0x2A, 0x90, 0xD5, 0xEF, 0x8E, 0x5D, 0x32, + 0x76, 0x7D, 0xC2, 0x82, 0x2C, 0x6D, 0xF7, 0x85, 0x45, 0x75, 0x38, 0xAB, + 0xAE, 0x83, 0x06, 0x3E, 0xD9, 0xCB, 0x87, 0xC2, 0xD3, 0x70, 0xF2, 0x63, + 0xD5, 0xFA, 0xD7, 0x46, 0x6D, 0x84, 0x99, 0xEB, 0x8F, 0x46, 0x4A, 0x70, + 0x25, 0x12, 0xB0, 0xCE, 0xE7, 0x71, 0xE9, 0x13, 0x0D, 0x69, 0x77, 0x35, + 0xF8, 0x97, 0xFD, 0x03, 0x6C, 0xC5, 0x04, 0x32, 0x6C, 0x3B, 0x01, 0x39, + 0x9F, 0x64, 0x35, 0x32, 0x29, 0x0F, 0x95, 0x8C, 0x0B, 0xBD, 0x90, 0x06, + 0x5D, 0xF0, 0x8B, 0xAB, 0xBD, 0x30, 0xAE, 0xB6, 0x3B, 0x84, 0xC4, 0x60, + 0x5D, 0x6C, 0xA3, 0x71, 0x04, 0x71, 0x27, 0xD0, 0x3A, 0x72, 0xD5, 0x98, + 0xA1, 0xED, 0xAD, 0xFE, 0x70, 0x7E, 0x88, 0x47, 0x25, 0xC1, 0x68, 0x90, + 0x54, 0x90, 0x84, 0x00, 0x8D, 0x39, 0x1E, 0x09, 0x53, 0xC3, 0xF3, 0x6B, + 0xC4, 0x38, 0xCD, 0x08, 0x5E, 0xDD, 0x2D, 0x93, 0x4C, 0xE1, 0x93, 0x8C, + 0x35, 0x7A, 0x71, 0x1E, 0x0D, 0x4A, 0x34, 0x1A, 0x5B, 0x0A, 0x85, 0xED, + 0x12, 0xC1, 0xF4, 0xE5, 0x15, 0x6A, 0x26, 0x74, 0x6D, 0xDD, 0xE1, 0x6D, + 0x82, 0x6F, 0x47, 0x7C, 0x97, 0x47, 0x7E, 0x0A, 0x0F, 0xDF, 0x65, 0x53, + 0x14, 0x3E, 0x2C, 0xA3, 0xA7, 0x35, 0xE0, 0x2E, 0xCC, 0xD9, 0x4B, 0x27, + 0xD0, 0x48, 0x61, 0xD1, 0x11, 0x9D, 0xD0, 0xC3, 0x28, 0xAD, 0xF3, 0xF6, + 0x8F, 0xB0, 0x94, 0xB8, 0x67, 0x71, 0x6B, 0xD7, 0xDC, 0x0D, 0xEE, 0xBB, + 0x10, 0xB8, 0x24, 0x0E, 0x68, 0x03, 0x48, 0x93, 0xEA, 0xD8, 0x2D, 0x54, + 0xC9, 0xDA, 0x75, 0x4C, 0x46, 0xC7, 0xEE, 0xE0, 0xC3, 0x7F, 0xDB, 0xEE, + 0x48, 0x53, 0x60, 0x47, 0xA6, 0xFA, 0x1A, 0xE4, 0x9A, 0x01, 0x42, 0x49, + 0x1B, 0x61, 0xFD, 0x5A, 0x69, 0x3E, 0x38, 0x13, 0x60, 0xEA, 0x6E, 0x59, + 0x30, 0x13, 0x23, 0x6F, 0x64, 0xBA, 0x8F, 0x3B, 0x1E, 0xDD, 0x1B, 0xDE, + 0xFC, 0x7F, 0xCA, 0x03, 0x56, 0xCF, 0x29, 0x87, 0x72, 0xED, 0x9C, 0x17, + 0xA0, 0x98, 0x00, 0xD7, 0x58, 0x35, 0x29, 0xF6, 0xC8, 0x13, 0xEC, 0x18, + 0x8B, 0xCB, 0x93, 0xD8, 0x43, 0x2D, 0x44, 0x8C, 0x6D, 0x1F, 0x6D, 0xF5, + 0xE7, 0xCD, 0x8A, 0x76, 0xA2, 0x67, 0x36, 0x5D, 0x67, 0x6A, 0x5D, 0x8D, + 0xED, 0xBF, 0x8A, 0x23, 0xF3, 0x66, 0x12, 0xA5, 0x99, 0x90, 0x28, 0xA8, + 0x95, 0xEB, 0xD7, 0xA1, 0x37, 0xDC, 0x7A, 0x00, 0x9B, 0xC6, 0x69, 0x5F, + 0xAC, 0xC1, 0xE5, 0x00, 0xE3, 0x25, 0xC9, 0x76, 0x78, 0x19, 0x75, 0x0A, + 0xE8, 0xB9, 0x0E, 0x81, 0xFA, 0x41, 0x6B, 0xE7, 0x37, 0x3A, 0x7F, 0x7B, + 0x6A, 0xAF, 0x38, 0x17, 0xA3, 0x4C, 0x06, 0x41, 0x5A, 0xD4, 0x20, 0x18, + 0xC8, 0x05, 0x8E, 0x4F, 0x2C, 0xF3, 0xE4, 0xBF, 0xDF, 0x63, 0xF4, 0x79, + 0x91, 0xD4, 0xBD, 0x3F, 0x1B, 0x66, 0x44, 0x5F, 0x07, 0x8E, 0xA2, 0xDB, + 0xFF, 0xAC, 0x2D, 0x62, 0xA5, 0xEA, 0x03, 0xD9, 0x15, 0xA0, 0xAA, 0x55, + 0x66, 0x47, 0xB6, 0xBF, 0x5F, 0xA4, 0x70, 0xEC, 0x0A, 0x66, 0x2F, 0x69, + 0x07, 0xC0, 0x1B, 0xF0, 0x53, 0xCB, 0x8A, 0xF7, 0x79, 0x4D, 0xF1, 0x94, + 0x03, 0x50, 0xEA, 0xC5, 0xDB, 0xE2, 0xED, 0x3B, 0x7A, 0xA8, 0x55, 0x1E, + 0xC5, 0x0F, 0xDF, 0xF8, 0x75, 0x8C, 0xE6, 0x58, 0xD1, 0x89, 0xEA, 0xAE, + 0x6D, 0x2B, 0x64, 0xF6, 0x17, 0x79, 0x4B, 0x19, 0x1C, 0x3F, 0xF4, 0x6B, + 0xB7, 0x1E, 0x02, 0x34, 0x02, 0x1F, 0x47, 0xB3, 0x1F, 0xA4, 0x30, 0x77, + 0x09, 0x5F, 0x96, 0xAD, 0x85, 0xBA, 0x3A, 0x6B, 0x73, 0x4A, 0x7C, 0x8F, + 0x36, 0xDF, 0x08, 0xAC, 0xBA, 0x51, 0xC9, 0x37, 0x89, 0x7F, 0x72, 0xF2, + 0x1C, 0x3B, 0xBE, 0x5B, 0x54, 0x99, 0x6F, 0xC6, 0x6C, 0x5F, 0x62, 0x68, + 0x39, 0xDC, 0x98, 0xDD, 0x1D, 0xE4, 0x19, 0x5B, 0x46, 0xCE, 0xE9, 0x80, + 0x3A, 0x0F, 0xD3, 0xDF, 0xC5, 0x7E, 0x23, 0xF6, 0x92, 0xBB, 0x7B, 0x49, + 0xB5, 0xD2, 0x12, 0x33, 0x1D, 0x55, 0xB1, 0xCE, 0x2D, 0x72, 0x7A, 0xB4, + 0x1A, 0x11, 0xDA, 0x3A, 0x15, 0xF8, 0xE4, 0xBC, 0x11, 0xC7, 0x8B, 0x65, + 0xF1, 0xCE, 0xB2, 0x96, 0xF1, 0xFE, 0xDC, 0x5F, 0x7E, 0x42, 0x45, 0x6C, + 0x91, 0x11, 0x17, 0x02, 0x52, 0x01, 0xBE, 0x03, 0x89, 0xF5, 0xAB, 0xD4, + 0x0D, 0x11, 0xF8, 0x63, 0x9A, 0x39, 0xFE, 0x32, 0x36, 0x75, 0x18, 0x35, + 0xA5, 0xE5, 0xE4, 0x43, 0x17, 0xC1, 0xC2, 0xEE, 0xFD, 0x4E, 0xA5, 0xBF, + 0xD1, 0x60, 0x43, 0xF4, 0x3C, 0xB4, 0x19, 0x81, 0xF6, 0xAD, 0xEE, 0x9D, + 0x03, 0x15, 0x9E, 0x7A, 0xD9, 0xD1, 0x3C, 0x53, 0x36, 0x95, 0x09, 0xFC, + 0x1F, 0xA2, 0x7C, 0x16, 0xEF, 0x98, 0x87, 0x70, 0x3A, 0x55, 0xB5, 0x1B, + 0x22, 0xCB, 0xF4, 0x4C, 0xD0, 0x12, 0xAE, 0xE0, 0xB2, 0x79, 0x8E, 0x62, + 0x84, 0x23, 0x42, 0x8E, 0xFC, 0xD5, 0xA4, 0x0C, 0xAE, 0xF6, 0xBF, 0x50, + 0xD8, 0xEA, 0x88, 0x5E, 0xBF, 0x73, 0xA6, 0xB9, 0xFD, 0x79, 0xB5, 0xE1, + 0x8F, 0x67, 0xD1, 0x34, 0x1A, 0xC8, 0x23, 0x7A, 0x75, 0xC3, 0xCF, 0xC9, + 0x20, 0x04, 0xA1, 0xC5, 0xA4, 0x0E, 0x36, 0x6B, 0xC4, 0x4D, 0x00, 0x17, + 0x6A, 0xF7, 0x1C, 0x15, 0xE4, 0x8C, 0x86, 0xD3, 0x7E, 0x01, 0x37, 0x23, + 0xCA, 0xAC, 0x72, 0x23, 0xAB, 0x3B, 0xF4, 0xD5, 0x4F, 0x18, 0x28, 0x71, + 0x3B, 0x2B, 0x4A, 0x6F, 0xE4, 0x0F, 0xAB, 0x74, 0x40, 0x5C, 0xB7, 0x38, + 0xB0, 0x64, 0xC0, 0x6E, 0xCC, 0x76, 0xE9, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF }; const gnutls_datum_t gnutls_modp_8192_group_prime = { (void *)modp_params_8192, sizeof(modp_params_8192) }; -const gnutls_datum_t gnutls_modp_8192_group_q = { - (void *)modp_q_8192, sizeof(modp_q_8192) -}; +const gnutls_datum_t gnutls_modp_8192_group_q = { (void *)modp_q_8192, + sizeof(modp_q_8192) }; const gnutls_datum_t gnutls_modp_8192_group_generator = { (void *)&modp_generator, sizeof(modp_generator) @@ -1921,53 +1207,57 @@ const gnutls_datum_t gnutls_modp_8192_group_generator = { const unsigned int gnutls_modp_8192_key_bits = 512; -unsigned -_gnutls_dh_prime_match_fips_approved(const uint8_t * prime, - size_t prime_size, - const uint8_t * generator, - size_t generator_size, - uint8_t ** q, size_t *q_size) +unsigned _gnutls_dh_prime_match_fips_approved(const uint8_t *prime, + size_t prime_size, + const uint8_t *generator, + size_t generator_size, + uint8_t **q, size_t *q_size) { static const struct { const gnutls_datum_t *prime; const gnutls_datum_t *generator; const gnutls_datum_t *q; } primes[] = { - {&gnutls_ffdhe_8192_group_prime, - &gnutls_ffdhe_8192_group_generator, - &gnutls_ffdhe_8192_group_q}, - {&gnutls_ffdhe_6144_group_prime, - &gnutls_ffdhe_6144_group_generator, - &gnutls_ffdhe_6144_group_q}, - {&gnutls_ffdhe_4096_group_prime, - &gnutls_ffdhe_4096_group_generator, - &gnutls_ffdhe_4096_group_q}, - {&gnutls_ffdhe_3072_group_prime, - &gnutls_ffdhe_3072_group_generator, - &gnutls_ffdhe_3072_group_q}, - {&gnutls_ffdhe_2048_group_prime, - &gnutls_ffdhe_2048_group_generator, - &gnutls_ffdhe_2048_group_q}, - {&gnutls_modp_8192_group_prime, - &gnutls_modp_8192_group_generator, &gnutls_modp_8192_group_q}, - {&gnutls_modp_6144_group_prime, - &gnutls_modp_6144_group_generator, &gnutls_modp_6144_group_q}, - {&gnutls_modp_4096_group_prime, - &gnutls_modp_4096_group_generator, &gnutls_modp_4096_group_q}, - {&gnutls_modp_3072_group_prime, - &gnutls_modp_3072_group_generator, &gnutls_modp_3072_group_q}, - {&gnutls_modp_2048_group_prime, - &gnutls_modp_2048_group_generator, &gnutls_modp_2048_group_q}, + { &gnutls_ffdhe_8192_group_prime, + &gnutls_ffdhe_8192_group_generator, + &gnutls_ffdhe_8192_group_q }, + { &gnutls_ffdhe_6144_group_prime, + &gnutls_ffdhe_6144_group_generator, + &gnutls_ffdhe_6144_group_q }, + { &gnutls_ffdhe_4096_group_prime, + &gnutls_ffdhe_4096_group_generator, + &gnutls_ffdhe_4096_group_q }, + { &gnutls_ffdhe_3072_group_prime, + &gnutls_ffdhe_3072_group_generator, + &gnutls_ffdhe_3072_group_q }, + { &gnutls_ffdhe_2048_group_prime, + &gnutls_ffdhe_2048_group_generator, + &gnutls_ffdhe_2048_group_q }, + { &gnutls_modp_8192_group_prime, + &gnutls_modp_8192_group_generator, + &gnutls_modp_8192_group_q }, + { &gnutls_modp_6144_group_prime, + &gnutls_modp_6144_group_generator, + &gnutls_modp_6144_group_q }, + { &gnutls_modp_4096_group_prime, + &gnutls_modp_4096_group_generator, + &gnutls_modp_4096_group_q }, + { &gnutls_modp_3072_group_prime, + &gnutls_modp_3072_group_generator, + &gnutls_modp_3072_group_q }, + { &gnutls_modp_2048_group_prime, + &gnutls_modp_2048_group_generator, + &gnutls_modp_2048_group_q }, }; size_t i; for (i = 0; i < sizeof(primes) / sizeof(primes[0]); i++) { if (primes[i].prime->size == prime_size && memcmp(primes[i].prime->data, prime, - primes[i].prime->size) == 0 - && primes[i].generator->size == generator_size - && memcmp(primes[i].generator->data, generator, - primes[i].generator->size) == 0) { + primes[i].prime->size) == 0 && + primes[i].generator->size == generator_size && + memcmp(primes[i].generator->data, generator, + primes[i].generator->size) == 0) { if (q) { *q = primes[i].q->data; *q_size = primes[i].q->size; diff --git a/lib/dh-session.c b/lib/dh-session.c index 6a0dccb353..7bdb1abfc0 100644 --- a/lib/dh-session.c +++ b/lib/dh-session.c @@ -67,12 +67,13 @@ **/ void gnutls_dh_set_prime_bits(gnutls_session_t session, unsigned int bits) { - if (bits < - gnutls_sec_param_to_pk_bits(GNUTLS_PK_DH, GNUTLS_SEC_PARAM_WEAK) - && bits != 0) - _gnutls_audit_log(session, - "Note that the security level of the Diffie-Hellman key exchange has been lowered to %u bits and this may allow decryption of the session data\n", - bits); + if (bits < gnutls_sec_param_to_pk_bits(GNUTLS_PK_DH, + GNUTLS_SEC_PARAM_WEAK) && + bits != 0) + _gnutls_audit_log( + session, + "Note that the security level of the Diffie-Hellman key exchange has been lowered to %u bits and this may allow decryption of the session data\n", + bits); session->internals.dh_prime_bits = bits; } @@ -94,9 +95,8 @@ void gnutls_dh_set_prime_bits(gnutls_session_t session, unsigned int bits) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise * an error code is returned. **/ -int -gnutls_dh_get_group(gnutls_session_t session, - gnutls_datum_t * raw_gen, gnutls_datum_t * raw_prime) +int gnutls_dh_get_group(gnutls_session_t session, gnutls_datum_t *raw_gen, + gnutls_datum_t *raw_prime) { dh_info_st *dh; int ret; @@ -119,7 +119,7 @@ gnutls_dh_get_group(gnutls_session_t session, break; case GNUTLS_CRD_CERTIFICATE: cert_info = - _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE); + _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE); if (cert_info == NULL) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); dh = &cert_info->dh; @@ -135,8 +135,8 @@ gnutls_dh_get_group(gnutls_session_t session, return ret; } - ret = - _gnutls_set_datum(raw_gen, dh->generator.data, dh->generator.size); + ret = _gnutls_set_datum(raw_gen, dh->generator.data, + dh->generator.size); if (ret < 0) { gnutls_assert(); _gnutls_free_datum(raw_prime); @@ -162,7 +162,7 @@ gnutls_dh_get_group(gnutls_session_t session, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise * an error code is returned. **/ -int gnutls_dh_get_pubkey(gnutls_session_t session, gnutls_datum_t * raw_key) +int gnutls_dh_get_pubkey(gnutls_session_t session, gnutls_datum_t *raw_key) { dh_info_st *dh; anon_auth_info_t anon_info; @@ -170,38 +170,28 @@ int gnutls_dh_get_pubkey(gnutls_session_t session, gnutls_datum_t * raw_key) psk_auth_info_t psk_info; switch (gnutls_auth_get_type(session)) { - case GNUTLS_CRD_ANON: - { - anon_info = - _gnutls_get_auth_info(session, GNUTLS_CRD_ANON); - if (anon_info == NULL) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - dh = &anon_info->dh; - break; - } - case GNUTLS_CRD_PSK: - { - psk_info = - _gnutls_get_auth_info(session, GNUTLS_CRD_PSK); - if (psk_info == NULL) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - dh = &psk_info->dh; - break; - } - case GNUTLS_CRD_CERTIFICATE: - { - - cert_info = - _gnutls_get_auth_info(session, - GNUTLS_CRD_CERTIFICATE); - if (cert_info == NULL) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - dh = &cert_info->dh; - break; - } + case GNUTLS_CRD_ANON: { + anon_info = _gnutls_get_auth_info(session, GNUTLS_CRD_ANON); + if (anon_info == NULL) + return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + dh = &anon_info->dh; + break; + } + case GNUTLS_CRD_PSK: { + psk_info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK); + if (psk_info == NULL) + return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + dh = &psk_info->dh; + break; + } + case GNUTLS_CRD_CERTIFICATE: { + cert_info = + _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE); + if (cert_info == NULL) + return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + dh = &cert_info->dh; + break; + } default: gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; @@ -225,46 +215,38 @@ int gnutls_dh_get_pubkey(gnutls_session_t session, gnutls_datum_t * raw_key) int gnutls_dh_get_secret_bits(gnutls_session_t session) { switch (gnutls_auth_get_type(session)) { - case GNUTLS_CRD_ANON: - { - anon_auth_info_t info; - - info = _gnutls_get_auth_info(session, GNUTLS_CRD_ANON); - if (info == NULL) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - return info->dh.secret_bits; - } - case GNUTLS_CRD_PSK: - { - psk_auth_info_t info; - - info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK); - if (info == NULL) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - return info->dh.secret_bits; - } - case GNUTLS_CRD_CERTIFICATE: - { - cert_auth_info_t info; - - info = - _gnutls_get_auth_info(session, - GNUTLS_CRD_CERTIFICATE); - if (info == NULL) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - - return info->dh.secret_bits; - } + case GNUTLS_CRD_ANON: { + anon_auth_info_t info; + + info = _gnutls_get_auth_info(session, GNUTLS_CRD_ANON); + if (info == NULL) + return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + return info->dh.secret_bits; + } + case GNUTLS_CRD_PSK: { + psk_auth_info_t info; + + info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK); + if (info == NULL) + return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + return info->dh.secret_bits; + } + case GNUTLS_CRD_CERTIFICATE: { + cert_auth_info_t info; + + info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE); + if (info == NULL) + return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + + return info->dh.secret_bits; + } default: gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; } } -static int mpi_buf2bits(gnutls_datum_t * mpi_buf) +static int mpi_buf2bits(gnutls_datum_t *mpi_buf) { bigint_t mpi; int rc; @@ -300,42 +282,34 @@ int gnutls_dh_get_prime_bits(gnutls_session_t session) dh_info_st *dh; switch (gnutls_auth_get_type(session)) { - case GNUTLS_CRD_ANON: - { - anon_auth_info_t info; - - info = _gnutls_get_auth_info(session, GNUTLS_CRD_ANON); - if (info == NULL) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - dh = &info->dh; - break; - } - case GNUTLS_CRD_PSK: - { - psk_auth_info_t info; - - info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK); - if (info == NULL) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - dh = &info->dh; - break; - } - case GNUTLS_CRD_CERTIFICATE: - { - cert_auth_info_t info; - - info = - _gnutls_get_auth_info(session, - GNUTLS_CRD_CERTIFICATE); - if (info == NULL) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - - dh = &info->dh; - break; - } + case GNUTLS_CRD_ANON: { + anon_auth_info_t info; + + info = _gnutls_get_auth_info(session, GNUTLS_CRD_ANON); + if (info == NULL) + return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + dh = &info->dh; + break; + } + case GNUTLS_CRD_PSK: { + psk_auth_info_t info; + + info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK); + if (info == NULL) + return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + dh = &info->dh; + break; + } + case GNUTLS_CRD_CERTIFICATE: { + cert_auth_info_t info; + + info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE); + if (info == NULL) + return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + + dh = &info->dh; + break; + } default: gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; @@ -362,44 +336,36 @@ int gnutls_dh_get_peers_public_bits(gnutls_session_t session) dh_info_st *dh; switch (gnutls_auth_get_type(session)) { - case GNUTLS_CRD_ANON: - { - anon_auth_info_t info; + case GNUTLS_CRD_ANON: { + anon_auth_info_t info; + + info = _gnutls_get_auth_info(session, GNUTLS_CRD_ANON); + if (info == NULL) + return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - info = _gnutls_get_auth_info(session, GNUTLS_CRD_ANON); - if (info == NULL) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + dh = &info->dh; + break; + } + case GNUTLS_CRD_PSK: { + psk_auth_info_t info; - dh = &info->dh; - break; - } - case GNUTLS_CRD_PSK: - { - psk_auth_info_t info; + info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK); + if (info == NULL) + return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK); - if (info == NULL) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + dh = &info->dh; + break; + } + case GNUTLS_CRD_CERTIFICATE: { + cert_auth_info_t info; - dh = &info->dh; - break; - } - case GNUTLS_CRD_CERTIFICATE: - { - cert_auth_info_t info; - - info = - _gnutls_get_auth_info(session, - GNUTLS_CRD_CERTIFICATE); - if (info == NULL) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - - dh = &info->dh; - break; - } + info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE); + if (info == NULL) + return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + + dh = &info->dh; + break; + } default: gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; @@ -408,4 +374,4 @@ int gnutls_dh_get_peers_public_bits(gnutls_session_t session) return mpi_buf2bits(&dh->public_key); } -#endif /* DH */ +#endif /* DH */ diff --git a/lib/dh.c b/lib/dh.c index 8b4190ca04..9fa6fb2772 100644 --- a/lib/dh.c +++ b/lib/dh.c @@ -24,7 +24,7 @@ #include "gnutls_int.h" #include "errors.h" #include -#include /* for PKCS3 PEM decoding */ +#include /* for PKCS3 PEM decoding */ #include #include #include @@ -35,9 +35,8 @@ #include "debug.h" #include "state.h" -static -int set_dh_pk_params(gnutls_session_t session, bigint_t g, bigint_t p, - bigint_t q, unsigned q_bits) +static int set_dh_pk_params(gnutls_session_t session, bigint_t g, bigint_t p, + bigint_t q, unsigned q_bits) { /* just in case we are resuming a session */ gnutls_pk_params_release(&session->key.proto.tls12.dh.params); @@ -50,19 +49,19 @@ int set_dh_pk_params(gnutls_session_t session, bigint_t g, bigint_t p, session->key.proto.tls12.dh.params.params[DH_P] = _gnutls_mpi_copy(p); if (session->key.proto.tls12.dh.params.params[DH_P] == NULL) { - _gnutls_mpi_release(&session->key.proto.tls12.dh. - params.params[DH_G]); + _gnutls_mpi_release( + &session->key.proto.tls12.dh.params.params[DH_G]); return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); } if (q) { session->key.proto.tls12.dh.params.params[DH_Q] = - _gnutls_mpi_copy(q); + _gnutls_mpi_copy(q); if (session->key.proto.tls12.dh.params.params[DH_Q] == NULL) { - _gnutls_mpi_release(&session->key.proto.tls12.dh. - params.params[DH_P]); - _gnutls_mpi_release(&session->key.proto.tls12.dh. - params.params[DH_G]); + _gnutls_mpi_release(&session->key.proto.tls12.dh.params + .params[DH_P]); + _gnutls_mpi_release(&session->key.proto.tls12.dh.params + .params[DH_G]); return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); } } @@ -78,10 +77,10 @@ int set_dh_pk_params(gnutls_session_t session, bigint_t g, bigint_t p, * that being the negotiated RFC7919 group, the callback, and the * provided parameters structure. */ -int -_gnutls_figure_dh_params(gnutls_session_t session, gnutls_dh_params_t dh_params, - gnutls_params_function * func, - gnutls_sec_param_t sec_param) +int _gnutls_figure_dh_params(gnutls_session_t session, + gnutls_dh_params_t dh_params, + gnutls_params_function *func, + gnutls_sec_param_t sec_param) { gnutls_params_st params; bigint_t p, g, q = NULL; @@ -96,54 +95,53 @@ _gnutls_figure_dh_params(gnutls_session_t session, gnutls_dh_params_t dh_params, /* if we negotiated RFC7919 FFDHE */ if (group && group->pk == GNUTLS_PK_DH) { - for (i = 0; i < session->internals.priorities->groups.size; i++) { + for (i = 0; i < session->internals.priorities->groups.size; + i++) { if (session->internals.priorities->groups.entry[i] == group) { - ret = - _gnutls_mpi_init_scan_nz(&p, - session-> - internals.priorities-> - groups.entry[i]-> - prime->data, - session-> - internals.priorities-> - groups.entry[i]-> - prime->size); + ret = _gnutls_mpi_init_scan_nz( + &p, + session->internals.priorities->groups + .entry[i] + ->prime->data, + session->internals.priorities->groups + .entry[i] + ->prime->size); if (ret < 0) return gnutls_assert_val(ret); free_pg = 1; - ret = _gnutls_mpi_init_scan_nz(&g, - session->internals.priorities->groups. - entry - [i]->generator-> - data, - session->internals.priorities->groups. - entry - [i]->generator-> - size); + ret = _gnutls_mpi_init_scan_nz( + &g, + session->internals.priorities->groups + .entry[i] + ->generator->data, + session->internals.priorities->groups + .entry[i] + ->generator->size); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = _gnutls_mpi_init_scan_nz(&q, - session->internals.priorities->groups. - entry[i]->q-> - data, - session->internals.priorities->groups. - entry[i]->q-> - size); + ret = _gnutls_mpi_init_scan_nz( + &q, + session->internals.priorities->groups + .entry[i] + ->q->data, + session->internals.priorities->groups + .entry[i] + ->q->size); if (ret < 0) { gnutls_assert(); goto cleanup; } session->internals.hsk_flags |= HSK_USED_FFDHE; - q_bits = - *session->internals.priorities-> - groups.entry[i]->q_bits; + q_bits = *session->internals.priorities->groups + .entry[i] + ->q_bits; goto finished; } } @@ -153,52 +151,50 @@ _gnutls_figure_dh_params(gnutls_session_t session, gnutls_dh_params_t dh_params, return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); } else if (sec_param) { unsigned bits = - gnutls_sec_param_to_pk_bits(GNUTLS_PK_DH, sec_param) / 8; + gnutls_sec_param_to_pk_bits(GNUTLS_PK_DH, sec_param) / + 8; - for (i = 0; i < session->internals.priorities->groups.size; i++) { - if (!session->internals.priorities->groups. - entry[i]->prime) + for (i = 0; i < session->internals.priorities->groups.size; + i++) { + if (!session->internals.priorities->groups.entry[i] + ->prime) continue; if (bits <= - session->internals.priorities->groups. - entry[i]->prime->size) { - ret = - _gnutls_mpi_init_scan_nz(&p, - session-> - internals.priorities-> - groups.entry[i]-> - prime->data, - session-> - internals.priorities-> - groups.entry[i]-> - prime->size); + session->internals.priorities->groups.entry[i] + ->prime->size) { + ret = _gnutls_mpi_init_scan_nz( + &p, + session->internals.priorities->groups + .entry[i] + ->prime->data, + session->internals.priorities->groups + .entry[i] + ->prime->size); if (ret < 0) return gnutls_assert_val(ret); free_pg = 1; - ret = _gnutls_mpi_init_scan_nz(&g, - session->internals.priorities->groups. - entry - [i]->generator-> - data, - session->internals.priorities->groups. - entry - [i]->generator-> - size); + ret = _gnutls_mpi_init_scan_nz( + &g, + session->internals.priorities->groups + .entry[i] + ->generator->data, + session->internals.priorities->groups + .entry[i] + ->generator->size); if (ret < 0) { gnutls_assert(); goto cleanup; } - q_bits = - *session->internals.priorities-> - groups.entry[i]->q_bits; + q_bits = *session->internals.priorities->groups + .entry[i] + ->q_bits; goto finished; } } - } if (dh_params) { @@ -212,12 +208,12 @@ _gnutls_figure_dh_params(gnutls_session_t session, gnutls_dh_params_t dh_params, g = params.params.dh->params[1]; q_bits = params.params.dh->q_bits; } else - return - gnutls_assert_val(GNUTLS_E_NO_TEMPORARY_DH_PARAMS); + return gnutls_assert_val( + GNUTLS_E_NO_TEMPORARY_DH_PARAMS); } else return gnutls_assert_val(GNUTLS_E_NO_TEMPORARY_DH_PARAMS); - finished: +finished: _gnutls_dh_save_group(session, g, p); ret = set_dh_pk_params(session, g, p, q, q_bits); @@ -225,7 +221,7 @@ _gnutls_figure_dh_params(gnutls_session_t session, gnutls_dh_params_t dh_params, gnutls_assert(); } - cleanup: +cleanup: if (free_pg) { _gnutls_mpi_release(&p); _gnutls_mpi_release(&q); @@ -235,7 +231,6 @@ _gnutls_figure_dh_params(gnutls_session_t session, gnutls_dh_params_t dh_params, gnutls_dh_params_deinit(params.params.dh); return ret; - } /* returns the prime and the generator of DH params. @@ -263,10 +258,9 @@ const bigint_t *_gnutls_dh_params_to_mpi(gnutls_dh_params_t dh_primes) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, * otherwise a negative error code is returned. **/ -int -gnutls_dh_params_import_raw(gnutls_dh_params_t dh_params, - const gnutls_datum_t * prime, - const gnutls_datum_t * generator) +int gnutls_dh_params_import_raw(gnutls_dh_params_t dh_params, + const gnutls_datum_t *prime, + const gnutls_datum_t *generator) { return gnutls_dh_params_import_raw2(dh_params, prime, generator, 0); } @@ -282,9 +276,8 @@ gnutls_dh_params_import_raw(gnutls_dh_params_t dh_params, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, * otherwise a negative error code is returned. **/ -int -gnutls_dh_params_import_dsa(gnutls_dh_params_t dh_params, - gnutls_x509_privkey_t key) +int gnutls_dh_params_import_dsa(gnutls_dh_params_t dh_params, + gnutls_x509_privkey_t key) { gnutls_datum_t p, g, q; int ret; @@ -316,11 +309,10 @@ gnutls_dh_params_import_dsa(gnutls_dh_params_t dh_params, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, * otherwise a negative error code is returned. **/ -int -gnutls_dh_params_import_raw2(gnutls_dh_params_t dh_params, - const gnutls_datum_t * prime, - const gnutls_datum_t * generator, - unsigned key_bits) +int gnutls_dh_params_import_raw2(gnutls_dh_params_t dh_params, + const gnutls_datum_t *prime, + const gnutls_datum_t *generator, + unsigned key_bits) { bigint_t tmp_prime, tmp_g; size_t siz; @@ -361,11 +353,10 @@ gnutls_dh_params_import_raw2(gnutls_dh_params_t dh_params, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, * otherwise a negative error code is returned. **/ -int -gnutls_dh_params_import_raw3(gnutls_dh_params_t dh_params, - const gnutls_datum_t * prime, - const gnutls_datum_t * q, - const gnutls_datum_t * generator) +int gnutls_dh_params_import_raw3(gnutls_dh_params_t dh_params, + const gnutls_datum_t *prime, + const gnutls_datum_t *q, + const gnutls_datum_t *generator) { bigint_t tmp_p, tmp_g, tmp_q = NULL; @@ -374,7 +365,8 @@ gnutls_dh_params_import_raw3(gnutls_dh_params_t dh_params, return GNUTLS_E_MPI_SCAN_FAILED; } - if (_gnutls_mpi_init_scan_nz(&tmp_g, generator->data, generator->size)) { + if (_gnutls_mpi_init_scan_nz(&tmp_g, generator->data, + generator->size)) { _gnutls_mpi_release(&tmp_p); gnutls_assert(); return GNUTLS_E_MPI_SCAN_FAILED; @@ -413,9 +405,8 @@ gnutls_dh_params_import_raw3(gnutls_dh_params_t dh_params, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, * otherwise a negative error code is returned. **/ -int gnutls_dh_params_init(gnutls_dh_params_t * dh_params) +int gnutls_dh_params_init(gnutls_dh_params_t *dh_params) { - (*dh_params) = gnutls_calloc(1, sizeof(dh_params_st)); if (*dh_params == NULL) { gnutls_assert(); @@ -423,7 +414,6 @@ int gnutls_dh_params_init(gnutls_dh_params_t * dh_params) } return 0; - } /** @@ -442,7 +432,6 @@ void gnutls_dh_params_deinit(gnutls_dh_params_t dh_params) _gnutls_mpi_release(&dh_params->params[2]); gnutls_free(dh_params); - } /** @@ -535,10 +524,9 @@ int gnutls_dh_params_generate2(gnutls_dh_params_t dparams, unsigned int bits) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, * otherwise a negative error code is returned. **/ -int -gnutls_dh_params_import_pkcs3(gnutls_dh_params_t params, - const gnutls_datum_t * pkcs3_params, - gnutls_x509_crt_fmt_t format) +int gnutls_dh_params_import_pkcs3(gnutls_dh_params_t params, + const gnutls_datum_t *pkcs3_params, + gnutls_x509_crt_fmt_t format) { asn1_node c2; int result, need_free = 0; @@ -546,7 +534,6 @@ gnutls_dh_params_import_pkcs3(gnutls_dh_params_t params, gnutls_datum_t _params; if (format == GNUTLS_X509_FMT_PEM) { - result = _gnutls_fbase64_decode("DH PARAMETERS", pkcs3_params->data, pkcs3_params->size, &_params); @@ -562,9 +549,9 @@ gnutls_dh_params_import_pkcs3(gnutls_dh_params_t params, _params.size = pkcs3_params->size; } - if ((result = asn1_create_element - (_gnutls_get_gnutls_asn(), "GNUTLS.DHParameter", &c2)) - != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.DHParameter", &c2)) != + ASN1_SUCCESS) { gnutls_assert(); if (need_free != 0) { gnutls_free(_params.data); @@ -652,11 +639,10 @@ gnutls_dh_params_import_pkcs3(gnutls_dh_params_t params, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, * otherwise a negative error code is returned. **/ -int -gnutls_dh_params_export_pkcs3(gnutls_dh_params_t params, - gnutls_x509_crt_fmt_t format, - unsigned char *params_data, - size_t *params_data_size) +int gnutls_dh_params_export_pkcs3(gnutls_dh_params_t params, + gnutls_x509_crt_fmt_t format, + unsigned char *params_data, + size_t *params_data_size) { gnutls_datum_t out = { NULL, 0 }; int ret; @@ -702,10 +688,9 @@ gnutls_dh_params_export_pkcs3(gnutls_dh_params_t params, * * Since: 3.1.3 **/ -int -gnutls_dh_params_export2_pkcs3(gnutls_dh_params_t params, - gnutls_x509_crt_fmt_t format, - gnutls_datum_t * out) +int gnutls_dh_params_export2_pkcs3(gnutls_dh_params_t params, + gnutls_x509_crt_fmt_t format, + gnutls_datum_t *out) { asn1_node c2; int result; @@ -731,9 +716,9 @@ gnutls_dh_params_export2_pkcs3(gnutls_dh_params_t params, /* Ok. Now we have the data. Create the asn1 structures */ - if ((result = asn1_create_element - (_gnutls_get_gnutls_asn(), "GNUTLS.DHParameter", &c2)) - != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.DHParameter", &c2)) != + ASN1_SUCCESS) { gnutls_assert(); gnutls_free(all_data); return _gnutls_asn2err(result); @@ -741,8 +726,8 @@ gnutls_dh_params_export2_pkcs3(gnutls_dh_params_t params, /* Write PRIME */ - if ((result = asn1_write_value(c2, "prime", - p_data, p_size)) != ASN1_SUCCESS) { + if ((result = asn1_write_value(c2, "prime", p_data, p_size)) != + ASN1_SUCCESS) { gnutls_assert(); gnutls_free(all_data); asn1_delete_structure(&c2); @@ -750,9 +735,8 @@ gnutls_dh_params_export2_pkcs3(gnutls_dh_params_t params, } if (params->q_bits > 0) - result = - _gnutls_x509_write_uint32(c2, "privateValueLength", - params->q_bits); + result = _gnutls_x509_write_uint32(c2, "privateValueLength", + params->q_bits); else result = asn1_write_value(c2, "privateValueLength", NULL, 0); @@ -765,8 +749,8 @@ gnutls_dh_params_export2_pkcs3(gnutls_dh_params_t params, /* Write the GENERATOR */ - if ((result = asn1_write_value(c2, "base", - g_data, g_size)) != ASN1_SUCCESS) { + if ((result = asn1_write_value(c2, "base", g_data, g_size)) != + ASN1_SUCCESS) { gnutls_assert(); gnutls_free(all_data); asn1_delete_structure(&c2); @@ -783,7 +767,7 @@ gnutls_dh_params_export2_pkcs3(gnutls_dh_params_t params, if (result < 0) return gnutls_assert_val(result); - } else { /* PEM */ + } else { /* PEM */ gnutls_datum_t t; result = _gnutls_x509_der_encode(c2, "", &t, 0); @@ -793,9 +777,8 @@ gnutls_dh_params_export2_pkcs3(gnutls_dh_params_t params, if (result < 0) return gnutls_assert_val(result); - result = - _gnutls_fbase64_encode("DH PARAMETERS", t.data, t.size, - out); + result = _gnutls_fbase64_encode("DH PARAMETERS", t.data, t.size, + out); gnutls_free(t.data); @@ -823,10 +806,9 @@ gnutls_dh_params_export2_pkcs3(gnutls_dh_params_t params, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, * otherwise a negative error code is returned. **/ -int -gnutls_dh_params_export_raw(gnutls_dh_params_t params, - gnutls_datum_t * prime, - gnutls_datum_t * generator, unsigned int *bits) +int gnutls_dh_params_export_raw(gnutls_dh_params_t params, + gnutls_datum_t *prime, + gnutls_datum_t *generator, unsigned int *bits) { int ret; @@ -852,5 +834,4 @@ gnutls_dh_params_export_raw(gnutls_dh_params_t params, *bits = params->q_bits; return 0; - } diff --git a/lib/dh.h b/lib/dh.h index ea78715c9f..ad1d5767b3 100644 --- a/lib/dh.h +++ b/lib/dh.h @@ -21,16 +21,16 @@ */ #ifndef GNUTLS_LIB_DH_H -# define GNUTLS_LIB_DH_H +#define GNUTLS_LIB_DH_H const bigint_t *_gnutls_dh_params_to_mpi(gnutls_dh_params_t); -int -_gnutls_figure_dh_params(gnutls_session_t session, gnutls_dh_params_t dh_params, - gnutls_params_function * func, - gnutls_sec_param_t sec_param); +int _gnutls_figure_dh_params(gnutls_session_t session, + gnutls_dh_params_t dh_params, + gnutls_params_function *func, + gnutls_sec_param_t sec_param); -int _gnutls_set_cred_dh_params(gnutls_dh_params_t * cparams, +int _gnutls_set_cred_dh_params(gnutls_dh_params_t *cparams, gnutls_sec_param_t sec_param); /* The static parameters defined in RFC 3526, used for the approved @@ -62,11 +62,10 @@ extern const gnutls_datum_t gnutls_modp_2048_group_q; extern const gnutls_datum_t gnutls_modp_2048_group_generator; extern const unsigned int gnutls_modp_2048_key_bits; -unsigned -_gnutls_dh_prime_match_fips_approved(const uint8_t * prime, - size_t prime_size, - const uint8_t * generator, - size_t generator_size, - uint8_t ** q, size_t *q_size); +unsigned _gnutls_dh_prime_match_fips_approved(const uint8_t *prime, + size_t prime_size, + const uint8_t *generator, + size_t generator_size, + uint8_t **q, size_t *q_size); -#endif /* GNUTLS_LIB_DH_H */ +#endif /* GNUTLS_LIB_DH_H */ diff --git a/lib/dtls-sw.c b/lib/dtls-sw.c index 960604ad14..69a6052cec 100644 --- a/lib/dtls-sw.c +++ b/lib/dtls-sw.c @@ -25,20 +25,20 @@ */ #ifndef DTLS_SW_NO_INCLUDES -# include "gnutls_int.h" -# include "errors.h" -# include "debug.h" -# include "dtls.h" -# include "record.h" +#include "gnutls_int.h" +#include "errors.h" +#include "debug.h" +#include "dtls.h" +#include "record.h" #endif /* * DTLS sliding window handling */ -#define DTLS_EPOCH_SHIFT (6*CHAR_BIT) -#define DTLS_SEQ_NUM_MASK 0x0000FFFFFFFFFFFF +#define DTLS_EPOCH_SHIFT (6 * CHAR_BIT) +#define DTLS_SEQ_NUM_MASK 0x0000FFFFFFFFFFFF -#define DTLS_EMPTY_BITMAP (0xFFFFFFFFFFFFFFFFULL) +#define DTLS_EMPTY_BITMAP (0xFFFFFFFFFFFFFFFFULL) void _dtls_reset_window(struct record_parameters_st *rp) { @@ -128,8 +128,8 @@ int _dtls_record_check(struct record_parameters_st *rp, uint64_t seq_num) return gnutls_assert_val(-3); } else { /* Within the sliding window, so we remember whether we've seen it or not */ - uint64_t mask = - 1ULL << (rp->dtls_sw_next - seq_num - 2); + uint64_t mask = 1ULL + << (rp->dtls_sw_next - seq_num - 2); if (!(rp->dtls_sw_bits & mask)) return gnutls_assert_val(-3); diff --git a/lib/dtls.c b/lib/dtls.c index 65edb83acf..7df4b26c64 100644 --- a/lib/dtls.c +++ b/lib/dtls.c @@ -40,10 +40,10 @@ void _dtls_async_timer_delete(gnutls_session_t session) { if (session->internals.dtls.async_term != 0) { - _gnutls_dtls_log - ("DTLS[%p]: Deinitializing previous handshake state.\n", - session); - session->internals.dtls.async_term = 0; /* turn off "timer" */ + _gnutls_dtls_log( + "DTLS[%p]: Deinitializing previous handshake state.\n", + session); + session->internals.dtls.async_term = 0; /* turn off "timer" */ _dtls_reset_hsk_state(session); _gnutls_handshake_io_buffer_clear(session); @@ -55,8 +55,8 @@ void _dtls_async_timer_delete(gnutls_session_t session) * outgoing message. It accepts mtu_data which is a buffer to * be reused (should be set to NULL initially). */ -static inline int -transmit_message(gnutls_session_t session, mbuffer_st * bufel, uint8_t ** buf) +static inline int transmit_message(gnutls_session_t session, mbuffer_st *bufel, + uint8_t **buf) { uint8_t *data, *mtu_data; int ret = 0; @@ -69,13 +69,12 @@ transmit_message(gnutls_session_t session, mbuffer_st * bufel, uint8_t ** buf) mtu -= DTLS_HANDSHAKE_HEADER_SIZE; if (bufel->type == GNUTLS_CHANGE_CIPHER_SPEC) { - _gnutls_dtls_log - ("DTLS[%p]: Sending Packet[%u] fragment %s(%d), mtu %u\n", - session, bufel->handshake_sequence, - _gnutls_handshake2str(bufel->htype), bufel->htype, mtu); + _gnutls_dtls_log( + "DTLS[%p]: Sending Packet[%u] fragment %s(%d), mtu %u\n", + session, bufel->handshake_sequence, + _gnutls_handshake2str(bufel->htype), bufel->htype, mtu); - return _gnutls_send_int(session, bufel->type, -1, - bufel->epoch, + return _gnutls_send_int(session, bufel->type, -1, bufel->epoch, _mbuffer_get_uhead_ptr(bufel), _mbuffer_get_uhead_size(bufel), 0); } @@ -94,7 +93,7 @@ transmit_message(gnutls_session_t session, mbuffer_st * bufel, uint8_t ** buf) */ /* Handshake type */ - mtu_data[0] = (uint8_t) bufel->htype; + mtu_data[0] = (uint8_t)bufel->htype; /* Total length */ _gnutls_write_uint24(data_size, &mtu_data[1]); @@ -124,20 +123,20 @@ transmit_message(gnutls_session_t session, mbuffer_st * bufel, uint8_t ** buf) /* Fragment length */ _gnutls_write_uint24(frag_len, &mtu_data[9]); - memcpy(&mtu_data[DTLS_HANDSHAKE_HEADER_SIZE], - data + offset, frag_len); + memcpy(&mtu_data[DTLS_HANDSHAKE_HEADER_SIZE], data + offset, + frag_len); - _gnutls_dtls_log - ("DTLS[%p]: Sending Packet[%u] fragment %s(%d) with " - "length: %u, offset: %u, fragment length: %u, mtu: %u\n", - session, bufel->handshake_sequence, - _gnutls_handshake2str(bufel->htype), bufel->htype, - data_size, offset, frag_len, mtu); + _gnutls_dtls_log( + "DTLS[%p]: Sending Packet[%u] fragment %s(%d) with " + "length: %u, offset: %u, fragment length: %u, mtu: %u\n", + session, bufel->handshake_sequence, + _gnutls_handshake2str(bufel->htype), bufel->htype, + data_size, offset, frag_len, mtu); ret = _gnutls_send_int(session, bufel->type, bufel->htype, bufel->epoch, mtu_data, - DTLS_HANDSHAKE_HEADER_SIZE + - frag_len, 0); + DTLS_HANDSHAKE_HEADER_SIZE + frag_len, + 0); if (ret < 0) { gnutls_assert(); break; @@ -148,7 +147,7 @@ transmit_message(gnutls_session_t session, mbuffer_st * bufel, uint8_t ** buf) } static int drop_usage_count(gnutls_session_t session, - mbuffer_head_st * const send_buffer) + mbuffer_head_st *const send_buffer) { int ret; mbuffer_st *cur; @@ -174,9 +173,8 @@ static int is_next_hpacket_expected(gnutls_session_t session) int ret; /* htype is arbitrary */ - ret = - _gnutls_recv_in_buffers(session, GNUTLS_HANDSHAKE, - GNUTLS_HANDSHAKE_FINISHED, 0); + ret = _gnutls_recv_in_buffers(session, GNUTLS_HANDSHAKE, + GNUTLS_HANDSHAKE_FINISHED, 0); if (ret < 0) return gnutls_assert_val(ret); @@ -197,13 +195,16 @@ void _dtls_reset_hsk_state(gnutls_session_t session) _mbuffer_head_clear(&session->internals.handshake_send_buffer); } -#define UPDATE_TIMER { \ - session->internals.dtls.actual_retrans_timeout_ms *= 2; \ - session->internals.dtls.actual_retrans_timeout_ms %= MAX_DTLS_TIMEOUT; \ - } +#define UPDATE_TIMER \ + { \ + session->internals.dtls.actual_retrans_timeout_ms *= 2; \ + session->internals.dtls.actual_retrans_timeout_ms %= \ + MAX_DTLS_TIMEOUT; \ + } -#define RESET_TIMER \ - session->internals.dtls.actual_retrans_timeout_ms = session->internals.dtls.retrans_timeout_ms +#define RESET_TIMER \ + session->internals.dtls.actual_retrans_timeout_ms = \ + session->internals.dtls.retrans_timeout_ms #define TIMER_WINDOW session->internals.dtls.actual_retrans_timeout_ms @@ -221,7 +222,7 @@ int _dtls_transmit(gnutls_session_t session) /* PREPARING -> SENDING state transition */ mbuffer_head_st *const send_buffer = - &session->internals.handshake_send_buffer; + &session->internals.handshake_send_buffer; mbuffer_st *cur; gnutls_handshake_description_t last_type = 0; unsigned int diff; @@ -233,8 +234,8 @@ int _dtls_transmit(gnutls_session_t session) * non blocking way, check if it is time to retransmit or just * return. */ - if (session->internals.dtls.flight_init != 0 - && (session->internals.flags & GNUTLS_NONBLOCK)) { + if (session->internals.dtls.flight_init != 0 && + (session->internals.flags & GNUTLS_NONBLOCK)) { /* just in case previous run was interrupted */ ret = _gnutls_io_write_flush(session); if (ret < 0) { @@ -242,31 +243,29 @@ int _dtls_transmit(gnutls_session_t session) goto cleanup; } - if (session->internals.dtls.last_flight == 0 - || !_dtls_is_async(session)) { + if (session->internals.dtls.last_flight == 0 || + !_dtls_is_async(session)) { /* check for ACK */ ret = _gnutls_io_check_recv(session, 0); if (ret == GNUTLS_E_TIMEDOUT) { /* if no retransmission is required yet just return */ - if (timespec_sub_ms - (&now, - &session->internals.dtls.last_retransmit) < + if (timespec_sub_ms(&now, + &session->internals.dtls + .last_retransmit) < TIMER_WINDOW) { gnutls_assert(); goto nb_timeout; } - } else { /* received something */ + } else { /* received something */ if (ret == 0) { ret = is_next_hpacket_expected(session); - if (ret == GNUTLS_E_AGAIN - || ret == GNUTLS_E_INTERRUPTED) + if (ret == GNUTLS_E_AGAIN || + ret == GNUTLS_E_INTERRUPTED) goto nb_timeout; - if (ret < 0 - && ret != - GNUTLS_E_UNEXPECTED_HANDSHAKE_PACKET) - { + if (ret < 0 && + ret != GNUTLS_E_UNEXPECTED_HANDSHAKE_PACKET) { gnutls_assert(); goto cleanup; } @@ -282,25 +281,24 @@ int _dtls_transmit(gnutls_session_t session) do { timeout = TIMER_WINDOW; - diff = - timespec_sub_ms(&now, - &session->internals.handshake_start_time); + diff = timespec_sub_ms( + &now, &session->internals.handshake_start_time); if (diff >= session->internals.handshake_timeout_ms) { _gnutls_dtls_log("Session timeout: %u ms\n", diff); ret = gnutls_assert_val(GNUTLS_E_TIMEDOUT); goto end_flight; } - diff = - timespec_sub_ms(&now, - &session->internals.dtls.last_retransmit); - if (session->internals.dtls.flight_init == 0 - || diff >= TIMER_WINDOW) { - _gnutls_dtls_log - ("DTLS[%p]: %sStart of flight transmission.\n", - session, - (session->internals.dtls.flight_init == - 0) ? "" : "re-"); + diff = timespec_sub_ms( + &now, &session->internals.dtls.last_retransmit); + if (session->internals.dtls.flight_init == 0 || + diff >= TIMER_WINDOW) { + _gnutls_dtls_log( + "DTLS[%p]: %sStart of flight transmission.\n", + session, + (session->internals.dtls.flight_init == 0) ? + "" : + "re-"); for (cur = send_buffer->head; cur != NULL; cur = cur->next) { ret = transmit_message(session, cur, &buf); @@ -311,8 +309,8 @@ int _dtls_transmit(gnutls_session_t session) last_type = cur->htype; } - gnutls_gettime(&session->internals. - dtls.last_retransmit); + gnutls_gettime( + &session->internals.dtls.last_retransmit); if (session->internals.dtls.flight_init == 0) { session->internals.dtls.flight_init = 1; @@ -347,7 +345,7 @@ int _dtls_transmit(gnutls_session_t session) */ ret = 0; goto cleanup; - } else { /* all other messages -> implicit ack (receive of next flight) */ + } else { /* all other messages -> implicit ack (receive of next flight) */ if (!(session->internals.flags & GNUTLS_NONBLOCK)) ret = _gnutls_io_check_recv(session, timeout); @@ -360,11 +358,12 @@ int _dtls_transmit(gnutls_session_t session) if (ret == 0) { ret = is_next_hpacket_expected(session); - if (ret == GNUTLS_E_AGAIN - || ret == GNUTLS_E_INTERRUPTED) + if (ret == GNUTLS_E_AGAIN || + ret == GNUTLS_E_INTERRUPTED) goto nb_timeout; - if (ret == GNUTLS_E_UNEXPECTED_HANDSHAKE_PACKET) { + if (ret == + GNUTLS_E_UNEXPECTED_HANDSHAKE_PACKET) { ret = GNUTLS_E_TIMEDOUT; goto keep_up; } @@ -376,7 +375,7 @@ int _dtls_transmit(gnutls_session_t session) } } - keep_up: + keep_up: gnutls_gettime(&now); } while (ret == GNUTLS_E_TIMEDOUT); @@ -387,18 +386,18 @@ int _dtls_transmit(gnutls_session_t session) ret = 0; - end_flight: +end_flight: _gnutls_dtls_log("DTLS[%p]: End of flight transmission.\n", session); _dtls_reset_hsk_state(session); - cleanup: +cleanup: if (buf != NULL) gnutls_free(buf); /* SENDING -> WAITING state transition */ return ret; - nb_timeout: +nb_timeout: if (buf != NULL) gnutls_free(buf); @@ -481,9 +480,9 @@ void gnutls_dtls_set_mtu(gnutls_session_t session, unsigned int mtu) /* when max is non-zero this function will return the maximum * overhead that this ciphersuite may introduce, e.g., the maximum * amount of padding required */ -unsigned _gnutls_record_overhead(const version_entry_st * ver, - const cipher_entry_st * cipher, - const mac_entry_st * mac, unsigned max) +unsigned _gnutls_record_overhead(const version_entry_st *ver, + const cipher_entry_st *cipher, + const mac_entry_st *mac, unsigned max) { int total = 0; int ret; @@ -518,7 +517,7 @@ unsigned _gnutls_record_overhead(const version_entry_st * ver, exp_iv = _gnutls_cipher_get_explicit_iv_size(cipher); if (max) - total += 2 * exp_iv; /* block == iv size */ + total += 2 * exp_iv; /* block == iv size */ else total += exp_iv + 1; } @@ -657,8 +656,8 @@ unsigned int gnutls_dtls_get_data_mtu(gnutls_session_t session) if (ret < 0) return mtu; - if (params->cipher->type == CIPHER_AEAD - || params->cipher->type == CIPHER_STREAM) + if (params->cipher->type == CIPHER_AEAD || + params->cipher->type == CIPHER_STREAM) return mtu - _gnutls_record_overhead(get_version(session), params->cipher, params->mac, 0); @@ -820,9 +819,9 @@ unsigned int gnutls_dtls_get_timeout(gnutls_session_t session) * * Since: 3.0 **/ -int gnutls_dtls_cookie_send(gnutls_datum_t * key, void *client_data, +int gnutls_dtls_cookie_send(gnutls_datum_t *key, void *client_data, size_t client_data_size, - gnutls_dtls_prestate_st * prestate, + gnutls_dtls_prestate_st *prestate, gnutls_transport_ptr_t ptr, gnutls_push_func push_func) { @@ -833,7 +832,7 @@ int gnutls_dtls_cookie_send(gnutls_datum_t * key, void *client_data, if (key == NULL || key->data == NULL || key->size == 0) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); -/* send + /* send * struct { * ContentType type - 1 byte GNUTLS_HANDSHAKE; * ProtocolVersion version; - 2 bytes (254,255) @@ -893,9 +892,8 @@ int gnutls_dtls_cookie_send(gnutls_datum_t * key, void *client_data, hvr[hvr_size++] = 255; hvr[hvr_size++] = COOKIE_SIZE; - ret = - _gnutls_mac_fast(C_HASH, key->data, key->size, client_data, - client_data_size, digest); + ret = _gnutls_mac_fast(C_HASH, key->data, key->size, client_data, + client_data_size, digest); if (ret < 0) return gnutls_assert_val(ret); @@ -929,10 +927,10 @@ int gnutls_dtls_cookie_send(gnutls_datum_t * key, void *client_data, * * Since: 3.0 **/ -int gnutls_dtls_cookie_verify(gnutls_datum_t * key, - void *client_data, size_t client_data_size, - void *_msg, size_t msg_size, - gnutls_dtls_prestate_st * prestate) +int gnutls_dtls_cookie_verify(gnutls_datum_t *key, void *client_data, + size_t client_data_size, void *_msg, + size_t msg_size, + gnutls_dtls_prestate_st *prestate) { gnutls_datum_t cookie; int ret; @@ -969,24 +967,25 @@ int gnutls_dtls_cookie_verify(gnutls_datum_t * key, cookie.data = &msg[pos]; if (cookie.size != COOKIE_SIZE) { if (cookie.size > 0) - _gnutls_audit_log(NULL, - "Received cookie with illegal size %d. Expected %d\n", - (int)cookie.size, COOKIE_SIZE); + _gnutls_audit_log( + NULL, + "Received cookie with illegal size %d. Expected %d\n", + (int)cookie.size, COOKIE_SIZE); return gnutls_assert_val(GNUTLS_E_BAD_COOKIE); } - ret = - _gnutls_mac_fast(C_HASH, key->data, key->size, client_data, - client_data_size, digest); + ret = _gnutls_mac_fast(C_HASH, key->data, key->size, client_data, + client_data_size, digest); if (ret < 0) return gnutls_assert_val(ret); if (memcmp(digest, cookie.data, COOKIE_MAC_SIZE) != 0) return gnutls_assert_val(GNUTLS_E_BAD_COOKIE); - prestate->record_seq = msg[10]; /* client's record seq */ - prestate->hsk_read_seq = msg[DTLS_RECORD_HEADER_SIZE + 5]; /* client's hsk seq */ - prestate->hsk_write_seq = 0; /* we always send zero for this msg */ + prestate->record_seq = msg[10]; /* client's record seq */ + prestate->hsk_read_seq = + msg[DTLS_RECORD_HEADER_SIZE + 5]; /* client's hsk seq */ + prestate->hsk_write_seq = 0; /* we always send zero for this msg */ return 0; } @@ -1006,7 +1005,7 @@ int gnutls_dtls_cookie_verify(gnutls_datum_t * key, * Since: 3.0 **/ void gnutls_dtls_prestate_set(gnutls_session_t session, - gnutls_dtls_prestate_st * prestate) + gnutls_dtls_prestate_st *prestate) { record_parameters_st *params; int ret; diff --git a/lib/dtls.h b/lib/dtls.h index 9ece15de86..d3e55d94a4 100644 --- a/lib/dtls.h +++ b/lib/dtls.h @@ -21,42 +21,43 @@ */ #ifndef GNUTLS_LIB_DTLS_H -# define GNUTLS_LIB_DTLS_H +#define GNUTLS_LIB_DTLS_H -# include -# include "gnutls_int.h" -# include -# include -# include +#include +#include "gnutls_int.h" +#include +#include +#include int _dtls_transmit(gnutls_session_t session); int _dtls_record_check(struct record_parameters_st *rp, uint64_t seq_num); void _dtls_reset_hsk_state(gnutls_session_t session); void _dtls_reset_window(struct record_parameters_st *rp); -# define MAX_DTLS_TIMEOUT 60000 - -# define RETURN_DTLS_EAGAIN_OR_TIMEOUT(session, r) { \ - struct timespec _now; \ - unsigned int _diff; \ - gnutls_gettime(&_now); \ - \ - _diff = timespec_sub_ms(&_now, &session->internals.handshake_start_time); \ - if (_diff > session->internals.handshake_timeout_ms) \ - { \ - _gnutls_dtls_log("Session timeout: %u ms\n", _diff); \ - return gnutls_assert_val(GNUTLS_E_TIMEDOUT); \ - } \ - else \ - { \ - int _rr; \ - if (r != GNUTLS_E_INTERRUPTED) _rr = GNUTLS_E_AGAIN; \ - else _rr = r; \ - if (!(session->internals.flags & GNUTLS_NONBLOCK)) \ - millisleep(50); \ - return gnutls_assert_val(_rr); \ - } \ - } +#define MAX_DTLS_TIMEOUT 60000 + +#define RETURN_DTLS_EAGAIN_OR_TIMEOUT(session, r) \ + { \ + struct timespec _now; \ + unsigned int _diff; \ + gnutls_gettime(&_now); \ + \ + _diff = timespec_sub_ms( \ + &_now, &session->internals.handshake_start_time); \ + if (_diff > session->internals.handshake_timeout_ms) { \ + _gnutls_dtls_log("Session timeout: %u ms\n", _diff); \ + return gnutls_assert_val(GNUTLS_E_TIMEDOUT); \ + } else { \ + int _rr; \ + if (r != GNUTLS_E_INTERRUPTED) \ + _rr = GNUTLS_E_AGAIN; \ + else \ + _rr = r; \ + if (!(session->internals.flags & GNUTLS_NONBLOCK)) \ + millisleep(50); \ + return gnutls_assert_val(_rr); \ + } \ + } int _dtls_wait_and_retransmit(gnutls_session_t session); @@ -65,10 +66,10 @@ int _dtls_wait_and_retransmit(gnutls_session_t session); */ inline static int _dtls_is_async(gnutls_session_t session) { - if ((session->security_parameters.entity == GNUTLS_SERVER - && !session->internals.resumed) - || (session->security_parameters.entity == GNUTLS_CLIENT - && session->internals.resumed)) + if ((session->security_parameters.entity == GNUTLS_SERVER && + !session->internals.resumed) || + (session->security_parameters.entity == GNUTLS_CLIENT && + session->internals.resumed)) return 1; else return 0; @@ -77,11 +78,11 @@ inline static int _dtls_is_async(gnutls_session_t session) inline static void _dtls_async_timer_init(gnutls_session_t session) { if (_dtls_is_async(session)) { - _gnutls_dtls_log - ("DTLS[%p]: Initializing timer for handshake state.\n", - session); + _gnutls_dtls_log( + "DTLS[%p]: Initializing timer for handshake state.\n", + session); session->internals.dtls.async_term = - gnutls_time(0) + MAX_DTLS_TIMEOUT / 1000; + gnutls_time(0) + MAX_DTLS_TIMEOUT / 1000; } else { _dtls_reset_hsk_state(session); _gnutls_handshake_io_buffer_clear(session); @@ -109,9 +110,9 @@ inline static void _dtls_async_timer_check(gnutls_session_t session) } } -unsigned _gnutls_record_overhead(const version_entry_st * ver, - const cipher_entry_st * cipher, - const mac_entry_st * mac, unsigned max); +unsigned _gnutls_record_overhead(const version_entry_st *ver, + const cipher_entry_st *cipher, + const mac_entry_st *mac, unsigned max); /* Returns non-zero if the async timer is active */ inline static int _dtls_async_timer_active(gnutls_session_t session) @@ -132,4 +133,4 @@ inline static int _dtls_retransmit(gnutls_session_t session) return _dtls_transmit(session); } -#endif /* GNUTLS_LIB_DTLS_H */ +#endif /* GNUTLS_LIB_DTLS_H */ diff --git a/lib/ecc.c b/lib/ecc.c index d486be492c..b5be223865 100644 --- a/lib/ecc.c +++ b/lib/ecc.c @@ -29,9 +29,8 @@ #include #include "errors.h" -int -_gnutls_ecc_ansi_x962_export(gnutls_ecc_curve_t curve, bigint_t x, - bigint_t y, gnutls_datum_t * out) +int _gnutls_ecc_ansi_x962_export(gnutls_ecc_curve_t curve, bigint_t x, + bigint_t y, gnutls_datum_t *out) { int numlen = gnutls_ecc_curve_get_size(curve); int byte_size, ret; @@ -72,10 +71,8 @@ _gnutls_ecc_ansi_x962_export(gnutls_ecc_curve_t curve, bigint_t x, } size = out->size - (1 + (numlen + numlen - byte_size)); - ret = - _gnutls_mpi_print(y, - &out->data[1 + numlen + numlen - byte_size], - &size); + ret = _gnutls_mpi_print(y, &out->data[1 + numlen + numlen - byte_size], + &size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -83,14 +80,13 @@ _gnutls_ecc_ansi_x962_export(gnutls_ecc_curve_t curve, bigint_t x, /* pad and store y */ return 0; - cleanup: +cleanup: _gnutls_free_datum(out); return ret; } -int -_gnutls_ecc_ansi_x962_import(const uint8_t * in, - unsigned long inlen, bigint_t * x, bigint_t * y) +int _gnutls_ecc_ansi_x962_import(const uint8_t *in, unsigned long inlen, + bigint_t *x, bigint_t *y) { int ret; @@ -109,9 +105,8 @@ _gnutls_ecc_ansi_x962_import(const uint8_t * in, if (ret < 0) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - ret = - _gnutls_mpi_init_scan(y, in + 1 + ((inlen - 1) >> 1), - (inlen - 1) >> 1); + ret = _gnutls_mpi_init_scan(y, in + 1 + ((inlen - 1) >> 1), + (inlen - 1) >> 1); if (ret < 0) { _gnutls_mpi_release(x); return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); diff --git a/lib/ecc.h b/lib/ecc.h index de172674bb..b59079567d 100644 --- a/lib/ecc.h +++ b/lib/ecc.h @@ -21,11 +21,11 @@ */ #ifndef GNUTLS_LIB_ECC_H -# define GNUTLS_LIB_ECC_H +#define GNUTLS_LIB_ECC_H -int _gnutls_ecc_ansi_x962_import(const uint8_t * in, unsigned long inlen, - bigint_t * x, bigint_t * y); +int _gnutls_ecc_ansi_x962_import(const uint8_t *in, unsigned long inlen, + bigint_t *x, bigint_t *y); int _gnutls_ecc_ansi_x962_export(gnutls_ecc_curve_t curve, bigint_t x, - bigint_t y, gnutls_datum_t * out); + bigint_t y, gnutls_datum_t *out); -#endif /* GNUTLS_LIB_ECC_H */ +#endif /* GNUTLS_LIB_ECC_H */ diff --git a/lib/errors.c b/lib/errors.c index e236d22a89..29b97bedfb 100644 --- a/lib/errors.c +++ b/lib/errors.c @@ -23,12 +23,14 @@ #include "gnutls_int.h" #include "errors.h" #ifdef STDC_HEADERS -# include +#include #endif #include "str.h" -#define ERROR_ENTRY(desc, name) \ - { desc, #name, name} +#define ERROR_ENTRY(desc, name) \ + { \ + desc, #name, name \ + } struct gnutls_error_entry { const char *desc; @@ -54,26 +56,26 @@ static const gnutls_error_entry error_entries[] = { ERROR_ENTRY(N_("An algorithm that is not enabled was negotiated."), GNUTLS_E_UNWANTED_ALGORITHM), - ERROR_ENTRY(N_ - ("A packet with illegal or unsupported version was received."), - GNUTLS_E_UNSUPPORTED_VERSION_PACKET), - ERROR_ENTRY(N_ - ("The Diffie-Hellman prime sent by the server is not acceptable (not long enough)."), - GNUTLS_E_DH_PRIME_UNACCEPTABLE), + ERROR_ENTRY( + N_("A packet with illegal or unsupported version was received."), + GNUTLS_E_UNSUPPORTED_VERSION_PACKET), + ERROR_ENTRY( + N_("The Diffie-Hellman prime sent by the server is not acceptable (not long enough)."), + GNUTLS_E_DH_PRIME_UNACCEPTABLE), ERROR_ENTRY(N_("Error decoding the received TLS packet."), GNUTLS_E_UNEXPECTED_PACKET_LENGTH), ERROR_ENTRY(N_("A TLS record packet with invalid length was received."), GNUTLS_E_RECORD_OVERFLOW), ERROR_ENTRY(N_("The TLS connection was non-properly terminated."), GNUTLS_E_PREMATURE_TERMINATION), - ERROR_ENTRY(N_ - ("The specified session has been invalidated for some reason."), - GNUTLS_E_INVALID_SESSION), + ERROR_ENTRY( + N_("The specified session has been invalidated for some reason."), + GNUTLS_E_INVALID_SESSION), ERROR_ENTRY(N_("GnuTLS internal error."), GNUTLS_E_INTERNAL_ERROR), - ERROR_ENTRY(N_ - ("A connection with inappropriate fallback was attempted."), - GNUTLS_E_INAPPROPRIATE_FALLBACK), + ERROR_ENTRY( + N_("A connection with inappropriate fallback was attempted."), + GNUTLS_E_INAPPROPRIATE_FALLBACK), ERROR_ENTRY(N_("An illegal TLS extension was received."), GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION), ERROR_ENTRY(N_("An required TLS extension was received."), @@ -84,19 +86,19 @@ static const gnutls_error_entry error_entries[] = { GNUTLS_E_UNEXPECTED_PACKET), ERROR_ENTRY(N_("Failed to import the key into store."), GNUTLS_E_KEY_IMPORT_FAILED), - ERROR_ENTRY(N_ - ("An error was encountered at the TLS Finished packet calculation."), - GNUTLS_E_ERROR_IN_FINISHED_PACKET), + ERROR_ENTRY( + N_("An error was encountered at the TLS Finished packet calculation."), + GNUTLS_E_ERROR_IN_FINISHED_PACKET), ERROR_ENTRY(N_("No certificate was found."), GNUTLS_E_NO_CERTIFICATE_FOUND), ERROR_ENTRY(N_("Certificate is required."), GNUTLS_E_CERTIFICATE_REQUIRED), - ERROR_ENTRY(N_ - ("The given DSA key is incompatible with the selected TLS protocol."), - GNUTLS_E_INCOMPAT_DSA_KEY_WITH_TLS_PROTOCOL), - ERROR_ENTRY(N_ - ("There is already a crypto algorithm with lower priority."), - GNUTLS_E_CRYPTO_ALREADY_REGISTERED), + ERROR_ENTRY( + N_("The given DSA key is incompatible with the selected TLS protocol."), + GNUTLS_E_INCOMPAT_DSA_KEY_WITH_TLS_PROTOCOL), + ERROR_ENTRY( + N_("There is already a crypto algorithm with lower priority."), + GNUTLS_E_CRYPTO_ALREADY_REGISTERED), ERROR_ENTRY(N_("No temporary RSA parameters were found."), GNUTLS_E_NO_TEMPORARY_RSA_PARAMS), @@ -108,10 +110,8 @@ static const gnutls_error_entry error_entries[] = { GNUTLS_E_MPI_SCAN_FAILED), ERROR_ENTRY(N_("Could not export a large integer."), GNUTLS_E_MPI_PRINT_FAILED), - ERROR_ENTRY(N_("Decryption has failed."), - GNUTLS_E_DECRYPTION_FAILED), - ERROR_ENTRY(N_("Encryption has failed."), - GNUTLS_E_ENCRYPTION_FAILED), + ERROR_ENTRY(N_("Decryption has failed."), GNUTLS_E_DECRYPTION_FAILED), + ERROR_ENTRY(N_("Encryption has failed."), GNUTLS_E_ENCRYPTION_FAILED), ERROR_ENTRY(N_("Public key decryption has failed."), GNUTLS_E_PK_DECRYPTION_FAILED), ERROR_ENTRY(N_("Public key encryption has failed."), @@ -127,9 +127,9 @@ static const gnutls_error_entry error_entries[] = { ERROR_ENTRY(N_("Internal error in memory allocation."), GNUTLS_E_MEMORY_ERROR), - ERROR_ENTRY(N_ - ("An unimplemented or disabled feature has been requested."), - GNUTLS_E_UNIMPLEMENTED_FEATURE), + ERROR_ENTRY( + N_("An unimplemented or disabled feature has been requested."), + GNUTLS_E_UNIMPLEMENTED_FEATURE), ERROR_ENTRY(N_("Insufficient credentials for that request."), GNUTLS_E_INSUFFICIENT_CREDENTIALS), ERROR_ENTRY(N_("Error in password/key file."), GNUTLS_E_SRP_PWD_ERROR), @@ -154,9 +154,9 @@ static const gnutls_error_entry error_entries[] = { GNUTLS_E_NO_EMBEDDED_DATA), ERROR_ENTRY(N_("Error in the pull function."), GNUTLS_E_PULL_ERROR), ERROR_ENTRY(N_("Error in the push function."), GNUTLS_E_PUSH_ERROR), - ERROR_ENTRY(N_ - ("The upper limit of record packet sequence numbers has been reached. Wow!"), - GNUTLS_E_RECORD_LIMIT_REACHED), + ERROR_ENTRY( + N_("The upper limit of record packet sequence numbers has been reached. Wow!"), + GNUTLS_E_RECORD_LIMIT_REACHED), ERROR_ENTRY(N_("Error in the certificate."), GNUTLS_E_CERTIFICATE_ERROR), ERROR_ENTRY(N_("Error in the time fields of certificate."), @@ -165,17 +165,15 @@ static const gnutls_error_entry error_entries[] = { GNUTLS_E_CERTIFICATE_VERIFICATION_ERROR), ERROR_ENTRY(N_("Error in the CRL verification."), GNUTLS_E_CRL_VERIFICATION_ERROR), - ERROR_ENTRY(N_ - ("Error in the private key verification; seed doesn't match."), - GNUTLS_E_PRIVKEY_VERIFICATION_ERROR), - ERROR_ENTRY(N_("Could not authenticate peer."), - GNUTLS_E_AUTH_ERROR), - ERROR_ENTRY(N_ - ("Unknown Subject Alternative name in X.509 certificate."), + ERROR_ENTRY( + N_("Error in the private key verification; seed doesn't match."), + GNUTLS_E_PRIVKEY_VERIFICATION_ERROR), + ERROR_ENTRY(N_("Could not authenticate peer."), GNUTLS_E_AUTH_ERROR), + ERROR_ENTRY(N_("Unknown Subject Alternative name in X.509 certificate."), GNUTLS_E_X509_UNKNOWN_SAN), - ERROR_ENTRY(N_ - ("CIDR name constraint is malformed in size or structure."), - GNUTLS_E_MALFORMED_CIDR), + ERROR_ENTRY( + N_("CIDR name constraint is malformed in size or structure."), + GNUTLS_E_MALFORMED_CIDR), ERROR_ENTRY(N_("Unsupported critical extension in X.509 certificate."), GNUTLS_E_X509_UNSUPPORTED_CRITICAL_EXTENSION), @@ -186,19 +184,18 @@ static const gnutls_error_entry error_entries[] = { ERROR_ENTRY(N_("Key usage violation in certificate has been detected."), GNUTLS_E_KEY_USAGE_VIOLATION), ERROR_ENTRY(N_("Function was interrupted."), GNUTLS_E_INTERRUPTED), - ERROR_ENTRY(N_ - ("TLS Application data were received, while expecting handshake data."), - GNUTLS_E_GOT_APPLICATION_DATA), + ERROR_ENTRY( + N_("TLS Application data were received, while expecting handshake data."), + GNUTLS_E_GOT_APPLICATION_DATA), ERROR_ENTRY(N_("Error in Database backend."), GNUTLS_E_DB_ERROR), ERROR_ENTRY(N_("The Database entry already exists."), GNUTLS_E_DB_ENTRY_EXISTS), ERROR_ENTRY(N_("The certificate type is not supported."), GNUTLS_E_UNSUPPORTED_CERTIFICATE_TYPE), - ERROR_ENTRY(N_ - ("The given memory buffer is too short to hold parameters."), - GNUTLS_E_SHORT_MEMORY_BUFFER), - ERROR_ENTRY(N_("The request is invalid."), - GNUTLS_E_INVALID_REQUEST), + ERROR_ENTRY( + N_("The given memory buffer is too short to hold parameters."), + GNUTLS_E_SHORT_MEMORY_BUFFER), + ERROR_ENTRY(N_("The request is invalid."), GNUTLS_E_INVALID_REQUEST), ERROR_ENTRY(N_("The cookie was bad."), GNUTLS_E_BAD_COOKIE), ERROR_ENTRY(N_("An illegal parameter has been received."), GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER), @@ -220,8 +217,7 @@ static const gnutls_error_entry error_entries[] = { GNUTLS_E_ASN1_GENERIC_ERROR), ERROR_ENTRY(N_("ASN1 parser: Value is not valid."), GNUTLS_E_ASN1_VALUE_NOT_VALID), - ERROR_ENTRY(N_("ASN1 parser: Error in TAG."), - GNUTLS_E_ASN1_TAG_ERROR), + ERROR_ENTRY(N_("ASN1 parser: Error in TAG."), GNUTLS_E_ASN1_TAG_ERROR), ERROR_ENTRY(N_("ASN1 parser: error in implicit tag"), GNUTLS_E_ASN1_TAG_IMPLICIT), ERROR_ENTRY(N_("ASN1 parser: Error in type 'ANY'."), @@ -286,9 +282,9 @@ static const gnutls_error_entry error_entries[] = { GNUTLS_E_INVALID_PASSWORD), ERROR_ENTRY(N_("The given string contains invalid UTF-8 characters."), GNUTLS_E_INVALID_UTF8_STRING), - ERROR_ENTRY(N_ - ("The given email string contains non-ASCII characters before '@'."), - GNUTLS_E_INVALID_UTF8_EMAIL), + ERROR_ENTRY( + N_("The given email string contains non-ASCII characters before '@'."), + GNUTLS_E_INVALID_UTF8_EMAIL), ERROR_ENTRY(N_("The given password contains invalid characters."), GNUTLS_E_INVALID_PASSWORD_STRING), ERROR_ENTRY(N_("The Message Authentication Code verification failed."), @@ -316,57 +312,43 @@ static const gnutls_error_entry error_entries[] = { ERROR_ENTRY(N_("Channel binding data not available"), GNUTLS_E_CHANNEL_BINDING_NOT_AVAILABLE), - ERROR_ENTRY(N_("TPM error."), - GNUTLS_E_TPM_ERROR), + ERROR_ENTRY(N_("TPM error."), GNUTLS_E_TPM_ERROR), ERROR_ENTRY(N_("The TPM library (trousers) cannot be found."), GNUTLS_E_TPM_NO_LIB), - ERROR_ENTRY(N_("TPM is not initialized."), - GNUTLS_E_TPM_UNINITIALIZED), + ERROR_ENTRY(N_("TPM is not initialized."), GNUTLS_E_TPM_UNINITIALIZED), ERROR_ENTRY(N_("TPM key was not found in persistent storage."), GNUTLS_E_TPM_KEY_NOT_FOUND), ERROR_ENTRY(N_("Cannot initialize a session with the TPM."), GNUTLS_E_TPM_SESSION_ERROR), - ERROR_ENTRY(N_("PKCS #11 error."), - GNUTLS_E_PKCS11_ERROR), + ERROR_ENTRY(N_("PKCS #11 error."), GNUTLS_E_PKCS11_ERROR), ERROR_ENTRY(N_("PKCS #11 initialization error."), GNUTLS_E_PKCS11_LOAD_ERROR), - ERROR_ENTRY(N_("Error in parsing."), - GNUTLS_E_PARSING_ERROR), - ERROR_ENTRY(N_("Error in provided PIN."), - GNUTLS_E_PKCS11_PIN_ERROR), + ERROR_ENTRY(N_("Error in parsing."), GNUTLS_E_PARSING_ERROR), + ERROR_ENTRY(N_("Error in provided PIN."), GNUTLS_E_PKCS11_PIN_ERROR), ERROR_ENTRY(N_("Error in provided SRK password for TPM."), GNUTLS_E_TPM_SRK_PASSWORD_ERROR), - ERROR_ENTRY(N_ - ("Error in provided password for key to be loaded in TPM."), - GNUTLS_E_TPM_KEY_PASSWORD_ERROR), - ERROR_ENTRY(N_("PKCS #11 error in slot"), - GNUTLS_E_PKCS11_SLOT_ERROR), - ERROR_ENTRY(N_("Thread locking error"), - GNUTLS_E_LOCKING_ERROR), + ERROR_ENTRY( + N_("Error in provided password for key to be loaded in TPM."), + GNUTLS_E_TPM_KEY_PASSWORD_ERROR), + ERROR_ENTRY(N_("PKCS #11 error in slot"), GNUTLS_E_PKCS11_SLOT_ERROR), + ERROR_ENTRY(N_("Thread locking error"), GNUTLS_E_LOCKING_ERROR), ERROR_ENTRY(N_("PKCS #11 error in attribute"), GNUTLS_E_PKCS11_ATTRIBUTE_ERROR), ERROR_ENTRY(N_("PKCS #11 error in device"), GNUTLS_E_PKCS11_DEVICE_ERROR), - ERROR_ENTRY(N_("PKCS #11 error in data"), - GNUTLS_E_PKCS11_DATA_ERROR), + ERROR_ENTRY(N_("PKCS #11 error in data"), GNUTLS_E_PKCS11_DATA_ERROR), ERROR_ENTRY(N_("PKCS #11 unsupported feature"), GNUTLS_E_PKCS11_UNSUPPORTED_FEATURE_ERROR), - ERROR_ENTRY(N_("PKCS #11 error in key"), - GNUTLS_E_PKCS11_KEY_ERROR), - ERROR_ENTRY(N_("PKCS #11 PIN expired"), - GNUTLS_E_PKCS11_PIN_EXPIRED), - ERROR_ENTRY(N_("PKCS #11 PIN locked"), - GNUTLS_E_PKCS11_PIN_LOCKED), + ERROR_ENTRY(N_("PKCS #11 error in key"), GNUTLS_E_PKCS11_KEY_ERROR), + ERROR_ENTRY(N_("PKCS #11 PIN expired"), GNUTLS_E_PKCS11_PIN_EXPIRED), + ERROR_ENTRY(N_("PKCS #11 PIN locked"), GNUTLS_E_PKCS11_PIN_LOCKED), ERROR_ENTRY(N_("PKCS #11 error in session"), GNUTLS_E_PKCS11_SESSION_ERROR), ERROR_ENTRY(N_("PKCS #11 error in signature"), GNUTLS_E_PKCS11_SIGNATURE_ERROR), - ERROR_ENTRY(N_("PKCS #11 error in token"), - GNUTLS_E_PKCS11_TOKEN_ERROR), - ERROR_ENTRY(N_("PKCS #11 user error"), - GNUTLS_E_PKCS11_USER_ERROR), - ERROR_ENTRY(N_("The operation timed out"), - GNUTLS_E_TIMEDOUT), + ERROR_ENTRY(N_("PKCS #11 error in token"), GNUTLS_E_PKCS11_TOKEN_ERROR), + ERROR_ENTRY(N_("PKCS #11 user error"), GNUTLS_E_PKCS11_USER_ERROR), + ERROR_ENTRY(N_("The operation timed out"), GNUTLS_E_TIMEDOUT), ERROR_ENTRY(N_("The operation was cancelled due to user error"), GNUTLS_E_USER_ERROR), ERROR_ENTRY(N_("No supported ECC curves were found"), @@ -375,14 +357,14 @@ static const gnutls_error_entry error_entries[] = { GNUTLS_E_ECC_UNSUPPORTED_CURVE), ERROR_ENTRY(N_("The requested PKCS #11 object is not available"), GNUTLS_E_PKCS11_REQUESTED_OBJECT_NOT_AVAILBLE), - ERROR_ENTRY(N_ - ("The provided X.509 certificate list is not sorted (in subject to issuer order)"), - GNUTLS_E_CERTIFICATE_LIST_UNSORTED), + ERROR_ENTRY( + N_("The provided X.509 certificate list is not sorted (in subject to issuer order)"), + GNUTLS_E_CERTIFICATE_LIST_UNSORTED), ERROR_ENTRY(N_("The OCSP response is invalid"), GNUTLS_E_OCSP_RESPONSE_ERROR), - ERROR_ENTRY(N_ - ("The OCSP response provided doesn't match the available certificates"), - GNUTLS_E_OCSP_MISMATCH_WITH_CERTS), + ERROR_ENTRY( + N_("The OCSP response provided doesn't match the available certificates"), + GNUTLS_E_OCSP_MISMATCH_WITH_CERTS), ERROR_ENTRY(N_("There is no certificate status (OCSP)."), GNUTLS_E_NO_CERTIFICATE_STATUS), ERROR_ENTRY(N_("Error in the system's randomness device."), @@ -393,18 +375,18 @@ static const gnutls_error_entry error_entries[] = { GNUTLS_E_SELF_TEST_ERROR), ERROR_ENTRY(N_("There is no self test for this algorithm."), GNUTLS_E_NO_SELF_TEST), - ERROR_ENTRY(N_ - ("An error has been detected in the library and cannot continue operations."), - GNUTLS_E_LIB_IN_ERROR_STATE), + ERROR_ENTRY( + N_("An error has been detected in the library and cannot continue operations."), + GNUTLS_E_LIB_IN_ERROR_STATE), ERROR_ENTRY(N_("Error in sockets initialization."), GNUTLS_E_SOCKETS_INIT_ERROR), ERROR_ENTRY(N_("Error in public key generation."), GNUTLS_E_PK_GENERATION_ERROR), ERROR_ENTRY(N_("Invalid TLS extensions length field."), GNUTLS_E_UNEXPECTED_EXTENSIONS_LENGTH), - ERROR_ENTRY(N_ - ("Peer's certificate or username has changed during a rehandshake."), - GNUTLS_E_SESSION_USER_ID_CHANGED), + ERROR_ENTRY( + N_("Peer's certificate or username has changed during a rehandshake."), + GNUTLS_E_SESSION_USER_ID_CHANGED), ERROR_ENTRY(N_("The provided string has an embedded null."), GNUTLS_E_ASN1_EMBEDDED_NULL_IN_STRING), ERROR_ENTRY(N_("Attempted handshake during false start."), @@ -413,9 +395,9 @@ static const gnutls_error_entry error_entries[] = { GNUTLS_E_UNRECOGNIZED_NAME), ERROR_ENTRY(N_("There was an issue converting to or from UTF8."), GNUTLS_E_IDNA_ERROR), - ERROR_ENTRY(N_ - ("Cannot perform this action while handshake is in progress."), - GNUTLS_E_UNAVAILABLE_DURING_HANDSHAKE), + ERROR_ENTRY( + N_("Cannot perform this action while handshake is in progress."), + GNUTLS_E_UNAVAILABLE_DURING_HANDSHAKE), ERROR_ENTRY(N_("The public key is invalid."), GNUTLS_E_PK_INVALID_PUBKEY), ERROR_ENTRY(N_("There are no validation parameters present."), @@ -428,14 +410,14 @@ static const gnutls_error_entry error_entries[] = { GNUTLS_E_ASN1_TIME_ERROR), ERROR_ENTRY(N_("The signature is incompatible with the public key."), GNUTLS_E_INCOMPATIBLE_SIG_WITH_KEY), - ERROR_ENTRY(N_ - ("One of the involved algorithms has insufficient security level."), - GNUTLS_E_INSUFFICIENT_SECURITY), + ERROR_ENTRY( + N_("One of the involved algorithms has insufficient security level."), + GNUTLS_E_INSUFFICIENT_SECURITY), ERROR_ENTRY(N_("No common key share with peer."), GNUTLS_E_NO_COMMON_KEY_SHARE), ERROR_ENTRY(N_("The early data were rejected."), GNUTLS_E_EARLY_DATA_REJECTED), - {NULL, NULL, 0} + { NULL, NULL, 0 } }; static const gnutls_error_entry non_fatal_error_entries[] = { @@ -456,7 +438,7 @@ static const gnutls_error_entry non_fatal_error_entries[] = { ERROR_ENTRY(N_("Re-authentication was requested by the peer."), GNUTLS_E_REAUTH_REQUEST), /* Only non fatal (for handshake) errors here */ - {NULL, NULL, 0} + { NULL, NULL, 0 } }; /** @@ -600,8 +582,8 @@ void _gnutls_mpi_log(const char *prefix, bigint_t a) res = _gnutls_mpi_print(a, NULL, &binlen); if (res < 0 && res != GNUTLS_E_SHORT_MEMORY_BUFFER) { gnutls_assert(); - _gnutls_hard_log("MPI: %s can't print value (%d/%d)\n", - prefix, res, (int)binlen); + _gnutls_hard_log("MPI: %s can't print value (%d/%d)\n", prefix, + res, (int)binlen); return; } @@ -623,8 +605,8 @@ void _gnutls_mpi_log(const char *prefix, bigint_t a) res = _gnutls_mpi_print(a, binbuf, &binlen); if (res != 0) { gnutls_assert(); - _gnutls_hard_log("MPI: %s can't print value (%d/%d)\n", - prefix, res, (int)binlen); + _gnutls_hard_log("MPI: %s can't print value (%d/%d)\n", prefix, + res, (int)binlen); gnutls_free(binbuf); return; } @@ -634,8 +616,8 @@ void _gnutls_mpi_log(const char *prefix, bigint_t a) if (!hexbuf) { gnutls_assert(); - _gnutls_hard_log("MPI: %s out of memory (hex %d)\n", - prefix, (int)hexlen); + _gnutls_hard_log("MPI: %s out of memory (hex %d)\n", prefix, + (int)hexlen); gnutls_free(binbuf); return; } @@ -694,7 +676,7 @@ void _gnutls_audit_log(gnutls_session_t session, const char *fmt, ...) } #ifndef DEBUG -# ifndef C99_MACROS +#ifndef C99_MACROS /* Without C99 macros these functions have to * be called. This may affect performance. @@ -704,5 +686,5 @@ void _gnutls_null_log(void *x, ...) return; } -# endif /* C99_MACROS */ -#endif /* DEBUG */ +#endif /* C99_MACROS */ +#endif /* DEBUG */ diff --git a/lib/errors.h b/lib/errors.h index acc78c9bae..da75a8b5f7 100644 --- a/lib/errors.h +++ b/lib/errors.h @@ -21,32 +21,33 @@ */ #ifndef GNUTLS_LIB_ERRORS_H -# define GNUTLS_LIB_ERRORS_H - -# include "gnutls_int.h" -# include -# include -# include - -# ifdef __FILE__ -# ifdef __LINE__ -# define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__); -# else -# define gnutls_assert() -# endif -# else /* __FILE__ not defined */ -# define gnutls_assert() -# endif +#define GNUTLS_LIB_ERRORS_H + +#include "gnutls_int.h" +#include +#include +#include + +#ifdef __FILE__ +#ifdef __LINE__ +#define gnutls_assert() \ + _gnutls_assert_log("ASSERT: %s[%s]:%d\n", __FILE__, __func__, __LINE__); +#else +#define gnutls_assert() +#endif +#else /* __FILE__ not defined */ +#define gnutls_assert() +#endif inline static int _gnutls_asn2err(int asn_err) __GNUTLS_CONST__; inline static int _gnutls_asn2err(int asn_err) { switch (asn_err) { -# ifdef ASN1_TIME_ENCODING_ERROR +#ifdef ASN1_TIME_ENCODING_ERROR case ASN1_TIME_ENCODING_ERROR: return GNUTLS_E_ASN1_TIME_ERROR; -# endif +#endif case ASN1_FILE_NOT_FOUND: return GNUTLS_E_FILE_ERROR; case ASN1_ELEMENT_NOT_FOUND: @@ -81,106 +82,121 @@ inline static int _gnutls_asn2err(int asn_err) } void _gnutls_log(int, const char *fmt, ...) -# ifdef __GNUC__ - __attribute__((format(printf, 2, 3))); -# else -; -# endif +#ifdef __GNUC__ + __attribute__((format(printf, 2, 3))); +#else + ; +#endif void _gnutls_audit_log(gnutls_session_t, const char *fmt, ...) -# ifdef __GNUC__ - __attribute__((format(printf, 2, 3))); -# else -; -# endif +#ifdef __GNUC__ + __attribute__((format(printf, 2, 3))); +#else + ; +#endif void _gnutls_mpi_log(const char *prefix, bigint_t a); -# define _gnutls_cert_log(str, cert) \ - do { \ - if (unlikely(_gnutls_log_level >= 3)) { \ - gnutls_datum_t _cl_out; int _cl_ret; \ - _cl_ret = gnutls_x509_crt_print(cert, GNUTLS_CRT_PRINT_ONELINE, &_cl_out); \ - if (_cl_ret >= 0) { \ - _gnutls_log( 3, "%s: %s\n", str, _cl_out.data); \ - gnutls_free(_cl_out.data); \ - } \ - } \ - } while(0) - -# define _gnutls_dn_log(str, dn) \ - do { \ - if (unlikely(_gnutls_log_level >= 3)) { \ - gnutls_datum_t _cl_out; int _cl_ret; \ - _cl_ret = gnutls_x509_rdn_get2((dn), &_cl_out, 0); \ - if (_cl_ret >= 0) { \ - _gnutls_log( 3, "%s: %s\n", str, _cl_out.data); \ - gnutls_free(_cl_out.data); \ - } \ - } \ - } while(0) - -# define _gnutls_reason_log(str, status) \ - do { \ - if (unlikely(_gnutls_log_level >= 3)) { \ - gnutls_datum_t _cl_out; int _cl_ret; \ - _cl_ret = gnutls_certificate_verification_status_print(status, GNUTLS_CRT_X509, &_cl_out, 0); \ - if (_cl_ret >= 0) { \ - _gnutls_log( 3, "%s: %s\n", str, _cl_out.data); \ - gnutls_free(_cl_out.data); \ - } \ - } \ - } while(0) - -# ifdef C99_MACROS -# define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \ - _gnutls_log( l, __VA_ARGS__); } while(0) - -# define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__) -# define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__) -# define _gnutls_handshake_log(...) LEVEL(4, __VA_ARGS__) -# define _gnutls_record_log(...) LEVEL(5, __VA_ARGS__) -# define _gnutls_dtls_log(...) LEVEL(6, __VA_ARGS__) - -# define _gnutls_hard_log(...) LEVEL(9, __VA_ARGS__) - -# define _gnutls_read_log(...) LEVEL(10, __VA_ARGS__) -# define _gnutls_write_log(...) LEVEL(11, __VA_ARGS__) -# define _gnutls_io_log(...) LEVEL(12, __VA_ARGS__) -# define _gnutls_buffers_log(...) LEVEL(13, __VA_ARGS__) -# define _gnutls_no_log(...) LEVEL(INT_MAX, __VA_ARGS__) -# else -# define _gnutls_debug_log _gnutls_null_log -# define _gnutls_assert_log _gnutls_null_log -# define _gnutls_handshake_log _gnutls_null_log -# define _gnutls_io_log _gnutls_null_log -# define _gnutls_buffers_log _gnutls_null_log -# define _gnutls_hard_log _gnutls_null_log -# define _gnutls_record_log _gnutls_null_log -# define _gnutls_dtls_log _gnutls_null_log -# define _gnutls_read_log _gnutls_null_log -# define _gnutls_write_log _gnutls_null_log -# define _gnutls_no_log _gnutle_null_log +#define _gnutls_cert_log(str, cert) \ + do { \ + if (unlikely(_gnutls_log_level >= 3)) { \ + gnutls_datum_t _cl_out; \ + int _cl_ret; \ + _cl_ret = gnutls_x509_crt_print( \ + cert, GNUTLS_CRT_PRINT_ONELINE, &_cl_out); \ + if (_cl_ret >= 0) { \ + _gnutls_log(3, "%s: %s\n", str, _cl_out.data); \ + gnutls_free(_cl_out.data); \ + } \ + } \ + } while (0) + +#define _gnutls_dn_log(str, dn) \ + do { \ + if (unlikely(_gnutls_log_level >= 3)) { \ + gnutls_datum_t _cl_out; \ + int _cl_ret; \ + _cl_ret = gnutls_x509_rdn_get2((dn), &_cl_out, 0); \ + if (_cl_ret >= 0) { \ + _gnutls_log(3, "%s: %s\n", str, _cl_out.data); \ + gnutls_free(_cl_out.data); \ + } \ + } \ + } while (0) + +#define _gnutls_reason_log(str, status) \ + do { \ + if (unlikely(_gnutls_log_level >= 3)) { \ + gnutls_datum_t _cl_out; \ + int _cl_ret; \ + _cl_ret = \ + gnutls_certificate_verification_status_print( \ + status, GNUTLS_CRT_X509, &_cl_out, 0); \ + if (_cl_ret >= 0) { \ + _gnutls_log(3, "%s: %s\n", str, _cl_out.data); \ + gnutls_free(_cl_out.data); \ + } \ + } \ + } while (0) + +#ifdef C99_MACROS +#define LEVEL(l, ...) \ + do { \ + if (unlikely(_gnutls_log_level >= l)) \ + _gnutls_log(l, __VA_ARGS__); \ + } while (0) + +#define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__) +#define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__) +#define _gnutls_handshake_log(...) LEVEL(4, __VA_ARGS__) +#define _gnutls_record_log(...) LEVEL(5, __VA_ARGS__) +#define _gnutls_dtls_log(...) LEVEL(6, __VA_ARGS__) + +#define _gnutls_hard_log(...) LEVEL(9, __VA_ARGS__) + +#define _gnutls_read_log(...) LEVEL(10, __VA_ARGS__) +#define _gnutls_write_log(...) LEVEL(11, __VA_ARGS__) +#define _gnutls_io_log(...) LEVEL(12, __VA_ARGS__) +#define _gnutls_buffers_log(...) LEVEL(13, __VA_ARGS__) +#define _gnutls_no_log(...) LEVEL(INT_MAX, __VA_ARGS__) +#else +#define _gnutls_debug_log _gnutls_null_log +#define _gnutls_assert_log _gnutls_null_log +#define _gnutls_handshake_log _gnutls_null_log +#define _gnutls_io_log _gnutls_null_log +#define _gnutls_buffers_log _gnutls_null_log +#define _gnutls_hard_log _gnutls_null_log +#define _gnutls_record_log _gnutls_null_log +#define _gnutls_dtls_log _gnutls_null_log +#define _gnutls_read_log _gnutls_null_log +#define _gnutls_write_log _gnutls_null_log +#define _gnutls_no_log _gnutle_null_log void _gnutls_null_log(void *, ...); -# endif /* C99_MACROS */ +#endif /* C99_MACROS */ /* GCC won't inline this by itself and results in a "fatal warning" otherwise. Making this a macro has been tried, but it interacts badly with the do..while in the expansion. Welcome to the dark side. */ static inline -# ifdef __GNUC__ - __attribute__((always_inline)) -# endif -int gnutls_assert_val_int(int val, const char *file, const char *func, int line) +#ifdef __GNUC__ + __attribute__((always_inline)) +#endif + int + gnutls_assert_val_int(int val, const char *file, const char *func, + int line) { _gnutls_assert_log("ASSERT: %s[%s]:%d\n", file, func, line); return val; } -# define gnutls_assert_val(x) gnutls_assert_val_int(x, __FILE__, __func__, __LINE__) -# define gnutls_assert_val_fatal(x) (((x)!=GNUTLS_E_AGAIN && (x)!=GNUTLS_E_INTERRUPTED)?gnutls_assert_val_int(x, __FILE__, __func__, __LINE__):(x)) +#define gnutls_assert_val(x) \ + gnutls_assert_val_int(x, __FILE__, __func__, __LINE__) +#define gnutls_assert_val_fatal(x) \ + (((x) != GNUTLS_E_AGAIN && (x) != GNUTLS_E_INTERRUPTED) ? \ + gnutls_assert_val_int(x, __FILE__, __func__, __LINE__) : \ + (x)) -#endif /* GNUTLS_LIB_ERRORS_H */ +#endif /* GNUTLS_LIB_ERRORS_H */ diff --git a/lib/ext/alpn.c b/lib/ext/alpn.c index db96847dfe..597fc23213 100644 --- a/lib/ext/alpn.c +++ b/lib/ext/alpn.c @@ -26,9 +26,9 @@ #include static int _gnutls_alpn_recv_params(gnutls_session_t session, - const uint8_t * data, size_t data_size); + const uint8_t *data, size_t data_size); static int _gnutls_alpn_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata); + gnutls_buffer_st *extdata); static void _gnutls_alpn_deinit_data(gnutls_ext_priv_data_t priv); @@ -40,17 +40,16 @@ const hello_ext_entry_st ext_mod_alpn = { .client_parse_point = GNUTLS_EXT_MANDATORY, .server_parse_point = GNUTLS_EXT_MANDATORY, .validity = GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | - GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_EE | - GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, + GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_EE | + GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, .recv_func = _gnutls_alpn_recv_params, .send_func = _gnutls_alpn_send_params, .deinit_func = _gnutls_alpn_deinit_data, .cannot_be_overriden = 1 }; -static int -_gnutls_alpn_recv_params(gnutls_session_t session, - const uint8_t * data, size_t data_size) +static int _gnutls_alpn_recv_params(gnutls_session_t session, + const uint8_t *data, size_t data_size) { unsigned int i; int ret; @@ -60,8 +59,8 @@ _gnutls_alpn_recv_params(gnutls_session_t session, gnutls_ext_priv_data_t epriv; int selected_protocol_index; - ret = - _gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_ALPN, &epriv); + ret = _gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_ALPN, + &epriv); if (ret < 0) return 0; @@ -86,35 +85,31 @@ _gnutls_alpn_recv_params(gnutls_session_t session, GNUTLS_E_UNEXPECTED_PACKET_LENGTH); if (len1 == 0) - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET_LENGTH); for (i = 0; i < priv->size; i++) { - if (priv->protocol_size[i] == len1 - && memcmp(p, priv->protocols[i], - len1) == 0) { - + if (priv->protocol_size[i] == len1 && + memcmp(p, priv->protocols[i], len1) == 0) { if (priv->flags & GNUTLS_ALPN_SERVER_PRECEDENCE) { if (selected_protocol_index > (int)i) { - selected_protocol_index - = i; - priv->selected_protocol - = - priv->protocols[i]; - priv->selected_protocol_size - = - priv->protocol_size - [i]; + selected_protocol_index = + i; + priv->selected_protocol = + priv->protocols + [i]; + priv->selected_protocol_size = + priv->protocol_size + [i]; break; } } else { priv->selected_protocol = - priv->protocols[i]; + priv->protocols[i]; priv->selected_protocol_size = - priv->protocol_size[i]; + priv->protocol_size[i]; return 0; } } @@ -130,11 +125,11 @@ _gnutls_alpn_recv_params(gnutls_session_t session, GNUTLS_E_UNEXPECTED_PACKET_LENGTH); for (i = 0; i < priv->size; i++) { - if (priv->protocol_size[i] == len1 - && memcmp(p, priv->protocols[i], len1) == 0) { + if (priv->protocol_size[i] == len1 && + memcmp(p, priv->protocols[i], len1) == 0) { priv->selected_protocol = priv->protocols[i]; priv->selected_protocol_size = - priv->protocol_size[i]; + priv->protocol_size[i]; break; } } @@ -147,16 +142,16 @@ _gnutls_alpn_recv_params(gnutls_session_t session, return 0; } -static int -_gnutls_alpn_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) +static int _gnutls_alpn_send_params(gnutls_session_t session, + gnutls_buffer_st *extdata) { unsigned i; int total_size = 0, ret; alpn_ext_st *priv; gnutls_ext_priv_data_t epriv; - ret = - _gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_ALPN, &epriv); + ret = _gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_ALPN, + &epriv); if (ret < 0) return 0; @@ -169,20 +164,16 @@ _gnutls_alpn_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) if (priv->selected_protocol_size == 0) return 0; - ret = - _gnutls_buffer_append_prefix(extdata, 16, - priv->selected_protocol_size + - 1); + ret = _gnutls_buffer_append_prefix( + extdata, 16, priv->selected_protocol_size + 1); if (ret < 0) return gnutls_assert_val(ret); total_size += 2; - ret = - _gnutls_buffer_append_data_prefix(extdata, 8, - priv->selected_protocol, - priv-> - selected_protocol_size); + ret = _gnutls_buffer_append_data_prefix( + extdata, 8, priv->selected_protocol, + priv->selected_protocol_size); if (ret < 0) return gnutls_assert_val(ret); @@ -199,12 +190,9 @@ _gnutls_alpn_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) total_size += 2; for (i = 0; i < priv->size; i++) { - ret = - _gnutls_buffer_append_data_prefix(extdata, 8, - priv->protocols - [i], - priv-> - protocol_size[i]); + ret = _gnutls_buffer_append_data_prefix( + extdata, 8, priv->protocols[i], + priv->protocol_size[i]); if (ret < 0) return gnutls_assert_val(ret); @@ -232,16 +220,15 @@ _gnutls_alpn_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) * * Since 3.2.0 **/ -int -gnutls_alpn_get_selected_protocol(gnutls_session_t session, - gnutls_datum_t * protocol) +int gnutls_alpn_get_selected_protocol(gnutls_session_t session, + gnutls_datum_t *protocol) { alpn_ext_st *priv; int ret; gnutls_ext_priv_data_t epriv; - ret = - _gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_ALPN, &epriv); + ret = _gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_ALPN, + &epriv); if (ret < 0) { gnutls_assert(); return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; @@ -276,18 +263,17 @@ gnutls_alpn_get_selected_protocol(gnutls_session_t session, * * Since 3.2.0 **/ -int -gnutls_alpn_set_protocols(gnutls_session_t session, - const gnutls_datum_t * protocols, - unsigned protocols_size, unsigned int flags) +int gnutls_alpn_set_protocols(gnutls_session_t session, + const gnutls_datum_t *protocols, + unsigned protocols_size, unsigned int flags) { int ret; alpn_ext_st *priv; gnutls_ext_priv_data_t epriv; unsigned i; - ret = - _gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_ALPN, &epriv); + ret = _gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_ALPN, + &epriv); if (ret < 0) { priv = gnutls_calloc(1, sizeof(*priv)); if (priv == NULL) { @@ -295,8 +281,8 @@ gnutls_alpn_set_protocols(gnutls_session_t session, return GNUTLS_E_MEMORY_ERROR; } epriv = priv; - _gnutls_hello_ext_set_priv(session, - GNUTLS_EXTENSION_ALPN, epriv); + _gnutls_hello_ext_set_priv(session, GNUTLS_EXTENSION_ALPN, + epriv); } else priv = epriv; diff --git a/lib/ext/alpn.h b/lib/ext/alpn.h index 514677e318..0b32a3292d 100644 --- a/lib/ext/alpn.h +++ b/lib/ext/alpn.h @@ -19,12 +19,12 @@ */ #ifndef GNUTLS_LIB_EXT_ALPN_H -# define GNUTLS_LIB_EXT_ALPN_H +#define GNUTLS_LIB_EXT_ALPN_H -# include +#include -# define MAX_ALPN_PROTOCOLS 8 -# define MAX_ALPN_PROTOCOL_NAME 32 +#define MAX_ALPN_PROTOCOLS 8 +#define MAX_ALPN_PROTOCOL_NAME 32 typedef struct { uint8_t protocols[MAX_ALPN_PROTOCOLS][MAX_ALPN_PROTOCOL_NAME]; @@ -37,4 +37,4 @@ typedef struct { extern const hello_ext_entry_st ext_mod_alpn; -#endif /* GNUTLS_LIB_EXT_ALPN_H */ +#endif /* GNUTLS_LIB_EXT_ALPN_H */ diff --git a/lib/ext/cert_types.h b/lib/ext/cert_types.h index 2e80afce85..13464be82a 100644 --- a/lib/ext/cert_types.h +++ b/lib/ext/cert_types.h @@ -24,7 +24,7 @@ */ #ifndef GNUTLS_LIB_EXT_CERT_TYPES_H -# define GNUTLS_LIB_EXT_CERT_TYPES_H +#define GNUTLS_LIB_EXT_CERT_TYPES_H /* Maps IANA TLS Certificate Types identifiers to internal * certificate type representation. @@ -79,11 +79,11 @@ static inline bool is_cert_type_enabled(gnutls_session_t session, static inline bool are_alternative_cert_types_allowed(gnutls_session_t session) { // OR-ed list of defined cert type init flags -# define CERT_TYPES_FLAGS GNUTLS_ENABLE_RAWPK +#define CERT_TYPES_FLAGS GNUTLS_ENABLE_RAWPK return session->internals.flags & CERT_TYPES_FLAGS; -# undef CERT_TYPES_FLAGS +#undef CERT_TYPES_FLAGS } -#endif /* GNUTLS_LIB_EXT_CERT_TYPES_H */ +#endif /* GNUTLS_LIB_EXT_CERT_TYPES_H */ diff --git a/lib/ext/client_cert_type.c b/lib/ext/client_cert_type.c index 772f9da640..230991f9d7 100644 --- a/lib/ext/client_cert_type.c +++ b/lib/ext/client_cert_type.c @@ -37,10 +37,10 @@ #include "datum.h" static int _gnutls_client_cert_type_recv_params(gnutls_session_t session, - const uint8_t * data, + const uint8_t *data, size_t data_size); static int _gnutls_client_cert_type_send_params(gnutls_session_t session, - gnutls_buffer_st * data); + gnutls_buffer_st *data); const hello_ext_entry_st ext_mod_client_cert_type = { .name = "Client Certificate Type", @@ -48,10 +48,9 @@ const hello_ext_entry_st ext_mod_client_cert_type = { .gid = GNUTLS_EXTENSION_CLIENT_CERT_TYPE, .client_parse_point = GNUTLS_EXT_TLS, .server_parse_point = GNUTLS_EXT_TLS, - .validity = GNUTLS_EXT_FLAG_TLS | - GNUTLS_EXT_FLAG_DTLS | - GNUTLS_EXT_FLAG_CLIENT_HELLO | - GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO | GNUTLS_EXT_FLAG_EE, + .validity = GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | + GNUTLS_EXT_FLAG_CLIENT_HELLO | + GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO | GNUTLS_EXT_FLAG_EE, .recv_func = _gnutls_client_cert_type_recv_params, .send_func = _gnutls_client_cert_type_send_params, .pack_func = _gnutls_hello_ext_default_pack, @@ -61,7 +60,7 @@ const hello_ext_entry_st ext_mod_client_cert_type = { }; static int _gnutls_client_cert_type_recv_params(gnutls_session_t session, - const uint8_t * data, + const uint8_t *data, size_t data_size) { int ret; @@ -76,15 +75,15 @@ static int _gnutls_client_cert_type_recv_params(gnutls_session_t session, (_gnutls_get_cred(session, GNUTLS_CRD_CERTIFICATE) == NULL)) return 0; - if (!IS_SERVER(session)) { // client mode - gnutls_datum_t sent_cert_types; // Holds the previously sent cert types + if (!IS_SERVER(session)) { // client mode + gnutls_datum_t + sent_cert_types; // Holds the previously sent cert types /* Compare packet length with expected packet length. For the * client this is a single byte. */ if (data_size != 1) { - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET_LENGTH); } /* The server picked one of the offered cert types if he supports @@ -95,23 +94,22 @@ static int _gnutls_client_cert_type_recv_params(gnutls_session_t session, * to check it nevertheless. */ cert_type = IANA2cert_type(pdata[0]); - _gnutls_handshake_log - ("EXT[%p]: Received a %s client certificate type confirmation from the server.\n", - session, gnutls_certificate_type_get_name(cert_type)); + _gnutls_handshake_log( + "EXT[%p]: Received a %s client certificate type confirmation from the server.\n", + session, gnutls_certificate_type_get_name(cert_type)); // Check validity of cert type if (cert_type == GNUTLS_CRT_UNKNOWN) { - return - gnutls_assert_val - (GNUTLS_E_UNSUPPORTED_CERTIFICATE_TYPE); + return gnutls_assert_val( + GNUTLS_E_UNSUPPORTED_CERTIFICATE_TYPE); } /* Get the cert types that we sent to the server (they were stored * in IANA representation. */ - ret = _gnutls_hello_ext_get_datum(session, - GNUTLS_EXTENSION_CLIENT_CERT_TYPE, - &sent_cert_types); + ret = _gnutls_hello_ext_get_datum( + session, GNUTLS_EXTENSION_CLIENT_CERT_TYPE, + &sent_cert_types); if (ret < 0) { /* This should not happen and indicate a memory corruption! * Assertion are always on in production code so execution @@ -137,20 +135,20 @@ static int _gnutls_client_cert_type_recv_params(gnutls_session_t session, return ret; - } else { // server mode - gnutls_datum_t cert_types; // Holds the received cert types + } else { // server mode + gnutls_datum_t cert_types; // Holds the received cert types // Compare packet length with expected packet length. DECR_LEN(data_size, 1); if (data[0] != data_size) { - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET_LENGTH); } pdata += 1; // Assign the contents of our data buffer to a gnutls_datum_t - cert_types.data = (uint8_t *) pdata; // Need casting to get rid of 'discards const qualifier' warning + cert_types.data = (uint8_t *) + pdata; // Need casting to get rid of 'discards const qualifier' warning cert_types.size = data_size; // Store the client certificate types in our session @@ -172,15 +170,15 @@ static int _gnutls_client_cert_type_recv_params(gnutls_session_t session, if (cert_type == GNUTLS_CRT_UNKNOWN) continue; - _gnutls_handshake_log - ("EXT[%p]: Checking compatibility of a %s client certificate type that was received from the client.\n", - session, - gnutls_certificate_type_get_name(cert_type)); + _gnutls_handshake_log( + "EXT[%p]: Checking compatibility of a %s client certificate type that was received from the client.\n", + session, + gnutls_certificate_type_get_name(cert_type)); // Check for support of this cert type - if (_gnutls_session_is_cert_type_supported - (session, cert_type, false, - GNUTLS_CTYPE_CLIENT) == 0) { + if (_gnutls_session_is_cert_type_supported( + session, cert_type, false, + GNUTLS_CTYPE_CLIENT) == 0) { found = true; break; } @@ -196,9 +194,10 @@ static int _gnutls_client_cert_type_recv_params(gnutls_session_t session, * with a fatal alert of type "unsupported_certificate" * (according to specification rfc7250). */ - _gnutls_handshake_log - ("EXT[%p]: No supported client certificate type was found. " - "Aborting connection.\n", session); + _gnutls_handshake_log( + "EXT[%p]: No supported client certificate type was found. " + "Aborting connection.\n", + session); ret = GNUTLS_E_UNSUPPORTED_CERTIFICATE_TYPE; } @@ -207,10 +206,10 @@ static int _gnutls_client_cert_type_recv_params(gnutls_session_t session, } static int _gnutls_client_cert_type_send_params(gnutls_session_t session, - gnutls_buffer_st * data) + gnutls_buffer_st *data) { int ret; - uint8_t cert_type_IANA; // Holds an IANA cert type ID + uint8_t cert_type_IANA; // Holds an IANA cert type ID gnutls_certificate_type_t cert_type; /* Only activate this extension if we have cert credentials set @@ -219,11 +218,12 @@ static int _gnutls_client_cert_type_send_params(gnutls_session_t session, (_gnutls_get_cred(session, GNUTLS_CRD_CERTIFICATE) == NULL)) return 0; - if (!IS_SERVER(session)) { // Client mode - uint8_t cert_types[GNUTLS_CRT_MAX]; // The list with supported (IANA) cert types. Inv: 0 <= cert type Id < 256 + if (!IS_SERVER(session)) { // Client mode + uint8_t cert_types + [GNUTLS_CRT_MAX]; // The list with supported (IANA) cert types. Inv: 0 <= cert type Id < 256 size_t i, num_cert_types = 0; priority_st *cert_priorities; - gnutls_datum_t tmp_cert_types; // For type conversion + gnutls_datum_t tmp_cert_types; // For type conversion // For brevity cert_priorities = &session->internals.priorities->client_ctype; @@ -233,7 +233,8 @@ static int _gnutls_client_cert_type_send_params(gnutls_session_t session, * initialization values apply. This default is currently set to * x.509 in which case we don't enable this extension. */ - if (cert_priorities->num_priorities > 0) { // Priorities are explicitly set + if (cert_priorities->num_priorities > + 0) { // Priorities are explicitly set /* If the certificate priority is explicitly set to only * X.509 (default) then, according to spec we don't send * this extension. We check this here to avoid further work in @@ -242,13 +243,13 @@ static int _gnutls_client_cert_type_send_params(gnutls_session_t session, */ if (cert_priorities->num_priorities == 1 && cert_priorities->priorities[0] == - DEFAULT_CERT_TYPE) { - _gnutls_handshake_log - ("EXT[%p]: Client certificate type was set to default cert type (%s). " - "We therefore do not send this extension.\n", - session, - gnutls_certificate_type_get_name - (DEFAULT_CERT_TYPE)); + DEFAULT_CERT_TYPE) { + _gnutls_handshake_log( + "EXT[%p]: Client certificate type was set to default cert type (%s). " + "We therefore do not send this extension.\n", + session, + gnutls_certificate_type_get_name( + DEFAULT_CERT_TYPE)); // Explicitly set but default ctype, so don't send anything return 0; @@ -261,17 +262,16 @@ static int _gnutls_client_cert_type_send_params(gnutls_session_t session, for (i = 0; i < cert_priorities->num_priorities; i++) { cert_type = cert_priorities->priorities[i]; - if (_gnutls_session_is_cert_type_supported - (session, cert_type, true, - GNUTLS_CTYPE_CLIENT) == 0) { + if (_gnutls_session_is_cert_type_supported( + session, cert_type, true, + GNUTLS_CTYPE_CLIENT) == 0) { /* Check whether we are allowed to store another cert type * in our buffer. In other words, prevent a possible buffer * overflow. This situation can occur when a user sets * duplicate cert types in the priority strings. */ if (num_cert_types >= GNUTLS_CRT_MAX) - return - gnutls_assert_val - (GNUTLS_E_SHORT_MEMORY_BUFFER); + return gnutls_assert_val( + GNUTLS_E_SHORT_MEMORY_BUFFER); // Convert to IANA representation ret = cert_type2IANA(cert_type); @@ -279,18 +279,19 @@ static int _gnutls_client_cert_type_send_params(gnutls_session_t session, if (ret < 0) return gnutls_assert_val(ret); - cert_type_IANA = ret; // For readability + cert_type_IANA = ret; // For readability // Add this cert type to our list with supported types cert_types[num_cert_types] = - cert_type_IANA; + cert_type_IANA; num_cert_types++; - _gnutls_handshake_log - ("EXT[%p]: Client certificate type %s (%d) was queued.\n", - session, - gnutls_certificate_type_get_name - (cert_type), cert_type_IANA); + _gnutls_handshake_log( + "EXT[%p]: Client certificate type %s (%d) was queued.\n", + session, + gnutls_certificate_type_get_name( + cert_type), + cert_type_IANA); } } @@ -300,22 +301,22 @@ static int _gnutls_client_cert_type_send_params(gnutls_session_t session, * we do not send this extension (according to RFC7250). */ if (num_cert_types == 0) { - _gnutls_handshake_log - ("EXT[%p]: Client certificate types were set but none of them is supported. " - "You might want to check your credentials or your priorities. " - "We do not send this extension.\n", - session); + _gnutls_handshake_log( + "EXT[%p]: Client certificate types were set but none of them is supported. " + "You might want to check your credentials or your priorities. " + "We do not send this extension.\n", + session); return 0; } else if (num_cert_types == 1 && IANA2cert_type(cert_types[0]) == - DEFAULT_CERT_TYPE) { - _gnutls_handshake_log - ("EXT[%p]: The only supported client certificate type is (%s) which is the default. " - "We therefore do not send this extension.\n", - session, - gnutls_certificate_type_get_name - (DEFAULT_CERT_TYPE)); + DEFAULT_CERT_TYPE) { + _gnutls_handshake_log( + "EXT[%p]: The only supported client certificate type is (%s) which is the default. " + "We therefore do not send this extension.\n", + session, + gnutls_certificate_type_get_name( + DEFAULT_CERT_TYPE)); return 0; } @@ -327,17 +328,16 @@ static int _gnutls_client_cert_type_send_params(gnutls_session_t session, tmp_cert_types.data = cert_types; tmp_cert_types.size = num_cert_types; - _gnutls_hello_ext_set_datum(session, - GNUTLS_EXTENSION_CLIENT_CERT_TYPE, - &tmp_cert_types); + _gnutls_hello_ext_set_datum( + session, GNUTLS_EXTENSION_CLIENT_CERT_TYPE, + &tmp_cert_types); /* Serialize the certificate types into a sequence of octets * uint8: length of sequence of cert types (1 octet) * uint8: cert types (0 <= #octets <= 255) */ - ret = _gnutls_buffer_append_data_prefix(data, 8, - cert_types, - num_cert_types); + ret = _gnutls_buffer_append_data_prefix( + data, 8, cert_types, num_cert_types); // Check for errors if (ret < 0) { @@ -347,7 +347,7 @@ static int _gnutls_client_cert_type_send_params(gnutls_session_t session, return num_cert_types + 1; } } - } else { // Server mode + } else { // Server mode const version_entry_st *vers = get_version(session); /* TLS 1.2: * Check whether we are going to send a certificate request, @@ -370,27 +370,27 @@ static int _gnutls_client_cert_type_send_params(gnutls_session_t session, * when we cannot find a matching client certificate. This is conform * spec (RFC7250, 4.2 case 2.). */ - cert_type = - get_certificate_type(session, GNUTLS_CTYPE_CLIENT); + cert_type = get_certificate_type(session, + GNUTLS_CTYPE_CLIENT); ret = cert_type2IANA(cert_type); if (ret < 0) return gnutls_assert_val(ret); - cert_type_IANA = ret; // For readability + cert_type_IANA = ret; // For readability - _gnutls_handshake_log - ("EXT[%p]: Confirming to use a %s client certificate type.\n", - session, - gnutls_certificate_type_get_name(cert_type)); + _gnutls_handshake_log( + "EXT[%p]: Confirming to use a %s client certificate type.\n", + session, + gnutls_certificate_type_get_name(cert_type)); - ret = - gnutls_buffer_append_data(data, &cert_type_IANA, 1); + ret = gnutls_buffer_append_data(data, &cert_type_IANA, + 1); if (ret < 0) return gnutls_assert_val(ret); - return 1; // sent one byte + return 1; // sent one byte } } diff --git a/lib/ext/client_cert_type.h b/lib/ext/client_cert_type.h index 45208f7d37..7e89ca816a 100644 --- a/lib/ext/client_cert_type.h +++ b/lib/ext/client_cert_type.h @@ -27,10 +27,10 @@ */ #ifndef GNUTLS_LIB_EXT_CLIENT_CERT_TYPE_H -# define GNUTLS_LIB_EXT_CLIENT_CERT_TYPE_H +#define GNUTLS_LIB_EXT_CLIENT_CERT_TYPE_H -# include +#include extern const hello_ext_entry_st ext_mod_client_cert_type; -#endif /* GNUTLS_LIB_EXT_CLIENT_CERT_TYPE_H */ +#endif /* GNUTLS_LIB_EXT_CLIENT_CERT_TYPE_H */ diff --git a/lib/ext/compress_certificate.c b/lib/ext/compress_certificate.c index a72a2662e5..64c786e966 100644 --- a/lib/ext/compress_certificate.c +++ b/lib/ext/compress_certificate.c @@ -84,20 +84,16 @@ int _gnutls_compress_certificate_method2num(gnutls_compression_method_t method) /* Returns 1 if the method is set as supported compression method for the session, * returns 0 otherwise */ -bool -_gnutls_compress_certificate_is_method_enabled(gnutls_session_t session, - gnutls_compression_method_t - method) +bool _gnutls_compress_certificate_is_method_enabled( + gnutls_session_t session, gnutls_compression_method_t method) { int ret; unsigned i; compress_certificate_ext_st *priv; gnutls_ext_priv_data_t epriv; - ret = - _gnutls_hello_ext_get_priv(session, - GNUTLS_EXTENSION_COMPRESS_CERTIFICATE, - &epriv); + ret = _gnutls_hello_ext_get_priv( + session, GNUTLS_EXTENSION_COMPRESS_CERTIFICATE, &epriv); if (ret < 0) return false; priv = epriv; @@ -159,17 +155,16 @@ gnutls_compress_certificate_get_selected_method(gnutls_session_t session) * * Since 3.7.4 **/ -int -gnutls_compress_certificate_set_methods(gnutls_session_t session, - const gnutls_compression_method_t * - methods, size_t methods_len) +int gnutls_compress_certificate_set_methods( + gnutls_session_t session, const gnutls_compression_method_t *methods, + size_t methods_len) { unsigned i; compress_certificate_ext_st *priv; if (methods == NULL || methods_len == 0) { - _gnutls_hello_ext_unset_priv(session, - GNUTLS_EXTENSION_COMPRESS_CERTIFICATE); + _gnutls_hello_ext_unset_priv( + session, GNUTLS_EXTENSION_COMPRESS_CERTIFICATE); return 0; } @@ -192,9 +187,9 @@ gnutls_compress_certificate_set_methods(gnutls_session_t session, return 0; } -int -_gnutls_compress_certificate_recv_params(gnutls_session_t session, - const uint8_t * data, size_t data_size) +int _gnutls_compress_certificate_recv_params(gnutls_session_t session, + const uint8_t *data, + size_t data_size) { int ret; unsigned i, j; @@ -206,10 +201,8 @@ _gnutls_compress_certificate_recv_params(gnutls_session_t session, compress_certificate_ext_st *priv; gnutls_ext_priv_data_t epriv; - ret = - _gnutls_hello_ext_get_priv(session, - GNUTLS_EXTENSION_COMPRESS_CERTIFICATE, - &epriv); + ret = _gnutls_hello_ext_get_priv( + session, GNUTLS_EXTENSION_COMPRESS_CERTIFICATE, &epriv); if (ret < 0) return 0; priv = epriv; @@ -237,15 +230,14 @@ _gnutls_compress_certificate_recv_params(gnutls_session_t session, method = methods[i]; goto endloop; } - endloop: +endloop: session->internals.compress_certificate_method = method; return 0; } -int -_gnutls_compress_certificate_send_params(gnutls_session_t session, - gnutls_buffer_st * data) +int _gnutls_compress_certificate_send_params(gnutls_session_t session, + gnutls_buffer_st *data) { int ret, num; unsigned i; @@ -254,10 +246,8 @@ _gnutls_compress_certificate_send_params(gnutls_session_t session, compress_certificate_ext_st *priv; gnutls_ext_priv_data_t epriv; - ret = - _gnutls_hello_ext_get_priv(session, - GNUTLS_EXTENSION_COMPRESS_CERTIFICATE, - &epriv); + ret = _gnutls_hello_ext_get_priv( + session, GNUTLS_EXTENSION_COMPRESS_CERTIFICATE, &epriv); if (ret < 0) return 0; priv = epriv; @@ -284,7 +274,7 @@ const hello_ext_entry_st ext_mod_compress_certificate = { .client_parse_point = GNUTLS_EXT_TLS, .server_parse_point = GNUTLS_EXT_TLS, .validity = GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | - GNUTLS_EXT_FLAG_CLIENT_HELLO, + GNUTLS_EXT_FLAG_CLIENT_HELLO, .recv_func = _gnutls_compress_certificate_recv_params, .send_func = _gnutls_compress_certificate_send_params, .deinit_func = _gnutls_hello_ext_default_deinit diff --git a/lib/ext/compress_certificate.h b/lib/ext/compress_certificate.h index d61189feff..5f436c95d9 100644 --- a/lib/ext/compress_certificate.h +++ b/lib/ext/compress_certificate.h @@ -21,12 +21,12 @@ */ #ifndef GNUTLS_LIB_EXT_COMPRESS_CERTIFICATE_H -# define GNUTLS_LIB_EXT_COMPRESS_CERTIFICATE_H +#define GNUTLS_LIB_EXT_COMPRESS_CERTIFICATE_H -# include +#include -# define MIN_COMPRESS_CERTIFICATE_METHODS 1 -# define MAX_COMPRESS_CERTIFICATE_METHODS 127 +#define MIN_COMPRESS_CERTIFICATE_METHODS 1 +#define MAX_COMPRESS_CERTIFICATE_METHODS 127 typedef struct { gnutls_compression_method_t methods[MAX_COMPRESS_CERTIFICATE_METHODS]; @@ -40,18 +40,14 @@ _gnutls_compress_certificate_num2method(uint16_t num); int _gnutls_compress_certificate_method2num(gnutls_compression_method_t method); -bool -_gnutls_compress_certificate_is_method_enabled(gnutls_session_t session, - gnutls_compression_method_t - method); +bool _gnutls_compress_certificate_is_method_enabled( + gnutls_session_t session, gnutls_compression_method_t method); -int -_gnutls_compress_certificate_recv_params(gnutls_session_t session, - const uint8_t * data, - size_t data_size); +int _gnutls_compress_certificate_recv_params(gnutls_session_t session, + const uint8_t *data, + size_t data_size); -int -_gnutls_compress_certificate_send_params(gnutls_session_t session, - gnutls_buffer_st * data); +int _gnutls_compress_certificate_send_params(gnutls_session_t session, + gnutls_buffer_st *data); -#endif /* GNUTLS_LIB_EXT_COMPRESS_CERTIFICATE_H */ +#endif /* GNUTLS_LIB_EXT_COMPRESS_CERTIFICATE_H */ diff --git a/lib/ext/cookie.c b/lib/ext/cookie.c index 05cc6b207e..dbbaf34805 100644 --- a/lib/ext/cookie.c +++ b/lib/ext/cookie.c @@ -29,19 +29,21 @@ #include "hello_ext_lib.h" #include -static int cookie_recv_params(gnutls_session_t session, - const uint8_t * data, size_t data_size); +static int cookie_recv_params(gnutls_session_t session, const uint8_t *data, + size_t data_size); static int cookie_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata); + gnutls_buffer_st *extdata); const hello_ext_entry_st ext_mod_cookie = { .name = "Cookie", .tls_id = 44, .gid = GNUTLS_EXTENSION_COOKIE, .validity = GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_CLIENT_HELLO | - GNUTLS_EXT_FLAG_HRR | GNUTLS_EXT_FLAG_IGNORE_CLIENT_REQUEST, - .client_parse_point = GNUTLS_EXT_MANDATORY, /* force parsing prior to EXT_TLS extensions */ - .server_parse_point = GNUTLS_EXT_MANDATORY, /* force parsing prior to EXT_TLS extensions */ + GNUTLS_EXT_FLAG_HRR | GNUTLS_EXT_FLAG_IGNORE_CLIENT_REQUEST, + .client_parse_point = + GNUTLS_EXT_MANDATORY, /* force parsing prior to EXT_TLS extensions */ + .server_parse_point = + GNUTLS_EXT_MANDATORY, /* force parsing prior to EXT_TLS extensions */ .recv_func = cookie_recv_params, .send_func = cookie_send_params, .pack_func = NULL, @@ -51,9 +53,8 @@ const hello_ext_entry_st ext_mod_cookie = { }; /* Only client sends this extension. */ -static int -cookie_recv_params(gnutls_session_t session, - const uint8_t * data, size_t data_size) +static int cookie_recv_params(gnutls_session_t session, const uint8_t *data, + size_t data_size) { size_t csize; int ret; @@ -62,7 +63,7 @@ cookie_recv_params(gnutls_session_t session, if (session->security_parameters.entity == GNUTLS_SERVER) { /* we don't support it */ return 0; - } else { /* client */ + } else { /* client */ if (_gnutls_ext_get_msg(session) == GNUTLS_EXT_FLAG_HRR) { DECR_LEN(data_size, 2); @@ -72,17 +73,14 @@ cookie_recv_params(gnutls_session_t session, DECR_LEN(data_size, csize); if (data_size != 0) - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET_LENGTH); tmp.data = (void *)data; tmp.size = csize; - ret = - _gnutls_hello_ext_set_datum(session, - GNUTLS_EXTENSION_COOKIE, - &tmp); + ret = _gnutls_hello_ext_set_datum( + session, GNUTLS_EXTENSION_COOKIE, &tmp); if (ret < 0) return gnutls_assert_val(ret); @@ -97,23 +95,21 @@ cookie_recv_params(gnutls_session_t session, /* returns data_size or a negative number on failure */ -static int -cookie_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) +static int cookie_send_params(gnutls_session_t session, + gnutls_buffer_st *extdata) { gnutls_datum_t tmp; int ret; /* this function sends the client extension data (dnsname) */ if (session->security_parameters.entity == GNUTLS_CLIENT) { - ret = - _gnutls_hello_ext_get_datum(session, - GNUTLS_EXTENSION_COOKIE, &tmp); + ret = _gnutls_hello_ext_get_datum( + session, GNUTLS_EXTENSION_COOKIE, &tmp); if (ret < 0) return 0; - ret = - _gnutls_buffer_append_data_prefix(extdata, 16, tmp.data, - tmp.size); + ret = _gnutls_buffer_append_data_prefix(extdata, 16, tmp.data, + tmp.size); if (ret < 0) return gnutls_assert_val(ret); diff --git a/lib/ext/cookie.h b/lib/ext/cookie.h index 4529824f10..13ea7c7cde 100644 --- a/lib/ext/cookie.h +++ b/lib/ext/cookie.h @@ -21,10 +21,10 @@ */ #ifndef GNUTLS_LIB_EXT_COOKIE_H -# define GNUTLS_LIB_EXT_COOKIE_H +#define GNUTLS_LIB_EXT_COOKIE_H -# include +#include extern const hello_ext_entry_st ext_mod_cookie; -#endif /* GNUTLS_LIB_EXT_COOKIE_H */ +#endif /* GNUTLS_LIB_EXT_COOKIE_H */ diff --git a/lib/ext/dumbfw.c b/lib/ext/dumbfw.c index ddc414827e..f182aa81d8 100644 --- a/lib/ext/dumbfw.c +++ b/lib/ext/dumbfw.c @@ -34,7 +34,7 @@ */ static int _gnutls_dumbfw_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata); + gnutls_buffer_st *extdata); const hello_ext_entry_st ext_mod_dumbfw = { .name = "ClientHello Padding", @@ -51,8 +51,8 @@ const hello_ext_entry_st ext_mod_dumbfw = { .cannot_be_overriden = 0 }; -static int -_gnutls_dumbfw_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) +static int _gnutls_dumbfw_send_params(gnutls_session_t session, + gnutls_buffer_st *extdata) { int total_size = 0, ret; uint8_t pad[257]; @@ -60,8 +60,8 @@ _gnutls_dumbfw_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) ssize_t len = extdata->length - sizeof(mbuffer_st); if (session->security_parameters.entity == GNUTLS_SERVER || - session->internals.dumbfw == 0 || - IS_DTLS(session) != 0 || (len < 256 || len >= 512)) { + session->internals.dumbfw == 0 || IS_DTLS(session) != 0 || + (len < 256 || len >= 512)) { return 0; } else { /* 256 <= extdata->length < 512 */ diff --git a/lib/ext/dumbfw.h b/lib/ext/dumbfw.h index 234fa652a1..87bb072e9f 100644 --- a/lib/ext/dumbfw.h +++ b/lib/ext/dumbfw.h @@ -19,10 +19,10 @@ */ #ifndef GNUTLS_LIB_EXT_DUMBFW_H -# define GNUTLS_LIB_EXT_DUMBFW_H +#define GNUTLS_LIB_EXT_DUMBFW_H -# include +#include extern const hello_ext_entry_st ext_mod_dumbfw; -#endif /* GNUTLS_LIB_EXT_DUMBFW_H */ +#endif /* GNUTLS_LIB_EXT_DUMBFW_H */ diff --git a/lib/ext/early_data.c b/lib/ext/early_data.c index cf89151962..cd434c18af 100644 --- a/lib/ext/early_data.c +++ b/lib/ext/early_data.c @@ -29,20 +29,21 @@ #include "hello_ext_lib.h" #include -static int early_data_recv_params(gnutls_session_t session, - const uint8_t * data, size_t data_size); +static int early_data_recv_params(gnutls_session_t session, const uint8_t *data, + size_t data_size); static int early_data_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata); + gnutls_buffer_st *extdata); const hello_ext_entry_st ext_mod_early_data = { .name = "Early Data", .tls_id = 42, .gid = GNUTLS_EXTENSION_EARLY_DATA, - .validity = - GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_CLIENT_HELLO | - GNUTLS_EXT_FLAG_EE, - .client_parse_point = GNUTLS_EXT_MANDATORY, /* force parsing prior to EXT_TLS extensions */ - .server_parse_point = GNUTLS_EXT_MANDATORY, /* force parsing prior to EXT_TLS extensions */ + .validity = GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_CLIENT_HELLO | + GNUTLS_EXT_FLAG_EE, + .client_parse_point = + GNUTLS_EXT_MANDATORY, /* force parsing prior to EXT_TLS extensions */ + .server_parse_point = + GNUTLS_EXT_MANDATORY, /* force parsing prior to EXT_TLS extensions */ .recv_func = early_data_recv_params, .send_func = early_data_send_params, .pack_func = NULL, @@ -51,9 +52,8 @@ const hello_ext_entry_st ext_mod_early_data = { .cannot_be_overriden = 0 }; -static int -early_data_recv_params(gnutls_session_t session, - const uint8_t * data, size_t _data_size) +static int early_data_recv_params(gnutls_session_t session, const uint8_t *data, + size_t _data_size) { const version_entry_st *vers = get_version(session); @@ -75,8 +75,8 @@ early_data_recv_params(gnutls_session_t session, /* returns data_size or a negative number on failure */ -static int -early_data_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) +static int early_data_send_params(gnutls_session_t session, + gnutls_buffer_st *extdata) { if (session->security_parameters.entity == GNUTLS_SERVER) { if (session->internals.hsk_flags & HSK_EARLY_DATA_ACCEPTED) @@ -87,10 +87,10 @@ early_data_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) !(session->internals.resumption_requested == 0 && session->internals.premaster_set == 0) && session->internals.resumed_security_parameters.pversion && - session->internals.resumed_security_parameters. - pversion->tls13_sem) { + session->internals.resumed_security_parameters.pversion + ->tls13_sem) { session->internals.hsk_flags |= - HSK_EARLY_DATA_IN_FLIGHT; + HSK_EARLY_DATA_IN_FLIGHT; return GNUTLS_E_INT_RET_0; } } @@ -140,7 +140,7 @@ int gnutls_record_set_max_early_data_size(gnutls_session_t session, size_t size) if (size == 0 || size > UINT32_MAX) return GNUTLS_E_INVALID_REQUEST; - session->security_parameters.max_early_data_size = (uint32_t) size; + session->security_parameters.max_early_data_size = (uint32_t)size; return 0; } diff --git a/lib/ext/early_data.h b/lib/ext/early_data.h index d6a314cbca..d7178e8ac2 100644 --- a/lib/ext/early_data.h +++ b/lib/ext/early_data.h @@ -21,10 +21,10 @@ */ #ifndef GNUTLS_LIB_EXT_EARLY_DATA_H -# define GNUTLS_LIB_EXT_EARLY_DATA_H +#define GNUTLS_LIB_EXT_EARLY_DATA_H -# include +#include extern const hello_ext_entry_st ext_mod_early_data; -#endif /* GNUTLS_LIB_EXT_EARLY_DATA_H */ +#endif /* GNUTLS_LIB_EXT_EARLY_DATA_H */ diff --git a/lib/ext/ec_point_formats.c b/lib/ext/ec_point_formats.c index 34db90f52c..810751bce8 100644 --- a/lib/ext/ec_point_formats.c +++ b/lib/ext/ec_point_formats.c @@ -29,14 +29,11 @@ #include "state.h" #include -static int _gnutls_supported_ec_point_formats_recv_params(gnutls_session_t - session, - const uint8_t * data, - size_t data_size); -static int _gnutls_supported_ec_point_formats_send_params(gnutls_session_t - session, - gnutls_buffer_st * - extdata); +static int _gnutls_supported_ec_point_formats_recv_params( + gnutls_session_t session, const uint8_t *data, size_t data_size); +static int +_gnutls_supported_ec_point_formats_send_params(gnutls_session_t session, + gnutls_buffer_st *extdata); const hello_ext_entry_st ext_mod_supported_ec_point_formats = { .name = "Supported EC Point Formats", @@ -45,7 +42,8 @@ const hello_ext_entry_st ext_mod_supported_ec_point_formats = { .client_parse_point = GNUTLS_EXT_TLS, .server_parse_point = GNUTLS_EXT_TLS, .validity = GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | - GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, + GNUTLS_EXT_FLAG_CLIENT_HELLO | + GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, .recv_func = _gnutls_supported_ec_point_formats_recv_params, .send_func = _gnutls_supported_ec_point_formats_send_params, .pack_func = NULL, @@ -55,30 +53,26 @@ const hello_ext_entry_st ext_mod_supported_ec_point_formats = { /* Receive point formats */ -static int -_gnutls_supported_ec_point_formats_recv_params(gnutls_session_t session, - const uint8_t * data, - size_t data_size) +static int _gnutls_supported_ec_point_formats_recv_params( + gnutls_session_t session, const uint8_t *data, size_t data_size) { size_t len, i; int uncompressed = 0; if (session->security_parameters.entity == GNUTLS_CLIENT) { if (data_size < 1) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION); len = data[0]; if (len < 1) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION); DECR_LEN(data_size, len + 1); for (i = 1; i <= len; i++) - if (data[i] == 0) { /* uncompressed */ + if (data[i] == 0) { /* uncompressed */ uncompressed = 1; break; } @@ -90,9 +84,8 @@ _gnutls_supported_ec_point_formats_recv_params(gnutls_session_t session, * and a client must support it thus nothing to check. */ if (data_size < 1) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION); } return 0; @@ -102,13 +95,15 @@ _gnutls_supported_ec_point_formats_recv_params(gnutls_session_t session, */ static int _gnutls_supported_ec_point_formats_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata) + gnutls_buffer_st *extdata) { - const uint8_t p[2] = { 0x01, 0x00 }; /* only support uncompressed point format */ + const uint8_t p[2] = { + 0x01, 0x00 + }; /* only support uncompressed point format */ int ret; - if (session->security_parameters.entity == GNUTLS_SERVER - && !_gnutls_session_is_ecc(session)) + if (session->security_parameters.entity == GNUTLS_SERVER && + !_gnutls_session_is_ecc(session)) return 0; if (session->internals.priorities->groups.size > 0) { diff --git a/lib/ext/ec_point_formats.h b/lib/ext/ec_point_formats.h index 0fb7b73ba7..cc65c04c38 100644 --- a/lib/ext/ec_point_formats.h +++ b/lib/ext/ec_point_formats.h @@ -21,10 +21,10 @@ */ #ifndef GNUTLS_LIB_EXT_EC_POINT_FORMATS_H -# define GNUTLS_LIB_EXT_EC_POINT_FORMATS_H +#define GNUTLS_LIB_EXT_EC_POINT_FORMATS_H -# include +#include extern const hello_ext_entry_st ext_mod_supported_ec_point_formats; -#endif /* GNUTLS_LIB_EXT_EC_POINT_FORMATS_H */ +#endif /* GNUTLS_LIB_EXT_EC_POINT_FORMATS_H */ diff --git a/lib/ext/etm.c b/lib/ext/etm.c index e5a671893b..11de52ff62 100644 --- a/lib/ext/etm.c +++ b/lib/ext/etm.c @@ -30,9 +30,9 @@ #include static int _gnutls_ext_etm_recv_params(gnutls_session_t session, - const uint8_t * data, size_t data_size); + const uint8_t *data, size_t data_size); static int _gnutls_ext_etm_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata); + gnutls_buffer_st *extdata); const hello_ext_entry_st ext_mod_etm = { .name = "Encrypt-then-MAC", @@ -40,9 +40,9 @@ const hello_ext_entry_st ext_mod_etm = { .gid = GNUTLS_EXTENSION_ETM, .client_parse_point = GNUTLS_EXT_MANDATORY, .server_parse_point = GNUTLS_EXT_MANDATORY, - .validity = - GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | - GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, + .validity = GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | + GNUTLS_EXT_FLAG_CLIENT_HELLO | + GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, .recv_func = _gnutls_ext_etm_recv_params, .send_func = _gnutls_ext_etm_send_params, .pack_func = NULL, @@ -56,9 +56,8 @@ const hello_ext_entry_st ext_mod_etm = { * sets a flag into the session security parameters. * */ -static int -_gnutls_ext_etm_recv_params(gnutls_session_t session, - const uint8_t * data, size_t _data_size) +static int _gnutls_ext_etm_recv_params(gnutls_session_t session, + const uint8_t *data, size_t _data_size) { ssize_t data_size = _data_size; @@ -72,21 +71,20 @@ _gnutls_ext_etm_recv_params(gnutls_session_t session, if (session->internals.no_etm != 0) return 0; - epriv = (void *)(intptr_t) 1; - _gnutls_hello_ext_set_priv(session, - GNUTLS_EXTENSION_ETM, epriv); + epriv = (void *)(intptr_t)1; + _gnutls_hello_ext_set_priv(session, GNUTLS_EXTENSION_ETM, + epriv); /* don't decide now, decide on send */ return 0; - } else { /* client */ + } else { /* client */ const gnutls_cipher_suite_entry_st *e = - session->security_parameters.cs; + session->security_parameters.cs; if (e != NULL) { const cipher_entry_st *c; c = cipher_to_entry(e->block_algorithm); - if (c == NULL - || (c->type == CIPHER_AEAD - || c->type == CIPHER_STREAM)) + if (c == NULL || (c->type == CIPHER_AEAD || + c->type == CIPHER_STREAM)) return 0; session->security_parameters.etm = 1; @@ -98,9 +96,8 @@ _gnutls_ext_etm_recv_params(gnutls_session_t session, /* returns data_size or a negative number on failure */ -static int -_gnutls_ext_etm_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata) +static int _gnutls_ext_etm_send_params(gnutls_session_t session, + gnutls_buffer_st *extdata) { if (session->internals.no_etm != 0) return 0; @@ -111,7 +108,7 @@ _gnutls_ext_etm_send_params(gnutls_session_t session, return GNUTLS_E_INT_RET_0; else return 0; - } else { /* server side */ + } else { /* server side */ const gnutls_cipher_suite_entry_st *e; const cipher_entry_st *c; int ret; @@ -120,15 +117,13 @@ _gnutls_ext_etm_send_params(gnutls_session_t session, e = session->security_parameters.cs; if (e != NULL) { c = cipher_to_entry(e->block_algorithm); - if (c == NULL - || (c->type == CIPHER_AEAD - || c->type == CIPHER_STREAM)) + if (c == NULL || (c->type == CIPHER_AEAD || + c->type == CIPHER_STREAM)) return 0; - ret = _gnutls_hello_ext_get_priv(session, - GNUTLS_EXTENSION_ETM, - &epriv); - if (ret < 0 || ((intptr_t) epriv) == 0) + ret = _gnutls_hello_ext_get_priv( + session, GNUTLS_EXTENSION_ETM, &epriv); + if (ret < 0 || ((intptr_t)epriv) == 0) return 0; session->security_parameters.etm = 1; diff --git a/lib/ext/etm.h b/lib/ext/etm.h index 2fd35cc0e5..76f9dd5e51 100644 --- a/lib/ext/etm.h +++ b/lib/ext/etm.h @@ -21,10 +21,10 @@ */ #ifndef GNUTLS_LIB_EXT_ETM_H -# define GNUTLS_LIB_EXT_ETM_H +#define GNUTLS_LIB_EXT_ETM_H -# include +#include extern const hello_ext_entry_st ext_mod_etm; -#endif /* GNUTLS_LIB_EXT_ETM_H */ +#endif /* GNUTLS_LIB_EXT_ETM_H */ diff --git a/lib/ext/ext_master_secret.c b/lib/ext/ext_master_secret.c index 95e64bd0d7..226d1c24b2 100644 --- a/lib/ext/ext_master_secret.c +++ b/lib/ext/ext_master_secret.c @@ -30,10 +30,10 @@ #include static int _gnutls_ext_master_secret_recv_params(gnutls_session_t session, - const uint8_t * data, + const uint8_t *data, size_t data_size); static int _gnutls_ext_master_secret_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata); + gnutls_buffer_st *extdata); const hello_ext_entry_st ext_mod_ext_master_secret = { .name = "Extended Master Secret", @@ -41,9 +41,9 @@ const hello_ext_entry_st ext_mod_ext_master_secret = { .gid = GNUTLS_EXTENSION_EXT_MASTER_SECRET, .client_parse_point = GNUTLS_EXT_MANDATORY, .server_parse_point = GNUTLS_EXT_MANDATORY, - .validity = - GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | - GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, + .validity = GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | + GNUTLS_EXT_FLAG_CLIENT_HELLO | + GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, .recv_func = _gnutls_ext_master_secret_recv_params, .send_func = _gnutls_ext_master_secret_send_params, .pack_func = NULL, @@ -57,7 +57,7 @@ static inline unsigned have_only_ssl3_enabled(gnutls_session_t session) { if (session->internals.priorities->protocol.num_priorities == 1 && session->internals.priorities->protocol.priorities[0] == - GNUTLS_SSL3) + GNUTLS_SSL3) return 1; return 0; } @@ -68,9 +68,9 @@ static inline unsigned have_only_ssl3_enabled(gnutls_session_t session) * sets a flag into the session security parameters. * */ -static int -_gnutls_ext_master_secret_recv_params(gnutls_session_t session, - const uint8_t * data, size_t _data_size) +static int _gnutls_ext_master_secret_recv_params(gnutls_session_t session, + const uint8_t *data, + size_t _data_size) { ssize_t data_size = _data_size; @@ -102,9 +102,8 @@ _gnutls_ext_master_secret_recv_params(gnutls_session_t session, /* returns data_size or a negative number on failure */ -static int -_gnutls_ext_master_secret_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata) +static int _gnutls_ext_master_secret_send_params(gnutls_session_t session, + gnutls_buffer_st *extdata) { if ((session->internals.flags & GNUTLS_NO_DEFAULT_EXTENSIONS) || session->internals.priorities->no_extensions != 0 || @@ -117,16 +116,16 @@ _gnutls_ext_master_secret_send_params(gnutls_session_t session, #ifdef ENABLE_SSL3 if (session->security_parameters.entity == GNUTLS_CLIENT) { if (have_only_ssl3_enabled(session)) - return 0; /* this extension isn't available for SSL 3.0 */ + return 0; /* this extension isn't available for SSL 3.0 */ return GNUTLS_E_INT_RET_0; - } else { /* server side */ + } else { /* server side */ const version_entry_st *ver = get_version(session); if (unlikely(ver == NULL)) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - if (ver->id != GNUTLS_SSL3 - && session->security_parameters.ext_master_secret != 0) + if (ver->id != GNUTLS_SSL3 && + session->security_parameters.ext_master_secret != 0) return GNUTLS_E_INT_RET_0; } diff --git a/lib/ext/ext_master_secret.h b/lib/ext/ext_master_secret.h index ad807b8469..45d38178bd 100644 --- a/lib/ext/ext_master_secret.h +++ b/lib/ext/ext_master_secret.h @@ -21,13 +21,13 @@ */ #ifndef GNUTLS_LIB_EXT_EXT_MASTER_SECRET_H -# define GNUTLS_LIB_EXT_EXT_MASTER_SECRET_H +#define GNUTLS_LIB_EXT_EXT_MASTER_SECRET_H /* Keep backward compatibility */ -# define GNUTLS_NO_EXTENSIONS GNUTLS_NO_DEFAULT_EXTENSIONS +#define GNUTLS_NO_EXTENSIONS GNUTLS_NO_DEFAULT_EXTENSIONS -# include +#include extern const hello_ext_entry_st ext_mod_ext_master_secret; -#endif /* GNUTLS_LIB_EXT_EXT_MASTER_SECRET_H */ +#endif /* GNUTLS_LIB_EXT_EXT_MASTER_SECRET_H */ diff --git a/lib/ext/heartbeat.c b/lib/ext/heartbeat.c index 0641ac9f2e..ad8fc4e5fb 100644 --- a/lib/ext/heartbeat.c +++ b/lib/ext/heartbeat.c @@ -55,7 +55,7 @@ void gnutls_heartbeat_enable(gnutls_session_t session, unsigned int type) { gnutls_ext_priv_data_t epriv; - epriv = (void *)(intptr_t) type; + epriv = (void *)(intptr_t)type; _gnutls_hello_ext_set_priv(session, GNUTLS_EXTENSION_HEARTBEAT, epriv); } @@ -76,29 +76,28 @@ unsigned gnutls_heartbeat_allowed(gnutls_session_t session, unsigned int type) gnutls_ext_priv_data_t epriv; if (session->internals.handshake_in_progress != 0) - return 0; /* not allowed */ + return 0; /* not allowed */ - if (_gnutls_hello_ext_get_priv - (session, GNUTLS_EXTENSION_HEARTBEAT, &epriv) < 0) - return 0; /* Not enabled */ + if (_gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_HEARTBEAT, + &epriv) < 0) + return 0; /* Not enabled */ if (type == GNUTLS_HB_LOCAL_ALLOWED_TO_SEND) { - if (((intptr_t) epriv) & LOCAL_ALLOWED_TO_SEND) + if (((intptr_t)epriv) & LOCAL_ALLOWED_TO_SEND) return 1; - } else if (((intptr_t) epriv) & GNUTLS_HB_PEER_ALLOWED_TO_SEND) + } else if (((intptr_t)epriv) & GNUTLS_HB_PEER_ALLOWED_TO_SEND) return 1; return 0; } -# define DEFAULT_PADDING_SIZE 16 +#define DEFAULT_PADDING_SIZE 16 /* * Sends heartbeat data. */ -static int -heartbeat_send_data(gnutls_session_t session, const void *data, - size_t data_size, uint8_t type) +static int heartbeat_send_data(gnutls_session_t session, const void *data, + size_t data_size, uint8_t type) { int ret, pos; uint8_t *response; @@ -116,19 +115,19 @@ heartbeat_send_data(gnutls_session_t session, const void *data, memcpy(&response[pos], data, data_size); pos += data_size; - ret = - gnutls_rnd(GNUTLS_RND_NONCE, &response[pos], DEFAULT_PADDING_SIZE); + ret = gnutls_rnd(GNUTLS_RND_NONCE, &response[pos], + DEFAULT_PADDING_SIZE); if (ret < 0) { gnutls_assert(); goto cleanup; } pos += DEFAULT_PADDING_SIZE; - ret = - _gnutls_send_int(session, GNUTLS_HEARTBEAT, -1, - EPOCH_WRITE_CURRENT, response, pos, MBUFFER_FLUSH); + ret = _gnutls_send_int(session, GNUTLS_HEARTBEAT, -1, + EPOCH_WRITE_CURRENT, response, pos, + MBUFFER_FLUSH); - cleanup: +cleanup: gnutls_free(response); return ret; } @@ -154,9 +153,8 @@ heartbeat_send_data(gnutls_session_t session, const void *data, * * Since: 3.1.2 **/ -int -gnutls_heartbeat_ping(gnutls_session_t session, size_t data_size, - unsigned int max_tries, unsigned int flags) +int gnutls_heartbeat_ping(gnutls_session_t session, size_t data_size, + unsigned int max_tries, unsigned int flags) { int ret; unsigned int retries = 1, diff; @@ -165,15 +163,15 @@ gnutls_heartbeat_ping(gnutls_session_t session, size_t data_size, if (data_size > MAX_HEARTBEAT_LENGTH) return gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET_LENGTH); - if (gnutls_heartbeat_allowed - (session, GNUTLS_HB_LOCAL_ALLOWED_TO_SEND) == 0) + if (gnutls_heartbeat_allowed(session, + GNUTLS_HB_LOCAL_ALLOWED_TO_SEND) == 0) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); /* resume previous call if interrupted */ if (session->internals.record_send_buffer.byte_length > 0 && session->internals.record_send_buffer.head != NULL && session->internals.record_send_buffer.head->type == - GNUTLS_HEARTBEAT) + GNUTLS_HEARTBEAT) return _gnutls_io_write_flush(session); switch (session->internals.hb_state) { @@ -185,16 +183,14 @@ gnutls_heartbeat_ping(gnutls_session_t session, size_t data_size, _gnutls_buffer_reset(&session->internals.hb_local_data); - ret = - _gnutls_buffer_resize(&session->internals.hb_local_data, - data_size); + ret = _gnutls_buffer_resize(&session->internals.hb_local_data, + data_size); if (ret < 0) return gnutls_assert_val(ret); - ret = - gnutls_rnd(GNUTLS_RND_NONCE, - session->internals.hb_local_data.data, - data_size); + ret = gnutls_rnd(GNUTLS_RND_NONCE, + session->internals.hb_local_data.data, + data_size); if (ret < 0) return gnutls_assert_val(ret); @@ -205,13 +201,12 @@ gnutls_heartbeat_ping(gnutls_session_t session, size_t data_size, FALLTHROUGH; case SHB_SEND2: session->internals.hb_actual_retrans_timeout_ms = - session->internals.hb_retrans_timeout_ms; - retry: - ret = - heartbeat_send_data(session, - session->internals.hb_local_data.data, - session->internals.hb_local_data.length, - HEARTBEAT_REQUEST); + session->internals.hb_retrans_timeout_ms; + retry: + ret = heartbeat_send_data( + session, session->internals.hb_local_data.data, + session->internals.hb_local_data.length, + HEARTBEAT_REQUEST); if (ret < 0) return gnutls_assert_val(ret); @@ -226,11 +221,9 @@ gnutls_heartbeat_ping(gnutls_session_t session, size_t data_size, FALLTHROUGH; case SHB_RECV: - ret = - _gnutls_recv_int(session, GNUTLS_HEARTBEAT, - NULL, 0, NULL, - session->internals. - hb_actual_retrans_timeout_ms); + ret = _gnutls_recv_int( + session, GNUTLS_HEARTBEAT, NULL, 0, NULL, + session->internals.hb_actual_retrans_timeout_ms); if (ret == GNUTLS_E_HEARTBEAT_PONG_RECEIVED) { session->internals.hb_state = SHB_SEND1; break; @@ -242,9 +235,8 @@ gnutls_heartbeat_ping(gnutls_session_t session, size_t data_size, } gnutls_gettime(&now); - diff = - timespec_sub_ms(&now, - &session->internals.hb_ping_start); + diff = timespec_sub_ms( + &now, &session->internals.hb_ping_start); if (diff > session->internals.hb_total_timeout_ms) { session->internals.hb_state = SHB_SEND1; return gnutls_assert_val(GNUTLS_E_TIMEDOUT); @@ -252,7 +244,7 @@ gnutls_heartbeat_ping(gnutls_session_t session, size_t data_size, session->internals.hb_actual_retrans_timeout_ms *= 2; session->internals.hb_actual_retrans_timeout_ms %= - MAX_DTLS_TIMEOUT; + MAX_DTLS_TIMEOUT; session->internals.hb_state = SHB_SEND2; goto retry; @@ -283,17 +275,16 @@ int gnutls_heartbeat_pong(gnutls_session_t session, unsigned int flags) if (session->internals.record_send_buffer.byte_length > 0 && session->internals.record_send_buffer.head != NULL && session->internals.record_send_buffer.head->type == - GNUTLS_HEARTBEAT) + GNUTLS_HEARTBEAT) return _gnutls_io_write_flush(session); if (session->internals.hb_remote_data.length == 0) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - ret = - heartbeat_send_data(session, - session->internals.hb_remote_data.data, - session->internals.hb_remote_data.length, - HEARTBEAT_RESPONSE); + ret = heartbeat_send_data(session, + session->internals.hb_remote_data.data, + session->internals.hb_remote_data.length, + HEARTBEAT_RESPONSE); _gnutls_buffer_reset(&session->internals.hb_remote_data); @@ -306,7 +297,7 @@ int gnutls_heartbeat_pong(gnutls_session_t session, unsigned int flags) /* * Processes a heartbeat message. */ -int _gnutls_heartbeat_handle(gnutls_session_t session, mbuffer_st * bufel) +int _gnutls_heartbeat_handle(gnutls_session_t session, mbuffer_st *bufel) { int ret; unsigned type; @@ -314,8 +305,8 @@ int _gnutls_heartbeat_handle(gnutls_session_t session, mbuffer_st * bufel) uint8_t *msg = _mbuffer_get_udata_ptr(bufel); size_t hb_len, len = _mbuffer_get_udata_size(bufel); - if (gnutls_heartbeat_allowed - (session, GNUTLS_HB_PEER_ALLOWED_TO_SEND) == 0) + if (gnutls_heartbeat_allowed(session, GNUTLS_HB_PEER_ALLOWED_TO_SEND) == + 0) return gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET); if (len < 3 + DEFAULT_PADDING_SIZE) @@ -334,9 +325,8 @@ int _gnutls_heartbeat_handle(gnutls_session_t session, mbuffer_st * bufel) case HEARTBEAT_REQUEST: _gnutls_buffer_reset(&session->internals.hb_remote_data); - ret = - _gnutls_buffer_resize(&session->internals.hb_remote_data, - hb_len); + ret = _gnutls_buffer_resize(&session->internals.hb_remote_data, + hb_len); if (ret < 0) return gnutls_assert_val(ret); @@ -353,23 +343,22 @@ int _gnutls_heartbeat_handle(gnutls_session_t session, mbuffer_st * bufel) return gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET); if (hb_len > 0 && - memcmp(&msg[pos], - session->internals.hb_local_data.data, + memcmp(&msg[pos], session->internals.hb_local_data.data, hb_len) != 0) { if (IS_DTLS(session)) - return gnutls_assert_val(GNUTLS_E_AGAIN); /* ignore it */ + return gnutls_assert_val( + GNUTLS_E_AGAIN); /* ignore it */ else - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET); } _gnutls_buffer_reset(&session->internals.hb_local_data); return gnutls_assert_val(GNUTLS_E_HEARTBEAT_PONG_RECEIVED); default: - _gnutls_record_log - ("REC[%p]: HB: received unknown type %u\n", session, type); + _gnutls_record_log("REC[%p]: HB: received unknown type %u\n", + session, type); return gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET); } } @@ -423,26 +412,24 @@ void gnutls_heartbeat_set_timeouts(gnutls_session_t session, session->internals.hb_total_timeout_ms = total_timeout; } -static int -_gnutls_heartbeat_recv_params(gnutls_session_t session, - const uint8_t * data, size_t _data_size) +static int _gnutls_heartbeat_recv_params(gnutls_session_t session, + const uint8_t *data, size_t _data_size) { unsigned policy; gnutls_ext_priv_data_t epriv; - if (_gnutls_hello_ext_get_priv - (session, GNUTLS_EXTENSION_HEARTBEAT, &epriv) < 0) { + if (_gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_HEARTBEAT, + &epriv) < 0) { if (session->security_parameters.entity == GNUTLS_CLIENT) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); - return 0; /* Not enabled */ + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + return 0; /* Not enabled */ } if (_data_size == 0) return GNUTLS_E_UNEXPECTED_PACKET_LENGTH; - policy = (intptr_t) epriv; + policy = (intptr_t)epriv; if (data[0] == 1) policy |= LOCAL_ALLOWED_TO_SEND; @@ -451,26 +438,25 @@ _gnutls_heartbeat_recv_params(gnutls_session_t session, else return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); - epriv = (void *)(intptr_t) policy; + epriv = (void *)(intptr_t)policy; _gnutls_hello_ext_set_priv(session, GNUTLS_EXTENSION_HEARTBEAT, epriv); return 0; } -static int -_gnutls_heartbeat_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata) +static int _gnutls_heartbeat_send_params(gnutls_session_t session, + gnutls_buffer_st *extdata) { gnutls_ext_priv_data_t epriv; uint8_t p; - if (_gnutls_hello_ext_get_priv - (session, GNUTLS_EXTENSION_HEARTBEAT, &epriv) < 0) - return 0; /* nothing to send - not enabled */ + if (_gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_HEARTBEAT, + &epriv) < 0) + return 0; /* nothing to send - not enabled */ - if (((intptr_t) epriv) & GNUTLS_HB_PEER_ALLOWED_TO_SEND) + if (((intptr_t)epriv) & GNUTLS_HB_PEER_ALLOWED_TO_SEND) p = 1; - else /*if (epriv.num & GNUTLS_HB_PEER_NOT_ALLOWED_TO_SEND) */ + else /*if (epriv.num & GNUTLS_HB_PEER_NOT_ALLOWED_TO_SEND) */ p = 2; if (_gnutls_buffer_append_data(extdata, &p, 1) < 0) @@ -479,19 +465,18 @@ _gnutls_heartbeat_send_params(gnutls_session_t session, return 1; } -static int -_gnutls_heartbeat_pack(gnutls_ext_priv_data_t epriv, gnutls_buffer_st * ps) +static int _gnutls_heartbeat_pack(gnutls_ext_priv_data_t epriv, + gnutls_buffer_st *ps) { int ret; - BUFFER_APPEND_NUM(ps, (intptr_t) epriv); + BUFFER_APPEND_NUM(ps, (intptr_t)epriv); return 0; - } -static int -_gnutls_heartbeat_unpack(gnutls_buffer_st * ps, gnutls_ext_priv_data_t * _priv) +static int _gnutls_heartbeat_unpack(gnutls_buffer_st *ps, + gnutls_ext_priv_data_t *_priv) { gnutls_ext_priv_data_t epriv; int ret; @@ -501,7 +486,7 @@ _gnutls_heartbeat_unpack(gnutls_buffer_st * ps, gnutls_ext_priv_data_t * _priv) *_priv = epriv; ret = 0; - error: +error: return ret; } @@ -511,10 +496,9 @@ const hello_ext_entry_st ext_mod_heartbeat = { .gid = GNUTLS_EXTENSION_HEARTBEAT, .client_parse_point = GNUTLS_EXT_TLS, .server_parse_point = GNUTLS_EXT_TLS, - .validity = - GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | - GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_EE | - GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, + .validity = GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | + GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_EE | + GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, .recv_func = _gnutls_heartbeat_recv_params, .send_func = _gnutls_heartbeat_send_params, .pack_func = _gnutls_heartbeat_pack, @@ -533,9 +517,8 @@ unsigned gnutls_heartbeat_allowed(gnutls_session_t session, unsigned int type) return 0; } -int -gnutls_heartbeat_ping(gnutls_session_t session, size_t data_size, - unsigned int max_tries, unsigned int flags) +int gnutls_heartbeat_ping(gnutls_session_t session, size_t data_size, + unsigned int max_tries, unsigned int flags) { return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); } diff --git a/lib/ext/heartbeat.h b/lib/ext/heartbeat.h index a8b9014276..0c35f46c0e 100644 --- a/lib/ext/heartbeat.h +++ b/lib/ext/heartbeat.h @@ -22,23 +22,23 @@ */ #ifndef GNUTLS_LIB_EXT_HEARTBEAT_H -# define GNUTLS_LIB_EXT_HEARTBEAT_H +#define GNUTLS_LIB_EXT_HEARTBEAT_H -# include +#include -# define HEARTBEAT_REQUEST 1 -# define HEARTBEAT_RESPONSE 2 +#define HEARTBEAT_REQUEST 1 +#define HEARTBEAT_RESPONSE 2 -# define MAX_HEARTBEAT_LENGTH DEFAULT_MAX_RECORD_SIZE +#define MAX_HEARTBEAT_LENGTH DEFAULT_MAX_RECORD_SIZE -# define LOCAL_ALLOWED_TO_SEND (1<<2) -# define LOCAL_NOT_ALLOWED_TO_SEND (1<<3) +#define LOCAL_ALLOWED_TO_SEND (1 << 2) +#define LOCAL_NOT_ALLOWED_TO_SEND (1 << 3) -# define HEARTBEAT_DEFAULT_POLICY PEER_NOT_ALLOWED_TO_SEND +#define HEARTBEAT_DEFAULT_POLICY PEER_NOT_ALLOWED_TO_SEND extern const hello_ext_entry_st ext_mod_heartbeat; -int _gnutls_heartbeat_handle(gnutls_session_t session, mbuffer_st * bufel); +int _gnutls_heartbeat_handle(gnutls_session_t session, mbuffer_st *bufel); int _gnutls_heartbeat_enabled(gnutls_session_t session, int local); -#endif /* GNUTLS_LIB_EXT_HEARTBEAT_H */ +#endif /* GNUTLS_LIB_EXT_HEARTBEAT_H */ diff --git a/lib/ext/key_share.c b/lib/ext/key_share.c index 2fc543cc9b..e659b67fa0 100644 --- a/lib/ext/key_share.c +++ b/lib/ext/key_share.c @@ -37,10 +37,10 @@ #include "../algorithms.h" #include "pk.h" -static int key_share_recv_params(gnutls_session_t session, - const uint8_t * data, size_t data_size); +static int key_share_recv_params(gnutls_session_t session, const uint8_t *data, + size_t data_size); static int key_share_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata); + gnutls_buffer_st *extdata); const hello_ext_entry_st ext_mod_key_share = { .name = "Key Share", @@ -48,9 +48,8 @@ const hello_ext_entry_st ext_mod_key_share = { .gid = GNUTLS_EXTENSION_KEY_SHARE, .client_parse_point = _GNUTLS_EXT_TLS_POST_CS, .server_parse_point = _GNUTLS_EXT_TLS_POST_CS, - .validity = - GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_CLIENT_HELLO | - GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO | GNUTLS_EXT_FLAG_HRR, + .validity = GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_CLIENT_HELLO | + GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO | GNUTLS_EXT_FLAG_HRR, .recv_func = key_share_recv_params, .send_func = key_share_send_params, .pack_func = NULL, @@ -70,8 +69,8 @@ const hello_ext_entry_st ext_mod_key_share = { * */ static int client_gen_key_share(gnutls_session_t session, - const gnutls_group_entry_st * group, - gnutls_buffer_st * extdata) + const gnutls_group_entry_st *group, + gnutls_buffer_st *extdata) { gnutls_datum_t tmp = { NULL, 0 }; int ret; @@ -100,19 +99,15 @@ static int client_gen_key_share(gnutls_session_t session, if (ret < 0) return gnutls_assert_val(ret); - ret = _gnutls_ecc_ansi_x962_export(group->curve, - session->key. - kshare.ecdh_params. - params[ECC_X], - session->key. - kshare.ecdh_params. - params[ECC_Y], &tmp); + ret = _gnutls_ecc_ansi_x962_export( + group->curve, + session->key.kshare.ecdh_params.params[ECC_X], + session->key.kshare.ecdh_params.params[ECC_Y], &tmp); if (ret < 0) return gnutls_assert_val(ret); - ret = - _gnutls_buffer_append_data_prefix(extdata, 16, tmp.data, - tmp.size); + ret = _gnutls_buffer_append_data_prefix(extdata, 16, tmp.data, + tmp.size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -128,20 +123,16 @@ static int client_gen_key_share(gnutls_session_t session, gnutls_pk_params_release(&session->key.kshare.ecdhx_params); gnutls_pk_params_init(&session->key.kshare.ecdhx_params); - ret = _gnutls_pk_generate_keys(group->pk, group->curve, - &session->key. - kshare.ecdhx_params, 1); + ret = _gnutls_pk_generate_keys( + group->pk, group->curve, + &session->key.kshare.ecdhx_params, 1); if (ret < 0) return gnutls_assert_val(ret); - ret = - _gnutls_buffer_append_data_prefix(extdata, 16, - session->key. - kshare.ecdhx_params. - raw_pub.data, - session->key. - kshare.ecdhx_params. - raw_pub.size); + ret = _gnutls_buffer_append_data_prefix( + extdata, 16, + session->key.kshare.ecdhx_params.raw_pub.data, + session->key.kshare.ecdhx_params.raw_pub.size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -157,65 +148,53 @@ static int client_gen_key_share(gnutls_session_t session, gnutls_pk_params_release(&session->key.kshare.dh_params); gnutls_pk_params_init(&session->key.kshare.dh_params); - ret = - _gnutls_mpi_init_scan_nz(&session->key.kshare. - dh_params.params[DH_G], - group->generator->data, - group->generator->size); + ret = _gnutls_mpi_init_scan_nz( + &session->key.kshare.dh_params.params[DH_G], + group->generator->data, group->generator->size); if (ret < 0) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); - - ret = - _gnutls_mpi_init_scan_nz(&session->key.kshare. - dh_params.params[DH_P], - group->prime->data, - group->prime->size); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + + ret = _gnutls_mpi_init_scan_nz( + &session->key.kshare.dh_params.params[DH_P], + group->prime->data, group->prime->size); if (ret < 0) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); - - ret = - _gnutls_mpi_init_scan_nz(&session->key.kshare. - dh_params.params[DH_Q], - group->q->data, group->q->size); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + + ret = _gnutls_mpi_init_scan_nz( + &session->key.kshare.dh_params.params[DH_Q], + group->q->data, group->q->size); if (ret < 0) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); session->key.kshare.dh_params.algo = group->pk; - session->key.kshare.dh_params.dh_group = group->id; /* no curve in FFDH, we write the group */ + session->key.kshare.dh_params.dh_group = + group->id; /* no curve in FFDH, we write the group */ session->key.kshare.dh_params.qbits = *group->q_bits; session->key.kshare.dh_params.params_nr = 3; - ret = - _gnutls_pk_generate_keys(group->pk, 0, - &session->key.kshare.dh_params, 1); + ret = _gnutls_pk_generate_keys( + group->pk, 0, &session->key.kshare.dh_params, 1); if (ret < 0) return gnutls_assert_val(ret); - ret = - _gnutls_buffer_append_prefix(extdata, 16, - group->prime->size); + ret = _gnutls_buffer_append_prefix(extdata, 16, + group->prime->size); if (ret < 0) return gnutls_assert_val(ret); - ret = - _gnutls_buffer_append_fixed_mpi(extdata, - session->key. - kshare.dh_params. - params[DH_Y], - group->prime->size); + ret = _gnutls_buffer_append_fixed_mpi( + extdata, session->key.kshare.dh_params.params[DH_Y], + group->prime->size); if (ret < 0) return gnutls_assert_val(ret); ret = 0; } - cleanup: +cleanup: gnutls_free(tmp.data); return ret; } @@ -225,8 +204,8 @@ static int client_gen_key_share(gnutls_session_t session, * */ static int server_gen_key_share(gnutls_session_t session, - const gnutls_group_entry_st * group, - gnutls_buffer_st * extdata) + const gnutls_group_entry_st *group, + gnutls_buffer_st *extdata) { gnutls_datum_t tmp = { NULL, 0 }; int ret; @@ -246,19 +225,15 @@ static int server_gen_key_share(gnutls_session_t session, return gnutls_assert_val(ret); if (group->pk == GNUTLS_PK_EC) { - ret = _gnutls_ecc_ansi_x962_export(group->curve, - session->key. - kshare.ecdh_params. - params[ECC_X], - session->key. - kshare.ecdh_params. - params[ECC_Y], &tmp); + ret = _gnutls_ecc_ansi_x962_export( + group->curve, + session->key.kshare.ecdh_params.params[ECC_X], + session->key.kshare.ecdh_params.params[ECC_Y], &tmp); if (ret < 0) return gnutls_assert_val(ret); - ret = - _gnutls_buffer_append_data_prefix(extdata, 16, tmp.data, - tmp.size); + ret = _gnutls_buffer_append_data_prefix(extdata, 16, tmp.data, + tmp.size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -268,49 +243,40 @@ static int server_gen_key_share(gnutls_session_t session, } else if (group->pk == GNUTLS_PK_ECDH_X25519 || group->pk == GNUTLS_PK_ECDH_X448) { - ret = - _gnutls_buffer_append_data_prefix(extdata, 16, - session->key. - kshare.ecdhx_params. - raw_pub.data, - session->key. - kshare.ecdhx_params. - raw_pub.size); + ret = _gnutls_buffer_append_data_prefix( + extdata, 16, + session->key.kshare.ecdhx_params.raw_pub.data, + session->key.kshare.ecdhx_params.raw_pub.size); if (ret < 0) return gnutls_assert_val(ret); ret = 0; } else if (group->pk == GNUTLS_PK_DH) { - ret = - _gnutls_buffer_append_prefix(extdata, 16, - group->prime->size); + ret = _gnutls_buffer_append_prefix(extdata, 16, + group->prime->size); if (ret < 0) return gnutls_assert_val(ret); - ret = - _gnutls_buffer_append_fixed_mpi(extdata, - session->key. - kshare.dh_params. - params[DH_Y], - group->prime->size); + ret = _gnutls_buffer_append_fixed_mpi( + extdata, session->key.kshare.dh_params.params[DH_Y], + group->prime->size); if (ret < 0) return gnutls_assert_val(ret); ret = 0; } - cleanup: +cleanup: gnutls_free(tmp.data); return ret; } /* Generates shared key and stores it in session->key.key */ -static int -server_use_key_share(gnutls_session_t session, - const gnutls_group_entry_st * group, const uint8_t * data, - size_t data_size) +static int server_use_key_share(gnutls_session_t session, + const gnutls_group_entry_st *group, + const uint8_t *data, size_t data_size) { const gnutls_ecc_curve_entry_st *curve; int ret; @@ -326,15 +292,13 @@ server_use_key_share(gnutls_session_t session, gnutls_pk_params_init(&pub); if (curve->size * 2 + 1 != data_size) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); /* generate our key */ - ret = - _gnutls_pk_generate_keys(curve->pk, curve->id, - &session->key.kshare.ecdh_params, - 1); + ret = _gnutls_pk_generate_keys(curve->pk, curve->id, + &session->key.kshare.ecdh_params, + 1); if (ret < 0) return gnutls_assert_val(ret); @@ -350,10 +314,9 @@ server_use_key_share(gnutls_session_t session, pub.params_nr = 2; /* generate shared */ - ret = - _gnutls_pk_derive_tls13(curve->pk, &session->key.key, - &session->key.kshare.ecdh_params, - &pub); + ret = _gnutls_pk_derive_tls13(curve->pk, &session->key.key, + &session->key.kshare.ecdh_params, + &pub); gnutls_pk_params_release(&pub); if (ret < 0) { return gnutls_assert_val(ret); @@ -371,15 +334,13 @@ server_use_key_share(gnutls_session_t session, curve = _gnutls_ecc_curve_get_params(group->curve); if (curve->size != data_size) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); /* generate our key */ - ret = - _gnutls_pk_generate_keys(curve->pk, curve->id, - &session->key.kshare.ecdhx_params, - 1); + ret = _gnutls_pk_generate_keys( + curve->pk, curve->id, &session->key.kshare.ecdhx_params, + 1); if (ret < 0) return gnutls_assert_val(ret); @@ -395,10 +356,9 @@ server_use_key_share(gnutls_session_t session, /* We don't mask the MSB in the final byte as required * by RFC7748. This will be done internally by nettle 3.3 or later. */ - ret = - _gnutls_pk_derive_tls13(curve->pk, &session->key.key, - &session->key.kshare.ecdhx_params, - &pub); + ret = _gnutls_pk_derive_tls13(curve->pk, &session->key.key, + &session->key.kshare.ecdhx_params, + &pub); if (ret < 0) { return gnutls_assert_val(ret); } @@ -413,68 +373,56 @@ server_use_key_share(gnutls_session_t session, gnutls_pk_params_init(&session->key.kshare.dh_params); if (data_size != group->prime->size) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); /* set group params */ - ret = - _gnutls_mpi_init_scan_nz(&session->key.kshare. - dh_params.params[DH_G], - group->generator->data, - group->generator->size); + ret = _gnutls_mpi_init_scan_nz( + &session->key.kshare.dh_params.params[DH_G], + group->generator->data, group->generator->size); if (ret < 0) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); - - ret = - _gnutls_mpi_init_scan_nz(&session->key.kshare. - dh_params.params[DH_P], - group->prime->data, - group->prime->size); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + + ret = _gnutls_mpi_init_scan_nz( + &session->key.kshare.dh_params.params[DH_P], + group->prime->data, group->prime->size); if (ret < 0) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); - - ret = - _gnutls_mpi_init_scan_nz(&session->key.kshare. - dh_params.params[DH_Q], - group->q->data, group->q->size); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + + ret = _gnutls_mpi_init_scan_nz( + &session->key.kshare.dh_params.params[DH_Q], + group->q->data, group->q->size); if (ret < 0) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); session->key.kshare.dh_params.algo = GNUTLS_PK_DH; session->key.kshare.dh_params.qbits = *group->q_bits; session->key.kshare.dh_params.params_nr = 3; /* generate our keys */ - ret = - _gnutls_pk_generate_keys(group->pk, 0, - &session->key.kshare.dh_params, 1); + ret = _gnutls_pk_generate_keys( + group->pk, 0, &session->key.kshare.dh_params, 1); if (ret < 0) return gnutls_assert_val(ret); /* read the public key and generate shared */ gnutls_pk_params_init(&pub); - ret = _gnutls_mpi_init_scan_nz(&pub.params[DH_Y], - data, data_size); + ret = _gnutls_mpi_init_scan_nz(&pub.params[DH_Y], data, + data_size); if (ret < 0) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); pub.algo = group->pk; /* generate shared key */ - ret = - _gnutls_pk_derive_tls13(GNUTLS_PK_DH, &session->key.key, - &session->key.kshare.dh_params, - &pub); + ret = _gnutls_pk_derive_tls13(GNUTLS_PK_DH, &session->key.key, + &session->key.kshare.dh_params, + &pub); _gnutls_mpi_release(&pub.params[DH_Y]); if (ret < 0) return gnutls_assert_val(ret); @@ -492,10 +440,9 @@ server_use_key_share(gnutls_session_t session, /* Generates shared key and stores it in session->key.key */ -static int -client_use_key_share(gnutls_session_t session, - const gnutls_group_entry_st * group, const uint8_t * data, - size_t data_size) +static int client_use_key_share(gnutls_session_t session, + const gnutls_group_entry_st *group, + const uint8_t *data, size_t data_size) { const gnutls_ecc_curve_entry_st *curve; int ret; @@ -507,16 +454,14 @@ client_use_key_share(gnutls_session_t session, gnutls_pk_params_init(&pub); - if (session->key.kshare.ecdh_params.algo != group->pk - || session->key.kshare.ecdh_params.curve != curve->id) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + if (session->key.kshare.ecdh_params.algo != group->pk || + session->key.kshare.ecdh_params.curve != curve->id) + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); if (curve->size * 2 + 1 != data_size) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); /* read the server's public key */ ret = _gnutls_ecc_ansi_x962_import(data, data_size, @@ -530,10 +475,9 @@ client_use_key_share(gnutls_session_t session, pub.params_nr = 2; /* generate shared key */ - ret = - _gnutls_pk_derive_tls13(curve->pk, &session->key.key, - &session->key.kshare.ecdh_params, - &pub); + ret = _gnutls_pk_derive_tls13(curve->pk, &session->key.key, + &session->key.kshare.ecdh_params, + &pub); gnutls_pk_params_release(&pub); if (ret < 0) { return gnutls_assert_val(ret); @@ -547,16 +491,14 @@ client_use_key_share(gnutls_session_t session, curve = _gnutls_ecc_curve_get_params(group->curve); - if (session->key.kshare.ecdhx_params.algo != group->pk - || session->key.kshare.ecdhx_params.curve != curve->id) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + if (session->key.kshare.ecdhx_params.algo != group->pk || + session->key.kshare.ecdhx_params.curve != curve->id) + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); if (curve->size != data_size) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); /* read the public key and generate shared */ gnutls_pk_params_init(&pub); @@ -570,10 +512,9 @@ client_use_key_share(gnutls_session_t session, /* We don't mask the MSB in the final byte as required * by RFC7748. This will be done internally by nettle 3.3 or later. */ - ret = - _gnutls_pk_derive_tls13(curve->pk, &session->key.key, - &session->key.kshare.ecdhx_params, - &pub); + ret = _gnutls_pk_derive_tls13(curve->pk, &session->key.key, + &session->key.kshare.ecdhx_params, + &pub); if (ret < 0) { return gnutls_assert_val(ret); } @@ -583,34 +524,30 @@ client_use_key_share(gnutls_session_t session, } else if (group->pk == GNUTLS_PK_DH) { gnutls_pk_params_st pub; - if (session->key.kshare.dh_params.algo != group->pk - || session->key.kshare.dh_params.dh_group != group->id) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + if (session->key.kshare.dh_params.algo != group->pk || + session->key.kshare.dh_params.dh_group != group->id) + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); if (data_size != group->prime->size) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); /* read the public key and generate shared */ gnutls_pk_params_init(&pub); - ret = _gnutls_mpi_init_scan_nz(&pub.params[DH_Y], - data, data_size); + ret = _gnutls_mpi_init_scan_nz(&pub.params[DH_Y], data, + data_size); if (ret < 0) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); pub.algo = group->pk; /* generate shared key */ - ret = - _gnutls_pk_derive_tls13(GNUTLS_PK_DH, &session->key.key, - &session->key.kshare.dh_params, - &pub); + ret = _gnutls_pk_derive_tls13(GNUTLS_PK_DH, &session->key.key, + &session->key.kshare.dh_params, + &pub); _gnutls_mpi_release(&pub.params[DH_Y]); if (ret < 0) return gnutls_assert_val(ret); @@ -626,9 +563,8 @@ client_use_key_share(gnutls_session_t session, return ret; } -static int -key_share_recv_params(gnutls_session_t session, - const uint8_t * data, size_t data_size) +static int key_share_recv_params(gnutls_session_t session, const uint8_t *data, + size_t data_size) { int ret; size_t size; @@ -647,9 +583,8 @@ key_share_recv_params(gnutls_session_t session, data += 2; if (data_size != size) - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET_LENGTH); /* if we do PSK without DH ignore that share */ if ((session->internals.hsk_flags & HSK_PSK_SELECTED) && @@ -674,23 +609,21 @@ key_share_recv_params(gnutls_session_t session, group = _gnutls_tls_id_to_group(gid); if (group != NULL) - _gnutls_handshake_log - ("EXT[%p]: Received key share for %s\n", - session, group->name); + _gnutls_handshake_log( + "EXT[%p]: Received key share for %s\n", + session, group->name); - if (group != NULL - && group == session->internals.cand_group) { + if (group != NULL && + group == session->internals.cand_group) { _gnutls_session_group_set(session, group); - ret = - server_use_key_share(session, group, data, - size); + ret = server_use_key_share(session, group, data, + size); if (ret < 0) return gnutls_assert_val(ret); used_share = 1; break; - } data += size; @@ -716,41 +649,37 @@ key_share_recv_params(gnutls_session_t session, } session->internals.hsk_flags |= HSK_KEY_SHARE_RECEIVED; - } else { /* Client */ + } else { /* Client */ ver = get_version(session); if (unlikely(ver == NULL || ver->key_shares == 0)) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); if (_gnutls_ext_get_msg(session) == GNUTLS_EXT_FLAG_HRR) { - if (unlikely - (!(session-> - internals.hsk_flags & HSK_HRR_RECEIVED))) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + if (unlikely(!(session->internals.hsk_flags & + HSK_HRR_RECEIVED))) + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); DECR_LEN(data_size, 2); gid = _gnutls_read_uint16(data); group = _gnutls_tls_id_to_group(gid); if (group == NULL) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); - _gnutls_handshake_log - ("EXT[%p]: HRR key share with %s\n", session, - group->name); + _gnutls_handshake_log( + "EXT[%p]: HRR key share with %s\n", session, + group->name); /* check if we support it */ - ret = - _gnutls_session_supports_group(session, group->id); + ret = _gnutls_session_supports_group(session, + group->id); if (ret < 0) { - _gnutls_handshake_log - ("EXT[%p]: received share for %s which is disabled\n", - session, group->name); + _gnutls_handshake_log( + "EXT[%p]: received share for %s which is disabled\n", + session, group->name); return gnutls_assert_val(ret); } @@ -769,22 +698,20 @@ key_share_recv_params(gnutls_session_t session, data += 2; if (data_size != size) - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET_LENGTH); group = _gnutls_tls_id_to_group(gid); if (group == NULL) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); /* check if we support it */ ret = _gnutls_session_supports_group(session, group->id); if (ret < 0) { - _gnutls_handshake_log - ("EXT[%p]: received share for %s which is disabled\n", - session, group->name); + _gnutls_handshake_log( + "EXT[%p]: received share for %s which is disabled\n", + session, group->name); return gnutls_assert_val(ret); } @@ -804,16 +731,16 @@ static inline bool pk_type_is_ecdhx(gnutls_pk_algorithm_t pk) return pk == GNUTLS_PK_ECDH_X25519 || pk == GNUTLS_PK_ECDH_X448; } -static inline bool -pk_type_equal(gnutls_pk_algorithm_t a, gnutls_pk_algorithm_t b) +static inline bool pk_type_equal(gnutls_pk_algorithm_t a, + gnutls_pk_algorithm_t b) { return a == b || (pk_type_is_ecdhx(a) && pk_type_is_ecdhx(b)); } /* returns data_size or a negative number on failure */ -static int -key_share_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) +static int key_share_send_params(gnutls_session_t session, + gnutls_buffer_st *extdata) { unsigned i; int ret; @@ -838,33 +765,32 @@ key_share_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) if (ret < 0) return gnutls_assert_val(ret); - if (session->internals.hsk_flags & HSK_HRR_RECEIVED) { /* we know the group */ + if (session->internals.hsk_flags & + HSK_HRR_RECEIVED) { /* we know the group */ group = get_group(session); if (unlikely(group == NULL)) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); ret = client_gen_key_share(session, group, extdata); if (ret == GNUTLS_E_INT_RET_0) - return - gnutls_assert_val - (GNUTLS_E_NO_COMMON_KEY_SHARE); + return gnutls_assert_val( + GNUTLS_E_NO_COMMON_KEY_SHARE); if (ret < 0) return gnutls_assert_val(ret); } else { gnutls_pk_algorithm_t selected_groups[3]; - unsigned max_groups = 2; /* GNUTLS_KEY_SHARE_TOP2 */ + unsigned max_groups = 2; /* GNUTLS_KEY_SHARE_TOP2 */ if (session->internals.flags & GNUTLS_KEY_SHARE_TOP) max_groups = 1; - else if (session-> - internals.flags & GNUTLS_KEY_SHARE_TOP3) + else if (session->internals.flags & + GNUTLS_KEY_SHARE_TOP3) max_groups = 3; assert(max_groups <= sizeof(selected_groups) / - sizeof(selected_groups[0])); + sizeof(selected_groups[0])); /* generate key shares for out top-(max_groups) groups * if they are of different PK type. */ @@ -873,13 +799,12 @@ key_share_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) i++) { unsigned int j; - group = - session->internals.priorities-> - groups.entry[i]; + group = session->internals.priorities->groups + .entry[i]; for (j = 0; j < generated; j++) { - if (pk_type_equal - (group->pk, selected_groups[j])) { + if (pk_type_equal(group->pk, + selected_groups[j])) { break; } } @@ -889,11 +814,10 @@ key_share_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) selected_groups[generated] = group->pk; - ret = - client_gen_key_share(session, group, - extdata); + ret = client_gen_key_share(session, group, + extdata); if (ret == GNUTLS_E_INT_RET_0) - continue; /* no key share for this algorithm */ + continue; /* no key share for this algorithm */ if (ret < 0) return gnutls_assert_val(ret); @@ -908,7 +832,7 @@ key_share_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) _gnutls_write_uint16(extdata->length - length_pos - 2, &extdata->data[length_pos]); - } else { /* server */ + } else { /* server */ ver = get_version(session); if (unlikely(ver == NULL || ver->key_shares == 0)) return gnutls_assert_val(0); @@ -917,32 +841,29 @@ key_share_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) group = session->internals.cand_group; if (group == NULL) - return - gnutls_assert_val - (GNUTLS_E_NO_COMMON_KEY_SHARE); + return gnutls_assert_val( + GNUTLS_E_NO_COMMON_KEY_SHARE); _gnutls_session_group_set(session, group); - _gnutls_handshake_log - ("EXT[%p]: requesting retry with group %s\n", - session, group->name); - ret = - _gnutls_buffer_append_prefix(extdata, 16, - group->tls_id); + _gnutls_handshake_log( + "EXT[%p]: requesting retry with group %s\n", + session, group->name); + ret = _gnutls_buffer_append_prefix(extdata, 16, + group->tls_id); if (ret < 0) return gnutls_assert_val(ret); } else { /* if we are negotiating PSK without DH, do not send a key share */ if ((session->internals.hsk_flags & HSK_PSK_SELECTED) && - (session-> - internals.hsk_flags & HSK_PSK_KE_MODE_PSK)) + (session->internals.hsk_flags & + HSK_PSK_KE_MODE_PSK)) return gnutls_assert_val(0); group = get_group(session); if (unlikely(group == NULL)) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); ret = server_gen_key_share(session, group, extdata); if (ret < 0) diff --git a/lib/ext/key_share.h b/lib/ext/key_share.h index 2b7deb1266..ed9aa16800 100644 --- a/lib/ext/key_share.h +++ b/lib/ext/key_share.h @@ -21,10 +21,10 @@ */ #ifndef GNUTLS_LIB_EXT_KEY_SHARE_H -# define GNUTLS_LIB_EXT_KEY_SHARE_H +#define GNUTLS_LIB_EXT_KEY_SHARE_H -# include +#include extern const hello_ext_entry_st ext_mod_key_share; -#endif /* GNUTLS_LIB_EXT_KEY_SHARE_H */ +#endif /* GNUTLS_LIB_EXT_KEY_SHARE_H */ diff --git a/lib/ext/max_record.c b/lib/ext/max_record.c index d6c076237e..7c6de6157b 100644 --- a/lib/ext/max_record.c +++ b/lib/ext/max_record.c @@ -30,10 +30,10 @@ #include static int _gnutls_max_record_recv_params(gnutls_session_t session, - const uint8_t * data, + const uint8_t *data, size_t data_size); static int _gnutls_max_record_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata); + gnutls_buffer_st *extdata); /* Maps record size to numbers according to the * extensions draft. @@ -47,10 +47,9 @@ const hello_ext_entry_st ext_mod_max_record_size = { .gid = GNUTLS_EXTENSION_MAX_RECORD_SIZE, .client_parse_point = GNUTLS_EXT_TLS, .server_parse_point = GNUTLS_EXT_TLS, - .validity = - GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | - GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_EE | - GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, + .validity = GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | + GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_EE | + GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, .recv_func = _gnutls_max_record_recv_params, .send_func = _gnutls_max_record_send_params }; @@ -65,9 +64,8 @@ const hello_ext_entry_st ext_mod_max_record_size = { * */ -static int -_gnutls_max_record_recv_params(gnutls_session_t session, - const uint8_t * data, size_t data_size) +static int _gnutls_max_record_recv_params(gnutls_session_t session, + const uint8_t *data, size_t data_size) { ssize_t new_size; @@ -86,11 +84,11 @@ _gnutls_max_record_recv_params(gnutls_session_t session, } session->security_parameters.max_record_send_size = - new_size; + new_size; session->security_parameters.max_record_recv_size = - new_size; + new_size; } - } else { /* CLIENT SIDE - we must check if the sent record size is the right one + } else { /* CLIENT SIDE - we must check if the sent record size is the right one */ if (data_size > 0) { if (data_size != 1) { @@ -105,20 +103,17 @@ _gnutls_max_record_recv_params(gnutls_session_t session, return new_size; } - if (new_size != - session->security_parameters. - max_user_record_send_size) { + if (new_size != session->security_parameters + .max_user_record_send_size) { gnutls_assert(); return GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER; } else { - session->security_parameters. - max_record_send_size = new_size; - session->security_parameters. - max_record_recv_size = new_size; + session->security_parameters + .max_record_send_size = new_size; + session->security_parameters + .max_record_recv_size = new_size; } - } - } return 0; @@ -126,9 +121,8 @@ _gnutls_max_record_recv_params(gnutls_session_t session, /* returns data_size or a negative number on failure */ -static int -_gnutls_max_record_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata) +static int _gnutls_max_record_send_params(gnutls_session_t session, + gnutls_buffer_st *extdata) { uint8_t p; int ret; @@ -144,16 +138,16 @@ _gnutls_max_record_send_params(gnutls_session_t session, if (session->security_parameters.max_user_record_send_size != DEFAULT_MAX_RECORD_SIZE) { - ret = _gnutls_mre_record2num - (session->security_parameters. - max_user_record_send_size); + ret = _gnutls_mre_record2num( + session->security_parameters + .max_user_record_send_size); /* it's not an error, as long as we send the * record_size_limit extension with that value */ if (ret < 0) return 0; - p = (uint8_t) ret; + p = (uint8_t)ret; ret = _gnutls_buffer_append_data(extdata, &p, 1); if (ret < 0) return gnutls_assert_val(ret); @@ -161,19 +155,20 @@ _gnutls_max_record_send_params(gnutls_session_t session, return 1; } - } else { /* server side */ + } else { /* server side */ if (session->internals.hsk_flags & HSK_RECORD_SIZE_LIMIT_SENT) return 0; if (session->security_parameters.max_record_recv_size != DEFAULT_MAX_RECORD_SIZE) { - ret = _gnutls_mre_record2num - (session->security_parameters.max_record_recv_size); + ret = _gnutls_mre_record2num( + session->security_parameters + .max_record_recv_size); if (ret < 0) return gnutls_assert_val(ret); - p = (uint8_t) ret; + p = (uint8_t)ret; ret = _gnutls_buffer_append_data(extdata, &p, 1); if (ret < 0) return gnutls_assert_val(ret); @@ -221,7 +216,6 @@ static int _gnutls_mre_record2num(uint16_t record_size) default: return GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER; } - } /** @@ -300,9 +294,9 @@ ssize_t gnutls_record_set_max_size(gnutls_session_t session, size_t size) **/ ssize_t gnutls_record_set_max_recv_size(gnutls_session_t session, size_t size) { - if (size < - (session->internals.allow_small_records ? - MIN_RECORD_SIZE_SMALL : MIN_RECORD_SIZE) || + if (size < (session->internals.allow_small_records ? + MIN_RECORD_SIZE_SMALL : + MIN_RECORD_SIZE) || size > DEFAULT_MAX_RECORD_SIZE) return GNUTLS_E_INVALID_REQUEST; diff --git a/lib/ext/max_record.h b/lib/ext/max_record.h index bda3ecf49d..758c8e12c8 100644 --- a/lib/ext/max_record.h +++ b/lib/ext/max_record.h @@ -21,10 +21,10 @@ */ #ifndef GNUTLS_LIB_EXT_MAX_RECORD_H -# define GNUTLS_LIB_EXT_MAX_RECORD_H +#define GNUTLS_LIB_EXT_MAX_RECORD_H -# include +#include extern const hello_ext_entry_st ext_mod_max_record_size; -#endif /* GNUTLS_LIB_EXT_MAX_RECORD_H */ +#endif /* GNUTLS_LIB_EXT_MAX_RECORD_H */ diff --git a/lib/ext/post_handshake.c b/lib/ext/post_handshake.c index fe89c46169..9985757246 100644 --- a/lib/ext/post_handshake.c +++ b/lib/ext/post_handshake.c @@ -31,10 +31,10 @@ #include "auth/cert.h" static int _gnutls_post_handshake_recv_params(gnutls_session_t session, - const uint8_t * data, + const uint8_t *data, size_t data_size); static int _gnutls_post_handshake_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata); + gnutls_buffer_st *extdata); const hello_ext_entry_st ext_mod_post_handshake = { .name = "Post Handshake Auth", @@ -51,9 +51,9 @@ const hello_ext_entry_st ext_mod_post_handshake = { .cannot_be_overriden = 1 }; -static int -_gnutls_post_handshake_recv_params(gnutls_session_t session, - const uint8_t * data, size_t _data_size) +static int _gnutls_post_handshake_recv_params(gnutls_session_t session, + const uint8_t *data, + size_t _data_size) { const version_entry_st *vers; @@ -72,9 +72,8 @@ _gnutls_post_handshake_recv_params(gnutls_session_t session, /* returns data_size or a negative number on failure */ -static int -_gnutls_post_handshake_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata) +static int _gnutls_post_handshake_send_params(gnutls_session_t session, + gnutls_buffer_st *extdata) { gnutls_certificate_credentials_t cred; const version_entry_st *max; @@ -85,9 +84,9 @@ _gnutls_post_handshake_send_params(gnutls_session_t session, return 0; } - cred = (gnutls_certificate_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_CERTIFICATE); - if (cred == NULL) /* no certificate authentication */ + cred = (gnutls_certificate_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_CERTIFICATE); + if (cred == NULL) /* no certificate authentication */ return gnutls_assert_val(0); max = _gnutls_version_max(session); diff --git a/lib/ext/post_handshake.h b/lib/ext/post_handshake.h index 329965861d..7a1cc7a367 100644 --- a/lib/ext/post_handshake.h +++ b/lib/ext/post_handshake.h @@ -21,10 +21,10 @@ */ #ifndef GNUTLS_LIB_EXT_POST_HANDSHAKE_H -# define GNUTLS_LIB_EXT_POST_HANDSHAKE_H +#define GNUTLS_LIB_EXT_POST_HANDSHAKE_H -# include +#include extern const hello_ext_entry_st ext_mod_post_handshake; -#endif /* GNUTLS_LIB_EXT_POST_HANDSHAKE_H */ +#endif /* GNUTLS_LIB_EXT_POST_HANDSHAKE_H */ diff --git a/lib/ext/pre_shared_key.c b/lib/ext/pre_shared_key.c index b6a442564d..44797bb5ad 100644 --- a/lib/ext/pre_shared_key.c +++ b/lib/ext/pre_shared_key.c @@ -35,8 +35,8 @@ #include #include -static int -compute_psk_from_ticket(const tls13_ticket_st * ticket, gnutls_datum_t * key) +static int compute_psk_from_ticket(const tls13_ticket_st *ticket, + gnutls_datum_t *key) { int ret; @@ -50,8 +50,7 @@ compute_psk_from_ticket(const tls13_ticket_st * ticket, gnutls_datum_t * key) } key->size = ticket->prf->output_size; - ret = _tls13_expand_secret2(ticket->prf, - RESUMPTION_LABEL, + ret = _tls13_expand_secret2(ticket->prf, RESUMPTION_LABEL, sizeof(RESUMPTION_LABEL) - 1, ticket->nonce, ticket->nonce_size, ticket->resumption_master_secret, key->size, @@ -62,9 +61,8 @@ compute_psk_from_ticket(const tls13_ticket_st * ticket, gnutls_datum_t * key) return ret; } -static int -compute_binder_key(const mac_entry_st * prf, - const uint8_t * key, size_t keylen, bool resuming, void *out) +static int compute_binder_key(const mac_entry_st *prf, const uint8_t *key, + size_t keylen, bool resuming, void *out) { int ret; const char ext_label[] = EXT_BINDER_LABEL; @@ -81,21 +79,19 @@ compute_binder_key(const mac_entry_st * prf, return ret; /* Compute Derive-Secret(secret, label, transcript_hash) */ - ret = _tls13_derive_secret2(prf, label, label_len, - NULL, 0, tmp_key, out); + ret = _tls13_derive_secret2(prf, label, label_len, NULL, 0, tmp_key, + out); if (ret < 0) return ret; return 0; } -static int -compute_psk_binder(gnutls_session_t session, - const mac_entry_st * prf, unsigned binders_length, - int exts_length, int ext_offset, - const gnutls_datum_t * psk, - const gnutls_datum_t * client_hello, bool resuming, - void *out) +static int compute_psk_binder(gnutls_session_t session, const mac_entry_st *prf, + unsigned binders_length, int exts_length, + int ext_offset, const gnutls_datum_t *psk, + const gnutls_datum_t *client_hello, bool resuming, + void *out) { int ret; unsigned client_hello_pos, extensions_len_pos; @@ -106,12 +102,11 @@ compute_psk_binder(gnutls_session_t session, if (session->security_parameters.entity == GNUTLS_CLIENT) { if (session->internals.hsk_flags & HSK_HRR_RECEIVED) { - ret = gnutls_buffer_append_data(&handshake_buf, - (const void *) - session-> - internals.handshake_hash_buffer.data, - session-> - internals.handshake_hash_buffer.length); + ret = gnutls_buffer_append_data( + &handshake_buf, + (const void *)session->internals + .handshake_hash_buffer.data, + session->internals.handshake_hash_buffer.length); if (ret < 0) { gnutls_assert(); goto error; @@ -119,10 +114,8 @@ compute_psk_binder(gnutls_session_t session, } client_hello_pos = handshake_buf.length; - ret = - gnutls_buffer_append_data(&handshake_buf, - client_hello->data, - client_hello->size); + ret = gnutls_buffer_append_data( + &handshake_buf, client_hello->data, client_hello->size); if (ret < 0) { gnutls_assert(); goto error; @@ -130,41 +123,38 @@ compute_psk_binder(gnutls_session_t session, /* This is a ClientHello message */ handshake_buf.data[client_hello_pos] = - GNUTLS_HANDSHAKE_CLIENT_HELLO; + GNUTLS_HANDSHAKE_CLIENT_HELLO; /* At this point we have not yet added the binders to the ClientHello, * but we have to overwrite the size field, pretending as if binders * of the correct length were present. */ _gnutls_write_uint24(handshake_buf.length - client_hello_pos + - binders_length - 2, + binders_length - 2, &handshake_buf.data[client_hello_pos + 1]); - _gnutls_write_uint16(handshake_buf.length - client_hello_pos + - binders_length - ext_offset, - &handshake_buf.data[client_hello_pos + - ext_offset]); - extensions_len_pos = - handshake_buf.length - client_hello_pos - exts_length - 2; + _gnutls_write_uint16( + handshake_buf.length - client_hello_pos + + binders_length - ext_offset, + &handshake_buf.data[client_hello_pos + ext_offset]); + extensions_len_pos = handshake_buf.length - client_hello_pos - + exts_length - 2; _gnutls_write_uint16(exts_length + binders_length + 2, &handshake_buf.data[client_hello_pos + extensions_len_pos]); } else { if (session->internals.hsk_flags & HSK_HRR_SENT) { - if (unlikely - (session->internals.handshake_hash_buffer.length <= - client_hello->size)) { - ret = - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + if (unlikely(session->internals.handshake_hash_buffer + .length <= client_hello->size)) { + ret = gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); goto error; } - ret = gnutls_buffer_append_data(&handshake_buf, - session-> - internals.handshake_hash_buffer.data, - session-> - internals.handshake_hash_buffer.length - - client_hello->size); + ret = gnutls_buffer_append_data( + &handshake_buf, + session->internals.handshake_hash_buffer.data, + session->internals.handshake_hash_buffer.length - + client_hello->size); if (ret < 0) { gnutls_assert(); goto error; @@ -172,24 +162,22 @@ compute_psk_binder(gnutls_session_t session, } if (unlikely(client_hello->size <= binders_length)) { - ret = - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + ret = gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); goto error; } - ret = gnutls_buffer_append_data(&handshake_buf, (const void *) - client_hello->data, - client_hello->size - - binders_length); + ret = gnutls_buffer_append_data( + &handshake_buf, (const void *)client_hello->data, + client_hello->size - binders_length); if (ret < 0) { gnutls_assert(); goto error; } } - ret = compute_binder_key(prf, - psk->data, psk->size, resuming, binder_key); + ret = compute_binder_key(prf, psk->data, psk->size, resuming, + binder_key); if (ret < 0) { gnutls_assert(); goto error; @@ -202,24 +190,22 @@ compute_psk_binder(gnutls_session_t session, } ret = 0; - error: +error: _gnutls_buffer_clear(&handshake_buf); return ret; } -static int -generate_early_secrets(gnutls_session_t session, const mac_entry_st * prf) +static int generate_early_secrets(gnutls_session_t session, + const mac_entry_st *prf) { int ret; - ret = - _tls13_derive_secret2(prf, EARLY_TRAFFIC_LABEL, - sizeof(EARLY_TRAFFIC_LABEL) - 1, - session->internals.handshake_hash_buffer.data, - session-> - internals.handshake_hash_buffer_client_hello_len, - session->key.proto.tls13.temp_secret, - session->key.proto.tls13.e_ckey); + ret = _tls13_derive_secret2( + prf, EARLY_TRAFFIC_LABEL, sizeof(EARLY_TRAFFIC_LABEL) - 1, + session->internals.handshake_hash_buffer.data, + session->internals.handshake_hash_buffer_client_hello_len, + session->key.proto.tls13.temp_secret, + session->key.proto.tls13.e_ckey); if (ret < 0) return gnutls_assert_val(ret); @@ -229,14 +215,13 @@ generate_early_secrets(gnutls_session_t session, const mac_entry_st * prf) if (ret < 0) return gnutls_assert_val(ret); - ret = - _tls13_derive_secret2(prf, EARLY_EXPORTER_MASTER_LABEL, - sizeof(EARLY_EXPORTER_MASTER_LABEL) - 1, - session->internals.handshake_hash_buffer.data, - session-> - internals.handshake_hash_buffer_client_hello_len, - session->key.proto.tls13.temp_secret, - session->key.proto.tls13.ap_expkey); + ret = _tls13_derive_secret2( + prf, EARLY_EXPORTER_MASTER_LABEL, + sizeof(EARLY_EXPORTER_MASTER_LABEL) - 1, + session->internals.handshake_hash_buffer.data, + session->internals.handshake_hash_buffer_client_hello_len, + session->key.proto.tls13.temp_secret, + session->key.proto.tls13.ap_expkey); if (ret < 0) return gnutls_assert_val(ret); @@ -279,10 +264,8 @@ int _gnutls_generate_early_secrets_for_psk(gnutls_session_t session) return 0; } -static int -client_send_params(gnutls_session_t session, - gnutls_buffer_t extdata, - const gnutls_psk_client_credentials_t cred) +static int client_send_params(gnutls_session_t session, gnutls_buffer_t extdata, + const gnutls_psk_client_credentials_t cred) { int ret, ext_offset = 0; uint8_t binder_value[MAX_HASH_SIZE]; @@ -304,7 +287,6 @@ client_send_params(gnutls_session_t session, if (((session->internals.flags & GNUTLS_NO_TICKETS) || session->internals.tls13_ticket.ticket.data == NULL) && (!cred || !_gnutls_have_psk_credentials(cred, session))) { - return 0; } @@ -319,7 +301,6 @@ client_send_params(gnutls_session_t session, /* First, let's see if we have a session ticket to send */ if (!(session->internals.flags & GNUTLS_NO_TICKETS) && ticket->ticket.data != NULL) { - /* We found a session ticket */ if (unlikely(ticket->prf == NULL)) { tls13_ticket_deinit(ticket); @@ -353,20 +334,16 @@ client_send_params(gnutls_session_t session, /* Calculate obfuscated ticket age, in milliseconds, mod 2^32 */ ob_ticket_age = ticket_age + ticket->age_add; - if ((ret = _gnutls_buffer_append_data_prefix(extdata, 16, - ticket-> - ticket.data, - ticket-> - ticket.size)) < - 0) { + if ((ret = _gnutls_buffer_append_data_prefix( + extdata, 16, ticket->ticket.data, + ticket->ticket.size)) < 0) { gnutls_assert(); goto cleanup; } /* Now append the obfuscated ticket age */ - if ((ret = - _gnutls_buffer_append_prefix(extdata, 32, - ob_ticket_age)) < 0) { + if ((ret = _gnutls_buffer_append_prefix(extdata, 32, + ob_ticket_age)) < 0) { gnutls_assert(); goto cleanup; } @@ -375,23 +352,21 @@ client_send_params(gnutls_session_t session, binders_len += 1 + _gnutls_mac_get_algo_len(prf_res); } - ignore_ticket: +ignore_ticket: if (cred && _gnutls_have_psk_credentials(cred, session)) { gnutls_datum_t tkey; if (cred->binder_algo == NULL) { gnutls_assert(); - ret = - gnutls_assert_val - (GNUTLS_E_INSUFFICIENT_CREDENTIALS); + ret = gnutls_assert_val( + GNUTLS_E_INSUFFICIENT_CREDENTIALS); goto cleanup; } prf_psk = cred->binder_algo; - ret = - _gnutls_find_psk_key(session, cred, &username, &tkey, - &free_username); + ret = _gnutls_find_psk_key(session, cred, &username, &tkey, + &free_username); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -404,8 +379,8 @@ client_send_params(gnutls_session_t session, if (!free_username) { /* we need to copy the key */ - ret = - _gnutls_set_datum(&user_key, tkey.data, tkey.size); + ret = _gnutls_set_datum(&user_key, tkey.data, + tkey.size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -415,9 +390,8 @@ client_send_params(gnutls_session_t session, user_key.size = tkey.size; } - ret = - _gnutls_auth_info_init(session, GNUTLS_CRD_PSK, - sizeof(psk_auth_info_st), 1); + ret = _gnutls_auth_info_init(session, GNUTLS_CRD_PSK, + sizeof(psk_auth_info_st), 1); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -432,10 +406,8 @@ client_send_params(gnutls_session_t session, goto cleanup; } - if ((ret = _gnutls_buffer_append_data_prefix(extdata, 16, - username.data, - username.size)) < - 0) { + if ((ret = _gnutls_buffer_append_data_prefix( + extdata, 16, username.data, username.size)) < 0) { gnutls_assert(); goto cleanup; } @@ -465,7 +437,7 @@ client_send_params(gnutls_session_t session, /* Compute the binders. extdata->data points to the start * of this client hello. */ assert(extdata->length >= sizeof(mbuffer_st)); - assert(ext_offset >= (ssize_t) sizeof(mbuffer_st)); + assert(ext_offset >= (ssize_t)sizeof(mbuffer_st)); ext_offset -= sizeof(mbuffer_st); client_hello_len = extdata->length - sizeof(mbuffer_st); @@ -483,10 +455,9 @@ client_send_params(gnutls_session_t session, client_hello.data = extdata->data + sizeof(mbuffer_st); client_hello.size = client_hello_len; - ret = compute_psk_binder(session, prf_res, - binders_len, binders_pos, - ext_offset, &rkey, &client_hello, 1, - binder_value); + ret = compute_psk_binder(session, prf_res, binders_len, + binders_pos, ext_offset, &rkey, + &client_hello, 1, binder_value); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -502,16 +473,15 @@ client_send_params(gnutls_session_t session, session->key.binders[next_idx].resumption = 1; session->key.binders[next_idx].idx = next_idx; - _gnutls_handshake_log - ("EXT[%p]: sent PSK resumption identity (%d)\n", session, - next_idx); + _gnutls_handshake_log( + "EXT[%p]: sent PSK resumption identity (%d)\n", session, + next_idx); next_idx++; /* Add the binder */ - ret = - _gnutls_buffer_append_data_prefix(extdata, 8, binder_value, - prf_res->output_size); + ret = _gnutls_buffer_append_data_prefix( + extdata, 8, binder_value, prf_res->output_size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -526,10 +496,9 @@ client_send_params(gnutls_session_t session, client_hello.data = extdata->data + sizeof(mbuffer_st); client_hello.size = client_hello_len; - ret = compute_psk_binder(session, prf_psk, - binders_len, binders_pos, - ext_offset, &user_key, &client_hello, - 0, binder_value); + ret = compute_psk_binder(session, prf_psk, binders_len, + binders_pos, ext_offset, &user_key, + &client_hello, 0, binder_value); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -551,9 +520,8 @@ client_send_params(gnutls_session_t session, next_idx++; /* Add the binder */ - ret = - _gnutls_buffer_append_data_prefix(extdata, 8, binder_value, - prf_psk->output_size); + ret = _gnutls_buffer_append_data_prefix( + extdata, 8, binder_value, prf_psk->output_size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -562,7 +530,7 @@ client_send_params(gnutls_session_t session, ret = 0; - cleanup: +cleanup: if (free_username) _gnutls_free_datum(&username); @@ -659,19 +627,16 @@ static int server_recv_params(gnutls_session_t session, resuming = 1; break; - } else if (pskcred && - psk.ob_ticket_age == 0 && - psk.identity.size > 0 - && psk.identity.size <= MAX_USERNAME_SIZE) { + } else if (pskcred && psk.ob_ticket_age == 0 && + psk.identity.size > 0 && + psk.identity.size <= MAX_USERNAME_SIZE) { prf = pskcred->binder_algo; /* this fails only on configuration errors; as such we always * return its error code in that case */ - ret = - _gnutls_psk_pwd_find_entry(session, - (char *)psk. - identity.data, - psk.identity.size, &key); + ret = _gnutls_psk_pwd_find_entry( + session, (char *)psk.identity.data, + psk.identity.size, &key); if (ret < 0) return gnutls_assert_val(ret); @@ -682,9 +647,8 @@ static int server_recv_params(gnutls_session_t session, _gnutls13_psk_ext_iter_init(&psk_iter, &psk_parser); for (i = 0; i <= psk_index; i++) { - ret = - _gnutls13_psk_ext_iter_next_binder(&psk_iter, - &binder_recvd); + ret = _gnutls13_psk_ext_iter_next_binder(&psk_iter, + &binder_recvd); if (ret < 0) { gnutls_assert(); /* We couldn't extract binder */ @@ -730,9 +694,8 @@ static int server_recv_params(gnutls_session_t session, if (!resuming) { assert(psk.identity.size <= MAX_USERNAME_SIZE); - ret = - _gnutls_auth_info_init(session, GNUTLS_CRD_PSK, - sizeof(psk_auth_info_st), 1); + ret = _gnutls_auth_info_init(session, GNUTLS_CRD_PSK, + sizeof(psk_auth_info_st), 1); if (ret < 0) { gnutls_assert(); goto fail; @@ -747,9 +710,9 @@ static int server_recv_params(gnutls_session_t session, goto fail; } - _gnutls_handshake_log - ("EXT[%p]: selected PSK identity: %s (%d)\n", session, - info->username, psk_index); + _gnutls_handshake_log( + "EXT[%p]: selected PSK identity: %s (%d)\n", session, + info->username, psk_index); /* We currently only support early data in resuming connection, * due to lack of API function to associate encryption @@ -759,28 +722,28 @@ static int server_recv_params(gnutls_session_t session, } else { if (session->internals.hsk_flags & HSK_EARLY_DATA_IN_FLIGHT) { if (session->internals.anti_replay) { - ret = - _gnutls_anti_replay_check - (session->internals.anti_replay, ticket_age, - &ticket_creation_time, &binder_recvd); + ret = _gnutls_anti_replay_check( + session->internals.anti_replay, + ticket_age, &ticket_creation_time, + &binder_recvd); if (ret < 0) { refuse_early_data = true; - _gnutls_handshake_log - ("EXT[%p]: replay detected; rejecting early data\n", - session); + _gnutls_handshake_log( + "EXT[%p]: replay detected; rejecting early data\n", + session); } } else { refuse_early_data = true; - _gnutls_handshake_log - ("EXT[%p]: anti-replay is not enabled; rejecting early data\n", - session); + _gnutls_handshake_log( + "EXT[%p]: anti-replay is not enabled; rejecting early data\n", + session); } } session->internals.resumed = true; - _gnutls_handshake_log - ("EXT[%p]: selected resumption PSK identity (%d)\n", - session, psk_index); + _gnutls_handshake_log( + "EXT[%p]: selected resumption PSK identity (%d)\n", + session, psk_index); } session->internals.hsk_flags |= HSK_PSK_SELECTED; @@ -810,7 +773,7 @@ static int server_recv_params(gnutls_session_t session, return 0; - fail: +fail: gnutls_free(key.data); return ret; } @@ -855,11 +818,11 @@ static int _gnutls_psk_send_params(gnutls_session_t session, if (session->internals.hsk_flags & HSK_PSK_KE_MODES_SENT) { cred = (gnutls_psk_client_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_PSK); + _gnutls_get_cred(session, GNUTLS_CRD_PSK); } - if ((session->internals.flags & GNUTLS_NO_TICKETS) - && !session->internals.priorities->have_psk) + if ((session->internals.flags & GNUTLS_NO_TICKETS) && + !session->internals.priorities->have_psk) return 0; return client_send_params(session, extdata, cred); @@ -869,8 +832,8 @@ static int _gnutls_psk_send_params(gnutls_session_t session, if (!vers || !vers->tls13_sem) return 0; - if ((session->internals.flags & GNUTLS_NO_TICKETS) - && !session->internals.priorities->have_psk) + if ((session->internals.flags & GNUTLS_NO_TICKETS) && + !session->internals.priorities->have_psk) return 0; if (session->internals.hsk_flags & HSK_PSK_KE_MODES_RECEIVED) @@ -911,23 +874,22 @@ static int _gnutls_psk_recv_params(gnutls_session_t session, if (session->internals.hsk_flags & HSK_PSK_KE_MODES_SENT) { uint16_t selected_identity = _gnutls_read_uint16(data); - for (i = 0; - i < - sizeof(session->key.binders) / - sizeof(session->key.binders[0]); i++) { - if (session->key.binders[i].prf != NULL - && session->key.binders[i].idx == - selected_identity) { + for (i = 0; i < sizeof(session->key.binders) / + sizeof(session->key.binders[0]); + i++) { + if (session->key.binders[i].prf != NULL && + session->key.binders[i].idx == + selected_identity) { if (session->key.binders[i].resumption) { session->internals.resumed = - true; - _gnutls_handshake_log - ("EXT[%p]: selected PSK-resumption mode\n", - session); + true; + _gnutls_handshake_log( + "EXT[%p]: selected PSK-resumption mode\n", + session); } else { - _gnutls_handshake_log - ("EXT[%p]: selected PSK mode\n", - session); + _gnutls_handshake_log( + "EXT[%p]: selected PSK mode\n", + session); } /* different PSK is selected, than the one we calculated early secrets */ @@ -935,47 +897,43 @@ static int _gnutls_psk_recv_params(gnutls_session_t session, /* ensure that selected binder is set on (our) index zero */ swap_binders(session); - ret = - _gnutls_generate_early_secrets_for_psk - (session); + ret = _gnutls_generate_early_secrets_for_psk( + session); if (ret < 0) - return - gnutls_assert_val - (ret); + return gnutls_assert_val( + ret); } session->internals.hsk_flags |= - HSK_PSK_SELECTED; + HSK_PSK_SELECTED; } } return 0; } else { - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION); } } else { if (session->internals.hsk_flags & HSK_PSK_KE_MODES_RECEIVED) { - if (session-> - internals.hsk_flags & HSK_PSK_KE_MODE_INVALID) { + if (session->internals.hsk_flags & + HSK_PSK_KE_MODE_INVALID) { /* We received a "psk_ke_modes" extension, but with a value we don't support */ return 0; } pskcred = (gnutls_psk_server_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_PSK); + _gnutls_get_cred(session, GNUTLS_CRD_PSK); /* If there are no PSK credentials, this extension is not applicable, * so we return zero. */ - if (pskcred == NULL - && (session->internals.flags & GNUTLS_NO_TICKETS)) + if (pskcred == NULL && + (session->internals.flags & GNUTLS_NO_TICKETS)) return 0; return server_recv_params(session, data, len, pskcred); } else { - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION); } } } @@ -986,9 +944,8 @@ const hello_ext_entry_st ext_mod_pre_shared_key = { .gid = GNUTLS_EXTENSION_PRE_SHARED_KEY, .client_parse_point = GNUTLS_EXT_TLS, .server_parse_point = GNUTLS_EXT_TLS, - .validity = - GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_CLIENT_HELLO | - GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO, + .validity = GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_CLIENT_HELLO | + GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO, .send_func = _gnutls_psk_send_params, .recv_func = _gnutls_psk_recv_params }; diff --git a/lib/ext/pre_shared_key.h b/lib/ext/pre_shared_key.h index 30444eda76..496d275a7f 100644 --- a/lib/ext/pre_shared_key.h +++ b/lib/ext/pre_shared_key.h @@ -1,20 +1,20 @@ #ifndef GNUTLS_LIB_EXT_PRE_SHARED_KEY_H -# define GNUTLS_LIB_EXT_PRE_SHARED_KEY_H +#define GNUTLS_LIB_EXT_PRE_SHARED_KEY_H -# include "auth/psk.h" -# include -# include "tls13/session_ticket.h" +#include "auth/psk.h" +#include +#include "tls13/session_ticket.h" -# define PRE_SHARED_KEY_TLS_ID 41 +#define PRE_SHARED_KEY_TLS_ID 41 extern const hello_ext_entry_st ext_mod_pre_shared_key; -inline static -unsigned _gnutls_have_psk_credentials(const gnutls_psk_client_credentials_t - cred, gnutls_session_t session) +inline static unsigned +_gnutls_have_psk_credentials(const gnutls_psk_client_credentials_t cred, + gnutls_session_t session) { - if ((cred->get_function || cred->username.data) - && session->internals.priorities->have_psk) + if ((cred->get_function || cred->username.data) && + session->internals.priorities->have_psk) return 1; else return 0; @@ -22,4 +22,4 @@ unsigned _gnutls_have_psk_credentials(const gnutls_psk_client_credentials_t int _gnutls_generate_early_secrets_for_psk(gnutls_session_t session); -#endif /* GNUTLS_LIB_EXT_PRE_SHARED_KEY_H */ +#endif /* GNUTLS_LIB_EXT_PRE_SHARED_KEY_H */ diff --git a/lib/ext/psk_ke_modes.c b/lib/ext/psk_ke_modes.c index be57e7c38f..961d505306 100644 --- a/lib/ext/psk_ke_modes.c +++ b/lib/ext/psk_ke_modes.c @@ -28,8 +28,8 @@ #define PSK_KE 0 #define PSK_DHE_KE 1 -static int -psk_ke_modes_send_params(gnutls_session_t session, gnutls_buffer_t extdata) +static int psk_ke_modes_send_params(gnutls_session_t session, + gnutls_buffer_t extdata) { int ret; const version_entry_st *vers; @@ -58,18 +58,20 @@ psk_ke_modes_send_params(gnutls_session_t session, gnutls_buffer_t extdata) * prioritization when negotiating PSK or DHE-PSK. Receiving servers would * very likely respect our prioritization if they parse the message serially. */ pos = 0; - for (i = 0; i < session->internals.priorities->_kx.num_priorities; i++) { + for (i = 0; i < session->internals.priorities->_kx.num_priorities; + i++) { if (session->internals.priorities->_kx.priorities[i] == - GNUTLS_KX_PSK && !have_psk) { + GNUTLS_KX_PSK && + !have_psk) { assert(pos <= 1); data[pos++] = PSK_KE; session->internals.hsk_flags |= HSK_PSK_KE_MODE_PSK; have_psk = 1; - } else - if ((session->internals.priorities->_kx.priorities[i] == - GNUTLS_KX_DHE_PSK - || session->internals.priorities->_kx.priorities[i] == - GNUTLS_KX_ECDHE_PSK) && !have_dhpsk) { + } else if ((session->internals.priorities->_kx.priorities[i] == + GNUTLS_KX_DHE_PSK || + session->internals.priorities->_kx.priorities[i] == + GNUTLS_KX_ECDHE_PSK) && + !have_dhpsk) { assert(pos <= 1); data[pos++] = PSK_DHE_KE; session->internals.hsk_flags |= HSK_PSK_KE_MODE_DHE_PSK; @@ -107,9 +109,8 @@ psk_ke_modes_send_params(gnutls_session_t session, gnutls_buffer_t extdata) * just verifies that a "psk_key_exchange_modes" extension was received, * and that it contains the value one. */ -static int -psk_ke_modes_recv_params(gnutls_session_t session, - const unsigned char *data, size_t len) +static int psk_ke_modes_recv_params(gnutls_session_t session, + const unsigned char *data, size_t len) { uint8_t ke_modes_len; const version_entry_st *vers = get_version(session); @@ -132,9 +133,8 @@ psk_ke_modes_recv_params(gnutls_session_t session, return gnutls_assert_val(0); } - cred = - (gnutls_psk_server_credentials_t) _gnutls_get_cred(session, - GNUTLS_CRD_PSK); + cred = (gnutls_psk_server_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_PSK); if (cred == NULL && (session->internals.flags & GNUTLS_NO_TICKETS)) { session->internals.hsk_flags |= HSK_PSK_KE_MODE_INVALID; return gnutls_assert_val(0); @@ -143,15 +143,17 @@ psk_ke_modes_recv_params(gnutls_session_t session, DECR_LEN(len, 1); ke_modes_len = *(data++); - for (i = 0; i < session->internals.priorities->_kx.num_priorities; i++) { + for (i = 0; i < session->internals.priorities->_kx.num_priorities; + i++) { if (session->internals.priorities->_kx.priorities[i] == - GNUTLS_KX_PSK && psk_pos == MAX_POS) { + GNUTLS_KX_PSK && + psk_pos == MAX_POS) { psk_pos = i; - } else - if ((session->internals.priorities->_kx.priorities[i] == - GNUTLS_KX_DHE_PSK - || session->internals.priorities->_kx.priorities[i] == - GNUTLS_KX_ECDHE_PSK) && dhpsk_pos == MAX_POS) { + } else if ((session->internals.priorities->_kx.priorities[i] == + GNUTLS_KX_DHE_PSK || + session->internals.priorities->_kx.priorities[i] == + GNUTLS_KX_ECDHE_PSK) && + dhpsk_pos == MAX_POS) { dhpsk_pos = i; } @@ -180,25 +182,23 @@ psk_ke_modes_recv_params(gnutls_session_t session, } if (session->internals.priorities->server_precedence) { - if (dhpsk_pos != MAX_POS && cli_dhpsk_pos != MAX_POS - && (dhpsk_pos < psk_pos || cli_psk_pos == MAX_POS)) + if (dhpsk_pos != MAX_POS && cli_dhpsk_pos != MAX_POS && + (dhpsk_pos < psk_pos || cli_psk_pos == MAX_POS)) session->internals.hsk_flags |= HSK_PSK_KE_MODE_DHE_PSK; - else if (psk_pos != MAX_POS && cli_psk_pos != MAX_POS - && (psk_pos < dhpsk_pos || cli_dhpsk_pos == MAX_POS)) + else if (psk_pos != MAX_POS && cli_psk_pos != MAX_POS && + (psk_pos < dhpsk_pos || cli_dhpsk_pos == MAX_POS)) session->internals.hsk_flags |= HSK_PSK_KE_MODE_PSK; } else { - if (dhpsk_pos != MAX_POS && cli_dhpsk_pos != MAX_POS - && (cli_dhpsk_pos < cli_psk_pos || psk_pos == MAX_POS)) + if (dhpsk_pos != MAX_POS && cli_dhpsk_pos != MAX_POS && + (cli_dhpsk_pos < cli_psk_pos || psk_pos == MAX_POS)) session->internals.hsk_flags |= HSK_PSK_KE_MODE_DHE_PSK; - else if (psk_pos != MAX_POS && cli_psk_pos != MAX_POS - && (cli_psk_pos < cli_dhpsk_pos - || dhpsk_pos == MAX_POS)) + else if (psk_pos != MAX_POS && cli_psk_pos != MAX_POS && + (cli_psk_pos < cli_dhpsk_pos || dhpsk_pos == MAX_POS)) session->internals.hsk_flags |= HSK_PSK_KE_MODE_PSK; } if ((session->internals.hsk_flags & HSK_PSK_KE_MODE_PSK) || (session->internals.hsk_flags & HSK_PSK_KE_MODE_DHE_PSK)) { - return 0; } else { session->internals.hsk_flags |= HSK_PSK_KE_MODE_INVALID; @@ -212,9 +212,8 @@ const hello_ext_entry_st ext_mod_psk_ke_modes = { .gid = GNUTLS_EXTENSION_PSK_KE_MODES, .client_parse_point = GNUTLS_EXT_TLS, .server_parse_point = GNUTLS_EXT_TLS, - .validity = - GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_CLIENT_HELLO | - GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO, + .validity = GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_CLIENT_HELLO | + GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO, .send_func = psk_ke_modes_send_params, .recv_func = psk_ke_modes_recv_params }; diff --git a/lib/ext/psk_ke_modes.h b/lib/ext/psk_ke_modes.h index eb96f09b92..56876a97d8 100644 --- a/lib/ext/psk_ke_modes.h +++ b/lib/ext/psk_ke_modes.h @@ -1,8 +1,8 @@ #ifndef GNUTLS_LIB_EXT_PSK_KE_MODES_H -# define GNUTLS_LIB_EXT_PSK_KE_MODES_H +#define GNUTLS_LIB_EXT_PSK_KE_MODES_H -# include +#include extern const hello_ext_entry_st ext_mod_psk_ke_modes; -#endif /* GNUTLS_LIB_EXT_PSK_KE_MODES_H */ +#endif /* GNUTLS_LIB_EXT_PSK_KE_MODES_H */ diff --git a/lib/ext/record_size_limit.c b/lib/ext/record_size_limit.c index 9b14c5e97f..065469a0bc 100644 --- a/lib/ext/record_size_limit.c +++ b/lib/ext/record_size_limit.c @@ -30,10 +30,10 @@ #include static int _gnutls_record_size_limit_recv_params(gnutls_session_t session, - const uint8_t * data, + const uint8_t *data, size_t data_size); static int _gnutls_record_size_limit_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata); + gnutls_buffer_st *extdata); const hello_ext_entry_st ext_mod_record_size_limit = { .name = "Record Size Limit", @@ -41,17 +41,16 @@ const hello_ext_entry_st ext_mod_record_size_limit = { .gid = GNUTLS_EXTENSION_RECORD_SIZE_LIMIT, .client_parse_point = GNUTLS_EXT_MANDATORY, .server_parse_point = GNUTLS_EXT_MANDATORY, - .validity = - GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | - GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_EE | - GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, + .validity = GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | + GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_EE | + GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, .recv_func = _gnutls_record_size_limit_recv_params, .send_func = _gnutls_record_size_limit_send_params }; -static int -_gnutls_record_size_limit_recv_params(gnutls_session_t session, - const uint8_t * data, size_t data_size) +static int _gnutls_record_size_limit_recv_params(gnutls_session_t session, + const uint8_t *data, + size_t data_size) { ssize_t new_size; const version_entry_st *vers; @@ -68,22 +67,21 @@ _gnutls_record_size_limit_recv_params(gnutls_session_t session, session->internals.hsk_flags |= HSK_RECORD_SIZE_LIMIT_RECEIVED; /* we do not want to accept sizes outside of our supported range */ - if (new_size < - (session->internals.allow_small_records ? - MIN_RECORD_SIZE_SMALL : MIN_RECORD_SIZE)) { + if (new_size < (session->internals.allow_small_records ? + MIN_RECORD_SIZE_SMALL : + MIN_RECORD_SIZE)) { /* for server, reject it by omitting the extension in the reply */ if (session->security_parameters.entity == GNUTLS_SERVER) { - _gnutls_handshake_log - ("EXT[%p]: client requested too small record_size_limit %u; ignoring\n", - session, (unsigned)new_size); + _gnutls_handshake_log( + "EXT[%p]: client requested too small record_size_limit %u; ignoring\n", + session, (unsigned)new_size); return gnutls_assert_val(0); } else { - _gnutls_handshake_log - ("EXT[%p]: server requested too small record_size_limit %u; closing the connection\n", - session, (unsigned)new_size); - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + _gnutls_handshake_log( + "EXT[%p]: server requested too small record_size_limit %u; closing the connection\n", + session, (unsigned)new_size); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); } } @@ -93,7 +91,7 @@ _gnutls_record_size_limit_recv_params(gnutls_session_t session, * indication of the request was accepted by the server */ if (session->security_parameters.entity == GNUTLS_CLIENT) session->security_parameters.max_record_recv_size = - session->security_parameters.max_user_record_recv_size; + session->security_parameters.max_user_record_recv_size; _gnutls_handshake_log("EXT[%p]: record_size_limit %u negotiated\n", session, (unsigned)new_size); @@ -104,24 +102,23 @@ _gnutls_record_size_limit_recv_params(gnutls_session_t session, return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); session->security_parameters.max_record_send_size = - MIN(new_size - vers->tls13_sem, - session->security_parameters.max_user_record_send_size); + MIN(new_size - vers->tls13_sem, + session->security_parameters.max_user_record_send_size); return 0; } /* returns data_size or a negative number on failure */ -static int -_gnutls_record_size_limit_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata) +static int _gnutls_record_size_limit_send_params(gnutls_session_t session, + gnutls_buffer_st *extdata) { int ret; uint16_t send_size; assert(session->security_parameters.max_user_record_recv_size >= 64 && session->security_parameters.max_user_record_recv_size <= - DEFAULT_MAX_RECORD_SIZE); + DEFAULT_MAX_RECORD_SIZE); send_size = session->security_parameters.max_user_record_recv_size; @@ -129,11 +126,10 @@ _gnutls_record_size_limit_send_params(gnutls_session_t session, const version_entry_st *vers; /* if we had received the extension and rejected, don't send it */ - if (session-> - internals.hsk_flags & HSK_RECORD_SIZE_LIMIT_RECEIVED - && !(session-> - internals.hsk_flags & - HSK_RECORD_SIZE_LIMIT_NEGOTIATED)) + if (session->internals.hsk_flags & + HSK_RECORD_SIZE_LIMIT_RECEIVED && + !(session->internals.hsk_flags & + HSK_RECORD_SIZE_LIMIT_NEGOTIATED)) return gnutls_assert_val(0); /* add 1 octet for content type */ diff --git a/lib/ext/record_size_limit.h b/lib/ext/record_size_limit.h index a4efa56da3..da7cade58d 100644 --- a/lib/ext/record_size_limit.h +++ b/lib/ext/record_size_limit.h @@ -21,10 +21,10 @@ */ #ifndef GNUTLS_LIB_EXT_RECORD_SIZE_LIMIT_H -# define GNUTLS_LIB_EXT_RECORD_SIZE_LIMIT_H +#define GNUTLS_LIB_EXT_RECORD_SIZE_LIMIT_H -# include +#include extern const hello_ext_entry_st ext_mod_record_size_limit; -#endif /* GNUTLS_LIB_EXT_RECORD_SIZE_LIMIT_H */ +#endif /* GNUTLS_LIB_EXT_RECORD_SIZE_LIMIT_H */ diff --git a/lib/ext/safe_renegotiation.c b/lib/ext/safe_renegotiation.c index dce2e9bb6a..17964ee538 100644 --- a/lib/ext/safe_renegotiation.c +++ b/lib/ext/safe_renegotiation.c @@ -24,8 +24,8 @@ #include #include "errors.h" -static int _gnutls_sr_recv_params(gnutls_session_t state, - const uint8_t * data, size_t data_size); +static int _gnutls_sr_recv_params(gnutls_session_t state, const uint8_t *data, + size_t data_size); static int _gnutls_sr_send_params(gnutls_session_t state, gnutls_buffer_st *); static void _gnutls_sr_deinit_data(gnutls_ext_priv_data_t priv); @@ -33,9 +33,9 @@ const hello_ext_entry_st ext_mod_sr = { .name = "Safe Renegotiation", .tls_id = 65281, .gid = GNUTLS_EXTENSION_SAFE_RENEGOTIATION, - .validity = - GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | - GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, + .validity = GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | + GNUTLS_EXT_FLAG_CLIENT_HELLO | + GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, .client_parse_point = GNUTLS_EXT_MANDATORY, .server_parse_point = GNUTLS_EXT_MANDATORY, .recv_func = _gnutls_sr_recv_params, @@ -46,9 +46,8 @@ const hello_ext_entry_st ext_mod_sr = { .cannot_be_overriden = 1 }; -int -_gnutls_ext_sr_finished(gnutls_session_t session, void *vdata, - size_t vdata_size, int dir) +int _gnutls_ext_sr_finished(gnutls_session_t session, void *vdata, + size_t vdata_size, int dir) { int ret; sr_ext_st *priv; @@ -59,9 +58,8 @@ _gnutls_ext_sr_finished(gnutls_session_t session, void *vdata, return 0; } - ret = _gnutls_hello_ext_get_priv(session, - GNUTLS_EXTENSION_SAFE_RENEGOTIATION, - &epriv); + ret = _gnutls_hello_ext_get_priv( + session, GNUTLS_EXTENSION_SAFE_RENEGOTIATION, &epriv); if (ret < 0) { gnutls_assert(); /* if a client didn't advertise safe renegotiation, we treat @@ -79,9 +77,10 @@ _gnutls_ext_sr_finished(gnutls_session_t session, void *vdata, return GNUTLS_E_INTERNAL_ERROR; } - if ((session->security_parameters.entity == GNUTLS_CLIENT && dir == 0) - || (session->security_parameters.entity == GNUTLS_SERVER - && dir == 1)) { + if ((session->security_parameters.entity == GNUTLS_CLIENT && + dir == 0) || + (session->security_parameters.entity == GNUTLS_SERVER && + dir == 1)) { priv->client_verify_data_len = vdata_size; memcpy(priv->client_verify_data, vdata, vdata_size); } else { @@ -103,88 +102,86 @@ int _gnutls_ext_sr_verify(gnutls_session_t session) return 0; } - ret = _gnutls_hello_ext_get_priv(session, - GNUTLS_EXTENSION_SAFE_RENEGOTIATION, - &epriv); + ret = _gnutls_hello_ext_get_priv( + session, GNUTLS_EXTENSION_SAFE_RENEGOTIATION, &epriv); if (ret >= 0) priv = epriv; /* Safe renegotiation */ if (priv && priv->safe_renegotiation_received) { - if ((priv->ri_extension_data_len < priv->client_verify_data_len) - || - (memcmp - (priv->ri_extension_data, priv->client_verify_data, - priv->client_verify_data_len))) { + if ((priv->ri_extension_data_len < + priv->client_verify_data_len) || + (memcmp(priv->ri_extension_data, priv->client_verify_data, + priv->client_verify_data_len))) { gnutls_assert(); - _gnutls_handshake_log - ("HSK[%p]: Safe renegotiation failed [1]\n", - session); + _gnutls_handshake_log( + "HSK[%p]: Safe renegotiation failed [1]\n", + session); return GNUTLS_E_SAFE_RENEGOTIATION_FAILED; } if (session->security_parameters.entity == GNUTLS_CLIENT) { if ((priv->ri_extension_data_len != priv->client_verify_data_len + - priv->server_verify_data_len) - || memcmp(priv->ri_extension_data + - priv->client_verify_data_len, - priv->server_verify_data, - priv->server_verify_data_len) != 0) { + priv->server_verify_data_len) || + memcmp(priv->ri_extension_data + + priv->client_verify_data_len, + priv->server_verify_data, + priv->server_verify_data_len) != 0) { gnutls_assert(); - _gnutls_handshake_log - ("HSK[%p]: Safe renegotiation failed [2]\n", - session); + _gnutls_handshake_log( + "HSK[%p]: Safe renegotiation failed [2]\n", + session); return GNUTLS_E_SAFE_RENEGOTIATION_FAILED; } - } else { /* Make sure there are 0 extra bytes */ + } else { /* Make sure there are 0 extra bytes */ if (priv->ri_extension_data_len != priv->client_verify_data_len) { gnutls_assert(); - _gnutls_handshake_log - ("HSK[%p]: Safe renegotiation failed [3]\n", - session); + _gnutls_handshake_log( + "HSK[%p]: Safe renegotiation failed [3]\n", + session); return GNUTLS_E_SAFE_RENEGOTIATION_FAILED; } } - _gnutls_handshake_log - ("HSK[%p]: Safe renegotiation succeeded\n", session); - } else { /* safe renegotiation not received... */ + _gnutls_handshake_log("HSK[%p]: Safe renegotiation succeeded\n", + session); + } else { /* safe renegotiation not received... */ if (priv && priv->connection_using_safe_renegotiation) { gnutls_assert(); - _gnutls_handshake_log - ("HSK[%p]: Peer previously asked for safe renegotiation\n", - session); + _gnutls_handshake_log( + "HSK[%p]: Peer previously asked for safe renegotiation\n", + session); return GNUTLS_E_SAFE_RENEGOTIATION_FAILED; } /* Clients can't tell if it's an initial negotiation */ if (session->internals.initial_negotiation_completed) { if (session->internals.priorities->sr < SR_PARTIAL) { - _gnutls_handshake_log - ("HSK[%p]: Allowing unsafe (re)negotiation\n", - session); + _gnutls_handshake_log( + "HSK[%p]: Allowing unsafe (re)negotiation\n", + session); } else { gnutls_assert(); - _gnutls_handshake_log - ("HSK[%p]: Denying unsafe (re)negotiation\n", - session); + _gnutls_handshake_log( + "HSK[%p]: Denying unsafe (re)negotiation\n", + session); return GNUTLS_E_UNSAFE_RENEGOTIATION_DENIED; } } else { if (session->internals.priorities->sr < SR_SAFE) { - _gnutls_handshake_log - ("HSK[%p]: Allowing unsafe initial negotiation\n", - session); + _gnutls_handshake_log( + "HSK[%p]: Allowing unsafe initial negotiation\n", + session); } else { gnutls_assert(); - _gnutls_handshake_log - ("HSK[%p]: Denying unsafe initial negotiation\n", - session); + _gnutls_handshake_log( + "HSK[%p]: Denying unsafe initial negotiation\n", + session); return GNUTLS_E_SAFE_RENEGOTIATION_FAILED; } } @@ -201,9 +198,8 @@ int _gnutls_ext_sr_recv_cs(gnutls_session_t session) sr_ext_st *priv; gnutls_ext_priv_data_t epriv; - ret = _gnutls_hello_ext_get_priv(session, - GNUTLS_EXTENSION_SAFE_RENEGOTIATION, - &epriv); + ret = _gnutls_hello_ext_get_priv( + session, GNUTLS_EXTENSION_SAFE_RENEGOTIATION, &epriv); if (ret < 0) { set = 1; } @@ -223,9 +219,8 @@ int _gnutls_ext_sr_recv_cs(gnutls_session_t session) _gnutls_hello_ext_save_sr(session); if (set != 0) - _gnutls_hello_ext_set_priv(session, - GNUTLS_EXTENSION_SAFE_RENEGOTIATION, - epriv); + _gnutls_hello_ext_set_priv( + session, GNUTLS_EXTENSION_SAFE_RENEGOTIATION, epriv); return 0; } @@ -236,9 +231,8 @@ int _gnutls_ext_sr_send_cs(gnutls_session_t session) sr_ext_st *priv; gnutls_ext_priv_data_t epriv; - ret = _gnutls_hello_ext_get_priv(session, - GNUTLS_EXTENSION_SAFE_RENEGOTIATION, - &epriv); + ret = _gnutls_hello_ext_get_priv( + session, GNUTLS_EXTENSION_SAFE_RENEGOTIATION, &epriv); if (ret < 0) { set = 1; } @@ -251,17 +245,15 @@ int _gnutls_ext_sr_send_cs(gnutls_session_t session) } epriv = priv; - _gnutls_hello_ext_set_priv(session, - GNUTLS_EXTENSION_SAFE_RENEGOTIATION, - epriv); + _gnutls_hello_ext_set_priv( + session, GNUTLS_EXTENSION_SAFE_RENEGOTIATION, epriv); } return 0; } -static int -_gnutls_sr_recv_params(gnutls_session_t session, - const uint8_t * data, size_t data_size) +static int _gnutls_sr_recv_params(gnutls_session_t session, const uint8_t *data, + size_t data_size) { unsigned int len; sr_ext_st *priv; @@ -272,16 +264,15 @@ _gnutls_sr_recv_params(gnutls_session_t session, return gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET_LENGTH); len = data[0]; - DECR_LEN(data_size, len + 1 /* count the first byte and payload */ ); + DECR_LEN(data_size, len + 1 /* count the first byte and payload */); if (session->internals.priorities->sr == SR_DISABLED) { gnutls_assert(); return 0; } - ret = _gnutls_hello_ext_get_priv(session, - GNUTLS_EXTENSION_SAFE_RENEGOTIATION, - &epriv); + ret = _gnutls_hello_ext_get_priv( + session, GNUTLS_EXTENSION_SAFE_RENEGOTIATION, &epriv); if (ret < 0 && session->security_parameters.entity == GNUTLS_SERVER) { set = 1; } else if (ret < 0) { @@ -297,9 +288,8 @@ _gnutls_sr_recv_params(gnutls_session_t session, } epriv = priv; - _gnutls_hello_ext_set_priv(session, - GNUTLS_EXTENSION_SAFE_RENEGOTIATION, - epriv); + _gnutls_hello_ext_set_priv( + session, GNUTLS_EXTENSION_SAFE_RENEGOTIATION, epriv); } else { priv = epriv; } @@ -332,8 +322,8 @@ _gnutls_sr_recv_params(gnutls_session_t session, return 0; } -static int -_gnutls_sr_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) +static int _gnutls_sr_send_params(gnutls_session_t session, + gnutls_buffer_st *extdata) { /* The format of this extension is a one-byte length of verify data followed * by the verify data itself. Note that the length byte does not include @@ -350,9 +340,8 @@ _gnutls_sr_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) return 0; } - ret = _gnutls_hello_ext_get_priv(session, - GNUTLS_EXTENSION_SAFE_RENEGOTIATION, - &epriv); + ret = _gnutls_hello_ext_get_priv( + session, GNUTLS_EXTENSION_SAFE_RENEGOTIATION, &epriv); if (ret < 0) { set = 1; } @@ -365,9 +354,8 @@ _gnutls_sr_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) } epriv = priv; - _gnutls_hello_ext_set_priv(session, - GNUTLS_EXTENSION_SAFE_RENEGOTIATION, - epriv); + _gnutls_hello_ext_set_priv( + session, GNUTLS_EXTENSION_SAFE_RENEGOTIATION, epriv); } else priv = epriv; @@ -382,19 +370,16 @@ _gnutls_sr_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) if (ret < 0) return gnutls_assert_val(ret); - ret = - _gnutls_buffer_append_data(extdata, - priv->client_verify_data, - priv->client_verify_data_len); + ret = _gnutls_buffer_append_data(extdata, + priv->client_verify_data, + priv->client_verify_data_len); if (ret < 0) return gnutls_assert_val(ret); if (session->security_parameters.entity == GNUTLS_SERVER) { - ret = - _gnutls_buffer_append_data(extdata, - priv->server_verify_data, - priv-> - server_verify_data_len); + ret = _gnutls_buffer_append_data( + extdata, priv->server_verify_data, + priv->server_verify_data_len); if (ret < 0) return gnutls_assert_val(ret); } @@ -427,9 +412,8 @@ unsigned gnutls_safe_renegotiation_status(gnutls_session_t session) sr_ext_st *priv; gnutls_ext_priv_data_t epriv; - ret = _gnutls_hello_ext_get_priv(session, - GNUTLS_EXTENSION_SAFE_RENEGOTIATION, - &epriv); + ret = _gnutls_hello_ext_get_priv( + session, GNUTLS_EXTENSION_SAFE_RENEGOTIATION, &epriv); if (ret < 0) { gnutls_assert(); return 0; diff --git a/lib/ext/safe_renegotiation.h b/lib/ext/safe_renegotiation.h index fc9700c7cf..48ffae7a99 100644 --- a/lib/ext/safe_renegotiation.h +++ b/lib/ext/safe_renegotiation.h @@ -21,21 +21,22 @@ */ #ifndef GNUTLS_LIB_EXT_SAFE_RENEGOTIATION_H -# define GNUTLS_LIB_EXT_SAFE_RENEGOTIATION_H +#define GNUTLS_LIB_EXT_SAFE_RENEGOTIATION_H -# include +#include typedef struct { uint8_t client_verify_data[MAX_VERIFY_DATA_SIZE]; size_t client_verify_data_len; uint8_t server_verify_data[MAX_VERIFY_DATA_SIZE]; size_t server_verify_data_len; - uint8_t ri_extension_data[MAX_VERIFY_DATA_SIZE * 2]; /* max signal is 72 bytes in s->c sslv3 */ + uint8_t ri_extension_data[MAX_VERIFY_DATA_SIZE * + 2]; /* max signal is 72 bytes in s->c sslv3 */ size_t ri_extension_data_len; - unsigned int safe_renegotiation_received:1; - unsigned int initial_negotiation_completed:1; - unsigned int connection_using_safe_renegotiation:1; + unsigned int safe_renegotiation_received : 1; + unsigned int initial_negotiation_completed : 1; + unsigned int connection_using_safe_renegotiation : 1; } sr_ext_st; extern const hello_ext_entry_st ext_mod_sr; @@ -46,4 +47,4 @@ int _gnutls_ext_sr_recv_cs(gnutls_session_t session); int _gnutls_ext_sr_verify(gnutls_session_t session); int _gnutls_ext_sr_send_cs(gnutls_session_t); -#endif /* GNUTLS_LIB_EXT_SAFE_RENEGOTIATION_H */ +#endif /* GNUTLS_LIB_EXT_SAFE_RENEGOTIATION_H */ diff --git a/lib/ext/server_cert_type.c b/lib/ext/server_cert_type.c index 1e489bf308..7f6917dbd6 100644 --- a/lib/ext/server_cert_type.c +++ b/lib/ext/server_cert_type.c @@ -37,10 +37,10 @@ #include "datum.h" static int _gnutls_server_cert_type_recv_params(gnutls_session_t session, - const uint8_t * data, + const uint8_t *data, size_t data_size); static int _gnutls_server_cert_type_send_params(gnutls_session_t session, - gnutls_buffer_st * data); + gnutls_buffer_st *data); const hello_ext_entry_st ext_mod_server_cert_type = { .name = "Server Certificate Type", @@ -48,10 +48,9 @@ const hello_ext_entry_st ext_mod_server_cert_type = { .gid = GNUTLS_EXTENSION_SERVER_CERT_TYPE, .client_parse_point = GNUTLS_EXT_TLS, .server_parse_point = GNUTLS_EXT_TLS, - .validity = GNUTLS_EXT_FLAG_TLS | - GNUTLS_EXT_FLAG_DTLS | - GNUTLS_EXT_FLAG_CLIENT_HELLO | - GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO | GNUTLS_EXT_FLAG_EE, + .validity = GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | + GNUTLS_EXT_FLAG_CLIENT_HELLO | + GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO | GNUTLS_EXT_FLAG_EE, .recv_func = _gnutls_server_cert_type_recv_params, .send_func = _gnutls_server_cert_type_send_params, .pack_func = _gnutls_hello_ext_default_pack, @@ -61,7 +60,7 @@ const hello_ext_entry_st ext_mod_server_cert_type = { }; static int _gnutls_server_cert_type_recv_params(gnutls_session_t session, - const uint8_t * data, + const uint8_t *data, size_t data_size) { int ret; @@ -76,15 +75,15 @@ static int _gnutls_server_cert_type_recv_params(gnutls_session_t session, (_gnutls_get_cred(session, GNUTLS_CRD_CERTIFICATE) == NULL)) return 0; - if (!IS_SERVER(session)) { // client mode - gnutls_datum_t sent_cert_types; // Holds the previously sent cert types + if (!IS_SERVER(session)) { // client mode + gnutls_datum_t + sent_cert_types; // Holds the previously sent cert types /* Compare packet length with expected packet length. For the * client this is a single byte. */ if (data_size != 1) { - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET_LENGTH); } /* The server picked one of the offered cert types if he supports @@ -94,23 +93,22 @@ static int _gnutls_server_cert_type_recv_params(gnutls_session_t session, * we're going to check it nevertheless. */ cert_type = IANA2cert_type(pdata[0]); - _gnutls_handshake_log - ("EXT[%p]: Received a %s server certificate type confirmation from the server.\n", - session, gnutls_certificate_type_get_name(cert_type)); + _gnutls_handshake_log( + "EXT[%p]: Received a %s server certificate type confirmation from the server.\n", + session, gnutls_certificate_type_get_name(cert_type)); // Check validity of cert type if (cert_type == GNUTLS_CRT_UNKNOWN) { - return - gnutls_assert_val - (GNUTLS_E_UNSUPPORTED_CERTIFICATE_TYPE); + return gnutls_assert_val( + GNUTLS_E_UNSUPPORTED_CERTIFICATE_TYPE); } /* Get the cert types that we sent to the server (they were stored * in IANA representation. */ - ret = _gnutls_hello_ext_get_datum(session, - GNUTLS_EXTENSION_SERVER_CERT_TYPE, - &sent_cert_types); + ret = _gnutls_hello_ext_get_datum( + session, GNUTLS_EXTENSION_SERVER_CERT_TYPE, + &sent_cert_types); if (ret < 0) { /* This should not happen and indicate a memory corruption! * Assertion are always on in production code so execution @@ -136,20 +134,20 @@ static int _gnutls_server_cert_type_recv_params(gnutls_session_t session, return ret; - } else { // server mode - gnutls_datum_t cert_types; // Holds the received cert types + } else { // server mode + gnutls_datum_t cert_types; // Holds the received cert types // Compare packet length with expected packet length. DECR_LEN(data_size, 1); if (data[0] != data_size) { - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET_LENGTH); } pdata += 1; // Assign the contents of our data buffer to a gnutls_datum_t - cert_types.data = (uint8_t *) pdata; // Need casting to get rid of 'discards const qualifier' warning + cert_types.data = (uint8_t *) + pdata; // Need casting to get rid of 'discards const qualifier' warning cert_types.size = data_size; // Store the server certificate types in our session @@ -171,15 +169,15 @@ static int _gnutls_server_cert_type_recv_params(gnutls_session_t session, if (cert_type == GNUTLS_CRT_UNKNOWN) continue; - _gnutls_handshake_log - ("EXT[%p]: Checking compatibility of a %s server certificate type that was received from the client.\n", - session, - gnutls_certificate_type_get_name(cert_type)); + _gnutls_handshake_log( + "EXT[%p]: Checking compatibility of a %s server certificate type that was received from the client.\n", + session, + gnutls_certificate_type_get_name(cert_type)); // Check for support of this cert type - if (_gnutls_session_is_cert_type_supported - (session, cert_type, true, - GNUTLS_CTYPE_SERVER) == 0) { + if (_gnutls_session_is_cert_type_supported( + session, cert_type, true, + GNUTLS_CTYPE_SERVER) == 0) { found = true; break; } @@ -203,10 +201,10 @@ static int _gnutls_server_cert_type_recv_params(gnutls_session_t session, } static int _gnutls_server_cert_type_send_params(gnutls_session_t session, - gnutls_buffer_st * data) + gnutls_buffer_st *data) { int ret; - uint8_t cert_type_IANA; // Holds an IANA cert type ID + uint8_t cert_type_IANA; // Holds an IANA cert type ID gnutls_certificate_type_t cert_type; /* Only activate this extension if we have cert credentials set @@ -215,11 +213,12 @@ static int _gnutls_server_cert_type_send_params(gnutls_session_t session, (_gnutls_get_cred(session, GNUTLS_CRD_CERTIFICATE) == NULL)) return 0; - if (!IS_SERVER(session)) { // Client mode - uint8_t cert_types[GNUTLS_CRT_MAX]; // The list with supported (IANA) cert types. Inv: 0 <= cert type Id < 256 + if (!IS_SERVER(session)) { // Client mode + uint8_t cert_types + [GNUTLS_CRT_MAX]; // The list with supported (IANA) cert types. Inv: 0 <= cert type Id < 256 size_t i, num_cert_types = 0; priority_st *cert_priorities; - gnutls_datum_t tmp_cert_types; // For type conversion + gnutls_datum_t tmp_cert_types; // For type conversion // For brevity cert_priorities = &session->internals.priorities->server_ctype; @@ -229,7 +228,8 @@ static int _gnutls_server_cert_type_send_params(gnutls_session_t session, * initialization values apply. This default is currently set to * X.509 in which case we don't enable this extension. */ - if (cert_priorities->num_priorities > 0) { // Priorities are explicitly set + if (cert_priorities->num_priorities > + 0) { // Priorities are explicitly set /* If the certificate priority is explicitly set to only * X.509 (default) then, according to spec we don't send * this extension. We check this here to avoid further work in @@ -238,13 +238,13 @@ static int _gnutls_server_cert_type_send_params(gnutls_session_t session, */ if (cert_priorities->num_priorities == 1 && cert_priorities->priorities[0] == - DEFAULT_CERT_TYPE) { - _gnutls_handshake_log - ("EXT[%p]: Server certificate type was set to default cert type (%s). " - "We therefore do not send this extension.\n", - session, - gnutls_certificate_type_get_name - (DEFAULT_CERT_TYPE)); + DEFAULT_CERT_TYPE) { + _gnutls_handshake_log( + "EXT[%p]: Server certificate type was set to default cert type (%s). " + "We therefore do not send this extension.\n", + session, + gnutls_certificate_type_get_name( + DEFAULT_CERT_TYPE)); // Explicitly set but default ctype, so don't send anything return 0; @@ -260,20 +260,18 @@ static int _gnutls_server_cert_type_send_params(gnutls_session_t session, * structure of the code here. */ for (i = 0; i < cert_priorities->num_priorities; i++) { - cert_type = cert_priorities->priorities[i]; - if (_gnutls_session_is_cert_type_supported - (session, cert_type, false, - GNUTLS_CTYPE_SERVER) == 0) { + if (_gnutls_session_is_cert_type_supported( + session, cert_type, false, + GNUTLS_CTYPE_SERVER) == 0) { /* Check whether we are allowed to store another cert type * in our buffer. In other words, prevent a possible buffer * overflow. This situation can occur when a user sets * duplicate cert types in the priority strings. */ if (num_cert_types >= GNUTLS_CRT_MAX) - return - gnutls_assert_val - (GNUTLS_E_SHORT_MEMORY_BUFFER); + return gnutls_assert_val( + GNUTLS_E_SHORT_MEMORY_BUFFER); // Convert to IANA representation ret = cert_type2IANA(cert_type); @@ -281,18 +279,19 @@ static int _gnutls_server_cert_type_send_params(gnutls_session_t session, if (ret < 0) return gnutls_assert_val(ret); - cert_type_IANA = ret; // For readability + cert_type_IANA = ret; // For readability // Add this cert type to our list with supported types cert_types[num_cert_types] = - cert_type_IANA; + cert_type_IANA; num_cert_types++; - _gnutls_handshake_log - ("EXT[%p]: Server certificate type %s (%d) was queued.\n", - session, - gnutls_certificate_type_get_name - (cert_type), cert_type_IANA); + _gnutls_handshake_log( + "EXT[%p]: Server certificate type %s (%d) was queued.\n", + session, + gnutls_certificate_type_get_name( + cert_type), + cert_type_IANA); } } @@ -301,22 +300,23 @@ static int _gnutls_server_cert_type_send_params(gnutls_session_t session, * extension. Also, if the only supported type is the default type * we do not send this extension (according to RFC7250). */ - if (num_cert_types == 0) { // For now, this should not occur since we only check priorities while pruning. - _gnutls_handshake_log - ("EXT[%p]: Server certificate types were set but none of them is supported. " - "We do not send this extension.\n", - session); + if (num_cert_types == + 0) { // For now, this should not occur since we only check priorities while pruning. + _gnutls_handshake_log( + "EXT[%p]: Server certificate types were set but none of them is supported. " + "We do not send this extension.\n", + session); return 0; } else if (num_cert_types == 1 && IANA2cert_type(cert_types[0]) == - DEFAULT_CERT_TYPE) { - _gnutls_handshake_log - ("EXT[%p]: The only supported server certificate type is (%s) which is the default. " - "We therefore do not send this extension.\n", - session, - gnutls_certificate_type_get_name - (DEFAULT_CERT_TYPE)); + DEFAULT_CERT_TYPE) { + _gnutls_handshake_log( + "EXT[%p]: The only supported server certificate type is (%s) which is the default. " + "We therefore do not send this extension.\n", + session, + gnutls_certificate_type_get_name( + DEFAULT_CERT_TYPE)); return 0; } @@ -328,17 +328,16 @@ static int _gnutls_server_cert_type_send_params(gnutls_session_t session, tmp_cert_types.data = cert_types; tmp_cert_types.size = num_cert_types; - _gnutls_hello_ext_set_datum(session, - GNUTLS_EXTENSION_SERVER_CERT_TYPE, - &tmp_cert_types); + _gnutls_hello_ext_set_datum( + session, GNUTLS_EXTENSION_SERVER_CERT_TYPE, + &tmp_cert_types); /* Serialize the certificate types into a sequence of octets * uint8: length of sequence of cert types (1 octet) * uint8: cert types (0 <= #octets <= 255) */ - ret = _gnutls_buffer_append_data_prefix(data, 8, - cert_types, - num_cert_types); + ret = _gnutls_buffer_append_data_prefix( + data, 8, cert_types, num_cert_types); // Check for errors and cleanup in case of error if (ret < 0) { @@ -348,7 +347,7 @@ static int _gnutls_server_cert_type_send_params(gnutls_session_t session, return num_cert_types + 1; } } - } else { // Server mode + } else { // Server mode // Retrieve negotiated server certificate type and send it cert_type = get_certificate_type(session, GNUTLS_CTYPE_SERVER); ret = cert_type2IANA(cert_type); @@ -356,18 +355,18 @@ static int _gnutls_server_cert_type_send_params(gnutls_session_t session, if (ret < 0) return gnutls_assert_val(ret); - cert_type_IANA = ret; // For readability + cert_type_IANA = ret; // For readability - _gnutls_handshake_log - ("EXT[%p]: Confirming to use a %s server certificate type.\n", - session, gnutls_certificate_type_get_name(cert_type)); + _gnutls_handshake_log( + "EXT[%p]: Confirming to use a %s server certificate type.\n", + session, gnutls_certificate_type_get_name(cert_type)); ret = gnutls_buffer_append_data(data, &cert_type_IANA, 1); if (ret < 0) return gnutls_assert_val(ret); - return 1; // sent one byte + return 1; // sent one byte } // In all other cases don't enable this extension diff --git a/lib/ext/server_cert_type.h b/lib/ext/server_cert_type.h index 18c3417f53..3c15b0b7b8 100644 --- a/lib/ext/server_cert_type.h +++ b/lib/ext/server_cert_type.h @@ -27,10 +27,10 @@ */ #ifndef GNUTLS_LIB_EXT_SERVER_CERT_TYPE_H -# define GNUTLS_LIB_EXT_SERVER_CERT_TYPE_H +#define GNUTLS_LIB_EXT_SERVER_CERT_TYPE_H -# include +#include extern const hello_ext_entry_st ext_mod_server_cert_type; -#endif /* GNUTLS_LIB_EXT_SERVER_CERT_TYPE_H */ +#endif /* GNUTLS_LIB_EXT_SERVER_CERT_TYPE_H */ diff --git a/lib/ext/server_name.c b/lib/ext/server_name.c index e9923c49eb..abd353e6cd 100644 --- a/lib/ext/server_name.c +++ b/lib/ext/server_name.c @@ -30,24 +30,22 @@ #include "hello_ext_lib.h" static int _gnutls_server_name_recv_params(gnutls_session_t session, - const uint8_t * data, + const uint8_t *data, size_t data_size); static int _gnutls_server_name_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata); + gnutls_buffer_st *extdata); -int -_gnutls_server_name_set_raw(gnutls_session_t session, - gnutls_server_name_type_t type, - const void *name, size_t name_length); +int _gnutls_server_name_set_raw(gnutls_session_t session, + gnutls_server_name_type_t type, + const void *name, size_t name_length); const hello_ext_entry_st ext_mod_server_name = { .name = "Server Name Indication", .tls_id = 0, .gid = GNUTLS_EXTENSION_SERVER_NAME, - .validity = - GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | - GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_EE | - GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, + .validity = GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | + GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_EE | + GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, .client_parse_point = GNUTLS_EXT_MANDATORY, .server_parse_point = GNUTLS_EXT_MANDATORY, .recv_func = _gnutls_server_name_recv_params, @@ -67,9 +65,9 @@ const hello_ext_entry_st ext_mod_server_name = { * in the session then it sends the extension to the peer. * */ -static int -_gnutls_server_name_recv_params(gnutls_session_t session, - const uint8_t * data, size_t data_size) +static int _gnutls_server_name_recv_params(gnutls_session_t session, + const uint8_t *data, + size_t data_size) { const unsigned char *p; uint16_t len, type; @@ -80,9 +78,8 @@ _gnutls_server_name_recv_params(gnutls_session_t session, GNUTLS_E_UNEXPECTED_PACKET_LENGTH); len = _gnutls_read_uint16(data); if (len == 0) - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET_LENGTH); if (len != data_size) { gnutls_assert(); @@ -101,39 +98,35 @@ _gnutls_server_name_recv_params(gnutls_session_t session, p += 2; if (len == 0) { - _gnutls_handshake_log - ("HSK[%p]: Received server name size of zero\n", - session); - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + _gnutls_handshake_log( + "HSK[%p]: Received server name size of zero\n", + session); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET_LENGTH); } DECR_LEN(data_size, len); - if (type == 0) { /* NAME_DNS */ + if (type == 0) { /* NAME_DNS */ if (!_gnutls_dnsname_is_valid((char *)p, len)) { - _gnutls_handshake_log - ("HSK[%p]: Server name is not acceptable: '%.*s'\n", - session, (int)len, p); - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_DISALLOWED_NAME); + _gnutls_handshake_log( + "HSK[%p]: Server name is not acceptable: '%.*s'\n", + session, (int)len, p); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_DISALLOWED_NAME); } name.data = (void *)p; name.size = len; - _gnutls_hello_ext_unset_priv(session, - GNUTLS_EXTENSION_SERVER_NAME); - return _gnutls_hello_ext_set_datum(session, - GNUTLS_EXTENSION_SERVER_NAME, - &name); + _gnutls_hello_ext_unset_priv( + session, GNUTLS_EXTENSION_SERVER_NAME); + return _gnutls_hello_ext_set_datum( + session, GNUTLS_EXTENSION_SERVER_NAME, + &name); } p += len; - } - } return 0; @@ -141,16 +134,14 @@ _gnutls_server_name_recv_params(gnutls_session_t session, /* returns data_size or a negative number on failure */ -static int -_gnutls_server_name_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata) +static int _gnutls_server_name_send_params(gnutls_session_t session, + gnutls_buffer_st *extdata) { int total_size = 0, ret; gnutls_datum_t name; - ret = - _gnutls_hello_ext_get_datum(session, GNUTLS_EXTENSION_SERVER_NAME, - &name); + ret = _gnutls_hello_ext_get_datum(session, GNUTLS_EXTENSION_SERVER_NAME, + &name); if (ret < 0) return 0; @@ -181,9 +172,8 @@ _gnutls_server_name_send_params(gnutls_session_t session, _gnutls_debug_log("HSK[%p]: sent server name: '%.*s'\n", session, name.size, name.data); - ret = - _gnutls_buffer_append_data_prefix - (extdata, 16, name.data, name.size); + ret = _gnutls_buffer_append_data_prefix(extdata, 16, name.data, + name.size); if (ret < 0) return gnutls_assert_val(ret); } else { @@ -222,10 +212,9 @@ _gnutls_server_name_send_params(gnutls_session_t session, * decoding error %GNUTLS_E_IDNA_ERROR is returned, otherwise a negative * error code is returned. **/ -int -gnutls_server_name_get(gnutls_session_t session, void *data, - size_t *data_length, - unsigned int *type, unsigned int indx) +int gnutls_server_name_get(gnutls_session_t session, void *data, + size_t *data_length, unsigned int *type, + unsigned int indx) { char *_data = data; gnutls_datum_t name; @@ -239,9 +228,8 @@ gnutls_server_name_get(gnutls_session_t session, void *data, if (indx != 0) return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; - ret = - _gnutls_hello_ext_get_datum(session, GNUTLS_EXTENSION_SERVER_NAME, - &name); + ret = _gnutls_hello_ext_get_datum(session, GNUTLS_EXTENSION_SERVER_NAME, + &name); if (ret < 0) { gnutls_assert(); return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; @@ -253,7 +241,8 @@ gnutls_server_name_get(gnutls_session_t session, void *data, *type = GNUTLS_NAME_DNS; - if (*data_length > name.size) { /* greater since we need one extra byte for the null */ + if (*data_length > + name.size) { /* greater since we need one extra byte for the null */ *data_length = name.size; memcpy(data, name.data, *data_length); @@ -267,15 +256,14 @@ gnutls_server_name_get(gnutls_session_t session, void *data, } ret = 0; - cleanup: +cleanup: return ret; } /* This does not do any conversion not perform any check */ -int -_gnutls_server_name_set_raw(gnutls_session_t session, - gnutls_server_name_type_t type, - const void *name, size_t name_length) +int _gnutls_server_name_set_raw(gnutls_session_t session, + gnutls_server_name_type_t type, + const void *name, size_t name_length) { int ret; gnutls_datum_t dname; @@ -289,9 +277,8 @@ _gnutls_server_name_set_raw(gnutls_session_t session, dname.data = (void *)name; dname.size = name_length; - ret = - _gnutls_hello_ext_set_datum(session, GNUTLS_EXTENSION_SERVER_NAME, - &dname); + ret = _gnutls_hello_ext_set_datum(session, GNUTLS_EXTENSION_SERVER_NAME, + &dname); if (ret < 0) return gnutls_assert_val(ret); @@ -321,10 +308,9 @@ _gnutls_server_name_set_raw(gnutls_session_t session, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, * otherwise a negative error code is returned. **/ -int -gnutls_server_name_set(gnutls_session_t session, - gnutls_server_name_type_t type, - const void *name, size_t name_length) +int gnutls_server_name_set(gnutls_session_t session, + gnutls_server_name_type_t type, const void *name, + size_t name_length) { int ret; gnutls_datum_t idn_name = { NULL, 0 }; @@ -334,7 +320,7 @@ gnutls_server_name_set(gnutls_session_t session, return GNUTLS_E_INVALID_REQUEST; } - if (name_length == 0) { /* unset extension */ + if (name_length == 0) { /* unset extension */ _gnutls_hello_ext_unset_priv(session, GNUTLS_EXTENSION_SERVER_NAME); return 0; @@ -342,9 +328,9 @@ gnutls_server_name_set(gnutls_session_t session, ret = gnutls_idna_map(name, name_length, &idn_name, 0); if (ret < 0) { - _gnutls_debug_log - ("unable to convert name %s to IDNA2008 format\n", - (char *)name); + _gnutls_debug_log( + "unable to convert name %s to IDNA2008 format\n", + (char *)name); return ret; } @@ -362,19 +348,16 @@ unsigned _gnutls_server_name_matches_resumed(gnutls_session_t session) gnutls_datum_t name1, name2; int ret; - ret = - _gnutls_hello_ext_get_datum(session, - GNUTLS_EXTENSION_SERVER_NAME, &name1); - if (ret < 0) { /* no server name in this session */ + ret = _gnutls_hello_ext_get_datum(session, GNUTLS_EXTENSION_SERVER_NAME, + &name1); + if (ret < 0) { /* no server name in this session */ name1.data = NULL; name1.size = 0; } - ret = - _gnutls_hello_ext_get_resumed_datum(session, - GNUTLS_EXTENSION_SERVER_NAME, - &name2); - if (ret < 0) { /* no server name in this session */ + ret = _gnutls_hello_ext_get_resumed_datum( + session, GNUTLS_EXTENSION_SERVER_NAME, &name2); + if (ret < 0) { /* no server name in this session */ name2.data = NULL; name2.size = 0; } diff --git a/lib/ext/server_name.h b/lib/ext/server_name.h index 4730aa444b..b5cdd0ea53 100644 --- a/lib/ext/server_name.h +++ b/lib/ext/server_name.h @@ -22,12 +22,12 @@ */ #ifndef GNUTLS_LIB_EXT_SERVER_NAME_H -# define GNUTLS_LIB_EXT_SERVER_NAME_H +#define GNUTLS_LIB_EXT_SERVER_NAME_H -# include +#include extern const hello_ext_entry_st ext_mod_server_name; unsigned _gnutls_server_name_matches_resumed(gnutls_session_t); -#endif /* GNUTLS_LIB_EXT_SERVER_NAME_H */ +#endif /* GNUTLS_LIB_EXT_SERVER_NAME_H */ diff --git a/lib/ext/session_ticket.c b/lib/ext/session_ticket.c index 07b6bca851..8f79119eca 100644 --- a/lib/ext/session_ticket.c +++ b/lib/ext/session_ticket.c @@ -45,22 +45,22 @@ #include "db.h" static int session_ticket_recv_params(gnutls_session_t session, - const uint8_t * data, size_t data_size); + const uint8_t *data, size_t data_size); static int session_ticket_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata); -static int session_ticket_unpack(gnutls_buffer_st * ps, - gnutls_ext_priv_data_t * _priv); + gnutls_buffer_st *extdata); +static int session_ticket_unpack(gnutls_buffer_st *ps, + gnutls_ext_priv_data_t *_priv); static int session_ticket_pack(gnutls_ext_priv_data_t _priv, - gnutls_buffer_st * ps); + gnutls_buffer_st *ps); static void session_ticket_deinit_data(gnutls_ext_priv_data_t priv); const hello_ext_entry_st ext_mod_session_ticket = { .name = "Session Ticket", .tls_id = 35, .gid = GNUTLS_EXTENSION_SESSION_TICKET, - .validity = - GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | - GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, + .validity = GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | + GNUTLS_EXT_FLAG_CLIENT_HELLO | + GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, /* This extension must be parsed on session resumption as well; see * https://gitlab.com/gnutls/gnutls/issues/841 */ .client_parse_point = GNUTLS_EXT_MANDATORY, @@ -85,8 +85,8 @@ static void deinit_ticket(struct ticket_st *ticket) free(ticket->encrypted_state); } -static int -unpack_ticket(const gnutls_datum_t * ticket_data, struct ticket_st *ticket) +static int unpack_ticket(const gnutls_datum_t *ticket_data, + struct ticket_st *ticket) { const uint8_t *data = ticket_data->data; size_t data_size = ticket_data->size; @@ -130,8 +130,8 @@ unpack_ticket(const gnutls_datum_t * ticket_data, struct ticket_st *ticket) return 0; } -static void -pack_ticket(const struct ticket_st *ticket, gnutls_datum_t * ticket_data) +static void pack_ticket(const struct ticket_st *ticket, + gnutls_datum_t *ticket_data) { uint8_t *p; @@ -156,9 +156,8 @@ pack_ticket(const struct ticket_st *ticket, gnutls_datum_t * ticket_data) memcpy(p, ticket->mac, TICKET_MAC_SIZE); } -static -int digest_ticket(const gnutls_datum_t * key, struct ticket_st *ticket, - uint8_t * digest) +static int digest_ticket(const gnutls_datum_t *key, struct ticket_st *ticket, + uint8_t *digest) { mac_hd_st digest_hd; uint16_t length16; @@ -182,10 +181,9 @@ int digest_ticket(const gnutls_datum_t * key, struct ticket_st *ticket, return 0; } -int -_gnutls_decrypt_session_ticket(gnutls_session_t session, - const gnutls_datum_t * ticket_data, - gnutls_datum_t * state) +int _gnutls_decrypt_session_ticket(gnutls_session_t session, + const gnutls_datum_t *ticket_data, + gnutls_datum_t *state) { cipher_hd_st cipher_hd; gnutls_datum_t IV; @@ -195,11 +193,9 @@ _gnutls_decrypt_session_ticket(gnutls_session_t session, int ret; /* Retrieve ticket decryption keys */ - if (_gnutls_get_session_ticket_decryption_key(session, - ticket_data, - &stek_key_name, - &stek_mac_key, - &stek_cipher_key) < 0) + if (_gnutls_get_session_ticket_decryption_key( + session, ticket_data, &stek_key_name, &stek_mac_key, + &stek_cipher_key) < 0) return gnutls_assert_val(GNUTLS_E_DECRYPTION_FAILED); ret = unpack_ticket(ticket_data, &ticket); @@ -233,10 +229,8 @@ _gnutls_decrypt_session_ticket(gnutls_session_t session, /* Decrypt encrypted_state */ IV.data = ticket.IV; IV.size = TICKET_IV_SIZE; - ret = - _gnutls_cipher_init(&cipher_hd, - cipher_to_entry(TICKET_CIPHER), - &stek_cipher_key, &IV, 0); + ret = _gnutls_cipher_init(&cipher_hd, cipher_to_entry(TICKET_CIPHER), + &stek_cipher_key, &IV, 0); if (ret < 0) { _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); gnutls_assert(); @@ -258,20 +252,18 @@ _gnutls_decrypt_session_ticket(gnutls_session_t session, ret = 0; - cleanup2: +cleanup2: _gnutls_cipher_deinit(&cipher_hd); - cleanup: +cleanup: deinit_ticket(&ticket); return ret; - } -int -_gnutls_encrypt_session_ticket(gnutls_session_t session, - const gnutls_datum_t * state, - gnutls_datum_t * ticket_data) +int _gnutls_encrypt_session_ticket(gnutls_session_t session, + const gnutls_datum_t *state, + gnutls_datum_t *ticket_data) { cipher_hd_st cipher_hd; gnutls_datum_t IV; @@ -283,22 +275,20 @@ _gnutls_encrypt_session_ticket(gnutls_session_t session, int ret; encrypted_state.size = - ((state->size + TICKET_BLOCK_SIZE - - 1) / TICKET_BLOCK_SIZE) * TICKET_BLOCK_SIZE; - result.size = - TICKET_KEY_NAME_SIZE + TICKET_IV_SIZE + 2 + encrypted_state.size + - TICKET_MAC_SIZE; + ((state->size + TICKET_BLOCK_SIZE - 1) / TICKET_BLOCK_SIZE) * + TICKET_BLOCK_SIZE; + result.size = TICKET_KEY_NAME_SIZE + TICKET_IV_SIZE + 2 + + encrypted_state.size + TICKET_MAC_SIZE; result.data = gnutls_calloc(1, result.size); if (!result.data) { return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); } encrypted_state.data = - result.data + TICKET_KEY_NAME_SIZE + TICKET_IV_SIZE + 2; + result.data + TICKET_KEY_NAME_SIZE + TICKET_IV_SIZE + 2; memcpy(encrypted_state.data, state->data, state->size); /* Retrieve ticket encryption keys */ - if (_gnutls_get_session_ticket_encryption_key(session, - &stek_key_name, + if (_gnutls_get_session_ticket_encryption_key(session, &stek_key_name, &stek_mac_key, &stek_cipher_key) < 0) { ret = GNUTLS_E_ENCRYPTION_FAILED; @@ -315,10 +305,8 @@ _gnutls_encrypt_session_ticket(gnutls_session_t session, goto cleanup; } - ret = - _gnutls_cipher_init(&cipher_hd, - cipher_to_entry(TICKET_CIPHER), - &stek_cipher_key, &IV, 1); + ret = _gnutls_cipher_init(&cipher_hd, cipher_to_entry(TICKET_CIPHER), + &stek_cipher_key, &IV, 1); if (ret < 0) { _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); gnutls_assert(); @@ -350,17 +338,16 @@ _gnutls_encrypt_session_ticket(gnutls_session_t session, ticket_data->size = result.size; result.data = NULL; - cleanup2: +cleanup2: _gnutls_cipher_deinit(&cipher_hd); - cleanup: +cleanup: _gnutls_free_datum(&result); return ret; } -static int -unpack_session(gnutls_session_t session, const gnutls_datum_t * state) +static int unpack_session(gnutls_session_t session, const gnutls_datum_t *state) { int ret; @@ -379,16 +366,15 @@ unpack_session(gnutls_session_t session, const gnutls_datum_t * state) return 0; } -static int -session_ticket_recv_params(gnutls_session_t session, - const uint8_t * data, size_t data_size) +static int session_ticket_recv_params(gnutls_session_t session, + const uint8_t *data, size_t data_size) { gnutls_datum_t ticket_data; gnutls_datum_t state; int ret; - if (session-> - internals.flags & (GNUTLS_NO_TICKETS | GNUTLS_NO_TICKETS_TLS12)) + if (session->internals.flags & + (GNUTLS_NO_TICKETS | GNUTLS_NO_TICKETS_TLS12)) return 0; if (session->security_parameters.entity == GNUTLS_SERVER) { @@ -400,9 +386,8 @@ session_ticket_recv_params(gnutls_session_t session, ticket_data.data = (void *)data; ticket_data.size = data_size; - if ((ret = - _gnutls_decrypt_session_ticket(session, &ticket_data, - &state)) == 0) { + if ((ret = _gnutls_decrypt_session_ticket(session, &ticket_data, + &state)) == 0) { ret = unpack_session(session, &state); _gnutls_free_datum(&state); @@ -412,7 +397,7 @@ session_ticket_recv_params(gnutls_session_t session, session->internals.session_ticket_renew = 1; return 0; } - } else { /* Client */ + } else { /* Client */ if (data_size == 0) { session->internals.session_ticket_renew = 1; @@ -426,15 +411,15 @@ session_ticket_recv_params(gnutls_session_t session, /* returns a positive number if we send the extension data, (0) if we do not want to send it, and a negative number on failure. */ -static int -session_ticket_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) +static int session_ticket_send_params(gnutls_session_t session, + gnutls_buffer_st *extdata) { session_ticket_ext_st *priv = NULL; gnutls_ext_priv_data_t epriv; int ret; - if (session-> - internals.flags & (GNUTLS_NO_TICKETS | GNUTLS_NO_TICKETS_TLS12)) + if (session->internals.flags & + (GNUTLS_NO_TICKETS | GNUTLS_NO_TICKETS_TLS12)) return 0; if (session->security_parameters.entity == GNUTLS_SERVER) { @@ -442,10 +427,8 @@ session_ticket_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) return GNUTLS_E_INT_RET_0; } } else { - ret = - _gnutls_hello_ext_get_resumed_priv(session, - GNUTLS_EXTENSION_SESSION_TICKET, - &epriv); + ret = _gnutls_hello_ext_get_resumed_priv( + session, GNUTLS_EXTENSION_SESSION_TICKET, &epriv); if (ret >= 0) priv = epriv; @@ -458,11 +441,9 @@ session_ticket_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) return 0; if (priv->session_ticket_len > 0) { - ret = - _gnutls_buffer_append_data(extdata, - priv->session_ticket, - priv-> - session_ticket_len); + ret = _gnutls_buffer_append_data( + extdata, priv->session_ticket, + priv->session_ticket_len); if (ret < 0) return gnutls_assert_val(ret); @@ -480,8 +461,8 @@ static void session_ticket_deinit_data(gnutls_ext_priv_data_t epriv) gnutls_free(priv); } -static int -session_ticket_pack(gnutls_ext_priv_data_t epriv, gnutls_buffer_st * ps) +static int session_ticket_pack(gnutls_ext_priv_data_t epriv, + gnutls_buffer_st *ps) { session_ticket_ext_st *priv = epriv; int ret; @@ -491,8 +472,8 @@ session_ticket_pack(gnutls_ext_priv_data_t epriv, gnutls_buffer_st * ps) return 0; } -static int -session_ticket_unpack(gnutls_buffer_st * ps, gnutls_ext_priv_data_t * _priv) +static int session_ticket_unpack(gnutls_buffer_st *ps, + gnutls_ext_priv_data_t *_priv) { session_ticket_ext_st *priv = NULL; int ret; @@ -514,7 +495,7 @@ session_ticket_unpack(gnutls_buffer_st * ps, gnutls_ext_priv_data_t * _priv) return 0; - error: +error: gnutls_free(priv); return ret; } @@ -532,7 +513,7 @@ session_ticket_unpack(gnutls_buffer_st * ps, gnutls_ext_priv_data_t * _priv) * * Since: 2.10.0 **/ -int gnutls_session_ticket_key_generate(gnutls_datum_t * key) +int gnutls_session_ticket_key_generate(gnutls_datum_t *key) { if (_gnutls_fips_mode_enabled()) { int ret; @@ -601,14 +582,13 @@ int gnutls_session_ticket_enable_client(gnutls_session_t session) * * Since: 2.10.0 **/ -int -gnutls_session_ticket_enable_server(gnutls_session_t session, - const gnutls_datum_t * key) +int gnutls_session_ticket_enable_server(gnutls_session_t session, + const gnutls_datum_t *key) { int ret; - if (!session || !key || key->size != TICKET_MASTER_KEY_SIZE - || !key->data) { + if (!session || !key || key->size != TICKET_MASTER_KEY_SIZE || + !key->data) { gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; } @@ -641,8 +621,8 @@ int _gnutls_send_new_session_ticket(gnutls_session_t session, int again) gnutls_datum_t ticket_data; if (again == 0) { - if (session->internals.flags & (GNUTLS_NO_TICKETS | - GNUTLS_NO_TICKETS_TLS12)) { + if (session->internals.flags & + (GNUTLS_NO_TICKETS | GNUTLS_NO_TICKETS_TLS12)) { return 0; } if (!session->key.stek_initialized) { @@ -652,17 +632,15 @@ int _gnutls_send_new_session_ticket(gnutls_session_t session, int again) return 0; } - _gnutls_handshake_log - ("HSK[%p]: sending session ticket\n", session); + _gnutls_handshake_log("HSK[%p]: sending session ticket\n", + session); /* XXX: Temporarily set write algorithms to be used. _gnutls_write_connection_state_init() does this job, but it also triggers encryption, while NewSessionTicket should not be encrypted in the record layer. */ - ret = - _gnutls_epoch_set_keys(session, - session->security_parameters. - epoch_next, 0); + ret = _gnutls_epoch_set_keys( + session, session->security_parameters.epoch_next, 0); if (ret < 0) { gnutls_assert(); return ret; @@ -672,10 +650,9 @@ int _gnutls_send_new_session_ticket(gnutls_session_t session, int again) * purposes than the TLS1.0 session ID. Ensure that there is an internally * set value which the server will see on the original and resumed sessions */ if (!session->internals.resumed) { - ret = - _gnutls_generate_session_id - (session->security_parameters.session_id, - &session->security_parameters.session_id_size); + ret = _gnutls_generate_session_id( + session->security_parameters.session_id, + &session->security_parameters.session_id_size); if (ret < 0) { gnutls_assert(); return ret; @@ -683,7 +660,7 @@ int _gnutls_send_new_session_ticket(gnutls_session_t session, int again) } session->security_parameters.epoch_write = - session->security_parameters.epoch_next; + session->security_parameters.epoch_next; /* Pack security parameters. */ ret = _gnutls_session_pack(session, &state); @@ -693,9 +670,8 @@ int _gnutls_send_new_session_ticket(gnutls_session_t session, int again) } /* Generate an encrypted ticket */ - ret = - _gnutls_encrypt_session_ticket(session, &state, - &ticket_data); + ret = _gnutls_encrypt_session_ticket(session, &state, + &ticket_data); session->security_parameters.epoch_write = epoch_saved; _gnutls_free_datum(&state); if (ret < 0) { @@ -703,8 +679,8 @@ int _gnutls_send_new_session_ticket(gnutls_session_t session, int again) return ret; } - bufel = - _gnutls_handshake_alloc(session, 4 + 2 + ticket_data.size); + bufel = _gnutls_handshake_alloc(session, + 4 + 2 + ticket_data.size); if (!bufel) { gnutls_assert(); _gnutls_free_datum(&ticket_data); @@ -746,8 +722,8 @@ int _gnutls_recv_new_session_ticket(gnutls_session_t session) session_ticket_ext_st *priv = NULL; gnutls_ext_priv_data_t epriv; - if (session->internals.flags & (GNUTLS_NO_TICKETS | - GNUTLS_NO_TICKETS_TLS12)) + if (session->internals.flags & + (GNUTLS_NO_TICKETS | GNUTLS_NO_TICKETS_TLS12)) return 0; if (!session->internals.session_ticket_renew) return 0; @@ -760,13 +736,11 @@ int _gnutls_recv_new_session_ticket(gnutls_session_t session) mbuffer_st *bufel = NULL; have = gnutls_record_check_pending(session) + - record_check_unprocessed(session); + record_check_unprocessed(session); if (have != 0) { - bufel = - _mbuffer_head_get_first(&session-> - internals.record_buffer, - NULL); + bufel = _mbuffer_head_get_first( + &session->internals.record_buffer, NULL); } if (have == 0 || (bufel && bufel->type != GNUTLS_HANDSHAKE)) { @@ -776,9 +750,8 @@ int _gnutls_recv_new_session_ticket(gnutls_session_t session) } } - ret = _gnutls_recv_handshake(session, - GNUTLS_HANDSHAKE_NEW_SESSION_TICKET, - 0, &buf); + ret = _gnutls_recv_handshake( + session, GNUTLS_HANDSHAKE_NEW_SESSION_TICKET, 0, &buf); if (ret < 0) return gnutls_assert_val_fatal(ret); @@ -795,8 +768,8 @@ int _gnutls_recv_new_session_ticket(gnutls_session_t session) ticket_len = _gnutls_read_uint16(p); p += 2; - DECR_LENGTH_COM(data_size, ticket_len, ret = - GNUTLS_E_UNEXPECTED_PACKET_LENGTH; + DECR_LENGTH_COM(data_size, ticket_len, + ret = GNUTLS_E_UNEXPECTED_PACKET_LENGTH; goto error); priv = gnutls_calloc(1, sizeof(*priv)); @@ -807,7 +780,7 @@ int _gnutls_recv_new_session_ticket(gnutls_session_t session) } if (ticket_len > 0) { priv->session_ticket = - gnutls_realloc_fast(priv->session_ticket, ticket_len); + gnutls_realloc_fast(priv->session_ticket, ticket_len); if (!priv->session_ticket) { gnutls_free(priv); gnutls_assert(); @@ -820,10 +793,9 @@ int _gnutls_recv_new_session_ticket(gnutls_session_t session) epriv = priv; /* Discard the current session ID. (RFC5077 3.4) */ - ret = - _gnutls_generate_session_id(session->security_parameters.session_id, - &session->security_parameters. - session_id_size); + ret = _gnutls_generate_session_id( + session->security_parameters.session_id, + &session->security_parameters.session_id_size); if (ret < 0) { gnutls_assert(); session_ticket_deinit_data(epriv); @@ -835,10 +807,10 @@ int _gnutls_recv_new_session_ticket(gnutls_session_t session) _gnutls_handshake_log("HSK[%p]: received session ticket\n", session); session->internals.hsk_flags |= HSK_TICKET_RECEIVED; - _gnutls_hello_ext_set_priv(session, - GNUTLS_EXTENSION_SESSION_TICKET, epriv); + _gnutls_hello_ext_set_priv(session, GNUTLS_EXTENSION_SESSION_TICKET, + epriv); - error: +error: _gnutls_buffer_clear(&buf); return ret; diff --git a/lib/ext/session_ticket.h b/lib/ext/session_ticket.h index abc1c06616..660c9d3def 100644 --- a/lib/ext/session_ticket.h +++ b/lib/ext/session_ticket.h @@ -21,9 +21,9 @@ */ #ifndef GNUTLS_LIB_EXT_SESSION_TICKET_H -# define GNUTLS_LIB_EXT_SESSION_TICKET_H +#define GNUTLS_LIB_EXT_SESSION_TICKET_H -# include +#include extern const hello_ext_entry_st ext_mod_session_ticket; @@ -31,11 +31,11 @@ int _gnutls_send_new_session_ticket(gnutls_session_t session, int again); int _gnutls_recv_new_session_ticket(gnutls_session_t session); int _gnutls_encrypt_session_ticket(gnutls_session_t session, - const gnutls_datum_t * state, - gnutls_datum_t * ticket_data); + const gnutls_datum_t *state, + gnutls_datum_t *ticket_data); int _gnutls_decrypt_session_ticket(gnutls_session_t session, - const gnutls_datum_t * ticket_data, - gnutls_datum_t * state); + const gnutls_datum_t *ticket_data, + gnutls_datum_t *state); void _gnutls_session_ticket_disable_server(gnutls_session_t session); -#endif /* GNUTLS_LIB_EXT_SESSION_TICKET_H */ +#endif /* GNUTLS_LIB_EXT_SESSION_TICKET_H */ diff --git a/lib/ext/signature.c b/lib/ext/signature.c index 98aa80f8d3..6bc11260b8 100644 --- a/lib/ext/signature.c +++ b/lib/ext/signature.c @@ -40,29 +40,26 @@ * Patch the extension for them. */ #ifdef ENABLE_GOST -# define GOST_SIG_FIXUP_SCHANNEL +#define GOST_SIG_FIXUP_SCHANNEL #endif -static int _gnutls_signature_algorithm_recv_params(gnutls_session_t - session, - const uint8_t * data, +static int _gnutls_signature_algorithm_recv_params(gnutls_session_t session, + const uint8_t *data, size_t data_size); -static int _gnutls_signature_algorithm_send_params(gnutls_session_t - session, - gnutls_buffer_st * extdata); +static int _gnutls_signature_algorithm_send_params(gnutls_session_t session, + gnutls_buffer_st *extdata); static void signature_algorithms_deinit_data(gnutls_ext_priv_data_t priv); static int signature_algorithms_pack(gnutls_ext_priv_data_t epriv, - gnutls_buffer_st * ps); -static int signature_algorithms_unpack(gnutls_buffer_st * ps, - gnutls_ext_priv_data_t * _priv); + gnutls_buffer_st *ps); +static int signature_algorithms_unpack(gnutls_buffer_st *ps, + gnutls_ext_priv_data_t *_priv); const hello_ext_entry_st ext_mod_sig = { .name = "Signature Algorithms", .tls_id = 13, .gid = GNUTLS_EXTENSION_SIGNATURE_ALGORITHMS, - .validity = - GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | - GNUTLS_EXT_FLAG_CLIENT_HELLO, + .validity = GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | + GNUTLS_EXT_FLAG_CLIENT_HELLO, .client_parse_point = GNUTLS_EXT_TLS, .server_parse_point = GNUTLS_EXT_TLS, .recv_func = _gnutls_signature_algorithm_recv_params, @@ -82,9 +79,8 @@ typedef struct { /* generates a SignatureAndHashAlgorithm structure with length as prefix * by using the setup priorities. */ -int -_gnutls_sign_algorithm_write_params(gnutls_session_t session, - gnutls_buffer_st * extdata) +int _gnutls_sign_algorithm_write_params(gnutls_session_t session, + gnutls_buffer_st *extdata) { uint8_t *p; unsigned int len, i; @@ -104,22 +100,22 @@ _gnutls_sign_algorithm_write_params(gnutls_session_t session, if (HAVE_UNKNOWN_SIGAID(aid)) continue; - if (prev && prev->id[0] == aid->id[0] - && prev->id[1] == aid->id[1]) + if (prev && prev->id[0] == aid->id[0] && + prev->id[1] == aid->id[1]) continue; /* Ignore non-GOST sign types for CertReq */ if (session->security_parameters.cs && - _gnutls_kx_is_vko_gost(session->security_parameters. - cs->kx_algorithm) - && !_sign_is_gost(session->internals.priorities-> - sigalg.entry[i])) + _gnutls_kx_is_vko_gost( + session->security_parameters.cs->kx_algorithm) && + !_sign_is_gost( + session->internals.priorities->sigalg.entry[i])) continue; - _gnutls_handshake_log - ("EXT[%p]: sent signature algo (%d.%d) %s\n", session, - (int)aid->id[0], (int)aid->id[1], - session->internals.priorities->sigalg.entry[i]->name); + _gnutls_handshake_log( + "EXT[%p]: sent signature algo (%d.%d) %s\n", session, + (int)aid->id[0], (int)aid->id[1], + session->internals.priorities->sigalg.entry[i]->name); len += 2; if (unlikely(len >= sizeof(buffer))) { @@ -140,9 +136,8 @@ _gnutls_sign_algorithm_write_params(gnutls_session_t session, /* Parses the Signature Algorithm structure and stores data into * session->security_parameters.extensions. */ -int -_gnutls_sign_algorithm_parse_data(gnutls_session_t session, - const uint8_t * data, size_t data_size) +int _gnutls_sign_algorithm_parse_data(gnutls_session_t session, + const uint8_t *data, size_t data_size) { unsigned int sig, i; sig_ext_st *priv; @@ -152,7 +147,7 @@ _gnutls_sign_algorithm_parse_data(gnutls_session_t session, if (data_size == 0 || data_size % 2 != 0) return gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET_LENGTH); - if (ver == NULL) { /* assume TLS 1.2 semantics */ + if (ver == NULL) { /* assume TLS 1.2 semantics */ ver = version_to_entry(GNUTLS_TLS1_2); if (unlikely(ver == NULL)) { return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); @@ -173,22 +168,21 @@ _gnutls_sign_algorithm_parse_data(gnutls_session_t session, sig = _gnutls_tls_aid_to_sign(id[0], id[1], ver); - _gnutls_handshake_log - ("EXT[%p]: rcvd signature algo (%d.%d) %s\n", session, - (int)id[0], (int)id[1], gnutls_sign_get_name(sig)); + _gnutls_handshake_log( + "EXT[%p]: rcvd signature algo (%d.%d) %s\n", session, + (int)id[0], (int)id[1], gnutls_sign_get_name(sig)); if (sig != GNUTLS_SIGN_UNKNOWN) { if (priv->sign_algorithms_size == MAX_ALGOS) break; priv->sign_algorithms[priv->sign_algorithms_size++] = - sig; + sig; } } epriv = priv; - _gnutls_hello_ext_set_priv(session, - GNUTLS_EXTENSION_SIGNATURE_ALGORITHMS, - epriv); + _gnutls_hello_ext_set_priv( + session, GNUTLS_EXTENSION_SIGNATURE_ALGORITHMS, epriv); return 0; } @@ -202,9 +196,9 @@ _gnutls_sign_algorithm_parse_data(gnutls_session_t session, * then it is an error; */ -static int -_gnutls_signature_algorithm_recv_params(gnutls_session_t session, - const uint8_t * data, size_t data_size) +static int _gnutls_signature_algorithm_recv_params(gnutls_session_t session, + const uint8_t *data, + size_t data_size) { int ret; @@ -227,21 +221,18 @@ _gnutls_signature_algorithm_recv_params(gnutls_session_t session, DECR_LEN(data_size, len); if (data_size > 0) - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET_LENGTH); - ret = - _gnutls_sign_algorithm_parse_data(session, - data + 2, len); + ret = _gnutls_sign_algorithm_parse_data(session, + data + 2, len); if (ret < 0) { gnutls_assert(); return ret; } } else { - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET_LENGTH); } } @@ -250,9 +241,8 @@ _gnutls_signature_algorithm_recv_params(gnutls_session_t session, /* returns data_size or a negative number on failure */ -static int -_gnutls_signature_algorithm_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata) +static int _gnutls_signature_algorithm_send_params(gnutls_session_t session, + gnutls_buffer_st *extdata) { int ret; size_t init_length = extdata->length; @@ -262,12 +252,11 @@ _gnutls_signature_algorithm_send_params(gnutls_session_t session, return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); /* this function sends the client extension data */ - if (session->security_parameters.entity == GNUTLS_CLIENT - && _gnutls_version_has_selectable_sighash(ver)) { + if (session->security_parameters.entity == GNUTLS_CLIENT && + _gnutls_version_has_selectable_sighash(ver)) { if (session->internals.priorities->sigalg.size > 0) { - ret = - _gnutls_sign_algorithm_write_params(session, - extdata); + ret = _gnutls_sign_algorithm_write_params(session, + extdata); if (ret < 0) return gnutls_assert_val(ret); @@ -280,7 +269,7 @@ _gnutls_signature_algorithm_send_params(gnutls_session_t session, } #ifdef GOST_SIG_FIXUP_SCHANNEL -static bool is_gost_sig_present(sig_ext_st * priv) +static bool is_gost_sig_present(sig_ext_st *priv) { unsigned i; const gnutls_sign_entry_st *se; @@ -304,10 +293,8 @@ static bool is_gost_sig_present(sig_ext_st * priv) * returned. */ gnutls_sign_algorithm_t -_gnutls_session_get_sign_algo(gnutls_session_t session, - gnutls_pcert_st * cert, - gnutls_privkey_t privkey, - unsigned client_cert, +_gnutls_session_get_sign_algo(gnutls_session_t session, gnutls_pcert_st *cert, + gnutls_privkey_t privkey, unsigned client_cert, gnutls_kx_algorithm_t kx_algorithm) { unsigned i; @@ -323,10 +310,8 @@ _gnutls_session_get_sign_algo(gnutls_session_t session, cert_algo = gnutls_pubkey_get_pk_algorithm(cert->pubkey, NULL); - ret = - _gnutls_hello_ext_get_priv(session, - GNUTLS_EXTENSION_SIGNATURE_ALGORITHMS, - &epriv); + ret = _gnutls_hello_ext_get_priv( + session, GNUTLS_EXTENSION_SIGNATURE_ALGORITHMS, &epriv); if (ret < 0) priv = NULL; else @@ -341,14 +326,13 @@ _gnutls_session_get_sign_algo(gnutls_session_t session, * as if correct algorithm was sent. */ if (_gnutls_kx_is_vko_gost(kx_algorithm) && - (!priv || - !is_gost_sig_present(priv) || + (!priv || !is_gost_sig_present(priv) || !_gnutls_version_has_selectable_sighash(ver))) { gnutls_digest_algorithm_t dig; - _gnutls_handshake_log - ("EXT[%p]: GOST KX, but no GOST SigAlgs received, patching up.", - session); + _gnutls_handshake_log( + "EXT[%p]: GOST KX, but no GOST SigAlgs received, patching up.", + session); if (cert_algo == GNUTLS_PK_GOST_01) dig = GNUTLS_DIG_GOSTR_94; @@ -361,8 +345,8 @@ _gnutls_session_get_sign_algo(gnutls_session_t session, ret = gnutls_pk_to_sign(cert_algo, dig); - if (!client_cert - && _gnutls_session_sign_algo_enabled(session, ret) < 0) + if (!client_cert && + _gnutls_session_sign_algo_enabled(session, ret) < 0) goto fail; return ret; } @@ -372,8 +356,8 @@ _gnutls_session_get_sign_algo(gnutls_session_t session, /* none set, allow SHA-1 only */ ret = gnutls_pk_to_sign(cert_algo, GNUTLS_DIG_SHA1); - if (!client_cert - && _gnutls_session_sign_algo_enabled(session, ret) < 0) + if (!client_cert && + _gnutls_session_sign_algo_enabled(session, ret) < 0) goto fail; return ret; } @@ -386,17 +370,17 @@ _gnutls_session_get_sign_algo(gnutls_session_t session, _gnutls_handshake_log("checking cert compat with %s\n", se->name); - if (_gnutls_privkey_compatible_with_sig - (privkey, priv->sign_algorithms[i]) == 0) + if (_gnutls_privkey_compatible_with_sig( + privkey, priv->sign_algorithms[i]) == 0) continue; if (sign_supports_cert_pk_algorithm(se, cert_algo) != 0) { - if (_gnutls_pubkey_compatible_with_sig - (session, cert->pubkey, ver, se->id) < 0) + if (_gnutls_pubkey_compatible_with_sig( + session, cert->pubkey, ver, se->id) < 0) continue; - if (_gnutls_session_sign_algo_enabled - (session, se->id) < 0) + if (_gnutls_session_sign_algo_enabled(session, se->id) < + 0) continue; return se->id; @@ -407,12 +391,13 @@ _gnutls_session_get_sign_algo(gnutls_session_t session, * using algorithms we don't always enable by default (e.g., DSA-SHA1), * continue and sign with it. */ if (client_cert) { - _gnutls_audit_log(session, - "No shared signature schemes with peer for client certificate (%s). Is the certificate a legacy one?\n", - gnutls_pk_get_name(cert_algo)); + _gnutls_audit_log( + session, + "No shared signature schemes with peer for client certificate (%s). Is the certificate a legacy one?\n", + gnutls_pk_get_name(cert_algo)); } - fail: +fail: return GNUTLS_SIGN_UNKNOWN; } @@ -420,9 +405,8 @@ _gnutls_session_get_sign_algo(gnutls_session_t session, * This means that it is enabled by the priority functions, * and in case of a server a matching certificate exists. */ -int -_gnutls_session_sign_algo_enabled(gnutls_session_t session, - gnutls_sign_algorithm_t sig) +int _gnutls_session_sign_algo_enabled(gnutls_session_t session, + gnutls_sign_algorithm_t sig) { unsigned i; const version_entry_st *ver = get_version(session); @@ -439,7 +423,8 @@ _gnutls_session_sign_algo_enabled(gnutls_session_t session, const gnutls_sign_entry_st *se; se = _gnutls_sign_to_entry(sig); - if (se == NULL || (se->flags & GNUTLS_SIGN_FLAG_TLS13_OK) == 0) { + if (se == NULL || + (se->flags & GNUTLS_SIGN_FLAG_TLS13_OK) == 0) { gnutls_assert(); goto disallowed; } @@ -447,11 +432,11 @@ _gnutls_session_sign_algo_enabled(gnutls_session_t session, for (i = 0; i < session->internals.priorities->sigalg.size; i++) { if (session->internals.priorities->sigalg.entry[i]->id == sig) { - return 0; /* ok */ + return 0; /* ok */ } } - disallowed: +disallowed: _gnutls_handshake_log("Signature algorithm %s is not enabled\n", gnutls_sign_algorithm_get_name(sig)); return GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM; @@ -462,8 +447,8 @@ static void signature_algorithms_deinit_data(gnutls_ext_priv_data_t priv) gnutls_free(priv); } -static int -signature_algorithms_pack(gnutls_ext_priv_data_t epriv, gnutls_buffer_st * ps) +static int signature_algorithms_pack(gnutls_ext_priv_data_t epriv, + gnutls_buffer_st *ps) { sig_ext_st *priv = epriv; int ret, i; @@ -475,9 +460,8 @@ signature_algorithms_pack(gnutls_ext_priv_data_t epriv, gnutls_buffer_st * ps) return 0; } -static int -signature_algorithms_unpack(gnutls_buffer_st * ps, - gnutls_ext_priv_data_t * _priv) +static int signature_algorithms_unpack(gnutls_buffer_st *ps, + gnutls_ext_priv_data_t *_priv) { sig_ext_st *priv; int i, ret; @@ -499,7 +483,7 @@ signature_algorithms_unpack(gnutls_buffer_st * ps, return 0; - error: +error: gnutls_free(priv); return ret; } @@ -525,9 +509,8 @@ signature_algorithms_unpack(gnutls_buffer_st * ps, * * Since: 2.10.0 **/ -int -gnutls_sign_algorithm_get_requested(gnutls_session_t session, - size_t indx, gnutls_sign_algorithm_t * algo) +int gnutls_sign_algorithm_get_requested(gnutls_session_t session, size_t indx, + gnutls_sign_algorithm_t *algo) { const version_entry_st *ver = get_version(session); sig_ext_st *priv; @@ -537,18 +520,16 @@ gnutls_sign_algorithm_get_requested(gnutls_session_t session, if (unlikely(ver == NULL)) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - ret = - _gnutls_hello_ext_get_priv(session, - GNUTLS_EXTENSION_SIGNATURE_ALGORITHMS, - &epriv); + ret = _gnutls_hello_ext_get_priv( + session, GNUTLS_EXTENSION_SIGNATURE_ALGORITHMS, &epriv); if (ret < 0) { gnutls_assert(); return ret; } priv = epriv; - if (!_gnutls_version_has_selectable_sighash(ver) - || priv->sign_algorithms_size == 0) { + if (!_gnutls_version_has_selectable_sighash(ver) || + priv->sign_algorithms_size == 0) { return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; } diff --git a/lib/ext/signature.h b/lib/ext/signature.h index 071dfd3658..9431665e3a 100644 --- a/lib/ext/signature.h +++ b/lib/ext/signature.h @@ -21,25 +21,23 @@ */ #ifndef GNUTLS_LIB_EXT_SIGNATURE_H -# define GNUTLS_LIB_EXT_SIGNATURE_H +#define GNUTLS_LIB_EXT_SIGNATURE_H /* signature algorithms extension */ -# include +#include extern const hello_ext_entry_st ext_mod_sig; gnutls_sign_algorithm_t -_gnutls_session_get_sign_algo(gnutls_session_t session, - gnutls_pcert_st * cert, - gnutls_privkey_t privkey, - unsigned client_cert, +_gnutls_session_get_sign_algo(gnutls_session_t session, gnutls_pcert_st *cert, + gnutls_privkey_t privkey, unsigned client_cert, gnutls_kx_algorithm_t kx_algorithm); int _gnutls_sign_algorithm_parse_data(gnutls_session_t session, - const uint8_t * data, size_t data_size); + const uint8_t *data, size_t data_size); int _gnutls_sign_algorithm_write_params(gnutls_session_t session, - gnutls_buffer_st * extdata); + gnutls_buffer_st *extdata); int _gnutls_session_sign_algo_enabled(gnutls_session_t session, gnutls_sign_algorithm_t sig); @@ -57,4 +55,4 @@ gnutls_sign_algorithm_set_client(gnutls_session_t session, session->security_parameters.client_sign_algo = sign; } -#endif /* GNUTLS_LIB_EXT_SIGNATURE_H */ +#endif /* GNUTLS_LIB_EXT_SIGNATURE_H */ diff --git a/lib/ext/srp.c b/lib/ext/srp.c index bb001e909e..24631d4bd2 100644 --- a/lib/ext/srp.c +++ b/lib/ext/srp.c @@ -25,43 +25,40 @@ #ifdef ENABLE_SRP -# include "auth.h" -# include -# include "errors.h" -# include "algorithms.h" -# include -# include - -static int _gnutls_srp_unpack(gnutls_buffer_st * ps, - gnutls_ext_priv_data_t * _priv); -static int _gnutls_srp_pack(gnutls_ext_priv_data_t epriv, - gnutls_buffer_st * ps); +#include "auth.h" +#include +#include "errors.h" +#include "algorithms.h" +#include +#include + +static int _gnutls_srp_unpack(gnutls_buffer_st *ps, + gnutls_ext_priv_data_t *_priv); +static int _gnutls_srp_pack(gnutls_ext_priv_data_t epriv, gnutls_buffer_st *ps); static void _gnutls_srp_deinit_data(gnutls_ext_priv_data_t epriv); -static int _gnutls_srp_recv_params(gnutls_session_t state, - const uint8_t * data, size_t data_size); +static int _gnutls_srp_recv_params(gnutls_session_t state, const uint8_t *data, + size_t data_size); static int _gnutls_srp_send_params(gnutls_session_t state, - gnutls_buffer_st * extdata); - -const hello_ext_entry_st ext_mod_srp = { - .name = "SRP", - .tls_id = 12, - .gid = GNUTLS_EXTENSION_SRP, - .client_parse_point = GNUTLS_EXT_TLS, - .server_parse_point = GNUTLS_EXT_TLS, - .validity = - GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | - GNUTLS_EXT_FLAG_CLIENT_HELLO, - .recv_func = _gnutls_srp_recv_params, - .send_func = _gnutls_srp_send_params, - .pack_func = _gnutls_srp_pack, - .unpack_func = _gnutls_srp_unpack, - .deinit_func = _gnutls_srp_deinit_data, - .cannot_be_overriden = 1 -}; - -static int -_gnutls_srp_recv_params(gnutls_session_t session, const uint8_t * data, - size_t data_size) + gnutls_buffer_st *extdata); + +const hello_ext_entry_st ext_mod_srp = { .name = "SRP", + .tls_id = 12, + .gid = GNUTLS_EXTENSION_SRP, + .client_parse_point = GNUTLS_EXT_TLS, + .server_parse_point = GNUTLS_EXT_TLS, + .validity = + GNUTLS_EXT_FLAG_TLS | + GNUTLS_EXT_FLAG_DTLS | + GNUTLS_EXT_FLAG_CLIENT_HELLO, + .recv_func = _gnutls_srp_recv_params, + .send_func = _gnutls_srp_send_params, + .pack_func = _gnutls_srp_pack, + .unpack_func = _gnutls_srp_unpack, + .deinit_func = _gnutls_srp_deinit_data, + .cannot_be_overriden = 1 }; + +static int _gnutls_srp_recv_params(gnutls_session_t session, + const uint8_t *data, size_t data_size) { uint8_t len; gnutls_ext_priv_data_t epriv; @@ -102,8 +99,8 @@ static unsigned have_srp_ciphersuites(gnutls_session_t session) for (j = 0; j < session->internals.priorities->cs.size; j++) { kx = session->internals.priorities->cs.entry[j]->kx_algorithm; - if (kx == GNUTLS_KX_SRP || kx == GNUTLS_KX_SRP_RSA - || kx == GNUTLS_KX_SRP_DSS) + if (kx == GNUTLS_KX_SRP || kx == GNUTLS_KX_SRP_RSA || + kx == GNUTLS_KX_SRP_DSS) return 1; } @@ -113,16 +110,17 @@ static unsigned have_srp_ciphersuites(gnutls_session_t session) /* returns data_size or a negative number on failure * data is allocated locally */ -static int -_gnutls_srp_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) +static int _gnutls_srp_send_params(gnutls_session_t session, + gnutls_buffer_st *extdata) { unsigned len; int ret; gnutls_ext_priv_data_t epriv; srp_ext_st *priv = NULL; char *username = NULL, *password = NULL; - gnutls_srp_client_credentials_t cred = (gnutls_srp_client_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_SRP); + gnutls_srp_client_credentials_t cred = + (gnutls_srp_client_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_SRP); if (session->security_parameters.entity != GNUTLS_CLIENT) return 0; @@ -139,12 +137,11 @@ _gnutls_srp_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) if (priv == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - if (cred->username != NULL) { /* send username */ + if (cred->username != NULL) { /* send username */ len = MIN(strlen(cred->username), 255); - ret = - _gnutls_buffer_append_data_prefix(extdata, 8, - cred->username, len); + ret = _gnutls_buffer_append_data_prefix(extdata, 8, + cred->username, len); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -163,16 +160,16 @@ _gnutls_srp_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) } epriv = priv; - _gnutls_hello_ext_set_priv(session, - GNUTLS_EXTENSION_SRP, epriv); + _gnutls_hello_ext_set_priv(session, GNUTLS_EXTENSION_SRP, + epriv); return len + 1; } else if (cred->get_function != NULL) { /* Try the callback */ - if (cred->get_function(session, &username, &password) < 0 - || username == NULL || password == NULL) { + if (cred->get_function(session, &username, &password) < 0 || + username == NULL || password == NULL) { gnutls_assert(); return GNUTLS_E_ILLEGAL_SRP_USERNAME; } @@ -182,23 +179,22 @@ _gnutls_srp_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) priv->username = username; priv->password = password; - ret = - _gnutls_buffer_append_data_prefix(extdata, 8, - username, len); + ret = _gnutls_buffer_append_data_prefix(extdata, 8, username, + len); if (ret < 0) { ret = gnutls_assert_val(ret); goto cleanup; } epriv = priv; - _gnutls_hello_ext_set_priv(session, - GNUTLS_EXTENSION_SRP, epriv); + _gnutls_hello_ext_set_priv(session, GNUTLS_EXTENSION_SRP, + epriv); return len + 1; } return 0; - cleanup: +cleanup: gnutls_free(username); gnutls_free(password); gnutls_free(priv); @@ -215,7 +211,7 @@ static void _gnutls_srp_deinit_data(gnutls_ext_priv_data_t epriv) gnutls_free(priv); } -static int _gnutls_srp_pack(gnutls_ext_priv_data_t epriv, gnutls_buffer_st * ps) +static int _gnutls_srp_pack(gnutls_ext_priv_data_t epriv, gnutls_buffer_st *ps) { srp_ext_st *priv = epriv; int ret; @@ -233,8 +229,8 @@ static int _gnutls_srp_pack(gnutls_ext_priv_data_t epriv, gnutls_buffer_st * ps) return 0; } -static int -_gnutls_srp_unpack(gnutls_buffer_st * ps, gnutls_ext_priv_data_t * _priv) +static int _gnutls_srp_unpack(gnutls_buffer_st *ps, + gnutls_ext_priv_data_t *_priv) { srp_ext_st *priv; int ret; @@ -259,10 +255,10 @@ _gnutls_srp_unpack(gnutls_buffer_st * ps, gnutls_ext_priv_data_t * _priv) return 0; - error: +error: _gnutls_free_datum(&username); _gnutls_free_datum(&password); return ret; } -#endif /* ENABLE_SRP */ +#endif /* ENABLE_SRP */ diff --git a/lib/ext/srp.h b/lib/ext/srp.h index 67398ba7b4..4a1fde672f 100644 --- a/lib/ext/srp.h +++ b/lib/ext/srp.h @@ -21,14 +21,17 @@ */ #ifndef GNUTLS_LIB_EXT_SRP_H -# define GNUTLS_LIB_EXT_SRP_H +#define GNUTLS_LIB_EXT_SRP_H -# include +#include -# define IS_SRP_KX(kx) ((kx == GNUTLS_KX_SRP || (kx == GNUTLS_KX_SRP_RSA) || \ - kx == GNUTLS_KX_SRP_DSS)?1:0) +#define IS_SRP_KX(kx) \ + ((kx == GNUTLS_KX_SRP || (kx == GNUTLS_KX_SRP_RSA) || \ + kx == GNUTLS_KX_SRP_DSS) ? \ + 1 : \ + 0) -# ifdef ENABLE_SRP +#ifdef ENABLE_SRP extern const hello_ext_entry_st ext_mod_srp; @@ -37,6 +40,6 @@ typedef struct { char *password; } srp_ext_st; -# endif +#endif -#endif /* GNUTLS_LIB_EXT_SRP_H */ +#endif /* GNUTLS_LIB_EXT_SRP_H */ diff --git a/lib/ext/srtp.c b/lib/ext/srtp.c index c4e93dae6c..2bd9e9d317 100644 --- a/lib/ext/srtp.c +++ b/lib/ext/srtp.c @@ -27,24 +27,23 @@ #include static int _gnutls_srtp_recv_params(gnutls_session_t session, - const uint8_t * data, size_t data_size); + const uint8_t *data, size_t data_size); static int _gnutls_srtp_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata); + gnutls_buffer_st *extdata); -static int _gnutls_srtp_unpack(gnutls_buffer_st * ps, - gnutls_ext_priv_data_t * _priv); +static int _gnutls_srtp_unpack(gnutls_buffer_st *ps, + gnutls_ext_priv_data_t *_priv); static int _gnutls_srtp_pack(gnutls_ext_priv_data_t _priv, - gnutls_buffer_st * ps); + gnutls_buffer_st *ps); static void _gnutls_srtp_deinit_data(gnutls_ext_priv_data_t priv); const hello_ext_entry_st ext_mod_srtp = { .name = "SRTP", .tls_id = 14, .gid = GNUTLS_EXTENSION_SRTP, - .validity = - GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | - GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_EE | - GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, + .validity = GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | + GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_EE | + GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, .client_parse_point = GNUTLS_EXT_APPLICATION, .server_parse_point = GNUTLS_EXT_APPLICATION, .recv_func = _gnutls_srtp_recv_params, @@ -63,33 +62,15 @@ typedef struct { } srtp_profile_st; static const srtp_profile_st profile_names[] = { - { - "SRTP_AES128_CM_HMAC_SHA1_80", - GNUTLS_SRTP_AES128_CM_HMAC_SHA1_80, - 16, 14}, - { - "SRTP_AES128_CM_HMAC_SHA1_32", - GNUTLS_SRTP_AES128_CM_HMAC_SHA1_32, - 16, 14}, - { - "SRTP_NULL_HMAC_SHA1_80", - GNUTLS_SRTP_NULL_HMAC_SHA1_80, - 16, 14}, - { - "SRTP_NULL_SHA1_32", - GNUTLS_SRTP_NULL_HMAC_SHA1_32, - 16, 14}, - { - "SRTP_AEAD_AES_128_GCM", - GNUTLS_SRTP_AEAD_AES_128_GCM, - 16, 12}, - { - "SRTP_AEAD_AES_256_GCM", - GNUTLS_SRTP_AEAD_AES_256_GCM, - 32, 12}, - { - NULL, - 0, 0, 0} + { "SRTP_AES128_CM_HMAC_SHA1_80", GNUTLS_SRTP_AES128_CM_HMAC_SHA1_80, 16, + 14 }, + { "SRTP_AES128_CM_HMAC_SHA1_32", GNUTLS_SRTP_AES128_CM_HMAC_SHA1_32, 16, + 14 }, + { "SRTP_NULL_HMAC_SHA1_80", GNUTLS_SRTP_NULL_HMAC_SHA1_80, 16, 14 }, + { "SRTP_NULL_SHA1_32", GNUTLS_SRTP_NULL_HMAC_SHA1_32, 16, 14 }, + { "SRTP_AEAD_AES_128_GCM", GNUTLS_SRTP_AEAD_AES_128_GCM, 16, 12 }, + { "SRTP_AEAD_AES_256_GCM", GNUTLS_SRTP_AEAD_AES_256_GCM, 32, 12 }, + { NULL, 0, 0, 0 } }; static const srtp_profile_st *get_profile(gnutls_srtp_profile_t profile) @@ -114,7 +95,8 @@ static gnutls_srtp_profile_t find_profile(const char *str, const char *end) } while (prof->name != NULL) { - if (strlen(prof->name) == len && !strncmp(str, prof->name, len)) { + if (strlen(prof->name) == len && + !strncmp(str, prof->name, len)) { return prof->id; } prof++; @@ -134,8 +116,7 @@ static gnutls_srtp_profile_t find_profile(const char *str, const char *end) * * Since 3.1.4 **/ -int gnutls_srtp_get_profile_id(const char *name, - gnutls_srtp_profile_t * profile) +int gnutls_srtp_get_profile_id(const char *name, gnutls_srtp_profile_t *profile) { *profile = find_profile(name, NULL); if (*profile == 0) { @@ -168,9 +149,8 @@ const char *gnutls_srtp_get_profile_name(gnutls_srtp_profile_t profile) return NULL; } -static int -_gnutls_srtp_recv_params(gnutls_session_t session, - const uint8_t * data, size_t data_size) +static int _gnutls_srtp_recv_params(gnutls_session_t session, + const uint8_t *data, size_t data_size) { unsigned int i; int ret; @@ -180,8 +160,8 @@ _gnutls_srtp_recv_params(gnutls_session_t session, gnutls_ext_priv_data_t epriv; uint16_t profile; - ret = - _gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_SRTP, &epriv); + ret = _gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_SRTP, + &epriv); if (ret < 0) return 0; @@ -199,9 +179,8 @@ _gnutls_srtp_recv_params(gnutls_session_t session, return 0; } else { if (len != 2) - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET_LENGTH); } priv->selected_profile = 0; @@ -211,8 +190,8 @@ _gnutls_srtp_recv_params(gnutls_session_t session, profile = _gnutls_read_uint16(p); for (i = 0; - i < priv->profiles_size - && priv->selected_profile == 0; i++) { + i < priv->profiles_size && priv->selected_profile == 0; + i++) { if (priv->profiles[i] == profile) { priv->selected_profile = profile; break; @@ -235,16 +214,16 @@ _gnutls_srtp_recv_params(gnutls_session_t session, return 0; } -static int -_gnutls_srtp_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) +static int _gnutls_srtp_send_params(gnutls_session_t session, + gnutls_buffer_st *extdata) { unsigned i; int total_size = 0, ret; srtp_ext_st *priv; gnutls_ext_priv_data_t epriv; - ret = - _gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_SRTP, &epriv); + ret = _gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_SRTP, + &epriv); if (ret < 0) return 0; @@ -261,23 +240,20 @@ _gnutls_srtp_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) ret = _gnutls_buffer_append_prefix(extdata, 16, 2); if (ret < 0) return gnutls_assert_val(ret); - ret = - _gnutls_buffer_append_prefix(extdata, 16, - priv->selected_profile); + ret = _gnutls_buffer_append_prefix(extdata, 16, + priv->selected_profile); if (ret < 0) return gnutls_assert_val(ret); total_size = 4; } else { - ret = - _gnutls_buffer_append_prefix(extdata, 16, - 2 * priv->profiles_size); + ret = _gnutls_buffer_append_prefix(extdata, 16, + 2 * priv->profiles_size); if (ret < 0) return gnutls_assert_val(ret); for (i = 0; i < priv->profiles_size; i++) { - ret = - _gnutls_buffer_append_prefix(extdata, 16, - priv->profiles[i]); + ret = _gnutls_buffer_append_prefix(extdata, 16, + priv->profiles[i]); if (ret < 0) return gnutls_assert_val(ret); } @@ -285,9 +261,8 @@ _gnutls_srtp_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) } /* use_mki */ - ret = - _gnutls_buffer_append_data_prefix(extdata, 8, priv->mki, - priv->mki_size); + ret = _gnutls_buffer_append_data_prefix(extdata, 8, priv->mki, + priv->mki_size); if (ret < 0) return gnutls_assert_val(ret); total_size += 1 + priv->mki_size; @@ -307,16 +282,15 @@ _gnutls_srtp_send_params(gnutls_session_t session, gnutls_buffer_st * extdata) * * Since 3.1.4 **/ -int -gnutls_srtp_get_selected_profile(gnutls_session_t session, - gnutls_srtp_profile_t * profile) +int gnutls_srtp_get_selected_profile(gnutls_session_t session, + gnutls_srtp_profile_t *profile) { srtp_ext_st *priv; int ret; gnutls_ext_priv_data_t epriv; - ret = - _gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_SRTP, &epriv); + ret = _gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_SRTP, + &epriv); if (ret < 0) { gnutls_assert(); return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; @@ -347,14 +321,14 @@ gnutls_srtp_get_selected_profile(gnutls_session_t session, * * Since 3.1.4 **/ -int gnutls_srtp_get_mki(gnutls_session_t session, gnutls_datum_t * mki) +int gnutls_srtp_get_mki(gnutls_session_t session, gnutls_datum_t *mki) { srtp_ext_st *priv; int ret; gnutls_ext_priv_data_t epriv; - ret = - _gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_SRTP, &epriv); + ret = _gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_SRTP, + &epriv); if (ret < 0) return gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); @@ -382,14 +356,14 @@ int gnutls_srtp_get_mki(gnutls_session_t session, gnutls_datum_t * mki) * * Since 3.1.4 **/ -int gnutls_srtp_set_mki(gnutls_session_t session, const gnutls_datum_t * mki) +int gnutls_srtp_set_mki(gnutls_session_t session, const gnutls_datum_t *mki) { int ret; srtp_ext_st *priv; gnutls_ext_priv_data_t epriv; - ret = - _gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_SRTP, &epriv); + ret = _gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_SRTP, + &epriv); if (ret < 0) { priv = gnutls_calloc(1, sizeof(*priv)); if (priv == NULL) { @@ -397,8 +371,8 @@ int gnutls_srtp_set_mki(gnutls_session_t session, const gnutls_datum_t * mki) return GNUTLS_E_MEMORY_ERROR; } epriv = priv; - _gnutls_hello_ext_set_priv(session, - GNUTLS_EXTENSION_SRTP, epriv); + _gnutls_hello_ext_set_priv(session, GNUTLS_EXTENSION_SRTP, + epriv); } else priv = epriv; @@ -424,15 +398,15 @@ int gnutls_srtp_set_mki(gnutls_session_t session, const gnutls_datum_t * mki) * * Since 3.1.4 **/ -int -gnutls_srtp_set_profile(gnutls_session_t session, gnutls_srtp_profile_t profile) +int gnutls_srtp_set_profile(gnutls_session_t session, + gnutls_srtp_profile_t profile) { int ret; srtp_ext_st *priv; gnutls_ext_priv_data_t epriv; - ret = - _gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_SRTP, &epriv); + ret = _gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_SRTP, + &epriv); if (ret < 0) { priv = gnutls_calloc(1, sizeof(*priv)); if (priv == NULL) { @@ -440,8 +414,8 @@ gnutls_srtp_set_profile(gnutls_session_t session, gnutls_srtp_profile_t profile) return GNUTLS_E_MEMORY_ERROR; } epriv = priv; - _gnutls_hello_ext_set_priv(session, - GNUTLS_EXTENSION_SRTP, epriv); + _gnutls_hello_ext_set_priv(session, GNUTLS_EXTENSION_SRTP, + epriv); } else priv = epriv; @@ -467,9 +441,8 @@ gnutls_srtp_set_profile(gnutls_session_t session, gnutls_srtp_profile_t profile) * * Since 3.1.4 **/ -int -gnutls_srtp_set_profile_direct(gnutls_session_t session, - const char *profiles, const char **err_pos) +int gnutls_srtp_set_profile_direct(gnutls_session_t session, + const char *profiles, const char **err_pos) { int ret; srtp_ext_st *priv; @@ -478,8 +451,8 @@ gnutls_srtp_set_profile_direct(gnutls_session_t session, const char *col; gnutls_srtp_profile_t id; - ret = - _gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_SRTP, &epriv); + ret = _gnutls_hello_ext_get_priv(session, GNUTLS_EXTENSION_SRTP, + &epriv); if (ret < 0) { set = 1; priv = gnutls_calloc(1, sizeof(*priv)); @@ -512,8 +485,8 @@ gnutls_srtp_set_profile_direct(gnutls_session_t session, } while (col != NULL); if (set != 0) - _gnutls_hello_ext_set_priv(session, - GNUTLS_EXTENSION_SRTP, epriv); + _gnutls_hello_ext_set_priv(session, GNUTLS_EXTENSION_SRTP, + epriv); return 0; } @@ -540,13 +513,12 @@ gnutls_srtp_set_profile_direct(gnutls_session_t session, * * Since 3.1.4 **/ -int -gnutls_srtp_get_keys(gnutls_session_t session, - void *key_material, - unsigned int key_material_size, - gnutls_datum_t * client_key, - gnutls_datum_t * client_salt, - gnutls_datum_t * server_key, gnutls_datum_t * server_salt) +int gnutls_srtp_get_keys(gnutls_session_t session, void *key_material, + unsigned int key_material_size, + gnutls_datum_t *client_key, + gnutls_datum_t *client_salt, + gnutls_datum_t *server_key, + gnutls_datum_t *server_salt) { int ret; const srtp_profile_st *p; @@ -569,9 +541,9 @@ gnutls_srtp_get_keys(gnutls_session_t session, if (msize == 0) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - ret = - gnutls_prf(session, sizeof("EXTRACTOR-dtls_srtp") - 1, - "EXTRACTOR-dtls_srtp", 0, 0, NULL, msize, key_material); + ret = gnutls_prf(session, sizeof("EXTRACTOR-dtls_srtp") - 1, + "EXTRACTOR-dtls_srtp", 0, 0, NULL, msize, + key_material); if (ret < 0) return gnutls_assert_val(ret); @@ -603,8 +575,7 @@ static void _gnutls_srtp_deinit_data(gnutls_ext_priv_data_t priv) gnutls_free(priv); } -static int -_gnutls_srtp_pack(gnutls_ext_priv_data_t epriv, gnutls_buffer_st * ps) +static int _gnutls_srtp_pack(gnutls_ext_priv_data_t epriv, gnutls_buffer_st *ps) { srtp_ext_st *priv = epriv; unsigned int i; @@ -623,8 +594,8 @@ _gnutls_srtp_pack(gnutls_ext_priv_data_t epriv, gnutls_buffer_st * ps) return 0; } -static int -_gnutls_srtp_unpack(gnutls_buffer_st * ps, gnutls_ext_priv_data_t * _priv) +static int _gnutls_srtp_unpack(gnutls_buffer_st *ps, + gnutls_ext_priv_data_t *_priv) { srtp_ext_st *priv; unsigned int i; @@ -654,7 +625,7 @@ _gnutls_srtp_unpack(gnutls_buffer_st * ps, gnutls_ext_priv_data_t * _priv) return 0; - error: +error: gnutls_free(priv); return ret; } diff --git a/lib/ext/srtp.h b/lib/ext/srtp.h index d08223b90f..d05454a477 100644 --- a/lib/ext/srtp.h +++ b/lib/ext/srtp.h @@ -21,13 +21,13 @@ */ #ifndef GNUTLS_LIB_EXT_SRTP_H -# define GNUTLS_LIB_EXT_SRTP_H -# ifndef EXT_SRTP_H -# define EXT_SRTP_H +#define GNUTLS_LIB_EXT_SRTP_H +#ifndef EXT_SRTP_H +#define EXT_SRTP_H -# include +#include -# define MAX_SRTP_PROFILES 4 +#define MAX_SRTP_PROFILES 4 typedef struct { gnutls_srtp_profile_t profiles[MAX_SRTP_PROFILES]; @@ -40,6 +40,6 @@ typedef struct { extern const hello_ext_entry_st ext_mod_srtp; -# endif +#endif -#endif /* GNUTLS_LIB_EXT_SRTP_H */ +#endif /* GNUTLS_LIB_EXT_SRTP_H */ diff --git a/lib/ext/status_request.c b/lib/ext/status_request.c index fe2162f8c8..43a0edeaf0 100644 --- a/lib/ext/status_request.c +++ b/lib/ext/status_request.c @@ -65,9 +65,8 @@ typedef struct { opaque Extensions<0..2^16-1>; */ -static int -client_send(gnutls_session_t session, - gnutls_buffer_st * extdata, status_request_ext_st * priv) +static int client_send(gnutls_session_t session, gnutls_buffer_st *extdata, + status_request_ext_st *priv) { const uint8_t data[5] = "\x01\x00\x00\x00\x00"; const int len = 5; @@ -84,8 +83,8 @@ client_send(gnutls_session_t session, return len; } -static int -server_recv(gnutls_session_t session, const uint8_t * data, size_t data_size) +static int server_recv(gnutls_session_t session, const uint8_t *data, + size_t data_size) { unsigned rid_bytes = 0; @@ -121,9 +120,8 @@ server_recv(gnutls_session_t session, const uint8_t * data, size_t data_size) return 0; } -static int -client_recv(gnutls_session_t session, - status_request_ext_st * priv, const uint8_t * data, size_t size) +static int client_recv(gnutls_session_t session, status_request_ext_st *priv, + const uint8_t *data, size_t size) { if (size != 0) return gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET_LENGTH); @@ -153,9 +151,8 @@ client_recv(gnutls_session_t session, * are selected (with the _GNUTLS_EXT_TLS_POST_CS type), and we discover * (or not) the response to send early. */ -static int -server_send(gnutls_session_t session, - gnutls_buffer_st * extdata, status_request_ext_st * priv) +static int server_send(gnutls_session_t session, gnutls_buffer_st *extdata, + status_request_ext_st *priv) { int ret; gnutls_certificate_credentials_t cred; @@ -163,9 +160,9 @@ server_send(gnutls_session_t session, void *func_ptr; const version_entry_st *ver = get_version(session); - cred = (gnutls_certificate_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_CERTIFICATE); - if (cred == NULL) /* no certificate authentication */ + cred = (gnutls_certificate_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_CERTIFICATE); + if (cred == NULL) /* no certificate authentication */ return 0; /* no need to set sresp; responses are send during certificate sending and @@ -184,13 +181,12 @@ server_send(gnutls_session_t session, return 0; } - ret = _gnutls_set_datum(&priv->sresp, - session-> - internals.selected_ocsp[0]. - response.data, - session-> - internals.selected_ocsp[0]. - response.size); + ret = _gnutls_set_datum( + &priv->sresp, + session->internals.selected_ocsp[0] + .response.data, + session->internals.selected_ocsp[0] + .response.size); if (ret < 0) return gnutls_assert_val(ret); return GNUTLS_E_INT_RET_0; @@ -216,9 +212,8 @@ server_send(gnutls_session_t session, return GNUTLS_E_INT_RET_0; } -static int -_gnutls_status_request_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata) +static int _gnutls_status_request_send_params(gnutls_session_t session, + gnutls_buffer_st *extdata) { gnutls_ext_priv_data_t epriv; status_request_ext_st *priv; @@ -233,10 +228,9 @@ _gnutls_status_request_send_params(gnutls_session_t session, if (session->internals.flags & GNUTLS_NO_STATUS_REQUEST) return 0; - ret = _gnutls_hello_ext_get_priv(session, - GNUTLS_EXTENSION_STATUS_REQUEST, - &epriv); - if (ret < 0 || epriv == NULL) /* it is ok not to have it */ + ret = _gnutls_hello_ext_get_priv( + session, GNUTLS_EXTENSION_STATUS_REQUEST, &epriv); + if (ret < 0 || epriv == NULL) /* it is ok not to have it */ return 0; priv = epriv; @@ -246,27 +240,24 @@ _gnutls_status_request_send_params(gnutls_session_t session, if (priv == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - _gnutls_hello_ext_set_priv(session, - GNUTLS_EXTENSION_STATUS_REQUEST, - epriv); + _gnutls_hello_ext_set_priv( + session, GNUTLS_EXTENSION_STATUS_REQUEST, epriv); return server_send(session, extdata, priv); } } -static int -_gnutls_status_request_recv_params(gnutls_session_t session, - const uint8_t * data, size_t size) +static int _gnutls_status_request_recv_params(gnutls_session_t session, + const uint8_t *data, size_t size) { gnutls_ext_priv_data_t epriv; status_request_ext_st *priv; int ret; if (session->security_parameters.entity == GNUTLS_CLIENT) { - ret = _gnutls_hello_ext_get_priv(session, - GNUTLS_EXTENSION_STATUS_REQUEST, - &epriv); - if (ret < 0 || epriv == NULL) /* it is ok not to have it */ + ret = _gnutls_hello_ext_get_priv( + session, GNUTLS_EXTENSION_STATUS_REQUEST, &epriv); + if (ret < 0 || epriv == NULL) /* it is ok not to have it */ return 0; priv = epriv; @@ -297,11 +288,10 @@ _gnutls_status_request_recv_params(gnutls_session_t session, * * Since: 3.1.3 **/ -int -gnutls_ocsp_status_request_enable_client(gnutls_session_t session, - gnutls_datum_t * responder_id, - size_t responder_id_size, - gnutls_datum_t * extensions) +int gnutls_ocsp_status_request_enable_client(gnutls_session_t session, + gnutls_datum_t *responder_id, + size_t responder_id_size, + gnutls_datum_t *extensions) { status_request_ext_st *priv; gnutls_ext_priv_data_t epriv; @@ -313,8 +303,8 @@ gnutls_ocsp_status_request_enable_client(gnutls_session_t session, if (priv == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - _gnutls_hello_ext_set_priv(session, - GNUTLS_EXTENSION_STATUS_REQUEST, epriv); + _gnutls_hello_ext_set_priv(session, GNUTLS_EXTENSION_STATUS_REQUEST, + epriv); session->internals.flags &= ~GNUTLS_NO_STATUS_REQUEST; if (session->internals.priorities) @@ -338,9 +328,9 @@ const hello_ext_entry_st ext_mod_status_request = { .name = "OCSP Status Request", .tls_id = STATUS_REQUEST_TLS_ID, .gid = GNUTLS_EXTENSION_STATUS_REQUEST, - .validity = - GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | - GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, + .validity = GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | + GNUTLS_EXT_FLAG_CLIENT_HELLO | + GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, .client_parse_point = _GNUTLS_EXT_TLS_POST_CS, .server_parse_point = _GNUTLS_EXT_TLS_POST_CS, .recv_func = _gnutls_status_request_recv_params, @@ -364,10 +354,8 @@ int _gnutls_send_server_certificate_status(gnutls_session_t session, int again) return 0; if (again == 0) { - ret = - _gnutls_hello_ext_get_priv(session, - GNUTLS_EXTENSION_STATUS_REQUEST, - &epriv); + ret = _gnutls_hello_ext_get_priv( + session, GNUTLS_EXTENSION_STATUS_REQUEST, &epriv); if (ret < 0) return 0; @@ -395,8 +383,8 @@ int _gnutls_send_server_certificate_status(gnutls_session_t session, int again) GNUTLS_HANDSHAKE_CERTIFICATE_STATUS); } -int _gnutls_parse_ocsp_response(gnutls_session_t session, const uint8_t * data, - ssize_t data_size, gnutls_datum_t * resp) +int _gnutls_parse_ocsp_response(gnutls_session_t session, const uint8_t *data, + ssize_t data_size, gnutls_datum_t *resp) { int ret; ssize_t r_size; @@ -445,14 +433,13 @@ int _gnutls_recv_server_certificate_status(gnutls_session_t session) status_request_ext_st *priv = NULL; gnutls_ext_priv_data_t epriv; cert_auth_info_t info = - _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE); + _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE); if (info == NULL) return 0; - ret = - _gnutls_hello_ext_get_priv(session, - GNUTLS_EXTENSION_STATUS_REQUEST, &epriv); + ret = _gnutls_hello_ext_get_priv( + session, GNUTLS_EXTENSION_STATUS_REQUEST, &epriv); if (ret < 0) return 0; @@ -461,9 +448,8 @@ int _gnutls_recv_server_certificate_status(gnutls_session_t session) if (!priv->expect_cstatus) return 0; - ret = _gnutls_recv_handshake(session, - GNUTLS_HANDSHAKE_CERTIFICATE_STATUS, - 1, &buf); + ret = _gnutls_recv_handshake( + session, GNUTLS_HANDSHAKE_CERTIFICATE_STATUS, 1, &buf); if (ret < 0) return gnutls_assert_val_fatal(ret); @@ -500,7 +486,7 @@ int _gnutls_recv_server_certificate_status(gnutls_session_t session) ret = 0; - error: +error: _gnutls_buffer_clear(&buf); return ret; diff --git a/lib/ext/status_request.h b/lib/ext/status_request.h index c2984d79a7..f15148ff62 100644 --- a/lib/ext/status_request.h +++ b/lib/ext/status_request.h @@ -21,18 +21,18 @@ */ #ifndef GNUTLS_LIB_EXT_STATUS_REQUEST_H -# define GNUTLS_LIB_EXT_STATUS_REQUEST_H +#define GNUTLS_LIB_EXT_STATUS_REQUEST_H -# include +#include -# define STATUS_REQUEST_TLS_ID 5 +#define STATUS_REQUEST_TLS_ID 5 extern const hello_ext_entry_st ext_mod_status_request; int _gnutls_send_server_certificate_status(gnutls_session_t session, int again); int _gnutls_recv_server_certificate_status(gnutls_session_t session); -int _gnutls_parse_ocsp_response(gnutls_session_t session, const uint8_t * data, - ssize_t data_size, gnutls_datum_t * resp); +int _gnutls_parse_ocsp_response(gnutls_session_t session, const uint8_t *data, + ssize_t data_size, gnutls_datum_t *resp); -#endif /* GNUTLS_LIB_EXT_STATUS_REQUEST_H */ +#endif /* GNUTLS_LIB_EXT_STATUS_REQUEST_H */ diff --git a/lib/ext/supported_groups.c b/lib/ext/supported_groups.c index 821fb0f77d..510ef6d230 100644 --- a/lib/ext/supported_groups.c +++ b/lib/ext/supported_groups.c @@ -35,10 +35,10 @@ #include static int _gnutls_supported_groups_recv_params(gnutls_session_t session, - const uint8_t * data, + const uint8_t *data, size_t data_size); static int _gnutls_supported_groups_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata); + gnutls_buffer_st *extdata); const hello_ext_entry_st ext_mod_supported_groups = { .name = "Supported Groups", @@ -46,10 +46,9 @@ const hello_ext_entry_st ext_mod_supported_groups = { .gid = GNUTLS_EXTENSION_SUPPORTED_GROUPS, .client_parse_point = GNUTLS_EXT_TLS, .server_parse_point = GNUTLS_EXT_TLS, - .validity = - GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | - GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_EE | - GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, + .validity = GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_DTLS | + GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_EE | + GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, .recv_func = _gnutls_supported_groups_recv_params, .send_func = _gnutls_supported_groups_send_params, .pack_func = NULL, @@ -65,15 +64,12 @@ static unsigned get_min_dh(gnutls_session_t session) gnutls_anon_server_credentials_t anon_cred; unsigned level = 0; - cert_cred = - (gnutls_certificate_credentials_t) _gnutls_get_cred(session, - GNUTLS_CRD_CERTIFICATE); - psk_cred = - (gnutls_psk_server_credentials_t) _gnutls_get_cred(session, - GNUTLS_CRD_PSK); - anon_cred = - (gnutls_anon_server_credentials_t) _gnutls_get_cred(session, - GNUTLS_CRD_ANON); + cert_cred = (gnutls_certificate_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_CERTIFICATE); + psk_cred = (gnutls_psk_server_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_PSK); + anon_cred = (gnutls_anon_server_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_ANON); if (cert_cred) { level = cert_cred->dh_sec_param; @@ -97,9 +93,9 @@ static unsigned get_min_dh(gnutls_session_t session) * In case of a client: If supported_eccs have been specified then we send the extension. * */ -static int -_gnutls_supported_groups_recv_params(gnutls_session_t session, - const uint8_t * data, size_t data_size) +static int _gnutls_supported_groups_recv_params(gnutls_session_t session, + const uint8_t *data, + size_t data_size) { int i; uint16_t len; @@ -109,29 +105,27 @@ _gnutls_supported_groups_recv_params(gnutls_session_t session, unsigned tls_id; unsigned min_dh; unsigned j; - int serv_ec_idx, serv_dh_idx; /* index in server's priority listing */ - int cli_ec_pos, cli_dh_pos; /* position in listing sent by client */ + int serv_ec_idx, serv_dh_idx; /* index in server's priority listing */ + int cli_ec_pos, cli_dh_pos; /* position in listing sent by client */ if (session->security_parameters.entity == GNUTLS_CLIENT) { /* A client shouldn't receive this extension in TLS1.2. It is * possible to read that message under TLS1.3 as an encrypted * extension. */ return 0; - } else { /* SERVER SIDE - we must check if the sent supported ecc type is the right one + } else { /* SERVER SIDE - we must check if the sent supported ecc type is the right one */ if (data_size < 2) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION); DECR_LEN(data_size, 2); len = _gnutls_read_uint16(p); p += 2; if (len % 2 != 0) - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET_LENGTH); DECR_LEN(data_size, len); @@ -150,14 +144,14 @@ _gnutls_supported_groups_recv_params(gnutls_session_t session, tls_id = _gnutls_read_uint16(&p[i]); group = _gnutls_tls_id_to_group(tls_id); - _gnutls_handshake_log - ("EXT[%p]: Received group %s (0x%x)\n", session, - group ? group->name : "unknown", tls_id); + _gnutls_handshake_log( + "EXT[%p]: Received group %s (0x%x)\n", session, + group ? group->name : "unknown", tls_id); if (group == NULL) continue; - if (min_dh > 0 && group->prime - && group->prime->size * 8 < min_dh) + if (min_dh > 0 && group->prime && + group->prime->size * 8 < min_dh) continue; /* we simulate _gnutls_session_supports_group, but we prioritize if @@ -165,21 +159,22 @@ _gnutls_supported_groups_recv_params(gnutls_session_t session, for (j = 0; j < session->internals.priorities->groups.size; j++) { - if (session->internals.priorities-> - groups.entry[j]->id == group->id) { - if (session->internals. - priorities->server_precedence) { + if (session->internals.priorities->groups + .entry[j] + ->id == group->id) { + if (session->internals.priorities + ->server_precedence) { if (group->pk == GNUTLS_PK_DH) { - if (serv_dh_idx != -1 - && (int)j > - serv_dh_idx) + if (serv_dh_idx != -1 && + (int)j > + serv_dh_idx) break; serv_dh_idx = j; cli_dh_pos = i; } else if (IS_EC(group->pk)) { - if (serv_ec_idx != -1 - && (int)j > - serv_ec_idx) + if (serv_ec_idx != -1 && + (int)j > + serv_ec_idx) break; serv_ec_idx = j; cli_ec_pos = i; @@ -206,32 +201,30 @@ _gnutls_supported_groups_recv_params(gnutls_session_t session, */ if (serv_dh_idx != -1) { session->internals.cand_dh_group = - session->internals.priorities-> - groups.entry[serv_dh_idx]; + session->internals.priorities->groups + .entry[serv_dh_idx]; session->internals.cand_group = - session->internals.cand_dh_group; + session->internals.cand_dh_group; } if (serv_ec_idx != -1) { session->internals.cand_ec_group = - session->internals.priorities-> - groups.entry[serv_ec_idx]; - if (session->internals.cand_group == NULL - || (session->internals.priorities->server_precedence - && serv_ec_idx < serv_dh_idx) - || (!session->internals. - priorities->server_precedence - && cli_ec_pos < cli_dh_pos)) { + session->internals.priorities->groups + .entry[serv_ec_idx]; + if (session->internals.cand_group == NULL || + (session->internals.priorities->server_precedence && + serv_ec_idx < serv_dh_idx) || + (!session->internals.priorities->server_precedence && + cli_ec_pos < cli_dh_pos)) { session->internals.cand_group = - session->internals.cand_ec_group; + session->internals.cand_ec_group; } } if (session->internals.cand_group) - _gnutls_handshake_log("EXT[%p]: Selected group %s\n", - session, - session->internals. - cand_group->name); + _gnutls_handshake_log( + "EXT[%p]: Selected group %s\n", session, + session->internals.cand_group->name); if (have_ffdhe) session->internals.hsk_flags |= HSK_HAVE_FFDHE; @@ -242,9 +235,8 @@ _gnutls_supported_groups_recv_params(gnutls_session_t session, /* returns data_size or a negative number on failure */ -static int -_gnutls_supported_groups_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata) +static int _gnutls_supported_groups_send_params(gnutls_session_t session, + gnutls_buffer_st *extdata) { unsigned len, i; int ret; @@ -252,32 +244,33 @@ _gnutls_supported_groups_send_params(gnutls_session_t session, /* this extension is only being sent on client side */ if (session->security_parameters.entity == GNUTLS_CLIENT) { - len = session->internals.priorities->groups.size; if (len > 0) { - ret = - _gnutls_buffer_append_prefix(extdata, 16, len * 2); + ret = _gnutls_buffer_append_prefix(extdata, 16, + len * 2); if (ret < 0) return gnutls_assert_val(ret); for (i = 0; i < len; i++) { - p = session->internals.priorities-> - groups.entry[i]->tls_id; - - _gnutls_handshake_log - ("EXT[%p]: Sent group %s (0x%x)\n", session, - session->internals.priorities-> - groups.entry[i]->name, (unsigned)p); - - ret = - _gnutls_buffer_append_prefix(extdata, - 16, p); + p = session->internals.priorities->groups + .entry[i] + ->tls_id; + + _gnutls_handshake_log( + "EXT[%p]: Sent group %s (0x%x)\n", + session, + session->internals.priorities->groups + .entry[i] + ->name, + (unsigned)p); + + ret = _gnutls_buffer_append_prefix(extdata, 16, + p); if (ret < 0) return gnutls_assert_val(ret); } return (len + 1) * 2; } - } return 0; diff --git a/lib/ext/supported_groups.h b/lib/ext/supported_groups.h index 03a47939b8..a582c59abb 100644 --- a/lib/ext/supported_groups.h +++ b/lib/ext/supported_groups.h @@ -21,13 +21,13 @@ */ #ifndef GNUTLS_LIB_EXT_SUPPORTED_GROUPS_H -# define GNUTLS_LIB_EXT_SUPPORTED_GROUPS_H +#define GNUTLS_LIB_EXT_SUPPORTED_GROUPS_H -# include +#include extern const hello_ext_entry_st ext_mod_supported_groups; -int -_gnutls_session_supports_group(gnutls_session_t session, unsigned int group); +int _gnutls_session_supports_group(gnutls_session_t session, + unsigned int group); -#endif /* GNUTLS_LIB_EXT_SUPPORTED_GROUPS_H */ +#endif /* GNUTLS_LIB_EXT_SUPPORTED_GROUPS_H */ diff --git a/lib/ext/supported_versions.c b/lib/ext/supported_versions.c index 168b9b77e3..a1e8fbe3eb 100644 --- a/lib/ext/supported_versions.c +++ b/lib/ext/supported_versions.c @@ -32,20 +32,21 @@ #include "handshake.h" static int supported_versions_recv_params(gnutls_session_t session, - const uint8_t * data, + const uint8_t *data, size_t data_size); static int supported_versions_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata); + gnutls_buffer_st *extdata); const hello_ext_entry_st ext_mod_supported_versions = { .name = "Supported Versions", .tls_id = 43, .gid = GNUTLS_EXTENSION_SUPPORTED_VERSIONS, - .validity = - GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO | - GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO | GNUTLS_EXT_FLAG_HRR | - GNUTLS_EXT_FLAG_TLS, - .client_parse_point = GNUTLS_EXT_VERSION_NEG, /* force parsing prior to EXT_TLS extensions */ + .validity = GNUTLS_EXT_FLAG_CLIENT_HELLO | + GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO | + GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO | GNUTLS_EXT_FLAG_HRR | + GNUTLS_EXT_FLAG_TLS, + .client_parse_point = + GNUTLS_EXT_VERSION_NEG, /* force parsing prior to EXT_TLS extensions */ .server_parse_point = GNUTLS_EXT_VERSION_NEG, .recv_func = supported_versions_recv_params, .send_func = supported_versions_send_params, @@ -55,9 +56,8 @@ const hello_ext_entry_st ext_mod_supported_versions = { .cannot_be_overriden = 1 }; -static int -supported_versions_recv_params(gnutls_session_t session, - const uint8_t * data, size_t data_size) +static int supported_versions_recv_params(gnutls_session_t session, + const uint8_t *data, size_t data_size) { const version_entry_st *vers; uint8_t major, minor; @@ -82,16 +82,14 @@ supported_versions_recv_params(gnutls_session_t session, data++; if (bytes % 2 == 1) - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET_LENGTH); DECR_LEN(data_size, bytes); if (data_size != 0) - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET_LENGTH); while (bytes > 0) { major = data[0]; @@ -102,8 +100,8 @@ supported_versions_recv_params(gnutls_session_t session, _gnutls_handshake_log("EXT[%p]: Found version: %d.%d\n", session, (int)major, (int)minor); - if (!_gnutls_nversion_is_supported - (session, major, minor)) + if (!_gnutls_nversion_is_supported(session, major, + minor)) continue; /* Prefer the latest possible version @@ -111,23 +109,20 @@ supported_versions_recv_params(gnutls_session_t session, * https://gitlab.com/gnutls/gnutls/issues/837 * for the rationale. */ - if (!cli_vers || - major > cli_vers->major || + if (!cli_vers || major > cli_vers->major || (major == cli_vers->major && minor > cli_vers->minor)) cli_vers = nversion_to_entry(major, minor); } if (!cli_vers) - return - gnutls_assert_val - (GNUTLS_E_UNSUPPORTED_VERSION_PACKET); + return gnutls_assert_val( + GNUTLS_E_UNSUPPORTED_VERSION_PACKET); session->security_parameters.pversion = cli_vers; _gnutls_handshake_log("EXT[%p]: Negotiated version: %d.%d\n", - session, - (int)cli_vers->major, + session, (int)cli_vers->major, (int)cli_vers->minor); if (old_vers != cli_vers) { @@ -140,7 +135,7 @@ supported_versions_recv_params(gnutls_session_t session, } return 0; - } else { /* client */ + } else { /* client */ if (!have_creds_for_tls13(session)) { /* if we don't have certificate or PSK (which work under TLS1.3) @@ -153,18 +148,16 @@ supported_versions_recv_params(gnutls_session_t session, DECR_LEN(data_size, 2); if (data_size != 0) - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET_LENGTH); major = data[0]; minor = data[1]; vers = nversion_to_entry(major, minor); if (!vers) - return - gnutls_assert_val - (GNUTLS_E_UNSUPPORTED_VERSION_PACKET); + return gnutls_assert_val( + GNUTLS_E_UNSUPPORTED_VERSION_PACKET); set_adv_version(session, major, minor); @@ -172,9 +165,8 @@ supported_versions_recv_params(gnutls_session_t session, session, (int)major, (int)minor); if (!vers->tls13_sem) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); ret = _gnutls_negotiate_version(session, major, minor, 1); if (ret < 0) { @@ -188,9 +180,8 @@ supported_versions_recv_params(gnutls_session_t session, /* returns data_size or a negative number on failure */ -static int -supported_versions_send_params(gnutls_session_t session, - gnutls_buffer_st * extdata) +static int supported_versions_send_params(gnutls_session_t session, + gnutls_buffer_st *extdata) { uint8_t versions[32]; size_t versions_size; @@ -217,17 +208,16 @@ supported_versions_send_params(gnutls_session_t session, if (vers && !vers->tls13_sem) return 0; - ret = - _gnutls_write_supported_versions(session, versions, - sizeof(versions)); - if (ret <= 0) /* if this function doesn't succeed do not send anything */ + ret = _gnutls_write_supported_versions(session, versions, + sizeof(versions)); + if (ret <= + 0) /* if this function doesn't succeed do not send anything */ return 0; versions_size = ret; - ret = - _gnutls_buffer_append_data_prefix(extdata, 8, versions, - versions_size); + ret = _gnutls_buffer_append_data_prefix(extdata, 8, versions, + versions_size); if (ret < 0) return gnutls_assert_val(ret); diff --git a/lib/ext/supported_versions.h b/lib/ext/supported_versions.h index 494e80c520..f7dfb9ebb9 100644 --- a/lib/ext/supported_versions.h +++ b/lib/ext/supported_versions.h @@ -21,10 +21,10 @@ */ #ifndef GNUTLS_LIB_EXT_SUPPORTED_VERSIONS_H -# define GNUTLS_LIB_EXT_SUPPORTED_VERSIONS_H +#define GNUTLS_LIB_EXT_SUPPORTED_VERSIONS_H -# include +#include extern const hello_ext_entry_st ext_mod_supported_versions; -#endif /* GNUTLS_LIB_EXT_SUPPORTED_VERSIONS_H */ +#endif /* GNUTLS_LIB_EXT_SUPPORTED_VERSIONS_H */ diff --git a/lib/extras/hex.h b/lib/extras/hex.h index 731c291157..5fcac98914 100644 --- a/lib/extras/hex.h +++ b/lib/extras/hex.h @@ -1,11 +1,11 @@ /* CC0 (Public domain) - see LICENSE file for details */ #ifndef GNUTLS_LIB_EXTRAS_HEX_H -# define GNUTLS_LIB_EXTRAS_HEX_H +#define GNUTLS_LIB_EXTRAS_HEX_H -# include "config.h" -# include -# include +#include "config.h" +#include +#include /** * hex_decode - Unpack a hex string. @@ -74,4 +74,4 @@ static inline size_t hex_data_size(size_t slen) return slen / 2; } -#endif /* GNUTLS_LIB_EXTRAS_HEX_H */ +#endif /* GNUTLS_LIB_EXTRAS_HEX_H */ diff --git a/lib/extras/randomart.c b/lib/extras/randomart.c index 8ee9d2400a..333dca4910 100644 --- a/lib/extras/randomart.c +++ b/lib/extras/randomart.c @@ -58,11 +58,10 @@ * Else pictures would be too dense, and drawing the frame would * fail, too, because the key type would not fit in anymore. */ -#define FLDBASE 8 -#define FLDSIZE_Y (FLDBASE + 1) -#define FLDSIZE_X (FLDBASE * 2 + 1) -char *_gnutls_key_fingerprint_randomart(uint8_t * dgst_raw, - u_int dgst_raw_len, +#define FLDBASE 8 +#define FLDSIZE_Y (FLDBASE + 1) +#define FLDSIZE_X (FLDBASE * 2 + 1) +char *_gnutls_key_fingerprint_randomart(uint8_t *dgst_raw, u_int dgst_raw_len, const char *key_type, unsigned int key_size, const char *prefix) @@ -83,8 +82,8 @@ char *_gnutls_key_fingerprint_randomart(uint8_t * dgst_raw, if (prefix) prefix_len = strlen(prefix); - retval = - gnutls_calloc(1, (FLDSIZE_X + 3 + prefix_len) * (FLDSIZE_Y + 2)); + retval = gnutls_calloc(1, + (FLDSIZE_X + 3 + prefix_len) * (FLDSIZE_Y + 2)); if (retval == NULL) { gnutls_assert(); return NULL; @@ -129,8 +128,8 @@ char *_gnutls_key_fingerprint_randomart(uint8_t * dgst_raw, /* fill in retval */ if (prefix_len) - snprintf(retval, FLDSIZE_X + prefix_len, "%s+--[%4s%s]", - prefix, key_type, size_txt); + snprintf(retval, FLDSIZE_X + prefix_len, "%s+--[%4s%s]", prefix, + key_type, size_txt); else snprintf(retval, FLDSIZE_X, "+--[%4s%s]", key_type, size_txt); p = strchr(retval, '\0'); diff --git a/lib/extras/randomart.h b/lib/extras/randomart.h index 2bca9d0dc7..d29254249a 100644 --- a/lib/extras/randomart.h +++ b/lib/extras/randomart.h @@ -1,10 +1,9 @@ #ifndef GNUTLS_LIB_EXTRAS_RANDOMART_H -# define GNUTLS_LIB_EXTRAS_RANDOMART_H +#define GNUTLS_LIB_EXTRAS_RANDOMART_H -char *_gnutls_key_fingerprint_randomart(uint8_t * dgst_raw, - u_int dgst_raw_len, +char *_gnutls_key_fingerprint_randomart(uint8_t *dgst_raw, u_int dgst_raw_len, const char *key_type, unsigned int key_size, const char *prefix); -#endif /* GNUTLS_LIB_EXTRAS_RANDOMART_H */ +#endif /* GNUTLS_LIB_EXTRAS_RANDOMART_H */ diff --git a/lib/extv.c b/lib/extv.c index e75a4386dc..3a0dead4bb 100644 --- a/lib/extv.c +++ b/lib/extv.c @@ -27,9 +27,8 @@ /* Iterates through all extensions found, and calls the cb() * function with their data */ -int _gnutls_extv_parse(void *ctx, - gnutls_ext_raw_process_func cb, - const uint8_t * data, int data_size) +int _gnutls_extv_parse(void *ctx, gnutls_ext_raw_process_func cb, + const uint8_t *data, int data_size) { int next, ret; int pos = 0; @@ -46,9 +45,11 @@ int _gnutls_extv_parse(void *ctx, DECR_LENGTH_RET(data_size, next, GNUTLS_E_UNEXPECTED_EXTENSIONS_LENGTH); - if (next == 0 && data_size == 0) /* field is present, but has zero length? Ignore it. */ + if (next == 0 && + data_size == + 0) /* field is present, but has zero length? Ignore it. */ return 0; - else if (data_size > 0) /* forbid unaccounted data */ + else if (data_size > 0) /* forbid unaccounted data */ return gnutls_assert_val(GNUTLS_E_UNEXPECTED_EXTENSIONS_LENGTH); do { @@ -68,8 +69,7 @@ int _gnutls_extv_parse(void *ctx, ret = cb(ctx, tls_id, sdata, size); if (ret < 0) return gnutls_assert_val(ret); - } - while (next > 2); + } while (next > 2); /* forbid leftovers */ if (next > 0) @@ -103,7 +103,7 @@ int _gnutls_extv_parse(void *ctx, * Since: 3.6.3 **/ int gnutls_ext_raw_parse(void *ctx, gnutls_ext_raw_process_func cb, - const gnutls_datum_t * data, unsigned int flags) + const gnutls_datum_t *data, unsigned int flags) { if (flags & GNUTLS_EXT_RAW_FLAG_TLS_CLIENT_HELLO) { size_t size = data->size; @@ -113,9 +113,8 @@ int gnutls_ext_raw_parse(void *ctx, gnutls_ext_raw_process_func cb, DECR_LEN(size, HANDSHAKE_SESSION_ID_POS); if (p[0] != 0x03) - return - gnutls_assert_val - (GNUTLS_E_UNSUPPORTED_VERSION_PACKET); + return gnutls_assert_val( + GNUTLS_E_UNSUPPORTED_VERSION_PACKET); p += HANDSHAKE_SESSION_ID_POS; @@ -141,9 +140,8 @@ int gnutls_ext_raw_parse(void *ctx, gnutls_ext_raw_process_func cb, p += len; if (size == 0) - return - gnutls_assert_val - (GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); + return gnutls_assert_val( + GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); return _gnutls_extv_parse(ctx, cb, p, size); } else if (flags & GNUTLS_EXT_RAW_FLAG_DTLS_CLIENT_HELLO) { @@ -154,9 +152,8 @@ int gnutls_ext_raw_parse(void *ctx, gnutls_ext_raw_process_func cb, DECR_LEN(size, HANDSHAKE_SESSION_ID_POS); if (p[0] != 254) - return - gnutls_assert_val - (GNUTLS_E_UNSUPPORTED_VERSION_PACKET); + return gnutls_assert_val( + GNUTLS_E_UNSUPPORTED_VERSION_PACKET); p += HANDSHAKE_SESSION_ID_POS; @@ -189,9 +186,8 @@ int gnutls_ext_raw_parse(void *ctx, gnutls_ext_raw_process_func cb, p += len; if (size == 0) - return - gnutls_assert_val - (GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); + return gnutls_assert_val( + GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); return _gnutls_extv_parse(ctx, cb, p, size); } @@ -206,9 +202,8 @@ int gnutls_ext_raw_parse(void *ctx, gnutls_ext_raw_process_func cb, * * On success the number of bytes appended (always positive), or zero if not sent * * On failure, a negative error code. */ -int _gnutls_extv_append(gnutls_buffer_st * buf, - uint16_t tls_id, - void *ctx, int (*cb)(void *ctx, gnutls_buffer_st * buf)) +int _gnutls_extv_append(gnutls_buffer_st *buf, uint16_t tls_id, void *ctx, + int (*cb)(void *ctx, gnutls_buffer_st *buf)) { int size_pos, appended, ret; size_t size_prev; @@ -240,7 +235,7 @@ int _gnutls_extv_append(gnutls_buffer_st * buf, /* write the real size */ _gnutls_write_uint16(appended, &buf->data[size_pos]); } else if (appended == 0) { - buf->length -= 4; /* reset type and size */ + buf->length -= 4; /* reset type and size */ return 0; } diff --git a/lib/extv.h b/lib/extv.h index 35e6d6acef..25a57479d9 100644 --- a/lib/extv.h +++ b/lib/extv.h @@ -21,20 +21,18 @@ */ #ifndef GNUTLS_LIB_EXTV_H -# define GNUTLS_LIB_EXTV_H +#define GNUTLS_LIB_EXTV_H -# include -# include "str.h" +#include +#include "str.h" /* Iterates through all TLS-type extensions in data, and * calls the callback function for each of them. The ctx, flags * and parse_type are passed verbatim to callback. */ -int _gnutls_extv_parse(void *ctx, - gnutls_ext_raw_process_func cb, - const uint8_t * data, int data_size); +int _gnutls_extv_parse(void *ctx, gnutls_ext_raw_process_func cb, + const uint8_t *data, int data_size); -inline static -int _gnutls_extv_append_init(gnutls_buffer_st * buf) +inline static int _gnutls_extv_append_init(gnutls_buffer_st *buf) { unsigned pos; int ret; @@ -51,13 +49,12 @@ int _gnutls_extv_append_init(gnutls_buffer_st * buf) /* its input is the buffer and the return value of _gnutls_extv_append_init() * @is_hello: should be true for client and server hello messages. */ -inline static -int _gnutls_extv_append_final(gnutls_buffer_st * buf, unsigned init, - unsigned is_hello) +inline static int _gnutls_extv_append_final(gnutls_buffer_st *buf, + unsigned init, unsigned is_hello) { unsigned size = buf->length - init - 2; - if (size > UINT16_MAX) /* sent too many extensions */ + if (size > UINT16_MAX) /* sent too many extensions */ return gnutls_assert_val(GNUTLS_E_HANDSHAKE_TOO_LARGE); if (size > 0) @@ -71,9 +68,9 @@ int _gnutls_extv_append_final(gnutls_buffer_st * buf, unsigned init, return 0; } -typedef int (*extv_append_func)(void *ctx, gnutls_buffer_st * buf); +typedef int (*extv_append_func)(void *ctx, gnutls_buffer_st *buf); -int _gnutls_extv_append(gnutls_buffer_st * buf, - uint16_t tls_id, void *ctx, extv_append_func cb); +int _gnutls_extv_append(gnutls_buffer_st *buf, uint16_t tls_id, void *ctx, + extv_append_func cb); -#endif /* GNUTLS_LIB_EXTV_H */ +#endif /* GNUTLS_LIB_EXTV_H */ diff --git a/lib/file.c b/lib/file.c index 4812de2a3f..a8c3ce08e7 100644 --- a/lib/file.c +++ b/lib/file.c @@ -55,7 +55,7 @@ int _gnutls_file_exists(const char *file) * * Since 3.1.0 **/ -int gnutls_load_file(const char *filename, gnutls_datum_t * data) +int gnutls_load_file(const char *filename, gnutls_datum_t *data) { size_t len; diff --git a/lib/file.h b/lib/file.h index c521937cb6..98fb90ed0d 100644 --- a/lib/file.h +++ b/lib/file.h @@ -21,8 +21,8 @@ */ #ifndef GNUTLS_LIB_FILE_H -# define GNUTLS_LIB_FILE_H +#define GNUTLS_LIB_FILE_H int _gnutls_file_exists(const char *file); -#endif /* GNUTLS_LIB_FILE_H */ +#endif /* GNUTLS_LIB_FILE_H */ diff --git a/lib/fingerprint.c b/lib/fingerprint.c index 2d7774322a..5958fa5b3f 100644 --- a/lib/fingerprint.c +++ b/lib/fingerprint.c @@ -51,15 +51,15 @@ * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise * an error code is returned. **/ -int -gnutls_fingerprint(gnutls_digest_algorithm_t algo, - const gnutls_datum_t * data, void *result, - size_t *result_size) +int gnutls_fingerprint(gnutls_digest_algorithm_t algo, + const gnutls_datum_t *data, void *result, + size_t *result_size) { int ret; int hash_len = _gnutls_hash_get_algo_len(hash_to_entry(algo)); - if (hash_len < 0 || (unsigned)hash_len > *result_size || result == NULL) { + if (hash_len < 0 || (unsigned)hash_len > *result_size || + result == NULL) { *result_size = hash_len; return GNUTLS_E_SHORT_MEMORY_BUFFER; } diff --git a/lib/fips.c b/lib/fips.c index dadc9161fc..046038a471 100644 --- a/lib/fips.c +++ b/lib/fips.c @@ -37,7 +37,7 @@ #include "gthreads.h" #ifdef HAVE_DL_ITERATE_PHDR -# include +#include #endif unsigned int _gnutls_lib_state = LIB_STATE_POWERON; @@ -49,10 +49,10 @@ struct gnutls_fips140_context_st { #ifdef ENABLE_FIPS140 -# include +#include -# define FIPS_KERNEL_FILE "/proc/sys/crypto/fips_enabled" -# define FIPS_SYSTEM_FILE "/etc/system-fips" +#define FIPS_KERNEL_FILE "/proc/sys/crypto/fips_enabled" +#define FIPS_SYSTEM_FILE "/etc/system-fips" /* We provide a per-thread FIPS-mode so that an application * can use gnutls_fips140_set_mode() to override a specific @@ -81,10 +81,10 @@ unsigned _gnutls_fips_mode_enabled(void) * is called on library initialization, the * _global_fips_mode is always set during app run. */ - if (_tfips_mode != (gnutls_fips_mode_t) - 1) + if (_tfips_mode != (gnutls_fips_mode_t)-1) return _tfips_mode; - if (_global_fips_mode != (gnutls_fips_mode_t) - 1) { + if (_global_fips_mode != (gnutls_fips_mode_t)-1) { return _global_fips_mode; } @@ -138,7 +138,7 @@ unsigned _gnutls_fips_mode_enabled(void) ret = GNUTLS_FIPS140_DISABLED; goto exit; - exit: +exit: _global_fips_mode = ret; return ret; } @@ -154,14 +154,14 @@ void _gnutls_fips_mode_reset_zombie(void) /* These only works with the platform where SONAME is part of the ABI. * For example, *_SONAME will be set to "none" on Windows platforms. */ -# define GNUTLS_LIBRARY_NAME GNUTLS_LIBRARY_SONAME -# define NETTLE_LIBRARY_NAME NETTLE_LIBRARY_SONAME -# define HOGWEED_LIBRARY_NAME HOGWEED_LIBRARY_SONAME -# define GMP_LIBRARY_NAME GMP_LIBRARY_SONAME +#define GNUTLS_LIBRARY_NAME GNUTLS_LIBRARY_SONAME +#define NETTLE_LIBRARY_NAME NETTLE_LIBRARY_SONAME +#define HOGWEED_LIBRARY_NAME HOGWEED_LIBRARY_SONAME +#define GMP_LIBRARY_NAME GMP_LIBRARY_SONAME -# define HMAC_SIZE 32 -# define HMAC_ALGO GNUTLS_MAC_SHA256 -# define HMAC_FORMAT_VERSION 1 +#define HMAC_SIZE 32 +#define HMAC_ALGO GNUTLS_MAC_SHA256 +#define HMAC_FORMAT_VERSION 1 struct hmac_entry { char path[GNUTLS_PATH_MAX]; @@ -193,7 +193,7 @@ struct lib_paths { * * Returns: 0 on success, a negative error code otherwise */ -static int get_hmac(uint8_t * dest, const char *value) +static int get_hmac(uint8_t *dest, const char *value) { int ret; size_t hmac_size; @@ -213,9 +213,8 @@ static int get_hmac(uint8_t * dest, const char *value) return 0; } -static int -lib_handler(struct hmac_entry *entry, - const char *section, const char *name, const char *value) +static int lib_handler(struct hmac_entry *entry, const char *section, + const char *name, const char *value) { if (!strcmp(name, "path")) { snprintf(entry->path, GNUTLS_PATH_MAX, "%s", value); @@ -272,8 +271,8 @@ static int get_hmac_path(char *mac_file, size_t mac_file_size, p = strrchr(gnutls_path, '/'); if (p == NULL) - ret = - snprintf(mac_file, mac_file_size, ".%s.hmac", gnutls_path); + ret = snprintf(mac_file, mac_file_size, ".%s.hmac", + gnutls_path); else ret = snprintf(mac_file, mac_file_size, "%.*s/.%s.hmac", (int)(p - gnutls_path), gnutls_path, p + 1); @@ -286,13 +285,12 @@ static int get_hmac_path(char *mac_file, size_t mac_file_size, return GNUTLS_E_SUCCESS; if (p == NULL) - ret = - snprintf(mac_file, mac_file_size, "fipscheck/.%s.hmac", - gnutls_path); + ret = snprintf(mac_file, mac_file_size, "fipscheck/.%s.hmac", + gnutls_path); else - ret = - snprintf(mac_file, mac_file_size, "%.*s/fipscheck/.%s.hmac", - (int)(p - gnutls_path), gnutls_path, p + 1); + ret = snprintf(mac_file, mac_file_size, + "%.*s/fipscheck/.%s.hmac", + (int)(p - gnutls_path), gnutls_path, p + 1); if ((size_t)ret >= mac_file_size) return gnutls_assert_val(GNUTLS_E_SHORT_MEMORY_BUFFER); @@ -353,8 +351,8 @@ static int check_lib_hmac(struct hmac_entry *entry, const char *path) _gnutls_debug_log("Loading: %s\n", path); ret = gnutls_load_file(path, &data); if (ret < 0) { - _gnutls_debug_log("Could not load %s: %s\n", - path, gnutls_strerror(ret)); + _gnutls_debug_log("Could not load %s: %s\n", path, + gnutls_strerror(ret)); return gnutls_assert_val(ret); } @@ -366,8 +364,8 @@ static int check_lib_hmac(struct hmac_entry *entry, const char *path) gnutls_free(data.data); if (ret < 0) { - _gnutls_debug_log("Could not calculate HMAC for %s: %s\n", - path, gnutls_strerror(ret)); + _gnutls_debug_log("Could not calculate HMAC for %s: %s\n", path, + gnutls_strerror(ret)); return gnutls_assert_val(ret); } @@ -381,7 +379,7 @@ static int check_lib_hmac(struct hmac_entry *entry, const char *path) return 0; } -# ifdef HAVE_DL_ITERATE_PHDR +#ifdef HAVE_DL_ITERATE_PHDR static int callback(struct dl_phdr_info *info, size_t size, void *data) { @@ -425,7 +423,7 @@ static int load_lib_paths(struct lib_paths *paths) return GNUTLS_E_SUCCESS; } -# else +#else static int load_lib_paths(struct lib_paths *paths) { @@ -434,7 +432,7 @@ static int load_lib_paths(struct lib_paths *paths) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); } -# endif /* HAVE_DL_ITERATE_PHDR */ +#endif /* HAVE_DL_ITERATE_PHDR */ static int check_binary_integrity(void) { @@ -698,10 +696,12 @@ void gnutls_fips140_set_mode(gnutls_fips_mode_t mode, unsigned flags) { #ifdef ENABLE_FIPS140 gnutls_fips_mode_t prev = _gnutls_fips_mode_enabled(); - if (prev == GNUTLS_FIPS140_DISABLED || prev == GNUTLS_FIPS140_SELFTESTS) { + if (prev == GNUTLS_FIPS140_DISABLED || + prev == GNUTLS_FIPS140_SELFTESTS) { /* we need to run self-tests first to be in FIPS140-2 mode */ - _gnutls_audit_log(NULL, - "The library should be initialized in FIPS140-2 mode to do that operation\n"); + _gnutls_audit_log( + NULL, + "The library should be initialized in FIPS140-2 mode to do that operation\n"); return; } @@ -712,14 +712,16 @@ void gnutls_fips140_set_mode(gnutls_fips_mode_t mode, unsigned flags) case GNUTLS_FIPS140_DISABLED: break; case GNUTLS_FIPS140_SELFTESTS: - _gnutls_audit_log(NULL, - "Cannot switch library to FIPS140-2 self-tests mode; defaulting to strict\n"); + _gnutls_audit_log( + NULL, + "Cannot switch library to FIPS140-2 self-tests mode; defaulting to strict\n"); mode = GNUTLS_FIPS140_STRICT; break; default: - _gnutls_audit_log(NULL, - "Cannot switch library to mode %u; defaulting to strict\n", - (unsigned)mode); + _gnutls_audit_log( + NULL, + "Cannot switch library to mode %u; defaulting to strict\n", + (unsigned)mode); mode = GNUTLS_FIPS140_STRICT; break; } @@ -753,7 +755,7 @@ void _gnutls_lib_force_operational(void) * * Since: 3.7.3 */ -int gnutls_fips140_context_init(gnutls_fips140_context_t * context) +int gnutls_fips140_context_init(gnutls_fips140_context_t *context) { *context = gnutls_malloc(sizeof(struct gnutls_fips140_context_st)); if (!*context) { @@ -862,8 +864,8 @@ int gnutls_fips140_pop_context(void) #ifdef ENABLE_FIPS140 -static inline const char -*operation_state_to_string(gnutls_fips140_operation_state_t state) +static inline const char * +operation_state_to_string(gnutls_fips140_operation_state_t state) { switch (state) { case GNUTLS_FIPS140_OP_INITIAL: @@ -875,7 +877,7 @@ static inline const char case GNUTLS_FIPS140_OP_ERROR: return "error"; default: - /*NOTREACHED*/ assert(0); + /*NOTREACHED*/ assert(0); return NULL; } } @@ -900,9 +902,10 @@ void _gnutls_switch_fips_state(gnutls_fips140_operation_state_t state) case GNUTLS_FIPS140_OP_INITIAL: /* initial can be transitioned to any state */ if (mode != GNUTLS_FIPS140_LAX) { - _gnutls_audit_log(NULL, - "FIPS140-2 operation mode switched from initial to %s\n", - operation_state_to_string(state)); + _gnutls_audit_log( + NULL, + "FIPS140-2 operation mode switched from initial to %s\n", + operation_state_to_string(state)); } _tfips_context->state = state; break; @@ -910,10 +913,10 @@ void _gnutls_switch_fips_state(gnutls_fips140_operation_state_t state) /* approved can only be transitioned to not-approved */ if (likely(state == GNUTLS_FIPS140_OP_NOT_APPROVED)) { if (mode != GNUTLS_FIPS140_LAX) { - _gnutls_audit_log(NULL, - "FIPS140-2 operation mode switched from approved to %s\n", - operation_state_to_string - (state)); + _gnutls_audit_log( + NULL, + "FIPS140-2 operation mode switched from approved to %s\n", + operation_state_to_string(state)); } _tfips_context->state = state; return; @@ -922,11 +925,12 @@ void _gnutls_switch_fips_state(gnutls_fips140_operation_state_t state) default: /* other transitions are prohibited */ if (mode != GNUTLS_FIPS140_LAX) { - _gnutls_audit_log(NULL, - "FIPS140-2 operation mode cannot be switched from %s to %s\n", - operation_state_to_string - (_tfips_context->state), - operation_state_to_string(state)); + _gnutls_audit_log( + NULL, + "FIPS140-2 operation mode cannot be switched from %s to %s\n", + operation_state_to_string( + _tfips_context->state), + operation_state_to_string(state)); } break; } @@ -981,7 +985,8 @@ int gnutls_fips140_run_self_tests(void) _gnutls_switch_lib_state(LIB_STATE_SELFTEST); ret = _gnutls_fips_perform_self_checks2(); - if (gnutls_fips140_mode_enabled() != GNUTLS_FIPS140_DISABLED && ret < 0) { + if (gnutls_fips140_mode_enabled() != GNUTLS_FIPS140_DISABLED && + ret < 0) { _gnutls_switch_lib_state(LIB_STATE_ERROR); _gnutls_audit_log(NULL, "FIPS140-2 self testing part 2 failed\n"); @@ -991,12 +996,12 @@ int gnutls_fips140_run_self_tests(void) } /* Restore the previous FIPS context */ - if (gnutls_fips140_mode_enabled() != GNUTLS_FIPS140_DISABLED - && fips_context) { + if (gnutls_fips140_mode_enabled() != GNUTLS_FIPS140_DISABLED && + fips_context) { if (gnutls_fips140_pop_context() < 0) { _gnutls_switch_lib_state(LIB_STATE_ERROR); - _gnutls_audit_log(NULL, - "FIPS140-2 context restoration failed\n"); + _gnutls_audit_log( + NULL, "FIPS140-2 context restoration failed\n"); } gnutls_fips140_context_deinit(fips_context); } diff --git a/lib/fips.h b/lib/fips.h index ef82a3227a..b2cfc0b602 100644 --- a/lib/fips.h +++ b/lib/fips.h @@ -21,12 +21,12 @@ */ #ifndef GNUTLS_LIB_FIPS_H -# define GNUTLS_LIB_FIPS_H +#define GNUTLS_LIB_FIPS_H -# include "gnutls_int.h" -# include +#include "gnutls_int.h" +#include -# define FIPS140_RND_KEY_SIZE 32 +#define FIPS140_RND_KEY_SIZE 32 typedef enum { LIB_STATE_POWERON, @@ -43,8 +43,7 @@ extern gnutls_crypto_rnd_st _gnutls_fips_rnd_ops; void _gnutls_switch_fips_state(gnutls_fips140_operation_state_t state); -inline static -void _gnutls_switch_lib_state(gnutls_lib_state_t state) +inline static void _gnutls_switch_lib_state(gnutls_lib_state_t state) { /* Once into zombie state no errors can change us */ _gnutls_lib_state = state; @@ -59,16 +58,19 @@ int _gnutls_fips_perform_self_checks1(void); int _gnutls_fips_perform_self_checks2(void); void _gnutls_fips_mode_reset_zombie(void); -# ifdef ENABLE_FIPS140 +#ifdef ENABLE_FIPS140 unsigned _gnutls_fips_mode_enabled(void); -# else -# define _gnutls_fips_mode_enabled() 0 -# endif +#else +#define _gnutls_fips_mode_enabled() 0 +#endif -# define HAVE_LIB_ERROR() unlikely(_gnutls_get_lib_state() != LIB_STATE_OPERATIONAL && _gnutls_get_lib_state() != LIB_STATE_SELFTEST) +#define HAVE_LIB_ERROR() \ + unlikely(_gnutls_get_lib_state() != LIB_STATE_OPERATIONAL && \ + _gnutls_get_lib_state() != LIB_STATE_SELFTEST) -# define FAIL_IF_LIB_ERROR \ - if (HAVE_LIB_ERROR()) return GNUTLS_E_LIB_IN_ERROR_STATE +#define FAIL_IF_LIB_ERROR \ + if (HAVE_LIB_ERROR()) \ + return GNUTLS_E_LIB_IN_ERROR_STATE void _gnutls_switch_lib_state(gnutls_lib_state_t state); @@ -157,21 +159,26 @@ is_cipher_algo_allowed_in_fips(gnutls_cipher_algorithm_t algo) } } -# ifdef ENABLE_FIPS140 +#ifdef ENABLE_FIPS140 /* This will test the condition when in FIPS140-2 mode * and return an error if necessary or ignore */ -# define FIPS_RULE(condition, ret_error, ...) { \ - gnutls_fips_mode_t _mode = _gnutls_fips_mode_enabled(); \ - if (_mode != GNUTLS_FIPS140_DISABLED) { \ - if (condition) { \ - if (_mode == GNUTLS_FIPS140_LOG) { \ - _gnutls_audit_log(NULL, "fips140-2: allowing "__VA_ARGS__); \ - } else if (_mode != GNUTLS_FIPS140_LAX) { \ - _gnutls_debug_log("fips140-2: disallowing "__VA_ARGS__); \ - return ret_error; \ - } \ - } \ - }} +#define FIPS_RULE(condition, ret_error, ...) \ + { \ + gnutls_fips_mode_t _mode = _gnutls_fips_mode_enabled(); \ + if (_mode != GNUTLS_FIPS140_DISABLED) { \ + if (condition) { \ + if (_mode == GNUTLS_FIPS140_LOG) { \ + _gnutls_audit_log( \ + NULL, \ + "fips140-2: allowing " __VA_ARGS__); \ + } else if (_mode != GNUTLS_FIPS140_LAX) { \ + _gnutls_debug_log( \ + "fips140-2: disallowing " __VA_ARGS__); \ + return ret_error; \ + } \ + } \ + } \ + } inline static bool is_mac_algo_allowed(gnutls_mac_algorithm_t algo) { @@ -216,10 +223,10 @@ inline static bool is_cipher_algo_allowed(gnutls_cipher_algorithm_t algo) return true; } -# else -# define is_mac_algo_allowed(x) true -# define is_cipher_algo_allowed(x) true -# define FIPS_RULE(condition, ret_error, ...) -# endif +#else +#define is_mac_algo_allowed(x) true +#define is_cipher_algo_allowed(x) true +#define FIPS_RULE(condition, ret_error, ...) +#endif -#endif /* GNUTLS_LIB_FIPS_H */ +#endif /* GNUTLS_LIB_FIPS_H */ diff --git a/lib/fipshmac.c b/lib/fipshmac.c index fb8fee0d50..51f38f18e5 100644 --- a/lib/fipshmac.c +++ b/lib/fipshmac.c @@ -27,16 +27,16 @@ #ifdef HAVE_DL_ITERATE_PHDR -# include -# include -# include -# include "dirname.h" -# include "errors.h" +#include +#include +#include +#include "dirname.h" +#include "errors.h" -# define FORMAT_VERSION 1 -# define HMAC_SIZE 32 -# define HMAC_ALGO GNUTLS_MAC_SHA256 -# define HMAC_STR_SIZE (2 * HMAC_SIZE + 1) +#define FORMAT_VERSION 1 +#define HMAC_SIZE 32 +#define HMAC_ALGO GNUTLS_MAC_SHA256 +#define HMAC_STR_SIZE (2 * HMAC_SIZE + 1) static int get_hmac(const char *path, char *hmac, size_t hmac_size) { @@ -91,7 +91,7 @@ static int print_lib(const char *path, const char *soname) printf("path = %s\n", real_path); printf("hmac = %s\n", hmac); - cleanup: +cleanup: free(real_path); return ret; } @@ -134,4 +134,4 @@ int main(void) return EXIT_FAILURE; } -#endif /* HAVE_DL_ITERATE_PHDR */ +#endif /* HAVE_DL_ITERATE_PHDR */ diff --git a/lib/global.c b/lib/global.c index 0ae68099cd..1a0d6ce44d 100644 --- a/lib/global.c +++ b/lib/global.c @@ -28,8 +28,8 @@ #include #include -#include /* for _gnutls_hello_ext_init */ -#include /* for _gnutls_supplemental_deinit */ +#include /* for _gnutls_hello_ext_init */ +#include /* for _gnutls_supplemental_deinit */ #include #include #include @@ -45,13 +45,13 @@ #define GNUTLS_MIN_LIBTASN1_VERSION "0.3.4" #ifdef __sun -# pragma fini(lib_deinit) -# pragma init(lib_init) -# define _CONSTRUCTOR -# define _DESTRUCTOR +#pragma fini(lib_deinit) +#pragma init(lib_init) +#define _CONSTRUCTOR +#define _DESTRUCTOR #else -# define _CONSTRUCTOR __attribute__((constructor)) -# define _DESTRUCTOR __attribute__((destructor)) +#define _CONSTRUCTOR __attribute__((constructor)) +#define _DESTRUCTOR __attribute__((destructor)) #endif #ifndef _WIN32 @@ -76,7 +76,7 @@ asn1_node _gnutls_gnutls_asn = NULL; gnutls_log_func _gnutls_log_func = NULL; gnutls_audit_log_func _gnutls_audit_log_func = NULL; -int _gnutls_log_level = 0; /* default log level */ +int _gnutls_log_level = 0; /* default log level */ unsigned int _gnutls_global_version = GNUTLS_VERSION_NUMBER; @@ -176,15 +176,14 @@ void gnutls_global_set_log_level(int level) * This function must be called before gnutls_global_init() is called. * This function is not thread safe. **/ -void -gnutls_global_set_mem_functions(gnutls_alloc_function alloc_func, - gnutls_alloc_function secure_alloc_func, - gnutls_is_secure_function is_secure_func, - gnutls_realloc_function realloc_func, - gnutls_free_function free_func) +void gnutls_global_set_mem_functions(gnutls_alloc_function alloc_func, + gnutls_alloc_function secure_alloc_func, + gnutls_is_secure_function is_secure_func, + gnutls_realloc_function realloc_func, + gnutls_free_function free_func) { - _gnutls_debug_log - ("called the deprecated gnutls_global_set_mem_functions()\n"); + _gnutls_debug_log( + "called the deprecated gnutls_global_set_mem_functions()\n"); } GNUTLS_STATIC_MUTEX(global_init_mutex); @@ -274,9 +273,9 @@ static int _gnutls_global_init(unsigned constructor) */ if (asn1_check_version(GNUTLS_MIN_LIBTASN1_VERSION) == NULL) { gnutls_assert(); - _gnutls_debug_log - ("Checking for libtasn1 failed: %s < %s\n", - asn1_check_version(NULL), GNUTLS_MIN_LIBTASN1_VERSION); + _gnutls_debug_log("Checking for libtasn1 failed: %s < %s\n", + asn1_check_version(NULL), + GNUTLS_MIN_LIBTASN1_VERSION); ret = GNUTLS_E_INCOMPATIBLE_LIBTASN1_LIBRARY; goto out; } @@ -340,8 +339,8 @@ static int _gnutls_global_init(unsigned constructor) ret = _gnutls_fips_perform_self_checks1(); if (ret < 0) { _gnutls_switch_lib_state(LIB_STATE_ERROR); - _gnutls_audit_log(NULL, - "FIPS140-2 self testing part1 failed\n"); + _gnutls_audit_log( + NULL, "FIPS140-2 self testing part1 failed\n"); if (res != 2) { gnutls_assert(); goto out; @@ -363,8 +362,8 @@ static int _gnutls_global_init(unsigned constructor) ret = _gnutls_fips_perform_self_checks2(); if (ret < 0) { _gnutls_switch_lib_state(LIB_STATE_ERROR); - _gnutls_audit_log(NULL, - "FIPS140-2 self testing part 2 failed\n"); + _gnutls_audit_log( + NULL, "FIPS140-2 self testing part 2 failed\n"); if (res != 2) { gnutls_assert(); goto out; @@ -377,7 +376,7 @@ static int _gnutls_global_init(unsigned constructor) _gnutls_switch_lib_state(LIB_STATE_OPERATIONAL); ret = 0; - out: +out: _gnutls_init_ret = ret; if (!constructor) { (void)gnutls_static_mutex_unlock(&global_init_mutex); @@ -438,7 +437,7 @@ static void _gnutls_global_deinit(unsigned destructor) _gnutls_init--; } - fail: +fail: if (!destructor) { (void)gnutls_static_mutex_unlock(&global_init_mutex); } @@ -501,8 +500,8 @@ static void _CONSTRUCTOR lib_init(void) e = secure_getenv("GNUTLS_NO_EXPLICIT_INIT"); if (e != NULL) { - _gnutls_debug_log - ("GNUTLS_NO_EXPLICIT_INIT is deprecated; use GNUTLS_NO_IMPLICIT_INIT\n"); + _gnutls_debug_log( + "GNUTLS_NO_EXPLICIT_INIT is deprecated; use GNUTLS_NO_IMPLICIT_INIT\n"); ret = atoi(e); if (ret == 1) return; @@ -533,8 +532,8 @@ static void _DESTRUCTOR lib_deinit(void) e = secure_getenv("GNUTLS_NO_EXPLICIT_INIT"); if (e != NULL) { - _gnutls_debug_log - ("GNUTLS_NO_EXPLICIT_INIT is deprecated; use GNUTLS_NO_IMPLICIT_INIT\n"); + _gnutls_debug_log( + "GNUTLS_NO_EXPLICIT_INIT is deprecated; use GNUTLS_NO_IMPLICIT_INIT\n"); ret = atoi(e); if (ret == 1) return; @@ -545,19 +544,19 @@ static void _DESTRUCTOR lib_deinit(void) static const struct gnutls_library_config_st _gnutls_library_config[] = { #ifdef FIPS_MODULE_NAME - {"fips-module-name", FIPS_MODULE_NAME}, + { "fips-module-name", FIPS_MODULE_NAME }, #endif #ifdef FIPS_MODULE_VERSION - {"fips-module-version", FIPS_MODULE_VERSION}, + { "fips-module-version", FIPS_MODULE_VERSION }, #endif - {"libgnutls-soname", GNUTLS_LIBRARY_SONAME}, - {"libnettle-soname", NETTLE_LIBRARY_SONAME}, - {"libhogweed-soname", HOGWEED_LIBRARY_SONAME}, - {"libgmp-soname", GMP_LIBRARY_SONAME}, - {"hardware-features", HW_FEATURES}, - {"tls-features", TLS_FEATURES}, - {"default-system-config", SYSTEM_PRIORITY_FILE}, - {NULL, NULL} + { "libgnutls-soname", GNUTLS_LIBRARY_SONAME }, + { "libnettle-soname", NETTLE_LIBRARY_SONAME }, + { "libhogweed-soname", HOGWEED_LIBRARY_SONAME }, + { "libgmp-soname", GMP_LIBRARY_SONAME }, + { "hardware-features", HW_FEATURES }, + { "tls-features", TLS_FEATURES }, + { "default-system-config", SYSTEM_PRIORITY_FILE }, + { NULL, NULL } }; /** diff --git a/lib/global.h b/lib/global.h index 72aeef9f4c..ae16af813c 100644 --- a/lib/global.h +++ b/lib/global.h @@ -21,10 +21,10 @@ */ #ifndef GNUTLS_LIB_GLOBAL_H -# define GNUTLS_LIB_GLOBAL_H +#define GNUTLS_LIB_GLOBAL_H -# include -# include +#include +#include int gnutls_is_secure_memory(const void *mem); @@ -35,8 +35,8 @@ extern asn1_node _gnutls_gnutls_asn; * prevent warnings, since libtasn1 doesn't * use the const keyword in its functions. */ -# define _gnutls_get_gnutls_asn() ((asn1_node) _gnutls_gnutls_asn) -# define _gnutls_get_pkix() ((asn1_node) _gnutls_pkix1_asn) +#define _gnutls_get_gnutls_asn() ((asn1_node)_gnutls_gnutls_asn) +#define _gnutls_get_pkix() ((asn1_node)_gnutls_pkix1_asn) extern gnutls_log_func _gnutls_log_func; extern gnutls_audit_log_func _gnutls_audit_log_func; @@ -50,4 +50,4 @@ extern void _gnutls_prepare_to_load_system_priorities(void); extern void _gnutls_unload_system_priorities(void); extern bool _gnutls_allowlisting_mode(void); -#endif /* GNUTLS_LIB_GLOBAL_H */ +#endif /* GNUTLS_LIB_GLOBAL_H */ diff --git a/lib/gnutls_int.h b/lib/gnutls_int.h index 0d0b9a8e5e..5d7ff9bff9 100644 --- a/lib/gnutls_int.h +++ b/lib/gnutls_int.h @@ -22,128 +22,133 @@ */ #ifndef GNUTLS_LIB_GNUTLS_INT_H -# define GNUTLS_LIB_GNUTLS_INT_H - -# ifdef HAVE_CONFIG_H -# include -# endif - -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# ifdef NO_SSIZE_T -# define HAVE_SSIZE_T +#define GNUTLS_LIB_GNUTLS_INT_H + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef NO_SSIZE_T +#define HAVE_SSIZE_T typedef int ssize_t; -# endif +#endif -# include -# include -# include -# if HAVE_SYS_SOCKET_H -# include -# elif HAVE_WS2TCPIP_H -# include -# endif -# include +#include +#include +#include +#if HAVE_SYS_SOCKET_H +#include +#elif HAVE_WS2TCPIP_H +#include +#endif +#include -# include "attribute.h" +#include "attribute.h" -# define ENABLE_ALIGN16 +#define ENABLE_ALIGN16 -# ifdef __clang_major -# define _GNUTLS_CLANG_VERSION (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) -# else -# define _GNUTLS_CLANG_VERSION 0 -# endif +#ifdef __clang_major +#define _GNUTLS_CLANG_VERSION \ + (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) +#else +#define _GNUTLS_CLANG_VERSION 0 +#endif /* clang also defines __GNUC__. It promotes a GCC version of 4.2.1. */ -# ifdef __GNUC__ -# define _GNUTLS_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) -# endif - -# if _GNUTLS_GCC_VERSION >= 30100 -# define likely(x) __builtin_expect((x), 1) -# define unlikely(x) __builtin_expect((x), 0) -# else -# define likely -# define unlikely -# endif - -# include -# include -# include -# include -# include +#ifdef __GNUC__ +#define _GNUTLS_GCC_VERSION \ + (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) +#endif + +#if _GNUTLS_GCC_VERSION >= 30100 +#define likely(x) __builtin_expect((x), 1) +#define unlikely(x) __builtin_expect((x), 0) +#else +#define likely +#define unlikely +#endif + +#include +#include +#include +#include +#include /* in case we compile with system headers taking priority, we * make sure that some new attributes are still available. */ -# ifndef __GNUTLS_CONST__ -# define __GNUTLS_CONST__ -# endif +#ifndef __GNUTLS_CONST__ +#define __GNUTLS_CONST__ +#endif /* The size of a handshake message should not * be larger than this value. */ -# define MAX_HANDSHAKE_PACKET_SIZE 128*1024 +#define MAX_HANDSHAKE_PACKET_SIZE 128 * 1024 -# define GNUTLS_DEF_SESSION_ID_SIZE 32 +#define GNUTLS_DEF_SESSION_ID_SIZE 32 /* The maximum digest size of hash algorithms. */ -# define MAX_FILENAME 512 -# define MAX_HASH_SIZE 64 +#define MAX_FILENAME 512 +#define MAX_HASH_SIZE 64 -# define MAX_MAC_KEY_SIZE 64 +#define MAX_MAC_KEY_SIZE 64 -# define MAX_CIPHER_BLOCK_SIZE 64 /* CHACHA20 */ -# define MAX_CIPHER_KEY_SIZE 32 +#define MAX_CIPHER_BLOCK_SIZE 64 /* CHACHA20 */ +#define MAX_CIPHER_KEY_SIZE 32 -# define MAX_CIPHER_IV_SIZE 16 +#define MAX_CIPHER_IV_SIZE 16 /* Maximum size of 2^16-1 has been chosen so that usernames can hold * PSK identities as defined in RFC 4279 section 2 and RFC 8446 section 4.2.11 */ -# define MAX_USERNAME_SIZE 65535 -# define MAX_SERVER_NAME_SIZE 256 +#define MAX_USERNAME_SIZE 65535 +#define MAX_SERVER_NAME_SIZE 256 -# define AEAD_EXPLICIT_DATA_SIZE 8 -# define AEAD_IMPLICIT_DATA_SIZE 4 +#define AEAD_EXPLICIT_DATA_SIZE 8 +#define AEAD_IMPLICIT_DATA_SIZE 4 -# define GNUTLS_MASTER_SIZE 48 -# define GNUTLS_RANDOM_SIZE 32 +#define GNUTLS_MASTER_SIZE 48 +#define GNUTLS_RANDOM_SIZE 32 /* Under TLS1.3 a hello retry request is sent as server hello */ -# define REAL_HSK_TYPE(t) ((t)==GNUTLS_HANDSHAKE_HELLO_RETRY_REQUEST?GNUTLS_HANDSHAKE_SERVER_HELLO:t) +#define REAL_HSK_TYPE(t) \ + ((t) == GNUTLS_HANDSHAKE_HELLO_RETRY_REQUEST ? \ + GNUTLS_HANDSHAKE_SERVER_HELLO : \ + t) /* DTLS */ -# define DTLS_RETRANS_TIMEOUT 1000 +#define DTLS_RETRANS_TIMEOUT 1000 /* TLS Extensions */ /* we can receive up to MAX_EXT_TYPES extensions. */ -# define MAX_EXT_TYPES 64 +#define MAX_EXT_TYPES 64 /* TLS-internal extension (will be parsed after a ciphersuite is selected). * This amends the gnutls_ext_parse_type_t. Not exported yet to allow more refining * prior to finalizing an API. */ -# define _GNUTLS_EXT_TLS_POST_CS 177 +#define _GNUTLS_EXT_TLS_POST_CS 177 /* expire time for resuming sessions */ -# define DEFAULT_EXPIRE_TIME 21600 -# define STEK_ROTATION_PERIOD_PRODUCT 3 -# define DEFAULT_HANDSHAKE_TIMEOUT_MS 40*1000 +#define DEFAULT_EXPIRE_TIME 21600 +#define STEK_ROTATION_PERIOD_PRODUCT 3 +#define DEFAULT_HANDSHAKE_TIMEOUT_MS 40 * 1000 /* The EC group to be used when the extension * supported groups/curves is not present */ -# define DEFAULT_EC_GROUP GNUTLS_GROUP_SECP256R1 +#define DEFAULT_EC_GROUP GNUTLS_GROUP_SECP256R1 typedef enum transport_t { GNUTLS_STREAM, @@ -161,8 +166,8 @@ typedef enum hs_stage_t { typedef enum record_send_state_t { RECORD_SEND_NORMAL = 0, - RECORD_SEND_CORKED, /* corked and transition to NORMAL afterwards */ - RECORD_SEND_CORKED_TO_KU, /* corked but must transition to RECORD_SEND_KEY_UPDATE_1 */ + RECORD_SEND_CORKED, /* corked and transition to NORMAL afterwards */ + RECORD_SEND_CORKED_TO_KU, /* corked but must transition to RECORD_SEND_KEY_UPDATE_1 */ RECORD_SEND_KEY_UPDATE_1, RECORD_SEND_KEY_UPDATE_2, RECORD_SEND_KEY_UPDATE_3 @@ -173,110 +178,174 @@ typedef enum record_send_state_t { * in the future when the internal structure changes than all the conditionals * itself. */ -# define IS_SERVER(session) (session->security_parameters.entity == GNUTLS_SERVER) +#define IS_SERVER(session) \ + (session->security_parameters.entity == GNUTLS_SERVER) /* To check whether we have a DTLS session */ -# define IS_DTLS(session) (session->internals.transport == GNUTLS_DGRAM) +#define IS_DTLS(session) (session->internals.transport == GNUTLS_DGRAM) /* To check whether we have a KTLS enabled */ -# define IS_KTLS_ENABLED(session, interface) (session->internals.ktls_enabled & interface) +#define IS_KTLS_ENABLED(session, interface) \ + (session->internals.ktls_enabled & interface) /* the maximum size of encrypted packets */ -# define DEFAULT_MAX_RECORD_SIZE 16384 -# define DEFAULT_MAX_EARLY_DATA_SIZE 16384 -# define TLS_RECORD_HEADER_SIZE 5 -# define DTLS_RECORD_HEADER_SIZE (TLS_RECORD_HEADER_SIZE+8) -# define RECORD_HEADER_SIZE(session) (IS_DTLS(session) ? DTLS_RECORD_HEADER_SIZE : TLS_RECORD_HEADER_SIZE) -# define MAX_RECORD_HEADER_SIZE DTLS_RECORD_HEADER_SIZE +#define DEFAULT_MAX_RECORD_SIZE 16384 +#define DEFAULT_MAX_EARLY_DATA_SIZE 16384 +#define TLS_RECORD_HEADER_SIZE 5 +#define DTLS_RECORD_HEADER_SIZE (TLS_RECORD_HEADER_SIZE + 8) +#define RECORD_HEADER_SIZE(session) \ + (IS_DTLS(session) ? DTLS_RECORD_HEADER_SIZE : TLS_RECORD_HEADER_SIZE) +#define MAX_RECORD_HEADER_SIZE DTLS_RECORD_HEADER_SIZE -# define MIN_RECORD_SIZE 512 -# define MIN_RECORD_SIZE_SMALL 64 +#define MIN_RECORD_SIZE 512 +#define MIN_RECORD_SIZE_SMALL 64 /* The following macro is used to calculate the overhead when sending. * when receiving we use a different way as there are implementations that * store more data than allowed. */ -# define MAX_RECORD_SEND_OVERHEAD(session) (MAX_CIPHER_BLOCK_SIZE/*iv*/+MAX_PAD_SIZE+MAX_HASH_SIZE/*MAC*/) -# define MAX_PAD_SIZE 255 -# define EXTRA_COMP_SIZE 2048 - -# define TLS_HANDSHAKE_HEADER_SIZE 4 -# define DTLS_HANDSHAKE_HEADER_SIZE (TLS_HANDSHAKE_HEADER_SIZE+8) -# define HANDSHAKE_HEADER_SIZE(session) (IS_DTLS(session) ? DTLS_HANDSHAKE_HEADER_SIZE : TLS_HANDSHAKE_HEADER_SIZE) -# define MAX_HANDSHAKE_HEADER_SIZE DTLS_HANDSHAKE_HEADER_SIZE +#define MAX_RECORD_SEND_OVERHEAD(session) \ + (MAX_CIPHER_BLOCK_SIZE /*iv*/ + MAX_PAD_SIZE + MAX_HASH_SIZE /*MAC*/) +#define MAX_PAD_SIZE 255 +#define EXTRA_COMP_SIZE 2048 + +#define TLS_HANDSHAKE_HEADER_SIZE 4 +#define DTLS_HANDSHAKE_HEADER_SIZE (TLS_HANDSHAKE_HEADER_SIZE + 8) +#define HANDSHAKE_HEADER_SIZE(session) \ + (IS_DTLS(session) ? DTLS_HANDSHAKE_HEADER_SIZE : \ + TLS_HANDSHAKE_HEADER_SIZE) +#define MAX_HANDSHAKE_HEADER_SIZE DTLS_HANDSHAKE_HEADER_SIZE /* Maximum seed size for provable parameters */ -# define MAX_PVP_SEED_SIZE 256 +#define MAX_PVP_SEED_SIZE 256 /* This is the maximum handshake message size we send without fragmentation. This currently ignores record layer overhead. */ -# define DTLS_DEFAULT_MTU 1200 +#define DTLS_DEFAULT_MTU 1200 /* the maximum size of the DTLS cookie */ -# define DTLS_MAX_COOKIE_SIZE 32 +#define DTLS_MAX_COOKIE_SIZE 32 /* The maximum number of HELLO_VERIFY_REQUEST messages the client processes before aborting. */ -# define MAX_HANDSHAKE_HELLO_VERIFY_REQUESTS 5 +#define MAX_HANDSHAKE_HELLO_VERIFY_REQUESTS 5 -# define MAX_PK_PARAM_SIZE 2048 +#define MAX_PK_PARAM_SIZE 2048 /* defaults for verification functions */ -# define DEFAULT_MAX_VERIFY_DEPTH 16 -# define DEFAULT_MAX_VERIFY_BITS (MAX_PK_PARAM_SIZE*8) -# define MAX_VERIFY_DEPTH 4096 - -# include - -# define MEMSUB(x,y) ((ssize_t)((ptrdiff_t)x-(ptrdiff_t)y)) - -# define DECR_LEN(len, x) DECR_LENGTH_RET(len, x, GNUTLS_E_UNEXPECTED_PACKET_LENGTH) -# define DECR_LEN_FINAL(len, x) do { \ - if (len != x) \ - return gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET_LENGTH); \ - else \ - len = 0; \ +#define DEFAULT_MAX_VERIFY_DEPTH 16 +#define DEFAULT_MAX_VERIFY_BITS (MAX_PK_PARAM_SIZE * 8) +#define MAX_VERIFY_DEPTH 4096 + +#include + +#define MEMSUB(x, y) ((ssize_t)((ptrdiff_t)x - (ptrdiff_t)y)) + +#define DECR_LEN(len, x) \ + DECR_LENGTH_RET(len, x, GNUTLS_E_UNEXPECTED_PACKET_LENGTH) +#define DECR_LEN_FINAL(len, x) \ + do { \ + if (len != x) \ + return gnutls_assert_val( \ + GNUTLS_E_UNEXPECTED_PACKET_LENGTH); \ + else \ + len = 0; \ + } while (0) +#define DECR_LENGTH_RET(len, x, RET) DECR_LENGTH_COM(len, x, return RET) +#define DECR_LENGTH_COM(len, x, COM) \ + do { \ + if (len < x) { \ + gnutls_assert(); \ + COM; \ + } else \ + len -= x; \ } while (0) -# define DECR_LENGTH_RET(len, x, RET) DECR_LENGTH_COM(len, x, return RET) -# define DECR_LENGTH_COM(len, x, COM) do { if (len - -typedef enum handshake_state_t { STATE0 = 0, STATE1, STATE2, - STATE3, STATE4, STATE5, STATE6, STATE7, STATE8, - STATE9, STATE10, STATE11, STATE12, STATE13, STATE14, - STATE15, STATE16, STATE17, STATE18, STATE19, - STATE20 = 20, STATE21, STATE22, - STATE30 = 30, STATE31, STATE40 = 40, STATE41, STATE50 = 50, - STATE90 = 90, STATE91, STATE92, STATE93, STATE94, STATE99 = 99, - STATE100 = 100, STATE101, STATE102, STATE103, STATE104, - STATE105, STATE106, STATE107, STATE108, STATE109, STATE110, - STATE111, STATE112, STATE113, STATE114, STATE115, - STATE150 /* key update */ + +#define GNUTLS_POINTER_TO_INT(_) ((int)GNUTLS_POINTER_TO_INT_CAST(_)) +#define GNUTLS_INT_TO_POINTER(_) ((void *)GNUTLS_POINTER_TO_INT_CAST(_)) + +#define GNUTLS_KX_INVALID (-1) + +#include + +typedef enum handshake_state_t { + STATE0 = 0, + STATE1, + STATE2, + STATE3, + STATE4, + STATE5, + STATE6, + STATE7, + STATE8, + STATE9, + STATE10, + STATE11, + STATE12, + STATE13, + STATE14, + STATE15, + STATE16, + STATE17, + STATE18, + STATE19, + STATE20 = 20, + STATE21, + STATE22, + STATE30 = 30, + STATE31, + STATE40 = 40, + STATE41, + STATE50 = 50, + STATE90 = 90, + STATE91, + STATE92, + STATE93, + STATE94, + STATE99 = 99, + STATE100 = 100, + STATE101, + STATE102, + STATE103, + STATE104, + STATE105, + STATE106, + STATE107, + STATE108, + STATE109, + STATE110, + STATE111, + STATE112, + STATE113, + STATE114, + STATE115, + STATE150 /* key update */ } handshake_state_t; typedef enum bye_state_t { - BYE_STATE0 = 0, BYE_STATE1, BYE_STATE2 + BYE_STATE0 = 0, + BYE_STATE1, + BYE_STATE2 } bye_state_t; typedef enum send_ticket_state_t { - TICKET_STATE0 = 0, TICKET_STATE1 + TICKET_STATE0 = 0, + TICKET_STATE1 } send_ticket_state_t; typedef enum reauth_state_t { - REAUTH_STATE0 = 0, REAUTH_STATE1, REAUTH_STATE2, REAUTH_STATE3, - REAUTH_STATE4, REAUTH_STATE5 + REAUTH_STATE0 = 0, + REAUTH_STATE1, + REAUTH_STATE2, + REAUTH_STATE3, + REAUTH_STATE4, + REAUTH_STATE5 } reauth_state_t; -# define TICKET_STATE session->internals.ticket_state -# define BYE_STATE session->internals.bye_state -# define REAUTH_STATE session->internals.reauth_state +#define TICKET_STATE session->internals.ticket_state +#define BYE_STATE session->internals.bye_state +#define REAUTH_STATE session->internals.reauth_state typedef enum heartbeat_state_t { SHB_SEND1 = 0, @@ -288,23 +357,23 @@ typedef enum recv_state_t { RECV_STATE_0 = 0, RECV_STATE_DTLS_RETRANSMIT, /* client-side false start state */ - RECV_STATE_FALSE_START_HANDLING, /* we are calling gnutls_handshake() within record_recv() */ - RECV_STATE_FALSE_START, /* gnutls_record_recv() should complete the handshake */ + RECV_STATE_FALSE_START_HANDLING, /* we are calling gnutls_handshake() within record_recv() */ + RECV_STATE_FALSE_START, /* gnutls_record_recv() should complete the handshake */ /* async handshake msg state */ - RECV_STATE_ASYNC_HANDSHAKE, /* an incomplete async handshake message was seen */ + RECV_STATE_ASYNC_HANDSHAKE, /* an incomplete async handshake message was seen */ /* server-side early start under TLS1.3; enabled when no client cert is received */ - RECV_STATE_EARLY_START_HANDLING, /* we are calling gnutls_handshake() within record_recv() */ - RECV_STATE_EARLY_START, /* gnutls_record_recv() should complete the handshake */ - RECV_STATE_REHANDSHAKE, /* gnutls_record_recv() should complete any incoming re-handshake requests */ - RECV_STATE_REAUTH /* gnutls_record_recv() should complete any incoming reauthentication requests */ + RECV_STATE_EARLY_START_HANDLING, /* we are calling gnutls_handshake() within record_recv() */ + RECV_STATE_EARLY_START, /* gnutls_record_recv() should complete the handshake */ + RECV_STATE_REHANDSHAKE, /* gnutls_record_recv() should complete any incoming re-handshake requests */ + RECV_STATE_REAUTH /* gnutls_record_recv() should complete any incoming reauthentication requests */ } recv_state_t; -# include "str.h" +#include "str.h" /* This is the maximum number of algorithms (ciphers or macs etc). * keep it synced with GNUTLS_MAX_ALGORITHM_NUM in gnutls.h */ -# define MAX_ALGOS GNUTLS_MAX_ALGORITHM_NUM +#define MAX_ALGOS GNUTLS_MAX_ALGORITHM_NUM /* IDs are allocated in a way that all values fit in 64-bit integer as (1< +#include verify(GNUTLS_EXTENSION_MAX < GNUTLS_EXTENSION_MAX_VALUE); verify(GNUTLS_EXTENSION_MAX < MAX_EXT_TYPES); @@ -364,28 +433,35 @@ verify(MAX_EXT_TYPES <= UINT8_MAX); /* The 'verify' symbol from is used extensively in the * code; undef it to avoid clash */ -# undef verify +#undef verify -typedef enum { CIPHER_STREAM, CIPHER_BLOCK, CIPHER_AEAD } cipher_type_t; +typedef enum { + CIPHER_STREAM, + CIPHER_BLOCK, + CIPHER_AEAD +} cipher_type_t; /* Record Protocol */ typedef enum content_type_t { - GNUTLS_CHANGE_CIPHER_SPEC = 20, GNUTLS_ALERT, - GNUTLS_HANDSHAKE, GNUTLS_APPLICATION_DATA, + GNUTLS_CHANGE_CIPHER_SPEC = 20, + GNUTLS_ALERT, + GNUTLS_HANDSHAKE, + GNUTLS_APPLICATION_DATA, GNUTLS_HEARTBEAT } content_type_t; -# define GNUTLS_PK_ANY (gnutls_pk_algorithm_t)-1 -# define GNUTLS_PK_NONE (gnutls_pk_algorithm_t)-2 +#define GNUTLS_PK_ANY (gnutls_pk_algorithm_t) - 1 +#define GNUTLS_PK_NONE (gnutls_pk_algorithm_t) - 2 -# define GNUTLS_PK_IS_RSA(pk) ((pk) == GNUTLS_PK_RSA || (pk) == GNUTLS_PK_RSA_PSS) +#define GNUTLS_PK_IS_RSA(pk) \ + ((pk) == GNUTLS_PK_RSA || (pk) == GNUTLS_PK_RSA_PSS) /* Message buffers (mbuffers) structures */ /* this is actually the maximum number of distinct handshake * messages that can arrive in a single flight */ -# define MAX_HANDSHAKE_MSGS 6 +#define MAX_HANDSHAKE_MSGS 6 typedef struct { /* Handshake layer type and sequence of message */ gnutls_handshake_description_t htype; @@ -471,18 +547,19 @@ typedef struct auth_cred_st { } auth_cred_st; /* session ticket definitions */ -# define TICKET_MASTER_KEY_SIZE (TICKET_KEY_NAME_SIZE+TICKET_CIPHER_KEY_SIZE+TICKET_MAC_SECRET_SIZE) -# define TICKET_KEY_NAME_SIZE 16 -# define TICKET_CIPHER_KEY_SIZE 32 -# define TICKET_MAC_SECRET_SIZE 16 +#define TICKET_MASTER_KEY_SIZE \ + (TICKET_KEY_NAME_SIZE + TICKET_CIPHER_KEY_SIZE + TICKET_MAC_SECRET_SIZE) +#define TICKET_KEY_NAME_SIZE 16 +#define TICKET_CIPHER_KEY_SIZE 32 +#define TICKET_MAC_SECRET_SIZE 16 /* These are restricted by TICKET_CIPHER_KEY_SIZE and TICKET_MAC_SECRET_SIZE */ -# define TICKET_CIPHER GNUTLS_CIPHER_AES_256_CBC -# define TICKET_IV_SIZE 16 -# define TICKET_BLOCK_SIZE 16 +#define TICKET_CIPHER GNUTLS_CIPHER_AES_256_CBC +#define TICKET_IV_SIZE 16 +#define TICKET_BLOCK_SIZE 16 -# define TICKET_MAC_ALGO GNUTLS_MAC_SHA1 -# define TICKET_MAC_SIZE 20 /* HMAC-SHA1 */ +#define TICKET_MAC_ALGO GNUTLS_MAC_SHA1 +#define TICKET_MAC_SIZE 20 /* HMAC-SHA1 */ struct ticket_st { uint8_t key_name[TICKET_KEY_NAME_SIZE]; @@ -493,22 +570,22 @@ struct ticket_st { }; struct binder_data_st { - const struct mac_entry_st *prf; /* non-null if this struct is set */ + const struct mac_entry_st *prf; /* non-null if this struct is set */ gnutls_datum_t psk; /* 0-based index of the selected PSK. * This only applies if the HSK_PSK_SELECTED flag is set in internals.hsk_flags, * which signals a PSK has indeed been selected. */ uint8_t idx; - uint8_t resumption; /* whether it is a resumption binder */ + uint8_t resumption; /* whether it is a resumption binder */ }; -typedef void (*gnutls_stek_rotation_callback_t)(const gnutls_datum_t * prev_key, - const gnutls_datum_t * new_key, +typedef void (*gnutls_stek_rotation_callback_t)(const gnutls_datum_t *prev_key, + const gnutls_datum_t *new_key, uint64_t t); struct gnutls_key_st { - struct { /* These are kept outside the TLS1.3 union as they are + struct { /* These are kept outside the TLS1.3 union as they are * negotiated via extension, even before protocol is negotiated */ gnutls_pk_params_st ecdh_params; gnutls_pk_params_st ecdhx_params; @@ -525,25 +602,32 @@ struct gnutls_key_st { /* the current (depending on state) secret, can be * early_secret, client_early_traffic_secret, ... */ uint8_t temp_secret[MAX_HASH_SIZE]; - unsigned temp_secret_size; /* depends on negotiated PRF size */ - uint8_t e_ckey[MAX_HASH_SIZE]; /* client_early_traffic_secret */ - uint8_t hs_ckey[MAX_HASH_SIZE]; /* client_hs_traffic_secret */ - uint8_t hs_skey[MAX_HASH_SIZE]; /* server_hs_traffic_secret */ - uint8_t ap_ckey[MAX_HASH_SIZE]; /* client_ap_traffic_secret */ - uint8_t ap_skey[MAX_HASH_SIZE]; /* server_ap_traffic_secret */ - uint8_t ap_expkey[MAX_HASH_SIZE]; /* {early_,}exporter_master_secret */ - uint8_t ap_rms[MAX_HASH_SIZE]; /* resumption_master_secret */ - } tls13; /* tls1.3 */ + unsigned temp_secret_size; /* depends on negotiated PRF size */ + uint8_t e_ckey + [MAX_HASH_SIZE]; /* client_early_traffic_secret */ + uint8_t hs_ckey + [MAX_HASH_SIZE]; /* client_hs_traffic_secret */ + uint8_t hs_skey + [MAX_HASH_SIZE]; /* server_hs_traffic_secret */ + uint8_t ap_ckey + [MAX_HASH_SIZE]; /* client_ap_traffic_secret */ + uint8_t ap_skey + [MAX_HASH_SIZE]; /* server_ap_traffic_secret */ + uint8_t ap_expkey + [MAX_HASH_SIZE]; /* {early_,}exporter_master_secret */ + uint8_t ap_rms[MAX_HASH_SIZE]; /* resumption_master_secret */ + } tls13; /* tls1.3 */ /* Follow the SSL3.0 and TLS1.2 key exchanges */ struct { /* For ECDH KX */ struct { - gnutls_pk_params_st params; /* private part */ + gnutls_pk_params_st params; /* private part */ /* public part */ bigint_t x; bigint_t y; - gnutls_datum_t raw; /* public key used in ECDHX (point) */ + gnutls_datum_t + raw; /* public key used in ECDHX (point) */ } ecdh; /* For DH KX */ @@ -564,7 +648,7 @@ struct gnutls_key_st { bigint_t a; bigint_t x; } srp; - } tls12; /* from ssl3.0 to tls12 */ + } tls12; /* from ssl3.0 to tls12 */ } proto; /* binders / pre-shared keys in use; temporary storage. @@ -579,13 +663,13 @@ struct gnutls_key_st { /* TLS pre-master key; applies to 1.2 and 1.3 */ gnutls_datum_t key; - uint8_t - /* The key to encrypt and decrypt session tickets */ - session_ticket_key[TICKET_MASTER_KEY_SIZE], - /* Static buffer for the previous key, whenever we need it */ - previous_ticket_key[TICKET_MASTER_KEY_SIZE], - /* Initial key supplied by the caller */ - initial_stek[TICKET_MASTER_KEY_SIZE]; + uint8_t + /* The key to encrypt and decrypt session tickets */ + session_ticket_key[TICKET_MASTER_KEY_SIZE], + /* Static buffer for the previous key, whenever we need it */ + previous_ticket_key[TICKET_MASTER_KEY_SIZE], + /* Initial key supplied by the caller */ + initial_stek[TICKET_MASTER_KEY_SIZE]; /* Whether the initial_stek is set through * gnutls_session_ticket_enable_server() */ @@ -599,9 +683,9 @@ struct gnutls_key_st { */ void *auth_info; gnutls_credentials_type_t auth_info_type; - int auth_info_size; /* needed in order to store to db for restoring + int auth_info_size; /* needed in order to store to db for restoring */ - auth_cred_st *cred; /* used to specify keys/certificates etc */ + auth_cred_st *cred; /* used to specify keys/certificates etc */ struct { uint64_t last_result; @@ -623,10 +707,17 @@ typedef struct record_state_st record_state_st; struct record_parameters_st; typedef struct record_parameters_st record_parameters_st; -# define GNUTLS_CIPHER_FLAG_ONLY_AEAD (1 << 0) /* When set, this cipher is only available through the new AEAD API */ -# define GNUTLS_CIPHER_FLAG_XOR_NONCE (1 << 1) /* In this TLS AEAD cipher xor the implicit_iv with the nonce */ -# define GNUTLS_CIPHER_FLAG_NO_REKEY (1 << 2) /* whether this tls1.3 cipher doesn't need to rekey after 2^24 messages */ -# define GNUTLS_CIPHER_FLAG_TAG_PREFIXED (1 << 3) /* When set, this cipher prefixes authentication tag */ +#define GNUTLS_CIPHER_FLAG_ONLY_AEAD \ + (1 \ + << 0) /* When set, this cipher is only available through the new AEAD API */ +#define GNUTLS_CIPHER_FLAG_XOR_NONCE \ + (1 \ + << 1) /* In this TLS AEAD cipher xor the implicit_iv with the nonce */ +#define GNUTLS_CIPHER_FLAG_NO_REKEY \ + (1 \ + << 2) /* whether this tls1.3 cipher doesn't need to rekey after 2^24 messages */ +#define GNUTLS_CIPHER_FLAG_TAG_PREFIXED \ + (1 << 3) /* When set, this cipher prefixes authentication tag */ /* cipher and mac parameters */ typedef struct cipher_entry_st { @@ -635,9 +726,9 @@ typedef struct cipher_entry_st { uint16_t blocksize; uint16_t keysize; cipher_type_t type; - uint16_t implicit_iv; /* the size of implicit IV - the IV generated but not sent */ - uint16_t explicit_iv; /* the size of explicit IV - the IV stored in record */ - uint16_t cipher_iv; /* the size of IV needed by the cipher */ + uint16_t implicit_iv; /* the size of implicit IV - the IV generated but not sent */ + uint16_t explicit_iv; /* the size of explicit IV - the IV stored in record */ + uint16_t cipher_iv; /* the size of IV needed by the cipher */ uint16_t tagsize; unsigned flags; } cipher_entry_st; @@ -649,14 +740,14 @@ typedef struct gnutls_cipher_suite_entry_st { gnutls_cipher_algorithm_t block_algorithm; gnutls_kx_algorithm_t kx_algorithm; gnutls_mac_algorithm_t mac_algorithm; - gnutls_protocol_t min_version; /* this cipher suite is supported + gnutls_protocol_t min_version; /* this cipher suite is supported * from 'version' and above; */ - gnutls_protocol_t max_version; /* this cipher suite is not supported + gnutls_protocol_t max_version; /* this cipher suite is not supported * after 'version' and above; */ - gnutls_protocol_t min_dtls_version; /* DTLS min version */ - gnutls_protocol_t max_dtls_version; /* DTLS max version */ + gnutls_protocol_t min_dtls_version; /* DTLS min version */ + gnutls_protocol_t max_dtls_version; /* DTLS max version */ gnutls_mac_algorithm_t prf; } gnutls_cipher_suite_entry_st; @@ -669,51 +760,57 @@ typedef struct gnutls_group_entry_st { const unsigned *q_bits; gnutls_ecc_curve_t curve; gnutls_pk_algorithm_t pk; - unsigned tls_id; /* The RFC4492 namedCurve ID or TLS 1.3 group ID */ + unsigned tls_id; /* The RFC4492 namedCurve ID or TLS 1.3 group ID */ } gnutls_group_entry_st; -# define GNUTLS_MAC_FLAG_PREIMAGE_INSECURE 1 /* if this algorithm should not be trusted for pre-image attacks */ -# define GNUTLS_MAC_FLAG_CONTINUOUS_MAC (1 << 1) /* if this MAC should be used in a 'continuous' way in TLS */ -# define GNUTLS_MAC_FLAG_PREIMAGE_INSECURE_REVERTIBLE (1 << 2) /* if this algorithm should not be trusted for pre-image attacks, but can be enabled through API */ -# define GNUTLS_MAC_FLAG_ALLOW_INSECURE_REVERTIBLE (1 << 3) /* when checking with _gnutls_digest_is_insecure2, don't treat revertible setting as fatal */ +#define GNUTLS_MAC_FLAG_PREIMAGE_INSECURE \ + 1 /* if this algorithm should not be trusted for pre-image attacks */ +#define GNUTLS_MAC_FLAG_CONTINUOUS_MAC \ + (1 << 1) /* if this MAC should be used in a 'continuous' way in TLS */ +#define GNUTLS_MAC_FLAG_PREIMAGE_INSECURE_REVERTIBLE \ + (1 \ + << 2) /* if this algorithm should not be trusted for pre-image attacks, but can be enabled through API */ +#define GNUTLS_MAC_FLAG_ALLOW_INSECURE_REVERTIBLE \ + (1 \ + << 3) /* when checking with _gnutls_digest_is_insecure2, don't treat revertible setting as fatal */ /* This structure is used both for MACs and digests */ typedef struct mac_entry_st { const char *name; - const char *oid; /* OID of the hash - if it is a hash */ - const char *mac_oid; /* OID of the MAC algorithm - if it is a MAC */ + const char *oid; /* OID of the hash - if it is a hash */ + const char *mac_oid; /* OID of the MAC algorithm - if it is a MAC */ gnutls_mac_algorithm_t id; unsigned output_size; unsigned key_size; unsigned nonce_size; - unsigned placeholder; /* if set, then not a real MAC */ - unsigned block_size; /* internal block size for HMAC */ + unsigned placeholder; /* if set, then not a real MAC */ + unsigned block_size; /* internal block size for HMAC */ unsigned flags; } mac_entry_st; typedef struct { const char *name; - gnutls_protocol_t id; /* gnutls internal version number */ - unsigned age; /* internal ordering by protocol age */ - uint8_t major; /* defined by the protocol */ - uint8_t minor; /* defined by the protocol */ - transport_t transport; /* Type of transport, stream or datagram */ - bool supported; /* 0 not supported, > 0 is supported */ + gnutls_protocol_t id; /* gnutls internal version number */ + unsigned age; /* internal ordering by protocol age */ + uint8_t major; /* defined by the protocol */ + uint8_t minor; /* defined by the protocol */ + transport_t transport; /* Type of transport, stream or datagram */ + bool supported; /* 0 not supported, > 0 is supported */ bool supported_revertible; bool explicit_iv; - bool extensions; /* whether it supports extensions */ - bool selectable_sighash; /* whether signatures can be selected */ - bool selectable_prf; /* whether the PRF is ciphersuite-defined */ + bool extensions; /* whether it supports extensions */ + bool selectable_sighash; /* whether signatures can be selected */ + bool selectable_prf; /* whether the PRF is ciphersuite-defined */ /* if SSL3 is disabled this flag indicates that this protocol is a placeholder, * otherwise it prevents this protocol from being set as record version */ bool obsolete; - bool tls13_sem; /* The TLS 1.3 handshake semantics */ - bool false_start; /* That version can be used with false start */ - bool only_extension; /* negotiated only with an extension */ - bool post_handshake_auth; /* Supports the TLS 1.3 post handshake auth */ - bool key_shares; /* TLS 1.3 key share key exchange */ - bool multi_ocsp; /* TLS 1.3 multiple OCSP responses */ + bool tls13_sem; /* The TLS 1.3 handshake semantics */ + bool false_start; /* That version can be used with false start */ + bool only_extension; /* negotiated only with an extension */ + bool post_handshake_auth; /* Supports the TLS 1.3 post handshake auth */ + bool key_shares; /* TLS 1.3 key share key exchange */ + bool multi_ocsp; /* TLS 1.3 multiple OCSP responses */ /* * TLS versions modify the semantics of signature algorithms. This number * is there to distinguish signature algorithms semantics between versions @@ -724,12 +821,12 @@ typedef struct { /* STATE (cont) */ -# include -# include +#include +#include typedef struct { - uint8_t id[2]; /* used to be (in TLS 1.2) hash algorithm , PK algorithm */ - uint8_t tls_sem; /* should match the protocol version's tls_sig_sem. */ + uint8_t id[2]; /* used to be (in TLS 1.2) hash algorithm , PK algorithm */ + uint8_t tls_sem; /* should match the protocol version's tls_sig_sem. */ } sign_algorithm_st; /* This structure holds parameters got from TLS extension @@ -737,7 +834,7 @@ typedef struct { * structures also - see SRP). */ -# define MAX_VERIFY_DATA_SIZE 36/* in SSL 3.0, 12 in TLS 1.0 */ +#define MAX_VERIFY_DATA_SIZE 36 /* in SSL 3.0, 12 in TLS 1.0 */ /* auth_info_t structures now MAY contain malloced * elements. @@ -754,7 +851,7 @@ typedef struct { * the handshake is in progress is the cipher suite value. */ typedef struct { - unsigned int entity; /* GNUTLS_SERVER or GNUTLS_CLIENT */ + unsigned int entity; /* GNUTLS_SERVER or GNUTLS_CLIENT */ /* The epoch used to read and write */ uint16_t epoch_read; @@ -823,7 +920,7 @@ typedef struct { /* encrypt-then-mac -> rfc7366 */ uint8_t etm; - uint8_t client_auth_type; /* gnutls_credentials_type_t */ + uint8_t client_auth_type; /* gnutls_credentials_type_t */ uint8_t server_auth_type; /* Note: if you add anything in Security_Parameters struct, then @@ -867,9 +964,9 @@ struct record_state_st { outside the 16 bit range to prevent off-by-one errors. An absolute epoch may be referred to by its numeric id in the range 0x0000-0xffff. */ -# define EPOCH_READ_CURRENT 70000 -# define EPOCH_WRITE_CURRENT 70001 -# define EPOCH_NEXT 70002 +#define EPOCH_READ_CURRENT 70000 +#define EPOCH_WRITE_CURRENT 70001 +#define EPOCH_NEXT 70002 struct record_parameters_st { uint16_t epoch; @@ -880,9 +977,9 @@ struct record_parameters_st { const mac_entry_st *mac; /* for DTLS sliding window */ - uint64_t dtls_sw_next; /* The end point (next expected packet) of the sliding window without epoch */ + uint64_t dtls_sw_next; /* The end point (next expected packet) of the sliding window without epoch */ uint64_t dtls_sw_bits; - unsigned dtls_sw_have_recv; /* whether at least a packet has been received */ + unsigned dtls_sw_have_recv; /* whether at least a packet has been received */ record_state_st read; record_state_st write; @@ -906,7 +1003,7 @@ typedef enum { SR_SAFE } safe_renegotiation_t; -# define MAX_CIPHERSUITE_SIZE 256 +#define MAX_CIPHERSUITE_SIZE 256 typedef struct ciphersuite_list_st { const gnutls_cipher_suite_entry_st *entry[MAX_CIPHERSUITE_SIZE]; @@ -924,7 +1021,7 @@ typedef struct sign_algo_list_st { unsigned int size; } sign_algo_list_st; -# include "atomic.h" +#include "atomic.h" /* For the external api */ struct gnutls_priority_st { @@ -959,7 +1056,7 @@ struct gnutls_priority_st { safe_renegotiation_t sr; bool min_record_version; bool server_precedence; - bool allow_server_key_usage_violation; /* for test suite purposes only */ + bool allow_server_key_usage_violation; /* for test suite purposes only */ bool no_status_request; bool no_tickets; bool no_tickets_tls12; @@ -988,33 +1085,33 @@ struct gnutls_priority_st { bool _allow_key_usage_violation; bool _allow_wrong_pms; bool _dumbfw; - unsigned int _dh_prime_bits; /* old (deprecated) variable */ + unsigned int _dh_prime_bits; /* old (deprecated) variable */ - DEF_ATOMIC_INT(usage_cnt); + DEF_ATOMIC_INT(usage_cnt); }; /* Allow around 50KB of length-hiding padding * when using legacy padding, * or around 3.2MB when using new padding. */ -# define DEFAULT_MAX_EMPTY_RECORDS 200 - -# define ENABLE_COMPAT(x) \ - (x)->allow_large_records = 1; \ - (x)->allow_small_records = 1; \ - (x)->no_etm = 1; \ - (x)->no_ext_master_secret = 1; \ - (x)->allow_key_usage_violation = 1; \ - (x)->allow_wrong_pms = 1; \ - (x)->dumbfw = 1 - -# define ENABLE_PRIO_COMPAT(x) \ - (x)->_allow_large_records = 1; \ - (x)->_allow_small_records = 1; \ - (x)->_no_etm = 1; \ - (x)->_no_ext_master_secret = 1; \ - (x)->_allow_key_usage_violation = 1; \ - (x)->_allow_wrong_pms = 1; \ - (x)->_dumbfw = 1 +#define DEFAULT_MAX_EMPTY_RECORDS 200 + +#define ENABLE_COMPAT(x) \ + (x)->allow_large_records = 1; \ + (x)->allow_small_records = 1; \ + (x)->no_etm = 1; \ + (x)->no_ext_master_secret = 1; \ + (x)->allow_key_usage_violation = 1; \ + (x)->allow_wrong_pms = 1; \ + (x)->dumbfw = 1 + +#define ENABLE_PRIO_COMPAT(x) \ + (x)->_allow_large_records = 1; \ + (x)->_allow_small_records = 1; \ + (x)->_no_etm = 1; \ + (x)->_no_ext_master_secret = 1; \ + (x)->_allow_key_usage_violation = 1; \ + (x)->_allow_wrong_pms = 1; \ + (x)->_dumbfw = 1 /* DH and RSA parameters types. */ @@ -1022,7 +1119,7 @@ typedef struct gnutls_dh_params_int { /* [0] is the prime, [1] is the generator, [2] is Q if available. */ bigint_t params[3]; - int q_bits; /* length of q in bits. If zero then length is unknown. + int q_bits; /* length of q in bits. If zero then length is unknown. */ } dh_params_st; @@ -1079,7 +1176,7 @@ typedef struct { typedef struct tfo_st { int fd; int flags; - bool connect_only; /* a previous sendmsg() failed, attempting connect() */ + bool connect_only; /* a previous sendmsg() failed, attempting connect() */ struct sockaddr_storage connect_addr; socklen_t connect_addrlen; } tfo_st; @@ -1088,40 +1185,42 @@ typedef struct { /* holds all the parsed data received by the record layer */ mbuffer_head_st record_buffer; - int handshake_hash_buffer_prev_len; /* keeps the length of handshake_hash_buffer, excluding + int handshake_hash_buffer_prev_len; /* keeps the length of handshake_hash_buffer, excluding * the last received message */ - unsigned handshake_hash_buffer_client_hello_len; /* if non-zero it is the length of data until the client hello message */ - unsigned handshake_hash_buffer_client_kx_len; /* if non-zero it is the length of data until the + unsigned handshake_hash_buffer_client_hello_len; /* if non-zero it is the length of data until the client hello message */ + unsigned handshake_hash_buffer_client_kx_len; /* if non-zero it is the length of data until the * the client key exchange message */ - unsigned handshake_hash_buffer_server_finished_len; /* if non-zero it is the length of data until the + unsigned handshake_hash_buffer_server_finished_len; /* if non-zero it is the length of data until the * the server finished message */ - unsigned handshake_hash_buffer_client_finished_len; /* if non-zero it is the length of data until the + unsigned handshake_hash_buffer_client_finished_len; /* if non-zero it is the length of data until the * the client finished message */ - gnutls_buffer_st handshake_hash_buffer; /* used to keep the last received handshake + gnutls_buffer_st + handshake_hash_buffer; /* used to keep the last received handshake * message */ - bool resumable; /* if we can resume that session */ + bool resumable; /* if we can resume that session */ - send_ticket_state_t ticket_state; /* used by gnutls_session_ticket_send() */ - bye_state_t bye_state; /* used by gnutls_bye() */ - reauth_state_t reauth_state; /* used by gnutls_reauth() */ + send_ticket_state_t + ticket_state; /* used by gnutls_session_ticket_send() */ + bye_state_t bye_state; /* used by gnutls_bye() */ + reauth_state_t reauth_state; /* used by gnutls_reauth() */ handshake_state_t handshake_final_state; - handshake_state_t handshake_state; /* holds + handshake_state_t handshake_state; /* holds * a number which indicates where * the handshake procedure has been * interrupted. If it is 0 then * no interruption has happened. */ - bool invalid_connection; /* if this session is valid */ + bool invalid_connection; /* if this session is valid */ - bool may_not_read; /* if it's 0 then we can read/write, otherwise it's forbidden to read/write + bool may_not_read; /* if it's 0 then we can read/write, otherwise it's forbidden to read/write */ bool may_not_write; - bool read_eof; /* non-zero if we have received a closure alert. */ + bool read_eof; /* non-zero if we have received a closure alert. */ - int last_alert; /* last alert received */ + int last_alert; /* last alert received */ /* The last handshake messages sent or received. */ @@ -1146,16 +1245,17 @@ typedef struct { /* For SRP: minimum bits to allow for SRP * use gnutls_srp_set_prime_bits() to adjust it. */ - uint16_t dh_prime_bits; /* srp_prime_bits */ + uint16_t dh_prime_bits; /* srp_prime_bits */ /* resumed session */ - bool resumed; /* if we are resuming a session */ + bool resumed; /* if we are resuming a session */ /* server side: non-zero if resumption was requested by client * client side: non-zero if we set resumption parameters */ bool resumption_requested; security_parameters_st resumed_security_parameters; - gnutls_datum_t resumption_data; /* copy of input to gnutls_session_set_data() */ + gnutls_datum_t + resumption_data; /* copy of input to gnutls_session_set_data() */ /* These buffers are used in the handshake * protocol only. freed using _gnutls_handshake_io_buffer_clear(); @@ -1168,13 +1268,14 @@ typedef struct { /* this buffer holds a record packet -mostly used for * non blocking IO. */ - mbuffer_head_st record_recv_buffer; /* buffer holding the unparsed record that is currently + mbuffer_head_st + record_recv_buffer; /* buffer holding the unparsed record that is currently * being received */ - mbuffer_head_st record_send_buffer; /* holds cached data + mbuffer_head_st record_send_buffer; /* holds cached data * for the gnutls_io_write_buffered() * function. */ - size_t record_send_buffer_user_size; /* holds the + size_t record_send_buffer_user_size; /* holds the * size of the user specified data to * send. */ @@ -1185,7 +1286,7 @@ typedef struct { record_send_state_t rsend_state; /* buffer used temporarily during key update */ gnutls_buffer_st record_key_update_buffer; - gnutls_buffer_st record_presend_buffer; /* holds cached data + gnutls_buffer_st record_presend_buffer; /* holds cached data * for the gnutls_record_send() * function. */ @@ -1193,8 +1294,9 @@ typedef struct { /* buffer used temporarily during TLS1.3 reauthentication */ gnutls_buffer_st reauth_buffer; - time_t expire_time; /* after expire_time seconds this session will expire */ - const struct mod_auth_st_int *auth_struct; /* used in handshake packets and KX algorithms */ + time_t expire_time; /* after expire_time seconds this session will expire */ + const struct mod_auth_st_int + *auth_struct; /* used in handshake packets and KX algorithms */ /* this is the highest version available * to the peer. (advertized version). @@ -1244,8 +1346,8 @@ typedef struct { gnutls_handshake_post_client_hello_func user_hello_func; /* handshake hook function */ gnutls_handshake_hook_func h_hook; - unsigned int h_type; /* the hooked type */ - int16_t h_post; /* whether post-generation/receive */ + unsigned int h_type; /* the hooked type */ + int16_t h_post; /* whether post-generation/receive */ gnutls_handshake_read_func h_read_func; gnutls_handshake_secret_func h_secret_func; gnutls_alert_read_func alert_read_func; @@ -1306,7 +1408,7 @@ typedef struct { /* A handshake process has been completed */ bool initial_negotiation_completed; - void *post_negotiation_lock; /* protects access to the variable above + void *post_negotiation_lock; /* protects access to the variable above * in the cases where negotiation is incomplete * after gnutls_handshake() - early/false start */ @@ -1338,8 +1440,8 @@ typedef struct { /* An estimation of round-trip time under TLS1.3; populated in client side only */ unsigned ertt; - unsigned int handshake_timeout_ms; /* timeout in milliseconds */ - unsigned int record_timeout_ms; /* timeout in milliseconds */ + unsigned int handshake_timeout_ms; /* timeout in milliseconds */ + unsigned int record_timeout_ms; /* timeout in milliseconds */ /* saved context of post handshake certificate request. In * client side is what we received in server's certificate request; @@ -1349,51 +1451,74 @@ typedef struct { gnutls_buffer_st post_handshake_hash_buffer; /* When either of PSK or DHE-PSK is received */ -# define HSK_PSK_KE_MODES_RECEIVED (HSK_PSK_KE_MODE_PSK|HSK_PSK_KE_MODE_DHE_PSK|HSK_PSK_KE_MODE_INVALID) - -# define HSK_CRT_VRFY_EXPECTED 1 -# define HSK_CRT_ASKED (1<<2) -# define HSK_HRR_SENT (1<<3) -# define HSK_HRR_RECEIVED (1<<4) -# define HSK_CRT_REQ_SENT (1<<5) -# define HSK_COMP_CRT_REQ_SENT (1<<6) /* whether certificate compression has been requested */ -# define HSK_KEY_UPDATE_ASKED (1<<7) /* flag is not used during handshake */ -# define HSK_FALSE_START_USED (1<<8) /* TLS1.2 only */ -# define HSK_HAVE_FFDHE (1<<9) /* whether the peer has advertized at least an FFDHE group */ -# define HSK_USED_FFDHE (1<<10) /* whether ffdhe was actually negotiated and used */ -# define HSK_PSK_KE_MODES_SENT (1<<11) -# define HSK_PSK_KE_MODE_PSK (1<<12) /* client: whether PSK without DH is allowed, +#define HSK_PSK_KE_MODES_RECEIVED \ + (HSK_PSK_KE_MODE_PSK | HSK_PSK_KE_MODE_DHE_PSK | \ + HSK_PSK_KE_MODE_INVALID) + +#define HSK_CRT_VRFY_EXPECTED 1 +#define HSK_CRT_ASKED (1 << 2) +#define HSK_HRR_SENT (1 << 3) +#define HSK_HRR_RECEIVED (1 << 4) +#define HSK_CRT_REQ_SENT (1 << 5) +#define HSK_COMP_CRT_REQ_SENT \ + (1 << 6) /* whether certificate compression has been requested */ +#define HSK_KEY_UPDATE_ASKED (1 << 7) /* flag is not used during handshake */ +#define HSK_FALSE_START_USED (1 << 8) /* TLS1.2 only */ +#define HSK_HAVE_FFDHE \ + (1 << 9) /* whether the peer has advertized at least an FFDHE group */ +#define HSK_USED_FFDHE \ + (1 << 10) /* whether ffdhe was actually negotiated and used */ +#define HSK_PSK_KE_MODES_SENT (1 << 11) +#define HSK_PSK_KE_MODE_PSK \ + (1 << 12) /* client: whether PSK without DH is allowed, * server: whether PSK without DH is selected. */ -# define HSK_PSK_KE_MODE_INVALID (1<<13)/* server: no compatible PSK modes were seen */ -# define HSK_PSK_KE_MODE_DHE_PSK (1<<14)/* server: whether PSK with DH is selected +#define HSK_PSK_KE_MODE_INVALID \ + (1 << 13) /* server: no compatible PSK modes were seen */ +#define HSK_PSK_KE_MODE_DHE_PSK \ + (1 << 14) /* server: whether PSK with DH is selected * client: whether PSK with DH is allowed */ -# define HSK_PSK_SELECTED (1<<15) /* server: whether PSK was selected, either for resumption or not; +#define HSK_PSK_SELECTED \ + (1 \ + << 15) /* server: whether PSK was selected, either for resumption or not; * on resumption session->internals.resumed will be set as well. * client: the same */ -# define HSK_KEY_SHARE_SENT (1<<16) /* server: key share was sent to client */ -# define HSK_KEY_SHARE_RECEIVED (1<<17) /* client: key share was received +#define HSK_KEY_SHARE_SENT (1 << 16) /* server: key share was sent to client */ +#define HSK_KEY_SHARE_RECEIVED \ + (1 << 17) /* client: key share was received * server: key share was received and accepted */ -# define HSK_TLS13_TICKET_SENT (1<<18) /* client: sent a ticket under TLS1.3; +#define HSK_TLS13_TICKET_SENT \ + (1 << 18) /* client: sent a ticket under TLS1.3; * server: a ticket was sent to client. */ -# define HSK_TLS12_TICKET_SENT (1<<19) /* client: sent a ticket under TLS1.2; +#define HSK_TLS12_TICKET_SENT \ + (1 << 19) /* client: sent a ticket under TLS1.2; * server: a ticket was sent to client. */ -# define HSK_TICKET_RECEIVED (1<<20) /* client: a session ticket was received */ -# define HSK_EARLY_START_USED (1<<21) -# define HSK_EARLY_DATA_IN_FLIGHT (1<<22) /* client: sent early_data extension in ClientHello +#define HSK_TICKET_RECEIVED \ + (1 << 20) /* client: a session ticket was received */ +#define HSK_EARLY_START_USED (1 << 21) +#define HSK_EARLY_DATA_IN_FLIGHT \ + (1 << 22) /* client: sent early_data extension in ClientHello * server: early_data extension was seen in ClientHello */ -# define HSK_EARLY_DATA_ACCEPTED (1<<23)/* client: early_data extension was seen in EncryptedExtensions +#define HSK_EARLY_DATA_ACCEPTED \ + (1 \ + << 23) /* client: early_data extension was seen in EncryptedExtensions * server: intend to process early data */ -# define HSK_RECORD_SIZE_LIMIT_NEGOTIATED (1<<24) -# define HSK_RECORD_SIZE_LIMIT_SENT (1<<25) /* record_size_limit extension was sent */ -# define HSK_RECORD_SIZE_LIMIT_RECEIVED (1<<26) /* server: record_size_limit extension was seen but not accepted yet */ -# define HSK_OCSP_REQUESTED (1<<27) /* server: client requested OCSP stapling */ -# define HSK_CLIENT_OCSP_REQUESTED (1<<28) /* client: server requested OCSP stapling */ -# define HSK_SERVER_HELLO_RECEIVED (1<<29) /* client: Server Hello message has been received */ +#define HSK_RECORD_SIZE_LIMIT_NEGOTIATED (1 << 24) +#define HSK_RECORD_SIZE_LIMIT_SENT \ + (1 << 25) /* record_size_limit extension was sent */ +#define HSK_RECORD_SIZE_LIMIT_RECEIVED \ + (1 \ + << 26) /* server: record_size_limit extension was seen but not accepted yet */ +#define HSK_OCSP_REQUESTED \ + (1 << 27) /* server: client requested OCSP stapling */ +#define HSK_CLIENT_OCSP_REQUESTED \ + (1 << 28) /* client: server requested OCSP stapling */ +#define HSK_SERVER_HELLO_RECEIVED \ + (1 << 29) /* client: Server Hello message has been received */ /* The hsk_flags are for use within the ongoing handshake; * they are reset to zero prior to handshake start by gnutls_handshake. */ @@ -1407,24 +1532,28 @@ typedef struct { gnutls_buffer_st hb_local_data; gnutls_buffer_st hb_remote_data; - struct timespec hb_ping_start; /* timestamp: when first HeartBeat ping was sent */ - struct timespec hb_ping_sent; /* timestamp: when last HeartBeat ping was sent */ - unsigned int hb_actual_retrans_timeout_ms; /* current timeout, in milliseconds */ - unsigned int hb_retrans_timeout_ms; /* the default timeout, in milliseconds */ - unsigned int hb_total_timeout_ms; /* the total timeout, in milliseconds */ - - bool ocsp_check_ok; /* will be zero if the OCSP response TLS extension + struct timespec + hb_ping_start; /* timestamp: when first HeartBeat ping was sent */ + struct timespec + hb_ping_sent; /* timestamp: when last HeartBeat ping was sent */ + unsigned int + hb_actual_retrans_timeout_ms; /* current timeout, in milliseconds */ + unsigned int + hb_retrans_timeout_ms; /* the default timeout, in milliseconds */ + unsigned int hb_total_timeout_ms; /* the total timeout, in milliseconds */ + + bool ocsp_check_ok; /* will be zero if the OCSP response TLS extension * check failed (OCSP was old/unrelated or so). */ - heartbeat_state_t hb_state; /* for ping */ + heartbeat_state_t hb_state; /* for ping */ - recv_state_t recv_state; /* state of the receive function */ + recv_state_t recv_state; /* state of the receive function */ /* if set, server and client random were set by the application */ bool sc_random_set; -# define INT_FLAG_NO_TLS13 (1LL<<60) - uint64_t flags; /* the flags in gnutls_init() and GNUTLS_INT_FLAGS */ +#define INT_FLAG_NO_TLS13 (1LL << 60) + uint64_t flags; /* the flags in gnutls_init() and GNUTLS_INT_FLAGS */ /* a verify callback to override the verify callback from the credentials * structure */ @@ -1433,17 +1562,21 @@ typedef struct { gnutls_typed_vdata_st vc_sdata; unsigned vc_elements; unsigned vc_status; - unsigned int additional_verify_flags; /* may be set by priorities or the vc functions */ + unsigned int + additional_verify_flags; /* may be set by priorities or the vc functions */ /* we append the verify flags because these can be set, * either by this function or by gnutls_session_set_verify_cert(). * However, we ensure that a single profile is set. */ -# define ADD_PROFILE_VFLAGS(session, vflags) do { \ - if ((session->internals.additional_verify_flags & GNUTLS_VFLAGS_PROFILE_MASK) && \ - (vflags & GNUTLS_VFLAGS_PROFILE_MASK)) \ - session->internals.additional_verify_flags &= ~GNUTLS_VFLAGS_PROFILE_MASK; \ - session->internals.additional_verify_flags |= vflags; \ - } while(0) +#define ADD_PROFILE_VFLAGS(session, vflags) \ + do { \ + if ((session->internals.additional_verify_flags & \ + GNUTLS_VFLAGS_PROFILE_MASK) && \ + (vflags & GNUTLS_VFLAGS_PROFILE_MASK)) \ + session->internals.additional_verify_flags &= \ + ~GNUTLS_VFLAGS_PROFILE_MASK; \ + session->internals.additional_verify_flags |= vflags; \ + } while (0) /* the SHA256 hash of the peer's certificate */ uint8_t cert_hash[32]; @@ -1465,7 +1598,7 @@ typedef struct { struct hello_ext_entry_st *rexts; unsigned rexts_size; - struct { /* ext_data[id] contains data for extension_t id */ + struct { /* ext_data[id] contains data for extension_t id */ gnutls_ext_priv_data_t priv; gnutls_ext_priv_data_t resumed_priv; uint8_t set; @@ -1478,7 +1611,8 @@ typedef struct { */ ext_track_t used_exts; - gnutls_ext_flags_t ext_msg; /* accessed through _gnutls_ext_get/set_msg() */ + gnutls_ext_flags_t + ext_msg; /* accessed through _gnutls_ext_get/set_msg() */ /* this is not the negotiated max_record_recv_size, but the actual maximum * receive size */ @@ -1520,9 +1654,9 @@ typedef struct { } internals_st; /* Maximum number of epochs we keep around. */ -# define MAX_EPOCH_INDEX 4 +#define MAX_EPOCH_INDEX 4 -# define reset_cand_groups(session) \ +#define reset_cand_groups(session) \ session->internals.cand_ec_group = session->internals.cand_dh_group = \ session->internals.cand_group = NULL @@ -1540,13 +1674,13 @@ void _gnutls_free_auth_info(gnutls_session_t session); /* These two macros return the advertised TLS version of * the peer. */ -# define _gnutls_get_adv_version_major(session) \ +#define _gnutls_get_adv_version_major(session) \ session->internals.adv_version_major -# define _gnutls_get_adv_version_minor(session) \ +#define _gnutls_get_adv_version_minor(session) \ session->internals.adv_version_minor -# define set_adv_version(session, major, minor) \ +#define set_adv_version(session, major, minor) \ session->internals.adv_version_major = major; \ session->internals.adv_version_minor = minor @@ -1569,10 +1703,10 @@ void _gnutls_priority_update_fips(void); void _gnutls_priority_update_non_aesni(void); extern unsigned _gnutls_disable_tls13; -# define timespec_sub_ms _gnutls_timespec_sub_ms +#define timespec_sub_ms _gnutls_timespec_sub_ms unsigned int /* returns a-b in ms */ - timespec_sub_ms(struct timespec *a, struct timespec *b); +timespec_sub_ms(struct timespec *a, struct timespec *b); inline static int _gnutls_timespec_cmp(struct timespec *a, struct timespec *b) { @@ -1587,7 +1721,7 @@ inline static int _gnutls_timespec_cmp(struct timespec *a, struct timespec *b) return 0; } -# include +#include inline static int _gnutls_set_current_version(gnutls_session_t s, unsigned v) { s->security_parameters.pversion = version_to_entry(v); @@ -1642,17 +1776,17 @@ get_certificate_type(gnutls_session_t session, gnutls_ctype_target_t target) return session->security_parameters.server_ctype; } break; - default: // Illegal parameter passed + default: // Illegal parameter passed return GNUTLS_CRT_UNKNOWN; } } /* Macros to aide constant time/mem checks */ -# define CONSTCHECK_NOT_EQUAL(a, b) ((-((uint32_t)(a) ^ (uint32_t)(b))) >> 31) -# define CONSTCHECK_EQUAL(a, b) (1U - CONSTCHECK_NOT_EQUAL(a, b)) +#define CONSTCHECK_NOT_EQUAL(a, b) ((-((uint32_t)(a) ^ (uint32_t)(b))) >> 31) +#define CONSTCHECK_EQUAL(a, b) (1U - CONSTCHECK_NOT_EQUAL(a, b)) extern unsigned int _gnutls_global_version; bool _gnutls_config_is_ktls_enabled(void); -#endif /* GNUTLS_LIB_GNUTLS_INT_H */ +#endif /* GNUTLS_LIB_GNUTLS_INT_H */ diff --git a/lib/gthreads.h b/lib/gthreads.h index 9d7846f8b1..5ae79b4965 100644 --- a/lib/gthreads.h +++ b/lib/gthreads.h @@ -21,20 +21,22 @@ */ #ifndef GNUTLS_LIB_GTHREADS_H -# define GNUTLS_LIB_GTHREADS_H +#define GNUTLS_LIB_GTHREADS_H -# include +#include /* Using a C99-only compiler installed in parallel with modern C11 environment * will see HAVE_THREADS_H, but won't be able to use _Thread_local. */ -# if __STDC_VERSION__ >= 201112 && !defined(__STDC_NO_THREADS__) && defined(HAVE_THREADS_H) -# include -# elif defined(__GNUC__) || defined(__SUNPRO_C) || defined(__xlC__) /* clang is covered by __GNUC__ */ -# define _Thread_local __thread -# elif defined(_MSC_VER) -# define _Thread_local __declspec(thread) -# else -# error Unsupported platform -# endif +#if __STDC_VERSION__ >= 201112 && !defined(__STDC_NO_THREADS__) && \ + defined(HAVE_THREADS_H) +#include +#elif defined(__GNUC__) || defined(__SUNPRO_C) || \ + defined(__xlC__) /* clang is covered by __GNUC__ */ +#define _Thread_local __thread +#elif defined(_MSC_VER) +#define _Thread_local __declspec(thread) +#else +#error Unsupported platform +#endif -#endif /* GNUTLS_LIB_GTHREADS_H */ +#endif /* GNUTLS_LIB_GTHREADS_H */ diff --git a/lib/handshake-checks.c b/lib/handshake-checks.c index c7be9e9e19..8a4ba251c3 100644 --- a/lib/handshake-checks.c +++ b/lib/handshake-checks.c @@ -32,10 +32,10 @@ #include #include #include -#include /* for gnutls_anon_server_credentials_t */ -#include /* for gnutls_psk_server_credentials_t */ +#include /* for gnutls_anon_server_credentials_t */ +#include /* for gnutls_psk_server_credentials_t */ #ifdef ENABLE_SRP -# include +#include #endif int _gnutls_check_id_for_change(gnutls_session_t session) @@ -57,18 +57,18 @@ int _gnutls_check_id_for_change(gnutls_session_t session) ai = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK); if (ai == NULL) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + return gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); username = ai->username; username_length = ai->username_len; #ifdef ENABLE_SRP } else { srp_server_auth_info_t ai = - _gnutls_get_auth_info(session, GNUTLS_CRD_SRP); + _gnutls_get_auth_info(session, GNUTLS_CRD_SRP); if (ai == NULL) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + return gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); username = ai->username; username_length = strlen(ai->username); @@ -81,20 +81,19 @@ int _gnutls_check_id_for_change(gnutls_session_t session) if (session->internals.saved_username && session->internals.saved_username_size != -1) { if (session->internals.saved_username_size == - username_length - && strncmp(session->internals.saved_username, - username, username_length)) { - _gnutls_debug_log - ("Session's PSK username changed during rehandshake; aborting!\n"); - return - gnutls_assert_val - (GNUTLS_E_SESSION_USER_ID_CHANGED); + username_length && + strncmp(session->internals.saved_username, username, + username_length)) { + _gnutls_debug_log( + "Session's PSK username changed during rehandshake; aborting!\n"); + return gnutls_assert_val( + GNUTLS_E_SESSION_USER_ID_CHANGED); } } else if (session->internals.saved_username == NULL && session->internals.saved_username_size == -1) { if (username_length > MAX_USERNAME_SIZE) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + return gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); char *tmp = gnutls_malloc(username_length + 1); if (tmp == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); @@ -102,10 +101,9 @@ int _gnutls_check_id_for_change(gnutls_session_t session) tmp[username_length] = '\0'; session->internals.saved_username = tmp; session->internals.saved_username_size = - username_length; + username_length; } else return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - } return 0; @@ -133,10 +131,10 @@ int _gnutls_check_if_cert_hash_is_same(gnutls_session_t session, if (session->internals.cert_hash_set) { if (memcmp(tmp, session->internals.cert_hash, 32) != 0) { - _gnutls_debug_log - ("Session certificate changed during rehandshake; aborting!\n"); - return - gnutls_assert_val(GNUTLS_E_SESSION_USER_ID_CHANGED); + _gnutls_debug_log( + "Session certificate changed during rehandshake; aborting!\n"); + return gnutls_assert_val( + GNUTLS_E_SESSION_USER_ID_CHANGED); } } else { memcpy(session->internals.cert_hash, tmp, 32); diff --git a/lib/handshake-defs.h b/lib/handshake-defs.h index efff51a070..1b0c250e75 100644 --- a/lib/handshake-defs.h +++ b/lib/handshake-defs.h @@ -20,30 +20,30 @@ * */ #ifndef HANDSHAKE_DEFS_H -# define HANDSHAKE_DEFS_H +#define HANDSHAKE_DEFS_H -# define EARLY_TRAFFIC_LABEL "c e traffic" -# define EXT_BINDER_LABEL "ext binder" -# define RES_BINDER_LABEL "res binder" -# define EARLY_EXPORTER_MASTER_LABEL "e exp master" -# define HANDSHAKE_CLIENT_TRAFFIC_LABEL "c hs traffic" -# define HANDSHAKE_SERVER_TRAFFIC_LABEL "s hs traffic" -# define DERIVED_LABEL "derived" -# define APPLICATION_CLIENT_TRAFFIC_LABEL "c ap traffic" -# define APPLICATION_SERVER_TRAFFIC_LABEL "s ap traffic" -# define APPLICATION_TRAFFIC_UPDATE "traffic upd" -# define EXPORTER_MASTER_LABEL "exp master" -# define RMS_MASTER_LABEL "res master" -# define EXPORTER_LABEL "exporter" -# define RESUMPTION_LABEL "resumption" +#define EARLY_TRAFFIC_LABEL "c e traffic" +#define EXT_BINDER_LABEL "ext binder" +#define RES_BINDER_LABEL "res binder" +#define EARLY_EXPORTER_MASTER_LABEL "e exp master" +#define HANDSHAKE_CLIENT_TRAFFIC_LABEL "c hs traffic" +#define HANDSHAKE_SERVER_TRAFFIC_LABEL "s hs traffic" +#define DERIVED_LABEL "derived" +#define APPLICATION_CLIENT_TRAFFIC_LABEL "c ap traffic" +#define APPLICATION_SERVER_TRAFFIC_LABEL "s ap traffic" +#define APPLICATION_TRAFFIC_UPDATE "traffic upd" +#define EXPORTER_MASTER_LABEL "exp master" +#define RMS_MASTER_LABEL "res master" +#define EXPORTER_LABEL "exporter" +#define RESUMPTION_LABEL "resumption" -# define HRR_RANDOM \ - "\xCF\x21\xAD\x74\xE5\x9A\x61\x11\xBE\x1D\x8C\x02\x1E\x65\xB8\x91" \ - "\xC2\xA2\x11\x16\x7A\xBB\x8C\x5E\x07\x9E\x09\xE2\xC8\xA8\x33\x9C" +#define HRR_RANDOM \ + "\xCF\x21\xAD\x74\xE5\x9A\x61\x11\xBE\x1D\x8C\x02\x1E\x65\xB8\x91" \ + "\xC2\xA2\x11\x16\x7A\xBB\x8C\x5E\x07\x9E\x09\xE2\xC8\xA8\x33\x9C" -# define TLS13_TICKETS_TO_SEND 2 +#define TLS13_TICKETS_TO_SEND 2 /* Enable: Appendix D4. Middlebox Compatibility Mode */ -# define TLS13_APPENDIX_D4 1 +#define TLS13_APPENDIX_D4 1 -#endif /* HANDSHAKE_DEFS_H */ +#endif /* HANDSHAKE_DEFS_H */ diff --git a/lib/handshake-tls13.c b/lib/handshake-tls13.c index da124a1c7a..ec603cd040 100644 --- a/lib/handshake-tls13.c +++ b/lib/handshake-tls13.c @@ -62,14 +62,15 @@ static int generate_rms_keys(gnutls_session_t session); static int generate_hs_traffic_keys(gnutls_session_t session); static int generate_ap_traffic_keys(gnutls_session_t session); -#define SAVE_TRANSCRIPT \ - if (session->internals.flags & GNUTLS_POST_HANDSHAKE_AUTH) { \ +#define SAVE_TRANSCRIPT \ + if (session->internals.flags & GNUTLS_POST_HANDSHAKE_AUTH) { \ /* If post-handshake auth is in use we need a copy of the original \ * handshake transcript */ \ - memcpy( &session->internals.post_handshake_hash_buffer, \ - &session->internals.handshake_hash_buffer, \ - sizeof(session->internals.handshake_hash_buffer)); \ - _gnutls_buffer_init(&session->internals.handshake_hash_buffer); \ + memcpy(&session->internals.post_handshake_hash_buffer, \ + &session->internals.handshake_hash_buffer, \ + sizeof(session->internals.handshake_hash_buffer)); \ + _gnutls_buffer_init( \ + &session->internals.handshake_hash_buffer); \ } /* @@ -86,12 +87,12 @@ int _gnutls13_handshake_client(gnutls_session_t session) #ifdef TLS13_APPENDIX_D4 if (session->internals.priorities->tls13_compat_mode && /* Key change is indicated by sending an EndOfEarlyData below */ - !(session->internals.hsk_flags & HSK_EARLY_DATA_IN_FLIGHT)) { + !(session->internals.hsk_flags & + HSK_EARLY_DATA_IN_FLIGHT)) { /* We send it before keys are generated. That works because CCS * is always being cached and queued and not being sent directly */ - ret = - _gnutls_send_change_cipher_spec(session, - AGAIN(STATE100)); + ret = _gnutls_send_change_cipher_spec(session, + AGAIN(STATE100)); STATE = STATE100; IMED_RET("send change cipher spec", ret, 0); } @@ -105,9 +106,8 @@ int _gnutls13_handshake_client(gnutls_session_t session) * speculatively. */ IMED_RET_FATAL("generate hs traffic keys", ret, 0); if (session->internals.hsk_flags & HSK_EARLY_DATA_IN_FLIGHT) - ret = - _tls13_read_connection_state_init(session, - STAGE_HS); + ret = _tls13_read_connection_state_init(session, + STAGE_HS); else ret = _tls13_connection_state_init(session, STAGE_HS); IMED_RET_FATAL("set hs traffic keys", ret, 0); @@ -144,8 +144,8 @@ int _gnutls13_handshake_client(gnutls_session_t session) IMED_RET("recv finished", ret, 0); FALLTHROUGH; case STATE108: - ret = - _gnutls13_send_end_of_early_data(session, AGAIN(STATE108)); + ret = _gnutls13_send_end_of_early_data(session, + AGAIN(STATE108)); STATE = STATE108; IMED_RET("send end of early data", ret, 0); @@ -154,13 +154,12 @@ int _gnutls13_handshake_client(gnutls_session_t session) * speculatively. */ if (session->internals.hsk_flags & HSK_EARLY_DATA_IN_FLIGHT) { session->internals.hsk_flags &= - ~HSK_EARLY_DATA_IN_FLIGHT; - ret = - _tls13_write_connection_state_init(session, - STAGE_HS); - IMED_RET_FATAL - ("set hs traffic key after sending early data", ret, - 0); + ~HSK_EARLY_DATA_IN_FLIGHT; + ret = _tls13_write_connection_state_init(session, + STAGE_HS); + IMED_RET_FATAL( + "set hs traffic key after sending early data", + ret, 0); } FALLTHROUGH; case STATE109: @@ -169,8 +168,8 @@ int _gnutls13_handshake_client(gnutls_session_t session) IMED_RET("send certificate", ret, 0); FALLTHROUGH; case STATE110: - ret = - _gnutls13_send_certificate_verify(session, AGAIN(STATE110)); + ret = _gnutls13_send_certificate_verify(session, + AGAIN(STATE110)); STATE = STATE110; IMED_RET("send certificate verify", ret, 0); FALLTHROUGH; @@ -218,11 +217,11 @@ static int generate_non_auth_rms_keys(gnutls_session_t session) uint8_t finished[MAX_HASH_SIZE + TLS_HANDSHAKE_HEADER_SIZE]; unsigned spos; - ret = _gnutls13_compute_finished(session->security_parameters.prf, - session->key.proto.tls13.hs_ckey, - &session-> - internals.handshake_hash_buffer, - finished + TLS_HANDSHAKE_HEADER_SIZE); + ret = _gnutls13_compute_finished( + session->security_parameters.prf, + session->key.proto.tls13.hs_ckey, + &session->internals.handshake_hash_buffer, + finished + TLS_HANDSHAKE_HEADER_SIZE); if (ret < 0) return gnutls_assert_val(ret); @@ -232,24 +231,19 @@ static int generate_non_auth_rms_keys(gnutls_session_t session) _gnutls_write_uint24(session->security_parameters.prf->output_size, finished + 1); - ret = - _gnutls_buffer_append_data(&session-> - internals.handshake_hash_buffer, - finished, - TLS_HANDSHAKE_HEADER_SIZE + - session->security_parameters. - prf->output_size); + ret = _gnutls_buffer_append_data( + &session->internals.handshake_hash_buffer, finished, + TLS_HANDSHAKE_HEADER_SIZE + + session->security_parameters.prf->output_size); if (ret < 0) return gnutls_assert_val(ret); - ret = - _tls13_derive_secret(session, RMS_MASTER_LABEL, - sizeof(RMS_MASTER_LABEL) - 1, - session->internals.handshake_hash_buffer.data, - session->internals. - handshake_hash_buffer.length, - session->key.proto.tls13.temp_secret, - session->key.proto.tls13.ap_rms); + ret = _tls13_derive_secret( + session, RMS_MASTER_LABEL, sizeof(RMS_MASTER_LABEL) - 1, + session->internals.handshake_hash_buffer.data, + session->internals.handshake_hash_buffer.length, + session->key.proto.tls13.temp_secret, + session->key.proto.tls13.ap_rms); if (ret < 0) return gnutls_assert_val(ret); @@ -262,14 +256,12 @@ static int generate_rms_keys(gnutls_session_t session) { int ret; - ret = - _tls13_derive_secret(session, RMS_MASTER_LABEL, - sizeof(RMS_MASTER_LABEL) - 1, - session->internals.handshake_hash_buffer.data, - session-> - internals.handshake_hash_buffer_client_finished_len, - session->key.proto.tls13.temp_secret, - session->key.proto.tls13.ap_rms); + ret = _tls13_derive_secret( + session, RMS_MASTER_LABEL, sizeof(RMS_MASTER_LABEL) - 1, + session->internals.handshake_hash_buffer.data, + session->internals.handshake_hash_buffer_client_finished_len, + session->key.proto.tls13.temp_secret, + session->key.proto.tls13.ap_rms); if (ret < 0) return gnutls_assert_val(ret); @@ -281,36 +273,32 @@ static int generate_ap_traffic_keys(gnutls_session_t session) int ret; uint8_t zero[MAX_HASH_SIZE]; - ret = - _tls13_derive_secret(session, DERIVED_LABEL, - sizeof(DERIVED_LABEL) - 1, NULL, 0, - session->key.proto.tls13.temp_secret, - session->key.proto.tls13.temp_secret); + ret = _tls13_derive_secret(session, DERIVED_LABEL, + sizeof(DERIVED_LABEL) - 1, NULL, 0, + session->key.proto.tls13.temp_secret, + session->key.proto.tls13.temp_secret); if (ret < 0) return gnutls_assert_val(ret); memset(zero, 0, session->security_parameters.prf->output_size); - ret = - _tls13_update_secret(session, zero, - session->security_parameters.prf->output_size); + ret = _tls13_update_secret( + session, zero, session->security_parameters.prf->output_size); if (ret < 0) return gnutls_assert_val(ret); - ret = - _tls13_derive_secret(session, EXPORTER_MASTER_LABEL, - sizeof(EXPORTER_MASTER_LABEL) - 1, - session->internals.handshake_hash_buffer.data, - session-> - internals.handshake_hash_buffer_server_finished_len, - session->key.proto.tls13.temp_secret, - session->key.proto.tls13.ap_expkey); + ret = _tls13_derive_secret( + session, EXPORTER_MASTER_LABEL, + sizeof(EXPORTER_MASTER_LABEL) - 1, + session->internals.handshake_hash_buffer.data, + session->internals.handshake_hash_buffer_server_finished_len, + session->key.proto.tls13.temp_secret, + session->key.proto.tls13.ap_expkey); if (ret < 0) return gnutls_assert_val(ret); - ret = _gnutls_call_keylog_func(session, "EXPORTER_SECRET", - session->key.proto.tls13.ap_expkey, - session->security_parameters. - prf->output_size); + ret = _gnutls_call_keylog_func( + session, "EXPORTER_SECRET", session->key.proto.tls13.ap_expkey, + session->security_parameters.prf->output_size); if (ret < 0) return gnutls_assert_val(ret); @@ -330,11 +318,10 @@ static int generate_hs_traffic_keys(gnutls_session_t session) if (unlikely(session->key.proto.tls13.temp_secret_size == 0)) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - ret = - _tls13_derive_secret(session, DERIVED_LABEL, - sizeof(DERIVED_LABEL) - 1, NULL, 0, - session->key.proto.tls13.temp_secret, - session->key.proto.tls13.temp_secret); + ret = _tls13_derive_secret(session, DERIVED_LABEL, + sizeof(DERIVED_LABEL) - 1, NULL, 0, + session->key.proto.tls13.temp_secret, + session->key.proto.tls13.temp_secret); if (ret < 0) { gnutls_assert(); return ret; @@ -346,7 +333,6 @@ static int generate_hs_traffic_keys(gnutls_session_t session) session->internals.resumed))) || (session->security_parameters.entity == GNUTLS_SERVER && !(session->internals.hsk_flags & HSK_KEY_SHARE_SENT))) { - if ((session->internals.hsk_flags & HSK_PSK_SELECTED) && (session->internals.hsk_flags & HSK_PSK_KE_MODE_PSK)) { null_key = 1; @@ -358,9 +344,8 @@ static int generate_hs_traffic_keys(gnutls_session_t session) unsigned digest_size; if (unlikely(session->security_parameters.prf == NULL)) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); digest_size = session->security_parameters.prf->output_size; memset(digest, 0, digest_size); @@ -372,13 +357,11 @@ static int generate_hs_traffic_keys(gnutls_session_t session) } } else { if (unlikely(session->key.key.size == 0)) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); - ret = - _tls13_update_secret(session, session->key.key.data, - session->key.key.size); + ret = _tls13_update_secret(session, session->key.key.data, + session->key.key.size); if (ret < 0) { gnutls_assert(); return ret; @@ -398,40 +381,35 @@ int _gnutls13_handshake_server(gnutls_session_t session) switch (STATE) { case STATE90: - ret = - _gnutls13_handshake_hash_buffers_synth(session, - session->security_parameters.prf, - 0); + ret = _gnutls13_handshake_hash_buffers_synth( + session, session->security_parameters.prf, 0); STATE = STATE90; IMED_RET_FATAL("reset handshake buffers", ret, 0); FALLTHROUGH; case STATE91: - ret = - _gnutls13_send_hello_retry_request(session, AGAIN(STATE91)); + ret = _gnutls13_send_hello_retry_request(session, + AGAIN(STATE91)); STATE = STATE91; IMED_RET("send hello retry request", ret, 0); FALLTHROUGH; case STATE92: #ifdef TLS13_APPENDIX_D4 if (session->internals.priorities->tls13_compat_mode) { - ret = - _gnutls_send_change_cipher_spec(session, - AGAIN(STATE92)); + ret = _gnutls_send_change_cipher_spec(session, + AGAIN(STATE92)); STATE = STATE92; IMED_RET("send change cipher spec", ret, 0); } #endif FALLTHROUGH; case STATE93: - ret = - _gnutls_recv_handshake(session, - GNUTLS_HANDSHAKE_CLIENT_HELLO, - 0, NULL); + ret = _gnutls_recv_handshake( + session, GNUTLS_HANDSHAKE_CLIENT_HELLO, 0, NULL); if (ret == GNUTLS_E_INT_RET_0) { /* this is triggered by post_client_hello, and instructs the * handshake to proceed but be put on hold */ ret = GNUTLS_E_INTERRUPTED; - STATE = STATE94; /* hello already parsed -> move to next state */ + STATE = STATE94; /* hello already parsed -> move to next state */ } else { STATE = STATE93; } @@ -450,9 +428,8 @@ int _gnutls13_handshake_server(gnutls_session_t session) * sent, CCS should have followed it (see above) */ if (session->internals.priorities->tls13_compat_mode && !(session->internals.hsk_flags & HSK_HRR_SENT)) { - ret = - _gnutls_send_change_cipher_spec(session, - AGAIN(STATE100)); + ret = _gnutls_send_change_cipher_spec(session, + AGAIN(STATE100)); STATE = STATE100; IMED_RET("send change cipher spec", ret, 0); } @@ -465,25 +442,22 @@ int _gnutls13_handshake_server(gnutls_session_t session) IMED_RET_FATAL("generate hs traffic keys", ret, 0); if (session->internals.hsk_flags & HSK_EARLY_DATA_ACCEPTED) { - ret = - _tls13_write_connection_state_init(session, - STAGE_HS); + ret = _tls13_write_connection_state_init(session, + STAGE_HS); } else { ret = _tls13_connection_state_init(session, STAGE_HS); } IMED_RET_FATAL("set hs traffic keys", ret, 0); FALLTHROUGH; case STATE102: - ret = - _gnutls13_send_encrypted_extensions(session, - AGAIN(STATE102)); + ret = _gnutls13_send_encrypted_extensions(session, + AGAIN(STATE102)); STATE = STATE102; IMED_RET("send encrypted extensions", ret, 0); FALLTHROUGH; case STATE103: - ret = - _gnutls13_send_certificate_request(session, - AGAIN(STATE103)); + ret = _gnutls13_send_certificate_request(session, + AGAIN(STATE103)); STATE = STATE103; IMED_RET("send certificate request", ret, 0); FALLTHROUGH; @@ -493,8 +467,8 @@ int _gnutls13_handshake_server(gnutls_session_t session) IMED_RET("send certificate", ret, 0); FALLTHROUGH; case STATE105: - ret = - _gnutls13_send_certificate_verify(session, AGAIN(STATE105)); + ret = _gnutls13_send_certificate_verify(session, + AGAIN(STATE105)); STATE = STATE105; IMED_RET("send certificate verify", ret, 0); FALLTHROUGH; @@ -509,12 +483,11 @@ int _gnutls13_handshake_server(gnutls_session_t session) IMED_RET("recv end of early data", ret, 0); if (session->internals.hsk_flags & HSK_EARLY_DATA_ACCEPTED) { - ret = - _tls13_read_connection_state_init(session, - STAGE_HS); - IMED_RET_FATAL - ("set hs traffic key after receiving early data", - ret, 0); + ret = _tls13_read_connection_state_init(session, + STAGE_HS); + IMED_RET_FATAL( + "set hs traffic key after receiving early data", + ret, 0); } FALLTHROUGH; case STATE108: @@ -525,26 +498,25 @@ int _gnutls13_handshake_server(gnutls_session_t session) /* If the session is unauthenticated, try to optimize the handshake by * sending the session ticket early. */ - if (! - (session->internals.hsk_flags & (HSK_CRT_REQ_SENT | - HSK_PSK_SELECTED))) { + if (!(session->internals.hsk_flags & + (HSK_CRT_REQ_SENT | HSK_PSK_SELECTED))) { STATE = STATE108; ret = generate_non_auth_rms_keys(session); IMED_RET_FATAL("generate rms keys", ret, 0); session->internals.hsk_flags |= HSK_EARLY_START_USED; - _gnutls_handshake_log - ("HSK[%p]: unauthenticated session eligible for early start\n", - session); + _gnutls_handshake_log( + "HSK[%p]: unauthenticated session eligible for early start\n", + session); } ret = _tls13_write_connection_state_init(session, STAGE_APP); IMED_RET_FATAL("set write app keys", ret, 0); - _gnutls_handshake_log - ("HSK[%p]: switching early to application traffic keys\n", - session); + _gnutls_handshake_log( + "HSK[%p]: switching early to application traffic keys\n", + session); FALLTHROUGH; case STATE109: @@ -552,15 +524,12 @@ int _gnutls13_handshake_server(gnutls_session_t session) _gnutls_set_resumed_parameters(session); if (session->internals.hsk_flags & HSK_EARLY_START_USED) { - if (! - (session-> - internals.flags & GNUTLS_NO_AUTO_SEND_TICKET) -&& _gnutls13_can_send_session_ticket(session)) { - ret = - _gnutls13_send_session_ticket(session, - TLS13_TICKETS_TO_SEND, - AGAIN - (STATE109)); + if (!(session->internals.flags & + GNUTLS_NO_AUTO_SEND_TICKET) && + _gnutls13_can_send_session_ticket(session)) { + ret = _gnutls13_send_session_ticket( + session, TLS13_TICKETS_TO_SEND, + AGAIN(STATE109)); } STATE = STATE109; @@ -570,13 +539,13 @@ int _gnutls13_handshake_server(gnutls_session_t session) * should be called again by gnutls_record_recv() */ - if (session-> - internals.flags & GNUTLS_ENABLE_EARLY_START) { - STATE = STATE113; /* finished */ + if (session->internals.flags & + GNUTLS_ENABLE_EARLY_START) { + STATE = STATE113; /* finished */ gnutls_assert(); session->internals.recv_state = - RECV_STATE_EARLY_START; + RECV_STATE_EARLY_START; return 0; } } @@ -597,7 +566,7 @@ int _gnutls13_handshake_server(gnutls_session_t session) if (ret < 0) return gnutls_assert_val(ret); FALLTHROUGH; - case STATE113: /* can enter from STATE109 */ + case STATE113: /* can enter from STATE109 */ ret = _gnutls13_recv_finished(session); STATE = STATE113; IMED_RET("recv finished", ret, 0); @@ -617,15 +586,13 @@ int _gnutls13_handshake_server(gnutls_session_t session) FALLTHROUGH; case STATE115: - if (! - (session->internals.hsk_flags & (HSK_TLS13_TICKET_SENT | - HSK_EARLY_START_USED)) -&& !(session->internals.flags & GNUTLS_NO_AUTO_SEND_TICKET) -&& _gnutls13_can_send_session_ticket(session)) { - ret = - _gnutls13_send_session_ticket(session, - TLS13_TICKETS_TO_SEND, - AGAIN(STATE115)); + if (!(session->internals.hsk_flags & + (HSK_TLS13_TICKET_SENT | HSK_EARLY_START_USED)) && + !(session->internals.flags & GNUTLS_NO_AUTO_SEND_TICKET) && + _gnutls13_can_send_session_ticket(session)) { + ret = _gnutls13_send_session_ticket( + session, TLS13_TICKETS_TO_SEND, + AGAIN(STATE115)); STATE = STATE115; IMED_RET("send session ticket", ret, 0); } @@ -668,18 +635,17 @@ int _gnutls13_recv_async_handshake(gnutls_session_t session) /* the received handshake message has already been pushed into * handshake buffers. As we do not need to use the handshake hash * buffers we call the lower level receive functions */ - ret = - _gnutls_handshake_io_recv_int(session, GNUTLS_HANDSHAKE_ANY, - &hsk, 0); + ret = _gnutls_handshake_io_recv_int( + session, GNUTLS_HANDSHAKE_ANY, &hsk, 0); if (ret < 0) { gnutls_assert(); goto cleanup; } session->internals.last_handshake_in = hsk.htype; - ret = - _gnutls_call_hook_func(session, hsk.htype, GNUTLS_HOOK_PRE, - 1, hsk.data.data, hsk.data.length); + ret = _gnutls_call_hook_func(session, hsk.htype, + GNUTLS_HOOK_PRE, 1, hsk.data.data, + hsk.data.length); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -687,34 +653,29 @@ int _gnutls13_recv_async_handshake(gnutls_session_t session) switch (hsk.htype) { case GNUTLS_HANDSHAKE_CERTIFICATE_REQUEST: - if (! - (session->security_parameters.entity == - GNUTLS_CLIENT) -|| !(session->internals.flags & GNUTLS_POST_HANDSHAKE_AUTH)) { - ret = - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET); + if (!(session->security_parameters.entity == + GNUTLS_CLIENT) || + !(session->internals.flags & + GNUTLS_POST_HANDSHAKE_AUTH)) { + ret = gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET); goto cleanup; } _gnutls_buffer_reset(&session->internals.reauth_buffer); /* include the handshake headers in reauth buffer */ - ret = - _gnutls_buffer_append_data(&session-> - internals.reauth_buffer, - hsk.header, - hsk.header_size); + ret = _gnutls_buffer_append_data( + &session->internals.reauth_buffer, hsk.header, + hsk.header_size); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _gnutls_buffer_append_data(&session-> - internals.reauth_buffer, - hsk.data.data, - hsk.data.length); + ret = _gnutls_buffer_append_data( + &session->internals.reauth_buffer, + hsk.data.data, hsk.data.length); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -722,8 +683,8 @@ int _gnutls13_recv_async_handshake(gnutls_session_t session) if (session->internals.flags & GNUTLS_AUTO_REAUTH) { ret = gnutls_reauth(session, 0); - if (ret == GNUTLS_E_AGAIN - || ret == GNUTLS_E_INTERRUPTED) { + if (ret == GNUTLS_E_AGAIN || + ret == GNUTLS_E_INTERRUPTED) { next_state = RECV_STATE_REAUTH; } else if (ret < 0) { gnutls_assert(); @@ -747,19 +708,18 @@ int _gnutls13_recv_async_handshake(gnutls_session_t session) /* Handshake messages MUST NOT span key changes, i.e., we * should not have any other pending handshake messages from * the same record. */ - if (session->internals.handshake_recv_buffer_size != 0) { - ret = - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET); + if (session->internals.handshake_recv_buffer_size != + 0) { + ret = gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET); goto cleanup; } break; case GNUTLS_HANDSHAKE_NEW_SESSION_TICKET: if (session->security_parameters.entity != GNUTLS_CLIENT) { - ret = - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET); + ret = gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET); goto cleanup; } @@ -769,13 +729,13 @@ int _gnutls13_recv_async_handshake(gnutls_session_t session) goto cleanup; } - memcpy(session->internals. - tls13_ticket.resumption_master_secret, + memcpy(session->internals.tls13_ticket + .resumption_master_secret, session->key.proto.tls13.ap_rms, session->key.proto.tls13.temp_secret_size); session->internals.tls13_ticket.prf = - session->security_parameters.prf; + session->security_parameters.prf; session->internals.hsk_flags |= HSK_TICKET_RECEIVED; break; default: @@ -784,9 +744,9 @@ int _gnutls13_recv_async_handshake(gnutls_session_t session) goto cleanup; } - ret = - _gnutls_call_hook_func(session, hsk.htype, GNUTLS_HOOK_POST, - 1, hsk.data.data, hsk.data.length); + ret = _gnutls_call_hook_func(session, hsk.htype, + GNUTLS_HOOK_POST, 1, hsk.data.data, + hsk.data.length); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -799,7 +759,7 @@ int _gnutls13_recv_async_handshake(gnutls_session_t session) return 0; - cleanup: +cleanup: /* if we have pending/partial handshake data in buffers, ensure that * next read will read handshake data */ if (_gnutls_record_buffer_get_size(session) > 0) @@ -829,8 +789,8 @@ int gnutls_session_ticket_send(gnutls_session_t session, unsigned nr, int ret = 0; const version_entry_st *vers = get_version(session); - if (!vers->tls13_sem - || session->security_parameters.entity == GNUTLS_CLIENT) + if (!vers->tls13_sem || + session->security_parameters.entity == GNUTLS_CLIENT) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); if (nr == 0) @@ -846,10 +806,8 @@ int gnutls_session_ticket_send(gnutls_session_t session, unsigned nr, } FALLTHROUGH; case TICKET_STATE1: - ret = - _gnutls13_send_session_ticket(session, nr, - TICKET_STATE == - TICKET_STATE1 ? 1 : 0); + ret = _gnutls13_send_session_ticket( + session, nr, TICKET_STATE == TICKET_STATE1 ? 1 : 0); TICKET_STATE = TICKET_STATE1; if (ret < 0) { gnutls_assert(); diff --git a/lib/handshake.c b/lib/handshake.c index dddf77c4f2..e50cfa0af7 100644 --- a/lib/handshake.c +++ b/lib/handshake.c @@ -50,8 +50,8 @@ #include #include #include -#include /* for gnutls_anon_server_credentials_t */ -#include /* for gnutls_psk_server_credentials_t */ +#include /* for gnutls_anon_server_credentials_t */ +#include /* for gnutls_psk_server_credentials_t */ #include #include #include "secrets.h" @@ -60,13 +60,13 @@ #include "locks.h" #include "system/ktls.h" -static int check_if_null_comp_present(gnutls_session_t session, - uint8_t * data, int datalen); +static int check_if_null_comp_present(gnutls_session_t session, uint8_t *data, + int datalen); static int handshake_client(gnutls_session_t session); static int handshake_server(gnutls_session_t session); -static int -read_server_hello(gnutls_session_t session, uint8_t * data, int datalen); +static int read_server_hello(gnutls_session_t session, uint8_t *data, + int datalen); static int recv_handshake_final(gnutls_session_t session, int init); static int send_handshake_final(gnutls_session_t session, int init); @@ -87,20 +87,17 @@ inline static void handshake_hash_buffer_reset(gnutls_session_t session) return; } -static int -handshake_hash_add_recvd(gnutls_session_t session, - gnutls_handshake_description_t recv_type, - uint8_t * header, uint16_t header_size, - uint8_t * dataptr, uint32_t datalen); +static int handshake_hash_add_recvd(gnutls_session_t session, + gnutls_handshake_description_t recv_type, + uint8_t *header, uint16_t header_size, + uint8_t *dataptr, uint32_t datalen); -static int -handshake_hash_add_sent(gnutls_session_t session, - gnutls_handshake_description_t type, - uint8_t * dataptr, uint32_t datalen); +static int handshake_hash_add_sent(gnutls_session_t session, + gnutls_handshake_description_t type, + uint8_t *dataptr, uint32_t datalen); -static int -recv_hello_verify_request(gnutls_session_t session, - uint8_t * data, int datalen); +static int recv_hello_verify_request(gnutls_session_t session, uint8_t *data, + int datalen); /* Clears the handshake hash buffers and handles. */ @@ -114,7 +111,7 @@ void _gnutls_handshake_hash_buffers_clear(gnutls_session_t session) /* Replace handshake message buffer, with the special synthetic message * needed by TLS1.3 when HRR is sent. */ int _gnutls13_handshake_hash_buffers_synth(gnutls_session_t session, - const mac_entry_st * prf, + const mac_entry_st *prf, unsigned client) { int ret; @@ -130,7 +127,7 @@ int _gnutls13_handshake_hash_buffers_synth(gnutls_session_t session, hdata[0] = 254; _gnutls_write_uint24(prf->output_size, &hdata[1]); - ret = gnutls_hash_fast((gnutls_digest_algorithm_t) prf->id, + ret = gnutls_hash_fast((gnutls_digest_algorithm_t)prf->id, session->internals.handshake_hash_buffer.data, length, hdata + 4); if (ret < 0) @@ -138,16 +135,15 @@ int _gnutls13_handshake_hash_buffers_synth(gnutls_session_t session, handshake_hash_buffer_reset(session); - ret = - _gnutls_buffer_append_data(&session->internals. - handshake_hash_buffer, hdata, - prf->output_size + 4); + ret = _gnutls_buffer_append_data( + &session->internals.handshake_hash_buffer, hdata, + prf->output_size + 4); if (ret < 0) return gnutls_assert_val(ret); - _gnutls_buffers_log - ("BUF[HSK]: Replaced handshake buffer with synth message (%d bytes)\n", - prf->output_size + 4); + _gnutls_buffers_log( + "BUF[HSK]: Replaced handshake buffer with synth message (%d bytes)\n", + prf->output_size + 4); return 0; } @@ -171,9 +167,8 @@ static int tls12_resume_copy_required_vals(gnutls_session_t session, * That is because the client must see these in our * hello message. */ - ret = _gnutls_set_cipher_suite2(session, - session->internals. - resumed_security_parameters.cs); + ret = _gnutls_set_cipher_suite2( + session, session->internals.resumed_security_parameters.cs); if (ret < 0) return gnutls_assert_val(ret); @@ -182,36 +177,34 @@ static int tls12_resume_copy_required_vals(gnutls_session_t session, */ session->security_parameters.entity = - session->internals.resumed_security_parameters.entity; + session->internals.resumed_security_parameters.entity; if (session->internals.resumed_security_parameters.pversion == NULL) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - if (_gnutls_set_current_version(session, - session->internals. - resumed_security_parameters.pversion-> - id) < 0) + if (_gnutls_set_current_version( + session, session->internals.resumed_security_parameters + .pversion->id) < 0) return gnutls_assert_val(GNUTLS_E_UNSUPPORTED_VERSION_PACKET); session->security_parameters.client_ctype = - session->internals.resumed_security_parameters.client_ctype; + session->internals.resumed_security_parameters.client_ctype; session->security_parameters.server_ctype = - session->internals.resumed_security_parameters.server_ctype; + session->internals.resumed_security_parameters.server_ctype; if (!ticket) { memcpy(session->security_parameters.session_id, - session->internals. - resumed_security_parameters.session_id, + session->internals.resumed_security_parameters.session_id, sizeof(session->security_parameters.session_id)); session->security_parameters.session_id_size = - session->internals. - resumed_security_parameters.session_id_size; + session->internals.resumed_security_parameters + .session_id_size; } return 0; } -void _gnutls_set_client_random(gnutls_session_t session, uint8_t * rnd) +void _gnutls_set_client_random(gnutls_session_t session, uint8_t *rnd) { _gnutls_memory_mark_defined(session->security_parameters.client_random, GNUTLS_RANDOM_SIZE); @@ -219,32 +212,30 @@ void _gnutls_set_client_random(gnutls_session_t session, uint8_t * rnd) GNUTLS_RANDOM_SIZE); } -static -int _gnutls_gen_client_random(gnutls_session_t session) +static int _gnutls_gen_client_random(gnutls_session_t session) { int ret; /* no random given, we generate. */ if (session->internals.sc_random_set != 0) { - _gnutls_memory_mark_defined(session-> - security_parameters.client_random, - GNUTLS_RANDOM_SIZE); + _gnutls_memory_mark_defined( + session->security_parameters.client_random, + GNUTLS_RANDOM_SIZE); memcpy(session->security_parameters.client_random, - session->internals. - resumed_security_parameters.client_random, + session->internals.resumed_security_parameters + .client_random, GNUTLS_RANDOM_SIZE); } else { - _gnutls_memory_mark_defined(session-> - security_parameters.client_random, - GNUTLS_RANDOM_SIZE); - ret = - gnutls_rnd(GNUTLS_RND_NONCE, - session->security_parameters.client_random, - GNUTLS_RANDOM_SIZE); + _gnutls_memory_mark_defined( + session->security_parameters.client_random, + GNUTLS_RANDOM_SIZE); + ret = gnutls_rnd(GNUTLS_RND_NONCE, + session->security_parameters.client_random, + GNUTLS_RANDOM_SIZE); if (ret < 0) { - _gnutls_memory_mark_undefined - (session->security_parameters.client_random, - GNUTLS_RANDOM_SIZE); + _gnutls_memory_mark_undefined( + session->security_parameters.client_random, + GNUTLS_RANDOM_SIZE); return gnutls_assert_val(ret); } } @@ -252,9 +243,8 @@ int _gnutls_gen_client_random(gnutls_session_t session) return 0; } -static -int _gnutls_set_server_random(gnutls_session_t session, - const version_entry_st * vers, uint8_t * rnd) +static int _gnutls_set_server_random(gnutls_session_t session, + const version_entry_st *vers, uint8_t *rnd) { const version_entry_st *max; @@ -265,35 +255,31 @@ int _gnutls_set_server_random(gnutls_session_t session, /* check whether the server random value is set according to * to TLS 1.3. p4.1.3 requirements */ - if (!IS_DTLS(session) && vers->id <= GNUTLS_TLS1_2 - && have_creds_for_tls13(session)) { - + if (!IS_DTLS(session) && vers->id <= GNUTLS_TLS1_2 && + have_creds_for_tls13(session)) { max = _gnutls_version_max(session); if (max->id <= GNUTLS_TLS1_2) return 0; if (vers->id == GNUTLS_TLS1_2 && - memcmp(&session-> - security_parameters.server_random[GNUTLS_RANDOM_SIZE - - 8], + memcmp(&session->security_parameters + .server_random[GNUTLS_RANDOM_SIZE - 8], "\x44\x4F\x57\x4E\x47\x52\x44\x01", 8) == 0) { - - _gnutls_audit_log(session, - "Detected downgrade to TLS 1.2 from TLS 1.3\n"); - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); - } else if (vers->id <= GNUTLS_TLS1_1 - && memcmp(&session->security_parameters.server_random - [GNUTLS_RANDOM_SIZE - 8], - "\x44\x4F\x57\x4E\x47\x52\x44\x00", - 8) == 0) { - - _gnutls_audit_log(session, - "Detected downgrade to TLS 1.1 or earlier from TLS 1.3\n"); - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + _gnutls_audit_log( + session, + "Detected downgrade to TLS 1.2 from TLS 1.3\n"); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + } else if (vers->id <= GNUTLS_TLS1_1 && + memcmp(&session->security_parameters + .server_random[GNUTLS_RANDOM_SIZE - + 8], + "\x44\x4F\x57\x4E\x47\x52\x44\x00", 8) == 0) { + _gnutls_audit_log( + session, + "Detected downgrade to TLS 1.1 or earlier from TLS 1.3\n"); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); } } @@ -306,12 +292,12 @@ int _gnutls_gen_server_random(gnutls_session_t session, int version) const version_entry_st *max; if (session->internals.sc_random_set != 0) { - _gnutls_memory_mark_defined(session-> - security_parameters.server_random, - GNUTLS_RANDOM_SIZE); + _gnutls_memory_mark_defined( + session->security_parameters.server_random, + GNUTLS_RANDOM_SIZE); memcpy(session->security_parameters.server_random, - session->internals. - resumed_security_parameters.server_random, + session->internals.resumed_security_parameters + .server_random, GNUTLS_RANDOM_SIZE); return 0; } @@ -326,31 +312,29 @@ int _gnutls_gen_server_random(gnutls_session_t session, int version) if (!IS_DTLS(session) && max->id >= GNUTLS_TLS1_3 && version <= GNUTLS_TLS1_2) { if (version == GNUTLS_TLS1_2) { - memcpy(&session->security_parameters.server_random - [GNUTLS_RANDOM_SIZE - 8], + memcpy(&session->security_parameters + .server_random[GNUTLS_RANDOM_SIZE - 8], "\x44\x4F\x57\x4E\x47\x52\x44\x01", 8); } else { - memcpy(&session->security_parameters.server_random - [GNUTLS_RANDOM_SIZE - 8], + memcpy(&session->security_parameters + .server_random[GNUTLS_RANDOM_SIZE - 8], "\x44\x4F\x57\x4E\x47\x52\x44\x00", 8); } - ret = - gnutls_rnd(GNUTLS_RND_NONCE, - session->security_parameters.server_random, - GNUTLS_RANDOM_SIZE - 8); + ret = gnutls_rnd(GNUTLS_RND_NONCE, + session->security_parameters.server_random, + GNUTLS_RANDOM_SIZE - 8); } else { - ret = - gnutls_rnd(GNUTLS_RND_NONCE, - session->security_parameters.server_random, - GNUTLS_RANDOM_SIZE); + ret = gnutls_rnd(GNUTLS_RND_NONCE, + session->security_parameters.server_random, + GNUTLS_RANDOM_SIZE); } if (ret < 0) { gnutls_assert(); - _gnutls_memory_mark_undefined(session-> - security_parameters.server_random, - GNUTLS_RANDOM_SIZE); + _gnutls_memory_mark_undefined( + session->security_parameters.server_random, + GNUTLS_RANDOM_SIZE); return ret; } @@ -360,12 +344,11 @@ int _gnutls_gen_server_random(gnutls_session_t session, int version) #ifdef ENABLE_SSL3 /* Calculate The SSL3 Finished message */ -# define SSL3_CLIENT_MSG "CLNT" -# define SSL3_SERVER_MSG "SRVR" -# define SSL_MSG_LEN 4 -static int -_gnutls_ssl3_finished(gnutls_session_t session, int type, uint8_t * ret, - int sending) +#define SSL3_CLIENT_MSG "CLNT" +#define SSL3_SERVER_MSG "SRVR" +#define SSL_MSG_LEN 4 +static int _gnutls_ssl3_finished(gnutls_session_t session, int type, + uint8_t *ret, int sending) { digest_hd_st td_md5; digest_hd_st td_sha; @@ -387,10 +370,10 @@ _gnutls_ssl3_finished(gnutls_session_t session, int type, uint8_t * ret, return gnutls_assert_val(rc); } - _gnutls_hash(&td_sha, - session->internals.handshake_hash_buffer.data, len); - _gnutls_hash(&td_md5, - session->internals.handshake_hash_buffer.data, len); + _gnutls_hash(&td_sha, session->internals.handshake_hash_buffer.data, + len); + _gnutls_hash(&td_md5, session->internals.handshake_hash_buffer.data, + len); if (type == GNUTLS_SERVER) mesg = SSL3_SERVER_MSG; @@ -400,20 +383,18 @@ _gnutls_ssl3_finished(gnutls_session_t session, int type, uint8_t * ret, _gnutls_hash(&td_md5, mesg, SSL_MSG_LEN); _gnutls_hash(&td_sha, mesg, SSL_MSG_LEN); - rc = _gnutls_mac_deinit_ssl3_handshake(&td_md5, ret, - session->security_parameters. - master_secret, - GNUTLS_MASTER_SIZE); + rc = _gnutls_mac_deinit_ssl3_handshake( + &td_md5, ret, session->security_parameters.master_secret, + GNUTLS_MASTER_SIZE); if (rc < 0) { _gnutls_hash_deinit(&td_md5, NULL); _gnutls_hash_deinit(&td_sha, NULL); return gnutls_assert_val(rc); } - rc = _gnutls_mac_deinit_ssl3_handshake(&td_sha, &ret[16], - session->security_parameters. - master_secret, - GNUTLS_MASTER_SIZE); + rc = _gnutls_mac_deinit_ssl3_handshake( + &td_sha, &ret[16], session->security_parameters.master_secret, + GNUTLS_MASTER_SIZE); if (rc < 0) { _gnutls_hash_deinit(&td_sha, NULL); return gnutls_assert_val(rc); @@ -428,8 +409,8 @@ _gnutls_ssl3_finished(gnutls_session_t session, int type, uint8_t * ret, #define SERVER_MSG "server finished" #define CLIENT_MSG "client finished" #define TLS_MSG_LEN 15 -static int -_gnutls_finished(gnutls_session_t session, int type, void *ret, int sending) +static int _gnutls_finished(gnutls_session_t session, int type, void *ret, + int sending) { const int siz = TLS_MSG_LEN; uint8_t concat[MAX_HASH_SIZE]; @@ -459,23 +440,21 @@ _gnutls_finished(gnutls_session_t session, int type, void *ret, int sending) _gnutls_memory_mark_defined(session->security_parameters.master_secret, GNUTLS_MASTER_SIZE); - rc = _gnutls_PRF(session, - session->security_parameters.master_secret, - GNUTLS_MASTER_SIZE, mesg, siz, concat, hash_len, - 12, ret); + rc = _gnutls_PRF(session, session->security_parameters.master_secret, + GNUTLS_MASTER_SIZE, mesg, siz, concat, hash_len, 12, + ret); if (rc < 0) { - _gnutls_memory_mark_undefined(session-> - security_parameters.master_secret, - GNUTLS_MASTER_SIZE); + _gnutls_memory_mark_undefined( + session->security_parameters.master_secret, + GNUTLS_MASTER_SIZE); } return rc; } /* returns the 0 on success or a negative error code. */ -int -_gnutls_negotiate_version(gnutls_session_t session, - uint8_t major, uint8_t minor, unsigned allow_tls13) +int _gnutls_negotiate_version(gnutls_session_t session, uint8_t major, + uint8_t minor, unsigned allow_tls13) { const version_entry_st *vers; const version_entry_st *aversion = nversion_to_entry(major, minor); @@ -484,17 +463,15 @@ _gnutls_negotiate_version(gnutls_session_t session, * TLS 1.2 is handled separately because it is always advertized under TLS 1.3 or later */ if (aversion == NULL || _gnutls_nversion_is_supported(session, major, minor) == 0) { - if (aversion && aversion->id == GNUTLS_TLS1_2) { vers = _gnutls_version_max(session); if (unlikely(vers == NULL)) - return - gnutls_assert_val - (GNUTLS_E_NO_CIPHER_SUITES); + return gnutls_assert_val( + GNUTLS_E_NO_CIPHER_SUITES); if (vers->id >= GNUTLS_TLS1_2) { session->security_parameters.pversion = - aversion; + aversion; return 0; } } @@ -502,9 +479,8 @@ _gnutls_negotiate_version(gnutls_session_t session, /* if we get an unknown/unsupported version, then fail if the version we * got is too low to be supported */ if (!_gnutls_version_is_too_high(session, major, minor)) - return - gnutls_assert_val - (GNUTLS_E_UNSUPPORTED_VERSION_PACKET); + return gnutls_assert_val( + GNUTLS_E_UNSUPPORTED_VERSION_PACKET); /* If he requested something we do not support * then we send him the highest we support. @@ -538,8 +514,8 @@ _gnutls_negotiate_version(gnutls_session_t session, * - GNUTLS_E_INT_RET_0 if GNUTLS_E_AGAIN || GNUTLS_E_INTERRUPTED were returned by the callback * - a negative error code on other error */ -int -_gnutls_user_hello_func(gnutls_session_t session, uint8_t major, uint8_t minor) +int _gnutls_user_hello_func(gnutls_session_t session, uint8_t major, + uint8_t minor) { int ret, sret = 0; const version_entry_st *vers, *old_vers; @@ -564,17 +540,16 @@ _gnutls_user_hello_func(gnutls_session_t session, uint8_t major, uint8_t minor) new_max = _gnutls_version_max(session); old_vers = get_version(session); - if (!old_vers->tls13_sem - || (new_max && !new_max->tls13_sem)) { + if (!old_vers->tls13_sem || + (new_max && !new_max->tls13_sem)) { #if GNUTLS_TLS_VERSION_MAX != GNUTLS_TLS1_3 -# error "Need to update the following logic" +#error "Need to update the following logic" #endif /* Here we need to renegotiate the version since the callee might * have disabled some TLS versions. This logic does not cope for * protocols later than TLS1.3 if they have the tls13_sem set */ - ret = - _gnutls_negotiate_version(session, major, - minor, 0); + ret = _gnutls_negotiate_version(session, major, + minor, 0); if (ret < 0) return gnutls_assert_val(ret); @@ -583,9 +558,8 @@ _gnutls_user_hello_func(gnutls_session_t session, uint8_t major, uint8_t minor) /* at this point we need to regenerate the random value to * avoid the peer detecting this session as a rollback * attempt. */ - ret = - _gnutls_gen_server_random(session, - vers->id); + ret = _gnutls_gen_server_random( + session, vers->id); if (ret < 0) return gnutls_assert_val(ret); } @@ -605,10 +579,10 @@ static int set_auth_types(gnutls_session_t session) /* sanity check: * we see TLS1.3 negotiated but no key share was sent */ if (ver->tls13_sem) { - if (unlikely - (!(session->internals.hsk_flags & HSK_PSK_KE_MODE_PSK) - && !(session-> - internals.hsk_flags & HSK_KEY_SHARE_RECEIVED))) { + if (unlikely(!(session->internals.hsk_flags & + HSK_PSK_KE_MODE_PSK) && + !(session->internals.hsk_flags & + HSK_KEY_SHARE_RECEIVED))) { return gnutls_assert_val(GNUTLS_E_MISSING_EXTENSION); } @@ -626,9 +600,9 @@ static int set_auth_types(gnutls_session_t session) if (kx != GNUTLS_KX_UNKNOWN) { session->security_parameters.server_auth_type = - _gnutls_map_kx_get_cred(kx, 1); + _gnutls_map_kx_get_cred(kx, 1); session->security_parameters.client_auth_type = - _gnutls_map_kx_get_cred(kx, 0); + _gnutls_map_kx_get_cred(kx, 0); } else if (unlikely(!session->internals.resumed)) { /* Here we can only arrive if something we received * prevented the session from completing. */ @@ -643,8 +617,8 @@ static int set_auth_types(gnutls_session_t session) * or version 2.0 client hello (only for compatibility * since SSL version 2.0 is not supported). */ -static int -read_client_hello(gnutls_session_t session, uint8_t * data, int datalen) +static int read_client_hello(gnutls_session_t session, uint8_t *data, + int datalen) { uint8_t session_id_len; int pos = 0, ret; @@ -657,8 +631,8 @@ read_client_hello(gnutls_session_t session, uint8_t * data, int datalen) const version_entry_st *vers; DECR_LEN(len, 2); - _gnutls_handshake_log("HSK[%p]: Client's version: %d.%d\n", - session, data[pos], data[pos + 1]); + _gnutls_handshake_log("HSK[%p]: Client's version: %d.%d\n", session, + data[pos], data[pos + 1]); major = data[pos]; minor = data[pos + 1]; @@ -725,7 +699,7 @@ read_client_hello(gnutls_session_t session, uint8_t * data, int datalen) pos += suite_size; DECR_LEN(len, 1); - comp_size = data[pos++]; /* the number of compression methods */ + comp_size = data[pos++]; /* the number of compression methods */ if (comp_size == 0) return gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET_LENGTH); @@ -741,19 +715,17 @@ read_client_hello(gnutls_session_t session, uint8_t * data, int datalen) * and version negotiation. We don't want to parse any other * extensions since we don't want new extension values to override * the resumed ones. */ - ret = - _gnutls_parse_hello_extensions(session, - GNUTLS_EXT_FLAG_CLIENT_HELLO, - GNUTLS_EXT_VERSION_NEG, ext_ptr, - ext_size); + ret = _gnutls_parse_hello_extensions(session, + GNUTLS_EXT_FLAG_CLIENT_HELLO, + GNUTLS_EXT_VERSION_NEG, ext_ptr, + ext_size); if (ret < 0) return gnutls_assert_val(ret); - ret = - _gnutls_parse_hello_extensions(session, - GNUTLS_EXT_FLAG_CLIENT_HELLO, - GNUTLS_EXT_MANDATORY, ext_ptr, - ext_size); + ret = _gnutls_parse_hello_extensions(session, + GNUTLS_EXT_FLAG_CLIENT_HELLO, + GNUTLS_EXT_MANDATORY, ext_ptr, + ext_size); if (ret < 0) return gnutls_assert_val(ret); @@ -762,17 +734,15 @@ read_client_hello(gnutls_session_t session, uint8_t * data, int datalen) return gnutls_assert_val(GNUTLS_E_UNSUPPORTED_VERSION_PACKET); if (!vers->tls13_sem) { - ret = - _gnutls_server_restore_session(session, session_id, - session_id_len); + ret = _gnutls_server_restore_session(session, session_id, + session_id_len); if (session_id_len > 0) session->internals.resumption_requested = 1; - if (ret == 0) { /* resumed using default TLS resumption! */ - ret = - _gnutls_server_select_suite(session, suite_ptr, - suite_size, 1); + if (ret == 0) { /* resumed using default TLS resumption! */ + ret = _gnutls_server_select_suite(session, suite_ptr, + suite_size, 1); if (ret < 0) return gnutls_assert_val(ret); @@ -784,16 +754,15 @@ read_client_hello(gnutls_session_t session, uint8_t * data, int datalen) return _gnutls_user_hello_func(session, major, minor); } else { - ret = - _gnutls_generate_session_id - (session->security_parameters.session_id, - &session->security_parameters.session_id_size); + ret = _gnutls_generate_session_id( + session->security_parameters.session_id, + &session->security_parameters.session_id_size); if (ret < 0) return gnutls_assert_val(ret); session->internals.resumed = false; } - } else { /* TLS1.3 */ + } else { /* TLS1.3 */ /* we echo client's session ID - length was checked previously */ assert(session_id_len <= GNUTLS_MAX_SESSION_ID_SIZE); if (session_id_len > 0) @@ -807,11 +776,10 @@ read_client_hello(gnutls_session_t session, uint8_t * data, int datalen) * Unconditionally try to parse extensions; safe renegotiation uses them in * sslv3 and higher, even though sslv3 doesn't officially support them. */ - ret = - _gnutls_parse_hello_extensions(session, - GNUTLS_EXT_FLAG_CLIENT_HELLO, - GNUTLS_EXT_APPLICATION, ext_ptr, - ext_size); + ret = _gnutls_parse_hello_extensions(session, + GNUTLS_EXT_FLAG_CLIENT_HELLO, + GNUTLS_EXT_APPLICATION, ext_ptr, + ext_size); /* len is the rest of the parsed length */ if (ret < 0) { gnutls_assert(); @@ -826,10 +794,9 @@ read_client_hello(gnutls_session_t session, uint8_t * data, int datalen) } /* Session tickets are parsed in this point */ - ret = - _gnutls_parse_hello_extensions(session, - GNUTLS_EXT_FLAG_CLIENT_HELLO, - GNUTLS_EXT_TLS, ext_ptr, ext_size); + ret = _gnutls_parse_hello_extensions(session, + GNUTLS_EXT_FLAG_CLIENT_HELLO, + GNUTLS_EXT_TLS, ext_ptr, ext_size); if (ret < 0) { gnutls_assert(); return ret; @@ -840,12 +807,11 @@ read_client_hello(gnutls_session_t session, uint8_t * data, int datalen) const mac_entry_st *me; record_parameters_st *params; - ce = cipher_to_entry(session->internals. - resumed_security_parameters. - cs->block_algorithm); - me = mac_to_entry(session->internals. - resumed_security_parameters. - cs->mac_algorithm); + ce = cipher_to_entry( + session->internals.resumed_security_parameters.cs + ->block_algorithm); + me = mac_to_entry(session->internals.resumed_security_parameters + .cs->mac_algorithm); ret = _gnutls_epoch_get(session, EPOCH_NEXT, ¶ms); if (ret < 0) { @@ -869,16 +835,15 @@ read_client_hello(gnutls_session_t session, uint8_t * data, int datalen) /* resumed by session_ticket extension */ if (!vers->tls13_sem && session->internals.resumed) { - session->internals.resumed_security_parameters. - max_record_recv_size = - session->security_parameters.max_record_recv_size; - session->internals.resumed_security_parameters. - max_record_send_size = - session->security_parameters.max_record_send_size; - - ret = - _gnutls_server_select_suite(session, suite_ptr, suite_size, - 1); + session->internals.resumed_security_parameters + .max_record_recv_size = + session->security_parameters.max_record_recv_size; + session->internals.resumed_security_parameters + .max_record_send_size = + session->security_parameters.max_record_send_size; + + ret = _gnutls_server_select_suite(session, suite_ptr, + suite_size, 1); if (ret < 0) return gnutls_assert_val(ret); @@ -913,8 +878,8 @@ read_client_hello(gnutls_session_t session, uint8_t * data, int datalen) return gnutls_assert_val(GNUTLS_E_UNSUPPORTED_VERSION_PACKET); /* check if EMS is required */ - if (!vers->tls13_sem && - vers->id != GNUTLS_SSL3 && vers->id != GNUTLS_DTLS0_9 && + if (!vers->tls13_sem && vers->id != GNUTLS_SSL3 && + vers->id != GNUTLS_DTLS0_9 && session->internals.priorities->force_ext_master_secret && !session->security_parameters.ext_master_secret) { return gnutls_assert_val(GNUTLS_E_INSUFFICIENT_SECURITY); @@ -932,11 +897,10 @@ read_client_hello(gnutls_session_t session, uint8_t * data, int datalen) /* call extensions that are intended to be parsed after the ciphersuite/cert * are known. */ - ret = - _gnutls_parse_hello_extensions(session, - GNUTLS_EXT_FLAG_CLIENT_HELLO, - _GNUTLS_EXT_TLS_POST_CS, ext_ptr, - ext_size); + ret = _gnutls_parse_hello_extensions(session, + GNUTLS_EXT_FLAG_CLIENT_HELLO, + _GNUTLS_EXT_TLS_POST_CS, ext_ptr, + ext_size); if (ret < 0) { gnutls_assert(); return ret; @@ -985,17 +949,15 @@ int _gnutls_send_finished(gnutls_session_t session, int again) #ifdef ENABLE_SSL3 if (vers->id == GNUTLS_SSL3) { - ret = - _gnutls_ssl3_finished(session, - session->security_parameters. - entity, data, 1); + ret = _gnutls_ssl3_finished( + session, session->security_parameters.entity, + data, 1); _mbuffer_set_udata_size(bufel, 36); - } else { /* TLS 1.0+ */ + } else { /* TLS 1.0+ */ #endif - ret = _gnutls_finished(session, - session-> - security_parameters.entity, data, - 1); + ret = _gnutls_finished( + session, session->security_parameters.entity, + data, 1); _mbuffer_set_udata_size(bufel, 12); #ifdef ENABLE_SSL3 } @@ -1014,27 +976,24 @@ int _gnutls_send_finished(gnutls_session_t session, int again) return ret; } - if ((!session->internals.resumed - && session->security_parameters.entity == GNUTLS_CLIENT) - || (session->internals.resumed - && session->security_parameters.entity == - GNUTLS_SERVER)) { + if ((!session->internals.resumed && + session->security_parameters.entity == GNUTLS_CLIENT) || + (session->internals.resumed && + session->security_parameters.entity == GNUTLS_SERVER)) { /* if we are a client not resuming - or we are a server resuming */ - _gnutls_handshake_log - ("HSK[%p]: recording tls-unique CB (send)\n", - session); + _gnutls_handshake_log( + "HSK[%p]: recording tls-unique CB (send)\n", + session); memcpy(session->internals.cb_tls_unique, data, vdata_size); session->internals.cb_tls_unique_len = vdata_size; } - ret = - _gnutls_send_handshake(session, bufel, - GNUTLS_HANDSHAKE_FINISHED); + ret = _gnutls_send_handshake(session, bufel, + GNUTLS_HANDSHAKE_FINISHED); } else { - ret = - _gnutls_send_handshake(session, NULL, - GNUTLS_HANDSHAKE_FINISHED); + ret = _gnutls_send_handshake(session, NULL, + GNUTLS_HANDSHAKE_FINISHED); } return ret; @@ -1055,8 +1014,8 @@ int _gnutls_recv_finished(gnutls_session_t session) if (unlikely(vers == NULL)) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - ret = - _gnutls_recv_handshake(session, GNUTLS_HANDSHAKE_FINISHED, 0, &buf); + ret = _gnutls_recv_handshake(session, GNUTLS_HANDSHAKE_FINISHED, 0, + &buf); if (ret < 0) { gnutls_assert(); return ret; @@ -1080,16 +1039,14 @@ int _gnutls_recv_finished(gnutls_session_t session) #ifdef ENABLE_SSL3 if (vers->id == GNUTLS_SSL3) { - ret = - _gnutls_ssl3_finished(session, - (session->security_parameters.entity + - 1) % 2, data, 0); - } else /* TLS 1.0+ */ + ret = _gnutls_ssl3_finished( + session, (session->security_parameters.entity + 1) % 2, + data, 0); + } else /* TLS 1.0+ */ #endif - ret = - _gnutls_finished(session, - (session->security_parameters.entity + - 1) % 2, data, 0); + ret = _gnutls_finished( + session, (session->security_parameters.entity + 1) % 2, + data, 0); if (ret < 0) { gnutls_assert(); @@ -1100,7 +1057,7 @@ int _gnutls_recv_finished(gnutls_session_t session) /* When fuzzying allow to proceed without verifying the handshake * consistency */ (void)vrfy; -# warning This is unsafe for production builds +#warning This is unsafe for production builds #else if (memcmp(vrfy, data, data_size) != 0) { @@ -1116,18 +1073,18 @@ int _gnutls_recv_finished(gnutls_session_t session) goto cleanup; } - if ((session->internals.resumed - && session->security_parameters.entity == GNUTLS_CLIENT) - || (!session->internals.resumed - && session->security_parameters.entity == GNUTLS_SERVER)) { + if ((session->internals.resumed && + session->security_parameters.entity == GNUTLS_CLIENT) || + (!session->internals.resumed && + session->security_parameters.entity == GNUTLS_SERVER)) { /* if we are a client resuming - or we are a server not resuming */ - _gnutls_handshake_log - ("HSK[%p]: recording tls-unique CB (recv)\n", session); + _gnutls_handshake_log( + "HSK[%p]: recording tls-unique CB (recv)\n", session); memcpy(session->internals.cb_tls_unique, data, data_size); session->internals.cb_tls_unique_len = data_size; } - cleanup: +cleanup: _gnutls_buffer_clear(&buf); return ret; @@ -1139,9 +1096,8 @@ int _gnutls_recv_finished(gnutls_session_t session) * When @scsv_only is non-zero only the available SCSVs are parsed * and acted upon. */ -int -_gnutls_server_select_suite(gnutls_session_t session, uint8_t * data, - unsigned int datalen, unsigned scsv_only) +int _gnutls_server_select_suite(gnutls_session_t session, uint8_t *data, + unsigned int datalen, unsigned scsv_only) { int ret; unsigned int i; @@ -1161,9 +1117,9 @@ _gnutls_server_select_suite(gnutls_session_t session, uint8_t * data, if (session->internals.priorities->sr != SR_DISABLED && data[i] == GNUTLS_RENEGO_PROTECTION_REQUEST_MAJOR && data[i + 1] == GNUTLS_RENEGO_PROTECTION_REQUEST_MINOR) { - _gnutls_handshake_log - ("HSK[%p]: Received safe renegotiation CS\n", - session); + _gnutls_handshake_log( + "HSK[%p]: Received safe renegotiation CS\n", + session); retval = _gnutls_ext_sr_recv_cs(session); if (retval < 0) { gnutls_assert(); @@ -1175,19 +1131,18 @@ _gnutls_server_select_suite(gnutls_session_t session, uint8_t * data, if (data[i] == GNUTLS_FALLBACK_SCSV_MAJOR && data[i + 1] == GNUTLS_FALLBACK_SCSV_MINOR) { const version_entry_st *max = - _gnutls_version_max(session); + _gnutls_version_max(session); - _gnutls_handshake_log - ("HSK[%p]: Received fallback CS\n", session); + _gnutls_handshake_log("HSK[%p]: Received fallback CS\n", + session); if (vers != max) - return - gnutls_assert_val - (GNUTLS_E_INAPPROPRIATE_FALLBACK); + return gnutls_assert_val( + GNUTLS_E_INAPPROPRIATE_FALLBACK); } else if (!scsv_only) { if (peer_clist.size < MAX_CIPHERSUITE_SIZE) { peer_clist.entry[peer_clist.size] = - ciphersuite_to_entry(&data[i]); + ciphersuite_to_entry(&data[i]); if (peer_clist.entry[peer_clist.size] != NULL) peer_clist.size++; } @@ -1197,14 +1152,14 @@ _gnutls_server_select_suite(gnutls_session_t session, uint8_t * data, if (scsv_only) return 0; - ret = - _gnutls_figure_common_ciphersuite(session, &peer_clist, &selected); + ret = _gnutls_figure_common_ciphersuite(session, &peer_clist, + &selected); if (ret < 0) { return gnutls_assert_val(ret); } - _gnutls_handshake_log - ("HSK[%p]: Selected cipher suite: %s\n", session, selected->name); + _gnutls_handshake_log("HSK[%p]: Selected cipher suite: %s\n", session, + selected->name); ret = _gnutls_set_cipher_suite2(session, selected); if (ret < 0) { @@ -1227,23 +1182,21 @@ _gnutls_server_select_suite(gnutls_session_t session, uint8_t * data, */ session->internals.auth_struct = _gnutls_kx_auth_struct(kx); if (session->internals.auth_struct == NULL) { - _gnutls_handshake_log - ("HSK[%p]: Cannot find the appropriate handler for the KX algorithm\n", - session); + _gnutls_handshake_log( + "HSK[%p]: Cannot find the appropriate handler for the KX algorithm\n", + session); gnutls_assert(); return GNUTLS_E_INTERNAL_ERROR; } } return 0; - } /* This checks whether the null compression method is present. */ -static int -check_if_null_comp_present(gnutls_session_t session, - uint8_t * data, int datalen) +static int check_if_null_comp_present(gnutls_session_t session, uint8_t *data, + int datalen) { int j; @@ -1257,7 +1210,6 @@ check_if_null_comp_present(gnutls_session_t session, */ gnutls_assert(); return GNUTLS_E_UNKNOWN_COMPRESSION_ALGORITHM; - } /* This function sends an empty handshake packet. (like hello request). @@ -1265,9 +1217,9 @@ check_if_null_comp_present(gnutls_session_t session, * GNUTLS_E_AGAIN or GNUTLS_E_INTERRUPTED, then it must be called again * (until it returns ok), with NULL parameters. */ -static int -_gnutls_send_empty_handshake(gnutls_session_t session, - gnutls_handshake_description_t type, int again) +static int _gnutls_send_empty_handshake(gnutls_session_t session, + gnutls_handshake_description_t type, + int again) { mbuffer_st *bufel; @@ -1284,18 +1236,17 @@ _gnutls_send_empty_handshake(gnutls_session_t session, } int _gnutls_call_hook_func(gnutls_session_t session, - gnutls_handshake_description_t type, - int post, unsigned incoming, - const uint8_t * data, unsigned data_size) + gnutls_handshake_description_t type, int post, + unsigned incoming, const uint8_t *data, + unsigned data_size) { gnutls_datum_t msg = { (void *)data, data_size }; if (session->internals.h_hook != NULL) { - if ((session->internals.h_type == type - || session->internals.h_type == GNUTLS_HANDSHAKE_ANY) - && (session->internals.h_post == post - || session->internals.h_post == GNUTLS_HOOK_BOTH)) { - + if ((session->internals.h_type == type || + session->internals.h_type == GNUTLS_HANDSHAKE_ANY) && + (session->internals.h_post == post || + session->internals.h_post == GNUTLS_HOOK_BOTH)) { /* internal API for testing: when we are expected to * wait for GNUTLS_HANDSHAKE_CHANGE_CIPHER_SPEC, we * do so, but not when doing for all messages. The @@ -1305,11 +1256,11 @@ int _gnutls_call_hook_func(gnutls_session_t session, */ if (type == GNUTLS_HANDSHAKE_CHANGE_CIPHER_SPEC && session->internals.h_type != - GNUTLS_HANDSHAKE_CHANGE_CIPHER_SPEC) + GNUTLS_HANDSHAKE_CHANGE_CIPHER_SPEC) return 0; - return session->internals.h_hook(session, type, - post, incoming, &msg); + return session->internals.h_hook(session, type, post, + incoming, &msg); } } return 0; @@ -1318,13 +1269,13 @@ int _gnutls_call_hook_func(gnutls_session_t session, /* Note that the "New session ticket" handshake packet behaves differently under * TLS 1.2 or 1.3. In 1.2 it is included in the handshake process, while in 1.3 * it is sent asynchronously */ -#define IS_ASYNC(t, v) \ - (t == GNUTLS_HANDSHAKE_HELLO_REQUEST || t == GNUTLS_HANDSHAKE_KEY_UPDATE || \ +#define IS_ASYNC(t, v) \ + (t == GNUTLS_HANDSHAKE_HELLO_REQUEST || \ + t == GNUTLS_HANDSHAKE_KEY_UPDATE || \ (t == GNUTLS_HANDSHAKE_NEW_SESSION_TICKET && v->tls13_sem)) -int -_gnutls_send_handshake(gnutls_session_t session, mbuffer_st * bufel, - gnutls_handshake_description_t type) +int _gnutls_send_handshake(gnutls_session_t session, mbuffer_st *bufel, + gnutls_handshake_description_t type) { return _gnutls_send_handshake2(session, bufel, type, 0); } @@ -1334,10 +1285,9 @@ _gnutls_send_handshake(gnutls_session_t session, mbuffer_st * bufel, * GNUTLS_E_AGAIN or GNUTLS_E_INTERRUPTED, then it must be called again * (until it returns ok), with NULL parameters. */ -int -_gnutls_send_handshake2(gnutls_session_t session, mbuffer_st * bufel, - gnutls_handshake_description_t type, - unsigned queue_only) +int _gnutls_send_handshake2(gnutls_session_t session, mbuffer_st *bufel, + gnutls_handshake_description_t type, + unsigned queue_only) { int ret; uint8_t *data; @@ -1351,7 +1301,6 @@ _gnutls_send_handshake2(gnutls_session_t session, mbuffer_st * bufel, */ ret = _gnutls_handshake_io_write_flush(session); return ret; - } /* first run */ @@ -1359,7 +1308,7 @@ _gnutls_send_handshake2(gnutls_session_t session, mbuffer_st * bufel, i_datasize = _mbuffer_get_udata_size(bufel); datasize = i_datasize + _mbuffer_get_uhead_size(bufel); - data[pos++] = (uint8_t) REAL_HSK_TYPE(type); + data[pos++] = (uint8_t)REAL_HSK_TYPE(type); _gnutls_write_uint24(_mbuffer_get_udata_size(bufel), &data[pos]); pos += 3; @@ -1381,16 +1330,14 @@ _gnutls_send_handshake2(gnutls_session_t session, mbuffer_st * bufel, /* pos += 3; */ } - _gnutls_handshake_log("HSK[%p]: %s was queued [%ld bytes]\n", - session, _gnutls_handshake2str(type), - (long)datasize); + _gnutls_handshake_log("HSK[%p]: %s was queued [%ld bytes]\n", session, + _gnutls_handshake2str(type), (long)datasize); /* Here we keep the handshake messages in order to hash them... */ if (!IS_ASYNC(type, vers)) { - if ((ret = - handshake_hash_add_sent(session, type, data, - datasize)) < 0) { + if ((ret = handshake_hash_add_sent(session, type, data, + datasize)) < 0) { gnutls_assert(); _mbuffer_xfree(&bufel); return ret; @@ -1440,7 +1387,6 @@ _gnutls_send_handshake2(gnutls_session_t session, mbuffer_st * bufel, /* Decide when to cache and when to send */ if (vers && vers->tls13_sem) { - if (session->internals.initial_negotiation_completed) { /* we are under TLS1.3 in a re-authentication phase. * we don't attempt to cache any messages */ @@ -1450,13 +1396,13 @@ _gnutls_send_handshake2(gnutls_session_t session, mbuffer_st * bufel, /* The messages which are followed by another are not sent by default * but are cached instead */ switch (type) { - case GNUTLS_HANDSHAKE_SERVER_HELLO: /* always followed by something */ - case GNUTLS_HANDSHAKE_ENCRYPTED_EXTENSIONS: /* followed by finished or cert */ - case GNUTLS_HANDSHAKE_CERTIFICATE_REQUEST: /* followed by certificate */ - case GNUTLS_HANDSHAKE_CERTIFICATE_PKT: /* this one is followed by cert verify */ - case GNUTLS_HANDSHAKE_COMPRESSED_CERTIFICATE_PKT: /* as above */ - case GNUTLS_HANDSHAKE_CERTIFICATE_VERIFY: /* followed by finished */ - ret = 0; /* cache */ + case GNUTLS_HANDSHAKE_SERVER_HELLO: /* always followed by something */ + case GNUTLS_HANDSHAKE_ENCRYPTED_EXTENSIONS: /* followed by finished or cert */ + case GNUTLS_HANDSHAKE_CERTIFICATE_REQUEST: /* followed by certificate */ + case GNUTLS_HANDSHAKE_CERTIFICATE_PKT: /* this one is followed by cert verify */ + case GNUTLS_HANDSHAKE_COMPRESSED_CERTIFICATE_PKT: /* as above */ + case GNUTLS_HANDSHAKE_CERTIFICATE_VERIFY: /* followed by finished */ + ret = 0; /* cache */ break; default: /* send this and any cached messages */ @@ -1466,15 +1412,15 @@ _gnutls_send_handshake2(gnutls_session_t session, mbuffer_st * bufel, /* The messages which are followed by another are not sent by default * but are cached instead */ switch (type) { - case GNUTLS_HANDSHAKE_CERTIFICATE_PKT: /* this one is followed by ServerHelloDone + case GNUTLS_HANDSHAKE_CERTIFICATE_PKT: /* this one is followed by ServerHelloDone * or ClientKeyExchange always. */ - case GNUTLS_HANDSHAKE_COMPRESSED_CERTIFICATE_PKT: /* as above */ + case GNUTLS_HANDSHAKE_COMPRESSED_CERTIFICATE_PKT: /* as above */ case GNUTLS_HANDSHAKE_CERTIFICATE_STATUS: - case GNUTLS_HANDSHAKE_SERVER_KEY_EXCHANGE: /* as above */ - case GNUTLS_HANDSHAKE_SERVER_HELLO: /* as above */ - case GNUTLS_HANDSHAKE_CERTIFICATE_REQUEST: /* as above */ - case GNUTLS_HANDSHAKE_NEW_SESSION_TICKET: /* followed by ChangeCipherSpec */ + case GNUTLS_HANDSHAKE_SERVER_KEY_EXCHANGE: /* as above */ + case GNUTLS_HANDSHAKE_SERVER_HELLO: /* as above */ + case GNUTLS_HANDSHAKE_CERTIFICATE_REQUEST: /* as above */ + case GNUTLS_HANDSHAKE_NEW_SESSION_TICKET: /* followed by ChangeCipherSpec */ /* now for client Certificate, ClientKeyExchange and * CertificateVerify are always followed by ChangeCipherSpec @@ -1491,27 +1437,32 @@ _gnutls_send_handshake2(gnutls_session_t session, mbuffer_st * bufel, return ret; - force_send: +force_send: return _gnutls_handshake_io_write_flush(session); } -#define CHECK_SIZE(ll) \ - if ((session->internals.max_handshake_data_buffer_size > 0) && \ - (((ll) + session->internals.handshake_hash_buffer.length) > \ - session->internals.max_handshake_data_buffer_size)) { \ - _gnutls_debug_log("Handshake buffer length is %u (max: %u)\n", (unsigned)((ll) + session->internals.handshake_hash_buffer.length), (unsigned)session->internals.max_handshake_data_buffer_size); \ - return gnutls_assert_val(GNUTLS_E_HANDSHAKE_TOO_LARGE); \ - } +#define CHECK_SIZE(ll) \ + if ((session->internals.max_handshake_data_buffer_size > 0) && \ + (((ll) + session->internals.handshake_hash_buffer.length) > \ + session->internals.max_handshake_data_buffer_size)) { \ + _gnutls_debug_log( \ + "Handshake buffer length is %u (max: %u)\n", \ + (unsigned)((ll) + \ + session->internals.handshake_hash_buffer \ + .length), \ + (unsigned)session->internals \ + .max_handshake_data_buffer_size); \ + return gnutls_assert_val(GNUTLS_E_HANDSHAKE_TOO_LARGE); \ + } /* This function add the handshake headers and the * handshake data to the handshake hash buffers. Needed * for the finished messages calculations. */ -static int -handshake_hash_add_recvd(gnutls_session_t session, - gnutls_handshake_description_t recv_type, - uint8_t * header, uint16_t header_size, - uint8_t * dataptr, uint32_t datalen) +static int handshake_hash_add_recvd(gnutls_session_t session, + gnutls_handshake_description_t recv_type, + uint8_t *header, uint16_t header_size, + uint8_t *dataptr, uint32_t datalen) { int ret; const version_entry_st *vers = get_version(session); @@ -1527,21 +1478,19 @@ handshake_hash_add_recvd(gnutls_session_t session, CHECK_SIZE(header_size + datalen); session->internals.handshake_hash_buffer_prev_len = - session->internals.handshake_hash_buffer.length; + session->internals.handshake_hash_buffer.length; if (vers->id != GNUTLS_DTLS0_9) { - ret = - _gnutls_buffer_append_data(&session->internals. - handshake_hash_buffer, header, - header_size); + ret = _gnutls_buffer_append_data( + &session->internals.handshake_hash_buffer, header, + header_size); if (ret < 0) return gnutls_assert_val(ret); } if (datalen > 0) { - ret = - _gnutls_buffer_append_data(&session->internals. - handshake_hash_buffer, dataptr, - datalen); + ret = _gnutls_buffer_append_data( + &session->internals.handshake_hash_buffer, dataptr, + datalen); if (ret < 0) return gnutls_assert_val(ret); } @@ -1551,28 +1500,27 @@ handshake_hash_add_recvd(gnutls_session_t session, */ if (recv_type == GNUTLS_HANDSHAKE_CLIENT_HELLO) session->internals.handshake_hash_buffer_client_hello_len = - session->internals.handshake_hash_buffer.length; + session->internals.handshake_hash_buffer.length; if (recv_type == GNUTLS_HANDSHAKE_CLIENT_KEY_EXCHANGE) session->internals.handshake_hash_buffer_client_kx_len = - session->internals.handshake_hash_buffer.length; - if (recv_type == GNUTLS_HANDSHAKE_FINISHED - && session->security_parameters.entity == GNUTLS_CLIENT) + session->internals.handshake_hash_buffer.length; + if (recv_type == GNUTLS_HANDSHAKE_FINISHED && + session->security_parameters.entity == GNUTLS_CLIENT) session->internals.handshake_hash_buffer_server_finished_len = - session->internals.handshake_hash_buffer.length; - if (recv_type == GNUTLS_HANDSHAKE_FINISHED - && session->security_parameters.entity == GNUTLS_SERVER) + session->internals.handshake_hash_buffer.length; + if (recv_type == GNUTLS_HANDSHAKE_FINISHED && + session->security_parameters.entity == GNUTLS_SERVER) session->internals.handshake_hash_buffer_client_finished_len = - session->internals.handshake_hash_buffer.length; + session->internals.handshake_hash_buffer.length; return 0; } /* This function will store the handshake message we sent. */ -static int -handshake_hash_add_sent(gnutls_session_t session, - gnutls_handshake_description_t type, - uint8_t * dataptr, uint32_t datalen) +static int handshake_hash_add_sent(gnutls_session_t session, + gnutls_handshake_description_t type, + uint8_t *dataptr, uint32_t datalen) { int ret; const version_entry_st *vers = get_version(session); @@ -1598,26 +1546,25 @@ handshake_hash_add_sent(gnutls_session_t session, return 0; } - ret = - _gnutls_buffer_append_data(&session->internals. - handshake_hash_buffer, dataptr, datalen); + ret = _gnutls_buffer_append_data( + &session->internals.handshake_hash_buffer, dataptr, datalen); if (ret < 0) return gnutls_assert_val(ret); if (type == GNUTLS_HANDSHAKE_CLIENT_HELLO) session->internals.handshake_hash_buffer_client_hello_len = - session->internals.handshake_hash_buffer.length; + session->internals.handshake_hash_buffer.length; if (type == GNUTLS_HANDSHAKE_CLIENT_KEY_EXCHANGE) session->internals.handshake_hash_buffer_client_kx_len = - session->internals.handshake_hash_buffer.length; - if (type == GNUTLS_HANDSHAKE_FINISHED - && session->security_parameters.entity == GNUTLS_SERVER) + session->internals.handshake_hash_buffer.length; + if (type == GNUTLS_HANDSHAKE_FINISHED && + session->security_parameters.entity == GNUTLS_SERVER) session->internals.handshake_hash_buffer_server_finished_len = - session->internals.handshake_hash_buffer.length; - if (type == GNUTLS_HANDSHAKE_FINISHED - && session->security_parameters.entity == GNUTLS_CLIENT) + session->internals.handshake_hash_buffer.length; + if (type == GNUTLS_HANDSHAKE_FINISHED && + session->security_parameters.entity == GNUTLS_CLIENT) session->internals.handshake_hash_buffer_client_finished_len = - session->internals.handshake_hash_buffer.length; + session->internals.handshake_hash_buffer.length; return 0; } @@ -1627,18 +1574,17 @@ handshake_hash_add_sent(gnutls_session_t session, * E.g. for the SERVER_HELLO message (if it is expected), it will be * passed to _gnutls_recv_hello(). */ -int -_gnutls_recv_handshake(gnutls_session_t session, - gnutls_handshake_description_t type, - unsigned int optional, gnutls_buffer_st * buf) +int _gnutls_recv_handshake(gnutls_session_t session, + gnutls_handshake_description_t type, + unsigned int optional, gnutls_buffer_st *buf) { int ret, ret2; handshake_buffer_st hsk; ret = _gnutls_handshake_io_recv_int(session, type, &hsk, optional); if (ret < 0) { - if (optional != 0 - && ret == GNUTLS_E_UNEXPECTED_HANDSHAKE_PACKET) { + if (optional != 0 && + ret == GNUTLS_E_UNEXPECTED_HANDSHAKE_PACKET) { if (buf) _gnutls_buffer_init(buf); return 0; @@ -1648,17 +1594,16 @@ _gnutls_recv_handshake(gnutls_session_t session, } session->internals.last_handshake_in = hsk.htype; - ret = - _gnutls_call_hook_func(session, hsk.htype, GNUTLS_HOOK_PRE, 1, - hsk.data.data, hsk.data.length); + ret = _gnutls_call_hook_func(session, hsk.htype, GNUTLS_HOOK_PRE, 1, + hsk.data.data, hsk.data.length); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = handshake_hash_add_recvd(session, hsk.rtype, - hsk.header, hsk.header_size, - hsk.data.data, hsk.data.length); + ret = handshake_hash_add_recvd(session, hsk.rtype, hsk.header, + hsk.header_size, hsk.data.data, + hsk.data.length); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -1674,10 +1619,8 @@ _gnutls_recv_handshake(gnutls_session_t session, #ifdef ENABLE_SSL2 if (hsk.htype == GNUTLS_HANDSHAKE_CLIENT_HELLO_V2) - ret = - _gnutls_read_client_hello_v2(session, - hsk.data.data, - hsk.data.length); + ret = _gnutls_read_client_hello_v2( + session, hsk.data.data, hsk.data.length); else #endif { @@ -1718,9 +1661,8 @@ _gnutls_recv_handshake(gnutls_session_t session, goto cleanup; } - ret = - recv_hello_verify_request(session, - hsk.data.data, hsk.data.length); + ret = recv_hello_verify_request(session, hsk.data.data, + hsk.data.length); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -1731,44 +1673,38 @@ _gnutls_recv_handshake(gnutls_session_t session, } break; - case GNUTLS_HANDSHAKE_HELLO_RETRY_REQUEST:{ - /* hash buffer synth message is generated during hello retry parsing */ - gnutls_datum_t hrr = { hsk.data.data, hsk.data.length }; - - if (IS_SERVER(session)) { - ret = - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET); - goto cleanup; - } + case GNUTLS_HANDSHAKE_HELLO_RETRY_REQUEST: { + /* hash buffer synth message is generated during hello retry parsing */ + gnutls_datum_t hrr = { hsk.data.data, hsk.data.length }; - ret = - _gnutls13_recv_hello_retry_request(session, - &hsk.data); + if (IS_SERVER(session)) { + ret = gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET); + goto cleanup; + } + + ret = _gnutls13_recv_hello_retry_request(session, &hsk.data); + if (ret < 0) { + gnutls_assert(); + goto cleanup; + } else { + /* during hello retry parsing, we reset handshake hash buffer, + * re-add this message */ + ret = handshake_hash_add_recvd(session, hsk.htype, + hsk.header, + hsk.header_size, + hrr.data, hrr.size); if (ret < 0) { gnutls_assert(); goto cleanup; - } else { - /* during hello retry parsing, we reset handshake hash buffer, - * re-add this message */ - ret = - handshake_hash_add_recvd(session, hsk.htype, - hsk.header, - hsk.header_size, - hrr.data, - hrr.size); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } - - /* Signal our caller we have received a retry request - and ClientHello needs to be sent again. */ - ret = 1; } - break; + /* Signal our caller we have received a retry request + and ClientHello needs to be sent again. */ + ret = 1; } + + break; + } case GNUTLS_HANDSHAKE_SERVER_HELLO_DONE: if (hsk.data.length == 0) ret = 0; @@ -1801,9 +1737,8 @@ _gnutls_recv_handshake(gnutls_session_t session, goto cleanup; } - ret2 = - _gnutls_call_hook_func(session, hsk.htype, GNUTLS_HOOK_POST, 1, - hsk.data.data, hsk.data.length); + ret2 = _gnutls_call_hook_func(session, hsk.htype, GNUTLS_HOOK_POST, 1, + hsk.data.data, hsk.data.length); if (ret2 < 0) { ret = ret2; gnutls_assert(); @@ -1815,7 +1750,7 @@ _gnutls_recv_handshake(gnutls_session_t session, return ret; } - cleanup: +cleanup: _gnutls_handshake_buffer_clear(&hsk); return ret; } @@ -1833,9 +1768,9 @@ static int set_client_ciphersuite(gnutls_session_t session, uint8_t suite[2]) for (j = 0; j < session->internals.priorities->cs.size; j++) { if (suite[0] == - session->internals.priorities->cs.entry[j]->id[0] - && suite[1] == - session->internals.priorities->cs.entry[j]->id[1]) { + session->internals.priorities->cs.entry[j]->id[0] && + suite[1] == + session->internals.priorities->cs.entry[j]->id[1]) { selected = session->internals.priorities->cs.entry[j]; break; } @@ -1843,9 +1778,10 @@ static int set_client_ciphersuite(gnutls_session_t session, uint8_t suite[2]) if (!selected) { gnutls_assert(); - _gnutls_handshake_log - ("HSK[%p]: unsupported cipher suite %.2X.%.2X was negotiated\n", - session, (unsigned int)suite[0], (unsigned int)suite[1]); + _gnutls_handshake_log( + "HSK[%p]: unsupported cipher suite %.2X.%.2X was negotiated\n", + session, (unsigned int)suite[0], + (unsigned int)suite[1]); return GNUTLS_E_UNKNOWN_CIPHER_SUITE; } @@ -1853,8 +1789,8 @@ static int set_client_ciphersuite(gnutls_session_t session, uint8_t suite[2]) if (ret < 0) return gnutls_assert_val(ret); - _gnutls_handshake_log("HSK[%p]: Selected cipher suite: %s\n", - session, selected->name); + _gnutls_handshake_log("HSK[%p]: Selected cipher suite: %s\n", session, + selected->name); /* check if the credentials (username, public key etc.) are ok. * Actually checks if they exist. @@ -1875,19 +1811,19 @@ static int set_client_ciphersuite(gnutls_session_t session, uint8_t suite[2]) session->internals.auth_struct = _gnutls_kx_auth_struct(kx); if (session->internals.auth_struct == NULL) { - _gnutls_handshake_log - ("HSK[%p]: Cannot find the appropriate handler for the KX algorithm\n", - session); + _gnutls_handshake_log( + "HSK[%p]: Cannot find the appropriate handler for the KX algorithm\n", + session); gnutls_assert(); return GNUTLS_E_INTERNAL_ERROR; } } else { if (session->internals.hsk_flags & HSK_PSK_SELECTED) { if (session->key.binders[0].prf->id != selected->prf) { - _gnutls_handshake_log - ("HSK[%p]: PRF of ciphersuite differs with the PSK identity (cs: %s, id: %s)\n", - session, selected->name, - session->key.binders[0].prf->name); + _gnutls_handshake_log( + "HSK[%p]: PRF of ciphersuite differs with the PSK identity (cs: %s, id: %s)\n", + session, selected->name, + session->key.binders[0].prf->name); gnutls_assert(); return GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER; } @@ -1901,9 +1837,8 @@ static int set_client_ciphersuite(gnutls_session_t session, uint8_t suite[2]) * This also sets the variables in the session. Used only while reading a server * hello. Only applicable to TLS1.2 or earlier. */ -static int -client_check_if_resuming(gnutls_session_t session, - uint8_t * session_id, int session_id_len) +static int client_check_if_resuming(gnutls_session_t session, + uint8_t *session_id, int session_id_len) { char buf[2 * GNUTLS_MAX_SESSION_ID_SIZE + 1]; int ret; @@ -1911,42 +1846,42 @@ client_check_if_resuming(gnutls_session_t session, _gnutls_handshake_log("HSK[%p]: SessionID length: %d\n", session, session_id_len); _gnutls_handshake_log("HSK[%p]: SessionID: %s\n", session, - _gnutls_bin2hex(session_id, session_id_len, - buf, sizeof(buf), NULL)); + _gnutls_bin2hex(session_id, session_id_len, buf, + sizeof(buf), NULL)); if ((session->internals.resumption_requested != 0 || session->internals.premaster_set != 0) && session_id_len > 0 && session->internals.resumed_security_parameters.session_id_size == - session_id_len - && memcmp(session_id, - session->internals.resumed_security_parameters.session_id, - session_id_len) == 0) { + session_id_len && + memcmp(session_id, + session->internals.resumed_security_parameters.session_id, + session_id_len) == 0) { /* resume session */ - memcpy(session->internals.resumed_security_parameters. - server_random, + memcpy(session->internals.resumed_security_parameters + .server_random, session->security_parameters.server_random, GNUTLS_RANDOM_SIZE); - memcpy(session->internals.resumed_security_parameters. - client_random, + memcpy(session->internals.resumed_security_parameters + .client_random, session->security_parameters.client_random, GNUTLS_RANDOM_SIZE); - ret = _gnutls_set_cipher_suite2 - (session, - session->internals.resumed_security_parameters.cs); + ret = _gnutls_set_cipher_suite2( + session, + session->internals.resumed_security_parameters.cs); if (ret < 0) { gnutls_assert(); goto no_resume; } - session->internals.resumed = true; /* we are resuming */ + session->internals.resumed = true; /* we are resuming */ return 0; } else { - no_resume: + no_resume: /* keep the new session id */ - session->internals.resumed = false; /* we are not resuming */ + session->internals.resumed = false; /* we are not resuming */ return -1; } } @@ -1955,8 +1890,8 @@ client_check_if_resuming(gnutls_session_t session, * This function also restores resumed parameters if we are resuming a * session. */ -static int -read_server_hello(gnutls_session_t session, uint8_t * data, int datalen) +static int read_server_hello(gnutls_session_t session, uint8_t *data, + int datalen) { uint8_t session_id_len = 0; uint8_t *session_id; @@ -1973,20 +1908,21 @@ read_server_hello(gnutls_session_t session, uint8_t * data, int datalen) return GNUTLS_E_UNEXPECTED_PACKET_LENGTH; } - _gnutls_handshake_log("HSK[%p]: Server's version: %d.%d\n", - session, data[pos], data[pos + 1]); + _gnutls_handshake_log("HSK[%p]: Server's version: %d.%d\n", session, + data[pos], data[pos + 1]); DECR_LEN(len, 2); major = data[pos]; minor = data[pos + 1]; - saved_vers = get_version(session); /* will be non-null if HRR has been received */ + saved_vers = get_version( + session); /* will be non-null if HRR has been received */ vers = nversion_to_entry(major, minor); if (unlikely(vers == NULL)) return gnutls_assert_val(GNUTLS_E_UNSUPPORTED_VERSION_PACKET); - if (vers->tls13_sem) /* that shouldn't have been negotiated here */ + if (vers->tls13_sem) /* that shouldn't have been negotiated here */ return gnutls_assert_val(GNUTLS_E_UNSUPPORTED_VERSION_PACKET); if (_gnutls_set_current_version(session, vers->id) < 0) @@ -2003,7 +1939,8 @@ read_server_hello(gnutls_session_t session, uint8_t * data, int datalen) DECR_LEN(len, 1); session_id_len = data[pos++]; - if (len < session_id_len || session_id_len > GNUTLS_MAX_SESSION_ID_SIZE) { + if (len < session_id_len || + session_id_len > GNUTLS_MAX_SESSION_ID_SIZE) { gnutls_assert(); return GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER; } @@ -2022,12 +1959,11 @@ read_server_hello(gnutls_session_t session, uint8_t * data, int datalen) pos++; /* parse extensions to figure version */ - ret = - _gnutls_parse_hello_extensions(session, - GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO | - GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO, - GNUTLS_EXT_VERSION_NEG, &data[pos], - len); + ret = _gnutls_parse_hello_extensions( + session, + GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO | + GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO, + GNUTLS_EXT_VERSION_NEG, &data[pos], len); if (ret < 0) return gnutls_assert_val(ret); @@ -2036,9 +1972,8 @@ read_server_hello(gnutls_session_t session, uint8_t * data, int datalen) return gnutls_assert_val(GNUTLS_E_UNSUPPORTED_VERSION_PACKET); if (vers->tls13_sem) { if (major != 0x03 || minor != 0x03) - return - gnutls_assert_val - (GNUTLS_E_UNSUPPORTED_VERSION_PACKET); + return gnutls_assert_val( + GNUTLS_E_UNSUPPORTED_VERSION_PACKET); } if (_gnutls_nversion_is_supported(session, vers->major, vers->minor) == @@ -2060,14 +1995,11 @@ read_server_hello(gnutls_session_t session, uint8_t * data, int datalen) /* check if we are resuming and set the appropriate * values; */ - if (!vers->tls13_sem && - client_check_if_resuming(session, session_id, - session_id_len) == 0) { - ret = - _gnutls_parse_hello_extensions(session, - GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, - GNUTLS_EXT_MANDATORY, - &data[pos], len); + if (!vers->tls13_sem && client_check_if_resuming(session, session_id, + session_id_len) == 0) { + ret = _gnutls_parse_hello_extensions( + session, GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, + GNUTLS_EXT_MANDATORY, &data[pos], len); if (ret < 0) return gnutls_assert_val(ret); @@ -2091,15 +2023,13 @@ read_server_hello(gnutls_session_t session, uint8_t * data, int datalen) if (session->internals.hsk_flags & HSK_HRR_RECEIVED) { /* check if ciphersuite matches */ if (memcmp(cs_pos, session->internals.hrr_cs, 2) != 0) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); /* check if HRR version matches this version */ if (vers != saved_vers) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); } if (*comp_pos != 0) @@ -2112,11 +2042,8 @@ read_server_hello(gnutls_session_t session, uint8_t * data, int datalen) /* Parse extensions in order. */ - ret = - _gnutls_parse_hello_extensions(session, - ext_parse_flag, - GNUTLS_EXT_MANDATORY, - &data[pos], len); + ret = _gnutls_parse_hello_extensions( + session, ext_parse_flag, GNUTLS_EXT_MANDATORY, &data[pos], len); if (ret < 0) return gnutls_assert_val(ret); @@ -2125,43 +2052,36 @@ read_server_hello(gnutls_session_t session, uint8_t * data, int datalen) if (session->internals.priorities->force_etm && !session->security_parameters.etm) { const cipher_entry_st *cipher = - cipher_to_entry(session->security_parameters. - cs->block_algorithm); + cipher_to_entry(session->security_parameters.cs + ->block_algorithm); if (_gnutls_cipher_type(cipher) == CIPHER_BLOCK) - return - gnutls_assert_val - (GNUTLS_E_UNWANTED_ALGORITHM); + return gnutls_assert_val( + GNUTLS_E_UNWANTED_ALGORITHM); } /* check if EMS is required */ if (vers->id != GNUTLS_SSL3 && vers->id != GNUTLS_DTLS0_9 && session->internals.priorities->force_ext_master_secret && !session->security_parameters.ext_master_secret) { - return - gnutls_assert_val(GNUTLS_E_INSUFFICIENT_SECURITY); + return gnutls_assert_val( + GNUTLS_E_INSUFFICIENT_SECURITY); } } - ret = - _gnutls_parse_hello_extensions(session, - ext_parse_flag, - GNUTLS_EXT_APPLICATION, - &data[pos], len); + ret = _gnutls_parse_hello_extensions(session, ext_parse_flag, + GNUTLS_EXT_APPLICATION, &data[pos], + len); if (ret < 0) return gnutls_assert_val(ret); - ret = - _gnutls_parse_hello_extensions(session, - ext_parse_flag, - GNUTLS_EXT_TLS, &data[pos], len); + ret = _gnutls_parse_hello_extensions(session, ext_parse_flag, + GNUTLS_EXT_TLS, &data[pos], len); if (ret < 0) return gnutls_assert_val(ret); - ret = - _gnutls_parse_hello_extensions(session, - ext_parse_flag, - _GNUTLS_EXT_TLS_POST_CS, - &data[pos], len); + ret = _gnutls_parse_hello_extensions(session, ext_parse_flag, + _GNUTLS_EXT_TLS_POST_CS, + &data[pos], len); if (ret < 0) return gnutls_assert_val(ret); @@ -2185,7 +2105,7 @@ read_server_hello(gnutls_session_t session, uint8_t * data, int datalen) /* This function copies the appropriate compression methods, to a locally allocated buffer * Needed in hello messages. Returns the new data length. */ -static int append_null_comp(gnutls_session_t session, gnutls_buffer_st * cdata) +static int append_null_comp(gnutls_session_t session, gnutls_buffer_st *cdata) { uint8_t compression_methods[2] = { 0x01, 0x00 }; size_t init_length = cdata->length; @@ -2214,9 +2134,9 @@ static int send_client_hello(gnutls_session_t session, int again) bool resuming = false; unsigned add_sr_scsv = 0; uint8_t *session_id = - session->internals.resumed_security_parameters.session_id; + session->internals.resumed_security_parameters.session_id; uint8_t session_id_len = - session->internals.resumed_security_parameters.session_id_size; + session->internals.resumed_security_parameters.session_id_size; if (again == 0) { /* note that rehandshake is different than resuming @@ -2233,17 +2153,16 @@ static int send_client_hello(gnutls_session_t session, int again) */ if (session->internals.resumption_requested == 0 && session->internals.premaster_set == 0) { - if (rehandshake) /* already negotiated version thus version_max == negotiated version */ + if (rehandshake) /* already negotiated version thus version_max == negotiated version */ hver = get_version(session); - else /* new handshake. just get the max */ + else /* new handshake. just get the max */ hver = _gnutls_legacy_version_max(session); } else { /* we are resuming a session */ resuming = true; - hver = - session->internals.resumed_security_parameters. - pversion; + hver = session->internals.resumed_security_parameters + .pversion; if (hver && hver->tls13_sem) hver = _gnutls_legacy_version_max(session); @@ -2258,7 +2177,8 @@ static int send_client_hello(gnutls_session_t session, int again) goto cleanup; } - if (unlikely(session->internals.default_hello_version[0] != 0)) { + if (unlikely(session->internals.default_hello_version[0] != + 0)) { tver[0] = session->internals.default_hello_version[0]; tver[1] = session->internals.default_hello_version[1]; } else { @@ -2282,15 +2202,15 @@ static int send_client_hello(gnutls_session_t session, int again) } /* if we are replying to an HRR the version is already negotiated */ - if (!(session->internals.hsk_flags & HSK_HRR_RECEIVED) - || !get_version(session)) { + if (!(session->internals.hsk_flags & HSK_HRR_RECEIVED) || + !get_version(session)) { /* Set the version we advertized as maximum * (RSA uses it). */ set_adv_version(session, hver->major, hver->minor); - if (_gnutls_set_current_version(session, hver->id) < 0) { - ret = - gnutls_assert_val - (GNUTLS_E_UNSUPPORTED_VERSION_PACKET); + if (_gnutls_set_current_version(session, hver->id) < + 0) { + ret = gnutls_assert_val( + GNUTLS_E_UNSUPPORTED_VERSION_PACKET); goto cleanup; } } @@ -2314,21 +2234,18 @@ static int send_client_hello(gnutls_session_t session, int again) /* Generate random data */ if (!(session->internals.hsk_flags & HSK_HRR_RECEIVED) && - !(IS_DTLS(session) - && session->internals.dtls.hsk_hello_verify_requests != - 0)) { + !(IS_DTLS(session) && + session->internals.dtls.hsk_hello_verify_requests != 0)) { ret = _gnutls_gen_client_random(session); if (ret < 0) { gnutls_assert(); goto cleanup; } - } - ret = _gnutls_buffer_append_data(&extdata, - session-> - security_parameters.client_random, - GNUTLS_RANDOM_SIZE); + ret = _gnutls_buffer_append_data( + &extdata, session->security_parameters.client_random, + GNUTLS_RANDOM_SIZE); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -2338,14 +2255,14 @@ static int send_client_hello(gnutls_session_t session, int again) if (max_ver->tls13_sem && session->internals.priorities->tls13_compat_mode && !resuming) { - if (!(session->internals.hsk_flags & HSK_HRR_RECEIVED)) { + if (!(session->internals.hsk_flags & + HSK_HRR_RECEIVED)) { /* Under TLS1.3 we generate a random session ID to make * the TLS1.3 session look like a resumed TLS1.2 session */ - ret = - _gnutls_generate_session_id - (session->security_parameters.session_id, - &session->security_parameters. - session_id_size); + ret = _gnutls_generate_session_id( + session->security_parameters.session_id, + &session->security_parameters + .session_id_size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -2353,14 +2270,13 @@ static int send_client_hello(gnutls_session_t session, int again) } session_id = session->security_parameters.session_id; session_id_len = - session->security_parameters.session_id_size; + session->security_parameters.session_id_size; } #endif /* Copy the Session ID - if any */ - ret = _gnutls_buffer_append_data_prefix(&extdata, 8, - session_id, + ret = _gnutls_buffer_append_data_prefix(&extdata, 8, session_id, session_id_len); if (ret < 0) { gnutls_assert(); @@ -2370,13 +2286,10 @@ static int send_client_hello(gnutls_session_t session, int again) /* Copy the DTLS cookie */ if (IS_DTLS(session)) { - ret = _gnutls_buffer_append_data_prefix(&extdata, 8, - session->internals. - dtls.dcookie. - data, - session->internals. - dtls.dcookie. - size); + ret = _gnutls_buffer_append_data_prefix( + &extdata, 8, + session->internals.dtls.dcookie.data, + session->internals.dtls.dcookie.size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -2398,9 +2311,8 @@ static int send_client_hello(gnutls_session_t session, int again) add_sr_scsv = 1; } #endif - ret = - _gnutls_get_client_ciphersuites(session, &extdata, min_ver, - add_sr_scsv); + ret = _gnutls_get_client_ciphersuites(session, &extdata, + min_ver, add_sr_scsv); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -2423,10 +2335,9 @@ static int send_client_hello(gnutls_session_t session, int again) type = GNUTLS_EXT_MANDATORY; } - ret = - _gnutls_gen_hello_extensions(session, &extdata, - GNUTLS_EXT_FLAG_CLIENT_HELLO, - type); + ret = _gnutls_gen_hello_extensions( + session, &extdata, GNUTLS_EXT_FLAG_CLIENT_HELLO, + type); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -2444,12 +2355,11 @@ static int send_client_hello(gnutls_session_t session, int again) const mac_entry_st *me; record_parameters_st *params; - ce = cipher_to_entry(session->internals. - resumed_security_parameters. - cs->block_algorithm); - me = mac_to_entry(session->internals. - resumed_security_parameters. - cs->mac_algorithm); + ce = cipher_to_entry( + session->internals.resumed_security_parameters.cs + ->block_algorithm); + me = mac_to_entry(session->internals.resumed_security_parameters + .cs->mac_algorithm); ret = _gnutls_epoch_get(session, EPOCH_NEXT, ¶ms); if (ret < 0) { @@ -2478,7 +2388,7 @@ static int send_client_hello(gnutls_session_t session, int again) return ret; - cleanup: +cleanup: _gnutls_buffer_clear(&extdata); return ret; } @@ -2499,12 +2409,12 @@ int _gnutls_send_server_hello(gnutls_session_t session, int again) if (again == 0) { vers = get_version(session); - if (unlikely - (vers == NULL || session->security_parameters.cs == NULL)) + if (unlikely(vers == NULL || + session->security_parameters.cs == NULL)) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); if (vers->tls13_sem) { - vbytes[0] = 0x03; /* TLS1.2 */ + vbytes[0] = 0x03; /* TLS1.2 */ vbytes[1] = 0x03; extflag |= GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO; } else { @@ -2525,32 +2435,30 @@ int _gnutls_send_server_hello(gnutls_session_t session, int again) goto fail; } - ret = _gnutls_buffer_append_data(&buf, - session-> - security_parameters.server_random, - GNUTLS_RANDOM_SIZE); + ret = _gnutls_buffer_append_data( + &buf, session->security_parameters.server_random, + GNUTLS_RANDOM_SIZE); if (ret < 0) { gnutls_assert(); goto fail; } - ret = _gnutls_buffer_append_data_prefix(&buf, 8, - session->security_parameters.session_id, - session_id_len); + ret = _gnutls_buffer_append_data_prefix( + &buf, 8, session->security_parameters.session_id, + session_id_len); if (ret < 0) { gnutls_assert(); goto fail; } - _gnutls_handshake_log("HSK[%p]: SessionID: %s\n", session, - _gnutls_bin2hex - (session->security_parameters.session_id, - session_id_len, tmpbuf, sizeof(tmpbuf), - NULL)); + _gnutls_handshake_log( + "HSK[%p]: SessionID: %s\n", session, + _gnutls_bin2hex(session->security_parameters.session_id, + session_id_len, tmpbuf, sizeof(tmpbuf), + NULL)); - ret = _gnutls_buffer_append_data(&buf, - session-> - security_parameters.cs->id, 2); + ret = _gnutls_buffer_append_data( + &buf, session->security_parameters.cs->id, 2); if (ret < 0) { gnutls_assert(); goto fail; @@ -2567,8 +2475,8 @@ int _gnutls_send_server_hello(gnutls_session_t session, int again) etype = GNUTLS_EXT_MANDATORY; else etype = GNUTLS_EXT_ANY; - ret = - _gnutls_gen_hello_extensions(session, &buf, extflag, etype); + ret = _gnutls_gen_hello_extensions(session, &buf, extflag, + etype); if (ret < 0) { gnutls_assert(); goto fail; @@ -2578,10 +2486,9 @@ int _gnutls_send_server_hello(gnutls_session_t session, int again) /* Under TLS1.3, the session ID is used for different purposes than * the TLS1.0 session ID. Ensure that there is an internally set * value which the server will see on the original and resumed sessions */ - ret = - _gnutls_generate_session_id - (session->security_parameters.session_id, - &session->security_parameters.session_id_size); + ret = _gnutls_generate_session_id( + session->security_parameters.session_id, + &session->security_parameters.session_id_size); if (ret < 0) { gnutls_assert(); goto fail; @@ -2591,17 +2498,16 @@ int _gnutls_send_server_hello(gnutls_session_t session, int again) bufel = _gnutls_buffer_to_mbuffer(&buf); } - ret = - _gnutls_send_handshake(session, bufel, - GNUTLS_HANDSHAKE_SERVER_HELLO); + ret = _gnutls_send_handshake(session, bufel, + GNUTLS_HANDSHAKE_SERVER_HELLO); - fail: +fail: _gnutls_buffer_clear(&buf); return ret; } -static int -recv_hello_verify_request(gnutls_session_t session, uint8_t * data, int datalen) +static int recv_hello_verify_request(gnutls_session_t session, uint8_t *data, + int datalen) { ssize_t len = datalen; size_t pos = 0; @@ -2637,9 +2543,8 @@ recv_hello_verify_request(gnutls_session_t session, uint8_t * data, int datalen) DECR_LEN(len, cookie_len); gnutls_free(session->internals.dtls.dcookie.data); - ret = - _gnutls_set_datum(&session->internals.dtls.dcookie, &data[pos], - cookie_len); + ret = _gnutls_set_datum(&session->internals.dtls.dcookie, &data[pos], + cookie_len); if (ret < 0) return gnutls_assert_val(ret); @@ -2746,10 +2651,8 @@ int gnutls_rehandshake(gnutls_session_t session) _dtls_async_timer_delete(session); - ret = - _gnutls_send_empty_handshake(session, - GNUTLS_HANDSHAKE_HELLO_REQUEST, - AGAIN(STATE50)); + ret = _gnutls_send_empty_handshake( + session, GNUTLS_HANDSHAKE_HELLO_REQUEST, AGAIN(STATE50)); STATE = STATE50; if (ret < 0) { @@ -2783,9 +2686,8 @@ inline static int _gnutls_abort_handshake(gnutls_session_t session, int ret) * - a Server Hello is not yet received */ if (session->internals.initial_negotiation_completed || - !(session-> - internals.hsk_flags & HSK_SERVER_HELLO_RECEIVED)) - { + !(session->internals.hsk_flags & + HSK_SERVER_HELLO_RECEIVED)) { STATE = STATE0; return ret; } @@ -2835,9 +2737,8 @@ static int _gnutls_recv_supplemental(gnutls_session_t session) _gnutls_debug_log("EXT[%p]: Expecting supplemental data\n", session); - ret = - _gnutls_recv_handshake(session, GNUTLS_HANDSHAKE_SUPPLEMENTAL, - 1, &buf); + ret = _gnutls_recv_handshake(session, GNUTLS_HANDSHAKE_SUPPLEMENTAL, 1, + &buf); if (ret < 0) { gnutls_assert(); return ret; @@ -2849,7 +2750,7 @@ static int _gnutls_recv_supplemental(gnutls_session_t session) goto cleanup; } - cleanup: +cleanup: _gnutls_buffer_clear(&buf); return ret; @@ -2901,8 +2802,8 @@ int gnutls_handshake(gnutls_session_t session) if (vers->tls13_sem) { if (session->security_parameters.entity == GNUTLS_CLIENT) { - return gnutls_session_key_update(session, - GNUTLS_KU_PEER); + return gnutls_session_key_update( + session, GNUTLS_KU_PEER); } else { /* This is a no-op for a server under TLS 1.3, as * a server has already called gnutls_rehandshake() @@ -2921,8 +2822,8 @@ int gnutls_handshake(gnutls_session_t session) /* first call */ if (session->internals.priorities == NULL || session->internals.priorities->cs.size == 0) - return - gnutls_assert_val(GNUTLS_E_NO_PRIORITIES_WERE_SET); + return gnutls_assert_val( + GNUTLS_E_NO_PRIORITIES_WERE_SET); ret = _gnutls_epoch_setup_next(session, 0, NULL); if (ret < 0) @@ -2939,12 +2840,11 @@ int gnutls_handshake(gnutls_session_t session) start = &session->internals.handshake_start_time; if (tmo_ms && end->tv_sec == 0 && end->tv_nsec == 0) { - end->tv_sec = - start->tv_sec + (start->tv_nsec + - tmo_ms * 1000000LL) / 1000000000LL; - end->tv_nsec = - (start->tv_nsec + - tmo_ms * 1000000LL) % 1000000000LL; + end->tv_sec = start->tv_sec + + (start->tv_nsec + tmo_ms * 1000000LL) / + 1000000000LL; + end->tv_nsec = (start->tv_nsec + tmo_ms * 1000000LL) % + 1000000000LL; } #ifdef ENABLE_KTLS @@ -2952,9 +2852,9 @@ int gnutls_handshake(gnutls_session_t session) if ((session->internals.pull_func && session->internals.pull_func != system_read) || session->internals.push_func) { - _gnutls_audit_log(session, - "Not enabling KTLS with " - "custom pull/push function\n"); + _gnutls_audit_log( + session, "Not enabling KTLS with " + "custom pull/push function\n"); } else { _gnutls_ktls_enable(session); } @@ -2982,7 +2882,6 @@ int gnutls_handshake(gnutls_session_t session) /* clear handshake buffer */ if (session->internals.recv_state != RECV_STATE_FALSE_START && session->internals.recv_state != RECV_STATE_EARLY_START) { - _gnutls_handshake_hash_buffers_clear(session); if (IS_DTLS(session) == 0) { @@ -3005,14 +2904,18 @@ int gnutls_handshake(gnutls_session_t session) if (!(session->internals.hsk_flags & HSK_HRR_RECEIVED)) { session->internals.ertt = - timespec_sub_ms(&handshake_finish_time, - &session-> - internals.handshake_start_time) / 2; + timespec_sub_ms( + &handshake_finish_time, + &session->internals + .handshake_start_time) / + 2; } else { session->internals.ertt = - timespec_sub_ms(&handshake_finish_time, - &session-> - internals.handshake_start_time) / 4; + timespec_sub_ms( + &handshake_finish_time, + &session->internals + .handshake_start_time) / + 4; } } @@ -3022,8 +2925,9 @@ int gnutls_handshake(gnutls_session_t session) if (ret < 0) { /* no need to invalidate the session as keys were not set */ session->internals.ktls_enabled = 0; - _gnutls_audit_log(session, - "disabling KTLS: failed to set keys\n"); + _gnutls_audit_log( + session, + "disabling KTLS: failed to set keys\n"); } } #endif @@ -3077,9 +2981,8 @@ int _gnutls_run_verify_callback(gnutls_session_t session, unsigned int side) if (session->internals.hsk_flags & HSK_PSK_SELECTED) return 0; - cred = - (gnutls_certificate_credentials_t) _gnutls_get_cred(session, - GNUTLS_CRD_CERTIFICATE); + cred = (gnutls_certificate_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_CERTIFICATE); if (side == GNUTLS_CLIENT) type = gnutls_auth_server_get_type(session); @@ -3099,10 +3002,10 @@ int _gnutls_run_verify_callback(gnutls_session_t session, unsigned int side) } if (cred != NULL && - (cred->verify_callback != NULL - || session->internals.verify_callback != NULL) - && (session->security_parameters.entity == GNUTLS_CLIENT - || session->internals.send_cert_req != GNUTLS_CERT_IGNORE)) { + (cred->verify_callback != NULL || + session->internals.verify_callback != NULL) && + (session->security_parameters.entity == GNUTLS_CLIENT || + session->internals.send_cert_req != GNUTLS_CERT_IGNORE)) { if (session->internals.verify_callback) ret = session->internals.verify_callback(session); else @@ -3142,7 +3045,7 @@ static int handshake_client(gnutls_session_t session) int ret = 0; const version_entry_st *ver; - reset: +reset: if (STATE >= STATE99) return _gnutls13_handshake_client(session); @@ -3155,10 +3058,9 @@ static int handshake_client(gnutls_session_t session) FALLTHROUGH; case STATE2: if (IS_DTLS(session)) { - ret = - _gnutls_recv_handshake(session, - GNUTLS_HANDSHAKE_HELLO_VERIFY_REQUEST, - 1, NULL); + ret = _gnutls_recv_handshake( + session, GNUTLS_HANDSHAKE_HELLO_VERIFY_REQUEST, + 1, NULL); STATE = STATE2; IMED_RET("recv hello verify", ret, 1); @@ -3167,10 +3069,9 @@ static int handshake_client(gnutls_session_t session) return 1; } } else { - ret = - _gnutls_recv_handshake(session, - GNUTLS_HANDSHAKE_HELLO_RETRY_REQUEST, - 1, NULL); + ret = _gnutls_recv_handshake( + session, GNUTLS_HANDSHAKE_HELLO_RETRY_REQUEST, + 1, NULL); STATE = STATE2; IMED_RET("recv hello retry", ret, 1); @@ -3182,16 +3083,14 @@ static int handshake_client(gnutls_session_t session) FALLTHROUGH; case STATE3: /* receive the server hello */ - ret = - _gnutls_recv_handshake(session, - GNUTLS_HANDSHAKE_SERVER_HELLO, - 0, NULL); + ret = _gnutls_recv_handshake( + session, GNUTLS_HANDSHAKE_SERVER_HELLO, 0, NULL); STATE = STATE3; IMED_RET("recv hello", ret, 1); FALLTHROUGH; case STATE4: ver = get_version(session); - if (ver->tls13_sem) { /* TLS 1.3 state machine */ + if (ver->tls13_sem) { /* TLS 1.3 state machine */ STATE = STATE99; goto reset; } @@ -3209,7 +3108,7 @@ static int handshake_client(gnutls_session_t session) FALLTHROUGH; case STATE6: /* RECV CERTIFICATE */ - if (!session->internals.resumed) /* if we are not resuming */ + if (!session->internals.resumed) /* if we are not resuming */ ret = _gnutls_recv_server_certificate(session); STATE = STATE6; IMED_RET("recv server certificate", ret, 1); @@ -3217,7 +3116,7 @@ static int handshake_client(gnutls_session_t session) case STATE7: #ifdef ENABLE_OCSP /* RECV CERTIFICATE STATUS */ - if (!session->internals.resumed) /* if we are not resuming */ + if (!session->internals.resumed) /* if we are not resuming */ ret = _gnutls_recv_server_certificate_status(session); STATE = STATE7; IMED_RET("recv server certificate", ret, 1); @@ -3232,7 +3131,7 @@ static int handshake_client(gnutls_session_t session) FALLTHROUGH; case STATE9: /* receive the server key exchange */ - if (!session->internals.resumed) /* if we are not resuming */ + if (!session->internals.resumed) /* if we are not resuming */ ret = _gnutls_recv_server_kx_message(session); STATE = STATE9; IMED_RET("recv server kx message", ret, 1); @@ -3241,25 +3140,24 @@ static int handshake_client(gnutls_session_t session) /* receive the server certificate request - if any */ - if (!session->internals.resumed) /* if we are not resuming */ + if (!session->internals.resumed) /* if we are not resuming */ ret = _gnutls_recv_server_crt_request(session); STATE = STATE10; IMED_RET("recv server certificate request message", ret, 1); FALLTHROUGH; case STATE11: /* receive the server hello done */ - if (!session->internals.resumed) /* if we are not resuming */ - ret = - _gnutls_recv_handshake(session, - GNUTLS_HANDSHAKE_SERVER_HELLO_DONE, - 0, NULL); + if (!session->internals.resumed) /* if we are not resuming */ + ret = _gnutls_recv_handshake( + session, GNUTLS_HANDSHAKE_SERVER_HELLO_DONE, 0, + NULL); STATE = STATE11; IMED_RET("recv server hello done", ret, 1); FALLTHROUGH; case STATE12: if (session->security_parameters.do_send_supplemental) { - ret = - _gnutls_send_supplemental(session, AGAIN(STATE12)); + ret = _gnutls_send_supplemental(session, + AGAIN(STATE12)); STATE = STATE12; IMED_RET("send supplemental", ret, 0); } @@ -3267,28 +3165,24 @@ static int handshake_client(gnutls_session_t session) case STATE13: /* send our certificate - if any and if requested */ - if (!session->internals.resumed) /* if we are not resuming */ - ret = - _gnutls_send_client_certificate(session, - AGAIN(STATE13)); + if (!session->internals.resumed) /* if we are not resuming */ + ret = _gnutls_send_client_certificate(session, + AGAIN(STATE13)); STATE = STATE13; IMED_RET("send client certificate", ret, 0); FALLTHROUGH; case STATE14: - if (!session->internals.resumed) /* if we are not resuming */ - ret = - _gnutls_send_client_kx_message(session, - AGAIN(STATE14)); + if (!session->internals.resumed) /* if we are not resuming */ + ret = _gnutls_send_client_kx_message(session, + AGAIN(STATE14)); STATE = STATE14; IMED_RET("send client kx", ret, 0); FALLTHROUGH; case STATE15: /* send client certificate verify */ - if (!session->internals.resumed) /* if we are not resuming */ - ret = - _gnutls_send_client_certificate_verify(session, - AGAIN - (STATE15)); + if (!session->internals.resumed) /* if we are not resuming */ + ret = _gnutls_send_client_certificate_verify( + session, AGAIN(STATE15)); STATE = STATE15; IMED_RET("send client certificate verify", ret, 1); FALLTHROUGH; @@ -3304,9 +3198,9 @@ static int handshake_client(gnutls_session_t session) FALLTHROUGH; case STATE17: STATE = STATE17; - if (!session->internals.resumed - && (session->internals.flags & GNUTLS_ENABLE_FALSE_START) - && can_send_false_start(session)) { + if (!session->internals.resumed && + (session->internals.flags & GNUTLS_ENABLE_FALSE_START) && + can_send_false_start(session)) { session->internals.hsk_flags |= HSK_FALSE_START_USED; session->internals.recv_state = RECV_STATE_FALSE_START; /* complete this phase of the handshake. We @@ -3365,7 +3259,8 @@ ssize_t _gnutls_send_change_cipher_spec(gnutls_session_t session, int again) const version_entry_st *vers; if (again == 0) { - bufel = _gnutls_handshake_alloc(session, 3); /* max for DTLS0.9 */ + bufel = _gnutls_handshake_alloc(session, + 3); /* max for DTLS0.9 */ if (bufel == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); @@ -3383,33 +3278,30 @@ ssize_t _gnutls_send_change_cipher_spec(gnutls_session_t session, int again) data[0] = 1; if (vers->id == GNUTLS_DTLS0_9) { - _gnutls_write_uint16(session->internals.dtls. - hsk_write_seq, &data[1]); + _gnutls_write_uint16( + session->internals.dtls.hsk_write_seq, + &data[1]); session->internals.dtls.hsk_write_seq++; } - ret = - _gnutls_call_hook_func(session, - GNUTLS_HANDSHAKE_CHANGE_CIPHER_SPEC, - GNUTLS_HOOK_PRE, 0, data, 1); + ret = _gnutls_call_hook_func( + session, GNUTLS_HANDSHAKE_CHANGE_CIPHER_SPEC, + GNUTLS_HOOK_PRE, 0, data, 1); if (ret < 0) { _mbuffer_xfree(&bufel); return gnutls_assert_val(ret); } - ret = - _gnutls_handshake_io_cache_int(session, - GNUTLS_HANDSHAKE_CHANGE_CIPHER_SPEC, - bufel); + ret = _gnutls_handshake_io_cache_int( + session, GNUTLS_HANDSHAKE_CHANGE_CIPHER_SPEC, bufel); if (ret < 0) { _mbuffer_xfree(&bufel); return gnutls_assert_val(ret); } - ret = - _gnutls_call_hook_func(session, - GNUTLS_HANDSHAKE_CHANGE_CIPHER_SPEC, - GNUTLS_HOOK_POST, 0, data, 1); + ret = _gnutls_call_hook_func( + session, GNUTLS_HANDSHAKE_CHANGE_CIPHER_SPEC, + GNUTLS_HOOK_POST, 0, data, 1); if (ret < 0) { return gnutls_assert_val(ret); } @@ -3522,9 +3414,8 @@ static int recv_handshake_final(gnutls_session_t session, int init) if (vers->id == GNUTLS_DTLS0_9) ccs_len = 3; - ret = - _gnutls_recv_int(session, GNUTLS_CHANGE_CIPHER_SPEC, - ccs, ccs_len, NULL, tleft); + ret = _gnutls_recv_int(session, GNUTLS_CHANGE_CIPHER_SPEC, ccs, + ccs_len, NULL, tleft); if (ret <= 0) { gnutls_assert(); return (ret < 0) ? ret : GNUTLS_E_UNEXPECTED_PACKET; @@ -3582,7 +3473,7 @@ static int handshake_server(gnutls_session_t session) int ret = 0; const version_entry_st *ver; - reset: +reset: if (STATE >= STATE90) return _gnutls13_handshake_server(session); @@ -3590,15 +3481,13 @@ static int handshake_server(gnutls_session_t session) switch (STATE) { case STATE0: case STATE1: - ret = - _gnutls_recv_handshake(session, - GNUTLS_HANDSHAKE_CLIENT_HELLO, - 0, NULL); + ret = _gnutls_recv_handshake( + session, GNUTLS_HANDSHAKE_CLIENT_HELLO, 0, NULL); if (ret == GNUTLS_E_INT_RET_0) { /* this is triggered by post_client_hello, and instructs the * handshake to proceed but be put on hold */ ret = GNUTLS_E_INTERRUPTED; - STATE = STATE2; /* hello already parsed -> move on */ + STATE = STATE2; /* hello already parsed -> move on */ } else { STATE = STATE1; } @@ -3623,7 +3512,7 @@ static int handshake_server(gnutls_session_t session) IMED_RET("send hello", ret, 1); ver = get_version(session); - if (ver->tls13_sem) { /* TLS 1.3 state machine */ + if (ver->tls13_sem) { /* TLS 1.3 state machine */ STATE = STATE99; goto reset; } @@ -3641,19 +3530,16 @@ static int handshake_server(gnutls_session_t session) /* NOTE: these should not be send if we are resuming */ if (!session->internals.resumed) - ret = - _gnutls_send_server_certificate(session, - AGAIN(STATE5)); + ret = _gnutls_send_server_certificate(session, + AGAIN(STATE5)); STATE = STATE5; IMED_RET("send server certificate", ret, 0); FALLTHROUGH; case STATE6: #ifdef ENABLE_OCSP if (!session->internals.resumed) - ret = - _gnutls_send_server_certificate_status(session, - AGAIN - (STATE6)); + ret = _gnutls_send_server_certificate_status( + session, AGAIN(STATE6)); STATE = STATE6; IMED_RET("send server certificate status", ret, 0); #endif @@ -3661,28 +3547,25 @@ static int handshake_server(gnutls_session_t session) case STATE7: /* send server key exchange (A) */ if (!session->internals.resumed) - ret = - _gnutls_send_server_kx_message(session, - AGAIN(STATE7)); + ret = _gnutls_send_server_kx_message(session, + AGAIN(STATE7)); STATE = STATE7; IMED_RET("send server kx", ret, 0); FALLTHROUGH; case STATE8: /* Send certificate request - if requested to */ if (!session->internals.resumed) - ret = - _gnutls_send_server_crt_request(session, - AGAIN(STATE8)); + ret = _gnutls_send_server_crt_request(session, + AGAIN(STATE8)); STATE = STATE8; IMED_RET("send server cert request", ret, 0); FALLTHROUGH; case STATE9: /* send the server hello done */ - if (!session->internals.resumed) /* if we are not resuming */ - ret = - _gnutls_send_empty_handshake(session, - GNUTLS_HANDSHAKE_SERVER_HELLO_DONE, - AGAIN(STATE9)); + if (!session->internals.resumed) /* if we are not resuming */ + ret = _gnutls_send_empty_handshake( + session, GNUTLS_HANDSHAKE_SERVER_HELLO_DONE, + AGAIN(STATE9)); STATE = STATE9; IMED_RET("send server hello done", ret, 1); FALLTHROUGH; @@ -3696,7 +3579,7 @@ static int handshake_server(gnutls_session_t session) FALLTHROUGH; case STATE11: /* receive the client certificate message */ - if (!session->internals.resumed) /* if we are not resuming */ + if (!session->internals.resumed) /* if we are not resuming */ ret = _gnutls_recv_client_certificate(session); STATE = STATE11; IMED_RET("recv client certificate", ret, 1); @@ -3709,23 +3592,22 @@ static int handshake_server(gnutls_session_t session) FALLTHROUGH; case STATE13: /* receive the client key exchange message */ - if (!session->internals.resumed) /* if we are not resuming */ + if (!session->internals.resumed) /* if we are not resuming */ ret = _gnutls_recv_client_kx_message(session); STATE = STATE13; IMED_RET("recv client kx", ret, 1); FALLTHROUGH; case STATE14: /* receive the client certificate verify message */ - if (!session->internals.resumed) /* if we are not resuming */ - ret = - _gnutls_recv_client_certificate_verify_message - (session); + if (!session->internals.resumed) /* if we are not resuming */ + ret = _gnutls_recv_client_certificate_verify_message( + session); STATE = STATE14; IMED_RET("recv client certificate verify", ret, 1); FALLTHROUGH; case STATE15: STATE = STATE15; - if (!session->internals.resumed) { /* if we are not resuming */ + if (!session->internals.resumed) { /* if we are not resuming */ ret = recv_handshake_final(session, true); IMED_RET("recv handshake final", ret, 1); } else { @@ -3740,17 +3622,17 @@ static int handshake_server(gnutls_session_t session) FALLTHROUGH; case STATE17: STATE = STATE17; - if (!session->internals.resumed) { /* if we are not resuming */ + if (!session->internals.resumed) { /* if we are not resuming */ ret = send_handshake_final(session, false); IMED_RET("send handshake final", ret, 1); if (session->security_parameters.entity == - GNUTLS_SERVER - && !(session-> - internals.hsk_flags & HSK_TLS12_TICKET_SENT)) { + GNUTLS_SERVER && + !(session->internals.hsk_flags & + HSK_TLS12_TICKET_SENT)) { /* if no ticket, save session data */ - _gnutls_server_register_current_session - (session); + _gnutls_server_register_current_session( + session); } } else { ret = recv_handshake_final(session, false); @@ -3770,15 +3652,14 @@ static int handshake_server(gnutls_session_t session) return _gnutls_check_id_for_change(session); } -int _gnutls_generate_session_id(uint8_t * session_id, uint8_t * len) +int _gnutls_generate_session_id(uint8_t *session_id, uint8_t *len) { int ret; *len = GNUTLS_DEF_SESSION_ID_SIZE; - ret = - gnutls_rnd(GNUTLS_RND_NONCE, session_id, - GNUTLS_DEF_SESSION_ID_SIZE); + ret = gnutls_rnd(GNUTLS_RND_NONCE, session_id, + GNUTLS_DEF_SESSION_ID_SIZE); if (ret < 0) { gnutls_assert(); return ret; @@ -3804,8 +3685,8 @@ int _gnutls_generate_session_id(uint8_t * session_id, uint8_t * len) * Note that the maximum handshake size was increased to 128kb * from 48kb in GnuTLS 3.5.5. **/ -void -gnutls_handshake_set_max_packet_length(gnutls_session_t session, size_t max) +void gnutls_handshake_set_max_packet_length(gnutls_session_t session, + size_t max) { session->internals.max_handshake_data_buffer_size = max; } @@ -3853,7 +3734,7 @@ gnutls_handshake_get_last_out(gnutls_session_t session) /* This returns the session hash as in draft-ietf-tls-session-hash-02. */ int _gnutls_handshake_get_session_hash(gnutls_session_t session, - gnutls_datum_t * shash) + gnutls_datum_t *shash) { const version_entry_st *ver = get_version(session); int ret; @@ -3868,12 +3749,10 @@ int _gnutls_handshake_get_session_hash(gnutls_session_t session, return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); } - ret = _gnutls_hash_fast((gnutls_digest_algorithm_t) - session->security_parameters.prf->id, - session->internals.handshake_hash_buffer.data, - session-> - internals.handshake_hash_buffer_client_kx_len, - concat); + ret = _gnutls_hash_fast( + (gnutls_digest_algorithm_t)session->security_parameters.prf->id, + session->internals.handshake_hash_buffer.data, + session->internals.handshake_hash_buffer_client_kx_len, concat); if (ret < 0) return gnutls_assert_val(ret); diff --git a/lib/handshake.h b/lib/handshake.h index f7dc626a2f..186ae76b62 100644 --- a/lib/handshake.h +++ b/lib/handshake.h @@ -22,96 +22,108 @@ */ #ifndef GNUTLS_LIB_HANDSHAKE_H -# define GNUTLS_LIB_HANDSHAKE_H +#define GNUTLS_LIB_HANDSHAKE_H -# include "errors.h" -# include "record.h" -# include +#include "errors.h" +#include "record.h" +#include /* The following two macros are used in the handshake state machines; the first * (IMED_RET) accounts for non-fatal errors and re-entry to current state, while * the latter invalidates the handshake on any error (to be used by functions * that are not expected to return non-fatal errors). */ -# define IMED_RET( str, ret, allow_alert) do { \ - if (ret < 0) { \ - /* EAGAIN and INTERRUPTED are always non-fatal */ \ - if (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED) \ - return ret; \ - if (ret == GNUTLS_E_GOT_APPLICATION_DATA && session->internals.initial_negotiation_completed != 0) \ - return ret; \ - if (session->internals.handshake_suspicious_loops < 16) { \ - if (ret == GNUTLS_E_LARGE_PACKET) { \ - session->internals.handshake_suspicious_loops++; \ - return ret; \ - } \ - /* a warning alert might interrupt handshake */ \ - if (allow_alert != 0 && ret==GNUTLS_E_WARNING_ALERT_RECEIVED) { \ - session->internals.handshake_suspicious_loops++; \ - return ret; \ - } \ - } \ - gnutls_assert(); \ - /* do not allow non-fatal errors at this point */ \ - if (gnutls_error_is_fatal(ret) == 0) ret = gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); \ - session_invalidate(session); \ - _gnutls_handshake_hash_buffers_clear(session); \ - return ret; \ - } } while (0) - -# define IMED_RET_FATAL( str, ret, allow_alert) do { \ - if (ret < 0) { \ - gnutls_assert(); \ - if (gnutls_error_is_fatal(ret) == 0) \ - ret = gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); \ - session_invalidate(session); \ - _gnutls_handshake_hash_buffers_clear(session); \ - return ret; \ - } } while (0) - -int _gnutls_send_handshake(gnutls_session_t session, mbuffer_st * bufel, +#define IMED_RET(str, ret, allow_alert) \ + do { \ + if (ret < 0) { \ + /* EAGAIN and INTERRUPTED are always non-fatal */ \ + if (ret == GNUTLS_E_AGAIN || \ + ret == GNUTLS_E_INTERRUPTED) \ + return ret; \ + if (ret == GNUTLS_E_GOT_APPLICATION_DATA && \ + session->internals.initial_negotiation_completed != \ + 0) \ + return ret; \ + if (session->internals.handshake_suspicious_loops < \ + 16) { \ + if (ret == GNUTLS_E_LARGE_PACKET) { \ + session->internals \ + .handshake_suspicious_loops++; \ + return ret; \ + } \ + /* a warning alert might interrupt handshake */ \ + if (allow_alert != 0 && \ + ret == GNUTLS_E_WARNING_ALERT_RECEIVED) { \ + session->internals \ + .handshake_suspicious_loops++; \ + return ret; \ + } \ + } \ + gnutls_assert(); \ + /* do not allow non-fatal errors at this point */ \ + if (gnutls_error_is_fatal(ret) == 0) \ + ret = gnutls_assert_val( \ + GNUTLS_E_INTERNAL_ERROR); \ + session_invalidate(session); \ + _gnutls_handshake_hash_buffers_clear(session); \ + return ret; \ + } \ + } while (0) + +#define IMED_RET_FATAL(str, ret, allow_alert) \ + do { \ + if (ret < 0) { \ + gnutls_assert(); \ + if (gnutls_error_is_fatal(ret) == 0) \ + ret = gnutls_assert_val( \ + GNUTLS_E_INTERNAL_ERROR); \ + session_invalidate(session); \ + _gnutls_handshake_hash_buffers_clear(session); \ + return ret; \ + } \ + } while (0) + +int _gnutls_send_handshake(gnutls_session_t session, mbuffer_st *bufel, gnutls_handshake_description_t type); int _gnutls_recv_handshake(gnutls_session_t session, gnutls_handshake_description_t type, - unsigned int optional, gnutls_buffer_st * buf); + unsigned int optional, gnutls_buffer_st *buf); -int -_gnutls_send_handshake2(gnutls_session_t session, mbuffer_st * bufel, - gnutls_handshake_description_t type, - unsigned queue_only); +int _gnutls_send_handshake2(gnutls_session_t session, mbuffer_st *bufel, + gnutls_handshake_description_t type, + unsigned queue_only); -int _gnutls_generate_session_id(uint8_t * session_id, uint8_t * len); +int _gnutls_generate_session_id(uint8_t *session_id, uint8_t *len); int _gnutls_gen_server_random(gnutls_session_t session, int version); -void _gnutls_set_client_random(gnutls_session_t session, uint8_t * rnd); +void _gnutls_set_client_random(gnutls_session_t session, uint8_t *rnd); ssize_t _gnutls_send_change_cipher_spec(gnutls_session_t session, int again); int _gnutls_send_server_hello(gnutls_session_t session, int again); -int _gnutls_find_pk_algos_in_ciphersuites(uint8_t * data, int datalen); -int _gnutls_server_select_suite(gnutls_session_t session, uint8_t * data, +int _gnutls_find_pk_algos_in_ciphersuites(uint8_t *data, int datalen); +int _gnutls_server_select_suite(gnutls_session_t session, uint8_t *data, unsigned int datalen, unsigned int scsv_only); -int _gnutls_negotiate_version(gnutls_session_t session, - uint8_t major, uint8_t minor, - unsigned allow_tls13); -int _gnutls_user_hello_func(gnutls_session_t session, - uint8_t major, uint8_t minor); +int _gnutls_negotiate_version(gnutls_session_t session, uint8_t major, + uint8_t minor, unsigned allow_tls13); +int _gnutls_user_hello_func(gnutls_session_t session, uint8_t major, + uint8_t minor); void _gnutls_handshake_hash_buffers_clear(gnutls_session_t session); int _gnutls13_handshake_hash_buffers_synth(gnutls_session_t session, - const mac_entry_st * prf, + const mac_entry_st *prf, unsigned client); -# define STATE session->internals.handshake_state -# define FINAL_STATE session->internals.handshake_final_state +#define STATE session->internals.handshake_state +#define FINAL_STATE session->internals.handshake_final_state /* This returns true if we have got there * before (and not finished due to an interrupt). */ -# define AGAIN(target) (STATE==target?1:0) -# define FAGAIN(target) (FINAL_STATE==target?1:0) -# define AGAIN2(state, target) (state==target?1:0) +#define AGAIN(target) (STATE == target ? 1 : 0) +#define FAGAIN(target) (FINAL_STATE == target ? 1 : 0) +#define AGAIN2(state, target) (state == target ? 1 : 0) /* return the remaining time in ms */ inline static int handshake_remaining_time(gnutls_session_t session) @@ -125,9 +137,9 @@ inline static int handshake_remaining_time(gnutls_session_t session) if (now.tv_sec < end->tv_sec || (now.tv_sec == end->tv_sec && now.tv_nsec < end->tv_nsec)) { long long now_ms = - now.tv_sec * 1000LL + now.tv_nsec / 1000000; + now.tv_sec * 1000LL + now.tv_nsec / 1000000; long long end_ms = - end->tv_sec * 1000LL + end->tv_nsec / 1000000; + end->tv_sec * 1000LL + end->tv_nsec / 1000000; return end_ms - now_ms; } else @@ -151,18 +163,18 @@ inline static unsigned have_creds_for_tls13(gnutls_session_t session) } int _gnutls_handshake_get_session_hash(gnutls_session_t session, - gnutls_datum_t * shash); + gnutls_datum_t *shash); int _gnutls_check_id_for_change(gnutls_session_t session); int _gnutls_check_if_cert_hash_is_same(gnutls_session_t session, gnutls_certificate_credentials_t cred); -# include "handshake-defs.h" +#include "handshake-defs.h" int _gnutls_call_hook_func(gnutls_session_t session, - gnutls_handshake_description_t type, - int post, unsigned incoming, - const uint8_t * data, unsigned data_size); + gnutls_handshake_description_t type, int post, + unsigned incoming, const uint8_t *data, + unsigned data_size); int _gnutls_run_verify_callback(gnutls_session_t session, unsigned int side); int _gnutls_recv_finished(gnutls_session_t session); @@ -171,10 +183,9 @@ int _gnutls_send_finished(gnutls_session_t session, int again); int _gnutls13_handshake_client(gnutls_session_t session); int _gnutls13_handshake_server(gnutls_session_t session); -int -_gnutls13_recv_hello_retry_request(gnutls_session_t session, - gnutls_buffer_st * buf); +int _gnutls13_recv_hello_retry_request(gnutls_session_t session, + gnutls_buffer_st *buf); int _gnutls13_recv_async_handshake(gnutls_session_t session); -#endif /* GNUTLS_LIB_HANDSHAKE_H */ +#endif /* GNUTLS_LIB_HANDSHAKE_H */ diff --git a/lib/hash_int.c b/lib/hash_int.c index e4652fa1a4..a9f016de6c 100644 --- a/lib/hash_int.c +++ b/lib/hash_int.c @@ -30,7 +30,7 @@ #include #include -int _gnutls_hash_init(digest_hd_st * dig, const mac_entry_st * e) +int _gnutls_hash_init(digest_hd_st *dig, const mac_entry_st *e) { int result; const gnutls_crypto_digest_st *cc = NULL; @@ -44,9 +44,9 @@ int _gnutls_hash_init(digest_hd_st * dig, const mac_entry_st * e) /* check if a digest has been registered */ - cc = _gnutls_get_crypto_digest((gnutls_digest_algorithm_t) e->id); + cc = _gnutls_get_crypto_digest((gnutls_digest_algorithm_t)e->id); if (cc != NULL && cc->init) { - if (cc->init((gnutls_digest_algorithm_t) e->id, &dig->handle) < + if (cc->init((gnutls_digest_algorithm_t)e->id, &dig->handle) < 0) { gnutls_assert(); return GNUTLS_E_HASH_FAILED; @@ -60,9 +60,8 @@ int _gnutls_hash_init(digest_hd_st * dig, const mac_entry_st * e) return 0; } - result = - _gnutls_digest_ops.init((gnutls_digest_algorithm_t) e->id, - &dig->handle); + result = _gnutls_digest_ops.init((gnutls_digest_algorithm_t)e->id, + &dig->handle); if (result < 0) { gnutls_assert(); return result; @@ -93,12 +92,12 @@ int _gnutls_digest_exists(gnutls_digest_algorithm_t algo) return _gnutls_digest_ops.exists(algo); } -int _gnutls_hash_copy(const digest_hd_st * handle, digest_hd_st * dst) +int _gnutls_hash_copy(const digest_hd_st *handle, digest_hd_st *dst) { if (handle->copy == NULL) return gnutls_assert_val(GNUTLS_E_HASH_FAILED); - *dst = *handle; /* copy data */ + *dst = *handle; /* copy data */ dst->handle = handle->copy(handle->handle); if (dst->handle == NULL) @@ -107,7 +106,7 @@ int _gnutls_hash_copy(const digest_hd_st * handle, digest_hd_st * dst) return 0; } -void _gnutls_hash_deinit(digest_hd_st * handle, void *digest) +void _gnutls_hash_deinit(digest_hd_st *handle, void *digest) { if (handle->handle == NULL) { return; @@ -120,9 +119,8 @@ void _gnutls_hash_deinit(digest_hd_st * handle, void *digest) handle->handle = NULL; } -int -_gnutls_hash_fast(gnutls_digest_algorithm_t algorithm, - const void *text, size_t textlen, void *digest) +int _gnutls_hash_fast(gnutls_digest_algorithm_t algorithm, const void *text, + size_t textlen, void *digest) { int ret; const gnutls_crypto_digest_st *cc = NULL; @@ -152,9 +150,8 @@ _gnutls_hash_fast(gnutls_digest_algorithm_t algorithm, /* HMAC interface */ -int -_gnutls_mac_fast(gnutls_mac_algorithm_t algorithm, const void *key, - int keylen, const void *text, size_t textlen, void *digest) +int _gnutls_mac_fast(gnutls_mac_algorithm_t algorithm, const void *key, + int keylen, const void *text, size_t textlen, void *digest) { int ret; const gnutls_crypto_mac_st *cc = NULL; @@ -174,16 +171,14 @@ _gnutls_mac_fast(gnutls_mac_algorithm_t algorithm, const void *key, return 0; } - ret = - _gnutls_mac_ops.fast(algorithm, NULL, 0, key, keylen, text, - textlen, digest); + ret = _gnutls_mac_ops.fast(algorithm, NULL, 0, key, keylen, text, + textlen, digest); if (ret < 0) { gnutls_assert(); return ret; } return 0; - } /* Returns true(non-zero) or false(0) if the @@ -207,9 +202,8 @@ int _gnutls_mac_exists(gnutls_mac_algorithm_t algo) return _gnutls_mac_ops.exists(algo); } -int -_gnutls_mac_init(mac_hd_st * mac, const mac_entry_st * e, - const void *key, int keylen) +int _gnutls_mac_init(mac_hd_st *mac, const mac_entry_st *e, const void *key, + int keylen) { int result; const gnutls_crypto_mac_st *cc = NULL; @@ -269,12 +263,12 @@ _gnutls_mac_init(mac_hd_st * mac, const mac_entry_st * e, return 0; } -int _gnutls_mac_copy(const mac_hd_st * handle, mac_hd_st * dst) +int _gnutls_mac_copy(const mac_hd_st *handle, mac_hd_st *dst) { if (handle->copy == NULL) return gnutls_assert_val(GNUTLS_E_HASH_FAILED); - *dst = *handle; /* copy data */ + *dst = *handle; /* copy data */ dst->handle = handle->copy(handle->handle); if (dst->handle == NULL) @@ -283,7 +277,7 @@ int _gnutls_mac_copy(const mac_hd_st * handle, mac_hd_st * dst) return 0; } -void _gnutls_mac_deinit(mac_hd_st * handle, void *digest) +void _gnutls_mac_deinit(mac_hd_st *handle, void *digest) { if (handle->handle == NULL) { return; @@ -312,9 +306,8 @@ inline static int get_padsize(gnutls_mac_algorithm_t algorithm) /* Special functions for SSL3 MAC */ -int -_gnutls_mac_init_ssl3(digest_hd_st * ret, const mac_entry_st * e, - void *key, int keylen) +int _gnutls_mac_init_ssl3(digest_hd_st *ret, const mac_entry_st *e, void *key, + int keylen) { uint8_t ipad[48]; int padsize, result; @@ -345,7 +338,7 @@ _gnutls_mac_init_ssl3(digest_hd_st * ret, const mac_entry_st * e, return 0; } -int _gnutls_mac_output_ssl3(digest_hd_st * handle, void *digest) +int _gnutls_mac_output_ssl3(digest_hd_st *handle, void *digest) { uint8_t ret[MAX_HASH_SIZE]; digest_hd_st td; @@ -372,7 +365,7 @@ int _gnutls_mac_output_ssl3(digest_hd_st * handle, void *digest) _gnutls_hash(&td, opad, padsize); block = _gnutls_mac_get_algo_len(handle->e); - _gnutls_hash_output(handle, ret); /* get the previous hash */ + _gnutls_hash_output(handle, ret); /* get the previous hash */ _gnutls_hash(&td, ret, block); _gnutls_hash_deinit(&td, digest); @@ -387,7 +380,7 @@ int _gnutls_mac_output_ssl3(digest_hd_st * handle, void *digest) return 0; } -int _gnutls_mac_deinit_ssl3(digest_hd_st * handle, void *digest) +int _gnutls_mac_deinit_ssl3(digest_hd_st *handle, void *digest) { int ret = 0; @@ -398,10 +391,8 @@ int _gnutls_mac_deinit_ssl3(digest_hd_st * handle, void *digest) return ret; } -int -_gnutls_mac_deinit_ssl3_handshake(digest_hd_st * handle, - void *digest, uint8_t * key, - uint32_t key_size) +int _gnutls_mac_deinit_ssl3_handshake(digest_hd_st *handle, void *digest, + uint8_t *key, uint32_t key_size) { uint8_t ret[MAX_HASH_SIZE]; digest_hd_st td; @@ -435,7 +426,7 @@ _gnutls_mac_deinit_ssl3_handshake(digest_hd_st * handle, if (key_size > 0) _gnutls_hash(handle, key, key_size); _gnutls_hash(handle, ipad, padsize); - _gnutls_hash_deinit(handle, ret); /* get the previous hash */ + _gnutls_hash_deinit(handle, ret); /* get the previous hash */ _gnutls_hash(&td, ret, block); @@ -443,14 +434,13 @@ _gnutls_mac_deinit_ssl3_handshake(digest_hd_st * handle, return 0; - cleanup: +cleanup: _gnutls_hash_deinit(handle, NULL); return rc; } -static int -ssl3_sha(int i, uint8_t * secret, int secret_len, - uint8_t * rnd, int rnd_len, void *digest) +static int ssl3_sha(int i, uint8_t *secret, int secret_len, uint8_t *rnd, + int rnd_len, void *digest) { int j, ret; uint8_t text1[26]; @@ -458,7 +448,7 @@ ssl3_sha(int i, uint8_t * secret, int secret_len, digest_hd_st td; for (j = 0; j < i + 1; j++) { - text1[j] = 65 + i; /* A==65 */ + text1[j] = 65 + i; /* A==65 */ } ret = _gnutls_hash_init(&td, mac_to_entry(GNUTLS_MAC_SHA1)); @@ -475,12 +465,11 @@ ssl3_sha(int i, uint8_t * secret, int secret_len, return 0; } -# define SHA1_DIGEST_OUTPUT 20 -# define MD5_DIGEST_OUTPUT 16 +#define SHA1_DIGEST_OUTPUT 20 +#define MD5_DIGEST_OUTPUT 16 -static int -ssl3_md5(int i, uint8_t * secret, int secret_len, - uint8_t * rnd, int rnd_len, void *digest) +static int ssl3_md5(int i, uint8_t *secret, int secret_len, uint8_t *rnd, + int rnd_len, void *digest) { uint8_t tmp[MAX_HASH_SIZE]; digest_hd_st td; @@ -507,10 +496,8 @@ ssl3_md5(int i, uint8_t * secret, int secret_len, return 0; } -int -_gnutls_ssl3_generate_random(void *secret, int secret_len, - void *rnd, int rnd_len, - int ret_bytes, uint8_t * ret) +int _gnutls_ssl3_generate_random(void *secret, int secret_len, void *rnd, + int rnd_len, int ret_bytes, uint8_t *ret) { int i = 0, copy, output_bytes; uint8_t digest[MAX_HASH_SIZE]; @@ -520,13 +507,11 @@ _gnutls_ssl3_generate_random(void *secret, int secret_len, output_bytes = 0; do { output_bytes += block; - } - while (output_bytes < ret_bytes); + } while (output_bytes < ret_bytes); times = output_bytes / block; for (i = 0; i < times; i++) { - result = ssl3_md5(i, secret, secret_len, rnd, rnd_len, digest); if (result < 0) { gnutls_assert(); @@ -536,7 +521,7 @@ _gnutls_ssl3_generate_random(void *secret, int secret_len, if ((1 + i) * block < ret_bytes) { copy = block; } else { - copy = ret_bytes - (i) * block; + copy = ret_bytes - (i)*block; } memcpy(&ret[i * block], digest, copy); diff --git a/lib/hash_int.h b/lib/hash_int.h index 9dda108eee..d9a79c9524 100644 --- a/lib/hash_int.h +++ b/lib/hash_int.h @@ -21,12 +21,12 @@ */ #ifndef GNUTLS_LIB_HASH_INT_H -# define GNUTLS_LIB_HASH_INT_H +#define GNUTLS_LIB_HASH_INT_H -# include "gnutls_int.h" -# include -# include -# include +#include "gnutls_int.h" +#include +#include +#include /* for message digests */ @@ -50,7 +50,7 @@ typedef struct { hash_deinit_func deinit; copy_func copy; - const void *key; /* esoteric use by SSL3 MAC functions */ + const void *key; /* esoteric use by SSL3 MAC functions */ int keysize; void *handle; @@ -74,17 +74,17 @@ typedef struct { int _gnutls_digest_exists(gnutls_digest_algorithm_t algo); int _gnutls_mac_exists(gnutls_mac_algorithm_t algorithm); -int _gnutls_mac_init(mac_hd_st *, const mac_entry_st * e, - const void *key, int keylen); +int _gnutls_mac_init(mac_hd_st *, const mac_entry_st *e, const void *key, + int keylen); -int _gnutls_mac_copy(const mac_hd_st * handle, mac_hd_st * dst); +int _gnutls_mac_copy(const mac_hd_st *handle, mac_hd_st *dst); int _gnutls_mac_fast(gnutls_mac_algorithm_t algorithm, const void *key, int keylen, const void *text, size_t textlen, void *digest); -inline static int -_gnutls_mac(mac_hd_st * handle, const void *text, size_t textlen) +inline static int _gnutls_mac(mac_hd_st *handle, const void *text, + size_t textlen) { if (textlen > 0) { return handle->hash(handle->handle, text, textlen); @@ -92,34 +92,34 @@ _gnutls_mac(mac_hd_st * handle, const void *text, size_t textlen) return 0; } -inline static void _gnutls_mac_output(mac_hd_st * handle, void *digest) +inline static void _gnutls_mac_output(mac_hd_st *handle, void *digest) { if (digest != NULL) { handle->output(handle->handle, digest, handle->mac_len); } } -inline static int -_gnutls_mac_set_nonce(mac_hd_st * handle, const void *nonce, size_t n_size) +inline static int _gnutls_mac_set_nonce(mac_hd_st *handle, const void *nonce, + size_t n_size) { if (handle->setnonce) return handle->setnonce(handle->handle, nonce, n_size); return 0; } -inline static int -_gnutls_mac_setkey(mac_hd_st * handle, const void *key, size_t key_size) +inline static int _gnutls_mac_setkey(mac_hd_st *handle, const void *key, + size_t key_size) { return handle->setkey(handle->handle, key, key_size); } -void _gnutls_mac_deinit(mac_hd_st * handle, void *digest); +void _gnutls_mac_deinit(mac_hd_st *handle, void *digest); /* Hash interface */ -int _gnutls_hash_init(digest_hd_st *, const mac_entry_st * e); +int _gnutls_hash_init(digest_hd_st *, const mac_entry_st *e); -inline static int -_gnutls_hash(digest_hd_st * handle, const void *text, size_t textlen) +inline static int _gnutls_hash(digest_hd_st *handle, const void *text, + size_t textlen) { if (textlen > 0) { return handle->hash(handle->handle, text, textlen); @@ -129,31 +129,29 @@ _gnutls_hash(digest_hd_st * handle, const void *text, size_t textlen) /* when the current output is needed without calling deinit */ -# define _gnutls_hash_output(h, d) \ - (h)->output((h)->handle, d, _gnutls_hash_get_algo_len((h)->e)) +#define _gnutls_hash_output(h, d) \ + (h)->output((h)->handle, d, _gnutls_hash_get_algo_len((h)->e)) -void _gnutls_hash_deinit(digest_hd_st * handle, void *digest); +void _gnutls_hash_deinit(digest_hd_st *handle, void *digest); -int _gnutls_hash_copy(const digest_hd_st * handle, digest_hd_st * dst); +int _gnutls_hash_copy(const digest_hd_st *handle, digest_hd_st *dst); -int -_gnutls_hash_fast(gnutls_digest_algorithm_t algorithm, - const void *text, size_t textlen, void *digest); +int _gnutls_hash_fast(gnutls_digest_algorithm_t algorithm, const void *text, + size_t textlen, void *digest); -# ifdef ENABLE_SSL3 +#ifdef ENABLE_SSL3 /* helper functions */ -int _gnutls_mac_init_ssl3(digest_hd_st *, const mac_entry_st * e, - void *key, int keylen); -int _gnutls_mac_deinit_ssl3(digest_hd_st * handle, void *digest); -int _gnutls_mac_output_ssl3(digest_hd_st * handle, void *digest); +int _gnutls_mac_init_ssl3(digest_hd_st *, const mac_entry_st *e, void *key, + int keylen); +int _gnutls_mac_deinit_ssl3(digest_hd_st *handle, void *digest); +int _gnutls_mac_output_ssl3(digest_hd_st *handle, void *digest); -int _gnutls_ssl3_generate_random(void *secret, int secret_len, - void *rnd, int random_len, int bytes, - uint8_t * ret); +int _gnutls_ssl3_generate_random(void *secret, int secret_len, void *rnd, + int random_len, int bytes, uint8_t *ret); -int _gnutls_mac_deinit_ssl3_handshake(digest_hd_st * handle, void *digest, - uint8_t * key, uint32_t key_size); -# endif +int _gnutls_mac_deinit_ssl3_handshake(digest_hd_st *handle, void *digest, + uint8_t *key, uint32_t key_size); +#endif inline static int IS_SHA(gnutls_digest_algorithm_t algo) { @@ -164,4 +162,4 @@ inline static int IS_SHA(gnutls_digest_algorithm_t algo) return 0; } -#endif /* GNUTLS_LIB_HASH_INT_H */ +#endif /* GNUTLS_LIB_HASH_INT_H */ diff --git a/lib/hello_ext.c b/lib/hello_ext.c index a2159429a0..65ae1c5213 100644 --- a/lib/hello_ext.c +++ b/lib/hello_ext.c @@ -60,9 +60,8 @@ #include #include "intprops.h" -static void -unset_ext_data(gnutls_session_t session, const struct hello_ext_entry_st *, - unsigned idx); +static void unset_ext_data(gnutls_session_t session, + const struct hello_ext_entry_st *, unsigned idx); static void unset_resumed_ext_data(gnutls_session_t session, const struct hello_ext_entry_st *, @@ -89,7 +88,7 @@ static hello_ext_entry_st const *extfunc[MAX_EXT_TYPES + 1] = { [GNUTLS_EXTENSION_SERVER_CERT_TYPE] = &ext_mod_server_cert_type, [GNUTLS_EXTENSION_SUPPORTED_GROUPS] = &ext_mod_supported_groups, [GNUTLS_EXTENSION_SUPPORTED_EC_POINT_FORMATS] = - &ext_mod_supported_ec_point_formats, + &ext_mod_supported_ec_point_formats, [GNUTLS_EXTENSION_SIGNATURE_ALGORITHMS] = &ext_mod_sig, [GNUTLS_EXTENSION_KEY_SHARE] = &ext_mod_key_share, [GNUTLS_EXTENSION_COOKIE] = &ext_mod_cookie, @@ -126,10 +125,9 @@ static const hello_ext_entry_st *gid_to_ext_entry(gnutls_session_t session, return extfunc[id]; } -static const hello_ext_entry_st *tls_id_to_ext_entry(gnutls_session_t session, - uint16_t tls_id, - gnutls_ext_parse_type_t - parse_point) +static const hello_ext_entry_st * +tls_id_to_ext_entry(gnutls_session_t session, uint16_t tls_id, + gnutls_ext_parse_type_t parse_point) { unsigned i; const hello_ext_entry_st *e; @@ -152,10 +150,10 @@ static const hello_ext_entry_st *tls_id_to_ext_entry(gnutls_session_t session, } return NULL; - done: - if (parse_point == GNUTLS_EXT_ANY - || (IS_SERVER(session) && e->server_parse_point == parse_point) - || (!IS_SERVER(session) && e->client_parse_point == parse_point)) { +done: + if (parse_point == GNUTLS_EXT_ANY || + (IS_SERVER(session) && e->server_parse_point == parse_point) || + (!IS_SERVER(session) && e->client_parse_point == parse_point)) { return e; } else { return NULL; @@ -212,13 +210,12 @@ typedef struct hello_ext_ctx_st { gnutls_session_t session; gnutls_ext_flags_t msg; gnutls_ext_parse_type_t parse_point; - const hello_ext_entry_st *ext; /* used during send */ + const hello_ext_entry_st *ext; /* used during send */ unsigned seen_pre_shared_key; } hello_ext_ctx_st; -static -int hello_ext_parse(void *_ctx, unsigned tls_id, const uint8_t * data, - unsigned data_size) +static int hello_ext_parse(void *_ctx, unsigned tls_id, const uint8_t *data, + unsigned data_size) { hello_ext_ctx_st *ctx = _ctx; gnutls_session_t session = ctx->session; @@ -227,8 +224,8 @@ int hello_ext_parse(void *_ctx, unsigned tls_id, const uint8_t * data, if (tls_id == PRE_SHARED_KEY_TLS_ID) { ctx->seen_pre_shared_key = 1; - } else if (ctx->seen_pre_shared_key - && session->security_parameters.entity == GNUTLS_SERVER) { + } else if (ctx->seen_pre_shared_key && + session->security_parameters.entity == GNUTLS_SERVER) { /* the pre-shared key extension must always be the last one, * draft-ietf-tls-tls13-28: 4.2.11 */ return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); @@ -256,34 +253,31 @@ int hello_ext_parse(void *_ctx, unsigned tls_id, const uint8_t * data, if (session->security_parameters.entity == GNUTLS_CLIENT) { if (!(ext->validity & GNUTLS_EXT_FLAG_IGNORE_CLIENT_REQUEST) && !_gnutls_hello_ext_is_present(session, ext->gid)) { - _gnutls_debug_log - ("EXT[%p]: Received unexpected extension '%s/%d'\n", - session, ext->name, (int)tls_id); - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION); + _gnutls_debug_log( + "EXT[%p]: Received unexpected extension '%s/%d'\n", + session, ext->name, (int)tls_id); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION); } } if ((ext->validity & ctx->msg) == 0) { - _gnutls_debug_log - ("EXT[%p]: Received unexpected extension (%s/%d) for '%s'\n", - session, ext->name, (int)tls_id, - ext_msg_validity_to_str(ctx->msg)); + _gnutls_debug_log( + "EXT[%p]: Received unexpected extension (%s/%d) for '%s'\n", + session, ext->name, (int)tls_id, + ext_msg_validity_to_str(ctx->msg)); return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION); } if (session->security_parameters.entity == GNUTLS_SERVER) { ret = _gnutls_hello_ext_save(session, ext->gid, 1); if (ret == 0) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION); } - _gnutls_handshake_log - ("EXT[%p]: Parsing extension '%s/%d' (%d bytes)\n", - session, ext->name, (int)tls_id, data_size); + _gnutls_handshake_log("EXT[%p]: Parsing extension '%s/%d' (%d bytes)\n", + session, ext->name, (int)tls_id, data_size); _gnutls_ext_set_msg(session, ctx->msg); if ((ret = ext->recv_func(session, data, data_size)) < 0) { @@ -293,20 +287,18 @@ int hello_ext_parse(void *_ctx, unsigned tls_id, const uint8_t * data, return 0; - ignore: +ignore: if (ext) { - _gnutls_handshake_log - ("EXT[%p]: Ignoring extension '%s/%d'\n", session, - ext->name, (int)tls_id); + _gnutls_handshake_log("EXT[%p]: Ignoring extension '%s/%d'\n", + session, ext->name, (int)tls_id); } return 0; } -int -_gnutls_parse_hello_extensions(gnutls_session_t session, - gnutls_ext_flags_t msg, - gnutls_ext_parse_type_t parse_point, - const uint8_t * data, int data_size) +int _gnutls_parse_hello_extensions(gnutls_session_t session, + gnutls_ext_flags_t msg, + gnutls_ext_parse_type_t parse_point, + const uint8_t *data, int data_size) { int ret; hello_ext_ctx_st ctx; @@ -325,8 +317,7 @@ _gnutls_parse_hello_extensions(gnutls_session_t session, return 0; } -static -int hello_ext_send(void *_ctx, gnutls_buffer_st * buf) +static int hello_ext_send(void *_ctx, gnutls_buffer_st *buf) { hello_ext_ctx_st *ctx = _ctx; int ret; @@ -339,9 +330,9 @@ int hello_ext_send(void *_ctx, gnutls_buffer_st * buf) return 0; if (ctx->parse_point != GNUTLS_EXT_ANY && - ((IS_SERVER(session) && p->server_parse_point != ctx->parse_point) - || (!IS_SERVER(session) - && p->client_parse_point != ctx->parse_point))) { + ((IS_SERVER(session) && p->server_parse_point != ctx->parse_point) || + (!IS_SERVER(session) && + p->client_parse_point != ctx->parse_point))) { return 0; } @@ -360,10 +351,10 @@ int hello_ext_send(void *_ctx, gnutls_buffer_st * buf) if ((ctx->msg & p->validity) == 0) { goto skip; } else { - _gnutls_handshake_log - ("EXT[%p]: Preparing extension (%s/%d) for '%s'\n", session, - p->name, (int)p->tls_id, - ext_msg_validity_to_str(ctx->msg)); + _gnutls_handshake_log( + "EXT[%p]: Preparing extension (%s/%d) for '%s'\n", + session, p->name, (int)p->tls_id, + ext_msg_validity_to_str(ctx->msg)); } /* ensure we don't send something twice (i.e, overridden extensions in @@ -372,11 +363,11 @@ int hello_ext_send(void *_ctx, gnutls_buffer_st * buf) if (session->security_parameters.entity == GNUTLS_SERVER) { /* if client didn't advertise and the override flag is not present */ - if (!(p->validity & GNUTLS_EXT_FLAG_IGNORE_CLIENT_REQUEST) - && ret == 0) + if (!(p->validity & GNUTLS_EXT_FLAG_IGNORE_CLIENT_REQUEST) && + ret == 0) return 0; } else { - if (ret != 0) /* already sent */ + if (ret != 0) /* already sent */ return 0; } @@ -395,28 +386,26 @@ int hello_ext_send(void *_ctx, gnutls_buffer_st * buf) */ if ((appended > 0 || ret == GNUTLS_E_INT_RET_0) && session->security_parameters.entity == GNUTLS_CLIENT) { - _gnutls_hello_ext_save(session, p->gid, 0); } return ret; - skip: - _gnutls_handshake_log - ("EXT[%p]: Not sending extension (%s/%d) for '%s'\n", session, - p->name, (int)p->tls_id, ext_msg_validity_to_str(ctx->msg)); +skip: + _gnutls_handshake_log( + "EXT[%p]: Not sending extension (%s/%d) for '%s'\n", session, + p->name, (int)p->tls_id, ext_msg_validity_to_str(ctx->msg)); return 0; } -static inline void swap_exts(extensions_t * exts, size_t index1, size_t index2) +static inline void swap_exts(extensions_t *exts, size_t index1, size_t index2) { extensions_t temp = exts[index1]; exts[index1] = exts[index2]; exts[index2] = temp; } -static -int shuffle_exts(extensions_t * exts, size_t size) +static int shuffle_exts(extensions_t *exts, size_t size) { uint8_t permutation[MAX_EXT_TYPES]; size_t i; @@ -439,11 +428,9 @@ int shuffle_exts(extensions_t * exts, size_t size) return 0; } -int -_gnutls_gen_hello_extensions(gnutls_session_t session, - gnutls_buffer_st * buf, - gnutls_ext_flags_t msg, - gnutls_ext_parse_type_t parse_point) +int _gnutls_gen_hello_extensions(gnutls_session_t session, + gnutls_buffer_st *buf, gnutls_ext_flags_t msg, + gnutls_ext_parse_type_t parse_point) { int pos, ret; size_t i; @@ -466,17 +453,17 @@ _gnutls_gen_hello_extensions(gnutls_session_t session, for (i = 0; i < session->internals.rexts_size; i++) { ctx.ext = &session->internals.rexts[i]; - ret = - _gnutls_extv_append(buf, session->internals.rexts[i].tls_id, - &ctx, hello_ext_send); + ret = _gnutls_extv_append(buf, + session->internals.rexts[i].tls_id, + &ctx, hello_ext_send); if (ret < 0) return gnutls_assert_val(ret); if (ret > 0) - _gnutls_handshake_log - ("EXT[%p]: Sending extension %s/%d (%d bytes)\n", - session, ctx.ext->name, (int)ctx.ext->tls_id, - ret - 4); + _gnutls_handshake_log( + "EXT[%p]: Sending extension %s/%d (%d bytes)\n", + session, ctx.ext->name, (int)ctx.ext->tls_id, + ret - 4); } /* Initializing extensions array */ @@ -503,16 +490,16 @@ _gnutls_gen_hello_extensions(gnutls_session_t session, continue; ctx.ext = extfunc[ii]; - ret = _gnutls_extv_append(buf, extfunc[ii]->tls_id, - &ctx, hello_ext_send); + ret = _gnutls_extv_append(buf, extfunc[ii]->tls_id, &ctx, + hello_ext_send); if (ret < 0) return gnutls_assert_val(ret); if (ret > 0) - _gnutls_handshake_log - ("EXT[%p]: Sending extension %s/%d (%d bytes)\n", - session, ctx.ext->name, (int)ctx.ext->tls_id, - ret - 4); + _gnutls_handshake_log( + "EXT[%p]: Sending extension %s/%d (%d bytes)\n", + session, ctx.ext->name, (int)ctx.ext->tls_id, + ret - 4); } ret = _gnutls_extv_append_final(buf, pos, !(msg & GNUTLS_EXT_FLAG_EE)); @@ -537,7 +524,7 @@ void _gnutls_hello_ext_deinit(void) continue; if (extfunc[i]->free_struct != 0) { - gnutls_free(((hello_ext_entry_st *) extfunc[i])->name); + gnutls_free(((hello_ext_entry_st *)extfunc[i])->name); gnutls_free(extfunc[i]); } } @@ -545,8 +532,8 @@ void _gnutls_hello_ext_deinit(void) /* Packing of extension data (for use in resumption) */ static int pack_extension(gnutls_session_t session, - const hello_ext_entry_st * extp, - gnutls_buffer_st * packed) + const hello_ext_entry_st *extp, + gnutls_buffer_st *packed) { int ret; int size_offset; @@ -578,7 +565,7 @@ static int pack_extension(gnutls_session_t session, return rval; } -int _gnutls_hello_ext_pack(gnutls_session_t session, gnutls_buffer_st * packed) +int _gnutls_hello_ext_pack(gnutls_session_t session, gnutls_buffer_st *packed) { unsigned int i; int ret; @@ -590,8 +577,7 @@ int _gnutls_hello_ext_pack(gnutls_session_t session, gnutls_buffer_st * packed) BUFFER_APPEND_NUM(packed, 0); for (i = 0; i <= GNUTLS_EXTENSION_MAX_VALUE; i++) { - if (session->internals.used_exts & ((ext_track_t) 1 << i)) { - + if (session->internals.used_exts & ((ext_track_t)1 << i)) { ext = gid_to_ext_entry(session, i); if (ext == NULL) continue; @@ -611,7 +597,7 @@ int _gnutls_hello_ext_pack(gnutls_session_t session, gnutls_buffer_st * packed) } int _gnutls_ext_set_full_client_hello(gnutls_session_t session, - handshake_buffer_st * recv_buf) + handshake_buffer_st *recv_buf) { int ret; gnutls_buffer_st *buf = &session->internals.full_client_hello; @@ -620,19 +606,18 @@ int _gnutls_ext_set_full_client_hello(gnutls_session_t session, if ((ret = _gnutls_buffer_append_prefix(buf, 8, recv_buf->htype)) < 0) return gnutls_assert_val(ret); - if ((ret = - _gnutls_buffer_append_prefix(buf, 24, recv_buf->data.length)) < 0) + if ((ret = _gnutls_buffer_append_prefix(buf, 24, + recv_buf->data.length)) < 0) return gnutls_assert_val(ret); - if ((ret = - _gnutls_buffer_append_data(buf, recv_buf->data.data, - recv_buf->data.length)) < 0) + if ((ret = _gnutls_buffer_append_data(buf, recv_buf->data.data, + recv_buf->data.length)) < 0) return gnutls_assert_val(ret); return 0; } unsigned _gnutls_ext_get_full_client_hello(gnutls_session_t session, - gnutls_datum_t * d) + gnutls_datum_t *d) { gnutls_buffer_st *buf = &session->internals.full_client_hello; @@ -645,10 +630,9 @@ unsigned _gnutls_ext_get_full_client_hello(gnutls_session_t session, return 1; } -static void -_gnutls_ext_set_resumed_session_data(gnutls_session_t session, - extensions_t id, - gnutls_ext_priv_data_t data) +static void _gnutls_ext_set_resumed_session_data(gnutls_session_t session, + extensions_t id, + gnutls_ext_priv_data_t data) { const struct hello_ext_entry_st *ext; @@ -666,8 +650,7 @@ _gnutls_ext_set_resumed_session_data(gnutls_session_t session, return; } -int _gnutls_hello_ext_unpack(gnutls_session_t session, - gnutls_buffer_st * packed) +int _gnutls_hello_ext_unpack(gnutls_session_t session, gnutls_buffer_st *packed) { int i, ret; gnutls_ext_priv_data_t data; @@ -697,7 +680,7 @@ int _gnutls_hello_ext_unpack(gnutls_session_t session, /* verify that unpack read the correct bytes */ cur_pos = cur_pos - packed->length; - if (cur_pos /* read length */ != size_for_id) { + if (cur_pos /* read length */ != size_for_id) { gnutls_assert(); return GNUTLS_E_PARSING_ERROR; } @@ -707,19 +690,18 @@ int _gnutls_hello_ext_unpack(gnutls_session_t session, return 0; - error: +error: return ret; } -static void -unset_ext_data(gnutls_session_t session, const struct hello_ext_entry_st *ext, - unsigned idx) +static void unset_ext_data(gnutls_session_t session, + const struct hello_ext_entry_st *ext, unsigned idx) { if (session->internals.ext_data[idx].set == 0) return; - if (ext && ext->deinit_func - && session->internals.ext_data[idx].priv != NULL) + if (ext && ext->deinit_func && + session->internals.ext_data[idx].priv != NULL) ext->deinit_func(session->internals.ext_data[idx].priv); session->internals.ext_data[idx].set = 0; } @@ -740,8 +722,8 @@ static void unset_resumed_ext_data(gnutls_session_t session, if (session->internals.ext_data[idx].resumed_set == 0) return; - if (ext && ext->deinit_func - && session->internals.ext_data[idx].resumed_priv) { + if (ext && ext->deinit_func && + session->internals.ext_data[idx].resumed_priv) { ext->deinit_func(session->internals.ext_data[idx].resumed_priv); } session->internals.ext_data[idx].resumed_set = 0; @@ -755,8 +737,8 @@ void _gnutls_hello_ext_priv_deinit(gnutls_session_t session) const struct hello_ext_entry_st *ext; for (i = 0; i < MAX_EXT_TYPES; i++) { - if (!session->internals.ext_data[i].set - && !session->internals.ext_data[i].resumed_set) + if (!session->internals.ext_data[i].set && + !session->internals.ext_data[i].resumed_set) continue; ext = gid_to_ext_entry(session, i); @@ -771,9 +753,8 @@ void _gnutls_hello_ext_priv_deinit(gnutls_session_t session) * and retrieve them later on. We use functions instead of a pointer to a * private pointer, to allow API additions by individual extensions. */ -void -_gnutls_hello_ext_set_priv(gnutls_session_t session, extensions_t id, - gnutls_ext_priv_data_t data) +void _gnutls_hello_ext_set_priv(gnutls_session_t session, extensions_t id, + gnutls_ext_priv_data_t data) { const struct hello_ext_entry_st *ext; @@ -791,9 +772,8 @@ _gnutls_hello_ext_set_priv(gnutls_session_t session, extensions_t id, return; } -int -_gnutls_hello_ext_get_priv(gnutls_session_t session, - extensions_t id, gnutls_ext_priv_data_t * data) +int _gnutls_hello_ext_get_priv(gnutls_session_t session, extensions_t id, + gnutls_ext_priv_data_t *data) { if (session->internals.ext_data[id].set != 0) { *data = session->internals.ext_data[id].priv; @@ -803,10 +783,9 @@ _gnutls_hello_ext_get_priv(gnutls_session_t session, return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; } -int -_gnutls_hello_ext_get_resumed_priv(gnutls_session_t session, - extensions_t id, - gnutls_ext_priv_data_t * data) +int _gnutls_hello_ext_get_resumed_priv(gnutls_session_t session, + extensions_t id, + gnutls_ext_priv_data_t *data) { if (session->internals.ext_data[id].resumed_set != 0) { *data = session->internals.ext_data[id].resumed_priv; @@ -844,14 +823,13 @@ _gnutls_hello_ext_get_resumed_priv(gnutls_session_t session, * * Since: 3.4.0 **/ -int -gnutls_ext_register(const char *name, int id, - gnutls_ext_parse_type_t parse_point, - gnutls_ext_recv_func recv_func, - gnutls_ext_send_func send_func, - gnutls_ext_deinit_data_func deinit_func, - gnutls_ext_pack_func pack_func, - gnutls_ext_unpack_func unpack_func) +int gnutls_ext_register(const char *name, int id, + gnutls_ext_parse_type_t parse_point, + gnutls_ext_recv_func recv_func, + gnutls_ext_send_func send_func, + gnutls_ext_deinit_data_func deinit_func, + gnutls_ext_pack_func pack_func, + gnutls_ext_unpack_func unpack_func) { hello_ext_entry_st *tmp_mod; unsigned i; @@ -887,9 +865,10 @@ gnutls_ext_register(const char *name, int id, tmp_mod->deinit_func = deinit_func; tmp_mod->pack_func = pack_func; tmp_mod->unpack_func = unpack_func; - tmp_mod->validity = - GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO | - GNUTLS_EXT_FLAG_EE | GNUTLS_EXT_FLAG_DTLS | GNUTLS_EXT_FLAG_TLS; + tmp_mod->validity = GNUTLS_EXT_FLAG_CLIENT_HELLO | + GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO | + GNUTLS_EXT_FLAG_EE | GNUTLS_EXT_FLAG_DTLS | + GNUTLS_EXT_FLAG_TLS; assert(extfunc[gid] == NULL); extfunc[gid] = tmp_mod; @@ -897,9 +876,10 @@ gnutls_ext_register(const char *name, int id, return 0; } -#define VALIDITY_MASK (GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO | \ - GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO | \ - GNUTLS_EXT_FLAG_EE | GNUTLS_EXT_FLAG_HRR) +#define VALIDITY_MASK \ + (GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO | \ + GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO | GNUTLS_EXT_FLAG_EE | \ + GNUTLS_EXT_FLAG_HRR) /** * gnutls_session_ext_register: @@ -935,15 +915,14 @@ gnutls_ext_register(const char *name, int id, * * Since: 3.5.5 **/ -int -gnutls_session_ext_register(gnutls_session_t session, - const char *name, int id, - gnutls_ext_parse_type_t parse_point, - gnutls_ext_recv_func recv_func, - gnutls_ext_send_func send_func, - gnutls_ext_deinit_data_func deinit_func, - gnutls_ext_pack_func pack_func, - gnutls_ext_unpack_func unpack_func, unsigned flags) +int gnutls_session_ext_register(gnutls_session_t session, const char *name, + int id, gnutls_ext_parse_type_t parse_point, + gnutls_ext_recv_func recv_func, + gnutls_ext_send_func send_func, + gnutls_ext_deinit_data_func deinit_func, + gnutls_ext_pack_func pack_func, + gnutls_ext_unpack_func unpack_func, + unsigned flags) { hello_ext_entry_st tmp_mod; hello_ext_entry_st *exts; @@ -958,13 +937,11 @@ gnutls_session_ext_register(gnutls_session_t session, if (extfunc[i]->tls_id == id) { if (!(flags & GNUTLS_EXT_FLAG_OVERRIDE_INTERNAL)) { - return - gnutls_assert_val - (GNUTLS_E_ALREADY_REGISTERED); + return gnutls_assert_val( + GNUTLS_E_ALREADY_REGISTERED); } else if (extfunc[i]->cannot_be_overriden) { - return - gnutls_assert_val - (GNUTLS_E_ALREADY_REGISTERED); + return gnutls_assert_val( + GNUTLS_E_ALREADY_REGISTERED); } break; } @@ -1000,9 +977,9 @@ gnutls_session_ext_register(gnutls_session_t session, tmp_mod.validity = flags; if ((tmp_mod.validity & VALIDITY_MASK) == 0) { - tmp_mod.validity = - GNUTLS_EXT_FLAG_CLIENT_HELLO | - GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO | GNUTLS_EXT_FLAG_EE; + tmp_mod.validity = GNUTLS_EXT_FLAG_CLIENT_HELLO | + GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO | + GNUTLS_EXT_FLAG_EE; } if ((tmp_mod.validity & (GNUTLS_EXT_FLAG_DTLS | GNUTLS_EXT_FLAG_TLS)) == @@ -1045,9 +1022,8 @@ gnutls_session_ext_register(gnutls_session_t session, * * Since: 3.4.0 **/ -void -gnutls_ext_set_data(gnutls_session_t session, unsigned tls_id, - gnutls_ext_priv_data_t data) +void gnutls_ext_set_data(gnutls_session_t session, unsigned tls_id, + gnutls_ext_priv_data_t data) { unsigned id = tls_id_to_gid(session, tls_id); if (id == GNUTLS_EXTENSION_INVALID) @@ -1068,9 +1044,8 @@ gnutls_ext_set_data(gnutls_session_t session, unsigned tls_id, * * Since: 3.4.0 **/ -int -gnutls_ext_get_data(gnutls_session_t session, - unsigned tls_id, gnutls_ext_priv_data_t * data) +int gnutls_ext_get_data(gnutls_session_t session, unsigned tls_id, + gnutls_ext_priv_data_t *data) { unsigned id = tls_id_to_gid(session, tls_id); if (id == GNUTLS_EXTENSION_INVALID) diff --git a/lib/hello_ext.h b/lib/hello_ext.h index aa342d9a9c..c7d28e2b71 100644 --- a/lib/hello_ext.h +++ b/lib/hello_ext.h @@ -22,20 +22,20 @@ */ #ifndef GNUTLS_LIB_HELLO_EXT_H -# define GNUTLS_LIB_HELLO_EXT_H +#define GNUTLS_LIB_HELLO_EXT_H -# include "gnutls_int.h" -# include -# include "str.h" +#include "gnutls_int.h" +#include +#include "str.h" /* Functions for hello extension parsing. */ int _gnutls_parse_hello_extensions(gnutls_session_t session, gnutls_ext_flags_t msg, gnutls_ext_parse_type_t parse_type, - const uint8_t * data, int data_size); + const uint8_t *data, int data_size); int _gnutls_gen_hello_extensions(gnutls_session_t session, - gnutls_buffer_st * extdata, + gnutls_buffer_st *extdata, gnutls_ext_flags_t msg, gnutls_ext_parse_type_t); int _gnutls_hello_ext_init(void); @@ -52,14 +52,17 @@ int _gnutls_hello_ext_get_priv(gnutls_session_t session, extensions_t ext, gnutls_ext_priv_data_t *); int _gnutls_hello_ext_get_resumed_priv(gnutls_session_t session, extensions_t ext, - gnutls_ext_priv_data_t * data); + gnutls_ext_priv_data_t *data); -# define GNUTLS_EXT_FLAG_MSG_MASK (GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO| \ - GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO | GNUTLS_EXT_FLAG_EE | GNUTLS_EXT_FLAG_HRR) +#define GNUTLS_EXT_FLAG_MSG_MASK \ + (GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO | \ + GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO | GNUTLS_EXT_FLAG_EE | \ + GNUTLS_EXT_FLAG_HRR) /* these flags can only be set in the extensions, but cannot be requested; * they are handled internally by the hello parsing/generating functions. */ -# define GNUTLS_EXT_FLAG_SET_ONLY_FLAGS_MASK ~(GNUTLS_EXT_FLAG_DTLS | GNUTLS_EXT_FLAG_TLS) +#define GNUTLS_EXT_FLAG_SET_ONLY_FLAGS_MASK \ + ~(GNUTLS_EXT_FLAG_DTLS | GNUTLS_EXT_FLAG_TLS) /* obtain the message this extension was received at */ inline static gnutls_ext_flags_t _gnutls_ext_get_msg(gnutls_session_t session) @@ -85,14 +88,14 @@ inline static int _gnutls_ext_get_extensions_offset(gnutls_session_t session) } int _gnutls_ext_set_full_client_hello(gnutls_session_t session, - handshake_buffer_st * recv_buf); + handshake_buffer_st *recv_buf); unsigned _gnutls_ext_get_full_client_hello(gnutls_session_t session, - gnutls_datum_t * datum); + gnutls_datum_t *datum); /* for session packing */ -int _gnutls_hello_ext_pack(gnutls_session_t session, gnutls_buffer_st * packed); +int _gnutls_hello_ext_pack(gnutls_session_t session, gnutls_buffer_st *packed); int _gnutls_hello_ext_unpack(gnutls_session_t session, - gnutls_buffer_st * packed); + gnutls_buffer_st *packed); inline static const char *ext_msg_validity_to_str(gnutls_ext_flags_t msg) { @@ -115,15 +118,15 @@ inline static const char *ext_msg_validity_to_str(gnutls_ext_flags_t msg) } typedef struct hello_ext_entry_st { - const char *name; /* const overridden when free_struct is set */ + const char *name; /* const overridden when free_struct is set */ unsigned free_struct; uint16_t tls_id; - unsigned gid; /* gnutls internal ID */ + unsigned gid; /* gnutls internal ID */ gnutls_ext_parse_type_t client_parse_point; gnutls_ext_parse_type_t server_parse_point; - unsigned validity; /* multiple items of gnutls_ext_flags_t */ + unsigned validity; /* multiple items of gnutls_ext_flags_t */ /* this function must return 0 when Not Applicable * size of extension data if ok @@ -138,11 +141,13 @@ typedef struct hello_ext_entry_st { */ gnutls_ext_send_func send_func; - gnutls_ext_deinit_data_func deinit_func; /* this will be called to deinitialize + gnutls_ext_deinit_data_func + deinit_func; /* this will be called to deinitialize * internal data */ - gnutls_ext_pack_func pack_func; /* packs internal data to machine independent format */ - gnutls_ext_unpack_func unpack_func; /* unpacks internal data */ + gnutls_ext_pack_func + pack_func; /* packs internal data to machine independent format */ + gnutls_ext_unpack_func unpack_func; /* unpacks internal data */ /* non-zero if that extension cannot be overridden by the applications. * That should be set to extensions which allocate data early, e.g., on @@ -157,10 +162,10 @@ typedef struct hello_ext_entry_st { * * It returns non-zero for true, otherwise zero. */ -inline static unsigned -_gnutls_hello_ext_is_present(gnutls_session_t session, extensions_t id) +inline static unsigned _gnutls_hello_ext_is_present(gnutls_session_t session, + extensions_t id) { - if (session->internals.used_exts & ((ext_track_t) 1 << id)) + if (session->internals.used_exts & ((ext_track_t)1 << id)) return 1; return 0; @@ -175,23 +180,22 @@ _gnutls_hello_ext_is_present(gnutls_session_t session, extensions_t id) * * Returns zero if failed, non-zero on success. */ -inline static -unsigned _gnutls_hello_ext_save(gnutls_session_t session, - extensions_t id, unsigned check_dup) +inline static unsigned _gnutls_hello_ext_save(gnutls_session_t session, + extensions_t id, + unsigned check_dup) { if (check_dup && _gnutls_hello_ext_is_present(session, id)) { return 0; } - session->internals.used_exts |= ((ext_track_t) 1 << id); + session->internals.used_exts |= ((ext_track_t)1 << id); return 1; } -inline static -void _gnutls_hello_ext_save_sr(gnutls_session_t session) +inline static void _gnutls_hello_ext_save_sr(gnutls_session_t session) { _gnutls_hello_ext_save(session, GNUTLS_EXTENSION_SAFE_RENEGOTIATION, 1); } -#endif /* GNUTLS_LIB_HELLO_EXT_H */ +#endif /* GNUTLS_LIB_HELLO_EXT_H */ diff --git a/lib/hello_ext_lib.c b/lib/hello_ext_lib.c index 84023b6a6b..e1b8ea6f3b 100644 --- a/lib/hello_ext_lib.c +++ b/lib/hello_ext_lib.c @@ -37,9 +37,8 @@ void _gnutls_hello_ext_default_deinit(gnutls_ext_priv_data_t priv) * * This also prevents and errors on duplicate entries. */ -int -_gnutls_hello_ext_set_datum(gnutls_session_t session, - extensions_t id, const gnutls_datum_t * data) +int _gnutls_hello_ext_set_datum(gnutls_session_t session, extensions_t id, + const gnutls_datum_t *data) { gnutls_ext_priv_data_t epriv; @@ -54,17 +53,15 @@ _gnutls_hello_ext_set_datum(gnutls_session_t session, return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); _gnutls_write_uint16(data->size, epriv); - memcpy(((uint8_t *) epriv) + 2, data->data, data->size); + memcpy(((uint8_t *)epriv) + 2, data->data, data->size); _gnutls_hello_ext_set_priv(session, id, epriv); return 0; } -int -_gnutls_hello_ext_get_datum(gnutls_session_t session, - extensions_t id, - gnutls_datum_t * data /* constant contents */ ) +int _gnutls_hello_ext_get_datum(gnutls_session_t session, extensions_t id, + gnutls_datum_t *data /* constant contents */) { gnutls_ext_priv_data_t epriv; int ret; @@ -74,16 +71,14 @@ _gnutls_hello_ext_get_datum(gnutls_session_t session, return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; data->size = _gnutls_read_uint16(epriv); - data->data = ((uint8_t *) epriv) + 2; + data->data = ((uint8_t *)epriv) + 2; return 0; } -int -_gnutls_hello_ext_get_resumed_datum(gnutls_session_t session, - extensions_t id, - gnutls_datum_t * - data /* constant contents */ ) +int _gnutls_hello_ext_get_resumed_datum( + gnutls_session_t session, extensions_t id, + gnutls_datum_t *data /* constant contents */) { gnutls_ext_priv_data_t epriv; int ret; @@ -93,14 +88,13 @@ _gnutls_hello_ext_get_resumed_datum(gnutls_session_t session, return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; data->size = _gnutls_read_uint16(epriv); - data->data = ((uint8_t *) epriv) + 2; + data->data = ((uint8_t *)epriv) + 2; return 0; } -int -_gnutls_hello_ext_default_pack(gnutls_ext_priv_data_t epriv, - gnutls_buffer_st * ps) +int _gnutls_hello_ext_default_pack(gnutls_ext_priv_data_t epriv, + gnutls_buffer_st *ps) { size_t size; @@ -109,9 +103,8 @@ _gnutls_hello_ext_default_pack(gnutls_ext_priv_data_t epriv, return _gnutls_buffer_append_data(ps, epriv, size + 2); } -int -_gnutls_hello_ext_default_unpack(gnutls_buffer_st * ps, - gnutls_ext_priv_data_t * epriv) +int _gnutls_hello_ext_default_unpack(gnutls_buffer_st *ps, + gnutls_ext_priv_data_t *epriv) { gnutls_datum_t data; uint8_t *store; diff --git a/lib/hello_ext_lib.h b/lib/hello_ext_lib.h index c0eb0655ca..35e0c85eba 100644 --- a/lib/hello_ext_lib.h +++ b/lib/hello_ext_lib.h @@ -21,32 +21,27 @@ */ #ifndef GNUTLS_LIB_HELLO_EXT_LIB_H -# define GNUTLS_LIB_HELLO_EXT_LIB_H +#define GNUTLS_LIB_HELLO_EXT_LIB_H -# include -# include "hello_ext.h" +#include +#include "hello_ext.h" /* Functions to use at the send() or recv() extension function to temporarily * store and retrieve data related to the extension. */ -int -_gnutls_hello_ext_set_datum(gnutls_session_t session, - extensions_t id, const gnutls_datum_t * data); -int -_gnutls_hello_ext_get_datum(gnutls_session_t session, - extensions_t id, - gnutls_datum_t * data /* constant contents */ ); +int _gnutls_hello_ext_set_datum(gnutls_session_t session, extensions_t id, + const gnutls_datum_t *data); +int _gnutls_hello_ext_get_datum(gnutls_session_t session, extensions_t id, + gnutls_datum_t *data /* constant contents */); -int -_gnutls_hello_ext_get_resumed_datum(gnutls_session_t session, - extensions_t id, - gnutls_datum_t * - data /* constant contents */ ); +int _gnutls_hello_ext_get_resumed_datum( + gnutls_session_t session, extensions_t id, + gnutls_datum_t *data /* constant contents */); /* clear up any set data for the extension */ -# if 0 /* defined in hello_ext.h */ +#if 0 /* defined in hello_ext.h */ void _gnutls_hello_ext_unset_priv(gnutls_session_t session, extensions_t id); -# endif +#endif /* Function that will deinitialize the temporal data. Must be set * as the deinit_func in the hello_ext_entry_st if the functions above @@ -59,12 +54,10 @@ void _gnutls_hello_ext_default_deinit(gnutls_ext_priv_data_t priv); * of hello_ext_entry_st if the set and get functions above are used, * and data must be accessible on resumed sessions. */ -int -_gnutls_hello_ext_default_pack(gnutls_ext_priv_data_t epriv, - gnutls_buffer_st * ps); +int _gnutls_hello_ext_default_pack(gnutls_ext_priv_data_t epriv, + gnutls_buffer_st *ps); -int -_gnutls_hello_ext_default_unpack(gnutls_buffer_st * ps, - gnutls_ext_priv_data_t * epriv); +int _gnutls_hello_ext_default_unpack(gnutls_buffer_st *ps, + gnutls_ext_priv_data_t *epriv); -#endif /* GNUTLS_LIB_HELLO_EXT_LIB_H */ +#endif /* GNUTLS_LIB_HELLO_EXT_LIB_H */ diff --git a/lib/includes/gnutls/abstract.h b/lib/includes/gnutls/abstract.h index b3c6ed969b..641d72012d 100644 --- a/lib/includes/gnutls/abstract.h +++ b/lib/includes/gnutls/abstract.h @@ -22,13 +22,13 @@ */ #ifndef GNUTLS_ABSTRACT_H -# define GNUTLS_ABSTRACT_H +#define GNUTLS_ABSTRACT_H -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include #ifdef __cplusplus extern "C" { @@ -36,7 +36,7 @@ extern "C" { /* Public key operations */ -# define GNUTLS_PUBKEY_VERIFY_FLAG_TLS_RSA GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA +#define GNUTLS_PUBKEY_VERIFY_FLAG_TLS_RSA GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA /** * gnutls_pubkey_flags: * @GNUTLS_PUBKEY_DISABLE_CALLBACKS: The following flag disables call to PIN callbacks. Only @@ -60,21 +60,19 @@ typedef enum gnutls_abstract_export_flags { GNUTLS_EXPORT_FLAG_NO_LZ = 1 } gnutls_abstract_export_flags_t; -# define GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA GNUTLS_VERIFY_USE_TLS1_RSA +#define GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA GNUTLS_VERIFY_USE_TLS1_RSA -typedef int (*gnutls_privkey_sign_func)(gnutls_privkey_t key, - void *userdata, - const gnutls_datum_t * raw_data, - gnutls_datum_t * signature); +typedef int (*gnutls_privkey_sign_func)(gnutls_privkey_t key, void *userdata, + const gnutls_datum_t *raw_data, + gnutls_datum_t *signature); -typedef int (*gnutls_privkey_decrypt_func)(gnutls_privkey_t key, - void *userdata, - const gnutls_datum_t * ciphertext, - gnutls_datum_t * plaintext); +typedef int (*gnutls_privkey_decrypt_func)(gnutls_privkey_t key, void *userdata, + const gnutls_datum_t *ciphertext, + gnutls_datum_t *plaintext); typedef int (*gnutls_privkey_decrypt_func2)(gnutls_privkey_t key, void *userdata, - const gnutls_datum_t * ciphertext, + const gnutls_datum_t *ciphertext, unsigned char *plaintext, size_t plaintext_size); @@ -86,10 +84,9 @@ typedef int (*gnutls_privkey_decrypt_func2)(gnutls_privkey_t key, */ typedef int (*gnutls_privkey_sign_hash_func)(gnutls_privkey_t key, gnutls_sign_algorithm_t algo, - void *userdata, - unsigned int flags, - const gnutls_datum_t * hash, - gnutls_datum_t * signature); + void *userdata, unsigned int flags, + const gnutls_datum_t *hash, + gnutls_datum_t *signature); /* to be called to sign data. The input data will be * the data to be signed (and hashed), with the provided @@ -98,34 +95,33 @@ typedef int (*gnutls_privkey_sign_hash_func)(gnutls_privkey_t key, */ typedef int (*gnutls_privkey_sign_data_func)(gnutls_privkey_t key, gnutls_sign_algorithm_t algo, - void *userdata, - unsigned int flags, - const gnutls_datum_t * data, - gnutls_datum_t * signature); + void *userdata, unsigned int flags, + const gnutls_datum_t *data, + gnutls_datum_t *signature); typedef void (*gnutls_privkey_deinit_func)(gnutls_privkey_t key, void *userdata); -# define GNUTLS_SIGN_ALGO_TO_FLAGS(sig) (unsigned int)((sig)<<20) -# define GNUTLS_FLAGS_TO_SIGN_ALGO(flags) (unsigned int)((flags)>>20) +#define GNUTLS_SIGN_ALGO_TO_FLAGS(sig) (unsigned int)((sig) << 20) +#define GNUTLS_FLAGS_TO_SIGN_ALGO(flags) (unsigned int)((flags) >> 20) /* Should return the public key algorithm (gnutls_pk_algorithm_t) */ -# define GNUTLS_PRIVKEY_INFO_PK_ALGO 1 +#define GNUTLS_PRIVKEY_INFO_PK_ALGO 1 /* Should return the preferred signature algorithm (gnutls_sign_algorithm_t) or 0. */ -# define GNUTLS_PRIVKEY_INFO_SIGN_ALGO (1<<1) +#define GNUTLS_PRIVKEY_INFO_SIGN_ALGO (1 << 1) /* Should return true (1) or false (0) if the provided sign algorithm * (obtained with GNUTLS_FLAGS_TO_SIGN_ALGO) is supported. */ -# define GNUTLS_PRIVKEY_INFO_HAVE_SIGN_ALGO (1<<2) +#define GNUTLS_PRIVKEY_INFO_HAVE_SIGN_ALGO (1 << 2) /* Should return the number of bits of the public key algorithm (required for RSA-PSS) * It is the value that should be returned by gnutls_pubkey_get_pk_algorithm() */ -# define GNUTLS_PRIVKEY_INFO_PK_ALGO_BITS (1<<3) +#define GNUTLS_PRIVKEY_INFO_PK_ALGO_BITS (1 << 3) /* returns information on the public key associated with userdata */ typedef int (*gnutls_privkey_info_func)(gnutls_privkey_t key, unsigned int flags, void *userdata); -int gnutls_pubkey_init(gnutls_pubkey_t * key); +int gnutls_pubkey_init(gnutls_pubkey_t *key); void gnutls_pubkey_deinit(gnutls_pubkey_t key); int gnutls_pubkey_verify_params(gnutls_pubkey_t key); @@ -135,209 +131,173 @@ void gnutls_pubkey_set_pin_function(gnutls_pubkey_t key, int gnutls_pubkey_get_pk_algorithm(gnutls_pubkey_t key, unsigned int *bits); -int -gnutls_pubkey_set_spki(gnutls_pubkey_t key, - const gnutls_x509_spki_t spki, unsigned int flags); +int gnutls_pubkey_set_spki(gnutls_pubkey_t key, const gnutls_x509_spki_t spki, + unsigned int flags); -int -gnutls_pubkey_get_spki(gnutls_pubkey_t key, - const gnutls_x509_spki_t spki, unsigned int flags); +int gnutls_pubkey_get_spki(gnutls_pubkey_t key, const gnutls_x509_spki_t spki, + unsigned int flags); -int gnutls_pubkey_import_x509(gnutls_pubkey_t key, - gnutls_x509_crt_t crt, unsigned int flags); -int gnutls_pubkey_import_x509_crq(gnutls_pubkey_t key, - gnutls_x509_crq_t crq, unsigned int flags); -int gnutls_pubkey_import_pkcs11(gnutls_pubkey_t key, - gnutls_pkcs11_obj_t obj, unsigned int flags); -int gnutls_pubkey_import_openpgp(gnutls_pubkey_t key, - gnutls_openpgp_crt_t crt, unsigned int flags); +int gnutls_pubkey_import_x509(gnutls_pubkey_t key, gnutls_x509_crt_t crt, + unsigned int flags); +int gnutls_pubkey_import_x509_crq(gnutls_pubkey_t key, gnutls_x509_crq_t crq, + unsigned int flags); +int gnutls_pubkey_import_pkcs11(gnutls_pubkey_t key, gnutls_pkcs11_obj_t obj, + unsigned int flags); +int gnutls_pubkey_import_openpgp(gnutls_pubkey_t key, gnutls_openpgp_crt_t crt, + unsigned int flags); int gnutls_pubkey_import_openpgp_raw(gnutls_pubkey_t pkey, - const gnutls_datum_t * data, - gnutls_openpgp_crt_fmt_t - format, - const gnutls_openpgp_keyid_t - keyid, unsigned int flags); + const gnutls_datum_t *data, + gnutls_openpgp_crt_fmt_t format, + const gnutls_openpgp_keyid_t keyid, + unsigned int flags); int gnutls_pubkey_import_x509_raw(gnutls_pubkey_t pkey, - const gnutls_datum_t * data, + const gnutls_datum_t *data, gnutls_x509_crt_fmt_t format, unsigned int flags); -int -gnutls_pubkey_import_privkey(gnutls_pubkey_t key, - gnutls_privkey_t pkey, - unsigned int usage, unsigned int flags); +int gnutls_pubkey_import_privkey(gnutls_pubkey_t key, gnutls_privkey_t pkey, + unsigned int usage, unsigned int flags); -int -gnutls_pubkey_import_tpm_url(gnutls_pubkey_t pkey, - const char *url, - const char *srk_password, unsigned int flags); +int gnutls_pubkey_import_tpm_url(gnutls_pubkey_t pkey, const char *url, + const char *srk_password, unsigned int flags); -int -gnutls_pubkey_import_url(gnutls_pubkey_t key, const char *url, - unsigned int flags); +int gnutls_pubkey_import_url(gnutls_pubkey_t key, const char *url, + unsigned int flags); -int -gnutls_pubkey_import_tpm_raw(gnutls_pubkey_t pkey, - const gnutls_datum_t * fdata, - gnutls_tpmkey_fmt_t format, - const char *srk_password, unsigned int flags); +int gnutls_pubkey_import_tpm_raw(gnutls_pubkey_t pkey, + const gnutls_datum_t *fdata, + gnutls_tpmkey_fmt_t format, + const char *srk_password, unsigned int flags); int gnutls_pubkey_get_preferred_hash_algorithm(gnutls_pubkey_t key, - gnutls_digest_algorithm_t - * hash, unsigned int *mand); + gnutls_digest_algorithm_t *hash, + unsigned int *mand); -# define gnutls_pubkey_get_pk_rsa_raw gnutls_pubkey_export_rsa_raw -int gnutls_pubkey_export_rsa_raw(gnutls_pubkey_t key, - gnutls_datum_t * m, gnutls_datum_t * e); +#define gnutls_pubkey_get_pk_rsa_raw gnutls_pubkey_export_rsa_raw +int gnutls_pubkey_export_rsa_raw(gnutls_pubkey_t key, gnutls_datum_t *m, + gnutls_datum_t *e); -int gnutls_pubkey_export_rsa_raw2(gnutls_pubkey_t key, - gnutls_datum_t * m, gnutls_datum_t * e, - unsigned flags); +int gnutls_pubkey_export_rsa_raw2(gnutls_pubkey_t key, gnutls_datum_t *m, + gnutls_datum_t *e, unsigned flags); -# define gnutls_pubkey_get_pk_dsa_raw gnutls_pubkey_export_dsa_raw -int gnutls_pubkey_export_dsa_raw(gnutls_pubkey_t key, - gnutls_datum_t * p, - gnutls_datum_t * q, - gnutls_datum_t * g, gnutls_datum_t * y); +#define gnutls_pubkey_get_pk_dsa_raw gnutls_pubkey_export_dsa_raw +int gnutls_pubkey_export_dsa_raw(gnutls_pubkey_t key, gnutls_datum_t *p, + gnutls_datum_t *q, gnutls_datum_t *g, + gnutls_datum_t *y); -int gnutls_pubkey_export_dsa_raw2(gnutls_pubkey_t key, - gnutls_datum_t * p, - gnutls_datum_t * q, - gnutls_datum_t * g, gnutls_datum_t * y, - unsigned flags); +int gnutls_pubkey_export_dsa_raw2(gnutls_pubkey_t key, gnutls_datum_t *p, + gnutls_datum_t *q, gnutls_datum_t *g, + gnutls_datum_t *y, unsigned flags); int gnutls_pubkey_export_ecc_raw2(gnutls_pubkey_t key, - gnutls_ecc_curve_t * curve, - gnutls_datum_t * x, gnutls_datum_t * y, - unsigned flags); + gnutls_ecc_curve_t *curve, gnutls_datum_t *x, + gnutls_datum_t *y, unsigned flags); int gnutls_pubkey_export_gost_raw2(gnutls_pubkey_t key, - gnutls_ecc_curve_t * curve, - gnutls_digest_algorithm_t * digest, - gnutls_gost_paramset_t * paramset, - gnutls_datum_t * x, gnutls_datum_t * y, + gnutls_ecc_curve_t *curve, + gnutls_digest_algorithm_t *digest, + gnutls_gost_paramset_t *paramset, + gnutls_datum_t *x, gnutls_datum_t *y, unsigned int flags); -# define gnutls_pubkey_get_pk_ecc_raw gnutls_pubkey_export_ecc_raw -int gnutls_pubkey_export_ecc_raw(gnutls_pubkey_t key, - gnutls_ecc_curve_t * curve, - gnutls_datum_t * x, gnutls_datum_t * y); +#define gnutls_pubkey_get_pk_ecc_raw gnutls_pubkey_export_ecc_raw +int gnutls_pubkey_export_ecc_raw(gnutls_pubkey_t key, gnutls_ecc_curve_t *curve, + gnutls_datum_t *x, gnutls_datum_t *y); -# define gnutls_pubkey_get_pk_ecc_x962 gnutls_pubkey_export_ecc_x962 +#define gnutls_pubkey_get_pk_ecc_x962 gnutls_pubkey_export_ecc_x962 int gnutls_pubkey_export_ecc_x962(gnutls_pubkey_t key, - gnutls_datum_t * parameters, - gnutls_datum_t * ecpoint); + gnutls_datum_t *parameters, + gnutls_datum_t *ecpoint); -int gnutls_pubkey_export(gnutls_pubkey_t key, - gnutls_x509_crt_fmt_t format, +int gnutls_pubkey_export(gnutls_pubkey_t key, gnutls_x509_crt_fmt_t format, void *output_data, size_t *output_data_size); -int gnutls_pubkey_export2(gnutls_pubkey_t key, - gnutls_x509_crt_fmt_t format, gnutls_datum_t * out); +int gnutls_pubkey_export2(gnutls_pubkey_t key, gnutls_x509_crt_fmt_t format, + gnutls_datum_t *out); -int gnutls_pubkey_get_key_id(gnutls_pubkey_t key, - unsigned int flags, +int gnutls_pubkey_get_key_id(gnutls_pubkey_t key, unsigned int flags, unsigned char *output_data, size_t *output_data_size); -int -gnutls_pubkey_get_openpgp_key_id(gnutls_pubkey_t key, - unsigned int flags, - unsigned char *output_data, - size_t *output_data_size, - unsigned int *subkey); +int gnutls_pubkey_get_openpgp_key_id(gnutls_pubkey_t key, unsigned int flags, + unsigned char *output_data, + size_t *output_data_size, + unsigned int *subkey); int gnutls_pubkey_get_key_usage(gnutls_pubkey_t key, unsigned int *usage); int gnutls_pubkey_set_key_usage(gnutls_pubkey_t key, unsigned int usage); -int gnutls_pubkey_import(gnutls_pubkey_t key, - const gnutls_datum_t * data, +int gnutls_pubkey_import(gnutls_pubkey_t key, const gnutls_datum_t *data, gnutls_x509_crt_fmt_t format); -# define gnutls_pubkey_import_pkcs11_url(key, url, flags) gnutls_pubkey_import_url(key, url, flags) - -int gnutls_pubkey_import_dsa_raw(gnutls_pubkey_t key, - const gnutls_datum_t * p, - const gnutls_datum_t * q, - const gnutls_datum_t * g, - const gnutls_datum_t * y); -int gnutls_pubkey_import_rsa_raw(gnutls_pubkey_t key, - const gnutls_datum_t * m, - const gnutls_datum_t * e); - -int -gnutls_pubkey_import_ecc_x962(gnutls_pubkey_t key, - const gnutls_datum_t * parameters, - const gnutls_datum_t * ecpoint); - -int -gnutls_pubkey_import_ecc_raw(gnutls_pubkey_t key, - gnutls_ecc_curve_t curve, - const gnutls_datum_t * x, - const gnutls_datum_t * y); - -int -gnutls_pubkey_import_gost_raw(gnutls_pubkey_t key, - gnutls_ecc_curve_t curve, - gnutls_digest_algorithm_t digest, - gnutls_gost_paramset_t paramset, - const gnutls_datum_t * x, - const gnutls_datum_t * y); - -int -gnutls_pubkey_encrypt_data(gnutls_pubkey_t key, - unsigned int flags, - const gnutls_datum_t * plaintext, - gnutls_datum_t * ciphertext); +#define gnutls_pubkey_import_pkcs11_url(key, url, flags) \ + gnutls_pubkey_import_url(key, url, flags) + +int gnutls_pubkey_import_dsa_raw(gnutls_pubkey_t key, const gnutls_datum_t *p, + const gnutls_datum_t *q, + const gnutls_datum_t *g, + const gnutls_datum_t *y); +int gnutls_pubkey_import_rsa_raw(gnutls_pubkey_t key, const gnutls_datum_t *m, + const gnutls_datum_t *e); + +int gnutls_pubkey_import_ecc_x962(gnutls_pubkey_t key, + const gnutls_datum_t *parameters, + const gnutls_datum_t *ecpoint); + +int gnutls_pubkey_import_ecc_raw(gnutls_pubkey_t key, gnutls_ecc_curve_t curve, + const gnutls_datum_t *x, + const gnutls_datum_t *y); + +int gnutls_pubkey_import_gost_raw(gnutls_pubkey_t key, gnutls_ecc_curve_t curve, + gnutls_digest_algorithm_t digest, + gnutls_gost_paramset_t paramset, + const gnutls_datum_t *x, + const gnutls_datum_t *y); + +int gnutls_pubkey_encrypt_data(gnutls_pubkey_t key, unsigned int flags, + const gnutls_datum_t *plaintext, + gnutls_datum_t *ciphertext); int gnutls_x509_crt_set_pubkey(gnutls_x509_crt_t crt, gnutls_pubkey_t key); int gnutls_x509_crq_set_pubkey(gnutls_x509_crq_t crq, gnutls_pubkey_t key); -int -gnutls_pubkey_verify_hash2(gnutls_pubkey_t key, - gnutls_sign_algorithm_t algo, - unsigned int flags, - const gnutls_datum_t * hash, - const gnutls_datum_t * signature); +int gnutls_pubkey_verify_hash2(gnutls_pubkey_t key, + gnutls_sign_algorithm_t algo, unsigned int flags, + const gnutls_datum_t *hash, + const gnutls_datum_t *signature); -int -gnutls_pubkey_verify_data2(gnutls_pubkey_t pubkey, - gnutls_sign_algorithm_t algo, - unsigned int flags, - const gnutls_datum_t * data, - const gnutls_datum_t * signature); +int gnutls_pubkey_verify_data2(gnutls_pubkey_t pubkey, + gnutls_sign_algorithm_t algo, unsigned int flags, + const gnutls_datum_t *data, + const gnutls_datum_t *signature); /* Private key operations */ -int gnutls_privkey_init(gnutls_privkey_t * key); +int gnutls_privkey_init(gnutls_privkey_t *key); void gnutls_privkey_deinit(gnutls_privkey_t key); /* macros to allow specifying a subgroup and group size in gnutls_privkey_generate() * and gnutls_x509_privkey_generate() */ -# define GNUTLS_SUBGROUP_TO_BITS(group, subgroup) (unsigned int)((subgroup<<16)|(group)) -# define GNUTLS_BITS_TO_SUBGROUP(bits) ((bits >> 16) & 0xFFFF) -# define GNUTLS_BITS_TO_GROUP(bits) (bits & 0xFFFF) -# define GNUTLS_BITS_HAVE_SUBGROUP(bits) ((bits) & 0xFFFF0000) - -int -gnutls_privkey_generate(gnutls_privkey_t key, - gnutls_pk_algorithm_t algo, unsigned int bits, - unsigned int flags); -int -gnutls_privkey_generate2(gnutls_privkey_t pkey, - gnutls_pk_algorithm_t algo, unsigned int bits, - unsigned int flags, const gnutls_keygen_data_st * data, - unsigned data_size); - -int -gnutls_privkey_set_spki(gnutls_privkey_t key, - const gnutls_x509_spki_t spki, unsigned int flags); - -int -gnutls_privkey_get_spki(gnutls_privkey_t key, - const gnutls_x509_spki_t spki, unsigned int flags); +#define GNUTLS_SUBGROUP_TO_BITS(group, subgroup) \ + (unsigned int)((subgroup << 16) | (group)) +#define GNUTLS_BITS_TO_SUBGROUP(bits) ((bits >> 16) & 0xFFFF) +#define GNUTLS_BITS_TO_GROUP(bits) (bits & 0xFFFF) +#define GNUTLS_BITS_HAVE_SUBGROUP(bits) ((bits)&0xFFFF0000) + +int gnutls_privkey_generate(gnutls_privkey_t key, gnutls_pk_algorithm_t algo, + unsigned int bits, unsigned int flags); +int gnutls_privkey_generate2(gnutls_privkey_t pkey, gnutls_pk_algorithm_t algo, + unsigned int bits, unsigned int flags, + const gnutls_keygen_data_st *data, + unsigned data_size); + +int gnutls_privkey_set_spki(gnutls_privkey_t key, const gnutls_x509_spki_t spki, + unsigned int flags); + +int gnutls_privkey_get_spki(gnutls_privkey_t key, const gnutls_x509_spki_t spki, + unsigned int flags); int gnutls_privkey_verify_seed(gnutls_privkey_t key, gnutls_digest_algorithm_t, const void *seed, size_t seed_size); @@ -398,208 +358,174 @@ typedef enum gnutls_privkey_flags { int gnutls_privkey_import_pkcs11(gnutls_privkey_t pkey, gnutls_pkcs11_privkey_t key, unsigned int flags); -int gnutls_privkey_import_x509(gnutls_privkey_t pkey, - gnutls_x509_privkey_t key, unsigned int flags); +int gnutls_privkey_import_x509(gnutls_privkey_t pkey, gnutls_x509_privkey_t key, + unsigned int flags); int gnutls_privkey_import_openpgp(gnutls_privkey_t pkey, gnutls_openpgp_privkey_t key, unsigned int flags); int gnutls_privkey_export_x509(gnutls_privkey_t pkey, - gnutls_x509_privkey_t * key); + gnutls_x509_privkey_t *key); int gnutls_privkey_export_openpgp(gnutls_privkey_t pkey, - gnutls_openpgp_privkey_t * key); -int -gnutls_privkey_export_pkcs11(gnutls_privkey_t pkey, - gnutls_pkcs11_privkey_t * key); + gnutls_openpgp_privkey_t *key); +int gnutls_privkey_export_pkcs11(gnutls_privkey_t pkey, + gnutls_pkcs11_privkey_t *key); int gnutls_privkey_import_openpgp_raw(gnutls_privkey_t pkey, - const gnutls_datum_t * data, - gnutls_openpgp_crt_fmt_t - format, - const gnutls_openpgp_keyid_t - keyid, const char *password); + const gnutls_datum_t *data, + gnutls_openpgp_crt_fmt_t format, + const gnutls_openpgp_keyid_t keyid, + const char *password); int gnutls_privkey_import_x509_raw(gnutls_privkey_t pkey, - const gnutls_datum_t * data, + const gnutls_datum_t *data, gnutls_x509_crt_fmt_t format, const char *password, unsigned int flags); -int -gnutls_privkey_import_tpm_raw(gnutls_privkey_t pkey, - const gnutls_datum_t * fdata, - gnutls_tpmkey_fmt_t format, - const char *srk_password, - const char *key_password, unsigned int flags); +int gnutls_privkey_import_tpm_raw(gnutls_privkey_t pkey, + const gnutls_datum_t *fdata, + gnutls_tpmkey_fmt_t format, + const char *srk_password, + const char *key_password, unsigned int flags); -int -gnutls_privkey_import_tpm_url(gnutls_privkey_t pkey, - const char *url, - const char *srk_password, - const char *key_password, unsigned int flags); +int gnutls_privkey_import_tpm_url(gnutls_privkey_t pkey, const char *url, + const char *srk_password, + const char *key_password, unsigned int flags); -int gnutls_privkey_import_url(gnutls_privkey_t key, - const char *url, unsigned int flags); +int gnutls_privkey_import_url(gnutls_privkey_t key, const char *url, + unsigned int flags); -# if 0 +#if 0 /* for documentation purposes */ int gnutls_privkey_import_pkcs11_url(gnutls_privkey_t key, const char *url); -# endif - -# define gnutls_privkey_import_pkcs11_url(key, url) gnutls_privkey_import_url(key, url, 0) - -int -gnutls_privkey_import_ext(gnutls_privkey_t pkey, - gnutls_pk_algorithm_t pk, - void *userdata, - gnutls_privkey_sign_func sign_func, - gnutls_privkey_decrypt_func - decrypt_func, unsigned int flags); - -int -gnutls_privkey_import_ext2(gnutls_privkey_t pkey, - gnutls_pk_algorithm_t pk, - void *userdata, - gnutls_privkey_sign_func sign_func, - gnutls_privkey_decrypt_func - decrypt_func, - gnutls_privkey_deinit_func deinit_func, - unsigned int flags); - -int -gnutls_privkey_import_ext3(gnutls_privkey_t pkey, - void *userdata, - gnutls_privkey_sign_func sign_func, - gnutls_privkey_decrypt_func decrypt_func, - gnutls_privkey_deinit_func deinit_func, - gnutls_privkey_info_func info_func, - unsigned int flags); - -int -gnutls_privkey_import_ext4(gnutls_privkey_t pkey, - void *userdata, - gnutls_privkey_sign_data_func sign_data_func, - gnutls_privkey_sign_hash_func sign_hash_func, - gnutls_privkey_decrypt_func decrypt_func, - gnutls_privkey_deinit_func deinit_func, - gnutls_privkey_info_func info_func, - unsigned int flags); +#endif -int gnutls_privkey_import_dsa_raw(gnutls_privkey_t key, - const gnutls_datum_t * p, - const gnutls_datum_t * q, - const gnutls_datum_t * g, - const gnutls_datum_t * y, - const gnutls_datum_t * x); - -int gnutls_privkey_import_rsa_raw(gnutls_privkey_t key, - const gnutls_datum_t * m, - const gnutls_datum_t * e, - const gnutls_datum_t * d, - const gnutls_datum_t * p, - const gnutls_datum_t * q, - const gnutls_datum_t * u, - const gnutls_datum_t * e1, - const gnutls_datum_t * e2); +#define gnutls_privkey_import_pkcs11_url(key, url) \ + gnutls_privkey_import_url(key, url, 0) + +int gnutls_privkey_import_ext(gnutls_privkey_t pkey, gnutls_pk_algorithm_t pk, + void *userdata, + gnutls_privkey_sign_func sign_func, + gnutls_privkey_decrypt_func decrypt_func, + unsigned int flags); + +int gnutls_privkey_import_ext2(gnutls_privkey_t pkey, gnutls_pk_algorithm_t pk, + void *userdata, + gnutls_privkey_sign_func sign_func, + gnutls_privkey_decrypt_func decrypt_func, + gnutls_privkey_deinit_func deinit_func, + unsigned int flags); + +int gnutls_privkey_import_ext3(gnutls_privkey_t pkey, void *userdata, + gnutls_privkey_sign_func sign_func, + gnutls_privkey_decrypt_func decrypt_func, + gnutls_privkey_deinit_func deinit_func, + gnutls_privkey_info_func info_func, + unsigned int flags); + +int gnutls_privkey_import_ext4(gnutls_privkey_t pkey, void *userdata, + gnutls_privkey_sign_data_func sign_data_func, + gnutls_privkey_sign_hash_func sign_hash_func, + gnutls_privkey_decrypt_func decrypt_func, + gnutls_privkey_deinit_func deinit_func, + gnutls_privkey_info_func info_func, + unsigned int flags); + +int gnutls_privkey_import_dsa_raw(gnutls_privkey_t key, const gnutls_datum_t *p, + const gnutls_datum_t *q, + const gnutls_datum_t *g, + const gnutls_datum_t *y, + const gnutls_datum_t *x); + +int gnutls_privkey_import_rsa_raw( + gnutls_privkey_t key, const gnutls_datum_t *m, const gnutls_datum_t *e, + const gnutls_datum_t *d, const gnutls_datum_t *p, + const gnutls_datum_t *q, const gnutls_datum_t *u, + const gnutls_datum_t *e1, const gnutls_datum_t *e2); int gnutls_privkey_import_ecc_raw(gnutls_privkey_t key, gnutls_ecc_curve_t curve, - const gnutls_datum_t * x, - const gnutls_datum_t * y, - const gnutls_datum_t * k); + const gnutls_datum_t *x, + const gnutls_datum_t *y, + const gnutls_datum_t *k); int gnutls_privkey_import_gost_raw(gnutls_privkey_t key, gnutls_ecc_curve_t curve, gnutls_digest_algorithm_t digest, gnutls_gost_paramset_t paramset, - const gnutls_datum_t * x, - const gnutls_datum_t * y, - const gnutls_datum_t * k); + const gnutls_datum_t *x, + const gnutls_datum_t *y, + const gnutls_datum_t *k); int gnutls_privkey_sign_data(gnutls_privkey_t signer, - gnutls_digest_algorithm_t hash, - unsigned int flags, - const gnutls_datum_t * data, - gnutls_datum_t * signature); + gnutls_digest_algorithm_t hash, unsigned int flags, + const gnutls_datum_t *data, + gnutls_datum_t *signature); int gnutls_privkey_sign_data2(gnutls_privkey_t signer, - gnutls_sign_algorithm_t algo, - unsigned int flags, - const gnutls_datum_t * data, - gnutls_datum_t * signature); + gnutls_sign_algorithm_t algo, unsigned int flags, + const gnutls_datum_t *data, + gnutls_datum_t *signature); -# define gnutls_privkey_sign_raw_data(key, flags, data, sig) \ - gnutls_privkey_sign_hash ( key, 0, GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, data, sig) +#define gnutls_privkey_sign_raw_data(key, flags, data, sig) \ + gnutls_privkey_sign_hash(key, 0, GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, \ + data, sig) int gnutls_privkey_sign_hash(gnutls_privkey_t signer, gnutls_digest_algorithm_t hash_algo, unsigned int flags, - const gnutls_datum_t * hash_data, - gnutls_datum_t * signature); + const gnutls_datum_t *hash_data, + gnutls_datum_t *signature); int gnutls_privkey_sign_hash2(gnutls_privkey_t signer, - gnutls_sign_algorithm_t algo, - unsigned int flags, - const gnutls_datum_t * hash_data, - gnutls_datum_t * signature); - -int gnutls_privkey_decrypt_data(gnutls_privkey_t key, - unsigned int flags, - const gnutls_datum_t * ciphertext, - gnutls_datum_t * plaintext); - -int gnutls_privkey_decrypt_data2(gnutls_privkey_t key, - unsigned int flags, - const gnutls_datum_t * ciphertext, + gnutls_sign_algorithm_t algo, unsigned int flags, + const gnutls_datum_t *hash_data, + gnutls_datum_t *signature); + +int gnutls_privkey_decrypt_data(gnutls_privkey_t key, unsigned int flags, + const gnutls_datum_t *ciphertext, + gnutls_datum_t *plaintext); + +int gnutls_privkey_decrypt_data2(gnutls_privkey_t key, unsigned int flags, + const gnutls_datum_t *ciphertext, unsigned char *plaintext, size_t plaintext_size); -int -gnutls_privkey_export_rsa_raw(gnutls_privkey_t key, - gnutls_datum_t * m, gnutls_datum_t * e, - gnutls_datum_t * d, gnutls_datum_t * p, - gnutls_datum_t * q, gnutls_datum_t * u, - gnutls_datum_t * e1, gnutls_datum_t * e2); - -int -gnutls_privkey_export_rsa_raw2(gnutls_privkey_t key, - gnutls_datum_t * m, gnutls_datum_t * e, - gnutls_datum_t * d, gnutls_datum_t * p, - gnutls_datum_t * q, gnutls_datum_t * u, - gnutls_datum_t * e1, - gnutls_datum_t * e2, unsigned flags); - -int -gnutls_privkey_export_dsa_raw(gnutls_privkey_t key, - gnutls_datum_t * p, gnutls_datum_t * q, - gnutls_datum_t * g, gnutls_datum_t * y, - gnutls_datum_t * x); - -int -gnutls_privkey_export_dsa_raw2(gnutls_privkey_t key, - gnutls_datum_t * p, gnutls_datum_t * q, - gnutls_datum_t * g, gnutls_datum_t * y, - gnutls_datum_t * x, unsigned flags); - -int -gnutls_privkey_export_ecc_raw(gnutls_privkey_t key, - gnutls_ecc_curve_t * curve, - gnutls_datum_t * x, - gnutls_datum_t * y, gnutls_datum_t * k); - -int -gnutls_privkey_export_ecc_raw2(gnutls_privkey_t key, - gnutls_ecc_curve_t * curve, - gnutls_datum_t * x, - gnutls_datum_t * y, - gnutls_datum_t * k, unsigned flags); - -int -gnutls_privkey_export_gost_raw2(gnutls_privkey_t key, - gnutls_ecc_curve_t * curve, - gnutls_digest_algorithm_t * digest, - gnutls_gost_paramset_t * paramset, - gnutls_datum_t * x, - gnutls_datum_t * y, - gnutls_datum_t * k, unsigned flags); +int gnutls_privkey_export_rsa_raw(gnutls_privkey_t key, gnutls_datum_t *m, + gnutls_datum_t *e, gnutls_datum_t *d, + gnutls_datum_t *p, gnutls_datum_t *q, + gnutls_datum_t *u, gnutls_datum_t *e1, + gnutls_datum_t *e2); + +int gnutls_privkey_export_rsa_raw2(gnutls_privkey_t key, gnutls_datum_t *m, + gnutls_datum_t *e, gnutls_datum_t *d, + gnutls_datum_t *p, gnutls_datum_t *q, + gnutls_datum_t *u, gnutls_datum_t *e1, + gnutls_datum_t *e2, unsigned flags); + +int gnutls_privkey_export_dsa_raw(gnutls_privkey_t key, gnutls_datum_t *p, + gnutls_datum_t *q, gnutls_datum_t *g, + gnutls_datum_t *y, gnutls_datum_t *x); + +int gnutls_privkey_export_dsa_raw2(gnutls_privkey_t key, gnutls_datum_t *p, + gnutls_datum_t *q, gnutls_datum_t *g, + gnutls_datum_t *y, gnutls_datum_t *x, + unsigned flags); + +int gnutls_privkey_export_ecc_raw(gnutls_privkey_t key, + gnutls_ecc_curve_t *curve, gnutls_datum_t *x, + gnutls_datum_t *y, gnutls_datum_t *k); + +int gnutls_privkey_export_ecc_raw2(gnutls_privkey_t key, + gnutls_ecc_curve_t *curve, gnutls_datum_t *x, + gnutls_datum_t *y, gnutls_datum_t *k, + unsigned flags); + +int gnutls_privkey_export_gost_raw2(gnutls_privkey_t key, + gnutls_ecc_curve_t *curve, + gnutls_digest_algorithm_t *digest, + gnutls_gost_paramset_t *paramset, + gnutls_datum_t *x, gnutls_datum_t *y, + gnutls_datum_t *k, unsigned flags); int gnutls_x509_crt_privkey_sign(gnutls_x509_crt_t crt, gnutls_x509_crt_t issuer, @@ -613,8 +539,7 @@ int gnutls_x509_crl_privkey_sign(gnutls_x509_crl_t crl, gnutls_digest_algorithm_t dig, unsigned int flags); -int gnutls_x509_crq_privkey_sign(gnutls_x509_crq_t crq, - gnutls_privkey_t key, +int gnutls_x509_crq_privkey_sign(gnutls_x509_crq_t crq, gnutls_privkey_t key, gnutls_digest_algorithm_t dig, unsigned int flags); @@ -633,25 +558,24 @@ typedef struct gnutls_pcert_st { } gnutls_pcert_st; /* This flag is unused/ignored */ -# define GNUTLS_PCERT_NO_CERT 1 +#define GNUTLS_PCERT_NO_CERT 1 -int gnutls_pcert_import_x509(gnutls_pcert_st * pcert, - gnutls_x509_crt_t crt, unsigned int flags); +int gnutls_pcert_import_x509(gnutls_pcert_st *pcert, gnutls_x509_crt_t crt, + unsigned int flags); -int gnutls_pcert_import_x509_list(gnutls_pcert_st * pcert, - gnutls_x509_crt_t * crt, unsigned *ncrt, +int gnutls_pcert_import_x509_list(gnutls_pcert_st *pcert, + gnutls_x509_crt_t *crt, unsigned *ncrt, unsigned int flags); -int gnutls_pcert_export_x509(gnutls_pcert_st * pcert, gnutls_x509_crt_t * crt); +int gnutls_pcert_export_x509(gnutls_pcert_st *pcert, gnutls_x509_crt_t *crt); -int -gnutls_pcert_list_import_x509_raw(gnutls_pcert_st * pcerts, - unsigned int *pcert_max, - const gnutls_datum_t * data, - gnutls_x509_crt_fmt_t format, - unsigned int flags); +int gnutls_pcert_list_import_x509_raw(gnutls_pcert_st *pcerts, + unsigned int *pcert_max, + const gnutls_datum_t *data, + gnutls_x509_crt_fmt_t format, + unsigned int flags); -int gnutls_pcert_list_import_x509_file(gnutls_pcert_st * pcert_list, +int gnutls_pcert_list_import_x509_file(gnutls_pcert_st *pcert_list, unsigned *pcert_list_size, const char *file, gnutls_x509_crt_fmt_t format, @@ -659,54 +583,50 @@ int gnutls_pcert_list_import_x509_file(gnutls_pcert_st * pcert_list, void *pin_fn_userdata, unsigned int flags); -int gnutls_pcert_import_x509_raw(gnutls_pcert_st * pcert, - const gnutls_datum_t * cert, +int gnutls_pcert_import_x509_raw(gnutls_pcert_st *pcert, + const gnutls_datum_t *cert, gnutls_x509_crt_fmt_t format, unsigned int flags); -int gnutls_pcert_import_openpgp_raw(gnutls_pcert_st * pcert, - const gnutls_datum_t * cert, - gnutls_openpgp_crt_fmt_t - format, +int gnutls_pcert_import_openpgp_raw(gnutls_pcert_st *pcert, + const gnutls_datum_t *cert, + gnutls_openpgp_crt_fmt_t format, gnutls_openpgp_keyid_t keyid, unsigned int flags); -int gnutls_pcert_import_openpgp(gnutls_pcert_st * pcert, +int gnutls_pcert_import_openpgp(gnutls_pcert_st *pcert, gnutls_openpgp_crt_t crt, unsigned int flags); -int gnutls_pcert_export_openpgp(gnutls_pcert_st * pcert, - gnutls_openpgp_crt_t * crt); +int gnutls_pcert_export_openpgp(gnutls_pcert_st *pcert, + gnutls_openpgp_crt_t *crt); -void gnutls_pcert_deinit(gnutls_pcert_st * pcert); +void gnutls_pcert_deinit(gnutls_pcert_st *pcert); -int gnutls_pcert_import_rawpk(gnutls_pcert_st * pcert, - gnutls_pubkey_t key, unsigned int flags); +int gnutls_pcert_import_rawpk(gnutls_pcert_st *pcert, gnutls_pubkey_t key, + unsigned int flags); -int gnutls_pcert_import_rawpk_raw(gnutls_pcert_st * pcert, - const gnutls_datum_t * rawpubkey, +int gnutls_pcert_import_rawpk_raw(gnutls_pcert_st *pcert, + const gnutls_datum_t *rawpubkey, gnutls_x509_crt_fmt_t format, unsigned int key_usage, unsigned int flags); /* For certificate credentials */ - /* This is the same as gnutls_certificate_retrieve_function() +/* This is the same as gnutls_certificate_retrieve_function() * but retrieves a gnutls_pcert_st which requires much less processing * within the library. */ -typedef int gnutls_certificate_retrieve_function2(gnutls_session_t, - const gnutls_datum_t * - req_ca_rdn, int nreqs, - const gnutls_pk_algorithm_t * - pk_algos, int pk_algos_length, - gnutls_pcert_st **, - unsigned int *pcert_length, - gnutls_privkey_t * privkey); - -void gnutls_certificate_set_retrieve_function2 - (gnutls_certificate_credentials_t cred, - gnutls_certificate_retrieve_function2 * func); +typedef int gnutls_certificate_retrieve_function2( + gnutls_session_t, const gnutls_datum_t *req_ca_rdn, int nreqs, + const gnutls_pk_algorithm_t *pk_algos, int pk_algos_length, + gnutls_pcert_st **, unsigned int *pcert_length, + gnutls_privkey_t *privkey); + +void gnutls_certificate_set_retrieve_function2( + gnutls_certificate_credentials_t cred, + gnutls_certificate_retrieve_function2 *func); struct gnutls_cert_retr_st { - unsigned version; /* set to 1 */ + unsigned version; /* set to 1 */ gnutls_certificate_credentials_t cred; const gnutls_datum_t *req_ca_rdn; unsigned nreqs; @@ -719,35 +639,29 @@ struct gnutls_cert_retr_st { /* When the callback sets this value, gnutls will deinitialize the given * values after use */ -# define GNUTLS_CERT_RETR_DEINIT_ALL 1 - -typedef int gnutls_certificate_retrieve_function3(gnutls_session_t, const struct - gnutls_cert_retr_st *info, - gnutls_pcert_st ** certs, - unsigned int *certs_length, - gnutls_ocsp_data_st ** ocsp, - unsigned int *ocsp_length, - gnutls_privkey_t * privkey, - unsigned int *flags); - -void gnutls_certificate_set_retrieve_function3 - (gnutls_certificate_credentials_t cred, - gnutls_certificate_retrieve_function3 * func); - -int -gnutls_certificate_set_key(gnutls_certificate_credentials_t res, - const char **names, - int names_size, - gnutls_pcert_st * pcert_list, - int pcert_list_size, gnutls_privkey_t key); - -int -gnutls_pubkey_print(gnutls_pubkey_t pubkey, - gnutls_certificate_print_formats_t format, - gnutls_datum_t * out); +#define GNUTLS_CERT_RETR_DEINIT_ALL 1 + +typedef int gnutls_certificate_retrieve_function3( + gnutls_session_t, const struct gnutls_cert_retr_st *info, + gnutls_pcert_st **certs, unsigned int *certs_length, + gnutls_ocsp_data_st **ocsp, unsigned int *ocsp_length, + gnutls_privkey_t *privkey, unsigned int *flags); + +void gnutls_certificate_set_retrieve_function3( + gnutls_certificate_credentials_t cred, + gnutls_certificate_retrieve_function3 *func); + +int gnutls_certificate_set_key(gnutls_certificate_credentials_t res, + const char **names, int names_size, + gnutls_pcert_st *pcert_list, int pcert_list_size, + gnutls_privkey_t key); + +int gnutls_pubkey_print(gnutls_pubkey_t pubkey, + gnutls_certificate_print_formats_t format, + gnutls_datum_t *out); #ifdef __cplusplus } #endif -#endif /* GNUTLS_ABSTRACT_H */ +#endif /* GNUTLS_ABSTRACT_H */ diff --git a/lib/includes/gnutls/compat.h b/lib/includes/gnutls/compat.h index 3454b9f31e..3a1e5a6ca8 100644 --- a/lib/includes/gnutls/compat.h +++ b/lib/includes/gnutls/compat.h @@ -23,211 +23,206 @@ /* Typedefs for more compatibility with older GnuTLS. */ #ifndef GNUTLS_COMPAT_H -# define GNUTLS_COMPAT_H +#define GNUTLS_COMPAT_H #ifdef __cplusplus extern "C" { #endif -# ifdef __GNUC__ +#ifdef __GNUC__ -# define _GNUTLS_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) +#define _GNUTLS_GCC_VERSION \ + (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) -# if !defined GNUTLS_INTERNAL_BUILD -# if _GNUTLS_GCC_VERSION >= 30100 -# define _GNUTLS_GCC_ATTR_DEPRECATED __attribute__ ((__deprecated__)) -# endif -# endif +#if !defined GNUTLS_INTERNAL_BUILD +#if _GNUTLS_GCC_VERSION >= 30100 +#define _GNUTLS_GCC_ATTR_DEPRECATED __attribute__((__deprecated__)) +#endif +#endif -# endif /* __GNUC__ */ +#endif /* __GNUC__ */ -# ifndef _GNUTLS_GCC_ATTR_DEPRECATED -# define _GNUTLS_GCC_ATTR_DEPRECATED -# endif +#ifndef _GNUTLS_GCC_ATTR_DEPRECATED +#define _GNUTLS_GCC_ATTR_DEPRECATED +#endif /* gnutls_connection_end_t was made redundant in 2.99.0 */ typedef unsigned int gnutls_connection_end_t _GNUTLS_GCC_ATTR_DEPRECATED; /* Stuff deprecated in 2.x */ typedef gnutls_cipher_algorithm_t gnutls_cipher_algorithm - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_kx_algorithm_t gnutls_kx_algorithm _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_mac_algorithm_t gnutls_mac_algorithm _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_digest_algorithm_t gnutls_digest_algorithm - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_compression_method_t gnutls_compression_method - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_connection_end_t gnutls_connection_end - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_x509_crt_fmt_t gnutls_x509_crt_fmt _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_pk_algorithm_t gnutls_pk_algorithm _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_sign_algorithm_t gnutls_sign_algorithm - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_close_request_t gnutls_close_request _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_certificate_request_t gnutls_certificate_request - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_certificate_status_t gnutls_certificate_status - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_session_t gnutls_session _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_alert_level_t gnutls_alert_level _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_alert_description_t gnutls_alert_description - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_x509_subject_alt_name_t gnutls_x509_subject_alt_name - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_openpgp_privkey_t gnutls_openpgp_privkey - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_openpgp_keyring_t gnutls_openpgp_keyring - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_x509_crt_t gnutls_x509_crt _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_x509_privkey_t gnutls_x509_privkey _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_x509_crl_t gnutls_x509_crl _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_x509_crq_t gnutls_x509_crq _GNUTLS_GCC_ATTR_DEPRECATED; -typedef gnutls_certificate_credentials_t - gnutls_certificate_credentials _GNUTLS_GCC_ATTR_DEPRECATED; -typedef gnutls_anon_server_credentials_t - gnutls_anon_server_credentials _GNUTLS_GCC_ATTR_DEPRECATED; -typedef gnutls_anon_client_credentials_t - gnutls_anon_client_credentials _GNUTLS_GCC_ATTR_DEPRECATED; -typedef gnutls_srp_client_credentials_t - gnutls_srp_client_credentials _GNUTLS_GCC_ATTR_DEPRECATED; -typedef gnutls_srp_server_credentials_t - gnutls_srp_server_credentials _GNUTLS_GCC_ATTR_DEPRECATED; +typedef gnutls_certificate_credentials_t gnutls_certificate_credentials + _GNUTLS_GCC_ATTR_DEPRECATED; +typedef gnutls_anon_server_credentials_t gnutls_anon_server_credentials + _GNUTLS_GCC_ATTR_DEPRECATED; +typedef gnutls_anon_client_credentials_t gnutls_anon_client_credentials + _GNUTLS_GCC_ATTR_DEPRECATED; +typedef gnutls_srp_client_credentials_t gnutls_srp_client_credentials + _GNUTLS_GCC_ATTR_DEPRECATED; +typedef gnutls_srp_server_credentials_t gnutls_srp_server_credentials + _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_dh_params_t gnutls_dh_params _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_rsa_params_t gnutls_rsa_params _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_params_type_t gnutls_params_type _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_credentials_type_t gnutls_credentials_type - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_certificate_type_t gnutls_certificate_type - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_datum_t gnutls_datum _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_transport_ptr_t gnutls_transport_ptr _GNUTLS_GCC_ATTR_DEPRECATED; /* Old verification flags */ -# define GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT (0) +#define GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT (0) /* Old SRP alerts removed in 2.1.x because the TLS-SRP RFC was modified to use the PSK alert. */ -# define GNUTLS_A_MISSING_SRP_USERNAME GNUTLS_A_UNKNOWN_PSK_IDENTITY -# define GNUTLS_A_UNKNOWN_SRP_USERNAME GNUTLS_A_UNKNOWN_PSK_IDENTITY +#define GNUTLS_A_MISSING_SRP_USERNAME GNUTLS_A_UNKNOWN_PSK_IDENTITY +#define GNUTLS_A_UNKNOWN_SRP_USERNAME GNUTLS_A_UNKNOWN_PSK_IDENTITY /* OpenPGP stuff renamed in 2.1.x. */ -# define GNUTLS_OPENPGP_KEY GNUTLS_OPENPGP_CERT -# define GNUTLS_OPENPGP_KEY_FINGERPRINT GNUTLS_OPENPGP_CERT_FINGERPRINT -# define gnutls_openpgp_send_key gnutls_openpgp_send_cert +#define GNUTLS_OPENPGP_KEY GNUTLS_OPENPGP_CERT +#define GNUTLS_OPENPGP_KEY_FINGERPRINT GNUTLS_OPENPGP_CERT_FINGERPRINT +#define gnutls_openpgp_send_key gnutls_openpgp_send_cert typedef gnutls_openpgp_crt_status_t gnutls_openpgp_key_status_t - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; typedef gnutls_openpgp_crt_t gnutls_openpgp_key_t _GNUTLS_GCC_ATTR_DEPRECATED; -# define gnutls_openpgp_key_init gnutls_openpgp_crt_init -# define gnutls_openpgp_key_deinit gnutls_openpgp_crt_deinit -# define gnutls_openpgp_key_import gnutls_openpgp_crt_import -# define gnutls_openpgp_key_export gnutls_openpgp_crt_export -# define gnutls_openpgp_key_get_key_usage gnutls_openpgp_crt_get_key_usage -# define gnutls_openpgp_key_get_fingerprint gnutls_openpgp_crt_get_fingerprint -# define gnutls_openpgp_key_get_pk_algorithm gnutls_openpgp_crt_get_pk_algorithm -# define gnutls_openpgp_key_get_name gnutls_openpgp_crt_get_name -# define gnutls_openpgp_key_get_version gnutls_openpgp_crt_get_version -# define gnutls_openpgp_key_get_creation_time gnutls_openpgp_crt_get_creation_time -# define gnutls_openpgp_key_get_expiration_time gnutls_openpgp_crt_get_expiration_time -# define gnutls_openpgp_key_get_id gnutls_openpgp_crt_get_id -# define gnutls_openpgp_key_check_hostname gnutls_openpgp_crt_check_hostname +#define gnutls_openpgp_key_init gnutls_openpgp_crt_init +#define gnutls_openpgp_key_deinit gnutls_openpgp_crt_deinit +#define gnutls_openpgp_key_import gnutls_openpgp_crt_import +#define gnutls_openpgp_key_export gnutls_openpgp_crt_export +#define gnutls_openpgp_key_get_key_usage gnutls_openpgp_crt_get_key_usage +#define gnutls_openpgp_key_get_fingerprint gnutls_openpgp_crt_get_fingerprint +#define gnutls_openpgp_key_get_pk_algorithm gnutls_openpgp_crt_get_pk_algorithm +#define gnutls_openpgp_key_get_name gnutls_openpgp_crt_get_name +#define gnutls_openpgp_key_get_version gnutls_openpgp_crt_get_version +#define gnutls_openpgp_key_get_creation_time \ + gnutls_openpgp_crt_get_creation_time +#define gnutls_openpgp_key_get_expiration_time \ + gnutls_openpgp_crt_get_expiration_time +#define gnutls_openpgp_key_get_id gnutls_openpgp_crt_get_id +#define gnutls_openpgp_key_check_hostname gnutls_openpgp_crt_check_hostname /* OpenPGP stuff renamed in 2.3.x. */ -# define gnutls_openpgp_crt_get_id gnutls_openpgp_crt_get_key_id +#define gnutls_openpgp_crt_get_id gnutls_openpgp_crt_get_key_id /* New better names renamed in 2.3.x, add these for backwards compatibility with old poor names.*/ -# define GNUTLS_X509_CRT_FULL GNUTLS_CRT_PRINT_FULL -# define GNUTLS_X509_CRT_ONELINE GNUTLS_CRT_PRINT_ONELINE -# define GNUTLS_X509_CRT_UNSIGNED_FULL GNUTLS_CRT_PRINT_UNSIGNED_FULL +#define GNUTLS_X509_CRT_FULL GNUTLS_CRT_PRINT_FULL +#define GNUTLS_X509_CRT_ONELINE GNUTLS_CRT_PRINT_ONELINE +#define GNUTLS_X509_CRT_UNSIGNED_FULL GNUTLS_CRT_PRINT_UNSIGNED_FULL /* Namespace problems. */ -# define LIBGNUTLS_VERSION GNUTLS_VERSION -# define LIBGNUTLS_VERSION_MAJOR GNUTLS_VERSION_MAJOR -# define LIBGNUTLS_VERSION_MINOR GNUTLS_VERSION_MINOR -# define LIBGNUTLS_VERSION_PATCH GNUTLS_VERSION_PATCH -# define LIBGNUTLS_VERSION_NUMBER GNUTLS_VERSION_NUMBER -# define LIBGNUTLS_EXTRA_VERSION GNUTLS_VERSION +#define LIBGNUTLS_VERSION GNUTLS_VERSION +#define LIBGNUTLS_VERSION_MAJOR GNUTLS_VERSION_MAJOR +#define LIBGNUTLS_VERSION_MINOR GNUTLS_VERSION_MINOR +#define LIBGNUTLS_VERSION_PATCH GNUTLS_VERSION_PATCH +#define LIBGNUTLS_VERSION_NUMBER GNUTLS_VERSION_NUMBER +#define LIBGNUTLS_EXTRA_VERSION GNUTLS_VERSION /* This is a very dangerous and error-prone function. * Use gnutls_privkey_sign_hash() instead. */ -int gnutls_x509_privkey_sign_hash(gnutls_x509_privkey_t key, - const gnutls_datum_t * hash, - gnutls_datum_t * signature) - _GNUTLS_GCC_ATTR_DEPRECATED; - -int gnutls_openpgp_privkey_sign_hash(gnutls_openpgp_privkey_t key, - const gnutls_datum_t * hash, - gnutls_datum_t * signature) - _GNUTLS_GCC_ATTR_DEPRECATED; - - /* gnutls_pubkey_get_preferred_hash_algorithm() */ -int gnutls_x509_crt_get_preferred_hash_algorithm(gnutls_x509_crt_t - crt, - gnutls_digest_algorithm_t - * hash, unsigned int - *mand) - _GNUTLS_GCC_ATTR_DEPRECATED; - - /* use gnutls_privkey_sign_hash() with the GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA flag */ - -# ifdef _ISOC99_SOURCE +int gnutls_x509_privkey_sign_hash( + gnutls_x509_privkey_t key, const gnutls_datum_t *hash, + gnutls_datum_t *signature) _GNUTLS_GCC_ATTR_DEPRECATED; + +int gnutls_openpgp_privkey_sign_hash( + gnutls_openpgp_privkey_t key, const gnutls_datum_t *hash, + gnutls_datum_t *signature) _GNUTLS_GCC_ATTR_DEPRECATED; + +/* gnutls_pubkey_get_preferred_hash_algorithm() */ +int gnutls_x509_crt_get_preferred_hash_algorithm( + gnutls_x509_crt_t crt, gnutls_digest_algorithm_t *hash, + unsigned int *mand) _GNUTLS_GCC_ATTR_DEPRECATED; + +/* use gnutls_privkey_sign_hash() with the GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA flag */ + +#ifdef _ISOC99_SOURCE /* we provide older functions for compatibility as inline functions that * depend on gnutls_session_get_random. */ -static inline const void -*gnutls_session_get_server_random(gnutls_session_t session) - _GNUTLS_GCC_ATTR_DEPRECATED; -static inline const void -*gnutls_session_get_server_random(gnutls_session_t session) +static inline const void *gnutls_session_get_server_random( + gnutls_session_t session) _GNUTLS_GCC_ATTR_DEPRECATED; +static inline const void * +gnutls_session_get_server_random(gnutls_session_t session) { gnutls_datum_t rnd; - gnutls_session_get_random(session, NULL, &rnd); /*doc-skip */ + gnutls_session_get_random(session, NULL, &rnd); /*doc-skip */ return rnd.data; } -static inline const void -*gnutls_session_get_client_random(gnutls_session_t session) - _GNUTLS_GCC_ATTR_DEPRECATED; -static inline const void -*gnutls_session_get_client_random(gnutls_session_t session) +static inline const void *gnutls_session_get_client_random( + gnutls_session_t session) _GNUTLS_GCC_ATTR_DEPRECATED; +static inline const void * +gnutls_session_get_client_random(gnutls_session_t session) { gnutls_datum_t rnd; - gnutls_session_get_random(session, &rnd, NULL); /*doc-skip */ + gnutls_session_get_random(session, &rnd, NULL); /*doc-skip */ return rnd.data; } -# endif +#endif -void -gnutls_global_set_mem_functions(gnutls_alloc_function alloc_func, - gnutls_alloc_function secure_alloc_func, - gnutls_is_secure_function is_secure_func, - gnutls_realloc_function realloc_func, - gnutls_free_function free_func) -_GNUTLS_GCC_ATTR_DEPRECATED; +void gnutls_global_set_mem_functions(gnutls_alloc_function alloc_func, + gnutls_alloc_function secure_alloc_func, + gnutls_is_secure_function is_secure_func, + gnutls_realloc_function realloc_func, + gnutls_free_function free_func) + _GNUTLS_GCC_ATTR_DEPRECATED; /* defined in old headers - unused nevertheless */ -# define GNUTLS_SUPPLEMENTAL_USER_MAPPING_DATA 0 +#define GNUTLS_SUPPLEMENTAL_USER_MAPPING_DATA 0 /* old compression related functions */ gnutls_compression_method_t gnutls_compression_get(gnutls_session_t session) _GNUTLS_GCC_ATTR_DEPRECATED; const char *gnutls_compression_get_name(gnutls_compression_method_t algorithm) -__GNUTLS_CONST__ _GNUTLS_GCC_ATTR_DEPRECATED; + __GNUTLS_CONST__ _GNUTLS_GCC_ATTR_DEPRECATED; gnutls_compression_method_t gnutls_compression_get_id(const char *name) -__GNUTLS_CONST__ _GNUTLS_GCC_ATTR_DEPRECATED; + __GNUTLS_CONST__ _GNUTLS_GCC_ATTR_DEPRECATED; -const gnutls_compression_method_t *gnutls_compression_list(void) -__GNUTLS_PURE__ _GNUTLS_GCC_ATTR_DEPRECATED; +const gnutls_compression_method_t * +gnutls_compression_list(void) __GNUTLS_PURE__ _GNUTLS_GCC_ATTR_DEPRECATED; int gnutls_priority_compression_list(gnutls_priority_t pcache, const unsigned int **list) - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; #ifdef __cplusplus } #endif -#endif /* GNUTLS_COMPAT_H */ +#endif /* GNUTLS_COMPAT_H */ diff --git a/lib/includes/gnutls/crypto.h b/lib/includes/gnutls/crypto.h index b830baf643..2325825caf 100644 --- a/lib/includes/gnutls/crypto.h +++ b/lib/includes/gnutls/crypto.h @@ -21,9 +21,9 @@ */ #ifndef GNUTLS_CRYPTO_H -# define GNUTLS_CRYPTO_H +#define GNUTLS_CRYPTO_H -# include +#include #ifdef __cplusplus extern "C" { @@ -31,19 +31,18 @@ extern "C" { typedef struct api_cipher_hd_st *gnutls_cipher_hd_t; -int gnutls_cipher_init(gnutls_cipher_hd_t * handle, +int gnutls_cipher_init(gnutls_cipher_hd_t *handle, gnutls_cipher_algorithm_t cipher, - const gnutls_datum_t * key, const gnutls_datum_t * iv); -int gnutls_cipher_encrypt(const gnutls_cipher_hd_t handle, - void *text, size_t textlen); -int gnutls_cipher_decrypt(const gnutls_cipher_hd_t handle, - void *ciphertext, size_t ciphertextlen); -int gnutls_cipher_decrypt2(gnutls_cipher_hd_t handle, - const void *ciphertext, + const gnutls_datum_t *key, const gnutls_datum_t *iv); +int gnutls_cipher_encrypt(const gnutls_cipher_hd_t handle, void *text, + size_t textlen); +int gnutls_cipher_decrypt(const gnutls_cipher_hd_t handle, void *ciphertext, + size_t ciphertextlen); +int gnutls_cipher_decrypt2(gnutls_cipher_hd_t handle, const void *ciphertext, size_t ciphertextlen, void *text, size_t textlen); -int gnutls_cipher_encrypt2(gnutls_cipher_hd_t handle, - const void *text, size_t textlen, - void *ciphertext, size_t ciphertextlen); +int gnutls_cipher_encrypt2(gnutls_cipher_hd_t handle, const void *text, + size_t textlen, void *ciphertext, + size_t ciphertextlen); /** * gnutls_cipher_flags_t: @@ -58,74 +57,68 @@ typedef enum gnutls_cipher_flags_t { GNUTLS_CIPHER_PADDING_PKCS7 = 1 } gnutls_cipher_flags_t; -int gnutls_cipher_encrypt3(gnutls_cipher_hd_t handle, - const void *ptext, size_t ptext_len, - void *ctext, size_t *ctext_len, unsigned flags); -int gnutls_cipher_decrypt3(gnutls_cipher_hd_t handle, - const void *ctext, size_t ctext_len, - void *ptext, size_t *ptext_len, unsigned flags); +int gnutls_cipher_encrypt3(gnutls_cipher_hd_t handle, const void *ptext, + size_t ptext_len, void *ctext, size_t *ctext_len, + unsigned flags); +int gnutls_cipher_decrypt3(gnutls_cipher_hd_t handle, const void *ctext, + size_t ctext_len, void *ptext, size_t *ptext_len, + unsigned flags); void gnutls_cipher_set_iv(gnutls_cipher_hd_t handle, void *iv, size_t ivlen); int gnutls_cipher_tag(gnutls_cipher_hd_t handle, void *tag, size_t tag_size); -int gnutls_cipher_add_auth(gnutls_cipher_hd_t handle, - const void *text, size_t text_size); +int gnutls_cipher_add_auth(gnutls_cipher_hd_t handle, const void *text, + size_t text_size); void gnutls_cipher_deinit(gnutls_cipher_hd_t handle); unsigned gnutls_cipher_get_block_size(gnutls_cipher_algorithm_t algorithm) - __GNUTLS_CONST__; -unsigned gnutls_cipher_get_iv_size(gnutls_cipher_algorithm_t algorithm) - __GNUTLS_CONST__; + __GNUTLS_CONST__; +unsigned +gnutls_cipher_get_iv_size(gnutls_cipher_algorithm_t algorithm) __GNUTLS_CONST__; unsigned gnutls_cipher_get_tag_size(gnutls_cipher_algorithm_t algorithm) - __GNUTLS_CONST__; + __GNUTLS_CONST__; /* AEAD API */ typedef struct api_aead_cipher_hd_st *gnutls_aead_cipher_hd_t; -int gnutls_aead_cipher_init(gnutls_aead_cipher_hd_t * handle, +int gnutls_aead_cipher_init(gnutls_aead_cipher_hd_t *handle, gnutls_cipher_algorithm_t cipher, - const gnutls_datum_t * key); + const gnutls_datum_t *key); int gnutls_aead_cipher_set_key(gnutls_aead_cipher_hd_t handle, - const gnutls_datum_t * key); - -int -gnutls_aead_cipher_decrypt(gnutls_aead_cipher_hd_t handle, - const void *nonce, size_t nonce_len, - const void *auth, size_t auth_len, - size_t tag_size, - const void *ctext, size_t ctext_len, - void *ptext, size_t *ptext_len); -int -gnutls_aead_cipher_encrypt(gnutls_aead_cipher_hd_t handle, - const void *nonce, size_t nonce_len, - const void *auth, size_t auth_len, - size_t tag_size, - const void *ptext, size_t ptext_len, - void *ctext, size_t *ctext_len); - -int -gnutls_aead_cipher_encryptv(gnutls_aead_cipher_hd_t handle, - const void *nonce, size_t nonce_len, - const giovec_t * auth_iov, int auth_iovcnt, - size_t tag_size, - const giovec_t * iov, int iovcnt, - void *ctext, size_t *ctext_len); - -int -gnutls_aead_cipher_encryptv2(gnutls_aead_cipher_hd_t handle, - const void *nonce, size_t nonce_len, - const giovec_t * auth_iov, int auth_iovcnt, - const giovec_t * iov, int iovcnt, - void *tag, size_t *tag_size); - -int -gnutls_aead_cipher_decryptv2(gnutls_aead_cipher_hd_t handle, - const void *nonce, size_t nonce_len, - const giovec_t * auth_iov, int auth_iovcnt, - const giovec_t * iov, int iovcnt, - void *tag, size_t tag_size); + const gnutls_datum_t *key); + +int gnutls_aead_cipher_decrypt(gnutls_aead_cipher_hd_t handle, + const void *nonce, size_t nonce_len, + const void *auth, size_t auth_len, + size_t tag_size, const void *ctext, + size_t ctext_len, void *ptext, + size_t *ptext_len); +int gnutls_aead_cipher_encrypt(gnutls_aead_cipher_hd_t handle, + const void *nonce, size_t nonce_len, + const void *auth, size_t auth_len, + size_t tag_size, const void *ptext, + size_t ptext_len, void *ctext, + size_t *ctext_len); + +int gnutls_aead_cipher_encryptv(gnutls_aead_cipher_hd_t handle, + const void *nonce, size_t nonce_len, + const giovec_t *auth_iov, int auth_iovcnt, + size_t tag_size, const giovec_t *iov, + int iovcnt, void *ctext, size_t *ctext_len); + +int gnutls_aead_cipher_encryptv2(gnutls_aead_cipher_hd_t handle, + const void *nonce, size_t nonce_len, + const giovec_t *auth_iov, int auth_iovcnt, + const giovec_t *iov, int iovcnt, void *tag, + size_t *tag_size); + +int gnutls_aead_cipher_decryptv2(gnutls_aead_cipher_hd_t handle, + const void *nonce, size_t nonce_len, + const giovec_t *auth_iov, int auth_iovcnt, + const giovec_t *iov, int iovcnt, void *tag, + size_t tag_size); void gnutls_aead_cipher_deinit(gnutls_aead_cipher_hd_t handle); @@ -134,9 +127,9 @@ void gnutls_aead_cipher_deinit(gnutls_aead_cipher_hd_t handle); typedef struct hash_hd_st *gnutls_hash_hd_t; typedef struct hmac_hd_st *gnutls_hmac_hd_t; -size_t gnutls_mac_get_nonce_size(gnutls_mac_algorithm_t algorithm) - __GNUTLS_CONST__; -int gnutls_hmac_init(gnutls_hmac_hd_t * dig, gnutls_mac_algorithm_t algorithm, +size_t +gnutls_mac_get_nonce_size(gnutls_mac_algorithm_t algorithm) __GNUTLS_CONST__; +int gnutls_hmac_init(gnutls_hmac_hd_t *dig, gnutls_mac_algorithm_t algorithm, const void *key, size_t keylen); void gnutls_hmac_set_nonce(gnutls_hmac_hd_t handle, const void *nonce, size_t nonce_len); @@ -144,39 +137,35 @@ int gnutls_hmac(gnutls_hmac_hd_t handle, const void *text, size_t textlen); void gnutls_hmac_output(gnutls_hmac_hd_t handle, void *digest); void gnutls_hmac_deinit(gnutls_hmac_hd_t handle, void *digest); unsigned gnutls_hmac_get_len(gnutls_mac_algorithm_t algorithm) __GNUTLS_CONST__; -unsigned gnutls_hmac_get_key_size(gnutls_mac_algorithm_t algorithm) - __GNUTLS_CONST__; +unsigned +gnutls_hmac_get_key_size(gnutls_mac_algorithm_t algorithm) __GNUTLS_CONST__; int gnutls_hmac_fast(gnutls_mac_algorithm_t algorithm, const void *key, size_t keylen, const void *text, size_t textlen, void *digest); gnutls_hmac_hd_t gnutls_hmac_copy(gnutls_hmac_hd_t handle); -int gnutls_hash_init(gnutls_hash_hd_t * dig, +int gnutls_hash_init(gnutls_hash_hd_t *dig, gnutls_digest_algorithm_t algorithm); int gnutls_hash(gnutls_hash_hd_t handle, const void *text, size_t textlen); void gnutls_hash_output(gnutls_hash_hd_t handle, void *digest); void gnutls_hash_deinit(gnutls_hash_hd_t handle, void *digest); -unsigned gnutls_hash_get_len(gnutls_digest_algorithm_t algorithm) - __GNUTLS_CONST__; +unsigned +gnutls_hash_get_len(gnutls_digest_algorithm_t algorithm) __GNUTLS_CONST__; int gnutls_hash_fast(gnutls_digest_algorithm_t algorithm, const void *text, size_t textlen, void *digest); gnutls_hash_hd_t gnutls_hash_copy(gnutls_hash_hd_t handle); /* KDF API */ -int gnutls_hkdf_extract(gnutls_mac_algorithm_t mac, - const gnutls_datum_t * key, - const gnutls_datum_t * salt, void *output); +int gnutls_hkdf_extract(gnutls_mac_algorithm_t mac, const gnutls_datum_t *key, + const gnutls_datum_t *salt, void *output); -int gnutls_hkdf_expand(gnutls_mac_algorithm_t mac, - const gnutls_datum_t * key, - const gnutls_datum_t * info, - void *output, size_t length); +int gnutls_hkdf_expand(gnutls_mac_algorithm_t mac, const gnutls_datum_t *key, + const gnutls_datum_t *info, void *output, size_t length); -int gnutls_pbkdf2(gnutls_mac_algorithm_t mac, - const gnutls_datum_t * key, - const gnutls_datum_t * salt, - unsigned iter_count, void *output, size_t length); +int gnutls_pbkdf2(gnutls_mac_algorithm_t mac, const gnutls_datum_t *key, + const gnutls_datum_t *salt, unsigned iter_count, void *output, + size_t length); /* register ciphers */ @@ -224,43 +213,29 @@ typedef int (*gnutls_cipher_auth_func)(void *ctx, const void *data, size_t datasize); typedef void (*gnutls_cipher_tag_func)(void *ctx, void *tag, size_t tagsize); -typedef int (*gnutls_cipher_aead_encrypt_func)(void *ctx, - const void *nonce, - size_t noncesize, - const void *auth, - size_t authsize, size_t tag_size, - const void *plain, - size_t plainsize, void *encr, - size_t encrsize); -typedef int (*gnutls_cipher_aead_decrypt_func)(void *ctx, const void *nonce, - size_t noncesize, - const void *auth, - size_t authsize, size_t tag_size, - const void *encr, - size_t encrsize, void *plain, - size_t plainsize); +typedef int (*gnutls_cipher_aead_encrypt_func)( + void *ctx, const void *nonce, size_t noncesize, const void *auth, + size_t authsize, size_t tag_size, const void *plain, size_t plainsize, + void *encr, size_t encrsize); +typedef int (*gnutls_cipher_aead_decrypt_func)( + void *ctx, const void *nonce, size_t noncesize, const void *auth, + size_t authsize, size_t tag_size, const void *encr, size_t encrsize, + void *plain, size_t plainsize); typedef void (*gnutls_cipher_deinit_func)(void *ctx); -int -gnutls_crypto_register_cipher(gnutls_cipher_algorithm_t algorithm, - int priority, - gnutls_cipher_init_func init, - gnutls_cipher_setkey_func setkey, - gnutls_cipher_setiv_func setiv, - gnutls_cipher_encrypt_func encrypt, - gnutls_cipher_decrypt_func decrypt, - gnutls_cipher_deinit_func deinit) -_GNUTLS_GCC_ATTR_DEPRECATED; - -int -gnutls_crypto_register_aead_cipher(gnutls_cipher_algorithm_t algorithm, - int priority, - gnutls_cipher_init_func init, - gnutls_cipher_setkey_func setkey, - gnutls_cipher_aead_encrypt_func aead_encrypt, - gnutls_cipher_aead_decrypt_func aead_decrypt, - gnutls_cipher_deinit_func deinit) -_GNUTLS_GCC_ATTR_DEPRECATED; +int gnutls_crypto_register_cipher( + gnutls_cipher_algorithm_t algorithm, int priority, + gnutls_cipher_init_func init, gnutls_cipher_setkey_func setkey, + gnutls_cipher_setiv_func setiv, gnutls_cipher_encrypt_func encrypt, + gnutls_cipher_decrypt_func decrypt, + gnutls_cipher_deinit_func deinit) _GNUTLS_GCC_ATTR_DEPRECATED; + +int gnutls_crypto_register_aead_cipher( + gnutls_cipher_algorithm_t algorithm, int priority, + gnutls_cipher_init_func init, gnutls_cipher_setkey_func setkey, + gnutls_cipher_aead_encrypt_func aead_encrypt, + gnutls_cipher_aead_decrypt_func aead_decrypt, + gnutls_cipher_deinit_func deinit) _GNUTLS_GCC_ATTR_DEPRECATED; typedef int (*gnutls_mac_init_func)(gnutls_mac_algorithm_t, void **ctx); typedef int (*gnutls_mac_setkey_func)(void *ctx, const void *key, @@ -278,17 +253,12 @@ typedef int (*gnutls_mac_fast_func)(gnutls_mac_algorithm_t, const void *nonce, size_t textsize, void *digest); typedef void *(*gnutls_mac_copy_func)(const void *ctx); -int -gnutls_crypto_register_mac(gnutls_mac_algorithm_t mac, - int priority, - gnutls_mac_init_func init, - gnutls_mac_setkey_func setkey, - gnutls_mac_setnonce_func setnonce, - gnutls_mac_hash_func hash, - gnutls_mac_output_func output, - gnutls_mac_deinit_func deinit, - gnutls_mac_fast_func hash_fast) -_GNUTLS_GCC_ATTR_DEPRECATED; +int gnutls_crypto_register_mac( + gnutls_mac_algorithm_t mac, int priority, gnutls_mac_init_func init, + gnutls_mac_setkey_func setkey, gnutls_mac_setnonce_func setnonce, + gnutls_mac_hash_func hash, gnutls_mac_output_func output, + gnutls_mac_deinit_func deinit, + gnutls_mac_fast_func hash_fast) _GNUTLS_GCC_ATTR_DEPRECATED; typedef int (*gnutls_digest_init_func)(gnutls_digest_algorithm_t, void **ctx); typedef int (*gnutls_digest_hash_func)(void *ctx, const void *text, @@ -301,40 +271,35 @@ typedef int (*gnutls_digest_fast_func)(gnutls_digest_algorithm_t, void *digest); typedef void *(*gnutls_digest_copy_func)(const void *ctx); -int -gnutls_crypto_register_digest(gnutls_digest_algorithm_t digest, - int priority, - gnutls_digest_init_func init, - gnutls_digest_hash_func hash, - gnutls_digest_output_func output, - gnutls_digest_deinit_func deinit, - gnutls_digest_fast_func hash_fast) -_GNUTLS_GCC_ATTR_DEPRECATED; +int gnutls_crypto_register_digest( + gnutls_digest_algorithm_t digest, int priority, + gnutls_digest_init_func init, gnutls_digest_hash_func hash, + gnutls_digest_output_func output, gnutls_digest_deinit_func deinit, + gnutls_digest_fast_func hash_fast) _GNUTLS_GCC_ATTR_DEPRECATED; /* RSA-PKCS#1 1.5 helper functions */ -int -gnutls_encode_ber_digest_info(gnutls_digest_algorithm_t hash, - const gnutls_datum_t * digest, - gnutls_datum_t * output); - -int -gnutls_decode_ber_digest_info(const gnutls_datum_t * info, - gnutls_digest_algorithm_t * hash, - unsigned char *digest, unsigned int *digest_size); - -int gnutls_decode_rs_value(const gnutls_datum_t * sig_value, gnutls_datum_t * r, - gnutls_datum_t * s); -int gnutls_encode_rs_value(gnutls_datum_t * sig_value, const gnutls_datum_t * r, - const gnutls_datum_t * s); - -int gnutls_encode_gost_rs_value(gnutls_datum_t * sig_value, - const gnutls_datum_t * r, - const gnutls_datum_t * s); -int gnutls_decode_gost_rs_value(const gnutls_datum_t * sig_value, - gnutls_datum_t * r, gnutls_datum_t * s); +int gnutls_encode_ber_digest_info(gnutls_digest_algorithm_t hash, + const gnutls_datum_t *digest, + gnutls_datum_t *output); + +int gnutls_decode_ber_digest_info(const gnutls_datum_t *info, + gnutls_digest_algorithm_t *hash, + unsigned char *digest, + unsigned int *digest_size); + +int gnutls_decode_rs_value(const gnutls_datum_t *sig_value, gnutls_datum_t *r, + gnutls_datum_t *s); +int gnutls_encode_rs_value(gnutls_datum_t *sig_value, const gnutls_datum_t *r, + const gnutls_datum_t *s); + +int gnutls_encode_gost_rs_value(gnutls_datum_t *sig_value, + const gnutls_datum_t *r, + const gnutls_datum_t *s); +int gnutls_decode_gost_rs_value(const gnutls_datum_t *sig_value, + gnutls_datum_t *r, gnutls_datum_t *s); #ifdef __cplusplus } #endif -#endif /* GNUTLS_CRYPTO_H */ +#endif /* GNUTLS_CRYPTO_H */ diff --git a/lib/includes/gnutls/dtls.h b/lib/includes/gnutls/dtls.h index 2526e98142..b4860953d3 100644 --- a/lib/includes/gnutls/dtls.h +++ b/lib/includes/gnutls/dtls.h @@ -25,15 +25,15 @@ */ #ifndef GNUTLS_DTLS_H -# define GNUTLS_DTLS_H +#define GNUTLS_DTLS_H -# include +#include #ifdef __cplusplus extern "C" { #endif -# define GNUTLS_COOKIE_KEY_SIZE 16 +#define GNUTLS_COOKIE_KEY_SIZE 16 void gnutls_dtls_set_timeouts(gnutls_session_t session, unsigned int retrans_timeout, @@ -64,21 +64,19 @@ typedef struct { unsigned int hsk_write_seq; } gnutls_dtls_prestate_st; -int gnutls_dtls_cookie_send(gnutls_datum_t * key, - void *client_data, +int gnutls_dtls_cookie_send(gnutls_datum_t *key, void *client_data, size_t client_data_size, - gnutls_dtls_prestate_st * prestate, + gnutls_dtls_prestate_st *prestate, gnutls_transport_ptr_t ptr, gnutls_push_func push_func); -int gnutls_dtls_cookie_verify(gnutls_datum_t * key, - void *client_data, +int gnutls_dtls_cookie_verify(gnutls_datum_t *key, void *client_data, size_t client_data_size, void *_msg, size_t msg_size, - gnutls_dtls_prestate_st * prestate); + gnutls_dtls_prestate_st *prestate); void gnutls_dtls_prestate_set(gnutls_session_t session, - gnutls_dtls_prestate_st * prestate); + gnutls_dtls_prestate_st *prestate); unsigned int gnutls_record_get_discarded(gnutls_session_t session); @@ -86,4 +84,4 @@ unsigned int gnutls_record_get_discarded(gnutls_session_t session); } #endif -#endif /* GNUTLS_DTLS_H */ +#endif /* GNUTLS_DTLS_H */ diff --git a/lib/includes/gnutls/gnutls.h.in b/lib/includes/gnutls/gnutls.h.in index 388b453f2b..f4c003dcde 100644 --- a/lib/includes/gnutls/gnutls.h.in +++ b/lib/includes/gnutls/gnutls.h.in @@ -34,22 +34,22 @@ */ #ifndef GNUTLS_GNUTLS_H -# define GNUTLS_GNUTLS_H +#define GNUTLS_GNUTLS_H /* Get ssize_t. */ -# include +#include /* Get size_t. */ -# include +#include /* Get time_t. */ -# include +#include #ifdef __cplusplus extern "C" { #endif -# define GNUTLS_VERSION "@VERSION@" +#define GNUTLS_VERSION "@VERSION@" /* clang-format off */ #define GNUTLS_VERSION_MAJOR @MAJOR_VERSION@ @@ -59,29 +59,33 @@ extern "C" { #define GNUTLS_VERSION_NUMBER @NUMBER_VERSION@ /* clang-format on */ -# define GNUTLS_CIPHER_RIJNDAEL_128_CBC GNUTLS_CIPHER_AES_128_CBC -# define GNUTLS_CIPHER_RIJNDAEL_256_CBC GNUTLS_CIPHER_AES_256_CBC -# define GNUTLS_CIPHER_RIJNDAEL_CBC GNUTLS_CIPHER_AES_128_CBC -# define GNUTLS_CIPHER_ARCFOUR GNUTLS_CIPHER_ARCFOUR_128 - -# if !defined(GNUTLS_INTERNAL_BUILD) && defined(_WIN32) -# define _SYM_EXPORT __declspec(dllimport) -# else -# define _SYM_EXPORT -# endif - -# ifdef __GNUC__ -# define __GNUTLS_CONST__ __attribute__((const)) -# define __GNUTLS_PURE__ __attribute__((pure)) -# else -# define __GNUTLS_CONST__ -# define __GNUTLS_PURE__ -# endif +#define GNUTLS_CIPHER_RIJNDAEL_128_CBC GNUTLS_CIPHER_AES_128_CBC +#define GNUTLS_CIPHER_RIJNDAEL_256_CBC GNUTLS_CIPHER_AES_256_CBC +#define GNUTLS_CIPHER_RIJNDAEL_CBC GNUTLS_CIPHER_AES_128_CBC +#define GNUTLS_CIPHER_ARCFOUR GNUTLS_CIPHER_ARCFOUR_128 + +#if !defined(GNUTLS_INTERNAL_BUILD) && defined(_WIN32) +#define _SYM_EXPORT __declspec(dllimport) +#else +#define _SYM_EXPORT +#endif + +#ifdef __GNUC__ +#define __GNUTLS_CONST__ __attribute__((const)) +#define __GNUTLS_PURE__ __attribute__((pure)) +#else +#define __GNUTLS_CONST__ +#define __GNUTLS_PURE__ +#endif /* Use the following definition globally in your program to disable * implicit initialization of gnutls. */ -# define GNUTLS_SKIP_GLOBAL_INIT int _gnutls_global_init_skip(void); \ - int _gnutls_global_init_skip(void) {return 1;} +#define GNUTLS_SKIP_GLOBAL_INIT \ + int _gnutls_global_init_skip(void); \ + int _gnutls_global_init_skip(void) \ + { \ + return 1; \ + } /** * gnutls_cipher_algorithm_t: @@ -278,8 +282,8 @@ typedef enum { GNUTLS_CRD_IA } gnutls_credentials_type_t; -# define GNUTLS_MAC_SHA GNUTLS_MAC_SHA1 -# define GNUTLS_DIG_SHA GNUTLS_DIG_SHA1 +#define GNUTLS_MAC_SHA GNUTLS_MAC_SHA1 +#define GNUTLS_DIG_SHA GNUTLS_DIG_SHA1 /** * gnutls_mac_algorithm_t: @@ -329,17 +333,17 @@ typedef enum { GNUTLS_MAC_SHA384 = 7, GNUTLS_MAC_SHA512 = 8, GNUTLS_MAC_SHA224 = 9, - GNUTLS_MAC_SHA3_224 = 10, /* reserved: no implementation */ - GNUTLS_MAC_SHA3_256 = 11, /* reserved: no implementation */ - GNUTLS_MAC_SHA3_384 = 12, /* reserved: no implementation */ - GNUTLS_MAC_SHA3_512 = 13, /* reserved: no implementation */ - GNUTLS_MAC_MD5_SHA1 = 14, /* reserved: no implementation */ + GNUTLS_MAC_SHA3_224 = 10, /* reserved: no implementation */ + GNUTLS_MAC_SHA3_256 = 11, /* reserved: no implementation */ + GNUTLS_MAC_SHA3_384 = 12, /* reserved: no implementation */ + GNUTLS_MAC_SHA3_512 = 13, /* reserved: no implementation */ + GNUTLS_MAC_MD5_SHA1 = 14, /* reserved: no implementation */ GNUTLS_MAC_GOSTR_94 = 15, GNUTLS_MAC_STREEBOG_256 = 16, GNUTLS_MAC_STREEBOG_512 = 17, /* If you add anything here, make sure you align with gnutls_digest_algorithm_t. */ - GNUTLS_MAC_AEAD = 200, /* indicates that MAC is on the cipher */ + GNUTLS_MAC_AEAD = 200, /* indicates that MAC is on the cipher */ GNUTLS_MAC_UMAC_96 = 201, GNUTLS_MAC_UMAC_128 = 202, GNUTLS_MAC_AES_CMAC_128 = 203, @@ -400,15 +404,15 @@ typedef enum { GNUTLS_DIG_STREEBOG_512 = GNUTLS_MAC_STREEBOG_512, GNUTLS_DIG_SHAKE_128 = GNUTLS_MAC_SHAKE_128, GNUTLS_DIG_SHAKE_256 = GNUTLS_MAC_SHAKE_256 - /* If you add anything here, make sure you align with + /* If you add anything here, make sure you align with gnutls_mac_algorithm_t. */ } gnutls_digest_algorithm_t; - /* exported for other gnutls headers. This is the maximum number of +/* exported for other gnutls headers. This is the maximum number of * algorithms (ciphers, kx or macs). */ -# define GNUTLS_MAX_ALGORITHM_NUM 128 -# define GNUTLS_MAX_SESSION_ID_SIZE 32 +#define GNUTLS_MAX_ALGORITHM_NUM 128 +#define GNUTLS_MAX_SESSION_ID_SIZE 32 /** * gnutls_compression_method_t: @@ -524,19 +528,19 @@ typedef enum { /* compatibility defines (previous versions of gnutls * used defines instead of enumerated values). */ -# define GNUTLS_SERVER (1) -# define GNUTLS_CLIENT (1<<1) -# define GNUTLS_DATAGRAM (1<<2) -# define GNUTLS_NONBLOCK (1<<3) -# define GNUTLS_NO_DEFAULT_EXTENSIONS (1<<4) -# define GNUTLS_NO_REPLAY_PROTECTION (1<<5) -# define GNUTLS_NO_SIGNAL (1<<6) -# define GNUTLS_ALLOW_ID_CHANGE (1<<7) -# define GNUTLS_ENABLE_FALSE_START (1<<8) -# define GNUTLS_FORCE_CLIENT_CERT (1<<9) -# define GNUTLS_NO_TICKETS (1<<10) -# define GNUTLS_ENABLE_CERT_TYPE_NEG 0 - // Here for compatibility reasons +#define GNUTLS_SERVER (1) +#define GNUTLS_CLIENT (1 << 1) +#define GNUTLS_DATAGRAM (1 << 2) +#define GNUTLS_NONBLOCK (1 << 3) +#define GNUTLS_NO_DEFAULT_EXTENSIONS (1 << 4) +#define GNUTLS_NO_REPLAY_PROTECTION (1 << 5) +#define GNUTLS_NO_SIGNAL (1 << 6) +#define GNUTLS_ALLOW_ID_CHANGE (1 << 7) +#define GNUTLS_ENABLE_FALSE_START (1 << 8) +#define GNUTLS_FORCE_CLIENT_CERT (1 << 9) +#define GNUTLS_NO_TICKETS (1 << 10) +#define GNUTLS_ENABLE_CERT_TYPE_NEG 0 +// Here for compatibility reasons /** * gnutls_alert_level_t: @@ -678,10 +682,10 @@ typedef enum { GNUTLS_HANDSHAKE_HELLO_RETRY_REQUEST = 1025, } gnutls_handshake_description_t; -# define GNUTLS_HANDSHAKE_ANY ((unsigned int)-1) +#define GNUTLS_HANDSHAKE_ANY ((unsigned int)-1) -const char -*gnutls_handshake_description_get_name(gnutls_handshake_description_t type); +const char * +gnutls_handshake_description_get_name(gnutls_handshake_description_t type); /** * gnutls_certificate_status_t: @@ -800,15 +804,15 @@ typedef enum { GNUTLS_TLS1_3 = 5, GNUTLS_DTLS0_9 = 200, - GNUTLS_DTLS1_0 = 201, /* 201 */ + GNUTLS_DTLS1_0 = 201, /* 201 */ GNUTLS_DTLS1_2 = 202, GNUTLS_DTLS_VERSION_MIN = GNUTLS_DTLS0_9, GNUTLS_DTLS_VERSION_MAX = GNUTLS_DTLS1_2, GNUTLS_TLS_VERSION_MAX = GNUTLS_TLS1_3, - GNUTLS_VERSION_UNKNOWN = 0xff /* change it to 0xffff */ + GNUTLS_VERSION_UNKNOWN = 0xff /* change it to 0xffff */ } gnutls_protocol_t; -# define GNUTLS_CRT_RAW GNUTLS_CRT_RAWPK +#define GNUTLS_CRT_RAW GNUTLS_CRT_RAWPK /** * gnutls_certificate_type_t: @@ -857,10 +861,10 @@ typedef enum gnutls_certificate_print_formats { GNUTLS_CRT_PRINT_FULL_NUMBERS = 4 } gnutls_certificate_print_formats_t; -# define GNUTLS_PK_ECC GNUTLS_PK_ECDSA -# define GNUTLS_PK_EC GNUTLS_PK_ECDSA +#define GNUTLS_PK_ECC GNUTLS_PK_ECDSA +#define GNUTLS_PK_EC GNUTLS_PK_ECDSA -# define GNUTLS_PK_ECDHX GNUTLS_PK_ECDH_X25519 +#define GNUTLS_PK_ECDHX GNUTLS_PK_ECDH_X25519 /** * gnutls_pk_algorithm_t: * @GNUTLS_PK_UNKNOWN: Unknown public-key algorithm. @@ -1125,9 +1129,10 @@ typedef enum { /* macros to allow specifying a specific curve in gnutls_privkey_generate() * and gnutls_x509_privkey_generate() */ -# define GNUTLS_CURVE_TO_BITS(curve) (unsigned int)(((unsigned int)1<<31)|((unsigned int)(curve))) -# define GNUTLS_BITS_TO_CURVE(bits) (((unsigned int)(bits)) & 0x7FFFFFFF) -# define GNUTLS_BITS_ARE_CURVE(bits) (((unsigned int)(bits)) & 0x80000000) +#define GNUTLS_CURVE_TO_BITS(curve) \ + (unsigned int)(((unsigned int)1 << 31) | ((unsigned int)(curve))) +#define GNUTLS_BITS_TO_CURVE(bits) (((unsigned int)(bits)) & 0x7FFFFFFF) +#define GNUTLS_BITS_ARE_CURVE(bits) (((unsigned int)(bits)) & 0x80000000) /** * gnutls_sec_param_t: @@ -1161,7 +1166,7 @@ typedef enum { } gnutls_sec_param_t; /* old name */ -# define GNUTLS_SEC_PARAM_NORMAL GNUTLS_SEC_PARAM_MEDIUM +#define GNUTLS_SEC_PARAM_NORMAL GNUTLS_SEC_PARAM_MEDIUM /** * gnutls_channel_binding_t: @@ -1226,7 +1231,7 @@ typedef struct gnutls_session_int *gnutls_session_t; struct gnutls_dh_params_int; typedef struct gnutls_dh_params_int *gnutls_dh_params_t; - /* XXX ugly. */ +/* XXX ugly. */ struct gnutls_x509_privkey_int; typedef struct gnutls_x509_privkey_int *gnutls_rsa_params_t; @@ -1257,9 +1262,9 @@ typedef int gnutls_params_function(gnutls_session_t, gnutls_params_type_t, /* internal functions */ -int gnutls_init(gnutls_session_t * session, unsigned int flags); +int gnutls_init(gnutls_session_t *session, unsigned int flags); void gnutls_deinit(gnutls_session_t session); -# define _gnutls_deinit(x) gnutls_deinit(x) +#define _gnutls_deinit(x) gnutls_deinit(x) int gnutls_bye(gnutls_session_t session, gnutls_close_request_t how); @@ -1267,17 +1272,16 @@ int gnutls_handshake(gnutls_session_t session); int gnutls_reauth(gnutls_session_t session, unsigned int flags); -# define GNUTLS_DEFAULT_HANDSHAKE_TIMEOUT ((unsigned int)-1) -# define GNUTLS_INDEFINITE_TIMEOUT ((unsigned int)-2) +#define GNUTLS_DEFAULT_HANDSHAKE_TIMEOUT ((unsigned int)-1) +#define GNUTLS_INDEFINITE_TIMEOUT ((unsigned int)-2) void gnutls_handshake_set_timeout(gnutls_session_t session, unsigned int ms); int gnutls_rehandshake(gnutls_session_t session); -# define GNUTLS_KU_PEER 1 +#define GNUTLS_KU_PEER 1 int gnutls_session_key_update(gnutls_session_t session, unsigned flags); gnutls_alert_description_t gnutls_alert_get(gnutls_session_t session); -int gnutls_alert_send(gnutls_session_t session, - gnutls_alert_level_t level, +int gnutls_alert_send(gnutls_session_t session, gnutls_alert_level_t level, gnutls_alert_description_t desc); int gnutls_alert_send_appropriate(gnutls_session_t session, int err); const char *gnutls_alert_get_name(gnutls_alert_description_t alert); @@ -1292,8 +1296,8 @@ unsigned int gnutls_sec_param_to_symmetric_bits(gnutls_sec_param_t param) __GNUTLS_CONST__; /* Elliptic curves */ -const char *gnutls_ecc_curve_get_name(gnutls_ecc_curve_t curve) - __GNUTLS_CONST__; +const char * +gnutls_ecc_curve_get_name(gnutls_ecc_curve_t curve) __GNUTLS_CONST__; const char *gnutls_ecc_curve_get_oid(gnutls_ecc_curve_t curve) __GNUTLS_CONST__; const char *gnutls_group_get_name(gnutls_group_t group) __GNUTLS_CONST__; @@ -1319,53 +1323,51 @@ gnutls_certificate_type_get2(gnutls_session_t session, int gnutls_sign_algorithm_get(gnutls_session_t session); int gnutls_sign_algorithm_get_client(gnutls_session_t session); -int gnutls_sign_algorithm_get_requested(gnutls_session_t session, - size_t indx, - gnutls_sign_algorithm_t * algo); +int gnutls_sign_algorithm_get_requested(gnutls_session_t session, size_t indx, + gnutls_sign_algorithm_t *algo); /* the name of the specified algorithms */ -const char *gnutls_cipher_get_name(gnutls_cipher_algorithm_t algorithm) - __GNUTLS_CONST__; -const char *gnutls_mac_get_name(gnutls_mac_algorithm_t algorithm) - __GNUTLS_CONST__; - -const char *gnutls_digest_get_name(gnutls_digest_algorithm_t algorithm) - __GNUTLS_CONST__; -const char *gnutls_digest_get_oid(gnutls_digest_algorithm_t algorithm) - __GNUTLS_CONST__; - -const char *gnutls_kx_get_name(gnutls_kx_algorithm_t algorithm) - __GNUTLS_CONST__; +const char * +gnutls_cipher_get_name(gnutls_cipher_algorithm_t algorithm) __GNUTLS_CONST__; +const char * +gnutls_mac_get_name(gnutls_mac_algorithm_t algorithm) __GNUTLS_CONST__; + +const char * +gnutls_digest_get_name(gnutls_digest_algorithm_t algorithm) __GNUTLS_CONST__; +const char * +gnutls_digest_get_oid(gnutls_digest_algorithm_t algorithm) __GNUTLS_CONST__; + +const char * +gnutls_kx_get_name(gnutls_kx_algorithm_t algorithm) __GNUTLS_CONST__; const char *gnutls_certificate_type_get_name(gnutls_certificate_type_t type) - __GNUTLS_CONST__; -const char *gnutls_pk_get_name(gnutls_pk_algorithm_t algorithm) - __GNUTLS_CONST__; + __GNUTLS_CONST__; +const char * +gnutls_pk_get_name(gnutls_pk_algorithm_t algorithm) __GNUTLS_CONST__; const char *gnutls_pk_get_oid(gnutls_pk_algorithm_t algorithm) __GNUTLS_CONST__; -const char *gnutls_sign_get_name(gnutls_sign_algorithm_t algorithm) - __GNUTLS_CONST__; +const char * +gnutls_sign_get_name(gnutls_sign_algorithm_t algorithm) __GNUTLS_CONST__; const char *gnutls_sign_get_oid(gnutls_sign_algorithm_t sign) __GNUTLS_CONST__; -const char *gnutls_gost_paramset_get_name(gnutls_gost_paramset_t param) - __GNUTLS_CONST__; -const char *gnutls_gost_paramset_get_oid(gnutls_gost_paramset_t param) - __GNUTLS_CONST__; +const char * +gnutls_gost_paramset_get_name(gnutls_gost_paramset_t param) __GNUTLS_CONST__; +const char * +gnutls_gost_paramset_get_oid(gnutls_gost_paramset_t param) __GNUTLS_CONST__; +size_t gnutls_cipher_get_key_size(gnutls_cipher_algorithm_t algorithm) + __GNUTLS_CONST__; size_t -gnutls_cipher_get_key_size(gnutls_cipher_algorithm_t algorithm) -__GNUTLS_CONST__; -size_t gnutls_mac_get_key_size(gnutls_mac_algorithm_t algorithm) - __GNUTLS_CONST__; +gnutls_mac_get_key_size(gnutls_mac_algorithm_t algorithm) __GNUTLS_CONST__; -unsigned gnutls_sign_is_secure(gnutls_sign_algorithm_t algorithm) - __GNUTLS_CONST__; +unsigned +gnutls_sign_is_secure(gnutls_sign_algorithm_t algorithm) __GNUTLS_CONST__; /* It is possible that a signature algorithm is ok to use for short-lived * data (e.g., to sign a TLS session), but not for data that are long-lived * like certificates. This flag is about checking the security of the algorithm * for long-lived data. */ -# define GNUTLS_SIGN_FLAG_SECURE_FOR_CERTS 1 +#define GNUTLS_SIGN_FLAG_SECURE_FOR_CERTS 1 unsigned gnutls_sign_is_secure2(gnutls_sign_algorithm_t algorithm, unsigned int flags) __GNUTLS_CONST__; @@ -1381,11 +1383,11 @@ unsigned gnutls_sign_supports_pk_algorithm(gnutls_sign_algorithm_t sign, gnutls_pk_algorithm_t pk) __GNUTLS_CONST__; -# define gnutls_sign_algorithm_get_name gnutls_sign_get_name +#define gnutls_sign_algorithm_get_name gnutls_sign_get_name gnutls_mac_algorithm_t gnutls_mac_get_id(const char *name) __GNUTLS_CONST__; -gnutls_digest_algorithm_t gnutls_digest_get_id(const char *name) - __GNUTLS_CONST__; +gnutls_digest_algorithm_t +gnutls_digest_get_id(const char *name) __GNUTLS_CONST__; gnutls_cipher_algorithm_t gnutls_cipher_get_id(const char *name) __GNUTLS_CONST__; @@ -1397,8 +1399,8 @@ gnutls_certificate_type_get_id(const char *name) __GNUTLS_CONST__; gnutls_pk_algorithm_t gnutls_pk_get_id(const char *name) __GNUTLS_CONST__; gnutls_sign_algorithm_t gnutls_sign_get_id(const char *name) __GNUTLS_CONST__; gnutls_ecc_curve_t gnutls_ecc_curve_get_id(const char *name) __GNUTLS_CONST__; -gnutls_pk_algorithm_t gnutls_ecc_curve_get_pk(gnutls_ecc_curve_t curve) - __GNUTLS_CONST__; +gnutls_pk_algorithm_t +gnutls_ecc_curve_get_pk(gnutls_ecc_curve_t curve) __GNUTLS_CONST__; gnutls_group_t gnutls_group_get_id(const char *name); gnutls_digest_algorithm_t @@ -1410,26 +1412,25 @@ gnutls_ecc_curve_t gnutls_oid_to_ecc_curve(const char *oid) __GNUTLS_CONST__; gnutls_gost_paramset_t gnutls_oid_to_gost_paramset(const char *oid) __GNUTLS_CONST__; - /* list supported algorithms */ +/* list supported algorithms */ const gnutls_ecc_curve_t *gnutls_ecc_curve_list(void) __GNUTLS_PURE__; const gnutls_group_t *gnutls_group_list(void) __GNUTLS_PURE__; const gnutls_cipher_algorithm_t *gnutls_cipher_list(void) __GNUTLS_PURE__; const gnutls_mac_algorithm_t *gnutls_mac_list(void) __GNUTLS_PURE__; const gnutls_digest_algorithm_t *gnutls_digest_list(void) __GNUTLS_PURE__; const gnutls_protocol_t *gnutls_protocol_list(void) __GNUTLS_PURE__; -const gnutls_certificate_type_t *gnutls_certificate_type_list(void) - __GNUTLS_PURE__; +const gnutls_certificate_type_t * +gnutls_certificate_type_list(void) __GNUTLS_PURE__; const gnutls_kx_algorithm_t *gnutls_kx_list(void) __GNUTLS_PURE__; const gnutls_pk_algorithm_t *gnutls_pk_list(void) __GNUTLS_PURE__; const gnutls_sign_algorithm_t *gnutls_sign_list(void) __GNUTLS_PURE__; -const char *gnutls_cipher_suite_info(size_t idx, - unsigned char *cs_id, - gnutls_kx_algorithm_t * kx, - gnutls_cipher_algorithm_t * cipher, - gnutls_mac_algorithm_t * mac, - gnutls_protocol_t * min_version); - - /* functions for run-time enablement of algorithms */ +const char *gnutls_cipher_suite_info(size_t idx, unsigned char *cs_id, + gnutls_kx_algorithm_t *kx, + gnutls_cipher_algorithm_t *cipher, + gnutls_mac_algorithm_t *mac, + gnutls_protocol_t *min_version); + +/* functions for run-time enablement of algorithms */ int gnutls_ecc_curve_set_enabled(gnutls_ecc_curve_t curve, unsigned int enabled); int gnutls_sign_set_secure(gnutls_sign_algorithm_t sign, unsigned int secure); @@ -1440,7 +1441,7 @@ int gnutls_digest_set_secure(gnutls_digest_algorithm_t dig, int gnutls_protocol_set_enabled(gnutls_protocol_t version, unsigned int enabled); - /* error functions */ +/* error functions */ int gnutls_error_is_fatal(int error) __GNUTLS_CONST__; int gnutls_error_to_alert(int err, int *level); @@ -1453,7 +1454,7 @@ const char *gnutls_strerror_name(int error) __GNUTLS_CONST__; void gnutls_handshake_set_private_extensions(gnutls_session_t session, int allow); int gnutls_handshake_set_random(gnutls_session_t session, - const gnutls_datum_t * random); + const gnutls_datum_t *random); gnutls_handshake_description_t gnutls_handshake_get_last_out(gnutls_session_t session); @@ -1462,7 +1463,7 @@ gnutls_handshake_get_last_in(gnutls_session_t session); /* Record layer functions. */ -# define GNUTLS_HEARTBEAT_WAIT 1 +#define GNUTLS_HEARTBEAT_WAIT 1 int gnutls_heartbeat_ping(gnutls_session_t session, size_t data_size, unsigned int max_tries, unsigned int flags); int gnutls_heartbeat_pong(gnutls_session_t session, unsigned int flags); @@ -1471,69 +1472,63 @@ void gnutls_record_set_timeout(gnutls_session_t session, unsigned int ms); void gnutls_record_disable_padding(gnutls_session_t session); void gnutls_record_cork(gnutls_session_t session); -# define GNUTLS_RECORD_WAIT 1 +#define GNUTLS_RECORD_WAIT 1 int gnutls_record_uncork(gnutls_session_t session, unsigned int flags); size_t gnutls_record_discard_queued(gnutls_session_t session); -int -gnutls_record_get_state(gnutls_session_t session, - unsigned read, - gnutls_datum_t * mac_key, - gnutls_datum_t * IV, - gnutls_datum_t * cipher_key, - unsigned char seq_number[8]); +int gnutls_record_get_state(gnutls_session_t session, unsigned read, + gnutls_datum_t *mac_key, gnutls_datum_t *IV, + gnutls_datum_t *cipher_key, + unsigned char seq_number[8]); -int -gnutls_record_set_state(gnutls_session_t session, - unsigned read, const unsigned char seq_number[8]); +int gnutls_record_set_state(gnutls_session_t session, unsigned read, + const unsigned char seq_number[8]); typedef struct { size_t low; size_t high; } gnutls_range_st; -int gnutls_range_split(gnutls_session_t session, - const gnutls_range_st * orig, - gnutls_range_st * small_range, - gnutls_range_st * rem_range); +int gnutls_range_split(gnutls_session_t session, const gnutls_range_st *orig, + gnutls_range_st *small_range, + gnutls_range_st *rem_range); ssize_t gnutls_record_send(gnutls_session_t session, const void *data, size_t data_size); ssize_t gnutls_record_send2(gnutls_session_t session, const void *data, size_t data_size, size_t pad, unsigned flags); -ssize_t gnutls_record_send_range(gnutls_session_t session, - const void *data, size_t data_size, - const gnutls_range_st * range); -ssize_t gnutls_record_send_file(gnutls_session_t session, int fd, - off_t * offset, size_t count); +ssize_t gnutls_record_send_range(gnutls_session_t session, const void *data, + size_t data_size, + const gnutls_range_st *range); +ssize_t gnutls_record_send_file(gnutls_session_t session, int fd, off_t *offset, + size_t count); ssize_t gnutls_record_recv(gnutls_session_t session, void *data, size_t data_size); typedef struct mbuffer_st *gnutls_packet_t; -ssize_t -gnutls_record_recv_packet(gnutls_session_t session, gnutls_packet_t * packet); +ssize_t gnutls_record_recv_packet(gnutls_session_t session, + gnutls_packet_t *packet); -void gnutls_packet_get(gnutls_packet_t packet, gnutls_datum_t * data, +void gnutls_packet_get(gnutls_packet_t packet, gnutls_datum_t *data, unsigned char *sequence); void gnutls_packet_deinit(gnutls_packet_t packet); -# define gnutls_read gnutls_record_recv -# define gnutls_write gnutls_record_send +#define gnutls_read gnutls_record_recv +#define gnutls_write gnutls_record_send ssize_t gnutls_record_recv_seq(gnutls_session_t session, void *data, size_t data_size, unsigned char *seq); size_t gnutls_record_overhead_size(gnutls_session_t session); -size_t -gnutls_est_record_overhead_size(gnutls_protocol_t version, - gnutls_cipher_algorithm_t cipher, - gnutls_mac_algorithm_t mac, - gnutls_compression_method_t comp, - unsigned int flags) __GNUTLS_CONST__; +size_t gnutls_est_record_overhead_size(gnutls_protocol_t version, + gnutls_cipher_algorithm_t cipher, + gnutls_mac_algorithm_t mac, + gnutls_compression_method_t comp, + unsigned int flags) __GNUTLS_CONST__; void gnutls_session_enable_compatibility_mode(gnutls_session_t session); -# define gnutls_record_set_max_empty_records(session, x) +#define gnutls_record_set_max_empty_records(session, x) unsigned gnutls_record_can_use_length_hiding(gnutls_session_t session); @@ -1556,22 +1551,18 @@ ssize_t gnutls_record_recv_early_data(gnutls_session_t session, void *data, void gnutls_session_force_valid(gnutls_session_t session); -int gnutls_prf(gnutls_session_t session, - size_t label_size, const char *label, - int server_random_first, - size_t extra_size, const char *extra, size_t outsize, char *out); -int gnutls_prf_rfc5705(gnutls_session_t session, - size_t label_size, const char *label, - size_t context_size, const char *context, - size_t outsize, char *out); -int gnutls_prf_early(gnutls_session_t session, - size_t label_size, const char *label, - size_t context_size, const char *context, - size_t outsize, char *out); - -int gnutls_prf_raw(gnutls_session_t session, - size_t label_size, const char *label, - size_t seed_size, const char *seed, +int gnutls_prf(gnutls_session_t session, size_t label_size, const char *label, + int server_random_first, size_t extra_size, const char *extra, + size_t outsize, char *out); +int gnutls_prf_rfc5705(gnutls_session_t session, size_t label_size, + const char *label, size_t context_size, + const char *context, size_t outsize, char *out); +int gnutls_prf_early(gnutls_session_t session, size_t label_size, + const char *label, size_t context_size, + const char *context, size_t outsize, char *out); + +int gnutls_prf_raw(gnutls_session_t session, size_t label_size, + const char *label, size_t seed_size, const char *seed, size_t outsize, char *out); /** @@ -1585,28 +1576,28 @@ typedef enum { } gnutls_server_name_type_t; int gnutls_server_name_set(gnutls_session_t session, - gnutls_server_name_type_t type, - const void *name, size_t name_length); + gnutls_server_name_type_t type, const void *name, + size_t name_length); -int gnutls_server_name_get(gnutls_session_t session, - void *data, size_t *data_length, - unsigned int *type, unsigned int indx); +int gnutls_server_name_get(gnutls_session_t session, void *data, + size_t *data_length, unsigned int *type, + unsigned int indx); unsigned int gnutls_heartbeat_get_timeout(gnutls_session_t session); void gnutls_heartbeat_set_timeouts(gnutls_session_t session, unsigned int retrans_timeout, unsigned int total_timeout); -# define GNUTLS_HB_PEER_ALLOWED_TO_SEND (1) -# define GNUTLS_HB_PEER_NOT_ALLOWED_TO_SEND (1<<1) +#define GNUTLS_HB_PEER_ALLOWED_TO_SEND (1) +#define GNUTLS_HB_PEER_NOT_ALLOWED_TO_SEND (1 << 1) - /* Heartbeat */ +/* Heartbeat */ void gnutls_heartbeat_enable(gnutls_session_t session, unsigned int type); -# define GNUTLS_HB_LOCAL_ALLOWED_TO_SEND (1<<2) +#define GNUTLS_HB_LOCAL_ALLOWED_TO_SEND (1 << 2) unsigned gnutls_heartbeat_allowed(gnutls_session_t session, unsigned int type); - /* Safe renegotiation */ +/* Safe renegotiation */ unsigned gnutls_safe_renegotiation_status(gnutls_session_t session); unsigned gnutls_session_ext_master_secret_status(gnutls_session_t session); unsigned gnutls_session_etm_status(gnutls_session_t session); @@ -1657,19 +1648,19 @@ typedef enum { GNUTLS_SUPPLEMENTAL_UNKNOWN = 0, } gnutls_supplemental_data_format_type_t; -const char -*gnutls_supplemental_get_name(gnutls_supplemental_data_format_type_t type); +const char * +gnutls_supplemental_get_name(gnutls_supplemental_data_format_type_t type); - /* SessionTicket, RFC 5077. */ -int gnutls_session_ticket_key_generate(gnutls_datum_t * key); +/* SessionTicket, RFC 5077. */ +int gnutls_session_ticket_key_generate(gnutls_datum_t *key); int gnutls_session_ticket_enable_client(gnutls_session_t session); int gnutls_session_ticket_enable_server(gnutls_session_t session, - const gnutls_datum_t * key); + const gnutls_datum_t *key); int gnutls_session_ticket_send(gnutls_session_t session, unsigned nr, unsigned flags); - /* SRTP, RFC 5764 */ +/* SRTP, RFC 5764 */ /** * gnutls_srtp_profile_t: @@ -1696,28 +1687,27 @@ int gnutls_srtp_set_profile(gnutls_session_t session, int gnutls_srtp_set_profile_direct(gnutls_session_t session, const char *profiles, const char **err_pos); int gnutls_srtp_get_selected_profile(gnutls_session_t session, - gnutls_srtp_profile_t * profile); + gnutls_srtp_profile_t *profile); const char *gnutls_srtp_get_profile_name(gnutls_srtp_profile_t profile); int gnutls_srtp_get_profile_id(const char *name, - gnutls_srtp_profile_t * profile); -int gnutls_srtp_get_keys(gnutls_session_t session, - void *key_material, + gnutls_srtp_profile_t *profile); +int gnutls_srtp_get_keys(gnutls_session_t session, void *key_material, unsigned int key_material_size, - gnutls_datum_t * client_key, - gnutls_datum_t * client_salt, - gnutls_datum_t * server_key, - gnutls_datum_t * server_salt); + gnutls_datum_t *client_key, + gnutls_datum_t *client_salt, + gnutls_datum_t *server_key, + gnutls_datum_t *server_salt); -int gnutls_srtp_set_mki(gnutls_session_t session, const gnutls_datum_t * mki); -int gnutls_srtp_get_mki(gnutls_session_t session, gnutls_datum_t * mki); +int gnutls_srtp_set_mki(gnutls_session_t session, const gnutls_datum_t *mki); +int gnutls_srtp_get_mki(gnutls_session_t session, gnutls_datum_t *mki); /* COMPRESS_CERTIFICATE extension, RFC8879 */ gnutls_compression_method_t gnutls_compress_certificate_get_selected_method(gnutls_session_t session); -int gnutls_compress_certificate_set_methods(gnutls_session_t session, - const gnutls_compression_method_t * - methods, size_t methods_len); +int gnutls_compress_certificate_set_methods( + gnutls_session_t session, const gnutls_compression_method_t *methods, + size_t methods_len); /* ALPN TLS extension */ @@ -1735,19 +1725,19 @@ typedef enum { GNUTLS_ALPN_SERVER_PRECEDENCE = (1 << 1) } gnutls_alpn_flags_t; -# define GNUTLS_ALPN_MAND GNUTLS_ALPN_MANDATORY +#define GNUTLS_ALPN_MAND GNUTLS_ALPN_MANDATORY int gnutls_alpn_get_selected_protocol(gnutls_session_t session, - gnutls_datum_t * protocol); + gnutls_datum_t *protocol); int gnutls_alpn_set_protocols(gnutls_session_t session, - const gnutls_datum_t * protocols, + const gnutls_datum_t *protocols, unsigned protocols_size, unsigned flags); -int gnutls_key_generate(gnutls_datum_t * key, unsigned int key_size); +int gnutls_key_generate(gnutls_datum_t *key, unsigned int key_size); -# define GNUTLS_PRIORITY_INIT_DEF_APPEND 1 -int gnutls_priority_init(gnutls_priority_t * priority_cache, +#define GNUTLS_PRIORITY_INIT_DEF_APPEND 1 +int gnutls_priority_init(gnutls_priority_t *priority_cache, const char *priorities, const char **err_pos); -int gnutls_priority_init2(gnutls_priority_t * priority_cache, +int gnutls_priority_init2(gnutls_priority_t *priority_cache, const char *priorities, const char **err_pos, unsigned flags); void gnutls_priority_deinit(gnutls_priority_t priority_cache); @@ -1755,14 +1745,14 @@ int gnutls_priority_get_cipher_suite_index(gnutls_priority_t pcache, unsigned int idx, unsigned int *sidx); -# define GNUTLS_PRIORITY_LIST_INIT_KEYWORDS 1 -# define GNUTLS_PRIORITY_LIST_SPECIAL 2 +#define GNUTLS_PRIORITY_LIST_INIT_KEYWORDS 1 +#define GNUTLS_PRIORITY_LIST_SPECIAL 2 const char *gnutls_priority_string_list(unsigned iter, unsigned int flags); int gnutls_priority_set(gnutls_session_t session, gnutls_priority_t priority); -int gnutls_priority_set_direct(gnutls_session_t session, - const char *priorities, const char **err_pos); +int gnutls_priority_set_direct(gnutls_session_t session, const char *priorities, + const char **err_pos); int gnutls_priority_certificate_type_list(gnutls_priority_t pcache, const unsigned int **list); @@ -1775,8 +1765,8 @@ int gnutls_priority_protocol_list(gnutls_priority_t pcache, const unsigned int **list); int gnutls_priority_ecc_curve_list(gnutls_priority_t pcache, const unsigned int **list); -int -gnutls_priority_group_list(gnutls_priority_t pcache, const unsigned int **list); +int gnutls_priority_group_list(gnutls_priority_t pcache, + const unsigned int **list); int gnutls_priority_kx_list(gnutls_priority_t pcache, const unsigned int **list); @@ -1793,40 +1783,37 @@ int gnutls_set_default_priority_append(gnutls_session_t session, const char **err_pos, unsigned flags); /* Returns the name of a cipher suite */ -const char *gnutls_cipher_suite_get_name(gnutls_kx_algorithm_t kx_algorithm, - gnutls_cipher_algorithm_t - cipher_algorithm, - gnutls_mac_algorithm_t mac_algorithm) - __GNUTLS_CONST__; +const char *gnutls_cipher_suite_get_name( + gnutls_kx_algorithm_t kx_algorithm, + gnutls_cipher_algorithm_t cipher_algorithm, + gnutls_mac_algorithm_t mac_algorithm) __GNUTLS_CONST__; const char *gnutls_ciphersuite_get(gnutls_session_t session) __GNUTLS_CONST__; /* get the currently used protocol version */ gnutls_protocol_t gnutls_protocol_get_version(gnutls_session_t session); -const char *gnutls_protocol_get_name(gnutls_protocol_t version) - __GNUTLS_CONST__; +const char * +gnutls_protocol_get_name(gnutls_protocol_t version) __GNUTLS_CONST__; /* get/set session */ -int gnutls_session_set_data(gnutls_session_t session, - const void *session_data, size_t session_data_size); +int gnutls_session_set_data(gnutls_session_t session, const void *session_data, + size_t session_data_size); int gnutls_session_get_data(gnutls_session_t session, void *session_data, size_t *session_data_size); -int gnutls_session_get_data2(gnutls_session_t session, gnutls_datum_t * data); -void gnutls_session_get_random(gnutls_session_t session, - gnutls_datum_t * client, - gnutls_datum_t * server); +int gnutls_session_get_data2(gnutls_session_t session, gnutls_datum_t *data); +void gnutls_session_get_random(gnutls_session_t session, gnutls_datum_t *client, + gnutls_datum_t *server); void gnutls_session_get_master_secret(gnutls_session_t session, - gnutls_datum_t * secret); + gnutls_datum_t *secret); char *gnutls_session_get_desc(gnutls_session_t session); typedef int gnutls_certificate_verify_function(gnutls_session_t); -void gnutls_session_set_verify_function(gnutls_session_t session, - gnutls_certificate_verify_function * - func); +void gnutls_session_set_verify_function( + gnutls_session_t session, gnutls_certificate_verify_function *func); /** * gnutls_vdata_types_t: @@ -1867,35 +1854,33 @@ typedef struct { void gnutls_session_set_verify_cert(gnutls_session_t session, const char *hostname, unsigned flags); -void -gnutls_session_set_verify_cert2(gnutls_session_t session, - gnutls_typed_vdata_st * data, - unsigned elements, unsigned flags); +void gnutls_session_set_verify_cert2(gnutls_session_t session, + gnutls_typed_vdata_st *data, + unsigned elements, unsigned flags); unsigned int gnutls_session_get_verify_cert_status(gnutls_session_t); -int gnutls_session_set_premaster(gnutls_session_t session, - unsigned int entity, +int gnutls_session_set_premaster(gnutls_session_t session, unsigned int entity, gnutls_protocol_t version, gnutls_kx_algorithm_t kx, gnutls_cipher_algorithm_t cipher, gnutls_mac_algorithm_t mac, gnutls_compression_method_t comp, - const gnutls_datum_t * master, - const gnutls_datum_t * session_id); + const gnutls_datum_t *master, + const gnutls_datum_t *session_id); /* returns the session ID */ -# define GNUTLS_MAX_SESSION_ID 32 +#define GNUTLS_MAX_SESSION_ID 32 int gnutls_session_get_id(gnutls_session_t session, void *session_id, size_t *session_id_size); int gnutls_session_get_id2(gnutls_session_t session, - gnutls_datum_t * session_id); + gnutls_datum_t *session_id); -int gnutls_session_set_id(gnutls_session_t session, const gnutls_datum_t * sid); +int gnutls_session_set_id(gnutls_session_t session, const gnutls_datum_t *sid); int gnutls_session_channel_binding(gnutls_session_t session, gnutls_channel_binding_t cbtype, - gnutls_datum_t * cb); + gnutls_datum_t *cb); /* checks if this session is a resumed one */ @@ -1905,7 +1890,7 @@ int gnutls_session_resumption_requested(gnutls_session_t session); typedef int (*gnutls_db_store_func)(void *, gnutls_datum_t key, gnutls_datum_t data); typedef int (*gnutls_db_remove_func)(void *, gnutls_datum_t key); -typedef gnutls_datum_t(*gnutls_db_retr_func) (void *, gnutls_datum_t key); +typedef gnutls_datum_t (*gnutls_db_retr_func)(void *, gnutls_datum_t key); void gnutls_db_set_cache_expiration(gnutls_session_t session, int seconds); unsigned gnutls_db_get_default_cache_expiration(void); @@ -1921,12 +1906,12 @@ void gnutls_db_set_ptr(gnutls_session_t session, void *ptr); void *gnutls_db_get_ptr(gnutls_session_t session); int gnutls_db_check_entry(gnutls_session_t session, gnutls_datum_t session_entry); -time_t gnutls_db_check_entry_time(gnutls_datum_t * entry); -time_t gnutls_db_check_entry_expire_time(gnutls_datum_t * entry); +time_t gnutls_db_check_entry_time(gnutls_datum_t *entry); +time_t gnutls_db_check_entry_expire_time(gnutls_datum_t *entry); -# define GNUTLS_HOOK_POST (1) -# define GNUTLS_HOOK_PRE (0) -# define GNUTLS_HOOK_BOTH (-1) +#define GNUTLS_HOOK_POST (1) +#define GNUTLS_HOOK_PRE (0) +#define GNUTLS_HOOK_BOTH (-1) /** * gnutls_handshake_hook_func: @@ -1941,21 +1926,18 @@ time_t gnutls_db_check_entry_expire_time(gnutls_datum_t * entry); * * Returns: Non zero on error. */ -typedef int (*gnutls_handshake_hook_func)(gnutls_session_t, - unsigned int htype, - unsigned when, - unsigned int incoming, - const gnutls_datum_t * msg); +typedef int (*gnutls_handshake_hook_func)(gnutls_session_t, unsigned int htype, + unsigned when, unsigned int incoming, + const gnutls_datum_t *msg); void gnutls_handshake_set_hook_function(gnutls_session_t session, unsigned int htype, int when, gnutls_handshake_hook_func func); -# define gnutls_handshake_post_client_hello_func gnutls_handshake_simple_hook_func +#define gnutls_handshake_post_client_hello_func \ + gnutls_handshake_simple_hook_func typedef int (*gnutls_handshake_simple_hook_func)(gnutls_session_t); -void -gnutls_handshake_set_post_client_hello_function(gnutls_session_t session, - gnutls_handshake_simple_hook_func - func); +void gnutls_handshake_set_post_client_hello_function( + gnutls_session_t session, gnutls_handshake_simple_hook_func func); void gnutls_handshake_set_max_packet_length(gnutls_session_t session, size_t max); @@ -1969,10 +1951,10 @@ const char *gnutls_check_version(const char *req_version) __GNUTLS_CONST__; * Used as: * if (gnutls_check_version_numerc(3,3,16)) { */ -# define gnutls_check_version_numeric(a,b,c) \ - ((GNUTLS_VERSION_MAJOR >= (a)) && \ - ((GNUTLS_VERSION_NUMBER >= ( ((a) << 16) + ((b) << 8) + (c) )) || \ - gnutls_check_version(#a "." #b "." #c))) +#define gnutls_check_version_numeric(a, b, c) \ + ((GNUTLS_VERSION_MAJOR >= (a)) && \ + ((GNUTLS_VERSION_NUMBER >= (((a) << 16) + ((b) << 8) + (c))) || \ + gnutls_check_version(#a "." #b "." #c))) /* Functions for setting/clearing credentials */ @@ -1984,7 +1966,7 @@ int gnutls_credentials_set(gnutls_session_t session, gnutls_credentials_type_t type, void *cred); int gnutls_credentials_get(gnutls_session_t session, gnutls_credentials_type_t type, void **cred); -# define gnutls_cred_set gnutls_credentials_set +#define gnutls_cred_set gnutls_credentials_set /* x.509 types */ @@ -2013,49 +1995,47 @@ typedef struct gnutls_openpgp_keyring_int *gnutls_openpgp_keyring_t; struct gnutls_certificate_credentials_st; typedef struct gnutls_certificate_credentials_st -*gnutls_certificate_credentials_t; + *gnutls_certificate_credentials_t; typedef gnutls_certificate_credentials_t gnutls_certificate_server_credentials; typedef gnutls_certificate_credentials_t gnutls_certificate_client_credentials; typedef struct gnutls_anon_server_credentials_st -*gnutls_anon_server_credentials_t; + *gnutls_anon_server_credentials_t; typedef struct gnutls_anon_client_credentials_st -*gnutls_anon_client_credentials_t; + *gnutls_anon_client_credentials_t; void gnutls_anon_free_server_credentials(gnutls_anon_server_credentials_t sc); -int -gnutls_anon_allocate_server_credentials(gnutls_anon_server_credentials_t * sc); +int gnutls_anon_allocate_server_credentials( + gnutls_anon_server_credentials_t *sc); void gnutls_anon_set_server_dh_params(gnutls_anon_server_credentials_t res, gnutls_dh_params_t dh_params); -int -gnutls_anon_set_server_known_dh_params(gnutls_anon_server_credentials_t res, - gnutls_sec_param_t sec_param); +int gnutls_anon_set_server_known_dh_params(gnutls_anon_server_credentials_t res, + gnutls_sec_param_t sec_param); -void -gnutls_anon_set_server_params_function(gnutls_anon_server_credentials_t - res, gnutls_params_function * func); +void gnutls_anon_set_server_params_function( + gnutls_anon_server_credentials_t res, gnutls_params_function *func); void gnutls_anon_free_client_credentials(gnutls_anon_client_credentials_t sc); -int -gnutls_anon_allocate_client_credentials(gnutls_anon_client_credentials_t * sc); +int gnutls_anon_allocate_client_credentials( + gnutls_anon_client_credentials_t *sc); /* CERTFILE is an x509 certificate in PEM form. * KEYFILE is a pkcs-1 private key in PEM form (for RSA keys). */ void gnutls_certificate_free_credentials(gnutls_certificate_credentials_t sc); -int -gnutls_certificate_allocate_credentials(gnutls_certificate_credentials_t * res); +int gnutls_certificate_allocate_credentials( + gnutls_certificate_credentials_t *res); -int -gnutls_certificate_get_issuer(gnutls_certificate_credentials_t sc, - gnutls_x509_crt_t cert, - gnutls_x509_crt_t * issuer, unsigned int flags); +int gnutls_certificate_get_issuer(gnutls_certificate_credentials_t sc, + gnutls_x509_crt_t cert, + gnutls_x509_crt_t *issuer, + unsigned int flags); int gnutls_certificate_get_crt_raw(gnutls_certificate_credentials_t sc, unsigned idx1, unsigned idx2, - gnutls_datum_t * cert); + gnutls_datum_t *cert); void gnutls_certificate_free_keys(gnutls_certificate_credentials_t sc); void gnutls_certificate_free_cas(gnutls_certificate_credentials_t sc); @@ -2067,8 +2047,8 @@ void gnutls_certificate_set_dh_params(gnutls_certificate_credentials_t res, int gnutls_certificate_set_known_dh_params(gnutls_certificate_credentials_t res, gnutls_sec_param_t sec_param); -void gnutls_certificate_set_verify_flags(gnutls_certificate_credentials_t - res, unsigned int flags); +void gnutls_certificate_set_verify_flags(gnutls_certificate_credentials_t res, + unsigned int flags); unsigned int gnutls_certificate_get_verify_flags(gnutls_certificate_credentials_t res); @@ -2093,116 +2073,111 @@ typedef enum gnutls_certificate_flags { void gnutls_certificate_set_flags(gnutls_certificate_credentials_t, unsigned flags); -void gnutls_certificate_set_verify_limits(gnutls_certificate_credentials_t - res, unsigned int max_bits, +void gnutls_certificate_set_verify_limits(gnutls_certificate_credentials_t res, + unsigned int max_bits, unsigned int max_depth); -int -gnutls_certificate_set_x509_system_trust(gnutls_certificate_credentials_t cred); +int gnutls_certificate_set_x509_system_trust( + gnutls_certificate_credentials_t cred); -int -gnutls_certificate_set_x509_trust_file(gnutls_certificate_credentials_t - cred, const char *cafile, - gnutls_x509_crt_fmt_t type); -int -gnutls_certificate_set_x509_trust_dir(gnutls_certificate_credentials_t cred, - const char *ca_dir, - gnutls_x509_crt_fmt_t type); +int gnutls_certificate_set_x509_trust_file(gnutls_certificate_credentials_t cred, + const char *cafile, + gnutls_x509_crt_fmt_t type); +int gnutls_certificate_set_x509_trust_dir(gnutls_certificate_credentials_t cred, + const char *ca_dir, + gnutls_x509_crt_fmt_t type); -int gnutls_certificate_set_x509_trust_mem(gnutls_certificate_credentials_t - res, const gnutls_datum_t * ca, +int gnutls_certificate_set_x509_trust_mem(gnutls_certificate_credentials_t res, + const gnutls_datum_t *ca, gnutls_x509_crt_fmt_t type); -int -gnutls_certificate_set_x509_crl_file(gnutls_certificate_credentials_t - res, const char *crlfile, - gnutls_x509_crt_fmt_t type); -int gnutls_certificate_set_x509_crl_mem(gnutls_certificate_credentials_t - res, const gnutls_datum_t * CRL, +int gnutls_certificate_set_x509_crl_file(gnutls_certificate_credentials_t res, + const char *crlfile, + gnutls_x509_crt_fmt_t type); +int gnutls_certificate_set_x509_crl_mem(gnutls_certificate_credentials_t res, + const gnutls_datum_t *CRL, gnutls_x509_crt_fmt_t type); -int -gnutls_certificate_set_x509_key_file(gnutls_certificate_credentials_t - res, const char *certfile, - const char *keyfile, - gnutls_x509_crt_fmt_t type); - -int -gnutls_certificate_set_x509_key_file2(gnutls_certificate_credentials_t - res, const char *certfile, - const char *keyfile, - gnutls_x509_crt_fmt_t type, - const char *pass, unsigned int flags); - -int gnutls_certificate_set_x509_key_mem(gnutls_certificate_credentials_t - res, const gnutls_datum_t * cert, - const gnutls_datum_t * key, +int gnutls_certificate_set_x509_key_file(gnutls_certificate_credentials_t res, + const char *certfile, + const char *keyfile, + gnutls_x509_crt_fmt_t type); + +int gnutls_certificate_set_x509_key_file2(gnutls_certificate_credentials_t res, + const char *certfile, + const char *keyfile, + gnutls_x509_crt_fmt_t type, + const char *pass, unsigned int flags); + +int gnutls_certificate_set_x509_key_mem(gnutls_certificate_credentials_t res, + const gnutls_datum_t *cert, + const gnutls_datum_t *key, gnutls_x509_crt_fmt_t type); -int gnutls_certificate_set_x509_key_mem2(gnutls_certificate_credentials_t - res, const gnutls_datum_t * cert, - const gnutls_datum_t * key, +int gnutls_certificate_set_x509_key_mem2(gnutls_certificate_credentials_t res, + const gnutls_datum_t *cert, + const gnutls_datum_t *key, gnutls_x509_crt_fmt_t type, const char *pass, unsigned int flags); void gnutls_certificate_send_x509_rdn_sequence(gnutls_session_t session, int status); -int gnutls_certificate_set_x509_simple_pkcs12_file - (gnutls_certificate_credentials_t res, const char *pkcs12file, - gnutls_x509_crt_fmt_t type, const char *password); -int gnutls_certificate_set_x509_simple_pkcs12_mem - (gnutls_certificate_credentials_t res, const gnutls_datum_t * p12blob, - gnutls_x509_crt_fmt_t type, const char *password); +int gnutls_certificate_set_x509_simple_pkcs12_file( + gnutls_certificate_credentials_t res, const char *pkcs12file, + gnutls_x509_crt_fmt_t type, const char *password); +int gnutls_certificate_set_x509_simple_pkcs12_mem( + gnutls_certificate_credentials_t res, const gnutls_datum_t *p12blob, + gnutls_x509_crt_fmt_t type, const char *password); /* New functions to allow setting already parsed X.509 stuff. */ int gnutls_certificate_set_x509_key(gnutls_certificate_credentials_t res, - gnutls_x509_crt_t * cert_list, + gnutls_x509_crt_t *cert_list, int cert_list_size, gnutls_x509_privkey_t key); int gnutls_certificate_set_x509_trust(gnutls_certificate_credentials_t res, - gnutls_x509_crt_t * ca_list, + gnutls_x509_crt_t *ca_list, int ca_list_size); int gnutls_certificate_set_x509_crl(gnutls_certificate_credentials_t res, - gnutls_x509_crl_t * crl_list, + gnutls_x509_crl_t *crl_list, int crl_list_size); int gnutls_certificate_get_x509_key(gnutls_certificate_credentials_t res, - unsigned index, - gnutls_x509_privkey_t * key); + unsigned index, gnutls_x509_privkey_t *key); int gnutls_certificate_get_x509_crt(gnutls_certificate_credentials_t res, unsigned index, - gnutls_x509_crt_t ** crt_list, + gnutls_x509_crt_t **crt_list, unsigned *crt_list_size); - /* OCSP status request extension, RFC 6066 */ -typedef int (*gnutls_status_request_ocsp_func) - (gnutls_session_t session, void *ptr, gnutls_datum_t * ocsp_response); +/* OCSP status request extension, RFC 6066 */ +typedef int (*gnutls_status_request_ocsp_func)(gnutls_session_t session, + void *ptr, + gnutls_datum_t *ocsp_response); -void gnutls_certificate_set_ocsp_status_request_function - (gnutls_certificate_credentials_t res, - gnutls_status_request_ocsp_func ocsp_func, void *ptr); +void gnutls_certificate_set_ocsp_status_request_function( + gnutls_certificate_credentials_t res, + gnutls_status_request_ocsp_func ocsp_func, void *ptr); -int gnutls_certificate_set_ocsp_status_request_function2 - (gnutls_certificate_credentials_t res, unsigned idx, - gnutls_status_request_ocsp_func ocsp_func, void *ptr); +int gnutls_certificate_set_ocsp_status_request_function2( + gnutls_certificate_credentials_t res, unsigned idx, + gnutls_status_request_ocsp_func ocsp_func, void *ptr); -int gnutls_certificate_set_ocsp_status_request_file - (gnutls_certificate_credentials_t res, const char *response_file, - unsigned idx); +int gnutls_certificate_set_ocsp_status_request_file( + gnutls_certificate_credentials_t res, const char *response_file, + unsigned idx); -int gnutls_certificate_set_ocsp_status_request_file2 - (gnutls_certificate_credentials_t res, const char *response_file, - unsigned idx, gnutls_x509_crt_fmt_t fmt); +int gnutls_certificate_set_ocsp_status_request_file2( + gnutls_certificate_credentials_t res, const char *response_file, + unsigned idx, gnutls_x509_crt_fmt_t fmt); -int gnutls_certificate_set_ocsp_status_request_mem - (gnutls_certificate_credentials_t res, const gnutls_datum_t * resp, - unsigned idx, gnutls_x509_crt_fmt_t fmt); +int gnutls_certificate_set_ocsp_status_request_mem( + gnutls_certificate_credentials_t res, const gnutls_datum_t *resp, + unsigned idx, gnutls_x509_crt_fmt_t fmt); typedef struct gnutls_ocsp_data_st { - unsigned int version; /* must be zero */ + unsigned int version; /* must be zero */ gnutls_datum_t response; time_t exptime; unsigned char padding[32]; @@ -2212,44 +2187,32 @@ time_t gnutls_certificate_get_ocsp_expiration(gnutls_certificate_credentials_t sc, unsigned idx, int oidx, unsigned flags); -int gnutls_ocsp_status_request_enable_client(gnutls_session_t session, - gnutls_datum_t * responder_id, - size_t responder_id_size, - gnutls_datum_t * - request_extensions); +int gnutls_ocsp_status_request_enable_client( + gnutls_session_t session, gnutls_datum_t *responder_id, + size_t responder_id_size, gnutls_datum_t *request_extensions); int gnutls_ocsp_status_request_get(gnutls_session_t session, - gnutls_datum_t * response); + gnutls_datum_t *response); -# define GNUTLS_OCSP_SR_IS_AVAIL 1 +#define GNUTLS_OCSP_SR_IS_AVAIL 1 unsigned gnutls_ocsp_status_request_is_checked(gnutls_session_t session, unsigned int flags); -int -gnutls_ocsp_status_request_get2(gnutls_session_t session, - unsigned idx, gnutls_datum_t * response); +int gnutls_ocsp_status_request_get2(gnutls_session_t session, unsigned idx, + gnutls_datum_t *response); /* RAW public key functions (RFC7250) */ -int gnutls_certificate_set_rawpk_key_mem(gnutls_certificate_credentials_t cred, - const gnutls_datum_t * spki, - const gnutls_datum_t * pkey, - gnutls_x509_crt_fmt_t format, - const char *pass, - unsigned int key_usage, - const char **names, - unsigned int names_length, - unsigned int flags); - -int gnutls_certificate_set_rawpk_key_file(gnutls_certificate_credentials_t cred, - const char *rawpkfile, - const char *privkeyfile, - gnutls_x509_crt_fmt_t format, - const char *pass, - unsigned int key_usage, - const char **names, - unsigned int names_length, - unsigned int privkey_flags, - unsigned int pkcs11_flags); +int gnutls_certificate_set_rawpk_key_mem( + gnutls_certificate_credentials_t cred, const gnutls_datum_t *spki, + const gnutls_datum_t *pkey, gnutls_x509_crt_fmt_t format, + const char *pass, unsigned int key_usage, const char **names, + unsigned int names_length, unsigned int flags); + +int gnutls_certificate_set_rawpk_key_file( + gnutls_certificate_credentials_t cred, const char *rawpkfile, + const char *privkeyfile, gnutls_x509_crt_fmt_t format, const char *pass, + unsigned int key_usage, const char **names, unsigned int names_length, + unsigned int privkey_flags, unsigned int pkcs11_flags); /* global state functions */ @@ -2267,15 +2230,14 @@ const gnutls_library_config_st *gnutls_get_library_config(void); * * Returns: Number of seconds since the epoch, or (time_t)-1 on errors. */ -typedef time_t(*gnutls_time_func) (time_t * t); +typedef time_t (*gnutls_time_func)(time_t *t); typedef int (*mutex_init_func)(void **mutex); typedef int (*mutex_lock_func)(void **mutex); typedef int (*mutex_unlock_func)(void **mutex); typedef int (*mutex_deinit_func)(void **mutex); -void gnutls_global_set_mutex(mutex_init_func init, - mutex_deinit_func deinit, +void gnutls_global_set_mutex(mutex_init_func init, mutex_deinit_func deinit, mutex_lock_func lock, mutex_unlock_func unlock); typedef void *(*gnutls_alloc_function)(size_t); @@ -2292,9 +2254,9 @@ extern _SYM_EXPORT gnutls_realloc_function gnutls_realloc; extern _SYM_EXPORT gnutls_calloc_function gnutls_calloc; extern _SYM_EXPORT gnutls_free_function gnutls_free; -# ifdef GNUTLS_INTERNAL_BUILD -# define gnutls_free(a) gnutls_free((void *) (a)), a=NULL -# endif +#ifdef GNUTLS_INTERNAL_BUILD +#define gnutls_free(a) gnutls_free((void *)(a)), a = NULL +#endif extern _SYM_EXPORT char *(*gnutls_strdup)(const char *); @@ -2322,33 +2284,32 @@ void gnutls_global_set_log_level(int level); * Returns: Non zero on error. * Since: 3.6.13 */ -typedef int (*gnutls_keylog_func)(gnutls_session_t session, - const char *label, - const gnutls_datum_t * secret); -gnutls_keylog_func gnutls_session_get_keylog_function(const gnutls_session_t - session); +typedef int (*gnutls_keylog_func)(gnutls_session_t session, const char *label, + const gnutls_datum_t *secret); +gnutls_keylog_func +gnutls_session_get_keylog_function(const gnutls_session_t session); void gnutls_session_set_keylog_function(gnutls_session_t session, gnutls_keylog_func func); /* Diffie-Hellman parameter handling. */ -int gnutls_dh_params_init(gnutls_dh_params_t * dh_params); +int gnutls_dh_params_init(gnutls_dh_params_t *dh_params); void gnutls_dh_params_deinit(gnutls_dh_params_t dh_params); int gnutls_dh_params_import_raw(gnutls_dh_params_t dh_params, - const gnutls_datum_t * prime, - const gnutls_datum_t * generator); + const gnutls_datum_t *prime, + const gnutls_datum_t *generator); int gnutls_dh_params_import_dsa(gnutls_dh_params_t dh_params, gnutls_x509_privkey_t key); int gnutls_dh_params_import_raw2(gnutls_dh_params_t dh_params, - const gnutls_datum_t * prime, - const gnutls_datum_t * generator, + const gnutls_datum_t *prime, + const gnutls_datum_t *generator, unsigned key_bits); int gnutls_dh_params_import_raw3(gnutls_dh_params_t dh_params, - const gnutls_datum_t * prime, - const gnutls_datum_t * q, - const gnutls_datum_t * generator); + const gnutls_datum_t *prime, + const gnutls_datum_t *q, + const gnutls_datum_t *generator); int gnutls_dh_params_import_pkcs3(gnutls_dh_params_t params, - const gnutls_datum_t * pkcs3_params, + const gnutls_datum_t *pkcs3_params, gnutls_x509_crt_fmt_t format); int gnutls_dh_params_generate2(gnutls_dh_params_t params, unsigned int bits); int gnutls_dh_params_export_pkcs3(gnutls_dh_params_t params, @@ -2357,38 +2318,39 @@ int gnutls_dh_params_export_pkcs3(gnutls_dh_params_t params, size_t *params_data_size); int gnutls_dh_params_export2_pkcs3(gnutls_dh_params_t params, gnutls_x509_crt_fmt_t format, - gnutls_datum_t * out); + gnutls_datum_t *out); int gnutls_dh_params_export_raw(gnutls_dh_params_t params, - gnutls_datum_t * prime, - gnutls_datum_t * generator, unsigned int *bits); + gnutls_datum_t *prime, + gnutls_datum_t *generator, unsigned int *bits); int gnutls_dh_params_cpy(gnutls_dh_params_t dst, gnutls_dh_params_t src); /* Session stuff */ /* clang-format off */ @DEFINE_IOVEC_T@ -/* clang-format on */ + /* clang-format on */ -typedef ssize_t(*gnutls_pull_func) (gnutls_transport_ptr_t, void *, size_t); -typedef ssize_t(*gnutls_push_func) (gnutls_transport_ptr_t, const void *, + typedef ssize_t (*gnutls_pull_func)(gnutls_transport_ptr_t, void *, + size_t); +typedef ssize_t (*gnutls_push_func)(gnutls_transport_ptr_t, const void *, size_t); int gnutls_system_recv_timeout(gnutls_transport_ptr_t ptr, unsigned int ms); typedef int (*gnutls_pull_timeout_func)(gnutls_transport_ptr_t, unsigned int ms); -typedef ssize_t(*gnutls_vec_push_func) (gnutls_transport_ptr_t, - const giovec_t * iov, int iovcnt); +typedef ssize_t (*gnutls_vec_push_func)(gnutls_transport_ptr_t, + const giovec_t *iov, int iovcnt); typedef int (*gnutls_errno_func)(gnutls_transport_ptr_t); -# if 0 +#if 0 /* This will be defined as macro. */ void gnutls_transport_set_int(gnutls_session_t session, int r); -# endif +#endif void gnutls_transport_set_int2(gnutls_session_t session, int r, int s); -# define gnutls_transport_set_int(s, i) gnutls_transport_set_int2(s, i, i) +#define gnutls_transport_set_int(s, i) gnutls_transport_set_int2(s, i, i) void gnutls_transport_get_int2(gnutls_session_t session, int *r, int *s); int gnutls_transport_get_int(gnutls_session_t session); @@ -2401,8 +2363,8 @@ void gnutls_transport_set_ptr2(gnutls_session_t session, gnutls_transport_ptr_t gnutls_transport_get_ptr(gnutls_session_t session); void gnutls_transport_get_ptr2(gnutls_session_t session, - gnutls_transport_ptr_t * recv_ptr, - gnutls_transport_ptr_t * send_ptr); + gnutls_transport_ptr_t *recv_ptr, + gnutls_transport_ptr_t *send_ptr); void gnutls_transport_set_vec_push_function(gnutls_session_t session, gnutls_vec_push_func vec_func); @@ -2430,7 +2392,7 @@ void gnutls_openpgp_send_cert(gnutls_session_t session, /* This function returns the hash of the given data. */ int gnutls_fingerprint(gnutls_digest_algorithm_t algo, - const gnutls_datum_t * data, void *result, + const gnutls_datum_t *data, void *result, size_t *result_size); /** @@ -2443,48 +2405,43 @@ typedef enum gnutls_random_art { GNUTLS_RANDOM_ART_OPENSSH = 1 } gnutls_random_art_t; -int gnutls_random_art(gnutls_random_art_t type, - const char *key_type, unsigned int key_size, - void *fpr, size_t fpr_size, gnutls_datum_t * art); +int gnutls_random_art(gnutls_random_art_t type, const char *key_type, + unsigned int key_size, void *fpr, size_t fpr_size, + gnutls_datum_t *art); /* IDNA */ -# define GNUTLS_IDNA_FORCE_2008 (1<<1) -int gnutls_idna_map(const char *input, unsigned ilen, gnutls_datum_t * out, +#define GNUTLS_IDNA_FORCE_2008 (1 << 1) +int gnutls_idna_map(const char *input, unsigned ilen, gnutls_datum_t *out, unsigned flags); int gnutls_idna_reverse_map(const char *input, unsigned ilen, - gnutls_datum_t * out, unsigned flags); + gnutls_datum_t *out, unsigned flags); /* SRP */ -typedef struct gnutls_srp_server_credentials_st -*gnutls_srp_server_credentials_t; -typedef struct gnutls_srp_client_credentials_st -*gnutls_srp_client_credentials_t; +typedef struct gnutls_srp_server_credentials_st *gnutls_srp_server_credentials_t; +typedef struct gnutls_srp_client_credentials_st *gnutls_srp_client_credentials_t; void gnutls_srp_free_client_credentials(gnutls_srp_client_credentials_t sc); -int -gnutls_srp_allocate_client_credentials(gnutls_srp_client_credentials_t * sc); +int gnutls_srp_allocate_client_credentials(gnutls_srp_client_credentials_t *sc); int gnutls_srp_set_client_credentials(gnutls_srp_client_credentials_t res, const char *username, const char *password); void gnutls_srp_free_server_credentials(gnutls_srp_server_credentials_t sc); -int -gnutls_srp_allocate_server_credentials(gnutls_srp_server_credentials_t * sc); -int gnutls_srp_set_server_credentials_file(gnutls_srp_server_credentials_t - res, const char *password_file, +int gnutls_srp_allocate_server_credentials(gnutls_srp_server_credentials_t *sc); +int gnutls_srp_set_server_credentials_file(gnutls_srp_server_credentials_t res, + const char *password_file, const char *password_conf_file); const char *gnutls_srp_server_get_username(gnutls_session_t session); void gnutls_srp_set_prime_bits(gnutls_session_t session, unsigned int bits); -int gnutls_srp_verifier(const char *username, - const char *password, - const gnutls_datum_t * salt, - const gnutls_datum_t * generator, - const gnutls_datum_t * prime, gnutls_datum_t * res); +int gnutls_srp_verifier(const char *username, const char *password, + const gnutls_datum_t *salt, + const gnutls_datum_t *generator, + const gnutls_datum_t *prime, gnutls_datum_t *res); /* The static parameters defined in draft-ietf-tls-srp-05 * Those should be used as input to gnutls_srp_verifier(). @@ -2537,50 +2494,40 @@ extern _SYM_EXPORT const unsigned int gnutls_ffdhe_2048_key_bits; typedef int gnutls_srp_server_credentials_function(gnutls_session_t, const char *username, - gnutls_datum_t * salt, - gnutls_datum_t * - verifier, - gnutls_datum_t * - generator, - gnutls_datum_t * prime); -void -gnutls_srp_set_server_credentials_function(gnutls_srp_server_credentials_t - cred, - gnutls_srp_server_credentials_function - * func); - -typedef int gnutls_srp_client_credentials_function(gnutls_session_t, - char **, char **); -void -gnutls_srp_set_client_credentials_function(gnutls_srp_client_credentials_t - cred, - gnutls_srp_client_credentials_function - * func); - -int gnutls_srp_base64_encode(const gnutls_datum_t * data, char *result, + gnutls_datum_t *salt, + gnutls_datum_t *verifier, + gnutls_datum_t *generator, + gnutls_datum_t *prime); +void gnutls_srp_set_server_credentials_function( + gnutls_srp_server_credentials_t cred, + gnutls_srp_server_credentials_function *func); + +typedef int gnutls_srp_client_credentials_function(gnutls_session_t, char **, + char **); +void gnutls_srp_set_client_credentials_function( + gnutls_srp_client_credentials_t cred, + gnutls_srp_client_credentials_function *func); + +int gnutls_srp_base64_encode(const gnutls_datum_t *data, char *result, size_t *result_size); -int gnutls_srp_base64_encode2(const gnutls_datum_t * data, - gnutls_datum_t * result); +int gnutls_srp_base64_encode2(const gnutls_datum_t *data, + gnutls_datum_t *result); -int gnutls_srp_base64_decode(const gnutls_datum_t * b64_data, char *result, +int gnutls_srp_base64_decode(const gnutls_datum_t *b64_data, char *result, size_t *result_size); -int gnutls_srp_base64_decode2(const gnutls_datum_t * b64_data, - gnutls_datum_t * result); +int gnutls_srp_base64_decode2(const gnutls_datum_t *b64_data, + gnutls_datum_t *result); -# define gnutls_srp_base64_encode_alloc gnutls_srp_base64_encode2 -# define gnutls_srp_base64_decode_alloc gnutls_srp_base64_decode2 +#define gnutls_srp_base64_encode_alloc gnutls_srp_base64_encode2 +#define gnutls_srp_base64_decode_alloc gnutls_srp_base64_decode2 -void -gnutls_srp_set_server_fake_salt_seed(gnutls_srp_server_credentials_t - sc, - const gnutls_datum_t * seed, - unsigned int salt_length); +void gnutls_srp_set_server_fake_salt_seed(gnutls_srp_server_credentials_t sc, + const gnutls_datum_t *seed, + unsigned int salt_length); /* PSK stuff */ -typedef struct gnutls_psk_server_credentials_st -*gnutls_psk_server_credentials_t; -typedef struct gnutls_psk_client_credentials_st -*gnutls_psk_client_credentials_t; +typedef struct gnutls_psk_server_credentials_st *gnutls_psk_server_credentials_t; +typedef struct gnutls_psk_client_credentials_st *gnutls_psk_client_credentials_t; /** * gnutls_psk_key_flags: @@ -2595,84 +2542,70 @@ typedef enum gnutls_psk_key_flags { } gnutls_psk_key_flags; void gnutls_psk_free_client_credentials(gnutls_psk_client_credentials_t sc); -int -gnutls_psk_allocate_client_credentials(gnutls_psk_client_credentials_t * sc); +int gnutls_psk_allocate_client_credentials(gnutls_psk_client_credentials_t *sc); int gnutls_psk_set_client_credentials(gnutls_psk_client_credentials_t res, const char *username, - const gnutls_datum_t * key, + const gnutls_datum_t *key, gnutls_psk_key_flags flags); int gnutls_psk_set_client_credentials2(gnutls_psk_client_credentials_t res, - const gnutls_datum_t * username, - const gnutls_datum_t * key, + const gnutls_datum_t *username, + const gnutls_datum_t *key, gnutls_psk_key_flags flags); void gnutls_psk_free_server_credentials(gnutls_psk_server_credentials_t sc); -int -gnutls_psk_allocate_server_credentials(gnutls_psk_server_credentials_t * sc); -int gnutls_psk_set_server_credentials_file(gnutls_psk_server_credentials_t - res, const char *password_file); +int gnutls_psk_allocate_server_credentials(gnutls_psk_server_credentials_t *sc); +int gnutls_psk_set_server_credentials_file(gnutls_psk_server_credentials_t res, + const char *password_file); -int -gnutls_psk_set_server_credentials_hint(gnutls_psk_server_credentials_t - res, const char *hint); +int gnutls_psk_set_server_credentials_hint(gnutls_psk_server_credentials_t res, + const char *hint); const char *gnutls_psk_server_get_username(gnutls_session_t session); int gnutls_psk_server_get_username2(gnutls_session_t session, - gnutls_datum_t * out); + gnutls_datum_t *out); const char *gnutls_psk_client_get_hint(gnutls_session_t session); typedef int gnutls_psk_server_credentials_function(gnutls_session_t, const char *username, - gnutls_datum_t * key); -typedef int gnutls_psk_server_credentials_function2(gnutls_session_t, - const gnutls_datum_t * - username, - gnutls_datum_t * key); -void gnutls_psk_set_server_credentials_function(gnutls_psk_server_credentials_t - cred, - gnutls_psk_server_credentials_function - * func); -void gnutls_psk_set_server_credentials_function2(gnutls_psk_server_credentials_t - cred, - gnutls_psk_server_credentials_function2 - * func); + gnutls_datum_t *key); +typedef int gnutls_psk_server_credentials_function2( + gnutls_session_t, const gnutls_datum_t *username, gnutls_datum_t *key); +void gnutls_psk_set_server_credentials_function( + gnutls_psk_server_credentials_t cred, + gnutls_psk_server_credentials_function *func); +void gnutls_psk_set_server_credentials_function2( + gnutls_psk_server_credentials_t cred, + gnutls_psk_server_credentials_function2 *func); typedef int gnutls_psk_client_credentials_function(gnutls_session_t, char **username, - gnutls_datum_t * key); + gnutls_datum_t *key); typedef int gnutls_psk_client_credentials_function2(gnutls_session_t, - gnutls_datum_t * username, - gnutls_datum_t * key); -void -gnutls_psk_set_client_credentials_function(gnutls_psk_client_credentials_t - cred, - gnutls_psk_client_credentials_function - * func); -void -gnutls_psk_set_client_credentials_function2(gnutls_psk_client_credentials_t - cred, - gnutls_psk_client_credentials_function2 - * func); - -int gnutls_hex_encode(const gnutls_datum_t * data, char *result, + gnutls_datum_t *username, + gnutls_datum_t *key); +void gnutls_psk_set_client_credentials_function( + gnutls_psk_client_credentials_t cred, + gnutls_psk_client_credentials_function *func); +void gnutls_psk_set_client_credentials_function2( + gnutls_psk_client_credentials_t cred, + gnutls_psk_client_credentials_function2 *func); + +int gnutls_hex_encode(const gnutls_datum_t *data, char *result, size_t *result_size); -int gnutls_hex_decode(const gnutls_datum_t * hex_data, void *result, +int gnutls_hex_decode(const gnutls_datum_t *hex_data, void *result, size_t *result_size); -int gnutls_hex_encode2(const gnutls_datum_t * data, gnutls_datum_t * result); -int gnutls_hex_decode2(const gnutls_datum_t * data, gnutls_datum_t * result); +int gnutls_hex_encode2(const gnutls_datum_t *data, gnutls_datum_t *result); +int gnutls_hex_decode2(const gnutls_datum_t *data, gnutls_datum_t *result); -void -gnutls_psk_set_server_dh_params(gnutls_psk_server_credentials_t res, - gnutls_dh_params_t dh_params); +void gnutls_psk_set_server_dh_params(gnutls_psk_server_credentials_t res, + gnutls_dh_params_t dh_params); -int -gnutls_psk_set_server_known_dh_params(gnutls_psk_server_credentials_t res, - gnutls_sec_param_t sec_param); +int gnutls_psk_set_server_known_dh_params(gnutls_psk_server_credentials_t res, + gnutls_sec_param_t sec_param); -void -gnutls_psk_set_server_params_function(gnutls_psk_server_credentials_t - res, gnutls_params_function * func); +void gnutls_psk_set_server_params_function(gnutls_psk_server_credentials_t res, + gnutls_params_function *func); /** * gnutls_x509_subject_alt_name_t: @@ -2739,7 +2672,7 @@ typedef struct gnutls_retr2_st { gnutls_x509_crt_t *x509; gnutls_openpgp_crt_t pgp; } cert; - unsigned int ncerts; /* one for pgp keys */ + unsigned int ncerts; /* one for pgp keys */ union { gnutls_x509_privkey_t x509; @@ -2747,72 +2680,60 @@ typedef struct gnutls_retr2_st { gnutls_pkcs11_privkey_t pkcs11; } key; - unsigned int deinit_all; /* if non zero all keys will be deinited */ + unsigned int deinit_all; /* if non zero all keys will be deinited */ } gnutls_retr2_st; - /* Functions that allow auth_info_t structures handling +/* Functions that allow auth_info_t structures handling */ gnutls_credentials_type_t gnutls_auth_get_type(gnutls_session_t session); gnutls_credentials_type_t gnutls_auth_server_get_type(gnutls_session_t session); gnutls_credentials_type_t gnutls_auth_client_get_type(gnutls_session_t session); - /* DH */ +/* DH */ void gnutls_dh_set_prime_bits(gnutls_session_t session, unsigned int bits); int gnutls_dh_get_secret_bits(gnutls_session_t session); int gnutls_dh_get_peers_public_bits(gnutls_session_t session); int gnutls_dh_get_prime_bits(gnutls_session_t session); -int gnutls_dh_get_group(gnutls_session_t session, gnutls_datum_t * raw_gen, - gnutls_datum_t * raw_prime); -int gnutls_dh_get_pubkey(gnutls_session_t session, gnutls_datum_t * raw_key); +int gnutls_dh_get_group(gnutls_session_t session, gnutls_datum_t *raw_gen, + gnutls_datum_t *raw_prime); +int gnutls_dh_get_pubkey(gnutls_session_t session, gnutls_datum_t *raw_key); - /* X509PKI */ +/* X509PKI */ - /* These are set on the credentials structure. +/* These are set on the credentials structure. */ - /* use gnutls_certificate_set_retrieve_function2() in abstract.h +/* use gnutls_certificate_set_retrieve_function2() in abstract.h * instead. It's much more efficient. */ -typedef int gnutls_certificate_retrieve_function(gnutls_session_t, - const - gnutls_datum_t * - req_ca_rdn, - int nreqs, - const - gnutls_pk_algorithm_t - * pk_algos, - int - pk_algos_length, - gnutls_retr2_st *); - -void -gnutls_certificate_set_retrieve_function(gnutls_certificate_credentials_t - cred, - gnutls_certificate_retrieve_function - * func); - -void -gnutls_certificate_set_verify_function(gnutls_certificate_credentials_t - cred, - gnutls_certificate_verify_function - * func); - -void -gnutls_certificate_server_set_request(gnutls_session_t session, - gnutls_certificate_request_t req); - - /* get data from the session +typedef int gnutls_certificate_retrieve_function( + gnutls_session_t, const gnutls_datum_t *req_ca_rdn, int nreqs, + const gnutls_pk_algorithm_t *pk_algos, int pk_algos_length, + gnutls_retr2_st *); + +void gnutls_certificate_set_retrieve_function( + gnutls_certificate_credentials_t cred, + gnutls_certificate_retrieve_function *func); + +void gnutls_certificate_set_verify_function( + gnutls_certificate_credentials_t cred, + gnutls_certificate_verify_function *func); + +void gnutls_certificate_server_set_request(gnutls_session_t session, + gnutls_certificate_request_t req); + +/* get data from the session */ -const gnutls_datum_t *gnutls_certificate_get_peers(gnutls_session_t session, unsigned int - *list_size); +const gnutls_datum_t *gnutls_certificate_get_peers(gnutls_session_t session, + unsigned int *list_size); const gnutls_datum_t *gnutls_certificate_get_ours(gnutls_session_t session); int gnutls_certificate_get_peers_subkey_id(gnutls_session_t session, - gnutls_datum_t * id); + gnutls_datum_t *id); time_t gnutls_certificate_activation_time_peers(gnutls_session_t session); time_t gnutls_certificate_expiration_time_peers(gnutls_session_t session); @@ -2824,131 +2745,113 @@ int gnutls_certificate_verify_peers3(gnutls_session_t session, const char *hostname, unsigned int *status); -int -gnutls_certificate_verify_peers(gnutls_session_t session, - gnutls_typed_vdata_st * data, - unsigned int elements, unsigned int *status); +int gnutls_certificate_verify_peers(gnutls_session_t session, + gnutls_typed_vdata_st *data, + unsigned int elements, + unsigned int *status); int gnutls_certificate_verification_status_print(unsigned int status, - gnutls_certificate_type_t - type, - gnutls_datum_t * out, + gnutls_certificate_type_t type, + gnutls_datum_t *out, unsigned int flags); -int gnutls_pem_base64_encode(const char *msg, const gnutls_datum_t * data, +int gnutls_pem_base64_encode(const char *msg, const gnutls_datum_t *data, char *result, size_t *result_size); -int gnutls_pem_base64_decode(const char *header, - const gnutls_datum_t * b64_data, +int gnutls_pem_base64_decode(const char *header, const gnutls_datum_t *b64_data, unsigned char *result, size_t *result_size); -int gnutls_pem_base64_encode2(const char *msg, - const gnutls_datum_t * data, - gnutls_datum_t * result); +int gnutls_pem_base64_encode2(const char *msg, const gnutls_datum_t *data, + gnutls_datum_t *result); int gnutls_pem_base64_decode2(const char *header, - const gnutls_datum_t * b64_data, - gnutls_datum_t * result); + const gnutls_datum_t *b64_data, + gnutls_datum_t *result); -int gnutls_base64_encode2(const gnutls_datum_t * data, gnutls_datum_t * result); -int gnutls_base64_decode2(const gnutls_datum_t * b64_data, - gnutls_datum_t * result); +int gnutls_base64_encode2(const gnutls_datum_t *data, gnutls_datum_t *result); +int gnutls_base64_decode2(const gnutls_datum_t *b64_data, + gnutls_datum_t *result); -# define gnutls_pem_base64_encode_alloc gnutls_pem_base64_encode2 -# define gnutls_pem_base64_decode_alloc gnutls_pem_base64_decode2 +#define gnutls_pem_base64_encode_alloc gnutls_pem_base64_encode2 +#define gnutls_pem_base64_decode_alloc gnutls_pem_base64_decode2 - /* key_usage will be an OR of the following values: +/* key_usage will be an OR of the following values: */ - /* when the key is to be used for signing: */ -# define GNUTLS_KEY_DIGITAL_SIGNATURE 128 -# define GNUTLS_KEY_NON_REPUDIATION 64 - /* when the key is to be used for encryption: */ -# define GNUTLS_KEY_KEY_ENCIPHERMENT 32 -# define GNUTLS_KEY_DATA_ENCIPHERMENT 16 -# define GNUTLS_KEY_KEY_AGREEMENT 8 -# define GNUTLS_KEY_KEY_CERT_SIGN 4 -# define GNUTLS_KEY_CRL_SIGN 2 -# define GNUTLS_KEY_ENCIPHER_ONLY 1 -# define GNUTLS_KEY_DECIPHER_ONLY 32768 - -void -gnutls_certificate_set_params_function(gnutls_certificate_credentials_t - res, gnutls_params_function * func); +/* when the key is to be used for signing: */ +#define GNUTLS_KEY_DIGITAL_SIGNATURE 128 +#define GNUTLS_KEY_NON_REPUDIATION 64 +/* when the key is to be used for encryption: */ +#define GNUTLS_KEY_KEY_ENCIPHERMENT 32 +#define GNUTLS_KEY_DATA_ENCIPHERMENT 16 +#define GNUTLS_KEY_KEY_AGREEMENT 8 +#define GNUTLS_KEY_KEY_CERT_SIGN 4 +#define GNUTLS_KEY_CRL_SIGN 2 +#define GNUTLS_KEY_ENCIPHER_ONLY 1 +#define GNUTLS_KEY_DECIPHER_ONLY 32768 + +void gnutls_certificate_set_params_function( + gnutls_certificate_credentials_t res, gnutls_params_function *func); void gnutls_anon_set_params_function(gnutls_anon_server_credentials_t res, - gnutls_params_function * func); + gnutls_params_function *func); void gnutls_psk_set_params_function(gnutls_psk_server_credentials_t res, - gnutls_params_function * func); + gnutls_params_function *func); -int gnutls_hex2bin(const char *hex_data, size_t hex_size, - void *bin_data, size_t *bin_size); +int gnutls_hex2bin(const char *hex_data, size_t hex_size, void *bin_data, + size_t *bin_size); - /* Trust on first use (or ssh like) functions */ +/* Trust on first use (or ssh like) functions */ - /* stores the provided information to a database +/* stores the provided information to a database */ -typedef int (*gnutls_tdb_store_func)(const char *db_name, - const char *host, - const char *service, - time_t expiration, - const gnutls_datum_t * pubkey); - -typedef int (*gnutls_tdb_store_commitment_func)(const char *db_name, - const char *host, - const char *service, - time_t expiration, - gnutls_digest_algorithm_t - hash_algo, - const gnutls_datum_t * hash); - - /* searches for the provided host/service pair that match the +typedef int (*gnutls_tdb_store_func)(const char *db_name, const char *host, + const char *service, time_t expiration, + const gnutls_datum_t *pubkey); + +typedef int (*gnutls_tdb_store_commitment_func)( + const char *db_name, const char *host, const char *service, + time_t expiration, gnutls_digest_algorithm_t hash_algo, + const gnutls_datum_t *hash); + +/* searches for the provided host/service pair that match the * provided public key in the database. */ -typedef int (*gnutls_tdb_verify_func)(const char *db_name, - const char *host, +typedef int (*gnutls_tdb_verify_func)(const char *db_name, const char *host, const char *service, - const gnutls_datum_t * pubkey); + const gnutls_datum_t *pubkey); struct gnutls_tdb_int; typedef struct gnutls_tdb_int *gnutls_tdb_t; -int gnutls_tdb_init(gnutls_tdb_t * tdb); +int gnutls_tdb_init(gnutls_tdb_t *tdb); void gnutls_tdb_set_store_func(gnutls_tdb_t tdb, gnutls_tdb_store_func store); -void gnutls_tdb_set_store_commitment_func(gnutls_tdb_t tdb, - gnutls_tdb_store_commitment_func - cstore); +void gnutls_tdb_set_store_commitment_func( + gnutls_tdb_t tdb, gnutls_tdb_store_commitment_func cstore); void gnutls_tdb_set_verify_func(gnutls_tdb_t tdb, gnutls_tdb_verify_func verify); void gnutls_tdb_deinit(gnutls_tdb_t tdb); -int gnutls_verify_stored_pubkey(const char *db_name, - gnutls_tdb_t tdb, - const char *host, - const char *service, +int gnutls_verify_stored_pubkey(const char *db_name, gnutls_tdb_t tdb, + const char *host, const char *service, gnutls_certificate_type_t cert_type, - const gnutls_datum_t * cert, - unsigned int flags); - -# define GNUTLS_SCOMMIT_FLAG_ALLOW_BROKEN 1 -int gnutls_store_commitment(const char *db_name, - gnutls_tdb_t tdb, - const char *host, - const char *service, + const gnutls_datum_t *cert, unsigned int flags); + +#define GNUTLS_SCOMMIT_FLAG_ALLOW_BROKEN 1 +int gnutls_store_commitment(const char *db_name, gnutls_tdb_t tdb, + const char *host, const char *service, gnutls_digest_algorithm_t hash_algo, - const gnutls_datum_t * hash, - time_t expiration, unsigned int flags); + const gnutls_datum_t *hash, time_t expiration, + unsigned int flags); -int gnutls_store_pubkey(const char *db_name, - gnutls_tdb_t tdb, - const char *host, +int gnutls_store_pubkey(const char *db_name, gnutls_tdb_t tdb, const char *host, const char *service, gnutls_certificate_type_t cert_type, - const gnutls_datum_t * cert, - time_t expiration, unsigned int flags); + const gnutls_datum_t *cert, time_t expiration, + unsigned int flags); - /* Other helper functions */ -int gnutls_load_file(const char *filename, gnutls_datum_t * data); +/* Other helper functions */ +int gnutls_load_file(const char *filename, gnutls_datum_t *data); unsigned gnutls_url_is_supported(const char *url); - /* PIN callback */ +/* PIN callback */ /** * gnutls_pin_flag_t: @@ -2970,12 +2873,12 @@ typedef enum { GNUTLS_PIN_WRONG = (1 << 5) } gnutls_pin_flag_t; -# define GNUTLS_PKCS11_PIN_USER GNUTLS_PIN_USER -# define GNUTLS_PKCS11_PIN_SO GNUTLS_PIN_SO -# define GNUTLS_PKCS11_PIN_FINAL_TRY GNUTLS_PIN_FINAL_TRY -# define GNUTLS_PKCS11_PIN_COUNT_LOW GNUTLS_PIN_COUNT_LOW -# define GNUTLS_PKCS11_PIN_CONTEXT_SPECIFIC GNUTLS_PIN_CONTEXT_SPECIFIC -# define GNUTLS_PKCS11_PIN_WRONG GNUTLS_PIN_WRONG +#define GNUTLS_PKCS11_PIN_USER GNUTLS_PIN_USER +#define GNUTLS_PKCS11_PIN_SO GNUTLS_PIN_SO +#define GNUTLS_PKCS11_PIN_FINAL_TRY GNUTLS_PIN_FINAL_TRY +#define GNUTLS_PKCS11_PIN_COUNT_LOW GNUTLS_PIN_COUNT_LOW +#define GNUTLS_PKCS11_PIN_CONTEXT_SPECIFIC GNUTLS_PIN_CONTEXT_SPECIFIC +#define GNUTLS_PKCS11_PIN_WRONG GNUTLS_PIN_WRONG /** * gnutls_pin_callback_t: @@ -3013,8 +2916,8 @@ typedef enum { typedef int (*gnutls_pin_callback_t)(void *userdata, int attempt, const char *token_url, const char *token_label, - unsigned int flags, - char *pin, size_t pin_max); + unsigned int flags, char *pin, + size_t pin_max); void gnutls_certificate_set_pin_function(gnutls_certificate_credentials_t, gnutls_pin_callback_t fn, @@ -3026,9 +2929,9 @@ typedef struct gnutls_buffer_st *gnutls_buffer_t; int gnutls_buffer_append_data(gnutls_buffer_t, const void *data, size_t data_size); -# define GNUTLS_UTF8_IGNORE_ERRS 1 +#define GNUTLS_UTF8_IGNORE_ERRS 1 int gnutls_utf8_password_normalize(const unsigned char *password, - unsigned password_len, gnutls_datum_t * out, + unsigned password_len, gnutls_datum_t *out, unsigned flags); /* Public extensions related functions */ @@ -3054,15 +2957,15 @@ typedef int (*gnutls_ext_pack_func)(gnutls_ext_priv_data_t data, gnutls_buffer_t packed_data); typedef int (*gnutls_ext_unpack_func)(gnutls_buffer_t packed_data, - gnutls_ext_priv_data_t * data); + gnutls_ext_priv_data_t *data); -# define GNUTLS_EXT_RAW_FLAG_TLS_CLIENT_HELLO 1 -# define GNUTLS_EXT_RAW_FLAG_DTLS_CLIENT_HELLO (1<<1) +#define GNUTLS_EXT_RAW_FLAG_TLS_CLIENT_HELLO 1 +#define GNUTLS_EXT_RAW_FLAG_DTLS_CLIENT_HELLO (1 << 1) typedef int (*gnutls_ext_raw_process_func)(void *ctx, unsigned tls_id, const unsigned char *data, unsigned data_size); int gnutls_ext_raw_parse(void *ctx, gnutls_ext_raw_process_func cb, - const gnutls_datum_t * data, unsigned int flags); + const gnutls_datum_t *data, unsigned int flags); /** * gnutls_ext_parse_type_t: @@ -3105,7 +3008,7 @@ typedef enum { GNUTLS_EXT_FLAG_CLIENT_HELLO = (1 << 1), GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO = (1 << 2), GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO = (1 << 3), - GNUTLS_EXT_FLAG_EE = (1 << 4), /* ENCRYPTED */ + GNUTLS_EXT_FLAG_EE = (1 << 4), /* ENCRYPTED */ GNUTLS_EXT_FLAG_HRR = (1 << 5), GNUTLS_EXT_FLAG_IGNORE_CLIENT_REQUEST = (1 << 6), GNUTLS_EXT_FLAG_TLS = (1 << 7), @@ -3148,13 +3051,11 @@ int gnutls_supplemental_register(const char *name, gnutls_supp_recv_func supp_recv_func, gnutls_supp_send_func supp_send_func); -int gnutls_session_supplemental_register(gnutls_session_t session, - const char *name, - gnutls_supplemental_data_format_type_t - type, - gnutls_supp_recv_func supp_recv_func, - gnutls_supp_send_func supp_send_func, - unsigned int flags); +int gnutls_session_supplemental_register( + gnutls_session_t session, const char *name, + gnutls_supplemental_data_format_type_t type, + gnutls_supp_recv_func supp_recv_func, + gnutls_supp_send_func supp_send_func, unsigned int flags); void gnutls_supplemental_recv(gnutls_session_t session, unsigned do_recv_supplemental); @@ -3166,7 +3067,7 @@ void gnutls_supplemental_send(gnutls_session_t session, typedef struct gnutls_anti_replay_st *gnutls_anti_replay_t; -int gnutls_anti_replay_init(gnutls_anti_replay_t * anti_replay); +int gnutls_anti_replay_init(gnutls_anti_replay_t *anti_replay); void gnutls_anti_replay_deinit(gnutls_anti_replay_t anti_replay); void gnutls_anti_replay_set_window(gnutls_anti_replay_t anti_replay, unsigned int window); @@ -3174,8 +3075,8 @@ void gnutls_anti_replay_enable(gnutls_session_t session, gnutls_anti_replay_t anti_replay); typedef int (*gnutls_db_add_func)(void *, time_t exp_time, - const gnutls_datum_t * key, - const gnutls_datum_t * data); + const gnutls_datum_t *key, + const gnutls_datum_t *data); void gnutls_anti_replay_set_add_function(gnutls_anti_replay_t, gnutls_db_add_func add_func); @@ -3218,19 +3119,16 @@ typedef enum { * Since: 3.7.0 */ typedef int (*gnutls_handshake_read_func)(gnutls_session_t session, - gnutls_record_encryption_level_t - level, + gnutls_record_encryption_level_t level, gnutls_handshake_description_t htype, const void *data, size_t data_size); -void -gnutls_handshake_set_read_function(gnutls_session_t session, - gnutls_handshake_read_func func); +void gnutls_handshake_set_read_function(gnutls_session_t session, + gnutls_handshake_read_func func); -int -gnutls_handshake_write(gnutls_session_t session, - gnutls_record_encryption_level_t level, - const void *data, size_t data_size); +int gnutls_handshake_write(gnutls_session_t session, + gnutls_record_encryption_level_t level, + const void *data, size_t data_size); /** * gnutls_handshake_secret_func: @@ -3246,15 +3144,12 @@ gnutls_handshake_write(gnutls_session_t session, * Returns: Non zero on error. * Since: 3.7.0 */ -typedef int (*gnutls_handshake_secret_func)(gnutls_session_t session, - gnutls_record_encryption_level_t - level, const void *secret_read, - const void *secret_write, - size_t secret_size); +typedef int (*gnutls_handshake_secret_func)( + gnutls_session_t session, gnutls_record_encryption_level_t level, + const void *secret_read, const void *secret_write, size_t secret_size); -void -gnutls_handshake_set_secret_function(gnutls_session_t session, - gnutls_handshake_secret_func func); +void gnutls_handshake_set_secret_function(gnutls_session_t session, + gnutls_handshake_secret_func func); /** * gnutls_alert_read_func: @@ -3274,9 +3169,8 @@ typedef int (*gnutls_alert_read_func)(gnutls_session_t session, gnutls_alert_level_t alert_level, gnutls_alert_description_t alert_desc); -void -gnutls_alert_set_read_function(gnutls_session_t session, - gnutls_alert_read_func func); +void gnutls_alert_set_read_function(gnutls_session_t session, + gnutls_alert_read_func func); /* FIPS140-2 related functions */ unsigned gnutls_fips140_mode_enabled(void); @@ -3305,23 +3199,29 @@ typedef enum gnutls_fips_mode_t { GNUTLS_FIPS140_LOG = 4 } gnutls_fips_mode_t; -# define GNUTLS_FIPS140_SET_MODE_THREAD 1 +#define GNUTLS_FIPS140_SET_MODE_THREAD 1 void gnutls_fips140_set_mode(gnutls_fips_mode_t mode, unsigned flags); -# define GNUTLS_FIPS140_SET_LAX_MODE() do { \ - if (gnutls_fips140_mode_enabled()) \ - gnutls_fips140_set_mode(GNUTLS_FIPS140_LAX, GNUTLS_FIPS140_SET_MODE_THREAD); \ - } while(0) - -# define GNUTLS_FIPS140_SET_STRICT_MODE() do { \ - if (gnutls_fips140_mode_enabled()) \ - gnutls_fips140_set_mode(GNUTLS_FIPS140_STRICT, GNUTLS_FIPS140_SET_MODE_THREAD); \ - } while(0) +#define GNUTLS_FIPS140_SET_LAX_MODE() \ + do { \ + if (gnutls_fips140_mode_enabled()) \ + gnutls_fips140_set_mode( \ + GNUTLS_FIPS140_LAX, \ + GNUTLS_FIPS140_SET_MODE_THREAD); \ + } while (0) + +#define GNUTLS_FIPS140_SET_STRICT_MODE() \ + do { \ + if (gnutls_fips140_mode_enabled()) \ + gnutls_fips140_set_mode( \ + GNUTLS_FIPS140_STRICT, \ + GNUTLS_FIPS140_SET_MODE_THREAD); \ + } while (0) typedef struct gnutls_fips140_context_st *gnutls_fips140_context_t; -int gnutls_fips140_context_init(gnutls_fips140_context_t * context); +int gnutls_fips140_context_init(gnutls_fips140_context_t *context); void gnutls_fips140_context_deinit(gnutls_fips140_context_t context); /** @@ -3380,264 +3280,269 @@ typedef enum { gnutls_transport_ktls_enable_flags_t gnutls_transport_is_ktls_enabled(gnutls_session_t session); - /* Gnutls error codes. The mapping to a TLS alert is also shown in +/* Gnutls error codes. The mapping to a TLS alert is also shown in * comments. */ -# define GNUTLS_E_SUCCESS 0 -# define GNUTLS_E_UNKNOWN_COMPRESSION_ALGORITHM -3 -# define GNUTLS_E_UNKNOWN_CIPHER_TYPE -6 -# define GNUTLS_E_LARGE_PACKET -7 -# define GNUTLS_E_UNSUPPORTED_VERSION_PACKET -8 /* GNUTLS_A_PROTOCOL_VERSION */ -# define GNUTLS_E_TLS_PACKET_DECODING_ERROR GNUTLS_E_UNEXPECTED_PACKET_LENGTH -# define GNUTLS_E_UNEXPECTED_PACKET_LENGTH -9 /* GNUTLS_A_DECODE_ERROR */ -# define GNUTLS_E_INVALID_SESSION -10 -# define GNUTLS_E_FATAL_ALERT_RECEIVED -12 -# define GNUTLS_E_UNEXPECTED_PACKET -15 /* GNUTLS_A_UNEXPECTED_MESSAGE */ -# define GNUTLS_E_WARNING_ALERT_RECEIVED -16 -# define GNUTLS_E_ERROR_IN_FINISHED_PACKET -18 -# define GNUTLS_E_UNEXPECTED_HANDSHAKE_PACKET -19 -# define GNUTLS_E_UNKNOWN_CIPHER_SUITE -21 - /* GNUTLS_A_HANDSHAKE_FAILURE */ -# define GNUTLS_E_UNWANTED_ALGORITHM -22 -# define GNUTLS_E_MPI_SCAN_FAILED -23 -# define GNUTLS_E_DECRYPTION_FAILED -24 /* GNUTLS_A_DECRYPTION_FAILED, GNUTLS_A_BAD_RECORD_MAC */ -# define GNUTLS_E_MEMORY_ERROR -25 -# define GNUTLS_E_DECOMPRESSION_FAILED -26 /* GNUTLS_A_DECOMPRESSION_FAILURE */ -# define GNUTLS_E_COMPRESSION_FAILED -27 -# define GNUTLS_E_AGAIN -28 -# define GNUTLS_E_EXPIRED -29 -# define GNUTLS_E_DB_ERROR -30 -# define GNUTLS_E_SRP_PWD_ERROR GNUTLS_E_KEYFILE_ERROR -# define GNUTLS_E_KEYFILE_ERROR -31 -# define GNUTLS_E_INSUFFICIENT_CREDENTIALS -32 -# define GNUTLS_E_INSUFICIENT_CREDENTIALS GNUTLS_E_INSUFFICIENT_CREDENTIALS /* for backwards compatibility only */ -# define GNUTLS_E_INSUFFICIENT_CRED GNUTLS_E_INSUFFICIENT_CREDENTIALS -# define GNUTLS_E_INSUFICIENT_CRED GNUTLS_E_INSUFFICIENT_CREDENTIALS /* for backwards compatibility only */ - -# define GNUTLS_E_HASH_FAILED -33 -# define GNUTLS_E_BASE64_DECODING_ERROR -34 - -# define GNUTLS_E_MPI_PRINT_FAILED -35 -# define GNUTLS_E_REHANDSHAKE -37 /* GNUTLS_A_NO_RENEGOTIATION */ -# define GNUTLS_E_GOT_APPLICATION_DATA -38 -# define GNUTLS_E_RECORD_LIMIT_REACHED -39 -# define GNUTLS_E_ENCRYPTION_FAILED -40 - -# define GNUTLS_E_PK_ENCRYPTION_FAILED -44 -# define GNUTLS_E_PK_DECRYPTION_FAILED -45 -# define GNUTLS_E_PK_SIGN_FAILED -46 -# define GNUTLS_E_X509_UNSUPPORTED_CRITICAL_EXTENSION -47 -# define GNUTLS_E_KEY_USAGE_VIOLATION -48 -# define GNUTLS_E_NO_CERTIFICATE_FOUND -49 /* GNUTLS_A_BAD_CERTIFICATE */ -# define GNUTLS_E_INVALID_REQUEST -50 -# define GNUTLS_E_SHORT_MEMORY_BUFFER -51 -# define GNUTLS_E_INTERRUPTED -52 -# define GNUTLS_E_PUSH_ERROR -53 -# define GNUTLS_E_PULL_ERROR -54 -# define GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER -55/* GNUTLS_A_ILLEGAL_PARAMETER */ -# define GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE -56 -# define GNUTLS_E_PKCS1_WRONG_PAD -57 -# define GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION -58 -# define GNUTLS_E_INTERNAL_ERROR -59 -# define GNUTLS_E_DH_PRIME_UNACCEPTABLE -63 -# define GNUTLS_E_FILE_ERROR -64 -# define GNUTLS_E_TOO_MANY_EMPTY_PACKETS -78 -# define GNUTLS_E_UNKNOWN_PK_ALGORITHM -80 -# define GNUTLS_E_TOO_MANY_HANDSHAKE_PACKETS -81 -# define GNUTLS_E_RECEIVED_DISALLOWED_NAME -82 /* GNUTLS_A_ILLEGAL_PARAMETER */ -# define GNUTLS_E_CERTIFICATE_REQUIRED -112 /* GNUTLS_A_CERTIFICATE_REQUIRED */ - - /* returned if you need to generate temporary RSA +#define GNUTLS_E_SUCCESS 0 +#define GNUTLS_E_UNKNOWN_COMPRESSION_ALGORITHM -3 +#define GNUTLS_E_UNKNOWN_CIPHER_TYPE -6 +#define GNUTLS_E_LARGE_PACKET -7 +#define GNUTLS_E_UNSUPPORTED_VERSION_PACKET -8 /* GNUTLS_A_PROTOCOL_VERSION */ +#define GNUTLS_E_TLS_PACKET_DECODING_ERROR GNUTLS_E_UNEXPECTED_PACKET_LENGTH +#define GNUTLS_E_UNEXPECTED_PACKET_LENGTH -9 /* GNUTLS_A_DECODE_ERROR */ +#define GNUTLS_E_INVALID_SESSION -10 +#define GNUTLS_E_FATAL_ALERT_RECEIVED -12 +#define GNUTLS_E_UNEXPECTED_PACKET -15 /* GNUTLS_A_UNEXPECTED_MESSAGE */ +#define GNUTLS_E_WARNING_ALERT_RECEIVED -16 +#define GNUTLS_E_ERROR_IN_FINISHED_PACKET -18 +#define GNUTLS_E_UNEXPECTED_HANDSHAKE_PACKET -19 +#define GNUTLS_E_UNKNOWN_CIPHER_SUITE -21 +/* GNUTLS_A_HANDSHAKE_FAILURE */ +#define GNUTLS_E_UNWANTED_ALGORITHM -22 +#define GNUTLS_E_MPI_SCAN_FAILED -23 +#define GNUTLS_E_DECRYPTION_FAILED \ + -24 /* GNUTLS_A_DECRYPTION_FAILED, GNUTLS_A_BAD_RECORD_MAC */ +#define GNUTLS_E_MEMORY_ERROR -25 +#define GNUTLS_E_DECOMPRESSION_FAILED -26 /* GNUTLS_A_DECOMPRESSION_FAILURE */ +#define GNUTLS_E_COMPRESSION_FAILED -27 +#define GNUTLS_E_AGAIN -28 +#define GNUTLS_E_EXPIRED -29 +#define GNUTLS_E_DB_ERROR -30 +#define GNUTLS_E_SRP_PWD_ERROR GNUTLS_E_KEYFILE_ERROR +#define GNUTLS_E_KEYFILE_ERROR -31 +#define GNUTLS_E_INSUFFICIENT_CREDENTIALS -32 +#define GNUTLS_E_INSUFICIENT_CREDENTIALS \ + GNUTLS_E_INSUFFICIENT_CREDENTIALS /* for backwards compatibility only */ +#define GNUTLS_E_INSUFFICIENT_CRED GNUTLS_E_INSUFFICIENT_CREDENTIALS +#define GNUTLS_E_INSUFICIENT_CRED \ + GNUTLS_E_INSUFFICIENT_CREDENTIALS /* for backwards compatibility only */ + +#define GNUTLS_E_HASH_FAILED -33 +#define GNUTLS_E_BASE64_DECODING_ERROR -34 + +#define GNUTLS_E_MPI_PRINT_FAILED -35 +#define GNUTLS_E_REHANDSHAKE -37 /* GNUTLS_A_NO_RENEGOTIATION */ +#define GNUTLS_E_GOT_APPLICATION_DATA -38 +#define GNUTLS_E_RECORD_LIMIT_REACHED -39 +#define GNUTLS_E_ENCRYPTION_FAILED -40 + +#define GNUTLS_E_PK_ENCRYPTION_FAILED -44 +#define GNUTLS_E_PK_DECRYPTION_FAILED -45 +#define GNUTLS_E_PK_SIGN_FAILED -46 +#define GNUTLS_E_X509_UNSUPPORTED_CRITICAL_EXTENSION -47 +#define GNUTLS_E_KEY_USAGE_VIOLATION -48 +#define GNUTLS_E_NO_CERTIFICATE_FOUND -49 /* GNUTLS_A_BAD_CERTIFICATE */ +#define GNUTLS_E_INVALID_REQUEST -50 +#define GNUTLS_E_SHORT_MEMORY_BUFFER -51 +#define GNUTLS_E_INTERRUPTED -52 +#define GNUTLS_E_PUSH_ERROR -53 +#define GNUTLS_E_PULL_ERROR -54 +#define GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER -55 /* GNUTLS_A_ILLEGAL_PARAMETER */ +#define GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE -56 +#define GNUTLS_E_PKCS1_WRONG_PAD -57 +#define GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION -58 +#define GNUTLS_E_INTERNAL_ERROR -59 +#define GNUTLS_E_DH_PRIME_UNACCEPTABLE -63 +#define GNUTLS_E_FILE_ERROR -64 +#define GNUTLS_E_TOO_MANY_EMPTY_PACKETS -78 +#define GNUTLS_E_UNKNOWN_PK_ALGORITHM -80 +#define GNUTLS_E_TOO_MANY_HANDSHAKE_PACKETS -81 +#define GNUTLS_E_RECEIVED_DISALLOWED_NAME -82 /* GNUTLS_A_ILLEGAL_PARAMETER */ +#define GNUTLS_E_CERTIFICATE_REQUIRED -112 /* GNUTLS_A_CERTIFICATE_REQUIRED */ + +/* returned if you need to generate temporary RSA * parameters. These are needed for export cipher suites. */ -# define GNUTLS_E_NO_TEMPORARY_RSA_PARAMS -84 +#define GNUTLS_E_NO_TEMPORARY_RSA_PARAMS -84 -# define GNUTLS_E_NO_COMPRESSION_ALGORITHMS -86 -# define GNUTLS_E_NO_CIPHER_SUITES -87 +#define GNUTLS_E_NO_COMPRESSION_ALGORITHMS -86 +#define GNUTLS_E_NO_CIPHER_SUITES -87 -# define GNUTLS_E_OPENPGP_GETKEY_FAILED -88 -# define GNUTLS_E_PK_SIG_VERIFY_FAILED -89 +#define GNUTLS_E_OPENPGP_GETKEY_FAILED -88 +#define GNUTLS_E_PK_SIG_VERIFY_FAILED -89 -# define GNUTLS_E_ILLEGAL_SRP_USERNAME -90 -# define GNUTLS_E_SRP_PWD_PARSING_ERROR GNUTLS_E_KEYFILE_PARSING_ERROR -# define GNUTLS_E_KEYFILE_PARSING_ERROR -91 -# define GNUTLS_E_NO_TEMPORARY_DH_PARAMS -93 +#define GNUTLS_E_ILLEGAL_SRP_USERNAME -90 +#define GNUTLS_E_SRP_PWD_PARSING_ERROR GNUTLS_E_KEYFILE_PARSING_ERROR +#define GNUTLS_E_KEYFILE_PARSING_ERROR -91 +#define GNUTLS_E_NO_TEMPORARY_DH_PARAMS -93 - /* For certificate and key stuff +/* For certificate and key stuff */ -# define GNUTLS_E_ASN1_ELEMENT_NOT_FOUND -67 -# define GNUTLS_E_ASN1_IDENTIFIER_NOT_FOUND -68 -# define GNUTLS_E_ASN1_DER_ERROR -69 -# define GNUTLS_E_ASN1_VALUE_NOT_FOUND -70 -# define GNUTLS_E_ASN1_GENERIC_ERROR -71 -# define GNUTLS_E_ASN1_VALUE_NOT_VALID -72 -# define GNUTLS_E_ASN1_TAG_ERROR -73 -# define GNUTLS_E_ASN1_TAG_IMPLICIT -74 -# define GNUTLS_E_ASN1_TYPE_ANY_ERROR -75 -# define GNUTLS_E_ASN1_SYNTAX_ERROR -76 -# define GNUTLS_E_ASN1_DER_OVERFLOW -77 -# define GNUTLS_E_OPENPGP_UID_REVOKED -79 -# define GNUTLS_E_CERTIFICATE_ERROR -43 -# define GNUTLS_E_X509_CERTIFICATE_ERROR GNUTLS_E_CERTIFICATE_ERROR -# define GNUTLS_E_CERTIFICATE_KEY_MISMATCH -60 -# define GNUTLS_E_UNSUPPORTED_CERTIFICATE_TYPE -61 /* GNUTLS_A_UNSUPPORTED_CERTIFICATE */ -# define GNUTLS_E_X509_UNKNOWN_SAN -62 -# define GNUTLS_E_OPENPGP_FINGERPRINT_UNSUPPORTED -94 -# define GNUTLS_E_X509_UNSUPPORTED_ATTRIBUTE -95 -# define GNUTLS_E_UNKNOWN_HASH_ALGORITHM -96 -# define GNUTLS_E_UNKNOWN_PKCS_CONTENT_TYPE -97 -# define GNUTLS_E_UNKNOWN_PKCS_BAG_TYPE -98 -# define GNUTLS_E_INVALID_PASSWORD -99 -# define GNUTLS_E_MAC_VERIFY_FAILED -100/* for PKCS #12 MAC */ -# define GNUTLS_E_CONSTRAINT_ERROR -101 - -# define GNUTLS_E_WARNING_IA_IPHF_RECEIVED -102 -# define GNUTLS_E_WARNING_IA_FPHF_RECEIVED -103 - -# define GNUTLS_E_IA_VERIFY_FAILED -104 -# define GNUTLS_E_UNKNOWN_ALGORITHM -105 -# define GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM -106 -# define GNUTLS_E_SAFE_RENEGOTIATION_FAILED -107 -# define GNUTLS_E_UNSAFE_RENEGOTIATION_DENIED -108 -# define GNUTLS_E_UNKNOWN_SRP_USERNAME -109 -# define GNUTLS_E_PREMATURE_TERMINATION -110 - -# define GNUTLS_E_MALFORMED_CIDR -111 - -# define GNUTLS_E_BASE64_ENCODING_ERROR -201 -# define GNUTLS_E_INCOMPATIBLE_GCRYPT_LIBRARY -202 /* obsolete */ -# define GNUTLS_E_INCOMPATIBLE_CRYPTO_LIBRARY -202 -# define GNUTLS_E_INCOMPATIBLE_LIBTASN1_LIBRARY -203 - -# define GNUTLS_E_OPENPGP_KEYRING_ERROR -204 -# define GNUTLS_E_X509_UNSUPPORTED_OID -205 - -# define GNUTLS_E_RANDOM_FAILED -206 -# define GNUTLS_E_BASE64_UNEXPECTED_HEADER_ERROR -207 - -# define GNUTLS_E_OPENPGP_SUBKEY_ERROR -208 - -# define GNUTLS_E_CRYPTO_ALREADY_REGISTERED GNUTLS_E_ALREADY_REGISTERED -# define GNUTLS_E_ALREADY_REGISTERED -209 - -# define GNUTLS_E_HANDSHAKE_TOO_LARGE -210 - -# define GNUTLS_E_CRYPTODEV_IOCTL_ERROR -211 -# define GNUTLS_E_CRYPTODEV_DEVICE_ERROR -212 - -# define GNUTLS_E_CHANNEL_BINDING_NOT_AVAILABLE -213 -# define GNUTLS_E_BAD_COOKIE -214 -# define GNUTLS_E_OPENPGP_PREFERRED_KEY_ERROR -215 -# define GNUTLS_E_INCOMPAT_DSA_KEY_WITH_TLS_PROTOCOL -216 -# define GNUTLS_E_INSUFFICIENT_SECURITY -217 - -# define GNUTLS_E_HEARTBEAT_PONG_RECEIVED -292 -# define GNUTLS_E_HEARTBEAT_PING_RECEIVED -293 - -# define GNUTLS_E_UNRECOGNIZED_NAME -294 +#define GNUTLS_E_ASN1_ELEMENT_NOT_FOUND -67 +#define GNUTLS_E_ASN1_IDENTIFIER_NOT_FOUND -68 +#define GNUTLS_E_ASN1_DER_ERROR -69 +#define GNUTLS_E_ASN1_VALUE_NOT_FOUND -70 +#define GNUTLS_E_ASN1_GENERIC_ERROR -71 +#define GNUTLS_E_ASN1_VALUE_NOT_VALID -72 +#define GNUTLS_E_ASN1_TAG_ERROR -73 +#define GNUTLS_E_ASN1_TAG_IMPLICIT -74 +#define GNUTLS_E_ASN1_TYPE_ANY_ERROR -75 +#define GNUTLS_E_ASN1_SYNTAX_ERROR -76 +#define GNUTLS_E_ASN1_DER_OVERFLOW -77 +#define GNUTLS_E_OPENPGP_UID_REVOKED -79 +#define GNUTLS_E_CERTIFICATE_ERROR -43 +#define GNUTLS_E_X509_CERTIFICATE_ERROR GNUTLS_E_CERTIFICATE_ERROR +#define GNUTLS_E_CERTIFICATE_KEY_MISMATCH -60 +#define GNUTLS_E_UNSUPPORTED_CERTIFICATE_TYPE \ + -61 /* GNUTLS_A_UNSUPPORTED_CERTIFICATE */ +#define GNUTLS_E_X509_UNKNOWN_SAN -62 +#define GNUTLS_E_OPENPGP_FINGERPRINT_UNSUPPORTED -94 +#define GNUTLS_E_X509_UNSUPPORTED_ATTRIBUTE -95 +#define GNUTLS_E_UNKNOWN_HASH_ALGORITHM -96 +#define GNUTLS_E_UNKNOWN_PKCS_CONTENT_TYPE -97 +#define GNUTLS_E_UNKNOWN_PKCS_BAG_TYPE -98 +#define GNUTLS_E_INVALID_PASSWORD -99 +#define GNUTLS_E_MAC_VERIFY_FAILED -100 /* for PKCS #12 MAC */ +#define GNUTLS_E_CONSTRAINT_ERROR -101 + +#define GNUTLS_E_WARNING_IA_IPHF_RECEIVED -102 +#define GNUTLS_E_WARNING_IA_FPHF_RECEIVED -103 + +#define GNUTLS_E_IA_VERIFY_FAILED -104 +#define GNUTLS_E_UNKNOWN_ALGORITHM -105 +#define GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM -106 +#define GNUTLS_E_SAFE_RENEGOTIATION_FAILED -107 +#define GNUTLS_E_UNSAFE_RENEGOTIATION_DENIED -108 +#define GNUTLS_E_UNKNOWN_SRP_USERNAME -109 +#define GNUTLS_E_PREMATURE_TERMINATION -110 + +#define GNUTLS_E_MALFORMED_CIDR -111 + +#define GNUTLS_E_BASE64_ENCODING_ERROR -201 +#define GNUTLS_E_INCOMPATIBLE_GCRYPT_LIBRARY -202 /* obsolete */ +#define GNUTLS_E_INCOMPATIBLE_CRYPTO_LIBRARY -202 +#define GNUTLS_E_INCOMPATIBLE_LIBTASN1_LIBRARY -203 + +#define GNUTLS_E_OPENPGP_KEYRING_ERROR -204 +#define GNUTLS_E_X509_UNSUPPORTED_OID -205 + +#define GNUTLS_E_RANDOM_FAILED -206 +#define GNUTLS_E_BASE64_UNEXPECTED_HEADER_ERROR -207 + +#define GNUTLS_E_OPENPGP_SUBKEY_ERROR -208 + +#define GNUTLS_E_CRYPTO_ALREADY_REGISTERED GNUTLS_E_ALREADY_REGISTERED +#define GNUTLS_E_ALREADY_REGISTERED -209 + +#define GNUTLS_E_HANDSHAKE_TOO_LARGE -210 + +#define GNUTLS_E_CRYPTODEV_IOCTL_ERROR -211 +#define GNUTLS_E_CRYPTODEV_DEVICE_ERROR -212 + +#define GNUTLS_E_CHANNEL_BINDING_NOT_AVAILABLE -213 +#define GNUTLS_E_BAD_COOKIE -214 +#define GNUTLS_E_OPENPGP_PREFERRED_KEY_ERROR -215 +#define GNUTLS_E_INCOMPAT_DSA_KEY_WITH_TLS_PROTOCOL -216 +#define GNUTLS_E_INSUFFICIENT_SECURITY -217 + +#define GNUTLS_E_HEARTBEAT_PONG_RECEIVED -292 +#define GNUTLS_E_HEARTBEAT_PING_RECEIVED -293 + +#define GNUTLS_E_UNRECOGNIZED_NAME -294 /* PKCS11 related */ -# define GNUTLS_E_PKCS11_ERROR -300 -# define GNUTLS_E_PKCS11_LOAD_ERROR -301 -# define GNUTLS_E_PARSING_ERROR -302 -# define GNUTLS_E_PKCS11_PIN_ERROR -303 - -# define GNUTLS_E_PKCS11_SLOT_ERROR -305 -# define GNUTLS_E_LOCKING_ERROR -306 -# define GNUTLS_E_PKCS11_ATTRIBUTE_ERROR -307 -# define GNUTLS_E_PKCS11_DEVICE_ERROR -308 -# define GNUTLS_E_PKCS11_DATA_ERROR -309 -# define GNUTLS_E_PKCS11_UNSUPPORTED_FEATURE_ERROR -310 -# define GNUTLS_E_PKCS11_KEY_ERROR -311 -# define GNUTLS_E_PKCS11_PIN_EXPIRED -312 -# define GNUTLS_E_PKCS11_PIN_LOCKED -313 -# define GNUTLS_E_PKCS11_SESSION_ERROR -314 -# define GNUTLS_E_PKCS11_SIGNATURE_ERROR -315 -# define GNUTLS_E_PKCS11_TOKEN_ERROR -316 -# define GNUTLS_E_PKCS11_USER_ERROR -317 - -# define GNUTLS_E_CRYPTO_INIT_FAILED -318 -# define GNUTLS_E_TIMEDOUT -319 -# define GNUTLS_E_USER_ERROR -320 -# define GNUTLS_E_ECC_NO_SUPPORTED_CURVES -321 -# define GNUTLS_E_ECC_UNSUPPORTED_CURVE -322 -# define GNUTLS_E_PKCS11_REQUESTED_OBJECT_NOT_AVAILBLE -323 -# define GNUTLS_E_CERTIFICATE_LIST_UNSORTED -324 -# define GNUTLS_E_ILLEGAL_PARAMETER -325/* GNUTLS_A_ILLEGAL_PARAMETER */ -# define GNUTLS_E_NO_PRIORITIES_WERE_SET -326 -# define GNUTLS_E_X509_UNSUPPORTED_EXTENSION -327 -# define GNUTLS_E_SESSION_EOF -328 - -# define GNUTLS_E_TPM_ERROR -329 -# define GNUTLS_E_TPM_KEY_PASSWORD_ERROR -330 -# define GNUTLS_E_TPM_SRK_PASSWORD_ERROR -331 -# define GNUTLS_E_TPM_SESSION_ERROR -332 -# define GNUTLS_E_TPM_KEY_NOT_FOUND -333 -# define GNUTLS_E_TPM_UNINITIALIZED -334 -# define GNUTLS_E_TPM_NO_LIB -335 - -# define GNUTLS_E_NO_CERTIFICATE_STATUS -340 -# define GNUTLS_E_OCSP_RESPONSE_ERROR -341 -# define GNUTLS_E_RANDOM_DEVICE_ERROR -342 -# define GNUTLS_E_AUTH_ERROR -343 -# define GNUTLS_E_NO_APPLICATION_PROTOCOL -344 -# define GNUTLS_E_SOCKETS_INIT_ERROR -345 -# define GNUTLS_E_KEY_IMPORT_FAILED -346 -# define GNUTLS_E_INAPPROPRIATE_FALLBACK -347 /*GNUTLS_A_INAPPROPRIATE_FALLBACK */ -# define GNUTLS_E_CERTIFICATE_VERIFICATION_ERROR -348 -# define GNUTLS_E_PRIVKEY_VERIFICATION_ERROR -349 -# define GNUTLS_E_UNEXPECTED_EXTENSIONS_LENGTH -350 /*GNUTLS_A_DECODE_ERROR */ -# define GNUTLS_E_ASN1_EMBEDDED_NULL_IN_STRING -351 - -# define GNUTLS_E_SELF_TEST_ERROR -400 -# define GNUTLS_E_NO_SELF_TEST -401 -# define GNUTLS_E_LIB_IN_ERROR_STATE -402 -# define GNUTLS_E_PK_GENERATION_ERROR -403 -# define GNUTLS_E_IDNA_ERROR -404 - -# define GNUTLS_E_NEED_FALLBACK -405 -# define GNUTLS_E_SESSION_USER_ID_CHANGED -406 -# define GNUTLS_E_HANDSHAKE_DURING_FALSE_START -407 -# define GNUTLS_E_UNAVAILABLE_DURING_HANDSHAKE -408 -# define GNUTLS_E_PK_INVALID_PUBKEY -409 -# define GNUTLS_E_PK_INVALID_PRIVKEY -410 -# define GNUTLS_E_NOT_YET_ACTIVATED -411 -# define GNUTLS_E_INVALID_UTF8_STRING -412 -# define GNUTLS_E_NO_EMBEDDED_DATA -413 -# define GNUTLS_E_INVALID_UTF8_EMAIL -414 -# define GNUTLS_E_INVALID_PASSWORD_STRING -415 -# define GNUTLS_E_CERTIFICATE_TIME_ERROR -416 -# define GNUTLS_E_RECORD_OVERFLOW -417 /* GNUTLS_A_RECORD_OVERFLOW */ -# define GNUTLS_E_ASN1_TIME_ERROR -418 -# define GNUTLS_E_INCOMPATIBLE_SIG_WITH_KEY -419 -# define GNUTLS_E_PK_INVALID_PUBKEY_PARAMS -420 -# define GNUTLS_E_PK_NO_VALIDATION_PARAMS -421 -# define GNUTLS_E_OCSP_MISMATCH_WITH_CERTS -422 - -# define GNUTLS_E_NO_COMMON_KEY_SHARE -423 -# define GNUTLS_E_REAUTH_REQUEST -424 -# define GNUTLS_E_TOO_MANY_MATCHES -425 -# define GNUTLS_E_CRL_VERIFICATION_ERROR -426 -# define GNUTLS_E_MISSING_EXTENSION -427 -# define GNUTLS_E_DB_ENTRY_EXISTS -428 -# define GNUTLS_E_EARLY_DATA_REJECTED -429 -# define GNUTLS_E_X509_DUPLICATE_EXTENSION -430 - -# define GNUTLS_E_UNIMPLEMENTED_FEATURE -1250 +#define GNUTLS_E_PKCS11_ERROR -300 +#define GNUTLS_E_PKCS11_LOAD_ERROR -301 +#define GNUTLS_E_PARSING_ERROR -302 +#define GNUTLS_E_PKCS11_PIN_ERROR -303 + +#define GNUTLS_E_PKCS11_SLOT_ERROR -305 +#define GNUTLS_E_LOCKING_ERROR -306 +#define GNUTLS_E_PKCS11_ATTRIBUTE_ERROR -307 +#define GNUTLS_E_PKCS11_DEVICE_ERROR -308 +#define GNUTLS_E_PKCS11_DATA_ERROR -309 +#define GNUTLS_E_PKCS11_UNSUPPORTED_FEATURE_ERROR -310 +#define GNUTLS_E_PKCS11_KEY_ERROR -311 +#define GNUTLS_E_PKCS11_PIN_EXPIRED -312 +#define GNUTLS_E_PKCS11_PIN_LOCKED -313 +#define GNUTLS_E_PKCS11_SESSION_ERROR -314 +#define GNUTLS_E_PKCS11_SIGNATURE_ERROR -315 +#define GNUTLS_E_PKCS11_TOKEN_ERROR -316 +#define GNUTLS_E_PKCS11_USER_ERROR -317 + +#define GNUTLS_E_CRYPTO_INIT_FAILED -318 +#define GNUTLS_E_TIMEDOUT -319 +#define GNUTLS_E_USER_ERROR -320 +#define GNUTLS_E_ECC_NO_SUPPORTED_CURVES -321 +#define GNUTLS_E_ECC_UNSUPPORTED_CURVE -322 +#define GNUTLS_E_PKCS11_REQUESTED_OBJECT_NOT_AVAILBLE -323 +#define GNUTLS_E_CERTIFICATE_LIST_UNSORTED -324 +#define GNUTLS_E_ILLEGAL_PARAMETER -325 /* GNUTLS_A_ILLEGAL_PARAMETER */ +#define GNUTLS_E_NO_PRIORITIES_WERE_SET -326 +#define GNUTLS_E_X509_UNSUPPORTED_EXTENSION -327 +#define GNUTLS_E_SESSION_EOF -328 + +#define GNUTLS_E_TPM_ERROR -329 +#define GNUTLS_E_TPM_KEY_PASSWORD_ERROR -330 +#define GNUTLS_E_TPM_SRK_PASSWORD_ERROR -331 +#define GNUTLS_E_TPM_SESSION_ERROR -332 +#define GNUTLS_E_TPM_KEY_NOT_FOUND -333 +#define GNUTLS_E_TPM_UNINITIALIZED -334 +#define GNUTLS_E_TPM_NO_LIB -335 + +#define GNUTLS_E_NO_CERTIFICATE_STATUS -340 +#define GNUTLS_E_OCSP_RESPONSE_ERROR -341 +#define GNUTLS_E_RANDOM_DEVICE_ERROR -342 +#define GNUTLS_E_AUTH_ERROR -343 +#define GNUTLS_E_NO_APPLICATION_PROTOCOL -344 +#define GNUTLS_E_SOCKETS_INIT_ERROR -345 +#define GNUTLS_E_KEY_IMPORT_FAILED -346 +#define GNUTLS_E_INAPPROPRIATE_FALLBACK \ + -347 /*GNUTLS_A_INAPPROPRIATE_FALLBACK */ +#define GNUTLS_E_CERTIFICATE_VERIFICATION_ERROR -348 +#define GNUTLS_E_PRIVKEY_VERIFICATION_ERROR -349 +#define GNUTLS_E_UNEXPECTED_EXTENSIONS_LENGTH -350 /*GNUTLS_A_DECODE_ERROR */ +#define GNUTLS_E_ASN1_EMBEDDED_NULL_IN_STRING -351 + +#define GNUTLS_E_SELF_TEST_ERROR -400 +#define GNUTLS_E_NO_SELF_TEST -401 +#define GNUTLS_E_LIB_IN_ERROR_STATE -402 +#define GNUTLS_E_PK_GENERATION_ERROR -403 +#define GNUTLS_E_IDNA_ERROR -404 + +#define GNUTLS_E_NEED_FALLBACK -405 +#define GNUTLS_E_SESSION_USER_ID_CHANGED -406 +#define GNUTLS_E_HANDSHAKE_DURING_FALSE_START -407 +#define GNUTLS_E_UNAVAILABLE_DURING_HANDSHAKE -408 +#define GNUTLS_E_PK_INVALID_PUBKEY -409 +#define GNUTLS_E_PK_INVALID_PRIVKEY -410 +#define GNUTLS_E_NOT_YET_ACTIVATED -411 +#define GNUTLS_E_INVALID_UTF8_STRING -412 +#define GNUTLS_E_NO_EMBEDDED_DATA -413 +#define GNUTLS_E_INVALID_UTF8_EMAIL -414 +#define GNUTLS_E_INVALID_PASSWORD_STRING -415 +#define GNUTLS_E_CERTIFICATE_TIME_ERROR -416 +#define GNUTLS_E_RECORD_OVERFLOW -417 /* GNUTLS_A_RECORD_OVERFLOW */ +#define GNUTLS_E_ASN1_TIME_ERROR -418 +#define GNUTLS_E_INCOMPATIBLE_SIG_WITH_KEY -419 +#define GNUTLS_E_PK_INVALID_PUBKEY_PARAMS -420 +#define GNUTLS_E_PK_NO_VALIDATION_PARAMS -421 +#define GNUTLS_E_OCSP_MISMATCH_WITH_CERTS -422 + +#define GNUTLS_E_NO_COMMON_KEY_SHARE -423 +#define GNUTLS_E_REAUTH_REQUEST -424 +#define GNUTLS_E_TOO_MANY_MATCHES -425 +#define GNUTLS_E_CRL_VERIFICATION_ERROR -426 +#define GNUTLS_E_MISSING_EXTENSION -427 +#define GNUTLS_E_DB_ENTRY_EXISTS -428 +#define GNUTLS_E_EARLY_DATA_REJECTED -429 +#define GNUTLS_E_X509_DUPLICATE_EXTENSION -430 + +#define GNUTLS_E_UNIMPLEMENTED_FEATURE -1250 /* Internal errors of the library; will never be returned * to a calling application */ -# define GNUTLS_E_INT_RET_0 -1251 -# define GNUTLS_E_INT_CHECK_AGAIN -1252 +#define GNUTLS_E_INT_RET_0 -1251 +#define GNUTLS_E_INT_CHECK_AGAIN -1252 -# define GNUTLS_E_APPLICATION_ERROR_MAX -65000 -# define GNUTLS_E_APPLICATION_ERROR_MIN -65500 +#define GNUTLS_E_APPLICATION_ERROR_MAX -65000 +#define GNUTLS_E_APPLICATION_ERROR_MIN -65500 #ifdef __cplusplus } #endif -# include +#include -#endif /* GNUTLS_GNUTLS_H */ +#endif /* GNUTLS_GNUTLS_H */ diff --git a/lib/includes/gnutls/gnutlsxx.h b/lib/includes/gnutls/gnutlsxx.h index 5c50ad08c9..673cf532b2 100644 --- a/lib/includes/gnutls/gnutlsxx.h +++ b/lib/includes/gnutls/gnutlsxx.h @@ -21,1152 +21,1247 @@ */ #ifndef GNUTLS_GNUTLSXX_H -# define GNUTLS_GNUTLSXX_H - -# include -# include -# include - -namespace gnutls { - - class noncopyable { - protected: - noncopyable() { - } - ~noncopyable() { - } - private: - /* These are non-implemented. - */ - noncopyable(const noncopyable &); - noncopyable & operator=(const noncopyable &); - }; - - class exception:public std::exception { - public: - explicit exception(int x); - const char *what() const throw(); - int get_code(); - protected: - int retcode; - }; - - class dh_params:private noncopyable { - public: - dh_params(); - ~dh_params(); - void import_raw(const gnutls_datum_t & prime, - const gnutls_datum_t & generator); - void import_pkcs3(const gnutls_datum_t & pkcs3_params, - gnutls_x509_crt_fmt_t format); - void generate(unsigned int bits); - - void export_pkcs3(gnutls_x509_crt_fmt_t format, - unsigned char *params_data, - size_t *params_data_size); - void export_raw(gnutls_datum_t & prime, - gnutls_datum_t & generator); - - gnutls_dh_params_t get_params_t() const; - dh_params & operator=(const dh_params & src); - protected: - gnutls_dh_params_t params; - }; - - class rsa_params:private noncopyable { - public: - rsa_params(); - ~rsa_params(); - void import_raw(const gnutls_datum_t & m, - const gnutls_datum_t & e, - const gnutls_datum_t & d, - const gnutls_datum_t & p, - const gnutls_datum_t & q, - const gnutls_datum_t & u); - void import_pkcs1(const gnutls_datum_t & pkcs1_params, - gnutls_x509_crt_fmt_t format); - void generate(unsigned int bits); - - void export_pkcs1(gnutls_x509_crt_fmt_t format, - unsigned char *params_data, - size_t *params_data_size); - void export_raw(gnutls_datum_t & m, gnutls_datum_t & e, - gnutls_datum_t & d, gnutls_datum_t & p, - gnutls_datum_t & q, gnutls_datum_t & u); - gnutls_rsa_params_t get_params_t() const; - rsa_params & operator=(const rsa_params & src); - - protected: - gnutls_rsa_params_t params; - }; - - class session:private noncopyable { - protected: - gnutls_session_t s; - public: - explicit session(unsigned int); - virtual ~ session(); - - gnutls_session_t ptr(); - int bye(gnutls_close_request_t how); - int handshake(); - - gnutls_alert_description_t get_alert() const; - - int send_alert(gnutls_alert_level_t level, - gnutls_alert_description_t desc); - int send_appropriate_alert(int err); - - gnutls_cipher_algorithm_t get_cipher() const; - gnutls_kx_algorithm_t get_kx() const; - gnutls_mac_algorithm_t get_mac() const; - gnutls_compression_method_t get_compression() const; - gnutls_certificate_type_t get_certificate_type() const; - - /* for the handshake - */ - void set_private_extensions(bool allow); +#define GNUTLS_GNUTLSXX_H - gnutls_handshake_description_t get_handshake_last_out() const; - gnutls_handshake_description_t get_handshake_last_in() const; +#include +#include +#include - ssize_t send(const void *data, size_t sizeofdata); - ssize_t recv(void *data, size_t sizeofdata); +namespace gnutls +{ - bool get_record_direction() const; +class noncopyable { + protected: + noncopyable() + { + } + ~noncopyable() + { + } - /* maximum packet size + private: + /* These are non-implemented. + */ + noncopyable(const noncopyable &); + noncopyable &operator=(const noncopyable &); +}; + +class exception : public std::exception { + public: + explicit exception(int x); + const char *what() const throw(); + int get_code(); + + protected: + int retcode; +}; + +class dh_params : private noncopyable { + public: + dh_params(); + ~dh_params(); + void import_raw(const gnutls_datum_t &prime, + const gnutls_datum_t &generator); + void import_pkcs3(const gnutls_datum_t &pkcs3_params, + gnutls_x509_crt_fmt_t format); + void generate(unsigned int bits); + + void export_pkcs3(gnutls_x509_crt_fmt_t format, + unsigned char *params_data, size_t *params_data_size); + void export_raw(gnutls_datum_t &prime, gnutls_datum_t &generator); + + gnutls_dh_params_t get_params_t() const; + dh_params &operator=(const dh_params &src); + + protected: + gnutls_dh_params_t params; +}; + +class rsa_params : private noncopyable { + public: + rsa_params(); + ~rsa_params(); + void import_raw(const gnutls_datum_t &m, const gnutls_datum_t &e, + const gnutls_datum_t &d, const gnutls_datum_t &p, + const gnutls_datum_t &q, const gnutls_datum_t &u); + void import_pkcs1(const gnutls_datum_t &pkcs1_params, + gnutls_x509_crt_fmt_t format); + void generate(unsigned int bits); + + void export_pkcs1(gnutls_x509_crt_fmt_t format, + unsigned char *params_data, size_t *params_data_size); + void export_raw(gnutls_datum_t &m, gnutls_datum_t &e, gnutls_datum_t &d, + gnutls_datum_t &p, gnutls_datum_t &q, + gnutls_datum_t &u); + gnutls_rsa_params_t get_params_t() const; + rsa_params &operator=(const rsa_params &src); + + protected: + gnutls_rsa_params_t params; +}; + +class session : private noncopyable { + protected: + gnutls_session_t s; + + public: + explicit session(unsigned int); + virtual ~session(); + + gnutls_session_t ptr(); + int bye(gnutls_close_request_t how); + int handshake(); + + gnutls_alert_description_t get_alert() const; + + int send_alert(gnutls_alert_level_t level, + gnutls_alert_description_t desc); + int send_appropriate_alert(int err); + + gnutls_cipher_algorithm_t get_cipher() const; + gnutls_kx_algorithm_t get_kx() const; + gnutls_mac_algorithm_t get_mac() const; + gnutls_compression_method_t get_compression() const; + gnutls_certificate_type_t get_certificate_type() const; + + /* for the handshake */ - size_t get_max_size() const; - void set_max_size(size_t size); + void set_private_extensions(bool allow); - size_t check_pending() const; + gnutls_handshake_description_t get_handshake_last_out() const; + gnutls_handshake_description_t get_handshake_last_in() const; - void prf(size_t label_size, const char *label, - int server_random_first, - size_t extra_size, const char *extra, - size_t outsize, char *out); + ssize_t send(const void *data, size_t sizeofdata); + ssize_t recv(void *data, size_t sizeofdata); - void prf_raw(size_t label_size, const char *label, - size_t seed_size, const char *seed, - size_t outsize, char *out); + bool get_record_direction() const; - /* if you just want some defaults, use the following. + /* maximum packet size */ - void set_priority(const char *prio, const char **err_pos); - void set_priority(gnutls_priority_t p); + size_t get_max_size() const; + void set_max_size(size_t size); - gnutls_protocol_t get_protocol_version() const; + size_t check_pending() const; - /* for resuming sessions - */ - void set_data(const void *session_data, - size_t session_data_size); - void get_data(void *session_data, - size_t *session_data_size) const; - void get_data(gnutls_session_t session, - gnutls_datum_t & data) const; - void get_id(void *session_id, size_t *session_id_size) const; - - bool is_resumed() const; - - void set_max_handshake_packet_length(size_t max); - - void clear_credentials(); - void set_credentials(const class credentials & cred); - - void set_transport_ptr(gnutls_transport_ptr_t ptr); - void set_transport_ptr(gnutls_transport_ptr_t recv_ptr, - gnutls_transport_ptr_t send_ptr); - gnutls_transport_ptr_t get_transport_ptr() const; - void get_transport_ptr(gnutls_transport_ptr_t & recv_ptr, - gnutls_transport_ptr_t & send_ptr) const; - - void set_transport_lowat(size_t num); - void set_transport_push_function(gnutls_push_func push_func); - void set_transport_vec_push_function(gnutls_vec_push_func - vec_push_func); - void set_transport_pull_function(gnutls_pull_func pull_func); - void set_transport_pull_timeout_function - (gnutls_pull_timeout_func pull_timeout_func); - - void set_user_ptr(void *ptr); - void *get_user_ptr() const; - - void send_openpgp_cert(gnutls_openpgp_crt_status_t status); - - gnutls_credentials_type_t get_auth_type() const; - gnutls_credentials_type_t get_server_auth_type() const; - gnutls_credentials_type_t get_client_auth_type() const; - - /* informational stuff - */ - void set_dh_prime_bits(unsigned int bits); - unsigned int get_dh_secret_bits() const; - unsigned int get_dh_peers_public_bits() const; - unsigned int get_dh_prime_bits() const; - void get_dh_group(gnutls_datum_t & gen, - gnutls_datum_t & prime) const; - void get_dh_pubkey(gnutls_datum_t & raw_key) const; - void get_rsa_export_pubkey(gnutls_datum_t & exponent, - gnutls_datum_t & modulus) const; - unsigned int get_rsa_export_modulus_bits() const; - - void get_our_certificate(gnutls_datum_t & cert) const; - bool get_peers_certificate(std::vector < gnutls_datum_t > - &out_certs) const; - bool get_peers_certificate(const gnutls_datum_t ** certs, - unsigned int *certs_size) const; - - time_t get_peers_certificate_activation_time() const; - time_t get_peers_certificate_expiration_time() const; - void verify_peers_certificate(unsigned int &status) const; - }; + void prf(size_t label_size, const char *label, int server_random_first, + size_t extra_size, const char *extra, size_t outsize, + char *out); -/* interface for databases - */ - class DB:private noncopyable { - public: - virtual ~ DB() = 0; - virtual bool store(const gnutls_datum_t & key, - const gnutls_datum_t & data) = 0; - virtual bool retrieve(const gnutls_datum_t & key, - gnutls_datum_t & data) = 0; - virtual bool remove(const gnutls_datum_t & key) = 0; - }; - - class server_session:public session { - public: - server_session(); - explicit server_session(int flags); - ~server_session(); - void db_remove() const; - - void set_db_cache_expiration(unsigned int seconds); - void set_db(const DB & db); - - /* returns true if session is expired - */ - bool db_check_entry(const gnutls_datum_t & session_data) const; + void prf_raw(size_t label_size, const char *label, size_t seed_size, + const char *seed, size_t outsize, char *out); - /* server side only + /* if you just want some defaults, use the following. */ - const char *get_srp_username() const; - const char *get_psk_username() const; + void set_priority(const char *prio, const char **err_pos); + void set_priority(gnutls_priority_t p); - void get_server_name(void *data, size_t *data_length, - unsigned int *type, - unsigned int indx) const; - - int rehandshake(); - void set_certificate_request(gnutls_certificate_request_t); - }; - - class client_session:public session { - public: - client_session(); - explicit client_session(int flags); - ~client_session(); - - void set_verify_cert(const char *hostname, unsigned flags); - void set_server_name(gnutls_server_name_type_t type, - const void *name, size_t name_length); - - bool get_request_status(); - }; - - class credentials:private noncopyable { - public: - virtual ~ credentials() { - } gnutls_credentials_type_t get_type() const; - protected: - friend class session; - explicit credentials(gnutls_credentials_type_t t); - void *ptr() const; - void set_ptr(void *ptr); - gnutls_credentials_type_t type; - private: - void *cred; - }; - - class certificate_credentials:public credentials { - public: - ~certificate_credentials(); - certificate_credentials(); - - void free_keys(); - void free_cas(); - void free_ca_names(); - void free_crls(); - - void set_dh_params(const dh_params & params); - void set_rsa_export_params(const rsa_params & params); - void set_verify_flags(unsigned int flags); - void set_verify_limits(unsigned int max_bits, - unsigned int max_depth); - - void set_x509_trust_file(const char *cafile, - gnutls_x509_crt_fmt_t type); - void set_x509_trust(const gnutls_datum_t & CA, - gnutls_x509_crt_fmt_t type); - - void set_x509_trust(gnutls_x509_crt_t * ca_list, - int ca_list_size); - - void set_x509_crl_file(const char *crlfile, - gnutls_x509_crt_fmt_t type); - void set_x509_crl(const gnutls_datum_t & CRL, - gnutls_x509_crt_fmt_t type); - void set_x509_crl(gnutls_x509_crl_t * crl_list, - int crl_list_size); - - void set_x509_key_file(const char *certfile, - const char *KEYFILE, - gnutls_x509_crt_fmt_t type); - void set_x509_key(const gnutls_datum_t & CERT, - const gnutls_datum_t & KEY, - gnutls_x509_crt_fmt_t type); - - void set_x509_key(gnutls_x509_crt_t * cert_list, - int cert_list_size, - gnutls_x509_privkey_t key); - - void set_simple_pkcs12_file(const char *pkcs12file, - gnutls_x509_crt_fmt_t type, - const char *password); - - void set_retrieve_function(gnutls_certificate_retrieve_function - * func); - - protected: - gnutls_certificate_credentials_t cred; - }; - - class certificate_server_credentials:public certificate_credentials { - public: - void set_params_function(gnutls_params_function * func); - }; - - class certificate_client_credentials:public certificate_credentials { - public: - }; - - class anon_server_credentials:public credentials { - public: - anon_server_credentials(); - ~anon_server_credentials(); - void set_dh_params(const dh_params & params); - void set_params_function(gnutls_params_function * func); - protected: - gnutls_anon_server_credentials_t cred; - }; - - class anon_client_credentials:public credentials { - public: - anon_client_credentials(); - ~anon_client_credentials(); - protected: - gnutls_anon_client_credentials_t cred; - }; - - class srp_server_credentials:public credentials { - public: - srp_server_credentials(); - ~srp_server_credentials(); - void set_credentials_file(const char *password_file, - const char *password_conf_file); - void set_credentials_function - (gnutls_srp_server_credentials_function * func); - protected: - gnutls_srp_server_credentials_t cred; - }; - - class srp_client_credentials:public credentials { - public: - srp_client_credentials(); - ~srp_client_credentials(); - void set_credentials(const char *username, - const char *password); - void set_credentials_function - (gnutls_srp_client_credentials_function * func); - protected: - gnutls_srp_client_credentials_t cred; - }; - - class psk_server_credentials:public credentials { - public: - psk_server_credentials(); - ~psk_server_credentials(); - void set_credentials_file(const char *password_file); - void set_credentials_function - (gnutls_psk_server_credentials_function * func); - void set_dh_params(const dh_params & params); - void set_params_function(gnutls_params_function * func); - protected: - gnutls_psk_server_credentials_t cred; - }; - - class psk_client_credentials:public credentials { - public: - psk_client_credentials(); - ~psk_client_credentials(); - void set_credentials(const char *username, - const gnutls_datum_t & key, - gnutls_psk_key_flags flags); - void set_credentials_function - (gnutls_psk_client_credentials_function * func); - protected: - gnutls_psk_client_credentials_t cred; - }; + gnutls_protocol_t get_protocol_version() const; -/* By default, we provide the function definitions, which allows users - of the library to use the C++ header and link against the C - library. However, if GNUTLS_GNUTLSXX_NO_HEADERONLY is defined, then - the definitions are not necessary, as the user is expected to link - to the C++ library. (Which is provided for backwards-compatibility.) - - All applications using GnuTLS of version less than 3.8.0 use the - C++ library. Applications using GnuTLS 3.8.0 or above will use by - default the C library with the C++ "header-only" header, but they - still have the option to link to the C++ library instead if they - wish, and if so, they must also define - GNUTLS_GNUTLSXX_NO_HEADERONLY in their compilation step. - */ -# ifndef GNUTLS_GNUTLSXX_NO_HEADERONLY + /* for resuming sessions + */ + void set_data(const void *session_data, size_t session_data_size); + void get_data(void *session_data, size_t *session_data_size) const; + void get_data(gnutls_session_t session, gnutls_datum_t &data) const; + void get_id(void *session_id, size_t *session_id_size) const; - inline static int RETWRAP(int ret) { - if (ret < 0) - throw(exception(ret)); - return ret; - } + bool is_resumed() const; - session::session(unsigned int flags) { - RETWRAP(gnutls_init(&s, flags)); - } + void set_max_handshake_packet_length(size_t max); - session::~session() { - gnutls_deinit(s); - } + void clear_credentials(); + void set_credentials(const class credentials &cred); - gnutls_session_t session::ptr() { - return s; - } + void set_transport_ptr(gnutls_transport_ptr_t ptr); + void set_transport_ptr(gnutls_transport_ptr_t recv_ptr, + gnutls_transport_ptr_t send_ptr); + gnutls_transport_ptr_t get_transport_ptr() const; + void get_transport_ptr(gnutls_transport_ptr_t &recv_ptr, + gnutls_transport_ptr_t &send_ptr) const; - int session::bye(gnutls_close_request_t how) { - return RETWRAP(gnutls_bye(s, how)); - } + void set_transport_lowat(size_t num); + void set_transport_push_function(gnutls_push_func push_func); + void + set_transport_vec_push_function(gnutls_vec_push_func vec_push_func); + void set_transport_pull_function(gnutls_pull_func pull_func); + void set_transport_pull_timeout_function( + gnutls_pull_timeout_func pull_timeout_func); - int session::handshake() { - return RETWRAP(gnutls_handshake(s)); - } + void set_user_ptr(void *ptr); + void *get_user_ptr() const; - server_session::server_session():session(GNUTLS_SERVER) { - } + void send_openpgp_cert(gnutls_openpgp_crt_status_t status); - server_session::server_session(int flags):session(GNUTLS_SERVER | - (flags & - ~GNUTLS_CLIENT)) { - } + gnutls_credentials_type_t get_auth_type() const; + gnutls_credentials_type_t get_server_auth_type() const; + gnutls_credentials_type_t get_client_auth_type() const; - server_session::~server_session() { - } + /* informational stuff + */ + void set_dh_prime_bits(unsigned int bits); + unsigned int get_dh_secret_bits() const; + unsigned int get_dh_peers_public_bits() const; + unsigned int get_dh_prime_bits() const; + void get_dh_group(gnutls_datum_t &gen, gnutls_datum_t &prime) const; + void get_dh_pubkey(gnutls_datum_t &raw_key) const; + void get_rsa_export_pubkey(gnutls_datum_t &exponent, + gnutls_datum_t &modulus) const; + unsigned int get_rsa_export_modulus_bits() const; + + void get_our_certificate(gnutls_datum_t &cert) const; + bool + get_peers_certificate(std::vector &out_certs) const; + bool get_peers_certificate(const gnutls_datum_t **certs, + unsigned int *certs_size) const; + + time_t get_peers_certificate_activation_time() const; + time_t get_peers_certificate_expiration_time() const; + void verify_peers_certificate(unsigned int &status) const; +}; - int server_session::rehandshake() { - return RETWRAP(gnutls_rehandshake(s)); - } +/* interface for databases + */ +class DB : private noncopyable { + public: + virtual ~DB() = 0; + virtual bool store(const gnutls_datum_t &key, + const gnutls_datum_t &data) = 0; + virtual bool retrieve(const gnutls_datum_t &key, + gnutls_datum_t &data) = 0; + virtual bool remove(const gnutls_datum_t &key) = 0; +}; + +class server_session : public session { + public: + server_session(); + explicit server_session(int flags); + ~server_session(); + void db_remove() const; + + void set_db_cache_expiration(unsigned int seconds); + void set_db(const DB &db); + + /* returns true if session is expired + */ + bool db_check_entry(const gnutls_datum_t &session_data) const; - gnutls_alert_description_t session::get_alert() const { - return gnutls_alert_get(s); - } - int session::send_alert(gnutls_alert_level_t level, - gnutls_alert_description_t desc) { - return RETWRAP(gnutls_alert_send(s, level, desc)); - } + /* server side only + */ + const char *get_srp_username() const; + const char *get_psk_username() const; - int session::send_appropriate_alert(int err) { - return RETWRAP(gnutls_alert_send_appropriate(s, err)); - } + void get_server_name(void *data, size_t *data_length, + unsigned int *type, unsigned int indx) const; - gnutls_cipher_algorithm_t session::get_cipher() const { - return gnutls_cipher_get(s); - } - gnutls_kx_algorithm_t session::get_kx() const { - return gnutls_kx_get(s); - } - gnutls_mac_algorithm_t session::get_mac() const { - return gnutls_mac_get(s); - } - gnutls_compression_method_t session::get_compression() const { - return gnutls_compression_get(s); - } - gnutls_certificate_type_t session::get_certificate_type() const { - return gnutls_certificate_type_get(s); - } - void session::set_private_extensions(bool allow) { - gnutls_handshake_set_private_extensions(s, (int)allow); - } + int rehandshake(); + void set_certificate_request(gnutls_certificate_request_t); +}; - gnutls_handshake_description_t session::get_handshake_last_out() const { - return gnutls_handshake_get_last_out(s); - } - gnutls_handshake_description_t session::get_handshake_last_in() const { - return gnutls_handshake_get_last_in(s); - } - ssize_t session::send(const void *data, size_t sizeofdata) { - return RETWRAP(gnutls_record_send(s, data, sizeofdata)); - } +class client_session : public session { + public: + client_session(); + explicit client_session(int flags); + ~client_session(); - ssize_t session::recv(void *data, size_t sizeofdata) { - return RETWRAP(gnutls_record_recv(s, data, sizeofdata)); - } + void set_verify_cert(const char *hostname, unsigned flags); + void set_server_name(gnutls_server_name_type_t type, const void *name, + size_t name_length); - bool session::get_record_direction() const { - return gnutls_record_get_direction(s); - } - /* maximum packet size - */ size_t session::get_max_size() const { - return gnutls_record_get_max_size(s); - } - void session::set_max_size(size_t size) { - RETWRAP(gnutls_record_set_max_size(s, size)); - } + bool get_request_status(); +}; - size_t session::check_pending() const { - return gnutls_record_check_pending(s); - } - void session::prf(size_t label_size, const char *label, - int server_random_first, - size_t extra_size, const char *extra, - size_t outsize, char *out) { - RETWRAP(gnutls_prf(s, label_size, label, server_random_first, - extra_size, extra, outsize, out)); +class credentials : private noncopyable { + public: + virtual ~credentials() + { } + gnutls_credentials_type_t get_type() const; + + protected: + friend class session; + explicit credentials(gnutls_credentials_type_t t); + void *ptr() const; + void set_ptr(void *ptr); + gnutls_credentials_type_t type; + + private: + void *cred; +}; + +class certificate_credentials : public credentials { + public: + ~certificate_credentials(); + certificate_credentials(); + + void free_keys(); + void free_cas(); + void free_ca_names(); + void free_crls(); + + void set_dh_params(const dh_params ¶ms); + void set_rsa_export_params(const rsa_params ¶ms); + void set_verify_flags(unsigned int flags); + void set_verify_limits(unsigned int max_bits, unsigned int max_depth); + + void set_x509_trust_file(const char *cafile, + gnutls_x509_crt_fmt_t type); + void set_x509_trust(const gnutls_datum_t &CA, + gnutls_x509_crt_fmt_t type); + + void set_x509_trust(gnutls_x509_crt_t *ca_list, int ca_list_size); + + void set_x509_crl_file(const char *crlfile, gnutls_x509_crt_fmt_t type); + void set_x509_crl(const gnutls_datum_t &CRL, + gnutls_x509_crt_fmt_t type); + void set_x509_crl(gnutls_x509_crl_t *crl_list, int crl_list_size); + + void set_x509_key_file(const char *certfile, const char *KEYFILE, + gnutls_x509_crt_fmt_t type); + void set_x509_key(const gnutls_datum_t &CERT, const gnutls_datum_t &KEY, + gnutls_x509_crt_fmt_t type); + + void set_x509_key(gnutls_x509_crt_t *cert_list, int cert_list_size, + gnutls_x509_privkey_t key); + + void set_simple_pkcs12_file(const char *pkcs12file, + gnutls_x509_crt_fmt_t type, + const char *password); + + void set_retrieve_function(gnutls_certificate_retrieve_function *func); + + protected: + gnutls_certificate_credentials_t cred; +}; + +class certificate_server_credentials : public certificate_credentials { + public: + void set_params_function(gnutls_params_function *func); +}; + +class certificate_client_credentials : public certificate_credentials { + public: +}; + +class anon_server_credentials : public credentials { + public: + anon_server_credentials(); + ~anon_server_credentials(); + void set_dh_params(const dh_params ¶ms); + void set_params_function(gnutls_params_function *func); + + protected: + gnutls_anon_server_credentials_t cred; +}; + +class anon_client_credentials : public credentials { + public: + anon_client_credentials(); + ~anon_client_credentials(); + + protected: + gnutls_anon_client_credentials_t cred; +}; + +class srp_server_credentials : public credentials { + public: + srp_server_credentials(); + ~srp_server_credentials(); + void set_credentials_file(const char *password_file, + const char *password_conf_file); + void + set_credentials_function(gnutls_srp_server_credentials_function *func); + + protected: + gnutls_srp_server_credentials_t cred; +}; + +class srp_client_credentials : public credentials { + public: + srp_client_credentials(); + ~srp_client_credentials(); + void set_credentials(const char *username, const char *password); + void + set_credentials_function(gnutls_srp_client_credentials_function *func); + + protected: + gnutls_srp_client_credentials_t cred; +}; + +class psk_server_credentials : public credentials { + public: + psk_server_credentials(); + ~psk_server_credentials(); + void set_credentials_file(const char *password_file); + void + set_credentials_function(gnutls_psk_server_credentials_function *func); + void set_dh_params(const dh_params ¶ms); + void set_params_function(gnutls_params_function *func); + + protected: + gnutls_psk_server_credentials_t cred; +}; + +class psk_client_credentials : public credentials { + public: + psk_client_credentials(); + ~psk_client_credentials(); + void set_credentials(const char *username, const gnutls_datum_t &key, + gnutls_psk_key_flags flags); + void + set_credentials_function(gnutls_psk_client_credentials_function *func); + + protected: + gnutls_psk_client_credentials_t cred; +}; - void session::prf_raw(size_t label_size, const char *label, - size_t seed_size, const char *seed, - size_t outsize, char *out) { - RETWRAP(gnutls_prf_raw - (s, label_size, label, seed_size, seed, outsize, out)); - } +/* By default, we provide the function definitions, which allows users + of the library to use the C++ header and link against the C + library. However, if GNUTLS_GNUTLSXX_NO_HEADERONLY is defined, then + the definitions are not necessary, as the user is expected to link + to the C++ library. (Which is provided for backwards-compatibility.) - /* if you just want some defaults, use the following. + All applications using GnuTLS of version less than 3.8.0 use the + C++ library. Applications using GnuTLS 3.8.0 or above will use by + default the C library with the C++ "header-only" header, but they + still have the option to link to the C++ library instead if they + wish, and if so, they must also define + GNUTLS_GNUTLSXX_NO_HEADERONLY in their compilation step. + */ +#ifndef GNUTLS_GNUTLSXX_NO_HEADERONLY + +inline static int RETWRAP(int ret) +{ + if (ret < 0) + throw(exception(ret)); + return ret; +} + +session::session(unsigned int flags) +{ + RETWRAP(gnutls_init(&s, flags)); +} + +session::~session() +{ + gnutls_deinit(s); +} + +gnutls_session_t session::ptr() +{ + return s; +} + +int session::bye(gnutls_close_request_t how) +{ + return RETWRAP(gnutls_bye(s, how)); +} + +int session::handshake() +{ + return RETWRAP(gnutls_handshake(s)); +} + +server_session::server_session() + : session(GNUTLS_SERVER) +{ +} + +server_session::server_session(int flags) + : session(GNUTLS_SERVER | (flags & ~GNUTLS_CLIENT)) +{ +} + +server_session::~server_session() +{ +} + +int server_session::rehandshake() +{ + return RETWRAP(gnutls_rehandshake(s)); +} + +gnutls_alert_description_t session::get_alert() const +{ + return gnutls_alert_get(s); +} +int session::send_alert(gnutls_alert_level_t level, + gnutls_alert_description_t desc) +{ + return RETWRAP(gnutls_alert_send(s, level, desc)); +} + +int session::send_appropriate_alert(int err) +{ + return RETWRAP(gnutls_alert_send_appropriate(s, err)); +} + +gnutls_cipher_algorithm_t session::get_cipher() const +{ + return gnutls_cipher_get(s); +} +gnutls_kx_algorithm_t session::get_kx() const +{ + return gnutls_kx_get(s); +} +gnutls_mac_algorithm_t session::get_mac() const +{ + return gnutls_mac_get(s); +} +gnutls_compression_method_t session::get_compression() const +{ + return gnutls_compression_get(s); +} +gnutls_certificate_type_t session::get_certificate_type() const +{ + return gnutls_certificate_type_get(s); +} +void session::set_private_extensions(bool allow) +{ + gnutls_handshake_set_private_extensions(s, (int)allow); +} + +gnutls_handshake_description_t session::get_handshake_last_out() const +{ + return gnutls_handshake_get_last_out(s); +} +gnutls_handshake_description_t session::get_handshake_last_in() const +{ + return gnutls_handshake_get_last_in(s); +} +ssize_t session::send(const void *data, size_t sizeofdata) +{ + return RETWRAP(gnutls_record_send(s, data, sizeofdata)); +} + +ssize_t session::recv(void *data, size_t sizeofdata) +{ + return RETWRAP(gnutls_record_recv(s, data, sizeofdata)); +} + +bool session::get_record_direction() const +{ + return gnutls_record_get_direction(s); +} +/* maximum packet size */ - void session::set_priority(const char *prio, const char **err_pos) { - RETWRAP(gnutls_priority_set_direct(s, prio, err_pos)); - } - - void session::set_priority(gnutls_priority_t p) { - RETWRAP(gnutls_priority_set(s, p)); - } - - gnutls_protocol_t session::get_protocol_version() const { - return gnutls_protocol_get_version(s); - } - void session::set_data(const void *session_data, - size_t session_data_size) { - RETWRAP(gnutls_session_set_data - (s, session_data, session_data_size)); - } - - void session::get_data(void *session_data, size_t *session_data_size) const { - RETWRAP(gnutls_session_get_data - (s, session_data, session_data_size)); - } void session::get_data(gnutls_session_t session, - gnutls_datum_t & data) const { - RETWRAP(gnutls_session_get_data2(s, &data)); - - } void session::get_id(void *session_id, size_t *session_id_size) const { - RETWRAP(gnutls_session_get_id(s, session_id, session_id_size)); - } bool session::is_resumed() const { - int ret = gnutls_session_is_resumed(s); - - return (ret != 0); - } - bool session::get_peers_certificate(std::vector < gnutls_datum_t > - &out_certs) const { - const gnutls_datum_t *certs; - unsigned int certs_size; - - certs = gnutls_certificate_get_peers(s, &certs_size); - - if (certs == NULL) - return false; - - for (unsigned int i = 0; i < certs_size; i++) - out_certs.push_back(certs[i]); - - return true; - } - bool session::get_peers_certificate(const gnutls_datum_t ** certs, - unsigned int *certs_size) const { - *certs = gnutls_certificate_get_peers(s, certs_size); - - if (*certs == NULL) - return false; - return true; - } - void session::get_our_certificate(gnutls_datum_t & cert) const { - const gnutls_datum_t *d; - - d = gnutls_certificate_get_ours(s); - if (d == NULL) - throw(exception(GNUTLS_E_INVALID_REQUEST)); - - cert = *d; - } - time_t session::get_peers_certificate_activation_time() const { - return gnutls_certificate_activation_time_peers(s); - } - time_t session::get_peers_certificate_expiration_time() const { - return gnutls_certificate_expiration_time_peers(s); - } - void session::verify_peers_certificate(unsigned int &status) const { - RETWRAP(gnutls_certificate_verify_peers2(s, &status)); - } client_session::client_session():session(GNUTLS_CLIENT) { - } - - client_session::client_session(int flags):session(GNUTLS_CLIENT | - (flags & - ~GNUTLS_SERVER)) { - } - - client_session::~client_session() { - } +size_t session::get_max_size() const +{ + return gnutls_record_get_max_size(s); +} +void session::set_max_size(size_t size) +{ + RETWRAP(gnutls_record_set_max_size(s, size)); +} + +size_t session::check_pending() const +{ + return gnutls_record_check_pending(s); +} +void session::prf(size_t label_size, const char *label, int server_random_first, + size_t extra_size, const char *extra, size_t outsize, + char *out) +{ + RETWRAP(gnutls_prf(s, label_size, label, server_random_first, + extra_size, extra, outsize, out)); +} + +void session::prf_raw(size_t label_size, const char *label, size_t seed_size, + const char *seed, size_t outsize, char *out) +{ + RETWRAP(gnutls_prf_raw(s, label_size, label, seed_size, seed, outsize, + out)); +} + +/* if you just want some defaults, use the following. + */ +void session::set_priority(const char *prio, const char **err_pos) +{ + RETWRAP(gnutls_priority_set_direct(s, prio, err_pos)); +} + +void session::set_priority(gnutls_priority_t p) +{ + RETWRAP(gnutls_priority_set(s, p)); +} + +gnutls_protocol_t session::get_protocol_version() const +{ + return gnutls_protocol_get_version(s); +} +void session::set_data(const void *session_data, size_t session_data_size) +{ + RETWRAP(gnutls_session_set_data(s, session_data, session_data_size)); +} + +void session::get_data(void *session_data, size_t *session_data_size) const +{ + RETWRAP(gnutls_session_get_data(s, session_data, session_data_size)); +} +void session::get_data(gnutls_session_t session, gnutls_datum_t &data) const +{ + RETWRAP(gnutls_session_get_data2(s, &data)); +} +void session::get_id(void *session_id, size_t *session_id_size) const +{ + RETWRAP(gnutls_session_get_id(s, session_id, session_id_size)); +} +bool session::is_resumed() const +{ + int ret = gnutls_session_is_resumed(s); + + return (ret != 0); +} +bool session::get_peers_certificate(std::vector &out_certs) const +{ + const gnutls_datum_t *certs; + unsigned int certs_size; + + certs = gnutls_certificate_get_peers(s, &certs_size); + + if (certs == NULL) + return false; + + for (unsigned int i = 0; i < certs_size; i++) + out_certs.push_back(certs[i]); + + return true; +} +bool session::get_peers_certificate(const gnutls_datum_t **certs, + unsigned int *certs_size) const +{ + *certs = gnutls_certificate_get_peers(s, certs_size); + + if (*certs == NULL) + return false; + return true; +} +void session::get_our_certificate(gnutls_datum_t &cert) const +{ + const gnutls_datum_t *d; + + d = gnutls_certificate_get_ours(s); + if (d == NULL) + throw(exception(GNUTLS_E_INVALID_REQUEST)); + + cert = *d; +} +time_t session::get_peers_certificate_activation_time() const +{ + return gnutls_certificate_activation_time_peers(s); +} +time_t session::get_peers_certificate_expiration_time() const +{ + return gnutls_certificate_expiration_time_peers(s); +} +void session::verify_peers_certificate(unsigned int &status) const +{ + RETWRAP(gnutls_certificate_verify_peers2(s, &status)); +} +client_session::client_session() + : session(GNUTLS_CLIENT) +{ +} + +client_session::client_session(int flags) + : session(GNUTLS_CLIENT | (flags & ~GNUTLS_SERVER)) +{ +} + +client_session::~client_session() +{ +} // client session - void client_session::set_verify_cert(const char *hostname, - unsigned flags) { - gnutls_session_set_verify_cert(s, hostname, flags); - } - - void client_session::set_server_name(gnutls_server_name_type_t type, - const void *name, - size_t name_length) { - RETWRAP(gnutls_server_name_set(s, type, name, name_length)); - } - - bool client_session::get_request_status() { - return RETWRAP(gnutls_certificate_client_get_request_status(s)); - } +void client_session::set_verify_cert(const char *hostname, unsigned flags) +{ + gnutls_session_set_verify_cert(s, hostname, flags); +} + +void client_session::set_server_name(gnutls_server_name_type_t type, + const void *name, size_t name_length) +{ + RETWRAP(gnutls_server_name_set(s, type, name, name_length)); +} + +bool client_session::get_request_status() +{ + return RETWRAP(gnutls_certificate_client_get_request_status(s)); +} // server_session - void server_session::get_server_name(void *data, size_t *data_length, - unsigned int *type, - unsigned int indx) const { - RETWRAP(gnutls_server_name_get - (s, data, data_length, type, indx)); - } +void server_session::get_server_name(void *data, size_t *data_length, + unsigned int *type, + unsigned int indx) const +{ + RETWRAP(gnutls_server_name_get(s, data, data_length, type, indx)); +} // internal DB stuff - static int store_function(void *_db, gnutls_datum_t key, - gnutls_datum_t data) { - try { - DB *db = static_cast < DB * >(_db); - - if (db->store(key, data) == false) - return -1; - } - catch( ...) { - return -1; - } - - return 0; - } +static int store_function(void *_db, gnutls_datum_t key, gnutls_datum_t data) +{ + try { + DB *db = static_cast(_db); - const static gnutls_datum_t null_datum = { NULL, 0 }; - - static gnutls_datum_t retrieve_function(void *_db, gnutls_datum_t key) { - gnutls_datum_t data; - - try { - DB *db = static_cast < DB * >(_db); - - if (db->retrieve(key, data) == false) - return null_datum; - - } - catch( ...) { - return null_datum; - } - - return data; - } - - static int remove_function(void *_db, gnutls_datum_t key) { - try { - DB *db = static_cast < DB * >(_db); - - if (db->remove(key) == false) - return -1; - } - catch( ...) { + if (db->store(key, data) == false) return -1; - } - - return 0; - } - - void server_session::set_db(const DB & db) { - gnutls_db_set_ptr(s, const_cast < DB * >(&db)); - gnutls_db_set_store_function(s, store_function); - gnutls_db_set_retrieve_function(s, retrieve_function); - gnutls_db_set_remove_function(s, remove_function); - } - - void server_session::set_db_cache_expiration(unsigned int seconds) { - gnutls_db_set_cache_expiration(s, seconds); - } - - void server_session::db_remove() const { - gnutls_db_remove_session(s); - } bool server_session:: - db_check_entry(const gnutls_datum_t & session_data) const { - int ret = gnutls_db_check_entry(s, session_data); - - if (ret != 0) - return true; - return false; - } - void session::set_max_handshake_packet_length(size_t max) { - gnutls_handshake_set_max_packet_length(s, max); - } - - void session::clear_credentials() { - gnutls_credentials_clear(s); - } - - void session::set_credentials(const credentials & cred) { - RETWRAP(gnutls_credentials_set(s, cred.get_type(), cred.ptr())); - } - - const char *server_session::get_srp_username() const { - return gnutls_srp_server_get_username(s); - } - const char *server_session::get_psk_username() const { - return gnutls_psk_server_get_username(s); - } - void session::set_transport_ptr(gnutls_transport_ptr_t ptr) { - gnutls_transport_set_ptr(s, ptr); - } - - void session::set_transport_ptr(gnutls_transport_ptr_t recv_ptr, - gnutls_transport_ptr_t send_ptr) { - gnutls_transport_set_ptr2(s, recv_ptr, send_ptr); - } - - gnutls_transport_ptr_t session::get_transport_ptr() const { - return gnutls_transport_get_ptr(s); - } - void session::get_transport_ptr(gnutls_transport_ptr_t & recv_ptr, - gnutls_transport_ptr_t & send_ptr) - const { - gnutls_transport_get_ptr2(s, &recv_ptr, &send_ptr); - } void session::set_transport_lowat(size_t num) { - throw(exception(GNUTLS_E_UNIMPLEMENTED_FEATURE)); - } - - void session::set_transport_push_function(gnutls_push_func push_func) { - gnutls_transport_set_push_function(s, push_func); - } - - void session:: - set_transport_vec_push_function(gnutls_vec_push_func vec_push_func) - { - gnutls_transport_set_vec_push_function(s, vec_push_func); - } - - void session::set_transport_pull_function(gnutls_pull_func pull_func) { - gnutls_transport_set_pull_function(s, pull_func); - } - - void session:: - set_transport_pull_timeout_function(gnutls_pull_timeout_func - pull_timeout_func) { - gnutls_transport_set_pull_timeout_function(s, - pull_timeout_func); - } - - void session::set_user_ptr(void *ptr) { - gnutls_session_set_ptr(s, ptr); - } - - void *session::get_user_ptr() const { - return gnutls_session_get_ptr(s); - } - void session::send_openpgp_cert(gnutls_openpgp_crt_status_t status) { - gnutls_openpgp_send_cert(s, status); - } - - void session::set_dh_prime_bits(unsigned int bits) { - gnutls_dh_set_prime_bits(s, bits); - } - - unsigned int session::get_dh_secret_bits() const { - return RETWRAP(gnutls_dh_get_secret_bits(s)); - } - unsigned int session::get_dh_peers_public_bits() const { - return RETWRAP(gnutls_dh_get_peers_public_bits(s)); - } - unsigned int session::get_dh_prime_bits() const { - return RETWRAP(gnutls_dh_get_prime_bits(s)); - } - void session::get_dh_group(gnutls_datum_t & gen, gnutls_datum_t & prime) const { - RETWRAP(gnutls_dh_get_group(s, &gen, &prime)); - } void session::get_dh_pubkey(gnutls_datum_t & raw_key) const { - RETWRAP(gnutls_dh_get_pubkey(s, &raw_key)); - } void server_session:: - set_certificate_request(gnutls_certificate_request_t req) { - gnutls_certificate_server_set_request(s, req); - } - - gnutls_credentials_type_t session::get_auth_type() const { - return gnutls_auth_get_type(s); - } - gnutls_credentials_type_t session::get_server_auth_type() const { - return gnutls_auth_server_get_type(s); - } - gnutls_credentials_type_t session::get_client_auth_type() const { - return gnutls_auth_client_get_type(s); - } - certificate_credentials::~certificate_credentials() { - gnutls_certificate_free_credentials(cred); - } - - certificate_credentials::certificate_credentials():credentials - (GNUTLS_CRD_CERTIFICATE) - { - RETWRAP(gnutls_certificate_allocate_credentials(&cred)); - set_ptr(cred); - } - - void certificate_server_credentials:: - set_params_function(gnutls_params_function * func) { - gnutls_certificate_set_params_function(cred, func); - } - - anon_server_credentials::anon_server_credentials():credentials - (GNUTLS_CRD_ANON) - { - RETWRAP(gnutls_anon_allocate_server_credentials(&cred)); - set_ptr(cred); - } - - anon_server_credentials::~anon_server_credentials() { - gnutls_anon_free_server_credentials(cred); - } - - void anon_server_credentials::set_dh_params(const dh_params & params) { - gnutls_anon_set_server_dh_params(cred, params.get_params_t()); + } catch (...) { + return -1; } - void anon_server_credentials:: - set_params_function(gnutls_params_function * func) { - gnutls_anon_set_server_params_function(cred, func); - } - - anon_client_credentials::anon_client_credentials():credentials - (GNUTLS_CRD_ANON) - { - RETWRAP(gnutls_anon_allocate_client_credentials(&cred)); - set_ptr(cred); - } - - anon_client_credentials::~anon_client_credentials() { - gnutls_anon_free_client_credentials(cred); - } + return 0; +} - void certificate_credentials::free_keys() { - gnutls_certificate_free_keys(cred); - } +const static gnutls_datum_t null_datum = { NULL, 0 }; - void certificate_credentials::free_cas() { - gnutls_certificate_free_cas(cred); - } +static gnutls_datum_t retrieve_function(void *_db, gnutls_datum_t key) +{ + gnutls_datum_t data; - void certificate_credentials::free_ca_names() { - gnutls_certificate_free_ca_names(cred); - } + try { + DB *db = static_cast(_db); - void certificate_credentials::free_crls() { - gnutls_certificate_free_crls(cred); - } - - void certificate_credentials::set_dh_params(const dh_params & params) { - gnutls_certificate_set_dh_params(cred, params.get_params_t()); - } - - void certificate_credentials::set_verify_flags(unsigned int flags) { - gnutls_certificate_set_verify_flags(cred, flags); - } - - void certificate_credentials::set_verify_limits(unsigned int max_bits, - unsigned int max_depth) - { - gnutls_certificate_set_verify_limits(cred, max_bits, max_depth); - } - - void certificate_credentials::set_x509_trust_file(const char *cafile, - gnutls_x509_crt_fmt_t - type) { - RETWRAP(gnutls_certificate_set_x509_trust_file - (cred, cafile, type)); - } - - void certificate_credentials::set_x509_trust(const gnutls_datum_t & CA, - gnutls_x509_crt_fmt_t type) - { - RETWRAP(gnutls_certificate_set_x509_trust_mem(cred, &CA, type)); - } - - void certificate_credentials::set_x509_crl_file(const char *crlfile, - gnutls_x509_crt_fmt_t - type) { - RETWRAP(gnutls_certificate_set_x509_crl_file - (cred, crlfile, type)); - } - - void certificate_credentials::set_x509_crl(const gnutls_datum_t & CRL, - gnutls_x509_crt_fmt_t type) { - RETWRAP(gnutls_certificate_set_x509_crl_mem(cred, &CRL, type)); - } - - void certificate_credentials::set_x509_key_file(const char *certfile, - const char *keyfile, - gnutls_x509_crt_fmt_t - type) { - RETWRAP(gnutls_certificate_set_x509_key_file - (cred, certfile, keyfile, type)); - } + if (db->retrieve(key, data) == false) + return null_datum; - void certificate_credentials::set_x509_key(const gnutls_datum_t & CERT, - const gnutls_datum_t & KEY, - gnutls_x509_crt_fmt_t type) { - RETWRAP(gnutls_certificate_set_x509_key_mem - (cred, &CERT, &KEY, type)); + } catch (...) { + return null_datum; } - void certificate_credentials:: - set_simple_pkcs12_file(const char *pkcs12file, - gnutls_x509_crt_fmt_t type, - const char *password) { - RETWRAP(gnutls_certificate_set_x509_simple_pkcs12_file - (cred, pkcs12file, type, password)); - } + return data; +} - void certificate_credentials::set_x509_key(gnutls_x509_crt_t * - cert_list, - int cert_list_size, - gnutls_x509_privkey_t key) { - RETWRAP(gnutls_certificate_set_x509_key - (cred, cert_list, cert_list_size, key)); - } +static int remove_function(void *_db, gnutls_datum_t key) +{ + try { + DB *db = static_cast(_db); - void certificate_credentials::set_x509_trust(gnutls_x509_crt_t * - ca_list, int ca_list_size) - { - RETWRAP(gnutls_certificate_set_x509_trust - (cred, ca_list, ca_list_size)); - } - - void certificate_credentials::set_x509_crl(gnutls_x509_crl_t * crl_list, - int crl_list_size) { - RETWRAP(gnutls_certificate_set_x509_crl - (cred, crl_list, crl_list_size)); - } - - void certificate_credentials:: - set_retrieve_function(gnutls_certificate_retrieve_function * func) { - gnutls_certificate_set_retrieve_function(cred, func); - } + if (db->remove(key) == false) + return -1; + } catch (...) { + return -1; + } + + return 0; +} + +void server_session::set_db(const DB &db) +{ + gnutls_db_set_ptr(s, const_cast(&db)); + gnutls_db_set_store_function(s, store_function); + gnutls_db_set_retrieve_function(s, retrieve_function); + gnutls_db_set_remove_function(s, remove_function); +} + +void server_session::set_db_cache_expiration(unsigned int seconds) +{ + gnutls_db_set_cache_expiration(s, seconds); +} + +void server_session::db_remove() const +{ + gnutls_db_remove_session(s); +} +bool server_session::db_check_entry(const gnutls_datum_t &session_data) const +{ + int ret = gnutls_db_check_entry(s, session_data); + + if (ret != 0) + return true; + return false; +} +void session::set_max_handshake_packet_length(size_t max) +{ + gnutls_handshake_set_max_packet_length(s, max); +} + +void session::clear_credentials() +{ + gnutls_credentials_clear(s); +} + +void session::set_credentials(const credentials &cred) +{ + RETWRAP(gnutls_credentials_set(s, cred.get_type(), cred.ptr())); +} + +const char *server_session::get_srp_username() const +{ + return gnutls_srp_server_get_username(s); +} +const char *server_session::get_psk_username() const +{ + return gnutls_psk_server_get_username(s); +} +void session::set_transport_ptr(gnutls_transport_ptr_t ptr) +{ + gnutls_transport_set_ptr(s, ptr); +} + +void session::set_transport_ptr(gnutls_transport_ptr_t recv_ptr, + gnutls_transport_ptr_t send_ptr) +{ + gnutls_transport_set_ptr2(s, recv_ptr, send_ptr); +} + +gnutls_transport_ptr_t session::get_transport_ptr() const +{ + return gnutls_transport_get_ptr(s); +} +void session::get_transport_ptr(gnutls_transport_ptr_t &recv_ptr, + gnutls_transport_ptr_t &send_ptr) const +{ + gnutls_transport_get_ptr2(s, &recv_ptr, &send_ptr); +} +void session::set_transport_lowat(size_t num) +{ + throw(exception(GNUTLS_E_UNIMPLEMENTED_FEATURE)); +} + +void session::set_transport_push_function(gnutls_push_func push_func) +{ + gnutls_transport_set_push_function(s, push_func); +} + +void session::set_transport_vec_push_function(gnutls_vec_push_func vec_push_func) +{ + gnutls_transport_set_vec_push_function(s, vec_push_func); +} + +void session::set_transport_pull_function(gnutls_pull_func pull_func) +{ + gnutls_transport_set_pull_function(s, pull_func); +} + +void session::set_transport_pull_timeout_function( + gnutls_pull_timeout_func pull_timeout_func) +{ + gnutls_transport_set_pull_timeout_function(s, pull_timeout_func); +} + +void session::set_user_ptr(void *ptr) +{ + gnutls_session_set_ptr(s, ptr); +} + +void *session::get_user_ptr() const +{ + return gnutls_session_get_ptr(s); +} +void session::send_openpgp_cert(gnutls_openpgp_crt_status_t status) +{ + gnutls_openpgp_send_cert(s, status); +} + +void session::set_dh_prime_bits(unsigned int bits) +{ + gnutls_dh_set_prime_bits(s, bits); +} + +unsigned int session::get_dh_secret_bits() const +{ + return RETWRAP(gnutls_dh_get_secret_bits(s)); +} +unsigned int session::get_dh_peers_public_bits() const +{ + return RETWRAP(gnutls_dh_get_peers_public_bits(s)); +} +unsigned int session::get_dh_prime_bits() const +{ + return RETWRAP(gnutls_dh_get_prime_bits(s)); +} +void session::get_dh_group(gnutls_datum_t &gen, gnutls_datum_t &prime) const +{ + RETWRAP(gnutls_dh_get_group(s, &gen, &prime)); +} +void session::get_dh_pubkey(gnutls_datum_t &raw_key) const +{ + RETWRAP(gnutls_dh_get_pubkey(s, &raw_key)); +} +void server_session::set_certificate_request(gnutls_certificate_request_t req) +{ + gnutls_certificate_server_set_request(s, req); +} + +gnutls_credentials_type_t session::get_auth_type() const +{ + return gnutls_auth_get_type(s); +} +gnutls_credentials_type_t session::get_server_auth_type() const +{ + return gnutls_auth_server_get_type(s); +} +gnutls_credentials_type_t session::get_client_auth_type() const +{ + return gnutls_auth_client_get_type(s); +} +certificate_credentials::~certificate_credentials() +{ + gnutls_certificate_free_credentials(cred); +} + +certificate_credentials::certificate_credentials() + : credentials(GNUTLS_CRD_CERTIFICATE) +{ + RETWRAP(gnutls_certificate_allocate_credentials(&cred)); + set_ptr(cred); +} + +void certificate_server_credentials::set_params_function( + gnutls_params_function *func) +{ + gnutls_certificate_set_params_function(cred, func); +} + +anon_server_credentials::anon_server_credentials() + : credentials(GNUTLS_CRD_ANON) +{ + RETWRAP(gnutls_anon_allocate_server_credentials(&cred)); + set_ptr(cred); +} + +anon_server_credentials::~anon_server_credentials() +{ + gnutls_anon_free_server_credentials(cred); +} + +void anon_server_credentials::set_dh_params(const dh_params ¶ms) +{ + gnutls_anon_set_server_dh_params(cred, params.get_params_t()); +} + +void anon_server_credentials::set_params_function(gnutls_params_function *func) +{ + gnutls_anon_set_server_params_function(cred, func); +} + +anon_client_credentials::anon_client_credentials() + : credentials(GNUTLS_CRD_ANON) +{ + RETWRAP(gnutls_anon_allocate_client_credentials(&cred)); + set_ptr(cred); +} + +anon_client_credentials::~anon_client_credentials() +{ + gnutls_anon_free_client_credentials(cred); +} + +void certificate_credentials::free_keys() +{ + gnutls_certificate_free_keys(cred); +} + +void certificate_credentials::free_cas() +{ + gnutls_certificate_free_cas(cred); +} + +void certificate_credentials::free_ca_names() +{ + gnutls_certificate_free_ca_names(cred); +} + +void certificate_credentials::free_crls() +{ + gnutls_certificate_free_crls(cred); +} + +void certificate_credentials::set_dh_params(const dh_params ¶ms) +{ + gnutls_certificate_set_dh_params(cred, params.get_params_t()); +} + +void certificate_credentials::set_verify_flags(unsigned int flags) +{ + gnutls_certificate_set_verify_flags(cred, flags); +} + +void certificate_credentials::set_verify_limits(unsigned int max_bits, + unsigned int max_depth) +{ + gnutls_certificate_set_verify_limits(cred, max_bits, max_depth); +} + +void certificate_credentials::set_x509_trust_file(const char *cafile, + gnutls_x509_crt_fmt_t type) +{ + RETWRAP(gnutls_certificate_set_x509_trust_file(cred, cafile, type)); +} + +void certificate_credentials::set_x509_trust(const gnutls_datum_t &CA, + gnutls_x509_crt_fmt_t type) +{ + RETWRAP(gnutls_certificate_set_x509_trust_mem(cred, &CA, type)); +} + +void certificate_credentials::set_x509_crl_file(const char *crlfile, + gnutls_x509_crt_fmt_t type) +{ + RETWRAP(gnutls_certificate_set_x509_crl_file(cred, crlfile, type)); +} + +void certificate_credentials::set_x509_crl(const gnutls_datum_t &CRL, + gnutls_x509_crt_fmt_t type) +{ + RETWRAP(gnutls_certificate_set_x509_crl_mem(cred, &CRL, type)); +} + +void certificate_credentials::set_x509_key_file(const char *certfile, + const char *keyfile, + gnutls_x509_crt_fmt_t type) +{ + RETWRAP(gnutls_certificate_set_x509_key_file(cred, certfile, keyfile, + type)); +} + +void certificate_credentials::set_x509_key(const gnutls_datum_t &CERT, + const gnutls_datum_t &KEY, + gnutls_x509_crt_fmt_t type) +{ + RETWRAP(gnutls_certificate_set_x509_key_mem(cred, &CERT, &KEY, type)); +} + +void certificate_credentials::set_simple_pkcs12_file(const char *pkcs12file, + gnutls_x509_crt_fmt_t type, + const char *password) +{ + RETWRAP(gnutls_certificate_set_x509_simple_pkcs12_file(cred, pkcs12file, + type, password)); +} + +void certificate_credentials::set_x509_key(gnutls_x509_crt_t *cert_list, + int cert_list_size, + gnutls_x509_privkey_t key) +{ + RETWRAP(gnutls_certificate_set_x509_key(cred, cert_list, cert_list_size, + key)); +} + +void certificate_credentials::set_x509_trust(gnutls_x509_crt_t *ca_list, + int ca_list_size) +{ + RETWRAP(gnutls_certificate_set_x509_trust(cred, ca_list, ca_list_size)); +} + +void certificate_credentials::set_x509_crl(gnutls_x509_crl_t *crl_list, + int crl_list_size) +{ + RETWRAP(gnutls_certificate_set_x509_crl(cred, crl_list, crl_list_size)); +} + +void certificate_credentials::set_retrieve_function( + gnutls_certificate_retrieve_function *func) +{ + gnutls_certificate_set_retrieve_function(cred, func); +} // SRP - srp_server_credentials::srp_server_credentials():credentials(GNUTLS_CRD_SRP) - { - RETWRAP(gnutls_srp_allocate_server_credentials(&cred)); - set_ptr(cred); - } - - srp_server_credentials::~srp_server_credentials() { - gnutls_srp_free_server_credentials(cred); - } - - srp_client_credentials::srp_client_credentials():credentials(GNUTLS_CRD_SRP) - { - RETWRAP(gnutls_srp_allocate_client_credentials(&cred)); - set_ptr(cred); - } - - srp_client_credentials::~srp_client_credentials() { - gnutls_srp_free_client_credentials(cred); - } - - void srp_client_credentials::set_credentials(const char *username, - const char *password) { - RETWRAP(gnutls_srp_set_client_credentials - (cred, username, password)); - } - - void srp_server_credentials:: - set_credentials_file(const char *password_file, - const char *password_conf_file) { - RETWRAP(gnutls_srp_set_server_credentials_file - (cred, password_file, password_conf_file)); - } - - void srp_server_credentials:: - set_credentials_function(gnutls_srp_server_credentials_function * - func) { - gnutls_srp_set_server_credentials_function(cred, func); - } - - void srp_client_credentials:: - set_credentials_function(gnutls_srp_client_credentials_function * - func) { - gnutls_srp_set_client_credentials_function(cred, func); - } +srp_server_credentials::srp_server_credentials() + : credentials(GNUTLS_CRD_SRP) +{ + RETWRAP(gnutls_srp_allocate_server_credentials(&cred)); + set_ptr(cred); +} + +srp_server_credentials::~srp_server_credentials() +{ + gnutls_srp_free_server_credentials(cred); +} + +srp_client_credentials::srp_client_credentials() + : credentials(GNUTLS_CRD_SRP) +{ + RETWRAP(gnutls_srp_allocate_client_credentials(&cred)); + set_ptr(cred); +} + +srp_client_credentials::~srp_client_credentials() +{ + gnutls_srp_free_client_credentials(cred); +} + +void srp_client_credentials::set_credentials(const char *username, + const char *password) +{ + RETWRAP(gnutls_srp_set_client_credentials(cred, username, password)); +} + +void srp_server_credentials::set_credentials_file( + const char *password_file, const char *password_conf_file) +{ + RETWRAP(gnutls_srp_set_server_credentials_file(cred, password_file, + password_conf_file)); +} + +void srp_server_credentials::set_credentials_function( + gnutls_srp_server_credentials_function *func) +{ + gnutls_srp_set_server_credentials_function(cred, func); +} + +void srp_client_credentials::set_credentials_function( + gnutls_srp_client_credentials_function *func) +{ + gnutls_srp_set_client_credentials_function(cred, func); +} // PSK - psk_server_credentials::psk_server_credentials():credentials(GNUTLS_CRD_PSK) - { - RETWRAP(gnutls_psk_allocate_server_credentials(&cred)); - set_ptr(cred); - } - - psk_server_credentials::~psk_server_credentials() { - gnutls_psk_free_server_credentials(cred); - } - - void psk_server_credentials:: - set_credentials_file(const char *password_file) { - RETWRAP(gnutls_psk_set_server_credentials_file - (cred, password_file)); - } - - void psk_server_credentials:: - set_credentials_function(gnutls_psk_server_credentials_function * - func) { - gnutls_psk_set_server_credentials_function(cred, func); - } - - void psk_server_credentials::set_dh_params(const dh_params & params) { - gnutls_psk_set_server_dh_params(cred, params.get_params_t()); - } - - void psk_server_credentials:: - set_params_function(gnutls_params_function * func) { - gnutls_psk_set_server_params_function(cred, func); - } - - psk_client_credentials::psk_client_credentials():credentials(GNUTLS_CRD_PSK) - { - RETWRAP(gnutls_psk_allocate_client_credentials(&cred)); - set_ptr(cred); - } - - psk_client_credentials::~psk_client_credentials() { - gnutls_psk_free_client_credentials(cred); - } - - void psk_client_credentials::set_credentials(const char *username, - const gnutls_datum_t & key, - gnutls_psk_key_flags flags) - { - RETWRAP(gnutls_psk_set_client_credentials - (cred, username, &key, flags)); - } - - void psk_client_credentials:: - set_credentials_function(gnutls_psk_client_credentials_function * - func) { - gnutls_psk_set_client_credentials_function(cred, func); - } - - credentials::credentials(gnutls_credentials_type_t t):type(t), cred(NULL) - { - } - - gnutls_credentials_type_t credentials::get_type() const { - return type; - } - void *credentials::ptr() const { - return cred; - } - void credentials::set_ptr(void *ptr) { - cred = ptr; - } - - exception::exception(int x) { - retcode = x; - } - - int exception::get_code() { - return retcode; - } - - const char *exception::what() const throw() { - return gnutls_strerror(retcode); - } - - dh_params::dh_params() { - RETWRAP(gnutls_dh_params_init(¶ms)); - } - - dh_params::~dh_params() { - gnutls_dh_params_deinit(params); - } - - void dh_params::import_raw(const gnutls_datum_t & prime, - const gnutls_datum_t & generator) { - RETWRAP(gnutls_dh_params_import_raw - (params, &prime, &generator)); - } - - void dh_params::import_pkcs3(const gnutls_datum_t & pkcs3_params, - gnutls_x509_crt_fmt_t format) { - RETWRAP(gnutls_dh_params_import_pkcs3 - (params, &pkcs3_params, format)); - } - - void dh_params::generate(unsigned int bits) { - RETWRAP(gnutls_dh_params_generate2(params, bits)); - } - - void dh_params::export_pkcs3(gnutls_x509_crt_fmt_t format, - unsigned char *params_data, - size_t *params_data_size) { - RETWRAP(gnutls_dh_params_export_pkcs3 - (params, format, params_data, params_data_size)); - } - - void dh_params::export_raw(gnutls_datum_t & prime, - gnutls_datum_t & generator) { - RETWRAP(gnutls_dh_params_export_raw - (params, &prime, &generator, NULL)); - } - - gnutls_dh_params_t dh_params::get_params_t() const { - return params; +psk_server_credentials::psk_server_credentials() + : credentials(GNUTLS_CRD_PSK) +{ + RETWRAP(gnutls_psk_allocate_server_credentials(&cred)); + set_ptr(cred); +} + +psk_server_credentials::~psk_server_credentials() +{ + gnutls_psk_free_server_credentials(cred); +} + +void psk_server_credentials::set_credentials_file(const char *password_file) +{ + RETWRAP(gnutls_psk_set_server_credentials_file(cred, password_file)); +} + +void psk_server_credentials::set_credentials_function( + gnutls_psk_server_credentials_function *func) +{ + gnutls_psk_set_server_credentials_function(cred, func); +} + +void psk_server_credentials::set_dh_params(const dh_params ¶ms) +{ + gnutls_psk_set_server_dh_params(cred, params.get_params_t()); +} + +void psk_server_credentials::set_params_function(gnutls_params_function *func) +{ + gnutls_psk_set_server_params_function(cred, func); +} + +psk_client_credentials::psk_client_credentials() + : credentials(GNUTLS_CRD_PSK) +{ + RETWRAP(gnutls_psk_allocate_client_credentials(&cred)); + set_ptr(cred); +} + +psk_client_credentials::~psk_client_credentials() +{ + gnutls_psk_free_client_credentials(cred); +} + +void psk_client_credentials::set_credentials(const char *username, + const gnutls_datum_t &key, + gnutls_psk_key_flags flags) +{ + RETWRAP(gnutls_psk_set_client_credentials(cred, username, &key, flags)); +} + +void psk_client_credentials::set_credentials_function( + gnutls_psk_client_credentials_function *func) +{ + gnutls_psk_set_client_credentials_function(cred, func); +} + +credentials::credentials(gnutls_credentials_type_t t) + : type(t) + , cred(NULL) +{ +} + +gnutls_credentials_type_t credentials::get_type() const +{ + return type; +} +void *credentials::ptr() const +{ + return cred; +} +void credentials::set_ptr(void *ptr) +{ + cred = ptr; +} + +exception::exception(int x) +{ + retcode = x; +} + +int exception::get_code() +{ + return retcode; +} + +const char *exception::what() const throw() +{ + return gnutls_strerror(retcode); +} + +dh_params::dh_params() +{ + RETWRAP(gnutls_dh_params_init(¶ms)); +} + +dh_params::~dh_params() +{ + gnutls_dh_params_deinit(params); +} + +void dh_params::import_raw(const gnutls_datum_t &prime, + const gnutls_datum_t &generator) +{ + RETWRAP(gnutls_dh_params_import_raw(params, &prime, &generator)); +} + +void dh_params::import_pkcs3(const gnutls_datum_t &pkcs3_params, + gnutls_x509_crt_fmt_t format) +{ + RETWRAP(gnutls_dh_params_import_pkcs3(params, &pkcs3_params, format)); +} + +void dh_params::generate(unsigned int bits) +{ + RETWRAP(gnutls_dh_params_generate2(params, bits)); +} + +void dh_params::export_pkcs3(gnutls_x509_crt_fmt_t format, + unsigned char *params_data, + size_t *params_data_size) +{ + RETWRAP(gnutls_dh_params_export_pkcs3(params, format, params_data, + params_data_size)); +} + +void dh_params::export_raw(gnutls_datum_t &prime, gnutls_datum_t &generator) +{ + RETWRAP(gnutls_dh_params_export_raw(params, &prime, &generator, NULL)); +} + +gnutls_dh_params_t dh_params::get_params_t() const +{ + return params; +} +dh_params &dh_params::operator=(const dh_params &src) +{ + dh_params *dst = new dh_params; + int ret; + + ret = gnutls_dh_params_cpy(dst->params, src.params); + + if (ret < 0) { + delete dst; + throw(exception(ret)); } - dh_params & dh_params::operator=(const dh_params & src) { - dh_params *dst = new dh_params; - int ret; - ret = gnutls_dh_params_cpy(dst->params, src.params); + std::swap(this->params, dst->params); + delete dst; - if (ret < 0) { - delete dst; - throw(exception(ret)); - } - - std::swap(this->params, dst->params); - delete dst; - - return *this; - } + return *this; +} -# endif /* GNUTLS_GNUTLSXX_NO_HEADERONLY */ +#endif /* GNUTLS_GNUTLSXX_NO_HEADERONLY */ -} /* namespace gnutls */ +} /* namespace gnutls */ -#endif /* GNUTLS_GNUTLSXX_H */ +#endif /* GNUTLS_GNUTLSXX_H */ diff --git a/lib/includes/gnutls/ocsp.h b/lib/includes/gnutls/ocsp.h index 1e05469852..9e271476cf 100644 --- a/lib/includes/gnutls/ocsp.h +++ b/lib/includes/gnutls/ocsp.h @@ -24,16 +24,16 @@ */ #ifndef GNUTLS_OCSP_H -# define GNUTLS_OCSP_H +#define GNUTLS_OCSP_H -# include -# include +#include +#include #ifdef __cplusplus extern "C" { #endif -# define GNUTLS_OCSP_NONCE "1.3.6.1.5.5.7.48.1.2" +#define GNUTLS_OCSP_NONCE "1.3.6.1.5.5.7.48.1.2" /** * gnutls_ocsp_print_formats_t: @@ -142,114 +142,101 @@ struct gnutls_ocsp_req_int; typedef struct gnutls_ocsp_req_int *gnutls_ocsp_req_t; typedef const struct gnutls_ocsp_req_int *gnutls_ocsp_req_const_t; -int gnutls_ocsp_req_init(gnutls_ocsp_req_t * req); +int gnutls_ocsp_req_init(gnutls_ocsp_req_t *req); void gnutls_ocsp_req_deinit(gnutls_ocsp_req_t req); -int gnutls_ocsp_req_import(gnutls_ocsp_req_t req, const gnutls_datum_t * data); -int gnutls_ocsp_req_export(gnutls_ocsp_req_const_t req, gnutls_datum_t * data); +int gnutls_ocsp_req_import(gnutls_ocsp_req_t req, const gnutls_datum_t *data); +int gnutls_ocsp_req_export(gnutls_ocsp_req_const_t req, gnutls_datum_t *data); int gnutls_ocsp_req_print(gnutls_ocsp_req_const_t req, gnutls_ocsp_print_formats_t format, - gnutls_datum_t * out); + gnutls_datum_t *out); int gnutls_ocsp_req_get_version(gnutls_ocsp_req_const_t req); -int gnutls_ocsp_req_get_cert_id(gnutls_ocsp_req_const_t req, - unsigned indx, - gnutls_digest_algorithm_t * digest, - gnutls_datum_t * issuer_name_hash, - gnutls_datum_t * issuer_key_hash, - gnutls_datum_t * serial_number); +int gnutls_ocsp_req_get_cert_id(gnutls_ocsp_req_const_t req, unsigned indx, + gnutls_digest_algorithm_t *digest, + gnutls_datum_t *issuer_name_hash, + gnutls_datum_t *issuer_key_hash, + gnutls_datum_t *serial_number); int gnutls_ocsp_req_add_cert_id(gnutls_ocsp_req_t req, gnutls_digest_algorithm_t digest, - const gnutls_datum_t * - issuer_name_hash, - const gnutls_datum_t * - issuer_key_hash, - const gnutls_datum_t * serial_number); + const gnutls_datum_t *issuer_name_hash, + const gnutls_datum_t *issuer_key_hash, + const gnutls_datum_t *serial_number); int gnutls_ocsp_req_add_cert(gnutls_ocsp_req_t req, gnutls_digest_algorithm_t digest, gnutls_x509_crt_t issuer, gnutls_x509_crt_t cert); -int gnutls_ocsp_req_get_extension(gnutls_ocsp_req_const_t req, - unsigned indx, - gnutls_datum_t * oid, - unsigned int *critical, - gnutls_datum_t * data); -int gnutls_ocsp_req_set_extension(gnutls_ocsp_req_t req, - const char *oid, +int gnutls_ocsp_req_get_extension(gnutls_ocsp_req_const_t req, unsigned indx, + gnutls_datum_t *oid, unsigned int *critical, + gnutls_datum_t *data); +int gnutls_ocsp_req_set_extension(gnutls_ocsp_req_t req, const char *oid, unsigned int critical, - const gnutls_datum_t * data); + const gnutls_datum_t *data); int gnutls_ocsp_req_get_nonce(gnutls_ocsp_req_const_t req, - unsigned int *critical, gnutls_datum_t * nonce); -int gnutls_ocsp_req_set_nonce(gnutls_ocsp_req_t req, - unsigned int critical, - const gnutls_datum_t * nonce); + unsigned int *critical, gnutls_datum_t *nonce); +int gnutls_ocsp_req_set_nonce(gnutls_ocsp_req_t req, unsigned int critical, + const gnutls_datum_t *nonce); int gnutls_ocsp_req_randomize_nonce(gnutls_ocsp_req_t req); struct gnutls_ocsp_resp_int; typedef struct gnutls_ocsp_resp_int *gnutls_ocsp_resp_t; typedef const struct gnutls_ocsp_resp_int *gnutls_ocsp_resp_const_t; -int gnutls_ocsp_resp_init(gnutls_ocsp_resp_t * resp); +int gnutls_ocsp_resp_init(gnutls_ocsp_resp_t *resp); void gnutls_ocsp_resp_deinit(gnutls_ocsp_resp_t resp); int gnutls_ocsp_resp_import(gnutls_ocsp_resp_t resp, - const gnutls_datum_t * data); + const gnutls_datum_t *data); int gnutls_ocsp_resp_import2(gnutls_ocsp_resp_t resp, - const gnutls_datum_t * data, + const gnutls_datum_t *data, gnutls_x509_crt_fmt_t fmt); int gnutls_ocsp_resp_export(gnutls_ocsp_resp_const_t resp, - gnutls_datum_t * data); + gnutls_datum_t *data); int gnutls_ocsp_resp_export2(gnutls_ocsp_resp_const_t resp, - gnutls_datum_t * data, gnutls_x509_crt_fmt_t fmt); + gnutls_datum_t *data, gnutls_x509_crt_fmt_t fmt); int gnutls_ocsp_resp_print(gnutls_ocsp_resp_const_t resp, gnutls_ocsp_print_formats_t format, - gnutls_datum_t * out); + gnutls_datum_t *out); int gnutls_ocsp_resp_get_status(gnutls_ocsp_resp_const_t resp); int gnutls_ocsp_resp_get_response(gnutls_ocsp_resp_const_t resp, - gnutls_datum_t * - response_type_oid, gnutls_datum_t * response); + gnutls_datum_t *response_type_oid, + gnutls_datum_t *response); int gnutls_ocsp_resp_get_version(gnutls_ocsp_resp_const_t resp); int gnutls_ocsp_resp_get_responder(gnutls_ocsp_resp_const_t resp, - gnutls_datum_t * dn); + gnutls_datum_t *dn); int gnutls_ocsp_resp_get_responder2(gnutls_ocsp_resp_const_t resp, - gnutls_datum_t * dn, unsigned flags); + gnutls_datum_t *dn, unsigned flags); /* the raw key ID of the responder */ -# define GNUTLS_OCSP_RESP_ID_KEY 1 +#define GNUTLS_OCSP_RESP_ID_KEY 1 /* the raw DN of the responder */ -# define GNUTLS_OCSP_RESP_ID_DN 2 -int -gnutls_ocsp_resp_get_responder_raw_id(gnutls_ocsp_resp_const_t resp, - unsigned type, gnutls_datum_t * raw); +#define GNUTLS_OCSP_RESP_ID_DN 2 +int gnutls_ocsp_resp_get_responder_raw_id(gnutls_ocsp_resp_const_t resp, + unsigned type, gnutls_datum_t *raw); time_t gnutls_ocsp_resp_get_produced(gnutls_ocsp_resp_const_t resp); -int gnutls_ocsp_resp_get_single(gnutls_ocsp_resp_const_t resp, - unsigned indx, - gnutls_digest_algorithm_t * digest, - gnutls_datum_t * issuer_name_hash, - gnutls_datum_t * issuer_key_hash, - gnutls_datum_t * serial_number, - unsigned int *cert_status, - time_t * this_update, - time_t * next_update, - time_t * revocation_time, +int gnutls_ocsp_resp_get_single(gnutls_ocsp_resp_const_t resp, unsigned indx, + gnutls_digest_algorithm_t *digest, + gnutls_datum_t *issuer_name_hash, + gnutls_datum_t *issuer_key_hash, + gnutls_datum_t *serial_number, + unsigned int *cert_status, time_t *this_update, + time_t *next_update, time_t *revocation_time, unsigned int *revocation_reason); -int gnutls_ocsp_resp_get_extension(gnutls_ocsp_resp_const_t resp, - unsigned indx, - gnutls_datum_t * oid, - unsigned int *critical, - gnutls_datum_t * data); +int gnutls_ocsp_resp_get_extension(gnutls_ocsp_resp_const_t resp, unsigned indx, + gnutls_datum_t *oid, unsigned int *critical, + gnutls_datum_t *data); int gnutls_ocsp_resp_get_nonce(gnutls_ocsp_resp_const_t resp, - unsigned int *critical, gnutls_datum_t * nonce); + unsigned int *critical, gnutls_datum_t *nonce); int gnutls_ocsp_resp_get_signature_algorithm(gnutls_ocsp_resp_const_t resp); int gnutls_ocsp_resp_get_signature(gnutls_ocsp_resp_const_t resp, - gnutls_datum_t * sig); + gnutls_datum_t *sig); int gnutls_ocsp_resp_get_certs(gnutls_ocsp_resp_const_t resp, - gnutls_x509_crt_t ** certs, size_t *ncerts); + gnutls_x509_crt_t **certs, size_t *ncerts); int gnutls_ocsp_resp_verify_direct(gnutls_ocsp_resp_const_t resp, gnutls_x509_crt_t issuer, @@ -258,17 +245,17 @@ int gnutls_ocsp_resp_verify(gnutls_ocsp_resp_const_t resp, gnutls_x509_trust_list_t trustlist, unsigned int *verify, unsigned int flags); -int gnutls_ocsp_resp_check_crt(gnutls_ocsp_resp_const_t resp, - unsigned int indx, gnutls_x509_crt_t crt); +int gnutls_ocsp_resp_check_crt(gnutls_ocsp_resp_const_t resp, unsigned int indx, + gnutls_x509_crt_t crt); -int -gnutls_ocsp_resp_list_import2(gnutls_ocsp_resp_t ** ocsps, - unsigned int *size, - const gnutls_datum_t * resp_data, - gnutls_x509_crt_fmt_t format, unsigned int flags); +int gnutls_ocsp_resp_list_import2(gnutls_ocsp_resp_t **ocsps, + unsigned int *size, + const gnutls_datum_t *resp_data, + gnutls_x509_crt_fmt_t format, + unsigned int flags); #ifdef __cplusplus } #endif -#endif /* GNUTLS_OCSP_H */ +#endif /* GNUTLS_OCSP_H */ diff --git a/lib/includes/gnutls/openpgp.h b/lib/includes/gnutls/openpgp.h index 1e1b1a2f3b..37ef588d16 100644 --- a/lib/includes/gnutls/openpgp.h +++ b/lib/includes/gnutls/openpgp.h @@ -25,10 +25,10 @@ */ #ifndef GNUTLS_OPENPGP_H -# define GNUTLS_OPENPGP_H +#define GNUTLS_OPENPGP_H -# include -# include +#include +#include #ifdef __cplusplus extern "C" { @@ -49,302 +49,248 @@ typedef enum gnutls_openpgp_crt_fmt { GNUTLS_OPENPGP_FMT_BASE64 } gnutls_openpgp_crt_fmt_t; -# define GNUTLS_OPENPGP_KEYID_SIZE 8 -# define GNUTLS_OPENPGP_V4_FINGERPRINT_SIZE 20 -typedef unsigned char - gnutls_openpgp_keyid_t[GNUTLS_OPENPGP_KEYID_SIZE]; +#define GNUTLS_OPENPGP_KEYID_SIZE 8 +#define GNUTLS_OPENPGP_V4_FINGERPRINT_SIZE 20 +typedef unsigned char gnutls_openpgp_keyid_t[GNUTLS_OPENPGP_KEYID_SIZE]; /* gnutls_openpgp_cert_t should be defined in gnutls.h */ - /* initializes the memory for gnutls_openpgp_crt_t struct */ -int gnutls_openpgp_crt_init(gnutls_openpgp_crt_t * - key) _GNUTLS_GCC_ATTR_DEPRECATED; - /* frees all memory */ +/* initializes the memory for gnutls_openpgp_crt_t struct */ +int gnutls_openpgp_crt_init(gnutls_openpgp_crt_t *key) + _GNUTLS_GCC_ATTR_DEPRECATED; +/* frees all memory */ void gnutls_openpgp_crt_deinit(gnutls_openpgp_crt_t key) - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; -int gnutls_openpgp_crt_import(gnutls_openpgp_crt_t key, - const gnutls_datum_t * data, - gnutls_openpgp_crt_fmt_t format) - _GNUTLS_GCC_ATTR_DEPRECATED; +int gnutls_openpgp_crt_import( + gnutls_openpgp_crt_t key, const gnutls_datum_t *data, + gnutls_openpgp_crt_fmt_t format) _GNUTLS_GCC_ATTR_DEPRECATED; int gnutls_openpgp_crt_export(gnutls_openpgp_crt_t key, gnutls_openpgp_crt_fmt_t format, - void *output_data, - size_t *output_data_size) - _GNUTLS_GCC_ATTR_DEPRECATED; + void *output_data, size_t *output_data_size) + _GNUTLS_GCC_ATTR_DEPRECATED; int gnutls_openpgp_crt_export2(gnutls_openpgp_crt_t key, gnutls_openpgp_crt_fmt_t format, - gnutls_datum_t * - out) _GNUTLS_GCC_ATTR_DEPRECATED; + gnutls_datum_t *out) _GNUTLS_GCC_ATTR_DEPRECATED; int gnutls_openpgp_crt_print(gnutls_openpgp_crt_t cert, - gnutls_certificate_print_formats_t - format, - gnutls_datum_t * out) _GNUTLS_GCC_ATTR_DEPRECATED; + gnutls_certificate_print_formats_t format, + gnutls_datum_t *out) _GNUTLS_GCC_ATTR_DEPRECATED; /* The key_usage flags are defined in gnutls.h. They are * the GNUTLS_KEY_* definitions. */ -# define GNUTLS_OPENPGP_MASTER_KEYID_IDX INT_MAX +#define GNUTLS_OPENPGP_MASTER_KEYID_IDX INT_MAX int gnutls_openpgp_crt_get_key_usage(gnutls_openpgp_crt_t key, unsigned int *key_usage) - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; int gnutls_openpgp_crt_get_fingerprint(gnutls_openpgp_crt_t key, void *fpr, size_t *fprlen) - _GNUTLS_GCC_ATTR_DEPRECATED; -int gnutls_openpgp_crt_get_subkey_fingerprint(gnutls_openpgp_crt_t key, - unsigned int idx, void *fpr, - size_t *fprlen) - _GNUTLS_GCC_ATTR_DEPRECATED; - -int gnutls_openpgp_crt_get_name(gnutls_openpgp_crt_t key, - int idx, char *buf, + _GNUTLS_GCC_ATTR_DEPRECATED; +int gnutls_openpgp_crt_get_subkey_fingerprint( + gnutls_openpgp_crt_t key, unsigned int idx, void *fpr, + size_t *fprlen) _GNUTLS_GCC_ATTR_DEPRECATED; + +int gnutls_openpgp_crt_get_name(gnutls_openpgp_crt_t key, int idx, char *buf, size_t *sizeof_buf) _GNUTLS_GCC_ATTR_DEPRECATED; -gnutls_pk_algorithm_t -gnutls_openpgp_crt_get_pk_algorithm(gnutls_openpgp_crt_t key, - unsigned int *bits) -_GNUTLS_GCC_ATTR_DEPRECATED; +gnutls_pk_algorithm_t gnutls_openpgp_crt_get_pk_algorithm( + gnutls_openpgp_crt_t key, + unsigned int *bits) _GNUTLS_GCC_ATTR_DEPRECATED; int gnutls_openpgp_crt_get_version(gnutls_openpgp_crt_t key) - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; time_t gnutls_openpgp_crt_get_creation_time(gnutls_openpgp_crt_t key) - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; time_t gnutls_openpgp_crt_get_expiration_time(gnutls_openpgp_crt_t key) - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; int gnutls_openpgp_crt_get_key_id(gnutls_openpgp_crt_t key, gnutls_openpgp_keyid_t keyid) - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; int gnutls_openpgp_crt_check_hostname(gnutls_openpgp_crt_t key, const char *hostname) - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; int gnutls_openpgp_crt_check_hostname2(gnutls_openpgp_crt_t key, - const char *hostname, - unsigned int flags) - _GNUTLS_GCC_ATTR_DEPRECATED; + const char *hostname, unsigned int flags) + _GNUTLS_GCC_ATTR_DEPRECATED; int gnutls_openpgp_crt_check_email(gnutls_openpgp_crt_t key, const char *email, unsigned flags) _GNUTLS_GCC_ATTR_DEPRECATED; int gnutls_openpgp_crt_get_revoked_status(gnutls_openpgp_crt_t key) - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; int gnutls_openpgp_crt_get_subkey_count(gnutls_openpgp_crt_t key) - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; int gnutls_openpgp_crt_get_subkey_idx(gnutls_openpgp_crt_t key, const gnutls_openpgp_keyid_t keyid) - _GNUTLS_GCC_ATTR_DEPRECATED; -int gnutls_openpgp_crt_get_subkey_revoked_status(gnutls_openpgp_crt_t key, - unsigned int idx) - _GNUTLS_GCC_ATTR_DEPRECATED; -gnutls_pk_algorithm_t -gnutls_openpgp_crt_get_subkey_pk_algorithm(gnutls_openpgp_crt_t key, - unsigned int idx, - unsigned int *bits) -_GNUTLS_GCC_ATTR_DEPRECATED; -time_t gnutls_openpgp_crt_get_subkey_creation_time(gnutls_openpgp_crt_t key, - unsigned int idx) - _GNUTLS_GCC_ATTR_DEPRECATED; -time_t gnutls_openpgp_crt_get_subkey_expiration_time(gnutls_openpgp_crt_t key, - unsigned int idx) - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; +int gnutls_openpgp_crt_get_subkey_revoked_status( + gnutls_openpgp_crt_t key, unsigned int idx) _GNUTLS_GCC_ATTR_DEPRECATED; +gnutls_pk_algorithm_t gnutls_openpgp_crt_get_subkey_pk_algorithm( + gnutls_openpgp_crt_t key, unsigned int idx, + unsigned int *bits) _GNUTLS_GCC_ATTR_DEPRECATED; +time_t gnutls_openpgp_crt_get_subkey_creation_time( + gnutls_openpgp_crt_t key, unsigned int idx) _GNUTLS_GCC_ATTR_DEPRECATED; +time_t gnutls_openpgp_crt_get_subkey_expiration_time( + gnutls_openpgp_crt_t key, unsigned int idx) _GNUTLS_GCC_ATTR_DEPRECATED; int gnutls_openpgp_crt_get_subkey_id(gnutls_openpgp_crt_t key, unsigned int idx, gnutls_openpgp_keyid_t keyid) - _GNUTLS_GCC_ATTR_DEPRECATED; -int gnutls_openpgp_crt_get_subkey_usage(gnutls_openpgp_crt_t key, - unsigned int idx, - unsigned int *key_usage) - _GNUTLS_GCC_ATTR_DEPRECATED; - -int gnutls_openpgp_crt_get_subkey_pk_dsa_raw(gnutls_openpgp_crt_t - crt, unsigned int idx, - gnutls_datum_t * p, - gnutls_datum_t * q, - gnutls_datum_t * g, - gnutls_datum_t * - y) _GNUTLS_GCC_ATTR_DEPRECATED; -int gnutls_openpgp_crt_get_subkey_pk_rsa_raw(gnutls_openpgp_crt_t crt, - unsigned int idx, - gnutls_datum_t * m, - gnutls_datum_t * - e) _GNUTLS_GCC_ATTR_DEPRECATED; -int gnutls_openpgp_crt_get_pk_dsa_raw(gnutls_openpgp_crt_t crt, - gnutls_datum_t * p, gnutls_datum_t * q, - gnutls_datum_t * g, - gnutls_datum_t * - y) _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; +int gnutls_openpgp_crt_get_subkey_usage( + gnutls_openpgp_crt_t key, unsigned int idx, + unsigned int *key_usage) _GNUTLS_GCC_ATTR_DEPRECATED; + +int gnutls_openpgp_crt_get_subkey_pk_dsa_raw( + gnutls_openpgp_crt_t crt, unsigned int idx, gnutls_datum_t *p, + gnutls_datum_t *q, gnutls_datum_t *g, + gnutls_datum_t *y) _GNUTLS_GCC_ATTR_DEPRECATED; +int gnutls_openpgp_crt_get_subkey_pk_rsa_raw( + gnutls_openpgp_crt_t crt, unsigned int idx, gnutls_datum_t *m, + gnutls_datum_t *e) _GNUTLS_GCC_ATTR_DEPRECATED; +int gnutls_openpgp_crt_get_pk_dsa_raw( + gnutls_openpgp_crt_t crt, gnutls_datum_t *p, gnutls_datum_t *q, + gnutls_datum_t *g, gnutls_datum_t *y) _GNUTLS_GCC_ATTR_DEPRECATED; int gnutls_openpgp_crt_get_pk_rsa_raw(gnutls_openpgp_crt_t crt, - gnutls_datum_t * m, - gnutls_datum_t * - e) _GNUTLS_GCC_ATTR_DEPRECATED; + gnutls_datum_t *m, gnutls_datum_t *e) + _GNUTLS_GCC_ATTR_DEPRECATED; -int gnutls_openpgp_crt_get_preferred_key_id(gnutls_openpgp_crt_t - key, +int gnutls_openpgp_crt_get_preferred_key_id(gnutls_openpgp_crt_t key, gnutls_openpgp_keyid_t keyid) - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; int gnutls_openpgp_crt_set_preferred_key_id(gnutls_openpgp_crt_t key, const gnutls_openpgp_keyid_t keyid) - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; /* privkey stuff. */ -int gnutls_openpgp_privkey_init(gnutls_openpgp_privkey_t * - key) _GNUTLS_GCC_ATTR_DEPRECATED; +int gnutls_openpgp_privkey_init(gnutls_openpgp_privkey_t *key) + _GNUTLS_GCC_ATTR_DEPRECATED; void gnutls_openpgp_privkey_deinit(gnutls_openpgp_privkey_t key) - _GNUTLS_GCC_ATTR_DEPRECATED; -gnutls_pk_algorithm_t -gnutls_openpgp_privkey_get_pk_algorithm(gnutls_openpgp_privkey_t key, - unsigned int *bits) -_GNUTLS_GCC_ATTR_DEPRECATED; - -gnutls_sec_param_t -gnutls_openpgp_privkey_sec_param(gnutls_openpgp_privkey_t key) -_GNUTLS_GCC_ATTR_DEPRECATED; -int gnutls_openpgp_privkey_import(gnutls_openpgp_privkey_t key, - const gnutls_datum_t * data, - gnutls_openpgp_crt_fmt_t format, - const char *password, - unsigned int flags) - _GNUTLS_GCC_ATTR_DEPRECATED; - -int gnutls_openpgp_privkey_get_fingerprint(gnutls_openpgp_privkey_t - key, void *fpr, - size_t *fprlen) - _GNUTLS_GCC_ATTR_DEPRECATED; -int gnutls_openpgp_privkey_get_subkey_fingerprint(gnutls_openpgp_privkey_t key, - unsigned int idx, void *fpr, - size_t *fprlen) - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; +gnutls_pk_algorithm_t gnutls_openpgp_privkey_get_pk_algorithm( + gnutls_openpgp_privkey_t key, + unsigned int *bits) _GNUTLS_GCC_ATTR_DEPRECATED; + +gnutls_sec_param_t gnutls_openpgp_privkey_sec_param( + gnutls_openpgp_privkey_t key) _GNUTLS_GCC_ATTR_DEPRECATED; +int gnutls_openpgp_privkey_import( + gnutls_openpgp_privkey_t key, const gnutls_datum_t *data, + gnutls_openpgp_crt_fmt_t format, const char *password, + unsigned int flags) _GNUTLS_GCC_ATTR_DEPRECATED; + +int gnutls_openpgp_privkey_get_fingerprint(gnutls_openpgp_privkey_t key, + void *fpr, size_t *fprlen) + _GNUTLS_GCC_ATTR_DEPRECATED; +int gnutls_openpgp_privkey_get_subkey_fingerprint( + gnutls_openpgp_privkey_t key, unsigned int idx, void *fpr, + size_t *fprlen) _GNUTLS_GCC_ATTR_DEPRECATED; int gnutls_openpgp_privkey_get_key_id(gnutls_openpgp_privkey_t key, gnutls_openpgp_keyid_t keyid) - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; int gnutls_openpgp_privkey_get_subkey_count(gnutls_openpgp_privkey_t key) - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; int gnutls_openpgp_privkey_get_subkey_idx(gnutls_openpgp_privkey_t key, const gnutls_openpgp_keyid_t keyid) - _GNUTLS_GCC_ATTR_DEPRECATED; - -int gnutls_openpgp_privkey_get_subkey_revoked_status - (gnutls_openpgp_privkey_t key, - unsigned int idx) _GNUTLS_GCC_ATTR_DEPRECATED; - -int gnutls_openpgp_privkey_get_revoked_status - (gnutls_openpgp_privkey_t key) _GNUTLS_GCC_ATTR_DEPRECATED; - -gnutls_pk_algorithm_t - gnutls_openpgp_privkey_get_subkey_pk_algorithm - (gnutls_openpgp_privkey_t key, unsigned int idx, - unsigned int *bits) _GNUTLS_GCC_ATTR_DEPRECATED; - -time_t - gnutls_openpgp_privkey_get_subkey_expiration_time - (gnutls_openpgp_privkey_t key, - unsigned int idx) _GNUTLS_GCC_ATTR_DEPRECATED; - -int gnutls_openpgp_privkey_get_subkey_id(gnutls_openpgp_privkey_t - key, unsigned int idx, - gnutls_openpgp_keyid_t keyid) - _GNUTLS_GCC_ATTR_DEPRECATED; - -time_t - gnutls_openpgp_privkey_get_subkey_creation_time - (gnutls_openpgp_privkey_t key, - unsigned int idx) _GNUTLS_GCC_ATTR_DEPRECATED; - -int gnutls_openpgp_privkey_export_subkey_dsa_raw - (gnutls_openpgp_privkey_t pkey, unsigned int idx, - gnutls_datum_t * p, gnutls_datum_t * q, gnutls_datum_t * g, - gnutls_datum_t * y, gnutls_datum_t * x) _GNUTLS_GCC_ATTR_DEPRECATED; -int gnutls_openpgp_privkey_export_subkey_rsa_raw - (gnutls_openpgp_privkey_t pkey, unsigned int idx, - gnutls_datum_t * m, gnutls_datum_t * e, gnutls_datum_t * d, - gnutls_datum_t * p, gnutls_datum_t * q, - gnutls_datum_t * u) _GNUTLS_GCC_ATTR_DEPRECATED; - -int gnutls_openpgp_privkey_export_dsa_raw(gnutls_openpgp_privkey_t - pkey, gnutls_datum_t * p, - gnutls_datum_t * q, - gnutls_datum_t * g, - gnutls_datum_t * y, - gnutls_datum_t * - x) _GNUTLS_GCC_ATTR_DEPRECATED; -int gnutls_openpgp_privkey_export_rsa_raw(gnutls_openpgp_privkey_t pkey, - gnutls_datum_t * m, - gnutls_datum_t * e, - gnutls_datum_t * d, - gnutls_datum_t * p, - gnutls_datum_t * q, - gnutls_datum_t * - u) _GNUTLS_GCC_ATTR_DEPRECATED; - -int gnutls_openpgp_privkey_export(gnutls_openpgp_privkey_t key, - gnutls_openpgp_crt_fmt_t format, - const char *password, - unsigned int flags, - void *output_data, - size_t *output_data_size) - _GNUTLS_GCC_ATTR_DEPRECATED; -int gnutls_openpgp_privkey_export2(gnutls_openpgp_privkey_t key, - gnutls_openpgp_crt_fmt_t format, - const char *password, unsigned int flags, - gnutls_datum_t * - out) _GNUTLS_GCC_ATTR_DEPRECATED; - -int gnutls_openpgp_privkey_set_preferred_key_id - (gnutls_openpgp_privkey_t key, - const gnutls_openpgp_keyid_t keyid) _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; + +int gnutls_openpgp_privkey_get_subkey_revoked_status( + gnutls_openpgp_privkey_t key, + unsigned int idx) _GNUTLS_GCC_ATTR_DEPRECATED; + +int gnutls_openpgp_privkey_get_revoked_status(gnutls_openpgp_privkey_t key) + _GNUTLS_GCC_ATTR_DEPRECATED; + +gnutls_pk_algorithm_t gnutls_openpgp_privkey_get_subkey_pk_algorithm( + gnutls_openpgp_privkey_t key, unsigned int idx, + unsigned int *bits) _GNUTLS_GCC_ATTR_DEPRECATED; + +time_t gnutls_openpgp_privkey_get_subkey_expiration_time( + gnutls_openpgp_privkey_t key, + unsigned int idx) _GNUTLS_GCC_ATTR_DEPRECATED; + +int gnutls_openpgp_privkey_get_subkey_id( + gnutls_openpgp_privkey_t key, unsigned int idx, + gnutls_openpgp_keyid_t keyid) _GNUTLS_GCC_ATTR_DEPRECATED; + +time_t gnutls_openpgp_privkey_get_subkey_creation_time( + gnutls_openpgp_privkey_t key, + unsigned int idx) _GNUTLS_GCC_ATTR_DEPRECATED; + +int gnutls_openpgp_privkey_export_subkey_dsa_raw( + gnutls_openpgp_privkey_t pkey, unsigned int idx, gnutls_datum_t *p, + gnutls_datum_t *q, gnutls_datum_t *g, gnutls_datum_t *y, + gnutls_datum_t *x) _GNUTLS_GCC_ATTR_DEPRECATED; +int gnutls_openpgp_privkey_export_subkey_rsa_raw( + gnutls_openpgp_privkey_t pkey, unsigned int idx, gnutls_datum_t *m, + gnutls_datum_t *e, gnutls_datum_t *d, gnutls_datum_t *p, + gnutls_datum_t *q, gnutls_datum_t *u) _GNUTLS_GCC_ATTR_DEPRECATED; + +int gnutls_openpgp_privkey_export_dsa_raw( + gnutls_openpgp_privkey_t pkey, gnutls_datum_t *p, gnutls_datum_t *q, + gnutls_datum_t *g, gnutls_datum_t *y, + gnutls_datum_t *x) _GNUTLS_GCC_ATTR_DEPRECATED; +int gnutls_openpgp_privkey_export_rsa_raw( + gnutls_openpgp_privkey_t pkey, gnutls_datum_t *m, gnutls_datum_t *e, + gnutls_datum_t *d, gnutls_datum_t *p, gnutls_datum_t *q, + gnutls_datum_t *u) _GNUTLS_GCC_ATTR_DEPRECATED; + +int gnutls_openpgp_privkey_export( + gnutls_openpgp_privkey_t key, gnutls_openpgp_crt_fmt_t format, + const char *password, unsigned int flags, void *output_data, + size_t *output_data_size) _GNUTLS_GCC_ATTR_DEPRECATED; +int gnutls_openpgp_privkey_export2( + gnutls_openpgp_privkey_t key, gnutls_openpgp_crt_fmt_t format, + const char *password, unsigned int flags, + gnutls_datum_t *out) _GNUTLS_GCC_ATTR_DEPRECATED; + +int gnutls_openpgp_privkey_set_preferred_key_id( + gnutls_openpgp_privkey_t key, + const gnutls_openpgp_keyid_t keyid) _GNUTLS_GCC_ATTR_DEPRECATED; int gnutls_openpgp_privkey_get_preferred_key_id(gnutls_openpgp_privkey_t key, gnutls_openpgp_keyid_t keyid) - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; -int gnutls_openpgp_crt_get_auth_subkey(gnutls_openpgp_crt_t crt, - gnutls_openpgp_keyid_t - keyid, - unsigned int flag) - _GNUTLS_GCC_ATTR_DEPRECATED; +int gnutls_openpgp_crt_get_auth_subkey( + gnutls_openpgp_crt_t crt, gnutls_openpgp_keyid_t keyid, + unsigned int flag) _GNUTLS_GCC_ATTR_DEPRECATED; /* Keyring stuff. */ -int gnutls_openpgp_keyring_init(gnutls_openpgp_keyring_t * - keyring) _GNUTLS_GCC_ATTR_DEPRECATED; +int gnutls_openpgp_keyring_init(gnutls_openpgp_keyring_t *keyring) + _GNUTLS_GCC_ATTR_DEPRECATED; void gnutls_openpgp_keyring_deinit(gnutls_openpgp_keyring_t keyring) - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; -int gnutls_openpgp_keyring_import(gnutls_openpgp_keyring_t keyring, - const gnutls_datum_t * data, - gnutls_openpgp_crt_fmt_t format) - _GNUTLS_GCC_ATTR_DEPRECATED; +int gnutls_openpgp_keyring_import( + gnutls_openpgp_keyring_t keyring, const gnutls_datum_t *data, + gnutls_openpgp_crt_fmt_t format) _GNUTLS_GCC_ATTR_DEPRECATED; -int gnutls_openpgp_keyring_check_id(gnutls_openpgp_keyring_t ring, - const gnutls_openpgp_keyid_t - keyid, - unsigned int flags) - _GNUTLS_GCC_ATTR_DEPRECATED; +int gnutls_openpgp_keyring_check_id( + gnutls_openpgp_keyring_t ring, const gnutls_openpgp_keyid_t keyid, + unsigned int flags) _GNUTLS_GCC_ATTR_DEPRECATED; int gnutls_openpgp_crt_verify_ring(gnutls_openpgp_crt_t key, - gnutls_openpgp_keyring_t - keyring, unsigned int flags, - unsigned int *verify + gnutls_openpgp_keyring_t keyring, + unsigned int flags, unsigned int *verify /* the output of the verification */ -) _GNUTLS_GCC_ATTR_DEPRECATED; + ) _GNUTLS_GCC_ATTR_DEPRECATED; -int gnutls_openpgp_crt_verify_self(gnutls_openpgp_crt_t key, - unsigned int flags, +int gnutls_openpgp_crt_verify_self(gnutls_openpgp_crt_t key, unsigned int flags, unsigned int *verify) - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; int gnutls_openpgp_keyring_get_crt(gnutls_openpgp_keyring_t ring, - unsigned int idx, - gnutls_openpgp_crt_t * - cert) _GNUTLS_GCC_ATTR_DEPRECATED; + unsigned int idx, gnutls_openpgp_crt_t *cert) + _GNUTLS_GCC_ATTR_DEPRECATED; int gnutls_openpgp_keyring_get_crt_count(gnutls_openpgp_keyring_t ring) - _GNUTLS_GCC_ATTR_DEPRECATED; + _GNUTLS_GCC_ATTR_DEPRECATED; /** * gnutls_openpgp_recv_key_func: @@ -363,67 +309,58 @@ int gnutls_openpgp_keyring_get_crt_count(gnutls_openpgp_keyring_t ring) * Returns: On success, %GNUTLS_E_SUCCESS (zero) is returned, * otherwise an error code is returned. */ -typedef int (*gnutls_openpgp_recv_key_func)(gnutls_session_t - session, - const unsigned char - *keyfpr, - unsigned int - keyfpr_length, - gnutls_datum_t * key); - -void -gnutls_openpgp_set_recv_key_function(gnutls_session_t session, - gnutls_openpgp_recv_key_func func) -_GNUTLS_GCC_ATTR_DEPRECATED; +typedef int (*gnutls_openpgp_recv_key_func)(gnutls_session_t session, + const unsigned char *keyfpr, + unsigned int keyfpr_length, + gnutls_datum_t *key); + +void gnutls_openpgp_set_recv_key_function(gnutls_session_t session, + gnutls_openpgp_recv_key_func func) + _GNUTLS_GCC_ATTR_DEPRECATED; /* certificate authentication stuff. */ -int gnutls_certificate_set_openpgp_key - (gnutls_certificate_credentials_t res, - gnutls_openpgp_crt_t crt, - gnutls_openpgp_privkey_t pkey) _GNUTLS_GCC_ATTR_DEPRECATED; - -int -gnutls_certificate_get_openpgp_key(gnutls_certificate_credentials_t res, - unsigned index, - gnutls_openpgp_privkey_t * - key) _GNUTLS_GCC_ATTR_DEPRECATED; -int gnutls_certificate_get_openpgp_crt(gnutls_certificate_credentials_t res, - unsigned index, - gnutls_openpgp_crt_t ** crt_list, - unsigned *crt_list_size) - _GNUTLS_GCC_ATTR_DEPRECATED; - -int gnutls_certificate_set_openpgp_key_file - (gnutls_certificate_credentials_t res, const char *certfile, - const char *keyfile, - gnutls_openpgp_crt_fmt_t format) _GNUTLS_GCC_ATTR_DEPRECATED; -int gnutls_certificate_set_openpgp_key_mem(gnutls_certificate_credentials_t res, - const gnutls_datum_t * cert, - const gnutls_datum_t * key, - gnutls_openpgp_crt_fmt_t format) - _GNUTLS_GCC_ATTR_DEPRECATED; - -int gnutls_certificate_set_openpgp_key_file2 - (gnutls_certificate_credentials_t res, const char *certfile, - const char *keyfile, const char *subkey_id, - gnutls_openpgp_crt_fmt_t format) _GNUTLS_GCC_ATTR_DEPRECATED; -int gnutls_certificate_set_openpgp_key_mem2 - (gnutls_certificate_credentials_t res, - const gnutls_datum_t * cert, const gnutls_datum_t * key, - const char *subkey_id, - gnutls_openpgp_crt_fmt_t format) _GNUTLS_GCC_ATTR_DEPRECATED; - -int gnutls_certificate_set_openpgp_keyring_mem - (gnutls_certificate_credentials_t c, const unsigned char *data, - size_t dlen, gnutls_openpgp_crt_fmt_t format) _GNUTLS_GCC_ATTR_DEPRECATED; - -int gnutls_certificate_set_openpgp_keyring_file - (gnutls_certificate_credentials_t c, const char *file, - gnutls_openpgp_crt_fmt_t format) _GNUTLS_GCC_ATTR_DEPRECATED; +int gnutls_certificate_set_openpgp_key( + gnutls_certificate_credentials_t res, gnutls_openpgp_crt_t crt, + gnutls_openpgp_privkey_t pkey) _GNUTLS_GCC_ATTR_DEPRECATED; + +int gnutls_certificate_get_openpgp_key( + gnutls_certificate_credentials_t res, unsigned index, + gnutls_openpgp_privkey_t *key) _GNUTLS_GCC_ATTR_DEPRECATED; +int gnutls_certificate_get_openpgp_crt( + gnutls_certificate_credentials_t res, unsigned index, + gnutls_openpgp_crt_t **crt_list, + unsigned *crt_list_size) _GNUTLS_GCC_ATTR_DEPRECATED; + +int gnutls_certificate_set_openpgp_key_file( + gnutls_certificate_credentials_t res, const char *certfile, + const char *keyfile, + gnutls_openpgp_crt_fmt_t format) _GNUTLS_GCC_ATTR_DEPRECATED; +int gnutls_certificate_set_openpgp_key_mem( + gnutls_certificate_credentials_t res, const gnutls_datum_t *cert, + const gnutls_datum_t *key, + gnutls_openpgp_crt_fmt_t format) _GNUTLS_GCC_ATTR_DEPRECATED; + +int gnutls_certificate_set_openpgp_key_file2( + gnutls_certificate_credentials_t res, const char *certfile, + const char *keyfile, const char *subkey_id, + gnutls_openpgp_crt_fmt_t format) _GNUTLS_GCC_ATTR_DEPRECATED; +int gnutls_certificate_set_openpgp_key_mem2( + gnutls_certificate_credentials_t res, const gnutls_datum_t *cert, + const gnutls_datum_t *key, const char *subkey_id, + gnutls_openpgp_crt_fmt_t format) _GNUTLS_GCC_ATTR_DEPRECATED; + +int gnutls_certificate_set_openpgp_keyring_mem( + gnutls_certificate_credentials_t c, const unsigned char *data, + size_t dlen, + gnutls_openpgp_crt_fmt_t format) _GNUTLS_GCC_ATTR_DEPRECATED; + +int gnutls_certificate_set_openpgp_keyring_file( + gnutls_certificate_credentials_t c, const char *file, + gnutls_openpgp_crt_fmt_t format) _GNUTLS_GCC_ATTR_DEPRECATED; #ifdef __cplusplus } #endif -#endif /* GNUTLS_OPENPGP_H */ +#endif /* GNUTLS_OPENPGP_H */ diff --git a/lib/includes/gnutls/pkcs11.h b/lib/includes/gnutls/pkcs11.h index 4e6606eb59..825f5de59e 100644 --- a/lib/includes/gnutls/pkcs11.h +++ b/lib/includes/gnutls/pkcs11.h @@ -22,17 +22,17 @@ */ #ifndef GNUTLS_PKCS11_H -# define GNUTLS_PKCS11_H +#define GNUTLS_PKCS11_H -# include -# include -# include +#include +#include +#include #ifdef __cplusplus extern "C" { #endif -# define GNUTLS_PKCS11_MAX_PIN_LEN 256 +#define GNUTLS_PKCS11_MAX_PIN_LEN 256 /** * gnutls_pkcs11_token_callback_t: @@ -52,17 +52,19 @@ extern "C" { * * Since: 2.12.0 **/ -typedef int (*gnutls_pkcs11_token_callback_t)(void *const - userdata, - const char *const - label, unsigned retry); +typedef int (*gnutls_pkcs11_token_callback_t)(void *const userdata, + const char *const label, + unsigned retry); struct gnutls_pkcs11_obj_st; typedef struct gnutls_pkcs11_obj_st *gnutls_pkcs11_obj_t; -# define GNUTLS_PKCS11_FLAG_MANUAL 0 /* Manual loading of libraries */ -# define GNUTLS_PKCS11_FLAG_AUTO 1 /* Automatically load libraries by reading /etc/gnutls/pkcs11.conf */ -# define GNUTLS_PKCS11_FLAG_AUTO_TRUSTED (1<<1) /* Automatically load trusted libraries by reading /etc/gnutls/pkcs11.conf */ +#define GNUTLS_PKCS11_FLAG_MANUAL 0 /* Manual loading of libraries */ +#define GNUTLS_PKCS11_FLAG_AUTO \ + 1 /* Automatically load libraries by reading /etc/gnutls/pkcs11.conf */ +#define GNUTLS_PKCS11_FLAG_AUTO_TRUSTED \ + (1 \ + << 1) /* Automatically load trusted libraries by reading /etc/gnutls/pkcs11.conf */ /* pkcs11.conf format: * load = /lib/xxx-pkcs11.so @@ -72,16 +74,15 @@ typedef struct gnutls_pkcs11_obj_st *gnutls_pkcs11_obj_t; int gnutls_pkcs11_init(unsigned int flags, const char *deprecated_config_file); int gnutls_pkcs11_reinit(void); void gnutls_pkcs11_deinit(void); -void gnutls_pkcs11_set_token_function - (gnutls_pkcs11_token_callback_t fn, void *userdata); +void gnutls_pkcs11_set_token_function(gnutls_pkcs11_token_callback_t fn, + void *userdata); void gnutls_pkcs11_set_pin_function(gnutls_pin_callback_t fn, void *userdata); -gnutls_pin_callback_t gnutls_pkcs11_get_pin_function(void - **userdata); +gnutls_pin_callback_t gnutls_pkcs11_get_pin_function(void **userdata); int gnutls_pkcs11_add_provider(const char *name, const char *params); -int gnutls_pkcs11_obj_init(gnutls_pkcs11_obj_t * obj); +int gnutls_pkcs11_obj_init(gnutls_pkcs11_obj_t *obj); void gnutls_pkcs11_obj_set_pin_function(gnutls_pkcs11_obj_t obj, gnutls_pin_callback_t fn, void *userdata); @@ -127,10 +128,10 @@ typedef enum gnutls_pkcs11_obj_flags { GNUTLS_PKCS11_OBJ_FLAG_MARK_NOT_PRIVATE = (1 << 5), GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_ANY = (1 << 6), GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED = - GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED, + GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED, GNUTLS_PKCS11_OBJ_FLAG_MARK_DISTRUSTED = (1 << 8), GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_DISTRUSTED = - GNUTLS_PKCS11_OBJ_FLAG_MARK_DISTRUSTED, + GNUTLS_PKCS11_OBJ_FLAG_MARK_DISTRUSTED, GNUTLS_PKCS11_OBJ_FLAG_COMPARE = (1 << 9), GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE = (1 << 10), GNUTLS_PKCS11_OBJ_FLAG_MARK_CA = (1 << 11), @@ -149,7 +150,7 @@ typedef enum gnutls_pkcs11_obj_flags { /* flags 1<<29 and later are reserved - see pkcs11_int.h */ } gnutls_pkcs11_obj_flags; -# define gnutls_pkcs11_obj_attr_t gnutls_pkcs11_obj_flags +#define gnutls_pkcs11_obj_attr_t gnutls_pkcs11_obj_flags /** * gnutls_pkcs11_url_type_t: @@ -160,46 +161,43 @@ typedef enum gnutls_pkcs11_obj_flags { * Enumeration of different URL extraction flags. */ typedef enum { - GNUTLS_PKCS11_URL_GENERIC, /* URL specifies the object on token level */ - GNUTLS_PKCS11_URL_LIB, /* URL specifies the object on module level */ - GNUTLS_PKCS11_URL_LIB_VERSION /* URL specifies the object on module and version level */ + GNUTLS_PKCS11_URL_GENERIC, /* URL specifies the object on token level */ + GNUTLS_PKCS11_URL_LIB, /* URL specifies the object on module level */ + GNUTLS_PKCS11_URL_LIB_VERSION /* URL specifies the object on module and version level */ } gnutls_pkcs11_url_type_t; -int gnutls_pkcs11_obj_import_url(gnutls_pkcs11_obj_t obj, - const char *url, unsigned int flags - /* GNUTLS_PKCS11_OBJ_FLAG_* */ ); +int gnutls_pkcs11_obj_import_url(gnutls_pkcs11_obj_t obj, const char *url, + unsigned int flags + /* GNUTLS_PKCS11_OBJ_FLAG_* */); int gnutls_pkcs11_obj_export_url(gnutls_pkcs11_obj_t obj, gnutls_pkcs11_url_type_t detailed, char **url); void gnutls_pkcs11_obj_deinit(gnutls_pkcs11_obj_t obj); -int gnutls_pkcs11_obj_export(gnutls_pkcs11_obj_t obj, - void *output_data, size_t *output_data_size); -int gnutls_pkcs11_obj_export2(gnutls_pkcs11_obj_t obj, gnutls_datum_t * out); +int gnutls_pkcs11_obj_export(gnutls_pkcs11_obj_t obj, void *output_data, + size_t *output_data_size); +int gnutls_pkcs11_obj_export2(gnutls_pkcs11_obj_t obj, gnutls_datum_t *out); int gnutls_pkcs11_obj_export3(gnutls_pkcs11_obj_t obj, - gnutls_x509_crt_fmt_t fmt, gnutls_datum_t * out); + gnutls_x509_crt_fmt_t fmt, gnutls_datum_t *out); int gnutls_pkcs11_get_raw_issuer(const char *url, gnutls_x509_crt_t cert, - gnutls_datum_t * issuer, + gnutls_datum_t *issuer, gnutls_x509_crt_fmt_t fmt, unsigned int flags); int gnutls_pkcs11_get_raw_issuer_by_dn(const char *url, - const gnutls_datum_t * dn, - gnutls_datum_t * issuer, + const gnutls_datum_t *dn, + gnutls_datum_t *issuer, gnutls_x509_crt_fmt_t fmt, unsigned int flags); -int gnutls_pkcs11_get_raw_issuer_by_subject_key_id(const char *url, - const gnutls_datum_t * dn, - const gnutls_datum_t * spki, - gnutls_datum_t * issuer, - gnutls_x509_crt_fmt_t fmt, - unsigned int flags); +int gnutls_pkcs11_get_raw_issuer_by_subject_key_id( + const char *url, const gnutls_datum_t *dn, const gnutls_datum_t *spki, + gnutls_datum_t *issuer, gnutls_x509_crt_fmt_t fmt, unsigned int flags); unsigned gnutls_pkcs11_crt_is_known(const char *url, gnutls_x509_crt_t cert, unsigned int flags); -# if 0 +#if 0 /* for documentation */ int gnutls_pkcs11_copy_x509_crt(const char *token_url, gnutls_x509_crt_t crt, @@ -219,44 +217,41 @@ int gnutls_pkcs11_privkey_generate(const char *url, gnutls_pk_algorithm_t pk, unsigned int bits, const char *label, unsigned int flags); -# endif +#endif -int -gnutls_pkcs11_copy_pubkey(const char *token_url, - gnutls_pubkey_t crt, const char *label, - const gnutls_datum_t * cid, - unsigned int key_usage, unsigned int flags); +int gnutls_pkcs11_copy_pubkey(const char *token_url, gnutls_pubkey_t crt, + const char *label, const gnutls_datum_t *cid, + unsigned int key_usage, unsigned int flags); -# define gnutls_pkcs11_copy_x509_crt(url, crt, label, flags) \ +#define gnutls_pkcs11_copy_x509_crt(url, crt, label, flags) \ gnutls_pkcs11_copy_x509_crt2(url, crt, label, NULL, flags) -int gnutls_pkcs11_copy_x509_crt2(const char *token_url, - gnutls_x509_crt_t crt, - const char *label, - const gnutls_datum_t * id, unsigned int flags - /* GNUTLS_PKCS11_OBJ_FLAG_* */ ); +int gnutls_pkcs11_copy_x509_crt2(const char *token_url, gnutls_x509_crt_t crt, + const char *label, const gnutls_datum_t *id, + unsigned int flags + /* GNUTLS_PKCS11_OBJ_FLAG_* */); -# define gnutls_pkcs11_copy_x509_privkey(url, key, label, usage, flags) \ +#define gnutls_pkcs11_copy_x509_privkey(url, key, label, usage, flags) \ gnutls_pkcs11_copy_x509_privkey2(url, key, label, NULL, usage, flags) int gnutls_pkcs11_copy_x509_privkey2(const char *token_url, gnutls_x509_privkey_t key, const char *label, - const gnutls_datum_t * cid, + const gnutls_datum_t *cid, unsigned int key_usage - /*GNUTLS_KEY_* */ , + /*GNUTLS_KEY_* */, unsigned int flags /* GNUTLS_PKCS11_OBJ_FLAG_* */ - ); +); int gnutls_pkcs11_delete_url(const char *object_url, unsigned int flags - /* GNUTLS_PKCS11_OBJ_FLAG_* */ ); + /* GNUTLS_PKCS11_OBJ_FLAG_* */); -int gnutls_pkcs11_copy_secret_key(const char *token_url, - gnutls_datum_t * key, - const char *label, unsigned int key_usage - /* GNUTLS_KEY_* */ , +int gnutls_pkcs11_copy_secret_key(const char *token_url, gnutls_datum_t *key, + const char *label, + unsigned int key_usage + /* GNUTLS_KEY_* */, unsigned int flags - /* GNUTLS_PKCS11_OBJ_FLAG_* */ ); + /* GNUTLS_PKCS11_OBJ_FLAG_* */); /** * gnutls_pkcs11_obj_info_t: @@ -287,27 +282,29 @@ typedef enum { GNUTLS_PKCS11_OBJ_LIBRARY_MANUFACTURER } gnutls_pkcs11_obj_info_t; -int -gnutls_pkcs11_obj_get_ptr(gnutls_pkcs11_obj_t obj, void **ptr, - void **session, void **ohandle, - unsigned long *slot_id, unsigned int flags); +int gnutls_pkcs11_obj_get_ptr(gnutls_pkcs11_obj_t obj, void **ptr, + void **session, void **ohandle, + unsigned long *slot_id, unsigned int flags); int gnutls_pkcs11_obj_get_info(gnutls_pkcs11_obj_t obj, - gnutls_pkcs11_obj_info_t itype, - void *output, size_t *output_size); + gnutls_pkcs11_obj_info_t itype, void *output, + size_t *output_size); int gnutls_pkcs11_obj_set_info(gnutls_pkcs11_obj_t obj, - gnutls_pkcs11_obj_info_t itype, - const void *data, size_t data_size, - unsigned flags); - -# define GNUTLS_PKCS11_OBJ_ATTR_CRT_ALL GNUTLS_PKCS11_OBJ_FLAG_CRT -# define GNUTLS_PKCS11_OBJ_ATTR_MATCH 0 /* always match the given URL */ -# define GNUTLS_PKCS11_OBJ_ATTR_ALL 0 /* match everything! */ -# define GNUTLS_PKCS11_OBJ_ATTR_CRT_TRUSTED (GNUTLS_PKCS11_OBJ_FLAG_CRT|GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED) -# define GNUTLS_PKCS11_OBJ_ATTR_CRT_WITH_PRIVKEY (GNUTLS_PKCS11_OBJ_FLAG_CRT|GNUTLS_PKCS11_OBJ_FLAG_WITH_PRIVKEY) -# define GNUTLS_PKCS11_OBJ_ATTR_CRT_TRUSTED_CA (GNUTLS_PKCS11_OBJ_FLAG_CRT|GNUTLS_PKCS11_OBJ_FLAG_MARK_CA|GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED) -# define GNUTLS_PKCS11_OBJ_ATTR_PUBKEY GNUTLS_PKCS11_OBJ_FLAG_PUBKEY -# define GNUTLS_PKCS11_OBJ_ATTR_PRIVKEY GNUTLS_PKCS11_OBJ_FLAG_PRIVKEY + gnutls_pkcs11_obj_info_t itype, const void *data, + size_t data_size, unsigned flags); + +#define GNUTLS_PKCS11_OBJ_ATTR_CRT_ALL GNUTLS_PKCS11_OBJ_FLAG_CRT +#define GNUTLS_PKCS11_OBJ_ATTR_MATCH 0 /* always match the given URL */ +#define GNUTLS_PKCS11_OBJ_ATTR_ALL 0 /* match everything! */ +#define GNUTLS_PKCS11_OBJ_ATTR_CRT_TRUSTED \ + (GNUTLS_PKCS11_OBJ_FLAG_CRT | GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED) +#define GNUTLS_PKCS11_OBJ_ATTR_CRT_WITH_PRIVKEY \ + (GNUTLS_PKCS11_OBJ_FLAG_CRT | GNUTLS_PKCS11_OBJ_FLAG_WITH_PRIVKEY) +#define GNUTLS_PKCS11_OBJ_ATTR_CRT_TRUSTED_CA \ + (GNUTLS_PKCS11_OBJ_FLAG_CRT | GNUTLS_PKCS11_OBJ_FLAG_MARK_CA | \ + GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED) +#define GNUTLS_PKCS11_OBJ_ATTR_PUBKEY GNUTLS_PKCS11_OBJ_FLAG_PUBKEY +#define GNUTLS_PKCS11_OBJ_ATTR_PRIVKEY GNUTLS_PKCS11_OBJ_FLAG_PRIVKEY /** * gnutls_pkcs11_token_info_t: @@ -350,65 +347,67 @@ typedef enum { GNUTLS_PKCS11_OBJ_X509_CRT_EXTENSION } gnutls_pkcs11_obj_type_t; -int -gnutls_pkcs11_token_init(const char *token_url, - const char *so_pin, const char *label); +int gnutls_pkcs11_token_init(const char *token_url, const char *so_pin, + const char *label); -int -gnutls_pkcs11_token_get_ptr(const char *url, void **ptr, unsigned long *slot_id, - unsigned int flags); +int gnutls_pkcs11_token_get_ptr(const char *url, void **ptr, + unsigned long *slot_id, unsigned int flags); -int -gnutls_pkcs11_token_get_mechanism(const char *url, - unsigned int idx, unsigned long *mechanism); +int gnutls_pkcs11_token_get_mechanism(const char *url, unsigned int idx, + unsigned long *mechanism); -unsigned -gnutls_pkcs11_token_check_mechanism(const char *url, - unsigned long mechanism, - void *ptr, unsigned psize, unsigned flags); +unsigned gnutls_pkcs11_token_check_mechanism(const char *url, + unsigned long mechanism, void *ptr, + unsigned psize, unsigned flags); int gnutls_pkcs11_token_set_pin(const char *token_url, const char *oldpin, const char *newpin, - unsigned int flags /*gnutls_pin_flag_t */ ); + unsigned int flags /*gnutls_pin_flag_t */); int gnutls_pkcs11_token_get_url(unsigned int seq, gnutls_pkcs11_url_type_t detailed, char **url); int gnutls_pkcs11_token_get_info(const char *url, - gnutls_pkcs11_token_info_t ttype, - void *output, size_t *output_size); - -# define GNUTLS_PKCS11_TOKEN_HW 1 -# define GNUTLS_PKCS11_TOKEN_TRUSTED (1<<1) /* p11-kit trusted */ -# define GNUTLS_PKCS11_TOKEN_RNG (1<<2) /* CKF_RNG */ -# define GNUTLS_PKCS11_TOKEN_LOGIN_REQUIRED (1<<3) /* CKF_LOGIN_REQUIRED */ -# define GNUTLS_PKCS11_TOKEN_PROTECTED_AUTHENTICATION_PATH (1<<4) /* CKF_PROTECTED_AUTHENTICATION_PATH */ -# define GNUTLS_PKCS11_TOKEN_INITIALIZED (1<<5) /* CKF_TOKEN_INITIALIZED */ -# define GNUTLS_PKCS11_TOKEN_USER_PIN_COUNT_LOW (1<<6) /* CKF_USER_PIN_COUNT_LOW */ -# define GNUTLS_PKCS11_TOKEN_USER_PIN_FINAL_TRY (1<<7) /* CKF_USER_PIN_FINAL_TRY */ -# define GNUTLS_PKCS11_TOKEN_USER_PIN_LOCKED (1<<8) /* CKF_USER_PIN_LOCKED */ -# define GNUTLS_PKCS11_TOKEN_SO_PIN_COUNT_LOW (1<<9) /* CKF_SO_PIN_COUNT_LOW */ -# define GNUTLS_PKCS11_TOKEN_SO_PIN_FINAL_TRY (1<<10) /* CKF_SO_PIN_FINAL_TRY */ -# define GNUTLS_PKCS11_TOKEN_SO_PIN_LOCKED (1<<11) /* CKF_SO_PIN_LOCKED */ -# define GNUTLS_PKCS11_TOKEN_USER_PIN_INITIALIZED (1<<12) /* CKF_USER_PIN_INITIALIZED */ -# define GNUTLS_PKCS11_TOKEN_ERROR_STATE (1<<13)/* CKF_ERROR_STATE */ + gnutls_pkcs11_token_info_t ttype, void *output, + size_t *output_size); + +#define GNUTLS_PKCS11_TOKEN_HW 1 +#define GNUTLS_PKCS11_TOKEN_TRUSTED (1 << 1) /* p11-kit trusted */ +#define GNUTLS_PKCS11_TOKEN_RNG (1 << 2) /* CKF_RNG */ +#define GNUTLS_PKCS11_TOKEN_LOGIN_REQUIRED (1 << 3) /* CKF_LOGIN_REQUIRED */ +#define GNUTLS_PKCS11_TOKEN_PROTECTED_AUTHENTICATION_PATH \ + (1 << 4) /* CKF_PROTECTED_AUTHENTICATION_PATH */ +#define GNUTLS_PKCS11_TOKEN_INITIALIZED (1 << 5) /* CKF_TOKEN_INITIALIZED */ +#define GNUTLS_PKCS11_TOKEN_USER_PIN_COUNT_LOW \ + (1 << 6) /* CKF_USER_PIN_COUNT_LOW */ +#define GNUTLS_PKCS11_TOKEN_USER_PIN_FINAL_TRY \ + (1 << 7) /* CKF_USER_PIN_FINAL_TRY */ +#define GNUTLS_PKCS11_TOKEN_USER_PIN_LOCKED (1 << 8) /* CKF_USER_PIN_LOCKED */ +#define GNUTLS_PKCS11_TOKEN_SO_PIN_COUNT_LOW (1 << 9) /* CKF_SO_PIN_COUNT_LOW */ +#define GNUTLS_PKCS11_TOKEN_SO_PIN_FINAL_TRY \ + (1 << 10) /* CKF_SO_PIN_FINAL_TRY */ +#define GNUTLS_PKCS11_TOKEN_SO_PIN_LOCKED (1 << 11) /* CKF_SO_PIN_LOCKED */ +#define GNUTLS_PKCS11_TOKEN_USER_PIN_INITIALIZED \ + (1 << 12) /* CKF_USER_PIN_INITIALIZED */ +#define GNUTLS_PKCS11_TOKEN_ERROR_STATE (1 << 13) /* CKF_ERROR_STATE */ int gnutls_pkcs11_token_get_flags(const char *url, unsigned int *flags); -# define gnutls_pkcs11_obj_list_import_url(p_list, n_list, url, attrs, flags) gnutls_pkcs11_obj_list_import_url3(p_list, n_list, url, attrs|flags) -# define gnutls_pkcs11_obj_list_import_url2(p_list, n_list, url, attrs, flags) gnutls_pkcs11_obj_list_import_url4(p_list, n_list, url, attrs|flags) +#define gnutls_pkcs11_obj_list_import_url(p_list, n_list, url, attrs, flags) \ + gnutls_pkcs11_obj_list_import_url3(p_list, n_list, url, attrs | flags) +#define gnutls_pkcs11_obj_list_import_url2(p_list, n_list, url, attrs, flags) \ + gnutls_pkcs11_obj_list_import_url4(p_list, n_list, url, attrs | flags) -int gnutls_pkcs11_obj_list_import_url3(gnutls_pkcs11_obj_t * p_list, +int gnutls_pkcs11_obj_list_import_url3(gnutls_pkcs11_obj_t *p_list, unsigned int *const n_list, const char *url, unsigned int flags /* GNUTLS_PKCS11_OBJ_FLAG_* */ - ); +); -int -gnutls_pkcs11_obj_list_import_url4(gnutls_pkcs11_obj_t ** p_list, - unsigned int *n_list, - const char *url, unsigned int flags - /* GNUTLS_PKCS11_OBJ_FLAG_* */ - ); +int gnutls_pkcs11_obj_list_import_url4(gnutls_pkcs11_obj_t **p_list, + unsigned int *n_list, const char *url, + unsigned int flags + /* GNUTLS_PKCS11_OBJ_FLAG_* */ +); int gnutls_x509_crt_import_pkcs11(gnutls_x509_crt_t crt, gnutls_pkcs11_obj_t pkcs11_crt); @@ -416,81 +415,77 @@ int gnutls_x509_crt_import_pkcs11(gnutls_x509_crt_t crt, gnutls_pkcs11_obj_type_t gnutls_pkcs11_obj_get_type(gnutls_pkcs11_obj_t obj); const char *gnutls_pkcs11_type_get_name(gnutls_pkcs11_obj_type_t type); -int -gnutls_pkcs11_obj_get_exts(gnutls_pkcs11_obj_t obj, - struct gnutls_x509_ext_st **exts, - unsigned int *exts_size, unsigned int flags); +int gnutls_pkcs11_obj_get_exts(gnutls_pkcs11_obj_t obj, + struct gnutls_x509_ext_st **exts, + unsigned int *exts_size, unsigned int flags); int gnutls_pkcs11_obj_get_flags(gnutls_pkcs11_obj_t obj, unsigned int *oflags); char *gnutls_pkcs11_obj_flags_get_str(unsigned int flags); -int gnutls_x509_crt_list_import_pkcs11(gnutls_x509_crt_t * certs, +int gnutls_x509_crt_list_import_pkcs11(gnutls_x509_crt_t *certs, unsigned int cert_max, - gnutls_pkcs11_obj_t * - const objs, unsigned int flags - /* must be zero */ ); + gnutls_pkcs11_obj_t *const objs, + unsigned int flags + /* must be zero */); /* private key functions...*/ -int gnutls_pkcs11_privkey_init(gnutls_pkcs11_privkey_t * key); +int gnutls_pkcs11_privkey_init(gnutls_pkcs11_privkey_t *key); -int -gnutls_pkcs11_privkey_cpy(gnutls_pkcs11_privkey_t dst, - gnutls_pkcs11_privkey_t src); +int gnutls_pkcs11_privkey_cpy(gnutls_pkcs11_privkey_t dst, + gnutls_pkcs11_privkey_t src); -void gnutls_pkcs11_privkey_set_pin_function(gnutls_pkcs11_privkey_t - key, - gnutls_pin_callback_t - fn, void *userdata); +void gnutls_pkcs11_privkey_set_pin_function(gnutls_pkcs11_privkey_t key, + gnutls_pin_callback_t fn, + void *userdata); void gnutls_pkcs11_privkey_deinit(gnutls_pkcs11_privkey_t key); -int gnutls_pkcs11_privkey_get_pk_algorithm(gnutls_pkcs11_privkey_t - key, unsigned int *bits); +int gnutls_pkcs11_privkey_get_pk_algorithm(gnutls_pkcs11_privkey_t key, + unsigned int *bits); int gnutls_pkcs11_privkey_get_info(gnutls_pkcs11_privkey_t pkey, - gnutls_pkcs11_obj_info_t itype, - void *output, size_t *output_size); + gnutls_pkcs11_obj_info_t itype, void *output, + size_t *output_size); int gnutls_pkcs11_privkey_import_url(gnutls_pkcs11_privkey_t pkey, const char *url, unsigned int flags); int gnutls_pkcs11_privkey_export_url(gnutls_pkcs11_privkey_t key, - gnutls_pkcs11_url_type_t - detailed, char **url); + gnutls_pkcs11_url_type_t detailed, + char **url); unsigned gnutls_pkcs11_privkey_status(gnutls_pkcs11_privkey_t key); -# define gnutls_pkcs11_privkey_generate(url, pk, bits, label, flags) \ - gnutls_pkcs11_privkey_generate3(url, pk, bits, label, NULL, 0, NULL, 0, flags) +#define gnutls_pkcs11_privkey_generate(url, pk, bits, label, flags) \ + gnutls_pkcs11_privkey_generate3(url, pk, bits, label, NULL, 0, NULL, \ + 0, flags) -# define gnutls_pkcs11_privkey_generate2(url, pk, bits, label, fmt, pubkey, flags) \ - gnutls_pkcs11_privkey_generate3(url, pk, bits, label, NULL, fmt, pubkey, 0, flags) +#define gnutls_pkcs11_privkey_generate2(url, pk, bits, label, fmt, pubkey, \ + flags) \ + gnutls_pkcs11_privkey_generate3(url, pk, bits, label, NULL, fmt, \ + pubkey, 0, flags) -int -gnutls_pkcs11_privkey_generate3(const char *url, - gnutls_pk_algorithm_t pk, - unsigned int bits, - const char *label, - const gnutls_datum_t * cid, - gnutls_x509_crt_fmt_t fmt, - gnutls_datum_t * pubkey, - unsigned int key_usage, unsigned int flags); - -int -gnutls_pkcs11_privkey_export_pubkey(gnutls_pkcs11_privkey_t pkey, +int gnutls_pkcs11_privkey_generate3(const char *url, gnutls_pk_algorithm_t pk, + unsigned int bits, const char *label, + const gnutls_datum_t *cid, gnutls_x509_crt_fmt_t fmt, - gnutls_datum_t * pubkey, - unsigned int flags); + gnutls_datum_t *pubkey, + unsigned int key_usage, unsigned int flags); -int -gnutls_pkcs11_token_get_random(const char *token_url, void *data, size_t len); +int gnutls_pkcs11_privkey_export_pubkey(gnutls_pkcs11_privkey_t pkey, + gnutls_x509_crt_fmt_t fmt, + gnutls_datum_t *pubkey, + unsigned int flags); -int -gnutls_pkcs11_copy_attached_extension(const char *token_url, - gnutls_x509_crt_t crt, - gnutls_datum_t * data, - const char *label, unsigned int flags); +int gnutls_pkcs11_token_get_random(const char *token_url, void *data, + size_t len); + +int gnutls_pkcs11_copy_attached_extension(const char *token_url, + gnutls_x509_crt_t crt, + gnutls_datum_t *data, + const char *label, + unsigned int flags); -# define gnutls_x509_crt_import_pkcs11_url gnutls_x509_crt_import_url +#define gnutls_x509_crt_import_pkcs11_url gnutls_x509_crt_import_url #ifdef __cplusplus } #endif -#endif /* GNUTLS_PKCS11_H */ +#endif /* GNUTLS_PKCS11_H */ diff --git a/lib/includes/gnutls/pkcs12.h b/lib/includes/gnutls/pkcs12.h index ad35089ceb..b16f0fab53 100644 --- a/lib/includes/gnutls/pkcs12.h +++ b/lib/includes/gnutls/pkcs12.h @@ -21,15 +21,15 @@ */ #ifndef GNUTLS_PKCS12_H -# define GNUTLS_PKCS12_H +#define GNUTLS_PKCS12_H -# include +#include #ifdef __cplusplus extern "C" { #endif - /* PKCS12 structures handling +/* PKCS12 structures handling */ struct gnutls_pkcs12_int; typedef struct gnutls_pkcs12_int *gnutls_pkcs12_t; @@ -37,19 +37,17 @@ typedef struct gnutls_pkcs12_int *gnutls_pkcs12_t; struct gnutls_pkcs12_bag_int; typedef struct gnutls_pkcs12_bag_int *gnutls_pkcs12_bag_t; -int gnutls_pkcs12_init(gnutls_pkcs12_t * pkcs12); +int gnutls_pkcs12_init(gnutls_pkcs12_t *pkcs12); void gnutls_pkcs12_deinit(gnutls_pkcs12_t pkcs12); -int gnutls_pkcs12_import(gnutls_pkcs12_t pkcs12, - const gnutls_datum_t * data, +int gnutls_pkcs12_import(gnutls_pkcs12_t pkcs12, const gnutls_datum_t *data, gnutls_x509_crt_fmt_t format, unsigned int flags); -int gnutls_pkcs12_export(gnutls_pkcs12_t pkcs12, - gnutls_x509_crt_fmt_t format, +int gnutls_pkcs12_export(gnutls_pkcs12_t pkcs12, gnutls_x509_crt_fmt_t format, void *output_data, size_t *output_data_size); -int gnutls_pkcs12_export2(gnutls_pkcs12_t pkcs12, - gnutls_x509_crt_fmt_t format, gnutls_datum_t * out); +int gnutls_pkcs12_export2(gnutls_pkcs12_t pkcs12, gnutls_x509_crt_fmt_t format, + gnutls_datum_t *out); -int gnutls_pkcs12_get_bag(gnutls_pkcs12_t pkcs12, - int indx, gnutls_pkcs12_bag_t bag); +int gnutls_pkcs12_get_bag(gnutls_pkcs12_t pkcs12, int indx, + gnutls_pkcs12_bag_t bag); int gnutls_pkcs12_set_bag(gnutls_pkcs12_t pkcs12, gnutls_pkcs12_bag_t bag); int gnutls_pkcs12_generate_mac(gnutls_pkcs12_t pkcs12, const char *pass); @@ -58,27 +56,25 @@ int gnutls_pkcs12_generate_mac2(gnutls_pkcs12_t pkcs12, int gnutls_pkcs12_verify_mac(gnutls_pkcs12_t pkcs12, const char *pass); int gnutls_pkcs12_bag_decrypt(gnutls_pkcs12_bag_t bag, const char *pass); -int gnutls_pkcs12_bag_encrypt(gnutls_pkcs12_bag_t bag, - const char *pass, unsigned int flags); - -int -gnutls_pkcs12_bag_enc_info(gnutls_pkcs12_bag_t bag, unsigned int *schema, - unsigned int *cipher, void *salt, - unsigned int *salt_size, unsigned int *iter_count, - char **oid); +int gnutls_pkcs12_bag_encrypt(gnutls_pkcs12_bag_t bag, const char *pass, + unsigned int flags); + +int gnutls_pkcs12_bag_enc_info(gnutls_pkcs12_bag_t bag, unsigned int *schema, + unsigned int *cipher, void *salt, + unsigned int *salt_size, + unsigned int *iter_count, char **oid); int gnutls_pkcs12_mac_info(gnutls_pkcs12_t pkcs12, unsigned int *mac, void *salt, unsigned int *salt_size, unsigned int *iter_count, char **oid); -# define GNUTLS_PKCS12_SP_INCLUDE_SELF_SIGNED 1 -int gnutls_pkcs12_simple_parse(gnutls_pkcs12_t p12, - const char *password, - gnutls_x509_privkey_t * key, - gnutls_x509_crt_t ** chain, +#define GNUTLS_PKCS12_SP_INCLUDE_SELF_SIGNED 1 +int gnutls_pkcs12_simple_parse(gnutls_pkcs12_t p12, const char *password, + gnutls_x509_privkey_t *key, + gnutls_x509_crt_t **chain, unsigned int *chain_len, - gnutls_x509_crt_t ** extra_certs, + gnutls_x509_crt_t **extra_certs, unsigned int *extra_certs_len, - gnutls_x509_crl_t * crl, unsigned int flags); + gnutls_x509_crl_t *crl, unsigned int flags); /** * gnutls_pkcs12_bag_type_t: @@ -99,7 +95,7 @@ typedef enum gnutls_pkcs12_bag_type_t { GNUTLS_BAG_PKCS8_KEY = 2, GNUTLS_BAG_CERTIFICATE = 3, GNUTLS_BAG_CRL = 4, - GNUTLS_BAG_SECRET = 5, /* Secret data. Underspecified in pkcs-12, + GNUTLS_BAG_SECRET = 5, /* Secret data. Underspecified in pkcs-12, * gnutls extension. We use the PKCS-9 * random nonce ID 1.2.840.113549.1.9.25.3 * to store randomly generated keys. @@ -110,34 +106,33 @@ typedef enum gnutls_pkcs12_bag_type_t { int gnutls_pkcs12_bag_get_type(gnutls_pkcs12_bag_t bag, unsigned indx); int gnutls_pkcs12_bag_get_data(gnutls_pkcs12_bag_t bag, unsigned indx, - gnutls_datum_t * data); + gnutls_datum_t *data); int gnutls_pkcs12_bag_set_data(gnutls_pkcs12_bag_t bag, gnutls_pkcs12_bag_type_t type, - const gnutls_datum_t * data); + const gnutls_datum_t *data); int gnutls_pkcs12_bag_set_crl(gnutls_pkcs12_bag_t bag, gnutls_x509_crl_t crl); int gnutls_pkcs12_bag_set_crt(gnutls_pkcs12_bag_t bag, gnutls_x509_crt_t crt); -int -gnutls_pkcs12_bag_set_privkey(gnutls_pkcs12_bag_t bag, - gnutls_x509_privkey_t privkey, - const char *password, unsigned flags); +int gnutls_pkcs12_bag_set_privkey(gnutls_pkcs12_bag_t bag, + gnutls_x509_privkey_t privkey, + const char *password, unsigned flags); -int gnutls_pkcs12_bag_init(gnutls_pkcs12_bag_t * bag); +int gnutls_pkcs12_bag_init(gnutls_pkcs12_bag_t *bag); void gnutls_pkcs12_bag_deinit(gnutls_pkcs12_bag_t bag); int gnutls_pkcs12_bag_get_count(gnutls_pkcs12_bag_t bag); int gnutls_pkcs12_bag_get_key_id(gnutls_pkcs12_bag_t bag, unsigned indx, - gnutls_datum_t * id); + gnutls_datum_t *id); int gnutls_pkcs12_bag_set_key_id(gnutls_pkcs12_bag_t bag, unsigned indx, - const gnutls_datum_t * id); + const gnutls_datum_t *id); -int gnutls_pkcs12_bag_get_friendly_name(gnutls_pkcs12_bag_t bag, - unsigned indx, char **name); -int gnutls_pkcs12_bag_set_friendly_name(gnutls_pkcs12_bag_t bag, - unsigned indx, const char *name); +int gnutls_pkcs12_bag_get_friendly_name(gnutls_pkcs12_bag_t bag, unsigned indx, + char **name); +int gnutls_pkcs12_bag_set_friendly_name(gnutls_pkcs12_bag_t bag, unsigned indx, + const char *name); #ifdef __cplusplus } #endif -#endif /* GNUTLS_PKCS12_H */ +#endif /* GNUTLS_PKCS12_H */ diff --git a/lib/includes/gnutls/pkcs7.h b/lib/includes/gnutls/pkcs7.h index 777c0002f6..35660ddb67 100644 --- a/lib/includes/gnutls/pkcs7.h +++ b/lib/includes/gnutls/pkcs7.h @@ -26,10 +26,10 @@ */ #ifndef GNUTLS_PKCS7_H -# define GNUTLS_PKCS7_H +#define GNUTLS_PKCS7_H -# include -# include +#include +#include #ifdef __cplusplus extern "C" { @@ -40,22 +40,20 @@ extern "C" { struct gnutls_pkcs7_int; typedef struct gnutls_pkcs7_int *gnutls_pkcs7_t; -int gnutls_pkcs7_init(gnutls_pkcs7_t * pkcs7); +int gnutls_pkcs7_init(gnutls_pkcs7_t *pkcs7); void gnutls_pkcs7_deinit(gnutls_pkcs7_t pkcs7); -int gnutls_pkcs7_import(gnutls_pkcs7_t pkcs7, - const gnutls_datum_t * data, +int gnutls_pkcs7_import(gnutls_pkcs7_t pkcs7, const gnutls_datum_t *data, gnutls_x509_crt_fmt_t format); -int gnutls_pkcs7_export(gnutls_pkcs7_t pkcs7, - gnutls_x509_crt_fmt_t format, +int gnutls_pkcs7_export(gnutls_pkcs7_t pkcs7, gnutls_x509_crt_fmt_t format, void *output_data, size_t *output_data_size); -int gnutls_pkcs7_export2(gnutls_pkcs7_t pkcs7, - gnutls_x509_crt_fmt_t format, gnutls_datum_t * out); +int gnutls_pkcs7_export2(gnutls_pkcs7_t pkcs7, gnutls_x509_crt_fmt_t format, + gnutls_datum_t *out); int gnutls_pkcs7_get_signature_count(gnutls_pkcs7_t pkcs7); -# define GNUTLS_PKCS7_EDATA_GET_RAW (1<<24) +#define GNUTLS_PKCS7_EDATA_GET_RAW (1 << 24) int gnutls_pkcs7_get_embedded_data(gnutls_pkcs7_t pkcs7, unsigned flags, - gnutls_datum_t * data); + gnutls_datum_t *data); const char *gnutls_pkcs7_get_embedded_data_oid(gnutls_pkcs7_t pkcs7); @@ -63,15 +61,15 @@ int gnutls_pkcs7_get_crt_count(gnutls_pkcs7_t pkcs7); int gnutls_pkcs7_get_crt_raw(gnutls_pkcs7_t pkcs7, unsigned indx, void *certificate, size_t *certificate_size); -int gnutls_pkcs7_set_crt_raw(gnutls_pkcs7_t pkcs7, const gnutls_datum_t * crt); +int gnutls_pkcs7_set_crt_raw(gnutls_pkcs7_t pkcs7, const gnutls_datum_t *crt); int gnutls_pkcs7_set_crt(gnutls_pkcs7_t pkcs7, gnutls_x509_crt_t crt); int gnutls_pkcs7_delete_crt(gnutls_pkcs7_t pkcs7, int indx); -int gnutls_pkcs7_get_crl_raw(gnutls_pkcs7_t pkcs7, - unsigned indx, void *crl, size_t *crl_size); +int gnutls_pkcs7_get_crl_raw(gnutls_pkcs7_t pkcs7, unsigned indx, void *crl, + size_t *crl_size); int gnutls_pkcs7_get_crl_count(gnutls_pkcs7_t pkcs7); -int gnutls_pkcs7_set_crl_raw(gnutls_pkcs7_t pkcs7, const gnutls_datum_t * crl); +int gnutls_pkcs7_set_crl_raw(gnutls_pkcs7_t pkcs7, const gnutls_datum_t *crl); int gnutls_pkcs7_set_crl(gnutls_pkcs7_t pkcs7, gnutls_x509_crl_t crl); int gnutls_pkcs7_delete_crl(gnutls_pkcs7_t pkcs7, int indx); @@ -89,24 +87,24 @@ typedef struct gnutls_pkcs7_signature_info_st { char pad[64]; } gnutls_pkcs7_signature_info_st; -void gnutls_pkcs7_signature_info_deinit(gnutls_pkcs7_signature_info_st * info); +void gnutls_pkcs7_signature_info_deinit(gnutls_pkcs7_signature_info_st *info); int gnutls_pkcs7_get_signature_info(gnutls_pkcs7_t pkcs7, unsigned idx, - gnutls_pkcs7_signature_info_st * info); + gnutls_pkcs7_signature_info_st *info); int gnutls_pkcs7_verify_direct(gnutls_pkcs7_t pkcs7, gnutls_x509_crt_t signer, - unsigned idx, const gnutls_datum_t * data, + unsigned idx, const gnutls_datum_t *data, unsigned flags); int gnutls_pkcs7_verify(gnutls_pkcs7_t pkcs7, gnutls_x509_trust_list_t tl, - gnutls_typed_vdata_st * vdata, unsigned int vdata_size, - unsigned idx, const gnutls_datum_t * data, + gnutls_typed_vdata_st *vdata, unsigned int vdata_size, + unsigned idx, const gnutls_datum_t *data, unsigned flags); -# define GNUTLS_PKCS7_ATTR_ENCODE_OCTET_STRING 1 -int gnutls_pkcs7_add_attr(gnutls_pkcs7_attrs_t * list, const char *oid, - gnutls_datum_t * data, unsigned flags); +#define GNUTLS_PKCS7_ATTR_ENCODE_OCTET_STRING 1 +int gnutls_pkcs7_add_attr(gnutls_pkcs7_attrs_t *list, const char *oid, + gnutls_datum_t *data, unsigned flags); void gnutls_pkcs7_attrs_deinit(gnutls_pkcs7_attrs_t list); int gnutls_pkcs7_get_attr(gnutls_pkcs7_attrs_t list, unsigned idx, char **oid, - gnutls_datum_t * data, unsigned flags); + gnutls_datum_t *data, unsigned flags); /** * gnutls_pkcs7_sign_flags: @@ -124,31 +122,27 @@ typedef enum gnutls_pkcs7_sign_flags { GNUTLS_PKCS7_WRITE_SPKI = (1 << 3) } gnutls_pkcs7_sign_flags; -int gnutls_pkcs7_sign(gnutls_pkcs7_t pkcs7, - gnutls_x509_crt_t signer, - gnutls_privkey_t signer_key, - const gnutls_datum_t * data, +int gnutls_pkcs7_sign(gnutls_pkcs7_t pkcs7, gnutls_x509_crt_t signer, + gnutls_privkey_t signer_key, const gnutls_datum_t *data, gnutls_pkcs7_attrs_t signed_attrs, gnutls_pkcs7_attrs_t unsigned_attrs, gnutls_digest_algorithm_t dig, unsigned flags); -int -gnutls_pkcs7_get_crt_raw2(gnutls_pkcs7_t pkcs7, - unsigned indx, gnutls_datum_t * cert); -int -gnutls_pkcs7_get_crl_raw2(gnutls_pkcs7_t pkcs7, - unsigned indx, gnutls_datum_t * crl); +int gnutls_pkcs7_get_crt_raw2(gnutls_pkcs7_t pkcs7, unsigned indx, + gnutls_datum_t *cert); +int gnutls_pkcs7_get_crl_raw2(gnutls_pkcs7_t pkcs7, unsigned indx, + gnutls_datum_t *crl); int gnutls_pkcs7_print(gnutls_pkcs7_t pkcs7, gnutls_certificate_print_formats_t format, - gnutls_datum_t * out); + gnutls_datum_t *out); -int gnutls_pkcs7_print_signature_info(gnutls_pkcs7_signature_info_st * info, +int gnutls_pkcs7_print_signature_info(gnutls_pkcs7_signature_info_st *info, gnutls_certificate_print_formats_t format, - gnutls_datum_t * out); + gnutls_datum_t *out); #ifdef __cplusplus } #endif -#endif /* GNUTLS_PKCS7_H */ +#endif /* GNUTLS_PKCS7_H */ diff --git a/lib/includes/gnutls/self-test.h b/lib/includes/gnutls/self-test.h index 0d5989e63a..c695a8d93c 100644 --- a/lib/includes/gnutls/self-test.h +++ b/lib/includes/gnutls/self-test.h @@ -21,14 +21,14 @@ */ #ifndef GNUTLS_SELF_TEST_H -# define GNUTLS_SELF_TEST_H +#define GNUTLS_SELF_TEST_H -# include +#include - /* Self checking functions */ +/* Self checking functions */ -# define GNUTLS_SELF_TEST_FLAG_ALL 1 -# define GNUTLS_SELF_TEST_FLAG_NO_COMPAT (1<<1) +#define GNUTLS_SELF_TEST_FLAG_ALL 1 +#define GNUTLS_SELF_TEST_FLAG_NO_COMPAT (1 << 1) int gnutls_cipher_self_test(unsigned flags, gnutls_cipher_algorithm_t cipher); int gnutls_mac_self_test(unsigned flags, gnutls_mac_algorithm_t mac); @@ -38,4 +38,4 @@ int gnutls_hkdf_self_test(unsigned flags, gnutls_mac_algorithm_t mac); int gnutls_pbkdf2_self_test(unsigned flags, gnutls_mac_algorithm_t mac); int gnutls_tlsprf_self_test(unsigned flags, gnutls_mac_algorithm_t mac); -#endif /* GNUTLS_SELF_TEST_H */ +#endif /* GNUTLS_SELF_TEST_H */ diff --git a/lib/includes/gnutls/socket.h b/lib/includes/gnutls/socket.h index ccf24a76e8..46e72dbb72 100644 --- a/lib/includes/gnutls/socket.h +++ b/lib/includes/gnutls/socket.h @@ -24,19 +24,18 @@ */ #ifndef GNUTLS_SOCKET_H -# define GNUTLS_SOCKET_H +#define GNUTLS_SOCKET_H -# include +#include /* Get socklen_t */ -# include +#include #ifdef __cplusplus extern "C" { #endif -void gnutls_transport_set_fastopen(gnutls_session_t session, - int fd, +void gnutls_transport_set_fastopen(gnutls_session_t session, int fd, struct sockaddr *connect_addr, socklen_t connect_addrlen, unsigned int flags); @@ -45,4 +44,4 @@ void gnutls_transport_set_fastopen(gnutls_session_t session, } #endif -#endif /* GNUTLS_SOCKET_H */ +#endif /* GNUTLS_SOCKET_H */ diff --git a/lib/includes/gnutls/system-keys.h b/lib/includes/gnutls/system-keys.h index f392fcfa8e..aa653067a5 100644 --- a/lib/includes/gnutls/system-keys.h +++ b/lib/includes/gnutls/system-keys.h @@ -21,10 +21,10 @@ */ #ifndef GNUTLS_SYSTEM_KEYS_H -# define GNUTLS_SYSTEM_KEYS_H +#define GNUTLS_SYSTEM_KEYS_H -# include -# include +#include +#include /* This API allows to access user key and certificate pairs that are * available in the current system. If any passwords are required, @@ -39,12 +39,12 @@ struct system_key_iter_st; typedef struct system_key_iter_st *gnutls_system_key_iter_t; void gnutls_system_key_iter_deinit(gnutls_system_key_iter_t iter); -int -gnutls_system_key_iter_get_info(gnutls_system_key_iter_t * iter, - unsigned cert_type - /* gnutls_certificate_type_t */ , - char **cert_url, char **key_url, char **label, - gnutls_datum_t * der, unsigned int flags); +int gnutls_system_key_iter_get_info(gnutls_system_key_iter_t *iter, + unsigned cert_type + /* gnutls_certificate_type_t */, + char **cert_url, char **key_url, + char **label, gnutls_datum_t *der, + unsigned int flags); int gnutls_system_key_delete(const char *cert_url, const char *key_url); @@ -56,4 +56,4 @@ int gnutls_system_key_add_x509(gnutls_x509_crt_t crt, } #endif -#endif /* GNUTLS_SYSTEM_KEYS_H */ +#endif /* GNUTLS_SYSTEM_KEYS_H */ diff --git a/lib/includes/gnutls/tpm.h b/lib/includes/gnutls/tpm.h index e54e0bbf66..8824952bb9 100644 --- a/lib/includes/gnutls/tpm.h +++ b/lib/includes/gnutls/tpm.h @@ -21,10 +21,10 @@ */ #ifndef GNUTLS_TPM_H -# define GNUTLS_TPM_H +#define GNUTLS_TPM_H -# include -# include +#include +#include #ifdef __cplusplus extern "C" { @@ -33,9 +33,9 @@ extern "C" { struct tpm_key_list_st; typedef struct tpm_key_list_st *gnutls_tpm_key_list_t; -# define GNUTLS_TPM_KEY_SIGNING (1<<1) -# define GNUTLS_TPM_REGISTER_KEY (1<<2) -# define GNUTLS_TPM_KEY_USER (1<<3) +#define GNUTLS_TPM_KEY_SIGNING (1 << 1) +#define GNUTLS_TPM_REGISTER_KEY (1 << 2) +#define GNUTLS_TPM_KEY_USER (1 << 3) /** * gnutls_tpmkey_fmt_t: @@ -51,26 +51,22 @@ typedef enum { GNUTLS_TPMKEY_FMT_CTK_PEM = 1 } gnutls_tpmkey_fmt_t; -int -gnutls_tpm_privkey_generate(gnutls_pk_algorithm_t pk, - unsigned int bits, - const char *srk_password, - const char *key_password, - gnutls_tpmkey_fmt_t format, - gnutls_x509_crt_fmt_t pub_format, - gnutls_datum_t * privkey, - gnutls_datum_t * pubkey, unsigned int flags); +int gnutls_tpm_privkey_generate(gnutls_pk_algorithm_t pk, unsigned int bits, + const char *srk_password, + const char *key_password, + gnutls_tpmkey_fmt_t format, + gnutls_x509_crt_fmt_t pub_format, + gnutls_datum_t *privkey, gnutls_datum_t *pubkey, + unsigned int flags); void gnutls_tpm_key_list_deinit(gnutls_tpm_key_list_t list); -int gnutls_tpm_key_list_get_url(gnutls_tpm_key_list_t list, - unsigned int idx, char **url, - unsigned int flags); -int gnutls_tpm_get_registered(gnutls_tpm_key_list_t * list); +int gnutls_tpm_key_list_get_url(gnutls_tpm_key_list_t list, unsigned int idx, + char **url, unsigned int flags); +int gnutls_tpm_get_registered(gnutls_tpm_key_list_t *list); int gnutls_tpm_privkey_delete(const char *url, const char *srk_password); - #ifdef __cplusplus } #endif -#endif /* GNUTLS_TPM_H */ +#endif /* GNUTLS_TPM_H */ diff --git a/lib/includes/gnutls/urls.h b/lib/includes/gnutls/urls.h index 3f2ef45a80..368c26d090 100644 --- a/lib/includes/gnutls/urls.h +++ b/lib/includes/gnutls/urls.h @@ -21,11 +21,11 @@ */ #ifndef GNUTLS_URLS_H -# define GNUTLS_URLS_H +#define GNUTLS_URLS_H -# include -# include -# include +#include +#include +#include /* This API allows to register application specific URLs for * keys and certificates. @@ -53,7 +53,7 @@ typedef int (*gnutls_pubkey_import_url_func)(gnutls_pubkey_t pkey, * it should return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE. */ typedef int (*gnutls_get_raw_issuer_func)(const char *url, gnutls_x509_crt_t crt, - gnutls_datum_t * issuer_der, + gnutls_datum_t *issuer_der, unsigned flags); typedef struct gnutls_custom_url_st { @@ -63,14 +63,14 @@ typedef struct gnutls_custom_url_st { gnutls_x509_crt_import_url_func import_crt; gnutls_pubkey_import_url_func import_pubkey; gnutls_get_raw_issuer_func get_issuer; - void *future1; /* replace in a future extension */ - void *future2; /* replace in a future extension */ + void *future1; /* replace in a future extension */ + void *future2; /* replace in a future extension */ } gnutls_custom_url_st; -int gnutls_register_custom_url(const gnutls_custom_url_st * st); +int gnutls_register_custom_url(const gnutls_custom_url_st *st); #ifdef __cplusplus } #endif -#endif /* GNUTLS_URLS_H */ +#endif /* GNUTLS_URLS_H */ diff --git a/lib/includes/gnutls/x509-ext.h b/lib/includes/gnutls/x509-ext.h index c0fa233b5a..6993c3c9a5 100644 --- a/lib/includes/gnutls/x509-ext.h +++ b/lib/includes/gnutls/x509-ext.h @@ -23,10 +23,10 @@ /* Prototypes for direct handling of extension data */ #ifndef GNUTLS_X509_EXT_H -# define GNUTLS_X509_EXT_H +#define GNUTLS_X509_EXT_H -# include -# include +#include +#include #ifdef __cplusplus extern "C" { @@ -38,22 +38,24 @@ int gnutls_subject_alt_names_init(gnutls_subject_alt_names_t *); void gnutls_subject_alt_names_deinit(gnutls_subject_alt_names_t sans); int gnutls_subject_alt_names_get(gnutls_subject_alt_names_t sans, unsigned int seq, unsigned int *san_type, - gnutls_datum_t * san, - gnutls_datum_t * othername_oid); + gnutls_datum_t *san, + gnutls_datum_t *othername_oid); int gnutls_subject_alt_names_set(gnutls_subject_alt_names_t sans, unsigned int san_type, - const gnutls_datum_t * san, + const gnutls_datum_t *san, const char *othername_oid); -int gnutls_x509_ext_import_subject_alt_names(const gnutls_datum_t * ext, +int gnutls_x509_ext_import_subject_alt_names(const gnutls_datum_t *ext, gnutls_subject_alt_names_t, unsigned int flags); int gnutls_x509_ext_export_subject_alt_names(gnutls_subject_alt_names_t, - gnutls_datum_t * ext); + gnutls_datum_t *ext); /* They are exactly the same */ -# define gnutls_x509_ext_import_issuer_alt_name gnutls_x509_ext_import_subject_alt_name -# define gnutls_x509_ext_export_issuer_alt_name gnutls_x509_ext_export_subject_alt_name +#define gnutls_x509_ext_import_issuer_alt_name \ + gnutls_x509_ext_import_subject_alt_name +#define gnutls_x509_ext_export_issuer_alt_name \ + gnutls_x509_ext_export_subject_alt_name typedef struct gnutls_x509_crl_dist_points_st *gnutls_x509_crl_dist_points_t; @@ -61,115 +63,113 @@ int gnutls_x509_crl_dist_points_init(gnutls_x509_crl_dist_points_t *); void gnutls_x509_crl_dist_points_deinit(gnutls_x509_crl_dist_points_t); int gnutls_x509_crl_dist_points_get(gnutls_x509_crl_dist_points_t, unsigned int seq, unsigned int *type, - gnutls_datum_t * dist, + gnutls_datum_t *dist, unsigned int *reason_flags); int gnutls_x509_crl_dist_points_set(gnutls_x509_crl_dist_points_t, gnutls_x509_subject_alt_name_t type, - const gnutls_datum_t * dist, + const gnutls_datum_t *dist, unsigned int reason_flags); -int gnutls_x509_ext_import_crl_dist_points(const gnutls_datum_t * ext, +int gnutls_x509_ext_import_crl_dist_points(const gnutls_datum_t *ext, gnutls_x509_crl_dist_points_t dp, unsigned int flags); int gnutls_x509_ext_export_crl_dist_points(gnutls_x509_crl_dist_points_t dp, - gnutls_datum_t * ext); + gnutls_datum_t *ext); -int gnutls_x509_ext_import_name_constraints(const gnutls_datum_t * ext, +int gnutls_x509_ext_import_name_constraints(const gnutls_datum_t *ext, gnutls_x509_name_constraints_t nc, unsigned int flags); int gnutls_x509_ext_export_name_constraints(gnutls_x509_name_constraints_t nc, - gnutls_datum_t * ext); + gnutls_datum_t *ext); typedef struct gnutls_x509_aia_st *gnutls_x509_aia_t; int gnutls_x509_aia_init(gnutls_x509_aia_t *); void gnutls_x509_aia_deinit(gnutls_x509_aia_t); int gnutls_x509_aia_get(gnutls_x509_aia_t aia, unsigned int seq, - gnutls_datum_t * oid, - unsigned *san_type, gnutls_datum_t * san); -int gnutls_x509_aia_set(gnutls_x509_aia_t aia, - const char *oid, - unsigned san_type, const gnutls_datum_t * san); + gnutls_datum_t *oid, unsigned *san_type, + gnutls_datum_t *san); +int gnutls_x509_aia_set(gnutls_x509_aia_t aia, const char *oid, + unsigned san_type, const gnutls_datum_t *san); -int gnutls_x509_ext_import_aia(const gnutls_datum_t * ext, - gnutls_x509_aia_t, unsigned int flags); -int gnutls_x509_ext_export_aia(gnutls_x509_aia_t aia, gnutls_datum_t * ext); +int gnutls_x509_ext_import_aia(const gnutls_datum_t *ext, gnutls_x509_aia_t, + unsigned int flags); +int gnutls_x509_ext_export_aia(gnutls_x509_aia_t aia, gnutls_datum_t *ext); -int gnutls_x509_ext_import_subject_key_id(const gnutls_datum_t * ext, - gnutls_datum_t * id); -int gnutls_x509_ext_export_subject_key_id(const gnutls_datum_t * id, - gnutls_datum_t * ext); +int gnutls_x509_ext_import_subject_key_id(const gnutls_datum_t *ext, + gnutls_datum_t *id); +int gnutls_x509_ext_export_subject_key_id(const gnutls_datum_t *id, + gnutls_datum_t *ext); typedef struct gnutls_x509_aki_st *gnutls_x509_aki_t; int gnutls_x509_ext_export_authority_key_id(gnutls_x509_aki_t, - gnutls_datum_t * ext); -int gnutls_x509_ext_import_authority_key_id(const gnutls_datum_t * ext, + gnutls_datum_t *ext); +int gnutls_x509_ext_import_authority_key_id(const gnutls_datum_t *ext, gnutls_x509_aki_t, unsigned int flags); int gnutls_x509_othername_to_virtual(const char *oid, - const gnutls_datum_t * othername, + const gnutls_datum_t *othername, unsigned int *virt_type, - gnutls_datum_t * virt); + gnutls_datum_t *virt); int gnutls_x509_aki_init(gnutls_x509_aki_t *); -int gnutls_x509_aki_get_id(gnutls_x509_aki_t, gnutls_datum_t * id); +int gnutls_x509_aki_get_id(gnutls_x509_aki_t, gnutls_datum_t *id); int gnutls_x509_aki_get_cert_issuer(gnutls_x509_aki_t aki, unsigned int seq, - unsigned int *san_type, - gnutls_datum_t * san, - gnutls_datum_t * othername_oid, - gnutls_datum_t * serial); -int gnutls_x509_aki_set_id(gnutls_x509_aki_t aki, const gnutls_datum_t * id); + unsigned int *san_type, gnutls_datum_t *san, + gnutls_datum_t *othername_oid, + gnutls_datum_t *serial); +int gnutls_x509_aki_set_id(gnutls_x509_aki_t aki, const gnutls_datum_t *id); int gnutls_x509_aki_set_cert_issuer(gnutls_x509_aki_t aki, unsigned int san_type, - const gnutls_datum_t * san, + const gnutls_datum_t *san, const char *othername_oid, - const gnutls_datum_t * serial); + const gnutls_datum_t *serial); void gnutls_x509_aki_deinit(gnutls_x509_aki_t); -int gnutls_x509_ext_import_private_key_usage_period(const gnutls_datum_t * ext, - time_t * activation, - time_t * expiration); +int gnutls_x509_ext_import_private_key_usage_period(const gnutls_datum_t *ext, + time_t *activation, + time_t *expiration); int gnutls_x509_ext_export_private_key_usage_period(time_t activation, time_t expiration, - gnutls_datum_t * ext); + gnutls_datum_t *ext); -int gnutls_x509_ext_import_basic_constraints(const gnutls_datum_t * ext, +int gnutls_x509_ext_import_basic_constraints(const gnutls_datum_t *ext, unsigned int *ca, int *pathlen); int gnutls_x509_ext_export_basic_constraints(unsigned int ca, int pathlen, - gnutls_datum_t * ext); + gnutls_datum_t *ext); typedef struct gnutls_x509_key_purposes_st *gnutls_x509_key_purposes_t; -int gnutls_x509_key_purpose_init(gnutls_x509_key_purposes_t * p); +int gnutls_x509_key_purpose_init(gnutls_x509_key_purposes_t *p); void gnutls_x509_key_purpose_deinit(gnutls_x509_key_purposes_t p); int gnutls_x509_key_purpose_set(gnutls_x509_key_purposes_t p, const char *oid); int gnutls_x509_key_purpose_get(gnutls_x509_key_purposes_t p, unsigned idx, - gnutls_datum_t * oid); + gnutls_datum_t *oid); -int gnutls_x509_ext_import_key_purposes(const gnutls_datum_t * ext, +int gnutls_x509_ext_import_key_purposes(const gnutls_datum_t *ext, gnutls_x509_key_purposes_t, unsigned int flags); int gnutls_x509_ext_export_key_purposes(gnutls_x509_key_purposes_t, - gnutls_datum_t * ext); + gnutls_datum_t *ext); -int gnutls_x509_ext_import_key_usage(const gnutls_datum_t * ext, +int gnutls_x509_ext_import_key_usage(const gnutls_datum_t *ext, unsigned int *key_usage); int gnutls_x509_ext_export_key_usage(unsigned int key_usage, - gnutls_datum_t * ext); + gnutls_datum_t *ext); -int gnutls_x509_ext_import_inhibit_anypolicy(const gnutls_datum_t * ext, +int gnutls_x509_ext_import_inhibit_anypolicy(const gnutls_datum_t *ext, unsigned int *skipcerts); int gnutls_x509_ext_export_inhibit_anypolicy(unsigned int skipcerts, - gnutls_datum_t * ext); + gnutls_datum_t *ext); -int gnutls_x509_ext_import_proxy(const gnutls_datum_t * ext, int *pathlen, +int gnutls_x509_ext_import_proxy(const gnutls_datum_t *ext, int *pathlen, char **policyLanguage, char **policy, size_t *sizeof_policy); int gnutls_x509_ext_export_proxy(int pathLenConstraint, const char *policyLanguage, const char *policy, - size_t sizeof_policy, gnutls_datum_t * ext); + size_t sizeof_policy, gnutls_datum_t *ext); typedef struct gnutls_x509_policies_st *gnutls_x509_policies_t; @@ -181,40 +181,40 @@ int gnutls_x509_policies_get(gnutls_x509_policies_t policies, unsigned int seq, int gnutls_x509_policies_set(gnutls_x509_policies_t policies, const struct gnutls_x509_policy_st *policy); -int gnutls_x509_ext_import_policies(const gnutls_datum_t * ext, +int gnutls_x509_ext_import_policies(const gnutls_datum_t *ext, gnutls_x509_policies_t policies, unsigned int flags); int gnutls_x509_ext_export_policies(gnutls_x509_policies_t policies, - gnutls_datum_t * ext); + gnutls_datum_t *ext); -int gnutls_x509_ext_import_tlsfeatures(const gnutls_datum_t * ext, +int gnutls_x509_ext_import_tlsfeatures(const gnutls_datum_t *ext, gnutls_x509_tlsfeatures_t, unsigned int flags); int gnutls_x509_ext_export_tlsfeatures(gnutls_x509_tlsfeatures_t f, - gnutls_datum_t * ext); + gnutls_datum_t *ext); int gnutls_x509_tlsfeatures_add(gnutls_x509_tlsfeatures_t f, unsigned int feature); typedef struct gnutls_x509_ct_scts_st *gnutls_x509_ct_scts_t; -int gnutls_x509_ext_ct_scts_init(gnutls_x509_ct_scts_t * scts); +int gnutls_x509_ext_ct_scts_init(gnutls_x509_ct_scts_t *scts); void gnutls_x509_ext_ct_scts_deinit(gnutls_x509_ct_scts_t scts); -int gnutls_x509_ext_ct_import_scts(const gnutls_datum_t * ext, +int gnutls_x509_ext_ct_import_scts(const gnutls_datum_t *ext, gnutls_x509_ct_scts_t scts, unsigned int flags); int gnutls_x509_ext_ct_export_scts(const gnutls_x509_ct_scts_t scts, - gnutls_datum_t * ext); + gnutls_datum_t *ext); int gnutls_x509_ct_sct_get_version(const gnutls_x509_ct_scts_t scts, unsigned idx, unsigned int *version_out); int gnutls_x509_ct_sct_get(const gnutls_x509_ct_scts_t scts, unsigned idx, - time_t * timestamp, gnutls_datum_t * logid, - gnutls_sign_algorithm_t * sigalg, - gnutls_datum_t * signature); + time_t *timestamp, gnutls_datum_t *logid, + gnutls_sign_algorithm_t *sigalg, + gnutls_datum_t *signature); #ifdef __cplusplus } #endif -#endif /* GNUTLS_X509_EXT_H */ +#endif /* GNUTLS_X509_EXT_H */ diff --git a/lib/includes/gnutls/x509.h b/lib/includes/gnutls/x509.h index d5a5e8e914..08ee980f73 100644 --- a/lib/includes/gnutls/x509.h +++ b/lib/includes/gnutls/x509.h @@ -26,9 +26,9 @@ */ #ifndef GNUTLS_X509_H -# define GNUTLS_X509_H +#define GNUTLS_X509_H -# include +#include #ifdef __cplusplus extern "C" { @@ -37,77 +37,77 @@ extern "C" { /* Some OIDs usually found in Distinguished names, or * in Subject Directory Attribute extensions. */ -# define GNUTLS_OID_X520_COUNTRY_NAME "2.5.4.6" -# define GNUTLS_OID_X520_ORGANIZATION_NAME "2.5.4.10" -# define GNUTLS_OID_X520_ORGANIZATIONAL_UNIT_NAME "2.5.4.11" -# define GNUTLS_OID_X520_COMMON_NAME "2.5.4.3" -# define GNUTLS_OID_X520_LOCALITY_NAME "2.5.4.7" -# define GNUTLS_OID_X520_STATE_OR_PROVINCE_NAME "2.5.4.8" - -# define GNUTLS_OID_X520_INITIALS "2.5.4.43" -# define GNUTLS_OID_X520_GENERATION_QUALIFIER "2.5.4.44" -# define GNUTLS_OID_X520_SURNAME "2.5.4.4" -# define GNUTLS_OID_X520_GIVEN_NAME "2.5.4.42" -# define GNUTLS_OID_X520_TITLE "2.5.4.12" -# define GNUTLS_OID_X520_DN_QUALIFIER "2.5.4.46" -# define GNUTLS_OID_X520_PSEUDONYM "2.5.4.65" -# define GNUTLS_OID_X520_POSTALCODE "2.5.4.17" -# define GNUTLS_OID_X520_NAME "2.5.4.41" - -# define GNUTLS_OID_LDAP_DC "0.9.2342.19200300.100.1.25" -# define GNUTLS_OID_LDAP_UID "0.9.2342.19200300.100.1.1" +#define GNUTLS_OID_X520_COUNTRY_NAME "2.5.4.6" +#define GNUTLS_OID_X520_ORGANIZATION_NAME "2.5.4.10" +#define GNUTLS_OID_X520_ORGANIZATIONAL_UNIT_NAME "2.5.4.11" +#define GNUTLS_OID_X520_COMMON_NAME "2.5.4.3" +#define GNUTLS_OID_X520_LOCALITY_NAME "2.5.4.7" +#define GNUTLS_OID_X520_STATE_OR_PROVINCE_NAME "2.5.4.8" + +#define GNUTLS_OID_X520_INITIALS "2.5.4.43" +#define GNUTLS_OID_X520_GENERATION_QUALIFIER "2.5.4.44" +#define GNUTLS_OID_X520_SURNAME "2.5.4.4" +#define GNUTLS_OID_X520_GIVEN_NAME "2.5.4.42" +#define GNUTLS_OID_X520_TITLE "2.5.4.12" +#define GNUTLS_OID_X520_DN_QUALIFIER "2.5.4.46" +#define GNUTLS_OID_X520_PSEUDONYM "2.5.4.65" +#define GNUTLS_OID_X520_POSTALCODE "2.5.4.17" +#define GNUTLS_OID_X520_NAME "2.5.4.41" + +#define GNUTLS_OID_LDAP_DC "0.9.2342.19200300.100.1.25" +#define GNUTLS_OID_LDAP_UID "0.9.2342.19200300.100.1.1" /* The following should not be included in DN. */ -# define GNUTLS_OID_PKCS9_EMAIL "1.2.840.113549.1.9.1" +#define GNUTLS_OID_PKCS9_EMAIL "1.2.840.113549.1.9.1" -# define GNUTLS_OID_PKIX_DATE_OF_BIRTH "1.3.6.1.5.5.7.9.1" -# define GNUTLS_OID_PKIX_PLACE_OF_BIRTH "1.3.6.1.5.5.7.9.2" -# define GNUTLS_OID_PKIX_GENDER "1.3.6.1.5.5.7.9.3" -# define GNUTLS_OID_PKIX_COUNTRY_OF_CITIZENSHIP "1.3.6.1.5.5.7.9.4" -# define GNUTLS_OID_PKIX_COUNTRY_OF_RESIDENCE "1.3.6.1.5.5.7.9.5" +#define GNUTLS_OID_PKIX_DATE_OF_BIRTH "1.3.6.1.5.5.7.9.1" +#define GNUTLS_OID_PKIX_PLACE_OF_BIRTH "1.3.6.1.5.5.7.9.2" +#define GNUTLS_OID_PKIX_GENDER "1.3.6.1.5.5.7.9.3" +#define GNUTLS_OID_PKIX_COUNTRY_OF_CITIZENSHIP "1.3.6.1.5.5.7.9.4" +#define GNUTLS_OID_PKIX_COUNTRY_OF_RESIDENCE "1.3.6.1.5.5.7.9.5" /* Key purpose Object Identifiers. */ -# define GNUTLS_KP_TLS_WWW_SERVER "1.3.6.1.5.5.7.3.1" -# define GNUTLS_KP_TLS_WWW_CLIENT "1.3.6.1.5.5.7.3.2" -# define GNUTLS_KP_CODE_SIGNING "1.3.6.1.5.5.7.3.3" -# define GNUTLS_KP_MS_SMART_CARD_LOGON "1.3.6.1.4.1.311.20.2.2" -# define GNUTLS_KP_EMAIL_PROTECTION "1.3.6.1.5.5.7.3.4" -# define GNUTLS_KP_TIME_STAMPING "1.3.6.1.5.5.7.3.8" -# define GNUTLS_KP_OCSP_SIGNING "1.3.6.1.5.5.7.3.9" -# define GNUTLS_KP_IPSEC_IKE "1.3.6.1.5.5.7.3.17" -# define GNUTLS_KP_ANY "2.5.29.37.0" - -# define GNUTLS_KP_FLAG_DISALLOW_ANY 1 - -# define GNUTLS_OID_AIA "1.3.6.1.5.5.7.1.1" -# define GNUTLS_OID_AD_OCSP "1.3.6.1.5.5.7.48.1" -# define GNUTLS_OID_AD_CAISSUERS "1.3.6.1.5.5.7.48.2" - -# define GNUTLS_FSAN_SET 0 -# define GNUTLS_FSAN_APPEND 1 -# define GNUTLS_FSAN_ENCODE_OCTET_STRING (1<<1) -# define GNUTLS_FSAN_ENCODE_UTF8_STRING (1<<2) - -# define GNUTLS_X509EXT_OID_SUBJECT_KEY_ID "2.5.29.14" -# define GNUTLS_X509EXT_OID_KEY_USAGE "2.5.29.15" -# define GNUTLS_X509EXT_OID_PRIVATE_KEY_USAGE_PERIOD "2.5.29.16" -# define GNUTLS_X509EXT_OID_SAN "2.5.29.17" -# define GNUTLS_X509EXT_OID_IAN "2.5.29.18" -# define GNUTLS_X509EXT_OID_BASIC_CONSTRAINTS "2.5.29.19" -# define GNUTLS_X509EXT_OID_NAME_CONSTRAINTS "2.5.29.30" -# define GNUTLS_X509EXT_OID_CRL_DIST_POINTS "2.5.29.31" -# define GNUTLS_X509EXT_OID_CRT_POLICY "2.5.29.32" -# define GNUTLS_X509EXT_OID_AUTHORITY_KEY_ID "2.5.29.35" -# define GNUTLS_X509EXT_OID_EXTENDED_KEY_USAGE "2.5.29.37" -# define GNUTLS_X509EXT_OID_INHIBIT_ANYPOLICY "2.5.29.52" -# define GNUTLS_X509EXT_OID_AUTHORITY_INFO_ACCESS "1.3.6.1.5.5.7.1.1" -# define GNUTLS_X509EXT_OID_PROXY_CRT_INFO "1.3.6.1.5.5.7.1.14" -# define GNUTLS_X509EXT_OID_TLSFEATURES "1.3.6.1.5.5.7.1.24" -# define GNUTLS_X509EXT_OID_CT_SCT_V1 "1.3.6.1.4.1.11129.2.4.2" - -# define GNUTLS_X509_OID_POLICY_ANY "2.5.29.54" +#define GNUTLS_KP_TLS_WWW_SERVER "1.3.6.1.5.5.7.3.1" +#define GNUTLS_KP_TLS_WWW_CLIENT "1.3.6.1.5.5.7.3.2" +#define GNUTLS_KP_CODE_SIGNING "1.3.6.1.5.5.7.3.3" +#define GNUTLS_KP_MS_SMART_CARD_LOGON "1.3.6.1.4.1.311.20.2.2" +#define GNUTLS_KP_EMAIL_PROTECTION "1.3.6.1.5.5.7.3.4" +#define GNUTLS_KP_TIME_STAMPING "1.3.6.1.5.5.7.3.8" +#define GNUTLS_KP_OCSP_SIGNING "1.3.6.1.5.5.7.3.9" +#define GNUTLS_KP_IPSEC_IKE "1.3.6.1.5.5.7.3.17" +#define GNUTLS_KP_ANY "2.5.29.37.0" + +#define GNUTLS_KP_FLAG_DISALLOW_ANY 1 + +#define GNUTLS_OID_AIA "1.3.6.1.5.5.7.1.1" +#define GNUTLS_OID_AD_OCSP "1.3.6.1.5.5.7.48.1" +#define GNUTLS_OID_AD_CAISSUERS "1.3.6.1.5.5.7.48.2" + +#define GNUTLS_FSAN_SET 0 +#define GNUTLS_FSAN_APPEND 1 +#define GNUTLS_FSAN_ENCODE_OCTET_STRING (1 << 1) +#define GNUTLS_FSAN_ENCODE_UTF8_STRING (1 << 2) + +#define GNUTLS_X509EXT_OID_SUBJECT_KEY_ID "2.5.29.14" +#define GNUTLS_X509EXT_OID_KEY_USAGE "2.5.29.15" +#define GNUTLS_X509EXT_OID_PRIVATE_KEY_USAGE_PERIOD "2.5.29.16" +#define GNUTLS_X509EXT_OID_SAN "2.5.29.17" +#define GNUTLS_X509EXT_OID_IAN "2.5.29.18" +#define GNUTLS_X509EXT_OID_BASIC_CONSTRAINTS "2.5.29.19" +#define GNUTLS_X509EXT_OID_NAME_CONSTRAINTS "2.5.29.30" +#define GNUTLS_X509EXT_OID_CRL_DIST_POINTS "2.5.29.31" +#define GNUTLS_X509EXT_OID_CRT_POLICY "2.5.29.32" +#define GNUTLS_X509EXT_OID_AUTHORITY_KEY_ID "2.5.29.35" +#define GNUTLS_X509EXT_OID_EXTENDED_KEY_USAGE "2.5.29.37" +#define GNUTLS_X509EXT_OID_INHIBIT_ANYPOLICY "2.5.29.52" +#define GNUTLS_X509EXT_OID_AUTHORITY_INFO_ACCESS "1.3.6.1.5.5.7.1.1" +#define GNUTLS_X509EXT_OID_PROXY_CRT_INFO "1.3.6.1.5.5.7.1.14" +#define GNUTLS_X509EXT_OID_TLSFEATURES "1.3.6.1.5.5.7.1.24" +#define GNUTLS_X509EXT_OID_CT_SCT_V1 "1.3.6.1.4.1.11129.2.4.2" + +#define GNUTLS_X509_OID_POLICY_ANY "2.5.29.54" /* Certificate handling functions. */ @@ -130,7 +130,7 @@ typedef enum gnutls_certificate_import_flags { GNUTLS_X509_CRT_LIST_SORT = 1 << 2 } gnutls_certificate_import_flags; -int gnutls_x509_crt_init(gnutls_x509_crt_t * cert); +int gnutls_x509_crt_init(gnutls_x509_crt_t *cert); void gnutls_x509_crt_deinit(gnutls_x509_crt_t cert); /** @@ -149,71 +149,61 @@ void gnutls_x509_crt_set_flags(gnutls_x509_crt_t cert, unsigned flags); unsigned gnutls_x509_crt_equals(gnutls_x509_crt_t cert1, gnutls_x509_crt_t cert2); unsigned gnutls_x509_crt_equals2(gnutls_x509_crt_t cert1, - const gnutls_datum_t * der); + const gnutls_datum_t *der); -int gnutls_x509_crt_import(gnutls_x509_crt_t cert, - const gnutls_datum_t * data, +int gnutls_x509_crt_import(gnutls_x509_crt_t cert, const gnutls_datum_t *data, gnutls_x509_crt_fmt_t format); -int gnutls_x509_crt_list_import2(gnutls_x509_crt_t ** certs, - unsigned int *size, - const gnutls_datum_t * data, +int gnutls_x509_crt_list_import2(gnutls_x509_crt_t **certs, unsigned int *size, + const gnutls_datum_t *data, gnutls_x509_crt_fmt_t format, unsigned int flags); -int gnutls_x509_crt_list_import(gnutls_x509_crt_t * certs, +int gnutls_x509_crt_list_import(gnutls_x509_crt_t *certs, unsigned int *cert_max, - const gnutls_datum_t * data, + const gnutls_datum_t *data, gnutls_x509_crt_fmt_t format, unsigned int flags); -int gnutls_x509_crt_import_url(gnutls_x509_crt_t crt, - const char *url, unsigned int flags +int gnutls_x509_crt_import_url(gnutls_x509_crt_t crt, const char *url, + unsigned int flags /* GNUTLS_PKCS11_OBJ_FLAG_* */ - ); +); -int -gnutls_x509_crt_list_import_url(gnutls_x509_crt_t ** certs, - unsigned int *size, - const char *url, - gnutls_pin_callback_t pin_fn, - void *pin_fn_userdata, unsigned int flags); +int gnutls_x509_crt_list_import_url(gnutls_x509_crt_t **certs, + unsigned int *size, const char *url, + gnutls_pin_callback_t pin_fn, + void *pin_fn_userdata, unsigned int flags); -int gnutls_x509_crt_export(gnutls_x509_crt_t cert, - gnutls_x509_crt_fmt_t format, +int gnutls_x509_crt_export(gnutls_x509_crt_t cert, gnutls_x509_crt_fmt_t format, void *output_data, size_t *output_data_size); int gnutls_x509_crt_export2(gnutls_x509_crt_t cert, - gnutls_x509_crt_fmt_t format, gnutls_datum_t * out); -int gnutls_x509_crt_get_private_key_usage_period(gnutls_x509_crt_t - cert, - time_t * - activation, - time_t * - expiration, unsigned int - *critical); - -int gnutls_x509_crt_get_issuer_dn(gnutls_x509_crt_t cert, - char *buf, size_t *buf_size); -int gnutls_x509_crt_get_issuer_dn2(gnutls_x509_crt_t cert, gnutls_datum_t * dn); -int gnutls_x509_crt_get_issuer_dn3(gnutls_x509_crt_t cert, - gnutls_datum_t * dn, unsigned flags); -int gnutls_x509_crt_get_issuer_dn_oid(gnutls_x509_crt_t cert, - unsigned indx, void *oid, - size_t *oid_size); + gnutls_x509_crt_fmt_t format, gnutls_datum_t *out); +int gnutls_x509_crt_get_private_key_usage_period(gnutls_x509_crt_t cert, + time_t *activation, + time_t *expiration, + unsigned int *critical); + +int gnutls_x509_crt_get_issuer_dn(gnutls_x509_crt_t cert, char *buf, + size_t *buf_size); +int gnutls_x509_crt_get_issuer_dn2(gnutls_x509_crt_t cert, gnutls_datum_t *dn); +int gnutls_x509_crt_get_issuer_dn3(gnutls_x509_crt_t cert, gnutls_datum_t *dn, + unsigned flags); +int gnutls_x509_crt_get_issuer_dn_oid(gnutls_x509_crt_t cert, unsigned indx, + void *oid, size_t *oid_size); int gnutls_x509_crt_get_issuer_dn_by_oid(gnutls_x509_crt_t cert, const char *oid, unsigned indx, - unsigned int raw_flag, - void *buf, size_t *buf_size); + unsigned int raw_flag, void *buf, + size_t *buf_size); int gnutls_x509_crt_get_dn(gnutls_x509_crt_t cert, char *buf, size_t *buf_size); -int gnutls_x509_crt_get_dn2(gnutls_x509_crt_t cert, gnutls_datum_t * dn); -int gnutls_x509_crt_get_dn3(gnutls_x509_crt_t cert, gnutls_datum_t * dn, +int gnutls_x509_crt_get_dn2(gnutls_x509_crt_t cert, gnutls_datum_t *dn); +int gnutls_x509_crt_get_dn3(gnutls_x509_crt_t cert, gnutls_datum_t *dn, unsigned flags); -int gnutls_x509_crt_get_dn_oid(gnutls_x509_crt_t cert, unsigned indx, - void *oid, size_t *oid_size); -int gnutls_x509_crt_get_dn_by_oid(gnutls_x509_crt_t cert, - const char *oid, unsigned indx, - unsigned int raw_flag, void *buf, - size_t *buf_size); +int gnutls_x509_crt_get_dn_oid(gnutls_x509_crt_t cert, unsigned indx, void *oid, + size_t *oid_size); +int gnutls_x509_crt_get_dn_by_oid(gnutls_x509_crt_t cert, const char *oid, + unsigned indx, unsigned int raw_flag, + void *buf, size_t *buf_size); unsigned gnutls_x509_crt_check_hostname(gnutls_x509_crt_t cert, const char *hostname); unsigned gnutls_x509_crt_check_hostname2(gnutls_x509_crt_t cert, @@ -222,14 +212,13 @@ unsigned gnutls_x509_crt_check_hostname2(gnutls_x509_crt_t cert, unsigned gnutls_x509_crt_check_email(gnutls_x509_crt_t cert, const char *email, unsigned int flags); -unsigned -gnutls_x509_crt_check_ip(gnutls_x509_crt_t cert, - const unsigned char *ip, unsigned int ip_size, - unsigned int flags); +unsigned gnutls_x509_crt_check_ip(gnutls_x509_crt_t cert, + const unsigned char *ip, unsigned int ip_size, + unsigned int flags); int gnutls_x509_crt_get_signature_algorithm(gnutls_x509_crt_t cert); -int gnutls_x509_crt_get_signature(gnutls_x509_crt_t cert, - char *sig, size_t *sizeof_sig); +int gnutls_x509_crt_get_signature(gnutls_x509_crt_t cert, char *sig, + size_t *sizeof_sig); int gnutls_x509_crt_get_version(gnutls_x509_crt_t cert); int gnutls_x509_crt_get_pk_oid(gnutls_x509_crt_t cert, char *oid, @@ -253,47 +242,37 @@ typedef enum { GNUTLS_KEYID_USE_SHA512 = (1 << 1), GNUTLS_KEYID_USE_BEST_KNOWN = (1 << 30) } gnutls_keyid_flags_t; -int gnutls_x509_crt_get_key_id(gnutls_x509_crt_t crt, - unsigned int flags, +int gnutls_x509_crt_get_key_id(gnutls_x509_crt_t crt, unsigned int flags, unsigned char *output_data, size_t *output_data_size); -int gnutls_x509_crt_set_private_key_usage_period(gnutls_x509_crt_t - crt, +int gnutls_x509_crt_set_private_key_usage_period(gnutls_x509_crt_t crt, time_t activation, time_t expiration); -int gnutls_x509_crt_set_authority_key_id(gnutls_x509_crt_t cert, - const void *id, size_t id_size); -int gnutls_x509_crt_get_authority_key_id(gnutls_x509_crt_t cert, - void *id, +int gnutls_x509_crt_set_authority_key_id(gnutls_x509_crt_t cert, const void *id, + size_t id_size); +int gnutls_x509_crt_get_authority_key_id(gnutls_x509_crt_t cert, void *id, size_t *id_size, unsigned int *critical); -int gnutls_x509_crt_get_authority_key_gn_serial(gnutls_x509_crt_t - cert, - unsigned int seq, - void *alt, - size_t *alt_size, unsigned int - *alt_type, - void *serial, - size_t *serial_size, - unsigned int - *critical); - -int gnutls_x509_crt_get_subject_key_id(gnutls_x509_crt_t cert, - void *ret, +int gnutls_x509_crt_get_authority_key_gn_serial( + gnutls_x509_crt_t cert, unsigned int seq, void *alt, size_t *alt_size, + unsigned int *alt_type, void *serial, size_t *serial_size, + unsigned int *critical); + +int gnutls_x509_crt_get_subject_key_id(gnutls_x509_crt_t cert, void *ret, size_t *ret_size, unsigned int *critical); -int gnutls_x509_crt_get_subject_unique_id(gnutls_x509_crt_t crt, - char *buf, size_t *buf_size); +int gnutls_x509_crt_get_subject_unique_id(gnutls_x509_crt_t crt, char *buf, + size_t *buf_size); -int gnutls_x509_crt_get_issuer_unique_id(gnutls_x509_crt_t crt, - char *buf, size_t *buf_size); +int gnutls_x509_crt_get_issuer_unique_id(gnutls_x509_crt_t crt, char *buf, + size_t *buf_size); void gnutls_x509_crt_set_pin_function(gnutls_x509_crt_t crt, gnutls_pin_callback_t fn, void *userdata); - /** +/** * gnutls_info_access_what_t: * @GNUTLS_IA_ACCESSMETHOD_OID: Get accessMethod OID. * @GNUTLS_IA_ACCESSLOCATION_GENERALNAME_TYPE: Get accessLocation name type. @@ -315,57 +294,50 @@ typedef enum gnutls_info_access_what_t { GNUTLS_IA_CAISSUERS_URI = 10106 } gnutls_info_access_what_t; -int gnutls_x509_crt_get_authority_info_access(gnutls_x509_crt_t - crt, - unsigned int seq, - int what, - gnutls_datum_t * - data, unsigned int - *critical); +int gnutls_x509_crt_get_authority_info_access(gnutls_x509_crt_t crt, + unsigned int seq, int what, + gnutls_datum_t *data, + unsigned int *critical); typedef struct gnutls_name_constraints_st *gnutls_x509_name_constraints_t; unsigned gnutls_x509_name_constraints_check(gnutls_x509_name_constraints_t nc, gnutls_x509_subject_alt_name_t type, - const gnutls_datum_t * name); -unsigned gnutls_x509_name_constraints_check_crt(gnutls_x509_name_constraints_t - nc, - gnutls_x509_subject_alt_name_t - type, gnutls_x509_crt_t crt); + const gnutls_datum_t *name); +unsigned +gnutls_x509_name_constraints_check_crt(gnutls_x509_name_constraints_t nc, + gnutls_x509_subject_alt_name_t type, + gnutls_x509_crt_t crt); -int gnutls_x509_name_constraints_init(gnutls_x509_name_constraints_t * nc); +int gnutls_x509_name_constraints_init(gnutls_x509_name_constraints_t *nc); void gnutls_x509_name_constraints_deinit(gnutls_x509_name_constraints_t nc); -# define GNUTLS_EXT_FLAG_APPEND 1 +#define GNUTLS_EXT_FLAG_APPEND 1 -# define GNUTLS_NAME_CONSTRAINTS_FLAG_APPEND GNUTLS_EXT_FLAG_APPEND +#define GNUTLS_NAME_CONSTRAINTS_FLAG_APPEND GNUTLS_EXT_FLAG_APPEND int gnutls_x509_crt_get_name_constraints(gnutls_x509_crt_t crt, gnutls_x509_name_constraints_t nc, unsigned int flags, unsigned int *critical); -int gnutls_x509_name_constraints_add_permitted(gnutls_x509_name_constraints_t - nc, - gnutls_x509_subject_alt_name_t - type, - const gnutls_datum_t * name); -int gnutls_x509_name_constraints_add_excluded(gnutls_x509_name_constraints_t nc, - gnutls_x509_subject_alt_name_t - type, - const gnutls_datum_t * name); +int gnutls_x509_name_constraints_add_permitted( + gnutls_x509_name_constraints_t nc, gnutls_x509_subject_alt_name_t type, + const gnutls_datum_t *name); +int gnutls_x509_name_constraints_add_excluded( + gnutls_x509_name_constraints_t nc, gnutls_x509_subject_alt_name_t type, + const gnutls_datum_t *name); int gnutls_x509_crt_set_name_constraints(gnutls_x509_crt_t crt, gnutls_x509_name_constraints_t nc, unsigned int critical); -int gnutls_x509_name_constraints_get_permitted(gnutls_x509_name_constraints_t - nc, unsigned idx, unsigned *type, - gnutls_datum_t * name); +int gnutls_x509_name_constraints_get_permitted(gnutls_x509_name_constraints_t nc, + unsigned idx, unsigned *type, + gnutls_datum_t *name); int gnutls_x509_name_constraints_get_excluded(gnutls_x509_name_constraints_t nc, unsigned idx, unsigned *type, - gnutls_datum_t * name); -int gnutls_x509_cidr_to_rfc5280(const char *cidr, - gnutls_datum_t * cidr_rfc5280); + gnutls_datum_t *name); +int gnutls_x509_cidr_to_rfc5280(const char *cidr, gnutls_datum_t *cidr_rfc5280); -# define GNUTLS_CRL_REASON_SUPERSEEDED GNUTLS_CRL_REASON_SUPERSEDED, - /** +#define GNUTLS_CRL_REASON_SUPERSEEDED GNUTLS_CRL_REASON_SUPERSEDED, +/** * gnutls_x509_crl_reason_flags_t: * @GNUTLS_CRL_REASON_PRIVILEGE_WITHDRAWN: The privileges were withdrawn from the owner. * @GNUTLS_CRL_REASON_CERTIFICATE_HOLD: The certificate is on hold. @@ -393,49 +365,45 @@ typedef enum gnutls_x509_crl_reason_flags_t { } gnutls_x509_crl_reason_flags_t; int gnutls_x509_crt_get_crl_dist_points(gnutls_x509_crt_t cert, - unsigned int seq, - void *ret, + unsigned int seq, void *ret, size_t *ret_size, unsigned int *reason_flags, unsigned int *critical); int gnutls_x509_crt_set_crl_dist_points2(gnutls_x509_crt_t crt, - gnutls_x509_subject_alt_name_t - type, const void *data, + gnutls_x509_subject_alt_name_t type, + const void *data, unsigned int data_size, unsigned int reason_flags); int gnutls_x509_crt_set_crl_dist_points(gnutls_x509_crt_t crt, - gnutls_x509_subject_alt_name_t - type, + gnutls_x509_subject_alt_name_t type, const void *data_string, unsigned int reason_flags); int gnutls_x509_crt_cpy_crl_dist_points(gnutls_x509_crt_t dst, gnutls_x509_crt_t src); -int gnutls_x509_crl_sign(gnutls_x509_crl_t crl, - gnutls_x509_crt_t issuer, +int gnutls_x509_crl_sign(gnutls_x509_crl_t crl, gnutls_x509_crt_t issuer, gnutls_x509_privkey_t issuer_key); -int gnutls_x509_crl_sign2(gnutls_x509_crl_t crl, - gnutls_x509_crt_t issuer, +int gnutls_x509_crl_sign2(gnutls_x509_crl_t crl, gnutls_x509_crt_t issuer, gnutls_x509_privkey_t issuer_key, gnutls_digest_algorithm_t dig, unsigned int flags); time_t gnutls_x509_crt_get_activation_time(gnutls_x509_crt_t cert); /* This macro is deprecated and defunc; do not use */ -# define GNUTLS_X509_NO_WELL_DEFINED_EXPIRATION ((time_t)4294197631) +#define GNUTLS_X509_NO_WELL_DEFINED_EXPIRATION ((time_t)4294197631) time_t gnutls_x509_crt_get_expiration_time(gnutls_x509_crt_t cert); -int gnutls_x509_crt_get_serial(gnutls_x509_crt_t cert, - void *result, size_t *result_size); +int gnutls_x509_crt_get_serial(gnutls_x509_crt_t cert, void *result, + size_t *result_size); typedef struct gnutls_x509_spki_st *gnutls_x509_spki_t; -int gnutls_x509_spki_init(gnutls_x509_spki_t * spki); +int gnutls_x509_spki_init(gnutls_x509_spki_t *spki); void gnutls_x509_spki_deinit(gnutls_x509_spki_t spki); int gnutls_x509_spki_get_rsa_pss_params(gnutls_x509_spki_t spki, - gnutls_digest_algorithm_t * dig, + gnutls_digest_algorithm_t *dig, unsigned int *salt_size); void gnutls_x509_spki_set_rsa_pss_params(gnutls_x509_spki_t spki, @@ -449,54 +417,47 @@ int gnutls_x509_crt_set_spki(gnutls_x509_crt_t crt, int gnutls_x509_crt_get_spki(gnutls_x509_crt_t cert, gnutls_x509_spki_t spki, unsigned int flags); -int gnutls_x509_crt_get_pk_rsa_raw(gnutls_x509_crt_t crt, - gnutls_datum_t * m, gnutls_datum_t * e); -int gnutls_x509_crt_get_pk_dsa_raw(gnutls_x509_crt_t crt, - gnutls_datum_t * p, - gnutls_datum_t * q, - gnutls_datum_t * g, gnutls_datum_t * y); +int gnutls_x509_crt_get_pk_rsa_raw(gnutls_x509_crt_t crt, gnutls_datum_t *m, + gnutls_datum_t *e); +int gnutls_x509_crt_get_pk_dsa_raw(gnutls_x509_crt_t crt, gnutls_datum_t *p, + gnutls_datum_t *q, gnutls_datum_t *g, + gnutls_datum_t *y); int gnutls_x509_crt_get_pk_ecc_raw(gnutls_x509_crt_t crt, - gnutls_ecc_curve_t * curve, - gnutls_datum_t * x, gnutls_datum_t * y); + gnutls_ecc_curve_t *curve, gnutls_datum_t *x, + gnutls_datum_t *y); int gnutls_x509_crt_get_pk_gost_raw(gnutls_x509_crt_t crt, - gnutls_ecc_curve_t * curve, - gnutls_digest_algorithm_t * digest, - gnutls_gost_paramset_t * paramset, - gnutls_datum_t * x, gnutls_datum_t * y); + gnutls_ecc_curve_t *curve, + gnutls_digest_algorithm_t *digest, + gnutls_gost_paramset_t *paramset, + gnutls_datum_t *x, gnutls_datum_t *y); int gnutls_x509_crt_get_subject_alt_name(gnutls_x509_crt_t cert, - unsigned int seq, - void *san, + unsigned int seq, void *san, size_t *san_size, unsigned int *critical); int gnutls_x509_crt_get_subject_alt_name2(gnutls_x509_crt_t cert, - unsigned int seq, - void *san, + unsigned int seq, void *san, size_t *san_size, unsigned int *san_type, unsigned int *critical); -int gnutls_x509_crt_get_subject_alt_othername_oid(gnutls_x509_crt_t - cert, - unsigned int seq, - void *oid, size_t *oid_size); +int gnutls_x509_crt_get_subject_alt_othername_oid(gnutls_x509_crt_t cert, + unsigned int seq, void *oid, + size_t *oid_size); int gnutls_x509_crt_get_issuer_alt_name(gnutls_x509_crt_t cert, - unsigned int seq, - void *ian, + unsigned int seq, void *ian, size_t *ian_size, unsigned int *critical); int gnutls_x509_crt_get_issuer_alt_name2(gnutls_x509_crt_t cert, - unsigned int seq, - void *ian, + unsigned int seq, void *ian, size_t *ian_size, unsigned int *ian_type, unsigned int *critical); -int gnutls_x509_crt_get_issuer_alt_othername_oid(gnutls_x509_crt_t - cert, - unsigned int seq, - void *ret, size_t *ret_size); +int gnutls_x509_crt_get_issuer_alt_othername_oid(gnutls_x509_crt_t cert, + unsigned int seq, void *ret, + size_t *ret_size); int gnutls_x509_crt_get_ca_status(gnutls_x509_crt_t cert, unsigned int *critical); @@ -511,26 +472,22 @@ int gnutls_x509_crt_get_key_usage(gnutls_x509_crt_t cert, unsigned int *key_usage, unsigned int *critical); int gnutls_x509_crt_set_key_usage(gnutls_x509_crt_t crt, unsigned int usage); -int gnutls_x509_crt_set_authority_info_access(gnutls_x509_crt_t - crt, int what, - gnutls_datum_t * data); +int gnutls_x509_crt_set_authority_info_access(gnutls_x509_crt_t crt, int what, + gnutls_datum_t *data); int gnutls_x509_crt_get_inhibit_anypolicy(gnutls_x509_crt_t cert, unsigned int *skipcerts, unsigned int *critical); -int -gnutls_x509_crt_set_inhibit_anypolicy(gnutls_x509_crt_t crt, - unsigned int skipcerts); - -int gnutls_x509_crt_get_proxy(gnutls_x509_crt_t cert, - unsigned int *critical, - int *pathlen, - char **policyLanguage, +int gnutls_x509_crt_set_inhibit_anypolicy(gnutls_x509_crt_t crt, + unsigned int skipcerts); + +int gnutls_x509_crt_get_proxy(gnutls_x509_crt_t cert, unsigned int *critical, + int *pathlen, char **policyLanguage, char **policy, size_t *sizeof_policy); typedef struct gnutls_x509_tlsfeatures_st *gnutls_x509_tlsfeatures_t; -int gnutls_x509_tlsfeatures_init(gnutls_x509_tlsfeatures_t * features); +int gnutls_x509_tlsfeatures_init(gnutls_x509_tlsfeatures_t *features); void gnutls_x509_tlsfeatures_deinit(gnutls_x509_tlsfeatures_t); int gnutls_x509_tlsfeatures_get(gnutls_x509_tlsfeatures_t f, unsigned idx, unsigned int *feature); @@ -545,9 +502,9 @@ int gnutls_x509_crt_get_tlsfeatures(gnutls_x509_crt_t cert, unsigned gnutls_x509_tlsfeatures_check_crt(gnutls_x509_tlsfeatures_t feat, gnutls_x509_crt_t crt); -# define GNUTLS_MAX_QUALIFIERS 8 +#define GNUTLS_MAX_QUALIFIERS 8 - /** +/** * gnutls_x509_qualifier_t: * @GNUTLS_X509_QUALIFIER_UNKNOWN: Unknown qualifier. * @GNUTLS_X509_QUALIFIER_URI: A URL @@ -556,7 +513,8 @@ unsigned gnutls_x509_tlsfeatures_check_crt(gnutls_x509_tlsfeatures_t feat, * Enumeration of types for the X.509 qualifiers, of the certificate policy extension. */ typedef enum gnutls_x509_qualifier_t { - GNUTLS_X509_QUALIFIER_UNKNOWN = 0, GNUTLS_X509_QUALIFIER_URI, + GNUTLS_X509_QUALIFIER_UNKNOWN = 0, + GNUTLS_X509_QUALIFIER_URI, GNUTLS_X509_QUALIFIER_NOTICE } gnutls_x509_qualifier_t; @@ -570,51 +528,44 @@ typedef struct gnutls_x509_policy_st { } qualifier[GNUTLS_MAX_QUALIFIERS]; } gnutls_x509_policy_st; -void gnutls_x509_policy_release(struct gnutls_x509_policy_st - *policy); -int gnutls_x509_crt_get_policy(gnutls_x509_crt_t crt, unsigned indx, struct gnutls_x509_policy_st - *policy, unsigned int *critical); -int gnutls_x509_crt_set_policy(gnutls_x509_crt_t crt, const struct gnutls_x509_policy_st - *policy, unsigned int critical); +void gnutls_x509_policy_release(struct gnutls_x509_policy_st *policy); +int gnutls_x509_crt_get_policy(gnutls_x509_crt_t crt, unsigned indx, + struct gnutls_x509_policy_st *policy, + unsigned int *critical); +int gnutls_x509_crt_set_policy(gnutls_x509_crt_t crt, + const struct gnutls_x509_policy_st *policy, + unsigned int critical); int gnutls_x509_dn_oid_known(const char *oid); -# define GNUTLS_X509_DN_OID_RETURN_OID 1 +#define GNUTLS_X509_DN_OID_RETURN_OID 1 const char *gnutls_x509_dn_oid_name(const char *oid, unsigned int flags); - /* Read extensions by OID. */ -int gnutls_x509_crt_get_extension_oid(gnutls_x509_crt_t cert, - unsigned indx, void *oid, - size_t *oid_size); +/* Read extensions by OID. */ +int gnutls_x509_crt_get_extension_oid(gnutls_x509_crt_t cert, unsigned indx, + void *oid, size_t *oid_size); int gnutls_x509_crt_get_extension_by_oid(gnutls_x509_crt_t cert, const char *oid, unsigned indx, - void *buf, - size_t *buf_size, + void *buf, size_t *buf_size, unsigned int *critical); int gnutls_x509_crq_get_signature_algorithm(gnutls_x509_crq_t crq); -int -gnutls_x509_crq_get_extension_by_oid2(gnutls_x509_crq_t crq, - const char *oid, unsigned indx, - gnutls_datum_t * output, - unsigned int *critical); - - /* Read extensions by sequence number. */ -int gnutls_x509_crt_get_extension_info(gnutls_x509_crt_t cert, - unsigned indx, void *oid, - size_t *oid_size, +int gnutls_x509_crq_get_extension_by_oid2(gnutls_x509_crq_t crq, + const char *oid, unsigned indx, + gnutls_datum_t *output, + unsigned int *critical); + +/* Read extensions by sequence number. */ +int gnutls_x509_crt_get_extension_info(gnutls_x509_crt_t cert, unsigned indx, + void *oid, size_t *oid_size, unsigned int *critical); -int gnutls_x509_crt_get_extension_data(gnutls_x509_crt_t cert, - unsigned indx, void *data, - size_t *sizeof_data); -int -gnutls_x509_crt_get_extension_data2(gnutls_x509_crt_t cert, - unsigned indx, gnutls_datum_t * data); - -int gnutls_x509_crt_set_extension_by_oid(gnutls_x509_crt_t crt, - const char *oid, - const void *buf, - size_t sizeof_buf, +int gnutls_x509_crt_get_extension_data(gnutls_x509_crt_t cert, unsigned indx, + void *data, size_t *sizeof_data); +int gnutls_x509_crt_get_extension_data2(gnutls_x509_crt_t cert, unsigned indx, + gnutls_datum_t *data); + +int gnutls_x509_crt_set_extension_by_oid(gnutls_x509_crt_t crt, const char *oid, + const void *buf, size_t sizeof_buf, unsigned int critical); /* X.509 Certificate writing. @@ -622,17 +573,15 @@ int gnutls_x509_crt_set_extension_by_oid(gnutls_x509_crt_t crt, int gnutls_x509_crt_set_dn(gnutls_x509_crt_t crt, const char *dn, const char **err); -int gnutls_x509_crt_set_dn_by_oid(gnutls_x509_crt_t crt, - const char *oid, - unsigned int raw_flag, - const void *name, unsigned int sizeof_name); -int gnutls_x509_crt_set_issuer_dn_by_oid(gnutls_x509_crt_t crt, - const char *oid, +int gnutls_x509_crt_set_dn_by_oid(gnutls_x509_crt_t crt, const char *oid, + unsigned int raw_flag, const void *name, + unsigned int sizeof_name); +int gnutls_x509_crt_set_issuer_dn_by_oid(gnutls_x509_crt_t crt, const char *oid, unsigned int raw_flag, const void *name, unsigned int sizeof_name); -int gnutls_x509_crt_set_issuer_dn(gnutls_x509_crt_t crt, - const char *dn, const char **err); +int gnutls_x509_crt_set_issuer_dn(gnutls_x509_crt_t crt, const char *dn, + const char **err); int gnutls_x509_crt_set_version(gnutls_x509_crt_t crt, unsigned int version); int gnutls_x509_crt_set_key(gnutls_x509_crt_t crt, gnutls_x509_privkey_t key); @@ -641,97 +590,83 @@ int gnutls_x509_crt_set_basic_constraints(gnutls_x509_crt_t crt, unsigned int ca, int pathLenConstraint); -int -gnutls_x509_crt_set_subject_unique_id(gnutls_x509_crt_t cert, const void *id, - size_t id_size); -int -gnutls_x509_crt_set_issuer_unique_id(gnutls_x509_crt_t cert, const void *id, - size_t id_size); - -int gnutls_x509_crt_set_subject_alternative_name(gnutls_x509_crt_t - crt, - gnutls_x509_subject_alt_name_t - type, const char - *data_string); +int gnutls_x509_crt_set_subject_unique_id(gnutls_x509_crt_t cert, + const void *id, size_t id_size); +int gnutls_x509_crt_set_issuer_unique_id(gnutls_x509_crt_t cert, const void *id, + size_t id_size); + +int gnutls_x509_crt_set_subject_alternative_name( + gnutls_x509_crt_t crt, gnutls_x509_subject_alt_name_t type, + const char *data_string); int gnutls_x509_crt_set_subject_alt_name(gnutls_x509_crt_t crt, - gnutls_x509_subject_alt_name_t - type, const void *data, + gnutls_x509_subject_alt_name_t type, + const void *data, unsigned int data_size, unsigned int flags); -int -gnutls_x509_crt_set_subject_alt_othername(gnutls_x509_crt_t crt, - const char *oid, - const void *data, - unsigned int data_size, - unsigned int flags); +int gnutls_x509_crt_set_subject_alt_othername(gnutls_x509_crt_t crt, + const char *oid, const void *data, + unsigned int data_size, + unsigned int flags); int gnutls_x509_crt_set_issuer_alt_name(gnutls_x509_crt_t crt, - gnutls_x509_subject_alt_name_t - type, const void *data, + gnutls_x509_subject_alt_name_t type, + const void *data, unsigned int data_size, unsigned int flags); -int -gnutls_x509_crt_set_issuer_alt_othername(gnutls_x509_crt_t crt, - const char *oid, - const void *data, - unsigned int data_size, - unsigned int flags); +int gnutls_x509_crt_set_issuer_alt_othername(gnutls_x509_crt_t crt, + const char *oid, const void *data, + unsigned int data_size, + unsigned int flags); -int gnutls_x509_crt_sign(gnutls_x509_crt_t crt, - gnutls_x509_crt_t issuer, +int gnutls_x509_crt_sign(gnutls_x509_crt_t crt, gnutls_x509_crt_t issuer, gnutls_x509_privkey_t issuer_key); -int gnutls_x509_crt_sign2(gnutls_x509_crt_t crt, - gnutls_x509_crt_t issuer, +int gnutls_x509_crt_sign2(gnutls_x509_crt_t crt, gnutls_x509_crt_t issuer, gnutls_x509_privkey_t issuer_key, gnutls_digest_algorithm_t dig, unsigned int flags); int gnutls_x509_crt_set_activation_time(gnutls_x509_crt_t cert, time_t act_time); int gnutls_x509_crt_set_expiration_time(gnutls_x509_crt_t cert, time_t exp_time); -int gnutls_x509_crt_set_serial(gnutls_x509_crt_t cert, - const void *serial, size_t serial_size); +int gnutls_x509_crt_set_serial(gnutls_x509_crt_t cert, const void *serial, + size_t serial_size); -int gnutls_x509_crt_set_subject_key_id(gnutls_x509_crt_t cert, - const void *id, size_t id_size); +int gnutls_x509_crt_set_subject_key_id(gnutls_x509_crt_t cert, const void *id, + size_t id_size); -int gnutls_x509_crt_set_proxy_dn(gnutls_x509_crt_t crt, - gnutls_x509_crt_t eecrt, - unsigned int raw_flag, - const void *name, unsigned int sizeof_name); -int gnutls_x509_crt_set_proxy(gnutls_x509_crt_t crt, - int pathLenConstraint, - const char *policyLanguage, - const char *policy, size_t sizeof_policy); +int gnutls_x509_crt_set_proxy_dn(gnutls_x509_crt_t crt, gnutls_x509_crt_t eecrt, + unsigned int raw_flag, const void *name, + unsigned int sizeof_name); +int gnutls_x509_crt_set_proxy(gnutls_x509_crt_t crt, int pathLenConstraint, + const char *policyLanguage, const char *policy, + size_t sizeof_policy); int gnutls_x509_crt_print(gnutls_x509_crt_t cert, - gnutls_certificate_print_formats_t - format, gnutls_datum_t * out); + gnutls_certificate_print_formats_t format, + gnutls_datum_t *out); int gnutls_x509_crl_print(gnutls_x509_crl_t crl, - gnutls_certificate_print_formats_t - format, gnutls_datum_t * out); + gnutls_certificate_print_formats_t format, + gnutls_datum_t *out); - /* Access to internal Certificate fields. +/* Access to internal Certificate fields. */ int gnutls_x509_crt_get_raw_issuer_dn(gnutls_x509_crt_t cert, - gnutls_datum_t * start); -int gnutls_x509_crt_get_raw_dn(gnutls_x509_crt_t cert, gnutls_datum_t * start); + gnutls_datum_t *start); +int gnutls_x509_crt_get_raw_dn(gnutls_x509_crt_t cert, gnutls_datum_t *start); /* RDN handling. */ -int gnutls_x509_rdn_get(const gnutls_datum_t * idn, - char *buf, size_t *sizeof_buf); -int -gnutls_x509_rdn_get2(const gnutls_datum_t * idn, - gnutls_datum_t * str, unsigned flags); - -int gnutls_x509_rdn_get_oid(const gnutls_datum_t * idn, - unsigned indx, void *buf, size_t *sizeof_buf); - -int gnutls_x509_rdn_get_by_oid(const gnutls_datum_t * idn, - const char *oid, unsigned indx, - unsigned int raw_flag, void *buf, +int gnutls_x509_rdn_get(const gnutls_datum_t *idn, char *buf, + size_t *sizeof_buf); +int gnutls_x509_rdn_get2(const gnutls_datum_t *idn, gnutls_datum_t *str, + unsigned flags); + +int gnutls_x509_rdn_get_oid(const gnutls_datum_t *idn, unsigned indx, void *buf, + size_t *sizeof_buf); + +int gnutls_x509_rdn_get_by_oid(const gnutls_datum_t *idn, const char *oid, + unsigned indx, unsigned int raw_flag, void *buf, size_t *sizeof_buf); typedef struct gnutls_x509_dn_st *gnutls_x509_dn_t; @@ -742,65 +677,61 @@ typedef struct gnutls_x509_ava_st { unsigned long value_tag; } gnutls_x509_ava_st; -int gnutls_x509_crt_get_subject(gnutls_x509_crt_t cert, gnutls_x509_dn_t * dn); -int gnutls_x509_crt_get_issuer(gnutls_x509_crt_t cert, gnutls_x509_dn_t * dn); -int gnutls_x509_dn_get_rdn_ava(gnutls_x509_dn_t dn, int irdn, - int iava, gnutls_x509_ava_st * ava); +int gnutls_x509_crt_get_subject(gnutls_x509_crt_t cert, gnutls_x509_dn_t *dn); +int gnutls_x509_crt_get_issuer(gnutls_x509_crt_t cert, gnutls_x509_dn_t *dn); +int gnutls_x509_dn_get_rdn_ava(gnutls_x509_dn_t dn, int irdn, int iava, + gnutls_x509_ava_st *ava); -int gnutls_x509_dn_get_str(gnutls_x509_dn_t dn, gnutls_datum_t * str); +int gnutls_x509_dn_get_str(gnutls_x509_dn_t dn, gnutls_datum_t *str); -# define GNUTLS_X509_DN_FLAG_COMPAT 1 -int gnutls_x509_dn_get_str2(gnutls_x509_dn_t dn, gnutls_datum_t * str, +#define GNUTLS_X509_DN_FLAG_COMPAT 1 +int gnutls_x509_dn_get_str2(gnutls_x509_dn_t dn, gnutls_datum_t *str, unsigned flags); -int -gnutls_x509_dn_set_str(gnutls_x509_dn_t dn, const char *str, const char **err); +int gnutls_x509_dn_set_str(gnutls_x509_dn_t dn, const char *str, + const char **err); -int gnutls_x509_dn_init(gnutls_x509_dn_t * dn); +int gnutls_x509_dn_init(gnutls_x509_dn_t *dn); -int gnutls_x509_dn_import(gnutls_x509_dn_t dn, const gnutls_datum_t * data); +int gnutls_x509_dn_import(gnutls_x509_dn_t dn, const gnutls_datum_t *data); -int gnutls_x509_dn_export(gnutls_x509_dn_t dn, - gnutls_x509_crt_fmt_t format, +int gnutls_x509_dn_export(gnutls_x509_dn_t dn, gnutls_x509_crt_fmt_t format, void *output_data, size_t *output_data_size); -int gnutls_x509_dn_export2(gnutls_x509_dn_t dn, - gnutls_x509_crt_fmt_t format, gnutls_datum_t * out); +int gnutls_x509_dn_export2(gnutls_x509_dn_t dn, gnutls_x509_crt_fmt_t format, + gnutls_datum_t *out); void gnutls_x509_dn_deinit(gnutls_x509_dn_t dn); /* CRL handling functions. */ -int gnutls_x509_crl_init(gnutls_x509_crl_t * crl); +int gnutls_x509_crl_init(gnutls_x509_crl_t *crl); void gnutls_x509_crl_deinit(gnutls_x509_crl_t crl); -int gnutls_x509_crl_import(gnutls_x509_crl_t crl, - const gnutls_datum_t * data, +int gnutls_x509_crl_import(gnutls_x509_crl_t crl, const gnutls_datum_t *data, gnutls_x509_crt_fmt_t format); -int gnutls_x509_crl_export(gnutls_x509_crl_t crl, - gnutls_x509_crt_fmt_t format, +int gnutls_x509_crl_export(gnutls_x509_crl_t crl, gnutls_x509_crt_fmt_t format, void *output_data, size_t *output_data_size); -int gnutls_x509_crl_export2(gnutls_x509_crl_t crl, - gnutls_x509_crt_fmt_t format, gnutls_datum_t * out); +int gnutls_x509_crl_export2(gnutls_x509_crl_t crl, gnutls_x509_crt_fmt_t format, + gnutls_datum_t *out); -int -gnutls_x509_crl_get_raw_issuer_dn(gnutls_x509_crl_t crl, gnutls_datum_t * dn); +int gnutls_x509_crl_get_raw_issuer_dn(gnutls_x509_crl_t crl, + gnutls_datum_t *dn); -int gnutls_x509_crl_get_issuer_dn(gnutls_x509_crl_t crl, - char *buf, size_t *sizeof_buf); -int gnutls_x509_crl_get_issuer_dn2(gnutls_x509_crl_t crl, gnutls_datum_t * dn); -int gnutls_x509_crl_get_issuer_dn3(gnutls_x509_crl_t crl, - gnutls_datum_t * dn, unsigned flags); +int gnutls_x509_crl_get_issuer_dn(gnutls_x509_crl_t crl, char *buf, + size_t *sizeof_buf); +int gnutls_x509_crl_get_issuer_dn2(gnutls_x509_crl_t crl, gnutls_datum_t *dn); +int gnutls_x509_crl_get_issuer_dn3(gnutls_x509_crl_t crl, gnutls_datum_t *dn, + unsigned flags); -int gnutls_x509_crl_get_issuer_dn_by_oid(gnutls_x509_crl_t crl, - const char *oid, unsigned indx, - unsigned int raw_flag, +int gnutls_x509_crl_get_issuer_dn_by_oid(gnutls_x509_crl_t crl, const char *oid, + unsigned indx, unsigned int raw_flag, void *buf, size_t *sizeof_buf); -int gnutls_x509_crl_get_dn_oid(gnutls_x509_crl_t crl, unsigned indx, - void *oid, size_t *sizeof_oid); +int gnutls_x509_crl_get_dn_oid(gnutls_x509_crl_t crl, unsigned indx, void *oid, + size_t *sizeof_oid); int gnutls_x509_crl_get_signature_algorithm(gnutls_x509_crl_t crl); -int gnutls_x509_crl_get_signature(gnutls_x509_crl_t crl, - char *sig, size_t *sizeof_sig); +int gnutls_x509_crl_get_signature(gnutls_x509_crl_t crl, char *sig, + size_t *sizeof_sig); int gnutls_x509_crl_get_version(gnutls_x509_crl_t crl); int gnutls_x509_crl_get_signature_oid(gnutls_x509_crl_t crl, char *oid, @@ -811,33 +742,31 @@ time_t gnutls_x509_crl_get_next_update(gnutls_x509_crl_t crl); int gnutls_x509_crl_get_crt_count(gnutls_x509_crl_t crl); int gnutls_x509_crl_get_crt_serial(gnutls_x509_crl_t crl, unsigned indx, - unsigned char *serial, - size_t *serial_size, time_t * t); + unsigned char *serial, size_t *serial_size, + time_t *t); typedef struct gnutls_x509_crl_iter *gnutls_x509_crl_iter_t; int gnutls_x509_crl_iter_crt_serial(gnutls_x509_crl_t crl, gnutls_x509_crl_iter_t *, - unsigned char *serial, - size_t *serial_size, time_t * t); + unsigned char *serial, size_t *serial_size, + time_t *t); void gnutls_x509_crl_iter_deinit(gnutls_x509_crl_iter_t); -# define gnutls_x509_crl_get_certificate_count gnutls_x509_crl_get_crt_count -# define gnutls_x509_crl_get_certificate gnutls_x509_crl_get_crt_serial +#define gnutls_x509_crl_get_certificate_count gnutls_x509_crl_get_crt_count +#define gnutls_x509_crl_get_certificate gnutls_x509_crl_get_crt_serial unsigned gnutls_x509_crl_check_issuer(gnutls_x509_crl_t crl, gnutls_x509_crt_t issuer); -int gnutls_x509_crl_list_import2(gnutls_x509_crl_t ** crls, - unsigned int *size, - const gnutls_datum_t * data, +int gnutls_x509_crl_list_import2(gnutls_x509_crl_t **crls, unsigned int *size, + const gnutls_datum_t *data, gnutls_x509_crt_fmt_t format, unsigned int flags); -int gnutls_x509_crl_list_import(gnutls_x509_crl_t * crls, - unsigned int *crl_max, - const gnutls_datum_t * data, +int gnutls_x509_crl_list_import(gnutls_x509_crl_t *crls, unsigned int *crl_max, + const gnutls_datum_t *data, gnutls_x509_crt_fmt_t format, unsigned int flags); /* CRL writing. @@ -845,51 +774,39 @@ int gnutls_x509_crl_list_import(gnutls_x509_crl_t * crls, int gnutls_x509_crl_set_version(gnutls_x509_crl_t crl, unsigned int version); int gnutls_x509_crl_set_this_update(gnutls_x509_crl_t crl, time_t act_time); int gnutls_x509_crl_set_next_update(gnutls_x509_crl_t crl, time_t exp_time); -int gnutls_x509_crl_set_crt_serial(gnutls_x509_crl_t crl, - const void *serial, +int gnutls_x509_crl_set_crt_serial(gnutls_x509_crl_t crl, const void *serial, size_t serial_size, time_t revocation_time); -int gnutls_x509_crl_set_crt(gnutls_x509_crl_t crl, - gnutls_x509_crt_t crt, time_t revocation_time); +int gnutls_x509_crl_set_crt(gnutls_x509_crl_t crl, gnutls_x509_crt_t crt, + time_t revocation_time); -int gnutls_x509_crl_get_authority_key_id(gnutls_x509_crl_t crl, - void *id, +int gnutls_x509_crl_get_authority_key_id(gnutls_x509_crl_t crl, void *id, size_t *id_size, unsigned int *critical); -int gnutls_x509_crl_get_authority_key_gn_serial(gnutls_x509_crl_t - crl, - unsigned int seq, - void *alt, - size_t *alt_size, unsigned int - *alt_type, - void *serial, - size_t *serial_size, - unsigned int - *critical); +int gnutls_x509_crl_get_authority_key_gn_serial( + gnutls_x509_crl_t crl, unsigned int seq, void *alt, size_t *alt_size, + unsigned int *alt_type, void *serial, size_t *serial_size, + unsigned int *critical); int gnutls_x509_crl_get_number(gnutls_x509_crl_t crl, void *ret, size_t *ret_size, unsigned int *critical); -int gnutls_x509_crl_get_extension_oid(gnutls_x509_crl_t crl, - unsigned indx, void *oid, - size_t *sizeof_oid); +int gnutls_x509_crl_get_extension_oid(gnutls_x509_crl_t crl, unsigned indx, + void *oid, size_t *sizeof_oid); -int gnutls_x509_crl_get_extension_info(gnutls_x509_crl_t crl, - unsigned indx, void *oid, - size_t *sizeof_oid, +int gnutls_x509_crl_get_extension_info(gnutls_x509_crl_t crl, unsigned indx, + void *oid, size_t *sizeof_oid, unsigned int *critical); -int gnutls_x509_crl_get_extension_data(gnutls_x509_crl_t crl, - unsigned indx, void *data, - size_t *sizeof_data); -int -gnutls_x509_crl_get_extension_data2(gnutls_x509_crl_t crl, - unsigned indx, gnutls_datum_t * data); +int gnutls_x509_crl_get_extension_data(gnutls_x509_crl_t crl, unsigned indx, + void *data, size_t *sizeof_data); +int gnutls_x509_crl_get_extension_data2(gnutls_x509_crl_t crl, unsigned indx, + gnutls_datum_t *data); -int gnutls_x509_crl_set_authority_key_id(gnutls_x509_crl_t crl, - const void *id, size_t id_size); +int gnutls_x509_crl_set_authority_key_id(gnutls_x509_crl_t crl, const void *id, + size_t id_size); -int gnutls_x509_crl_set_number(gnutls_x509_crl_t crl, - const void *nr, size_t nr_size); +int gnutls_x509_crl_set_number(gnutls_x509_crl_t crl, const void *nr, + size_t nr_size); /* X.509 Certificate verification functions. */ @@ -964,10 +881,11 @@ typedef enum gnutls_certificate_verify_flags { GNUTLS_VERIFY_IGNORE_UNKNOWN_CRIT_EXTENSIONS = 1 << 14, GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1 = 1 << 15, GNUTLS_VERIFY_RSA_PSS_FIXED_SALT_LENGTH = 1 << 16 - /* cannot exceed 2^24 due to GNUTLS_PROFILE_TO_VFLAGS() */ + /* cannot exceed 2^24 due to GNUTLS_PROFILE_TO_VFLAGS() */ } gnutls_certificate_verify_flags; -# define GNUTLS_VERIFY_ALLOW_BROKEN (GNUTLS_VERIFY_ALLOW_SIGN_RSA_MD2|GNUTLS_VERIFY_ALLOW_SIGN_RSA_MD5) +#define GNUTLS_VERIFY_ALLOW_BROKEN \ + (GNUTLS_VERIFY_ALLOW_SIGN_RSA_MD2 | GNUTLS_VERIFY_ALLOW_SIGN_RSA_MD5) /** * gnutls_certificate_verification_profiles_t: @@ -1005,65 +923,59 @@ typedef enum gnutls_certificate_verification_profiles_t { GNUTLS_PROFILE_SUITEB128 = 32, GNUTLS_PROFILE_SUITEB192 = 33 - /*GNUTLS_PROFILE_MAX=255 */ + /*GNUTLS_PROFILE_MAX=255 */ } gnutls_certificate_verification_profiles_t; -# define GNUTLS_PROFILE_TO_VFLAGS(x) \ - (((unsigned)x)<<24) +#define GNUTLS_PROFILE_TO_VFLAGS(x) (((unsigned)x) << 24) -# define GNUTLS_VFLAGS_PROFILE_MASK (0xff000000) +#define GNUTLS_VFLAGS_PROFILE_MASK (0xff000000) -# define GNUTLS_VFLAGS_TO_PROFILE(x) \ - ((((unsigned)x)>>24)&0xff) +#define GNUTLS_VFLAGS_TO_PROFILE(x) ((((unsigned)x) >> 24) & 0xff) -const char -*gnutls_certificate_verification_profile_get_name - (gnutls_certificate_verification_profiles_t id) __GNUTLS_CONST__; +const char *gnutls_certificate_verification_profile_get_name( + gnutls_certificate_verification_profiles_t id) __GNUTLS_CONST__; gnutls_certificate_verification_profiles_t gnutls_certificate_verification_profile_get_id(const char *name) -__GNUTLS_CONST__; + __GNUTLS_CONST__; unsigned gnutls_x509_crt_check_issuer(gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer); -int gnutls_x509_crt_list_verify(const gnutls_x509_crt_t * - cert_list, unsigned cert_list_length, - const gnutls_x509_crt_t * CA_list, +int gnutls_x509_crt_list_verify(const gnutls_x509_crt_t *cert_list, + unsigned cert_list_length, + const gnutls_x509_crt_t *CA_list, unsigned CA_list_length, - const gnutls_x509_crl_t * CRL_list, - unsigned CRL_list_length, - unsigned int flags, unsigned int *verify); + const gnutls_x509_crl_t *CRL_list, + unsigned CRL_list_length, unsigned int flags, + unsigned int *verify); int gnutls_x509_crt_verify(gnutls_x509_crt_t cert, - const gnutls_x509_crt_t * CA_list, + const gnutls_x509_crt_t *CA_list, unsigned CA_list_length, unsigned int flags, unsigned int *verify); int gnutls_x509_crl_verify(gnutls_x509_crl_t crl, - const gnutls_x509_crt_t * CA_list, + const gnutls_x509_crt_t *CA_list, unsigned CA_list_length, unsigned int flags, unsigned int *verify); -int -gnutls_x509_crt_verify_data2(gnutls_x509_crt_t crt, - gnutls_sign_algorithm_t algo, - unsigned int flags, - const gnutls_datum_t * data, - const gnutls_datum_t * signature); +int gnutls_x509_crt_verify_data2(gnutls_x509_crt_t crt, + gnutls_sign_algorithm_t algo, + unsigned int flags, const gnutls_datum_t *data, + const gnutls_datum_t *signature); int gnutls_x509_crt_check_revocation(gnutls_x509_crt_t cert, - const gnutls_x509_crl_t * - crl_list, unsigned crl_list_length); + const gnutls_x509_crl_t *crl_list, + unsigned crl_list_length); int gnutls_x509_crt_get_fingerprint(gnutls_x509_crt_t cert, - gnutls_digest_algorithm_t algo, - void *buf, size_t *buf_size); + gnutls_digest_algorithm_t algo, void *buf, + size_t *buf_size); -int gnutls_x509_crt_get_key_purpose_oid(gnutls_x509_crt_t cert, - unsigned indx, void *oid, - size_t *oid_size, +int gnutls_x509_crt_get_key_purpose_oid(gnutls_x509_crt_t cert, unsigned indx, + void *oid, size_t *oid_size, unsigned int *critical); -int gnutls_x509_crt_set_key_purpose_oid(gnutls_x509_crt_t cert, - const void *oid, unsigned int critical); +int gnutls_x509_crt_set_key_purpose_oid(gnutls_x509_crt_t cert, const void *oid, + unsigned int critical); unsigned gnutls_x509_crt_check_key_purpose(gnutls_x509_crt_t cert, const char *purpose, unsigned flags); @@ -1074,10 +986,10 @@ unsigned gnutls_x509_crt_check_key_purpose(gnutls_x509_crt_t cert, /* Flags for the gnutls_x509_privkey_export_pkcs8() function. */ -# define GNUTLS_PKCS8_PLAIN GNUTLS_PKCS_PLAIN -# define GNUTLS_PKCS8_USE_PKCS12_3DES GNUTLS_PKCS_PKCS12_3DES -# define GNUTLS_PKCS8_USE_PKCS12_ARCFOUR GNUTLS_PKCS_PKCS12_ARCFOUR -# define GNUTLS_PKCS8_USE_PKCS12_RC2_40 GNUTLS_PKCS_PKCS12_RC2_40 +#define GNUTLS_PKCS8_PLAIN GNUTLS_PKCS_PLAIN +#define GNUTLS_PKCS8_USE_PKCS12_3DES GNUTLS_PKCS_PKCS12_3DES +#define GNUTLS_PKCS8_USE_PKCS12_ARCFOUR GNUTLS_PKCS_PKCS12_ARCFOUR +#define GNUTLS_PKCS8_USE_PKCS12_RC2_40 GNUTLS_PKCS_PKCS12_RC2_40 /** * gnutls_pkcs_encrypt_flags_t: @@ -1119,25 +1031,25 @@ typedef enum gnutls_pkcs_encrypt_flags_t { GNUTLS_PKCS_PBES2_GOST_CPD = 1 << 15 } gnutls_pkcs_encrypt_flags_t; -# define GNUTLS_PKCS_CIPHER_MASK(x) ((x)&(~(GNUTLS_PKCS_NULL_PASSWORD))) - -# define GNUTLS_PKCS_USE_PKCS12_3DES GNUTLS_PKCS_PKCS12_3DES -# define GNUTLS_PKCS_USE_PKCS12_ARCFOUR GNUTLS_PKCS_PKCS12_ARCFOUR -# define GNUTLS_PKCS_USE_PKCS12_RC2_40 GNUTLS_PKCS_PKCS12_RC2_40 -# define GNUTLS_PKCS_USE_PBES2_3DES GNUTLS_PKCS_PBES2_3DES -# define GNUTLS_PKCS_USE_PBES2_AES_128 GNUTLS_PKCS_PBES2_AES_128 -# define GNUTLS_PKCS_USE_PBES2_AES_192 GNUTLS_PKCS_PBES2_AES_192 -# define GNUTLS_PKCS_USE_PBES2_AES_256 GNUTLS_PKCS_PBES2_AES_256 -# define GNUTLS_PKCS_USE_PBES2_GOST_TC26Z GNUTLS_PKCS_PBES2_GOST_TC26Z -# define GNUTLS_PKCS_USE_PBES2_GOST_CPA GNUTLS_PKCS_PBES2_GOST_CPA -# define GNUTLS_PKCS_USE_PBES2_GOST_CPB GNUTLS_PKCS_PBES2_GOST_CPB -# define GNUTLS_PKCS_USE_PBES2_GOST_CPC GNUTLS_PKCS_PBES2_GOST_CPC -# define GNUTLS_PKCS_USE_PBES2_GOST_CPD GNUTLS_PKCS_PBES2_GOST_CPD +#define GNUTLS_PKCS_CIPHER_MASK(x) ((x) & (~(GNUTLS_PKCS_NULL_PASSWORD))) + +#define GNUTLS_PKCS_USE_PKCS12_3DES GNUTLS_PKCS_PKCS12_3DES +#define GNUTLS_PKCS_USE_PKCS12_ARCFOUR GNUTLS_PKCS_PKCS12_ARCFOUR +#define GNUTLS_PKCS_USE_PKCS12_RC2_40 GNUTLS_PKCS_PKCS12_RC2_40 +#define GNUTLS_PKCS_USE_PBES2_3DES GNUTLS_PKCS_PBES2_3DES +#define GNUTLS_PKCS_USE_PBES2_AES_128 GNUTLS_PKCS_PBES2_AES_128 +#define GNUTLS_PKCS_USE_PBES2_AES_192 GNUTLS_PKCS_PBES2_AES_192 +#define GNUTLS_PKCS_USE_PBES2_AES_256 GNUTLS_PKCS_PBES2_AES_256 +#define GNUTLS_PKCS_USE_PBES2_GOST_TC26Z GNUTLS_PKCS_PBES2_GOST_TC26Z +#define GNUTLS_PKCS_USE_PBES2_GOST_CPA GNUTLS_PKCS_PBES2_GOST_CPA +#define GNUTLS_PKCS_USE_PBES2_GOST_CPB GNUTLS_PKCS_PBES2_GOST_CPB +#define GNUTLS_PKCS_USE_PBES2_GOST_CPC GNUTLS_PKCS_PBES2_GOST_CPC +#define GNUTLS_PKCS_USE_PBES2_GOST_CPD GNUTLS_PKCS_PBES2_GOST_CPD const char *gnutls_pkcs_schema_get_name(unsigned int schema); const char *gnutls_pkcs_schema_get_oid(unsigned int schema); -int gnutls_x509_privkey_init(gnutls_x509_privkey_t * key); +int gnutls_x509_privkey_init(gnutls_x509_privkey_t *key); void gnutls_x509_privkey_deinit(gnutls_x509_privkey_t key); gnutls_sec_param_t gnutls_x509_privkey_sec_param(gnutls_x509_privkey_t key); @@ -1148,78 +1060,73 @@ void gnutls_x509_privkey_set_pin_function(gnutls_x509_privkey_t key, int gnutls_x509_privkey_cpy(gnutls_x509_privkey_t dst, gnutls_x509_privkey_t src); int gnutls_x509_privkey_import(gnutls_x509_privkey_t key, - const gnutls_datum_t * data, + const gnutls_datum_t *data, gnutls_x509_crt_fmt_t format); int gnutls_x509_privkey_import_pkcs8(gnutls_x509_privkey_t key, - const gnutls_datum_t * data, + const gnutls_datum_t *data, gnutls_x509_crt_fmt_t format, const char *password, unsigned int flags); int gnutls_x509_privkey_import_openssl(gnutls_x509_privkey_t key, - const gnutls_datum_t * data, + const gnutls_datum_t *data, const char *password); -int -gnutls_pkcs8_info(const gnutls_datum_t * data, gnutls_x509_crt_fmt_t format, - unsigned int *schema, unsigned int *cipher, - void *salt, unsigned int *salt_size, - unsigned int *iter_count, char **oid); +int gnutls_pkcs8_info(const gnutls_datum_t *data, gnutls_x509_crt_fmt_t format, + unsigned int *schema, unsigned int *cipher, void *salt, + unsigned int *salt_size, unsigned int *iter_count, + char **oid); int gnutls_x509_privkey_import2(gnutls_x509_privkey_t key, - const gnutls_datum_t * data, + const gnutls_datum_t *data, gnutls_x509_crt_fmt_t format, const char *password, unsigned int flags); int gnutls_x509_privkey_import_rsa_raw(gnutls_x509_privkey_t key, - const gnutls_datum_t * m, - const gnutls_datum_t * e, - const gnutls_datum_t * d, - const gnutls_datum_t * p, - const gnutls_datum_t * q, - const gnutls_datum_t * u); -int gnutls_x509_privkey_import_rsa_raw2(gnutls_x509_privkey_t key, - const gnutls_datum_t * m, - const gnutls_datum_t * e, - const gnutls_datum_t * d, - const gnutls_datum_t * p, - const gnutls_datum_t * q, - const gnutls_datum_t * u, - const gnutls_datum_t * e1, - const gnutls_datum_t * e2); + const gnutls_datum_t *m, + const gnutls_datum_t *e, + const gnutls_datum_t *d, + const gnutls_datum_t *p, + const gnutls_datum_t *q, + const gnutls_datum_t *u); +int gnutls_x509_privkey_import_rsa_raw2( + gnutls_x509_privkey_t key, const gnutls_datum_t *m, + const gnutls_datum_t *e, const gnutls_datum_t *d, + const gnutls_datum_t *p, const gnutls_datum_t *q, + const gnutls_datum_t *u, const gnutls_datum_t *e1, + const gnutls_datum_t *e2); int gnutls_x509_privkey_import_ecc_raw(gnutls_x509_privkey_t key, gnutls_ecc_curve_t curve, - const gnutls_datum_t * x, - const gnutls_datum_t * y, - const gnutls_datum_t * k); + const gnutls_datum_t *x, + const gnutls_datum_t *y, + const gnutls_datum_t *k); int gnutls_x509_privkey_import_gost_raw(gnutls_x509_privkey_t key, gnutls_ecc_curve_t curve, gnutls_digest_algorithm_t digest, gnutls_gost_paramset_t paramset, - const gnutls_datum_t * x, - const gnutls_datum_t * y, - const gnutls_datum_t * k); + const gnutls_datum_t *x, + const gnutls_datum_t *y, + const gnutls_datum_t *k); int gnutls_x509_privkey_fix(gnutls_x509_privkey_t key); int gnutls_x509_privkey_export_dsa_raw(gnutls_x509_privkey_t key, - gnutls_datum_t * p, - gnutls_datum_t * q, - gnutls_datum_t * g, - gnutls_datum_t * y, gnutls_datum_t * x); + gnutls_datum_t *p, gnutls_datum_t *q, + gnutls_datum_t *g, gnutls_datum_t *y, + gnutls_datum_t *x); int gnutls_x509_privkey_import_dsa_raw(gnutls_x509_privkey_t key, - const gnutls_datum_t * p, - const gnutls_datum_t * q, - const gnutls_datum_t * g, - const gnutls_datum_t * y, - const gnutls_datum_t * x); + const gnutls_datum_t *p, + const gnutls_datum_t *q, + const gnutls_datum_t *g, + const gnutls_datum_t *y, + const gnutls_datum_t *x); int gnutls_x509_privkey_get_pk_algorithm(gnutls_x509_privkey_t key); -int gnutls_x509_privkey_get_pk_algorithm2(gnutls_x509_privkey_t - key, unsigned int *bits); +int gnutls_x509_privkey_get_pk_algorithm2(gnutls_x509_privkey_t key, + unsigned int *bits); int gnutls_x509_privkey_get_spki(gnutls_x509_privkey_t key, gnutls_x509_spki_t spki, unsigned int flags); -int -gnutls_x509_privkey_set_spki(gnutls_x509_privkey_t key, - const gnutls_x509_spki_t spki, unsigned int flags); +int gnutls_x509_privkey_set_spki(gnutls_x509_privkey_t key, + const gnutls_x509_spki_t spki, + unsigned int flags); int gnutls_x509_privkey_get_key_id(gnutls_x509_privkey_t key, unsigned int flags, @@ -1227,8 +1134,8 @@ int gnutls_x509_privkey_get_key_id(gnutls_x509_privkey_t key, size_t *output_data_size); int gnutls_x509_privkey_generate(gnutls_x509_privkey_t key, - gnutls_pk_algorithm_t algo, - unsigned int bits, unsigned int flags); + gnutls_pk_algorithm_t algo, unsigned int bits, + unsigned int flags); void gnutls_x509_privkey_set_flags(gnutls_x509_privkey_t key, unsigned int flags); @@ -1253,12 +1160,11 @@ typedef struct { unsigned int size; } gnutls_keygen_data_st; -int -gnutls_x509_privkey_generate2(gnutls_x509_privkey_t key, - gnutls_pk_algorithm_t algo, unsigned int bits, - unsigned int flags, - const gnutls_keygen_data_st * data, - unsigned data_size); +int gnutls_x509_privkey_generate2(gnutls_x509_privkey_t key, + gnutls_pk_algorithm_t algo, unsigned int bits, + unsigned int flags, + const gnutls_keygen_data_st *data, + unsigned data_size); int gnutls_x509_privkey_verify_seed(gnutls_x509_privkey_t key, gnutls_digest_algorithm_t, const void *seed, @@ -1270,85 +1176,73 @@ int gnutls_x509_privkey_get_seed(gnutls_x509_privkey_t key, int gnutls_x509_privkey_verify_params(gnutls_x509_privkey_t key); int gnutls_x509_privkey_export(gnutls_x509_privkey_t key, - gnutls_x509_crt_fmt_t format, - void *output_data, size_t *output_data_size); + gnutls_x509_crt_fmt_t format, void *output_data, + size_t *output_data_size); int gnutls_x509_privkey_export2(gnutls_x509_privkey_t key, gnutls_x509_crt_fmt_t format, - gnutls_datum_t * out); + gnutls_datum_t *out); int gnutls_x509_privkey_export_pkcs8(gnutls_x509_privkey_t key, gnutls_x509_crt_fmt_t format, - const char *password, - unsigned int flags, + const char *password, unsigned int flags, void *output_data, size_t *output_data_size); int gnutls_x509_privkey_export2_pkcs8(gnutls_x509_privkey_t key, gnutls_x509_crt_fmt_t format, - const char *password, - unsigned int flags, gnutls_datum_t * out); + const char *password, unsigned int flags, + gnutls_datum_t *out); int gnutls_x509_privkey_export_rsa_raw2(gnutls_x509_privkey_t key, - gnutls_datum_t * m, - gnutls_datum_t * e, - gnutls_datum_t * d, - gnutls_datum_t * p, - gnutls_datum_t * q, - gnutls_datum_t * u, - gnutls_datum_t * e1, - gnutls_datum_t * e2); + gnutls_datum_t *m, gnutls_datum_t *e, + gnutls_datum_t *d, gnutls_datum_t *p, + gnutls_datum_t *q, gnutls_datum_t *u, + gnutls_datum_t *e1, gnutls_datum_t *e2); int gnutls_x509_privkey_export_rsa_raw(gnutls_x509_privkey_t key, - gnutls_datum_t * m, - gnutls_datum_t * e, - gnutls_datum_t * d, - gnutls_datum_t * p, - gnutls_datum_t * q, gnutls_datum_t * u); + gnutls_datum_t *m, gnutls_datum_t *e, + gnutls_datum_t *d, gnutls_datum_t *p, + gnutls_datum_t *q, gnutls_datum_t *u); int gnutls_x509_privkey_export_ecc_raw(gnutls_x509_privkey_t key, - gnutls_ecc_curve_t * curve, - gnutls_datum_t * x, - gnutls_datum_t * y, gnutls_datum_t * k); + gnutls_ecc_curve_t *curve, + gnutls_datum_t *x, gnutls_datum_t *y, + gnutls_datum_t *k); int gnutls_x509_privkey_export_gost_raw(gnutls_x509_privkey_t key, - gnutls_ecc_curve_t * curve, - gnutls_digest_algorithm_t * digest, - gnutls_gost_paramset_t * paramset, - gnutls_datum_t * x, - gnutls_datum_t * y, gnutls_datum_t * k); + gnutls_ecc_curve_t *curve, + gnutls_digest_algorithm_t *digest, + gnutls_gost_paramset_t *paramset, + gnutls_datum_t *x, gnutls_datum_t *y, + gnutls_datum_t *k); int gnutls_x509_privkey_sign_data(gnutls_x509_privkey_t key, gnutls_digest_algorithm_t digest, unsigned int flags, - const gnutls_datum_t * data, - void *signature, size_t *signature_size); + const gnutls_datum_t *data, void *signature, + size_t *signature_size); /* Certificate request stuff. */ int gnutls_x509_crq_sign(gnutls_x509_crq_t crq, gnutls_x509_privkey_t key); -int gnutls_x509_crq_sign2(gnutls_x509_crq_t crq, - gnutls_x509_privkey_t key, +int gnutls_x509_crq_sign2(gnutls_x509_crq_t crq, gnutls_x509_privkey_t key, gnutls_digest_algorithm_t dig, unsigned int flags); int gnutls_x509_crq_print(gnutls_x509_crq_t crq, - gnutls_certificate_print_formats_t - format, gnutls_datum_t * out); + gnutls_certificate_print_formats_t format, + gnutls_datum_t *out); int gnutls_x509_crq_verify(gnutls_x509_crq_t crq, unsigned int flags); -int gnutls_x509_crq_init(gnutls_x509_crq_t * crq); +int gnutls_x509_crq_init(gnutls_x509_crq_t *crq); void gnutls_x509_crq_deinit(gnutls_x509_crq_t crq); -int gnutls_x509_crq_import(gnutls_x509_crq_t crq, - const gnutls_datum_t * data, +int gnutls_x509_crq_import(gnutls_x509_crq_t crq, const gnutls_datum_t *data, gnutls_x509_crt_fmt_t format); -int gnutls_x509_crq_get_private_key_usage_period(gnutls_x509_crq_t - cert, - time_t * - activation, - time_t * - expiration, unsigned int - *critical); +int gnutls_x509_crq_get_private_key_usage_period(gnutls_x509_crq_t cert, + time_t *activation, + time_t *expiration, + unsigned int *critical); int gnutls_x509_crq_get_dn(gnutls_x509_crq_t crq, char *buf, size_t *sizeof_buf); -int gnutls_x509_crq_get_dn2(gnutls_x509_crq_t crq, gnutls_datum_t * dn); -int gnutls_x509_crq_get_dn3(gnutls_x509_crq_t crq, gnutls_datum_t * dn, +int gnutls_x509_crq_get_dn2(gnutls_x509_crq_t crq, gnutls_datum_t *dn); +int gnutls_x509_crq_get_dn3(gnutls_x509_crq_t crq, gnutls_datum_t *dn, unsigned flags); int gnutls_x509_crq_get_dn_oid(gnutls_x509_crq_t crq, unsigned indx, void *oid, size_t *sizeof_oid); @@ -1364,85 +1258,72 @@ int gnutls_x509_crq_set_version(gnutls_x509_crq_t crq, unsigned int version); int gnutls_x509_crq_get_version(gnutls_x509_crq_t crq); int gnutls_x509_crq_set_key(gnutls_x509_crq_t crq, gnutls_x509_privkey_t key); -int -gnutls_x509_crq_set_extension_by_oid(gnutls_x509_crq_t crq, - const char *oid, const void *buf, - size_t sizeof_buf, unsigned int critical); +int gnutls_x509_crq_set_extension_by_oid(gnutls_x509_crq_t crq, const char *oid, + const void *buf, size_t sizeof_buf, + unsigned int critical); int gnutls_x509_crq_set_challenge_password(gnutls_x509_crq_t crq, const char *pass); -int gnutls_x509_crq_get_challenge_password(gnutls_x509_crq_t crq, - char *pass, size_t *sizeof_pass); +int gnutls_x509_crq_get_challenge_password(gnutls_x509_crq_t crq, char *pass, + size_t *sizeof_pass); -int gnutls_x509_crq_set_attribute_by_oid(gnutls_x509_crq_t crq, - const char *oid, +int gnutls_x509_crq_set_attribute_by_oid(gnutls_x509_crq_t crq, const char *oid, void *buf, size_t sizeof_buf); -int gnutls_x509_crq_get_attribute_by_oid(gnutls_x509_crq_t crq, - const char *oid, unsigned indx, - void *buf, size_t *sizeof_buf); +int gnutls_x509_crq_get_attribute_by_oid(gnutls_x509_crq_t crq, const char *oid, + unsigned indx, void *buf, + size_t *sizeof_buf); -int gnutls_x509_crq_export(gnutls_x509_crq_t crq, - gnutls_x509_crt_fmt_t format, +int gnutls_x509_crq_export(gnutls_x509_crq_t crq, gnutls_x509_crt_fmt_t format, void *output_data, size_t *output_data_size); -int gnutls_x509_crq_export2(gnutls_x509_crq_t crq, - gnutls_x509_crt_fmt_t format, gnutls_datum_t * out); +int gnutls_x509_crq_export2(gnutls_x509_crq_t crq, gnutls_x509_crt_fmt_t format, + gnutls_datum_t *out); int gnutls_x509_crt_set_crq(gnutls_x509_crt_t crt, gnutls_x509_crq_t crq); int gnutls_x509_crt_set_crq_extensions(gnutls_x509_crt_t crt, gnutls_x509_crq_t crq); -int -gnutls_x509_crt_set_crq_extension_by_oid(gnutls_x509_crt_t crt, - gnutls_x509_crq_t crq, const char *oid, - unsigned flags); +int gnutls_x509_crt_set_crq_extension_by_oid(gnutls_x509_crt_t crt, + gnutls_x509_crq_t crq, + const char *oid, unsigned flags); -int gnutls_x509_crq_set_private_key_usage_period(gnutls_x509_crq_t - crq, +int gnutls_x509_crq_set_private_key_usage_period(gnutls_x509_crq_t crq, time_t activation, time_t expiration); int gnutls_x509_crq_set_key_rsa_raw(gnutls_x509_crq_t crq, - const gnutls_datum_t * m, - const gnutls_datum_t * e); + const gnutls_datum_t *m, + const gnutls_datum_t *e); int gnutls_x509_crq_set_subject_alt_name(gnutls_x509_crq_t crq, - gnutls_x509_subject_alt_name_t - nt, const void *data, + gnutls_x509_subject_alt_name_t nt, + const void *data, unsigned int data_size, unsigned int flags); -int -gnutls_x509_crq_set_subject_alt_othername(gnutls_x509_crq_t crq, - const char *oid, - const void *data, - unsigned int data_size, - unsigned int flags); +int gnutls_x509_crq_set_subject_alt_othername(gnutls_x509_crq_t crq, + const char *oid, const void *data, + unsigned int data_size, + unsigned int flags); int gnutls_x509_crq_set_key_usage(gnutls_x509_crq_t crq, unsigned int usage); int gnutls_x509_crq_set_basic_constraints(gnutls_x509_crq_t crq, unsigned int ca, int pathLenConstraint); -int gnutls_x509_crq_set_key_purpose_oid(gnutls_x509_crq_t crq, - const void *oid, unsigned int critical); -int gnutls_x509_crq_get_key_purpose_oid(gnutls_x509_crq_t crq, - unsigned indx, void *oid, - size_t *sizeof_oid, +int gnutls_x509_crq_set_key_purpose_oid(gnutls_x509_crq_t crq, const void *oid, + unsigned int critical); +int gnutls_x509_crq_get_key_purpose_oid(gnutls_x509_crq_t crq, unsigned indx, + void *oid, size_t *sizeof_oid, unsigned int *critical); -int gnutls_x509_crq_get_extension_data(gnutls_x509_crq_t crq, - unsigned indx, void *data, - size_t *sizeof_data); -int -gnutls_x509_crq_get_extension_data2(gnutls_x509_crq_t crq, - unsigned indx, gnutls_datum_t * data); -int gnutls_x509_crq_get_extension_info(gnutls_x509_crq_t crq, - unsigned indx, void *oid, - size_t *sizeof_oid, +int gnutls_x509_crq_get_extension_data(gnutls_x509_crq_t crq, unsigned indx, + void *data, size_t *sizeof_data); +int gnutls_x509_crq_get_extension_data2(gnutls_x509_crq_t crq, unsigned indx, + gnutls_datum_t *data); +int gnutls_x509_crq_get_extension_info(gnutls_x509_crq_t crq, unsigned indx, + void *oid, size_t *sizeof_oid, unsigned int *critical); -int gnutls_x509_crq_get_attribute_data(gnutls_x509_crq_t crq, - unsigned indx, void *data, - size_t *sizeof_data); -int gnutls_x509_crq_get_attribute_info(gnutls_x509_crq_t crq, - unsigned indx, void *oid, - size_t *sizeof_oid); +int gnutls_x509_crq_get_attribute_data(gnutls_x509_crq_t crq, unsigned indx, + void *data, size_t *sizeof_data); +int gnutls_x509_crq_get_attribute_info(gnutls_x509_crq_t crq, unsigned indx, + void *oid, size_t *sizeof_oid); int gnutls_x509_crq_get_pk_algorithm(gnutls_x509_crq_t crq, unsigned int *bits); int gnutls_x509_crq_get_spki(gnutls_x509_crq_t crq, gnutls_x509_spki_t spki, unsigned int flags); @@ -1455,12 +1336,11 @@ int gnutls_x509_crq_get_signature_oid(gnutls_x509_crq_t crq, char *oid, int gnutls_x509_crq_get_pk_oid(gnutls_x509_crq_t crq, char *oid, size_t *oid_size); -int gnutls_x509_crq_get_key_id(gnutls_x509_crq_t crq, - unsigned int flags, +int gnutls_x509_crq_get_key_id(gnutls_x509_crq_t crq, unsigned int flags, unsigned char *output_data, size_t *output_data_size); -int gnutls_x509_crq_get_key_rsa_raw(gnutls_x509_crq_t crq, - gnutls_datum_t * m, gnutls_datum_t * e); +int gnutls_x509_crq_get_key_rsa_raw(gnutls_x509_crq_t crq, gnutls_datum_t *m, + gnutls_datum_t *e); int gnutls_x509_crq_get_key_usage(gnutls_x509_crq_t crq, unsigned int *key_usage, @@ -1469,19 +1349,16 @@ int gnutls_x509_crq_get_basic_constraints(gnutls_x509_crq_t crq, unsigned int *critical, unsigned int *ca, int *pathlen); int gnutls_x509_crq_get_subject_alt_name(gnutls_x509_crq_t crq, - unsigned int seq, - void *ret, + unsigned int seq, void *ret, size_t *ret_size, unsigned int *ret_type, unsigned int *critical); -int gnutls_x509_crq_get_subject_alt_othername_oid(gnutls_x509_crq_t - crq, - unsigned int seq, - void *ret, size_t *ret_size); +int gnutls_x509_crq_get_subject_alt_othername_oid(gnutls_x509_crq_t crq, + unsigned int seq, void *ret, + size_t *ret_size); -int gnutls_x509_crq_get_extension_by_oid(gnutls_x509_crq_t crq, - const char *oid, unsigned indx, - void *buf, +int gnutls_x509_crq_get_extension_by_oid(gnutls_x509_crq_t crq, const char *oid, + unsigned indx, void *buf, size_t *sizeof_buf, unsigned int *critical); @@ -1491,40 +1368,34 @@ int gnutls_x509_crq_get_tlsfeatures(gnutls_x509_crq_t crq, int gnutls_x509_crq_set_tlsfeatures(gnutls_x509_crq_t crq, gnutls_x509_tlsfeatures_t features); -int -gnutls_x509_crt_get_extension_by_oid2(gnutls_x509_crt_t cert, - const char *oid, unsigned indx, - gnutls_datum_t * output, - unsigned int *critical); +int gnutls_x509_crt_get_extension_by_oid2(gnutls_x509_crt_t cert, + const char *oid, unsigned indx, + gnutls_datum_t *output, + unsigned int *critical); typedef struct gnutls_x509_trust_list_st *gnutls_x509_trust_list_t; typedef struct gnutls_x509_trust_list_iter *gnutls_x509_trust_list_iter_t; -int -gnutls_x509_trust_list_init(gnutls_x509_trust_list_t * list, unsigned int size); +int gnutls_x509_trust_list_init(gnutls_x509_trust_list_t *list, + unsigned int size); -void -gnutls_x509_trust_list_deinit(gnutls_x509_trust_list_t list, unsigned int all); +void gnutls_x509_trust_list_deinit(gnutls_x509_trust_list_t list, + unsigned int all); -int gnutls_x509_trust_list_get_issuer(gnutls_x509_trust_list_t - list, gnutls_x509_crt_t cert, - gnutls_x509_crt_t * issuer, +int gnutls_x509_trust_list_get_issuer(gnutls_x509_trust_list_t list, + gnutls_x509_crt_t cert, + gnutls_x509_crt_t *issuer, unsigned int flags); int gnutls_x509_trust_list_get_issuer_by_dn(gnutls_x509_trust_list_t list, - const gnutls_datum_t * dn, - gnutls_x509_crt_t * issuer, + const gnutls_datum_t *dn, + gnutls_x509_crt_t *issuer, unsigned int flags); -int gnutls_x509_trust_list_get_issuer_by_subject_key_id(gnutls_x509_trust_list_t - list, - const gnutls_datum_t * - dn, - const gnutls_datum_t * - spki, - gnutls_x509_crt_t * - issuer, - unsigned int flags); +int gnutls_x509_trust_list_get_issuer_by_subject_key_id( + gnutls_x509_trust_list_t list, const gnutls_datum_t *dn, + const gnutls_datum_t *spki, gnutls_x509_crt_t *issuer, + unsigned int flags); /** * gnutls_trust_list_flags_t: * @GNUTLS_TL_VERIFY_CRL: If any CRLs are provided they will be verified for validity @@ -1547,151 +1418,125 @@ int gnutls_x509_trust_list_get_issuer_by_subject_key_id(gnutls_x509_trust_list_t */ typedef enum gnutls_trust_list_flags_t { GNUTLS_TL_VERIFY_CRL = 1, -# define GNUTLS_TL_VERIFY_CRL 1 +#define GNUTLS_TL_VERIFY_CRL 1 GNUTLS_TL_USE_IN_TLS = (1 << 1), -# define GNUTLS_TL_USE_IN_TLS (1<<1) +#define GNUTLS_TL_USE_IN_TLS (1 << 1) GNUTLS_TL_NO_DUPLICATES = (1 << 2), -# define GNUTLS_TL_NO_DUPLICATES (1<<2) +#define GNUTLS_TL_NO_DUPLICATES (1 << 2) GNUTLS_TL_NO_DUPLICATE_KEY = (1 << 3), -# define GNUTLS_TL_NO_DUPLICATE_KEY (1<<3) +#define GNUTLS_TL_NO_DUPLICATE_KEY (1 << 3) GNUTLS_TL_GET_COPY = (1 << 4), -# define GNUTLS_TL_GET_COPY (1<<4) +#define GNUTLS_TL_GET_COPY (1 << 4) GNUTLS_TL_FAIL_ON_INVALID_CRL = (1 << 5) -# define GNUTLS_TL_FAIL_ON_INVALID_CRL (1<<5) +#define GNUTLS_TL_FAIL_ON_INVALID_CRL (1 << 5) } gnutls_trust_list_flags_t; -int -gnutls_x509_trust_list_add_cas(gnutls_x509_trust_list_t list, - const gnutls_x509_crt_t * clist, - unsigned clist_size, unsigned int flags); -int gnutls_x509_trust_list_remove_cas(gnutls_x509_trust_list_t - list, - const gnutls_x509_crt_t * - clist, unsigned clist_size); - -int gnutls_x509_trust_list_add_named_crt(gnutls_x509_trust_list_t - list, +int gnutls_x509_trust_list_add_cas(gnutls_x509_trust_list_t list, + const gnutls_x509_crt_t *clist, + unsigned clist_size, unsigned int flags); +int gnutls_x509_trust_list_remove_cas(gnutls_x509_trust_list_t list, + const gnutls_x509_crt_t *clist, + unsigned clist_size); + +int gnutls_x509_trust_list_add_named_crt(gnutls_x509_trust_list_t list, gnutls_x509_crt_t cert, - const void *name, - size_t name_size, unsigned int flags); + const void *name, size_t name_size, + unsigned int flags); -int -gnutls_x509_trust_list_add_crls(gnutls_x509_trust_list_t list, - const gnutls_x509_crl_t * - crl_list, unsigned crl_size, - unsigned int flags, - unsigned int verification_flags); +int gnutls_x509_trust_list_add_crls(gnutls_x509_trust_list_t list, + const gnutls_x509_crl_t *crl_list, + unsigned crl_size, unsigned int flags, + unsigned int verification_flags); -int -gnutls_x509_trust_list_iter_get_ca(gnutls_x509_trust_list_t list, - gnutls_x509_trust_list_iter_t * iter, - gnutls_x509_crt_t * crt); +int gnutls_x509_trust_list_iter_get_ca(gnutls_x509_trust_list_t list, + gnutls_x509_trust_list_iter_t *iter, + gnutls_x509_crt_t *crt); void gnutls_x509_trust_list_iter_deinit(gnutls_x509_trust_list_iter_t iter); -typedef int gnutls_verify_output_function(gnutls_x509_crt_t cert, - gnutls_x509_crt_t issuer, - /* The issuer if verification failed +typedef int gnutls_verify_output_function( + gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer, + /* The issuer if verification failed * because of him. might be null. */ - gnutls_x509_crl_t crl, /* The CRL that caused verification failure + gnutls_x509_crl_t crl, /* The CRL that caused verification failure * if any. Might be null. */ - unsigned int verification_output); - -void gnutls_session_set_verify_output_function(gnutls_session_t session, - gnutls_verify_output_function * - func); - -int gnutls_x509_trust_list_verify_named_crt - (gnutls_x509_trust_list_t list, gnutls_x509_crt_t cert, - const void *name, size_t name_size, unsigned int flags, - unsigned int *verify, gnutls_verify_output_function func); - -int -gnutls_x509_trust_list_verify_crt2(gnutls_x509_trust_list_t list, - gnutls_x509_crt_t * cert_list, - unsigned int cert_list_size, - gnutls_typed_vdata_st * data, - unsigned int elements, - unsigned int flags, - unsigned int *voutput, - gnutls_verify_output_function func); - -int -gnutls_x509_trust_list_verify_crt(gnutls_x509_trust_list_t list, - gnutls_x509_crt_t * cert_list, - unsigned int cert_list_size, - unsigned int flags, - unsigned int *verify, - gnutls_verify_output_function func); - - /* trust list convenience functions */ -int -gnutls_x509_trust_list_add_trust_mem(gnutls_x509_trust_list_t - list, - const gnutls_datum_t * cas, - const gnutls_datum_t * crls, - gnutls_x509_crt_fmt_t type, - unsigned int tl_flags, - unsigned int tl_vflags); - -int -gnutls_x509_trust_list_add_trust_file(gnutls_x509_trust_list_t - list, const char *ca_file, - const char *crl_file, - gnutls_x509_crt_fmt_t type, - unsigned int tl_flags, - unsigned int tl_vflags); - -int -gnutls_x509_trust_list_add_trust_dir(gnutls_x509_trust_list_t list, - const char *ca_dir, - const char *crl_dir, - gnutls_x509_crt_fmt_t type, - unsigned int tl_flags, - unsigned int tl_vflags); - -int -gnutls_x509_trust_list_remove_trust_file(gnutls_x509_trust_list_t - list, - const char *ca_file, - gnutls_x509_crt_fmt_t type); - -int -gnutls_x509_trust_list_remove_trust_mem(gnutls_x509_trust_list_t - list, - const gnutls_datum_t * - cas, gnutls_x509_crt_fmt_t type); - -int -gnutls_x509_trust_list_add_system_trust(gnutls_x509_trust_list_t - list, - unsigned int tl_flags, - unsigned int tl_vflags); - -typedef int gnutls_x509_trust_list_getissuer_function(gnutls_x509_trust_list_t - list, - const gnutls_x509_crt_t - cert, - gnutls_x509_crt_t ** - issuers, unsigned int - *issuers_size); - -void gnutls_x509_trust_list_set_getissuer_function(gnutls_x509_trust_list_t - tlist, - gnutls_x509_trust_list_getissuer_function - * func); + unsigned int verification_output); + +void gnutls_session_set_verify_output_function( + gnutls_session_t session, gnutls_verify_output_function *func); + +int gnutls_x509_trust_list_verify_named_crt(gnutls_x509_trust_list_t list, + gnutls_x509_crt_t cert, + const void *name, size_t name_size, + unsigned int flags, + unsigned int *verify, + gnutls_verify_output_function func); + +int gnutls_x509_trust_list_verify_crt2( + gnutls_x509_trust_list_t list, gnutls_x509_crt_t *cert_list, + unsigned int cert_list_size, gnutls_typed_vdata_st *data, + unsigned int elements, unsigned int flags, unsigned int *voutput, + gnutls_verify_output_function func); + +int gnutls_x509_trust_list_verify_crt(gnutls_x509_trust_list_t list, + gnutls_x509_crt_t *cert_list, + unsigned int cert_list_size, + unsigned int flags, unsigned int *verify, + gnutls_verify_output_function func); + +/* trust list convenience functions */ +int gnutls_x509_trust_list_add_trust_mem(gnutls_x509_trust_list_t list, + const gnutls_datum_t *cas, + const gnutls_datum_t *crls, + gnutls_x509_crt_fmt_t type, + unsigned int tl_flags, + unsigned int tl_vflags); + +int gnutls_x509_trust_list_add_trust_file(gnutls_x509_trust_list_t list, + const char *ca_file, + const char *crl_file, + gnutls_x509_crt_fmt_t type, + unsigned int tl_flags, + unsigned int tl_vflags); + +int gnutls_x509_trust_list_add_trust_dir(gnutls_x509_trust_list_t list, + const char *ca_dir, + const char *crl_dir, + gnutls_x509_crt_fmt_t type, + unsigned int tl_flags, + unsigned int tl_vflags); + +int gnutls_x509_trust_list_remove_trust_file(gnutls_x509_trust_list_t list, + const char *ca_file, + gnutls_x509_crt_fmt_t type); + +int gnutls_x509_trust_list_remove_trust_mem(gnutls_x509_trust_list_t list, + const gnutls_datum_t *cas, + gnutls_x509_crt_fmt_t type); + +int gnutls_x509_trust_list_add_system_trust(gnutls_x509_trust_list_t list, + unsigned int tl_flags, + unsigned int tl_vflags); + +typedef int gnutls_x509_trust_list_getissuer_function( + gnutls_x509_trust_list_t list, const gnutls_x509_crt_t cert, + gnutls_x509_crt_t **issuers, unsigned int *issuers_size); + +void gnutls_x509_trust_list_set_getissuer_function( + gnutls_x509_trust_list_t tlist, + gnutls_x509_trust_list_getissuer_function *func); void gnutls_x509_trust_list_set_ptr(gnutls_x509_trust_list_t tlist, void *ptr); void *gnutls_x509_trust_list_get_ptr(gnutls_x509_trust_list_t tlist); -void gnutls_certificate_set_trust_list - (gnutls_certificate_credentials_t res, - gnutls_x509_trust_list_t tlist, unsigned flags); -void gnutls_certificate_get_trust_list - (gnutls_certificate_credentials_t res, gnutls_x509_trust_list_t * tlist); +void gnutls_certificate_set_trust_list(gnutls_certificate_credentials_t res, + gnutls_x509_trust_list_t tlist, + unsigned flags); +void gnutls_certificate_get_trust_list(gnutls_certificate_credentials_t res, + gnutls_x509_trust_list_t *tlist); typedef struct gnutls_x509_ext_st { char *oid; @@ -1699,17 +1544,16 @@ typedef struct gnutls_x509_ext_st { gnutls_datum_t data; } gnutls_x509_ext_st; -void gnutls_x509_ext_deinit(gnutls_x509_ext_st * ext); +void gnutls_x509_ext_deinit(gnutls_x509_ext_st *ext); -int -gnutls_x509_ext_print(gnutls_x509_ext_st * exts, unsigned int exts_size, - gnutls_certificate_print_formats_t format, - gnutls_datum_t * out); +int gnutls_x509_ext_print(gnutls_x509_ext_st *exts, unsigned int exts_size, + gnutls_certificate_print_formats_t format, + gnutls_datum_t *out); -# include +#include #ifdef __cplusplus } #endif -#endif /* GNUTLS_X509_H */ +#endif /* GNUTLS_X509_H */ diff --git a/lib/inih/ini.c b/lib/inih/ini.c index 4e0ab33dde..18b8741770 100644 --- a/lib/inih/ini.c +++ b/lib/inih/ini.c @@ -8,7 +8,7 @@ https://github.com/benhoyt/inih */ #if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_WARNINGS) -# define _CRT_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS #endif #include @@ -18,7 +18,7 @@ https://github.com/benhoyt/inih #include "ini.h" #if !INI_USE_STACK -# include +#include #endif #define MAX_SECTION 50 @@ -70,7 +70,7 @@ static char *strncpy0(char *dest, const char *src, size_t size) } /* See documentation in header file. */ -int ini_parse_file(FILE * file, ini_handler handler, void *user) +int ini_parse_file(FILE *file, ini_handler handler, void *user) { /* Uses a fair bit of stack (use heap instead if you need to) */ #if INI_USE_STACK @@ -101,9 +101,9 @@ int ini_parse_file(FILE * file, ini_handler handler, void *user) #endif #if INI_HANDLER_LINENO -# define HANDLER(u, s, n, v) handler(u, s, n, v, lineno) +#define HANDLER(u, s, n, v) handler(u, s, n, v, lineno) #else -# define HANDLER(u, s, n, v) handler(u, s, n, v) +#define HANDLER(u, s, n, v) handler(u, s, n, v) #endif /* Scan through stream line by line */ @@ -181,8 +181,8 @@ int ini_parse_file(FILE * file, ini_handler handler, void *user) /* Valid name[=:]value pair found, call handler */ strncpy0(prev_name, name, sizeof(prev_name)); - if (!HANDLER(user, section, name, value) - && !error) + if (!HANDLER(user, section, name, value) && + !error) error = lineno; } else if (!error) { /* No '=' or ':' found on name[=:]value line */ diff --git a/lib/inih/ini.h b/lib/inih/ini.h index d9f2783dba..f078051166 100644 --- a/lib/inih/ini.h +++ b/lib/inih/ini.h @@ -8,97 +8,96 @@ https://github.com/benhoyt/inih */ #ifndef __INI_H__ -# define __INI_H__ +#define __INI_H__ /* Make this header file easier to include in C++ code */ -# ifdef __cplusplus +#ifdef __cplusplus extern "C" { -# endif +#endif -# include -# include +#include +#include /* Nonzero if ini_handler callback should accept lineno parameter. */ -# ifndef INI_HANDLER_LINENO -# define INI_HANDLER_LINENO 0 -# endif +#ifndef INI_HANDLER_LINENO +#define INI_HANDLER_LINENO 0 +#endif /* Typedef for prototype of handler function. */ -# if INI_HANDLER_LINENO - typedef int (*ini_handler)(void *user, const char *section, - const char *name, const char *value, - int lineno); -# else - typedef int (*ini_handler)(void *user, const char *section, - const char *name, const char *value); -# endif +#if INI_HANDLER_LINENO +typedef int (*ini_handler)(void *user, const char *section, const char *name, + const char *value, int lineno); +#else +typedef int (*ini_handler)(void *user, const char *section, const char *name, + const char *value); +#endif /* Typedef for prototype of fgets-style reader function. */ - typedef char *(*ini_reader)(char *str, int num, void *stream); +typedef char *(*ini_reader)(char *str, int num, void *stream); /* Same as ini_parse(), but takes a FILE* instead of filename. This doesn't close the file when it's finished -- the caller must do that. */ - int ini_parse_file(FILE * file, ini_handler handler, void *user); +int ini_parse_file(FILE *file, ini_handler handler, void *user); /* Nonzero to allow multi-line value parsing, in the style of Python's configparser. If allowed, ini_parse() will call the handler with the same name for each subsequent line parsed. */ -# ifndef INI_ALLOW_MULTILINE -# define INI_ALLOW_MULTILINE 1 -# endif +#ifndef INI_ALLOW_MULTILINE +#define INI_ALLOW_MULTILINE 1 +#endif /* Nonzero to allow a UTF-8 BOM sequence (0xEF 0xBB 0xBF) at the start of the file. See https://github.com/benhoyt/inih/issues/21 */ -# ifndef INI_ALLOW_BOM -# define INI_ALLOW_BOM 1 -# endif +#ifndef INI_ALLOW_BOM +#define INI_ALLOW_BOM 1 +#endif /* Chars that begin a start-of-line comment. Per Python configparser, allow both ; and # comments at the start of a line by default. */ -# ifndef INI_START_COMMENT_PREFIXES -# define INI_START_COMMENT_PREFIXES ";#" -# endif +#ifndef INI_START_COMMENT_PREFIXES +#define INI_START_COMMENT_PREFIXES ";#" +#endif /* Nonzero to allow inline comments (with valid inline comment characters specified by INI_INLINE_COMMENT_PREFIXES). Set to 0 to turn off and match Python 3.2+ configparser behaviour. */ -# ifndef INI_ALLOW_INLINE_COMMENTS -# define INI_ALLOW_INLINE_COMMENTS 1 -# endif -# ifndef INI_INLINE_COMMENT_PREFIXES -# define INI_INLINE_COMMENT_PREFIXES ";" -# endif +#ifndef INI_ALLOW_INLINE_COMMENTS +#define INI_ALLOW_INLINE_COMMENTS 1 +#endif +#ifndef INI_INLINE_COMMENT_PREFIXES +#define INI_INLINE_COMMENT_PREFIXES ";" +#endif /* Nonzero to use stack for line buffer, zero to use heap (malloc/free). */ -# ifndef INI_USE_STACK -# define INI_USE_STACK 1 -# endif +#ifndef INI_USE_STACK +#define INI_USE_STACK 1 +#endif /* Maximum line length for any line in INI file (stack or heap). Note that this must be 3 more than the longest line (due to '\r', '\n', and '\0'). */ -# ifndef INI_MAX_LINE -# define INI_MAX_LINE 200 -# endif +#ifndef INI_MAX_LINE +#define INI_MAX_LINE 200 +#endif /* Nonzero to allow heap line buffer to grow via realloc(), zero for a fixed-size buffer of INI_MAX_LINE bytes. Only applies if INI_USE_STACK is zero. */ -# ifndef INI_ALLOW_REALLOC -# define INI_ALLOW_REALLOC 0 -# endif +#ifndef INI_ALLOW_REALLOC +#define INI_ALLOW_REALLOC 0 +#endif /* Initial size in bytes for heap line buffer. Only applies if INI_USE_STACK is zero. */ -# ifndef INI_INITIAL_ALLOC -# define INI_INITIAL_ALLOC 200 -# endif +#ifndef INI_INITIAL_ALLOC +#define INI_INITIAL_ALLOC 200 +#endif /* Stop parsing on first error (default is to keep parsing). */ -# ifndef INI_STOP_ON_FIRST_ERROR -# define INI_STOP_ON_FIRST_ERROR 0 -# endif +#ifndef INI_STOP_ON_FIRST_ERROR +#define INI_STOP_ON_FIRST_ERROR 0 +#endif -# ifdef __cplusplus +#ifdef __cplusplus } -# endif -#endif /* __INI_H__ */ +#endif +#endif /* __INI_H__ */ diff --git a/lib/iov.c b/lib/iov.c index 5900008c99..11d951e9b1 100644 --- a/lib/iov.c +++ b/lib/iov.c @@ -35,9 +35,8 @@ * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise * an error code is returned */ -int -_gnutls_iov_iter_init(struct iov_iter_st *iter, - const giovec_t * iov, size_t iov_count, size_t block_size) +int _gnutls_iov_iter_init(struct iov_iter_st *iter, const giovec_t *iov, + size_t iov_count, size_t block_size) { if (unlikely(block_size > MAX_CIPHER_BLOCK_SIZE)) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); @@ -67,7 +66,7 @@ _gnutls_iov_iter_init(struct iov_iter_st *iter, * Returns: On success, a value greater than or equal to zero is * returned, otherwise a negative error code is returned */ -ssize_t _gnutls_iov_iter_next(struct iov_iter_st *iter, uint8_t ** data) +ssize_t _gnutls_iov_iter_next(struct iov_iter_st *iter, uint8_t **data) { while (iter->iov_index < iter->iov_count) { const giovec_t *iov = &iter->iov[iter->iov_index]; @@ -82,9 +81,8 @@ ssize_t _gnutls_iov_iter_next(struct iov_iter_st *iter, uint8_t ** data) } if (unlikely(len < iter->iov_offset)) - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET_LENGTH); len -= iter->iov_offset; p += iter->iov_offset; @@ -148,9 +146,8 @@ ssize_t _gnutls_iov_iter_next(struct iov_iter_st *iter, uint8_t ** data) * * Flush the content of temp buffer (if any) to the data buffer. */ -int -_gnutls_iov_iter_sync(struct iov_iter_st *iter, const uint8_t * data, - size_t data_size) +int _gnutls_iov_iter_sync(struct iov_iter_st *iter, const uint8_t *data, + size_t data_size) { size_t iov_index; size_t iov_offset; @@ -180,8 +177,8 @@ _gnutls_iov_iter_sync(struct iov_iter_st *iter, const uint8_t * data, while (iov_offset == 0) { if (unlikely(iov_index == 0)) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + return gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); iov_index--; iov_offset = iter->iov[iov_index].iov_len; diff --git a/lib/iov.h b/lib/iov.h index 9ec4a1562c..525b56a756 100644 --- a/lib/iov.h +++ b/lib/iov.h @@ -21,28 +21,27 @@ */ #ifndef GNUTLS_LIB_IOV_H -# define GNUTLS_LIB_IOV_H +#define GNUTLS_LIB_IOV_H -# include "gnutls_int.h" +#include "gnutls_int.h" struct iov_iter_st { const giovec_t *iov; - size_t iov_count; /* the number of iov */ - size_t iov_index; /* index of the current buffer */ - size_t iov_offset; /* byte offset in the current buffer */ + size_t iov_count; /* the number of iov */ + size_t iov_index; /* index of the current buffer */ + size_t iov_offset; /* byte offset in the current buffer */ - uint8_t block[MAX_CIPHER_BLOCK_SIZE]; /* incomplete block for reading */ - size_t block_size; /* actual block size of the cipher */ - size_t block_offset; /* offset in block */ + uint8_t block[MAX_CIPHER_BLOCK_SIZE]; /* incomplete block for reading */ + size_t block_size; /* actual block size of the cipher */ + size_t block_offset; /* offset in block */ }; -int _gnutls_iov_iter_init(struct iov_iter_st *iter, - const giovec_t * iov, size_t iov_count, - size_t block_size); +int _gnutls_iov_iter_init(struct iov_iter_st *iter, const giovec_t *iov, + size_t iov_count, size_t block_size); -ssize_t _gnutls_iov_iter_next(struct iov_iter_st *iter, uint8_t ** data); +ssize_t _gnutls_iov_iter_next(struct iov_iter_st *iter, uint8_t **data); -int _gnutls_iov_iter_sync(struct iov_iter_st *iter, const uint8_t * data, +int _gnutls_iov_iter_sync(struct iov_iter_st *iter, const uint8_t *data, size_t data_size); -#endif /* GNUTLS_LIB_IOV_H */ +#endif /* GNUTLS_LIB_IOV_H */ diff --git a/lib/kx.c b/lib/kx.c index 60c45fdb2f..2b61276d5a 100644 --- a/lib/kx.c +++ b/lib/kx.c @@ -41,16 +41,16 @@ */ #define MASTER_SECRET "master secret" -#define MASTER_SECRET_SIZE (sizeof(MASTER_SECRET)-1) +#define MASTER_SECRET_SIZE (sizeof(MASTER_SECRET) - 1) #define EXT_MASTER_SECRET "extended master secret" -#define EXT_MASTER_SECRET_SIZE (sizeof(EXT_MASTER_SECRET)-1) +#define EXT_MASTER_SECRET_SIZE (sizeof(EXT_MASTER_SECRET) - 1) GNUTLS_STATIC_MUTEX(keylog_mutex); static FILE *keylog; -static int generate_normal_master(gnutls_session_t session, - gnutls_datum_t *, int); +static int generate_normal_master(gnutls_session_t session, gnutls_datum_t *, + int); int _gnutls_generate_master(gnutls_session_t session, int keep_premaster) { @@ -60,11 +60,10 @@ int _gnutls_generate_master(gnutls_session_t session, int keep_premaster) else if (session->internals.premaster_set) { gnutls_datum_t premaster; premaster.size = - sizeof(session->internals.resumed_security_parameters. - master_secret); - premaster.data = - session->internals.resumed_security_parameters. - master_secret; + sizeof(session->internals.resumed_security_parameters + .master_secret); + premaster.data = session->internals.resumed_security_parameters + .master_secret; return generate_normal_master(session, &premaster, 1); } return 0; @@ -97,16 +96,14 @@ gnutls_session_get_keylog_function(const gnutls_session_t session) * * Since: 3.6.13 */ -void -gnutls_session_set_keylog_function(gnutls_session_t session, - gnutls_keylog_func func) +void gnutls_session_set_keylog_function(gnutls_session_t session, + gnutls_keylog_func func) { session->internals.keylog_func = func; } -int -_gnutls_call_keylog_func(gnutls_session_t session, - const char *label, const uint8_t * data, unsigned size) +int _gnutls_call_keylog_func(gnutls_session_t session, const char *label, + const uint8_t *data, unsigned size) { if (session->internals.keylog_func) { gnutls_datum_t secret = { (void *)data, size }; @@ -115,9 +112,8 @@ _gnutls_call_keylog_func(gnutls_session_t session, return 0; } -int -_gnutls_nss_keylog_func(gnutls_session_t session, - const char *label, const gnutls_datum_t * secret) +int _gnutls_nss_keylog_func(gnutls_session_t session, const char *label, + const gnutls_datum_t *secret) { /* ignore subsequent traffic secrets that are calculated from * the previous traffic secret @@ -147,9 +143,8 @@ static void keylog_once_init(void) } } -void _gnutls_nss_keylog_write(gnutls_session_t session, - const char *label, - const uint8_t * secret, size_t secret_size) +void _gnutls_nss_keylog_write(gnutls_session_t session, const char *label, + const uint8_t *secret, size_t secret_size) { (void)gnutls_once(&keylog_once, keylog_once_init); @@ -160,12 +155,11 @@ void _gnutls_nss_keylog_write(gnutls_session_t session, if (gnutls_static_mutex_lock(&keylog_mutex) < 0) { return; } - fprintf(keylog, "%s %s %s\n", - label, - _gnutls_bin2hex(session->security_parameters. - client_random, GNUTLS_RANDOM_SIZE, - client_random_hex, - sizeof(client_random_hex), NULL), + fprintf(keylog, "%s %s %s\n", label, + _gnutls_bin2hex( + session->security_parameters.client_random, + GNUTLS_RANDOM_SIZE, client_random_hex, + sizeof(client_random_hex), NULL), _gnutls_bin2hex(secret, secret_size, secret_hex, sizeof(secret_hex), NULL)); fflush(keylog); @@ -185,26 +179,23 @@ void _gnutls_nss_keylog_deinit(void) /* here we generate the TLS Master secret. */ -static int -generate_normal_master(gnutls_session_t session, - gnutls_datum_t * premaster, int keep_premaster) +static int generate_normal_master(gnutls_session_t session, + gnutls_datum_t *premaster, int keep_premaster) { int ret = 0; char buf[512]; - _gnutls_hard_log("INT: PREMASTER SECRET[%d]: %s\n", - premaster->size, _gnutls_bin2hex(premaster->data, - premaster->size, - buf, sizeof(buf), - NULL)); - _gnutls_hard_log("INT: CLIENT RANDOM[%d]: %s\n", 32, - _gnutls_bin2hex(session->security_parameters. - client_random, 32, buf, sizeof(buf), - NULL)); - _gnutls_hard_log("INT: SERVER RANDOM[%d]: %s\n", 32, - _gnutls_bin2hex(session->security_parameters. - server_random, 32, buf, sizeof(buf), - NULL)); + _gnutls_hard_log("INT: PREMASTER SECRET[%d]: %s\n", premaster->size, + _gnutls_bin2hex(premaster->data, premaster->size, buf, + sizeof(buf), NULL)); + _gnutls_hard_log( + "INT: CLIENT RANDOM[%d]: %s\n", 32, + _gnutls_bin2hex(session->security_parameters.client_random, 32, + buf, sizeof(buf), NULL)); + _gnutls_hard_log( + "INT: SERVER RANDOM[%d]: %s\n", 32, + _gnutls_bin2hex(session->security_parameters.server_random, 32, + buf, sizeof(buf), NULL)); if (session->security_parameters.ext_master_secret == 0) { uint8_t rnd[2 * GNUTLS_RANDOM_SIZE + 1]; @@ -214,32 +205,26 @@ generate_normal_master(gnutls_session_t session, session->security_parameters.server_random, GNUTLS_RANDOM_SIZE); - _gnutls_memory_mark_defined(session-> - security_parameters.master_secret, - GNUTLS_MASTER_SIZE); + _gnutls_memory_mark_defined( + session->security_parameters.master_secret, + GNUTLS_MASTER_SIZE); #ifdef ENABLE_SSL3 if (get_num_version(session) == GNUTLS_SSL3) { - ret = - _gnutls_ssl3_generate_random(premaster->data, - premaster->size, rnd, - 2 * GNUTLS_RANDOM_SIZE, - GNUTLS_MASTER_SIZE, - session->security_parameters. - master_secret); + ret = _gnutls_ssl3_generate_random( + premaster->data, premaster->size, rnd, + 2 * GNUTLS_RANDOM_SIZE, GNUTLS_MASTER_SIZE, + session->security_parameters.master_secret); } else #endif - ret = - _gnutls_PRF(session, premaster->data, - premaster->size, MASTER_SECRET, - MASTER_SECRET_SIZE, rnd, - 2 * GNUTLS_RANDOM_SIZE, - GNUTLS_MASTER_SIZE, - session->security_parameters. - master_secret); + ret = _gnutls_PRF( + session, premaster->data, premaster->size, + MASTER_SECRET, MASTER_SECRET_SIZE, rnd, + 2 * GNUTLS_RANDOM_SIZE, GNUTLS_MASTER_SIZE, + session->security_parameters.master_secret); if (ret < 0) - _gnutls_memory_mark_undefined - (session->security_parameters.master_secret, - GNUTLS_MASTER_SIZE); + _gnutls_memory_mark_undefined( + session->security_parameters.master_secret, + GNUTLS_MASTER_SIZE); } else { gnutls_datum_t shash = { NULL, 0 }; @@ -252,18 +237,17 @@ generate_normal_master(gnutls_session_t session, return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); #endif - _gnutls_memory_mark_defined(session-> - security_parameters.master_secret, - GNUTLS_MASTER_SIZE); - ret = - _gnutls_PRF(session, premaster->data, premaster->size, - EXT_MASTER_SECRET, EXT_MASTER_SECRET_SIZE, - shash.data, shash.size, GNUTLS_MASTER_SIZE, - session->security_parameters.master_secret); + _gnutls_memory_mark_defined( + session->security_parameters.master_secret, + GNUTLS_MASTER_SIZE); + ret = _gnutls_PRF(session, premaster->data, premaster->size, + EXT_MASTER_SECRET, EXT_MASTER_SECRET_SIZE, + shash.data, shash.size, GNUTLS_MASTER_SIZE, + session->security_parameters.master_secret); if (ret < 0) - _gnutls_memory_mark_undefined - (session->security_parameters.master_secret, - GNUTLS_MASTER_SIZE); + _gnutls_memory_mark_undefined( + session->security_parameters.master_secret, + GNUTLS_MASTER_SIZE); gnutls_free(shash.data); } @@ -274,18 +258,16 @@ generate_normal_master(gnutls_session_t session, if (ret < 0) return ret; - ret = _gnutls_call_keylog_func(session, "CLIENT_RANDOM", - session-> - security_parameters.master_secret, - GNUTLS_MASTER_SIZE); + ret = _gnutls_call_keylog_func( + session, "CLIENT_RANDOM", + session->security_parameters.master_secret, GNUTLS_MASTER_SIZE); if (ret < 0) return gnutls_assert_val(ret); - _gnutls_hard_log("INT: MASTER SECRET[%d]: %s\n", - GNUTLS_MASTER_SIZE, - _gnutls_bin2hex(session->security_parameters. - master_secret, GNUTLS_MASTER_SIZE, buf, - sizeof(buf), NULL)); + _gnutls_hard_log( + "INT: MASTER SECRET[%d]: %s\n", GNUTLS_MASTER_SIZE, + _gnutls_bin2hex(session->security_parameters.master_secret, + GNUTLS_MASTER_SIZE, buf, sizeof(buf), NULL)); return ret; } @@ -308,9 +290,8 @@ int _gnutls_send_server_kx_message(gnutls_session_t session, int again) if (ret < 0) return gnutls_assert_val(ret); - ret = - session->internals.auth_struct-> - gnutls_generate_server_kx(session, &buf); + ret = session->internals.auth_struct->gnutls_generate_server_kx( + session, &buf); if (ret == GNUTLS_E_INT_RET_0) { gnutls_assert(); @@ -329,7 +310,7 @@ int _gnutls_send_server_kx_message(gnutls_session_t session, int again) return _gnutls_send_handshake(session, bufel, GNUTLS_HANDSHAKE_SERVER_KEY_EXCHANGE); - cleanup: +cleanup: _gnutls_buffer_clear(&buf); return ret; } @@ -343,8 +324,8 @@ int _gnutls_send_server_crt_request(gnutls_session_t session, int again) int ret = 0; mbuffer_st *bufel = NULL; - if (session->internals.auth_struct-> - gnutls_generate_server_crt_request == NULL) + if (session->internals.auth_struct->gnutls_generate_server_crt_request == + NULL) return 0; if (session->internals.send_cert_req <= 0) @@ -355,9 +336,9 @@ int _gnutls_send_server_crt_request(gnutls_session_t session, int again) if (ret < 0) return gnutls_assert_val(ret); - ret = - session->internals.auth_struct-> - gnutls_generate_server_crt_request(session, &buf); + ret = session->internals.auth_struct + ->gnutls_generate_server_crt_request(session, + &buf); if (ret < 0) { gnutls_assert(); @@ -370,7 +351,7 @@ int _gnutls_send_server_crt_request(gnutls_session_t session, int again) return _gnutls_send_handshake(session, bufel, GNUTLS_HANDSHAKE_CERTIFICATE_REQUEST); - cleanup: +cleanup: _gnutls_buffer_clear(&buf); return ret; } @@ -392,9 +373,8 @@ int _gnutls_send_client_kx_message(gnutls_session_t session, int again) if (ret < 0) return gnutls_assert_val(ret); - ret = - session->internals.auth_struct-> - gnutls_generate_client_kx(session, &buf); + ret = session->internals.auth_struct->gnutls_generate_client_kx( + session, &buf); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -406,7 +386,7 @@ int _gnutls_send_client_kx_message(gnutls_session_t session, int again) return _gnutls_send_handshake(session, bufel, GNUTLS_HANDSHAKE_CLIENT_KEY_EXCHANGE); - cleanup: +cleanup: _gnutls_buffer_clear(&buf); return ret; } @@ -433,7 +413,7 @@ int _gnutls_send_client_certificate_verify(gnutls_session_t session, int again) if (session->internals.auth_struct->gnutls_generate_client_crt_vrfy == NULL) { gnutls_assert(); - return 0; /* this algorithm does not support cli_crt_vrfy + return 0; /* this algorithm does not support cli_crt_vrfy */ } @@ -442,9 +422,8 @@ int _gnutls_send_client_certificate_verify(gnutls_session_t session, int again) if (ret < 0) return gnutls_assert_val(ret); - ret = - session->internals.auth_struct-> - gnutls_generate_client_crt_vrfy(session, &buf); + ret = session->internals.auth_struct + ->gnutls_generate_client_crt_vrfy(session, &buf); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -459,7 +438,7 @@ int _gnutls_send_client_certificate_verify(gnutls_session_t session, int again) return _gnutls_send_handshake(session, bufel, GNUTLS_HANDSHAKE_CERTIFICATE_VERIFY); - cleanup: +cleanup: _gnutls_buffer_clear(&buf); return ret; } @@ -475,8 +454,8 @@ int _gnutls_send_client_certificate(gnutls_session_t session, int again) if (!(session->internals.hsk_flags & HSK_CRT_ASKED)) return 0; - if (session->internals.auth_struct-> - gnutls_generate_client_certificate == NULL) + if (session->internals.auth_struct->gnutls_generate_client_certificate == + NULL) return 0; if (again == 0) { @@ -491,9 +470,9 @@ int _gnutls_send_client_certificate(gnutls_session_t session, int again) { /* TLS 1.x or SSL 3.0 with a valid certificate */ - ret = - session->internals.auth_struct-> - gnutls_generate_client_certificate(session, &buf); + ret = session->internals.auth_struct + ->gnutls_generate_client_certificate( + session, &buf); if (ret < 0) { gnutls_assert(); @@ -511,17 +490,16 @@ int _gnutls_send_client_certificate(gnutls_session_t session, int again) if (get_num_version(session) == GNUTLS_SSL3 && session->internals.selected_cert_list_length == 0) { _mbuffer_xfree(&bufel); - return - gnutls_alert_send(session, GNUTLS_AL_WARNING, - GNUTLS_A_SSL3_NO_CERTIFICATE); + return gnutls_alert_send(session, GNUTLS_AL_WARNING, + GNUTLS_A_SSL3_NO_CERTIFICATE); - } else /* TLS 1.0 or SSL 3.0 with a valid certificate + } else /* TLS 1.0 or SSL 3.0 with a valid certificate */ #endif return _gnutls_send_handshake(session, bufel, GNUTLS_HANDSHAKE_CERTIFICATE_PKT); - cleanup: +cleanup: _gnutls_buffer_clear(&buf); return ret; } @@ -534,8 +512,8 @@ int _gnutls_send_server_certificate(gnutls_session_t session, int again) int ret = 0; mbuffer_st *bufel = NULL; - if (session->internals.auth_struct-> - gnutls_generate_server_certificate == NULL) + if (session->internals.auth_struct->gnutls_generate_server_certificate == + NULL) return 0; if (again == 0) { @@ -543,9 +521,9 @@ int _gnutls_send_server_certificate(gnutls_session_t session, int again) if (ret < 0) return gnutls_assert_val(ret); - ret = - session->internals.auth_struct-> - gnutls_generate_server_certificate(session, &buf); + ret = session->internals.auth_struct + ->gnutls_generate_server_certificate(session, + &buf); if (ret < 0) { gnutls_assert(); @@ -558,7 +536,7 @@ int _gnutls_send_server_certificate(gnutls_session_t session, int again) return _gnutls_send_handshake(session, bufel, GNUTLS_HANDSHAKE_CERTIFICATE_PKT); - cleanup: +cleanup: _gnutls_buffer_clear(&buf); return ret; } @@ -574,25 +552,22 @@ int _gnutls_recv_server_kx_message(gnutls_session_t session) if (_gnutls_session_is_psk(session)) optflag = 1; - ret = - _gnutls_recv_handshake(session, - GNUTLS_HANDSHAKE_SERVER_KEY_EXCHANGE, - optflag, &buf); + ret = _gnutls_recv_handshake( + session, GNUTLS_HANDSHAKE_SERVER_KEY_EXCHANGE, optflag, + &buf); if (ret < 0) { gnutls_assert(); return ret; } - ret = - session->internals.auth_struct-> - gnutls_process_server_kx(session, buf.data, buf.length); + ret = session->internals.auth_struct->gnutls_process_server_kx( + session, buf.data, buf.length); _gnutls_buffer_clear(&buf); if (ret < 0) { gnutls_assert(); return ret; } - } return ret; } @@ -604,27 +579,22 @@ int _gnutls_recv_server_crt_request(gnutls_session_t session) if (session->internals.auth_struct->gnutls_process_server_crt_request != NULL) { - - ret = - _gnutls_recv_handshake(session, - GNUTLS_HANDSHAKE_CERTIFICATE_REQUEST, - 1, &buf); + ret = _gnutls_recv_handshake( + session, GNUTLS_HANDSHAKE_CERTIFICATE_REQUEST, 1, &buf); if (ret < 0) return ret; if (ret == 0 && buf.length == 0) { _gnutls_buffer_clear(&buf); - return 0; /* ignored */ + return 0; /* ignored */ } - ret = - session->internals.auth_struct-> - gnutls_process_server_crt_request(session, buf.data, - buf.length); + ret = session->internals.auth_struct + ->gnutls_process_server_crt_request( + session, buf.data, buf.length); _gnutls_buffer_clear(&buf); if (ret < 0) return ret; - } return ret; } @@ -636,21 +606,16 @@ int _gnutls_recv_client_kx_message(gnutls_session_t session) /* Do key exchange only if the algorithm permits it */ if (session->internals.auth_struct->gnutls_process_client_kx != NULL) { - - ret = - _gnutls_recv_handshake(session, - GNUTLS_HANDSHAKE_CLIENT_KEY_EXCHANGE, - 0, &buf); + ret = _gnutls_recv_handshake( + session, GNUTLS_HANDSHAKE_CLIENT_KEY_EXCHANGE, 0, &buf); if (ret < 0) return ret; - ret = - session->internals.auth_struct-> - gnutls_process_client_kx(session, buf.data, buf.length); + ret = session->internals.auth_struct->gnutls_process_client_kx( + session, buf.data, buf.length); _gnutls_buffer_clear(&buf); if (ret < 0) return ret; - } return ret; @@ -677,10 +642,8 @@ int _gnutls_recv_client_certificate(gnutls_session_t session) else optional = 1; - ret = - _gnutls_recv_handshake(session, - GNUTLS_HANDSHAKE_CERTIFICATE_PKT, - optional, &buf); + ret = _gnutls_recv_handshake(session, GNUTLS_HANDSHAKE_CERTIFICATE_PKT, + optional, &buf); if (ret < 0) { /* Handle the case of old SSL3 clients who send @@ -688,11 +651,9 @@ int _gnutls_recv_client_certificate(gnutls_session_t session) * no certificate. */ #ifdef ENABLE_SSL3 - if (optional != 0 && - ret == GNUTLS_E_WARNING_ALERT_RECEIVED && + if (optional != 0 && ret == GNUTLS_E_WARNING_ALERT_RECEIVED && get_num_version(session) == GNUTLS_SSL3 && gnutls_alert_get(session) == GNUTLS_A_SSL3_NO_CERTIFICATE) { - /* SSL3 does not send an empty certificate, * but this alert. So we just ignore it. */ @@ -703,9 +664,9 @@ int _gnutls_recv_client_certificate(gnutls_session_t session) /* certificate was required */ - if ((ret == GNUTLS_E_WARNING_ALERT_RECEIVED - || ret == GNUTLS_E_FATAL_ALERT_RECEIVED) - && optional == 0) { + if ((ret == GNUTLS_E_WARNING_ALERT_RECEIVED || + ret == GNUTLS_E_FATAL_ALERT_RECEIVED) && + optional == 0) { gnutls_assert(); return GNUTLS_E_NO_CERTIFICATE_FOUND; } @@ -722,9 +683,8 @@ int _gnutls_recv_client_certificate(gnutls_session_t session) ret = 0; goto cleanup; } - ret = - session->internals.auth_struct-> - gnutls_process_client_certificate(session, buf.data, buf.length); + ret = session->internals.auth_struct->gnutls_process_client_certificate( + session, buf.data, buf.length); if (ret < 0 && ret != GNUTLS_E_NO_CERTIFICATE_FOUND) { gnutls_assert(); @@ -738,7 +698,7 @@ int _gnutls_recv_client_certificate(gnutls_session_t session) else session->internals.hsk_flags |= HSK_CRT_VRFY_EXPECTED; - cleanup: +cleanup: _gnutls_buffer_clear(&buf); return ret; } @@ -750,20 +710,16 @@ int _gnutls_recv_server_certificate(gnutls_session_t session) if (session->internals.auth_struct->gnutls_process_server_certificate != NULL) { - - ret = - _gnutls_recv_handshake(session, - GNUTLS_HANDSHAKE_CERTIFICATE_PKT, - 0, &buf); + ret = _gnutls_recv_handshake( + session, GNUTLS_HANDSHAKE_CERTIFICATE_PKT, 0, &buf); if (ret < 0) { gnutls_assert(); return ret; } - ret = - session->internals.auth_struct-> - gnutls_process_server_certificate(session, buf.data, - buf.length); + ret = session->internals.auth_struct + ->gnutls_process_server_certificate( + session, buf.data, buf.length); _gnutls_buffer_clear(&buf); if (ret < 0) { gnutls_assert(); @@ -791,26 +747,23 @@ int _gnutls_recv_client_certificate_verify_message(gnutls_session_t session) return 0; } - ret = - _gnutls_recv_handshake(session, - GNUTLS_HANDSHAKE_CERTIFICATE_VERIFY, - 1, &buf); + ret = _gnutls_recv_handshake( + session, GNUTLS_HANDSHAKE_CERTIFICATE_VERIFY, 1, &buf); if (ret < 0) return ret; - if (ret == 0 && buf.length == 0 - && session->internals.send_cert_req == GNUTLS_CERT_REQUIRE) { + if (ret == 0 && buf.length == 0 && + session->internals.send_cert_req == GNUTLS_CERT_REQUIRE) { /* certificate was required */ gnutls_assert(); ret = GNUTLS_E_NO_CERTIFICATE_FOUND; goto cleanup; } - ret = - session->internals.auth_struct-> - gnutls_process_client_crt_vrfy(session, buf.data, buf.length); + ret = session->internals.auth_struct->gnutls_process_client_crt_vrfy( + session, buf.data, buf.length); - cleanup: +cleanup: _gnutls_buffer_clear(&buf); return ret; } diff --git a/lib/kx.h b/lib/kx.h index c4c992341d..66486d1ccb 100644 --- a/lib/kx.h +++ b/lib/kx.h @@ -21,7 +21,7 @@ */ #ifndef GNUTLS_LIB_KX_H -# define GNUTLS_LIB_KX_H +#define GNUTLS_LIB_KX_H int _gnutls_send_server_kx_message(gnutls_session_t session, int again); int _gnutls_send_client_kx_message(gnutls_session_t session, int again); @@ -36,13 +36,11 @@ int _gnutls_send_client_certificate(gnutls_session_t session, int again); int _gnutls_recv_server_crt_request(gnutls_session_t session); int _gnutls_send_server_crt_request(gnutls_session_t session, int again); int _gnutls_recv_client_certificate_verify_message(gnutls_session_t session); -int _gnutls_call_keylog_func(gnutls_session_t session, - const char *label, - const uint8_t * data, unsigned size); -void _gnutls_nss_keylog_write(gnutls_session_t session, - const char *label, - const uint8_t * secret, size_t secret_size); -int _gnutls_nss_keylog_func(gnutls_session_t session, - const char *label, const gnutls_datum_t * secret); +int _gnutls_call_keylog_func(gnutls_session_t session, const char *label, + const uint8_t *data, unsigned size); +void _gnutls_nss_keylog_write(gnutls_session_t session, const char *label, + const uint8_t *secret, size_t secret_size); +int _gnutls_nss_keylog_func(gnutls_session_t session, const char *label, + const gnutls_datum_t *secret); -#endif /* GNUTLS_LIB_KX_H */ +#endif /* GNUTLS_LIB_KX_H */ diff --git a/lib/locks.c b/lib/locks.c index 7faeb0b769..2ccadf9fed 100644 --- a/lib/locks.c +++ b/lib/locks.c @@ -49,9 +49,8 @@ * * Since: 2.12.0 **/ -void -gnutls_global_set_mutex(mutex_init_func init, mutex_deinit_func deinit, - mutex_lock_func lock, mutex_unlock_func unlock) +void gnutls_global_set_mutex(mutex_init_func init, mutex_deinit_func deinit, + mutex_lock_func lock, mutex_unlock_func unlock) { if (init == NULL || deinit == NULL || lock == NULL || unlock == NULL) { return; diff --git a/lib/locks.h b/lib/locks.h index 7f3f5ac64c..0e6275bb04 100644 --- a/lib/locks.h +++ b/lib/locks.h @@ -21,12 +21,12 @@ */ #ifndef GNUTLS_LIB_LOCKS_H -# define GNUTLS_LIB_LOCKS_H +#define GNUTLS_LIB_LOCKS_H -# include -# include "gnutls_int.h" -# include "system.h" -# include "glthread/lock.h" +#include +#include "gnutls_int.h" +#include "system.h" +#include "glthread/lock.h" extern mutex_init_func gnutls_mutex_init; extern mutex_deinit_func gnutls_mutex_deinit; @@ -38,41 +38,47 @@ extern mutex_unlock_func gnutls_mutex_unlock; * below instead of the above gnutls_mutex_* functions, because the * latter can be replaced with gnutls_global_set_mutex(). */ -# define GNUTLS_STATIC_MUTEX(lock) gl_lock_define_initialized(static, lock) +#define GNUTLS_STATIC_MUTEX(lock) gl_lock_define_initialized(static, lock) typedef gl_lock_t *gnutls_static_mutex_t; -# define gnutls_static_mutex_lock(LOCK) \ - (unlikely(glthread_lock_lock(LOCK)) ? \ - gnutls_assert_val(GNUTLS_E_LOCKING_ERROR) : 0) +#define gnutls_static_mutex_lock(LOCK) \ + (unlikely(glthread_lock_lock(LOCK)) ? \ + gnutls_assert_val(GNUTLS_E_LOCKING_ERROR) : \ + 0) -# define gnutls_static_mutex_unlock(LOCK) \ - (unlikely(glthread_lock_unlock(LOCK)) ? \ - gnutls_assert_val(GNUTLS_E_LOCKING_ERROR) : 0) +#define gnutls_static_mutex_unlock(LOCK) \ + (unlikely(glthread_lock_unlock(LOCK)) ? \ + gnutls_assert_val(GNUTLS_E_LOCKING_ERROR) : \ + 0) /* Unlike static mutexes, static rwlocks can be locked/unlocked with * the functions defined below, because there is no way to replace * those functions. */ -# define GNUTLS_RWLOCK(rwlock) gl_rwlock_define_initialized(static, rwlock) +#define GNUTLS_RWLOCK(rwlock) gl_rwlock_define_initialized(static, rwlock) typedef gl_rwlock_t *gnutls_rwlock_t; -# define gnutls_rwlock_rdlock(RWLOCK) \ - (unlikely(glthread_rwlock_rdlock(RWLOCK)) ? \ - gnutls_assert_val(GNUTLS_E_LOCKING_ERROR) : 0) +#define gnutls_rwlock_rdlock(RWLOCK) \ + (unlikely(glthread_rwlock_rdlock(RWLOCK)) ? \ + gnutls_assert_val(GNUTLS_E_LOCKING_ERROR) : \ + 0) -# define gnutls_rwlock_wrlock(RWLOCK) \ - (unlikely(glthread_rwlock_wrlock(RWLOCK)) ? \ - gnutls_assert_val(GNUTLS_E_LOCKING_ERROR) : 0) +#define gnutls_rwlock_wrlock(RWLOCK) \ + (unlikely(glthread_rwlock_wrlock(RWLOCK)) ? \ + gnutls_assert_val(GNUTLS_E_LOCKING_ERROR) : \ + 0) -# define gnutls_rwlock_unlock(RWLOCK) \ - (unlikely(glthread_rwlock_unlock(RWLOCK)) ? \ - gnutls_assert_val(GNUTLS_E_LOCKING_ERROR) : 0) +#define gnutls_rwlock_unlock(RWLOCK) \ + (unlikely(glthread_rwlock_unlock(RWLOCK)) ? \ + gnutls_assert_val(GNUTLS_E_LOCKING_ERROR) : \ + 0) -# define GNUTLS_ONCE(once) gl_once_define(static, once) +#define GNUTLS_ONCE(once) gl_once_define(static, once) typedef gl_once_t *gnutls_once_t; -# define gnutls_once(ONCE, INIT_FUNC) \ - (unlikely(glthread_once(ONCE, INIT_FUNC)) ? \ - gnutls_assert_val(GNUTLS_E_LOCKING_ERROR) : 0) +#define gnutls_once(ONCE, INIT_FUNC) \ + (unlikely(glthread_once(ONCE, INIT_FUNC)) ? \ + gnutls_assert_val(GNUTLS_E_LOCKING_ERROR) : \ + 0) -#endif /* GNUTLS_LIB_LOCKS_H */ +#endif /* GNUTLS_LIB_LOCKS_H */ diff --git a/lib/mbuffers.c b/lib/mbuffers.c index 2067ae140b..15cbf52e30 100644 --- a/lib/mbuffers.c +++ b/lib/mbuffers.c @@ -50,7 +50,7 @@ * * Cost: O(1) */ -void _mbuffer_head_init(mbuffer_head_st * buf) +void _mbuffer_head_init(mbuffer_head_st *buf) { buf->head = NULL; buf->tail = NULL; @@ -64,7 +64,7 @@ void _mbuffer_head_init(mbuffer_head_st * buf) * Cost: O(n) * n: Number of segments currently in the buffer. */ -void _mbuffer_head_clear(mbuffer_head_st * buf) +void _mbuffer_head_clear(mbuffer_head_st *buf) { mbuffer_st *bufel, *next; @@ -80,7 +80,7 @@ void _mbuffer_head_clear(mbuffer_head_st * buf) * * Cost: O(1) */ -void _mbuffer_enqueue(mbuffer_head_st * buf, mbuffer_st * bufel) +void _mbuffer_enqueue(mbuffer_head_st *buf, mbuffer_st *bufel) { bufel->next = NULL; bufel->prev = buf->tail; @@ -101,14 +101,14 @@ void _mbuffer_enqueue(mbuffer_head_st * buf, mbuffer_st * bufel) * * Returns the buffer following it. */ -mbuffer_st *_mbuffer_dequeue(mbuffer_head_st * buf, mbuffer_st * bufel) +mbuffer_st *_mbuffer_dequeue(mbuffer_head_st *buf, mbuffer_st *bufel) { mbuffer_st *ret = bufel->next; - if (buf->tail == bufel) /* if last */ + if (buf->tail == bufel) /* if last */ buf->tail = bufel->prev; - if (buf->head == bufel) /* if first */ + if (buf->head == bufel) /* if first */ buf->head = bufel->next; if (bufel->prev) @@ -129,7 +129,7 @@ mbuffer_st *_mbuffer_dequeue(mbuffer_head_st * buf, mbuffer_st * bufel) * * Cost: O(1) */ -void _mbuffer_head_push_first(mbuffer_head_st * buf, mbuffer_st * bufel) +void _mbuffer_head_push_first(mbuffer_head_st *buf, mbuffer_st *bufel) { bufel->prev = NULL; bufel->next = buf->head; @@ -151,7 +151,7 @@ void _mbuffer_head_push_first(mbuffer_head_st * buf, mbuffer_st * bufel) * * Cost: O(1) */ -mbuffer_st *_mbuffer_head_pop_first(mbuffer_head_st * buf) +mbuffer_st *_mbuffer_head_pop_first(mbuffer_head_st *buf) { mbuffer_st *bufel = buf->head; @@ -169,7 +169,7 @@ mbuffer_st *_mbuffer_head_pop_first(mbuffer_head_st * buf) * * Cost: O(1) */ -mbuffer_st *_mbuffer_head_get_first(mbuffer_head_st * buf, gnutls_datum_t * msg) +mbuffer_st *_mbuffer_head_get_first(mbuffer_head_st *buf, gnutls_datum_t *msg) { mbuffer_st *bufel = buf->head; @@ -191,7 +191,7 @@ mbuffer_st *_mbuffer_head_get_first(mbuffer_head_st * buf, gnutls_datum_t * msg) * * Cost: O(1) */ -mbuffer_st *_mbuffer_head_get_next(mbuffer_st * cur, gnutls_datum_t * msg) +mbuffer_st *_mbuffer_head_get_next(mbuffer_st *cur, gnutls_datum_t *msg) { mbuffer_st *bufel = cur->next; @@ -214,7 +214,7 @@ mbuffer_st *_mbuffer_head_get_next(mbuffer_st * cur, gnutls_datum_t * msg) * * Cost: O(1) */ -static inline void remove_front(mbuffer_head_st * buf) +static inline void remove_front(mbuffer_head_st *buf) { mbuffer_st *bufel = buf->head; @@ -235,7 +235,7 @@ static inline void remove_front(mbuffer_head_st * buf) * Cost: O(n) * n: Number of segments needed to remove the specified amount of data. */ -int _mbuffer_head_remove_bytes(mbuffer_head_st * buf, size_t bytes) +int _mbuffer_head_remove_bytes(mbuffer_head_st *buf, size_t bytes) { size_t left = bytes; mbuffer_st *bufel, *next; @@ -285,7 +285,7 @@ mbuffer_st *_mbuffer_alloc(size_t maximum_size) memset(st, 0, sizeof(*st)); /* payload points after the mbuffer_st structure */ - st->msg.data = (uint8_t *) st + sizeof(mbuffer_st); + st->msg.data = (uint8_t *)st + sizeof(mbuffer_st); st->msg.size = 0; st->maximum_size = maximum_size; @@ -302,7 +302,7 @@ mbuffer_st *_mbuffer_alloc(size_t maximum_size) * Cost: O(n) * n: number of bytes to copy */ -int _mbuffer_append_data(mbuffer_st * bufel, void *newdata, size_t newdata_size) +int _mbuffer_append_data(mbuffer_st *bufel, void *newdata, size_t newdata_size) { if (bufel->msg.size + newdata_size <= bufel->maximum_size) { memcpy(&bufel->msg.data[bufel->msg.size], newdata, @@ -317,7 +317,7 @@ int _mbuffer_append_data(mbuffer_st * bufel, void *newdata, size_t newdata_size) } #ifdef ENABLE_ALIGN16 -# define ALIGN_SIZE 16 +#define ALIGN_SIZE 16 /* Allocate a 16-byte aligned buffer segment. The segment is not initially "owned" by * any buffer. @@ -347,7 +347,7 @@ mbuffer_st *_mbuffer_alloc_align16(size_t maximum_size, unsigned align_pos) memset(st, 0, sizeof(*st)); /* payload points after the mbuffer_st structure */ - st->msg.data = (uint8_t *) st + sizeof(mbuffer_st); + st->msg.data = (uint8_t *)st + sizeof(mbuffer_st); cur_alignment = ((size_t)(st->msg.data + align_pos)) % ALIGN_SIZE; if (cur_alignment > 0) @@ -359,7 +359,7 @@ mbuffer_st *_mbuffer_alloc_align16(size_t maximum_size, unsigned align_pos) return st; } -static unsigned is_aligned16(mbuffer_st * bufel, unsigned align_pos) +static unsigned is_aligned16(mbuffer_st *bufel, unsigned align_pos) { uint8_t *ptr = _mbuffer_get_udata_ptr(bufel); @@ -377,7 +377,7 @@ static unsigned is_aligned16(mbuffer_st * bufel, unsigned align_pos) * Cost: O(n) * n: number of segments initially in the buffer */ -int _mbuffer_linearize_align16(mbuffer_head_st * buf, unsigned align_pos) +int _mbuffer_linearize_align16(mbuffer_head_st *buf, unsigned align_pos) { mbuffer_st *bufel, *cur; gnutls_datum_t msg; @@ -400,8 +400,8 @@ int _mbuffer_linearize_align16(mbuffer_head_st * buf, unsigned align_pos) bufel->type = _mbuffer_head_get_first(buf, NULL)->type; - for (cur = _mbuffer_head_get_first(buf, &msg); - msg.data != NULL; cur = _mbuffer_head_get_next(cur, &msg)) { + for (cur = _mbuffer_head_get_first(buf, &msg); msg.data != NULL; + cur = _mbuffer_head_get_next(cur, &msg)) { memcpy(&bufel->msg.data[pos], msg.data, msg.size); bufel->msg.size += msg.size; pos += msg.size; @@ -413,7 +413,7 @@ int _mbuffer_linearize_align16(mbuffer_head_st * buf, unsigned align_pos) return 0; } #else -int _mbuffer_linearize(mbuffer_head_st * buf) +int _mbuffer_linearize(mbuffer_head_st *buf) { mbuffer_st *bufel, *cur; gnutls_datum_t msg; @@ -432,8 +432,8 @@ int _mbuffer_linearize(mbuffer_head_st * buf) bufel->type = _mbuffer_head_get_first(buf, NULL)->type; - for (cur = _mbuffer_head_get_first(buf, &msg); - msg.data != NULL; cur = _mbuffer_head_get_next(cur, &msg)) { + for (cur = _mbuffer_head_get_first(buf, &msg); msg.data != NULL; + cur = _mbuffer_head_get_next(cur, &msg)) { memcpy(&bufel->msg.data[pos], msg.data, msg.size); bufel->msg.size += msg.size; pos += msg.size; diff --git a/lib/mbuffers.h b/lib/mbuffers.h index c2aa1848db..44059d9348 100644 --- a/lib/mbuffers.h +++ b/lib/mbuffers.h @@ -21,67 +21,65 @@ */ #ifndef GNUTLS_LIB_MBUFFERS_H -# define GNUTLS_LIB_MBUFFERS_H +#define GNUTLS_LIB_MBUFFERS_H -# include "gnutls_int.h" -# include "errors.h" -# include +#include "gnutls_int.h" +#include "errors.h" +#include -void _mbuffer_head_init(mbuffer_head_st * buf); -void _mbuffer_head_clear(mbuffer_head_st * buf); -void _mbuffer_enqueue(mbuffer_head_st * buf, mbuffer_st * bufel); -mbuffer_st *_mbuffer_dequeue(mbuffer_head_st * buf, mbuffer_st * bufel); -int _mbuffer_head_remove_bytes(mbuffer_head_st * buf, size_t bytes); +void _mbuffer_head_init(mbuffer_head_st *buf); +void _mbuffer_head_clear(mbuffer_head_st *buf); +void _mbuffer_enqueue(mbuffer_head_st *buf, mbuffer_st *bufel); +mbuffer_st *_mbuffer_dequeue(mbuffer_head_st *buf, mbuffer_st *bufel); +int _mbuffer_head_remove_bytes(mbuffer_head_st *buf, size_t bytes); mbuffer_st *_mbuffer_alloc(size_t maximum_size); -int _mbuffer_linearize(mbuffer_head_st * buf); +int _mbuffer_linearize(mbuffer_head_st *buf); -mbuffer_st *_mbuffer_head_get_first(mbuffer_head_st * buf, - gnutls_datum_t * msg); -mbuffer_st *_mbuffer_head_get_next(mbuffer_st * cur, gnutls_datum_t * msg); +mbuffer_st *_mbuffer_head_get_first(mbuffer_head_st *buf, gnutls_datum_t *msg); +mbuffer_st *_mbuffer_head_get_next(mbuffer_st *cur, gnutls_datum_t *msg); -void _mbuffer_head_push_first(mbuffer_head_st * buf, mbuffer_st * bufel); +void _mbuffer_head_push_first(mbuffer_head_st *buf, mbuffer_st *bufel); -mbuffer_st *_mbuffer_head_pop_first(mbuffer_head_st * buf); +mbuffer_st *_mbuffer_head_pop_first(mbuffer_head_st *buf); /* This is dangerous since it will replace bufel with a new * one. */ -int _mbuffer_append_data(mbuffer_st * bufel, void *newdata, - size_t newdata_size); +int _mbuffer_append_data(mbuffer_st *bufel, void *newdata, size_t newdata_size); /* For "user" use. One can have buffer data and header. */ -inline static void *_mbuffer_get_uhead_ptr(mbuffer_st * bufel) +inline static void *_mbuffer_get_uhead_ptr(mbuffer_st *bufel) { return bufel->msg.data + bufel->mark; } -inline static void *_mbuffer_get_udata_ptr(mbuffer_st * bufel) +inline static void *_mbuffer_get_udata_ptr(mbuffer_st *bufel) { return bufel->msg.data + bufel->uhead_mark + bufel->mark; } -inline static void _mbuffer_set_udata_size(mbuffer_st * bufel, size_t size) +inline static void _mbuffer_set_udata_size(mbuffer_st *bufel, size_t size) { bufel->msg.size = size + bufel->uhead_mark + bufel->mark; } -inline static void -_mbuffer_set_udata(mbuffer_st * bufel, void *data, size_t data_size) +inline static void _mbuffer_set_udata(mbuffer_st *bufel, void *data, + size_t data_size) { memcpy(_mbuffer_get_udata_ptr(bufel), data, data_size); _mbuffer_set_udata_size(bufel, data_size); } -inline static size_t _mbuffer_get_udata_size(mbuffer_st * bufel) +inline static size_t _mbuffer_get_udata_size(mbuffer_st *bufel) { return bufel->msg.size - bufel->uhead_mark - bufel->mark; } /* discards size bytes from the begging of the buffer */ -inline static void -_mbuffer_consume(mbuffer_head_st * buf, mbuffer_st * bufel, size_t size) +inline static void _mbuffer_consume(mbuffer_head_st *buf, mbuffer_st *bufel, + size_t size) { bufel->uhead_mark = 0; if (bufel->mark + size < bufel->msg.size) @@ -92,29 +90,29 @@ _mbuffer_consume(mbuffer_head_st * buf, mbuffer_st * bufel, size_t size) buf->byte_length -= size; } -inline static size_t _mbuffer_get_uhead_size(mbuffer_st * bufel) +inline static size_t _mbuffer_get_uhead_size(mbuffer_st *bufel) { return bufel->uhead_mark; } -inline static void _mbuffer_set_uhead_size(mbuffer_st * bufel, size_t size) +inline static void _mbuffer_set_uhead_size(mbuffer_st *bufel, size_t size) { bufel->uhead_mark = size; } -inline static void _mbuffer_init(mbuffer_st * bufel, size_t max) +inline static void _mbuffer_init(mbuffer_st *bufel, size_t max) { memset(bufel, 0, sizeof(*bufel)); bufel->maximum_size = max; /* payload points after the mbuffer_st structure */ - bufel->msg.data = (uint8_t *) bufel + sizeof(mbuffer_st); + bufel->msg.data = (uint8_t *)bufel + sizeof(mbuffer_st); } /* Helper functions to utilize a gnutls_buffer_st in order * to generate a gnutls_mbuffer_st, without multiple allocations. */ -inline static int _gnutls_buffer_init_mbuffer(gnutls_buffer_st * buf, +inline static int _gnutls_buffer_init_mbuffer(gnutls_buffer_st *buf, size_t header_size) { int ret; @@ -136,10 +134,11 @@ inline static int _gnutls_buffer_init_mbuffer(gnutls_buffer_st * buf, return 0; } -# define _gnutls_buffer_init_handshake_mbuffer(b) _gnutls_buffer_init_mbuffer(b, HANDSHAKE_HEADER_SIZE(session)) +#define _gnutls_buffer_init_handshake_mbuffer(b) \ + _gnutls_buffer_init_mbuffer(b, HANDSHAKE_HEADER_SIZE(session)) /* Cannot fail */ -inline static mbuffer_st *_gnutls_buffer_to_mbuffer(gnutls_buffer_st * buf) +inline static mbuffer_st *_gnutls_buffer_to_mbuffer(gnutls_buffer_st *buf) { mbuffer_st *bufel; unsigned header_size; @@ -154,7 +153,7 @@ inline static mbuffer_st *_gnutls_buffer_to_mbuffer(gnutls_buffer_st * buf) _mbuffer_set_udata_size(bufel, buf->length - sizeof(mbuffer_st)); _mbuffer_set_uhead_size(bufel, header_size); - _gnutls_buffer_init(buf); /* avoid double frees */ + _gnutls_buffer_init(buf); /* avoid double frees */ return bufel; } @@ -163,7 +162,7 @@ inline static mbuffer_st *_gnutls_handshake_alloc(gnutls_session_t session, size_t maximum) { mbuffer_st *bufel = - _mbuffer_alloc(HANDSHAKE_HEADER_SIZE(session) + maximum); + _mbuffer_alloc(HANDSHAKE_HEADER_SIZE(session) + maximum); if (!bufel) return NULL; @@ -180,7 +179,7 @@ inline static mbuffer_st *_gnutls_handshake_alloc(gnutls_session_t session, * pointer case). It also makes sure the pointer has a known value * after freeing. */ -inline static void _mbuffer_xfree(mbuffer_st ** bufel) +inline static void _mbuffer_xfree(mbuffer_st **bufel) { if (*bufel) gnutls_free(*bufel); @@ -188,12 +187,12 @@ inline static void _mbuffer_xfree(mbuffer_st ** bufel) *bufel = NULL; } -# ifdef ENABLE_ALIGN16 +#ifdef ENABLE_ALIGN16 mbuffer_st *_mbuffer_alloc_align16(size_t maximum_size, unsigned align_pos); -int _mbuffer_linearize_align16(mbuffer_head_st * buf, unsigned align_pos); -# else -# define _mbuffer_alloc_align16(x,y) _mbuffer_alloc(x) -# define _mbuffer_linearize_align16(x,y) _mbuffer_linearize(x) -# endif +int _mbuffer_linearize_align16(mbuffer_head_st *buf, unsigned align_pos); +#else +#define _mbuffer_alloc_align16(x, y) _mbuffer_alloc(x) +#define _mbuffer_linearize_align16(x, y) _mbuffer_linearize(x) +#endif -#endif /* GNUTLS_LIB_MBUFFERS_H */ +#endif /* GNUTLS_LIB_MBUFFERS_H */ diff --git a/lib/mem.c b/lib/mem.c index b5ea1582ef..8527538410 100644 --- a/lib/mem.c +++ b/lib/mem.c @@ -86,8 +86,9 @@ char *_gnutls_strdup(const char *str) void *_gnutls_reallocarray(void *ptr, size_t nmemb, size_t size) { - return xalloc_oversized(nmemb, size) ? NULL : - gnutls_realloc(ptr, nmemb * size); + return xalloc_oversized(nmemb, size) ? + NULL : + gnutls_realloc(ptr, nmemb * size); } #if 0 @@ -130,7 +131,7 @@ void gnutls_free(void *ptr) /* Returns 1 if the provided buffer is all zero. * It leaks no information via timing. */ -unsigned _gnutls_mem_is_zero(const uint8_t * ptr, unsigned size) +unsigned _gnutls_mem_is_zero(const uint8_t *ptr, unsigned size) { unsigned i; uint8_t res = 0; diff --git a/lib/mem.h b/lib/mem.h index a0e088ea0d..899c6bb7dd 100644 --- a/lib/mem.h +++ b/lib/mem.h @@ -21,17 +21,17 @@ */ #ifndef GNUTLS_LIB_MEM_H -# define GNUTLS_LIB_MEM_H +#define GNUTLS_LIB_MEM_H -# include "config.h" +#include "config.h" -# ifdef HAVE_SANITIZER_ASAN_INTERFACE_H -# include -# endif +#ifdef HAVE_SANITIZER_ASAN_INTERFACE_H +#include +#endif -# ifdef HAVE_VALGRIND_MEMCHECK_H -# include -# endif +#ifdef HAVE_VALGRIND_MEMCHECK_H +#include +#endif /* These realloc functions will return ptr if size==0, and will free * the ptr if the new allocation failed. @@ -43,38 +43,39 @@ char *_gnutls_strdup(const char *); void *_gnutls_reallocarray(void *, size_t, size_t); -unsigned _gnutls_mem_is_zero(const uint8_t * ptr, unsigned size); +unsigned _gnutls_mem_is_zero(const uint8_t *ptr, unsigned size); -# define zrelease_mpi_key(mpi) if (*mpi!=NULL) { \ - _gnutls_mpi_clear(*mpi); \ +#define zrelease_mpi_key(mpi) \ + if (*mpi != NULL) { \ + _gnutls_mpi_clear(*mpi); \ _gnutls_mpi_release(mpi); \ } -# define zeroize_key(x, size) gnutls_memset(x, 0, size) +#define zeroize_key(x, size) gnutls_memset(x, 0, size) -# define zeroize_temp_key zeroize_key -# define zrelease_temp_mpi_key zrelease_mpi_key +#define zeroize_temp_key zeroize_key +#define zrelease_temp_mpi_key zrelease_mpi_key static inline void _gnutls_memory_mark_undefined(void *addr, size_t size) { -# ifdef HAVE_SANITIZER_ASAN_INTERFACE_H +#ifdef HAVE_SANITIZER_ASAN_INTERFACE_H ASAN_POISON_MEMORY_REGION(addr, size); -# endif -# ifdef HAVE_VALGRIND_MEMCHECK_H +#endif +#ifdef HAVE_VALGRIND_MEMCHECK_H if (RUNNING_ON_VALGRIND) VALGRIND_MAKE_MEM_UNDEFINED(addr, size); -# endif +#endif } static inline void _gnutls_memory_mark_defined(void *addr, size_t size) { -# ifdef HAVE_SANITIZER_ASAN_INTERFACE_H +#ifdef HAVE_SANITIZER_ASAN_INTERFACE_H ASAN_UNPOISON_MEMORY_REGION(addr, size); -# endif -# ifdef HAVE_VALGRIND_MEMCHECK_H +#endif +#ifdef HAVE_VALGRIND_MEMCHECK_H if (RUNNING_ON_VALGRIND) VALGRIND_MAKE_MEM_DEFINED(addr, size); -# endif +#endif } -#endif /* GNUTLS_LIB_MEM_H */ +#endif /* GNUTLS_LIB_MEM_H */ diff --git a/lib/mpi.c b/lib/mpi.c index 3dc2261ef6..cc91cacc90 100644 --- a/lib/mpi.c +++ b/lib/mpi.c @@ -36,8 +36,8 @@ */ /* Returns a random number r, 0 < r < p */ -bigint_t -_gnutls_mpi_random_modp(bigint_t r, bigint_t p, gnutls_rnd_level_t level) +bigint_t _gnutls_mpi_random_modp(bigint_t r, bigint_t p, + gnutls_rnd_level_t level) { size_t size; int ret; @@ -100,7 +100,7 @@ _gnutls_mpi_random_modp(bigint_t r, bigint_t p, gnutls_rnd_level_t level) return tmp; - cleanup: +cleanup: if (buf_release != 0) gnutls_free(buf); return NULL; @@ -108,7 +108,7 @@ _gnutls_mpi_random_modp(bigint_t r, bigint_t p, gnutls_rnd_level_t level) /* returns %GNUTLS_E_SUCCESS (0) on success */ -int _gnutls_mpi_init_scan(bigint_t * ret_mpi, const void *buffer, size_t nbytes) +int _gnutls_mpi_init_scan(bigint_t *ret_mpi, const void *buffer, size_t nbytes) { bigint_t r; int ret; @@ -131,8 +131,8 @@ int _gnutls_mpi_init_scan(bigint_t * ret_mpi, const void *buffer, size_t nbytes) /* returns %GNUTLS_E_SUCCESS (0) on success. Fails if the number is zero. */ -int -_gnutls_mpi_init_scan_nz(bigint_t * ret_mpi, const void *buffer, size_t nbytes) +int _gnutls_mpi_init_scan_nz(bigint_t *ret_mpi, const void *buffer, + size_t nbytes) { int ret; @@ -150,8 +150,8 @@ _gnutls_mpi_init_scan_nz(bigint_t * ret_mpi, const void *buffer, size_t nbytes) return 0; } -int -_gnutls_mpi_init_scan_le(bigint_t * ret_mpi, const void *buffer, size_t nbytes) +int _gnutls_mpi_init_scan_le(bigint_t *ret_mpi, const void *buffer, + size_t nbytes) { bigint_t r; int ret; @@ -172,7 +172,7 @@ _gnutls_mpi_init_scan_le(bigint_t * ret_mpi, const void *buffer, size_t nbytes) return 0; } -int _gnutls_mpi_dprint_le(const bigint_t a, gnutls_datum_t * dest) +int _gnutls_mpi_dprint_le(const bigint_t a, gnutls_datum_t *dest) { int ret; uint8_t *buf = NULL; @@ -199,7 +199,7 @@ int _gnutls_mpi_dprint_le(const bigint_t a, gnutls_datum_t * dest) } /* Always has the first bit zero */ -int _gnutls_mpi_dprint_lz(const bigint_t a, gnutls_datum_t * dest) +int _gnutls_mpi_dprint_lz(const bigint_t a, gnutls_datum_t *dest) { int ret; uint8_t *buf = NULL; @@ -226,7 +226,7 @@ int _gnutls_mpi_dprint_lz(const bigint_t a, gnutls_datum_t * dest) return 0; } -int _gnutls_mpi_dprint(const bigint_t a, gnutls_datum_t * dest) +int _gnutls_mpi_dprint(const bigint_t a, gnutls_datum_t *dest) { int ret; uint8_t *buf = NULL; @@ -256,8 +256,7 @@ int _gnutls_mpi_dprint(const bigint_t a, gnutls_datum_t * dest) * but will set minimum size to 'size'. That means that * the output value is left padded with zeros. */ -int -_gnutls_mpi_dprint_size(const bigint_t a, gnutls_datum_t * dest, size_t size) +int _gnutls_mpi_dprint_size(const bigint_t a, gnutls_datum_t *dest, size_t size) { int ret; uint8_t *buf = NULL; @@ -293,7 +292,7 @@ _gnutls_mpi_dprint_size(const bigint_t a, gnutls_datum_t * dest, size_t size) } /* like _gnutls_mpi_dprint_size, but prints into preallocated byte buffer */ -int _gnutls_mpi_bprint_size(const bigint_t a, uint8_t * buf, size_t size) +int _gnutls_mpi_bprint_size(const bigint_t a, uint8_t *buf, size_t size) { int result; size_t bytes = 0; @@ -317,17 +316,16 @@ int _gnutls_mpi_bprint_size(const bigint_t a, uint8_t * buf, size_t size) } /* Flags for __gnutls_x509_read_int() and __gnutls_x509_write_int */ -#define GNUTLS_X509_INT_OVERWRITE (1 << 0) -#define GNUTLS_X509_INT_LE (1 << 1) -#define GNUTLS_X509_INT_LZ (1 << 2) /* write only */ +#define GNUTLS_X509_INT_OVERWRITE (1 << 0) +#define GNUTLS_X509_INT_LE (1 << 1) +#define GNUTLS_X509_INT_LZ (1 << 2) /* write only */ /* this function reads an integer * from asn1 structs. Combines the read and mpi_scan * steps. */ -static int -__gnutls_x509_read_int(asn1_node node, const char *value, - bigint_t * ret_mpi, unsigned int flags) +static int __gnutls_x509_read_int(asn1_node node, const char *value, + bigint_t *ret_mpi, unsigned int flags) { int result; uint8_t *tmpstr = NULL; @@ -370,32 +368,30 @@ __gnutls_x509_read_int(asn1_node node, const char *value, return 0; } -int _gnutls_x509_read_int(asn1_node node, const char *value, bigint_t * ret_mpi) +int _gnutls_x509_read_int(asn1_node node, const char *value, bigint_t *ret_mpi) { return __gnutls_x509_read_int(node, value, ret_mpi, 0); } -int -_gnutls_x509_read_key_int(asn1_node node, const char *value, bigint_t * ret_mpi) +int _gnutls_x509_read_key_int(asn1_node node, const char *value, + bigint_t *ret_mpi) { return __gnutls_x509_read_int(node, value, ret_mpi, GNUTLS_X509_INT_OVERWRITE); } -int -_gnutls_x509_read_key_int_le(asn1_node node, const char *value, - bigint_t * ret_mpi) +int _gnutls_x509_read_key_int_le(asn1_node node, const char *value, + bigint_t *ret_mpi) { return __gnutls_x509_read_int(node, value, ret_mpi, GNUTLS_X509_INT_OVERWRITE | - GNUTLS_X509_INT_LE); + GNUTLS_X509_INT_LE); } /* Writes the specified integer into the specified node. */ -static int -__gnutls_x509_write_int(asn1_node node, const char *value, bigint_t mpi, - unsigned int flags) +static int __gnutls_x509_write_int(asn1_node node, const char *value, + bigint_t mpi, unsigned int flags) { uint8_t *tmpstr; size_t s_len; @@ -448,26 +444,25 @@ __gnutls_x509_write_int(asn1_node node, const char *value, bigint_t mpi, return 0; } -int -_gnutls_x509_write_int(asn1_node node, const char *value, bigint_t mpi, int lz) +int _gnutls_x509_write_int(asn1_node node, const char *value, bigint_t mpi, + int lz) { return __gnutls_x509_write_int(node, value, mpi, lz ? GNUTLS_X509_INT_LZ : 0); } -int -_gnutls_x509_write_key_int(asn1_node node, const char *value, bigint_t mpi, - int lz) +int _gnutls_x509_write_key_int(asn1_node node, const char *value, bigint_t mpi, + int lz) { return __gnutls_x509_write_int(node, value, mpi, (lz ? GNUTLS_X509_INT_LZ : 0) | - GNUTLS_X509_INT_OVERWRITE); + GNUTLS_X509_INT_OVERWRITE); } -int -_gnutls_x509_write_key_int_le(asn1_node node, const char *value, bigint_t mpi) +int _gnutls_x509_write_key_int_le(asn1_node node, const char *value, + bigint_t mpi) { return __gnutls_x509_write_int(node, value, mpi, GNUTLS_X509_INT_OVERWRITE | - GNUTLS_X509_INT_LE); + GNUTLS_X509_INT_LE); } diff --git a/lib/mpi.h b/lib/mpi.h index 9770f72025..c90bbcd6b4 100644 --- a/lib/mpi.h +++ b/lib/mpi.h @@ -21,11 +21,11 @@ */ #ifndef GNUTLS_LIB_MPI_H -# define GNUTLS_LIB_MPI_H +#define GNUTLS_LIB_MPI_H -# include "gnutls_int.h" +#include "gnutls_int.h" -# include +#include extern int crypto_bigint_prio; extern gnutls_crypto_bigint_st _gnutls_mpi_ops; @@ -33,37 +33,41 @@ extern gnutls_crypto_bigint_st _gnutls_mpi_ops; bigint_t _gnutls_mpi_random_modp(bigint_t, bigint_t p, gnutls_rnd_level_t level); -# define _gnutls_mpi_init _gnutls_mpi_ops.bigint_init -# define _gnutls_mpi_init_multi _gnutls_mpi_ops.bigint_init_multi -# define _gnutls_mpi_clear _gnutls_mpi_ops.bigint_clear -# define _gnutls_mpi_cmp _gnutls_mpi_ops.bigint_cmp -# define _gnutls_mpi_cmp_ui _gnutls_mpi_ops.bigint_cmp_ui -# define _gnutls_mpi_mod _gnutls_mpi_ops.bigint_mod -# define _gnutls_mpi_modm _gnutls_mpi_ops.bigint_modm -# define _gnutls_mpi_set _gnutls_mpi_ops.bigint_set -# define _gnutls_mpi_set_ui _gnutls_mpi_ops.bigint_set_ui -# define _gnutls_mpi_get_nbits _gnutls_mpi_ops.bigint_get_nbits -# define _gnutls_mpi_powm _gnutls_mpi_ops.bigint_powm -# define _gnutls_mpi_addm _gnutls_mpi_ops.bigint_addm -# define _gnutls_mpi_subm _gnutls_mpi_ops.bigint_subm -# define _gnutls_mpi_mulm _gnutls_mpi_ops.bigint_mulm -# define _gnutls_mpi_add _gnutls_mpi_ops.bigint_add -# define _gnutls_mpi_sub _gnutls_mpi_ops.bigint_sub -# define _gnutls_mpi_mul _gnutls_mpi_ops.bigint_mul -# define _gnutls_mpi_div _gnutls_mpi_ops.bigint_div -# define _gnutls_mpi_add_ui _gnutls_mpi_ops.bigint_add_ui -# define _gnutls_mpi_sub_ui _gnutls_mpi_ops.bigint_sub_ui -# define _gnutls_mpi_mul_ui _gnutls_mpi_ops.bigint_mul_ui -# define _gnutls_prime_check _gnutls_mpi_ops.bigint_prime_check -# define _gnutls_mpi_print(x,y,z) _gnutls_mpi_ops.bigint_print(x,y,z,GNUTLS_MPI_FORMAT_USG) -# define _gnutls_mpi_print_lz(x,y,z) _gnutls_mpi_ops.bigint_print(x,y,z,GNUTLS_MPI_FORMAT_STD) -# define _gnutls_mpi_print_le(x,y,z) _gnutls_mpi_ops.bigint_print(x,y,z,GNUTLS_MPI_FORMAT_ULE) -# define _gnutls_mpi_copy _gnutls_mpi_ops.bigint_copy -# define _gnutls_mpi_scan(r, b, s) _gnutls_mpi_ops.bigint_scan(r, b, s, GNUTLS_MPI_FORMAT_USG) -# define _gnutls_mpi_scan_le(r, b, s) _gnutls_mpi_ops.bigint_scan(r, b, s, GNUTLS_MPI_FORMAT_ULE) +#define _gnutls_mpi_init _gnutls_mpi_ops.bigint_init +#define _gnutls_mpi_init_multi _gnutls_mpi_ops.bigint_init_multi +#define _gnutls_mpi_clear _gnutls_mpi_ops.bigint_clear +#define _gnutls_mpi_cmp _gnutls_mpi_ops.bigint_cmp +#define _gnutls_mpi_cmp_ui _gnutls_mpi_ops.bigint_cmp_ui +#define _gnutls_mpi_mod _gnutls_mpi_ops.bigint_mod +#define _gnutls_mpi_modm _gnutls_mpi_ops.bigint_modm +#define _gnutls_mpi_set _gnutls_mpi_ops.bigint_set +#define _gnutls_mpi_set_ui _gnutls_mpi_ops.bigint_set_ui +#define _gnutls_mpi_get_nbits _gnutls_mpi_ops.bigint_get_nbits +#define _gnutls_mpi_powm _gnutls_mpi_ops.bigint_powm +#define _gnutls_mpi_addm _gnutls_mpi_ops.bigint_addm +#define _gnutls_mpi_subm _gnutls_mpi_ops.bigint_subm +#define _gnutls_mpi_mulm _gnutls_mpi_ops.bigint_mulm +#define _gnutls_mpi_add _gnutls_mpi_ops.bigint_add +#define _gnutls_mpi_sub _gnutls_mpi_ops.bigint_sub +#define _gnutls_mpi_mul _gnutls_mpi_ops.bigint_mul +#define _gnutls_mpi_div _gnutls_mpi_ops.bigint_div +#define _gnutls_mpi_add_ui _gnutls_mpi_ops.bigint_add_ui +#define _gnutls_mpi_sub_ui _gnutls_mpi_ops.bigint_sub_ui +#define _gnutls_mpi_mul_ui _gnutls_mpi_ops.bigint_mul_ui +#define _gnutls_prime_check _gnutls_mpi_ops.bigint_prime_check +#define _gnutls_mpi_print(x, y, z) \ + _gnutls_mpi_ops.bigint_print(x, y, z, GNUTLS_MPI_FORMAT_USG) +#define _gnutls_mpi_print_lz(x, y, z) \ + _gnutls_mpi_ops.bigint_print(x, y, z, GNUTLS_MPI_FORMAT_STD) +#define _gnutls_mpi_print_le(x, y, z) \ + _gnutls_mpi_ops.bigint_print(x, y, z, GNUTLS_MPI_FORMAT_ULE) +#define _gnutls_mpi_copy _gnutls_mpi_ops.bigint_copy +#define _gnutls_mpi_scan(r, b, s) \ + _gnutls_mpi_ops.bigint_scan(r, b, s, GNUTLS_MPI_FORMAT_USG) +#define _gnutls_mpi_scan_le(r, b, s) \ + _gnutls_mpi_ops.bigint_scan(r, b, s, GNUTLS_MPI_FORMAT_ULE) -inline static -void _gnutls_mpi_release(bigint_t * x) +inline static void _gnutls_mpi_release(bigint_t *x) { if (*x == NULL) return; @@ -72,22 +76,22 @@ void _gnutls_mpi_release(bigint_t * x) *x = NULL; } -int _gnutls_mpi_init_scan(bigint_t * ret_mpi, const void *buffer, - size_t nbytes); -int _gnutls_mpi_init_scan_nz(bigint_t * ret_mpi, const void *buffer, +int _gnutls_mpi_init_scan(bigint_t *ret_mpi, const void *buffer, size_t nbytes); +int _gnutls_mpi_init_scan_nz(bigint_t *ret_mpi, const void *buffer, size_t nbytes); -int _gnutls_mpi_init_scan_le(bigint_t * ret_mpi, const void *buffer, +int _gnutls_mpi_init_scan_le(bigint_t *ret_mpi, const void *buffer, size_t nbytes); -int _gnutls_mpi_dprint_le(const bigint_t a, gnutls_datum_t * dest); -int _gnutls_mpi_dprint_lz(const bigint_t a, gnutls_datum_t * dest); -int _gnutls_mpi_dprint(const bigint_t a, gnutls_datum_t * dest); -int _gnutls_mpi_dprint_size(const bigint_t a, gnutls_datum_t * dest, +int _gnutls_mpi_dprint_le(const bigint_t a, gnutls_datum_t *dest); +int _gnutls_mpi_dprint_lz(const bigint_t a, gnutls_datum_t *dest); +int _gnutls_mpi_dprint(const bigint_t a, gnutls_datum_t *dest); +int _gnutls_mpi_dprint_size(const bigint_t a, gnutls_datum_t *dest, size_t size); -int _gnutls_mpi_bprint_size(const bigint_t a, uint8_t * buf, size_t size); +int _gnutls_mpi_bprint_size(const bigint_t a, uint8_t *buf, size_t size); -typedef int (*mpi_dprint_func)(const bigint_t a, gnutls_datum_t * dest); +typedef int (*mpi_dprint_func)(const bigint_t a, gnutls_datum_t *dest); -# define _gnutls_mpi_generate_group( gg, bits) _gnutls_mpi_ops.bigint_generate_group( gg, bits) +#define _gnutls_mpi_generate_group(gg, bits) \ + _gnutls_mpi_ops.bigint_generate_group(gg, bits) -#endif /* GNUTLS_LIB_MPI_H */ +#endif /* GNUTLS_LIB_MPI_H */ diff --git a/lib/name_val_array.h b/lib/name_val_array.h index 211f93b250..1cbab723ee 100644 --- a/lib/name_val_array.h +++ b/lib/name_val_array.h @@ -22,10 +22,10 @@ */ #ifndef GNUTLS_NAME_VAL_ARRAY_H -# define GNUTLS_NAME_VAL_ARRAY_H +#define GNUTLS_NAME_VAL_ARRAY_H -# include "gnutls_int.h" -# include "errors.h" +#include "gnutls_int.h" +#include "errors.h" /* Functionality to allow an array of strings. Strings * are allowed to be added to the list and matched against it. @@ -38,7 +38,7 @@ typedef struct name_val_array_st { struct name_val_array_st *next; } *name_val_array_t; -inline static void _name_val_array_clear(name_val_array_t * head) +inline static void _name_val_array_clear(name_val_array_t *head) { name_val_array_t prev, array = *head; @@ -75,8 +75,8 @@ inline static void append(name_val_array_t array, const char *name, array->name[name_len] = 0; array->name_size = name_len; - array->val = - ((char *)array) + name_len + 1 + sizeof(struct name_val_array_st); + array->val = ((char *)array) + name_len + 1 + + sizeof(struct name_val_array_st); if (val) memcpy(array->val, val, val_len); array->val[val_len] = 0; @@ -84,7 +84,7 @@ inline static void append(name_val_array_t array, const char *name, array->next = NULL; } -inline static int _name_val_array_append(name_val_array_t * head, +inline static int _name_val_array_append(name_val_array_t *head, const char *name, const char *val) { name_val_array_t prev, array; @@ -92,9 +92,8 @@ inline static int _name_val_array_append(name_val_array_t * head, unsigned val_len = (val == NULL) ? 0 : strlen(val); if (*head == NULL) { - *head = - gnutls_malloc(val_len + name_len + 2 + - sizeof(struct name_val_array_st)); + *head = gnutls_malloc(val_len + name_len + 2 + + sizeof(struct name_val_array_st)); if (*head == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); @@ -108,9 +107,8 @@ inline static int _name_val_array_append(name_val_array_t * head, prev = array; array = prev->next; } - prev->next = - gnutls_malloc(name_len + val_len + 2 + - sizeof(struct name_val_array_st)); + prev->next = gnutls_malloc(name_len + val_len + 2 + + sizeof(struct name_val_array_st)); array = prev->next; if (array == NULL) diff --git a/lib/nettle/cipher.c b/lib/nettle/cipher.c index f34fbb19b0..46e1277dd2 100644 --- a/lib/nettle/cipher.c +++ b/lib/nettle/cipher.c @@ -35,23 +35,23 @@ #include #include #if ENABLE_GOST -# ifndef HAVE_NETTLE_GOST28147_SET_KEY -# include "gost/gost28147.h" -# else -# include -# endif -# ifndef HAVE_NETTLE_MAGMA_SET_KEY -# include "gost/magma.h" -# else -# include -# endif -# ifndef HAVE_NETTLE_KUZNYECHIK_SET_KEY -# include "gost/kuznyechik.h" -# else -# include -# endif -# include "gost/acpkm.h" -# include +#ifndef HAVE_NETTLE_GOST28147_SET_KEY +#include "gost/gost28147.h" +#else +#include +#endif +#ifndef HAVE_NETTLE_MAGMA_SET_KEY +#include "gost/magma.h" +#else +#include +#endif +#ifndef HAVE_NETTLE_KUZNYECHIK_SET_KEY +#include "gost/kuznyechik.h" +#else +#include +#endif +#include "gost/acpkm.h" +#include #endif #include #include @@ -69,23 +69,21 @@ struct nettle_cipher_ctx; /* Functions that refer to the nettle library. */ -typedef void (*encrypt_func)(struct nettle_cipher_ctx *, - size_t length, uint8_t * dst, const uint8_t * src); -typedef void (*decrypt_func)(struct nettle_cipher_ctx *, - size_t length, uint8_t * dst, const uint8_t * src); - -typedef void (*aead_encrypt_func)(struct nettle_cipher_ctx *, - size_t nonce_size, const void *nonce, - size_t auth_size, const void *auth, - size_t tag_size, - size_t length, uint8_t * dst, - const uint8_t * src); -typedef int (*aead_decrypt_func)(struct nettle_cipher_ctx *, - size_t nonce_size, const void *nonce, - size_t auth_size, const void *auth, - size_t tag_size, - size_t length, uint8_t * dst, - const uint8_t * src); +typedef void (*encrypt_func)(struct nettle_cipher_ctx *, size_t length, + uint8_t *dst, const uint8_t *src); +typedef void (*decrypt_func)(struct nettle_cipher_ctx *, size_t length, + uint8_t *dst, const uint8_t *src); + +typedef void (*aead_encrypt_func)(struct nettle_cipher_ctx *, size_t nonce_size, + const void *nonce, size_t auth_size, + const void *auth, size_t tag_size, + size_t length, uint8_t *dst, + const uint8_t *src); +typedef int (*aead_decrypt_func)(struct nettle_cipher_ctx *, size_t nonce_size, + const void *nonce, size_t auth_size, + const void *auth, size_t tag_size, + size_t length, uint8_t *dst, + const uint8_t *src); typedef void (*setiv_func)(void *ctx, size_t length, const uint8_t *); typedef void (*gen_setkey_func)(void *ctx, size_t length, const uint8_t *); @@ -107,13 +105,13 @@ struct nettle_cipher_st { nettle_hash_digest_func *tag; nettle_set_key_func *set_encrypt_key; nettle_set_key_func *set_decrypt_key; - gen_setkey_func gen_set_key; /* for arcfour which has variable key size */ + gen_setkey_func gen_set_key; /* for arcfour which has variable key size */ setiv_func set_iv; }; struct nettle_cipher_ctx { const struct nettle_cipher_st *cipher; - void *ctx_ptr; /* always 16-aligned */ + void *ctx_ptr; /* always 16-aligned */ uint8_t iv[MAX_CIPHER_BLOCK_SIZE]; unsigned iv_size; @@ -135,34 +133,30 @@ static inline int record_aes_gcm_encrypt_size(size_t *counter, size_t size) return 0; } -static void -_stream_encrypt(struct nettle_cipher_ctx *ctx, size_t length, uint8_t * dst, - const uint8_t * src) +static void _stream_encrypt(struct nettle_cipher_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src) { ctx->cipher->encrypt_block(ctx->ctx_ptr, length, dst, src); } -static void -_stream_decrypt(struct nettle_cipher_ctx *ctx, size_t length, uint8_t * dst, - const uint8_t * src) +static void _stream_decrypt(struct nettle_cipher_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src) { ctx->cipher->decrypt_block(ctx->ctx_ptr, length, dst, src); } -static void -_cbc_encrypt(struct nettle_cipher_ctx *ctx, size_t length, uint8_t * dst, - const uint8_t * src) +static void _cbc_encrypt(struct nettle_cipher_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src) { - cbc_encrypt(ctx->ctx_ptr, ctx->cipher->encrypt_block, - ctx->iv_size, ctx->iv, length, dst, src); + cbc_encrypt(ctx->ctx_ptr, ctx->cipher->encrypt_block, ctx->iv_size, + ctx->iv, length, dst, src); } -static void -_cbc_decrypt(struct nettle_cipher_ctx *ctx, size_t length, uint8_t * dst, - const uint8_t * src) +static void _cbc_decrypt(struct nettle_cipher_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src) { - cbc_decrypt(ctx->ctx_ptr, ctx->cipher->decrypt_block, - ctx->iv_size, ctx->iv, length, dst, src); + cbc_decrypt(ctx->ctx_ptr, ctx->cipher->decrypt_block, ctx->iv_size, + ctx->iv, length, dst, src); } #if ENABLE_GOST @@ -178,148 +172,138 @@ struct kuznyechik_acpkm_ctx { struct kuznyechik_ctx cipher; }; -static void -_cfb_encrypt(struct nettle_cipher_ctx *ctx, size_t length, uint8_t * dst, - const uint8_t * src) +static void _cfb_encrypt(struct nettle_cipher_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src) { - cfb_encrypt(ctx->ctx_ptr, ctx->cipher->encrypt_block, - ctx->iv_size, ctx->iv, length, dst, src); + cfb_encrypt(ctx->ctx_ptr, ctx->cipher->encrypt_block, ctx->iv_size, + ctx->iv, length, dst, src); } -static void -_cfb_decrypt(struct nettle_cipher_ctx *ctx, size_t length, uint8_t * dst, - const uint8_t * src) +static void _cfb_decrypt(struct nettle_cipher_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src) { - cfb_decrypt(ctx->ctx_ptr, ctx->cipher->encrypt_block, - ctx->iv_size, ctx->iv, length, dst, src); + cfb_decrypt(ctx->ctx_ptr, ctx->cipher->encrypt_block, ctx->iv_size, + ctx->iv, length, dst, src); } -static void -_ctr_acpkm_crypt(struct nettle_cipher_ctx *ctx, size_t length, uint8_t * dst, - const uint8_t * src) +static void _ctr_acpkm_crypt(struct nettle_cipher_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src) { /* Use context-specific IV which comes as a first field */ ctr_crypt(ctx->ctx_ptr, ctx->cipher->encrypt_block, ctx->cipher->block_size, ctx->ctx_ptr, length, dst, src); } -static void _gost28147_set_key_tc26z(void *ctx, const uint8_t * key) +static void _gost28147_set_key_tc26z(void *ctx, const uint8_t *key) { gost28147_set_param(ctx, &gost28147_param_TC26_Z); gost28147_set_key(ctx, key); } -static void _gost28147_set_key_cpa(void *ctx, const uint8_t * key) +static void _gost28147_set_key_cpa(void *ctx, const uint8_t *key) { gost28147_set_param(ctx, &gost28147_param_CryptoPro_A); gost28147_set_key(ctx, key); } -static void _gost28147_set_key_cpb(void *ctx, const uint8_t * key) +static void _gost28147_set_key_cpb(void *ctx, const uint8_t *key) { gost28147_set_param(ctx, &gost28147_param_CryptoPro_B); gost28147_set_key(ctx, key); } -static void _gost28147_set_key_cpc(void *ctx, const uint8_t * key) +static void _gost28147_set_key_cpc(void *ctx, const uint8_t *key) { gost28147_set_param(ctx, &gost28147_param_CryptoPro_C); gost28147_set_key(ctx, key); } -static void _gost28147_set_key_cpd(void *ctx, const uint8_t * key) +static void _gost28147_set_key_cpd(void *ctx, const uint8_t *key) { gost28147_set_param(ctx, &gost28147_param_CryptoPro_D); gost28147_set_key(ctx, key); } -static void _gost28147_cnt_set_key_tc26z(void *ctx, const uint8_t * key) +static void _gost28147_cnt_set_key_tc26z(void *ctx, const uint8_t *key) { gost28147_cnt_init(ctx, key, &gost28147_param_TC26_Z); } -static void -_gost28147_cnt_set_nonce(void *ctx, size_t length, const uint8_t * nonce) +static void _gost28147_cnt_set_nonce(void *ctx, size_t length, + const uint8_t *nonce) { gost28147_cnt_set_iv(ctx, nonce); } -static void -_gost28147_cnt_crypt(struct nettle_cipher_ctx *ctx, size_t length, - uint8_t * dst, const uint8_t * src) +static void _gost28147_cnt_crypt(struct nettle_cipher_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src) { gost28147_cnt_crypt((void *)ctx->ctx_ptr, length, dst, src); } -static void -_magma_acpkm_crypt(struct magma_acpkm_ctx *ctx, - size_t length, uint8_t * dst, const uint8_t * src) +static void _magma_acpkm_crypt(struct magma_acpkm_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src) { acpkm_crypt(&ctx->ctx, &ctx->cipher, - (nettle_cipher_func *) magma_encrypt, - (nettle_set_key_func *) magma_set_key, length, dst, src); + (nettle_cipher_func *)magma_encrypt, + (nettle_set_key_func *)magma_set_key, length, dst, src); } -static void -_kuznyechik_acpkm_crypt(struct kuznyechik_acpkm_ctx *ctx, - size_t length, uint8_t * dst, const uint8_t * src) +static void _kuznyechik_acpkm_crypt(struct kuznyechik_acpkm_ctx *ctx, + size_t length, uint8_t *dst, + const uint8_t *src) { acpkm_crypt(&ctx->ctx, &ctx->cipher, - (nettle_cipher_func *) kuznyechik_encrypt, - (nettle_set_key_func *) kuznyechik_set_key, - length, dst, src); + (nettle_cipher_func *)kuznyechik_encrypt, + (nettle_set_key_func *)kuznyechik_set_key, length, dst, + src); } -static void -_magma_ctr_acpkm_set_key(struct magma_acpkm_ctx *ctx, const uint8_t * key) +static void _magma_ctr_acpkm_set_key(struct magma_acpkm_ctx *ctx, + const uint8_t *key) { magma_set_key(&ctx->cipher, key); ctx->ctx.pos = 0; ctx->ctx.N = 1024; } -static void -_magma_ctr_acpkm_set_iv(struct magma_acpkm_ctx *ctx, size_t length, - const uint8_t * iv) +static void _magma_ctr_acpkm_set_iv(struct magma_acpkm_ctx *ctx, size_t length, + const uint8_t *iv) { memcpy(ctx->iv, iv, length); memset(ctx->iv + length, 0, MAGMA_BLOCK_SIZE - length); } -static void -_kuznyechik_ctr_acpkm_set_key(struct kuznyechik_acpkm_ctx *ctx, - const uint8_t * key) +static void _kuznyechik_ctr_acpkm_set_key(struct kuznyechik_acpkm_ctx *ctx, + const uint8_t *key) { kuznyechik_set_key(&ctx->cipher, key); ctx->ctx.pos = 0; ctx->ctx.N = 4096; } -static void -_kuznyechik_ctr_acpkm_set_iv(struct kuznyechik_acpkm_ctx *ctx, size_t length, - const uint8_t * iv) +static void _kuznyechik_ctr_acpkm_set_iv(struct kuznyechik_acpkm_ctx *ctx, + size_t length, const uint8_t *iv) { memcpy(ctx->iv, iv, length); memset(ctx->iv + length, 0, KUZNYECHIK_BLOCK_SIZE - length); } #endif -static void -_ccm_encrypt(struct nettle_cipher_ctx *ctx, - size_t nonce_size, const void *nonce, - size_t auth_size, const void *auth, - size_t tag_size, size_t length, uint8_t * dst, const uint8_t * src) +static void _ccm_encrypt(struct nettle_cipher_ctx *ctx, size_t nonce_size, + const void *nonce, size_t auth_size, const void *auth, + size_t tag_size, size_t length, uint8_t *dst, + const uint8_t *src) { ccm_encrypt_message((void *)ctx->ctx_ptr, ctx->cipher->encrypt_block, - nonce_size, nonce, - auth_size, auth, tag_size, length, dst, src); + nonce_size, nonce, auth_size, auth, tag_size, + length, dst, src); } -static int -_ccm_decrypt(struct nettle_cipher_ctx *ctx, - size_t nonce_size, const void *nonce, - size_t auth_size, const void *auth, - size_t tag_size, size_t length, uint8_t * dst, const uint8_t * src) +static int _ccm_decrypt(struct nettle_cipher_ctx *ctx, size_t nonce_size, + const void *nonce, size_t auth_size, const void *auth, + size_t tag_size, size_t length, uint8_t *dst, + const uint8_t *src) { return ccm_decrypt_message((void *)ctx->ctx_ptr, ctx->cipher->encrypt_block, nonce_size, @@ -327,78 +311,68 @@ _ccm_decrypt(struct nettle_cipher_ctx *ctx, dst, src); } -static void -_siv_cmac_aes128_encrypt_message(struct nettle_cipher_ctx *ctx, - size_t nonce_size, const void *nonce, - size_t auth_size, const void *auth, - size_t tag_size, - size_t length, uint8_t * dst, - const uint8_t * src) +static void _siv_cmac_aes128_encrypt_message(struct nettle_cipher_ctx *ctx, + size_t nonce_size, + const void *nonce, + size_t auth_size, const void *auth, + size_t tag_size, size_t length, + uint8_t *dst, const uint8_t *src) { - siv_cmac_aes128_encrypt_message((void *)ctx->ctx_ptr, - nonce_size, nonce, + siv_cmac_aes128_encrypt_message((void *)ctx->ctx_ptr, nonce_size, nonce, auth_size, auth, length, dst, src); } -static int -_siv_cmac_aes128_decrypt_message(struct nettle_cipher_ctx *ctx, - size_t nonce_size, const void *nonce, - size_t auth_size, const void *auth, - size_t tag_size, - size_t length, uint8_t * dst, - const uint8_t * src) +static int _siv_cmac_aes128_decrypt_message(struct nettle_cipher_ctx *ctx, + size_t nonce_size, + const void *nonce, size_t auth_size, + const void *auth, size_t tag_size, + size_t length, uint8_t *dst, + const uint8_t *src) { - return siv_cmac_aes128_decrypt_message((void *)ctx->ctx_ptr, - nonce_size, nonce, - auth_size, auth, - length, dst, src); + return siv_cmac_aes128_decrypt_message((void *)ctx->ctx_ptr, nonce_size, + nonce, auth_size, auth, length, + dst, src); } -static void -_siv_cmac_aes256_encrypt_message(struct nettle_cipher_ctx *ctx, - size_t nonce_size, const void *nonce, - size_t auth_size, const void *auth, - size_t tag_size, - size_t length, uint8_t * dst, - const uint8_t * src) +static void _siv_cmac_aes256_encrypt_message(struct nettle_cipher_ctx *ctx, + size_t nonce_size, + const void *nonce, + size_t auth_size, const void *auth, + size_t tag_size, size_t length, + uint8_t *dst, const uint8_t *src) { - siv_cmac_aes256_encrypt_message((void *)ctx->ctx_ptr, - nonce_size, nonce, + siv_cmac_aes256_encrypt_message((void *)ctx->ctx_ptr, nonce_size, nonce, auth_size, auth, length, dst, src); } -static int -_siv_cmac_aes256_decrypt_message(struct nettle_cipher_ctx *ctx, - size_t nonce_size, const void *nonce, - size_t auth_size, const void *auth, - size_t tag_size, - size_t length, uint8_t * dst, - const uint8_t * src) +static int _siv_cmac_aes256_decrypt_message(struct nettle_cipher_ctx *ctx, + size_t nonce_size, + const void *nonce, size_t auth_size, + const void *auth, size_t tag_size, + size_t length, uint8_t *dst, + const uint8_t *src) { - return siv_cmac_aes256_decrypt_message((void *)ctx->ctx_ptr, - nonce_size, nonce, - auth_size, auth, - length, dst, src); + return siv_cmac_aes256_decrypt_message((void *)ctx->ctx_ptr, nonce_size, + nonce, auth_size, auth, length, + dst, src); } -static void -_chacha_set_nonce(struct chacha_ctx *ctx, size_t length, const uint8_t * nonce) +static void _chacha_set_nonce(struct chacha_ctx *ctx, size_t length, + const uint8_t *nonce) { chacha_set_nonce(ctx, nonce + CHACHA_COUNTER_SIZE); chacha_set_counter(ctx, nonce); } -static void -_chacha_set_nonce96(struct chacha_ctx *ctx, - size_t length, const uint8_t * nonce) +static void _chacha_set_nonce96(struct chacha_ctx *ctx, size_t length, + const uint8_t *nonce) { chacha_set_nonce96(ctx, nonce + CHACHA_COUNTER32_SIZE); chacha_set_counter32(ctx, nonce); } -static void -_chacha_poly1305_set_nonce(struct chacha_poly1305_ctx *ctx, - size_t length, const uint8_t * nonce) +static void _chacha_poly1305_set_nonce(struct chacha_poly1305_ctx *ctx, + size_t length, const uint8_t *nonce) { chacha_poly1305_set_nonce(ctx, nonce); } @@ -408,13 +382,12 @@ struct gcm_cast_st { struct gcm_ctx gcm; unsigned long xx[1]; }; -#define GCM_CTX_GET_KEY(ptr) (&((struct gcm_cast_st*)ptr)->key) -#define GCM_CTX_GET_CTX(ptr) (&((struct gcm_cast_st*)ptr)->gcm) -#define GCM_CTX_GET_CIPHER(ptr) ((void*)&((struct gcm_cast_st*)ptr)->xx) +#define GCM_CTX_GET_KEY(ptr) (&((struct gcm_cast_st *)ptr)->key) +#define GCM_CTX_GET_CTX(ptr) (&((struct gcm_cast_st *)ptr)->gcm) +#define GCM_CTX_GET_CIPHER(ptr) ((void *)&((struct gcm_cast_st *)ptr)->xx) -static void -_gcm_encrypt(struct nettle_cipher_ctx *ctx, size_t length, uint8_t * dst, - const uint8_t * src) +static void _gcm_encrypt(struct nettle_cipher_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src) { gcm_encrypt(GCM_CTX_GET_CTX(ctx->ctx_ptr), GCM_CTX_GET_KEY(ctx->ctx_ptr), @@ -422,9 +395,8 @@ _gcm_encrypt(struct nettle_cipher_ctx *ctx, size_t length, uint8_t * dst, ctx->cipher->encrypt_block, length, dst, src); } -static void -_gcm_decrypt(struct nettle_cipher_ctx *ctx, size_t length, uint8_t * dst, - const uint8_t * src) +static void _gcm_decrypt(struct nettle_cipher_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src) { gcm_decrypt(GCM_CTX_GET_CTX(ctx->ctx_ptr), GCM_CTX_GET_KEY(ctx->ctx_ptr), @@ -432,602 +404,684 @@ _gcm_decrypt(struct nettle_cipher_ctx *ctx, size_t length, uint8_t * dst, ctx->cipher->encrypt_block, length, dst, src); } -static void _des_set_key(struct des_ctx *ctx, const uint8_t * key) +static void _des_set_key(struct des_ctx *ctx, const uint8_t *key) { des_set_key(ctx, key); } -static void _des3_set_key(struct des3_ctx *ctx, const uint8_t * key) +static void _des3_set_key(struct des3_ctx *ctx, const uint8_t *key) { des3_set_key(ctx, key); } -static void -_cfb8_encrypt(struct nettle_cipher_ctx *ctx, size_t length, uint8_t * dst, - const uint8_t * src) +static void _cfb8_encrypt(struct nettle_cipher_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src) { - cfb8_encrypt(ctx->ctx_ptr, ctx->cipher->encrypt_block, - ctx->iv_size, ctx->iv, length, dst, src); + cfb8_encrypt(ctx->ctx_ptr, ctx->cipher->encrypt_block, ctx->iv_size, + ctx->iv, length, dst, src); } -static void -_cfb8_decrypt(struct nettle_cipher_ctx *ctx, size_t length, uint8_t * dst, - const uint8_t * src) +static void _cfb8_decrypt(struct nettle_cipher_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src) { - cfb8_decrypt(ctx->ctx_ptr, ctx->cipher->encrypt_block, - ctx->iv_size, ctx->iv, length, dst, src); + cfb8_decrypt(ctx->ctx_ptr, ctx->cipher->encrypt_block, ctx->iv_size, + ctx->iv, length, dst, src); } -static void -_xts_aes128_encrypt(struct nettle_cipher_ctx *ctx, size_t length, uint8_t * dst, - const uint8_t * src) +static void _xts_aes128_encrypt(struct nettle_cipher_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src) { xts_aes128_encrypt_message(ctx->ctx_ptr, ctx->iv, length, dst, src); } -static void -_xts_aes128_decrypt(struct nettle_cipher_ctx *ctx, size_t length, uint8_t * dst, - const uint8_t * src) +static void _xts_aes128_decrypt(struct nettle_cipher_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src) { xts_aes128_decrypt_message(ctx->ctx_ptr, ctx->iv, length, dst, src); } -static void -_xts_aes256_encrypt(struct nettle_cipher_ctx *ctx, size_t length, uint8_t * dst, - const uint8_t * src) +static void _xts_aes256_encrypt(struct nettle_cipher_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src) { xts_aes256_encrypt_message(ctx->ctx_ptr, ctx->iv, length, dst, src); } -static void -_xts_aes256_decrypt(struct nettle_cipher_ctx *ctx, size_t length, uint8_t * dst, - const uint8_t * src) +static void _xts_aes256_decrypt(struct nettle_cipher_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src) { xts_aes256_decrypt_message(ctx->ctx_ptr, ctx->iv, length, dst, src); } static const struct nettle_cipher_st builtin_ciphers[] = { - {.algo = GNUTLS_CIPHER_AES_128_GCM, - .block_size = AES_BLOCK_SIZE, - .key_size = AES128_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) aes128_encrypt, - .decrypt_block = (nettle_cipher_func *) aes128_decrypt, - - .ctx_size = sizeof(struct gcm_aes128_ctx), - .encrypt = _gcm_encrypt, - .decrypt = _gcm_decrypt, - .set_encrypt_key = (nettle_set_key_func *) gcm_aes128_set_key, - .set_decrypt_key = (nettle_set_key_func *) gcm_aes128_set_key, - - .tag = (nettle_hash_digest_func *) gcm_aes128_digest, - .auth = (nettle_hash_update_func *) gcm_aes128_update, - .set_iv = (setiv_func) gcm_aes128_set_iv, - .max_iv_size = GCM_IV_SIZE, - }, - {.algo = GNUTLS_CIPHER_AES_192_GCM, - .block_size = AES_BLOCK_SIZE, - .key_size = AES192_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) aes192_encrypt, - .decrypt_block = (nettle_cipher_func *) aes192_decrypt, - - .ctx_size = sizeof(struct gcm_aes192_ctx), - .encrypt = _gcm_encrypt, - .decrypt = _gcm_decrypt, - .set_encrypt_key = (nettle_set_key_func *) gcm_aes192_set_key, - .set_decrypt_key = (nettle_set_key_func *) gcm_aes192_set_key, - - .tag = (nettle_hash_digest_func *) gcm_aes192_digest, - .auth = (nettle_hash_update_func *) gcm_aes192_update, - .set_iv = (setiv_func) gcm_aes192_set_iv, - .max_iv_size = GCM_IV_SIZE, - }, - {.algo = GNUTLS_CIPHER_AES_256_GCM, - .block_size = AES_BLOCK_SIZE, - .key_size = AES256_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) aes256_encrypt, - .decrypt_block = (nettle_cipher_func *) aes256_decrypt, - - .ctx_size = sizeof(struct gcm_aes256_ctx), - .encrypt = _gcm_encrypt, - .decrypt = _gcm_decrypt, - .set_encrypt_key = (nettle_set_key_func *) gcm_aes256_set_key, - .set_decrypt_key = (nettle_set_key_func *) gcm_aes256_set_key, - - .tag = (nettle_hash_digest_func *) gcm_aes256_digest, - .auth = (nettle_hash_update_func *) gcm_aes256_update, - .set_iv = (setiv_func) gcm_aes256_set_iv, - .max_iv_size = GCM_IV_SIZE, - }, - {.algo = GNUTLS_CIPHER_AES_128_CCM, - .block_size = AES_BLOCK_SIZE, - .key_size = AES128_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) aes128_encrypt, - .decrypt_block = (nettle_cipher_func *) aes128_decrypt, - - .ctx_size = sizeof(struct aes128_ctx), - .aead_encrypt = _ccm_encrypt, - .aead_decrypt = _ccm_decrypt, - .set_encrypt_key = (nettle_set_key_func *) aes128_set_encrypt_key, - .set_decrypt_key = (nettle_set_key_func *) aes128_set_encrypt_key, - .max_iv_size = CCM_MAX_NONCE_SIZE, - }, - {.algo = GNUTLS_CIPHER_AES_128_CCM_8, - .block_size = AES_BLOCK_SIZE, - .key_size = AES128_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) aes128_encrypt, - .decrypt_block = (nettle_cipher_func *) aes128_decrypt, - - .ctx_size = sizeof(struct aes128_ctx), - .aead_encrypt = _ccm_encrypt, - .aead_decrypt = _ccm_decrypt, - .set_encrypt_key = (nettle_set_key_func *) aes128_set_encrypt_key, - .set_decrypt_key = (nettle_set_key_func *) aes128_set_encrypt_key, - .max_iv_size = CCM_MAX_NONCE_SIZE, - }, - {.algo = GNUTLS_CIPHER_AES_256_CCM, - .block_size = AES_BLOCK_SIZE, - .key_size = AES256_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) aes256_encrypt, - .decrypt_block = (nettle_cipher_func *) aes256_decrypt, - - .ctx_size = sizeof(struct aes256_ctx), - .aead_encrypt = _ccm_encrypt, - .aead_decrypt = _ccm_decrypt, - .set_encrypt_key = (nettle_set_key_func *) aes256_set_encrypt_key, - .set_decrypt_key = (nettle_set_key_func *) aes256_set_encrypt_key, - .max_iv_size = CCM_MAX_NONCE_SIZE, - }, - {.algo = GNUTLS_CIPHER_AES_256_CCM_8, - .block_size = AES_BLOCK_SIZE, - .key_size = AES256_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) aes256_encrypt, - .decrypt_block = (nettle_cipher_func *) aes256_decrypt, - - .ctx_size = sizeof(struct aes256_ctx), - .aead_encrypt = _ccm_encrypt, - .aead_decrypt = _ccm_decrypt, - .set_encrypt_key = (nettle_set_key_func *) aes256_set_encrypt_key, - .set_decrypt_key = (nettle_set_key_func *) aes256_set_encrypt_key, - .max_iv_size = CCM_MAX_NONCE_SIZE, - }, - {.algo = GNUTLS_CIPHER_CAMELLIA_128_GCM, - .block_size = CAMELLIA_BLOCK_SIZE, - .key_size = CAMELLIA128_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) camellia128_crypt, - .decrypt_block = (nettle_cipher_func *) camellia128_crypt, - - .ctx_size = sizeof(struct gcm_camellia128_ctx), - .encrypt = _gcm_encrypt, - .decrypt = _gcm_decrypt, - .set_encrypt_key = (nettle_set_key_func *) gcm_camellia128_set_key, - .set_decrypt_key = (nettle_set_key_func *) gcm_camellia128_set_key, - .tag = (nettle_hash_digest_func *) gcm_camellia128_digest, - .auth = (nettle_hash_update_func *) gcm_camellia128_update, - .max_iv_size = GCM_IV_SIZE, - .set_iv = (setiv_func) gcm_camellia128_set_iv}, - {.algo = GNUTLS_CIPHER_CAMELLIA_256_GCM, - .block_size = CAMELLIA_BLOCK_SIZE, - .key_size = CAMELLIA256_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) camellia256_crypt, - .decrypt_block = (nettle_cipher_func *) camellia256_crypt, - - .ctx_size = sizeof(struct gcm_camellia256_ctx), - .encrypt = _gcm_encrypt, - .decrypt = _gcm_decrypt, - .set_encrypt_key = (nettle_set_key_func *) gcm_camellia256_set_key, - .set_decrypt_key = (nettle_set_key_func *) gcm_camellia256_set_key, - .tag = (nettle_hash_digest_func *) gcm_camellia256_digest, - .auth = (nettle_hash_update_func *) gcm_camellia256_update, - .max_iv_size = GCM_IV_SIZE, - .set_iv = (setiv_func) gcm_camellia256_set_iv}, - {.algo = GNUTLS_CIPHER_AES_128_CBC, - .block_size = AES_BLOCK_SIZE, - .key_size = AES128_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) aes128_encrypt, - .decrypt_block = (nettle_cipher_func *) aes128_decrypt, - - .ctx_size = sizeof(struct CBC_CTX (struct aes128_ctx, AES_BLOCK_SIZE)), - .encrypt = _cbc_encrypt, - .decrypt = _cbc_decrypt, - .set_encrypt_key = (nettle_set_key_func *) aes128_set_encrypt_key, - .set_decrypt_key = (nettle_set_key_func *) aes128_set_decrypt_key, - .max_iv_size = AES_BLOCK_SIZE, - }, - {.algo = GNUTLS_CIPHER_AES_192_CBC, - .block_size = AES_BLOCK_SIZE, - .key_size = AES192_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) aes192_encrypt, - .decrypt_block = (nettle_cipher_func *) aes192_decrypt, - - .ctx_size = sizeof(struct CBC_CTX (struct aes192_ctx, AES_BLOCK_SIZE)), - .encrypt = _cbc_encrypt, - .decrypt = _cbc_decrypt, - .set_encrypt_key = (nettle_set_key_func *) aes192_set_encrypt_key, - .set_decrypt_key = (nettle_set_key_func *) aes192_set_decrypt_key, - .max_iv_size = AES_BLOCK_SIZE, - }, - {.algo = GNUTLS_CIPHER_AES_256_CBC, - .block_size = AES_BLOCK_SIZE, - .key_size = AES256_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) aes256_encrypt, - .decrypt_block = (nettle_cipher_func *) aes256_decrypt, - - .ctx_size = sizeof(struct CBC_CTX (struct aes256_ctx, AES_BLOCK_SIZE)), - .encrypt = _cbc_encrypt, - .decrypt = _cbc_decrypt, - .set_encrypt_key = (nettle_set_key_func *) aes256_set_encrypt_key, - .set_decrypt_key = (nettle_set_key_func *) aes256_set_decrypt_key, - .max_iv_size = AES_BLOCK_SIZE, - }, - {.algo = GNUTLS_CIPHER_CAMELLIA_128_CBC, - .block_size = CAMELLIA_BLOCK_SIZE, - .key_size = CAMELLIA128_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) camellia128_crypt, - .decrypt_block = (nettle_cipher_func *) camellia128_crypt, - - .ctx_size = - sizeof(struct CBC_CTX (struct camellia128_ctx, CAMELLIA_BLOCK_SIZE)), - .encrypt = _cbc_encrypt, - .decrypt = _cbc_decrypt, - .set_encrypt_key = (nettle_set_key_func *) camellia128_set_encrypt_key, - .set_decrypt_key = (nettle_set_key_func *) camellia128_set_decrypt_key, - .max_iv_size = CAMELLIA_BLOCK_SIZE, - }, - {.algo = GNUTLS_CIPHER_CAMELLIA_192_CBC, - .block_size = CAMELLIA_BLOCK_SIZE, - .key_size = CAMELLIA192_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) camellia192_crypt, - .decrypt_block = (nettle_cipher_func *) camellia192_crypt, - - .ctx_size = - sizeof(struct CBC_CTX (struct camellia192_ctx, CAMELLIA_BLOCK_SIZE)), - .encrypt = _cbc_encrypt, - .decrypt = _cbc_decrypt, - .set_encrypt_key = (nettle_set_key_func *) camellia192_set_encrypt_key, - .set_decrypt_key = (nettle_set_key_func *) camellia192_set_decrypt_key, - .max_iv_size = CAMELLIA_BLOCK_SIZE, - }, - {.algo = GNUTLS_CIPHER_CAMELLIA_256_CBC, - .block_size = CAMELLIA_BLOCK_SIZE, - .key_size = CAMELLIA256_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) camellia256_crypt, - .decrypt_block = (nettle_cipher_func *) camellia256_crypt, - - .ctx_size = - sizeof(struct CBC_CTX (struct camellia256_ctx, CAMELLIA_BLOCK_SIZE)), - .encrypt = _cbc_encrypt, - .decrypt = _cbc_decrypt, - .set_encrypt_key = (nettle_set_key_func *) camellia256_set_encrypt_key, - .set_decrypt_key = (nettle_set_key_func *) camellia256_set_decrypt_key, - .max_iv_size = CAMELLIA_BLOCK_SIZE, - }, - {.algo = GNUTLS_CIPHER_RC2_40_CBC, - .block_size = ARCTWO_BLOCK_SIZE, - .key_size = 5, - .encrypt_block = (nettle_cipher_func *) arctwo_encrypt, - .decrypt_block = (nettle_cipher_func *) arctwo_decrypt, - - .ctx_size = - sizeof(struct CBC_CTX (struct arctwo_ctx, ARCTWO_BLOCK_SIZE)), - .encrypt = _cbc_encrypt, - .decrypt = _cbc_decrypt, - .set_encrypt_key = (nettle_set_key_func *) arctwo40_set_key, - .set_decrypt_key = (nettle_set_key_func *) arctwo40_set_key, - .max_iv_size = ARCTWO_BLOCK_SIZE, - }, - {.algo = GNUTLS_CIPHER_DES_CBC, - .block_size = DES_BLOCK_SIZE, - .key_size = DES_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) des_encrypt, - .decrypt_block = (nettle_cipher_func *) des_decrypt, - - .ctx_size = sizeof(struct CBC_CTX (struct des_ctx, DES_BLOCK_SIZE)), - .encrypt = _cbc_encrypt, - .decrypt = _cbc_decrypt, - .set_encrypt_key = (nettle_set_key_func *) _des_set_key, - .set_decrypt_key = (nettle_set_key_func *) _des_set_key, - .max_iv_size = DES_BLOCK_SIZE, - }, - {.algo = GNUTLS_CIPHER_3DES_CBC, - .block_size = DES3_BLOCK_SIZE, - .key_size = DES3_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) des3_encrypt, - .decrypt_block = (nettle_cipher_func *) des3_decrypt, - - .ctx_size = sizeof(struct CBC_CTX (struct des3_ctx, DES3_BLOCK_SIZE)), - .encrypt = _cbc_encrypt, - .decrypt = _cbc_decrypt, - .set_encrypt_key = (nettle_set_key_func *) _des3_set_key, - .set_decrypt_key = (nettle_set_key_func *) _des3_set_key, - .max_iv_size = DES_BLOCK_SIZE, - }, - {.algo = GNUTLS_CIPHER_ARCFOUR_128, - .block_size = 1, - .key_size = 0, - .encrypt_block = (nettle_cipher_func *) arcfour_crypt, - .decrypt_block = (nettle_cipher_func *) arcfour_crypt, - - .ctx_size = sizeof(struct arcfour_ctx), - .encrypt = _stream_encrypt, - .decrypt = _stream_encrypt, - .gen_set_key = (gen_setkey_func) arcfour_set_key, - .set_encrypt_key = (nettle_set_key_func *) arcfour128_set_key, - .set_decrypt_key = (nettle_set_key_func *) arcfour128_set_key, - }, - {.algo = GNUTLS_CIPHER_SALSA20_256, - .block_size = 1, - .key_size = SALSA20_256_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) salsa20_crypt, - .decrypt_block = (nettle_cipher_func *) salsa20_crypt, - - .ctx_size = sizeof(struct salsa20_ctx), - .encrypt = _stream_encrypt, - .decrypt = _stream_encrypt, - .set_encrypt_key = (nettle_set_key_func *) salsa20_256_set_key, - .set_decrypt_key = (nettle_set_key_func *) salsa20_256_set_key, - .max_iv_size = SALSA20_NONCE_SIZE, - }, - {.algo = GNUTLS_CIPHER_ESTREAM_SALSA20_256, - .block_size = 1, - .key_size = SALSA20_256_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) salsa20r12_crypt, - .decrypt_block = (nettle_cipher_func *) salsa20r12_crypt, - - .ctx_size = sizeof(struct salsa20_ctx), - .encrypt = _stream_encrypt, - .decrypt = _stream_encrypt, - .set_encrypt_key = (nettle_set_key_func *) salsa20_256_set_key, - .set_decrypt_key = (nettle_set_key_func *) salsa20_256_set_key, - .max_iv_size = SALSA20_NONCE_SIZE, - }, - {.algo = GNUTLS_CIPHER_CHACHA20_32, - .block_size = 1, - .key_size = CHACHA_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) chacha_crypt32, - .decrypt_block = (nettle_cipher_func *) chacha_crypt32, - - .ctx_size = sizeof(struct chacha_ctx), - .encrypt = _stream_encrypt, - .decrypt = _stream_encrypt, - .set_encrypt_key = (nettle_set_key_func *) chacha_set_key, - .set_decrypt_key = (nettle_set_key_func *) chacha_set_key, - .set_iv = (setiv_func) _chacha_set_nonce96, - /* we allow setting the initial block counter as part of nonce */ - .max_iv_size = CHACHA_NONCE96_SIZE + CHACHA_COUNTER32_SIZE, - }, - {.algo = GNUTLS_CIPHER_CHACHA20_64, - .block_size = 1, - .key_size = CHACHA_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) chacha_crypt, - .decrypt_block = (nettle_cipher_func *) chacha_crypt, - - .ctx_size = sizeof(struct chacha_ctx), - .encrypt = _stream_encrypt, - .decrypt = _stream_encrypt, - .set_encrypt_key = (nettle_set_key_func *) chacha_set_key, - .set_decrypt_key = (nettle_set_key_func *) chacha_set_key, - .set_iv = (setiv_func) _chacha_set_nonce, - /* we allow setting the initial block counter as part of nonce */ - .max_iv_size = CHACHA_NONCE_SIZE + CHACHA_COUNTER_SIZE, - }, - {.algo = GNUTLS_CIPHER_CHACHA20_POLY1305, - .block_size = CHACHA_POLY1305_BLOCK_SIZE, - .key_size = CHACHA_POLY1305_KEY_SIZE, - - .ctx_size = sizeof(struct chacha_poly1305_ctx), - .encrypt_block = (nettle_cipher_func *) chacha_poly1305_encrypt, - .decrypt_block = (nettle_cipher_func *) chacha_poly1305_decrypt, - .encrypt = _stream_encrypt, - .decrypt = _stream_decrypt, - .auth = (nettle_hash_update_func *) chacha_poly1305_update, - .tag = (nettle_hash_digest_func *) chacha_poly1305_digest, - .set_encrypt_key = (nettle_set_key_func *) chacha_poly1305_set_key, - .set_decrypt_key = (nettle_set_key_func *) chacha_poly1305_set_key, - .set_iv = (setiv_func) _chacha_poly1305_set_nonce, - .max_iv_size = CHACHA_POLY1305_NONCE_SIZE, - }, + { + .algo = GNUTLS_CIPHER_AES_128_GCM, + .block_size = AES_BLOCK_SIZE, + .key_size = AES128_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)aes128_encrypt, + .decrypt_block = (nettle_cipher_func *)aes128_decrypt, + + .ctx_size = sizeof(struct gcm_aes128_ctx), + .encrypt = _gcm_encrypt, + .decrypt = _gcm_decrypt, + .set_encrypt_key = (nettle_set_key_func *)gcm_aes128_set_key, + .set_decrypt_key = (nettle_set_key_func *)gcm_aes128_set_key, + + .tag = (nettle_hash_digest_func *)gcm_aes128_digest, + .auth = (nettle_hash_update_func *)gcm_aes128_update, + .set_iv = (setiv_func)gcm_aes128_set_iv, + .max_iv_size = GCM_IV_SIZE, + }, + { + .algo = GNUTLS_CIPHER_AES_192_GCM, + .block_size = AES_BLOCK_SIZE, + .key_size = AES192_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)aes192_encrypt, + .decrypt_block = (nettle_cipher_func *)aes192_decrypt, + + .ctx_size = sizeof(struct gcm_aes192_ctx), + .encrypt = _gcm_encrypt, + .decrypt = _gcm_decrypt, + .set_encrypt_key = (nettle_set_key_func *)gcm_aes192_set_key, + .set_decrypt_key = (nettle_set_key_func *)gcm_aes192_set_key, + + .tag = (nettle_hash_digest_func *)gcm_aes192_digest, + .auth = (nettle_hash_update_func *)gcm_aes192_update, + .set_iv = (setiv_func)gcm_aes192_set_iv, + .max_iv_size = GCM_IV_SIZE, + }, + { + .algo = GNUTLS_CIPHER_AES_256_GCM, + .block_size = AES_BLOCK_SIZE, + .key_size = AES256_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)aes256_encrypt, + .decrypt_block = (nettle_cipher_func *)aes256_decrypt, + + .ctx_size = sizeof(struct gcm_aes256_ctx), + .encrypt = _gcm_encrypt, + .decrypt = _gcm_decrypt, + .set_encrypt_key = (nettle_set_key_func *)gcm_aes256_set_key, + .set_decrypt_key = (nettle_set_key_func *)gcm_aes256_set_key, + + .tag = (nettle_hash_digest_func *)gcm_aes256_digest, + .auth = (nettle_hash_update_func *)gcm_aes256_update, + .set_iv = (setiv_func)gcm_aes256_set_iv, + .max_iv_size = GCM_IV_SIZE, + }, + { + .algo = GNUTLS_CIPHER_AES_128_CCM, + .block_size = AES_BLOCK_SIZE, + .key_size = AES128_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)aes128_encrypt, + .decrypt_block = (nettle_cipher_func *)aes128_decrypt, + + .ctx_size = sizeof(struct aes128_ctx), + .aead_encrypt = _ccm_encrypt, + .aead_decrypt = _ccm_decrypt, + .set_encrypt_key = + (nettle_set_key_func *)aes128_set_encrypt_key, + .set_decrypt_key = + (nettle_set_key_func *)aes128_set_encrypt_key, + .max_iv_size = CCM_MAX_NONCE_SIZE, + }, + { + .algo = GNUTLS_CIPHER_AES_128_CCM_8, + .block_size = AES_BLOCK_SIZE, + .key_size = AES128_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)aes128_encrypt, + .decrypt_block = (nettle_cipher_func *)aes128_decrypt, + + .ctx_size = sizeof(struct aes128_ctx), + .aead_encrypt = _ccm_encrypt, + .aead_decrypt = _ccm_decrypt, + .set_encrypt_key = + (nettle_set_key_func *)aes128_set_encrypt_key, + .set_decrypt_key = + (nettle_set_key_func *)aes128_set_encrypt_key, + .max_iv_size = CCM_MAX_NONCE_SIZE, + }, + { + .algo = GNUTLS_CIPHER_AES_256_CCM, + .block_size = AES_BLOCK_SIZE, + .key_size = AES256_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)aes256_encrypt, + .decrypt_block = (nettle_cipher_func *)aes256_decrypt, + + .ctx_size = sizeof(struct aes256_ctx), + .aead_encrypt = _ccm_encrypt, + .aead_decrypt = _ccm_decrypt, + .set_encrypt_key = + (nettle_set_key_func *)aes256_set_encrypt_key, + .set_decrypt_key = + (nettle_set_key_func *)aes256_set_encrypt_key, + .max_iv_size = CCM_MAX_NONCE_SIZE, + }, + { + .algo = GNUTLS_CIPHER_AES_256_CCM_8, + .block_size = AES_BLOCK_SIZE, + .key_size = AES256_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)aes256_encrypt, + .decrypt_block = (nettle_cipher_func *)aes256_decrypt, + + .ctx_size = sizeof(struct aes256_ctx), + .aead_encrypt = _ccm_encrypt, + .aead_decrypt = _ccm_decrypt, + .set_encrypt_key = + (nettle_set_key_func *)aes256_set_encrypt_key, + .set_decrypt_key = + (nettle_set_key_func *)aes256_set_encrypt_key, + .max_iv_size = CCM_MAX_NONCE_SIZE, + }, + { .algo = GNUTLS_CIPHER_CAMELLIA_128_GCM, + .block_size = CAMELLIA_BLOCK_SIZE, + .key_size = CAMELLIA128_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)camellia128_crypt, + .decrypt_block = (nettle_cipher_func *)camellia128_crypt, + + .ctx_size = sizeof(struct gcm_camellia128_ctx), + .encrypt = _gcm_encrypt, + .decrypt = _gcm_decrypt, + .set_encrypt_key = (nettle_set_key_func *)gcm_camellia128_set_key, + .set_decrypt_key = (nettle_set_key_func *)gcm_camellia128_set_key, + .tag = (nettle_hash_digest_func *)gcm_camellia128_digest, + .auth = (nettle_hash_update_func *)gcm_camellia128_update, + .max_iv_size = GCM_IV_SIZE, + .set_iv = (setiv_func)gcm_camellia128_set_iv }, + { .algo = GNUTLS_CIPHER_CAMELLIA_256_GCM, + .block_size = CAMELLIA_BLOCK_SIZE, + .key_size = CAMELLIA256_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)camellia256_crypt, + .decrypt_block = (nettle_cipher_func *)camellia256_crypt, + + .ctx_size = sizeof(struct gcm_camellia256_ctx), + .encrypt = _gcm_encrypt, + .decrypt = _gcm_decrypt, + .set_encrypt_key = (nettle_set_key_func *)gcm_camellia256_set_key, + .set_decrypt_key = (nettle_set_key_func *)gcm_camellia256_set_key, + .tag = (nettle_hash_digest_func *)gcm_camellia256_digest, + .auth = (nettle_hash_update_func *)gcm_camellia256_update, + .max_iv_size = GCM_IV_SIZE, + .set_iv = (setiv_func)gcm_camellia256_set_iv }, + { + .algo = GNUTLS_CIPHER_AES_128_CBC, + .block_size = AES_BLOCK_SIZE, + .key_size = AES128_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)aes128_encrypt, + .decrypt_block = (nettle_cipher_func *)aes128_decrypt, + + .ctx_size = sizeof( + struct CBC_CTX(struct aes128_ctx, AES_BLOCK_SIZE)), + .encrypt = _cbc_encrypt, + .decrypt = _cbc_decrypt, + .set_encrypt_key = + (nettle_set_key_func *)aes128_set_encrypt_key, + .set_decrypt_key = + (nettle_set_key_func *)aes128_set_decrypt_key, + .max_iv_size = AES_BLOCK_SIZE, + }, + { + .algo = GNUTLS_CIPHER_AES_192_CBC, + .block_size = AES_BLOCK_SIZE, + .key_size = AES192_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)aes192_encrypt, + .decrypt_block = (nettle_cipher_func *)aes192_decrypt, + + .ctx_size = sizeof( + struct CBC_CTX(struct aes192_ctx, AES_BLOCK_SIZE)), + .encrypt = _cbc_encrypt, + .decrypt = _cbc_decrypt, + .set_encrypt_key = + (nettle_set_key_func *)aes192_set_encrypt_key, + .set_decrypt_key = + (nettle_set_key_func *)aes192_set_decrypt_key, + .max_iv_size = AES_BLOCK_SIZE, + }, + { + .algo = GNUTLS_CIPHER_AES_256_CBC, + .block_size = AES_BLOCK_SIZE, + .key_size = AES256_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)aes256_encrypt, + .decrypt_block = (nettle_cipher_func *)aes256_decrypt, + + .ctx_size = sizeof( + struct CBC_CTX(struct aes256_ctx, AES_BLOCK_SIZE)), + .encrypt = _cbc_encrypt, + .decrypt = _cbc_decrypt, + .set_encrypt_key = + (nettle_set_key_func *)aes256_set_encrypt_key, + .set_decrypt_key = + (nettle_set_key_func *)aes256_set_decrypt_key, + .max_iv_size = AES_BLOCK_SIZE, + }, + { + .algo = GNUTLS_CIPHER_CAMELLIA_128_CBC, + .block_size = CAMELLIA_BLOCK_SIZE, + .key_size = CAMELLIA128_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)camellia128_crypt, + .decrypt_block = (nettle_cipher_func *)camellia128_crypt, + + .ctx_size = sizeof(struct CBC_CTX(struct camellia128_ctx, + CAMELLIA_BLOCK_SIZE)), + .encrypt = _cbc_encrypt, + .decrypt = _cbc_decrypt, + .set_encrypt_key = + (nettle_set_key_func *)camellia128_set_encrypt_key, + .set_decrypt_key = + (nettle_set_key_func *)camellia128_set_decrypt_key, + .max_iv_size = CAMELLIA_BLOCK_SIZE, + }, + { + .algo = GNUTLS_CIPHER_CAMELLIA_192_CBC, + .block_size = CAMELLIA_BLOCK_SIZE, + .key_size = CAMELLIA192_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)camellia192_crypt, + .decrypt_block = (nettle_cipher_func *)camellia192_crypt, + + .ctx_size = sizeof(struct CBC_CTX(struct camellia192_ctx, + CAMELLIA_BLOCK_SIZE)), + .encrypt = _cbc_encrypt, + .decrypt = _cbc_decrypt, + .set_encrypt_key = + (nettle_set_key_func *)camellia192_set_encrypt_key, + .set_decrypt_key = + (nettle_set_key_func *)camellia192_set_decrypt_key, + .max_iv_size = CAMELLIA_BLOCK_SIZE, + }, + { + .algo = GNUTLS_CIPHER_CAMELLIA_256_CBC, + .block_size = CAMELLIA_BLOCK_SIZE, + .key_size = CAMELLIA256_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)camellia256_crypt, + .decrypt_block = (nettle_cipher_func *)camellia256_crypt, + + .ctx_size = sizeof(struct CBC_CTX(struct camellia256_ctx, + CAMELLIA_BLOCK_SIZE)), + .encrypt = _cbc_encrypt, + .decrypt = _cbc_decrypt, + .set_encrypt_key = + (nettle_set_key_func *)camellia256_set_encrypt_key, + .set_decrypt_key = + (nettle_set_key_func *)camellia256_set_decrypt_key, + .max_iv_size = CAMELLIA_BLOCK_SIZE, + }, + { + .algo = GNUTLS_CIPHER_RC2_40_CBC, + .block_size = ARCTWO_BLOCK_SIZE, + .key_size = 5, + .encrypt_block = (nettle_cipher_func *)arctwo_encrypt, + .decrypt_block = (nettle_cipher_func *)arctwo_decrypt, + + .ctx_size = sizeof( + struct CBC_CTX(struct arctwo_ctx, ARCTWO_BLOCK_SIZE)), + .encrypt = _cbc_encrypt, + .decrypt = _cbc_decrypt, + .set_encrypt_key = (nettle_set_key_func *)arctwo40_set_key, + .set_decrypt_key = (nettle_set_key_func *)arctwo40_set_key, + .max_iv_size = ARCTWO_BLOCK_SIZE, + }, + { + .algo = GNUTLS_CIPHER_DES_CBC, + .block_size = DES_BLOCK_SIZE, + .key_size = DES_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)des_encrypt, + .decrypt_block = (nettle_cipher_func *)des_decrypt, + + .ctx_size = + sizeof(struct CBC_CTX(struct des_ctx, DES_BLOCK_SIZE)), + .encrypt = _cbc_encrypt, + .decrypt = _cbc_decrypt, + .set_encrypt_key = (nettle_set_key_func *)_des_set_key, + .set_decrypt_key = (nettle_set_key_func *)_des_set_key, + .max_iv_size = DES_BLOCK_SIZE, + }, + { + .algo = GNUTLS_CIPHER_3DES_CBC, + .block_size = DES3_BLOCK_SIZE, + .key_size = DES3_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)des3_encrypt, + .decrypt_block = (nettle_cipher_func *)des3_decrypt, + + .ctx_size = sizeof( + struct CBC_CTX(struct des3_ctx, DES3_BLOCK_SIZE)), + .encrypt = _cbc_encrypt, + .decrypt = _cbc_decrypt, + .set_encrypt_key = (nettle_set_key_func *)_des3_set_key, + .set_decrypt_key = (nettle_set_key_func *)_des3_set_key, + .max_iv_size = DES_BLOCK_SIZE, + }, + { + .algo = GNUTLS_CIPHER_ARCFOUR_128, + .block_size = 1, + .key_size = 0, + .encrypt_block = (nettle_cipher_func *)arcfour_crypt, + .decrypt_block = (nettle_cipher_func *)arcfour_crypt, + + .ctx_size = sizeof(struct arcfour_ctx), + .encrypt = _stream_encrypt, + .decrypt = _stream_encrypt, + .gen_set_key = (gen_setkey_func)arcfour_set_key, + .set_encrypt_key = (nettle_set_key_func *)arcfour128_set_key, + .set_decrypt_key = (nettle_set_key_func *)arcfour128_set_key, + }, + { + .algo = GNUTLS_CIPHER_SALSA20_256, + .block_size = 1, + .key_size = SALSA20_256_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)salsa20_crypt, + .decrypt_block = (nettle_cipher_func *)salsa20_crypt, + + .ctx_size = sizeof(struct salsa20_ctx), + .encrypt = _stream_encrypt, + .decrypt = _stream_encrypt, + .set_encrypt_key = (nettle_set_key_func *)salsa20_256_set_key, + .set_decrypt_key = (nettle_set_key_func *)salsa20_256_set_key, + .max_iv_size = SALSA20_NONCE_SIZE, + }, + { + .algo = GNUTLS_CIPHER_ESTREAM_SALSA20_256, + .block_size = 1, + .key_size = SALSA20_256_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)salsa20r12_crypt, + .decrypt_block = (nettle_cipher_func *)salsa20r12_crypt, + + .ctx_size = sizeof(struct salsa20_ctx), + .encrypt = _stream_encrypt, + .decrypt = _stream_encrypt, + .set_encrypt_key = (nettle_set_key_func *)salsa20_256_set_key, + .set_decrypt_key = (nettle_set_key_func *)salsa20_256_set_key, + .max_iv_size = SALSA20_NONCE_SIZE, + }, + { + .algo = GNUTLS_CIPHER_CHACHA20_32, + .block_size = 1, + .key_size = CHACHA_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)chacha_crypt32, + .decrypt_block = (nettle_cipher_func *)chacha_crypt32, + + .ctx_size = sizeof(struct chacha_ctx), + .encrypt = _stream_encrypt, + .decrypt = _stream_encrypt, + .set_encrypt_key = (nettle_set_key_func *)chacha_set_key, + .set_decrypt_key = (nettle_set_key_func *)chacha_set_key, + .set_iv = (setiv_func)_chacha_set_nonce96, + /* we allow setting the initial block counter as part of nonce */ + .max_iv_size = CHACHA_NONCE96_SIZE + CHACHA_COUNTER32_SIZE, + }, + { + .algo = GNUTLS_CIPHER_CHACHA20_64, + .block_size = 1, + .key_size = CHACHA_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)chacha_crypt, + .decrypt_block = (nettle_cipher_func *)chacha_crypt, + + .ctx_size = sizeof(struct chacha_ctx), + .encrypt = _stream_encrypt, + .decrypt = _stream_encrypt, + .set_encrypt_key = (nettle_set_key_func *)chacha_set_key, + .set_decrypt_key = (nettle_set_key_func *)chacha_set_key, + .set_iv = (setiv_func)_chacha_set_nonce, + /* we allow setting the initial block counter as part of nonce */ + .max_iv_size = CHACHA_NONCE_SIZE + CHACHA_COUNTER_SIZE, + }, + { + .algo = GNUTLS_CIPHER_CHACHA20_POLY1305, + .block_size = CHACHA_POLY1305_BLOCK_SIZE, + .key_size = CHACHA_POLY1305_KEY_SIZE, + + .ctx_size = sizeof(struct chacha_poly1305_ctx), + .encrypt_block = (nettle_cipher_func *)chacha_poly1305_encrypt, + .decrypt_block = (nettle_cipher_func *)chacha_poly1305_decrypt, + .encrypt = _stream_encrypt, + .decrypt = _stream_decrypt, + .auth = (nettle_hash_update_func *)chacha_poly1305_update, + .tag = (nettle_hash_digest_func *)chacha_poly1305_digest, + .set_encrypt_key = + (nettle_set_key_func *)chacha_poly1305_set_key, + .set_decrypt_key = + (nettle_set_key_func *)chacha_poly1305_set_key, + .set_iv = (setiv_func)_chacha_poly1305_set_nonce, + .max_iv_size = CHACHA_POLY1305_NONCE_SIZE, + }, #if ENABLE_GOST { - .algo = GNUTLS_CIPHER_GOST28147_TC26Z_CFB, - .block_size = GOST28147_BLOCK_SIZE, - .key_size = GOST28147_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) gost28147_encrypt_for_cfb, - .decrypt_block = (nettle_cipher_func *) gost28147_encrypt_for_cfb, - - .ctx_size = - sizeof(struct CFB_CTX (struct gost28147_ctx, GOST28147_BLOCK_SIZE)), - .encrypt = _cfb_encrypt, - .decrypt = _cfb_decrypt, - .set_encrypt_key = _gost28147_set_key_tc26z, - .set_decrypt_key = _gost28147_set_key_tc26z, - }, + .algo = GNUTLS_CIPHER_GOST28147_TC26Z_CFB, + .block_size = GOST28147_BLOCK_SIZE, + .key_size = GOST28147_KEY_SIZE, + .encrypt_block = + (nettle_cipher_func *)gost28147_encrypt_for_cfb, + .decrypt_block = + (nettle_cipher_func *)gost28147_encrypt_for_cfb, + + .ctx_size = sizeof(struct CFB_CTX(struct gost28147_ctx, + GOST28147_BLOCK_SIZE)), + .encrypt = _cfb_encrypt, + .decrypt = _cfb_decrypt, + .set_encrypt_key = _gost28147_set_key_tc26z, + .set_decrypt_key = _gost28147_set_key_tc26z, + }, { - .algo = GNUTLS_CIPHER_GOST28147_CPA_CFB, - .block_size = GOST28147_BLOCK_SIZE, - .key_size = GOST28147_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) gost28147_encrypt_for_cfb, - .decrypt_block = (nettle_cipher_func *) gost28147_encrypt_for_cfb, - - .ctx_size = - sizeof(struct CFB_CTX (struct gost28147_ctx, GOST28147_BLOCK_SIZE)), - .encrypt = _cfb_encrypt, - .decrypt = _cfb_decrypt, - .set_encrypt_key = _gost28147_set_key_cpa, - .set_decrypt_key = _gost28147_set_key_cpa, - }, + .algo = GNUTLS_CIPHER_GOST28147_CPA_CFB, + .block_size = GOST28147_BLOCK_SIZE, + .key_size = GOST28147_KEY_SIZE, + .encrypt_block = + (nettle_cipher_func *)gost28147_encrypt_for_cfb, + .decrypt_block = + (nettle_cipher_func *)gost28147_encrypt_for_cfb, + + .ctx_size = sizeof(struct CFB_CTX(struct gost28147_ctx, + GOST28147_BLOCK_SIZE)), + .encrypt = _cfb_encrypt, + .decrypt = _cfb_decrypt, + .set_encrypt_key = _gost28147_set_key_cpa, + .set_decrypt_key = _gost28147_set_key_cpa, + }, { - .algo = GNUTLS_CIPHER_GOST28147_CPB_CFB, - .block_size = GOST28147_BLOCK_SIZE, - .key_size = GOST28147_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) gost28147_encrypt_for_cfb, - .decrypt_block = (nettle_cipher_func *) gost28147_encrypt_for_cfb, - - .ctx_size = - sizeof(struct CFB_CTX (struct gost28147_ctx, GOST28147_BLOCK_SIZE)), - .encrypt = _cfb_encrypt, - .decrypt = _cfb_decrypt, - .set_encrypt_key = _gost28147_set_key_cpb, - .set_decrypt_key = _gost28147_set_key_cpb, - }, + .algo = GNUTLS_CIPHER_GOST28147_CPB_CFB, + .block_size = GOST28147_BLOCK_SIZE, + .key_size = GOST28147_KEY_SIZE, + .encrypt_block = + (nettle_cipher_func *)gost28147_encrypt_for_cfb, + .decrypt_block = + (nettle_cipher_func *)gost28147_encrypt_for_cfb, + + .ctx_size = sizeof(struct CFB_CTX(struct gost28147_ctx, + GOST28147_BLOCK_SIZE)), + .encrypt = _cfb_encrypt, + .decrypt = _cfb_decrypt, + .set_encrypt_key = _gost28147_set_key_cpb, + .set_decrypt_key = _gost28147_set_key_cpb, + }, { - .algo = GNUTLS_CIPHER_GOST28147_CPC_CFB, - .block_size = GOST28147_BLOCK_SIZE, - .key_size = GOST28147_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) gost28147_encrypt_for_cfb, - .decrypt_block = (nettle_cipher_func *) gost28147_encrypt_for_cfb, - - .ctx_size = - sizeof(struct CFB_CTX (struct gost28147_ctx, GOST28147_BLOCK_SIZE)), - .encrypt = _cfb_encrypt, - .decrypt = _cfb_decrypt, - .set_encrypt_key = _gost28147_set_key_cpc, - .set_decrypt_key = _gost28147_set_key_cpc, - }, + .algo = GNUTLS_CIPHER_GOST28147_CPC_CFB, + .block_size = GOST28147_BLOCK_SIZE, + .key_size = GOST28147_KEY_SIZE, + .encrypt_block = + (nettle_cipher_func *)gost28147_encrypt_for_cfb, + .decrypt_block = + (nettle_cipher_func *)gost28147_encrypt_for_cfb, + + .ctx_size = sizeof(struct CFB_CTX(struct gost28147_ctx, + GOST28147_BLOCK_SIZE)), + .encrypt = _cfb_encrypt, + .decrypt = _cfb_decrypt, + .set_encrypt_key = _gost28147_set_key_cpc, + .set_decrypt_key = _gost28147_set_key_cpc, + }, { - .algo = GNUTLS_CIPHER_GOST28147_CPD_CFB, - .block_size = GOST28147_BLOCK_SIZE, - .key_size = GOST28147_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) gost28147_encrypt_for_cfb, - .decrypt_block = (nettle_cipher_func *) gost28147_encrypt_for_cfb, - - .ctx_size = - sizeof(struct CFB_CTX (struct gost28147_ctx, GOST28147_BLOCK_SIZE)), - .encrypt = _cfb_encrypt, - .decrypt = _cfb_decrypt, - .set_encrypt_key = _gost28147_set_key_cpd, - .set_decrypt_key = _gost28147_set_key_cpd, - }, + .algo = GNUTLS_CIPHER_GOST28147_CPD_CFB, + .block_size = GOST28147_BLOCK_SIZE, + .key_size = GOST28147_KEY_SIZE, + .encrypt_block = + (nettle_cipher_func *)gost28147_encrypt_for_cfb, + .decrypt_block = + (nettle_cipher_func *)gost28147_encrypt_for_cfb, + + .ctx_size = sizeof(struct CFB_CTX(struct gost28147_ctx, + GOST28147_BLOCK_SIZE)), + .encrypt = _cfb_encrypt, + .decrypt = _cfb_decrypt, + .set_encrypt_key = _gost28147_set_key_cpd, + .set_decrypt_key = _gost28147_set_key_cpd, + }, { - .algo = GNUTLS_CIPHER_GOST28147_TC26Z_CNT, - .block_size = GOST28147_BLOCK_SIZE, - .key_size = GOST28147_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) gost28147_encrypt, /* unused */ - .decrypt_block = (nettle_cipher_func *) gost28147_decrypt, /* unused */ - - .ctx_size = sizeof(struct gost28147_cnt_ctx), - .encrypt = _gost28147_cnt_crypt, - .decrypt = _gost28147_cnt_crypt, - .set_encrypt_key = _gost28147_cnt_set_key_tc26z, - .set_decrypt_key = _gost28147_cnt_set_key_tc26z, - .set_iv = (setiv_func) _gost28147_cnt_set_nonce, - }, + .algo = GNUTLS_CIPHER_GOST28147_TC26Z_CNT, + .block_size = GOST28147_BLOCK_SIZE, + .key_size = GOST28147_KEY_SIZE, + .encrypt_block = + (nettle_cipher_func *)gost28147_encrypt, /* unused */ + .decrypt_block = + (nettle_cipher_func *)gost28147_decrypt, /* unused */ + + .ctx_size = sizeof(struct gost28147_cnt_ctx), + .encrypt = _gost28147_cnt_crypt, + .decrypt = _gost28147_cnt_crypt, + .set_encrypt_key = _gost28147_cnt_set_key_tc26z, + .set_decrypt_key = _gost28147_cnt_set_key_tc26z, + .set_iv = (setiv_func)_gost28147_cnt_set_nonce, + }, { - .algo = GNUTLS_CIPHER_MAGMA_CTR_ACPKM, - .block_size = MAGMA_BLOCK_SIZE, - .key_size = MAGMA_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) _magma_acpkm_crypt, - .decrypt_block = (nettle_cipher_func *) _magma_acpkm_crypt, - - .ctx_size = sizeof(struct magma_acpkm_ctx), - .encrypt = _ctr_acpkm_crypt, - .decrypt = _ctr_acpkm_crypt, - .set_encrypt_key = (nettle_set_key_func *) _magma_ctr_acpkm_set_key, - .set_decrypt_key = (nettle_set_key_func *) _magma_ctr_acpkm_set_key, - .set_iv = (setiv_func) _magma_ctr_acpkm_set_iv, - }, + .algo = GNUTLS_CIPHER_MAGMA_CTR_ACPKM, + .block_size = MAGMA_BLOCK_SIZE, + .key_size = MAGMA_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)_magma_acpkm_crypt, + .decrypt_block = (nettle_cipher_func *)_magma_acpkm_crypt, + + .ctx_size = sizeof(struct magma_acpkm_ctx), + .encrypt = _ctr_acpkm_crypt, + .decrypt = _ctr_acpkm_crypt, + .set_encrypt_key = + (nettle_set_key_func *)_magma_ctr_acpkm_set_key, + .set_decrypt_key = + (nettle_set_key_func *)_magma_ctr_acpkm_set_key, + .set_iv = (setiv_func)_magma_ctr_acpkm_set_iv, + }, { - .algo = GNUTLS_CIPHER_KUZNYECHIK_CTR_ACPKM, - .block_size = KUZNYECHIK_BLOCK_SIZE, - .key_size = KUZNYECHIK_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) _kuznyechik_acpkm_crypt, - .decrypt_block = (nettle_cipher_func *) _kuznyechik_acpkm_crypt, - - .ctx_size = sizeof(struct kuznyechik_acpkm_ctx), - .encrypt = _ctr_acpkm_crypt, - .decrypt = _ctr_acpkm_crypt, - .set_encrypt_key = - (nettle_set_key_func *) _kuznyechik_ctr_acpkm_set_key, - .set_decrypt_key = - (nettle_set_key_func *) _kuznyechik_ctr_acpkm_set_key, - .set_iv = (setiv_func) _kuznyechik_ctr_acpkm_set_iv, - }, + .algo = GNUTLS_CIPHER_KUZNYECHIK_CTR_ACPKM, + .block_size = KUZNYECHIK_BLOCK_SIZE, + .key_size = KUZNYECHIK_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)_kuznyechik_acpkm_crypt, + .decrypt_block = (nettle_cipher_func *)_kuznyechik_acpkm_crypt, + + .ctx_size = sizeof(struct kuznyechik_acpkm_ctx), + .encrypt = _ctr_acpkm_crypt, + .decrypt = _ctr_acpkm_crypt, + .set_encrypt_key = + (nettle_set_key_func *)_kuznyechik_ctr_acpkm_set_key, + .set_decrypt_key = + (nettle_set_key_func *)_kuznyechik_ctr_acpkm_set_key, + .set_iv = (setiv_func)_kuznyechik_ctr_acpkm_set_iv, + }, #endif - {.algo = GNUTLS_CIPHER_AES_128_CFB8, - .block_size = AES_BLOCK_SIZE, - .key_size = AES128_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) aes128_encrypt, - .decrypt_block = (nettle_cipher_func *) aes128_encrypt, - - .ctx_size = - sizeof(struct CFB8_CTX (struct aes128_ctx, AES_BLOCK_SIZE)), - .encrypt = _cfb8_encrypt, - .decrypt = _cfb8_decrypt, - .set_encrypt_key = (nettle_set_key_func *) aes128_set_encrypt_key, - .set_decrypt_key = (nettle_set_key_func *) aes128_set_encrypt_key, - .max_iv_size = AES_BLOCK_SIZE, - }, - {.algo = GNUTLS_CIPHER_AES_192_CFB8, - .block_size = AES_BLOCK_SIZE, - .key_size = AES192_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) aes192_encrypt, - .decrypt_block = (nettle_cipher_func *) aes192_encrypt, - - .ctx_size = - sizeof(struct CFB8_CTX (struct aes192_ctx, AES_BLOCK_SIZE)), - .encrypt = _cfb8_encrypt, - .decrypt = _cfb8_decrypt, - .set_encrypt_key = (nettle_set_key_func *) aes192_set_encrypt_key, - .set_decrypt_key = (nettle_set_key_func *) aes192_set_encrypt_key, - .max_iv_size = AES_BLOCK_SIZE, - }, - {.algo = GNUTLS_CIPHER_AES_256_CFB8, - .block_size = AES_BLOCK_SIZE, - .key_size = AES256_KEY_SIZE, - .encrypt_block = (nettle_cipher_func *) aes256_encrypt, - .decrypt_block = (nettle_cipher_func *) aes256_encrypt, - - .ctx_size = - sizeof(struct CFB8_CTX (struct aes256_ctx, AES_BLOCK_SIZE)), - .encrypt = _cfb8_encrypt, - .decrypt = _cfb8_decrypt, - .set_encrypt_key = (nettle_set_key_func *) aes256_set_encrypt_key, - .set_decrypt_key = (nettle_set_key_func *) aes256_set_encrypt_key, - .max_iv_size = AES_BLOCK_SIZE, - }, - {.algo = GNUTLS_CIPHER_AES_128_XTS, - .block_size = AES_BLOCK_SIZE, - .key_size = AES128_KEY_SIZE * 2, - - .ctx_size = sizeof(struct xts_aes128_key), - .encrypt = _xts_aes128_encrypt, - .decrypt = _xts_aes128_decrypt, - .set_encrypt_key = (nettle_set_key_func *) xts_aes128_set_encrypt_key, - .set_decrypt_key = (nettle_set_key_func *) xts_aes128_set_decrypt_key, - .max_iv_size = AES_BLOCK_SIZE, - }, - {.algo = GNUTLS_CIPHER_AES_256_XTS, - .block_size = AES_BLOCK_SIZE, - .key_size = AES256_KEY_SIZE * 2, - - .ctx_size = sizeof(struct xts_aes256_key), - .encrypt = _xts_aes256_encrypt, - .decrypt = _xts_aes256_decrypt, - .set_encrypt_key = (nettle_set_key_func *) xts_aes256_set_encrypt_key, - .set_decrypt_key = (nettle_set_key_func *) xts_aes256_set_decrypt_key, - .max_iv_size = AES_BLOCK_SIZE, - }, - {.algo = GNUTLS_CIPHER_AES_128_SIV, - .block_size = SIV_BLOCK_SIZE, - .key_size = SIV_CMAC_AES128_KEY_SIZE, - - .ctx_size = sizeof(struct siv_cmac_aes128_ctx), - .aead_encrypt = (aead_encrypt_func) _siv_cmac_aes128_encrypt_message, - .aead_decrypt = (aead_decrypt_func) _siv_cmac_aes128_decrypt_message, - .set_encrypt_key = (nettle_set_key_func *) siv_cmac_aes128_set_key, - .set_decrypt_key = (nettle_set_key_func *) siv_cmac_aes128_set_key, - .max_iv_size = SIV_DIGEST_SIZE, - }, - {.algo = GNUTLS_CIPHER_AES_256_SIV, - .block_size = SIV_BLOCK_SIZE, - .key_size = SIV_CMAC_AES256_KEY_SIZE, - - .ctx_size = sizeof(struct siv_cmac_aes256_ctx), - .aead_encrypt = (aead_encrypt_func) _siv_cmac_aes256_encrypt_message, - .aead_decrypt = (aead_decrypt_func) _siv_cmac_aes256_decrypt_message, - .set_encrypt_key = (nettle_set_key_func *) siv_cmac_aes256_set_key, - .set_decrypt_key = (nettle_set_key_func *) siv_cmac_aes256_set_key, - .max_iv_size = SIV_DIGEST_SIZE, - }, + { + .algo = GNUTLS_CIPHER_AES_128_CFB8, + .block_size = AES_BLOCK_SIZE, + .key_size = AES128_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)aes128_encrypt, + .decrypt_block = (nettle_cipher_func *)aes128_encrypt, + + .ctx_size = sizeof( + struct CFB8_CTX(struct aes128_ctx, AES_BLOCK_SIZE)), + .encrypt = _cfb8_encrypt, + .decrypt = _cfb8_decrypt, + .set_encrypt_key = + (nettle_set_key_func *)aes128_set_encrypt_key, + .set_decrypt_key = + (nettle_set_key_func *)aes128_set_encrypt_key, + .max_iv_size = AES_BLOCK_SIZE, + }, + { + .algo = GNUTLS_CIPHER_AES_192_CFB8, + .block_size = AES_BLOCK_SIZE, + .key_size = AES192_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)aes192_encrypt, + .decrypt_block = (nettle_cipher_func *)aes192_encrypt, + + .ctx_size = sizeof( + struct CFB8_CTX(struct aes192_ctx, AES_BLOCK_SIZE)), + .encrypt = _cfb8_encrypt, + .decrypt = _cfb8_decrypt, + .set_encrypt_key = + (nettle_set_key_func *)aes192_set_encrypt_key, + .set_decrypt_key = + (nettle_set_key_func *)aes192_set_encrypt_key, + .max_iv_size = AES_BLOCK_SIZE, + }, + { + .algo = GNUTLS_CIPHER_AES_256_CFB8, + .block_size = AES_BLOCK_SIZE, + .key_size = AES256_KEY_SIZE, + .encrypt_block = (nettle_cipher_func *)aes256_encrypt, + .decrypt_block = (nettle_cipher_func *)aes256_encrypt, + + .ctx_size = sizeof( + struct CFB8_CTX(struct aes256_ctx, AES_BLOCK_SIZE)), + .encrypt = _cfb8_encrypt, + .decrypt = _cfb8_decrypt, + .set_encrypt_key = + (nettle_set_key_func *)aes256_set_encrypt_key, + .set_decrypt_key = + (nettle_set_key_func *)aes256_set_encrypt_key, + .max_iv_size = AES_BLOCK_SIZE, + }, + { + .algo = GNUTLS_CIPHER_AES_128_XTS, + .block_size = AES_BLOCK_SIZE, + .key_size = AES128_KEY_SIZE * 2, + + .ctx_size = sizeof(struct xts_aes128_key), + .encrypt = _xts_aes128_encrypt, + .decrypt = _xts_aes128_decrypt, + .set_encrypt_key = + (nettle_set_key_func *)xts_aes128_set_encrypt_key, + .set_decrypt_key = + (nettle_set_key_func *)xts_aes128_set_decrypt_key, + .max_iv_size = AES_BLOCK_SIZE, + }, + { + .algo = GNUTLS_CIPHER_AES_256_XTS, + .block_size = AES_BLOCK_SIZE, + .key_size = AES256_KEY_SIZE * 2, + + .ctx_size = sizeof(struct xts_aes256_key), + .encrypt = _xts_aes256_encrypt, + .decrypt = _xts_aes256_decrypt, + .set_encrypt_key = + (nettle_set_key_func *)xts_aes256_set_encrypt_key, + .set_decrypt_key = + (nettle_set_key_func *)xts_aes256_set_decrypt_key, + .max_iv_size = AES_BLOCK_SIZE, + }, + { + .algo = GNUTLS_CIPHER_AES_128_SIV, + .block_size = SIV_BLOCK_SIZE, + .key_size = SIV_CMAC_AES128_KEY_SIZE, + + .ctx_size = sizeof(struct siv_cmac_aes128_ctx), + .aead_encrypt = + (aead_encrypt_func)_siv_cmac_aes128_encrypt_message, + .aead_decrypt = + (aead_decrypt_func)_siv_cmac_aes128_decrypt_message, + .set_encrypt_key = + (nettle_set_key_func *)siv_cmac_aes128_set_key, + .set_decrypt_key = + (nettle_set_key_func *)siv_cmac_aes128_set_key, + .max_iv_size = SIV_DIGEST_SIZE, + }, + { + .algo = GNUTLS_CIPHER_AES_256_SIV, + .block_size = SIV_BLOCK_SIZE, + .key_size = SIV_CMAC_AES256_KEY_SIZE, + + .ctx_size = sizeof(struct siv_cmac_aes256_ctx), + .aead_encrypt = + (aead_encrypt_func)_siv_cmac_aes256_encrypt_message, + .aead_decrypt = + (aead_decrypt_func)_siv_cmac_aes256_decrypt_message, + .set_encrypt_key = + (nettle_set_key_func *)siv_cmac_aes256_set_key, + .set_decrypt_key = + (nettle_set_key_func *)siv_cmac_aes256_set_key, + .max_iv_size = SIV_DIGEST_SIZE, + }, }; static int wrap_nettle_cipher_exists(gnutls_cipher_algorithm_t algo) @@ -1042,8 +1096,8 @@ static int wrap_nettle_cipher_exists(gnutls_cipher_algorithm_t algo) return 0; } -static int -wrap_nettle_cipher_init(gnutls_cipher_algorithm_t algo, void **_ctx, int enc) +static int wrap_nettle_cipher_init(gnutls_cipher_algorithm_t algo, void **_ctx, + int enc) { struct nettle_cipher_ctx *ctx; uintptr_t cur_alignment; @@ -1062,17 +1116,17 @@ wrap_nettle_cipher_init(gnutls_cipher_algorithm_t algo, void **_ctx, int enc) if (idx == -1) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - ctx = - gnutls_calloc(1, sizeof(*ctx) + builtin_ciphers[idx].ctx_size + 16); + ctx = gnutls_calloc(1, + sizeof(*ctx) + builtin_ciphers[idx].ctx_size + 16); if (ctx == NULL) { gnutls_assert(); return GNUTLS_E_MEMORY_ERROR; } ctx->enc = enc; - ctx_ptr = ((uint8_t *) ctx) + sizeof(*ctx); + ctx_ptr = ((uint8_t *)ctx) + sizeof(*ctx); - cur_alignment = ((uintptr_t) ctx_ptr) % 16; + cur_alignment = ((uintptr_t)ctx_ptr) % 16; if (cur_alignment > 0) ctx_ptr += 16 - cur_alignment; @@ -1084,13 +1138,13 @@ wrap_nettle_cipher_init(gnutls_cipher_algorithm_t algo, void **_ctx, int enc) return 0; } -static int -wrap_nettle_cipher_setkey(void *_ctx, const void *key, size_t keysize) +static int wrap_nettle_cipher_setkey(void *_ctx, const void *key, + size_t keysize) { struct nettle_cipher_ctx *ctx = _ctx; - if (ctx->cipher->key_size > 0 - && unlikely(keysize != ctx->cipher->key_size)) { + if (ctx->cipher->key_size > 0 && + unlikely(keysize != ctx->cipher->key_size)) { return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); } else if (ctx->cipher->key_size == 0) { ctx->cipher->gen_set_key(ctx->ctx_ptr, keysize, key); @@ -1184,9 +1238,9 @@ static int wrap_nettle_cipher_getiv(void *_ctx, void *iv, size_t iv_size) return (int)ctx->iv_size; } -static int -wrap_nettle_cipher_decrypt(void *_ctx, const void *encr, size_t encr_size, - void *plain, size_t plain_size) +static int wrap_nettle_cipher_decrypt(void *_ctx, const void *encr, + size_t encr_size, void *plain, + size_t plain_size) { struct nettle_cipher_ctx *ctx = _ctx; @@ -1198,9 +1252,9 @@ wrap_nettle_cipher_decrypt(void *_ctx, const void *encr, size_t encr_size, return 0; } -static int -wrap_nettle_cipher_encrypt(void *_ctx, const void *plain, size_t plain_size, - void *encr, size_t encr_size) +static int wrap_nettle_cipher_encrypt(void *_ctx, const void *plain, + size_t plain_size, void *encr, + size_t encr_size) { struct nettle_cipher_ctx *ctx = _ctx; int ret; @@ -1212,9 +1266,8 @@ wrap_nettle_cipher_encrypt(void *_ctx, const void *plain, size_t plain_size, case GNUTLS_CIPHER_AES_128_GCM: case GNUTLS_CIPHER_AES_192_GCM: case GNUTLS_CIPHER_AES_256_GCM: - ret = - record_aes_gcm_encrypt_size(&ctx->rekey_counter, - plain_size); + ret = record_aes_gcm_encrypt_size(&ctx->rekey_counter, + plain_size); if (ret < 0) { return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); } @@ -1228,13 +1281,11 @@ wrap_nettle_cipher_encrypt(void *_ctx, const void *plain, size_t plain_size, return 0; } -static int -wrap_nettle_cipher_aead_encrypt(void *_ctx, - const void *nonce, size_t nonce_size, - const void *auth, size_t auth_size, - size_t tag_size, - const void *plain, size_t plain_size, - void *encr, size_t encr_size) +static int wrap_nettle_cipher_aead_encrypt(void *_ctx, const void *nonce, + size_t nonce_size, const void *auth, + size_t auth_size, size_t tag_size, + const void *plain, size_t plain_size, + void *encr, size_t encr_size) { struct nettle_cipher_ctx *ctx = _ctx; @@ -1249,7 +1300,7 @@ wrap_nettle_cipher_aead_encrypt(void *_ctx, ctx->cipher->encrypt(ctx, plain_size, encr, plain); ctx->cipher->tag(ctx->ctx_ptr, tag_size, - ((uint8_t *) encr) + plain_size); + ((uint8_t *)encr) + plain_size); } else { /* CCM-style cipher */ @@ -1275,11 +1326,10 @@ wrap_nettle_cipher_aead_encrypt(void *_ctx, break; default: if (_gnutls_fips_mode_enabled()) { - _gnutls_switch_fips_state - (GNUTLS_FIPS140_OP_ERROR); - return - gnutls_assert_val - (GNUTLS_E_INVALID_REQUEST); + _gnutls_switch_fips_state( + GNUTLS_FIPS140_OP_ERROR); + return gnutls_assert_val( + GNUTLS_E_INVALID_REQUEST); } break; } @@ -1288,22 +1338,18 @@ wrap_nettle_cipher_aead_encrypt(void *_ctx, break; } - ctx->cipher->aead_encrypt(ctx, - nonce_size, nonce, - auth_size, auth, - tag_size, - tag_size + plain_size, encr, plain); + ctx->cipher->aead_encrypt(ctx, nonce_size, nonce, auth_size, + auth, tag_size, tag_size + plain_size, + encr, plain); } return 0; } -static int -wrap_nettle_cipher_aead_decrypt(void *_ctx, - const void *nonce, size_t nonce_size, - const void *auth, size_t auth_size, - size_t tag_size, - const void *encr, size_t encr_size, - void *plain, size_t plain_size) +static int wrap_nettle_cipher_aead_decrypt(void *_ctx, const void *nonce, + size_t nonce_size, const void *auth, + size_t auth_size, size_t tag_size, + const void *encr, size_t encr_size, + void *plain, size_t plain_size) { struct nettle_cipher_ctx *ctx = _ctx; int ret; @@ -1327,8 +1373,8 @@ wrap_nettle_cipher_aead_decrypt(void *_ctx, ctx->cipher->tag(ctx->ctx_ptr, tag_size, tag); - if (gnutls_memcmp(((uint8_t *) encr) + encr_size, tag, tag_size) - != 0) + if (gnutls_memcmp(((uint8_t *)encr) + encr_size, tag, + tag_size) != 0) return gnutls_assert_val(GNUTLS_E_DECRYPTION_FAILED); } else { /* CCM-style cipher */ @@ -1359,11 +1405,10 @@ wrap_nettle_cipher_aead_decrypt(void *_ctx, break; default: if (_gnutls_fips_mode_enabled()) { - _gnutls_switch_fips_state - (GNUTLS_FIPS140_OP_ERROR); - return - gnutls_assert_val - (GNUTLS_E_INVALID_REQUEST); + _gnutls_switch_fips_state( + GNUTLS_FIPS140_OP_ERROR); + return gnutls_assert_val( + GNUTLS_E_INVALID_REQUEST); } break; } @@ -1372,10 +1417,8 @@ wrap_nettle_cipher_aead_decrypt(void *_ctx, break; } - ret = ctx->cipher->aead_decrypt(ctx, - nonce_size, nonce, - auth_size, auth, - tag_size, + ret = ctx->cipher->aead_decrypt(ctx, nonce_size, nonce, + auth_size, auth, tag_size, encr_size, plain, encr); if (unlikely(ret == 0)) return gnutls_assert_val(GNUTLS_E_DECRYPTION_FAILED); @@ -1383,8 +1426,8 @@ wrap_nettle_cipher_aead_decrypt(void *_ctx, return 0; } -static int -wrap_nettle_cipher_auth(void *_ctx, const void *plain, size_t plain_size) +static int wrap_nettle_cipher_auth(void *_ctx, const void *plain, + size_t plain_size) { struct nettle_cipher_ctx *ctx = _ctx; @@ -1398,7 +1441,6 @@ static void wrap_nettle_cipher_tag(void *_ctx, void *tag, size_t tag_size) struct nettle_cipher_ctx *ctx = _ctx; ctx->cipher->tag(ctx->ctx_ptr, tag_size, tag); - } static void wrap_nettle_cipher_close(void *_ctx) diff --git a/lib/nettle/ecc-gost-curve.h b/lib/nettle/ecc-gost-curve.h index abc7dfa260..7e53ab47ec 100644 --- a/lib/nettle/ecc-gost-curve.h +++ b/lib/nettle/ecc-gost-curve.h @@ -32,42 +32,37 @@ /* Development of Nettle's ECC support was funded by the .SE Internet Fund. */ #ifndef GNUTLS_LIB_NETTLE_GOST_ECC_GOST_CURVE_H -# define GNUTLS_LIB_NETTLE_GOST_ECC_GOST_CURVE_H +#define GNUTLS_LIB_NETTLE_GOST_ECC_GOST_CURVE_H -# ifdef __cplusplus +#ifdef __cplusplus extern "C" { -# endif +#endif /* The contents of this struct is internal. */ - struct ecc_curve; - -# ifndef NETTLE_PURE -# ifdef __GNUC__ -# define NETTLE_PURE __attribute__((pure)) -# else -# define NETTLE_PURE -# endif -# endif - -# define gost_point_mul_g _gnutls_nettle_ecc_gost_point_mul_g -# define gost_point_set _gnutls_nettle_ecc_gost_point_set -# define gostdsa_generate_keypair _gnutls_nettle_ecc_gostdsa_generate_keypair - void - gost_point_mul_g(struct ecc_point *r, const struct ecc_scalar *n); - int - gost_point_set(struct ecc_point *p, const mpz_t x, const mpz_t y); - void - gostdsa_generate_keypair(struct ecc_point *pub, - struct ecc_scalar *key, - void *random_ctx, - nettle_random_func * random); - -# define nettle_get_gost_gc256b _gnutls_nettle_ecc_get_gost_gc256b -# define nettle_get_gost_gc512a _gnutls_nettle_ecc_get_gost_gc512a - const struct ecc_curve *NETTLE_PURE nettle_get_gost_gc256b(void); - const struct ecc_curve *NETTLE_PURE nettle_get_gost_gc512a(void); - -# ifdef __cplusplus +struct ecc_curve; + +#ifndef NETTLE_PURE +#ifdef __GNUC__ +#define NETTLE_PURE __attribute__((pure)) +#else +#define NETTLE_PURE +#endif +#endif + +#define gost_point_mul_g _gnutls_nettle_ecc_gost_point_mul_g +#define gost_point_set _gnutls_nettle_ecc_gost_point_set +#define gostdsa_generate_keypair _gnutls_nettle_ecc_gostdsa_generate_keypair +void gost_point_mul_g(struct ecc_point *r, const struct ecc_scalar *n); +int gost_point_set(struct ecc_point *p, const mpz_t x, const mpz_t y); +void gostdsa_generate_keypair(struct ecc_point *pub, struct ecc_scalar *key, + void *random_ctx, nettle_random_func *random); + +#define nettle_get_gost_gc256b _gnutls_nettle_ecc_get_gost_gc256b +#define nettle_get_gost_gc512a _gnutls_nettle_ecc_get_gost_gc512a +const struct ecc_curve *NETTLE_PURE nettle_get_gost_gc256b(void); +const struct ecc_curve *NETTLE_PURE nettle_get_gost_gc512a(void); + +#ifdef __cplusplus } -# endif -#endif /* GNUTLS_LIB_NETTLE_GOST_ECC_GOST_CURVE_H */ +#endif +#endif /* GNUTLS_LIB_NETTLE_GOST_ECC_GOST_CURVE_H */ diff --git a/lib/nettle/gnettle.h b/lib/nettle/gnettle.h index 49f8858aab..eb6740d4c7 100644 --- a/lib/nettle/gnettle.h +++ b/lib/nettle/gnettle.h @@ -1,8 +1,8 @@ #ifndef GNUTLS_LIB_NETTLE_GNETTLE_H -# define GNUTLS_LIB_NETTLE_GNETTLE_H +#define GNUTLS_LIB_NETTLE_GNETTLE_H -# define PRIME_CHECK_PARAM 8 -# define TOMPZ(x) ((__mpz_struct*)(x)) -# define SIZEOF_MPZT sizeof(__mpz_struct) +#define PRIME_CHECK_PARAM 8 +#define TOMPZ(x) ((__mpz_struct *)(x)) +#define SIZEOF_MPZT sizeof(__mpz_struct) -#endif /* GNUTLS_LIB_NETTLE_GNETTLE_H */ +#endif /* GNUTLS_LIB_NETTLE_GNETTLE_H */ diff --git a/lib/nettle/gost/acpkm.c b/lib/nettle/gost/acpkm.c index af4a8fc43d..439444a6a8 100644 --- a/lib/nettle/gost/acpkm.c +++ b/lib/nettle/gost/acpkm.c @@ -32,23 +32,20 @@ */ #if HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include "acpkm.h" static uint8_t acpkm_mesh_data[ACPKM_KEY_SIZE] = { - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, - 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, - 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, + 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, + 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, }; -void acpkm_crypt(struct acpkm_ctx *ctx, - void *cipher, - nettle_cipher_func * encrypt, - nettle_set_key_func * set_key, - size_t length, uint8_t * dst, const uint8_t * src) +void acpkm_crypt(struct acpkm_ctx *ctx, void *cipher, + nettle_cipher_func *encrypt, nettle_set_key_func *set_key, + size_t length, uint8_t *dst, const uint8_t *src) { size_t N = ctx->N; size_t part; diff --git a/lib/nettle/gost/acpkm.h b/lib/nettle/gost/acpkm.h index 6c76951b5c..bea0b51586 100644 --- a/lib/nettle/gost/acpkm.h +++ b/lib/nettle/gost/acpkm.h @@ -32,33 +32,34 @@ */ #ifndef NETTLE_ACPKM_H_INCLUDED -# define NETTLE_ACPKM_H_INCLUDED +#define NETTLE_ACPKM_H_INCLUDED -# include +#include -# ifdef __cplusplus +#ifdef __cplusplus extern "C" { -# endif +#endif -# define acpkm_crypt _gnutls_acpkm_crypt +#define acpkm_crypt _gnutls_acpkm_crypt - struct acpkm_ctx { - size_t N; - size_t pos; - }; +struct acpkm_ctx { + size_t N; + size_t pos; +}; -# define ACPKM_CTX(type) \ -{ struct acpkm_ctx ctx; type cipher; } +#define ACPKM_CTX(type) \ + { \ + struct acpkm_ctx ctx; \ + type cipher; \ + } -# define ACPKM_KEY_SIZE 32 +#define ACPKM_KEY_SIZE 32 - void acpkm_crypt(struct acpkm_ctx *ctx, - void *cipher, - nettle_cipher_func * encrypt, - nettle_set_key_func * set_key, - size_t length, uint8_t * dst, const uint8_t * src); +void acpkm_crypt(struct acpkm_ctx *ctx, void *cipher, + nettle_cipher_func *encrypt, nettle_set_key_func *set_key, + size_t length, uint8_t *dst, const uint8_t *src); -# ifdef __cplusplus +#ifdef __cplusplus } -# endif -#endif /* NETTLE_ACPKM_H_INCLUDED */ +#endif +#endif /* NETTLE_ACPKM_H_INCLUDED */ diff --git a/lib/nettle/gost/bignum-le.c b/lib/nettle/gost/bignum-le.c index 11203f05cd..10da1e6dfc 100644 --- a/lib/nettle/gost/bignum-le.c +++ b/lib/nettle/gost/bignum-le.c @@ -32,7 +32,7 @@ */ #if HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include @@ -42,7 +42,7 @@ #include #include "bignum-le.h" -void nettle_mpz_get_str_256_u_le(size_t length, uint8_t * s, const mpz_t x) +void nettle_mpz_get_str_256_u_le(size_t length, uint8_t *s, const mpz_t x) { if (!length) { /* x must be zero */ @@ -58,14 +58,14 @@ void nettle_mpz_get_str_256_u_le(size_t length, uint8_t * s, const mpz_t x) } #define nettle_mpz_from_octets_le(x, length, s) \ - mpz_import((x), (length), -1, 1, 0, 0, (s)) + mpz_import((x), (length), -1, 1, 0, 0, (s)) -void nettle_mpz_set_str_256_u_le(mpz_t x, size_t length, const uint8_t * s) +void nettle_mpz_set_str_256_u_le(mpz_t x, size_t length, const uint8_t *s) { nettle_mpz_from_octets_le(x, length, s); } -void nettle_mpz_init_set_str_256_u_le(mpz_t x, size_t length, const uint8_t * s) +void nettle_mpz_init_set_str_256_u_le(mpz_t x, size_t length, const uint8_t *s) { mpz_init(x); nettle_mpz_from_octets_le(x, length, s); diff --git a/lib/nettle/gost/bignum-le.h b/lib/nettle/gost/bignum-le.h index 51de1f32ac..b8402c997e 100644 --- a/lib/nettle/gost/bignum-le.h +++ b/lib/nettle/gost/bignum-le.h @@ -32,37 +32,33 @@ */ #ifndef GNUTLS_LIB_NETTLE_GOST_BIGNUM_LE_H -# define GNUTLS_LIB_NETTLE_GOST_BIGNUM_LE_H +#define GNUTLS_LIB_NETTLE_GOST_BIGNUM_LE_H -# include +#include -# include +#include -# include +#include -# ifdef __cplusplus +#ifdef __cplusplus extern "C" { -# endif +#endif -# define nettle_mpz_sizeinbase_256_u_le nettle_mpz_sizeinbase_256_u +#define nettle_mpz_sizeinbase_256_u_le nettle_mpz_sizeinbase_256_u -# define nettle_mpz_get_str_256_u_le _gnutls_mpz_get_str_256_u_le -# define nettle_mpz_set_str_256_u_le _gnutls_mpz_set_str_256_u_le -# define nettle_mpz_init_set_str_256_u_le _gnutls_mpz_init_set_str_256_u_le +#define nettle_mpz_get_str_256_u_le _gnutls_mpz_get_str_256_u_le +#define nettle_mpz_set_str_256_u_le _gnutls_mpz_set_str_256_u_le +#define nettle_mpz_init_set_str_256_u_le _gnutls_mpz_init_set_str_256_u_le /* Writes an integer as length octets, using big endian byte order, * and unsigned number format. */ - void - nettle_mpz_get_str_256_u_le(size_t length, uint8_t * s, const mpz_t x); +void nettle_mpz_get_str_256_u_le(size_t length, uint8_t *s, const mpz_t x); - void - nettle_mpz_set_str_256_u_le(mpz_t x, size_t length, const uint8_t * s); +void nettle_mpz_set_str_256_u_le(mpz_t x, size_t length, const uint8_t *s); - void - nettle_mpz_init_set_str_256_u_le(mpz_t x, - size_t length, const uint8_t * s); +void nettle_mpz_init_set_str_256_u_le(mpz_t x, size_t length, const uint8_t *s); -# ifdef __cplusplus +#ifdef __cplusplus } -# endif -#endif /* GNUTLS_LIB_NETTLE_GOST_BIGNUM_LE_H */ +#endif +#endif /* GNUTLS_LIB_NETTLE_GOST_BIGNUM_LE_H */ diff --git a/lib/nettle/gost/cmac-kuznyechik.c b/lib/nettle/gost/cmac-kuznyechik.c index 4121400283..964141103a 100644 --- a/lib/nettle/gost/cmac-kuznyechik.c +++ b/lib/nettle/gost/cmac-kuznyechik.c @@ -23,31 +23,29 @@ */ #if HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #ifndef HAVE_NETTLE_CMAC_KUZNYECHIK_UPDATE -# include +#include -# include "gost/cmac.h" +#include "gost/cmac.h" -void -cmac_kuznyechik_set_key(struct cmac_kuznyechik_ctx *ctx, const uint8_t * key) +void cmac_kuznyechik_set_key(struct cmac_kuznyechik_ctx *ctx, + const uint8_t *key) { CMAC128_SET_KEY(ctx, kuznyechik_set_key, kuznyechik_encrypt, key); } -void -cmac_kuznyechik_update(struct cmac_kuznyechik_ctx *ctx, - size_t length, const uint8_t * data) +void cmac_kuznyechik_update(struct cmac_kuznyechik_ctx *ctx, size_t length, + const uint8_t *data) { CMAC128_UPDATE(ctx, kuznyechik_encrypt, length, data); } -void -cmac_kuznyechik_digest(struct cmac_kuznyechik_ctx *ctx, - size_t length, uint8_t * digest) +void cmac_kuznyechik_digest(struct cmac_kuznyechik_ctx *ctx, size_t length, + uint8_t *digest) { CMAC128_DIGEST(ctx, kuznyechik_encrypt, length, digest); } diff --git a/lib/nettle/gost/cmac-magma.c b/lib/nettle/gost/cmac-magma.c index c11ef81516..b8e6d58d17 100644 --- a/lib/nettle/gost/cmac-magma.c +++ b/lib/nettle/gost/cmac-magma.c @@ -23,30 +23,29 @@ */ #if HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #ifndef HAVE_NETTLE_CMAC_MAGMA_UPDATE -# include +#include -# include "magma.h" -# include "cmac.h" +#include "magma.h" +#include "cmac.h" -void cmac_magma_set_key(struct cmac_magma_ctx *ctx, const uint8_t * key) +void cmac_magma_set_key(struct cmac_magma_ctx *ctx, const uint8_t *key) { CMAC64_SET_KEY(ctx, magma_set_key, magma_encrypt, key); } -void -cmac_magma_update(struct cmac_magma_ctx *ctx, - size_t length, const uint8_t * data) +void cmac_magma_update(struct cmac_magma_ctx *ctx, size_t length, + const uint8_t *data) { CMAC64_UPDATE(ctx, magma_encrypt, length, data); } -void -cmac_magma_digest(struct cmac_magma_ctx *ctx, size_t length, uint8_t * digest) +void cmac_magma_digest(struct cmac_magma_ctx *ctx, size_t length, + uint8_t *digest) { CMAC64_DIGEST(ctx, magma_encrypt, length, digest); } diff --git a/lib/nettle/gost/cmac.h b/lib/nettle/gost/cmac.h index f1e61b8bc3..fbea6ab6d2 100644 --- a/lib/nettle/gost/cmac.h +++ b/lib/nettle/gost/cmac.h @@ -34,66 +34,60 @@ */ #ifndef GOST_CMAC_H_INCLUDED -# define GOST_CMAC_H_INCLUDED +#define GOST_CMAC_H_INCLUDED -# if HAVE_CONFIG_H -# include -# endif +#if HAVE_CONFIG_H +#include +#endif -# ifndef HAVE_NETTLE_CMAC_MAGMA_UPDATE -# include "magma.h" +#ifndef HAVE_NETTLE_CMAC_MAGMA_UPDATE +#include "magma.h" -# ifdef __cplusplus +#ifdef __cplusplus extern "C" { -# endif +#endif -# define cmac_magma_set_key _gnutls_cmac_magma_set_key -# define cmac_magma_update _gnutls_cmac_magma_update -# define cmac_magma_digest _gnutls_cmac_magma_digest +#define cmac_magma_set_key _gnutls_cmac_magma_set_key +#define cmac_magma_update _gnutls_cmac_magma_update +#define cmac_magma_digest _gnutls_cmac_magma_digest - struct cmac_magma_ctx CMAC64_CTX(struct magma_ctx); +struct cmac_magma_ctx CMAC64_CTX(struct magma_ctx); - void - cmac_magma_set_key(struct cmac_magma_ctx *ctx, const uint8_t * key); +void cmac_magma_set_key(struct cmac_magma_ctx *ctx, const uint8_t *key); - void - cmac_magma_update(struct cmac_magma_ctx *ctx, - size_t length, const uint8_t * data); +void cmac_magma_update(struct cmac_magma_ctx *ctx, size_t length, + const uint8_t *data); - void - cmac_magma_digest(struct cmac_magma_ctx *ctx, - size_t length, uint8_t * digest); +void cmac_magma_digest(struct cmac_magma_ctx *ctx, size_t length, + uint8_t *digest); -# ifdef __cplusplus +#ifdef __cplusplus } -# endif -# endif /* HAVE_NETTLE_CMAC_MAGMA_UPDATE */ -# ifndef HAVE_NETTLE_CMAC_KUZNYECHIK_UPDATE -# include "kuznyechik.h" -# ifdef __cplusplus +#endif +#endif /* HAVE_NETTLE_CMAC_MAGMA_UPDATE */ +#ifndef HAVE_NETTLE_CMAC_KUZNYECHIK_UPDATE +#include "kuznyechik.h" +#ifdef __cplusplus extern "C" { -# endif +#endif -# define cmac_kuznyechik_set_key _gnutls_cmac_kuznyechik_set_key -# define cmac_kuznyechik_update _gnutls_cmac_kuznyechik_update -# define cmac_kuznyechik_digest _gnutls_cmac_kuznyechik_digest +#define cmac_kuznyechik_set_key _gnutls_cmac_kuznyechik_set_key +#define cmac_kuznyechik_update _gnutls_cmac_kuznyechik_update +#define cmac_kuznyechik_digest _gnutls_cmac_kuznyechik_digest - struct cmac_kuznyechik_ctx CMAC128_CTX(struct kuznyechik_ctx); +struct cmac_kuznyechik_ctx CMAC128_CTX(struct kuznyechik_ctx); - void - cmac_kuznyechik_set_key(struct cmac_kuznyechik_ctx *ctx, - const uint8_t * key); +void cmac_kuznyechik_set_key(struct cmac_kuznyechik_ctx *ctx, + const uint8_t *key); - void - cmac_kuznyechik_update(struct cmac_kuznyechik_ctx *ctx, - size_t length, const uint8_t * data); +void cmac_kuznyechik_update(struct cmac_kuznyechik_ctx *ctx, size_t length, + const uint8_t *data); - void - cmac_kuznyechik_digest(struct cmac_kuznyechik_ctx *ctx, - size_t length, uint8_t * digest); +void cmac_kuznyechik_digest(struct cmac_kuznyechik_ctx *ctx, size_t length, + uint8_t *digest); -# ifdef __cplusplus +#ifdef __cplusplus } -# endif -# endif -#endif /* CMAC_H_INCLUDED */ +#endif +#endif +#endif /* CMAC_H_INCLUDED */ diff --git a/lib/nettle/gost/ecc-gost-hash.c b/lib/nettle/gost/ecc-gost-hash.c index e1aee68e14..5202a894af 100644 --- a/lib/nettle/gost/ecc-gost-hash.c +++ b/lib/nettle/gost/ecc-gost-hash.c @@ -32,7 +32,7 @@ /* Development of Nettle's ECC support was funded by the .SE Internet Fund. */ #if HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include @@ -50,9 +50,8 @@ unusual limb sizes. */ -void -gost_hash(const struct ecc_modulo *m, - mp_limb_t * hp, size_t length, const uint8_t * digest) +void gost_hash(const struct ecc_modulo *m, mp_limb_t *hp, size_t length, + const uint8_t *digest) { if (length > ((size_t)m->bit_size + 7) / 8) length = (m->bit_size + 7) / 8; diff --git a/lib/nettle/gost/gost-point-mul-g.c b/lib/nettle/gost/gost-point-mul-g.c index e0d85cd6e0..2909d6effa 100644 --- a/lib/nettle/gost/gost-point-mul-g.c +++ b/lib/nettle/gost/gost-point-mul-g.c @@ -32,7 +32,7 @@ /* Development of Nettle's ECC support was funded by the .SE Internet Fund. */ #if HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include diff --git a/lib/nettle/gost/gost-point.c b/lib/nettle/gost/gost-point.c index 22eef214f2..ecbfb531c6 100644 --- a/lib/nettle/gost/gost-point.c +++ b/lib/nettle/gost/gost-point.c @@ -32,7 +32,7 @@ /* Development of Nettle's ECC support was funded by the .SE Internet Fund. */ #if HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include @@ -48,8 +48,8 @@ int gost_point_set(struct ecc_point *p, const mpz_t x, const mpz_t y) size = p->ecc->p.size; - if (mpz_sgn(x) < 0 || mpz_limbs_cmp(x, p->ecc->p.m, size) >= 0 - || mpz_sgn(y) < 0 || mpz_limbs_cmp(y, p->ecc->p.m, size) >= 0) + if (mpz_sgn(x) < 0 || mpz_limbs_cmp(x, p->ecc->p.m, size) >= 0 || + mpz_sgn(y) < 0 || mpz_limbs_cmp(y, p->ecc->p.m, size) >= 0) return 0; mpz_init(lhs); @@ -75,12 +75,12 @@ int gost_point_set(struct ecc_point *p, const mpz_t x, const mpz_t y) mpz_t x2, d; mpz_init(x2); mpz_init_set_ui(d, 39081); - mpz_mul(x2, x, x); /* x^2 */ - mpz_mul(d, d, x2); /* 39081 x^2 */ + mpz_mul(x2, x, x); /* x^2 */ + mpz_mul(d, d, x2); /* 39081 x^2 */ mpz_set_ui(rhs, 1); - mpz_submul(rhs, d, lhs); /* 1 - 39081 x^2 y^2 */ + mpz_submul(rhs, d, lhs); /* 1 - 39081 x^2 y^2 */ /* Check that x^2 + y^2 = 1 - 39081 x^2 y^2 */ - mpz_add(lhs, x2, lhs); /* x^2 + y^2 */ + mpz_add(lhs, x2, lhs); /* x^2 + y^2 */ mpz_clear(d); mpz_clear(x2); } else { diff --git a/lib/nettle/gost/gost-wrap.c b/lib/nettle/gost/gost-wrap.c index d8a38f6173..da87a1c434 100644 --- a/lib/nettle/gost/gost-wrap.c +++ b/lib/nettle/gost/gost-wrap.c @@ -24,7 +24,7 @@ */ #if HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include @@ -36,9 +36,9 @@ #include #include -void -gost28147_kdf_cryptopro(const struct gost28147_param *param, - const uint8_t * in, const uint8_t * ukm, uint8_t * out) +void gost28147_kdf_cryptopro(const struct gost28147_param *param, + const uint8_t *in, const uint8_t *ukm, + uint8_t *out) { struct gost28147_ctx ctx; int i; @@ -66,17 +66,16 @@ gost28147_kdf_cryptopro(const struct gost28147_param *param, gost28147_set_key(&ctx, out); gost28147_set_param(&ctx, param); cfb_encrypt(&ctx, - (nettle_cipher_func *) gost28147_encrypt_for_cfb, - GOST28147_BLOCK_SIZE, iv, - GOST28147_KEY_SIZE, out, out); + (nettle_cipher_func *)gost28147_encrypt_for_cfb, + GOST28147_BLOCK_SIZE, iv, GOST28147_KEY_SIZE, out, + out); } } -void -gost28147_key_wrap_cryptopro(const struct gost28147_param *param, - const uint8_t * kek, - const uint8_t * ukm, size_t ukm_size, - const uint8_t * cek, uint8_t * enc, uint8_t * imit) +void gost28147_key_wrap_cryptopro(const struct gost28147_param *param, + const uint8_t *kek, const uint8_t *ukm, + size_t ukm_size, const uint8_t *cek, + uint8_t *enc, uint8_t *imit) { uint8_t kd[GOST28147_KEY_SIZE]; struct gost28147_ctx ctx; @@ -96,12 +95,10 @@ gost28147_key_wrap_cryptopro(const struct gost28147_param *param, gost28147_imit_digest(&ictx, GOST28147_IMIT_DIGEST_SIZE, imit); } -int -gost28147_key_unwrap_cryptopro(const struct gost28147_param *param, - const uint8_t * kek, - const uint8_t * ukm, size_t ukm_size, - const uint8_t * enc, - const uint8_t * imit, uint8_t * cek) +int gost28147_key_unwrap_cryptopro(const struct gost28147_param *param, + const uint8_t *kek, const uint8_t *ukm, + size_t ukm_size, const uint8_t *enc, + const uint8_t *imit, uint8_t *cek) { uint8_t kd[GOST28147_KEY_SIZE]; uint8_t mac[GOST28147_IMIT_DIGEST_SIZE]; diff --git a/lib/nettle/gost/gost28147.c b/lib/nettle/gost/gost28147.c index 448d26bf8c..3c2d1d0bdf 100644 --- a/lib/nettle/gost/gost28147.c +++ b/lib/nettle/gost/gost28147.c @@ -29,2237 +29,8369 @@ */ #if HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #ifndef HAVE_NETTLE_GOST28147_SET_KEY -# include +#include -# include +#include -# include -# include "nettle-write.h" -# include "gost28147.h" -# include +#include +#include "nettle-write.h" +#include "gost28147.h" +#include /* pre-initialized GOST lookup tables based on rotated S-Box */ -const struct gost28147_param gost28147_param_test_3411 = { - 0, - { - /* 0 */ - 0x00072000, 0x00075000, 0x00074800, 0x00071000, - 0x00076800, 0x00074000, 0x00070000, 0x00077000, - 0x00073000, 0x00075800, 0x00070800, 0x00076000, - 0x00073800, 0x00077800, 0x00072800, 0x00071800, - 0x0005a000, 0x0005d000, 0x0005c800, 0x00059000, - 0x0005e800, 0x0005c000, 0x00058000, 0x0005f000, - 0x0005b000, 0x0005d800, 0x00058800, 0x0005e000, - 0x0005b800, 0x0005f800, 0x0005a800, 0x00059800, - 0x00022000, 0x00025000, 0x00024800, 0x00021000, - 0x00026800, 0x00024000, 0x00020000, 0x00027000, - 0x00023000, 0x00025800, 0x00020800, 0x00026000, - 0x00023800, 0x00027800, 0x00022800, 0x00021800, - 0x00062000, 0x00065000, 0x00064800, 0x00061000, - 0x00066800, 0x00064000, 0x00060000, 0x00067000, - 0x00063000, 0x00065800, 0x00060800, 0x00066000, - 0x00063800, 0x00067800, 0x00062800, 0x00061800, - 0x00032000, 0x00035000, 0x00034800, 0x00031000, - 0x00036800, 0x00034000, 0x00030000, 0x00037000, - 0x00033000, 0x00035800, 0x00030800, 0x00036000, - 0x00033800, 0x00037800, 0x00032800, 0x00031800, - 0x0006a000, 0x0006d000, 0x0006c800, 0x00069000, - 0x0006e800, 0x0006c000, 0x00068000, 0x0006f000, - 0x0006b000, 0x0006d800, 0x00068800, 0x0006e000, - 0x0006b800, 0x0006f800, 0x0006a800, 0x00069800, - 0x0007a000, 0x0007d000, 0x0007c800, 0x00079000, - 0x0007e800, 0x0007c000, 0x00078000, 0x0007f000, - 0x0007b000, 0x0007d800, 0x00078800, 0x0007e000, - 0x0007b800, 0x0007f800, 0x0007a800, 0x00079800, - 0x00052000, 0x00055000, 0x00054800, 0x00051000, - 0x00056800, 0x00054000, 0x00050000, 0x00057000, - 0x00053000, 0x00055800, 0x00050800, 0x00056000, - 0x00053800, 0x00057800, 0x00052800, 0x00051800, - 0x00012000, 0x00015000, 0x00014800, 0x00011000, - 0x00016800, 0x00014000, 0x00010000, 0x00017000, - 0x00013000, 0x00015800, 0x00010800, 0x00016000, - 0x00013800, 0x00017800, 0x00012800, 0x00011800, - 0x0001a000, 0x0001d000, 0x0001c800, 0x00019000, - 0x0001e800, 0x0001c000, 0x00018000, 0x0001f000, - 0x0001b000, 0x0001d800, 0x00018800, 0x0001e000, - 0x0001b800, 0x0001f800, 0x0001a800, 0x00019800, - 0x00042000, 0x00045000, 0x00044800, 0x00041000, - 0x00046800, 0x00044000, 0x00040000, 0x00047000, - 0x00043000, 0x00045800, 0x00040800, 0x00046000, - 0x00043800, 0x00047800, 0x00042800, 0x00041800, - 0x0000a000, 0x0000d000, 0x0000c800, 0x00009000, - 0x0000e800, 0x0000c000, 0x00008000, 0x0000f000, - 0x0000b000, 0x0000d800, 0x00008800, 0x0000e000, - 0x0000b800, 0x0000f800, 0x0000a800, 0x00009800, - 0x00002000, 0x00005000, 0x00004800, 0x00001000, - 0x00006800, 0x00004000, 0x00000000, 0x00007000, - 0x00003000, 0x00005800, 0x00000800, 0x00006000, - 0x00003800, 0x00007800, 0x00002800, 0x00001800, - 0x0003a000, 0x0003d000, 0x0003c800, 0x00039000, - 0x0003e800, 0x0003c000, 0x00038000, 0x0003f000, - 0x0003b000, 0x0003d800, 0x00038800, 0x0003e000, - 0x0003b800, 0x0003f800, 0x0003a800, 0x00039800, - 0x0002a000, 0x0002d000, 0x0002c800, 0x00029000, - 0x0002e800, 0x0002c000, 0x00028000, 0x0002f000, - 0x0002b000, 0x0002d800, 0x00028800, 0x0002e000, - 0x0002b800, 0x0002f800, 0x0002a800, 0x00029800, - 0x0004a000, 0x0004d000, 0x0004c800, 0x00049000, - 0x0004e800, 0x0004c000, 0x00048000, 0x0004f000, - 0x0004b000, 0x0004d800, 0x00048800, 0x0004e000, - 0x0004b800, 0x0004f800, 0x0004a800, 0x00049800, - /* 1 */ - 0x03a80000, 0x03c00000, 0x03880000, 0x03e80000, - 0x03d00000, 0x03980000, 0x03a00000, 0x03900000, - 0x03f00000, 0x03f80000, 0x03e00000, 0x03b80000, - 0x03b00000, 0x03800000, 0x03c80000, 0x03d80000, - 0x06a80000, 0x06c00000, 0x06880000, 0x06e80000, - 0x06d00000, 0x06980000, 0x06a00000, 0x06900000, - 0x06f00000, 0x06f80000, 0x06e00000, 0x06b80000, - 0x06b00000, 0x06800000, 0x06c80000, 0x06d80000, - 0x05280000, 0x05400000, 0x05080000, 0x05680000, - 0x05500000, 0x05180000, 0x05200000, 0x05100000, - 0x05700000, 0x05780000, 0x05600000, 0x05380000, - 0x05300000, 0x05000000, 0x05480000, 0x05580000, - 0x00a80000, 0x00c00000, 0x00880000, 0x00e80000, - 0x00d00000, 0x00980000, 0x00a00000, 0x00900000, - 0x00f00000, 0x00f80000, 0x00e00000, 0x00b80000, - 0x00b00000, 0x00800000, 0x00c80000, 0x00d80000, - 0x00280000, 0x00400000, 0x00080000, 0x00680000, - 0x00500000, 0x00180000, 0x00200000, 0x00100000, - 0x00700000, 0x00780000, 0x00600000, 0x00380000, - 0x00300000, 0x00000000, 0x00480000, 0x00580000, - 0x04280000, 0x04400000, 0x04080000, 0x04680000, - 0x04500000, 0x04180000, 0x04200000, 0x04100000, - 0x04700000, 0x04780000, 0x04600000, 0x04380000, - 0x04300000, 0x04000000, 0x04480000, 0x04580000, - 0x04a80000, 0x04c00000, 0x04880000, 0x04e80000, - 0x04d00000, 0x04980000, 0x04a00000, 0x04900000, - 0x04f00000, 0x04f80000, 0x04e00000, 0x04b80000, - 0x04b00000, 0x04800000, 0x04c80000, 0x04d80000, - 0x07a80000, 0x07c00000, 0x07880000, 0x07e80000, - 0x07d00000, 0x07980000, 0x07a00000, 0x07900000, - 0x07f00000, 0x07f80000, 0x07e00000, 0x07b80000, - 0x07b00000, 0x07800000, 0x07c80000, 0x07d80000, - 0x07280000, 0x07400000, 0x07080000, 0x07680000, - 0x07500000, 0x07180000, 0x07200000, 0x07100000, - 0x07700000, 0x07780000, 0x07600000, 0x07380000, - 0x07300000, 0x07000000, 0x07480000, 0x07580000, - 0x02280000, 0x02400000, 0x02080000, 0x02680000, - 0x02500000, 0x02180000, 0x02200000, 0x02100000, - 0x02700000, 0x02780000, 0x02600000, 0x02380000, - 0x02300000, 0x02000000, 0x02480000, 0x02580000, - 0x03280000, 0x03400000, 0x03080000, 0x03680000, - 0x03500000, 0x03180000, 0x03200000, 0x03100000, - 0x03700000, 0x03780000, 0x03600000, 0x03380000, - 0x03300000, 0x03000000, 0x03480000, 0x03580000, - 0x06280000, 0x06400000, 0x06080000, 0x06680000, - 0x06500000, 0x06180000, 0x06200000, 0x06100000, - 0x06700000, 0x06780000, 0x06600000, 0x06380000, - 0x06300000, 0x06000000, 0x06480000, 0x06580000, - 0x05a80000, 0x05c00000, 0x05880000, 0x05e80000, - 0x05d00000, 0x05980000, 0x05a00000, 0x05900000, - 0x05f00000, 0x05f80000, 0x05e00000, 0x05b80000, - 0x05b00000, 0x05800000, 0x05c80000, 0x05d80000, - 0x01280000, 0x01400000, 0x01080000, 0x01680000, - 0x01500000, 0x01180000, 0x01200000, 0x01100000, - 0x01700000, 0x01780000, 0x01600000, 0x01380000, - 0x01300000, 0x01000000, 0x01480000, 0x01580000, - 0x02a80000, 0x02c00000, 0x02880000, 0x02e80000, - 0x02d00000, 0x02980000, 0x02a00000, 0x02900000, - 0x02f00000, 0x02f80000, 0x02e00000, 0x02b80000, - 0x02b00000, 0x02800000, 0x02c80000, 0x02d80000, - 0x01a80000, 0x01c00000, 0x01880000, 0x01e80000, - 0x01d00000, 0x01980000, 0x01a00000, 0x01900000, - 0x01f00000, 0x01f80000, 0x01e00000, 0x01b80000, - 0x01b00000, 0x01800000, 0x01c80000, 0x01d80000, - /* 2 */ - 0x30000002, 0x60000002, 0x38000002, 0x08000002, - 0x28000002, 0x78000002, 0x68000002, 0x40000002, - 0x20000002, 0x50000002, 0x48000002, 0x70000002, - 0x00000002, 0x18000002, 0x58000002, 0x10000002, - 0xb0000005, 0xe0000005, 0xb8000005, 0x88000005, - 0xa8000005, 0xf8000005, 0xe8000005, 0xc0000005, - 0xa0000005, 0xd0000005, 0xc8000005, 0xf0000005, - 0x80000005, 0x98000005, 0xd8000005, 0x90000005, - 0x30000005, 0x60000005, 0x38000005, 0x08000005, - 0x28000005, 0x78000005, 0x68000005, 0x40000005, - 0x20000005, 0x50000005, 0x48000005, 0x70000005, - 0x00000005, 0x18000005, 0x58000005, 0x10000005, - 0x30000000, 0x60000000, 0x38000000, 0x08000000, - 0x28000000, 0x78000000, 0x68000000, 0x40000000, - 0x20000000, 0x50000000, 0x48000000, 0x70000000, - 0x00000000, 0x18000000, 0x58000000, 0x10000000, - 0xb0000003, 0xe0000003, 0xb8000003, 0x88000003, - 0xa8000003, 0xf8000003, 0xe8000003, 0xc0000003, - 0xa0000003, 0xd0000003, 0xc8000003, 0xf0000003, - 0x80000003, 0x98000003, 0xd8000003, 0x90000003, - 0x30000001, 0x60000001, 0x38000001, 0x08000001, - 0x28000001, 0x78000001, 0x68000001, 0x40000001, - 0x20000001, 0x50000001, 0x48000001, 0x70000001, - 0x00000001, 0x18000001, 0x58000001, 0x10000001, - 0xb0000000, 0xe0000000, 0xb8000000, 0x88000000, - 0xa8000000, 0xf8000000, 0xe8000000, 0xc0000000, - 0xa0000000, 0xd0000000, 0xc8000000, 0xf0000000, - 0x80000000, 0x98000000, 0xd8000000, 0x90000000, - 0xb0000006, 0xe0000006, 0xb8000006, 0x88000006, - 0xa8000006, 0xf8000006, 0xe8000006, 0xc0000006, - 0xa0000006, 0xd0000006, 0xc8000006, 0xf0000006, - 0x80000006, 0x98000006, 0xd8000006, 0x90000006, - 0xb0000001, 0xe0000001, 0xb8000001, 0x88000001, - 0xa8000001, 0xf8000001, 0xe8000001, 0xc0000001, - 0xa0000001, 0xd0000001, 0xc8000001, 0xf0000001, - 0x80000001, 0x98000001, 0xd8000001, 0x90000001, - 0x30000003, 0x60000003, 0x38000003, 0x08000003, - 0x28000003, 0x78000003, 0x68000003, 0x40000003, - 0x20000003, 0x50000003, 0x48000003, 0x70000003, - 0x00000003, 0x18000003, 0x58000003, 0x10000003, - 0x30000004, 0x60000004, 0x38000004, 0x08000004, - 0x28000004, 0x78000004, 0x68000004, 0x40000004, - 0x20000004, 0x50000004, 0x48000004, 0x70000004, - 0x00000004, 0x18000004, 0x58000004, 0x10000004, - 0xb0000002, 0xe0000002, 0xb8000002, 0x88000002, - 0xa8000002, 0xf8000002, 0xe8000002, 0xc0000002, - 0xa0000002, 0xd0000002, 0xc8000002, 0xf0000002, - 0x80000002, 0x98000002, 0xd8000002, 0x90000002, - 0xb0000004, 0xe0000004, 0xb8000004, 0x88000004, - 0xa8000004, 0xf8000004, 0xe8000004, 0xc0000004, - 0xa0000004, 0xd0000004, 0xc8000004, 0xf0000004, - 0x80000004, 0x98000004, 0xd8000004, 0x90000004, - 0x30000006, 0x60000006, 0x38000006, 0x08000006, - 0x28000006, 0x78000006, 0x68000006, 0x40000006, - 0x20000006, 0x50000006, 0x48000006, 0x70000006, - 0x00000006, 0x18000006, 0x58000006, 0x10000006, - 0xb0000007, 0xe0000007, 0xb8000007, 0x88000007, - 0xa8000007, 0xf8000007, 0xe8000007, 0xc0000007, - 0xa0000007, 0xd0000007, 0xc8000007, 0xf0000007, - 0x80000007, 0x98000007, 0xd8000007, 0x90000007, - 0x30000007, 0x60000007, 0x38000007, 0x08000007, - 0x28000007, 0x78000007, 0x68000007, 0x40000007, - 0x20000007, 0x50000007, 0x48000007, 0x70000007, - 0x00000007, 0x18000007, 0x58000007, 0x10000007, - /* 3 */ - 0x000000e8, 0x000000d8, 0x000000a0, 0x00000088, - 0x00000098, 0x000000f8, 0x000000a8, 0x000000c8, - 0x00000080, 0x000000d0, 0x000000f0, 0x000000b8, - 0x000000b0, 0x000000c0, 0x00000090, 0x000000e0, - 0x000007e8, 0x000007d8, 0x000007a0, 0x00000788, - 0x00000798, 0x000007f8, 0x000007a8, 0x000007c8, - 0x00000780, 0x000007d0, 0x000007f0, 0x000007b8, - 0x000007b0, 0x000007c0, 0x00000790, 0x000007e0, - 0x000006e8, 0x000006d8, 0x000006a0, 0x00000688, - 0x00000698, 0x000006f8, 0x000006a8, 0x000006c8, - 0x00000680, 0x000006d0, 0x000006f0, 0x000006b8, - 0x000006b0, 0x000006c0, 0x00000690, 0x000006e0, - 0x00000068, 0x00000058, 0x00000020, 0x00000008, - 0x00000018, 0x00000078, 0x00000028, 0x00000048, - 0x00000000, 0x00000050, 0x00000070, 0x00000038, - 0x00000030, 0x00000040, 0x00000010, 0x00000060, - 0x000002e8, 0x000002d8, 0x000002a0, 0x00000288, - 0x00000298, 0x000002f8, 0x000002a8, 0x000002c8, - 0x00000280, 0x000002d0, 0x000002f0, 0x000002b8, - 0x000002b0, 0x000002c0, 0x00000290, 0x000002e0, - 0x000003e8, 0x000003d8, 0x000003a0, 0x00000388, - 0x00000398, 0x000003f8, 0x000003a8, 0x000003c8, - 0x00000380, 0x000003d0, 0x000003f0, 0x000003b8, - 0x000003b0, 0x000003c0, 0x00000390, 0x000003e0, - 0x00000568, 0x00000558, 0x00000520, 0x00000508, - 0x00000518, 0x00000578, 0x00000528, 0x00000548, - 0x00000500, 0x00000550, 0x00000570, 0x00000538, - 0x00000530, 0x00000540, 0x00000510, 0x00000560, - 0x00000268, 0x00000258, 0x00000220, 0x00000208, - 0x00000218, 0x00000278, 0x00000228, 0x00000248, - 0x00000200, 0x00000250, 0x00000270, 0x00000238, - 0x00000230, 0x00000240, 0x00000210, 0x00000260, - 0x000004e8, 0x000004d8, 0x000004a0, 0x00000488, - 0x00000498, 0x000004f8, 0x000004a8, 0x000004c8, - 0x00000480, 0x000004d0, 0x000004f0, 0x000004b8, - 0x000004b0, 0x000004c0, 0x00000490, 0x000004e0, - 0x00000168, 0x00000158, 0x00000120, 0x00000108, - 0x00000118, 0x00000178, 0x00000128, 0x00000148, - 0x00000100, 0x00000150, 0x00000170, 0x00000138, - 0x00000130, 0x00000140, 0x00000110, 0x00000160, - 0x000001e8, 0x000001d8, 0x000001a0, 0x00000188, - 0x00000198, 0x000001f8, 0x000001a8, 0x000001c8, - 0x00000180, 0x000001d0, 0x000001f0, 0x000001b8, - 0x000001b0, 0x000001c0, 0x00000190, 0x000001e0, - 0x00000768, 0x00000758, 0x00000720, 0x00000708, - 0x00000718, 0x00000778, 0x00000728, 0x00000748, - 0x00000700, 0x00000750, 0x00000770, 0x00000738, - 0x00000730, 0x00000740, 0x00000710, 0x00000760, - 0x00000368, 0x00000358, 0x00000320, 0x00000308, - 0x00000318, 0x00000378, 0x00000328, 0x00000348, - 0x00000300, 0x00000350, 0x00000370, 0x00000338, - 0x00000330, 0x00000340, 0x00000310, 0x00000360, - 0x000005e8, 0x000005d8, 0x000005a0, 0x00000588, - 0x00000598, 0x000005f8, 0x000005a8, 0x000005c8, - 0x00000580, 0x000005d0, 0x000005f0, 0x000005b8, - 0x000005b0, 0x000005c0, 0x00000590, 0x000005e0, - 0x00000468, 0x00000458, 0x00000420, 0x00000408, - 0x00000418, 0x00000478, 0x00000428, 0x00000448, - 0x00000400, 0x00000450, 0x00000470, 0x00000438, - 0x00000430, 0x00000440, 0x00000410, 0x00000460, - 0x00000668, 0x00000658, 0x00000620, 0x00000608, - 0x00000618, 0x00000678, 0x00000628, 0x00000648, - 0x00000600, 0x00000650, 0x00000670, 0x00000638, - 0x00000630, 0x00000640, 0x00000610, 0x00000660, - } -}; +const struct gost28147_param gost28147_param_test_3411 = { 0, + { + /* 0 */ + 0x00072000, + 0x00075000, + 0x00074800, + 0x00071000, + 0x00076800, + 0x00074000, + 0x00070000, + 0x00077000, + 0x00073000, + 0x00075800, + 0x00070800, + 0x00076000, + 0x00073800, + 0x00077800, + 0x00072800, + 0x00071800, + 0x0005a000, + 0x0005d000, + 0x0005c800, + 0x00059000, + 0x0005e800, + 0x0005c000, + 0x00058000, + 0x0005f000, + 0x0005b000, + 0x0005d800, + 0x00058800, + 0x0005e000, + 0x0005b800, + 0x0005f800, + 0x0005a800, + 0x00059800, + 0x00022000, + 0x00025000, + 0x00024800, + 0x00021000, + 0x00026800, + 0x00024000, + 0x00020000, + 0x00027000, + 0x00023000, + 0x00025800, + 0x00020800, + 0x00026000, + 0x00023800, + 0x00027800, + 0x00022800, + 0x00021800, + 0x00062000, + 0x00065000, + 0x00064800, + 0x00061000, + 0x00066800, + 0x00064000, + 0x00060000, + 0x00067000, + 0x00063000, + 0x00065800, + 0x00060800, + 0x00066000, + 0x00063800, + 0x00067800, + 0x00062800, + 0x00061800, + 0x00032000, + 0x00035000, + 0x00034800, + 0x00031000, + 0x00036800, + 0x00034000, + 0x00030000, + 0x00037000, + 0x00033000, + 0x00035800, + 0x00030800, + 0x00036000, + 0x00033800, + 0x00037800, + 0x00032800, + 0x00031800, + 0x0006a000, + 0x0006d000, + 0x0006c800, + 0x00069000, + 0x0006e800, + 0x0006c000, + 0x00068000, + 0x0006f000, + 0x0006b000, + 0x0006d800, + 0x00068800, + 0x0006e000, + 0x0006b800, + 0x0006f800, + 0x0006a800, + 0x00069800, + 0x0007a000, + 0x0007d000, + 0x0007c800, + 0x00079000, + 0x0007e800, + 0x0007c000, + 0x00078000, + 0x0007f000, + 0x0007b000, + 0x0007d800, + 0x00078800, + 0x0007e000, + 0x0007b800, + 0x0007f800, + 0x0007a800, + 0x00079800, + 0x00052000, + 0x00055000, + 0x00054800, + 0x00051000, + 0x00056800, + 0x00054000, + 0x00050000, + 0x00057000, + 0x00053000, + 0x00055800, + 0x00050800, + 0x00056000, + 0x00053800, + 0x00057800, + 0x00052800, + 0x00051800, + 0x00012000, + 0x00015000, + 0x00014800, + 0x00011000, + 0x00016800, + 0x00014000, + 0x00010000, + 0x00017000, + 0x00013000, + 0x00015800, + 0x00010800, + 0x00016000, + 0x00013800, + 0x00017800, + 0x00012800, + 0x00011800, + 0x0001a000, + 0x0001d000, + 0x0001c800, + 0x00019000, + 0x0001e800, + 0x0001c000, + 0x00018000, + 0x0001f000, + 0x0001b000, + 0x0001d800, + 0x00018800, + 0x0001e000, + 0x0001b800, + 0x0001f800, + 0x0001a800, + 0x00019800, + 0x00042000, + 0x00045000, + 0x00044800, + 0x00041000, + 0x00046800, + 0x00044000, + 0x00040000, + 0x00047000, + 0x00043000, + 0x00045800, + 0x00040800, + 0x00046000, + 0x00043800, + 0x00047800, + 0x00042800, + 0x00041800, + 0x0000a000, + 0x0000d000, + 0x0000c800, + 0x00009000, + 0x0000e800, + 0x0000c000, + 0x00008000, + 0x0000f000, + 0x0000b000, + 0x0000d800, + 0x00008800, + 0x0000e000, + 0x0000b800, + 0x0000f800, + 0x0000a800, + 0x00009800, + 0x00002000, + 0x00005000, + 0x00004800, + 0x00001000, + 0x00006800, + 0x00004000, + 0x00000000, + 0x00007000, + 0x00003000, + 0x00005800, + 0x00000800, + 0x00006000, + 0x00003800, + 0x00007800, + 0x00002800, + 0x00001800, + 0x0003a000, + 0x0003d000, + 0x0003c800, + 0x00039000, + 0x0003e800, + 0x0003c000, + 0x00038000, + 0x0003f000, + 0x0003b000, + 0x0003d800, + 0x00038800, + 0x0003e000, + 0x0003b800, + 0x0003f800, + 0x0003a800, + 0x00039800, + 0x0002a000, + 0x0002d000, + 0x0002c800, + 0x00029000, + 0x0002e800, + 0x0002c000, + 0x00028000, + 0x0002f000, + 0x0002b000, + 0x0002d800, + 0x00028800, + 0x0002e000, + 0x0002b800, + 0x0002f800, + 0x0002a800, + 0x00029800, + 0x0004a000, + 0x0004d000, + 0x0004c800, + 0x00049000, + 0x0004e800, + 0x0004c000, + 0x00048000, + 0x0004f000, + 0x0004b000, + 0x0004d800, + 0x00048800, + 0x0004e000, + 0x0004b800, + 0x0004f800, + 0x0004a800, + 0x00049800, + /* 1 */ + 0x03a80000, + 0x03c00000, + 0x03880000, + 0x03e80000, + 0x03d00000, + 0x03980000, + 0x03a00000, + 0x03900000, + 0x03f00000, + 0x03f80000, + 0x03e00000, + 0x03b80000, + 0x03b00000, + 0x03800000, + 0x03c80000, + 0x03d80000, + 0x06a80000, + 0x06c00000, + 0x06880000, + 0x06e80000, + 0x06d00000, + 0x06980000, + 0x06a00000, + 0x06900000, + 0x06f00000, + 0x06f80000, + 0x06e00000, + 0x06b80000, + 0x06b00000, + 0x06800000, + 0x06c80000, + 0x06d80000, + 0x05280000, + 0x05400000, + 0x05080000, + 0x05680000, + 0x05500000, + 0x05180000, + 0x05200000, + 0x05100000, + 0x05700000, + 0x05780000, + 0x05600000, + 0x05380000, + 0x05300000, + 0x05000000, + 0x05480000, + 0x05580000, + 0x00a80000, + 0x00c00000, + 0x00880000, + 0x00e80000, + 0x00d00000, + 0x00980000, + 0x00a00000, + 0x00900000, + 0x00f00000, + 0x00f80000, + 0x00e00000, + 0x00b80000, + 0x00b00000, + 0x00800000, + 0x00c80000, + 0x00d80000, + 0x00280000, + 0x00400000, + 0x00080000, + 0x00680000, + 0x00500000, + 0x00180000, + 0x00200000, + 0x00100000, + 0x00700000, + 0x00780000, + 0x00600000, + 0x00380000, + 0x00300000, + 0x00000000, + 0x00480000, + 0x00580000, + 0x04280000, + 0x04400000, + 0x04080000, + 0x04680000, + 0x04500000, + 0x04180000, + 0x04200000, + 0x04100000, + 0x04700000, + 0x04780000, + 0x04600000, + 0x04380000, + 0x04300000, + 0x04000000, + 0x04480000, + 0x04580000, + 0x04a80000, + 0x04c00000, + 0x04880000, + 0x04e80000, + 0x04d00000, + 0x04980000, + 0x04a00000, + 0x04900000, + 0x04f00000, + 0x04f80000, + 0x04e00000, + 0x04b80000, + 0x04b00000, + 0x04800000, + 0x04c80000, + 0x04d80000, + 0x07a80000, + 0x07c00000, + 0x07880000, + 0x07e80000, + 0x07d00000, + 0x07980000, + 0x07a00000, + 0x07900000, + 0x07f00000, + 0x07f80000, + 0x07e00000, + 0x07b80000, + 0x07b00000, + 0x07800000, + 0x07c80000, + 0x07d80000, + 0x07280000, + 0x07400000, + 0x07080000, + 0x07680000, + 0x07500000, + 0x07180000, + 0x07200000, + 0x07100000, + 0x07700000, + 0x07780000, + 0x07600000, + 0x07380000, + 0x07300000, + 0x07000000, + 0x07480000, + 0x07580000, + 0x02280000, + 0x02400000, + 0x02080000, + 0x02680000, + 0x02500000, + 0x02180000, + 0x02200000, + 0x02100000, + 0x02700000, + 0x02780000, + 0x02600000, + 0x02380000, + 0x02300000, + 0x02000000, + 0x02480000, + 0x02580000, + 0x03280000, + 0x03400000, + 0x03080000, + 0x03680000, + 0x03500000, + 0x03180000, + 0x03200000, + 0x03100000, + 0x03700000, + 0x03780000, + 0x03600000, + 0x03380000, + 0x03300000, + 0x03000000, + 0x03480000, + 0x03580000, + 0x06280000, + 0x06400000, + 0x06080000, + 0x06680000, + 0x06500000, + 0x06180000, + 0x06200000, + 0x06100000, + 0x06700000, + 0x06780000, + 0x06600000, + 0x06380000, + 0x06300000, + 0x06000000, + 0x06480000, + 0x06580000, + 0x05a80000, + 0x05c00000, + 0x05880000, + 0x05e80000, + 0x05d00000, + 0x05980000, + 0x05a00000, + 0x05900000, + 0x05f00000, + 0x05f80000, + 0x05e00000, + 0x05b80000, + 0x05b00000, + 0x05800000, + 0x05c80000, + 0x05d80000, + 0x01280000, + 0x01400000, + 0x01080000, + 0x01680000, + 0x01500000, + 0x01180000, + 0x01200000, + 0x01100000, + 0x01700000, + 0x01780000, + 0x01600000, + 0x01380000, + 0x01300000, + 0x01000000, + 0x01480000, + 0x01580000, + 0x02a80000, + 0x02c00000, + 0x02880000, + 0x02e80000, + 0x02d00000, + 0x02980000, + 0x02a00000, + 0x02900000, + 0x02f00000, + 0x02f80000, + 0x02e00000, + 0x02b80000, + 0x02b00000, + 0x02800000, + 0x02c80000, + 0x02d80000, + 0x01a80000, + 0x01c00000, + 0x01880000, + 0x01e80000, + 0x01d00000, + 0x01980000, + 0x01a00000, + 0x01900000, + 0x01f00000, + 0x01f80000, + 0x01e00000, + 0x01b80000, + 0x01b00000, + 0x01800000, + 0x01c80000, + 0x01d80000, + /* 2 */ + 0x30000002, + 0x60000002, + 0x38000002, + 0x08000002, + 0x28000002, + 0x78000002, + 0x68000002, + 0x40000002, + 0x20000002, + 0x50000002, + 0x48000002, + 0x70000002, + 0x00000002, + 0x18000002, + 0x58000002, + 0x10000002, + 0xb0000005, + 0xe0000005, + 0xb8000005, + 0x88000005, + 0xa8000005, + 0xf8000005, + 0xe8000005, + 0xc0000005, + 0xa0000005, + 0xd0000005, + 0xc8000005, + 0xf0000005, + 0x80000005, + 0x98000005, + 0xd8000005, + 0x90000005, + 0x30000005, + 0x60000005, + 0x38000005, + 0x08000005, + 0x28000005, + 0x78000005, + 0x68000005, + 0x40000005, + 0x20000005, + 0x50000005, + 0x48000005, + 0x70000005, + 0x00000005, + 0x18000005, + 0x58000005, + 0x10000005, + 0x30000000, + 0x60000000, + 0x38000000, + 0x08000000, + 0x28000000, + 0x78000000, + 0x68000000, + 0x40000000, + 0x20000000, + 0x50000000, + 0x48000000, + 0x70000000, + 0x00000000, + 0x18000000, + 0x58000000, + 0x10000000, + 0xb0000003, + 0xe0000003, + 0xb8000003, + 0x88000003, + 0xa8000003, + 0xf8000003, + 0xe8000003, + 0xc0000003, + 0xa0000003, + 0xd0000003, + 0xc8000003, + 0xf0000003, + 0x80000003, + 0x98000003, + 0xd8000003, + 0x90000003, + 0x30000001, + 0x60000001, + 0x38000001, + 0x08000001, + 0x28000001, + 0x78000001, + 0x68000001, + 0x40000001, + 0x20000001, + 0x50000001, + 0x48000001, + 0x70000001, + 0x00000001, + 0x18000001, + 0x58000001, + 0x10000001, + 0xb0000000, + 0xe0000000, + 0xb8000000, + 0x88000000, + 0xa8000000, + 0xf8000000, + 0xe8000000, + 0xc0000000, + 0xa0000000, + 0xd0000000, + 0xc8000000, + 0xf0000000, + 0x80000000, + 0x98000000, + 0xd8000000, + 0x90000000, + 0xb0000006, + 0xe0000006, + 0xb8000006, + 0x88000006, + 0xa8000006, + 0xf8000006, + 0xe8000006, + 0xc0000006, + 0xa0000006, + 0xd0000006, + 0xc8000006, + 0xf0000006, + 0x80000006, + 0x98000006, + 0xd8000006, + 0x90000006, + 0xb0000001, + 0xe0000001, + 0xb8000001, + 0x88000001, + 0xa8000001, + 0xf8000001, + 0xe8000001, + 0xc0000001, + 0xa0000001, + 0xd0000001, + 0xc8000001, + 0xf0000001, + 0x80000001, + 0x98000001, + 0xd8000001, + 0x90000001, + 0x30000003, + 0x60000003, + 0x38000003, + 0x08000003, + 0x28000003, + 0x78000003, + 0x68000003, + 0x40000003, + 0x20000003, + 0x50000003, + 0x48000003, + 0x70000003, + 0x00000003, + 0x18000003, + 0x58000003, + 0x10000003, + 0x30000004, + 0x60000004, + 0x38000004, + 0x08000004, + 0x28000004, + 0x78000004, + 0x68000004, + 0x40000004, + 0x20000004, + 0x50000004, + 0x48000004, + 0x70000004, + 0x00000004, + 0x18000004, + 0x58000004, + 0x10000004, + 0xb0000002, + 0xe0000002, + 0xb8000002, + 0x88000002, + 0xa8000002, + 0xf8000002, + 0xe8000002, + 0xc0000002, + 0xa0000002, + 0xd0000002, + 0xc8000002, + 0xf0000002, + 0x80000002, + 0x98000002, + 0xd8000002, + 0x90000002, + 0xb0000004, + 0xe0000004, + 0xb8000004, + 0x88000004, + 0xa8000004, + 0xf8000004, + 0xe8000004, + 0xc0000004, + 0xa0000004, + 0xd0000004, + 0xc8000004, + 0xf0000004, + 0x80000004, + 0x98000004, + 0xd8000004, + 0x90000004, + 0x30000006, + 0x60000006, + 0x38000006, + 0x08000006, + 0x28000006, + 0x78000006, + 0x68000006, + 0x40000006, + 0x20000006, + 0x50000006, + 0x48000006, + 0x70000006, + 0x00000006, + 0x18000006, + 0x58000006, + 0x10000006, + 0xb0000007, + 0xe0000007, + 0xb8000007, + 0x88000007, + 0xa8000007, + 0xf8000007, + 0xe8000007, + 0xc0000007, + 0xa0000007, + 0xd0000007, + 0xc8000007, + 0xf0000007, + 0x80000007, + 0x98000007, + 0xd8000007, + 0x90000007, + 0x30000007, + 0x60000007, + 0x38000007, + 0x08000007, + 0x28000007, + 0x78000007, + 0x68000007, + 0x40000007, + 0x20000007, + 0x50000007, + 0x48000007, + 0x70000007, + 0x00000007, + 0x18000007, + 0x58000007, + 0x10000007, + /* 3 */ + 0x000000e8, + 0x000000d8, + 0x000000a0, + 0x00000088, + 0x00000098, + 0x000000f8, + 0x000000a8, + 0x000000c8, + 0x00000080, + 0x000000d0, + 0x000000f0, + 0x000000b8, + 0x000000b0, + 0x000000c0, + 0x00000090, + 0x000000e0, + 0x000007e8, + 0x000007d8, + 0x000007a0, + 0x00000788, + 0x00000798, + 0x000007f8, + 0x000007a8, + 0x000007c8, + 0x00000780, + 0x000007d0, + 0x000007f0, + 0x000007b8, + 0x000007b0, + 0x000007c0, + 0x00000790, + 0x000007e0, + 0x000006e8, + 0x000006d8, + 0x000006a0, + 0x00000688, + 0x00000698, + 0x000006f8, + 0x000006a8, + 0x000006c8, + 0x00000680, + 0x000006d0, + 0x000006f0, + 0x000006b8, + 0x000006b0, + 0x000006c0, + 0x00000690, + 0x000006e0, + 0x00000068, + 0x00000058, + 0x00000020, + 0x00000008, + 0x00000018, + 0x00000078, + 0x00000028, + 0x00000048, + 0x00000000, + 0x00000050, + 0x00000070, + 0x00000038, + 0x00000030, + 0x00000040, + 0x00000010, + 0x00000060, + 0x000002e8, + 0x000002d8, + 0x000002a0, + 0x00000288, + 0x00000298, + 0x000002f8, + 0x000002a8, + 0x000002c8, + 0x00000280, + 0x000002d0, + 0x000002f0, + 0x000002b8, + 0x000002b0, + 0x000002c0, + 0x00000290, + 0x000002e0, + 0x000003e8, + 0x000003d8, + 0x000003a0, + 0x00000388, + 0x00000398, + 0x000003f8, + 0x000003a8, + 0x000003c8, + 0x00000380, + 0x000003d0, + 0x000003f0, + 0x000003b8, + 0x000003b0, + 0x000003c0, + 0x00000390, + 0x000003e0, + 0x00000568, + 0x00000558, + 0x00000520, + 0x00000508, + 0x00000518, + 0x00000578, + 0x00000528, + 0x00000548, + 0x00000500, + 0x00000550, + 0x00000570, + 0x00000538, + 0x00000530, + 0x00000540, + 0x00000510, + 0x00000560, + 0x00000268, + 0x00000258, + 0x00000220, + 0x00000208, + 0x00000218, + 0x00000278, + 0x00000228, + 0x00000248, + 0x00000200, + 0x00000250, + 0x00000270, + 0x00000238, + 0x00000230, + 0x00000240, + 0x00000210, + 0x00000260, + 0x000004e8, + 0x000004d8, + 0x000004a0, + 0x00000488, + 0x00000498, + 0x000004f8, + 0x000004a8, + 0x000004c8, + 0x00000480, + 0x000004d0, + 0x000004f0, + 0x000004b8, + 0x000004b0, + 0x000004c0, + 0x00000490, + 0x000004e0, + 0x00000168, + 0x00000158, + 0x00000120, + 0x00000108, + 0x00000118, + 0x00000178, + 0x00000128, + 0x00000148, + 0x00000100, + 0x00000150, + 0x00000170, + 0x00000138, + 0x00000130, + 0x00000140, + 0x00000110, + 0x00000160, + 0x000001e8, + 0x000001d8, + 0x000001a0, + 0x00000188, + 0x00000198, + 0x000001f8, + 0x000001a8, + 0x000001c8, + 0x00000180, + 0x000001d0, + 0x000001f0, + 0x000001b8, + 0x000001b0, + 0x000001c0, + 0x00000190, + 0x000001e0, + 0x00000768, + 0x00000758, + 0x00000720, + 0x00000708, + 0x00000718, + 0x00000778, + 0x00000728, + 0x00000748, + 0x00000700, + 0x00000750, + 0x00000770, + 0x00000738, + 0x00000730, + 0x00000740, + 0x00000710, + 0x00000760, + 0x00000368, + 0x00000358, + 0x00000320, + 0x00000308, + 0x00000318, + 0x00000378, + 0x00000328, + 0x00000348, + 0x00000300, + 0x00000350, + 0x00000370, + 0x00000338, + 0x00000330, + 0x00000340, + 0x00000310, + 0x00000360, + 0x000005e8, + 0x000005d8, + 0x000005a0, + 0x00000588, + 0x00000598, + 0x000005f8, + 0x000005a8, + 0x000005c8, + 0x00000580, + 0x000005d0, + 0x000005f0, + 0x000005b8, + 0x000005b0, + 0x000005c0, + 0x00000590, + 0x000005e0, + 0x00000468, + 0x00000458, + 0x00000420, + 0x00000408, + 0x00000418, + 0x00000478, + 0x00000428, + 0x00000448, + 0x00000400, + 0x00000450, + 0x00000470, + 0x00000438, + 0x00000430, + 0x00000440, + 0x00000410, + 0x00000460, + 0x00000668, + 0x00000658, + 0x00000620, + 0x00000608, + 0x00000618, + 0x00000678, + 0x00000628, + 0x00000648, + 0x00000600, + 0x00000650, + 0x00000670, + 0x00000638, + 0x00000630, + 0x00000640, + 0x00000610, + 0x00000660, + } }; const struct gost28147_param gost28147_param_CryptoPro_3411 = { 0, { - /* 0 */ - 0x0002d000, 0x0002a000, 0x0002a800, 0x0002b000, - 0x0002c000, 0x00028800, 0x00029800, 0x0002b800, - 0x0002e800, 0x0002e000, 0x0002f000, 0x00028000, - 0x0002c800, 0x00029000, 0x0002d800, 0x0002f800, - 0x0007d000, 0x0007a000, 0x0007a800, 0x0007b000, - 0x0007c000, 0x00078800, 0x00079800, 0x0007b800, - 0x0007e800, 0x0007e000, 0x0007f000, 0x00078000, - 0x0007c800, 0x00079000, 0x0007d800, 0x0007f800, - 0x00025000, 0x00022000, 0x00022800, 0x00023000, - 0x00024000, 0x00020800, 0x00021800, 0x00023800, - 0x00026800, 0x00026000, 0x00027000, 0x00020000, - 0x00024800, 0x00021000, 0x00025800, 0x00027800, - 0x00005000, 0x00002000, 0x00002800, 0x00003000, - 0x00004000, 0x00000800, 0x00001800, 0x00003800, - 0x00006800, 0x00006000, 0x00007000, 0x00000000, - 0x00004800, 0x00001000, 0x00005800, 0x00007800, - 0x00015000, 0x00012000, 0x00012800, 0x00013000, - 0x00014000, 0x00010800, 0x00011800, 0x00013800, - 0x00016800, 0x00016000, 0x00017000, 0x00010000, - 0x00014800, 0x00011000, 0x00015800, 0x00017800, - 0x0006d000, 0x0006a000, 0x0006a800, 0x0006b000, - 0x0006c000, 0x00068800, 0x00069800, 0x0006b800, - 0x0006e800, 0x0006e000, 0x0006f000, 0x00068000, - 0x0006c800, 0x00069000, 0x0006d800, 0x0006f800, - 0x0005d000, 0x0005a000, 0x0005a800, 0x0005b000, - 0x0005c000, 0x00058800, 0x00059800, 0x0005b800, - 0x0005e800, 0x0005e000, 0x0005f000, 0x00058000, - 0x0005c800, 0x00059000, 0x0005d800, 0x0005f800, - 0x0004d000, 0x0004a000, 0x0004a800, 0x0004b000, - 0x0004c000, 0x00048800, 0x00049800, 0x0004b800, - 0x0004e800, 0x0004e000, 0x0004f000, 0x00048000, - 0x0004c800, 0x00049000, 0x0004d800, 0x0004f800, - 0x0000d000, 0x0000a000, 0x0000a800, 0x0000b000, - 0x0000c000, 0x00008800, 0x00009800, 0x0000b800, - 0x0000e800, 0x0000e000, 0x0000f000, 0x00008000, - 0x0000c800, 0x00009000, 0x0000d800, 0x0000f800, - 0x0003d000, 0x0003a000, 0x0003a800, 0x0003b000, - 0x0003c000, 0x00038800, 0x00039800, 0x0003b800, - 0x0003e800, 0x0003e000, 0x0003f000, 0x00038000, - 0x0003c800, 0x00039000, 0x0003d800, 0x0003f800, - 0x00035000, 0x00032000, 0x00032800, 0x00033000, - 0x00034000, 0x00030800, 0x00031800, 0x00033800, - 0x00036800, 0x00036000, 0x00037000, 0x00030000, - 0x00034800, 0x00031000, 0x00035800, 0x00037800, - 0x0001d000, 0x0001a000, 0x0001a800, 0x0001b000, - 0x0001c000, 0x00018800, 0x00019800, 0x0001b800, - 0x0001e800, 0x0001e000, 0x0001f000, 0x00018000, - 0x0001c800, 0x00019000, 0x0001d800, 0x0001f800, - 0x00065000, 0x00062000, 0x00062800, 0x00063000, - 0x00064000, 0x00060800, 0x00061800, 0x00063800, - 0x00066800, 0x00066000, 0x00067000, 0x00060000, - 0x00064800, 0x00061000, 0x00065800, 0x00067800, - 0x00075000, 0x00072000, 0x00072800, 0x00073000, - 0x00074000, 0x00070800, 0x00071800, 0x00073800, - 0x00076800, 0x00076000, 0x00077000, 0x00070000, - 0x00074800, 0x00071000, 0x00075800, 0x00077800, - 0x00055000, 0x00052000, 0x00052800, 0x00053000, - 0x00054000, 0x00050800, 0x00051800, 0x00053800, - 0x00056800, 0x00056000, 0x00057000, 0x00050000, - 0x00054800, 0x00051000, 0x00055800, 0x00057800, - 0x00045000, 0x00042000, 0x00042800, 0x00043000, - 0x00044000, 0x00040800, 0x00041800, 0x00043800, - 0x00046800, 0x00046000, 0x00047000, 0x00040000, - 0x00044800, 0x00041000, 0x00045800, 0x00047800, - /* 1 */ - 0x02380000, 0x02780000, 0x02600000, 0x02700000, - 0x02480000, 0x02200000, 0x02080000, 0x02000000, - 0x02180000, 0x02580000, 0x02280000, 0x02100000, - 0x02300000, 0x02500000, 0x02400000, 0x02680000, - 0x05380000, 0x05780000, 0x05600000, 0x05700000, - 0x05480000, 0x05200000, 0x05080000, 0x05000000, - 0x05180000, 0x05580000, 0x05280000, 0x05100000, - 0x05300000, 0x05500000, 0x05400000, 0x05680000, - 0x03b80000, 0x03f80000, 0x03e00000, 0x03f00000, - 0x03c80000, 0x03a00000, 0x03880000, 0x03800000, - 0x03980000, 0x03d80000, 0x03a80000, 0x03900000, - 0x03b00000, 0x03d00000, 0x03c00000, 0x03e80000, - 0x06380000, 0x06780000, 0x06600000, 0x06700000, - 0x06480000, 0x06200000, 0x06080000, 0x06000000, - 0x06180000, 0x06580000, 0x06280000, 0x06100000, - 0x06300000, 0x06500000, 0x06400000, 0x06680000, - 0x00380000, 0x00780000, 0x00600000, 0x00700000, - 0x00480000, 0x00200000, 0x00080000, 0x00000000, - 0x00180000, 0x00580000, 0x00280000, 0x00100000, - 0x00300000, 0x00500000, 0x00400000, 0x00680000, - 0x07b80000, 0x07f80000, 0x07e00000, 0x07f00000, - 0x07c80000, 0x07a00000, 0x07880000, 0x07800000, - 0x07980000, 0x07d80000, 0x07a80000, 0x07900000, - 0x07b00000, 0x07d00000, 0x07c00000, 0x07e80000, - 0x01380000, 0x01780000, 0x01600000, 0x01700000, - 0x01480000, 0x01200000, 0x01080000, 0x01000000, - 0x01180000, 0x01580000, 0x01280000, 0x01100000, - 0x01300000, 0x01500000, 0x01400000, 0x01680000, - 0x04380000, 0x04780000, 0x04600000, 0x04700000, - 0x04480000, 0x04200000, 0x04080000, 0x04000000, - 0x04180000, 0x04580000, 0x04280000, 0x04100000, - 0x04300000, 0x04500000, 0x04400000, 0x04680000, - 0x07380000, 0x07780000, 0x07600000, 0x07700000, - 0x07480000, 0x07200000, 0x07080000, 0x07000000, - 0x07180000, 0x07580000, 0x07280000, 0x07100000, - 0x07300000, 0x07500000, 0x07400000, 0x07680000, - 0x00b80000, 0x00f80000, 0x00e00000, 0x00f00000, - 0x00c80000, 0x00a00000, 0x00880000, 0x00800000, - 0x00980000, 0x00d80000, 0x00a80000, 0x00900000, - 0x00b00000, 0x00d00000, 0x00c00000, 0x00e80000, - 0x03380000, 0x03780000, 0x03600000, 0x03700000, - 0x03480000, 0x03200000, 0x03080000, 0x03000000, - 0x03180000, 0x03580000, 0x03280000, 0x03100000, - 0x03300000, 0x03500000, 0x03400000, 0x03680000, - 0x02b80000, 0x02f80000, 0x02e00000, 0x02f00000, - 0x02c80000, 0x02a00000, 0x02880000, 0x02800000, - 0x02980000, 0x02d80000, 0x02a80000, 0x02900000, - 0x02b00000, 0x02d00000, 0x02c00000, 0x02e80000, - 0x06b80000, 0x06f80000, 0x06e00000, 0x06f00000, - 0x06c80000, 0x06a00000, 0x06880000, 0x06800000, - 0x06980000, 0x06d80000, 0x06a80000, 0x06900000, - 0x06b00000, 0x06d00000, 0x06c00000, 0x06e80000, - 0x05b80000, 0x05f80000, 0x05e00000, 0x05f00000, - 0x05c80000, 0x05a00000, 0x05880000, 0x05800000, - 0x05980000, 0x05d80000, 0x05a80000, 0x05900000, - 0x05b00000, 0x05d00000, 0x05c00000, 0x05e80000, - 0x04b80000, 0x04f80000, 0x04e00000, 0x04f00000, - 0x04c80000, 0x04a00000, 0x04880000, 0x04800000, - 0x04980000, 0x04d80000, 0x04a80000, 0x04900000, - 0x04b00000, 0x04d00000, 0x04c00000, 0x04e80000, - 0x01b80000, 0x01f80000, 0x01e00000, 0x01f00000, - 0x01c80000, 0x01a00000, 0x01880000, 0x01800000, - 0x01980000, 0x01d80000, 0x01a80000, 0x01900000, - 0x01b00000, 0x01d00000, 0x01c00000, 0x01e80000, - /* 2 */ - 0xb8000003, 0xb0000003, 0xa0000003, 0xd8000003, - 0xc8000003, 0xe0000003, 0x90000003, 0xd0000003, - 0x88000003, 0xc0000003, 0x80000003, 0xf0000003, - 0xf8000003, 0xe8000003, 0x98000003, 0xa8000003, - 0x38000003, 0x30000003, 0x20000003, 0x58000003, - 0x48000003, 0x60000003, 0x10000003, 0x50000003, - 0x08000003, 0x40000003, 0x00000003, 0x70000003, - 0x78000003, 0x68000003, 0x18000003, 0x28000003, - 0x38000001, 0x30000001, 0x20000001, 0x58000001, - 0x48000001, 0x60000001, 0x10000001, 0x50000001, - 0x08000001, 0x40000001, 0x00000001, 0x70000001, - 0x78000001, 0x68000001, 0x18000001, 0x28000001, - 0x38000002, 0x30000002, 0x20000002, 0x58000002, - 0x48000002, 0x60000002, 0x10000002, 0x50000002, - 0x08000002, 0x40000002, 0x00000002, 0x70000002, - 0x78000002, 0x68000002, 0x18000002, 0x28000002, - 0xb8000006, 0xb0000006, 0xa0000006, 0xd8000006, - 0xc8000006, 0xe0000006, 0x90000006, 0xd0000006, - 0x88000006, 0xc0000006, 0x80000006, 0xf0000006, - 0xf8000006, 0xe8000006, 0x98000006, 0xa8000006, - 0xb8000004, 0xb0000004, 0xa0000004, 0xd8000004, - 0xc8000004, 0xe0000004, 0x90000004, 0xd0000004, - 0x88000004, 0xc0000004, 0x80000004, 0xf0000004, - 0xf8000004, 0xe8000004, 0x98000004, 0xa8000004, - 0xb8000007, 0xb0000007, 0xa0000007, 0xd8000007, - 0xc8000007, 0xe0000007, 0x90000007, 0xd0000007, - 0x88000007, 0xc0000007, 0x80000007, 0xf0000007, - 0xf8000007, 0xe8000007, 0x98000007, 0xa8000007, - 0x38000000, 0x30000000, 0x20000000, 0x58000000, - 0x48000000, 0x60000000, 0x10000000, 0x50000000, - 0x08000000, 0x40000000, 0x00000000, 0x70000000, - 0x78000000, 0x68000000, 0x18000000, 0x28000000, - 0x38000005, 0x30000005, 0x20000005, 0x58000005, - 0x48000005, 0x60000005, 0x10000005, 0x50000005, - 0x08000005, 0x40000005, 0x00000005, 0x70000005, - 0x78000005, 0x68000005, 0x18000005, 0x28000005, - 0xb8000000, 0xb0000000, 0xa0000000, 0xd8000000, - 0xc8000000, 0xe0000000, 0x90000000, 0xd0000000, - 0x88000000, 0xc0000000, 0x80000000, 0xf0000000, - 0xf8000000, 0xe8000000, 0x98000000, 0xa8000000, - 0xb8000002, 0xb0000002, 0xa0000002, 0xd8000002, - 0xc8000002, 0xe0000002, 0x90000002, 0xd0000002, - 0x88000002, 0xc0000002, 0x80000002, 0xf0000002, - 0xf8000002, 0xe8000002, 0x98000002, 0xa8000002, - 0xb8000005, 0xb0000005, 0xa0000005, 0xd8000005, - 0xc8000005, 0xe0000005, 0x90000005, 0xd0000005, - 0x88000005, 0xc0000005, 0x80000005, 0xf0000005, - 0xf8000005, 0xe8000005, 0x98000005, 0xa8000005, - 0x38000004, 0x30000004, 0x20000004, 0x58000004, - 0x48000004, 0x60000004, 0x10000004, 0x50000004, - 0x08000004, 0x40000004, 0x00000004, 0x70000004, - 0x78000004, 0x68000004, 0x18000004, 0x28000004, - 0x38000007, 0x30000007, 0x20000007, 0x58000007, - 0x48000007, 0x60000007, 0x10000007, 0x50000007, - 0x08000007, 0x40000007, 0x00000007, 0x70000007, - 0x78000007, 0x68000007, 0x18000007, 0x28000007, - 0x38000006, 0x30000006, 0x20000006, 0x58000006, - 0x48000006, 0x60000006, 0x10000006, 0x50000006, - 0x08000006, 0x40000006, 0x00000006, 0x70000006, - 0x78000006, 0x68000006, 0x18000006, 0x28000006, - 0xb8000001, 0xb0000001, 0xa0000001, 0xd8000001, - 0xc8000001, 0xe0000001, 0x90000001, 0xd0000001, - 0x88000001, 0xc0000001, 0x80000001, 0xf0000001, - 0xf8000001, 0xe8000001, 0x98000001, 0xa8000001, - /* 3 */ - 0x000000e8, 0x000000f0, 0x000000a0, 0x00000088, - 0x000000b8, 0x00000080, 0x000000a8, 0x000000d0, - 0x00000098, 0x000000e0, 0x000000c0, 0x000000f8, - 0x000000b0, 0x00000090, 0x000000c8, 0x000000d8, - 0x000001e8, 0x000001f0, 0x000001a0, 0x00000188, - 0x000001b8, 0x00000180, 0x000001a8, 0x000001d0, - 0x00000198, 0x000001e0, 0x000001c0, 0x000001f8, - 0x000001b0, 0x00000190, 0x000001c8, 0x000001d8, - 0x00000568, 0x00000570, 0x00000520, 0x00000508, - 0x00000538, 0x00000500, 0x00000528, 0x00000550, - 0x00000518, 0x00000560, 0x00000540, 0x00000578, - 0x00000530, 0x00000510, 0x00000548, 0x00000558, - 0x000004e8, 0x000004f0, 0x000004a0, 0x00000488, - 0x000004b8, 0x00000480, 0x000004a8, 0x000004d0, - 0x00000498, 0x000004e0, 0x000004c0, 0x000004f8, - 0x000004b0, 0x00000490, 0x000004c8, 0x000004d8, - 0x000002e8, 0x000002f0, 0x000002a0, 0x00000288, - 0x000002b8, 0x00000280, 0x000002a8, 0x000002d0, - 0x00000298, 0x000002e0, 0x000002c0, 0x000002f8, - 0x000002b0, 0x00000290, 0x000002c8, 0x000002d8, - 0x000005e8, 0x000005f0, 0x000005a0, 0x00000588, - 0x000005b8, 0x00000580, 0x000005a8, 0x000005d0, - 0x00000598, 0x000005e0, 0x000005c0, 0x000005f8, - 0x000005b0, 0x00000590, 0x000005c8, 0x000005d8, - 0x00000268, 0x00000270, 0x00000220, 0x00000208, - 0x00000238, 0x00000200, 0x00000228, 0x00000250, - 0x00000218, 0x00000260, 0x00000240, 0x00000278, - 0x00000230, 0x00000210, 0x00000248, 0x00000258, - 0x000007e8, 0x000007f0, 0x000007a0, 0x00000788, - 0x000007b8, 0x00000780, 0x000007a8, 0x000007d0, - 0x00000798, 0x000007e0, 0x000007c0, 0x000007f8, - 0x000007b0, 0x00000790, 0x000007c8, 0x000007d8, - 0x00000468, 0x00000470, 0x00000420, 0x00000408, - 0x00000438, 0x00000400, 0x00000428, 0x00000450, - 0x00000418, 0x00000460, 0x00000440, 0x00000478, - 0x00000430, 0x00000410, 0x00000448, 0x00000458, - 0x00000368, 0x00000370, 0x00000320, 0x00000308, - 0x00000338, 0x00000300, 0x00000328, 0x00000350, - 0x00000318, 0x00000360, 0x00000340, 0x00000378, - 0x00000330, 0x00000310, 0x00000348, 0x00000358, - 0x000003e8, 0x000003f0, 0x000003a0, 0x00000388, - 0x000003b8, 0x00000380, 0x000003a8, 0x000003d0, - 0x00000398, 0x000003e0, 0x000003c0, 0x000003f8, - 0x000003b0, 0x00000390, 0x000003c8, 0x000003d8, - 0x00000768, 0x00000770, 0x00000720, 0x00000708, - 0x00000738, 0x00000700, 0x00000728, 0x00000750, - 0x00000718, 0x00000760, 0x00000740, 0x00000778, - 0x00000730, 0x00000710, 0x00000748, 0x00000758, - 0x000006e8, 0x000006f0, 0x000006a0, 0x00000688, - 0x000006b8, 0x00000680, 0x000006a8, 0x000006d0, - 0x00000698, 0x000006e0, 0x000006c0, 0x000006f8, - 0x000006b0, 0x00000690, 0x000006c8, 0x000006d8, - 0x00000068, 0x00000070, 0x00000020, 0x00000008, - 0x00000038, 0x00000000, 0x00000028, 0x00000050, - 0x00000018, 0x00000060, 0x00000040, 0x00000078, - 0x00000030, 0x00000010, 0x00000048, 0x00000058, - 0x00000168, 0x00000170, 0x00000120, 0x00000108, - 0x00000138, 0x00000100, 0x00000128, 0x00000150, - 0x00000118, 0x00000160, 0x00000140, 0x00000178, - 0x00000130, 0x00000110, 0x00000148, 0x00000158, - 0x00000668, 0x00000670, 0x00000620, 0x00000608, - 0x00000638, 0x00000600, 0x00000628, 0x00000650, - 0x00000618, 0x00000660, 0x00000640, 0x00000678, - 0x00000630, 0x00000610, 0x00000648, 0x00000658, - } + /* 0 */ + 0x0002d000, + 0x0002a000, + 0x0002a800, + 0x0002b000, + 0x0002c000, + 0x00028800, + 0x00029800, + 0x0002b800, + 0x0002e800, + 0x0002e000, + 0x0002f000, + 0x00028000, + 0x0002c800, + 0x00029000, + 0x0002d800, + 0x0002f800, + 0x0007d000, + 0x0007a000, + 0x0007a800, + 0x0007b000, + 0x0007c000, + 0x00078800, + 0x00079800, + 0x0007b800, + 0x0007e800, + 0x0007e000, + 0x0007f000, + 0x00078000, + 0x0007c800, + 0x00079000, + 0x0007d800, + 0x0007f800, + 0x00025000, + 0x00022000, + 0x00022800, + 0x00023000, + 0x00024000, + 0x00020800, + 0x00021800, + 0x00023800, + 0x00026800, + 0x00026000, + 0x00027000, + 0x00020000, + 0x00024800, + 0x00021000, + 0x00025800, + 0x00027800, + 0x00005000, + 0x00002000, + 0x00002800, + 0x00003000, + 0x00004000, + 0x00000800, + 0x00001800, + 0x00003800, + 0x00006800, + 0x00006000, + 0x00007000, + 0x00000000, + 0x00004800, + 0x00001000, + 0x00005800, + 0x00007800, + 0x00015000, + 0x00012000, + 0x00012800, + 0x00013000, + 0x00014000, + 0x00010800, + 0x00011800, + 0x00013800, + 0x00016800, + 0x00016000, + 0x00017000, + 0x00010000, + 0x00014800, + 0x00011000, + 0x00015800, + 0x00017800, + 0x0006d000, + 0x0006a000, + 0x0006a800, + 0x0006b000, + 0x0006c000, + 0x00068800, + 0x00069800, + 0x0006b800, + 0x0006e800, + 0x0006e000, + 0x0006f000, + 0x00068000, + 0x0006c800, + 0x00069000, + 0x0006d800, + 0x0006f800, + 0x0005d000, + 0x0005a000, + 0x0005a800, + 0x0005b000, + 0x0005c000, + 0x00058800, + 0x00059800, + 0x0005b800, + 0x0005e800, + 0x0005e000, + 0x0005f000, + 0x00058000, + 0x0005c800, + 0x00059000, + 0x0005d800, + 0x0005f800, + 0x0004d000, + 0x0004a000, + 0x0004a800, + 0x0004b000, + 0x0004c000, + 0x00048800, + 0x00049800, + 0x0004b800, + 0x0004e800, + 0x0004e000, + 0x0004f000, + 0x00048000, + 0x0004c800, + 0x00049000, + 0x0004d800, + 0x0004f800, + 0x0000d000, + 0x0000a000, + 0x0000a800, + 0x0000b000, + 0x0000c000, + 0x00008800, + 0x00009800, + 0x0000b800, + 0x0000e800, + 0x0000e000, + 0x0000f000, + 0x00008000, + 0x0000c800, + 0x00009000, + 0x0000d800, + 0x0000f800, + 0x0003d000, + 0x0003a000, + 0x0003a800, + 0x0003b000, + 0x0003c000, + 0x00038800, + 0x00039800, + 0x0003b800, + 0x0003e800, + 0x0003e000, + 0x0003f000, + 0x00038000, + 0x0003c800, + 0x00039000, + 0x0003d800, + 0x0003f800, + 0x00035000, + 0x00032000, + 0x00032800, + 0x00033000, + 0x00034000, + 0x00030800, + 0x00031800, + 0x00033800, + 0x00036800, + 0x00036000, + 0x00037000, + 0x00030000, + 0x00034800, + 0x00031000, + 0x00035800, + 0x00037800, + 0x0001d000, + 0x0001a000, + 0x0001a800, + 0x0001b000, + 0x0001c000, + 0x00018800, + 0x00019800, + 0x0001b800, + 0x0001e800, + 0x0001e000, + 0x0001f000, + 0x00018000, + 0x0001c800, + 0x00019000, + 0x0001d800, + 0x0001f800, + 0x00065000, + 0x00062000, + 0x00062800, + 0x00063000, + 0x00064000, + 0x00060800, + 0x00061800, + 0x00063800, + 0x00066800, + 0x00066000, + 0x00067000, + 0x00060000, + 0x00064800, + 0x00061000, + 0x00065800, + 0x00067800, + 0x00075000, + 0x00072000, + 0x00072800, + 0x00073000, + 0x00074000, + 0x00070800, + 0x00071800, + 0x00073800, + 0x00076800, + 0x00076000, + 0x00077000, + 0x00070000, + 0x00074800, + 0x00071000, + 0x00075800, + 0x00077800, + 0x00055000, + 0x00052000, + 0x00052800, + 0x00053000, + 0x00054000, + 0x00050800, + 0x00051800, + 0x00053800, + 0x00056800, + 0x00056000, + 0x00057000, + 0x00050000, + 0x00054800, + 0x00051000, + 0x00055800, + 0x00057800, + 0x00045000, + 0x00042000, + 0x00042800, + 0x00043000, + 0x00044000, + 0x00040800, + 0x00041800, + 0x00043800, + 0x00046800, + 0x00046000, + 0x00047000, + 0x00040000, + 0x00044800, + 0x00041000, + 0x00045800, + 0x00047800, + /* 1 */ + 0x02380000, + 0x02780000, + 0x02600000, + 0x02700000, + 0x02480000, + 0x02200000, + 0x02080000, + 0x02000000, + 0x02180000, + 0x02580000, + 0x02280000, + 0x02100000, + 0x02300000, + 0x02500000, + 0x02400000, + 0x02680000, + 0x05380000, + 0x05780000, + 0x05600000, + 0x05700000, + 0x05480000, + 0x05200000, + 0x05080000, + 0x05000000, + 0x05180000, + 0x05580000, + 0x05280000, + 0x05100000, + 0x05300000, + 0x05500000, + 0x05400000, + 0x05680000, + 0x03b80000, + 0x03f80000, + 0x03e00000, + 0x03f00000, + 0x03c80000, + 0x03a00000, + 0x03880000, + 0x03800000, + 0x03980000, + 0x03d80000, + 0x03a80000, + 0x03900000, + 0x03b00000, + 0x03d00000, + 0x03c00000, + 0x03e80000, + 0x06380000, + 0x06780000, + 0x06600000, + 0x06700000, + 0x06480000, + 0x06200000, + 0x06080000, + 0x06000000, + 0x06180000, + 0x06580000, + 0x06280000, + 0x06100000, + 0x06300000, + 0x06500000, + 0x06400000, + 0x06680000, + 0x00380000, + 0x00780000, + 0x00600000, + 0x00700000, + 0x00480000, + 0x00200000, + 0x00080000, + 0x00000000, + 0x00180000, + 0x00580000, + 0x00280000, + 0x00100000, + 0x00300000, + 0x00500000, + 0x00400000, + 0x00680000, + 0x07b80000, + 0x07f80000, + 0x07e00000, + 0x07f00000, + 0x07c80000, + 0x07a00000, + 0x07880000, + 0x07800000, + 0x07980000, + 0x07d80000, + 0x07a80000, + 0x07900000, + 0x07b00000, + 0x07d00000, + 0x07c00000, + 0x07e80000, + 0x01380000, + 0x01780000, + 0x01600000, + 0x01700000, + 0x01480000, + 0x01200000, + 0x01080000, + 0x01000000, + 0x01180000, + 0x01580000, + 0x01280000, + 0x01100000, + 0x01300000, + 0x01500000, + 0x01400000, + 0x01680000, + 0x04380000, + 0x04780000, + 0x04600000, + 0x04700000, + 0x04480000, + 0x04200000, + 0x04080000, + 0x04000000, + 0x04180000, + 0x04580000, + 0x04280000, + 0x04100000, + 0x04300000, + 0x04500000, + 0x04400000, + 0x04680000, + 0x07380000, + 0x07780000, + 0x07600000, + 0x07700000, + 0x07480000, + 0x07200000, + 0x07080000, + 0x07000000, + 0x07180000, + 0x07580000, + 0x07280000, + 0x07100000, + 0x07300000, + 0x07500000, + 0x07400000, + 0x07680000, + 0x00b80000, + 0x00f80000, + 0x00e00000, + 0x00f00000, + 0x00c80000, + 0x00a00000, + 0x00880000, + 0x00800000, + 0x00980000, + 0x00d80000, + 0x00a80000, + 0x00900000, + 0x00b00000, + 0x00d00000, + 0x00c00000, + 0x00e80000, + 0x03380000, + 0x03780000, + 0x03600000, + 0x03700000, + 0x03480000, + 0x03200000, + 0x03080000, + 0x03000000, + 0x03180000, + 0x03580000, + 0x03280000, + 0x03100000, + 0x03300000, + 0x03500000, + 0x03400000, + 0x03680000, + 0x02b80000, + 0x02f80000, + 0x02e00000, + 0x02f00000, + 0x02c80000, + 0x02a00000, + 0x02880000, + 0x02800000, + 0x02980000, + 0x02d80000, + 0x02a80000, + 0x02900000, + 0x02b00000, + 0x02d00000, + 0x02c00000, + 0x02e80000, + 0x06b80000, + 0x06f80000, + 0x06e00000, + 0x06f00000, + 0x06c80000, + 0x06a00000, + 0x06880000, + 0x06800000, + 0x06980000, + 0x06d80000, + 0x06a80000, + 0x06900000, + 0x06b00000, + 0x06d00000, + 0x06c00000, + 0x06e80000, + 0x05b80000, + 0x05f80000, + 0x05e00000, + 0x05f00000, + 0x05c80000, + 0x05a00000, + 0x05880000, + 0x05800000, + 0x05980000, + 0x05d80000, + 0x05a80000, + 0x05900000, + 0x05b00000, + 0x05d00000, + 0x05c00000, + 0x05e80000, + 0x04b80000, + 0x04f80000, + 0x04e00000, + 0x04f00000, + 0x04c80000, + 0x04a00000, + 0x04880000, + 0x04800000, + 0x04980000, + 0x04d80000, + 0x04a80000, + 0x04900000, + 0x04b00000, + 0x04d00000, + 0x04c00000, + 0x04e80000, + 0x01b80000, + 0x01f80000, + 0x01e00000, + 0x01f00000, + 0x01c80000, + 0x01a00000, + 0x01880000, + 0x01800000, + 0x01980000, + 0x01d80000, + 0x01a80000, + 0x01900000, + 0x01b00000, + 0x01d00000, + 0x01c00000, + 0x01e80000, + /* 2 */ + 0xb8000003, + 0xb0000003, + 0xa0000003, + 0xd8000003, + 0xc8000003, + 0xe0000003, + 0x90000003, + 0xd0000003, + 0x88000003, + 0xc0000003, + 0x80000003, + 0xf0000003, + 0xf8000003, + 0xe8000003, + 0x98000003, + 0xa8000003, + 0x38000003, + 0x30000003, + 0x20000003, + 0x58000003, + 0x48000003, + 0x60000003, + 0x10000003, + 0x50000003, + 0x08000003, + 0x40000003, + 0x00000003, + 0x70000003, + 0x78000003, + 0x68000003, + 0x18000003, + 0x28000003, + 0x38000001, + 0x30000001, + 0x20000001, + 0x58000001, + 0x48000001, + 0x60000001, + 0x10000001, + 0x50000001, + 0x08000001, + 0x40000001, + 0x00000001, + 0x70000001, + 0x78000001, + 0x68000001, + 0x18000001, + 0x28000001, + 0x38000002, + 0x30000002, + 0x20000002, + 0x58000002, + 0x48000002, + 0x60000002, + 0x10000002, + 0x50000002, + 0x08000002, + 0x40000002, + 0x00000002, + 0x70000002, + 0x78000002, + 0x68000002, + 0x18000002, + 0x28000002, + 0xb8000006, + 0xb0000006, + 0xa0000006, + 0xd8000006, + 0xc8000006, + 0xe0000006, + 0x90000006, + 0xd0000006, + 0x88000006, + 0xc0000006, + 0x80000006, + 0xf0000006, + 0xf8000006, + 0xe8000006, + 0x98000006, + 0xa8000006, + 0xb8000004, + 0xb0000004, + 0xa0000004, + 0xd8000004, + 0xc8000004, + 0xe0000004, + 0x90000004, + 0xd0000004, + 0x88000004, + 0xc0000004, + 0x80000004, + 0xf0000004, + 0xf8000004, + 0xe8000004, + 0x98000004, + 0xa8000004, + 0xb8000007, + 0xb0000007, + 0xa0000007, + 0xd8000007, + 0xc8000007, + 0xe0000007, + 0x90000007, + 0xd0000007, + 0x88000007, + 0xc0000007, + 0x80000007, + 0xf0000007, + 0xf8000007, + 0xe8000007, + 0x98000007, + 0xa8000007, + 0x38000000, + 0x30000000, + 0x20000000, + 0x58000000, + 0x48000000, + 0x60000000, + 0x10000000, + 0x50000000, + 0x08000000, + 0x40000000, + 0x00000000, + 0x70000000, + 0x78000000, + 0x68000000, + 0x18000000, + 0x28000000, + 0x38000005, + 0x30000005, + 0x20000005, + 0x58000005, + 0x48000005, + 0x60000005, + 0x10000005, + 0x50000005, + 0x08000005, + 0x40000005, + 0x00000005, + 0x70000005, + 0x78000005, + 0x68000005, + 0x18000005, + 0x28000005, + 0xb8000000, + 0xb0000000, + 0xa0000000, + 0xd8000000, + 0xc8000000, + 0xe0000000, + 0x90000000, + 0xd0000000, + 0x88000000, + 0xc0000000, + 0x80000000, + 0xf0000000, + 0xf8000000, + 0xe8000000, + 0x98000000, + 0xa8000000, + 0xb8000002, + 0xb0000002, + 0xa0000002, + 0xd8000002, + 0xc8000002, + 0xe0000002, + 0x90000002, + 0xd0000002, + 0x88000002, + 0xc0000002, + 0x80000002, + 0xf0000002, + 0xf8000002, + 0xe8000002, + 0x98000002, + 0xa8000002, + 0xb8000005, + 0xb0000005, + 0xa0000005, + 0xd8000005, + 0xc8000005, + 0xe0000005, + 0x90000005, + 0xd0000005, + 0x88000005, + 0xc0000005, + 0x80000005, + 0xf0000005, + 0xf8000005, + 0xe8000005, + 0x98000005, + 0xa8000005, + 0x38000004, + 0x30000004, + 0x20000004, + 0x58000004, + 0x48000004, + 0x60000004, + 0x10000004, + 0x50000004, + 0x08000004, + 0x40000004, + 0x00000004, + 0x70000004, + 0x78000004, + 0x68000004, + 0x18000004, + 0x28000004, + 0x38000007, + 0x30000007, + 0x20000007, + 0x58000007, + 0x48000007, + 0x60000007, + 0x10000007, + 0x50000007, + 0x08000007, + 0x40000007, + 0x00000007, + 0x70000007, + 0x78000007, + 0x68000007, + 0x18000007, + 0x28000007, + 0x38000006, + 0x30000006, + 0x20000006, + 0x58000006, + 0x48000006, + 0x60000006, + 0x10000006, + 0x50000006, + 0x08000006, + 0x40000006, + 0x00000006, + 0x70000006, + 0x78000006, + 0x68000006, + 0x18000006, + 0x28000006, + 0xb8000001, + 0xb0000001, + 0xa0000001, + 0xd8000001, + 0xc8000001, + 0xe0000001, + 0x90000001, + 0xd0000001, + 0x88000001, + 0xc0000001, + 0x80000001, + 0xf0000001, + 0xf8000001, + 0xe8000001, + 0x98000001, + 0xa8000001, + /* 3 */ + 0x000000e8, + 0x000000f0, + 0x000000a0, + 0x00000088, + 0x000000b8, + 0x00000080, + 0x000000a8, + 0x000000d0, + 0x00000098, + 0x000000e0, + 0x000000c0, + 0x000000f8, + 0x000000b0, + 0x00000090, + 0x000000c8, + 0x000000d8, + 0x000001e8, + 0x000001f0, + 0x000001a0, + 0x00000188, + 0x000001b8, + 0x00000180, + 0x000001a8, + 0x000001d0, + 0x00000198, + 0x000001e0, + 0x000001c0, + 0x000001f8, + 0x000001b0, + 0x00000190, + 0x000001c8, + 0x000001d8, + 0x00000568, + 0x00000570, + 0x00000520, + 0x00000508, + 0x00000538, + 0x00000500, + 0x00000528, + 0x00000550, + 0x00000518, + 0x00000560, + 0x00000540, + 0x00000578, + 0x00000530, + 0x00000510, + 0x00000548, + 0x00000558, + 0x000004e8, + 0x000004f0, + 0x000004a0, + 0x00000488, + 0x000004b8, + 0x00000480, + 0x000004a8, + 0x000004d0, + 0x00000498, + 0x000004e0, + 0x000004c0, + 0x000004f8, + 0x000004b0, + 0x00000490, + 0x000004c8, + 0x000004d8, + 0x000002e8, + 0x000002f0, + 0x000002a0, + 0x00000288, + 0x000002b8, + 0x00000280, + 0x000002a8, + 0x000002d0, + 0x00000298, + 0x000002e0, + 0x000002c0, + 0x000002f8, + 0x000002b0, + 0x00000290, + 0x000002c8, + 0x000002d8, + 0x000005e8, + 0x000005f0, + 0x000005a0, + 0x00000588, + 0x000005b8, + 0x00000580, + 0x000005a8, + 0x000005d0, + 0x00000598, + 0x000005e0, + 0x000005c0, + 0x000005f8, + 0x000005b0, + 0x00000590, + 0x000005c8, + 0x000005d8, + 0x00000268, + 0x00000270, + 0x00000220, + 0x00000208, + 0x00000238, + 0x00000200, + 0x00000228, + 0x00000250, + 0x00000218, + 0x00000260, + 0x00000240, + 0x00000278, + 0x00000230, + 0x00000210, + 0x00000248, + 0x00000258, + 0x000007e8, + 0x000007f0, + 0x000007a0, + 0x00000788, + 0x000007b8, + 0x00000780, + 0x000007a8, + 0x000007d0, + 0x00000798, + 0x000007e0, + 0x000007c0, + 0x000007f8, + 0x000007b0, + 0x00000790, + 0x000007c8, + 0x000007d8, + 0x00000468, + 0x00000470, + 0x00000420, + 0x00000408, + 0x00000438, + 0x00000400, + 0x00000428, + 0x00000450, + 0x00000418, + 0x00000460, + 0x00000440, + 0x00000478, + 0x00000430, + 0x00000410, + 0x00000448, + 0x00000458, + 0x00000368, + 0x00000370, + 0x00000320, + 0x00000308, + 0x00000338, + 0x00000300, + 0x00000328, + 0x00000350, + 0x00000318, + 0x00000360, + 0x00000340, + 0x00000378, + 0x00000330, + 0x00000310, + 0x00000348, + 0x00000358, + 0x000003e8, + 0x000003f0, + 0x000003a0, + 0x00000388, + 0x000003b8, + 0x00000380, + 0x000003a8, + 0x000003d0, + 0x00000398, + 0x000003e0, + 0x000003c0, + 0x000003f8, + 0x000003b0, + 0x00000390, + 0x000003c8, + 0x000003d8, + 0x00000768, + 0x00000770, + 0x00000720, + 0x00000708, + 0x00000738, + 0x00000700, + 0x00000728, + 0x00000750, + 0x00000718, + 0x00000760, + 0x00000740, + 0x00000778, + 0x00000730, + 0x00000710, + 0x00000748, + 0x00000758, + 0x000006e8, + 0x000006f0, + 0x000006a0, + 0x00000688, + 0x000006b8, + 0x00000680, + 0x000006a8, + 0x000006d0, + 0x00000698, + 0x000006e0, + 0x000006c0, + 0x000006f8, + 0x000006b0, + 0x00000690, + 0x000006c8, + 0x000006d8, + 0x00000068, + 0x00000070, + 0x00000020, + 0x00000008, + 0x00000038, + 0x00000000, + 0x00000028, + 0x00000050, + 0x00000018, + 0x00000060, + 0x00000040, + 0x00000078, + 0x00000030, + 0x00000010, + 0x00000048, + 0x00000058, + 0x00000168, + 0x00000170, + 0x00000120, + 0x00000108, + 0x00000138, + 0x00000100, + 0x00000128, + 0x00000150, + 0x00000118, + 0x00000160, + 0x00000140, + 0x00000178, + 0x00000130, + 0x00000110, + 0x00000148, + 0x00000158, + 0x00000668, + 0x00000670, + 0x00000620, + 0x00000608, + 0x00000638, + 0x00000600, + 0x00000628, + 0x00000650, + 0x00000618, + 0x00000660, + 0x00000640, + 0x00000678, + 0x00000630, + 0x00000610, + 0x00000648, + 0x00000658, + } }; -const struct gost28147_param gost28147_param_Test_89 = { - 0, - { - /* 0 */ - 0x00062000, 0x00061000, 0x00067800, 0x00062800, - 0x00064800, 0x00060800, 0x00060000, 0x00064000, - 0x00067000, 0x00061800, 0x00065800, 0x00066000, - 0x00066800, 0x00063800, 0x00065000, 0x00063000, - 0x0004a000, 0x00049000, 0x0004f800, 0x0004a800, - 0x0004c800, 0x00048800, 0x00048000, 0x0004c000, - 0x0004f000, 0x00049800, 0x0004d800, 0x0004e000, - 0x0004e800, 0x0004b800, 0x0004d000, 0x0004b000, - 0x0007a000, 0x00079000, 0x0007f800, 0x0007a800, - 0x0007c800, 0x00078800, 0x00078000, 0x0007c000, - 0x0007f000, 0x00079800, 0x0007d800, 0x0007e000, - 0x0007e800, 0x0007b800, 0x0007d000, 0x0007b000, - 0x00072000, 0x00071000, 0x00077800, 0x00072800, - 0x00074800, 0x00070800, 0x00070000, 0x00074000, - 0x00077000, 0x00071800, 0x00075800, 0x00076000, - 0x00076800, 0x00073800, 0x00075000, 0x00073000, - 0x00042000, 0x00041000, 0x00047800, 0x00042800, - 0x00044800, 0x00040800, 0x00040000, 0x00044000, - 0x00047000, 0x00041800, 0x00045800, 0x00046000, - 0x00046800, 0x00043800, 0x00045000, 0x00043000, - 0x0000a000, 0x00009000, 0x0000f800, 0x0000a800, - 0x0000c800, 0x00008800, 0x00008000, 0x0000c000, - 0x0000f000, 0x00009800, 0x0000d800, 0x0000e000, - 0x0000e800, 0x0000b800, 0x0000d000, 0x0000b000, - 0x0001a000, 0x00019000, 0x0001f800, 0x0001a800, - 0x0001c800, 0x00018800, 0x00018000, 0x0001c000, - 0x0001f000, 0x00019800, 0x0001d800, 0x0001e000, - 0x0001e800, 0x0001b800, 0x0001d000, 0x0001b000, - 0x00052000, 0x00051000, 0x00057800, 0x00052800, - 0x00054800, 0x00050800, 0x00050000, 0x00054000, - 0x00057000, 0x00051800, 0x00055800, 0x00056000, - 0x00056800, 0x00053800, 0x00055000, 0x00053000, - 0x00012000, 0x00011000, 0x00017800, 0x00012800, - 0x00014800, 0x00010800, 0x00010000, 0x00014000, - 0x00017000, 0x00011800, 0x00015800, 0x00016000, - 0x00016800, 0x00013800, 0x00015000, 0x00013000, - 0x0003a000, 0x00039000, 0x0003f800, 0x0003a800, - 0x0003c800, 0x00038800, 0x00038000, 0x0003c000, - 0x0003f000, 0x00039800, 0x0003d800, 0x0003e000, - 0x0003e800, 0x0003b800, 0x0003d000, 0x0003b000, - 0x00022000, 0x00021000, 0x00027800, 0x00022800, - 0x00024800, 0x00020800, 0x00020000, 0x00024000, - 0x00027000, 0x00021800, 0x00025800, 0x00026000, - 0x00026800, 0x00023800, 0x00025000, 0x00023000, - 0x0006a000, 0x00069000, 0x0006f800, 0x0006a800, - 0x0006c800, 0x00068800, 0x00068000, 0x0006c000, - 0x0006f000, 0x00069800, 0x0006d800, 0x0006e000, - 0x0006e800, 0x0006b800, 0x0006d000, 0x0006b000, - 0x00032000, 0x00031000, 0x00037800, 0x00032800, - 0x00034800, 0x00030800, 0x00030000, 0x00034000, - 0x00037000, 0x00031800, 0x00035800, 0x00036000, - 0x00036800, 0x00033800, 0x00035000, 0x00033000, - 0x00002000, 0x00001000, 0x00007800, 0x00002800, - 0x00004800, 0x00000800, 0x00000000, 0x00004000, - 0x00007000, 0x00001800, 0x00005800, 0x00006000, - 0x00006800, 0x00003800, 0x00005000, 0x00003000, - 0x0005a000, 0x00059000, 0x0005f800, 0x0005a800, - 0x0005c800, 0x00058800, 0x00058000, 0x0005c000, - 0x0005f000, 0x00059800, 0x0005d800, 0x0005e000, - 0x0005e800, 0x0005b800, 0x0005d000, 0x0005b000, - 0x0002a000, 0x00029000, 0x0002f800, 0x0002a800, - 0x0002c800, 0x00028800, 0x00028000, 0x0002c000, - 0x0002f000, 0x00029800, 0x0002d800, 0x0002e000, - 0x0002e800, 0x0002b800, 0x0002d000, 0x0002b000, - /* 1 */ - 0x07680000, 0x07400000, 0x07700000, 0x07600000, - 0x07380000, 0x07180000, 0x07480000, 0x07500000, - 0x07080000, 0x07280000, 0x07100000, 0x07200000, - 0x07300000, 0x07780000, 0x07000000, 0x07580000, - 0x04e80000, 0x04c00000, 0x04f00000, 0x04e00000, - 0x04b80000, 0x04980000, 0x04c80000, 0x04d00000, - 0x04880000, 0x04a80000, 0x04900000, 0x04a00000, - 0x04b00000, 0x04f80000, 0x04800000, 0x04d80000, - 0x05e80000, 0x05c00000, 0x05f00000, 0x05e00000, - 0x05b80000, 0x05980000, 0x05c80000, 0x05d00000, - 0x05880000, 0x05a80000, 0x05900000, 0x05a00000, - 0x05b00000, 0x05f80000, 0x05800000, 0x05d80000, - 0x01680000, 0x01400000, 0x01700000, 0x01600000, - 0x01380000, 0x01180000, 0x01480000, 0x01500000, - 0x01080000, 0x01280000, 0x01100000, 0x01200000, - 0x01300000, 0x01780000, 0x01000000, 0x01580000, - 0x02e80000, 0x02c00000, 0x02f00000, 0x02e00000, - 0x02b80000, 0x02980000, 0x02c80000, 0x02d00000, - 0x02880000, 0x02a80000, 0x02900000, 0x02a00000, - 0x02b00000, 0x02f80000, 0x02800000, 0x02d80000, - 0x07e80000, 0x07c00000, 0x07f00000, 0x07e00000, - 0x07b80000, 0x07980000, 0x07c80000, 0x07d00000, - 0x07880000, 0x07a80000, 0x07900000, 0x07a00000, - 0x07b00000, 0x07f80000, 0x07800000, 0x07d80000, - 0x03e80000, 0x03c00000, 0x03f00000, 0x03e00000, - 0x03b80000, 0x03980000, 0x03c80000, 0x03d00000, - 0x03880000, 0x03a80000, 0x03900000, 0x03a00000, - 0x03b00000, 0x03f80000, 0x03800000, 0x03d80000, - 0x00e80000, 0x00c00000, 0x00f00000, 0x00e00000, - 0x00b80000, 0x00980000, 0x00c80000, 0x00d00000, - 0x00880000, 0x00a80000, 0x00900000, 0x00a00000, - 0x00b00000, 0x00f80000, 0x00800000, 0x00d80000, - 0x00680000, 0x00400000, 0x00700000, 0x00600000, - 0x00380000, 0x00180000, 0x00480000, 0x00500000, - 0x00080000, 0x00280000, 0x00100000, 0x00200000, - 0x00300000, 0x00780000, 0x00000000, 0x00580000, - 0x06e80000, 0x06c00000, 0x06f00000, 0x06e00000, - 0x06b80000, 0x06980000, 0x06c80000, 0x06d00000, - 0x06880000, 0x06a80000, 0x06900000, 0x06a00000, - 0x06b00000, 0x06f80000, 0x06800000, 0x06d80000, - 0x06680000, 0x06400000, 0x06700000, 0x06600000, - 0x06380000, 0x06180000, 0x06480000, 0x06500000, - 0x06080000, 0x06280000, 0x06100000, 0x06200000, - 0x06300000, 0x06780000, 0x06000000, 0x06580000, - 0x03680000, 0x03400000, 0x03700000, 0x03600000, - 0x03380000, 0x03180000, 0x03480000, 0x03500000, - 0x03080000, 0x03280000, 0x03100000, 0x03200000, - 0x03300000, 0x03780000, 0x03000000, 0x03580000, - 0x05680000, 0x05400000, 0x05700000, 0x05600000, - 0x05380000, 0x05180000, 0x05480000, 0x05500000, - 0x05080000, 0x05280000, 0x05100000, 0x05200000, - 0x05300000, 0x05780000, 0x05000000, 0x05580000, - 0x02680000, 0x02400000, 0x02700000, 0x02600000, - 0x02380000, 0x02180000, 0x02480000, 0x02500000, - 0x02080000, 0x02280000, 0x02100000, 0x02200000, - 0x02300000, 0x02780000, 0x02000000, 0x02580000, - 0x01e80000, 0x01c00000, 0x01f00000, 0x01e00000, - 0x01b80000, 0x01980000, 0x01c80000, 0x01d00000, - 0x01880000, 0x01a80000, 0x01900000, 0x01a00000, - 0x01b00000, 0x01f80000, 0x01800000, 0x01d80000, - 0x04680000, 0x04400000, 0x04700000, 0x04600000, - 0x04380000, 0x04180000, 0x04480000, 0x04500000, - 0x04080000, 0x04280000, 0x04100000, 0x04200000, - 0x04300000, 0x04780000, 0x04000000, 0x04580000, - /* 2 */ - 0x18000004, 0x70000004, 0x28000004, 0x48000004, - 0x30000004, 0x40000004, 0x00000004, 0x68000004, - 0x50000004, 0x58000004, 0x38000004, 0x60000004, - 0x10000004, 0x08000004, 0x78000004, 0x20000004, - 0x98000007, 0xf0000007, 0xa8000007, 0xc8000007, - 0xb0000007, 0xc0000007, 0x80000007, 0xe8000007, - 0xd0000007, 0xd8000007, 0xb8000007, 0xe0000007, - 0x90000007, 0x88000007, 0xf8000007, 0xa0000007, - 0x18000003, 0x70000003, 0x28000003, 0x48000003, - 0x30000003, 0x40000003, 0x00000003, 0x68000003, - 0x50000003, 0x58000003, 0x38000003, 0x60000003, - 0x10000003, 0x08000003, 0x78000003, 0x20000003, - 0x98000005, 0xf0000005, 0xa8000005, 0xc8000005, - 0xb0000005, 0xc0000005, 0x80000005, 0xe8000005, - 0xd0000005, 0xd8000005, 0xb8000005, 0xe0000005, - 0x90000005, 0x88000005, 0xf8000005, 0xa0000005, - 0x98000000, 0xf0000000, 0xa8000000, 0xc8000000, - 0xb0000000, 0xc0000000, 0x80000000, 0xe8000000, - 0xd0000000, 0xd8000000, 0xb8000000, 0xe0000000, - 0x90000000, 0x88000000, 0xf8000000, 0xa0000000, - 0x98000004, 0xf0000004, 0xa8000004, 0xc8000004, - 0xb0000004, 0xc0000004, 0x80000004, 0xe8000004, - 0xd0000004, 0xd8000004, 0xb8000004, 0xe0000004, - 0x90000004, 0x88000004, 0xf8000004, 0xa0000004, - 0x18000006, 0x70000006, 0x28000006, 0x48000006, - 0x30000006, 0x40000006, 0x00000006, 0x68000006, - 0x50000006, 0x58000006, 0x38000006, 0x60000006, - 0x10000006, 0x08000006, 0x78000006, 0x20000006, - 0x98000002, 0xf0000002, 0xa8000002, 0xc8000002, - 0xb0000002, 0xc0000002, 0x80000002, 0xe8000002, - 0xd0000002, 0xd8000002, 0xb8000002, 0xe0000002, - 0x90000002, 0x88000002, 0xf8000002, 0xa0000002, - 0x98000006, 0xf0000006, 0xa8000006, 0xc8000006, - 0xb0000006, 0xc0000006, 0x80000006, 0xe8000006, - 0xd0000006, 0xd8000006, 0xb8000006, 0xe0000006, - 0x90000006, 0x88000006, 0xf8000006, 0xa0000006, - 0x98000001, 0xf0000001, 0xa8000001, 0xc8000001, - 0xb0000001, 0xc0000001, 0x80000001, 0xe8000001, - 0xd0000001, 0xd8000001, 0xb8000001, 0xe0000001, - 0x90000001, 0x88000001, 0xf8000001, 0xa0000001, - 0x98000003, 0xf0000003, 0xa8000003, 0xc8000003, - 0xb0000003, 0xc0000003, 0x80000003, 0xe8000003, - 0xd0000003, 0xd8000003, 0xb8000003, 0xe0000003, - 0x90000003, 0x88000003, 0xf8000003, 0xa0000003, - 0x18000005, 0x70000005, 0x28000005, 0x48000005, - 0x30000005, 0x40000005, 0x00000005, 0x68000005, - 0x50000005, 0x58000005, 0x38000005, 0x60000005, - 0x10000005, 0x08000005, 0x78000005, 0x20000005, - 0x18000000, 0x70000000, 0x28000000, 0x48000000, - 0x30000000, 0x40000000, 0x00000000, 0x68000000, - 0x50000000, 0x58000000, 0x38000000, 0x60000000, - 0x10000000, 0x08000000, 0x78000000, 0x20000000, - 0x18000007, 0x70000007, 0x28000007, 0x48000007, - 0x30000007, 0x40000007, 0x00000007, 0x68000007, - 0x50000007, 0x58000007, 0x38000007, 0x60000007, - 0x10000007, 0x08000007, 0x78000007, 0x20000007, - 0x18000001, 0x70000001, 0x28000001, 0x48000001, - 0x30000001, 0x40000001, 0x00000001, 0x68000001, - 0x50000001, 0x58000001, 0x38000001, 0x60000001, - 0x10000001, 0x08000001, 0x78000001, 0x20000001, - 0x18000002, 0x70000002, 0x28000002, 0x48000002, - 0x30000002, 0x40000002, 0x00000002, 0x68000002, - 0x50000002, 0x58000002, 0x38000002, 0x60000002, - 0x10000002, 0x08000002, 0x78000002, 0x20000002, - /* 3 */ - 0x00000648, 0x00000658, 0x00000660, 0x00000600, - 0x00000618, 0x00000630, 0x00000638, 0x00000628, - 0x00000620, 0x00000640, 0x00000670, 0x00000678, - 0x00000608, 0x00000650, 0x00000610, 0x00000668, - 0x00000348, 0x00000358, 0x00000360, 0x00000300, - 0x00000318, 0x00000330, 0x00000338, 0x00000328, - 0x00000320, 0x00000340, 0x00000370, 0x00000378, - 0x00000308, 0x00000350, 0x00000310, 0x00000368, - 0x000002c8, 0x000002d8, 0x000002e0, 0x00000280, - 0x00000298, 0x000002b0, 0x000002b8, 0x000002a8, - 0x000002a0, 0x000002c0, 0x000002f0, 0x000002f8, - 0x00000288, 0x000002d0, 0x00000290, 0x000002e8, - 0x00000148, 0x00000158, 0x00000160, 0x00000100, - 0x00000118, 0x00000130, 0x00000138, 0x00000128, - 0x00000120, 0x00000140, 0x00000170, 0x00000178, - 0x00000108, 0x00000150, 0x00000110, 0x00000168, - 0x000005c8, 0x000005d8, 0x000005e0, 0x00000580, - 0x00000598, 0x000005b0, 0x000005b8, 0x000005a8, - 0x000005a0, 0x000005c0, 0x000005f0, 0x000005f8, - 0x00000588, 0x000005d0, 0x00000590, 0x000005e8, - 0x00000048, 0x00000058, 0x00000060, 0x00000000, - 0x00000018, 0x00000030, 0x00000038, 0x00000028, - 0x00000020, 0x00000040, 0x00000070, 0x00000078, - 0x00000008, 0x00000050, 0x00000010, 0x00000068, - 0x000004c8, 0x000004d8, 0x000004e0, 0x00000480, - 0x00000498, 0x000004b0, 0x000004b8, 0x000004a8, - 0x000004a0, 0x000004c0, 0x000004f0, 0x000004f8, - 0x00000488, 0x000004d0, 0x00000490, 0x000004e8, - 0x000006c8, 0x000006d8, 0x000006e0, 0x00000680, - 0x00000698, 0x000006b0, 0x000006b8, 0x000006a8, - 0x000006a0, 0x000006c0, 0x000006f0, 0x000006f8, - 0x00000688, 0x000006d0, 0x00000690, 0x000006e8, - 0x000001c8, 0x000001d8, 0x000001e0, 0x00000180, - 0x00000198, 0x000001b0, 0x000001b8, 0x000001a8, - 0x000001a0, 0x000001c0, 0x000001f0, 0x000001f8, - 0x00000188, 0x000001d0, 0x00000190, 0x000001e8, - 0x00000748, 0x00000758, 0x00000760, 0x00000700, - 0x00000718, 0x00000730, 0x00000738, 0x00000728, - 0x00000720, 0x00000740, 0x00000770, 0x00000778, - 0x00000708, 0x00000750, 0x00000710, 0x00000768, - 0x000003c8, 0x000003d8, 0x000003e0, 0x00000380, - 0x00000398, 0x000003b0, 0x000003b8, 0x000003a8, - 0x000003a0, 0x000003c0, 0x000003f0, 0x000003f8, - 0x00000388, 0x000003d0, 0x00000390, 0x000003e8, - 0x00000548, 0x00000558, 0x00000560, 0x00000500, - 0x00000518, 0x00000530, 0x00000538, 0x00000528, - 0x00000520, 0x00000540, 0x00000570, 0x00000578, - 0x00000508, 0x00000550, 0x00000510, 0x00000568, - 0x000007c8, 0x000007d8, 0x000007e0, 0x00000780, - 0x00000798, 0x000007b0, 0x000007b8, 0x000007a8, - 0x000007a0, 0x000007c0, 0x000007f0, 0x000007f8, - 0x00000788, 0x000007d0, 0x00000790, 0x000007e8, - 0x00000248, 0x00000258, 0x00000260, 0x00000200, - 0x00000218, 0x00000230, 0x00000238, 0x00000228, - 0x00000220, 0x00000240, 0x00000270, 0x00000278, - 0x00000208, 0x00000250, 0x00000210, 0x00000268, - 0x000000c8, 0x000000d8, 0x000000e0, 0x00000080, - 0x00000098, 0x000000b0, 0x000000b8, 0x000000a8, - 0x000000a0, 0x000000c0, 0x000000f0, 0x000000f8, - 0x00000088, 0x000000d0, 0x00000090, 0x000000e8, - 0x00000448, 0x00000458, 0x00000460, 0x00000400, - 0x00000418, 0x00000430, 0x00000438, 0x00000428, - 0x00000420, 0x00000440, 0x00000470, 0x00000478, - 0x00000408, 0x00000450, 0x00000410, 0x00000468, - } -}; +const struct gost28147_param gost28147_param_Test_89 = { 0, + { + /* 0 */ + 0x00062000, + 0x00061000, + 0x00067800, + 0x00062800, + 0x00064800, + 0x00060800, + 0x00060000, + 0x00064000, + 0x00067000, + 0x00061800, + 0x00065800, + 0x00066000, + 0x00066800, + 0x00063800, + 0x00065000, + 0x00063000, + 0x0004a000, + 0x00049000, + 0x0004f800, + 0x0004a800, + 0x0004c800, + 0x00048800, + 0x00048000, + 0x0004c000, + 0x0004f000, + 0x00049800, + 0x0004d800, + 0x0004e000, + 0x0004e800, + 0x0004b800, + 0x0004d000, + 0x0004b000, + 0x0007a000, + 0x00079000, + 0x0007f800, + 0x0007a800, + 0x0007c800, + 0x00078800, + 0x00078000, + 0x0007c000, + 0x0007f000, + 0x00079800, + 0x0007d800, + 0x0007e000, + 0x0007e800, + 0x0007b800, + 0x0007d000, + 0x0007b000, + 0x00072000, + 0x00071000, + 0x00077800, + 0x00072800, + 0x00074800, + 0x00070800, + 0x00070000, + 0x00074000, + 0x00077000, + 0x00071800, + 0x00075800, + 0x00076000, + 0x00076800, + 0x00073800, + 0x00075000, + 0x00073000, + 0x00042000, + 0x00041000, + 0x00047800, + 0x00042800, + 0x00044800, + 0x00040800, + 0x00040000, + 0x00044000, + 0x00047000, + 0x00041800, + 0x00045800, + 0x00046000, + 0x00046800, + 0x00043800, + 0x00045000, + 0x00043000, + 0x0000a000, + 0x00009000, + 0x0000f800, + 0x0000a800, + 0x0000c800, + 0x00008800, + 0x00008000, + 0x0000c000, + 0x0000f000, + 0x00009800, + 0x0000d800, + 0x0000e000, + 0x0000e800, + 0x0000b800, + 0x0000d000, + 0x0000b000, + 0x0001a000, + 0x00019000, + 0x0001f800, + 0x0001a800, + 0x0001c800, + 0x00018800, + 0x00018000, + 0x0001c000, + 0x0001f000, + 0x00019800, + 0x0001d800, + 0x0001e000, + 0x0001e800, + 0x0001b800, + 0x0001d000, + 0x0001b000, + 0x00052000, + 0x00051000, + 0x00057800, + 0x00052800, + 0x00054800, + 0x00050800, + 0x00050000, + 0x00054000, + 0x00057000, + 0x00051800, + 0x00055800, + 0x00056000, + 0x00056800, + 0x00053800, + 0x00055000, + 0x00053000, + 0x00012000, + 0x00011000, + 0x00017800, + 0x00012800, + 0x00014800, + 0x00010800, + 0x00010000, + 0x00014000, + 0x00017000, + 0x00011800, + 0x00015800, + 0x00016000, + 0x00016800, + 0x00013800, + 0x00015000, + 0x00013000, + 0x0003a000, + 0x00039000, + 0x0003f800, + 0x0003a800, + 0x0003c800, + 0x00038800, + 0x00038000, + 0x0003c000, + 0x0003f000, + 0x00039800, + 0x0003d800, + 0x0003e000, + 0x0003e800, + 0x0003b800, + 0x0003d000, + 0x0003b000, + 0x00022000, + 0x00021000, + 0x00027800, + 0x00022800, + 0x00024800, + 0x00020800, + 0x00020000, + 0x00024000, + 0x00027000, + 0x00021800, + 0x00025800, + 0x00026000, + 0x00026800, + 0x00023800, + 0x00025000, + 0x00023000, + 0x0006a000, + 0x00069000, + 0x0006f800, + 0x0006a800, + 0x0006c800, + 0x00068800, + 0x00068000, + 0x0006c000, + 0x0006f000, + 0x00069800, + 0x0006d800, + 0x0006e000, + 0x0006e800, + 0x0006b800, + 0x0006d000, + 0x0006b000, + 0x00032000, + 0x00031000, + 0x00037800, + 0x00032800, + 0x00034800, + 0x00030800, + 0x00030000, + 0x00034000, + 0x00037000, + 0x00031800, + 0x00035800, + 0x00036000, + 0x00036800, + 0x00033800, + 0x00035000, + 0x00033000, + 0x00002000, + 0x00001000, + 0x00007800, + 0x00002800, + 0x00004800, + 0x00000800, + 0x00000000, + 0x00004000, + 0x00007000, + 0x00001800, + 0x00005800, + 0x00006000, + 0x00006800, + 0x00003800, + 0x00005000, + 0x00003000, + 0x0005a000, + 0x00059000, + 0x0005f800, + 0x0005a800, + 0x0005c800, + 0x00058800, + 0x00058000, + 0x0005c000, + 0x0005f000, + 0x00059800, + 0x0005d800, + 0x0005e000, + 0x0005e800, + 0x0005b800, + 0x0005d000, + 0x0005b000, + 0x0002a000, + 0x00029000, + 0x0002f800, + 0x0002a800, + 0x0002c800, + 0x00028800, + 0x00028000, + 0x0002c000, + 0x0002f000, + 0x00029800, + 0x0002d800, + 0x0002e000, + 0x0002e800, + 0x0002b800, + 0x0002d000, + 0x0002b000, + /* 1 */ + 0x07680000, + 0x07400000, + 0x07700000, + 0x07600000, + 0x07380000, + 0x07180000, + 0x07480000, + 0x07500000, + 0x07080000, + 0x07280000, + 0x07100000, + 0x07200000, + 0x07300000, + 0x07780000, + 0x07000000, + 0x07580000, + 0x04e80000, + 0x04c00000, + 0x04f00000, + 0x04e00000, + 0x04b80000, + 0x04980000, + 0x04c80000, + 0x04d00000, + 0x04880000, + 0x04a80000, + 0x04900000, + 0x04a00000, + 0x04b00000, + 0x04f80000, + 0x04800000, + 0x04d80000, + 0x05e80000, + 0x05c00000, + 0x05f00000, + 0x05e00000, + 0x05b80000, + 0x05980000, + 0x05c80000, + 0x05d00000, + 0x05880000, + 0x05a80000, + 0x05900000, + 0x05a00000, + 0x05b00000, + 0x05f80000, + 0x05800000, + 0x05d80000, + 0x01680000, + 0x01400000, + 0x01700000, + 0x01600000, + 0x01380000, + 0x01180000, + 0x01480000, + 0x01500000, + 0x01080000, + 0x01280000, + 0x01100000, + 0x01200000, + 0x01300000, + 0x01780000, + 0x01000000, + 0x01580000, + 0x02e80000, + 0x02c00000, + 0x02f00000, + 0x02e00000, + 0x02b80000, + 0x02980000, + 0x02c80000, + 0x02d00000, + 0x02880000, + 0x02a80000, + 0x02900000, + 0x02a00000, + 0x02b00000, + 0x02f80000, + 0x02800000, + 0x02d80000, + 0x07e80000, + 0x07c00000, + 0x07f00000, + 0x07e00000, + 0x07b80000, + 0x07980000, + 0x07c80000, + 0x07d00000, + 0x07880000, + 0x07a80000, + 0x07900000, + 0x07a00000, + 0x07b00000, + 0x07f80000, + 0x07800000, + 0x07d80000, + 0x03e80000, + 0x03c00000, + 0x03f00000, + 0x03e00000, + 0x03b80000, + 0x03980000, + 0x03c80000, + 0x03d00000, + 0x03880000, + 0x03a80000, + 0x03900000, + 0x03a00000, + 0x03b00000, + 0x03f80000, + 0x03800000, + 0x03d80000, + 0x00e80000, + 0x00c00000, + 0x00f00000, + 0x00e00000, + 0x00b80000, + 0x00980000, + 0x00c80000, + 0x00d00000, + 0x00880000, + 0x00a80000, + 0x00900000, + 0x00a00000, + 0x00b00000, + 0x00f80000, + 0x00800000, + 0x00d80000, + 0x00680000, + 0x00400000, + 0x00700000, + 0x00600000, + 0x00380000, + 0x00180000, + 0x00480000, + 0x00500000, + 0x00080000, + 0x00280000, + 0x00100000, + 0x00200000, + 0x00300000, + 0x00780000, + 0x00000000, + 0x00580000, + 0x06e80000, + 0x06c00000, + 0x06f00000, + 0x06e00000, + 0x06b80000, + 0x06980000, + 0x06c80000, + 0x06d00000, + 0x06880000, + 0x06a80000, + 0x06900000, + 0x06a00000, + 0x06b00000, + 0x06f80000, + 0x06800000, + 0x06d80000, + 0x06680000, + 0x06400000, + 0x06700000, + 0x06600000, + 0x06380000, + 0x06180000, + 0x06480000, + 0x06500000, + 0x06080000, + 0x06280000, + 0x06100000, + 0x06200000, + 0x06300000, + 0x06780000, + 0x06000000, + 0x06580000, + 0x03680000, + 0x03400000, + 0x03700000, + 0x03600000, + 0x03380000, + 0x03180000, + 0x03480000, + 0x03500000, + 0x03080000, + 0x03280000, + 0x03100000, + 0x03200000, + 0x03300000, + 0x03780000, + 0x03000000, + 0x03580000, + 0x05680000, + 0x05400000, + 0x05700000, + 0x05600000, + 0x05380000, + 0x05180000, + 0x05480000, + 0x05500000, + 0x05080000, + 0x05280000, + 0x05100000, + 0x05200000, + 0x05300000, + 0x05780000, + 0x05000000, + 0x05580000, + 0x02680000, + 0x02400000, + 0x02700000, + 0x02600000, + 0x02380000, + 0x02180000, + 0x02480000, + 0x02500000, + 0x02080000, + 0x02280000, + 0x02100000, + 0x02200000, + 0x02300000, + 0x02780000, + 0x02000000, + 0x02580000, + 0x01e80000, + 0x01c00000, + 0x01f00000, + 0x01e00000, + 0x01b80000, + 0x01980000, + 0x01c80000, + 0x01d00000, + 0x01880000, + 0x01a80000, + 0x01900000, + 0x01a00000, + 0x01b00000, + 0x01f80000, + 0x01800000, + 0x01d80000, + 0x04680000, + 0x04400000, + 0x04700000, + 0x04600000, + 0x04380000, + 0x04180000, + 0x04480000, + 0x04500000, + 0x04080000, + 0x04280000, + 0x04100000, + 0x04200000, + 0x04300000, + 0x04780000, + 0x04000000, + 0x04580000, + /* 2 */ + 0x18000004, + 0x70000004, + 0x28000004, + 0x48000004, + 0x30000004, + 0x40000004, + 0x00000004, + 0x68000004, + 0x50000004, + 0x58000004, + 0x38000004, + 0x60000004, + 0x10000004, + 0x08000004, + 0x78000004, + 0x20000004, + 0x98000007, + 0xf0000007, + 0xa8000007, + 0xc8000007, + 0xb0000007, + 0xc0000007, + 0x80000007, + 0xe8000007, + 0xd0000007, + 0xd8000007, + 0xb8000007, + 0xe0000007, + 0x90000007, + 0x88000007, + 0xf8000007, + 0xa0000007, + 0x18000003, + 0x70000003, + 0x28000003, + 0x48000003, + 0x30000003, + 0x40000003, + 0x00000003, + 0x68000003, + 0x50000003, + 0x58000003, + 0x38000003, + 0x60000003, + 0x10000003, + 0x08000003, + 0x78000003, + 0x20000003, + 0x98000005, + 0xf0000005, + 0xa8000005, + 0xc8000005, + 0xb0000005, + 0xc0000005, + 0x80000005, + 0xe8000005, + 0xd0000005, + 0xd8000005, + 0xb8000005, + 0xe0000005, + 0x90000005, + 0x88000005, + 0xf8000005, + 0xa0000005, + 0x98000000, + 0xf0000000, + 0xa8000000, + 0xc8000000, + 0xb0000000, + 0xc0000000, + 0x80000000, + 0xe8000000, + 0xd0000000, + 0xd8000000, + 0xb8000000, + 0xe0000000, + 0x90000000, + 0x88000000, + 0xf8000000, + 0xa0000000, + 0x98000004, + 0xf0000004, + 0xa8000004, + 0xc8000004, + 0xb0000004, + 0xc0000004, + 0x80000004, + 0xe8000004, + 0xd0000004, + 0xd8000004, + 0xb8000004, + 0xe0000004, + 0x90000004, + 0x88000004, + 0xf8000004, + 0xa0000004, + 0x18000006, + 0x70000006, + 0x28000006, + 0x48000006, + 0x30000006, + 0x40000006, + 0x00000006, + 0x68000006, + 0x50000006, + 0x58000006, + 0x38000006, + 0x60000006, + 0x10000006, + 0x08000006, + 0x78000006, + 0x20000006, + 0x98000002, + 0xf0000002, + 0xa8000002, + 0xc8000002, + 0xb0000002, + 0xc0000002, + 0x80000002, + 0xe8000002, + 0xd0000002, + 0xd8000002, + 0xb8000002, + 0xe0000002, + 0x90000002, + 0x88000002, + 0xf8000002, + 0xa0000002, + 0x98000006, + 0xf0000006, + 0xa8000006, + 0xc8000006, + 0xb0000006, + 0xc0000006, + 0x80000006, + 0xe8000006, + 0xd0000006, + 0xd8000006, + 0xb8000006, + 0xe0000006, + 0x90000006, + 0x88000006, + 0xf8000006, + 0xa0000006, + 0x98000001, + 0xf0000001, + 0xa8000001, + 0xc8000001, + 0xb0000001, + 0xc0000001, + 0x80000001, + 0xe8000001, + 0xd0000001, + 0xd8000001, + 0xb8000001, + 0xe0000001, + 0x90000001, + 0x88000001, + 0xf8000001, + 0xa0000001, + 0x98000003, + 0xf0000003, + 0xa8000003, + 0xc8000003, + 0xb0000003, + 0xc0000003, + 0x80000003, + 0xe8000003, + 0xd0000003, + 0xd8000003, + 0xb8000003, + 0xe0000003, + 0x90000003, + 0x88000003, + 0xf8000003, + 0xa0000003, + 0x18000005, + 0x70000005, + 0x28000005, + 0x48000005, + 0x30000005, + 0x40000005, + 0x00000005, + 0x68000005, + 0x50000005, + 0x58000005, + 0x38000005, + 0x60000005, + 0x10000005, + 0x08000005, + 0x78000005, + 0x20000005, + 0x18000000, + 0x70000000, + 0x28000000, + 0x48000000, + 0x30000000, + 0x40000000, + 0x00000000, + 0x68000000, + 0x50000000, + 0x58000000, + 0x38000000, + 0x60000000, + 0x10000000, + 0x08000000, + 0x78000000, + 0x20000000, + 0x18000007, + 0x70000007, + 0x28000007, + 0x48000007, + 0x30000007, + 0x40000007, + 0x00000007, + 0x68000007, + 0x50000007, + 0x58000007, + 0x38000007, + 0x60000007, + 0x10000007, + 0x08000007, + 0x78000007, + 0x20000007, + 0x18000001, + 0x70000001, + 0x28000001, + 0x48000001, + 0x30000001, + 0x40000001, + 0x00000001, + 0x68000001, + 0x50000001, + 0x58000001, + 0x38000001, + 0x60000001, + 0x10000001, + 0x08000001, + 0x78000001, + 0x20000001, + 0x18000002, + 0x70000002, + 0x28000002, + 0x48000002, + 0x30000002, + 0x40000002, + 0x00000002, + 0x68000002, + 0x50000002, + 0x58000002, + 0x38000002, + 0x60000002, + 0x10000002, + 0x08000002, + 0x78000002, + 0x20000002, + /* 3 */ + 0x00000648, + 0x00000658, + 0x00000660, + 0x00000600, + 0x00000618, + 0x00000630, + 0x00000638, + 0x00000628, + 0x00000620, + 0x00000640, + 0x00000670, + 0x00000678, + 0x00000608, + 0x00000650, + 0x00000610, + 0x00000668, + 0x00000348, + 0x00000358, + 0x00000360, + 0x00000300, + 0x00000318, + 0x00000330, + 0x00000338, + 0x00000328, + 0x00000320, + 0x00000340, + 0x00000370, + 0x00000378, + 0x00000308, + 0x00000350, + 0x00000310, + 0x00000368, + 0x000002c8, + 0x000002d8, + 0x000002e0, + 0x00000280, + 0x00000298, + 0x000002b0, + 0x000002b8, + 0x000002a8, + 0x000002a0, + 0x000002c0, + 0x000002f0, + 0x000002f8, + 0x00000288, + 0x000002d0, + 0x00000290, + 0x000002e8, + 0x00000148, + 0x00000158, + 0x00000160, + 0x00000100, + 0x00000118, + 0x00000130, + 0x00000138, + 0x00000128, + 0x00000120, + 0x00000140, + 0x00000170, + 0x00000178, + 0x00000108, + 0x00000150, + 0x00000110, + 0x00000168, + 0x000005c8, + 0x000005d8, + 0x000005e0, + 0x00000580, + 0x00000598, + 0x000005b0, + 0x000005b8, + 0x000005a8, + 0x000005a0, + 0x000005c0, + 0x000005f0, + 0x000005f8, + 0x00000588, + 0x000005d0, + 0x00000590, + 0x000005e8, + 0x00000048, + 0x00000058, + 0x00000060, + 0x00000000, + 0x00000018, + 0x00000030, + 0x00000038, + 0x00000028, + 0x00000020, + 0x00000040, + 0x00000070, + 0x00000078, + 0x00000008, + 0x00000050, + 0x00000010, + 0x00000068, + 0x000004c8, + 0x000004d8, + 0x000004e0, + 0x00000480, + 0x00000498, + 0x000004b0, + 0x000004b8, + 0x000004a8, + 0x000004a0, + 0x000004c0, + 0x000004f0, + 0x000004f8, + 0x00000488, + 0x000004d0, + 0x00000490, + 0x000004e8, + 0x000006c8, + 0x000006d8, + 0x000006e0, + 0x00000680, + 0x00000698, + 0x000006b0, + 0x000006b8, + 0x000006a8, + 0x000006a0, + 0x000006c0, + 0x000006f0, + 0x000006f8, + 0x00000688, + 0x000006d0, + 0x00000690, + 0x000006e8, + 0x000001c8, + 0x000001d8, + 0x000001e0, + 0x00000180, + 0x00000198, + 0x000001b0, + 0x000001b8, + 0x000001a8, + 0x000001a0, + 0x000001c0, + 0x000001f0, + 0x000001f8, + 0x00000188, + 0x000001d0, + 0x00000190, + 0x000001e8, + 0x00000748, + 0x00000758, + 0x00000760, + 0x00000700, + 0x00000718, + 0x00000730, + 0x00000738, + 0x00000728, + 0x00000720, + 0x00000740, + 0x00000770, + 0x00000778, + 0x00000708, + 0x00000750, + 0x00000710, + 0x00000768, + 0x000003c8, + 0x000003d8, + 0x000003e0, + 0x00000380, + 0x00000398, + 0x000003b0, + 0x000003b8, + 0x000003a8, + 0x000003a0, + 0x000003c0, + 0x000003f0, + 0x000003f8, + 0x00000388, + 0x000003d0, + 0x00000390, + 0x000003e8, + 0x00000548, + 0x00000558, + 0x00000560, + 0x00000500, + 0x00000518, + 0x00000530, + 0x00000538, + 0x00000528, + 0x00000520, + 0x00000540, + 0x00000570, + 0x00000578, + 0x00000508, + 0x00000550, + 0x00000510, + 0x00000568, + 0x000007c8, + 0x000007d8, + 0x000007e0, + 0x00000780, + 0x00000798, + 0x000007b0, + 0x000007b8, + 0x000007a8, + 0x000007a0, + 0x000007c0, + 0x000007f0, + 0x000007f8, + 0x00000788, + 0x000007d0, + 0x00000790, + 0x000007e8, + 0x00000248, + 0x00000258, + 0x00000260, + 0x00000200, + 0x00000218, + 0x00000230, + 0x00000238, + 0x00000228, + 0x00000220, + 0x00000240, + 0x00000270, + 0x00000278, + 0x00000208, + 0x00000250, + 0x00000210, + 0x00000268, + 0x000000c8, + 0x000000d8, + 0x000000e0, + 0x00000080, + 0x00000098, + 0x000000b0, + 0x000000b8, + 0x000000a8, + 0x000000a0, + 0x000000c0, + 0x000000f0, + 0x000000f8, + 0x00000088, + 0x000000d0, + 0x00000090, + 0x000000e8, + 0x00000448, + 0x00000458, + 0x00000460, + 0x00000400, + 0x00000418, + 0x00000430, + 0x00000438, + 0x00000428, + 0x00000420, + 0x00000440, + 0x00000470, + 0x00000478, + 0x00000408, + 0x00000450, + 0x00000410, + 0x00000468, + } }; -const struct gost28147_param gost28147_param_CryptoPro_A = { - 1, - { - /* 0 */ - 0x0001c800, 0x0001b000, 0x00019800, 0x00019000, - 0x0001c000, 0x0001d800, 0x00018800, 0x0001b800, - 0x0001d000, 0x0001a000, 0x0001f000, 0x0001f800, - 0x0001e000, 0x00018000, 0x0001e800, 0x0001a800, - 0x0003c800, 0x0003b000, 0x00039800, 0x00039000, - 0x0003c000, 0x0003d800, 0x00038800, 0x0003b800, - 0x0003d000, 0x0003a000, 0x0003f000, 0x0003f800, - 0x0003e000, 0x00038000, 0x0003e800, 0x0003a800, - 0x00074800, 0x00073000, 0x00071800, 0x00071000, - 0x00074000, 0x00075800, 0x00070800, 0x00073800, - 0x00075000, 0x00072000, 0x00077000, 0x00077800, - 0x00076000, 0x00070000, 0x00076800, 0x00072800, - 0x0004c800, 0x0004b000, 0x00049800, 0x00049000, - 0x0004c000, 0x0004d800, 0x00048800, 0x0004b800, - 0x0004d000, 0x0004a000, 0x0004f000, 0x0004f800, - 0x0004e000, 0x00048000, 0x0004e800, 0x0004a800, - 0x00044800, 0x00043000, 0x00041800, 0x00041000, - 0x00044000, 0x00045800, 0x00040800, 0x00043800, - 0x00045000, 0x00042000, 0x00047000, 0x00047800, - 0x00046000, 0x00040000, 0x00046800, 0x00042800, - 0x00054800, 0x00053000, 0x00051800, 0x00051000, - 0x00054000, 0x00055800, 0x00050800, 0x00053800, - 0x00055000, 0x00052000, 0x00057000, 0x00057800, - 0x00056000, 0x00050000, 0x00056800, 0x00052800, - 0x0007c800, 0x0007b000, 0x00079800, 0x00079000, - 0x0007c000, 0x0007d800, 0x00078800, 0x0007b800, - 0x0007d000, 0x0007a000, 0x0007f000, 0x0007f800, - 0x0007e000, 0x00078000, 0x0007e800, 0x0007a800, - 0x00004800, 0x00003000, 0x00001800, 0x00001000, - 0x00004000, 0x00005800, 0x00000800, 0x00003800, - 0x00005000, 0x00002000, 0x00007000, 0x00007800, - 0x00006000, 0x00000000, 0x00006800, 0x00002800, - 0x0002c800, 0x0002b000, 0x00029800, 0x00029000, - 0x0002c000, 0x0002d800, 0x00028800, 0x0002b800, - 0x0002d000, 0x0002a000, 0x0002f000, 0x0002f800, - 0x0002e000, 0x00028000, 0x0002e800, 0x0002a800, - 0x00014800, 0x00013000, 0x00011800, 0x00011000, - 0x00014000, 0x00015800, 0x00010800, 0x00013800, - 0x00015000, 0x00012000, 0x00017000, 0x00017800, - 0x00016000, 0x00010000, 0x00016800, 0x00012800, - 0x00034800, 0x00033000, 0x00031800, 0x00031000, - 0x00034000, 0x00035800, 0x00030800, 0x00033800, - 0x00035000, 0x00032000, 0x00037000, 0x00037800, - 0x00036000, 0x00030000, 0x00036800, 0x00032800, - 0x00064800, 0x00063000, 0x00061800, 0x00061000, - 0x00064000, 0x00065800, 0x00060800, 0x00063800, - 0x00065000, 0x00062000, 0x00067000, 0x00067800, - 0x00066000, 0x00060000, 0x00066800, 0x00062800, - 0x0005c800, 0x0005b000, 0x00059800, 0x00059000, - 0x0005c000, 0x0005d800, 0x00058800, 0x0005b800, - 0x0005d000, 0x0005a000, 0x0005f000, 0x0005f800, - 0x0005e000, 0x00058000, 0x0005e800, 0x0005a800, - 0x00024800, 0x00023000, 0x00021800, 0x00021000, - 0x00024000, 0x00025800, 0x00020800, 0x00023800, - 0x00025000, 0x00022000, 0x00027000, 0x00027800, - 0x00026000, 0x00020000, 0x00026800, 0x00022800, - 0x0006c800, 0x0006b000, 0x00069800, 0x00069000, - 0x0006c000, 0x0006d800, 0x00068800, 0x0006b800, - 0x0006d000, 0x0006a000, 0x0006f000, 0x0006f800, - 0x0006e000, 0x00068000, 0x0006e800, 0x0006a800, - 0x0000c800, 0x0000b000, 0x00009800, 0x00009000, - 0x0000c000, 0x0000d800, 0x00008800, 0x0000b800, - 0x0000d000, 0x0000a000, 0x0000f000, 0x0000f800, - 0x0000e000, 0x00008000, 0x0000e800, 0x0000a800, - /* 1 */ - 0x07700000, 0x07200000, 0x07300000, 0x07100000, - 0x07580000, 0x07180000, 0x07680000, 0x07400000, - 0x07600000, 0x07780000, 0x07280000, 0x07500000, - 0x07000000, 0x07380000, 0x07080000, 0x07480000, - 0x03f00000, 0x03a00000, 0x03b00000, 0x03900000, - 0x03d80000, 0x03980000, 0x03e80000, 0x03c00000, - 0x03e00000, 0x03f80000, 0x03a80000, 0x03d00000, - 0x03800000, 0x03b80000, 0x03880000, 0x03c80000, - 0x05700000, 0x05200000, 0x05300000, 0x05100000, - 0x05580000, 0x05180000, 0x05680000, 0x05400000, - 0x05600000, 0x05780000, 0x05280000, 0x05500000, - 0x05000000, 0x05380000, 0x05080000, 0x05480000, - 0x06700000, 0x06200000, 0x06300000, 0x06100000, - 0x06580000, 0x06180000, 0x06680000, 0x06400000, - 0x06600000, 0x06780000, 0x06280000, 0x06500000, - 0x06000000, 0x06380000, 0x06080000, 0x06480000, - 0x06f00000, 0x06a00000, 0x06b00000, 0x06900000, - 0x06d80000, 0x06980000, 0x06e80000, 0x06c00000, - 0x06e00000, 0x06f80000, 0x06a80000, 0x06d00000, - 0x06800000, 0x06b80000, 0x06880000, 0x06c80000, - 0x00f00000, 0x00a00000, 0x00b00000, 0x00900000, - 0x00d80000, 0x00980000, 0x00e80000, 0x00c00000, - 0x00e00000, 0x00f80000, 0x00a80000, 0x00d00000, - 0x00800000, 0x00b80000, 0x00880000, 0x00c80000, - 0x01f00000, 0x01a00000, 0x01b00000, 0x01900000, - 0x01d80000, 0x01980000, 0x01e80000, 0x01c00000, - 0x01e00000, 0x01f80000, 0x01a80000, 0x01d00000, - 0x01800000, 0x01b80000, 0x01880000, 0x01c80000, - 0x04f00000, 0x04a00000, 0x04b00000, 0x04900000, - 0x04d80000, 0x04980000, 0x04e80000, 0x04c00000, - 0x04e00000, 0x04f80000, 0x04a80000, 0x04d00000, - 0x04800000, 0x04b80000, 0x04880000, 0x04c80000, - 0x00700000, 0x00200000, 0x00300000, 0x00100000, - 0x00580000, 0x00180000, 0x00680000, 0x00400000, - 0x00600000, 0x00780000, 0x00280000, 0x00500000, - 0x00000000, 0x00380000, 0x00080000, 0x00480000, - 0x01700000, 0x01200000, 0x01300000, 0x01100000, - 0x01580000, 0x01180000, 0x01680000, 0x01400000, - 0x01600000, 0x01780000, 0x01280000, 0x01500000, - 0x01000000, 0x01380000, 0x01080000, 0x01480000, - 0x05f00000, 0x05a00000, 0x05b00000, 0x05900000, - 0x05d80000, 0x05980000, 0x05e80000, 0x05c00000, - 0x05e00000, 0x05f80000, 0x05a80000, 0x05d00000, - 0x05800000, 0x05b80000, 0x05880000, 0x05c80000, - 0x02700000, 0x02200000, 0x02300000, 0x02100000, - 0x02580000, 0x02180000, 0x02680000, 0x02400000, - 0x02600000, 0x02780000, 0x02280000, 0x02500000, - 0x02000000, 0x02380000, 0x02080000, 0x02480000, - 0x07f00000, 0x07a00000, 0x07b00000, 0x07900000, - 0x07d80000, 0x07980000, 0x07e80000, 0x07c00000, - 0x07e00000, 0x07f80000, 0x07a80000, 0x07d00000, - 0x07800000, 0x07b80000, 0x07880000, 0x07c80000, - 0x04700000, 0x04200000, 0x04300000, 0x04100000, - 0x04580000, 0x04180000, 0x04680000, 0x04400000, - 0x04600000, 0x04780000, 0x04280000, 0x04500000, - 0x04000000, 0x04380000, 0x04080000, 0x04480000, - 0x02f00000, 0x02a00000, 0x02b00000, 0x02900000, - 0x02d80000, 0x02980000, 0x02e80000, 0x02c00000, - 0x02e00000, 0x02f80000, 0x02a80000, 0x02d00000, - 0x02800000, 0x02b80000, 0x02880000, 0x02c80000, - 0x03700000, 0x03200000, 0x03300000, 0x03100000, - 0x03580000, 0x03180000, 0x03680000, 0x03400000, - 0x03600000, 0x03780000, 0x03280000, 0x03500000, - 0x03000000, 0x03380000, 0x03080000, 0x03480000, - /* 2 */ - 0xd8000001, 0xa8000001, 0x88000001, 0xc8000001, - 0xc0000001, 0xe8000001, 0xf8000001, 0x80000001, - 0xf0000001, 0xa0000001, 0x90000001, 0x98000001, - 0xe0000001, 0xb8000001, 0xd0000001, 0xb0000001, - 0x58000005, 0x28000005, 0x08000005, 0x48000005, - 0x40000005, 0x68000005, 0x78000005, 0x00000005, - 0x70000005, 0x20000005, 0x10000005, 0x18000005, - 0x60000005, 0x38000005, 0x50000005, 0x30000005, - 0xd8000006, 0xa8000006, 0x88000006, 0xc8000006, - 0xc0000006, 0xe8000006, 0xf8000006, 0x80000006, - 0xf0000006, 0xa0000006, 0x90000006, 0x98000006, - 0xe0000006, 0xb8000006, 0xd0000006, 0xb0000006, - 0x58000006, 0x28000006, 0x08000006, 0x48000006, - 0x40000006, 0x68000006, 0x78000006, 0x00000006, - 0x70000006, 0x20000006, 0x10000006, 0x18000006, - 0x60000006, 0x38000006, 0x50000006, 0x30000006, - 0xd8000000, 0xa8000000, 0x88000000, 0xc8000000, - 0xc0000000, 0xe8000000, 0xf8000000, 0x80000000, - 0xf0000000, 0xa0000000, 0x90000000, 0x98000000, - 0xe0000000, 0xb8000000, 0xd0000000, 0xb0000000, - 0x58000001, 0x28000001, 0x08000001, 0x48000001, - 0x40000001, 0x68000001, 0x78000001, 0x00000001, - 0x70000001, 0x20000001, 0x10000001, 0x18000001, - 0x60000001, 0x38000001, 0x50000001, 0x30000001, - 0x58000000, 0x28000000, 0x08000000, 0x48000000, - 0x40000000, 0x68000000, 0x78000000, 0x00000000, - 0x70000000, 0x20000000, 0x10000000, 0x18000000, - 0x60000000, 0x38000000, 0x50000000, 0x30000000, - 0xd8000005, 0xa8000005, 0x88000005, 0xc8000005, - 0xc0000005, 0xe8000005, 0xf8000005, 0x80000005, - 0xf0000005, 0xa0000005, 0x90000005, 0x98000005, - 0xe0000005, 0xb8000005, 0xd0000005, 0xb0000005, - 0xd8000003, 0xa8000003, 0x88000003, 0xc8000003, - 0xc0000003, 0xe8000003, 0xf8000003, 0x80000003, - 0xf0000003, 0xa0000003, 0x90000003, 0x98000003, - 0xe0000003, 0xb8000003, 0xd0000003, 0xb0000003, - 0xd8000002, 0xa8000002, 0x88000002, 0xc8000002, - 0xc0000002, 0xe8000002, 0xf8000002, 0x80000002, - 0xf0000002, 0xa0000002, 0x90000002, 0x98000002, - 0xe0000002, 0xb8000002, 0xd0000002, 0xb0000002, - 0xd8000004, 0xa8000004, 0x88000004, 0xc8000004, - 0xc0000004, 0xe8000004, 0xf8000004, 0x80000004, - 0xf0000004, 0xa0000004, 0x90000004, 0x98000004, - 0xe0000004, 0xb8000004, 0xd0000004, 0xb0000004, - 0x58000002, 0x28000002, 0x08000002, 0x48000002, - 0x40000002, 0x68000002, 0x78000002, 0x00000002, - 0x70000002, 0x20000002, 0x10000002, 0x18000002, - 0x60000002, 0x38000002, 0x50000002, 0x30000002, - 0x58000004, 0x28000004, 0x08000004, 0x48000004, - 0x40000004, 0x68000004, 0x78000004, 0x00000004, - 0x70000004, 0x20000004, 0x10000004, 0x18000004, - 0x60000004, 0x38000004, 0x50000004, 0x30000004, - 0xd8000007, 0xa8000007, 0x88000007, 0xc8000007, - 0xc0000007, 0xe8000007, 0xf8000007, 0x80000007, - 0xf0000007, 0xa0000007, 0x90000007, 0x98000007, - 0xe0000007, 0xb8000007, 0xd0000007, 0xb0000007, - 0x58000007, 0x28000007, 0x08000007, 0x48000007, - 0x40000007, 0x68000007, 0x78000007, 0x00000007, - 0x70000007, 0x20000007, 0x10000007, 0x18000007, - 0x60000007, 0x38000007, 0x50000007, 0x30000007, - 0x58000003, 0x28000003, 0x08000003, 0x48000003, - 0x40000003, 0x68000003, 0x78000003, 0x00000003, - 0x70000003, 0x20000003, 0x10000003, 0x18000003, - 0x60000003, 0x38000003, 0x50000003, 0x30000003, - /* 3 */ - 0x00000588, 0x000005e8, 0x00000590, 0x000005c8, - 0x000005b8, 0x000005d0, 0x000005b0, 0x00000580, - 0x000005c0, 0x000005e0, 0x000005a0, 0x000005a8, - 0x000005f8, 0x00000598, 0x000005d8, 0x000005f0, - 0x00000508, 0x00000568, 0x00000510, 0x00000548, - 0x00000538, 0x00000550, 0x00000530, 0x00000500, - 0x00000540, 0x00000560, 0x00000520, 0x00000528, - 0x00000578, 0x00000518, 0x00000558, 0x00000570, - 0x00000788, 0x000007e8, 0x00000790, 0x000007c8, - 0x000007b8, 0x000007d0, 0x000007b0, 0x00000780, - 0x000007c0, 0x000007e0, 0x000007a0, 0x000007a8, - 0x000007f8, 0x00000798, 0x000007d8, 0x000007f0, - 0x00000288, 0x000002e8, 0x00000290, 0x000002c8, - 0x000002b8, 0x000002d0, 0x000002b0, 0x00000280, - 0x000002c0, 0x000002e0, 0x000002a0, 0x000002a8, - 0x000002f8, 0x00000298, 0x000002d8, 0x000002f0, - 0x00000008, 0x00000068, 0x00000010, 0x00000048, - 0x00000038, 0x00000050, 0x00000030, 0x00000000, - 0x00000040, 0x00000060, 0x00000020, 0x00000028, - 0x00000078, 0x00000018, 0x00000058, 0x00000070, - 0x00000608, 0x00000668, 0x00000610, 0x00000648, - 0x00000638, 0x00000650, 0x00000630, 0x00000600, - 0x00000640, 0x00000660, 0x00000620, 0x00000628, - 0x00000678, 0x00000618, 0x00000658, 0x00000670, - 0x00000708, 0x00000768, 0x00000710, 0x00000748, - 0x00000738, 0x00000750, 0x00000730, 0x00000700, - 0x00000740, 0x00000760, 0x00000720, 0x00000728, - 0x00000778, 0x00000718, 0x00000758, 0x00000770, - 0x00000408, 0x00000468, 0x00000410, 0x00000448, - 0x00000438, 0x00000450, 0x00000430, 0x00000400, - 0x00000440, 0x00000460, 0x00000420, 0x00000428, - 0x00000478, 0x00000418, 0x00000458, 0x00000470, - 0x00000308, 0x00000368, 0x00000310, 0x00000348, - 0x00000338, 0x00000350, 0x00000330, 0x00000300, - 0x00000340, 0x00000360, 0x00000320, 0x00000328, - 0x00000378, 0x00000318, 0x00000358, 0x00000370, - 0x00000108, 0x00000168, 0x00000110, 0x00000148, - 0x00000138, 0x00000150, 0x00000130, 0x00000100, - 0x00000140, 0x00000160, 0x00000120, 0x00000128, - 0x00000178, 0x00000118, 0x00000158, 0x00000170, - 0x00000188, 0x000001e8, 0x00000190, 0x000001c8, - 0x000001b8, 0x000001d0, 0x000001b0, 0x00000180, - 0x000001c0, 0x000001e0, 0x000001a0, 0x000001a8, - 0x000001f8, 0x00000198, 0x000001d8, 0x000001f0, - 0x00000488, 0x000004e8, 0x00000490, 0x000004c8, - 0x000004b8, 0x000004d0, 0x000004b0, 0x00000480, - 0x000004c0, 0x000004e0, 0x000004a0, 0x000004a8, - 0x000004f8, 0x00000498, 0x000004d8, 0x000004f0, - 0x00000088, 0x000000e8, 0x00000090, 0x000000c8, - 0x000000b8, 0x000000d0, 0x000000b0, 0x00000080, - 0x000000c0, 0x000000e0, 0x000000a0, 0x000000a8, - 0x000000f8, 0x00000098, 0x000000d8, 0x000000f0, - 0x00000388, 0x000003e8, 0x00000390, 0x000003c8, - 0x000003b8, 0x000003d0, 0x000003b0, 0x00000380, - 0x000003c0, 0x000003e0, 0x000003a0, 0x000003a8, - 0x000003f8, 0x00000398, 0x000003d8, 0x000003f0, - 0x00000688, 0x000006e8, 0x00000690, 0x000006c8, - 0x000006b8, 0x000006d0, 0x000006b0, 0x00000680, - 0x000006c0, 0x000006e0, 0x000006a0, 0x000006a8, - 0x000006f8, 0x00000698, 0x000006d8, 0x000006f0, - 0x00000208, 0x00000268, 0x00000210, 0x00000248, - 0x00000238, 0x00000250, 0x00000230, 0x00000200, - 0x00000240, 0x00000260, 0x00000220, 0x00000228, - 0x00000278, 0x00000218, 0x00000258, 0x00000270, - } -}; +const struct gost28147_param gost28147_param_CryptoPro_A = { 1, + { + /* 0 */ + 0x0001c800, + 0x0001b000, + 0x00019800, + 0x00019000, + 0x0001c000, + 0x0001d800, + 0x00018800, + 0x0001b800, + 0x0001d000, + 0x0001a000, + 0x0001f000, + 0x0001f800, + 0x0001e000, + 0x00018000, + 0x0001e800, + 0x0001a800, + 0x0003c800, + 0x0003b000, + 0x00039800, + 0x00039000, + 0x0003c000, + 0x0003d800, + 0x00038800, + 0x0003b800, + 0x0003d000, + 0x0003a000, + 0x0003f000, + 0x0003f800, + 0x0003e000, + 0x00038000, + 0x0003e800, + 0x0003a800, + 0x00074800, + 0x00073000, + 0x00071800, + 0x00071000, + 0x00074000, + 0x00075800, + 0x00070800, + 0x00073800, + 0x00075000, + 0x00072000, + 0x00077000, + 0x00077800, + 0x00076000, + 0x00070000, + 0x00076800, + 0x00072800, + 0x0004c800, + 0x0004b000, + 0x00049800, + 0x00049000, + 0x0004c000, + 0x0004d800, + 0x00048800, + 0x0004b800, + 0x0004d000, + 0x0004a000, + 0x0004f000, + 0x0004f800, + 0x0004e000, + 0x00048000, + 0x0004e800, + 0x0004a800, + 0x00044800, + 0x00043000, + 0x00041800, + 0x00041000, + 0x00044000, + 0x00045800, + 0x00040800, + 0x00043800, + 0x00045000, + 0x00042000, + 0x00047000, + 0x00047800, + 0x00046000, + 0x00040000, + 0x00046800, + 0x00042800, + 0x00054800, + 0x00053000, + 0x00051800, + 0x00051000, + 0x00054000, + 0x00055800, + 0x00050800, + 0x00053800, + 0x00055000, + 0x00052000, + 0x00057000, + 0x00057800, + 0x00056000, + 0x00050000, + 0x00056800, + 0x00052800, + 0x0007c800, + 0x0007b000, + 0x00079800, + 0x00079000, + 0x0007c000, + 0x0007d800, + 0x00078800, + 0x0007b800, + 0x0007d000, + 0x0007a000, + 0x0007f000, + 0x0007f800, + 0x0007e000, + 0x00078000, + 0x0007e800, + 0x0007a800, + 0x00004800, + 0x00003000, + 0x00001800, + 0x00001000, + 0x00004000, + 0x00005800, + 0x00000800, + 0x00003800, + 0x00005000, + 0x00002000, + 0x00007000, + 0x00007800, + 0x00006000, + 0x00000000, + 0x00006800, + 0x00002800, + 0x0002c800, + 0x0002b000, + 0x00029800, + 0x00029000, + 0x0002c000, + 0x0002d800, + 0x00028800, + 0x0002b800, + 0x0002d000, + 0x0002a000, + 0x0002f000, + 0x0002f800, + 0x0002e000, + 0x00028000, + 0x0002e800, + 0x0002a800, + 0x00014800, + 0x00013000, + 0x00011800, + 0x00011000, + 0x00014000, + 0x00015800, + 0x00010800, + 0x00013800, + 0x00015000, + 0x00012000, + 0x00017000, + 0x00017800, + 0x00016000, + 0x00010000, + 0x00016800, + 0x00012800, + 0x00034800, + 0x00033000, + 0x00031800, + 0x00031000, + 0x00034000, + 0x00035800, + 0x00030800, + 0x00033800, + 0x00035000, + 0x00032000, + 0x00037000, + 0x00037800, + 0x00036000, + 0x00030000, + 0x00036800, + 0x00032800, + 0x00064800, + 0x00063000, + 0x00061800, + 0x00061000, + 0x00064000, + 0x00065800, + 0x00060800, + 0x00063800, + 0x00065000, + 0x00062000, + 0x00067000, + 0x00067800, + 0x00066000, + 0x00060000, + 0x00066800, + 0x00062800, + 0x0005c800, + 0x0005b000, + 0x00059800, + 0x00059000, + 0x0005c000, + 0x0005d800, + 0x00058800, + 0x0005b800, + 0x0005d000, + 0x0005a000, + 0x0005f000, + 0x0005f800, + 0x0005e000, + 0x00058000, + 0x0005e800, + 0x0005a800, + 0x00024800, + 0x00023000, + 0x00021800, + 0x00021000, + 0x00024000, + 0x00025800, + 0x00020800, + 0x00023800, + 0x00025000, + 0x00022000, + 0x00027000, + 0x00027800, + 0x00026000, + 0x00020000, + 0x00026800, + 0x00022800, + 0x0006c800, + 0x0006b000, + 0x00069800, + 0x00069000, + 0x0006c000, + 0x0006d800, + 0x00068800, + 0x0006b800, + 0x0006d000, + 0x0006a000, + 0x0006f000, + 0x0006f800, + 0x0006e000, + 0x00068000, + 0x0006e800, + 0x0006a800, + 0x0000c800, + 0x0000b000, + 0x00009800, + 0x00009000, + 0x0000c000, + 0x0000d800, + 0x00008800, + 0x0000b800, + 0x0000d000, + 0x0000a000, + 0x0000f000, + 0x0000f800, + 0x0000e000, + 0x00008000, + 0x0000e800, + 0x0000a800, + /* 1 */ + 0x07700000, + 0x07200000, + 0x07300000, + 0x07100000, + 0x07580000, + 0x07180000, + 0x07680000, + 0x07400000, + 0x07600000, + 0x07780000, + 0x07280000, + 0x07500000, + 0x07000000, + 0x07380000, + 0x07080000, + 0x07480000, + 0x03f00000, + 0x03a00000, + 0x03b00000, + 0x03900000, + 0x03d80000, + 0x03980000, + 0x03e80000, + 0x03c00000, + 0x03e00000, + 0x03f80000, + 0x03a80000, + 0x03d00000, + 0x03800000, + 0x03b80000, + 0x03880000, + 0x03c80000, + 0x05700000, + 0x05200000, + 0x05300000, + 0x05100000, + 0x05580000, + 0x05180000, + 0x05680000, + 0x05400000, + 0x05600000, + 0x05780000, + 0x05280000, + 0x05500000, + 0x05000000, + 0x05380000, + 0x05080000, + 0x05480000, + 0x06700000, + 0x06200000, + 0x06300000, + 0x06100000, + 0x06580000, + 0x06180000, + 0x06680000, + 0x06400000, + 0x06600000, + 0x06780000, + 0x06280000, + 0x06500000, + 0x06000000, + 0x06380000, + 0x06080000, + 0x06480000, + 0x06f00000, + 0x06a00000, + 0x06b00000, + 0x06900000, + 0x06d80000, + 0x06980000, + 0x06e80000, + 0x06c00000, + 0x06e00000, + 0x06f80000, + 0x06a80000, + 0x06d00000, + 0x06800000, + 0x06b80000, + 0x06880000, + 0x06c80000, + 0x00f00000, + 0x00a00000, + 0x00b00000, + 0x00900000, + 0x00d80000, + 0x00980000, + 0x00e80000, + 0x00c00000, + 0x00e00000, + 0x00f80000, + 0x00a80000, + 0x00d00000, + 0x00800000, + 0x00b80000, + 0x00880000, + 0x00c80000, + 0x01f00000, + 0x01a00000, + 0x01b00000, + 0x01900000, + 0x01d80000, + 0x01980000, + 0x01e80000, + 0x01c00000, + 0x01e00000, + 0x01f80000, + 0x01a80000, + 0x01d00000, + 0x01800000, + 0x01b80000, + 0x01880000, + 0x01c80000, + 0x04f00000, + 0x04a00000, + 0x04b00000, + 0x04900000, + 0x04d80000, + 0x04980000, + 0x04e80000, + 0x04c00000, + 0x04e00000, + 0x04f80000, + 0x04a80000, + 0x04d00000, + 0x04800000, + 0x04b80000, + 0x04880000, + 0x04c80000, + 0x00700000, + 0x00200000, + 0x00300000, + 0x00100000, + 0x00580000, + 0x00180000, + 0x00680000, + 0x00400000, + 0x00600000, + 0x00780000, + 0x00280000, + 0x00500000, + 0x00000000, + 0x00380000, + 0x00080000, + 0x00480000, + 0x01700000, + 0x01200000, + 0x01300000, + 0x01100000, + 0x01580000, + 0x01180000, + 0x01680000, + 0x01400000, + 0x01600000, + 0x01780000, + 0x01280000, + 0x01500000, + 0x01000000, + 0x01380000, + 0x01080000, + 0x01480000, + 0x05f00000, + 0x05a00000, + 0x05b00000, + 0x05900000, + 0x05d80000, + 0x05980000, + 0x05e80000, + 0x05c00000, + 0x05e00000, + 0x05f80000, + 0x05a80000, + 0x05d00000, + 0x05800000, + 0x05b80000, + 0x05880000, + 0x05c80000, + 0x02700000, + 0x02200000, + 0x02300000, + 0x02100000, + 0x02580000, + 0x02180000, + 0x02680000, + 0x02400000, + 0x02600000, + 0x02780000, + 0x02280000, + 0x02500000, + 0x02000000, + 0x02380000, + 0x02080000, + 0x02480000, + 0x07f00000, + 0x07a00000, + 0x07b00000, + 0x07900000, + 0x07d80000, + 0x07980000, + 0x07e80000, + 0x07c00000, + 0x07e00000, + 0x07f80000, + 0x07a80000, + 0x07d00000, + 0x07800000, + 0x07b80000, + 0x07880000, + 0x07c80000, + 0x04700000, + 0x04200000, + 0x04300000, + 0x04100000, + 0x04580000, + 0x04180000, + 0x04680000, + 0x04400000, + 0x04600000, + 0x04780000, + 0x04280000, + 0x04500000, + 0x04000000, + 0x04380000, + 0x04080000, + 0x04480000, + 0x02f00000, + 0x02a00000, + 0x02b00000, + 0x02900000, + 0x02d80000, + 0x02980000, + 0x02e80000, + 0x02c00000, + 0x02e00000, + 0x02f80000, + 0x02a80000, + 0x02d00000, + 0x02800000, + 0x02b80000, + 0x02880000, + 0x02c80000, + 0x03700000, + 0x03200000, + 0x03300000, + 0x03100000, + 0x03580000, + 0x03180000, + 0x03680000, + 0x03400000, + 0x03600000, + 0x03780000, + 0x03280000, + 0x03500000, + 0x03000000, + 0x03380000, + 0x03080000, + 0x03480000, + /* 2 */ + 0xd8000001, + 0xa8000001, + 0x88000001, + 0xc8000001, + 0xc0000001, + 0xe8000001, + 0xf8000001, + 0x80000001, + 0xf0000001, + 0xa0000001, + 0x90000001, + 0x98000001, + 0xe0000001, + 0xb8000001, + 0xd0000001, + 0xb0000001, + 0x58000005, + 0x28000005, + 0x08000005, + 0x48000005, + 0x40000005, + 0x68000005, + 0x78000005, + 0x00000005, + 0x70000005, + 0x20000005, + 0x10000005, + 0x18000005, + 0x60000005, + 0x38000005, + 0x50000005, + 0x30000005, + 0xd8000006, + 0xa8000006, + 0x88000006, + 0xc8000006, + 0xc0000006, + 0xe8000006, + 0xf8000006, + 0x80000006, + 0xf0000006, + 0xa0000006, + 0x90000006, + 0x98000006, + 0xe0000006, + 0xb8000006, + 0xd0000006, + 0xb0000006, + 0x58000006, + 0x28000006, + 0x08000006, + 0x48000006, + 0x40000006, + 0x68000006, + 0x78000006, + 0x00000006, + 0x70000006, + 0x20000006, + 0x10000006, + 0x18000006, + 0x60000006, + 0x38000006, + 0x50000006, + 0x30000006, + 0xd8000000, + 0xa8000000, + 0x88000000, + 0xc8000000, + 0xc0000000, + 0xe8000000, + 0xf8000000, + 0x80000000, + 0xf0000000, + 0xa0000000, + 0x90000000, + 0x98000000, + 0xe0000000, + 0xb8000000, + 0xd0000000, + 0xb0000000, + 0x58000001, + 0x28000001, + 0x08000001, + 0x48000001, + 0x40000001, + 0x68000001, + 0x78000001, + 0x00000001, + 0x70000001, + 0x20000001, + 0x10000001, + 0x18000001, + 0x60000001, + 0x38000001, + 0x50000001, + 0x30000001, + 0x58000000, + 0x28000000, + 0x08000000, + 0x48000000, + 0x40000000, + 0x68000000, + 0x78000000, + 0x00000000, + 0x70000000, + 0x20000000, + 0x10000000, + 0x18000000, + 0x60000000, + 0x38000000, + 0x50000000, + 0x30000000, + 0xd8000005, + 0xa8000005, + 0x88000005, + 0xc8000005, + 0xc0000005, + 0xe8000005, + 0xf8000005, + 0x80000005, + 0xf0000005, + 0xa0000005, + 0x90000005, + 0x98000005, + 0xe0000005, + 0xb8000005, + 0xd0000005, + 0xb0000005, + 0xd8000003, + 0xa8000003, + 0x88000003, + 0xc8000003, + 0xc0000003, + 0xe8000003, + 0xf8000003, + 0x80000003, + 0xf0000003, + 0xa0000003, + 0x90000003, + 0x98000003, + 0xe0000003, + 0xb8000003, + 0xd0000003, + 0xb0000003, + 0xd8000002, + 0xa8000002, + 0x88000002, + 0xc8000002, + 0xc0000002, + 0xe8000002, + 0xf8000002, + 0x80000002, + 0xf0000002, + 0xa0000002, + 0x90000002, + 0x98000002, + 0xe0000002, + 0xb8000002, + 0xd0000002, + 0xb0000002, + 0xd8000004, + 0xa8000004, + 0x88000004, + 0xc8000004, + 0xc0000004, + 0xe8000004, + 0xf8000004, + 0x80000004, + 0xf0000004, + 0xa0000004, + 0x90000004, + 0x98000004, + 0xe0000004, + 0xb8000004, + 0xd0000004, + 0xb0000004, + 0x58000002, + 0x28000002, + 0x08000002, + 0x48000002, + 0x40000002, + 0x68000002, + 0x78000002, + 0x00000002, + 0x70000002, + 0x20000002, + 0x10000002, + 0x18000002, + 0x60000002, + 0x38000002, + 0x50000002, + 0x30000002, + 0x58000004, + 0x28000004, + 0x08000004, + 0x48000004, + 0x40000004, + 0x68000004, + 0x78000004, + 0x00000004, + 0x70000004, + 0x20000004, + 0x10000004, + 0x18000004, + 0x60000004, + 0x38000004, + 0x50000004, + 0x30000004, + 0xd8000007, + 0xa8000007, + 0x88000007, + 0xc8000007, + 0xc0000007, + 0xe8000007, + 0xf8000007, + 0x80000007, + 0xf0000007, + 0xa0000007, + 0x90000007, + 0x98000007, + 0xe0000007, + 0xb8000007, + 0xd0000007, + 0xb0000007, + 0x58000007, + 0x28000007, + 0x08000007, + 0x48000007, + 0x40000007, + 0x68000007, + 0x78000007, + 0x00000007, + 0x70000007, + 0x20000007, + 0x10000007, + 0x18000007, + 0x60000007, + 0x38000007, + 0x50000007, + 0x30000007, + 0x58000003, + 0x28000003, + 0x08000003, + 0x48000003, + 0x40000003, + 0x68000003, + 0x78000003, + 0x00000003, + 0x70000003, + 0x20000003, + 0x10000003, + 0x18000003, + 0x60000003, + 0x38000003, + 0x50000003, + 0x30000003, + /* 3 */ + 0x00000588, + 0x000005e8, + 0x00000590, + 0x000005c8, + 0x000005b8, + 0x000005d0, + 0x000005b0, + 0x00000580, + 0x000005c0, + 0x000005e0, + 0x000005a0, + 0x000005a8, + 0x000005f8, + 0x00000598, + 0x000005d8, + 0x000005f0, + 0x00000508, + 0x00000568, + 0x00000510, + 0x00000548, + 0x00000538, + 0x00000550, + 0x00000530, + 0x00000500, + 0x00000540, + 0x00000560, + 0x00000520, + 0x00000528, + 0x00000578, + 0x00000518, + 0x00000558, + 0x00000570, + 0x00000788, + 0x000007e8, + 0x00000790, + 0x000007c8, + 0x000007b8, + 0x000007d0, + 0x000007b0, + 0x00000780, + 0x000007c0, + 0x000007e0, + 0x000007a0, + 0x000007a8, + 0x000007f8, + 0x00000798, + 0x000007d8, + 0x000007f0, + 0x00000288, + 0x000002e8, + 0x00000290, + 0x000002c8, + 0x000002b8, + 0x000002d0, + 0x000002b0, + 0x00000280, + 0x000002c0, + 0x000002e0, + 0x000002a0, + 0x000002a8, + 0x000002f8, + 0x00000298, + 0x000002d8, + 0x000002f0, + 0x00000008, + 0x00000068, + 0x00000010, + 0x00000048, + 0x00000038, + 0x00000050, + 0x00000030, + 0x00000000, + 0x00000040, + 0x00000060, + 0x00000020, + 0x00000028, + 0x00000078, + 0x00000018, + 0x00000058, + 0x00000070, + 0x00000608, + 0x00000668, + 0x00000610, + 0x00000648, + 0x00000638, + 0x00000650, + 0x00000630, + 0x00000600, + 0x00000640, + 0x00000660, + 0x00000620, + 0x00000628, + 0x00000678, + 0x00000618, + 0x00000658, + 0x00000670, + 0x00000708, + 0x00000768, + 0x00000710, + 0x00000748, + 0x00000738, + 0x00000750, + 0x00000730, + 0x00000700, + 0x00000740, + 0x00000760, + 0x00000720, + 0x00000728, + 0x00000778, + 0x00000718, + 0x00000758, + 0x00000770, + 0x00000408, + 0x00000468, + 0x00000410, + 0x00000448, + 0x00000438, + 0x00000450, + 0x00000430, + 0x00000400, + 0x00000440, + 0x00000460, + 0x00000420, + 0x00000428, + 0x00000478, + 0x00000418, + 0x00000458, + 0x00000470, + 0x00000308, + 0x00000368, + 0x00000310, + 0x00000348, + 0x00000338, + 0x00000350, + 0x00000330, + 0x00000300, + 0x00000340, + 0x00000360, + 0x00000320, + 0x00000328, + 0x00000378, + 0x00000318, + 0x00000358, + 0x00000370, + 0x00000108, + 0x00000168, + 0x00000110, + 0x00000148, + 0x00000138, + 0x00000150, + 0x00000130, + 0x00000100, + 0x00000140, + 0x00000160, + 0x00000120, + 0x00000128, + 0x00000178, + 0x00000118, + 0x00000158, + 0x00000170, + 0x00000188, + 0x000001e8, + 0x00000190, + 0x000001c8, + 0x000001b8, + 0x000001d0, + 0x000001b0, + 0x00000180, + 0x000001c0, + 0x000001e0, + 0x000001a0, + 0x000001a8, + 0x000001f8, + 0x00000198, + 0x000001d8, + 0x000001f0, + 0x00000488, + 0x000004e8, + 0x00000490, + 0x000004c8, + 0x000004b8, + 0x000004d0, + 0x000004b0, + 0x00000480, + 0x000004c0, + 0x000004e0, + 0x000004a0, + 0x000004a8, + 0x000004f8, + 0x00000498, + 0x000004d8, + 0x000004f0, + 0x00000088, + 0x000000e8, + 0x00000090, + 0x000000c8, + 0x000000b8, + 0x000000d0, + 0x000000b0, + 0x00000080, + 0x000000c0, + 0x000000e0, + 0x000000a0, + 0x000000a8, + 0x000000f8, + 0x00000098, + 0x000000d8, + 0x000000f0, + 0x00000388, + 0x000003e8, + 0x00000390, + 0x000003c8, + 0x000003b8, + 0x000003d0, + 0x000003b0, + 0x00000380, + 0x000003c0, + 0x000003e0, + 0x000003a0, + 0x000003a8, + 0x000003f8, + 0x00000398, + 0x000003d8, + 0x000003f0, + 0x00000688, + 0x000006e8, + 0x00000690, + 0x000006c8, + 0x000006b8, + 0x000006d0, + 0x000006b0, + 0x00000680, + 0x000006c0, + 0x000006e0, + 0x000006a0, + 0x000006a8, + 0x000006f8, + 0x00000698, + 0x000006d8, + 0x000006f0, + 0x00000208, + 0x00000268, + 0x00000210, + 0x00000248, + 0x00000238, + 0x00000250, + 0x00000230, + 0x00000200, + 0x00000240, + 0x00000260, + 0x00000220, + 0x00000228, + 0x00000278, + 0x00000218, + 0x00000258, + 0x00000270, + } }; -const struct gost28147_param gost28147_param_CryptoPro_B = { - 1, - { - /* 0 */ - 0x00004000, 0x00002000, 0x00005800, 0x00000800, - 0x00001800, 0x00002800, 0x00000000, 0x00004800, - 0x00001000, 0x00007000, 0x00005000, 0x00006000, - 0x00006800, 0x00003000, 0x00003800, 0x00007800, - 0x0000c000, 0x0000a000, 0x0000d800, 0x00008800, - 0x00009800, 0x0000a800, 0x00008000, 0x0000c800, - 0x00009000, 0x0000f000, 0x0000d000, 0x0000e000, - 0x0000e800, 0x0000b000, 0x0000b800, 0x0000f800, - 0x00014000, 0x00012000, 0x00015800, 0x00010800, - 0x00011800, 0x00012800, 0x00010000, 0x00014800, - 0x00011000, 0x00017000, 0x00015000, 0x00016000, - 0x00016800, 0x00013000, 0x00013800, 0x00017800, - 0x00054000, 0x00052000, 0x00055800, 0x00050800, - 0x00051800, 0x00052800, 0x00050000, 0x00054800, - 0x00051000, 0x00057000, 0x00055000, 0x00056000, - 0x00056800, 0x00053000, 0x00053800, 0x00057800, - 0x00024000, 0x00022000, 0x00025800, 0x00020800, - 0x00021800, 0x00022800, 0x00020000, 0x00024800, - 0x00021000, 0x00027000, 0x00025000, 0x00026000, - 0x00026800, 0x00023000, 0x00023800, 0x00027800, - 0x0006c000, 0x0006a000, 0x0006d800, 0x00068800, - 0x00069800, 0x0006a800, 0x00068000, 0x0006c800, - 0x00069000, 0x0006f000, 0x0006d000, 0x0006e000, - 0x0006e800, 0x0006b000, 0x0006b800, 0x0006f800, - 0x0002c000, 0x0002a000, 0x0002d800, 0x00028800, - 0x00029800, 0x0002a800, 0x00028000, 0x0002c800, - 0x00029000, 0x0002f000, 0x0002d000, 0x0002e000, - 0x0002e800, 0x0002b000, 0x0002b800, 0x0002f800, - 0x00064000, 0x00062000, 0x00065800, 0x00060800, - 0x00061800, 0x00062800, 0x00060000, 0x00064800, - 0x00061000, 0x00067000, 0x00065000, 0x00066000, - 0x00066800, 0x00063000, 0x00063800, 0x00067800, - 0x0004c000, 0x0004a000, 0x0004d800, 0x00048800, - 0x00049800, 0x0004a800, 0x00048000, 0x0004c800, - 0x00049000, 0x0004f000, 0x0004d000, 0x0004e000, - 0x0004e800, 0x0004b000, 0x0004b800, 0x0004f800, - 0x0003c000, 0x0003a000, 0x0003d800, 0x00038800, - 0x00039800, 0x0003a800, 0x00038000, 0x0003c800, - 0x00039000, 0x0003f000, 0x0003d000, 0x0003e000, - 0x0003e800, 0x0003b000, 0x0003b800, 0x0003f800, - 0x0001c000, 0x0001a000, 0x0001d800, 0x00018800, - 0x00019800, 0x0001a800, 0x00018000, 0x0001c800, - 0x00019000, 0x0001f000, 0x0001d000, 0x0001e000, - 0x0001e800, 0x0001b000, 0x0001b800, 0x0001f800, - 0x0007c000, 0x0007a000, 0x0007d800, 0x00078800, - 0x00079800, 0x0007a800, 0x00078000, 0x0007c800, - 0x00079000, 0x0007f000, 0x0007d000, 0x0007e000, - 0x0007e800, 0x0007b000, 0x0007b800, 0x0007f800, - 0x0005c000, 0x0005a000, 0x0005d800, 0x00058800, - 0x00059800, 0x0005a800, 0x00058000, 0x0005c800, - 0x00059000, 0x0005f000, 0x0005d000, 0x0005e000, - 0x0005e800, 0x0005b000, 0x0005b800, 0x0005f800, - 0x00044000, 0x00042000, 0x00045800, 0x00040800, - 0x00041800, 0x00042800, 0x00040000, 0x00044800, - 0x00041000, 0x00047000, 0x00045000, 0x00046000, - 0x00046800, 0x00043000, 0x00043800, 0x00047800, - 0x00034000, 0x00032000, 0x00035800, 0x00030800, - 0x00031800, 0x00032800, 0x00030000, 0x00034800, - 0x00031000, 0x00037000, 0x00035000, 0x00036000, - 0x00036800, 0x00033000, 0x00033800, 0x00037800, - 0x00074000, 0x00072000, 0x00075800, 0x00070800, - 0x00071800, 0x00072800, 0x00070000, 0x00074800, - 0x00071000, 0x00077000, 0x00075000, 0x00076000, - 0x00076800, 0x00073000, 0x00073800, 0x00077800, - /* 1 */ - 0x03f00000, 0x03e00000, 0x03800000, 0x03d00000, - 0x03c80000, 0x03900000, 0x03e80000, 0x03d80000, - 0x03b80000, 0x03a80000, 0x03c00000, 0x03f80000, - 0x03980000, 0x03b00000, 0x03880000, 0x03a00000, - 0x02f00000, 0x02e00000, 0x02800000, 0x02d00000, - 0x02c80000, 0x02900000, 0x02e80000, 0x02d80000, - 0x02b80000, 0x02a80000, 0x02c00000, 0x02f80000, - 0x02980000, 0x02b00000, 0x02880000, 0x02a00000, - 0x00700000, 0x00600000, 0x00000000, 0x00500000, - 0x00480000, 0x00100000, 0x00680000, 0x00580000, - 0x00380000, 0x00280000, 0x00400000, 0x00780000, - 0x00180000, 0x00300000, 0x00080000, 0x00200000, - 0x06f00000, 0x06e00000, 0x06800000, 0x06d00000, - 0x06c80000, 0x06900000, 0x06e80000, 0x06d80000, - 0x06b80000, 0x06a80000, 0x06c00000, 0x06f80000, - 0x06980000, 0x06b00000, 0x06880000, 0x06a00000, - 0x05f00000, 0x05e00000, 0x05800000, 0x05d00000, - 0x05c80000, 0x05900000, 0x05e80000, 0x05d80000, - 0x05b80000, 0x05a80000, 0x05c00000, 0x05f80000, - 0x05980000, 0x05b00000, 0x05880000, 0x05a00000, - 0x03700000, 0x03600000, 0x03000000, 0x03500000, - 0x03480000, 0x03100000, 0x03680000, 0x03580000, - 0x03380000, 0x03280000, 0x03400000, 0x03780000, - 0x03180000, 0x03300000, 0x03080000, 0x03200000, - 0x00f00000, 0x00e00000, 0x00800000, 0x00d00000, - 0x00c80000, 0x00900000, 0x00e80000, 0x00d80000, - 0x00b80000, 0x00a80000, 0x00c00000, 0x00f80000, - 0x00980000, 0x00b00000, 0x00880000, 0x00a00000, - 0x01700000, 0x01600000, 0x01000000, 0x01500000, - 0x01480000, 0x01100000, 0x01680000, 0x01580000, - 0x01380000, 0x01280000, 0x01400000, 0x01780000, - 0x01180000, 0x01300000, 0x01080000, 0x01200000, - 0x01f00000, 0x01e00000, 0x01800000, 0x01d00000, - 0x01c80000, 0x01900000, 0x01e80000, 0x01d80000, - 0x01b80000, 0x01a80000, 0x01c00000, 0x01f80000, - 0x01980000, 0x01b00000, 0x01880000, 0x01a00000, - 0x05700000, 0x05600000, 0x05000000, 0x05500000, - 0x05480000, 0x05100000, 0x05680000, 0x05580000, - 0x05380000, 0x05280000, 0x05400000, 0x05780000, - 0x05180000, 0x05300000, 0x05080000, 0x05200000, - 0x06700000, 0x06600000, 0x06000000, 0x06500000, - 0x06480000, 0x06100000, 0x06680000, 0x06580000, - 0x06380000, 0x06280000, 0x06400000, 0x06780000, - 0x06180000, 0x06300000, 0x06080000, 0x06200000, - 0x07f00000, 0x07e00000, 0x07800000, 0x07d00000, - 0x07c80000, 0x07900000, 0x07e80000, 0x07d80000, - 0x07b80000, 0x07a80000, 0x07c00000, 0x07f80000, - 0x07980000, 0x07b00000, 0x07880000, 0x07a00000, - 0x02700000, 0x02600000, 0x02000000, 0x02500000, - 0x02480000, 0x02100000, 0x02680000, 0x02580000, - 0x02380000, 0x02280000, 0x02400000, 0x02780000, - 0x02180000, 0x02300000, 0x02080000, 0x02200000, - 0x07700000, 0x07600000, 0x07000000, 0x07500000, - 0x07480000, 0x07100000, 0x07680000, 0x07580000, - 0x07380000, 0x07280000, 0x07400000, 0x07780000, - 0x07180000, 0x07300000, 0x07080000, 0x07200000, - 0x04f00000, 0x04e00000, 0x04800000, 0x04d00000, - 0x04c80000, 0x04900000, 0x04e80000, 0x04d80000, - 0x04b80000, 0x04a80000, 0x04c00000, 0x04f80000, - 0x04980000, 0x04b00000, 0x04880000, 0x04a00000, - 0x04700000, 0x04600000, 0x04000000, 0x04500000, - 0x04480000, 0x04100000, 0x04680000, 0x04580000, - 0x04380000, 0x04280000, 0x04400000, 0x04780000, - 0x04180000, 0x04300000, 0x04080000, 0x04200000, - /* 2 */ - 0x10000004, 0x38000004, 0x60000004, 0x78000004, - 0x48000004, 0x28000004, 0x50000004, 0x58000004, - 0x08000004, 0x20000004, 0x00000004, 0x68000004, - 0x30000004, 0x40000004, 0x70000004, 0x18000004, - 0x90000001, 0xb8000001, 0xe0000001, 0xf8000001, - 0xc8000001, 0xa8000001, 0xd0000001, 0xd8000001, - 0x88000001, 0xa0000001, 0x80000001, 0xe8000001, - 0xb0000001, 0xc0000001, 0xf0000001, 0x98000001, - 0x10000001, 0x38000001, 0x60000001, 0x78000001, - 0x48000001, 0x28000001, 0x50000001, 0x58000001, - 0x08000001, 0x20000001, 0x00000001, 0x68000001, - 0x30000001, 0x40000001, 0x70000001, 0x18000001, - 0x10000003, 0x38000003, 0x60000003, 0x78000003, - 0x48000003, 0x28000003, 0x50000003, 0x58000003, - 0x08000003, 0x20000003, 0x00000003, 0x68000003, - 0x30000003, 0x40000003, 0x70000003, 0x18000003, - 0x10000002, 0x38000002, 0x60000002, 0x78000002, - 0x48000002, 0x28000002, 0x50000002, 0x58000002, - 0x08000002, 0x20000002, 0x00000002, 0x68000002, - 0x30000002, 0x40000002, 0x70000002, 0x18000002, - 0x90000006, 0xb8000006, 0xe0000006, 0xf8000006, - 0xc8000006, 0xa8000006, 0xd0000006, 0xd8000006, - 0x88000006, 0xa0000006, 0x80000006, 0xe8000006, - 0xb0000006, 0xc0000006, 0xf0000006, 0x98000006, - 0x10000007, 0x38000007, 0x60000007, 0x78000007, - 0x48000007, 0x28000007, 0x50000007, 0x58000007, - 0x08000007, 0x20000007, 0x00000007, 0x68000007, - 0x30000007, 0x40000007, 0x70000007, 0x18000007, - 0x90000005, 0xb8000005, 0xe0000005, 0xf8000005, - 0xc8000005, 0xa8000005, 0xd0000005, 0xd8000005, - 0x88000005, 0xa0000005, 0x80000005, 0xe8000005, - 0xb0000005, 0xc0000005, 0xf0000005, 0x98000005, - 0x10000006, 0x38000006, 0x60000006, 0x78000006, - 0x48000006, 0x28000006, 0x50000006, 0x58000006, - 0x08000006, 0x20000006, 0x00000006, 0x68000006, - 0x30000006, 0x40000006, 0x70000006, 0x18000006, - 0x90000000, 0xb8000000, 0xe0000000, 0xf8000000, - 0xc8000000, 0xa8000000, 0xd0000000, 0xd8000000, - 0x88000000, 0xa0000000, 0x80000000, 0xe8000000, - 0xb0000000, 0xc0000000, 0xf0000000, 0x98000000, - 0x90000003, 0xb8000003, 0xe0000003, 0xf8000003, - 0xc8000003, 0xa8000003, 0xd0000003, 0xd8000003, - 0x88000003, 0xa0000003, 0x80000003, 0xe8000003, - 0xb0000003, 0xc0000003, 0xf0000003, 0x98000003, - 0x90000007, 0xb8000007, 0xe0000007, 0xf8000007, - 0xc8000007, 0xa8000007, 0xd0000007, 0xd8000007, - 0x88000007, 0xa0000007, 0x80000007, 0xe8000007, - 0xb0000007, 0xc0000007, 0xf0000007, 0x98000007, - 0x10000005, 0x38000005, 0x60000005, 0x78000005, - 0x48000005, 0x28000005, 0x50000005, 0x58000005, - 0x08000005, 0x20000005, 0x00000005, 0x68000005, - 0x30000005, 0x40000005, 0x70000005, 0x18000005, - 0x10000000, 0x38000000, 0x60000000, 0x78000000, - 0x48000000, 0x28000000, 0x50000000, 0x58000000, - 0x08000000, 0x20000000, 0x00000000, 0x68000000, - 0x30000000, 0x40000000, 0x70000000, 0x18000000, - 0x90000004, 0xb8000004, 0xe0000004, 0xf8000004, - 0xc8000004, 0xa8000004, 0xd0000004, 0xd8000004, - 0x88000004, 0xa0000004, 0x80000004, 0xe8000004, - 0xb0000004, 0xc0000004, 0xf0000004, 0x98000004, - 0x90000002, 0xb8000002, 0xe0000002, 0xf8000002, - 0xc8000002, 0xa8000002, 0xd0000002, 0xd8000002, - 0x88000002, 0xa0000002, 0x80000002, 0xe8000002, - 0xb0000002, 0xc0000002, 0xf0000002, 0x98000002, - /* 3 */ - 0x00000028, 0x00000010, 0x00000050, 0x00000058, - 0x00000048, 0x00000008, 0x00000060, 0x00000018, - 0x00000038, 0x00000020, 0x00000068, 0x00000000, - 0x00000030, 0x00000078, 0x00000040, 0x00000070, - 0x00000228, 0x00000210, 0x00000250, 0x00000258, - 0x00000248, 0x00000208, 0x00000260, 0x00000218, - 0x00000238, 0x00000220, 0x00000268, 0x00000200, - 0x00000230, 0x00000278, 0x00000240, 0x00000270, - 0x000005a8, 0x00000590, 0x000005d0, 0x000005d8, - 0x000005c8, 0x00000588, 0x000005e0, 0x00000598, - 0x000005b8, 0x000005a0, 0x000005e8, 0x00000580, - 0x000005b0, 0x000005f8, 0x000005c0, 0x000005f0, - 0x00000728, 0x00000710, 0x00000750, 0x00000758, - 0x00000748, 0x00000708, 0x00000760, 0x00000718, - 0x00000738, 0x00000720, 0x00000768, 0x00000700, - 0x00000730, 0x00000778, 0x00000740, 0x00000770, - 0x00000428, 0x00000410, 0x00000450, 0x00000458, - 0x00000448, 0x00000408, 0x00000460, 0x00000418, - 0x00000438, 0x00000420, 0x00000468, 0x00000400, - 0x00000430, 0x00000478, 0x00000440, 0x00000470, - 0x000001a8, 0x00000190, 0x000001d0, 0x000001d8, - 0x000001c8, 0x00000188, 0x000001e0, 0x00000198, - 0x000001b8, 0x000001a0, 0x000001e8, 0x00000180, - 0x000001b0, 0x000001f8, 0x000001c0, 0x000001f0, - 0x000003a8, 0x00000390, 0x000003d0, 0x000003d8, - 0x000003c8, 0x00000388, 0x000003e0, 0x00000398, - 0x000003b8, 0x000003a0, 0x000003e8, 0x00000380, - 0x000003b0, 0x000003f8, 0x000003c0, 0x000003f0, - 0x000000a8, 0x00000090, 0x000000d0, 0x000000d8, - 0x000000c8, 0x00000088, 0x000000e0, 0x00000098, - 0x000000b8, 0x000000a0, 0x000000e8, 0x00000080, - 0x000000b0, 0x000000f8, 0x000000c0, 0x000000f0, - 0x00000528, 0x00000510, 0x00000550, 0x00000558, - 0x00000548, 0x00000508, 0x00000560, 0x00000518, - 0x00000538, 0x00000520, 0x00000568, 0x00000500, - 0x00000530, 0x00000578, 0x00000540, 0x00000570, - 0x00000128, 0x00000110, 0x00000150, 0x00000158, - 0x00000148, 0x00000108, 0x00000160, 0x00000118, - 0x00000138, 0x00000120, 0x00000168, 0x00000100, - 0x00000130, 0x00000178, 0x00000140, 0x00000170, - 0x000004a8, 0x00000490, 0x000004d0, 0x000004d8, - 0x000004c8, 0x00000488, 0x000004e0, 0x00000498, - 0x000004b8, 0x000004a0, 0x000004e8, 0x00000480, - 0x000004b0, 0x000004f8, 0x000004c0, 0x000004f0, - 0x00000328, 0x00000310, 0x00000350, 0x00000358, - 0x00000348, 0x00000308, 0x00000360, 0x00000318, - 0x00000338, 0x00000320, 0x00000368, 0x00000300, - 0x00000330, 0x00000378, 0x00000340, 0x00000370, - 0x000007a8, 0x00000790, 0x000007d0, 0x000007d8, - 0x000007c8, 0x00000788, 0x000007e0, 0x00000798, - 0x000007b8, 0x000007a0, 0x000007e8, 0x00000780, - 0x000007b0, 0x000007f8, 0x000007c0, 0x000007f0, - 0x000006a8, 0x00000690, 0x000006d0, 0x000006d8, - 0x000006c8, 0x00000688, 0x000006e0, 0x00000698, - 0x000006b8, 0x000006a0, 0x000006e8, 0x00000680, - 0x000006b0, 0x000006f8, 0x000006c0, 0x000006f0, - 0x000002a8, 0x00000290, 0x000002d0, 0x000002d8, - 0x000002c8, 0x00000288, 0x000002e0, 0x00000298, - 0x000002b8, 0x000002a0, 0x000002e8, 0x00000280, - 0x000002b0, 0x000002f8, 0x000002c0, 0x000002f0, - 0x00000628, 0x00000610, 0x00000650, 0x00000658, - 0x00000648, 0x00000608, 0x00000660, 0x00000618, - 0x00000638, 0x00000620, 0x00000668, 0x00000600, - 0x00000630, 0x00000678, 0x00000640, 0x00000670, - } -}; +const struct gost28147_param gost28147_param_CryptoPro_B = { 1, + { + /* 0 */ + 0x00004000, + 0x00002000, + 0x00005800, + 0x00000800, + 0x00001800, + 0x00002800, + 0x00000000, + 0x00004800, + 0x00001000, + 0x00007000, + 0x00005000, + 0x00006000, + 0x00006800, + 0x00003000, + 0x00003800, + 0x00007800, + 0x0000c000, + 0x0000a000, + 0x0000d800, + 0x00008800, + 0x00009800, + 0x0000a800, + 0x00008000, + 0x0000c800, + 0x00009000, + 0x0000f000, + 0x0000d000, + 0x0000e000, + 0x0000e800, + 0x0000b000, + 0x0000b800, + 0x0000f800, + 0x00014000, + 0x00012000, + 0x00015800, + 0x00010800, + 0x00011800, + 0x00012800, + 0x00010000, + 0x00014800, + 0x00011000, + 0x00017000, + 0x00015000, + 0x00016000, + 0x00016800, + 0x00013000, + 0x00013800, + 0x00017800, + 0x00054000, + 0x00052000, + 0x00055800, + 0x00050800, + 0x00051800, + 0x00052800, + 0x00050000, + 0x00054800, + 0x00051000, + 0x00057000, + 0x00055000, + 0x00056000, + 0x00056800, + 0x00053000, + 0x00053800, + 0x00057800, + 0x00024000, + 0x00022000, + 0x00025800, + 0x00020800, + 0x00021800, + 0x00022800, + 0x00020000, + 0x00024800, + 0x00021000, + 0x00027000, + 0x00025000, + 0x00026000, + 0x00026800, + 0x00023000, + 0x00023800, + 0x00027800, + 0x0006c000, + 0x0006a000, + 0x0006d800, + 0x00068800, + 0x00069800, + 0x0006a800, + 0x00068000, + 0x0006c800, + 0x00069000, + 0x0006f000, + 0x0006d000, + 0x0006e000, + 0x0006e800, + 0x0006b000, + 0x0006b800, + 0x0006f800, + 0x0002c000, + 0x0002a000, + 0x0002d800, + 0x00028800, + 0x00029800, + 0x0002a800, + 0x00028000, + 0x0002c800, + 0x00029000, + 0x0002f000, + 0x0002d000, + 0x0002e000, + 0x0002e800, + 0x0002b000, + 0x0002b800, + 0x0002f800, + 0x00064000, + 0x00062000, + 0x00065800, + 0x00060800, + 0x00061800, + 0x00062800, + 0x00060000, + 0x00064800, + 0x00061000, + 0x00067000, + 0x00065000, + 0x00066000, + 0x00066800, + 0x00063000, + 0x00063800, + 0x00067800, + 0x0004c000, + 0x0004a000, + 0x0004d800, + 0x00048800, + 0x00049800, + 0x0004a800, + 0x00048000, + 0x0004c800, + 0x00049000, + 0x0004f000, + 0x0004d000, + 0x0004e000, + 0x0004e800, + 0x0004b000, + 0x0004b800, + 0x0004f800, + 0x0003c000, + 0x0003a000, + 0x0003d800, + 0x00038800, + 0x00039800, + 0x0003a800, + 0x00038000, + 0x0003c800, + 0x00039000, + 0x0003f000, + 0x0003d000, + 0x0003e000, + 0x0003e800, + 0x0003b000, + 0x0003b800, + 0x0003f800, + 0x0001c000, + 0x0001a000, + 0x0001d800, + 0x00018800, + 0x00019800, + 0x0001a800, + 0x00018000, + 0x0001c800, + 0x00019000, + 0x0001f000, + 0x0001d000, + 0x0001e000, + 0x0001e800, + 0x0001b000, + 0x0001b800, + 0x0001f800, + 0x0007c000, + 0x0007a000, + 0x0007d800, + 0x00078800, + 0x00079800, + 0x0007a800, + 0x00078000, + 0x0007c800, + 0x00079000, + 0x0007f000, + 0x0007d000, + 0x0007e000, + 0x0007e800, + 0x0007b000, + 0x0007b800, + 0x0007f800, + 0x0005c000, + 0x0005a000, + 0x0005d800, + 0x00058800, + 0x00059800, + 0x0005a800, + 0x00058000, + 0x0005c800, + 0x00059000, + 0x0005f000, + 0x0005d000, + 0x0005e000, + 0x0005e800, + 0x0005b000, + 0x0005b800, + 0x0005f800, + 0x00044000, + 0x00042000, + 0x00045800, + 0x00040800, + 0x00041800, + 0x00042800, + 0x00040000, + 0x00044800, + 0x00041000, + 0x00047000, + 0x00045000, + 0x00046000, + 0x00046800, + 0x00043000, + 0x00043800, + 0x00047800, + 0x00034000, + 0x00032000, + 0x00035800, + 0x00030800, + 0x00031800, + 0x00032800, + 0x00030000, + 0x00034800, + 0x00031000, + 0x00037000, + 0x00035000, + 0x00036000, + 0x00036800, + 0x00033000, + 0x00033800, + 0x00037800, + 0x00074000, + 0x00072000, + 0x00075800, + 0x00070800, + 0x00071800, + 0x00072800, + 0x00070000, + 0x00074800, + 0x00071000, + 0x00077000, + 0x00075000, + 0x00076000, + 0x00076800, + 0x00073000, + 0x00073800, + 0x00077800, + /* 1 */ + 0x03f00000, + 0x03e00000, + 0x03800000, + 0x03d00000, + 0x03c80000, + 0x03900000, + 0x03e80000, + 0x03d80000, + 0x03b80000, + 0x03a80000, + 0x03c00000, + 0x03f80000, + 0x03980000, + 0x03b00000, + 0x03880000, + 0x03a00000, + 0x02f00000, + 0x02e00000, + 0x02800000, + 0x02d00000, + 0x02c80000, + 0x02900000, + 0x02e80000, + 0x02d80000, + 0x02b80000, + 0x02a80000, + 0x02c00000, + 0x02f80000, + 0x02980000, + 0x02b00000, + 0x02880000, + 0x02a00000, + 0x00700000, + 0x00600000, + 0x00000000, + 0x00500000, + 0x00480000, + 0x00100000, + 0x00680000, + 0x00580000, + 0x00380000, + 0x00280000, + 0x00400000, + 0x00780000, + 0x00180000, + 0x00300000, + 0x00080000, + 0x00200000, + 0x06f00000, + 0x06e00000, + 0x06800000, + 0x06d00000, + 0x06c80000, + 0x06900000, + 0x06e80000, + 0x06d80000, + 0x06b80000, + 0x06a80000, + 0x06c00000, + 0x06f80000, + 0x06980000, + 0x06b00000, + 0x06880000, + 0x06a00000, + 0x05f00000, + 0x05e00000, + 0x05800000, + 0x05d00000, + 0x05c80000, + 0x05900000, + 0x05e80000, + 0x05d80000, + 0x05b80000, + 0x05a80000, + 0x05c00000, + 0x05f80000, + 0x05980000, + 0x05b00000, + 0x05880000, + 0x05a00000, + 0x03700000, + 0x03600000, + 0x03000000, + 0x03500000, + 0x03480000, + 0x03100000, + 0x03680000, + 0x03580000, + 0x03380000, + 0x03280000, + 0x03400000, + 0x03780000, + 0x03180000, + 0x03300000, + 0x03080000, + 0x03200000, + 0x00f00000, + 0x00e00000, + 0x00800000, + 0x00d00000, + 0x00c80000, + 0x00900000, + 0x00e80000, + 0x00d80000, + 0x00b80000, + 0x00a80000, + 0x00c00000, + 0x00f80000, + 0x00980000, + 0x00b00000, + 0x00880000, + 0x00a00000, + 0x01700000, + 0x01600000, + 0x01000000, + 0x01500000, + 0x01480000, + 0x01100000, + 0x01680000, + 0x01580000, + 0x01380000, + 0x01280000, + 0x01400000, + 0x01780000, + 0x01180000, + 0x01300000, + 0x01080000, + 0x01200000, + 0x01f00000, + 0x01e00000, + 0x01800000, + 0x01d00000, + 0x01c80000, + 0x01900000, + 0x01e80000, + 0x01d80000, + 0x01b80000, + 0x01a80000, + 0x01c00000, + 0x01f80000, + 0x01980000, + 0x01b00000, + 0x01880000, + 0x01a00000, + 0x05700000, + 0x05600000, + 0x05000000, + 0x05500000, + 0x05480000, + 0x05100000, + 0x05680000, + 0x05580000, + 0x05380000, + 0x05280000, + 0x05400000, + 0x05780000, + 0x05180000, + 0x05300000, + 0x05080000, + 0x05200000, + 0x06700000, + 0x06600000, + 0x06000000, + 0x06500000, + 0x06480000, + 0x06100000, + 0x06680000, + 0x06580000, + 0x06380000, + 0x06280000, + 0x06400000, + 0x06780000, + 0x06180000, + 0x06300000, + 0x06080000, + 0x06200000, + 0x07f00000, + 0x07e00000, + 0x07800000, + 0x07d00000, + 0x07c80000, + 0x07900000, + 0x07e80000, + 0x07d80000, + 0x07b80000, + 0x07a80000, + 0x07c00000, + 0x07f80000, + 0x07980000, + 0x07b00000, + 0x07880000, + 0x07a00000, + 0x02700000, + 0x02600000, + 0x02000000, + 0x02500000, + 0x02480000, + 0x02100000, + 0x02680000, + 0x02580000, + 0x02380000, + 0x02280000, + 0x02400000, + 0x02780000, + 0x02180000, + 0x02300000, + 0x02080000, + 0x02200000, + 0x07700000, + 0x07600000, + 0x07000000, + 0x07500000, + 0x07480000, + 0x07100000, + 0x07680000, + 0x07580000, + 0x07380000, + 0x07280000, + 0x07400000, + 0x07780000, + 0x07180000, + 0x07300000, + 0x07080000, + 0x07200000, + 0x04f00000, + 0x04e00000, + 0x04800000, + 0x04d00000, + 0x04c80000, + 0x04900000, + 0x04e80000, + 0x04d80000, + 0x04b80000, + 0x04a80000, + 0x04c00000, + 0x04f80000, + 0x04980000, + 0x04b00000, + 0x04880000, + 0x04a00000, + 0x04700000, + 0x04600000, + 0x04000000, + 0x04500000, + 0x04480000, + 0x04100000, + 0x04680000, + 0x04580000, + 0x04380000, + 0x04280000, + 0x04400000, + 0x04780000, + 0x04180000, + 0x04300000, + 0x04080000, + 0x04200000, + /* 2 */ + 0x10000004, + 0x38000004, + 0x60000004, + 0x78000004, + 0x48000004, + 0x28000004, + 0x50000004, + 0x58000004, + 0x08000004, + 0x20000004, + 0x00000004, + 0x68000004, + 0x30000004, + 0x40000004, + 0x70000004, + 0x18000004, + 0x90000001, + 0xb8000001, + 0xe0000001, + 0xf8000001, + 0xc8000001, + 0xa8000001, + 0xd0000001, + 0xd8000001, + 0x88000001, + 0xa0000001, + 0x80000001, + 0xe8000001, + 0xb0000001, + 0xc0000001, + 0xf0000001, + 0x98000001, + 0x10000001, + 0x38000001, + 0x60000001, + 0x78000001, + 0x48000001, + 0x28000001, + 0x50000001, + 0x58000001, + 0x08000001, + 0x20000001, + 0x00000001, + 0x68000001, + 0x30000001, + 0x40000001, + 0x70000001, + 0x18000001, + 0x10000003, + 0x38000003, + 0x60000003, + 0x78000003, + 0x48000003, + 0x28000003, + 0x50000003, + 0x58000003, + 0x08000003, + 0x20000003, + 0x00000003, + 0x68000003, + 0x30000003, + 0x40000003, + 0x70000003, + 0x18000003, + 0x10000002, + 0x38000002, + 0x60000002, + 0x78000002, + 0x48000002, + 0x28000002, + 0x50000002, + 0x58000002, + 0x08000002, + 0x20000002, + 0x00000002, + 0x68000002, + 0x30000002, + 0x40000002, + 0x70000002, + 0x18000002, + 0x90000006, + 0xb8000006, + 0xe0000006, + 0xf8000006, + 0xc8000006, + 0xa8000006, + 0xd0000006, + 0xd8000006, + 0x88000006, + 0xa0000006, + 0x80000006, + 0xe8000006, + 0xb0000006, + 0xc0000006, + 0xf0000006, + 0x98000006, + 0x10000007, + 0x38000007, + 0x60000007, + 0x78000007, + 0x48000007, + 0x28000007, + 0x50000007, + 0x58000007, + 0x08000007, + 0x20000007, + 0x00000007, + 0x68000007, + 0x30000007, + 0x40000007, + 0x70000007, + 0x18000007, + 0x90000005, + 0xb8000005, + 0xe0000005, + 0xf8000005, + 0xc8000005, + 0xa8000005, + 0xd0000005, + 0xd8000005, + 0x88000005, + 0xa0000005, + 0x80000005, + 0xe8000005, + 0xb0000005, + 0xc0000005, + 0xf0000005, + 0x98000005, + 0x10000006, + 0x38000006, + 0x60000006, + 0x78000006, + 0x48000006, + 0x28000006, + 0x50000006, + 0x58000006, + 0x08000006, + 0x20000006, + 0x00000006, + 0x68000006, + 0x30000006, + 0x40000006, + 0x70000006, + 0x18000006, + 0x90000000, + 0xb8000000, + 0xe0000000, + 0xf8000000, + 0xc8000000, + 0xa8000000, + 0xd0000000, + 0xd8000000, + 0x88000000, + 0xa0000000, + 0x80000000, + 0xe8000000, + 0xb0000000, + 0xc0000000, + 0xf0000000, + 0x98000000, + 0x90000003, + 0xb8000003, + 0xe0000003, + 0xf8000003, + 0xc8000003, + 0xa8000003, + 0xd0000003, + 0xd8000003, + 0x88000003, + 0xa0000003, + 0x80000003, + 0xe8000003, + 0xb0000003, + 0xc0000003, + 0xf0000003, + 0x98000003, + 0x90000007, + 0xb8000007, + 0xe0000007, + 0xf8000007, + 0xc8000007, + 0xa8000007, + 0xd0000007, + 0xd8000007, + 0x88000007, + 0xa0000007, + 0x80000007, + 0xe8000007, + 0xb0000007, + 0xc0000007, + 0xf0000007, + 0x98000007, + 0x10000005, + 0x38000005, + 0x60000005, + 0x78000005, + 0x48000005, + 0x28000005, + 0x50000005, + 0x58000005, + 0x08000005, + 0x20000005, + 0x00000005, + 0x68000005, + 0x30000005, + 0x40000005, + 0x70000005, + 0x18000005, + 0x10000000, + 0x38000000, + 0x60000000, + 0x78000000, + 0x48000000, + 0x28000000, + 0x50000000, + 0x58000000, + 0x08000000, + 0x20000000, + 0x00000000, + 0x68000000, + 0x30000000, + 0x40000000, + 0x70000000, + 0x18000000, + 0x90000004, + 0xb8000004, + 0xe0000004, + 0xf8000004, + 0xc8000004, + 0xa8000004, + 0xd0000004, + 0xd8000004, + 0x88000004, + 0xa0000004, + 0x80000004, + 0xe8000004, + 0xb0000004, + 0xc0000004, + 0xf0000004, + 0x98000004, + 0x90000002, + 0xb8000002, + 0xe0000002, + 0xf8000002, + 0xc8000002, + 0xa8000002, + 0xd0000002, + 0xd8000002, + 0x88000002, + 0xa0000002, + 0x80000002, + 0xe8000002, + 0xb0000002, + 0xc0000002, + 0xf0000002, + 0x98000002, + /* 3 */ + 0x00000028, + 0x00000010, + 0x00000050, + 0x00000058, + 0x00000048, + 0x00000008, + 0x00000060, + 0x00000018, + 0x00000038, + 0x00000020, + 0x00000068, + 0x00000000, + 0x00000030, + 0x00000078, + 0x00000040, + 0x00000070, + 0x00000228, + 0x00000210, + 0x00000250, + 0x00000258, + 0x00000248, + 0x00000208, + 0x00000260, + 0x00000218, + 0x00000238, + 0x00000220, + 0x00000268, + 0x00000200, + 0x00000230, + 0x00000278, + 0x00000240, + 0x00000270, + 0x000005a8, + 0x00000590, + 0x000005d0, + 0x000005d8, + 0x000005c8, + 0x00000588, + 0x000005e0, + 0x00000598, + 0x000005b8, + 0x000005a0, + 0x000005e8, + 0x00000580, + 0x000005b0, + 0x000005f8, + 0x000005c0, + 0x000005f0, + 0x00000728, + 0x00000710, + 0x00000750, + 0x00000758, + 0x00000748, + 0x00000708, + 0x00000760, + 0x00000718, + 0x00000738, + 0x00000720, + 0x00000768, + 0x00000700, + 0x00000730, + 0x00000778, + 0x00000740, + 0x00000770, + 0x00000428, + 0x00000410, + 0x00000450, + 0x00000458, + 0x00000448, + 0x00000408, + 0x00000460, + 0x00000418, + 0x00000438, + 0x00000420, + 0x00000468, + 0x00000400, + 0x00000430, + 0x00000478, + 0x00000440, + 0x00000470, + 0x000001a8, + 0x00000190, + 0x000001d0, + 0x000001d8, + 0x000001c8, + 0x00000188, + 0x000001e0, + 0x00000198, + 0x000001b8, + 0x000001a0, + 0x000001e8, + 0x00000180, + 0x000001b0, + 0x000001f8, + 0x000001c0, + 0x000001f0, + 0x000003a8, + 0x00000390, + 0x000003d0, + 0x000003d8, + 0x000003c8, + 0x00000388, + 0x000003e0, + 0x00000398, + 0x000003b8, + 0x000003a0, + 0x000003e8, + 0x00000380, + 0x000003b0, + 0x000003f8, + 0x000003c0, + 0x000003f0, + 0x000000a8, + 0x00000090, + 0x000000d0, + 0x000000d8, + 0x000000c8, + 0x00000088, + 0x000000e0, + 0x00000098, + 0x000000b8, + 0x000000a0, + 0x000000e8, + 0x00000080, + 0x000000b0, + 0x000000f8, + 0x000000c0, + 0x000000f0, + 0x00000528, + 0x00000510, + 0x00000550, + 0x00000558, + 0x00000548, + 0x00000508, + 0x00000560, + 0x00000518, + 0x00000538, + 0x00000520, + 0x00000568, + 0x00000500, + 0x00000530, + 0x00000578, + 0x00000540, + 0x00000570, + 0x00000128, + 0x00000110, + 0x00000150, + 0x00000158, + 0x00000148, + 0x00000108, + 0x00000160, + 0x00000118, + 0x00000138, + 0x00000120, + 0x00000168, + 0x00000100, + 0x00000130, + 0x00000178, + 0x00000140, + 0x00000170, + 0x000004a8, + 0x00000490, + 0x000004d0, + 0x000004d8, + 0x000004c8, + 0x00000488, + 0x000004e0, + 0x00000498, + 0x000004b8, + 0x000004a0, + 0x000004e8, + 0x00000480, + 0x000004b0, + 0x000004f8, + 0x000004c0, + 0x000004f0, + 0x00000328, + 0x00000310, + 0x00000350, + 0x00000358, + 0x00000348, + 0x00000308, + 0x00000360, + 0x00000318, + 0x00000338, + 0x00000320, + 0x00000368, + 0x00000300, + 0x00000330, + 0x00000378, + 0x00000340, + 0x00000370, + 0x000007a8, + 0x00000790, + 0x000007d0, + 0x000007d8, + 0x000007c8, + 0x00000788, + 0x000007e0, + 0x00000798, + 0x000007b8, + 0x000007a0, + 0x000007e8, + 0x00000780, + 0x000007b0, + 0x000007f8, + 0x000007c0, + 0x000007f0, + 0x000006a8, + 0x00000690, + 0x000006d0, + 0x000006d8, + 0x000006c8, + 0x00000688, + 0x000006e0, + 0x00000698, + 0x000006b8, + 0x000006a0, + 0x000006e8, + 0x00000680, + 0x000006b0, + 0x000006f8, + 0x000006c0, + 0x000006f0, + 0x000002a8, + 0x00000290, + 0x000002d0, + 0x000002d8, + 0x000002c8, + 0x00000288, + 0x000002e0, + 0x00000298, + 0x000002b8, + 0x000002a0, + 0x000002e8, + 0x00000280, + 0x000002b0, + 0x000002f8, + 0x000002c0, + 0x000002f0, + 0x00000628, + 0x00000610, + 0x00000650, + 0x00000658, + 0x00000648, + 0x00000608, + 0x00000660, + 0x00000618, + 0x00000638, + 0x00000620, + 0x00000668, + 0x00000600, + 0x00000630, + 0x00000678, + 0x00000640, + 0x00000670, + } }; -const struct gost28147_param gost28147_param_CryptoPro_C = { - 1, - { - /* 0 */ - 0x00000800, 0x00005800, 0x00006000, 0x00001000, - 0x00004800, 0x00006800, 0x00000000, 0x00007800, - 0x00002000, 0x00002800, 0x00004000, 0x00007000, - 0x00005000, 0x00003800, 0x00003000, 0x00001800, - 0x00008800, 0x0000d800, 0x0000e000, 0x00009000, - 0x0000c800, 0x0000e800, 0x00008000, 0x0000f800, - 0x0000a000, 0x0000a800, 0x0000c000, 0x0000f000, - 0x0000d000, 0x0000b800, 0x0000b000, 0x00009800, - 0x00038800, 0x0003d800, 0x0003e000, 0x00039000, - 0x0003c800, 0x0003e800, 0x00038000, 0x0003f800, - 0x0003a000, 0x0003a800, 0x0003c000, 0x0003f000, - 0x0003d000, 0x0003b800, 0x0003b000, 0x00039800, - 0x00068800, 0x0006d800, 0x0006e000, 0x00069000, - 0x0006c800, 0x0006e800, 0x00068000, 0x0006f800, - 0x0006a000, 0x0006a800, 0x0006c000, 0x0006f000, - 0x0006d000, 0x0006b800, 0x0006b000, 0x00069800, - 0x00058800, 0x0005d800, 0x0005e000, 0x00059000, - 0x0005c800, 0x0005e800, 0x00058000, 0x0005f800, - 0x0005a000, 0x0005a800, 0x0005c000, 0x0005f000, - 0x0005d000, 0x0005b800, 0x0005b000, 0x00059800, - 0x00020800, 0x00025800, 0x00026000, 0x00021000, - 0x00024800, 0x00026800, 0x00020000, 0x00027800, - 0x00022000, 0x00022800, 0x00024000, 0x00027000, - 0x00025000, 0x00023800, 0x00023000, 0x00021800, - 0x00028800, 0x0002d800, 0x0002e000, 0x00029000, - 0x0002c800, 0x0002e800, 0x00028000, 0x0002f800, - 0x0002a000, 0x0002a800, 0x0002c000, 0x0002f000, - 0x0002d000, 0x0002b800, 0x0002b000, 0x00029800, - 0x00010800, 0x00015800, 0x00016000, 0x00011000, - 0x00014800, 0x00016800, 0x00010000, 0x00017800, - 0x00012000, 0x00012800, 0x00014000, 0x00017000, - 0x00015000, 0x00013800, 0x00013000, 0x00011800, - 0x00040800, 0x00045800, 0x00046000, 0x00041000, - 0x00044800, 0x00046800, 0x00040000, 0x00047800, - 0x00042000, 0x00042800, 0x00044000, 0x00047000, - 0x00045000, 0x00043800, 0x00043000, 0x00041800, - 0x00070800, 0x00075800, 0x00076000, 0x00071000, - 0x00074800, 0x00076800, 0x00070000, 0x00077800, - 0x00072000, 0x00072800, 0x00074000, 0x00077000, - 0x00075000, 0x00073800, 0x00073000, 0x00071800, - 0x00078800, 0x0007d800, 0x0007e000, 0x00079000, - 0x0007c800, 0x0007e800, 0x00078000, 0x0007f800, - 0x0007a000, 0x0007a800, 0x0007c000, 0x0007f000, - 0x0007d000, 0x0007b800, 0x0007b000, 0x00079800, - 0x00060800, 0x00065800, 0x00066000, 0x00061000, - 0x00064800, 0x00066800, 0x00060000, 0x00067800, - 0x00062000, 0x00062800, 0x00064000, 0x00067000, - 0x00065000, 0x00063800, 0x00063000, 0x00061800, - 0x00048800, 0x0004d800, 0x0004e000, 0x00049000, - 0x0004c800, 0x0004e800, 0x00048000, 0x0004f800, - 0x0004a000, 0x0004a800, 0x0004c000, 0x0004f000, - 0x0004d000, 0x0004b800, 0x0004b000, 0x00049800, - 0x00050800, 0x00055800, 0x00056000, 0x00051000, - 0x00054800, 0x00056800, 0x00050000, 0x00057800, - 0x00052000, 0x00052800, 0x00054000, 0x00057000, - 0x00055000, 0x00053800, 0x00053000, 0x00051800, - 0x00030800, 0x00035800, 0x00036000, 0x00031000, - 0x00034800, 0x00036800, 0x00030000, 0x00037800, - 0x00032000, 0x00032800, 0x00034000, 0x00037000, - 0x00035000, 0x00033800, 0x00033000, 0x00031800, - 0x00018800, 0x0001d800, 0x0001e000, 0x00019000, - 0x0001c800, 0x0001e800, 0x00018000, 0x0001f800, - 0x0001a000, 0x0001a800, 0x0001c000, 0x0001f000, - 0x0001d000, 0x0001b800, 0x0001b000, 0x00019800, - /* 1 */ - 0x01c00000, 0x01900000, 0x01a80000, 0x01800000, - 0x01a00000, 0x01c80000, 0x01f80000, 0x01d00000, - 0x01980000, 0x01b80000, 0x01e00000, 0x01e80000, - 0x01b00000, 0x01f00000, 0x01880000, 0x01d80000, - 0x03400000, 0x03100000, 0x03280000, 0x03000000, - 0x03200000, 0x03480000, 0x03780000, 0x03500000, - 0x03180000, 0x03380000, 0x03600000, 0x03680000, - 0x03300000, 0x03700000, 0x03080000, 0x03580000, - 0x00400000, 0x00100000, 0x00280000, 0x00000000, - 0x00200000, 0x00480000, 0x00780000, 0x00500000, - 0x00180000, 0x00380000, 0x00600000, 0x00680000, - 0x00300000, 0x00700000, 0x00080000, 0x00580000, - 0x00c00000, 0x00900000, 0x00a80000, 0x00800000, - 0x00a00000, 0x00c80000, 0x00f80000, 0x00d00000, - 0x00980000, 0x00b80000, 0x00e00000, 0x00e80000, - 0x00b00000, 0x00f00000, 0x00880000, 0x00d80000, - 0x02c00000, 0x02900000, 0x02a80000, 0x02800000, - 0x02a00000, 0x02c80000, 0x02f80000, 0x02d00000, - 0x02980000, 0x02b80000, 0x02e00000, 0x02e80000, - 0x02b00000, 0x02f00000, 0x02880000, 0x02d80000, - 0x06c00000, 0x06900000, 0x06a80000, 0x06800000, - 0x06a00000, 0x06c80000, 0x06f80000, 0x06d00000, - 0x06980000, 0x06b80000, 0x06e00000, 0x06e80000, - 0x06b00000, 0x06f00000, 0x06880000, 0x06d80000, - 0x05400000, 0x05100000, 0x05280000, 0x05000000, - 0x05200000, 0x05480000, 0x05780000, 0x05500000, - 0x05180000, 0x05380000, 0x05600000, 0x05680000, - 0x05300000, 0x05700000, 0x05080000, 0x05580000, - 0x04400000, 0x04100000, 0x04280000, 0x04000000, - 0x04200000, 0x04480000, 0x04780000, 0x04500000, - 0x04180000, 0x04380000, 0x04600000, 0x04680000, - 0x04300000, 0x04700000, 0x04080000, 0x04580000, - 0x05c00000, 0x05900000, 0x05a80000, 0x05800000, - 0x05a00000, 0x05c80000, 0x05f80000, 0x05d00000, - 0x05980000, 0x05b80000, 0x05e00000, 0x05e80000, - 0x05b00000, 0x05f00000, 0x05880000, 0x05d80000, - 0x01400000, 0x01100000, 0x01280000, 0x01000000, - 0x01200000, 0x01480000, 0x01780000, 0x01500000, - 0x01180000, 0x01380000, 0x01600000, 0x01680000, - 0x01300000, 0x01700000, 0x01080000, 0x01580000, - 0x04c00000, 0x04900000, 0x04a80000, 0x04800000, - 0x04a00000, 0x04c80000, 0x04f80000, 0x04d00000, - 0x04980000, 0x04b80000, 0x04e00000, 0x04e80000, - 0x04b00000, 0x04f00000, 0x04880000, 0x04d80000, - 0x03c00000, 0x03900000, 0x03a80000, 0x03800000, - 0x03a00000, 0x03c80000, 0x03f80000, 0x03d00000, - 0x03980000, 0x03b80000, 0x03e00000, 0x03e80000, - 0x03b00000, 0x03f00000, 0x03880000, 0x03d80000, - 0x07400000, 0x07100000, 0x07280000, 0x07000000, - 0x07200000, 0x07480000, 0x07780000, 0x07500000, - 0x07180000, 0x07380000, 0x07600000, 0x07680000, - 0x07300000, 0x07700000, 0x07080000, 0x07580000, - 0x07c00000, 0x07900000, 0x07a80000, 0x07800000, - 0x07a00000, 0x07c80000, 0x07f80000, 0x07d00000, - 0x07980000, 0x07b80000, 0x07e00000, 0x07e80000, - 0x07b00000, 0x07f00000, 0x07880000, 0x07d80000, - 0x06400000, 0x06100000, 0x06280000, 0x06000000, - 0x06200000, 0x06480000, 0x06780000, 0x06500000, - 0x06180000, 0x06380000, 0x06600000, 0x06680000, - 0x06300000, 0x06700000, 0x06080000, 0x06580000, - 0x02400000, 0x02100000, 0x02280000, 0x02000000, - 0x02200000, 0x02480000, 0x02780000, 0x02500000, - 0x02180000, 0x02380000, 0x02600000, 0x02680000, - 0x02300000, 0x02700000, 0x02080000, 0x02580000, - /* 2 */ - 0x40000006, 0x68000006, 0x58000006, 0x00000006, - 0x20000006, 0x28000006, 0x08000006, 0x10000006, - 0x48000006, 0x18000006, 0x60000006, 0x70000006, - 0x30000006, 0x78000006, 0x50000006, 0x38000006, - 0xc0000004, 0xe8000004, 0xd8000004, 0x80000004, - 0xa0000004, 0xa8000004, 0x88000004, 0x90000004, - 0xc8000004, 0x98000004, 0xe0000004, 0xf0000004, - 0xb0000004, 0xf8000004, 0xd0000004, 0xb8000004, - 0xc0000005, 0xe8000005, 0xd8000005, 0x80000005, - 0xa0000005, 0xa8000005, 0x88000005, 0x90000005, - 0xc8000005, 0x98000005, 0xe0000005, 0xf0000005, - 0xb0000005, 0xf8000005, 0xd0000005, 0xb8000005, - 0xc0000000, 0xe8000000, 0xd8000000, 0x80000000, - 0xa0000000, 0xa8000000, 0x88000000, 0x90000000, - 0xc8000000, 0x98000000, 0xe0000000, 0xf0000000, - 0xb0000000, 0xf8000000, 0xd0000000, 0xb8000000, - 0x40000004, 0x68000004, 0x58000004, 0x00000004, - 0x20000004, 0x28000004, 0x08000004, 0x10000004, - 0x48000004, 0x18000004, 0x60000004, 0x70000004, - 0x30000004, 0x78000004, 0x50000004, 0x38000004, - 0x40000007, 0x68000007, 0x58000007, 0x00000007, - 0x20000007, 0x28000007, 0x08000007, 0x10000007, - 0x48000007, 0x18000007, 0x60000007, 0x70000007, - 0x30000007, 0x78000007, 0x50000007, 0x38000007, - 0x40000001, 0x68000001, 0x58000001, 0x00000001, - 0x20000001, 0x28000001, 0x08000001, 0x10000001, - 0x48000001, 0x18000001, 0x60000001, 0x70000001, - 0x30000001, 0x78000001, 0x50000001, 0x38000001, - 0x40000002, 0x68000002, 0x58000002, 0x00000002, - 0x20000002, 0x28000002, 0x08000002, 0x10000002, - 0x48000002, 0x18000002, 0x60000002, 0x70000002, - 0x30000002, 0x78000002, 0x50000002, 0x38000002, - 0xc0000003, 0xe8000003, 0xd8000003, 0x80000003, - 0xa0000003, 0xa8000003, 0x88000003, 0x90000003, - 0xc8000003, 0x98000003, 0xe0000003, 0xf0000003, - 0xb0000003, 0xf8000003, 0xd0000003, 0xb8000003, - 0xc0000001, 0xe8000001, 0xd8000001, 0x80000001, - 0xa0000001, 0xa8000001, 0x88000001, 0x90000001, - 0xc8000001, 0x98000001, 0xe0000001, 0xf0000001, - 0xb0000001, 0xf8000001, 0xd0000001, 0xb8000001, - 0x40000003, 0x68000003, 0x58000003, 0x00000003, - 0x20000003, 0x28000003, 0x08000003, 0x10000003, - 0x48000003, 0x18000003, 0x60000003, 0x70000003, - 0x30000003, 0x78000003, 0x50000003, 0x38000003, - 0xc0000002, 0xe8000002, 0xd8000002, 0x80000002, - 0xa0000002, 0xa8000002, 0x88000002, 0x90000002, - 0xc8000002, 0x98000002, 0xe0000002, 0xf0000002, - 0xb0000002, 0xf8000002, 0xd0000002, 0xb8000002, - 0x40000005, 0x68000005, 0x58000005, 0x00000005, - 0x20000005, 0x28000005, 0x08000005, 0x10000005, - 0x48000005, 0x18000005, 0x60000005, 0x70000005, - 0x30000005, 0x78000005, 0x50000005, 0x38000005, - 0x40000000, 0x68000000, 0x58000000, 0x00000000, - 0x20000000, 0x28000000, 0x08000000, 0x10000000, - 0x48000000, 0x18000000, 0x60000000, 0x70000000, - 0x30000000, 0x78000000, 0x50000000, 0x38000000, - 0xc0000007, 0xe8000007, 0xd8000007, 0x80000007, - 0xa0000007, 0xa8000007, 0x88000007, 0x90000007, - 0xc8000007, 0x98000007, 0xe0000007, 0xf0000007, - 0xb0000007, 0xf8000007, 0xd0000007, 0xb8000007, - 0xc0000006, 0xe8000006, 0xd8000006, 0x80000006, - 0xa0000006, 0xa8000006, 0x88000006, 0x90000006, - 0xc8000006, 0x98000006, 0xe0000006, 0xf0000006, - 0xb0000006, 0xf8000006, 0xd0000006, 0xb8000006, - /* 3 */ - 0x000003d0, 0x000003c8, 0x000003b0, 0x000003c0, - 0x000003e8, 0x000003f0, 0x00000390, 0x00000380, - 0x000003f8, 0x00000398, 0x000003a8, 0x000003d8, - 0x000003a0, 0x00000388, 0x000003e0, 0x000003b8, - 0x00000250, 0x00000248, 0x00000230, 0x00000240, - 0x00000268, 0x00000270, 0x00000210, 0x00000200, - 0x00000278, 0x00000218, 0x00000228, 0x00000258, - 0x00000220, 0x00000208, 0x00000260, 0x00000238, - 0x00000050, 0x00000048, 0x00000030, 0x00000040, - 0x00000068, 0x00000070, 0x00000010, 0x00000000, - 0x00000078, 0x00000018, 0x00000028, 0x00000058, - 0x00000020, 0x00000008, 0x00000060, 0x00000038, - 0x000002d0, 0x000002c8, 0x000002b0, 0x000002c0, - 0x000002e8, 0x000002f0, 0x00000290, 0x00000280, - 0x000002f8, 0x00000298, 0x000002a8, 0x000002d8, - 0x000002a0, 0x00000288, 0x000002e0, 0x000002b8, - 0x00000550, 0x00000548, 0x00000530, 0x00000540, - 0x00000568, 0x00000570, 0x00000510, 0x00000500, - 0x00000578, 0x00000518, 0x00000528, 0x00000558, - 0x00000520, 0x00000508, 0x00000560, 0x00000538, - 0x00000150, 0x00000148, 0x00000130, 0x00000140, - 0x00000168, 0x00000170, 0x00000110, 0x00000100, - 0x00000178, 0x00000118, 0x00000128, 0x00000158, - 0x00000120, 0x00000108, 0x00000160, 0x00000138, - 0x000007d0, 0x000007c8, 0x000007b0, 0x000007c0, - 0x000007e8, 0x000007f0, 0x00000790, 0x00000780, - 0x000007f8, 0x00000798, 0x000007a8, 0x000007d8, - 0x000007a0, 0x00000788, 0x000007e0, 0x000007b8, - 0x00000750, 0x00000748, 0x00000730, 0x00000740, - 0x00000768, 0x00000770, 0x00000710, 0x00000700, - 0x00000778, 0x00000718, 0x00000728, 0x00000758, - 0x00000720, 0x00000708, 0x00000760, 0x00000738, - 0x00000650, 0x00000648, 0x00000630, 0x00000640, - 0x00000668, 0x00000670, 0x00000610, 0x00000600, - 0x00000678, 0x00000618, 0x00000628, 0x00000658, - 0x00000620, 0x00000608, 0x00000660, 0x00000638, - 0x00000350, 0x00000348, 0x00000330, 0x00000340, - 0x00000368, 0x00000370, 0x00000310, 0x00000300, - 0x00000378, 0x00000318, 0x00000328, 0x00000358, - 0x00000320, 0x00000308, 0x00000360, 0x00000338, - 0x000000d0, 0x000000c8, 0x000000b0, 0x000000c0, - 0x000000e8, 0x000000f0, 0x00000090, 0x00000080, - 0x000000f8, 0x00000098, 0x000000a8, 0x000000d8, - 0x000000a0, 0x00000088, 0x000000e0, 0x000000b8, - 0x000005d0, 0x000005c8, 0x000005b0, 0x000005c0, - 0x000005e8, 0x000005f0, 0x00000590, 0x00000580, - 0x000005f8, 0x00000598, 0x000005a8, 0x000005d8, - 0x000005a0, 0x00000588, 0x000005e0, 0x000005b8, - 0x000006d0, 0x000006c8, 0x000006b0, 0x000006c0, - 0x000006e8, 0x000006f0, 0x00000690, 0x00000680, - 0x000006f8, 0x00000698, 0x000006a8, 0x000006d8, - 0x000006a0, 0x00000688, 0x000006e0, 0x000006b8, - 0x000004d0, 0x000004c8, 0x000004b0, 0x000004c0, - 0x000004e8, 0x000004f0, 0x00000490, 0x00000480, - 0x000004f8, 0x00000498, 0x000004a8, 0x000004d8, - 0x000004a0, 0x00000488, 0x000004e0, 0x000004b8, - 0x000001d0, 0x000001c8, 0x000001b0, 0x000001c0, - 0x000001e8, 0x000001f0, 0x00000190, 0x00000180, - 0x000001f8, 0x00000198, 0x000001a8, 0x000001d8, - 0x000001a0, 0x00000188, 0x000001e0, 0x000001b8, - 0x00000450, 0x00000448, 0x00000430, 0x00000440, - 0x00000468, 0x00000470, 0x00000410, 0x00000400, - 0x00000478, 0x00000418, 0x00000428, 0x00000458, - 0x00000420, 0x00000408, 0x00000460, 0x00000438, - } -}; +const struct gost28147_param gost28147_param_CryptoPro_C = { 1, + { + /* 0 */ + 0x00000800, + 0x00005800, + 0x00006000, + 0x00001000, + 0x00004800, + 0x00006800, + 0x00000000, + 0x00007800, + 0x00002000, + 0x00002800, + 0x00004000, + 0x00007000, + 0x00005000, + 0x00003800, + 0x00003000, + 0x00001800, + 0x00008800, + 0x0000d800, + 0x0000e000, + 0x00009000, + 0x0000c800, + 0x0000e800, + 0x00008000, + 0x0000f800, + 0x0000a000, + 0x0000a800, + 0x0000c000, + 0x0000f000, + 0x0000d000, + 0x0000b800, + 0x0000b000, + 0x00009800, + 0x00038800, + 0x0003d800, + 0x0003e000, + 0x00039000, + 0x0003c800, + 0x0003e800, + 0x00038000, + 0x0003f800, + 0x0003a000, + 0x0003a800, + 0x0003c000, + 0x0003f000, + 0x0003d000, + 0x0003b800, + 0x0003b000, + 0x00039800, + 0x00068800, + 0x0006d800, + 0x0006e000, + 0x00069000, + 0x0006c800, + 0x0006e800, + 0x00068000, + 0x0006f800, + 0x0006a000, + 0x0006a800, + 0x0006c000, + 0x0006f000, + 0x0006d000, + 0x0006b800, + 0x0006b000, + 0x00069800, + 0x00058800, + 0x0005d800, + 0x0005e000, + 0x00059000, + 0x0005c800, + 0x0005e800, + 0x00058000, + 0x0005f800, + 0x0005a000, + 0x0005a800, + 0x0005c000, + 0x0005f000, + 0x0005d000, + 0x0005b800, + 0x0005b000, + 0x00059800, + 0x00020800, + 0x00025800, + 0x00026000, + 0x00021000, + 0x00024800, + 0x00026800, + 0x00020000, + 0x00027800, + 0x00022000, + 0x00022800, + 0x00024000, + 0x00027000, + 0x00025000, + 0x00023800, + 0x00023000, + 0x00021800, + 0x00028800, + 0x0002d800, + 0x0002e000, + 0x00029000, + 0x0002c800, + 0x0002e800, + 0x00028000, + 0x0002f800, + 0x0002a000, + 0x0002a800, + 0x0002c000, + 0x0002f000, + 0x0002d000, + 0x0002b800, + 0x0002b000, + 0x00029800, + 0x00010800, + 0x00015800, + 0x00016000, + 0x00011000, + 0x00014800, + 0x00016800, + 0x00010000, + 0x00017800, + 0x00012000, + 0x00012800, + 0x00014000, + 0x00017000, + 0x00015000, + 0x00013800, + 0x00013000, + 0x00011800, + 0x00040800, + 0x00045800, + 0x00046000, + 0x00041000, + 0x00044800, + 0x00046800, + 0x00040000, + 0x00047800, + 0x00042000, + 0x00042800, + 0x00044000, + 0x00047000, + 0x00045000, + 0x00043800, + 0x00043000, + 0x00041800, + 0x00070800, + 0x00075800, + 0x00076000, + 0x00071000, + 0x00074800, + 0x00076800, + 0x00070000, + 0x00077800, + 0x00072000, + 0x00072800, + 0x00074000, + 0x00077000, + 0x00075000, + 0x00073800, + 0x00073000, + 0x00071800, + 0x00078800, + 0x0007d800, + 0x0007e000, + 0x00079000, + 0x0007c800, + 0x0007e800, + 0x00078000, + 0x0007f800, + 0x0007a000, + 0x0007a800, + 0x0007c000, + 0x0007f000, + 0x0007d000, + 0x0007b800, + 0x0007b000, + 0x00079800, + 0x00060800, + 0x00065800, + 0x00066000, + 0x00061000, + 0x00064800, + 0x00066800, + 0x00060000, + 0x00067800, + 0x00062000, + 0x00062800, + 0x00064000, + 0x00067000, + 0x00065000, + 0x00063800, + 0x00063000, + 0x00061800, + 0x00048800, + 0x0004d800, + 0x0004e000, + 0x00049000, + 0x0004c800, + 0x0004e800, + 0x00048000, + 0x0004f800, + 0x0004a000, + 0x0004a800, + 0x0004c000, + 0x0004f000, + 0x0004d000, + 0x0004b800, + 0x0004b000, + 0x00049800, + 0x00050800, + 0x00055800, + 0x00056000, + 0x00051000, + 0x00054800, + 0x00056800, + 0x00050000, + 0x00057800, + 0x00052000, + 0x00052800, + 0x00054000, + 0x00057000, + 0x00055000, + 0x00053800, + 0x00053000, + 0x00051800, + 0x00030800, + 0x00035800, + 0x00036000, + 0x00031000, + 0x00034800, + 0x00036800, + 0x00030000, + 0x00037800, + 0x00032000, + 0x00032800, + 0x00034000, + 0x00037000, + 0x00035000, + 0x00033800, + 0x00033000, + 0x00031800, + 0x00018800, + 0x0001d800, + 0x0001e000, + 0x00019000, + 0x0001c800, + 0x0001e800, + 0x00018000, + 0x0001f800, + 0x0001a000, + 0x0001a800, + 0x0001c000, + 0x0001f000, + 0x0001d000, + 0x0001b800, + 0x0001b000, + 0x00019800, + /* 1 */ + 0x01c00000, + 0x01900000, + 0x01a80000, + 0x01800000, + 0x01a00000, + 0x01c80000, + 0x01f80000, + 0x01d00000, + 0x01980000, + 0x01b80000, + 0x01e00000, + 0x01e80000, + 0x01b00000, + 0x01f00000, + 0x01880000, + 0x01d80000, + 0x03400000, + 0x03100000, + 0x03280000, + 0x03000000, + 0x03200000, + 0x03480000, + 0x03780000, + 0x03500000, + 0x03180000, + 0x03380000, + 0x03600000, + 0x03680000, + 0x03300000, + 0x03700000, + 0x03080000, + 0x03580000, + 0x00400000, + 0x00100000, + 0x00280000, + 0x00000000, + 0x00200000, + 0x00480000, + 0x00780000, + 0x00500000, + 0x00180000, + 0x00380000, + 0x00600000, + 0x00680000, + 0x00300000, + 0x00700000, + 0x00080000, + 0x00580000, + 0x00c00000, + 0x00900000, + 0x00a80000, + 0x00800000, + 0x00a00000, + 0x00c80000, + 0x00f80000, + 0x00d00000, + 0x00980000, + 0x00b80000, + 0x00e00000, + 0x00e80000, + 0x00b00000, + 0x00f00000, + 0x00880000, + 0x00d80000, + 0x02c00000, + 0x02900000, + 0x02a80000, + 0x02800000, + 0x02a00000, + 0x02c80000, + 0x02f80000, + 0x02d00000, + 0x02980000, + 0x02b80000, + 0x02e00000, + 0x02e80000, + 0x02b00000, + 0x02f00000, + 0x02880000, + 0x02d80000, + 0x06c00000, + 0x06900000, + 0x06a80000, + 0x06800000, + 0x06a00000, + 0x06c80000, + 0x06f80000, + 0x06d00000, + 0x06980000, + 0x06b80000, + 0x06e00000, + 0x06e80000, + 0x06b00000, + 0x06f00000, + 0x06880000, + 0x06d80000, + 0x05400000, + 0x05100000, + 0x05280000, + 0x05000000, + 0x05200000, + 0x05480000, + 0x05780000, + 0x05500000, + 0x05180000, + 0x05380000, + 0x05600000, + 0x05680000, + 0x05300000, + 0x05700000, + 0x05080000, + 0x05580000, + 0x04400000, + 0x04100000, + 0x04280000, + 0x04000000, + 0x04200000, + 0x04480000, + 0x04780000, + 0x04500000, + 0x04180000, + 0x04380000, + 0x04600000, + 0x04680000, + 0x04300000, + 0x04700000, + 0x04080000, + 0x04580000, + 0x05c00000, + 0x05900000, + 0x05a80000, + 0x05800000, + 0x05a00000, + 0x05c80000, + 0x05f80000, + 0x05d00000, + 0x05980000, + 0x05b80000, + 0x05e00000, + 0x05e80000, + 0x05b00000, + 0x05f00000, + 0x05880000, + 0x05d80000, + 0x01400000, + 0x01100000, + 0x01280000, + 0x01000000, + 0x01200000, + 0x01480000, + 0x01780000, + 0x01500000, + 0x01180000, + 0x01380000, + 0x01600000, + 0x01680000, + 0x01300000, + 0x01700000, + 0x01080000, + 0x01580000, + 0x04c00000, + 0x04900000, + 0x04a80000, + 0x04800000, + 0x04a00000, + 0x04c80000, + 0x04f80000, + 0x04d00000, + 0x04980000, + 0x04b80000, + 0x04e00000, + 0x04e80000, + 0x04b00000, + 0x04f00000, + 0x04880000, + 0x04d80000, + 0x03c00000, + 0x03900000, + 0x03a80000, + 0x03800000, + 0x03a00000, + 0x03c80000, + 0x03f80000, + 0x03d00000, + 0x03980000, + 0x03b80000, + 0x03e00000, + 0x03e80000, + 0x03b00000, + 0x03f00000, + 0x03880000, + 0x03d80000, + 0x07400000, + 0x07100000, + 0x07280000, + 0x07000000, + 0x07200000, + 0x07480000, + 0x07780000, + 0x07500000, + 0x07180000, + 0x07380000, + 0x07600000, + 0x07680000, + 0x07300000, + 0x07700000, + 0x07080000, + 0x07580000, + 0x07c00000, + 0x07900000, + 0x07a80000, + 0x07800000, + 0x07a00000, + 0x07c80000, + 0x07f80000, + 0x07d00000, + 0x07980000, + 0x07b80000, + 0x07e00000, + 0x07e80000, + 0x07b00000, + 0x07f00000, + 0x07880000, + 0x07d80000, + 0x06400000, + 0x06100000, + 0x06280000, + 0x06000000, + 0x06200000, + 0x06480000, + 0x06780000, + 0x06500000, + 0x06180000, + 0x06380000, + 0x06600000, + 0x06680000, + 0x06300000, + 0x06700000, + 0x06080000, + 0x06580000, + 0x02400000, + 0x02100000, + 0x02280000, + 0x02000000, + 0x02200000, + 0x02480000, + 0x02780000, + 0x02500000, + 0x02180000, + 0x02380000, + 0x02600000, + 0x02680000, + 0x02300000, + 0x02700000, + 0x02080000, + 0x02580000, + /* 2 */ + 0x40000006, + 0x68000006, + 0x58000006, + 0x00000006, + 0x20000006, + 0x28000006, + 0x08000006, + 0x10000006, + 0x48000006, + 0x18000006, + 0x60000006, + 0x70000006, + 0x30000006, + 0x78000006, + 0x50000006, + 0x38000006, + 0xc0000004, + 0xe8000004, + 0xd8000004, + 0x80000004, + 0xa0000004, + 0xa8000004, + 0x88000004, + 0x90000004, + 0xc8000004, + 0x98000004, + 0xe0000004, + 0xf0000004, + 0xb0000004, + 0xf8000004, + 0xd0000004, + 0xb8000004, + 0xc0000005, + 0xe8000005, + 0xd8000005, + 0x80000005, + 0xa0000005, + 0xa8000005, + 0x88000005, + 0x90000005, + 0xc8000005, + 0x98000005, + 0xe0000005, + 0xf0000005, + 0xb0000005, + 0xf8000005, + 0xd0000005, + 0xb8000005, + 0xc0000000, + 0xe8000000, + 0xd8000000, + 0x80000000, + 0xa0000000, + 0xa8000000, + 0x88000000, + 0x90000000, + 0xc8000000, + 0x98000000, + 0xe0000000, + 0xf0000000, + 0xb0000000, + 0xf8000000, + 0xd0000000, + 0xb8000000, + 0x40000004, + 0x68000004, + 0x58000004, + 0x00000004, + 0x20000004, + 0x28000004, + 0x08000004, + 0x10000004, + 0x48000004, + 0x18000004, + 0x60000004, + 0x70000004, + 0x30000004, + 0x78000004, + 0x50000004, + 0x38000004, + 0x40000007, + 0x68000007, + 0x58000007, + 0x00000007, + 0x20000007, + 0x28000007, + 0x08000007, + 0x10000007, + 0x48000007, + 0x18000007, + 0x60000007, + 0x70000007, + 0x30000007, + 0x78000007, + 0x50000007, + 0x38000007, + 0x40000001, + 0x68000001, + 0x58000001, + 0x00000001, + 0x20000001, + 0x28000001, + 0x08000001, + 0x10000001, + 0x48000001, + 0x18000001, + 0x60000001, + 0x70000001, + 0x30000001, + 0x78000001, + 0x50000001, + 0x38000001, + 0x40000002, + 0x68000002, + 0x58000002, + 0x00000002, + 0x20000002, + 0x28000002, + 0x08000002, + 0x10000002, + 0x48000002, + 0x18000002, + 0x60000002, + 0x70000002, + 0x30000002, + 0x78000002, + 0x50000002, + 0x38000002, + 0xc0000003, + 0xe8000003, + 0xd8000003, + 0x80000003, + 0xa0000003, + 0xa8000003, + 0x88000003, + 0x90000003, + 0xc8000003, + 0x98000003, + 0xe0000003, + 0xf0000003, + 0xb0000003, + 0xf8000003, + 0xd0000003, + 0xb8000003, + 0xc0000001, + 0xe8000001, + 0xd8000001, + 0x80000001, + 0xa0000001, + 0xa8000001, + 0x88000001, + 0x90000001, + 0xc8000001, + 0x98000001, + 0xe0000001, + 0xf0000001, + 0xb0000001, + 0xf8000001, + 0xd0000001, + 0xb8000001, + 0x40000003, + 0x68000003, + 0x58000003, + 0x00000003, + 0x20000003, + 0x28000003, + 0x08000003, + 0x10000003, + 0x48000003, + 0x18000003, + 0x60000003, + 0x70000003, + 0x30000003, + 0x78000003, + 0x50000003, + 0x38000003, + 0xc0000002, + 0xe8000002, + 0xd8000002, + 0x80000002, + 0xa0000002, + 0xa8000002, + 0x88000002, + 0x90000002, + 0xc8000002, + 0x98000002, + 0xe0000002, + 0xf0000002, + 0xb0000002, + 0xf8000002, + 0xd0000002, + 0xb8000002, + 0x40000005, + 0x68000005, + 0x58000005, + 0x00000005, + 0x20000005, + 0x28000005, + 0x08000005, + 0x10000005, + 0x48000005, + 0x18000005, + 0x60000005, + 0x70000005, + 0x30000005, + 0x78000005, + 0x50000005, + 0x38000005, + 0x40000000, + 0x68000000, + 0x58000000, + 0x00000000, + 0x20000000, + 0x28000000, + 0x08000000, + 0x10000000, + 0x48000000, + 0x18000000, + 0x60000000, + 0x70000000, + 0x30000000, + 0x78000000, + 0x50000000, + 0x38000000, + 0xc0000007, + 0xe8000007, + 0xd8000007, + 0x80000007, + 0xa0000007, + 0xa8000007, + 0x88000007, + 0x90000007, + 0xc8000007, + 0x98000007, + 0xe0000007, + 0xf0000007, + 0xb0000007, + 0xf8000007, + 0xd0000007, + 0xb8000007, + 0xc0000006, + 0xe8000006, + 0xd8000006, + 0x80000006, + 0xa0000006, + 0xa8000006, + 0x88000006, + 0x90000006, + 0xc8000006, + 0x98000006, + 0xe0000006, + 0xf0000006, + 0xb0000006, + 0xf8000006, + 0xd0000006, + 0xb8000006, + /* 3 */ + 0x000003d0, + 0x000003c8, + 0x000003b0, + 0x000003c0, + 0x000003e8, + 0x000003f0, + 0x00000390, + 0x00000380, + 0x000003f8, + 0x00000398, + 0x000003a8, + 0x000003d8, + 0x000003a0, + 0x00000388, + 0x000003e0, + 0x000003b8, + 0x00000250, + 0x00000248, + 0x00000230, + 0x00000240, + 0x00000268, + 0x00000270, + 0x00000210, + 0x00000200, + 0x00000278, + 0x00000218, + 0x00000228, + 0x00000258, + 0x00000220, + 0x00000208, + 0x00000260, + 0x00000238, + 0x00000050, + 0x00000048, + 0x00000030, + 0x00000040, + 0x00000068, + 0x00000070, + 0x00000010, + 0x00000000, + 0x00000078, + 0x00000018, + 0x00000028, + 0x00000058, + 0x00000020, + 0x00000008, + 0x00000060, + 0x00000038, + 0x000002d0, + 0x000002c8, + 0x000002b0, + 0x000002c0, + 0x000002e8, + 0x000002f0, + 0x00000290, + 0x00000280, + 0x000002f8, + 0x00000298, + 0x000002a8, + 0x000002d8, + 0x000002a0, + 0x00000288, + 0x000002e0, + 0x000002b8, + 0x00000550, + 0x00000548, + 0x00000530, + 0x00000540, + 0x00000568, + 0x00000570, + 0x00000510, + 0x00000500, + 0x00000578, + 0x00000518, + 0x00000528, + 0x00000558, + 0x00000520, + 0x00000508, + 0x00000560, + 0x00000538, + 0x00000150, + 0x00000148, + 0x00000130, + 0x00000140, + 0x00000168, + 0x00000170, + 0x00000110, + 0x00000100, + 0x00000178, + 0x00000118, + 0x00000128, + 0x00000158, + 0x00000120, + 0x00000108, + 0x00000160, + 0x00000138, + 0x000007d0, + 0x000007c8, + 0x000007b0, + 0x000007c0, + 0x000007e8, + 0x000007f0, + 0x00000790, + 0x00000780, + 0x000007f8, + 0x00000798, + 0x000007a8, + 0x000007d8, + 0x000007a0, + 0x00000788, + 0x000007e0, + 0x000007b8, + 0x00000750, + 0x00000748, + 0x00000730, + 0x00000740, + 0x00000768, + 0x00000770, + 0x00000710, + 0x00000700, + 0x00000778, + 0x00000718, + 0x00000728, + 0x00000758, + 0x00000720, + 0x00000708, + 0x00000760, + 0x00000738, + 0x00000650, + 0x00000648, + 0x00000630, + 0x00000640, + 0x00000668, + 0x00000670, + 0x00000610, + 0x00000600, + 0x00000678, + 0x00000618, + 0x00000628, + 0x00000658, + 0x00000620, + 0x00000608, + 0x00000660, + 0x00000638, + 0x00000350, + 0x00000348, + 0x00000330, + 0x00000340, + 0x00000368, + 0x00000370, + 0x00000310, + 0x00000300, + 0x00000378, + 0x00000318, + 0x00000328, + 0x00000358, + 0x00000320, + 0x00000308, + 0x00000360, + 0x00000338, + 0x000000d0, + 0x000000c8, + 0x000000b0, + 0x000000c0, + 0x000000e8, + 0x000000f0, + 0x00000090, + 0x00000080, + 0x000000f8, + 0x00000098, + 0x000000a8, + 0x000000d8, + 0x000000a0, + 0x00000088, + 0x000000e0, + 0x000000b8, + 0x000005d0, + 0x000005c8, + 0x000005b0, + 0x000005c0, + 0x000005e8, + 0x000005f0, + 0x00000590, + 0x00000580, + 0x000005f8, + 0x00000598, + 0x000005a8, + 0x000005d8, + 0x000005a0, + 0x00000588, + 0x000005e0, + 0x000005b8, + 0x000006d0, + 0x000006c8, + 0x000006b0, + 0x000006c0, + 0x000006e8, + 0x000006f0, + 0x00000690, + 0x00000680, + 0x000006f8, + 0x00000698, + 0x000006a8, + 0x000006d8, + 0x000006a0, + 0x00000688, + 0x000006e0, + 0x000006b8, + 0x000004d0, + 0x000004c8, + 0x000004b0, + 0x000004c0, + 0x000004e8, + 0x000004f0, + 0x00000490, + 0x00000480, + 0x000004f8, + 0x00000498, + 0x000004a8, + 0x000004d8, + 0x000004a0, + 0x00000488, + 0x000004e0, + 0x000004b8, + 0x000001d0, + 0x000001c8, + 0x000001b0, + 0x000001c0, + 0x000001e8, + 0x000001f0, + 0x00000190, + 0x00000180, + 0x000001f8, + 0x00000198, + 0x000001a8, + 0x000001d8, + 0x000001a0, + 0x00000188, + 0x000001e0, + 0x000001b8, + 0x00000450, + 0x00000448, + 0x00000430, + 0x00000440, + 0x00000468, + 0x00000470, + 0x00000410, + 0x00000400, + 0x00000478, + 0x00000418, + 0x00000428, + 0x00000458, + 0x00000420, + 0x00000408, + 0x00000460, + 0x00000438, + } }; -const struct gost28147_param gost28147_param_CryptoPro_D = { - 1, - { - /* 0 */ - 0x0005f800, 0x0005e000, 0x00059000, 0x0005d000, - 0x0005b000, 0x0005a000, 0x0005a800, 0x00058000, - 0x0005b800, 0x0005c800, 0x0005f000, 0x0005e800, - 0x00058800, 0x0005d800, 0x0005c000, 0x00059800, - 0x00037800, 0x00036000, 0x00031000, 0x00035000, - 0x00033000, 0x00032000, 0x00032800, 0x00030000, - 0x00033800, 0x00034800, 0x00037000, 0x00036800, - 0x00030800, 0x00035800, 0x00034000, 0x00031800, - 0x0001f800, 0x0001e000, 0x00019000, 0x0001d000, - 0x0001b000, 0x0001a000, 0x0001a800, 0x00018000, - 0x0001b800, 0x0001c800, 0x0001f000, 0x0001e800, - 0x00018800, 0x0001d800, 0x0001c000, 0x00019800, - 0x00027800, 0x00026000, 0x00021000, 0x00025000, - 0x00023000, 0x00022000, 0x00022800, 0x00020000, - 0x00023800, 0x00024800, 0x00027000, 0x00026800, - 0x00020800, 0x00025800, 0x00024000, 0x00021800, - 0x00067800, 0x00066000, 0x00061000, 0x00065000, - 0x00063000, 0x00062000, 0x00062800, 0x00060000, - 0x00063800, 0x00064800, 0x00067000, 0x00066800, - 0x00060800, 0x00065800, 0x00064000, 0x00061800, - 0x0007f800, 0x0007e000, 0x00079000, 0x0007d000, - 0x0007b000, 0x0007a000, 0x0007a800, 0x00078000, - 0x0007b800, 0x0007c800, 0x0007f000, 0x0007e800, - 0x00078800, 0x0007d800, 0x0007c000, 0x00079800, - 0x00077800, 0x00076000, 0x00071000, 0x00075000, - 0x00073000, 0x00072000, 0x00072800, 0x00070000, - 0x00073800, 0x00074800, 0x00077000, 0x00076800, - 0x00070800, 0x00075800, 0x00074000, 0x00071800, - 0x00017800, 0x00016000, 0x00011000, 0x00015000, - 0x00013000, 0x00012000, 0x00012800, 0x00010000, - 0x00013800, 0x00014800, 0x00017000, 0x00016800, - 0x00010800, 0x00015800, 0x00014000, 0x00011800, - 0x0003f800, 0x0003e000, 0x00039000, 0x0003d000, - 0x0003b000, 0x0003a000, 0x0003a800, 0x00038000, - 0x0003b800, 0x0003c800, 0x0003f000, 0x0003e800, - 0x00038800, 0x0003d800, 0x0003c000, 0x00039800, - 0x0006f800, 0x0006e000, 0x00069000, 0x0006d000, - 0x0006b000, 0x0006a000, 0x0006a800, 0x00068000, - 0x0006b800, 0x0006c800, 0x0006f000, 0x0006e800, - 0x00068800, 0x0006d800, 0x0006c000, 0x00069800, - 0x00047800, 0x00046000, 0x00041000, 0x00045000, - 0x00043000, 0x00042000, 0x00042800, 0x00040000, - 0x00043800, 0x00044800, 0x00047000, 0x00046800, - 0x00040800, 0x00045800, 0x00044000, 0x00041800, - 0x00007800, 0x00006000, 0x00001000, 0x00005000, - 0x00003000, 0x00002000, 0x00002800, 0x00000000, - 0x00003800, 0x00004800, 0x00007000, 0x00006800, - 0x00000800, 0x00005800, 0x00004000, 0x00001800, - 0x0002f800, 0x0002e000, 0x00029000, 0x0002d000, - 0x0002b000, 0x0002a000, 0x0002a800, 0x00028000, - 0x0002b800, 0x0002c800, 0x0002f000, 0x0002e800, - 0x00028800, 0x0002d800, 0x0002c000, 0x00029800, - 0x00057800, 0x00056000, 0x00051000, 0x00055000, - 0x00053000, 0x00052000, 0x00052800, 0x00050000, - 0x00053800, 0x00054800, 0x00057000, 0x00056800, - 0x00050800, 0x00055800, 0x00054000, 0x00051800, - 0x0004f800, 0x0004e000, 0x00049000, 0x0004d000, - 0x0004b000, 0x0004a000, 0x0004a800, 0x00048000, - 0x0004b800, 0x0004c800, 0x0004f000, 0x0004e800, - 0x00048800, 0x0004d800, 0x0004c000, 0x00049800, - 0x0000f800, 0x0000e000, 0x00009000, 0x0000d000, - 0x0000b000, 0x0000a000, 0x0000a800, 0x00008000, - 0x0000b800, 0x0000c800, 0x0000f000, 0x0000e800, - 0x00008800, 0x0000d800, 0x0000c000, 0x00009800, - /* 1 */ - 0x00880000, 0x00e00000, 0x00d80000, 0x00800000, - 0x00f80000, 0x00f00000, 0x00b00000, 0x00a80000, - 0x00d00000, 0x00e80000, 0x00a00000, 0x00c00000, - 0x00c80000, 0x00980000, 0x00b80000, 0x00900000, - 0x02880000, 0x02e00000, 0x02d80000, 0x02800000, - 0x02f80000, 0x02f00000, 0x02b00000, 0x02a80000, - 0x02d00000, 0x02e80000, 0x02a00000, 0x02c00000, - 0x02c80000, 0x02980000, 0x02b80000, 0x02900000, - 0x07080000, 0x07600000, 0x07580000, 0x07000000, - 0x07780000, 0x07700000, 0x07300000, 0x07280000, - 0x07500000, 0x07680000, 0x07200000, 0x07400000, - 0x07480000, 0x07180000, 0x07380000, 0x07100000, - 0x06080000, 0x06600000, 0x06580000, 0x06000000, - 0x06780000, 0x06700000, 0x06300000, 0x06280000, - 0x06500000, 0x06680000, 0x06200000, 0x06400000, - 0x06480000, 0x06180000, 0x06380000, 0x06100000, - 0x05080000, 0x05600000, 0x05580000, 0x05000000, - 0x05780000, 0x05700000, 0x05300000, 0x05280000, - 0x05500000, 0x05680000, 0x05200000, 0x05400000, - 0x05480000, 0x05180000, 0x05380000, 0x05100000, - 0x03880000, 0x03e00000, 0x03d80000, 0x03800000, - 0x03f80000, 0x03f00000, 0x03b00000, 0x03a80000, - 0x03d00000, 0x03e80000, 0x03a00000, 0x03c00000, - 0x03c80000, 0x03980000, 0x03b80000, 0x03900000, - 0x00080000, 0x00600000, 0x00580000, 0x00000000, - 0x00780000, 0x00700000, 0x00300000, 0x00280000, - 0x00500000, 0x00680000, 0x00200000, 0x00400000, - 0x00480000, 0x00180000, 0x00380000, 0x00100000, - 0x06880000, 0x06e00000, 0x06d80000, 0x06800000, - 0x06f80000, 0x06f00000, 0x06b00000, 0x06a80000, - 0x06d00000, 0x06e80000, 0x06a00000, 0x06c00000, - 0x06c80000, 0x06980000, 0x06b80000, 0x06900000, - 0x03080000, 0x03600000, 0x03580000, 0x03000000, - 0x03780000, 0x03700000, 0x03300000, 0x03280000, - 0x03500000, 0x03680000, 0x03200000, 0x03400000, - 0x03480000, 0x03180000, 0x03380000, 0x03100000, - 0x01080000, 0x01600000, 0x01580000, 0x01000000, - 0x01780000, 0x01700000, 0x01300000, 0x01280000, - 0x01500000, 0x01680000, 0x01200000, 0x01400000, - 0x01480000, 0x01180000, 0x01380000, 0x01100000, - 0x05880000, 0x05e00000, 0x05d80000, 0x05800000, - 0x05f80000, 0x05f00000, 0x05b00000, 0x05a80000, - 0x05d00000, 0x05e80000, 0x05a00000, 0x05c00000, - 0x05c80000, 0x05980000, 0x05b80000, 0x05900000, - 0x02080000, 0x02600000, 0x02580000, 0x02000000, - 0x02780000, 0x02700000, 0x02300000, 0x02280000, - 0x02500000, 0x02680000, 0x02200000, 0x02400000, - 0x02480000, 0x02180000, 0x02380000, 0x02100000, - 0x04880000, 0x04e00000, 0x04d80000, 0x04800000, - 0x04f80000, 0x04f00000, 0x04b00000, 0x04a80000, - 0x04d00000, 0x04e80000, 0x04a00000, 0x04c00000, - 0x04c80000, 0x04980000, 0x04b80000, 0x04900000, - 0x01880000, 0x01e00000, 0x01d80000, 0x01800000, - 0x01f80000, 0x01f00000, 0x01b00000, 0x01a80000, - 0x01d00000, 0x01e80000, 0x01a00000, 0x01c00000, - 0x01c80000, 0x01980000, 0x01b80000, 0x01900000, - 0x07880000, 0x07e00000, 0x07d80000, 0x07800000, - 0x07f80000, 0x07f00000, 0x07b00000, 0x07a80000, - 0x07d00000, 0x07e80000, 0x07a00000, 0x07c00000, - 0x07c80000, 0x07980000, 0x07b80000, 0x07900000, - 0x04080000, 0x04600000, 0x04580000, 0x04000000, - 0x04780000, 0x04700000, 0x04300000, 0x04280000, - 0x04500000, 0x04680000, 0x04200000, 0x04400000, - 0x04480000, 0x04180000, 0x04380000, 0x04100000, - /* 2 */ - 0x00000004, 0x60000004, 0x40000004, 0x48000004, - 0x68000004, 0x10000004, 0x50000004, 0x58000004, - 0x38000004, 0x18000004, 0x30000004, 0x28000004, - 0x20000004, 0x70000004, 0x78000004, 0x08000004, - 0x00000000, 0x60000000, 0x40000000, 0x48000000, - 0x68000000, 0x10000000, 0x50000000, 0x58000000, - 0x38000000, 0x18000000, 0x30000000, 0x28000000, - 0x20000000, 0x70000000, 0x78000000, 0x08000000, - 0x80000007, 0xe0000007, 0xc0000007, 0xc8000007, - 0xe8000007, 0x90000007, 0xd0000007, 0xd8000007, - 0xb8000007, 0x98000007, 0xb0000007, 0xa8000007, - 0xa0000007, 0xf0000007, 0xf8000007, 0x88000007, - 0x80000001, 0xe0000001, 0xc0000001, 0xc8000001, - 0xe8000001, 0x90000001, 0xd0000001, 0xd8000001, - 0xb8000001, 0x98000001, 0xb0000001, 0xa8000001, - 0xa0000001, 0xf0000001, 0xf8000001, 0x88000001, - 0x00000001, 0x60000001, 0x40000001, 0x48000001, - 0x68000001, 0x10000001, 0x50000001, 0x58000001, - 0x38000001, 0x18000001, 0x30000001, 0x28000001, - 0x20000001, 0x70000001, 0x78000001, 0x08000001, - 0x80000002, 0xe0000002, 0xc0000002, 0xc8000002, - 0xe8000002, 0x90000002, 0xd0000002, 0xd8000002, - 0xb8000002, 0x98000002, 0xb0000002, 0xa8000002, - 0xa0000002, 0xf0000002, 0xf8000002, 0x88000002, - 0x00000007, 0x60000007, 0x40000007, 0x48000007, - 0x68000007, 0x10000007, 0x50000007, 0x58000007, - 0x38000007, 0x18000007, 0x30000007, 0x28000007, - 0x20000007, 0x70000007, 0x78000007, 0x08000007, - 0x80000005, 0xe0000005, 0xc0000005, 0xc8000005, - 0xe8000005, 0x90000005, 0xd0000005, 0xd8000005, - 0xb8000005, 0x98000005, 0xb0000005, 0xa8000005, - 0xa0000005, 0xf0000005, 0xf8000005, 0x88000005, - 0x80000000, 0xe0000000, 0xc0000000, 0xc8000000, - 0xe8000000, 0x90000000, 0xd0000000, 0xd8000000, - 0xb8000000, 0x98000000, 0xb0000000, 0xa8000000, - 0xa0000000, 0xf0000000, 0xf8000000, 0x88000000, - 0x00000005, 0x60000005, 0x40000005, 0x48000005, - 0x68000005, 0x10000005, 0x50000005, 0x58000005, - 0x38000005, 0x18000005, 0x30000005, 0x28000005, - 0x20000005, 0x70000005, 0x78000005, 0x08000005, - 0x00000002, 0x60000002, 0x40000002, 0x48000002, - 0x68000002, 0x10000002, 0x50000002, 0x58000002, - 0x38000002, 0x18000002, 0x30000002, 0x28000002, - 0x20000002, 0x70000002, 0x78000002, 0x08000002, - 0x80000003, 0xe0000003, 0xc0000003, 0xc8000003, - 0xe8000003, 0x90000003, 0xd0000003, 0xd8000003, - 0xb8000003, 0x98000003, 0xb0000003, 0xa8000003, - 0xa0000003, 0xf0000003, 0xf8000003, 0x88000003, - 0x00000006, 0x60000006, 0x40000006, 0x48000006, - 0x68000006, 0x10000006, 0x50000006, 0x58000006, - 0x38000006, 0x18000006, 0x30000006, 0x28000006, - 0x20000006, 0x70000006, 0x78000006, 0x08000006, - 0x80000004, 0xe0000004, 0xc0000004, 0xc8000004, - 0xe8000004, 0x90000004, 0xd0000004, 0xd8000004, - 0xb8000004, 0x98000004, 0xb0000004, 0xa8000004, - 0xa0000004, 0xf0000004, 0xf8000004, 0x88000004, - 0x80000006, 0xe0000006, 0xc0000006, 0xc8000006, - 0xe8000006, 0x90000006, 0xd0000006, 0xd8000006, - 0xb8000006, 0x98000006, 0xb0000006, 0xa8000006, - 0xa0000006, 0xf0000006, 0xf8000006, 0x88000006, - 0x00000003, 0x60000003, 0x40000003, 0x48000003, - 0x68000003, 0x10000003, 0x50000003, 0x58000003, - 0x38000003, 0x18000003, 0x30000003, 0x28000003, - 0x20000003, 0x70000003, 0x78000003, 0x08000003, - /* 3 */ - 0x00000098, 0x00000080, 0x000000b0, 0x000000f8, - 0x00000088, 0x000000f0, 0x000000c8, 0x00000090, - 0x000000e8, 0x000000c0, 0x000000e0, 0x000000a0, - 0x000000d8, 0x000000d0, 0x000000a8, 0x000000b8, - 0x00000518, 0x00000500, 0x00000530, 0x00000578, - 0x00000508, 0x00000570, 0x00000548, 0x00000510, - 0x00000568, 0x00000540, 0x00000560, 0x00000520, - 0x00000558, 0x00000550, 0x00000528, 0x00000538, - 0x00000318, 0x00000300, 0x00000330, 0x00000378, - 0x00000308, 0x00000370, 0x00000348, 0x00000310, - 0x00000368, 0x00000340, 0x00000360, 0x00000320, - 0x00000358, 0x00000350, 0x00000328, 0x00000338, - 0x00000418, 0x00000400, 0x00000430, 0x00000478, - 0x00000408, 0x00000470, 0x00000448, 0x00000410, - 0x00000468, 0x00000440, 0x00000460, 0x00000420, - 0x00000458, 0x00000450, 0x00000428, 0x00000438, - 0x00000798, 0x00000780, 0x000007b0, 0x000007f8, - 0x00000788, 0x000007f0, 0x000007c8, 0x00000790, - 0x000007e8, 0x000007c0, 0x000007e0, 0x000007a0, - 0x000007d8, 0x000007d0, 0x000007a8, 0x000007b8, - 0x00000598, 0x00000580, 0x000005b0, 0x000005f8, - 0x00000588, 0x000005f0, 0x000005c8, 0x00000590, - 0x000005e8, 0x000005c0, 0x000005e0, 0x000005a0, - 0x000005d8, 0x000005d0, 0x000005a8, 0x000005b8, - 0x00000018, 0x00000000, 0x00000030, 0x00000078, - 0x00000008, 0x00000070, 0x00000048, 0x00000010, - 0x00000068, 0x00000040, 0x00000060, 0x00000020, - 0x00000058, 0x00000050, 0x00000028, 0x00000038, - 0x00000218, 0x00000200, 0x00000230, 0x00000278, - 0x00000208, 0x00000270, 0x00000248, 0x00000210, - 0x00000268, 0x00000240, 0x00000260, 0x00000220, - 0x00000258, 0x00000250, 0x00000228, 0x00000238, - 0x00000618, 0x00000600, 0x00000630, 0x00000678, - 0x00000608, 0x00000670, 0x00000648, 0x00000610, - 0x00000668, 0x00000640, 0x00000660, 0x00000620, - 0x00000658, 0x00000650, 0x00000628, 0x00000638, - 0x00000198, 0x00000180, 0x000001b0, 0x000001f8, - 0x00000188, 0x000001f0, 0x000001c8, 0x00000190, - 0x000001e8, 0x000001c0, 0x000001e0, 0x000001a0, - 0x000001d8, 0x000001d0, 0x000001a8, 0x000001b8, - 0x00000298, 0x00000280, 0x000002b0, 0x000002f8, - 0x00000288, 0x000002f0, 0x000002c8, 0x00000290, - 0x000002e8, 0x000002c0, 0x000002e0, 0x000002a0, - 0x000002d8, 0x000002d0, 0x000002a8, 0x000002b8, - 0x00000498, 0x00000480, 0x000004b0, 0x000004f8, - 0x00000488, 0x000004f0, 0x000004c8, 0x00000490, - 0x000004e8, 0x000004c0, 0x000004e0, 0x000004a0, - 0x000004d8, 0x000004d0, 0x000004a8, 0x000004b8, - 0x00000398, 0x00000380, 0x000003b0, 0x000003f8, - 0x00000388, 0x000003f0, 0x000003c8, 0x00000390, - 0x000003e8, 0x000003c0, 0x000003e0, 0x000003a0, - 0x000003d8, 0x000003d0, 0x000003a8, 0x000003b8, - 0x00000698, 0x00000680, 0x000006b0, 0x000006f8, - 0x00000688, 0x000006f0, 0x000006c8, 0x00000690, - 0x000006e8, 0x000006c0, 0x000006e0, 0x000006a0, - 0x000006d8, 0x000006d0, 0x000006a8, 0x000006b8, - 0x00000118, 0x00000100, 0x00000130, 0x00000178, - 0x00000108, 0x00000170, 0x00000148, 0x00000110, - 0x00000168, 0x00000140, 0x00000160, 0x00000120, - 0x00000158, 0x00000150, 0x00000128, 0x00000138, - 0x00000718, 0x00000700, 0x00000730, 0x00000778, - 0x00000708, 0x00000770, 0x00000748, 0x00000710, - 0x00000768, 0x00000740, 0x00000760, 0x00000720, - 0x00000758, 0x00000750, 0x00000728, 0x00000738, - } -}; +const struct gost28147_param gost28147_param_CryptoPro_D = { 1, + { + /* 0 */ + 0x0005f800, + 0x0005e000, + 0x00059000, + 0x0005d000, + 0x0005b000, + 0x0005a000, + 0x0005a800, + 0x00058000, + 0x0005b800, + 0x0005c800, + 0x0005f000, + 0x0005e800, + 0x00058800, + 0x0005d800, + 0x0005c000, + 0x00059800, + 0x00037800, + 0x00036000, + 0x00031000, + 0x00035000, + 0x00033000, + 0x00032000, + 0x00032800, + 0x00030000, + 0x00033800, + 0x00034800, + 0x00037000, + 0x00036800, + 0x00030800, + 0x00035800, + 0x00034000, + 0x00031800, + 0x0001f800, + 0x0001e000, + 0x00019000, + 0x0001d000, + 0x0001b000, + 0x0001a000, + 0x0001a800, + 0x00018000, + 0x0001b800, + 0x0001c800, + 0x0001f000, + 0x0001e800, + 0x00018800, + 0x0001d800, + 0x0001c000, + 0x00019800, + 0x00027800, + 0x00026000, + 0x00021000, + 0x00025000, + 0x00023000, + 0x00022000, + 0x00022800, + 0x00020000, + 0x00023800, + 0x00024800, + 0x00027000, + 0x00026800, + 0x00020800, + 0x00025800, + 0x00024000, + 0x00021800, + 0x00067800, + 0x00066000, + 0x00061000, + 0x00065000, + 0x00063000, + 0x00062000, + 0x00062800, + 0x00060000, + 0x00063800, + 0x00064800, + 0x00067000, + 0x00066800, + 0x00060800, + 0x00065800, + 0x00064000, + 0x00061800, + 0x0007f800, + 0x0007e000, + 0x00079000, + 0x0007d000, + 0x0007b000, + 0x0007a000, + 0x0007a800, + 0x00078000, + 0x0007b800, + 0x0007c800, + 0x0007f000, + 0x0007e800, + 0x00078800, + 0x0007d800, + 0x0007c000, + 0x00079800, + 0x00077800, + 0x00076000, + 0x00071000, + 0x00075000, + 0x00073000, + 0x00072000, + 0x00072800, + 0x00070000, + 0x00073800, + 0x00074800, + 0x00077000, + 0x00076800, + 0x00070800, + 0x00075800, + 0x00074000, + 0x00071800, + 0x00017800, + 0x00016000, + 0x00011000, + 0x00015000, + 0x00013000, + 0x00012000, + 0x00012800, + 0x00010000, + 0x00013800, + 0x00014800, + 0x00017000, + 0x00016800, + 0x00010800, + 0x00015800, + 0x00014000, + 0x00011800, + 0x0003f800, + 0x0003e000, + 0x00039000, + 0x0003d000, + 0x0003b000, + 0x0003a000, + 0x0003a800, + 0x00038000, + 0x0003b800, + 0x0003c800, + 0x0003f000, + 0x0003e800, + 0x00038800, + 0x0003d800, + 0x0003c000, + 0x00039800, + 0x0006f800, + 0x0006e000, + 0x00069000, + 0x0006d000, + 0x0006b000, + 0x0006a000, + 0x0006a800, + 0x00068000, + 0x0006b800, + 0x0006c800, + 0x0006f000, + 0x0006e800, + 0x00068800, + 0x0006d800, + 0x0006c000, + 0x00069800, + 0x00047800, + 0x00046000, + 0x00041000, + 0x00045000, + 0x00043000, + 0x00042000, + 0x00042800, + 0x00040000, + 0x00043800, + 0x00044800, + 0x00047000, + 0x00046800, + 0x00040800, + 0x00045800, + 0x00044000, + 0x00041800, + 0x00007800, + 0x00006000, + 0x00001000, + 0x00005000, + 0x00003000, + 0x00002000, + 0x00002800, + 0x00000000, + 0x00003800, + 0x00004800, + 0x00007000, + 0x00006800, + 0x00000800, + 0x00005800, + 0x00004000, + 0x00001800, + 0x0002f800, + 0x0002e000, + 0x00029000, + 0x0002d000, + 0x0002b000, + 0x0002a000, + 0x0002a800, + 0x00028000, + 0x0002b800, + 0x0002c800, + 0x0002f000, + 0x0002e800, + 0x00028800, + 0x0002d800, + 0x0002c000, + 0x00029800, + 0x00057800, + 0x00056000, + 0x00051000, + 0x00055000, + 0x00053000, + 0x00052000, + 0x00052800, + 0x00050000, + 0x00053800, + 0x00054800, + 0x00057000, + 0x00056800, + 0x00050800, + 0x00055800, + 0x00054000, + 0x00051800, + 0x0004f800, + 0x0004e000, + 0x00049000, + 0x0004d000, + 0x0004b000, + 0x0004a000, + 0x0004a800, + 0x00048000, + 0x0004b800, + 0x0004c800, + 0x0004f000, + 0x0004e800, + 0x00048800, + 0x0004d800, + 0x0004c000, + 0x00049800, + 0x0000f800, + 0x0000e000, + 0x00009000, + 0x0000d000, + 0x0000b000, + 0x0000a000, + 0x0000a800, + 0x00008000, + 0x0000b800, + 0x0000c800, + 0x0000f000, + 0x0000e800, + 0x00008800, + 0x0000d800, + 0x0000c000, + 0x00009800, + /* 1 */ + 0x00880000, + 0x00e00000, + 0x00d80000, + 0x00800000, + 0x00f80000, + 0x00f00000, + 0x00b00000, + 0x00a80000, + 0x00d00000, + 0x00e80000, + 0x00a00000, + 0x00c00000, + 0x00c80000, + 0x00980000, + 0x00b80000, + 0x00900000, + 0x02880000, + 0x02e00000, + 0x02d80000, + 0x02800000, + 0x02f80000, + 0x02f00000, + 0x02b00000, + 0x02a80000, + 0x02d00000, + 0x02e80000, + 0x02a00000, + 0x02c00000, + 0x02c80000, + 0x02980000, + 0x02b80000, + 0x02900000, + 0x07080000, + 0x07600000, + 0x07580000, + 0x07000000, + 0x07780000, + 0x07700000, + 0x07300000, + 0x07280000, + 0x07500000, + 0x07680000, + 0x07200000, + 0x07400000, + 0x07480000, + 0x07180000, + 0x07380000, + 0x07100000, + 0x06080000, + 0x06600000, + 0x06580000, + 0x06000000, + 0x06780000, + 0x06700000, + 0x06300000, + 0x06280000, + 0x06500000, + 0x06680000, + 0x06200000, + 0x06400000, + 0x06480000, + 0x06180000, + 0x06380000, + 0x06100000, + 0x05080000, + 0x05600000, + 0x05580000, + 0x05000000, + 0x05780000, + 0x05700000, + 0x05300000, + 0x05280000, + 0x05500000, + 0x05680000, + 0x05200000, + 0x05400000, + 0x05480000, + 0x05180000, + 0x05380000, + 0x05100000, + 0x03880000, + 0x03e00000, + 0x03d80000, + 0x03800000, + 0x03f80000, + 0x03f00000, + 0x03b00000, + 0x03a80000, + 0x03d00000, + 0x03e80000, + 0x03a00000, + 0x03c00000, + 0x03c80000, + 0x03980000, + 0x03b80000, + 0x03900000, + 0x00080000, + 0x00600000, + 0x00580000, + 0x00000000, + 0x00780000, + 0x00700000, + 0x00300000, + 0x00280000, + 0x00500000, + 0x00680000, + 0x00200000, + 0x00400000, + 0x00480000, + 0x00180000, + 0x00380000, + 0x00100000, + 0x06880000, + 0x06e00000, + 0x06d80000, + 0x06800000, + 0x06f80000, + 0x06f00000, + 0x06b00000, + 0x06a80000, + 0x06d00000, + 0x06e80000, + 0x06a00000, + 0x06c00000, + 0x06c80000, + 0x06980000, + 0x06b80000, + 0x06900000, + 0x03080000, + 0x03600000, + 0x03580000, + 0x03000000, + 0x03780000, + 0x03700000, + 0x03300000, + 0x03280000, + 0x03500000, + 0x03680000, + 0x03200000, + 0x03400000, + 0x03480000, + 0x03180000, + 0x03380000, + 0x03100000, + 0x01080000, + 0x01600000, + 0x01580000, + 0x01000000, + 0x01780000, + 0x01700000, + 0x01300000, + 0x01280000, + 0x01500000, + 0x01680000, + 0x01200000, + 0x01400000, + 0x01480000, + 0x01180000, + 0x01380000, + 0x01100000, + 0x05880000, + 0x05e00000, + 0x05d80000, + 0x05800000, + 0x05f80000, + 0x05f00000, + 0x05b00000, + 0x05a80000, + 0x05d00000, + 0x05e80000, + 0x05a00000, + 0x05c00000, + 0x05c80000, + 0x05980000, + 0x05b80000, + 0x05900000, + 0x02080000, + 0x02600000, + 0x02580000, + 0x02000000, + 0x02780000, + 0x02700000, + 0x02300000, + 0x02280000, + 0x02500000, + 0x02680000, + 0x02200000, + 0x02400000, + 0x02480000, + 0x02180000, + 0x02380000, + 0x02100000, + 0x04880000, + 0x04e00000, + 0x04d80000, + 0x04800000, + 0x04f80000, + 0x04f00000, + 0x04b00000, + 0x04a80000, + 0x04d00000, + 0x04e80000, + 0x04a00000, + 0x04c00000, + 0x04c80000, + 0x04980000, + 0x04b80000, + 0x04900000, + 0x01880000, + 0x01e00000, + 0x01d80000, + 0x01800000, + 0x01f80000, + 0x01f00000, + 0x01b00000, + 0x01a80000, + 0x01d00000, + 0x01e80000, + 0x01a00000, + 0x01c00000, + 0x01c80000, + 0x01980000, + 0x01b80000, + 0x01900000, + 0x07880000, + 0x07e00000, + 0x07d80000, + 0x07800000, + 0x07f80000, + 0x07f00000, + 0x07b00000, + 0x07a80000, + 0x07d00000, + 0x07e80000, + 0x07a00000, + 0x07c00000, + 0x07c80000, + 0x07980000, + 0x07b80000, + 0x07900000, + 0x04080000, + 0x04600000, + 0x04580000, + 0x04000000, + 0x04780000, + 0x04700000, + 0x04300000, + 0x04280000, + 0x04500000, + 0x04680000, + 0x04200000, + 0x04400000, + 0x04480000, + 0x04180000, + 0x04380000, + 0x04100000, + /* 2 */ + 0x00000004, + 0x60000004, + 0x40000004, + 0x48000004, + 0x68000004, + 0x10000004, + 0x50000004, + 0x58000004, + 0x38000004, + 0x18000004, + 0x30000004, + 0x28000004, + 0x20000004, + 0x70000004, + 0x78000004, + 0x08000004, + 0x00000000, + 0x60000000, + 0x40000000, + 0x48000000, + 0x68000000, + 0x10000000, + 0x50000000, + 0x58000000, + 0x38000000, + 0x18000000, + 0x30000000, + 0x28000000, + 0x20000000, + 0x70000000, + 0x78000000, + 0x08000000, + 0x80000007, + 0xe0000007, + 0xc0000007, + 0xc8000007, + 0xe8000007, + 0x90000007, + 0xd0000007, + 0xd8000007, + 0xb8000007, + 0x98000007, + 0xb0000007, + 0xa8000007, + 0xa0000007, + 0xf0000007, + 0xf8000007, + 0x88000007, + 0x80000001, + 0xe0000001, + 0xc0000001, + 0xc8000001, + 0xe8000001, + 0x90000001, + 0xd0000001, + 0xd8000001, + 0xb8000001, + 0x98000001, + 0xb0000001, + 0xa8000001, + 0xa0000001, + 0xf0000001, + 0xf8000001, + 0x88000001, + 0x00000001, + 0x60000001, + 0x40000001, + 0x48000001, + 0x68000001, + 0x10000001, + 0x50000001, + 0x58000001, + 0x38000001, + 0x18000001, + 0x30000001, + 0x28000001, + 0x20000001, + 0x70000001, + 0x78000001, + 0x08000001, + 0x80000002, + 0xe0000002, + 0xc0000002, + 0xc8000002, + 0xe8000002, + 0x90000002, + 0xd0000002, + 0xd8000002, + 0xb8000002, + 0x98000002, + 0xb0000002, + 0xa8000002, + 0xa0000002, + 0xf0000002, + 0xf8000002, + 0x88000002, + 0x00000007, + 0x60000007, + 0x40000007, + 0x48000007, + 0x68000007, + 0x10000007, + 0x50000007, + 0x58000007, + 0x38000007, + 0x18000007, + 0x30000007, + 0x28000007, + 0x20000007, + 0x70000007, + 0x78000007, + 0x08000007, + 0x80000005, + 0xe0000005, + 0xc0000005, + 0xc8000005, + 0xe8000005, + 0x90000005, + 0xd0000005, + 0xd8000005, + 0xb8000005, + 0x98000005, + 0xb0000005, + 0xa8000005, + 0xa0000005, + 0xf0000005, + 0xf8000005, + 0x88000005, + 0x80000000, + 0xe0000000, + 0xc0000000, + 0xc8000000, + 0xe8000000, + 0x90000000, + 0xd0000000, + 0xd8000000, + 0xb8000000, + 0x98000000, + 0xb0000000, + 0xa8000000, + 0xa0000000, + 0xf0000000, + 0xf8000000, + 0x88000000, + 0x00000005, + 0x60000005, + 0x40000005, + 0x48000005, + 0x68000005, + 0x10000005, + 0x50000005, + 0x58000005, + 0x38000005, + 0x18000005, + 0x30000005, + 0x28000005, + 0x20000005, + 0x70000005, + 0x78000005, + 0x08000005, + 0x00000002, + 0x60000002, + 0x40000002, + 0x48000002, + 0x68000002, + 0x10000002, + 0x50000002, + 0x58000002, + 0x38000002, + 0x18000002, + 0x30000002, + 0x28000002, + 0x20000002, + 0x70000002, + 0x78000002, + 0x08000002, + 0x80000003, + 0xe0000003, + 0xc0000003, + 0xc8000003, + 0xe8000003, + 0x90000003, + 0xd0000003, + 0xd8000003, + 0xb8000003, + 0x98000003, + 0xb0000003, + 0xa8000003, + 0xa0000003, + 0xf0000003, + 0xf8000003, + 0x88000003, + 0x00000006, + 0x60000006, + 0x40000006, + 0x48000006, + 0x68000006, + 0x10000006, + 0x50000006, + 0x58000006, + 0x38000006, + 0x18000006, + 0x30000006, + 0x28000006, + 0x20000006, + 0x70000006, + 0x78000006, + 0x08000006, + 0x80000004, + 0xe0000004, + 0xc0000004, + 0xc8000004, + 0xe8000004, + 0x90000004, + 0xd0000004, + 0xd8000004, + 0xb8000004, + 0x98000004, + 0xb0000004, + 0xa8000004, + 0xa0000004, + 0xf0000004, + 0xf8000004, + 0x88000004, + 0x80000006, + 0xe0000006, + 0xc0000006, + 0xc8000006, + 0xe8000006, + 0x90000006, + 0xd0000006, + 0xd8000006, + 0xb8000006, + 0x98000006, + 0xb0000006, + 0xa8000006, + 0xa0000006, + 0xf0000006, + 0xf8000006, + 0x88000006, + 0x00000003, + 0x60000003, + 0x40000003, + 0x48000003, + 0x68000003, + 0x10000003, + 0x50000003, + 0x58000003, + 0x38000003, + 0x18000003, + 0x30000003, + 0x28000003, + 0x20000003, + 0x70000003, + 0x78000003, + 0x08000003, + /* 3 */ + 0x00000098, + 0x00000080, + 0x000000b0, + 0x000000f8, + 0x00000088, + 0x000000f0, + 0x000000c8, + 0x00000090, + 0x000000e8, + 0x000000c0, + 0x000000e0, + 0x000000a0, + 0x000000d8, + 0x000000d0, + 0x000000a8, + 0x000000b8, + 0x00000518, + 0x00000500, + 0x00000530, + 0x00000578, + 0x00000508, + 0x00000570, + 0x00000548, + 0x00000510, + 0x00000568, + 0x00000540, + 0x00000560, + 0x00000520, + 0x00000558, + 0x00000550, + 0x00000528, + 0x00000538, + 0x00000318, + 0x00000300, + 0x00000330, + 0x00000378, + 0x00000308, + 0x00000370, + 0x00000348, + 0x00000310, + 0x00000368, + 0x00000340, + 0x00000360, + 0x00000320, + 0x00000358, + 0x00000350, + 0x00000328, + 0x00000338, + 0x00000418, + 0x00000400, + 0x00000430, + 0x00000478, + 0x00000408, + 0x00000470, + 0x00000448, + 0x00000410, + 0x00000468, + 0x00000440, + 0x00000460, + 0x00000420, + 0x00000458, + 0x00000450, + 0x00000428, + 0x00000438, + 0x00000798, + 0x00000780, + 0x000007b0, + 0x000007f8, + 0x00000788, + 0x000007f0, + 0x000007c8, + 0x00000790, + 0x000007e8, + 0x000007c0, + 0x000007e0, + 0x000007a0, + 0x000007d8, + 0x000007d0, + 0x000007a8, + 0x000007b8, + 0x00000598, + 0x00000580, + 0x000005b0, + 0x000005f8, + 0x00000588, + 0x000005f0, + 0x000005c8, + 0x00000590, + 0x000005e8, + 0x000005c0, + 0x000005e0, + 0x000005a0, + 0x000005d8, + 0x000005d0, + 0x000005a8, + 0x000005b8, + 0x00000018, + 0x00000000, + 0x00000030, + 0x00000078, + 0x00000008, + 0x00000070, + 0x00000048, + 0x00000010, + 0x00000068, + 0x00000040, + 0x00000060, + 0x00000020, + 0x00000058, + 0x00000050, + 0x00000028, + 0x00000038, + 0x00000218, + 0x00000200, + 0x00000230, + 0x00000278, + 0x00000208, + 0x00000270, + 0x00000248, + 0x00000210, + 0x00000268, + 0x00000240, + 0x00000260, + 0x00000220, + 0x00000258, + 0x00000250, + 0x00000228, + 0x00000238, + 0x00000618, + 0x00000600, + 0x00000630, + 0x00000678, + 0x00000608, + 0x00000670, + 0x00000648, + 0x00000610, + 0x00000668, + 0x00000640, + 0x00000660, + 0x00000620, + 0x00000658, + 0x00000650, + 0x00000628, + 0x00000638, + 0x00000198, + 0x00000180, + 0x000001b0, + 0x000001f8, + 0x00000188, + 0x000001f0, + 0x000001c8, + 0x00000190, + 0x000001e8, + 0x000001c0, + 0x000001e0, + 0x000001a0, + 0x000001d8, + 0x000001d0, + 0x000001a8, + 0x000001b8, + 0x00000298, + 0x00000280, + 0x000002b0, + 0x000002f8, + 0x00000288, + 0x000002f0, + 0x000002c8, + 0x00000290, + 0x000002e8, + 0x000002c0, + 0x000002e0, + 0x000002a0, + 0x000002d8, + 0x000002d0, + 0x000002a8, + 0x000002b8, + 0x00000498, + 0x00000480, + 0x000004b0, + 0x000004f8, + 0x00000488, + 0x000004f0, + 0x000004c8, + 0x00000490, + 0x000004e8, + 0x000004c0, + 0x000004e0, + 0x000004a0, + 0x000004d8, + 0x000004d0, + 0x000004a8, + 0x000004b8, + 0x00000398, + 0x00000380, + 0x000003b0, + 0x000003f8, + 0x00000388, + 0x000003f0, + 0x000003c8, + 0x00000390, + 0x000003e8, + 0x000003c0, + 0x000003e0, + 0x000003a0, + 0x000003d8, + 0x000003d0, + 0x000003a8, + 0x000003b8, + 0x00000698, + 0x00000680, + 0x000006b0, + 0x000006f8, + 0x00000688, + 0x000006f0, + 0x000006c8, + 0x00000690, + 0x000006e8, + 0x000006c0, + 0x000006e0, + 0x000006a0, + 0x000006d8, + 0x000006d0, + 0x000006a8, + 0x000006b8, + 0x00000118, + 0x00000100, + 0x00000130, + 0x00000178, + 0x00000108, + 0x00000170, + 0x00000148, + 0x00000110, + 0x00000168, + 0x00000140, + 0x00000160, + 0x00000120, + 0x00000158, + 0x00000150, + 0x00000128, + 0x00000138, + 0x00000718, + 0x00000700, + 0x00000730, + 0x00000778, + 0x00000708, + 0x00000770, + 0x00000748, + 0x00000710, + 0x00000768, + 0x00000740, + 0x00000760, + 0x00000720, + 0x00000758, + 0x00000750, + 0x00000728, + 0x00000738, + } }; -const struct gost28147_param gost28147_param_TC26_Z = { - 1, - { - /* 0 */ - 0x00036000, 0x00032000, 0x00033000, 0x00031000, - 0x00035000, 0x00032800, 0x00035800, 0x00034800, - 0x00037000, 0x00034000, 0x00036800, 0x00033800, - 0x00030000, 0x00031800, 0x00037800, 0x00030800, - 0x00046000, 0x00042000, 0x00043000, 0x00041000, - 0x00045000, 0x00042800, 0x00045800, 0x00044800, - 0x00047000, 0x00044000, 0x00046800, 0x00043800, - 0x00040000, 0x00041800, 0x00047800, 0x00040800, - 0x00016000, 0x00012000, 0x00013000, 0x00011000, - 0x00015000, 0x00012800, 0x00015800, 0x00014800, - 0x00017000, 0x00014000, 0x00016800, 0x00013800, - 0x00010000, 0x00011800, 0x00017800, 0x00010800, - 0x0001e000, 0x0001a000, 0x0001b000, 0x00019000, - 0x0001d000, 0x0001a800, 0x0001d800, 0x0001c800, - 0x0001f000, 0x0001c000, 0x0001e800, 0x0001b800, - 0x00018000, 0x00019800, 0x0001f800, 0x00018800, - 0x0004e000, 0x0004a000, 0x0004b000, 0x00049000, - 0x0004d000, 0x0004a800, 0x0004d800, 0x0004c800, - 0x0004f000, 0x0004c000, 0x0004e800, 0x0004b800, - 0x00048000, 0x00049800, 0x0004f800, 0x00048800, - 0x00056000, 0x00052000, 0x00053000, 0x00051000, - 0x00055000, 0x00052800, 0x00055800, 0x00054800, - 0x00057000, 0x00054000, 0x00056800, 0x00053800, - 0x00050000, 0x00051800, 0x00057800, 0x00050800, - 0x0002e000, 0x0002a000, 0x0002b000, 0x00029000, - 0x0002d000, 0x0002a800, 0x0002d800, 0x0002c800, - 0x0002f000, 0x0002c000, 0x0002e800, 0x0002b800, - 0x00028000, 0x00029800, 0x0002f800, 0x00028800, - 0x00066000, 0x00062000, 0x00063000, 0x00061000, - 0x00065000, 0x00062800, 0x00065800, 0x00064800, - 0x00067000, 0x00064000, 0x00066800, 0x00063800, - 0x00060000, 0x00061800, 0x00067800, 0x00060800, - 0x0000e000, 0x0000a000, 0x0000b000, 0x00009000, - 0x0000d000, 0x0000a800, 0x0000d800, 0x0000c800, - 0x0000f000, 0x0000c000, 0x0000e800, 0x0000b800, - 0x00008000, 0x00009800, 0x0000f800, 0x00008800, - 0x00076000, 0x00072000, 0x00073000, 0x00071000, - 0x00075000, 0x00072800, 0x00075800, 0x00074800, - 0x00077000, 0x00074000, 0x00076800, 0x00073800, - 0x00070000, 0x00071800, 0x00077800, 0x00070800, - 0x00026000, 0x00022000, 0x00023000, 0x00021000, - 0x00025000, 0x00022800, 0x00025800, 0x00024800, - 0x00027000, 0x00024000, 0x00026800, 0x00023800, - 0x00020000, 0x00021800, 0x00027800, 0x00020800, - 0x0003e000, 0x0003a000, 0x0003b000, 0x00039000, - 0x0003d000, 0x0003a800, 0x0003d800, 0x0003c800, - 0x0003f000, 0x0003c000, 0x0003e800, 0x0003b800, - 0x00038000, 0x00039800, 0x0003f800, 0x00038800, - 0x0005e000, 0x0005a000, 0x0005b000, 0x00059000, - 0x0005d000, 0x0005a800, 0x0005d800, 0x0005c800, - 0x0005f000, 0x0005c000, 0x0005e800, 0x0005b800, - 0x00058000, 0x00059800, 0x0005f800, 0x00058800, - 0x0006e000, 0x0006a000, 0x0006b000, 0x00069000, - 0x0006d000, 0x0006a800, 0x0006d800, 0x0006c800, - 0x0006f000, 0x0006c000, 0x0006e800, 0x0006b800, - 0x00068000, 0x00069800, 0x0006f800, 0x00068800, - 0x00006000, 0x00002000, 0x00003000, 0x00001000, - 0x00005000, 0x00002800, 0x00005800, 0x00004800, - 0x00007000, 0x00004000, 0x00006800, 0x00003800, - 0x00000000, 0x00001800, 0x00007800, 0x00000800, - 0x0007e000, 0x0007a000, 0x0007b000, 0x00079000, - 0x0007d000, 0x0007a800, 0x0007d800, 0x0007c800, - 0x0007f000, 0x0007c000, 0x0007e800, 0x0007b800, - 0x00078000, 0x00079800, 0x0007f800, 0x00078800, - /* 1 */ - 0x06580000, 0x06180000, 0x06280000, 0x06400000, - 0x06100000, 0x06780000, 0x06500000, 0x06680000, - 0x06700000, 0x06080000, 0x06380000, 0x06200000, - 0x06600000, 0x06480000, 0x06300000, 0x06000000, - 0x04580000, 0x04180000, 0x04280000, 0x04400000, - 0x04100000, 0x04780000, 0x04500000, 0x04680000, - 0x04700000, 0x04080000, 0x04380000, 0x04200000, - 0x04600000, 0x04480000, 0x04300000, 0x04000000, - 0x01580000, 0x01180000, 0x01280000, 0x01400000, - 0x01100000, 0x01780000, 0x01500000, 0x01680000, - 0x01700000, 0x01080000, 0x01380000, 0x01200000, - 0x01600000, 0x01480000, 0x01300000, 0x01000000, - 0x00d80000, 0x00980000, 0x00a80000, 0x00c00000, - 0x00900000, 0x00f80000, 0x00d00000, 0x00e80000, - 0x00f00000, 0x00880000, 0x00b80000, 0x00a00000, - 0x00e00000, 0x00c80000, 0x00b00000, 0x00800000, - 0x06d80000, 0x06980000, 0x06a80000, 0x06c00000, - 0x06900000, 0x06f80000, 0x06d00000, 0x06e80000, - 0x06f00000, 0x06880000, 0x06b80000, 0x06a00000, - 0x06e00000, 0x06c80000, 0x06b00000, 0x06800000, - 0x02580000, 0x02180000, 0x02280000, 0x02400000, - 0x02100000, 0x02780000, 0x02500000, 0x02680000, - 0x02700000, 0x02080000, 0x02380000, 0x02200000, - 0x02600000, 0x02480000, 0x02300000, 0x02000000, - 0x07d80000, 0x07980000, 0x07a80000, 0x07c00000, - 0x07900000, 0x07f80000, 0x07d00000, 0x07e80000, - 0x07f00000, 0x07880000, 0x07b80000, 0x07a00000, - 0x07e00000, 0x07c80000, 0x07b00000, 0x07800000, - 0x03580000, 0x03180000, 0x03280000, 0x03400000, - 0x03100000, 0x03780000, 0x03500000, 0x03680000, - 0x03700000, 0x03080000, 0x03380000, 0x03200000, - 0x03600000, 0x03480000, 0x03300000, 0x03000000, - 0x03d80000, 0x03980000, 0x03a80000, 0x03c00000, - 0x03900000, 0x03f80000, 0x03d00000, 0x03e80000, - 0x03f00000, 0x03880000, 0x03b80000, 0x03a00000, - 0x03e00000, 0x03c80000, 0x03b00000, 0x03800000, - 0x00580000, 0x00180000, 0x00280000, 0x00400000, - 0x00100000, 0x00780000, 0x00500000, 0x00680000, - 0x00700000, 0x00080000, 0x00380000, 0x00200000, - 0x00600000, 0x00480000, 0x00300000, 0x00000000, - 0x05580000, 0x05180000, 0x05280000, 0x05400000, - 0x05100000, 0x05780000, 0x05500000, 0x05680000, - 0x05700000, 0x05080000, 0x05380000, 0x05200000, - 0x05600000, 0x05480000, 0x05300000, 0x05000000, - 0x02d80000, 0x02980000, 0x02a80000, 0x02c00000, - 0x02900000, 0x02f80000, 0x02d00000, 0x02e80000, - 0x02f00000, 0x02880000, 0x02b80000, 0x02a00000, - 0x02e00000, 0x02c80000, 0x02b00000, 0x02800000, - 0x01d80000, 0x01980000, 0x01a80000, 0x01c00000, - 0x01900000, 0x01f80000, 0x01d00000, 0x01e80000, - 0x01f00000, 0x01880000, 0x01b80000, 0x01a00000, - 0x01e00000, 0x01c80000, 0x01b00000, 0x01800000, - 0x07580000, 0x07180000, 0x07280000, 0x07400000, - 0x07100000, 0x07780000, 0x07500000, 0x07680000, - 0x07700000, 0x07080000, 0x07380000, 0x07200000, - 0x07600000, 0x07480000, 0x07300000, 0x07000000, - 0x04d80000, 0x04980000, 0x04a80000, 0x04c00000, - 0x04900000, 0x04f80000, 0x04d00000, 0x04e80000, - 0x04f00000, 0x04880000, 0x04b80000, 0x04a00000, - 0x04e00000, 0x04c80000, 0x04b00000, 0x04800000, - 0x05d80000, 0x05980000, 0x05a80000, 0x05c00000, - 0x05900000, 0x05f80000, 0x05d00000, 0x05e80000, - 0x05f00000, 0x05880000, 0x05b80000, 0x05a00000, - 0x05e00000, 0x05c80000, 0x05b00000, 0x05800000, - /* 2 */ - 0xb8000002, 0xf8000002, 0xa8000002, 0xd0000002, - 0xc0000002, 0x88000002, 0xb0000002, 0xe8000002, - 0x80000002, 0xc8000002, 0x98000002, 0xf0000002, - 0xd8000002, 0xa0000002, 0x90000002, 0xe0000002, - 0xb8000006, 0xf8000006, 0xa8000006, 0xd0000006, - 0xc0000006, 0x88000006, 0xb0000006, 0xe8000006, - 0x80000006, 0xc8000006, 0x98000006, 0xf0000006, - 0xd8000006, 0xa0000006, 0x90000006, 0xe0000006, - 0xb8000007, 0xf8000007, 0xa8000007, 0xd0000007, - 0xc0000007, 0x88000007, 0xb0000007, 0xe8000007, - 0x80000007, 0xc8000007, 0x98000007, 0xf0000007, - 0xd8000007, 0xa0000007, 0x90000007, 0xe0000007, - 0x38000003, 0x78000003, 0x28000003, 0x50000003, - 0x40000003, 0x08000003, 0x30000003, 0x68000003, - 0x00000003, 0x48000003, 0x18000003, 0x70000003, - 0x58000003, 0x20000003, 0x10000003, 0x60000003, - 0xb8000004, 0xf8000004, 0xa8000004, 0xd0000004, - 0xc0000004, 0x88000004, 0xb0000004, 0xe8000004, - 0x80000004, 0xc8000004, 0x98000004, 0xf0000004, - 0xd8000004, 0xa0000004, 0x90000004, 0xe0000004, - 0x38000001, 0x78000001, 0x28000001, 0x50000001, - 0x40000001, 0x08000001, 0x30000001, 0x68000001, - 0x00000001, 0x48000001, 0x18000001, 0x70000001, - 0x58000001, 0x20000001, 0x10000001, 0x60000001, - 0x38000006, 0x78000006, 0x28000006, 0x50000006, - 0x40000006, 0x08000006, 0x30000006, 0x68000006, - 0x00000006, 0x48000006, 0x18000006, 0x70000006, - 0x58000006, 0x20000006, 0x10000006, 0x60000006, - 0x38000005, 0x78000005, 0x28000005, 0x50000005, - 0x40000005, 0x08000005, 0x30000005, 0x68000005, - 0x00000005, 0x48000005, 0x18000005, 0x70000005, - 0x58000005, 0x20000005, 0x10000005, 0x60000005, - 0xb8000005, 0xf8000005, 0xa8000005, 0xd0000005, - 0xc0000005, 0x88000005, 0xb0000005, 0xe8000005, - 0x80000005, 0xc8000005, 0x98000005, 0xf0000005, - 0xd8000005, 0xa0000005, 0x90000005, 0xe0000005, - 0xb8000003, 0xf8000003, 0xa8000003, 0xd0000003, - 0xc0000003, 0x88000003, 0xb0000003, 0xe8000003, - 0x80000003, 0xc8000003, 0x98000003, 0xf0000003, - 0xd8000003, 0xa0000003, 0x90000003, 0xe0000003, - 0x38000004, 0x78000004, 0x28000004, 0x50000004, - 0x40000004, 0x08000004, 0x30000004, 0x68000004, - 0x00000004, 0x48000004, 0x18000004, 0x70000004, - 0x58000004, 0x20000004, 0x10000004, 0x60000004, - 0xb8000000, 0xf8000000, 0xa8000000, 0xd0000000, - 0xc0000000, 0x88000000, 0xb0000000, 0xe8000000, - 0x80000000, 0xc8000000, 0x98000000, 0xf0000000, - 0xd8000000, 0xa0000000, 0x90000000, 0xe0000000, - 0x38000002, 0x78000002, 0x28000002, 0x50000002, - 0x40000002, 0x08000002, 0x30000002, 0x68000002, - 0x00000002, 0x48000002, 0x18000002, 0x70000002, - 0x58000002, 0x20000002, 0x10000002, 0x60000002, - 0xb8000001, 0xf8000001, 0xa8000001, 0xd0000001, - 0xc0000001, 0x88000001, 0xb0000001, 0xe8000001, - 0x80000001, 0xc8000001, 0x98000001, 0xf0000001, - 0xd8000001, 0xa0000001, 0x90000001, 0xe0000001, - 0x38000007, 0x78000007, 0x28000007, 0x50000007, - 0x40000007, 0x08000007, 0x30000007, 0x68000007, - 0x00000007, 0x48000007, 0x18000007, 0x70000007, - 0x58000007, 0x20000007, 0x10000007, 0x60000007, - 0x38000000, 0x78000000, 0x28000000, 0x50000000, - 0x40000000, 0x08000000, 0x30000000, 0x68000000, - 0x00000000, 0x48000000, 0x18000000, 0x70000000, - 0x58000000, 0x20000000, 0x10000000, 0x60000000, - /* 3 */ - 0x000000c0, 0x000000f0, 0x00000090, 0x000000a8, - 0x000000b0, 0x000000c8, 0x00000088, 0x000000e0, - 0x000000f8, 0x000000a0, 0x000000d8, 0x00000080, - 0x000000e8, 0x000000d0, 0x00000098, 0x000000b8, - 0x000003c0, 0x000003f0, 0x00000390, 0x000003a8, - 0x000003b0, 0x000003c8, 0x00000388, 0x000003e0, - 0x000003f8, 0x000003a0, 0x000003d8, 0x00000380, - 0x000003e8, 0x000003d0, 0x00000398, 0x000003b8, - 0x00000740, 0x00000770, 0x00000710, 0x00000728, - 0x00000730, 0x00000748, 0x00000708, 0x00000760, - 0x00000778, 0x00000720, 0x00000758, 0x00000700, - 0x00000768, 0x00000750, 0x00000718, 0x00000738, - 0x000006c0, 0x000006f0, 0x00000690, 0x000006a8, - 0x000006b0, 0x000006c8, 0x00000688, 0x000006e0, - 0x000006f8, 0x000006a0, 0x000006d8, 0x00000680, - 0x000006e8, 0x000006d0, 0x00000698, 0x000006b8, - 0x00000040, 0x00000070, 0x00000010, 0x00000028, - 0x00000030, 0x00000048, 0x00000008, 0x00000060, - 0x00000078, 0x00000020, 0x00000058, 0x00000000, - 0x00000068, 0x00000050, 0x00000018, 0x00000038, - 0x000002c0, 0x000002f0, 0x00000290, 0x000002a8, - 0x000002b0, 0x000002c8, 0x00000288, 0x000002e0, - 0x000002f8, 0x000002a0, 0x000002d8, 0x00000280, - 0x000002e8, 0x000002d0, 0x00000298, 0x000002b8, - 0x00000440, 0x00000470, 0x00000410, 0x00000428, - 0x00000430, 0x00000448, 0x00000408, 0x00000460, - 0x00000478, 0x00000420, 0x00000458, 0x00000400, - 0x00000468, 0x00000450, 0x00000418, 0x00000438, - 0x000001c0, 0x000001f0, 0x00000190, 0x000001a8, - 0x000001b0, 0x000001c8, 0x00000188, 0x000001e0, - 0x000001f8, 0x000001a0, 0x000001d8, 0x00000180, - 0x000001e8, 0x000001d0, 0x00000198, 0x000001b8, - 0x00000240, 0x00000270, 0x00000210, 0x00000228, - 0x00000230, 0x00000248, 0x00000208, 0x00000260, - 0x00000278, 0x00000220, 0x00000258, 0x00000200, - 0x00000268, 0x00000250, 0x00000218, 0x00000238, - 0x000007c0, 0x000007f0, 0x00000790, 0x000007a8, - 0x000007b0, 0x000007c8, 0x00000788, 0x000007e0, - 0x000007f8, 0x000007a0, 0x000007d8, 0x00000780, - 0x000007e8, 0x000007d0, 0x00000798, 0x000007b8, - 0x00000540, 0x00000570, 0x00000510, 0x00000528, - 0x00000530, 0x00000548, 0x00000508, 0x00000560, - 0x00000578, 0x00000520, 0x00000558, 0x00000500, - 0x00000568, 0x00000550, 0x00000518, 0x00000538, - 0x00000340, 0x00000370, 0x00000310, 0x00000328, - 0x00000330, 0x00000348, 0x00000308, 0x00000360, - 0x00000378, 0x00000320, 0x00000358, 0x00000300, - 0x00000368, 0x00000350, 0x00000318, 0x00000338, - 0x000004c0, 0x000004f0, 0x00000490, 0x000004a8, - 0x000004b0, 0x000004c8, 0x00000488, 0x000004e0, - 0x000004f8, 0x000004a0, 0x000004d8, 0x00000480, - 0x000004e8, 0x000004d0, 0x00000498, 0x000004b8, - 0x00000640, 0x00000670, 0x00000610, 0x00000628, - 0x00000630, 0x00000648, 0x00000608, 0x00000660, - 0x00000678, 0x00000620, 0x00000658, 0x00000600, - 0x00000668, 0x00000650, 0x00000618, 0x00000638, - 0x000005c0, 0x000005f0, 0x00000590, 0x000005a8, - 0x000005b0, 0x000005c8, 0x00000588, 0x000005e0, - 0x000005f8, 0x000005a0, 0x000005d8, 0x00000580, - 0x000005e8, 0x000005d0, 0x00000598, 0x000005b8, - 0x00000140, 0x00000170, 0x00000110, 0x00000128, - 0x00000130, 0x00000148, 0x00000108, 0x00000160, - 0x00000178, 0x00000120, 0x00000158, 0x00000100, - 0x00000168, 0x00000150, 0x00000118, 0x00000138, - } -}; +const struct gost28147_param gost28147_param_TC26_Z = { 1, + { + /* 0 */ + 0x00036000, + 0x00032000, + 0x00033000, + 0x00031000, + 0x00035000, + 0x00032800, + 0x00035800, + 0x00034800, + 0x00037000, + 0x00034000, + 0x00036800, + 0x00033800, + 0x00030000, + 0x00031800, + 0x00037800, + 0x00030800, + 0x00046000, + 0x00042000, + 0x00043000, + 0x00041000, + 0x00045000, + 0x00042800, + 0x00045800, + 0x00044800, + 0x00047000, + 0x00044000, + 0x00046800, + 0x00043800, + 0x00040000, + 0x00041800, + 0x00047800, + 0x00040800, + 0x00016000, + 0x00012000, + 0x00013000, + 0x00011000, + 0x00015000, + 0x00012800, + 0x00015800, + 0x00014800, + 0x00017000, + 0x00014000, + 0x00016800, + 0x00013800, + 0x00010000, + 0x00011800, + 0x00017800, + 0x00010800, + 0x0001e000, + 0x0001a000, + 0x0001b000, + 0x00019000, + 0x0001d000, + 0x0001a800, + 0x0001d800, + 0x0001c800, + 0x0001f000, + 0x0001c000, + 0x0001e800, + 0x0001b800, + 0x00018000, + 0x00019800, + 0x0001f800, + 0x00018800, + 0x0004e000, + 0x0004a000, + 0x0004b000, + 0x00049000, + 0x0004d000, + 0x0004a800, + 0x0004d800, + 0x0004c800, + 0x0004f000, + 0x0004c000, + 0x0004e800, + 0x0004b800, + 0x00048000, + 0x00049800, + 0x0004f800, + 0x00048800, + 0x00056000, + 0x00052000, + 0x00053000, + 0x00051000, + 0x00055000, + 0x00052800, + 0x00055800, + 0x00054800, + 0x00057000, + 0x00054000, + 0x00056800, + 0x00053800, + 0x00050000, + 0x00051800, + 0x00057800, + 0x00050800, + 0x0002e000, + 0x0002a000, + 0x0002b000, + 0x00029000, + 0x0002d000, + 0x0002a800, + 0x0002d800, + 0x0002c800, + 0x0002f000, + 0x0002c000, + 0x0002e800, + 0x0002b800, + 0x00028000, + 0x00029800, + 0x0002f800, + 0x00028800, + 0x00066000, + 0x00062000, + 0x00063000, + 0x00061000, + 0x00065000, + 0x00062800, + 0x00065800, + 0x00064800, + 0x00067000, + 0x00064000, + 0x00066800, + 0x00063800, + 0x00060000, + 0x00061800, + 0x00067800, + 0x00060800, + 0x0000e000, + 0x0000a000, + 0x0000b000, + 0x00009000, + 0x0000d000, + 0x0000a800, + 0x0000d800, + 0x0000c800, + 0x0000f000, + 0x0000c000, + 0x0000e800, + 0x0000b800, + 0x00008000, + 0x00009800, + 0x0000f800, + 0x00008800, + 0x00076000, + 0x00072000, + 0x00073000, + 0x00071000, + 0x00075000, + 0x00072800, + 0x00075800, + 0x00074800, + 0x00077000, + 0x00074000, + 0x00076800, + 0x00073800, + 0x00070000, + 0x00071800, + 0x00077800, + 0x00070800, + 0x00026000, + 0x00022000, + 0x00023000, + 0x00021000, + 0x00025000, + 0x00022800, + 0x00025800, + 0x00024800, + 0x00027000, + 0x00024000, + 0x00026800, + 0x00023800, + 0x00020000, + 0x00021800, + 0x00027800, + 0x00020800, + 0x0003e000, + 0x0003a000, + 0x0003b000, + 0x00039000, + 0x0003d000, + 0x0003a800, + 0x0003d800, + 0x0003c800, + 0x0003f000, + 0x0003c000, + 0x0003e800, + 0x0003b800, + 0x00038000, + 0x00039800, + 0x0003f800, + 0x00038800, + 0x0005e000, + 0x0005a000, + 0x0005b000, + 0x00059000, + 0x0005d000, + 0x0005a800, + 0x0005d800, + 0x0005c800, + 0x0005f000, + 0x0005c000, + 0x0005e800, + 0x0005b800, + 0x00058000, + 0x00059800, + 0x0005f800, + 0x00058800, + 0x0006e000, + 0x0006a000, + 0x0006b000, + 0x00069000, + 0x0006d000, + 0x0006a800, + 0x0006d800, + 0x0006c800, + 0x0006f000, + 0x0006c000, + 0x0006e800, + 0x0006b800, + 0x00068000, + 0x00069800, + 0x0006f800, + 0x00068800, + 0x00006000, + 0x00002000, + 0x00003000, + 0x00001000, + 0x00005000, + 0x00002800, + 0x00005800, + 0x00004800, + 0x00007000, + 0x00004000, + 0x00006800, + 0x00003800, + 0x00000000, + 0x00001800, + 0x00007800, + 0x00000800, + 0x0007e000, + 0x0007a000, + 0x0007b000, + 0x00079000, + 0x0007d000, + 0x0007a800, + 0x0007d800, + 0x0007c800, + 0x0007f000, + 0x0007c000, + 0x0007e800, + 0x0007b800, + 0x00078000, + 0x00079800, + 0x0007f800, + 0x00078800, + /* 1 */ + 0x06580000, + 0x06180000, + 0x06280000, + 0x06400000, + 0x06100000, + 0x06780000, + 0x06500000, + 0x06680000, + 0x06700000, + 0x06080000, + 0x06380000, + 0x06200000, + 0x06600000, + 0x06480000, + 0x06300000, + 0x06000000, + 0x04580000, + 0x04180000, + 0x04280000, + 0x04400000, + 0x04100000, + 0x04780000, + 0x04500000, + 0x04680000, + 0x04700000, + 0x04080000, + 0x04380000, + 0x04200000, + 0x04600000, + 0x04480000, + 0x04300000, + 0x04000000, + 0x01580000, + 0x01180000, + 0x01280000, + 0x01400000, + 0x01100000, + 0x01780000, + 0x01500000, + 0x01680000, + 0x01700000, + 0x01080000, + 0x01380000, + 0x01200000, + 0x01600000, + 0x01480000, + 0x01300000, + 0x01000000, + 0x00d80000, + 0x00980000, + 0x00a80000, + 0x00c00000, + 0x00900000, + 0x00f80000, + 0x00d00000, + 0x00e80000, + 0x00f00000, + 0x00880000, + 0x00b80000, + 0x00a00000, + 0x00e00000, + 0x00c80000, + 0x00b00000, + 0x00800000, + 0x06d80000, + 0x06980000, + 0x06a80000, + 0x06c00000, + 0x06900000, + 0x06f80000, + 0x06d00000, + 0x06e80000, + 0x06f00000, + 0x06880000, + 0x06b80000, + 0x06a00000, + 0x06e00000, + 0x06c80000, + 0x06b00000, + 0x06800000, + 0x02580000, + 0x02180000, + 0x02280000, + 0x02400000, + 0x02100000, + 0x02780000, + 0x02500000, + 0x02680000, + 0x02700000, + 0x02080000, + 0x02380000, + 0x02200000, + 0x02600000, + 0x02480000, + 0x02300000, + 0x02000000, + 0x07d80000, + 0x07980000, + 0x07a80000, + 0x07c00000, + 0x07900000, + 0x07f80000, + 0x07d00000, + 0x07e80000, + 0x07f00000, + 0x07880000, + 0x07b80000, + 0x07a00000, + 0x07e00000, + 0x07c80000, + 0x07b00000, + 0x07800000, + 0x03580000, + 0x03180000, + 0x03280000, + 0x03400000, + 0x03100000, + 0x03780000, + 0x03500000, + 0x03680000, + 0x03700000, + 0x03080000, + 0x03380000, + 0x03200000, + 0x03600000, + 0x03480000, + 0x03300000, + 0x03000000, + 0x03d80000, + 0x03980000, + 0x03a80000, + 0x03c00000, + 0x03900000, + 0x03f80000, + 0x03d00000, + 0x03e80000, + 0x03f00000, + 0x03880000, + 0x03b80000, + 0x03a00000, + 0x03e00000, + 0x03c80000, + 0x03b00000, + 0x03800000, + 0x00580000, + 0x00180000, + 0x00280000, + 0x00400000, + 0x00100000, + 0x00780000, + 0x00500000, + 0x00680000, + 0x00700000, + 0x00080000, + 0x00380000, + 0x00200000, + 0x00600000, + 0x00480000, + 0x00300000, + 0x00000000, + 0x05580000, + 0x05180000, + 0x05280000, + 0x05400000, + 0x05100000, + 0x05780000, + 0x05500000, + 0x05680000, + 0x05700000, + 0x05080000, + 0x05380000, + 0x05200000, + 0x05600000, + 0x05480000, + 0x05300000, + 0x05000000, + 0x02d80000, + 0x02980000, + 0x02a80000, + 0x02c00000, + 0x02900000, + 0x02f80000, + 0x02d00000, + 0x02e80000, + 0x02f00000, + 0x02880000, + 0x02b80000, + 0x02a00000, + 0x02e00000, + 0x02c80000, + 0x02b00000, + 0x02800000, + 0x01d80000, + 0x01980000, + 0x01a80000, + 0x01c00000, + 0x01900000, + 0x01f80000, + 0x01d00000, + 0x01e80000, + 0x01f00000, + 0x01880000, + 0x01b80000, + 0x01a00000, + 0x01e00000, + 0x01c80000, + 0x01b00000, + 0x01800000, + 0x07580000, + 0x07180000, + 0x07280000, + 0x07400000, + 0x07100000, + 0x07780000, + 0x07500000, + 0x07680000, + 0x07700000, + 0x07080000, + 0x07380000, + 0x07200000, + 0x07600000, + 0x07480000, + 0x07300000, + 0x07000000, + 0x04d80000, + 0x04980000, + 0x04a80000, + 0x04c00000, + 0x04900000, + 0x04f80000, + 0x04d00000, + 0x04e80000, + 0x04f00000, + 0x04880000, + 0x04b80000, + 0x04a00000, + 0x04e00000, + 0x04c80000, + 0x04b00000, + 0x04800000, + 0x05d80000, + 0x05980000, + 0x05a80000, + 0x05c00000, + 0x05900000, + 0x05f80000, + 0x05d00000, + 0x05e80000, + 0x05f00000, + 0x05880000, + 0x05b80000, + 0x05a00000, + 0x05e00000, + 0x05c80000, + 0x05b00000, + 0x05800000, + /* 2 */ + 0xb8000002, + 0xf8000002, + 0xa8000002, + 0xd0000002, + 0xc0000002, + 0x88000002, + 0xb0000002, + 0xe8000002, + 0x80000002, + 0xc8000002, + 0x98000002, + 0xf0000002, + 0xd8000002, + 0xa0000002, + 0x90000002, + 0xe0000002, + 0xb8000006, + 0xf8000006, + 0xa8000006, + 0xd0000006, + 0xc0000006, + 0x88000006, + 0xb0000006, + 0xe8000006, + 0x80000006, + 0xc8000006, + 0x98000006, + 0xf0000006, + 0xd8000006, + 0xa0000006, + 0x90000006, + 0xe0000006, + 0xb8000007, + 0xf8000007, + 0xa8000007, + 0xd0000007, + 0xc0000007, + 0x88000007, + 0xb0000007, + 0xe8000007, + 0x80000007, + 0xc8000007, + 0x98000007, + 0xf0000007, + 0xd8000007, + 0xa0000007, + 0x90000007, + 0xe0000007, + 0x38000003, + 0x78000003, + 0x28000003, + 0x50000003, + 0x40000003, + 0x08000003, + 0x30000003, + 0x68000003, + 0x00000003, + 0x48000003, + 0x18000003, + 0x70000003, + 0x58000003, + 0x20000003, + 0x10000003, + 0x60000003, + 0xb8000004, + 0xf8000004, + 0xa8000004, + 0xd0000004, + 0xc0000004, + 0x88000004, + 0xb0000004, + 0xe8000004, + 0x80000004, + 0xc8000004, + 0x98000004, + 0xf0000004, + 0xd8000004, + 0xa0000004, + 0x90000004, + 0xe0000004, + 0x38000001, + 0x78000001, + 0x28000001, + 0x50000001, + 0x40000001, + 0x08000001, + 0x30000001, + 0x68000001, + 0x00000001, + 0x48000001, + 0x18000001, + 0x70000001, + 0x58000001, + 0x20000001, + 0x10000001, + 0x60000001, + 0x38000006, + 0x78000006, + 0x28000006, + 0x50000006, + 0x40000006, + 0x08000006, + 0x30000006, + 0x68000006, + 0x00000006, + 0x48000006, + 0x18000006, + 0x70000006, + 0x58000006, + 0x20000006, + 0x10000006, + 0x60000006, + 0x38000005, + 0x78000005, + 0x28000005, + 0x50000005, + 0x40000005, + 0x08000005, + 0x30000005, + 0x68000005, + 0x00000005, + 0x48000005, + 0x18000005, + 0x70000005, + 0x58000005, + 0x20000005, + 0x10000005, + 0x60000005, + 0xb8000005, + 0xf8000005, + 0xa8000005, + 0xd0000005, + 0xc0000005, + 0x88000005, + 0xb0000005, + 0xe8000005, + 0x80000005, + 0xc8000005, + 0x98000005, + 0xf0000005, + 0xd8000005, + 0xa0000005, + 0x90000005, + 0xe0000005, + 0xb8000003, + 0xf8000003, + 0xa8000003, + 0xd0000003, + 0xc0000003, + 0x88000003, + 0xb0000003, + 0xe8000003, + 0x80000003, + 0xc8000003, + 0x98000003, + 0xf0000003, + 0xd8000003, + 0xa0000003, + 0x90000003, + 0xe0000003, + 0x38000004, + 0x78000004, + 0x28000004, + 0x50000004, + 0x40000004, + 0x08000004, + 0x30000004, + 0x68000004, + 0x00000004, + 0x48000004, + 0x18000004, + 0x70000004, + 0x58000004, + 0x20000004, + 0x10000004, + 0x60000004, + 0xb8000000, + 0xf8000000, + 0xa8000000, + 0xd0000000, + 0xc0000000, + 0x88000000, + 0xb0000000, + 0xe8000000, + 0x80000000, + 0xc8000000, + 0x98000000, + 0xf0000000, + 0xd8000000, + 0xa0000000, + 0x90000000, + 0xe0000000, + 0x38000002, + 0x78000002, + 0x28000002, + 0x50000002, + 0x40000002, + 0x08000002, + 0x30000002, + 0x68000002, + 0x00000002, + 0x48000002, + 0x18000002, + 0x70000002, + 0x58000002, + 0x20000002, + 0x10000002, + 0x60000002, + 0xb8000001, + 0xf8000001, + 0xa8000001, + 0xd0000001, + 0xc0000001, + 0x88000001, + 0xb0000001, + 0xe8000001, + 0x80000001, + 0xc8000001, + 0x98000001, + 0xf0000001, + 0xd8000001, + 0xa0000001, + 0x90000001, + 0xe0000001, + 0x38000007, + 0x78000007, + 0x28000007, + 0x50000007, + 0x40000007, + 0x08000007, + 0x30000007, + 0x68000007, + 0x00000007, + 0x48000007, + 0x18000007, + 0x70000007, + 0x58000007, + 0x20000007, + 0x10000007, + 0x60000007, + 0x38000000, + 0x78000000, + 0x28000000, + 0x50000000, + 0x40000000, + 0x08000000, + 0x30000000, + 0x68000000, + 0x00000000, + 0x48000000, + 0x18000000, + 0x70000000, + 0x58000000, + 0x20000000, + 0x10000000, + 0x60000000, + /* 3 */ + 0x000000c0, + 0x000000f0, + 0x00000090, + 0x000000a8, + 0x000000b0, + 0x000000c8, + 0x00000088, + 0x000000e0, + 0x000000f8, + 0x000000a0, + 0x000000d8, + 0x00000080, + 0x000000e8, + 0x000000d0, + 0x00000098, + 0x000000b8, + 0x000003c0, + 0x000003f0, + 0x00000390, + 0x000003a8, + 0x000003b0, + 0x000003c8, + 0x00000388, + 0x000003e0, + 0x000003f8, + 0x000003a0, + 0x000003d8, + 0x00000380, + 0x000003e8, + 0x000003d0, + 0x00000398, + 0x000003b8, + 0x00000740, + 0x00000770, + 0x00000710, + 0x00000728, + 0x00000730, + 0x00000748, + 0x00000708, + 0x00000760, + 0x00000778, + 0x00000720, + 0x00000758, + 0x00000700, + 0x00000768, + 0x00000750, + 0x00000718, + 0x00000738, + 0x000006c0, + 0x000006f0, + 0x00000690, + 0x000006a8, + 0x000006b0, + 0x000006c8, + 0x00000688, + 0x000006e0, + 0x000006f8, + 0x000006a0, + 0x000006d8, + 0x00000680, + 0x000006e8, + 0x000006d0, + 0x00000698, + 0x000006b8, + 0x00000040, + 0x00000070, + 0x00000010, + 0x00000028, + 0x00000030, + 0x00000048, + 0x00000008, + 0x00000060, + 0x00000078, + 0x00000020, + 0x00000058, + 0x00000000, + 0x00000068, + 0x00000050, + 0x00000018, + 0x00000038, + 0x000002c0, + 0x000002f0, + 0x00000290, + 0x000002a8, + 0x000002b0, + 0x000002c8, + 0x00000288, + 0x000002e0, + 0x000002f8, + 0x000002a0, + 0x000002d8, + 0x00000280, + 0x000002e8, + 0x000002d0, + 0x00000298, + 0x000002b8, + 0x00000440, + 0x00000470, + 0x00000410, + 0x00000428, + 0x00000430, + 0x00000448, + 0x00000408, + 0x00000460, + 0x00000478, + 0x00000420, + 0x00000458, + 0x00000400, + 0x00000468, + 0x00000450, + 0x00000418, + 0x00000438, + 0x000001c0, + 0x000001f0, + 0x00000190, + 0x000001a8, + 0x000001b0, + 0x000001c8, + 0x00000188, + 0x000001e0, + 0x000001f8, + 0x000001a0, + 0x000001d8, + 0x00000180, + 0x000001e8, + 0x000001d0, + 0x00000198, + 0x000001b8, + 0x00000240, + 0x00000270, + 0x00000210, + 0x00000228, + 0x00000230, + 0x00000248, + 0x00000208, + 0x00000260, + 0x00000278, + 0x00000220, + 0x00000258, + 0x00000200, + 0x00000268, + 0x00000250, + 0x00000218, + 0x00000238, + 0x000007c0, + 0x000007f0, + 0x00000790, + 0x000007a8, + 0x000007b0, + 0x000007c8, + 0x00000788, + 0x000007e0, + 0x000007f8, + 0x000007a0, + 0x000007d8, + 0x00000780, + 0x000007e8, + 0x000007d0, + 0x00000798, + 0x000007b8, + 0x00000540, + 0x00000570, + 0x00000510, + 0x00000528, + 0x00000530, + 0x00000548, + 0x00000508, + 0x00000560, + 0x00000578, + 0x00000520, + 0x00000558, + 0x00000500, + 0x00000568, + 0x00000550, + 0x00000518, + 0x00000538, + 0x00000340, + 0x00000370, + 0x00000310, + 0x00000328, + 0x00000330, + 0x00000348, + 0x00000308, + 0x00000360, + 0x00000378, + 0x00000320, + 0x00000358, + 0x00000300, + 0x00000368, + 0x00000350, + 0x00000318, + 0x00000338, + 0x000004c0, + 0x000004f0, + 0x00000490, + 0x000004a8, + 0x000004b0, + 0x000004c8, + 0x00000488, + 0x000004e0, + 0x000004f8, + 0x000004a0, + 0x000004d8, + 0x00000480, + 0x000004e8, + 0x000004d0, + 0x00000498, + 0x000004b8, + 0x00000640, + 0x00000670, + 0x00000610, + 0x00000628, + 0x00000630, + 0x00000648, + 0x00000608, + 0x00000660, + 0x00000678, + 0x00000620, + 0x00000658, + 0x00000600, + 0x00000668, + 0x00000650, + 0x00000618, + 0x00000638, + 0x000005c0, + 0x000005f0, + 0x00000590, + 0x000005a8, + 0x000005b0, + 0x000005c8, + 0x00000588, + 0x000005e0, + 0x000005f8, + 0x000005a0, + 0x000005d8, + 0x00000580, + 0x000005e8, + 0x000005d0, + 0x00000598, + 0x000005b8, + 0x00000140, + 0x00000170, + 0x00000110, + 0x00000128, + 0x00000130, + 0x00000148, + 0x00000108, + 0x00000160, + 0x00000178, + 0x00000120, + 0x00000158, + 0x00000100, + 0x00000168, + 0x00000150, + 0x00000118, + 0x00000138, + } }; /* * A macro that performs a full encryption round of GOST 28147-89. * Temporary variables tmp assumed and variables r and l for left and right * blocks. */ -# define GOST_ENCRYPT_ROUND(key1, key2, sbox) \ - tmp = (key1) + r; \ - l ^= (sbox)[0*256 + (tmp & 0xff)] ^ (sbox)[1*256 + ((tmp >> 8) & 0xff)] ^ \ - (sbox)[2*256 + ((tmp >> 16) & 0xff)] ^ (sbox)[3*256 + (tmp >> 24)]; \ - tmp = (key2) + l; \ - r ^= (sbox)[0*256 + (tmp & 0xff)] ^ (sbox)[1*256 + ((tmp >> 8) & 0xff)] ^ \ - (sbox)[2*256 + ((tmp >> 16) & 0xff)] ^ (sbox)[3*256 + (tmp >> 24)]; +#define GOST_ENCRYPT_ROUND(key1, key2, sbox) \ + tmp = (key1) + r; \ + l ^= (sbox)[0 * 256 + (tmp & 0xff)] ^ \ + (sbox)[1 * 256 + ((tmp >> 8) & 0xff)] ^ \ + (sbox)[2 * 256 + ((tmp >> 16) & 0xff)] ^ \ + (sbox)[3 * 256 + (tmp >> 24)]; \ + tmp = (key2) + l; \ + r ^= (sbox)[0 * 256 + (tmp & 0xff)] ^ \ + (sbox)[1 * 256 + ((tmp >> 8) & 0xff)] ^ \ + (sbox)[2 * 256 + ((tmp >> 16) & 0xff)] ^ \ + (sbox)[3 * 256 + (tmp >> 24)]; /* encrypt a block with the given key */ -void gost28147_encrypt_simple(const uint32_t * key, const uint32_t * sbox, - const uint32_t * in, uint32_t * out) +void gost28147_encrypt_simple(const uint32_t *key, const uint32_t *sbox, + const uint32_t *in, uint32_t *out) { uint32_t l, r, tmp; r = in[0], l = in[1]; GOST_ENCRYPT_ROUND(key[0], key[1], sbox) - GOST_ENCRYPT_ROUND(key[2], key[3], sbox) - GOST_ENCRYPT_ROUND(key[4], key[5], sbox) - GOST_ENCRYPT_ROUND(key[6], key[7], sbox) - GOST_ENCRYPT_ROUND(key[0], key[1], sbox) - GOST_ENCRYPT_ROUND(key[2], key[3], sbox) - GOST_ENCRYPT_ROUND(key[4], key[5], sbox) - GOST_ENCRYPT_ROUND(key[6], key[7], sbox) - GOST_ENCRYPT_ROUND(key[0], key[1], sbox) - GOST_ENCRYPT_ROUND(key[2], key[3], sbox) - GOST_ENCRYPT_ROUND(key[4], key[5], sbox) - GOST_ENCRYPT_ROUND(key[6], key[7], sbox) - GOST_ENCRYPT_ROUND(key[7], key[6], sbox) - GOST_ENCRYPT_ROUND(key[5], key[4], sbox) - GOST_ENCRYPT_ROUND(key[3], key[2], sbox) - GOST_ENCRYPT_ROUND(key[1], key[0], sbox) - * out = l, *(out + 1) = r; + GOST_ENCRYPT_ROUND(key[2], key[3], sbox) + GOST_ENCRYPT_ROUND(key[4], key[5], sbox) + GOST_ENCRYPT_ROUND(key[6], key[7], sbox) + GOST_ENCRYPT_ROUND(key[0], key[1], sbox) + GOST_ENCRYPT_ROUND(key[2], key[3], sbox) + GOST_ENCRYPT_ROUND(key[4], key[5], sbox) + GOST_ENCRYPT_ROUND(key[6], key[7], sbox) + GOST_ENCRYPT_ROUND(key[0], key[1], sbox) + GOST_ENCRYPT_ROUND(key[2], key[3], sbox) + GOST_ENCRYPT_ROUND(key[4], key[5], sbox) + GOST_ENCRYPT_ROUND(key[6], key[7], sbox) + GOST_ENCRYPT_ROUND(key[7], key[6], sbox) + GOST_ENCRYPT_ROUND(key[5], key[4], sbox) + GOST_ENCRYPT_ROUND(key[3], key[2], sbox) + GOST_ENCRYPT_ROUND(key[1], key[0], sbox) + *out = l, *(out + 1) = r; } -void gost28147_decrypt_simple(const uint32_t * key, const uint32_t * sbox, - const uint32_t * in, uint32_t * out) +void gost28147_decrypt_simple(const uint32_t *key, const uint32_t *sbox, + const uint32_t *in, uint32_t *out) { uint32_t l, r, tmp; r = in[0], l = in[1]; GOST_ENCRYPT_ROUND(key[0], key[1], sbox) - GOST_ENCRYPT_ROUND(key[2], key[3], sbox) - GOST_ENCRYPT_ROUND(key[4], key[5], sbox) - GOST_ENCRYPT_ROUND(key[6], key[7], sbox) - GOST_ENCRYPT_ROUND(key[7], key[6], sbox) - GOST_ENCRYPT_ROUND(key[5], key[4], sbox) - GOST_ENCRYPT_ROUND(key[3], key[2], sbox) - GOST_ENCRYPT_ROUND(key[1], key[0], sbox) - GOST_ENCRYPT_ROUND(key[7], key[6], sbox) - GOST_ENCRYPT_ROUND(key[5], key[4], sbox) - GOST_ENCRYPT_ROUND(key[3], key[2], sbox) - GOST_ENCRYPT_ROUND(key[1], key[0], sbox) - GOST_ENCRYPT_ROUND(key[7], key[6], sbox) - GOST_ENCRYPT_ROUND(key[5], key[4], sbox) - GOST_ENCRYPT_ROUND(key[3], key[2], sbox) - GOST_ENCRYPT_ROUND(key[1], key[0], sbox) - * out = l, *(out + 1) = r; + GOST_ENCRYPT_ROUND(key[2], key[3], sbox) + GOST_ENCRYPT_ROUND(key[4], key[5], sbox) + GOST_ENCRYPT_ROUND(key[6], key[7], sbox) + GOST_ENCRYPT_ROUND(key[7], key[6], sbox) + GOST_ENCRYPT_ROUND(key[5], key[4], sbox) + GOST_ENCRYPT_ROUND(key[3], key[2], sbox) + GOST_ENCRYPT_ROUND(key[1], key[0], sbox) + GOST_ENCRYPT_ROUND(key[7], key[6], sbox) + GOST_ENCRYPT_ROUND(key[5], key[4], sbox) + GOST_ENCRYPT_ROUND(key[3], key[2], sbox) + GOST_ENCRYPT_ROUND(key[1], key[0], sbox) + GOST_ENCRYPT_ROUND(key[7], key[6], sbox) + GOST_ENCRYPT_ROUND(key[5], key[4], sbox) + GOST_ENCRYPT_ROUND(key[3], key[2], sbox) + GOST_ENCRYPT_ROUND(key[1], key[0], sbox) + *out = l, *(out + 1) = r; } -static void gost28147_imit_simple(const uint32_t * key, const uint32_t * sbox, - const uint32_t * in, uint32_t * out) +static void gost28147_imit_simple(const uint32_t *key, const uint32_t *sbox, + const uint32_t *in, uint32_t *out) { uint32_t l, r, tmp; r = in[0], l = in[1]; GOST_ENCRYPT_ROUND(key[0], key[1], sbox) - GOST_ENCRYPT_ROUND(key[2], key[3], sbox) - GOST_ENCRYPT_ROUND(key[4], key[5], sbox) - GOST_ENCRYPT_ROUND(key[6], key[7], sbox) - GOST_ENCRYPT_ROUND(key[0], key[1], sbox) - GOST_ENCRYPT_ROUND(key[2], key[3], sbox) - GOST_ENCRYPT_ROUND(key[4], key[5], sbox) - GOST_ENCRYPT_ROUND(key[6], key[7], sbox) - * out = r, *(out + 1) = l; + GOST_ENCRYPT_ROUND(key[2], key[3], sbox) + GOST_ENCRYPT_ROUND(key[4], key[5], sbox) + GOST_ENCRYPT_ROUND(key[6], key[7], sbox) + GOST_ENCRYPT_ROUND(key[0], key[1], sbox) + GOST_ENCRYPT_ROUND(key[2], key[3], sbox) + GOST_ENCRYPT_ROUND(key[4], key[5], sbox) + GOST_ENCRYPT_ROUND(key[6], key[7], sbox) + *out = r, *(out + 1) = l; } -static const uint32_t gost28147_key_mesh_cryptopro_data[GOST28147_KEY_SIZE / - 4] = { - 0x22720069, 0x2304c964, - 0x96db3a8d, 0xc42ae946, - 0x94acfe18, 0x1207ed00, - 0xc2dc86c0, 0x2ba94cef, -}; +static const uint32_t + gost28147_key_mesh_cryptopro_data[GOST28147_KEY_SIZE / 4] = { + 0x22720069, 0x2304c964, 0x96db3a8d, 0xc42ae946, + 0x94acfe18, 0x1207ed00, 0xc2dc86c0, 0x2ba94cef, + }; static void gost28147_key_mesh_cryptopro(struct gost28147_ctx *ctx) { @@ -2285,7 +8417,7 @@ static void gost28147_key_mesh_cryptopro(struct gost28147_ctx *ctx) ctx->key_count = 0; } -void gost28147_set_key(struct gost28147_ctx *ctx, const uint8_t * key) +void gost28147_set_key(struct gost28147_ctx *ctx, const uint8_t *key) { unsigned i; @@ -2295,18 +8427,16 @@ void gost28147_set_key(struct gost28147_ctx *ctx, const uint8_t * key) ctx->key_count = 0; } -void -gost28147_set_param(struct gost28147_ctx *ctx, - const struct gost28147_param *param) +void gost28147_set_param(struct gost28147_ctx *ctx, + const struct gost28147_param *param) { assert(param); ctx->sbox = param->sbox; ctx->key_meshing = param->key_meshing; } -void -gost28147_encrypt(const struct gost28147_ctx *ctx, - size_t length, uint8_t * dst, const uint8_t * src) +void gost28147_encrypt(const struct gost28147_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src) { uint32_t block[2]; @@ -2326,9 +8456,8 @@ gost28147_encrypt(const struct gost28147_ctx *ctx, } } -void -gost28147_decrypt(const struct gost28147_ctx *ctx, - size_t length, uint8_t * dst, const uint8_t * src) +void gost28147_decrypt(const struct gost28147_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src) { uint32_t block[2]; @@ -2348,9 +8477,8 @@ gost28147_decrypt(const struct gost28147_ctx *ctx, } } -void -gost28147_encrypt_for_cfb(struct gost28147_ctx *ctx, - size_t length, uint8_t * dst, const uint8_t * src) +void gost28147_encrypt_for_cfb(struct gost28147_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src) { uint32_t block[2]; @@ -2377,7 +8505,7 @@ gost28147_encrypt_for_cfb(struct gost28147_ctx *ctx, } } -static void gost28147_cnt_next_iv(struct gost28147_cnt_ctx *ctx, uint8_t * out) +static void gost28147_cnt_next_iv(struct gost28147_cnt_ctx *ctx, uint8_t *out) { uint32_t block[2]; uint32_t temp; @@ -2392,7 +8520,7 @@ static void gost28147_cnt_next_iv(struct gost28147_cnt_ctx *ctx, uint8_t * out) ctx->iv[0] += 0x01010101; temp = ctx->iv[1] + 0x01010104; if (temp < ctx->iv[1]) - ctx->iv[1] = temp + 1; /* Overflow */ + ctx->iv[1] = temp + 1; /* Overflow */ else ctx->iv[1] = temp; @@ -2404,16 +8532,15 @@ static void gost28147_cnt_next_iv(struct gost28147_cnt_ctx *ctx, uint8_t * out) ctx->ctx.key_count += GOST28147_BLOCK_SIZE; } -void -gost28147_cnt_init(struct gost28147_cnt_ctx *ctx, - const uint8_t * key, const struct gost28147_param *param) +void gost28147_cnt_init(struct gost28147_cnt_ctx *ctx, const uint8_t *key, + const struct gost28147_param *param) { gost28147_set_param(&ctx->ctx, param); gost28147_set_key(&ctx->ctx, key); ctx->bytes = 0; } -void gost28147_cnt_set_iv(struct gost28147_cnt_ctx *ctx, const uint8_t * iv) +void gost28147_cnt_set_iv(struct gost28147_cnt_ctx *ctx, const uint8_t *iv) { uint32_t block[2]; @@ -2423,9 +8550,8 @@ void gost28147_cnt_set_iv(struct gost28147_cnt_ctx *ctx, const uint8_t * iv) gost28147_encrypt_simple(ctx->ctx.key, ctx->ctx.sbox, block, ctx->iv); } -void -gost28147_cnt_crypt(struct gost28147_cnt_ctx *ctx, - size_t length, uint8_t * dst, const uint8_t * src) +void gost28147_cnt_crypt(struct gost28147_cnt_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src) { size_t block_size = GOST28147_BLOCK_SIZE; @@ -2461,9 +8587,8 @@ static void _gost28147_imit_reinit(struct gost28147_imit_ctx *ctx) ctx->count = 0; } -void -gost28147_imit_set_key(struct gost28147_imit_ctx *ctx, - size_t length, const uint8_t * key) +void gost28147_imit_set_key(struct gost28147_imit_ctx *ctx, size_t length, + const uint8_t *key) { assert(length == GOST28147_IMIT_KEY_SIZE); assert(key); @@ -2472,23 +8597,22 @@ gost28147_imit_set_key(struct gost28147_imit_ctx *ctx, gost28147_set_key(&ctx->cctx, key); } -void -gost28147_imit_set_nonce(struct gost28147_imit_ctx *ctx, const uint8_t * nonce) +void gost28147_imit_set_nonce(struct gost28147_imit_ctx *ctx, + const uint8_t *nonce) { ctx->state[0] = LE_READ_UINT32(nonce + 0); ctx->state[1] = LE_READ_UINT32(nonce + 4); } -void -gost28147_imit_set_param(struct gost28147_imit_ctx *ctx, - const struct gost28147_param *param) +void gost28147_imit_set_param(struct gost28147_imit_ctx *ctx, + const struct gost28147_param *param) { assert(param); gost28147_set_param(&ctx->cctx, param); } -static void -gost28147_imit_compress(struct gost28147_imit_ctx *ctx, const uint8_t * data) +static void gost28147_imit_compress(struct gost28147_imit_ctx *ctx, + const uint8_t *data) { uint32_t block[2]; @@ -2501,25 +8625,22 @@ gost28147_imit_compress(struct gost28147_imit_ctx *ctx, const uint8_t * data) ctx->cctx.key_count += 8; } -void -gost28147_imit_update(struct gost28147_imit_ctx *ctx, - size_t length, const uint8_t * data) +void gost28147_imit_update(struct gost28147_imit_ctx *ctx, size_t length, + const uint8_t *data) { MD_UPDATE(ctx, length, data, gost28147_imit_compress, ctx->count++); } -void -gost28147_imit_digest(struct gost28147_imit_ctx *ctx, - size_t length, uint8_t * digest) +void gost28147_imit_digest(struct gost28147_imit_ctx *ctx, size_t length, + uint8_t *digest) { assert(length <= GOST28147_IMIT_DIGEST_SIZE); const uint8_t zero[GOST28147_IMIT_BLOCK_SIZE] = { 0 }; if (ctx->index) { assert(ctx->index < GOST28147_IMIT_BLOCK_SIZE); - gost28147_imit_update(ctx, - GOST28147_IMIT_BLOCK_SIZE - ctx->index, - zero); + gost28147_imit_update( + ctx, GOST28147_IMIT_BLOCK_SIZE - ctx->index, zero); } if (ctx->count == 1) { diff --git a/lib/nettle/gost/gost28147.h b/lib/nettle/gost/gost28147.h index a9375cedb3..5b5a7dcbec 100644 --- a/lib/nettle/gost/gost28147.h +++ b/lib/nettle/gost/gost28147.h @@ -33,175 +33,152 @@ */ #ifndef GNUTLS_LIB_NETTLE_GOST_GOST28147_H -# define GNUTLS_LIB_NETTLE_GOST_GOST28147_H +#define GNUTLS_LIB_NETTLE_GOST_GOST28147_H -# include "config.h" +#include "config.h" -# ifndef HAVE_NETTLE_GOST28147_SET_KEY +#ifndef HAVE_NETTLE_GOST28147_SET_KEY -# include +#include -# ifdef __cplusplus +#ifdef __cplusplus extern "C" { -# endif +#endif /* S-Boxes & parameters */ -# define gost28147_param_test_3411 _gnutls_gost28147_param_test_3411 -# define gost28147_param_CryptoPro_3411 _gnutls_gost28147_param_CryptoPro_3411 -# define gost28147_param_Test_89 _gnutls_gost28147_param_Test_89 -# define gost28147_param_CryptoPro_A _gnutls_gost28147_param_CryptoPro_A -# define gost28147_param_CryptoPro_B _gnutls_gost28147_param_CryptoPro_B -# define gost28147_param_CryptoPro_C _gnutls_gost28147_param_CryptoPro_C -# define gost28147_param_CryptoPro_D _gnutls_gost28147_param_CryptoPro_D -# define gost28147_param_TC26_Z _gnutls_gost28147_param_TC26_Z +#define gost28147_param_test_3411 _gnutls_gost28147_param_test_3411 +#define gost28147_param_CryptoPro_3411 _gnutls_gost28147_param_CryptoPro_3411 +#define gost28147_param_Test_89 _gnutls_gost28147_param_Test_89 +#define gost28147_param_CryptoPro_A _gnutls_gost28147_param_CryptoPro_A +#define gost28147_param_CryptoPro_B _gnutls_gost28147_param_CryptoPro_B +#define gost28147_param_CryptoPro_C _gnutls_gost28147_param_CryptoPro_C +#define gost28147_param_CryptoPro_D _gnutls_gost28147_param_CryptoPro_D +#define gost28147_param_TC26_Z _gnutls_gost28147_param_TC26_Z /* Private */ -# define gost28147_encrypt_simple _gnutls_gost28147_encrypt_simple -# define gost28147_decrypt_simple _gnutls_gost28147_decrypt_simple +#define gost28147_encrypt_simple _gnutls_gost28147_encrypt_simple +#define gost28147_decrypt_simple _gnutls_gost28147_decrypt_simple /* Public functions */ -# define gost28147_set_key _gnutls_gost28147_set_key -# define gost28147_set_param _gnutls_gost28147_set_param -# define gost28147_encrypt _gnutls_gost28147_encrypt -# define gost28147_encrypt_for_cfb _gnutls_gost28147_encrypt_for_cfb -# define gost28147_decrypt _gnutls_gost28147_decrypt - -# define gost28147_cnt_init _gnutls_gost28147_cnt_init -# define gost28147_cnt_set_iv _gnutls_gost28147_cnt_set_iv -# define gost28147_cnt_crypt _gnutls_gost28147_cnt_crypt - -# define gost28147_kdf_cryptopro _gnutls_gost28147_kdf_cryptopro -# define gost28147_key_wrap_cryptopro _gnutls_gost28147_key_wrap_cryptopro -# define gost28147_key_unwrap_cryptopro _gnutls_gost28147_key_unwrap_cryptopro - -# define gost28147_imit_set_key _gnutls_gost28147_imit_set_key -# define gost28147_imit_set_nonce _gnutls_gost28147_imit_set_nonce -# define gost28147_imit_set_param _gnutls_gost28147_imit_set_param -# define gost28147_imit_update _gnutls_gost28147_imit_update -# define gost28147_imit_digest _gnutls_gost28147_imit_digest - -# define GOST28147_KEY_SIZE 32 -# define GOST28147_BLOCK_SIZE 8 - - struct gost28147_ctx { - uint32_t key[GOST28147_KEY_SIZE / 4]; - const uint32_t *sbox; - int key_meshing; - int key_count; /* Used for key meshing */ - }; - - struct gost28147_param { - int key_meshing; - uint32_t sbox[4 * 256]; - }; - - extern const struct gost28147_param gost28147_param_test_3411; - extern const struct gost28147_param gost28147_param_CryptoPro_3411; - extern const struct gost28147_param gost28147_param_Test_89; - extern const struct gost28147_param gost28147_param_CryptoPro_A; - extern const struct gost28147_param gost28147_param_CryptoPro_B; - extern const struct gost28147_param gost28147_param_CryptoPro_C; - extern const struct gost28147_param gost28147_param_CryptoPro_D; - extern const struct gost28147_param gost28147_param_TC26_Z; +#define gost28147_set_key _gnutls_gost28147_set_key +#define gost28147_set_param _gnutls_gost28147_set_param +#define gost28147_encrypt _gnutls_gost28147_encrypt +#define gost28147_encrypt_for_cfb _gnutls_gost28147_encrypt_for_cfb +#define gost28147_decrypt _gnutls_gost28147_decrypt + +#define gost28147_cnt_init _gnutls_gost28147_cnt_init +#define gost28147_cnt_set_iv _gnutls_gost28147_cnt_set_iv +#define gost28147_cnt_crypt _gnutls_gost28147_cnt_crypt + +#define gost28147_kdf_cryptopro _gnutls_gost28147_kdf_cryptopro +#define gost28147_key_wrap_cryptopro _gnutls_gost28147_key_wrap_cryptopro +#define gost28147_key_unwrap_cryptopro _gnutls_gost28147_key_unwrap_cryptopro + +#define gost28147_imit_set_key _gnutls_gost28147_imit_set_key +#define gost28147_imit_set_nonce _gnutls_gost28147_imit_set_nonce +#define gost28147_imit_set_param _gnutls_gost28147_imit_set_param +#define gost28147_imit_update _gnutls_gost28147_imit_update +#define gost28147_imit_digest _gnutls_gost28147_imit_digest + +#define GOST28147_KEY_SIZE 32 +#define GOST28147_BLOCK_SIZE 8 + +struct gost28147_ctx { + uint32_t key[GOST28147_KEY_SIZE / 4]; + const uint32_t *sbox; + int key_meshing; + int key_count; /* Used for key meshing */ +}; + +struct gost28147_param { + int key_meshing; + uint32_t sbox[4 * 256]; +}; + +extern const struct gost28147_param gost28147_param_test_3411; +extern const struct gost28147_param gost28147_param_CryptoPro_3411; +extern const struct gost28147_param gost28147_param_Test_89; +extern const struct gost28147_param gost28147_param_CryptoPro_A; +extern const struct gost28147_param gost28147_param_CryptoPro_B; +extern const struct gost28147_param gost28147_param_CryptoPro_C; +extern const struct gost28147_param gost28147_param_CryptoPro_D; +extern const struct gost28147_param gost28147_param_TC26_Z; /* Internal interface for use by GOST R 34.11-94 */ - void gost28147_encrypt_simple(const uint32_t * key, - const uint32_t * sbox, - const uint32_t * in, uint32_t * out); - void gost28147_decrypt_simple(const uint32_t * key, - const uint32_t * sbox, - const uint32_t * in, uint32_t * out); - - void - gost28147_set_key(struct gost28147_ctx *ctx, const uint8_t * key); - - void - gost28147_set_param(struct gost28147_ctx *ctx, - const struct gost28147_param *param); - - void - gost28147_encrypt(const struct gost28147_ctx *ctx, - size_t length, uint8_t * dst, const uint8_t * src); - void - gost28147_decrypt(const struct gost28147_ctx *ctx, - size_t length, uint8_t * dst, const uint8_t * src); - void - gost28147_encrypt_for_cfb(struct gost28147_ctx *ctx, - size_t length, uint8_t * dst, - const uint8_t * src); - - struct gost28147_cnt_ctx { - struct gost28147_ctx ctx; - size_t bytes; - uint32_t iv[2]; - uint8_t buffer[GOST28147_BLOCK_SIZE]; - }; - - void - gost28147_cnt_init(struct gost28147_cnt_ctx *ctx, - const uint8_t * key, - const struct gost28147_param *param); - - void - gost28147_cnt_set_iv(struct gost28147_cnt_ctx *ctx, - const uint8_t * iv); - - void - gost28147_cnt_crypt(struct gost28147_cnt_ctx *ctx, - size_t length, uint8_t * dst, const uint8_t * src); - - void - gost28147_kdf_cryptopro(const struct gost28147_param *param, - const uint8_t * in, - const uint8_t * ukm, uint8_t * out); - void - gost28147_key_wrap_cryptopro(const struct gost28147_param *param, - const uint8_t * kek, - const uint8_t * ukm, size_t ukm_size, - const uint8_t * cek, - uint8_t * enc, uint8_t * imit); - - int - gost28147_key_unwrap_cryptopro(const struct gost28147_param *param, - const uint8_t * kek, - const uint8_t * ukm, size_t ukm_size, - const uint8_t * enc, - const uint8_t * imit, uint8_t * cek); - -# define GOST28147_IMIT_DIGEST_SIZE 4 -# define GOST28147_IMIT_BLOCK_SIZE GOST28147_BLOCK_SIZE -# define GOST28147_IMIT_KEY_SIZE GOST28147_KEY_SIZE - - struct gost28147_imit_ctx { - struct gost28147_ctx cctx; - uint64_t count; /* Block count */ - uint8_t block[GOST28147_IMIT_BLOCK_SIZE]; /* Block buffer */ - unsigned index; /* Into buffer */ - uint32_t state[GOST28147_IMIT_BLOCK_SIZE / 4]; - }; - - void - gost28147_imit_set_key(struct gost28147_imit_ctx *ctx, - size_t length, const uint8_t * key); - - void - gost28147_imit_set_nonce(struct gost28147_imit_ctx *ctx, - const uint8_t * nonce); - - void - gost28147_imit_set_param(struct gost28147_imit_ctx *ctx, - const struct gost28147_param *param); - - void - gost28147_imit_update(struct gost28147_imit_ctx *ctx, - size_t length, const uint8_t * data); - - void - gost28147_imit_digest(struct gost28147_imit_ctx *ctx, - size_t length, uint8_t * digest); - -# ifdef __cplusplus +void gost28147_encrypt_simple(const uint32_t *key, const uint32_t *sbox, + const uint32_t *in, uint32_t *out); +void gost28147_decrypt_simple(const uint32_t *key, const uint32_t *sbox, + const uint32_t *in, uint32_t *out); + +void gost28147_set_key(struct gost28147_ctx *ctx, const uint8_t *key); + +void gost28147_set_param(struct gost28147_ctx *ctx, + const struct gost28147_param *param); + +void gost28147_encrypt(const struct gost28147_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src); +void gost28147_decrypt(const struct gost28147_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src); +void gost28147_encrypt_for_cfb(struct gost28147_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src); + +struct gost28147_cnt_ctx { + struct gost28147_ctx ctx; + size_t bytes; + uint32_t iv[2]; + uint8_t buffer[GOST28147_BLOCK_SIZE]; +}; + +void gost28147_cnt_init(struct gost28147_cnt_ctx *ctx, const uint8_t *key, + const struct gost28147_param *param); + +void gost28147_cnt_set_iv(struct gost28147_cnt_ctx *ctx, const uint8_t *iv); + +void gost28147_cnt_crypt(struct gost28147_cnt_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src); + +void gost28147_kdf_cryptopro(const struct gost28147_param *param, + const uint8_t *in, const uint8_t *ukm, + uint8_t *out); +void gost28147_key_wrap_cryptopro(const struct gost28147_param *param, + const uint8_t *kek, const uint8_t *ukm, + size_t ukm_size, const uint8_t *cek, + uint8_t *enc, uint8_t *imit); + +int gost28147_key_unwrap_cryptopro(const struct gost28147_param *param, + const uint8_t *kek, const uint8_t *ukm, + size_t ukm_size, const uint8_t *enc, + const uint8_t *imit, uint8_t *cek); + +#define GOST28147_IMIT_DIGEST_SIZE 4 +#define GOST28147_IMIT_BLOCK_SIZE GOST28147_BLOCK_SIZE +#define GOST28147_IMIT_KEY_SIZE GOST28147_KEY_SIZE + +struct gost28147_imit_ctx { + struct gost28147_ctx cctx; + uint64_t count; /* Block count */ + uint8_t block[GOST28147_IMIT_BLOCK_SIZE]; /* Block buffer */ + unsigned index; /* Into buffer */ + uint32_t state[GOST28147_IMIT_BLOCK_SIZE / 4]; +}; + +void gost28147_imit_set_key(struct gost28147_imit_ctx *ctx, size_t length, + const uint8_t *key); + +void gost28147_imit_set_nonce(struct gost28147_imit_ctx *ctx, + const uint8_t *nonce); + +void gost28147_imit_set_param(struct gost28147_imit_ctx *ctx, + const struct gost28147_param *param); + +void gost28147_imit_update(struct gost28147_imit_ctx *ctx, size_t length, + const uint8_t *data); + +void gost28147_imit_digest(struct gost28147_imit_ctx *ctx, size_t length, + uint8_t *digest); + +#ifdef __cplusplus } -# endif -# endif -#endif /* GNUTLS_LIB_NETTLE_GOST_GOST28147_H */ +#endif +#endif +#endif /* GNUTLS_LIB_NETTLE_GOST_GOST28147_H */ diff --git a/lib/nettle/gost/gostdsa-keygen.c b/lib/nettle/gost/gostdsa-keygen.c index 823908b98e..1e9339c24a 100644 --- a/lib/nettle/gost/gostdsa-keygen.c +++ b/lib/nettle/gost/gostdsa-keygen.c @@ -32,7 +32,7 @@ /* Development of Nettle's ECC support was funded by the .SE Internet Fund. */ #if HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include @@ -43,10 +43,8 @@ #include "ecc-gost-curve.h" #include "nettle-alloca.h" -void -gostdsa_generate_keypair(struct ecc_point *pub, - struct ecc_scalar *key, - void *random_ctx, nettle_random_func * random) +void gostdsa_generate_keypair(struct ecc_point *pub, struct ecc_scalar *key, + void *random_ctx, nettle_random_func *random) { TMP_DECL(p, mp_limb_t, 3 * ECC_MAX_SIZE + ECC_MUL_G_ITCH(ECC_MAX_SIZE)); const struct ecc_curve *ecc = pub->ecc; diff --git a/lib/nettle/gost/gostdsa-mask.c b/lib/nettle/gost/gostdsa-mask.c index 018ca446ec..fb725676c9 100644 --- a/lib/nettle/gost/gostdsa-mask.c +++ b/lib/nettle/gost/gostdsa-mask.c @@ -30,7 +30,7 @@ */ #if HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include @@ -40,9 +40,11 @@ #include #include "gostdsa2.h" -#define GOST_GC256B_Q "ffffffffffffffffffffffffffffffff" \ +#define GOST_GC256B_Q \ + "ffffffffffffffffffffffffffffffff" \ "6c611070995ad10045841b09b761b893" -#define GOST_GC512A_Q "ffffffffffffffffffffffffffffffff" \ +#define GOST_GC512A_Q \ + "ffffffffffffffffffffffffffffffff" \ "ffffffffffffffffffffffffffffffff" \ "27e69532f48d89116ff22b8d4e056060" \ "9b4b38abfad2b85dcacdb1411f10b275" diff --git a/lib/nettle/gost/gostdsa2.h b/lib/nettle/gost/gostdsa2.h index 7e8c50eeaa..ff1a55dc2e 100644 --- a/lib/nettle/gost/gostdsa2.h +++ b/lib/nettle/gost/gostdsa2.h @@ -33,25 +33,24 @@ /* Development of Nettle's ECC support was funded by the .SE Internet Fund. */ #ifndef GNUTLS_LIB_NETTLE_GOST_GOSTDSA2_H -# define GNUTLS_LIB_NETTLE_GOST_GOSTDSA2_H +#define GNUTLS_LIB_NETTLE_GOST_GOSTDSA2_H -# include +#include -# if HAVE_CONFIG_H -# include "config.h" -# endif +#if HAVE_CONFIG_H +#include "config.h" +#endif -# ifdef __cplusplus +#ifdef __cplusplus extern "C" { -# endif +#endif /* Name mangling */ -# define gostdsa_unmask_key _gnutls_gostdsa_unmask_key +#define gostdsa_unmask_key _gnutls_gostdsa_unmask_key - int - gostdsa_unmask_key(const struct ecc_curve *ecc, mpz_t key); +int gostdsa_unmask_key(const struct ecc_curve *ecc, mpz_t key); -# ifdef __cplusplus +#ifdef __cplusplus } -# endif -#endif /* GNUTLS_LIB_NETTLE_GOST_GOSTDSA2_H */ +#endif +#endif /* GNUTLS_LIB_NETTLE_GOST_GOSTDSA2_H */ diff --git a/lib/nettle/gost/hmac-gost.h b/lib/nettle/gost/hmac-gost.h index 64facd5d61..738207b6a4 100644 --- a/lib/nettle/gost/hmac-gost.h +++ b/lib/nettle/gost/hmac-gost.h @@ -32,59 +32,54 @@ */ #ifndef GNUTLS_LIB_NETTLE_GOST_HMAC_GOST_H -# define GNUTLS_LIB_NETTLE_GOST_HMAC_GOST_H +#define GNUTLS_LIB_NETTLE_GOST_HMAC_GOST_H -# include "config.h" +#include "config.h" -# include +#include -# ifndef HAVE_NETTLE_STREEBOG512_UPDATE -# include "streebog.h" -# endif +#ifndef HAVE_NETTLE_STREEBOG512_UPDATE +#include "streebog.h" +#endif -# ifdef __cplusplus +#ifdef __cplusplus extern "C" { -# endif +#endif /* Namespace mangling */ -# ifndef HAVE_NETTLE_STREEBOG512_UPDATE -# define hmac_streebog256_set_key _gnutls_hmac_streebog256_set_key -# define hmac_streebog256_digest _gnutls_hmac_streebog256_digest -# define hmac_streebog512_set_key _gnutls_hmac_streebog512_set_key -# define hmac_streebog512_update _gnutls_hmac_streebog512_update -# define hmac_streebog512_digest _gnutls_hmac_streebog512_digest -# endif +#ifndef HAVE_NETTLE_STREEBOG512_UPDATE +#define hmac_streebog256_set_key _gnutls_hmac_streebog256_set_key +#define hmac_streebog256_digest _gnutls_hmac_streebog256_digest +#define hmac_streebog512_set_key _gnutls_hmac_streebog512_set_key +#define hmac_streebog512_update _gnutls_hmac_streebog512_update +#define hmac_streebog512_digest _gnutls_hmac_streebog512_digest +#endif /* hmac-streebog */ -# ifndef HAVE_NETTLE_STREEBOG512_UPDATE - struct hmac_streebog512_ctx HMAC_CTX(struct streebog512_ctx); +#ifndef HAVE_NETTLE_STREEBOG512_UPDATE +struct hmac_streebog512_ctx HMAC_CTX(struct streebog512_ctx); - void - hmac_streebog512_set_key(struct hmac_streebog512_ctx *ctx, - size_t key_length, const uint8_t * key); +void hmac_streebog512_set_key(struct hmac_streebog512_ctx *ctx, + size_t key_length, const uint8_t *key); - void - hmac_streebog512_update(struct hmac_streebog512_ctx *ctx, - size_t length, const uint8_t * data); +void hmac_streebog512_update(struct hmac_streebog512_ctx *ctx, size_t length, + const uint8_t *data); - void - hmac_streebog512_digest(struct hmac_streebog512_ctx *ctx, - size_t length, uint8_t * digest); +void hmac_streebog512_digest(struct hmac_streebog512_ctx *ctx, size_t length, + uint8_t *digest); -# define hmac_streebog256_ctx hmac_streebog512_ctx +#define hmac_streebog256_ctx hmac_streebog512_ctx - void - hmac_streebog256_set_key(struct hmac_streebog256_ctx *ctx, - size_t key_length, const uint8_t * key); +void hmac_streebog256_set_key(struct hmac_streebog256_ctx *ctx, + size_t key_length, const uint8_t *key); -# define hmac_streebog256_update hmac_streebog512_update +#define hmac_streebog256_update hmac_streebog512_update - void - hmac_streebog256_digest(struct hmac_streebog256_ctx *ctx, - size_t length, uint8_t * digest); -# endif +void hmac_streebog256_digest(struct hmac_streebog256_ctx *ctx, size_t length, + uint8_t *digest); +#endif -# ifdef __cplusplus +#ifdef __cplusplus } -# endif -#endif /* GNUTLS_LIB_NETTLE_GOST_HMAC_GOST_H */ +#endif +#endif /* GNUTLS_LIB_NETTLE_GOST_HMAC_GOST_H */ diff --git a/lib/nettle/gost/hmac-streebog.c b/lib/nettle/gost/hmac-streebog.c index c14fda20d5..2dc9d62d40 100644 --- a/lib/nettle/gost/hmac-streebog.c +++ b/lib/nettle/gost/hmac-streebog.c @@ -32,46 +32,41 @@ */ #if HAVE_CONFIG_H -# include +#include #endif #ifndef HAVE_NETTLE_STREEBOG512_UPDATE -# include +#include -# include -# include "hmac-gost.h" +#include +#include "hmac-gost.h" -void -hmac_streebog512_set_key(struct hmac_streebog512_ctx *ctx, - size_t key_length, const uint8_t * key) +void hmac_streebog512_set_key(struct hmac_streebog512_ctx *ctx, + size_t key_length, const uint8_t *key) { HMAC_SET_KEY(ctx, &nettle_streebog512, key_length, key); } -void -hmac_streebog512_update(struct hmac_streebog512_ctx *ctx, - size_t length, const uint8_t * data) +void hmac_streebog512_update(struct hmac_streebog512_ctx *ctx, size_t length, + const uint8_t *data) { streebog512_update(&ctx->state, length, data); } -void -hmac_streebog512_digest(struct hmac_streebog512_ctx *ctx, - size_t length, uint8_t * digest) +void hmac_streebog512_digest(struct hmac_streebog512_ctx *ctx, size_t length, + uint8_t *digest) { HMAC_DIGEST(ctx, &nettle_streebog512, length, digest); } -void -hmac_streebog256_set_key(struct hmac_streebog256_ctx *ctx, - size_t key_length, const uint8_t * key) +void hmac_streebog256_set_key(struct hmac_streebog256_ctx *ctx, + size_t key_length, const uint8_t *key) { HMAC_SET_KEY(ctx, &nettle_streebog256, key_length, key); } -void -hmac_streebog256_digest(struct hmac_streebog256_ctx *ctx, - size_t length, uint8_t * digest) +void hmac_streebog256_digest(struct hmac_streebog256_ctx *ctx, size_t length, + uint8_t *digest) { HMAC_DIGEST(ctx, &nettle_streebog256, length, digest); } diff --git a/lib/nettle/gost/kuznyechik.c b/lib/nettle/gost/kuznyechik.c index ef2fcfc59a..5199a00e00 100644 --- a/lib/nettle/gost/kuznyechik.c +++ b/lib/nettle/gost/kuznyechik.c @@ -30,22 +30,22 @@ */ #if HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #ifndef HAVE_NETTLE_KUZNYECHIK_SET_KEY -# include -# include +#include +#include -# include -# include -# include "nettle-write.h" -# include "kuznyechik.h" +#include +#include +#include "nettle-write.h" +#include "kuznyechik.h" -# include "kuztable.h" +#include "kuztable.h" -static void S(uint8_t * a, const uint8_t * b) +static void S(uint8_t *a, const uint8_t *b) { a[0] = pi[b[0]]; a[1] = pi[b[1]]; @@ -65,7 +65,7 @@ static void S(uint8_t * a, const uint8_t * b) a[15] = pi[b[15]]; } -static void Sinv(uint8_t * a, const uint8_t * b) +static void Sinv(uint8_t *a, const uint8_t *b) { a[0] = pi_inv[b[0]]; a[1] = pi_inv[b[1]]; @@ -85,7 +85,7 @@ static void Sinv(uint8_t * a, const uint8_t * b) a[15] = pi_inv[b[15]]; } -static void Linv(uint8_t * a, const uint8_t * b) +static void Linv(uint8_t *a, const uint8_t *b) { memcpy(a, &kuz_table_inv[0][b[0] * 16], KUZNYECHIK_BLOCK_SIZE); memxor(a, &kuz_table_inv[1][b[1] * 16], KUZNYECHIK_BLOCK_SIZE); @@ -105,15 +105,15 @@ static void Linv(uint8_t * a, const uint8_t * b) memxor(a, &kuz_table_inv[15][b[15] * 16], KUZNYECHIK_BLOCK_SIZE); } -static void LSX(uint8_t * a, const uint8_t * b, const uint8_t * c) +static void LSX(uint8_t *a, const uint8_t *b, const uint8_t *c) { uint8_t t[16]; /* https://github.com/llvm/llvm-project/issues/53518 */ -# if defined(__clang_analyzer__) && \ +#if defined(__clang_analyzer__) && \ (defined(__clang_major__) && __clang_major__ == 13) assert(0); -# else +#else memcpy(t, &kuz_table[0][(b[0] ^ c[0]) * 16], KUZNYECHIK_BLOCK_SIZE); memxor(t, &kuz_table[1][(b[1] ^ c[1]) * 16], KUZNYECHIK_BLOCK_SIZE); memxor(t, &kuz_table[2][(b[2] ^ c[2]) * 16], KUZNYECHIK_BLOCK_SIZE); @@ -131,10 +131,10 @@ static void LSX(uint8_t * a, const uint8_t * b, const uint8_t * c) memxor(t, &kuz_table[14][(b[14] ^ c[14]) * 16], KUZNYECHIK_BLOCK_SIZE); memxor3(a, t, &kuz_table[15][(b[15] ^ c[15]) * 16], KUZNYECHIK_BLOCK_SIZE); -# endif +#endif } -static void XLiSi(uint8_t * a, const uint8_t * b, const uint8_t * c) +static void XLiSi(uint8_t *a, const uint8_t *b, const uint8_t *c) { uint8_t t[16]; @@ -157,7 +157,7 @@ static void XLiSi(uint8_t * a, const uint8_t * b, const uint8_t * c) memxor3(a, t, c, 16); } -static void subkey(uint8_t * out, const uint8_t * key, unsigned i) +static void subkey(uint8_t *out, const uint8_t *key, unsigned i) { uint8_t test[16]; @@ -179,7 +179,7 @@ static void subkey(uint8_t * out, const uint8_t * key, unsigned i) memxor(out + 0, test, 16); } -void kuznyechik_set_key(struct kuznyechik_ctx *ctx, const uint8_t * key) +void kuznyechik_set_key(struct kuznyechik_ctx *ctx, const uint8_t *key) { unsigned i; @@ -192,9 +192,8 @@ void kuznyechik_set_key(struct kuznyechik_ctx *ctx, const uint8_t * key) Linv(ctx->dekey + 16 * i, ctx->key + 16 * i); } -void -kuznyechik_encrypt(const struct kuznyechik_ctx *ctx, - size_t length, uint8_t * dst, const uint8_t * src) +void kuznyechik_encrypt(const struct kuznyechik_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src) { uint8_t temp[KUZNYECHIK_BLOCK_SIZE]; @@ -217,9 +216,8 @@ kuznyechik_encrypt(const struct kuznyechik_ctx *ctx, } } -void -kuznyechik_decrypt(const struct kuznyechik_ctx *ctx, - size_t length, uint8_t * dst, const uint8_t * src) +void kuznyechik_decrypt(const struct kuznyechik_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src) { uint8_t temp[KUZNYECHIK_BLOCK_SIZE]; @@ -243,4 +241,4 @@ kuznyechik_decrypt(const struct kuznyechik_ctx *ctx, length -= KUZNYECHIK_BLOCK_SIZE; } } -#endif /* HAVE_NETTLE_KUZNYECHIK_SET_KEY */ +#endif /* HAVE_NETTLE_KUZNYECHIK_SET_KEY */ diff --git a/lib/nettle/gost/kuznyechik.h b/lib/nettle/gost/kuznyechik.h index 207f700450..b6c3df5ddc 100644 --- a/lib/nettle/gost/kuznyechik.h +++ b/lib/nettle/gost/kuznyechik.h @@ -32,44 +32,41 @@ */ #ifndef GNUTLS_LIB_NETTLE_KUZNYECHIK_H_INCLUDED -# define GNUTLS_LIB_NETTLE_KUZNYECHIK_H_INCLUDED +#define GNUTLS_LIB_NETTLE_KUZNYECHIK_H_INCLUDED -# include +#include -# include "config.h" +#include "config.h" -# ifndef HAVE_NETTLE_KUZNYECHIK_SET_KEY +#ifndef HAVE_NETTLE_KUZNYECHIK_SET_KEY -# ifdef __cplusplus +#ifdef __cplusplus extern "C" { -# endif +#endif -# define kuznyechik_set_key _gnutls_kuznyechik_set_key -# define kuznyechik_set_param _gnutls_kuznyechik_set_param -# define kuznyechik_encrypt _gnutls_kuznyechik_encrypt -# define kuznyechik_decrypt _gnutls_kuznyechik_decrypt +#define kuznyechik_set_key _gnutls_kuznyechik_set_key +#define kuznyechik_set_param _gnutls_kuznyechik_set_param +#define kuznyechik_encrypt _gnutls_kuznyechik_encrypt +#define kuznyechik_decrypt _gnutls_kuznyechik_decrypt -# define KUZNYECHIK_KEY_SIZE 32 -# define KUZNYECHIK_SUBKEYS_SIZE (16 * 10) -# define KUZNYECHIK_BLOCK_SIZE 16 +#define KUZNYECHIK_KEY_SIZE 32 +#define KUZNYECHIK_SUBKEYS_SIZE (16 * 10) +#define KUZNYECHIK_BLOCK_SIZE 16 - struct kuznyechik_ctx { - uint8_t key[KUZNYECHIK_SUBKEYS_SIZE]; - uint8_t dekey[KUZNYECHIK_SUBKEYS_SIZE]; - }; +struct kuznyechik_ctx { + uint8_t key[KUZNYECHIK_SUBKEYS_SIZE]; + uint8_t dekey[KUZNYECHIK_SUBKEYS_SIZE]; +}; - void - kuznyechik_set_key(struct kuznyechik_ctx *ctx, const uint8_t * key); +void kuznyechik_set_key(struct kuznyechik_ctx *ctx, const uint8_t *key); - void - kuznyechik_encrypt(const struct kuznyechik_ctx *ctx, - size_t length, uint8_t * dst, const uint8_t * src); - void - kuznyechik_decrypt(const struct kuznyechik_ctx *ctx, - size_t length, uint8_t * dst, const uint8_t * src); +void kuznyechik_encrypt(const struct kuznyechik_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src); +void kuznyechik_decrypt(const struct kuznyechik_ctx *ctx, size_t length, + uint8_t *dst, const uint8_t *src); -# ifdef __cplusplus +#ifdef __cplusplus } -# endif -# endif -#endif /* GNUTLS_LIB_NETTLE_KUZNYECHIK_H_INCLUDED */ +#endif +#endif +#endif /* GNUTLS_LIB_NETTLE_KUZNYECHIK_H_INCLUDED */ diff --git a/lib/nettle/gost/kuztable.h b/lib/nettle/gost/kuztable.h index 8a950af58d..4b956db32d 100644 --- a/lib/nettle/gost/kuztable.h +++ b/lib/nettle/gost/kuztable.h @@ -1,24817 +1,20461 @@ static const uint8_t pi[256] = { - 0xfc, 0xee, 0xdd, 0x11, 0xcf, 0x6e, 0x31, 0x16, - 0xfb, 0xc4, 0xfa, 0xda, 0x23, 0xc5, 0x04, 0x4d, - 0xe9, 0x77, 0xf0, 0xdb, 0x93, 0x2e, 0x99, 0xba, - 0x17, 0x36, 0xf1, 0xbb, 0x14, 0xcd, 0x5f, 0xc1, - 0xf9, 0x18, 0x65, 0x5a, 0xe2, 0x5c, 0xef, 0x21, - 0x81, 0x1c, 0x3c, 0x42, 0x8b, 0x01, 0x8e, 0x4f, - 0x05, 0x84, 0x02, 0xae, 0xe3, 0x6a, 0x8f, 0xa0, - 0x06, 0x0b, 0xed, 0x98, 0x7f, 0xd4, 0xd3, 0x1f, - 0xeb, 0x34, 0x2c, 0x51, 0xea, 0xc8, 0x48, 0xab, - 0xf2, 0x2a, 0x68, 0xa2, 0xfd, 0x3a, 0xce, 0xcc, - 0xb5, 0x70, 0x0e, 0x56, 0x08, 0x0c, 0x76, 0x12, - 0xbf, 0x72, 0x13, 0x47, 0x9c, 0xb7, 0x5d, 0x87, - 0x15, 0xa1, 0x96, 0x29, 0x10, 0x7b, 0x9a, 0xc7, - 0xf3, 0x91, 0x78, 0x6f, 0x9d, 0x9e, 0xb2, 0xb1, - 0x32, 0x75, 0x19, 0x3d, 0xff, 0x35, 0x8a, 0x7e, - 0x6d, 0x54, 0xc6, 0x80, 0xc3, 0xbd, 0x0d, 0x57, - 0xdf, 0xf5, 0x24, 0xa9, 0x3e, 0xa8, 0x43, 0xc9, - 0xd7, 0x79, 0xd6, 0xf6, 0x7c, 0x22, 0xb9, 0x03, - 0xe0, 0x0f, 0xec, 0xde, 0x7a, 0x94, 0xb0, 0xbc, - 0xdc, 0xe8, 0x28, 0x50, 0x4e, 0x33, 0x0a, 0x4a, - 0xa7, 0x97, 0x60, 0x73, 0x1e, 0x00, 0x62, 0x44, - 0x1a, 0xb8, 0x38, 0x82, 0x64, 0x9f, 0x26, 0x41, - 0xad, 0x45, 0x46, 0x92, 0x27, 0x5e, 0x55, 0x2f, - 0x8c, 0xa3, 0xa5, 0x7d, 0x69, 0xd5, 0x95, 0x3b, - 0x07, 0x58, 0xb3, 0x40, 0x86, 0xac, 0x1d, 0xf7, - 0x30, 0x37, 0x6b, 0xe4, 0x88, 0xd9, 0xe7, 0x89, - 0xe1, 0x1b, 0x83, 0x49, 0x4c, 0x3f, 0xf8, 0xfe, - 0x8d, 0x53, 0xaa, 0x90, 0xca, 0xd8, 0x85, 0x61, - 0x20, 0x71, 0x67, 0xa4, 0x2d, 0x2b, 0x09, 0x5b, - 0xcb, 0x9b, 0x25, 0xd0, 0xbe, 0xe5, 0x6c, 0x52, - 0x59, 0xa6, 0x74, 0xd2, 0xe6, 0xf4, 0xb4, 0xc0, - 0xd1, 0x66, 0xaf, 0xc2, 0x39, 0x4b, 0x63, 0xb6, + 0xfc, 0xee, 0xdd, 0x11, 0xcf, 0x6e, 0x31, 0x16, 0xfb, 0xc4, 0xfa, 0xda, + 0x23, 0xc5, 0x04, 0x4d, 0xe9, 0x77, 0xf0, 0xdb, 0x93, 0x2e, 0x99, 0xba, + 0x17, 0x36, 0xf1, 0xbb, 0x14, 0xcd, 0x5f, 0xc1, 0xf9, 0x18, 0x65, 0x5a, + 0xe2, 0x5c, 0xef, 0x21, 0x81, 0x1c, 0x3c, 0x42, 0x8b, 0x01, 0x8e, 0x4f, + 0x05, 0x84, 0x02, 0xae, 0xe3, 0x6a, 0x8f, 0xa0, 0x06, 0x0b, 0xed, 0x98, + 0x7f, 0xd4, 0xd3, 0x1f, 0xeb, 0x34, 0x2c, 0x51, 0xea, 0xc8, 0x48, 0xab, + 0xf2, 0x2a, 0x68, 0xa2, 0xfd, 0x3a, 0xce, 0xcc, 0xb5, 0x70, 0x0e, 0x56, + 0x08, 0x0c, 0x76, 0x12, 0xbf, 0x72, 0x13, 0x47, 0x9c, 0xb7, 0x5d, 0x87, + 0x15, 0xa1, 0x96, 0x29, 0x10, 0x7b, 0x9a, 0xc7, 0xf3, 0x91, 0x78, 0x6f, + 0x9d, 0x9e, 0xb2, 0xb1, 0x32, 0x75, 0x19, 0x3d, 0xff, 0x35, 0x8a, 0x7e, + 0x6d, 0x54, 0xc6, 0x80, 0xc3, 0xbd, 0x0d, 0x57, 0xdf, 0xf5, 0x24, 0xa9, + 0x3e, 0xa8, 0x43, 0xc9, 0xd7, 0x79, 0xd6, 0xf6, 0x7c, 0x22, 0xb9, 0x03, + 0xe0, 0x0f, 0xec, 0xde, 0x7a, 0x94, 0xb0, 0xbc, 0xdc, 0xe8, 0x28, 0x50, + 0x4e, 0x33, 0x0a, 0x4a, 0xa7, 0x97, 0x60, 0x73, 0x1e, 0x00, 0x62, 0x44, + 0x1a, 0xb8, 0x38, 0x82, 0x64, 0x9f, 0x26, 0x41, 0xad, 0x45, 0x46, 0x92, + 0x27, 0x5e, 0x55, 0x2f, 0x8c, 0xa3, 0xa5, 0x7d, 0x69, 0xd5, 0x95, 0x3b, + 0x07, 0x58, 0xb3, 0x40, 0x86, 0xac, 0x1d, 0xf7, 0x30, 0x37, 0x6b, 0xe4, + 0x88, 0xd9, 0xe7, 0x89, 0xe1, 0x1b, 0x83, 0x49, 0x4c, 0x3f, 0xf8, 0xfe, + 0x8d, 0x53, 0xaa, 0x90, 0xca, 0xd8, 0x85, 0x61, 0x20, 0x71, 0x67, 0xa4, + 0x2d, 0x2b, 0x09, 0x5b, 0xcb, 0x9b, 0x25, 0xd0, 0xbe, 0xe5, 0x6c, 0x52, + 0x59, 0xa6, 0x74, 0xd2, 0xe6, 0xf4, 0xb4, 0xc0, 0xd1, 0x66, 0xaf, 0xc2, + 0x39, 0x4b, 0x63, 0xb6, }; static const uint8_t pi_inv[256] = { - 0xa5, 0x2d, 0x32, 0x8f, 0x0e, 0x30, 0x38, 0xc0, - 0x54, 0xe6, 0x9e, 0x39, 0x55, 0x7e, 0x52, 0x91, - 0x64, 0x03, 0x57, 0x5a, 0x1c, 0x60, 0x07, 0x18, - 0x21, 0x72, 0xa8, 0xd1, 0x29, 0xc6, 0xa4, 0x3f, - 0xe0, 0x27, 0x8d, 0x0c, 0x82, 0xea, 0xae, 0xb4, - 0x9a, 0x63, 0x49, 0xe5, 0x42, 0xe4, 0x15, 0xb7, - 0xc8, 0x06, 0x70, 0x9d, 0x41, 0x75, 0x19, 0xc9, - 0xaa, 0xfc, 0x4d, 0xbf, 0x2a, 0x73, 0x84, 0xd5, - 0xc3, 0xaf, 0x2b, 0x86, 0xa7, 0xb1, 0xb2, 0x5b, - 0x46, 0xd3, 0x9f, 0xfd, 0xd4, 0x0f, 0x9c, 0x2f, - 0x9b, 0x43, 0xef, 0xd9, 0x79, 0xb6, 0x53, 0x7f, - 0xc1, 0xf0, 0x23, 0xe7, 0x25, 0x5e, 0xb5, 0x1e, - 0xa2, 0xdf, 0xa6, 0xfe, 0xac, 0x22, 0xf9, 0xe2, - 0x4a, 0xbc, 0x35, 0xca, 0xee, 0x78, 0x05, 0x6b, - 0x51, 0xe1, 0x59, 0xa3, 0xf2, 0x71, 0x56, 0x11, - 0x6a, 0x89, 0x94, 0x65, 0x8c, 0xbb, 0x77, 0x3c, - 0x7b, 0x28, 0xab, 0xd2, 0x31, 0xde, 0xc4, 0x5f, - 0xcc, 0xcf, 0x76, 0x2c, 0xb8, 0xd8, 0x2e, 0x36, - 0xdb, 0x69, 0xb3, 0x14, 0x95, 0xbe, 0x62, 0xa1, - 0x3b, 0x16, 0x66, 0xe9, 0x5c, 0x6c, 0x6d, 0xad, - 0x37, 0x61, 0x4b, 0xb9, 0xe3, 0xba, 0xf1, 0xa0, - 0x85, 0x83, 0xda, 0x47, 0xc5, 0xb0, 0x33, 0xfa, - 0x96, 0x6f, 0x6e, 0xc2, 0xf6, 0x50, 0xff, 0x5d, - 0xa9, 0x8e, 0x17, 0x1b, 0x97, 0x7d, 0xec, 0x58, - 0xf7, 0x1f, 0xfb, 0x7c, 0x09, 0x0d, 0x7a, 0x67, - 0x45, 0x87, 0xdc, 0xe8, 0x4f, 0x1d, 0x4e, 0x04, - 0xeb, 0xf8, 0xf3, 0x3e, 0x3d, 0xbd, 0x8a, 0x88, - 0xdd, 0xcd, 0x0b, 0x13, 0x98, 0x02, 0x93, 0x80, - 0x90, 0xd0, 0x24, 0x34, 0xcb, 0xed, 0xf4, 0xce, - 0x99, 0x10, 0x44, 0x40, 0x92, 0x3a, 0x01, 0x26, - 0x12, 0x1a, 0x48, 0x68, 0xf5, 0x81, 0x8b, 0xc7, - 0xd6, 0x20, 0x0a, 0x08, 0x00, 0x4c, 0xd7, 0x74, + 0xa5, 0x2d, 0x32, 0x8f, 0x0e, 0x30, 0x38, 0xc0, 0x54, 0xe6, 0x9e, 0x39, + 0x55, 0x7e, 0x52, 0x91, 0x64, 0x03, 0x57, 0x5a, 0x1c, 0x60, 0x07, 0x18, + 0x21, 0x72, 0xa8, 0xd1, 0x29, 0xc6, 0xa4, 0x3f, 0xe0, 0x27, 0x8d, 0x0c, + 0x82, 0xea, 0xae, 0xb4, 0x9a, 0x63, 0x49, 0xe5, 0x42, 0xe4, 0x15, 0xb7, + 0xc8, 0x06, 0x70, 0x9d, 0x41, 0x75, 0x19, 0xc9, 0xaa, 0xfc, 0x4d, 0xbf, + 0x2a, 0x73, 0x84, 0xd5, 0xc3, 0xaf, 0x2b, 0x86, 0xa7, 0xb1, 0xb2, 0x5b, + 0x46, 0xd3, 0x9f, 0xfd, 0xd4, 0x0f, 0x9c, 0x2f, 0x9b, 0x43, 0xef, 0xd9, + 0x79, 0xb6, 0x53, 0x7f, 0xc1, 0xf0, 0x23, 0xe7, 0x25, 0x5e, 0xb5, 0x1e, + 0xa2, 0xdf, 0xa6, 0xfe, 0xac, 0x22, 0xf9, 0xe2, 0x4a, 0xbc, 0x35, 0xca, + 0xee, 0x78, 0x05, 0x6b, 0x51, 0xe1, 0x59, 0xa3, 0xf2, 0x71, 0x56, 0x11, + 0x6a, 0x89, 0x94, 0x65, 0x8c, 0xbb, 0x77, 0x3c, 0x7b, 0x28, 0xab, 0xd2, + 0x31, 0xde, 0xc4, 0x5f, 0xcc, 0xcf, 0x76, 0x2c, 0xb8, 0xd8, 0x2e, 0x36, + 0xdb, 0x69, 0xb3, 0x14, 0x95, 0xbe, 0x62, 0xa1, 0x3b, 0x16, 0x66, 0xe9, + 0x5c, 0x6c, 0x6d, 0xad, 0x37, 0x61, 0x4b, 0xb9, 0xe3, 0xba, 0xf1, 0xa0, + 0x85, 0x83, 0xda, 0x47, 0xc5, 0xb0, 0x33, 0xfa, 0x96, 0x6f, 0x6e, 0xc2, + 0xf6, 0x50, 0xff, 0x5d, 0xa9, 0x8e, 0x17, 0x1b, 0x97, 0x7d, 0xec, 0x58, + 0xf7, 0x1f, 0xfb, 0x7c, 0x09, 0x0d, 0x7a, 0x67, 0x45, 0x87, 0xdc, 0xe8, + 0x4f, 0x1d, 0x4e, 0x04, 0xeb, 0xf8, 0xf3, 0x3e, 0x3d, 0xbd, 0x8a, 0x88, + 0xdd, 0xcd, 0x0b, 0x13, 0x98, 0x02, 0x93, 0x80, 0x90, 0xd0, 0x24, 0x34, + 0xcb, 0xed, 0xf4, 0xce, 0x99, 0x10, 0x44, 0x40, 0x92, 0x3a, 0x01, 0x26, + 0x12, 0x1a, 0x48, 0x68, 0xf5, 0x81, 0x8b, 0xc7, 0xd6, 0x20, 0x0a, 0x08, + 0x00, 0x4c, 0xd7, 0x74, }; static const uint8_t kuz_key_table[32][16] = { - {0x6e, 0xa2, 0x76, 0x72, 0x6c, 0x48, 0x7a, 0xb8, 0x5d, 0x27, 0xbd, 0x10, - 0xdd, 0x84, 0x94, 0x01,}, - {0xdc, 0x87, 0xec, 0xe4, 0xd8, 0x90, 0xf4, 0xb3, 0xba, 0x4e, 0xb9, 0x20, - 0x79, 0xcb, 0xeb, 0x02,}, - {0xb2, 0x25, 0x9a, 0x96, 0xb4, 0xd8, 0x8e, 0x0b, 0xe7, 0x69, 0x04, 0x30, - 0xa4, 0x4f, 0x7f, 0x03,}, - {0x7b, 0xcd, 0x1b, 0x0b, 0x73, 0xe3, 0x2b, 0xa5, 0xb7, 0x9c, 0xb1, 0x40, - 0xf2, 0x55, 0x15, 0x04,}, - {0x15, 0x6f, 0x6d, 0x79, 0x1f, 0xab, 0x51, 0x1d, 0xea, 0xbb, 0x0c, 0x50, - 0x2f, 0xd1, 0x81, 0x05,}, - {0xa7, 0x4a, 0xf7, 0xef, 0xab, 0x73, 0xdf, 0x16, 0x0d, 0xd2, 0x08, 0x60, - 0x8b, 0x9e, 0xfe, 0x06,}, - {0xc9, 0xe8, 0x81, 0x9d, 0xc7, 0x3b, 0xa5, 0xae, 0x50, 0xf5, 0xb5, 0x70, - 0x56, 0x1a, 0x6a, 0x07,}, - {0xf6, 0x59, 0x36, 0x16, 0xe6, 0x05, 0x56, 0x89, 0xad, 0xfb, 0xa1, 0x80, - 0x27, 0xaa, 0x2a, 0x08,}, - {0x98, 0xfb, 0x40, 0x64, 0x8a, 0x4d, 0x2c, 0x31, 0xf0, 0xdc, 0x1c, 0x90, - 0xfa, 0x2e, 0xbe, 0x09,}, - {0x2a, 0xde, 0xda, 0xf2, 0x3e, 0x95, 0xa2, 0x3a, 0x17, 0xb5, 0x18, 0xa0, - 0x5e, 0x61, 0xc1, 0x0a,}, - {0x44, 0x7c, 0xac, 0x80, 0x52, 0xdd, 0xd8, 0x82, 0x4a, 0x92, 0xa5, 0xb0, - 0x83, 0xe5, 0x55, 0x0b,}, - {0x8d, 0x94, 0x2d, 0x1d, 0x95, 0xe6, 0x7d, 0x2c, 0x1a, 0x67, 0x10, 0xc0, - 0xd5, 0xff, 0x3f, 0x0c,}, - {0xe3, 0x36, 0x5b, 0x6f, 0xf9, 0xae, 0x07, 0x94, 0x47, 0x40, 0xad, 0xd0, - 0x08, 0x7b, 0xab, 0x0d,}, - {0x51, 0x13, 0xc1, 0xf9, 0x4d, 0x76, 0x89, 0x9f, 0xa0, 0x29, 0xa9, 0xe0, - 0xac, 0x34, 0xd4, 0x0e,}, - {0x3f, 0xb1, 0xb7, 0x8b, 0x21, 0x3e, 0xf3, 0x27, 0xfd, 0x0e, 0x14, 0xf0, - 0x71, 0xb0, 0x40, 0x0f,}, - {0x2f, 0xb2, 0x6c, 0x2c, 0x0f, 0x0a, 0xac, 0xd1, 0x99, 0x35, 0x81, 0xc3, - 0x4e, 0x97, 0x54, 0x10,}, - {0x41, 0x10, 0x1a, 0x5e, 0x63, 0x42, 0xd6, 0x69, 0xc4, 0x12, 0x3c, 0xd3, - 0x93, 0x13, 0xc0, 0x11,}, - {0xf3, 0x35, 0x80, 0xc8, 0xd7, 0x9a, 0x58, 0x62, 0x23, 0x7b, 0x38, 0xe3, - 0x37, 0x5c, 0xbf, 0x12,}, - {0x9d, 0x97, 0xf6, 0xba, 0xbb, 0xd2, 0x22, 0xda, 0x7e, 0x5c, 0x85, 0xf3, - 0xea, 0xd8, 0x2b, 0x13,}, - {0x54, 0x7f, 0x77, 0x27, 0x7c, 0xe9, 0x87, 0x74, 0x2e, 0xa9, 0x30, 0x83, - 0xbc, 0xc2, 0x41, 0x14,}, - {0x3a, 0xdd, 0x01, 0x55, 0x10, 0xa1, 0xfd, 0xcc, 0x73, 0x8e, 0x8d, 0x93, - 0x61, 0x46, 0xd5, 0x15,}, - {0x88, 0xf8, 0x9b, 0xc3, 0xa4, 0x79, 0x73, 0xc7, 0x94, 0xe7, 0x89, 0xa3, - 0xc5, 0x09, 0xaa, 0x16,}, - {0xe6, 0x5a, 0xed, 0xb1, 0xc8, 0x31, 0x09, 0x7f, 0xc9, 0xc0, 0x34, 0xb3, - 0x18, 0x8d, 0x3e, 0x17,}, - {0xd9, 0xeb, 0x5a, 0x3a, 0xe9, 0x0f, 0xfa, 0x58, 0x34, 0xce, 0x20, 0x43, - 0x69, 0x3d, 0x7e, 0x18,}, - {0xb7, 0x49, 0x2c, 0x48, 0x85, 0x47, 0x80, 0xe0, 0x69, 0xe9, 0x9d, 0x53, - 0xb4, 0xb9, 0xea, 0x19,}, - {0x05, 0x6c, 0xb6, 0xde, 0x31, 0x9f, 0x0e, 0xeb, 0x8e, 0x80, 0x99, 0x63, - 0x10, 0xf6, 0x95, 0x1a,}, - {0x6b, 0xce, 0xc0, 0xac, 0x5d, 0xd7, 0x74, 0x53, 0xd3, 0xa7, 0x24, 0x73, - 0xcd, 0x72, 0x01, 0x1b,}, - {0xa2, 0x26, 0x41, 0x31, 0x9a, 0xec, 0xd1, 0xfd, 0x83, 0x52, 0x91, 0x03, - 0x9b, 0x68, 0x6b, 0x1c,}, - {0xcc, 0x84, 0x37, 0x43, 0xf6, 0xa4, 0xab, 0x45, 0xde, 0x75, 0x2c, 0x13, - 0x46, 0xec, 0xff, 0x1d,}, - {0x7e, 0xa1, 0xad, 0xd5, 0x42, 0x7c, 0x25, 0x4e, 0x39, 0x1c, 0x28, 0x23, - 0xe2, 0xa3, 0x80, 0x1e,}, - {0x10, 0x03, 0xdb, 0xa7, 0x2e, 0x34, 0x5f, 0xf6, 0x64, 0x3b, 0x95, 0x33, - 0x3f, 0x27, 0x14, 0x1f,}, - {0x5e, 0xa7, 0xd8, 0x58, 0x1e, 0x14, 0x9b, 0x61, 0xf1, 0x6a, 0xc1, 0x45, - 0x9c, 0xed, 0xa8, 0x20,}, + { + 0x6e, + 0xa2, + 0x76, + 0x72, + 0x6c, + 0x48, + 0x7a, + 0xb8, + 0x5d, + 0x27, + 0xbd, + 0x10, + 0xdd, + 0x84, + 0x94, + 0x01, + }, + { + 0xdc, + 0x87, + 0xec, + 0xe4, + 0xd8, + 0x90, + 0xf4, + 0xb3, + 0xba, + 0x4e, + 0xb9, + 0x20, + 0x79, + 0xcb, + 0xeb, + 0x02, + }, + { + 0xb2, + 0x25, + 0x9a, + 0x96, + 0xb4, + 0xd8, + 0x8e, + 0x0b, + 0xe7, + 0x69, + 0x04, + 0x30, + 0xa4, + 0x4f, + 0x7f, + 0x03, + }, + { + 0x7b, + 0xcd, + 0x1b, + 0x0b, + 0x73, + 0xe3, + 0x2b, + 0xa5, + 0xb7, + 0x9c, + 0xb1, + 0x40, + 0xf2, + 0x55, + 0x15, + 0x04, + }, + { + 0x15, + 0x6f, + 0x6d, + 0x79, + 0x1f, + 0xab, + 0x51, + 0x1d, + 0xea, + 0xbb, + 0x0c, + 0x50, + 0x2f, + 0xd1, + 0x81, + 0x05, + }, + { + 0xa7, + 0x4a, + 0xf7, + 0xef, + 0xab, + 0x73, + 0xdf, + 0x16, + 0x0d, + 0xd2, + 0x08, + 0x60, + 0x8b, + 0x9e, + 0xfe, + 0x06, + }, + { + 0xc9, + 0xe8, + 0x81, + 0x9d, + 0xc7, + 0x3b, + 0xa5, + 0xae, + 0x50, + 0xf5, + 0xb5, + 0x70, + 0x56, + 0x1a, + 0x6a, + 0x07, + }, + { + 0xf6, + 0x59, + 0x36, + 0x16, + 0xe6, + 0x05, + 0x56, + 0x89, + 0xad, + 0xfb, + 0xa1, + 0x80, + 0x27, + 0xaa, + 0x2a, + 0x08, + }, + { + 0x98, + 0xfb, + 0x40, + 0x64, + 0x8a, + 0x4d, + 0x2c, + 0x31, + 0xf0, + 0xdc, + 0x1c, + 0x90, + 0xfa, + 0x2e, + 0xbe, + 0x09, + }, + { + 0x2a, + 0xde, + 0xda, + 0xf2, + 0x3e, + 0x95, + 0xa2, + 0x3a, + 0x17, + 0xb5, + 0x18, + 0xa0, + 0x5e, + 0x61, + 0xc1, + 0x0a, + }, + { + 0x44, + 0x7c, + 0xac, + 0x80, + 0x52, + 0xdd, + 0xd8, + 0x82, + 0x4a, + 0x92, + 0xa5, + 0xb0, + 0x83, + 0xe5, + 0x55, + 0x0b, + }, + { + 0x8d, + 0x94, + 0x2d, + 0x1d, + 0x95, + 0xe6, + 0x7d, + 0x2c, + 0x1a, + 0x67, + 0x10, + 0xc0, + 0xd5, + 0xff, + 0x3f, + 0x0c, + }, + { + 0xe3, + 0x36, + 0x5b, + 0x6f, + 0xf9, + 0xae, + 0x07, + 0x94, + 0x47, + 0x40, + 0xad, + 0xd0, + 0x08, + 0x7b, + 0xab, + 0x0d, + }, + { + 0x51, + 0x13, + 0xc1, + 0xf9, + 0x4d, + 0x76, + 0x89, + 0x9f, + 0xa0, + 0x29, + 0xa9, + 0xe0, + 0xac, + 0x34, + 0xd4, + 0x0e, + }, + { + 0x3f, + 0xb1, + 0xb7, + 0x8b, + 0x21, + 0x3e, + 0xf3, + 0x27, + 0xfd, + 0x0e, + 0x14, + 0xf0, + 0x71, + 0xb0, + 0x40, + 0x0f, + }, + { + 0x2f, + 0xb2, + 0x6c, + 0x2c, + 0x0f, + 0x0a, + 0xac, + 0xd1, + 0x99, + 0x35, + 0x81, + 0xc3, + 0x4e, + 0x97, + 0x54, + 0x10, + }, + { + 0x41, + 0x10, + 0x1a, + 0x5e, + 0x63, + 0x42, + 0xd6, + 0x69, + 0xc4, + 0x12, + 0x3c, + 0xd3, + 0x93, + 0x13, + 0xc0, + 0x11, + }, + { + 0xf3, + 0x35, + 0x80, + 0xc8, + 0xd7, + 0x9a, + 0x58, + 0x62, + 0x23, + 0x7b, + 0x38, + 0xe3, + 0x37, + 0x5c, + 0xbf, + 0x12, + }, + { + 0x9d, + 0x97, + 0xf6, + 0xba, + 0xbb, + 0xd2, + 0x22, + 0xda, + 0x7e, + 0x5c, + 0x85, + 0xf3, + 0xea, + 0xd8, + 0x2b, + 0x13, + }, + { + 0x54, + 0x7f, + 0x77, + 0x27, + 0x7c, + 0xe9, + 0x87, + 0x74, + 0x2e, + 0xa9, + 0x30, + 0x83, + 0xbc, + 0xc2, + 0x41, + 0x14, + }, + { + 0x3a, + 0xdd, + 0x01, + 0x55, + 0x10, + 0xa1, + 0xfd, + 0xcc, + 0x73, + 0x8e, + 0x8d, + 0x93, + 0x61, + 0x46, + 0xd5, + 0x15, + }, + { + 0x88, + 0xf8, + 0x9b, + 0xc3, + 0xa4, + 0x79, + 0x73, + 0xc7, + 0x94, + 0xe7, + 0x89, + 0xa3, + 0xc5, + 0x09, + 0xaa, + 0x16, + }, + { + 0xe6, + 0x5a, + 0xed, + 0xb1, + 0xc8, + 0x31, + 0x09, + 0x7f, + 0xc9, + 0xc0, + 0x34, + 0xb3, + 0x18, + 0x8d, + 0x3e, + 0x17, + }, + { + 0xd9, + 0xeb, + 0x5a, + 0x3a, + 0xe9, + 0x0f, + 0xfa, + 0x58, + 0x34, + 0xce, + 0x20, + 0x43, + 0x69, + 0x3d, + 0x7e, + 0x18, + }, + { + 0xb7, + 0x49, + 0x2c, + 0x48, + 0x85, + 0x47, + 0x80, + 0xe0, + 0x69, + 0xe9, + 0x9d, + 0x53, + 0xb4, + 0xb9, + 0xea, + 0x19, + }, + { + 0x05, + 0x6c, + 0xb6, + 0xde, + 0x31, + 0x9f, + 0x0e, + 0xeb, + 0x8e, + 0x80, + 0x99, + 0x63, + 0x10, + 0xf6, + 0x95, + 0x1a, + }, + { + 0x6b, + 0xce, + 0xc0, + 0xac, + 0x5d, + 0xd7, + 0x74, + 0x53, + 0xd3, + 0xa7, + 0x24, + 0x73, + 0xcd, + 0x72, + 0x01, + 0x1b, + }, + { + 0xa2, + 0x26, + 0x41, + 0x31, + 0x9a, + 0xec, + 0xd1, + 0xfd, + 0x83, + 0x52, + 0x91, + 0x03, + 0x9b, + 0x68, + 0x6b, + 0x1c, + }, + { + 0xcc, + 0x84, + 0x37, + 0x43, + 0xf6, + 0xa4, + 0xab, + 0x45, + 0xde, + 0x75, + 0x2c, + 0x13, + 0x46, + 0xec, + 0xff, + 0x1d, + }, + { + 0x7e, + 0xa1, + 0xad, + 0xd5, + 0x42, + 0x7c, + 0x25, + 0x4e, + 0x39, + 0x1c, + 0x28, + 0x23, + 0xe2, + 0xa3, + 0x80, + 0x1e, + }, + { + 0x10, + 0x03, + 0xdb, + 0xa7, + 0x2e, + 0x34, + 0x5f, + 0xf6, + 0x64, + 0x3b, + 0x95, + 0x33, + 0x3f, + 0x27, + 0x14, + 0x1f, + }, + { + 0x5e, + 0xa7, + 0xd8, + 0x58, + 0x1e, + 0x14, + 0x9b, + 0x61, + 0xf1, + 0x6a, + 0xc1, + 0x45, + 0x9c, + 0xed, + 0xa8, + 0x20, + }, }; static const uint8_t kuz_table[16][256 * 16] = { - { /* 0 */ - 0xe9, 0xfb, 0xd5, 0x0c, 0x7a, 0xc0, 0x80, 0x96, 0x19, 0x11, 0x87, 0x93, - 0x1b, 0xc9, 0xae, 0xb5, - 0x19, 0x08, 0xe0, 0x8c, 0xb2, 0x17, 0x1a, 0xce, 0x7b, 0x32, 0xfc, 0xab, - 0xf8, 0xfe, 0xf2, 0x0a, - 0xbf, 0xcb, 0xd0, 0xa2, 0x50, 0xb2, 0xdc, 0x77, 0xc0, 0xbd, 0xca, 0xef, - 0x4e, 0x88, 0xc7, 0x89, - 0x62, 0x41, 0x10, 0x1a, 0x5e, 0x63, 0x42, 0xd6, 0x69, 0xc4, 0x12, 0x3c, - 0xd3, 0x93, 0x13, 0xc0, - 0x4f, 0x38, 0xe5, 0x22, 0x98, 0x65, 0x46, 0x2f, 0xa2, 0x9e, 0xb1, 0xd7, - 0xad, 0xbf, 0x9b, 0x36, - 0x38, 0xb3, 0x39, 0x6a, 0x11, 0x6f, 0x4a, 0xe7, 0x3c, 0x70, 0x97, 0x29, - 0x2f, 0xcb, 0xc0, 0xef, - 0xfb, 0x1f, 0xb7, 0xc2, 0x06, 0x7d, 0x56, 0x4d, 0x08, 0x35, 0x78, 0xfd, - 0x96, 0x0f, 0xfe, 0x68, - 0x4a, 0x88, 0xf8, 0x9b, 0xc3, 0xa4, 0x79, 0x73, 0xc7, 0x94, 0xe7, 0x89, - 0xa3, 0xc5, 0x09, 0xaa, - 0xc1, 0x32, 0x3d, 0x8d, 0xe7, 0x07, 0xbb, 0x33, 0xb7, 0x41, 0x72, 0x26, - 0x6b, 0x9f, 0xb4, 0xdf, - 0x6a, 0x7c, 0x99, 0x8e, 0x18, 0x37, 0x9b, 0xf7, 0x20, 0xd4, 0x23, 0x72, - 0x1d, 0x3c, 0x7e, 0x63, - 0x0e, 0x5c, 0x9f, 0xfb, 0x95, 0x6b, 0xf3, 0x49, 0x0f, 0x1c, 0x55, 0x9b, - 0x7b, 0x42, 0x30, 0x4b, - 0x97, 0x02, 0x38, 0x23, 0xcd, 0x75, 0xe7, 0xd2, 0x6e, 0xed, 0x3f, 0x5a, - 0x3e, 0xde, 0xdd, 0xe3, - 0x0b, 0xec, 0x82, 0x42, 0xce, 0xaa, 0xcc, 0x15, 0x6a, 0x16, 0x03, 0xc5, - 0x75, 0x38, 0xa2, 0xd7, - 0xa5, 0x12, 0x3b, 0xf8, 0x6a, 0x5b, 0xd3, 0x8d, 0x98, 0x89, 0x04, 0xcf, - 0x0d, 0xe1, 0xfa, 0xf7, - 0xba, 0x7b, 0xcd, 0x1b, 0x0b, 0x73, 0xe3, 0x2b, 0xa5, 0xb7, 0x9c, 0xb1, - 0x40, 0xf2, 0x55, 0x15, - 0x33, 0x5f, 0xbb, 0x28, 0xdf, 0xc5, 0x86, 0xf2, 0x56, 0x66, 0x94, 0xec, - 0x5a, 0xf3, 0x62, 0x38, - 0x31, 0xc1, 0x08, 0x0d, 0x2f, 0xd0, 0x21, 0x6b, 0xd5, 0x62, 0x09, 0x1e, - 0x88, 0xa8, 0xe8, 0x60, - 0xed, 0x04, 0x70, 0x46, 0x59, 0xea, 0x0d, 0x67, 0xdc, 0x19, 0x7e, 0xb4, - 0x7c, 0x7f, 0x79, 0x05, - 0xe4, 0x76, 0x41, 0x21, 0x67, 0x55, 0x66, 0xeb, 0x35, 0x0b, 0xe0, 0x83, - 0xdb, 0x1c, 0x51, 0x8a, - 0x58, 0x6c, 0x9a, 0x55, 0xbf, 0x19, 0xaf, 0xa8, 0xd6, 0xb0, 0x18, 0xe7, - 0x2e, 0x03, 0x59, 0x77, - 0x1e, 0x26, 0x4e, 0x10, 0x19, 0xc3, 0x82, 0x0b, 0x9d, 0x3c, 0x37, 0x07, - 0x24, 0xdf, 0xea, 0xce, - 0xc9, 0x0f, 0xb4, 0x19, 0xa1, 0x53, 0x62, 0x12, 0xfe, 0x51, 0x43, 0x68, - 0xa5, 0x30, 0xd9, 0x7c, - 0xf4, 0x0c, 0x90, 0xca, 0xeb, 0xfd, 0x17, 0xa9, 0xa7, 0x2b, 0x82, 0x1f, - 0x84, 0x81, 0x8b, 0x0f, - 0xff, 0xe0, 0x12, 0x88, 0x25, 0x57, 0xdb, 0xbc, 0xcd, 0x3d, 0x81, 0xda, - 0xf1, 0xb9, 0x29, 0xd8, - 0x85, 0xe6, 0x5a, 0xed, 0xb1, 0xc8, 0x31, 0x09, 0x7f, 0xc9, 0xc0, 0x34, - 0xb3, 0x18, 0x8d, 0x3e, - 0xd3, 0xd6, 0x5f, 0x43, 0x9b, 0xba, 0x6d, 0xe8, 0xa6, 0x65, 0x8d, 0x48, - 0xe6, 0x59, 0xe4, 0x02, - 0x2b, 0x18, 0xe3, 0x57, 0x15, 0x39, 0x2e, 0x91, 0x8d, 0x56, 0xc7, 0x3e, - 0xcb, 0xc1, 0xd5, 0x1e, - 0x30, 0x8e, 0xb0, 0xfe, 0x57, 0x3b, 0x93, 0xc6, 0x75, 0x60, 0xa6, 0x67, - 0xe1, 0x64, 0xad, 0x4c, - 0x17, 0x54, 0x7f, 0x77, 0x27, 0x7c, 0xe9, 0x87, 0x74, 0x2e, 0xa9, 0x30, - 0x83, 0xbc, 0xc2, 0x41, - 0x12, 0xe4, 0x62, 0xce, 0x7c, 0xbd, 0xd6, 0xdb, 0x11, 0x24, 0xff, 0x6e, - 0x8d, 0xc6, 0x50, 0xdd, - 0xc3, 0xac, 0x8e, 0xa8, 0x17, 0x12, 0x1c, 0xaa, 0x34, 0x45, 0xef, 0xd4, - 0xb9, 0xc4, 0x3e, 0x87, - 0x1f, 0x69, 0xf6, 0xe3, 0x61, 0x28, 0x30, 0xa6, 0x3d, 0x3e, 0x98, 0x7e, - 0x4d, 0x13, 0xaf, 0xe2, - 0x9c, 0xee, 0xba, 0x61, 0x03, 0xdf, 0x2b, 0xc7, 0x04, 0xfb, 0x3c, 0x9f, - 0x4b, 0xe6, 0x7f, 0x34, - 0x1a, 0xd9, 0xeb, 0x5a, 0x3a, 0xe9, 0x0f, 0xfa, 0x58, 0x34, 0xce, 0x20, - 0x43, 0x69, 0x3d, 0x7e, - 0x1d, 0xf7, 0x45, 0xc6, 0x91, 0x3d, 0x97, 0x3f, 0xbe, 0x3a, 0x05, 0x8c, - 0x9f, 0x48, 0x25, 0xba, - 0xb6, 0xb9, 0xe1, 0xc5, 0x6e, 0x0d, 0xb7, 0xfb, 0x29, 0xaf, 0x54, 0xd8, - 0xe9, 0xeb, 0xef, 0x06, - 0x14, 0x85, 0x74, 0xa1, 0xaf, 0x82, 0xfc, 0xb3, 0x57, 0x28, 0x9b, 0xbb, - 0x38, 0x2b, 0x0d, 0x35, - 0x51, 0x1e, 0xab, 0x32, 0x81, 0xa6, 0xc4, 0x24, 0x3f, 0xa2, 0x86, 0xd0, - 0x89, 0x60, 0x71, 0xf8, - 0xd6, 0x66, 0x42, 0xfa, 0xc0, 0x7b, 0x52, 0xb4, 0xc3, 0x6f, 0xdb, 0x16, - 0xe8, 0x23, 0x76, 0x9e, - 0x56, 0x30, 0x05, 0xae, 0x2a, 0x72, 0x5c, 0xe1, 0xd9, 0xac, 0x4d, 0x7c, - 0x55, 0x41, 0x69, 0x3c, - 0xee, 0xd5, 0x7b, 0x90, 0xd1, 0x14, 0x18, 0x53, 0xff, 0x1f, 0x4c, 0x3f, - 0xc7, 0xe8, 0xb6, 0x71, - 0xa0, 0xa2, 0x26, 0x41, 0x31, 0x9a, 0xec, 0xd1, 0xfd, 0x83, 0x52, 0x91, - 0x03, 0x9b, 0x68, 0x6b, - 0x39, 0xfc, 0x81, 0x99, 0x69, 0x84, 0xf8, 0x4a, 0x9c, 0x72, 0x38, 0x50, - 0x46, 0x07, 0x85, 0xc3, - 0xac, 0x60, 0x0a, 0x9f, 0x54, 0xe4, 0xb8, 0x01, 0x71, 0x9b, 0x9a, 0xf8, - 0xaa, 0x82, 0xd2, 0x78, - 0x04, 0xff, 0xa5, 0x4a, 0x23, 0x2a, 0x8d, 0xf1, 0xc5, 0x08, 0xf9, 0x27, - 0x67, 0xb6, 0xd7, 0xb0, - 0xcf, 0x6e, 0xa2, 0x76, 0x72, 0x6c, 0x48, 0x7a, 0xb8, 0x5d, 0x27, 0xbd, - 0x10, 0xdd, 0x84, 0x94, - 0x71, 0xea, 0xca, 0x27, 0x5a, 0x35, 0x26, 0xa0, 0xd8, 0xe2, 0x42, 0x2b, - 0x37, 0x99, 0x06, 0x31, - 0x6e, 0x83, 0x3c, 0xc4, 0x3b, 0x1d, 0x16, 0x06, 0xe5, 0xdc, 0xda, 0x55, - 0x7a, 0x8a, 0xa9, 0xd3, - 0x75, 0x15, 0x6f, 0x6d, 0x79, 0x1f, 0xab, 0x51, 0x1d, 0xea, 0xbb, 0x0c, - 0x50, 0x2f, 0xd1, 0x81, - 0x9b, 0xc0, 0x14, 0xfd, 0xa8, 0x0b, 0xb3, 0x02, 0xe2, 0xf5, 0xf7, 0x33, - 0x97, 0xc7, 0x67, 0xf0, - 0x5d, 0xdc, 0x87, 0xec, 0xe4, 0xd8, 0x90, 0xf4, 0xb3, 0xba, 0x4e, 0xb9, - 0x20, 0x79, 0xcb, 0xeb, - 0xe8, 0xb4, 0x6d, 0xff, 0x02, 0x2b, 0x32, 0x3b, 0xb9, 0x13, 0x28, 0xea, - 0x72, 0x05, 0xeb, 0x99, - 0xdb, 0xeb, 0xd6, 0xd7, 0xdd, 0xee, 0xb4, 0xc9, 0xef, 0x75, 0xbc, 0x06, - 0x28, 0xf6, 0x89, 0xa1, - 0x82, 0xc8, 0xf4, 0x71, 0x1a, 0x1c, 0xa9, 0xcc, 0x99, 0xc7, 0x0b, 0x98, - 0x6f, 0x39, 0x95, 0xfa, - 0xbe, 0x84, 0x68, 0x51, 0x28, 0x59, 0x6e, 0xda, 0x60, 0xbf, 0x65, 0x96, - 0x27, 0x44, 0x82, 0xa5, - 0xb8, 0xe5, 0x7e, 0x3e, 0xfb, 0x66, 0x44, 0xb2, 0x26, 0xb3, 0x01, 0x43, - 0x92, 0xa9, 0xdf, 0x4d, - 0xe7, 0xa7, 0x4a, 0xf7, 0xef, 0xab, 0x73, 0xdf, 0x16, 0x0d, 0xd2, 0x08, - 0x60, 0x8b, 0x9e, 0xfe, - 0x25, 0x44, 0x7c, 0xac, 0x80, 0x52, 0xdd, 0xd8, 0x82, 0x4a, 0x92, 0xa5, - 0xb0, 0x83, 0xe5, 0x55, - 0x8b, 0xba, 0xc5, 0x16, 0x24, 0xa3, 0xc2, 0x40, 0x70, 0xd5, 0x95, 0xaf, - 0xc8, 0x5a, 0xbd, 0x75, - 0x3b, 0x62, 0x32, 0xbc, 0x99, 0x91, 0x5f, 0xd3, 0x1f, 0x76, 0xa5, 0xa2, - 0x94, 0x5c, 0x0f, 0x9b, - 0x5a, 0xf2, 0x29, 0x70, 0x4f, 0x0c, 0x08, 0x31, 0x55, 0xb4, 0x85, 0x15, - 0xfc, 0x58, 0xd3, 0x2f, - 0xc7, 0x53, 0x2b, 0xe2, 0x34, 0x38, 0x91, 0x5b, 0xf1, 0x4d, 0x16, 0xf3, - 0xde, 0x72, 0xe9, 0x37, - 0xef, 0x9a, 0xc3, 0x63, 0xa9, 0xff, 0xaa, 0xfe, 0x5f, 0x1d, 0xe3, 0x46, - 0xae, 0x24, 0xf3, 0x5d, - 0x32, 0x10, 0x03, 0xdb, 0xa7, 0x2e, 0x34, 0x5f, 0xf6, 0x64, 0x3b, 0x95, - 0x33, 0x3f, 0x27, 0x14, - 0x6c, 0x1d, 0x8f, 0xe1, 0xcb, 0x08, 0xb1, 0x9f, 0x66, 0xd8, 0x47, 0xa7, - 0xa8, 0xd1, 0x23, 0x8b, - 0x8e, 0x0a, 0xd8, 0xaf, 0x7f, 0x62, 0xfd, 0x1c, 0x15, 0xdf, 0xc3, 0xf1, - 0xc6, 0x20, 0x2f, 0xe9, - 0x94, 0xd3, 0x33, 0xf5, 0x45, 0x8b, 0xf2, 0xe6, 0x4d, 0xeb, 0x0d, 0xd1, - 0x85, 0x49, 0x12, 0x97, - 0x93, 0xfd, 0x9d, 0x69, 0xee, 0x5f, 0x6a, 0x23, 0xab, 0xe5, 0xc6, 0x7d, - 0x59, 0x68, 0x0a, 0x53, - 0xa3, 0x73, 0x2d, 0x97, 0xb9, 0x64, 0xf9, 0xe5, 0xde, 0x85, 0x60, 0x1a, - 0xb8, 0x0c, 0xa7, 0x1f, - 0x67, 0xf1, 0x0d, 0xa3, 0x05, 0xa2, 0x7d, 0x8a, 0x0c, 0xce, 0x44, 0x62, - 0xdd, 0xe9, 0x81, 0x5c, - 0x46, 0x4a, 0xd4, 0x45, 0xa6, 0xda, 0x2d, 0xa3, 0x4b, 0x8c, 0x2f, 0xe0, - 0x0a, 0xdc, 0xb3, 0xb9, - 0x9d, 0xa1, 0x02, 0x92, 0x7b, 0x34, 0x99, 0x6a, 0xa4, 0xf9, 0x93, 0xe6, - 0x22, 0x2a, 0x3a, 0x18, - 0xb9, 0xaa, 0xc6, 0xcd, 0x83, 0x8d, 0xf6, 0x1f, 0x86, 0xb1, 0xae, 0x3a, - 0xfb, 0x65, 0x9a, 0x61, - 0x73, 0x74, 0x79, 0x02, 0xaa, 0x20, 0x81, 0x39, 0x5b, 0xe6, 0xdf, 0xd9, - 0xe5, 0xc2, 0x8c, 0x69, - 0xdf, 0x14, 0x73, 0x9d, 0xfe, 0xc4, 0x39, 0x38, 0x2a, 0x7d, 0x45, 0x21, - 0x4f, 0x40, 0x5e, 0x11, - 0xe5, 0x39, 0xf9, 0xd2, 0x1f, 0xbe, 0xd4, 0x46, 0x95, 0x09, 0x4f, 0xfa, - 0xb2, 0xd0, 0x14, 0xa6, - 0x26, 0x95, 0x77, 0x7a, 0x08, 0xac, 0xc8, 0xec, 0xa1, 0x4c, 0xa0, 0x2e, - 0x0b, 0x14, 0x2a, 0x21, - 0xde, 0x5b, 0xcb, 0x6e, 0x86, 0x2f, 0x8b, 0x95, 0x8a, 0x7f, 0xea, 0x58, - 0x26, 0x8c, 0x1b, 0x3d, - 0x80, 0x56, 0x47, 0x54, 0xea, 0x09, 0x0e, 0x55, 0x1a, 0xc3, 0x96, 0x6a, - 0xbd, 0x62, 0x1f, 0xa2, - 0xdd, 0x8a, 0xc0, 0xb8, 0x0e, 0xd1, 0x9e, 0xa1, 0xa9, 0x79, 0xd8, 0xd3, - 0x9d, 0x1b, 0xd4, 0x49, - 0x60, 0xdf, 0xa3, 0x3f, 0xae, 0x76, 0xe5, 0x4f, 0xea, 0xc0, 0x8f, 0xce, - 0x01, 0xc8, 0x99, 0x98, - 0xc5, 0xcd, 0x98, 0xc7, 0xc4, 0x2d, 0x36, 0xc2, 0x72, 0x49, 0x8b, 0x01, - 0x0c, 0x29, 0x63, 0x6f, - 0x50, 0x51, 0x13, 0xc1, 0xf9, 0x4d, 0x76, 0x89, 0x9f, 0xa0, 0x29, 0xa9, - 0xe0, 0xac, 0x34, 0xd4, - 0xbb, 0x34, 0x75, 0xe8, 0x73, 0x98, 0x51, 0x86, 0x05, 0xb5, 0x33, 0xc8, - 0x29, 0x3e, 0x10, 0x39, - 0xb7, 0xf6, 0x59, 0x36, 0x16, 0xe6, 0x05, 0x56, 0x89, 0xad, 0xfb, 0xa1, - 0x80, 0x27, 0xaa, 0x2a, - 0x0d, 0x8d, 0x94, 0x2d, 0x1d, 0x95, 0xe6, 0x7d, 0x2c, 0x1a, 0x67, 0x10, - 0xc0, 0xd5, 0xff, 0x3f, - 0x22, 0x6a, 0xd2, 0x30, 0x2b, 0x86, 0x45, 0x1d, 0x64, 0x44, 0x59, 0x09, - 0x6c, 0xa2, 0xfd, 0x91, - 0xf0, 0xf3, 0x35, 0x80, 0xc8, 0xd7, 0x9a, 0x58, 0x62, 0x23, 0x7b, 0x38, - 0xe3, 0x37, 0x5c, 0xbf, - 0x8a, 0xf5, 0x7d, 0xe5, 0x5c, 0x48, 0x70, 0xed, 0xd0, 0xd7, 0x3a, 0xd6, - 0xa1, 0x96, 0xf8, 0x59, - 0x98, 0x11, 0x1f, 0x2b, 0x20, 0xf5, 0xa6, 0x36, 0xc1, 0xf3, 0xc5, 0xb8, - 0x2c, 0x50, 0xa8, 0x84, - 0x3f, 0x9d, 0x97, 0xf6, 0xba, 0xbb, 0xd2, 0x22, 0xda, 0x7e, 0x5c, 0x85, - 0xf3, 0xea, 0xd8, 0x2b, - 0xd9, 0x75, 0x65, 0xf2, 0x2d, 0xfb, 0x13, 0x50, 0x6c, 0x71, 0x21, 0xf4, - 0xfa, 0xad, 0x03, 0xf9, - 0x81, 0x19, 0xff, 0xa7, 0x92, 0xe2, 0xbc, 0xf8, 0xba, 0xc1, 0x39, 0x13, - 0xd4, 0xae, 0x5a, 0x8e, - 0x3d, 0x03, 0x24, 0xd3, 0x4a, 0xae, 0x75, 0xbb, 0x59, 0x7a, 0xc1, 0x77, - 0x21, 0xb1, 0x52, 0x73, - 0x9e, 0x70, 0x09, 0x44, 0xf3, 0xca, 0x8c, 0x5e, 0x87, 0xff, 0xa1, 0x6d, - 0x99, 0xbd, 0xf5, 0x6c, - 0x09, 0x72, 0x31, 0x67, 0x3e, 0xbf, 0x6b, 0x8c, 0xe9, 0x12, 0x9e, 0x37, - 0xa7, 0x63, 0x28, 0x8f, - 0xd8, 0x3a, 0xdd, 0x01, 0x55, 0x10, 0xa1, 0xfd, 0xcc, 0x73, 0x8e, 0x8d, - 0x93, 0x61, 0x46, 0xd5, - 0x77, 0x8b, 0xdc, 0x48, 0x89, 0x0a, 0x0c, 0xc8, 0x9e, 0xee, 0x26, 0xfe, - 0x82, 0x74, 0x5b, 0xd9, - 0x6b, 0x33, 0x21, 0x7d, 0x60, 0xdc, 0x29, 0x5a, 0x80, 0xd6, 0x8c, 0x0b, - 0x74, 0xf0, 0x3b, 0x4f, - 0xe1, 0xc6, 0x5c, 0x98, 0x3c, 0x94, 0x59, 0xb7, 0x50, 0x01, 0xb6, 0xdd, - 0xd5, 0x66, 0xc3, 0x16, - 0xad, 0x2f, 0xb2, 0x6c, 0x2c, 0x0f, 0x0a, 0xac, 0xd1, 0x99, 0x35, 0x81, - 0xc3, 0x4e, 0x97, 0x54, - 0xe0, 0x89, 0xe4, 0x6b, 0x44, 0x7f, 0xeb, 0x1a, 0xf0, 0x03, 0x19, 0xa4, - 0xbc, 0xaa, 0x86, 0x3a, - 0x66, 0xbe, 0xb5, 0x50, 0x7d, 0x49, 0xcf, 0x27, 0xac, 0xcc, 0xeb, 0x1b, - 0xb4, 0x25, 0xc4, 0x70, - 0xf8, 0xce, 0xbc, 0x14, 0x8e, 0x83, 0x43, 0x79, 0x2b, 0x33, 0x4a, 0x76, - 0x2d, 0x98, 0x31, 0x1c, - 0x76, 0xc4, 0x64, 0xbb, 0xf1, 0xe1, 0xbe, 0x65, 0x3e, 0xec, 0x89, 0x87, - 0xeb, 0xb8, 0x1e, 0xf5, - 0x43, 0xfa, 0xc9, 0xfc, 0xfd, 0x1b, 0x12, 0xff, 0x2e, 0x86, 0x79, 0xbe, - 0x04, 0xa6, 0x21, 0x25, - 0x72, 0x3b, 0xc1, 0xf1, 0xd2, 0xcb, 0x33, 0x94, 0xfb, 0xe4, 0x70, 0xa0, - 0x8c, 0x0e, 0xc9, 0x45, - 0xf7, 0xdd, 0x9b, 0x1c, 0x63, 0x03, 0x02, 0x9d, 0x84, 0x2d, 0xb0, 0x94, - 0x3f, 0x16, 0x44, 0x7b, - 0x4e, 0x77, 0x5d, 0xd1, 0xe0, 0x8e, 0xf4, 0x82, 0x02, 0x9c, 0x1e, 0xae, - 0xc4, 0x73, 0xde, 0x1a, - 0xdc, 0xc5, 0x78, 0x4b, 0x76, 0x3a, 0x2c, 0x0c, 0x09, 0x7b, 0x77, 0xaa, - 0xf4, 0xd7, 0x91, 0x65, - 0x48, 0x16, 0x4b, 0xbe, 0x33, 0xb1, 0xde, 0xea, 0x44, 0x90, 0x7a, 0x7b, - 0x71, 0x9e, 0x83, 0xf2, - 0xda, 0xa4, 0x6e, 0x24, 0xa5, 0x05, 0x06, 0x64, 0x4f, 0x77, 0x13, 0x7f, - 0x41, 0x3a, 0xcc, 0x8d, - 0x69, 0xad, 0x92, 0x58, 0x90, 0xc9, 0x8e, 0xc3, 0x03, 0xd2, 0x11, 0xf9, - 0xa6, 0xab, 0xb1, 0x17, - 0xb0, 0xd8, 0xf7, 0xaa, 0xbd, 0x32, 0x9d, 0x93, 0x6f, 0xa3, 0x30, 0x0d, - 0x5c, 0x06, 0xb2, 0xee, - 0xd5, 0xb7, 0x49, 0x2c, 0x48, 0x85, 0x47, 0x80, 0xe0, 0x69, 0xe9, 0x9d, - 0x53, 0xb4, 0xb9, 0xea, - 0xf6, 0x92, 0x23, 0xef, 0x1b, 0xe8, 0xb0, 0x30, 0x24, 0x2f, 0x1f, 0xed, - 0x56, 0xda, 0x01, 0x57, - 0x7b, 0x49, 0xf0, 0x96, 0xec, 0x74, 0x58, 0x18, 0x12, 0xf6, 0xee, 0x97, - 0x2b, 0x6d, 0xe1, 0xca, - 0x41, 0x64, 0x7a, 0xd9, 0x0d, 0x0e, 0xb5, 0x66, 0xad, 0x82, 0xe4, 0x4c, - 0xd6, 0xfd, 0xab, 0x7d, - 0xcb, 0x91, 0x07, 0x3c, 0x51, 0x46, 0xc5, 0x8b, 0x7d, 0x55, 0xde, 0x9a, - 0x77, 0x6b, 0x53, 0x24, - 0x95, 0x9c, 0x8b, 0x06, 0x3d, 0x60, 0x40, 0x4b, 0xed, 0xe9, 0xa2, 0xa8, - 0xec, 0x85, 0x57, 0xbb, - 0xaa, 0x01, 0x1c, 0xf0, 0x87, 0xdb, 0x92, 0x69, 0x37, 0x97, 0xfe, 0x2d, - 0x1f, 0x6f, 0x8f, 0x90, - 0xe6, 0xe8, 0xf2, 0x04, 0x97, 0x40, 0xc1, 0x72, 0xb6, 0x0f, 0x7d, 0x71, - 0x09, 0x47, 0xdb, 0xd2, - 0x37, 0xa0, 0x1e, 0x62, 0xfc, 0xef, 0x0b, 0x03, 0x93, 0x6e, 0x6d, 0xcb, - 0x3d, 0x45, 0xb5, 0x88, - 0x21, 0xbb, 0xd9, 0xe6, 0xa3, 0x78, 0x50, 0x29, 0x47, 0x42, 0x6b, 0x82, - 0xd7, 0x35, 0x32, 0xe5, - 0x42, 0xb5, 0x71, 0x0f, 0x85, 0xf0, 0xa0, 0x52, 0x8e, 0x84, 0xd6, 0xc7, - 0x6d, 0x6a, 0x64, 0x09, - 0xd7, 0x29, 0xfa, 0x09, 0xb8, 0x90, 0xe0, 0x19, 0x63, 0x6d, 0x74, 0x6f, - 0x81, 0xef, 0x33, 0xb2, - 0xc2, 0xe3, 0x36, 0x5b, 0x6f, 0xf9, 0xae, 0x07, 0x94, 0x47, 0x40, 0xad, - 0xd0, 0x08, 0x7b, 0xab, - 0x74, 0x5a, 0xd7, 0x9e, 0x01, 0xf4, 0x19, 0xfc, 0xbd, 0xe8, 0x14, 0x75, - 0x39, 0xe3, 0x94, 0xad, - 0xe2, 0x17, 0x57, 0x4e, 0xb4, 0x6a, 0x4c, 0x83, 0x73, 0x07, 0x84, 0x56, - 0x6e, 0xf1, 0x0c, 0x62, - 0x91, 0x63, 0x2e, 0x4c, 0x1e, 0x4a, 0xcd, 0xba, 0x28, 0xe1, 0x5b, 0x8f, - 0x8b, 0x33, 0x80, 0x0b, - 0x23, 0x25, 0x6a, 0xc3, 0x53, 0x6d, 0xf7, 0xb0, 0xc4, 0x46, 0xf6, 0x70, - 0x05, 0x6e, 0xb8, 0xbd, - 0xc0, 0x7d, 0x85, 0x7e, 0x9f, 0xec, 0x09, 0x9e, 0x17, 0x43, 0xdd, 0x5f, - 0x02, 0x53, 0xf1, 0xf3, - 0x64, 0x20, 0x06, 0x75, 0x8d, 0x5c, 0x68, 0xbe, 0x2f, 0xc8, 0x76, 0xe9, - 0x66, 0x7e, 0x4e, 0x28, - 0x0f, 0x13, 0x27, 0x08, 0xed, 0x80, 0x41, 0xe4, 0xaf, 0x1e, 0xfa, 0xe2, - 0x12, 0x8e, 0x75, 0x67, - 0x63, 0x0e, 0xa8, 0xe9, 0x26, 0x88, 0xf0, 0x7b, 0xc9, 0xc6, 0xbd, 0x45, - 0xba, 0x5f, 0x56, 0xec, - 0xa8, 0x9f, 0xaf, 0xd5, 0x77, 0xce, 0x35, 0xf0, 0xb4, 0x93, 0x63, 0xdf, - 0xcd, 0x34, 0x05, 0xc8, - 0x55, 0xe1, 0x0e, 0x78, 0xa2, 0x8c, 0x49, 0xd5, 0xfa, 0xaa, 0x7f, 0xf7, - 0xee, 0xd6, 0xa6, 0x48, - 0xbd, 0x55, 0x63, 0x87, 0xa0, 0xa7, 0x7b, 0xee, 0x43, 0xb9, 0x57, 0x1d, - 0x9c, 0xd3, 0x4d, 0xd1, - 0x9a, 0x8f, 0xac, 0x0e, 0xd0, 0xe0, 0x01, 0xaf, 0x42, 0xf7, 0x58, 0x4a, - 0xfe, 0x0b, 0x22, 0xdc, - 0x03, 0xd1, 0x0b, 0xd6, 0x88, 0xfe, 0x15, 0x34, 0x23, 0x06, 0x32, 0x8b, - 0xbb, 0x97, 0xcf, 0x74, - 0xc8, 0x40, 0x0c, 0xea, 0xd9, 0xb8, 0xd0, 0xbf, 0x5e, 0x53, 0xec, 0x11, - 0xcc, 0xfc, 0x9c, 0x50, - 0xc4, 0x82, 0x20, 0x34, 0xbc, 0xc6, 0x84, 0x6f, 0xd2, 0x4b, 0x24, 0x78, - 0x65, 0xe5, 0x26, 0x43, - 0x6d, 0x52, 0x37, 0x12, 0xb3, 0xe3, 0x03, 0x32, 0xc6, 0xda, 0xe8, 0xde, - 0xc1, 0x1d, 0x66, 0xa7, - 0x92, 0xb2, 0x25, 0x9a, 0x96, 0xb4, 0xd8, 0x8e, 0x0b, 0xe7, 0x69, 0x04, - 0x30, 0xa4, 0x4f, 0x7f, - 0x49, 0x59, 0xf3, 0x4d, 0x4b, 0x5a, 0x6c, 0x47, 0xe4, 0x92, 0xd5, 0x02, - 0x18, 0x52, 0xc6, 0xde, - 0x9f, 0x3f, 0xb1, 0xb7, 0x8b, 0x21, 0x3e, 0xf3, 0x27, 0xfd, 0x0e, 0x14, - 0xf0, 0x71, 0xb0, 0x40, - 0x44, 0xd4, 0x67, 0x60, 0x56, 0xcf, 0x8a, 0x3a, 0xc8, 0x88, 0xb2, 0x12, - 0xd8, 0x87, 0x39, 0xe1, - 0x2d, 0x79, 0xf5, 0x38, 0xc6, 0x06, 0x04, 0xf9, 0xcb, 0x5a, 0xa3, 0xeb, - 0x7e, 0x2c, 0x88, 0xf6, - 0x2f, 0xe7, 0x46, 0x1d, 0x36, 0x13, 0xa3, 0x60, 0x48, 0x5e, 0x3e, 0x19, - 0xac, 0x77, 0x02, 0xae, - 0x36, 0xef, 0xa6, 0x91, 0x84, 0x04, 0xb9, 0xae, 0x33, 0x6c, 0xc2, 0xb2, - 0x54, 0x89, 0xf0, 0xa4, - 0x15, 0xca, 0xcc, 0x52, 0xd7, 0x69, 0x4e, 0x1e, 0xf7, 0x2a, 0x34, 0xc2, - 0x51, 0xe7, 0x48, 0x19, - 0x18, 0x47, 0x58, 0x7f, 0xca, 0xfc, 0xa8, 0x63, 0xdb, 0x30, 0x53, 0xd2, - 0x91, 0x32, 0xb7, 0x26, - 0x70, 0xa5, 0x72, 0xd4, 0x22, 0xde, 0x94, 0x0d, 0x78, 0xe0, 0xed, 0x52, - 0x5e, 0x55, 0x43, 0x1d, - 0xfe, 0xaf, 0xaa, 0x7b, 0x5d, 0xbc, 0x69, 0x11, 0x6d, 0x3f, 0x2e, 0xa3, - 0x98, 0x75, 0x6c, 0xf4, - 0x2e, 0xa8, 0xfe, 0xee, 0x4e, 0xf8, 0x11, 0xcd, 0xe8, 0x5c, 0x91, 0x60, - 0xc5, 0xbb, 0x47, 0x82, - 0x5c, 0x93, 0x3f, 0x1f, 0x9c, 0x33, 0x22, 0x59, 0x13, 0xb8, 0xe1, 0xc0, - 0x49, 0xb5, 0x8e, 0xc7, - 0xa1, 0xed, 0x9e, 0xb2, 0x49, 0x71, 0x5e, 0x7c, 0x5d, 0x81, 0xfd, 0xe8, - 0x6a, 0x57, 0x2d, 0x47, - 0xa6, 0xc3, 0x30, 0x2e, 0xe2, 0xa5, 0xc6, 0xb9, 0xbb, 0x8f, 0x36, 0x44, - 0xb6, 0x76, 0x35, 0x83, - 0xea, 0x2a, 0xde, 0xda, 0xf2, 0x3e, 0x95, 0xa2, 0x3a, 0x17, 0xb5, 0x18, - 0xa0, 0x5e, 0x61, 0xc1, - 0x1b, 0x96, 0x53, 0xa9, 0x42, 0x02, 0xbd, 0x57, 0xf8, 0x36, 0x61, 0x59, - 0x2a, 0xa5, 0x78, 0x52, - 0x90, 0x2c, 0x96, 0xbf, 0x66, 0xa1, 0x7f, 0x17, 0x88, 0xe3, 0xf4, 0xf6, - 0xe2, 0xff, 0xc5, 0x27, - 0xa4, 0x5d, 0x83, 0x0b, 0x12, 0xb0, 0x61, 0x20, 0x38, 0x8b, 0xab, 0xb6, - 0x64, 0x2d, 0xbf, 0xdb, - 0x68, 0xe2, 0x2a, 0xab, 0xe8, 0x22, 0x3c, 0x6e, 0xa3, 0xd0, 0xbe, 0x80, - 0xcf, 0x67, 0xf4, 0x3b, - 0x57, 0x7f, 0xbd, 0x5d, 0x52, 0x99, 0xee, 0x4c, 0x79, 0xae, 0xe2, 0x05, - 0x3c, 0x8d, 0x2c, 0x10, - 0xfd, 0x7e, 0xa1, 0xad, 0xd5, 0x42, 0x7c, 0x25, 0x4e, 0x39, 0x1c, 0x28, - 0x23, 0xe2, 0xa3, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x35, 0x3e, 0xad, 0x47, 0x0c, 0xfa, 0xac, 0x9a, 0x10, 0x6a, 0xf0, 0x39, - 0xef, 0x1e, 0x3f, 0xd0, - 0x4b, 0xc7, 0x40, 0x68, 0xbb, 0x4f, 0xcb, 0xde, 0x67, 0x96, 0x48, 0xf0, - 0xca, 0x09, 0x4c, 0x86, - 0x47, 0x05, 0x6c, 0xb6, 0xde, 0x31, 0x9f, 0x0e, 0xeb, 0x8e, 0x80, 0x99, - 0x63, 0x10, 0xf6, 0x95, - 0xa2, 0x3c, 0x95, 0x64, 0xc1, 0x8f, 0x4b, 0x48, 0x7e, 0x87, 0xcf, 0x63, - 0xd1, 0xc0, 0xe2, 0x33, - 0x83, 0x87, 0x4c, 0x82, 0x62, 0xf7, 0x1b, 0x61, 0x39, 0xc5, 0xa4, 0xe1, - 0x06, 0xf5, 0xd0, 0xd6, - 0x7c, 0x67, 0x5e, 0x0a, 0x47, 0xa0, 0xc0, 0xdd, 0xf4, 0xf8, 0x25, 0x3b, - 0xf7, 0x4c, 0xf9, 0x0e, - 0xd2, 0x99, 0xe7, 0xb0, 0xe3, 0x51, 0xdf, 0x45, 0x06, 0x67, 0x22, 0x31, - 0x8f, 0x95, 0xa1, 0x2e, - 0x13, 0xab, 0xda, 0x3d, 0x04, 0x56, 0x64, 0x76, 0xb1, 0x26, 0x50, 0x17, - 0xe4, 0x0a, 0x15, 0xf1, - 0x7e, 0xf9, 0xed, 0x2f, 0xb7, 0xb5, 0x67, 0x44, 0x77, 0xfc, 0xb8, 0xc9, - 0x25, 0x17, 0x73, 0x56, - 0x3e, 0xd2, 0x2f, 0x05, 0xc2, 0x50, 0x60, 0x8f, 0x7a, 0x7c, 0xf3, 0xfc, - 0x9a, 0x26, 0x9d, 0x07, - 0x7a, 0x06, 0x48, 0x65, 0x94, 0x9f, 0xea, 0xb5, 0xb2, 0xf4, 0x41, 0xee, - 0x42, 0xa1, 0xa4, 0xe6, - 0x84, 0xa9, 0xe2, 0x1e, 0xc9, 0x23, 0x83, 0xa4, 0xdf, 0xcb, 0x6f, 0x4d, - 0xda, 0xd4, 0xc8, 0x12, - 0x16, 0x1b, 0xc7, 0x84, 0x5f, 0x97, 0x5b, 0x2a, 0xd4, 0x2c, 0x06, 0x49, - 0xea, 0x70, 0x87, 0x6d, - 0xd1, 0x48, 0xec, 0x66, 0x6b, 0xaf, 0xca, 0x71, 0x25, 0x61, 0x10, 0xba, - 0x34, 0x02, 0x6e, 0x5a, - 0xb1, 0x97, 0x4f, 0x59, 0xc5, 0xd9, 0x2f, 0x3e, 0xcf, 0xa1, 0x9f, 0x74, - 0x35, 0xca, 0xf7, 0xc2, - 0x0c, 0xc2, 0x2c, 0xde, 0x65, 0x7e, 0x54, 0xd0, 0x8c, 0x18, 0xc8, 0x69, - 0xa9, 0x19, 0xba, 0x13, - 0x29, 0x86, 0x50, 0x72, 0xe5, 0x2c, 0x89, 0x08, 0x0e, 0x52, 0x5a, 0xcc, - 0x19, 0x9a, 0x5f, 0x46, - 0x06, 0x61, 0x16, 0x6f, 0xd3, 0x3f, 0x2a, 0x68, 0x46, 0x0c, 0x64, 0xd5, - 0xb5, 0xed, 0x5d, 0xe8, - 0x2c, 0x36, 0x4d, 0xcb, 0xbe, 0xed, 0xb6, 0x54, 0x6b, 0x58, 0x0c, 0x92, - 0x17, 0xe0, 0xcd, 0xda, - 0x2a, 0x57, 0x5b, 0xa4, 0x6d, 0xd2, 0x9c, 0x3c, 0x2d, 0x54, 0x68, 0x47, - 0xa2, 0x0d, 0x90, 0x32, - 0xcd, 0xf0, 0x11, 0x53, 0x82, 0x79, 0xef, 0xe3, 0x3b, 0x59, 0xba, 0x4f, - 0xc2, 0x86, 0x0e, 0xcc, - 0x07, 0x2e, 0xae, 0x9c, 0xab, 0xd4, 0x98, 0xc5, 0xe6, 0x0e, 0xcb, 0xac, - 0xdc, 0x21, 0x18, 0xc4, - 0x10, 0x7a, 0xd1, 0xeb, 0x8c, 0xa8, 0x71, 0x42, 0x92, 0x20, 0x62, 0x9c, - 0x5f, 0x9d, 0xda, 0x85, - 0x08, 0x3d, 0x89, 0x94, 0x46, 0x54, 0xd9, 0x21, 0x49, 0x10, 0x31, 0x4e, - 0xce, 0xaf, 0x6d, 0xa3, - 0xf9, 0x81, 0x04, 0xe7, 0xf6, 0x68, 0xf1, 0xd4, 0x8b, 0x31, 0xe5, 0x0f, - 0x44, 0x54, 0x74, 0x30, - 0x11, 0x35, 0x69, 0x18, 0xf4, 0x43, 0xc3, 0xef, 0x32, 0x22, 0xcd, 0xe5, - 0x36, 0x51, 0x9f, 0xa9, - 0x28, 0xc9, 0xe8, 0x81, 0x9d, 0xc7, 0x3b, 0xa5, 0xae, 0x50, 0xf5, 0xb5, - 0x70, 0x56, 0x1a, 0x6a, - 0xeb, 0x65, 0x66, 0x29, 0x8a, 0xd5, 0x27, 0x0f, 0x9a, 0x15, 0x1a, 0x61, - 0xc9, 0x92, 0x24, 0xed, - 0x87, 0x78, 0xe9, 0xc8, 0x41, 0xdd, 0x96, 0x90, 0xfc, 0xcd, 0x5d, 0xc6, - 0x61, 0x43, 0x07, 0x66, - 0xf1, 0xbc, 0x8d, 0x73, 0xb0, 0x3c, 0x28, 0xf5, 0xc2, 0x21, 0xd4, 0x41, - 0x8a, 0xfb, 0x19, 0x93, - 0xc6, 0x1c, 0x93, 0x11, 0x4c, 0xd3, 0x23, 0xf6, 0x51, 0x4f, 0xb9, 0x8a, - 0xb7, 0xbe, 0xac, 0x1b, - 0xb5, 0x68, 0xea, 0x13, 0xe6, 0xf3, 0xa2, 0xcf, 0x0a, 0xa9, 0x66, 0x53, - 0x52, 0x7c, 0x20, 0x72, - 0x6f, 0xcc, 0x84, 0x37, 0x43, 0xf6, 0xa4, 0xab, 0x45, 0xde, 0x75, 0x2c, - 0x13, 0x46, 0xec, 0xff, - 0xcc, 0xbf, 0xa9, 0xa0, 0xfa, 0x92, 0x5d, 0x4e, 0x9b, 0x5b, 0x15, 0x36, - 0xab, 0x4a, 0x4b, 0xe0, - 0x34, 0x71, 0x15, 0xb4, 0x74, 0x11, 0x1e, 0x37, 0xb0, 0x68, 0x5f, 0x40, - 0x86, 0xd2, 0x7a, 0xfc, - 0x1c, 0xb8, 0xfd, 0x35, 0xe9, 0xd6, 0x25, 0x92, 0x1e, 0x38, 0xaa, 0xf5, - 0xf6, 0x84, 0x60, 0x96, - 0x4d, 0xa6, 0x56, 0x07, 0x68, 0x70, 0xe1, 0xb6, 0x21, 0x9a, 0x2c, 0x25, - 0x7f, 0xe4, 0x11, 0x6e, - 0xf3, 0x22, 0x3e, 0x56, 0x40, 0x29, 0x8f, 0x6c, 0x41, 0x25, 0x49, 0xb3, - 0x58, 0xa0, 0x93, 0xcb, - 0x96, 0x4d, 0x80, 0xd0, 0xb5, 0x9e, 0x55, 0x7f, 0xce, 0xef, 0x90, 0x23, - 0x57, 0x12, 0x98, 0xcf, - 0x05, 0xb0, 0x1d, 0xb9, 0x5b, 0xc1, 0x3f, 0x5c, 0x65, 0x0a, 0x56, 0x5e, - 0x0e, 0x7a, 0x92, 0x9c, - 0x61, 0x90, 0x1b, 0xcc, 0xd6, 0x9d, 0x57, 0xe2, 0x4a, 0xc2, 0x20, 0xb7, - 0x68, 0x04, 0xdc, 0xb4, - 0x59, 0x23, 0x22, 0xa6, 0xc7, 0xf2, 0x1d, 0x05, 0x76, 0xb2, 0xb7, 0x9e, - 0x47, 0xcf, 0x1c, 0x5b, - 0x86, 0x37, 0x51, 0x3b, 0x39, 0x36, 0x24, 0x3d, 0x5c, 0xcf, 0xf2, 0xbf, - 0x08, 0x8f, 0x42, 0x4a, - 0x88, 0x6b, 0xce, 0xc0, 0xac, 0x5d, 0xd7, 0x74, 0x53, 0xd3, 0xa7, 0x24, - 0x73, 0xcd, 0x72, 0x01, - 0xb3, 0x09, 0xfc, 0x7c, 0x35, 0xcc, 0x88, 0xa7, 0x4c, 0xa5, 0x02, 0x86, - 0xe7, 0x91, 0x7d, 0x9a, - 0x89, 0x24, 0x76, 0x33, 0xd4, 0xb6, 0x65, 0xd9, 0xf3, 0xd1, 0x08, 0x5d, - 0x1a, 0x01, 0x37, 0x2d, - 0xfc, 0x31, 0x19, 0x5e, 0xad, 0xa9, 0xce, 0x88, 0xee, 0x3b, 0xb3, 0x51, - 0x4a, 0x2e, 0xe6, 0xac, - 0xab, 0x4e, 0xa4, 0x03, 0xff, 0x30, 0x20, 0xc4, 0x97, 0x95, 0x51, 0x54, - 0x76, 0xa3, 0xca, 0xbc, - 0x53, 0x80, 0x18, 0x17, 0x71, 0xb3, 0x63, 0xbd, 0xbc, 0xa6, 0x1b, 0x22, - 0x5b, 0x3b, 0xfb, 0xa0, - 0xb4, 0x27, 0x52, 0xe0, 0x9e, 0x18, 0x10, 0x62, 0xaa, 0xab, 0xc9, 0x2a, - 0x3b, 0xb0, 0x65, 0x5e, - 0xe3, 0x58, 0xef, 0xbd, 0xcc, 0x81, 0xfe, 0x2e, 0xd3, 0x05, 0x2b, 0x2f, - 0x07, 0x3d, 0x49, 0x4e, - 0xce, 0x21, 0x1a, 0x85, 0x0a, 0x87, 0xfa, 0xd7, 0x18, 0x5f, 0x88, 0xc4, - 0x79, 0x11, 0xc1, 0xb8, - 0x52, 0xcf, 0xa0, 0xe4, 0x09, 0x58, 0xd1, 0x10, 0x1c, 0xa4, 0xb4, 0x5b, - 0x32, 0xf7, 0xbe, 0x8c, - 0x8c, 0x94, 0x6b, 0x8a, 0x8f, 0x77, 0x5a, 0x85, 0x96, 0xdb, 0x5e, 0x03, - 0x14, 0x7b, 0xa5, 0xb1, - 0x3a, 0x2d, 0x8a, 0x4f, 0xe1, 0x7a, 0xed, 0x7e, 0xbf, 0x74, 0x0a, 0xdb, - 0xfd, 0x90, 0x4a, 0xb7, - 0xca, 0xde, 0xbf, 0xcf, 0x29, 0xad, 0x77, 0x26, 0xdd, 0x57, 0x71, 0xe3, - 0x1e, 0xa7, 0x16, 0x08, - 0x54, 0xae, 0xb6, 0x8b, 0xda, 0x67, 0xfb, 0x78, 0x5a, 0xa8, 0xd0, 0x8e, - 0x87, 0x1a, 0xe3, 0x64, - 0xa7, 0x8c, 0x88, 0xdd, 0x9a, 0x4e, 0x74, 0x14, 0x1b, 0x8d, 0x99, 0x3d, - 0xdf, 0xba, 0x70, 0xaf, - 0x99, 0x5e, 0xa7, 0xd8, 0x58, 0x1e, 0x14, 0x9b, 0x61, 0xf1, 0x6a, 0xc1, - 0x45, 0x9c, 0xed, 0xa8, - 0x0a, 0xa3, 0x3a, 0xb1, 0xb6, 0x41, 0x7e, 0xb8, 0xca, 0x14, 0xac, 0xbc, - 0x1c, 0xf4, 0xe7, 0xfb, - 0x40, 0x2b, 0xc2, 0x2a, 0x75, 0xe5, 0x07, 0xcb, 0x0d, 0x80, 0x4b, 0x35, - 0xbf, 0x31, 0xee, 0x51, - 0x02, 0x9e, 0xb3, 0x25, 0xf0, 0x15, 0xa7, 0x99, 0x83, 0x04, 0x9d, 0xf2, - 0xd2, 0x5b, 0x8a, 0x58, - 0x5b, 0xbd, 0x91, 0x83, 0x37, 0xe7, 0xba, 0x9c, 0xf5, 0xb6, 0x2a, 0x6c, - 0x95, 0x94, 0x96, 0x03, - 0xbc, 0x1a, 0xdb, 0x74, 0xd8, 0x4c, 0xc9, 0x43, 0xe3, 0xbb, 0xf8, 0x64, - 0xf5, 0x1f, 0x08, 0xfd, - 0x78, 0x98, 0xfb, 0x40, 0x64, 0x8a, 0x4d, 0x2c, 0x31, 0xf0, 0xdc, 0x1c, - 0x90, 0xfa, 0x2e, 0xbe, - 0x79, 0xd7, 0x43, 0xb3, 0x1c, 0x61, 0xff, 0x81, 0x91, 0xf2, 0x73, 0x65, - 0xf9, 0x36, 0x6b, 0x92, - 0xf5, 0x43, 0x28, 0x39, 0x93, 0x16, 0xa5, 0x04, 0x07, 0x29, 0x2d, 0x66, - 0xed, 0x4d, 0xce, 0x23, - 0xa9, 0xd0, 0x17, 0x26, 0x0f, 0x25, 0x87, 0x5d, 0x14, 0x91, 0xcc, 0xa6, - 0xa4, 0xf8, 0x40, 0xe4, - 0xec, 0x4b, 0xc8, 0xb5, 0x21, 0x01, 0xbf, 0xca, 0x7c, 0x1b, 0xd1, 0xcd, - 0x15, 0xb3, 0x3c, 0x29, - 0x7d, 0x28, 0xe6, 0xf9, 0x3f, 0x4b, 0x72, 0x70, 0x54, 0xfa, 0x8a, 0x42, - 0x9e, 0x80, 0xbc, 0x22, - 0x45, 0x9b, 0xdf, 0x93, 0x2e, 0x24, 0x38, 0x97, 0x68, 0x8a, 0x1d, 0x6b, - 0xb1, 0x4b, 0x7c, 0xcd, - 0x3c, 0x4c, 0x9c, 0x20, 0x32, 0x45, 0xc7, 0x16, 0xf9, 0x78, 0x6e, 0x0e, - 0x48, 0x7d, 0x17, 0x5f, - 0x65, 0x6f, 0xbe, 0x86, 0xf5, 0xb7, 0xda, 0x13, 0x8f, 0xca, 0xd9, 0x90, - 0x0f, 0xb2, 0x0b, 0x04, - 0x01, 0x4f, 0xb8, 0xf3, 0x78, 0xeb, 0xb2, 0xad, 0xa0, 0x02, 0xaf, 0x79, - 0x69, 0xcc, 0x45, 0x2c, - 0x24, 0x0b, 0xc4, 0x5f, 0xf8, 0xb9, 0x6f, 0x75, 0x22, 0x48, 0x3d, 0xdc, - 0xd9, 0x4f, 0xa0, 0x79, - 0x5f, 0x42, 0x34, 0xc9, 0x14, 0xcd, 0x37, 0x6d, 0x30, 0xbe, 0xd3, 0x4b, - 0xf2, 0x22, 0x41, 0xb3, - 0x7f, 0xb6, 0x55, 0xdc, 0xcf, 0x5e, 0xd5, 0xe9, 0xd7, 0xfe, 0x17, 0xb0, - 0x4c, 0xdb, 0x36, 0x7a, - 0x20, 0xf4, 0x61, 0x15, 0xdb, 0x93, 0xe2, 0x84, 0xe7, 0x40, 0xc4, 0xfb, - 0xbe, 0xf9, 0x77, 0xc9, - 0xae, 0xfe, 0xb9, 0xba, 0xa4, 0xf1, 0x1f, 0x98, 0xf2, 0x9f, 0x07, 0x0a, - 0x78, 0xd9, 0x58, 0x20, - 0x5e, 0x0d, 0x8c, 0x3a, 0x6c, 0x26, 0x85, 0xc0, 0x90, 0xbc, 0x7c, 0x32, - 0x9b, 0xee, 0x04, 0x9f, - 0xaf, 0xb1, 0x01, 0x49, 0xdc, 0x1a, 0xad, 0x35, 0x52, 0x9d, 0xa8, 0x73, - 0x11, 0x15, 0x1d, 0x0c, - 0xd0, 0x07, 0x54, 0x95, 0x13, 0x44, 0x78, 0xdc, 0x85, 0x63, 0xbf, 0xc3, - 0x5d, 0xce, 0x2b, 0x76, - 0xb2, 0x46, 0x44, 0x8f, 0x4d, 0x27, 0x3a, 0x0a, 0xec, 0xa7, 0xad, 0xff, - 0x8e, 0x5d, 0x38, 0xb6, - 0x8f, 0x45, 0x60, 0x5c, 0x07, 0x89, 0x4f, 0xb1, 0xb5, 0xdd, 0x6c, 0x88, - 0xaf, 0xec, 0x6a, 0xc5, - 0x27, 0xda, 0xcf, 0x89, 0x70, 0x47, 0x7a, 0x41, 0x01, 0x4e, 0x0f, 0x57, - 0x62, 0xd8, 0x6f, 0x0d, - 0x8d, 0xdb, 0xd3, 0x79, 0xf7, 0x9c, 0xe8, 0x28, 0x36, 0xd9, 0xf1, 0x7a, - 0x7d, 0xb7, 0xe0, 0x9d, - 0x4c, 0xe9, 0xee, 0xf4, 0x10, 0x9b, 0x53, 0x1b, 0x81, 0x98, 0x83, 0x5c, - 0x16, 0x28, 0x54, 0x42, - 0xd4, 0xf8, 0xf1, 0xdf, 0x30, 0x6e, 0xf5, 0x2d, 0x40, 0x6b, 0x46, 0xe4, - 0x3a, 0x78, 0xfc, 0xc6, - 0xfa, 0x50, 0x0f, 0x31, 0x7e, 0x96, 0xe4, 0xe0, 0xa8, 0x37, 0xd7, 0x84, - 0xff, 0xc3, 0xbb, 0x44, - 0xf2, 0x6d, 0x86, 0xa5, 0x38, 0xc2, 0x3d, 0xc1, 0xe1, 0x27, 0xe6, 0xca, - 0x31, 0x6c, 0xd6, 0xe7, - }, - { /* 1 */ - 0x2f, 0x36, 0x58, 0xea, 0xa2, 0x0c, 0x25, 0xcf, 0x7c, 0xd9, 0x9e, 0x49, - 0x92, 0xd3, 0x50, 0x36, - 0x48, 0x33, 0xd6, 0x3a, 0x7e, 0x8c, 0x82, 0xb8, 0xf4, 0x6c, 0x87, 0xe4, - 0x0b, 0xa6, 0x9f, 0x33, - 0x5c, 0x9c, 0xe9, 0x76, 0x65, 0xa2, 0xaf, 0xd9, 0x01, 0x72, 0x0a, 0x54, - 0xa8, 0x81, 0x94, 0x9c, - 0x0c, 0x65, 0x15, 0x85, 0x09, 0x1a, 0x1b, 0x9e, 0x53, 0x0a, 0x7b, 0xd1, - 0x61, 0x1d, 0xb8, 0x65, - 0x3b, 0x99, 0x67, 0xa6, 0xb9, 0x22, 0x08, 0xae, 0x89, 0xc7, 0x13, 0xf9, - 0x31, 0xf4, 0x5b, 0x99, - 0x62, 0x5e, 0xf1, 0xc3, 0xaa, 0x6a, 0x3d, 0xfe, 0x24, 0x53, 0xab, 0x81, - 0xc1, 0x0c, 0xbd, 0x5e, - 0xe7, 0xef, 0x6c, 0x2a, 0x3c, 0xc2, 0x44, 0x6e, 0x67, 0x75, 0x70, 0x59, - 0xb2, 0xd6, 0x51, 0xef, - 0x42, 0x85, 0x28, 0x1c, 0x92, 0x9b, 0x75, 0x69, 0x6f, 0x63, 0x20, 0xbc, - 0xbb, 0x54, 0x7b, 0x85, - 0x61, 0xd6, 0x65, 0x73, 0x39, 0x8d, 0x4b, 0x38, 0x40, 0xb0, 0xc5, 0x24, - 0x48, 0x9a, 0x93, 0xd6, - 0x1a, 0x3a, 0x73, 0xa8, 0xf0, 0x8e, 0xd3, 0x7b, 0x5f, 0x17, 0x03, 0xa7, - 0x8d, 0xde, 0x87, 0x3a, - 0xf9, 0xf6, 0xad, 0x40, 0xcb, 0xfb, 0x9e, 0xde, 0x09, 0x64, 0x5a, 0xb1, - 0xa1, 0x03, 0xbe, 0xf6, - 0x12, 0x7c, 0xd4, 0xef, 0xfe, 0x23, 0xc1, 0x2e, 0x3d, 0x1b, 0x51, 0x39, - 0x72, 0xc8, 0x57, 0x7c, - 0x80, 0xea, 0xe2, 0xfa, 0xe0, 0x42, 0xe3, 0x19, 0xef, 0xc0, 0x69, 0xf4, - 0x2b, 0xa3, 0x9e, 0xea, - 0x82, 0x1a, 0xbb, 0x9b, 0x02, 0xf8, 0x06, 0x9d, 0x16, 0xc3, 0x9c, 0x32, - 0x64, 0x47, 0xaa, 0x1a, - 0x25, 0x80, 0xa6, 0xcc, 0x4e, 0x1b, 0xd2, 0x1e, 0xe7, 0xd6, 0x39, 0x11, - 0x22, 0x21, 0xb4, 0x80, - 0xe2, 0xb4, 0x13, 0x39, 0x4a, 0x28, 0xde, 0xe7, 0xcb, 0x93, 0xc2, 0x75, - 0xea, 0xaf, 0x23, 0xb4, - 0x06, 0xd3, 0xeb, 0xa3, 0xe5, 0x0d, 0xec, 0x4f, 0xc8, 0x05, 0xdc, 0x89, - 0xd1, 0xef, 0x5c, 0xd3, - 0x24, 0xf8, 0x6b, 0x1d, 0x3f, 0x46, 0x41, 0x5c, 0x7a, 0x36, 0xa2, 0x72, - 0xe4, 0x53, 0xae, 0xf8, - 0x40, 0x75, 0x71, 0x7d, 0x70, 0x21, 0x90, 0xed, 0x96, 0x60, 0xd5, 0x7a, - 0xf4, 0xb0, 0x4f, 0x75, - 0x8a, 0x5c, 0x1c, 0xdc, 0x0c, 0x55, 0x14, 0xc8, 0x74, 0xcf, 0xce, 0xac, - 0x9b, 0x51, 0x7a, 0x5c, - 0xd5, 0x48, 0x61, 0x1a, 0xfa, 0x10, 0xcd, 0xd7, 0x11, 0x5e, 0xaa, 0x5d, - 0xba, 0x46, 0xc0, 0x48, - 0x77, 0x89, 0x03, 0x5e, 0xc0, 0x19, 0x83, 0xdd, 0x4c, 0xad, 0xbd, 0x52, - 0xa4, 0x59, 0xac, 0x89, - 0x6c, 0xcb, 0xbd, 0x27, 0x41, 0xca, 0xc3, 0xe4, 0x8e, 0x5a, 0x25, 0x96, - 0xef, 0xf5, 0x31, 0xcb, - 0xec, 0x21, 0x5f, 0xdd, 0xa1, 0x88, 0x20, 0xfd, 0x61, 0x9a, 0x4c, 0x62, - 0xc4, 0x56, 0xaf, 0x21, - 0xda, 0xa5, 0xe0, 0x2f, 0x60, 0xed, 0xa0, 0x8f, 0x26, 0xb7, 0xbf, 0x29, - 0x52, 0xcd, 0x56, 0xa5, - 0xa9, 0x0f, 0x51, 0xb3, 0xa7, 0x43, 0x2a, 0x99, 0x5b, 0x1c, 0x2b, 0x34, - 0x68, 0x9f, 0x92, 0x0f, - 0xd8, 0x55, 0xb9, 0x4e, 0x82, 0x57, 0x45, 0x0b, 0xdf, 0xb4, 0x4a, 0xef, - 0x1d, 0x29, 0x62, 0x55, - 0x74, 0x01, 0x97, 0xee, 0x53, 0xfe, 0xf5, 0x1b, 0x28, 0x4e, 0xd3, 0xf7, - 0x2d, 0xcf, 0x82, 0x01, - 0xb1, 0xc5, 0x7b, 0x7a, 0xb5, 0x77, 0x1c, 0x66, 0xfd, 0x08, 0xdd, 0x55, - 0xaa, 0xa5, 0x21, 0xc5, - 0xc8, 0xd9, 0x34, 0xc0, 0x9e, 0xce, 0x61, 0xa1, 0x1b, 0xac, 0xee, 0x10, - 0x20, 0x05, 0x01, 0xd9, - 0x85, 0xb1, 0x9d, 0xe9, 0x96, 0xa8, 0x79, 0x90, 0x43, 0x26, 0xdb, 0xd8, - 0x73, 0xda, 0xec, 0xb1, - 0xa7, 0x9a, 0x1d, 0x57, 0x4c, 0xe3, 0xd4, 0x83, 0xf1, 0x15, 0xa5, 0x23, - 0x46, 0x66, 0x1e, 0x9a, - 0x92, 0x96, 0x36, 0x15, 0x1e, 0x61, 0x22, 0x37, 0xd2, 0xdb, 0x38, 0xcd, - 0x59, 0x6b, 0xc9, 0x96, - 0xde, 0x86, 0x52, 0xed, 0x67, 0x5a, 0xa9, 0x44, 0x17, 0xb1, 0x96, 0x66, - 0xcc, 0xc6, 0x3e, 0x86, - 0x43, 0xfd, 0xe5, 0xcd, 0xe3, 0xc6, 0xe6, 0x2b, 0xf2, 0x83, 0xbb, 0xdf, - 0x7d, 0x26, 0x61, 0xfd, - 0x38, 0x11, 0xf3, 0x16, 0x2a, 0xc5, 0x7e, 0x68, 0xed, 0x24, 0x7d, 0x5c, - 0xb8, 0x62, 0x75, 0x11, - 0x27, 0x70, 0xff, 0xad, 0xac, 0xa1, 0x37, 0x9a, 0x1e, 0xd5, 0xcc, 0xd7, - 0x6d, 0xc5, 0x80, 0x70, - 0xee, 0xd1, 0x06, 0xbc, 0x43, 0x32, 0xc5, 0x79, 0x98, 0x99, 0xb9, 0xa4, - 0x8b, 0xb2, 0x9b, 0xd1, - 0xd0, 0x13, 0x1e, 0x09, 0x8c, 0xfa, 0x57, 0x5e, 0xbd, 0xb8, 0x18, 0x71, - 0xe2, 0x3f, 0xb2, 0x13, - 0x73, 0xaa, 0xb1, 0x9c, 0xc7, 0xae, 0x8a, 0x16, 0x7d, 0xab, 0x94, 0x1d, - 0x3a, 0x52, 0xc4, 0xaa, - 0xb2, 0x4d, 0xef, 0xca, 0x26, 0x90, 0x6a, 0xa0, 0x99, 0xeb, 0xb3, 0xf0, - 0x23, 0x33, 0x0f, 0x4d, - 0xfb, 0x06, 0xf4, 0x21, 0x29, 0x41, 0x7b, 0x5a, 0xf0, 0x67, 0xaf, 0x77, - 0xee, 0xe7, 0x8a, 0x06, - 0x10, 0x8c, 0x8d, 0x8e, 0x1c, 0x99, 0x24, 0xaa, 0xc4, 0x18, 0xa4, 0xff, - 0x3d, 0x2c, 0x63, 0x8c, - 0xe6, 0x97, 0xa1, 0xfb, 0x4d, 0x9f, 0xd7, 0x2c, 0xfa, 0x95, 0xeb, 0x3a, - 0x74, 0xa4, 0x4b, 0x97, - 0x0b, 0xce, 0x33, 0xf7, 0x9d, 0x4a, 0x64, 0x93, 0x06, 0xef, 0x3c, 0x3b, - 0x76, 0x80, 0xfe, 0xce, - 0x98, 0x20, 0xc8, 0x33, 0xf2, 0x76, 0xd5, 0xe6, 0x49, 0xd4, 0x9f, 0x95, - 0xe9, 0x99, 0x2d, 0x20, - 0xb6, 0x6e, 0x5d, 0x08, 0x21, 0x27, 0x63, 0x6b, 0xa8, 0xed, 0x9a, 0xbf, - 0xbd, 0x38, 0x67, 0x6e, - 0x11, 0xf4, 0x40, 0x5f, 0x6d, 0xc4, 0xb7, 0xe8, 0x59, 0xf8, 0x3f, 0x9c, - 0xfb, 0x5e, 0x79, 0xf4, - 0xbd, 0xa0, 0x6e, 0xff, 0xbc, 0x6d, 0x07, 0xf8, 0xae, 0x02, 0xa6, 0x84, - 0xcb, 0xb8, 0x99, 0xa0, - 0x0f, 0xed, 0x81, 0x35, 0x9a, 0xfd, 0x6d, 0x58, 0x37, 0xe9, 0x15, 0x74, - 0xe8, 0x8b, 0x96, 0xed, - 0xf3, 0x40, 0x53, 0x66, 0x27, 0xec, 0x69, 0x0f, 0x92, 0x6b, 0xfd, 0xe9, - 0x11, 0xf1, 0x5a, 0x40, - 0x5d, 0xe4, 0x24, 0xa7, 0x14, 0xff, 0x3c, 0x9b, 0x9c, 0x92, 0x91, 0x37, - 0x6e, 0xf3, 0x8e, 0xe4, - 0xbf, 0x50, 0x37, 0x9e, 0x5e, 0xd7, 0xe2, 0x7c, 0x57, 0x01, 0x53, 0x42, - 0x84, 0x5c, 0xad, 0x50, - 0x47, 0xde, 0x57, 0x0f, 0xe4, 0x71, 0xef, 0xe0, 0xc3, 0x85, 0x92, 0x90, - 0xe3, 0x2d, 0x09, 0xde, - 0x2e, 0x4e, 0x95, 0x3b, 0xd3, 0x51, 0xb6, 0x8d, 0xe1, 0x39, 0x05, 0x2a, - 0x54, 0xa1, 0x4a, 0x4e, - 0xc1, 0xe7, 0x5e, 0x56, 0xe1, 0x3e, 0xe0, 0xb6, 0xe4, 0x40, 0x27, 0xed, - 0x19, 0x61, 0xcb, 0xe7, - 0xd6, 0xc0, 0xf5, 0xaa, 0x69, 0xf7, 0xbb, 0x11, 0x75, 0xbd, 0xc4, 0xf8, - 0x33, 0xd0, 0xee, 0xc0, - 0x21, 0xa3, 0x14, 0x0e, 0x49, 0xac, 0xdb, 0xd5, 0xd6, 0xd0, 0x10, 0x5e, - 0xbc, 0x2a, 0xdc, 0xa3, - 0x23, 0x53, 0x4d, 0x6f, 0xab, 0x16, 0x3e, 0x51, 0x2f, 0xd3, 0xe5, 0x98, - 0xf3, 0xce, 0xe8, 0x53, - 0xf4, 0xeb, 0x75, 0x14, 0xb3, 0xbc, 0x16, 0x02, 0xc7, 0x8e, 0xba, 0x03, - 0x06, 0x6c, 0x1c, 0xeb, - 0x6e, 0x3b, 0xe4, 0x46, 0xa3, 0x70, 0x26, 0x60, 0x77, 0x59, 0xd0, 0x50, - 0xa0, 0x11, 0x05, 0x3b, - 0x8e, 0x7f, 0xae, 0x1e, 0x0b, 0xe2, 0x1d, 0x03, 0x45, 0xc9, 0xe7, 0xe3, - 0x05, 0x5a, 0x12, 0x7f, - 0xc0, 0x9f, 0x93, 0x87, 0x90, 0x63, 0x73, 0xf4, 0x79, 0xa0, 0xbc, 0x8e, - 0xdf, 0x13, 0xd1, 0x9f, - 0x90, 0x66, 0x6f, 0x74, 0xfc, 0xdb, 0xc7, 0xb3, 0x2b, 0xd8, 0xcd, 0x0b, - 0x16, 0x8f, 0xfd, 0x66, - 0xf5, 0x93, 0xb8, 0xc5, 0xc2, 0xe1, 0x85, 0x40, 0x5a, 0x6e, 0x21, 0x60, - 0xc0, 0x1e, 0x06, 0x93, - 0x5a, 0x4f, 0x02, 0xd5, 0x80, 0xaf, 0x43, 0x96, 0xc9, 0x77, 0xd6, 0xdd, - 0x79, 0x6e, 0xc8, 0x4f, - 0x84, 0xc9, 0x50, 0x38, 0xe7, 0xf5, 0xea, 0xd2, 0xde, 0xc6, 0x40, 0xbb, - 0xb5, 0xa8, 0xf6, 0xc9, - 0x19, 0xb2, 0xe7, 0x18, 0x63, 0x69, 0xa5, 0xbd, 0x3b, 0xf4, 0x6d, 0x02, - 0x04, 0x48, 0xa9, 0xb2, - 0x6d, 0xb3, 0x70, 0xf6, 0x30, 0x97, 0x50, 0xa6, 0x13, 0xba, 0xbe, 0xf5, - 0x29, 0x87, 0x2b, 0xb3, - 0x75, 0x79, 0x5a, 0x3f, 0x22, 0xa3, 0x66, 0x59, 0xb5, 0xae, 0x48, 0x94, - 0xeb, 0xbd, 0x98, 0x79, - 0x5f, 0x14, 0x7d, 0xc6, 0xf6, 0x45, 0xd9, 0x1f, 0x65, 0x91, 0x64, 0xf1, - 0x21, 0x17, 0xba, 0x14, - 0xe0, 0x44, 0x4a, 0x58, 0xa8, 0x92, 0x3b, 0x63, 0x32, 0x90, 0x37, 0xb3, - 0xa5, 0x4b, 0x17, 0x44, - 0xb3, 0x35, 0x22, 0x1b, 0x57, 0xcd, 0xf9, 0xe2, 0x04, 0x0b, 0x28, 0x93, - 0xe5, 0x41, 0x15, 0x35, - 0x52, 0x09, 0xa5, 0x92, 0x8e, 0x02, 0x51, 0xc3, 0xab, 0x7b, 0x84, 0x43, - 0x86, 0x78, 0x18, 0x09, - 0xb4, 0x9e, 0x04, 0x69, 0xc3, 0x9d, 0x86, 0xef, 0x51, 0xee, 0x6f, 0x79, - 0xf2, 0xdc, 0x53, 0x9e, - 0x32, 0xa7, 0x0d, 0x30, 0xc6, 0xd2, 0x89, 0xb9, 0x76, 0x2b, 0xda, 0x04, - 0x08, 0x90, 0x91, 0xa7, - 0xb7, 0x16, 0x90, 0xd9, 0x50, 0x7a, 0xf0, 0x29, 0x35, 0x0d, 0x01, 0xdc, - 0x7b, 0x4a, 0x7d, 0x16, - 0xc6, 0x4c, 0x78, 0x24, 0x75, 0x6e, 0x9f, 0xbb, 0xb1, 0xa5, 0x60, 0x07, - 0x0e, 0xfc, 0x8d, 0x4c, - 0xa3, 0xb9, 0xaf, 0x95, 0x4b, 0x54, 0xdd, 0x48, 0xc0, 0x13, 0x8c, 0x6c, - 0xd8, 0x6d, 0x76, 0xb9, - 0x50, 0xf9, 0xfc, 0xf3, 0x6c, 0xb8, 0xb4, 0x47, 0x52, 0x78, 0x71, 0x85, - 0xc9, 0x9c, 0x2c, 0xf9, - 0xe8, 0x02, 0xed, 0x1f, 0xa6, 0x3f, 0x29, 0x36, 0x50, 0x9c, 0x65, 0x2d, - 0x5a, 0x5d, 0xc7, 0x02, - 0x6a, 0x18, 0x56, 0x84, 0xa4, 0xc7, 0x2f, 0xab, 0x46, 0x5f, 0xf9, 0x1f, - 0x3e, 0x1a, 0x6d, 0x18, - 0x9c, 0x03, 0x7a, 0xf1, 0xf5, 0xc1, 0xdc, 0x2d, 0x78, 0xd2, 0xb6, 0xda, - 0x77, 0x92, 0x45, 0x03, - 0x57, 0x52, 0xda, 0x81, 0xf8, 0xe8, 0xcb, 0x4a, 0x07, 0x9d, 0x36, 0x6f, - 0xde, 0x01, 0x6a, 0x52, - 0x4a, 0xc3, 0x8f, 0x5b, 0x9c, 0x36, 0x67, 0x3c, 0x0d, 0x6f, 0x72, 0x22, - 0x44, 0x42, 0xab, 0xc3, - 0x6f, 0x43, 0x29, 0x97, 0xd2, 0x2d, 0xb5, 0x22, 0xea, 0xb9, 0x4b, 0x33, - 0x66, 0x63, 0x1f, 0x43, - 0xbc, 0xd8, 0xa3, 0x2e, 0xcd, 0x30, 0x94, 0xba, 0x33, 0xe2, 0x3d, 0xe7, - 0x0d, 0xca, 0x83, 0xd8, - 0x67, 0x05, 0x8e, 0xd0, 0xdc, 0x80, 0xa7, 0x77, 0x88, 0xb5, 0x19, 0xad, - 0x99, 0x75, 0xcf, 0x05, - 0x51, 0x81, 0x31, 0x22, 0x1d, 0xe5, 0x27, 0x05, 0xcf, 0x98, 0xea, 0xe6, - 0x0f, 0xee, 0x36, 0x81, - 0x99, 0x58, 0x05, 0xe2, 0x83, 0x2b, 0x46, 0xa4, 0xd4, 0x34, 0x04, 0xf6, - 0x2f, 0xeb, 0x37, 0x58, - 0xff, 0x25, 0x46, 0xe3, 0x2e, 0xf6, 0x72, 0x91, 0xc1, 0x61, 0x86, 0x38, - 0x70, 0xec, 0xe2, 0x25, - 0x5b, 0x37, 0xcf, 0x04, 0xf1, 0xf2, 0xd0, 0xd4, 0x54, 0x97, 0x4d, 0xbe, - 0xbf, 0x1c, 0xd2, 0x37, - 0xd1, 0x6b, 0xd3, 0xd8, 0xfd, 0xa7, 0xc4, 0x1c, 0x20, 0x58, 0x83, 0x12, - 0x24, 0x4d, 0xa8, 0x6b, - 0x1b, 0x42, 0xbe, 0x79, 0x81, 0xd3, 0x40, 0x39, 0xc2, 0xf7, 0x98, 0xc4, - 0x4b, 0xac, 0x9d, 0x42, - 0x76, 0xf1, 0xce, 0x8f, 0xb1, 0x44, 0x10, 0x9f, 0xd1, 0x4d, 0x26, 0x31, - 0x62, 0x2b, 0xb6, 0xf1, - 0x64, 0x8d, 0x1a, 0x60, 0x4f, 0x67, 0xd1, 0xb1, 0xec, 0x56, 0x77, 0x08, - 0x10, 0xe3, 0xe1, 0x8d, - 0x29, 0xe5, 0xb3, 0x49, 0x47, 0x01, 0xc9, 0x80, 0xb4, 0xdc, 0x42, 0xc0, - 0x43, 0x3c, 0x0c, 0xe5, - 0x59, 0xc7, 0x96, 0x65, 0x13, 0x48, 0x35, 0x50, 0xad, 0x94, 0xb8, 0x78, - 0xf0, 0xf8, 0xe6, 0xc7, - 0x68, 0xe8, 0x0f, 0xe5, 0x46, 0x7d, 0xca, 0x2f, 0xbf, 0x5c, 0x0c, 0xd9, - 0x71, 0xfe, 0x59, 0xe8, - 0x39, 0x69, 0x3e, 0xc7, 0x5b, 0x98, 0xed, 0x2a, 0x70, 0xc4, 0xe6, 0x3f, - 0x7e, 0x10, 0x6f, 0x69, - 0x94, 0x45, 0xdd, 0xb6, 0xfb, 0x6c, 0xce, 0x78, 0x1a, 0xde, 0xe4, 0x44, - 0x88, 0x84, 0x95, 0x45, - 0x4b, 0xbb, 0x42, 0x8a, 0xed, 0x6b, 0xf4, 0x7e, 0x90, 0x8f, 0xe9, 0x41, - 0x82, 0x30, 0xb1, 0xbb, - 0x07, 0xab, 0x26, 0x72, 0x94, 0x50, 0x7f, 0x0d, 0x55, 0xe5, 0x47, 0xea, - 0x17, 0x9d, 0x46, 0xab, - 0x71, 0x5a, 0xe8, 0xfd, 0x25, 0x14, 0x6f, 0x92, 0x84, 0xa8, 0x61, 0xdb, - 0x75, 0xb6, 0xf0, 0x5a, - 0x2b, 0x15, 0xea, 0x28, 0xa5, 0xbb, 0x2c, 0x04, 0x4d, 0xdf, 0xb7, 0x06, - 0x0c, 0xd8, 0x38, 0x15, - 0x26, 0x08, 0x32, 0x7c, 0xdd, 0xfc, 0xa4, 0xd8, 0x83, 0x35, 0x57, 0xb4, - 0xab, 0xb7, 0x9a, 0x08, - 0x20, 0xdb, 0xd9, 0xdf, 0x38, 0xf1, 0x48, 0x97, 0x4b, 0x30, 0x8b, 0x3d, - 0x7a, 0x58, 0xc6, 0xdb, - 0xfa, 0x7e, 0x39, 0xf0, 0x58, 0x1c, 0xe8, 0x18, 0x6d, 0x87, 0x34, 0x14, - 0x28, 0x95, 0x90, 0x7e, - 0x49, 0x4b, 0x1b, 0xeb, 0x0f, 0xd1, 0x11, 0xfa, 0x69, 0x8c, 0x1c, 0x87, - 0xcd, 0xd4, 0x85, 0x4b, - 0x22, 0x2b, 0x80, 0xbe, 0xda, 0x4b, 0xad, 0x13, 0xb2, 0x33, 0x7e, 0xfb, - 0x35, 0xbc, 0xf2, 0x2b, - 0xa6, 0xe2, 0xd0, 0x86, 0x3d, 0xbe, 0x47, 0xc1, 0x6c, 0xf5, 0x3e, 0x40, - 0x80, 0x14, 0x04, 0xe2, - 0xcd, 0x82, 0x4b, 0xd3, 0xe8, 0x24, 0xfb, 0x28, 0xb7, 0x4a, 0x5c, 0x3c, - 0x78, 0x7c, 0x73, 0x82, - 0x8c, 0x8f, 0xf7, 0x7f, 0xe9, 0x58, 0xf8, 0x87, 0xbc, 0xca, 0x12, 0x25, - 0x4a, 0xbe, 0x26, 0x8f, - 0xd7, 0xb8, 0x38, 0x7b, 0x18, 0xaa, 0x28, 0x53, 0xe8, 0x5d, 0x5f, 0x9b, - 0xf5, 0xa2, 0xf4, 0xb8, - 0x46, 0xa6, 0x9a, 0xde, 0x95, 0x2c, 0x7c, 0xa2, 0x5e, 0x65, 0x09, 0xf3, - 0x25, 0x5f, 0x13, 0xa6, - 0x88, 0xac, 0x45, 0xbd, 0xee, 0xef, 0xf1, 0x4c, 0x8d, 0xcc, 0x3b, 0x6a, - 0xd4, 0xb5, 0x4e, 0xac, - 0x44, 0x56, 0xc3, 0xbf, 0x77, 0x96, 0x99, 0x26, 0xa7, 0x66, 0xfc, 0x35, - 0x6a, 0xbb, 0x27, 0x56, - 0xc2, 0x6f, 0xca, 0xe6, 0x72, 0xd9, 0x96, 0x70, 0x80, 0xa3, 0x49, 0x48, - 0x90, 0xf7, 0xe5, 0x6f, - 0x93, 0xee, 0xfb, 0xc4, 0x6f, 0x3c, 0xb1, 0x75, 0x4f, 0x3b, 0xa3, 0xae, - 0x9f, 0x19, 0xd3, 0xee, - 0xf6, 0x1b, 0x2c, 0x75, 0x51, 0x06, 0xf3, 0x86, 0x3e, 0x8d, 0x4f, 0xc5, - 0x49, 0x88, 0x28, 0x1b, - 0x09, 0x3e, 0x6a, 0x96, 0x7f, 0xf0, 0x81, 0x17, 0xff, 0xec, 0xc9, 0xfd, - 0x39, 0x64, 0xca, 0x3e, - 0xa4, 0x12, 0x89, 0xe7, 0xdf, 0x04, 0xa2, 0x45, 0x95, 0xf6, 0xcb, 0x86, - 0xcf, 0xf0, 0x30, 0x12, - 0xe9, 0x7a, 0x20, 0xce, 0xd7, 0x62, 0xba, 0x74, 0xcd, 0x7c, 0xfe, 0x4e, - 0x9c, 0x2f, 0xdd, 0x7a, - 0x2a, 0x6d, 0x27, 0xf9, 0xd4, 0xe6, 0xbf, 0x46, 0xd0, 0x3f, 0x2c, 0x65, - 0xca, 0xaa, 0x22, 0x6d, - 0x54, 0xda, 0x4e, 0x31, 0x6b, 0x0f, 0xbd, 0x8c, 0x63, 0x7e, 0x58, 0xca, - 0x57, 0x97, 0x44, 0xda, - 0xa2, 0xc1, 0x62, 0x44, 0x3a, 0x09, 0x4e, 0x0a, 0x5d, 0xf3, 0x17, 0x0f, - 0x1e, 0x1f, 0x6c, 0xc1, - 0xf7, 0x63, 0xe1, 0xa4, 0x20, 0x5b, 0x60, 0xc4, 0xa3, 0x6d, 0xd4, 0xa6, - 0x8f, 0xfa, 0x32, 0x63, - 0xcf, 0x72, 0x12, 0xb2, 0x0a, 0x9e, 0x1e, 0xac, 0x4e, 0x49, 0xa9, 0xfa, - 0x37, 0x98, 0x47, 0x72, - 0xaf, 0xdc, 0xba, 0x10, 0x42, 0x4e, 0xc6, 0xd6, 0x93, 0x19, 0xf7, 0xbd, - 0xb9, 0x70, 0xce, 0xdc, - 0xfd, 0xd5, 0x1f, 0x82, 0xcc, 0x4c, 0x97, 0x15, 0x38, 0x62, 0x73, 0xfe, - 0x3f, 0x08, 0xd6, 0xd5, - 0xce, 0x0a, 0xdf, 0x63, 0x7b, 0xc3, 0x8d, 0xee, 0xd3, 0xa9, 0x32, 0x99, - 0xf1, 0xea, 0x5d, 0x0a, - 0x13, 0x04, 0x19, 0x3e, 0x8f, 0x7e, 0x52, 0x6c, 0xa0, 0xfb, 0xca, 0x5a, - 0xb4, 0xba, 0x4d, 0x04, - 0xe3, 0xcc, 0xde, 0xe8, 0x3b, 0x75, 0x4d, 0xa5, 0x56, 0x73, 0x59, 0x16, - 0x2c, 0xdd, 0x39, 0xcc, - 0x8b, 0x24, 0xd1, 0x0d, 0x7d, 0x08, 0x87, 0x8a, 0xe9, 0x2f, 0x55, 0xcf, - 0x5d, 0x23, 0x60, 0x24, - 0x7e, 0xb7, 0x69, 0xc8, 0xbf, 0xe9, 0x02, 0xca, 0xb3, 0x41, 0x74, 0xaf, - 0x9d, 0x3d, 0x66, 0xb7, - 0xed, 0x59, 0x92, 0x0c, 0xd0, 0xd5, 0xb3, 0xbf, 0xfc, 0x7a, 0xd7, 0x01, - 0x02, 0x24, 0xb5, 0x59, - 0xe5, 0x1f, 0x35, 0x4b, 0xde, 0x78, 0xa1, 0xea, 0x9e, 0x76, 0x85, 0x9f, - 0xfd, 0x32, 0x65, 0x1f, - 0xb8, 0xfb, 0x11, 0xec, 0xca, 0x87, 0x9d, 0x71, 0x02, 0xe4, 0x14, 0xa8, - 0x93, 0xc1, 0xeb, 0xfb, - 0x7d, 0x3f, 0xfd, 0x78, 0x2c, 0x0e, 0x74, 0x0c, 0xd7, 0xa2, 0x1a, 0x0a, - 0x14, 0xab, 0x48, 0x3f, - 0x96, 0xb5, 0x84, 0xd7, 0x19, 0xd6, 0x2b, 0xfc, 0xe3, 0xdd, 0x11, 0x82, - 0xc7, 0x60, 0xa1, 0xb5, - 0x05, 0x5b, 0x7f, 0x13, 0x76, 0xea, 0x9a, 0x89, 0xac, 0xe6, 0xb2, 0x2c, - 0x58, 0x79, 0x72, 0x5b, - 0x18, 0xca, 0x2a, 0xc9, 0x12, 0x34, 0x36, 0xff, 0xa6, 0x14, 0xf6, 0x61, - 0xc2, 0x3a, 0xb3, 0xca, - 0x87, 0x41, 0xc4, 0x88, 0x74, 0x12, 0x9c, 0x14, 0xba, 0x25, 0x2e, 0x1e, - 0x3c, 0x3e, 0xd8, 0x41, - 0x6b, 0x60, 0x9b, 0x55, 0xd5, 0x9a, 0xbc, 0xe9, 0xdb, 0xbf, 0x62, 0x7c, - 0xf8, 0x68, 0x77, 0x60, - 0xd4, 0x30, 0xac, 0xcb, 0x8b, 0x4d, 0x5e, 0x95, 0x8c, 0xbe, 0x31, 0x3e, - 0x7c, 0x34, 0xda, 0x30, - 0x04, 0x23, 0xb2, 0xc2, 0x07, 0xb7, 0x09, 0xcb, 0x31, 0x06, 0x29, 0x4f, - 0x9e, 0x0b, 0x68, 0x23, - 0xbb, 0x73, 0x85, 0x5c, 0x59, 0x60, 0xeb, 0xb7, 0x66, 0x07, 0x7a, 0x0d, - 0x1a, 0x57, 0xc5, 0x73, - 0x37, 0xfc, 0x72, 0x23, 0xb0, 0x38, 0x13, 0x30, 0xda, 0xcd, 0x68, 0x28, - 0x50, 0xe9, 0xe3, 0xfc, - 0xd3, 0x9b, 0x8a, 0xb9, 0x1f, 0x1d, 0x21, 0x98, 0xd9, 0x5b, 0x76, 0xd4, - 0x6b, 0xa9, 0x9c, 0x9b, - 0x9b, 0xa8, 0x5c, 0x83, 0x61, 0x91, 0xa3, 0x20, 0x2d, 0x37, 0xf1, 0x30, - 0x60, 0x0f, 0x03, 0xa8, - 0x55, 0xa2, 0x83, 0xe0, 0x1a, 0x52, 0x2e, 0xce, 0xfe, 0x9e, 0xc3, 0xa9, - 0x91, 0xe5, 0x5e, 0xa2, - 0x3a, 0xe1, 0xaa, 0x77, 0xc8, 0x7f, 0x9b, 0xec, 0x14, 0x27, 0x88, 0x9a, - 0xf7, 0x86, 0x41, 0xe1, - 0xc4, 0xbc, 0x21, 0x45, 0x97, 0xd4, 0x7a, 0x3f, 0x48, 0xa6, 0x95, 0xc1, - 0x41, 0x18, 0xb9, 0xbc, - 0x9e, 0xf3, 0x23, 0x90, 0x17, 0x7b, 0x39, 0xa9, 0x81, 0xd1, 0x43, 0x1c, - 0x38, 0x76, 0x71, 0xf3, - 0xa1, 0x49, 0xf6, 0xf4, 0xa9, 0xee, 0x38, 0xcc, 0x39, 0x10, 0x79, 0xaa, - 0x97, 0x89, 0x42, 0x49, - 0x81, 0x92, 0x2f, 0x2b, 0x91, 0x1f, 0x70, 0x5b, 0x72, 0x20, 0xf2, 0x97, - 0xed, 0xd1, 0x84, 0x92, - 0x89, 0xd4, 0x88, 0x6c, 0x9f, 0xb2, 0x62, 0x0e, 0x10, 0x2c, 0xa0, 0x09, - 0x12, 0xc7, 0x54, 0xd4, - 0x14, 0xaf, 0x3f, 0x4c, 0x1b, 0x2e, 0x2d, 0x61, 0xf5, 0x1e, 0x8d, 0xb0, - 0xa3, 0x27, 0x0b, 0xaf, - 0xb9, 0x83, 0xdc, 0x3d, 0xbb, 0xda, 0x0e, 0x33, 0x9f, 0x04, 0x8f, 0xcb, - 0x55, 0xb3, 0xf1, 0x83, - 0xac, 0x54, 0x2e, 0xa0, 0xd1, 0xa9, 0xb0, 0x10, 0xf7, 0xfa, 0x99, 0x18, - 0x30, 0xe6, 0xe0, 0x54, - 0x8f, 0x07, 0x63, 0xcf, 0x7a, 0xbf, 0x8e, 0x41, 0xd8, 0x29, 0x7c, 0x80, - 0xc3, 0x28, 0x08, 0x07, - 0xf0, 0xc8, 0xc7, 0xd6, 0xb4, 0x0b, 0x1f, 0xc9, 0xf6, 0x88, 0x93, 0x4c, - 0x98, 0x67, 0x74, 0xc8, - 0xfe, 0x5d, 0x8b, 0x32, 0x5f, 0xab, 0xe1, 0xd3, 0x5c, 0x81, 0x1d, 0x5b, - 0xb6, 0x9e, 0xf8, 0x5d, - 0x01, 0x78, 0xcd, 0xd1, 0x71, 0x5d, 0x93, 0x42, 0x9d, 0xe0, 0x9b, 0x63, - 0xc6, 0x72, 0x1a, 0x78, - 0x08, 0x46, 0xa7, 0x47, 0x0e, 0xad, 0x12, 0x55, 0x62, 0x0c, 0x52, 0x9e, - 0xff, 0x16, 0xd0, 0x46, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x0d, 0x1d, 0xd8, 0x54, 0x78, 0x47, 0x88, 0xdc, 0xce, 0xea, 0xe0, 0xb2, - 0xa7, 0x6f, 0xa2, 0x1d, - 0x30, 0x57, 0x54, 0x51, 0x24, 0x68, 0x6c, 0x3d, 0x8f, 0x28, 0x2f, 0xc2, - 0x47, 0x74, 0xa5, 0x57, - 0x2d, 0xc6, 0x01, 0x8b, 0x40, 0xb6, 0xc0, 0x4b, 0x85, 0xda, 0x6b, 0x8f, - 0xdd, 0x37, 0x64, 0xc6, - 0x1f, 0x61, 0x0c, 0xbb, 0x86, 0x64, 0x49, 0xf2, 0xf3, 0xf1, 0xb1, 0x8b, - 0xd5, 0xa7, 0xf5, 0x61, - 0x35, 0x0c, 0x2b, 0x42, 0x52, 0x82, 0xf6, 0xb4, 0x23, 0xce, 0x9d, 0xee, - 0x1f, 0x0d, 0xd7, 0x0c, - 0xd9, 0x2d, 0x74, 0x9f, 0xf3, 0x0a, 0xd6, 0x49, 0x42, 0x54, 0xd1, 0x8c, - 0xdb, 0x5b, 0x78, 0x2d, - 0xdb, 0xdd, 0x2d, 0xfe, 0x11, 0xb0, 0x33, 0xcd, 0xbb, 0x57, 0x24, 0x4a, - 0x94, 0xbf, 0x4c, 0xdd, - 0xba, 0x0b, 0x48, 0x8d, 0x28, 0x3d, 0x78, 0xf5, 0xfb, 0xe7, 0xe1, 0x6e, - 0xdc, 0x25, 0xdf, 0x0b, - 0x3d, 0x4a, 0x8c, 0x05, 0x5c, 0x2f, 0xe4, 0xe1, 0x41, 0xc2, 0xcf, 0x70, - 0xe0, 0x1b, 0x07, 0x4a, - 0x8d, 0xf7, 0x3a, 0xae, 0x98, 0x05, 0x6b, 0xc5, 0x21, 0x2a, 0x89, 0x46, - 0x8c, 0xcc, 0x3c, 0xf7, - 0x36, 0x84, 0xbf, 0xf2, 0xc1, 0x65, 0x80, 0x72, 0x47, 0x2d, 0xf3, 0x4b, - 0x96, 0x9b, 0xf9, 0x84, - 0xa8, 0x77, 0x9c, 0x62, 0xd6, 0x1e, 0xb9, 0xdb, 0xc6, 0xfc, 0xb0, 0x57, - 0xae, 0xed, 0x88, 0x77, - 0xc3, 0x17, 0x07, 0x37, 0x03, 0x84, 0x05, 0x32, 0x1d, 0x43, 0xd2, 0x2b, - 0x56, 0x85, 0xff, 0x17, - 0x4d, 0x68, 0xa9, 0x29, 0x08, 0x66, 0x18, 0x31, 0x58, 0x8a, 0x35, 0xc8, - 0x53, 0xdf, 0xed, 0x68, - 0xa5, 0x6a, 0x44, 0x36, 0xae, 0x59, 0x31, 0x07, 0x08, 0x16, 0x50, 0xe5, - 0x09, 0x82, 0x2a, 0x6a, - 0x1d, 0x91, 0x55, 0xda, 0x64, 0xde, 0xac, 0x76, 0x0a, 0xf2, 0x44, 0x4d, - 0x9a, 0x43, 0xc1, 0x91, - 0x3c, 0x32, 0x41, 0xd4, 0x2d, 0x72, 0x77, 0xa3, 0xdc, 0x22, 0x54, 0x13, - 0x26, 0x69, 0x1d, 0x32, - 0xef, 0xa9, 0xcb, 0x6d, 0x32, 0x6f, 0x56, 0x3b, 0x05, 0x79, 0x22, 0xc7, - 0x4d, 0xc0, 0x81, 0xa9, - 0x45, 0x2e, 0x0e, 0x6e, 0x06, 0xcb, 0x0a, 0x64, 0x3a, 0x86, 0x67, 0x56, - 0xac, 0xc9, 0x3d, 0x2e, - 0xaa, 0x87, 0xc5, 0x03, 0x34, 0xa4, 0x5c, 0x5f, 0x3f, 0xff, 0x45, 0x91, - 0xe1, 0x09, 0xbc, 0x87, - 0x7c, 0x47, 0x30, 0xa9, 0x5d, 0x53, 0xe7, 0x4e, 0x4a, 0x42, 0x81, 0x69, - 0xd2, 0xd9, 0x52, 0x47, - 0x9d, 0x7b, 0xb7, 0x20, 0x84, 0x9c, 0x4f, 0x6f, 0xe5, 0x32, 0x2d, 0xb9, - 0xb1, 0xe0, 0x5f, 0x7b, - 0x2c, 0xbe, 0xcc, 0x5a, 0x31, 0xeb, 0x53, 0x09, 0x18, 0x3a, 0xf0, 0xec, - 0x1b, 0x45, 0x7e, 0xbe, - 0x16, 0x5f, 0x66, 0x2d, 0xf9, 0x94, 0xc8, 0xe5, 0x0c, 0x1d, 0x78, 0x76, - 0xec, 0xc3, 0x3f, 0x5f, - 0x03, 0x88, 0x94, 0xb0, 0x93, 0xe7, 0x76, 0xc6, 0x64, 0xe3, 0x6e, 0xa5, - 0x89, 0x96, 0x2e, 0x88, - 0x5e, 0x6c, 0xb0, 0x17, 0x87, 0x18, 0x4a, 0x5d, 0xf8, 0x71, 0xff, 0x92, - 0xe7, 0x65, 0xa0, 0x6c, - 0x4e, 0xe0, 0x3d, 0x99, 0x9b, 0x81, 0x6e, 0xf7, 0x3c, 0x69, 0x5b, 0x6d, - 0xda, 0x49, 0xc3, 0xe0, - 0xcb, 0x51, 0xa0, 0x70, 0x0d, 0x29, 0x17, 0x67, 0x7f, 0x4f, 0x80, 0xb5, - 0xa9, 0x93, 0x2f, 0x51, - 0x3e, 0xc2, 0x18, 0xb5, 0xcf, 0xc8, 0x92, 0x27, 0x25, 0x21, 0xa1, 0xd5, - 0x69, 0x8d, 0x29, 0xc2, - 0x15, 0xd7, 0xf2, 0x9d, 0x6a, 0x73, 0xbe, 0x23, 0x68, 0xfe, 0x16, 0xd3, - 0x65, 0x55, 0x11, 0xd7, - 0xfc, 0xad, 0xd2, 0x53, 0xbd, 0x11, 0x04, 0x57, 0xa5, 0x82, 0xe8, 0x9d, - 0xf9, 0x7a, 0xcc, 0xad, - 0xae, 0xa4, 0x77, 0xc1, 0x33, 0x13, 0x55, 0x94, 0x0e, 0xf9, 0x6c, 0xde, - 0x7f, 0x02, 0xd4, 0xa4, - 0x63, 0x26, 0x3c, 0x12, 0xdb, 0x37, 0xae, 0xbc, 0xb9, 0xb3, 0x30, 0xe2, - 0x07, 0x7e, 0xa7, 0x26, - 0x0e, 0x95, 0x4c, 0xe4, 0xeb, 0xa0, 0xfe, 0x1a, 0xaa, 0x09, 0x8e, 0x17, - 0x2e, 0xf9, 0x8c, 0x95, - 0x7f, 0xcf, 0xa4, 0x19, 0xce, 0xb4, 0x91, 0x88, 0x2e, 0xa1, 0xef, 0xcc, - 0x5b, 0x4f, 0x7c, 0xcf, - 0x31, 0x2f, 0x99, 0x80, 0x55, 0x35, 0xff, 0x7f, 0x12, 0xc8, 0xb4, 0xa1, - 0x81, 0x06, 0xbf, 0x2f, - 0xdf, 0xfe, 0x9f, 0x3c, 0x16, 0x07, 0x3a, 0x06, 0x8a, 0x51, 0x0d, 0x05, - 0x0a, 0xb4, 0x24, 0xfe, - 0xf1, 0xb0, 0x0a, 0x07, 0xc5, 0x56, 0x8c, 0x8b, 0x6b, 0x68, 0x08, 0x2f, - 0x5e, 0x15, 0x6e, 0xb0, - 0x60, 0xae, 0xa8, 0xa2, 0x48, 0xd0, 0xd8, 0x7a, 0xdd, 0x50, 0x5e, 0x47, - 0x8e, 0xe8, 0x89, 0xae, - 0x79, 0x1c, 0x4f, 0xba, 0x2b, 0xb9, 0x7d, 0xc7, 0xe6, 0xa4, 0x33, 0x45, - 0x8a, 0xa0, 0x20, 0x1c, - 0x9a, 0xd0, 0x91, 0x52, 0x10, 0xcc, 0x30, 0x62, 0xb0, 0xd7, 0x6a, 0x53, - 0xa6, 0x7d, 0x19, 0xd0, - 0xf8, 0x8e, 0x60, 0x91, 0xba, 0xa6, 0x0d, 0x9c, 0x94, 0x84, 0xc1, 0xd2, - 0x67, 0x71, 0xa4, 0x8e, - 0x4c, 0x10, 0x64, 0xf8, 0x79, 0x3b, 0x8b, 0x73, 0xc5, 0x6a, 0xae, 0xab, - 0x95, 0xad, 0xf7, 0x10, - 0xb5, 0xe6, 0xc9, 0xb8, 0xb2, 0xc0, 0x15, 0xad, 0xcc, 0x0e, 0xf4, 0x1a, - 0x34, 0xae, 0x49, 0xe6, - 0x41, 0x0d, 0xbc, 0xac, 0x01, 0x7c, 0x03, 0xaf, 0x0b, 0x80, 0x4e, 0x19, - 0x32, 0xc2, 0x55, 0x0d, - 0xc7, 0x34, 0xb5, 0xf5, 0x04, 0x33, 0x0c, 0xf9, 0x2c, 0x45, 0xfb, 0x64, - 0xc8, 0x8e, 0x97, 0x34, - 0x7a, 0x94, 0xdb, 0x0a, 0xb8, 0x5e, 0x0b, 0x01, 0x82, 0x47, 0x5d, 0xe0, - 0x03, 0x36, 0x0e, 0x94, - 0x7b, 0xec, 0x16, 0xdb, 0xc9, 0x03, 0x98, 0x43, 0x1f, 0xa7, 0xc6, 0x83, - 0xc5, 0x44, 0x14, 0xec, - 0x0a, 0xb6, 0xfe, 0x26, 0xec, 0x17, 0xf7, 0xd1, 0x9b, 0x0f, 0xa7, 0x58, - 0xb0, 0xf2, 0xe4, 0xb6, - 0xdc, 0x76, 0x0b, 0x8c, 0x85, 0xe0, 0x4c, 0xc0, 0xee, 0xb2, 0x63, 0xa0, - 0x83, 0x22, 0x0a, 0x76, - 0xdd, 0x0e, 0xc6, 0x5d, 0xf4, 0xbd, 0xdf, 0x82, 0x73, 0x52, 0xf8, 0xc3, - 0x45, 0x50, 0x10, 0x0e, - 0xea, 0xf2, 0xb4, 0x7e, 0x44, 0x85, 0xcc, 0xb2, 0xa9, 0x9f, 0x90, 0xeb, - 0x15, 0xb9, 0xf3, 0xf2, - 0x78, 0x64, 0x82, 0x6b, 0x5a, 0xe4, 0xee, 0x85, 0x7b, 0x44, 0xa8, 0x26, - 0x4c, 0xd2, 0x3a, 0x64, - 0xbe, 0x28, 0xfa, 0x4f, 0x2f, 0x8a, 0x71, 0x3e, 0xca, 0xe1, 0xc8, 0x21, - 0x42, 0x2e, 0xb7, 0x28, - 0x86, 0x39, 0x09, 0x59, 0x05, 0x4f, 0x0f, 0x56, 0x27, 0xc5, 0xb5, 0x7d, - 0xfa, 0x4c, 0xc2, 0x39, - 0xe1, 0x3c, 0x87, 0x89, 0xd9, 0xcf, 0xa8, 0x21, 0xaf, 0x70, 0xac, 0xd0, - 0x63, 0x39, 0x0d, 0x3c, - 0x97, 0xcd, 0x49, 0x06, 0x68, 0x8b, 0xb8, 0xbe, 0x7e, 0x3d, 0x8a, 0xe1, - 0x01, 0x12, 0xbb, 0xcd, - 0x66, 0x7d, 0x43, 0x01, 0xad, 0xdd, 0x34, 0x35, 0x15, 0x55, 0x82, 0xce, - 0x5f, 0x07, 0xd5, 0x7d, - 0xeb, 0x8a, 0x79, 0xaf, 0x35, 0xd8, 0x5f, 0xf0, 0x34, 0x7f, 0x0b, 0x88, - 0xd3, 0xcb, 0xe9, 0x8a, - 0xf2, 0x38, 0x9e, 0xb7, 0x56, 0xb1, 0xfa, 0x4d, 0x0f, 0x8b, 0x66, 0x8a, - 0xd7, 0x83, 0x40, 0x38, - 0xb0, 0xbd, 0xb6, 0xab, 0xc4, 0x2a, 0x8f, 0x24, 0x60, 0xe8, 0x46, 0x36, - 0x6c, 0xd7, 0x3b, 0xbd, - 0xe4, 0x67, 0xf8, 0x9a, 0xaf, 0x25, 0x32, 0xa8, 0x03, 0x96, 0x1e, 0xfc, - 0x3b, 0x40, 0x7f, 0x67, - 0x1c, 0xe9, 0x98, 0x0b, 0x15, 0x83, 0x3f, 0x34, 0x97, 0x12, 0xdf, 0x2e, - 0x5c, 0x31, 0xdb, 0xe9, - 0xca, 0x29, 0x6d, 0xa1, 0x7c, 0x74, 0x84, 0x25, 0xe2, 0xaf, 0x1b, 0xd6, - 0x6f, 0xe1, 0x35, 0x29, - 0xd2, 0xe3, 0x47, 0x68, 0x6e, 0x40, 0xb2, 0xda, 0x44, 0xbb, 0xed, 0xb7, - 0xad, 0xdb, 0x86, 0xe3, - 0xa0, 0x31, 0x3b, 0x25, 0xd8, 0xb3, 0xab, 0x8e, 0xa4, 0xf0, 0xe2, 0xc9, - 0x51, 0xfb, 0x58, 0x31, - 0x1e, 0x19, 0xc1, 0x6a, 0xf7, 0x39, 0xda, 0xb0, 0x6e, 0x11, 0x2a, 0xe8, - 0x13, 0xd5, 0xef, 0x19, - 0x9f, 0x8b, 0xee, 0x41, 0x66, 0x26, 0xaa, 0xeb, 0x1c, 0x31, 0xd8, 0x7f, - 0xfe, 0x04, 0x6b, 0x8b, - 0x56, 0x2a, 0x17, 0x50, 0x89, 0xb5, 0x58, 0x08, 0x9a, 0x7d, 0xad, 0x0c, - 0x18, 0x73, 0x70, 0x2a, - 0xab, 0xff, 0x08, 0xd2, 0x45, 0xf9, 0xcf, 0x1d, 0xa2, 0x1f, 0xde, 0xf2, - 0x27, 0x7b, 0xa6, 0xff, - 0xc9, 0xa1, 0xf9, 0x11, 0xef, 0x93, 0xf2, 0xe3, 0x86, 0x4c, 0x75, 0x73, - 0xe6, 0x77, 0x1b, 0xa1, - 0x69, 0x90, 0xc2, 0x34, 0x37, 0x20, 0x59, 0x6d, 0x22, 0xbc, 0x97, 0xba, - 0xb7, 0x8c, 0x43, 0x90, - 0x91, 0x1e, 0xa2, 0xa5, 0x8d, 0x86, 0x54, 0xf1, 0xb6, 0x38, 0x56, 0x68, - 0xd0, 0xfd, 0xe7, 0x1e, - 0x72, 0xd2, 0x7c, 0x4d, 0xb6, 0xf3, 0x19, 0x54, 0xe0, 0x4b, 0x0f, 0x7e, - 0xfc, 0x20, 0xde, 0xd2, - 0x53, 0x71, 0x68, 0x43, 0xff, 0x5f, 0xc2, 0x81, 0x36, 0x9b, 0x1f, 0x20, - 0x40, 0x0a, 0x02, 0x71, - 0x17, 0x27, 0xab, 0xfc, 0x88, 0xc9, 0x5b, 0xa7, 0x91, 0xfd, 0xe3, 0x15, - 0x2a, 0xb1, 0x25, 0x27, - 0x4f, 0x98, 0xf0, 0x48, 0xea, 0xdc, 0xfd, 0xb5, 0xa1, 0x89, 0xc0, 0x0e, - 0x1c, 0x3b, 0xd9, 0x98, - 0x58, 0xbf, 0x5b, 0xb4, 0x62, 0x15, 0xa6, 0x12, 0x30, 0x74, 0x23, 0x1b, - 0x36, 0x8a, 0xfc, 0xbf, - 0x02, 0xf0, 0x59, 0x61, 0xe2, 0xba, 0xe5, 0x84, 0xf9, 0x03, 0xf5, 0xc6, - 0x4f, 0xe4, 0x34, 0xf0, - 0x65, 0xf5, 0xd7, 0xb1, 0x3e, 0x3a, 0x42, 0xf3, 0x71, 0xb6, 0xec, 0x6b, - 0xd6, 0x91, 0xfb, 0xf5, - 0x70, 0x22, 0x25, 0x2c, 0x54, 0x49, 0xfc, 0xd0, 0x19, 0x48, 0xfa, 0xb8, - 0xb3, 0xc4, 0xea, 0x22, - 0x3f, 0xba, 0xd5, 0x64, 0xbe, 0x95, 0x01, 0x65, 0xb8, 0xc1, 0x3a, 0xb6, - 0xaf, 0xff, 0x33, 0xba, - 0x33, 0xdf, 0xc0, 0xe1, 0xb7, 0x8f, 0x1a, 0xfb, 0xeb, 0xcb, 0x41, 0x67, - 0xce, 0xe2, 0x8b, 0xdf, - 0x28, 0x9d, 0x7e, 0x98, 0x36, 0x5c, 0x5a, 0xc2, 0x29, 0x3c, 0xd9, 0xa3, - 0x85, 0x4e, 0x16, 0x9d, - 0xc5, 0xc4, 0xec, 0x94, 0xe6, 0x89, 0xe9, 0x7d, 0xd5, 0x46, 0x0e, 0xa2, - 0x87, 0x6a, 0xa3, 0xc4, - 0xcc, 0xfa, 0x86, 0x02, 0x99, 0x79, 0x68, 0x6a, 0x2a, 0xaa, 0xc7, 0x5f, - 0xbe, 0x0e, 0x69, 0xfa, - 0xad, 0x2c, 0xe3, 0x71, 0xa0, 0xf4, 0x23, 0x52, 0x6a, 0x1a, 0x02, 0x7b, - 0xf6, 0x94, 0xfa, 0x2c, - 0x34, 0x74, 0xe6, 0x93, 0x23, 0xdf, 0x65, 0xf6, 0xbe, 0x2e, 0x06, 0x8d, - 0xd9, 0x7f, 0xcd, 0x74, - 0x95, 0x3d, 0x10, 0x67, 0x8a, 0x31, 0x5d, 0x3a, 0x87, 0x3e, 0x7f, 0x27, - 0x4e, 0xf6, 0x8f, 0x3d, - 0x83, 0x62, 0x76, 0x4a, 0x73, 0xa5, 0x95, 0xdf, 0x8b, 0x23, 0x07, 0x51, - 0xa2, 0x35, 0xb0, 0x62, - }, - { /* 2 */ - 0x37, 0xf9, 0x69, 0x1b, 0x71, 0x18, 0x61, 0xcd, 0x69, 0x19, 0x54, 0xd6, - 0xaf, 0xcb, 0x37, 0x52, - 0x93, 0x8b, 0x03, 0xf8, 0xd8, 0xdb, 0x4a, 0x3b, 0x03, 0x7b, 0x5a, 0xc3, - 0x52, 0x7d, 0x93, 0x1c, - 0xdb, 0x45, 0x63, 0x4e, 0xe4, 0x87, 0x1e, 0x57, 0x63, 0xc0, 0x4b, 0x19, - 0x80, 0x06, 0xdb, 0x1a, - 0x38, 0xfb, 0x20, 0xd3, 0x14, 0x34, 0x8d, 0x24, 0x20, 0x69, 0x0f, 0xf7, - 0x4e, 0x29, 0x38, 0x02, - 0x7f, 0x37, 0x09, 0xad, 0x4d, 0x44, 0x35, 0xa1, 0x09, 0xa2, 0x45, 0x0c, - 0x7d, 0xb0, 0x7f, 0x54, - 0xb6, 0xa0, 0x72, 0x2f, 0xa6, 0xd4, 0x3e, 0xed, 0x72, 0x3c, 0x9b, 0xc2, - 0x28, 0xd8, 0xb6, 0xae, - 0xa0, 0x81, 0xad, 0x96, 0xea, 0x47, 0x90, 0xf0, 0xad, 0x08, 0xae, 0x66, - 0xb1, 0x91, 0xa0, 0xcf, - 0xb7, 0xec, 0x33, 0xa3, 0xc6, 0xf5, 0x60, 0x0d, 0x33, 0xc7, 0xb3, 0xae, - 0x3b, 0xa1, 0xb7, 0x1f, - 0xb8, 0xee, 0x7a, 0x6b, 0xa3, 0xd9, 0x8c, 0xe4, 0x7a, 0xb7, 0xe8, 0x8f, - 0xda, 0x43, 0xb8, 0x4f, - 0xc5, 0x41, 0xf1, 0x1d, 0x2e, 0xdf, 0x05, 0x46, 0xf1, 0x20, 0xfd, 0x5b, - 0x81, 0x01, 0xc5, 0xba, - 0xcc, 0x28, 0xfd, 0x7b, 0xc8, 0x35, 0xee, 0xaa, 0xfd, 0x0f, 0x56, 0xd1, - 0x0a, 0x36, 0xcc, 0xca, - 0x54, 0x52, 0x70, 0x3e, 0x36, 0x46, 0xf3, 0x7e, 0x70, 0x6e, 0xf7, 0x40, - 0xf5, 0x8e, 0x54, 0x07, - 0x04, 0xf3, 0xc7, 0x75, 0x43, 0x84, 0xbb, 0x06, 0xc7, 0x6a, 0xa0, 0x73, - 0x4c, 0x27, 0x04, 0x81, - 0xb1, 0x87, 0x76, 0x0d, 0x45, 0x33, 0x67, 0x08, 0x76, 0x98, 0x43, 0x05, - 0x51, 0x74, 0xb1, 0x3f, - 0x13, 0x9e, 0x59, 0x40, 0x6f, 0x36, 0x4b, 0xfb, 0x59, 0xa5, 0xbd, 0xbb, - 0xc6, 0x17, 0x13, 0x51, - 0xb2, 0x53, 0xb5, 0x5a, 0xe5, 0x50, 0x85, 0xeb, 0xb5, 0x56, 0x3b, 0xb1, - 0x64, 0xff, 0xb2, 0x2f, - 0x1c, 0x9c, 0x10, 0x88, 0x0a, 0x1a, 0xa7, 0x12, 0x10, 0xd5, 0xe6, 0x9a, - 0x27, 0xf5, 0x1c, 0x01, - 0xa8, 0xa4, 0xe0, 0x7c, 0x6c, 0x8c, 0x25, 0xfc, 0xe0, 0xdc, 0x2d, 0x80, - 0x29, 0xdf, 0xa8, 0x0e, - 0x02, 0x98, 0x82, 0xdb, 0xc0, 0x42, 0xbc, 0x03, 0x82, 0x35, 0x50, 0xd8, - 0x26, 0xf2, 0x02, 0xa1, - 0x20, 0x94, 0xf7, 0x2e, 0x5d, 0xaa, 0x91, 0x30, 0xf7, 0xd6, 0x49, 0x1e, - 0x25, 0xfb, 0x20, 0x82, - 0xf5, 0x9f, 0x9c, 0x24, 0xbc, 0x20, 0x3d, 0x6e, 0x9c, 0x9d, 0x71, 0x4a, - 0x57, 0x66, 0xf5, 0x79, - 0x45, 0x54, 0xab, 0xa5, 0x99, 0x32, 0x04, 0x86, 0xab, 0xfe, 0x1a, 0x23, - 0x15, 0x6b, 0x45, 0xf7, - 0x3b, 0x2f, 0xe3, 0x84, 0xb4, 0x57, 0x6f, 0xc7, 0xe3, 0xa7, 0x77, 0x43, - 0x7b, 0xa2, 0x3b, 0x12, - 0x3f, 0xdc, 0x24, 0xf1, 0xf7, 0xd3, 0xd4, 0xc1, 0x24, 0xcd, 0xd7, 0x30, - 0x37, 0x85, 0x3f, 0x93, - 0xc3, 0x2a, 0xb4, 0xb3, 0xad, 0x19, 0x02, 0x43, 0xb4, 0x7f, 0x0d, 0xf0, - 0xeb, 0xd4, 0xc3, 0x9a, - 0x2f, 0x96, 0xbe, 0xe6, 0x38, 0x86, 0x7d, 0xd9, 0xbe, 0xa6, 0x12, 0x3f, - 0xc4, 0x19, 0x2f, 0xd2, - 0x76, 0x5e, 0x05, 0xcb, 0xab, 0xae, 0xde, 0x4d, 0x05, 0x8d, 0xee, 0x86, - 0xf6, 0x87, 0x76, 0x24, - 0x4b, 0x1a, 0xa3, 0xe1, 0x9c, 0x3f, 0xb6, 0x8f, 0xa3, 0x75, 0x69, 0x6e, - 0xe7, 0xf0, 0x4b, 0x16, - 0x5f, 0xa3, 0xfe, 0x83, 0x10, 0xee, 0xa4, 0x91, 0xfe, 0x74, 0x0c, 0x12, - 0x58, 0x4b, 0x5f, 0xd6, - 0x97, 0x78, 0xc4, 0x8d, 0x9b, 0x5f, 0xf1, 0x3d, 0xc4, 0x11, 0xfa, 0xb0, - 0x1e, 0x5a, 0x97, 0x9d, - 0x16, 0x21, 0xdf, 0xb9, 0x4c, 0x93, 0xae, 0x1d, 0xdf, 0x34, 0x35, 0xa4, - 0x99, 0x49, 0x16, 0x61, - 0xa2, 0x19, 0x2f, 0x4d, 0x2a, 0x05, 0x2c, 0xf3, 0x2f, 0x3d, 0xfe, 0xbe, - 0x97, 0x63, 0xa2, 0x6e, - 0x50, 0xa1, 0xb7, 0x4b, 0x75, 0xc2, 0x48, 0x78, 0xb7, 0x04, 0x57, 0x33, - 0xb9, 0xa9, 0x50, 0x86, - 0x6a, 0xc2, 0x15, 0x43, 0xa1, 0xb4, 0x79, 0x5f, 0x15, 0x58, 0x08, 0x1c, - 0xd1, 0x72, 0x6a, 0x25, - 0x0c, 0xd6, 0x8a, 0x9f, 0xc5, 0x4f, 0x0e, 0x0a, 0x8a, 0xbe, 0x23, 0x95, - 0xd4, 0x69, 0x0c, 0x40, - 0x71, 0x79, 0x01, 0xe9, 0x48, 0x49, 0x87, 0xa8, 0x01, 0x29, 0x36, 0x41, - 0x8f, 0x2b, 0x71, 0xb5, - 0xa6, 0xea, 0xe8, 0x38, 0x69, 0x81, 0x97, 0xf5, 0xe8, 0x57, 0x5e, 0xcd, - 0xdb, 0x44, 0xa6, 0xef, - 0x8a, 0xa8, 0x95, 0x89, 0xf1, 0x64, 0x08, 0xcf, 0x95, 0x3f, 0x34, 0x46, - 0x2a, 0xd6, 0x8a, 0x2d, - 0xe7, 0x4d, 0x84, 0xe8, 0xb3, 0x37, 0x28, 0x75, 0x84, 0xc3, 0xe4, 0x9d, - 0x82, 0x08, 0xe7, 0x99, - 0xec, 0xbc, 0x0a, 0x55, 0x95, 0x9f, 0x7f, 0x9a, 0x0a, 0xd9, 0x1f, 0xcf, - 0x2f, 0xcd, 0xec, 0x48, - 0x51, 0xed, 0xf6, 0xc7, 0x15, 0xe3, 0x16, 0x98, 0xf6, 0xff, 0x7f, 0x5f, - 0xaa, 0xd0, 0x51, 0x37, - 0x79, 0x5c, 0x4c, 0x03, 0xce, 0x82, 0x32, 0xa4, 0x4c, 0xfd, 0xb5, 0xa7, - 0x17, 0x65, 0x79, 0x74, - 0xe1, 0x26, 0xc1, 0x46, 0x30, 0xf1, 0x2f, 0x70, 0xc1, 0x9c, 0x14, 0x36, - 0xe8, 0xdd, 0xe1, 0xb9, - 0x1b, 0xbb, 0x14, 0xaa, 0xe9, 0xfd, 0xfe, 0xf7, 0x14, 0x71, 0x3e, 0x5d, - 0x5e, 0x59, 0x1b, 0x90, - 0x9f, 0x5d, 0x89, 0x67, 0x1d, 0x94, 0x44, 0x31, 0x89, 0xc5, 0x79, 0x56, - 0x86, 0x14, 0x9f, 0x5c, - 0x74, 0xc6, 0x87, 0x10, 0x6b, 0xec, 0x62, 0x4e, 0x87, 0xb8, 0xbe, 0x5e, - 0xd0, 0x75, 0x74, 0x85, - 0xf8, 0x05, 0x57, 0x37, 0x19, 0x4e, 0x6d, 0x84, 0x57, 0xd8, 0x7a, 0xb3, - 0x90, 0x76, 0xf8, 0x88, - 0x5a, 0x1c, 0x78, 0x7a, 0x33, 0x4b, 0x41, 0x77, 0x78, 0xe5, 0x84, 0x0d, - 0x07, 0x15, 0x5a, 0xe6, - 0x67, 0x58, 0xde, 0x50, 0x04, 0xda, 0x29, 0xb5, 0xde, 0x1d, 0x03, 0xe5, - 0x16, 0x62, 0x67, 0xd4, - 0x36, 0xb5, 0x28, 0x97, 0x11, 0x39, 0x3f, 0x2d, 0x28, 0xe2, 0x7c, 0xba, - 0xbc, 0xb2, 0x36, 0xe3, - 0xe8, 0x4f, 0xcd, 0x20, 0xd6, 0x1b, 0xc4, 0x9c, 0xcd, 0xb3, 0xbf, 0xbc, - 0x63, 0xea, 0xe8, 0xc9, - 0x60, 0x7f, 0xda, 0x72, 0xe7, 0x3d, 0x70, 0x50, 0xda, 0xb9, 0xdb, 0x22, - 0x6f, 0xce, 0x60, 0x45, - 0xd2, 0x2c, 0x6f, 0x28, 0x02, 0x6d, 0xf5, 0xbb, 0x6f, 0xef, 0xe0, 0x93, - 0x0b, 0x31, 0xd2, 0x6a, - 0xa5, 0x3e, 0x2b, 0x6f, 0xc9, 0xe2, 0x75, 0x16, 0x2b, 0x99, 0x26, 0x79, - 0xee, 0xcf, 0xa5, 0xff, - 0x8c, 0xc3, 0xd0, 0x27, 0x72, 0xa2, 0x0f, 0xca, 0xd0, 0x60, 0xc4, 0xed, - 0x40, 0x03, 0x8c, 0x0d, - 0xbd, 0x51, 0xfc, 0x92, 0x80, 0x7c, 0x69, 0x02, 0xfc, 0x26, 0x60, 0x90, - 0x85, 0x1d, 0xbd, 0x7f, - 0xfb, 0xd1, 0x94, 0x60, 0xb9, 0x2d, 0x8f, 0x67, 0x94, 0x16, 0x02, 0x07, - 0xa5, 0xfd, 0xfb, 0x98, - 0xba, 0x76, 0xf8, 0xb0, 0x63, 0x9b, 0x30, 0xe7, 0xf8, 0x82, 0xb8, 0x57, - 0xfc, 0xb1, 0xba, 0xee, - 0x0f, 0x02, 0x49, 0xc8, 0x65, 0x2c, 0xec, 0xe9, 0x49, 0x70, 0x5b, 0x21, - 0xe1, 0xe2, 0x0f, 0x50, - 0x4f, 0xe9, 0x64, 0x94, 0xdf, 0xbb, 0x0d, 0x89, 0x64, 0x1f, 0xc9, 0x1d, - 0xab, 0xd7, 0x4f, 0x97, - 0x8e, 0x5b, 0x52, 0xfc, 0xb2, 0xe0, 0xb3, 0xc9, 0x52, 0x55, 0x94, 0x35, - 0x66, 0xf1, 0x8e, 0xac, - 0x89, 0x7c, 0x56, 0xde, 0x51, 0x07, 0xea, 0x2c, 0x56, 0xf1, 0x4c, 0xf2, - 0x1f, 0x5d, 0x89, 0x3d, - 0x06, 0x6b, 0x45, 0xae, 0x83, 0xc6, 0x07, 0x05, 0x45, 0x5f, 0xf0, 0xab, - 0x6a, 0xd5, 0x06, 0x20, - 0xe5, 0xd5, 0x06, 0x33, 0x73, 0x75, 0x94, 0x76, 0x06, 0xf6, 0xb4, 0x45, - 0xa4, 0xfa, 0xe5, 0x38, - 0xf4, 0xd3, 0xdd, 0xa8, 0xdc, 0x01, 0x63, 0x8e, 0xdd, 0x66, 0x59, 0x26, - 0x44, 0x1f, 0xf4, 0xc8, - 0xc7, 0xd9, 0x73, 0xc6, 0xee, 0x9d, 0xb9, 0x45, 0x73, 0x15, 0xad, 0x83, - 0xa7, 0xf3, 0xc7, 0x1b, - 0xad, 0x1b, 0x66, 0x85, 0x4f, 0x29, 0xc0, 0x1a, 0x66, 0x4d, 0xa5, 0x9f, - 0x76, 0x81, 0xad, 0x3e, - 0xcb, 0x0f, 0xf9, 0x59, 0x2b, 0xd2, 0xb7, 0x4f, 0xf9, 0xab, 0x8e, 0x16, - 0x73, 0x9a, 0xcb, 0x5b, - 0x80, 0x15, 0x5a, 0xb8, 0xb7, 0xed, 0x01, 0xc0, 0x5a, 0xde, 0xe7, 0x78, - 0x94, 0x6a, 0x80, 0x4d, - 0xf0, 0x20, 0x1a, 0xdd, 0x9f, 0x85, 0xd8, 0x88, 0x1a, 0x0c, 0xf9, 0x55, - 0x08, 0x38, 0xf0, 0x49, - 0xd5, 0x0b, 0x6b, 0x0a, 0xe1, 0x8a, 0xac, 0x5e, 0x6b, 0x4b, 0x38, 0x54, - 0x72, 0x9d, 0xd5, 0xfb, - 0x07, 0x27, 0x04, 0x22, 0xe3, 0xe7, 0x59, 0xe5, 0x04, 0xa4, 0xd8, 0xc7, - 0x79, 0xac, 0x07, 0x91, - 0xea, 0xd7, 0x4f, 0xfb, 0x16, 0x59, 0x78, 0x9f, 0x4f, 0x86, 0xef, 0x64, - 0x45, 0x18, 0xea, 0x68, - 0x56, 0xca, 0xf2, 0xe5, 0xf6, 0x04, 0x4f, 0x7d, 0xf2, 0x5b, 0xa7, 0x98, - 0xd3, 0x7c, 0x56, 0xa6, - 0x4d, 0x71, 0xe6, 0x4f, 0x1f, 0xf9, 0xb1, 0x8a, 0xe6, 0x2a, 0x99, 0xc5, - 0x8d, 0x25, 0x4d, 0x36, - 0x55, 0x1e, 0x31, 0xb2, 0x56, 0x67, 0xad, 0x9e, 0x31, 0x95, 0xdf, 0x2c, - 0xe6, 0xf7, 0x55, 0xb6, - 0x43, 0x3f, 0xee, 0x0b, 0x1a, 0xf4, 0x03, 0x83, 0xee, 0xa1, 0xea, 0x88, - 0x7f, 0xbe, 0x43, 0xd7, - 0x1a, 0xf7, 0x55, 0x26, 0x89, 0xdc, 0xa0, 0x17, 0x55, 0x8a, 0x16, 0x31, - 0x4d, 0x20, 0x1a, 0x21, - 0x0b, 0xf1, 0x8e, 0xbd, 0x26, 0xa8, 0x57, 0xef, 0x8e, 0x1a, 0xfb, 0x52, - 0xad, 0xc5, 0x0b, 0xd1, - 0xe3, 0xbe, 0x43, 0x9d, 0xf0, 0xb3, 0x93, 0x73, 0x43, 0xa9, 0x44, 0xee, - 0xce, 0x2f, 0xe3, 0x18, - 0x96, 0x34, 0x85, 0x01, 0xfb, 0x7e, 0xaf, 0xdd, 0x85, 0xea, 0xd2, 0xdc, - 0x0d, 0x23, 0x96, 0x2c, - 0x27, 0xb3, 0xf3, 0x0c, 0xbe, 0x4d, 0xc8, 0xd5, 0xf3, 0x72, 0x91, 0xd9, - 0x5c, 0x57, 0x27, 0x13, - 0xdd, 0x2e, 0x26, 0xe0, 0x67, 0x41, 0x19, 0x52, 0x26, 0x9f, 0xbb, 0xb2, - 0xea, 0xd3, 0xdd, 0x3a, - 0x44, 0x18, 0xea, 0x29, 0xf9, 0x13, 0x5a, 0x66, 0xea, 0x05, 0x32, 0x4f, - 0x06, 0x12, 0x44, 0x46, - 0x26, 0xff, 0xb2, 0x80, 0xde, 0x6c, 0x96, 0x35, 0xb2, 0x89, 0xb9, 0xb5, - 0x4f, 0x2e, 0x26, 0xa2, - 0x35, 0x61, 0xeb, 0xc0, 0xb1, 0x5a, 0xdd, 0xce, 0xeb, 0x2c, 0x04, 0x0e, - 0x89, 0x39, 0x35, 0xf3, - 0xdc, 0x62, 0x67, 0x6c, 0x07, 0x60, 0x47, 0xb2, 0x67, 0x64, 0x93, 0xde, - 0xf9, 0xaa, 0xdc, 0x8b, - 0xa4, 0x72, 0x6a, 0xe3, 0xa9, 0xc3, 0x2b, 0xf6, 0x6a, 0x62, 0x0e, 0x15, - 0xfd, 0xb6, 0xa4, 0x4e, - 0x58, 0x84, 0xfa, 0xa1, 0xf3, 0x09, 0xfd, 0x74, 0xfa, 0xd0, 0xd4, 0xd5, - 0x21, 0xe7, 0x58, 0x47, - 0xcf, 0xfc, 0x3e, 0x2c, 0x68, 0x56, 0x0c, 0x49, 0x3e, 0xc1, 0x2e, 0x65, - 0x3f, 0xbd, 0xcf, 0xda, - 0xd0, 0xb4, 0xed, 0xf3, 0xc2, 0x2f, 0x49, 0xb8, 0xed, 0xda, 0xb0, 0x4b, - 0x2d, 0xc3, 0xd0, 0xcb, - 0x7c, 0xe3, 0xca, 0xfa, 0xed, 0x27, 0xd7, 0x42, 0xca, 0x6c, 0x3d, 0xb8, - 0x48, 0x3b, 0x7c, 0x44, - 0x5c, 0x77, 0x3d, 0xd4, 0xb0, 0x8d, 0x46, 0x72, 0x3d, 0xba, 0x74, 0xa6, - 0x6d, 0xc0, 0x5c, 0xc6, - 0x7e, 0x7b, 0x48, 0x21, 0x2d, 0x65, 0x6b, 0x41, 0x48, 0x59, 0x6d, 0x60, - 0x6e, 0xc9, 0x7e, 0xe5, - 0xfe, 0x6e, 0x12, 0x99, 0x9a, 0x88, 0x6a, 0x81, 0x12, 0x87, 0x8a, 0x18, - 0xfa, 0xa3, 0xfe, 0xa8, - 0xaa, 0x3c, 0x62, 0xa7, 0xac, 0xce, 0x99, 0xff, 0x62, 0xe9, 0x7d, 0x58, - 0x0f, 0x2d, 0xaa, 0xaf, - 0x2b, 0x65, 0x79, 0x93, 0x7b, 0x02, 0xc6, 0xdf, 0x79, 0xcc, 0xb2, 0x4c, - 0x88, 0x3e, 0x2b, 0x53, - 0xc9, 0x97, 0x7b, 0x82, 0xeb, 0x90, 0x0b, 0x4c, 0x7b, 0x9e, 0xde, 0xce, - 0x55, 0x68, 0xc9, 0xfa, - 0x92, 0xc7, 0x42, 0x74, 0xb8, 0xfa, 0x14, 0xdb, 0x42, 0x80, 0x72, 0xaf, - 0x41, 0x04, 0x92, 0xad, - 0xca, 0x43, 0xb8, 0xd5, 0x4b, 0xf3, 0xe9, 0xaf, 0xb8, 0x50, 0xa6, 0x7a, - 0x60, 0xe3, 0xca, 0xea, - 0x4c, 0x3d, 0xa7, 0xc3, 0x7f, 0xd8, 0xef, 0x6a, 0xa7, 0xd1, 0xb1, 0xa9, - 0x9e, 0x5c, 0x4c, 0x87, - 0x9d, 0xc5, 0x0b, 0xbc, 0xdd, 0xd6, 0xf8, 0x32, 0x0b, 0xf0, 0x29, 0x8e, - 0xa0, 0xe6, 0x9d, 0xfd, - 0xa7, 0xa6, 0xa9, 0xb4, 0x09, 0xa0, 0xc9, 0x15, 0xa9, 0xac, 0x76, 0xa1, - 0xc8, 0x3d, 0xa7, 0x5e, - 0x59, 0xc8, 0xbb, 0x2d, 0x93, 0x28, 0xa3, 0x94, 0xbb, 0x2b, 0xfc, 0xb9, - 0x32, 0x9e, 0x59, 0xf6, - 0x9e, 0x11, 0xc8, 0xeb, 0x7d, 0xb5, 0x1a, 0xd1, 0xc8, 0x3e, 0x51, 0x3a, - 0x95, 0x6d, 0x9e, 0xed, - 0x1d, 0xd0, 0x51, 0x04, 0x6a, 0x3b, 0xf9, 0xf2, 0x51, 0x2e, 0xce, 0xf6, - 0x34, 0x8c, 0x1d, 0xb0, - 0x01, 0x4c, 0x41, 0x8c, 0x60, 0x21, 0x5e, 0xe0, 0x41, 0xfb, 0x28, 0x6c, - 0x13, 0x79, 0x01, 0xb1, - 0xc2, 0x66, 0xf5, 0x3f, 0xcd, 0x38, 0x5c, 0xa3, 0xf5, 0x84, 0x25, 0x9c, - 0xf8, 0xad, 0xc2, 0x2b, - 0x28, 0xb1, 0xba, 0xc4, 0xdb, 0x61, 0x24, 0x3c, 0xba, 0x02, 0xca, 0xf8, - 0xbd, 0xb5, 0x28, 0x43, - 0xb4, 0x38, 0xf0, 0xf4, 0x66, 0x96, 0x82, 0xee, 0xf0, 0x09, 0xcb, 0x1a, - 0x0e, 0x2a, 0xb4, 0x0f, - 0x19, 0x23, 0x96, 0x71, 0x29, 0xbf, 0x42, 0xf4, 0x96, 0x44, 0x6e, 0x85, - 0x78, 0xab, 0x19, 0x31, - 0x85, 0xaa, 0xdc, 0x41, 0x94, 0x48, 0xe4, 0x26, 0xdc, 0x4f, 0x6f, 0x67, - 0xcb, 0x34, 0x85, 0x7d, - 0x3c, 0x08, 0xe7, 0xa6, 0x57, 0xb0, 0x36, 0x22, 0xe7, 0x03, 0xaf, 0x84, - 0x02, 0x0e, 0x3c, 0x83, - 0x40, 0xeb, 0x2d, 0x5c, 0xba, 0x97, 0xe1, 0x60, 0x2d, 0x6f, 0x92, 0x3c, - 0x4a, 0x35, 0x40, 0xc7, - 0x1e, 0x04, 0x92, 0x53, 0xca, 0x58, 0x1b, 0x11, 0x92, 0xe0, 0xb6, 0x42, - 0x01, 0x07, 0x1e, 0xa0, - 0x95, 0xe0, 0x46, 0x56, 0x5b, 0x1d, 0x4d, 0x3e, 0x46, 0x24, 0xaa, 0x68, - 0x38, 0xa8, 0x95, 0x3c, - 0xab, 0x70, 0x23, 0x2b, 0xcc, 0xef, 0xc7, 0x1f, 0x23, 0x12, 0x55, 0x34, - 0x1c, 0x54, 0xab, 0x1e, - 0xb3, 0x1f, 0xf4, 0xd6, 0x85, 0x71, 0xdb, 0x0b, 0xf4, 0xad, 0x13, 0xdd, - 0x77, 0x86, 0xb3, 0x9e, - 0xeb, 0x9b, 0x0e, 0x77, 0x76, 0x78, 0x26, 0x7f, 0x0e, 0x7d, 0xc7, 0x08, - 0x56, 0x61, 0xeb, 0xd9, - 0xfa, 0x9d, 0xd5, 0xec, 0xd9, 0x0c, 0xd1, 0x87, 0xd5, 0xed, 0x2a, 0x6b, - 0xb6, 0x84, 0xfa, 0x29, - 0x2a, 0x29, 0x38, 0x1f, 0x1b, 0x23, 0x98, 0x3f, 0x38, 0x37, 0x9a, 0x20, - 0x9b, 0x47, 0x2a, 0xe2, - 0xac, 0x57, 0x27, 0x09, 0x2f, 0x08, 0x9e, 0xfa, 0x27, 0xb6, 0x8d, 0xf3, - 0x65, 0xf8, 0xac, 0x8f, - 0x2d, 0x0e, 0x3c, 0x3d, 0xf8, 0xc4, 0xc1, 0xda, 0x3c, 0x93, 0x42, 0xe7, - 0xe2, 0xeb, 0x2d, 0x73, - 0x25, 0x2b, 0x71, 0xd7, 0x7e, 0x0f, 0x74, 0xd6, 0x71, 0x47, 0xc1, 0x01, - 0x7a, 0xa5, 0x25, 0xb2, - 0x4a, 0x56, 0xe2, 0x6d, 0xfc, 0x1e, 0xe8, 0x6f, 0xe2, 0x8e, 0x41, 0x02, - 0xf4, 0x89, 0x4a, 0xa7, - 0xb0, 0xcb, 0x37, 0x81, 0x25, 0x12, 0x39, 0xe8, 0x37, 0x63, 0x6b, 0x69, - 0x42, 0x0d, 0xb0, 0x8e, - 0x41, 0xa7, 0x6c, 0xd0, 0xda, 0xb6, 0xbf, 0x80, 0x6c, 0x94, 0xba, 0x50, - 0x59, 0x4c, 0x41, 0x76, - 0x30, 0xde, 0x6d, 0x39, 0x92, 0xff, 0x38, 0x28, 0x6d, 0xbd, 0x8c, 0x11, - 0xd6, 0x67, 0x30, 0xc3, - 0x33, 0x0a, 0xae, 0x6e, 0x32, 0x9c, 0xda, 0xcb, 0xae, 0x73, 0xf4, 0xa5, - 0xe3, 0xec, 0x33, 0xd3, - 0x65, 0xc0, 0x5c, 0x8b, 0xc4, 0x98, 0x95, 0xb6, 0x5c, 0x28, 0x53, 0x3d, - 0x30, 0x90, 0x65, 0x75, - 0x8b, 0xe4, 0xd4, 0x05, 0x91, 0x45, 0x56, 0x2f, 0xd4, 0xc4, 0x1c, 0x2a, - 0x39, 0xaf, 0x8b, 0x9c, - 0xef, 0x68, 0xc9, 0x02, 0x35, 0xfc, 0x9d, 0x79, 0xc9, 0x17, 0x67, 0x7b, - 0x1a, 0x46, 0xef, 0x58, - 0x09, 0x69, 0x0c, 0x66, 0xe6, 0xea, 0xeb, 0xec, 0x0c, 0x2f, 0xab, 0x8a, - 0x8b, 0x37, 0x09, 0x70, - 0x9b, 0xae, 0x4e, 0x12, 0x5e, 0x10, 0xff, 0x37, 0x4e, 0xaf, 0xd9, 0x25, - 0xca, 0x33, 0x9b, 0xdd, - 0x6f, 0x7d, 0x93, 0xba, 0x82, 0x11, 0x9c, 0xb9, 0x93, 0xc9, 0x80, 0x03, - 0x8e, 0x2c, 0x6f, 0x15, - 0x84, 0xe6, 0x9d, 0xcd, 0xf4, 0x69, 0xba, 0xc6, 0x9d, 0xb4, 0x47, 0x0b, - 0xd8, 0x4d, 0x84, 0xcc, - 0x15, 0xf5, 0x1c, 0xee, 0xec, 0xf0, 0x4c, 0xfe, 0x1c, 0xfa, 0x4d, 0x10, - 0xac, 0xc2, 0x15, 0x71, - 0x75, 0x8a, 0xc6, 0x9c, 0x0b, 0xcd, 0x3c, 0xae, 0xc6, 0x43, 0x96, 0x32, - 0xc3, 0x0c, 0x75, 0x34, - 0x61, 0x33, 0x9b, 0xfe, 0x87, 0x1c, 0x2e, 0xb0, 0x9b, 0x42, 0xf3, 0x4e, - 0x7c, 0xb7, 0x61, 0xf4, - 0xf9, 0x49, 0x16, 0xbb, 0x79, 0x6f, 0x33, 0x64, 0x16, 0x23, 0x52, 0xdf, - 0x83, 0x0f, 0xf9, 0x39, - 0x12, 0xd2, 0x18, 0xcc, 0x0f, 0x17, 0x15, 0x1b, 0x18, 0x5e, 0x95, 0xd7, - 0xd5, 0x6e, 0x12, 0xe0, - 0x70, 0x35, 0x40, 0x65, 0x28, 0x68, 0xd9, 0x48, 0x40, 0xd2, 0x1e, 0x2d, - 0x9c, 0x52, 0x70, 0x04, - 0xa3, 0x55, 0x6e, 0xc1, 0x4a, 0x24, 0x72, 0x13, 0x6e, 0xc6, 0xd6, 0xd2, - 0x84, 0x1a, 0xa3, 0xdf, - 0x9c, 0x89, 0x4a, 0x30, 0xbd, 0xf7, 0xa6, 0xd2, 0x4a, 0x0b, 0x01, 0xe2, - 0xb3, 0x9f, 0x9c, 0x4c, - 0x4e, 0xa5, 0x25, 0x18, 0xbf, 0x9a, 0x53, 0x69, 0x25, 0xe4, 0xe1, 0x71, - 0xb8, 0xae, 0x4e, 0x26, - 0xa9, 0xe8, 0xa1, 0xf0, 0x0c, 0xad, 0x7b, 0x1c, 0xa1, 0x27, 0x05, 0xec, - 0x3a, 0xa6, 0xa9, 0xbf, - 0x7b, 0xc4, 0xce, 0xd8, 0x0e, 0xc0, 0x8e, 0xa7, 0xce, 0xc8, 0xe5, 0x7f, - 0x31, 0x97, 0x7b, 0xd5, - 0x47, 0xcc, 0x29, 0x7e, 0x59, 0x70, 0xb8, 0x85, 0x29, 0xcb, 0x4a, 0xfb, - 0x33, 0x99, 0x47, 0x56, - 0xe9, 0x03, 0x8c, 0xac, 0xb6, 0x3a, 0x9a, 0x7c, 0x8c, 0x48, 0x97, 0xd0, - 0x70, 0x93, 0xe9, 0x78, - 0x7a, 0x88, 0x8f, 0x54, 0x6e, 0xe1, 0xd0, 0x47, 0x8f, 0x33, 0xcd, 0x13, - 0x22, 0xee, 0x7a, 0x64, - 0xf1, 0x6c, 0x5b, 0x51, 0xff, 0xa4, 0x86, 0x68, 0x5b, 0xf7, 0xd1, 0x39, - 0x1b, 0x41, 0xf1, 0xf8, - 0xc4, 0x0d, 0xb0, 0x91, 0x4e, 0xfe, 0x5b, 0xa6, 0xb0, 0xdb, 0xd5, 0x37, - 0x92, 0x78, 0xc4, 0x0b, - 0xaf, 0x83, 0xe4, 0x5e, 0x8f, 0x6b, 0x7c, 0x19, 0xe4, 0x78, 0xf5, 0x47, - 0x50, 0x73, 0xaf, 0x9f, - 0x68, 0x5a, 0x97, 0x98, 0x61, 0xf6, 0xc5, 0x5c, 0x97, 0x6d, 0x58, 0xc4, - 0xf7, 0x80, 0x68, 0x84, - 0xbe, 0x85, 0x3f, 0xc5, 0x20, 0x1f, 0x8b, 0xe1, 0x3f, 0xe8, 0x18, 0x24, - 0xb0, 0x96, 0xbe, 0x6f, - 0xbf, 0xc9, 0x7e, 0x49, 0x40, 0x3e, 0xd5, 0x01, 0x7e, 0x13, 0x30, 0x48, - 0xa3, 0xef, 0xbf, 0xde, - 0x2e, 0xda, 0xff, 0x6a, 0x58, 0xa7, 0x23, 0x39, 0xff, 0x5d, 0x3a, 0x53, - 0xd7, 0x60, 0x2e, 0x63, - 0x48, 0xce, 0x60, 0xb6, 0x3c, 0x5c, 0x54, 0x6c, 0x60, 0xbb, 0x11, 0xda, - 0xd2, 0x7b, 0x48, 0x06, - 0xce, 0xb0, 0x7f, 0xa0, 0x08, 0x77, 0x52, 0xa9, 0x7f, 0x3a, 0x06, 0x09, - 0x2c, 0xc4, 0xce, 0x6b, - 0x3d, 0x44, 0xa6, 0x2a, 0x37, 0x91, 0x68, 0xc2, 0xa6, 0xf8, 0x87, 0xe8, - 0x11, 0x77, 0x3d, 0x32, - 0x32, 0x46, 0xef, 0xe2, 0x52, 0xbd, 0x84, 0x2b, 0xef, 0x88, 0xdc, 0xc9, - 0xf0, 0x95, 0x32, 0x62, - 0xe6, 0x01, 0xc5, 0x64, 0xd3, 0x16, 0x76, 0x95, 0xc5, 0x38, 0xcc, 0xf1, - 0x91, 0x71, 0xe6, 0x28, - 0x6b, 0x8e, 0x54, 0xcf, 0xc1, 0x95, 0x27, 0xbf, 0x54, 0xa3, 0x20, 0x70, - 0xc2, 0x0b, 0x6b, 0x94, - 0xbb, 0x3a, 0xb9, 0x3c, 0x03, 0xba, 0x6e, 0x07, 0xb9, 0x79, 0x90, 0x3b, - 0xef, 0xc8, 0xbb, 0x5f, - 0x91, 0x13, 0x81, 0x23, 0x18, 0x99, 0xf6, 0x38, 0x81, 0x4e, 0x0a, 0x1b, - 0x74, 0x8f, 0x91, 0xbd, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x83, 0xc1, 0x99, 0xef, 0x17, 0x8e, 0xe3, 0x23, 0x99, 0x10, 0x9f, 0xcc, - 0xa1, 0xe1, 0x83, 0x5d, - 0xe0, 0x6a, 0x80, 0xca, 0x50, 0xd0, 0x71, 0x90, 0x80, 0x67, 0x3c, 0x5a, - 0xfb, 0xa4, 0xe0, 0x08, - 0x82, 0x8d, 0xd8, 0x63, 0x77, 0xaf, 0xbd, 0xc3, 0xd8, 0xeb, 0xb7, 0xa0, - 0xb2, 0x98, 0x82, 0xec, - 0xd7, 0x93, 0xe9, 0xd1, 0x21, 0xc8, 0x10, 0x5d, 0xe9, 0x7e, 0x68, 0x8c, - 0x54, 0x6f, 0xd7, 0x5a, - 0xf2, 0xb8, 0x98, 0x06, 0x5f, 0xc7, 0x64, 0x8b, 0x98, 0x39, 0xa9, 0x8d, - 0x2e, 0xca, 0xf2, 0xe8, - 0xcd, 0x64, 0xbc, 0xf7, 0xa8, 0x14, 0xb0, 0x4a, 0xbc, 0xf4, 0x7e, 0xbd, - 0x19, 0x4f, 0xcd, 0x7b, - 0x78, 0x10, 0x0d, 0x8f, 0xae, 0xa3, 0x6c, 0x44, 0x0d, 0x06, 0x9d, 0xcb, - 0x04, 0x1c, 0x78, 0xc5, - 0xc0, 0xfe, 0x77, 0xe4, 0x0d, 0x7a, 0xe0, 0xa0, 0x77, 0xb1, 0x75, 0x44, - 0xde, 0x5f, 0xc0, 0x8a, - 0x63, 0xab, 0x19, 0x25, 0x47, 0x5e, 0x92, 0xb3, 0x19, 0x77, 0xa3, 0x96, - 0x5a, 0x45, 0x63, 0x55, - 0x87, 0x32, 0x5e, 0x9a, 0x54, 0x0a, 0x58, 0x25, 0x5e, 0x7a, 0x3f, 0xbf, - 0xed, 0xc6, 0x87, 0xdc, - 0xfc, 0xf6, 0x90, 0x42, 0x5a, 0xca, 0xd6, 0x82, 0x90, 0xb2, 0xda, 0xc0, - 0xdc, 0x51, 0xfc, 0x09, - 0x94, 0xac, 0x07, 0xda, 0x3b, 0x3c, 0x13, 0xde, 0x07, 0xdf, 0x82, 0x04, - 0x2b, 0xd1, 0x94, 0x8d, - 0x08, 0x25, 0x4d, 0xea, 0x86, 0xcb, 0xb5, 0x0c, 0x4d, 0xd4, 0x83, 0xe6, - 0x98, 0x4e, 0x08, 0xc1, - 0x81, 0x59, 0x1b, 0x34, 0xd7, 0xcc, 0x5f, 0x20, 0x1b, 0x25, 0xcf, 0x14, - 0x87, 0x13, 0x81, 0xfc, - 0x17, 0x6d, 0x9e, 0x35, 0x2c, 0xb2, 0xf0, 0xfd, 0x9e, 0xcf, 0x1d, 0xc8, - 0x8a, 0x30, 0x17, 0xd0, - 0x62, 0xe7, 0x58, 0xa9, 0x27, 0x7f, 0xcc, 0x53, 0x58, 0x8c, 0x8b, 0xfa, - 0x49, 0x3c, 0x62, 0xe4, - 0xd8, 0x91, 0xa0, 0x19, 0x44, 0xe4, 0xfc, 0xb4, 0xa0, 0x0e, 0x33, 0xad, - 0xb5, 0x8d, 0xd8, 0x0a, - 0x31, 0x92, 0x2c, 0xb5, 0xf2, 0xde, 0x66, 0xc8, 0x2c, 0x46, 0xa4, 0x7d, - 0xc5, 0x1e, 0x31, 0x72, - 0x10, 0x4a, 0x9a, 0x17, 0xcf, 0x55, 0xa9, 0x18, 0x9a, 0x6b, 0xc5, 0x0f, - 0xf3, 0x9c, 0x10, 0x41, - 0x21, 0xd8, 0xb6, 0xa2, 0x3d, 0x8b, 0xcf, 0xd0, 0xb6, 0x2d, 0x61, 0x72, - 0x36, 0x82, 0x21, 0x33, - 0xda, 0x09, 0x22, 0xc2, 0x84, 0xa6, 0x40, 0xb7, 0x22, 0x3b, 0x63, 0x75, - 0x93, 0x7f, 0xda, 0xab, - 0x66, 0x14, 0x9f, 0xdc, 0x64, 0xfb, 0x77, 0x55, 0x9f, 0xe6, 0x2b, 0x89, - 0x05, 0x1b, 0x66, 0x65, - 0x39, 0xb7, 0x61, 0x5f, 0x74, 0x15, 0xd3, 0xc4, 0x61, 0x92, 0x27, 0x9b, - 0x5d, 0x50, 0x39, 0xb3, - 0xfd, 0xba, 0xd1, 0xce, 0x3a, 0xeb, 0x88, 0x62, 0xd1, 0x49, 0xf2, 0xac, - 0xcf, 0x28, 0xfd, 0xb8, - 0x0e, 0x4e, 0x08, 0x44, 0x05, 0x0d, 0xb2, 0x09, 0x08, 0x8b, 0x73, 0x4d, - 0xf2, 0x9b, 0x0e, 0xe1, - 0x6e, 0x31, 0xd2, 0x36, 0xe2, 0x30, 0xc2, 0x59, 0xd2, 0x32, 0xa8, 0x6f, - 0x9d, 0x55, 0x6e, 0xa4, - 0x8f, 0x17, 0x13, 0x70, 0xd2, 0xc1, 0xed, 0x29, 0x13, 0xae, 0xbc, 0x59, - 0x75, 0x88, 0x8f, 0x1d, - 0x99, 0x36, 0xcc, 0xc9, 0x9e, 0x52, 0x43, 0x34, 0xcc, 0x9a, 0x89, 0xfd, - 0xec, 0xc1, 0x99, 0x7c, - 0x6d, 0xe5, 0x11, 0x61, 0x42, 0x53, 0x20, 0xba, 0x11, 0xfc, 0xd0, 0xdb, - 0xa8, 0xde, 0x6d, 0xb4, - 0xf3, 0xf4, 0xd9, 0x8a, 0x3f, 0xe6, 0x3a, 0x6b, 0xd9, 0xc2, 0x81, 0xe1, - 0x3d, 0xb3, 0xf3, 0x59, - 0xde, 0xfa, 0xe5, 0xb7, 0xc7, 0x22, 0xfb, 0xb1, 0xe5, 0x51, 0xc3, 0x06, - 0xdf, 0x58, 0xde, 0x2a, - 0x88, 0x30, 0x17, 0x52, 0x31, 0x26, 0xb4, 0xcc, 0x17, 0x0a, 0x64, 0x9e, - 0x0c, 0x24, 0x88, 0x8c, - 0x0d, 0x9a, 0xcb, 0x13, 0xa5, 0x6e, 0x50, 0xea, 0xcb, 0x45, 0x0b, 0xf9, - 0xc7, 0x10, 0x0d, 0xf1, - 0x8d, 0x8f, 0x91, 0xab, 0x12, 0x83, 0x51, 0x2a, 0x91, 0x9b, 0xec, 0x81, - 0x53, 0x7a, 0x8d, 0xbc, - 0xd4, 0x47, 0x2a, 0x86, 0x81, 0xab, 0xf2, 0xbe, 0x2a, 0xb0, 0x10, 0x38, - 0x61, 0xe4, 0xd4, 0x4a, - 0x5b, 0x50, 0x39, 0xf6, 0x53, 0x6a, 0x1f, 0x97, 0x39, 0x1e, 0xac, 0x61, - 0x14, 0x6c, 0x5b, 0x57, - 0xd1, 0xf8, 0xac, 0x7f, 0xa2, 0x0e, 0x17, 0x58, 0xac, 0x21, 0x98, 0x27, - 0x3e, 0xba, 0xd1, 0x7a, - 0x5d, 0x3b, 0x7c, 0x58, 0xd0, 0xac, 0x18, 0x92, 0x7c, 0x41, 0x5c, 0xca, - 0x7e, 0xb9, 0x5d, 0x77, - 0x03, 0xd4, 0xc3, 0x57, 0xa0, 0x63, 0xe2, 0xe3, 0xc3, 0xce, 0x78, 0xb4, - 0x35, 0x8b, 0x03, 0x10, - 0xc8, 0xdb, 0x3a, 0x0e, 0x8b, 0xb1, 0x55, 0xac, 0x3a, 0x65, 0xf6, 0xa2, - 0x46, 0x11, 0xc8, 0x4b, - 0xc1, 0xb2, 0x36, 0x68, 0x6d, 0x5b, 0xbe, 0x40, 0x36, 0x4a, 0x5d, 0x28, - 0xcd, 0x26, 0xc1, 0x3b, - 0x77, 0x12, 0x44, 0x47, 0xcb, 0x8f, 0x80, 0xad, 0x44, 0x76, 0xc6, 0xea, - 0xe5, 0xfe, 0x77, 0x95, - 0x3a, 0x63, 0xa2, 0x08, 0xd4, 0x76, 0x31, 0x27, 0xa2, 0x5c, 0x5f, 0x2f, - 0x68, 0xdb, 0x3a, 0xa3, - 0xf6, 0x4b, 0x5f, 0x73, 0x1c, 0x43, 0xdf, 0x8d, 0x5f, 0x53, 0x09, 0xfe, - 0x62, 0xed, 0xf6, 0x69, - 0xb9, 0xa2, 0x3b, 0xe7, 0xc3, 0xf8, 0xd2, 0x04, 0x3b, 0x4c, 0xc0, 0xe3, - 0xc9, 0x3a, 0xb9, 0xfe, - 0xa1, 0xcd, 0xec, 0x1a, 0x8a, 0x66, 0xce, 0x10, 0xec, 0xf3, 0x86, 0x0a, - 0xa2, 0xe8, 0xa1, 0x7e, - 0xc6, 0x95, 0x32, 0x4a, 0x8e, 0xbc, 0xe7, 0xa5, 0x32, 0xee, 0x85, 0xef, - 0xb4, 0x8a, 0xc6, 0xaa, - 0x7d, 0xaf, 0x8b, 0x76, 0x8d, 0x06, 0x89, 0xa2, 0x8b, 0x97, 0x15, 0xd4, - 0x5b, 0x42, 0x7d, 0xf5, - 0x24, 0x67, 0x30, 0x5b, 0x1e, 0x2e, 0x2a, 0x36, 0x30, 0xbc, 0xe9, 0x6d, - 0x69, 0xdc, 0x24, 0x03, - 0xdf, 0xb6, 0xa4, 0x3b, 0xa7, 0x03, 0xa5, 0x51, 0xa4, 0xaa, 0xeb, 0x6a, - 0xcc, 0x21, 0xdf, 0x9b, - 0x64, 0x8c, 0x1d, 0x07, 0xa4, 0xb9, 0xcb, 0x56, 0x1d, 0xd3, 0x7b, 0x51, - 0x23, 0xe9, 0x64, 0xc4, - 0x23, 0x40, 0x34, 0x79, 0xfd, 0xc9, 0x73, 0xd3, 0x34, 0x18, 0x31, 0xaa, - 0x10, 0x70, 0x23, 0x92, - 0x73, 0xe1, 0x83, 0x32, 0x88, 0x0b, 0x3b, 0xab, 0x83, 0x1c, 0x66, 0x99, - 0xa9, 0xd9, 0x73, 0x14, - 0x69, 0x16, 0xd6, 0x14, 0x01, 0xd7, 0x9b, 0xbc, 0xd6, 0x96, 0x70, 0xa8, - 0xe4, 0xf9, 0x69, 0x35, - 0x18, 0x6f, 0xd7, 0xfd, 0x49, 0x9e, 0x1c, 0x14, 0xd7, 0xbf, 0x46, 0xe9, - 0x6b, 0xd2, 0x18, 0x80, - 0xbc, 0x1d, 0xbd, 0x1e, 0xe0, 0x5d, 0x37, 0xe2, 0xbd, 0xdd, 0x48, 0xfc, - 0x96, 0x64, 0xbc, 0xce, - 0x42, 0x73, 0xaf, 0x87, 0x7a, 0xd5, 0x5d, 0x63, 0xaf, 0x5a, 0xc2, 0xe4, - 0x6c, 0xc7, 0x42, 0x66, - 0x1f, 0x48, 0xd3, 0xdf, 0xaa, 0x79, 0x45, 0xf1, 0xd3, 0x1b, 0x9e, 0x2e, - 0x12, 0x7e, 0x1f, 0x11, - 0x98, 0x7a, 0x8d, 0x45, 0xfe, 0x73, 0x1d, 0xd4, 0x8d, 0x61, 0xa1, 0x91, - 0xff, 0xb8, 0x98, 0xcd, - 0x53, 0x75, 0x74, 0x1c, 0xd5, 0xa1, 0xaa, 0x9b, 0x74, 0xca, 0x2f, 0x87, - 0x8c, 0x22, 0x53, 0x96, - 0xe4, 0x99, 0x47, 0xbf, 0x13, 0x54, 0xca, 0x96, 0x47, 0x0d, 0x9c, 0x29, - 0xb7, 0x83, 0xe4, 0x89, - 0xae, 0xcf, 0xa5, 0xd2, 0xef, 0x4a, 0x22, 0xf9, 0xa5, 0x83, 0xdd, 0x2b, - 0x43, 0x0a, 0xae, 0x2e, - 0xd9, 0xdd, 0xe1, 0x95, 0x24, 0xc5, 0xa2, 0x54, 0xe1, 0xf5, 0x1b, 0xc1, - 0xa6, 0xf4, 0xd9, 0xbb, - 0x22, 0x0c, 0x75, 0xf5, 0x9d, 0xe8, 0x2d, 0x33, 0x75, 0xe3, 0x19, 0xc6, - 0x03, 0x09, 0x22, 0x23, - 0x52, 0x39, 0x35, 0x90, 0xb5, 0x80, 0xf4, 0x7b, 0x35, 0x31, 0x07, 0xeb, - 0x9f, 0x5b, 0x52, 0x27, - 0x05, 0xbf, 0x86, 0xf9, 0x23, 0xa5, 0xe5, 0xe6, 0x86, 0x91, 0x88, 0x1f, - 0x5f, 0x5e, 0x05, 0x30, - 0x6c, 0xa9, 0x50, 0xed, 0x22, 0x72, 0x7e, 0x5a, 0x50, 0x07, 0xf8, 0xb7, - 0xbb, 0xa7, 0x6c, 0x05, - 0xd3, 0x60, 0x2e, 0xa4, 0x62, 0x4c, 0xab, 0x5b, 0x2e, 0x14, 0xc8, 0xff, - 0x18, 0x48, 0xd3, 0xdb, - 0xff, 0x22, 0x53, 0x15, 0xfa, 0xa9, 0x34, 0x61, 0x53, 0x7c, 0xa2, 0x74, - 0xe9, 0xda, 0xff, 0x19, - 0x9a, 0xe2, 0x0f, 0x9e, 0x3e, 0x31, 0xa1, 0xd7, 0x0f, 0x54, 0xf1, 0x49, - 0xd9, 0x4a, 0x9a, 0x6c, - 0x2c, 0x42, 0x7d, 0xb1, 0x98, 0xe5, 0x9f, 0x3a, 0x7d, 0x68, 0x6a, 0x8b, - 0xf1, 0x92, 0x2c, 0xc2, - 0x29, 0xfd, 0xfb, 0x48, 0xbb, 0x40, 0x7a, 0xdc, 0xfb, 0xf9, 0xe2, 0x94, - 0xae, 0xcc, 0x29, 0xf2, - 0x5e, 0xef, 0xbf, 0x0f, 0x70, 0xcf, 0xfa, 0x71, 0xbf, 0x8f, 0x24, 0x7e, - 0x4b, 0x32, 0x5e, 0x67, - 0x57, 0x86, 0xb3, 0x69, 0x96, 0x25, 0x11, 0x9d, 0xb3, 0xa0, 0x8f, 0xf4, - 0xc0, 0x05, 0x57, 0x17, - 0xed, 0xf0, 0x4b, 0xd9, 0xf5, 0xbe, 0x21, 0x7a, 0x4b, 0x22, 0x37, 0xa3, - 0x3c, 0xb4, 0xed, 0xf9, - 0x46, 0x80, 0x68, 0xf2, 0x39, 0x51, 0xe6, 0x65, 0x68, 0x30, 0x62, 0x97, - 0x20, 0xe0, 0x46, 0xe7, - 0x34, 0x2d, 0xaa, 0x4c, 0xd1, 0x7b, 0x83, 0x2e, 0xaa, 0xd7, 0x2c, 0x62, - 0x9a, 0x40, 0x34, 0x42, - 0x72, 0xad, 0xc2, 0xbe, 0xe8, 0x2a, 0x65, 0x4b, 0xc2, 0xe7, 0x4e, 0xf5, - 0xba, 0xa0, 0x72, 0xa5, - 0xb5, 0x74, 0xb1, 0x78, 0x06, 0xb7, 0xdc, 0x0e, 0xb1, 0xf2, 0xe3, 0x76, - 0x1d, 0x53, 0xb5, 0xbe, - 0x11, 0x06, 0xdb, 0x9b, 0xaf, 0x74, 0xf7, 0xf8, 0xdb, 0x90, 0xed, 0x63, - 0xe0, 0xe5, 0x11, 0xf0, - 0xe2, 0xf2, 0x02, 0x11, 0x90, 0x92, 0xcd, 0x93, 0x02, 0x52, 0x6c, 0x82, - 0xdd, 0x56, 0xe2, 0xa9, - 0xd6, 0xdf, 0xa8, 0x5d, 0x41, 0xe9, 0x4e, 0xbd, 0xa8, 0x85, 0x40, 0xe0, - 0x47, 0x16, 0xd6, 0xeb, - 0xee, 0x24, 0x88, 0x8e, 0x55, 0xdd, 0xc3, 0x99, 0x88, 0xec, 0x4f, 0x17, - 0x09, 0x3f, 0xee, 0xe9, - 0x90, 0x5f, 0xc0, 0xaf, 0x78, 0xb8, 0xa8, 0xd8, 0xc0, 0xb5, 0x22, 0x77, - 0x67, 0xf6, 0x90, 0x0c, - 0x14, 0xb9, 0x5d, 0x62, 0x8c, 0xd1, 0x12, 0x1e, 0x5d, 0x01, 0x65, 0x7c, - 0xbf, 0xbb, 0x14, 0xc0, - 0x3e, 0x90, 0x65, 0x7d, 0x97, 0xf2, 0x8a, 0x21, 0x65, 0x36, 0xff, 0x5c, - 0x24, 0xfc, 0x3e, 0x22, - 0x86, 0x7e, 0x1f, 0x16, 0x34, 0x2b, 0x06, 0xc5, 0x1f, 0x81, 0x17, 0xd3, - 0xfe, 0xbf, 0x86, 0x6d, - 0x49, 0x82, 0x21, 0x3a, 0x5c, 0x7d, 0x0a, 0x8c, 0x21, 0x40, 0x39, 0xb6, - 0xc1, 0x02, 0x49, 0xb7, - 0xf7, 0x07, 0x1e, 0xff, 0x7c, 0x62, 0x81, 0x6d, 0x1e, 0xa8, 0x21, 0x92, - 0x71, 0x94, 0xf7, 0xd8, - 0x0a, 0xbd, 0xcf, 0x31, 0x46, 0x89, 0x09, 0x0f, 0xcf, 0xe1, 0xd3, 0x3e, - 0xbe, 0xbc, 0x0a, 0x60, - }, - { /* 3 */ - 0xa8, 0x78, 0x41, 0x9a, 0x63, 0x9a, 0xaa, 0xcc, 0x6d, 0x6b, 0xb6, 0x2d, - 0xbf, 0x63, 0x8e, 0x1b, - 0xb4, 0x31, 0xad, 0x42, 0xc9, 0x42, 0x37, 0x9b, 0xc6, 0x80, 0x29, 0xcb, - 0xc0, 0xc9, 0x15, 0xf8, - 0x96, 0xde, 0x29, 0xd5, 0x90, 0xd5, 0x18, 0x10, 0xbc, 0xed, 0x40, 0xd2, - 0x7a, 0x90, 0xf0, 0x4e, - 0x1e, 0xe4, 0x7c, 0xcc, 0x37, 0xcc, 0xa4, 0x79, 0x97, 0x9a, 0x27, 0xb6, - 0xd7, 0x37, 0xe2, 0xd3, - 0x8a, 0x97, 0xc5, 0x0d, 0x3a, 0x0d, 0x85, 0x47, 0x17, 0x06, 0xdf, 0x34, - 0x05, 0x3a, 0x6b, 0xad, - 0xf5, 0x02, 0xcd, 0x8d, 0x2d, 0x8d, 0xe6, 0x05, 0x54, 0x61, 0x14, 0x71, - 0xb0, 0x2d, 0x33, 0x2f, - 0x9f, 0x98, 0x64, 0x8f, 0x0e, 0x8f, 0x01, 0xbf, 0x52, 0x33, 0xb9, 0x79, - 0xcb, 0x0e, 0x0a, 0x96, - 0xa5, 0xa7, 0xef, 0xe8, 0x04, 0xe8, 0xc1, 0x3f, 0xfb, 0x57, 0xfc, 0x26, - 0x9d, 0x04, 0x86, 0xa3, - 0x13, 0x3b, 0xd2, 0xbe, 0x50, 0xbe, 0xcf, 0x8a, 0x01, 0xa6, 0x6d, 0xbd, - 0xf5, 0x50, 0xea, 0x6b, - 0x39, 0x25, 0x53, 0x79, 0x38, 0x79, 0x04, 0xb9, 0x8b, 0xcc, 0xa1, 0x27, - 0xaa, 0x38, 0x28, 0x1d, - 0xac, 0xe1, 0xa2, 0xb2, 0x9a, 0xb2, 0xd8, 0x90, 0x15, 0x89, 0x05, 0x8d, - 0x2c, 0x9a, 0x7c, 0x7b, - 0x2d, 0x9d, 0xba, 0xf1, 0xa3, 0xf1, 0x7d, 0x56, 0xd0, 0x20, 0x9b, 0x42, - 0x30, 0xa3, 0x94, 0x3e, - 0x83, 0xd1, 0x88, 0x57, 0xa4, 0x57, 0x9c, 0xe8, 0xf9, 0xd8, 0x26, 0x9f, - 0xb4, 0xa4, 0x91, 0x75, - 0x86, 0xff, 0x23, 0x75, 0xf2, 0x75, 0x13, 0xa3, 0x9f, 0xe3, 0xc9, 0x17, - 0x73, 0xf2, 0xbe, 0x0d, - 0xb9, 0xee, 0x03, 0x30, 0xae, 0x30, 0x5c, 0x68, 0x50, 0xbc, 0x63, 0xc0, - 0xe2, 0xae, 0x1d, 0x40, - 0x76, 0xd3, 0x45, 0xda, 0x89, 0xda, 0x7a, 0xed, 0xad, 0xb9, 0x32, 0xee, - 0x04, 0x89, 0xa2, 0x5a, - 0x0f, 0x72, 0x3e, 0x66, 0xfa, 0x66, 0x52, 0xdd, 0xaa, 0x4d, 0xf2, 0x5b, - 0x8a, 0xfa, 0x71, 0x88, - 0x5a, 0xf9, 0xb7, 0x21, 0x85, 0x21, 0xfa, 0xac, 0x63, 0x40, 0xf5, 0x84, - 0x60, 0x85, 0xeb, 0x7c, - 0xa0, 0x89, 0x44, 0xca, 0x52, 0xca, 0x4e, 0x74, 0x9d, 0x6c, 0x13, 0xae, - 0x5a, 0x52, 0xa9, 0xdb, - 0x92, 0x47, 0xca, 0xfd, 0x69, 0xfd, 0x6a, 0x4c, 0xc4, 0x0f, 0xf3, 0x72, - 0xe9, 0x69, 0x02, 0x2e, - 0xe2, 0xa0, 0xfc, 0x1b, 0x84, 0x1b, 0x5b, 0xd3, 0x2d, 0x25, 0xca, 0x6c, - 0xd6, 0x84, 0x2b, 0x24, - 0x34, 0xfa, 0xfd, 0x0b, 0x5f, 0x0b, 0x6f, 0x4a, 0x1d, 0xf0, 0xeb, 0x2c, - 0x88, 0x5f, 0x20, 0xa5, - 0xee, 0xc8, 0x1a, 0x63, 0x4c, 0x63, 0xcd, 0x37, 0xa5, 0xc0, 0xdc, 0x4f, - 0xa0, 0x4c, 0xfe, 0x84, - 0x6d, 0x19, 0x92, 0x34, 0xe8, 0x34, 0x51, 0xdf, 0x5c, 0x18, 0xfa, 0xd0, - 0x14, 0xe8, 0x6f, 0xf1, - 0x1a, 0x7d, 0x9f, 0xe4, 0xce, 0xe4, 0xd6, 0x25, 0xef, 0x78, 0x94, 0x16, - 0x44, 0xce, 0x10, 0xb3, - 0x24, 0xdb, 0xf7, 0xab, 0x3d, 0xab, 0x64, 0xf9, 0x3e, 0xfe, 0x62, 0xe9, - 0x81, 0x3d, 0x6e, 0xe6, - 0x1f, 0x53, 0x34, 0xc6, 0x98, 0xc6, 0x59, 0x6e, 0x89, 0x43, 0x7b, 0x9e, - 0x83, 0x98, 0x3f, 0xcb, - 0xd2, 0xc3, 0xe2, 0x38, 0x22, 0x38, 0x46, 0xc5, 0x48, 0x37, 0x92, 0xe0, - 0xcd, 0x22, 0xf9, 0xe1, - 0x18, 0xd0, 0x0f, 0xf0, 0x53, 0xf0, 0xef, 0x0b, 0xd3, 0x09, 0x2c, 0x46, - 0xec, 0x53, 0x69, 0x83, - 0x37, 0xe0, 0x25, 0x15, 0x6d, 0x15, 0xab, 0x73, 0x3f, 0x58, 0x0f, 0x54, - 0x74, 0x6d, 0x84, 0x8d, - 0x6a, 0x9a, 0xa9, 0x02, 0x23, 0x02, 0xe7, 0xba, 0x06, 0x52, 0xad, 0x08, - 0x7b, 0x23, 0x39, 0xb9, - 0x3f, 0x11, 0x20, 0x45, 0x5c, 0x45, 0x4f, 0xcb, 0xcf, 0x5f, 0xaa, 0xd7, - 0x91, 0x5c, 0xa3, 0x4d, - 0xae, 0x4c, 0x32, 0xa6, 0x07, 0xa6, 0xe1, 0xbe, 0x29, 0xf8, 0xbd, 0xdd, - 0x84, 0x07, 0x05, 0x4b, - 0x10, 0x21, 0x0a, 0xa0, 0x62, 0xa0, 0x0b, 0xb3, 0x23, 0x0e, 0x89, 0xc5, - 0x09, 0x62, 0x4e, 0x43, - 0x46, 0xb0, 0x5b, 0xf9, 0x2f, 0xf9, 0x67, 0xfb, 0xc8, 0xab, 0x6a, 0x62, - 0x1f, 0x2f, 0x70, 0x9f, - 0x6c, 0xae, 0xda, 0x3e, 0x47, 0x3e, 0xac, 0xc8, 0x42, 0xc1, 0xa6, 0xf8, - 0x40, 0x47, 0xb2, 0xe9, - 0xbc, 0xc0, 0xa8, 0x12, 0xf8, 0x12, 0xd3, 0x23, 0x36, 0x87, 0x8c, 0x48, - 0x25, 0xf8, 0x32, 0x38, - 0x68, 0x37, 0x39, 0x16, 0xbe, 0x16, 0xde, 0x94, 0x3a, 0x23, 0x15, 0x58, - 0xd3, 0xbe, 0x40, 0x89, - 0x0b, 0xeb, 0xdd, 0x4e, 0x03, 0x4e, 0x20, 0x81, 0xd2, 0xaf, 0x41, 0xfb, - 0x19, 0x03, 0x83, 0xe8, - 0x3e, 0xa6, 0x68, 0x4f, 0xf3, 0x4f, 0xb2, 0xdc, 0xd1, 0x86, 0xf6, 0xff, - 0xc5, 0xf3, 0x7e, 0x55, - 0xfe, 0xe9, 0x10, 0xc3, 0x2e, 0xc3, 0xc6, 0x84, 0x86, 0xce, 0x55, 0x8a, - 0xa9, 0x2e, 0xb0, 0xc7, - 0xa9, 0xcf, 0x09, 0x90, 0xcc, 0x90, 0x57, 0xdb, 0x73, 0xb2, 0xea, 0x05, - 0xeb, 0xcc, 0x53, 0x03, - 0x28, 0xb3, 0x11, 0xd3, 0xf5, 0xd3, 0xf2, 0x1d, 0xb6, 0x1b, 0x74, 0xca, - 0xf7, 0xf5, 0xbb, 0x46, - 0x7c, 0x8f, 0xd0, 0x9e, 0x25, 0x9e, 0xa7, 0x7b, 0x61, 0xcf, 0x2f, 0x3d, - 0x49, 0x25, 0xfc, 0xaa, - 0xf2, 0x81, 0xf6, 0xbb, 0xe6, 0xbb, 0x50, 0x60, 0x0e, 0x2b, 0x43, 0xa9, - 0xdf, 0xe6, 0x65, 0x67, - 0xbf, 0xda, 0x70, 0x0c, 0xca, 0x0c, 0x17, 0x1a, 0x14, 0x2f, 0x68, 0x30, - 0xd9, 0xca, 0x96, 0x10, - 0xf4, 0xb5, 0x85, 0x87, 0x82, 0x87, 0x1b, 0x12, 0x4a, 0xb8, 0x48, 0x59, - 0xe4, 0x82, 0xee, 0x37, - 0xcb, 0xa4, 0xa5, 0xc2, 0xde, 0xc2, 0x54, 0xd9, 0x85, 0xe7, 0xe2, 0x8e, - 0x75, 0xde, 0x4d, 0x7a, - 0x06, 0x34, 0x73, 0x3c, 0x64, 0x3c, 0x4b, 0x72, 0x44, 0x93, 0x0b, 0xf0, - 0x3b, 0x64, 0x8b, 0x50, - 0xf8, 0xdd, 0x63, 0xff, 0x4a, 0xff, 0x8d, 0xf6, 0xc2, 0x5d, 0x5e, 0x7a, - 0x92, 0x4a, 0x3b, 0x97, - 0xbd, 0x77, 0xe0, 0x18, 0x57, 0x18, 0x2e, 0x34, 0x28, 0x5e, 0xd0, 0x60, - 0x71, 0x57, 0xef, 0x20, - 0x75, 0xc9, 0x9d, 0xc4, 0xbb, 0xc4, 0xbe, 0xd4, 0x8f, 0x11, 0xd6, 0x96, - 0xf8, 0xbb, 0x06, 0x72, - 0x03, 0x1a, 0xd8, 0x1e, 0x32, 0x1e, 0xc4, 0x39, 0x22, 0xa8, 0xe4, 0x78, - 0xfc, 0x32, 0xa4, 0x28, - 0x4c, 0xec, 0xce, 0xbd, 0x83, 0xbd, 0xba, 0x6d, 0x04, 0xdd, 0x77, 0xb1, - 0x52, 0x83, 0x2e, 0x6f, - 0x4b, 0x6f, 0xf5, 0x8b, 0x48, 0x8b, 0x0c, 0x08, 0x5e, 0x97, 0x20, 0x69, - 0x3d, 0x48, 0x78, 0x27, - 0xc0, 0x4f, 0x78, 0x8c, 0xdd, 0x8c, 0x74, 0x58, 0x57, 0x48, 0xa3, 0x75, - 0x6c, 0xdd, 0xce, 0x92, - 0x04, 0x99, 0xe3, 0x28, 0xf9, 0x28, 0x72, 0x5c, 0x78, 0xe2, 0xb3, 0xa0, - 0x93, 0xf9, 0xf2, 0x60, - 0xb3, 0xb2, 0x96, 0x74, 0x02, 0x74, 0x81, 0xfe, 0x9c, 0xca, 0x7e, 0x13, - 0xaf, 0x02, 0x43, 0xb0, - 0xb6, 0x9c, 0x3d, 0x56, 0x54, 0x56, 0x0e, 0xb5, 0xfa, 0xf1, 0x91, 0x9b, - 0x68, 0x54, 0x6c, 0xc8, - 0x51, 0x12, 0x6a, 0x6f, 0x86, 0x6f, 0xda, 0x2d, 0xb1, 0xef, 0xb4, 0x7f, - 0x79, 0x86, 0x68, 0x94, - 0xeb, 0xe6, 0xb1, 0x41, 0x1a, 0x41, 0x42, 0x7c, 0xc3, 0xfb, 0x33, 0xc7, - 0x67, 0x1a, 0xd1, 0xfc, - 0x98, 0x1b, 0x5f, 0xb9, 0xc5, 0xb9, 0xb7, 0xda, 0x08, 0x79, 0xee, 0xa1, - 0xa4, 0xc5, 0x5c, 0xde, - 0x23, 0x58, 0xcc, 0x9d, 0xf6, 0x9d, 0xd2, 0x9c, 0x64, 0xb4, 0x35, 0x31, - 0xee, 0xf6, 0x38, 0xae, - 0xab, 0x62, 0x99, 0x84, 0x51, 0x84, 0x6e, 0xf5, 0x4f, 0xc3, 0x52, 0x55, - 0x43, 0x51, 0x2a, 0x33, - 0xb2, 0x05, 0xde, 0x7e, 0xad, 0x7e, 0x7c, 0xe9, 0x82, 0x13, 0x22, 0x3b, - 0xfb, 0xad, 0x9e, 0xa8, - 0x99, 0xac, 0x17, 0xb3, 0x6a, 0xb3, 0x4a, 0xcd, 0x16, 0xa0, 0xb2, 0x89, - 0xf0, 0x6a, 0x81, 0xc6, - 0x89, 0x8d, 0x1d, 0x13, 0x08, 0x13, 0x41, 0x7e, 0x35, 0xae, 0x3b, 0x4c, - 0xf9, 0x08, 0xcf, 0x85, - 0xdf, 0x1c, 0x4c, 0x4a, 0x45, 0x4a, 0x2d, 0x36, 0xde, 0x0b, 0xd8, 0xeb, - 0xef, 0x45, 0xf1, 0x59, - 0x0d, 0xdf, 0xae, 0x72, 0x67, 0x72, 0x6b, 0xf3, 0x96, 0x3c, 0x4a, 0x0b, - 0x22, 0x67, 0x08, 0xb8, - 0x31, 0xd4, 0x56, 0x29, 0x09, 0x29, 0xe0, 0x01, 0x7b, 0xcb, 0x04, 0xa4, - 0x4f, 0x09, 0x0f, 0xdd, - 0x70, 0xe7, 0x36, 0xe6, 0xed, 0xe6, 0x31, 0x9f, 0xe9, 0x2a, 0x39, 0x1e, - 0x3f, 0xed, 0x29, 0x0a, - 0x73, 0xfd, 0xee, 0xf8, 0xdf, 0xf8, 0xf5, 0xa6, 0xcb, 0x82, 0xdd, 0x66, - 0xc3, 0xdf, 0x8d, 0x22, - 0x1d, 0xfe, 0xa4, 0xd2, 0x05, 0xd2, 0x60, 0x40, 0xb5, 0x32, 0xc3, 0xce, - 0x2b, 0x05, 0x46, 0xfb, - 0x8d, 0x14, 0xfe, 0x3b, 0xf1, 0x3b, 0x33, 0x22, 0x4d, 0x4c, 0x88, 0xec, - 0x6a, 0xf1, 0x3d, 0xe5, - 0xf1, 0x9b, 0x2e, 0xa5, 0xd4, 0xa5, 0x94, 0x59, 0x2c, 0x83, 0xa7, 0xd1, - 0x23, 0xd4, 0xc1, 0x4f, - 0x7d, 0x38, 0x98, 0x94, 0x8a, 0x94, 0x5a, 0x6c, 0x7f, 0x16, 0x73, 0x15, - 0x1d, 0x8a, 0x21, 0xb2, - 0x17, 0xa2, 0x31, 0x96, 0xa9, 0x96, 0xbd, 0xd6, 0x79, 0x44, 0xde, 0x1d, - 0x66, 0xa9, 0x18, 0x0b, - 0x2c, 0x2a, 0xf2, 0xfb, 0x0c, 0xfb, 0x80, 0x41, 0xce, 0xf9, 0xc7, 0x6a, - 0x64, 0x0c, 0x49, 0x26, - 0x35, 0x4d, 0xb5, 0x01, 0xf0, 0x01, 0x92, 0x5d, 0x03, 0x29, 0xb7, 0x04, - 0xdc, 0xf0, 0xfd, 0xbd, - 0x88, 0x3a, 0x55, 0x19, 0xa7, 0x19, 0xbc, 0x69, 0x2b, 0x77, 0x67, 0x64, - 0xad, 0xa7, 0x12, 0x9d, - 0x67, 0x45, 0x07, 0x70, 0x44, 0x70, 0x8c, 0x49, 0x90, 0x6e, 0xe7, 0x03, - 0x59, 0x44, 0x31, 0x01, - 0xe1, 0xba, 0x24, 0x05, 0xb6, 0x05, 0x9f, 0xea, 0x0f, 0x8d, 0x2e, 0x14, - 0x2a, 0xb6, 0x8f, 0x0c, - 0xb5, 0x86, 0xe5, 0x48, 0x66, 0x48, 0xca, 0x8c, 0xd8, 0x59, 0x75, 0xe3, - 0x94, 0x66, 0xc8, 0xe0, - 0x64, 0x5f, 0xdf, 0x6e, 0x76, 0x6e, 0x48, 0x70, 0xb2, 0xc6, 0x03, 0x7b, - 0xa5, 0x76, 0x95, 0x29, - 0xb1, 0x1f, 0x06, 0x60, 0x9f, 0x60, 0xb8, 0xd0, 0xa0, 0xbb, 0xc6, 0x43, - 0x07, 0x9f, 0x3a, 0x80, - 0x08, 0xf1, 0x05, 0x50, 0x31, 0x50, 0xe4, 0xb8, 0xf0, 0x07, 0xa5, 0x83, - 0xe5, 0x31, 0x27, 0xc0, - 0xe5, 0x23, 0xc7, 0x2d, 0x4f, 0x2d, 0xed, 0xb6, 0x77, 0x6f, 0x9d, 0xb4, - 0xb9, 0x4f, 0x7d, 0x6c, - 0x1c, 0x49, 0xec, 0xd8, 0xaa, 0xd8, 0x9d, 0x57, 0xab, 0xeb, 0x9f, 0xe6, - 0x7f, 0xaa, 0x9b, 0xe3, - 0x6b, 0x2d, 0xe1, 0x08, 0x8c, 0x08, 0x1a, 0xad, 0x18, 0x8b, 0xf1, 0x20, - 0x2f, 0x8c, 0xe4, 0xa1, - 0x5c, 0xcd, 0xc4, 0x1d, 0xe1, 0x1d, 0xb1, 0xde, 0x27, 0xd3, 0xfe, 0x74, - 0x5b, 0xe1, 0x60, 0x2c, - 0xa3, 0x93, 0x9c, 0xd4, 0x60, 0xd4, 0x8a, 0x4d, 0xbf, 0xc4, 0xf7, 0xd6, - 0xa6, 0x60, 0x0d, 0xf3, - 0x7a, 0xbb, 0xa3, 0xa2, 0x41, 0xa2, 0xec, 0x09, 0x25, 0x5c, 0x24, 0xcd, - 0x72, 0x41, 0x77, 0xfa, - 0xe8, 0xfc, 0x69, 0x5f, 0x28, 0x5f, 0x86, 0x45, 0xe1, 0x53, 0xd7, 0xbf, - 0x9b, 0x28, 0x75, 0xd4, - 0xda, 0x32, 0xe7, 0x68, 0x13, 0x68, 0xa2, 0x7d, 0xb8, 0x30, 0x37, 0x63, - 0x28, 0x13, 0xde, 0x21, - 0xd7, 0xed, 0x49, 0x1a, 0x74, 0x1a, 0xc9, 0x8e, 0x2e, 0x0c, 0x7d, 0x68, - 0x0a, 0x74, 0xd6, 0x99, - 0xfa, 0x70, 0xf3, 0xeb, 0xd7, 0xeb, 0xb4, 0xd8, 0xfe, 0x2c, 0xe6, 0x2a, - 0x3a, 0xd7, 0x42, 0xa7, - 0xa7, 0x0a, 0x7f, 0xfc, 0x99, 0xfc, 0xf8, 0x11, 0xc7, 0x26, 0x44, 0x76, - 0x35, 0x99, 0xff, 0x93, - 0x7f, 0x95, 0x08, 0x80, 0x17, 0x80, 0x63, 0x42, 0x43, 0x67, 0xcb, 0x45, - 0xb5, 0x17, 0x58, 0x82, - 0xe4, 0x94, 0x8f, 0x27, 0xe0, 0x27, 0x10, 0xa1, 0x69, 0xb6, 0xc1, 0x9c, - 0xed, 0xe0, 0xa0, 0x74, - 0x8f, 0xb9, 0x6e, 0x2f, 0x6c, 0x2f, 0x0a, 0x0c, 0x71, 0x3d, 0x30, 0xbc, - 0xc2, 0x6c, 0x44, 0xd5, - 0xa1, 0x3e, 0x0c, 0xc0, 0xfd, 0xc0, 0xb3, 0x63, 0x83, 0xb5, 0x4f, 0x86, - 0x0e, 0xfd, 0x74, 0xc3, - 0x52, 0x08, 0xb2, 0x71, 0xb4, 0x71, 0x1e, 0x14, 0x93, 0x47, 0x50, 0x07, - 0x85, 0xb4, 0xcc, 0xbc, - 0xec, 0x65, 0x8a, 0x77, 0xd1, 0x77, 0xf4, 0x19, 0x99, 0xb1, 0x64, 0x1f, - 0x08, 0xd1, 0x87, 0xb4, - 0x3b, 0x88, 0xc3, 0x6d, 0xa5, 0x6d, 0x3d, 0x97, 0xb7, 0xbd, 0x19, 0x77, - 0x02, 0xa5, 0x51, 0x2d, - 0xa2, 0x24, 0xd4, 0xde, 0xcf, 0xde, 0x77, 0x5a, 0xa1, 0x1d, 0xab, 0xfe, - 0xf2, 0xcf, 0xd0, 0xeb, - 0x5f, 0xd7, 0x1c, 0x03, 0xd3, 0x03, 0x75, 0xe7, 0x05, 0x7b, 0x1a, 0x0c, - 0xa7, 0xd3, 0xc4, 0x04, - 0x50, 0xa5, 0x22, 0x65, 0x29, 0x65, 0x27, 0x3a, 0xaf, 0x36, 0xe8, 0x57, - 0x2d, 0x29, 0xb5, 0x8c, - 0x4a, 0xd8, 0xbd, 0x81, 0xe7, 0x81, 0xf1, 0x1f, 0x40, 0x4e, 0x7c, 0x41, - 0x69, 0xe7, 0xa5, 0x3f, - 0x57, 0x26, 0x19, 0x53, 0xe2, 0x53, 0x91, 0x5f, 0xf5, 0x7c, 0xbf, 0x8f, - 0x42, 0xe2, 0xe3, 0xc4, - 0x55, 0x8b, 0x89, 0x47, 0x7f, 0x47, 0xa8, 0x71, 0xc9, 0x0d, 0x07, 0xdf, - 0xea, 0x7f, 0x9a, 0xf4, - 0xdc, 0x06, 0x94, 0x54, 0x77, 0x54, 0xe9, 0x0f, 0xfc, 0xa3, 0x3c, 0x93, - 0x13, 0x77, 0x55, 0x71, - 0xde, 0xab, 0x04, 0x40, 0xea, 0x40, 0xd0, 0x21, 0xc0, 0xd2, 0x84, 0xc3, - 0xbb, 0xea, 0x2c, 0x41, - 0x9d, 0x35, 0xf4, 0x9b, 0x93, 0x9b, 0x38, 0x91, 0x6e, 0x42, 0x01, 0x29, - 0x63, 0x93, 0x73, 0xa6, - 0xe7, 0x8e, 0x57, 0x39, 0xd2, 0x39, 0xd4, 0x98, 0x4b, 0x1e, 0x25, 0xe4, - 0x11, 0xd2, 0x04, 0x5c, - 0xaf, 0xfb, 0x7a, 0xac, 0xa8, 0xac, 0x1c, 0xa9, 0x37, 0x21, 0xe1, 0xf5, - 0xd0, 0xa8, 0xd8, 0x53, - 0x97, 0x69, 0x61, 0xdf, 0x3f, 0xdf, 0xe5, 0x07, 0xa2, 0x34, 0x1c, 0xfa, - 0x2e, 0x3f, 0x2d, 0x56, - 0xaa, 0xd5, 0xd1, 0x8e, 0xfe, 0x8e, 0x93, 0xe2, 0x51, 0x1a, 0x0e, 0x7d, - 0x17, 0xfe, 0xf7, 0x2b, - 0x26, 0x76, 0x67, 0xbf, 0xa0, 0xbf, 0x5d, 0xd7, 0x02, 0x8f, 0xda, 0xb9, - 0x29, 0xa0, 0x17, 0xd6, - 0x4d, 0x5b, 0x86, 0xb7, 0x2c, 0xb7, 0x47, 0x7a, 0x1a, 0x04, 0x2b, 0x99, - 0x06, 0x2c, 0xf3, 0x77, - 0x54, 0x3c, 0xc1, 0x4d, 0xd0, 0x4d, 0x55, 0x66, 0xd7, 0xd4, 0x5b, 0xf7, - 0xbe, 0xd0, 0x47, 0xec, - 0xf7, 0xaf, 0x5d, 0x99, 0xb0, 0x99, 0xdf, 0x2b, 0x68, 0x10, 0xac, 0x21, - 0x18, 0xb0, 0x4a, 0x1f, - 0xd9, 0x28, 0x3f, 0x76, 0x21, 0x76, 0x66, 0x44, 0x9a, 0x98, 0xd3, 0x1b, - 0xd4, 0x21, 0x7a, 0x09, - 0x84, 0x52, 0xb3, 0x61, 0x6f, 0x61, 0x2a, 0x8d, 0xa3, 0x92, 0x71, 0x47, - 0xdb, 0x6f, 0xc7, 0x3d, - 0x41, 0x33, 0x60, 0xcf, 0xe4, 0xcf, 0xd1, 0x9e, 0x92, 0xe1, 0x3d, 0xba, - 0x70, 0xe4, 0x26, 0xd7, - 0x82, 0x66, 0xc0, 0x5d, 0x0b, 0x5d, 0x61, 0xff, 0xe7, 0x01, 0x7a, 0xb7, - 0xe0, 0x0b, 0x4c, 0x6d, - 0xd6, 0x5a, 0x01, 0x10, 0xdb, 0x10, 0x34, 0x99, 0x30, 0xd5, 0x21, 0x40, - 0x5e, 0xdb, 0x0b, 0x81, - 0xb7, 0x2b, 0x75, 0x5c, 0xfb, 0x5c, 0xf3, 0xa2, 0xe4, 0x28, 0xcd, 0xb3, - 0x3c, 0xfb, 0xb1, 0xd0, - 0xdb, 0x85, 0xaf, 0x62, 0xbc, 0x62, 0x5f, 0x6a, 0xa6, 0xe9, 0x6b, 0x4b, - 0x7c, 0xbc, 0x03, 0x39, - 0x2b, 0xa9, 0xc9, 0xcd, 0xc7, 0xcd, 0x36, 0x24, 0x94, 0xb3, 0x90, 0xb2, - 0x0b, 0xc7, 0x1f, 0x6e, - 0xa6, 0xbd, 0x37, 0xf6, 0x36, 0xf6, 0x05, 0x06, 0xd9, 0xff, 0x18, 0x5e, - 0x61, 0x36, 0x22, 0x8b, - 0x38, 0x92, 0x1b, 0x73, 0x97, 0x73, 0xf9, 0xae, 0x95, 0x15, 0xfd, 0x0f, - 0xfe, 0x97, 0xf5, 0x05, - 0xce, 0x8a, 0x0e, 0xe0, 0x88, 0xe0, 0xdb, 0x92, 0xe3, 0xdc, 0x0d, 0x06, - 0xb2, 0x88, 0x62, 0x02, - 0x95, 0xc4, 0xf1, 0xcb, 0xa2, 0xcb, 0xdc, 0x29, 0x9e, 0x45, 0xa4, 0xaa, - 0x86, 0xa2, 0x54, 0x66, - 0x71, 0x50, 0x7e, 0xec, 0x42, 0xec, 0xcc, 0x88, 0xf7, 0xf3, 0x65, 0x36, - 0x6b, 0x42, 0xf4, 0x12, - 0xc3, 0x55, 0xa0, 0x92, 0xef, 0x92, 0xb0, 0x61, 0x75, 0xe0, 0x47, 0x0d, - 0x90, 0xef, 0x6a, 0xba, - 0x8e, 0x0e, 0x26, 0x25, 0xc3, 0x25, 0xf7, 0x1b, 0x6f, 0xe4, 0x6c, 0x94, - 0x96, 0xc3, 0x99, 0xcd, - 0x9a, 0xb6, 0xcf, 0xad, 0x58, 0xad, 0x8e, 0xf4, 0x34, 0x08, 0x56, 0xf1, - 0x0c, 0x58, 0x25, 0xee, - 0xef, 0x7f, 0x52, 0x69, 0xe3, 0x69, 0x30, 0x20, 0xbb, 0x19, 0x80, 0x67, - 0xf4, 0xe3, 0x23, 0x9c, - 0x25, 0x6c, 0xbf, 0xa1, 0x92, 0xa1, 0x99, 0xee, 0x20, 0x27, 0x3e, 0xc1, - 0xd5, 0x92, 0xb3, 0xfe, - 0xa4, 0x10, 0xa7, 0xe2, 0xab, 0xe2, 0x3c, 0x28, 0xe5, 0x8e, 0xa0, 0x0e, - 0xc9, 0xab, 0x5b, 0xbb, - 0xe9, 0x4b, 0x21, 0x55, 0x87, 0x55, 0x7b, 0x52, 0xff, 0x8a, 0x8b, 0x97, - 0xcf, 0x87, 0xa8, 0xcc, - 0x3c, 0x0b, 0xf8, 0x5b, 0x6e, 0x5b, 0x8b, 0xf2, 0xed, 0xf7, 0x4e, 0xaf, - 0x6d, 0x6e, 0x07, 0x65, - 0x6f, 0xb4, 0x02, 0x20, 0x75, 0x20, 0x68, 0xf1, 0x60, 0x69, 0x42, 0x80, - 0xbc, 0x75, 0x16, 0xc1, - 0x02, 0xad, 0x90, 0x14, 0x9d, 0x14, 0x39, 0x2e, 0x3c, 0x71, 0xb8, 0x50, - 0xa8, 0x9d, 0x79, 0x30, - 0x01, 0xb7, 0x48, 0x0a, 0xaf, 0x0a, 0xfd, 0x17, 0x1e, 0xd9, 0x5c, 0x28, - 0x54, 0xaf, 0xdd, 0x18, - 0x0a, 0x5c, 0x95, 0x44, 0xac, 0x44, 0xdd, 0x96, 0xcc, 0x76, 0x1d, 0xd3, - 0x4d, 0xac, 0x5e, 0xf0, - 0x09, 0x46, 0x4d, 0x5a, 0x9e, 0x5a, 0x19, 0xaf, 0xee, 0xde, 0xf9, 0xab, - 0xb1, 0x9e, 0xfa, 0xd8, - 0x94, 0x73, 0xb9, 0xc1, 0x0d, 0xc1, 0x21, 0x3e, 0x80, 0x9c, 0xf8, 0x82, - 0xd2, 0x0d, 0x89, 0x7e, - 0xed, 0xd2, 0xc2, 0x7d, 0x7e, 0x7d, 0x09, 0x0e, 0x87, 0x68, 0x38, 0x37, - 0x5c, 0x7e, 0x5a, 0xac, - 0x59, 0xe3, 0x6f, 0x3f, 0xb7, 0x3f, 0x3e, 0x95, 0x41, 0xe8, 0x11, 0xfc, - 0x9c, 0xb7, 0x4f, 0x54, - 0x61, 0x71, 0x74, 0x4c, 0x20, 0x4c, 0xc7, 0x3b, 0xd4, 0xfd, 0xec, 0xf3, - 0x62, 0x20, 0xba, 0x51, - 0x69, 0x80, 0x71, 0x1c, 0x11, 0x1c, 0x23, 0x83, 0x24, 0xfa, 0x49, 0x70, - 0x87, 0x11, 0x9d, 0x91, - 0x29, 0x04, 0x59, 0xd9, 0x5a, 0xd9, 0x0f, 0x0a, 0xa8, 0xc2, 0x28, 0xe2, - 0xa3, 0x5a, 0x66, 0x5e, - 0xb0, 0xa8, 0x4e, 0x6a, 0x30, 0x6a, 0x45, 0xc7, 0xbe, 0x62, 0x9a, 0x6b, - 0x53, 0x30, 0xe7, 0x98, - 0x30, 0x63, 0x1e, 0x23, 0xa6, 0x23, 0x1d, 0x16, 0x65, 0x12, 0x58, 0x8c, - 0x1b, 0xa6, 0xd2, 0xc5, - 0x60, 0xc6, 0x3c, 0x46, 0x8f, 0x46, 0x3a, 0x2c, 0xca, 0x24, 0xb0, 0xdb, - 0x36, 0x8f, 0x67, 0x49, - 0x74, 0x7e, 0xd5, 0xce, 0x14, 0xce, 0x43, 0xc3, 0x91, 0xc8, 0x8a, 0xbe, - 0xac, 0x14, 0xdb, 0x6a, - 0x22, 0xef, 0x84, 0x97, 0x59, 0x97, 0x2f, 0x8b, 0x7a, 0x6d, 0x69, 0x19, - 0xba, 0x59, 0xe5, 0xb6, - 0x0c, 0x68, 0xe6, 0x78, 0xc8, 0x78, 0x96, 0xe4, 0x88, 0xe5, 0x16, 0x23, - 0x76, 0xc8, 0xd5, 0xa0, - 0xcd, 0x90, 0xd6, 0xfe, 0xba, 0xfe, 0x1f, 0xab, 0xc1, 0x74, 0xe9, 0x7e, - 0x4e, 0xba, 0xc6, 0x2a, - 0x7b, 0x0c, 0xeb, 0xa8, 0xee, 0xa8, 0x11, 0x1e, 0x3b, 0x85, 0x78, 0xe5, - 0x26, 0xee, 0xaa, 0xe2, - 0x5b, 0x4e, 0xff, 0x2b, 0x2a, 0x2b, 0x07, 0xbb, 0x7d, 0x99, 0xa9, 0xac, - 0x34, 0x2a, 0x36, 0x64, - 0x40, 0x84, 0x28, 0xc5, 0x4b, 0xc5, 0x2c, 0x89, 0x8c, 0x38, 0x61, 0x92, - 0x24, 0x4b, 0xfb, 0xcf, - 0xe3, 0x17, 0xb4, 0x11, 0x2b, 0x11, 0xa6, 0xc4, 0x33, 0xfc, 0x96, 0x44, - 0x82, 0x2b, 0xf6, 0x3c, - 0x14, 0xb8, 0xe9, 0x88, 0x9b, 0x88, 0x79, 0xef, 0x5b, 0xec, 0x3a, 0x65, - 0x9a, 0x9b, 0xbc, 0x23, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0xfd, 0xf3, 0xc8, 0xdd, 0x1c, 0xdd, 0x02, 0xbd, 0xa4, 0x66, 0xb1, 0xf2, - 0x55, 0x1c, 0x14, 0xef, - 0x78, 0x16, 0x33, 0xb6, 0xdc, 0xb6, 0xd5, 0x27, 0x19, 0x2d, 0x9c, 0x9d, - 0xda, 0xdc, 0x0e, 0xca, - 0xad, 0x56, 0xea, 0xb8, 0x35, 0xb8, 0x25, 0x87, 0x0b, 0x50, 0x59, 0xa5, - 0x78, 0x35, 0xa1, 0x63, - 0xd0, 0x6e, 0x72, 0x2c, 0xbf, 0x2c, 0x7f, 0xeb, 0x74, 0x46, 0x2a, 0xb0, - 0x65, 0xbf, 0x80, 0xd1, - 0x91, 0x5d, 0x12, 0xe3, 0x5b, 0xe3, 0xae, 0x75, 0xe6, 0xa7, 0x17, 0x0a, - 0x15, 0x5b, 0xa6, 0x06, - 0xfc, 0x44, 0x80, 0xd7, 0xb3, 0xd7, 0xff, 0xaa, 0xba, 0xbf, 0xed, 0xda, - 0x01, 0xb3, 0xc9, 0xf7, - 0xf9, 0x6a, 0x2b, 0xf5, 0xe5, 0xf5, 0x70, 0xe1, 0xdc, 0x84, 0x02, 0x52, - 0xc6, 0xe5, 0xe6, 0x8f, - 0xea, 0x51, 0xf9, 0x4b, 0xb5, 0x4b, 0xbf, 0x6b, 0xdd, 0x22, 0x6f, 0xef, - 0x33, 0xb5, 0x0c, 0xe4, - 0x85, 0xe5, 0xfb, 0x6b, 0xc0, 0x6b, 0xd7, 0x9a, 0xbd, 0x4b, 0x2d, 0x6f, - 0x8f, 0xc0, 0x1a, 0x25, - 0x7e, 0x22, 0x40, 0x8a, 0xb8, 0x8a, 0x9e, 0x55, 0x5d, 0xbe, 0x97, 0x6d, - 0xe1, 0xb8, 0x85, 0x9a, - 0x77, 0x64, 0x0d, 0xd0, 0x26, 0xd0, 0x87, 0xfa, 0xb3, 0x60, 0x6e, 0xc6, - 0x50, 0x26, 0x7f, 0x42, - 0xc7, 0xcc, 0x43, 0xba, 0x16, 0xba, 0xc2, 0x3d, 0x0d, 0x02, 0xf4, 0xad, - 0x03, 0x16, 0x98, 0xda, - 0xc5, 0x61, 0xd3, 0xae, 0x8b, 0xae, 0xfb, 0x13, 0x31, 0x73, 0x4c, 0xfd, - 0xab, 0x8b, 0xe1, 0xea, - 0x5d, 0x7a, 0x8c, 0x17, 0x4e, 0x17, 0x4c, 0xc9, 0x39, 0x0a, 0xa2, 0x5c, - 0x0f, 0x4e, 0xbd, 0x34, - 0x3a, 0x3f, 0x8b, 0x67, 0x0a, 0x67, 0xc0, 0x80, 0xa9, 0x64, 0x45, 0x5f, - 0x56, 0x0a, 0x8c, 0x35, - 0xd5, 0x40, 0xd9, 0x0e, 0xe9, 0x0e, 0xf0, 0xa0, 0x12, 0x7d, 0xc5, 0x38, - 0xa2, 0xe9, 0xaf, 0xa9, - 0x66, 0xf2, 0x4f, 0x7a, 0xeb, 0x7a, 0x71, 0x5e, 0x8e, 0xb7, 0xbb, 0x2b, - 0x0d, 0xeb, 0xec, 0x19, - 0x8b, 0x20, 0x8d, 0x07, 0x95, 0x07, 0x78, 0x50, 0x09, 0xdf, 0x83, 0x1c, - 0x51, 0x95, 0xb6, 0xb5, - 0x49, 0xc2, 0x65, 0x9f, 0xd5, 0x9f, 0x35, 0x26, 0x62, 0xe6, 0x98, 0x39, - 0x95, 0xd5, 0x01, 0x17, - 0xc2, 0xe2, 0xe8, 0x98, 0x40, 0x98, 0x4d, 0x76, 0x6b, 0x39, 0x1b, 0x25, - 0xc4, 0x40, 0xb7, 0xa2, - 0xc6, 0x7b, 0x0b, 0xb0, 0xb9, 0xb0, 0x3f, 0x2a, 0x13, 0xdb, 0xa8, 0x85, - 0x57, 0xb9, 0x45, 0xc2, - 0x56, 0x91, 0x51, 0x59, 0x4d, 0x59, 0x6c, 0x48, 0xeb, 0xa5, 0xe3, 0xa7, - 0x16, 0x4d, 0x3e, 0xdc, - 0x4e, 0x41, 0x5e, 0xa9, 0x1e, 0xa9, 0x83, 0x43, 0x38, 0xac, 0xcf, 0xe1, - 0xfa, 0x1e, 0x57, 0x5f, - 0x27, 0xc1, 0x2f, 0xb5, 0x0f, 0xb5, 0xa0, 0xc0, 0x1c, 0x56, 0x86, 0x91, - 0x7d, 0x0f, 0xca, 0xce, - 0xe6, 0x39, 0x1f, 0x33, 0x7d, 0x33, 0x29, 0x8f, 0x55, 0xc7, 0x79, 0xcc, - 0x45, 0x7d, 0xd9, 0x44, - 0x93, 0xf0, 0x82, 0xf7, 0xc6, 0xf7, 0x97, 0x5b, 0xda, 0xd6, 0xaf, 0x5a, - 0xbd, 0xc6, 0xdf, 0x36, - 0xbb, 0x43, 0x93, 0x24, 0x33, 0x24, 0x65, 0x46, 0x6c, 0xcd, 0xdb, 0x90, - 0x4a, 0x33, 0x64, 0x70, - 0xd1, 0xd9, 0x3a, 0x26, 0x10, 0x26, 0x82, 0xfc, 0x6a, 0x9f, 0x76, 0x98, - 0x31, 0x10, 0x5d, 0xc9, - 0x63, 0xdc, 0xe4, 0x58, 0xbd, 0x58, 0xfe, 0x15, 0xe8, 0x8c, 0x54, 0xa3, - 0xca, 0xbd, 0xc3, 0x61, - 0xc1, 0xf8, 0x30, 0x86, 0x72, 0x86, 0x89, 0x4f, 0x49, 0x91, 0xff, 0x5d, - 0x38, 0x72, 0x13, 0x8a, - 0x45, 0xaa, 0x83, 0xe7, 0x1d, 0xe7, 0xa3, 0xc2, 0xea, 0x03, 0x8e, 0x1a, - 0xe3, 0x1d, 0xd4, 0xb7, - 0xc8, 0xbe, 0x7d, 0xdc, 0xec, 0xdc, 0x90, 0xe0, 0xa7, 0x4f, 0x06, 0xf6, - 0x89, 0xec, 0xe9, 0x52, - 0x16, 0x15, 0x79, 0x9c, 0x06, 0x9c, 0x40, 0xc1, 0x67, 0x9d, 0x82, 0x35, - 0x32, 0x06, 0xc5, 0x13, - 0x1b, 0xca, 0xd7, 0xee, 0x61, 0xee, 0x2b, 0x32, 0xf1, 0xa1, 0xc8, 0x3e, - 0x10, 0x61, 0xcd, 0xab, - 0x20, 0x42, 0x14, 0x83, 0xc4, 0x83, 0x16, 0xa5, 0x46, 0x1c, 0xd1, 0x49, - 0x12, 0xc4, 0x9c, 0x86, - 0x9b, 0x01, 0x87, 0xa7, 0xf7, 0xa7, 0x73, 0xe3, 0x2a, 0xd1, 0x0a, 0xd9, - 0x58, 0xf7, 0xf8, 0xf6, - 0xf3, 0x36, 0xbe, 0xb1, 0x49, 0xb1, 0xad, 0x77, 0x10, 0xf2, 0x1f, 0x81, - 0x8b, 0x49, 0xb8, 0x7f, - 0xb8, 0x59, 0x4b, 0x3a, 0x01, 0x3a, 0xa1, 0x7f, 0x4e, 0x65, 0x3f, 0xe8, - 0xb6, 0x01, 0xc0, 0x58, - 0xf0, 0x2c, 0x66, 0xaf, 0x7b, 0xaf, 0x69, 0x4e, 0x32, 0x5a, 0xfb, 0xf9, - 0x77, 0x7b, 0x1c, 0x57, - 0x2f, 0x30, 0x2a, 0xe5, 0x3e, 0xe5, 0x44, 0x78, 0xec, 0x51, 0x23, 0x12, - 0x98, 0x3e, 0xed, 0x0e, - 0xba, 0xf4, 0xdb, 0x2e, 0x9c, 0x2e, 0x98, 0x51, 0x72, 0x14, 0x87, 0xb8, - 0x1e, 0x9c, 0xb9, 0x68, - 0x4f, 0xf6, 0x16, 0xa3, 0xb1, 0xa3, 0x7e, 0x54, 0x26, 0x75, 0x93, 0xc9, - 0xae, 0xb1, 0x8a, 0x47, - 0xbe, 0x6d, 0x38, 0x06, 0x65, 0x06, 0xea, 0x0d, 0x0a, 0xf6, 0x34, 0x18, - 0x8d, 0x65, 0x4b, 0x08, - 0x12, 0x8c, 0x9a, 0xb4, 0xff, 0xb4, 0x32, 0x9d, 0x1f, 0x7f, 0x31, 0x95, - 0xa1, 0xff, 0x37, 0x73, - 0x43, 0x9e, 0xf0, 0xdb, 0x79, 0xdb, 0xe8, 0xb0, 0xae, 0x90, 0x85, 0xea, - 0xd8, 0x79, 0x5f, 0xe7, - 0xcf, 0x3d, 0x46, 0xea, 0x27, 0xea, 0x26, 0x85, 0xfd, 0x05, 0x51, 0x2e, - 0xe6, 0x27, 0xbf, 0x1a, - 0xc9, 0x09, 0x35, 0xd6, 0x43, 0xd6, 0x6d, 0xf7, 0xb9, 0x96, 0x5a, 0xde, - 0xdd, 0x43, 0x34, 0x4a, - 0x2a, 0x1e, 0x81, 0xc7, 0x68, 0xc7, 0xcb, 0x33, 0x8a, 0x6a, 0xcc, 0x9a, - 0x5f, 0x68, 0xc2, 0x76, - 0x11, 0x96, 0x42, 0xaa, 0xcd, 0xaa, 0xf6, 0xa4, 0x3d, 0xd7, 0xd5, 0xed, - 0x5d, 0xcd, 0x93, 0x5b, - 0x15, 0x0f, 0xa1, 0x82, 0x34, 0x82, 0x84, 0xf8, 0x45, 0x35, 0x66, 0x4d, - 0xce, 0x34, 0x61, 0x3b, - 0xf6, 0x18, 0x15, 0x93, 0x1f, 0x93, 0x22, 0x3c, 0x76, 0xc9, 0xf0, 0x09, - 0x4c, 0x1f, 0x97, 0x07, - 0x62, 0x6b, 0xac, 0x52, 0x12, 0x52, 0x03, 0x02, 0xf6, 0x55, 0x08, 0x8b, - 0x9e, 0x12, 0x1e, 0x79, - 0xcc, 0x27, 0x9e, 0xf4, 0x15, 0xf4, 0xe2, 0xbc, 0xdf, 0xad, 0xb5, 0x56, - 0x1a, 0x15, 0x1b, 0x32, - 0xe0, 0x0d, 0x6c, 0x0f, 0x19, 0x0f, 0x62, 0xfd, 0x11, 0x54, 0x72, 0x3c, - 0x7e, 0x19, 0x52, 0x14, - 0x8c, 0xa3, 0xb6, 0x31, 0x5e, 0x31, 0xce, 0x35, 0x53, 0x95, 0xd4, 0xc4, - 0x3e, 0x5e, 0xe0, 0xfd, - 0x90, 0xea, 0x5a, 0xe9, 0xf4, 0xe9, 0x53, 0x62, 0xf8, 0x7e, 0x4b, 0x22, - 0x41, 0xf4, 0x7b, 0x1e, - 0x47, 0x07, 0x13, 0xf3, 0x80, 0xf3, 0x9a, 0xec, 0xd6, 0x72, 0x36, 0x4a, - 0x4b, 0x80, 0xad, 0x87, - 0xff, 0x5e, 0x58, 0xc9, 0x81, 0xc9, 0x3b, 0x93, 0x98, 0x17, 0x09, 0xa2, - 0xfd, 0x81, 0x6d, 0xdf, - 0x81, 0x7c, 0x18, 0x43, 0x39, 0x43, 0xa5, 0xc6, 0xc5, 0xa9, 0x9e, 0xcf, - 0x1c, 0x39, 0xe8, 0x45, - 0x5e, 0x60, 0x54, 0x09, 0x7c, 0x09, 0x88, 0xf0, 0x1b, 0xa2, 0x46, 0x24, - 0xf3, 0x7c, 0x19, 0x1c, - 0xfb, 0xc7, 0xbb, 0xe1, 0x78, 0xe1, 0x49, 0xcf, 0xe0, 0xf5, 0xba, 0x02, - 0x6e, 0x78, 0x9f, 0xbf, - 0x79, 0xa1, 0x7b, 0xbc, 0x73, 0xbc, 0x28, 0x30, 0x07, 0xf4, 0xc0, 0xb5, - 0x8e, 0x73, 0xd3, 0xd2, - 0x36, 0x57, 0x6d, 0x1f, 0xc2, 0x1f, 0x56, 0x64, 0x21, 0x81, 0x53, 0x7c, - 0x20, 0xc2, 0x59, 0x95, - 0x32, 0xce, 0x8e, 0x37, 0x3b, 0x37, 0x24, 0x38, 0x59, 0x63, 0xe0, 0xdc, - 0xb3, 0x3b, 0xab, 0xf5, - 0x0e, 0xc5, 0x76, 0x6c, 0x55, 0x6c, 0xaf, 0xca, 0xb4, 0x94, 0xae, 0x73, - 0xde, 0x55, 0xac, 0x90, - 0xd3, 0x74, 0xaa, 0x32, 0x8d, 0x32, 0xbb, 0xd2, 0x56, 0xee, 0xce, 0xc8, - 0x99, 0x8d, 0x24, 0xf9, - 0x33, 0x79, 0xc6, 0x3d, 0x94, 0x3d, 0xd9, 0x2f, 0x47, 0xba, 0xbc, 0xf4, - 0xe7, 0x94, 0x76, 0xed, - 0x53, 0xbf, 0xfa, 0x7b, 0x1b, 0x7b, 0xe3, 0x03, 0x8d, 0x9e, 0x0c, 0x2f, - 0xd1, 0x1b, 0x11, 0xa4, - 0x87, 0x48, 0x6b, 0x7f, 0x5d, 0x7f, 0xee, 0xb4, 0x81, 0x3a, 0x95, 0x3f, - 0x27, 0x5d, 0x63, 0x15, - 0x21, 0xf5, 0x5c, 0x89, 0x6b, 0x89, 0xeb, 0xb2, 0x58, 0xc5, 0x8d, 0x61, - 0x46, 0x6b, 0x41, 0x9e, - 0xd4, 0xf7, 0x91, 0x04, 0x46, 0x04, 0x0d, 0xb7, 0x0c, 0xa4, 0x99, 0x10, - 0xf6, 0x46, 0x72, 0xb1, - 0x07, 0x83, 0x3b, 0x36, 0xcb, 0x36, 0xb6, 0x65, 0x5a, 0x4a, 0x57, 0xd8, - 0x6f, 0xcb, 0x56, 0x48, - 0x48, 0x75, 0x2d, 0x95, 0x7a, 0x95, 0xc8, 0x31, 0x7c, 0x3f, 0xc4, 0x11, - 0xc1, 0x7a, 0xdc, 0x0f, - 0xdd, 0xb1, 0xdc, 0x5e, 0xd8, 0x5e, 0x14, 0x18, 0xe2, 0x7a, 0x60, 0xbb, - 0x47, 0xd8, 0x88, 0x69, - 0x6e, 0x03, 0x4a, 0x2a, 0xda, 0x2a, 0x95, 0xe6, 0x7e, 0xb0, 0x1e, 0xa8, - 0xe8, 0xda, 0xcb, 0xd9, - 0xc4, 0xd6, 0x9b, 0xa4, 0x24, 0xa4, 0x06, 0x04, 0x2f, 0xaa, 0x10, 0xd5, - 0xff, 0x24, 0x3c, 0xf2, - 0x58, 0x54, 0x27, 0x35, 0x18, 0x35, 0xc3, 0x82, 0x5f, 0x31, 0x4d, 0xd4, - 0xc8, 0x18, 0x92, 0x4c, - 0x9c, 0x82, 0xbc, 0x91, 0x3c, 0x91, 0xc5, 0x86, 0x70, 0x9b, 0x5d, 0x01, - 0x37, 0x3c, 0xae, 0xbe, - 0x05, 0x2e, 0xab, 0x22, 0x56, 0x22, 0x8f, 0x4b, 0x66, 0x3b, 0xef, 0x88, - 0xc7, 0x56, 0x2f, 0x78, - 0x19, 0x67, 0x47, 0xfa, 0xfc, 0xfa, 0x12, 0x1c, 0xcd, 0xd0, 0x70, 0x6e, - 0xb8, 0xfc, 0xb4, 0x9b, - 0xd8, 0x9f, 0x77, 0x7c, 0x8e, 0x7c, 0x9b, 0x53, 0x84, 0x41, 0x8f, 0x33, - 0x80, 0x8e, 0xa7, 0x11, - 0x80, 0xcb, 0x50, 0x49, 0x96, 0x49, 0x58, 0xd1, 0xdb, 0x70, 0xc2, 0xe7, - 0x48, 0x96, 0x35, 0x5d, - 0x9e, 0x2f, 0x2c, 0x85, 0xa1, 0x85, 0xfc, 0xa8, 0x4c, 0xea, 0xe5, 0x51, - 0x9f, 0xa1, 0xd7, 0x8e, - 0x44, 0x1d, 0xcb, 0xed, 0xb2, 0xed, 0x5e, 0xd5, 0xf4, 0xda, 0xd2, 0x32, - 0xb7, 0xb2, 0x09, 0xaf, - 0xca, 0x13, 0xed, 0xc8, 0x71, 0xc8, 0xa9, 0xce, 0x9b, 0x3e, 0xbe, 0xa6, - 0x21, 0x71, 0x90, 0x62, - 0x3d, 0xbc, 0xb0, 0x51, 0xc1, 0x51, 0x76, 0xe5, 0xf3, 0x2e, 0x12, 0x87, - 0x39, 0xc1, 0xda, 0x7d, - 0x2e, 0x87, 0x62, 0xef, 0x91, 0xef, 0xb9, 0x6f, 0xf2, 0x88, 0x7f, 0x3a, - 0xcc, 0x91, 0x30, 0x16, - 0x72, 0x4a, 0xa6, 0xf2, 0x70, 0xf2, 0x08, 0xb1, 0xd5, 0x5b, 0x81, 0x4e, - 0x97, 0x70, 0x50, 0x3a, - 0x42, 0x29, 0xb8, 0xd1, 0xd6, 0xd1, 0x15, 0xa7, 0xb0, 0x49, 0xd9, 0xc2, - 0x8c, 0xd6, 0x82, 0xff, - 0x65, 0xe8, 0x97, 0x64, 0xd9, 0x64, 0xb5, 0x67, 0xac, 0x1f, 0x5f, 0x53, - 0xf1, 0xd9, 0x48, 0x31, - }, - { /* 4 */ - 0x04, 0xc3, 0xb6, 0x81, 0x36, 0x3e, 0x4d, 0xde, 0x9f, 0xbe, 0xcc, 0x92, - 0x5e, 0x72, 0x11, 0x8f, - 0xc5, 0x34, 0x29, 0xba, 0x33, 0x7a, 0x21, 0x8a, 0x27, 0x60, 0x9b, 0x0b, - 0x90, 0xfb, 0x32, 0xb5, - 0xdf, 0x7b, 0x40, 0x9b, 0x9c, 0xe1, 0x8b, 0x64, 0x4d, 0x3d, 0x10, 0xa8, - 0xb8, 0x2d, 0xbd, 0xb7, - 0xb7, 0x84, 0x27, 0x1f, 0x65, 0xc8, 0x66, 0x5a, 0x26, 0x8a, 0x79, 0x61, - 0x18, 0xf3, 0xc4, 0xbf, - 0x1e, 0x8c, 0xdf, 0xa0, 0x99, 0xa5, 0xe7, 0x30, 0xf5, 0xe3, 0x47, 0x31, - 0x76, 0xa4, 0x9e, 0x8d, - 0x26, 0x94, 0x14, 0xa2, 0x5e, 0x12, 0xa7, 0x8e, 0x43, 0x58, 0x05, 0xc1, - 0xc4, 0x5d, 0x70, 0xdb, - 0xff, 0xac, 0xb9, 0x19, 0xef, 0xd2, 0xa6, 0x5b, 0x3f, 0x84, 0xbf, 0xb2, - 0x0d, 0x3b, 0x35, 0x45, - 0xc8, 0xf2, 0xfc, 0x4b, 0x85, 0xd6, 0x74, 0xfd, 0x12, 0xaf, 0x3f, 0xbb, - 0x84, 0x90, 0x94, 0xb4, - 0x7b, 0xb5, 0x6d, 0xd5, 0xd6, 0x20, 0x5f, 0x79, 0xab, 0x9b, 0x8a, 0x48, - 0xc2, 0x11, 0x41, 0x84, - 0x7a, 0xf5, 0xa1, 0x64, 0x3a, 0xce, 0xdd, 0xaf, 0xfc, 0x55, 0xb9, 0x8d, - 0x34, 0xec, 0xd4, 0xd7, - 0xe8, 0x25, 0x05, 0xc9, 0xf6, 0xe5, 0x59, 0xc2, 0x60, 0x16, 0x90, 0xa1, - 0x31, 0x86, 0x1c, 0x46, - 0xa0, 0x0d, 0x9b, 0xcf, 0x7c, 0xff, 0x99, 0xc3, 0x79, 0x18, 0x56, 0x72, - 0x24, 0x4e, 0xed, 0xbc, - 0x3e, 0x5b, 0x26, 0x22, 0xea, 0x96, 0xca, 0x0f, 0x87, 0x5a, 0xe8, 0x2b, - 0xc3, 0xb2, 0x16, 0x7f, - 0xe9, 0x65, 0xc9, 0x78, 0x1a, 0x0b, 0xdb, 0x14, 0x37, 0xd8, 0xa3, 0x64, - 0xc7, 0x7b, 0x89, 0x15, - 0x09, 0x05, 0x63, 0x70, 0x80, 0x92, 0x18, 0xa9, 0xaa, 0x71, 0x68, 0x22, - 0x4a, 0x19, 0xb7, 0x8e, - 0x18, 0xcf, 0x32, 0x80, 0xb4, 0x84, 0x6d, 0x81, 0xc4, 0x02, 0xed, 0xea, - 0x07, 0xef, 0x66, 0xa4, - 0xba, 0x42, 0xf2, 0xee, 0xd3, 0x64, 0x33, 0x2d, 0x13, 0x45, 0xdd, 0xd1, - 0x0c, 0x98, 0x62, 0xbe, - 0x83, 0x1a, 0xf5, 0x5d, 0xf8, 0x3d, 0xf1, 0x45, 0xf2, 0x30, 0xac, 0xe4, - 0x48, 0x9c, 0x19, 0xbb, - 0x1f, 0xcc, 0x13, 0x11, 0x75, 0x4b, 0x65, 0xe6, 0xa2, 0x2d, 0x74, 0xf4, - 0x80, 0x59, 0x0b, 0xde, - 0x33, 0x9d, 0xf3, 0xd3, 0x5c, 0x3a, 0x9f, 0x78, 0xb2, 0x95, 0x4c, 0x9b, - 0xd7, 0xd9, 0xb0, 0x7e, - 0xb1, 0xc7, 0xca, 0x3f, 0x48, 0xe9, 0xec, 0xeb, 0x17, 0x6b, 0xd3, 0xba, - 0x69, 0xb8, 0x3c, 0x96, - 0xb6, 0xc4, 0xeb, 0xae, 0x89, 0x26, 0xe4, 0x8c, 0x71, 0x44, 0x4a, 0xa4, - 0xee, 0x0e, 0x51, 0xec, - 0x46, 0x2e, 0xdc, 0xe7, 0xcb, 0x47, 0xd0, 0xcf, 0xd5, 0x50, 0x37, 0xef, - 0xd8, 0x67, 0x2b, 0x0e, - 0x78, 0x75, 0xfa, 0xc5, 0x21, 0xd1, 0x1a, 0xc0, 0x52, 0x0a, 0xdf, 0xc4, - 0x1b, 0xd5, 0x3d, 0x71, - 0x5b, 0x62, 0x94, 0x57, 0xa5, 0x13, 0x72, 0x46, 0xd9, 0x22, 0x25, 0x52, - 0x77, 0x07, 0xc9, 0x76, - 0x80, 0xda, 0x62, 0x4d, 0x0f, 0xcc, 0xb4, 0xfc, 0x0b, 0xa1, 0xf9, 0x68, - 0x91, 0x58, 0x65, 0x4e, - 0x8c, 0x5c, 0x7b, 0x0d, 0x55, 0x8e, 0x63, 0x5d, 0x69, 0xa0, 0x6e, 0x1d, - 0x73, 0xce, 0x56, 0x1c, - 0xeb, 0xe5, 0x92, 0xd9, 0x01, 0x14, 0x1c, 0x7b, 0x99, 0x87, 0xc5, 0x2d, - 0xe8, 0x42, 0x60, 0xb3, - 0x2d, 0x11, 0x2c, 0x73, 0xc5, 0x9f, 0x78, 0x48, 0x47, 0x76, 0x0b, 0xaa, - 0xa1, 0x7d, 0x2e, 0xf3, - 0xfb, 0x6f, 0x0f, 0x98, 0xd9, 0xec, 0xeb, 0x85, 0xa0, 0x3a, 0x73, 0x20, - 0x53, 0x49, 0x24, 0xca, - 0xd9, 0x38, 0xad, 0xbb, 0xb1, 0xc0, 0x01, 0xd5, 0x7c, 0xdc, 0xba, 0x73, - 0xc9, 0x66, 0x45, 0x9e, - 0xe0, 0x60, 0xaa, 0x08, 0x9a, 0x99, 0xc3, 0xbd, 0x9d, 0xa9, 0xcb, 0x46, - 0x8d, 0x62, 0x3e, 0x9b, - 0x9e, 0x56, 0xbd, 0xed, 0x96, 0x69, 0x53, 0xcc, 0xfe, 0x42, 0xbe, 0x59, - 0xe7, 0xfc, 0xfb, 0xc3, - 0x36, 0x1e, 0x89, 0xe3, 0x86, 0xea, 0x50, 0x70, 0x7a, 0xe5, 0xb3, 0xcc, - 0x7f, 0x56, 0x34, 0xa2, - 0x42, 0xed, 0x6a, 0x66, 0xfd, 0x79, 0x9d, 0x11, 0x4a, 0xee, 0xfb, 0x7d, - 0x86, 0x15, 0x3a, 0x81, - 0x43, 0xad, 0xa6, 0xd7, 0x11, 0x97, 0x1f, 0xc7, 0x1d, 0x20, 0xc8, 0xb8, - 0x70, 0xe8, 0xaf, 0xd2, - 0xde, 0x3b, 0x8c, 0x2a, 0x70, 0x0f, 0x09, 0xb2, 0x1a, 0xf3, 0x23, 0x6d, - 0x4e, 0xd0, 0x28, 0xe4, - 0xaf, 0x4b, 0x15, 0x9f, 0xd1, 0x4c, 0x0b, 0xdb, 0xe2, 0x88, 0x94, 0x8b, - 0x1f, 0x1c, 0xa2, 0x1b, - 0x56, 0xa4, 0x41, 0xa6, 0x13, 0xbf, 0x27, 0x31, 0xec, 0xed, 0x81, 0xe2, - 0x63, 0x6c, 0x6f, 0x77, - 0xdb, 0xb8, 0xf6, 0x1a, 0xaa, 0xdf, 0xc6, 0xba, 0xd2, 0x83, 0xdc, 0x3a, - 0xe6, 0x5f, 0xac, 0x38, - 0x70, 0x30, 0x55, 0x04, 0x4d, 0xad, 0x80, 0xbf, 0xaf, 0xb5, 0x84, 0x23, - 0xa7, 0x31, 0x1f, 0xac, - 0x3f, 0x1b, 0xea, 0x93, 0x06, 0x78, 0x48, 0xd9, 0xd0, 0x94, 0xdb, 0xee, - 0x35, 0x4f, 0x83, 0x2c, - 0x77, 0x33, 0x74, 0x95, 0x8c, 0x62, 0x88, 0xd8, 0xc9, 0x9a, 0x1d, 0x3d, - 0x20, 0x87, 0x72, 0xd6, - 0x75, 0xb3, 0x2f, 0x34, 0x97, 0x7d, 0x4f, 0xb7, 0x67, 0xc5, 0x7b, 0x74, - 0x0f, 0xbe, 0x9b, 0x70, - 0x87, 0xd9, 0x43, 0xdc, 0xce, 0x03, 0xbc, 0x9b, 0x6d, 0x8e, 0x60, 0x76, - 0x16, 0xee, 0x08, 0x34, - 0x93, 0x90, 0x68, 0x1c, 0x20, 0xc5, 0x06, 0xbb, 0xcb, 0x8d, 0x1a, 0xe9, - 0xf3, 0x97, 0x5d, 0xc2, - 0x1d, 0x4c, 0x48, 0xb0, 0x6e, 0x54, 0xa2, 0x89, 0x0c, 0x72, 0x12, 0xbd, - 0xaf, 0x60, 0xe2, 0x78, - 0xfd, 0x2c, 0xe2, 0xb8, 0xf4, 0xcd, 0x61, 0x34, 0x91, 0xdb, 0xd9, 0xfb, - 0x22, 0x02, 0xdc, 0xe3, - 0x9a, 0x95, 0x0b, 0x6c, 0xa0, 0x57, 0x1e, 0x12, 0x61, 0xfc, 0x72, 0xcb, - 0xb9, 0x8e, 0xea, 0x4c, - 0xea, 0xa5, 0x5e, 0x68, 0xed, 0xfa, 0x9e, 0xad, 0xce, 0x49, 0xf6, 0xe8, - 0x1e, 0xbf, 0xf5, 0xe0, - 0xe5, 0xe3, 0xd0, 0x38, 0x40, 0x49, 0x0c, 0xb5, 0x55, 0xd9, 0x34, 0x11, - 0x25, 0xed, 0xba, 0x47, - 0x55, 0x64, 0xd6, 0xb6, 0xe4, 0x4e, 0x62, 0x88, 0x15, 0x7c, 0xd4, 0x6e, - 0xba, 0xa8, 0x13, 0x82, - 0x4d, 0xab, 0xe4, 0x36, 0x50, 0xca, 0x0f, 0x09, 0xd1, 0x7e, 0x39, 0x84, - 0xbd, 0x47, 0x75, 0x26, - 0x2f, 0x91, 0x77, 0xd2, 0xde, 0x80, 0xbf, 0x27, 0xe9, 0x29, 0x6d, 0xe3, - 0x8e, 0x44, 0xc7, 0x55, - 0x8e, 0xdc, 0x20, 0xac, 0x4e, 0x91, 0xa4, 0x32, 0xc7, 0xff, 0x08, 0x54, - 0x5c, 0xf7, 0xbf, 0xba, - 0xab, 0x88, 0xa3, 0x1e, 0xe7, 0x72, 0x46, 0x05, 0x7d, 0x36, 0x58, 0x19, - 0x41, 0x6e, 0xb3, 0x94, - 0xec, 0xe6, 0xb3, 0x48, 0xc0, 0xdb, 0x14, 0x1c, 0xff, 0xa8, 0x5c, 0x33, - 0x6f, 0xf4, 0x0d, 0xc9, - 0x64, 0x79, 0x7e, 0xc4, 0xa3, 0x6b, 0x3a, 0x9f, 0x09, 0xb6, 0xfe, 0xbc, - 0x42, 0x48, 0x4a, 0x5a, - 0xb3, 0x47, 0x91, 0x9e, 0x53, 0xf6, 0x2b, 0x84, 0xb9, 0x34, 0xb5, 0xf3, - 0x46, 0x81, 0xd5, 0x30, - 0xd5, 0xbe, 0xb4, 0xfb, 0xeb, 0x82, 0xd6, 0x74, 0x1e, 0xdd, 0x2d, 0x06, - 0x2b, 0xf0, 0x76, 0xcc, - 0x91, 0x10, 0x33, 0xbd, 0x3b, 0xda, 0xc1, 0xd4, 0x65, 0xd2, 0x7c, 0xa0, - 0xdc, 0xae, 0xb4, 0x64, - 0x5e, 0xe1, 0xee, 0x67, 0x7f, 0xc3, 0xbd, 0x4e, 0x11, 0x52, 0xda, 0x05, - 0xdf, 0x88, 0x4d, 0xaa, - 0x21, 0x97, 0x35, 0x33, 0x9f, 0xdd, 0xaf, 0xe9, 0x25, 0x77, 0x9c, 0xdf, - 0x43, 0xeb, 0x1d, 0xa1, - 0x49, 0x68, 0x52, 0xb7, 0x66, 0xf4, 0x42, 0xd7, 0x4e, 0xc0, 0xf5, 0x16, - 0xe3, 0x35, 0x64, 0xa9, - 0x5f, 0xa1, 0x22, 0xd6, 0x93, 0x2d, 0x3f, 0x98, 0x46, 0x9c, 0xe9, 0xc0, - 0x29, 0x75, 0xd8, 0xf9, - 0x65, 0x39, 0xb2, 0x75, 0x4f, 0x85, 0xb8, 0x49, 0x5e, 0x78, 0xcd, 0x79, - 0xb4, 0xb5, 0xdf, 0x09, - 0x53, 0x27, 0x3b, 0x96, 0xc9, 0x6f, 0xe8, 0x39, 0x24, 0x9d, 0x7e, 0xb5, - 0xcb, 0xe3, 0xeb, 0xab, - 0x27, 0xd4, 0xd8, 0x13, 0xb2, 0xfc, 0x25, 0x58, 0x14, 0x96, 0x36, 0x04, - 0x32, 0xa0, 0xe5, 0x88, - 0xcc, 0x31, 0x4a, 0xca, 0xb3, 0xe8, 0x39, 0x23, 0x8d, 0x11, 0xf3, 0x29, - 0xda, 0xe2, 0x85, 0x3b, - 0x61, 0xfa, 0x04, 0xf4, 0x79, 0xbb, 0xf5, 0x97, 0xc1, 0xc6, 0x01, 0xeb, - 0xea, 0xc7, 0xce, 0x86, - 0x82, 0x5a, 0x39, 0xec, 0x14, 0xd3, 0x73, 0x93, 0xa5, 0xfe, 0x9f, 0x21, - 0xbe, 0x61, 0x8c, 0xe8, - 0xcf, 0xf1, 0xdd, 0xda, 0x44, 0x19, 0x7c, 0x9a, 0x74, 0x80, 0xa6, 0xa5, - 0x03, 0x26, 0xf9, 0xce, - 0xfa, 0x2f, 0xc3, 0x29, 0x35, 0x02, 0x69, 0x53, 0xf7, 0xf4, 0x40, 0xe5, - 0xa5, 0xb4, 0xb1, 0x99, - 0xbf, 0xc1, 0x88, 0xde, 0x09, 0xb4, 0xfc, 0x25, 0xdb, 0x35, 0x22, 0x86, - 0xa4, 0x17, 0xe6, 0x62, - 0xca, 0x72, 0xa7, 0xea, 0x9e, 0xc9, 0xb3, 0x92, 0xbc, 0xf0, 0x59, 0xf2, - 0xab, 0xa9, 0x7d, 0x12, - 0x4e, 0x6b, 0x73, 0x26, 0xa7, 0x3b, 0x4a, 0xb0, 0x28, 0xef, 0x6c, 0x08, - 0x64, 0x83, 0x09, 0xd3, - 0x97, 0x53, 0xde, 0x9d, 0x16, 0xfb, 0x4b, 0x65, 0x54, 0x33, 0xd6, 0x7b, - 0xad, 0xe5, 0x4c, 0x4d, - 0x9b, 0xd5, 0xc7, 0xdd, 0x4c, 0xb9, 0x9c, 0xc4, 0x36, 0x32, 0x41, 0x0e, - 0x4f, 0x73, 0x7f, 0x1f, - 0x8d, 0x1c, 0xb7, 0xbc, 0xb9, 0x60, 0xe1, 0x8b, 0x3e, 0x6e, 0x5d, 0xd8, - 0x85, 0x33, 0xc3, 0x4f, - 0x68, 0xff, 0x67, 0x84, 0xf9, 0x29, 0xed, 0x3e, 0x6b, 0xb7, 0x69, 0xc9, - 0xa0, 0xde, 0x79, 0x08, - 0x15, 0x09, 0xe7, 0x71, 0x02, 0x28, 0x38, 0xf6, 0xf1, 0xcd, 0x49, 0x5a, - 0x13, 0x84, 0xc0, 0xa5, - 0xfc, 0x6c, 0x2e, 0x09, 0x18, 0x23, 0xe3, 0xe2, 0xc6, 0x15, 0xea, 0x3e, - 0xd4, 0xff, 0x49, 0xb0, - 0xfe, 0xec, 0x75, 0xa8, 0x03, 0x3c, 0x24, 0x8d, 0x68, 0x4a, 0x8c, 0x77, - 0xfb, 0xc6, 0xa0, 0x16, - 0x58, 0xa2, 0x03, 0x47, 0x52, 0xe2, 0x37, 0xff, 0x20, 0xb3, 0x70, 0xde, - 0xae, 0xc3, 0xb5, 0x83, - 0x12, 0x0a, 0xc6, 0xe0, 0xc3, 0xe7, 0x30, 0x91, 0x97, 0xe2, 0xd0, 0x44, - 0x94, 0x32, 0xad, 0xdf, - 0x1b, 0x0f, 0xa5, 0x90, 0x43, 0x75, 0x28, 0x38, 0x3d, 0x93, 0xb8, 0x66, - 0xde, 0x2b, 0x1a, 0x51, - 0x10, 0x8a, 0x9d, 0x41, 0xd8, 0xf8, 0xf7, 0xfe, 0x39, 0xbd, 0xb6, 0x0d, - 0xbb, 0x0b, 0x44, 0x79, - 0xc1, 0xf7, 0x9f, 0x3b, 0x05, 0x44, 0x6c, 0x54, 0xb8, 0xde, 0x57, 0x99, - 0xce, 0x89, 0x23, 0x3a, - 0xe2, 0xe0, 0xf1, 0xa9, 0x81, 0x86, 0x04, 0xd2, 0x33, 0xf6, 0xad, 0x0f, - 0xa2, 0x5b, 0xd7, 0x3d, - 0x19, 0x8f, 0xfe, 0x31, 0x58, 0x6a, 0xef, 0x57, 0x93, 0xcc, 0xde, 0x2f, - 0xf1, 0x12, 0xf3, 0xf7, - 0x52, 0x67, 0xf7, 0x27, 0x25, 0x81, 0x6a, 0xef, 0x73, 0x53, 0x4d, 0x70, - 0x3d, 0x1e, 0x7e, 0xf8, - 0xef, 0x26, 0x24, 0x58, 0x37, 0x2a, 0x51, 0xa5, 0x06, 0x39, 0x09, 0xbf, - 0xb6, 0x30, 0x71, 0x3c, - 0xdc, 0xbb, 0xd7, 0x8b, 0x6b, 0x10, 0xce, 0xdd, 0xb4, 0xac, 0x45, 0x24, - 0x61, 0xe9, 0xc1, 0x42, - 0xf0, 0xea, 0x37, 0x49, 0x42, 0x61, 0x34, 0x43, 0xa4, 0x14, 0x7d, 0x4b, - 0x36, 0x69, 0x7a, 0xe2, - 0x3c, 0xdb, 0x7d, 0x83, 0xf1, 0x89, 0x0d, 0x60, 0x29, 0x05, 0x8e, 0x62, - 0xec, 0x8b, 0xff, 0xd9, - 0x9c, 0xd6, 0xe6, 0x4c, 0x8d, 0x76, 0x94, 0xa3, 0x50, 0x1d, 0xd8, 0x10, - 0xc8, 0xc5, 0x12, 0x65, - 0xbe, 0x81, 0x44, 0x6f, 0xe5, 0x5a, 0x7e, 0xf3, 0x8c, 0xfb, 0x11, 0x43, - 0x52, 0xea, 0x73, 0x31, - 0x38, 0x18, 0xcb, 0x02, 0xc7, 0xb7, 0x40, 0xbe, 0xb6, 0xbb, 0x42, 0xf0, - 0xb2, 0xf9, 0xee, 0x56, - 0x2b, 0x52, 0xc1, 0x53, 0xe8, 0xbe, 0xf2, 0xf9, 0x76, 0x97, 0xa1, 0x71, - 0xd0, 0x36, 0xd6, 0xda, - 0xc9, 0xb2, 0x30, 0xfa, 0x69, 0x38, 0xf6, 0x2b, 0x45, 0x61, 0x0c, 0x7e, - 0x72, 0x6d, 0x01, 0xe7, - 0x24, 0x14, 0x4f, 0x03, 0x45, 0x0d, 0x60, 0xe1, 0xed, 0x07, 0x63, 0x88, - 0xeb, 0x64, 0x99, 0x7d, - 0x98, 0x15, 0x50, 0xcd, 0xbb, 0x48, 0xd9, 0x7d, 0xcf, 0xa3, 0x14, 0x82, - 0x96, 0xb7, 0x03, 0xea, - 0x30, 0x5d, 0x64, 0xc3, 0xab, 0xcb, 0xda, 0xc1, 0x4b, 0x04, 0x19, 0x17, - 0x0e, 0x1d, 0xcc, 0x8b, - 0x0c, 0x86, 0x19, 0x40, 0x5a, 0x42, 0xd7, 0xa1, 0x62, 0x01, 0x97, 0x75, - 0xe2, 0x96, 0x33, 0x52, - 0x69, 0xbf, 0xab, 0x35, 0x15, 0xc7, 0x6f, 0xe8, 0x3c, 0x79, 0x5a, 0x0c, - 0x56, 0x23, 0xec, 0x5b, - 0x54, 0x24, 0x1a, 0x07, 0x08, 0xa0, 0xe0, 0x5e, 0x42, 0xb2, 0xe7, 0xab, - 0x4c, 0x55, 0x86, 0xd1, - 0xee, 0x66, 0xe8, 0xe9, 0xdb, 0xc4, 0xd3, 0x73, 0x51, 0xf7, 0x3a, 0x7a, - 0x40, 0xcd, 0xe4, 0x6f, - 0xb5, 0x04, 0x7c, 0xbe, 0x7e, 0xd7, 0xa1, 0x35, 0x88, 0xd5, 0x1f, 0x28, - 0x37, 0xca, 0x2d, 0x19, - 0x4f, 0x2b, 0xbf, 0x97, 0x4b, 0xd5, 0xc8, 0x66, 0x7f, 0x21, 0x5f, 0xcd, - 0x92, 0x7e, 0x9c, 0x80, - 0x39, 0x58, 0x07, 0xb3, 0x2b, 0x59, 0xc2, 0x68, 0xe1, 0x75, 0x71, 0x35, - 0x44, 0x04, 0x7b, 0x05, - 0x6a, 0x7f, 0x3c, 0x25, 0xe2, 0x36, 0x2a, 0x51, 0xc5, 0xe8, 0x0f, 0x80, - 0x8f, 0xe7, 0x90, 0xae, - 0x1c, 0x0c, 0x84, 0x01, 0x82, 0xba, 0x20, 0x5f, 0x5b, 0xbc, 0x21, 0x78, - 0x59, 0x9d, 0x77, 0x2b, - 0x89, 0xdf, 0x01, 0x3d, 0x8f, 0x5e, 0xac, 0x55, 0xa1, 0xd0, 0x91, 0x4a, - 0xdb, 0x41, 0xd2, 0xc0, - 0x66, 0xf9, 0x25, 0x65, 0xb8, 0x74, 0xfd, 0xf0, 0xa7, 0xe9, 0x98, 0xf5, - 0x6d, 0x71, 0xa3, 0xfc, - 0xa5, 0x8e, 0xe1, 0xff, 0xa6, 0x2f, 0x56, 0xcb, 0xb1, 0x68, 0xa9, 0x25, - 0x8c, 0xc1, 0x69, 0x60, - 0xe4, 0xa3, 0x1c, 0x89, 0xac, 0xa7, 0x8e, 0x63, 0x02, 0x17, 0x07, 0xd4, - 0xd3, 0x10, 0x2f, 0x14, - 0x72, 0xb0, 0x0e, 0xa5, 0x56, 0xb2, 0x47, 0xd0, 0x01, 0xea, 0xe2, 0x6a, - 0x88, 0x08, 0xf6, 0x0a, - 0xf6, 0xa9, 0xda, 0x69, 0x6f, 0x40, 0xbe, 0xf2, 0x95, 0xf5, 0xd7, 0x90, - 0x47, 0x22, 0x82, 0xcb, - 0x14, 0x49, 0x2b, 0xc0, 0xee, 0xc6, 0xba, 0x20, 0xa6, 0x03, 0x7a, 0x9f, - 0xe5, 0x79, 0x55, 0xf6, - 0x02, 0x80, 0x5b, 0xa1, 0x1b, 0x1f, 0xc7, 0x6f, 0xae, 0x5f, 0x66, 0x49, - 0x2f, 0x39, 0xe9, 0xa6, - 0x50, 0xe7, 0xac, 0x86, 0x3e, 0x9e, 0xad, 0x80, 0xdd, 0x0c, 0x2b, 0x39, - 0x12, 0x27, 0x97, 0x5e, - 0xbd, 0x41, 0xd3, 0x7f, 0x12, 0xab, 0x3b, 0x4a, 0x75, 0x6a, 0x44, 0xcf, - 0x8b, 0x2e, 0x0f, 0xc4, - 0x9f, 0x16, 0x71, 0x5c, 0x7a, 0x87, 0xd1, 0x1a, 0xa9, 0x8c, 0x8d, 0x9c, - 0x11, 0x01, 0x6e, 0x90, - 0xe3, 0xa0, 0x3d, 0x18, 0x6d, 0x68, 0x86, 0x04, 0x64, 0x38, 0x9e, 0xca, - 0x54, 0xa6, 0x42, 0x6e, - 0x05, 0x83, 0x7a, 0x30, 0xda, 0xd0, 0xcf, 0x08, 0xc8, 0x70, 0xff, 0x57, - 0xa8, 0x8f, 0x84, 0xdc, - 0x07, 0x03, 0x21, 0x91, 0xc1, 0xcf, 0x08, 0x67, 0x66, 0x2f, 0x99, 0x1e, - 0x87, 0xb6, 0x6d, 0x7a, - 0x88, 0x9f, 0xcd, 0x8c, 0x63, 0xb0, 0x2e, 0x83, 0xf6, 0x1e, 0xa2, 0x8f, - 0x2d, 0xbc, 0x47, 0x93, - 0xcb, 0x32, 0x6b, 0x5b, 0x72, 0x27, 0x31, 0x44, 0xeb, 0x3e, 0x6a, 0x37, - 0x5d, 0x54, 0xe8, 0x41, - 0x3a, 0x98, 0x90, 0xa3, 0xdc, 0xa8, 0x87, 0xd1, 0x18, 0xe4, 0x24, 0xb9, - 0x9d, 0xc0, 0x07, 0xf0, - 0x85, 0x59, 0x18, 0x7d, 0xd5, 0x1c, 0x7b, 0xf4, 0xc3, 0xd1, 0x06, 0x3f, - 0x39, 0xd7, 0xe1, 0x92, - 0x41, 0x2d, 0xfd, 0x76, 0x0a, 0x88, 0xd8, 0xa8, 0xb3, 0x7f, 0xae, 0xf1, - 0x5f, 0xd1, 0x46, 0x74, - 0x2a, 0x12, 0x0d, 0xe2, 0x04, 0x50, 0x70, 0x2f, 0x21, 0x59, 0x92, 0xb4, - 0x26, 0xcb, 0x43, 0x89, - 0x92, 0xd0, 0xa4, 0xad, 0xcc, 0x2b, 0x84, 0x6d, 0x9c, 0x43, 0x29, 0x2c, - 0x05, 0x6a, 0xc8, 0x91, - 0xb9, 0x82, 0x65, 0xfe, 0x24, 0x95, 0x76, 0x94, 0xea, 0xd4, 0x88, 0x5d, - 0xd5, 0x5c, 0x1e, 0x4b, - 0xe6, 0x23, 0x47, 0x28, 0xb7, 0xb8, 0x49, 0x0c, 0xac, 0x48, 0x61, 0x9d, - 0xfc, 0x29, 0xc6, 0xb2, - 0xf2, 0x6a, 0x6c, 0xe8, 0x59, 0x7e, 0xf3, 0x2c, 0x0a, 0x4b, 0x1b, 0x02, - 0x19, 0x50, 0x93, 0x44, - 0x28, 0x92, 0x56, 0x43, 0x1f, 0x4f, 0xb7, 0x40, 0x8f, 0x06, 0xf4, 0xfd, - 0x09, 0xf2, 0xaa, 0x2f, - 0x7d, 0xf6, 0x80, 0xf5, 0xfb, 0x01, 0xd5, 0xc8, 0x9a, 0x7a, 0x20, 0x93, - 0xb3, 0x5a, 0xb9, 0xad, - 0xbb, 0x02, 0x3e, 0x5f, 0x3f, 0x8a, 0xb1, 0xfb, 0x44, 0x8b, 0xee, 0x14, - 0xfa, 0x65, 0xf7, 0xed, - 0xf3, 0x2a, 0xa0, 0x59, 0xb5, 0x90, 0x71, 0xfa, 0x5d, 0x85, 0x28, 0xc7, - 0xef, 0xad, 0x06, 0x17, - 0xe7, 0x63, 0x8b, 0x99, 0x5b, 0x56, 0xcb, 0xda, 0xfb, 0x86, 0x52, 0x58, - 0x0a, 0xd4, 0x53, 0xe1, - 0xad, 0xcb, 0x4e, 0x3e, 0xca, 0x53, 0xcc, 0xb4, 0x4c, 0xd7, 0xf2, 0xc2, - 0x30, 0x25, 0x4b, 0xbd, - 0x0e, 0x06, 0x42, 0xe1, 0x41, 0x5d, 0x10, 0xce, 0xcc, 0x5e, 0xf1, 0x3c, - 0xcd, 0xaf, 0xda, 0xf4, - 0x76, 0x73, 0xb8, 0x24, 0x60, 0x8c, 0x0a, 0x0e, 0x9e, 0x54, 0x2e, 0xf8, - 0xd6, 0x7a, 0xe7, 0x85, - 0x3b, 0xd8, 0x5c, 0x12, 0x30, 0x46, 0x05, 0x07, 0x4f, 0x2a, 0x17, 0x7c, - 0x6b, 0x3d, 0x92, 0xa3, - 0x6d, 0x7c, 0x1d, 0xb4, 0x23, 0xf9, 0x22, 0x36, 0xa3, 0xc7, 0x96, 0x9e, - 0x08, 0x51, 0xfd, 0xd4, - 0x20, 0xd7, 0xf9, 0x82, 0x73, 0x33, 0x2d, 0x3f, 0x72, 0xb9, 0xaf, 0x1a, - 0xb5, 0x16, 0x88, 0xf2, - 0xa9, 0x08, 0xf8, 0xbf, 0xfc, 0x6d, 0x81, 0x6a, 0xd3, 0x69, 0x3e, 0x50, - 0x6e, 0x57, 0x5a, 0x32, - 0x0b, 0x85, 0x38, 0xd1, 0x9b, 0x8d, 0xdf, 0xc6, 0x04, 0x2e, 0x0e, 0x6b, - 0x65, 0x20, 0x5e, 0x28, - 0xce, 0xb1, 0x11, 0x6b, 0xa8, 0xf7, 0xfe, 0x4c, 0x23, 0x4e, 0x95, 0x60, - 0xf5, 0xdb, 0x6c, 0x9d, - 0x8f, 0x9c, 0xec, 0x1d, 0xa2, 0x7f, 0x26, 0xe4, 0x90, 0x31, 0x3b, 0x91, - 0xaa, 0x0a, 0x2a, 0xe9, - 0x94, 0x93, 0x49, 0x8d, 0xe1, 0x0a, 0x0e, 0xdc, 0xad, 0xa2, 0x83, 0xf7, - 0x74, 0x21, 0x30, 0xb8, - 0x4c, 0xeb, 0x28, 0x87, 0xbc, 0x24, 0x8d, 0xdf, 0x86, 0xb0, 0x0a, 0x41, - 0x4b, 0xba, 0xe0, 0x75, - 0x29, 0xd2, 0x9a, 0xf2, 0xf3, 0xa1, 0x35, 0x96, 0xd8, 0xc8, 0xc7, 0x38, - 0xff, 0x0f, 0x3f, 0x7c, - 0x5a, 0x22, 0x58, 0xe6, 0x49, 0xfd, 0xf0, 0x90, 0x8e, 0xec, 0x16, 0x97, - 0x81, 0xfa, 0x5c, 0x25, - 0xb4, 0x44, 0xb0, 0x0f, 0x92, 0x39, 0x23, 0xe3, 0xdf, 0x1b, 0x2c, 0xed, - 0xc1, 0x37, 0xb8, 0x4a, - 0x6e, 0xbc, 0x8a, 0xa4, 0xd4, 0x08, 0x67, 0x8f, 0x5a, 0x56, 0xc3, 0x12, - 0xd1, 0x95, 0x81, 0x21, - 0x1a, 0x4f, 0x69, 0x21, 0xaf, 0x9b, 0xaa, 0xee, 0x6a, 0x5d, 0x8b, 0xa3, - 0x28, 0xd6, 0x8f, 0x02, - 0xf7, 0xe9, 0x16, 0xd8, 0x83, 0xae, 0x3c, 0x24, 0xc2, 0x3b, 0xe4, 0x55, - 0xb1, 0xdf, 0x17, 0x98, - 0x67, 0xb9, 0xe9, 0xd4, 0x54, 0x9a, 0x7f, 0x26, 0xf0, 0x27, 0xab, 0x30, - 0x9b, 0x8c, 0x36, 0xaf, - 0xd4, 0xfe, 0x78, 0x4a, 0x07, 0x6c, 0x54, 0xa2, 0x49, 0x13, 0x1e, 0xc3, - 0xdd, 0x0d, 0xe3, 0x9f, - 0xb8, 0xc2, 0xa9, 0x4f, 0xc8, 0x7b, 0xf4, 0x42, 0xbd, 0x1a, 0xbb, 0x98, - 0x23, 0xa1, 0x8b, 0x18, - 0xd8, 0x78, 0x61, 0x0a, 0x5d, 0x2e, 0x83, 0x03, 0x2b, 0x12, 0x89, 0xb6, - 0x3f, 0x9b, 0xd0, 0xcd, - 0x8a, 0x1f, 0x96, 0x2d, 0x78, 0xaf, 0xe9, 0xec, 0x58, 0x41, 0xc4, 0xc6, - 0x02, 0x85, 0xae, 0x35, - 0xda, 0xf8, 0x3a, 0xab, 0x46, 0x31, 0x44, 0x6c, 0x85, 0x4d, 0xef, 0xff, - 0x10, 0xa2, 0x39, 0x6b, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x3d, 0x9b, 0xb1, 0x32, 0x1d, 0x67, 0x8f, 0xb6, 0x7e, 0xcb, 0xbd, 0xa7, - 0x1a, 0x76, 0x6a, 0x8a, - 0x99, 0x55, 0x9c, 0x7c, 0x57, 0xa6, 0x5b, 0xab, 0x98, 0x6d, 0x27, 0x47, - 0x60, 0x4a, 0x96, 0xb9, - 0xd3, 0xfd, 0x59, 0xdb, 0xc6, 0xa3, 0x5c, 0xc5, 0x2f, 0x3c, 0x87, 0xdd, - 0x5a, 0xbb, 0x8e, 0xe5, - 0x9d, 0x96, 0x2a, 0xfd, 0x61, 0x98, 0x16, 0x75, 0x07, 0xd3, 0xeb, 0xd5, - 0x3e, 0x38, 0x87, 0x36, - 0x7e, 0x36, 0x17, 0xe5, 0x0c, 0xf0, 0x90, 0x71, 0x63, 0xeb, 0x75, 0x1f, - 0x6a, 0x9e, 0xc5, 0x58, - 0x06, 0x43, 0xed, 0x20, 0x2d, 0x21, 0x8a, 0xb1, 0x31, 0xe1, 0xaa, 0xdb, - 0x71, 0x4b, 0xf8, 0x29, - 0xd1, 0x7d, 0x02, 0x7a, 0xdd, 0xbc, 0x9b, 0xaa, 0x81, 0x63, 0xe1, 0x94, - 0x75, 0x82, 0x67, 0x43, - 0xaa, 0xc8, 0x6f, 0xaf, 0x0b, 0x9c, 0xc4, 0xd3, 0x2a, 0xf8, 0x6b, 0xdc, - 0xb7, 0x93, 0x26, 0xc7, - 0xa4, 0xce, 0x2d, 0x4e, 0x4a, 0xc1, 0xd4, 0x1d, 0xe6, 0xa6, 0x9a, 0xe0, - 0x7a, 0x3c, 0xfc, 0x33, - 0x03, 0xc0, 0x97, 0x10, 0xf7, 0xf1, 0x45, 0xb9, 0xf9, 0x91, 0x55, 0x8c, - 0xd9, 0xc4, 0x7c, 0xf5, - 0x23, 0x17, 0x6e, 0x92, 0x84, 0xc2, 0x68, 0x86, 0x8b, 0x28, 0xfa, 0x96, - 0x6c, 0xd2, 0xf4, 0x07, - 0x0a, 0xc5, 0xf4, 0x60, 0x77, 0x63, 0x5d, 0x10, 0x53, 0xe0, 0x3d, 0xae, - 0x93, 0xdd, 0xcb, 0x7b, - 0x7c, 0xb6, 0x4c, 0x44, 0x17, 0xef, 0x57, 0x1e, 0xcd, 0xb4, 0x13, 0x56, - 0x45, 0xa7, 0x2c, 0xfe, - 0x22, 0x57, 0xa2, 0x23, 0x68, 0x2c, 0xea, 0x50, 0xdc, 0xe6, 0xc9, 0x53, - 0x9a, 0x2f, 0x61, 0x54, - 0x37, 0x5e, 0x45, 0x52, 0x6a, 0x04, 0xd2, 0xa6, 0x2d, 0x2b, 0x80, 0x09, - 0x89, 0xab, 0xa1, 0xf1, - 0x4a, 0xa8, 0xc5, 0xa7, 0x91, 0x05, 0x07, 0x6e, 0xb7, 0x51, 0xa0, 0x9a, - 0x3a, 0xf1, 0x18, 0x5c, - 0x2e, 0xd1, 0xbb, 0x63, 0x32, 0x6e, 0x3d, 0xf1, 0xbe, 0xe7, 0x5e, 0x26, - 0x78, 0xb9, 0x52, 0x06, - 0x25, 0x54, 0x83, 0xb2, 0xa9, 0xe3, 0xe2, 0x37, 0xba, 0xc9, 0x50, 0x4d, - 0x1d, 0x99, 0x0c, 0x2e, - 0xf8, 0xaf, 0x98, 0x88, 0x2e, 0x1d, 0xae, 0x3c, 0x59, 0xab, 0x26, 0xac, - 0x8a, 0x8d, 0x58, 0x3f, - 0xdd, 0xfb, 0x1b, 0x3a, 0x87, 0xfe, 0x4c, 0x0b, 0xe3, 0x62, 0x76, 0xe1, - 0x97, 0x14, 0x54, 0x11, - 0x31, 0x1d, 0xa8, 0x72, 0x47, 0x25, 0x58, 0x17, 0x1c, 0xca, 0x2a, 0xd2, - 0xf8, 0xe0, 0x59, 0xd8, - 0x74, 0xf3, 0xe3, 0x85, 0x7b, 0x93, 0xcd, 0x61, 0x30, 0x0b, 0x48, 0xb1, - 0xf9, 0x43, 0x0e, 0x23, - 0x59, 0xe2, 0xcf, 0xf6, 0xbe, 0x0c, 0xb5, 0x29, 0x77, 0x7d, 0x43, 0x1b, - 0x58, 0x3e, 0x20, 0xd0, - 0xcd, 0x71, 0x86, 0x7b, 0x5f, 0x06, 0xbb, 0xf5, 0xda, 0xdf, 0xc0, 0xec, - 0x2c, 0x1f, 0x10, 0x68, - 0x5d, 0x21, 0x79, 0x77, 0x88, 0x32, 0xf8, 0xf7, 0xe8, 0xc3, 0x8f, 0x89, - 0x06, 0x4c, 0x31, 0x5f, - 0x08, 0x45, 0xaf, 0xc1, 0x6c, 0x7c, 0x9a, 0x7f, 0xfd, 0xbf, 0x5b, 0xe7, - 0xbc, 0xe4, 0x22, 0xdd, - 0x7f, 0x76, 0xdb, 0x54, 0xe0, 0x1e, 0x12, 0xa7, 0x34, 0x25, 0x46, 0xda, - 0x9c, 0x63, 0x50, 0x0b, - 0xa6, 0x4e, 0x76, 0xef, 0x51, 0xde, 0x13, 0x72, 0x48, 0xf9, 0xfc, 0xa9, - 0x55, 0x05, 0x15, 0x95, - 0xf9, 0xef, 0x54, 0x39, 0xc2, 0xf3, 0x2c, 0xea, 0x0e, 0x65, 0x15, 0x69, - 0x7c, 0x70, 0xcd, 0x6c, - 0x90, 0x50, 0xff, 0x0c, 0xd7, 0x34, 0x43, 0x02, 0x32, 0x1c, 0x4f, 0x65, - 0x2a, 0x53, 0x21, 0x37, - 0x0f, 0x46, 0x8e, 0x50, 0xad, 0xb3, 0x92, 0x18, 0x9b, 0x90, 0xc2, 0xf9, - 0x3b, 0x52, 0x4f, 0xa7, - 0xb0, 0x87, 0x06, 0x8e, 0xa4, 0x07, 0x6e, 0x3d, 0x40, 0xa5, 0xe0, 0x7f, - 0x9f, 0x45, 0xa9, 0xc5, - 0xac, 0x8b, 0x82, 0x8f, 0x26, 0xbd, 0x4e, 0x62, 0x1b, 0x19, 0xc1, 0x07, - 0xc6, 0xd8, 0xde, 0xee, - 0x60, 0xba, 0xc8, 0x45, 0x95, 0x55, 0x77, 0x41, 0x96, 0x08, 0x32, 0x2e, - 0x1c, 0x3a, 0x5b, 0xd5, - 0x6c, 0x3c, 0xd1, 0x05, 0xcf, 0x17, 0xa0, 0xe0, 0xf4, 0x09, 0xa5, 0x5b, - 0xfe, 0xac, 0x68, 0x87, - 0x13, 0x4a, 0x0a, 0x51, 0x2f, 0x09, 0xb2, 0x47, 0xc0, 0x2c, 0xe3, 0x81, - 0x62, 0xcf, 0x38, 0x8c, - 0xbc, 0x01, 0x1f, 0xce, 0xfe, 0x45, 0xb9, 0x9c, 0x22, 0xa4, 0x77, 0x0a, - 0x7d, 0xd3, 0x9a, 0x97, - 0x32, 0xdd, 0x3f, 0x62, 0xb0, 0xd4, 0x1d, 0xae, 0xe5, 0x5b, 0x7f, 0x5e, - 0x21, 0x24, 0x25, 0x2d, - 0xf1, 0xaa, 0xfb, 0xf8, 0xae, 0x8f, 0xb6, 0x95, 0xf3, 0xda, 0x4e, 0x8e, - 0xc0, 0x94, 0xef, 0xb1, - 0xd6, 0x7e, 0x23, 0xeb, 0x1c, 0x73, 0x93, 0xcd, 0xe7, 0x4c, 0x78, 0x8a, - 0xf2, 0x34, 0x0a, 0x39, - 0x44, 0xae, 0x87, 0x46, 0xd0, 0x58, 0x17, 0xa0, 0x7b, 0x0f, 0x51, 0xa6, - 0xf7, 0x5e, 0xc2, 0xa8, - 0x62, 0x3a, 0x93, 0xe4, 0x8e, 0x4a, 0xb0, 0x2e, 0x38, 0x57, 0x54, 0x67, - 0x33, 0x03, 0xb2, 0x73, - 0xa8, 0x48, 0x34, 0x0e, 0x10, 0x83, 0x03, 0xbc, 0x84, 0xa7, 0x0d, 0x95, - 0x98, 0xaa, 0xcf, 0x61, - 0x40, 0x6d, 0x31, 0xc7, 0xe6, 0x66, 0x5a, 0x7e, 0xe4, 0xb1, 0x9d, 0x34, - 0xa9, 0x2c, 0xd3, 0x27, - 0x95, 0xd3, 0x85, 0x3c, 0x0d, 0xe4, 0x8c, 0x0a, 0xfa, 0x6c, 0xb0, 0x32, - 0x82, 0xdc, 0xa5, 0xeb, - 0x11, 0xca, 0x51, 0xf0, 0x34, 0x16, 0x75, 0x28, 0x6e, 0x73, 0x85, 0xc8, - 0x4d, 0xf6, 0xd1, 0x2a, - 0x8b, 0x5f, 0x5a, 0x9c, 0x94, 0x41, 0x6b, 0x3a, 0x0f, 0x8f, 0xf7, 0x03, - 0xf4, 0x78, 0x3b, 0x66, - 0x01, 0x40, 0xcc, 0xb1, 0xec, 0xee, 0x82, 0xd6, 0x57, 0xce, 0x33, 0xc5, - 0xf6, 0xfd, 0x95, 0x53, - 0x0d, 0xc6, 0xd5, 0xf1, 0xb6, 0xac, 0x55, 0x77, 0x35, 0xcf, 0xa4, 0xb0, - 0x14, 0x6b, 0xa6, 0x01, - 0xe1, 0x20, 0x66, 0xb9, 0x76, 0x77, 0x41, 0x6b, 0xca, 0x67, 0xf8, 0x83, - 0x7b, 0x9f, 0xab, 0xc8, - 0x6b, 0x3f, 0xf0, 0x94, 0x0e, 0xd8, 0xa8, 0x87, 0x92, 0x26, 0x3c, 0x45, - 0x79, 0x1a, 0x05, 0xfd, - 0xc2, 0x37, 0x08, 0x2b, 0xf2, 0xb5, 0x29, 0xed, 0x41, 0x4f, 0x02, 0x15, - 0x17, 0x4d, 0x5f, 0xcf, - 0x5c, 0x61, 0xb5, 0xc6, 0x64, 0xdc, 0x7a, 0x21, 0xbf, 0x0d, 0xbc, 0x4c, - 0xf0, 0xb1, 0xa4, 0x0c, - 0xc7, 0xb4, 0x72, 0x1b, 0x28, 0x65, 0xe6, 0xe5, 0x89, 0x3f, 0xfd, 0x42, - 0xbf, 0xc2, 0xdb, 0x13, - 0x84, 0x19, 0xd4, 0xcc, 0x39, 0xf2, 0xf9, 0x22, 0x94, 0x1f, 0x35, 0xfa, - 0xcf, 0x2a, 0x74, 0xc1, - 0x45, 0xee, 0x4b, 0xf7, 0x3c, 0xb6, 0x95, 0x76, 0x2c, 0xc1, 0x62, 0x63, - 0x01, 0xa3, 0x57, 0xfb, - 0x79, 0x35, 0x36, 0x74, 0xcd, 0x3f, 0x98, 0x16, 0x05, 0xc4, 0xec, 0x01, - 0xed, 0x28, 0xa8, 0x22, - 0x4b, 0xe8, 0x09, 0x16, 0x7d, 0xeb, 0x85, 0xb8, 0xe0, 0x9f, 0x93, 0x5f, - 0xcc, 0x0c, 0x8d, 0x0f, - 0x48, 0x28, 0x9e, 0x06, 0x8a, 0x1a, 0xc0, 0x01, 0x19, 0x0e, 0xc6, 0xd3, - 0x15, 0xc8, 0xf1, 0xfa, - 0x6f, 0xfc, 0x46, 0x15, 0x38, 0xe6, 0xe5, 0x59, 0x0d, 0x98, 0xf0, 0xd7, - 0x27, 0x68, 0x14, 0x72, - 0xa7, 0x0e, 0xba, 0x5e, 0xbd, 0x30, 0x91, 0xa4, 0x1f, 0x37, 0xcf, 0x6c, - 0xa3, 0xf8, 0x80, 0xc6, - 0xa2, 0x8d, 0xc0, 0x6e, 0x67, 0xe0, 0x5e, 0xac, 0xd7, 0x47, 0x30, 0x3b, - 0x0b, 0x77, 0x04, 0x1a, - 0xc0, 0xb7, 0x53, 0x8a, 0xe9, 0xaa, 0xee, 0x82, 0xef, 0x10, 0x64, 0x5c, - 0x38, 0x74, 0xb6, 0x69, - 0x2c, 0x51, 0xe0, 0xc2, 0x29, 0x71, 0xfa, 0x9e, 0x10, 0xb8, 0x38, 0x6f, - 0x57, 0x80, 0xbb, 0xa0, - 0x81, 0x9a, 0xae, 0xfc, 0xe3, 0x22, 0x36, 0x2a, 0x5c, 0x6f, 0xca, 0xad, - 0x67, 0xa5, 0xf0, 0x1d, - 0xd0, 0x3d, 0xce, 0xcb, 0x31, 0x52, 0x19, 0x7c, 0xd6, 0xad, 0xd2, 0x51, - 0x83, 0x7f, 0xf2, 0x10, - 0x17, 0x89, 0xbc, 0xd0, 0x19, 0x37, 0xff, 0x99, 0x5f, 0x92, 0x2f, 0x13, - 0x3c, 0xbd, 0x29, 0x03, - 0xa3, 0xcd, 0x0c, 0xdf, 0x8b, 0x0e, 0xdc, 0x7a, 0x80, 0x89, 0x03, 0xfe, - 0xfd, 0x8a, 0x91, 0x49, - 0xd2, 0xbd, 0x95, 0x6a, 0x2a, 0x4d, 0xde, 0x13, 0x78, 0xf2, 0xb4, 0x18, - 0xac, 0x46, 0x1b, 0xb6, - 0x57, 0xe4, 0x8d, 0x17, 0xff, 0x51, 0xa5, 0xe7, 0xbb, 0x23, 0xb2, 0x27, - 0x95, 0x91, 0xfa, 0x24, - 0x71, 0x70, 0x99, 0xb5, 0xa1, 0x43, 0x02, 0x69, 0xf8, 0x7b, 0xb7, 0xe6, - 0x51, 0xcc, 0x8a, 0xff, - 0xa1, 0x4d, 0x57, 0x7e, 0x90, 0x11, 0x1b, 0x15, 0x2e, 0xd6, 0x65, 0xb7, - 0xd2, 0xb3, 0x78, 0xef, - 0xc3, 0x77, 0xc4, 0x9a, 0x1e, 0x5b, 0xab, 0x3b, 0x16, 0x81, 0x31, 0xd0, - 0xe1, 0xb0, 0xca, 0x9c, - 0x51, 0xa7, 0x60, 0x37, 0xd2, 0x70, 0x2f, 0x56, 0x8a, 0xc2, 0x18, 0xfc, - 0xe4, 0xda, 0x02, 0x0d, - 0x35, 0xde, 0x1e, 0xf3, 0x71, 0x1b, 0x15, 0xc9, 0x83, 0x74, 0xe6, 0x40, - 0xa6, 0x92, 0x48, 0x57, - 0x47, 0x6e, 0x10, 0x56, 0x27, 0xa9, 0x52, 0x19, 0x82, 0x9e, 0x04, 0x2a, - 0x2e, 0x9a, 0xbe, 0x5d, - 0xf5, 0x69, 0x4d, 0x79, 0x98, 0xb1, 0xfb, 0x4b, 0x6c, 0x64, 0x82, 0x1c, - 0x9e, 0xe6, 0xfe, 0x3e, - 0xb2, 0x07, 0x5d, 0x2f, 0xbf, 0x18, 0xa9, 0x52, 0xee, 0xfa, 0x86, 0x36, - 0xb0, 0x7c, 0x40, 0x63, - 0xd7, 0x3e, 0xef, 0x5a, 0xf0, 0x9d, 0x11, 0x1b, 0xb0, 0x82, 0x4b, 0x4f, - 0x04, 0xc9, 0x9f, 0x6a, - 0x16, 0xc9, 0x70, 0x61, 0xf5, 0xd9, 0x7d, 0x4f, 0x08, 0x5c, 0x1c, 0xd6, - 0xca, 0x40, 0xbc, 0x50, - 0x86, 0x99, 0x8f, 0x6d, 0x22, 0xed, 0x3e, 0x4d, 0x3a, 0x40, 0x53, 0xb3, - 0xe0, 0x13, 0x9d, 0x67, - 0x73, 0xf0, 0xc2, 0x14, 0xba, 0x5c, 0xc5, 0x06, 0x56, 0x24, 0xd1, 0xaf, - 0x7e, 0xf5, 0x63, 0x59, - 0xc4, 0x74, 0xe5, 0x0b, 0xdf, 0x94, 0xa3, 0x5c, 0x70, 0xae, 0xa8, 0xce, - 0x66, 0x06, 0xa7, 0xe6, - 0x34, 0x9e, 0xd2, 0x42, 0x9d, 0xf5, 0x97, 0x1f, 0xd4, 0xba, 0xd5, 0x85, - 0x50, 0x6f, 0xdd, 0x04, - 0xc6, 0xf4, 0xbe, 0xaa, 0xc4, 0x8b, 0x64, 0x33, 0xde, 0xf1, 0xce, 0x87, - 0x49, 0x3f, 0x4e, 0x40, - 0x96, 0x13, 0x12, 0x2c, 0xfa, 0x15, 0xc9, 0xb3, 0x03, 0xfd, 0xe5, 0xbe, - 0x5b, 0x18, 0xd9, 0x1e, - 0xed, 0xa6, 0x7f, 0xf9, 0x2c, 0x35, 0x96, 0xca, 0xa8, 0x66, 0x6f, 0xf6, - 0x99, 0x09, 0x98, 0x9a, - 0xf4, 0x29, 0x81, 0xc8, 0x74, 0x5f, 0x79, 0x9d, 0x3b, 0xaa, 0xb1, 0xd9, - 0x68, 0x1b, 0x6b, 0x6d, - 0xae, 0x0b, 0xd9, 0x2e, 0x3d, 0xa2, 0x89, 0x0d, 0xb5, 0x46, 0xa7, 0x4e, - 0xe9, 0xe1, 0x37, 0x48, - 0x63, 0x7a, 0x5f, 0x55, 0x62, 0xa4, 0x32, 0xf8, 0x6f, 0x99, 0x67, 0xa2, - 0xc5, 0xfe, 0x27, 0x20, - }, - { /* 5 */ - 0x79, 0x80, 0xab, 0xe7, 0xa9, 0x6f, 0x50, 0x97, 0xbe, 0x20, 0xdb, 0x5a, - 0xb5, 0x1a, 0xf0, 0xb4, - 0x91, 0x1a, 0x97, 0x16, 0x14, 0x45, 0x9f, 0x6e, 0x60, 0xe7, 0xef, 0x55, - 0x0a, 0x58, 0x62, 0xaa, - 0x99, 0xdc, 0x5f, 0x93, 0xd1, 0x32, 0x94, 0x30, 0x3d, 0x37, 0xfc, 0x67, - 0x89, 0x09, 0x7f, 0xce, - 0xb9, 0x42, 0xf9, 0xc2, 0x43, 0x2d, 0xb8, 0x8b, 0x8a, 0xf1, 0xb0, 0xaf, - 0xc0, 0x8e, 0x0b, 0x9d, - 0x71, 0x46, 0x63, 0x62, 0x6c, 0x18, 0x5b, 0xc9, 0xe3, 0xf0, 0xc8, 0x68, - 0x36, 0x4b, 0xed, 0xd0, - 0xea, 0x4a, 0x0e, 0x41, 0x1d, 0x47, 0xbd, 0x0f, 0x58, 0xf3, 0x40, 0xe2, - 0xef, 0xc7, 0x04, 0x07, - 0xd7, 0x56, 0x4e, 0xa7, 0xd0, 0xcc, 0x51, 0x02, 0x84, 0xf4, 0xeb, 0xf2, - 0x68, 0xd9, 0xf3, 0x27, - 0x95, 0x79, 0xf3, 0xb5, 0x97, 0x9f, 0x7b, 0x41, 0xaf, 0x8f, 0x07, 0x4c, - 0xaa, 0x91, 0x8d, 0x98, - 0x55, 0xbb, 0xa1, 0x90, 0x7d, 0xdd, 0x93, 0x5d, 0x9b, 0x5e, 0x6c, 0xb9, - 0xdf, 0x05, 0x76, 0xb1, - 0xda, 0x9b, 0xfb, 0xd9, 0xc6, 0xb6, 0x87, 0x08, 0x55, 0x56, 0x2a, 0x4e, - 0x63, 0xe2, 0x4a, 0x9c, - 0xdb, 0xf3, 0xe2, 0x81, 0x96, 0x61, 0xbe, 0x73, 0x16, 0x4c, 0x10, 0xd9, - 0x4b, 0x41, 0x01, 0x71, - 0xb5, 0xe7, 0x55, 0xe4, 0x05, 0x80, 0x57, 0xfa, 0x18, 0x49, 0x4b, 0x84, - 0xe3, 0x16, 0xf9, 0xcb, - 0x3f, 0xcc, 0x72, 0x56, 0x6d, 0xe6, 0x9e, 0xfb, 0x5a, 0x33, 0xdf, 0xfd, - 0xd7, 0x9b, 0x61, 0x39, - 0x54, 0xd3, 0xb8, 0xc8, 0x2d, 0x0a, 0xaa, 0x26, 0xd8, 0x44, 0x56, 0x2e, - 0xf7, 0xa6, 0x3d, 0x5c, - 0x7d, 0xe3, 0xcf, 0x44, 0x2a, 0xb5, 0xb4, 0xb8, 0x71, 0x48, 0x33, 0x43, - 0x15, 0xd3, 0x1f, 0x86, - 0xd5, 0x86, 0x7c, 0x17, 0x70, 0xa1, 0x23, 0xf4, 0x02, 0xc0, 0x9f, 0x1f, - 0x38, 0x5c, 0x65, 0x3e, - 0xbd, 0x21, 0x9d, 0x61, 0xc0, 0xf7, 0x5c, 0xa4, 0x45, 0x99, 0x58, 0xb6, - 0x60, 0x47, 0xe4, 0xaf, - 0xa9, 0x0d, 0xaa, 0x0b, 0x0a, 0xc3, 0xae, 0x37, 0x30, 0x92, 0x96, 0xcb, - 0x05, 0x2c, 0x31, 0x55, - 0xfe, 0x66, 0x39, 0x2b, 0xd7, 0x73, 0x4f, 0x9c, 0x2d, 0xf8, 0x8e, 0x9f, - 0x8a, 0xac, 0xd1, 0xfd, - 0x3b, 0xaf, 0x16, 0xf5, 0xee, 0x3c, 0x7a, 0xd4, 0x95, 0x5b, 0x37, 0xe4, - 0x77, 0x52, 0x8e, 0x0b, - 0x1d, 0x82, 0xe6, 0xb7, 0x5f, 0x94, 0xc0, 0xb6, 0x6b, 0xc1, 0xe7, 0xd8, - 0xce, 0x99, 0x83, 0x73, - 0x36, 0x62, 0xa3, 0x8b, 0xf8, 0x46, 0xac, 0xde, 0x44, 0xf9, 0xf6, 0x58, - 0x7c, 0x69, 0x37, 0xb0, - 0x38, 0x17, 0x3d, 0x1d, 0x1e, 0x86, 0x31, 0x59, 0x50, 0x75, 0x79, 0x9e, - 0x0f, 0x74, 0x53, 0xff, - 0x07, 0xdb, 0x4f, 0x4b, 0x73, 0x60, 0xaf, 0xa2, 0x0a, 0x46, 0xa6, 0x63, - 0xd8, 0xef, 0x32, 0xc6, - 0x1b, 0x31, 0xb0, 0xa4, 0x7c, 0x23, 0x56, 0x6f, 0x22, 0x9d, 0x7b, 0x2c, - 0x3e, 0xd5, 0xfa, 0x58, - 0xfb, 0x6d, 0x44, 0xd0, 0x04, 0x7e, 0x92, 0xc8, 0xa1, 0x8a, 0x5c, 0x11, - 0x02, 0xc6, 0x75, 0x22, - 0x70, 0x2e, 0x7a, 0x3a, 0x3c, 0xcf, 0x62, 0xb2, 0xa0, 0xea, 0xf2, 0xff, - 0x1e, 0xe8, 0xa6, 0x3d, - 0x89, 0x93, 0x0c, 0x5a, 0x98, 0xdc, 0x82, 0x8c, 0x87, 0x54, 0xda, 0x03, - 0x4c, 0xab, 0x45, 0x06, - 0x4a, 0xe9, 0x75, 0x97, 0x82, 0x24, 0x21, 0x1d, 0x76, 0xab, 0xff, 0x8c, - 0x41, 0x19, 0x63, 0xdb, - 0xae, 0xd6, 0xe5, 0x40, 0x79, 0xa3, 0x01, 0x95, 0x3a, 0xd4, 0x30, 0xa8, - 0xdd, 0xc3, 0x03, 0x93, - 0x3d, 0x1c, 0x40, 0xe6, 0xcd, 0x8b, 0xec, 0x0d, 0xdc, 0x07, 0xab, 0x10, - 0x87, 0x1e, 0xf7, 0x20, - 0x29, 0x30, 0x77, 0x8c, 0x07, 0xbf, 0x1e, 0x9e, 0xa9, 0x0c, 0x65, 0x6d, - 0xe2, 0x75, 0x22, 0xda, - 0x8a, 0x2b, 0x27, 0xb2, 0x68, 0x66, 0xc9, 0x01, 0x42, 0x7a, 0x94, 0x79, - 0x34, 0x8d, 0x98, 0xf2, - 0xcd, 0x0f, 0xe7, 0x5b, 0xfc, 0x38, 0x3e, 0x16, 0xe5, 0x73, 0xaa, 0x49, - 0x7e, 0xaf, 0x42, 0x92, - 0x41, 0x97, 0x96, 0xfa, 0xb7, 0xe9, 0x61, 0xce, 0xee, 0x55, 0xa2, 0xc4, - 0xba, 0x6e, 0xa3, 0x4b, - 0xce, 0xb7, 0xcc, 0xb3, 0x0c, 0x82, 0x75, 0x9b, 0x20, 0x5d, 0xe4, 0x33, - 0x06, 0x89, 0x9f, 0x66, - 0x16, 0xfc, 0x05, 0xda, 0x6a, 0x59, 0x80, 0x65, 0xf3, 0x3f, 0xba, 0x90, - 0x35, 0xee, 0x43, 0xe3, - 0x6c, 0xc4, 0x85, 0xd5, 0x33, 0x8c, 0x9b, 0x7f, 0x88, 0x31, 0x2f, 0xb0, - 0xf8, 0xd2, 0x6e, 0xa3, - 0x1f, 0x52, 0xd4, 0x07, 0xff, 0xf9, 0xb2, 0x40, 0xed, 0xf5, 0x93, 0x35, - 0x9e, 0x1c, 0x15, 0x6a, - 0xe0, 0x5c, 0xf4, 0x74, 0x78, 0x5d, 0xc4, 0xa7, 0x83, 0x17, 0x27, 0x3d, - 0x3c, 0x13, 0x8f, 0x7a, - 0xf5, 0x18, 0xda, 0x46, 0xe2, 0xbe, 0x0f, 0x4f, 0xb5, 0x06, 0xd3, 0xd7, - 0x71, 0xdb, 0x11, 0x6d, - 0xb0, 0xec, 0x28, 0x1f, 0xd6, 0x8d, 0x8a, 0xae, 0x94, 0x3b, 0x99, 0x0a, - 0x6b, 0x7c, 0x5d, 0x14, - 0xde, 0xf8, 0x9f, 0x7a, 0x45, 0x6c, 0x63, 0x27, 0x9a, 0x3e, 0xc2, 0x57, - 0xc3, 0x2b, 0xa5, 0xae, - 0x03, 0xb8, 0x2b, 0xe8, 0xf0, 0xba, 0x4b, 0x8d, 0xc5, 0x2e, 0x4e, 0x7a, - 0x78, 0x26, 0xdd, 0xf4, - 0xd0, 0x8d, 0x01, 0xec, 0xa3, 0xac, 0xfe, 0xa0, 0x8e, 0xb2, 0x4d, 0x91, - 0xb0, 0x36, 0xc1, 0xe1, - 0x8e, 0x48, 0x43, 0x11, 0xeb, 0xbc, 0x2d, 0x2e, 0x8d, 0x12, 0x7c, 0x60, - 0x94, 0x44, 0x77, 0xc0, - 0x23, 0x26, 0x8d, 0xb9, 0x62, 0xa5, 0x67, 0x36, 0x72, 0xe8, 0x02, 0xb2, - 0x31, 0xa1, 0xa9, 0xa7, - 0x0a, 0x16, 0xfa, 0x35, 0x65, 0x1a, 0x79, 0xa8, 0xdb, 0xe4, 0x67, 0xdf, - 0xd3, 0xd4, 0x8b, 0x7d, - 0xf3, 0xab, 0x8c, 0x55, 0xc1, 0x09, 0x99, 0x96, 0xfc, 0x5a, 0x4f, 0x23, - 0x81, 0x97, 0x68, 0x46, - 0x06, 0xb3, 0x56, 0x13, 0x23, 0xb7, 0x96, 0xd9, 0x49, 0x5c, 0x9c, 0xf4, - 0xf0, 0x4c, 0x79, 0x2b, - 0xdf, 0x90, 0x86, 0x22, 0x15, 0xbb, 0x5a, 0x5c, 0xd9, 0x24, 0xf8, 0xc0, - 0xeb, 0x88, 0xee, 0x43, - 0x4d, 0x32, 0x3a, 0xdc, 0xf1, 0x44, 0x8e, 0xbf, 0x7c, 0xed, 0x59, 0xef, - 0x99, 0xf6, 0x51, 0x1d, - 0x98, 0xb4, 0x46, 0xcb, 0x81, 0xe5, 0xad, 0x4b, 0x7e, 0x2d, 0xc6, 0xf0, - 0xa1, 0xaa, 0x34, 0x23, - 0x97, 0xa9, 0xc1, 0x05, 0x37, 0xf2, 0x09, 0xb7, 0x29, 0xbb, 0x73, 0xa1, - 0xfa, 0x14, 0x1b, 0x81, - 0xad, 0x6e, 0xce, 0xa8, 0x89, 0x19, 0x4a, 0x18, 0xff, 0xfa, 0x7e, 0xd2, - 0xa5, 0xe5, 0xde, 0x67, - 0x15, 0x44, 0x2e, 0x32, 0x9a, 0xe3, 0xcb, 0xe8, 0x36, 0x11, 0xf4, 0xea, - 0x4d, 0xc8, 0x9e, 0x17, - 0xa2, 0x73, 0x49, 0x66, 0x3f, 0x0e, 0xee, 0xe4, 0xa8, 0x6c, 0xcb, 0x83, - 0xfe, 0x5b, 0xf1, 0xc5, - 0xab, 0xdd, 0x98, 0xbb, 0xaa, 0xae, 0xdc, 0xc1, 0xb6, 0xa6, 0xe2, 0x26, - 0x55, 0xa9, 0xa7, 0x4c, - 0xc0, 0xc2, 0x52, 0x25, 0xea, 0x42, 0xe8, 0x1c, 0x34, 0xd1, 0x6b, 0xf5, - 0x75, 0x94, 0xfb, 0x29, - 0xb6, 0x5f, 0x7e, 0x0c, 0xf5, 0x3a, 0x1c, 0x77, 0xdd, 0x67, 0x05, 0xfe, - 0x9b, 0x30, 0x24, 0x3f, - 0x53, 0x08, 0xf7, 0x83, 0x5e, 0x6a, 0x05, 0x84, 0xd2, 0x02, 0xf0, 0x4d, - 0x2f, 0x49, 0x0f, 0x9a, - 0xed, 0x91, 0x41, 0x0a, 0x6e, 0x27, 0x12, 0xad, 0x52, 0xb5, 0xe6, 0x81, - 0x37, 0x28, 0x36, 0xc1, - 0xc1, 0xaa, 0x4b, 0x7d, 0xba, 0x95, 0xd1, 0x67, 0x77, 0xcb, 0x51, 0x62, - 0x5d, 0x37, 0xb0, 0xc4, - 0xe1, 0x34, 0xed, 0x2c, 0x28, 0x8a, 0xfd, 0xdc, 0xc0, 0x0d, 0x1d, 0xaa, - 0x14, 0xb0, 0xc4, 0x97, - 0x62, 0xb1, 0x1b, 0x43, 0xd5, 0x4c, 0x06, 0xf8, 0x9c, 0xbd, 0xa0, 0x76, - 0x8b, 0xcf, 0x0a, 0xec, - 0x24, 0xfd, 0xc2, 0xf2, 0x11, 0xc5, 0xc8, 0x94, 0x78, 0xae, 0xa4, 0xd1, - 0xe9, 0x4e, 0x9b, 0x61, - 0xe9, 0xf2, 0x25, 0xa9, 0xed, 0xfd, 0xf6, 0x82, 0x9d, 0xdd, 0x0e, 0x98, - 0x97, 0xe1, 0xd9, 0xf3, - 0x65, 0x6a, 0x54, 0x08, 0xa6, 0x2c, 0xa9, 0x5a, 0x96, 0xfb, 0x06, 0x15, - 0x53, 0x20, 0x38, 0x2a, - 0xec, 0xf9, 0x58, 0x52, 0x3e, 0xf0, 0x2b, 0xd6, 0x11, 0xaf, 0xdc, 0x16, - 0x1f, 0x8b, 0x7d, 0x2c, - 0x5d, 0x7d, 0x69, 0x15, 0xb8, 0xaa, 0x98, 0x03, 0xc6, 0x8e, 0x7f, 0x8b, - 0x5c, 0x54, 0x6b, 0xd5, - 0x26, 0x2d, 0xf0, 0x42, 0xb1, 0xa8, 0xba, 0x62, 0xfe, 0x9a, 0xd0, 0x3c, - 0xb9, 0xcb, 0x0d, 0x78, - 0xbe, 0x99, 0xb6, 0x89, 0x30, 0x4d, 0x17, 0x29, 0x80, 0xb7, 0x16, 0xcc, - 0x18, 0x61, 0x39, 0x5b, - 0x21, 0xf6, 0xbf, 0x09, 0xc2, 0xc8, 0x15, 0xc0, 0xf4, 0xdc, 0x76, 0x5f, - 0x61, 0x24, 0x3f, 0xbe, - 0x4b, 0x81, 0x6c, 0xcf, 0xd2, 0xf3, 0x18, 0x66, 0x35, 0xb1, 0xc5, 0x1b, - 0x69, 0xba, 0x28, 0x36, - 0x48, 0x39, 0x47, 0x27, 0x22, 0x49, 0x53, 0xeb, 0xf0, 0x9f, 0x8b, 0x61, - 0x11, 0x9c, 0xf5, 0xc2, - 0xca, 0xd4, 0xa8, 0x10, 0x8f, 0x58, 0x91, 0xb4, 0xef, 0x35, 0x0c, 0x2a, - 0xa6, 0x40, 0x70, 0x54, - 0xf7, 0xc8, 0xe8, 0xf6, 0x42, 0xd3, 0x7d, 0xb9, 0x33, 0x32, 0xa7, 0x3a, - 0x21, 0x5e, 0x87, 0x74, - 0x7c, 0x8b, 0xd6, 0x1c, 0x7a, 0x62, 0x8d, 0xc3, 0x32, 0x52, 0x09, 0xd4, - 0x3d, 0x70, 0x54, 0x6b, - 0xff, 0x0e, 0x20, 0x73, 0x87, 0xa4, 0x76, 0xe7, 0x6e, 0xe2, 0xb4, 0x08, - 0xa2, 0x0f, 0x9a, 0x10, - 0x20, 0x9e, 0xa6, 0x51, 0x92, 0x1f, 0x2c, 0xbb, 0xb7, 0xc6, 0x4c, 0xc8, - 0x49, 0x87, 0x74, 0x53, - 0xd1, 0xe5, 0x18, 0xb4, 0xf3, 0x7b, 0xc7, 0xdb, 0xcd, 0xa8, 0x77, 0x06, - 0x98, 0x95, 0x8a, 0x0c, - 0x85, 0x36, 0xa0, 0x7c, 0xde, 0x71, 0x6d, 0xfd, 0x15, 0xec, 0x21, 0x28, - 0x6f, 0x33, 0xb7, 0x50, - 0x58, 0x76, 0x14, 0xee, 0x6b, 0xa7, 0x45, 0x57, 0x4a, 0xfc, 0xad, 0x05, - 0xd4, 0x3e, 0xcf, 0x0a, - 0x49, 0x51, 0x5e, 0x7f, 0x72, 0x9e, 0x6a, 0x90, 0xb3, 0x85, 0xb1, 0xf6, - 0x39, 0x3f, 0xbe, 0x2f, - 0xfa, 0x05, 0x5d, 0x88, 0x54, 0xa9, 0xab, 0xb3, 0xe2, 0x90, 0x66, 0x86, - 0x2a, 0x65, 0x3e, 0xcf, - 0x87, 0xe6, 0x92, 0xcc, 0x7e, 0x1c, 0x1f, 0x0b, 0x93, 0xd8, 0x55, 0xc5, - 0x3f, 0xb6, 0x21, 0x49, - 0x27, 0x45, 0xe9, 0x1a, 0xe1, 0x7f, 0x83, 0x19, 0xbd, 0x80, 0xea, 0xab, - 0x91, 0x68, 0x46, 0x95, - 0xe8, 0x9a, 0x3c, 0xf1, 0xbd, 0x2a, 0xcf, 0xf9, 0xde, 0xc7, 0x34, 0x0f, - 0xbf, 0x42, 0x92, 0x1e, - 0xf4, 0x70, 0xc3, 0x1e, 0xb2, 0x69, 0x36, 0x34, 0xf6, 0x1c, 0xe9, 0x40, - 0x59, 0x78, 0x5a, 0x80, - 0x5a, 0xa6, 0x26, 0x5e, 0xcb, 0xca, 0x37, 0xa1, 0xcc, 0xc8, 0xd9, 0xe8, - 0x84, 0xbb, 0x59, 0x13, - 0x66, 0xd2, 0x7f, 0xe0, 0x56, 0x96, 0xe2, 0xd7, 0x53, 0xd5, 0x48, 0x6f, - 0x2b, 0x06, 0xe5, 0xde, - 0xf0, 0x13, 0xa7, 0xbd, 0x31, 0xb3, 0xd2, 0x1b, 0x39, 0x74, 0x01, 0x59, - 0xf9, 0xb1, 0xb5, 0xb2, - 0xcb, 0xbc, 0xb1, 0x48, 0xdf, 0x8f, 0xa8, 0xcf, 0xac, 0x2f, 0x36, 0xbd, - 0x8e, 0xe3, 0x3b, 0xb9, - 0x0e, 0x75, 0x9e, 0x96, 0xe6, 0xc0, 0x9d, 0x87, 0x14, 0x8c, 0x8f, 0xc6, - 0x73, 0x1d, 0x64, 0x4f, - 0xe2, 0x8c, 0xc6, 0xc4, 0xd8, 0x30, 0xb6, 0x51, 0x05, 0x23, 0x53, 0xd0, - 0x6c, 0x96, 0x19, 0x63, - 0x57, 0x6b, 0x93, 0x20, 0xdd, 0xb0, 0xe1, 0xab, 0x1d, 0x6a, 0x18, 0x54, - 0x8f, 0x80, 0xe0, 0xa8, - 0xc4, 0xa1, 0x36, 0x86, 0x69, 0x98, 0x0c, 0x33, 0xfb, 0xb9, 0x83, 0xec, - 0xd5, 0x5d, 0x14, 0x1b, - 0x9b, 0x0c, 0x6d, 0x23, 0x71, 0x5f, 0xe6, 0xc6, 0xbb, 0x03, 0x88, 0x8a, - 0xd9, 0x8c, 0xe9, 0xd7, - 0xee, 0x29, 0x6a, 0xe2, 0x9e, 0x9d, 0x59, 0x20, 0x97, 0x9b, 0xa8, 0xfb, - 0x4f, 0x0e, 0xeb, 0x35, - 0x1a, 0x59, 0xa9, 0xfc, 0x2c, 0xf4, 0x6f, 0x14, 0x61, 0x87, 0x41, 0xbb, - 0x16, 0x76, 0xb1, 0xb5, - 0x37, 0x0a, 0xba, 0xd3, 0xa8, 0x91, 0x95, 0xa5, 0x07, 0xe3, 0xcc, 0xcf, - 0x54, 0xca, 0x7c, 0x5d, - 0x2e, 0xeb, 0x38, 0xc7, 0x74, 0xdf, 0xb1, 0x3c, 0xa3, 0x4a, 0xc3, 0x0e, - 0x3a, 0x9a, 0x10, 0x1c, - 0x69, 0xcf, 0xf8, 0x2e, 0xe0, 0x81, 0x46, 0x2b, 0x04, 0x43, 0xfd, 0x3e, - 0x70, 0xb8, 0xca, 0x7c, - 0x8b, 0x43, 0x3e, 0xea, 0x38, 0xb1, 0xf0, 0x7a, 0x01, 0x60, 0xae, 0xee, - 0x1c, 0x2e, 0xd3, 0x1f, - 0xaf, 0xbe, 0xfc, 0x18, 0x29, 0x74, 0x38, 0xee, 0x79, 0xce, 0x0a, 0x3f, - 0xf5, 0x60, 0x48, 0x7e, - 0xc2, 0x12, 0x60, 0x95, 0x4a, 0x2f, 0x9a, 0xea, 0xb2, 0xe5, 0x1f, 0x18, - 0x25, 0x11, 0x6d, 0x30, - 0x7f, 0x33, 0xfd, 0xf4, 0x8a, 0xd8, 0xc6, 0x4e, 0xf7, 0x7c, 0x47, 0xae, - 0x45, 0x56, 0x89, 0x9f, - 0x64, 0x02, 0x4d, 0x50, 0xf6, 0xfb, 0x90, 0x21, 0xd5, 0xe1, 0x3c, 0x82, - 0x7b, 0x83, 0x73, 0xc7, - 0x45, 0xf4, 0xf2, 0x59, 0x34, 0x33, 0x85, 0xe1, 0x21, 0x3d, 0x4a, 0xdd, - 0x1a, 0xa7, 0x4c, 0x79, - 0x14, 0x2c, 0x37, 0x6a, 0xca, 0x34, 0xf2, 0x93, 0x75, 0x0b, 0xce, 0x7d, - 0x65, 0x6b, 0xd5, 0xfa, - 0xfd, 0xde, 0x12, 0xc3, 0x27, 0xc9, 0x04, 0x11, 0xe8, 0xd6, 0xc0, 0xe5, - 0xf2, 0x8a, 0x0c, 0x09, - 0xac, 0x06, 0xd7, 0xf0, 0xd9, 0xce, 0x73, 0x63, 0xbc, 0xe0, 0x44, 0x45, - 0x8d, 0x46, 0x95, 0x8a, - 0x86, 0x8e, 0x8b, 0x94, 0x2e, 0xcb, 0x26, 0x70, 0xd0, 0xc2, 0x6f, 0x52, - 0x17, 0x15, 0x6a, 0xa4, - 0x76, 0x9d, 0x2c, 0x29, 0x1f, 0x78, 0xf4, 0x6b, 0xe9, 0xb6, 0x6e, 0x0b, - 0xee, 0xa4, 0xdf, 0x16, - 0x43, 0x47, 0xa4, 0x4a, 0x17, 0x84, 0x13, 0x38, 0x68, 0x61, 0xd6, 0x29, - 0xea, 0xeb, 0x35, 0x52, - 0x50, 0xb0, 0xdc, 0x6b, 0xae, 0xd0, 0x4e, 0x09, 0x17, 0x2c, 0xbe, 0x37, - 0x57, 0x6f, 0xd2, 0x6e, - 0x28, 0x58, 0x6e, 0xd4, 0x57, 0x68, 0x27, 0xe5, 0xea, 0x16, 0x5f, 0xfa, - 0xca, 0xd6, 0x69, 0x37, - 0xaa, 0xb5, 0x81, 0xe3, 0xfa, 0x79, 0xe5, 0xba, 0xf5, 0xbc, 0xd8, 0xb1, - 0x7d, 0x0a, 0xec, 0xa1, - 0x5e, 0xc5, 0x42, 0xfd, 0x48, 0x10, 0xd3, 0x8e, 0x03, 0xa0, 0x31, 0xf1, - 0x24, 0x72, 0xb6, 0x21, - 0xdd, 0x40, 0xb4, 0x92, 0xb5, 0xd6, 0x28, 0xaa, 0x5f, 0x10, 0x8c, 0x2d, - 0xbb, 0x0d, 0x78, 0x5a, - 0xbb, 0x92, 0xcb, 0x72, 0xe3, 0x40, 0xca, 0x7d, 0x0c, 0xc5, 0xc4, 0x42, - 0x90, 0x0b, 0x9d, 0x84, - 0x96, 0xc1, 0xd8, 0x5d, 0x67, 0x25, 0x30, 0xcc, 0x6a, 0xa1, 0x49, 0x36, - 0xd2, 0xb7, 0x50, 0x6c, - 0x05, 0x0b, 0x7d, 0xfb, 0xd3, 0x0d, 0xdd, 0x54, 0x8c, 0x72, 0xd2, 0x8e, - 0x88, 0x6a, 0xa4, 0xdf, - 0x7b, 0x50, 0x99, 0x57, 0x09, 0x02, 0x22, 0x61, 0x38, 0x14, 0xaf, 0xb7, - 0xe5, 0x9f, 0x66, 0xad, - 0xf6, 0xa0, 0xf1, 0xae, 0x12, 0x04, 0x44, 0xc2, 0x70, 0x28, 0x9d, 0xad, - 0x09, 0xfd, 0xcc, 0x99, - 0x2b, 0xe0, 0x45, 0x3c, 0xa7, 0xd2, 0x6c, 0x68, 0x2f, 0x38, 0x11, 0x80, - 0xb2, 0xf0, 0xb4, 0xc3, - 0x09, 0xae, 0xd1, 0xdd, 0x95, 0xa0, 0x32, 0x25, 0x1e, 0xca, 0x29, 0xa5, - 0xab, 0xf2, 0x56, 0x89, - 0xc7, 0x19, 0x1d, 0x6e, 0x99, 0x22, 0x47, 0xbe, 0x3e, 0x97, 0xcd, 0x96, - 0xad, 0x7b, 0xc9, 0xef, - 0x46, 0x4c, 0xd9, 0xb1, 0xc4, 0x89, 0xce, 0x6c, 0xe4, 0x13, 0x04, 0xa7, - 0x62, 0x81, 0x91, 0x8d, - 0x0d, 0xcd, 0xb5, 0x7e, 0x16, 0x7a, 0xd6, 0x0a, 0xd1, 0xa2, 0xc1, 0xbc, - 0x0b, 0x3b, 0xb9, 0xbb, - 0x13, 0xf7, 0x78, 0x21, 0xb9, 0x54, 0x5d, 0x31, 0x7f, 0x4d, 0x68, 0x1e, - 0xbd, 0x84, 0xe7, 0x3c, - 0x61, 0x09, 0x30, 0xab, 0x25, 0xf6, 0x4d, 0x75, 0x59, 0x93, 0xee, 0x0c, - 0xf3, 0xe9, 0xd7, 0x18, - 0x01, 0x68, 0x19, 0x58, 0x50, 0xd7, 0x39, 0x7b, 0x43, 0x1a, 0x3a, 0x97, - 0x28, 0xa3, 0x4b, 0xed, - 0xef, 0x41, 0x73, 0xba, 0xce, 0x4a, 0x60, 0x5b, 0xd4, 0x81, 0x92, 0x6c, - 0x67, 0xad, 0xa0, 0xd8, - 0x8d, 0xf0, 0x68, 0xf9, 0x1b, 0x06, 0x66, 0xa3, 0x48, 0x3c, 0x32, 0x1a, - 0xec, 0x62, 0xaa, 0x34, - 0xd3, 0x35, 0x2a, 0x04, 0x53, 0x16, 0xb5, 0x2d, 0x4b, 0x9c, 0x03, 0xeb, - 0xc8, 0x10, 0x1c, 0x15, - 0xbc, 0x49, 0x84, 0x39, 0x90, 0x20, 0x65, 0xdf, 0x06, 0x83, 0x62, 0x21, - 0x48, 0xe4, 0xaf, 0x42, - 0xf1, 0x7b, 0xbe, 0xe5, 0x61, 0x64, 0xeb, 0x60, 0x7a, 0x6e, 0x3b, 0xce, - 0xd1, 0x12, 0xfe, 0x5f, - 0x32, 0x01, 0xc7, 0x28, 0x7b, 0x9c, 0x48, 0xf1, 0x8b, 0x91, 0x1e, 0x41, - 0xdc, 0xa0, 0xd8, 0x82, - 0x5c, 0x15, 0x70, 0x4d, 0xe8, 0x7d, 0xa1, 0x78, 0x85, 0x94, 0x45, 0x1c, - 0x74, 0xf7, 0x20, 0x38, - 0x02, 0xd0, 0x32, 0xb0, 0xa0, 0x6d, 0x72, 0xf6, 0x86, 0x34, 0x74, 0xed, - 0x50, 0x85, 0x96, 0x19, - 0xb1, 0x84, 0x31, 0x47, 0x86, 0x5a, 0xb3, 0xd5, 0xd7, 0x21, 0xa3, 0x9d, - 0x43, 0xdf, 0x16, 0xf9, - 0x56, 0x03, 0x8a, 0x78, 0x8d, 0x67, 0xd8, 0xd0, 0x5e, 0x70, 0x22, 0xc3, - 0xa7, 0x23, 0xab, 0x45, - 0x51, 0xd8, 0xc5, 0x33, 0xfe, 0x07, 0x77, 0x72, 0x54, 0x36, 0x84, 0xa0, - 0x7f, 0xcc, 0x99, 0x83, - 0xc9, 0x6c, 0x83, 0xf8, 0x7f, 0xe2, 0xda, 0x39, 0x2a, 0x1b, 0x42, 0x50, - 0xde, 0x66, 0xad, 0xa0, - 0xd6, 0x3e, 0x57, 0xff, 0x80, 0x1b, 0x68, 0x79, 0xc7, 0xee, 0xd1, 0x65, - 0x40, 0x7a, 0xb8, 0xca, - 0x4e, 0x8a, 0x11, 0x34, 0x01, 0xfe, 0xc5, 0x32, 0xb9, 0xc3, 0x17, 0x95, - 0xe1, 0xd0, 0x8c, 0xe9, - 0xc8, 0x04, 0x9a, 0xa0, 0x2f, 0x35, 0xe3, 0x42, 0x69, 0x01, 0x78, 0xc7, - 0xf6, 0xc5, 0xe6, 0x4d, - 0xa0, 0xa3, 0x7b, 0xd6, 0x9f, 0x63, 0x9c, 0x12, 0x2e, 0x58, 0xbf, 0x6e, - 0xae, 0xde, 0x67, 0xdc, - 0x31, 0xb9, 0xec, 0xc0, 0x8b, 0x26, 0x03, 0x7c, 0x4e, 0xbf, 0x50, 0x3b, - 0xa4, 0x86, 0x05, 0x76, - 0x22, 0x4e, 0x94, 0xe1, 0x32, 0x72, 0x5e, 0x4d, 0x31, 0xf2, 0x38, 0x25, - 0x19, 0x02, 0xe2, 0x4a, - 0xa5, 0xa8, 0x06, 0x2d, 0x4c, 0x6e, 0x41, 0x46, 0xa2, 0x2a, 0x6d, 0xe0, - 0x26, 0xb4, 0xc3, 0x03, - 0x17, 0x94, 0x1c, 0x82, 0x3a, 0x8e, 0xb9, 0x1e, 0xb0, 0x25, 0x80, 0x07, - 0x1d, 0x4d, 0x08, 0x0e, - 0x33, 0x69, 0xde, 0x70, 0x2b, 0x4b, 0x71, 0x8a, 0xc8, 0x8b, 0x24, 0xd6, - 0xf4, 0x03, 0x93, 0x6f, - 0x94, 0x11, 0xea, 0xed, 0xc7, 0x48, 0x42, 0x3a, 0xec, 0x95, 0x3d, 0xdb, - 0x82, 0x32, 0xc6, 0x75, - 0xeb, 0x22, 0x17, 0x19, 0x4d, 0x90, 0x84, 0x74, 0x1b, 0xe9, 0x7a, 0x75, - 0xc7, 0x64, 0x4f, 0xea, - 0x84, 0x5e, 0xb9, 0x24, 0x8e, 0xa6, 0x54, 0x86, 0x56, 0xf6, 0x1b, 0xbf, - 0x47, 0x90, 0xfc, 0xbd, - 0x08, 0xc6, 0xc8, 0x85, 0xc5, 0x77, 0x0b, 0x5e, 0x5d, 0xd0, 0x13, 0x32, - 0x83, 0x51, 0x1d, 0x64, - 0x25, 0x95, 0xdb, 0xaa, 0x41, 0x12, 0xf1, 0xef, 0x3b, 0xb4, 0x9e, 0x46, - 0xc1, 0xed, 0xd0, 0x8c, - 0xf9, 0xbd, 0x76, 0x60, 0xa4, 0x13, 0xe0, 0x3e, 0x27, 0xbe, 0x28, 0xfc, - 0x52, 0x43, 0xe3, 0x3b, - 0x39, 0x7f, 0x24, 0x45, 0x4e, 0x51, 0x08, 0x22, 0x13, 0x6f, 0x43, 0x09, - 0x27, 0xd7, 0x18, 0x12, - 0x60, 0x61, 0x29, 0xf3, 0x75, 0x21, 0x74, 0x0e, 0x1a, 0x89, 0xd4, 0x9b, - 0xdb, 0x4a, 0x9c, 0xf5, - 0xb2, 0x3c, 0x1a, 0xaf, 0x76, 0xe0, 0xf8, 0x58, 0x12, 0x0f, 0xed, 0xe7, - 0x3b, 0xf9, 0xcb, 0x0d, - 0xd4, 0xee, 0x65, 0x4f, 0x20, 0x76, 0x1a, 0x8f, 0x41, 0xda, 0xa5, 0x88, - 0x10, 0xff, 0x2e, 0xd3, - 0x6f, 0x7c, 0xae, 0x3d, 0xc3, 0x36, 0xd0, 0xf2, 0x4d, 0x1f, 0x61, 0xca, - 0x80, 0xf4, 0xb3, 0x57, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x6d, 0xac, 0x9c, 0x8d, 0x63, 0x5b, 0xa2, 0x04, 0xcb, 0x2b, 0x15, 0x27, - 0xd0, 0x71, 0x25, 0x4e, - 0xa1, 0xcb, 0x62, 0x8e, 0xcf, 0xb4, 0xa5, 0x69, 0x6d, 0x42, 0x85, 0xf9, - 0x86, 0x7d, 0x2c, 0x31, - 0x12, 0x9f, 0x61, 0x79, 0xe9, 0x83, 0x64, 0x4a, 0x3c, 0x57, 0x52, 0x89, - 0x95, 0x27, 0xac, 0xd1, - 0xd8, 0x4b, 0xc9, 0x69, 0x66, 0xdb, 0xf5, 0xfe, 0xd3, 0x62, 0x5e, 0xa3, - 0x33, 0x67, 0xdc, 0x85, - 0xa3, 0x1b, 0x50, 0x3e, 0x6f, 0xd9, 0xd7, 0x9f, 0xeb, 0x76, 0xf1, 0x14, - 0xd6, 0xf8, 0xba, 0x28, - 0xa4, 0xc0, 0x1f, 0x75, 0x1c, 0xb9, 0x78, 0x3d, 0xe1, 0x30, 0x57, 0x77, - 0x0e, 0x17, 0x88, 0xee, - 0xcf, 0xdf, 0xd5, 0xeb, 0x5c, 0x55, 0x4c, 0xe0, 0x63, 0x47, 0xde, 0xa4, - 0x2e, 0x2a, 0xd4, 0x8b, - 0x9a, 0x64, 0x74, 0x7b, 0x21, 0x88, 0xdf, 0xbd, 0xf8, 0x19, 0xb2, 0x1d, - 0xf1, 0x2f, 0xa2, 0x3a, - 0xcc, 0x67, 0xfe, 0x03, 0xac, 0xef, 0x07, 0x6d, 0xa6, 0x69, 0x90, 0xde, - 0x56, 0x0c, 0x09, 0x7f, - 0x52, 0x60, 0xee, 0xdb, 0x0e, 0xbd, 0x3c, 0xff, 0x91, 0x18, 0xca, 0xda, - 0x07, 0xea, 0x44, 0x77, - 0x1c, 0xea, 0xff, 0xef, 0x0f, 0x43, 0xf9, 0xcd, 0x28, 0xdb, 0xdd, 0x4f, - 0xe6, 0x3a, 0xc8, 0x9e, - 0x2f, 0x83, 0x21, 0x9f, 0x24, 0x08, 0x88, 0x47, 0xe0, 0x50, 0xf9, 0x99, - 0x12, 0x39, 0x5b, 0xf1, - 0x7e, 0x5b, 0xe4, 0xac, 0xda, 0x0f, 0xff, 0x35, 0xb4, 0x66, 0x7d, 0x39, - 0x6d, 0xf5, 0xc2, 0x72, - 0x93, 0xca, 0xa5, 0xa6, 0xb4, 0x28, 0xed, 0x98, 0xe6, 0xd3, 0x9b, 0xb8, - 0x5a, 0xdd, 0xf4, 0xb3, - 0x42, 0x2f, 0xbd, 0x12, 0x47, 0x53, 0x2a, 0x43, 0x2b, 0x7b, 0xec, 0xbe, - 0xc2, 0x48, 0x7e, 0xbf, - 0xb3, 0x54, 0x03, 0xf7, 0x26, 0x37, 0xc1, 0x23, 0x51, 0x15, 0xd7, 0x70, - 0x13, 0x5a, 0x80, 0xe0, - 0x18, 0x89, 0x9b, 0x4c, 0x8c, 0x99, 0x1d, 0xe2, 0xe7, 0xb3, 0x35, 0x56, - 0x46, 0xf3, 0x27, 0xac, - 0xb8, 0x2a, 0xe0, 0x9a, 0x13, 0xfa, 0x81, 0xf0, 0xc9, 0xeb, 0x8a, 0x38, - 0xe8, 0x2d, 0x40, 0x70, - 0xfc, 0xb6, 0x0b, 0x9b, 0x77, 0x1e, 0x3d, 0x6a, 0xab, 0xcc, 0xfa, 0x72, - 0xda, 0x29, 0x47, 0xe4, - 0x44, 0x9c, 0xeb, 0x01, 0x64, 0xe4, 0xbc, 0x9a, 0x62, 0x27, 0x70, 0x4a, - 0x32, 0x04, 0x07, 0x94, - 0xe6, 0xef, 0xa2, 0x67, 0x5b, 0xea, 0x52, 0x7e, 0xca, 0x4b, 0xbb, 0xc9, - 0xcc, 0x5f, 0xf6, 0x51, - 0x8c, 0x98, 0x71, 0xa1, 0x4b, 0xd1, 0x5f, 0xd8, 0x0b, 0x26, 0x08, 0x8d, - 0xc4, 0xc1, 0xe1, 0xd9, - 0xc6, 0x71, 0x04, 0x36, 0xc9, 0xf5, 0x7e, 0xc5, 0x7d, 0x8d, 0xf7, 0x01, - 0x85, 0xd8, 0x82, 0x02, - 0x63, 0xd9, 0x02, 0x1b, 0x85, 0x9b, 0x3f, 0x83, 0xdf, 0xa7, 0x9a, 0xe1, - 0xa3, 0x6c, 0x41, 0x01, - 0xbf, 0xf1, 0xaf, 0xd1, 0x60, 0x9a, 0x2e, 0x52, 0xc3, 0xad, 0x2c, 0x5b, - 0x30, 0xc2, 0x72, 0xb6, - 0xf2, 0xc3, 0x95, 0x0d, 0x91, 0xde, 0xa0, 0xed, 0xbf, 0x40, 0x75, 0xb4, - 0xa9, 0x34, 0x23, 0xab, - 0x2c, 0x3b, 0x0a, 0x77, 0xd4, 0xb2, 0xc3, 0xca, 0x25, 0x7e, 0xb7, 0xe3, - 0x6a, 0x1f, 0x86, 0x05, - 0x11, 0x27, 0x4a, 0x91, 0x19, 0x39, 0x2f, 0xc7, 0xf9, 0x79, 0x1c, 0xf3, - 0xed, 0x01, 0x71, 0x25, - 0x73, 0x96, 0x51, 0xd2, 0xcc, 0x75, 0x29, 0x3f, 0x65, 0xc4, 0xbc, 0x85, - 0x66, 0xce, 0x7b, 0xc9, - 0xdc, 0x28, 0xad, 0xca, 0xe5, 0x01, 0x11, 0xd1, 0x1c, 0x0a, 0xb6, 0xba, - 0x93, 0xae, 0x33, 0xb7, - 0xd9, 0x23, 0xd0, 0x31, 0x36, 0x0c, 0xcc, 0x85, 0x90, 0x78, 0x64, 0x34, - 0x1b, 0xc4, 0x97, 0x68, - 0x92, 0xa2, 0xbc, 0xfe, 0xe4, 0xff, 0xd4, 0xe3, 0xa5, 0xc9, 0xa1, 0x2f, - 0x72, 0x7e, 0xbf, 0x5e, - 0x3e, 0xa4, 0x6b, 0x0e, 0x3d, 0x31, 0xa7, 0x80, 0x19, 0x29, 0xe5, 0x6a, - 0xff, 0x38, 0x2a, 0xd4, - 0xd2, 0x5d, 0x33, 0x5c, 0x03, 0xc1, 0x8c, 0x56, 0x08, 0x86, 0x39, 0x7c, - 0xe0, 0xb3, 0x57, 0xf8, - 0x59, 0x1e, 0x0d, 0xb6, 0x3b, 0x70, 0x7c, 0x2c, 0x09, 0xe6, 0x97, 0x92, - 0xfc, 0x9d, 0x84, 0xe7, - 0x75, 0x25, 0x07, 0xc1, 0xef, 0xc2, 0xbf, 0xe6, 0x2c, 0x98, 0x20, 0x71, - 0x96, 0x82, 0x02, 0xe2, - 0x19, 0xe1, 0x82, 0x14, 0xdc, 0x4e, 0x24, 0x99, 0xa4, 0xa9, 0x0f, 0xc1, - 0x6e, 0x50, 0x6c, 0x41, - 0xb4, 0x8f, 0x4c, 0xbc, 0x55, 0x57, 0x6e, 0x81, 0x5b, 0x53, 0x71, 0x13, - 0xcb, 0xb5, 0xb2, 0x26, - 0x81, 0x55, 0xc4, 0xdf, 0x5d, 0xab, 0x89, 0xd2, 0xda, 0x84, 0xc9, 0x31, - 0xcf, 0xfa, 0x58, 0x62, - 0xe4, 0x3f, 0x90, 0xd7, 0xfb, 0x87, 0x20, 0x88, 0x4c, 0x7f, 0xcf, 0x24, - 0x9c, 0xda, 0x60, 0x48, - 0xe5, 0x57, 0x89, 0x8f, 0xab, 0x50, 0x19, 0xf3, 0x0f, 0x65, 0xf5, 0xb3, - 0xb4, 0x79, 0x2b, 0xa5, - 0x0f, 0x1d, 0x87, 0xce, 0xb6, 0x17, 0xa4, 0xfc, 0x57, 0x96, 0xb5, 0x51, - 0x5b, 0xbe, 0x2f, 0xa2, - 0x47, 0x24, 0xc0, 0xe9, 0x94, 0x5e, 0xf7, 0x17, 0xa7, 0x09, 0x3e, 0x30, - 0x4a, 0x22, 0xda, 0x60, - 0x9c, 0xd7, 0x22, 0x68, 0x02, 0x3f, 0x49, 0x64, 0xb1, 0x45, 0x2e, 0xe9, - 0x01, 0x63, 0xdb, 0x11, - 0x2a, 0x88, 0x5c, 0x64, 0xf7, 0x05, 0x55, 0x13, 0x6c, 0x22, 0x2b, 0x17, - 0x9a, 0x53, 0xff, 0x2e, - 0xa8, 0x65, 0xb3, 0x53, 0x5a, 0x14, 0x97, 0x4c, 0x73, 0x88, 0xac, 0x5c, - 0x2d, 0x8f, 0x7a, 0xb8, - 0x5b, 0xce, 0x3f, 0x06, 0x9b, 0x1d, 0x0e, 0xda, 0x8f, 0xd2, 0xe3, 0x7f, - 0xac, 0x18, 0x12, 0xfe, - 0x8f, 0x20, 0x5a, 0x49, 0xbb, 0x6b, 0x14, 0x55, 0xce, 0x08, 0x46, 0xf7, - 0xbc, 0xe7, 0x3c, 0x2d, - 0x04, 0x63, 0x64, 0xa3, 0x83, 0xda, 0xe4, 0x2f, 0xcf, 0x68, 0xe8, 0x19, - 0xa0, 0xc9, 0xef, 0x32, - 0xa6, 0x10, 0x2d, 0xc5, 0xbc, 0xd4, 0x0a, 0xcb, 0x67, 0x04, 0x23, 0x9a, - 0x5e, 0x92, 0x1e, 0xf7, - 0x72, 0xfe, 0x48, 0x8a, 0x9c, 0xa2, 0x10, 0x44, 0x26, 0xde, 0x86, 0x12, - 0x4e, 0x6d, 0x30, 0x24, - 0xba, 0xfa, 0xd2, 0x2a, 0xb3, 0x97, 0xf3, 0x06, 0x4f, 0xdf, 0xfe, 0xd5, - 0xb8, 0xa8, 0xd6, 0x69, - 0x30, 0xd1, 0xf5, 0x98, 0xdb, 0xf1, 0x3a, 0x07, 0x0d, 0xa5, 0x6a, 0xac, - 0x8c, 0x25, 0x4e, 0x9b, - 0x4c, 0x5a, 0x23, 0x84, 0xa1, 0x93, 0xb7, 0xc4, 0x3f, 0xf7, 0x63, 0x78, - 0xb1, 0x55, 0x1a, 0xf0, - 0x82, 0xed, 0xef, 0x37, 0xad, 0x11, 0xc2, 0x5f, 0x1f, 0xaa, 0x87, 0x4b, - 0xb7, 0xdc, 0x85, 0x96, - 0x6a, 0x77, 0xd3, 0xc6, 0x10, 0x3b, 0x0d, 0xa6, 0xc1, 0x6d, 0xb3, 0x44, - 0x08, 0x9e, 0x17, 0x88, - 0x88, 0xfb, 0x15, 0x02, 0xc8, 0x0b, 0xbb, 0xf7, 0xc4, 0x4e, 0xe0, 0x94, - 0x64, 0x08, 0x0e, 0xeb, - 0x3c, 0x74, 0x59, 0xbe, 0x9d, 0x5c, 0xd5, 0x76, 0x9f, 0x1d, 0x91, 0x87, - 0xaf, 0xbd, 0xbc, 0xcd, - 0x6e, 0x14, 0xb7, 0x65, 0x93, 0xe1, 0xe9, 0x89, 0x0e, 0x05, 0x5b, 0x5d, - 0xa8, 0x57, 0xf8, 0xba, - 0x0b, 0x7e, 0xe3, 0x6d, 0x35, 0xcd, 0x40, 0xd3, 0x98, 0xfe, 0x5d, 0x48, - 0xfb, 0x77, 0xc0, 0x90, - 0x9e, 0x07, 0x10, 0xd8, 0xa2, 0x52, 0x3b, 0x92, 0x37, 0x71, 0x5a, 0x04, - 0x51, 0xe6, 0x4d, 0x08, - 0x68, 0xa7, 0xe1, 0x76, 0xb0, 0x56, 0x7f, 0x50, 0x47, 0x59, 0xc7, 0xa9, - 0x58, 0x1b, 0x81, 0x91, - 0x67, 0xba, 0x66, 0xb8, 0x06, 0x41, 0xdb, 0xac, 0x10, 0xcf, 0x72, 0xf8, - 0x03, 0xa5, 0xae, 0x33, - 0xc5, 0xc9, 0x2f, 0xde, 0x39, 0x4f, 0x35, 0x48, 0xb8, 0xa3, 0xb9, 0x7b, - 0xfd, 0xfe, 0x5f, 0xf6, - 0x74, 0x4d, 0x1e, 0x99, 0xbf, 0x15, 0x86, 0x9d, 0x6f, 0x82, 0x1a, 0xe6, - 0xbe, 0x21, 0x49, 0x0f, - 0x40, 0xff, 0x8f, 0xa2, 0xe7, 0x3e, 0x58, 0xb5, 0xad, 0x4f, 0x98, 0x53, - 0x92, 0xcd, 0xe8, 0xa6, - 0x0c, 0xa5, 0xac, 0x26, 0x46, 0xad, 0xef, 0x71, 0x92, 0xb8, 0xfb, 0x2b, - 0x23, 0x98, 0xf2, 0x56, - 0xe7, 0x87, 0xbb, 0x3f, 0x0b, 0x3d, 0x6b, 0x05, 0x89, 0x51, 0x81, 0x5e, - 0xe4, 0xfc, 0xbd, 0xbc, - 0x9d, 0xbf, 0x3b, 0x30, 0x52, 0xe8, 0x70, 0x1f, 0xf2, 0x5f, 0x14, 0x7e, - 0x29, 0xc0, 0x90, 0xfc, - 0x90, 0x72, 0x8e, 0x4e, 0x44, 0x92, 0xa6, 0x15, 0x23, 0xfd, 0xd5, 0xc2, - 0x22, 0xfb, 0x29, 0x47, - 0x7a, 0x38, 0x80, 0x0f, 0x59, 0xd5, 0x1b, 0x1a, 0x7b, 0x0e, 0x95, 0x20, - 0xcd, 0x3c, 0x2d, 0x40, - 0x3a, 0xc7, 0x0f, 0xad, 0xbe, 0xeb, 0x43, 0xaf, 0xd6, 0x41, 0x0d, 0x73, - 0x5f, 0xf1, 0xc5, 0xe6, - 0x35, 0xda, 0x88, 0x63, 0x08, 0xfc, 0xe7, 0x53, 0x81, 0xd7, 0xb8, 0x22, - 0x04, 0x4f, 0xea, 0x44, - 0x34, 0xb2, 0x91, 0x3b, 0x58, 0x2b, 0xde, 0x28, 0xc2, 0xcd, 0x82, 0xb5, - 0x2c, 0xec, 0xa1, 0xa9, - 0x9f, 0x6f, 0x09, 0x80, 0xf2, 0x85, 0x02, 0xe9, 0x74, 0x6b, 0x60, 0x93, - 0x79, 0x45, 0x06, 0xe5, - 0xb7, 0x37, 0x67, 0x54, 0xa5, 0xed, 0x25, 0x0c, 0x9e, 0x7d, 0x3f, 0x69, - 0xb3, 0x93, 0x6f, 0xd2, - 0xf8, 0xd5, 0x6f, 0x38, 0xf4, 0xc4, 0xd9, 0x45, 0x64, 0xa4, 0x12, 0x6b, - 0x7a, 0xe0, 0xa8, 0xd6, - 0x4f, 0xe2, 0x08, 0x6c, 0x51, 0x29, 0xfc, 0x49, 0xfa, 0xd9, 0x2d, 0x02, - 0xc9, 0x73, 0xc7, 0x04, - 0x6b, 0x1f, 0xca, 0x9e, 0x40, 0xec, 0x34, 0xdd, 0x82, 0x77, 0x89, 0xd3, - 0x20, 0x3d, 0x5c, 0x65, - 0x83, 0x85, 0xf6, 0x6f, 0xfd, 0xc6, 0xfb, 0x24, 0x5c, 0xb0, 0xbd, 0xdc, - 0x9f, 0x7f, 0xce, 0x7b, - 0x5f, 0xad, 0x5b, 0xa5, 0x18, 0xc7, 0xea, 0xf5, 0x40, 0xba, 0x0b, 0x66, - 0x0c, 0xd1, 0xfd, 0xcc, - 0xa7, 0x78, 0x34, 0x9d, 0xec, 0x03, 0x33, 0xb0, 0x24, 0x1e, 0x19, 0x0d, - 0x76, 0x31, 0x55, 0x1a, - 0x1e, 0x3a, 0xcd, 0x5f, 0xaf, 0x2e, 0x8b, 0x3b, 0xae, 0xef, 0xa9, 0xa2, - 0xb6, 0xbf, 0x5e, 0x87, - 0x10, 0x4f, 0x53, 0xc9, 0x49, 0xee, 0x16, 0xbc, 0xba, 0x63, 0x26, 0x64, - 0xc5, 0xa2, 0x3a, 0xc8, - 0xc3, 0x7a, 0x79, 0xcd, 0x1a, 0xf8, 0xa3, 0x91, 0xf1, 0xff, 0x25, 0x8f, - 0x0d, 0xb2, 0x26, 0xdd, - 0x78, 0xe8, 0xb2, 0xbf, 0xf9, 0xb8, 0x69, 0xec, 0xfd, 0x3a, 0xe1, 0xcd, - 0x9d, 0xb9, 0xbb, 0x59, - 0x2d, 0x53, 0x13, 0x2f, 0x84, 0x65, 0xfa, 0xb1, 0x66, 0x64, 0x8d, 0x74, - 0x42, 0xbc, 0xcd, 0xe8, - 0x77, 0xf5, 0x35, 0x71, 0x4f, 0xaf, 0xcd, 0x10, 0xaa, 0xac, 0x54, 0x9c, - 0xc6, 0x07, 0x94, 0xfb, - 0xe3, 0xe4, 0xdf, 0x9c, 0x88, 0xe7, 0x8f, 0x2a, 0x46, 0x39, 0x69, 0x47, - 0x44, 0x35, 0x52, 0x8e, - 0x80, 0x3d, 0xdd, 0x87, 0x0d, 0x7c, 0xb0, 0xa9, 0x99, 0x9e, 0xf3, 0xa6, - 0xe7, 0x59, 0x13, 0x8f, - }, - { /* 6 */ - 0xa2, 0xc8, 0x81, 0xe2, 0x3b, 0xb3, 0xc2, 0x65, 0xc5, 0x23, 0x88, 0xa8, - 0x4b, 0xa0, 0x07, 0xfc, - 0x7e, 0x5e, 0xba, 0x73, 0x1f, 0x4c, 0x94, 0x8f, 0x72, 0xc4, 0x53, 0xb4, - 0x67, 0xfd, 0xe6, 0xee, - 0x65, 0xcf, 0x9b, 0x0b, 0x79, 0xd8, 0x3c, 0xc1, 0x2a, 0xfe, 0xa1, 0x96, - 0xda, 0xeb, 0x16, 0xdd, - 0x09, 0xce, 0x1f, 0x28, 0x22, 0xcd, 0xd9, 0x3a, 0x89, 0x16, 0xef, 0x1e, - 0x6b, 0xb3, 0x50, 0x11, - 0xb9, 0x59, 0xa0, 0x9a, 0x5d, 0x27, 0x6a, 0x2b, 0x9d, 0x19, 0x7a, 0x8a, - 0xf6, 0xb6, 0xf7, 0xcf, - 0xaa, 0x23, 0xa2, 0x8f, 0xdc, 0xda, 0x7c, 0x18, 0xa1, 0x08, 0x06, 0xf5, - 0x92, 0xb9, 0xdd, 0x6e, - 0x3c, 0x40, 0x19, 0x17, 0x62, 0x09, 0xe3, 0x6f, 0xcd, 0x25, 0x6b, 0x9f, - 0xc7, 0xa2, 0x2e, 0x31, - 0x92, 0xf7, 0x4b, 0x4f, 0x2c, 0x06, 0xc0, 0xa8, 0x5e, 0xd9, 0x2a, 0xa5, - 0xd8, 0xf6, 0x9e, 0x16, - 0x39, 0xf1, 0xd5, 0x85, 0x35, 0x78, 0xdb, 0xf7, 0x12, 0xec, 0x4d, 0x13, - 0xf8, 0xe5, 0xc9, 0xfb, - 0xf0, 0xc3, 0x64, 0x5c, 0x4b, 0x24, 0x0a, 0x7f, 0xb2, 0x94, 0x6f, 0x39, - 0x9a, 0xcd, 0xb8, 0xc4, - 0xcb, 0x78, 0xc9, 0x53, 0x37, 0xd7, 0x1f, 0x06, 0xb9, 0x02, 0xe0, 0xac, - 0xc5, 0xbf, 0xa6, 0xfa, - 0xfe, 0xf6, 0xcf, 0x6c, 0x77, 0x13, 0x25, 0x53, 0xfd, 0x31, 0x64, 0x2d, - 0x69, 0xae, 0xd8, 0xda, - 0xe0, 0xd6, 0x22, 0x86, 0x46, 0xf6, 0xb5, 0x85, 0x7a, 0xc2, 0xb0, 0x83, - 0xeb, 0xff, 0xcf, 0x23, - 0x02, 0x4a, 0x78, 0x8a, 0x49, 0x8b, 0xce, 0x8e, 0x19, 0x7a, 0xc2, 0x86, - 0xa7, 0x97, 0xd7, 0xc5, - 0x4e, 0x61, 0x70, 0xde, 0x08, 0xf9, 0x96, 0x42, 0xe9, 0x3e, 0xf1, 0xb9, - 0xf4, 0xab, 0x7f, 0x04, - 0x4a, 0xf5, 0x80, 0x09, 0x9a, 0x2c, 0xc9, 0x9d, 0xdb, 0xca, 0xb6, 0x76, - 0x79, 0x46, 0x12, 0x4d, - 0xe5, 0x67, 0xee, 0x14, 0x11, 0x87, 0x8d, 0x1d, 0xa5, 0x0b, 0x96, 0x0f, - 0xd4, 0xb8, 0x28, 0xe9, - 0x3f, 0x2f, 0x5d, 0xd8, 0xee, 0x26, 0x4a, 0xa6, 0x39, 0x62, 0xc8, 0x5a, - 0xd2, 0x9f, 0x73, 0x77, - 0x70, 0x6b, 0x11, 0x43, 0x23, 0x7b, 0xbb, 0xa3, 0x3d, 0x61, 0x58, 0xa0, - 0x94, 0x9e, 0x86, 0xf0, - 0x0c, 0x7f, 0xd3, 0xba, 0x75, 0xbc, 0xe1, 0xa2, 0x56, 0xdf, 0xc9, 0x92, - 0x54, 0xf4, 0xb7, 0xdb, - 0xfa, 0x62, 0x3f, 0xbb, 0xe5, 0xc6, 0x7a, 0x8c, 0xcf, 0xc5, 0x23, 0xe2, - 0xe4, 0x43, 0xb5, 0x93, - 0xc0, 0xfc, 0xae, 0xf1, 0x5c, 0x91, 0x08, 0xb2, 0x29, 0x6e, 0xcd, 0x34, - 0x09, 0x9b, 0x21, 0x2e, - 0x41, 0x71, 0xe7, 0xab, 0xf1, 0x6a, 0xde, 0x29, 0x4b, 0xa6, 0x9b, 0xee, - 0xb5, 0x62, 0x95, 0x99, - 0xa1, 0xa7, 0xc5, 0x2d, 0xb7, 0x9c, 0x6b, 0xac, 0x31, 0x64, 0x2b, 0x6d, - 0x5e, 0x9d, 0x5a, 0xba, - 0x60, 0x7e, 0x57, 0x99, 0x2e, 0xa9, 0x04, 0x59, 0xf5, 0x37, 0x87, 0x1a, - 0xe5, 0xac, 0xf1, 0x17, - 0xa7, 0x79, 0x4d, 0x70, 0x6c, 0xc2, 0xfa, 0xfd, 0x1a, 0xea, 0xae, 0x24, - 0x74, 0xe7, 0xe0, 0x36, - 0x82, 0xe2, 0x0d, 0x95, 0x21, 0xd4, 0x7f, 0x52, 0x96, 0x8f, 0xf5, 0x1f, - 0xa9, 0xc4, 0xe9, 0xf1, - 0x53, 0x2e, 0xd9, 0xfb, 0xb5, 0x33, 0xaf, 0x5d, 0x9a, 0x8a, 0x86, 0xd2, - 0x63, 0xc7, 0x35, 0xbb, - 0xb5, 0x26, 0x73, 0x20, 0x28, 0x9b, 0x8b, 0x89, 0xcb, 0xc6, 0xb3, 0x18, - 0xa2, 0x42, 0x40, 0x14, - 0x9e, 0x88, 0x98, 0xf5, 0x59, 0xba, 0x21, 0x0a, 0x08, 0x06, 0xe3, 0x37, - 0x8c, 0x02, 0x29, 0xcd, - 0x96, 0x63, 0xbb, 0x98, 0xbe, 0xd3, 0x9f, 0x77, 0x6c, 0x2d, 0x6d, 0x6a, - 0x55, 0x1b, 0xf3, 0x5f, - 0x4c, 0x2b, 0x08, 0x54, 0x41, 0x72, 0x58, 0xcc, 0xf0, 0x44, 0x33, 0x3f, - 0x53, 0x3c, 0xa8, 0xc1, - 0x1e, 0x20, 0xed, 0xea, 0x31, 0xe5, 0x90, 0xd6, 0x87, 0xf3, 0xd4, 0xae, - 0x82, 0x51, 0x17, 0xf9, - 0x67, 0x85, 0xe3, 0x81, 0x30, 0x53, 0xf2, 0x4f, 0x33, 0x84, 0x63, 0x10, - 0x7d, 0x7c, 0xc1, 0x18, - 0xe3, 0xb9, 0x66, 0x49, 0xca, 0xd9, 0x1c, 0x4c, 0x8e, 0x85, 0x13, 0x46, - 0xfe, 0xc2, 0x92, 0x65, - 0x2a, 0x8b, 0xd7, 0x90, 0xb4, 0x85, 0xcd, 0xc4, 0x2e, 0xfd, 0x31, 0x6c, - 0x9c, 0xea, 0xe3, 0x5a, - 0xac, 0xfd, 0x2a, 0xd2, 0x07, 0x84, 0xed, 0x49, 0x8a, 0x86, 0x83, 0xbc, - 0xb8, 0xc3, 0x67, 0xe2, - 0x43, 0x3b, 0x9f, 0x21, 0xb8, 0xe1, 0x10, 0xa7, 0x52, 0xdc, 0x59, 0x68, - 0x12, 0xf5, 0x42, 0x5c, - 0x8c, 0xd7, 0xa6, 0xa5, 0x1d, 0xe3, 0x50, 0x7e, 0xd9, 0x2a, 0xfe, 0x0b, - 0x5a, 0xa7, 0x89, 0xef, - 0xc7, 0x07, 0x1a, 0xe9, 0x42, 0x6b, 0xfe, 0xa4, 0xef, 0xdd, 0x29, 0x3e, - 0x91, 0x4b, 0x11, 0x21, - 0x26, 0xf4, 0x04, 0x2a, 0xc1, 0x39, 0x2c, 0x66, 0x78, 0x22, 0xf8, 0xfe, - 0xc8, 0x1e, 0x54, 0x81, - 0x29, 0xe4, 0x93, 0x5f, 0x38, 0xaa, 0x64, 0x0d, 0xda, 0xba, 0x92, 0xa9, - 0x89, 0xd7, 0xbe, 0x1c, - 0x1c, 0x6a, 0x95, 0x60, 0x78, 0x6e, 0x5e, 0x58, 0x9e, 0x89, 0x16, 0x28, - 0x25, 0xc6, 0xc0, 0x3c, - 0x4d, 0x0e, 0x34, 0x11, 0x84, 0xd6, 0x3f, 0x8b, 0x1d, 0x79, 0x52, 0x7c, - 0xe1, 0x96, 0x22, 0x42, - 0x9d, 0xe7, 0xdc, 0x3a, 0xd5, 0x95, 0x88, 0xc3, 0xfc, 0x41, 0x40, 0xf2, - 0x99, 0x3f, 0x74, 0x8b, - 0xf2, 0x89, 0x1c, 0xd6, 0x02, 0xaf, 0xc4, 0xf1, 0xab, 0xee, 0xad, 0xbf, - 0x3d, 0x5a, 0x6f, 0x01, - 0x21, 0x0f, 0xb0, 0x32, 0xdf, 0xc3, 0xda, 0x70, 0xbe, 0x91, 0x1c, 0xf4, - 0x50, 0xce, 0x64, 0x8e, - 0x6d, 0x24, 0xb8, 0x66, 0x9e, 0xb1, 0x82, 0xbc, 0x4e, 0xd5, 0x2f, 0xcb, - 0x03, 0xf2, 0xcc, 0x4f, - 0xbc, 0xe8, 0x6c, 0x08, 0x0a, 0x56, 0x52, 0xb3, 0x42, 0xd0, 0x5c, 0x06, - 0xc9, 0xf1, 0x10, 0x05, - 0x9a, 0x1c, 0x68, 0x22, 0xcb, 0x6f, 0x7e, 0xd5, 0x3a, 0xf2, 0xa4, 0xf8, - 0x01, 0xef, 0x44, 0x84, - 0x27, 0xd1, 0x38, 0x6f, 0x04, 0x9d, 0x4b, 0x21, 0x95, 0x1f, 0x99, 0xbd, - 0x7a, 0xb4, 0xde, 0x02, - 0x14, 0x81, 0xb6, 0x0d, 0x9f, 0x07, 0xe0, 0x25, 0xfa, 0xa2, 0x98, 0x75, - 0xfc, 0xdf, 0x1a, 0xae, - 0x5e, 0x74, 0x36, 0x04, 0x05, 0x2b, 0x29, 0xb8, 0x21, 0x68, 0x2e, 0x03, - 0x85, 0x99, 0x08, 0xe3, - 0xe4, 0x42, 0xd2, 0x51, 0xd4, 0x23, 0xea, 0x5a, 0x48, 0x36, 0xf7, 0x4c, - 0x66, 0x12, 0xa2, 0x6a, - 0xd3, 0x86, 0xac, 0xe4, 0xdd, 0x6c, 0x1e, 0x81, 0x15, 0x7f, 0xb1, 0x4b, - 0x6d, 0x94, 0x0b, 0x8f, - 0xe1, 0xf3, 0x1e, 0xc3, 0x83, 0x52, 0xd2, 0xc2, 0x97, 0xff, 0xd1, 0xc0, - 0x59, 0x55, 0x45, 0xa0, - 0x69, 0xb0, 0x48, 0xb1, 0x0c, 0x64, 0xdd, 0x63, 0x7c, 0x21, 0x68, 0x04, - 0x8e, 0x1f, 0xa1, 0x06, - 0x49, 0x9a, 0xc4, 0xc6, 0x16, 0x03, 0x60, 0x54, 0x2f, 0x8d, 0x15, 0xb3, - 0x6c, 0x7b, 0x4f, 0x0b, - 0xab, 0x06, 0x9e, 0xca, 0x19, 0x7e, 0x1b, 0x5f, 0x4c, 0x35, 0x67, 0xb6, - 0x20, 0x13, 0x57, 0xed, - 0xb3, 0xf8, 0xfb, 0x7d, 0xf3, 0xc5, 0x1a, 0xd8, 0xe0, 0x48, 0x36, 0x51, - 0x88, 0x38, 0xfa, 0x98, - 0xa3, 0xed, 0xbd, 0xa7, 0xfe, 0x17, 0xa5, 0x22, 0x28, 0x1e, 0xe9, 0xeb, - 0xf9, 0x0a, 0x8d, 0x7f, - 0x0b, 0x84, 0x67, 0xa2, 0x6b, 0x46, 0x17, 0xb4, 0x90, 0x6c, 0x2d, 0x98, - 0xcc, 0x24, 0x87, 0xd4, - 0x90, 0xbd, 0x33, 0xc5, 0x65, 0x8d, 0x0e, 0x26, 0x47, 0xa3, 0xe8, 0x23, - 0x7f, 0x61, 0x49, 0xd3, - 0xfc, 0xbc, 0xb7, 0xe6, 0x3e, 0x98, 0xeb, 0xdd, 0xe4, 0x4b, 0xa6, 0xab, - 0xce, 0x39, 0x0f, 0x1f, - 0xc2, 0xb6, 0xd6, 0x7b, 0x15, 0x1a, 0xc6, 0x3c, 0x30, 0x14, 0x0f, 0xb2, - 0xae, 0x0c, 0xf6, 0xeb, - 0x80, 0xa8, 0x75, 0x1f, 0x68, 0x5f, 0xb1, 0xdc, 0x8f, 0xf5, 0x37, 0x99, - 0x0e, 0x53, 0x3e, 0x34, - 0xe7, 0x2d, 0x96, 0x9e, 0x58, 0x0c, 0x43, 0x93, 0xbc, 0x71, 0x54, 0x89, - 0x73, 0x2f, 0xff, 0x2c, - 0x63, 0x11, 0x13, 0x56, 0xa2, 0x86, 0xad, 0x90, 0x01, 0x70, 0x24, 0xdf, - 0xf0, 0x91, 0xac, 0x51, - 0x30, 0x3f, 0xca, 0xad, 0x17, 0xb5, 0x02, 0xcd, 0x9b, 0xfa, 0xa2, 0x0d, - 0x93, 0x56, 0x99, 0xea, - 0x22, 0x60, 0xf4, 0xfd, 0x53, 0xec, 0x73, 0xb9, 0x4a, 0xd6, 0xbf, 0x31, - 0x45, 0xf3, 0x39, 0xc8, - 0xf6, 0x1d, 0xec, 0x01, 0x90, 0x7a, 0x9b, 0x2e, 0x99, 0x1a, 0xea, 0x70, - 0xb0, 0xb7, 0x02, 0x48, - 0xa8, 0x69, 0xda, 0x05, 0x95, 0x51, 0xb2, 0x96, 0xb8, 0x72, 0xc4, 0x73, - 0x35, 0x2e, 0x0a, 0xab, - 0x57, 0xba, 0x29, 0x2c, 0x27, 0xe6, 0xf0, 0x82, 0xa8, 0x7e, 0xc1, 0x1d, - 0xee, 0x2a, 0x58, 0xf2, - 0x8e, 0x9d, 0xde, 0x2f, 0x54, 0x68, 0x9e, 0xf0, 0xc0, 0x50, 0x3c, 0x8d, - 0xfd, 0x30, 0x5e, 0x2a, - 0xc3, 0x93, 0xea, 0x3e, 0xd0, 0xbe, 0xa1, 0x7b, 0xdd, 0x29, 0x6e, 0xf1, - 0x1c, 0xa6, 0x7c, 0x68, - 0xc6, 0x22, 0x26, 0xac, 0x87, 0xcf, 0x99, 0xe3, 0x02, 0xe0, 0x48, 0x7d, - 0x23, 0xe1, 0x9b, 0xa2, - 0x50, 0x41, 0x9d, 0x34, 0x39, 0x1c, 0x06, 0x94, 0x6e, 0xcd, 0x25, 0x17, - 0x76, 0xfa, 0x68, 0xfd, - 0x75, 0xda, 0xdd, 0xd1, 0x74, 0x0a, 0x83, 0x3b, 0xe2, 0xa8, 0x7e, 0x2c, - 0xab, 0xd9, 0x61, 0x3a, - 0x4b, 0xd0, 0xbc, 0x4c, 0x5f, 0x88, 0xae, 0xda, 0x36, 0xf7, 0xd7, 0x35, - 0xcb, 0xec, 0x98, 0xce, - 0x6c, 0x01, 0x84, 0x23, 0x5b, 0x15, 0xe5, 0xfb, 0xa3, 0xe8, 0x4e, 0x88, - 0xb1, 0x58, 0x46, 0xcc, - 0xa6, 0x5c, 0x71, 0x35, 0xa9, 0x66, 0x9d, 0xba, 0xf7, 0xd7, 0xcf, 0x67, - 0xc6, 0x4d, 0x6a, 0xb5, - 0xa4, 0x16, 0x09, 0xbf, 0xe0, 0xed, 0x53, 0x34, 0xee, 0xad, 0x0d, 0xe1, - 0x61, 0xda, 0xbd, 0x70, - 0xf5, 0x72, 0xa8, 0xce, 0x1c, 0x55, 0x32, 0xe7, 0x6d, 0x5d, 0x49, 0xb5, - 0xa5, 0x8a, 0x5f, 0x0e, - 0xf8, 0x28, 0x47, 0x31, 0xac, 0x4d, 0xb4, 0x02, 0xd6, 0xbf, 0xe1, 0x64, - 0x43, 0xd4, 0x62, 0x56, - 0x9c, 0xc2, 0xe0, 0x7f, 0x10, 0x31, 0xef, 0x84, 0x11, 0x7c, 0x21, 0xb1, - 0x2b, 0x95, 0xfe, 0x08, - 0xd2, 0xa3, 0x90, 0xa1, 0x18, 0xc8, 0x79, 0xc6, 0xf8, 0x42, 0xd0, 0x08, - 0xdf, 0x3e, 0x81, 0x0c, - 0xcd, 0xa6, 0x41, 0x0e, 0xec, 0x89, 0x8e, 0x57, 0x92, 0x8c, 0x65, 0xe5, - 0xef, 0xc5, 0x1c, 0x76, - 0xdc, 0x96, 0x3b, 0x91, 0x24, 0xff, 0x56, 0xea, 0xb7, 0xe7, 0xdb, 0x1c, - 0x2c, 0x5d, 0xe1, 0x12, - 0x1d, 0x4f, 0xa9, 0x25, 0xbd, 0xca, 0x39, 0x1f, 0x73, 0xb4, 0x77, 0x6b, - 0x97, 0x6c, 0x4a, 0xbf, - 0x83, 0xc7, 0x31, 0xd0, 0xe4, 0x70, 0x18, 0x15, 0x7b, 0xb2, 0x94, 0x5c, - 0x1b, 0x6e, 0x63, 0x72, - 0x2e, 0x1f, 0x27, 0x47, 0x26, 0x50, 0x92, 0x1b, 0x1c, 0x09, 0x76, 0xa3, - 0x11, 0x07, 0x8e, 0x13, - 0xf1, 0xe6, 0x58, 0x19, 0x8e, 0x80, 0x6d, 0x38, 0x5f, 0xa9, 0x0e, 0x7a, - 0x28, 0x67, 0x32, 0x47, - 0xfd, 0x99, 0x8b, 0xa3, 0xfb, 0x3c, 0x8c, 0x9a, 0x09, 0x76, 0xc7, 0xe8, - 0x7c, 0x93, 0x85, 0x9c, - 0x81, 0x8d, 0x49, 0x5a, 0xad, 0xfb, 0xd6, 0x9b, 0x62, 0xc8, 0x56, 0xda, - 0xbc, 0xf9, 0xb4, 0xb7, - 0xb1, 0xb2, 0x83, 0xf7, 0xba, 0x4e, 0xd4, 0x56, 0xf9, 0x32, 0xf4, 0xd7, - 0x2f, 0xaf, 0x2d, 0x5d, - 0x4f, 0x44, 0x4c, 0x9b, 0xcd, 0x5d, 0xf1, 0x05, 0x04, 0x03, 0x90, 0xfa, - 0x46, 0x01, 0xf5, 0x87, - 0x47, 0xaf, 0x6f, 0xf6, 0x2a, 0x34, 0x4f, 0x78, 0x60, 0x28, 0x1e, 0xa7, - 0x9f, 0x18, 0x2f, 0x15, - 0x13, 0x7a, 0x02, 0x15, 0x81, 0xfd, 0x16, 0x33, 0x3c, 0x11, 0x7c, 0x7f, - 0x64, 0x0f, 0x2a, 0xa1, - 0x46, 0x8a, 0x53, 0xb3, 0xef, 0x90, 0x28, 0x3f, 0x8d, 0x15, 0x7f, 0xe4, - 0x2d, 0xb2, 0xa5, 0x96, - 0x5b, 0xc5, 0xfa, 0x96, 0x52, 0x5a, 0x11, 0x20, 0xfe, 0xa1, 0x08, 0x8f, - 0xba, 0xde, 0xef, 0x29, - 0xfb, 0x47, 0x03, 0xfe, 0x20, 0x62, 0x1d, 0xcb, 0x22, 0xf8, 0x42, 0xa1, - 0x56, 0xe9, 0x3f, 0x10, - 0xed, 0x8c, 0xcd, 0x79, 0xf6, 0xee, 0x33, 0x60, 0xc1, 0x20, 0x18, 0x52, - 0x0d, 0xa1, 0xf2, 0x7b, - 0x94, 0x29, 0xc3, 0x12, 0xf7, 0x58, 0x51, 0xf9, 0x75, 0x57, 0xaf, 0xec, - 0xf2, 0x8c, 0x24, 0x9a, - 0x25, 0x9b, 0x40, 0xe5, 0x4d, 0x16, 0x85, 0xaf, 0x8c, 0x65, 0x5b, 0x3b, - 0xdd, 0x23, 0x09, 0xc7, - 0xa5, 0x33, 0x35, 0xfa, 0x25, 0x49, 0x34, 0x73, 0x03, 0x90, 0x6c, 0xa2, - 0xd3, 0x70, 0x37, 0xf3, - 0xdd, 0xb3, 0x07, 0xd4, 0xe1, 0x5b, 0x31, 0xad, 0x5a, 0xda, 0xba, 0x5f, - 0x9e, 0xf7, 0x6b, 0x91, - 0x38, 0xd4, 0xe9, 0xc0, 0xf0, 0xdc, 0xbc, 0xb0, 0xff, 0xd1, 0x2c, 0x50, - 0x4a, 0x4f, 0x43, 0x78, - 0x58, 0xaa, 0xbe, 0x59, 0xde, 0x75, 0xb8, 0xe9, 0x0a, 0xe6, 0xab, 0x4a, - 0xaf, 0xe3, 0xb2, 0x6f, - 0x0f, 0x10, 0x97, 0x75, 0xf9, 0x93, 0x48, 0x6b, 0xa2, 0x98, 0x6a, 0x57, - 0x41, 0xc9, 0xea, 0x9d, - 0xda, 0x48, 0xb3, 0xcc, 0xff, 0xa1, 0xc7, 0xbb, 0x9c, 0x69, 0x5e, 0x55, - 0x06, 0x27, 0x5b, 0x9e, - 0x3d, 0x65, 0x25, 0x52, 0xa7, 0xad, 0x84, 0x28, 0x20, 0x18, 0x0a, 0xdc, - 0x75, 0x08, 0xa4, 0xb2, - 0xe8, 0x3d, 0x01, 0xeb, 0xa1, 0x9f, 0x0b, 0xf8, 0x1e, 0xe9, 0x3e, 0xde, - 0x32, 0xe6, 0x15, 0xb1, - 0xe9, 0x18, 0x3d, 0xae, 0x64, 0x3b, 0x6c, 0xbf, 0xf3, 0xd4, 0x5f, 0x9d, - 0x80, 0x4c, 0x9f, 0x32, - 0x18, 0xfe, 0x65, 0xb7, 0xea, 0xbb, 0x01, 0x87, 0xac, 0x7d, 0x51, 0xe7, - 0xa8, 0x2b, 0xad, 0x75, - 0x95, 0x0c, 0xff, 0x57, 0x32, 0xfc, 0x36, 0xbe, 0x98, 0x6a, 0xce, 0xaf, - 0x40, 0x26, 0xae, 0x19, - 0xee, 0xe3, 0x89, 0xb6, 0x7a, 0xc1, 0x9a, 0xa9, 0x35, 0x67, 0xbb, 0x97, - 0x18, 0x9c, 0xaf, 0x3d, - 0x77, 0x90, 0xa5, 0x5b, 0x3d, 0x81, 0x4d, 0xb5, 0xfb, 0xd2, 0xbc, 0xaa, - 0x0c, 0x4e, 0xb6, 0xff, - 0x72, 0x21, 0x69, 0xc9, 0x6a, 0xf0, 0x75, 0x2d, 0x24, 0x1b, 0x9a, 0x26, - 0x33, 0x09, 0x51, 0x35, - 0x6f, 0x6e, 0xc0, 0xec, 0xd7, 0x3a, 0x4c, 0x32, 0x57, 0xaf, 0xed, 0x4d, - 0xa4, 0x65, 0x1b, 0x8a, - 0x51, 0x64, 0xa1, 0x71, 0xfc, 0xb8, 0x61, 0xd3, 0x83, 0xf0, 0x44, 0x54, - 0xc4, 0x50, 0xe2, 0x7e, - 0x7f, 0x7b, 0x86, 0x36, 0xda, 0xe8, 0xf3, 0xc8, 0x9f, 0xf9, 0x32, 0xf7, - 0xd5, 0x57, 0x6c, 0x6d, - 0xdf, 0xf9, 0x7f, 0x5e, 0xa8, 0xd0, 0xff, 0x23, 0x43, 0xa0, 0x78, 0xd9, - 0x39, 0x60, 0xbc, 0x54, - 0xd7, 0x12, 0x5c, 0x33, 0x4f, 0xb9, 0x41, 0x5e, 0x27, 0x8b, 0xf6, 0x84, - 0xe0, 0x79, 0x66, 0xc6, - 0xd4, 0x7d, 0x18, 0xfc, 0xc3, 0x96, 0xe8, 0x97, 0xd3, 0xcc, 0x55, 0x41, - 0xf5, 0x44, 0x3b, 0x80, - 0x6b, 0xfa, 0x30, 0x3b, 0x45, 0xef, 0x13, 0xed, 0x65, 0x5b, 0xaa, 0x82, - 0x29, 0x88, 0x76, 0xc3, - 0x3a, 0x9e, 0x91, 0x4a, 0xb9, 0x57, 0x72, 0x3e, 0xe6, 0xab, 0xee, 0xd6, - 0xed, 0xd8, 0x94, 0xbd, - 0x20, 0x2a, 0x8c, 0x77, 0x1a, 0x67, 0xbd, 0x37, 0x53, 0xac, 0x7d, 0xb7, - 0xe2, 0x64, 0xee, 0x0d, - 0x0a, 0xa1, 0x5b, 0xe7, 0xae, 0xe2, 0x70, 0xf3, 0x7d, 0x51, 0x4c, 0xdb, - 0x7e, 0x8e, 0x0d, 0x57, - 0x42, 0x1e, 0xa3, 0x64, 0x7d, 0x45, 0x77, 0xe0, 0xbf, 0xe1, 0x38, 0x2b, - 0xa0, 0x5f, 0xc8, 0xdf, - 0xcc, 0x83, 0x7d, 0x4b, 0x29, 0x2d, 0xe9, 0x10, 0x7f, 0xb1, 0x04, 0xa6, - 0x5d, 0x6f, 0x96, 0xf5, - 0x7b, 0xef, 0x76, 0xe1, 0x48, 0x3d, 0xac, 0x17, 0xad, 0x0d, 0x75, 0x38, - 0x58, 0xba, 0x01, 0x24, - 0x8f, 0xb8, 0xe2, 0x6a, 0x91, 0xcc, 0xf9, 0xb7, 0x2d, 0x6d, 0x5d, 0xce, - 0x4f, 0x9a, 0xd4, 0xa9, - 0x3b, 0xbb, 0xad, 0x0f, 0x7c, 0xf3, 0x15, 0x79, 0x0b, 0x96, 0x8f, 0x95, - 0x5f, 0x72, 0x1e, 0x3e, - 0x7d, 0x31, 0xfe, 0xbc, 0x93, 0x63, 0x3d, 0x46, 0x86, 0x83, 0xf0, 0x71, - 0x72, 0xc0, 0xbb, 0xa8, - 0xbf, 0x87, 0x28, 0xc7, 0x86, 0x79, 0xfb, 0x7a, 0xb6, 0x97, 0xff, 0xc3, - 0xdc, 0xcc, 0x4d, 0x43, - 0xd0, 0xe9, 0xe8, 0x2b, 0x51, 0x43, 0xb7, 0x48, 0xe1, 0x38, 0x12, 0x8e, - 0x78, 0xa9, 0x56, 0xc9, - 0xde, 0xdc, 0x43, 0x1b, 0x6d, 0x74, 0x98, 0x64, 0xae, 0x9d, 0x19, 0x9a, - 0x8b, 0xca, 0x36, 0xd7, - 0xca, 0x5d, 0xf5, 0x16, 0xf2, 0x73, 0x78, 0x41, 0x54, 0x3f, 0x81, 0xef, - 0x77, 0x15, 0x2c, 0x79, - 0x2c, 0x55, 0x5f, 0xcd, 0x6f, 0xdb, 0x5c, 0x95, 0x05, 0x73, 0xb4, 0x25, - 0xb6, 0x90, 0x59, 0xd6, - 0x19, 0xdb, 0x59, 0xf2, 0x2f, 0x1f, 0x66, 0xc0, 0x41, 0x40, 0x30, 0xa4, - 0x1a, 0x81, 0x27, 0xf6, - 0x76, 0xb5, 0x99, 0x1e, 0xf8, 0x25, 0x2a, 0xf2, 0x16, 0xef, 0xdd, 0xe9, - 0xbe, 0xe4, 0x3c, 0x7c, - 0x12, 0x5f, 0x3e, 0x50, 0x44, 0x59, 0x71, 0x74, 0xd1, 0x2c, 0x1d, 0x3c, - 0xd6, 0xa5, 0xa0, 0x22, - 0x74, 0xff, 0xe1, 0x94, 0xb1, 0xae, 0xe4, 0x7c, 0x0f, 0x95, 0x1f, 0x6f, - 0x19, 0x73, 0xeb, 0xb9, - 0xd5, 0x58, 0x24, 0xb9, 0x06, 0x32, 0x8f, 0xd0, 0x3e, 0xf1, 0x34, 0x02, - 0x47, 0xee, 0xb1, 0x03, - 0x8b, 0x2c, 0x12, 0xbd, 0x03, 0x19, 0xa6, 0x68, 0x1f, 0x99, 0x1a, 0x01, - 0xc2, 0x77, 0xb9, 0xe0, - 0x07, 0xfb, 0xb4, 0x18, 0x1e, 0xfa, 0xf6, 0x16, 0xc6, 0xb3, 0xe4, 0x0a, - 0x98, 0xd0, 0x30, 0x0f, - 0x59, 0x8f, 0x82, 0x1c, 0x1b, 0xd1, 0xdf, 0xae, 0xe7, 0xdb, 0xca, 0x09, - 0x1d, 0x49, 0x38, 0xec, - 0xb0, 0x97, 0xbf, 0xb2, 0x7f, 0xea, 0xb3, 0x11, 0x14, 0x0f, 0x95, 0x94, - 0x9d, 0x05, 0xa7, 0xde, - 0x1f, 0x05, 0xd1, 0xaf, 0xf4, 0x41, 0xf7, 0x91, 0x6a, 0xce, 0xb5, 0xed, - 0x30, 0xfb, 0x9d, 0x7a, - 0x61, 0x5b, 0x6b, 0xdc, 0xeb, 0x0d, 0x63, 0x1e, 0x18, 0x0a, 0xe6, 0x59, - 0x57, 0x06, 0x7b, 0x94, - 0x1a, 0xb4, 0x1d, 0x3d, 0xa3, 0x30, 0xcf, 0x09, 0xb5, 0x07, 0x93, 0x61, - 0x0f, 0xbc, 0x7a, 0xb0, - 0xc8, 0x17, 0x8d, 0x9c, 0xbb, 0xf8, 0xb6, 0xcf, 0x4d, 0x45, 0x43, 0x69, - 0xd0, 0x82, 0xfb, 0xbc, - 0x97, 0x46, 0x87, 0xdd, 0x7b, 0x77, 0xf8, 0x30, 0x81, 0x10, 0x0c, 0x29, - 0xe7, 0xb1, 0x79, 0xdc, - 0x17, 0xee, 0xf2, 0xc2, 0x13, 0x28, 0x49, 0xec, 0x0e, 0xe5, 0x3b, 0xb0, - 0xe9, 0xe2, 0x47, 0xe8, - 0xa9, 0x4c, 0xe6, 0x40, 0x50, 0xf5, 0xd5, 0xd1, 0x55, 0x4f, 0xa5, 0x30, - 0x87, 0x84, 0x80, 0x28, - 0x91, 0x98, 0x0f, 0x80, 0xa0, 0x29, 0x69, 0x61, 0xaa, 0x9e, 0x89, 0x60, - 0xcd, 0xcb, 0xc3, 0x50, - 0x9f, 0xad, 0xa4, 0xb0, 0x9c, 0x1e, 0x46, 0x4d, 0xe5, 0x3b, 0x82, 0x74, - 0x3e, 0xa8, 0xa3, 0x4e, - 0x1b, 0x91, 0x21, 0x78, 0x66, 0x94, 0xa8, 0x4e, 0x58, 0x3a, 0xf2, 0x22, - 0xbd, 0x16, 0xf0, 0x33, - 0xbb, 0x13, 0xd8, 0x10, 0x14, 0xac, 0xa4, 0xa5, 0x84, 0x63, 0xb8, 0x0c, - 0x51, 0x21, 0x20, 0x0a, - 0xd1, 0xcc, 0xd4, 0x6e, 0x94, 0xe7, 0xd0, 0x0f, 0x0c, 0x05, 0x73, 0xcd, - 0xca, 0x03, 0xdc, 0x4a, - 0x7a, 0xca, 0x4a, 0xa4, 0x8d, 0x99, 0xcb, 0x50, 0x40, 0x30, 0x14, 0x7b, - 0xea, 0x10, 0x8b, 0xa7, - 0xb4, 0x03, 0x4f, 0x65, 0xed, 0x3f, 0xec, 0xce, 0x26, 0xfb, 0xd2, 0x5b, - 0x10, 0xe8, 0xca, 0x97, - 0x5f, 0x51, 0x0a, 0x41, 0xc0, 0x8f, 0x4e, 0xff, 0xcc, 0x55, 0x4f, 0x40, - 0x37, 0x33, 0x82, 0x60, - 0x71, 0x4e, 0x2d, 0x06, 0xe6, 0xdf, 0xdc, 0xe4, 0xd0, 0x5c, 0x39, 0xe3, - 0x26, 0x34, 0x0c, 0x73, - 0x0e, 0x35, 0xab, 0x30, 0x3c, 0x37, 0x2f, 0x2c, 0x4f, 0xa5, 0x0b, 0x14, - 0xf3, 0x63, 0x60, 0x1e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x78, 0x80, 0x32, 0x2e, 0xc4, 0x12, 0x05, 0xde, 0x59, 0x4a, 0xd6, 0xfd, - 0x4d, 0x87, 0x5c, 0x62, - 0x24, 0xbe, 0x7c, 0xa0, 0x88, 0xb2, 0xe2, 0xe8, 0x61, 0x58, 0x3a, 0x78, - 0x6f, 0x89, 0x83, 0x44, - 0x40, 0x54, 0xdb, 0xee, 0x34, 0xce, 0xb9, 0x6e, 0xa6, 0x9b, 0xfa, 0xad, - 0x07, 0xc8, 0x1f, 0x1a, - 0x86, 0x76, 0xfd, 0x42, 0xb3, 0x01, 0x20, 0x8d, 0xa4, 0x7b, 0xb2, 0xd0, - 0x24, 0x29, 0x84, 0xb8, - 0x52, 0x0b, 0xe5, 0xbe, 0x70, 0x97, 0xc8, 0x1a, 0x77, 0xb7, 0xe7, 0x91, - 0xd1, 0x6d, 0xbf, 0x38, - 0xf3, 0xac, 0x20, 0x93, 0xc7, 0x0b, 0xa3, 0xb6, 0x46, 0xd3, 0xcc, 0xfc, - 0x8f, 0xf0, 0xe5, 0x82, - 0x11, 0x30, 0x7a, 0x9f, 0xc8, 0x76, 0xd8, 0xbd, 0x25, 0x6b, 0xbe, 0xf9, - 0xc3, 0x98, 0xfd, 0x64, - 0x28, 0xc1, 0xaf, 0x1a, 0xfd, 0x0e, 0x03, 0x4a, 0x37, 0x87, 0xf3, 0xea, - 0x3b, 0x7d, 0x34, 0x9f, - 0x5c, 0x3e, 0x4e, 0x8e, 0x4c, 0xa0, 0xe7, 0x36, 0x38, 0x12, 0xec, 0x85, - 0x22, 0x0e, 0xdf, 0x26, - 0x98, 0x56, 0x10, 0xa8, 0x82, 0xe4, 0xb0, 0x5b, 0x23, 0x88, 0x66, 0x7e, - 0xa6, 0x78, 0x93, 0x41, - 0xc1, 0xd9, 0x92, 0xb4, 0x99, 0x35, 0x6f, 0xf5, 0xc4, 0x53, 0xac, 0x77, - 0xbb, 0x31, 0xab, 0xad, - 0xd6, 0x37, 0x60, 0x76, 0x8a, 0x1d, 0x26, 0x19, 0xca, 0xb6, 0x97, 0xc7, - 0x52, 0xd3, 0xec, 0x45, - 0x03, 0x6f, 0x44, 0xcf, 0x8c, 0x2f, 0xa9, 0xc9, 0xf4, 0x47, 0xa3, 0xc5, - 0x15, 0x3d, 0x5d, 0x46, - 0x08, 0xeb, 0x23, 0x6d, 0xe7, 0x69, 0xbe, 0x7d, 0x64, 0x2b, 0x8e, 0x5d, - 0xd9, 0x19, 0xda, 0x92, - 0xae, 0xb7, 0x52, 0x58, 0x4e, 0x0f, 0x23, 0xc7, 0x93, 0xfc, 0x41, 0x3a, - 0x1f, 0x54, 0xb0, 0x27, - 0x64, 0xea, 0xa7, 0x4e, 0xbc, 0x7c, 0x5b, 0x86, 0xc7, 0xc3, 0xc0, 0xd5, - 0x68, 0x41, 0x9c, 0x5e, - 0x2d, 0x70, 0x63, 0x88, 0xaa, 0x7f, 0x3b, 0xd2, 0xe8, 0x4e, 0xd5, 0x66, - 0x04, 0x3a, 0xd3, 0x55, - 0x32, 0x75, 0xb2, 0x27, 0x5e, 0x3e, 0xcc, 0x43, 0x82, 0x80, 0x60, 0x8b, - 0x34, 0xc1, 0x4e, 0x2f, - 0x06, 0xde, 0x88, 0x5d, 0xdb, 0x5e, 0x91, 0x51, 0x2b, 0x8e, 0x85, 0x49, - 0x2a, 0x7a, 0xba, 0x8c, - 0x34, 0xab, 0x3a, 0x7a, 0x85, 0x60, 0x5d, 0x12, 0xa9, 0x0e, 0xe5, 0xc2, - 0x1e, 0xbb, 0xf4, 0xa3, - 0x5d, 0x1b, 0x72, 0xcb, 0x89, 0x04, 0x80, 0x71, 0xd5, 0x2f, 0x8d, 0xc6, - 0x90, 0xa4, 0x55, 0xa5, - 0x84, 0x3c, 0x85, 0xc8, 0xfa, 0x8a, 0xee, 0x03, 0xbd, 0x01, 0x70, 0x56, - 0x83, 0xbe, 0x53, 0x7d, - 0x31, 0x1a, 0xf6, 0xe8, 0xd2, 0x11, 0x65, 0x8a, 0x76, 0xc7, 0xc3, 0x4e, - 0x21, 0xfc, 0x13, 0x69, - 0xf9, 0x0d, 0x7b, 0x74, 0x69, 0xe9, 0xd3, 0x45, 0x3b, 0x82, 0x80, 0x27, - 0xf1, 0x7e, 0xe8, 0xd5, - 0x93, 0xd2, 0x77, 0x0a, 0xe9, 0xa2, 0xa7, 0xef, 0xb3, 0xe4, 0x4b, 0xe6, - 0x6a, 0x5c, 0x14, 0x95, - 0x87, 0x53, 0xc1, 0x07, 0x76, 0xa5, 0x47, 0xca, 0x49, 0x46, 0xd3, 0x93, - 0x96, 0x83, 0x0e, 0x3b, - 0x9b, 0x39, 0x54, 0x67, 0x0e, 0xcb, 0x19, 0x92, 0xd7, 0xcf, 0xc5, 0xbb, - 0xb3, 0x45, 0xce, 0x07, - 0x0d, 0x5a, 0xef, 0xff, 0xb0, 0x18, 0x86, 0xe5, 0xbb, 0xe2, 0xa8, 0xd1, - 0xe6, 0x5e, 0x3d, 0x58, - 0xcf, 0xec, 0x39, 0x84, 0xa5, 0x02, 0x40, 0xd9, 0x8b, 0xf6, 0xa7, 0x63, - 0x48, 0x52, 0xcb, 0xb3, - 0x6a, 0xdf, 0x0c, 0x7e, 0x80, 0x4b, 0x74, 0xaa, 0x88, 0x66, 0xcb, 0xc1, - 0x9b, 0x22, 0xfc, 0x40, - 0xbd, 0xcd, 0x50, 0x4d, 0xcf, 0xf2, 0x35, 0xf4, 0xaf, 0xed, 0x3d, 0x45, - 0x7b, 0x5b, 0x9a, 0x86, - 0x33, 0x50, 0x8e, 0x62, 0x9b, 0x9a, 0xab, 0x04, 0x6f, 0xbd, 0x01, 0xc8, - 0x86, 0x6b, 0xc4, 0xac, - 0xdb, 0x6d, 0x8f, 0x89, 0x3a, 0x05, 0xa0, 0xfc, 0x71, 0x54, 0x3f, 0x16, - 0xb4, 0x8d, 0xd1, 0x1d, - 0xeb, 0x52, 0x45, 0x24, 0x2d, 0xb0, 0xa2, 0x31, 0xea, 0xae, 0x9d, 0x1b, - 0x27, 0xdb, 0x48, 0xf7, - 0xce, 0xc9, 0x05, 0xc1, 0x60, 0xa6, 0x27, 0x9e, 0x66, 0xcb, 0xc6, 0x20, - 0xfa, 0xf8, 0x41, 0x30, - 0x55, 0xf0, 0x51, 0xa6, 0x6e, 0x6d, 0x3e, 0x0c, 0xb1, 0x04, 0x03, 0x9b, - 0x49, 0xbd, 0x8f, 0x37, - 0x16, 0xcb, 0xce, 0x87, 0xd6, 0x8c, 0x2e, 0xab, 0xe3, 0xd8, 0x5a, 0xf3, - 0x5b, 0x48, 0xcd, 0x6b, - 0xc5, 0x4d, 0x62, 0x63, 0x0b, 0xe0, 0x30, 0x2a, 0xf6, 0xa7, 0xeb, 0xb8, - 0x36, 0xdc, 0xc6, 0xe4, - 0x48, 0xbf, 0xf8, 0x83, 0xd3, 0xa7, 0x07, 0x13, 0xc2, 0xb0, 0x74, 0xf0, - 0xde, 0xd1, 0xc5, 0x88, - 0x2b, 0xae, 0xeb, 0xd5, 0x71, 0x21, 0xaa, 0x83, 0xc3, 0xc0, 0x50, 0x2f, - 0x2e, 0x40, 0x69, 0xd9, - 0x10, 0x15, 0x46, 0xda, 0x0d, 0xd2, 0xbf, 0xfa, 0xc8, 0x56, 0xdf, 0xba, - 0x71, 0x32, 0x77, 0xe7, - 0xba, 0x36, 0xe4, 0x55, 0xd1, 0x08, 0xc3, 0xe2, 0x69, 0x5e, 0xd9, 0x4f, - 0xe3, 0x8b, 0xaa, 0x89, - 0x79, 0xa5, 0x0e, 0x6b, 0x01, 0xb6, 0x62, 0x99, 0xb4, 0x77, 0xb7, 0xbe, - 0xff, 0x2d, 0xd6, 0xe1, - 0xb2, 0xdd, 0xc7, 0x38, 0x36, 0x61, 0x7d, 0x9f, 0x0d, 0x75, 0x57, 0x12, - 0x3a, 0x92, 0x70, 0x1b, - 0x01, 0x25, 0x3c, 0x45, 0xc5, 0xa4, 0x67, 0x47, 0xed, 0x3d, 0x61, 0x43, - 0xb2, 0xaa, 0x8a, 0x83, - 0x04, 0x94, 0xf0, 0xd7, 0x92, 0xd5, 0x5f, 0xdf, 0x32, 0xf4, 0x47, 0xcf, - 0x8d, 0xed, 0x6d, 0x49, - 0xb8, 0x7c, 0x9c, 0xdf, 0x98, 0x83, 0x0d, 0x6c, 0x70, 0x24, 0x1b, 0xc9, - 0x44, 0x1c, 0x7d, 0x4c, - 0xc9, 0x32, 0xb1, 0xd9, 0x7e, 0x5c, 0xd1, 0x88, 0xa0, 0x78, 0x22, 0x2a, - 0x62, 0x28, 0x71, 0x3f, - 0xec, 0xa9, 0xf1, 0x3c, 0x33, 0x4a, 0x54, 0x27, 0x2c, 0x1d, 0x79, 0x11, - 0xbf, 0x0b, 0x78, 0xf8, - 0x85, 0x19, 0xb9, 0x8d, 0x3f, 0x2e, 0x89, 0x44, 0x50, 0x3c, 0x11, 0x15, - 0x31, 0x14, 0xd9, 0xfe, - 0xf4, 0x57, 0x94, 0x8b, 0xd9, 0xf1, 0x55, 0xa0, 0x80, 0x60, 0x28, 0xf6, - 0x17, 0x20, 0xd5, 0x8d, - 0x44, 0xc0, 0x2b, 0x39, 0xa6, 0x1b, 0xe6, 0xb1, 0x94, 0x6f, 0xbd, 0x62, - 0x8a, 0x25, 0x72, 0x53, - 0x5a, 0xe0, 0xc6, 0xd3, 0x97, 0xfe, 0x76, 0x67, 0x13, 0x9c, 0x69, 0xcc, - 0x08, 0x74, 0x65, 0xaa, - 0x2f, 0x3a, 0x1b, 0x02, 0xe3, 0xf4, 0xf5, 0x5c, 0xf1, 0x34, 0x17, 0xe0, - 0xa3, 0xad, 0x04, 0x90, - 0x05, 0xb1, 0xcc, 0x92, 0x57, 0x71, 0x38, 0x98, 0xdf, 0xc9, 0x26, 0x8c, - 0x3f, 0x47, 0xe7, 0xca, - 0xd9, 0x27, 0xf7, 0x03, 0x73, 0x8e, 0x6e, 0x72, 0x68, 0x2e, 0xfd, 0x90, - 0x13, 0x1a, 0x06, 0xd8, - 0x68, 0x95, 0x74, 0xf4, 0xc9, 0xc0, 0xba, 0x24, 0x91, 0x1c, 0x09, 0x47, - 0x3c, 0xb5, 0x2b, 0x85, - 0xad, 0xd8, 0x16, 0x97, 0xc2, 0x20, 0x8a, 0x0e, 0x67, 0xbb, 0xe2, 0xff, - 0x0a, 0x69, 0xed, 0x61, - 0x35, 0x8e, 0x06, 0x3f, 0x40, 0xc4, 0x3a, 0x55, 0x44, 0x33, 0x84, 0x81, - 0xac, 0x11, 0x7e, 0x20, - 0x56, 0x9f, 0x15, 0x69, 0xe2, 0x42, 0x97, 0xc5, 0x45, 0x43, 0xa0, 0x5e, - 0x5c, 0x80, 0xd2, 0x71, - 0xc4, 0x68, 0x5e, 0x26, 0xce, 0x44, 0x57, 0x6d, 0x1b, 0x9a, 0x8a, 0xfb, - 0x84, 0x76, 0x4c, 0x67, - 0xaf, 0x92, 0x6e, 0x1d, 0x8b, 0xab, 0x44, 0x80, 0x7e, 0xc1, 0x20, 0x79, - 0xad, 0xfe, 0x3a, 0xa4, - 0x15, 0xa4, 0x8a, 0x48, 0x5a, 0xa3, 0x87, 0x62, 0x17, 0x9f, 0xf9, 0x36, - 0x4e, 0x75, 0x90, 0x2d, - 0x7c, 0x14, 0xc2, 0xf9, 0x56, 0xc7, 0x5a, 0x01, 0x6b, 0xbe, 0x91, 0x32, - 0xc0, 0x6a, 0x31, 0x2b, - 0x6e, 0x4b, 0xfc, 0xa9, 0x12, 0x9e, 0x2b, 0x75, 0xba, 0x92, 0x8c, 0x0e, - 0x16, 0xcf, 0x91, 0x09, - 0xd8, 0x02, 0xcb, 0x46, 0xb6, 0x2a, 0x09, 0x35, 0x85, 0x13, 0x9c, 0xd3, - 0xa1, 0xb0, 0x8c, 0x5b, - 0xf7, 0x38, 0xd0, 0x44, 0x55, 0xde, 0xfc, 0x69, 0x74, 0x27, 0x8b, 0x33, - 0x02, 0x1d, 0x88, 0xcb, - 0x66, 0xa0, 0xdf, 0xc4, 0xf5, 0xf7, 0x95, 0x08, 0xde, 0xb9, 0x02, 0x53, - 0xcf, 0xd6, 0x4b, 0x9b, - 0x89, 0x66, 0x6a, 0x37, 0x4a, 0x92, 0x68, 0xe6, 0x06, 0xe3, 0xd8, 0x87, - 0x65, 0xe0, 0x6e, 0x25, - 0x45, 0xe5, 0x17, 0x7c, 0x63, 0xbf, 0x81, 0xf6, 0x79, 0x52, 0xdc, 0x21, - 0x38, 0x8f, 0xf8, 0xd0, - 0xef, 0xc6, 0xb5, 0xf3, 0xbf, 0x65, 0xfd, 0xee, 0xd8, 0x5a, 0xda, 0xd4, - 0xaa, 0x36, 0x25, 0xbe, - 0x37, 0xc4, 0x7e, 0xb5, 0x09, 0x4f, 0xf4, 0xdb, 0x5d, 0x49, 0x46, 0x07, - 0x0b, 0x86, 0xa9, 0xe5, - 0x8d, 0xf2, 0x9a, 0xe0, 0xd8, 0x47, 0x37, 0x39, 0x34, 0x17, 0x9f, 0x48, - 0xe8, 0x0d, 0x03, 0x6c, - 0xb6, 0x49, 0x37, 0xef, 0xa4, 0xb4, 0x22, 0x40, 0x3f, 0x81, 0x10, 0xdd, - 0xb7, 0x7f, 0x1d, 0x52, - 0xff, 0xd3, 0xf3, 0x29, 0xb2, 0xb7, 0x42, 0x14, 0x10, 0x0c, 0x05, 0x6e, - 0xdb, 0x04, 0x52, 0x59, - 0x88, 0x43, 0x56, 0x72, 0x8f, 0x36, 0x0f, 0xa1, 0xeb, 0xde, 0xb9, 0xc4, - 0xd7, 0x4a, 0xe4, 0xa6, - 0xea, 0x77, 0x79, 0x61, 0xe8, 0x14, 0xc5, 0x76, 0x07, 0x93, 0xfc, 0x58, - 0x95, 0x71, 0xc2, 0x74, - 0x62, 0x34, 0x2f, 0x13, 0x67, 0x22, 0xca, 0xd7, 0xec, 0x4d, 0x45, 0x9c, - 0x42, 0x3b, 0x26, 0xd2, - 0xe2, 0x9c, 0x5a, 0x0c, 0x0f, 0x7d, 0x7b, 0x0b, 0x63, 0xb8, 0x72, 0x05, - 0x4c, 0x68, 0x18, 0xe6, - 0x3e, 0x0a, 0x61, 0x9d, 0x2b, 0x82, 0x2d, 0xe1, 0xd4, 0x5f, 0xa9, 0x19, - 0x60, 0x35, 0xf9, 0xf4, - 0x54, 0xd5, 0x6d, 0xe3, 0xab, 0xc9, 0x59, 0x4b, 0x5c, 0x39, 0x62, 0xd8, - 0xfb, 0x17, 0x05, 0xb4, - 0xbe, 0xa2, 0x14, 0x82, 0x43, 0xdd, 0x9c, 0x3d, 0x5b, 0xaa, 0x9e, 0x80, - 0x6e, 0x66, 0xc7, 0xc0, - 0xb7, 0x6c, 0x0b, 0xaa, 0x61, 0x10, 0x45, 0x07, 0xd2, 0xbc, 0x71, 0x9e, - 0x05, 0xd5, 0x97, 0xd1, - 0x36, 0xe1, 0x42, 0xf0, 0xcc, 0xeb, 0x93, 0x9c, 0xb0, 0x74, 0x27, 0x44, - 0xb9, 0x2c, 0x23, 0x66, - 0xe6, 0x08, 0xaa, 0xdb, 0x9d, 0xa8, 0x24, 0xd4, 0x51, 0x4c, 0x35, 0xca, - 0xc1, 0x85, 0x75, 0xaf, - 0x99, 0x73, 0x2c, 0xed, 0x47, 0x40, 0xd7, 0x1c, 0xce, 0xb5, 0x07, 0x3d, - 0x14, 0xd2, 0x19, 0xc2, - 0xa0, 0x82, 0xf9, 0x68, 0x72, 0x38, 0x0c, 0xeb, 0xdc, 0x59, 0x4a, 0x2e, - 0xec, 0x37, 0xd0, 0x39, - 0x23, 0x45, 0xc8, 0xb8, 0x96, 0x48, 0x14, 0xfe, 0xa7, 0xeb, 0xde, 0x72, - 0xf7, 0x59, 0xb3, 0x4b, - 0x8a, 0x09, 0x2e, 0xf8, 0xc6, 0xbd, 0xc1, 0x2f, 0xf2, 0xa4, 0x7b, 0x42, - 0x70, 0xdd, 0x33, 0x63, - 0x73, 0x04, 0x55, 0x8c, 0xaf, 0x54, 0x12, 0x6a, 0xc9, 0x26, 0xfb, 0x65, - 0x81, 0xa3, 0xdb, 0xb6, - }, - { /* 7 */ - 0x5e, 0x59, 0x1d, 0x8d, 0x98, 0xfb, 0x33, 0x54, 0x7c, 0xd4, 0xa4, 0x1b, - 0xb3, 0x82, 0x0e, 0xb2, - 0x90, 0x76, 0xbe, 0x36, 0xc1, 0x08, 0x56, 0x5a, 0xf4, 0x40, 0x38, 0xf8, - 0x4c, 0x99, 0x0f, 0xec, - 0xb8, 0xae, 0x1f, 0x39, 0x5b, 0xcb, 0x04, 0x4b, 0x01, 0x97, 0x34, 0x4e, - 0xd8, 0x52, 0x2c, 0x9f, - 0x18, 0x48, 0xde, 0x05, 0x76, 0x41, 0x8f, 0x0f, 0x53, 0x4d, 0x04, 0xd3, - 0xcd, 0xf8, 0xa0, 0x90, - 0x76, 0x81, 0xbc, 0x82, 0x02, 0x38, 0x61, 0x45, 0x89, 0x03, 0xa8, 0xad, - 0x27, 0x49, 0x2d, 0xc1, - 0xc4, 0x19, 0x1a, 0xc8, 0x9e, 0xb3, 0x90, 0x9b, 0x24, 0xd1, 0x9f, 0x2f, - 0xda, 0x59, 0x79, 0x32, - 0x0d, 0x23, 0xf7, 0xdb, 0x11, 0x1f, 0x5f, 0xae, 0x67, 0xf8, 0x5d, 0x96, - 0x09, 0xc8, 0x5c, 0x46, - 0x84, 0x1a, 0x0f, 0xd0, 0x8c, 0x88, 0x7f, 0xb3, 0x6f, 0xca, 0x3e, 0xa3, - 0x06, 0x1d, 0xff, 0x34, - 0xc2, 0x0b, 0xcc, 0x58, 0x62, 0x32, 0xc3, 0xe8, 0x40, 0x53, 0x9e, 0x6b, - 0x78, 0x67, 0x51, 0x16, - 0x34, 0x8c, 0x5a, 0xea, 0x44, 0x7c, 0xbf, 0xfd, 0x5f, 0x66, 0xb7, 0x1d, - 0x24, 0xa6, 0xb3, 0xdb, - 0x31, 0x97, 0xe7, 0x32, 0xc6, 0x5c, 0x24, 0x56, 0x09, 0xa5, 0x57, 0x7b, - 0xd7, 0x87, 0x8f, 0xed, - 0x24, 0xfc, 0xce, 0xec, 0xa1, 0x02, 0xf4, 0xf7, 0x3d, 0x10, 0x0e, 0x3e, - 0x13, 0xb7, 0x73, 0x3b, - 0xc3, 0x0c, 0x54, 0x60, 0x48, 0xec, 0x3a, 0xa0, 0xef, 0x6c, 0xc1, 0x75, - 0xf6, 0xd3, 0x5d, 0x18, - 0xc7, 0x10, 0x71, 0x80, 0xe0, 0x12, 0x58, 0x43, 0x16, 0x90, 0x7e, 0x0d, - 0x8b, 0x46, 0x6d, 0x20, - 0x4a, 0x35, 0xac, 0x6b, 0xd5, 0x7b, 0x1a, 0xbd, 0xe7, 0x5e, 0xa2, 0x40, - 0xf9, 0x06, 0xfe, 0x6a, - 0x07, 0x15, 0x4e, 0xa8, 0xd6, 0x5f, 0xaa, 0x3b, 0xcb, 0xbd, 0x5e, 0x5a, - 0x2c, 0x8a, 0x24, 0x2a, - 0x0c, 0x24, 0x6f, 0xe3, 0x3b, 0xc1, 0xa6, 0xe6, 0xc8, 0xc7, 0x02, 0x88, - 0x87, 0x7c, 0x50, 0x48, - 0x48, 0x3b, 0x5f, 0x1b, 0x81, 0x04, 0x2b, 0x2d, 0x7a, 0x20, 0x1c, 0x7c, - 0x26, 0xad, 0xe6, 0x76, - 0x80, 0x06, 0x2a, 0x30, 0x24, 0x76, 0x1d, 0x50, 0x96, 0x36, 0x81, 0xdb, - 0x7b, 0x88, 0xcf, 0x0c, - 0xd7, 0x60, 0xe5, 0x86, 0x05, 0x6c, 0x13, 0x49, 0x74, 0xe6, 0xc7, 0x2e, - 0xbc, 0x57, 0xad, 0xc0, - 0x69, 0xdc, 0x2c, 0x2f, 0xa2, 0x26, 0x44, 0x71, 0x11, 0xf3, 0xf2, 0x24, - 0xc6, 0x3b, 0xa9, 0x7b, - 0xee, 0xcf, 0x48, 0xb7, 0x50, 0x0f, 0xf3, 0x1a, 0x4c, 0x78, 0x2d, 0xa5, - 0x91, 0x39, 0x42, 0x5d, - 0xd8, 0x4d, 0xe1, 0x2d, 0x40, 0x0c, 0x7d, 0x77, 0x8e, 0x60, 0x24, 0x84, - 0x6a, 0x34, 0xe9, 0x9a, - 0x1b, 0x41, 0xb5, 0x4d, 0x08, 0xe0, 0x47, 0xd7, 0x61, 0x0c, 0xe5, 0xf1, - 0x9c, 0xe7, 0xb4, 0x82, - 0x77, 0x86, 0x24, 0xba, 0x28, 0xe6, 0x98, 0x0d, 0x26, 0x3c, 0xf7, 0xb3, - 0xa9, 0xfd, 0x21, 0xcf, - 0x91, 0x71, 0x26, 0x0e, 0xeb, 0xd6, 0xaf, 0x12, 0x5b, 0x7f, 0x67, 0xe6, - 0xc2, 0x2d, 0x03, 0xe2, - 0x73, 0x9a, 0x01, 0x5a, 0x80, 0x18, 0xfa, 0xee, 0xdf, 0xc0, 0x48, 0xcb, - 0xd4, 0x68, 0x11, 0xf7, - 0xe8, 0xdd, 0x9e, 0x27, 0xac, 0x8e, 0xa0, 0x69, 0x28, 0xfa, 0x2c, 0xe1, - 0x33, 0x07, 0x6a, 0x79, - 0xa1, 0xe1, 0x59, 0x04, 0x07, 0x54, 0x72, 0x0c, 0xfd, 0xe5, 0x6f, 0x83, - 0x9b, 0x1e, 0x80, 0x01, - 0x53, 0x7a, 0xea, 0x56, 0x89, 0xe4, 0x6c, 0xfa, 0x1b, 0x2c, 0xf9, 0x8d, - 0xba, 0x4a, 0x52, 0xf4, - 0xc9, 0x3a, 0xed, 0x13, 0x8f, 0xac, 0xcf, 0x35, 0x43, 0x29, 0xc2, 0xb9, - 0xd3, 0x91, 0x25, 0x74, - 0x8d, 0x25, 0xdd, 0xeb, 0x35, 0x69, 0x42, 0xfe, 0xf1, 0xce, 0xdc, 0x4d, - 0x72, 0x40, 0x93, 0x4a, - 0xe7, 0xf0, 0x9a, 0x8c, 0xe9, 0xee, 0xce, 0x57, 0xd2, 0x7c, 0xcf, 0x4b, - 0xe5, 0x64, 0x2e, 0x23, - 0x7f, 0xbe, 0x6e, 0xb9, 0xbb, 0xd9, 0x5c, 0x08, 0x17, 0x07, 0x4a, 0x43, - 0x53, 0x14, 0x41, 0xbf, - 0x86, 0x14, 0xfc, 0xa0, 0xd8, 0xf7, 0x4e, 0x23, 0xf2, 0xb4, 0x80, 0x9f, - 0xd9, 0xb6, 0xe7, 0x28, - 0x70, 0x93, 0x6a, 0x12, 0xfe, 0xb9, 0x32, 0x36, 0xed, 0x81, 0xa9, 0xe9, - 0x85, 0x77, 0x05, 0xe5, - 0x4e, 0x29, 0x89, 0x8b, 0x7d, 0x85, 0x78, 0x5e, 0x1e, 0xa2, 0x1d, 0x38, - 0x84, 0x93, 0xce, 0x52, - 0x1f, 0x5d, 0x90, 0xad, 0xa0, 0x1e, 0x25, 0x34, 0x98, 0xf0, 0x5a, 0x89, - 0xe1, 0x72, 0x84, 0xba, - 0x63, 0xea, 0x95, 0x5c, 0x65, 0x66, 0xb1, 0xe4, 0xbd, 0xb6, 0xf1, 0xe8, - 0xe3, 0x79, 0xd1, 0x17, - 0xe6, 0xf7, 0x02, 0xb4, 0xc3, 0x30, 0x37, 0x1f, 0x7d, 0x43, 0x90, 0x55, - 0x6b, 0xd0, 0x22, 0x2d, - 0xa7, 0xf3, 0x8f, 0x94, 0xfb, 0xd5, 0x21, 0x7f, 0x99, 0x67, 0x6e, 0xc7, - 0x39, 0x20, 0xa8, 0x25, - 0x35, 0x8b, 0xc2, 0xd2, 0x6e, 0xa2, 0x46, 0xb5, 0xf0, 0x59, 0xe8, 0x03, - 0xaa, 0x12, 0xbf, 0xd5, - 0x20, 0xe0, 0xeb, 0x0c, 0x09, 0xfc, 0x96, 0x14, 0xc4, 0xec, 0xb1, 0x46, - 0x6e, 0x22, 0x43, 0x03, - 0x0f, 0x2d, 0x04, 0xab, 0x45, 0x60, 0x6e, 0x3e, 0xfa, 0x86, 0xe3, 0xaa, - 0xd6, 0x63, 0x44, 0x5a, - 0x16, 0x62, 0x42, 0x96, 0x19, 0xff, 0x18, 0x79, 0x06, 0xf4, 0xb8, 0x67, - 0x95, 0x2f, 0xe8, 0xc4, - 0xf3, 0x9c, 0x2b, 0x6a, 0xa4, 0x6e, 0xe7, 0xbe, 0x49, 0xf6, 0xc9, 0x10, - 0xaf, 0xe0, 0xde, 0xfb, - 0xaf, 0xcb, 0xc5, 0x97, 0x68, 0xea, 0xe5, 0x7a, 0xa8, 0x5c, 0xd3, 0x37, - 0xc3, 0xc9, 0xc8, 0x55, - 0x22, 0xee, 0x18, 0x7c, 0x5d, 0x83, 0xa7, 0x84, 0x59, 0x92, 0x0f, 0x7a, - 0xb1, 0x89, 0x5b, 0x1f, - 0xb9, 0xa9, 0x87, 0x01, 0x71, 0x15, 0xfd, 0x03, 0xae, 0xa8, 0x6b, 0x50, - 0x56, 0xe6, 0x20, 0x91, - 0x1e, 0x5a, 0x08, 0x95, 0x8a, 0xc0, 0xdc, 0x7c, 0x37, 0xcf, 0x05, 0x97, - 0x6f, 0xc6, 0x88, 0xb4, - 0x25, 0xfb, 0x56, 0xd4, 0x8b, 0xdc, 0x0d, 0xbf, 0x92, 0x2f, 0x51, 0x20, - 0x9d, 0x03, 0x7f, 0x35, - 0xba, 0xa0, 0xec, 0x49, 0x0f, 0xb4, 0x35, 0xdb, 0x9c, 0xe9, 0x8a, 0x72, - 0x07, 0xf9, 0x34, 0x83, - 0xbd, 0xb5, 0xa2, 0xe1, 0xd9, 0xeb, 0x9f, 0xe0, 0x57, 0x54, 0xd4, 0x28, - 0x2b, 0x73, 0x10, 0xa9, - 0x8e, 0x2c, 0xb6, 0xa3, 0x4b, 0xc8, 0x8a, 0x26, 0xc3, 0x8f, 0x3d, 0x6f, - 0x23, 0x5f, 0x87, 0x58, - 0x5c, 0x57, 0xee, 0xfd, 0xcc, 0x84, 0x02, 0xc4, 0xe1, 0xaa, 0x1a, 0x27, - 0x6c, 0x29, 0x16, 0xae, - 0x41, 0x04, 0x8d, 0x20, 0x38, 0xe5, 0x16, 0x60, 0xe4, 0x24, 0xfe, 0x92, - 0x52, 0xf0, 0x8a, 0x08, - 0x6f, 0xce, 0xfa, 0xbf, 0x5e, 0xa7, 0x17, 0x02, 0x75, 0x71, 0xf3, 0x60, - 0x64, 0x05, 0x81, 0x5f, - 0x42, 0x0d, 0xe6, 0x68, 0x46, 0x44, 0xde, 0xb8, 0xd6, 0x65, 0x1f, 0xb0, - 0x03, 0xef, 0x9e, 0x1a, - 0x46, 0x11, 0xc3, 0x88, 0xee, 0xba, 0xbc, 0x5b, 0x2f, 0x99, 0xa0, 0xc8, - 0x7e, 0x7a, 0xae, 0x22, - 0x2b, 0xd1, 0xca, 0x47, 0xe4, 0x62, 0x9a, 0xc9, 0xc7, 0x96, 0xed, 0x94, - 0xc5, 0xd4, 0x37, 0x61, - 0xdc, 0x51, 0xc4, 0xcd, 0xe8, 0xf2, 0x1f, 0x94, 0x77, 0x9c, 0x9b, 0xfc, - 0x17, 0xa1, 0xd9, 0xa2, - 0xdf, 0x58, 0xaf, 0x85, 0x96, 0x53, 0xd7, 0x4c, 0x45, 0xdd, 0x7a, 0xde, - 0x46, 0xbe, 0xcd, 0xb0, - 0x43, 0x0a, 0x7e, 0x50, 0x6c, 0x9a, 0x27, 0xf0, 0x79, 0x5a, 0x40, 0xae, - 0x8d, 0x5b, 0x92, 0x14, - 0xe3, 0xec, 0xbf, 0x6c, 0x41, 0x10, 0xac, 0xb4, 0x2b, 0x80, 0x70, 0x33, - 0x98, 0xf1, 0x1e, 0x1b, - 0x29, 0xdf, 0x39, 0x37, 0xb0, 0x1d, 0xab, 0x59, 0x5a, 0xe8, 0x53, 0xa8, - 0x1a, 0x7f, 0x2f, 0x7d, - 0xb4, 0x8a, 0x70, 0xda, 0x60, 0x0a, 0xa2, 0xad, 0xc9, 0x50, 0x36, 0xc6, - 0x5f, 0x2e, 0x7c, 0xd7, - 0xcb, 0x34, 0x1e, 0x63, 0xdb, 0xd3, 0xfe, 0xa5, 0xde, 0x57, 0x7c, 0x85, - 0x0c, 0x3a, 0x3d, 0x68, - 0x32, 0x9e, 0x8c, 0x7a, 0xb8, 0xfd, 0xec, 0x8e, 0x3b, 0xe4, 0xb6, 0x59, - 0x86, 0x98, 0x9b, 0xff, - 0xda, 0x43, 0x12, 0x5d, 0x14, 0x73, 0x4c, 0xe7, 0x13, 0x1e, 0x9a, 0xb8, - 0xb5, 0x9f, 0xf1, 0x86, - 0xea, 0xd3, 0x6d, 0x57, 0xf8, 0xf1, 0x91, 0xf9, 0xb5, 0x84, 0x92, 0xdd, - 0xec, 0xac, 0x72, 0x65, - 0xbe, 0xbc, 0xc9, 0xa9, 0xa7, 0x4a, 0x57, 0x38, 0x65, 0x15, 0x35, 0x0a, - 0x7a, 0x6c, 0x04, 0xbb, - 0x03, 0x09, 0x6b, 0x48, 0x7e, 0xa1, 0xc8, 0xd8, 0x32, 0x41, 0xe1, 0x22, - 0x51, 0x1f, 0x14, 0x12, - 0xa5, 0xfd, 0x7c, 0xe4, 0xaf, 0xaa, 0x10, 0xef, 0x04, 0x19, 0xd0, 0xfb, - 0xe6, 0x8b, 0xb0, 0x39, - 0xa4, 0xfa, 0xe4, 0xdc, 0x85, 0x74, 0xe9, 0xa7, 0xab, 0x26, 0x8f, 0xe5, - 0x68, 0x3f, 0xbc, 0x37, - 0xab, 0xd7, 0xe0, 0x77, 0xc0, 0x14, 0x87, 0x99, 0x51, 0xa0, 0x6c, 0x4f, - 0xbe, 0x5c, 0xf8, 0x6d, - 0x64, 0xff, 0xdb, 0xf4, 0xb3, 0x39, 0x1b, 0xdf, 0x76, 0x0b, 0xaf, 0xb2, - 0xcf, 0xf3, 0xf5, 0x3d, - 0xad, 0xc5, 0x36, 0xe7, 0x3c, 0x95, 0xd4, 0xea, 0x35, 0x22, 0x6d, 0x0b, - 0x1c, 0x62, 0xd0, 0x49, - 0x4f, 0x2e, 0x11, 0xb3, 0x57, 0x5b, 0x81, 0x16, 0xb1, 0x9d, 0x42, 0x26, - 0x0a, 0x27, 0xc2, 0x5c, - 0x85, 0x1d, 0x97, 0xe8, 0xa6, 0x56, 0x86, 0xfb, 0xc0, 0xf5, 0x61, 0xbd, - 0x88, 0xa9, 0xf3, 0x3a, - 0xa0, 0xe6, 0xc1, 0x3c, 0x2d, 0x8a, 0x8b, 0x44, 0x52, 0xda, 0x30, 0x9d, - 0x15, 0xaa, 0x8c, 0x0f, - 0x13, 0x79, 0xff, 0x4e, 0x9b, 0xdf, 0x83, 0xd2, 0x50, 0x37, 0x58, 0x01, - 0x66, 0x0e, 0xd4, 0xf2, - 0xd4, 0x69, 0x8e, 0xce, 0x7b, 0xcd, 0xdb, 0x91, 0x46, 0xa7, 0x26, 0x0c, - 0xed, 0x48, 0xb9, 0xd2, - 0xfb, 0xa4, 0x61, 0x69, 0x37, 0x51, 0x23, 0xbb, 0x78, 0xcd, 0x74, 0xe0, - 0x55, 0x09, 0xbe, 0x8b, - 0xae, 0xcc, 0x5d, 0xaf, 0x42, 0x34, 0x1c, 0x32, 0x07, 0x63, 0x8c, 0x29, - 0x4d, 0x7d, 0xc4, 0x5b, - 0x94, 0x6a, 0x9b, 0xd6, 0x69, 0xf6, 0x34, 0xb9, 0x0d, 0xbc, 0x87, 0x80, - 0x31, 0x0c, 0x3f, 0xd4, - 0xde, 0x5f, 0x37, 0xbd, 0xbc, 0x8d, 0x2e, 0x04, 0xea, 0xe2, 0x25, 0xc0, - 0xc8, 0x0a, 0xc1, 0xbe, - 0xbb, 0xa7, 0x74, 0x71, 0x25, 0x6a, 0xcc, 0x93, 0x33, 0xd6, 0xd5, 0x6c, - 0x89, 0x4d, 0x38, 0x8d, - 0xce, 0x2f, 0xa3, 0xbb, 0x59, 0xf3, 0x65, 0x0e, 0x88, 0x94, 0x9c, 0xe3, - 0xff, 0x1b, 0x01, 0x5e, - 0xa2, 0xe8, 0x32, 0x4c, 0x79, 0xf5, 0xba, 0xd4, 0xcf, 0xa4, 0x8e, 0xa1, - 0xca, 0x01, 0x94, 0x13, - 0xf1, 0x92, 0xd8, 0x1a, 0xf0, 0x11, 0xd6, 0x2e, 0xd4, 0x88, 0x77, 0x2c, - 0x70, 0x4b, 0xc6, 0xe7, - 0x3d, 0xb3, 0x88, 0xd1, 0xfd, 0x9d, 0x82, 0xb0, 0xc1, 0x62, 0x55, 0xf3, - 0x50, 0xfb, 0xdf, 0xa5, - 0xb6, 0x84, 0x83, 0xaa, 0x34, 0x75, 0x93, 0x3d, 0x54, 0x2e, 0x88, 0xfa, - 0x80, 0x85, 0x64, 0xcb, - 0x61, 0xe4, 0x66, 0x2c, 0x31, 0x19, 0x80, 0x74, 0x20, 0xc8, 0x4f, 0xd4, - 0x3c, 0xd2, 0xc9, 0x0b, - 0x36, 0x82, 0xa9, 0x9a, 0x10, 0x03, 0x8e, 0x6d, 0xc2, 0x18, 0x09, 0x21, - 0xfb, 0x0d, 0xab, 0xc7, - 0xec, 0xc1, 0xbb, 0xc7, 0x04, 0x70, 0xc2, 0x8a, 0xd1, 0x06, 0x93, 0x99, - 0x4e, 0x92, 0x5a, 0x41, - 0xc8, 0x3d, 0x75, 0x2b, 0xa5, 0x72, 0x36, 0x7d, 0xec, 0x16, 0x9d, 0xa7, - 0x5d, 0x25, 0x29, 0x7a, - 0x52, 0x7d, 0x72, 0x6e, 0xa3, 0x3a, 0x95, 0xb2, 0xb4, 0x13, 0xa6, 0x93, - 0x34, 0xfe, 0x5e, 0xfa, - 0xb2, 0x98, 0xa6, 0x4a, 0x9c, 0x8b, 0xf1, 0xde, 0xad, 0xd2, 0x37, 0x82, - 0xfd, 0x10, 0x54, 0xf3, - 0xd0, 0x75, 0xab, 0x2e, 0xd3, 0x33, 0xb9, 0x72, 0xbf, 0x5b, 0x99, 0x74, - 0x90, 0xdd, 0x89, 0xea, - 0x72, 0x9d, 0x99, 0x62, 0xaa, 0xc6, 0x03, 0xa6, 0x70, 0xff, 0x17, 0xd5, - 0x5a, 0xdc, 0x1d, 0xf9, - 0xeb, 0xd4, 0xf5, 0x6f, 0xd2, 0x2f, 0x68, 0xb1, 0x1a, 0xbb, 0xcd, 0xc3, - 0x62, 0x18, 0x7e, 0x6b, - 0x96, 0x64, 0x68, 0xa6, 0x3d, 0x89, 0x05, 0x29, 0x90, 0xc2, 0x39, 0xbc, - 0xee, 0xa7, 0x27, 0xc8, - 0x0e, 0x2a, 0x9c, 0x93, 0x6f, 0xbe, 0x97, 0x76, 0x55, 0xb9, 0xbc, 0xb4, - 0x58, 0xd7, 0x48, 0x54, - 0xe2, 0xeb, 0x27, 0x54, 0x6b, 0xce, 0x55, 0xfc, 0x84, 0xbf, 0x2f, 0x2d, - 0x16, 0x45, 0x12, 0x15, - 0x56, 0x61, 0x57, 0x8e, 0x0b, 0xc4, 0xf7, 0x51, 0x4d, 0xef, 0x19, 0xeb, - 0x49, 0x6b, 0x6e, 0xc2, - 0x4c, 0x27, 0x7a, 0xfb, 0x29, 0xfa, 0x49, 0xce, 0x83, 0xdc, 0xa3, 0x04, - 0x5b, 0x38, 0xd6, 0x4e, - 0x40, 0x03, 0x15, 0x18, 0x12, 0x3b, 0xef, 0x28, 0x4b, 0x1b, 0xa1, 0x8c, - 0xdc, 0x44, 0x86, 0x06, - 0x37, 0x85, 0x31, 0xa2, 0x3a, 0xdd, 0x77, 0x25, 0x6d, 0x27, 0x56, 0x3f, - 0x75, 0xb9, 0xa7, 0xc9, - 0x92, 0x78, 0x4d, 0x46, 0x95, 0x77, 0x67, 0xca, 0x69, 0x3e, 0x86, 0xc4, - 0x93, 0x32, 0x17, 0xf0, - 0x44, 0x1f, 0x30, 0xf8, 0xba, 0xc5, 0x8d, 0xcb, 0xb2, 0xe7, 0x1e, 0xf4, - 0xa1, 0xd1, 0xb6, 0x3e, - 0x8f, 0x2b, 0x2e, 0x9b, 0x61, 0x16, 0x73, 0x6e, 0x6c, 0xb0, 0x62, 0x71, - 0xad, 0xeb, 0x8b, 0x56, - 0x59, 0x4c, 0x53, 0x25, 0x4e, 0xa4, 0x99, 0x6f, 0xb7, 0x69, 0xfa, 0x41, - 0x9f, 0x08, 0x2a, 0x98, - 0xdb, 0x44, 0x8a, 0x65, 0x3e, 0xad, 0xb5, 0xaf, 0xbc, 0x21, 0xc5, 0xa6, - 0x3b, 0x2b, 0xfd, 0x88, - 0x6d, 0xc0, 0x09, 0xcf, 0x0a, 0xd8, 0x26, 0x92, 0xe8, 0x0f, 0x4d, 0x5c, - 0xbb, 0xae, 0x99, 0x43, - 0x8c, 0x22, 0x45, 0xd3, 0x1f, 0xb7, 0xbb, 0xb6, 0x5e, 0xf1, 0x83, 0x53, - 0xfc, 0xf4, 0x9f, 0x44, - 0xd3, 0x7c, 0xc0, 0x66, 0xad, 0x92, 0x71, 0xaa, 0x8d, 0x1a, 0x78, 0x56, - 0xc1, 0xc2, 0x9d, 0xf8, - 0x88, 0x3e, 0x60, 0x33, 0xb7, 0x49, 0xd9, 0x55, 0xa7, 0x0d, 0x3c, 0x2b, - 0x81, 0x61, 0xaf, 0x7c, - 0x47, 0x16, 0x5b, 0xb0, 0xc4, 0x64, 0x45, 0x13, 0x80, 0xa6, 0xff, 0xd6, - 0xf0, 0xce, 0xa2, 0x2c, - 0xe5, 0xfe, 0x69, 0xfc, 0xbd, 0x91, 0xff, 0xc7, 0x4f, 0x02, 0x71, 0x77, - 0x3a, 0xcf, 0x36, 0x3f, - 0x2f, 0xcd, 0xef, 0xa7, 0x4c, 0x9c, 0xf8, 0x2a, 0x3e, 0x6a, 0x52, 0xec, - 0xb8, 0x41, 0x07, 0x59, - 0x12, 0x7e, 0x67, 0x76, 0xb1, 0x01, 0x7a, 0x9a, 0xff, 0x08, 0x07, 0x1f, - 0xe8, 0xba, 0xd8, 0xfc, - 0x8b, 0x37, 0x0b, 0x7b, 0xc9, 0xe8, 0x11, 0x8d, 0x95, 0x4c, 0xdd, 0x09, - 0xd0, 0x7e, 0xbb, 0x6e, - 0x11, 0x77, 0x0c, 0x3e, 0xcf, 0xa0, 0xb2, 0x42, 0xcd, 0x49, 0xe6, 0x3d, - 0xb9, 0xa5, 0xcc, 0xee, - 0x54, 0x6f, 0xa4, 0xfe, 0x5f, 0xbb, 0xc6, 0xc1, 0xd0, 0x91, 0xa7, 0xd7, - 0x96, 0xc0, 0x76, 0xde, - 0xa8, 0xde, 0x8b, 0x3f, 0xbe, 0xb5, 0x4f, 0x41, 0x63, 0xe1, 0x8d, 0x6d, - 0xef, 0x43, 0xec, 0x7f, - 0x87, 0x13, 0x64, 0x98, 0xf2, 0x29, 0xb7, 0x6b, 0x5d, 0x8b, 0xdf, 0x81, - 0x57, 0x02, 0xeb, 0x26, - 0x2d, 0xc3, 0x1c, 0xd7, 0x18, 0xe3, 0xc9, 0xba, 0xa3, 0x14, 0xec, 0xd0, - 0x67, 0xea, 0x1f, 0x45, - 0x5d, 0x50, 0x76, 0xc5, 0xe6, 0x5a, 0xfb, 0x8c, 0x4e, 0x95, 0x45, 0x39, - 0xe2, 0x9d, 0x1a, 0xa0, - 0x9d, 0x55, 0x49, 0xed, 0xd0, 0x17, 0x09, 0xf4, 0x93, 0xb8, 0x65, 0x6e, - 0x45, 0x51, 0x53, 0xaa, - 0x39, 0xaf, 0xad, 0x31, 0x55, 0x63, 0xe0, 0x53, 0x38, 0x9e, 0xea, 0x8b, - 0x2d, 0x6e, 0xef, 0x9d, - 0x5f, 0x5e, 0x85, 0xb5, 0xb2, 0x25, 0xca, 0x1c, 0xd3, 0xeb, 0xfb, 0x05, - 0x3d, 0x36, 0x02, 0xbc, - 0x26, 0xf2, 0x3d, 0x9c, 0xf5, 0x7d, 0xc5, 0x67, 0xa0, 0x6e, 0xb0, 0x02, - 0xcc, 0x1c, 0x6b, 0x27, - 0x05, 0x1b, 0xbd, 0xd8, 0x82, 0x20, 0x9b, 0xab, 0x56, 0xc3, 0xe0, 0x66, - 0xf3, 0x21, 0x3c, 0x36, - 0xd5, 0x6e, 0x16, 0xf6, 0x51, 0x13, 0x22, 0xd9, 0xe9, 0x98, 0x79, 0x12, - 0x63, 0xfc, 0xb5, 0xdc, - 0xfc, 0xb1, 0x2f, 0xc1, 0xe1, 0x0e, 0x89, 0x80, 0xb3, 0x70, 0x2a, 0xba, - 0x79, 0x83, 0x9a, 0xa1, - 0x19, 0x4f, 0x46, 0x3d, 0x5c, 0x9f, 0x76, 0x47, 0xfc, 0x72, 0x5b, 0xcd, - 0x43, 0x4c, 0xac, 0x9e, - 0x09, 0x3f, 0xd2, 0x3b, 0xb9, 0xe1, 0x3d, 0x4d, 0x9e, 0x04, 0xe2, 0xee, - 0x74, 0x5d, 0x6c, 0x7e, - 0xb3, 0x9f, 0x3e, 0x72, 0xb6, 0x55, 0x08, 0x96, 0x02, 0xed, 0x68, 0x9c, - 0x73, 0xa4, 0x58, 0xfd, - 0xfa, 0xa3, 0xf9, 0x51, 0x1d, 0x8f, 0xda, 0xf3, 0xd7, 0xf2, 0x2b, 0xfe, - 0xdb, 0xbd, 0xb2, 0x85, - 0xef, 0xc8, 0xd0, 0x8f, 0x7a, 0xd1, 0x0a, 0x52, 0xe3, 0x47, 0x72, 0xbb, - 0x1f, 0x8d, 0x4e, 0x53, - 0x0a, 0x36, 0xb9, 0x73, 0xc7, 0x40, 0xf5, 0x95, 0xac, 0x45, 0x03, 0xcc, - 0x25, 0x42, 0x78, 0x6c, - 0x30, 0x90, 0x7f, 0x0a, 0xec, 0x82, 0xdd, 0x1e, 0xa6, 0x9a, 0x08, 0x65, - 0x59, 0x33, 0x83, 0xe3, - 0xcd, 0x26, 0xc8, 0xf3, 0x27, 0x52, 0xad, 0xd6, 0xba, 0xd5, 0x7d, 0xc1, - 0xae, 0x04, 0x15, 0x4c, - 0xd6, 0x67, 0x7d, 0xbe, 0x2f, 0xb2, 0xea, 0x01, 0xdb, 0xd9, 0x98, 0x30, - 0x32, 0xe3, 0xa1, 0xce, - 0x6b, 0xd2, 0xdf, 0x5f, 0xf6, 0x59, 0x75, 0xe1, 0x8c, 0x8d, 0x4c, 0x18, - 0x19, 0x90, 0xb1, 0x67, - 0x08, 0x38, 0x4a, 0x03, 0x93, 0x3f, 0xc4, 0x05, 0x31, 0x3b, 0xbd, 0xf0, - 0xfa, 0xe9, 0x60, 0x70, - 0xb5, 0x8d, 0xe8, 0xe2, 0x4a, 0xd4, 0x5b, 0xe5, 0x66, 0x6f, 0x69, 0xd8, - 0xd1, 0x9a, 0x70, 0xd9, - 0x6e, 0xc9, 0x62, 0x87, 0x74, 0x79, 0xee, 0x4a, 0xda, 0x4e, 0xac, 0x7e, - 0xea, 0xb1, 0x8d, 0x51, - 0x65, 0xf8, 0x43, 0xcc, 0x99, 0xe7, 0xe2, 0x97, 0xd9, 0x34, 0xf0, 0xac, - 0x41, 0x47, 0xf9, 0x33, - 0xf5, 0x8e, 0xfd, 0xfa, 0x58, 0xef, 0xb4, 0xcd, 0x2d, 0x74, 0xc8, 0x54, - 0x0d, 0xde, 0xf6, 0xdf, - 0xaa, 0xd0, 0x78, 0x4f, 0xea, 0xca, 0x7e, 0xd1, 0xfe, 0x9f, 0x33, 0x51, - 0x30, 0xe8, 0xf4, 0x63, - 0x74, 0x8f, 0x4f, 0xf2, 0x56, 0x47, 0x50, 0xd5, 0x14, 0x7d, 0x16, 0x91, - 0xf8, 0xe2, 0x35, 0xdd, - 0x4b, 0x32, 0x34, 0x53, 0xff, 0xa5, 0xe3, 0xf5, 0x48, 0x61, 0xfd, 0x5e, - 0x77, 0xb2, 0xf2, 0x64, - 0xff, 0xb8, 0x44, 0x89, 0x9f, 0xaf, 0x41, 0x58, 0x81, 0x31, 0xcb, 0x98, - 0x28, 0x9c, 0x8e, 0xb3, - 0x81, 0x01, 0xb2, 0x08, 0x0e, 0xa8, 0xe4, 0x18, 0x39, 0x09, 0xde, 0xc5, - 0xf5, 0x3c, 0xc3, 0x02, - 0xc1, 0x02, 0xa7, 0x10, 0x1c, 0x93, 0x0b, 0x30, 0x72, 0x12, 0x7f, 0x49, - 0x29, 0x78, 0x45, 0x04, - 0xd1, 0x72, 0x33, 0x16, 0xf9, 0xed, 0x40, 0x3a, 0x10, 0x64, 0xc6, 0x6a, - 0x1e, 0x69, 0x85, 0xe4, - 0x28, 0xd8, 0xa1, 0x0f, 0x9a, 0xc3, 0x52, 0x11, 0xf5, 0xd7, 0x0c, 0xb6, - 0x94, 0xcb, 0x23, 0x73, - 0xb1, 0x91, 0xcd, 0x02, 0xe2, 0x2a, 0x39, 0x06, 0x9f, 0x93, 0xd6, 0xa0, - 0xac, 0x0f, 0x40, 0xe1, - 0x9b, 0x47, 0x9f, 0x7d, 0x2c, 0x96, 0x5a, 0x87, 0xf7, 0x3a, 0x64, 0x2a, - 0xe7, 0x6f, 0x7b, 0x8e, - 0xdd, 0x56, 0x5c, 0xf5, 0xc2, 0x2c, 0xe6, 0xdc, 0xd8, 0xa3, 0xc4, 0xe2, - 0x99, 0x15, 0xd5, 0xac, - 0x23, 0xe9, 0x80, 0x44, 0x77, 0x5d, 0x5e, 0xcc, 0xf6, 0xad, 0x50, 0x64, - 0x3f, 0x3d, 0x57, 0x11, - 0x3f, 0xbd, 0x7b, 0xa1, 0xa9, 0xe2, 0xb3, 0x20, 0x5c, 0x1c, 0xeb, 0xcf, - 0x8f, 0x50, 0xc7, 0xb9, - 0x02, 0x0e, 0xf3, 0x70, 0x54, 0x7f, 0x31, 0x90, 0x9d, 0x7e, 0xbe, 0x3c, - 0xdf, 0xab, 0x18, 0x1c, - 0x10, 0x70, 0x94, 0x06, 0xe5, 0x7e, 0x4b, 0x0a, 0x62, 0x76, 0xb9, 0x23, - 0x37, 0x11, 0xc0, 0xe0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x1a, 0x46, 0x2d, 0x75, 0x22, 0x3e, 0xbe, 0x9f, 0xce, 0x33, 0xba, 0xef, - 0x12, 0x53, 0xb8, 0x8c, - 0x60, 0xe3, 0xfe, 0x14, 0x1b, 0xc7, 0x79, 0x3c, 0x8f, 0xf7, 0x10, 0xca, - 0xb2, 0x66, 0xc5, 0x05, - 0x5a, 0x45, 0x38, 0x6d, 0x30, 0x05, 0x51, 0xb7, 0x85, 0x28, 0x1b, 0x63, - 0xce, 0x17, 0x3e, 0x8a, - 0x3e, 0xba, 0xe3, 0x99, 0x83, 0x3c, 0x4a, 0x68, 0xf3, 0x23, 0xb4, 0xd1, - 0x01, 0xe4, 0xcb, 0xb7, - 0x6a, 0xd5, 0x47, 0x67, 0xdc, 0x87, 0x8c, 0xa9, 0x23, 0xb2, 0x13, 0x06, - 0x97, 0x24, 0xbd, 0x69, - 0x71, 0x94, 0xf2, 0x2a, 0xd4, 0x67, 0xcb, 0x7e, 0x42, 0xbe, 0xf6, 0xf7, - 0x0b, 0xc3, 0x09, 0xeb, - 0x75, 0x88, 0xd7, 0xca, 0x7c, 0x99, 0xa9, 0x9d, 0xbb, 0x42, 0x49, 0x8f, - 0x76, 0x56, 0x39, 0xd3, - 0xb7, 0x83, 0x1b, 0x92, 0x1e, 0xab, 0x6a, 0x75, 0xfb, 0x11, 0xd7, 0xe4, - 0x0e, 0x31, 0x68, 0xc5, - 0x7a, 0xa5, 0xd3, 0x61, 0x39, 0xf9, 0xc7, 0xa3, 0x41, 0xc4, 0xaa, 0x25, - 0xa0, 0x35, 0x7d, 0x89, - 0xd9, 0x4a, 0x79, 0x15, 0x6a, 0xd2, 0x84, 0x3f, 0x21, 0x5f, 0x7b, 0x9a, - 0xe4, 0x80, 0xe5, 0x94, - 0x6c, 0xc7, 0x91, 0xf7, 0x20, 0x06, 0xdf, 0xda, 0x47, 0x30, 0x12, 0x42, - 0x35, 0x1a, 0x95, 0x4d, - 0x93, 0x7f, 0xd5, 0x7e, 0xbf, 0xa9, 0x9e, 0x82, 0xc6, 0x01, 0xd9, 0xda, - 0x1d, 0x86, 0x1b, 0xfe, - 0x45, 0x18, 0xa8, 0xc0, 0x90, 0x1b, 0x74, 0x83, 0x1d, 0xd8, 0x41, 0xea, - 0x2f, 0x65, 0xba, 0x30, - 0x9a, 0x40, 0x07, 0x45, 0x06, 0x48, 0xa3, 0xcf, 0x58, 0x05, 0x3b, 0x34, - 0x69, 0xdb, 0x77, 0x80, - 0x89, 0x39, 0xf8, 0x0b, 0x9d, 0x97, 0x20, 0x1d, 0x08, 0x32, 0x63, 0x35, - 0x0f, 0xd5, 0xa3, 0x72, - 0x3a, 0xa6, 0xc6, 0x79, 0x2b, 0xc2, 0x28, 0x8b, 0x0a, 0xdf, 0x0b, 0xa9, - 0x7c, 0x71, 0xfb, 0x8f, - 0x78, 0xab, 0x20, 0x11, 0x6d, 0x86, 0xf6, 0x33, 0xdc, 0xba, 0x14, 0x19, - 0x7f, 0x9e, 0x65, 0x95, - 0x1d, 0x53, 0x63, 0xdd, 0xf4, 0x61, 0x14, 0xa4, 0x05, 0x8e, 0xe4, 0xb5, - 0x3e, 0xd9, 0x9c, 0xa6, - 0x8a, 0x30, 0x93, 0x43, 0xe3, 0x36, 0xe8, 0xc5, 0x3a, 0x73, 0x82, 0x17, - 0x5e, 0xca, 0xb7, 0x60, - 0x97, 0x63, 0xf0, 0x9e, 0x17, 0x57, 0xfc, 0x61, 0x3f, 0xfd, 0x66, 0xa2, - 0x60, 0x13, 0x2b, 0xc6, - 0xf8, 0xad, 0x0a, 0x21, 0x49, 0xf0, 0xeb, 0x63, 0x4a, 0x8c, 0x95, 0xc2, - 0x04, 0x16, 0xaa, 0x99, - 0xf9, 0xaa, 0x92, 0x19, 0x63, 0x2e, 0x12, 0x2b, 0xe5, 0xb3, 0xca, 0xdc, - 0x8a, 0xa2, 0xa6, 0x97, - 0x58, 0x4b, 0xcb, 0x1d, 0x64, 0x7a, 0x60, 0x27, 0x18, 0x56, 0xa5, 0x5f, - 0x11, 0xbc, 0x26, 0x96, - 0x2c, 0xc4, 0x84, 0xef, 0x32, 0x3d, 0x30, 0xf2, 0x0c, 0x2b, 0xb3, 0xce, - 0xe9, 0x5e, 0x13, 0x4b, - 0x06, 0x12, 0xd6, 0x90, 0xfc, 0x81, 0x53, 0x73, 0x64, 0x82, 0x01, 0x44, - 0xa2, 0x3e, 0x28, 0x24, - 0xbc, 0xb2, 0x3a, 0xd9, 0xf3, 0x35, 0x66, 0xa8, 0xf8, 0x6b, 0x8b, 0x36, - 0xa5, 0xc7, 0x1c, 0xa7, - 0x9c, 0x52, 0xd1, 0xd5, 0xfa, 0xc9, 0xf0, 0xbc, 0x3c, 0x87, 0x3a, 0x70, - 0xcb, 0xe5, 0x5f, 0xa4, - 0x55, 0x68, 0x3c, 0xc6, 0x75, 0x65, 0x3f, 0x89, 0x7f, 0xae, 0xf8, 0xc9, - 0x18, 0x74, 0x7a, 0xd0, - 0x7c, 0xb7, 0x05, 0xf1, 0xc5, 0x78, 0x94, 0xd0, 0x25, 0x46, 0xab, 0x61, - 0x02, 0x0b, 0x55, 0xad, - 0x2a, 0xd6, 0x52, 0x7f, 0xce, 0xbc, 0x63, 0x81, 0x68, 0xa9, 0xb2, 0x8a, - 0x4b, 0x60, 0x3b, 0x6f, - 0x3b, 0xa1, 0x5e, 0x41, 0x01, 0x1c, 0xd1, 0xc3, 0xa5, 0xe0, 0x54, 0xb7, - 0xf2, 0xc5, 0xf7, 0x81, - 0x9f, 0x5b, 0xba, 0x9d, 0x84, 0x68, 0x38, 0x64, 0x0e, 0xc6, 0xdb, 0x52, - 0x9a, 0xfa, 0x4b, 0xb6, - 0xc6, 0x17, 0xe9, 0xb8, 0xca, 0xcc, 0xa1, 0x0b, 0xb9, 0xaf, 0x21, 0x13, - 0x05, 0xf2, 0x61, 0x2e, - 0x1c, 0x54, 0xfb, 0xe5, 0xde, 0xbf, 0xed, 0xec, 0xaa, 0xb1, 0xbb, 0xab, - 0xb0, 0x6d, 0x90, 0xa8, - 0xfe, 0xbf, 0xdc, 0xb1, 0xb5, 0x71, 0xb8, 0x10, 0x2e, 0x0e, 0x94, 0x86, - 0xa6, 0x28, 0x82, 0xbd, - 0x62, 0xed, 0x0d, 0x64, 0x4f, 0xb8, 0x48, 0xac, 0x12, 0x89, 0xae, 0xf6, - 0x6d, 0xcd, 0xdd, 0x19, - 0x7d, 0xb0, 0x9d, 0xc9, 0xef, 0xa6, 0x6d, 0x98, 0x8a, 0x79, 0xf4, 0x7f, - 0x8c, 0xbf, 0x59, 0xa3, - 0x21, 0xe7, 0x73, 0x34, 0x23, 0x22, 0x6f, 0x5c, 0x6b, 0xd3, 0xee, 0x58, - 0xe0, 0x96, 0x4f, 0x0d, - 0xc0, 0x05, 0x3f, 0x28, 0x36, 0x4d, 0xf2, 0x78, 0xdd, 0x2d, 0x20, 0x57, - 0xa7, 0xcc, 0x49, 0x0a, - 0xf2, 0x9b, 0xb3, 0x52, 0x8e, 0xb0, 0x1e, 0xf6, 0xe6, 0xc9, 0x96, 0x0e, - 0x21, 0x54, 0xd2, 0xf5, - 0xf7, 0x80, 0x0e, 0x8a, 0x0c, 0x90, 0x85, 0x5d, 0xb0, 0x0a, 0x76, 0x68, - 0xd2, 0x75, 0xee, 0xc3, - 0x33, 0x99, 0x14, 0x42, 0x92, 0x23, 0x15, 0xc6, 0x94, 0xdb, 0xe9, 0x47, - 0x08, 0x2c, 0x97, 0xf1, - 0x98, 0x4e, 0xf4, 0x35, 0x52, 0x37, 0x92, 0x5f, 0xc5, 0x7b, 0x85, 0x08, - 0xb6, 0x70, 0x6f, 0x9c, - 0xa9, 0xd9, 0x13, 0x07, 0x94, 0x6b, 0xb6, 0x09, 0xcc, 0xde, 0xd2, 0x73, - 0x61, 0xf7, 0xe0, 0x71, - 0x82, 0x08, 0xd9, 0x40, 0x70, 0x09, 0x2c, 0xc0, 0x0b, 0x48, 0x3f, 0xe7, - 0xa4, 0x23, 0xd7, 0x10, - 0x4d, 0x20, 0xe2, 0xc3, 0x03, 0x24, 0xb0, 0x86, 0x2c, 0xe3, 0xfc, 0x1a, - 0xd5, 0x8c, 0xda, 0x40, - 0xf4, 0x89, 0x65, 0xc2, 0x72, 0x31, 0x4d, 0x85, 0x82, 0x4b, 0x97, 0x4a, - 0x83, 0x6a, 0xfa, 0xd1, - 0xf6, 0x87, 0x96, 0xb2, 0x26, 0x4e, 0x7c, 0x15, 0x1f, 0x35, 0x29, 0x76, - 0x5c, 0xc1, 0xe2, 0xcd, - 0x14, 0x6c, 0xb1, 0xe6, 0x4d, 0x80, 0x29, 0xe9, 0x9b, 0x8a, 0x06, 0x5b, - 0x4a, 0x84, 0xf0, 0xd8, - 0x7b, 0xa2, 0x4b, 0x59, 0x13, 0x27, 0x3e, 0xeb, 0xee, 0xfb, 0xf5, 0x3b, - 0x2e, 0x81, 0x71, 0x87, - 0x79, 0xac, 0xb8, 0x29, 0x47, 0x58, 0x0f, 0x7b, 0x73, 0x85, 0x4b, 0x07, - 0xf1, 0x2a, 0x69, 0x9b, - 0x17, 0x65, 0xda, 0xae, 0x33, 0x21, 0xe1, 0x31, 0xa9, 0xcb, 0xe7, 0x79, - 0x1b, 0x9b, 0xe4, 0xca, - 0xf0, 0x95, 0x40, 0x22, 0xda, 0xcf, 0x2f, 0x66, 0x7b, 0xb7, 0x28, 0x32, - 0xfe, 0xff, 0xca, 0xe9, - 0xbf, 0xbb, 0x51, 0x91, 0x8d, 0x94, 0xae, 0x70, 0xca, 0x2a, 0x6a, 0x14, - 0xf4, 0xd8, 0x08, 0xb5, - 0xcf, 0x28, 0x3b, 0x83, 0x73, 0x2d, 0x9c, 0x46, 0x27, 0xab, 0xc3, 0xfd, - 0x71, 0xaf, 0x0d, 0x50, - 0x01, 0x07, 0x98, 0x38, 0x2a, 0xde, 0xf9, 0x48, 0xaf, 0x3f, 0x5f, 0x1e, - 0x8e, 0xb4, 0x0c, 0x0e, - 0xed, 0xc6, 0x23, 0xff, 0x2e, 0xae, 0x3b, 0xc2, 0x7e, 0x39, 0xcc, 0x87, - 0xc0, 0x26, 0x56, 0x4f, - 0xcc, 0x21, 0x50, 0xcb, 0x0d, 0x8c, 0x54, 0x9e, 0x15, 0xea, 0x22, 0xdf, - 0x20, 0xb0, 0x19, 0x42, - 0x15, 0x6b, 0x29, 0xde, 0x67, 0x5e, 0xd0, 0xa1, 0x34, 0xb5, 0x59, 0x45, - 0xc4, 0x30, 0xfc, 0xd6, - 0x27, 0xf5, 0xa5, 0xa4, 0xdf, 0xa3, 0x3c, 0x2f, 0x0f, 0x51, 0xef, 0x1c, - 0x42, 0xa8, 0x67, 0x29, - 0xa3, 0xef, 0xaa, 0x74, 0x53, 0x2b, 0x43, 0x9c, 0x60, 0x9b, 0xd1, 0xbf, - 0x44, 0xb5, 0x98, 0x1d, - 0x0b, 0x31, 0x21, 0x4b, 0xed, 0x9e, 0x0c, 0xdd, 0x03, 0x7a, 0x5c, 0xd2, - 0xab, 0xf6, 0x74, 0x62, - 0x38, 0xa8, 0x35, 0x09, 0x7f, 0xbd, 0x19, 0x1b, 0x97, 0xa1, 0xb5, 0x95, - 0xa3, 0xda, 0xe3, 0x93, - 0x57, 0x66, 0xcf, 0xb6, 0x21, 0x1a, 0x0e, 0x19, 0xe2, 0xd0, 0x46, 0xf5, - 0xc7, 0xdf, 0x62, 0xcc, - 0x67, 0xf6, 0xb0, 0xbc, 0xcd, 0x98, 0xd3, 0x07, 0x44, 0x4a, 0x4e, 0x90, - 0x9e, 0xec, 0xe1, 0x2f, - 0x83, 0x0f, 0x41, 0x78, 0x5a, 0xd7, 0xd5, 0x88, 0xa4, 0x77, 0x60, 0xf9, - 0x2a, 0x97, 0xdb, 0x1e, - 0x3c, 0xb4, 0x10, 0xe9, 0xd7, 0x43, 0x7b, 0xf8, 0x6e, 0x5d, 0x0a, 0xed, - 0xde, 0x4f, 0xd3, 0xab, - 0xfd, 0xb6, 0xb7, 0xf9, 0xcb, 0xd0, 0x70, 0xc8, 0x1c, 0x4f, 0x75, 0xa4, - 0xf7, 0x37, 0x96, 0xaf, - 0xac, 0xc2, 0xae, 0xdf, 0x16, 0x4b, 0x2d, 0xa2, 0x9a, 0x1d, 0x32, 0x15, - 0x92, 0xd6, 0xdc, 0x47, - 0x95, 0x6d, 0x03, 0xee, 0x43, 0x28, 0xcd, 0xf1, 0xa2, 0x83, 0xd8, 0x9e, - 0xbf, 0xb8, 0x33, 0xda, - 0x51, 0x74, 0x19, 0x26, 0xdd, 0x9b, 0x5d, 0x6a, 0x86, 0x52, 0x47, 0xb1, - 0x65, 0xe1, 0x4a, 0xe8, - 0xd2, 0x7b, 0x58, 0x5e, 0x87, 0x4c, 0x88, 0xe2, 0x22, 0x25, 0x27, 0x48, - 0x4f, 0x76, 0x91, 0xf6, - 0xe1, 0xe2, 0x4c, 0x1c, 0x15, 0x6f, 0x9d, 0x24, 0xb6, 0xfe, 0xce, 0x0f, - 0x47, 0x5a, 0x06, 0x07, - 0xe4, 0xf9, 0xf1, 0xc4, 0x97, 0x4f, 0x06, 0x8f, 0xe0, 0x3d, 0x2e, 0x69, - 0xb4, 0x7b, 0x3a, 0x31, - 0xa6, 0xf4, 0x17, 0xac, 0xd1, 0x0b, 0xd8, 0x37, 0x36, 0x58, 0x31, 0xd9, - 0xb7, 0x94, 0xa4, 0x2b, - 0x2e, 0xca, 0x77, 0x9f, 0x66, 0x42, 0x01, 0x62, 0x91, 0x55, 0x0d, 0xf2, - 0x36, 0xf5, 0x0b, 0x57, - 0x9e, 0x5c, 0x22, 0xa5, 0xae, 0xb6, 0xc1, 0x2c, 0xa1, 0xf9, 0x84, 0x4c, - 0x14, 0x4e, 0x47, 0xb8, - 0xb0, 0x96, 0x55, 0x3a, 0xc8, 0xf4, 0xc0, 0x4e, 0x30, 0xac, 0x89, 0xbe, - 0x22, 0xbb, 0x4c, 0xef, - 0x04, 0x1c, 0x25, 0xe0, 0xa8, 0xfe, 0x62, 0xe3, 0xf9, 0xfc, 0xbf, 0x78, - 0x7d, 0x95, 0x30, 0x38, - 0xca, 0x33, 0x86, 0x5b, 0xf1, 0x0d, 0x07, 0xed, 0x71, 0x68, 0x23, 0x9b, - 0x82, 0x8e, 0x31, 0x66, - 0xe0, 0xe5, 0xd4, 0x24, 0x3f, 0xb1, 0x64, 0x6c, 0x19, 0xc1, 0x91, 0x11, - 0xc9, 0xee, 0x0a, 0x09, - 0x7e, 0xb9, 0xf6, 0x81, 0x91, 0x07, 0xa5, 0x40, 0xb8, 0x38, 0x15, 0x5d, - 0xdd, 0xa0, 0x4d, 0xb1, - 0x66, 0xf1, 0x28, 0x84, 0xe7, 0x46, 0x2a, 0x4f, 0xeb, 0x75, 0x11, 0x8e, - 0x10, 0x58, 0xed, 0x21, - 0x50, 0x73, 0x81, 0x1e, 0xf7, 0x45, 0xa4, 0x22, 0x29, 0x6d, 0x18, 0xaf, - 0xeb, 0x55, 0x46, 0xe6, - 0x49, 0x3c, 0xc7, 0x23, 0xab, 0xda, 0xd2, 0x65, 0xd5, 0x1f, 0x43, 0x62, - 0xa8, 0x19, 0xea, 0x78, - 0x5b, 0x42, 0xa0, 0x55, 0x1a, 0xdb, 0xa8, 0xff, 0x2a, 0x17, 0x44, 0x7d, - 0x40, 0xa3, 0x32, 0x84, - 0x99, 0x49, 0x6c, 0x0d, 0x78, 0xe9, 0x6b, 0x17, 0x6a, 0x44, 0xda, 0x16, - 0x38, 0xc4, 0x63, 0x92, - 0x68, 0xdb, 0xb4, 0x17, 0x88, 0xf8, 0xbd, 0x39, 0xbe, 0xcc, 0xad, 0x3a, - 0x48, 0x8f, 0xa5, 0x75, - 0xe9, 0xda, 0x06, 0x1f, 0x86, 0x50, 0x59, 0x21, 0x87, 0xc5, 0x73, 0xff, - 0xbd, 0xb3, 0x66, 0x77, - 0xc5, 0x1e, 0x82, 0xf0, 0xb4, 0x6d, 0x69, 0xd3, 0x8b, 0xee, 0xc0, 0x31, - 0x54, 0xed, 0x75, 0x3c, - }, - { /* 8 */ - 0xd7, 0x48, 0x12, 0xa3, 0xbe, 0x29, 0x25, 0xd9, 0x10, 0xec, 0xae, 0xdf, - 0x6a, 0x2d, 0x01, 0xfc, - 0x63, 0x44, 0x11, 0xde, 0x60, 0x0e, 0x82, 0x6c, 0x92, 0x7c, 0xf2, 0x2a, - 0x20, 0xcb, 0xa0, 0xee, - 0x5e, 0x13, 0x74, 0x22, 0x3d, 0x0d, 0xaf, 0x72, 0xfa, 0x27, 0xc7, 0x23, - 0xaa, 0xd2, 0x47, 0xdd, - 0xaa, 0x8c, 0x23, 0x54, 0x8a, 0x01, 0x1b, 0x0a, 0x99, 0x88, 0x13, 0x07, - 0xc7, 0xb6, 0x5d, 0x11, - 0xea, 0x1f, 0x77, 0x5f, 0xe3, 0x2a, 0x08, 0xc7, 0x78, 0xb7, 0x9b, 0xd6, - 0xe0, 0x34, 0xe6, 0xcf, - 0x2a, 0x69, 0x8b, 0x42, 0x58, 0x57, 0x3d, 0x53, 0x98, 0xf6, 0xc0, 0x66, - 0x89, 0x71, 0xe8, 0x6e, - 0x29, 0x16, 0xe4, 0x73, 0x84, 0x86, 0x44, 0x75, 0x7a, 0x4b, 0xfe, 0x14, - 0x7c, 0x79, 0x4f, 0x31, - 0x9c, 0x8e, 0xc2, 0xa0, 0xaf, 0xee, 0x75, 0x63, 0xa6, 0xb0, 0x09, 0xcf, - 0x65, 0x26, 0x32, 0x16, - 0xe1, 0x4a, 0xf3, 0x57, 0x9b, 0xc6, 0x4b, 0xb0, 0x2f, 0xd4, 0xb4, 0x17, - 0xc8, 0xbd, 0x6e, 0xfb, - 0xa4, 0x58, 0x16, 0x0f, 0x55, 0x5d, 0xd3, 0x17, 0x2b, 0xef, 0x7e, 0x50, - 0x33, 0x27, 0xff, 0xc4, - 0xeb, 0x8b, 0x52, 0xf1, 0x16, 0x65, 0x9e, 0x64, 0x26, 0xdc, 0x30, 0xf8, - 0xb3, 0x8d, 0x3a, 0xfa, - 0x68, 0x11, 0x95, 0xd6, 0x18, 0xe2, 0xc1, 0x1b, 0xc5, 0x1f, 0xdd, 0xeb, - 0x08, 0x42, 0x28, 0xda, - 0x9d, 0x1a, 0xe7, 0x0e, 0x5a, 0xa1, 0xe3, 0xc0, 0xf8, 0xdb, 0xa2, 0xe1, - 0x36, 0x9f, 0xee, 0x23, - 0xae, 0x99, 0xb7, 0xa9, 0xd8, 0xfe, 0x06, 0xc3, 0x22, 0xe7, 0xfa, 0xbf, - 0x48, 0x17, 0xab, 0xc5, - 0x28, 0x82, 0xc1, 0xdd, 0x71, 0xc9, 0xd2, 0xd6, 0x24, 0x20, 0x55, 0x3a, - 0x2f, 0xc0, 0x93, 0x04, - 0xb7, 0x73, 0x6c, 0x4c, 0x02, 0xf6, 0xde, 0x93, 0x60, 0x2d, 0x62, 0x87, - 0xbf, 0xee, 0x06, 0x4d, - 0x55, 0x46, 0xf0, 0x2a, 0x45, 0xe1, 0xec, 0x05, 0xad, 0x44, 0xe8, 0xe2, - 0x82, 0x5b, 0xcf, 0xe9, - 0xd0, 0x22, 0xe9, 0x6f, 0x30, 0x07, 0x41, 0x36, 0x49, 0x3e, 0x79, 0x15, - 0x10, 0x84, 0x50, 0x77, - 0xaf, 0x0d, 0x92, 0x07, 0x2d, 0xb1, 0x90, 0x60, 0x7c, 0x8c, 0x51, 0x91, - 0x1b, 0xae, 0x77, 0xf0, - 0x62, 0xd0, 0x34, 0x70, 0x95, 0x41, 0x14, 0xcf, 0xcc, 0x17, 0x59, 0x04, - 0x73, 0x72, 0x7c, 0xdb, - 0xf7, 0xe0, 0x38, 0x47, 0x6b, 0xdd, 0xcd, 0x5e, 0x81, 0x12, 0xea, 0x56, - 0x98, 0x6c, 0xbd, 0x93, - 0xef, 0x9e, 0xc6, 0x0c, 0x44, 0x9a, 0x83, 0xad, 0x9d, 0xb3, 0xd9, 0x40, - 0x3c, 0x2c, 0xcc, 0x2e, - 0xb3, 0x66, 0xf8, 0xb1, 0x50, 0x09, 0xc3, 0x5a, 0xdb, 0x42, 0x8b, 0x3f, - 0x30, 0x4f, 0xf0, 0x99, - 0x2e, 0x7c, 0x1f, 0xbf, 0x0a, 0xa8, 0x20, 0x9a, 0x23, 0x99, 0x29, 0xde, - 0x06, 0xd0, 0x1e, 0xba, - 0x96, 0x4f, 0x63, 0x06, 0x22, 0x4d, 0xa0, 0xb7, 0xaf, 0xb8, 0x8d, 0x20, - 0x1e, 0x16, 0x66, 0x17, - 0x1f, 0x14, 0x05, 0x87, 0xa1, 0x69, 0x2a, 0x1c, 0x45, 0x73, 0xe4, 0xdc, - 0xde, 0xe9, 0x20, 0x36, - 0xa5, 0xcc, 0x33, 0xa1, 0xa0, 0x12, 0x45, 0xb4, 0x75, 0x84, 0xd5, 0x7e, - 0x60, 0x9e, 0x23, 0xf1, - 0x24, 0xbd, 0xbe, 0x19, 0x87, 0x0b, 0xf5, 0x4e, 0x2a, 0x91, 0xad, 0x31, - 0x7d, 0xe0, 0x4a, 0xbb, - 0x88, 0xcf, 0x43, 0x2f, 0x76, 0x6b, 0x1c, 0x08, 0xb4, 0xa0, 0xc2, 0xd2, - 0x93, 0x46, 0x9a, 0x14, - 0xfe, 0x5e, 0xf6, 0xd0, 0x3a, 0xaf, 0x61, 0xac, 0x6a, 0xa7, 0x50, 0xcb, - 0x16, 0x54, 0x4e, 0xcd, - 0x03, 0x7f, 0x6f, 0x31, 0xdc, 0xd1, 0x79, 0x26, 0xe2, 0xbd, 0x3e, 0x72, - 0xf5, 0x08, 0xa7, 0x5f, - 0x86, 0x1b, 0x76, 0x74, 0xa9, 0x37, 0xd4, 0x15, 0x06, 0xc7, 0xaf, 0x85, - 0x67, 0xd7, 0x38, 0xc1, - 0xf5, 0x0b, 0x72, 0xd8, 0x42, 0x43, 0x22, 0xdb, 0x3d, 0xc4, 0x7f, 0x0a, - 0x3e, 0xdd, 0xc6, 0xf9, - 0xf0, 0x8a, 0xc3, 0x8b, 0xe5, 0xf3, 0xa9, 0xb1, 0xd8, 0xc0, 0x3d, 0x9c, - 0xe2, 0xc5, 0xec, 0x18, - 0x64, 0x2e, 0xea, 0x12, 0xee, 0x20, 0xe6, 0x83, 0xcb, 0xae, 0x25, 0xe0, - 0x5a, 0x62, 0xf1, 0x65, - 0x21, 0x3c, 0x0f, 0x4a, 0x20, 0xbb, 0x7e, 0x24, 0xcf, 0x95, 0xef, 0xa7, - 0xa1, 0xf8, 0x60, 0x5a, - 0x1b, 0x01, 0x91, 0x7a, 0xf3, 0x96, 0x37, 0xd5, 0xfe, 0x1c, 0x0d, 0x64, - 0x51, 0x48, 0xd6, 0xe2, - 0x1d, 0xff, 0x4f, 0x18, 0x88, 0xf7, 0xc5, 0x99, 0xf9, 0xa5, 0x71, 0x80, - 0x78, 0x58, 0x5b, 0x5c, - 0x69, 0x85, 0xb0, 0x78, 0xed, 0xad, 0x57, 0xb8, 0x9b, 0x74, 0x76, 0xc5, - 0x5b, 0xfb, 0xf4, 0xef, - 0x89, 0x5b, 0x66, 0x81, 0x83, 0x24, 0x8a, 0xab, 0xea, 0xcb, 0x69, 0xfc, - 0xc0, 0xff, 0x46, 0x21, - 0x43, 0xec, 0x3b, 0x3a, 0xb5, 0xfa, 0x6a, 0xeb, 0x03, 0x82, 0xb6, 0xa3, - 0xd2, 0x8a, 0x1c, 0x81, - 0xd8, 0x08, 0x02, 0x56, 0x94, 0x3a, 0x7b, 0x67, 0xfc, 0xe0, 0x68, 0xa6, - 0xcd, 0x05, 0x7f, 0x1c, - 0x5b, 0x92, 0xc5, 0x71, 0x9a, 0xbd, 0x24, 0x18, 0x1f, 0x23, 0x85, 0xb5, - 0x76, 0xca, 0x6d, 0x3c, - 0xd1, 0xb6, 0xcc, 0xc1, 0xc5, 0x48, 0xd7, 0x95, 0x17, 0x55, 0xd2, 0x3b, - 0x43, 0x3d, 0x8c, 0x42, - 0x07, 0x6a, 0xfb, 0xcc, 0x8e, 0x2e, 0x64, 0xef, 0x59, 0xd2, 0xd7, 0xca, - 0x7a, 0xa9, 0x51, 0x8b, - 0x0a, 0xc1, 0xa1, 0xa6, 0x8d, 0xa3, 0xd5, 0xd4, 0x09, 0x08, 0x84, 0xef, - 0x7b, 0x30, 0x54, 0x01, - 0x25, 0x29, 0x9b, 0xb7, 0x72, 0x44, 0x63, 0xed, 0x74, 0xfa, 0x06, 0x1f, - 0x2e, 0x59, 0x96, 0x8e, - 0xa3, 0x32, 0xed, 0xc3, 0xdb, 0x73, 0xb7, 0xf8, 0x72, 0x3d, 0xa9, 0x9a, - 0x49, 0x8e, 0xae, 0x4f, - 0x22, 0x43, 0x60, 0x7b, 0xfc, 0x6a, 0x07, 0x02, 0x2d, 0x28, 0xd1, 0xd5, - 0x54, 0xf0, 0xc7, 0x05, - 0x61, 0xaf, 0x5b, 0x41, 0x49, 0x90, 0x6d, 0xe9, 0x2e, 0xaa, 0x67, 0x76, - 0x86, 0x7a, 0xdb, 0x84, - 0x14, 0x41, 0x81, 0x8f, 0xd9, 0x85, 0x69, 0x6b, 0x12, 0x10, 0xcb, 0x1d, - 0xf6, 0x60, 0xa8, 0x02, - 0xa6, 0xb3, 0x5c, 0x90, 0x7c, 0xc3, 0x3c, 0x92, 0x97, 0x39, 0xeb, 0x0c, - 0x95, 0x96, 0x84, 0xae, - 0x11, 0xc0, 0x30, 0xdc, 0x7e, 0x35, 0xe2, 0x01, 0xf7, 0x14, 0x89, 0x8b, - 0x2a, 0x78, 0x82, 0xe3, - 0x02, 0xeb, 0x4a, 0x9f, 0x29, 0x9e, 0xef, 0x85, 0xbc, 0xd6, 0x95, 0x5c, - 0xa6, 0xb1, 0x7b, 0x6a, - 0x2f, 0xe8, 0x3a, 0x11, 0xff, 0xe7, 0xb6, 0x39, 0x7d, 0xf2, 0x82, 0xf0, - 0x55, 0x69, 0xc2, 0x8f, - 0xca, 0xb7, 0x5d, 0xbb, 0x36, 0xde, 0xe0, 0x40, 0xe9, 0x49, 0xdf, 0x5f, - 0x12, 0x75, 0x5a, 0xa0, - 0x3c, 0xc3, 0x40, 0x52, 0xa8, 0x4c, 0xbb, 0xbd, 0x36, 0x30, 0x9e, 0x27, - 0xd9, 0xa0, 0x3b, 0x06, - 0x4e, 0x47, 0x61, 0x50, 0xb6, 0x77, 0xdb, 0xd0, 0x53, 0x58, 0xe5, 0x86, - 0xd3, 0x13, 0x19, 0x0b, - 0x7d, 0xc4, 0x31, 0xf7, 0x34, 0x28, 0x3e, 0xd3, 0x89, 0x64, 0xbd, 0xd8, - 0xad, 0x9b, 0x5c, 0xed, - 0xb9, 0xa7, 0x59, 0x17, 0xdd, 0xaa, 0x16, 0x8e, 0xd2, 0x4a, 0x0f, 0xd0, - 0x4b, 0x7f, 0xa4, 0x98, - 0x80, 0xe5, 0xa8, 0x16, 0xd2, 0x56, 0x26, 0x59, 0x01, 0x7e, 0xd3, 0x61, - 0x4e, 0xc7, 0xb5, 0x7f, - 0x04, 0x15, 0x94, 0xfd, 0x52, 0xff, 0x1d, 0xc9, 0xbb, 0x6f, 0xe9, 0xb8, - 0x8f, 0xa1, 0xf6, 0xd4, - 0x32, 0x17, 0x75, 0x09, 0x77, 0x10, 0x73, 0xa0, 0x84, 0x57, 0xf3, 0x70, - 0x2d, 0x31, 0x99, 0xd3, - 0xc6, 0x88, 0x22, 0x7f, 0xc0, 0x1c, 0xc7, 0xd8, 0xe7, 0xf8, 0x27, 0x54, - 0x40, 0x55, 0x83, 0x1f, - 0x41, 0x07, 0x71, 0xa5, 0x9c, 0x64, 0x85, 0x6e, 0xbf, 0x54, 0x23, 0xff, - 0x74, 0x3b, 0x67, 0xeb, - 0x0b, 0x55, 0x84, 0x08, 0x78, 0xec, 0x43, 0x77, 0x57, 0x63, 0x2f, 0xc1, - 0x28, 0x89, 0x88, 0x34, - 0xfb, 0xdf, 0x47, 0x83, 0x9d, 0x1f, 0xea, 0xc6, 0x8f, 0xa3, 0x12, 0x5d, - 0xca, 0x4c, 0x64, 0x2c, - 0x6f, 0x7b, 0x6e, 0x1a, 0x96, 0xcc, 0xa5, 0xf4, 0x9c, 0xcd, 0x0a, 0x21, - 0x72, 0xeb, 0x79, 0x51, - 0x4b, 0xc6, 0xd0, 0x03, 0x11, 0xc7, 0x50, 0xba, 0xb6, 0x5c, 0xa7, 0x10, - 0x0f, 0x0b, 0x33, 0xea, - 0xdc, 0x1d, 0x96, 0xab, 0xc6, 0xc5, 0x66, 0xae, 0x47, 0x8f, 0x81, 0x1e, - 0x42, 0xa4, 0x89, 0xc8, - 0x95, 0x30, 0x0c, 0x37, 0xfe, 0x9c, 0xd9, 0x91, 0x4d, 0x05, 0xb3, 0x52, - 0xeb, 0x1e, 0xc1, 0x48, - 0x84, 0xf0, 0x3c, 0xeb, 0x80, 0xa9, 0x3b, 0x90, 0xba, 0x11, 0x3a, 0xd9, - 0xc1, 0x66, 0x43, 0xab, - 0xbb, 0x4c, 0x13, 0x88, 0xf4, 0x34, 0xf9, 0x0b, 0x6e, 0x9c, 0x9a, 0x8c, - 0xed, 0xce, 0xdf, 0xf2, - 0xc7, 0x1c, 0x07, 0xd1, 0x35, 0x53, 0x51, 0x7b, 0xb9, 0x93, 0x8c, 0x7a, - 0x13, 0xec, 0x5f, 0x2a, - 0x16, 0xaa, 0xcb, 0x10, 0xf0, 0x1b, 0x86, 0xee, 0xae, 0xc6, 0x5e, 0x41, - 0x50, 0xd1, 0xd3, 0x68, - 0xde, 0xf6, 0xdc, 0x34, 0xef, 0x5b, 0x89, 0x2b, 0xfb, 0x59, 0x14, 0x42, - 0xe4, 0x15, 0xf2, 0xa2, - 0xdd, 0x89, 0xb3, 0x05, 0x33, 0x8a, 0xf0, 0x0d, 0x19, 0xe4, 0x2a, 0x30, - 0x11, 0x1d, 0x55, 0xfd, - 0x67, 0x51, 0x85, 0x23, 0x32, 0xf1, 0x9f, 0xa5, 0x29, 0x13, 0x1b, 0x92, - 0xaf, 0x6a, 0x56, 0x3a, - 0xe0, 0xde, 0xd6, 0xf9, 0x6e, 0x89, 0xdd, 0x13, 0x71, 0xbf, 0x1f, 0x39, - 0x9b, 0x04, 0xb2, 0xce, - 0xf4, 0x9f, 0x57, 0x76, 0xb7, 0x0c, 0xb4, 0x78, 0x63, 0xaf, 0xd4, 0x24, - 0x6d, 0x64, 0x1a, 0xcc, - 0x48, 0xb9, 0xbf, 0x32, 0xcd, 0x16, 0x29, 0x9c, 0x54, 0xe1, 0x99, 0x62, - 0xfa, 0x03, 0x94, 0xb5, - 0xe6, 0x20, 0x08, 0x9b, 0x15, 0xe8, 0x2f, 0x5f, 0x76, 0x06, 0x63, 0xdd, - 0xb2, 0x14, 0x3f, 0x70, - 0x6c, 0x04, 0x01, 0x2b, 0x4a, 0x1d, 0xdc, 0xd2, 0x7e, 0x70, 0x34, 0x53, - 0x87, 0xe3, 0xde, 0x0e, - 0x59, 0x79, 0x8f, 0xee, 0xb3, 0x23, 0xcb, 0x9d, 0xa3, 0xf5, 0x10, 0xe9, - 0xd0, 0x7b, 0x16, 0x56, - 0x50, 0xc7, 0x41, 0x79, 0xe2, 0x51, 0x67, 0x6f, 0x48, 0x40, 0xaa, 0x74, - 0x5e, 0x43, 0xe5, 0x08, - 0x78, 0x45, 0x80, 0xa4, 0x93, 0x98, 0xb5, 0xb9, 0x6c, 0x60, 0xff, 0x4e, - 0x71, 0x83, 0x76, 0x0c, - 0xda, 0xe3, 0x48, 0xc9, 0xbd, 0xa4, 0x94, 0xe2, 0x40, 0x36, 0xfd, 0xfa, - 0x6b, 0xb4, 0x04, 0x76, - 0xb4, 0x0c, 0x03, 0x7d, 0xde, 0x27, 0xa7, 0xb5, 0x82, 0x90, 0x5c, 0xf5, - 0x4a, 0xe6, 0xa1, 0x12, - 0x0c, 0x3f, 0x7f, 0xc4, 0xf6, 0xc2, 0x27, 0x98, 0x0e, 0xb1, 0xf8, 0x0b, - 0x52, 0x20, 0xd9, 0xbf, - 0xf2, 0x61, 0x89, 0x14, 0xcc, 0x6d, 0x46, 0x34, 0x64, 0x16, 0xa8, 0xc0, - 0x44, 0x74, 0x97, 0x72, - 0xbe, 0xcd, 0xa2, 0xdb, 0x53, 0x84, 0x72, 0x61, 0x8b, 0x98, 0xd8, 0x1a, - 0x31, 0xd6, 0xf5, 0x13, - 0xf3, 0xf5, 0xac, 0xba, 0x39, 0x22, 0xd0, 0x97, 0x3a, 0x7d, 0x03, 0xee, - 0x17, 0xcd, 0x4b, 0x47, - 0x91, 0x25, 0x98, 0xca, 0xac, 0x63, 0xc4, 0x58, 0xf6, 0x6a, 0x5a, 0xea, - 0x64, 0xbf, 0x37, 0x9c, - 0x5c, 0xf8, 0x3e, 0xbd, 0x14, 0x93, 0x40, 0xf7, 0x46, 0xf1, 0x52, 0x7f, - 0x0c, 0x63, 0x3c, 0xb7, - 0x17, 0x3e, 0xee, 0xbe, 0x05, 0x54, 0x10, 0x4d, 0xf0, 0xad, 0xf5, 0x6f, - 0x03, 0x68, 0x0f, 0x5d, - 0x7f, 0x2f, 0x7b, 0x68, 0x1d, 0xb6, 0xd1, 0x56, 0x35, 0xb2, 0x28, 0x84, - 0x0b, 0x2a, 0x27, 0x87, - 0x82, 0x0e, 0xe2, 0x89, 0xfb, 0xc8, 0xc9, 0xdc, 0xbd, 0xa8, 0x46, 0x3d, - 0xe8, 0x76, 0xce, 0x15, - 0xc0, 0x76, 0xfc, 0x1d, 0xbb, 0x7d, 0x35, 0x94, 0xe0, 0x41, 0x5b, 0xb0, - 0x69, 0x45, 0x0e, 0xa1, - 0xd5, 0xa3, 0x58, 0x3c, 0x97, 0xb7, 0xca, 0x5c, 0xac, 0x3a, 0x3b, 0x83, - 0xcc, 0x9c, 0x7a, 0x96, - 0xd9, 0x9c, 0x27, 0xf8, 0x61, 0x75, 0xed, 0xc4, 0xa2, 0x8b, 0xc3, 0x88, - 0x9e, 0xbc, 0xa3, 0x29, - 0xa0, 0x4d, 0x82, 0xf2, 0x07, 0xa2, 0xce, 0xde, 0x90, 0x80, 0x97, 0xe8, - 0xbc, 0x86, 0x09, 0x10, - 0xa8, 0x67, 0x69, 0xcb, 0xa3, 0x9f, 0xf4, 0x8f, 0x25, 0x5e, 0x86, 0x5b, - 0x61, 0x07, 0x26, 0x7b, - 0xad, 0xe6, 0xd8, 0x98, 0x04, 0x2f, 0x7f, 0xe5, 0xc0, 0x5a, 0xc4, 0xcd, - 0xbd, 0x1f, 0x0c, 0x9a, - 0xba, 0xd8, 0x36, 0x26, 0x01, 0x7b, 0x6f, 0xa8, 0x30, 0xf7, 0x31, 0xa2, - 0xbe, 0x77, 0x03, 0xc7, - 0xb1, 0x8d, 0xb2, 0x2e, 0x79, 0x97, 0x2c, 0xdf, 0x67, 0x94, 0x1e, 0x63, - 0x96, 0xfe, 0x8b, 0xf3, - 0xe3, 0xa1, 0xb9, 0xc8, 0xb2, 0x58, 0xa4, 0x35, 0x93, 0x02, 0x21, 0x4b, - 0x6e, 0x0c, 0x15, 0x91, - 0xb6, 0xe7, 0x49, 0xe2, 0xf7, 0xb9, 0x48, 0x30, 0x3e, 0x46, 0xc9, 0xa9, - 0xec, 0x57, 0xda, 0x78, - 0x20, 0xa8, 0x2a, 0xe4, 0xd5, 0xf4, 0xe8, 0x87, 0x91, 0xfe, 0x44, 0x89, - 0xf2, 0x41, 0xbc, 0x6f, - 0x9b, 0xe4, 0x39, 0x6c, 0x21, 0xc0, 0x11, 0x8c, 0xff, 0x62, 0xde, 0x05, - 0x1f, 0x8f, 0x63, 0x9d, - 0x85, 0x64, 0x19, 0x45, 0x75, 0xe6, 0xad, 0x33, 0xe4, 0x7a, 0x91, 0xf7, - 0x92, 0xdf, 0x9f, 0x9e, - 0x7e, 0xbb, 0x5e, 0xc6, 0xe8, 0xf9, 0x47, 0xf5, 0x6b, 0xd9, 0x83, 0xaa, - 0x58, 0x93, 0xfb, 0xb2, - 0x60, 0x3b, 0x7e, 0xef, 0xbc, 0xdf, 0xfb, 0x4a, 0x70, 0xc1, 0xcc, 0x58, - 0xd5, 0xc3, 0x07, 0xb1, - 0x37, 0x96, 0xc4, 0x5a, 0xd0, 0xa0, 0xf8, 0xca, 0x61, 0x53, 0xb1, 0xe6, - 0xf1, 0x29, 0xb3, 0x32, - 0xc4, 0x63, 0x68, 0xe0, 0xe9, 0x82, 0x28, 0x5d, 0x5b, 0x2e, 0xb2, 0x08, - 0xe6, 0xe4, 0xf8, 0x75, - 0xfa, 0x4b, 0x62, 0x2d, 0x68, 0x50, 0x7c, 0x65, 0xd1, 0xc8, 0xb9, 0x73, - 0x99, 0xf5, 0xb8, 0x19, - 0x51, 0x53, 0x64, 0xd7, 0x17, 0x1e, 0xf1, 0xcc, 0x16, 0x2b, 0x01, 0x5a, - 0x0d, 0xfa, 0x39, 0x3d, - 0xc9, 0xc8, 0x32, 0x8a, 0xea, 0x0f, 0x99, 0x66, 0x0b, 0xf4, 0xe1, 0x2d, - 0xe7, 0x7d, 0xfd, 0xff, - 0x01, 0x94, 0x25, 0xae, 0xf5, 0x4f, 0x96, 0xa3, 0x5e, 0x6b, 0xab, 0x2e, - 0x53, 0xb9, 0xdc, 0x35, - 0x0d, 0xab, 0x5a, 0x6a, 0x03, 0x8d, 0xb1, 0x3b, 0x50, 0xda, 0x53, 0x25, - 0x01, 0x99, 0x05, 0x8a, - 0x8a, 0x24, 0x09, 0xb0, 0x5f, 0xf5, 0xf3, 0x8d, 0x08, 0x76, 0x57, 0x8e, - 0x35, 0xf7, 0xe1, 0x7e, - 0x34, 0xe9, 0xab, 0x6b, 0x0c, 0x71, 0x81, 0xec, 0x83, 0xee, 0x8f, 0x94, - 0x04, 0x21, 0x14, 0x6d, - 0x4d, 0x38, 0x0e, 0x61, 0x6a, 0xa6, 0xa2, 0xf6, 0xb1, 0xe5, 0xdb, 0xf4, - 0x26, 0x1b, 0xbe, 0x54, - 0xb0, 0x19, 0x97, 0x80, 0x8c, 0xd8, 0xba, 0x7c, 0x39, 0xff, 0xb5, 0x4d, - 0xc5, 0x47, 0x57, 0xc6, - 0x49, 0x2d, 0x9a, 0x9c, 0x38, 0x59, 0xbf, 0x3f, 0x0a, 0x8a, 0x32, 0x4c, - 0xa9, 0xba, 0x48, 0x80, - 0x92, 0x5a, 0xf7, 0xfb, 0x70, 0xb2, 0xbd, 0x7e, 0x14, 0xd7, 0x64, 0x98, - 0x91, 0xb7, 0x90, 0xc3, - 0x18, 0x7e, 0xfe, 0x4b, 0x2f, 0x47, 0x4e, 0xf3, 0x1c, 0xa1, 0x33, 0x16, - 0xa4, 0x40, 0x71, 0xbd, - 0x72, 0x84, 0x21, 0x02, 0x1e, 0x3b, 0x60, 0x6d, 0x65, 0x68, 0x7b, 0xa1, - 0x0a, 0xb3, 0x22, 0x0d, - 0x53, 0xb8, 0x2e, 0x48, 0x3e, 0x80, 0x1e, 0x49, 0xaa, 0xfd, 0x94, 0x06, - 0xab, 0x4b, 0x42, 0x57, - 0x4a, 0x52, 0xf5, 0xad, 0xe4, 0x88, 0xc6, 0x19, 0xe8, 0x37, 0x0c, 0x3e, - 0x5c, 0xb2, 0xef, 0xdf, - 0x8d, 0x4e, 0xf2, 0x7c, 0xd1, 0xdb, 0x97, 0x62, 0x51, 0xa4, 0x80, 0x44, - 0x4f, 0x5e, 0xb0, 0xf5, - 0xab, 0x18, 0x06, 0xfa, 0x7f, 0x4e, 0x8d, 0xa9, 0xc7, 0xe3, 0xb8, 0x29, - 0x94, 0x0f, 0x81, 0x24, - 0x90, 0xb1, 0xbd, 0x64, 0x59, 0x2c, 0x52, 0xfb, 0xa8, 0x01, 0xf1, 0xc4, - 0x37, 0x06, 0xeb, 0xa9, - 0x4f, 0xd3, 0x44, 0xfe, 0x43, 0x38, 0x4d, 0x73, 0x0d, 0x33, 0x4e, 0xa8, - 0x80, 0xaa, 0xc5, 0x3e, - 0x9a, 0x70, 0x1c, 0xc2, 0xd4, 0x8f, 0x87, 0x2f, 0xa1, 0x09, 0x75, 0x2b, - 0x4c, 0x36, 0xbf, 0xa8, - 0xdb, 0x77, 0x6d, 0x67, 0x48, 0xeb, 0x02, 0x41, 0x1e, 0x5d, 0x56, 0xd4, - 0x38, 0x0d, 0xd8, 0x43, - 0xd6, 0xdc, 0x37, 0x0d, 0x4b, 0x66, 0xb3, 0x7a, 0x4e, 0x87, 0x05, 0xf1, - 0x39, 0x94, 0xdd, 0xc9, - 0x1a, 0x95, 0xb4, 0xd4, 0x06, 0xd9, 0xa1, 0x76, 0xa0, 0x77, 0xa6, 0x4a, - 0x02, 0xf1, 0x0a, 0xd7, - 0xbc, 0x26, 0xe8, 0x44, 0x7a, 0x1a, 0x9d, 0xe4, 0x37, 0x4e, 0x4d, 0x46, - 0x97, 0x67, 0x8e, 0x79, - 0x10, 0x54, 0x15, 0x72, 0x8b, 0x7a, 0x74, 0xa2, 0xa9, 0x7f, 0x22, 0xa5, - 0x79, 0xc1, 0x5e, 0xd6, - 0x93, 0xce, 0xd2, 0x55, 0x85, 0xfd, 0x2b, 0xdd, 0x4a, 0xbc, 0xcf, 0xb6, - 0xc2, 0x0e, 0x4c, 0xf6, - 0x9e, 0x65, 0x88, 0x3f, 0x86, 0x70, 0x9a, 0xe6, 0x1a, 0x66, 0x9c, 0x93, - 0xc3, 0x97, 0x49, 0x7c, - 0x97, 0xdb, 0x46, 0xa8, 0xd7, 0x02, 0x36, 0x14, 0xf1, 0xd3, 0x26, 0x0e, - 0x4d, 0xaf, 0xba, 0x22, - 0x30, 0xfc, 0x3f, 0x96, 0x5e, 0x8e, 0x9c, 0x25, 0x38, 0x81, 0x66, 0x2c, - 0x8b, 0x80, 0xe2, 0xb9, - 0x1e, 0x80, 0x20, 0x29, 0x54, 0x26, 0xbc, 0xbf, 0x1b, 0x18, 0x4f, 0xf2, - 0x8d, 0x50, 0xfc, 0x03, - 0x0f, 0x40, 0x10, 0xf5, 0x2a, 0x13, 0x5e, 0xbe, 0xec, 0x0c, 0xc6, 0x79, - 0xa7, 0x28, 0x7e, 0xe0, - 0x66, 0xc5, 0xa0, 0x8d, 0xc7, 0xbe, 0x09, 0x06, 0x77, 0x78, 0xb0, 0xbc, - 0xfc, 0xd3, 0x8a, 0x0f, - 0x77, 0x05, 0x90, 0x51, 0xb9, 0x8b, 0xeb, 0x07, 0x80, 0x6c, 0x39, 0x37, - 0xd6, 0xab, 0x08, 0xec, - 0x40, 0x93, 0x54, 0x0b, 0x69, 0x2b, 0x13, 0xcd, 0xe1, 0x3f, 0x88, 0xd1, - 0x27, 0x82, 0xbb, 0xde, - 0xa2, 0xa6, 0xc8, 0x6d, 0x2e, 0x3c, 0x21, 0x5b, 0x2c, 0x56, 0x02, 0xb4, - 0x1a, 0x37, 0x72, 0x7a, - 0xc1, 0xe2, 0xd9, 0xb3, 0x4e, 0x32, 0xa3, 0x37, 0xbe, 0x2a, 0xf0, 0x9e, - 0x3a, 0xfc, 0xd2, 0x94, - 0x6a, 0xfa, 0xdf, 0x49, 0x31, 0x7c, 0x2e, 0x9e, 0x79, 0xc9, 0x48, 0xb7, - 0xae, 0xf3, 0x53, 0xb0, - 0x12, 0xbf, 0x5f, 0xed, 0xa2, 0xe4, 0x9b, 0x27, 0x15, 0xa9, 0xb7, 0xf9, - 0xdf, 0x70, 0x25, 0xbc, - 0x54, 0xd2, 0xd5, 0x84, 0xb0, 0xae, 0x7a, 0xa6, 0xf3, 0x2f, 0x43, 0xcc, - 0xd1, 0xe2, 0x13, 0xdc, - 0x5f, 0x87, 0x51, 0x8c, 0xc8, 0x42, 0x39, 0xd1, 0xa4, 0x4c, 0x6c, 0x0d, - 0xf9, 0x6b, 0x9b, 0xe8, - 0xd3, 0x5d, 0x86, 0x5e, 0xec, 0xd6, 0x38, 0x10, 0xab, 0x83, 0x47, 0x67, - 0xe5, 0x8c, 0xf7, 0x28, - 0x65, 0xba, 0xcf, 0xbc, 0x1b, 0x6f, 0x70, 0x20, 0x95, 0xc5, 0x8e, 0xce, - 0x09, 0xdb, 0x2d, 0x50, - 0xa9, 0xf3, 0x4c, 0x65, 0x56, 0xd0, 0x62, 0x2c, 0x7b, 0x35, 0x2d, 0x75, - 0x32, 0xbe, 0xfa, 0x4e, - 0x3d, 0x57, 0x65, 0xfc, 0x5d, 0x03, 0x2d, 0x1e, 0x68, 0x5b, 0x35, 0x09, - 0x8a, 0x19, 0xe7, 0x33, - 0x44, 0x86, 0xc0, 0xf6, 0x3b, 0xd4, 0x0e, 0x04, 0x5a, 0x50, 0x61, 0x69, - 0xa8, 0x23, 0x4d, 0x0a, - 0x81, 0x71, 0x8d, 0xb8, 0x27, 0x19, 0xb0, 0xfa, 0x5f, 0x15, 0x78, 0x4f, - 0x1d, 0x7e, 0x69, 0x4a, - 0xfc, 0xb5, 0xbc, 0x4f, 0x13, 0x31, 0x8e, 0x29, 0xd6, 0x71, 0xc5, 0x97, - 0xb0, 0xe5, 0x35, 0xa7, - 0xdf, 0x62, 0xf9, 0x9a, 0x1a, 0x14, 0x1f, 0x88, 0xa5, 0x32, 0xbf, 0x6c, - 0xb7, 0xac, 0x2e, 0x97, - 0x46, 0x6d, 0x8a, 0x69, 0x12, 0x4a, 0xe1, 0x81, 0xe6, 0x86, 0xf4, 0x35, - 0x0e, 0x92, 0x36, 0x60, - 0xf8, 0xa0, 0x28, 0xb2, 0x41, 0xce, 0x93, 0xe0, 0x6d, 0x1e, 0x2c, 0x2f, - 0x3f, 0x44, 0xc3, 0x73, - 0xcc, 0x49, 0x83, 0xd9, 0x4d, 0xbf, 0x12, 0x0c, 0xee, 0xf0, 0xa3, 0xbb, - 0x3b, 0x65, 0xd7, 0x1e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x52, 0x2c, 0x0b, 0xe6, 0xcb, 0xcf, 0x88, 0xea, 0xf4, 0x96, 0x3f, 0x28, - 0xf8, 0xf2, 0x9e, 0x62, - 0xed, 0x75, 0x8c, 0x93, 0x6d, 0x04, 0x6c, 0x28, 0x21, 0x65, 0x4c, 0x1c, - 0x9a, 0x9d, 0xb7, 0x44, - 0xe4, 0xcb, 0x42, 0x04, 0x3c, 0x76, 0xc0, 0xda, 0xca, 0xd0, 0xf6, 0x81, - 0x14, 0xa5, 0x44, 0x1a, - 0x3a, 0x3d, 0x9e, 0x30, 0xd3, 0x2d, 0x49, 0xf1, 0x31, 0x89, 0xe2, 0xc3, - 0xf0, 0xb0, 0xb6, 0xb8, - 0x73, 0x10, 0x04, 0xac, 0xeb, 0x74, 0xf6, 0xce, 0x3b, 0x03, 0xd0, 0x8f, - 0x59, 0x0a, 0xfe, 0x38, - 0x5d, 0x6c, 0x1b, 0x13, 0xe1, 0xdc, 0xd6, 0x54, 0x18, 0x9a, 0xf9, 0x51, - 0x5f, 0xda, 0xe0, 0x82, - 0x6e, 0xef, 0x4b, 0xb4, 0x63, 0x83, 0x33, 0x57, 0xc2, 0xa6, 0xa1, 0x0f, - 0x21, 0x52, 0xa5, 0x64, - 0x8f, 0xa5, 0xb8, 0xe3, 0xf8, 0x45, 0x78, 0xe7, 0xed, 0x72, 0x15, 0x18, - 0xe9, 0xef, 0xcb, 0x9f, - 0xbf, 0x59, 0x87, 0x75, 0xa6, 0xcb, 0xe4, 0xc2, 0xd5, 0xf3, 0x73, 0x34, - 0x62, 0x6f, 0x29, 0x26, - 0xcf, 0x36, 0xec, 0xe8, 0x91, 0x6e, 0x6b, 0x2a, 0x0c, 0x4d, 0x9d, 0xc9, - 0xce, 0x6d, 0x70, 0x41, - 0xb8, 0x33, 0x7c, 0xb9, 0x28, 0xe5, 0x80, 0x2d, 0x8c, 0x21, 0xa4, 0xfe, - 0x18, 0xc6, 0x78, 0xad, - 0xe7, 0xb4, 0x2d, 0x35, 0xe0, 0xa7, 0xb9, 0xfc, 0x28, 0x6d, 0xc8, 0xf3, - 0xe1, 0xad, 0xe3, 0x45, - 0xf9, 0x34, 0x0d, 0x1c, 0xb4, 0x81, 0x05, 0x43, 0x33, 0x75, 0x87, 0x01, - 0x6c, 0xfd, 0x1f, 0x46, - 0xfd, 0x21, 0x99, 0xe1, 0xe6, 0x7e, 0x18, 0x8a, 0x88, 0x1a, 0x6e, 0xb9, - 0xe3, 0x5c, 0xe9, 0x92, - 0xb5, 0x98, 0x26, 0xd3, 0x2b, 0x68, 0x31, 0x16, 0xdc, 0xfb, 0xf7, 0xdb, - 0x19, 0x5f, 0x7d, 0x27, - 0x09, 0xbe, 0xce, 0x97, 0x51, 0x72, 0xac, 0xf2, 0xeb, 0xb5, 0xba, 0x9d, - 0x8e, 0x38, 0xf3, 0x5e, - 0x47, 0xf9, 0xaf, 0xc7, 0xe7, 0x05, 0x77, 0x22, 0xb8, 0xed, 0x5f, 0x1b, - 0x5d, 0x2b, 0xea, 0x55, - 0xe5, 0x5f, 0x67, 0xaa, 0xc9, 0x39, 0x56, 0x79, 0x94, 0xbb, 0x5d, 0xaf, - 0x47, 0x1c, 0x98, 0x2f, - 0x31, 0x68, 0x1a, 0x38, 0xab, 0xc1, 0x0a, 0x86, 0x66, 0xea, 0xcd, 0x02, - 0xd8, 0x39, 0x3e, 0x8c, - 0xd4, 0x37, 0x7d, 0x92, 0x62, 0xf8, 0x5c, 0xff, 0xf2, 0x51, 0x90, 0xad, - 0x9f, 0x25, 0xa6, 0xa3, - 0xe8, 0xf4, 0x3d, 0xc0, 0xca, 0xb4, 0xe7, 0x42, 0xc4, 0x61, 0x0e, 0x8a, - 0x46, 0x85, 0x9d, 0xa5, - 0x94, 0xa4, 0x29, 0x99, 0x0b, 0xd3, 0x4f, 0x32, 0x13, 0x6e, 0x18, 0x7c, - 0xb8, 0xa7, 0x1d, 0x7d, - 0x1c, 0x6b, 0x6a, 0xb6, 0x7d, 0xb8, 0x53, 0x3a, 0xa7, 0xce, 0xda, 0xae, - 0x2b, 0xe1, 0x87, 0x69, - 0x0e, 0xd4, 0x35, 0x5b, 0xdf, 0x5c, 0xc8, 0x1d, 0xb2, 0x67, 0x6d, 0x57, - 0xf4, 0x91, 0xa2, 0xd5, - 0xcb, 0x23, 0x78, 0x15, 0xc3, 0x91, 0x76, 0xe3, 0xb7, 0x22, 0x74, 0x71, - 0x41, 0xcc, 0x86, 0x95, - 0x6d, 0x90, 0x24, 0x85, 0xbf, 0x52, 0x4a, 0x71, 0x20, 0x1b, 0x9f, 0x7d, - 0xd4, 0x5a, 0x02, 0x3b, - 0x36, 0x02, 0xe1, 0xf4, 0x25, 0xef, 0x6e, 0x69, 0x3f, 0x38, 0x1a, 0xc8, - 0xa2, 0x90, 0x6f, 0x07, - 0x35, 0x7d, 0x8e, 0xc5, 0xf9, 0x3e, 0x17, 0x4f, 0xdd, 0x85, 0x24, 0xba, - 0x57, 0x98, 0xc8, 0x58, - 0x74, 0x7a, 0xff, 0x60, 0x65, 0x5a, 0x92, 0x21, 0x62, 0xd1, 0x07, 0x45, - 0x23, 0xa3, 0xaf, 0xb3, - 0xc5, 0xf7, 0x4d, 0x4e, 0x1c, 0xcd, 0xbe, 0xfe, 0x05, 0x45, 0x19, 0x26, - 0xb5, 0x5d, 0x24, 0x40, - 0x75, 0xee, 0xda, 0xce, 0x90, 0x15, 0x04, 0x82, 0x3c, 0xba, 0xac, 0x6b, - 0x70, 0x1a, 0x73, 0x86, - 0xb2, 0xf2, 0xdd, 0x1f, 0xa5, 0x46, 0x55, 0xf9, 0x85, 0x29, 0x20, 0x11, - 0x63, 0xf6, 0x2c, 0xac, - 0xd2, 0xc9, 0xa3, 0xf0, 0x19, 0x99, 0xae, 0xb3, 0xf5, 0xe8, 0xec, 0x49, - 0xb6, 0x35, 0x2b, 0x1d, - 0x99, 0x0f, 0x73, 0xf3, 0x08, 0x5e, 0xfe, 0x09, 0x43, 0xb4, 0x4b, 0x59, - 0xb9, 0x3e, 0x18, 0xf7, - 0x23, 0xd7, 0x45, 0xd5, 0x09, 0x25, 0x91, 0xa1, 0x73, 0x43, 0x7a, 0xfb, - 0x07, 0x49, 0x1b, 0x30, - 0x15, 0xd5, 0xa4, 0x21, 0x2c, 0xca, 0xff, 0xc8, 0x4c, 0x7b, 0x60, 0x33, - 0xa5, 0xd9, 0x74, 0x37, - 0x08, 0x2a, 0xeb, 0x39, 0xa4, 0x3d, 0x3a, 0x51, 0xb5, 0xde, 0x11, 0xb3, - 0xdd, 0x81, 0x2f, 0x6b, - 0x27, 0xc2, 0xd1, 0x28, 0x5b, 0xda, 0x8c, 0x68, 0xc8, 0x2c, 0x93, 0x43, - 0x88, 0xe8, 0xed, 0xe4, - 0x19, 0xea, 0xdb, 0xe5, 0xda, 0x08, 0xd8, 0x50, 0x42, 0xca, 0x98, 0x38, - 0xf7, 0xf9, 0xad, 0x88, - 0x76, 0x91, 0xb5, 0xff, 0x4c, 0xc4, 0x7d, 0xa4, 0xde, 0x07, 0x92, 0x19, - 0x85, 0x12, 0xd4, 0xd9, - 0x39, 0x42, 0xf1, 0x01, 0x0f, 0xfc, 0x30, 0xd7, 0xd3, 0x34, 0xdc, 0xb1, - 0x05, 0xb8, 0x11, 0xe7, - 0x13, 0x2b, 0x7a, 0x43, 0x57, 0xab, 0x0d, 0x84, 0x4b, 0xc2, 0x1c, 0xd7, - 0x8c, 0xc9, 0xf9, 0x89, - 0x05, 0x81, 0xb1, 0x53, 0xa7, 0xb0, 0x8b, 0x6a, 0xe5, 0x04, 0x42, 0x96, - 0xdc, 0x18, 0x2a, 0xe1, - 0xee, 0x0a, 0xe3, 0xa2, 0xb1, 0xd5, 0x15, 0x0e, 0xc3, 0xd8, 0x72, 0x6e, - 0x6f, 0x95, 0x10, 0x1b, - 0x57, 0xad, 0xba, 0xb5, 0x6c, 0x7f, 0x03, 0x80, 0x11, 0x92, 0x7d, 0xbe, - 0x24, 0xea, 0xb4, 0x83, - 0x9f, 0xf1, 0xad, 0x91, 0x73, 0x3f, 0x0c, 0x45, 0x44, 0x0d, 0x37, 0xbd, - 0x90, 0x2e, 0x95, 0x49, - 0xbd, 0xb2, 0xcd, 0xea, 0x8f, 0x55, 0x0b, 0x47, 0x69, 0x25, 0xe6, 0x68, - 0xc4, 0xde, 0x52, 0x4c, - 0x45, 0x12, 0xe5, 0x58, 0xce, 0x9b, 0x98, 0xa7, 0x04, 0x3b, 0xca, 0x47, - 0xfb, 0x9a, 0x91, 0x3f, - 0xff, 0xca, 0xd3, 0x7e, 0xcf, 0xe0, 0xf7, 0x0f, 0x34, 0xcc, 0xfb, 0xe5, - 0x45, 0xed, 0x92, 0xf8, - 0xc3, 0x09, 0x93, 0x2c, 0x67, 0xac, 0x4c, 0xb2, 0x02, 0xfc, 0x65, 0xc2, - 0x9c, 0x4d, 0xa9, 0xfe, - 0x3b, 0xa9, 0xbb, 0x9e, 0x26, 0x62, 0xdf, 0x52, 0x6f, 0xe2, 0x49, 0xed, - 0xa3, 0x09, 0x6a, 0x8d, - 0x7b, 0x3a, 0xef, 0x95, 0x4f, 0x49, 0xcc, 0x9f, 0x8e, 0xdd, 0xc1, 0x3c, - 0x84, 0x8b, 0xd1, 0x53, - 0x8e, 0x31, 0x9d, 0x4d, 0x0d, 0x0a, 0xee, 0x44, 0xb3, 0x19, 0xbe, 0x36, - 0xba, 0x56, 0x17, 0xaa, - 0xe9, 0x60, 0x18, 0x6e, 0x3f, 0xfb, 0x71, 0xe1, 0x9a, 0x0a, 0xa5, 0xa4, - 0x15, 0x3c, 0x41, 0x90, - 0xc8, 0x5c, 0x17, 0x24, 0x1f, 0x40, 0x0f, 0xc5, 0x55, 0x9f, 0x4a, 0x03, - 0xb4, 0xc4, 0x21, 0xca, - 0x7c, 0x50, 0x14, 0x59, 0xc1, 0x67, 0xa8, 0x70, 0xd7, 0x0f, 0x16, 0xf6, - 0xfe, 0x22, 0x80, 0xd8, - 0x6b, 0x6e, 0xfa, 0xe7, 0xc4, 0x33, 0xb8, 0x3d, 0x27, 0xa2, 0xe3, 0x99, - 0xfd, 0x4a, 0x8f, 0x85, - 0x4c, 0xac, 0x2b, 0xcf, 0x9f, 0xe9, 0x34, 0x55, 0xef, 0x8e, 0x70, 0xda, - 0x75, 0xa2, 0x62, 0x61, - 0x83, 0x9a, 0xc7, 0x27, 0x0e, 0x87, 0x5f, 0x7f, 0xe3, 0xc3, 0xed, 0x13, - 0xbb, 0xcf, 0x12, 0x20, - 0xec, 0xe1, 0xa9, 0x3d, 0x98, 0x4b, 0xfa, 0x8b, 0x7f, 0x0e, 0xe7, 0x32, - 0xc9, 0x24, 0x6b, 0x71, - 0x70, 0x6f, 0x6b, 0x9d, 0x37, 0xa5, 0x8f, 0xe8, 0xd9, 0xbe, 0xee, 0xfd, - 0xac, 0x02, 0x59, 0x67, - 0xe2, 0x35, 0x9c, 0x66, 0x47, 0x17, 0x32, 0x96, 0xcd, 0x69, 0x8a, 0x65, - 0x3d, 0xb5, 0xc9, 0xa4, - 0xf1, 0x1e, 0xe6, 0x25, 0x10, 0xbc, 0x3f, 0x12, 0x86, 0xab, 0x96, 0xb2, - 0xb1, 0x7c, 0x30, 0x2d, - 0xcd, 0xdd, 0xa6, 0x77, 0xb8, 0xf0, 0x84, 0xaf, 0xb0, 0x9b, 0x08, 0x95, - 0x68, 0xdc, 0x0b, 0x2b, - 0x5a, 0x06, 0xe0, 0xdf, 0x6f, 0xf2, 0xb2, 0xbb, 0x41, 0x48, 0x2e, 0x9b, - 0x25, 0x73, 0xb1, 0x09, - 0x2b, 0xfd, 0xae, 0xec, 0xad, 0x18, 0xab, 0xf0, 0xc6, 0x9d, 0x6b, 0x48, - 0xda, 0xc8, 0x34, 0x5b, - 0xc2, 0x9d, 0xb6, 0x82, 0x92, 0xe3, 0xda, 0x11, 0x5c, 0x97, 0xce, 0xec, - 0xcf, 0xf4, 0x75, 0xcb, - 0xa7, 0x27, 0x79, 0x3e, 0x89, 0x8c, 0xaa, 0x31, 0xc9, 0x52, 0x40, 0x22, - 0xc6, 0x2f, 0x58, 0x9b, - 0xa1, 0xd9, 0xa7, 0x5c, 0xf2, 0xed, 0x58, 0x7d, 0xce, 0xeb, 0x3c, 0xc6, - 0xef, 0x3f, 0xd5, 0x25, - 0x2c, 0x97, 0x55, 0x20, 0x23, 0x36, 0xcf, 0x1f, 0x9f, 0x4f, 0xbc, 0x82, - 0xa0, 0x61, 0x65, 0xd0, - 0x06, 0xfe, 0xde, 0x62, 0x7b, 0x61, 0xf2, 0x4c, 0x07, 0xb9, 0x7c, 0xe4, - 0x29, 0x10, 0x8d, 0xbe, - 0x2d, 0x03, 0x70, 0x8e, 0xd6, 0x79, 0x59, 0xbc, 0xc1, 0x24, 0x17, 0xac, - 0xf3, 0xd8, 0xb9, 0xe5, - 0x3e, 0x28, 0x0a, 0xcd, 0x81, 0xd2, 0x54, 0x38, 0x8a, 0xe6, 0x0b, 0x7b, - 0x7f, 0x11, 0x40, 0x6c, - 0x71, 0xfb, 0x4e, 0x33, 0xc2, 0xea, 0x19, 0x4b, 0x87, 0xd5, 0x45, 0xd3, - 0xff, 0xbb, 0x85, 0x52, - 0x3f, 0xbc, 0x2f, 0x63, 0x74, 0x9d, 0xc2, 0x9b, 0xd4, 0x8d, 0xa0, 0x55, - 0x2c, 0xa8, 0x9c, 0x59, - 0xf6, 0x74, 0x1d, 0xe9, 0x9e, 0x92, 0x5b, 0xfd, 0xdf, 0x79, 0x41, 0x78, - 0xcb, 0xd5, 0x61, 0xa6, - 0xce, 0xa2, 0xc9, 0x46, 0x64, 0x21, 0xfd, 0x89, 0x52, 0x26, 0x36, 0xe7, - 0x9d, 0xd4, 0xac, 0x74, - 0x38, 0xd6, 0xd4, 0xaf, 0xfa, 0xb3, 0xa6, 0x74, 0x8d, 0x5f, 0x77, 0x9f, - 0x56, 0x01, 0xcd, 0xd2, - 0x33, 0x83, 0x50, 0xa7, 0x82, 0x5f, 0xe5, 0x03, 0xda, 0x3c, 0x58, 0x5e, - 0x7e, 0x88, 0x45, 0xe6, - 0x87, 0x8f, 0x53, 0xda, 0x5c, 0x78, 0x42, 0xb6, 0x58, 0xac, 0x04, 0xab, - 0x34, 0x6e, 0xe4, 0xf4, - 0x42, 0x78, 0x1e, 0x94, 0x40, 0xb5, 0xfc, 0x48, 0x5d, 0xe9, 0x1d, 0x8d, - 0x81, 0x33, 0xc0, 0xb4, - 0x8c, 0xda, 0xd7, 0xd2, 0x24, 0x94, 0x01, 0xc1, 0x0f, 0xcf, 0x2b, 0x6a, - 0x1c, 0xe7, 0x6c, 0xc0, - 0x26, 0x56, 0xf4, 0x86, 0xae, 0x95, 0x1a, 0xcb, 0x96, 0x47, 0x38, 0x6d, - 0xdb, 0x51, 0x31, 0xd1, - 0x7a, 0xae, 0xca, 0x3b, 0xba, 0x06, 0x5a, 0x3c, 0xd0, 0xb6, 0x6a, 0x12, - 0xd7, 0x32, 0x0d, 0x66, - 0xac, 0x72, 0xfd, 0x36, 0xf1, 0x60, 0xe9, 0x46, 0x9e, 0x31, 0x6f, 0xe3, - 0xee, 0xa6, 0xd0, 0xaf, - 0x98, 0x9b, 0x56, 0x5d, 0xfd, 0x11, 0x68, 0xaa, 0x1d, 0xdf, 0xe0, 0x77, - 0xea, 0x87, 0xc4, 0xc2, - 0x79, 0xd1, 0xa5, 0x0a, 0x66, 0xd7, 0x23, 0x1a, 0x32, 0x0b, 0x54, 0x60, - 0x22, 0x3a, 0xaa, 0x39, - 0x8b, 0xb0, 0x2c, 0x1e, 0xaa, 0xba, 0x65, 0x2e, 0x56, 0x1d, 0xfc, 0xa0, - 0x66, 0x4e, 0x3d, 0x4b, - 0x58, 0xed, 0xaa, 0x40, 0x46, 0x6c, 0x5d, 0x3e, 0xfd, 0x9e, 0xbb, 0xc7, - 0x83, 0xc2, 0xca, 0x63, - 0x56, 0x39, 0x9f, 0x1b, 0x99, 0x30, 0x95, 0x23, 0x4f, 0xf9, 0xd6, 0x90, - 0x77, 0x53, 0x68, 0xb6, - }, - { /* 9 */ - 0xa8, 0x2c, 0x9d, 0x1e, 0xd9, 0x7e, 0xa9, 0xb3, 0xc0, 0x01, 0x6b, 0x3d, - 0xc4, 0xa3, 0x83, 0xb4, - 0xb4, 0x6b, 0xa4, 0x9d, 0x6c, 0x77, 0x14, 0x4c, 0x17, 0xa0, 0x80, 0x59, - 0xd2, 0xde, 0x39, 0xaa, - 0x96, 0x95, 0xc3, 0xd6, 0x72, 0x8f, 0xd1, 0xd8, 0xb2, 0x47, 0xed, 0x28, - 0x6d, 0x22, 0x15, 0xce, - 0x1e, 0xeb, 0x9c, 0x39, 0x0a, 0xe9, 0x43, 0xcd, 0x63, 0x5d, 0x9a, 0x2f, - 0xd4, 0x54, 0xa5, 0x9d, - 0x8a, 0xd2, 0xfa, 0x55, 0xc7, 0x86, 0x6c, 0x27, 0x65, 0xe6, 0x06, 0x4c, - 0x7b, 0x5f, 0xaf, 0xd0, - 0xf5, 0x99, 0x50, 0xe1, 0x53, 0x37, 0x1d, 0xda, 0x6f, 0xe8, 0x61, 0xe9, - 0x49, 0x42, 0xb1, 0x07, - 0x9f, 0x36, 0xa1, 0x26, 0x75, 0xf9, 0xd0, 0x09, 0x7d, 0x4f, 0x33, 0x03, - 0x82, 0x73, 0x87, 0x27, - 0xa5, 0x14, 0x76, 0x59, 0x63, 0x0b, 0x97, 0x06, 0xa4, 0x32, 0x57, 0x80, - 0x6c, 0xa0, 0x2f, 0x98, - 0x13, 0xd3, 0x77, 0x7e, 0xb0, 0x9c, 0x7d, 0x78, 0x07, 0x6e, 0xa6, 0x92, - 0x7c, 0x57, 0x09, 0xb1, - 0x39, 0xd8, 0xc1, 0x98, 0x17, 0x62, 0xc6, 0x24, 0x37, 0xff, 0xcc, 0x0c, - 0x4d, 0x0f, 0x59, 0x9c, - 0xac, 0xb7, 0x14, 0xa9, 0x64, 0x7d, 0x96, 0xd7, 0x6b, 0x3a, 0x89, 0xab, - 0x83, 0xf1, 0xbd, 0x71, - 0x2d, 0x6a, 0x29, 0xb6, 0x1b, 0x6d, 0x05, 0x13, 0x75, 0x28, 0x20, 0x87, - 0xd5, 0xd6, 0x9f, 0xcb, - 0x83, 0x71, 0x98, 0xa5, 0xc0, 0xf0, 0x6d, 0xf6, 0xaa, 0xee, 0xd8, 0x67, - 0x94, 0x0e, 0x3d, 0x39, - 0x86, 0xbc, 0xa2, 0x4f, 0xc3, 0x83, 0x2d, 0x8b, 0x5b, 0xab, 0xe3, 0x35, - 0xb2, 0xa9, 0xed, 0x5c, - 0xb9, 0x53, 0x4f, 0xda, 0xd6, 0x02, 0x2a, 0xf9, 0x73, 0x93, 0xbc, 0xe4, - 0x7a, 0xdd, 0x95, 0x86, - 0x76, 0xe8, 0xc8, 0x44, 0x93, 0xc7, 0x70, 0x2c, 0xc5, 0x06, 0xb9, 0x8e, - 0xdd, 0x4c, 0x8c, 0x3e, - 0x0f, 0x94, 0x4e, 0xfd, 0x05, 0x95, 0xc0, 0x87, 0xd0, 0xcf, 0x4d, 0xf6, - 0x6a, 0x2a, 0xb3, 0xaf, - 0x5a, 0xd4, 0x52, 0xaf, 0x36, 0xda, 0x0a, 0x26, 0xea, 0x50, 0x40, 0xcd, - 0x69, 0x6f, 0xfd, 0x55, - 0xa0, 0xd9, 0x4c, 0xb3, 0x60, 0x78, 0xd7, 0x7b, 0x55, 0x77, 0x6c, 0xd2, - 0x4a, 0x07, 0xff, 0xfd, - 0x92, 0x0e, 0x4a, 0x61, 0xcf, 0x8c, 0xee, 0xbc, 0x19, 0x7c, 0x0f, 0xbe, - 0x2a, 0x70, 0x2b, 0x0b, - 0xe2, 0xd1, 0xae, 0x28, 0x5e, 0xa8, 0x5f, 0xc6, 0xc3, 0xbd, 0x25, 0xed, - 0x72, 0x47, 0x86, 0x73, - 0x34, 0xe0, 0x2a, 0xdf, 0xad, 0x17, 0xf8, 0x91, 0x53, 0xcc, 0xf0, 0xb1, - 0xe5, 0x0c, 0xf5, 0xb0, - 0xee, 0xbf, 0xf6, 0x32, 0x5a, 0xad, 0x1e, 0x6a, 0xfd, 0xf0, 0xc0, 0x94, - 0xbb, 0xb1, 0xc4, 0xff, - 0x6d, 0xce, 0x6e, 0x97, 0x9a, 0x5d, 0x73, 0x9c, 0x57, 0x1e, 0x18, 0xf3, - 0x2f, 0xbf, 0xf9, 0xc6, - 0x1a, 0x70, 0x15, 0x8e, 0xb7, 0xea, 0x7c, 0xa9, 0xc8, 0x66, 0x78, 0xb9, - 0x93, 0x06, 0x9b, 0x58, - 0x24, 0xc9, 0x4b, 0x46, 0x1c, 0x1b, 0x04, 0xc2, 0xba, 0x20, 0xfe, 0xac, - 0x3a, 0x87, 0x0d, 0x22, - 0x1f, 0xbd, 0x2f, 0x64, 0xb4, 0x99, 0x3c, 0xd4, 0x39, 0x23, 0x43, 0xeb, - 0xb5, 0xa1, 0x4b, 0x3d, - 0xd2, 0xaa, 0x0d, 0x40, 0x4e, 0xbc, 0x98, 0x33, 0x3b, 0x4a, 0x37, 0xca, - 0xd0, 0x19, 0x4d, 0x06, - 0x18, 0xdc, 0xb0, 0x34, 0x08, 0x0a, 0x82, 0x9b, 0x7c, 0x9a, 0x09, 0xf2, - 0x51, 0x2f, 0x84, 0xdb, - 0x37, 0x1a, 0x3c, 0x38, 0xac, 0x87, 0x79, 0xba, 0xbd, 0x4e, 0x58, 0x3e, - 0x46, 0xd0, 0x04, 0x93, - 0x6a, 0xaf, 0xf1, 0xc7, 0x26, 0xce, 0xcd, 0xd3, 0x12, 0xa7, 0x52, 0xea, - 0xcb, 0x31, 0x36, 0x20, - 0x3f, 0xef, 0xed, 0x95, 0x15, 0x81, 0x07, 0x72, 0x28, 0x38, 0x5f, 0xd1, - 0xc8, 0x74, 0x78, 0xda, - 0xae, 0x1b, 0xb1, 0x13, 0xdb, 0x9d, 0x68, 0xe5, 0xdf, 0xc6, 0xf8, 0xe0, - 0x41, 0xd8, 0xa2, 0xf2, - 0x10, 0x29, 0x61, 0x99, 0xb1, 0x0c, 0xfc, 0x53, 0xe9, 0xec, 0x0e, 0x1d, - 0xdf, 0x8b, 0xf8, 0x92, - 0x46, 0x93, 0x6b, 0x2c, 0x83, 0xd3, 0xb7, 0xd9, 0x3d, 0xf1, 0xab, 0xa9, - 0x7f, 0x12, 0x47, 0x4b, - 0x6c, 0x98, 0xdd, 0xca, 0x24, 0x2d, 0x0c, 0x85, 0x0d, 0x60, 0xc1, 0x37, - 0x4e, 0x4a, 0x17, 0x66, - 0xbc, 0x9e, 0x75, 0x30, 0xd5, 0x71, 0x6a, 0x84, 0x82, 0xd6, 0x87, 0xb6, - 0x5c, 0x7a, 0x45, 0xe3, - 0x68, 0x03, 0x54, 0x7d, 0x99, 0x2e, 0x33, 0xe1, 0xa6, 0x5b, 0x23, 0xa1, - 0x09, 0x18, 0x29, 0xa3, - 0x0b, 0x0f, 0xc7, 0x4a, 0xb8, 0x96, 0xff, 0xe3, 0x7b, 0xf4, 0xaf, 0x60, - 0x2d, 0x78, 0x8d, 0x6a, - 0x3e, 0xb9, 0x5e, 0xc8, 0xab, 0xf1, 0x78, 0x6b, 0x72, 0x46, 0x86, 0x15, - 0xa9, 0x81, 0x96, 0x7a, - 0xfe, 0x96, 0x97, 0xab, 0xeb, 0xa1, 0xe2, 0x39, 0x14, 0x1c, 0xce, 0x89, - 0x64, 0x3a, 0x3c, 0x6d, - 0xa9, 0x7a, 0x2e, 0x43, 0x67, 0x0e, 0xd6, 0xaa, 0x9a, 0x7f, 0xb2, 0xf9, - 0xa5, 0x56, 0x6d, 0x14, - 0x28, 0xa7, 0x13, 0x5c, 0x18, 0x1e, 0x45, 0x6e, 0x84, 0x6d, 0x1b, 0xd5, - 0xf3, 0x71, 0x4f, 0xae, - 0x7c, 0xb1, 0xbc, 0x53, 0x95, 0x21, 0xf0, 0xd6, 0xe4, 0x8c, 0xcf, 0x2a, - 0x91, 0xc1, 0xef, 0xf4, - 0xf2, 0xf8, 0xcf, 0xb1, 0xef, 0xa4, 0xa3, 0x95, 0x2a, 0x51, 0x2b, 0xf0, - 0xad, 0xcc, 0x7e, 0xe1, - 0xbf, 0x64, 0x63, 0xd7, 0xd4, 0xe1, 0xeb, 0xaf, 0x6c, 0x54, 0x2f, 0x39, - 0xff, 0xa6, 0xb4, 0xc0, - 0xf4, 0xcf, 0xe3, 0xbc, 0xed, 0x47, 0x62, 0xc3, 0x35, 0x96, 0xb8, 0x2d, - 0x28, 0xb7, 0x5f, 0xa7, - 0xcb, 0x20, 0x0e, 0x29, 0xf8, 0xc6, 0x65, 0xb1, 0x1d, 0xae, 0xe7, 0xfc, - 0xe0, 0xc3, 0x27, 0x7d, - 0x06, 0x37, 0x2c, 0x0d, 0x02, 0xe3, 0xc1, 0x56, 0x1f, 0xc7, 0x93, 0xdd, - 0x85, 0x7b, 0x21, 0x46, - 0xf8, 0xa1, 0xbb, 0xa6, 0xe9, 0x42, 0x23, 0x6f, 0x0b, 0xdb, 0x5d, 0x54, - 0xe1, 0x41, 0x1d, 0x2b, - 0xbd, 0xc8, 0xc6, 0x6d, 0x6b, 0x01, 0x15, 0x9d, 0xd8, 0xa8, 0x5e, 0x72, - 0x3d, 0x8f, 0xab, 0x43, - 0x75, 0x12, 0xde, 0xa3, 0x92, 0x57, 0xf1, 0x07, 0x2b, 0x84, 0x11, 0x01, - 0x7e, 0x90, 0x7d, 0x1d, - 0x03, 0xfa, 0x16, 0xe7, 0x01, 0x90, 0x81, 0x2b, 0xee, 0x82, 0xa8, 0x8f, - 0xa3, 0xdc, 0xf1, 0x23, - 0x4c, 0xca, 0x1f, 0x3b, 0x85, 0x35, 0x37, 0x23, 0x1c, 0x7b, 0xdd, 0x0d, - 0x33, 0x9f, 0x24, 0x81, - 0x4b, 0xab, 0x80, 0x6b, 0x39, 0xa6, 0x89, 0x6c, 0x59, 0xc2, 0x97, 0x14, - 0xd7, 0x11, 0xeb, 0x67, - 0xc0, 0x2f, 0xc9, 0x63, 0x40, 0x50, 0x9a, 0x52, 0x66, 0x5a, 0x48, 0x9c, - 0xcd, 0xbb, 0xaa, 0x17, - 0x04, 0x9b, 0x89, 0xb7, 0xbd, 0x03, 0x3f, 0x64, 0xab, 0x3b, 0xe2, 0x96, - 0x47, 0x52, 0x3e, 0xc5, - 0xb3, 0x0a, 0x3b, 0xcd, 0xd0, 0xe4, 0xaa, 0x03, 0x52, 0x19, 0xca, 0x40, - 0x36, 0x50, 0xf6, 0x4c, - 0xb6, 0xc7, 0x01, 0x27, 0xd3, 0x97, 0xea, 0x7e, 0xa3, 0x5c, 0xf1, 0x12, - 0x10, 0xf7, 0x26, 0x29, - 0x51, 0xdb, 0x95, 0xe5, 0x8e, 0x4c, 0xf5, 0xc5, 0x91, 0xa4, 0xef, 0xad, - 0x44, 0x17, 0x70, 0x3f, - 0xeb, 0x72, 0xcc, 0xd8, 0x59, 0xde, 0x5e, 0x17, 0x0c, 0xb5, 0xfb, 0xc6, - 0x9d, 0x16, 0x14, 0x9a, - 0x98, 0x57, 0x3e, 0x76, 0xc9, 0x6a, 0x6e, 0x46, 0x38, 0xf6, 0x79, 0x1a, - 0x66, 0xfd, 0x48, 0xc1, - 0x23, 0xa8, 0xd4, 0x16, 0xa0, 0x88, 0xba, 0x8d, 0xff, 0x99, 0xb4, 0xb5, - 0xde, 0x09, 0xc2, 0xc4, - 0xab, 0xd6, 0x8b, 0xf9, 0xd8, 0xee, 0x28, 0x98, 0x2e, 0x83, 0xc3, 0xb2, - 0x67, 0x7f, 0x72, 0x97, - 0xb2, 0x5c, 0x88, 0x90, 0x6e, 0x94, 0xd5, 0x1a, 0x08, 0x67, 0x13, 0x84, - 0x57, 0xa5, 0x18, 0xec, - 0x99, 0x01, 0x8d, 0x2b, 0x77, 0x1a, 0x11, 0x5f, 0x62, 0x88, 0xa0, 0xde, - 0x07, 0x08, 0xa6, 0x61, - 0x89, 0x28, 0xec, 0xb2, 0xc6, 0x16, 0xed, 0x0c, 0x8b, 0x64, 0xae, 0xc3, - 0xd8, 0x83, 0x5e, 0xf3, - 0xdf, 0x92, 0xe6, 0x07, 0xf4, 0xc9, 0xa6, 0x86, 0x5f, 0x79, 0x0b, 0x77, - 0x78, 0x1a, 0xe1, 0x2a, - 0x0d, 0x38, 0xeb, 0x47, 0xba, 0x75, 0x3e, 0xb5, 0x64, 0x33, 0x3c, 0xbd, - 0xa8, 0x03, 0xac, 0x2c, - 0x31, 0x2d, 0x10, 0x35, 0xae, 0x64, 0xb8, 0xec, 0xa2, 0x89, 0xcb, 0xe3, - 0xc3, 0xab, 0x25, 0xd5, - 0x70, 0xdf, 0xe4, 0x49, 0x91, 0x24, 0xb1, 0x7a, 0xda, 0xc1, 0x2a, 0x53, - 0x58, 0x37, 0xad, 0x78, - 0x73, 0x25, 0xf2, 0xae, 0x90, 0xb4, 0x30, 0x51, 0x34, 0x43, 0x82, 0xdc, - 0xfb, 0xeb, 0x5c, 0x5b, - 0x1d, 0x11, 0x8a, 0xde, 0x0b, 0x79, 0xc2, 0xe6, 0x8d, 0xdf, 0x32, 0xa0, - 0x77, 0x88, 0x54, 0xbe, - 0x8d, 0xb3, 0x65, 0x05, 0x7b, 0x15, 0xd2, 0x68, 0x20, 0x5f, 0x4c, 0x55, - 0x9f, 0xd1, 0x60, 0x36, - 0xf1, 0x02, 0xd9, 0x56, 0xee, 0x34, 0x22, 0xbe, 0xc4, 0xd3, 0x83, 0x7f, - 0x0e, 0x10, 0x8f, 0xc2, - 0x7d, 0xe7, 0x0f, 0x0e, 0x2b, 0x51, 0x8f, 0xcf, 0xbe, 0xf2, 0x16, 0xee, - 0xf0, 0x34, 0x01, 0x54, - 0x17, 0x48, 0xfe, 0xc9, 0x0d, 0x9f, 0x42, 0x1c, 0xac, 0x55, 0x44, 0x04, - 0x3b, 0x05, 0x37, 0x74, - 0x2c, 0x3c, 0x9a, 0xeb, 0xa5, 0x1d, 0x7a, 0x0a, 0x2f, 0x56, 0xf9, 0x43, - 0xb4, 0x23, 0x71, 0x6b, - 0x35, 0xb6, 0x99, 0x82, 0x13, 0x67, 0x87, 0x88, 0x09, 0xb2, 0x29, 0x75, - 0x84, 0xf9, 0x1b, 0x10, - 0x88, 0x7e, 0x5f, 0xef, 0x78, 0x66, 0x92, 0x15, 0xd1, 0x1a, 0x77, 0x07, - 0xb9, 0x76, 0xb0, 0x53, - 0x67, 0x97, 0x1a, 0x80, 0x9c, 0xbb, 0xf3, 0x66, 0x76, 0x94, 0x6e, 0x57, - 0x63, 0x32, 0x9a, 0x0c, - 0xe1, 0x2b, 0xb8, 0xcf, 0x5f, 0x38, 0xde, 0xed, 0x2d, 0x3f, 0x8d, 0x62, - 0xd1, 0x9b, 0x77, 0x50, - 0xb5, 0x3d, 0x17, 0xc0, 0xd2, 0x07, 0x6b, 0x55, 0x4d, 0xde, 0x59, 0x9d, - 0xb3, 0x2b, 0xd7, 0x0a, - 0x64, 0x6d, 0x0c, 0x67, 0x9d, 0x2b, 0x72, 0x4d, 0x98, 0x16, 0xc6, 0xd8, - 0xc0, 0xee, 0x6b, 0x2f, - 0xb1, 0xa6, 0x9e, 0x77, 0x6f, 0x04, 0x54, 0x31, 0xe6, 0xe5, 0xbb, 0x0b, - 0xf4, 0x79, 0xe9, 0xcf, - 0x08, 0xf5, 0xd1, 0xad, 0xb9, 0x06, 0x7e, 0xc8, 0x95, 0x76, 0x07, 0xef, - 0x8e, 0xa4, 0x7c, 0x49, - 0xe5, 0xb0, 0x31, 0x78, 0xe2, 0x3b, 0xe1, 0x89, 0x86, 0x04, 0x6f, 0xf4, - 0x96, 0xc9, 0x49, 0x95, - 0x1c, 0x47, 0x39, 0x83, 0xb5, 0x09, 0xbd, 0xff, 0xd7, 0xa1, 0xeb, 0x64, - 0x16, 0x7d, 0xba, 0x1e, - 0x6b, 0xf9, 0x42, 0x9a, 0x98, 0xbe, 0xb2, 0xca, 0x48, 0xd9, 0x8b, 0x2e, - 0xaa, 0xc4, 0xd8, 0x80, - 0x5c, 0xe3, 0x7e, 0xa2, 0x34, 0x39, 0xcb, 0x70, 0xf5, 0x97, 0xd3, 0x10, - 0xec, 0x14, 0xdc, 0x13, - 0xa3, 0x23, 0x5a, 0x54, 0x61, 0xe8, 0x56, 0x50, 0xbb, 0xf5, 0xc4, 0x5d, - 0xe9, 0xdb, 0x0e, 0xde, - 0x7a, 0x86, 0x90, 0x5e, 0x97, 0xc2, 0x31, 0x80, 0xfb, 0x4b, 0x5c, 0xf7, - 0x14, 0xba, 0xce, 0xb2, - 0xe8, 0x88, 0xda, 0x3f, 0x58, 0x4e, 0xdf, 0x3c, 0xe2, 0x37, 0x53, 0x49, - 0x3e, 0xca, 0xe5, 0xb9, - 0xda, 0x5f, 0xdc, 0xed, 0xf7, 0xba, 0xe6, 0xfb, 0xae, 0x3c, 0x30, 0x25, - 0x5e, 0xbd, 0x31, 0x4f, - 0xd7, 0x67, 0x37, 0xaa, 0x4d, 0xcf, 0xd8, 0x4e, 0xca, 0x0f, 0x0c, 0x98, - 0xf6, 0xbe, 0x9d, 0x63, - 0xfa, 0x0d, 0x1e, 0x1c, 0x56, 0xa2, 0xdd, 0x5d, 0xbf, 0x27, 0x2c, 0x1f, - 0x23, 0x68, 0x02, 0xa8, - 0xa7, 0xb8, 0xd3, 0xe3, 0xdc, 0xeb, 0x69, 0x34, 0x10, 0xce, 0x26, 0xcb, - 0xae, 0x89, 0x30, 0x1b, - 0x7f, 0x4b, 0xaa, 0xb4, 0x94, 0xb1, 0x71, 0xfd, 0x0a, 0x0e, 0x67, 0xa5, - 0x32, 0x1d, 0x1e, 0xd7, - 0xe4, 0xe6, 0x82, 0x25, 0x5c, 0x4b, 0x9e, 0x90, 0xdc, 0x7a, 0xb6, 0x30, - 0xf7, 0x3c, 0xa7, 0x35, - 0x8f, 0x1f, 0xc0, 0xbf, 0xc4, 0xf5, 0x2c, 0x5a, 0x94, 0xa3, 0x3d, 0x1e, - 0x5d, 0xf8, 0x7f, 0xb5, - 0xa1, 0x8f, 0xff, 0xee, 0xde, 0x08, 0xa8, 0x62, 0x0f, 0x09, 0xb5, 0x16, - 0x2b, 0xf2, 0x11, 0x5d, - 0x52, 0x21, 0x83, 0x02, 0x8f, 0xdc, 0x74, 0xee, 0x7f, 0x26, 0x47, 0x22, - 0xe7, 0xcb, 0x81, 0x1c, - 0xec, 0x13, 0x53, 0x88, 0xe5, 0x4d, 0xe0, 0x58, 0x49, 0x0c, 0xb1, 0xdf, - 0x79, 0x98, 0xdb, 0x7c, - 0x3b, 0x74, 0x64, 0x22, 0xa8, 0x82, 0x38, 0x16, 0x83, 0x03, 0xbd, 0x47, - 0x8f, 0x26, 0x46, 0x1f, - 0xa2, 0x75, 0xe9, 0x09, 0xdf, 0x98, 0x29, 0x49, 0xe1, 0x8b, 0x1d, 0x99, - 0x88, 0x2e, 0xe0, 0x7e, - 0x5f, 0x19, 0x68, 0x45, 0x35, 0xa9, 0x4a, 0x5b, 0x1b, 0x15, 0x7b, 0x9f, - 0x4f, 0xc8, 0x2d, 0x30, - 0x50, 0x8d, 0x26, 0xb8, 0x30, 0x3c, 0x8a, 0xdc, 0xcb, 0xda, 0x36, 0x69, - 0x25, 0xe2, 0x9e, 0x9f, - 0x4a, 0xfd, 0x33, 0x36, 0x87, 0xd6, 0xf6, 0x75, 0x03, 0xbc, 0x4e, 0xd0, - 0xb6, 0xe4, 0x05, 0xc7, - 0x57, 0xec, 0xb9, 0xe8, 0x8c, 0xaf, 0x34, 0x93, 0x8e, 0x63, 0x7c, 0x70, - 0xc1, 0x6c, 0x51, 0x79, - 0x55, 0x40, 0x1c, 0x52, 0x33, 0x4f, 0xca, 0xa1, 0x3a, 0x9f, 0x0d, 0x3b, - 0x03, 0x45, 0x4e, 0xfa, - 0xdc, 0x68, 0xf0, 0xe0, 0xf5, 0x59, 0x27, 0xad, 0xb1, 0xfb, 0xa3, 0xf8, - 0xdb, 0xc6, 0x10, 0x09, - 0xde, 0xc4, 0x55, 0x5a, 0x4a, 0xb9, 0xd9, 0x9f, 0x05, 0x07, 0xd2, 0xb3, - 0x19, 0xef, 0x0f, 0x8a, - 0x9d, 0x9a, 0x04, 0x9c, 0xca, 0x19, 0x2e, 0x3b, 0xc9, 0xb3, 0x42, 0x48, - 0x40, 0x5a, 0x98, 0xa4, - 0xe7, 0x1c, 0x94, 0xc2, 0x5d, 0xdb, 0x1f, 0xbb, 0x32, 0xf8, 0x1e, 0xbf, - 0x54, 0xe0, 0x56, 0x16, - 0xaf, 0x4d, 0x02, 0x4e, 0x65, 0xed, 0x17, 0xfc, 0x85, 0xb8, 0x21, 0x24, - 0x20, 0x2d, 0x4c, 0x52, - 0x97, 0xc3, 0x70, 0x8b, 0xcc, 0xff, 0xae, 0xc1, 0xe8, 0x39, 0x34, 0xec, - 0x0c, 0xd7, 0xfb, 0x6e, - 0xaa, 0x80, 0x38, 0xa4, 0x66, 0x9e, 0x57, 0x81, 0x74, 0xfd, 0x1a, 0x76, - 0x06, 0x8a, 0x9c, 0x37, - 0x26, 0x65, 0xee, 0xfc, 0xa3, 0xfb, 0xfa, 0xf0, 0x0e, 0xdc, 0x8f, 0xe7, - 0xf8, 0xae, 0x12, 0xa1, - 0x4d, 0x9c, 0xac, 0x66, 0x3b, 0x45, 0x48, 0x3a, 0x46, 0x05, 0x04, 0xc9, - 0x52, 0x6a, 0xca, 0x21, - 0x54, 0x16, 0xaf, 0x0f, 0x8d, 0x3f, 0xb5, 0xb8, 0x60, 0xe1, 0xd4, 0xff, - 0x62, 0xb0, 0xa0, 0x5a, - 0xf7, 0x35, 0xf5, 0x5b, 0xec, 0xd7, 0xe3, 0xe8, 0xdb, 0x14, 0x10, 0xa2, - 0x8b, 0x6b, 0xae, 0x84, - 0xd9, 0xa5, 0xca, 0x0a, 0xf6, 0x2a, 0x67, 0xd0, 0x40, 0xbe, 0x98, 0xaa, - 0xfd, 0x61, 0xc0, 0x6c, - 0x84, 0x10, 0x07, 0xf5, 0x7c, 0x63, 0xd3, 0xb9, 0xef, 0x57, 0x92, 0x7e, - 0x70, 0x80, 0xf2, 0xdf, - 0x41, 0xf2, 0xf4, 0x7c, 0x3f, 0x40, 0x09, 0x96, 0x78, 0x48, 0xe1, 0xb0, - 0x9b, 0x9c, 0x88, 0xad, - 0x82, 0x27, 0x2b, 0xf8, 0x7e, 0x80, 0x12, 0xef, 0xf0, 0x90, 0x01, 0xa3, - 0xf5, 0xfb, 0xd3, 0x99, - 0xd6, 0x31, 0x84, 0xf7, 0xf3, 0xbf, 0xa7, 0x57, 0x90, 0x71, 0xd5, 0x5c, - 0x97, 0x4b, 0x73, 0xc3, - 0xb7, 0x91, 0xb2, 0x7a, 0x6d, 0xe7, 0x95, 0x67, 0xf9, 0x22, 0x28, 0xd6, - 0x71, 0x02, 0xc8, 0x89, - 0xdb, 0x09, 0x6f, 0xb0, 0x49, 0xca, 0x99, 0xe2, 0xf4, 0x42, 0xe9, 0xe1, - 0x3f, 0x48, 0xdf, 0xef, - 0x2b, 0x5d, 0x05, 0xbb, 0x19, 0x8e, 0xc4, 0x45, 0x6a, 0xef, 0xb3, 0x5a, - 0x50, 0xad, 0xbe, 0x8d, - 0xa6, 0xee, 0x60, 0xbe, 0x62, 0x9b, 0x16, 0x2d, 0x4a, 0xb0, 0xff, 0x0f, - 0xcf, 0x7c, 0xde, 0xbb, - 0x38, 0x8e, 0x72, 0xc5, 0xa9, 0x12, 0xb9, 0x3d, 0x6d, 0x81, 0x15, 0xc8, - 0x2c, 0xfa, 0xb7, 0x3c, - 0xce, 0xed, 0x34, 0xc3, 0xfb, 0xb5, 0x25, 0xcc, 0xec, 0xeb, 0xdc, 0xae, - 0xc6, 0x64, 0xf7, 0x18, - 0x95, 0x6f, 0xd5, 0x31, 0x73, 0x1f, 0x50, 0xf3, 0x5c, 0xc5, 0x45, 0xa7, - 0xce, 0xfe, 0xe4, 0xed, - 0x71, 0x89, 0x57, 0x14, 0x2f, 0x54, 0xce, 0x63, 0x80, 0xbf, 0xf3, 0x97, - 0x39, 0xc2, 0x43, 0xd8, - 0xc3, 0xd5, 0xdf, 0x84, 0x41, 0xc0, 0x1b, 0x79, 0x88, 0xd8, 0xe0, 0x13, - 0x6e, 0x67, 0x5b, 0x34, - 0x8e, 0x49, 0x73, 0xe2, 0x7a, 0x85, 0x53, 0x43, 0xce, 0xdd, 0xe4, 0xda, - 0x3c, 0x0d, 0x91, 0x15, - 0x9a, 0xfb, 0x9b, 0xcc, 0x76, 0x8a, 0x90, 0x74, 0x8c, 0x0a, 0x08, 0x51, - 0xa4, 0xd4, 0x57, 0x42, - 0xef, 0xe9, 0x45, 0x6f, 0xe4, 0xdd, 0x61, 0x73, 0xa7, 0x8e, 0x19, 0x50, - 0xda, 0x44, 0x2a, 0x5f, - 0x25, 0x9f, 0xf8, 0x1b, 0xa2, 0x6b, 0x7b, 0xdb, 0xe0, 0x5e, 0x27, 0x68, - 0x5b, 0x72, 0xe3, 0x82, - 0xa4, 0x42, 0xc5, 0x04, 0xdd, 0x7b, 0xe8, 0x1f, 0xfe, 0x4c, 0x8e, 0x44, - 0x0d, 0x55, 0xc1, 0x38, - 0xe9, 0xde, 0x69, 0x62, 0xe6, 0x3e, 0xa0, 0x25, 0xb8, 0x49, 0x8a, 0x8d, - 0x5f, 0x3f, 0x0b, 0x19, - 0x3c, 0x15, 0xfb, 0x72, 0x14, 0x11, 0x86, 0x59, 0xc6, 0xba, 0xf7, 0x5e, - 0x6b, 0xa8, 0x89, 0xf9, - 0x6f, 0x62, 0xcb, 0x2d, 0x25, 0xbd, 0x8d, 0xae, 0xe3, 0xe2, 0x69, 0xb8, - 0xed, 0x96, 0xe6, 0x45, - 0x02, 0xac, 0xa5, 0xba, 0xbf, 0xe0, 0xfe, 0x32, 0xb4, 0xfc, 0x71, 0x4b, - 0xc2, 0x29, 0x1f, 0x83, - 0x01, 0x56, 0xb3, 0x5d, 0xbe, 0x70, 0x7f, 0x19, 0x5a, 0x7e, 0xd9, 0xc4, - 0x61, 0xf5, 0xee, 0xa0, - 0x0a, 0x59, 0x74, 0x17, 0x06, 0xe6, 0x80, 0xfa, 0x21, 0x8a, 0x76, 0xa4, - 0x4c, 0x8d, 0x63, 0xca, - 0x09, 0xa3, 0x62, 0xf0, 0x07, 0x76, 0x01, 0xd1, 0xcf, 0x08, 0xde, 0x2b, - 0xef, 0x51, 0x92, 0xe9, - 0x94, 0x39, 0x66, 0x6c, 0xcd, 0x6f, 0x2f, 0xea, 0x06, 0xbb, 0x9c, 0x63, - 0xaf, 0x0b, 0x0a, 0x4d, - 0xed, 0x45, 0xe0, 0xd5, 0x5b, 0x3d, 0x9f, 0x41, 0x13, 0x72, 0x68, 0x1b, - 0x18, 0x6d, 0x35, 0xdc, - 0x59, 0x2e, 0x44, 0x48, 0x37, 0x4a, 0x8b, 0x0d, 0x04, 0xd2, 0xe8, 0x42, - 0xca, 0xb3, 0x0c, 0x76, - 0x61, 0xa0, 0x36, 0x8d, 0x9e, 0x58, 0x32, 0x30, 0x69, 0x53, 0xfd, 0x8a, - 0xe6, 0x49, 0xbb, 0x4a, - 0x69, 0x55, 0xe7, 0x20, 0x27, 0x5e, 0x4c, 0xf8, 0xfc, 0x25, 0xfa, 0x65, - 0x68, 0xed, 0xc7, 0x03, - 0x29, 0xf1, 0xa0, 0x01, 0xa6, 0x6e, 0x3a, 0x77, 0xde, 0x13, 0xc2, 0x11, - 0x92, 0x84, 0xa1, 0x0e, - 0xb0, 0xf0, 0x2d, 0x2a, 0xd1, 0x74, 0x2b, 0x28, 0xbc, 0x9b, 0x62, 0xcf, - 0x95, 0x8c, 0x07, 0x6f, - 0x30, 0x7b, 0xa3, 0x68, 0x10, 0x14, 0xc7, 0xf5, 0xf8, 0xf7, 0x12, 0x27, - 0xa2, 0x5e, 0xcb, 0x75, - 0x60, 0xf6, 0x85, 0xd0, 0x20, 0x28, 0x4d, 0x29, 0x33, 0x2d, 0x24, 0x4e, - 0x87, 0xbc, 0x55, 0xea, - 0x74, 0x44, 0x6d, 0xfe, 0x2c, 0x27, 0x8e, 0x1e, 0x71, 0xfa, 0xc8, 0xc5, - 0x1f, 0x65, 0x93, 0xbd, - 0x22, 0xfe, 0x67, 0x4b, 0x1e, 0xf8, 0xc5, 0x94, 0xa5, 0xe7, 0x6d, 0x71, - 0xbf, 0xfc, 0x2c, 0x64, - 0x0c, 0x6e, 0x58, 0x1a, 0x04, 0x05, 0x41, 0xac, 0x3e, 0x4d, 0xe5, 0x79, - 0xc9, 0xf6, 0x42, 0x8c, - 0xcd, 0x17, 0x22, 0x24, 0xfa, 0x25, 0xa4, 0xe7, 0x02, 0x69, 0x74, 0x21, - 0x65, 0xb8, 0x06, 0x3b, - 0x7b, 0xd0, 0x23, 0x03, 0x29, 0xb2, 0x4e, 0x99, 0xa1, 0x35, 0x85, 0x33, - 0x75, 0x4f, 0x20, 0x12, - 0x5b, 0x82, 0xe1, 0xf2, 0x88, 0xaa, 0x75, 0x3f, 0xb0, 0x2e, 0x99, 0x09, - 0x08, 0x9a, 0x13, 0xf5, - 0x40, 0xa4, 0x47, 0x21, 0x81, 0x30, 0x76, 0x8f, 0x22, 0x36, 0x38, 0x74, - 0xfa, 0x69, 0x66, 0x0d, - 0xe3, 0x87, 0x1d, 0x75, 0xe0, 0xd8, 0x20, 0xdf, 0x99, 0xc3, 0xfc, 0x29, - 0x13, 0xb2, 0x68, 0xd3, - 0x14, 0xb2, 0xe8, 0x2e, 0x0c, 0x0f, 0xc3, 0x37, 0x42, 0xd7, 0xec, 0x8b, - 0x98, 0xd9, 0xc6, 0x57, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0xfd, 0x6c, 0x81, 0x4c, 0xea, 0x31, 0x63, 0x12, 0xfa, 0x9e, 0x66, 0x06, - 0xc7, 0xe6, 0xcd, 0x4e, - 0x78, 0x2a, 0x35, 0xe4, 0x28, 0x22, 0xcf, 0xb2, 0x4f, 0xb7, 0x2d, 0xbc, - 0xd6, 0x93, 0xd1, 0x31, - 0xad, 0xe1, 0xa7, 0xf4, 0xda, 0x0d, 0xe9, 0xce, 0x31, 0x44, 0x50, 0x6f, - 0xe2, 0x04, 0x53, 0xd1, - 0xd0, 0x06, 0xa8, 0xfa, 0xf1, 0x5c, 0x66, 0x01, 0x8f, 0xb6, 0x46, 0x81, - 0x12, 0x30, 0x52, 0x85, - 0x91, 0xf4, 0x5c, 0x86, 0xce, 0x1c, 0x6f, 0x97, 0xf7, 0xfe, 0xa7, 0x31, - 0x89, 0xac, 0xda, 0x28, - 0xfc, 0x3a, 0x32, 0x11, 0x54, 0x41, 0x1c, 0x0b, 0xa0, 0xe0, 0xbf, 0xc2, - 0xa6, 0x13, 0x23, 0xee, - 0xf9, 0xf7, 0x08, 0xfb, 0x57, 0x32, 0x5c, 0x76, 0x51, 0xa5, 0x84, 0x90, - 0x80, 0xb4, 0xf3, 0x8b, - 0xea, 0x24, 0x7f, 0x85, 0xe7, 0xae, 0x21, 0x0e, 0x56, 0xcb, 0x22, 0x02, - 0xfc, 0xe3, 0xfa, 0x3a, - 0x85, 0x46, 0xb4, 0xa8, 0xc2, 0x13, 0xac, 0xa0, 0xb5, 0x29, 0x4b, 0xba, - 0x11, 0x75, 0x1c, 0x7f, - 0x7e, 0x1d, 0x19, 0xe9, 0x2a, 0xc1, 0x0e, 0xe4, 0x50, 0x70, 0xbe, 0x61, - 0x53, 0xe8, 0xf0, 0x77, - 0x77, 0xbe, 0x7b, 0x19, 0x2d, 0xb7, 0x0f, 0x35, 0x9f, 0x78, 0x60, 0x4a, - 0xbc, 0xb9, 0x62, 0x9e, - 0xc7, 0x4e, 0x56, 0x33, 0xfc, 0xc3, 0x24, 0x1d, 0x23, 0xe3, 0x02, 0x85, - 0x29, 0x35, 0x65, 0xf1, - 0xc5, 0xe2, 0xf3, 0x89, 0x43, 0x23, 0xda, 0x2f, 0x97, 0x1f, 0x73, 0xce, - 0xeb, 0x1c, 0x7a, 0x72, - 0x5d, 0xb5, 0xcd, 0xff, 0x8a, 0x49, 0xb4, 0x69, 0xaf, 0xe9, 0x0a, 0xd4, - 0x8d, 0xe1, 0x32, 0xb3, - 0x3a, 0x22, 0xd7, 0x7f, 0x16, 0xf2, 0x47, 0x0f, 0xd9, 0x7d, 0x64, 0x83, - 0xee, 0xd3, 0xa8, 0xbf, - 0xd5, 0xcb, 0x92, 0x10, 0xf2, 0x2f, 0x26, 0x7c, 0x7e, 0xf3, 0x7d, 0xd3, - 0x34, 0x97, 0x82, 0xe0, - 0x66, 0xc1, 0xa9, 0xdd, 0x22, 0xcb, 0x8c, 0x7f, 0x2c, 0xea, 0xb7, 0x93, - 0x02, 0xc7, 0x74, 0xac, - 0x8b, 0x84, 0x49, 0x08, 0x79, 0xf6, 0x13, 0x3e, 0x3f, 0x98, 0xdf, 0x88, - 0x1a, 0xaa, 0x41, 0x70, - 0x49, 0x07, 0x25, 0xd1, 0x86, 0x46, 0x77, 0x5e, 0xed, 0x3e, 0xe6, 0x5f, - 0x15, 0x38, 0xf4, 0xe4, - 0xc2, 0x83, 0x6c, 0xd9, 0xff, 0xb0, 0x64, 0x60, 0xd2, 0xa6, 0x39, 0xd7, - 0x0f, 0x92, 0xb5, 0x94, - 0xc6, 0x18, 0xe5, 0x6e, 0x42, 0xb3, 0x5b, 0x04, 0x79, 0x9d, 0xdb, 0x41, - 0x48, 0xc0, 0x8b, 0x51, - 0x56, 0xba, 0x0a, 0xb5, 0x32, 0xdf, 0x4b, 0x8a, 0xd4, 0x1d, 0xa5, 0xb4, - 0xa0, 0x99, 0xbf, 0xd9, - 0x4e, 0x66, 0xba, 0x81, 0x3a, 0xd5, 0xc9, 0x11, 0xa8, 0x87, 0xac, 0x46, - 0xf1, 0xb6, 0x3b, 0x02, - 0x27, 0x33, 0x5d, 0xa1, 0x1d, 0x8b, 0x85, 0xe9, 0x54, 0xa2, 0x56, 0x23, - 0x99, 0x5b, 0xfc, 0x01, - 0xe6, 0x4a, 0x27, 0x9f, 0xe3, 0xab, 0x60, 0xa2, 0x68, 0x86, 0xc7, 0x7b, - 0x35, 0x15, 0xb8, 0xb6, - 0x93, 0x58, 0xf9, 0x3c, 0x71, 0xfc, 0x91, 0xa5, 0x43, 0x02, 0xd6, 0x7a, - 0x4b, 0x85, 0xc5, 0xab, - 0xbb, 0xff, 0xea, 0x60, 0x69, 0xe2, 0xd4, 0xcb, 0xc7, 0x6f, 0xcd, 0xaf, - 0xb8, 0xf4, 0x8a, 0x05, - 0xd1, 0x50, 0x1b, 0xa7, 0x4f, 0x2c, 0x19, 0x18, 0xd5, 0xc8, 0x9f, 0x45, - 0x73, 0xc5, 0xbc, 0x25, - 0x63, 0x0c, 0x93, 0x37, 0x21, 0xb8, 0xcc, 0x02, 0xdd, 0xaf, 0x8c, 0xc1, - 0x24, 0x60, 0xa4, 0xc9, - 0xc1, 0x79, 0x7a, 0x3e, 0xfe, 0x20, 0xe5, 0x4b, 0x3c, 0x24, 0x91, 0x58, - 0xac, 0x4e, 0x44, 0xb7, - 0x45, 0x69, 0x7d, 0xcb, 0x82, 0x43, 0x36, 0xf2, 0xd3, 0x73, 0x03, 0x26, - 0xdc, 0xce, 0xb6, 0x68, - 0xc8, 0xda, 0x18, 0xce, 0xf9, 0x56, 0xe4, 0x9a, 0xf3, 0x2c, 0x4f, 0x73, - 0x43, 0x1f, 0xd6, 0x5e, - 0x16, 0x1e, 0x4d, 0x94, 0xb3, 0xef, 0x3d, 0x05, 0xf6, 0x2b, 0x9d, 0xc0, - 0x5a, 0xf0, 0xd9, 0xd4, - 0x1b, 0x26, 0xa6, 0xd3, 0x09, 0x9a, 0x03, 0xb0, 0x92, 0x18, 0xa1, 0x7d, - 0xf2, 0xf3, 0x75, 0xf8, - 0x20, 0x52, 0xc2, 0xf1, 0xa1, 0x18, 0x3b, 0xa6, 0x11, 0x1b, 0x1c, 0x3a, - 0x7d, 0xd5, 0x33, 0xe7, - 0x9b, 0xad, 0x28, 0x91, 0xc8, 0xfa, 0xef, 0x6d, 0xd6, 0x74, 0xd1, 0x95, - 0xc5, 0x21, 0xb9, 0xe2, - 0xf3, 0xae, 0x7c, 0xec, 0x51, 0xd4, 0xdc, 0x8c, 0x70, 0x2f, 0xf2, 0x34, - 0xcc, 0x39, 0x90, 0x41, - 0xb8, 0x05, 0xfc, 0x87, 0x68, 0x72, 0x55, 0xe0, 0x29, 0xed, 0x65, 0x20, - 0x1b, 0x28, 0x7b, 0x26, - 0xf0, 0x54, 0x6a, 0x0b, 0x50, 0x44, 0x5d, 0xa7, 0x9e, 0xad, 0x5a, 0xbb, - 0x6f, 0xe5, 0x61, 0x62, - 0x2f, 0xc6, 0x8c, 0x0c, 0xa4, 0x8d, 0xfb, 0x21, 0xc1, 0xd4, 0x51, 0xcc, - 0x17, 0xff, 0x80, 0x48, - 0xba, 0xa9, 0x59, 0x3d, 0xd7, 0x92, 0xab, 0xd2, 0x9d, 0x11, 0x14, 0x6b, - 0xd9, 0x01, 0x64, 0xa5, - 0x4f, 0x30, 0x09, 0xdc, 0x84, 0xa5, 0xb6, 0x08, 0xf2, 0xf9, 0x75, 0x82, - 0x90, 0x43, 0xd5, 0xa2, - 0xbe, 0x32, 0xd0, 0x8a, 0x6a, 0x91, 0x94, 0xb6, 0x36, 0x2a, 0xf6, 0xfd, - 0x9e, 0x53, 0x5a, 0x60, - 0x12, 0x85, 0xc4, 0x23, 0x0e, 0xec, 0x02, 0x61, 0x5d, 0x10, 0x7f, 0x56, - 0x1d, 0xa2, 0xe7, 0x11, - 0x43, 0x5e, 0x51, 0xc6, 0x80, 0xa0, 0xf7, 0xa4, 0xcc, 0xb4, 0x90, 0xfb, - 0x59, 0xb5, 0x97, 0x2e, - 0xcf, 0xbb, 0x87, 0x9e, 0x45, 0xc5, 0x5a, 0xd5, 0xb6, 0x95, 0x05, 0x6a, - 0xa7, 0x91, 0x19, 0xb8, - 0xc9, 0x8c, 0xab, 0x93, 0x47, 0x26, 0x9b, 0x83, 0xa9, 0x52, 0x96, 0xb7, - 0x22, 0xea, 0x38, 0xfe, - 0x2a, 0x0b, 0xb6, 0xe6, 0xa7, 0xfe, 0xbb, 0x5c, 0x30, 0x91, 0x6a, 0x9e, - 0x31, 0x58, 0x50, 0x2d, - 0x11, 0x7f, 0xd2, 0xc4, 0x0f, 0x7c, 0x83, 0x4a, 0xb3, 0x92, 0xd7, 0xd9, - 0xbe, 0x7e, 0x16, 0x32, - 0x15, 0xe4, 0x5b, 0x73, 0xb2, 0x7f, 0xbc, 0x2e, 0x18, 0xa9, 0x35, 0x4f, - 0xf9, 0x2c, 0x28, 0xf7, - 0xf6, 0x63, 0x46, 0x06, 0x52, 0xa7, 0x9c, 0xf1, 0x81, 0x6a, 0xc9, 0x66, - 0xea, 0x9e, 0x40, 0x24, - 0x62, 0x5a, 0x20, 0x6a, 0x9f, 0xc8, 0xb3, 0x1b, 0x87, 0xd1, 0x55, 0x05, - 0x45, 0x95, 0x4a, 0x69, - 0xcc, 0x41, 0x91, 0x79, 0x44, 0x55, 0xdb, 0xfe, 0x58, 0x17, 0xad, 0xe5, - 0x04, 0x4d, 0xe8, 0x9b, - 0xe0, 0x7d, 0x0b, 0x92, 0xe1, 0x48, 0xa1, 0xf4, 0x77, 0x41, 0x54, 0xa6, - 0xb0, 0x6e, 0x99, 0xf0, - 0x8c, 0xe5, 0xd6, 0x58, 0xc5, 0x65, 0xad, 0x71, 0x7a, 0x21, 0x95, 0x91, - 0xfe, 0x24, 0x8e, 0x96, - 0x90, 0xa2, 0xef, 0xdb, 0x70, 0x6c, 0x10, 0x8e, 0xad, 0x80, 0x7e, 0xf5, - 0xe8, 0x59, 0x34, 0x88, - 0x47, 0xc5, 0xd8, 0x71, 0x3d, 0xa3, 0xc8, 0xc0, 0x67, 0x8f, 0x72, 0x6d, - 0x1e, 0xe7, 0xa9, 0xeb, - 0xff, 0xc0, 0x24, 0xf6, 0x55, 0xd1, 0x9d, 0x20, 0x4e, 0x62, 0x17, 0x4d, - 0x05, 0xcf, 0xd2, 0xcd, - 0x81, 0xdd, 0x3d, 0x1f, 0x7f, 0x10, 0x93, 0xc4, 0x1e, 0x12, 0xa9, 0x2c, - 0x56, 0x27, 0x22, 0xba, - 0x5e, 0x4f, 0xdb, 0x18, 0x8b, 0xd9, 0x35, 0x42, 0x41, 0x6b, 0xa2, 0x5b, - 0x2e, 0x3d, 0xc3, 0x90, - 0xfb, 0x5b, 0xad, 0x41, 0xe8, 0xd2, 0xa2, 0x44, 0xe5, 0x59, 0xf5, 0xdb, - 0x42, 0x9d, 0xec, 0x08, - 0x79, 0x7c, 0x86, 0xb9, 0x96, 0x52, 0xb0, 0xab, 0x15, 0xc9, 0xf4, 0x78, - 0xb7, 0x66, 0x3f, 0x91, - 0x36, 0x4c, 0x8f, 0x65, 0x12, 0xf7, 0x06, 0xa3, 0xe7, 0x30, 0x81, 0xfa, - 0x27, 0x25, 0xea, 0x33, - 0x32, 0xd7, 0x06, 0xd2, 0xaf, 0xf4, 0x39, 0xc7, 0x4c, 0x0b, 0x63, 0x6c, - 0x60, 0x77, 0xd4, 0xf6, - 0x0e, 0xc2, 0xfd, 0xa0, 0xbb, 0xe5, 0xbf, 0x9e, 0x8a, 0xb1, 0x94, 0x32, - 0x0b, 0xdf, 0x5d, 0x0f, - 0xd3, 0xfc, 0xbe, 0x1d, 0xf0, 0xcc, 0xe7, 0x2a, 0x61, 0x34, 0xee, 0x0e, - 0xb1, 0xec, 0xa3, 0xa6, - 0x33, 0x81, 0xb5, 0x8f, 0x11, 0x84, 0x46, 0xde, 0x16, 0x75, 0xba, 0xa8, - 0x01, 0x82, 0x3a, 0x56, - 0x53, 0x77, 0x30, 0x5f, 0x31, 0xac, 0x0b, 0xf7, 0x25, 0x58, 0x9e, 0xe6, - 0x86, 0x3e, 0x6f, 0xbc, - 0x87, 0xea, 0x11, 0x12, 0x7d, 0xf3, 0x52, 0x92, 0x01, 0xd5, 0x3a, 0xf1, - 0xd3, 0x5c, 0x03, 0xfc, - 0x21, 0x04, 0x71, 0xac, 0x1f, 0x68, 0x44, 0xbf, 0x4b, 0x65, 0xc5, 0xfe, - 0x1c, 0x20, 0xdd, 0x47, - 0xd4, 0x9d, 0x21, 0x4d, 0x4c, 0x5f, 0x59, 0x65, 0x24, 0x8d, 0xa4, 0x17, - 0x55, 0x62, 0x6c, 0x40, - 0x07, 0x61, 0x9f, 0x50, 0xbc, 0x93, 0xbe, 0x4f, 0x45, 0xb9, 0x4a, 0x19, - 0xe4, 0x8e, 0xcf, 0xe6, - 0x48, 0x51, 0x96, 0x8c, 0x38, 0x36, 0x08, 0x47, 0xb7, 0x40, 0x3f, 0x9b, - 0x74, 0xcd, 0x1a, 0x44, - 0xdd, 0x3e, 0x43, 0xbd, 0x4b, 0x29, 0x58, 0xb4, 0xeb, 0x85, 0x7a, 0x3c, - 0xba, 0x33, 0xfe, 0xa9, - 0x6e, 0x34, 0x78, 0x70, 0x9b, 0xcd, 0xf2, 0xb7, 0xb9, 0x9c, 0xb0, 0x7c, - 0x8c, 0x63, 0x08, 0xe5, - 0xc4, 0xb4, 0x40, 0xd4, 0xfd, 0x53, 0xa5, 0x36, 0xcd, 0x61, 0xaa, 0x0a, - 0x8a, 0xe9, 0x94, 0xd2, - 0x58, 0x78, 0xf7, 0x15, 0x89, 0x3a, 0xf4, 0x14, 0x5e, 0xac, 0x31, 0x86, - 0xab, 0x46, 0xe2, 0xd6, - 0x9c, 0xcc, 0xb7, 0xc1, 0x74, 0x69, 0x51, 0x22, 0x93, 0xcd, 0x9b, 0x8c, - 0x21, 0xaf, 0x76, 0x04, - 0x05, 0xcd, 0x3a, 0xea, 0x03, 0x73, 0x40, 0x7d, 0xf1, 0x45, 0x3b, 0x52, - 0x26, 0xa7, 0xd0, 0x65, - 0x19, 0x8a, 0x03, 0x69, 0xb6, 0x7a, 0xfd, 0x82, 0x26, 0xe4, 0xd0, 0x36, - 0x30, 0xda, 0x6a, 0x7b, - 0xd8, 0xf3, 0x79, 0x57, 0x48, 0x5a, 0x18, 0xc9, 0x1a, 0xc0, 0x41, 0x6e, - 0x9c, 0x94, 0x2e, 0xcc, - 0x80, 0x8b, 0x8e, 0x42, 0xc1, 0x60, 0xec, 0xdd, 0x44, 0x6c, 0x70, 0xe8, - 0x37, 0xd2, 0xcc, 0x1a, - 0x9e, 0x60, 0x12, 0x7b, 0xcb, 0x89, 0xaf, 0x10, 0x27, 0x31, 0xea, 0xc7, - 0xe3, 0x86, 0x69, 0x87, - 0x44, 0x3f, 0xce, 0x96, 0x3c, 0x33, 0x49, 0xeb, 0x89, 0x0d, 0xda, 0xe2, - 0xbd, 0x3b, 0x58, 0xc8, - 0xca, 0x76, 0xbd, 0x74, 0x46, 0xb6, 0x1a, 0xa8, 0x47, 0xd0, 0x3e, 0x38, - 0x81, 0x36, 0xc9, 0xdd, - 0x3d, 0x43, 0x48, 0x2f, 0xaa, 0x61, 0xf9, 0x40, 0x9c, 0xc4, 0x2e, 0x9a, - 0x0a, 0x5d, 0x67, 0x59, - 0x2e, 0x90, 0x3f, 0x51, 0x1a, 0xfd, 0x84, 0x38, 0x9b, 0xaa, 0x88, 0x08, - 0x76, 0x0a, 0x6e, 0xe8, - 0x72, 0x73, 0x41, 0xf3, 0x2e, 0xc4, 0x4f, 0x48, 0x6e, 0x3d, 0x5b, 0x18, - 0x9a, 0x1e, 0xb2, 0xfb, - 0x42, 0x08, 0xe2, 0x9b, 0x3e, 0xd0, 0x88, 0xbd, 0x96, 0xca, 0x49, 0x3f, - 0x38, 0x40, 0x79, 0x8e, - 0x65, 0x3b, 0xbf, 0x3a, 0x23, 0x5b, 0x0d, 0x54, 0xc2, 0x68, 0x1f, 0x1c, - 0xa1, 0x1b, 0x85, 0x8f, - }, - { /* 10 */ - 0xd4, 0x19, 0x2d, 0xd4, 0xc2, 0xc3, 0xd3, 0x9c, 0xe1, 0x5d, 0xa9, 0x18, - 0x2c, 0xd1, 0xbe, 0x8f, - 0x40, 0x7b, 0xcb, 0x40, 0x94, 0x34, 0xa6, 0x04, 0x50, 0xb3, 0x14, 0xdb, - 0x6b, 0x25, 0x60, 0xb5, - 0x97, 0xc0, 0xd2, 0x97, 0x3c, 0x7b, 0x81, 0x84, 0xc2, 0x71, 0xd1, 0x87, - 0x95, 0x0f, 0x3d, 0xb7, - 0x4d, 0x69, 0xb6, 0x4d, 0xd9, 0x84, 0x1d, 0xc1, 0xcf, 0xff, 0x43, 0x34, - 0xeb, 0xa7, 0x8a, 0xbf, - 0x03, 0xa2, 0x34, 0x03, 0x6a, 0x8c, 0xf4, 0x1c, 0x73, 0x9f, 0x6c, 0x44, - 0xd2, 0xfb, 0xe3, 0x8d, - 0xd1, 0x3c, 0x71, 0xd1, 0x7c, 0x94, 0x0c, 0xb8, 0x74, 0x3f, 0x1d, 0xd4, - 0x99, 0x1f, 0x58, 0xdb, - 0xf8, 0x08, 0x79, 0xf8, 0xe3, 0xac, 0xd6, 0xee, 0xc6, 0xdc, 0xd0, 0x47, - 0x36, 0x48, 0x84, 0x45, - 0xca, 0xc7, 0x26, 0xca, 0xc0, 0xf2, 0x54, 0x44, 0x19, 0xd2, 0x97, 0xf5, - 0x14, 0x30, 0xaf, 0xb4, - 0x53, 0xb7, 0xbd, 0x53, 0xdb, 0xb5, 0x9a, 0x19, 0x37, 0x70, 0x7d, 0xd9, - 0xd3, 0x46, 0x9b, 0x84, - 0x66, 0x20, 0x27, 0x66, 0x0a, 0xf5, 0xde, 0x3e, 0x9e, 0xf6, 0xc6, 0xdf, - 0xd8, 0xe3, 0x55, 0xd7, - 0xa5, 0x0f, 0x8d, 0xa5, 0x1f, 0x25, 0x03, 0x2e, 0x1d, 0x7f, 0x96, 0x35, - 0xb7, 0x77, 0x16, 0x46, - 0x10, 0x6e, 0x42, 0x10, 0x25, 0x0d, 0xc8, 0x01, 0x14, 0x5c, 0x05, 0x46, - 0x6a, 0x98, 0x18, 0xbc, - 0x6c, 0x6a, 0x9f, 0x6c, 0xb5, 0x5b, 0xa3, 0x76, 0x77, 0x32, 0x6d, 0x84, - 0x71, 0xbc, 0x5a, 0x7f, - 0x90, 0x98, 0x17, 0x90, 0xce, 0x65, 0x47, 0x09, 0xb4, 0xf9, 0x2d, 0x33, - 0xbc, 0xd2, 0xd8, 0x15, - 0x5e, 0xa5, 0xc0, 0x5e, 0x96, 0x05, 0x21, 0xdc, 0xa8, 0x3c, 0x2a, 0x36, - 0x53, 0xc4, 0x71, 0x8e, - 0xbd, 0x56, 0xee, 0xbd, 0xc9, 0xcf, 0xaf, 0xce, 0x03, 0x0d, 0x70, 0x50, - 0xe8, 0xa3, 0x02, 0xa4, - 0xc7, 0xd5, 0x5b, 0xc7, 0x8d, 0x42, 0xef, 0x81, 0x86, 0x9e, 0xc0, 0x1a, - 0x94, 0xb2, 0x45, 0xbe, - 0x20, 0xdc, 0x84, 0x20, 0x4a, 0x1a, 0x53, 0x02, 0x28, 0xb8, 0x0a, 0x8c, - 0xd4, 0xf3, 0x30, 0xbb, - 0x36, 0x35, 0xae, 0x36, 0xbb, 0xcc, 0xb0, 0x3b, 0xda, 0x19, 0xd7, 0x42, - 0xd9, 0x5e, 0x2d, 0xde, - 0xe6, 0xd6, 0x72, 0xe6, 0xe1, 0x9d, 0x51, 0x36, 0x3e, 0x53, 0xee, 0xaa, - 0x0e, 0xa9, 0x95, 0x7e, - 0xf3, 0x9d, 0x6c, 0xf3, 0x7a, 0xc7, 0x46, 0x13, 0xbf, 0x6d, 0x5f, 0x20, - 0xd1, 0xff, 0x6b, 0x96, - 0x78, 0xfe, 0x2c, 0x78, 0x08, 0xc4, 0x59, 0xe6, 0x66, 0x79, 0xf8, 0x32, - 0xe0, 0x02, 0x44, 0xec, - 0x60, 0xa7, 0x4f, 0x60, 0xde, 0x2e, 0xf5, 0x06, 0x78, 0x0b, 0x1e, 0x57, - 0xbf, 0xd6, 0x50, 0x0e, - 0x0c, 0xcd, 0xd0, 0x0c, 0x6b, 0x75, 0x56, 0x70, 0x0f, 0x39, 0x73, 0xd3, - 0xce, 0x6a, 0x0a, 0x71, - 0x3c, 0x7f, 0x16, 0x3c, 0x04, 0x62, 0xcd, 0x73, 0x33, 0xdd, 0x7c, 0x19, - 0x70, 0x01, 0x22, 0x76, - 0x7f, 0xa6, 0xe9, 0x7f, 0xfa, 0xda, 0x9f, 0x6b, 0x10, 0xf1, 0x04, 0x86, - 0xc9, 0xdf, 0xa1, 0x4e, - 0xc0, 0x8d, 0x9e, 0xc0, 0x7f, 0x5c, 0x29, 0x0c, 0xf0, 0x16, 0x3c, 0xae, - 0xbd, 0x6f, 0xa0, 0x1c, - 0xfa, 0x75, 0xe0, 0xfa, 0xaf, 0xe5, 0xcf, 0x47, 0x25, 0x36, 0x98, 0x3f, - 0xaa, 0x5b, 0x87, 0xb3, - 0xe5, 0x74, 0x46, 0xe5, 0x8b, 0x11, 0xa5, 0x2a, 0x4d, 0xcc, 0x82, 0xee, - 0xdc, 0x52, 0x76, 0xf3, - 0x2c, 0x11, 0x54, 0x2c, 0x21, 0x6f, 0x05, 0x72, 0x27, 0x81, 0x79, 0x5f, - 0x1a, 0x99, 0x3a, 0xca, - 0x29, 0x34, 0x08, 0x29, 0x9f, 0x38, 0xda, 0x56, 0xb2, 0xe3, 0xcd, 0x93, - 0xaf, 0x57, 0xdc, 0x9e, - 0xce, 0x3d, 0xd7, 0xce, 0x58, 0x60, 0x66, 0xd5, 0x1c, 0xc5, 0x07, 0x05, - 0xef, 0x16, 0xa9, 0x9b, - 0x7c, 0x04, 0xdd, 0x7c, 0x90, 0x56, 0x6b, 0x77, 0x63, 0x6e, 0x68, 0xc2, - 0x1b, 0x24, 0x42, 0xc3, - 0x07, 0x58, 0xc5, 0x07, 0xf2, 0x1e, 0xc6, 0x8d, 0x76, 0x88, 0xfc, 0xb4, - 0x29, 0xdd, 0xe5, 0xa2, - 0xb4, 0xbe, 0x62, 0xb4, 0x1c, 0xed, 0x26, 0x9a, 0x99, 0x56, 0xb7, 0x4f, - 0x93, 0x07, 0xee, 0x81, - 0x81, 0x29, 0xf8, 0x81, 0xcd, 0xad, 0x62, 0xbd, 0x30, 0xd0, 0x0c, 0x49, - 0x98, 0xa2, 0x20, 0xd2, - 0xa2, 0x57, 0x48, 0xa2, 0xed, 0x3b, 0xc5, 0xa3, 0x6b, 0xf7, 0x6a, 0x81, - 0x9e, 0xaa, 0xf3, 0xe4, - 0xf0, 0x3f, 0x58, 0xf0, 0x10, 0x4b, 0xb2, 0x0f, 0xcc, 0xf2, 0x33, 0x64, - 0x03, 0x04, 0x88, 0x1b, - 0xb6, 0xc3, 0xfb, 0xb6, 0x50, 0xa4, 0x3f, 0x33, 0x7a, 0xbc, 0xff, 0x37, - 0x0f, 0x14, 0xed, 0x77, - 0x43, 0xd9, 0xff, 0x43, 0xfe, 0xb8, 0x52, 0x18, 0x23, 0x2c, 0x78, 0x9f, - 0xb9, 0xde, 0x83, 0x38, - 0x67, 0xff, 0x8a, 0x67, 0x2c, 0x30, 0x33, 0x8b, 0x0e, 0x83, 0xe2, 0xe3, - 0x96, 0x0b, 0xb5, 0xac, - 0x59, 0xfd, 0x05, 0x59, 0x64, 0x1b, 0xe7, 0x51, 0xde, 0xb4, 0xd6, 0x82, - 0x7a, 0x19, 0x94, 0x2c, - 0xec, 0x9c, 0xca, 0xec, 0x5e, 0x33, 0x2c, 0x7e, 0xd7, 0x97, 0x45, 0xf1, - 0xa7, 0xf6, 0x9a, 0xd6, - 0x86, 0x71, 0x3d, 0x86, 0x3f, 0xb3, 0xa4, 0x30, 0x46, 0x58, 0xf0, 0xfd, - 0xb1, 0x7f, 0xc5, 0x70, - 0xf4, 0xc5, 0xa9, 0xf4, 0x88, 0xd9, 0x80, 0x9e, 0xc9, 0xe5, 0xa3, 0x94, - 0xf8, 0x22, 0x8e, 0x34, - 0xf6, 0xb8, 0x30, 0xf6, 0xc4, 0x90, 0x99, 0x37, 0x2a, 0x0f, 0xeb, 0xec, - 0x64, 0x31, 0x8d, 0xc2, - 0x5c, 0xd8, 0x59, 0x5c, 0xda, 0x4c, 0x38, 0x75, 0x4b, 0xd6, 0x62, 0x4e, - 0xcf, 0xd7, 0x72, 0x78, - 0x92, 0xe5, 0x8e, 0x92, 0x82, 0x2c, 0x5e, 0xa0, 0x57, 0x13, 0x65, 0x4b, - 0x20, 0xc1, 0xdb, 0xe3, - 0xa8, 0x1d, 0xf0, 0xa8, 0x52, 0x95, 0xb8, 0xeb, 0x82, 0x33, 0xc1, 0xda, - 0x37, 0xf5, 0xfc, 0x4c, - 0xcf, 0xe2, 0x7a, 0xcf, 0x7e, 0xa5, 0x8b, 0x60, 0x8c, 0xb0, 0x23, 0x39, - 0xa1, 0xfe, 0x49, 0xe0, - 0x2f, 0xb3, 0x60, 0x2f, 0x4b, 0xe3, 0xf1, 0x6e, 0x54, 0x1e, 0x15, 0x1b, - 0xc8, 0x62, 0xd9, 0x47, - 0xe9, 0xb9, 0x96, 0xe9, 0xe0, 0x64, 0xf3, 0x5a, 0x42, 0xf5, 0xf1, 0x3d, - 0x12, 0x38, 0x7c, 0x82, - 0x54, 0xef, 0x78, 0x54, 0x29, 0xab, 0x5c, 0x94, 0x41, 0xf8, 0x81, 0x6d, - 0xfa, 0x9b, 0x7e, 0x26, - 0x8f, 0x99, 0xb1, 0x8f, 0xea, 0x91, 0x2d, 0x64, 0xdc, 0x03, 0x37, 0xe2, - 0xca, 0xdb, 0x29, 0x55, - 0xaa, 0x60, 0x69, 0xaa, 0x1e, 0xdc, 0xa1, 0x42, 0x61, 0xd9, 0x89, 0xa2, - 0xab, 0xe6, 0xff, 0xba, - 0x24, 0x26, 0x75, 0x24, 0xd2, 0x88, 0x61, 0x93, 0x2d, 0xaf, 0x9a, 0x7c, - 0x2f, 0xd5, 0x36, 0x94, - 0x71, 0x16, 0xa0, 0x71, 0xdd, 0xe6, 0xd0, 0xb2, 0xfc, 0x22, 0x3f, 0x2d, - 0x9b, 0xa6, 0xa8, 0xc9, - 0x65, 0x82, 0x13, 0x65, 0x60, 0x79, 0x2a, 0x22, 0xed, 0x69, 0xaa, 0x9b, - 0x0a, 0x18, 0xb6, 0x5a, - 0x99, 0x70, 0x9b, 0x99, 0x1b, 0x47, 0xce, 0x5d, 0x2e, 0xa2, 0xea, 0x2c, - 0xc7, 0x76, 0x34, 0x30, - 0x96, 0x1f, 0x7f, 0x96, 0x1a, 0xbe, 0x6c, 0x31, 0x52, 0x04, 0xf5, 0xbb, - 0xdb, 0xe7, 0xdd, 0xcc, - 0x9c, 0x55, 0xc7, 0x9c, 0xa5, 0x10, 0x11, 0x79, 0xbb, 0xc0, 0x5e, 0xe0, - 0x72, 0xb8, 0xd2, 0x64, - 0xdd, 0xf1, 0xa1, 0xdd, 0x17, 0xe1, 0x5a, 0xc8, 0x7b, 0x06, 0x6e, 0x07, - 0x57, 0x75, 0x52, 0xaa, - 0x5a, 0x5f, 0x31, 0x5a, 0x0e, 0x97, 0x13, 0x4d, 0xad, 0x2b, 0xba, 0xc6, - 0xa8, 0xe2, 0x77, 0xa1, - 0x80, 0xf6, 0x55, 0x80, 0xeb, 0x68, 0x8f, 0x08, 0xa0, 0xa5, 0x28, 0x75, - 0xd6, 0x4a, 0xc0, 0xa9, - 0xe8, 0x66, 0x3b, 0xe8, 0xc6, 0xa1, 0x1e, 0xef, 0xd2, 0x80, 0xd5, 0x01, - 0x5c, 0xd0, 0x9c, 0xf9, - 0x50, 0x15, 0x89, 0x50, 0xb1, 0x39, 0x6e, 0x05, 0x44, 0xef, 0x11, 0x9d, - 0x01, 0xbd, 0x78, 0x09, - 0x57, 0x4d, 0x4c, 0x57, 0x43, 0x27, 0xa8, 0x88, 0x32, 0x67, 0xed, 0x29, - 0x28, 0x60, 0x9d, 0xab, - 0xe4, 0xab, 0xeb, 0xe4, 0xad, 0xd4, 0x48, 0x9f, 0xdd, 0xb9, 0xa6, 0xd2, - 0x92, 0xba, 0x96, 0x88, - 0x1e, 0xde, 0x0b, 0x1e, 0x02, 0x31, 0x87, 0xd8, 0xf8, 0x8f, 0x3e, 0xed, - 0x38, 0xe1, 0x11, 0x3b, - 0x84, 0x0c, 0xa4, 0x84, 0x73, 0xfa, 0xbd, 0x99, 0xa5, 0xb2, 0xb8, 0x85, - 0x2d, 0x6c, 0xc6, 0x86, - 0x15, 0x4b, 0x1e, 0x15, 0x9b, 0x5a, 0x17, 0x25, 0x81, 0x3e, 0xb1, 0x8a, - 0xdf, 0x56, 0xfe, 0xe8, - 0x41, 0xa4, 0x66, 0x41, 0xb2, 0xf1, 0x4b, 0xb1, 0xc0, 0xc6, 0x30, 0xe7, - 0x25, 0xcd, 0x80, 0xce, - 0x19, 0x86, 0xce, 0x19, 0xf0, 0x2f, 0x41, 0x55, 0x8e, 0x07, 0xc2, 0x59, - 0x11, 0x3c, 0xf4, 0x99, - 0x26, 0x5b, 0xec, 0x26, 0x9e, 0xc1, 0x78, 0x3a, 0xce, 0x45, 0xd2, 0x04, - 0xb3, 0xc6, 0x35, 0x62, - 0xa0, 0x2a, 0xd1, 0xa0, 0xa1, 0x72, 0xdc, 0x0a, 0x88, 0x1d, 0x22, 0xf9, - 0x02, 0xb9, 0xf0, 0x12, - 0x0b, 0x95, 0x15, 0x0b, 0x99, 0x6b, 0x90, 0xfd, 0x79, 0xb1, 0x8f, 0x67, - 0xe7, 0xb7, 0xef, 0xd3, - 0x22, 0xa1, 0x1d, 0x22, 0x06, 0x53, 0x4a, 0xab, 0xcb, 0x52, 0x42, 0xf4, - 0x48, 0xe0, 0x33, 0x4d, - 0x9d, 0x8a, 0x6a, 0x9d, 0x83, 0xd5, 0xfc, 0xcc, 0x2b, 0xb5, 0x7a, 0xdc, - 0x3c, 0x50, 0x32, 0x1f, - 0xf5, 0x1a, 0x04, 0xf5, 0xae, 0x1c, 0x6d, 0x2b, 0x59, 0x90, 0x87, 0xa8, - 0xb6, 0xca, 0x6e, 0x4f, - 0xda, 0xa9, 0x64, 0xda, 0xe5, 0xff, 0x9c, 0x45, 0x0d, 0x8e, 0x92, 0xb3, - 0x7e, 0xa8, 0xb7, 0x08, - 0x37, 0xea, 0x03, 0x37, 0x9d, 0x09, 0x5d, 0x8e, 0x4a, 0x6c, 0xf3, 0x7e, - 0x97, 0xb6, 0xcd, 0xa5, - 0xa7, 0x72, 0x14, 0xa7, 0x53, 0x6c, 0x1a, 0x87, 0xfe, 0x95, 0xde, 0x4d, - 0x2b, 0x64, 0x15, 0xb0, - 0xcd, 0x9f, 0xe3, 0xcd, 0x32, 0xec, 0x92, 0xc9, 0x6f, 0x5a, 0x6b, 0x41, - 0x3d, 0xed, 0x4a, 0x16, - 0x63, 0x05, 0x7b, 0x63, 0xb4, 0xa2, 0x01, 0x1a, 0x0b, 0x94, 0x72, 0x13, - 0x6d, 0x2d, 0xb3, 0x83, - 0xbc, 0x89, 0x43, 0xbc, 0xef, 0x0a, 0x42, 0x7b, 0x93, 0x78, 0x54, 0x6c, - 0xa6, 0x4b, 0xe2, 0xdf, - 0xe2, 0x2c, 0x83, 0xe2, 0x79, 0x0f, 0x63, 0xa7, 0x3b, 0x44, 0x7e, 0x5a, - 0xf5, 0x8f, 0x93, 0x51, - 0xd6, 0x64, 0xb4, 0xd6, 0x8e, 0x8a, 0xca, 0x35, 0x02, 0xb7, 0xe1, 0x60, - 0xb0, 0xc2, 0xbd, 0x79, - 0x94, 0x62, 0xe6, 0x94, 0x56, 0xf7, 0x75, 0x98, 0xb1, 0xee, 0xbd, 0xc3, - 0x47, 0xf4, 0xde, 0x3a, - 0xa4, 0xd0, 0x20, 0xa4, 0x39, 0xe0, 0xee, 0x9b, 0x8d, 0x0a, 0xb2, 0x09, - 0xf9, 0x9f, 0xf6, 0x3d, - 0x88, 0xc1, 0x74, 0x88, 0x18, 0x8f, 0xeb, 0xe9, 0xaa, 0x8b, 0xcb, 0x56, - 0xe3, 0x06, 0xcc, 0xf7, - 0x62, 0xda, 0xd6, 0x62, 0x92, 0x67, 0xec, 0xaf, 0x9b, 0xe1, 0x56, 0x2f, - 0x23, 0xc5, 0x53, 0xf8, - 0x2e, 0x6c, 0xcd, 0x2e, 0x6d, 0x26, 0x1c, 0xdb, 0xc4, 0x6b, 0x31, 0x27, - 0x86, 0x8a, 0x39, 0x3c, - 0xc8, 0xba, 0xbf, 0xc8, 0x8c, 0xbb, 0x4d, 0xed, 0xfa, 0x38, 0xdf, 0x8d, - 0x88, 0x23, 0xac, 0x42, - 0x18, 0x59, 0x63, 0x18, 0xd6, 0xea, 0xac, 0xe0, 0x1e, 0x72, 0xe6, 0x65, - 0x5f, 0xd4, 0x14, 0xe2, - 0x06, 0x87, 0x68, 0x06, 0xd4, 0xdb, 0x2b, 0x38, 0xe6, 0xfd, 0xd8, 0x88, - 0x67, 0x35, 0x05, 0xd9, - 0x16, 0xe9, 0x2a, 0x16, 0xf1, 0xd6, 0xe3, 0x39, 0xf2, 0xa1, 0xdd, 0xce, - 0x0d, 0xad, 0x1d, 0x65, - 0x13, 0xcc, 0x76, 0x13, 0x4f, 0x81, 0x3c, 0x1d, 0x67, 0xc3, 0x69, 0x02, - 0xb8, 0x63, 0xfb, 0x31, - 0xd2, 0x9e, 0x45, 0xd2, 0x16, 0x18, 0xf8, 0xa4, 0x07, 0xa0, 0x71, 0x90, - 0x4b, 0xe4, 0xbb, 0x56, - 0x5b, 0x80, 0x9c, 0x5b, 0x28, 0x52, 0xfe, 0xf8, 0x3d, 0x5e, 0x9e, 0xfa, - 0xe6, 0x0a, 0x97, 0xda, - 0xff, 0x50, 0xbc, 0xff, 0x11, 0xb2, 0x10, 0x63, 0xb0, 0x54, 0x2c, 0xf3, - 0x1f, 0x95, 0x61, 0xe7, - 0xbb, 0xd1, 0x86, 0xbb, 0x1d, 0x14, 0x84, 0xf6, 0xe5, 0xf0, 0xa8, 0xd8, - 0x8f, 0x96, 0x07, 0x7d, - 0xc2, 0xf0, 0x07, 0xc2, 0x33, 0x15, 0x30, 0xa5, 0x13, 0xfc, 0x74, 0xd6, - 0x21, 0x7c, 0xa3, 0xea, - 0xb9, 0xac, 0x1f, 0xb9, 0x51, 0x5d, 0x9d, 0x5f, 0x06, 0x1a, 0xe0, 0xa0, - 0x13, 0x85, 0x04, 0x8b, - 0xbf, 0x2b, 0x77, 0xbf, 0x85, 0x86, 0xb6, 0x67, 0xe0, 0xe7, 0x38, 0x28, - 0x74, 0xb0, 0x01, 0x52, - 0xef, 0x3e, 0xfe, 0xef, 0x34, 0xbf, 0xd8, 0x62, 0xa4, 0x08, 0x29, 0xb5, - 0x75, 0x0d, 0x79, 0x5b, - 0xdc, 0x2e, 0x0c, 0xdc, 0x31, 0x24, 0xb7, 0x7d, 0xeb, 0x73, 0x4a, 0x3b, - 0x19, 0x9d, 0xb2, 0xd1, - 0x1b, 0xfb, 0x57, 0x1b, 0xbc, 0x66, 0x58, 0xfc, 0x6d, 0xed, 0x8a, 0x21, - 0x8d, 0x2f, 0xf7, 0x6f, - 0x27, 0x84, 0x41, 0x27, 0xb8, 0x04, 0x95, 0x8f, 0x5e, 0x30, 0xf6, 0x38, - 0xfd, 0x2e, 0xd5, 0x19, - 0x3e, 0x02, 0x8f, 0x3e, 0x48, 0x2b, 0xd4, 0xda, 0xd0, 0x37, 0x34, 0x61, - 0xec, 0x12, 0x21, 0x80, - 0xe7, 0x09, 0xdf, 0xe7, 0xc7, 0x58, 0xbc, 0x83, 0xae, 0x26, 0xca, 0x96, - 0x40, 0x41, 0x75, 0x05, - 0xb0, 0x44, 0x93, 0xb0, 0x84, 0x7f, 0x14, 0x0b, 0x9c, 0x41, 0x27, 0xbf, - 0x68, 0x21, 0xe8, 0xae, - 0x69, 0x4f, 0xc3, 0x69, 0x0b, 0x0c, 0x7c, 0x52, 0xe2, 0x50, 0xd9, 0x48, - 0xc4, 0x72, 0xbc, 0x2b, - 0x21, 0x03, 0x29, 0x21, 0x6c, 0xdf, 0xbe, 0xb7, 0xb8, 0xcd, 0x2e, 0xb0, - 0x9a, 0x1b, 0xd0, 0xc0, - 0x0f, 0x6f, 0xe4, 0x0f, 0x01, 0xf9, 0xa2, 0x6c, 0x7c, 0xa6, 0x1f, 0x97, - 0x1c, 0x91, 0xe9, 0xfc, - 0xf1, 0xe0, 0xf5, 0xf1, 0x36, 0x8e, 0x5f, 0xba, 0x5c, 0x87, 0x17, 0x58, - 0x4d, 0xec, 0x68, 0x60, - 0x1a, 0x24, 0xfa, 0x1a, 0x9a, 0xa3, 0xb5, 0x49, 0xfd, 0x98, 0xae, 0x1d, - 0xc3, 0xc7, 0x17, 0x14, - 0x0d, 0x12, 0x7d, 0x0d, 0x4d, 0xb0, 0xbb, 0xc5, 0x9f, 0x4c, 0x57, 0xef, - 0x80, 0x82, 0xea, 0x0a, - 0xa6, 0xad, 0xb9, 0xa6, 0x75, 0xa9, 0xf7, 0x32, 0x6e, 0xe0, 0xfa, 0x71, - 0x65, 0x8c, 0xf5, 0xcb, - 0x02, 0x7d, 0x99, 0x02, 0x4c, 0x49, 0x19, 0xa9, 0xe3, 0xea, 0x48, 0x78, - 0x9c, 0x13, 0x03, 0xf6, - 0x6a, 0xed, 0xf7, 0x6a, 0x61, 0x80, 0x88, 0x4e, 0x91, 0xcf, 0xb5, 0x0c, - 0x16, 0x89, 0x5f, 0xa6, - 0x08, 0x37, 0x21, 0x08, 0xf3, 0xe7, 0x64, 0xe1, 0x0a, 0x2e, 0xe3, 0x23, - 0x35, 0x4c, 0x0c, 0x5e, - 0x4c, 0xb6, 0x1b, 0x4c, 0xff, 0x41, 0xf0, 0x74, 0x5f, 0x8a, 0x67, 0x08, - 0xa5, 0x4f, 0x6a, 0xc4, - 0x49, 0x93, 0x47, 0x49, 0x41, 0x16, 0x2f, 0x50, 0xca, 0xe8, 0xd3, 0xc4, - 0x10, 0x81, 0x8c, 0x90, - 0x91, 0x47, 0xba, 0x91, 0xe8, 0xa0, 0xaa, 0xbc, 0x24, 0x8c, 0x09, 0x0f, - 0xf2, 0x3a, 0x38, 0x6e, - 0xe1, 0x8e, 0xb7, 0xe1, 0x13, 0x83, 0x97, 0xbb, 0x48, 0xdb, 0x12, 0x1e, - 0x27, 0x74, 0x70, 0xdc, - 0x8b, 0x63, 0x40, 0x8b, 0x72, 0x03, 0x1f, 0xf5, 0xd9, 0x14, 0xa7, 0x12, - 0x31, 0xfd, 0x2f, 0x7a, - 0x14, 0x94, 0xb3, 0x14, 0xbd, 0x9f, 0xfa, 0x90, 0x11, 0x4b, 0x95, 0xb6, - 0x91, 0xbe, 0x1e, 0x93, - 0x95, 0xbd, 0x4b, 0x95, 0x70, 0x32, 0x98, 0x2d, 0x21, 0x9b, 0x99, 0xff, - 0x09, 0x1c, 0x3e, 0x41, - 0xb8, 0x73, 0xb2, 0xb8, 0x77, 0x98, 0x70, 0xea, 0x96, 0x6f, 0xc4, 0x9c, - 0x5d, 0x6d, 0xe4, 0xf0, - 0x9e, 0x28, 0x5e, 0x9e, 0xe9, 0x59, 0x08, 0xd0, 0x58, 0x2a, 0x16, 0x98, - 0xee, 0xab, 0xd1, 0x92, - 0xeb, 0xc4, 0x0f, 0xeb, 0xac, 0x2d, 0xea, 0xf3, 0xa1, 0x1f, 0xb9, 0x45, - 0x8e, 0x2b, 0x7f, 0x74, - 0x6e, 0x17, 0x06, 0x6e, 0xf9, 0x12, 0xba, 0xdf, 0x94, 0xd8, 0x25, 0xfc, - 0xed, 0xaf, 0x59, 0x89, - 0xc3, 0x2f, 0xaa, 0xc3, 0x15, 0xd0, 0xdd, 0x10, 0x83, 0x89, 0x50, 0xea, - 0x6f, 0x94, 0x43, 0x91, - 0x98, 0xaf, 0x36, 0x98, 0x3d, 0x82, 0x23, 0xe8, 0xbe, 0xd7, 0xce, 0x10, - 0x89, 0x9e, 0xd4, 0x4b, - 0x70, 0xc9, 0x0d, 0x70, 0xfb, 0x23, 0x3d, 0x07, 0x6c, 0x57, 0x1b, 0x11, - 0xd5, 0x4e, 0x48, 0xb2, - 0x72, 0xb4, 0x94, 0x72, 0xb7, 0x6a, 0x24, 0xae, 0x8f, 0xbd, 0x53, 0x69, - 0x49, 0x5d, 0x4b, 0x44, - 0x04, 0xfa, 0xf1, 0x04, 0x98, 0x92, 0x32, 0x91, 0x05, 0x17, 0x90, 0xf0, - 0xfb, 0x26, 0x06, 0x2f, - 0xed, 0x43, 0x67, 0xed, 0x78, 0xf6, 0xc1, 0xcb, 0x47, 0xe2, 0x61, 0xcd, - 0xe9, 0x1e, 0x7a, 0xad, - 0xf2, 0x42, 0xc1, 0xf2, 0x5c, 0x02, 0xab, 0xa6, 0x2f, 0x18, 0x7b, 0x1c, - 0x9f, 0x17, 0x8b, 0xed, - 0x47, 0x23, 0x0e, 0x47, 0x66, 0x2a, 0x60, 0x89, 0x26, 0x3b, 0xe8, 0x6f, - 0x42, 0xf8, 0x85, 0x17, - 0x45, 0x5e, 0x97, 0x45, 0x2a, 0x63, 0x79, 0x20, 0xc5, 0xd1, 0xa0, 0x17, - 0xde, 0xeb, 0x86, 0xe1, - 0x9a, 0xd2, 0xaf, 0x9a, 0x71, 0xcb, 0x3a, 0x41, 0x5d, 0x3d, 0x86, 0x68, - 0x15, 0x8d, 0xd7, 0xbd, - 0xd5, 0xc6, 0x80, 0xd5, 0xe4, 0x06, 0x3e, 0x29, 0x71, 0x28, 0x8d, 0x24, - 0x62, 0x39, 0x5e, 0xf4, - 0xd9, 0x0b, 0x50, 0xd9, 0x8f, 0x73, 0x68, 0x59, 0x7e, 0x11, 0xfe, 0xf7, - 0xac, 0x53, 0x54, 0x85, - 0x8d, 0xe4, 0x28, 0x8d, 0xa6, 0xd8, 0x34, 0xcd, 0x3f, 0xe9, 0x7f, 0x9a, - 0x56, 0xc8, 0x2a, 0xa3, - 0x3b, 0x27, 0xd3, 0x3b, 0xf6, 0x7c, 0x0b, 0xfe, 0x45, 0x55, 0x80, 0xad, - 0x59, 0xdc, 0xc7, 0xd4, - 0x6f, 0xc8, 0xab, 0x6f, 0xdf, 0xd7, 0x57, 0x6a, 0x04, 0xad, 0x01, 0xc0, - 0xa3, 0x47, 0xb9, 0xf2, - 0x4e, 0xcb, 0x82, 0x4e, 0xb3, 0x08, 0xe9, 0xdd, 0xbc, 0x60, 0x2f, 0x70, - 0x39, 0x5c, 0x69, 0x32, - 0x34, 0x48, 0x37, 0x34, 0xf7, 0x85, 0xa9, 0x92, 0x39, 0xf3, 0x9f, 0x3a, - 0x45, 0x4d, 0x2e, 0x28, - 0x74, 0x33, 0xfc, 0x74, 0x63, 0xb1, 0x0f, 0x96, 0x69, 0x40, 0x8b, 0xe1, - 0x2e, 0x68, 0x4e, 0x9d, - 0x9f, 0xf7, 0xf3, 0x9f, 0xcf, 0x9c, 0xe5, 0x65, 0xc8, 0x5f, 0x32, 0xa4, - 0xa0, 0x43, 0x31, 0xe9, - 0x7d, 0xdb, 0x70, 0x7d, 0xb6, 0x93, 0x86, 0xc2, 0xf3, 0x1b, 0x4c, 0xfe, - 0x55, 0xcc, 0xa2, 0xb8, - 0x61, 0x78, 0xe2, 0x61, 0xf8, 0xeb, 0x18, 0xb3, 0xe8, 0x7e, 0x3a, 0x6b, - 0xf1, 0x3e, 0xb0, 0x75, - 0x31, 0x6d, 0x6b, 0x31, 0x49, 0xd2, 0x76, 0xb6, 0xac, 0x91, 0x2b, 0xf6, - 0xf0, 0x83, 0xc8, 0x7c, - 0x09, 0xe8, 0x8c, 0x09, 0xd5, 0x22, 0x89, 0x54, 0x9a, 0x5b, 0xc7, 0x1f, - 0x7b, 0xa4, 0xec, 0x25, - 0x12, 0x13, 0xdb, 0x12, 0x69, 0x44, 0xd1, 0xa8, 0xf7, 0xb6, 0x4d, 0x3e, - 0xf6, 0x8b, 0x1b, 0x4a, - 0x64, 0x5d, 0xbe, 0x64, 0x46, 0xbc, 0xc7, 0x97, 0x7d, 0x1c, 0x8e, 0xa7, - 0x44, 0xf0, 0x56, 0x21, - 0xd7, 0xbb, 0x19, 0xd7, 0xa8, 0x4f, 0x27, 0x80, 0x92, 0xc2, 0xc5, 0x5c, - 0xfe, 0x2a, 0x5d, 0x02, - 0x93, 0x3a, 0x23, 0x93, 0xa4, 0xe9, 0xb3, 0x15, 0xc7, 0x66, 0x41, 0x77, - 0x6e, 0x29, 0x3b, 0x98, - 0x3a, 0xf8, 0x7e, 0x3a, 0xd0, 0xb9, 0xe6, 0x4b, 0xd5, 0x20, 0xa4, 0x91, - 0x17, 0x34, 0x27, 0xaf, - 0xa3, 0x88, 0xe5, 0xa3, 0xcb, 0xfe, 0x28, 0x16, 0xfb, 0x82, 0x4e, 0xbd, - 0xd0, 0x42, 0x13, 0x9f, - 0xad, 0x38, 0xac, 0xad, 0xec, 0xc2, 0x67, 0xcf, 0x17, 0x51, 0x75, 0x16, - 0x82, 0x3b, 0x1a, 0x18, - 0x1c, 0xa3, 0x92, 0x1c, 0x4e, 0x78, 0x9e, 0x71, 0x1b, 0x65, 0x76, 0x95, - 0xa4, 0xf2, 0x12, 0xcd, - 0x7e, 0x79, 0x44, 0x7e, 0xdc, 0x1f, 0x72, 0xde, 0x80, 0x84, 0x20, 0xba, - 0x87, 0x37, 0x41, 0x35, - 0x76, 0x4e, 0x65, 0x76, 0x2f, 0xf8, 0x16, 0x3f, 0x8a, 0xaa, 0xc3, 0x99, - 0xb2, 0x7b, 0x4d, 0x6b, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x33, 0x10, 0xf2, 0x33, 0x05, 0x9b, 0x6f, 0x1f, 0x4f, 0x7b, 0x63, 0x8e, - 0x6c, 0x90, 0xcb, 0x8a, - 0xf7, 0x67, 0x9d, 0xf7, 0xe2, 0x55, 0x74, 0x82, 0xba, 0x7a, 0xcf, 0xd0, - 0x2a, 0xd9, 0x6d, 0xb9, - 0x28, 0xeb, 0xa5, 0x28, 0xb9, 0xfd, 0x37, 0xe3, 0x22, 0x96, 0xe9, 0xaf, - 0xe1, 0xbf, 0x3c, 0xe5, - 0x23, 0x7e, 0xb0, 0x23, 0x20, 0x96, 0xa7, 0x1e, 0x5b, 0x27, 0x66, 0xc8, - 0x06, 0x08, 0xd3, 0x36, - 0xb2, 0x39, 0x0a, 0xb2, 0xc8, 0x36, 0x0d, 0xa2, 0x7f, 0xab, 0x6f, 0xc7, - 0xf4, 0x32, 0xeb, 0x58, - 0xbe, 0xf4, 0xda, 0xbe, 0xa3, 0x43, 0x5b, 0xd2, 0x70, 0x92, 0x1c, 0x14, - 0x3a, 0x58, 0xe1, 0x29, - 0x42, 0x06, 0x52, 0x42, 0xd8, 0x7d, 0xbf, 0xad, 0xb3, 0x59, 0x5c, 0xa3, - 0xf7, 0x36, 0x63, 0x43, - 0x11, 0xb1, 0xef, 0x11, 0x03, 0xc8, 0x25, 0xb4, 0x84, 0x29, 0x21, 0x7a, - 0x24, 0x70, 0xf8, 0xc7, - 0xc4, 0x77, 0x6f, 0xc4, 0xe7, 0xce, 0x1b, 0x9d, 0xf5, 0x01, 0xac, 0x5e, - 0x46, 0x49, 0xa6, 0x33, - 0x5f, 0x7a, 0x6d, 0x5f, 0xb0, 0xc0, 0xcc, 0x69, 0x38, 0x49, 0x0e, 0x0a, - 0x1d, 0x2c, 0x91, 0xf5, - 0x30, 0xb2, 0xc6, 0x30, 0x6f, 0x17, 0x9b, 0x03, 0x3c, 0xe4, 0x0f, 0xca, - 0xbe, 0x6b, 0x28, 0x07, - 0x01, 0xdf, 0xad, 0x01, 0x26, 0xc5, 0xed, 0xb5, 0x90, 0x75, 0x24, 0x3c, - 0x4e, 0xe8, 0xe0, 0x7b, - 0xd8, 0xd4, 0xfd, 0xd8, 0xa9, 0xb6, 0x85, 0xec, 0xee, 0x64, 0xda, 0xcb, - 0xe2, 0xbb, 0xb4, 0xfe, - 0x05, 0x25, 0x5c, 0x05, 0xbe, 0x57, 0xdf, 0x24, 0x95, 0x62, 0xb4, 0xcc, - 0xb5, 0xce, 0xe6, 0x54, - 0x32, 0xcf, 0x5f, 0x32, 0x23, 0x5e, 0x82, 0xaa, 0xdf, 0x0e, 0x47, 0xb2, - 0x22, 0x78, 0x2b, 0xf1, - 0xdf, 0x8c, 0x38, 0xdf, 0x5b, 0xa8, 0x43, 0x61, 0x98, 0xec, 0x26, 0x7f, - 0xcb, 0x66, 0x51, 0x5c, - 0xba, 0x0e, 0x2b, 0xba, 0x3b, 0xd1, 0x69, 0x43, 0x75, 0x85, 0x8c, 0xe4, - 0xc1, 0x7e, 0xe7, 0x06, - 0x8e, 0x46, 0x1c, 0x8e, 0xcc, 0x54, 0xc0, 0xd1, 0x4c, 0x76, 0x13, 0xde, - 0x84, 0x33, 0xc9, 0x2e, - 0x73, 0x6b, 0x39, 0x73, 0x91, 0xaf, 0xc9, 0x1b, 0x1f, 0xc8, 0x77, 0x55, - 0x07, 0xb5, 0xab, 0x3f, - 0xfd, 0x2d, 0x25, 0xfd, 0x5d, 0xfb, 0x09, 0xca, 0x53, 0xbe, 0x64, 0x8b, - 0x83, 0x86, 0x62, 0x11, - 0x8c, 0x3b, 0x85, 0x8c, 0x80, 0x1d, 0xd9, 0x78, 0xaf, 0x9c, 0x5b, 0xa6, - 0x18, 0x20, 0xca, 0xd8, - 0xb3, 0xe6, 0xa7, 0xb3, 0xee, 0xf3, 0xe0, 0x17, 0xef, 0xde, 0x4b, 0xfb, - 0xba, 0xda, 0x0b, 0x23, - 0x56, 0x92, 0xe1, 0x56, 0x65, 0xe2, 0x45, 0x3d, 0xa2, 0x12, 0xc9, 0x15, - 0x66, 0x88, 0x7d, 0xd0, - 0x2b, 0x49, 0x91, 0x2b, 0xd3, 0x71, 0xc3, 0xff, 0x51, 0x09, 0x85, 0xeb, - 0x33, 0x44, 0xdf, 0x68, - 0x82, 0x8b, 0xcc, 0x82, 0xa7, 0x21, 0x96, 0xa1, 0x43, 0x4f, 0x60, 0x0d, - 0x4a, 0x59, 0xc3, 0x5f, - 0x6b, 0x32, 0x5a, 0x6b, 0x47, 0x45, 0x65, 0xfb, 0x01, 0xba, 0x91, 0x30, - 0x58, 0x61, 0xbf, 0xdd, - 0x87, 0xae, 0x90, 0x87, 0x19, 0x76, 0x49, 0x85, 0xd6, 0x2d, 0xd4, 0xc1, - 0xff, 0x97, 0x25, 0x0b, - 0xae, 0x9a, 0x98, 0xae, 0x86, 0x4e, 0x93, 0xd3, 0x64, 0xce, 0x19, 0x52, - 0x50, 0xc0, 0xf9, 0x95, - 0x46, 0xfc, 0xa3, 0x46, 0x40, 0xef, 0x8d, 0x3c, 0xb6, 0x4e, 0xcc, 0x53, - 0x0c, 0x10, 0x65, 0x6c, - 0xa9, 0xc2, 0x5d, 0xa9, 0x74, 0x50, 0x55, 0x5e, 0x12, 0x46, 0xe5, 0xe6, - 0x79, 0x1d, 0x1c, 0x37, - 0xe0, 0x51, 0x1a, 0xe0, 0x35, 0x46, 0x7a, 0x0e, 0xd8, 0xae, 0x36, 0x22, - 0x69, 0x9c, 0x90, 0xa7, - 0xc6, 0x0a, 0xf6, 0xc6, 0xab, 0x87, 0x02, 0x34, 0x16, 0xeb, 0xe4, 0x26, - 0xda, 0x5a, 0xa5, 0xc5, - 0xaf, 0x45, 0x35, 0xaf, 0xa0, 0x8b, 0x7e, 0x66, 0xf4, 0xbb, 0x3d, 0x6e, - 0x1e, 0x28, 0x19, 0xee, - 0xb1, 0x9b, 0x3e, 0xb1, 0xa2, 0xba, 0xf9, 0xbe, 0x0c, 0x34, 0x03, 0x83, - 0x26, 0xc9, 0x08, 0xd5, - 0x0e, 0xb0, 0x49, 0x0e, 0x27, 0x3c, 0x4f, 0xd9, 0xec, 0xd3, 0x3b, 0xab, - 0x52, 0x79, 0x09, 0x87, - 0x89, 0x1e, 0xd9, 0x89, 0x3e, 0x4a, 0x06, 0x5c, 0x3a, 0xfe, 0xef, 0x6a, - 0xad, 0xee, 0x2c, 0x8c, - 0x79, 0x21, 0x81, 0x79, 0x2e, 0x01, 0xb4, 0x53, 0xf6, 0x0c, 0xdc, 0x0e, - 0xae, 0xea, 0xa4, 0x97, - 0xd3, 0x41, 0xe8, 0xd3, 0x30, 0xdd, 0x15, 0x11, 0x97, 0xd5, 0x55, 0xac, - 0x05, 0x0c, 0x5b, 0x2d, - 0x2d, 0xce, 0xf9, 0x2d, 0x07, 0xaa, 0xe8, 0xc7, 0xb7, 0xf4, 0x5d, 0x63, - 0x54, 0x71, 0xda, 0xb1, - 0xc9, 0x65, 0x12, 0xc9, 0xaa, 0x7e, 0xa0, 0x58, 0x6a, 0x4d, 0xfb, 0xb1, - 0xc6, 0xcb, 0x4c, 0x39, - 0x0a, 0x4a, 0xb8, 0x0a, 0xbf, 0xae, 0x7d, 0x48, 0xe9, 0xc4, 0xab, 0x5b, - 0xa9, 0x5f, 0x0f, 0xa8, - 0xdb, 0x76, 0xc9, 0xdb, 0xc3, 0x3a, 0x71, 0xf0, 0x9d, 0xfb, 0xb6, 0x8f, - 0x30, 0x40, 0x57, 0x73, - 0x7b, 0x5c, 0x18, 0x7b, 0x62, 0x48, 0xad, 0xfa, 0x15, 0xe6, 0x94, 0x76, - 0x32, 0xf9, 0xa7, 0x61, - 0xde, 0x53, 0x95, 0xde, 0x7d, 0x6d, 0xae, 0xd4, 0x08, 0x99, 0x02, 0x43, - 0x85, 0x8e, 0xb1, 0x27, - 0x48, 0x4c, 0xea, 0x48, 0x67, 0xd3, 0xc2, 0xe5, 0x5a, 0x9d, 0xf7, 0xf8, - 0x5e, 0x69, 0x6c, 0xeb, - 0xe3, 0xf3, 0x2e, 0xe3, 0x5f, 0xca, 0x8e, 0x12, 0xab, 0x31, 0x5a, 0x66, - 0xbb, 0x67, 0x73, 0x2a, - 0x4b, 0xee, 0xde, 0x4b, 0x0d, 0x5f, 0x36, 0xf9, 0x29, 0x02, 0x9b, 0xbc, - 0x8c, 0x92, 0x8f, 0x66, - 0x35, 0x97, 0x9a, 0x35, 0xd1, 0x40, 0x44, 0x27, 0xa9, 0x86, 0xbb, 0x06, - 0x0b, 0xa5, 0xce, 0x53, - 0x8a, 0xbc, 0xed, 0x8a, 0x54, 0xc6, 0xf2, 0x40, 0x49, 0x61, 0x83, 0x2e, - 0x7f, 0x15, 0xcf, 0x01, - 0xfb, 0xaa, 0x4d, 0xfb, 0x89, 0x20, 0x22, 0xf2, 0xb5, 0x43, 0xbc, 0x03, - 0xe4, 0xb3, 0x67, 0xc8, - 0x85, 0xd3, 0x09, 0x85, 0x55, 0x3f, 0x50, 0x2c, 0x35, 0xc7, 0x9c, 0xb9, - 0x63, 0x84, 0x26, 0xfd, - 0xcb, 0x18, 0x8b, 0xcb, 0xe6, 0x37, 0xb9, 0xf1, 0x89, 0xa7, 0xb3, 0xc9, - 0x5a, 0xd8, 0x4f, 0xcf, - 0xb7, 0x1c, 0x56, 0xb7, 0x76, 0x61, 0xd2, 0x86, 0xea, 0xc9, 0xdb, 0x0b, - 0x41, 0xfc, 0x0d, 0x0c, - 0x2a, 0x96, 0x3c, 0x2a, 0xf5, 0xb4, 0x2e, 0x4a, 0xc1, 0x7c, 0xa1, 0xd7, - 0x7d, 0xac, 0x3f, 0x13, - 0xab, 0xbf, 0xc4, 0xab, 0x38, 0x19, 0x4c, 0xf7, 0xf1, 0xac, 0xad, 0x9e, - 0xe5, 0x0e, 0x1f, 0xc1, - 0x3f, 0xdd, 0x22, 0x3f, 0x6e, 0xee, 0x39, 0x6f, 0x40, 0x42, 0x10, 0x5d, - 0xa2, 0xfa, 0xc1, 0xfb, - 0x39, 0x5a, 0x4a, 0x39, 0xba, 0x35, 0x12, 0x57, 0xa6, 0xbf, 0xc8, 0xd5, - 0xc5, 0xcf, 0xc4, 0x22, - 0xea, 0x1b, 0xa2, 0xea, 0x8a, 0xe8, 0x07, 0x46, 0x31, 0x6a, 0x9d, 0x79, - 0xc0, 0xc3, 0x9f, 0x0f, - 0xb5, 0x61, 0xcf, 0xb5, 0x3a, 0x28, 0xcb, 0x2f, 0x09, 0x23, 0x93, 0x73, - 0xdd, 0xef, 0x0e, 0xfa, - 0x51, 0xca, 0x24, 0x51, 0x97, 0xfc, 0x83, 0xb0, 0xd4, 0x9a, 0x35, 0xa1, - 0x4f, 0x55, 0x98, 0x72, - 0x9b, 0x0d, 0x02, 0x9b, 0x57, 0x0e, 0xd7, 0xf4, 0xcd, 0x48, 0xa2, 0x54, - 0x5b, 0x65, 0x37, 0xc6, - 0x7a, 0x83, 0xb5, 0x7a, 0x44, 0x8d, 0x40, 0x4f, 0x85, 0x93, 0xb0, 0x4a, - 0x7c, 0x11, 0x47, 0x1a, - 0xa1, 0xf5, 0x7c, 0xa1, 0x87, 0xb7, 0x31, 0xbf, 0x18, 0x68, 0x06, 0xc5, - 0x4c, 0x51, 0x10, 0x69, - 0xd0, 0xe3, 0xdc, 0xd0, 0x5a, 0x51, 0xe1, 0x0d, 0xe4, 0x4a, 0x39, 0xe8, - 0xd7, 0xf7, 0xb8, 0xa0, - 0x4a, 0x31, 0x73, 0x4a, 0x2b, 0x9a, 0xdb, 0x4c, 0xb9, 0x77, 0xbf, 0x80, - 0xc2, 0x7a, 0x6f, 0x1d, - 0x77, 0x91, 0xc8, 0x77, 0x09, 0x3d, 0xfb, 0x8a, 0x1a, 0xdf, 0xe7, 0xa5, - 0xfc, 0x93, 0xad, 0x10, - 0x5d, 0x07, 0xf4, 0x5d, 0xfc, 0x89, 0xd5, 0xc0, 0xdb, 0xa3, 0x46, 0x72, - 0x81, 0x3f, 0x92, 0x03, - 0x4f, 0x14, 0x2f, 0x4f, 0x95, 0xcd, 0x04, 0x68, 0x2c, 0x15, 0x0b, 0x4c, - 0x77, 0xb4, 0x89, 0x49, - 0x1d, 0x7c, 0x3f, 0x1d, 0x68, 0xbd, 0x73, 0xc4, 0x8b, 0x10, 0x52, 0xa9, - 0xea, 0x1a, 0xf2, 0xb6, - 0x83, 0x54, 0x61, 0x83, 0x81, 0xe4, 0x7b, 0x14, 0xd3, 0x3a, 0x44, 0x31, - 0x04, 0xb1, 0x23, 0x24, - 0x52, 0x68, 0x10, 0x52, 0xfd, 0x70, 0x77, 0xac, 0xa7, 0x05, 0x59, 0xe5, - 0x9d, 0xae, 0x7b, 0xff, - 0x25, 0xf9, 0xd8, 0x25, 0xf4, 0x4d, 0x8c, 0x26, 0xbd, 0xda, 0xbe, 0x40, - 0x61, 0x3d, 0xd6, 0xef, - 0xfe, 0x8f, 0x11, 0xfe, 0x37, 0x77, 0xfd, 0xd6, 0x20, 0x21, 0x08, 0xcf, - 0x51, 0x7d, 0x81, 0x9c, - 0x3d, 0xa0, 0xbb, 0x3d, 0x22, 0xa7, 0x20, 0xc6, 0xa3, 0xa8, 0x58, 0x25, - 0x3e, 0xe9, 0xc2, 0x0d, - 0x58, 0x22, 0xa8, 0x58, 0x42, 0xde, 0x0a, 0xe4, 0x4e, 0xc1, 0xf2, 0xbe, - 0x34, 0xf1, 0x74, 0x57, - 0x55, 0x30, 0xd5, 0x55, 0x0f, 0x6e, 0xb1, 0x21, 0xd1, 0x8d, 0xa5, 0x51, - 0xb4, 0x73, 0x9e, 0x5d, - 0xf9, 0xd7, 0xd4, 0xf9, 0xc5, 0x69, 0x3b, 0x5b, 0x56, 0xa9, 0xf4, 0x7b, - 0x78, 0xa0, 0x64, 0x3e, - 0xac, 0xe7, 0x01, 0xac, 0xca, 0x07, 0x8a, 0x7a, 0x87, 0x24, 0x51, 0x2a, - 0xcc, 0xd3, 0xfa, 0x63, - 0xfc, 0xf2, 0x88, 0xfc, 0x7b, 0x3e, 0xe4, 0x7f, 0xc3, 0xcb, 0x40, 0xb7, - 0xcd, 0x6e, 0x82, 0x6a, - 0x68, 0x90, 0x6e, 0x68, 0x2d, 0xc9, 0x91, 0xe7, 0x72, 0x25, 0xfd, 0x74, - 0x8a, 0x9a, 0x5c, 0x50, - 0xc1, 0x52, 0x33, 0xc1, 0x59, 0x99, 0xc4, 0xb9, 0x60, 0x63, 0x18, 0x92, - 0xf3, 0x87, 0x40, 0x67, - 0x38, 0x85, 0xe7, 0x38, 0x9c, 0xf0, 0xff, 0xe2, 0x36, 0xca, 0xec, 0xe9, - 0x8b, 0x27, 0x24, 0x59, - 0x75, 0xec, 0x51, 0x75, 0x45, 0x74, 0xe2, 0x23, 0xf9, 0x35, 0xaf, 0xdd, - 0x60, 0x80, 0xae, 0xe6, - 0x6d, 0xb5, 0x32, 0x6d, 0x93, 0x9e, 0x4e, 0xc3, 0xe7, 0x47, 0x49, 0xb8, - 0x3f, 0x54, 0xba, 0x04, - 0x1f, 0x01, 0xa6, 0x1f, 0x24, 0xf4, 0x6a, 0x6d, 0x68, 0xfa, 0x1a, 0xd1, - 0x76, 0x09, 0xf1, 0x40, - 0x17, 0x36, 0x87, 0x17, 0xd7, 0x13, 0x0e, 0x8c, 0x62, 0xd4, 0xf9, 0xf2, - 0x43, 0x45, 0xfd, 0x1e, - 0x44, 0x81, 0x3a, 0x44, 0x0c, 0xa6, 0x94, 0x95, 0x55, 0xa4, 0x84, 0x2b, - 0x90, 0x03, 0x66, 0x9a, - 0xcc, 0x40, 0x4e, 0xcc, 0x14, 0x29, 0x7f, 0x7c, 0xff, 0x2f, 0x4f, 0x7d, - 0x73, 0x05, 0xaa, 0x6d, - 0xc5, 0xa8, 0xc2, 0xc5, 0xc1, 0x0b, 0xf6, 0x28, 0x65, 0x74, 0x88, 0x62, - 0x08, 0xa1, 0x46, 0x48, - 0xee, 0xe1, 0x53, 0xee, 0x12, 0x7a, 0x35, 0xd7, 0x34, 0x7d, 0x0d, 0x89, - 0x3b, 0xe5, 0x99, 0x20, - }, - { /* 11 */ - 0xfe, 0x50, 0x71, 0x7c, 0xfc, 0x9b, 0xad, 0x09, 0xfc, 0x5e, 0x38, 0x3f, - 0x3f, 0x68, 0x53, 0x1b, - 0x6d, 0x9f, 0xd8, 0xf4, 0xee, 0xe2, 0xd1, 0xe9, 0xee, 0x90, 0x3c, 0xda, - 0xda, 0xa3, 0xbc, 0xf8, - 0x53, 0x94, 0xe4, 0x01, 0xdd, 0x92, 0x0e, 0x3a, 0xdd, 0xb8, 0xb0, 0xa6, - 0xa6, 0x24, 0x5d, 0x4e, - 0xab, 0xb8, 0x14, 0x53, 0x11, 0x91, 0xf4, 0xf0, 0x11, 0x18, 0xc5, 0x95, - 0x95, 0x7d, 0x5f, 0xd3, - 0xc0, 0x5b, 0x4d, 0x89, 0xcf, 0xeb, 0x72, 0xda, 0xcf, 0x76, 0xb4, 0x43, - 0x43, 0xef, 0xb2, 0xad, - 0x7d, 0xbd, 0xa6, 0x24, 0x6e, 0x65, 0x3b, 0xa4, 0x6e, 0xc4, 0x27, 0xfa, - 0xfa, 0x9a, 0x46, 0x2f, - 0xaf, 0x51, 0xea, 0x67, 0x31, 0xc0, 0x2f, 0x72, 0x31, 0x0d, 0xb3, 0x9d, - 0x9d, 0xe2, 0x80, 0x96, - 0x72, 0x7b, 0xc6, 0x6f, 0x16, 0xda, 0x5f, 0x61, 0x16, 0x84, 0x7a, 0xe4, - 0xe4, 0x01, 0x2d, 0xa3, - 0x27, 0x93, 0xa3, 0x40, 0xfb, 0xd0, 0x06, 0x98, 0xfb, 0xc2, 0x87, 0x4e, - 0x4e, 0x14, 0x21, 0x6b, - 0xf9, 0x87, 0x2e, 0x5f, 0xc4, 0x86, 0xbc, 0x0b, 0xc4, 0x34, 0x89, 0x31, - 0x31, 0x0e, 0x45, 0x1d, - 0x8e, 0xbe, 0xc8, 0x09, 0xfa, 0x88, 0x7e, 0x29, 0xfa, 0x31, 0x79, 0xdf, - 0xdf, 0xc7, 0xf0, 0x7b, - 0x8a, 0x57, 0x36, 0x3d, 0xda, 0xd9, 0xa5, 0xab, 0xda, 0x24, 0x0f, 0xd7, - 0xd7, 0x58, 0x2f, 0x3e, - 0x3c, 0x9e, 0x43, 0xef, 0x23, 0xb9, 0x53, 0x92, 0x23, 0xc3, 0xb7, 0x78, - 0x78, 0x29, 0x6f, 0x75, - 0x50, 0xaa, 0x45, 0x16, 0xc5, 0xde, 0xc4, 0xba, 0xc5, 0xc7, 0x77, 0xa0, - 0xa0, 0xdd, 0x94, 0x0d, - 0xe1, 0xb4, 0x6f, 0xe7, 0x04, 0xa3, 0x23, 0x81, 0x04, 0x4a, 0x7e, 0x01, - 0x01, 0xca, 0xc2, 0x40, - 0x41, 0x23, 0xe5, 0xcb, 0x4d, 0xdc, 0x68, 0x36, 0x4d, 0x07, 0x90, 0x82, - 0x82, 0xb3, 0x29, 0x5a, - 0xb4, 0x5c, 0x0a, 0xc8, 0xe9, 0xa9, 0x7a, 0x78, 0xe9, 0x0c, 0x83, 0xab, - 0xab, 0xdf, 0xce, 0x88, - 0xd7, 0xae, 0x6c, 0x7a, 0x77, 0x71, 0x89, 0x95, 0x77, 0x48, 0x1e, 0x6d, - 0x6d, 0xb0, 0x5e, 0x7c, - 0x1e, 0x4f, 0xc0, 0x96, 0xf0, 0xbd, 0xc8, 0x49, 0xf0, 0x80, 0xba, 0x3c, - 0x3c, 0xf5, 0xd6, 0xdb, - 0x23, 0x7a, 0x5d, 0x74, 0xdb, 0x81, 0xdd, 0x1a, 0xdb, 0xd7, 0xf1, 0x46, - 0x46, 0x8b, 0xfe, 0x2e, - 0x2a, 0xc0, 0xbc, 0x11, 0x93, 0xa6, 0xee, 0x1c, 0x93, 0x69, 0xe1, 0x54, - 0x54, 0x21, 0xc4, 0x24, - 0x75, 0xac, 0x99, 0x4c, 0x2e, 0xc7, 0x4e, 0x63, 0x2e, 0xee, 0xcb, 0xea, - 0xea, 0x67, 0x3b, 0xa5, - 0xba, 0x31, 0xb4, 0x8e, 0x99, 0x93, 0x58, 0x7c, 0x99, 0xd8, 0x22, 0xb7, - 0xb7, 0x13, 0xe2, 0x84, - 0x86, 0xaf, 0xf7, 0x61, 0xba, 0x2a, 0x0b, 0xee, 0xba, 0x1b, 0x95, 0xcf, - 0xcf, 0x3a, 0x8d, 0xf1, - 0xdb, 0x56, 0xad, 0x26, 0x17, 0x82, 0x27, 0xd0, 0x17, 0x77, 0x84, 0x75, - 0x75, 0xd2, 0xfc, 0xb3, - 0x76, 0x92, 0x38, 0x5b, 0x36, 0x8b, 0x84, 0xe3, 0x36, 0x91, 0x0c, 0xec, - 0xec, 0x9e, 0xf2, 0xe6, - 0xb7, 0x62, 0xab, 0xdf, 0xf1, 0xe5, 0xb0, 0xf8, 0xf1, 0x73, 0x44, 0xad, - 0xad, 0x26, 0x07, 0xcb, - 0x2f, 0x82, 0x9c, 0x28, 0xbb, 0x72, 0x73, 0x5f, 0xbb, 0xe8, 0x6b, 0x5e, - 0x5e, 0xe9, 0x5c, 0xe1, - 0xe3, 0x21, 0x10, 0xfd, 0x14, 0x6a, 0xaf, 0xc0, 0x14, 0xa1, 0x45, 0x05, - 0x05, 0x64, 0x4c, 0x83, - 0x51, 0x01, 0x9b, 0x1b, 0xcd, 0x5b, 0x82, 0x7b, 0xcd, 0x53, 0x8b, 0xa2, - 0xa2, 0x8a, 0xd3, 0x8d, - 0xd2, 0xec, 0x4c, 0x43, 0x5f, 0xa5, 0x14, 0xd6, 0x5f, 0xc9, 0x94, 0x67, - 0x67, 0x78, 0xc6, 0xb9, - 0xb1, 0x1e, 0x2a, 0xf1, 0xc1, 0x7d, 0xe7, 0x3b, 0xc1, 0x8d, 0x09, 0xa1, - 0xa1, 0x17, 0x56, 0x4d, - 0xb6, 0xc9, 0x75, 0xd2, 0xf9, 0x60, 0xf6, 0x39, 0xf9, 0xe7, 0xb8, 0xaf, - 0xaf, 0x71, 0x40, 0x4b, - 0x03, 0x3e, 0xa1, 0x17, 0x18, 0x4c, 0xca, 0x80, 0x18, 0x7f, 0xc7, 0x06, - 0x06, 0xf9, 0xc9, 0x43, - 0x44, 0x61, 0xc5, 0xf2, 0x65, 0x08, 0xf5, 0x75, 0x65, 0x86, 0x1a, 0x88, - 0x88, 0x7b, 0xb1, 0x9f, - 0x9a, 0x75, 0x48, 0xed, 0x5a, 0x5e, 0x4f, 0xe6, 0x5a, 0x70, 0x14, 0xf7, - 0xf7, 0x61, 0xd5, 0xe9, - 0x8d, 0x80, 0x69, 0x1e, 0xe2, 0xc4, 0xb4, 0xa9, 0xe2, 0x4e, 0xbe, 0xd9, - 0xd9, 0x3e, 0x39, 0x38, - 0xea, 0x9b, 0xf1, 0x98, 0x5c, 0x4d, 0x9c, 0xc6, 0x5c, 0x1f, 0x55, 0x17, - 0x17, 0xce, 0x76, 0x89, - 0xc4, 0xb2, 0xb3, 0xbd, 0xef, 0xba, 0xa9, 0x58, 0xef, 0x63, 0xc2, 0x4b, - 0x4b, 0x70, 0x6d, 0xe8, - 0xad, 0xc4, 0x95, 0x7d, 0x21, 0x09, 0xa3, 0x33, 0x21, 0xe6, 0x88, 0x99, - 0x99, 0x4c, 0x0e, 0x55, - 0xb9, 0x0f, 0x15, 0x99, 0x81, 0xdf, 0x92, 0xfc, 0x81, 0xa7, 0xe5, 0xb1, - 0xb1, 0xea, 0x2b, 0xc7, - 0xe2, 0x8a, 0xce, 0xf0, 0x1c, 0xef, 0xe9, 0x01, 0x1c, 0x35, 0xb9, 0x07, - 0x07, 0x33, 0x0b, 0x03, - 0xe6, 0x63, 0x30, 0xc4, 0x3c, 0xbe, 0x32, 0x83, 0x3c, 0x20, 0xcf, 0x0f, - 0x0f, 0xac, 0xd4, 0x46, - 0x99, 0x4b, 0xe9, 0xfa, 0x42, 0x12, 0x85, 0x66, 0x42, 0x0f, 0xd3, 0xf1, - 0xf1, 0x98, 0x1c, 0xaa, - 0x29, 0xfe, 0x1d, 0x06, 0x8b, 0xea, 0x24, 0x9c, 0x8b, 0x16, 0x26, 0x52, - 0x52, 0xd8, 0x0d, 0x67, - 0xa9, 0x2d, 0x6b, 0x49, 0x01, 0x58, 0x78, 0xb1, 0x01, 0xf3, 0xfe, 0x91, - 0x91, 0xd3, 0xd1, 0x10, - 0x61, 0x67, 0x19, 0xa8, 0x8e, 0x11, 0x7f, 0xac, 0x8e, 0xaf, 0xa6, 0xc2, - 0xc2, 0xc1, 0x1e, 0x37, - 0xd0, 0x79, 0x33, 0x59, 0x4f, 0x6c, 0x98, 0x97, 0x4f, 0x22, 0xaf, 0x63, - 0x63, 0xd6, 0x48, 0x7a, - 0x48, 0x99, 0x04, 0xae, 0x05, 0xfb, 0x5b, 0x30, 0x05, 0xb9, 0x80, 0x90, - 0x90, 0x19, 0x13, 0x50, - 0xf1, 0x96, 0x11, 0x37, 0x84, 0x24, 0xc9, 0xcc, 0x84, 0x1e, 0x65, 0x21, - 0x21, 0xf3, 0x38, 0x97, - 0x91, 0x5a, 0xd6, 0x92, 0x02, 0xb0, 0xf0, 0xa1, 0x02, 0x25, 0x3f, 0xe1, - 0xe1, 0x65, 0x61, 0x20, - 0x65, 0x8e, 0xe7, 0x9c, 0xae, 0x40, 0xa4, 0x2e, 0xae, 0xba, 0xd0, 0xca, - 0xca, 0x5e, 0xc1, 0x72, - 0x24, 0xad, 0x02, 0x57, 0xe3, 0x9c, 0xcc, 0x18, 0xe3, 0xbd, 0x40, 0x48, - 0x48, 0xed, 0xe8, 0x28, - 0x9c, 0x09, 0xc9, 0xc3, 0x6a, 0xc6, 0x18, 0x25, 0x6a, 0x8e, 0x59, 0xfb, - 0xfb, 0x50, 0x84, 0x6f, - 0xc8, 0x4a, 0x72, 0xe1, 0x8f, 0x49, 0x07, 0x1d, 0x8f, 0x5c, 0x58, 0x53, - 0x53, 0x12, 0xcf, 0x27, - 0x14, 0xcb, 0x80, 0xe4, 0xa0, 0xd6, 0x31, 0xcf, 0xa0, 0x41, 0x6d, 0x28, - 0x28, 0xa6, 0x25, 0x92, - 0x70, 0xee, 0xb9, 0x75, 0x06, 0x13, 0xd3, 0x20, 0x06, 0x6f, 0x41, 0xe0, - 0xe0, 0xaf, 0xa3, 0x60, - 0x39, 0xdc, 0x63, 0xd6, 0x0b, 0x6d, 0xce, 0xd1, 0x0b, 0x42, 0x3d, 0x72, - 0x72, 0xe1, 0xf7, 0xb0, - 0x55, 0xe8, 0x65, 0x2f, 0xed, 0x0a, 0x59, 0xf9, 0xed, 0x46, 0xfd, 0xaa, - 0xaa, 0x15, 0x0c, 0xc8, - 0x13, 0x1c, 0xdf, 0xc7, 0x98, 0xcb, 0x20, 0xcd, 0x98, 0x2b, 0xdc, 0x26, - 0x26, 0xc0, 0x33, 0x94, - 0xd6, 0x05, 0xb2, 0x77, 0x7f, 0xf4, 0xcf, 0x54, 0x7f, 0xdc, 0xe2, 0x6f, - 0x6f, 0xe7, 0x19, 0xfc, - 0xfb, 0x12, 0x51, 0x45, 0xd4, 0x4f, 0x30, 0x4a, 0xd4, 0xdf, 0xb2, 0x35, - 0x35, 0xa0, 0xcb, 0xde, - 0x22, 0xd1, 0x83, 0x79, 0xd3, 0x04, 0x9b, 0xdb, 0xd3, 0x43, 0x0d, 0x44, - 0x44, 0xdc, 0xb9, 0xae, - 0xda, 0xfd, 0x73, 0x2b, 0x1f, 0x07, 0x61, 0x11, 0x1f, 0xe3, 0x78, 0x77, - 0x77, 0x85, 0xbb, 0x33, - 0x25, 0x06, 0xdc, 0x5a, 0xeb, 0x19, 0x8a, 0xd9, 0xeb, 0x29, 0xbc, 0x4a, - 0x4a, 0xba, 0xaf, 0xa8, - 0xe7, 0xc8, 0xee, 0xc9, 0x34, 0x3b, 0x74, 0x42, 0x34, 0xb4, 0x33, 0x0d, - 0x0d, 0xfb, 0x93, 0xc6, - 0xe4, 0xf6, 0x4f, 0xde, 0x2c, 0x77, 0xbe, 0xc2, 0x2c, 0xcb, 0xf4, 0x0b, - 0x0b, 0x02, 0x5a, 0x85, - 0xa3, 0xa9, 0x2b, 0x3b, 0x51, 0x33, 0x81, 0x37, 0x51, 0x32, 0x29, 0x85, - 0x85, 0x80, 0x22, 0x59, - 0x8c, 0x2b, 0xb7, 0x13, 0xea, 0x41, 0xf2, 0x68, 0xea, 0xda, 0x42, 0xdb, - 0xdb, 0x69, 0x7e, 0xb8, - 0x19, 0x98, 0x9f, 0xb5, 0xc8, 0xa0, 0xd9, 0x4b, 0xc8, 0xea, 0x0b, 0x32, - 0x32, 0x93, 0xc0, 0xdd, - 0x09, 0xba, 0xe1, 0x65, 0x48, 0x27, 0x33, 0x06, 0x48, 0xbe, 0x10, 0x12, - 0x12, 0xaa, 0x3a, 0x0a, - 0x2d, 0x17, 0xe3, 0x32, 0xab, 0xbb, 0xff, 0x1e, 0xab, 0x03, 0x50, 0x5a, - 0x5a, 0x47, 0xd2, 0x22, - 0x8f, 0x15, 0x16, 0x04, 0xf2, 0x0d, 0x38, 0xe8, 0xf2, 0xa5, 0x85, 0xdd, - 0xdd, 0x90, 0xb7, 0xfb, - 0x94, 0x18, 0xf6, 0xab, 0x2a, 0x64, 0x6d, 0xe2, 0x2a, 0xa4, 0xb5, 0xeb, - 0xeb, 0xad, 0xf9, 0xe5, - 0x0d, 0x53, 0x1f, 0x51, 0x68, 0x76, 0xe8, 0x84, 0x68, 0xab, 0x66, 0x1a, - 0x1a, 0x35, 0xe5, 0x4f, - 0x85, 0x91, 0x56, 0x76, 0xa2, 0x66, 0xc1, 0x6e, 0xa2, 0x64, 0x52, 0xc9, - 0xc9, 0xc3, 0x44, 0xb2, - 0x57, 0x7d, 0x1a, 0x35, 0xfd, 0xc3, 0xd5, 0xb8, 0xfd, 0xad, 0xc6, 0xae, - 0xae, 0xbb, 0x82, 0x0b, - 0x96, 0x8d, 0x89, 0xb1, 0x3a, 0xad, 0xe1, 0xa3, 0x3a, 0x4f, 0x8e, 0xef, - 0xef, 0x03, 0x77, 0x26, - 0x69, 0x76, 0x26, 0xc0, 0xce, 0xb3, 0x0a, 0x6b, 0xce, 0x85, 0x4a, 0xd2, - 0xd2, 0x3c, 0x63, 0xbd, - 0xf8, 0x2c, 0xf0, 0x52, 0xcc, 0x03, 0xfa, 0xca, 0xcc, 0xa0, 0x75, 0x33, - 0x33, 0x59, 0x02, 0x9d, - 0x5e, 0xc7, 0xfb, 0x50, 0xb5, 0xe4, 0xe6, 0xbe, 0xb5, 0x13, 0xd6, 0xbc, - 0xbc, 0x11, 0xb8, 0x01, - 0x0e, 0x6d, 0xbe, 0x46, 0x70, 0x3a, 0x22, 0x04, 0x70, 0xd4, 0xa1, 0x1c, - 0x1c, 0xcc, 0x2c, 0x0c, - 0x71, 0x45, 0x67, 0x78, 0x0e, 0x96, 0x95, 0xe1, 0x0e, 0xfb, 0xbd, 0xe2, - 0xe2, 0xf8, 0xe4, 0xe0, - 0x7a, 0x6a, 0xf9, 0x07, 0x56, 0x78, 0x2a, 0xa6, 0x56, 0xae, 0x96, 0xf4, - 0xf4, 0xfc, 0x50, 0x29, - 0x01, 0xab, 0xde, 0x0d, 0x08, 0x85, 0x46, 0xc1, 0x08, 0x94, 0xfc, 0x02, - 0x02, 0x57, 0x47, 0x80, - 0xe0, 0x1f, 0xb1, 0xea, 0x0c, 0x26, 0x65, 0x40, 0x0c, 0xde, 0x82, 0x03, - 0x03, 0x9d, 0x85, 0xc0, - 0x7e, 0x83, 0x07, 0x33, 0x76, 0x29, 0xf1, 0x24, 0x76, 0xbb, 0xe0, 0xfc, - 0xfc, 0x63, 0x8f, 0x6c, - 0x93, 0xcf, 0xa9, 0x88, 0x12, 0x79, 0x7c, 0xe0, 0x12, 0xce, 0x04, 0xe5, - 0xe5, 0xcb, 0xef, 0xe3, - 0xce, 0x36, 0xf3, 0xcf, 0xbf, 0xd1, 0x50, 0xde, 0xbf, 0xa2, 0x15, 0x5f, - 0x5f, 0x23, 0x9e, 0xa1, - 0x9f, 0x37, 0x68, 0xd4, 0x72, 0x8a, 0xd2, 0xa5, 0x72, 0xf1, 0x9e, 0xfd, - 0xfd, 0xa9, 0x4d, 0x2c, - 0x3a, 0xe2, 0xc2, 0xc1, 0x13, 0x21, 0x04, 0x51, 0x13, 0x3d, 0xfa, 0x74, - 0x74, 0x18, 0x3e, 0xf3, - 0xd1, 0xd2, 0xed, 0x54, 0x47, 0xe9, 0xde, 0x56, 0x47, 0xb6, 0x53, 0x61, - 0x61, 0x81, 0x0f, 0xfa, - 0xf2, 0xa8, 0xb0, 0x20, 0x9c, 0x68, 0x03, 0x4c, 0x9c, 0x61, 0xa2, 0x27, - 0x27, 0x0a, 0xf1, 0xd4, - 0xcf, 0x9d, 0x2d, 0xc2, 0xb7, 0x54, 0x16, 0x1f, 0xb7, 0x36, 0xe9, 0x5d, - 0x5d, 0x74, 0xd9, 0x21, - 0x43, 0xb6, 0x9a, 0xd1, 0x5d, 0x15, 0xe4, 0x77, 0x5d, 0xec, 0xab, 0x86, - 0x86, 0x1d, 0xa7, 0x99, - 0xc9, 0xe1, 0xac, 0xec, 0x87, 0xcc, 0x41, 0xdc, 0x87, 0xc8, 0xa4, 0x51, - 0x51, 0x45, 0x88, 0xa7, - 0x4a, 0x0c, 0x7b, 0xb4, 0x15, 0x32, 0xd7, 0x71, 0x15, 0x52, 0xbb, 0x94, - 0x94, 0xb7, 0x9d, 0x93, - 0xbd, 0xe6, 0xeb, 0xad, 0xa1, 0x8e, 0x49, 0x7e, 0xa1, 0xb2, 0x93, 0xb9, - 0xb9, 0x75, 0xf4, 0x82, - 0x62, 0x59, 0xb8, 0xbf, 0x96, 0x5d, 0xb5, 0x2c, 0x96, 0xd0, 0x61, 0xc4, - 0xc4, 0x38, 0xd7, 0x74, - 0xac, 0x6f, 0x4b, 0x70, 0x29, 0x8c, 0xe5, 0xf2, 0x29, 0x72, 0x74, 0x9b, - 0x9b, 0x1b, 0x49, 0xd5, - 0x02, 0x95, 0x7f, 0x1a, 0x10, 0xc9, 0x8c, 0x41, 0x10, 0xeb, 0x3b, 0x04, - 0x04, 0xae, 0x8e, 0xc3, - 0x37, 0xb1, 0xdd, 0x90, 0x7b, 0x57, 0xec, 0xd5, 0x7b, 0x96, 0x9c, 0x6e, - 0x6e, 0x2d, 0xdb, 0xbc, - 0x82, 0x46, 0x09, 0x55, 0x9a, 0x7b, 0xd0, 0x6c, 0x9a, 0x0e, 0xe3, 0xc7, - 0xc7, 0xa5, 0x52, 0xb4, - 0xc1, 0xf0, 0x93, 0x84, 0xc7, 0x6e, 0x34, 0x1b, 0xc7, 0xe2, 0x48, 0x41, - 0x41, 0xb8, 0xf5, 0x2d, - 0x26, 0x38, 0x7d, 0x4d, 0xf3, 0x55, 0x40, 0x59, 0xf3, 0x56, 0x7b, 0x4c, - 0x4c, 0x43, 0x66, 0xeb, - 0xbb, 0x9a, 0x6a, 0x83, 0x91, 0x16, 0x1e, 0xbd, 0x91, 0x4c, 0xde, 0xb5, - 0xb5, 0x44, 0xa5, 0x04, - 0x0f, 0xc6, 0x60, 0x4b, 0x78, 0xbf, 0x64, 0xc5, 0x78, 0x40, 0x5d, 0x1e, - 0x1e, 0x9b, 0x6b, 0x8c, - 0xd4, 0x90, 0xcd, 0x6d, 0x6f, 0x3d, 0x43, 0x15, 0x6f, 0x37, 0xd9, 0x6b, - 0x6b, 0x49, 0x97, 0x3f, - 0x5b, 0x85, 0xdb, 0x69, 0x9d, 0x30, 0x7b, 0xfd, 0x9d, 0x92, 0x5c, 0xb6, - 0xb6, 0xd9, 0x20, 0xc4, - 0x63, 0xf2, 0x66, 0xb2, 0x9e, 0xd8, 0xf3, 0xed, 0x9e, 0x44, 0x9d, 0xc6, - 0xc6, 0x6f, 0x90, 0xf4, - 0x87, 0x04, 0x29, 0x6c, 0xb2, 0xaf, 0x4d, 0x2f, 0xb2, 0x8f, 0x69, 0xcd, - 0xcd, 0x6d, 0xca, 0x71, - 0xbf, 0x73, 0x94, 0xb7, 0xb1, 0x47, 0xc5, 0x3f, 0xb1, 0x59, 0xa8, 0xbd, - 0xbd, 0xdb, 0x7a, 0x41, - 0x97, 0x26, 0x57, 0xbc, 0x32, 0x28, 0xa7, 0x62, 0x32, 0xdb, 0x72, 0xed, - 0xed, 0x54, 0x30, 0xa6, - 0x46, 0xf4, 0xba, 0xe8, 0x75, 0xc1, 0x79, 0x34, 0x75, 0x6d, 0x21, 0x8c, - 0x8c, 0xd5, 0x3f, 0x5c, - 0xaa, 0x13, 0xca, 0x5e, 0x19, 0x14, 0xb2, 0x31, 0x19, 0x8c, 0x39, 0x97, - 0x97, 0x2a, 0x18, 0x53, - 0x4f, 0x4e, 0x5b, 0x8d, 0x3d, 0xe6, 0x4a, 0x32, 0x3d, 0xd3, 0x31, 0x9e, - 0x9e, 0x7f, 0x05, 0x56, - 0xc6, 0x27, 0xcc, 0xa7, 0xff, 0x73, 0x25, 0x19, 0xff, 0x88, 0xf9, 0x4f, - 0x4f, 0xde, 0xe3, 0x2b, - 0x4e, 0xe5, 0x85, 0x80, 0x35, 0x63, 0x0c, 0xf3, 0x35, 0x47, 0xcd, 0x9c, - 0x9c, 0x28, 0x42, 0xd6, - 0x80, 0xd3, 0x76, 0x4f, 0x8a, 0xb2, 0x5c, 0x2d, 0x8a, 0xe5, 0xd8, 0xc3, - 0xc3, 0x0b, 0xdc, 0x77, - 0x7f, 0x28, 0xd9, 0x3e, 0x7e, 0xac, 0xb7, 0xe5, 0x7e, 0x2f, 0x1c, 0xfe, - 0xfe, 0x34, 0xc8, 0xec, - 0x45, 0xca, 0x1b, 0xff, 0x6d, 0x8d, 0xb3, 0xb4, 0x6d, 0x12, 0xe6, 0x8a, - 0x8a, 0x2c, 0xf6, 0x1f, - 0xeb, 0x30, 0x2f, 0x95, 0x54, 0xc8, 0xda, 0x07, 0x54, 0x8b, 0xa9, 0x15, - 0x15, 0x99, 0x31, 0x09, - 0x68, 0xdd, 0xf8, 0xcd, 0xc6, 0x36, 0x4c, 0xaa, 0xc6, 0x11, 0xb6, 0xd0, - 0xd0, 0x6b, 0x24, 0x3d, - 0x10, 0x22, 0x7e, 0xd0, 0x80, 0x87, 0xea, 0x4d, 0x80, 0x54, 0x1b, 0x20, - 0x20, 0x39, 0xfa, 0xd7, - 0x20, 0x44, 0xfc, 0x63, 0xc3, 0xcd, 0x17, 0x9a, 0xc3, 0xa8, 0x36, 0x40, - 0x40, 0x72, 0x37, 0x6d, - 0x5f, 0x6c, 0x25, 0x5d, 0xbd, 0x61, 0xa0, 0x7f, 0xbd, 0x87, 0x2a, 0xbe, - 0xbe, 0x46, 0xff, 0x81, - 0x49, 0x32, 0xda, 0xa3, 0x0d, 0x7e, 0x1d, 0xf1, 0x0d, 0x2d, 0x7c, 0x92, - 0x92, 0x4e, 0x54, 0xd0, - 0xd3, 0x47, 0x92, 0x4e, 0x57, 0x20, 0x52, 0x17, 0x57, 0x5d, 0x68, 0x65, - 0x65, 0x2f, 0x81, 0x39, - 0xc2, 0xce, 0x32, 0x93, 0xdf, 0x22, 0xfe, 0x9b, 0xdf, 0x9d, 0x8f, 0x47, - 0x47, 0x41, 0x3c, 0x6e, - 0x56, 0xd6, 0xc4, 0x38, 0xf5, 0x46, 0x93, 0x79, 0xf5, 0x39, 0x3a, 0xac, - 0xac, 0xec, 0xc5, 0x8b, - 0xe5, 0x5d, 0x91, 0xd3, 0x24, 0xf2, 0xf8, 0x03, 0x24, 0x5f, 0x08, 0x09, - 0x09, 0x55, 0x1d, 0x05, - 0xbc, 0x4d, 0x35, 0xa0, 0xa9, 0x0b, 0x0f, 0xbf, 0xa9, 0x26, 0x6f, 0xbb, - 0xbb, 0x22, 0xb3, 0x02, - 0x77, 0x39, 0xe6, 0x56, 0x3e, 0x0e, 0xc2, 0x22, 0x3e, 0x05, 0xf0, 0xee, - 0xee, 0xc9, 0xb5, 0x66, - 0x15, 0x60, 0x5e, 0xe9, 0xa8, 0x53, 0x77, 0x0e, 0xa8, 0xd5, 0x91, 0x2a, - 0x2a, 0xf1, 0x62, 0x12, - 0x30, 0x66, 0x82, 0xb3, 0x43, 0x4a, 0xfd, 0xd7, 0x43, 0xfc, 0x2d, 0x60, - 0x60, 0x4b, 0xcd, 0xba, - 0xb0, 0xb5, 0xf4, 0xfc, 0xc9, 0xf8, 0xa1, 0xfa, 0xc9, 0x19, 0xf5, 0xa3, - 0xa3, 0x40, 0x11, 0xcd, - 0xc3, 0x65, 0xec, 0x9e, 0xd7, 0xa7, 0xb8, 0x5a, 0xd7, 0x09, 0x73, 0x45, - 0x45, 0x16, 0x7b, 0xee, - 0xa6, 0xeb, 0x0b, 0x02, 0x79, 0xe7, 0x1c, 0x74, 0x79, 0xb3, 0xa3, 0x8f, - 0x8f, 0x48, 0xba, 0x9c, - 0x6a, 0x48, 0x87, 0xd7, 0xd6, 0xff, 0xc0, 0xeb, 0xd6, 0xfa, 0x8d, 0xd4, - 0xd4, 0xc5, 0xaa, 0xfe, - 0x6e, 0xa1, 0x79, 0xe3, 0xf6, 0xae, 0x1b, 0x69, 0xf6, 0xef, 0xfb, 0xdc, - 0xdc, 0x5a, 0x75, 0xbb, - 0xee, 0x72, 0x0f, 0xac, 0x7c, 0x1c, 0x47, 0x44, 0x7c, 0x0a, 0x23, 0x1f, - 0x1f, 0x51, 0xa9, 0xcc, - 0x95, 0xb3, 0x28, 0xa6, 0x22, 0xe1, 0x2b, 0x23, 0x22, 0x30, 0x49, 0xe9, - 0xe9, 0xfa, 0xbe, 0x65, - 0xbe, 0xd8, 0x4a, 0xba, 0xb9, 0xc2, 0x83, 0xfe, 0xb9, 0xcd, 0x54, 0xbf, - 0xbf, 0x8c, 0x3d, 0xc1, - 0x38, 0x77, 0xbd, 0xdb, 0x03, 0xe8, 0x88, 0x10, 0x03, 0xd6, 0xc1, 0x70, - 0x70, 0xb6, 0xb0, 0x30, - 0x1c, 0xda, 0xbf, 0x8c, 0xe0, 0x74, 0x44, 0x08, 0xe0, 0x6b, 0x81, 0x38, - 0x38, 0x5b, 0x58, 0x18, - 0xd8, 0x68, 0x0c, 0x31, 0x0f, 0xce, 0xed, 0x50, 0x0f, 0x08, 0x43, 0x73, - 0x73, 0x2b, 0x35, 0xf0, - 0xfc, 0xc5, 0x0e, 0x66, 0xec, 0x52, 0x21, 0x48, 0xec, 0xb5, 0x03, 0x3b, - 0x3b, 0xc6, 0xdd, 0xd8, - 0x6b, 0xe3, 0x59, 0xda, 0xde, 0x7a, 0x86, 0x2a, 0xde, 0x6e, 0x71, 0xd6, - 0xd6, 0x92, 0xed, 0x7e, - 0x9e, 0x9c, 0xb6, 0xd9, 0x7a, 0x0f, 0x94, 0x64, 0x7a, 0x65, 0x62, 0xff, - 0xff, 0xfe, 0x0a, 0xac, - 0xf3, 0x03, 0x6e, 0x2d, 0x94, 0xed, 0x45, 0x8d, 0x94, 0xf5, 0x5e, 0x25, - 0x25, 0x5d, 0xb6, 0x54, - 0x16, 0x5e, 0xff, 0xfe, 0xb0, 0x1f, 0xbd, 0x8e, 0xb0, 0xaa, 0x56, 0x2c, - 0x2c, 0x08, 0xab, 0x51, - 0xf6, 0x41, 0x4e, 0x14, 0xbc, 0x39, 0xd8, 0xce, 0xbc, 0x74, 0xd4, 0x2f, - 0x2f, 0x95, 0x2e, 0x91, - 0xfa, 0xb9, 0x8f, 0x48, 0xdc, 0xca, 0x76, 0x8b, 0xdc, 0x4b, 0x4e, 0x37, - 0x37, 0xf7, 0x8c, 0x5e, - 0x1d, 0x71, 0x61, 0x81, 0xe8, 0xf1, 0x02, 0xc9, 0xe8, 0xff, 0x7d, 0x3a, - 0x3a, 0x0c, 0x1f, 0x98, - 0x05, 0x42, 0x20, 0x39, 0x28, 0xd4, 0x9d, 0x43, 0x28, 0x81, 0x8a, 0x0a, - 0x0a, 0xc8, 0x98, 0xc5, - 0x0a, 0x84, 0x40, 0x72, 0x50, 0x6b, 0xf9, 0x86, 0x50, 0xc1, 0xd7, 0x14, - 0x14, 0x53, 0xf3, 0x49, - 0x79, 0x54, 0x58, 0x10, 0x4e, 0x34, 0xe0, 0x26, 0x4e, 0xd1, 0x51, 0xf2, - 0xf2, 0x05, 0x99, 0x6a, - 0x3e, 0x0b, 0x3c, 0xf5, 0x33, 0x70, 0xdf, 0xd3, 0x33, 0x28, 0x8c, 0x7c, - 0x7c, 0x87, 0xe1, 0xb6, - 0x90, 0xf1, 0x08, 0x9f, 0x0a, 0x35, 0xb6, 0x60, 0x0a, 0xb1, 0xc3, 0xe3, - 0xe3, 0x32, 0x26, 0xa0, - 0x98, 0xe0, 0x37, 0xf7, 0x4a, 0x97, 0xc3, 0xa7, 0x4a, 0x9b, 0x2f, 0xf3, - 0xf3, 0xcf, 0x5b, 0x2a, - 0xcd, 0x08, 0x52, 0xd8, 0xa7, 0x9d, 0x9a, 0x5e, 0xa7, 0xdd, 0xd2, 0x59, - 0x59, 0xda, 0x57, 0xe2, - 0xcb, 0x74, 0xd3, 0xf6, 0x97, 0x05, 0xcd, 0x9d, 0x97, 0x23, 0x9f, 0x55, - 0x55, 0xeb, 0x06, 0x64, - 0x0c, 0xf8, 0xc1, 0x5c, 0x60, 0xf3, 0xae, 0x45, 0x60, 0x3f, 0x9a, 0x18, - 0x18, 0x62, 0xa2, 0xcf, - 0x36, 0x1a, 0x03, 0x9d, 0x73, 0xd2, 0xaa, 0x14, 0x73, 0x02, 0x60, 0x6c, - 0x6c, 0x7a, 0x9c, 0x3c, - 0x73, 0xd0, 0x18, 0x62, 0x1e, 0x5f, 0x19, 0xa0, 0x1e, 0x10, 0x86, 0xe6, - 0xe6, 0x56, 0x6a, 0x23, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x9d, 0xa2, 0x17, 0xce, 0x62, 0x43, 0x5e, 0xe4, 0x62, 0x1a, 0xa5, 0xf9, - 0xf9, 0x07, 0xc3, 0xef, - 0xe9, 0xa5, 0x50, 0x8f, 0x44, 0x01, 0x56, 0x46, 0x44, 0x60, 0x92, 0x11, - 0x11, 0x37, 0xbf, 0xca, - 0x92, 0x64, 0x77, 0x85, 0x1a, 0xfc, 0x3a, 0x21, 0x1a, 0x5a, 0xf8, 0xe7, - 0xe7, 0x9c, 0xa8, 0x63, - 0x17, 0xf5, 0x21, 0xf3, 0xb8, 0x9a, 0xfb, 0x4f, 0xb8, 0x3e, 0xaa, 0x2e, - 0x2e, 0x5f, 0xec, 0xd1, - 0x07, 0xd7, 0x5f, 0x23, 0x38, 0x1d, 0x11, 0x02, 0x38, 0x6a, 0xb1, 0x0e, - 0x0e, 0x66, 0x16, 0x06, - 0x81, 0x78, 0xa8, 0x42, 0x82, 0x37, 0x1a, 0xec, 0x82, 0x71, 0x24, 0xc1, - 0xc1, 0x5c, 0x9b, 0xf7, - 0xed, 0x4c, 0xae, 0xbb, 0x64, 0x50, 0x8d, 0xc4, 0x64, 0x75, 0xe4, 0x19, - 0x19, 0xa8, 0x60, 0x8f, - 0xca, 0xdf, 0x0d, 0xfb, 0x9f, 0x80, 0x8b, 0x5c, 0x9f, 0xb7, 0x63, 0x57, - 0x57, 0xbc, 0x41, 0xe4, - 0x74, 0x07, 0x47, 0x41, 0x26, 0x42, 0x08, 0xa2, 0x26, 0x7a, 0x37, 0xe8, - 0xe8, 0x30, 0x7c, 0x25, - 0xa1, 0x3c, 0x54, 0x21, 0x41, 0xfa, 0x0d, 0x76, 0x41, 0xd9, 0x12, 0x81, - 0x81, 0x2e, 0xac, 0x9a, - 0x5d, 0xf9, 0x5a, 0x47, 0xad, 0xa8, 0x2c, 0x3e, 0xad, 0x6c, 0x11, 0xba, - 0xba, 0xe8, 0x71, 0x42, - 0x40, 0x88, 0x3b, 0xc6, 0x45, 0x59, 0x2e, 0xf7, 0x45, 0x93, 0x6c, 0x80, - 0x80, 0xe4, 0x6e, 0xda, - 0x78, 0xff, 0x86, 0x1d, 0x46, 0xb1, 0xa6, 0xe7, 0x46, 0x45, 0xad, 0xf0, - 0xf0, 0x52, 0xde, 0xea, - 0x83, 0xed, 0xd7, 0x58, 0x92, 0xfe, 0x96, 0xad, 0x92, 0x9a, 0x1f, 0xc5, - 0xc5, 0xf2, 0x15, 0x34, - 0xdd, 0x2a, 0x2c, 0x08, 0x27, 0x1a, 0x70, 0x13, 0x27, 0x89, 0xc9, 0x79, - 0x79, 0xe3, 0xad, 0x35, - 0x7b, 0xc1, 0x27, 0x0a, 0x5e, 0xfd, 0x6c, 0x67, 0x5e, 0x3a, 0x6a, 0xf6, - 0xf6, 0xab, 0x17, 0xa9, - 0x42, 0x1d, 0x44, 0xdc, 0x55, 0x90, 0xa2, 0xb6, 0x55, 0x78, 0x57, 0x84, - 0x84, 0x4a, 0xe0, 0x19, - 0xdc, 0x81, 0xf2, 0x05, 0x2f, 0x9f, 0x36, 0xd2, 0x2f, 0x1d, 0x35, 0x7b, - 0x7b, 0xb4, 0xea, 0xb5, - 0xf0, 0x3d, 0xcf, 0x3a, 0x8c, 0xa1, 0x8f, 0x0d, 0x8c, 0x8a, 0x99, 0x23, - 0x23, 0xa4, 0x7f, 0x17, - 0x2c, 0xbc, 0x3d, 0x3f, 0xa3, 0x3e, 0xb9, 0xdf, 0xa3, 0x97, 0xac, 0x58, - 0x58, 0x10, 0x95, 0xa2, - 0x5c, 0x52, 0x84, 0x4a, 0xa5, 0x2d, 0x6a, 0xff, 0xa5, 0xf8, 0xed, 0xb8, - 0xb8, 0xbf, 0x36, 0xc2, - 0x47, 0x5f, 0x64, 0xe5, 0x7d, 0x44, 0x3f, 0xf5, 0x7d, 0xf9, 0xdd, 0x8e, - 0x8e, 0x82, 0x78, 0xdc, - 0xa4, 0x7e, 0x74, 0x18, 0x69, 0x2e, 0x90, 0x35, 0x69, 0x58, 0x98, 0x8b, - 0x8b, 0xe6, 0x34, 0x5f, - 0x52, 0x3f, 0x3a, 0x0c, 0xd5, 0x17, 0x48, 0xfb, 0xd5, 0x2c, 0x4c, 0xa4, - 0xa4, 0x73, 0x1a, 0xce, - 0x5a, 0x2e, 0x05, 0x64, 0x95, 0xb5, 0x3d, 0x3c, 0x95, 0x06, 0xa0, 0xb4, - 0xb4, 0x8e, 0x67, 0x44, - 0x3f, 0xa0, 0xe2, 0xf8, 0x3b, 0xf5, 0x99, 0x12, 0x3b, 0xbc, 0x70, 0x7e, - 0x7e, 0xd0, 0xa6, 0x36, - 0xd9, 0xc3, 0xd2, 0x3c, 0x07, 0x4b, 0xab, 0x91, 0x07, 0x9c, 0xbf, 0x71, - 0x71, 0x7c, 0x72, 0x70, - 0x0b, 0x2f, 0x9e, 0x7f, 0x58, 0xee, 0xbf, 0x47, 0x58, 0x55, 0x2b, 0x16, - 0x16, 0x04, 0xb4, 0xc9, - 0x2e, 0x29, 0x42, 0x25, 0xb3, 0xf7, 0x35, 0x9e, 0xb3, 0x7c, 0x97, 0x5c, - 0x5c, 0xbe, 0x1b, 0x61, - 0x08, 0x11, 0x3f, 0x68, 0x40, 0xa2, 0x75, 0xc7, 0x40, 0x2a, 0xec, 0x10, - 0x10, 0xfd, 0x7d, 0x8a, - 0x60, 0xcc, 0xc7, 0xa5, 0x86, 0x94, 0x39, 0x6d, 0x86, 0x3b, 0x5a, 0xc0, - 0xc0, 0x96, 0x59, 0xb7, - 0xf4, 0xd4, 0x31, 0x0e, 0xac, 0xf0, 0x54, 0x8f, 0xac, 0x9f, 0xef, 0x2b, - 0x2b, 0x3b, 0xa0, 0x52, - 0x4b, 0xa7, 0xa5, 0xb9, 0x1d, 0xb7, 0x91, 0xb0, 0x1d, 0xc6, 0x47, 0x96, - 0x96, 0xe0, 0xda, 0x13, - 0xc7, 0x8c, 0x12, 0xaa, 0xf7, 0xf6, 0x63, 0xd8, 0xf7, 0x1c, 0x05, 0x4d, - 0x4d, 0x89, 0xa4, 0xab, - 0x06, 0x7c, 0x81, 0x2e, 0x30, 0x98, 0x57, 0xc3, 0x30, 0xfe, 0x4d, 0x0c, - 0x0c, 0x31, 0x51, 0x86, - 0xdf, 0xbf, 0x53, 0x12, 0x37, 0xd3, 0xfc, 0x52, 0x37, 0x62, 0xf2, 0x7d, - 0x7d, 0x4d, 0x23, 0xf6, - 0x35, 0x24, 0xa2, 0x8a, 0x6b, 0x9e, 0x60, 0x94, 0x6b, 0x7d, 0xa7, 0x6a, - 0x6a, 0x83, 0x55, 0x7f, - 0xfd, 0x6e, 0xd0, 0x6b, 0xe4, 0xd7, 0x67, 0x89, 0xe4, 0x21, 0xff, 0x39, - 0x39, 0x91, 0x9a, 0x58, - 0x11, 0x89, 0xa0, 0xdd, 0x88, 0x02, 0xac, 0x8c, 0x88, 0xc0, 0xe7, 0x22, - 0x22, 0x6e, 0xbd, 0x57, - 0xb2, 0x20, 0x8b, 0xe6, 0xd9, 0x31, 0x2d, 0xbb, 0xd9, 0xf2, 0xce, 0xa7, - 0xa7, 0xee, 0x9f, 0x0e, - 0xc5, 0x19, 0x6d, 0xb0, 0xe7, 0x3f, 0xef, 0x99, 0xe7, 0xf7, 0x3e, 0x49, - 0x49, 0x27, 0x2a, 0x68, - 0xb8, 0xa4, 0xcb, 0x94, 0x89, 0x5a, 0xd4, 0x3d, 0x89, 0x33, 0x19, 0xb3, - 0xb3, 0xbd, 0x6c, 0x47, - 0xb5, 0xf7, 0xd4, 0xc5, 0xe1, 0x2c, 0x3c, 0xb9, 0xe1, 0x98, 0x7f, 0xa9, - 0xa9, 0x88, 0x89, 0x08, - 0x3b, 0x49, 0x1c, 0xcc, 0x1b, 0xa4, 0x42, 0x90, 0x1b, 0xa9, 0x06, 0x76, - 0x76, 0x4f, 0x79, 0x73, - 0x28, 0x55, 0xc3, 0x0b, 0x83, 0x6f, 0x62, 0x5d, 0x83, 0x82, 0xda, 0x50, - 0x50, 0x8f, 0x4a, 0xe7, - 0xa0, 0x97, 0x8a, 0x2c, 0x49, 0x7f, 0x4b, 0xb7, 0x49, 0x4d, 0xee, 0x83, - 0x83, 0x79, 0xeb, 0x1a, - 0xe8, 0x0e, 0x8e, 0x82, 0x4c, 0x84, 0x10, 0x87, 0x4c, 0xf4, 0x6e, 0x13, - 0x13, 0x60, 0xf8, 0x4a, - 0xde, 0x14, 0x8d, 0x1f, 0x3f, 0x56, 0xba, 0x93, 0x3f, 0xf6, 0x0e, 0x7f, - 0x7f, 0x1a, 0x64, 0x76, - 0x1f, 0xe4, 0x1e, 0x9b, 0xf8, 0x38, 0x8e, 0x88, 0xf8, 0x14, 0x46, 0x3e, - 0x3e, 0xa2, 0x91, 0x5b, - 0x6f, 0x0a, 0xa7, 0xee, 0xfe, 0x2b, 0x5d, 0xa8, 0xfe, 0x7b, 0x07, 0xde, - 0xde, 0x0d, 0x32, 0x3b, - 0x59, 0x10, 0xa4, 0x73, 0x8d, 0xf9, 0xf7, 0xbc, 0x8d, 0x79, 0x67, 0xb2, - 0xb2, 0x77, 0xae, 0x07, - 0x32, 0xf3, 0xfd, 0xa9, 0x53, 0x83, 0x71, 0x96, 0x53, 0x17, 0x16, 0x64, - 0x64, 0xe5, 0x43, 0x79, - 0x84, 0x3a, 0x88, 0x7b, 0xaa, 0xe3, 0x87, 0xaf, 0xaa, 0xf0, 0xae, 0xcb, - 0xcb, 0x94, 0x03, 0x32, - 0x12, 0xb7, 0x01, 0xca, 0x90, 0x4e, 0x66, 0x0c, 0x90, 0xbf, 0x20, 0x24, - 0x24, 0x97, 0x74, 0x14, - 0x88, 0xc2, 0x49, 0x27, 0xca, 0x10, 0x29, 0xea, 0xca, 0xcf, 0x34, 0xd3, - 0xd3, 0xf6, 0xa1, 0xfd, - 0x1b, 0x0d, 0xe0, 0xaf, 0xd8, 0x69, 0x55, 0x0a, 0xd8, 0x01, 0x30, 0x36, - 0x36, 0x3d, 0x4e, 0x1e, - 0x58, 0xbb, 0x7a, 0x7e, 0x85, 0x7c, 0xb1, 0x7d, 0x85, 0xed, 0x9b, 0xb0, - 0xb0, 0x20, 0xe9, 0x87, - 0xa5, 0xd5, 0xaa, 0x15, 0x61, 0xab, 0xd6, 0xf4, 0x61, 0xcc, 0x64, 0x89, - 0x89, 0xb1, 0x73, 0xdf, - 0x04, 0xe9, 0xfe, 0x34, 0x20, 0x51, 0xdb, 0x82, 0x20, 0x15, 0x76, 0x08, - 0x08, 0x9f, 0xdf, 0x45, - 0xa7, 0x40, 0xd5, 0x0f, 0x71, 0x62, 0x5a, 0xb5, 0x71, 0x27, 0x5f, 0x8d, - 0x8d, 0x1f, 0xfd, 0x1c, - 0xd5, 0x3b, 0x13, 0x60, 0x67, 0xb8, 0x05, 0xd4, 0x67, 0xa3, 0x25, 0x69, - 0x69, 0x1e, 0xd0, 0xbf, - 0xf5, 0x7f, 0xef, 0x03, 0xa4, 0x75, 0x12, 0x4e, 0xa4, 0x0b, 0x13, 0x29, - 0x29, 0x6c, 0xe7, 0xd2, - 0x4d, 0xdb, 0x24, 0x97, 0x2d, 0x2f, 0xc6, 0x73, 0x2d, 0x38, 0x0a, 0x9a, - 0x9a, 0xd1, 0x8b, 0x95, - 0x3d, 0x35, 0x9d, 0xe2, 0x2b, 0x3c, 0x15, 0x53, 0x2b, 0x57, 0x4b, 0x7a, - 0x7a, 0x7e, 0x28, 0xf5, - 0xa8, 0x86, 0xb5, 0x44, 0x09, 0xdd, 0x3e, 0x70, 0x09, 0x67, 0x02, 0x93, - 0x93, 0x84, 0x96, 0x90, - 0x33, 0x58, 0x23, 0xa4, 0x5b, 0x06, 0x37, 0x57, 0x5b, 0x83, 0xea, 0x66, - 0x66, 0xb2, 0x04, 0xf9, - 0x21, 0xef, 0x22, 0x6e, 0xcb, 0x48, 0x51, 0x5b, 0xcb, 0x3c, 0xca, 0x42, - 0x42, 0x25, 0x70, 0xed, - 0x2b, 0x6b, 0x62, 0x1c, 0x9b, 0x23, 0xa8, 0xdd, 0x9b, 0xfd, 0x1d, 0x56, - 0x56, 0x76, 0x83, 0xa4, - 0x4c, 0x70, 0xfa, 0x9a, 0x25, 0xaa, 0x80, 0xb2, 0x25, 0xac, 0xf6, 0x98, - 0x98, 0x86, 0xcc, 0x15, - 0x1a, 0xa6, 0x3e, 0xa2, 0xd0, 0xec, 0x13, 0xcb, 0xd0, 0x95, 0xcc, 0x34, - 0x34, 0x6a, 0x09, 0x9e, - 0x67, 0x1b, 0x98, 0x86, 0xbe, 0x89, 0x28, 0x6f, 0xbe, 0x51, 0xeb, 0xce, - 0xce, 0xf0, 0x4f, 0xb1, - 0x54, 0x43, 0xbb, 0x22, 0xe5, 0x8f, 0x1f, 0x38, 0xe5, 0xd2, 0x01, 0xa8, - 0xa8, 0x42, 0x4b, 0x48, - 0xec, 0xe7, 0x70, 0xb6, 0x6c, 0xd5, 0xcb, 0x05, 0x6c, 0xe1, 0x18, 0x1b, - 0x1b, 0xff, 0x27, 0x0f, - 0x9b, 0xde, 0x96, 0xe0, 0x52, 0xdb, 0x09, 0x27, 0x52, 0xe4, 0xe8, 0xf5, - 0xf5, 0x36, 0x92, 0x69, - 0xa2, 0x02, 0xf5, 0x36, 0x59, 0xb6, 0xc7, 0xf6, 0x59, 0xa6, 0xd5, 0x87, - 0x87, 0xd7, 0x65, 0xd9, - 0x64, 0x25, 0x39, 0x91, 0xa6, 0xc5, 0xe2, 0xef, 0xa6, 0x2e, 0x2c, 0xc8, - 0xc8, 0x09, 0x86, 0xf2, - 0xef, 0xd9, 0xd1, 0xa1, 0x74, 0x99, 0x01, 0x85, 0x74, 0x9e, 0xdf, 0x1d, - 0x1d, 0x06, 0xee, 0x4c, - 0x8b, 0xfc, 0xe8, 0x30, 0xd2, 0x5c, 0xe3, 0x6a, 0xd2, 0xb0, 0xf3, 0xd5, - 0xd5, 0x0f, 0x68, 0xbe, - 0x6c, 0x34, 0x06, 0xf9, 0xe6, 0x67, 0x97, 0x28, 0xe6, 0x04, 0xc0, 0xd8, - 0xd8, 0xf4, 0xfb, 0x78, - 0xff, 0xfb, 0xaf, 0x71, 0xf4, 0x1e, 0xeb, 0xc8, 0xf4, 0xca, 0xc4, 0x3d, - 0x3d, 0x3f, 0x14, 0x9b, - 0xf7, 0xea, 0x90, 0x19, 0xb4, 0xbc, 0x9e, 0x0f, 0xb4, 0xe0, 0x28, 0x2d, - 0x2d, 0xc2, 0x69, 0x11, - 0x18, 0x33, 0x41, 0xb8, 0xc0, 0x25, 0x9f, 0x8a, 0xc0, 0x7e, 0xf7, 0x30, - 0x30, 0xc4, 0x87, 0x5d, - 0xb3, 0x8b, 0x55, 0xeb, 0xd1, 0xb4, 0x6b, 0x7a, 0xd1, 0x66, 0x32, 0xa5, - 0xa5, 0xb9, 0xd8, 0x8e, - 0x7c, 0x16, 0x78, 0x29, 0x66, 0xe0, 0x7d, 0x65, 0x66, 0x50, 0xdb, 0xf8, - 0xf8, 0xcd, 0x01, 0xaf, - 0xcc, 0xa3, 0x8c, 0xd5, 0xaf, 0x18, 0xdc, 0x9f, 0xaf, 0x49, 0x2e, 0x5b, - 0x5b, 0x8d, 0x10, 0x62, - 0x89, 0x69, 0x97, 0x2a, 0xc2, 0x95, 0x6f, 0x2b, 0xc2, 0x5b, 0xc8, 0xd1, - 0xd1, 0xa1, 0xe6, 0x7d, - 0xae, 0xfa, 0x34, 0x6a, 0x39, 0x45, 0x69, 0xb3, 0x39, 0x99, 0x4f, 0x9f, - 0x9f, 0xb5, 0xc7, 0x16, - 0x31, 0xcd, 0x5c, 0xbe, 0x4b, 0xcf, 0xbb, 0x16, 0x4b, 0x68, 0xd1, 0x62, - 0x62, 0x1c, 0x8a, 0x3a, - 0x34, 0x8f, 0x7c, 0x87, 0x63, 0x1b, 0x26, 0x55, 0x63, 0xe9, 0x5b, 0x68, - 0x68, 0xd4, 0x12, 0xff, - 0x66, 0xb0, 0x46, 0x8b, 0xb6, 0x0c, 0x6e, 0xae, 0xb6, 0xc5, 0x17, 0xcc, - 0xcc, 0xa7, 0x08, 0x31, - }, - { /* 12 */ - 0x55, 0x95, 0x9e, 0xb1, 0xd0, 0xa1, 0x4c, 0xd9, 0x5a, 0x2f, 0xf9, 0x1c, - 0x4c, 0xf2, 0x1a, 0x52, - 0xfa, 0xed, 0x87, 0xcf, 0x85, 0x5d, 0x81, 0x6c, 0x55, 0x48, 0x8b, 0x1e, - 0x81, 0xe1, 0x58, 0x1c, - 0x0c, 0xbe, 0x0a, 0x56, 0x48, 0xac, 0xcc, 0x72, 0x67, 0x5c, 0x45, 0x58, - 0xcc, 0xf1, 0x09, 0x1a, - 0x52, 0x31, 0x7b, 0x77, 0xfa, 0xee, 0x3b, 0x0a, 0xaf, 0x0c, 0xfb, 0x83, - 0x3b, 0xb1, 0x8e, 0x02, - 0xa3, 0xc6, 0x13, 0x28, 0x1d, 0x50, 0x01, 0xc7, 0x68, 0x3b, 0x37, 0x5a, - 0x01, 0xe2, 0x4b, 0x54, - 0x73, 0x1c, 0xab, 0xc9, 0xf7, 0x51, 0x4f, 0x53, 0xe2, 0x62, 0xa0, 0xf2, - 0x4f, 0x17, 0xc7, 0xae, - 0xe1, 0x9c, 0x70, 0x97, 0x07, 0xed, 0xe9, 0x75, 0xf2, 0xe7, 0x81, 0xb8, - 0xe9, 0x6d, 0xd9, 0xcf, - 0x81, 0x25, 0x20, 0x62, 0x02, 0xc4, 0x46, 0x63, 0x4c, 0x42, 0xec, 0x3d, - 0x46, 0xe9, 0x91, 0x1f, - 0x86, 0x81, 0xc5, 0xa4, 0x28, 0x8b, 0x31, 0xb0, 0xb9, 0x61, 0xee, 0xa2, - 0x31, 0xaa, 0x05, 0x4f, - 0x02, 0x35, 0x03, 0x19, 0x1c, 0x32, 0x22, 0x17, 0x4e, 0x1a, 0x41, 0xa5, - 0x22, 0x77, 0xe2, 0xba, - 0x6c, 0x07, 0x5a, 0xa3, 0x4d, 0x85, 0x63, 0x64, 0xd9, 0xf9, 0x28, 0xdd, - 0x63, 0x75, 0x41, 0xca, - 0xdf, 0xaa, 0x51, 0x43, 0xb0, 0x86, 0xb1, 0x1b, 0x84, 0x12, 0x52, 0xe6, - 0xb1, 0xa9, 0x16, 0x07, - 0x4e, 0xe4, 0x69, 0xe9, 0x52, 0x11, 0x24, 0xc0, 0xfd, 0x80, 0xf3, 0xba, - 0x24, 0x7e, 0x9b, 0x81, - 0xe8, 0xb3, 0x9c, 0x1e, 0x79, 0x3c, 0x70, 0xc3, 0x2e, 0x82, 0x87, 0xda, - 0x70, 0xa8, 0xa6, 0x3f, - 0x2e, 0x5d, 0x39, 0x1c, 0x57, 0x38, 0x8b, 0xd6, 0x43, 0x25, 0x9e, 0x3f, - 0x8b, 0xfa, 0xd3, 0x51, - 0x3d, 0xf8, 0xc2, 0x20, 0xa5, 0x40, 0x6b, 0x93, 0x1f, 0xe2, 0x53, 0x48, - 0x6b, 0x69, 0x5c, 0x2f, - 0x29, 0xf9, 0xdc, 0xda, 0x7d, 0x77, 0xfc, 0x05, 0xb6, 0x06, 0x9c, 0xa0, - 0xfc, 0xb9, 0x47, 0x01, - 0x7d, 0x97, 0xa2, 0x86, 0xa3, 0xcf, 0xa1, 0x36, 0xcb, 0x24, 0xa4, 0x0f, - 0xa1, 0x91, 0x2c, 0x0e, - 0x27, 0x72, 0xd5, 0x95, 0x29, 0xe9, 0x12, 0x60, 0x9f, 0x40, 0x98, 0x5d, - 0x12, 0x3f, 0xac, 0xa1, - 0x35, 0x2c, 0xce, 0x44, 0xd5, 0x88, 0xe3, 0xcf, 0xe4, 0x8a, 0x94, 0x99, - 0xe3, 0x76, 0x52, 0x82, - 0xcc, 0x0f, 0xaa, 0x7f, 0x42, 0xfe, 0x51, 0x5e, 0xd8, 0xd5, 0x9f, 0x91, - 0x51, 0x3a, 0x99, 0x79, - 0xd6, 0x85, 0xbd, 0xca, 0xce, 0x57, 0x28, 0xad, 0x58, 0x77, 0x54, 0x84, - 0x28, 0x6c, 0x69, 0xf7, - 0x87, 0x7a, 0x25, 0x49, 0x26, 0x92, 0x20, 0x5a, 0x9e, 0x6c, 0x2f, 0x11, - 0x20, 0x70, 0x74, 0x12, - 0xc9, 0x9e, 0x4c, 0xa0, 0x74, 0x83, 0x04, 0x9a, 0x63, 0xec, 0xdc, 0xab, - 0x04, 0x0e, 0xef, 0x93, - 0x6b, 0xa3, 0xbf, 0x65, 0x67, 0xca, 0x14, 0xb7, 0x2c, 0xda, 0x2a, 0x42, - 0x14, 0x36, 0xd5, 0x9a, - 0x32, 0x88, 0x2b, 0x82, 0xff, 0xc7, 0x94, 0x1c, 0x11, 0xa9, 0x96, 0x06, - 0x94, 0x35, 0xc6, 0xd2, - 0xcd, 0xf4, 0x4a, 0x92, 0x4c, 0xe7, 0x40, 0xb4, 0xff, 0xd8, 0x5e, 0x22, - 0x40, 0xe0, 0xe8, 0x24, - 0x23, 0x18, 0xd3, 0xa7, 0x11, 0x8d, 0x56, 0x4e, 0x03, 0x74, 0x1a, 0xd4, - 0x56, 0xd1, 0xab, 0x16, - 0x96, 0xea, 0xdd, 0x6c, 0xc8, 0xd8, 0xe2, 0x08, 0x8c, 0xb1, 0xa3, 0xc3, - 0xe2, 0x94, 0x19, 0xd6, - 0xb4, 0x09, 0xee, 0x26, 0xd7, 0x4c, 0xa5, 0xac, 0xa8, 0xc8, 0x78, 0xa4, - 0xa5, 0x9f, 0xc3, 0x9d, - 0x92, 0x80, 0xdb, 0x5e, 0xf0, 0xbc, 0xa6, 0x26, 0x10, 0x85, 0x21, 0x4a, - 0xa6, 0x7a, 0x1e, 0x61, - 0xc6, 0xee, 0xa5, 0x02, 0x2e, 0x04, 0xfb, 0x15, 0x6d, 0xa7, 0x19, 0xe5, - 0xfb, 0x52, 0x75, 0x6e, - 0x91, 0x4e, 0x38, 0xaa, 0xe2, 0x97, 0x95, 0xdb, 0x79, 0x92, 0xa1, 0x5c, - 0x95, 0xd7, 0x8d, 0x86, - 0xe4, 0x0d, 0x96, 0x48, 0x31, 0x90, 0xbc, 0xb1, 0x49, 0xde, 0xc2, 0x82, - 0xbc, 0x59, 0xaf, 0x25, - 0xd2, 0xef, 0xbb, 0xf8, 0xf6, 0x33, 0x6c, 0x83, 0xc4, 0x43, 0xd6, 0x0d, - 0x6c, 0x82, 0x6e, 0x40, - 0x56, 0x5b, 0x7d, 0x45, 0xc2, 0x8a, 0x7f, 0x24, 0x33, 0x38, 0x79, 0x0a, - 0x7f, 0x5f, 0x89, 0xb5, - 0x88, 0x0a, 0xcc, 0xeb, 0x7c, 0x15, 0xdf, 0xd5, 0x90, 0x27, 0xea, 0x5f, - 0xdf, 0x2c, 0xee, 0xef, - 0x6f, 0xc9, 0xb9, 0x57, 0x5f, 0xae, 0x50, 0x99, 0xb0, 0xee, 0xa8, 0xcb, - 0x50, 0xd8, 0xd2, 0x2d, - 0x10, 0x6b, 0x18, 0xc8, 0xe0, 0x53, 0xd3, 0xb8, 0x35, 0xd0, 0x4d, 0x61, - 0xd3, 0x3e, 0x1c, 0x99, - 0x59, 0x2b, 0x94, 0xe7, 0x98, 0x0d, 0x80, 0xab, 0x3d, 0x73, 0xbc, 0x44, - 0x80, 0x03, 0x13, 0x48, - 0x63, 0x77, 0xb3, 0x01, 0x17, 0x02, 0x9c, 0xeb, 0xd7, 0xb2, 0xed, 0x93, - 0x9c, 0x29, 0xdb, 0x37, - 0xca, 0x50, 0xaf, 0x54, 0x66, 0xa8, 0x37, 0x67, 0x0a, 0xfb, 0x5c, 0xbd, - 0x37, 0xa3, 0x7c, 0x74, - 0x79, 0xfd, 0xa4, 0xb4, 0x9b, 0xab, 0xe5, 0x18, 0x57, 0x10, 0x26, 0x86, - 0xe5, 0x7f, 0x2b, 0xb9, - 0xb2, 0x56, 0xeb, 0x0d, 0xf3, 0x1a, 0xc3, 0x95, 0x7a, 0xe6, 0xbb, 0x88, - 0xc3, 0x06, 0x26, 0x90, - 0x28, 0x02, 0x3c, 0x37, 0x73, 0x6e, 0xed, 0xef, 0x91, 0x0b, 0x5d, 0x13, - 0xed, 0x63, 0x36, 0x5c, - 0xea, 0x86, 0x9f, 0x07, 0x65, 0x0e, 0x52, 0xd4, 0x60, 0x98, 0xc6, 0x7f, - 0x52, 0xdf, 0x44, 0x85, - 0xec, 0xd9, 0x9a, 0x2c, 0x41, 0x58, 0x34, 0xed, 0xb2, 0xb6, 0x05, 0x53, - 0x34, 0x46, 0xa1, 0x88, - 0x2a, 0x37, 0x3f, 0x2e, 0x6f, 0x5c, 0xcf, 0xf8, 0xdf, 0x11, 0x1c, 0xb6, - 0xcf, 0x14, 0xd4, 0xe6, - 0xc4, 0xdb, 0xa6, 0x1b, 0x32, 0x36, 0xd9, 0x02, 0x23, 0xbd, 0x58, 0x40, - 0xd9, 0x25, 0x97, 0xd4, - 0xa7, 0xac, 0x15, 0x1a, 0x25, 0x34, 0x45, 0xe9, 0xf4, 0x0f, 0xb5, 0xd3, - 0x45, 0x0c, 0x4c, 0xe3, - 0x17, 0xcf, 0xfd, 0x0e, 0xca, 0x1c, 0xa4, 0x6b, 0xc0, 0xf3, 0x4f, 0xfe, - 0xa4, 0x7d, 0x88, 0xc9, - 0x5f, 0x74, 0x91, 0xcc, 0xbc, 0x5b, 0xe6, 0x92, 0xef, 0x5d, 0x7f, 0x68, - 0xe6, 0x9a, 0xf6, 0x45, - 0x62, 0x8c, 0x53, 0xec, 0x19, 0x1b, 0x8d, 0x01, 0xf0, 0xbf, 0x2c, 0x20, - 0x8d, 0xf3, 0xaa, 0x6a, - 0x5d, 0x41, 0x92, 0xd5, 0xa0, 0x69, 0xc4, 0x85, 0xa1, 0x47, 0x3e, 0xcd, - 0xc4, 0xed, 0x14, 0xff, - 0x06, 0x5f, 0x05, 0x2b, 0x24, 0x56, 0x66, 0x39, 0xd2, 0x2e, 0xc3, 0x2c, - 0x66, 0x99, 0xe5, 0x0d, - 0x3a, 0x5c, 0x27, 0xe6, 0x8f, 0x0f, 0x1c, 0x40, 0xea, 0xc1, 0x51, 0xd7, - 0x1c, 0x2a, 0xc8, 0x7f, - 0x39, 0x92, 0xc4, 0x12, 0x9d, 0x24, 0x2f, 0xbd, 0x83, 0xd6, 0xd1, 0xc1, - 0x2f, 0x87, 0x5b, 0x98, - 0xa1, 0xf3, 0x10, 0x31, 0x01, 0x62, 0x23, 0xd0, 0x26, 0x21, 0x76, 0xff, - 0x23, 0x95, 0xa9, 0xee, - 0x07, 0xa4, 0xe5, 0xc6, 0x2a, 0x4f, 0x77, 0xd3, 0xf5, 0x23, 0x02, 0x9f, - 0x77, 0x43, 0x94, 0x50, - 0x6d, 0xfc, 0xba, 0x4e, 0x43, 0x9c, 0x72, 0x8e, 0xfe, 0xf4, 0xe9, 0x6e, - 0x72, 0xaf, 0x30, 0x97, - 0x21, 0x2d, 0xd0, 0xbe, 0x0d, 0xbf, 0x74, 0x59, 0x4d, 0x6e, 0x5b, 0x71, - 0x74, 0xa6, 0x49, 0xac, - 0xba, 0x82, 0xe7, 0x69, 0x83, 0xd2, 0x4b, 0xc9, 0x81, 0x8e, 0x7c, 0x59, - 0x4b, 0x19, 0x28, 0x3d, - 0x69, 0x96, 0xbc, 0x7c, 0x7b, 0xf8, 0x36, 0xa0, 0x62, 0xc0, 0x6b, 0xe7, - 0x36, 0x41, 0x37, 0x20, - 0x37, 0x19, 0xcd, 0x5d, 0xc9, 0xba, 0xc1, 0xd8, 0xaa, 0x90, 0xd5, 0x3c, - 0xc1, 0x01, 0xb0, 0x38, - 0x3e, 0x36, 0x21, 0xd4, 0xb7, 0x6b, 0x58, 0x6e, 0x76, 0xf5, 0xd3, 0x5e, - 0x58, 0xc4, 0xcf, 0xc8, - 0x25, 0x47, 0xd6, 0x8c, 0x35, 0xdb, 0x30, 0x77, 0xd1, 0x5a, 0xd9, 0xf8, - 0x30, 0x48, 0x4e, 0x1b, - 0xc1, 0x4a, 0x40, 0xc4, 0x04, 0x4b, 0x8c, 0xc6, 0x98, 0x84, 0x1b, 0x7a, - 0x8c, 0x11, 0xe1, 0x3e, - 0xf7, 0xa8, 0x6d, 0x74, 0xc3, 0xe8, 0x5c, 0xf4, 0x15, 0x19, 0x0f, 0xf5, - 0x5c, 0xca, 0x20, 0x5b, - 0xd4, 0xb0, 0xbe, 0xd3, 0xd2, 0x65, 0x0a, 0xba, 0x16, 0x6d, 0x15, 0x21, - 0x0a, 0x1b, 0x8b, 0x4d, - 0x70, 0xd2, 0x48, 0x3d, 0xe5, 0x7a, 0x7c, 0xae, 0x8b, 0x75, 0x20, 0xe4, - 0x7c, 0xba, 0x54, 0x49, - 0xf9, 0x23, 0x64, 0x3b, 0x97, 0x76, 0xb2, 0x91, 0x3c, 0x5f, 0x0b, 0x08, - 0xb2, 0x4c, 0xcb, 0xfb, - 0x9b, 0xaf, 0x37, 0xd7, 0x8e, 0x6d, 0x3f, 0x90, 0xcc, 0xe0, 0x27, 0x28, - 0x3f, 0xbf, 0x61, 0x91, - 0x30, 0xbd, 0x28, 0x9b, 0xe3, 0xf5, 0xb6, 0x0b, 0x5f, 0xb3, 0xd7, 0xa3, - 0xb6, 0x42, 0x24, 0x68, - 0xf8, 0xd8, 0x84, 0xd6, 0x99, 0x6f, 0xa3, 0x7b, 0x1b, 0x52, 0xca, 0xbb, - 0xa3, 0x96, 0xba, 0xa6, - 0x4a, 0x8e, 0x6f, 0xdb, 0x6a, 0x75, 0x60, 0xee, 0x61, 0xb4, 0x71, 0x33, - 0x60, 0x90, 0x9c, 0x36, - 0x2d, 0x93, 0xda, 0xe8, 0x45, 0x13, 0xb8, 0x2b, 0x2a, 0x32, 0x1e, 0x29, - 0xb8, 0x57, 0x40, 0xb6, - 0xbf, 0x13, 0x01, 0xb6, 0xb5, 0xaf, 0x1e, 0x0d, 0x3a, 0xb7, 0x3f, 0x63, - 0x1e, 0x2d, 0x5e, 0xd7, - 0x40, 0x6f, 0x60, 0xa6, 0x06, 0x8f, 0xca, 0xa5, 0xd4, 0xc6, 0xf7, 0x47, - 0xca, 0xf8, 0x70, 0x21, - 0x49, 0x40, 0x8c, 0x2f, 0x78, 0x5e, 0x53, 0x13, 0x08, 0xa3, 0xf1, 0x25, - 0x53, 0x3d, 0x0f, 0xd1, - 0x5e, 0x8f, 0x71, 0x21, 0xb2, 0x42, 0xf7, 0x78, 0xc8, 0x50, 0xbe, 0xdb, - 0xf7, 0x40, 0x87, 0x18, - 0x46, 0x30, 0x65, 0x8d, 0x22, 0xd9, 0xac, 0x9c, 0x06, 0xe8, 0x34, 0x6b, - 0xac, 0x61, 0x95, 0x2c, - 0xae, 0x83, 0xf9, 0x93, 0x5b, 0xe5, 0xdc, 0x5f, 0x28, 0x6a, 0xb3, 0xb1, - 0xdc, 0xc9, 0x33, 0x13, - 0x65, 0x28, 0xb6, 0x2a, 0x33, 0x54, 0xfa, 0xd2, 0x05, 0x9c, 0x2e, 0xbf, - 0xfa, 0xb0, 0x3e, 0x3a, - 0x24, 0xbc, 0x36, 0x61, 0x3b, 0xc2, 0x21, 0x9d, 0xf6, 0x57, 0x18, 0x4b, - 0x21, 0x92, 0x3f, 0x46, - 0x5c, 0xba, 0x72, 0x38, 0xae, 0x70, 0xd5, 0x6f, 0x86, 0x4a, 0xff, 0x7e, - 0xd5, 0x37, 0x65, 0xa2, - 0x72, 0xe7, 0x4b, 0x24, 0xf9, 0x48, 0x5e, 0xb9, 0xc5, 0x6f, 0x61, 0x41, - 0x5e, 0xcd, 0xb6, 0xf3, - 0x97, 0x11, 0x3d, 0x81, 0xc6, 0xc1, 0xf3, 0xe2, 0xab, 0xbc, 0x62, 0x70, - 0xf3, 0x4e, 0x68, 0x8b, - 0xaf, 0x78, 0x19, 0x7e, 0x55, 0xfc, 0xcd, 0xb5, 0x0f, 0x67, 0x72, 0x02, - 0xcd, 0x13, 0x42, 0x4e, - 0x0d, 0x45, 0xea, 0xbb, 0x46, 0xb5, 0xdd, 0x98, 0x40, 0x51, 0x84, 0xeb, - 0xdd, 0x2b, 0x78, 0x47, - 0xb9, 0x4c, 0x04, 0x9d, 0x91, 0xf9, 0x78, 0x34, 0xe8, 0x99, 0xfc, 0x4f, - 0x78, 0xb4, 0xbb, 0xda, - 0x45, 0xfe, 0x86, 0x79, 0x30, 0xf2, 0x9f, 0x61, 0x6f, 0xff, 0xb4, 0x7d, - 0x9f, 0xcc, 0x06, 0xcb, - 0x76, 0x8d, 0x4d, 0x16, 0xc1, 0x2c, 0x1a, 0x97, 0x59, 0x5b, 0xe3, 0xc8, - 0x1a, 0x23, 0xb1, 0x44, - 0x43, 0xa1, 0x83, 0x52, 0x14, 0xa4, 0xf9, 0x58, 0xbd, 0xd1, 0x77, 0x51, - 0xf9, 0x55, 0xe3, 0xc6, - 0x51, 0xff, 0x98, 0x83, 0xe8, 0xc5, 0x08, 0xf7, 0xc6, 0x1b, 0x7b, 0x95, - 0x08, 0x1c, 0x1d, 0xe5, - 0x85, 0x4f, 0x26, 0x50, 0x3a, 0xa0, 0x02, 0x4d, 0xd0, 0x76, 0x6e, 0xb4, - 0x02, 0x07, 0x96, 0xa8, - 0x5a, 0xe5, 0x77, 0x13, 0x8a, 0x26, 0xb3, 0x56, 0x54, 0x64, 0x3c, 0x52, - 0xb3, 0xae, 0x80, 0xaf, - 0x7c, 0x6c, 0x42, 0x6b, 0xad, 0xd6, 0xb0, 0xdc, 0xec, 0x29, 0x65, 0xbc, - 0xb0, 0x4b, 0x5d, 0x53, - 0xd0, 0xda, 0xb8, 0xe1, 0xea, 0x01, 0x4e, 0x94, 0x8a, 0x59, 0x97, 0xa8, - 0x4e, 0xf5, 0x8c, 0xfa, - 0x08, 0xd4, 0x0c, 0x64, 0x70, 0xc8, 0x88, 0x5c, 0xfb, 0x68, 0xc7, 0xd1, - 0x88, 0x1f, 0x0e, 0xad, - 0x05, 0x91, 0xe6, 0xdf, 0x36, 0x7d, 0x55, 0xc4, 0xbb, 0x39, 0x43, 0x3a, - 0x55, 0x34, 0x76, 0xea, - 0xb8, 0xb7, 0xe4, 0x70, 0x9f, 0xe0, 0x69, 0xde, 0xcf, 0x94, 0x3d, 0xfc, - 0x69, 0x6e, 0xca, 0x87, - 0x0f, 0x70, 0xe9, 0xa2, 0x5a, 0x87, 0xff, 0x8f, 0x0e, 0x4b, 0xc5, 0x4e, - 0xff, 0x5c, 0x9a, 0xfd, - 0x7a, 0x33, 0x47, 0x40, 0x89, 0x80, 0xd6, 0xe5, 0x3e, 0x07, 0xa6, 0x90, - 0xd6, 0xd2, 0xb8, 0x5e, - 0xff, 0x7c, 0x61, 0x10, 0xb3, 0x20, 0xd4, 0xa8, 0xee, 0x71, 0xc8, 0x24, - 0xd4, 0xd5, 0x2e, 0xf6, - 0xda, 0x3b, 0xb7, 0x9c, 0x86, 0xfb, 0xe4, 0xdf, 0x3f, 0x2b, 0x11, 0xdc, - 0xe4, 0x9d, 0x60, 0xed, - 0xdb, 0xc0, 0x57, 0x71, 0x88, 0xe2, 0xf5, 0x35, 0x18, 0x26, 0xd0, 0x6f, - 0xf5, 0x47, 0x11, 0xb0, - 0xf2, 0x39, 0x8b, 0xab, 0xf5, 0x95, 0x09, 0x30, 0xae, 0x20, 0x4c, 0xcf, - 0x09, 0xfe, 0x56, 0xb1, - 0x99, 0x9a, 0x34, 0xce, 0x92, 0x5f, 0x1d, 0x87, 0x82, 0xfa, 0x66, 0x8d, - 0x1d, 0xc8, 0x83, 0x2b, - 0xa9, 0x27, 0x1c, 0x55, 0x71, 0xaa, 0xab, 0x8c, 0xdd, 0x49, 0xb1, 0x2e, - 0xab, 0x8a, 0xa7, 0x43, - 0x54, 0x6e, 0x7e, 0x5c, 0xde, 0xb8, 0x5d, 0x33, 0x7d, 0x22, 0x38, 0xaf, - 0x5d, 0x28, 0x6b, 0x0f, - 0x95, 0x24, 0x3e, 0x98, 0xda, 0xf3, 0xd1, 0xf5, 0xe5, 0xa6, 0x23, 0xd5, - 0xd1, 0x39, 0x8a, 0x31, - 0x68, 0x6d, 0x5c, 0x91, 0x75, 0xe1, 0x27, 0x4a, 0x45, 0xcd, 0xaa, 0x54, - 0x27, 0x9b, 0x46, 0x7d, - 0x1c, 0xd5, 0x12, 0x9e, 0xa8, 0xff, 0x1f, 0xca, 0x52, 0x8c, 0x08, 0x39, - 0x1f, 0xcf, 0x15, 0x83, - 0x6a, 0x58, 0x5f, 0x88, 0x69, 0xd3, 0x05, 0x5d, 0x0b, 0xd7, 0xeb, 0xf1, - 0x05, 0xec, 0xa4, 0xc7, - 0x0e, 0x8b, 0x09, 0x4f, 0x54, 0x9e, 0xee, 0x65, 0x29, 0x46, 0x04, 0xfd, - 0xee, 0x86, 0xeb, 0xa0, - 0x93, 0x7b, 0x3b, 0xb3, 0xfe, 0xa5, 0xb7, 0xcc, 0x37, 0x88, 0xe0, 0xf9, - 0xb7, 0xa0, 0x6f, 0x3c, - 0xa8, 0xdc, 0xfc, 0xb8, 0x7f, 0xb3, 0xba, 0x66, 0xfa, 0x44, 0x70, 0x9d, - 0xba, 0x50, 0xd6, 0x1e, - 0xcf, 0xc1, 0x49, 0x8b, 0x50, 0xd5, 0x62, 0xa3, 0xb1, 0xc2, 0x1f, 0x87, - 0x62, 0x97, 0x0a, 0x9e, - 0xc2, 0x84, 0xa3, 0x30, 0x16, 0x60, 0xbf, 0x3b, 0xf1, 0x93, 0x9b, 0x6c, - 0xbf, 0xbc, 0x72, 0xd9, - 0xcb, 0xab, 0x4f, 0xb9, 0x68, 0xb1, 0x26, 0x8d, 0x2d, 0xf6, 0x9d, 0x0e, - 0x26, 0x79, 0x0d, 0x29, - 0x8e, 0x55, 0xc9, 0xc0, 0x58, 0x43, 0xb9, 0xec, 0x42, 0x09, 0x29, 0x73, - 0xb9, 0xb5, 0x0b, 0xe2, - 0x33, 0x73, 0xcb, 0x6f, 0xf1, 0xde, 0x85, 0xf6, 0x36, 0xa4, 0x57, 0xb5, - 0x85, 0xef, 0xb7, 0x8f, - 0x15, 0xfa, 0xfe, 0x17, 0xd6, 0x2e, 0x86, 0x7c, 0x8e, 0xe9, 0x0e, 0x5b, - 0x86, 0x0a, 0x6a, 0x73, - 0x89, 0xf1, 0x2c, 0x06, 0x72, 0x0c, 0xce, 0x3f, 0xb7, 0x2a, 0x2b, 0xec, - 0xce, 0xf6, 0x9f, 0xb2, - 0xd1, 0x21, 0x58, 0x0c, 0xe4, 0x18, 0x5f, 0x7e, 0xad, 0x54, 0x56, 0x1b, - 0x5f, 0x2f, 0xfd, 0xa7, - 0x1a, 0x8a, 0x17, 0xb5, 0x8c, 0xa9, 0x79, 0xf3, 0x80, 0xa2, 0xcb, 0x15, - 0x79, 0x56, 0xf0, 0x8e, - 0x98, 0x61, 0xd4, 0x23, 0x9c, 0x46, 0x0c, 0x6d, 0xa5, 0xf7, 0xa7, 0x3e, - 0x0c, 0x12, 0xf2, 0x76, - 0xce, 0x3a, 0xa9, 0x66, 0x5e, 0xcc, 0x73, 0x49, 0x96, 0xcf, 0xde, 0x34, - 0x73, 0x4d, 0x7b, 0xc3, - 0x1b, 0x71, 0xf7, 0x58, 0x82, 0xb0, 0x68, 0x19, 0xa7, 0xaf, 0x0a, 0xa6, - 0x68, 0x8c, 0x81, 0xd3, - 0xe3, 0xa9, 0x73, 0x8e, 0x1b, 0xdf, 0xcb, 0x62, 0xbc, 0xfd, 0xc0, 0x1d, - 0xcb, 0x1a, 0x3b, 0x75, - 0x9d, 0xf0, 0x32, 0xfc, 0xaa, 0x3b, 0x59, 0xa9, 0x1e, 0xce, 0xe4, 0x04, - 0x59, 0x26, 0x84, 0x9c, - 0x8c, 0x60, 0xca, 0xd9, 0x44, 0x71, 0x9b, 0xfb, 0x0c, 0x13, 0x68, 0xd6, - 0x9b, 0xc2, 0xe9, 0x58, - 0x6e, 0x32, 0x59, 0xba, 0x51, 0xb7, 0x41, 0x73, 0x97, 0xe3, 0x69, 0x78, - 0x41, 0x02, 0xa3, 0x70, - 0x66, 0xe6, 0x55, 0xde, 0x21, 0x7f, 0xc9, 0x2f, 0x6c, 0x8b, 0xae, 0xa9, - 0xc9, 0x1d, 0xad, 0xdd, - 0x58, 0xd0, 0x74, 0x0a, 0x96, 0x14, 0x91, 0x41, 0x1a, 0x7e, 0x7d, 0xf7, - 0x91, 0xd9, 0x62, 0x15, - 0x9a, 0x54, 0xd7, 0x3a, 0x80, 0x74, 0x2e, 0x7a, 0xeb, 0xed, 0xe6, 0x9b, - 0x2e, 0x65, 0x10, 0xcc, - 0x47, 0xcb, 0x85, 0x60, 0x2c, 0xc0, 0xbd, 0x76, 0x21, 0xe5, 0xf5, 0xd8, - 0xbd, 0xbb, 0xe4, 0x71, - 0x18, 0xbf, 0x14, 0xac, 0x90, 0x9b, 0x5b, 0xe4, 0xce, 0xb8, 0x8a, 0xb0, - 0x5b, 0x21, 0x12, 0x34, - 0xad, 0x4d, 0x1a, 0x67, 0x49, 0xce, 0xef, 0xa2, 0x41, 0x7d, 0x33, 0xa7, - 0xef, 0x64, 0xa0, 0xf4, - 0x1e, 0xe0, 0x11, 0x87, 0xb4, 0xcd, 0x3d, 0xdd, 0x1c, 0x96, 0x49, 0x9c, - 0x3d, 0xb8, 0xf7, 0x39, - 0xdc, 0x64, 0xb2, 0xb7, 0xa2, 0xad, 0x82, 0xe6, 0xed, 0x05, 0xd2, 0xf0, - 0x82, 0x04, 0x85, 0xe0, - 0xa4, 0x62, 0xf6, 0xee, 0x37, 0x1f, 0x76, 0x14, 0x9d, 0x18, 0x35, 0xc5, - 0x76, 0xa1, 0xdf, 0x04, - 0x34, 0xd7, 0x2e, 0xa9, 0xdb, 0x91, 0xf2, 0x25, 0xc3, 0x87, 0x55, 0x2a, - 0xf2, 0xac, 0x23, 0xdf, - 0xfd, 0x49, 0x62, 0x09, 0xaf, 0x12, 0xf6, 0xbf, 0xa0, 0x6b, 0x89, 0x81, - 0xf6, 0xa2, 0xcc, 0x4c, - 0x9f, 0xc5, 0x31, 0xe5, 0xb6, 0x09, 0x7b, 0xbe, 0x50, 0xd4, 0xa5, 0xa1, - 0x7b, 0x51, 0x66, 0x26, - 0x8f, 0xae, 0x29, 0x2d, 0x56, 0x5a, 0xa8, 0x06, 0x65, 0x04, 0xe8, 0xc0, - 0xa8, 0x6f, 0x7a, 0xbf, - 0xed, 0x22, 0x7a, 0xc1, 0x4f, 0x41, 0x25, 0x07, 0x95, 0xbb, 0xc4, 0xe0, - 0x25, 0x9c, 0xd0, 0xd5, - 0xf1, 0xf7, 0x68, 0x5f, 0xe7, 0xbe, 0x3a, 0xcd, 0xc7, 0x37, 0xcc, 0xd9, - 0x3a, 0x53, 0xc5, 0x56, - 0xe5, 0xf6, 0x76, 0xa5, 0x3f, 0x89, 0xad, 0x5b, 0x6e, 0xd3, 0x03, 0x31, - 0xad, 0x83, 0xde, 0x78, - 0x1f, 0x1b, 0xf1, 0x6a, 0xba, 0xd4, 0x2c, 0x37, 0x3b, 0x9b, 0x88, 0x2f, - 0x2c, 0x62, 0x86, 0x64, - 0x82, 0xeb, 0xc3, 0x96, 0x10, 0xef, 0x75, 0x9e, 0x25, 0x55, 0x6c, 0x2b, - 0x75, 0x44, 0x02, 0xf8, - 0xf0, 0x0c, 0x88, 0xb2, 0xe9, 0xa7, 0x2b, 0x27, 0xe0, 0x3a, 0x0d, 0x6a, - 0x2b, 0x89, 0xb4, 0x0b, - 0xe6, 0x38, 0x95, 0x51, 0x2d, 0xa2, 0x9e, 0xa6, 0x07, 0xc4, 0x83, 0x27, - 0x9e, 0x2e, 0x4d, 0x9f, - 0xc3, 0x7f, 0x43, 0xdd, 0x18, 0x79, 0xae, 0xd1, 0xd6, 0x9e, 0x5a, 0xdf, - 0xae, 0x66, 0x03, 0x84, - 0xef, 0x17, 0x79, 0xd8, 0x53, 0x73, 0x07, 0x10, 0xdb, 0xa1, 0x85, 0x45, - 0x07, 0xeb, 0x32, 0x6f, - 0x1d, 0x2e, 0xf2, 0x73, 0xa6, 0xe6, 0x0e, 0x20, 0x75, 0x81, 0xc9, 0x8a, - 0x0e, 0x15, 0x64, 0xde, - 0xc0, 0xb1, 0xa0, 0x29, 0x0a, 0x52, 0x9d, 0x2c, 0xbf, 0x89, 0xda, 0xc9, - 0x9d, 0xcb, 0x90, 0x63, - 0xf6, 0x53, 0x8d, 0x99, 0xcd, 0xf1, 0x4d, 0x1e, 0x32, 0x14, 0xce, 0x46, - 0x4d, 0x10, 0x51, 0x06, - 0x4b, 0x75, 0x8f, 0x36, 0x64, 0x6c, 0x71, 0x04, 0x46, 0xb9, 0xb0, 0x80, - 0x71, 0x4a, 0xed, 0x6b, - 0xee, 0xec, 0x99, 0x35, 0x5d, 0x6a, 0x16, 0xfa, 0xfc, 0xac, 0x44, 0xf6, - 0x16, 0x31, 0x43, 0x32, - 0xe9, 0x48, 0x7c, 0xf3, 0x77, 0x25, 0x61, 0x29, 0x09, 0x8f, 0x46, 0x69, - 0x61, 0x72, 0xd7, 0x62, - 0xe2, 0x52, 0x93, 0x63, 0x15, 0xc6, 0xda, 0x88, 0x9b, 0xf0, 0x01, 0xae, - 0xda, 0xc0, 0x4a, 0x28, - 0x16, 0x34, 0x1d, 0xe3, 0xc4, 0x05, 0xb5, 0x81, 0xe7, 0xfe, 0x8e, 0x4d, - 0xb5, 0xa7, 0xf9, 0x94, - 0x53, 0xca, 0x9b, 0x9a, 0xf4, 0xf7, 0x2a, 0xe0, 0x88, 0x01, 0x3a, 0x30, - 0x2a, 0x6b, 0xff, 0x5f, - 0xdd, 0x9f, 0x52, 0x5a, 0xac, 0xb4, 0x93, 0x0c, 0xca, 0x08, 0x13, 0x43, - 0x93, 0xde, 0xf4, 0xbd, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x01, 0xfb, 0xe0, 0xed, 0x0e, 0x19, 0x11, 0xea, 0x27, 0x0d, 0xc1, 0xb3, - 0x11, 0xda, 0x71, 0x5d, - 0x8b, 0xc4, 0x2f, 0x1f, 0x6e, 0x3e, 0xec, 0x28, 0xf9, 0x30, 0x6a, 0x49, - 0xec, 0x81, 0x7d, 0x08, - 0xf3, 0xc2, 0x6b, 0x46, 0xfb, 0x8c, 0x18, 0xda, 0x89, 0x2d, 0x8d, 0x7c, - 0x18, 0x24, 0x27, 0xec, - 0xde, 0x51, 0xb1, 0xae, 0xbe, 0x9f, 0xa0, 0xf1, 0xa3, 0x1f, 0x93, 0x55, - 0xa0, 0x73, 0x67, 0x5a, - 0x57, 0xa0, 0x9d, 0xa8, 0xcc, 0x93, 0x6e, 0xce, 0x14, 0x35, 0xb8, 0xb9, - 0x6e, 0x85, 0xf8, 0xe8, - 0x9e, 0x3e, 0xd1, 0x08, 0xb8, 0x10, 0x6a, 0x54, 0x77, 0xd9, 0x64, 0x12, - 0x6a, 0x8b, 0x17, 0x7b, - 0x38, 0x69, 0x24, 0xff, 0x93, 0x3d, 0x3e, 0x57, 0xa4, 0xdb, 0x10, 0x72, - 0x3e, 0x5d, 0x2a, 0xc5, - 0xbe, 0xe8, 0xe1, 0x5b, 0xbb, 0xb6, 0x0f, 0xe7, 0x1d, 0xba, 0xfe, 0xd0, - 0x0f, 0xf7, 0x2f, 0x8a, - 0x8a, 0x3f, 0xcf, 0xf2, 0x60, 0x27, 0xfd, 0xc2, 0xde, 0x3d, 0xab, 0xfa, - 0xfd, 0x5b, 0x0c, 0x55, - 0x4f, 0x1f, 0x89, 0x04, 0x5c, 0x08, 0x35, 0x2a, 0xda, 0x8d, 0x32, 0x09, - 0x35, 0xa4, 0xea, 0xdc, - 0xa2, 0x3d, 0xf3, 0xc5, 0x13, 0x49, 0x10, 0x2d, 0x4f, 0x36, 0xf6, 0xe9, - 0x10, 0x38, 0x3a, 0x09, - 0x61, 0x42, 0xb0, 0x18, 0x0b, 0x30, 0xbe, 0xfc, 0x99, 0xa8, 0xac, 0x36, - 0xbe, 0x5e, 0x39, 0x8d, - 0x9c, 0x0b, 0xd2, 0x11, 0xa4, 0x22, 0x48, 0x43, 0x39, 0xc3, 0x25, 0xb7, - 0x48, 0xfc, 0xf5, 0xc1, - 0x26, 0x89, 0x35, 0x78, 0x27, 0xf0, 0x03, 0x8a, 0xb8, 0x4d, 0x59, 0xee, - 0x03, 0xe5, 0xdd, 0xfc, - 0x60, 0xb9, 0x50, 0xf5, 0x05, 0x29, 0xaf, 0x16, 0xbe, 0xa5, 0x6d, 0x85, - 0xaf, 0x84, 0x48, 0xd0, - 0x78, 0x06, 0x44, 0x59, 0x95, 0xb2, 0xf4, 0xf2, 0x70, 0x1d, 0xe7, 0x35, - 0xf4, 0xa5, 0x5a, 0xe4, - 0xd9, 0xf5, 0x54, 0x68, 0x94, 0xd0, 0xd7, 0x22, 0x56, 0x3c, 0x91, 0xca, - 0xd7, 0x30, 0xf3, 0x0a, - 0x3c, 0x03, 0x22, 0xcd, 0xab, 0x59, 0x7a, 0x79, 0x38, 0xef, 0x92, 0xfb, - 0x7a, 0xb3, 0x2d, 0x72, - 0xfb, 0x16, 0x67, 0x22, 0x8b, 0x44, 0x90, 0x86, 0x72, 0x45, 0x4a, 0xad, - 0x90, 0x3b, 0x29, 0x41, - 0xc7, 0x15, 0x45, 0xef, 0x20, 0x1d, 0xea, 0xff, 0x4a, 0xaa, 0xd8, 0x56, - 0xea, 0x88, 0x04, 0x33, - 0xfe, 0x87, 0x81, 0xfd, 0xbd, 0x39, 0xc5, 0x42, 0xc9, 0x7c, 0x09, 0x97, - 0xc5, 0x0f, 0x5f, 0xab, - 0x36, 0xe2, 0x2d, 0xb0, 0xc7, 0xa3, 0xd0, 0x32, 0x8d, 0x9d, 0x14, 0x8f, - 0xd0, 0xdb, 0xc1, 0x65, - 0xa0, 0x08, 0xf0, 0xdc, 0x0f, 0x7b, 0x32, 0x3a, 0x01, 0x2c, 0xb7, 0x4c, - 0x32, 0x4f, 0xd8, 0xb3, - 0x50, 0x04, 0x78, 0x6e, 0xe6, 0xdc, 0x19, 0x1d, 0xe1, 0x16, 0xba, 0x26, - 0x19, 0xc6, 0x6c, 0xb8, - 0xf5, 0x9d, 0x6e, 0x6d, 0xdf, 0xda, 0x7e, 0xe3, 0x5b, 0x03, 0x4e, 0x50, - 0x7e, 0xbd, 0xc2, 0xe1, - 0xaa, 0xe9, 0xff, 0xa1, 0x63, 0x81, 0x98, 0x71, 0xb4, 0x5e, 0x31, 0x38, - 0x98, 0x27, 0x34, 0xa4, - 0xd3, 0x14, 0x5b, 0x15, 0xf8, 0x2a, 0x7d, 0x69, 0xe3, 0x4e, 0x17, 0xbe, - 0x7d, 0x58, 0x1f, 0x1d, - 0x41, 0x94, 0x80, 0x4b, 0x08, 0x96, 0xdb, 0x4f, 0xf3, 0xcb, 0x36, 0xf4, - 0xdb, 0x22, 0x01, 0x7c, - 0x7f, 0xa2, 0xa1, 0x9f, 0xbf, 0xfd, 0x83, 0x21, 0x85, 0x3e, 0xe5, 0xaa, - 0x83, 0xe6, 0xce, 0xb4, - 0xa5, 0x99, 0x16, 0x03, 0x39, 0x06, 0x67, 0xfe, 0xba, 0x15, 0xf4, 0x76, - 0x67, 0x7b, 0xae, 0x59, - 0xb0, 0x63, 0xe8, 0x14, 0xef, 0x28, 0xe1, 0x82, 0x34, 0xfc, 0xfa, 0x2d, - 0xe1, 0x71, 0xc4, 0x2a, - 0x48, 0xbb, 0x6c, 0xc2, 0x76, 0x47, 0x42, 0xf9, 0x2f, 0xae, 0x30, 0x96, - 0x42, 0xe7, 0x7e, 0x8c, - 0x20, 0xd6, 0x30, 0x53, 0x03, 0xa6, 0x65, 0xb3, 0x6a, 0x63, 0x9a, 0xc2, - 0x65, 0x7c, 0x38, 0xf1, - 0xf4, 0x66, 0x8e, 0x80, 0xd1, 0xc3, 0x6f, 0x09, 0x7c, 0x0e, 0x8f, 0xe3, - 0x6f, 0x67, 0xb3, 0xbc, - 0x0b, 0x1a, 0xef, 0x90, 0x62, 0xe3, 0xbb, 0xa1, 0x92, 0x7f, 0x47, 0xc7, - 0xbb, 0xb2, 0x9d, 0x4a, - 0xd8, 0x0e, 0xb4, 0x85, 0x9a, 0xc9, 0xc6, 0xc8, 0x71, 0x31, 0x50, 0x79, - 0xc6, 0xea, 0x82, 0x57, - 0xb7, 0xc7, 0x0d, 0xd2, 0xc5, 0x67, 0x96, 0x51, 0xc1, 0xdf, 0xf8, 0xb2, - 0x96, 0x32, 0x50, 0x7a, - 0xb1, 0x98, 0x08, 0xf9, 0xe1, 0x31, 0xf0, 0x68, 0x13, 0xf1, 0x3b, 0x9e, - 0xf0, 0xab, 0xb5, 0x77, - 0xd5, 0x4b, 0x5e, 0x3e, 0xdc, 0x7c, 0x1b, 0x50, 0x31, 0x60, 0xd4, 0x92, - 0x1b, 0xc1, 0xfa, 0x10, - 0x22, 0xe3, 0x33, 0x4a, 0x1f, 0x94, 0x47, 0xa4, 0x24, 0x79, 0xdb, 0x67, - 0x47, 0x0b, 0xda, 0x4b, - 0x4c, 0xd1, 0x6a, 0xf0, 0x4e, 0x23, 0x06, 0xd7, 0xb3, 0x9a, 0xb2, 0x1f, - 0x06, 0x09, 0x79, 0x3b, - 0x3f, 0xcd, 0xc1, 0x39, 0xb9, 0x72, 0x49, 0x84, 0x51, 0xf8, 0x12, 0xed, - 0x49, 0x1e, 0xbe, 0x95, - 0x75, 0x43, 0xae, 0xe2, 0xd3, 0x07, 0x29, 0x6a, 0x30, 0x4c, 0x63, 0xde, - 0x29, 0x8e, 0x22, 0xa3, - 0x19, 0x44, 0xf4, 0x41, 0x9e, 0x82, 0x4a, 0x0e, 0xe9, 0xb5, 0x4b, 0x03, - 0x4a, 0xfb, 0x63, 0x69, - 0x74, 0xb8, 0x4e, 0x0f, 0xdd, 0x1e, 0x38, 0x80, 0x17, 0x41, 0xa2, 0x6d, - 0x38, 0x54, 0x53, 0xfe, - 0x13, 0xa5, 0xfb, 0x3c, 0xf2, 0x78, 0xe0, 0x45, 0x5c, 0xc7, 0xcd, 0x77, - 0xe0, 0x93, 0x8f, 0x7e, - 0xd7, 0x7e, 0x5d, 0x27, 0xc0, 0x4e, 0x39, 0x47, 0x7f, 0x7a, 0x95, 0x37, - 0x39, 0xb6, 0x18, 0xaa, - 0x84, 0xb4, 0xc6, 0xbd, 0x34, 0xb9, 0x13, 0xa7, 0xf7, 0x7b, 0xaf, 0x07, - 0x13, 0xdd, 0xe7, 0xf5, - 0x7b, 0xc8, 0xa7, 0xad, 0x87, 0x99, 0xc7, 0x0f, 0x19, 0x0a, 0x67, 0x23, - 0xc7, 0x08, 0xc9, 0x03, - 0x42, 0x5a, 0x63, 0xbf, 0x1a, 0xbd, 0xe8, 0xb2, 0x9a, 0xdc, 0xb6, 0xe2, - 0xe8, 0x8f, 0x92, 0x9b, - 0x11, 0x90, 0xf8, 0x25, 0xee, 0x4a, 0xc2, 0x52, 0x12, 0xdd, 0x8c, 0xd2, - 0xc2, 0xe4, 0x6d, 0xc4, - 0xe0, 0x67, 0x90, 0x7a, 0x09, 0xf4, 0xf8, 0x9f, 0xd5, 0xea, 0x40, 0x0b, - 0xf8, 0xb7, 0xa8, 0x92, - 0x71, 0x29, 0xa8, 0xd0, 0xeb, 0x63, 0x6d, 0x44, 0xac, 0x78, 0xe1, 0x57, - 0x6d, 0x60, 0x25, 0x14, - 0x31, 0x46, 0xc8, 0x76, 0xed, 0xec, 0xa7, 0xe1, 0x78, 0xbe, 0x16, 0x10, - 0xa7, 0x98, 0x55, 0x35, - 0x67, 0x1d, 0xb5, 0x33, 0x2f, 0x66, 0xd8, 0xc5, 0x4b, 0x86, 0x6f, 0x1a, - 0xd8, 0xc7, 0xdc, 0x80, - 0xc8, 0x65, 0xac, 0x4d, 0x7a, 0x9a, 0x15, 0x70, 0x44, 0xe1, 0x1d, 0x18, - 0x15, 0xd4, 0x9e, 0xce, - 0x4d, 0x2a, 0x8a, 0x1d, 0x40, 0x3a, 0x17, 0x3d, 0x94, 0x97, 0x73, 0xac, - 0x17, 0xd3, 0x08, 0x66, - 0xfc, 0xb2, 0x82, 0xe4, 0xa1, 0x0b, 0xe7, 0x55, 0x87, 0x66, 0x48, 0x32, - 0xe7, 0x78, 0xbd, 0x11, - 0xb3, 0xad, 0x0b, 0xe0, 0xfd, 0x03, 0xd2, 0x7f, 0x5d, 0xeb, 0x7a, 0x3b, - 0xd2, 0xdc, 0x57, 0xcd, - 0x44, 0x05, 0x66, 0x94, 0x3e, 0xeb, 0x8e, 0x8b, 0x48, 0xf2, 0x75, 0xce, - 0x8e, 0x16, 0x77, 0x96, - 0xc5, 0x20, 0x46, 0xf6, 0x3c, 0x2f, 0xc8, 0xe8, 0x04, 0xb0, 0x99, 0xf3, - 0xc8, 0xff, 0xe6, 0x89, - 0x14, 0x01, 0x1e, 0xfa, 0xd8, 0x37, 0x97, 0x96, 0xa9, 0xe4, 0xcf, 0xe8, - 0x97, 0xd0, 0x1b, 0x2e, - 0x2b, 0xcc, 0xdf, 0xc3, 0x61, 0x45, 0xde, 0x12, 0xf8, 0x1c, 0xdd, 0x05, - 0xde, 0xce, 0xa5, 0xbb, - 0x12, 0x5e, 0x1b, 0xd1, 0xfc, 0x61, 0xf1, 0xaf, 0x7b, 0xca, 0x0c, 0xc4, - 0xf1, 0x49, 0xfe, 0x23, - 0xb6, 0x3c, 0xed, 0x3f, 0xcb, 0x7e, 0x87, 0xbb, 0xe6, 0xd2, 0x39, 0x01, - 0x87, 0xe8, 0x21, 0x27, - 0xbc, 0xdd, 0xe2, 0x42, 0xa7, 0x84, 0x2d, 0xf0, 0x53, 0xa0, 0xbf, 0x75, - 0x2d, 0x80, 0xcd, 0x30, - 0x8d, 0x9b, 0x2a, 0x34, 0x4a, 0x68, 0x8a, 0x11, 0x2b, 0x1e, 0xa9, 0x65, - 0x8a, 0x18, 0x98, 0x05, - 0x90, 0xb5, 0xd8, 0x47, 0xec, 0x8e, 0x84, 0x31, 0x5e, 0x9f, 0x60, 0xef, - 0x84, 0x0d, 0xfc, 0xdb, - 0x77, 0x76, 0xad, 0xfb, 0xcf, 0x35, 0x0b, 0x7d, 0x7e, 0x56, 0x22, 0x7b, - 0x0b, 0xf9, 0xc0, 0x19, - 0x94, 0xdf, 0xde, 0x75, 0xd4, 0xea, 0xc0, 0x1f, 0xc2, 0xab, 0xe2, 0x66, - 0xc0, 0xe3, 0xfb, 0x6c, - 0xe7, 0xc3, 0x75, 0xbc, 0x23, 0xbb, 0x8f, 0x4c, 0x20, 0xc9, 0x42, 0x94, - 0x8f, 0xf4, 0x3c, 0xc2, - 0x5b, 0x1e, 0x97, 0xfe, 0x84, 0x3f, 0xa2, 0xbc, 0x73, 0x69, 0xfd, 0xe1, - 0xa2, 0x74, 0xf1, 0xf2, - 0x64, 0xd3, 0x56, 0xc7, 0x3d, 0x4d, 0xeb, 0x38, 0x22, 0x91, 0xef, 0x0c, - 0xeb, 0x6a, 0x4f, 0x67, - 0x0a, 0xe1, 0x0f, 0x7d, 0x6c, 0xfa, 0xaa, 0x4b, 0xb5, 0x72, 0x86, 0x74, - 0xaa, 0x68, 0xec, 0x17, - 0xab, 0x12, 0x1f, 0x4c, 0x6d, 0x98, 0x89, 0x9b, 0x93, 0x53, 0xf0, 0x8b, - 0x89, 0xfd, 0x45, 0xf9, - 0x03, 0xce, 0xe3, 0xf4, 0x12, 0x2b, 0x33, 0xfd, 0x69, 0x17, 0x80, 0x16, - 0x33, 0xad, 0x93, 0xe7, - 0x80, 0xde, 0xc0, 0x8f, 0x0c, 0xdd, 0x57, 0x89, 0x6b, 0x4f, 0x2d, 0x8e, - 0x57, 0x33, 0xe0, 0x42, - 0x83, 0x10, 0x23, 0x7b, 0x1e, 0xf6, 0x64, 0x74, 0x02, 0x58, 0xad, 0x98, - 0x64, 0x9e, 0x73, 0xa5, - 0xa6, 0x57, 0xf5, 0xf7, 0x2b, 0x2d, 0x54, 0x03, 0xd3, 0x02, 0x74, 0x60, - 0x54, 0xd6, 0x3d, 0xbe, - 0x09, 0x2f, 0xec, 0x89, 0x7e, 0xd1, 0x99, 0xb6, 0xdc, 0x65, 0x06, 0x62, - 0x99, 0xc5, 0x7f, 0xf0, - 0xac, 0xb6, 0xfa, 0x8a, 0x47, 0xd7, 0xfe, 0x48, 0x66, 0x70, 0xf2, 0x14, - 0xfe, 0xbe, 0xd1, 0xa9, - 0x2c, 0x68, 0x3a, 0x05, 0x4b, 0x0a, 0xa9, 0xc1, 0x0d, 0x3f, 0xdf, 0x9a, - 0xa9, 0x8d, 0x31, 0xeb, - 0x7e, 0x59, 0x41, 0x72, 0xb1, 0xe4, 0x92, 0xcb, 0xa2, 0x33, 0x24, 0x19, - 0x92, 0x3c, 0xbf, 0xe9, - 0x2f, 0xa6, 0xd9, 0xf1, 0x59, 0x21, 0x9a, 0x3c, 0x64, 0x28, 0x5f, 0x8c, - 0x9a, 0x20, 0xa2, 0x0c, - 0xb5, 0xf2, 0x0e, 0xcb, 0xd9, 0x55, 0xb4, 0x46, 0x8f, 0xc5, 0xb9, 0x17, - 0xb4, 0x45, 0xb2, 0xc0, - 0x3b, 0xa7, 0xc7, 0x0b, 0x81, 0x16, 0x0d, 0xaa, 0xcd, 0xcc, 0x90, 0x64, - 0x0d, 0xf0, 0xb9, 0x22, - 0xbd, 0x26, 0x02, 0xaf, 0xa9, 0x9d, 0x3c, 0x1a, 0x74, 0xad, 0x7e, 0xc6, - 0x3c, 0x5a, 0xbc, 0x6d, - 0x04, 0x6a, 0x06, 0x32, 0x38, 0x64, 0x44, 0x2e, 0x9c, 0x34, 0x82, 0x89, - 0x44, 0xee, 0x07, 0xb7, - 0xeb, 0x7d, 0x7f, 0xea, 0x6b, 0x17, 0x43, 0x3e, 0x47, 0x95, 0x07, 0xcc, - 0x43, 0x05, 0x35, 0xd8, - 0xbb, 0x79, 0x07, 0x84, 0x8d, 0xcb, 0x5a, 0x23, 0xa6, 0x83, 0xbd, 0xea, - 0x5a, 0xc3, 0x59, 0x60, - }, - { /* 13 */ - 0x79, 0x1a, 0x2d, 0x6d, 0xc9, 0x3b, 0x13, 0xe1, 0x79, 0x58, 0x80, 0x80, - 0x75, 0x80, 0xb7, 0x36, - 0x91, 0x58, 0xcb, 0xc6, 0xfe, 0x1f, 0xb1, 0x50, 0x91, 0xd6, 0x1a, 0x1a, - 0x1d, 0x1a, 0x89, 0x33, - 0x99, 0x09, 0xd2, 0xbc, 0x88, 0x79, 0x33, 0xc2, 0x99, 0xe9, 0xdc, 0xdc, - 0x3b, 0xdc, 0x07, 0x9c, - 0xb9, 0x8e, 0xb6, 0x97, 0x93, 0x22, 0x7e, 0xcf, 0xb9, 0x15, 0x42, 0x42, - 0xa3, 0x42, 0x7a, 0x65, - 0x71, 0x4b, 0x34, 0x17, 0xbf, 0x5d, 0x91, 0x73, 0x71, 0x67, 0x46, 0x46, - 0x53, 0x46, 0x39, 0x99, - 0xea, 0xc7, 0x71, 0x54, 0xcb, 0xdc, 0x63, 0x74, 0xea, 0xf1, 0x4a, 0x4a, - 0x80, 0x4a, 0xfc, 0x5e, - 0xd7, 0xd9, 0x79, 0x52, 0x0f, 0x62, 0xab, 0xc6, 0xd7, 0x6c, 0x56, 0x56, - 0x15, 0x56, 0xf6, 0xef, - 0x95, 0x91, 0x26, 0xfb, 0xc5, 0x2c, 0xf0, 0x19, 0x95, 0x28, 0x79, 0x79, - 0x0e, 0x79, 0xce, 0x85, - 0x55, 0x05, 0xbd, 0x01, 0x9f, 0x35, 0x9d, 0x37, 0x55, 0x65, 0xbb, 0xbb, - 0xd8, 0xbb, 0x03, 0xd6, - 0xda, 0xe2, 0x27, 0x8b, 0x3c, 0x4b, 0xe9, 0x9e, 0xda, 0x73, 0x9b, 0x9b, - 0x54, 0x9b, 0x5e, 0x3a, - 0xdb, 0x41, 0x8d, 0x15, 0x42, 0x37, 0x68, 0x1d, 0xdb, 0xad, 0xf3, 0xf3, - 0x20, 0xf3, 0x3f, 0xf6, - 0xb5, 0x16, 0x42, 0xd0, 0xde, 0x77, 0xbd, 0x14, 0xb5, 0xd4, 0xe7, 0xe7, - 0x96, 0xe7, 0xb3, 0x7c, - 0x3f, 0x9b, 0x9f, 0xf9, 0x38, 0x46, 0x09, 0x77, 0x3f, 0xe2, 0xcc, 0xcc, - 0x7d, 0xcc, 0xc8, 0xea, - 0x54, 0xa6, 0x17, 0x9f, 0xe1, 0x49, 0x1c, 0xb4, 0x54, 0xbb, 0xd3, 0xd3, - 0xac, 0xd3, 0x62, 0x1a, - 0x7d, 0xd3, 0xc0, 0x50, 0xf2, 0x08, 0x52, 0xa8, 0x7d, 0xa6, 0xe3, 0xe3, - 0x66, 0xe3, 0xf0, 0x80, - 0xd5, 0x5c, 0xee, 0xad, 0xf3, 0x9a, 0x6a, 0x03, 0xd5, 0x13, 0x86, 0x86, - 0xfd, 0x86, 0x34, 0xb4, - 0xbd, 0x47, 0x5b, 0xaa, 0xa8, 0x11, 0x3f, 0x86, 0xbd, 0xeb, 0x21, 0x21, - 0xb0, 0x21, 0x3d, 0xd3, - 0xa9, 0x2c, 0x84, 0x63, 0x7f, 0xee, 0xb9, 0x28, 0xa9, 0x6b, 0x0d, 0x0d, - 0xef, 0x0d, 0xa5, 0xf8, - 0xfe, 0xac, 0xae, 0x9d, 0x1c, 0x23, 0xe5, 0xda, 0xfe, 0x71, 0x66, 0x66, - 0xdf, 0x66, 0x64, 0x75, - 0x3b, 0x52, 0x72, 0xc4, 0x03, 0x75, 0x48, 0x3e, 0x3b, 0x1c, 0xaf, 0xaf, - 0x6e, 0xaf, 0x8f, 0x5c, - 0x1d, 0x99, 0x6c, 0x2d, 0xdf, 0xe5, 0x85, 0xbf, 0x1d, 0x61, 0x82, 0x82, - 0x0d, 0x82, 0x77, 0x48, - 0x36, 0x69, 0x2c, 0x1d, 0x30, 0x5c, 0x0a, 0x66, 0x36, 0x03, 0x62, 0x62, - 0x2f, 0x62, 0x27, 0x89, - 0x38, 0x74, 0x4f, 0xa5, 0x81, 0xf1, 0x08, 0x78, 0x38, 0xbd, 0x17, 0x17, - 0xf2, 0x17, 0x2c, 0xcb, - 0x07, 0xef, 0xd0, 0x5c, 0xb9, 0xb7, 0x01, 0x0f, 0x07, 0x5f, 0xdb, 0xdb, - 0x8f, 0xdb, 0xe4, 0x21, - 0x1b, 0xd5, 0x16, 0xef, 0x18, 0x2e, 0x05, 0x33, 0x1b, 0xe0, 0x31, 0x31, - 0xf6, 0x31, 0xf2, 0xa5, - 0xfb, 0xc6, 0xe9, 0x3e, 0x59, 0x6c, 0x25, 0x10, 0xfb, 0x51, 0x6d, 0x6d, - 0xb8, 0x6d, 0x42, 0x0f, - 0x70, 0xe8, 0x9e, 0x89, 0xc1, 0x21, 0x10, 0xf0, 0x70, 0xb9, 0x2e, 0x2e, - 0x27, 0x2e, 0x58, 0x55, - 0x89, 0xab, 0xe0, 0x48, 0x64, 0xb5, 0xf4, 0x25, 0x89, 0x97, 0x93, 0x93, - 0x77, 0x93, 0xd8, 0x01, - 0x4a, 0x19, 0x46, 0xd3, 0xbc, 0x28, 0xd9, 0x4d, 0x4a, 0x7b, 0xe9, 0xe9, - 0x3d, 0xe9, 0xb6, 0xc5, - 0xae, 0xc3, 0x54, 0x3f, 0xc6, 0x59, 0xb8, 0x27, 0xae, 0x34, 0xd6, 0xd6, - 0x60, 0xd6, 0x41, 0xd9, - 0x3d, 0x1e, 0x08, 0x06, 0xc4, 0xbe, 0xc8, 0xb2, 0x3d, 0x9d, 0x1c, 0x1c, - 0x95, 0x1c, 0x0a, 0xb1, - 0x29, 0x75, 0xd7, 0xcf, 0x13, 0x41, 0x4e, 0x1c, 0x29, 0x1d, 0x30, 0x30, - 0xca, 0x30, 0x92, 0x9a, - 0x8a, 0x8d, 0xdd, 0x29, 0xe6, 0x31, 0xb4, 0x63, 0x8a, 0x36, 0x2b, 0x2b, - 0xeb, 0x2b, 0x7b, 0x96, - 0xcd, 0xaf, 0xc5, 0x23, 0x69, 0x30, 0x2f, 0x76, 0xcd, 0x52, 0x0f, 0x0f, - 0x97, 0x0f, 0x65, 0x86, - 0x41, 0x6e, 0x62, 0xc8, 0x48, 0xca, 0x1b, 0x99, 0x41, 0xe5, 0x97, 0x97, - 0x87, 0x97, 0x9b, 0xfd, - 0xce, 0x89, 0xf8, 0x42, 0xeb, 0xb4, 0x6f, 0x30, 0xce, 0xf3, 0xb7, 0xb7, - 0x0b, 0xb7, 0xc6, 0x11, - 0x16, 0xee, 0x48, 0x36, 0x2b, 0x07, 0x47, 0x6b, 0x16, 0xff, 0xfc, 0xfc, - 0xb7, 0xfc, 0x5a, 0x70, - 0x6c, 0xd2, 0x58, 0x3a, 0x60, 0xb8, 0x14, 0xcc, 0x6c, 0x06, 0xc4, 0xc4, - 0x5e, 0xc4, 0x4e, 0xd1, - 0x1f, 0x1c, 0xfb, 0xd2, 0x23, 0x1d, 0x44, 0x7a, 0x1f, 0x1e, 0x52, 0x52, - 0xe5, 0x52, 0xb5, 0x13, - 0xe0, 0x13, 0xff, 0xd1, 0x41, 0x42, 0x20, 0x23, 0xe0, 0xb1, 0x5c, 0x5c, - 0x4e, 0x5c, 0xb0, 0xaa, - 0xf5, 0xdb, 0x8a, 0x86, 0xe8, 0xc1, 0x27, 0x0e, 0xf5, 0xef, 0x18, 0x18, - 0x65, 0x18, 0x49, 0x4d, - 0xb0, 0x7c, 0x05, 0x73, 0x9b, 0x38, 0x7d, 0xde, 0xb0, 0xf4, 0xec, 0xec, - 0xf1, 0xec, 0x95, 0x06, - 0xde, 0x2b, 0xca, 0xb6, 0x07, 0x78, 0xa8, 0xd7, 0xde, 0x8d, 0xf8, 0xf8, - 0x47, 0xf8, 0x19, 0x8c, - 0x03, 0x26, 0x3d, 0x61, 0x82, 0x84, 0x40, 0x46, 0x03, 0xa1, 0xb8, 0xb8, - 0x9c, 0xb8, 0xa3, 0x97, - 0xd0, 0x36, 0xa9, 0x0e, 0xb6, 0xd5, 0xaa, 0xc9, 0xd0, 0x33, 0x8d, 0x8d, - 0x9a, 0x8d, 0x12, 0xce, - 0x8e, 0x44, 0x30, 0x14, 0xdd, 0x02, 0xf5, 0x2a, 0x8e, 0xc8, 0x48, 0x48, - 0xf8, 0x48, 0x3c, 0x20, - 0x23, 0xa1, 0x59, 0x4a, 0x99, 0xdf, 0x0d, 0x4b, 0x23, 0x5d, 0x26, 0x26, - 0x04, 0x26, 0xde, 0x6e, - 0x0a, 0xd4, 0x8e, 0x85, 0x8a, 0x9e, 0x43, 0x57, 0x0a, 0x40, 0x16, 0x16, - 0xce, 0x16, 0x4c, 0xf4, - 0xf3, 0x97, 0xf0, 0x44, 0x2f, 0x0a, 0xa7, 0x82, 0xf3, 0x6e, 0xab, 0xab, - 0x9e, 0xab, 0xcc, 0xa0, - 0x06, 0x4c, 0x7a, 0xc2, 0xc7, 0xcb, 0x80, 0x8c, 0x06, 0x81, 0xb3, 0xb3, - 0xfb, 0xb3, 0x85, 0xed, - 0xdf, 0x88, 0x60, 0x28, 0x79, 0x04, 0x29, 0x54, 0xdf, 0x53, 0x90, 0x90, - 0x33, 0x90, 0x78, 0x40, - 0x4d, 0xf6, 0x96, 0x8f, 0x05, 0x9f, 0xd8, 0x42, 0x4d, 0x24, 0x32, 0x32, - 0xb2, 0x32, 0x52, 0xe4, - 0x98, 0xaa, 0x78, 0x22, 0xf6, 0x05, 0xb2, 0x41, 0x98, 0x37, 0xb4, 0xb4, - 0x4f, 0xb4, 0x66, 0x50, - 0x97, 0x14, 0xb1, 0x04, 0x39, 0xd4, 0x31, 0xdc, 0x97, 0x57, 0xa9, 0xa9, - 0xe6, 0xa9, 0x0c, 0xde, - 0xad, 0xe5, 0x69, 0x5e, 0x44, 0xdd, 0xf8, 0x61, 0xad, 0x95, 0x6e, 0x6e, - 0xfc, 0x6e, 0xe2, 0x4e, - 0x15, 0xc8, 0x75, 0x57, 0xa9, 0x83, 0x07, 0x2d, 0x15, 0x5e, 0x44, 0x44, - 0x2b, 0x44, 0xf9, 0xe7, - 0xa2, 0x5b, 0xa0, 0x78, 0x8b, 0x0c, 0x7b, 0xfc, 0xa2, 0xf5, 0x73, 0x73, - 0x55, 0x73, 0x88, 0xc0, - 0xab, 0xa9, 0x13, 0x9c, 0x83, 0x16, 0x78, 0xed, 0xab, 0x14, 0xdd, 0xdd, - 0x07, 0xdd, 0x67, 0xa3, - 0xc0, 0x94, 0x9b, 0xfa, 0x5a, 0x19, 0x6d, 0x2e, 0xc0, 0x4d, 0xc2, 0xc2, - 0xd6, 0xc2, 0xcd, 0x53, - 0xb6, 0x30, 0x7f, 0xb1, 0x5c, 0xf3, 0xfd, 0x52, 0xb6, 0x75, 0x5f, 0x5f, - 0x0a, 0x5f, 0x10, 0xeb, - 0x53, 0x49, 0xc7, 0xc3, 0x58, 0xfe, 0x1d, 0xbb, 0x53, 0xe4, 0x08, 0x08, - 0x23, 0x08, 0x86, 0x3b, - 0xed, 0x28, 0xa1, 0x08, 0x72, 0x6b, 0x62, 0x7b, 0xed, 0xae, 0x91, 0x91, - 0x0f, 0x91, 0x18, 0x7f, - 0xc1, 0x37, 0x31, 0x64, 0x24, 0x65, 0xec, 0xad, 0xc1, 0x93, 0xaa, 0xaa, - 0xa2, 0xaa, 0xac, 0x9f, - 0xe1, 0xb0, 0x55, 0x4f, 0x3f, 0x3e, 0xa1, 0xa0, 0xe1, 0x6f, 0x34, 0x34, - 0x3a, 0x34, 0xd1, 0x66, - 0x62, 0xcf, 0x3b, 0x82, 0xd1, 0x15, 0x16, 0xd2, 0x62, 0xb8, 0xb1, 0xb1, - 0x83, 0xb1, 0x45, 0x93, - 0x24, 0x4e, 0x89, 0x16, 0x20, 0x68, 0x0c, 0x44, 0x24, 0x02, 0xfd, 0xfd, - 0x8b, 0xfd, 0x3a, 0x4f, - 0xe9, 0xe1, 0x4c, 0x35, 0x49, 0x58, 0x23, 0x32, 0xe9, 0x50, 0xf2, 0xf2, - 0x1c, 0xf2, 0x5f, 0xc9, - 0x65, 0x20, 0xeb, 0xde, 0x68, 0xa2, 0x17, 0xdd, 0x65, 0xe7, 0x6a, 0x6a, - 0x0c, 0x6a, 0xa1, 0xb2, - 0xec, 0x8b, 0x0b, 0x96, 0x0c, 0x17, 0xe3, 0xf8, 0xec, 0x70, 0xf9, 0xf9, - 0x7b, 0xf9, 0x79, 0xb3, - 0x5d, 0x54, 0xa4, 0x7b, 0xe9, 0x53, 0x1f, 0xa5, 0x5d, 0x5a, 0x7d, 0x7d, - 0xfe, 0x7d, 0x8d, 0x79, - 0x26, 0xcb, 0x1e, 0xe9, 0xdc, 0x90, 0xcd, 0x81, 0x26, 0x7d, 0x2d, 0x2d, - 0x63, 0x2d, 0xf8, 0x14, - 0xbe, 0x61, 0x66, 0xcb, 0x2a, 0x95, 0x7f, 0xc0, 0xbe, 0x4a, 0x99, 0x99, - 0x2c, 0x99, 0x9e, 0x44, - 0x21, 0x24, 0xce, 0xb5, 0x65, 0x27, 0xcc, 0x8e, 0x21, 0x22, 0xf6, 0xf6, - 0xec, 0xf6, 0x1c, 0x35, - 0x4b, 0xba, 0xec, 0x4d, 0xc2, 0x54, 0x58, 0xce, 0x4b, 0xa5, 0x81, 0x81, - 0x49, 0x81, 0xd7, 0x09, - 0x48, 0x9c, 0xd1, 0x2c, 0x40, 0xd0, 0x18, 0x88, 0x48, 0x04, 0x39, 0x39, - 0xd5, 0x39, 0x74, 0x9e, - 0xca, 0x40, 0x15, 0x7f, 0xd0, 0x87, 0x2e, 0x79, 0xca, 0x0d, 0xd4, 0xd4, - 0x18, 0xd4, 0x81, 0xa7, - 0xf7, 0x5e, 0x1d, 0x79, 0x14, 0x39, 0xe6, 0xcb, 0xf7, 0x90, 0xc8, 0xc8, - 0x8d, 0xc8, 0x8b, 0x16, - 0x7c, 0x70, 0x6a, 0xce, 0x8c, 0x74, 0xd3, 0x2b, 0x7c, 0x78, 0x8b, 0x8b, - 0x12, 0x8b, 0x91, 0x4c, - 0xff, 0x0f, 0x04, 0x03, 0x62, 0x5f, 0x64, 0x59, 0xff, 0xaf, 0x0e, 0x0e, - 0xab, 0x0e, 0x05, 0xb9, - 0x20, 0x87, 0x64, 0x2b, 0x1b, 0x5b, 0x4d, 0x0d, 0x20, 0xfc, 0x9e, 0x9e, - 0x98, 0x9e, 0x7d, 0xf9, - 0xd1, 0x95, 0x03, 0x90, 0xc8, 0xa9, 0x2b, 0x4a, 0xd1, 0xed, 0xe5, 0xe5, - 0xee, 0xe5, 0x73, 0x02, - 0x85, 0x33, 0x14, 0x0f, 0x29, 0xe0, 0x37, 0xfe, 0x85, 0x56, 0x36, 0x36, - 0x42, 0x36, 0x11, 0x18, - 0x58, 0x3e, 0xe3, 0xd8, 0xac, 0x1c, 0xdf, 0x6f, 0x58, 0x7a, 0x76, 0x76, - 0x99, 0x76, 0xab, 0x03, - 0x49, 0x3f, 0x7b, 0xb2, 0x3e, 0xac, 0x99, 0x0b, 0x49, 0xda, 0x51, 0x51, - 0xa1, 0x51, 0x15, 0x52, - 0xfa, 0x65, 0x43, 0xa0, 0x27, 0x10, 0xa4, 0x93, 0xfa, 0x8f, 0x05, 0x05, - 0xcc, 0x05, 0x23, 0xc3, - 0x87, 0xb6, 0x83, 0xf0, 0xd5, 0x18, 0xf6, 0x3b, 0x87, 0x29, 0xe6, 0xe6, - 0xaa, 0xe6, 0xd3, 0x43, - 0x27, 0x68, 0xb4, 0x77, 0xa2, 0xec, 0x4c, 0x02, 0x27, 0xa3, 0x45, 0x45, - 0x17, 0x45, 0x99, 0xd8, - 0xe8, 0x42, 0xe6, 0xab, 0x37, 0x24, 0xa2, 0xb1, 0xe8, 0x8e, 0x9a, 0x9a, - 0x68, 0x9a, 0x3e, 0x05, - 0xf4, 0x78, 0x20, 0x18, 0x96, 0xbd, 0xa6, 0x8d, 0xf4, 0x31, 0x70, 0x70, - 0x11, 0x70, 0x28, 0x81, - 0x5a, 0xbb, 0x74, 0x27, 0x50, 0xe4, 0x1e, 0xaa, 0x5a, 0x05, 0xa6, 0xa6, - 0x71, 0xa6, 0x69, 0x58, - 0x66, 0x06, 0xd6, 0xbf, 0xea, 0x26, 0x57, 0x9b, 0x66, 0x46, 0xd2, 0xd2, - 0x90, 0xd2, 0x02, 0x25, - 0xf0, 0xb1, 0xcd, 0x25, 0xad, 0x8e, 0xe7, 0xc4, 0xf0, 0xcf, 0x13, 0x13, - 0x02, 0x13, 0x6f, 0x37, - 0xcb, 0xe3, 0xbf, 0xe1, 0xae, 0xfb, 0xaf, 0xfa, 0xcb, 0xd3, 0xbc, 0xbc, - 0x6c, 0xbc, 0xe0, 0x6b, - 0x0e, 0x1d, 0x63, 0xb8, 0xb1, 0xad, 0x02, 0x1e, 0x0e, 0xbe, 0x75, 0x75, - 0xdd, 0x75, 0x0b, 0x42, - 0xe2, 0x96, 0x68, 0x2e, 0xbd, 0xba, 0xe1, 0xe6, 0xe2, 0xce, 0x8c, 0x8c, - 0xa6, 0x8c, 0x72, 0xf1, - 0x57, 0x80, 0x2a, 0xfe, 0x63, 0xcd, 0x5c, 0xf2, 0x57, 0x1a, 0x6b, 0x6b, - 0x30, 0x6b, 0xc1, 0x8d, - 0xc4, 0x5d, 0x76, 0xc7, 0x61, 0x2a, 0x2c, 0x67, 0xc4, 0xb3, 0xa1, 0xa1, - 0xc5, 0xa1, 0x8a, 0xe5, - 0x9b, 0x8c, 0x45, 0x43, 0x74, 0x81, 0xf2, 0x07, 0x9b, 0x96, 0x0c, 0x0c, - 0xd3, 0x0c, 0xc5, 0xc7, - 0xee, 0x0e, 0x9c, 0x69, 0xf0, 0xef, 0x22, 0x3d, 0xee, 0x0f, 0x29, 0x29, - 0x93, 0x29, 0xbb, 0xe8, - 0x1a, 0x76, 0xbc, 0x71, 0x66, 0x52, 0x84, 0xb0, 0x1a, 0x3e, 0x59, 0x59, - 0x82, 0x59, 0x93, 0x69, - 0x37, 0xca, 0x86, 0x83, 0x4e, 0x20, 0x8b, 0xe5, 0x37, 0xdd, 0x0a, 0x0a, - 0x5b, 0x0a, 0x46, 0x45, - 0x2e, 0x9a, 0x07, 0x93, 0xaa, 0xf6, 0x4f, 0x13, 0x2e, 0x42, 0xeb, 0xeb, - 0x45, 0xeb, 0x76, 0xbb, - 0x69, 0xb8, 0x1f, 0x99, 0x25, 0xf7, 0xd4, 0x06, 0x69, 0x26, 0xcf, 0xcf, - 0x39, 0xcf, 0x68, 0xab, - 0x8b, 0x2e, 0x77, 0xb7, 0x98, 0x4d, 0x35, 0xe0, 0x8b, 0xe8, 0x43, 0x43, - 0x9f, 0x43, 0x1a, 0x5a, - 0xaf, 0x60, 0xfe, 0xa1, 0xb8, 0x25, 0x39, 0xa4, 0xaf, 0xea, 0xbe, 0xbe, - 0x14, 0xbe, 0x20, 0x15, - 0xc2, 0x11, 0x0c, 0x05, 0xa6, 0xe1, 0xac, 0xeb, 0xc2, 0x32, 0x12, 0x12, - 0x3e, 0x12, 0x0f, 0x08, - 0x7f, 0x56, 0x57, 0xaf, 0x0e, 0xf0, 0x93, 0x6d, 0x7f, 0xd9, 0x33, 0x33, - 0x8e, 0x33, 0x32, 0xdb, - 0x64, 0x83, 0x41, 0x40, 0x16, 0xde, 0x96, 0x5e, 0x64, 0x39, 0x02, 0x02, - 0x78, 0x02, 0xc0, 0x7e, - 0x45, 0xa7, 0x8f, 0xf5, 0x73, 0xf9, 0x5a, 0xd0, 0x45, 0x1b, 0xf4, 0xf4, - 0x94, 0xf4, 0xdc, 0x4b, - 0x14, 0x6b, 0xdf, 0xc9, 0xd7, 0xff, 0x86, 0xae, 0x14, 0x80, 0x2c, 0x2c, - 0x5f, 0x2c, 0x98, 0x2b, - 0xfd, 0x8a, 0x93, 0xfc, 0x9e, 0xa7, 0xa5, 0x9c, 0xfd, 0xd0, 0xde, 0xde, - 0x43, 0xde, 0xc7, 0xe2, - 0xac, 0x46, 0xc3, 0xc0, 0x3a, 0xa1, 0x79, 0xe2, 0xac, 0x4b, 0x06, 0x06, - 0x88, 0x06, 0x83, 0x82, - 0x86, 0x15, 0x29, 0x6e, 0xab, 0x64, 0x77, 0xb8, 0x86, 0xf7, 0x8e, 0x8e, - 0xde, 0x8e, 0xb2, 0x8f, - 0x76, 0xa4, 0xe4, 0x4b, 0x06, 0xea, 0x90, 0x7c, 0x76, 0x38, 0x9d, 0x9d, - 0xdc, 0x9d, 0xdd, 0xb8, - 0x43, 0xeb, 0xf5, 0x37, 0xb4, 0x32, 0xda, 0x5c, 0x43, 0x9a, 0x47, 0x47, - 0x6f, 0x47, 0x59, 0xa6, - 0x50, 0x6f, 0xfa, 0xa2, 0xda, 0x7a, 0x5d, 0xfd, 0x50, 0x45, 0xb0, 0xb0, - 0xbf, 0xb0, 0x25, 0xac, - 0x28, 0xd6, 0x7d, 0x51, 0x6d, 0x3d, 0xcf, 0x9f, 0x28, 0xc3, 0x58, 0x58, - 0xbe, 0x58, 0xf3, 0x56, - 0xaa, 0x0a, 0xb9, 0x02, 0xfd, 0x6a, 0xf9, 0x6e, 0xaa, 0xca, 0xb5, 0xb5, - 0x73, 0xb5, 0x06, 0x6f, - 0x5e, 0x72, 0x99, 0x1a, 0x6b, 0xd7, 0x5f, 0xe3, 0x5e, 0xfb, 0xc5, 0xc5, - 0x62, 0xc5, 0x2e, 0xee, - 0xdd, 0x0d, 0xf7, 0xd7, 0x85, 0xfc, 0xe8, 0x91, 0xdd, 0x2c, 0x40, 0x40, - 0xdb, 0x40, 0xba, 0x1b, - 0xbb, 0x0b, 0x21, 0x68, 0x6f, 0xda, 0xbf, 0x0a, 0xbb, 0x6a, 0x92, 0x92, - 0x4b, 0x92, 0xb8, 0x3e, - 0x96, 0xb7, 0x1b, 0x9a, 0x47, 0xa8, 0xb0, 0x5f, 0x96, 0x89, 0xc1, 0xc1, - 0x92, 0xc1, 0x6d, 0x12, - 0x05, 0x6a, 0x47, 0xa3, 0x45, 0x4f, 0xc0, 0xca, 0x05, 0x20, 0x0b, 0x0b, - 0x67, 0x0b, 0x26, 0x7a, - 0x7b, 0x9f, 0xba, 0x92, 0x35, 0xc3, 0xd2, 0x24, 0x7b, 0x27, 0x50, 0x50, - 0x9d, 0x50, 0x75, 0x6d, - 0xf6, 0xfd, 0xb7, 0xe7, 0x6a, 0x45, 0x67, 0x48, 0xf6, 0x4e, 0xa0, 0xa0, - 0xf9, 0xa0, 0xea, 0xda, - 0x2b, 0xf0, 0x40, 0x30, 0xef, 0xb9, 0x8f, 0xd9, 0x2b, 0x62, 0xe0, 0xe0, - 0x22, 0xe0, 0x50, 0xc1, - 0x09, 0xf2, 0xb3, 0xe4, 0x08, 0x1a, 0x03, 0x11, 0x09, 0xe1, 0xae, 0xae, - 0x52, 0xae, 0xef, 0x63, - 0xc7, 0x7b, 0x4b, 0xa6, 0xe3, 0xae, 0x6c, 0x21, 0xc7, 0x12, 0x19, 0x19, - 0x59, 0x19, 0x29, 0x72, - 0x46, 0x81, 0xb2, 0x94, 0xf1, 0x7d, 0x1a, 0x96, 0x46, 0xba, 0x4c, 0x4c, - 0x08, 0x4c, 0x7f, 0xdc, - 0x0d, 0x3b, 0x5e, 0xd9, 0x33, 0x29, 0x42, 0x58, 0x0d, 0x1f, 0xcd, 0xcd, - 0x41, 0xcd, 0xa8, 0xd5, - 0x13, 0x84, 0x0f, 0x95, 0x6e, 0x48, 0x87, 0xa1, 0x13, 0xdf, 0xf7, 0xf7, - 0xd0, 0xf7, 0x7c, 0x0a, - 0x61, 0xe9, 0x06, 0xe3, 0x53, 0x91, 0x56, 0x94, 0x61, 0x19, 0x09, 0x09, - 0x1f, 0x09, 0xe6, 0x04, - 0x01, 0xa3, 0xaa, 0x9e, 0x7e, 0x7c, 0x81, 0x83, 0x01, 0xde, 0x68, 0x68, - 0x74, 0x68, 0x61, 0xcc, - 0xef, 0xad, 0x36, 0xf7, 0x8e, 0x93, 0xa3, 0xbe, 0xef, 0xd1, 0x41, 0x41, - 0xe7, 0x41, 0xda, 0x24, - 0x8d, 0x62, 0x0d, 0x75, 0x5f, 0x86, 0xb5, 0x6c, 0x8d, 0x69, 0xf0, 0xf0, - 0x64, 0xf0, 0x9f, 0xb7, - 0xd3, 0x10, 0x94, 0x6f, 0x34, 0x51, 0xea, 0x8f, 0xd3, 0x92, 0x35, 0x35, - 0x06, 0x35, 0xb1, 0x59, - 0xbc, 0xe4, 0xf1, 0x34, 0xd6, 0x6d, 0xbe, 0x05, 0xbc, 0x35, 0x49, 0x49, - 0xc4, 0x49, 0x5c, 0x1f, - 0xf1, 0x12, 0x67, 0xbb, 0xd3, 0xf2, 0x66, 0x47, 0xf1, 0x11, 0x7b, 0x7b, - 0x76, 0x7b, 0x0e, 0xfb, - 0x32, 0xa0, 0xc1, 0x20, 0x0b, 0x6f, 0x4b, 0x2f, 0x32, 0xfd, 0x01, 0x01, - 0x3c, 0x01, 0x60, 0x3f, - 0x5c, 0xf7, 0x0e, 0xe5, 0x97, 0x2f, 0x9e, 0x26, 0x5c, 0x84, 0x15, 0x15, - 0x8a, 0x15, 0xec, 0xb5, - 0x02, 0x85, 0x97, 0xff, 0xfc, 0xf8, 0xc1, 0xc5, 0x02, 0x7f, 0xd0, 0xd0, - 0xe8, 0xd0, 0xc2, 0x5b, - 0xb1, 0xdf, 0xaf, 0xed, 0xe5, 0x44, 0xfc, 0x5d, 0xb1, 0x2a, 0x84, 0x84, - 0x85, 0x84, 0xf4, 0xca, - 0x56, 0x23, 0x80, 0x60, 0x1d, 0xb1, 0xdd, 0x71, 0x56, 0xc4, 0x03, 0x03, - 0x44, 0x03, 0xa0, 0x41, - 0x51, 0xcc, 0x50, 0x3c, 0xa4, 0x06, 0xdc, 0x7e, 0x51, 0x9b, 0xd8, 0xd8, - 0xcb, 0xd8, 0x44, 0x60, - 0xc9, 0x66, 0x28, 0x1e, 0x52, 0x03, 0x6e, 0x3f, 0xc9, 0xac, 0x6c, 0x6c, - 0x84, 0x6c, 0x22, 0x30, - 0xd6, 0x7a, 0xd3, 0xcc, 0x71, 0x1e, 0x2a, 0x45, 0xd6, 0xb2, 0x3e, 0x3e, - 0x61, 0x3e, 0x97, 0x23, - 0x4e, 0xd0, 0xab, 0xee, 0x87, 0x1b, 0x98, 0x04, 0x4e, 0x85, 0x8a, 0x8a, - 0x2e, 0x8a, 0xf1, 0x73, - 0xc8, 0xc5, 0x82, 0x80, 0x2c, 0x7f, 0xef, 0xbc, 0xc8, 0x72, 0x04, 0x04, - 0xf0, 0x04, 0x43, 0xfc, - 0xa0, 0xde, 0x37, 0x87, 0x77, 0xf4, 0xba, 0x39, 0xa0, 0x8a, 0xa3, 0xa3, - 0xbd, 0xa3, 0x4a, 0x9b, - 0x31, 0x86, 0xfc, 0x41, 0x89, 0xeb, 0x0b, 0x69, 0x31, 0x5c, 0xb9, 0xb9, - 0xa0, 0xb9, 0xc3, 0xa8, - 0x22, 0x02, 0xf3, 0xd4, 0xe7, 0xa3, 0x8c, 0xc8, 0x22, 0x83, 0x4e, 0x4e, - 0x70, 0x4e, 0xbf, 0xa2, - 0xa5, 0xb4, 0x70, 0x24, 0x32, 0xbb, 0x7a, 0xf3, 0xa5, 0xaa, 0xa8, 0xa8, - 0xda, 0xa8, 0x6c, 0xe1, - 0x17, 0x4d, 0xe2, 0xa8, 0x55, 0x7b, 0xc6, 0xe8, 0x17, 0x21, 0x94, 0x94, - 0xc3, 0x94, 0x3b, 0xbc, - 0x33, 0x03, 0x6b, 0xbe, 0x75, 0x13, 0xca, 0xac, 0x33, 0x23, 0x69, 0x69, - 0x48, 0x69, 0x01, 0xf3, - 0x94, 0x32, 0x8c, 0x65, 0xbb, 0x50, 0x71, 0x9a, 0x94, 0xf6, 0x11, 0x11, - 0x7a, 0x11, 0xaf, 0x49, - 0xeb, 0x64, 0xdb, 0xca, 0xb5, 0xa0, 0xe2, 0xf7, 0xeb, 0x2f, 0x22, 0x22, - 0xf4, 0x22, 0x9d, 0x92, - 0x84, 0x90, 0xbe, 0x91, 0x57, 0x9c, 0xb6, 0x7d, 0x84, 0x88, 0x5e, 0x5e, - 0x36, 0x5e, 0x70, 0xd4, - 0x08, 0x51, 0x19, 0x7a, 0x76, 0x66, 0x82, 0x92, 0x08, 0x3f, 0xc6, 0xc6, - 0x26, 0xc6, 0x8e, 0xaf, - 0x25, 0xed, 0x23, 0x88, 0x5e, 0x14, 0x8d, 0xc7, 0x25, 0xdc, 0x95, 0x95, - 0xff, 0x95, 0x5b, 0x83, - 0xf9, 0x43, 0x7e, 0xc1, 0xa5, 0x94, 0xe4, 0xd5, 0xf9, 0x2e, 0xbd, 0xbd, - 0x50, 0xbd, 0x80, 0x54, - 0x39, 0xd7, 0xe5, 0x3b, 0xff, 0x8d, 0x89, 0xfb, 0x39, 0x63, 0x7f, 0x7f, - 0x86, 0x7f, 0x4d, 0x07, - 0x60, 0x4a, 0xac, 0x7d, 0x2d, 0xed, 0xd7, 0x17, 0x60, 0xc7, 0x61, 0x61, - 0x6b, 0x61, 0x87, 0xc8, - 0xb2, 0xf9, 0x92, 0x8c, 0x67, 0xc0, 0xbc, 0x1b, 0xb2, 0x8b, 0x3c, 0x3c, - 0x19, 0x3c, 0x57, 0x5d, - 0xd4, 0xff, 0x44, 0x33, 0x8d, 0xe6, 0xeb, 0x80, 0xd4, 0xcd, 0xee, 0xee, - 0x89, 0xee, 0x55, 0x78, - 0x6f, 0xf4, 0x65, 0x5b, 0xe2, 0x3c, 0x54, 0x8a, 0x6f, 0xa7, 0x7c, 0x7c, - 0xc2, 0x7c, 0xed, 0x46, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x6d, 0x71, 0xf2, 0xa4, 0x1e, 0xc4, 0x95, 0x4f, 0x6d, 0xd8, 0xac, 0xac, - 0x2a, 0xac, 0x2f, 0x1d, - 0xa1, 0x7d, 0x9d, 0x19, 0x09, 0x88, 0x3b, 0xba, 0xa1, 0x54, 0xcb, 0xcb, - 0xc9, 0xcb, 0x2b, 0x57, - 0x12, 0x27, 0xa5, 0x0b, 0x10, 0x34, 0x06, 0x22, 0x12, 0x01, 0x9f, 0x9f, - 0xa4, 0x9f, 0x1d, 0xc6, - 0xd8, 0x67, 0xb0, 0x74, 0xc0, 0xb3, 0x28, 0x5b, 0xd8, 0x0c, 0x4b, 0x4b, - 0xbc, 0x4b, 0x9c, 0x61, - 0xa3, 0xf8, 0x0a, 0xe6, 0xf5, 0x70, 0xfa, 0x7f, 0xa3, 0x2b, 0x1b, 0x1b, - 0x21, 0x1b, 0xe9, 0x0c, - 0xa4, 0x17, 0xda, 0xba, 0x4c, 0xc7, 0xfb, 0x70, 0xa4, 0x74, 0xc0, 0xc0, - 0xae, 0xc0, 0x0d, 0x2d, - 0xcf, 0x2a, 0x52, 0xdc, 0x95, 0xc8, 0xee, 0xb3, 0xcf, 0x2d, 0xdf, 0xdf, - 0x7f, 0xdf, 0xa7, 0xdd, - 0x9a, 0x2f, 0xef, 0xdd, 0x0a, 0xfd, 0x73, 0x84, 0x9a, 0x48, 0x64, 0x64, - 0xa7, 0x64, 0xa4, 0x0b, - 0xcc, 0x0c, 0x6f, 0xbd, 0x17, 0x4c, 0xae, 0xf5, 0xcc, 0x8c, 0x67, 0x67, - 0xe3, 0x67, 0x04, 0x4a, - 0x52, 0xea, 0x6d, 0x5d, 0x26, 0x82, 0x9c, 0x38, 0x52, 0x3a, 0x60, 0x60, - 0x57, 0x60, 0xe7, 0xf7, - 0x1c, 0x3a, 0xc6, 0xb3, 0xa1, 0x99, 0x04, 0x3c, 0x1c, 0xbf, 0xea, 0xea, - 0x79, 0xea, 0x16, 0x84, - 0x2f, 0x39, 0xad, 0x0d, 0xd4, 0x8a, 0xce, 0x90, 0x2f, 0x9c, 0x83, 0x83, - 0x31, 0x83, 0x17, 0x77, - 0x7e, 0xf5, 0xfd, 0x31, 0x70, 0x8c, 0x12, 0xee, 0x7e, 0x07, 0x5b, 0x5b, - 0xfa, 0x5b, 0x53, 0x17, - 0x93, 0xdd, 0x5c, 0x39, 0x02, 0xe7, 0x70, 0x95, 0x93, 0xa9, 0xca, 0xca, - 0xf5, 0xca, 0x4b, 0x68, - 0x42, 0x48, 0x5f, 0xa9, 0xca, 0x4e, 0x5b, 0xdf, 0x42, 0x44, 0x2f, 0x2f, - 0x1b, 0x2f, 0x38, 0x6a, - 0xb3, 0x5a, 0x38, 0x12, 0x19, 0xbc, 0x3d, 0x98, 0xb3, 0x55, 0x54, 0x54, - 0x6d, 0x54, 0x36, 0x91, - 0x18, 0xf3, 0x2b, 0x8e, 0x9a, 0xaa, 0x45, 0x75, 0x18, 0x41, 0x89, 0x89, - 0x6a, 0x89, 0x51, 0x32, - 0xb8, 0x2d, 0x1c, 0x09, 0xed, 0x5e, 0xff, 0x4c, 0xb8, 0xcb, 0x2a, 0x2a, - 0xd7, 0x2a, 0x1b, 0xa9, - 0xfc, 0x29, 0x39, 0x62, 0xe0, 0xdb, 0x24, 0x1f, 0xfc, 0x0e, 0xb6, 0xb6, - 0x37, 0xb6, 0xa6, 0x2e, - 0x44, 0x04, 0x25, 0x6b, 0x0d, 0x85, 0xdb, 0x53, 0x44, 0xc5, 0x9c, 0x9c, - 0xe0, 0x9c, 0xbd, 0x87, - 0xe6, 0x5f, 0x85, 0x13, 0x86, 0x89, 0xa0, 0xaf, 0xe6, 0x30, 0xef, 0xef, - 0xb5, 0xef, 0x35, 0x47, - 0x8c, 0xc1, 0xa7, 0xeb, 0x21, 0xfa, 0x34, 0xef, 0x8c, 0xb7, 0x98, 0x98, - 0x10, 0x98, 0xfe, 0x7b, - 0xc6, 0xd8, 0xe1, 0x38, 0x9d, 0xd2, 0xed, 0xa2, 0xc6, 0xcc, 0x71, 0x71, - 0x2d, 0x71, 0x48, 0xbe, - 0x63, 0x6c, 0x91, 0x1c, 0xaf, 0x69, 0x97, 0x51, 0x63, 0x66, 0xd9, 0xd9, - 0xf7, 0xd9, 0x24, 0x5f, - 0xbf, 0xc2, 0xcc, 0x55, 0x54, 0xe9, 0xfe, 0x43, 0xbf, 0x94, 0xf1, 0xf1, - 0x58, 0xf1, 0xff, 0x88, - 0xf2, 0x34, 0x5a, 0xda, 0x51, 0x76, 0x26, 0x01, 0xf2, 0xb0, 0xc3, 0xc3, - 0xea, 0xc3, 0xad, 0x6c, - 0x2c, 0x1f, 0x90, 0x6c, 0x56, 0x0e, 0x8e, 0xd6, 0x2c, 0x3d, 0x3b, 0x3b, - 0xad, 0x3b, 0xb4, 0xe0, - 0x11, 0x01, 0x98, 0x6a, 0x92, 0xb0, 0x46, 0x64, 0x11, 0xa0, 0x27, 0x27, - 0x38, 0x27, 0xbe, 0x51, - 0x73, 0xce, 0xa3, 0xe8, 0x43, 0xa5, 0x50, 0xb6, 0x73, 0x18, 0x96, 0x96, - 0xbb, 0x96, 0xfb, 0xc2, - 0xdc, 0xae, 0x5d, 0x49, 0xfb, 0x80, 0x69, 0x12, 0xdc, 0xf2, 0x28, 0x28, - 0xaf, 0x28, 0xdb, 0xd7, - 0xd9, 0xc4, 0x1a, 0xea, 0xbe, 0xcf, 0xa9, 0xd8, 0xd9, 0xd2, 0x23, 0x23, - 0xc8, 0x23, 0xfd, 0xad, - 0x92, 0x7e, 0xf6, 0xa7, 0x7c, 0x9b, 0xf1, 0x16, 0x92, 0x77, 0xa2, 0xa2, - 0x81, 0xa2, 0x2a, 0xa4, - 0x3e, 0x38, 0x35, 0x67, 0x46, 0x3a, 0x88, 0xf4, 0x3e, 0x3c, 0xa4, 0xa4, - 0x09, 0xa4, 0xa9, 0x26, - 0xd2, 0xb3, 0x3e, 0xf1, 0x4a, 0x2d, 0x6b, 0x0c, 0xd2, 0x4c, 0x5d, 0x5d, - 0x72, 0x5d, 0xd0, 0x95, - 0x59, 0x9d, 0x49, 0x46, 0xd2, 0x60, 0x5e, 0xec, 0x59, 0xa4, 0x1e, 0x1e, - 0xed, 0x1e, 0xca, 0xcf, - 0x75, 0x82, 0xd9, 0x2a, 0x84, 0x6e, 0xd0, 0x3a, 0x75, 0x99, 0x25, 0x25, - 0x40, 0x25, 0x7e, 0x2f, - 0x19, 0x50, 0x81, 0x10, 0xe4, 0xd6, 0xc4, 0xf6, 0x19, 0x9f, 0xe1, 0xe1, - 0x1e, 0xe1, 0x30, 0xfe, - 0xb4, 0xb5, 0xe8, 0x4e, 0xa0, 0x0b, 0x3c, 0x97, 0xb4, 0x0a, 0x8f, 0x8f, - 0xe2, 0x8f, 0xd2, 0xb0, - 0x81, 0xfa, 0xf9, 0x32, 0x12, 0xd3, 0x76, 0xb7, 0x81, 0xa8, 0x55, 0x55, - 0x51, 0x55, 0x56, 0xae, - 0xe4, 0xda, 0x12, 0xec, 0x7a, 0x71, 0x61, 0x6a, 0xe4, 0x4f, 0x3f, 0x3f, - 0x5d, 0x3f, 0xf7, 0x1c, - 0xe5, 0x79, 0xb8, 0x72, 0x04, 0x0d, 0xe0, 0xe9, 0xe5, 0x91, 0x57, 0x57, - 0x29, 0x57, 0x96, 0xd0, - 0x0f, 0xbe, 0xc9, 0x26, 0xcf, 0xd1, 0x83, 0x9d, 0x0f, 0x60, 0x1d, 0x1d, - 0xa9, 0x1d, 0x6a, 0x8e, - 0x47, 0x22, 0x18, 0x0a, 0x8f, 0x01, 0x9b, 0x15, 0x47, 0x64, 0x24, 0x24, - 0x7c, 0x24, 0x1e, 0x10, - 0x9c, 0x63, 0x95, 0x1f, 0xcd, 0x36, 0xf3, 0x08, 0x9c, 0xc9, 0xd7, 0xd7, - 0x5c, 0xd7, 0x21, 0xe6, - 0x2a, 0x53, 0xea, 0xae, 0x91, 0xc5, 0x0e, 0x5a, 0x2a, 0xbc, 0x88, 0x88, - 0x56, 0x88, 0x31, 0x0d, - 0xa8, 0x8f, 0x2e, 0xfd, 0x01, 0x92, 0x38, 0xab, 0xa8, 0xb5, 0x65, 0x65, - 0x9b, 0x65, 0xc4, 0x34, - 0x5b, 0x18, 0xde, 0xb9, 0x2e, 0x98, 0x9f, 0x29, 0x5b, 0xdb, 0xce, 0xce, - 0x05, 0xce, 0x08, 0x94, - 0x8f, 0xe7, 0x9a, 0x8a, 0xa3, 0x7e, 0x74, 0xa9, 0x8f, 0x16, 0x20, 0x20, - 0x8c, 0x20, 0x5d, 0xec, - 0x04, 0xc9, 0xed, 0x3d, 0x3b, 0x33, 0x41, 0x49, 0x04, 0xfe, 0x63, 0x63, - 0x13, 0x63, 0x47, 0xb6, - 0xa6, 0x92, 0x4d, 0x45, 0xb0, 0x3f, 0x3a, 0xb5, 0xa6, 0x0b, 0x10, 0x10, - 0x46, 0x10, 0xcf, 0x76, - 0x72, 0x6d, 0x09, 0x76, 0x3d, 0xd9, 0xd1, 0x35, 0x72, 0xc6, 0xfe, 0xfe, - 0xcf, 0xfe, 0x9a, 0x0e, - 0xba, 0xa8, 0x8b, 0xf6, 0x11, 0xa6, 0x3e, 0x89, 0xba, 0xb4, 0xfa, 0xfa, - 0x3f, 0xfa, 0xd9, 0xf2, - 0x30, 0x25, 0x56, 0xdf, 0xf7, 0x97, 0x8a, 0xea, 0x30, 0x82, 0xd1, 0xd1, - 0xd4, 0xd1, 0xa2, 0x64, - 0x4c, 0x55, 0x3c, 0x11, 0x7b, 0xe3, 0x59, 0xc1, 0x4c, 0xfa, 0x5a, 0x5a, - 0xc6, 0x5a, 0x33, 0x28, - 0x82, 0xdc, 0xc4, 0x53, 0x90, 0x57, 0x36, 0xf1, 0x82, 0x09, 0xed, 0xed, - 0xcd, 0xed, 0xf5, 0x39, - 0x6a, 0x9e, 0x22, 0xf8, 0xa7, 0x73, 0x94, 0x40, 0x6a, 0x87, 0x77, 0x77, - 0xa5, 0x77, 0xcb, 0x3c, - 0x88, 0x08, 0x4a, 0xd6, 0x1a, 0xc9, 0x75, 0xa6, 0x88, 0x49, 0xfb, 0xfb, - 0x03, 0xfb, 0xb9, 0xcd, - 0x3c, 0xbd, 0xa2, 0x98, 0xba, 0xc2, 0x49, 0x31, 0x3c, 0x43, 0x74, 0x74, - 0xe1, 0x74, 0x6b, 0x7d, - 0x6e, 0x57, 0xcf, 0xc5, 0x9c, 0x40, 0xd5, 0x09, 0x6e, 0x79, 0x14, 0x14, - 0xb6, 0x14, 0x8c, 0x8a, - 0x0b, 0x77, 0x24, 0x1b, 0xf4, 0xe2, 0xc2, 0xd4, 0x0b, 0x9e, 0x7e, 0x7e, - 0xba, 0x7e, 0x2d, 0x38, - 0x9e, 0xe6, 0x02, 0xe0, 0x31, 0xce, 0x32, 0xcd, 0x9e, 0xb6, 0x07, 0x07, - 0xb4, 0x07, 0xe3, 0xbd, - 0x68, 0x1b, 0xb5, 0x07, 0x5b, 0x8b, 0x55, 0x85, 0x68, 0xf8, 0xa7, 0xa7, - 0x4d, 0xa7, 0x09, 0x67, - 0x67, 0xa5, 0x7c, 0x21, 0x94, 0x5a, 0xd6, 0x18, 0x67, 0x98, 0xba, 0xba, - 0xe4, 0xba, 0x63, 0xe9, - 0xc5, 0xfe, 0xdc, 0x59, 0x1f, 0x56, 0xad, 0xe4, 0xc5, 0x6d, 0xc9, 0xc9, - 0xb1, 0xc9, 0xeb, 0x29, - 0x74, 0x21, 0x73, 0xb4, 0xfa, 0x12, 0x51, 0xb9, 0x74, 0x47, 0x4d, 0x4d, - 0x34, 0x4d, 0x1f, 0xe3, - 0x40, 0xcd, 0xc8, 0x56, 0x36, 0xb6, 0x9a, 0x1a, 0x40, 0x3b, 0xff, 0xff, - 0xf3, 0xff, 0xfa, 0x31, - 0x0c, 0x98, 0xf4, 0x47, 0x4d, 0x55, 0xc3, 0xdb, 0x0c, 0xc1, 0xa5, 0xa5, - 0x35, 0xa5, 0xc9, 0x19, - 0xe7, 0xfc, 0x2f, 0x8d, 0xf8, 0xf5, 0x21, 0x2c, 0xe7, 0xee, 0x87, 0x87, - 0xc1, 0x87, 0x54, 0x8b, - 0x9d, 0xc0, 0x3f, 0x81, 0xb3, 0x4a, 0x72, 0x8b, 0x9d, 0x17, 0xbf, 0xbf, - 0x28, 0xbf, 0x40, 0x2a, - 0x90, 0xfb, 0x61, 0x58, 0x80, 0x63, 0x30, 0xd3, 0x90, 0x08, 0x72, 0x72, - 0x69, 0x72, 0xe8, 0xff, - 0x7a, 0x3c, 0x10, 0x0c, 0x4b, 0xbf, 0x53, 0xa7, 0x7a, 0xf9, 0x38, 0x38, - 0xe9, 0x38, 0x14, 0xa1, - 0x3a, 0xf1, 0xd8, 0x5a, 0x7d, 0x09, 0xc9, 0xbd, 0x3a, 0xc2, 0xc7, 0xc7, - 0x1a, 0xc7, 0xee, 0x90, - 0x35, 0x4f, 0x11, 0x7c, 0xb2, 0xd8, 0x4a, 0x20, 0x35, 0xa2, 0xda, 0xda, - 0xb3, 0xda, 0x84, 0x1e, - 0x34, 0xec, 0xbb, 0xe2, 0xcc, 0xa4, 0xcb, 0xa3, 0x34, 0x7c, 0xb2, 0xb2, - 0xc7, 0xb2, 0xe5, 0xd2, - 0x9f, 0x45, 0xa8, 0x7e, 0x4f, 0xb2, 0xb3, 0x4e, 0x9f, 0x68, 0x6f, 0x6f, - 0xc0, 0x6f, 0x82, 0x71, - 0xb7, 0x93, 0xd5, 0x2f, 0x22, 0x8f, 0x7c, 0xd1, 0xb7, 0xab, 0x37, 0x37, - 0x7e, 0x37, 0x71, 0x27, - 0xf8, 0xe0, 0xd4, 0x5f, 0xdb, 0xe8, 0x65, 0x56, 0xf8, 0xf0, 0xd5, 0xd5, - 0x24, 0xd5, 0xe1, 0x98, - 0x4f, 0x73, 0x01, 0x70, 0xf9, 0x67, 0x19, 0x87, 0x4f, 0x5b, 0xe2, 0xe2, - 0x5a, 0xe2, 0x90, 0xbf, - 0x6b, 0x3d, 0x88, 0x66, 0xd9, 0x0f, 0x15, 0xc3, 0x6b, 0x59, 0x1f, 0x1f, - 0xd1, 0x1f, 0xaa, 0xf0, - 0x83, 0x7f, 0x6e, 0xcd, 0xee, 0x2b, 0xb7, 0x72, 0x83, 0xd7, 0x85, 0x85, - 0xb9, 0x85, 0x94, 0xf5, - 0x5f, 0xd1, 0x33, 0x84, 0x15, 0xab, 0xde, 0x60, 0x5f, 0x25, 0xad, 0xad, - 0x16, 0xad, 0x4f, 0x22, - 0xa7, 0x31, 0xe7, 0xdb, 0xce, 0x43, 0xbb, 0x36, 0xa7, 0xd5, 0x78, 0x78, - 0x32, 0x78, 0xae, 0xba, - 0x1e, 0xbf, 0x51, 0x4c, 0x5d, 0x61, 0xc5, 0xf9, 0x1e, 0xc0, 0x3a, 0x3a, - 0x91, 0x3a, 0xd4, 0xdf, - 0x10, 0xa2, 0x32, 0xf4, 0xec, 0xcc, 0xc7, 0xe7, 0x10, 0x7e, 0x4f, 0x4f, - 0x4c, 0x4f, 0xdf, 0x9d, - 0xc3, 0xb2, 0xa6, 0x9b, 0xd8, 0x9d, 0x2d, 0x68, 0xc3, 0xec, 0x7a, 0x7a, - 0x4a, 0x7a, 0x6e, 0xc4, - 0x78, 0xb9, 0x87, 0xf3, 0xb7, 0x47, 0x92, 0x62, 0x78, 0x86, 0xe8, 0xe8, - 0x01, 0xe8, 0xd6, 0xfa, - 0x2d, 0xbc, 0x3a, 0xf2, 0x28, 0x72, 0x0f, 0x55, 0x2d, 0xe3, 0x53, 0x53, - 0xd9, 0x53, 0xd5, 0x2c, - 0x77, 0x07, 0x4e, 0xd5, 0x78, 0x96, 0x11, 0xff, 0x77, 0xe6, 0xf5, 0xf5, - 0xa8, 0xf5, 0xbc, 0x74, - 0xe3, 0x35, 0xc2, 0xb0, 0xc3, 0xc6, 0x60, 0x65, 0xe3, 0x10, 0xe4, 0xe4, - 0xd2, 0xe4, 0x13, 0x3d, - 0x80, 0x59, 0x53, 0xac, 0x6c, 0xaf, 0xf7, 0x34, 0x80, 0x76, 0x3d, 0x3d, - 0x25, 0x3d, 0x37, 0x62, - }, - { /* 14 */ - 0x0a, 0xaf, 0x45, 0x6e, 0xf6, 0x73, 0x56, 0xfb, 0x47, 0x1c, 0xd5, 0xc8, - 0x66, 0x2c, 0x64, 0xb5, - 0xca, 0x52, 0x68, 0xe5, 0x24, 0x5b, 0xd9, 0x08, 0xeb, 0x1e, 0xe0, 0x5e, - 0xac, 0x6b, 0x2f, 0x0a, - 0xf3, 0x80, 0xf6, 0x75, 0x2e, 0x6a, 0xc5, 0xcb, 0x78, 0x58, 0xd0, 0xcf, - 0x08, 0x95, 0x86, 0x89, - 0x17, 0x4e, 0xcb, 0x70, 0x06, 0xae, 0xb5, 0x41, 0x71, 0x83, 0x10, 0xce, - 0xdd, 0xeb, 0x67, 0xc0, - 0x33, 0x7d, 0xdb, 0xfe, 0xfc, 0x42, 0x4a, 0x38, 0xd4, 0x5a, 0xe5, 0x59, - 0xc2, 0xd2, 0xcd, 0x36, - 0x5f, 0x28, 0xeb, 0xaf, 0x31, 0xb5, 0x88, 0xb3, 0xf8, 0xf2, 0x39, 0x23, - 0xe3, 0x99, 0xf0, 0xef, - 0xa3, 0xb1, 0x9b, 0x83, 0x92, 0x74, 0x30, 0x1f, 0x05, 0xb8, 0xb7, 0x40, - 0xbe, 0x36, 0x20, 0x68, - 0x37, 0x3b, 0x27, 0xad, 0x21, 0xa2, 0xd7, 0x88, 0x43, 0x3d, 0xf8, 0xf7, - 0xfe, 0x14, 0x9a, 0xaa, - 0x2a, 0xda, 0xa9, 0xb3, 0xd1, 0x7f, 0x34, 0x32, 0x75, 0xa2, 0x3d, 0xf1, - 0x45, 0xd3, 0x99, 0xdf, - 0xc9, 0x81, 0x29, 0x49, 0x0d, 0x13, 0xc0, 0x7c, 0x14, 0xa5, 0x99, 0xc3, - 0xbd, 0xd8, 0x80, 0x63, - 0x67, 0x0a, 0x4a, 0x5b, 0x9d, 0xbc, 0x22, 0x5c, 0x3e, 0xdd, 0x9f, 0x78, - 0x48, 0xb7, 0x3c, 0x4b, - 0xd3, 0xf5, 0x1a, 0xa8, 0x09, 0x66, 0xa7, 0x02, 0x4a, 0xe6, 0x38, 0xf6, - 0x2b, 0x6a, 0x7b, 0xe3, - 0x63, 0x4c, 0xb6, 0x08, 0x40, 0x5c, 0xbf, 0xec, 0xa9, 0xba, 0x82, 0xd6, - 0x74, 0x71, 0x6b, 0xd7, - 0x84, 0x51, 0xca, 0xa1, 0x41, 0xd0, 0xd6, 0x12, 0x5f, 0xda, 0x3b, 0x4a, - 0xb0, 0xbc, 0x25, 0xf7, - 0xf7, 0xc6, 0x0a, 0x26, 0xf3, 0x8a, 0x58, 0x7b, 0xef, 0x3f, 0xcd, 0x61, - 0x34, 0x53, 0xd1, 0x15, - 0x3c, 0x64, 0x5d, 0xa7, 0x71, 0xe9, 0x37, 0x5f, 0x51, 0x48, 0xbb, 0xf5, - 0x97, 0xe8, 0x9b, 0x38, - 0xea, 0x27, 0x84, 0x38, 0x03, 0x57, 0xbb, 0xc1, 0xd9, 0xa0, 0x08, 0x67, - 0x8f, 0x94, 0xd2, 0x60, - 0x65, 0x29, 0x34, 0x93, 0x12, 0xcc, 0x8d, 0x04, 0x94, 0x0f, 0x70, 0x2f, - 0x56, 0xd4, 0xf6, 0x05, - 0xd0, 0x26, 0x5b, 0x04, 0x20, 0x2e, 0xbe, 0x76, 0xb5, 0x5d, 0x41, 0x6b, - 0x3a, 0xd9, 0xd4, 0x8a, - 0x9e, 0x25, 0xf9, 0x40, 0x45, 0xa5, 0xb1, 0x6c, 0x01, 0x99, 0x9a, 0x7f, - 0x26, 0x0e, 0xde, 0x77, - 0x18, 0x57, 0x4d, 0x29, 0x8b, 0x05, 0xc8, 0x26, 0xf4, 0x91, 0x4e, 0x62, - 0x88, 0xd1, 0x31, 0xce, - 0xf4, 0x15, 0x4b, 0x8a, 0xda, 0xc2, 0x41, 0x0f, 0x10, 0x84, 0xb4, 0xfc, - 0x25, 0xe0, 0x7e, 0x7c, - 0xaf, 0x7b, 0x5c, 0x76, 0x36, 0x97, 0x54, 0x0c, 0x7f, 0x11, 0x90, 0x71, - 0xfa, 0xbf, 0xd9, 0x0f, - 0xcc, 0x37, 0xea, 0x7e, 0x76, 0xcb, 0xeb, 0xe0, 0xd6, 0xab, 0x12, 0xa7, - 0x8e, 0xce, 0xb2, 0xd8, - 0x7a, 0xeb, 0xc4, 0x45, 0x6d, 0x61, 0xc1, 0xe6, 0x08, 0x42, 0x5a, 0x7e, - 0xf3, 0x70, 0x3f, 0x3e, - 0x83, 0xc4, 0x77, 0x5e, 0xb5, 0x78, 0x52, 0xd6, 0x37, 0x06, 0x5f, 0x79, - 0x9d, 0xc9, 0xdd, 0x02, - 0x9d, 0xf6, 0xb8, 0xec, 0x6c, 0xed, 0xa8, 0x18, 0xfe, 0x22, 0xe3, 0xe2, - 0x37, 0xbd, 0x71, 0x1e, - 0x81, 0xe7, 0x09, 0x96, 0x3a, 0x08, 0xfd, 0x8e, 0x9d, 0xd4, 0xb0, 0x2e, - 0x83, 0xaa, 0x17, 0x4c, - 0xad, 0x58, 0x22, 0xbe, 0xb9, 0xe7, 0xfb, 0x54, 0xd5, 0xc3, 0x7f, 0x26, - 0xe4, 0xdc, 0x13, 0x41, - 0xa9, 0x1e, 0xde, 0xed, 0x64, 0x07, 0x66, 0xe4, 0x42, 0xa4, 0x62, 0x88, - 0xd8, 0x1a, 0x44, 0xdd, - 0xfc, 0x99, 0x70, 0x2c, 0xa3, 0xc1, 0xb8, 0xac, 0xfd, 0x4a, 0x8e, 0x63, - 0x5d, 0xaf, 0xd0, 0x87, - 0x73, 0x97, 0xc0, 0x87, 0xb2, 0x5a, 0x8e, 0x69, 0xb0, 0xe5, 0xf6, 0x2b, - 0x84, 0xef, 0xf4, 0xe2, - 0xb0, 0xb9, 0xac, 0xa0, 0x49, 0x3a, 0x18, 0xee, 0xe3, 0x5c, 0xba, 0x20, - 0x5f, 0x1b, 0x10, 0x34, - 0x77, 0xd1, 0x3c, 0xd4, 0x6f, 0xba, 0x13, 0xd9, 0x27, 0x82, 0xeb, 0x85, - 0xb8, 0x29, 0xa3, 0x7e, - 0xa5, 0xd4, 0x19, 0x18, 0xc0, 0xe4, 0x02, 0xf7, 0x38, 0x0d, 0x45, 0xb9, - 0x9c, 0x93, 0xbd, 0xba, - 0x46, 0x8f, 0x99, 0xe2, 0x1c, 0x88, 0xf6, 0xb9, 0x59, 0x0a, 0xe1, 0x8b, - 0x64, 0x98, 0xa4, 0x06, - 0x10, 0xdb, 0x76, 0x8f, 0xf2, 0x06, 0x31, 0x85, 0x19, 0x5f, 0x74, 0xfd, - 0xf0, 0x9e, 0x9f, 0x35, - 0x2b, 0x2a, 0x96, 0xd7, 0x77, 0x47, 0x82, 0x1e, 0x20, 0xcb, 0xab, 0x3b, - 0x4a, 0x03, 0xfc, 0xf8, - 0x87, 0x82, 0x8b, 0x0d, 0x68, 0x98, 0xcf, 0x66, 0xa0, 0x61, 0x42, 0xd7, - 0xa1, 0x0f, 0x8a, 0x9e, - 0xf9, 0x2f, 0xb3, 0x1b, 0xd8, 0x19, 0x93, 0x30, 0x3f, 0x44, 0x05, 0x07, - 0x6e, 0xb9, 0xe2, 0x3c, - 0xd8, 0xaa, 0x60, 0xa2, 0x59, 0x2d, 0x47, 0xd5, 0x58, 0x93, 0x7b, 0xf4, - 0x42, 0x96, 0x7a, 0x71, - 0x80, 0x17, 0x36, 0xf2, 0x9c, 0x30, 0x4b, 0xa2, 0xc8, 0xbd, 0x26, 0xe4, - 0x8c, 0x7a, 0x72, 0x6b, - 0x34, 0xe8, 0x66, 0x01, 0x08, 0xea, 0xce, 0xfc, 0xbc, 0x86, 0x81, 0x6a, - 0xef, 0xa7, 0x35, 0xc3, - 0x31, 0x5e, 0xa5, 0x36, 0x73, 0x32, 0xe5, 0x60, 0x7e, 0x88, 0x0a, 0x0e, - 0xdc, 0xb1, 0x07, 0x78, - 0x6f, 0x86, 0x71, 0xfd, 0xe4, 0xbf, 0xdb, 0xff, 0xd3, 0x13, 0xa5, 0xe7, - 0x30, 0xf8, 0x92, 0xb0, - 0x4d, 0xd0, 0xe3, 0xe8, 0x4c, 0xc3, 0x16, 0x6e, 0x4b, 0x7f, 0xa2, 0x89, - 0x0d, 0x64, 0xa5, 0x94, - 0xd5, 0x90, 0x98, 0x33, 0x5b, 0xf6, 0x95, 0xea, 0x77, 0x53, 0xca, 0x0f, - 0x09, 0xcf, 0xe6, 0x31, - 0xa6, 0x07, 0x58, 0xb4, 0xe9, 0xac, 0x1b, 0x83, 0xc7, 0xb6, 0x3c, 0x24, - 0x8d, 0x20, 0x12, 0xd3, - 0xba, 0x16, 0xe9, 0xce, 0xbf, 0x49, 0x4e, 0x15, 0xa4, 0x40, 0x6f, 0xe8, - 0x39, 0x37, 0x74, 0x81, - 0x62, 0xbc, 0x89, 0x6c, 0xe6, 0x64, 0x09, 0xc0, 0xfc, 0xd3, 0x14, 0x1c, - 0x7b, 0xa1, 0x0e, 0xf0, - 0x9a, 0x63, 0x05, 0x13, 0x98, 0x45, 0x2c, 0xdc, 0x96, 0xfe, 0x87, 0xd1, - 0x1a, 0xc8, 0x89, 0xeb, - 0x61, 0x6f, 0xc8, 0xc0, 0xcf, 0x2c, 0x10, 0xb4, 0x03, 0x68, 0x6d, 0x81, - 0x6a, 0x12, 0xa1, 0x99, - 0x5d, 0x0b, 0x95, 0x67, 0xbe, 0xc5, 0x27, 0xeb, 0x52, 0x20, 0xd6, 0x74, - 0xfd, 0xfa, 0x3a, 0xa1, - 0xa8, 0xee, 0xe1, 0x89, 0xc2, 0x3f, 0xd0, 0xc8, 0x17, 0xcd, 0xf4, 0x42, - 0xd7, 0xca, 0x21, 0xfa, - 0x98, 0x40, 0x7b, 0xdb, 0x17, 0x35, 0x83, 0x84, 0x3c, 0x2c, 0x68, 0x86, - 0x04, 0xab, 0x43, 0xa5, - 0x21, 0x85, 0xd3, 0xb9, 0x81, 0x34, 0xd4, 0xe5, 0x67, 0xd7, 0x7e, 0xf3, - 0x2c, 0x2f, 0x98, 0x4d, - 0x6d, 0xa5, 0x0f, 0x35, 0x6b, 0xcf, 0x74, 0xa7, 0x79, 0xc1, 0x4a, 0xb0, - 0x2e, 0x9b, 0x58, 0xfe, - 0xfa, 0xfc, 0xf2, 0xb7, 0xf1, 0x51, 0x8a, 0x44, 0xc0, 0xff, 0x7c, 0x9a, - 0x7f, 0x0a, 0x4d, 0x55, - 0x1d, 0xe1, 0x8e, 0x1e, 0xf0, 0xdd, 0xe3, 0xba, 0x36, 0x9f, 0xc5, 0x06, - 0xbb, 0xc7, 0x03, 0x75, - 0xe2, 0xab, 0xbf, 0x9e, 0x7a, 0x54, 0x42, 0x62, 0x34, 0x6e, 0x32, 0xf8, - 0xf7, 0xdb, 0x7c, 0x9b, - 0x48, 0x66, 0x20, 0xdf, 0x37, 0x1b, 0x3d, 0xf2, 0x89, 0x71, 0x29, 0xed, - 0x3e, 0x72, 0x97, 0x2f, - 0x93, 0x1f, 0x01, 0xd1, 0x47, 0x7e, 0x63, 0x53, 0x2e, 0x59, 0x2b, 0x84, - 0x6d, 0x57, 0x42, 0x37, - 0xb3, 0x6a, 0xed, 0x0c, 0x60, 0x72, 0x01, 0x9a, 0x1c, 0xe7, 0xc3, 0xbd, - 0x4e, 0xa8, 0xbf, 0x5d, - 0x57, 0xa4, 0xd0, 0x09, 0x48, 0xb6, 0x71, 0x10, 0x15, 0x3c, 0x03, 0xbc, - 0x9b, 0xd6, 0x5e, 0x14, - 0x70, 0x44, 0x81, 0x2b, 0x9b, 0x12, 0x97, 0x1d, 0x4f, 0x5e, 0x8f, 0xb6, - 0x95, 0x5c, 0x5b, 0x8b, - 0x19, 0xa7, 0x72, 0x4d, 0x2d, 0x3d, 0x7e, 0x0a, 0xa1, 0xf8, 0xd8, 0xa8, - 0x87, 0x01, 0x54, 0xe9, - 0x6e, 0x76, 0x4e, 0x99, 0x42, 0x87, 0x6d, 0xd3, 0x86, 0x7a, 0x33, 0x2d, - 0x3f, 0x28, 0xf7, 0x97, - 0xbc, 0x73, 0x6b, 0x55, 0xed, 0xd9, 0x7c, 0xfd, 0x99, 0xf5, 0x9d, 0x11, - 0x1b, 0x92, 0xe9, 0x53, - 0x3d, 0x94, 0x62, 0xc3, 0xd7, 0xd1, 0x81, 0x73, 0x04, 0x21, 0x2d, 0x3f, - 0x98, 0x38, 0xfe, 0x1f, - 0x13, 0x08, 0x37, 0x23, 0xdb, 0x4e, 0x28, 0xf1, 0xe6, 0xe4, 0x0d, 0x60, - 0xe1, 0x2d, 0x30, 0x5c, - 0x86, 0x72, 0xb4, 0x69, 0xce, 0xa0, 0x79, 0x4a, 0xf5, 0x08, 0xd4, 0x1d, - 0xae, 0xdf, 0xef, 0xb9, - 0xdb, 0x79, 0x21, 0x0e, 0x70, 0x65, 0x5e, 0xa1, 0xa7, 0x28, 0x02, 0x69, - 0x53, 0x25, 0xd5, 0x18, - 0x4a, 0x45, 0x5e, 0x17, 0xb8, 0x6b, 0x92, 0xaa, 0x23, 0xa3, 0xc6, 0xba, - 0x20, 0x11, 0x5d, 0x61, - 0x03, 0xd3, 0x41, 0xac, 0x29, 0x48, 0x19, 0x74, 0xff, 0xbb, 0x79, 0x9d, - 0x11, 0xb3, 0xaf, 0x69, - 0x32, 0x8d, 0xe4, 0x9a, 0x5a, 0x7a, 0xfc, 0x14, 0x81, 0x33, 0x73, 0x93, - 0xcd, 0x02, 0xa8, 0x11, - 0xbb, 0xe6, 0xd6, 0xaa, 0x19, 0x71, 0xf8, 0x39, 0xf1, 0x29, 0xf9, 0x22, - 0x36, 0xe7, 0x11, 0xa6, - 0x47, 0x7f, 0xa6, 0x86, 0xba, 0xb0, 0x40, 0x95, 0x0c, 0x63, 0x77, 0x41, - 0x6b, 0x48, 0xc1, 0x21, - 0x59, 0x4d, 0x69, 0x34, 0x63, 0x25, 0xba, 0x5b, 0xc5, 0x47, 0xcb, 0xda, - 0xc1, 0x3c, 0x6d, 0x3d, - 0x7e, 0xad, 0x38, 0x16, 0xb0, 0x81, 0x5c, 0x56, 0x9f, 0x25, 0x47, 0xd0, - 0xcf, 0xb6, 0x68, 0xa2, - 0xe4, 0xce, 0x3d, 0x05, 0x28, 0xc4, 0x70, 0x8a, 0x09, 0xdb, 0xc0, 0x01, - 0xd5, 0x7e, 0xe1, 0x49, - 0xc1, 0x0d, 0x12, 0xef, 0x74, 0x10, 0x39, 0xdf, 0xf9, 0x6b, 0xa3, 0x5c, - 0xc5, 0x97, 0x2e, 0x98, - 0x45, 0x5c, 0xd8, 0x4e, 0x35, 0xc0, 0xef, 0xcd, 0xa6, 0xb1, 0x98, 0x16, - 0x75, 0x2b, 0x0b, 0x6f, - 0x40, 0xea, 0x1b, 0x79, 0x4e, 0x18, 0xc4, 0x51, 0x64, 0xbf, 0x13, 0x72, - 0x46, 0x3d, 0x39, 0xd4, - 0x9c, 0x06, 0x87, 0x88, 0xca, 0xd5, 0x1e, 0x34, 0xab, 0x4b, 0x75, 0x28, - 0x38, 0x6d, 0x14, 0x39, - 0x2d, 0x4f, 0x14, 0x4c, 0x25, 0xd7, 0xb0, 0xf6, 0x1d, 0x7e, 0x59, 0xc2, - 0x68, 0xa6, 0x61, 0x2a, - 0xda, 0x89, 0x1e, 0x6a, 0xd6, 0x5d, 0xe8, 0x8d, 0xf2, 0x41, 0x94, 0xa3, - 0x5c, 0xf5, 0xb0, 0x3f, - 0x28, 0xf9, 0xd7, 0x7b, 0x5e, 0x0f, 0x9b, 0x6a, 0xdf, 0x70, 0xd2, 0xa6, - 0x5b, 0xb0, 0x53, 0x91, - 0xc0, 0xfd, 0x2d, 0x8b, 0xd2, 0x28, 0x8f, 0xf3, 0xac, 0x02, 0x35, 0x96, - 0xca, 0x47, 0x4b, 0xbf, - 0x76, 0x21, 0x03, 0xb0, 0xc9, 0x82, 0xa5, 0xf5, 0x72, 0xeb, 0x7d, 0x4f, - 0xb7, 0xf9, 0xc6, 0x59, - 0xdf, 0x3f, 0xdd, 0x5d, 0xad, 0x85, 0xc3, 0x11, 0x30, 0x4f, 0x1f, 0xc7, - 0x6f, 0xe3, 0x82, 0x84, - 0x8d, 0x2d, 0xce, 0x63, 0x9e, 0xeb, 0x99, 0x9d, 0xe7, 0x7d, 0x97, 0x1f, - 0xc7, 0x23, 0xee, 0x2b, - 0x8b, 0x48, 0x4c, 0xf8, 0xcc, 0x7b, 0xab, 0x75, 0xda, 0xc8, 0x65, 0xe6, - 0xe5, 0x86, 0x73, 0xf9, - 0x15, 0x6d, 0xb5, 0xb8, 0x89, 0xde, 0x1a, 0x19, 0xdb, 0x51, 0xff, 0x99, - 0xc3, 0x88, 0xad, 0x8e, - 0x5b, 0x6e, 0x17, 0xfc, 0xec, 0x55, 0x15, 0x03, 0x6f, 0x95, 0x24, 0x8d, - 0xdf, 0x5f, 0xa7, 0x73, - 0x66, 0xfa, 0x75, 0x3f, 0x3b, 0x84, 0x94, 0x70, 0x6b, 0xb4, 0x09, 0xb2, - 0x47, 0x67, 0x59, 0x6c, - 0xb5, 0x0f, 0x6f, 0x97, 0x32, 0xe2, 0x33, 0x72, 0x21, 0x52, 0x31, 0x44, - 0x6c, 0x0d, 0x22, 0x8f, - 0xe0, 0x88, 0xc1, 0x56, 0xf5, 0x24, 0xed, 0x3a, 0x9e, 0xbc, 0xdd, 0xaf, - 0xe9, 0xb8, 0xb6, 0xd5, - 0x6c, 0x55, 0x30, 0x51, 0xcd, 0xf7, 0xc2, 0x8b, 0x2c, 0xa8, 0xdc, 0x7a, - 0x21, 0x4b, 0x3d, 0xd9, - 0xa2, 0x41, 0xa4, 0xe7, 0x34, 0x4c, 0x86, 0x33, 0x50, 0xd1, 0x21, 0x8a, - 0xb1, 0xe6, 0x45, 0x4f, - 0xd4, 0x60, 0xa7, 0x57, 0xfd, 0xce, 0x23, 0xc6, 0x22, 0x3a, 0x5c, 0xc5, - 0x06, 0x1f, 0x83, 0x16, - 0x5a, 0x9e, 0x28, 0x98, 0x4a, 0x6d, 0xa3, 0x2f, 0x3a, 0xfc, 0xb2, 0x47, - 0xd0, 0x8f, 0xc2, 0x54, - 0xbf, 0xa0, 0x2a, 0xf9, 0xc4, 0x91, 0x65, 0x89, 0x66, 0x4e, 0xe4, 0x8c, - 0x0a, 0x21, 0x46, 0x3a, - 0x78, 0xc8, 0xba, 0x8d, 0xe2, 0x11, 0x6e, 0xbe, 0xa2, 0x90, 0xb5, 0x29, - 0xed, 0x13, 0xf5, 0x70, - 0x1e, 0x32, 0xcf, 0xb2, 0xd9, 0x95, 0xfa, 0xce, 0xc9, 0x24, 0xbc, 0x9b, - 0xaa, 0x74, 0xac, 0x1c, - 0x07, 0x95, 0xbd, 0xff, 0xf4, 0xa8, 0x84, 0xc4, 0x68, 0xdc, 0x64, 0x33, - 0x2d, 0x75, 0xf8, 0xf5, - 0x82, 0x34, 0x48, 0x3a, 0x13, 0x40, 0xe4, 0xfa, 0x62, 0x6f, 0xc9, 0xb3, - 0x92, 0x19, 0xb8, 0x25, - 0x68, 0x13, 0xcc, 0x02, 0x10, 0x17, 0x5f, 0x3b, 0xbb, 0xcf, 0xc1, 0xd4, - 0x1d, 0x8d, 0x6a, 0x45, - 0x12, 0xf8, 0x08, 0x47, 0x7d, 0x76, 0x9e, 0xdd, 0xb3, 0x8d, 0x9b, 0xaa, - 0xee, 0xfd, 0x55, 0x7b, - 0x58, 0xbd, 0x56, 0x50, 0xc5, 0x1d, 0x0c, 0x77, 0x90, 0x2e, 0x5d, 0x10, - 0xce, 0xec, 0x08, 0x1a, - 0x8f, 0x0e, 0xb0, 0xab, 0x11, 0x9b, 0x36, 0xc5, 0x4d, 0xaf, 0x78, 0x48, - 0xd9, 0x40, 0x24, 0x65, - 0xe1, 0x78, 0xfe, 0x32, 0x53, 0x1c, 0x5b, 0x16, 0xcb, 0xd5, 0x4b, 0x65, - 0xe6, 0x68, 0xd3, 0xf2, - 0x36, 0xcb, 0x18, 0xc9, 0x87, 0x9a, 0x61, 0xa4, 0x16, 0x54, 0x6e, 0x3d, - 0xf1, 0xc4, 0xff, 0x8d, - 0x74, 0x02, 0x7d, 0x78, 0x46, 0xf2, 0x0a, 0xad, 0xd8, 0x39, 0x92, 0x18, - 0xa9, 0x9a, 0x0c, 0x17, - 0xff, 0x4a, 0x31, 0x80, 0x8a, 0x89, 0xa1, 0xd8, 0x02, 0xf1, 0xf7, 0xfe, - 0x4c, 0x1c, 0x7f, 0xee, - 0x3a, 0x01, 0xdf, 0x3c, 0x23, 0x79, 0x05, 0xb7, 0x6c, 0xfd, 0x49, 0x0c, - 0xb5, 0x4d, 0x06, 0xea, - 0x79, 0x38, 0x85, 0xe9, 0x44, 0x29, 0xd8, 0x92, 0xf7, 0xf9, 0x23, 0xe3, - 0xe2, 0xc3, 0x90, 0x57, - 0xdd, 0x1c, 0xa3, 0x95, 0x22, 0xf5, 0x6c, 0x49, 0x9a, 0x9d, 0xf0, 0x90, - 0x71, 0x80, 0x48, 0xca, - 0x54, 0x77, 0x91, 0xa5, 0x61, 0xfe, 0x68, 0x64, 0xea, 0x87, 0x7a, 0x21, - 0x8a, 0x65, 0xf1, 0x7d, - 0x22, 0x56, 0x92, 0x15, 0xa8, 0x7c, 0xcd, 0x91, 0x98, 0x6c, 0x07, 0x6e, - 0x3d, 0x9c, 0x37, 0x24, - 0x05, 0xb6, 0xc3, 0x37, 0x7b, 0xd8, 0x2b, 0x9c, 0xc2, 0x0e, 0x8b, 0x64, - 0x33, 0x16, 0x32, 0xbb, - 0x88, 0x9b, 0x0d, 0x54, 0xe5, 0x33, 0xb2, 0x01, 0x25, 0x73, 0x1c, 0x7b, - 0xf4, 0x35, 0xdc, 0x90, - 0x06, 0x65, 0x82, 0x9b, 0x52, 0x90, 0x32, 0xe8, 0x3d, 0xb5, 0xf2, 0xf9, - 0x22, 0xa5, 0x9d, 0xd2, - 0x53, 0xe2, 0x2c, 0x5a, 0x95, 0x56, 0xec, 0xa0, 0x82, 0x5b, 0x1e, 0x12, - 0xa7, 0x10, 0x09, 0x88, - 0x95, 0x7a, 0x83, 0x4a, 0x15, 0xee, 0x51, 0xbb, 0x13, 0xec, 0xd9, 0x7d, - 0x4f, 0xf2, 0xdf, 0xe5, - 0xe9, 0xf4, 0xc5, 0x94, 0x2a, 0x1f, 0xa2, 0xb5, 0x26, 0x1b, 0x71, 0xfa, - 0x9e, 0x27, 0x7d, 0x09, - 0xec, 0x42, 0x06, 0xa3, 0x51, 0xc7, 0x89, 0x29, 0xe4, 0x15, 0xfa, 0x9e, - 0xad, 0x31, 0x4f, 0xb2, - 0x97, 0x59, 0xfd, 0x82, 0x9a, 0x9e, 0xfe, 0xe3, 0xb9, 0x3e, 0x36, 0x2a, - 0x51, 0x91, 0x15, 0xab, - 0xd1, 0xd6, 0x64, 0x60, 0x86, 0x16, 0x08, 0x5a, 0xe0, 0x34, 0xd7, 0xa1, - 0x35, 0x09, 0xb1, 0xad, - 0x69, 0xe3, 0xf3, 0x66, 0xb6, 0x2f, 0xe9, 0x17, 0xee, 0xa6, 0x57, 0x1e, - 0x12, 0x5d, 0x0f, 0x62, - 0x6a, 0x30, 0xb2, 0xca, 0x9f, 0x67, 0xf0, 0x63, 0x11, 0x1d, 0x2e, 0x83, - 0x03, 0xee, 0xa0, 0x0b, - 0x43, 0x39, 0x5a, 0xd5, 0x67, 0x50, 0xdd, 0x25, 0x9b, 0x04, 0x6a, 0xef, - 0x57, 0x8e, 0x96, 0xbd, - 0x41, 0x1a, 0x24, 0x1d, 0xe8, 0x20, 0x72, 0x7d, 0x31, 0xd6, 0x85, 0xb8, - 0x49, 0xed, 0x5c, 0xf3, - 0xae, 0x8b, 0x63, 0x12, 0x90, 0xaf, 0xe2, 0x20, 0x2a, 0x78, 0x06, 0xbb, - 0xf5, 0x6f, 0xbc, 0x28, - 0x0c, 0xca, 0xc7, 0xf5, 0xa4, 0xe3, 0x64, 0x13, 0x7a, 0xa9, 0x27, 0x31, - 0x44, 0x89, 0xf9, 0x67, - 0x7c, 0x8e, 0x46, 0xde, 0x3f, 0xf1, 0xf3, 0x0e, 0x35, 0xf7, 0xa8, 0x87, - 0xd1, 0xd5, 0xa2, 0xec, - 0x5e, 0xd8, 0xd4, 0xcb, 0x97, 0x8d, 0x3e, 0x9f, 0xad, 0x9b, 0xaf, 0xe9, - 0xec, 0x49, 0x95, 0xc8, - 0x44, 0xac, 0xe7, 0x2a, 0x93, 0xf8, 0x59, 0xe1, 0xf3, 0xd8, 0x0e, 0xdc, - 0x7a, 0xfb, 0x6e, 0x48, - 0x25, 0xc3, 0x2f, 0xea, 0x5c, 0xd4, 0x49, 0x55, 0xf0, 0xb0, 0x63, 0x5d, - 0x10, 0xe9, 0xcf, 0xd1, - 0x09, 0x7c, 0x04, 0xc2, 0xdf, 0x3b, 0x4f, 0x8f, 0xb8, 0xa7, 0xac, 0x55, - 0x77, 0x9f, 0xcb, 0xdc, - 0xbd, 0x83, 0x54, 0x31, 0x4b, 0xe1, 0xca, 0xd1, 0xcc, 0x9c, 0x0b, 0xdb, - 0x14, 0x42, 0x8c, 0x74, - 0x9f, 0xd5, 0xc6, 0x24, 0xe3, 0x9d, 0x07, 0x40, 0x54, 0xf0, 0x0c, 0xb5, - 0x29, 0xde, 0xbb, 0x50, - 0x2e, 0x9c, 0x55, 0xe0, 0x0c, 0x9f, 0xa9, 0x82, 0xe2, 0xc5, 0x20, 0x5f, - 0x79, 0x15, 0xce, 0x43, - 0x1b, 0x84, 0x0c, 0x85, 0xa2, 0x4d, 0xd1, 0x52, 0x0b, 0x2a, 0x37, 0xff, - 0x99, 0x62, 0x9e, 0xa7, - 0xd7, 0xb3, 0xe6, 0xfb, 0xd4, 0x86, 0x3a, 0xb2, 0xdd, 0x81, 0x25, 0x58, - 0x17, 0xac, 0x2c, 0x7f, - 0x8a, 0xb8, 0x73, 0x9c, 0x6a, 0x43, 0x1d, 0x59, 0x8f, 0xa1, 0xf3, 0x2c, - 0xea, 0x56, 0x16, 0xde, - 0x0d, 0x3a, 0xf8, 0x91, 0x02, 0xdb, 0xd2, 0x3f, 0x2f, 0xc0, 0xb1, 0xfb, - 0x4b, 0x59, 0x9c, 0x40, - 0x50, 0x31, 0x6d, 0xf6, 0xbc, 0x1e, 0xf5, 0xd4, 0x7d, 0xe0, 0x67, 0x8f, - 0xb6, 0xa3, 0xa6, 0xe1, - 0x24, 0x33, 0x10, 0x8e, 0xfa, 0xec, 0xff, 0x79, 0xa5, 0xd9, 0xf5, 0x97, - 0x1f, 0x39, 0xaa, 0xf6, - 0xf2, 0x70, 0xc9, 0x11, 0x88, 0x52, 0x73, 0xe7, 0x2d, 0x31, 0x46, 0x05, - 0x07, 0x45, 0xe3, 0xae, - 0x38, 0x22, 0xa1, 0xf4, 0xac, 0x09, 0xaa, 0xef, 0xc6, 0x2f, 0xa6, 0x5b, - 0xab, 0x2e, 0xcc, 0xa4, - 0x7b, 0x1b, 0xfb, 0x21, 0xcb, 0x59, 0x77, 0xca, 0x5d, 0x2b, 0xcc, 0xb4, - 0xfc, 0xa0, 0x5a, 0x19, - 0xa1, 0x92, 0xe5, 0x4b, 0x1d, 0x04, 0x9f, 0x47, 0xaf, 0x6a, 0x58, 0x17, - 0xa0, 0x55, 0xea, 0x26, - 0xbe, 0x50, 0x15, 0x9d, 0x62, 0xa9, 0xd3, 0xa5, 0x33, 0x27, 0x72, 0x46, - 0x05, 0xf1, 0x23, 0x1d, - 0xa7, 0xf7, 0x67, 0xd0, 0x4f, 0x94, 0xad, 0xaf, 0x92, 0xdf, 0xaa, 0xee, - 0x82, 0xf0, 0x77, 0xf4, - 0x99, 0xb0, 0x44, 0xbf, 0xb1, 0x0d, 0x35, 0xa8, 0x69, 0x45, 0xfe, 0x4c, - 0x0b, 0x7b, 0x26, 0x82, - 0xf1, 0xa3, 0x88, 0xbd, 0xa1, 0x1a, 0x6a, 0x93, 0xd2, 0x8a, 0x3f, 0x98, - 0x16, 0xf6, 0x4c, 0xc7, - 0xeb, 0xd7, 0xbb, 0x5c, 0xa5, 0x6f, 0x0d, 0xed, 0x8c, 0xc9, 0x9e, 0xad, - 0x80, 0x44, 0xb7, 0x47, - 0x39, 0xd2, 0x9e, 0x90, 0x0a, 0x31, 0x1c, 0xc3, 0x93, 0x46, 0x30, 0x91, - 0xa4, 0xfe, 0xa9, 0x83, - 0xb7, 0x2c, 0x11, 0x5f, 0xbd, 0x92, 0x9c, 0x2a, 0x8b, 0x80, 0xde, 0x13, - 0x72, 0x6e, 0xe8, 0xc1, - 0x1c, 0x11, 0xb1, 0x7a, 0x56, 0xe5, 0x55, 0x96, 0x63, 0xf6, 0x53, 0xcc, - 0xb4, 0x17, 0x66, 0x52, - 0x01, 0xf0, 0x3f, 0x64, 0xa6, 0x38, 0xb6, 0x2c, 0x55, 0x69, 0x96, 0xca, - 0x0f, 0xd0, 0x65, 0x27, - 0xef, 0x91, 0x47, 0x0f, 0x78, 0x8f, 0x90, 0x5d, 0x1b, 0xae, 0x83, 0x03, - 0xbc, 0x82, 0xe0, 0xdb, - 0x1f, 0xc2, 0xf0, 0xd6, 0x7f, 0xad, 0x4c, 0xe2, 0x9c, 0x4d, 0x2a, 0x51, - 0xa5, 0xa4, 0xc9, 0x3b, - 0x92, 0xef, 0x3e, 0xb5, 0xe1, 0x46, 0xd5, 0x7f, 0x7b, 0x30, 0xbd, 0x4e, - 0x62, 0x87, 0x27, 0x10, - 0x1a, 0x74, 0x33, 0xe1, 0x04, 0x75, 0x67, 0x7e, 0x5e, 0x43, 0xa1, 0x35, - 0x96, 0xb2, 0xfb, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x85, 0xa1, 0xf5, 0xc5, 0xe7, 0xe8, 0x60, 0x3e, 0x0a, 0xb3, 0xad, 0x80, - 0xbf, 0x6c, 0x40, 0xd0, - 0x5c, 0xfb, 0xaa, 0x03, 0x18, 0xfd, 0x91, 0xc7, 0x07, 0x49, 0x40, 0xbe, - 0xf2, 0x2a, 0x5f, 0x86, - 0xed, 0xb2, 0x39, 0xc7, 0xf7, 0xff, 0x3f, 0x05, 0xb1, 0x7c, 0x6c, 0x54, - 0xa2, 0xe1, 0x2a, 0x95, - 0x56, 0x54, 0xef, 0x6d, 0xee, 0x8e, 0xc7, 0x3c, 0x40, 0x55, 0x95, 0x76, - 0x94, 0x06, 0x3b, 0x33, - 0xc3, 0x2e, 0x6c, 0x27, 0xfb, 0x60, 0x96, 0x87, 0x53, 0xb9, 0x4c, 0x0b, - 0xdb, 0xf4, 0xe4, 0xd6, - 0x0f, 0x19, 0x86, 0x59, 0x8d, 0xab, 0x7d, 0x67, 0x85, 0x12, 0x5e, 0xac, - 0x55, 0x3a, 0x56, 0x0e, - 0xe8, 0x04, 0xfa, 0xf0, 0x8c, 0x27, 0x14, 0x99, 0x73, 0x72, 0xe7, 0x30, - 0x91, 0xf7, 0x18, 0x2e, - 0xc2, 0xde, 0x53, 0x43, 0x5d, 0x58, 0x20, 0xab, 0x06, 0xd0, 0xda, 0xc1, - 0xd4, 0x24, 0x81, 0xf1, - 0xd9, 0x5a, 0x5f, 0xc6, 0xff, 0x15, 0xf1, 0xf9, 0x0d, 0xfa, 0xed, 0x3e, - 0x4d, 0x46, 0x1f, 0x56, - 0xe6, 0xed, 0x43, 0xcd, 0xa7, 0xb4, 0xdf, 0xd2, 0xa3, 0x09, 0x2f, 0x56, - 0xcb, 0x1d, 0x2b, 0x07, - 0xb6, 0xdc, 0x2e, 0x3b, 0x1b, 0xaa, 0x2a, 0x06, 0xde, 0xe9, 0x48, 0xd9, - 0x7d, 0xbe, 0x8d, 0xe6, - 0x11, 0x2b, 0x49, 0xeb, 0x54, 0x3e, 0x87, 0xa9, 0x4c, 0x36, 0xe2, 0x37, - 0xff, 0x4e, 0xfa, 0x12, - 0xc6, 0x98, 0xaf, 0x10, 0x80, 0xb8, 0xbd, 0x1b, 0x91, 0xb7, 0xc7, 0x6f, - 0xe8, 0xe2, 0xd6, 0x6d, - 0x55, 0x87, 0xae, 0xc1, 0xc7, 0xc6, 0xde, 0x48, 0xbf, 0xee, 0xec, 0xeb, - 0x85, 0xb5, 0x94, 0x5a, - 0x94, 0x8a, 0xbc, 0x2e, 0xb3, 0xd6, 0xe7, 0x97, 0x46, 0x85, 0x4f, 0xb7, - 0x40, 0x22, 0xba, 0xc2, - 0xb1, 0x49, 0x93, 0xc4, 0xef, 0x02, 0xae, 0xc2, 0xb6, 0x35, 0x2c, 0xea, - 0x50, 0xcb, 0x75, 0x13, - 0x4b, 0xb5, 0x61, 0x73, 0x1e, 0x53, 0x24, 0x86, 0x76, 0xca, 0x50, 0x70, - 0x2f, 0xc1, 0x38, 0x46, - 0xb9, 0xc5, 0xa8, 0x62, 0x96, 0x01, 0x57, 0x61, 0x5b, 0xfb, 0x16, 0x75, - 0x28, 0x84, 0xdb, 0xe8, - 0x4f, 0xf3, 0x9d, 0x20, 0xc3, 0xb3, 0xb9, 0x36, 0xe1, 0xad, 0x4d, 0xde, - 0x13, 0x07, 0x6f, 0xda, - 0xf6, 0x36, 0x35, 0x42, 0x55, 0xb2, 0xee, 0x57, 0xba, 0x56, 0x5b, 0xab, - 0x3b, 0x83, 0xb4, 0x32, - 0x9b, 0x93, 0x3a, 0x77, 0x3e, 0x7d, 0x9a, 0xf0, 0xc3, 0x97, 0x11, 0x1b, - 0x15, 0x18, 0xec, 0xcc, - 0xd2, 0x05, 0x25, 0xcc, 0xaf, 0x5e, 0x11, 0x2e, 0x1f, 0x8f, 0xae, 0x3c, - 0x24, 0xba, 0x1e, 0xc4, - 0x7f, 0x5d, 0x07, 0x72, 0x16, 0xb9, 0xea, 0x7a, 0xca, 0x4c, 0xd1, 0x1a, - 0xc0, 0x66, 0x0d, 0x85, - 0xde, 0xcf, 0xe2, 0x39, 0x0b, 0xbd, 0x75, 0x3d, 0x65, 0x26, 0x89, 0x0d, - 0x60, 0x33, 0xe7, 0xa3, - 0x75, 0xf2, 0x42, 0x1c, 0xe0, 0xca, 0xbc, 0x81, 0x8d, 0x50, 0x04, 0xd2, - 0xa6, 0x4a, 0x69, 0x30, - 0x14, 0x9d, 0x8a, 0xdc, 0x2f, 0xe6, 0xac, 0x35, 0x8e, 0x38, 0x69, 0x53, - 0xcc, 0x58, 0xc8, 0xa9, - 0x20, 0x75, 0xec, 0xdd, 0x27, 0x0c, 0x62, 0xc9, 0x32, 0xbe, 0xe8, 0x39, - 0x23, 0xff, 0xfd, 0x6a, - 0xdc, 0xec, 0x9c, 0xf1, 0x84, 0xcd, 0xda, 0x65, 0xcf, 0xf4, 0x66, 0x5a, - 0x7e, 0x50, 0x2d, 0xed, - 0xac, 0xa8, 0x1d, 0xda, 0x1f, 0xdf, 0x4d, 0x78, 0x80, 0xaa, 0xe9, 0xec, - 0xeb, 0x0c, 0x76, 0x66, - 0xab, 0x3d, 0xa0, 0x25, 0xeb, 0x77, 0xc9, 0xbc, 0xe8, 0x76, 0x8d, 0xdf, - 0xc6, 0x79, 0x8e, 0x93, - 0xf8, 0xdf, 0x8c, 0x7f, 0x7e, 0x21, 0x25, 0x1c, 0x6a, 0x2d, 0x93, 0xcd, - 0x61, 0x69, 0x87, 0x1b, - 0xfb, 0x0c, 0xcd, 0xd3, 0x57, 0x69, 0x3c, 0x68, 0x95, 0x96, 0xea, 0x50, - 0x70, 0xda, 0x28, 0x72, - 0xcd, 0xc7, 0xd5, 0x1a, 0xd0, 0xf3, 0x5d, 0xcc, 0x83, 0xc2, 0x84, 0x6d, - 0x81, 0x1e, 0xd7, 0xff, - 0xf0, 0x53, 0xb7, 0xd9, 0x07, 0x22, 0xdc, 0xbf, 0x87, 0xe3, 0xa9, 0x52, - 0x19, 0x26, 0x29, 0xe0, - 0xee, 0x61, 0x78, 0x6b, 0xde, 0xb7, 0x26, 0x71, 0x4e, 0xc7, 0x15, 0xc9, - 0xb3, 0x52, 0x85, 0xfc, - 0xce, 0x14, 0x94, 0xb6, 0xf9, 0xbb, 0x44, 0xb8, 0x7c, 0x79, 0xfd, 0xf0, - 0x90, 0xad, 0x78, 0x96, - 0xe5, 0x3e, 0x02, 0x61, 0x8e, 0xfc, 0xc6, 0xa6, 0x5c, 0xb2, 0x56, 0xcb, - 0xda, 0xae, 0x84, 0x6e, - 0x7d, 0x7e, 0x79, 0xba, 0x99, 0xc9, 0x45, 0x22, 0x60, 0x9e, 0x3e, 0x4d, - 0xde, 0x05, 0xc7, 0xcb, - 0xb8, 0x35, 0x97, 0x06, 0x30, 0x39, 0xe1, 0x4d, 0x0e, 0x92, 0x80, 0xbf, - 0x27, 0x54, 0xbe, 0xcf, - 0x04, 0x46, 0xfc, 0x53, 0xdd, 0xe0, 0x9d, 0xb0, 0x97, 0x67, 0x1d, 0xae, - 0x3c, 0xc6, 0x57, 0x9c, - 0xaa, 0xcd, 0x9f, 0x41, 0x4d, 0x4f, 0x7f, 0x90, 0xbd, 0x1f, 0x1b, 0x15, - 0xc9, 0xa9, 0xeb, 0xb4, - 0xf5, 0xe5, 0x74, 0xee, 0x7c, 0xfa, 0xf7, 0x23, 0x45, 0xed, 0x22, 0x36, - 0x2a, 0x30, 0x1b, 0x5b, - 0xc7, 0x68, 0x90, 0x74, 0x26, 0x80, 0x0b, 0x37, 0xc4, 0xde, 0x51, 0xa5, - 0xe7, 0x32, 0xb3, 0x4a, - 0xa0, 0x62, 0xda, 0x2f, 0xbb, 0x3c, 0x29, 0x6b, 0xfa, 0x03, 0xce, 0xdd, - 0xaf, 0x85, 0x8f, 0x01, - 0x42, 0xc9, 0x65, 0xb1, 0xc1, 0x68, 0x6b, 0x09, 0xce, 0x6d, 0xfc, 0x25, - 0x58, 0x5e, 0xf3, 0x9a, - 0xcb, 0xa2, 0x57, 0x81, 0x82, 0x63, 0x6f, 0x24, 0xbe, 0x77, 0x76, 0x94, - 0xa3, 0xbb, 0x4a, 0x2d, - 0x71, 0xb4, 0xbe, 0x4f, 0x3d, 0x2a, 0x21, 0x31, 0x1a, 0x37, 0x19, 0x7c, - 0x9a, 0x8c, 0x3e, 0xac, - 0xe3, 0x5b, 0x80, 0xfa, 0xdc, 0x6c, 0xf4, 0x4e, 0x61, 0x07, 0xa4, 0x32, - 0xf8, 0x0b, 0x19, 0xbc, - 0xfd, 0x69, 0x4f, 0x48, 0x05, 0xf9, 0x0e, 0x80, 0xa8, 0x23, 0x18, 0xa9, - 0x52, 0x7f, 0xb5, 0xa0, - 0x90, 0xcc, 0x40, 0x7d, 0x6e, 0x36, 0x7a, 0x27, 0xd1, 0xe2, 0x52, 0x19, - 0x7c, 0xe4, 0xed, 0x5e, - 0x02, 0x23, 0x7e, 0xc8, 0x8f, 0x70, 0xaf, 0x58, 0xaa, 0xd2, 0xef, 0x57, - 0x1e, 0x63, 0xca, 0x4e, - 0x26, 0x10, 0x6e, 0x46, 0x75, 0x9c, 0x50, 0x21, 0x0f, 0x0b, 0x1a, 0xc0, - 0x01, 0x5a, 0x60, 0xb8, - 0x96, 0xa9, 0xc2, 0xe6, 0x3c, 0xa6, 0x48, 0xcf, 0xec, 0x57, 0xa0, 0xe0, - 0x5e, 0x41, 0x70, 0x8c, - 0xcf, 0xe4, 0xab, 0xd2, 0x5f, 0x83, 0xf2, 0x94, 0x29, 0x10, 0x6b, 0x3a, - 0x9f, 0x7d, 0x1d, 0xb1, - 0x89, 0x6b, 0x32, 0x30, 0x43, 0x0b, 0x04, 0x2d, 0x70, 0x1a, 0x8a, 0xb1, - 0xfb, 0xe5, 0xb9, 0xb7, - 0x49, 0x96, 0x1f, 0xbb, 0x91, 0x23, 0x8b, 0xde, 0xdc, 0x18, 0xbf, 0x27, - 0x31, 0xa2, 0xf2, 0x08, - 0x2f, 0x6c, 0x6a, 0x84, 0xaa, 0xa7, 0x1f, 0xae, 0xb7, 0xac, 0xb6, 0x95, - 0x76, 0xc5, 0xab, 0x64, - 0x52, 0x12, 0x13, 0x3e, 0x33, 0x6e, 0x5a, 0x8c, 0xd7, 0x32, 0x88, 0xd8, - 0xa8, 0xc0, 0x6c, 0xaf, - 0xb4, 0xff, 0x50, 0xf3, 0x94, 0xda, 0x85, 0x5e, 0x74, 0x3b, 0xa7, 0x8e, - 0x63, 0xdd, 0x47, 0xa8, - 0x08, 0x8c, 0x3b, 0xa6, 0x79, 0x03, 0xf9, 0xa3, 0xed, 0xce, 0x3a, 0x9f, - 0x78, 0x4f, 0xae, 0xfb, - 0x3f, 0xb7, 0x1c, 0x0b, 0x58, 0xa1, 0x2e, 0x2b, 0xae, 0xf3, 0xc2, 0x68, - 0x86, 0x5b, 0x34, 0x51, - 0xd6, 0x43, 0xd9, 0x9f, 0x72, 0xbe, 0x8c, 0x9e, 0x88, 0xe8, 0xb3, 0x92, - 0x18, 0x7c, 0x49, 0x58, - 0x23, 0xa6, 0xad, 0x71, 0x0e, 0x44, 0x7b, 0xbd, 0xcd, 0x05, 0x91, 0xa4, - 0x32, 0x4c, 0x52, 0x03, - 0x4e, 0x03, 0xa2, 0x44, 0x65, 0x8b, 0x0f, 0x1a, 0xb4, 0xc4, 0xdb, 0x14, - 0x1c, 0xd7, 0x0a, 0xfd, - 0x60, 0x9f, 0xf7, 0xa4, 0x69, 0x14, 0xa6, 0x98, 0x56, 0x01, 0xfb, 0x4b, - 0x65, 0xc2, 0xc4, 0xbe, - 0x0b, 0x5f, 0x7a, 0x0a, 0x50, 0x4b, 0xe0, 0xd7, 0x12, 0x75, 0x43, 0x02, - 0x69, 0xfc, 0x01, 0x92, - 0xc4, 0xbb, 0xd1, 0xd8, 0x0f, 0xc8, 0x12, 0x43, 0x3b, 0x65, 0x28, 0x38, - 0xf6, 0x81, 0x1c, 0x23, - 0x35, 0x18, 0x59, 0x65, 0xae, 0xd2, 0x78, 0xd0, 0xe9, 0xef, 0x17, 0xa0, - 0xe0, 0x77, 0x50, 0xe4, - 0x0e, 0xe9, 0xb9, 0x3d, 0x2b, 0x93, 0xcb, 0x4b, 0xd0, 0x7b, 0xc8, 0x66, - 0x5a, 0xea, 0x33, 0x29, - 0x64, 0xd9, 0x0b, 0xf7, 0xb4, 0xf4, 0x3b, 0x28, 0xc1, 0x66, 0xe6, 0xe5, - 0x59, 0x04, 0x93, 0x22, - 0x3b, 0xf1, 0xe0, 0x58, 0x85, 0x41, 0xb3, 0x9b, 0x39, 0x94, 0xdf, 0xc6, - 0xba, 0x9d, 0x63, 0xcd, - 0x30, 0xae, 0x9a, 0x52, 0xd5, 0x0a, 0x53, 0x4c, 0x2b, 0xe1, 0x9c, 0xc4, - 0xd3, 0x61, 0x62, 0x5f, - 0xc5, 0x4b, 0xee, 0xbc, 0xa9, 0xf0, 0xa4, 0x6f, 0x6e, 0x0c, 0xbe, 0xf2, - 0xf9, 0x51, 0x79, 0x04, - 0x6b, 0xc0, 0x8d, 0xae, 0x39, 0x5f, 0x46, 0x4f, 0x44, 0x74, 0xb8, 0x49, - 0x0c, 0x3e, 0xc5, 0x2c, - 0x91, 0x3c, 0x7f, 0x19, 0xc8, 0x0e, 0xcc, 0x0b, 0x84, 0x8b, 0xc4, 0xd3, - 0x73, 0x34, 0x88, 0x79, - 0x4c, 0x20, 0xdc, 0x8c, 0xea, 0xfb, 0xa0, 0x42, 0x1e, 0x16, 0x34, 0x43, - 0x02, 0xb4, 0xc0, 0xb3, - 0xb2, 0x9a, 0xd2, 0x68, 0xc6, 0x4a, 0xb7, 0xb6, 0x49, 0x8e, 0x55, 0x77, - 0x41, 0x78, 0xda, 0x7a, - 0xfe, 0xba, 0x0e, 0xe4, 0x2c, 0xb1, 0x17, 0xf4, 0x57, 0x98, 0x61, 0x34, - 0x43, 0xcc, 0x1a, 0xc9, - 0xe7, 0x1d, 0x7c, 0xa9, 0x01, 0x8c, 0x69, 0xfe, 0xf6, 0x60, 0xb9, 0x9c, - 0xc4, 0xcd, 0x4e, 0x20, - 0x27, 0xe0, 0x51, 0x22, 0xd3, 0xa4, 0xe6, 0x0d, 0x5a, 0x62, 0x8c, 0x0a, - 0x0e, 0x8a, 0x05, 0x9f, - 0x8c, 0xdd, 0xf1, 0x07, 0x38, 0xd3, 0x2f, 0xb1, 0xb2, 0x14, 0x01, 0xd5, - 0xc8, 0xf3, 0x8b, 0x0c, - 0x3e, 0x47, 0x23, 0x6f, 0xfe, 0x99, 0x98, 0x07, 0xfb, 0x9a, 0x54, 0xa2, - 0x89, 0x8b, 0x51, 0x76, - 0x29, 0x09, 0xe8, 0x1f, 0xf8, 0x37, 0x2d, 0x46, 0x8a, 0x19, 0x44, 0x6c, - 0x54, 0x60, 0x36, 0xb6, - 0x72, 0x67, 0xff, 0xe3, 0x14, 0x62, 0x38, 0x45, 0xe5, 0x8c, 0x60, 0xe1, - 0x8b, 0x3f, 0x91, 0xc5, - 0x2c, 0xbf, 0x2b, 0x28, 0x83, 0xef, 0x06, 0xda, 0x48, 0x17, 0xcf, 0x08, - 0x67, 0x76, 0x04, 0x0d, - 0xa4, 0x24, 0x26, 0x7c, 0x66, 0xdc, 0xb4, 0xdb, 0x6d, 0x64, 0xd3, 0x73, - 0x93, 0x43, 0xd8, 0x9d, - 0x8e, 0xfe, 0x8f, 0xcf, 0xb7, 0xa3, 0x80, 0xe9, 0x18, 0xc6, 0xee, 0x82, - 0xd6, 0x90, 0x41, 0x42, - 0x51, 0xc1, 0x52, 0x92, 0x1a, 0x26, 0x43, 0xf8, 0x28, 0x89, 0xf1, 0x45, - 0xb9, 0x73, 0xc3, 0xc6, - 0xc8, 0x71, 0x16, 0x2d, 0xab, 0x2b, 0x76, 0x50, 0x41, 0xcc, 0x0f, 0x09, - 0xb2, 0x08, 0xe5, 0x44, - 0x16, 0xbe, 0xf4, 0x14, 0xa0, 0x96, 0x03, 0x6d, 0x24, 0xea, 0x86, 0x04, - 0xd2, 0x3b, 0x02, 0xe7, - }, - { /* 15 */ - 0xfb, 0xd5, 0x0c, 0x7a, 0xc0, 0x80, 0x96, 0x19, 0x11, 0x87, 0x93, 0x1b, - 0xc9, 0xae, 0xb5, 0xfc, - 0x08, 0xe0, 0x8c, 0xb2, 0x17, 0x1a, 0xce, 0x7b, 0x32, 0xfc, 0xab, 0xf8, - 0xfe, 0xf2, 0x0a, 0xee, - 0xcb, 0xd0, 0xa2, 0x50, 0xb2, 0xdc, 0x77, 0xc0, 0xbd, 0xca, 0xef, 0x4e, - 0x88, 0xc7, 0x89, 0xdd, - 0x41, 0x10, 0x1a, 0x5e, 0x63, 0x42, 0xd6, 0x69, 0xc4, 0x12, 0x3c, 0xd3, - 0x93, 0x13, 0xc0, 0x11, - 0x38, 0xe5, 0x22, 0x98, 0x65, 0x46, 0x2f, 0xa2, 0x9e, 0xb1, 0xd7, 0xad, - 0xbf, 0x9b, 0x36, 0xcf, - 0xb3, 0x39, 0x6a, 0x11, 0x6f, 0x4a, 0xe7, 0x3c, 0x70, 0x97, 0x29, 0x2f, - 0xcb, 0xc0, 0xef, 0x6e, - 0x1f, 0xb7, 0xc2, 0x06, 0x7d, 0x56, 0x4d, 0x08, 0x35, 0x78, 0xfd, 0x96, - 0x0f, 0xfe, 0x68, 0x31, - 0x88, 0xf8, 0x9b, 0xc3, 0xa4, 0x79, 0x73, 0xc7, 0x94, 0xe7, 0x89, 0xa3, - 0xc5, 0x09, 0xaa, 0x16, - 0x32, 0x3d, 0x8d, 0xe7, 0x07, 0xbb, 0x33, 0xb7, 0x41, 0x72, 0x26, 0x6b, - 0x9f, 0xb4, 0xdf, 0xfb, - 0x7c, 0x99, 0x8e, 0x18, 0x37, 0x9b, 0xf7, 0x20, 0xd4, 0x23, 0x72, 0x1d, - 0x3c, 0x7e, 0x63, 0xc4, - 0x5c, 0x9f, 0xfb, 0x95, 0x6b, 0xf3, 0x49, 0x0f, 0x1c, 0x55, 0x9b, 0x7b, - 0x42, 0x30, 0x4b, 0xfa, - 0x02, 0x38, 0x23, 0xcd, 0x75, 0xe7, 0xd2, 0x6e, 0xed, 0x3f, 0x5a, 0x3e, - 0xde, 0xdd, 0xe3, 0xda, - 0xec, 0x82, 0x42, 0xce, 0xaa, 0xcc, 0x15, 0x6a, 0x16, 0x03, 0xc5, 0x75, - 0x38, 0xa2, 0xd7, 0x23, - 0x12, 0x3b, 0xf8, 0x6a, 0x5b, 0xd3, 0x8d, 0x98, 0x89, 0x04, 0xcf, 0x0d, - 0xe1, 0xfa, 0xf7, 0xc5, - 0x7b, 0xcd, 0x1b, 0x0b, 0x73, 0xe3, 0x2b, 0xa5, 0xb7, 0x9c, 0xb1, 0x40, - 0xf2, 0x55, 0x15, 0x04, - 0x5f, 0xbb, 0x28, 0xdf, 0xc5, 0x86, 0xf2, 0x56, 0x66, 0x94, 0xec, 0x5a, - 0xf3, 0x62, 0x38, 0x4d, - 0xc1, 0x08, 0x0d, 0x2f, 0xd0, 0x21, 0x6b, 0xd5, 0x62, 0x09, 0x1e, 0x88, - 0xa8, 0xe8, 0x60, 0xe9, - 0x04, 0x70, 0x46, 0x59, 0xea, 0x0d, 0x67, 0xdc, 0x19, 0x7e, 0xb4, 0x7c, - 0x7f, 0x79, 0x05, 0x77, - 0x76, 0x41, 0x21, 0x67, 0x55, 0x66, 0xeb, 0x35, 0x0b, 0xe0, 0x83, 0xdb, - 0x1c, 0x51, 0x8a, 0xf0, - 0x6c, 0x9a, 0x55, 0xbf, 0x19, 0xaf, 0xa8, 0xd6, 0xb0, 0x18, 0xe7, 0x2e, - 0x03, 0x59, 0x77, 0xdb, - 0x26, 0x4e, 0x10, 0x19, 0xc3, 0x82, 0x0b, 0x9d, 0x3c, 0x37, 0x07, 0x24, - 0xdf, 0xea, 0xce, 0x93, - 0x0f, 0xb4, 0x19, 0xa1, 0x53, 0x62, 0x12, 0xfe, 0x51, 0x43, 0x68, 0xa5, - 0x30, 0xd9, 0x7c, 0x2e, - 0x0c, 0x90, 0xca, 0xeb, 0xfd, 0x17, 0xa9, 0xa7, 0x2b, 0x82, 0x1f, 0x84, - 0x81, 0x8b, 0x0f, 0x99, - 0xe0, 0x12, 0x88, 0x25, 0x57, 0xdb, 0xbc, 0xcd, 0x3d, 0x81, 0xda, 0xf1, - 0xb9, 0x29, 0xd8, 0xba, - 0xe6, 0x5a, 0xed, 0xb1, 0xc8, 0x31, 0x09, 0x7f, 0xc9, 0xc0, 0x34, 0xb3, - 0x18, 0x8d, 0x3e, 0x17, - 0xd6, 0x5f, 0x43, 0x9b, 0xba, 0x6d, 0xe8, 0xa6, 0x65, 0x8d, 0x48, 0xe6, - 0x59, 0xe4, 0x02, 0x36, - 0x18, 0xe3, 0x57, 0x15, 0x39, 0x2e, 0x91, 0x8d, 0x56, 0xc7, 0x3e, 0xcb, - 0xc1, 0xd5, 0x1e, 0xf1, - 0x8e, 0xb0, 0xfe, 0x57, 0x3b, 0x93, 0xc6, 0x75, 0x60, 0xa6, 0x67, 0xe1, - 0x64, 0xad, 0x4c, 0xbb, - 0x54, 0x7f, 0x77, 0x27, 0x7c, 0xe9, 0x87, 0x74, 0x2e, 0xa9, 0x30, 0x83, - 0xbc, 0xc2, 0x41, 0x14, - 0xe4, 0x62, 0xce, 0x7c, 0xbd, 0xd6, 0xdb, 0x11, 0x24, 0xff, 0x6e, 0x8d, - 0xc6, 0x50, 0xdd, 0xcd, - 0xac, 0x8e, 0xa8, 0x17, 0x12, 0x1c, 0xaa, 0x34, 0x45, 0xef, 0xd4, 0xb9, - 0xc4, 0x3e, 0x87, 0x5f, - 0x69, 0xf6, 0xe3, 0x61, 0x28, 0x30, 0xa6, 0x3d, 0x3e, 0x98, 0x7e, 0x4d, - 0x13, 0xaf, 0xe2, 0xc1, - 0xee, 0xba, 0x61, 0x03, 0xdf, 0x2b, 0xc7, 0x04, 0xfb, 0x3c, 0x9f, 0x4b, - 0xe6, 0x7f, 0x34, 0xf9, - 0xd9, 0xeb, 0x5a, 0x3a, 0xe9, 0x0f, 0xfa, 0x58, 0x34, 0xce, 0x20, 0x43, - 0x69, 0x3d, 0x7e, 0x18, - 0xf7, 0x45, 0xc6, 0x91, 0x3d, 0x97, 0x3f, 0xbe, 0x3a, 0x05, 0x8c, 0x9f, - 0x48, 0x25, 0xba, 0x65, - 0xb9, 0xe1, 0xc5, 0x6e, 0x0d, 0xb7, 0xfb, 0x29, 0xaf, 0x54, 0xd8, 0xe9, - 0xeb, 0xef, 0x06, 0x5a, - 0x85, 0x74, 0xa1, 0xaf, 0x82, 0xfc, 0xb3, 0x57, 0x28, 0x9b, 0xbb, 0x38, - 0x2b, 0x0d, 0x35, 0xe2, - 0x1e, 0xab, 0x32, 0x81, 0xa6, 0xc4, 0x24, 0x3f, 0xa2, 0x86, 0xd0, 0x89, - 0x60, 0x71, 0xf8, 0x5c, - 0x66, 0x42, 0xfa, 0xc0, 0x7b, 0x52, 0xb4, 0xc3, 0x6f, 0xdb, 0x16, 0xe8, - 0x23, 0x76, 0x9e, 0xef, - 0x30, 0x05, 0xae, 0x2a, 0x72, 0x5c, 0xe1, 0xd9, 0xac, 0x4d, 0x7c, 0x55, - 0x41, 0x69, 0x3c, 0x21, - 0xd5, 0x7b, 0x90, 0xd1, 0x14, 0x18, 0x53, 0xff, 0x1f, 0x4c, 0x3f, 0xc7, - 0xe8, 0xb6, 0x71, 0x81, - 0xa2, 0x26, 0x41, 0x31, 0x9a, 0xec, 0xd1, 0xfd, 0x83, 0x52, 0x91, 0x03, - 0x9b, 0x68, 0x6b, 0x1c, - 0xfc, 0x81, 0x99, 0x69, 0x84, 0xf8, 0x4a, 0x9c, 0x72, 0x38, 0x50, 0x46, - 0x07, 0x85, 0xc3, 0x3c, - 0x60, 0x0a, 0x9f, 0x54, 0xe4, 0xb8, 0x01, 0x71, 0x9b, 0x9a, 0xf8, 0xaa, - 0x82, 0xd2, 0x78, 0x42, - 0xff, 0xa5, 0x4a, 0x23, 0x2a, 0x8d, 0xf1, 0xc5, 0x08, 0xf9, 0x27, 0x67, - 0xb6, 0xd7, 0xb0, 0x8b, - 0x6e, 0xa2, 0x76, 0x72, 0x6c, 0x48, 0x7a, 0xb8, 0x5d, 0x27, 0xbd, 0x10, - 0xdd, 0x84, 0x94, 0x01, - 0xea, 0xca, 0x27, 0x5a, 0x35, 0x26, 0xa0, 0xd8, 0xe2, 0x42, 0x2b, 0x37, - 0x99, 0x06, 0x31, 0x8e, - 0x83, 0x3c, 0xc4, 0x3b, 0x1d, 0x16, 0x06, 0xe5, 0xdc, 0xda, 0x55, 0x7a, - 0x8a, 0xa9, 0xd3, 0x4f, - 0x15, 0x6f, 0x6d, 0x79, 0x1f, 0xab, 0x51, 0x1d, 0xea, 0xbb, 0x0c, 0x50, - 0x2f, 0xd1, 0x81, 0x05, - 0xc0, 0x14, 0xfd, 0xa8, 0x0b, 0xb3, 0x02, 0xe2, 0xf5, 0xf7, 0x33, 0x97, - 0xc7, 0x67, 0xf0, 0x84, - 0xdc, 0x87, 0xec, 0xe4, 0xd8, 0x90, 0xf4, 0xb3, 0xba, 0x4e, 0xb9, 0x20, - 0x79, 0xcb, 0xeb, 0x02, - 0xb4, 0x6d, 0xff, 0x02, 0x2b, 0x32, 0x3b, 0xb9, 0x13, 0x28, 0xea, 0x72, - 0x05, 0xeb, 0x99, 0xae, - 0xeb, 0xd6, 0xd7, 0xdd, 0xee, 0xb4, 0xc9, 0xef, 0x75, 0xbc, 0x06, 0x28, - 0xf6, 0x89, 0xa1, 0xe3, - 0xc8, 0xf4, 0x71, 0x1a, 0x1c, 0xa9, 0xcc, 0x99, 0xc7, 0x0b, 0x98, 0x6f, - 0x39, 0x95, 0xfa, 0x6a, - 0x84, 0x68, 0x51, 0x28, 0x59, 0x6e, 0xda, 0x60, 0xbf, 0x65, 0x96, 0x27, - 0x44, 0x82, 0xa5, 0x8f, - 0xe5, 0x7e, 0x3e, 0xfb, 0x66, 0x44, 0xb2, 0x26, 0xb3, 0x01, 0x43, 0x92, - 0xa9, 0xdf, 0x4d, 0xa0, - 0xa7, 0x4a, 0xf7, 0xef, 0xab, 0x73, 0xdf, 0x16, 0x0d, 0xd2, 0x08, 0x60, - 0x8b, 0x9e, 0xfe, 0x06, - 0x44, 0x7c, 0xac, 0x80, 0x52, 0xdd, 0xd8, 0x82, 0x4a, 0x92, 0xa5, 0xb0, - 0x83, 0xe5, 0x55, 0x0b, - 0xba, 0xc5, 0x16, 0x24, 0xa3, 0xc2, 0x40, 0x70, 0xd5, 0x95, 0xaf, 0xc8, - 0x5a, 0xbd, 0x75, 0xed, - 0x62, 0x32, 0xbc, 0x99, 0x91, 0x5f, 0xd3, 0x1f, 0x76, 0xa5, 0xa2, 0x94, - 0x5c, 0x0f, 0x9b, 0x98, - 0xf2, 0x29, 0x70, 0x4f, 0x0c, 0x08, 0x31, 0x55, 0xb4, 0x85, 0x15, 0xfc, - 0x58, 0xd3, 0x2f, 0x7f, - 0x53, 0x2b, 0xe2, 0x34, 0x38, 0x91, 0x5b, 0xf1, 0x4d, 0x16, 0xf3, 0xde, - 0x72, 0xe9, 0x37, 0xd4, - 0x9a, 0xc3, 0x63, 0xa9, 0xff, 0xaa, 0xfe, 0x5f, 0x1d, 0xe3, 0x46, 0xae, - 0x24, 0xf3, 0x5d, 0xd3, - 0x10, 0x03, 0xdb, 0xa7, 0x2e, 0x34, 0x5f, 0xf6, 0x64, 0x3b, 0x95, 0x33, - 0x3f, 0x27, 0x14, 0x1f, - 0x1d, 0x8f, 0xe1, 0xcb, 0x08, 0xb1, 0x9f, 0x66, 0xd8, 0x47, 0xa7, 0xa8, - 0xd1, 0x23, 0x8b, 0xeb, - 0x0a, 0xd8, 0xaf, 0x7f, 0x62, 0xfd, 0x1c, 0x15, 0xdf, 0xc3, 0xf1, 0xc6, - 0x20, 0x2f, 0xe9, 0x34, - 0xd3, 0x33, 0xf5, 0x45, 0x8b, 0xf2, 0xe6, 0x4d, 0xeb, 0x0d, 0xd1, 0x85, - 0x49, 0x12, 0x97, 0x2c, - 0xfd, 0x9d, 0x69, 0xee, 0x5f, 0x6a, 0x23, 0xab, 0xe5, 0xc6, 0x7d, 0x59, - 0x68, 0x0a, 0x53, 0x51, - 0x73, 0x2d, 0x97, 0xb9, 0x64, 0xf9, 0xe5, 0xde, 0x85, 0x60, 0x1a, 0xb8, - 0x0c, 0xa7, 0x1f, 0xea, - 0xf1, 0x0d, 0xa3, 0x05, 0xa2, 0x7d, 0x8a, 0x0c, 0xce, 0x44, 0x62, 0xdd, - 0xe9, 0x81, 0x5c, 0xc8, - 0x4a, 0xd4, 0x45, 0xa6, 0xda, 0x2d, 0xa3, 0x4b, 0x8c, 0x2f, 0xe0, 0x0a, - 0xdc, 0xb3, 0xb9, 0x48, - 0xa1, 0x02, 0x92, 0x7b, 0x34, 0x99, 0x6a, 0xa4, 0xf9, 0x93, 0xe6, 0x22, - 0x2a, 0x3a, 0x18, 0xab, - 0xaa, 0xc6, 0xcd, 0x83, 0x8d, 0xf6, 0x1f, 0x86, 0xb1, 0xae, 0x3a, 0xfb, - 0x65, 0x9a, 0x61, 0xf2, - 0x74, 0x79, 0x02, 0xaa, 0x20, 0x81, 0x39, 0x5b, 0xe6, 0xdf, 0xd9, 0xe5, - 0xc2, 0x8c, 0x69, 0x2a, - 0x14, 0x73, 0x9d, 0xfe, 0xc4, 0x39, 0x38, 0x2a, 0x7d, 0x45, 0x21, 0x4f, - 0x40, 0x5e, 0x11, 0x68, - 0x39, 0xf9, 0xd2, 0x1f, 0xbe, 0xd4, 0x46, 0x95, 0x09, 0x4f, 0xfa, 0xb2, - 0xd0, 0x14, 0xa6, 0xa2, - 0x95, 0x77, 0x7a, 0x08, 0xac, 0xc8, 0xec, 0xa1, 0x4c, 0xa0, 0x2e, 0x0b, - 0x14, 0x2a, 0x21, 0xfd, - 0x5b, 0xcb, 0x6e, 0x86, 0x2f, 0x8b, 0x95, 0x8a, 0x7f, 0xea, 0x58, 0x26, - 0x8c, 0x1b, 0x3d, 0x3a, - 0x56, 0x47, 0x54, 0xea, 0x09, 0x0e, 0x55, 0x1a, 0xc3, 0x96, 0x6a, 0xbd, - 0x62, 0x1f, 0xa2, 0xce, - 0x8a, 0xc0, 0xb8, 0x0e, 0xd1, 0x9e, 0xa1, 0xa9, 0x79, 0xd8, 0xd3, 0x9d, - 0x1b, 0xd4, 0x49, 0xcc, - 0xdf, 0xa3, 0x3f, 0xae, 0x76, 0xe5, 0x4f, 0xea, 0xc0, 0x8f, 0xce, 0x01, - 0xc8, 0x99, 0x98, 0xb5, - 0xcd, 0x98, 0xc7, 0xc4, 0x2d, 0x36, 0xc2, 0x72, 0x49, 0x8b, 0x01, 0x0c, - 0x29, 0x63, 0x6f, 0x70, - 0x51, 0x13, 0xc1, 0xf9, 0x4d, 0x76, 0x89, 0x9f, 0xa0, 0x29, 0xa9, 0xe0, - 0xac, 0x34, 0xd4, 0x0e, - 0x34, 0x75, 0xe8, 0x73, 0x98, 0x51, 0x86, 0x05, 0xb5, 0x33, 0xc8, 0x29, - 0x3e, 0x10, 0x39, 0x56, - 0xf6, 0x59, 0x36, 0x16, 0xe6, 0x05, 0x56, 0x89, 0xad, 0xfb, 0xa1, 0x80, - 0x27, 0xaa, 0x2a, 0x08, - 0x8d, 0x94, 0x2d, 0x1d, 0x95, 0xe6, 0x7d, 0x2c, 0x1a, 0x67, 0x10, 0xc0, - 0xd5, 0xff, 0x3f, 0x0c, - 0x6a, 0xd2, 0x30, 0x2b, 0x86, 0x45, 0x1d, 0x64, 0x44, 0x59, 0x09, 0x6c, - 0xa2, 0xfd, 0x91, 0x76, - 0xf3, 0x35, 0x80, 0xc8, 0xd7, 0x9a, 0x58, 0x62, 0x23, 0x7b, 0x38, 0xe3, - 0x37, 0x5c, 0xbf, 0x12, - 0xf5, 0x7d, 0xe5, 0x5c, 0x48, 0x70, 0xed, 0xd0, 0xd7, 0x3a, 0xd6, 0xa1, - 0x96, 0xf8, 0x59, 0xbf, - 0x11, 0x1f, 0x2b, 0x20, 0xf5, 0xa6, 0x36, 0xc1, 0xf3, 0xc5, 0xb8, 0x2c, - 0x50, 0xa8, 0x84, 0x72, - 0x9d, 0x97, 0xf6, 0xba, 0xbb, 0xd2, 0x22, 0xda, 0x7e, 0x5c, 0x85, 0xf3, - 0xea, 0xd8, 0x2b, 0x13, - 0x75, 0x65, 0xf2, 0x2d, 0xfb, 0x13, 0x50, 0x6c, 0x71, 0x21, 0xf4, 0xfa, - 0xad, 0x03, 0xf9, 0x47, - 0x19, 0xff, 0xa7, 0x92, 0xe2, 0xbc, 0xf8, 0xba, 0xc1, 0x39, 0x13, 0xd4, - 0xae, 0x5a, 0x8e, 0x9c, - 0x03, 0x24, 0xd3, 0x4a, 0xae, 0x75, 0xbb, 0x59, 0x7a, 0xc1, 0x77, 0x21, - 0xb1, 0x52, 0x73, 0xb7, - 0x70, 0x09, 0x44, 0xf3, 0xca, 0x8c, 0x5e, 0x87, 0xff, 0xa1, 0x6d, 0x99, - 0xbd, 0xf5, 0x6c, 0x5d, - 0x72, 0x31, 0x67, 0x3e, 0xbf, 0x6b, 0x8c, 0xe9, 0x12, 0x9e, 0x37, 0xa7, - 0x63, 0x28, 0x8f, 0x87, - 0x3a, 0xdd, 0x01, 0x55, 0x10, 0xa1, 0xfd, 0xcc, 0x73, 0x8e, 0x8d, 0x93, - 0x61, 0x46, 0xd5, 0x15, - 0x8b, 0xdc, 0x48, 0x89, 0x0a, 0x0c, 0xc8, 0x9e, 0xee, 0x26, 0xfe, 0x82, - 0x74, 0x5b, 0xd9, 0xa1, - 0x33, 0x21, 0x7d, 0x60, 0xdc, 0x29, 0x5a, 0x80, 0xd6, 0x8c, 0x0b, 0x74, - 0xf0, 0x3b, 0x4f, 0x96, - 0xc6, 0x5c, 0x98, 0x3c, 0x94, 0x59, 0xb7, 0x50, 0x01, 0xb6, 0xdd, 0xd5, - 0x66, 0xc3, 0x16, 0x29, - 0x2f, 0xb2, 0x6c, 0x2c, 0x0f, 0x0a, 0xac, 0xd1, 0x99, 0x35, 0x81, 0xc3, - 0x4e, 0x97, 0x54, 0x10, - 0x89, 0xe4, 0x6b, 0x44, 0x7f, 0xeb, 0x1a, 0xf0, 0x03, 0x19, 0xa4, 0xbc, - 0xaa, 0x86, 0x3a, 0x7b, - 0xbe, 0xb5, 0x50, 0x7d, 0x49, 0xcf, 0x27, 0xac, 0xcc, 0xeb, 0x1b, 0xb4, - 0x25, 0xc4, 0x70, 0x9a, - 0xce, 0xbc, 0x14, 0x8e, 0x83, 0x43, 0x79, 0x2b, 0x33, 0x4a, 0x76, 0x2d, - 0x98, 0x31, 0x1c, 0xc7, - 0xc4, 0x64, 0xbb, 0xf1, 0xe1, 0xbe, 0x65, 0x3e, 0xec, 0x89, 0x87, 0xeb, - 0xb8, 0x1e, 0xf5, 0xf3, - 0xfa, 0xc9, 0xfc, 0xfd, 0x1b, 0x12, 0xff, 0x2e, 0x86, 0x79, 0xbe, 0x04, - 0xa6, 0x21, 0x25, 0x91, - 0x3b, 0xc1, 0xf1, 0xd2, 0xcb, 0x33, 0x94, 0xfb, 0xe4, 0x70, 0xa0, 0x8c, - 0x0e, 0xc9, 0x45, 0x78, - 0xdd, 0x9b, 0x1c, 0x63, 0x03, 0x02, 0x9d, 0x84, 0x2d, 0xb0, 0x94, 0x3f, - 0x16, 0x44, 0x7b, 0x6f, - 0x77, 0x5d, 0xd1, 0xe0, 0x8e, 0xf4, 0x82, 0x02, 0x9c, 0x1e, 0xae, 0xc4, - 0x73, 0xde, 0x1a, 0x9d, - 0xc5, 0x78, 0x4b, 0x76, 0x3a, 0x2c, 0x0c, 0x09, 0x7b, 0x77, 0xaa, 0xf4, - 0xd7, 0x91, 0x65, 0x9e, - 0x16, 0x4b, 0xbe, 0x33, 0xb1, 0xde, 0xea, 0x44, 0x90, 0x7a, 0x7b, 0x71, - 0x9e, 0x83, 0xf2, 0xb2, - 0xa4, 0x6e, 0x24, 0xa5, 0x05, 0x06, 0x64, 0x4f, 0x77, 0x13, 0x7f, 0x41, - 0x3a, 0xcc, 0x8d, 0xb1, - 0xad, 0x92, 0x58, 0x90, 0xc9, 0x8e, 0xc3, 0x03, 0xd2, 0x11, 0xf9, 0xa6, - 0xab, 0xb1, 0x17, 0x32, - 0xd8, 0xf7, 0xaa, 0xbd, 0x32, 0x9d, 0x93, 0x6f, 0xa3, 0x30, 0x0d, 0x5c, - 0x06, 0xb2, 0xee, 0x75, - 0xb7, 0x49, 0x2c, 0x48, 0x85, 0x47, 0x80, 0xe0, 0x69, 0xe9, 0x9d, 0x53, - 0xb4, 0xb9, 0xea, 0x19, - 0x92, 0x23, 0xef, 0x1b, 0xe8, 0xb0, 0x30, 0x24, 0x2f, 0x1f, 0xed, 0x56, - 0xda, 0x01, 0x57, 0x3d, - 0x49, 0xf0, 0x96, 0xec, 0x74, 0x58, 0x18, 0x12, 0xf6, 0xee, 0x97, 0x2b, - 0x6d, 0xe1, 0xca, 0xff, - 0x64, 0x7a, 0xd9, 0x0d, 0x0e, 0xb5, 0x66, 0xad, 0x82, 0xe4, 0x4c, 0xd6, - 0xfd, 0xab, 0x7d, 0x35, - 0x91, 0x07, 0x3c, 0x51, 0x46, 0xc5, 0x8b, 0x7d, 0x55, 0xde, 0x9a, 0x77, - 0x6b, 0x53, 0x24, 0x8a, - 0x9c, 0x8b, 0x06, 0x3d, 0x60, 0x40, 0x4b, 0xed, 0xe9, 0xa2, 0xa8, 0xec, - 0x85, 0x57, 0xbb, 0x7e, - 0x01, 0x1c, 0xf0, 0x87, 0xdb, 0x92, 0x69, 0x37, 0x97, 0xfe, 0x2d, 0x1f, - 0x6f, 0x8f, 0x90, 0x6d, - 0xe8, 0xf2, 0x04, 0x97, 0x40, 0xc1, 0x72, 0xb6, 0x0f, 0x7d, 0x71, 0x09, - 0x47, 0xdb, 0xd2, 0x54, - 0xa0, 0x1e, 0x62, 0xfc, 0xef, 0x0b, 0x03, 0x93, 0x6e, 0x6d, 0xcb, 0x3d, - 0x45, 0xb5, 0x88, 0xc6, - 0xbb, 0xd9, 0xe6, 0xa3, 0x78, 0x50, 0x29, 0x47, 0x42, 0x6b, 0x82, 0xd7, - 0x35, 0x32, 0xe5, 0x80, - 0xb5, 0x71, 0x0f, 0x85, 0xf0, 0xa0, 0x52, 0x8e, 0x84, 0xd6, 0xc7, 0x6d, - 0x6a, 0x64, 0x09, 0xc3, - 0x29, 0xfa, 0x09, 0xb8, 0x90, 0xe0, 0x19, 0x63, 0x6d, 0x74, 0x6f, 0x81, - 0xef, 0x33, 0xb2, 0xbd, - 0xe3, 0x36, 0x5b, 0x6f, 0xf9, 0xae, 0x07, 0x94, 0x47, 0x40, 0xad, 0xd0, - 0x08, 0x7b, 0xab, 0x0d, - 0x5a, 0xd7, 0x9e, 0x01, 0xf4, 0x19, 0xfc, 0xbd, 0xe8, 0x14, 0x75, 0x39, - 0xe3, 0x94, 0xad, 0x57, - 0x17, 0x57, 0x4e, 0xb4, 0x6a, 0x4c, 0x83, 0x73, 0x07, 0x84, 0x56, 0x6e, - 0xf1, 0x0c, 0x62, 0xdf, - 0x63, 0x2e, 0x4c, 0x1e, 0x4a, 0xcd, 0xba, 0x28, 0xe1, 0x5b, 0x8f, 0x8b, - 0x33, 0x80, 0x0b, 0xf5, - 0x25, 0x6a, 0xc3, 0x53, 0x6d, 0xf7, 0xb0, 0xc4, 0x46, 0xf6, 0x70, 0x05, - 0x6e, 0xb8, 0xbd, 0x24, - 0x7d, 0x85, 0x7e, 0x9f, 0xec, 0x09, 0x9e, 0x17, 0x43, 0xdd, 0x5f, 0x02, - 0x53, 0xf1, 0xf3, 0xa9, - 0x20, 0x06, 0x75, 0x8d, 0x5c, 0x68, 0xbe, 0x2f, 0xc8, 0x76, 0xe9, 0x66, - 0x7e, 0x4e, 0x28, 0x3e, - 0x13, 0x27, 0x08, 0xed, 0x80, 0x41, 0xe4, 0xaf, 0x1e, 0xfa, 0xe2, 0x12, - 0x8e, 0x75, 0x67, 0xa8, - 0x0e, 0xa8, 0xe9, 0x26, 0x88, 0xf0, 0x7b, 0xc9, 0xc6, 0xbd, 0x45, 0xba, - 0x5f, 0x56, 0xec, 0x43, - 0x9f, 0xaf, 0xd5, 0x77, 0xce, 0x35, 0xf0, 0xb4, 0x93, 0x63, 0xdf, 0xcd, - 0x34, 0x05, 0xc8, 0xc9, - 0xe1, 0x0e, 0x78, 0xa2, 0x8c, 0x49, 0xd5, 0xfa, 0xaa, 0x7f, 0xf7, 0xee, - 0xd6, 0xa6, 0x48, 0xd7, - 0x55, 0x63, 0x87, 0xa0, 0xa7, 0x7b, 0xee, 0x43, 0xb9, 0x57, 0x1d, 0x9c, - 0xd3, 0x4d, 0xd1, 0x79, - 0x8f, 0xac, 0x0e, 0xd0, 0xe0, 0x01, 0xaf, 0x42, 0xf7, 0x58, 0x4a, 0xfe, - 0x0b, 0x22, 0xdc, 0xd6, - 0xd1, 0x0b, 0xd6, 0x88, 0xfe, 0x15, 0x34, 0x23, 0x06, 0x32, 0x8b, 0xbb, - 0x97, 0xcf, 0x74, 0xf6, - 0x40, 0x0c, 0xea, 0xd9, 0xb8, 0xd0, 0xbf, 0x5e, 0x53, 0xec, 0x11, 0xcc, - 0xfc, 0x9c, 0x50, 0x7c, - 0x82, 0x20, 0x34, 0xbc, 0xc6, 0x84, 0x6f, 0xd2, 0x4b, 0x24, 0x78, 0x65, - 0xe5, 0x26, 0x43, 0x22, - 0x52, 0x37, 0x12, 0xb3, 0xe3, 0x03, 0x32, 0xc6, 0xda, 0xe8, 0xde, 0xc1, - 0x1d, 0x66, 0xa7, 0xb9, - 0xb2, 0x25, 0x9a, 0x96, 0xb4, 0xd8, 0x8e, 0x0b, 0xe7, 0x69, 0x04, 0x30, - 0xa4, 0x4f, 0x7f, 0x03, - 0x59, 0xf3, 0x4d, 0x4b, 0x5a, 0x6c, 0x47, 0xe4, 0x92, 0xd5, 0x02, 0x18, - 0x52, 0xc6, 0xde, 0xe0, - 0x3f, 0xb1, 0xb7, 0x8b, 0x21, 0x3e, 0xf3, 0x27, 0xfd, 0x0e, 0x14, 0xf0, - 0x71, 0xb0, 0x40, 0x0f, - 0xd4, 0x67, 0x60, 0x56, 0xcf, 0x8a, 0x3a, 0xc8, 0x88, 0xb2, 0x12, 0xd8, - 0x87, 0x39, 0xe1, 0xec, - 0x79, 0xf5, 0x38, 0xc6, 0x06, 0x04, 0xf9, 0xcb, 0x5a, 0xa3, 0xeb, 0x7e, - 0x2c, 0x88, 0xf6, 0xde, - 0xe7, 0x46, 0x1d, 0x36, 0x13, 0xa3, 0x60, 0x48, 0x5e, 0x3e, 0x19, 0xac, - 0x77, 0x02, 0xae, 0x7a, - 0xef, 0xa6, 0x91, 0x84, 0x04, 0xb9, 0xae, 0x33, 0x6c, 0xc2, 0xb2, 0x54, - 0x89, 0xf0, 0xa4, 0x94, - 0xca, 0xcc, 0x52, 0xd7, 0x69, 0x4e, 0x1e, 0xf7, 0x2a, 0x34, 0xc2, 0x51, - 0xe7, 0x48, 0x19, 0xb0, - 0x47, 0x58, 0x7f, 0xca, 0xfc, 0xa8, 0x63, 0xdb, 0x30, 0x53, 0xd2, 0x91, - 0x32, 0xb7, 0x26, 0xbc, - 0xa5, 0x72, 0xd4, 0x22, 0xde, 0x94, 0x0d, 0x78, 0xe0, 0xed, 0x52, 0x5e, - 0x55, 0x43, 0x1d, 0xdc, - 0xaf, 0xaa, 0x7b, 0x5d, 0xbc, 0x69, 0x11, 0x6d, 0x3f, 0x2e, 0xa3, 0x98, - 0x75, 0x6c, 0xf4, 0xe8, - 0xa8, 0xfe, 0xee, 0x4e, 0xf8, 0x11, 0xcd, 0xe8, 0x5c, 0x91, 0x60, 0xc5, - 0xbb, 0x47, 0x82, 0x28, - 0x93, 0x3f, 0x1f, 0x9c, 0x33, 0x22, 0x59, 0x13, 0xb8, 0xe1, 0xc0, 0x49, - 0xb5, 0x8e, 0xc7, 0x50, - 0xed, 0x9e, 0xb2, 0x49, 0x71, 0x5e, 0x7c, 0x5d, 0x81, 0xfd, 0xe8, 0x6a, - 0x57, 0x2d, 0x47, 0x4e, - 0xc3, 0x30, 0x2e, 0xe2, 0xa5, 0xc6, 0xb9, 0xbb, 0x8f, 0x36, 0x44, 0xb6, - 0x76, 0x35, 0x83, 0x33, - 0x2a, 0xde, 0xda, 0xf2, 0x3e, 0x95, 0xa2, 0x3a, 0x17, 0xb5, 0x18, 0xa0, - 0x5e, 0x61, 0xc1, 0x0a, - 0x96, 0x53, 0xa9, 0x42, 0x02, 0xbd, 0x57, 0xf8, 0x36, 0x61, 0x59, 0x2a, - 0xa5, 0x78, 0x52, 0x4a, - 0x2c, 0x96, 0xbf, 0x66, 0xa1, 0x7f, 0x17, 0x88, 0xe3, 0xf4, 0xf6, 0xe2, - 0xff, 0xc5, 0x27, 0xa7, - 0x5d, 0x83, 0x0b, 0x12, 0xb0, 0x61, 0x20, 0x38, 0x8b, 0xab, 0xb6, 0x64, - 0x2d, 0xbf, 0xdb, 0x97, - 0xe2, 0x2a, 0xab, 0xe8, 0x22, 0x3c, 0x6e, 0xa3, 0xd0, 0xbe, 0x80, 0xcf, - 0x67, 0xf4, 0x3b, 0x60, - 0x7f, 0xbd, 0x5d, 0x52, 0x99, 0xee, 0x4c, 0x79, 0xae, 0xe2, 0x05, 0x3c, - 0x8d, 0x2c, 0x10, 0x73, - 0x7e, 0xa1, 0xad, 0xd5, 0x42, 0x7c, 0x25, 0x4e, 0x39, 0x1c, 0x28, 0x23, - 0xe2, 0xa3, 0x80, 0x1e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x3e, 0xad, 0x47, 0x0c, 0xfa, 0xac, 0x9a, 0x10, 0x6a, 0xf0, 0x39, 0xef, - 0x1e, 0x3f, 0xd0, 0x62, - 0xc7, 0x40, 0x68, 0xbb, 0x4f, 0xcb, 0xde, 0x67, 0x96, 0x48, 0xf0, 0xca, - 0x09, 0x4c, 0x86, 0x44, - 0x05, 0x6c, 0xb6, 0xde, 0x31, 0x9f, 0x0e, 0xeb, 0x8e, 0x80, 0x99, 0x63, - 0x10, 0xf6, 0x95, 0x1a, - 0x3c, 0x95, 0x64, 0xc1, 0x8f, 0x4b, 0x48, 0x7e, 0x87, 0xcf, 0x63, 0xd1, - 0xc0, 0xe2, 0x33, 0xb8, - 0x87, 0x4c, 0x82, 0x62, 0xf7, 0x1b, 0x61, 0x39, 0xc5, 0xa4, 0xe1, 0x06, - 0xf5, 0xd0, 0xd6, 0x38, - 0x67, 0x5e, 0x0a, 0x47, 0xa0, 0xc0, 0xdd, 0xf4, 0xf8, 0x25, 0x3b, 0xf7, - 0x4c, 0xf9, 0x0e, 0x82, - 0x99, 0xe7, 0xb0, 0xe3, 0x51, 0xdf, 0x45, 0x06, 0x67, 0x22, 0x31, 0x8f, - 0x95, 0xa1, 0x2e, 0x64, - 0xab, 0xda, 0x3d, 0x04, 0x56, 0x64, 0x76, 0xb1, 0x26, 0x50, 0x17, 0xe4, - 0x0a, 0x15, 0xf1, 0x9f, - 0xf9, 0xed, 0x2f, 0xb7, 0xb5, 0x67, 0x44, 0x77, 0xfc, 0xb8, 0xc9, 0x25, - 0x17, 0x73, 0x56, 0x26, - 0xd2, 0x2f, 0x05, 0xc2, 0x50, 0x60, 0x8f, 0x7a, 0x7c, 0xf3, 0xfc, 0x9a, - 0x26, 0x9d, 0x07, 0x41, - 0x06, 0x48, 0x65, 0x94, 0x9f, 0xea, 0xb5, 0xb2, 0xf4, 0x41, 0xee, 0x42, - 0xa1, 0xa4, 0xe6, 0xad, - 0xa9, 0xe2, 0x1e, 0xc9, 0x23, 0x83, 0xa4, 0xdf, 0xcb, 0x6f, 0x4d, 0xda, - 0xd4, 0xc8, 0x12, 0x45, - 0x1b, 0xc7, 0x84, 0x5f, 0x97, 0x5b, 0x2a, 0xd4, 0x2c, 0x06, 0x49, 0xea, - 0x70, 0x87, 0x6d, 0x46, - 0x48, 0xec, 0x66, 0x6b, 0xaf, 0xca, 0x71, 0x25, 0x61, 0x10, 0xba, 0x34, - 0x02, 0x6e, 0x5a, 0x92, - 0x97, 0x4f, 0x59, 0xc5, 0xd9, 0x2f, 0x3e, 0xcf, 0xa1, 0x9f, 0x74, 0x35, - 0xca, 0xf7, 0xc2, 0x27, - 0xc2, 0x2c, 0xde, 0x65, 0x7e, 0x54, 0xd0, 0x8c, 0x18, 0xc8, 0x69, 0xa9, - 0x19, 0xba, 0x13, 0x5e, - 0x86, 0x50, 0x72, 0xe5, 0x2c, 0x89, 0x08, 0x0e, 0x52, 0x5a, 0xcc, 0x19, - 0x9a, 0x5f, 0x46, 0x55, - 0x61, 0x16, 0x6f, 0xd3, 0x3f, 0x2a, 0x68, 0x46, 0x0c, 0x64, 0xd5, 0xb5, - 0xed, 0x5d, 0xe8, 0x2f, - 0x36, 0x4d, 0xcb, 0xbe, 0xed, 0xb6, 0x54, 0x6b, 0x58, 0x0c, 0x92, 0x17, - 0xe0, 0xcd, 0xda, 0x8c, - 0x57, 0x5b, 0xa4, 0x6d, 0xd2, 0x9c, 0x3c, 0x2d, 0x54, 0x68, 0x47, 0xa2, - 0x0d, 0x90, 0x32, 0xa3, - 0xf0, 0x11, 0x53, 0x82, 0x79, 0xef, 0xe3, 0x3b, 0x59, 0xba, 0x4f, 0xc2, - 0x86, 0x0e, 0xcc, 0xa5, - 0x2e, 0xae, 0x9c, 0xab, 0xd4, 0x98, 0xc5, 0xe6, 0x0e, 0xcb, 0xac, 0xdc, - 0x21, 0x18, 0xc4, 0x7d, - 0x7a, 0xd1, 0xeb, 0x8c, 0xa8, 0x71, 0x42, 0x92, 0x20, 0x62, 0x9c, 0x5f, - 0x9d, 0xda, 0x85, 0x69, - 0x3d, 0x89, 0x94, 0x46, 0x54, 0xd9, 0x21, 0x49, 0x10, 0x31, 0x4e, 0xce, - 0xaf, 0x6d, 0xa3, 0xd5, - 0x81, 0x04, 0xe7, 0xf6, 0x68, 0xf1, 0xd4, 0x8b, 0x31, 0xe5, 0x0f, 0x44, - 0x54, 0x74, 0x30, 0x95, - 0x35, 0x69, 0x18, 0xf4, 0x43, 0xc3, 0xef, 0x32, 0x22, 0xcd, 0xe5, 0x36, - 0x51, 0x9f, 0xa9, 0x3b, - 0xc9, 0xe8, 0x81, 0x9d, 0xc7, 0x3b, 0xa5, 0xae, 0x50, 0xf5, 0xb5, 0x70, - 0x56, 0x1a, 0x6a, 0x07, - 0x65, 0x66, 0x29, 0x8a, 0xd5, 0x27, 0x0f, 0x9a, 0x15, 0x1a, 0x61, 0xc9, - 0x92, 0x24, 0xed, 0x58, - 0x78, 0xe9, 0xc8, 0x41, 0xdd, 0x96, 0x90, 0xfc, 0xcd, 0x5d, 0xc6, 0x61, - 0x43, 0x07, 0x66, 0xb3, - 0xbc, 0x8d, 0x73, 0xb0, 0x3c, 0x28, 0xf5, 0xc2, 0x21, 0xd4, 0x41, 0x8a, - 0xfb, 0x19, 0x93, 0x40, - 0x1c, 0x93, 0x11, 0x4c, 0xd3, 0x23, 0xf6, 0x51, 0x4f, 0xb9, 0x8a, 0xb7, - 0xbe, 0xac, 0x1b, 0x86, - 0x68, 0xea, 0x13, 0xe6, 0xf3, 0xa2, 0xcf, 0x0a, 0xa9, 0x66, 0x53, 0x52, - 0x7c, 0x20, 0x72, 0xac, - 0xcc, 0x84, 0x37, 0x43, 0xf6, 0xa4, 0xab, 0x45, 0xde, 0x75, 0x2c, 0x13, - 0x46, 0xec, 0xff, 0x1d, - 0xbf, 0xa9, 0xa0, 0xfa, 0x92, 0x5d, 0x4e, 0x9b, 0x5b, 0x15, 0x36, 0xab, - 0x4a, 0x4b, 0xe0, 0xf7, - 0x71, 0x15, 0xb4, 0x74, 0x11, 0x1e, 0x37, 0xb0, 0x68, 0x5f, 0x40, 0x86, - 0xd2, 0x7a, 0xfc, 0x30, - 0xb8, 0xfd, 0x35, 0xe9, 0xd6, 0x25, 0x92, 0x1e, 0x38, 0xaa, 0xf5, 0xf6, - 0x84, 0x60, 0x96, 0x37, - 0xa6, 0x56, 0x07, 0x68, 0x70, 0xe1, 0xb6, 0x21, 0x9a, 0x2c, 0x25, 0x7f, - 0xe4, 0x11, 0x6e, 0x6b, - 0x22, 0x3e, 0x56, 0x40, 0x29, 0x8f, 0x6c, 0x41, 0x25, 0x49, 0xb3, 0x58, - 0xa0, 0x93, 0xcb, 0xe4, - 0x4d, 0x80, 0xd0, 0xb5, 0x9e, 0x55, 0x7f, 0xce, 0xef, 0x90, 0x23, 0x57, - 0x12, 0x98, 0xcf, 0x88, - 0xb0, 0x1d, 0xb9, 0x5b, 0xc1, 0x3f, 0x5c, 0x65, 0x0a, 0x56, 0x5e, 0x0e, - 0x7a, 0x92, 0x9c, 0xd9, - 0x90, 0x1b, 0xcc, 0xd6, 0x9d, 0x57, 0xe2, 0x4a, 0xc2, 0x20, 0xb7, 0x68, - 0x04, 0xdc, 0xb4, 0xe7, - 0x23, 0x22, 0xa6, 0xc7, 0xf2, 0x1d, 0x05, 0x76, 0xb2, 0xb7, 0x9e, 0x47, - 0xcf, 0x1c, 0x5b, 0x89, - 0x37, 0x51, 0x3b, 0x39, 0x36, 0x24, 0x3d, 0x5c, 0xcf, 0xf2, 0xbf, 0x08, - 0x8f, 0x42, 0x4a, 0xe1, - 0x6b, 0xce, 0xc0, 0xac, 0x5d, 0xd7, 0x74, 0x53, 0xd3, 0xa7, 0x24, 0x73, - 0xcd, 0x72, 0x01, 0x1b, - 0x09, 0xfc, 0x7c, 0x35, 0xcc, 0x88, 0xa7, 0x4c, 0xa5, 0x02, 0x86, 0xe7, - 0x91, 0x7d, 0x9a, 0x83, - 0x24, 0x76, 0x33, 0xd4, 0xb6, 0x65, 0xd9, 0xf3, 0xd1, 0x08, 0x5d, 0x1a, - 0x01, 0x37, 0x2d, 0x49, - 0x31, 0x19, 0x5e, 0xad, 0xa9, 0xce, 0x88, 0xee, 0x3b, 0xb3, 0x51, 0x4a, - 0x2e, 0xe6, 0xac, 0x4c, - 0x4e, 0xa4, 0x03, 0xff, 0x30, 0x20, 0xc4, 0x97, 0x95, 0x51, 0x54, 0x76, - 0xa3, 0xca, 0xbc, 0x3f, - 0x80, 0x18, 0x17, 0x71, 0xb3, 0x63, 0xbd, 0xbc, 0xa6, 0x1b, 0x22, 0x5b, - 0x3b, 0xfb, 0xa0, 0xf8, - 0x27, 0x52, 0xe0, 0x9e, 0x18, 0x10, 0x62, 0xaa, 0xab, 0xc9, 0x2a, 0x3b, - 0xb0, 0x65, 0x5e, 0xfe, - 0x58, 0xef, 0xbd, 0xcc, 0x81, 0xfe, 0x2e, 0xd3, 0x05, 0x2b, 0x2f, 0x07, - 0x3d, 0x49, 0x4e, 0x8d, - 0x21, 0x1a, 0x85, 0x0a, 0x87, 0xfa, 0xd7, 0x18, 0x5f, 0x88, 0xc4, 0x79, - 0x11, 0xc1, 0xb8, 0x53, - 0xcf, 0xa0, 0xe4, 0x09, 0x58, 0xd1, 0x10, 0x1c, 0xa4, 0xb4, 0x5b, 0x32, - 0xf7, 0xbe, 0x8c, 0xaa, - 0x94, 0x6b, 0x8a, 0x8f, 0x77, 0x5a, 0x85, 0x96, 0xdb, 0x5e, 0x03, 0x14, - 0x7b, 0xa5, 0xb1, 0x90, - 0x2d, 0x8a, 0x4f, 0xe1, 0x7a, 0xed, 0x7e, 0xbf, 0x74, 0x0a, 0xdb, 0xfd, - 0x90, 0x4a, 0xb7, 0xca, - 0xde, 0xbf, 0xcf, 0x29, 0xad, 0x77, 0x26, 0xdd, 0x57, 0x71, 0xe3, 0x1e, - 0xa7, 0x16, 0x08, 0xd8, - 0xae, 0xb6, 0x8b, 0xda, 0x67, 0xfb, 0x78, 0x5a, 0xa8, 0xd0, 0x8e, 0x87, - 0x1a, 0xe3, 0x64, 0x85, - 0x8c, 0x88, 0xdd, 0x9a, 0x4e, 0x74, 0x14, 0x1b, 0x8d, 0x99, 0x3d, 0xdf, - 0xba, 0x70, 0xaf, 0x61, - 0x5e, 0xa7, 0xd8, 0x58, 0x1e, 0x14, 0x9b, 0x61, 0xf1, 0x6a, 0xc1, 0x45, - 0x9c, 0xed, 0xa8, 0x20, - 0xa3, 0x3a, 0xb1, 0xb6, 0x41, 0x7e, 0xb8, 0xca, 0x14, 0xac, 0xbc, 0x1c, - 0xf4, 0xe7, 0xfb, 0x71, - 0x2b, 0xc2, 0x2a, 0x75, 0xe5, 0x07, 0xcb, 0x0d, 0x80, 0x4b, 0x35, 0xbf, - 0x31, 0xee, 0x51, 0x67, - 0x9e, 0xb3, 0x25, 0xf0, 0x15, 0xa7, 0x99, 0x83, 0x04, 0x9d, 0xf2, 0xd2, - 0x5b, 0x8a, 0x58, 0xa4, - 0xbd, 0x91, 0x83, 0x37, 0xe7, 0xba, 0x9c, 0xf5, 0xb6, 0x2a, 0x6c, 0x95, - 0x94, 0x96, 0x03, 0x2d, - 0x1a, 0xdb, 0x74, 0xd8, 0x4c, 0xc9, 0x43, 0xe3, 0xbb, 0xf8, 0x64, 0xf5, - 0x1f, 0x08, 0xfd, 0x2b, - 0x98, 0xfb, 0x40, 0x64, 0x8a, 0x4d, 0x2c, 0x31, 0xf0, 0xdc, 0x1c, 0x90, - 0xfa, 0x2e, 0xbe, 0x09, - 0xd7, 0x43, 0xb3, 0x1c, 0x61, 0xff, 0x81, 0x91, 0xf2, 0x73, 0x65, 0xf9, - 0x36, 0x6b, 0x92, 0x5b, - 0x43, 0x28, 0x39, 0x93, 0x16, 0xa5, 0x04, 0x07, 0x29, 0x2d, 0x66, 0xed, - 0x4d, 0xce, 0x23, 0xcb, - 0xd0, 0x17, 0x26, 0x0f, 0x25, 0x87, 0x5d, 0x14, 0x91, 0xcc, 0xa6, 0xa4, - 0xf8, 0x40, 0xe4, 0x9b, - 0x4b, 0xc8, 0xb5, 0x21, 0x01, 0xbf, 0xca, 0x7c, 0x1b, 0xd1, 0xcd, 0x15, - 0xb3, 0x3c, 0x29, 0x25, - 0x28, 0xe6, 0xf9, 0x3f, 0x4b, 0x72, 0x70, 0x54, 0xfa, 0x8a, 0x42, 0x9e, - 0x80, 0xbc, 0x22, 0xd0, - 0x9b, 0xdf, 0x93, 0x2e, 0x24, 0x38, 0x97, 0x68, 0x8a, 0x1d, 0x6b, 0xb1, - 0x4b, 0x7c, 0xcd, 0xbe, - 0x4c, 0x9c, 0x20, 0x32, 0x45, 0xc7, 0x16, 0xf9, 0x78, 0x6e, 0x0e, 0x48, - 0x7d, 0x17, 0x5f, 0xe5, - 0x6f, 0xbe, 0x86, 0xf5, 0xb7, 0xda, 0x13, 0x8f, 0xca, 0xd9, 0x90, 0x0f, - 0xb2, 0x0b, 0x04, 0x6c, - 0x4f, 0xb8, 0xf3, 0x78, 0xeb, 0xb2, 0xad, 0xa0, 0x02, 0xaf, 0x79, 0x69, - 0xcc, 0x45, 0x2c, 0x52, - 0x0b, 0xc4, 0x5f, 0xf8, 0xb9, 0x6f, 0x75, 0x22, 0x48, 0x3d, 0xdc, 0xd9, - 0x4f, 0xa0, 0x79, 0x59, - 0x42, 0x34, 0xc9, 0x14, 0xcd, 0x37, 0x6d, 0x30, 0xbe, 0xd3, 0x4b, 0xf2, - 0x22, 0x41, 0xb3, 0xa6, - 0xb6, 0x55, 0xdc, 0xcf, 0x5e, 0xd5, 0xe9, 0xd7, 0xfe, 0x17, 0xb0, 0x4c, - 0xdb, 0x36, 0x7a, 0x74, - 0xf4, 0x61, 0x15, 0xdb, 0x93, 0xe2, 0x84, 0xe7, 0x40, 0xc4, 0xfb, 0xbe, - 0xf9, 0x77, 0xc9, 0xd2, - 0xfe, 0xb9, 0xba, 0xa4, 0xf1, 0x1f, 0x98, 0xf2, 0x9f, 0x07, 0x0a, 0x78, - 0xd9, 0x58, 0x20, 0xe6, - 0x0d, 0x8c, 0x3a, 0x6c, 0x26, 0x85, 0xc0, 0x90, 0xbc, 0x7c, 0x32, 0x9b, - 0xee, 0x04, 0x9f, 0xf4, - 0xb1, 0x01, 0x49, 0xdc, 0x1a, 0xad, 0x35, 0x52, 0x9d, 0xa8, 0x73, 0x11, - 0x15, 0x1d, 0x0c, 0xb4, - 0x07, 0x54, 0x95, 0x13, 0x44, 0x78, 0xdc, 0x85, 0x63, 0xbf, 0xc3, 0x5d, - 0xce, 0x2b, 0x76, 0xc0, - 0x46, 0x44, 0x8f, 0x4d, 0x27, 0x3a, 0x0a, 0xec, 0xa7, 0xad, 0xff, 0x8e, - 0x5d, 0x38, 0xb6, 0xd1, - 0x45, 0x60, 0x5c, 0x07, 0x89, 0x4f, 0xb1, 0xb5, 0xdd, 0x6c, 0x88, 0xaf, - 0xec, 0x6a, 0xc5, 0x66, - 0xda, 0xcf, 0x89, 0x70, 0x47, 0x7a, 0x41, 0x01, 0x4e, 0x0f, 0x57, 0x62, - 0xd8, 0x6f, 0x0d, 0xaf, - 0xdb, 0xd3, 0x79, 0xf7, 0x9c, 0xe8, 0x28, 0x36, 0xd9, 0xf1, 0x7a, 0x7d, - 0xb7, 0xe0, 0x9d, 0xc2, - 0xe9, 0xee, 0xf4, 0x10, 0x9b, 0x53, 0x1b, 0x81, 0x98, 0x83, 0x5c, 0x16, - 0x28, 0x54, 0x42, 0x39, - 0xf8, 0xf1, 0xdf, 0x30, 0x6e, 0xf5, 0x2d, 0x40, 0x6b, 0x46, 0xe4, 0x3a, - 0x78, 0xfc, 0xc6, 0x4b, - 0x50, 0x0f, 0x31, 0x7e, 0x96, 0xe4, 0xe0, 0xa8, 0x37, 0xd7, 0x84, 0xff, - 0xc3, 0xbb, 0x44, 0x63, - 0x6d, 0x86, 0xa5, 0x38, 0xc2, 0x3d, 0xc1, 0xe1, 0x27, 0xe6, 0xca, 0x31, - 0x6c, 0xd6, 0xe7, 0xb6, - }, + { + /* 0 */ + 0xe9, 0xfb, 0xd5, 0x0c, 0x7a, 0xc0, 0x80, 0x96, 0x19, 0x11, + 0x87, 0x93, 0x1b, 0xc9, 0xae, 0xb5, 0x19, 0x08, 0xe0, 0x8c, + 0xb2, 0x17, 0x1a, 0xce, 0x7b, 0x32, 0xfc, 0xab, 0xf8, 0xfe, + 0xf2, 0x0a, 0xbf, 0xcb, 0xd0, 0xa2, 0x50, 0xb2, 0xdc, 0x77, + 0xc0, 0xbd, 0xca, 0xef, 0x4e, 0x88, 0xc7, 0x89, 0x62, 0x41, + 0x10, 0x1a, 0x5e, 0x63, 0x42, 0xd6, 0x69, 0xc4, 0x12, 0x3c, + 0xd3, 0x93, 0x13, 0xc0, 0x4f, 0x38, 0xe5, 0x22, 0x98, 0x65, + 0x46, 0x2f, 0xa2, 0x9e, 0xb1, 0xd7, 0xad, 0xbf, 0x9b, 0x36, + 0x38, 0xb3, 0x39, 0x6a, 0x11, 0x6f, 0x4a, 0xe7, 0x3c, 0x70, + 0x97, 0x29, 0x2f, 0xcb, 0xc0, 0xef, 0xfb, 0x1f, 0xb7, 0xc2, + 0x06, 0x7d, 0x56, 0x4d, 0x08, 0x35, 0x78, 0xfd, 0x96, 0x0f, + 0xfe, 0x68, 0x4a, 0x88, 0xf8, 0x9b, 0xc3, 0xa4, 0x79, 0x73, + 0xc7, 0x94, 0xe7, 0x89, 0xa3, 0xc5, 0x09, 0xaa, 0xc1, 0x32, + 0x3d, 0x8d, 0xe7, 0x07, 0xbb, 0x33, 0xb7, 0x41, 0x72, 0x26, + 0x6b, 0x9f, 0xb4, 0xdf, 0x6a, 0x7c, 0x99, 0x8e, 0x18, 0x37, + 0x9b, 0xf7, 0x20, 0xd4, 0x23, 0x72, 0x1d, 0x3c, 0x7e, 0x63, + 0x0e, 0x5c, 0x9f, 0xfb, 0x95, 0x6b, 0xf3, 0x49, 0x0f, 0x1c, + 0x55, 0x9b, 0x7b, 0x42, 0x30, 0x4b, 0x97, 0x02, 0x38, 0x23, + 0xcd, 0x75, 0xe7, 0xd2, 0x6e, 0xed, 0x3f, 0x5a, 0x3e, 0xde, + 0xdd, 0xe3, 0x0b, 0xec, 0x82, 0x42, 0xce, 0xaa, 0xcc, 0x15, + 0x6a, 0x16, 0x03, 0xc5, 0x75, 0x38, 0xa2, 0xd7, 0xa5, 0x12, + 0x3b, 0xf8, 0x6a, 0x5b, 0xd3, 0x8d, 0x98, 0x89, 0x04, 0xcf, + 0x0d, 0xe1, 0xfa, 0xf7, 0xba, 0x7b, 0xcd, 0x1b, 0x0b, 0x73, + 0xe3, 0x2b, 0xa5, 0xb7, 0x9c, 0xb1, 0x40, 0xf2, 0x55, 0x15, + 0x33, 0x5f, 0xbb, 0x28, 0xdf, 0xc5, 0x86, 0xf2, 0x56, 0x66, + 0x94, 0xec, 0x5a, 0xf3, 0x62, 0x38, 0x31, 0xc1, 0x08, 0x0d, + 0x2f, 0xd0, 0x21, 0x6b, 0xd5, 0x62, 0x09, 0x1e, 0x88, 0xa8, + 0xe8, 0x60, 0xed, 0x04, 0x70, 0x46, 0x59, 0xea, 0x0d, 0x67, + 0xdc, 0x19, 0x7e, 0xb4, 0x7c, 0x7f, 0x79, 0x05, 0xe4, 0x76, + 0x41, 0x21, 0x67, 0x55, 0x66, 0xeb, 0x35, 0x0b, 0xe0, 0x83, + 0xdb, 0x1c, 0x51, 0x8a, 0x58, 0x6c, 0x9a, 0x55, 0xbf, 0x19, + 0xaf, 0xa8, 0xd6, 0xb0, 0x18, 0xe7, 0x2e, 0x03, 0x59, 0x77, + 0x1e, 0x26, 0x4e, 0x10, 0x19, 0xc3, 0x82, 0x0b, 0x9d, 0x3c, + 0x37, 0x07, 0x24, 0xdf, 0xea, 0xce, 0xc9, 0x0f, 0xb4, 0x19, + 0xa1, 0x53, 0x62, 0x12, 0xfe, 0x51, 0x43, 0x68, 0xa5, 0x30, + 0xd9, 0x7c, 0xf4, 0x0c, 0x90, 0xca, 0xeb, 0xfd, 0x17, 0xa9, + 0xa7, 0x2b, 0x82, 0x1f, 0x84, 0x81, 0x8b, 0x0f, 0xff, 0xe0, + 0x12, 0x88, 0x25, 0x57, 0xdb, 0xbc, 0xcd, 0x3d, 0x81, 0xda, + 0xf1, 0xb9, 0x29, 0xd8, 0x85, 0xe6, 0x5a, 0xed, 0xb1, 0xc8, + 0x31, 0x09, 0x7f, 0xc9, 0xc0, 0x34, 0xb3, 0x18, 0x8d, 0x3e, + 0xd3, 0xd6, 0x5f, 0x43, 0x9b, 0xba, 0x6d, 0xe8, 0xa6, 0x65, + 0x8d, 0x48, 0xe6, 0x59, 0xe4, 0x02, 0x2b, 0x18, 0xe3, 0x57, + 0x15, 0x39, 0x2e, 0x91, 0x8d, 0x56, 0xc7, 0x3e, 0xcb, 0xc1, + 0xd5, 0x1e, 0x30, 0x8e, 0xb0, 0xfe, 0x57, 0x3b, 0x93, 0xc6, + 0x75, 0x60, 0xa6, 0x67, 0xe1, 0x64, 0xad, 0x4c, 0x17, 0x54, + 0x7f, 0x77, 0x27, 0x7c, 0xe9, 0x87, 0x74, 0x2e, 0xa9, 0x30, + 0x83, 0xbc, 0xc2, 0x41, 0x12, 0xe4, 0x62, 0xce, 0x7c, 0xbd, + 0xd6, 0xdb, 0x11, 0x24, 0xff, 0x6e, 0x8d, 0xc6, 0x50, 0xdd, + 0xc3, 0xac, 0x8e, 0xa8, 0x17, 0x12, 0x1c, 0xaa, 0x34, 0x45, + 0xef, 0xd4, 0xb9, 0xc4, 0x3e, 0x87, 0x1f, 0x69, 0xf6, 0xe3, + 0x61, 0x28, 0x30, 0xa6, 0x3d, 0x3e, 0x98, 0x7e, 0x4d, 0x13, + 0xaf, 0xe2, 0x9c, 0xee, 0xba, 0x61, 0x03, 0xdf, 0x2b, 0xc7, + 0x04, 0xfb, 0x3c, 0x9f, 0x4b, 0xe6, 0x7f, 0x34, 0x1a, 0xd9, + 0xeb, 0x5a, 0x3a, 0xe9, 0x0f, 0xfa, 0x58, 0x34, 0xce, 0x20, + 0x43, 0x69, 0x3d, 0x7e, 0x1d, 0xf7, 0x45, 0xc6, 0x91, 0x3d, + 0x97, 0x3f, 0xbe, 0x3a, 0x05, 0x8c, 0x9f, 0x48, 0x25, 0xba, + 0xb6, 0xb9, 0xe1, 0xc5, 0x6e, 0x0d, 0xb7, 0xfb, 0x29, 0xaf, + 0x54, 0xd8, 0xe9, 0xeb, 0xef, 0x06, 0x14, 0x85, 0x74, 0xa1, + 0xaf, 0x82, 0xfc, 0xb3, 0x57, 0x28, 0x9b, 0xbb, 0x38, 0x2b, + 0x0d, 0x35, 0x51, 0x1e, 0xab, 0x32, 0x81, 0xa6, 0xc4, 0x24, + 0x3f, 0xa2, 0x86, 0xd0, 0x89, 0x60, 0x71, 0xf8, 0xd6, 0x66, + 0x42, 0xfa, 0xc0, 0x7b, 0x52, 0xb4, 0xc3, 0x6f, 0xdb, 0x16, + 0xe8, 0x23, 0x76, 0x9e, 0x56, 0x30, 0x05, 0xae, 0x2a, 0x72, + 0x5c, 0xe1, 0xd9, 0xac, 0x4d, 0x7c, 0x55, 0x41, 0x69, 0x3c, + 0xee, 0xd5, 0x7b, 0x90, 0xd1, 0x14, 0x18, 0x53, 0xff, 0x1f, + 0x4c, 0x3f, 0xc7, 0xe8, 0xb6, 0x71, 0xa0, 0xa2, 0x26, 0x41, + 0x31, 0x9a, 0xec, 0xd1, 0xfd, 0x83, 0x52, 0x91, 0x03, 0x9b, + 0x68, 0x6b, 0x39, 0xfc, 0x81, 0x99, 0x69, 0x84, 0xf8, 0x4a, + 0x9c, 0x72, 0x38, 0x50, 0x46, 0x07, 0x85, 0xc3, 0xac, 0x60, + 0x0a, 0x9f, 0x54, 0xe4, 0xb8, 0x01, 0x71, 0x9b, 0x9a, 0xf8, + 0xaa, 0x82, 0xd2, 0x78, 0x04, 0xff, 0xa5, 0x4a, 0x23, 0x2a, + 0x8d, 0xf1, 0xc5, 0x08, 0xf9, 0x27, 0x67, 0xb6, 0xd7, 0xb0, + 0xcf, 0x6e, 0xa2, 0x76, 0x72, 0x6c, 0x48, 0x7a, 0xb8, 0x5d, + 0x27, 0xbd, 0x10, 0xdd, 0x84, 0x94, 0x71, 0xea, 0xca, 0x27, + 0x5a, 0x35, 0x26, 0xa0, 0xd8, 0xe2, 0x42, 0x2b, 0x37, 0x99, + 0x06, 0x31, 0x6e, 0x83, 0x3c, 0xc4, 0x3b, 0x1d, 0x16, 0x06, + 0xe5, 0xdc, 0xda, 0x55, 0x7a, 0x8a, 0xa9, 0xd3, 0x75, 0x15, + 0x6f, 0x6d, 0x79, 0x1f, 0xab, 0x51, 0x1d, 0xea, 0xbb, 0x0c, + 0x50, 0x2f, 0xd1, 0x81, 0x9b, 0xc0, 0x14, 0xfd, 0xa8, 0x0b, + 0xb3, 0x02, 0xe2, 0xf5, 0xf7, 0x33, 0x97, 0xc7, 0x67, 0xf0, + 0x5d, 0xdc, 0x87, 0xec, 0xe4, 0xd8, 0x90, 0xf4, 0xb3, 0xba, + 0x4e, 0xb9, 0x20, 0x79, 0xcb, 0xeb, 0xe8, 0xb4, 0x6d, 0xff, + 0x02, 0x2b, 0x32, 0x3b, 0xb9, 0x13, 0x28, 0xea, 0x72, 0x05, + 0xeb, 0x99, 0xdb, 0xeb, 0xd6, 0xd7, 0xdd, 0xee, 0xb4, 0xc9, + 0xef, 0x75, 0xbc, 0x06, 0x28, 0xf6, 0x89, 0xa1, 0x82, 0xc8, + 0xf4, 0x71, 0x1a, 0x1c, 0xa9, 0xcc, 0x99, 0xc7, 0x0b, 0x98, + 0x6f, 0x39, 0x95, 0xfa, 0xbe, 0x84, 0x68, 0x51, 0x28, 0x59, + 0x6e, 0xda, 0x60, 0xbf, 0x65, 0x96, 0x27, 0x44, 0x82, 0xa5, + 0xb8, 0xe5, 0x7e, 0x3e, 0xfb, 0x66, 0x44, 0xb2, 0x26, 0xb3, + 0x01, 0x43, 0x92, 0xa9, 0xdf, 0x4d, 0xe7, 0xa7, 0x4a, 0xf7, + 0xef, 0xab, 0x73, 0xdf, 0x16, 0x0d, 0xd2, 0x08, 0x60, 0x8b, + 0x9e, 0xfe, 0x25, 0x44, 0x7c, 0xac, 0x80, 0x52, 0xdd, 0xd8, + 0x82, 0x4a, 0x92, 0xa5, 0xb0, 0x83, 0xe5, 0x55, 0x8b, 0xba, + 0xc5, 0x16, 0x24, 0xa3, 0xc2, 0x40, 0x70, 0xd5, 0x95, 0xaf, + 0xc8, 0x5a, 0xbd, 0x75, 0x3b, 0x62, 0x32, 0xbc, 0x99, 0x91, + 0x5f, 0xd3, 0x1f, 0x76, 0xa5, 0xa2, 0x94, 0x5c, 0x0f, 0x9b, + 0x5a, 0xf2, 0x29, 0x70, 0x4f, 0x0c, 0x08, 0x31, 0x55, 0xb4, + 0x85, 0x15, 0xfc, 0x58, 0xd3, 0x2f, 0xc7, 0x53, 0x2b, 0xe2, + 0x34, 0x38, 0x91, 0x5b, 0xf1, 0x4d, 0x16, 0xf3, 0xde, 0x72, + 0xe9, 0x37, 0xef, 0x9a, 0xc3, 0x63, 0xa9, 0xff, 0xaa, 0xfe, + 0x5f, 0x1d, 0xe3, 0x46, 0xae, 0x24, 0xf3, 0x5d, 0x32, 0x10, + 0x03, 0xdb, 0xa7, 0x2e, 0x34, 0x5f, 0xf6, 0x64, 0x3b, 0x95, + 0x33, 0x3f, 0x27, 0x14, 0x6c, 0x1d, 0x8f, 0xe1, 0xcb, 0x08, + 0xb1, 0x9f, 0x66, 0xd8, 0x47, 0xa7, 0xa8, 0xd1, 0x23, 0x8b, + 0x8e, 0x0a, 0xd8, 0xaf, 0x7f, 0x62, 0xfd, 0x1c, 0x15, 0xdf, + 0xc3, 0xf1, 0xc6, 0x20, 0x2f, 0xe9, 0x94, 0xd3, 0x33, 0xf5, + 0x45, 0x8b, 0xf2, 0xe6, 0x4d, 0xeb, 0x0d, 0xd1, 0x85, 0x49, + 0x12, 0x97, 0x93, 0xfd, 0x9d, 0x69, 0xee, 0x5f, 0x6a, 0x23, + 0xab, 0xe5, 0xc6, 0x7d, 0x59, 0x68, 0x0a, 0x53, 0xa3, 0x73, + 0x2d, 0x97, 0xb9, 0x64, 0xf9, 0xe5, 0xde, 0x85, 0x60, 0x1a, + 0xb8, 0x0c, 0xa7, 0x1f, 0x67, 0xf1, 0x0d, 0xa3, 0x05, 0xa2, + 0x7d, 0x8a, 0x0c, 0xce, 0x44, 0x62, 0xdd, 0xe9, 0x81, 0x5c, + 0x46, 0x4a, 0xd4, 0x45, 0xa6, 0xda, 0x2d, 0xa3, 0x4b, 0x8c, + 0x2f, 0xe0, 0x0a, 0xdc, 0xb3, 0xb9, 0x9d, 0xa1, 0x02, 0x92, + 0x7b, 0x34, 0x99, 0x6a, 0xa4, 0xf9, 0x93, 0xe6, 0x22, 0x2a, + 0x3a, 0x18, 0xb9, 0xaa, 0xc6, 0xcd, 0x83, 0x8d, 0xf6, 0x1f, + 0x86, 0xb1, 0xae, 0x3a, 0xfb, 0x65, 0x9a, 0x61, 0x73, 0x74, + 0x79, 0x02, 0xaa, 0x20, 0x81, 0x39, 0x5b, 0xe6, 0xdf, 0xd9, + 0xe5, 0xc2, 0x8c, 0x69, 0xdf, 0x14, 0x73, 0x9d, 0xfe, 0xc4, + 0x39, 0x38, 0x2a, 0x7d, 0x45, 0x21, 0x4f, 0x40, 0x5e, 0x11, + 0xe5, 0x39, 0xf9, 0xd2, 0x1f, 0xbe, 0xd4, 0x46, 0x95, 0x09, + 0x4f, 0xfa, 0xb2, 0xd0, 0x14, 0xa6, 0x26, 0x95, 0x77, 0x7a, + 0x08, 0xac, 0xc8, 0xec, 0xa1, 0x4c, 0xa0, 0x2e, 0x0b, 0x14, + 0x2a, 0x21, 0xde, 0x5b, 0xcb, 0x6e, 0x86, 0x2f, 0x8b, 0x95, + 0x8a, 0x7f, 0xea, 0x58, 0x26, 0x8c, 0x1b, 0x3d, 0x80, 0x56, + 0x47, 0x54, 0xea, 0x09, 0x0e, 0x55, 0x1a, 0xc3, 0x96, 0x6a, + 0xbd, 0x62, 0x1f, 0xa2, 0xdd, 0x8a, 0xc0, 0xb8, 0x0e, 0xd1, + 0x9e, 0xa1, 0xa9, 0x79, 0xd8, 0xd3, 0x9d, 0x1b, 0xd4, 0x49, + 0x60, 0xdf, 0xa3, 0x3f, 0xae, 0x76, 0xe5, 0x4f, 0xea, 0xc0, + 0x8f, 0xce, 0x01, 0xc8, 0x99, 0x98, 0xc5, 0xcd, 0x98, 0xc7, + 0xc4, 0x2d, 0x36, 0xc2, 0x72, 0x49, 0x8b, 0x01, 0x0c, 0x29, + 0x63, 0x6f, 0x50, 0x51, 0x13, 0xc1, 0xf9, 0x4d, 0x76, 0x89, + 0x9f, 0xa0, 0x29, 0xa9, 0xe0, 0xac, 0x34, 0xd4, 0xbb, 0x34, + 0x75, 0xe8, 0x73, 0x98, 0x51, 0x86, 0x05, 0xb5, 0x33, 0xc8, + 0x29, 0x3e, 0x10, 0x39, 0xb7, 0xf6, 0x59, 0x36, 0x16, 0xe6, + 0x05, 0x56, 0x89, 0xad, 0xfb, 0xa1, 0x80, 0x27, 0xaa, 0x2a, + 0x0d, 0x8d, 0x94, 0x2d, 0x1d, 0x95, 0xe6, 0x7d, 0x2c, 0x1a, + 0x67, 0x10, 0xc0, 0xd5, 0xff, 0x3f, 0x22, 0x6a, 0xd2, 0x30, + 0x2b, 0x86, 0x45, 0x1d, 0x64, 0x44, 0x59, 0x09, 0x6c, 0xa2, + 0xfd, 0x91, 0xf0, 0xf3, 0x35, 0x80, 0xc8, 0xd7, 0x9a, 0x58, + 0x62, 0x23, 0x7b, 0x38, 0xe3, 0x37, 0x5c, 0xbf, 0x8a, 0xf5, + 0x7d, 0xe5, 0x5c, 0x48, 0x70, 0xed, 0xd0, 0xd7, 0x3a, 0xd6, + 0xa1, 0x96, 0xf8, 0x59, 0x98, 0x11, 0x1f, 0x2b, 0x20, 0xf5, + 0xa6, 0x36, 0xc1, 0xf3, 0xc5, 0xb8, 0x2c, 0x50, 0xa8, 0x84, + 0x3f, 0x9d, 0x97, 0xf6, 0xba, 0xbb, 0xd2, 0x22, 0xda, 0x7e, + 0x5c, 0x85, 0xf3, 0xea, 0xd8, 0x2b, 0xd9, 0x75, 0x65, 0xf2, + 0x2d, 0xfb, 0x13, 0x50, 0x6c, 0x71, 0x21, 0xf4, 0xfa, 0xad, + 0x03, 0xf9, 0x81, 0x19, 0xff, 0xa7, 0x92, 0xe2, 0xbc, 0xf8, + 0xba, 0xc1, 0x39, 0x13, 0xd4, 0xae, 0x5a, 0x8e, 0x3d, 0x03, + 0x24, 0xd3, 0x4a, 0xae, 0x75, 0xbb, 0x59, 0x7a, 0xc1, 0x77, + 0x21, 0xb1, 0x52, 0x73, 0x9e, 0x70, 0x09, 0x44, 0xf3, 0xca, + 0x8c, 0x5e, 0x87, 0xff, 0xa1, 0x6d, 0x99, 0xbd, 0xf5, 0x6c, + 0x09, 0x72, 0x31, 0x67, 0x3e, 0xbf, 0x6b, 0x8c, 0xe9, 0x12, + 0x9e, 0x37, 0xa7, 0x63, 0x28, 0x8f, 0xd8, 0x3a, 0xdd, 0x01, + 0x55, 0x10, 0xa1, 0xfd, 0xcc, 0x73, 0x8e, 0x8d, 0x93, 0x61, + 0x46, 0xd5, 0x77, 0x8b, 0xdc, 0x48, 0x89, 0x0a, 0x0c, 0xc8, + 0x9e, 0xee, 0x26, 0xfe, 0x82, 0x74, 0x5b, 0xd9, 0x6b, 0x33, + 0x21, 0x7d, 0x60, 0xdc, 0x29, 0x5a, 0x80, 0xd6, 0x8c, 0x0b, + 0x74, 0xf0, 0x3b, 0x4f, 0xe1, 0xc6, 0x5c, 0x98, 0x3c, 0x94, + 0x59, 0xb7, 0x50, 0x01, 0xb6, 0xdd, 0xd5, 0x66, 0xc3, 0x16, + 0xad, 0x2f, 0xb2, 0x6c, 0x2c, 0x0f, 0x0a, 0xac, 0xd1, 0x99, + 0x35, 0x81, 0xc3, 0x4e, 0x97, 0x54, 0xe0, 0x89, 0xe4, 0x6b, + 0x44, 0x7f, 0xeb, 0x1a, 0xf0, 0x03, 0x19, 0xa4, 0xbc, 0xaa, + 0x86, 0x3a, 0x66, 0xbe, 0xb5, 0x50, 0x7d, 0x49, 0xcf, 0x27, + 0xac, 0xcc, 0xeb, 0x1b, 0xb4, 0x25, 0xc4, 0x70, 0xf8, 0xce, + 0xbc, 0x14, 0x8e, 0x83, 0x43, 0x79, 0x2b, 0x33, 0x4a, 0x76, + 0x2d, 0x98, 0x31, 0x1c, 0x76, 0xc4, 0x64, 0xbb, 0xf1, 0xe1, + 0xbe, 0x65, 0x3e, 0xec, 0x89, 0x87, 0xeb, 0xb8, 0x1e, 0xf5, + 0x43, 0xfa, 0xc9, 0xfc, 0xfd, 0x1b, 0x12, 0xff, 0x2e, 0x86, + 0x79, 0xbe, 0x04, 0xa6, 0x21, 0x25, 0x72, 0x3b, 0xc1, 0xf1, + 0xd2, 0xcb, 0x33, 0x94, 0xfb, 0xe4, 0x70, 0xa0, 0x8c, 0x0e, + 0xc9, 0x45, 0xf7, 0xdd, 0x9b, 0x1c, 0x63, 0x03, 0x02, 0x9d, + 0x84, 0x2d, 0xb0, 0x94, 0x3f, 0x16, 0x44, 0x7b, 0x4e, 0x77, + 0x5d, 0xd1, 0xe0, 0x8e, 0xf4, 0x82, 0x02, 0x9c, 0x1e, 0xae, + 0xc4, 0x73, 0xde, 0x1a, 0xdc, 0xc5, 0x78, 0x4b, 0x76, 0x3a, + 0x2c, 0x0c, 0x09, 0x7b, 0x77, 0xaa, 0xf4, 0xd7, 0x91, 0x65, + 0x48, 0x16, 0x4b, 0xbe, 0x33, 0xb1, 0xde, 0xea, 0x44, 0x90, + 0x7a, 0x7b, 0x71, 0x9e, 0x83, 0xf2, 0xda, 0xa4, 0x6e, 0x24, + 0xa5, 0x05, 0x06, 0x64, 0x4f, 0x77, 0x13, 0x7f, 0x41, 0x3a, + 0xcc, 0x8d, 0x69, 0xad, 0x92, 0x58, 0x90, 0xc9, 0x8e, 0xc3, + 0x03, 0xd2, 0x11, 0xf9, 0xa6, 0xab, 0xb1, 0x17, 0xb0, 0xd8, + 0xf7, 0xaa, 0xbd, 0x32, 0x9d, 0x93, 0x6f, 0xa3, 0x30, 0x0d, + 0x5c, 0x06, 0xb2, 0xee, 0xd5, 0xb7, 0x49, 0x2c, 0x48, 0x85, + 0x47, 0x80, 0xe0, 0x69, 0xe9, 0x9d, 0x53, 0xb4, 0xb9, 0xea, + 0xf6, 0x92, 0x23, 0xef, 0x1b, 0xe8, 0xb0, 0x30, 0x24, 0x2f, + 0x1f, 0xed, 0x56, 0xda, 0x01, 0x57, 0x7b, 0x49, 0xf0, 0x96, + 0xec, 0x74, 0x58, 0x18, 0x12, 0xf6, 0xee, 0x97, 0x2b, 0x6d, + 0xe1, 0xca, 0x41, 0x64, 0x7a, 0xd9, 0x0d, 0x0e, 0xb5, 0x66, + 0xad, 0x82, 0xe4, 0x4c, 0xd6, 0xfd, 0xab, 0x7d, 0xcb, 0x91, + 0x07, 0x3c, 0x51, 0x46, 0xc5, 0x8b, 0x7d, 0x55, 0xde, 0x9a, + 0x77, 0x6b, 0x53, 0x24, 0x95, 0x9c, 0x8b, 0x06, 0x3d, 0x60, + 0x40, 0x4b, 0xed, 0xe9, 0xa2, 0xa8, 0xec, 0x85, 0x57, 0xbb, + 0xaa, 0x01, 0x1c, 0xf0, 0x87, 0xdb, 0x92, 0x69, 0x37, 0x97, + 0xfe, 0x2d, 0x1f, 0x6f, 0x8f, 0x90, 0xe6, 0xe8, 0xf2, 0x04, + 0x97, 0x40, 0xc1, 0x72, 0xb6, 0x0f, 0x7d, 0x71, 0x09, 0x47, + 0xdb, 0xd2, 0x37, 0xa0, 0x1e, 0x62, 0xfc, 0xef, 0x0b, 0x03, + 0x93, 0x6e, 0x6d, 0xcb, 0x3d, 0x45, 0xb5, 0x88, 0x21, 0xbb, + 0xd9, 0xe6, 0xa3, 0x78, 0x50, 0x29, 0x47, 0x42, 0x6b, 0x82, + 0xd7, 0x35, 0x32, 0xe5, 0x42, 0xb5, 0x71, 0x0f, 0x85, 0xf0, + 0xa0, 0x52, 0x8e, 0x84, 0xd6, 0xc7, 0x6d, 0x6a, 0x64, 0x09, + 0xd7, 0x29, 0xfa, 0x09, 0xb8, 0x90, 0xe0, 0x19, 0x63, 0x6d, + 0x74, 0x6f, 0x81, 0xef, 0x33, 0xb2, 0xc2, 0xe3, 0x36, 0x5b, + 0x6f, 0xf9, 0xae, 0x07, 0x94, 0x47, 0x40, 0xad, 0xd0, 0x08, + 0x7b, 0xab, 0x74, 0x5a, 0xd7, 0x9e, 0x01, 0xf4, 0x19, 0xfc, + 0xbd, 0xe8, 0x14, 0x75, 0x39, 0xe3, 0x94, 0xad, 0xe2, 0x17, + 0x57, 0x4e, 0xb4, 0x6a, 0x4c, 0x83, 0x73, 0x07, 0x84, 0x56, + 0x6e, 0xf1, 0x0c, 0x62, 0x91, 0x63, 0x2e, 0x4c, 0x1e, 0x4a, + 0xcd, 0xba, 0x28, 0xe1, 0x5b, 0x8f, 0x8b, 0x33, 0x80, 0x0b, + 0x23, 0x25, 0x6a, 0xc3, 0x53, 0x6d, 0xf7, 0xb0, 0xc4, 0x46, + 0xf6, 0x70, 0x05, 0x6e, 0xb8, 0xbd, 0xc0, 0x7d, 0x85, 0x7e, + 0x9f, 0xec, 0x09, 0x9e, 0x17, 0x43, 0xdd, 0x5f, 0x02, 0x53, + 0xf1, 0xf3, 0x64, 0x20, 0x06, 0x75, 0x8d, 0x5c, 0x68, 0xbe, + 0x2f, 0xc8, 0x76, 0xe9, 0x66, 0x7e, 0x4e, 0x28, 0x0f, 0x13, + 0x27, 0x08, 0xed, 0x80, 0x41, 0xe4, 0xaf, 0x1e, 0xfa, 0xe2, + 0x12, 0x8e, 0x75, 0x67, 0x63, 0x0e, 0xa8, 0xe9, 0x26, 0x88, + 0xf0, 0x7b, 0xc9, 0xc6, 0xbd, 0x45, 0xba, 0x5f, 0x56, 0xec, + 0xa8, 0x9f, 0xaf, 0xd5, 0x77, 0xce, 0x35, 0xf0, 0xb4, 0x93, + 0x63, 0xdf, 0xcd, 0x34, 0x05, 0xc8, 0x55, 0xe1, 0x0e, 0x78, + 0xa2, 0x8c, 0x49, 0xd5, 0xfa, 0xaa, 0x7f, 0xf7, 0xee, 0xd6, + 0xa6, 0x48, 0xbd, 0x55, 0x63, 0x87, 0xa0, 0xa7, 0x7b, 0xee, + 0x43, 0xb9, 0x57, 0x1d, 0x9c, 0xd3, 0x4d, 0xd1, 0x9a, 0x8f, + 0xac, 0x0e, 0xd0, 0xe0, 0x01, 0xaf, 0x42, 0xf7, 0x58, 0x4a, + 0xfe, 0x0b, 0x22, 0xdc, 0x03, 0xd1, 0x0b, 0xd6, 0x88, 0xfe, + 0x15, 0x34, 0x23, 0x06, 0x32, 0x8b, 0xbb, 0x97, 0xcf, 0x74, + 0xc8, 0x40, 0x0c, 0xea, 0xd9, 0xb8, 0xd0, 0xbf, 0x5e, 0x53, + 0xec, 0x11, 0xcc, 0xfc, 0x9c, 0x50, 0xc4, 0x82, 0x20, 0x34, + 0xbc, 0xc6, 0x84, 0x6f, 0xd2, 0x4b, 0x24, 0x78, 0x65, 0xe5, + 0x26, 0x43, 0x6d, 0x52, 0x37, 0x12, 0xb3, 0xe3, 0x03, 0x32, + 0xc6, 0xda, 0xe8, 0xde, 0xc1, 0x1d, 0x66, 0xa7, 0x92, 0xb2, + 0x25, 0x9a, 0x96, 0xb4, 0xd8, 0x8e, 0x0b, 0xe7, 0x69, 0x04, + 0x30, 0xa4, 0x4f, 0x7f, 0x49, 0x59, 0xf3, 0x4d, 0x4b, 0x5a, + 0x6c, 0x47, 0xe4, 0x92, 0xd5, 0x02, 0x18, 0x52, 0xc6, 0xde, + 0x9f, 0x3f, 0xb1, 0xb7, 0x8b, 0x21, 0x3e, 0xf3, 0x27, 0xfd, + 0x0e, 0x14, 0xf0, 0x71, 0xb0, 0x40, 0x44, 0xd4, 0x67, 0x60, + 0x56, 0xcf, 0x8a, 0x3a, 0xc8, 0x88, 0xb2, 0x12, 0xd8, 0x87, + 0x39, 0xe1, 0x2d, 0x79, 0xf5, 0x38, 0xc6, 0x06, 0x04, 0xf9, + 0xcb, 0x5a, 0xa3, 0xeb, 0x7e, 0x2c, 0x88, 0xf6, 0x2f, 0xe7, + 0x46, 0x1d, 0x36, 0x13, 0xa3, 0x60, 0x48, 0x5e, 0x3e, 0x19, + 0xac, 0x77, 0x02, 0xae, 0x36, 0xef, 0xa6, 0x91, 0x84, 0x04, + 0xb9, 0xae, 0x33, 0x6c, 0xc2, 0xb2, 0x54, 0x89, 0xf0, 0xa4, + 0x15, 0xca, 0xcc, 0x52, 0xd7, 0x69, 0x4e, 0x1e, 0xf7, 0x2a, + 0x34, 0xc2, 0x51, 0xe7, 0x48, 0x19, 0x18, 0x47, 0x58, 0x7f, + 0xca, 0xfc, 0xa8, 0x63, 0xdb, 0x30, 0x53, 0xd2, 0x91, 0x32, + 0xb7, 0x26, 0x70, 0xa5, 0x72, 0xd4, 0x22, 0xde, 0x94, 0x0d, + 0x78, 0xe0, 0xed, 0x52, 0x5e, 0x55, 0x43, 0x1d, 0xfe, 0xaf, + 0xaa, 0x7b, 0x5d, 0xbc, 0x69, 0x11, 0x6d, 0x3f, 0x2e, 0xa3, + 0x98, 0x75, 0x6c, 0xf4, 0x2e, 0xa8, 0xfe, 0xee, 0x4e, 0xf8, + 0x11, 0xcd, 0xe8, 0x5c, 0x91, 0x60, 0xc5, 0xbb, 0x47, 0x82, + 0x5c, 0x93, 0x3f, 0x1f, 0x9c, 0x33, 0x22, 0x59, 0x13, 0xb8, + 0xe1, 0xc0, 0x49, 0xb5, 0x8e, 0xc7, 0xa1, 0xed, 0x9e, 0xb2, + 0x49, 0x71, 0x5e, 0x7c, 0x5d, 0x81, 0xfd, 0xe8, 0x6a, 0x57, + 0x2d, 0x47, 0xa6, 0xc3, 0x30, 0x2e, 0xe2, 0xa5, 0xc6, 0xb9, + 0xbb, 0x8f, 0x36, 0x44, 0xb6, 0x76, 0x35, 0x83, 0xea, 0x2a, + 0xde, 0xda, 0xf2, 0x3e, 0x95, 0xa2, 0x3a, 0x17, 0xb5, 0x18, + 0xa0, 0x5e, 0x61, 0xc1, 0x1b, 0x96, 0x53, 0xa9, 0x42, 0x02, + 0xbd, 0x57, 0xf8, 0x36, 0x61, 0x59, 0x2a, 0xa5, 0x78, 0x52, + 0x90, 0x2c, 0x96, 0xbf, 0x66, 0xa1, 0x7f, 0x17, 0x88, 0xe3, + 0xf4, 0xf6, 0xe2, 0xff, 0xc5, 0x27, 0xa4, 0x5d, 0x83, 0x0b, + 0x12, 0xb0, 0x61, 0x20, 0x38, 0x8b, 0xab, 0xb6, 0x64, 0x2d, + 0xbf, 0xdb, 0x68, 0xe2, 0x2a, 0xab, 0xe8, 0x22, 0x3c, 0x6e, + 0xa3, 0xd0, 0xbe, 0x80, 0xcf, 0x67, 0xf4, 0x3b, 0x57, 0x7f, + 0xbd, 0x5d, 0x52, 0x99, 0xee, 0x4c, 0x79, 0xae, 0xe2, 0x05, + 0x3c, 0x8d, 0x2c, 0x10, 0xfd, 0x7e, 0xa1, 0xad, 0xd5, 0x42, + 0x7c, 0x25, 0x4e, 0x39, 0x1c, 0x28, 0x23, 0xe2, 0xa3, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x3e, 0xad, 0x47, + 0x0c, 0xfa, 0xac, 0x9a, 0x10, 0x6a, 0xf0, 0x39, 0xef, 0x1e, + 0x3f, 0xd0, 0x4b, 0xc7, 0x40, 0x68, 0xbb, 0x4f, 0xcb, 0xde, + 0x67, 0x96, 0x48, 0xf0, 0xca, 0x09, 0x4c, 0x86, 0x47, 0x05, + 0x6c, 0xb6, 0xde, 0x31, 0x9f, 0x0e, 0xeb, 0x8e, 0x80, 0x99, + 0x63, 0x10, 0xf6, 0x95, 0xa2, 0x3c, 0x95, 0x64, 0xc1, 0x8f, + 0x4b, 0x48, 0x7e, 0x87, 0xcf, 0x63, 0xd1, 0xc0, 0xe2, 0x33, + 0x83, 0x87, 0x4c, 0x82, 0x62, 0xf7, 0x1b, 0x61, 0x39, 0xc5, + 0xa4, 0xe1, 0x06, 0xf5, 0xd0, 0xd6, 0x7c, 0x67, 0x5e, 0x0a, + 0x47, 0xa0, 0xc0, 0xdd, 0xf4, 0xf8, 0x25, 0x3b, 0xf7, 0x4c, + 0xf9, 0x0e, 0xd2, 0x99, 0xe7, 0xb0, 0xe3, 0x51, 0xdf, 0x45, + 0x06, 0x67, 0x22, 0x31, 0x8f, 0x95, 0xa1, 0x2e, 0x13, 0xab, + 0xda, 0x3d, 0x04, 0x56, 0x64, 0x76, 0xb1, 0x26, 0x50, 0x17, + 0xe4, 0x0a, 0x15, 0xf1, 0x7e, 0xf9, 0xed, 0x2f, 0xb7, 0xb5, + 0x67, 0x44, 0x77, 0xfc, 0xb8, 0xc9, 0x25, 0x17, 0x73, 0x56, + 0x3e, 0xd2, 0x2f, 0x05, 0xc2, 0x50, 0x60, 0x8f, 0x7a, 0x7c, + 0xf3, 0xfc, 0x9a, 0x26, 0x9d, 0x07, 0x7a, 0x06, 0x48, 0x65, + 0x94, 0x9f, 0xea, 0xb5, 0xb2, 0xf4, 0x41, 0xee, 0x42, 0xa1, + 0xa4, 0xe6, 0x84, 0xa9, 0xe2, 0x1e, 0xc9, 0x23, 0x83, 0xa4, + 0xdf, 0xcb, 0x6f, 0x4d, 0xda, 0xd4, 0xc8, 0x12, 0x16, 0x1b, + 0xc7, 0x84, 0x5f, 0x97, 0x5b, 0x2a, 0xd4, 0x2c, 0x06, 0x49, + 0xea, 0x70, 0x87, 0x6d, 0xd1, 0x48, 0xec, 0x66, 0x6b, 0xaf, + 0xca, 0x71, 0x25, 0x61, 0x10, 0xba, 0x34, 0x02, 0x6e, 0x5a, + 0xb1, 0x97, 0x4f, 0x59, 0xc5, 0xd9, 0x2f, 0x3e, 0xcf, 0xa1, + 0x9f, 0x74, 0x35, 0xca, 0xf7, 0xc2, 0x0c, 0xc2, 0x2c, 0xde, + 0x65, 0x7e, 0x54, 0xd0, 0x8c, 0x18, 0xc8, 0x69, 0xa9, 0x19, + 0xba, 0x13, 0x29, 0x86, 0x50, 0x72, 0xe5, 0x2c, 0x89, 0x08, + 0x0e, 0x52, 0x5a, 0xcc, 0x19, 0x9a, 0x5f, 0x46, 0x06, 0x61, + 0x16, 0x6f, 0xd3, 0x3f, 0x2a, 0x68, 0x46, 0x0c, 0x64, 0xd5, + 0xb5, 0xed, 0x5d, 0xe8, 0x2c, 0x36, 0x4d, 0xcb, 0xbe, 0xed, + 0xb6, 0x54, 0x6b, 0x58, 0x0c, 0x92, 0x17, 0xe0, 0xcd, 0xda, + 0x2a, 0x57, 0x5b, 0xa4, 0x6d, 0xd2, 0x9c, 0x3c, 0x2d, 0x54, + 0x68, 0x47, 0xa2, 0x0d, 0x90, 0x32, 0xcd, 0xf0, 0x11, 0x53, + 0x82, 0x79, 0xef, 0xe3, 0x3b, 0x59, 0xba, 0x4f, 0xc2, 0x86, + 0x0e, 0xcc, 0x07, 0x2e, 0xae, 0x9c, 0xab, 0xd4, 0x98, 0xc5, + 0xe6, 0x0e, 0xcb, 0xac, 0xdc, 0x21, 0x18, 0xc4, 0x10, 0x7a, + 0xd1, 0xeb, 0x8c, 0xa8, 0x71, 0x42, 0x92, 0x20, 0x62, 0x9c, + 0x5f, 0x9d, 0xda, 0x85, 0x08, 0x3d, 0x89, 0x94, 0x46, 0x54, + 0xd9, 0x21, 0x49, 0x10, 0x31, 0x4e, 0xce, 0xaf, 0x6d, 0xa3, + 0xf9, 0x81, 0x04, 0xe7, 0xf6, 0x68, 0xf1, 0xd4, 0x8b, 0x31, + 0xe5, 0x0f, 0x44, 0x54, 0x74, 0x30, 0x11, 0x35, 0x69, 0x18, + 0xf4, 0x43, 0xc3, 0xef, 0x32, 0x22, 0xcd, 0xe5, 0x36, 0x51, + 0x9f, 0xa9, 0x28, 0xc9, 0xe8, 0x81, 0x9d, 0xc7, 0x3b, 0xa5, + 0xae, 0x50, 0xf5, 0xb5, 0x70, 0x56, 0x1a, 0x6a, 0xeb, 0x65, + 0x66, 0x29, 0x8a, 0xd5, 0x27, 0x0f, 0x9a, 0x15, 0x1a, 0x61, + 0xc9, 0x92, 0x24, 0xed, 0x87, 0x78, 0xe9, 0xc8, 0x41, 0xdd, + 0x96, 0x90, 0xfc, 0xcd, 0x5d, 0xc6, 0x61, 0x43, 0x07, 0x66, + 0xf1, 0xbc, 0x8d, 0x73, 0xb0, 0x3c, 0x28, 0xf5, 0xc2, 0x21, + 0xd4, 0x41, 0x8a, 0xfb, 0x19, 0x93, 0xc6, 0x1c, 0x93, 0x11, + 0x4c, 0xd3, 0x23, 0xf6, 0x51, 0x4f, 0xb9, 0x8a, 0xb7, 0xbe, + 0xac, 0x1b, 0xb5, 0x68, 0xea, 0x13, 0xe6, 0xf3, 0xa2, 0xcf, + 0x0a, 0xa9, 0x66, 0x53, 0x52, 0x7c, 0x20, 0x72, 0x6f, 0xcc, + 0x84, 0x37, 0x43, 0xf6, 0xa4, 0xab, 0x45, 0xde, 0x75, 0x2c, + 0x13, 0x46, 0xec, 0xff, 0xcc, 0xbf, 0xa9, 0xa0, 0xfa, 0x92, + 0x5d, 0x4e, 0x9b, 0x5b, 0x15, 0x36, 0xab, 0x4a, 0x4b, 0xe0, + 0x34, 0x71, 0x15, 0xb4, 0x74, 0x11, 0x1e, 0x37, 0xb0, 0x68, + 0x5f, 0x40, 0x86, 0xd2, 0x7a, 0xfc, 0x1c, 0xb8, 0xfd, 0x35, + 0xe9, 0xd6, 0x25, 0x92, 0x1e, 0x38, 0xaa, 0xf5, 0xf6, 0x84, + 0x60, 0x96, 0x4d, 0xa6, 0x56, 0x07, 0x68, 0x70, 0xe1, 0xb6, + 0x21, 0x9a, 0x2c, 0x25, 0x7f, 0xe4, 0x11, 0x6e, 0xf3, 0x22, + 0x3e, 0x56, 0x40, 0x29, 0x8f, 0x6c, 0x41, 0x25, 0x49, 0xb3, + 0x58, 0xa0, 0x93, 0xcb, 0x96, 0x4d, 0x80, 0xd0, 0xb5, 0x9e, + 0x55, 0x7f, 0xce, 0xef, 0x90, 0x23, 0x57, 0x12, 0x98, 0xcf, + 0x05, 0xb0, 0x1d, 0xb9, 0x5b, 0xc1, 0x3f, 0x5c, 0x65, 0x0a, + 0x56, 0x5e, 0x0e, 0x7a, 0x92, 0x9c, 0x61, 0x90, 0x1b, 0xcc, + 0xd6, 0x9d, 0x57, 0xe2, 0x4a, 0xc2, 0x20, 0xb7, 0x68, 0x04, + 0xdc, 0xb4, 0x59, 0x23, 0x22, 0xa6, 0xc7, 0xf2, 0x1d, 0x05, + 0x76, 0xb2, 0xb7, 0x9e, 0x47, 0xcf, 0x1c, 0x5b, 0x86, 0x37, + 0x51, 0x3b, 0x39, 0x36, 0x24, 0x3d, 0x5c, 0xcf, 0xf2, 0xbf, + 0x08, 0x8f, 0x42, 0x4a, 0x88, 0x6b, 0xce, 0xc0, 0xac, 0x5d, + 0xd7, 0x74, 0x53, 0xd3, 0xa7, 0x24, 0x73, 0xcd, 0x72, 0x01, + 0xb3, 0x09, 0xfc, 0x7c, 0x35, 0xcc, 0x88, 0xa7, 0x4c, 0xa5, + 0x02, 0x86, 0xe7, 0x91, 0x7d, 0x9a, 0x89, 0x24, 0x76, 0x33, + 0xd4, 0xb6, 0x65, 0xd9, 0xf3, 0xd1, 0x08, 0x5d, 0x1a, 0x01, + 0x37, 0x2d, 0xfc, 0x31, 0x19, 0x5e, 0xad, 0xa9, 0xce, 0x88, + 0xee, 0x3b, 0xb3, 0x51, 0x4a, 0x2e, 0xe6, 0xac, 0xab, 0x4e, + 0xa4, 0x03, 0xff, 0x30, 0x20, 0xc4, 0x97, 0x95, 0x51, 0x54, + 0x76, 0xa3, 0xca, 0xbc, 0x53, 0x80, 0x18, 0x17, 0x71, 0xb3, + 0x63, 0xbd, 0xbc, 0xa6, 0x1b, 0x22, 0x5b, 0x3b, 0xfb, 0xa0, + 0xb4, 0x27, 0x52, 0xe0, 0x9e, 0x18, 0x10, 0x62, 0xaa, 0xab, + 0xc9, 0x2a, 0x3b, 0xb0, 0x65, 0x5e, 0xe3, 0x58, 0xef, 0xbd, + 0xcc, 0x81, 0xfe, 0x2e, 0xd3, 0x05, 0x2b, 0x2f, 0x07, 0x3d, + 0x49, 0x4e, 0xce, 0x21, 0x1a, 0x85, 0x0a, 0x87, 0xfa, 0xd7, + 0x18, 0x5f, 0x88, 0xc4, 0x79, 0x11, 0xc1, 0xb8, 0x52, 0xcf, + 0xa0, 0xe4, 0x09, 0x58, 0xd1, 0x10, 0x1c, 0xa4, 0xb4, 0x5b, + 0x32, 0xf7, 0xbe, 0x8c, 0x8c, 0x94, 0x6b, 0x8a, 0x8f, 0x77, + 0x5a, 0x85, 0x96, 0xdb, 0x5e, 0x03, 0x14, 0x7b, 0xa5, 0xb1, + 0x3a, 0x2d, 0x8a, 0x4f, 0xe1, 0x7a, 0xed, 0x7e, 0xbf, 0x74, + 0x0a, 0xdb, 0xfd, 0x90, 0x4a, 0xb7, 0xca, 0xde, 0xbf, 0xcf, + 0x29, 0xad, 0x77, 0x26, 0xdd, 0x57, 0x71, 0xe3, 0x1e, 0xa7, + 0x16, 0x08, 0x54, 0xae, 0xb6, 0x8b, 0xda, 0x67, 0xfb, 0x78, + 0x5a, 0xa8, 0xd0, 0x8e, 0x87, 0x1a, 0xe3, 0x64, 0xa7, 0x8c, + 0x88, 0xdd, 0x9a, 0x4e, 0x74, 0x14, 0x1b, 0x8d, 0x99, 0x3d, + 0xdf, 0xba, 0x70, 0xaf, 0x99, 0x5e, 0xa7, 0xd8, 0x58, 0x1e, + 0x14, 0x9b, 0x61, 0xf1, 0x6a, 0xc1, 0x45, 0x9c, 0xed, 0xa8, + 0x0a, 0xa3, 0x3a, 0xb1, 0xb6, 0x41, 0x7e, 0xb8, 0xca, 0x14, + 0xac, 0xbc, 0x1c, 0xf4, 0xe7, 0xfb, 0x40, 0x2b, 0xc2, 0x2a, + 0x75, 0xe5, 0x07, 0xcb, 0x0d, 0x80, 0x4b, 0x35, 0xbf, 0x31, + 0xee, 0x51, 0x02, 0x9e, 0xb3, 0x25, 0xf0, 0x15, 0xa7, 0x99, + 0x83, 0x04, 0x9d, 0xf2, 0xd2, 0x5b, 0x8a, 0x58, 0x5b, 0xbd, + 0x91, 0x83, 0x37, 0xe7, 0xba, 0x9c, 0xf5, 0xb6, 0x2a, 0x6c, + 0x95, 0x94, 0x96, 0x03, 0xbc, 0x1a, 0xdb, 0x74, 0xd8, 0x4c, + 0xc9, 0x43, 0xe3, 0xbb, 0xf8, 0x64, 0xf5, 0x1f, 0x08, 0xfd, + 0x78, 0x98, 0xfb, 0x40, 0x64, 0x8a, 0x4d, 0x2c, 0x31, 0xf0, + 0xdc, 0x1c, 0x90, 0xfa, 0x2e, 0xbe, 0x79, 0xd7, 0x43, 0xb3, + 0x1c, 0x61, 0xff, 0x81, 0x91, 0xf2, 0x73, 0x65, 0xf9, 0x36, + 0x6b, 0x92, 0xf5, 0x43, 0x28, 0x39, 0x93, 0x16, 0xa5, 0x04, + 0x07, 0x29, 0x2d, 0x66, 0xed, 0x4d, 0xce, 0x23, 0xa9, 0xd0, + 0x17, 0x26, 0x0f, 0x25, 0x87, 0x5d, 0x14, 0x91, 0xcc, 0xa6, + 0xa4, 0xf8, 0x40, 0xe4, 0xec, 0x4b, 0xc8, 0xb5, 0x21, 0x01, + 0xbf, 0xca, 0x7c, 0x1b, 0xd1, 0xcd, 0x15, 0xb3, 0x3c, 0x29, + 0x7d, 0x28, 0xe6, 0xf9, 0x3f, 0x4b, 0x72, 0x70, 0x54, 0xfa, + 0x8a, 0x42, 0x9e, 0x80, 0xbc, 0x22, 0x45, 0x9b, 0xdf, 0x93, + 0x2e, 0x24, 0x38, 0x97, 0x68, 0x8a, 0x1d, 0x6b, 0xb1, 0x4b, + 0x7c, 0xcd, 0x3c, 0x4c, 0x9c, 0x20, 0x32, 0x45, 0xc7, 0x16, + 0xf9, 0x78, 0x6e, 0x0e, 0x48, 0x7d, 0x17, 0x5f, 0x65, 0x6f, + 0xbe, 0x86, 0xf5, 0xb7, 0xda, 0x13, 0x8f, 0xca, 0xd9, 0x90, + 0x0f, 0xb2, 0x0b, 0x04, 0x01, 0x4f, 0xb8, 0xf3, 0x78, 0xeb, + 0xb2, 0xad, 0xa0, 0x02, 0xaf, 0x79, 0x69, 0xcc, 0x45, 0x2c, + 0x24, 0x0b, 0xc4, 0x5f, 0xf8, 0xb9, 0x6f, 0x75, 0x22, 0x48, + 0x3d, 0xdc, 0xd9, 0x4f, 0xa0, 0x79, 0x5f, 0x42, 0x34, 0xc9, + 0x14, 0xcd, 0x37, 0x6d, 0x30, 0xbe, 0xd3, 0x4b, 0xf2, 0x22, + 0x41, 0xb3, 0x7f, 0xb6, 0x55, 0xdc, 0xcf, 0x5e, 0xd5, 0xe9, + 0xd7, 0xfe, 0x17, 0xb0, 0x4c, 0xdb, 0x36, 0x7a, 0x20, 0xf4, + 0x61, 0x15, 0xdb, 0x93, 0xe2, 0x84, 0xe7, 0x40, 0xc4, 0xfb, + 0xbe, 0xf9, 0x77, 0xc9, 0xae, 0xfe, 0xb9, 0xba, 0xa4, 0xf1, + 0x1f, 0x98, 0xf2, 0x9f, 0x07, 0x0a, 0x78, 0xd9, 0x58, 0x20, + 0x5e, 0x0d, 0x8c, 0x3a, 0x6c, 0x26, 0x85, 0xc0, 0x90, 0xbc, + 0x7c, 0x32, 0x9b, 0xee, 0x04, 0x9f, 0xaf, 0xb1, 0x01, 0x49, + 0xdc, 0x1a, 0xad, 0x35, 0x52, 0x9d, 0xa8, 0x73, 0x11, 0x15, + 0x1d, 0x0c, 0xd0, 0x07, 0x54, 0x95, 0x13, 0x44, 0x78, 0xdc, + 0x85, 0x63, 0xbf, 0xc3, 0x5d, 0xce, 0x2b, 0x76, 0xb2, 0x46, + 0x44, 0x8f, 0x4d, 0x27, 0x3a, 0x0a, 0xec, 0xa7, 0xad, 0xff, + 0x8e, 0x5d, 0x38, 0xb6, 0x8f, 0x45, 0x60, 0x5c, 0x07, 0x89, + 0x4f, 0xb1, 0xb5, 0xdd, 0x6c, 0x88, 0xaf, 0xec, 0x6a, 0xc5, + 0x27, 0xda, 0xcf, 0x89, 0x70, 0x47, 0x7a, 0x41, 0x01, 0x4e, + 0x0f, 0x57, 0x62, 0xd8, 0x6f, 0x0d, 0x8d, 0xdb, 0xd3, 0x79, + 0xf7, 0x9c, 0xe8, 0x28, 0x36, 0xd9, 0xf1, 0x7a, 0x7d, 0xb7, + 0xe0, 0x9d, 0x4c, 0xe9, 0xee, 0xf4, 0x10, 0x9b, 0x53, 0x1b, + 0x81, 0x98, 0x83, 0x5c, 0x16, 0x28, 0x54, 0x42, 0xd4, 0xf8, + 0xf1, 0xdf, 0x30, 0x6e, 0xf5, 0x2d, 0x40, 0x6b, 0x46, 0xe4, + 0x3a, 0x78, 0xfc, 0xc6, 0xfa, 0x50, 0x0f, 0x31, 0x7e, 0x96, + 0xe4, 0xe0, 0xa8, 0x37, 0xd7, 0x84, 0xff, 0xc3, 0xbb, 0x44, + 0xf2, 0x6d, 0x86, 0xa5, 0x38, 0xc2, 0x3d, 0xc1, 0xe1, 0x27, + 0xe6, 0xca, 0x31, 0x6c, 0xd6, 0xe7, + }, + { + /* 1 */ + 0x2f, 0x36, 0x58, 0xea, 0xa2, 0x0c, 0x25, 0xcf, 0x7c, 0xd9, + 0x9e, 0x49, 0x92, 0xd3, 0x50, 0x36, 0x48, 0x33, 0xd6, 0x3a, + 0x7e, 0x8c, 0x82, 0xb8, 0xf4, 0x6c, 0x87, 0xe4, 0x0b, 0xa6, + 0x9f, 0x33, 0x5c, 0x9c, 0xe9, 0x76, 0x65, 0xa2, 0xaf, 0xd9, + 0x01, 0x72, 0x0a, 0x54, 0xa8, 0x81, 0x94, 0x9c, 0x0c, 0x65, + 0x15, 0x85, 0x09, 0x1a, 0x1b, 0x9e, 0x53, 0x0a, 0x7b, 0xd1, + 0x61, 0x1d, 0xb8, 0x65, 0x3b, 0x99, 0x67, 0xa6, 0xb9, 0x22, + 0x08, 0xae, 0x89, 0xc7, 0x13, 0xf9, 0x31, 0xf4, 0x5b, 0x99, + 0x62, 0x5e, 0xf1, 0xc3, 0xaa, 0x6a, 0x3d, 0xfe, 0x24, 0x53, + 0xab, 0x81, 0xc1, 0x0c, 0xbd, 0x5e, 0xe7, 0xef, 0x6c, 0x2a, + 0x3c, 0xc2, 0x44, 0x6e, 0x67, 0x75, 0x70, 0x59, 0xb2, 0xd6, + 0x51, 0xef, 0x42, 0x85, 0x28, 0x1c, 0x92, 0x9b, 0x75, 0x69, + 0x6f, 0x63, 0x20, 0xbc, 0xbb, 0x54, 0x7b, 0x85, 0x61, 0xd6, + 0x65, 0x73, 0x39, 0x8d, 0x4b, 0x38, 0x40, 0xb0, 0xc5, 0x24, + 0x48, 0x9a, 0x93, 0xd6, 0x1a, 0x3a, 0x73, 0xa8, 0xf0, 0x8e, + 0xd3, 0x7b, 0x5f, 0x17, 0x03, 0xa7, 0x8d, 0xde, 0x87, 0x3a, + 0xf9, 0xf6, 0xad, 0x40, 0xcb, 0xfb, 0x9e, 0xde, 0x09, 0x64, + 0x5a, 0xb1, 0xa1, 0x03, 0xbe, 0xf6, 0x12, 0x7c, 0xd4, 0xef, + 0xfe, 0x23, 0xc1, 0x2e, 0x3d, 0x1b, 0x51, 0x39, 0x72, 0xc8, + 0x57, 0x7c, 0x80, 0xea, 0xe2, 0xfa, 0xe0, 0x42, 0xe3, 0x19, + 0xef, 0xc0, 0x69, 0xf4, 0x2b, 0xa3, 0x9e, 0xea, 0x82, 0x1a, + 0xbb, 0x9b, 0x02, 0xf8, 0x06, 0x9d, 0x16, 0xc3, 0x9c, 0x32, + 0x64, 0x47, 0xaa, 0x1a, 0x25, 0x80, 0xa6, 0xcc, 0x4e, 0x1b, + 0xd2, 0x1e, 0xe7, 0xd6, 0x39, 0x11, 0x22, 0x21, 0xb4, 0x80, + 0xe2, 0xb4, 0x13, 0x39, 0x4a, 0x28, 0xde, 0xe7, 0xcb, 0x93, + 0xc2, 0x75, 0xea, 0xaf, 0x23, 0xb4, 0x06, 0xd3, 0xeb, 0xa3, + 0xe5, 0x0d, 0xec, 0x4f, 0xc8, 0x05, 0xdc, 0x89, 0xd1, 0xef, + 0x5c, 0xd3, 0x24, 0xf8, 0x6b, 0x1d, 0x3f, 0x46, 0x41, 0x5c, + 0x7a, 0x36, 0xa2, 0x72, 0xe4, 0x53, 0xae, 0xf8, 0x40, 0x75, + 0x71, 0x7d, 0x70, 0x21, 0x90, 0xed, 0x96, 0x60, 0xd5, 0x7a, + 0xf4, 0xb0, 0x4f, 0x75, 0x8a, 0x5c, 0x1c, 0xdc, 0x0c, 0x55, + 0x14, 0xc8, 0x74, 0xcf, 0xce, 0xac, 0x9b, 0x51, 0x7a, 0x5c, + 0xd5, 0x48, 0x61, 0x1a, 0xfa, 0x10, 0xcd, 0xd7, 0x11, 0x5e, + 0xaa, 0x5d, 0xba, 0x46, 0xc0, 0x48, 0x77, 0x89, 0x03, 0x5e, + 0xc0, 0x19, 0x83, 0xdd, 0x4c, 0xad, 0xbd, 0x52, 0xa4, 0x59, + 0xac, 0x89, 0x6c, 0xcb, 0xbd, 0x27, 0x41, 0xca, 0xc3, 0xe4, + 0x8e, 0x5a, 0x25, 0x96, 0xef, 0xf5, 0x31, 0xcb, 0xec, 0x21, + 0x5f, 0xdd, 0xa1, 0x88, 0x20, 0xfd, 0x61, 0x9a, 0x4c, 0x62, + 0xc4, 0x56, 0xaf, 0x21, 0xda, 0xa5, 0xe0, 0x2f, 0x60, 0xed, + 0xa0, 0x8f, 0x26, 0xb7, 0xbf, 0x29, 0x52, 0xcd, 0x56, 0xa5, + 0xa9, 0x0f, 0x51, 0xb3, 0xa7, 0x43, 0x2a, 0x99, 0x5b, 0x1c, + 0x2b, 0x34, 0x68, 0x9f, 0x92, 0x0f, 0xd8, 0x55, 0xb9, 0x4e, + 0x82, 0x57, 0x45, 0x0b, 0xdf, 0xb4, 0x4a, 0xef, 0x1d, 0x29, + 0x62, 0x55, 0x74, 0x01, 0x97, 0xee, 0x53, 0xfe, 0xf5, 0x1b, + 0x28, 0x4e, 0xd3, 0xf7, 0x2d, 0xcf, 0x82, 0x01, 0xb1, 0xc5, + 0x7b, 0x7a, 0xb5, 0x77, 0x1c, 0x66, 0xfd, 0x08, 0xdd, 0x55, + 0xaa, 0xa5, 0x21, 0xc5, 0xc8, 0xd9, 0x34, 0xc0, 0x9e, 0xce, + 0x61, 0xa1, 0x1b, 0xac, 0xee, 0x10, 0x20, 0x05, 0x01, 0xd9, + 0x85, 0xb1, 0x9d, 0xe9, 0x96, 0xa8, 0x79, 0x90, 0x43, 0x26, + 0xdb, 0xd8, 0x73, 0xda, 0xec, 0xb1, 0xa7, 0x9a, 0x1d, 0x57, + 0x4c, 0xe3, 0xd4, 0x83, 0xf1, 0x15, 0xa5, 0x23, 0x46, 0x66, + 0x1e, 0x9a, 0x92, 0x96, 0x36, 0x15, 0x1e, 0x61, 0x22, 0x37, + 0xd2, 0xdb, 0x38, 0xcd, 0x59, 0x6b, 0xc9, 0x96, 0xde, 0x86, + 0x52, 0xed, 0x67, 0x5a, 0xa9, 0x44, 0x17, 0xb1, 0x96, 0x66, + 0xcc, 0xc6, 0x3e, 0x86, 0x43, 0xfd, 0xe5, 0xcd, 0xe3, 0xc6, + 0xe6, 0x2b, 0xf2, 0x83, 0xbb, 0xdf, 0x7d, 0x26, 0x61, 0xfd, + 0x38, 0x11, 0xf3, 0x16, 0x2a, 0xc5, 0x7e, 0x68, 0xed, 0x24, + 0x7d, 0x5c, 0xb8, 0x62, 0x75, 0x11, 0x27, 0x70, 0xff, 0xad, + 0xac, 0xa1, 0x37, 0x9a, 0x1e, 0xd5, 0xcc, 0xd7, 0x6d, 0xc5, + 0x80, 0x70, 0xee, 0xd1, 0x06, 0xbc, 0x43, 0x32, 0xc5, 0x79, + 0x98, 0x99, 0xb9, 0xa4, 0x8b, 0xb2, 0x9b, 0xd1, 0xd0, 0x13, + 0x1e, 0x09, 0x8c, 0xfa, 0x57, 0x5e, 0xbd, 0xb8, 0x18, 0x71, + 0xe2, 0x3f, 0xb2, 0x13, 0x73, 0xaa, 0xb1, 0x9c, 0xc7, 0xae, + 0x8a, 0x16, 0x7d, 0xab, 0x94, 0x1d, 0x3a, 0x52, 0xc4, 0xaa, + 0xb2, 0x4d, 0xef, 0xca, 0x26, 0x90, 0x6a, 0xa0, 0x99, 0xeb, + 0xb3, 0xf0, 0x23, 0x33, 0x0f, 0x4d, 0xfb, 0x06, 0xf4, 0x21, + 0x29, 0x41, 0x7b, 0x5a, 0xf0, 0x67, 0xaf, 0x77, 0xee, 0xe7, + 0x8a, 0x06, 0x10, 0x8c, 0x8d, 0x8e, 0x1c, 0x99, 0x24, 0xaa, + 0xc4, 0x18, 0xa4, 0xff, 0x3d, 0x2c, 0x63, 0x8c, 0xe6, 0x97, + 0xa1, 0xfb, 0x4d, 0x9f, 0xd7, 0x2c, 0xfa, 0x95, 0xeb, 0x3a, + 0x74, 0xa4, 0x4b, 0x97, 0x0b, 0xce, 0x33, 0xf7, 0x9d, 0x4a, + 0x64, 0x93, 0x06, 0xef, 0x3c, 0x3b, 0x76, 0x80, 0xfe, 0xce, + 0x98, 0x20, 0xc8, 0x33, 0xf2, 0x76, 0xd5, 0xe6, 0x49, 0xd4, + 0x9f, 0x95, 0xe9, 0x99, 0x2d, 0x20, 0xb6, 0x6e, 0x5d, 0x08, + 0x21, 0x27, 0x63, 0x6b, 0xa8, 0xed, 0x9a, 0xbf, 0xbd, 0x38, + 0x67, 0x6e, 0x11, 0xf4, 0x40, 0x5f, 0x6d, 0xc4, 0xb7, 0xe8, + 0x59, 0xf8, 0x3f, 0x9c, 0xfb, 0x5e, 0x79, 0xf4, 0xbd, 0xa0, + 0x6e, 0xff, 0xbc, 0x6d, 0x07, 0xf8, 0xae, 0x02, 0xa6, 0x84, + 0xcb, 0xb8, 0x99, 0xa0, 0x0f, 0xed, 0x81, 0x35, 0x9a, 0xfd, + 0x6d, 0x58, 0x37, 0xe9, 0x15, 0x74, 0xe8, 0x8b, 0x96, 0xed, + 0xf3, 0x40, 0x53, 0x66, 0x27, 0xec, 0x69, 0x0f, 0x92, 0x6b, + 0xfd, 0xe9, 0x11, 0xf1, 0x5a, 0x40, 0x5d, 0xe4, 0x24, 0xa7, + 0x14, 0xff, 0x3c, 0x9b, 0x9c, 0x92, 0x91, 0x37, 0x6e, 0xf3, + 0x8e, 0xe4, 0xbf, 0x50, 0x37, 0x9e, 0x5e, 0xd7, 0xe2, 0x7c, + 0x57, 0x01, 0x53, 0x42, 0x84, 0x5c, 0xad, 0x50, 0x47, 0xde, + 0x57, 0x0f, 0xe4, 0x71, 0xef, 0xe0, 0xc3, 0x85, 0x92, 0x90, + 0xe3, 0x2d, 0x09, 0xde, 0x2e, 0x4e, 0x95, 0x3b, 0xd3, 0x51, + 0xb6, 0x8d, 0xe1, 0x39, 0x05, 0x2a, 0x54, 0xa1, 0x4a, 0x4e, + 0xc1, 0xe7, 0x5e, 0x56, 0xe1, 0x3e, 0xe0, 0xb6, 0xe4, 0x40, + 0x27, 0xed, 0x19, 0x61, 0xcb, 0xe7, 0xd6, 0xc0, 0xf5, 0xaa, + 0x69, 0xf7, 0xbb, 0x11, 0x75, 0xbd, 0xc4, 0xf8, 0x33, 0xd0, + 0xee, 0xc0, 0x21, 0xa3, 0x14, 0x0e, 0x49, 0xac, 0xdb, 0xd5, + 0xd6, 0xd0, 0x10, 0x5e, 0xbc, 0x2a, 0xdc, 0xa3, 0x23, 0x53, + 0x4d, 0x6f, 0xab, 0x16, 0x3e, 0x51, 0x2f, 0xd3, 0xe5, 0x98, + 0xf3, 0xce, 0xe8, 0x53, 0xf4, 0xeb, 0x75, 0x14, 0xb3, 0xbc, + 0x16, 0x02, 0xc7, 0x8e, 0xba, 0x03, 0x06, 0x6c, 0x1c, 0xeb, + 0x6e, 0x3b, 0xe4, 0x46, 0xa3, 0x70, 0x26, 0x60, 0x77, 0x59, + 0xd0, 0x50, 0xa0, 0x11, 0x05, 0x3b, 0x8e, 0x7f, 0xae, 0x1e, + 0x0b, 0xe2, 0x1d, 0x03, 0x45, 0xc9, 0xe7, 0xe3, 0x05, 0x5a, + 0x12, 0x7f, 0xc0, 0x9f, 0x93, 0x87, 0x90, 0x63, 0x73, 0xf4, + 0x79, 0xa0, 0xbc, 0x8e, 0xdf, 0x13, 0xd1, 0x9f, 0x90, 0x66, + 0x6f, 0x74, 0xfc, 0xdb, 0xc7, 0xb3, 0x2b, 0xd8, 0xcd, 0x0b, + 0x16, 0x8f, 0xfd, 0x66, 0xf5, 0x93, 0xb8, 0xc5, 0xc2, 0xe1, + 0x85, 0x40, 0x5a, 0x6e, 0x21, 0x60, 0xc0, 0x1e, 0x06, 0x93, + 0x5a, 0x4f, 0x02, 0xd5, 0x80, 0xaf, 0x43, 0x96, 0xc9, 0x77, + 0xd6, 0xdd, 0x79, 0x6e, 0xc8, 0x4f, 0x84, 0xc9, 0x50, 0x38, + 0xe7, 0xf5, 0xea, 0xd2, 0xde, 0xc6, 0x40, 0xbb, 0xb5, 0xa8, + 0xf6, 0xc9, 0x19, 0xb2, 0xe7, 0x18, 0x63, 0x69, 0xa5, 0xbd, + 0x3b, 0xf4, 0x6d, 0x02, 0x04, 0x48, 0xa9, 0xb2, 0x6d, 0xb3, + 0x70, 0xf6, 0x30, 0x97, 0x50, 0xa6, 0x13, 0xba, 0xbe, 0xf5, + 0x29, 0x87, 0x2b, 0xb3, 0x75, 0x79, 0x5a, 0x3f, 0x22, 0xa3, + 0x66, 0x59, 0xb5, 0xae, 0x48, 0x94, 0xeb, 0xbd, 0x98, 0x79, + 0x5f, 0x14, 0x7d, 0xc6, 0xf6, 0x45, 0xd9, 0x1f, 0x65, 0x91, + 0x64, 0xf1, 0x21, 0x17, 0xba, 0x14, 0xe0, 0x44, 0x4a, 0x58, + 0xa8, 0x92, 0x3b, 0x63, 0x32, 0x90, 0x37, 0xb3, 0xa5, 0x4b, + 0x17, 0x44, 0xb3, 0x35, 0x22, 0x1b, 0x57, 0xcd, 0xf9, 0xe2, + 0x04, 0x0b, 0x28, 0x93, 0xe5, 0x41, 0x15, 0x35, 0x52, 0x09, + 0xa5, 0x92, 0x8e, 0x02, 0x51, 0xc3, 0xab, 0x7b, 0x84, 0x43, + 0x86, 0x78, 0x18, 0x09, 0xb4, 0x9e, 0x04, 0x69, 0xc3, 0x9d, + 0x86, 0xef, 0x51, 0xee, 0x6f, 0x79, 0xf2, 0xdc, 0x53, 0x9e, + 0x32, 0xa7, 0x0d, 0x30, 0xc6, 0xd2, 0x89, 0xb9, 0x76, 0x2b, + 0xda, 0x04, 0x08, 0x90, 0x91, 0xa7, 0xb7, 0x16, 0x90, 0xd9, + 0x50, 0x7a, 0xf0, 0x29, 0x35, 0x0d, 0x01, 0xdc, 0x7b, 0x4a, + 0x7d, 0x16, 0xc6, 0x4c, 0x78, 0x24, 0x75, 0x6e, 0x9f, 0xbb, + 0xb1, 0xa5, 0x60, 0x07, 0x0e, 0xfc, 0x8d, 0x4c, 0xa3, 0xb9, + 0xaf, 0x95, 0x4b, 0x54, 0xdd, 0x48, 0xc0, 0x13, 0x8c, 0x6c, + 0xd8, 0x6d, 0x76, 0xb9, 0x50, 0xf9, 0xfc, 0xf3, 0x6c, 0xb8, + 0xb4, 0x47, 0x52, 0x78, 0x71, 0x85, 0xc9, 0x9c, 0x2c, 0xf9, + 0xe8, 0x02, 0xed, 0x1f, 0xa6, 0x3f, 0x29, 0x36, 0x50, 0x9c, + 0x65, 0x2d, 0x5a, 0x5d, 0xc7, 0x02, 0x6a, 0x18, 0x56, 0x84, + 0xa4, 0xc7, 0x2f, 0xab, 0x46, 0x5f, 0xf9, 0x1f, 0x3e, 0x1a, + 0x6d, 0x18, 0x9c, 0x03, 0x7a, 0xf1, 0xf5, 0xc1, 0xdc, 0x2d, + 0x78, 0xd2, 0xb6, 0xda, 0x77, 0x92, 0x45, 0x03, 0x57, 0x52, + 0xda, 0x81, 0xf8, 0xe8, 0xcb, 0x4a, 0x07, 0x9d, 0x36, 0x6f, + 0xde, 0x01, 0x6a, 0x52, 0x4a, 0xc3, 0x8f, 0x5b, 0x9c, 0x36, + 0x67, 0x3c, 0x0d, 0x6f, 0x72, 0x22, 0x44, 0x42, 0xab, 0xc3, + 0x6f, 0x43, 0x29, 0x97, 0xd2, 0x2d, 0xb5, 0x22, 0xea, 0xb9, + 0x4b, 0x33, 0x66, 0x63, 0x1f, 0x43, 0xbc, 0xd8, 0xa3, 0x2e, + 0xcd, 0x30, 0x94, 0xba, 0x33, 0xe2, 0x3d, 0xe7, 0x0d, 0xca, + 0x83, 0xd8, 0x67, 0x05, 0x8e, 0xd0, 0xdc, 0x80, 0xa7, 0x77, + 0x88, 0xb5, 0x19, 0xad, 0x99, 0x75, 0xcf, 0x05, 0x51, 0x81, + 0x31, 0x22, 0x1d, 0xe5, 0x27, 0x05, 0xcf, 0x98, 0xea, 0xe6, + 0x0f, 0xee, 0x36, 0x81, 0x99, 0x58, 0x05, 0xe2, 0x83, 0x2b, + 0x46, 0xa4, 0xd4, 0x34, 0x04, 0xf6, 0x2f, 0xeb, 0x37, 0x58, + 0xff, 0x25, 0x46, 0xe3, 0x2e, 0xf6, 0x72, 0x91, 0xc1, 0x61, + 0x86, 0x38, 0x70, 0xec, 0xe2, 0x25, 0x5b, 0x37, 0xcf, 0x04, + 0xf1, 0xf2, 0xd0, 0xd4, 0x54, 0x97, 0x4d, 0xbe, 0xbf, 0x1c, + 0xd2, 0x37, 0xd1, 0x6b, 0xd3, 0xd8, 0xfd, 0xa7, 0xc4, 0x1c, + 0x20, 0x58, 0x83, 0x12, 0x24, 0x4d, 0xa8, 0x6b, 0x1b, 0x42, + 0xbe, 0x79, 0x81, 0xd3, 0x40, 0x39, 0xc2, 0xf7, 0x98, 0xc4, + 0x4b, 0xac, 0x9d, 0x42, 0x76, 0xf1, 0xce, 0x8f, 0xb1, 0x44, + 0x10, 0x9f, 0xd1, 0x4d, 0x26, 0x31, 0x62, 0x2b, 0xb6, 0xf1, + 0x64, 0x8d, 0x1a, 0x60, 0x4f, 0x67, 0xd1, 0xb1, 0xec, 0x56, + 0x77, 0x08, 0x10, 0xe3, 0xe1, 0x8d, 0x29, 0xe5, 0xb3, 0x49, + 0x47, 0x01, 0xc9, 0x80, 0xb4, 0xdc, 0x42, 0xc0, 0x43, 0x3c, + 0x0c, 0xe5, 0x59, 0xc7, 0x96, 0x65, 0x13, 0x48, 0x35, 0x50, + 0xad, 0x94, 0xb8, 0x78, 0xf0, 0xf8, 0xe6, 0xc7, 0x68, 0xe8, + 0x0f, 0xe5, 0x46, 0x7d, 0xca, 0x2f, 0xbf, 0x5c, 0x0c, 0xd9, + 0x71, 0xfe, 0x59, 0xe8, 0x39, 0x69, 0x3e, 0xc7, 0x5b, 0x98, + 0xed, 0x2a, 0x70, 0xc4, 0xe6, 0x3f, 0x7e, 0x10, 0x6f, 0x69, + 0x94, 0x45, 0xdd, 0xb6, 0xfb, 0x6c, 0xce, 0x78, 0x1a, 0xde, + 0xe4, 0x44, 0x88, 0x84, 0x95, 0x45, 0x4b, 0xbb, 0x42, 0x8a, + 0xed, 0x6b, 0xf4, 0x7e, 0x90, 0x8f, 0xe9, 0x41, 0x82, 0x30, + 0xb1, 0xbb, 0x07, 0xab, 0x26, 0x72, 0x94, 0x50, 0x7f, 0x0d, + 0x55, 0xe5, 0x47, 0xea, 0x17, 0x9d, 0x46, 0xab, 0x71, 0x5a, + 0xe8, 0xfd, 0x25, 0x14, 0x6f, 0x92, 0x84, 0xa8, 0x61, 0xdb, + 0x75, 0xb6, 0xf0, 0x5a, 0x2b, 0x15, 0xea, 0x28, 0xa5, 0xbb, + 0x2c, 0x04, 0x4d, 0xdf, 0xb7, 0x06, 0x0c, 0xd8, 0x38, 0x15, + 0x26, 0x08, 0x32, 0x7c, 0xdd, 0xfc, 0xa4, 0xd8, 0x83, 0x35, + 0x57, 0xb4, 0xab, 0xb7, 0x9a, 0x08, 0x20, 0xdb, 0xd9, 0xdf, + 0x38, 0xf1, 0x48, 0x97, 0x4b, 0x30, 0x8b, 0x3d, 0x7a, 0x58, + 0xc6, 0xdb, 0xfa, 0x7e, 0x39, 0xf0, 0x58, 0x1c, 0xe8, 0x18, + 0x6d, 0x87, 0x34, 0x14, 0x28, 0x95, 0x90, 0x7e, 0x49, 0x4b, + 0x1b, 0xeb, 0x0f, 0xd1, 0x11, 0xfa, 0x69, 0x8c, 0x1c, 0x87, + 0xcd, 0xd4, 0x85, 0x4b, 0x22, 0x2b, 0x80, 0xbe, 0xda, 0x4b, + 0xad, 0x13, 0xb2, 0x33, 0x7e, 0xfb, 0x35, 0xbc, 0xf2, 0x2b, + 0xa6, 0xe2, 0xd0, 0x86, 0x3d, 0xbe, 0x47, 0xc1, 0x6c, 0xf5, + 0x3e, 0x40, 0x80, 0x14, 0x04, 0xe2, 0xcd, 0x82, 0x4b, 0xd3, + 0xe8, 0x24, 0xfb, 0x28, 0xb7, 0x4a, 0x5c, 0x3c, 0x78, 0x7c, + 0x73, 0x82, 0x8c, 0x8f, 0xf7, 0x7f, 0xe9, 0x58, 0xf8, 0x87, + 0xbc, 0xca, 0x12, 0x25, 0x4a, 0xbe, 0x26, 0x8f, 0xd7, 0xb8, + 0x38, 0x7b, 0x18, 0xaa, 0x28, 0x53, 0xe8, 0x5d, 0x5f, 0x9b, + 0xf5, 0xa2, 0xf4, 0xb8, 0x46, 0xa6, 0x9a, 0xde, 0x95, 0x2c, + 0x7c, 0xa2, 0x5e, 0x65, 0x09, 0xf3, 0x25, 0x5f, 0x13, 0xa6, + 0x88, 0xac, 0x45, 0xbd, 0xee, 0xef, 0xf1, 0x4c, 0x8d, 0xcc, + 0x3b, 0x6a, 0xd4, 0xb5, 0x4e, 0xac, 0x44, 0x56, 0xc3, 0xbf, + 0x77, 0x96, 0x99, 0x26, 0xa7, 0x66, 0xfc, 0x35, 0x6a, 0xbb, + 0x27, 0x56, 0xc2, 0x6f, 0xca, 0xe6, 0x72, 0xd9, 0x96, 0x70, + 0x80, 0xa3, 0x49, 0x48, 0x90, 0xf7, 0xe5, 0x6f, 0x93, 0xee, + 0xfb, 0xc4, 0x6f, 0x3c, 0xb1, 0x75, 0x4f, 0x3b, 0xa3, 0xae, + 0x9f, 0x19, 0xd3, 0xee, 0xf6, 0x1b, 0x2c, 0x75, 0x51, 0x06, + 0xf3, 0x86, 0x3e, 0x8d, 0x4f, 0xc5, 0x49, 0x88, 0x28, 0x1b, + 0x09, 0x3e, 0x6a, 0x96, 0x7f, 0xf0, 0x81, 0x17, 0xff, 0xec, + 0xc9, 0xfd, 0x39, 0x64, 0xca, 0x3e, 0xa4, 0x12, 0x89, 0xe7, + 0xdf, 0x04, 0xa2, 0x45, 0x95, 0xf6, 0xcb, 0x86, 0xcf, 0xf0, + 0x30, 0x12, 0xe9, 0x7a, 0x20, 0xce, 0xd7, 0x62, 0xba, 0x74, + 0xcd, 0x7c, 0xfe, 0x4e, 0x9c, 0x2f, 0xdd, 0x7a, 0x2a, 0x6d, + 0x27, 0xf9, 0xd4, 0xe6, 0xbf, 0x46, 0xd0, 0x3f, 0x2c, 0x65, + 0xca, 0xaa, 0x22, 0x6d, 0x54, 0xda, 0x4e, 0x31, 0x6b, 0x0f, + 0xbd, 0x8c, 0x63, 0x7e, 0x58, 0xca, 0x57, 0x97, 0x44, 0xda, + 0xa2, 0xc1, 0x62, 0x44, 0x3a, 0x09, 0x4e, 0x0a, 0x5d, 0xf3, + 0x17, 0x0f, 0x1e, 0x1f, 0x6c, 0xc1, 0xf7, 0x63, 0xe1, 0xa4, + 0x20, 0x5b, 0x60, 0xc4, 0xa3, 0x6d, 0xd4, 0xa6, 0x8f, 0xfa, + 0x32, 0x63, 0xcf, 0x72, 0x12, 0xb2, 0x0a, 0x9e, 0x1e, 0xac, + 0x4e, 0x49, 0xa9, 0xfa, 0x37, 0x98, 0x47, 0x72, 0xaf, 0xdc, + 0xba, 0x10, 0x42, 0x4e, 0xc6, 0xd6, 0x93, 0x19, 0xf7, 0xbd, + 0xb9, 0x70, 0xce, 0xdc, 0xfd, 0xd5, 0x1f, 0x82, 0xcc, 0x4c, + 0x97, 0x15, 0x38, 0x62, 0x73, 0xfe, 0x3f, 0x08, 0xd6, 0xd5, + 0xce, 0x0a, 0xdf, 0x63, 0x7b, 0xc3, 0x8d, 0xee, 0xd3, 0xa9, + 0x32, 0x99, 0xf1, 0xea, 0x5d, 0x0a, 0x13, 0x04, 0x19, 0x3e, + 0x8f, 0x7e, 0x52, 0x6c, 0xa0, 0xfb, 0xca, 0x5a, 0xb4, 0xba, + 0x4d, 0x04, 0xe3, 0xcc, 0xde, 0xe8, 0x3b, 0x75, 0x4d, 0xa5, + 0x56, 0x73, 0x59, 0x16, 0x2c, 0xdd, 0x39, 0xcc, 0x8b, 0x24, + 0xd1, 0x0d, 0x7d, 0x08, 0x87, 0x8a, 0xe9, 0x2f, 0x55, 0xcf, + 0x5d, 0x23, 0x60, 0x24, 0x7e, 0xb7, 0x69, 0xc8, 0xbf, 0xe9, + 0x02, 0xca, 0xb3, 0x41, 0x74, 0xaf, 0x9d, 0x3d, 0x66, 0xb7, + 0xed, 0x59, 0x92, 0x0c, 0xd0, 0xd5, 0xb3, 0xbf, 0xfc, 0x7a, + 0xd7, 0x01, 0x02, 0x24, 0xb5, 0x59, 0xe5, 0x1f, 0x35, 0x4b, + 0xde, 0x78, 0xa1, 0xea, 0x9e, 0x76, 0x85, 0x9f, 0xfd, 0x32, + 0x65, 0x1f, 0xb8, 0xfb, 0x11, 0xec, 0xca, 0x87, 0x9d, 0x71, + 0x02, 0xe4, 0x14, 0xa8, 0x93, 0xc1, 0xeb, 0xfb, 0x7d, 0x3f, + 0xfd, 0x78, 0x2c, 0x0e, 0x74, 0x0c, 0xd7, 0xa2, 0x1a, 0x0a, + 0x14, 0xab, 0x48, 0x3f, 0x96, 0xb5, 0x84, 0xd7, 0x19, 0xd6, + 0x2b, 0xfc, 0xe3, 0xdd, 0x11, 0x82, 0xc7, 0x60, 0xa1, 0xb5, + 0x05, 0x5b, 0x7f, 0x13, 0x76, 0xea, 0x9a, 0x89, 0xac, 0xe6, + 0xb2, 0x2c, 0x58, 0x79, 0x72, 0x5b, 0x18, 0xca, 0x2a, 0xc9, + 0x12, 0x34, 0x36, 0xff, 0xa6, 0x14, 0xf6, 0x61, 0xc2, 0x3a, + 0xb3, 0xca, 0x87, 0x41, 0xc4, 0x88, 0x74, 0x12, 0x9c, 0x14, + 0xba, 0x25, 0x2e, 0x1e, 0x3c, 0x3e, 0xd8, 0x41, 0x6b, 0x60, + 0x9b, 0x55, 0xd5, 0x9a, 0xbc, 0xe9, 0xdb, 0xbf, 0x62, 0x7c, + 0xf8, 0x68, 0x77, 0x60, 0xd4, 0x30, 0xac, 0xcb, 0x8b, 0x4d, + 0x5e, 0x95, 0x8c, 0xbe, 0x31, 0x3e, 0x7c, 0x34, 0xda, 0x30, + 0x04, 0x23, 0xb2, 0xc2, 0x07, 0xb7, 0x09, 0xcb, 0x31, 0x06, + 0x29, 0x4f, 0x9e, 0x0b, 0x68, 0x23, 0xbb, 0x73, 0x85, 0x5c, + 0x59, 0x60, 0xeb, 0xb7, 0x66, 0x07, 0x7a, 0x0d, 0x1a, 0x57, + 0xc5, 0x73, 0x37, 0xfc, 0x72, 0x23, 0xb0, 0x38, 0x13, 0x30, + 0xda, 0xcd, 0x68, 0x28, 0x50, 0xe9, 0xe3, 0xfc, 0xd3, 0x9b, + 0x8a, 0xb9, 0x1f, 0x1d, 0x21, 0x98, 0xd9, 0x5b, 0x76, 0xd4, + 0x6b, 0xa9, 0x9c, 0x9b, 0x9b, 0xa8, 0x5c, 0x83, 0x61, 0x91, + 0xa3, 0x20, 0x2d, 0x37, 0xf1, 0x30, 0x60, 0x0f, 0x03, 0xa8, + 0x55, 0xa2, 0x83, 0xe0, 0x1a, 0x52, 0x2e, 0xce, 0xfe, 0x9e, + 0xc3, 0xa9, 0x91, 0xe5, 0x5e, 0xa2, 0x3a, 0xe1, 0xaa, 0x77, + 0xc8, 0x7f, 0x9b, 0xec, 0x14, 0x27, 0x88, 0x9a, 0xf7, 0x86, + 0x41, 0xe1, 0xc4, 0xbc, 0x21, 0x45, 0x97, 0xd4, 0x7a, 0x3f, + 0x48, 0xa6, 0x95, 0xc1, 0x41, 0x18, 0xb9, 0xbc, 0x9e, 0xf3, + 0x23, 0x90, 0x17, 0x7b, 0x39, 0xa9, 0x81, 0xd1, 0x43, 0x1c, + 0x38, 0x76, 0x71, 0xf3, 0xa1, 0x49, 0xf6, 0xf4, 0xa9, 0xee, + 0x38, 0xcc, 0x39, 0x10, 0x79, 0xaa, 0x97, 0x89, 0x42, 0x49, + 0x81, 0x92, 0x2f, 0x2b, 0x91, 0x1f, 0x70, 0x5b, 0x72, 0x20, + 0xf2, 0x97, 0xed, 0xd1, 0x84, 0x92, 0x89, 0xd4, 0x88, 0x6c, + 0x9f, 0xb2, 0x62, 0x0e, 0x10, 0x2c, 0xa0, 0x09, 0x12, 0xc7, + 0x54, 0xd4, 0x14, 0xaf, 0x3f, 0x4c, 0x1b, 0x2e, 0x2d, 0x61, + 0xf5, 0x1e, 0x8d, 0xb0, 0xa3, 0x27, 0x0b, 0xaf, 0xb9, 0x83, + 0xdc, 0x3d, 0xbb, 0xda, 0x0e, 0x33, 0x9f, 0x04, 0x8f, 0xcb, + 0x55, 0xb3, 0xf1, 0x83, 0xac, 0x54, 0x2e, 0xa0, 0xd1, 0xa9, + 0xb0, 0x10, 0xf7, 0xfa, 0x99, 0x18, 0x30, 0xe6, 0xe0, 0x54, + 0x8f, 0x07, 0x63, 0xcf, 0x7a, 0xbf, 0x8e, 0x41, 0xd8, 0x29, + 0x7c, 0x80, 0xc3, 0x28, 0x08, 0x07, 0xf0, 0xc8, 0xc7, 0xd6, + 0xb4, 0x0b, 0x1f, 0xc9, 0xf6, 0x88, 0x93, 0x4c, 0x98, 0x67, + 0x74, 0xc8, 0xfe, 0x5d, 0x8b, 0x32, 0x5f, 0xab, 0xe1, 0xd3, + 0x5c, 0x81, 0x1d, 0x5b, 0xb6, 0x9e, 0xf8, 0x5d, 0x01, 0x78, + 0xcd, 0xd1, 0x71, 0x5d, 0x93, 0x42, 0x9d, 0xe0, 0x9b, 0x63, + 0xc6, 0x72, 0x1a, 0x78, 0x08, 0x46, 0xa7, 0x47, 0x0e, 0xad, + 0x12, 0x55, 0x62, 0x0c, 0x52, 0x9e, 0xff, 0x16, 0xd0, 0x46, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x1d, 0xd8, 0x54, + 0x78, 0x47, 0x88, 0xdc, 0xce, 0xea, 0xe0, 0xb2, 0xa7, 0x6f, + 0xa2, 0x1d, 0x30, 0x57, 0x54, 0x51, 0x24, 0x68, 0x6c, 0x3d, + 0x8f, 0x28, 0x2f, 0xc2, 0x47, 0x74, 0xa5, 0x57, 0x2d, 0xc6, + 0x01, 0x8b, 0x40, 0xb6, 0xc0, 0x4b, 0x85, 0xda, 0x6b, 0x8f, + 0xdd, 0x37, 0x64, 0xc6, 0x1f, 0x61, 0x0c, 0xbb, 0x86, 0x64, + 0x49, 0xf2, 0xf3, 0xf1, 0xb1, 0x8b, 0xd5, 0xa7, 0xf5, 0x61, + 0x35, 0x0c, 0x2b, 0x42, 0x52, 0x82, 0xf6, 0xb4, 0x23, 0xce, + 0x9d, 0xee, 0x1f, 0x0d, 0xd7, 0x0c, 0xd9, 0x2d, 0x74, 0x9f, + 0xf3, 0x0a, 0xd6, 0x49, 0x42, 0x54, 0xd1, 0x8c, 0xdb, 0x5b, + 0x78, 0x2d, 0xdb, 0xdd, 0x2d, 0xfe, 0x11, 0xb0, 0x33, 0xcd, + 0xbb, 0x57, 0x24, 0x4a, 0x94, 0xbf, 0x4c, 0xdd, 0xba, 0x0b, + 0x48, 0x8d, 0x28, 0x3d, 0x78, 0xf5, 0xfb, 0xe7, 0xe1, 0x6e, + 0xdc, 0x25, 0xdf, 0x0b, 0x3d, 0x4a, 0x8c, 0x05, 0x5c, 0x2f, + 0xe4, 0xe1, 0x41, 0xc2, 0xcf, 0x70, 0xe0, 0x1b, 0x07, 0x4a, + 0x8d, 0xf7, 0x3a, 0xae, 0x98, 0x05, 0x6b, 0xc5, 0x21, 0x2a, + 0x89, 0x46, 0x8c, 0xcc, 0x3c, 0xf7, 0x36, 0x84, 0xbf, 0xf2, + 0xc1, 0x65, 0x80, 0x72, 0x47, 0x2d, 0xf3, 0x4b, 0x96, 0x9b, + 0xf9, 0x84, 0xa8, 0x77, 0x9c, 0x62, 0xd6, 0x1e, 0xb9, 0xdb, + 0xc6, 0xfc, 0xb0, 0x57, 0xae, 0xed, 0x88, 0x77, 0xc3, 0x17, + 0x07, 0x37, 0x03, 0x84, 0x05, 0x32, 0x1d, 0x43, 0xd2, 0x2b, + 0x56, 0x85, 0xff, 0x17, 0x4d, 0x68, 0xa9, 0x29, 0x08, 0x66, + 0x18, 0x31, 0x58, 0x8a, 0x35, 0xc8, 0x53, 0xdf, 0xed, 0x68, + 0xa5, 0x6a, 0x44, 0x36, 0xae, 0x59, 0x31, 0x07, 0x08, 0x16, + 0x50, 0xe5, 0x09, 0x82, 0x2a, 0x6a, 0x1d, 0x91, 0x55, 0xda, + 0x64, 0xde, 0xac, 0x76, 0x0a, 0xf2, 0x44, 0x4d, 0x9a, 0x43, + 0xc1, 0x91, 0x3c, 0x32, 0x41, 0xd4, 0x2d, 0x72, 0x77, 0xa3, + 0xdc, 0x22, 0x54, 0x13, 0x26, 0x69, 0x1d, 0x32, 0xef, 0xa9, + 0xcb, 0x6d, 0x32, 0x6f, 0x56, 0x3b, 0x05, 0x79, 0x22, 0xc7, + 0x4d, 0xc0, 0x81, 0xa9, 0x45, 0x2e, 0x0e, 0x6e, 0x06, 0xcb, + 0x0a, 0x64, 0x3a, 0x86, 0x67, 0x56, 0xac, 0xc9, 0x3d, 0x2e, + 0xaa, 0x87, 0xc5, 0x03, 0x34, 0xa4, 0x5c, 0x5f, 0x3f, 0xff, + 0x45, 0x91, 0xe1, 0x09, 0xbc, 0x87, 0x7c, 0x47, 0x30, 0xa9, + 0x5d, 0x53, 0xe7, 0x4e, 0x4a, 0x42, 0x81, 0x69, 0xd2, 0xd9, + 0x52, 0x47, 0x9d, 0x7b, 0xb7, 0x20, 0x84, 0x9c, 0x4f, 0x6f, + 0xe5, 0x32, 0x2d, 0xb9, 0xb1, 0xe0, 0x5f, 0x7b, 0x2c, 0xbe, + 0xcc, 0x5a, 0x31, 0xeb, 0x53, 0x09, 0x18, 0x3a, 0xf0, 0xec, + 0x1b, 0x45, 0x7e, 0xbe, 0x16, 0x5f, 0x66, 0x2d, 0xf9, 0x94, + 0xc8, 0xe5, 0x0c, 0x1d, 0x78, 0x76, 0xec, 0xc3, 0x3f, 0x5f, + 0x03, 0x88, 0x94, 0xb0, 0x93, 0xe7, 0x76, 0xc6, 0x64, 0xe3, + 0x6e, 0xa5, 0x89, 0x96, 0x2e, 0x88, 0x5e, 0x6c, 0xb0, 0x17, + 0x87, 0x18, 0x4a, 0x5d, 0xf8, 0x71, 0xff, 0x92, 0xe7, 0x65, + 0xa0, 0x6c, 0x4e, 0xe0, 0x3d, 0x99, 0x9b, 0x81, 0x6e, 0xf7, + 0x3c, 0x69, 0x5b, 0x6d, 0xda, 0x49, 0xc3, 0xe0, 0xcb, 0x51, + 0xa0, 0x70, 0x0d, 0x29, 0x17, 0x67, 0x7f, 0x4f, 0x80, 0xb5, + 0xa9, 0x93, 0x2f, 0x51, 0x3e, 0xc2, 0x18, 0xb5, 0xcf, 0xc8, + 0x92, 0x27, 0x25, 0x21, 0xa1, 0xd5, 0x69, 0x8d, 0x29, 0xc2, + 0x15, 0xd7, 0xf2, 0x9d, 0x6a, 0x73, 0xbe, 0x23, 0x68, 0xfe, + 0x16, 0xd3, 0x65, 0x55, 0x11, 0xd7, 0xfc, 0xad, 0xd2, 0x53, + 0xbd, 0x11, 0x04, 0x57, 0xa5, 0x82, 0xe8, 0x9d, 0xf9, 0x7a, + 0xcc, 0xad, 0xae, 0xa4, 0x77, 0xc1, 0x33, 0x13, 0x55, 0x94, + 0x0e, 0xf9, 0x6c, 0xde, 0x7f, 0x02, 0xd4, 0xa4, 0x63, 0x26, + 0x3c, 0x12, 0xdb, 0x37, 0xae, 0xbc, 0xb9, 0xb3, 0x30, 0xe2, + 0x07, 0x7e, 0xa7, 0x26, 0x0e, 0x95, 0x4c, 0xe4, 0xeb, 0xa0, + 0xfe, 0x1a, 0xaa, 0x09, 0x8e, 0x17, 0x2e, 0xf9, 0x8c, 0x95, + 0x7f, 0xcf, 0xa4, 0x19, 0xce, 0xb4, 0x91, 0x88, 0x2e, 0xa1, + 0xef, 0xcc, 0x5b, 0x4f, 0x7c, 0xcf, 0x31, 0x2f, 0x99, 0x80, + 0x55, 0x35, 0xff, 0x7f, 0x12, 0xc8, 0xb4, 0xa1, 0x81, 0x06, + 0xbf, 0x2f, 0xdf, 0xfe, 0x9f, 0x3c, 0x16, 0x07, 0x3a, 0x06, + 0x8a, 0x51, 0x0d, 0x05, 0x0a, 0xb4, 0x24, 0xfe, 0xf1, 0xb0, + 0x0a, 0x07, 0xc5, 0x56, 0x8c, 0x8b, 0x6b, 0x68, 0x08, 0x2f, + 0x5e, 0x15, 0x6e, 0xb0, 0x60, 0xae, 0xa8, 0xa2, 0x48, 0xd0, + 0xd8, 0x7a, 0xdd, 0x50, 0x5e, 0x47, 0x8e, 0xe8, 0x89, 0xae, + 0x79, 0x1c, 0x4f, 0xba, 0x2b, 0xb9, 0x7d, 0xc7, 0xe6, 0xa4, + 0x33, 0x45, 0x8a, 0xa0, 0x20, 0x1c, 0x9a, 0xd0, 0x91, 0x52, + 0x10, 0xcc, 0x30, 0x62, 0xb0, 0xd7, 0x6a, 0x53, 0xa6, 0x7d, + 0x19, 0xd0, 0xf8, 0x8e, 0x60, 0x91, 0xba, 0xa6, 0x0d, 0x9c, + 0x94, 0x84, 0xc1, 0xd2, 0x67, 0x71, 0xa4, 0x8e, 0x4c, 0x10, + 0x64, 0xf8, 0x79, 0x3b, 0x8b, 0x73, 0xc5, 0x6a, 0xae, 0xab, + 0x95, 0xad, 0xf7, 0x10, 0xb5, 0xe6, 0xc9, 0xb8, 0xb2, 0xc0, + 0x15, 0xad, 0xcc, 0x0e, 0xf4, 0x1a, 0x34, 0xae, 0x49, 0xe6, + 0x41, 0x0d, 0xbc, 0xac, 0x01, 0x7c, 0x03, 0xaf, 0x0b, 0x80, + 0x4e, 0x19, 0x32, 0xc2, 0x55, 0x0d, 0xc7, 0x34, 0xb5, 0xf5, + 0x04, 0x33, 0x0c, 0xf9, 0x2c, 0x45, 0xfb, 0x64, 0xc8, 0x8e, + 0x97, 0x34, 0x7a, 0x94, 0xdb, 0x0a, 0xb8, 0x5e, 0x0b, 0x01, + 0x82, 0x47, 0x5d, 0xe0, 0x03, 0x36, 0x0e, 0x94, 0x7b, 0xec, + 0x16, 0xdb, 0xc9, 0x03, 0x98, 0x43, 0x1f, 0xa7, 0xc6, 0x83, + 0xc5, 0x44, 0x14, 0xec, 0x0a, 0xb6, 0xfe, 0x26, 0xec, 0x17, + 0xf7, 0xd1, 0x9b, 0x0f, 0xa7, 0x58, 0xb0, 0xf2, 0xe4, 0xb6, + 0xdc, 0x76, 0x0b, 0x8c, 0x85, 0xe0, 0x4c, 0xc0, 0xee, 0xb2, + 0x63, 0xa0, 0x83, 0x22, 0x0a, 0x76, 0xdd, 0x0e, 0xc6, 0x5d, + 0xf4, 0xbd, 0xdf, 0x82, 0x73, 0x52, 0xf8, 0xc3, 0x45, 0x50, + 0x10, 0x0e, 0xea, 0xf2, 0xb4, 0x7e, 0x44, 0x85, 0xcc, 0xb2, + 0xa9, 0x9f, 0x90, 0xeb, 0x15, 0xb9, 0xf3, 0xf2, 0x78, 0x64, + 0x82, 0x6b, 0x5a, 0xe4, 0xee, 0x85, 0x7b, 0x44, 0xa8, 0x26, + 0x4c, 0xd2, 0x3a, 0x64, 0xbe, 0x28, 0xfa, 0x4f, 0x2f, 0x8a, + 0x71, 0x3e, 0xca, 0xe1, 0xc8, 0x21, 0x42, 0x2e, 0xb7, 0x28, + 0x86, 0x39, 0x09, 0x59, 0x05, 0x4f, 0x0f, 0x56, 0x27, 0xc5, + 0xb5, 0x7d, 0xfa, 0x4c, 0xc2, 0x39, 0xe1, 0x3c, 0x87, 0x89, + 0xd9, 0xcf, 0xa8, 0x21, 0xaf, 0x70, 0xac, 0xd0, 0x63, 0x39, + 0x0d, 0x3c, 0x97, 0xcd, 0x49, 0x06, 0x68, 0x8b, 0xb8, 0xbe, + 0x7e, 0x3d, 0x8a, 0xe1, 0x01, 0x12, 0xbb, 0xcd, 0x66, 0x7d, + 0x43, 0x01, 0xad, 0xdd, 0x34, 0x35, 0x15, 0x55, 0x82, 0xce, + 0x5f, 0x07, 0xd5, 0x7d, 0xeb, 0x8a, 0x79, 0xaf, 0x35, 0xd8, + 0x5f, 0xf0, 0x34, 0x7f, 0x0b, 0x88, 0xd3, 0xcb, 0xe9, 0x8a, + 0xf2, 0x38, 0x9e, 0xb7, 0x56, 0xb1, 0xfa, 0x4d, 0x0f, 0x8b, + 0x66, 0x8a, 0xd7, 0x83, 0x40, 0x38, 0xb0, 0xbd, 0xb6, 0xab, + 0xc4, 0x2a, 0x8f, 0x24, 0x60, 0xe8, 0x46, 0x36, 0x6c, 0xd7, + 0x3b, 0xbd, 0xe4, 0x67, 0xf8, 0x9a, 0xaf, 0x25, 0x32, 0xa8, + 0x03, 0x96, 0x1e, 0xfc, 0x3b, 0x40, 0x7f, 0x67, 0x1c, 0xe9, + 0x98, 0x0b, 0x15, 0x83, 0x3f, 0x34, 0x97, 0x12, 0xdf, 0x2e, + 0x5c, 0x31, 0xdb, 0xe9, 0xca, 0x29, 0x6d, 0xa1, 0x7c, 0x74, + 0x84, 0x25, 0xe2, 0xaf, 0x1b, 0xd6, 0x6f, 0xe1, 0x35, 0x29, + 0xd2, 0xe3, 0x47, 0x68, 0x6e, 0x40, 0xb2, 0xda, 0x44, 0xbb, + 0xed, 0xb7, 0xad, 0xdb, 0x86, 0xe3, 0xa0, 0x31, 0x3b, 0x25, + 0xd8, 0xb3, 0xab, 0x8e, 0xa4, 0xf0, 0xe2, 0xc9, 0x51, 0xfb, + 0x58, 0x31, 0x1e, 0x19, 0xc1, 0x6a, 0xf7, 0x39, 0xda, 0xb0, + 0x6e, 0x11, 0x2a, 0xe8, 0x13, 0xd5, 0xef, 0x19, 0x9f, 0x8b, + 0xee, 0x41, 0x66, 0x26, 0xaa, 0xeb, 0x1c, 0x31, 0xd8, 0x7f, + 0xfe, 0x04, 0x6b, 0x8b, 0x56, 0x2a, 0x17, 0x50, 0x89, 0xb5, + 0x58, 0x08, 0x9a, 0x7d, 0xad, 0x0c, 0x18, 0x73, 0x70, 0x2a, + 0xab, 0xff, 0x08, 0xd2, 0x45, 0xf9, 0xcf, 0x1d, 0xa2, 0x1f, + 0xde, 0xf2, 0x27, 0x7b, 0xa6, 0xff, 0xc9, 0xa1, 0xf9, 0x11, + 0xef, 0x93, 0xf2, 0xe3, 0x86, 0x4c, 0x75, 0x73, 0xe6, 0x77, + 0x1b, 0xa1, 0x69, 0x90, 0xc2, 0x34, 0x37, 0x20, 0x59, 0x6d, + 0x22, 0xbc, 0x97, 0xba, 0xb7, 0x8c, 0x43, 0x90, 0x91, 0x1e, + 0xa2, 0xa5, 0x8d, 0x86, 0x54, 0xf1, 0xb6, 0x38, 0x56, 0x68, + 0xd0, 0xfd, 0xe7, 0x1e, 0x72, 0xd2, 0x7c, 0x4d, 0xb6, 0xf3, + 0x19, 0x54, 0xe0, 0x4b, 0x0f, 0x7e, 0xfc, 0x20, 0xde, 0xd2, + 0x53, 0x71, 0x68, 0x43, 0xff, 0x5f, 0xc2, 0x81, 0x36, 0x9b, + 0x1f, 0x20, 0x40, 0x0a, 0x02, 0x71, 0x17, 0x27, 0xab, 0xfc, + 0x88, 0xc9, 0x5b, 0xa7, 0x91, 0xfd, 0xe3, 0x15, 0x2a, 0xb1, + 0x25, 0x27, 0x4f, 0x98, 0xf0, 0x48, 0xea, 0xdc, 0xfd, 0xb5, + 0xa1, 0x89, 0xc0, 0x0e, 0x1c, 0x3b, 0xd9, 0x98, 0x58, 0xbf, + 0x5b, 0xb4, 0x62, 0x15, 0xa6, 0x12, 0x30, 0x74, 0x23, 0x1b, + 0x36, 0x8a, 0xfc, 0xbf, 0x02, 0xf0, 0x59, 0x61, 0xe2, 0xba, + 0xe5, 0x84, 0xf9, 0x03, 0xf5, 0xc6, 0x4f, 0xe4, 0x34, 0xf0, + 0x65, 0xf5, 0xd7, 0xb1, 0x3e, 0x3a, 0x42, 0xf3, 0x71, 0xb6, + 0xec, 0x6b, 0xd6, 0x91, 0xfb, 0xf5, 0x70, 0x22, 0x25, 0x2c, + 0x54, 0x49, 0xfc, 0xd0, 0x19, 0x48, 0xfa, 0xb8, 0xb3, 0xc4, + 0xea, 0x22, 0x3f, 0xba, 0xd5, 0x64, 0xbe, 0x95, 0x01, 0x65, + 0xb8, 0xc1, 0x3a, 0xb6, 0xaf, 0xff, 0x33, 0xba, 0x33, 0xdf, + 0xc0, 0xe1, 0xb7, 0x8f, 0x1a, 0xfb, 0xeb, 0xcb, 0x41, 0x67, + 0xce, 0xe2, 0x8b, 0xdf, 0x28, 0x9d, 0x7e, 0x98, 0x36, 0x5c, + 0x5a, 0xc2, 0x29, 0x3c, 0xd9, 0xa3, 0x85, 0x4e, 0x16, 0x9d, + 0xc5, 0xc4, 0xec, 0x94, 0xe6, 0x89, 0xe9, 0x7d, 0xd5, 0x46, + 0x0e, 0xa2, 0x87, 0x6a, 0xa3, 0xc4, 0xcc, 0xfa, 0x86, 0x02, + 0x99, 0x79, 0x68, 0x6a, 0x2a, 0xaa, 0xc7, 0x5f, 0xbe, 0x0e, + 0x69, 0xfa, 0xad, 0x2c, 0xe3, 0x71, 0xa0, 0xf4, 0x23, 0x52, + 0x6a, 0x1a, 0x02, 0x7b, 0xf6, 0x94, 0xfa, 0x2c, 0x34, 0x74, + 0xe6, 0x93, 0x23, 0xdf, 0x65, 0xf6, 0xbe, 0x2e, 0x06, 0x8d, + 0xd9, 0x7f, 0xcd, 0x74, 0x95, 0x3d, 0x10, 0x67, 0x8a, 0x31, + 0x5d, 0x3a, 0x87, 0x3e, 0x7f, 0x27, 0x4e, 0xf6, 0x8f, 0x3d, + 0x83, 0x62, 0x76, 0x4a, 0x73, 0xa5, 0x95, 0xdf, 0x8b, 0x23, + 0x07, 0x51, 0xa2, 0x35, 0xb0, 0x62, + }, + { + /* 2 */ + 0x37, 0xf9, 0x69, 0x1b, 0x71, 0x18, 0x61, 0xcd, 0x69, 0x19, + 0x54, 0xd6, 0xaf, 0xcb, 0x37, 0x52, 0x93, 0x8b, 0x03, 0xf8, + 0xd8, 0xdb, 0x4a, 0x3b, 0x03, 0x7b, 0x5a, 0xc3, 0x52, 0x7d, + 0x93, 0x1c, 0xdb, 0x45, 0x63, 0x4e, 0xe4, 0x87, 0x1e, 0x57, + 0x63, 0xc0, 0x4b, 0x19, 0x80, 0x06, 0xdb, 0x1a, 0x38, 0xfb, + 0x20, 0xd3, 0x14, 0x34, 0x8d, 0x24, 0x20, 0x69, 0x0f, 0xf7, + 0x4e, 0x29, 0x38, 0x02, 0x7f, 0x37, 0x09, 0xad, 0x4d, 0x44, + 0x35, 0xa1, 0x09, 0xa2, 0x45, 0x0c, 0x7d, 0xb0, 0x7f, 0x54, + 0xb6, 0xa0, 0x72, 0x2f, 0xa6, 0xd4, 0x3e, 0xed, 0x72, 0x3c, + 0x9b, 0xc2, 0x28, 0xd8, 0xb6, 0xae, 0xa0, 0x81, 0xad, 0x96, + 0xea, 0x47, 0x90, 0xf0, 0xad, 0x08, 0xae, 0x66, 0xb1, 0x91, + 0xa0, 0xcf, 0xb7, 0xec, 0x33, 0xa3, 0xc6, 0xf5, 0x60, 0x0d, + 0x33, 0xc7, 0xb3, 0xae, 0x3b, 0xa1, 0xb7, 0x1f, 0xb8, 0xee, + 0x7a, 0x6b, 0xa3, 0xd9, 0x8c, 0xe4, 0x7a, 0xb7, 0xe8, 0x8f, + 0xda, 0x43, 0xb8, 0x4f, 0xc5, 0x41, 0xf1, 0x1d, 0x2e, 0xdf, + 0x05, 0x46, 0xf1, 0x20, 0xfd, 0x5b, 0x81, 0x01, 0xc5, 0xba, + 0xcc, 0x28, 0xfd, 0x7b, 0xc8, 0x35, 0xee, 0xaa, 0xfd, 0x0f, + 0x56, 0xd1, 0x0a, 0x36, 0xcc, 0xca, 0x54, 0x52, 0x70, 0x3e, + 0x36, 0x46, 0xf3, 0x7e, 0x70, 0x6e, 0xf7, 0x40, 0xf5, 0x8e, + 0x54, 0x07, 0x04, 0xf3, 0xc7, 0x75, 0x43, 0x84, 0xbb, 0x06, + 0xc7, 0x6a, 0xa0, 0x73, 0x4c, 0x27, 0x04, 0x81, 0xb1, 0x87, + 0x76, 0x0d, 0x45, 0x33, 0x67, 0x08, 0x76, 0x98, 0x43, 0x05, + 0x51, 0x74, 0xb1, 0x3f, 0x13, 0x9e, 0x59, 0x40, 0x6f, 0x36, + 0x4b, 0xfb, 0x59, 0xa5, 0xbd, 0xbb, 0xc6, 0x17, 0x13, 0x51, + 0xb2, 0x53, 0xb5, 0x5a, 0xe5, 0x50, 0x85, 0xeb, 0xb5, 0x56, + 0x3b, 0xb1, 0x64, 0xff, 0xb2, 0x2f, 0x1c, 0x9c, 0x10, 0x88, + 0x0a, 0x1a, 0xa7, 0x12, 0x10, 0xd5, 0xe6, 0x9a, 0x27, 0xf5, + 0x1c, 0x01, 0xa8, 0xa4, 0xe0, 0x7c, 0x6c, 0x8c, 0x25, 0xfc, + 0xe0, 0xdc, 0x2d, 0x80, 0x29, 0xdf, 0xa8, 0x0e, 0x02, 0x98, + 0x82, 0xdb, 0xc0, 0x42, 0xbc, 0x03, 0x82, 0x35, 0x50, 0xd8, + 0x26, 0xf2, 0x02, 0xa1, 0x20, 0x94, 0xf7, 0x2e, 0x5d, 0xaa, + 0x91, 0x30, 0xf7, 0xd6, 0x49, 0x1e, 0x25, 0xfb, 0x20, 0x82, + 0xf5, 0x9f, 0x9c, 0x24, 0xbc, 0x20, 0x3d, 0x6e, 0x9c, 0x9d, + 0x71, 0x4a, 0x57, 0x66, 0xf5, 0x79, 0x45, 0x54, 0xab, 0xa5, + 0x99, 0x32, 0x04, 0x86, 0xab, 0xfe, 0x1a, 0x23, 0x15, 0x6b, + 0x45, 0xf7, 0x3b, 0x2f, 0xe3, 0x84, 0xb4, 0x57, 0x6f, 0xc7, + 0xe3, 0xa7, 0x77, 0x43, 0x7b, 0xa2, 0x3b, 0x12, 0x3f, 0xdc, + 0x24, 0xf1, 0xf7, 0xd3, 0xd4, 0xc1, 0x24, 0xcd, 0xd7, 0x30, + 0x37, 0x85, 0x3f, 0x93, 0xc3, 0x2a, 0xb4, 0xb3, 0xad, 0x19, + 0x02, 0x43, 0xb4, 0x7f, 0x0d, 0xf0, 0xeb, 0xd4, 0xc3, 0x9a, + 0x2f, 0x96, 0xbe, 0xe6, 0x38, 0x86, 0x7d, 0xd9, 0xbe, 0xa6, + 0x12, 0x3f, 0xc4, 0x19, 0x2f, 0xd2, 0x76, 0x5e, 0x05, 0xcb, + 0xab, 0xae, 0xde, 0x4d, 0x05, 0x8d, 0xee, 0x86, 0xf6, 0x87, + 0x76, 0x24, 0x4b, 0x1a, 0xa3, 0xe1, 0x9c, 0x3f, 0xb6, 0x8f, + 0xa3, 0x75, 0x69, 0x6e, 0xe7, 0xf0, 0x4b, 0x16, 0x5f, 0xa3, + 0xfe, 0x83, 0x10, 0xee, 0xa4, 0x91, 0xfe, 0x74, 0x0c, 0x12, + 0x58, 0x4b, 0x5f, 0xd6, 0x97, 0x78, 0xc4, 0x8d, 0x9b, 0x5f, + 0xf1, 0x3d, 0xc4, 0x11, 0xfa, 0xb0, 0x1e, 0x5a, 0x97, 0x9d, + 0x16, 0x21, 0xdf, 0xb9, 0x4c, 0x93, 0xae, 0x1d, 0xdf, 0x34, + 0x35, 0xa4, 0x99, 0x49, 0x16, 0x61, 0xa2, 0x19, 0x2f, 0x4d, + 0x2a, 0x05, 0x2c, 0xf3, 0x2f, 0x3d, 0xfe, 0xbe, 0x97, 0x63, + 0xa2, 0x6e, 0x50, 0xa1, 0xb7, 0x4b, 0x75, 0xc2, 0x48, 0x78, + 0xb7, 0x04, 0x57, 0x33, 0xb9, 0xa9, 0x50, 0x86, 0x6a, 0xc2, + 0x15, 0x43, 0xa1, 0xb4, 0x79, 0x5f, 0x15, 0x58, 0x08, 0x1c, + 0xd1, 0x72, 0x6a, 0x25, 0x0c, 0xd6, 0x8a, 0x9f, 0xc5, 0x4f, + 0x0e, 0x0a, 0x8a, 0xbe, 0x23, 0x95, 0xd4, 0x69, 0x0c, 0x40, + 0x71, 0x79, 0x01, 0xe9, 0x48, 0x49, 0x87, 0xa8, 0x01, 0x29, + 0x36, 0x41, 0x8f, 0x2b, 0x71, 0xb5, 0xa6, 0xea, 0xe8, 0x38, + 0x69, 0x81, 0x97, 0xf5, 0xe8, 0x57, 0x5e, 0xcd, 0xdb, 0x44, + 0xa6, 0xef, 0x8a, 0xa8, 0x95, 0x89, 0xf1, 0x64, 0x08, 0xcf, + 0x95, 0x3f, 0x34, 0x46, 0x2a, 0xd6, 0x8a, 0x2d, 0xe7, 0x4d, + 0x84, 0xe8, 0xb3, 0x37, 0x28, 0x75, 0x84, 0xc3, 0xe4, 0x9d, + 0x82, 0x08, 0xe7, 0x99, 0xec, 0xbc, 0x0a, 0x55, 0x95, 0x9f, + 0x7f, 0x9a, 0x0a, 0xd9, 0x1f, 0xcf, 0x2f, 0xcd, 0xec, 0x48, + 0x51, 0xed, 0xf6, 0xc7, 0x15, 0xe3, 0x16, 0x98, 0xf6, 0xff, + 0x7f, 0x5f, 0xaa, 0xd0, 0x51, 0x37, 0x79, 0x5c, 0x4c, 0x03, + 0xce, 0x82, 0x32, 0xa4, 0x4c, 0xfd, 0xb5, 0xa7, 0x17, 0x65, + 0x79, 0x74, 0xe1, 0x26, 0xc1, 0x46, 0x30, 0xf1, 0x2f, 0x70, + 0xc1, 0x9c, 0x14, 0x36, 0xe8, 0xdd, 0xe1, 0xb9, 0x1b, 0xbb, + 0x14, 0xaa, 0xe9, 0xfd, 0xfe, 0xf7, 0x14, 0x71, 0x3e, 0x5d, + 0x5e, 0x59, 0x1b, 0x90, 0x9f, 0x5d, 0x89, 0x67, 0x1d, 0x94, + 0x44, 0x31, 0x89, 0xc5, 0x79, 0x56, 0x86, 0x14, 0x9f, 0x5c, + 0x74, 0xc6, 0x87, 0x10, 0x6b, 0xec, 0x62, 0x4e, 0x87, 0xb8, + 0xbe, 0x5e, 0xd0, 0x75, 0x74, 0x85, 0xf8, 0x05, 0x57, 0x37, + 0x19, 0x4e, 0x6d, 0x84, 0x57, 0xd8, 0x7a, 0xb3, 0x90, 0x76, + 0xf8, 0x88, 0x5a, 0x1c, 0x78, 0x7a, 0x33, 0x4b, 0x41, 0x77, + 0x78, 0xe5, 0x84, 0x0d, 0x07, 0x15, 0x5a, 0xe6, 0x67, 0x58, + 0xde, 0x50, 0x04, 0xda, 0x29, 0xb5, 0xde, 0x1d, 0x03, 0xe5, + 0x16, 0x62, 0x67, 0xd4, 0x36, 0xb5, 0x28, 0x97, 0x11, 0x39, + 0x3f, 0x2d, 0x28, 0xe2, 0x7c, 0xba, 0xbc, 0xb2, 0x36, 0xe3, + 0xe8, 0x4f, 0xcd, 0x20, 0xd6, 0x1b, 0xc4, 0x9c, 0xcd, 0xb3, + 0xbf, 0xbc, 0x63, 0xea, 0xe8, 0xc9, 0x60, 0x7f, 0xda, 0x72, + 0xe7, 0x3d, 0x70, 0x50, 0xda, 0xb9, 0xdb, 0x22, 0x6f, 0xce, + 0x60, 0x45, 0xd2, 0x2c, 0x6f, 0x28, 0x02, 0x6d, 0xf5, 0xbb, + 0x6f, 0xef, 0xe0, 0x93, 0x0b, 0x31, 0xd2, 0x6a, 0xa5, 0x3e, + 0x2b, 0x6f, 0xc9, 0xe2, 0x75, 0x16, 0x2b, 0x99, 0x26, 0x79, + 0xee, 0xcf, 0xa5, 0xff, 0x8c, 0xc3, 0xd0, 0x27, 0x72, 0xa2, + 0x0f, 0xca, 0xd0, 0x60, 0xc4, 0xed, 0x40, 0x03, 0x8c, 0x0d, + 0xbd, 0x51, 0xfc, 0x92, 0x80, 0x7c, 0x69, 0x02, 0xfc, 0x26, + 0x60, 0x90, 0x85, 0x1d, 0xbd, 0x7f, 0xfb, 0xd1, 0x94, 0x60, + 0xb9, 0x2d, 0x8f, 0x67, 0x94, 0x16, 0x02, 0x07, 0xa5, 0xfd, + 0xfb, 0x98, 0xba, 0x76, 0xf8, 0xb0, 0x63, 0x9b, 0x30, 0xe7, + 0xf8, 0x82, 0xb8, 0x57, 0xfc, 0xb1, 0xba, 0xee, 0x0f, 0x02, + 0x49, 0xc8, 0x65, 0x2c, 0xec, 0xe9, 0x49, 0x70, 0x5b, 0x21, + 0xe1, 0xe2, 0x0f, 0x50, 0x4f, 0xe9, 0x64, 0x94, 0xdf, 0xbb, + 0x0d, 0x89, 0x64, 0x1f, 0xc9, 0x1d, 0xab, 0xd7, 0x4f, 0x97, + 0x8e, 0x5b, 0x52, 0xfc, 0xb2, 0xe0, 0xb3, 0xc9, 0x52, 0x55, + 0x94, 0x35, 0x66, 0xf1, 0x8e, 0xac, 0x89, 0x7c, 0x56, 0xde, + 0x51, 0x07, 0xea, 0x2c, 0x56, 0xf1, 0x4c, 0xf2, 0x1f, 0x5d, + 0x89, 0x3d, 0x06, 0x6b, 0x45, 0xae, 0x83, 0xc6, 0x07, 0x05, + 0x45, 0x5f, 0xf0, 0xab, 0x6a, 0xd5, 0x06, 0x20, 0xe5, 0xd5, + 0x06, 0x33, 0x73, 0x75, 0x94, 0x76, 0x06, 0xf6, 0xb4, 0x45, + 0xa4, 0xfa, 0xe5, 0x38, 0xf4, 0xd3, 0xdd, 0xa8, 0xdc, 0x01, + 0x63, 0x8e, 0xdd, 0x66, 0x59, 0x26, 0x44, 0x1f, 0xf4, 0xc8, + 0xc7, 0xd9, 0x73, 0xc6, 0xee, 0x9d, 0xb9, 0x45, 0x73, 0x15, + 0xad, 0x83, 0xa7, 0xf3, 0xc7, 0x1b, 0xad, 0x1b, 0x66, 0x85, + 0x4f, 0x29, 0xc0, 0x1a, 0x66, 0x4d, 0xa5, 0x9f, 0x76, 0x81, + 0xad, 0x3e, 0xcb, 0x0f, 0xf9, 0x59, 0x2b, 0xd2, 0xb7, 0x4f, + 0xf9, 0xab, 0x8e, 0x16, 0x73, 0x9a, 0xcb, 0x5b, 0x80, 0x15, + 0x5a, 0xb8, 0xb7, 0xed, 0x01, 0xc0, 0x5a, 0xde, 0xe7, 0x78, + 0x94, 0x6a, 0x80, 0x4d, 0xf0, 0x20, 0x1a, 0xdd, 0x9f, 0x85, + 0xd8, 0x88, 0x1a, 0x0c, 0xf9, 0x55, 0x08, 0x38, 0xf0, 0x49, + 0xd5, 0x0b, 0x6b, 0x0a, 0xe1, 0x8a, 0xac, 0x5e, 0x6b, 0x4b, + 0x38, 0x54, 0x72, 0x9d, 0xd5, 0xfb, 0x07, 0x27, 0x04, 0x22, + 0xe3, 0xe7, 0x59, 0xe5, 0x04, 0xa4, 0xd8, 0xc7, 0x79, 0xac, + 0x07, 0x91, 0xea, 0xd7, 0x4f, 0xfb, 0x16, 0x59, 0x78, 0x9f, + 0x4f, 0x86, 0xef, 0x64, 0x45, 0x18, 0xea, 0x68, 0x56, 0xca, + 0xf2, 0xe5, 0xf6, 0x04, 0x4f, 0x7d, 0xf2, 0x5b, 0xa7, 0x98, + 0xd3, 0x7c, 0x56, 0xa6, 0x4d, 0x71, 0xe6, 0x4f, 0x1f, 0xf9, + 0xb1, 0x8a, 0xe6, 0x2a, 0x99, 0xc5, 0x8d, 0x25, 0x4d, 0x36, + 0x55, 0x1e, 0x31, 0xb2, 0x56, 0x67, 0xad, 0x9e, 0x31, 0x95, + 0xdf, 0x2c, 0xe6, 0xf7, 0x55, 0xb6, 0x43, 0x3f, 0xee, 0x0b, + 0x1a, 0xf4, 0x03, 0x83, 0xee, 0xa1, 0xea, 0x88, 0x7f, 0xbe, + 0x43, 0xd7, 0x1a, 0xf7, 0x55, 0x26, 0x89, 0xdc, 0xa0, 0x17, + 0x55, 0x8a, 0x16, 0x31, 0x4d, 0x20, 0x1a, 0x21, 0x0b, 0xf1, + 0x8e, 0xbd, 0x26, 0xa8, 0x57, 0xef, 0x8e, 0x1a, 0xfb, 0x52, + 0xad, 0xc5, 0x0b, 0xd1, 0xe3, 0xbe, 0x43, 0x9d, 0xf0, 0xb3, + 0x93, 0x73, 0x43, 0xa9, 0x44, 0xee, 0xce, 0x2f, 0xe3, 0x18, + 0x96, 0x34, 0x85, 0x01, 0xfb, 0x7e, 0xaf, 0xdd, 0x85, 0xea, + 0xd2, 0xdc, 0x0d, 0x23, 0x96, 0x2c, 0x27, 0xb3, 0xf3, 0x0c, + 0xbe, 0x4d, 0xc8, 0xd5, 0xf3, 0x72, 0x91, 0xd9, 0x5c, 0x57, + 0x27, 0x13, 0xdd, 0x2e, 0x26, 0xe0, 0x67, 0x41, 0x19, 0x52, + 0x26, 0x9f, 0xbb, 0xb2, 0xea, 0xd3, 0xdd, 0x3a, 0x44, 0x18, + 0xea, 0x29, 0xf9, 0x13, 0x5a, 0x66, 0xea, 0x05, 0x32, 0x4f, + 0x06, 0x12, 0x44, 0x46, 0x26, 0xff, 0xb2, 0x80, 0xde, 0x6c, + 0x96, 0x35, 0xb2, 0x89, 0xb9, 0xb5, 0x4f, 0x2e, 0x26, 0xa2, + 0x35, 0x61, 0xeb, 0xc0, 0xb1, 0x5a, 0xdd, 0xce, 0xeb, 0x2c, + 0x04, 0x0e, 0x89, 0x39, 0x35, 0xf3, 0xdc, 0x62, 0x67, 0x6c, + 0x07, 0x60, 0x47, 0xb2, 0x67, 0x64, 0x93, 0xde, 0xf9, 0xaa, + 0xdc, 0x8b, 0xa4, 0x72, 0x6a, 0xe3, 0xa9, 0xc3, 0x2b, 0xf6, + 0x6a, 0x62, 0x0e, 0x15, 0xfd, 0xb6, 0xa4, 0x4e, 0x58, 0x84, + 0xfa, 0xa1, 0xf3, 0x09, 0xfd, 0x74, 0xfa, 0xd0, 0xd4, 0xd5, + 0x21, 0xe7, 0x58, 0x47, 0xcf, 0xfc, 0x3e, 0x2c, 0x68, 0x56, + 0x0c, 0x49, 0x3e, 0xc1, 0x2e, 0x65, 0x3f, 0xbd, 0xcf, 0xda, + 0xd0, 0xb4, 0xed, 0xf3, 0xc2, 0x2f, 0x49, 0xb8, 0xed, 0xda, + 0xb0, 0x4b, 0x2d, 0xc3, 0xd0, 0xcb, 0x7c, 0xe3, 0xca, 0xfa, + 0xed, 0x27, 0xd7, 0x42, 0xca, 0x6c, 0x3d, 0xb8, 0x48, 0x3b, + 0x7c, 0x44, 0x5c, 0x77, 0x3d, 0xd4, 0xb0, 0x8d, 0x46, 0x72, + 0x3d, 0xba, 0x74, 0xa6, 0x6d, 0xc0, 0x5c, 0xc6, 0x7e, 0x7b, + 0x48, 0x21, 0x2d, 0x65, 0x6b, 0x41, 0x48, 0x59, 0x6d, 0x60, + 0x6e, 0xc9, 0x7e, 0xe5, 0xfe, 0x6e, 0x12, 0x99, 0x9a, 0x88, + 0x6a, 0x81, 0x12, 0x87, 0x8a, 0x18, 0xfa, 0xa3, 0xfe, 0xa8, + 0xaa, 0x3c, 0x62, 0xa7, 0xac, 0xce, 0x99, 0xff, 0x62, 0xe9, + 0x7d, 0x58, 0x0f, 0x2d, 0xaa, 0xaf, 0x2b, 0x65, 0x79, 0x93, + 0x7b, 0x02, 0xc6, 0xdf, 0x79, 0xcc, 0xb2, 0x4c, 0x88, 0x3e, + 0x2b, 0x53, 0xc9, 0x97, 0x7b, 0x82, 0xeb, 0x90, 0x0b, 0x4c, + 0x7b, 0x9e, 0xde, 0xce, 0x55, 0x68, 0xc9, 0xfa, 0x92, 0xc7, + 0x42, 0x74, 0xb8, 0xfa, 0x14, 0xdb, 0x42, 0x80, 0x72, 0xaf, + 0x41, 0x04, 0x92, 0xad, 0xca, 0x43, 0xb8, 0xd5, 0x4b, 0xf3, + 0xe9, 0xaf, 0xb8, 0x50, 0xa6, 0x7a, 0x60, 0xe3, 0xca, 0xea, + 0x4c, 0x3d, 0xa7, 0xc3, 0x7f, 0xd8, 0xef, 0x6a, 0xa7, 0xd1, + 0xb1, 0xa9, 0x9e, 0x5c, 0x4c, 0x87, 0x9d, 0xc5, 0x0b, 0xbc, + 0xdd, 0xd6, 0xf8, 0x32, 0x0b, 0xf0, 0x29, 0x8e, 0xa0, 0xe6, + 0x9d, 0xfd, 0xa7, 0xa6, 0xa9, 0xb4, 0x09, 0xa0, 0xc9, 0x15, + 0xa9, 0xac, 0x76, 0xa1, 0xc8, 0x3d, 0xa7, 0x5e, 0x59, 0xc8, + 0xbb, 0x2d, 0x93, 0x28, 0xa3, 0x94, 0xbb, 0x2b, 0xfc, 0xb9, + 0x32, 0x9e, 0x59, 0xf6, 0x9e, 0x11, 0xc8, 0xeb, 0x7d, 0xb5, + 0x1a, 0xd1, 0xc8, 0x3e, 0x51, 0x3a, 0x95, 0x6d, 0x9e, 0xed, + 0x1d, 0xd0, 0x51, 0x04, 0x6a, 0x3b, 0xf9, 0xf2, 0x51, 0x2e, + 0xce, 0xf6, 0x34, 0x8c, 0x1d, 0xb0, 0x01, 0x4c, 0x41, 0x8c, + 0x60, 0x21, 0x5e, 0xe0, 0x41, 0xfb, 0x28, 0x6c, 0x13, 0x79, + 0x01, 0xb1, 0xc2, 0x66, 0xf5, 0x3f, 0xcd, 0x38, 0x5c, 0xa3, + 0xf5, 0x84, 0x25, 0x9c, 0xf8, 0xad, 0xc2, 0x2b, 0x28, 0xb1, + 0xba, 0xc4, 0xdb, 0x61, 0x24, 0x3c, 0xba, 0x02, 0xca, 0xf8, + 0xbd, 0xb5, 0x28, 0x43, 0xb4, 0x38, 0xf0, 0xf4, 0x66, 0x96, + 0x82, 0xee, 0xf0, 0x09, 0xcb, 0x1a, 0x0e, 0x2a, 0xb4, 0x0f, + 0x19, 0x23, 0x96, 0x71, 0x29, 0xbf, 0x42, 0xf4, 0x96, 0x44, + 0x6e, 0x85, 0x78, 0xab, 0x19, 0x31, 0x85, 0xaa, 0xdc, 0x41, + 0x94, 0x48, 0xe4, 0x26, 0xdc, 0x4f, 0x6f, 0x67, 0xcb, 0x34, + 0x85, 0x7d, 0x3c, 0x08, 0xe7, 0xa6, 0x57, 0xb0, 0x36, 0x22, + 0xe7, 0x03, 0xaf, 0x84, 0x02, 0x0e, 0x3c, 0x83, 0x40, 0xeb, + 0x2d, 0x5c, 0xba, 0x97, 0xe1, 0x60, 0x2d, 0x6f, 0x92, 0x3c, + 0x4a, 0x35, 0x40, 0xc7, 0x1e, 0x04, 0x92, 0x53, 0xca, 0x58, + 0x1b, 0x11, 0x92, 0xe0, 0xb6, 0x42, 0x01, 0x07, 0x1e, 0xa0, + 0x95, 0xe0, 0x46, 0x56, 0x5b, 0x1d, 0x4d, 0x3e, 0x46, 0x24, + 0xaa, 0x68, 0x38, 0xa8, 0x95, 0x3c, 0xab, 0x70, 0x23, 0x2b, + 0xcc, 0xef, 0xc7, 0x1f, 0x23, 0x12, 0x55, 0x34, 0x1c, 0x54, + 0xab, 0x1e, 0xb3, 0x1f, 0xf4, 0xd6, 0x85, 0x71, 0xdb, 0x0b, + 0xf4, 0xad, 0x13, 0xdd, 0x77, 0x86, 0xb3, 0x9e, 0xeb, 0x9b, + 0x0e, 0x77, 0x76, 0x78, 0x26, 0x7f, 0x0e, 0x7d, 0xc7, 0x08, + 0x56, 0x61, 0xeb, 0xd9, 0xfa, 0x9d, 0xd5, 0xec, 0xd9, 0x0c, + 0xd1, 0x87, 0xd5, 0xed, 0x2a, 0x6b, 0xb6, 0x84, 0xfa, 0x29, + 0x2a, 0x29, 0x38, 0x1f, 0x1b, 0x23, 0x98, 0x3f, 0x38, 0x37, + 0x9a, 0x20, 0x9b, 0x47, 0x2a, 0xe2, 0xac, 0x57, 0x27, 0x09, + 0x2f, 0x08, 0x9e, 0xfa, 0x27, 0xb6, 0x8d, 0xf3, 0x65, 0xf8, + 0xac, 0x8f, 0x2d, 0x0e, 0x3c, 0x3d, 0xf8, 0xc4, 0xc1, 0xda, + 0x3c, 0x93, 0x42, 0xe7, 0xe2, 0xeb, 0x2d, 0x73, 0x25, 0x2b, + 0x71, 0xd7, 0x7e, 0x0f, 0x74, 0xd6, 0x71, 0x47, 0xc1, 0x01, + 0x7a, 0xa5, 0x25, 0xb2, 0x4a, 0x56, 0xe2, 0x6d, 0xfc, 0x1e, + 0xe8, 0x6f, 0xe2, 0x8e, 0x41, 0x02, 0xf4, 0x89, 0x4a, 0xa7, + 0xb0, 0xcb, 0x37, 0x81, 0x25, 0x12, 0x39, 0xe8, 0x37, 0x63, + 0x6b, 0x69, 0x42, 0x0d, 0xb0, 0x8e, 0x41, 0xa7, 0x6c, 0xd0, + 0xda, 0xb6, 0xbf, 0x80, 0x6c, 0x94, 0xba, 0x50, 0x59, 0x4c, + 0x41, 0x76, 0x30, 0xde, 0x6d, 0x39, 0x92, 0xff, 0x38, 0x28, + 0x6d, 0xbd, 0x8c, 0x11, 0xd6, 0x67, 0x30, 0xc3, 0x33, 0x0a, + 0xae, 0x6e, 0x32, 0x9c, 0xda, 0xcb, 0xae, 0x73, 0xf4, 0xa5, + 0xe3, 0xec, 0x33, 0xd3, 0x65, 0xc0, 0x5c, 0x8b, 0xc4, 0x98, + 0x95, 0xb6, 0x5c, 0x28, 0x53, 0x3d, 0x30, 0x90, 0x65, 0x75, + 0x8b, 0xe4, 0xd4, 0x05, 0x91, 0x45, 0x56, 0x2f, 0xd4, 0xc4, + 0x1c, 0x2a, 0x39, 0xaf, 0x8b, 0x9c, 0xef, 0x68, 0xc9, 0x02, + 0x35, 0xfc, 0x9d, 0x79, 0xc9, 0x17, 0x67, 0x7b, 0x1a, 0x46, + 0xef, 0x58, 0x09, 0x69, 0x0c, 0x66, 0xe6, 0xea, 0xeb, 0xec, + 0x0c, 0x2f, 0xab, 0x8a, 0x8b, 0x37, 0x09, 0x70, 0x9b, 0xae, + 0x4e, 0x12, 0x5e, 0x10, 0xff, 0x37, 0x4e, 0xaf, 0xd9, 0x25, + 0xca, 0x33, 0x9b, 0xdd, 0x6f, 0x7d, 0x93, 0xba, 0x82, 0x11, + 0x9c, 0xb9, 0x93, 0xc9, 0x80, 0x03, 0x8e, 0x2c, 0x6f, 0x15, + 0x84, 0xe6, 0x9d, 0xcd, 0xf4, 0x69, 0xba, 0xc6, 0x9d, 0xb4, + 0x47, 0x0b, 0xd8, 0x4d, 0x84, 0xcc, 0x15, 0xf5, 0x1c, 0xee, + 0xec, 0xf0, 0x4c, 0xfe, 0x1c, 0xfa, 0x4d, 0x10, 0xac, 0xc2, + 0x15, 0x71, 0x75, 0x8a, 0xc6, 0x9c, 0x0b, 0xcd, 0x3c, 0xae, + 0xc6, 0x43, 0x96, 0x32, 0xc3, 0x0c, 0x75, 0x34, 0x61, 0x33, + 0x9b, 0xfe, 0x87, 0x1c, 0x2e, 0xb0, 0x9b, 0x42, 0xf3, 0x4e, + 0x7c, 0xb7, 0x61, 0xf4, 0xf9, 0x49, 0x16, 0xbb, 0x79, 0x6f, + 0x33, 0x64, 0x16, 0x23, 0x52, 0xdf, 0x83, 0x0f, 0xf9, 0x39, + 0x12, 0xd2, 0x18, 0xcc, 0x0f, 0x17, 0x15, 0x1b, 0x18, 0x5e, + 0x95, 0xd7, 0xd5, 0x6e, 0x12, 0xe0, 0x70, 0x35, 0x40, 0x65, + 0x28, 0x68, 0xd9, 0x48, 0x40, 0xd2, 0x1e, 0x2d, 0x9c, 0x52, + 0x70, 0x04, 0xa3, 0x55, 0x6e, 0xc1, 0x4a, 0x24, 0x72, 0x13, + 0x6e, 0xc6, 0xd6, 0xd2, 0x84, 0x1a, 0xa3, 0xdf, 0x9c, 0x89, + 0x4a, 0x30, 0xbd, 0xf7, 0xa6, 0xd2, 0x4a, 0x0b, 0x01, 0xe2, + 0xb3, 0x9f, 0x9c, 0x4c, 0x4e, 0xa5, 0x25, 0x18, 0xbf, 0x9a, + 0x53, 0x69, 0x25, 0xe4, 0xe1, 0x71, 0xb8, 0xae, 0x4e, 0x26, + 0xa9, 0xe8, 0xa1, 0xf0, 0x0c, 0xad, 0x7b, 0x1c, 0xa1, 0x27, + 0x05, 0xec, 0x3a, 0xa6, 0xa9, 0xbf, 0x7b, 0xc4, 0xce, 0xd8, + 0x0e, 0xc0, 0x8e, 0xa7, 0xce, 0xc8, 0xe5, 0x7f, 0x31, 0x97, + 0x7b, 0xd5, 0x47, 0xcc, 0x29, 0x7e, 0x59, 0x70, 0xb8, 0x85, + 0x29, 0xcb, 0x4a, 0xfb, 0x33, 0x99, 0x47, 0x56, 0xe9, 0x03, + 0x8c, 0xac, 0xb6, 0x3a, 0x9a, 0x7c, 0x8c, 0x48, 0x97, 0xd0, + 0x70, 0x93, 0xe9, 0x78, 0x7a, 0x88, 0x8f, 0x54, 0x6e, 0xe1, + 0xd0, 0x47, 0x8f, 0x33, 0xcd, 0x13, 0x22, 0xee, 0x7a, 0x64, + 0xf1, 0x6c, 0x5b, 0x51, 0xff, 0xa4, 0x86, 0x68, 0x5b, 0xf7, + 0xd1, 0x39, 0x1b, 0x41, 0xf1, 0xf8, 0xc4, 0x0d, 0xb0, 0x91, + 0x4e, 0xfe, 0x5b, 0xa6, 0xb0, 0xdb, 0xd5, 0x37, 0x92, 0x78, + 0xc4, 0x0b, 0xaf, 0x83, 0xe4, 0x5e, 0x8f, 0x6b, 0x7c, 0x19, + 0xe4, 0x78, 0xf5, 0x47, 0x50, 0x73, 0xaf, 0x9f, 0x68, 0x5a, + 0x97, 0x98, 0x61, 0xf6, 0xc5, 0x5c, 0x97, 0x6d, 0x58, 0xc4, + 0xf7, 0x80, 0x68, 0x84, 0xbe, 0x85, 0x3f, 0xc5, 0x20, 0x1f, + 0x8b, 0xe1, 0x3f, 0xe8, 0x18, 0x24, 0xb0, 0x96, 0xbe, 0x6f, + 0xbf, 0xc9, 0x7e, 0x49, 0x40, 0x3e, 0xd5, 0x01, 0x7e, 0x13, + 0x30, 0x48, 0xa3, 0xef, 0xbf, 0xde, 0x2e, 0xda, 0xff, 0x6a, + 0x58, 0xa7, 0x23, 0x39, 0xff, 0x5d, 0x3a, 0x53, 0xd7, 0x60, + 0x2e, 0x63, 0x48, 0xce, 0x60, 0xb6, 0x3c, 0x5c, 0x54, 0x6c, + 0x60, 0xbb, 0x11, 0xda, 0xd2, 0x7b, 0x48, 0x06, 0xce, 0xb0, + 0x7f, 0xa0, 0x08, 0x77, 0x52, 0xa9, 0x7f, 0x3a, 0x06, 0x09, + 0x2c, 0xc4, 0xce, 0x6b, 0x3d, 0x44, 0xa6, 0x2a, 0x37, 0x91, + 0x68, 0xc2, 0xa6, 0xf8, 0x87, 0xe8, 0x11, 0x77, 0x3d, 0x32, + 0x32, 0x46, 0xef, 0xe2, 0x52, 0xbd, 0x84, 0x2b, 0xef, 0x88, + 0xdc, 0xc9, 0xf0, 0x95, 0x32, 0x62, 0xe6, 0x01, 0xc5, 0x64, + 0xd3, 0x16, 0x76, 0x95, 0xc5, 0x38, 0xcc, 0xf1, 0x91, 0x71, + 0xe6, 0x28, 0x6b, 0x8e, 0x54, 0xcf, 0xc1, 0x95, 0x27, 0xbf, + 0x54, 0xa3, 0x20, 0x70, 0xc2, 0x0b, 0x6b, 0x94, 0xbb, 0x3a, + 0xb9, 0x3c, 0x03, 0xba, 0x6e, 0x07, 0xb9, 0x79, 0x90, 0x3b, + 0xef, 0xc8, 0xbb, 0x5f, 0x91, 0x13, 0x81, 0x23, 0x18, 0x99, + 0xf6, 0x38, 0x81, 0x4e, 0x0a, 0x1b, 0x74, 0x8f, 0x91, 0xbd, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xc1, 0x99, 0xef, + 0x17, 0x8e, 0xe3, 0x23, 0x99, 0x10, 0x9f, 0xcc, 0xa1, 0xe1, + 0x83, 0x5d, 0xe0, 0x6a, 0x80, 0xca, 0x50, 0xd0, 0x71, 0x90, + 0x80, 0x67, 0x3c, 0x5a, 0xfb, 0xa4, 0xe0, 0x08, 0x82, 0x8d, + 0xd8, 0x63, 0x77, 0xaf, 0xbd, 0xc3, 0xd8, 0xeb, 0xb7, 0xa0, + 0xb2, 0x98, 0x82, 0xec, 0xd7, 0x93, 0xe9, 0xd1, 0x21, 0xc8, + 0x10, 0x5d, 0xe9, 0x7e, 0x68, 0x8c, 0x54, 0x6f, 0xd7, 0x5a, + 0xf2, 0xb8, 0x98, 0x06, 0x5f, 0xc7, 0x64, 0x8b, 0x98, 0x39, + 0xa9, 0x8d, 0x2e, 0xca, 0xf2, 0xe8, 0xcd, 0x64, 0xbc, 0xf7, + 0xa8, 0x14, 0xb0, 0x4a, 0xbc, 0xf4, 0x7e, 0xbd, 0x19, 0x4f, + 0xcd, 0x7b, 0x78, 0x10, 0x0d, 0x8f, 0xae, 0xa3, 0x6c, 0x44, + 0x0d, 0x06, 0x9d, 0xcb, 0x04, 0x1c, 0x78, 0xc5, 0xc0, 0xfe, + 0x77, 0xe4, 0x0d, 0x7a, 0xe0, 0xa0, 0x77, 0xb1, 0x75, 0x44, + 0xde, 0x5f, 0xc0, 0x8a, 0x63, 0xab, 0x19, 0x25, 0x47, 0x5e, + 0x92, 0xb3, 0x19, 0x77, 0xa3, 0x96, 0x5a, 0x45, 0x63, 0x55, + 0x87, 0x32, 0x5e, 0x9a, 0x54, 0x0a, 0x58, 0x25, 0x5e, 0x7a, + 0x3f, 0xbf, 0xed, 0xc6, 0x87, 0xdc, 0xfc, 0xf6, 0x90, 0x42, + 0x5a, 0xca, 0xd6, 0x82, 0x90, 0xb2, 0xda, 0xc0, 0xdc, 0x51, + 0xfc, 0x09, 0x94, 0xac, 0x07, 0xda, 0x3b, 0x3c, 0x13, 0xde, + 0x07, 0xdf, 0x82, 0x04, 0x2b, 0xd1, 0x94, 0x8d, 0x08, 0x25, + 0x4d, 0xea, 0x86, 0xcb, 0xb5, 0x0c, 0x4d, 0xd4, 0x83, 0xe6, + 0x98, 0x4e, 0x08, 0xc1, 0x81, 0x59, 0x1b, 0x34, 0xd7, 0xcc, + 0x5f, 0x20, 0x1b, 0x25, 0xcf, 0x14, 0x87, 0x13, 0x81, 0xfc, + 0x17, 0x6d, 0x9e, 0x35, 0x2c, 0xb2, 0xf0, 0xfd, 0x9e, 0xcf, + 0x1d, 0xc8, 0x8a, 0x30, 0x17, 0xd0, 0x62, 0xe7, 0x58, 0xa9, + 0x27, 0x7f, 0xcc, 0x53, 0x58, 0x8c, 0x8b, 0xfa, 0x49, 0x3c, + 0x62, 0xe4, 0xd8, 0x91, 0xa0, 0x19, 0x44, 0xe4, 0xfc, 0xb4, + 0xa0, 0x0e, 0x33, 0xad, 0xb5, 0x8d, 0xd8, 0x0a, 0x31, 0x92, + 0x2c, 0xb5, 0xf2, 0xde, 0x66, 0xc8, 0x2c, 0x46, 0xa4, 0x7d, + 0xc5, 0x1e, 0x31, 0x72, 0x10, 0x4a, 0x9a, 0x17, 0xcf, 0x55, + 0xa9, 0x18, 0x9a, 0x6b, 0xc5, 0x0f, 0xf3, 0x9c, 0x10, 0x41, + 0x21, 0xd8, 0xb6, 0xa2, 0x3d, 0x8b, 0xcf, 0xd0, 0xb6, 0x2d, + 0x61, 0x72, 0x36, 0x82, 0x21, 0x33, 0xda, 0x09, 0x22, 0xc2, + 0x84, 0xa6, 0x40, 0xb7, 0x22, 0x3b, 0x63, 0x75, 0x93, 0x7f, + 0xda, 0xab, 0x66, 0x14, 0x9f, 0xdc, 0x64, 0xfb, 0x77, 0x55, + 0x9f, 0xe6, 0x2b, 0x89, 0x05, 0x1b, 0x66, 0x65, 0x39, 0xb7, + 0x61, 0x5f, 0x74, 0x15, 0xd3, 0xc4, 0x61, 0x92, 0x27, 0x9b, + 0x5d, 0x50, 0x39, 0xb3, 0xfd, 0xba, 0xd1, 0xce, 0x3a, 0xeb, + 0x88, 0x62, 0xd1, 0x49, 0xf2, 0xac, 0xcf, 0x28, 0xfd, 0xb8, + 0x0e, 0x4e, 0x08, 0x44, 0x05, 0x0d, 0xb2, 0x09, 0x08, 0x8b, + 0x73, 0x4d, 0xf2, 0x9b, 0x0e, 0xe1, 0x6e, 0x31, 0xd2, 0x36, + 0xe2, 0x30, 0xc2, 0x59, 0xd2, 0x32, 0xa8, 0x6f, 0x9d, 0x55, + 0x6e, 0xa4, 0x8f, 0x17, 0x13, 0x70, 0xd2, 0xc1, 0xed, 0x29, + 0x13, 0xae, 0xbc, 0x59, 0x75, 0x88, 0x8f, 0x1d, 0x99, 0x36, + 0xcc, 0xc9, 0x9e, 0x52, 0x43, 0x34, 0xcc, 0x9a, 0x89, 0xfd, + 0xec, 0xc1, 0x99, 0x7c, 0x6d, 0xe5, 0x11, 0x61, 0x42, 0x53, + 0x20, 0xba, 0x11, 0xfc, 0xd0, 0xdb, 0xa8, 0xde, 0x6d, 0xb4, + 0xf3, 0xf4, 0xd9, 0x8a, 0x3f, 0xe6, 0x3a, 0x6b, 0xd9, 0xc2, + 0x81, 0xe1, 0x3d, 0xb3, 0xf3, 0x59, 0xde, 0xfa, 0xe5, 0xb7, + 0xc7, 0x22, 0xfb, 0xb1, 0xe5, 0x51, 0xc3, 0x06, 0xdf, 0x58, + 0xde, 0x2a, 0x88, 0x30, 0x17, 0x52, 0x31, 0x26, 0xb4, 0xcc, + 0x17, 0x0a, 0x64, 0x9e, 0x0c, 0x24, 0x88, 0x8c, 0x0d, 0x9a, + 0xcb, 0x13, 0xa5, 0x6e, 0x50, 0xea, 0xcb, 0x45, 0x0b, 0xf9, + 0xc7, 0x10, 0x0d, 0xf1, 0x8d, 0x8f, 0x91, 0xab, 0x12, 0x83, + 0x51, 0x2a, 0x91, 0x9b, 0xec, 0x81, 0x53, 0x7a, 0x8d, 0xbc, + 0xd4, 0x47, 0x2a, 0x86, 0x81, 0xab, 0xf2, 0xbe, 0x2a, 0xb0, + 0x10, 0x38, 0x61, 0xe4, 0xd4, 0x4a, 0x5b, 0x50, 0x39, 0xf6, + 0x53, 0x6a, 0x1f, 0x97, 0x39, 0x1e, 0xac, 0x61, 0x14, 0x6c, + 0x5b, 0x57, 0xd1, 0xf8, 0xac, 0x7f, 0xa2, 0x0e, 0x17, 0x58, + 0xac, 0x21, 0x98, 0x27, 0x3e, 0xba, 0xd1, 0x7a, 0x5d, 0x3b, + 0x7c, 0x58, 0xd0, 0xac, 0x18, 0x92, 0x7c, 0x41, 0x5c, 0xca, + 0x7e, 0xb9, 0x5d, 0x77, 0x03, 0xd4, 0xc3, 0x57, 0xa0, 0x63, + 0xe2, 0xe3, 0xc3, 0xce, 0x78, 0xb4, 0x35, 0x8b, 0x03, 0x10, + 0xc8, 0xdb, 0x3a, 0x0e, 0x8b, 0xb1, 0x55, 0xac, 0x3a, 0x65, + 0xf6, 0xa2, 0x46, 0x11, 0xc8, 0x4b, 0xc1, 0xb2, 0x36, 0x68, + 0x6d, 0x5b, 0xbe, 0x40, 0x36, 0x4a, 0x5d, 0x28, 0xcd, 0x26, + 0xc1, 0x3b, 0x77, 0x12, 0x44, 0x47, 0xcb, 0x8f, 0x80, 0xad, + 0x44, 0x76, 0xc6, 0xea, 0xe5, 0xfe, 0x77, 0x95, 0x3a, 0x63, + 0xa2, 0x08, 0xd4, 0x76, 0x31, 0x27, 0xa2, 0x5c, 0x5f, 0x2f, + 0x68, 0xdb, 0x3a, 0xa3, 0xf6, 0x4b, 0x5f, 0x73, 0x1c, 0x43, + 0xdf, 0x8d, 0x5f, 0x53, 0x09, 0xfe, 0x62, 0xed, 0xf6, 0x69, + 0xb9, 0xa2, 0x3b, 0xe7, 0xc3, 0xf8, 0xd2, 0x04, 0x3b, 0x4c, + 0xc0, 0xe3, 0xc9, 0x3a, 0xb9, 0xfe, 0xa1, 0xcd, 0xec, 0x1a, + 0x8a, 0x66, 0xce, 0x10, 0xec, 0xf3, 0x86, 0x0a, 0xa2, 0xe8, + 0xa1, 0x7e, 0xc6, 0x95, 0x32, 0x4a, 0x8e, 0xbc, 0xe7, 0xa5, + 0x32, 0xee, 0x85, 0xef, 0xb4, 0x8a, 0xc6, 0xaa, 0x7d, 0xaf, + 0x8b, 0x76, 0x8d, 0x06, 0x89, 0xa2, 0x8b, 0x97, 0x15, 0xd4, + 0x5b, 0x42, 0x7d, 0xf5, 0x24, 0x67, 0x30, 0x5b, 0x1e, 0x2e, + 0x2a, 0x36, 0x30, 0xbc, 0xe9, 0x6d, 0x69, 0xdc, 0x24, 0x03, + 0xdf, 0xb6, 0xa4, 0x3b, 0xa7, 0x03, 0xa5, 0x51, 0xa4, 0xaa, + 0xeb, 0x6a, 0xcc, 0x21, 0xdf, 0x9b, 0x64, 0x8c, 0x1d, 0x07, + 0xa4, 0xb9, 0xcb, 0x56, 0x1d, 0xd3, 0x7b, 0x51, 0x23, 0xe9, + 0x64, 0xc4, 0x23, 0x40, 0x34, 0x79, 0xfd, 0xc9, 0x73, 0xd3, + 0x34, 0x18, 0x31, 0xaa, 0x10, 0x70, 0x23, 0x92, 0x73, 0xe1, + 0x83, 0x32, 0x88, 0x0b, 0x3b, 0xab, 0x83, 0x1c, 0x66, 0x99, + 0xa9, 0xd9, 0x73, 0x14, 0x69, 0x16, 0xd6, 0x14, 0x01, 0xd7, + 0x9b, 0xbc, 0xd6, 0x96, 0x70, 0xa8, 0xe4, 0xf9, 0x69, 0x35, + 0x18, 0x6f, 0xd7, 0xfd, 0x49, 0x9e, 0x1c, 0x14, 0xd7, 0xbf, + 0x46, 0xe9, 0x6b, 0xd2, 0x18, 0x80, 0xbc, 0x1d, 0xbd, 0x1e, + 0xe0, 0x5d, 0x37, 0xe2, 0xbd, 0xdd, 0x48, 0xfc, 0x96, 0x64, + 0xbc, 0xce, 0x42, 0x73, 0xaf, 0x87, 0x7a, 0xd5, 0x5d, 0x63, + 0xaf, 0x5a, 0xc2, 0xe4, 0x6c, 0xc7, 0x42, 0x66, 0x1f, 0x48, + 0xd3, 0xdf, 0xaa, 0x79, 0x45, 0xf1, 0xd3, 0x1b, 0x9e, 0x2e, + 0x12, 0x7e, 0x1f, 0x11, 0x98, 0x7a, 0x8d, 0x45, 0xfe, 0x73, + 0x1d, 0xd4, 0x8d, 0x61, 0xa1, 0x91, 0xff, 0xb8, 0x98, 0xcd, + 0x53, 0x75, 0x74, 0x1c, 0xd5, 0xa1, 0xaa, 0x9b, 0x74, 0xca, + 0x2f, 0x87, 0x8c, 0x22, 0x53, 0x96, 0xe4, 0x99, 0x47, 0xbf, + 0x13, 0x54, 0xca, 0x96, 0x47, 0x0d, 0x9c, 0x29, 0xb7, 0x83, + 0xe4, 0x89, 0xae, 0xcf, 0xa5, 0xd2, 0xef, 0x4a, 0x22, 0xf9, + 0xa5, 0x83, 0xdd, 0x2b, 0x43, 0x0a, 0xae, 0x2e, 0xd9, 0xdd, + 0xe1, 0x95, 0x24, 0xc5, 0xa2, 0x54, 0xe1, 0xf5, 0x1b, 0xc1, + 0xa6, 0xf4, 0xd9, 0xbb, 0x22, 0x0c, 0x75, 0xf5, 0x9d, 0xe8, + 0x2d, 0x33, 0x75, 0xe3, 0x19, 0xc6, 0x03, 0x09, 0x22, 0x23, + 0x52, 0x39, 0x35, 0x90, 0xb5, 0x80, 0xf4, 0x7b, 0x35, 0x31, + 0x07, 0xeb, 0x9f, 0x5b, 0x52, 0x27, 0x05, 0xbf, 0x86, 0xf9, + 0x23, 0xa5, 0xe5, 0xe6, 0x86, 0x91, 0x88, 0x1f, 0x5f, 0x5e, + 0x05, 0x30, 0x6c, 0xa9, 0x50, 0xed, 0x22, 0x72, 0x7e, 0x5a, + 0x50, 0x07, 0xf8, 0xb7, 0xbb, 0xa7, 0x6c, 0x05, 0xd3, 0x60, + 0x2e, 0xa4, 0x62, 0x4c, 0xab, 0x5b, 0x2e, 0x14, 0xc8, 0xff, + 0x18, 0x48, 0xd3, 0xdb, 0xff, 0x22, 0x53, 0x15, 0xfa, 0xa9, + 0x34, 0x61, 0x53, 0x7c, 0xa2, 0x74, 0xe9, 0xda, 0xff, 0x19, + 0x9a, 0xe2, 0x0f, 0x9e, 0x3e, 0x31, 0xa1, 0xd7, 0x0f, 0x54, + 0xf1, 0x49, 0xd9, 0x4a, 0x9a, 0x6c, 0x2c, 0x42, 0x7d, 0xb1, + 0x98, 0xe5, 0x9f, 0x3a, 0x7d, 0x68, 0x6a, 0x8b, 0xf1, 0x92, + 0x2c, 0xc2, 0x29, 0xfd, 0xfb, 0x48, 0xbb, 0x40, 0x7a, 0xdc, + 0xfb, 0xf9, 0xe2, 0x94, 0xae, 0xcc, 0x29, 0xf2, 0x5e, 0xef, + 0xbf, 0x0f, 0x70, 0xcf, 0xfa, 0x71, 0xbf, 0x8f, 0x24, 0x7e, + 0x4b, 0x32, 0x5e, 0x67, 0x57, 0x86, 0xb3, 0x69, 0x96, 0x25, + 0x11, 0x9d, 0xb3, 0xa0, 0x8f, 0xf4, 0xc0, 0x05, 0x57, 0x17, + 0xed, 0xf0, 0x4b, 0xd9, 0xf5, 0xbe, 0x21, 0x7a, 0x4b, 0x22, + 0x37, 0xa3, 0x3c, 0xb4, 0xed, 0xf9, 0x46, 0x80, 0x68, 0xf2, + 0x39, 0x51, 0xe6, 0x65, 0x68, 0x30, 0x62, 0x97, 0x20, 0xe0, + 0x46, 0xe7, 0x34, 0x2d, 0xaa, 0x4c, 0xd1, 0x7b, 0x83, 0x2e, + 0xaa, 0xd7, 0x2c, 0x62, 0x9a, 0x40, 0x34, 0x42, 0x72, 0xad, + 0xc2, 0xbe, 0xe8, 0x2a, 0x65, 0x4b, 0xc2, 0xe7, 0x4e, 0xf5, + 0xba, 0xa0, 0x72, 0xa5, 0xb5, 0x74, 0xb1, 0x78, 0x06, 0xb7, + 0xdc, 0x0e, 0xb1, 0xf2, 0xe3, 0x76, 0x1d, 0x53, 0xb5, 0xbe, + 0x11, 0x06, 0xdb, 0x9b, 0xaf, 0x74, 0xf7, 0xf8, 0xdb, 0x90, + 0xed, 0x63, 0xe0, 0xe5, 0x11, 0xf0, 0xe2, 0xf2, 0x02, 0x11, + 0x90, 0x92, 0xcd, 0x93, 0x02, 0x52, 0x6c, 0x82, 0xdd, 0x56, + 0xe2, 0xa9, 0xd6, 0xdf, 0xa8, 0x5d, 0x41, 0xe9, 0x4e, 0xbd, + 0xa8, 0x85, 0x40, 0xe0, 0x47, 0x16, 0xd6, 0xeb, 0xee, 0x24, + 0x88, 0x8e, 0x55, 0xdd, 0xc3, 0x99, 0x88, 0xec, 0x4f, 0x17, + 0x09, 0x3f, 0xee, 0xe9, 0x90, 0x5f, 0xc0, 0xaf, 0x78, 0xb8, + 0xa8, 0xd8, 0xc0, 0xb5, 0x22, 0x77, 0x67, 0xf6, 0x90, 0x0c, + 0x14, 0xb9, 0x5d, 0x62, 0x8c, 0xd1, 0x12, 0x1e, 0x5d, 0x01, + 0x65, 0x7c, 0xbf, 0xbb, 0x14, 0xc0, 0x3e, 0x90, 0x65, 0x7d, + 0x97, 0xf2, 0x8a, 0x21, 0x65, 0x36, 0xff, 0x5c, 0x24, 0xfc, + 0x3e, 0x22, 0x86, 0x7e, 0x1f, 0x16, 0x34, 0x2b, 0x06, 0xc5, + 0x1f, 0x81, 0x17, 0xd3, 0xfe, 0xbf, 0x86, 0x6d, 0x49, 0x82, + 0x21, 0x3a, 0x5c, 0x7d, 0x0a, 0x8c, 0x21, 0x40, 0x39, 0xb6, + 0xc1, 0x02, 0x49, 0xb7, 0xf7, 0x07, 0x1e, 0xff, 0x7c, 0x62, + 0x81, 0x6d, 0x1e, 0xa8, 0x21, 0x92, 0x71, 0x94, 0xf7, 0xd8, + 0x0a, 0xbd, 0xcf, 0x31, 0x46, 0x89, 0x09, 0x0f, 0xcf, 0xe1, + 0xd3, 0x3e, 0xbe, 0xbc, 0x0a, 0x60, + }, + { + /* 3 */ + 0xa8, 0x78, 0x41, 0x9a, 0x63, 0x9a, 0xaa, 0xcc, 0x6d, 0x6b, + 0xb6, 0x2d, 0xbf, 0x63, 0x8e, 0x1b, 0xb4, 0x31, 0xad, 0x42, + 0xc9, 0x42, 0x37, 0x9b, 0xc6, 0x80, 0x29, 0xcb, 0xc0, 0xc9, + 0x15, 0xf8, 0x96, 0xde, 0x29, 0xd5, 0x90, 0xd5, 0x18, 0x10, + 0xbc, 0xed, 0x40, 0xd2, 0x7a, 0x90, 0xf0, 0x4e, 0x1e, 0xe4, + 0x7c, 0xcc, 0x37, 0xcc, 0xa4, 0x79, 0x97, 0x9a, 0x27, 0xb6, + 0xd7, 0x37, 0xe2, 0xd3, 0x8a, 0x97, 0xc5, 0x0d, 0x3a, 0x0d, + 0x85, 0x47, 0x17, 0x06, 0xdf, 0x34, 0x05, 0x3a, 0x6b, 0xad, + 0xf5, 0x02, 0xcd, 0x8d, 0x2d, 0x8d, 0xe6, 0x05, 0x54, 0x61, + 0x14, 0x71, 0xb0, 0x2d, 0x33, 0x2f, 0x9f, 0x98, 0x64, 0x8f, + 0x0e, 0x8f, 0x01, 0xbf, 0x52, 0x33, 0xb9, 0x79, 0xcb, 0x0e, + 0x0a, 0x96, 0xa5, 0xa7, 0xef, 0xe8, 0x04, 0xe8, 0xc1, 0x3f, + 0xfb, 0x57, 0xfc, 0x26, 0x9d, 0x04, 0x86, 0xa3, 0x13, 0x3b, + 0xd2, 0xbe, 0x50, 0xbe, 0xcf, 0x8a, 0x01, 0xa6, 0x6d, 0xbd, + 0xf5, 0x50, 0xea, 0x6b, 0x39, 0x25, 0x53, 0x79, 0x38, 0x79, + 0x04, 0xb9, 0x8b, 0xcc, 0xa1, 0x27, 0xaa, 0x38, 0x28, 0x1d, + 0xac, 0xe1, 0xa2, 0xb2, 0x9a, 0xb2, 0xd8, 0x90, 0x15, 0x89, + 0x05, 0x8d, 0x2c, 0x9a, 0x7c, 0x7b, 0x2d, 0x9d, 0xba, 0xf1, + 0xa3, 0xf1, 0x7d, 0x56, 0xd0, 0x20, 0x9b, 0x42, 0x30, 0xa3, + 0x94, 0x3e, 0x83, 0xd1, 0x88, 0x57, 0xa4, 0x57, 0x9c, 0xe8, + 0xf9, 0xd8, 0x26, 0x9f, 0xb4, 0xa4, 0x91, 0x75, 0x86, 0xff, + 0x23, 0x75, 0xf2, 0x75, 0x13, 0xa3, 0x9f, 0xe3, 0xc9, 0x17, + 0x73, 0xf2, 0xbe, 0x0d, 0xb9, 0xee, 0x03, 0x30, 0xae, 0x30, + 0x5c, 0x68, 0x50, 0xbc, 0x63, 0xc0, 0xe2, 0xae, 0x1d, 0x40, + 0x76, 0xd3, 0x45, 0xda, 0x89, 0xda, 0x7a, 0xed, 0xad, 0xb9, + 0x32, 0xee, 0x04, 0x89, 0xa2, 0x5a, 0x0f, 0x72, 0x3e, 0x66, + 0xfa, 0x66, 0x52, 0xdd, 0xaa, 0x4d, 0xf2, 0x5b, 0x8a, 0xfa, + 0x71, 0x88, 0x5a, 0xf9, 0xb7, 0x21, 0x85, 0x21, 0xfa, 0xac, + 0x63, 0x40, 0xf5, 0x84, 0x60, 0x85, 0xeb, 0x7c, 0xa0, 0x89, + 0x44, 0xca, 0x52, 0xca, 0x4e, 0x74, 0x9d, 0x6c, 0x13, 0xae, + 0x5a, 0x52, 0xa9, 0xdb, 0x92, 0x47, 0xca, 0xfd, 0x69, 0xfd, + 0x6a, 0x4c, 0xc4, 0x0f, 0xf3, 0x72, 0xe9, 0x69, 0x02, 0x2e, + 0xe2, 0xa0, 0xfc, 0x1b, 0x84, 0x1b, 0x5b, 0xd3, 0x2d, 0x25, + 0xca, 0x6c, 0xd6, 0x84, 0x2b, 0x24, 0x34, 0xfa, 0xfd, 0x0b, + 0x5f, 0x0b, 0x6f, 0x4a, 0x1d, 0xf0, 0xeb, 0x2c, 0x88, 0x5f, + 0x20, 0xa5, 0xee, 0xc8, 0x1a, 0x63, 0x4c, 0x63, 0xcd, 0x37, + 0xa5, 0xc0, 0xdc, 0x4f, 0xa0, 0x4c, 0xfe, 0x84, 0x6d, 0x19, + 0x92, 0x34, 0xe8, 0x34, 0x51, 0xdf, 0x5c, 0x18, 0xfa, 0xd0, + 0x14, 0xe8, 0x6f, 0xf1, 0x1a, 0x7d, 0x9f, 0xe4, 0xce, 0xe4, + 0xd6, 0x25, 0xef, 0x78, 0x94, 0x16, 0x44, 0xce, 0x10, 0xb3, + 0x24, 0xdb, 0xf7, 0xab, 0x3d, 0xab, 0x64, 0xf9, 0x3e, 0xfe, + 0x62, 0xe9, 0x81, 0x3d, 0x6e, 0xe6, 0x1f, 0x53, 0x34, 0xc6, + 0x98, 0xc6, 0x59, 0x6e, 0x89, 0x43, 0x7b, 0x9e, 0x83, 0x98, + 0x3f, 0xcb, 0xd2, 0xc3, 0xe2, 0x38, 0x22, 0x38, 0x46, 0xc5, + 0x48, 0x37, 0x92, 0xe0, 0xcd, 0x22, 0xf9, 0xe1, 0x18, 0xd0, + 0x0f, 0xf0, 0x53, 0xf0, 0xef, 0x0b, 0xd3, 0x09, 0x2c, 0x46, + 0xec, 0x53, 0x69, 0x83, 0x37, 0xe0, 0x25, 0x15, 0x6d, 0x15, + 0xab, 0x73, 0x3f, 0x58, 0x0f, 0x54, 0x74, 0x6d, 0x84, 0x8d, + 0x6a, 0x9a, 0xa9, 0x02, 0x23, 0x02, 0xe7, 0xba, 0x06, 0x52, + 0xad, 0x08, 0x7b, 0x23, 0x39, 0xb9, 0x3f, 0x11, 0x20, 0x45, + 0x5c, 0x45, 0x4f, 0xcb, 0xcf, 0x5f, 0xaa, 0xd7, 0x91, 0x5c, + 0xa3, 0x4d, 0xae, 0x4c, 0x32, 0xa6, 0x07, 0xa6, 0xe1, 0xbe, + 0x29, 0xf8, 0xbd, 0xdd, 0x84, 0x07, 0x05, 0x4b, 0x10, 0x21, + 0x0a, 0xa0, 0x62, 0xa0, 0x0b, 0xb3, 0x23, 0x0e, 0x89, 0xc5, + 0x09, 0x62, 0x4e, 0x43, 0x46, 0xb0, 0x5b, 0xf9, 0x2f, 0xf9, + 0x67, 0xfb, 0xc8, 0xab, 0x6a, 0x62, 0x1f, 0x2f, 0x70, 0x9f, + 0x6c, 0xae, 0xda, 0x3e, 0x47, 0x3e, 0xac, 0xc8, 0x42, 0xc1, + 0xa6, 0xf8, 0x40, 0x47, 0xb2, 0xe9, 0xbc, 0xc0, 0xa8, 0x12, + 0xf8, 0x12, 0xd3, 0x23, 0x36, 0x87, 0x8c, 0x48, 0x25, 0xf8, + 0x32, 0x38, 0x68, 0x37, 0x39, 0x16, 0xbe, 0x16, 0xde, 0x94, + 0x3a, 0x23, 0x15, 0x58, 0xd3, 0xbe, 0x40, 0x89, 0x0b, 0xeb, + 0xdd, 0x4e, 0x03, 0x4e, 0x20, 0x81, 0xd2, 0xaf, 0x41, 0xfb, + 0x19, 0x03, 0x83, 0xe8, 0x3e, 0xa6, 0x68, 0x4f, 0xf3, 0x4f, + 0xb2, 0xdc, 0xd1, 0x86, 0xf6, 0xff, 0xc5, 0xf3, 0x7e, 0x55, + 0xfe, 0xe9, 0x10, 0xc3, 0x2e, 0xc3, 0xc6, 0x84, 0x86, 0xce, + 0x55, 0x8a, 0xa9, 0x2e, 0xb0, 0xc7, 0xa9, 0xcf, 0x09, 0x90, + 0xcc, 0x90, 0x57, 0xdb, 0x73, 0xb2, 0xea, 0x05, 0xeb, 0xcc, + 0x53, 0x03, 0x28, 0xb3, 0x11, 0xd3, 0xf5, 0xd3, 0xf2, 0x1d, + 0xb6, 0x1b, 0x74, 0xca, 0xf7, 0xf5, 0xbb, 0x46, 0x7c, 0x8f, + 0xd0, 0x9e, 0x25, 0x9e, 0xa7, 0x7b, 0x61, 0xcf, 0x2f, 0x3d, + 0x49, 0x25, 0xfc, 0xaa, 0xf2, 0x81, 0xf6, 0xbb, 0xe6, 0xbb, + 0x50, 0x60, 0x0e, 0x2b, 0x43, 0xa9, 0xdf, 0xe6, 0x65, 0x67, + 0xbf, 0xda, 0x70, 0x0c, 0xca, 0x0c, 0x17, 0x1a, 0x14, 0x2f, + 0x68, 0x30, 0xd9, 0xca, 0x96, 0x10, 0xf4, 0xb5, 0x85, 0x87, + 0x82, 0x87, 0x1b, 0x12, 0x4a, 0xb8, 0x48, 0x59, 0xe4, 0x82, + 0xee, 0x37, 0xcb, 0xa4, 0xa5, 0xc2, 0xde, 0xc2, 0x54, 0xd9, + 0x85, 0xe7, 0xe2, 0x8e, 0x75, 0xde, 0x4d, 0x7a, 0x06, 0x34, + 0x73, 0x3c, 0x64, 0x3c, 0x4b, 0x72, 0x44, 0x93, 0x0b, 0xf0, + 0x3b, 0x64, 0x8b, 0x50, 0xf8, 0xdd, 0x63, 0xff, 0x4a, 0xff, + 0x8d, 0xf6, 0xc2, 0x5d, 0x5e, 0x7a, 0x92, 0x4a, 0x3b, 0x97, + 0xbd, 0x77, 0xe0, 0x18, 0x57, 0x18, 0x2e, 0x34, 0x28, 0x5e, + 0xd0, 0x60, 0x71, 0x57, 0xef, 0x20, 0x75, 0xc9, 0x9d, 0xc4, + 0xbb, 0xc4, 0xbe, 0xd4, 0x8f, 0x11, 0xd6, 0x96, 0xf8, 0xbb, + 0x06, 0x72, 0x03, 0x1a, 0xd8, 0x1e, 0x32, 0x1e, 0xc4, 0x39, + 0x22, 0xa8, 0xe4, 0x78, 0xfc, 0x32, 0xa4, 0x28, 0x4c, 0xec, + 0xce, 0xbd, 0x83, 0xbd, 0xba, 0x6d, 0x04, 0xdd, 0x77, 0xb1, + 0x52, 0x83, 0x2e, 0x6f, 0x4b, 0x6f, 0xf5, 0x8b, 0x48, 0x8b, + 0x0c, 0x08, 0x5e, 0x97, 0x20, 0x69, 0x3d, 0x48, 0x78, 0x27, + 0xc0, 0x4f, 0x78, 0x8c, 0xdd, 0x8c, 0x74, 0x58, 0x57, 0x48, + 0xa3, 0x75, 0x6c, 0xdd, 0xce, 0x92, 0x04, 0x99, 0xe3, 0x28, + 0xf9, 0x28, 0x72, 0x5c, 0x78, 0xe2, 0xb3, 0xa0, 0x93, 0xf9, + 0xf2, 0x60, 0xb3, 0xb2, 0x96, 0x74, 0x02, 0x74, 0x81, 0xfe, + 0x9c, 0xca, 0x7e, 0x13, 0xaf, 0x02, 0x43, 0xb0, 0xb6, 0x9c, + 0x3d, 0x56, 0x54, 0x56, 0x0e, 0xb5, 0xfa, 0xf1, 0x91, 0x9b, + 0x68, 0x54, 0x6c, 0xc8, 0x51, 0x12, 0x6a, 0x6f, 0x86, 0x6f, + 0xda, 0x2d, 0xb1, 0xef, 0xb4, 0x7f, 0x79, 0x86, 0x68, 0x94, + 0xeb, 0xe6, 0xb1, 0x41, 0x1a, 0x41, 0x42, 0x7c, 0xc3, 0xfb, + 0x33, 0xc7, 0x67, 0x1a, 0xd1, 0xfc, 0x98, 0x1b, 0x5f, 0xb9, + 0xc5, 0xb9, 0xb7, 0xda, 0x08, 0x79, 0xee, 0xa1, 0xa4, 0xc5, + 0x5c, 0xde, 0x23, 0x58, 0xcc, 0x9d, 0xf6, 0x9d, 0xd2, 0x9c, + 0x64, 0xb4, 0x35, 0x31, 0xee, 0xf6, 0x38, 0xae, 0xab, 0x62, + 0x99, 0x84, 0x51, 0x84, 0x6e, 0xf5, 0x4f, 0xc3, 0x52, 0x55, + 0x43, 0x51, 0x2a, 0x33, 0xb2, 0x05, 0xde, 0x7e, 0xad, 0x7e, + 0x7c, 0xe9, 0x82, 0x13, 0x22, 0x3b, 0xfb, 0xad, 0x9e, 0xa8, + 0x99, 0xac, 0x17, 0xb3, 0x6a, 0xb3, 0x4a, 0xcd, 0x16, 0xa0, + 0xb2, 0x89, 0xf0, 0x6a, 0x81, 0xc6, 0x89, 0x8d, 0x1d, 0x13, + 0x08, 0x13, 0x41, 0x7e, 0x35, 0xae, 0x3b, 0x4c, 0xf9, 0x08, + 0xcf, 0x85, 0xdf, 0x1c, 0x4c, 0x4a, 0x45, 0x4a, 0x2d, 0x36, + 0xde, 0x0b, 0xd8, 0xeb, 0xef, 0x45, 0xf1, 0x59, 0x0d, 0xdf, + 0xae, 0x72, 0x67, 0x72, 0x6b, 0xf3, 0x96, 0x3c, 0x4a, 0x0b, + 0x22, 0x67, 0x08, 0xb8, 0x31, 0xd4, 0x56, 0x29, 0x09, 0x29, + 0xe0, 0x01, 0x7b, 0xcb, 0x04, 0xa4, 0x4f, 0x09, 0x0f, 0xdd, + 0x70, 0xe7, 0x36, 0xe6, 0xed, 0xe6, 0x31, 0x9f, 0xe9, 0x2a, + 0x39, 0x1e, 0x3f, 0xed, 0x29, 0x0a, 0x73, 0xfd, 0xee, 0xf8, + 0xdf, 0xf8, 0xf5, 0xa6, 0xcb, 0x82, 0xdd, 0x66, 0xc3, 0xdf, + 0x8d, 0x22, 0x1d, 0xfe, 0xa4, 0xd2, 0x05, 0xd2, 0x60, 0x40, + 0xb5, 0x32, 0xc3, 0xce, 0x2b, 0x05, 0x46, 0xfb, 0x8d, 0x14, + 0xfe, 0x3b, 0xf1, 0x3b, 0x33, 0x22, 0x4d, 0x4c, 0x88, 0xec, + 0x6a, 0xf1, 0x3d, 0xe5, 0xf1, 0x9b, 0x2e, 0xa5, 0xd4, 0xa5, + 0x94, 0x59, 0x2c, 0x83, 0xa7, 0xd1, 0x23, 0xd4, 0xc1, 0x4f, + 0x7d, 0x38, 0x98, 0x94, 0x8a, 0x94, 0x5a, 0x6c, 0x7f, 0x16, + 0x73, 0x15, 0x1d, 0x8a, 0x21, 0xb2, 0x17, 0xa2, 0x31, 0x96, + 0xa9, 0x96, 0xbd, 0xd6, 0x79, 0x44, 0xde, 0x1d, 0x66, 0xa9, + 0x18, 0x0b, 0x2c, 0x2a, 0xf2, 0xfb, 0x0c, 0xfb, 0x80, 0x41, + 0xce, 0xf9, 0xc7, 0x6a, 0x64, 0x0c, 0x49, 0x26, 0x35, 0x4d, + 0xb5, 0x01, 0xf0, 0x01, 0x92, 0x5d, 0x03, 0x29, 0xb7, 0x04, + 0xdc, 0xf0, 0xfd, 0xbd, 0x88, 0x3a, 0x55, 0x19, 0xa7, 0x19, + 0xbc, 0x69, 0x2b, 0x77, 0x67, 0x64, 0xad, 0xa7, 0x12, 0x9d, + 0x67, 0x45, 0x07, 0x70, 0x44, 0x70, 0x8c, 0x49, 0x90, 0x6e, + 0xe7, 0x03, 0x59, 0x44, 0x31, 0x01, 0xe1, 0xba, 0x24, 0x05, + 0xb6, 0x05, 0x9f, 0xea, 0x0f, 0x8d, 0x2e, 0x14, 0x2a, 0xb6, + 0x8f, 0x0c, 0xb5, 0x86, 0xe5, 0x48, 0x66, 0x48, 0xca, 0x8c, + 0xd8, 0x59, 0x75, 0xe3, 0x94, 0x66, 0xc8, 0xe0, 0x64, 0x5f, + 0xdf, 0x6e, 0x76, 0x6e, 0x48, 0x70, 0xb2, 0xc6, 0x03, 0x7b, + 0xa5, 0x76, 0x95, 0x29, 0xb1, 0x1f, 0x06, 0x60, 0x9f, 0x60, + 0xb8, 0xd0, 0xa0, 0xbb, 0xc6, 0x43, 0x07, 0x9f, 0x3a, 0x80, + 0x08, 0xf1, 0x05, 0x50, 0x31, 0x50, 0xe4, 0xb8, 0xf0, 0x07, + 0xa5, 0x83, 0xe5, 0x31, 0x27, 0xc0, 0xe5, 0x23, 0xc7, 0x2d, + 0x4f, 0x2d, 0xed, 0xb6, 0x77, 0x6f, 0x9d, 0xb4, 0xb9, 0x4f, + 0x7d, 0x6c, 0x1c, 0x49, 0xec, 0xd8, 0xaa, 0xd8, 0x9d, 0x57, + 0xab, 0xeb, 0x9f, 0xe6, 0x7f, 0xaa, 0x9b, 0xe3, 0x6b, 0x2d, + 0xe1, 0x08, 0x8c, 0x08, 0x1a, 0xad, 0x18, 0x8b, 0xf1, 0x20, + 0x2f, 0x8c, 0xe4, 0xa1, 0x5c, 0xcd, 0xc4, 0x1d, 0xe1, 0x1d, + 0xb1, 0xde, 0x27, 0xd3, 0xfe, 0x74, 0x5b, 0xe1, 0x60, 0x2c, + 0xa3, 0x93, 0x9c, 0xd4, 0x60, 0xd4, 0x8a, 0x4d, 0xbf, 0xc4, + 0xf7, 0xd6, 0xa6, 0x60, 0x0d, 0xf3, 0x7a, 0xbb, 0xa3, 0xa2, + 0x41, 0xa2, 0xec, 0x09, 0x25, 0x5c, 0x24, 0xcd, 0x72, 0x41, + 0x77, 0xfa, 0xe8, 0xfc, 0x69, 0x5f, 0x28, 0x5f, 0x86, 0x45, + 0xe1, 0x53, 0xd7, 0xbf, 0x9b, 0x28, 0x75, 0xd4, 0xda, 0x32, + 0xe7, 0x68, 0x13, 0x68, 0xa2, 0x7d, 0xb8, 0x30, 0x37, 0x63, + 0x28, 0x13, 0xde, 0x21, 0xd7, 0xed, 0x49, 0x1a, 0x74, 0x1a, + 0xc9, 0x8e, 0x2e, 0x0c, 0x7d, 0x68, 0x0a, 0x74, 0xd6, 0x99, + 0xfa, 0x70, 0xf3, 0xeb, 0xd7, 0xeb, 0xb4, 0xd8, 0xfe, 0x2c, + 0xe6, 0x2a, 0x3a, 0xd7, 0x42, 0xa7, 0xa7, 0x0a, 0x7f, 0xfc, + 0x99, 0xfc, 0xf8, 0x11, 0xc7, 0x26, 0x44, 0x76, 0x35, 0x99, + 0xff, 0x93, 0x7f, 0x95, 0x08, 0x80, 0x17, 0x80, 0x63, 0x42, + 0x43, 0x67, 0xcb, 0x45, 0xb5, 0x17, 0x58, 0x82, 0xe4, 0x94, + 0x8f, 0x27, 0xe0, 0x27, 0x10, 0xa1, 0x69, 0xb6, 0xc1, 0x9c, + 0xed, 0xe0, 0xa0, 0x74, 0x8f, 0xb9, 0x6e, 0x2f, 0x6c, 0x2f, + 0x0a, 0x0c, 0x71, 0x3d, 0x30, 0xbc, 0xc2, 0x6c, 0x44, 0xd5, + 0xa1, 0x3e, 0x0c, 0xc0, 0xfd, 0xc0, 0xb3, 0x63, 0x83, 0xb5, + 0x4f, 0x86, 0x0e, 0xfd, 0x74, 0xc3, 0x52, 0x08, 0xb2, 0x71, + 0xb4, 0x71, 0x1e, 0x14, 0x93, 0x47, 0x50, 0x07, 0x85, 0xb4, + 0xcc, 0xbc, 0xec, 0x65, 0x8a, 0x77, 0xd1, 0x77, 0xf4, 0x19, + 0x99, 0xb1, 0x64, 0x1f, 0x08, 0xd1, 0x87, 0xb4, 0x3b, 0x88, + 0xc3, 0x6d, 0xa5, 0x6d, 0x3d, 0x97, 0xb7, 0xbd, 0x19, 0x77, + 0x02, 0xa5, 0x51, 0x2d, 0xa2, 0x24, 0xd4, 0xde, 0xcf, 0xde, + 0x77, 0x5a, 0xa1, 0x1d, 0xab, 0xfe, 0xf2, 0xcf, 0xd0, 0xeb, + 0x5f, 0xd7, 0x1c, 0x03, 0xd3, 0x03, 0x75, 0xe7, 0x05, 0x7b, + 0x1a, 0x0c, 0xa7, 0xd3, 0xc4, 0x04, 0x50, 0xa5, 0x22, 0x65, + 0x29, 0x65, 0x27, 0x3a, 0xaf, 0x36, 0xe8, 0x57, 0x2d, 0x29, + 0xb5, 0x8c, 0x4a, 0xd8, 0xbd, 0x81, 0xe7, 0x81, 0xf1, 0x1f, + 0x40, 0x4e, 0x7c, 0x41, 0x69, 0xe7, 0xa5, 0x3f, 0x57, 0x26, + 0x19, 0x53, 0xe2, 0x53, 0x91, 0x5f, 0xf5, 0x7c, 0xbf, 0x8f, + 0x42, 0xe2, 0xe3, 0xc4, 0x55, 0x8b, 0x89, 0x47, 0x7f, 0x47, + 0xa8, 0x71, 0xc9, 0x0d, 0x07, 0xdf, 0xea, 0x7f, 0x9a, 0xf4, + 0xdc, 0x06, 0x94, 0x54, 0x77, 0x54, 0xe9, 0x0f, 0xfc, 0xa3, + 0x3c, 0x93, 0x13, 0x77, 0x55, 0x71, 0xde, 0xab, 0x04, 0x40, + 0xea, 0x40, 0xd0, 0x21, 0xc0, 0xd2, 0x84, 0xc3, 0xbb, 0xea, + 0x2c, 0x41, 0x9d, 0x35, 0xf4, 0x9b, 0x93, 0x9b, 0x38, 0x91, + 0x6e, 0x42, 0x01, 0x29, 0x63, 0x93, 0x73, 0xa6, 0xe7, 0x8e, + 0x57, 0x39, 0xd2, 0x39, 0xd4, 0x98, 0x4b, 0x1e, 0x25, 0xe4, + 0x11, 0xd2, 0x04, 0x5c, 0xaf, 0xfb, 0x7a, 0xac, 0xa8, 0xac, + 0x1c, 0xa9, 0x37, 0x21, 0xe1, 0xf5, 0xd0, 0xa8, 0xd8, 0x53, + 0x97, 0x69, 0x61, 0xdf, 0x3f, 0xdf, 0xe5, 0x07, 0xa2, 0x34, + 0x1c, 0xfa, 0x2e, 0x3f, 0x2d, 0x56, 0xaa, 0xd5, 0xd1, 0x8e, + 0xfe, 0x8e, 0x93, 0xe2, 0x51, 0x1a, 0x0e, 0x7d, 0x17, 0xfe, + 0xf7, 0x2b, 0x26, 0x76, 0x67, 0xbf, 0xa0, 0xbf, 0x5d, 0xd7, + 0x02, 0x8f, 0xda, 0xb9, 0x29, 0xa0, 0x17, 0xd6, 0x4d, 0x5b, + 0x86, 0xb7, 0x2c, 0xb7, 0x47, 0x7a, 0x1a, 0x04, 0x2b, 0x99, + 0x06, 0x2c, 0xf3, 0x77, 0x54, 0x3c, 0xc1, 0x4d, 0xd0, 0x4d, + 0x55, 0x66, 0xd7, 0xd4, 0x5b, 0xf7, 0xbe, 0xd0, 0x47, 0xec, + 0xf7, 0xaf, 0x5d, 0x99, 0xb0, 0x99, 0xdf, 0x2b, 0x68, 0x10, + 0xac, 0x21, 0x18, 0xb0, 0x4a, 0x1f, 0xd9, 0x28, 0x3f, 0x76, + 0x21, 0x76, 0x66, 0x44, 0x9a, 0x98, 0xd3, 0x1b, 0xd4, 0x21, + 0x7a, 0x09, 0x84, 0x52, 0xb3, 0x61, 0x6f, 0x61, 0x2a, 0x8d, + 0xa3, 0x92, 0x71, 0x47, 0xdb, 0x6f, 0xc7, 0x3d, 0x41, 0x33, + 0x60, 0xcf, 0xe4, 0xcf, 0xd1, 0x9e, 0x92, 0xe1, 0x3d, 0xba, + 0x70, 0xe4, 0x26, 0xd7, 0x82, 0x66, 0xc0, 0x5d, 0x0b, 0x5d, + 0x61, 0xff, 0xe7, 0x01, 0x7a, 0xb7, 0xe0, 0x0b, 0x4c, 0x6d, + 0xd6, 0x5a, 0x01, 0x10, 0xdb, 0x10, 0x34, 0x99, 0x30, 0xd5, + 0x21, 0x40, 0x5e, 0xdb, 0x0b, 0x81, 0xb7, 0x2b, 0x75, 0x5c, + 0xfb, 0x5c, 0xf3, 0xa2, 0xe4, 0x28, 0xcd, 0xb3, 0x3c, 0xfb, + 0xb1, 0xd0, 0xdb, 0x85, 0xaf, 0x62, 0xbc, 0x62, 0x5f, 0x6a, + 0xa6, 0xe9, 0x6b, 0x4b, 0x7c, 0xbc, 0x03, 0x39, 0x2b, 0xa9, + 0xc9, 0xcd, 0xc7, 0xcd, 0x36, 0x24, 0x94, 0xb3, 0x90, 0xb2, + 0x0b, 0xc7, 0x1f, 0x6e, 0xa6, 0xbd, 0x37, 0xf6, 0x36, 0xf6, + 0x05, 0x06, 0xd9, 0xff, 0x18, 0x5e, 0x61, 0x36, 0x22, 0x8b, + 0x38, 0x92, 0x1b, 0x73, 0x97, 0x73, 0xf9, 0xae, 0x95, 0x15, + 0xfd, 0x0f, 0xfe, 0x97, 0xf5, 0x05, 0xce, 0x8a, 0x0e, 0xe0, + 0x88, 0xe0, 0xdb, 0x92, 0xe3, 0xdc, 0x0d, 0x06, 0xb2, 0x88, + 0x62, 0x02, 0x95, 0xc4, 0xf1, 0xcb, 0xa2, 0xcb, 0xdc, 0x29, + 0x9e, 0x45, 0xa4, 0xaa, 0x86, 0xa2, 0x54, 0x66, 0x71, 0x50, + 0x7e, 0xec, 0x42, 0xec, 0xcc, 0x88, 0xf7, 0xf3, 0x65, 0x36, + 0x6b, 0x42, 0xf4, 0x12, 0xc3, 0x55, 0xa0, 0x92, 0xef, 0x92, + 0xb0, 0x61, 0x75, 0xe0, 0x47, 0x0d, 0x90, 0xef, 0x6a, 0xba, + 0x8e, 0x0e, 0x26, 0x25, 0xc3, 0x25, 0xf7, 0x1b, 0x6f, 0xe4, + 0x6c, 0x94, 0x96, 0xc3, 0x99, 0xcd, 0x9a, 0xb6, 0xcf, 0xad, + 0x58, 0xad, 0x8e, 0xf4, 0x34, 0x08, 0x56, 0xf1, 0x0c, 0x58, + 0x25, 0xee, 0xef, 0x7f, 0x52, 0x69, 0xe3, 0x69, 0x30, 0x20, + 0xbb, 0x19, 0x80, 0x67, 0xf4, 0xe3, 0x23, 0x9c, 0x25, 0x6c, + 0xbf, 0xa1, 0x92, 0xa1, 0x99, 0xee, 0x20, 0x27, 0x3e, 0xc1, + 0xd5, 0x92, 0xb3, 0xfe, 0xa4, 0x10, 0xa7, 0xe2, 0xab, 0xe2, + 0x3c, 0x28, 0xe5, 0x8e, 0xa0, 0x0e, 0xc9, 0xab, 0x5b, 0xbb, + 0xe9, 0x4b, 0x21, 0x55, 0x87, 0x55, 0x7b, 0x52, 0xff, 0x8a, + 0x8b, 0x97, 0xcf, 0x87, 0xa8, 0xcc, 0x3c, 0x0b, 0xf8, 0x5b, + 0x6e, 0x5b, 0x8b, 0xf2, 0xed, 0xf7, 0x4e, 0xaf, 0x6d, 0x6e, + 0x07, 0x65, 0x6f, 0xb4, 0x02, 0x20, 0x75, 0x20, 0x68, 0xf1, + 0x60, 0x69, 0x42, 0x80, 0xbc, 0x75, 0x16, 0xc1, 0x02, 0xad, + 0x90, 0x14, 0x9d, 0x14, 0x39, 0x2e, 0x3c, 0x71, 0xb8, 0x50, + 0xa8, 0x9d, 0x79, 0x30, 0x01, 0xb7, 0x48, 0x0a, 0xaf, 0x0a, + 0xfd, 0x17, 0x1e, 0xd9, 0x5c, 0x28, 0x54, 0xaf, 0xdd, 0x18, + 0x0a, 0x5c, 0x95, 0x44, 0xac, 0x44, 0xdd, 0x96, 0xcc, 0x76, + 0x1d, 0xd3, 0x4d, 0xac, 0x5e, 0xf0, 0x09, 0x46, 0x4d, 0x5a, + 0x9e, 0x5a, 0x19, 0xaf, 0xee, 0xde, 0xf9, 0xab, 0xb1, 0x9e, + 0xfa, 0xd8, 0x94, 0x73, 0xb9, 0xc1, 0x0d, 0xc1, 0x21, 0x3e, + 0x80, 0x9c, 0xf8, 0x82, 0xd2, 0x0d, 0x89, 0x7e, 0xed, 0xd2, + 0xc2, 0x7d, 0x7e, 0x7d, 0x09, 0x0e, 0x87, 0x68, 0x38, 0x37, + 0x5c, 0x7e, 0x5a, 0xac, 0x59, 0xe3, 0x6f, 0x3f, 0xb7, 0x3f, + 0x3e, 0x95, 0x41, 0xe8, 0x11, 0xfc, 0x9c, 0xb7, 0x4f, 0x54, + 0x61, 0x71, 0x74, 0x4c, 0x20, 0x4c, 0xc7, 0x3b, 0xd4, 0xfd, + 0xec, 0xf3, 0x62, 0x20, 0xba, 0x51, 0x69, 0x80, 0x71, 0x1c, + 0x11, 0x1c, 0x23, 0x83, 0x24, 0xfa, 0x49, 0x70, 0x87, 0x11, + 0x9d, 0x91, 0x29, 0x04, 0x59, 0xd9, 0x5a, 0xd9, 0x0f, 0x0a, + 0xa8, 0xc2, 0x28, 0xe2, 0xa3, 0x5a, 0x66, 0x5e, 0xb0, 0xa8, + 0x4e, 0x6a, 0x30, 0x6a, 0x45, 0xc7, 0xbe, 0x62, 0x9a, 0x6b, + 0x53, 0x30, 0xe7, 0x98, 0x30, 0x63, 0x1e, 0x23, 0xa6, 0x23, + 0x1d, 0x16, 0x65, 0x12, 0x58, 0x8c, 0x1b, 0xa6, 0xd2, 0xc5, + 0x60, 0xc6, 0x3c, 0x46, 0x8f, 0x46, 0x3a, 0x2c, 0xca, 0x24, + 0xb0, 0xdb, 0x36, 0x8f, 0x67, 0x49, 0x74, 0x7e, 0xd5, 0xce, + 0x14, 0xce, 0x43, 0xc3, 0x91, 0xc8, 0x8a, 0xbe, 0xac, 0x14, + 0xdb, 0x6a, 0x22, 0xef, 0x84, 0x97, 0x59, 0x97, 0x2f, 0x8b, + 0x7a, 0x6d, 0x69, 0x19, 0xba, 0x59, 0xe5, 0xb6, 0x0c, 0x68, + 0xe6, 0x78, 0xc8, 0x78, 0x96, 0xe4, 0x88, 0xe5, 0x16, 0x23, + 0x76, 0xc8, 0xd5, 0xa0, 0xcd, 0x90, 0xd6, 0xfe, 0xba, 0xfe, + 0x1f, 0xab, 0xc1, 0x74, 0xe9, 0x7e, 0x4e, 0xba, 0xc6, 0x2a, + 0x7b, 0x0c, 0xeb, 0xa8, 0xee, 0xa8, 0x11, 0x1e, 0x3b, 0x85, + 0x78, 0xe5, 0x26, 0xee, 0xaa, 0xe2, 0x5b, 0x4e, 0xff, 0x2b, + 0x2a, 0x2b, 0x07, 0xbb, 0x7d, 0x99, 0xa9, 0xac, 0x34, 0x2a, + 0x36, 0x64, 0x40, 0x84, 0x28, 0xc5, 0x4b, 0xc5, 0x2c, 0x89, + 0x8c, 0x38, 0x61, 0x92, 0x24, 0x4b, 0xfb, 0xcf, 0xe3, 0x17, + 0xb4, 0x11, 0x2b, 0x11, 0xa6, 0xc4, 0x33, 0xfc, 0x96, 0x44, + 0x82, 0x2b, 0xf6, 0x3c, 0x14, 0xb8, 0xe9, 0x88, 0x9b, 0x88, + 0x79, 0xef, 0x5b, 0xec, 0x3a, 0x65, 0x9a, 0x9b, 0xbc, 0x23, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xf3, 0xc8, 0xdd, + 0x1c, 0xdd, 0x02, 0xbd, 0xa4, 0x66, 0xb1, 0xf2, 0x55, 0x1c, + 0x14, 0xef, 0x78, 0x16, 0x33, 0xb6, 0xdc, 0xb6, 0xd5, 0x27, + 0x19, 0x2d, 0x9c, 0x9d, 0xda, 0xdc, 0x0e, 0xca, 0xad, 0x56, + 0xea, 0xb8, 0x35, 0xb8, 0x25, 0x87, 0x0b, 0x50, 0x59, 0xa5, + 0x78, 0x35, 0xa1, 0x63, 0xd0, 0x6e, 0x72, 0x2c, 0xbf, 0x2c, + 0x7f, 0xeb, 0x74, 0x46, 0x2a, 0xb0, 0x65, 0xbf, 0x80, 0xd1, + 0x91, 0x5d, 0x12, 0xe3, 0x5b, 0xe3, 0xae, 0x75, 0xe6, 0xa7, + 0x17, 0x0a, 0x15, 0x5b, 0xa6, 0x06, 0xfc, 0x44, 0x80, 0xd7, + 0xb3, 0xd7, 0xff, 0xaa, 0xba, 0xbf, 0xed, 0xda, 0x01, 0xb3, + 0xc9, 0xf7, 0xf9, 0x6a, 0x2b, 0xf5, 0xe5, 0xf5, 0x70, 0xe1, + 0xdc, 0x84, 0x02, 0x52, 0xc6, 0xe5, 0xe6, 0x8f, 0xea, 0x51, + 0xf9, 0x4b, 0xb5, 0x4b, 0xbf, 0x6b, 0xdd, 0x22, 0x6f, 0xef, + 0x33, 0xb5, 0x0c, 0xe4, 0x85, 0xe5, 0xfb, 0x6b, 0xc0, 0x6b, + 0xd7, 0x9a, 0xbd, 0x4b, 0x2d, 0x6f, 0x8f, 0xc0, 0x1a, 0x25, + 0x7e, 0x22, 0x40, 0x8a, 0xb8, 0x8a, 0x9e, 0x55, 0x5d, 0xbe, + 0x97, 0x6d, 0xe1, 0xb8, 0x85, 0x9a, 0x77, 0x64, 0x0d, 0xd0, + 0x26, 0xd0, 0x87, 0xfa, 0xb3, 0x60, 0x6e, 0xc6, 0x50, 0x26, + 0x7f, 0x42, 0xc7, 0xcc, 0x43, 0xba, 0x16, 0xba, 0xc2, 0x3d, + 0x0d, 0x02, 0xf4, 0xad, 0x03, 0x16, 0x98, 0xda, 0xc5, 0x61, + 0xd3, 0xae, 0x8b, 0xae, 0xfb, 0x13, 0x31, 0x73, 0x4c, 0xfd, + 0xab, 0x8b, 0xe1, 0xea, 0x5d, 0x7a, 0x8c, 0x17, 0x4e, 0x17, + 0x4c, 0xc9, 0x39, 0x0a, 0xa2, 0x5c, 0x0f, 0x4e, 0xbd, 0x34, + 0x3a, 0x3f, 0x8b, 0x67, 0x0a, 0x67, 0xc0, 0x80, 0xa9, 0x64, + 0x45, 0x5f, 0x56, 0x0a, 0x8c, 0x35, 0xd5, 0x40, 0xd9, 0x0e, + 0xe9, 0x0e, 0xf0, 0xa0, 0x12, 0x7d, 0xc5, 0x38, 0xa2, 0xe9, + 0xaf, 0xa9, 0x66, 0xf2, 0x4f, 0x7a, 0xeb, 0x7a, 0x71, 0x5e, + 0x8e, 0xb7, 0xbb, 0x2b, 0x0d, 0xeb, 0xec, 0x19, 0x8b, 0x20, + 0x8d, 0x07, 0x95, 0x07, 0x78, 0x50, 0x09, 0xdf, 0x83, 0x1c, + 0x51, 0x95, 0xb6, 0xb5, 0x49, 0xc2, 0x65, 0x9f, 0xd5, 0x9f, + 0x35, 0x26, 0x62, 0xe6, 0x98, 0x39, 0x95, 0xd5, 0x01, 0x17, + 0xc2, 0xe2, 0xe8, 0x98, 0x40, 0x98, 0x4d, 0x76, 0x6b, 0x39, + 0x1b, 0x25, 0xc4, 0x40, 0xb7, 0xa2, 0xc6, 0x7b, 0x0b, 0xb0, + 0xb9, 0xb0, 0x3f, 0x2a, 0x13, 0xdb, 0xa8, 0x85, 0x57, 0xb9, + 0x45, 0xc2, 0x56, 0x91, 0x51, 0x59, 0x4d, 0x59, 0x6c, 0x48, + 0xeb, 0xa5, 0xe3, 0xa7, 0x16, 0x4d, 0x3e, 0xdc, 0x4e, 0x41, + 0x5e, 0xa9, 0x1e, 0xa9, 0x83, 0x43, 0x38, 0xac, 0xcf, 0xe1, + 0xfa, 0x1e, 0x57, 0x5f, 0x27, 0xc1, 0x2f, 0xb5, 0x0f, 0xb5, + 0xa0, 0xc0, 0x1c, 0x56, 0x86, 0x91, 0x7d, 0x0f, 0xca, 0xce, + 0xe6, 0x39, 0x1f, 0x33, 0x7d, 0x33, 0x29, 0x8f, 0x55, 0xc7, + 0x79, 0xcc, 0x45, 0x7d, 0xd9, 0x44, 0x93, 0xf0, 0x82, 0xf7, + 0xc6, 0xf7, 0x97, 0x5b, 0xda, 0xd6, 0xaf, 0x5a, 0xbd, 0xc6, + 0xdf, 0x36, 0xbb, 0x43, 0x93, 0x24, 0x33, 0x24, 0x65, 0x46, + 0x6c, 0xcd, 0xdb, 0x90, 0x4a, 0x33, 0x64, 0x70, 0xd1, 0xd9, + 0x3a, 0x26, 0x10, 0x26, 0x82, 0xfc, 0x6a, 0x9f, 0x76, 0x98, + 0x31, 0x10, 0x5d, 0xc9, 0x63, 0xdc, 0xe4, 0x58, 0xbd, 0x58, + 0xfe, 0x15, 0xe8, 0x8c, 0x54, 0xa3, 0xca, 0xbd, 0xc3, 0x61, + 0xc1, 0xf8, 0x30, 0x86, 0x72, 0x86, 0x89, 0x4f, 0x49, 0x91, + 0xff, 0x5d, 0x38, 0x72, 0x13, 0x8a, 0x45, 0xaa, 0x83, 0xe7, + 0x1d, 0xe7, 0xa3, 0xc2, 0xea, 0x03, 0x8e, 0x1a, 0xe3, 0x1d, + 0xd4, 0xb7, 0xc8, 0xbe, 0x7d, 0xdc, 0xec, 0xdc, 0x90, 0xe0, + 0xa7, 0x4f, 0x06, 0xf6, 0x89, 0xec, 0xe9, 0x52, 0x16, 0x15, + 0x79, 0x9c, 0x06, 0x9c, 0x40, 0xc1, 0x67, 0x9d, 0x82, 0x35, + 0x32, 0x06, 0xc5, 0x13, 0x1b, 0xca, 0xd7, 0xee, 0x61, 0xee, + 0x2b, 0x32, 0xf1, 0xa1, 0xc8, 0x3e, 0x10, 0x61, 0xcd, 0xab, + 0x20, 0x42, 0x14, 0x83, 0xc4, 0x83, 0x16, 0xa5, 0x46, 0x1c, + 0xd1, 0x49, 0x12, 0xc4, 0x9c, 0x86, 0x9b, 0x01, 0x87, 0xa7, + 0xf7, 0xa7, 0x73, 0xe3, 0x2a, 0xd1, 0x0a, 0xd9, 0x58, 0xf7, + 0xf8, 0xf6, 0xf3, 0x36, 0xbe, 0xb1, 0x49, 0xb1, 0xad, 0x77, + 0x10, 0xf2, 0x1f, 0x81, 0x8b, 0x49, 0xb8, 0x7f, 0xb8, 0x59, + 0x4b, 0x3a, 0x01, 0x3a, 0xa1, 0x7f, 0x4e, 0x65, 0x3f, 0xe8, + 0xb6, 0x01, 0xc0, 0x58, 0xf0, 0x2c, 0x66, 0xaf, 0x7b, 0xaf, + 0x69, 0x4e, 0x32, 0x5a, 0xfb, 0xf9, 0x77, 0x7b, 0x1c, 0x57, + 0x2f, 0x30, 0x2a, 0xe5, 0x3e, 0xe5, 0x44, 0x78, 0xec, 0x51, + 0x23, 0x12, 0x98, 0x3e, 0xed, 0x0e, 0xba, 0xf4, 0xdb, 0x2e, + 0x9c, 0x2e, 0x98, 0x51, 0x72, 0x14, 0x87, 0xb8, 0x1e, 0x9c, + 0xb9, 0x68, 0x4f, 0xf6, 0x16, 0xa3, 0xb1, 0xa3, 0x7e, 0x54, + 0x26, 0x75, 0x93, 0xc9, 0xae, 0xb1, 0x8a, 0x47, 0xbe, 0x6d, + 0x38, 0x06, 0x65, 0x06, 0xea, 0x0d, 0x0a, 0xf6, 0x34, 0x18, + 0x8d, 0x65, 0x4b, 0x08, 0x12, 0x8c, 0x9a, 0xb4, 0xff, 0xb4, + 0x32, 0x9d, 0x1f, 0x7f, 0x31, 0x95, 0xa1, 0xff, 0x37, 0x73, + 0x43, 0x9e, 0xf0, 0xdb, 0x79, 0xdb, 0xe8, 0xb0, 0xae, 0x90, + 0x85, 0xea, 0xd8, 0x79, 0x5f, 0xe7, 0xcf, 0x3d, 0x46, 0xea, + 0x27, 0xea, 0x26, 0x85, 0xfd, 0x05, 0x51, 0x2e, 0xe6, 0x27, + 0xbf, 0x1a, 0xc9, 0x09, 0x35, 0xd6, 0x43, 0xd6, 0x6d, 0xf7, + 0xb9, 0x96, 0x5a, 0xde, 0xdd, 0x43, 0x34, 0x4a, 0x2a, 0x1e, + 0x81, 0xc7, 0x68, 0xc7, 0xcb, 0x33, 0x8a, 0x6a, 0xcc, 0x9a, + 0x5f, 0x68, 0xc2, 0x76, 0x11, 0x96, 0x42, 0xaa, 0xcd, 0xaa, + 0xf6, 0xa4, 0x3d, 0xd7, 0xd5, 0xed, 0x5d, 0xcd, 0x93, 0x5b, + 0x15, 0x0f, 0xa1, 0x82, 0x34, 0x82, 0x84, 0xf8, 0x45, 0x35, + 0x66, 0x4d, 0xce, 0x34, 0x61, 0x3b, 0xf6, 0x18, 0x15, 0x93, + 0x1f, 0x93, 0x22, 0x3c, 0x76, 0xc9, 0xf0, 0x09, 0x4c, 0x1f, + 0x97, 0x07, 0x62, 0x6b, 0xac, 0x52, 0x12, 0x52, 0x03, 0x02, + 0xf6, 0x55, 0x08, 0x8b, 0x9e, 0x12, 0x1e, 0x79, 0xcc, 0x27, + 0x9e, 0xf4, 0x15, 0xf4, 0xe2, 0xbc, 0xdf, 0xad, 0xb5, 0x56, + 0x1a, 0x15, 0x1b, 0x32, 0xe0, 0x0d, 0x6c, 0x0f, 0x19, 0x0f, + 0x62, 0xfd, 0x11, 0x54, 0x72, 0x3c, 0x7e, 0x19, 0x52, 0x14, + 0x8c, 0xa3, 0xb6, 0x31, 0x5e, 0x31, 0xce, 0x35, 0x53, 0x95, + 0xd4, 0xc4, 0x3e, 0x5e, 0xe0, 0xfd, 0x90, 0xea, 0x5a, 0xe9, + 0xf4, 0xe9, 0x53, 0x62, 0xf8, 0x7e, 0x4b, 0x22, 0x41, 0xf4, + 0x7b, 0x1e, 0x47, 0x07, 0x13, 0xf3, 0x80, 0xf3, 0x9a, 0xec, + 0xd6, 0x72, 0x36, 0x4a, 0x4b, 0x80, 0xad, 0x87, 0xff, 0x5e, + 0x58, 0xc9, 0x81, 0xc9, 0x3b, 0x93, 0x98, 0x17, 0x09, 0xa2, + 0xfd, 0x81, 0x6d, 0xdf, 0x81, 0x7c, 0x18, 0x43, 0x39, 0x43, + 0xa5, 0xc6, 0xc5, 0xa9, 0x9e, 0xcf, 0x1c, 0x39, 0xe8, 0x45, + 0x5e, 0x60, 0x54, 0x09, 0x7c, 0x09, 0x88, 0xf0, 0x1b, 0xa2, + 0x46, 0x24, 0xf3, 0x7c, 0x19, 0x1c, 0xfb, 0xc7, 0xbb, 0xe1, + 0x78, 0xe1, 0x49, 0xcf, 0xe0, 0xf5, 0xba, 0x02, 0x6e, 0x78, + 0x9f, 0xbf, 0x79, 0xa1, 0x7b, 0xbc, 0x73, 0xbc, 0x28, 0x30, + 0x07, 0xf4, 0xc0, 0xb5, 0x8e, 0x73, 0xd3, 0xd2, 0x36, 0x57, + 0x6d, 0x1f, 0xc2, 0x1f, 0x56, 0x64, 0x21, 0x81, 0x53, 0x7c, + 0x20, 0xc2, 0x59, 0x95, 0x32, 0xce, 0x8e, 0x37, 0x3b, 0x37, + 0x24, 0x38, 0x59, 0x63, 0xe0, 0xdc, 0xb3, 0x3b, 0xab, 0xf5, + 0x0e, 0xc5, 0x76, 0x6c, 0x55, 0x6c, 0xaf, 0xca, 0xb4, 0x94, + 0xae, 0x73, 0xde, 0x55, 0xac, 0x90, 0xd3, 0x74, 0xaa, 0x32, + 0x8d, 0x32, 0xbb, 0xd2, 0x56, 0xee, 0xce, 0xc8, 0x99, 0x8d, + 0x24, 0xf9, 0x33, 0x79, 0xc6, 0x3d, 0x94, 0x3d, 0xd9, 0x2f, + 0x47, 0xba, 0xbc, 0xf4, 0xe7, 0x94, 0x76, 0xed, 0x53, 0xbf, + 0xfa, 0x7b, 0x1b, 0x7b, 0xe3, 0x03, 0x8d, 0x9e, 0x0c, 0x2f, + 0xd1, 0x1b, 0x11, 0xa4, 0x87, 0x48, 0x6b, 0x7f, 0x5d, 0x7f, + 0xee, 0xb4, 0x81, 0x3a, 0x95, 0x3f, 0x27, 0x5d, 0x63, 0x15, + 0x21, 0xf5, 0x5c, 0x89, 0x6b, 0x89, 0xeb, 0xb2, 0x58, 0xc5, + 0x8d, 0x61, 0x46, 0x6b, 0x41, 0x9e, 0xd4, 0xf7, 0x91, 0x04, + 0x46, 0x04, 0x0d, 0xb7, 0x0c, 0xa4, 0x99, 0x10, 0xf6, 0x46, + 0x72, 0xb1, 0x07, 0x83, 0x3b, 0x36, 0xcb, 0x36, 0xb6, 0x65, + 0x5a, 0x4a, 0x57, 0xd8, 0x6f, 0xcb, 0x56, 0x48, 0x48, 0x75, + 0x2d, 0x95, 0x7a, 0x95, 0xc8, 0x31, 0x7c, 0x3f, 0xc4, 0x11, + 0xc1, 0x7a, 0xdc, 0x0f, 0xdd, 0xb1, 0xdc, 0x5e, 0xd8, 0x5e, + 0x14, 0x18, 0xe2, 0x7a, 0x60, 0xbb, 0x47, 0xd8, 0x88, 0x69, + 0x6e, 0x03, 0x4a, 0x2a, 0xda, 0x2a, 0x95, 0xe6, 0x7e, 0xb0, + 0x1e, 0xa8, 0xe8, 0xda, 0xcb, 0xd9, 0xc4, 0xd6, 0x9b, 0xa4, + 0x24, 0xa4, 0x06, 0x04, 0x2f, 0xaa, 0x10, 0xd5, 0xff, 0x24, + 0x3c, 0xf2, 0x58, 0x54, 0x27, 0x35, 0x18, 0x35, 0xc3, 0x82, + 0x5f, 0x31, 0x4d, 0xd4, 0xc8, 0x18, 0x92, 0x4c, 0x9c, 0x82, + 0xbc, 0x91, 0x3c, 0x91, 0xc5, 0x86, 0x70, 0x9b, 0x5d, 0x01, + 0x37, 0x3c, 0xae, 0xbe, 0x05, 0x2e, 0xab, 0x22, 0x56, 0x22, + 0x8f, 0x4b, 0x66, 0x3b, 0xef, 0x88, 0xc7, 0x56, 0x2f, 0x78, + 0x19, 0x67, 0x47, 0xfa, 0xfc, 0xfa, 0x12, 0x1c, 0xcd, 0xd0, + 0x70, 0x6e, 0xb8, 0xfc, 0xb4, 0x9b, 0xd8, 0x9f, 0x77, 0x7c, + 0x8e, 0x7c, 0x9b, 0x53, 0x84, 0x41, 0x8f, 0x33, 0x80, 0x8e, + 0xa7, 0x11, 0x80, 0xcb, 0x50, 0x49, 0x96, 0x49, 0x58, 0xd1, + 0xdb, 0x70, 0xc2, 0xe7, 0x48, 0x96, 0x35, 0x5d, 0x9e, 0x2f, + 0x2c, 0x85, 0xa1, 0x85, 0xfc, 0xa8, 0x4c, 0xea, 0xe5, 0x51, + 0x9f, 0xa1, 0xd7, 0x8e, 0x44, 0x1d, 0xcb, 0xed, 0xb2, 0xed, + 0x5e, 0xd5, 0xf4, 0xda, 0xd2, 0x32, 0xb7, 0xb2, 0x09, 0xaf, + 0xca, 0x13, 0xed, 0xc8, 0x71, 0xc8, 0xa9, 0xce, 0x9b, 0x3e, + 0xbe, 0xa6, 0x21, 0x71, 0x90, 0x62, 0x3d, 0xbc, 0xb0, 0x51, + 0xc1, 0x51, 0x76, 0xe5, 0xf3, 0x2e, 0x12, 0x87, 0x39, 0xc1, + 0xda, 0x7d, 0x2e, 0x87, 0x62, 0xef, 0x91, 0xef, 0xb9, 0x6f, + 0xf2, 0x88, 0x7f, 0x3a, 0xcc, 0x91, 0x30, 0x16, 0x72, 0x4a, + 0xa6, 0xf2, 0x70, 0xf2, 0x08, 0xb1, 0xd5, 0x5b, 0x81, 0x4e, + 0x97, 0x70, 0x50, 0x3a, 0x42, 0x29, 0xb8, 0xd1, 0xd6, 0xd1, + 0x15, 0xa7, 0xb0, 0x49, 0xd9, 0xc2, 0x8c, 0xd6, 0x82, 0xff, + 0x65, 0xe8, 0x97, 0x64, 0xd9, 0x64, 0xb5, 0x67, 0xac, 0x1f, + 0x5f, 0x53, 0xf1, 0xd9, 0x48, 0x31, + }, + { + /* 4 */ + 0x04, 0xc3, 0xb6, 0x81, 0x36, 0x3e, 0x4d, 0xde, 0x9f, 0xbe, + 0xcc, 0x92, 0x5e, 0x72, 0x11, 0x8f, 0xc5, 0x34, 0x29, 0xba, + 0x33, 0x7a, 0x21, 0x8a, 0x27, 0x60, 0x9b, 0x0b, 0x90, 0xfb, + 0x32, 0xb5, 0xdf, 0x7b, 0x40, 0x9b, 0x9c, 0xe1, 0x8b, 0x64, + 0x4d, 0x3d, 0x10, 0xa8, 0xb8, 0x2d, 0xbd, 0xb7, 0xb7, 0x84, + 0x27, 0x1f, 0x65, 0xc8, 0x66, 0x5a, 0x26, 0x8a, 0x79, 0x61, + 0x18, 0xf3, 0xc4, 0xbf, 0x1e, 0x8c, 0xdf, 0xa0, 0x99, 0xa5, + 0xe7, 0x30, 0xf5, 0xe3, 0x47, 0x31, 0x76, 0xa4, 0x9e, 0x8d, + 0x26, 0x94, 0x14, 0xa2, 0x5e, 0x12, 0xa7, 0x8e, 0x43, 0x58, + 0x05, 0xc1, 0xc4, 0x5d, 0x70, 0xdb, 0xff, 0xac, 0xb9, 0x19, + 0xef, 0xd2, 0xa6, 0x5b, 0x3f, 0x84, 0xbf, 0xb2, 0x0d, 0x3b, + 0x35, 0x45, 0xc8, 0xf2, 0xfc, 0x4b, 0x85, 0xd6, 0x74, 0xfd, + 0x12, 0xaf, 0x3f, 0xbb, 0x84, 0x90, 0x94, 0xb4, 0x7b, 0xb5, + 0x6d, 0xd5, 0xd6, 0x20, 0x5f, 0x79, 0xab, 0x9b, 0x8a, 0x48, + 0xc2, 0x11, 0x41, 0x84, 0x7a, 0xf5, 0xa1, 0x64, 0x3a, 0xce, + 0xdd, 0xaf, 0xfc, 0x55, 0xb9, 0x8d, 0x34, 0xec, 0xd4, 0xd7, + 0xe8, 0x25, 0x05, 0xc9, 0xf6, 0xe5, 0x59, 0xc2, 0x60, 0x16, + 0x90, 0xa1, 0x31, 0x86, 0x1c, 0x46, 0xa0, 0x0d, 0x9b, 0xcf, + 0x7c, 0xff, 0x99, 0xc3, 0x79, 0x18, 0x56, 0x72, 0x24, 0x4e, + 0xed, 0xbc, 0x3e, 0x5b, 0x26, 0x22, 0xea, 0x96, 0xca, 0x0f, + 0x87, 0x5a, 0xe8, 0x2b, 0xc3, 0xb2, 0x16, 0x7f, 0xe9, 0x65, + 0xc9, 0x78, 0x1a, 0x0b, 0xdb, 0x14, 0x37, 0xd8, 0xa3, 0x64, + 0xc7, 0x7b, 0x89, 0x15, 0x09, 0x05, 0x63, 0x70, 0x80, 0x92, + 0x18, 0xa9, 0xaa, 0x71, 0x68, 0x22, 0x4a, 0x19, 0xb7, 0x8e, + 0x18, 0xcf, 0x32, 0x80, 0xb4, 0x84, 0x6d, 0x81, 0xc4, 0x02, + 0xed, 0xea, 0x07, 0xef, 0x66, 0xa4, 0xba, 0x42, 0xf2, 0xee, + 0xd3, 0x64, 0x33, 0x2d, 0x13, 0x45, 0xdd, 0xd1, 0x0c, 0x98, + 0x62, 0xbe, 0x83, 0x1a, 0xf5, 0x5d, 0xf8, 0x3d, 0xf1, 0x45, + 0xf2, 0x30, 0xac, 0xe4, 0x48, 0x9c, 0x19, 0xbb, 0x1f, 0xcc, + 0x13, 0x11, 0x75, 0x4b, 0x65, 0xe6, 0xa2, 0x2d, 0x74, 0xf4, + 0x80, 0x59, 0x0b, 0xde, 0x33, 0x9d, 0xf3, 0xd3, 0x5c, 0x3a, + 0x9f, 0x78, 0xb2, 0x95, 0x4c, 0x9b, 0xd7, 0xd9, 0xb0, 0x7e, + 0xb1, 0xc7, 0xca, 0x3f, 0x48, 0xe9, 0xec, 0xeb, 0x17, 0x6b, + 0xd3, 0xba, 0x69, 0xb8, 0x3c, 0x96, 0xb6, 0xc4, 0xeb, 0xae, + 0x89, 0x26, 0xe4, 0x8c, 0x71, 0x44, 0x4a, 0xa4, 0xee, 0x0e, + 0x51, 0xec, 0x46, 0x2e, 0xdc, 0xe7, 0xcb, 0x47, 0xd0, 0xcf, + 0xd5, 0x50, 0x37, 0xef, 0xd8, 0x67, 0x2b, 0x0e, 0x78, 0x75, + 0xfa, 0xc5, 0x21, 0xd1, 0x1a, 0xc0, 0x52, 0x0a, 0xdf, 0xc4, + 0x1b, 0xd5, 0x3d, 0x71, 0x5b, 0x62, 0x94, 0x57, 0xa5, 0x13, + 0x72, 0x46, 0xd9, 0x22, 0x25, 0x52, 0x77, 0x07, 0xc9, 0x76, + 0x80, 0xda, 0x62, 0x4d, 0x0f, 0xcc, 0xb4, 0xfc, 0x0b, 0xa1, + 0xf9, 0x68, 0x91, 0x58, 0x65, 0x4e, 0x8c, 0x5c, 0x7b, 0x0d, + 0x55, 0x8e, 0x63, 0x5d, 0x69, 0xa0, 0x6e, 0x1d, 0x73, 0xce, + 0x56, 0x1c, 0xeb, 0xe5, 0x92, 0xd9, 0x01, 0x14, 0x1c, 0x7b, + 0x99, 0x87, 0xc5, 0x2d, 0xe8, 0x42, 0x60, 0xb3, 0x2d, 0x11, + 0x2c, 0x73, 0xc5, 0x9f, 0x78, 0x48, 0x47, 0x76, 0x0b, 0xaa, + 0xa1, 0x7d, 0x2e, 0xf3, 0xfb, 0x6f, 0x0f, 0x98, 0xd9, 0xec, + 0xeb, 0x85, 0xa0, 0x3a, 0x73, 0x20, 0x53, 0x49, 0x24, 0xca, + 0xd9, 0x38, 0xad, 0xbb, 0xb1, 0xc0, 0x01, 0xd5, 0x7c, 0xdc, + 0xba, 0x73, 0xc9, 0x66, 0x45, 0x9e, 0xe0, 0x60, 0xaa, 0x08, + 0x9a, 0x99, 0xc3, 0xbd, 0x9d, 0xa9, 0xcb, 0x46, 0x8d, 0x62, + 0x3e, 0x9b, 0x9e, 0x56, 0xbd, 0xed, 0x96, 0x69, 0x53, 0xcc, + 0xfe, 0x42, 0xbe, 0x59, 0xe7, 0xfc, 0xfb, 0xc3, 0x36, 0x1e, + 0x89, 0xe3, 0x86, 0xea, 0x50, 0x70, 0x7a, 0xe5, 0xb3, 0xcc, + 0x7f, 0x56, 0x34, 0xa2, 0x42, 0xed, 0x6a, 0x66, 0xfd, 0x79, + 0x9d, 0x11, 0x4a, 0xee, 0xfb, 0x7d, 0x86, 0x15, 0x3a, 0x81, + 0x43, 0xad, 0xa6, 0xd7, 0x11, 0x97, 0x1f, 0xc7, 0x1d, 0x20, + 0xc8, 0xb8, 0x70, 0xe8, 0xaf, 0xd2, 0xde, 0x3b, 0x8c, 0x2a, + 0x70, 0x0f, 0x09, 0xb2, 0x1a, 0xf3, 0x23, 0x6d, 0x4e, 0xd0, + 0x28, 0xe4, 0xaf, 0x4b, 0x15, 0x9f, 0xd1, 0x4c, 0x0b, 0xdb, + 0xe2, 0x88, 0x94, 0x8b, 0x1f, 0x1c, 0xa2, 0x1b, 0x56, 0xa4, + 0x41, 0xa6, 0x13, 0xbf, 0x27, 0x31, 0xec, 0xed, 0x81, 0xe2, + 0x63, 0x6c, 0x6f, 0x77, 0xdb, 0xb8, 0xf6, 0x1a, 0xaa, 0xdf, + 0xc6, 0xba, 0xd2, 0x83, 0xdc, 0x3a, 0xe6, 0x5f, 0xac, 0x38, + 0x70, 0x30, 0x55, 0x04, 0x4d, 0xad, 0x80, 0xbf, 0xaf, 0xb5, + 0x84, 0x23, 0xa7, 0x31, 0x1f, 0xac, 0x3f, 0x1b, 0xea, 0x93, + 0x06, 0x78, 0x48, 0xd9, 0xd0, 0x94, 0xdb, 0xee, 0x35, 0x4f, + 0x83, 0x2c, 0x77, 0x33, 0x74, 0x95, 0x8c, 0x62, 0x88, 0xd8, + 0xc9, 0x9a, 0x1d, 0x3d, 0x20, 0x87, 0x72, 0xd6, 0x75, 0xb3, + 0x2f, 0x34, 0x97, 0x7d, 0x4f, 0xb7, 0x67, 0xc5, 0x7b, 0x74, + 0x0f, 0xbe, 0x9b, 0x70, 0x87, 0xd9, 0x43, 0xdc, 0xce, 0x03, + 0xbc, 0x9b, 0x6d, 0x8e, 0x60, 0x76, 0x16, 0xee, 0x08, 0x34, + 0x93, 0x90, 0x68, 0x1c, 0x20, 0xc5, 0x06, 0xbb, 0xcb, 0x8d, + 0x1a, 0xe9, 0xf3, 0x97, 0x5d, 0xc2, 0x1d, 0x4c, 0x48, 0xb0, + 0x6e, 0x54, 0xa2, 0x89, 0x0c, 0x72, 0x12, 0xbd, 0xaf, 0x60, + 0xe2, 0x78, 0xfd, 0x2c, 0xe2, 0xb8, 0xf4, 0xcd, 0x61, 0x34, + 0x91, 0xdb, 0xd9, 0xfb, 0x22, 0x02, 0xdc, 0xe3, 0x9a, 0x95, + 0x0b, 0x6c, 0xa0, 0x57, 0x1e, 0x12, 0x61, 0xfc, 0x72, 0xcb, + 0xb9, 0x8e, 0xea, 0x4c, 0xea, 0xa5, 0x5e, 0x68, 0xed, 0xfa, + 0x9e, 0xad, 0xce, 0x49, 0xf6, 0xe8, 0x1e, 0xbf, 0xf5, 0xe0, + 0xe5, 0xe3, 0xd0, 0x38, 0x40, 0x49, 0x0c, 0xb5, 0x55, 0xd9, + 0x34, 0x11, 0x25, 0xed, 0xba, 0x47, 0x55, 0x64, 0xd6, 0xb6, + 0xe4, 0x4e, 0x62, 0x88, 0x15, 0x7c, 0xd4, 0x6e, 0xba, 0xa8, + 0x13, 0x82, 0x4d, 0xab, 0xe4, 0x36, 0x50, 0xca, 0x0f, 0x09, + 0xd1, 0x7e, 0x39, 0x84, 0xbd, 0x47, 0x75, 0x26, 0x2f, 0x91, + 0x77, 0xd2, 0xde, 0x80, 0xbf, 0x27, 0xe9, 0x29, 0x6d, 0xe3, + 0x8e, 0x44, 0xc7, 0x55, 0x8e, 0xdc, 0x20, 0xac, 0x4e, 0x91, + 0xa4, 0x32, 0xc7, 0xff, 0x08, 0x54, 0x5c, 0xf7, 0xbf, 0xba, + 0xab, 0x88, 0xa3, 0x1e, 0xe7, 0x72, 0x46, 0x05, 0x7d, 0x36, + 0x58, 0x19, 0x41, 0x6e, 0xb3, 0x94, 0xec, 0xe6, 0xb3, 0x48, + 0xc0, 0xdb, 0x14, 0x1c, 0xff, 0xa8, 0x5c, 0x33, 0x6f, 0xf4, + 0x0d, 0xc9, 0x64, 0x79, 0x7e, 0xc4, 0xa3, 0x6b, 0x3a, 0x9f, + 0x09, 0xb6, 0xfe, 0xbc, 0x42, 0x48, 0x4a, 0x5a, 0xb3, 0x47, + 0x91, 0x9e, 0x53, 0xf6, 0x2b, 0x84, 0xb9, 0x34, 0xb5, 0xf3, + 0x46, 0x81, 0xd5, 0x30, 0xd5, 0xbe, 0xb4, 0xfb, 0xeb, 0x82, + 0xd6, 0x74, 0x1e, 0xdd, 0x2d, 0x06, 0x2b, 0xf0, 0x76, 0xcc, + 0x91, 0x10, 0x33, 0xbd, 0x3b, 0xda, 0xc1, 0xd4, 0x65, 0xd2, + 0x7c, 0xa0, 0xdc, 0xae, 0xb4, 0x64, 0x5e, 0xe1, 0xee, 0x67, + 0x7f, 0xc3, 0xbd, 0x4e, 0x11, 0x52, 0xda, 0x05, 0xdf, 0x88, + 0x4d, 0xaa, 0x21, 0x97, 0x35, 0x33, 0x9f, 0xdd, 0xaf, 0xe9, + 0x25, 0x77, 0x9c, 0xdf, 0x43, 0xeb, 0x1d, 0xa1, 0x49, 0x68, + 0x52, 0xb7, 0x66, 0xf4, 0x42, 0xd7, 0x4e, 0xc0, 0xf5, 0x16, + 0xe3, 0x35, 0x64, 0xa9, 0x5f, 0xa1, 0x22, 0xd6, 0x93, 0x2d, + 0x3f, 0x98, 0x46, 0x9c, 0xe9, 0xc0, 0x29, 0x75, 0xd8, 0xf9, + 0x65, 0x39, 0xb2, 0x75, 0x4f, 0x85, 0xb8, 0x49, 0x5e, 0x78, + 0xcd, 0x79, 0xb4, 0xb5, 0xdf, 0x09, 0x53, 0x27, 0x3b, 0x96, + 0xc9, 0x6f, 0xe8, 0x39, 0x24, 0x9d, 0x7e, 0xb5, 0xcb, 0xe3, + 0xeb, 0xab, 0x27, 0xd4, 0xd8, 0x13, 0xb2, 0xfc, 0x25, 0x58, + 0x14, 0x96, 0x36, 0x04, 0x32, 0xa0, 0xe5, 0x88, 0xcc, 0x31, + 0x4a, 0xca, 0xb3, 0xe8, 0x39, 0x23, 0x8d, 0x11, 0xf3, 0x29, + 0xda, 0xe2, 0x85, 0x3b, 0x61, 0xfa, 0x04, 0xf4, 0x79, 0xbb, + 0xf5, 0x97, 0xc1, 0xc6, 0x01, 0xeb, 0xea, 0xc7, 0xce, 0x86, + 0x82, 0x5a, 0x39, 0xec, 0x14, 0xd3, 0x73, 0x93, 0xa5, 0xfe, + 0x9f, 0x21, 0xbe, 0x61, 0x8c, 0xe8, 0xcf, 0xf1, 0xdd, 0xda, + 0x44, 0x19, 0x7c, 0x9a, 0x74, 0x80, 0xa6, 0xa5, 0x03, 0x26, + 0xf9, 0xce, 0xfa, 0x2f, 0xc3, 0x29, 0x35, 0x02, 0x69, 0x53, + 0xf7, 0xf4, 0x40, 0xe5, 0xa5, 0xb4, 0xb1, 0x99, 0xbf, 0xc1, + 0x88, 0xde, 0x09, 0xb4, 0xfc, 0x25, 0xdb, 0x35, 0x22, 0x86, + 0xa4, 0x17, 0xe6, 0x62, 0xca, 0x72, 0xa7, 0xea, 0x9e, 0xc9, + 0xb3, 0x92, 0xbc, 0xf0, 0x59, 0xf2, 0xab, 0xa9, 0x7d, 0x12, + 0x4e, 0x6b, 0x73, 0x26, 0xa7, 0x3b, 0x4a, 0xb0, 0x28, 0xef, + 0x6c, 0x08, 0x64, 0x83, 0x09, 0xd3, 0x97, 0x53, 0xde, 0x9d, + 0x16, 0xfb, 0x4b, 0x65, 0x54, 0x33, 0xd6, 0x7b, 0xad, 0xe5, + 0x4c, 0x4d, 0x9b, 0xd5, 0xc7, 0xdd, 0x4c, 0xb9, 0x9c, 0xc4, + 0x36, 0x32, 0x41, 0x0e, 0x4f, 0x73, 0x7f, 0x1f, 0x8d, 0x1c, + 0xb7, 0xbc, 0xb9, 0x60, 0xe1, 0x8b, 0x3e, 0x6e, 0x5d, 0xd8, + 0x85, 0x33, 0xc3, 0x4f, 0x68, 0xff, 0x67, 0x84, 0xf9, 0x29, + 0xed, 0x3e, 0x6b, 0xb7, 0x69, 0xc9, 0xa0, 0xde, 0x79, 0x08, + 0x15, 0x09, 0xe7, 0x71, 0x02, 0x28, 0x38, 0xf6, 0xf1, 0xcd, + 0x49, 0x5a, 0x13, 0x84, 0xc0, 0xa5, 0xfc, 0x6c, 0x2e, 0x09, + 0x18, 0x23, 0xe3, 0xe2, 0xc6, 0x15, 0xea, 0x3e, 0xd4, 0xff, + 0x49, 0xb0, 0xfe, 0xec, 0x75, 0xa8, 0x03, 0x3c, 0x24, 0x8d, + 0x68, 0x4a, 0x8c, 0x77, 0xfb, 0xc6, 0xa0, 0x16, 0x58, 0xa2, + 0x03, 0x47, 0x52, 0xe2, 0x37, 0xff, 0x20, 0xb3, 0x70, 0xde, + 0xae, 0xc3, 0xb5, 0x83, 0x12, 0x0a, 0xc6, 0xe0, 0xc3, 0xe7, + 0x30, 0x91, 0x97, 0xe2, 0xd0, 0x44, 0x94, 0x32, 0xad, 0xdf, + 0x1b, 0x0f, 0xa5, 0x90, 0x43, 0x75, 0x28, 0x38, 0x3d, 0x93, + 0xb8, 0x66, 0xde, 0x2b, 0x1a, 0x51, 0x10, 0x8a, 0x9d, 0x41, + 0xd8, 0xf8, 0xf7, 0xfe, 0x39, 0xbd, 0xb6, 0x0d, 0xbb, 0x0b, + 0x44, 0x79, 0xc1, 0xf7, 0x9f, 0x3b, 0x05, 0x44, 0x6c, 0x54, + 0xb8, 0xde, 0x57, 0x99, 0xce, 0x89, 0x23, 0x3a, 0xe2, 0xe0, + 0xf1, 0xa9, 0x81, 0x86, 0x04, 0xd2, 0x33, 0xf6, 0xad, 0x0f, + 0xa2, 0x5b, 0xd7, 0x3d, 0x19, 0x8f, 0xfe, 0x31, 0x58, 0x6a, + 0xef, 0x57, 0x93, 0xcc, 0xde, 0x2f, 0xf1, 0x12, 0xf3, 0xf7, + 0x52, 0x67, 0xf7, 0x27, 0x25, 0x81, 0x6a, 0xef, 0x73, 0x53, + 0x4d, 0x70, 0x3d, 0x1e, 0x7e, 0xf8, 0xef, 0x26, 0x24, 0x58, + 0x37, 0x2a, 0x51, 0xa5, 0x06, 0x39, 0x09, 0xbf, 0xb6, 0x30, + 0x71, 0x3c, 0xdc, 0xbb, 0xd7, 0x8b, 0x6b, 0x10, 0xce, 0xdd, + 0xb4, 0xac, 0x45, 0x24, 0x61, 0xe9, 0xc1, 0x42, 0xf0, 0xea, + 0x37, 0x49, 0x42, 0x61, 0x34, 0x43, 0xa4, 0x14, 0x7d, 0x4b, + 0x36, 0x69, 0x7a, 0xe2, 0x3c, 0xdb, 0x7d, 0x83, 0xf1, 0x89, + 0x0d, 0x60, 0x29, 0x05, 0x8e, 0x62, 0xec, 0x8b, 0xff, 0xd9, + 0x9c, 0xd6, 0xe6, 0x4c, 0x8d, 0x76, 0x94, 0xa3, 0x50, 0x1d, + 0xd8, 0x10, 0xc8, 0xc5, 0x12, 0x65, 0xbe, 0x81, 0x44, 0x6f, + 0xe5, 0x5a, 0x7e, 0xf3, 0x8c, 0xfb, 0x11, 0x43, 0x52, 0xea, + 0x73, 0x31, 0x38, 0x18, 0xcb, 0x02, 0xc7, 0xb7, 0x40, 0xbe, + 0xb6, 0xbb, 0x42, 0xf0, 0xb2, 0xf9, 0xee, 0x56, 0x2b, 0x52, + 0xc1, 0x53, 0xe8, 0xbe, 0xf2, 0xf9, 0x76, 0x97, 0xa1, 0x71, + 0xd0, 0x36, 0xd6, 0xda, 0xc9, 0xb2, 0x30, 0xfa, 0x69, 0x38, + 0xf6, 0x2b, 0x45, 0x61, 0x0c, 0x7e, 0x72, 0x6d, 0x01, 0xe7, + 0x24, 0x14, 0x4f, 0x03, 0x45, 0x0d, 0x60, 0xe1, 0xed, 0x07, + 0x63, 0x88, 0xeb, 0x64, 0x99, 0x7d, 0x98, 0x15, 0x50, 0xcd, + 0xbb, 0x48, 0xd9, 0x7d, 0xcf, 0xa3, 0x14, 0x82, 0x96, 0xb7, + 0x03, 0xea, 0x30, 0x5d, 0x64, 0xc3, 0xab, 0xcb, 0xda, 0xc1, + 0x4b, 0x04, 0x19, 0x17, 0x0e, 0x1d, 0xcc, 0x8b, 0x0c, 0x86, + 0x19, 0x40, 0x5a, 0x42, 0xd7, 0xa1, 0x62, 0x01, 0x97, 0x75, + 0xe2, 0x96, 0x33, 0x52, 0x69, 0xbf, 0xab, 0x35, 0x15, 0xc7, + 0x6f, 0xe8, 0x3c, 0x79, 0x5a, 0x0c, 0x56, 0x23, 0xec, 0x5b, + 0x54, 0x24, 0x1a, 0x07, 0x08, 0xa0, 0xe0, 0x5e, 0x42, 0xb2, + 0xe7, 0xab, 0x4c, 0x55, 0x86, 0xd1, 0xee, 0x66, 0xe8, 0xe9, + 0xdb, 0xc4, 0xd3, 0x73, 0x51, 0xf7, 0x3a, 0x7a, 0x40, 0xcd, + 0xe4, 0x6f, 0xb5, 0x04, 0x7c, 0xbe, 0x7e, 0xd7, 0xa1, 0x35, + 0x88, 0xd5, 0x1f, 0x28, 0x37, 0xca, 0x2d, 0x19, 0x4f, 0x2b, + 0xbf, 0x97, 0x4b, 0xd5, 0xc8, 0x66, 0x7f, 0x21, 0x5f, 0xcd, + 0x92, 0x7e, 0x9c, 0x80, 0x39, 0x58, 0x07, 0xb3, 0x2b, 0x59, + 0xc2, 0x68, 0xe1, 0x75, 0x71, 0x35, 0x44, 0x04, 0x7b, 0x05, + 0x6a, 0x7f, 0x3c, 0x25, 0xe2, 0x36, 0x2a, 0x51, 0xc5, 0xe8, + 0x0f, 0x80, 0x8f, 0xe7, 0x90, 0xae, 0x1c, 0x0c, 0x84, 0x01, + 0x82, 0xba, 0x20, 0x5f, 0x5b, 0xbc, 0x21, 0x78, 0x59, 0x9d, + 0x77, 0x2b, 0x89, 0xdf, 0x01, 0x3d, 0x8f, 0x5e, 0xac, 0x55, + 0xa1, 0xd0, 0x91, 0x4a, 0xdb, 0x41, 0xd2, 0xc0, 0x66, 0xf9, + 0x25, 0x65, 0xb8, 0x74, 0xfd, 0xf0, 0xa7, 0xe9, 0x98, 0xf5, + 0x6d, 0x71, 0xa3, 0xfc, 0xa5, 0x8e, 0xe1, 0xff, 0xa6, 0x2f, + 0x56, 0xcb, 0xb1, 0x68, 0xa9, 0x25, 0x8c, 0xc1, 0x69, 0x60, + 0xe4, 0xa3, 0x1c, 0x89, 0xac, 0xa7, 0x8e, 0x63, 0x02, 0x17, + 0x07, 0xd4, 0xd3, 0x10, 0x2f, 0x14, 0x72, 0xb0, 0x0e, 0xa5, + 0x56, 0xb2, 0x47, 0xd0, 0x01, 0xea, 0xe2, 0x6a, 0x88, 0x08, + 0xf6, 0x0a, 0xf6, 0xa9, 0xda, 0x69, 0x6f, 0x40, 0xbe, 0xf2, + 0x95, 0xf5, 0xd7, 0x90, 0x47, 0x22, 0x82, 0xcb, 0x14, 0x49, + 0x2b, 0xc0, 0xee, 0xc6, 0xba, 0x20, 0xa6, 0x03, 0x7a, 0x9f, + 0xe5, 0x79, 0x55, 0xf6, 0x02, 0x80, 0x5b, 0xa1, 0x1b, 0x1f, + 0xc7, 0x6f, 0xae, 0x5f, 0x66, 0x49, 0x2f, 0x39, 0xe9, 0xa6, + 0x50, 0xe7, 0xac, 0x86, 0x3e, 0x9e, 0xad, 0x80, 0xdd, 0x0c, + 0x2b, 0x39, 0x12, 0x27, 0x97, 0x5e, 0xbd, 0x41, 0xd3, 0x7f, + 0x12, 0xab, 0x3b, 0x4a, 0x75, 0x6a, 0x44, 0xcf, 0x8b, 0x2e, + 0x0f, 0xc4, 0x9f, 0x16, 0x71, 0x5c, 0x7a, 0x87, 0xd1, 0x1a, + 0xa9, 0x8c, 0x8d, 0x9c, 0x11, 0x01, 0x6e, 0x90, 0xe3, 0xa0, + 0x3d, 0x18, 0x6d, 0x68, 0x86, 0x04, 0x64, 0x38, 0x9e, 0xca, + 0x54, 0xa6, 0x42, 0x6e, 0x05, 0x83, 0x7a, 0x30, 0xda, 0xd0, + 0xcf, 0x08, 0xc8, 0x70, 0xff, 0x57, 0xa8, 0x8f, 0x84, 0xdc, + 0x07, 0x03, 0x21, 0x91, 0xc1, 0xcf, 0x08, 0x67, 0x66, 0x2f, + 0x99, 0x1e, 0x87, 0xb6, 0x6d, 0x7a, 0x88, 0x9f, 0xcd, 0x8c, + 0x63, 0xb0, 0x2e, 0x83, 0xf6, 0x1e, 0xa2, 0x8f, 0x2d, 0xbc, + 0x47, 0x93, 0xcb, 0x32, 0x6b, 0x5b, 0x72, 0x27, 0x31, 0x44, + 0xeb, 0x3e, 0x6a, 0x37, 0x5d, 0x54, 0xe8, 0x41, 0x3a, 0x98, + 0x90, 0xa3, 0xdc, 0xa8, 0x87, 0xd1, 0x18, 0xe4, 0x24, 0xb9, + 0x9d, 0xc0, 0x07, 0xf0, 0x85, 0x59, 0x18, 0x7d, 0xd5, 0x1c, + 0x7b, 0xf4, 0xc3, 0xd1, 0x06, 0x3f, 0x39, 0xd7, 0xe1, 0x92, + 0x41, 0x2d, 0xfd, 0x76, 0x0a, 0x88, 0xd8, 0xa8, 0xb3, 0x7f, + 0xae, 0xf1, 0x5f, 0xd1, 0x46, 0x74, 0x2a, 0x12, 0x0d, 0xe2, + 0x04, 0x50, 0x70, 0x2f, 0x21, 0x59, 0x92, 0xb4, 0x26, 0xcb, + 0x43, 0x89, 0x92, 0xd0, 0xa4, 0xad, 0xcc, 0x2b, 0x84, 0x6d, + 0x9c, 0x43, 0x29, 0x2c, 0x05, 0x6a, 0xc8, 0x91, 0xb9, 0x82, + 0x65, 0xfe, 0x24, 0x95, 0x76, 0x94, 0xea, 0xd4, 0x88, 0x5d, + 0xd5, 0x5c, 0x1e, 0x4b, 0xe6, 0x23, 0x47, 0x28, 0xb7, 0xb8, + 0x49, 0x0c, 0xac, 0x48, 0x61, 0x9d, 0xfc, 0x29, 0xc6, 0xb2, + 0xf2, 0x6a, 0x6c, 0xe8, 0x59, 0x7e, 0xf3, 0x2c, 0x0a, 0x4b, + 0x1b, 0x02, 0x19, 0x50, 0x93, 0x44, 0x28, 0x92, 0x56, 0x43, + 0x1f, 0x4f, 0xb7, 0x40, 0x8f, 0x06, 0xf4, 0xfd, 0x09, 0xf2, + 0xaa, 0x2f, 0x7d, 0xf6, 0x80, 0xf5, 0xfb, 0x01, 0xd5, 0xc8, + 0x9a, 0x7a, 0x20, 0x93, 0xb3, 0x5a, 0xb9, 0xad, 0xbb, 0x02, + 0x3e, 0x5f, 0x3f, 0x8a, 0xb1, 0xfb, 0x44, 0x8b, 0xee, 0x14, + 0xfa, 0x65, 0xf7, 0xed, 0xf3, 0x2a, 0xa0, 0x59, 0xb5, 0x90, + 0x71, 0xfa, 0x5d, 0x85, 0x28, 0xc7, 0xef, 0xad, 0x06, 0x17, + 0xe7, 0x63, 0x8b, 0x99, 0x5b, 0x56, 0xcb, 0xda, 0xfb, 0x86, + 0x52, 0x58, 0x0a, 0xd4, 0x53, 0xe1, 0xad, 0xcb, 0x4e, 0x3e, + 0xca, 0x53, 0xcc, 0xb4, 0x4c, 0xd7, 0xf2, 0xc2, 0x30, 0x25, + 0x4b, 0xbd, 0x0e, 0x06, 0x42, 0xe1, 0x41, 0x5d, 0x10, 0xce, + 0xcc, 0x5e, 0xf1, 0x3c, 0xcd, 0xaf, 0xda, 0xf4, 0x76, 0x73, + 0xb8, 0x24, 0x60, 0x8c, 0x0a, 0x0e, 0x9e, 0x54, 0x2e, 0xf8, + 0xd6, 0x7a, 0xe7, 0x85, 0x3b, 0xd8, 0x5c, 0x12, 0x30, 0x46, + 0x05, 0x07, 0x4f, 0x2a, 0x17, 0x7c, 0x6b, 0x3d, 0x92, 0xa3, + 0x6d, 0x7c, 0x1d, 0xb4, 0x23, 0xf9, 0x22, 0x36, 0xa3, 0xc7, + 0x96, 0x9e, 0x08, 0x51, 0xfd, 0xd4, 0x20, 0xd7, 0xf9, 0x82, + 0x73, 0x33, 0x2d, 0x3f, 0x72, 0xb9, 0xaf, 0x1a, 0xb5, 0x16, + 0x88, 0xf2, 0xa9, 0x08, 0xf8, 0xbf, 0xfc, 0x6d, 0x81, 0x6a, + 0xd3, 0x69, 0x3e, 0x50, 0x6e, 0x57, 0x5a, 0x32, 0x0b, 0x85, + 0x38, 0xd1, 0x9b, 0x8d, 0xdf, 0xc6, 0x04, 0x2e, 0x0e, 0x6b, + 0x65, 0x20, 0x5e, 0x28, 0xce, 0xb1, 0x11, 0x6b, 0xa8, 0xf7, + 0xfe, 0x4c, 0x23, 0x4e, 0x95, 0x60, 0xf5, 0xdb, 0x6c, 0x9d, + 0x8f, 0x9c, 0xec, 0x1d, 0xa2, 0x7f, 0x26, 0xe4, 0x90, 0x31, + 0x3b, 0x91, 0xaa, 0x0a, 0x2a, 0xe9, 0x94, 0x93, 0x49, 0x8d, + 0xe1, 0x0a, 0x0e, 0xdc, 0xad, 0xa2, 0x83, 0xf7, 0x74, 0x21, + 0x30, 0xb8, 0x4c, 0xeb, 0x28, 0x87, 0xbc, 0x24, 0x8d, 0xdf, + 0x86, 0xb0, 0x0a, 0x41, 0x4b, 0xba, 0xe0, 0x75, 0x29, 0xd2, + 0x9a, 0xf2, 0xf3, 0xa1, 0x35, 0x96, 0xd8, 0xc8, 0xc7, 0x38, + 0xff, 0x0f, 0x3f, 0x7c, 0x5a, 0x22, 0x58, 0xe6, 0x49, 0xfd, + 0xf0, 0x90, 0x8e, 0xec, 0x16, 0x97, 0x81, 0xfa, 0x5c, 0x25, + 0xb4, 0x44, 0xb0, 0x0f, 0x92, 0x39, 0x23, 0xe3, 0xdf, 0x1b, + 0x2c, 0xed, 0xc1, 0x37, 0xb8, 0x4a, 0x6e, 0xbc, 0x8a, 0xa4, + 0xd4, 0x08, 0x67, 0x8f, 0x5a, 0x56, 0xc3, 0x12, 0xd1, 0x95, + 0x81, 0x21, 0x1a, 0x4f, 0x69, 0x21, 0xaf, 0x9b, 0xaa, 0xee, + 0x6a, 0x5d, 0x8b, 0xa3, 0x28, 0xd6, 0x8f, 0x02, 0xf7, 0xe9, + 0x16, 0xd8, 0x83, 0xae, 0x3c, 0x24, 0xc2, 0x3b, 0xe4, 0x55, + 0xb1, 0xdf, 0x17, 0x98, 0x67, 0xb9, 0xe9, 0xd4, 0x54, 0x9a, + 0x7f, 0x26, 0xf0, 0x27, 0xab, 0x30, 0x9b, 0x8c, 0x36, 0xaf, + 0xd4, 0xfe, 0x78, 0x4a, 0x07, 0x6c, 0x54, 0xa2, 0x49, 0x13, + 0x1e, 0xc3, 0xdd, 0x0d, 0xe3, 0x9f, 0xb8, 0xc2, 0xa9, 0x4f, + 0xc8, 0x7b, 0xf4, 0x42, 0xbd, 0x1a, 0xbb, 0x98, 0x23, 0xa1, + 0x8b, 0x18, 0xd8, 0x78, 0x61, 0x0a, 0x5d, 0x2e, 0x83, 0x03, + 0x2b, 0x12, 0x89, 0xb6, 0x3f, 0x9b, 0xd0, 0xcd, 0x8a, 0x1f, + 0x96, 0x2d, 0x78, 0xaf, 0xe9, 0xec, 0x58, 0x41, 0xc4, 0xc6, + 0x02, 0x85, 0xae, 0x35, 0xda, 0xf8, 0x3a, 0xab, 0x46, 0x31, + 0x44, 0x6c, 0x85, 0x4d, 0xef, 0xff, 0x10, 0xa2, 0x39, 0x6b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x9b, 0xb1, 0x32, + 0x1d, 0x67, 0x8f, 0xb6, 0x7e, 0xcb, 0xbd, 0xa7, 0x1a, 0x76, + 0x6a, 0x8a, 0x99, 0x55, 0x9c, 0x7c, 0x57, 0xa6, 0x5b, 0xab, + 0x98, 0x6d, 0x27, 0x47, 0x60, 0x4a, 0x96, 0xb9, 0xd3, 0xfd, + 0x59, 0xdb, 0xc6, 0xa3, 0x5c, 0xc5, 0x2f, 0x3c, 0x87, 0xdd, + 0x5a, 0xbb, 0x8e, 0xe5, 0x9d, 0x96, 0x2a, 0xfd, 0x61, 0x98, + 0x16, 0x75, 0x07, 0xd3, 0xeb, 0xd5, 0x3e, 0x38, 0x87, 0x36, + 0x7e, 0x36, 0x17, 0xe5, 0x0c, 0xf0, 0x90, 0x71, 0x63, 0xeb, + 0x75, 0x1f, 0x6a, 0x9e, 0xc5, 0x58, 0x06, 0x43, 0xed, 0x20, + 0x2d, 0x21, 0x8a, 0xb1, 0x31, 0xe1, 0xaa, 0xdb, 0x71, 0x4b, + 0xf8, 0x29, 0xd1, 0x7d, 0x02, 0x7a, 0xdd, 0xbc, 0x9b, 0xaa, + 0x81, 0x63, 0xe1, 0x94, 0x75, 0x82, 0x67, 0x43, 0xaa, 0xc8, + 0x6f, 0xaf, 0x0b, 0x9c, 0xc4, 0xd3, 0x2a, 0xf8, 0x6b, 0xdc, + 0xb7, 0x93, 0x26, 0xc7, 0xa4, 0xce, 0x2d, 0x4e, 0x4a, 0xc1, + 0xd4, 0x1d, 0xe6, 0xa6, 0x9a, 0xe0, 0x7a, 0x3c, 0xfc, 0x33, + 0x03, 0xc0, 0x97, 0x10, 0xf7, 0xf1, 0x45, 0xb9, 0xf9, 0x91, + 0x55, 0x8c, 0xd9, 0xc4, 0x7c, 0xf5, 0x23, 0x17, 0x6e, 0x92, + 0x84, 0xc2, 0x68, 0x86, 0x8b, 0x28, 0xfa, 0x96, 0x6c, 0xd2, + 0xf4, 0x07, 0x0a, 0xc5, 0xf4, 0x60, 0x77, 0x63, 0x5d, 0x10, + 0x53, 0xe0, 0x3d, 0xae, 0x93, 0xdd, 0xcb, 0x7b, 0x7c, 0xb6, + 0x4c, 0x44, 0x17, 0xef, 0x57, 0x1e, 0xcd, 0xb4, 0x13, 0x56, + 0x45, 0xa7, 0x2c, 0xfe, 0x22, 0x57, 0xa2, 0x23, 0x68, 0x2c, + 0xea, 0x50, 0xdc, 0xe6, 0xc9, 0x53, 0x9a, 0x2f, 0x61, 0x54, + 0x37, 0x5e, 0x45, 0x52, 0x6a, 0x04, 0xd2, 0xa6, 0x2d, 0x2b, + 0x80, 0x09, 0x89, 0xab, 0xa1, 0xf1, 0x4a, 0xa8, 0xc5, 0xa7, + 0x91, 0x05, 0x07, 0x6e, 0xb7, 0x51, 0xa0, 0x9a, 0x3a, 0xf1, + 0x18, 0x5c, 0x2e, 0xd1, 0xbb, 0x63, 0x32, 0x6e, 0x3d, 0xf1, + 0xbe, 0xe7, 0x5e, 0x26, 0x78, 0xb9, 0x52, 0x06, 0x25, 0x54, + 0x83, 0xb2, 0xa9, 0xe3, 0xe2, 0x37, 0xba, 0xc9, 0x50, 0x4d, + 0x1d, 0x99, 0x0c, 0x2e, 0xf8, 0xaf, 0x98, 0x88, 0x2e, 0x1d, + 0xae, 0x3c, 0x59, 0xab, 0x26, 0xac, 0x8a, 0x8d, 0x58, 0x3f, + 0xdd, 0xfb, 0x1b, 0x3a, 0x87, 0xfe, 0x4c, 0x0b, 0xe3, 0x62, + 0x76, 0xe1, 0x97, 0x14, 0x54, 0x11, 0x31, 0x1d, 0xa8, 0x72, + 0x47, 0x25, 0x58, 0x17, 0x1c, 0xca, 0x2a, 0xd2, 0xf8, 0xe0, + 0x59, 0xd8, 0x74, 0xf3, 0xe3, 0x85, 0x7b, 0x93, 0xcd, 0x61, + 0x30, 0x0b, 0x48, 0xb1, 0xf9, 0x43, 0x0e, 0x23, 0x59, 0xe2, + 0xcf, 0xf6, 0xbe, 0x0c, 0xb5, 0x29, 0x77, 0x7d, 0x43, 0x1b, + 0x58, 0x3e, 0x20, 0xd0, 0xcd, 0x71, 0x86, 0x7b, 0x5f, 0x06, + 0xbb, 0xf5, 0xda, 0xdf, 0xc0, 0xec, 0x2c, 0x1f, 0x10, 0x68, + 0x5d, 0x21, 0x79, 0x77, 0x88, 0x32, 0xf8, 0xf7, 0xe8, 0xc3, + 0x8f, 0x89, 0x06, 0x4c, 0x31, 0x5f, 0x08, 0x45, 0xaf, 0xc1, + 0x6c, 0x7c, 0x9a, 0x7f, 0xfd, 0xbf, 0x5b, 0xe7, 0xbc, 0xe4, + 0x22, 0xdd, 0x7f, 0x76, 0xdb, 0x54, 0xe0, 0x1e, 0x12, 0xa7, + 0x34, 0x25, 0x46, 0xda, 0x9c, 0x63, 0x50, 0x0b, 0xa6, 0x4e, + 0x76, 0xef, 0x51, 0xde, 0x13, 0x72, 0x48, 0xf9, 0xfc, 0xa9, + 0x55, 0x05, 0x15, 0x95, 0xf9, 0xef, 0x54, 0x39, 0xc2, 0xf3, + 0x2c, 0xea, 0x0e, 0x65, 0x15, 0x69, 0x7c, 0x70, 0xcd, 0x6c, + 0x90, 0x50, 0xff, 0x0c, 0xd7, 0x34, 0x43, 0x02, 0x32, 0x1c, + 0x4f, 0x65, 0x2a, 0x53, 0x21, 0x37, 0x0f, 0x46, 0x8e, 0x50, + 0xad, 0xb3, 0x92, 0x18, 0x9b, 0x90, 0xc2, 0xf9, 0x3b, 0x52, + 0x4f, 0xa7, 0xb0, 0x87, 0x06, 0x8e, 0xa4, 0x07, 0x6e, 0x3d, + 0x40, 0xa5, 0xe0, 0x7f, 0x9f, 0x45, 0xa9, 0xc5, 0xac, 0x8b, + 0x82, 0x8f, 0x26, 0xbd, 0x4e, 0x62, 0x1b, 0x19, 0xc1, 0x07, + 0xc6, 0xd8, 0xde, 0xee, 0x60, 0xba, 0xc8, 0x45, 0x95, 0x55, + 0x77, 0x41, 0x96, 0x08, 0x32, 0x2e, 0x1c, 0x3a, 0x5b, 0xd5, + 0x6c, 0x3c, 0xd1, 0x05, 0xcf, 0x17, 0xa0, 0xe0, 0xf4, 0x09, + 0xa5, 0x5b, 0xfe, 0xac, 0x68, 0x87, 0x13, 0x4a, 0x0a, 0x51, + 0x2f, 0x09, 0xb2, 0x47, 0xc0, 0x2c, 0xe3, 0x81, 0x62, 0xcf, + 0x38, 0x8c, 0xbc, 0x01, 0x1f, 0xce, 0xfe, 0x45, 0xb9, 0x9c, + 0x22, 0xa4, 0x77, 0x0a, 0x7d, 0xd3, 0x9a, 0x97, 0x32, 0xdd, + 0x3f, 0x62, 0xb0, 0xd4, 0x1d, 0xae, 0xe5, 0x5b, 0x7f, 0x5e, + 0x21, 0x24, 0x25, 0x2d, 0xf1, 0xaa, 0xfb, 0xf8, 0xae, 0x8f, + 0xb6, 0x95, 0xf3, 0xda, 0x4e, 0x8e, 0xc0, 0x94, 0xef, 0xb1, + 0xd6, 0x7e, 0x23, 0xeb, 0x1c, 0x73, 0x93, 0xcd, 0xe7, 0x4c, + 0x78, 0x8a, 0xf2, 0x34, 0x0a, 0x39, 0x44, 0xae, 0x87, 0x46, + 0xd0, 0x58, 0x17, 0xa0, 0x7b, 0x0f, 0x51, 0xa6, 0xf7, 0x5e, + 0xc2, 0xa8, 0x62, 0x3a, 0x93, 0xe4, 0x8e, 0x4a, 0xb0, 0x2e, + 0x38, 0x57, 0x54, 0x67, 0x33, 0x03, 0xb2, 0x73, 0xa8, 0x48, + 0x34, 0x0e, 0x10, 0x83, 0x03, 0xbc, 0x84, 0xa7, 0x0d, 0x95, + 0x98, 0xaa, 0xcf, 0x61, 0x40, 0x6d, 0x31, 0xc7, 0xe6, 0x66, + 0x5a, 0x7e, 0xe4, 0xb1, 0x9d, 0x34, 0xa9, 0x2c, 0xd3, 0x27, + 0x95, 0xd3, 0x85, 0x3c, 0x0d, 0xe4, 0x8c, 0x0a, 0xfa, 0x6c, + 0xb0, 0x32, 0x82, 0xdc, 0xa5, 0xeb, 0x11, 0xca, 0x51, 0xf0, + 0x34, 0x16, 0x75, 0x28, 0x6e, 0x73, 0x85, 0xc8, 0x4d, 0xf6, + 0xd1, 0x2a, 0x8b, 0x5f, 0x5a, 0x9c, 0x94, 0x41, 0x6b, 0x3a, + 0x0f, 0x8f, 0xf7, 0x03, 0xf4, 0x78, 0x3b, 0x66, 0x01, 0x40, + 0xcc, 0xb1, 0xec, 0xee, 0x82, 0xd6, 0x57, 0xce, 0x33, 0xc5, + 0xf6, 0xfd, 0x95, 0x53, 0x0d, 0xc6, 0xd5, 0xf1, 0xb6, 0xac, + 0x55, 0x77, 0x35, 0xcf, 0xa4, 0xb0, 0x14, 0x6b, 0xa6, 0x01, + 0xe1, 0x20, 0x66, 0xb9, 0x76, 0x77, 0x41, 0x6b, 0xca, 0x67, + 0xf8, 0x83, 0x7b, 0x9f, 0xab, 0xc8, 0x6b, 0x3f, 0xf0, 0x94, + 0x0e, 0xd8, 0xa8, 0x87, 0x92, 0x26, 0x3c, 0x45, 0x79, 0x1a, + 0x05, 0xfd, 0xc2, 0x37, 0x08, 0x2b, 0xf2, 0xb5, 0x29, 0xed, + 0x41, 0x4f, 0x02, 0x15, 0x17, 0x4d, 0x5f, 0xcf, 0x5c, 0x61, + 0xb5, 0xc6, 0x64, 0xdc, 0x7a, 0x21, 0xbf, 0x0d, 0xbc, 0x4c, + 0xf0, 0xb1, 0xa4, 0x0c, 0xc7, 0xb4, 0x72, 0x1b, 0x28, 0x65, + 0xe6, 0xe5, 0x89, 0x3f, 0xfd, 0x42, 0xbf, 0xc2, 0xdb, 0x13, + 0x84, 0x19, 0xd4, 0xcc, 0x39, 0xf2, 0xf9, 0x22, 0x94, 0x1f, + 0x35, 0xfa, 0xcf, 0x2a, 0x74, 0xc1, 0x45, 0xee, 0x4b, 0xf7, + 0x3c, 0xb6, 0x95, 0x76, 0x2c, 0xc1, 0x62, 0x63, 0x01, 0xa3, + 0x57, 0xfb, 0x79, 0x35, 0x36, 0x74, 0xcd, 0x3f, 0x98, 0x16, + 0x05, 0xc4, 0xec, 0x01, 0xed, 0x28, 0xa8, 0x22, 0x4b, 0xe8, + 0x09, 0x16, 0x7d, 0xeb, 0x85, 0xb8, 0xe0, 0x9f, 0x93, 0x5f, + 0xcc, 0x0c, 0x8d, 0x0f, 0x48, 0x28, 0x9e, 0x06, 0x8a, 0x1a, + 0xc0, 0x01, 0x19, 0x0e, 0xc6, 0xd3, 0x15, 0xc8, 0xf1, 0xfa, + 0x6f, 0xfc, 0x46, 0x15, 0x38, 0xe6, 0xe5, 0x59, 0x0d, 0x98, + 0xf0, 0xd7, 0x27, 0x68, 0x14, 0x72, 0xa7, 0x0e, 0xba, 0x5e, + 0xbd, 0x30, 0x91, 0xa4, 0x1f, 0x37, 0xcf, 0x6c, 0xa3, 0xf8, + 0x80, 0xc6, 0xa2, 0x8d, 0xc0, 0x6e, 0x67, 0xe0, 0x5e, 0xac, + 0xd7, 0x47, 0x30, 0x3b, 0x0b, 0x77, 0x04, 0x1a, 0xc0, 0xb7, + 0x53, 0x8a, 0xe9, 0xaa, 0xee, 0x82, 0xef, 0x10, 0x64, 0x5c, + 0x38, 0x74, 0xb6, 0x69, 0x2c, 0x51, 0xe0, 0xc2, 0x29, 0x71, + 0xfa, 0x9e, 0x10, 0xb8, 0x38, 0x6f, 0x57, 0x80, 0xbb, 0xa0, + 0x81, 0x9a, 0xae, 0xfc, 0xe3, 0x22, 0x36, 0x2a, 0x5c, 0x6f, + 0xca, 0xad, 0x67, 0xa5, 0xf0, 0x1d, 0xd0, 0x3d, 0xce, 0xcb, + 0x31, 0x52, 0x19, 0x7c, 0xd6, 0xad, 0xd2, 0x51, 0x83, 0x7f, + 0xf2, 0x10, 0x17, 0x89, 0xbc, 0xd0, 0x19, 0x37, 0xff, 0x99, + 0x5f, 0x92, 0x2f, 0x13, 0x3c, 0xbd, 0x29, 0x03, 0xa3, 0xcd, + 0x0c, 0xdf, 0x8b, 0x0e, 0xdc, 0x7a, 0x80, 0x89, 0x03, 0xfe, + 0xfd, 0x8a, 0x91, 0x49, 0xd2, 0xbd, 0x95, 0x6a, 0x2a, 0x4d, + 0xde, 0x13, 0x78, 0xf2, 0xb4, 0x18, 0xac, 0x46, 0x1b, 0xb6, + 0x57, 0xe4, 0x8d, 0x17, 0xff, 0x51, 0xa5, 0xe7, 0xbb, 0x23, + 0xb2, 0x27, 0x95, 0x91, 0xfa, 0x24, 0x71, 0x70, 0x99, 0xb5, + 0xa1, 0x43, 0x02, 0x69, 0xf8, 0x7b, 0xb7, 0xe6, 0x51, 0xcc, + 0x8a, 0xff, 0xa1, 0x4d, 0x57, 0x7e, 0x90, 0x11, 0x1b, 0x15, + 0x2e, 0xd6, 0x65, 0xb7, 0xd2, 0xb3, 0x78, 0xef, 0xc3, 0x77, + 0xc4, 0x9a, 0x1e, 0x5b, 0xab, 0x3b, 0x16, 0x81, 0x31, 0xd0, + 0xe1, 0xb0, 0xca, 0x9c, 0x51, 0xa7, 0x60, 0x37, 0xd2, 0x70, + 0x2f, 0x56, 0x8a, 0xc2, 0x18, 0xfc, 0xe4, 0xda, 0x02, 0x0d, + 0x35, 0xde, 0x1e, 0xf3, 0x71, 0x1b, 0x15, 0xc9, 0x83, 0x74, + 0xe6, 0x40, 0xa6, 0x92, 0x48, 0x57, 0x47, 0x6e, 0x10, 0x56, + 0x27, 0xa9, 0x52, 0x19, 0x82, 0x9e, 0x04, 0x2a, 0x2e, 0x9a, + 0xbe, 0x5d, 0xf5, 0x69, 0x4d, 0x79, 0x98, 0xb1, 0xfb, 0x4b, + 0x6c, 0x64, 0x82, 0x1c, 0x9e, 0xe6, 0xfe, 0x3e, 0xb2, 0x07, + 0x5d, 0x2f, 0xbf, 0x18, 0xa9, 0x52, 0xee, 0xfa, 0x86, 0x36, + 0xb0, 0x7c, 0x40, 0x63, 0xd7, 0x3e, 0xef, 0x5a, 0xf0, 0x9d, + 0x11, 0x1b, 0xb0, 0x82, 0x4b, 0x4f, 0x04, 0xc9, 0x9f, 0x6a, + 0x16, 0xc9, 0x70, 0x61, 0xf5, 0xd9, 0x7d, 0x4f, 0x08, 0x5c, + 0x1c, 0xd6, 0xca, 0x40, 0xbc, 0x50, 0x86, 0x99, 0x8f, 0x6d, + 0x22, 0xed, 0x3e, 0x4d, 0x3a, 0x40, 0x53, 0xb3, 0xe0, 0x13, + 0x9d, 0x67, 0x73, 0xf0, 0xc2, 0x14, 0xba, 0x5c, 0xc5, 0x06, + 0x56, 0x24, 0xd1, 0xaf, 0x7e, 0xf5, 0x63, 0x59, 0xc4, 0x74, + 0xe5, 0x0b, 0xdf, 0x94, 0xa3, 0x5c, 0x70, 0xae, 0xa8, 0xce, + 0x66, 0x06, 0xa7, 0xe6, 0x34, 0x9e, 0xd2, 0x42, 0x9d, 0xf5, + 0x97, 0x1f, 0xd4, 0xba, 0xd5, 0x85, 0x50, 0x6f, 0xdd, 0x04, + 0xc6, 0xf4, 0xbe, 0xaa, 0xc4, 0x8b, 0x64, 0x33, 0xde, 0xf1, + 0xce, 0x87, 0x49, 0x3f, 0x4e, 0x40, 0x96, 0x13, 0x12, 0x2c, + 0xfa, 0x15, 0xc9, 0xb3, 0x03, 0xfd, 0xe5, 0xbe, 0x5b, 0x18, + 0xd9, 0x1e, 0xed, 0xa6, 0x7f, 0xf9, 0x2c, 0x35, 0x96, 0xca, + 0xa8, 0x66, 0x6f, 0xf6, 0x99, 0x09, 0x98, 0x9a, 0xf4, 0x29, + 0x81, 0xc8, 0x74, 0x5f, 0x79, 0x9d, 0x3b, 0xaa, 0xb1, 0xd9, + 0x68, 0x1b, 0x6b, 0x6d, 0xae, 0x0b, 0xd9, 0x2e, 0x3d, 0xa2, + 0x89, 0x0d, 0xb5, 0x46, 0xa7, 0x4e, 0xe9, 0xe1, 0x37, 0x48, + 0x63, 0x7a, 0x5f, 0x55, 0x62, 0xa4, 0x32, 0xf8, 0x6f, 0x99, + 0x67, 0xa2, 0xc5, 0xfe, 0x27, 0x20, + }, + { + /* 5 */ + 0x79, 0x80, 0xab, 0xe7, 0xa9, 0x6f, 0x50, 0x97, 0xbe, 0x20, + 0xdb, 0x5a, 0xb5, 0x1a, 0xf0, 0xb4, 0x91, 0x1a, 0x97, 0x16, + 0x14, 0x45, 0x9f, 0x6e, 0x60, 0xe7, 0xef, 0x55, 0x0a, 0x58, + 0x62, 0xaa, 0x99, 0xdc, 0x5f, 0x93, 0xd1, 0x32, 0x94, 0x30, + 0x3d, 0x37, 0xfc, 0x67, 0x89, 0x09, 0x7f, 0xce, 0xb9, 0x42, + 0xf9, 0xc2, 0x43, 0x2d, 0xb8, 0x8b, 0x8a, 0xf1, 0xb0, 0xaf, + 0xc0, 0x8e, 0x0b, 0x9d, 0x71, 0x46, 0x63, 0x62, 0x6c, 0x18, + 0x5b, 0xc9, 0xe3, 0xf0, 0xc8, 0x68, 0x36, 0x4b, 0xed, 0xd0, + 0xea, 0x4a, 0x0e, 0x41, 0x1d, 0x47, 0xbd, 0x0f, 0x58, 0xf3, + 0x40, 0xe2, 0xef, 0xc7, 0x04, 0x07, 0xd7, 0x56, 0x4e, 0xa7, + 0xd0, 0xcc, 0x51, 0x02, 0x84, 0xf4, 0xeb, 0xf2, 0x68, 0xd9, + 0xf3, 0x27, 0x95, 0x79, 0xf3, 0xb5, 0x97, 0x9f, 0x7b, 0x41, + 0xaf, 0x8f, 0x07, 0x4c, 0xaa, 0x91, 0x8d, 0x98, 0x55, 0xbb, + 0xa1, 0x90, 0x7d, 0xdd, 0x93, 0x5d, 0x9b, 0x5e, 0x6c, 0xb9, + 0xdf, 0x05, 0x76, 0xb1, 0xda, 0x9b, 0xfb, 0xd9, 0xc6, 0xb6, + 0x87, 0x08, 0x55, 0x56, 0x2a, 0x4e, 0x63, 0xe2, 0x4a, 0x9c, + 0xdb, 0xf3, 0xe2, 0x81, 0x96, 0x61, 0xbe, 0x73, 0x16, 0x4c, + 0x10, 0xd9, 0x4b, 0x41, 0x01, 0x71, 0xb5, 0xe7, 0x55, 0xe4, + 0x05, 0x80, 0x57, 0xfa, 0x18, 0x49, 0x4b, 0x84, 0xe3, 0x16, + 0xf9, 0xcb, 0x3f, 0xcc, 0x72, 0x56, 0x6d, 0xe6, 0x9e, 0xfb, + 0x5a, 0x33, 0xdf, 0xfd, 0xd7, 0x9b, 0x61, 0x39, 0x54, 0xd3, + 0xb8, 0xc8, 0x2d, 0x0a, 0xaa, 0x26, 0xd8, 0x44, 0x56, 0x2e, + 0xf7, 0xa6, 0x3d, 0x5c, 0x7d, 0xe3, 0xcf, 0x44, 0x2a, 0xb5, + 0xb4, 0xb8, 0x71, 0x48, 0x33, 0x43, 0x15, 0xd3, 0x1f, 0x86, + 0xd5, 0x86, 0x7c, 0x17, 0x70, 0xa1, 0x23, 0xf4, 0x02, 0xc0, + 0x9f, 0x1f, 0x38, 0x5c, 0x65, 0x3e, 0xbd, 0x21, 0x9d, 0x61, + 0xc0, 0xf7, 0x5c, 0xa4, 0x45, 0x99, 0x58, 0xb6, 0x60, 0x47, + 0xe4, 0xaf, 0xa9, 0x0d, 0xaa, 0x0b, 0x0a, 0xc3, 0xae, 0x37, + 0x30, 0x92, 0x96, 0xcb, 0x05, 0x2c, 0x31, 0x55, 0xfe, 0x66, + 0x39, 0x2b, 0xd7, 0x73, 0x4f, 0x9c, 0x2d, 0xf8, 0x8e, 0x9f, + 0x8a, 0xac, 0xd1, 0xfd, 0x3b, 0xaf, 0x16, 0xf5, 0xee, 0x3c, + 0x7a, 0xd4, 0x95, 0x5b, 0x37, 0xe4, 0x77, 0x52, 0x8e, 0x0b, + 0x1d, 0x82, 0xe6, 0xb7, 0x5f, 0x94, 0xc0, 0xb6, 0x6b, 0xc1, + 0xe7, 0xd8, 0xce, 0x99, 0x83, 0x73, 0x36, 0x62, 0xa3, 0x8b, + 0xf8, 0x46, 0xac, 0xde, 0x44, 0xf9, 0xf6, 0x58, 0x7c, 0x69, + 0x37, 0xb0, 0x38, 0x17, 0x3d, 0x1d, 0x1e, 0x86, 0x31, 0x59, + 0x50, 0x75, 0x79, 0x9e, 0x0f, 0x74, 0x53, 0xff, 0x07, 0xdb, + 0x4f, 0x4b, 0x73, 0x60, 0xaf, 0xa2, 0x0a, 0x46, 0xa6, 0x63, + 0xd8, 0xef, 0x32, 0xc6, 0x1b, 0x31, 0xb0, 0xa4, 0x7c, 0x23, + 0x56, 0x6f, 0x22, 0x9d, 0x7b, 0x2c, 0x3e, 0xd5, 0xfa, 0x58, + 0xfb, 0x6d, 0x44, 0xd0, 0x04, 0x7e, 0x92, 0xc8, 0xa1, 0x8a, + 0x5c, 0x11, 0x02, 0xc6, 0x75, 0x22, 0x70, 0x2e, 0x7a, 0x3a, + 0x3c, 0xcf, 0x62, 0xb2, 0xa0, 0xea, 0xf2, 0xff, 0x1e, 0xe8, + 0xa6, 0x3d, 0x89, 0x93, 0x0c, 0x5a, 0x98, 0xdc, 0x82, 0x8c, + 0x87, 0x54, 0xda, 0x03, 0x4c, 0xab, 0x45, 0x06, 0x4a, 0xe9, + 0x75, 0x97, 0x82, 0x24, 0x21, 0x1d, 0x76, 0xab, 0xff, 0x8c, + 0x41, 0x19, 0x63, 0xdb, 0xae, 0xd6, 0xe5, 0x40, 0x79, 0xa3, + 0x01, 0x95, 0x3a, 0xd4, 0x30, 0xa8, 0xdd, 0xc3, 0x03, 0x93, + 0x3d, 0x1c, 0x40, 0xe6, 0xcd, 0x8b, 0xec, 0x0d, 0xdc, 0x07, + 0xab, 0x10, 0x87, 0x1e, 0xf7, 0x20, 0x29, 0x30, 0x77, 0x8c, + 0x07, 0xbf, 0x1e, 0x9e, 0xa9, 0x0c, 0x65, 0x6d, 0xe2, 0x75, + 0x22, 0xda, 0x8a, 0x2b, 0x27, 0xb2, 0x68, 0x66, 0xc9, 0x01, + 0x42, 0x7a, 0x94, 0x79, 0x34, 0x8d, 0x98, 0xf2, 0xcd, 0x0f, + 0xe7, 0x5b, 0xfc, 0x38, 0x3e, 0x16, 0xe5, 0x73, 0xaa, 0x49, + 0x7e, 0xaf, 0x42, 0x92, 0x41, 0x97, 0x96, 0xfa, 0xb7, 0xe9, + 0x61, 0xce, 0xee, 0x55, 0xa2, 0xc4, 0xba, 0x6e, 0xa3, 0x4b, + 0xce, 0xb7, 0xcc, 0xb3, 0x0c, 0x82, 0x75, 0x9b, 0x20, 0x5d, + 0xe4, 0x33, 0x06, 0x89, 0x9f, 0x66, 0x16, 0xfc, 0x05, 0xda, + 0x6a, 0x59, 0x80, 0x65, 0xf3, 0x3f, 0xba, 0x90, 0x35, 0xee, + 0x43, 0xe3, 0x6c, 0xc4, 0x85, 0xd5, 0x33, 0x8c, 0x9b, 0x7f, + 0x88, 0x31, 0x2f, 0xb0, 0xf8, 0xd2, 0x6e, 0xa3, 0x1f, 0x52, + 0xd4, 0x07, 0xff, 0xf9, 0xb2, 0x40, 0xed, 0xf5, 0x93, 0x35, + 0x9e, 0x1c, 0x15, 0x6a, 0xe0, 0x5c, 0xf4, 0x74, 0x78, 0x5d, + 0xc4, 0xa7, 0x83, 0x17, 0x27, 0x3d, 0x3c, 0x13, 0x8f, 0x7a, + 0xf5, 0x18, 0xda, 0x46, 0xe2, 0xbe, 0x0f, 0x4f, 0xb5, 0x06, + 0xd3, 0xd7, 0x71, 0xdb, 0x11, 0x6d, 0xb0, 0xec, 0x28, 0x1f, + 0xd6, 0x8d, 0x8a, 0xae, 0x94, 0x3b, 0x99, 0x0a, 0x6b, 0x7c, + 0x5d, 0x14, 0xde, 0xf8, 0x9f, 0x7a, 0x45, 0x6c, 0x63, 0x27, + 0x9a, 0x3e, 0xc2, 0x57, 0xc3, 0x2b, 0xa5, 0xae, 0x03, 0xb8, + 0x2b, 0xe8, 0xf0, 0xba, 0x4b, 0x8d, 0xc5, 0x2e, 0x4e, 0x7a, + 0x78, 0x26, 0xdd, 0xf4, 0xd0, 0x8d, 0x01, 0xec, 0xa3, 0xac, + 0xfe, 0xa0, 0x8e, 0xb2, 0x4d, 0x91, 0xb0, 0x36, 0xc1, 0xe1, + 0x8e, 0x48, 0x43, 0x11, 0xeb, 0xbc, 0x2d, 0x2e, 0x8d, 0x12, + 0x7c, 0x60, 0x94, 0x44, 0x77, 0xc0, 0x23, 0x26, 0x8d, 0xb9, + 0x62, 0xa5, 0x67, 0x36, 0x72, 0xe8, 0x02, 0xb2, 0x31, 0xa1, + 0xa9, 0xa7, 0x0a, 0x16, 0xfa, 0x35, 0x65, 0x1a, 0x79, 0xa8, + 0xdb, 0xe4, 0x67, 0xdf, 0xd3, 0xd4, 0x8b, 0x7d, 0xf3, 0xab, + 0x8c, 0x55, 0xc1, 0x09, 0x99, 0x96, 0xfc, 0x5a, 0x4f, 0x23, + 0x81, 0x97, 0x68, 0x46, 0x06, 0xb3, 0x56, 0x13, 0x23, 0xb7, + 0x96, 0xd9, 0x49, 0x5c, 0x9c, 0xf4, 0xf0, 0x4c, 0x79, 0x2b, + 0xdf, 0x90, 0x86, 0x22, 0x15, 0xbb, 0x5a, 0x5c, 0xd9, 0x24, + 0xf8, 0xc0, 0xeb, 0x88, 0xee, 0x43, 0x4d, 0x32, 0x3a, 0xdc, + 0xf1, 0x44, 0x8e, 0xbf, 0x7c, 0xed, 0x59, 0xef, 0x99, 0xf6, + 0x51, 0x1d, 0x98, 0xb4, 0x46, 0xcb, 0x81, 0xe5, 0xad, 0x4b, + 0x7e, 0x2d, 0xc6, 0xf0, 0xa1, 0xaa, 0x34, 0x23, 0x97, 0xa9, + 0xc1, 0x05, 0x37, 0xf2, 0x09, 0xb7, 0x29, 0xbb, 0x73, 0xa1, + 0xfa, 0x14, 0x1b, 0x81, 0xad, 0x6e, 0xce, 0xa8, 0x89, 0x19, + 0x4a, 0x18, 0xff, 0xfa, 0x7e, 0xd2, 0xa5, 0xe5, 0xde, 0x67, + 0x15, 0x44, 0x2e, 0x32, 0x9a, 0xe3, 0xcb, 0xe8, 0x36, 0x11, + 0xf4, 0xea, 0x4d, 0xc8, 0x9e, 0x17, 0xa2, 0x73, 0x49, 0x66, + 0x3f, 0x0e, 0xee, 0xe4, 0xa8, 0x6c, 0xcb, 0x83, 0xfe, 0x5b, + 0xf1, 0xc5, 0xab, 0xdd, 0x98, 0xbb, 0xaa, 0xae, 0xdc, 0xc1, + 0xb6, 0xa6, 0xe2, 0x26, 0x55, 0xa9, 0xa7, 0x4c, 0xc0, 0xc2, + 0x52, 0x25, 0xea, 0x42, 0xe8, 0x1c, 0x34, 0xd1, 0x6b, 0xf5, + 0x75, 0x94, 0xfb, 0x29, 0xb6, 0x5f, 0x7e, 0x0c, 0xf5, 0x3a, + 0x1c, 0x77, 0xdd, 0x67, 0x05, 0xfe, 0x9b, 0x30, 0x24, 0x3f, + 0x53, 0x08, 0xf7, 0x83, 0x5e, 0x6a, 0x05, 0x84, 0xd2, 0x02, + 0xf0, 0x4d, 0x2f, 0x49, 0x0f, 0x9a, 0xed, 0x91, 0x41, 0x0a, + 0x6e, 0x27, 0x12, 0xad, 0x52, 0xb5, 0xe6, 0x81, 0x37, 0x28, + 0x36, 0xc1, 0xc1, 0xaa, 0x4b, 0x7d, 0xba, 0x95, 0xd1, 0x67, + 0x77, 0xcb, 0x51, 0x62, 0x5d, 0x37, 0xb0, 0xc4, 0xe1, 0x34, + 0xed, 0x2c, 0x28, 0x8a, 0xfd, 0xdc, 0xc0, 0x0d, 0x1d, 0xaa, + 0x14, 0xb0, 0xc4, 0x97, 0x62, 0xb1, 0x1b, 0x43, 0xd5, 0x4c, + 0x06, 0xf8, 0x9c, 0xbd, 0xa0, 0x76, 0x8b, 0xcf, 0x0a, 0xec, + 0x24, 0xfd, 0xc2, 0xf2, 0x11, 0xc5, 0xc8, 0x94, 0x78, 0xae, + 0xa4, 0xd1, 0xe9, 0x4e, 0x9b, 0x61, 0xe9, 0xf2, 0x25, 0xa9, + 0xed, 0xfd, 0xf6, 0x82, 0x9d, 0xdd, 0x0e, 0x98, 0x97, 0xe1, + 0xd9, 0xf3, 0x65, 0x6a, 0x54, 0x08, 0xa6, 0x2c, 0xa9, 0x5a, + 0x96, 0xfb, 0x06, 0x15, 0x53, 0x20, 0x38, 0x2a, 0xec, 0xf9, + 0x58, 0x52, 0x3e, 0xf0, 0x2b, 0xd6, 0x11, 0xaf, 0xdc, 0x16, + 0x1f, 0x8b, 0x7d, 0x2c, 0x5d, 0x7d, 0x69, 0x15, 0xb8, 0xaa, + 0x98, 0x03, 0xc6, 0x8e, 0x7f, 0x8b, 0x5c, 0x54, 0x6b, 0xd5, + 0x26, 0x2d, 0xf0, 0x42, 0xb1, 0xa8, 0xba, 0x62, 0xfe, 0x9a, + 0xd0, 0x3c, 0xb9, 0xcb, 0x0d, 0x78, 0xbe, 0x99, 0xb6, 0x89, + 0x30, 0x4d, 0x17, 0x29, 0x80, 0xb7, 0x16, 0xcc, 0x18, 0x61, + 0x39, 0x5b, 0x21, 0xf6, 0xbf, 0x09, 0xc2, 0xc8, 0x15, 0xc0, + 0xf4, 0xdc, 0x76, 0x5f, 0x61, 0x24, 0x3f, 0xbe, 0x4b, 0x81, + 0x6c, 0xcf, 0xd2, 0xf3, 0x18, 0x66, 0x35, 0xb1, 0xc5, 0x1b, + 0x69, 0xba, 0x28, 0x36, 0x48, 0x39, 0x47, 0x27, 0x22, 0x49, + 0x53, 0xeb, 0xf0, 0x9f, 0x8b, 0x61, 0x11, 0x9c, 0xf5, 0xc2, + 0xca, 0xd4, 0xa8, 0x10, 0x8f, 0x58, 0x91, 0xb4, 0xef, 0x35, + 0x0c, 0x2a, 0xa6, 0x40, 0x70, 0x54, 0xf7, 0xc8, 0xe8, 0xf6, + 0x42, 0xd3, 0x7d, 0xb9, 0x33, 0x32, 0xa7, 0x3a, 0x21, 0x5e, + 0x87, 0x74, 0x7c, 0x8b, 0xd6, 0x1c, 0x7a, 0x62, 0x8d, 0xc3, + 0x32, 0x52, 0x09, 0xd4, 0x3d, 0x70, 0x54, 0x6b, 0xff, 0x0e, + 0x20, 0x73, 0x87, 0xa4, 0x76, 0xe7, 0x6e, 0xe2, 0xb4, 0x08, + 0xa2, 0x0f, 0x9a, 0x10, 0x20, 0x9e, 0xa6, 0x51, 0x92, 0x1f, + 0x2c, 0xbb, 0xb7, 0xc6, 0x4c, 0xc8, 0x49, 0x87, 0x74, 0x53, + 0xd1, 0xe5, 0x18, 0xb4, 0xf3, 0x7b, 0xc7, 0xdb, 0xcd, 0xa8, + 0x77, 0x06, 0x98, 0x95, 0x8a, 0x0c, 0x85, 0x36, 0xa0, 0x7c, + 0xde, 0x71, 0x6d, 0xfd, 0x15, 0xec, 0x21, 0x28, 0x6f, 0x33, + 0xb7, 0x50, 0x58, 0x76, 0x14, 0xee, 0x6b, 0xa7, 0x45, 0x57, + 0x4a, 0xfc, 0xad, 0x05, 0xd4, 0x3e, 0xcf, 0x0a, 0x49, 0x51, + 0x5e, 0x7f, 0x72, 0x9e, 0x6a, 0x90, 0xb3, 0x85, 0xb1, 0xf6, + 0x39, 0x3f, 0xbe, 0x2f, 0xfa, 0x05, 0x5d, 0x88, 0x54, 0xa9, + 0xab, 0xb3, 0xe2, 0x90, 0x66, 0x86, 0x2a, 0x65, 0x3e, 0xcf, + 0x87, 0xe6, 0x92, 0xcc, 0x7e, 0x1c, 0x1f, 0x0b, 0x93, 0xd8, + 0x55, 0xc5, 0x3f, 0xb6, 0x21, 0x49, 0x27, 0x45, 0xe9, 0x1a, + 0xe1, 0x7f, 0x83, 0x19, 0xbd, 0x80, 0xea, 0xab, 0x91, 0x68, + 0x46, 0x95, 0xe8, 0x9a, 0x3c, 0xf1, 0xbd, 0x2a, 0xcf, 0xf9, + 0xde, 0xc7, 0x34, 0x0f, 0xbf, 0x42, 0x92, 0x1e, 0xf4, 0x70, + 0xc3, 0x1e, 0xb2, 0x69, 0x36, 0x34, 0xf6, 0x1c, 0xe9, 0x40, + 0x59, 0x78, 0x5a, 0x80, 0x5a, 0xa6, 0x26, 0x5e, 0xcb, 0xca, + 0x37, 0xa1, 0xcc, 0xc8, 0xd9, 0xe8, 0x84, 0xbb, 0x59, 0x13, + 0x66, 0xd2, 0x7f, 0xe0, 0x56, 0x96, 0xe2, 0xd7, 0x53, 0xd5, + 0x48, 0x6f, 0x2b, 0x06, 0xe5, 0xde, 0xf0, 0x13, 0xa7, 0xbd, + 0x31, 0xb3, 0xd2, 0x1b, 0x39, 0x74, 0x01, 0x59, 0xf9, 0xb1, + 0xb5, 0xb2, 0xcb, 0xbc, 0xb1, 0x48, 0xdf, 0x8f, 0xa8, 0xcf, + 0xac, 0x2f, 0x36, 0xbd, 0x8e, 0xe3, 0x3b, 0xb9, 0x0e, 0x75, + 0x9e, 0x96, 0xe6, 0xc0, 0x9d, 0x87, 0x14, 0x8c, 0x8f, 0xc6, + 0x73, 0x1d, 0x64, 0x4f, 0xe2, 0x8c, 0xc6, 0xc4, 0xd8, 0x30, + 0xb6, 0x51, 0x05, 0x23, 0x53, 0xd0, 0x6c, 0x96, 0x19, 0x63, + 0x57, 0x6b, 0x93, 0x20, 0xdd, 0xb0, 0xe1, 0xab, 0x1d, 0x6a, + 0x18, 0x54, 0x8f, 0x80, 0xe0, 0xa8, 0xc4, 0xa1, 0x36, 0x86, + 0x69, 0x98, 0x0c, 0x33, 0xfb, 0xb9, 0x83, 0xec, 0xd5, 0x5d, + 0x14, 0x1b, 0x9b, 0x0c, 0x6d, 0x23, 0x71, 0x5f, 0xe6, 0xc6, + 0xbb, 0x03, 0x88, 0x8a, 0xd9, 0x8c, 0xe9, 0xd7, 0xee, 0x29, + 0x6a, 0xe2, 0x9e, 0x9d, 0x59, 0x20, 0x97, 0x9b, 0xa8, 0xfb, + 0x4f, 0x0e, 0xeb, 0x35, 0x1a, 0x59, 0xa9, 0xfc, 0x2c, 0xf4, + 0x6f, 0x14, 0x61, 0x87, 0x41, 0xbb, 0x16, 0x76, 0xb1, 0xb5, + 0x37, 0x0a, 0xba, 0xd3, 0xa8, 0x91, 0x95, 0xa5, 0x07, 0xe3, + 0xcc, 0xcf, 0x54, 0xca, 0x7c, 0x5d, 0x2e, 0xeb, 0x38, 0xc7, + 0x74, 0xdf, 0xb1, 0x3c, 0xa3, 0x4a, 0xc3, 0x0e, 0x3a, 0x9a, + 0x10, 0x1c, 0x69, 0xcf, 0xf8, 0x2e, 0xe0, 0x81, 0x46, 0x2b, + 0x04, 0x43, 0xfd, 0x3e, 0x70, 0xb8, 0xca, 0x7c, 0x8b, 0x43, + 0x3e, 0xea, 0x38, 0xb1, 0xf0, 0x7a, 0x01, 0x60, 0xae, 0xee, + 0x1c, 0x2e, 0xd3, 0x1f, 0xaf, 0xbe, 0xfc, 0x18, 0x29, 0x74, + 0x38, 0xee, 0x79, 0xce, 0x0a, 0x3f, 0xf5, 0x60, 0x48, 0x7e, + 0xc2, 0x12, 0x60, 0x95, 0x4a, 0x2f, 0x9a, 0xea, 0xb2, 0xe5, + 0x1f, 0x18, 0x25, 0x11, 0x6d, 0x30, 0x7f, 0x33, 0xfd, 0xf4, + 0x8a, 0xd8, 0xc6, 0x4e, 0xf7, 0x7c, 0x47, 0xae, 0x45, 0x56, + 0x89, 0x9f, 0x64, 0x02, 0x4d, 0x50, 0xf6, 0xfb, 0x90, 0x21, + 0xd5, 0xe1, 0x3c, 0x82, 0x7b, 0x83, 0x73, 0xc7, 0x45, 0xf4, + 0xf2, 0x59, 0x34, 0x33, 0x85, 0xe1, 0x21, 0x3d, 0x4a, 0xdd, + 0x1a, 0xa7, 0x4c, 0x79, 0x14, 0x2c, 0x37, 0x6a, 0xca, 0x34, + 0xf2, 0x93, 0x75, 0x0b, 0xce, 0x7d, 0x65, 0x6b, 0xd5, 0xfa, + 0xfd, 0xde, 0x12, 0xc3, 0x27, 0xc9, 0x04, 0x11, 0xe8, 0xd6, + 0xc0, 0xe5, 0xf2, 0x8a, 0x0c, 0x09, 0xac, 0x06, 0xd7, 0xf0, + 0xd9, 0xce, 0x73, 0x63, 0xbc, 0xe0, 0x44, 0x45, 0x8d, 0x46, + 0x95, 0x8a, 0x86, 0x8e, 0x8b, 0x94, 0x2e, 0xcb, 0x26, 0x70, + 0xd0, 0xc2, 0x6f, 0x52, 0x17, 0x15, 0x6a, 0xa4, 0x76, 0x9d, + 0x2c, 0x29, 0x1f, 0x78, 0xf4, 0x6b, 0xe9, 0xb6, 0x6e, 0x0b, + 0xee, 0xa4, 0xdf, 0x16, 0x43, 0x47, 0xa4, 0x4a, 0x17, 0x84, + 0x13, 0x38, 0x68, 0x61, 0xd6, 0x29, 0xea, 0xeb, 0x35, 0x52, + 0x50, 0xb0, 0xdc, 0x6b, 0xae, 0xd0, 0x4e, 0x09, 0x17, 0x2c, + 0xbe, 0x37, 0x57, 0x6f, 0xd2, 0x6e, 0x28, 0x58, 0x6e, 0xd4, + 0x57, 0x68, 0x27, 0xe5, 0xea, 0x16, 0x5f, 0xfa, 0xca, 0xd6, + 0x69, 0x37, 0xaa, 0xb5, 0x81, 0xe3, 0xfa, 0x79, 0xe5, 0xba, + 0xf5, 0xbc, 0xd8, 0xb1, 0x7d, 0x0a, 0xec, 0xa1, 0x5e, 0xc5, + 0x42, 0xfd, 0x48, 0x10, 0xd3, 0x8e, 0x03, 0xa0, 0x31, 0xf1, + 0x24, 0x72, 0xb6, 0x21, 0xdd, 0x40, 0xb4, 0x92, 0xb5, 0xd6, + 0x28, 0xaa, 0x5f, 0x10, 0x8c, 0x2d, 0xbb, 0x0d, 0x78, 0x5a, + 0xbb, 0x92, 0xcb, 0x72, 0xe3, 0x40, 0xca, 0x7d, 0x0c, 0xc5, + 0xc4, 0x42, 0x90, 0x0b, 0x9d, 0x84, 0x96, 0xc1, 0xd8, 0x5d, + 0x67, 0x25, 0x30, 0xcc, 0x6a, 0xa1, 0x49, 0x36, 0xd2, 0xb7, + 0x50, 0x6c, 0x05, 0x0b, 0x7d, 0xfb, 0xd3, 0x0d, 0xdd, 0x54, + 0x8c, 0x72, 0xd2, 0x8e, 0x88, 0x6a, 0xa4, 0xdf, 0x7b, 0x50, + 0x99, 0x57, 0x09, 0x02, 0x22, 0x61, 0x38, 0x14, 0xaf, 0xb7, + 0xe5, 0x9f, 0x66, 0xad, 0xf6, 0xa0, 0xf1, 0xae, 0x12, 0x04, + 0x44, 0xc2, 0x70, 0x28, 0x9d, 0xad, 0x09, 0xfd, 0xcc, 0x99, + 0x2b, 0xe0, 0x45, 0x3c, 0xa7, 0xd2, 0x6c, 0x68, 0x2f, 0x38, + 0x11, 0x80, 0xb2, 0xf0, 0xb4, 0xc3, 0x09, 0xae, 0xd1, 0xdd, + 0x95, 0xa0, 0x32, 0x25, 0x1e, 0xca, 0x29, 0xa5, 0xab, 0xf2, + 0x56, 0x89, 0xc7, 0x19, 0x1d, 0x6e, 0x99, 0x22, 0x47, 0xbe, + 0x3e, 0x97, 0xcd, 0x96, 0xad, 0x7b, 0xc9, 0xef, 0x46, 0x4c, + 0xd9, 0xb1, 0xc4, 0x89, 0xce, 0x6c, 0xe4, 0x13, 0x04, 0xa7, + 0x62, 0x81, 0x91, 0x8d, 0x0d, 0xcd, 0xb5, 0x7e, 0x16, 0x7a, + 0xd6, 0x0a, 0xd1, 0xa2, 0xc1, 0xbc, 0x0b, 0x3b, 0xb9, 0xbb, + 0x13, 0xf7, 0x78, 0x21, 0xb9, 0x54, 0x5d, 0x31, 0x7f, 0x4d, + 0x68, 0x1e, 0xbd, 0x84, 0xe7, 0x3c, 0x61, 0x09, 0x30, 0xab, + 0x25, 0xf6, 0x4d, 0x75, 0x59, 0x93, 0xee, 0x0c, 0xf3, 0xe9, + 0xd7, 0x18, 0x01, 0x68, 0x19, 0x58, 0x50, 0xd7, 0x39, 0x7b, + 0x43, 0x1a, 0x3a, 0x97, 0x28, 0xa3, 0x4b, 0xed, 0xef, 0x41, + 0x73, 0xba, 0xce, 0x4a, 0x60, 0x5b, 0xd4, 0x81, 0x92, 0x6c, + 0x67, 0xad, 0xa0, 0xd8, 0x8d, 0xf0, 0x68, 0xf9, 0x1b, 0x06, + 0x66, 0xa3, 0x48, 0x3c, 0x32, 0x1a, 0xec, 0x62, 0xaa, 0x34, + 0xd3, 0x35, 0x2a, 0x04, 0x53, 0x16, 0xb5, 0x2d, 0x4b, 0x9c, + 0x03, 0xeb, 0xc8, 0x10, 0x1c, 0x15, 0xbc, 0x49, 0x84, 0x39, + 0x90, 0x20, 0x65, 0xdf, 0x06, 0x83, 0x62, 0x21, 0x48, 0xe4, + 0xaf, 0x42, 0xf1, 0x7b, 0xbe, 0xe5, 0x61, 0x64, 0xeb, 0x60, + 0x7a, 0x6e, 0x3b, 0xce, 0xd1, 0x12, 0xfe, 0x5f, 0x32, 0x01, + 0xc7, 0x28, 0x7b, 0x9c, 0x48, 0xf1, 0x8b, 0x91, 0x1e, 0x41, + 0xdc, 0xa0, 0xd8, 0x82, 0x5c, 0x15, 0x70, 0x4d, 0xe8, 0x7d, + 0xa1, 0x78, 0x85, 0x94, 0x45, 0x1c, 0x74, 0xf7, 0x20, 0x38, + 0x02, 0xd0, 0x32, 0xb0, 0xa0, 0x6d, 0x72, 0xf6, 0x86, 0x34, + 0x74, 0xed, 0x50, 0x85, 0x96, 0x19, 0xb1, 0x84, 0x31, 0x47, + 0x86, 0x5a, 0xb3, 0xd5, 0xd7, 0x21, 0xa3, 0x9d, 0x43, 0xdf, + 0x16, 0xf9, 0x56, 0x03, 0x8a, 0x78, 0x8d, 0x67, 0xd8, 0xd0, + 0x5e, 0x70, 0x22, 0xc3, 0xa7, 0x23, 0xab, 0x45, 0x51, 0xd8, + 0xc5, 0x33, 0xfe, 0x07, 0x77, 0x72, 0x54, 0x36, 0x84, 0xa0, + 0x7f, 0xcc, 0x99, 0x83, 0xc9, 0x6c, 0x83, 0xf8, 0x7f, 0xe2, + 0xda, 0x39, 0x2a, 0x1b, 0x42, 0x50, 0xde, 0x66, 0xad, 0xa0, + 0xd6, 0x3e, 0x57, 0xff, 0x80, 0x1b, 0x68, 0x79, 0xc7, 0xee, + 0xd1, 0x65, 0x40, 0x7a, 0xb8, 0xca, 0x4e, 0x8a, 0x11, 0x34, + 0x01, 0xfe, 0xc5, 0x32, 0xb9, 0xc3, 0x17, 0x95, 0xe1, 0xd0, + 0x8c, 0xe9, 0xc8, 0x04, 0x9a, 0xa0, 0x2f, 0x35, 0xe3, 0x42, + 0x69, 0x01, 0x78, 0xc7, 0xf6, 0xc5, 0xe6, 0x4d, 0xa0, 0xa3, + 0x7b, 0xd6, 0x9f, 0x63, 0x9c, 0x12, 0x2e, 0x58, 0xbf, 0x6e, + 0xae, 0xde, 0x67, 0xdc, 0x31, 0xb9, 0xec, 0xc0, 0x8b, 0x26, + 0x03, 0x7c, 0x4e, 0xbf, 0x50, 0x3b, 0xa4, 0x86, 0x05, 0x76, + 0x22, 0x4e, 0x94, 0xe1, 0x32, 0x72, 0x5e, 0x4d, 0x31, 0xf2, + 0x38, 0x25, 0x19, 0x02, 0xe2, 0x4a, 0xa5, 0xa8, 0x06, 0x2d, + 0x4c, 0x6e, 0x41, 0x46, 0xa2, 0x2a, 0x6d, 0xe0, 0x26, 0xb4, + 0xc3, 0x03, 0x17, 0x94, 0x1c, 0x82, 0x3a, 0x8e, 0xb9, 0x1e, + 0xb0, 0x25, 0x80, 0x07, 0x1d, 0x4d, 0x08, 0x0e, 0x33, 0x69, + 0xde, 0x70, 0x2b, 0x4b, 0x71, 0x8a, 0xc8, 0x8b, 0x24, 0xd6, + 0xf4, 0x03, 0x93, 0x6f, 0x94, 0x11, 0xea, 0xed, 0xc7, 0x48, + 0x42, 0x3a, 0xec, 0x95, 0x3d, 0xdb, 0x82, 0x32, 0xc6, 0x75, + 0xeb, 0x22, 0x17, 0x19, 0x4d, 0x90, 0x84, 0x74, 0x1b, 0xe9, + 0x7a, 0x75, 0xc7, 0x64, 0x4f, 0xea, 0x84, 0x5e, 0xb9, 0x24, + 0x8e, 0xa6, 0x54, 0x86, 0x56, 0xf6, 0x1b, 0xbf, 0x47, 0x90, + 0xfc, 0xbd, 0x08, 0xc6, 0xc8, 0x85, 0xc5, 0x77, 0x0b, 0x5e, + 0x5d, 0xd0, 0x13, 0x32, 0x83, 0x51, 0x1d, 0x64, 0x25, 0x95, + 0xdb, 0xaa, 0x41, 0x12, 0xf1, 0xef, 0x3b, 0xb4, 0x9e, 0x46, + 0xc1, 0xed, 0xd0, 0x8c, 0xf9, 0xbd, 0x76, 0x60, 0xa4, 0x13, + 0xe0, 0x3e, 0x27, 0xbe, 0x28, 0xfc, 0x52, 0x43, 0xe3, 0x3b, + 0x39, 0x7f, 0x24, 0x45, 0x4e, 0x51, 0x08, 0x22, 0x13, 0x6f, + 0x43, 0x09, 0x27, 0xd7, 0x18, 0x12, 0x60, 0x61, 0x29, 0xf3, + 0x75, 0x21, 0x74, 0x0e, 0x1a, 0x89, 0xd4, 0x9b, 0xdb, 0x4a, + 0x9c, 0xf5, 0xb2, 0x3c, 0x1a, 0xaf, 0x76, 0xe0, 0xf8, 0x58, + 0x12, 0x0f, 0xed, 0xe7, 0x3b, 0xf9, 0xcb, 0x0d, 0xd4, 0xee, + 0x65, 0x4f, 0x20, 0x76, 0x1a, 0x8f, 0x41, 0xda, 0xa5, 0x88, + 0x10, 0xff, 0x2e, 0xd3, 0x6f, 0x7c, 0xae, 0x3d, 0xc3, 0x36, + 0xd0, 0xf2, 0x4d, 0x1f, 0x61, 0xca, 0x80, 0xf4, 0xb3, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0xac, 0x9c, 0x8d, + 0x63, 0x5b, 0xa2, 0x04, 0xcb, 0x2b, 0x15, 0x27, 0xd0, 0x71, + 0x25, 0x4e, 0xa1, 0xcb, 0x62, 0x8e, 0xcf, 0xb4, 0xa5, 0x69, + 0x6d, 0x42, 0x85, 0xf9, 0x86, 0x7d, 0x2c, 0x31, 0x12, 0x9f, + 0x61, 0x79, 0xe9, 0x83, 0x64, 0x4a, 0x3c, 0x57, 0x52, 0x89, + 0x95, 0x27, 0xac, 0xd1, 0xd8, 0x4b, 0xc9, 0x69, 0x66, 0xdb, + 0xf5, 0xfe, 0xd3, 0x62, 0x5e, 0xa3, 0x33, 0x67, 0xdc, 0x85, + 0xa3, 0x1b, 0x50, 0x3e, 0x6f, 0xd9, 0xd7, 0x9f, 0xeb, 0x76, + 0xf1, 0x14, 0xd6, 0xf8, 0xba, 0x28, 0xa4, 0xc0, 0x1f, 0x75, + 0x1c, 0xb9, 0x78, 0x3d, 0xe1, 0x30, 0x57, 0x77, 0x0e, 0x17, + 0x88, 0xee, 0xcf, 0xdf, 0xd5, 0xeb, 0x5c, 0x55, 0x4c, 0xe0, + 0x63, 0x47, 0xde, 0xa4, 0x2e, 0x2a, 0xd4, 0x8b, 0x9a, 0x64, + 0x74, 0x7b, 0x21, 0x88, 0xdf, 0xbd, 0xf8, 0x19, 0xb2, 0x1d, + 0xf1, 0x2f, 0xa2, 0x3a, 0xcc, 0x67, 0xfe, 0x03, 0xac, 0xef, + 0x07, 0x6d, 0xa6, 0x69, 0x90, 0xde, 0x56, 0x0c, 0x09, 0x7f, + 0x52, 0x60, 0xee, 0xdb, 0x0e, 0xbd, 0x3c, 0xff, 0x91, 0x18, + 0xca, 0xda, 0x07, 0xea, 0x44, 0x77, 0x1c, 0xea, 0xff, 0xef, + 0x0f, 0x43, 0xf9, 0xcd, 0x28, 0xdb, 0xdd, 0x4f, 0xe6, 0x3a, + 0xc8, 0x9e, 0x2f, 0x83, 0x21, 0x9f, 0x24, 0x08, 0x88, 0x47, + 0xe0, 0x50, 0xf9, 0x99, 0x12, 0x39, 0x5b, 0xf1, 0x7e, 0x5b, + 0xe4, 0xac, 0xda, 0x0f, 0xff, 0x35, 0xb4, 0x66, 0x7d, 0x39, + 0x6d, 0xf5, 0xc2, 0x72, 0x93, 0xca, 0xa5, 0xa6, 0xb4, 0x28, + 0xed, 0x98, 0xe6, 0xd3, 0x9b, 0xb8, 0x5a, 0xdd, 0xf4, 0xb3, + 0x42, 0x2f, 0xbd, 0x12, 0x47, 0x53, 0x2a, 0x43, 0x2b, 0x7b, + 0xec, 0xbe, 0xc2, 0x48, 0x7e, 0xbf, 0xb3, 0x54, 0x03, 0xf7, + 0x26, 0x37, 0xc1, 0x23, 0x51, 0x15, 0xd7, 0x70, 0x13, 0x5a, + 0x80, 0xe0, 0x18, 0x89, 0x9b, 0x4c, 0x8c, 0x99, 0x1d, 0xe2, + 0xe7, 0xb3, 0x35, 0x56, 0x46, 0xf3, 0x27, 0xac, 0xb8, 0x2a, + 0xe0, 0x9a, 0x13, 0xfa, 0x81, 0xf0, 0xc9, 0xeb, 0x8a, 0x38, + 0xe8, 0x2d, 0x40, 0x70, 0xfc, 0xb6, 0x0b, 0x9b, 0x77, 0x1e, + 0x3d, 0x6a, 0xab, 0xcc, 0xfa, 0x72, 0xda, 0x29, 0x47, 0xe4, + 0x44, 0x9c, 0xeb, 0x01, 0x64, 0xe4, 0xbc, 0x9a, 0x62, 0x27, + 0x70, 0x4a, 0x32, 0x04, 0x07, 0x94, 0xe6, 0xef, 0xa2, 0x67, + 0x5b, 0xea, 0x52, 0x7e, 0xca, 0x4b, 0xbb, 0xc9, 0xcc, 0x5f, + 0xf6, 0x51, 0x8c, 0x98, 0x71, 0xa1, 0x4b, 0xd1, 0x5f, 0xd8, + 0x0b, 0x26, 0x08, 0x8d, 0xc4, 0xc1, 0xe1, 0xd9, 0xc6, 0x71, + 0x04, 0x36, 0xc9, 0xf5, 0x7e, 0xc5, 0x7d, 0x8d, 0xf7, 0x01, + 0x85, 0xd8, 0x82, 0x02, 0x63, 0xd9, 0x02, 0x1b, 0x85, 0x9b, + 0x3f, 0x83, 0xdf, 0xa7, 0x9a, 0xe1, 0xa3, 0x6c, 0x41, 0x01, + 0xbf, 0xf1, 0xaf, 0xd1, 0x60, 0x9a, 0x2e, 0x52, 0xc3, 0xad, + 0x2c, 0x5b, 0x30, 0xc2, 0x72, 0xb6, 0xf2, 0xc3, 0x95, 0x0d, + 0x91, 0xde, 0xa0, 0xed, 0xbf, 0x40, 0x75, 0xb4, 0xa9, 0x34, + 0x23, 0xab, 0x2c, 0x3b, 0x0a, 0x77, 0xd4, 0xb2, 0xc3, 0xca, + 0x25, 0x7e, 0xb7, 0xe3, 0x6a, 0x1f, 0x86, 0x05, 0x11, 0x27, + 0x4a, 0x91, 0x19, 0x39, 0x2f, 0xc7, 0xf9, 0x79, 0x1c, 0xf3, + 0xed, 0x01, 0x71, 0x25, 0x73, 0x96, 0x51, 0xd2, 0xcc, 0x75, + 0x29, 0x3f, 0x65, 0xc4, 0xbc, 0x85, 0x66, 0xce, 0x7b, 0xc9, + 0xdc, 0x28, 0xad, 0xca, 0xe5, 0x01, 0x11, 0xd1, 0x1c, 0x0a, + 0xb6, 0xba, 0x93, 0xae, 0x33, 0xb7, 0xd9, 0x23, 0xd0, 0x31, + 0x36, 0x0c, 0xcc, 0x85, 0x90, 0x78, 0x64, 0x34, 0x1b, 0xc4, + 0x97, 0x68, 0x92, 0xa2, 0xbc, 0xfe, 0xe4, 0xff, 0xd4, 0xe3, + 0xa5, 0xc9, 0xa1, 0x2f, 0x72, 0x7e, 0xbf, 0x5e, 0x3e, 0xa4, + 0x6b, 0x0e, 0x3d, 0x31, 0xa7, 0x80, 0x19, 0x29, 0xe5, 0x6a, + 0xff, 0x38, 0x2a, 0xd4, 0xd2, 0x5d, 0x33, 0x5c, 0x03, 0xc1, + 0x8c, 0x56, 0x08, 0x86, 0x39, 0x7c, 0xe0, 0xb3, 0x57, 0xf8, + 0x59, 0x1e, 0x0d, 0xb6, 0x3b, 0x70, 0x7c, 0x2c, 0x09, 0xe6, + 0x97, 0x92, 0xfc, 0x9d, 0x84, 0xe7, 0x75, 0x25, 0x07, 0xc1, + 0xef, 0xc2, 0xbf, 0xe6, 0x2c, 0x98, 0x20, 0x71, 0x96, 0x82, + 0x02, 0xe2, 0x19, 0xe1, 0x82, 0x14, 0xdc, 0x4e, 0x24, 0x99, + 0xa4, 0xa9, 0x0f, 0xc1, 0x6e, 0x50, 0x6c, 0x41, 0xb4, 0x8f, + 0x4c, 0xbc, 0x55, 0x57, 0x6e, 0x81, 0x5b, 0x53, 0x71, 0x13, + 0xcb, 0xb5, 0xb2, 0x26, 0x81, 0x55, 0xc4, 0xdf, 0x5d, 0xab, + 0x89, 0xd2, 0xda, 0x84, 0xc9, 0x31, 0xcf, 0xfa, 0x58, 0x62, + 0xe4, 0x3f, 0x90, 0xd7, 0xfb, 0x87, 0x20, 0x88, 0x4c, 0x7f, + 0xcf, 0x24, 0x9c, 0xda, 0x60, 0x48, 0xe5, 0x57, 0x89, 0x8f, + 0xab, 0x50, 0x19, 0xf3, 0x0f, 0x65, 0xf5, 0xb3, 0xb4, 0x79, + 0x2b, 0xa5, 0x0f, 0x1d, 0x87, 0xce, 0xb6, 0x17, 0xa4, 0xfc, + 0x57, 0x96, 0xb5, 0x51, 0x5b, 0xbe, 0x2f, 0xa2, 0x47, 0x24, + 0xc0, 0xe9, 0x94, 0x5e, 0xf7, 0x17, 0xa7, 0x09, 0x3e, 0x30, + 0x4a, 0x22, 0xda, 0x60, 0x9c, 0xd7, 0x22, 0x68, 0x02, 0x3f, + 0x49, 0x64, 0xb1, 0x45, 0x2e, 0xe9, 0x01, 0x63, 0xdb, 0x11, + 0x2a, 0x88, 0x5c, 0x64, 0xf7, 0x05, 0x55, 0x13, 0x6c, 0x22, + 0x2b, 0x17, 0x9a, 0x53, 0xff, 0x2e, 0xa8, 0x65, 0xb3, 0x53, + 0x5a, 0x14, 0x97, 0x4c, 0x73, 0x88, 0xac, 0x5c, 0x2d, 0x8f, + 0x7a, 0xb8, 0x5b, 0xce, 0x3f, 0x06, 0x9b, 0x1d, 0x0e, 0xda, + 0x8f, 0xd2, 0xe3, 0x7f, 0xac, 0x18, 0x12, 0xfe, 0x8f, 0x20, + 0x5a, 0x49, 0xbb, 0x6b, 0x14, 0x55, 0xce, 0x08, 0x46, 0xf7, + 0xbc, 0xe7, 0x3c, 0x2d, 0x04, 0x63, 0x64, 0xa3, 0x83, 0xda, + 0xe4, 0x2f, 0xcf, 0x68, 0xe8, 0x19, 0xa0, 0xc9, 0xef, 0x32, + 0xa6, 0x10, 0x2d, 0xc5, 0xbc, 0xd4, 0x0a, 0xcb, 0x67, 0x04, + 0x23, 0x9a, 0x5e, 0x92, 0x1e, 0xf7, 0x72, 0xfe, 0x48, 0x8a, + 0x9c, 0xa2, 0x10, 0x44, 0x26, 0xde, 0x86, 0x12, 0x4e, 0x6d, + 0x30, 0x24, 0xba, 0xfa, 0xd2, 0x2a, 0xb3, 0x97, 0xf3, 0x06, + 0x4f, 0xdf, 0xfe, 0xd5, 0xb8, 0xa8, 0xd6, 0x69, 0x30, 0xd1, + 0xf5, 0x98, 0xdb, 0xf1, 0x3a, 0x07, 0x0d, 0xa5, 0x6a, 0xac, + 0x8c, 0x25, 0x4e, 0x9b, 0x4c, 0x5a, 0x23, 0x84, 0xa1, 0x93, + 0xb7, 0xc4, 0x3f, 0xf7, 0x63, 0x78, 0xb1, 0x55, 0x1a, 0xf0, + 0x82, 0xed, 0xef, 0x37, 0xad, 0x11, 0xc2, 0x5f, 0x1f, 0xaa, + 0x87, 0x4b, 0xb7, 0xdc, 0x85, 0x96, 0x6a, 0x77, 0xd3, 0xc6, + 0x10, 0x3b, 0x0d, 0xa6, 0xc1, 0x6d, 0xb3, 0x44, 0x08, 0x9e, + 0x17, 0x88, 0x88, 0xfb, 0x15, 0x02, 0xc8, 0x0b, 0xbb, 0xf7, + 0xc4, 0x4e, 0xe0, 0x94, 0x64, 0x08, 0x0e, 0xeb, 0x3c, 0x74, + 0x59, 0xbe, 0x9d, 0x5c, 0xd5, 0x76, 0x9f, 0x1d, 0x91, 0x87, + 0xaf, 0xbd, 0xbc, 0xcd, 0x6e, 0x14, 0xb7, 0x65, 0x93, 0xe1, + 0xe9, 0x89, 0x0e, 0x05, 0x5b, 0x5d, 0xa8, 0x57, 0xf8, 0xba, + 0x0b, 0x7e, 0xe3, 0x6d, 0x35, 0xcd, 0x40, 0xd3, 0x98, 0xfe, + 0x5d, 0x48, 0xfb, 0x77, 0xc0, 0x90, 0x9e, 0x07, 0x10, 0xd8, + 0xa2, 0x52, 0x3b, 0x92, 0x37, 0x71, 0x5a, 0x04, 0x51, 0xe6, + 0x4d, 0x08, 0x68, 0xa7, 0xe1, 0x76, 0xb0, 0x56, 0x7f, 0x50, + 0x47, 0x59, 0xc7, 0xa9, 0x58, 0x1b, 0x81, 0x91, 0x67, 0xba, + 0x66, 0xb8, 0x06, 0x41, 0xdb, 0xac, 0x10, 0xcf, 0x72, 0xf8, + 0x03, 0xa5, 0xae, 0x33, 0xc5, 0xc9, 0x2f, 0xde, 0x39, 0x4f, + 0x35, 0x48, 0xb8, 0xa3, 0xb9, 0x7b, 0xfd, 0xfe, 0x5f, 0xf6, + 0x74, 0x4d, 0x1e, 0x99, 0xbf, 0x15, 0x86, 0x9d, 0x6f, 0x82, + 0x1a, 0xe6, 0xbe, 0x21, 0x49, 0x0f, 0x40, 0xff, 0x8f, 0xa2, + 0xe7, 0x3e, 0x58, 0xb5, 0xad, 0x4f, 0x98, 0x53, 0x92, 0xcd, + 0xe8, 0xa6, 0x0c, 0xa5, 0xac, 0x26, 0x46, 0xad, 0xef, 0x71, + 0x92, 0xb8, 0xfb, 0x2b, 0x23, 0x98, 0xf2, 0x56, 0xe7, 0x87, + 0xbb, 0x3f, 0x0b, 0x3d, 0x6b, 0x05, 0x89, 0x51, 0x81, 0x5e, + 0xe4, 0xfc, 0xbd, 0xbc, 0x9d, 0xbf, 0x3b, 0x30, 0x52, 0xe8, + 0x70, 0x1f, 0xf2, 0x5f, 0x14, 0x7e, 0x29, 0xc0, 0x90, 0xfc, + 0x90, 0x72, 0x8e, 0x4e, 0x44, 0x92, 0xa6, 0x15, 0x23, 0xfd, + 0xd5, 0xc2, 0x22, 0xfb, 0x29, 0x47, 0x7a, 0x38, 0x80, 0x0f, + 0x59, 0xd5, 0x1b, 0x1a, 0x7b, 0x0e, 0x95, 0x20, 0xcd, 0x3c, + 0x2d, 0x40, 0x3a, 0xc7, 0x0f, 0xad, 0xbe, 0xeb, 0x43, 0xaf, + 0xd6, 0x41, 0x0d, 0x73, 0x5f, 0xf1, 0xc5, 0xe6, 0x35, 0xda, + 0x88, 0x63, 0x08, 0xfc, 0xe7, 0x53, 0x81, 0xd7, 0xb8, 0x22, + 0x04, 0x4f, 0xea, 0x44, 0x34, 0xb2, 0x91, 0x3b, 0x58, 0x2b, + 0xde, 0x28, 0xc2, 0xcd, 0x82, 0xb5, 0x2c, 0xec, 0xa1, 0xa9, + 0x9f, 0x6f, 0x09, 0x80, 0xf2, 0x85, 0x02, 0xe9, 0x74, 0x6b, + 0x60, 0x93, 0x79, 0x45, 0x06, 0xe5, 0xb7, 0x37, 0x67, 0x54, + 0xa5, 0xed, 0x25, 0x0c, 0x9e, 0x7d, 0x3f, 0x69, 0xb3, 0x93, + 0x6f, 0xd2, 0xf8, 0xd5, 0x6f, 0x38, 0xf4, 0xc4, 0xd9, 0x45, + 0x64, 0xa4, 0x12, 0x6b, 0x7a, 0xe0, 0xa8, 0xd6, 0x4f, 0xe2, + 0x08, 0x6c, 0x51, 0x29, 0xfc, 0x49, 0xfa, 0xd9, 0x2d, 0x02, + 0xc9, 0x73, 0xc7, 0x04, 0x6b, 0x1f, 0xca, 0x9e, 0x40, 0xec, + 0x34, 0xdd, 0x82, 0x77, 0x89, 0xd3, 0x20, 0x3d, 0x5c, 0x65, + 0x83, 0x85, 0xf6, 0x6f, 0xfd, 0xc6, 0xfb, 0x24, 0x5c, 0xb0, + 0xbd, 0xdc, 0x9f, 0x7f, 0xce, 0x7b, 0x5f, 0xad, 0x5b, 0xa5, + 0x18, 0xc7, 0xea, 0xf5, 0x40, 0xba, 0x0b, 0x66, 0x0c, 0xd1, + 0xfd, 0xcc, 0xa7, 0x78, 0x34, 0x9d, 0xec, 0x03, 0x33, 0xb0, + 0x24, 0x1e, 0x19, 0x0d, 0x76, 0x31, 0x55, 0x1a, 0x1e, 0x3a, + 0xcd, 0x5f, 0xaf, 0x2e, 0x8b, 0x3b, 0xae, 0xef, 0xa9, 0xa2, + 0xb6, 0xbf, 0x5e, 0x87, 0x10, 0x4f, 0x53, 0xc9, 0x49, 0xee, + 0x16, 0xbc, 0xba, 0x63, 0x26, 0x64, 0xc5, 0xa2, 0x3a, 0xc8, + 0xc3, 0x7a, 0x79, 0xcd, 0x1a, 0xf8, 0xa3, 0x91, 0xf1, 0xff, + 0x25, 0x8f, 0x0d, 0xb2, 0x26, 0xdd, 0x78, 0xe8, 0xb2, 0xbf, + 0xf9, 0xb8, 0x69, 0xec, 0xfd, 0x3a, 0xe1, 0xcd, 0x9d, 0xb9, + 0xbb, 0x59, 0x2d, 0x53, 0x13, 0x2f, 0x84, 0x65, 0xfa, 0xb1, + 0x66, 0x64, 0x8d, 0x74, 0x42, 0xbc, 0xcd, 0xe8, 0x77, 0xf5, + 0x35, 0x71, 0x4f, 0xaf, 0xcd, 0x10, 0xaa, 0xac, 0x54, 0x9c, + 0xc6, 0x07, 0x94, 0xfb, 0xe3, 0xe4, 0xdf, 0x9c, 0x88, 0xe7, + 0x8f, 0x2a, 0x46, 0x39, 0x69, 0x47, 0x44, 0x35, 0x52, 0x8e, + 0x80, 0x3d, 0xdd, 0x87, 0x0d, 0x7c, 0xb0, 0xa9, 0x99, 0x9e, + 0xf3, 0xa6, 0xe7, 0x59, 0x13, 0x8f, + }, + { + /* 6 */ + 0xa2, 0xc8, 0x81, 0xe2, 0x3b, 0xb3, 0xc2, 0x65, 0xc5, 0x23, + 0x88, 0xa8, 0x4b, 0xa0, 0x07, 0xfc, 0x7e, 0x5e, 0xba, 0x73, + 0x1f, 0x4c, 0x94, 0x8f, 0x72, 0xc4, 0x53, 0xb4, 0x67, 0xfd, + 0xe6, 0xee, 0x65, 0xcf, 0x9b, 0x0b, 0x79, 0xd8, 0x3c, 0xc1, + 0x2a, 0xfe, 0xa1, 0x96, 0xda, 0xeb, 0x16, 0xdd, 0x09, 0xce, + 0x1f, 0x28, 0x22, 0xcd, 0xd9, 0x3a, 0x89, 0x16, 0xef, 0x1e, + 0x6b, 0xb3, 0x50, 0x11, 0xb9, 0x59, 0xa0, 0x9a, 0x5d, 0x27, + 0x6a, 0x2b, 0x9d, 0x19, 0x7a, 0x8a, 0xf6, 0xb6, 0xf7, 0xcf, + 0xaa, 0x23, 0xa2, 0x8f, 0xdc, 0xda, 0x7c, 0x18, 0xa1, 0x08, + 0x06, 0xf5, 0x92, 0xb9, 0xdd, 0x6e, 0x3c, 0x40, 0x19, 0x17, + 0x62, 0x09, 0xe3, 0x6f, 0xcd, 0x25, 0x6b, 0x9f, 0xc7, 0xa2, + 0x2e, 0x31, 0x92, 0xf7, 0x4b, 0x4f, 0x2c, 0x06, 0xc0, 0xa8, + 0x5e, 0xd9, 0x2a, 0xa5, 0xd8, 0xf6, 0x9e, 0x16, 0x39, 0xf1, + 0xd5, 0x85, 0x35, 0x78, 0xdb, 0xf7, 0x12, 0xec, 0x4d, 0x13, + 0xf8, 0xe5, 0xc9, 0xfb, 0xf0, 0xc3, 0x64, 0x5c, 0x4b, 0x24, + 0x0a, 0x7f, 0xb2, 0x94, 0x6f, 0x39, 0x9a, 0xcd, 0xb8, 0xc4, + 0xcb, 0x78, 0xc9, 0x53, 0x37, 0xd7, 0x1f, 0x06, 0xb9, 0x02, + 0xe0, 0xac, 0xc5, 0xbf, 0xa6, 0xfa, 0xfe, 0xf6, 0xcf, 0x6c, + 0x77, 0x13, 0x25, 0x53, 0xfd, 0x31, 0x64, 0x2d, 0x69, 0xae, + 0xd8, 0xda, 0xe0, 0xd6, 0x22, 0x86, 0x46, 0xf6, 0xb5, 0x85, + 0x7a, 0xc2, 0xb0, 0x83, 0xeb, 0xff, 0xcf, 0x23, 0x02, 0x4a, + 0x78, 0x8a, 0x49, 0x8b, 0xce, 0x8e, 0x19, 0x7a, 0xc2, 0x86, + 0xa7, 0x97, 0xd7, 0xc5, 0x4e, 0x61, 0x70, 0xde, 0x08, 0xf9, + 0x96, 0x42, 0xe9, 0x3e, 0xf1, 0xb9, 0xf4, 0xab, 0x7f, 0x04, + 0x4a, 0xf5, 0x80, 0x09, 0x9a, 0x2c, 0xc9, 0x9d, 0xdb, 0xca, + 0xb6, 0x76, 0x79, 0x46, 0x12, 0x4d, 0xe5, 0x67, 0xee, 0x14, + 0x11, 0x87, 0x8d, 0x1d, 0xa5, 0x0b, 0x96, 0x0f, 0xd4, 0xb8, + 0x28, 0xe9, 0x3f, 0x2f, 0x5d, 0xd8, 0xee, 0x26, 0x4a, 0xa6, + 0x39, 0x62, 0xc8, 0x5a, 0xd2, 0x9f, 0x73, 0x77, 0x70, 0x6b, + 0x11, 0x43, 0x23, 0x7b, 0xbb, 0xa3, 0x3d, 0x61, 0x58, 0xa0, + 0x94, 0x9e, 0x86, 0xf0, 0x0c, 0x7f, 0xd3, 0xba, 0x75, 0xbc, + 0xe1, 0xa2, 0x56, 0xdf, 0xc9, 0x92, 0x54, 0xf4, 0xb7, 0xdb, + 0xfa, 0x62, 0x3f, 0xbb, 0xe5, 0xc6, 0x7a, 0x8c, 0xcf, 0xc5, + 0x23, 0xe2, 0xe4, 0x43, 0xb5, 0x93, 0xc0, 0xfc, 0xae, 0xf1, + 0x5c, 0x91, 0x08, 0xb2, 0x29, 0x6e, 0xcd, 0x34, 0x09, 0x9b, + 0x21, 0x2e, 0x41, 0x71, 0xe7, 0xab, 0xf1, 0x6a, 0xde, 0x29, + 0x4b, 0xa6, 0x9b, 0xee, 0xb5, 0x62, 0x95, 0x99, 0xa1, 0xa7, + 0xc5, 0x2d, 0xb7, 0x9c, 0x6b, 0xac, 0x31, 0x64, 0x2b, 0x6d, + 0x5e, 0x9d, 0x5a, 0xba, 0x60, 0x7e, 0x57, 0x99, 0x2e, 0xa9, + 0x04, 0x59, 0xf5, 0x37, 0x87, 0x1a, 0xe5, 0xac, 0xf1, 0x17, + 0xa7, 0x79, 0x4d, 0x70, 0x6c, 0xc2, 0xfa, 0xfd, 0x1a, 0xea, + 0xae, 0x24, 0x74, 0xe7, 0xe0, 0x36, 0x82, 0xe2, 0x0d, 0x95, + 0x21, 0xd4, 0x7f, 0x52, 0x96, 0x8f, 0xf5, 0x1f, 0xa9, 0xc4, + 0xe9, 0xf1, 0x53, 0x2e, 0xd9, 0xfb, 0xb5, 0x33, 0xaf, 0x5d, + 0x9a, 0x8a, 0x86, 0xd2, 0x63, 0xc7, 0x35, 0xbb, 0xb5, 0x26, + 0x73, 0x20, 0x28, 0x9b, 0x8b, 0x89, 0xcb, 0xc6, 0xb3, 0x18, + 0xa2, 0x42, 0x40, 0x14, 0x9e, 0x88, 0x98, 0xf5, 0x59, 0xba, + 0x21, 0x0a, 0x08, 0x06, 0xe3, 0x37, 0x8c, 0x02, 0x29, 0xcd, + 0x96, 0x63, 0xbb, 0x98, 0xbe, 0xd3, 0x9f, 0x77, 0x6c, 0x2d, + 0x6d, 0x6a, 0x55, 0x1b, 0xf3, 0x5f, 0x4c, 0x2b, 0x08, 0x54, + 0x41, 0x72, 0x58, 0xcc, 0xf0, 0x44, 0x33, 0x3f, 0x53, 0x3c, + 0xa8, 0xc1, 0x1e, 0x20, 0xed, 0xea, 0x31, 0xe5, 0x90, 0xd6, + 0x87, 0xf3, 0xd4, 0xae, 0x82, 0x51, 0x17, 0xf9, 0x67, 0x85, + 0xe3, 0x81, 0x30, 0x53, 0xf2, 0x4f, 0x33, 0x84, 0x63, 0x10, + 0x7d, 0x7c, 0xc1, 0x18, 0xe3, 0xb9, 0x66, 0x49, 0xca, 0xd9, + 0x1c, 0x4c, 0x8e, 0x85, 0x13, 0x46, 0xfe, 0xc2, 0x92, 0x65, + 0x2a, 0x8b, 0xd7, 0x90, 0xb4, 0x85, 0xcd, 0xc4, 0x2e, 0xfd, + 0x31, 0x6c, 0x9c, 0xea, 0xe3, 0x5a, 0xac, 0xfd, 0x2a, 0xd2, + 0x07, 0x84, 0xed, 0x49, 0x8a, 0x86, 0x83, 0xbc, 0xb8, 0xc3, + 0x67, 0xe2, 0x43, 0x3b, 0x9f, 0x21, 0xb8, 0xe1, 0x10, 0xa7, + 0x52, 0xdc, 0x59, 0x68, 0x12, 0xf5, 0x42, 0x5c, 0x8c, 0xd7, + 0xa6, 0xa5, 0x1d, 0xe3, 0x50, 0x7e, 0xd9, 0x2a, 0xfe, 0x0b, + 0x5a, 0xa7, 0x89, 0xef, 0xc7, 0x07, 0x1a, 0xe9, 0x42, 0x6b, + 0xfe, 0xa4, 0xef, 0xdd, 0x29, 0x3e, 0x91, 0x4b, 0x11, 0x21, + 0x26, 0xf4, 0x04, 0x2a, 0xc1, 0x39, 0x2c, 0x66, 0x78, 0x22, + 0xf8, 0xfe, 0xc8, 0x1e, 0x54, 0x81, 0x29, 0xe4, 0x93, 0x5f, + 0x38, 0xaa, 0x64, 0x0d, 0xda, 0xba, 0x92, 0xa9, 0x89, 0xd7, + 0xbe, 0x1c, 0x1c, 0x6a, 0x95, 0x60, 0x78, 0x6e, 0x5e, 0x58, + 0x9e, 0x89, 0x16, 0x28, 0x25, 0xc6, 0xc0, 0x3c, 0x4d, 0x0e, + 0x34, 0x11, 0x84, 0xd6, 0x3f, 0x8b, 0x1d, 0x79, 0x52, 0x7c, + 0xe1, 0x96, 0x22, 0x42, 0x9d, 0xe7, 0xdc, 0x3a, 0xd5, 0x95, + 0x88, 0xc3, 0xfc, 0x41, 0x40, 0xf2, 0x99, 0x3f, 0x74, 0x8b, + 0xf2, 0x89, 0x1c, 0xd6, 0x02, 0xaf, 0xc4, 0xf1, 0xab, 0xee, + 0xad, 0xbf, 0x3d, 0x5a, 0x6f, 0x01, 0x21, 0x0f, 0xb0, 0x32, + 0xdf, 0xc3, 0xda, 0x70, 0xbe, 0x91, 0x1c, 0xf4, 0x50, 0xce, + 0x64, 0x8e, 0x6d, 0x24, 0xb8, 0x66, 0x9e, 0xb1, 0x82, 0xbc, + 0x4e, 0xd5, 0x2f, 0xcb, 0x03, 0xf2, 0xcc, 0x4f, 0xbc, 0xe8, + 0x6c, 0x08, 0x0a, 0x56, 0x52, 0xb3, 0x42, 0xd0, 0x5c, 0x06, + 0xc9, 0xf1, 0x10, 0x05, 0x9a, 0x1c, 0x68, 0x22, 0xcb, 0x6f, + 0x7e, 0xd5, 0x3a, 0xf2, 0xa4, 0xf8, 0x01, 0xef, 0x44, 0x84, + 0x27, 0xd1, 0x38, 0x6f, 0x04, 0x9d, 0x4b, 0x21, 0x95, 0x1f, + 0x99, 0xbd, 0x7a, 0xb4, 0xde, 0x02, 0x14, 0x81, 0xb6, 0x0d, + 0x9f, 0x07, 0xe0, 0x25, 0xfa, 0xa2, 0x98, 0x75, 0xfc, 0xdf, + 0x1a, 0xae, 0x5e, 0x74, 0x36, 0x04, 0x05, 0x2b, 0x29, 0xb8, + 0x21, 0x68, 0x2e, 0x03, 0x85, 0x99, 0x08, 0xe3, 0xe4, 0x42, + 0xd2, 0x51, 0xd4, 0x23, 0xea, 0x5a, 0x48, 0x36, 0xf7, 0x4c, + 0x66, 0x12, 0xa2, 0x6a, 0xd3, 0x86, 0xac, 0xe4, 0xdd, 0x6c, + 0x1e, 0x81, 0x15, 0x7f, 0xb1, 0x4b, 0x6d, 0x94, 0x0b, 0x8f, + 0xe1, 0xf3, 0x1e, 0xc3, 0x83, 0x52, 0xd2, 0xc2, 0x97, 0xff, + 0xd1, 0xc0, 0x59, 0x55, 0x45, 0xa0, 0x69, 0xb0, 0x48, 0xb1, + 0x0c, 0x64, 0xdd, 0x63, 0x7c, 0x21, 0x68, 0x04, 0x8e, 0x1f, + 0xa1, 0x06, 0x49, 0x9a, 0xc4, 0xc6, 0x16, 0x03, 0x60, 0x54, + 0x2f, 0x8d, 0x15, 0xb3, 0x6c, 0x7b, 0x4f, 0x0b, 0xab, 0x06, + 0x9e, 0xca, 0x19, 0x7e, 0x1b, 0x5f, 0x4c, 0x35, 0x67, 0xb6, + 0x20, 0x13, 0x57, 0xed, 0xb3, 0xf8, 0xfb, 0x7d, 0xf3, 0xc5, + 0x1a, 0xd8, 0xe0, 0x48, 0x36, 0x51, 0x88, 0x38, 0xfa, 0x98, + 0xa3, 0xed, 0xbd, 0xa7, 0xfe, 0x17, 0xa5, 0x22, 0x28, 0x1e, + 0xe9, 0xeb, 0xf9, 0x0a, 0x8d, 0x7f, 0x0b, 0x84, 0x67, 0xa2, + 0x6b, 0x46, 0x17, 0xb4, 0x90, 0x6c, 0x2d, 0x98, 0xcc, 0x24, + 0x87, 0xd4, 0x90, 0xbd, 0x33, 0xc5, 0x65, 0x8d, 0x0e, 0x26, + 0x47, 0xa3, 0xe8, 0x23, 0x7f, 0x61, 0x49, 0xd3, 0xfc, 0xbc, + 0xb7, 0xe6, 0x3e, 0x98, 0xeb, 0xdd, 0xe4, 0x4b, 0xa6, 0xab, + 0xce, 0x39, 0x0f, 0x1f, 0xc2, 0xb6, 0xd6, 0x7b, 0x15, 0x1a, + 0xc6, 0x3c, 0x30, 0x14, 0x0f, 0xb2, 0xae, 0x0c, 0xf6, 0xeb, + 0x80, 0xa8, 0x75, 0x1f, 0x68, 0x5f, 0xb1, 0xdc, 0x8f, 0xf5, + 0x37, 0x99, 0x0e, 0x53, 0x3e, 0x34, 0xe7, 0x2d, 0x96, 0x9e, + 0x58, 0x0c, 0x43, 0x93, 0xbc, 0x71, 0x54, 0x89, 0x73, 0x2f, + 0xff, 0x2c, 0x63, 0x11, 0x13, 0x56, 0xa2, 0x86, 0xad, 0x90, + 0x01, 0x70, 0x24, 0xdf, 0xf0, 0x91, 0xac, 0x51, 0x30, 0x3f, + 0xca, 0xad, 0x17, 0xb5, 0x02, 0xcd, 0x9b, 0xfa, 0xa2, 0x0d, + 0x93, 0x56, 0x99, 0xea, 0x22, 0x60, 0xf4, 0xfd, 0x53, 0xec, + 0x73, 0xb9, 0x4a, 0xd6, 0xbf, 0x31, 0x45, 0xf3, 0x39, 0xc8, + 0xf6, 0x1d, 0xec, 0x01, 0x90, 0x7a, 0x9b, 0x2e, 0x99, 0x1a, + 0xea, 0x70, 0xb0, 0xb7, 0x02, 0x48, 0xa8, 0x69, 0xda, 0x05, + 0x95, 0x51, 0xb2, 0x96, 0xb8, 0x72, 0xc4, 0x73, 0x35, 0x2e, + 0x0a, 0xab, 0x57, 0xba, 0x29, 0x2c, 0x27, 0xe6, 0xf0, 0x82, + 0xa8, 0x7e, 0xc1, 0x1d, 0xee, 0x2a, 0x58, 0xf2, 0x8e, 0x9d, + 0xde, 0x2f, 0x54, 0x68, 0x9e, 0xf0, 0xc0, 0x50, 0x3c, 0x8d, + 0xfd, 0x30, 0x5e, 0x2a, 0xc3, 0x93, 0xea, 0x3e, 0xd0, 0xbe, + 0xa1, 0x7b, 0xdd, 0x29, 0x6e, 0xf1, 0x1c, 0xa6, 0x7c, 0x68, + 0xc6, 0x22, 0x26, 0xac, 0x87, 0xcf, 0x99, 0xe3, 0x02, 0xe0, + 0x48, 0x7d, 0x23, 0xe1, 0x9b, 0xa2, 0x50, 0x41, 0x9d, 0x34, + 0x39, 0x1c, 0x06, 0x94, 0x6e, 0xcd, 0x25, 0x17, 0x76, 0xfa, + 0x68, 0xfd, 0x75, 0xda, 0xdd, 0xd1, 0x74, 0x0a, 0x83, 0x3b, + 0xe2, 0xa8, 0x7e, 0x2c, 0xab, 0xd9, 0x61, 0x3a, 0x4b, 0xd0, + 0xbc, 0x4c, 0x5f, 0x88, 0xae, 0xda, 0x36, 0xf7, 0xd7, 0x35, + 0xcb, 0xec, 0x98, 0xce, 0x6c, 0x01, 0x84, 0x23, 0x5b, 0x15, + 0xe5, 0xfb, 0xa3, 0xe8, 0x4e, 0x88, 0xb1, 0x58, 0x46, 0xcc, + 0xa6, 0x5c, 0x71, 0x35, 0xa9, 0x66, 0x9d, 0xba, 0xf7, 0xd7, + 0xcf, 0x67, 0xc6, 0x4d, 0x6a, 0xb5, 0xa4, 0x16, 0x09, 0xbf, + 0xe0, 0xed, 0x53, 0x34, 0xee, 0xad, 0x0d, 0xe1, 0x61, 0xda, + 0xbd, 0x70, 0xf5, 0x72, 0xa8, 0xce, 0x1c, 0x55, 0x32, 0xe7, + 0x6d, 0x5d, 0x49, 0xb5, 0xa5, 0x8a, 0x5f, 0x0e, 0xf8, 0x28, + 0x47, 0x31, 0xac, 0x4d, 0xb4, 0x02, 0xd6, 0xbf, 0xe1, 0x64, + 0x43, 0xd4, 0x62, 0x56, 0x9c, 0xc2, 0xe0, 0x7f, 0x10, 0x31, + 0xef, 0x84, 0x11, 0x7c, 0x21, 0xb1, 0x2b, 0x95, 0xfe, 0x08, + 0xd2, 0xa3, 0x90, 0xa1, 0x18, 0xc8, 0x79, 0xc6, 0xf8, 0x42, + 0xd0, 0x08, 0xdf, 0x3e, 0x81, 0x0c, 0xcd, 0xa6, 0x41, 0x0e, + 0xec, 0x89, 0x8e, 0x57, 0x92, 0x8c, 0x65, 0xe5, 0xef, 0xc5, + 0x1c, 0x76, 0xdc, 0x96, 0x3b, 0x91, 0x24, 0xff, 0x56, 0xea, + 0xb7, 0xe7, 0xdb, 0x1c, 0x2c, 0x5d, 0xe1, 0x12, 0x1d, 0x4f, + 0xa9, 0x25, 0xbd, 0xca, 0x39, 0x1f, 0x73, 0xb4, 0x77, 0x6b, + 0x97, 0x6c, 0x4a, 0xbf, 0x83, 0xc7, 0x31, 0xd0, 0xe4, 0x70, + 0x18, 0x15, 0x7b, 0xb2, 0x94, 0x5c, 0x1b, 0x6e, 0x63, 0x72, + 0x2e, 0x1f, 0x27, 0x47, 0x26, 0x50, 0x92, 0x1b, 0x1c, 0x09, + 0x76, 0xa3, 0x11, 0x07, 0x8e, 0x13, 0xf1, 0xe6, 0x58, 0x19, + 0x8e, 0x80, 0x6d, 0x38, 0x5f, 0xa9, 0x0e, 0x7a, 0x28, 0x67, + 0x32, 0x47, 0xfd, 0x99, 0x8b, 0xa3, 0xfb, 0x3c, 0x8c, 0x9a, + 0x09, 0x76, 0xc7, 0xe8, 0x7c, 0x93, 0x85, 0x9c, 0x81, 0x8d, + 0x49, 0x5a, 0xad, 0xfb, 0xd6, 0x9b, 0x62, 0xc8, 0x56, 0xda, + 0xbc, 0xf9, 0xb4, 0xb7, 0xb1, 0xb2, 0x83, 0xf7, 0xba, 0x4e, + 0xd4, 0x56, 0xf9, 0x32, 0xf4, 0xd7, 0x2f, 0xaf, 0x2d, 0x5d, + 0x4f, 0x44, 0x4c, 0x9b, 0xcd, 0x5d, 0xf1, 0x05, 0x04, 0x03, + 0x90, 0xfa, 0x46, 0x01, 0xf5, 0x87, 0x47, 0xaf, 0x6f, 0xf6, + 0x2a, 0x34, 0x4f, 0x78, 0x60, 0x28, 0x1e, 0xa7, 0x9f, 0x18, + 0x2f, 0x15, 0x13, 0x7a, 0x02, 0x15, 0x81, 0xfd, 0x16, 0x33, + 0x3c, 0x11, 0x7c, 0x7f, 0x64, 0x0f, 0x2a, 0xa1, 0x46, 0x8a, + 0x53, 0xb3, 0xef, 0x90, 0x28, 0x3f, 0x8d, 0x15, 0x7f, 0xe4, + 0x2d, 0xb2, 0xa5, 0x96, 0x5b, 0xc5, 0xfa, 0x96, 0x52, 0x5a, + 0x11, 0x20, 0xfe, 0xa1, 0x08, 0x8f, 0xba, 0xde, 0xef, 0x29, + 0xfb, 0x47, 0x03, 0xfe, 0x20, 0x62, 0x1d, 0xcb, 0x22, 0xf8, + 0x42, 0xa1, 0x56, 0xe9, 0x3f, 0x10, 0xed, 0x8c, 0xcd, 0x79, + 0xf6, 0xee, 0x33, 0x60, 0xc1, 0x20, 0x18, 0x52, 0x0d, 0xa1, + 0xf2, 0x7b, 0x94, 0x29, 0xc3, 0x12, 0xf7, 0x58, 0x51, 0xf9, + 0x75, 0x57, 0xaf, 0xec, 0xf2, 0x8c, 0x24, 0x9a, 0x25, 0x9b, + 0x40, 0xe5, 0x4d, 0x16, 0x85, 0xaf, 0x8c, 0x65, 0x5b, 0x3b, + 0xdd, 0x23, 0x09, 0xc7, 0xa5, 0x33, 0x35, 0xfa, 0x25, 0x49, + 0x34, 0x73, 0x03, 0x90, 0x6c, 0xa2, 0xd3, 0x70, 0x37, 0xf3, + 0xdd, 0xb3, 0x07, 0xd4, 0xe1, 0x5b, 0x31, 0xad, 0x5a, 0xda, + 0xba, 0x5f, 0x9e, 0xf7, 0x6b, 0x91, 0x38, 0xd4, 0xe9, 0xc0, + 0xf0, 0xdc, 0xbc, 0xb0, 0xff, 0xd1, 0x2c, 0x50, 0x4a, 0x4f, + 0x43, 0x78, 0x58, 0xaa, 0xbe, 0x59, 0xde, 0x75, 0xb8, 0xe9, + 0x0a, 0xe6, 0xab, 0x4a, 0xaf, 0xe3, 0xb2, 0x6f, 0x0f, 0x10, + 0x97, 0x75, 0xf9, 0x93, 0x48, 0x6b, 0xa2, 0x98, 0x6a, 0x57, + 0x41, 0xc9, 0xea, 0x9d, 0xda, 0x48, 0xb3, 0xcc, 0xff, 0xa1, + 0xc7, 0xbb, 0x9c, 0x69, 0x5e, 0x55, 0x06, 0x27, 0x5b, 0x9e, + 0x3d, 0x65, 0x25, 0x52, 0xa7, 0xad, 0x84, 0x28, 0x20, 0x18, + 0x0a, 0xdc, 0x75, 0x08, 0xa4, 0xb2, 0xe8, 0x3d, 0x01, 0xeb, + 0xa1, 0x9f, 0x0b, 0xf8, 0x1e, 0xe9, 0x3e, 0xde, 0x32, 0xe6, + 0x15, 0xb1, 0xe9, 0x18, 0x3d, 0xae, 0x64, 0x3b, 0x6c, 0xbf, + 0xf3, 0xd4, 0x5f, 0x9d, 0x80, 0x4c, 0x9f, 0x32, 0x18, 0xfe, + 0x65, 0xb7, 0xea, 0xbb, 0x01, 0x87, 0xac, 0x7d, 0x51, 0xe7, + 0xa8, 0x2b, 0xad, 0x75, 0x95, 0x0c, 0xff, 0x57, 0x32, 0xfc, + 0x36, 0xbe, 0x98, 0x6a, 0xce, 0xaf, 0x40, 0x26, 0xae, 0x19, + 0xee, 0xe3, 0x89, 0xb6, 0x7a, 0xc1, 0x9a, 0xa9, 0x35, 0x67, + 0xbb, 0x97, 0x18, 0x9c, 0xaf, 0x3d, 0x77, 0x90, 0xa5, 0x5b, + 0x3d, 0x81, 0x4d, 0xb5, 0xfb, 0xd2, 0xbc, 0xaa, 0x0c, 0x4e, + 0xb6, 0xff, 0x72, 0x21, 0x69, 0xc9, 0x6a, 0xf0, 0x75, 0x2d, + 0x24, 0x1b, 0x9a, 0x26, 0x33, 0x09, 0x51, 0x35, 0x6f, 0x6e, + 0xc0, 0xec, 0xd7, 0x3a, 0x4c, 0x32, 0x57, 0xaf, 0xed, 0x4d, + 0xa4, 0x65, 0x1b, 0x8a, 0x51, 0x64, 0xa1, 0x71, 0xfc, 0xb8, + 0x61, 0xd3, 0x83, 0xf0, 0x44, 0x54, 0xc4, 0x50, 0xe2, 0x7e, + 0x7f, 0x7b, 0x86, 0x36, 0xda, 0xe8, 0xf3, 0xc8, 0x9f, 0xf9, + 0x32, 0xf7, 0xd5, 0x57, 0x6c, 0x6d, 0xdf, 0xf9, 0x7f, 0x5e, + 0xa8, 0xd0, 0xff, 0x23, 0x43, 0xa0, 0x78, 0xd9, 0x39, 0x60, + 0xbc, 0x54, 0xd7, 0x12, 0x5c, 0x33, 0x4f, 0xb9, 0x41, 0x5e, + 0x27, 0x8b, 0xf6, 0x84, 0xe0, 0x79, 0x66, 0xc6, 0xd4, 0x7d, + 0x18, 0xfc, 0xc3, 0x96, 0xe8, 0x97, 0xd3, 0xcc, 0x55, 0x41, + 0xf5, 0x44, 0x3b, 0x80, 0x6b, 0xfa, 0x30, 0x3b, 0x45, 0xef, + 0x13, 0xed, 0x65, 0x5b, 0xaa, 0x82, 0x29, 0x88, 0x76, 0xc3, + 0x3a, 0x9e, 0x91, 0x4a, 0xb9, 0x57, 0x72, 0x3e, 0xe6, 0xab, + 0xee, 0xd6, 0xed, 0xd8, 0x94, 0xbd, 0x20, 0x2a, 0x8c, 0x77, + 0x1a, 0x67, 0xbd, 0x37, 0x53, 0xac, 0x7d, 0xb7, 0xe2, 0x64, + 0xee, 0x0d, 0x0a, 0xa1, 0x5b, 0xe7, 0xae, 0xe2, 0x70, 0xf3, + 0x7d, 0x51, 0x4c, 0xdb, 0x7e, 0x8e, 0x0d, 0x57, 0x42, 0x1e, + 0xa3, 0x64, 0x7d, 0x45, 0x77, 0xe0, 0xbf, 0xe1, 0x38, 0x2b, + 0xa0, 0x5f, 0xc8, 0xdf, 0xcc, 0x83, 0x7d, 0x4b, 0x29, 0x2d, + 0xe9, 0x10, 0x7f, 0xb1, 0x04, 0xa6, 0x5d, 0x6f, 0x96, 0xf5, + 0x7b, 0xef, 0x76, 0xe1, 0x48, 0x3d, 0xac, 0x17, 0xad, 0x0d, + 0x75, 0x38, 0x58, 0xba, 0x01, 0x24, 0x8f, 0xb8, 0xe2, 0x6a, + 0x91, 0xcc, 0xf9, 0xb7, 0x2d, 0x6d, 0x5d, 0xce, 0x4f, 0x9a, + 0xd4, 0xa9, 0x3b, 0xbb, 0xad, 0x0f, 0x7c, 0xf3, 0x15, 0x79, + 0x0b, 0x96, 0x8f, 0x95, 0x5f, 0x72, 0x1e, 0x3e, 0x7d, 0x31, + 0xfe, 0xbc, 0x93, 0x63, 0x3d, 0x46, 0x86, 0x83, 0xf0, 0x71, + 0x72, 0xc0, 0xbb, 0xa8, 0xbf, 0x87, 0x28, 0xc7, 0x86, 0x79, + 0xfb, 0x7a, 0xb6, 0x97, 0xff, 0xc3, 0xdc, 0xcc, 0x4d, 0x43, + 0xd0, 0xe9, 0xe8, 0x2b, 0x51, 0x43, 0xb7, 0x48, 0xe1, 0x38, + 0x12, 0x8e, 0x78, 0xa9, 0x56, 0xc9, 0xde, 0xdc, 0x43, 0x1b, + 0x6d, 0x74, 0x98, 0x64, 0xae, 0x9d, 0x19, 0x9a, 0x8b, 0xca, + 0x36, 0xd7, 0xca, 0x5d, 0xf5, 0x16, 0xf2, 0x73, 0x78, 0x41, + 0x54, 0x3f, 0x81, 0xef, 0x77, 0x15, 0x2c, 0x79, 0x2c, 0x55, + 0x5f, 0xcd, 0x6f, 0xdb, 0x5c, 0x95, 0x05, 0x73, 0xb4, 0x25, + 0xb6, 0x90, 0x59, 0xd6, 0x19, 0xdb, 0x59, 0xf2, 0x2f, 0x1f, + 0x66, 0xc0, 0x41, 0x40, 0x30, 0xa4, 0x1a, 0x81, 0x27, 0xf6, + 0x76, 0xb5, 0x99, 0x1e, 0xf8, 0x25, 0x2a, 0xf2, 0x16, 0xef, + 0xdd, 0xe9, 0xbe, 0xe4, 0x3c, 0x7c, 0x12, 0x5f, 0x3e, 0x50, + 0x44, 0x59, 0x71, 0x74, 0xd1, 0x2c, 0x1d, 0x3c, 0xd6, 0xa5, + 0xa0, 0x22, 0x74, 0xff, 0xe1, 0x94, 0xb1, 0xae, 0xe4, 0x7c, + 0x0f, 0x95, 0x1f, 0x6f, 0x19, 0x73, 0xeb, 0xb9, 0xd5, 0x58, + 0x24, 0xb9, 0x06, 0x32, 0x8f, 0xd0, 0x3e, 0xf1, 0x34, 0x02, + 0x47, 0xee, 0xb1, 0x03, 0x8b, 0x2c, 0x12, 0xbd, 0x03, 0x19, + 0xa6, 0x68, 0x1f, 0x99, 0x1a, 0x01, 0xc2, 0x77, 0xb9, 0xe0, + 0x07, 0xfb, 0xb4, 0x18, 0x1e, 0xfa, 0xf6, 0x16, 0xc6, 0xb3, + 0xe4, 0x0a, 0x98, 0xd0, 0x30, 0x0f, 0x59, 0x8f, 0x82, 0x1c, + 0x1b, 0xd1, 0xdf, 0xae, 0xe7, 0xdb, 0xca, 0x09, 0x1d, 0x49, + 0x38, 0xec, 0xb0, 0x97, 0xbf, 0xb2, 0x7f, 0xea, 0xb3, 0x11, + 0x14, 0x0f, 0x95, 0x94, 0x9d, 0x05, 0xa7, 0xde, 0x1f, 0x05, + 0xd1, 0xaf, 0xf4, 0x41, 0xf7, 0x91, 0x6a, 0xce, 0xb5, 0xed, + 0x30, 0xfb, 0x9d, 0x7a, 0x61, 0x5b, 0x6b, 0xdc, 0xeb, 0x0d, + 0x63, 0x1e, 0x18, 0x0a, 0xe6, 0x59, 0x57, 0x06, 0x7b, 0x94, + 0x1a, 0xb4, 0x1d, 0x3d, 0xa3, 0x30, 0xcf, 0x09, 0xb5, 0x07, + 0x93, 0x61, 0x0f, 0xbc, 0x7a, 0xb0, 0xc8, 0x17, 0x8d, 0x9c, + 0xbb, 0xf8, 0xb6, 0xcf, 0x4d, 0x45, 0x43, 0x69, 0xd0, 0x82, + 0xfb, 0xbc, 0x97, 0x46, 0x87, 0xdd, 0x7b, 0x77, 0xf8, 0x30, + 0x81, 0x10, 0x0c, 0x29, 0xe7, 0xb1, 0x79, 0xdc, 0x17, 0xee, + 0xf2, 0xc2, 0x13, 0x28, 0x49, 0xec, 0x0e, 0xe5, 0x3b, 0xb0, + 0xe9, 0xe2, 0x47, 0xe8, 0xa9, 0x4c, 0xe6, 0x40, 0x50, 0xf5, + 0xd5, 0xd1, 0x55, 0x4f, 0xa5, 0x30, 0x87, 0x84, 0x80, 0x28, + 0x91, 0x98, 0x0f, 0x80, 0xa0, 0x29, 0x69, 0x61, 0xaa, 0x9e, + 0x89, 0x60, 0xcd, 0xcb, 0xc3, 0x50, 0x9f, 0xad, 0xa4, 0xb0, + 0x9c, 0x1e, 0x46, 0x4d, 0xe5, 0x3b, 0x82, 0x74, 0x3e, 0xa8, + 0xa3, 0x4e, 0x1b, 0x91, 0x21, 0x78, 0x66, 0x94, 0xa8, 0x4e, + 0x58, 0x3a, 0xf2, 0x22, 0xbd, 0x16, 0xf0, 0x33, 0xbb, 0x13, + 0xd8, 0x10, 0x14, 0xac, 0xa4, 0xa5, 0x84, 0x63, 0xb8, 0x0c, + 0x51, 0x21, 0x20, 0x0a, 0xd1, 0xcc, 0xd4, 0x6e, 0x94, 0xe7, + 0xd0, 0x0f, 0x0c, 0x05, 0x73, 0xcd, 0xca, 0x03, 0xdc, 0x4a, + 0x7a, 0xca, 0x4a, 0xa4, 0x8d, 0x99, 0xcb, 0x50, 0x40, 0x30, + 0x14, 0x7b, 0xea, 0x10, 0x8b, 0xa7, 0xb4, 0x03, 0x4f, 0x65, + 0xed, 0x3f, 0xec, 0xce, 0x26, 0xfb, 0xd2, 0x5b, 0x10, 0xe8, + 0xca, 0x97, 0x5f, 0x51, 0x0a, 0x41, 0xc0, 0x8f, 0x4e, 0xff, + 0xcc, 0x55, 0x4f, 0x40, 0x37, 0x33, 0x82, 0x60, 0x71, 0x4e, + 0x2d, 0x06, 0xe6, 0xdf, 0xdc, 0xe4, 0xd0, 0x5c, 0x39, 0xe3, + 0x26, 0x34, 0x0c, 0x73, 0x0e, 0x35, 0xab, 0x30, 0x3c, 0x37, + 0x2f, 0x2c, 0x4f, 0xa5, 0x0b, 0x14, 0xf3, 0x63, 0x60, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x80, 0x32, 0x2e, + 0xc4, 0x12, 0x05, 0xde, 0x59, 0x4a, 0xd6, 0xfd, 0x4d, 0x87, + 0x5c, 0x62, 0x24, 0xbe, 0x7c, 0xa0, 0x88, 0xb2, 0xe2, 0xe8, + 0x61, 0x58, 0x3a, 0x78, 0x6f, 0x89, 0x83, 0x44, 0x40, 0x54, + 0xdb, 0xee, 0x34, 0xce, 0xb9, 0x6e, 0xa6, 0x9b, 0xfa, 0xad, + 0x07, 0xc8, 0x1f, 0x1a, 0x86, 0x76, 0xfd, 0x42, 0xb3, 0x01, + 0x20, 0x8d, 0xa4, 0x7b, 0xb2, 0xd0, 0x24, 0x29, 0x84, 0xb8, + 0x52, 0x0b, 0xe5, 0xbe, 0x70, 0x97, 0xc8, 0x1a, 0x77, 0xb7, + 0xe7, 0x91, 0xd1, 0x6d, 0xbf, 0x38, 0xf3, 0xac, 0x20, 0x93, + 0xc7, 0x0b, 0xa3, 0xb6, 0x46, 0xd3, 0xcc, 0xfc, 0x8f, 0xf0, + 0xe5, 0x82, 0x11, 0x30, 0x7a, 0x9f, 0xc8, 0x76, 0xd8, 0xbd, + 0x25, 0x6b, 0xbe, 0xf9, 0xc3, 0x98, 0xfd, 0x64, 0x28, 0xc1, + 0xaf, 0x1a, 0xfd, 0x0e, 0x03, 0x4a, 0x37, 0x87, 0xf3, 0xea, + 0x3b, 0x7d, 0x34, 0x9f, 0x5c, 0x3e, 0x4e, 0x8e, 0x4c, 0xa0, + 0xe7, 0x36, 0x38, 0x12, 0xec, 0x85, 0x22, 0x0e, 0xdf, 0x26, + 0x98, 0x56, 0x10, 0xa8, 0x82, 0xe4, 0xb0, 0x5b, 0x23, 0x88, + 0x66, 0x7e, 0xa6, 0x78, 0x93, 0x41, 0xc1, 0xd9, 0x92, 0xb4, + 0x99, 0x35, 0x6f, 0xf5, 0xc4, 0x53, 0xac, 0x77, 0xbb, 0x31, + 0xab, 0xad, 0xd6, 0x37, 0x60, 0x76, 0x8a, 0x1d, 0x26, 0x19, + 0xca, 0xb6, 0x97, 0xc7, 0x52, 0xd3, 0xec, 0x45, 0x03, 0x6f, + 0x44, 0xcf, 0x8c, 0x2f, 0xa9, 0xc9, 0xf4, 0x47, 0xa3, 0xc5, + 0x15, 0x3d, 0x5d, 0x46, 0x08, 0xeb, 0x23, 0x6d, 0xe7, 0x69, + 0xbe, 0x7d, 0x64, 0x2b, 0x8e, 0x5d, 0xd9, 0x19, 0xda, 0x92, + 0xae, 0xb7, 0x52, 0x58, 0x4e, 0x0f, 0x23, 0xc7, 0x93, 0xfc, + 0x41, 0x3a, 0x1f, 0x54, 0xb0, 0x27, 0x64, 0xea, 0xa7, 0x4e, + 0xbc, 0x7c, 0x5b, 0x86, 0xc7, 0xc3, 0xc0, 0xd5, 0x68, 0x41, + 0x9c, 0x5e, 0x2d, 0x70, 0x63, 0x88, 0xaa, 0x7f, 0x3b, 0xd2, + 0xe8, 0x4e, 0xd5, 0x66, 0x04, 0x3a, 0xd3, 0x55, 0x32, 0x75, + 0xb2, 0x27, 0x5e, 0x3e, 0xcc, 0x43, 0x82, 0x80, 0x60, 0x8b, + 0x34, 0xc1, 0x4e, 0x2f, 0x06, 0xde, 0x88, 0x5d, 0xdb, 0x5e, + 0x91, 0x51, 0x2b, 0x8e, 0x85, 0x49, 0x2a, 0x7a, 0xba, 0x8c, + 0x34, 0xab, 0x3a, 0x7a, 0x85, 0x60, 0x5d, 0x12, 0xa9, 0x0e, + 0xe5, 0xc2, 0x1e, 0xbb, 0xf4, 0xa3, 0x5d, 0x1b, 0x72, 0xcb, + 0x89, 0x04, 0x80, 0x71, 0xd5, 0x2f, 0x8d, 0xc6, 0x90, 0xa4, + 0x55, 0xa5, 0x84, 0x3c, 0x85, 0xc8, 0xfa, 0x8a, 0xee, 0x03, + 0xbd, 0x01, 0x70, 0x56, 0x83, 0xbe, 0x53, 0x7d, 0x31, 0x1a, + 0xf6, 0xe8, 0xd2, 0x11, 0x65, 0x8a, 0x76, 0xc7, 0xc3, 0x4e, + 0x21, 0xfc, 0x13, 0x69, 0xf9, 0x0d, 0x7b, 0x74, 0x69, 0xe9, + 0xd3, 0x45, 0x3b, 0x82, 0x80, 0x27, 0xf1, 0x7e, 0xe8, 0xd5, + 0x93, 0xd2, 0x77, 0x0a, 0xe9, 0xa2, 0xa7, 0xef, 0xb3, 0xe4, + 0x4b, 0xe6, 0x6a, 0x5c, 0x14, 0x95, 0x87, 0x53, 0xc1, 0x07, + 0x76, 0xa5, 0x47, 0xca, 0x49, 0x46, 0xd3, 0x93, 0x96, 0x83, + 0x0e, 0x3b, 0x9b, 0x39, 0x54, 0x67, 0x0e, 0xcb, 0x19, 0x92, + 0xd7, 0xcf, 0xc5, 0xbb, 0xb3, 0x45, 0xce, 0x07, 0x0d, 0x5a, + 0xef, 0xff, 0xb0, 0x18, 0x86, 0xe5, 0xbb, 0xe2, 0xa8, 0xd1, + 0xe6, 0x5e, 0x3d, 0x58, 0xcf, 0xec, 0x39, 0x84, 0xa5, 0x02, + 0x40, 0xd9, 0x8b, 0xf6, 0xa7, 0x63, 0x48, 0x52, 0xcb, 0xb3, + 0x6a, 0xdf, 0x0c, 0x7e, 0x80, 0x4b, 0x74, 0xaa, 0x88, 0x66, + 0xcb, 0xc1, 0x9b, 0x22, 0xfc, 0x40, 0xbd, 0xcd, 0x50, 0x4d, + 0xcf, 0xf2, 0x35, 0xf4, 0xaf, 0xed, 0x3d, 0x45, 0x7b, 0x5b, + 0x9a, 0x86, 0x33, 0x50, 0x8e, 0x62, 0x9b, 0x9a, 0xab, 0x04, + 0x6f, 0xbd, 0x01, 0xc8, 0x86, 0x6b, 0xc4, 0xac, 0xdb, 0x6d, + 0x8f, 0x89, 0x3a, 0x05, 0xa0, 0xfc, 0x71, 0x54, 0x3f, 0x16, + 0xb4, 0x8d, 0xd1, 0x1d, 0xeb, 0x52, 0x45, 0x24, 0x2d, 0xb0, + 0xa2, 0x31, 0xea, 0xae, 0x9d, 0x1b, 0x27, 0xdb, 0x48, 0xf7, + 0xce, 0xc9, 0x05, 0xc1, 0x60, 0xa6, 0x27, 0x9e, 0x66, 0xcb, + 0xc6, 0x20, 0xfa, 0xf8, 0x41, 0x30, 0x55, 0xf0, 0x51, 0xa6, + 0x6e, 0x6d, 0x3e, 0x0c, 0xb1, 0x04, 0x03, 0x9b, 0x49, 0xbd, + 0x8f, 0x37, 0x16, 0xcb, 0xce, 0x87, 0xd6, 0x8c, 0x2e, 0xab, + 0xe3, 0xd8, 0x5a, 0xf3, 0x5b, 0x48, 0xcd, 0x6b, 0xc5, 0x4d, + 0x62, 0x63, 0x0b, 0xe0, 0x30, 0x2a, 0xf6, 0xa7, 0xeb, 0xb8, + 0x36, 0xdc, 0xc6, 0xe4, 0x48, 0xbf, 0xf8, 0x83, 0xd3, 0xa7, + 0x07, 0x13, 0xc2, 0xb0, 0x74, 0xf0, 0xde, 0xd1, 0xc5, 0x88, + 0x2b, 0xae, 0xeb, 0xd5, 0x71, 0x21, 0xaa, 0x83, 0xc3, 0xc0, + 0x50, 0x2f, 0x2e, 0x40, 0x69, 0xd9, 0x10, 0x15, 0x46, 0xda, + 0x0d, 0xd2, 0xbf, 0xfa, 0xc8, 0x56, 0xdf, 0xba, 0x71, 0x32, + 0x77, 0xe7, 0xba, 0x36, 0xe4, 0x55, 0xd1, 0x08, 0xc3, 0xe2, + 0x69, 0x5e, 0xd9, 0x4f, 0xe3, 0x8b, 0xaa, 0x89, 0x79, 0xa5, + 0x0e, 0x6b, 0x01, 0xb6, 0x62, 0x99, 0xb4, 0x77, 0xb7, 0xbe, + 0xff, 0x2d, 0xd6, 0xe1, 0xb2, 0xdd, 0xc7, 0x38, 0x36, 0x61, + 0x7d, 0x9f, 0x0d, 0x75, 0x57, 0x12, 0x3a, 0x92, 0x70, 0x1b, + 0x01, 0x25, 0x3c, 0x45, 0xc5, 0xa4, 0x67, 0x47, 0xed, 0x3d, + 0x61, 0x43, 0xb2, 0xaa, 0x8a, 0x83, 0x04, 0x94, 0xf0, 0xd7, + 0x92, 0xd5, 0x5f, 0xdf, 0x32, 0xf4, 0x47, 0xcf, 0x8d, 0xed, + 0x6d, 0x49, 0xb8, 0x7c, 0x9c, 0xdf, 0x98, 0x83, 0x0d, 0x6c, + 0x70, 0x24, 0x1b, 0xc9, 0x44, 0x1c, 0x7d, 0x4c, 0xc9, 0x32, + 0xb1, 0xd9, 0x7e, 0x5c, 0xd1, 0x88, 0xa0, 0x78, 0x22, 0x2a, + 0x62, 0x28, 0x71, 0x3f, 0xec, 0xa9, 0xf1, 0x3c, 0x33, 0x4a, + 0x54, 0x27, 0x2c, 0x1d, 0x79, 0x11, 0xbf, 0x0b, 0x78, 0xf8, + 0x85, 0x19, 0xb9, 0x8d, 0x3f, 0x2e, 0x89, 0x44, 0x50, 0x3c, + 0x11, 0x15, 0x31, 0x14, 0xd9, 0xfe, 0xf4, 0x57, 0x94, 0x8b, + 0xd9, 0xf1, 0x55, 0xa0, 0x80, 0x60, 0x28, 0xf6, 0x17, 0x20, + 0xd5, 0x8d, 0x44, 0xc0, 0x2b, 0x39, 0xa6, 0x1b, 0xe6, 0xb1, + 0x94, 0x6f, 0xbd, 0x62, 0x8a, 0x25, 0x72, 0x53, 0x5a, 0xe0, + 0xc6, 0xd3, 0x97, 0xfe, 0x76, 0x67, 0x13, 0x9c, 0x69, 0xcc, + 0x08, 0x74, 0x65, 0xaa, 0x2f, 0x3a, 0x1b, 0x02, 0xe3, 0xf4, + 0xf5, 0x5c, 0xf1, 0x34, 0x17, 0xe0, 0xa3, 0xad, 0x04, 0x90, + 0x05, 0xb1, 0xcc, 0x92, 0x57, 0x71, 0x38, 0x98, 0xdf, 0xc9, + 0x26, 0x8c, 0x3f, 0x47, 0xe7, 0xca, 0xd9, 0x27, 0xf7, 0x03, + 0x73, 0x8e, 0x6e, 0x72, 0x68, 0x2e, 0xfd, 0x90, 0x13, 0x1a, + 0x06, 0xd8, 0x68, 0x95, 0x74, 0xf4, 0xc9, 0xc0, 0xba, 0x24, + 0x91, 0x1c, 0x09, 0x47, 0x3c, 0xb5, 0x2b, 0x85, 0xad, 0xd8, + 0x16, 0x97, 0xc2, 0x20, 0x8a, 0x0e, 0x67, 0xbb, 0xe2, 0xff, + 0x0a, 0x69, 0xed, 0x61, 0x35, 0x8e, 0x06, 0x3f, 0x40, 0xc4, + 0x3a, 0x55, 0x44, 0x33, 0x84, 0x81, 0xac, 0x11, 0x7e, 0x20, + 0x56, 0x9f, 0x15, 0x69, 0xe2, 0x42, 0x97, 0xc5, 0x45, 0x43, + 0xa0, 0x5e, 0x5c, 0x80, 0xd2, 0x71, 0xc4, 0x68, 0x5e, 0x26, + 0xce, 0x44, 0x57, 0x6d, 0x1b, 0x9a, 0x8a, 0xfb, 0x84, 0x76, + 0x4c, 0x67, 0xaf, 0x92, 0x6e, 0x1d, 0x8b, 0xab, 0x44, 0x80, + 0x7e, 0xc1, 0x20, 0x79, 0xad, 0xfe, 0x3a, 0xa4, 0x15, 0xa4, + 0x8a, 0x48, 0x5a, 0xa3, 0x87, 0x62, 0x17, 0x9f, 0xf9, 0x36, + 0x4e, 0x75, 0x90, 0x2d, 0x7c, 0x14, 0xc2, 0xf9, 0x56, 0xc7, + 0x5a, 0x01, 0x6b, 0xbe, 0x91, 0x32, 0xc0, 0x6a, 0x31, 0x2b, + 0x6e, 0x4b, 0xfc, 0xa9, 0x12, 0x9e, 0x2b, 0x75, 0xba, 0x92, + 0x8c, 0x0e, 0x16, 0xcf, 0x91, 0x09, 0xd8, 0x02, 0xcb, 0x46, + 0xb6, 0x2a, 0x09, 0x35, 0x85, 0x13, 0x9c, 0xd3, 0xa1, 0xb0, + 0x8c, 0x5b, 0xf7, 0x38, 0xd0, 0x44, 0x55, 0xde, 0xfc, 0x69, + 0x74, 0x27, 0x8b, 0x33, 0x02, 0x1d, 0x88, 0xcb, 0x66, 0xa0, + 0xdf, 0xc4, 0xf5, 0xf7, 0x95, 0x08, 0xde, 0xb9, 0x02, 0x53, + 0xcf, 0xd6, 0x4b, 0x9b, 0x89, 0x66, 0x6a, 0x37, 0x4a, 0x92, + 0x68, 0xe6, 0x06, 0xe3, 0xd8, 0x87, 0x65, 0xe0, 0x6e, 0x25, + 0x45, 0xe5, 0x17, 0x7c, 0x63, 0xbf, 0x81, 0xf6, 0x79, 0x52, + 0xdc, 0x21, 0x38, 0x8f, 0xf8, 0xd0, 0xef, 0xc6, 0xb5, 0xf3, + 0xbf, 0x65, 0xfd, 0xee, 0xd8, 0x5a, 0xda, 0xd4, 0xaa, 0x36, + 0x25, 0xbe, 0x37, 0xc4, 0x7e, 0xb5, 0x09, 0x4f, 0xf4, 0xdb, + 0x5d, 0x49, 0x46, 0x07, 0x0b, 0x86, 0xa9, 0xe5, 0x8d, 0xf2, + 0x9a, 0xe0, 0xd8, 0x47, 0x37, 0x39, 0x34, 0x17, 0x9f, 0x48, + 0xe8, 0x0d, 0x03, 0x6c, 0xb6, 0x49, 0x37, 0xef, 0xa4, 0xb4, + 0x22, 0x40, 0x3f, 0x81, 0x10, 0xdd, 0xb7, 0x7f, 0x1d, 0x52, + 0xff, 0xd3, 0xf3, 0x29, 0xb2, 0xb7, 0x42, 0x14, 0x10, 0x0c, + 0x05, 0x6e, 0xdb, 0x04, 0x52, 0x59, 0x88, 0x43, 0x56, 0x72, + 0x8f, 0x36, 0x0f, 0xa1, 0xeb, 0xde, 0xb9, 0xc4, 0xd7, 0x4a, + 0xe4, 0xa6, 0xea, 0x77, 0x79, 0x61, 0xe8, 0x14, 0xc5, 0x76, + 0x07, 0x93, 0xfc, 0x58, 0x95, 0x71, 0xc2, 0x74, 0x62, 0x34, + 0x2f, 0x13, 0x67, 0x22, 0xca, 0xd7, 0xec, 0x4d, 0x45, 0x9c, + 0x42, 0x3b, 0x26, 0xd2, 0xe2, 0x9c, 0x5a, 0x0c, 0x0f, 0x7d, + 0x7b, 0x0b, 0x63, 0xb8, 0x72, 0x05, 0x4c, 0x68, 0x18, 0xe6, + 0x3e, 0x0a, 0x61, 0x9d, 0x2b, 0x82, 0x2d, 0xe1, 0xd4, 0x5f, + 0xa9, 0x19, 0x60, 0x35, 0xf9, 0xf4, 0x54, 0xd5, 0x6d, 0xe3, + 0xab, 0xc9, 0x59, 0x4b, 0x5c, 0x39, 0x62, 0xd8, 0xfb, 0x17, + 0x05, 0xb4, 0xbe, 0xa2, 0x14, 0x82, 0x43, 0xdd, 0x9c, 0x3d, + 0x5b, 0xaa, 0x9e, 0x80, 0x6e, 0x66, 0xc7, 0xc0, 0xb7, 0x6c, + 0x0b, 0xaa, 0x61, 0x10, 0x45, 0x07, 0xd2, 0xbc, 0x71, 0x9e, + 0x05, 0xd5, 0x97, 0xd1, 0x36, 0xe1, 0x42, 0xf0, 0xcc, 0xeb, + 0x93, 0x9c, 0xb0, 0x74, 0x27, 0x44, 0xb9, 0x2c, 0x23, 0x66, + 0xe6, 0x08, 0xaa, 0xdb, 0x9d, 0xa8, 0x24, 0xd4, 0x51, 0x4c, + 0x35, 0xca, 0xc1, 0x85, 0x75, 0xaf, 0x99, 0x73, 0x2c, 0xed, + 0x47, 0x40, 0xd7, 0x1c, 0xce, 0xb5, 0x07, 0x3d, 0x14, 0xd2, + 0x19, 0xc2, 0xa0, 0x82, 0xf9, 0x68, 0x72, 0x38, 0x0c, 0xeb, + 0xdc, 0x59, 0x4a, 0x2e, 0xec, 0x37, 0xd0, 0x39, 0x23, 0x45, + 0xc8, 0xb8, 0x96, 0x48, 0x14, 0xfe, 0xa7, 0xeb, 0xde, 0x72, + 0xf7, 0x59, 0xb3, 0x4b, 0x8a, 0x09, 0x2e, 0xf8, 0xc6, 0xbd, + 0xc1, 0x2f, 0xf2, 0xa4, 0x7b, 0x42, 0x70, 0xdd, 0x33, 0x63, + 0x73, 0x04, 0x55, 0x8c, 0xaf, 0x54, 0x12, 0x6a, 0xc9, 0x26, + 0xfb, 0x65, 0x81, 0xa3, 0xdb, 0xb6, + }, + { + /* 7 */ + 0x5e, 0x59, 0x1d, 0x8d, 0x98, 0xfb, 0x33, 0x54, 0x7c, 0xd4, + 0xa4, 0x1b, 0xb3, 0x82, 0x0e, 0xb2, 0x90, 0x76, 0xbe, 0x36, + 0xc1, 0x08, 0x56, 0x5a, 0xf4, 0x40, 0x38, 0xf8, 0x4c, 0x99, + 0x0f, 0xec, 0xb8, 0xae, 0x1f, 0x39, 0x5b, 0xcb, 0x04, 0x4b, + 0x01, 0x97, 0x34, 0x4e, 0xd8, 0x52, 0x2c, 0x9f, 0x18, 0x48, + 0xde, 0x05, 0x76, 0x41, 0x8f, 0x0f, 0x53, 0x4d, 0x04, 0xd3, + 0xcd, 0xf8, 0xa0, 0x90, 0x76, 0x81, 0xbc, 0x82, 0x02, 0x38, + 0x61, 0x45, 0x89, 0x03, 0xa8, 0xad, 0x27, 0x49, 0x2d, 0xc1, + 0xc4, 0x19, 0x1a, 0xc8, 0x9e, 0xb3, 0x90, 0x9b, 0x24, 0xd1, + 0x9f, 0x2f, 0xda, 0x59, 0x79, 0x32, 0x0d, 0x23, 0xf7, 0xdb, + 0x11, 0x1f, 0x5f, 0xae, 0x67, 0xf8, 0x5d, 0x96, 0x09, 0xc8, + 0x5c, 0x46, 0x84, 0x1a, 0x0f, 0xd0, 0x8c, 0x88, 0x7f, 0xb3, + 0x6f, 0xca, 0x3e, 0xa3, 0x06, 0x1d, 0xff, 0x34, 0xc2, 0x0b, + 0xcc, 0x58, 0x62, 0x32, 0xc3, 0xe8, 0x40, 0x53, 0x9e, 0x6b, + 0x78, 0x67, 0x51, 0x16, 0x34, 0x8c, 0x5a, 0xea, 0x44, 0x7c, + 0xbf, 0xfd, 0x5f, 0x66, 0xb7, 0x1d, 0x24, 0xa6, 0xb3, 0xdb, + 0x31, 0x97, 0xe7, 0x32, 0xc6, 0x5c, 0x24, 0x56, 0x09, 0xa5, + 0x57, 0x7b, 0xd7, 0x87, 0x8f, 0xed, 0x24, 0xfc, 0xce, 0xec, + 0xa1, 0x02, 0xf4, 0xf7, 0x3d, 0x10, 0x0e, 0x3e, 0x13, 0xb7, + 0x73, 0x3b, 0xc3, 0x0c, 0x54, 0x60, 0x48, 0xec, 0x3a, 0xa0, + 0xef, 0x6c, 0xc1, 0x75, 0xf6, 0xd3, 0x5d, 0x18, 0xc7, 0x10, + 0x71, 0x80, 0xe0, 0x12, 0x58, 0x43, 0x16, 0x90, 0x7e, 0x0d, + 0x8b, 0x46, 0x6d, 0x20, 0x4a, 0x35, 0xac, 0x6b, 0xd5, 0x7b, + 0x1a, 0xbd, 0xe7, 0x5e, 0xa2, 0x40, 0xf9, 0x06, 0xfe, 0x6a, + 0x07, 0x15, 0x4e, 0xa8, 0xd6, 0x5f, 0xaa, 0x3b, 0xcb, 0xbd, + 0x5e, 0x5a, 0x2c, 0x8a, 0x24, 0x2a, 0x0c, 0x24, 0x6f, 0xe3, + 0x3b, 0xc1, 0xa6, 0xe6, 0xc8, 0xc7, 0x02, 0x88, 0x87, 0x7c, + 0x50, 0x48, 0x48, 0x3b, 0x5f, 0x1b, 0x81, 0x04, 0x2b, 0x2d, + 0x7a, 0x20, 0x1c, 0x7c, 0x26, 0xad, 0xe6, 0x76, 0x80, 0x06, + 0x2a, 0x30, 0x24, 0x76, 0x1d, 0x50, 0x96, 0x36, 0x81, 0xdb, + 0x7b, 0x88, 0xcf, 0x0c, 0xd7, 0x60, 0xe5, 0x86, 0x05, 0x6c, + 0x13, 0x49, 0x74, 0xe6, 0xc7, 0x2e, 0xbc, 0x57, 0xad, 0xc0, + 0x69, 0xdc, 0x2c, 0x2f, 0xa2, 0x26, 0x44, 0x71, 0x11, 0xf3, + 0xf2, 0x24, 0xc6, 0x3b, 0xa9, 0x7b, 0xee, 0xcf, 0x48, 0xb7, + 0x50, 0x0f, 0xf3, 0x1a, 0x4c, 0x78, 0x2d, 0xa5, 0x91, 0x39, + 0x42, 0x5d, 0xd8, 0x4d, 0xe1, 0x2d, 0x40, 0x0c, 0x7d, 0x77, + 0x8e, 0x60, 0x24, 0x84, 0x6a, 0x34, 0xe9, 0x9a, 0x1b, 0x41, + 0xb5, 0x4d, 0x08, 0xe0, 0x47, 0xd7, 0x61, 0x0c, 0xe5, 0xf1, + 0x9c, 0xe7, 0xb4, 0x82, 0x77, 0x86, 0x24, 0xba, 0x28, 0xe6, + 0x98, 0x0d, 0x26, 0x3c, 0xf7, 0xb3, 0xa9, 0xfd, 0x21, 0xcf, + 0x91, 0x71, 0x26, 0x0e, 0xeb, 0xd6, 0xaf, 0x12, 0x5b, 0x7f, + 0x67, 0xe6, 0xc2, 0x2d, 0x03, 0xe2, 0x73, 0x9a, 0x01, 0x5a, + 0x80, 0x18, 0xfa, 0xee, 0xdf, 0xc0, 0x48, 0xcb, 0xd4, 0x68, + 0x11, 0xf7, 0xe8, 0xdd, 0x9e, 0x27, 0xac, 0x8e, 0xa0, 0x69, + 0x28, 0xfa, 0x2c, 0xe1, 0x33, 0x07, 0x6a, 0x79, 0xa1, 0xe1, + 0x59, 0x04, 0x07, 0x54, 0x72, 0x0c, 0xfd, 0xe5, 0x6f, 0x83, + 0x9b, 0x1e, 0x80, 0x01, 0x53, 0x7a, 0xea, 0x56, 0x89, 0xe4, + 0x6c, 0xfa, 0x1b, 0x2c, 0xf9, 0x8d, 0xba, 0x4a, 0x52, 0xf4, + 0xc9, 0x3a, 0xed, 0x13, 0x8f, 0xac, 0xcf, 0x35, 0x43, 0x29, + 0xc2, 0xb9, 0xd3, 0x91, 0x25, 0x74, 0x8d, 0x25, 0xdd, 0xeb, + 0x35, 0x69, 0x42, 0xfe, 0xf1, 0xce, 0xdc, 0x4d, 0x72, 0x40, + 0x93, 0x4a, 0xe7, 0xf0, 0x9a, 0x8c, 0xe9, 0xee, 0xce, 0x57, + 0xd2, 0x7c, 0xcf, 0x4b, 0xe5, 0x64, 0x2e, 0x23, 0x7f, 0xbe, + 0x6e, 0xb9, 0xbb, 0xd9, 0x5c, 0x08, 0x17, 0x07, 0x4a, 0x43, + 0x53, 0x14, 0x41, 0xbf, 0x86, 0x14, 0xfc, 0xa0, 0xd8, 0xf7, + 0x4e, 0x23, 0xf2, 0xb4, 0x80, 0x9f, 0xd9, 0xb6, 0xe7, 0x28, + 0x70, 0x93, 0x6a, 0x12, 0xfe, 0xb9, 0x32, 0x36, 0xed, 0x81, + 0xa9, 0xe9, 0x85, 0x77, 0x05, 0xe5, 0x4e, 0x29, 0x89, 0x8b, + 0x7d, 0x85, 0x78, 0x5e, 0x1e, 0xa2, 0x1d, 0x38, 0x84, 0x93, + 0xce, 0x52, 0x1f, 0x5d, 0x90, 0xad, 0xa0, 0x1e, 0x25, 0x34, + 0x98, 0xf0, 0x5a, 0x89, 0xe1, 0x72, 0x84, 0xba, 0x63, 0xea, + 0x95, 0x5c, 0x65, 0x66, 0xb1, 0xe4, 0xbd, 0xb6, 0xf1, 0xe8, + 0xe3, 0x79, 0xd1, 0x17, 0xe6, 0xf7, 0x02, 0xb4, 0xc3, 0x30, + 0x37, 0x1f, 0x7d, 0x43, 0x90, 0x55, 0x6b, 0xd0, 0x22, 0x2d, + 0xa7, 0xf3, 0x8f, 0x94, 0xfb, 0xd5, 0x21, 0x7f, 0x99, 0x67, + 0x6e, 0xc7, 0x39, 0x20, 0xa8, 0x25, 0x35, 0x8b, 0xc2, 0xd2, + 0x6e, 0xa2, 0x46, 0xb5, 0xf0, 0x59, 0xe8, 0x03, 0xaa, 0x12, + 0xbf, 0xd5, 0x20, 0xe0, 0xeb, 0x0c, 0x09, 0xfc, 0x96, 0x14, + 0xc4, 0xec, 0xb1, 0x46, 0x6e, 0x22, 0x43, 0x03, 0x0f, 0x2d, + 0x04, 0xab, 0x45, 0x60, 0x6e, 0x3e, 0xfa, 0x86, 0xe3, 0xaa, + 0xd6, 0x63, 0x44, 0x5a, 0x16, 0x62, 0x42, 0x96, 0x19, 0xff, + 0x18, 0x79, 0x06, 0xf4, 0xb8, 0x67, 0x95, 0x2f, 0xe8, 0xc4, + 0xf3, 0x9c, 0x2b, 0x6a, 0xa4, 0x6e, 0xe7, 0xbe, 0x49, 0xf6, + 0xc9, 0x10, 0xaf, 0xe0, 0xde, 0xfb, 0xaf, 0xcb, 0xc5, 0x97, + 0x68, 0xea, 0xe5, 0x7a, 0xa8, 0x5c, 0xd3, 0x37, 0xc3, 0xc9, + 0xc8, 0x55, 0x22, 0xee, 0x18, 0x7c, 0x5d, 0x83, 0xa7, 0x84, + 0x59, 0x92, 0x0f, 0x7a, 0xb1, 0x89, 0x5b, 0x1f, 0xb9, 0xa9, + 0x87, 0x01, 0x71, 0x15, 0xfd, 0x03, 0xae, 0xa8, 0x6b, 0x50, + 0x56, 0xe6, 0x20, 0x91, 0x1e, 0x5a, 0x08, 0x95, 0x8a, 0xc0, + 0xdc, 0x7c, 0x37, 0xcf, 0x05, 0x97, 0x6f, 0xc6, 0x88, 0xb4, + 0x25, 0xfb, 0x56, 0xd4, 0x8b, 0xdc, 0x0d, 0xbf, 0x92, 0x2f, + 0x51, 0x20, 0x9d, 0x03, 0x7f, 0x35, 0xba, 0xa0, 0xec, 0x49, + 0x0f, 0xb4, 0x35, 0xdb, 0x9c, 0xe9, 0x8a, 0x72, 0x07, 0xf9, + 0x34, 0x83, 0xbd, 0xb5, 0xa2, 0xe1, 0xd9, 0xeb, 0x9f, 0xe0, + 0x57, 0x54, 0xd4, 0x28, 0x2b, 0x73, 0x10, 0xa9, 0x8e, 0x2c, + 0xb6, 0xa3, 0x4b, 0xc8, 0x8a, 0x26, 0xc3, 0x8f, 0x3d, 0x6f, + 0x23, 0x5f, 0x87, 0x58, 0x5c, 0x57, 0xee, 0xfd, 0xcc, 0x84, + 0x02, 0xc4, 0xe1, 0xaa, 0x1a, 0x27, 0x6c, 0x29, 0x16, 0xae, + 0x41, 0x04, 0x8d, 0x20, 0x38, 0xe5, 0x16, 0x60, 0xe4, 0x24, + 0xfe, 0x92, 0x52, 0xf0, 0x8a, 0x08, 0x6f, 0xce, 0xfa, 0xbf, + 0x5e, 0xa7, 0x17, 0x02, 0x75, 0x71, 0xf3, 0x60, 0x64, 0x05, + 0x81, 0x5f, 0x42, 0x0d, 0xe6, 0x68, 0x46, 0x44, 0xde, 0xb8, + 0xd6, 0x65, 0x1f, 0xb0, 0x03, 0xef, 0x9e, 0x1a, 0x46, 0x11, + 0xc3, 0x88, 0xee, 0xba, 0xbc, 0x5b, 0x2f, 0x99, 0xa0, 0xc8, + 0x7e, 0x7a, 0xae, 0x22, 0x2b, 0xd1, 0xca, 0x47, 0xe4, 0x62, + 0x9a, 0xc9, 0xc7, 0x96, 0xed, 0x94, 0xc5, 0xd4, 0x37, 0x61, + 0xdc, 0x51, 0xc4, 0xcd, 0xe8, 0xf2, 0x1f, 0x94, 0x77, 0x9c, + 0x9b, 0xfc, 0x17, 0xa1, 0xd9, 0xa2, 0xdf, 0x58, 0xaf, 0x85, + 0x96, 0x53, 0xd7, 0x4c, 0x45, 0xdd, 0x7a, 0xde, 0x46, 0xbe, + 0xcd, 0xb0, 0x43, 0x0a, 0x7e, 0x50, 0x6c, 0x9a, 0x27, 0xf0, + 0x79, 0x5a, 0x40, 0xae, 0x8d, 0x5b, 0x92, 0x14, 0xe3, 0xec, + 0xbf, 0x6c, 0x41, 0x10, 0xac, 0xb4, 0x2b, 0x80, 0x70, 0x33, + 0x98, 0xf1, 0x1e, 0x1b, 0x29, 0xdf, 0x39, 0x37, 0xb0, 0x1d, + 0xab, 0x59, 0x5a, 0xe8, 0x53, 0xa8, 0x1a, 0x7f, 0x2f, 0x7d, + 0xb4, 0x8a, 0x70, 0xda, 0x60, 0x0a, 0xa2, 0xad, 0xc9, 0x50, + 0x36, 0xc6, 0x5f, 0x2e, 0x7c, 0xd7, 0xcb, 0x34, 0x1e, 0x63, + 0xdb, 0xd3, 0xfe, 0xa5, 0xde, 0x57, 0x7c, 0x85, 0x0c, 0x3a, + 0x3d, 0x68, 0x32, 0x9e, 0x8c, 0x7a, 0xb8, 0xfd, 0xec, 0x8e, + 0x3b, 0xe4, 0xb6, 0x59, 0x86, 0x98, 0x9b, 0xff, 0xda, 0x43, + 0x12, 0x5d, 0x14, 0x73, 0x4c, 0xe7, 0x13, 0x1e, 0x9a, 0xb8, + 0xb5, 0x9f, 0xf1, 0x86, 0xea, 0xd3, 0x6d, 0x57, 0xf8, 0xf1, + 0x91, 0xf9, 0xb5, 0x84, 0x92, 0xdd, 0xec, 0xac, 0x72, 0x65, + 0xbe, 0xbc, 0xc9, 0xa9, 0xa7, 0x4a, 0x57, 0x38, 0x65, 0x15, + 0x35, 0x0a, 0x7a, 0x6c, 0x04, 0xbb, 0x03, 0x09, 0x6b, 0x48, + 0x7e, 0xa1, 0xc8, 0xd8, 0x32, 0x41, 0xe1, 0x22, 0x51, 0x1f, + 0x14, 0x12, 0xa5, 0xfd, 0x7c, 0xe4, 0xaf, 0xaa, 0x10, 0xef, + 0x04, 0x19, 0xd0, 0xfb, 0xe6, 0x8b, 0xb0, 0x39, 0xa4, 0xfa, + 0xe4, 0xdc, 0x85, 0x74, 0xe9, 0xa7, 0xab, 0x26, 0x8f, 0xe5, + 0x68, 0x3f, 0xbc, 0x37, 0xab, 0xd7, 0xe0, 0x77, 0xc0, 0x14, + 0x87, 0x99, 0x51, 0xa0, 0x6c, 0x4f, 0xbe, 0x5c, 0xf8, 0x6d, + 0x64, 0xff, 0xdb, 0xf4, 0xb3, 0x39, 0x1b, 0xdf, 0x76, 0x0b, + 0xaf, 0xb2, 0xcf, 0xf3, 0xf5, 0x3d, 0xad, 0xc5, 0x36, 0xe7, + 0x3c, 0x95, 0xd4, 0xea, 0x35, 0x22, 0x6d, 0x0b, 0x1c, 0x62, + 0xd0, 0x49, 0x4f, 0x2e, 0x11, 0xb3, 0x57, 0x5b, 0x81, 0x16, + 0xb1, 0x9d, 0x42, 0x26, 0x0a, 0x27, 0xc2, 0x5c, 0x85, 0x1d, + 0x97, 0xe8, 0xa6, 0x56, 0x86, 0xfb, 0xc0, 0xf5, 0x61, 0xbd, + 0x88, 0xa9, 0xf3, 0x3a, 0xa0, 0xe6, 0xc1, 0x3c, 0x2d, 0x8a, + 0x8b, 0x44, 0x52, 0xda, 0x30, 0x9d, 0x15, 0xaa, 0x8c, 0x0f, + 0x13, 0x79, 0xff, 0x4e, 0x9b, 0xdf, 0x83, 0xd2, 0x50, 0x37, + 0x58, 0x01, 0x66, 0x0e, 0xd4, 0xf2, 0xd4, 0x69, 0x8e, 0xce, + 0x7b, 0xcd, 0xdb, 0x91, 0x46, 0xa7, 0x26, 0x0c, 0xed, 0x48, + 0xb9, 0xd2, 0xfb, 0xa4, 0x61, 0x69, 0x37, 0x51, 0x23, 0xbb, + 0x78, 0xcd, 0x74, 0xe0, 0x55, 0x09, 0xbe, 0x8b, 0xae, 0xcc, + 0x5d, 0xaf, 0x42, 0x34, 0x1c, 0x32, 0x07, 0x63, 0x8c, 0x29, + 0x4d, 0x7d, 0xc4, 0x5b, 0x94, 0x6a, 0x9b, 0xd6, 0x69, 0xf6, + 0x34, 0xb9, 0x0d, 0xbc, 0x87, 0x80, 0x31, 0x0c, 0x3f, 0xd4, + 0xde, 0x5f, 0x37, 0xbd, 0xbc, 0x8d, 0x2e, 0x04, 0xea, 0xe2, + 0x25, 0xc0, 0xc8, 0x0a, 0xc1, 0xbe, 0xbb, 0xa7, 0x74, 0x71, + 0x25, 0x6a, 0xcc, 0x93, 0x33, 0xd6, 0xd5, 0x6c, 0x89, 0x4d, + 0x38, 0x8d, 0xce, 0x2f, 0xa3, 0xbb, 0x59, 0xf3, 0x65, 0x0e, + 0x88, 0x94, 0x9c, 0xe3, 0xff, 0x1b, 0x01, 0x5e, 0xa2, 0xe8, + 0x32, 0x4c, 0x79, 0xf5, 0xba, 0xd4, 0xcf, 0xa4, 0x8e, 0xa1, + 0xca, 0x01, 0x94, 0x13, 0xf1, 0x92, 0xd8, 0x1a, 0xf0, 0x11, + 0xd6, 0x2e, 0xd4, 0x88, 0x77, 0x2c, 0x70, 0x4b, 0xc6, 0xe7, + 0x3d, 0xb3, 0x88, 0xd1, 0xfd, 0x9d, 0x82, 0xb0, 0xc1, 0x62, + 0x55, 0xf3, 0x50, 0xfb, 0xdf, 0xa5, 0xb6, 0x84, 0x83, 0xaa, + 0x34, 0x75, 0x93, 0x3d, 0x54, 0x2e, 0x88, 0xfa, 0x80, 0x85, + 0x64, 0xcb, 0x61, 0xe4, 0x66, 0x2c, 0x31, 0x19, 0x80, 0x74, + 0x20, 0xc8, 0x4f, 0xd4, 0x3c, 0xd2, 0xc9, 0x0b, 0x36, 0x82, + 0xa9, 0x9a, 0x10, 0x03, 0x8e, 0x6d, 0xc2, 0x18, 0x09, 0x21, + 0xfb, 0x0d, 0xab, 0xc7, 0xec, 0xc1, 0xbb, 0xc7, 0x04, 0x70, + 0xc2, 0x8a, 0xd1, 0x06, 0x93, 0x99, 0x4e, 0x92, 0x5a, 0x41, + 0xc8, 0x3d, 0x75, 0x2b, 0xa5, 0x72, 0x36, 0x7d, 0xec, 0x16, + 0x9d, 0xa7, 0x5d, 0x25, 0x29, 0x7a, 0x52, 0x7d, 0x72, 0x6e, + 0xa3, 0x3a, 0x95, 0xb2, 0xb4, 0x13, 0xa6, 0x93, 0x34, 0xfe, + 0x5e, 0xfa, 0xb2, 0x98, 0xa6, 0x4a, 0x9c, 0x8b, 0xf1, 0xde, + 0xad, 0xd2, 0x37, 0x82, 0xfd, 0x10, 0x54, 0xf3, 0xd0, 0x75, + 0xab, 0x2e, 0xd3, 0x33, 0xb9, 0x72, 0xbf, 0x5b, 0x99, 0x74, + 0x90, 0xdd, 0x89, 0xea, 0x72, 0x9d, 0x99, 0x62, 0xaa, 0xc6, + 0x03, 0xa6, 0x70, 0xff, 0x17, 0xd5, 0x5a, 0xdc, 0x1d, 0xf9, + 0xeb, 0xd4, 0xf5, 0x6f, 0xd2, 0x2f, 0x68, 0xb1, 0x1a, 0xbb, + 0xcd, 0xc3, 0x62, 0x18, 0x7e, 0x6b, 0x96, 0x64, 0x68, 0xa6, + 0x3d, 0x89, 0x05, 0x29, 0x90, 0xc2, 0x39, 0xbc, 0xee, 0xa7, + 0x27, 0xc8, 0x0e, 0x2a, 0x9c, 0x93, 0x6f, 0xbe, 0x97, 0x76, + 0x55, 0xb9, 0xbc, 0xb4, 0x58, 0xd7, 0x48, 0x54, 0xe2, 0xeb, + 0x27, 0x54, 0x6b, 0xce, 0x55, 0xfc, 0x84, 0xbf, 0x2f, 0x2d, + 0x16, 0x45, 0x12, 0x15, 0x56, 0x61, 0x57, 0x8e, 0x0b, 0xc4, + 0xf7, 0x51, 0x4d, 0xef, 0x19, 0xeb, 0x49, 0x6b, 0x6e, 0xc2, + 0x4c, 0x27, 0x7a, 0xfb, 0x29, 0xfa, 0x49, 0xce, 0x83, 0xdc, + 0xa3, 0x04, 0x5b, 0x38, 0xd6, 0x4e, 0x40, 0x03, 0x15, 0x18, + 0x12, 0x3b, 0xef, 0x28, 0x4b, 0x1b, 0xa1, 0x8c, 0xdc, 0x44, + 0x86, 0x06, 0x37, 0x85, 0x31, 0xa2, 0x3a, 0xdd, 0x77, 0x25, + 0x6d, 0x27, 0x56, 0x3f, 0x75, 0xb9, 0xa7, 0xc9, 0x92, 0x78, + 0x4d, 0x46, 0x95, 0x77, 0x67, 0xca, 0x69, 0x3e, 0x86, 0xc4, + 0x93, 0x32, 0x17, 0xf0, 0x44, 0x1f, 0x30, 0xf8, 0xba, 0xc5, + 0x8d, 0xcb, 0xb2, 0xe7, 0x1e, 0xf4, 0xa1, 0xd1, 0xb6, 0x3e, + 0x8f, 0x2b, 0x2e, 0x9b, 0x61, 0x16, 0x73, 0x6e, 0x6c, 0xb0, + 0x62, 0x71, 0xad, 0xeb, 0x8b, 0x56, 0x59, 0x4c, 0x53, 0x25, + 0x4e, 0xa4, 0x99, 0x6f, 0xb7, 0x69, 0xfa, 0x41, 0x9f, 0x08, + 0x2a, 0x98, 0xdb, 0x44, 0x8a, 0x65, 0x3e, 0xad, 0xb5, 0xaf, + 0xbc, 0x21, 0xc5, 0xa6, 0x3b, 0x2b, 0xfd, 0x88, 0x6d, 0xc0, + 0x09, 0xcf, 0x0a, 0xd8, 0x26, 0x92, 0xe8, 0x0f, 0x4d, 0x5c, + 0xbb, 0xae, 0x99, 0x43, 0x8c, 0x22, 0x45, 0xd3, 0x1f, 0xb7, + 0xbb, 0xb6, 0x5e, 0xf1, 0x83, 0x53, 0xfc, 0xf4, 0x9f, 0x44, + 0xd3, 0x7c, 0xc0, 0x66, 0xad, 0x92, 0x71, 0xaa, 0x8d, 0x1a, + 0x78, 0x56, 0xc1, 0xc2, 0x9d, 0xf8, 0x88, 0x3e, 0x60, 0x33, + 0xb7, 0x49, 0xd9, 0x55, 0xa7, 0x0d, 0x3c, 0x2b, 0x81, 0x61, + 0xaf, 0x7c, 0x47, 0x16, 0x5b, 0xb0, 0xc4, 0x64, 0x45, 0x13, + 0x80, 0xa6, 0xff, 0xd6, 0xf0, 0xce, 0xa2, 0x2c, 0xe5, 0xfe, + 0x69, 0xfc, 0xbd, 0x91, 0xff, 0xc7, 0x4f, 0x02, 0x71, 0x77, + 0x3a, 0xcf, 0x36, 0x3f, 0x2f, 0xcd, 0xef, 0xa7, 0x4c, 0x9c, + 0xf8, 0x2a, 0x3e, 0x6a, 0x52, 0xec, 0xb8, 0x41, 0x07, 0x59, + 0x12, 0x7e, 0x67, 0x76, 0xb1, 0x01, 0x7a, 0x9a, 0xff, 0x08, + 0x07, 0x1f, 0xe8, 0xba, 0xd8, 0xfc, 0x8b, 0x37, 0x0b, 0x7b, + 0xc9, 0xe8, 0x11, 0x8d, 0x95, 0x4c, 0xdd, 0x09, 0xd0, 0x7e, + 0xbb, 0x6e, 0x11, 0x77, 0x0c, 0x3e, 0xcf, 0xa0, 0xb2, 0x42, + 0xcd, 0x49, 0xe6, 0x3d, 0xb9, 0xa5, 0xcc, 0xee, 0x54, 0x6f, + 0xa4, 0xfe, 0x5f, 0xbb, 0xc6, 0xc1, 0xd0, 0x91, 0xa7, 0xd7, + 0x96, 0xc0, 0x76, 0xde, 0xa8, 0xde, 0x8b, 0x3f, 0xbe, 0xb5, + 0x4f, 0x41, 0x63, 0xe1, 0x8d, 0x6d, 0xef, 0x43, 0xec, 0x7f, + 0x87, 0x13, 0x64, 0x98, 0xf2, 0x29, 0xb7, 0x6b, 0x5d, 0x8b, + 0xdf, 0x81, 0x57, 0x02, 0xeb, 0x26, 0x2d, 0xc3, 0x1c, 0xd7, + 0x18, 0xe3, 0xc9, 0xba, 0xa3, 0x14, 0xec, 0xd0, 0x67, 0xea, + 0x1f, 0x45, 0x5d, 0x50, 0x76, 0xc5, 0xe6, 0x5a, 0xfb, 0x8c, + 0x4e, 0x95, 0x45, 0x39, 0xe2, 0x9d, 0x1a, 0xa0, 0x9d, 0x55, + 0x49, 0xed, 0xd0, 0x17, 0x09, 0xf4, 0x93, 0xb8, 0x65, 0x6e, + 0x45, 0x51, 0x53, 0xaa, 0x39, 0xaf, 0xad, 0x31, 0x55, 0x63, + 0xe0, 0x53, 0x38, 0x9e, 0xea, 0x8b, 0x2d, 0x6e, 0xef, 0x9d, + 0x5f, 0x5e, 0x85, 0xb5, 0xb2, 0x25, 0xca, 0x1c, 0xd3, 0xeb, + 0xfb, 0x05, 0x3d, 0x36, 0x02, 0xbc, 0x26, 0xf2, 0x3d, 0x9c, + 0xf5, 0x7d, 0xc5, 0x67, 0xa0, 0x6e, 0xb0, 0x02, 0xcc, 0x1c, + 0x6b, 0x27, 0x05, 0x1b, 0xbd, 0xd8, 0x82, 0x20, 0x9b, 0xab, + 0x56, 0xc3, 0xe0, 0x66, 0xf3, 0x21, 0x3c, 0x36, 0xd5, 0x6e, + 0x16, 0xf6, 0x51, 0x13, 0x22, 0xd9, 0xe9, 0x98, 0x79, 0x12, + 0x63, 0xfc, 0xb5, 0xdc, 0xfc, 0xb1, 0x2f, 0xc1, 0xe1, 0x0e, + 0x89, 0x80, 0xb3, 0x70, 0x2a, 0xba, 0x79, 0x83, 0x9a, 0xa1, + 0x19, 0x4f, 0x46, 0x3d, 0x5c, 0x9f, 0x76, 0x47, 0xfc, 0x72, + 0x5b, 0xcd, 0x43, 0x4c, 0xac, 0x9e, 0x09, 0x3f, 0xd2, 0x3b, + 0xb9, 0xe1, 0x3d, 0x4d, 0x9e, 0x04, 0xe2, 0xee, 0x74, 0x5d, + 0x6c, 0x7e, 0xb3, 0x9f, 0x3e, 0x72, 0xb6, 0x55, 0x08, 0x96, + 0x02, 0xed, 0x68, 0x9c, 0x73, 0xa4, 0x58, 0xfd, 0xfa, 0xa3, + 0xf9, 0x51, 0x1d, 0x8f, 0xda, 0xf3, 0xd7, 0xf2, 0x2b, 0xfe, + 0xdb, 0xbd, 0xb2, 0x85, 0xef, 0xc8, 0xd0, 0x8f, 0x7a, 0xd1, + 0x0a, 0x52, 0xe3, 0x47, 0x72, 0xbb, 0x1f, 0x8d, 0x4e, 0x53, + 0x0a, 0x36, 0xb9, 0x73, 0xc7, 0x40, 0xf5, 0x95, 0xac, 0x45, + 0x03, 0xcc, 0x25, 0x42, 0x78, 0x6c, 0x30, 0x90, 0x7f, 0x0a, + 0xec, 0x82, 0xdd, 0x1e, 0xa6, 0x9a, 0x08, 0x65, 0x59, 0x33, + 0x83, 0xe3, 0xcd, 0x26, 0xc8, 0xf3, 0x27, 0x52, 0xad, 0xd6, + 0xba, 0xd5, 0x7d, 0xc1, 0xae, 0x04, 0x15, 0x4c, 0xd6, 0x67, + 0x7d, 0xbe, 0x2f, 0xb2, 0xea, 0x01, 0xdb, 0xd9, 0x98, 0x30, + 0x32, 0xe3, 0xa1, 0xce, 0x6b, 0xd2, 0xdf, 0x5f, 0xf6, 0x59, + 0x75, 0xe1, 0x8c, 0x8d, 0x4c, 0x18, 0x19, 0x90, 0xb1, 0x67, + 0x08, 0x38, 0x4a, 0x03, 0x93, 0x3f, 0xc4, 0x05, 0x31, 0x3b, + 0xbd, 0xf0, 0xfa, 0xe9, 0x60, 0x70, 0xb5, 0x8d, 0xe8, 0xe2, + 0x4a, 0xd4, 0x5b, 0xe5, 0x66, 0x6f, 0x69, 0xd8, 0xd1, 0x9a, + 0x70, 0xd9, 0x6e, 0xc9, 0x62, 0x87, 0x74, 0x79, 0xee, 0x4a, + 0xda, 0x4e, 0xac, 0x7e, 0xea, 0xb1, 0x8d, 0x51, 0x65, 0xf8, + 0x43, 0xcc, 0x99, 0xe7, 0xe2, 0x97, 0xd9, 0x34, 0xf0, 0xac, + 0x41, 0x47, 0xf9, 0x33, 0xf5, 0x8e, 0xfd, 0xfa, 0x58, 0xef, + 0xb4, 0xcd, 0x2d, 0x74, 0xc8, 0x54, 0x0d, 0xde, 0xf6, 0xdf, + 0xaa, 0xd0, 0x78, 0x4f, 0xea, 0xca, 0x7e, 0xd1, 0xfe, 0x9f, + 0x33, 0x51, 0x30, 0xe8, 0xf4, 0x63, 0x74, 0x8f, 0x4f, 0xf2, + 0x56, 0x47, 0x50, 0xd5, 0x14, 0x7d, 0x16, 0x91, 0xf8, 0xe2, + 0x35, 0xdd, 0x4b, 0x32, 0x34, 0x53, 0xff, 0xa5, 0xe3, 0xf5, + 0x48, 0x61, 0xfd, 0x5e, 0x77, 0xb2, 0xf2, 0x64, 0xff, 0xb8, + 0x44, 0x89, 0x9f, 0xaf, 0x41, 0x58, 0x81, 0x31, 0xcb, 0x98, + 0x28, 0x9c, 0x8e, 0xb3, 0x81, 0x01, 0xb2, 0x08, 0x0e, 0xa8, + 0xe4, 0x18, 0x39, 0x09, 0xde, 0xc5, 0xf5, 0x3c, 0xc3, 0x02, + 0xc1, 0x02, 0xa7, 0x10, 0x1c, 0x93, 0x0b, 0x30, 0x72, 0x12, + 0x7f, 0x49, 0x29, 0x78, 0x45, 0x04, 0xd1, 0x72, 0x33, 0x16, + 0xf9, 0xed, 0x40, 0x3a, 0x10, 0x64, 0xc6, 0x6a, 0x1e, 0x69, + 0x85, 0xe4, 0x28, 0xd8, 0xa1, 0x0f, 0x9a, 0xc3, 0x52, 0x11, + 0xf5, 0xd7, 0x0c, 0xb6, 0x94, 0xcb, 0x23, 0x73, 0xb1, 0x91, + 0xcd, 0x02, 0xe2, 0x2a, 0x39, 0x06, 0x9f, 0x93, 0xd6, 0xa0, + 0xac, 0x0f, 0x40, 0xe1, 0x9b, 0x47, 0x9f, 0x7d, 0x2c, 0x96, + 0x5a, 0x87, 0xf7, 0x3a, 0x64, 0x2a, 0xe7, 0x6f, 0x7b, 0x8e, + 0xdd, 0x56, 0x5c, 0xf5, 0xc2, 0x2c, 0xe6, 0xdc, 0xd8, 0xa3, + 0xc4, 0xe2, 0x99, 0x15, 0xd5, 0xac, 0x23, 0xe9, 0x80, 0x44, + 0x77, 0x5d, 0x5e, 0xcc, 0xf6, 0xad, 0x50, 0x64, 0x3f, 0x3d, + 0x57, 0x11, 0x3f, 0xbd, 0x7b, 0xa1, 0xa9, 0xe2, 0xb3, 0x20, + 0x5c, 0x1c, 0xeb, 0xcf, 0x8f, 0x50, 0xc7, 0xb9, 0x02, 0x0e, + 0xf3, 0x70, 0x54, 0x7f, 0x31, 0x90, 0x9d, 0x7e, 0xbe, 0x3c, + 0xdf, 0xab, 0x18, 0x1c, 0x10, 0x70, 0x94, 0x06, 0xe5, 0x7e, + 0x4b, 0x0a, 0x62, 0x76, 0xb9, 0x23, 0x37, 0x11, 0xc0, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x46, 0x2d, 0x75, + 0x22, 0x3e, 0xbe, 0x9f, 0xce, 0x33, 0xba, 0xef, 0x12, 0x53, + 0xb8, 0x8c, 0x60, 0xe3, 0xfe, 0x14, 0x1b, 0xc7, 0x79, 0x3c, + 0x8f, 0xf7, 0x10, 0xca, 0xb2, 0x66, 0xc5, 0x05, 0x5a, 0x45, + 0x38, 0x6d, 0x30, 0x05, 0x51, 0xb7, 0x85, 0x28, 0x1b, 0x63, + 0xce, 0x17, 0x3e, 0x8a, 0x3e, 0xba, 0xe3, 0x99, 0x83, 0x3c, + 0x4a, 0x68, 0xf3, 0x23, 0xb4, 0xd1, 0x01, 0xe4, 0xcb, 0xb7, + 0x6a, 0xd5, 0x47, 0x67, 0xdc, 0x87, 0x8c, 0xa9, 0x23, 0xb2, + 0x13, 0x06, 0x97, 0x24, 0xbd, 0x69, 0x71, 0x94, 0xf2, 0x2a, + 0xd4, 0x67, 0xcb, 0x7e, 0x42, 0xbe, 0xf6, 0xf7, 0x0b, 0xc3, + 0x09, 0xeb, 0x75, 0x88, 0xd7, 0xca, 0x7c, 0x99, 0xa9, 0x9d, + 0xbb, 0x42, 0x49, 0x8f, 0x76, 0x56, 0x39, 0xd3, 0xb7, 0x83, + 0x1b, 0x92, 0x1e, 0xab, 0x6a, 0x75, 0xfb, 0x11, 0xd7, 0xe4, + 0x0e, 0x31, 0x68, 0xc5, 0x7a, 0xa5, 0xd3, 0x61, 0x39, 0xf9, + 0xc7, 0xa3, 0x41, 0xc4, 0xaa, 0x25, 0xa0, 0x35, 0x7d, 0x89, + 0xd9, 0x4a, 0x79, 0x15, 0x6a, 0xd2, 0x84, 0x3f, 0x21, 0x5f, + 0x7b, 0x9a, 0xe4, 0x80, 0xe5, 0x94, 0x6c, 0xc7, 0x91, 0xf7, + 0x20, 0x06, 0xdf, 0xda, 0x47, 0x30, 0x12, 0x42, 0x35, 0x1a, + 0x95, 0x4d, 0x93, 0x7f, 0xd5, 0x7e, 0xbf, 0xa9, 0x9e, 0x82, + 0xc6, 0x01, 0xd9, 0xda, 0x1d, 0x86, 0x1b, 0xfe, 0x45, 0x18, + 0xa8, 0xc0, 0x90, 0x1b, 0x74, 0x83, 0x1d, 0xd8, 0x41, 0xea, + 0x2f, 0x65, 0xba, 0x30, 0x9a, 0x40, 0x07, 0x45, 0x06, 0x48, + 0xa3, 0xcf, 0x58, 0x05, 0x3b, 0x34, 0x69, 0xdb, 0x77, 0x80, + 0x89, 0x39, 0xf8, 0x0b, 0x9d, 0x97, 0x20, 0x1d, 0x08, 0x32, + 0x63, 0x35, 0x0f, 0xd5, 0xa3, 0x72, 0x3a, 0xa6, 0xc6, 0x79, + 0x2b, 0xc2, 0x28, 0x8b, 0x0a, 0xdf, 0x0b, 0xa9, 0x7c, 0x71, + 0xfb, 0x8f, 0x78, 0xab, 0x20, 0x11, 0x6d, 0x86, 0xf6, 0x33, + 0xdc, 0xba, 0x14, 0x19, 0x7f, 0x9e, 0x65, 0x95, 0x1d, 0x53, + 0x63, 0xdd, 0xf4, 0x61, 0x14, 0xa4, 0x05, 0x8e, 0xe4, 0xb5, + 0x3e, 0xd9, 0x9c, 0xa6, 0x8a, 0x30, 0x93, 0x43, 0xe3, 0x36, + 0xe8, 0xc5, 0x3a, 0x73, 0x82, 0x17, 0x5e, 0xca, 0xb7, 0x60, + 0x97, 0x63, 0xf0, 0x9e, 0x17, 0x57, 0xfc, 0x61, 0x3f, 0xfd, + 0x66, 0xa2, 0x60, 0x13, 0x2b, 0xc6, 0xf8, 0xad, 0x0a, 0x21, + 0x49, 0xf0, 0xeb, 0x63, 0x4a, 0x8c, 0x95, 0xc2, 0x04, 0x16, + 0xaa, 0x99, 0xf9, 0xaa, 0x92, 0x19, 0x63, 0x2e, 0x12, 0x2b, + 0xe5, 0xb3, 0xca, 0xdc, 0x8a, 0xa2, 0xa6, 0x97, 0x58, 0x4b, + 0xcb, 0x1d, 0x64, 0x7a, 0x60, 0x27, 0x18, 0x56, 0xa5, 0x5f, + 0x11, 0xbc, 0x26, 0x96, 0x2c, 0xc4, 0x84, 0xef, 0x32, 0x3d, + 0x30, 0xf2, 0x0c, 0x2b, 0xb3, 0xce, 0xe9, 0x5e, 0x13, 0x4b, + 0x06, 0x12, 0xd6, 0x90, 0xfc, 0x81, 0x53, 0x73, 0x64, 0x82, + 0x01, 0x44, 0xa2, 0x3e, 0x28, 0x24, 0xbc, 0xb2, 0x3a, 0xd9, + 0xf3, 0x35, 0x66, 0xa8, 0xf8, 0x6b, 0x8b, 0x36, 0xa5, 0xc7, + 0x1c, 0xa7, 0x9c, 0x52, 0xd1, 0xd5, 0xfa, 0xc9, 0xf0, 0xbc, + 0x3c, 0x87, 0x3a, 0x70, 0xcb, 0xe5, 0x5f, 0xa4, 0x55, 0x68, + 0x3c, 0xc6, 0x75, 0x65, 0x3f, 0x89, 0x7f, 0xae, 0xf8, 0xc9, + 0x18, 0x74, 0x7a, 0xd0, 0x7c, 0xb7, 0x05, 0xf1, 0xc5, 0x78, + 0x94, 0xd0, 0x25, 0x46, 0xab, 0x61, 0x02, 0x0b, 0x55, 0xad, + 0x2a, 0xd6, 0x52, 0x7f, 0xce, 0xbc, 0x63, 0x81, 0x68, 0xa9, + 0xb2, 0x8a, 0x4b, 0x60, 0x3b, 0x6f, 0x3b, 0xa1, 0x5e, 0x41, + 0x01, 0x1c, 0xd1, 0xc3, 0xa5, 0xe0, 0x54, 0xb7, 0xf2, 0xc5, + 0xf7, 0x81, 0x9f, 0x5b, 0xba, 0x9d, 0x84, 0x68, 0x38, 0x64, + 0x0e, 0xc6, 0xdb, 0x52, 0x9a, 0xfa, 0x4b, 0xb6, 0xc6, 0x17, + 0xe9, 0xb8, 0xca, 0xcc, 0xa1, 0x0b, 0xb9, 0xaf, 0x21, 0x13, + 0x05, 0xf2, 0x61, 0x2e, 0x1c, 0x54, 0xfb, 0xe5, 0xde, 0xbf, + 0xed, 0xec, 0xaa, 0xb1, 0xbb, 0xab, 0xb0, 0x6d, 0x90, 0xa8, + 0xfe, 0xbf, 0xdc, 0xb1, 0xb5, 0x71, 0xb8, 0x10, 0x2e, 0x0e, + 0x94, 0x86, 0xa6, 0x28, 0x82, 0xbd, 0x62, 0xed, 0x0d, 0x64, + 0x4f, 0xb8, 0x48, 0xac, 0x12, 0x89, 0xae, 0xf6, 0x6d, 0xcd, + 0xdd, 0x19, 0x7d, 0xb0, 0x9d, 0xc9, 0xef, 0xa6, 0x6d, 0x98, + 0x8a, 0x79, 0xf4, 0x7f, 0x8c, 0xbf, 0x59, 0xa3, 0x21, 0xe7, + 0x73, 0x34, 0x23, 0x22, 0x6f, 0x5c, 0x6b, 0xd3, 0xee, 0x58, + 0xe0, 0x96, 0x4f, 0x0d, 0xc0, 0x05, 0x3f, 0x28, 0x36, 0x4d, + 0xf2, 0x78, 0xdd, 0x2d, 0x20, 0x57, 0xa7, 0xcc, 0x49, 0x0a, + 0xf2, 0x9b, 0xb3, 0x52, 0x8e, 0xb0, 0x1e, 0xf6, 0xe6, 0xc9, + 0x96, 0x0e, 0x21, 0x54, 0xd2, 0xf5, 0xf7, 0x80, 0x0e, 0x8a, + 0x0c, 0x90, 0x85, 0x5d, 0xb0, 0x0a, 0x76, 0x68, 0xd2, 0x75, + 0xee, 0xc3, 0x33, 0x99, 0x14, 0x42, 0x92, 0x23, 0x15, 0xc6, + 0x94, 0xdb, 0xe9, 0x47, 0x08, 0x2c, 0x97, 0xf1, 0x98, 0x4e, + 0xf4, 0x35, 0x52, 0x37, 0x92, 0x5f, 0xc5, 0x7b, 0x85, 0x08, + 0xb6, 0x70, 0x6f, 0x9c, 0xa9, 0xd9, 0x13, 0x07, 0x94, 0x6b, + 0xb6, 0x09, 0xcc, 0xde, 0xd2, 0x73, 0x61, 0xf7, 0xe0, 0x71, + 0x82, 0x08, 0xd9, 0x40, 0x70, 0x09, 0x2c, 0xc0, 0x0b, 0x48, + 0x3f, 0xe7, 0xa4, 0x23, 0xd7, 0x10, 0x4d, 0x20, 0xe2, 0xc3, + 0x03, 0x24, 0xb0, 0x86, 0x2c, 0xe3, 0xfc, 0x1a, 0xd5, 0x8c, + 0xda, 0x40, 0xf4, 0x89, 0x65, 0xc2, 0x72, 0x31, 0x4d, 0x85, + 0x82, 0x4b, 0x97, 0x4a, 0x83, 0x6a, 0xfa, 0xd1, 0xf6, 0x87, + 0x96, 0xb2, 0x26, 0x4e, 0x7c, 0x15, 0x1f, 0x35, 0x29, 0x76, + 0x5c, 0xc1, 0xe2, 0xcd, 0x14, 0x6c, 0xb1, 0xe6, 0x4d, 0x80, + 0x29, 0xe9, 0x9b, 0x8a, 0x06, 0x5b, 0x4a, 0x84, 0xf0, 0xd8, + 0x7b, 0xa2, 0x4b, 0x59, 0x13, 0x27, 0x3e, 0xeb, 0xee, 0xfb, + 0xf5, 0x3b, 0x2e, 0x81, 0x71, 0x87, 0x79, 0xac, 0xb8, 0x29, + 0x47, 0x58, 0x0f, 0x7b, 0x73, 0x85, 0x4b, 0x07, 0xf1, 0x2a, + 0x69, 0x9b, 0x17, 0x65, 0xda, 0xae, 0x33, 0x21, 0xe1, 0x31, + 0xa9, 0xcb, 0xe7, 0x79, 0x1b, 0x9b, 0xe4, 0xca, 0xf0, 0x95, + 0x40, 0x22, 0xda, 0xcf, 0x2f, 0x66, 0x7b, 0xb7, 0x28, 0x32, + 0xfe, 0xff, 0xca, 0xe9, 0xbf, 0xbb, 0x51, 0x91, 0x8d, 0x94, + 0xae, 0x70, 0xca, 0x2a, 0x6a, 0x14, 0xf4, 0xd8, 0x08, 0xb5, + 0xcf, 0x28, 0x3b, 0x83, 0x73, 0x2d, 0x9c, 0x46, 0x27, 0xab, + 0xc3, 0xfd, 0x71, 0xaf, 0x0d, 0x50, 0x01, 0x07, 0x98, 0x38, + 0x2a, 0xde, 0xf9, 0x48, 0xaf, 0x3f, 0x5f, 0x1e, 0x8e, 0xb4, + 0x0c, 0x0e, 0xed, 0xc6, 0x23, 0xff, 0x2e, 0xae, 0x3b, 0xc2, + 0x7e, 0x39, 0xcc, 0x87, 0xc0, 0x26, 0x56, 0x4f, 0xcc, 0x21, + 0x50, 0xcb, 0x0d, 0x8c, 0x54, 0x9e, 0x15, 0xea, 0x22, 0xdf, + 0x20, 0xb0, 0x19, 0x42, 0x15, 0x6b, 0x29, 0xde, 0x67, 0x5e, + 0xd0, 0xa1, 0x34, 0xb5, 0x59, 0x45, 0xc4, 0x30, 0xfc, 0xd6, + 0x27, 0xf5, 0xa5, 0xa4, 0xdf, 0xa3, 0x3c, 0x2f, 0x0f, 0x51, + 0xef, 0x1c, 0x42, 0xa8, 0x67, 0x29, 0xa3, 0xef, 0xaa, 0x74, + 0x53, 0x2b, 0x43, 0x9c, 0x60, 0x9b, 0xd1, 0xbf, 0x44, 0xb5, + 0x98, 0x1d, 0x0b, 0x31, 0x21, 0x4b, 0xed, 0x9e, 0x0c, 0xdd, + 0x03, 0x7a, 0x5c, 0xd2, 0xab, 0xf6, 0x74, 0x62, 0x38, 0xa8, + 0x35, 0x09, 0x7f, 0xbd, 0x19, 0x1b, 0x97, 0xa1, 0xb5, 0x95, + 0xa3, 0xda, 0xe3, 0x93, 0x57, 0x66, 0xcf, 0xb6, 0x21, 0x1a, + 0x0e, 0x19, 0xe2, 0xd0, 0x46, 0xf5, 0xc7, 0xdf, 0x62, 0xcc, + 0x67, 0xf6, 0xb0, 0xbc, 0xcd, 0x98, 0xd3, 0x07, 0x44, 0x4a, + 0x4e, 0x90, 0x9e, 0xec, 0xe1, 0x2f, 0x83, 0x0f, 0x41, 0x78, + 0x5a, 0xd7, 0xd5, 0x88, 0xa4, 0x77, 0x60, 0xf9, 0x2a, 0x97, + 0xdb, 0x1e, 0x3c, 0xb4, 0x10, 0xe9, 0xd7, 0x43, 0x7b, 0xf8, + 0x6e, 0x5d, 0x0a, 0xed, 0xde, 0x4f, 0xd3, 0xab, 0xfd, 0xb6, + 0xb7, 0xf9, 0xcb, 0xd0, 0x70, 0xc8, 0x1c, 0x4f, 0x75, 0xa4, + 0xf7, 0x37, 0x96, 0xaf, 0xac, 0xc2, 0xae, 0xdf, 0x16, 0x4b, + 0x2d, 0xa2, 0x9a, 0x1d, 0x32, 0x15, 0x92, 0xd6, 0xdc, 0x47, + 0x95, 0x6d, 0x03, 0xee, 0x43, 0x28, 0xcd, 0xf1, 0xa2, 0x83, + 0xd8, 0x9e, 0xbf, 0xb8, 0x33, 0xda, 0x51, 0x74, 0x19, 0x26, + 0xdd, 0x9b, 0x5d, 0x6a, 0x86, 0x52, 0x47, 0xb1, 0x65, 0xe1, + 0x4a, 0xe8, 0xd2, 0x7b, 0x58, 0x5e, 0x87, 0x4c, 0x88, 0xe2, + 0x22, 0x25, 0x27, 0x48, 0x4f, 0x76, 0x91, 0xf6, 0xe1, 0xe2, + 0x4c, 0x1c, 0x15, 0x6f, 0x9d, 0x24, 0xb6, 0xfe, 0xce, 0x0f, + 0x47, 0x5a, 0x06, 0x07, 0xe4, 0xf9, 0xf1, 0xc4, 0x97, 0x4f, + 0x06, 0x8f, 0xe0, 0x3d, 0x2e, 0x69, 0xb4, 0x7b, 0x3a, 0x31, + 0xa6, 0xf4, 0x17, 0xac, 0xd1, 0x0b, 0xd8, 0x37, 0x36, 0x58, + 0x31, 0xd9, 0xb7, 0x94, 0xa4, 0x2b, 0x2e, 0xca, 0x77, 0x9f, + 0x66, 0x42, 0x01, 0x62, 0x91, 0x55, 0x0d, 0xf2, 0x36, 0xf5, + 0x0b, 0x57, 0x9e, 0x5c, 0x22, 0xa5, 0xae, 0xb6, 0xc1, 0x2c, + 0xa1, 0xf9, 0x84, 0x4c, 0x14, 0x4e, 0x47, 0xb8, 0xb0, 0x96, + 0x55, 0x3a, 0xc8, 0xf4, 0xc0, 0x4e, 0x30, 0xac, 0x89, 0xbe, + 0x22, 0xbb, 0x4c, 0xef, 0x04, 0x1c, 0x25, 0xe0, 0xa8, 0xfe, + 0x62, 0xe3, 0xf9, 0xfc, 0xbf, 0x78, 0x7d, 0x95, 0x30, 0x38, + 0xca, 0x33, 0x86, 0x5b, 0xf1, 0x0d, 0x07, 0xed, 0x71, 0x68, + 0x23, 0x9b, 0x82, 0x8e, 0x31, 0x66, 0xe0, 0xe5, 0xd4, 0x24, + 0x3f, 0xb1, 0x64, 0x6c, 0x19, 0xc1, 0x91, 0x11, 0xc9, 0xee, + 0x0a, 0x09, 0x7e, 0xb9, 0xf6, 0x81, 0x91, 0x07, 0xa5, 0x40, + 0xb8, 0x38, 0x15, 0x5d, 0xdd, 0xa0, 0x4d, 0xb1, 0x66, 0xf1, + 0x28, 0x84, 0xe7, 0x46, 0x2a, 0x4f, 0xeb, 0x75, 0x11, 0x8e, + 0x10, 0x58, 0xed, 0x21, 0x50, 0x73, 0x81, 0x1e, 0xf7, 0x45, + 0xa4, 0x22, 0x29, 0x6d, 0x18, 0xaf, 0xeb, 0x55, 0x46, 0xe6, + 0x49, 0x3c, 0xc7, 0x23, 0xab, 0xda, 0xd2, 0x65, 0xd5, 0x1f, + 0x43, 0x62, 0xa8, 0x19, 0xea, 0x78, 0x5b, 0x42, 0xa0, 0x55, + 0x1a, 0xdb, 0xa8, 0xff, 0x2a, 0x17, 0x44, 0x7d, 0x40, 0xa3, + 0x32, 0x84, 0x99, 0x49, 0x6c, 0x0d, 0x78, 0xe9, 0x6b, 0x17, + 0x6a, 0x44, 0xda, 0x16, 0x38, 0xc4, 0x63, 0x92, 0x68, 0xdb, + 0xb4, 0x17, 0x88, 0xf8, 0xbd, 0x39, 0xbe, 0xcc, 0xad, 0x3a, + 0x48, 0x8f, 0xa5, 0x75, 0xe9, 0xda, 0x06, 0x1f, 0x86, 0x50, + 0x59, 0x21, 0x87, 0xc5, 0x73, 0xff, 0xbd, 0xb3, 0x66, 0x77, + 0xc5, 0x1e, 0x82, 0xf0, 0xb4, 0x6d, 0x69, 0xd3, 0x8b, 0xee, + 0xc0, 0x31, 0x54, 0xed, 0x75, 0x3c, + }, + { + /* 8 */ + 0xd7, 0x48, 0x12, 0xa3, 0xbe, 0x29, 0x25, 0xd9, 0x10, 0xec, + 0xae, 0xdf, 0x6a, 0x2d, 0x01, 0xfc, 0x63, 0x44, 0x11, 0xde, + 0x60, 0x0e, 0x82, 0x6c, 0x92, 0x7c, 0xf2, 0x2a, 0x20, 0xcb, + 0xa0, 0xee, 0x5e, 0x13, 0x74, 0x22, 0x3d, 0x0d, 0xaf, 0x72, + 0xfa, 0x27, 0xc7, 0x23, 0xaa, 0xd2, 0x47, 0xdd, 0xaa, 0x8c, + 0x23, 0x54, 0x8a, 0x01, 0x1b, 0x0a, 0x99, 0x88, 0x13, 0x07, + 0xc7, 0xb6, 0x5d, 0x11, 0xea, 0x1f, 0x77, 0x5f, 0xe3, 0x2a, + 0x08, 0xc7, 0x78, 0xb7, 0x9b, 0xd6, 0xe0, 0x34, 0xe6, 0xcf, + 0x2a, 0x69, 0x8b, 0x42, 0x58, 0x57, 0x3d, 0x53, 0x98, 0xf6, + 0xc0, 0x66, 0x89, 0x71, 0xe8, 0x6e, 0x29, 0x16, 0xe4, 0x73, + 0x84, 0x86, 0x44, 0x75, 0x7a, 0x4b, 0xfe, 0x14, 0x7c, 0x79, + 0x4f, 0x31, 0x9c, 0x8e, 0xc2, 0xa0, 0xaf, 0xee, 0x75, 0x63, + 0xa6, 0xb0, 0x09, 0xcf, 0x65, 0x26, 0x32, 0x16, 0xe1, 0x4a, + 0xf3, 0x57, 0x9b, 0xc6, 0x4b, 0xb0, 0x2f, 0xd4, 0xb4, 0x17, + 0xc8, 0xbd, 0x6e, 0xfb, 0xa4, 0x58, 0x16, 0x0f, 0x55, 0x5d, + 0xd3, 0x17, 0x2b, 0xef, 0x7e, 0x50, 0x33, 0x27, 0xff, 0xc4, + 0xeb, 0x8b, 0x52, 0xf1, 0x16, 0x65, 0x9e, 0x64, 0x26, 0xdc, + 0x30, 0xf8, 0xb3, 0x8d, 0x3a, 0xfa, 0x68, 0x11, 0x95, 0xd6, + 0x18, 0xe2, 0xc1, 0x1b, 0xc5, 0x1f, 0xdd, 0xeb, 0x08, 0x42, + 0x28, 0xda, 0x9d, 0x1a, 0xe7, 0x0e, 0x5a, 0xa1, 0xe3, 0xc0, + 0xf8, 0xdb, 0xa2, 0xe1, 0x36, 0x9f, 0xee, 0x23, 0xae, 0x99, + 0xb7, 0xa9, 0xd8, 0xfe, 0x06, 0xc3, 0x22, 0xe7, 0xfa, 0xbf, + 0x48, 0x17, 0xab, 0xc5, 0x28, 0x82, 0xc1, 0xdd, 0x71, 0xc9, + 0xd2, 0xd6, 0x24, 0x20, 0x55, 0x3a, 0x2f, 0xc0, 0x93, 0x04, + 0xb7, 0x73, 0x6c, 0x4c, 0x02, 0xf6, 0xde, 0x93, 0x60, 0x2d, + 0x62, 0x87, 0xbf, 0xee, 0x06, 0x4d, 0x55, 0x46, 0xf0, 0x2a, + 0x45, 0xe1, 0xec, 0x05, 0xad, 0x44, 0xe8, 0xe2, 0x82, 0x5b, + 0xcf, 0xe9, 0xd0, 0x22, 0xe9, 0x6f, 0x30, 0x07, 0x41, 0x36, + 0x49, 0x3e, 0x79, 0x15, 0x10, 0x84, 0x50, 0x77, 0xaf, 0x0d, + 0x92, 0x07, 0x2d, 0xb1, 0x90, 0x60, 0x7c, 0x8c, 0x51, 0x91, + 0x1b, 0xae, 0x77, 0xf0, 0x62, 0xd0, 0x34, 0x70, 0x95, 0x41, + 0x14, 0xcf, 0xcc, 0x17, 0x59, 0x04, 0x73, 0x72, 0x7c, 0xdb, + 0xf7, 0xe0, 0x38, 0x47, 0x6b, 0xdd, 0xcd, 0x5e, 0x81, 0x12, + 0xea, 0x56, 0x98, 0x6c, 0xbd, 0x93, 0xef, 0x9e, 0xc6, 0x0c, + 0x44, 0x9a, 0x83, 0xad, 0x9d, 0xb3, 0xd9, 0x40, 0x3c, 0x2c, + 0xcc, 0x2e, 0xb3, 0x66, 0xf8, 0xb1, 0x50, 0x09, 0xc3, 0x5a, + 0xdb, 0x42, 0x8b, 0x3f, 0x30, 0x4f, 0xf0, 0x99, 0x2e, 0x7c, + 0x1f, 0xbf, 0x0a, 0xa8, 0x20, 0x9a, 0x23, 0x99, 0x29, 0xde, + 0x06, 0xd0, 0x1e, 0xba, 0x96, 0x4f, 0x63, 0x06, 0x22, 0x4d, + 0xa0, 0xb7, 0xaf, 0xb8, 0x8d, 0x20, 0x1e, 0x16, 0x66, 0x17, + 0x1f, 0x14, 0x05, 0x87, 0xa1, 0x69, 0x2a, 0x1c, 0x45, 0x73, + 0xe4, 0xdc, 0xde, 0xe9, 0x20, 0x36, 0xa5, 0xcc, 0x33, 0xa1, + 0xa0, 0x12, 0x45, 0xb4, 0x75, 0x84, 0xd5, 0x7e, 0x60, 0x9e, + 0x23, 0xf1, 0x24, 0xbd, 0xbe, 0x19, 0x87, 0x0b, 0xf5, 0x4e, + 0x2a, 0x91, 0xad, 0x31, 0x7d, 0xe0, 0x4a, 0xbb, 0x88, 0xcf, + 0x43, 0x2f, 0x76, 0x6b, 0x1c, 0x08, 0xb4, 0xa0, 0xc2, 0xd2, + 0x93, 0x46, 0x9a, 0x14, 0xfe, 0x5e, 0xf6, 0xd0, 0x3a, 0xaf, + 0x61, 0xac, 0x6a, 0xa7, 0x50, 0xcb, 0x16, 0x54, 0x4e, 0xcd, + 0x03, 0x7f, 0x6f, 0x31, 0xdc, 0xd1, 0x79, 0x26, 0xe2, 0xbd, + 0x3e, 0x72, 0xf5, 0x08, 0xa7, 0x5f, 0x86, 0x1b, 0x76, 0x74, + 0xa9, 0x37, 0xd4, 0x15, 0x06, 0xc7, 0xaf, 0x85, 0x67, 0xd7, + 0x38, 0xc1, 0xf5, 0x0b, 0x72, 0xd8, 0x42, 0x43, 0x22, 0xdb, + 0x3d, 0xc4, 0x7f, 0x0a, 0x3e, 0xdd, 0xc6, 0xf9, 0xf0, 0x8a, + 0xc3, 0x8b, 0xe5, 0xf3, 0xa9, 0xb1, 0xd8, 0xc0, 0x3d, 0x9c, + 0xe2, 0xc5, 0xec, 0x18, 0x64, 0x2e, 0xea, 0x12, 0xee, 0x20, + 0xe6, 0x83, 0xcb, 0xae, 0x25, 0xe0, 0x5a, 0x62, 0xf1, 0x65, + 0x21, 0x3c, 0x0f, 0x4a, 0x20, 0xbb, 0x7e, 0x24, 0xcf, 0x95, + 0xef, 0xa7, 0xa1, 0xf8, 0x60, 0x5a, 0x1b, 0x01, 0x91, 0x7a, + 0xf3, 0x96, 0x37, 0xd5, 0xfe, 0x1c, 0x0d, 0x64, 0x51, 0x48, + 0xd6, 0xe2, 0x1d, 0xff, 0x4f, 0x18, 0x88, 0xf7, 0xc5, 0x99, + 0xf9, 0xa5, 0x71, 0x80, 0x78, 0x58, 0x5b, 0x5c, 0x69, 0x85, + 0xb0, 0x78, 0xed, 0xad, 0x57, 0xb8, 0x9b, 0x74, 0x76, 0xc5, + 0x5b, 0xfb, 0xf4, 0xef, 0x89, 0x5b, 0x66, 0x81, 0x83, 0x24, + 0x8a, 0xab, 0xea, 0xcb, 0x69, 0xfc, 0xc0, 0xff, 0x46, 0x21, + 0x43, 0xec, 0x3b, 0x3a, 0xb5, 0xfa, 0x6a, 0xeb, 0x03, 0x82, + 0xb6, 0xa3, 0xd2, 0x8a, 0x1c, 0x81, 0xd8, 0x08, 0x02, 0x56, + 0x94, 0x3a, 0x7b, 0x67, 0xfc, 0xe0, 0x68, 0xa6, 0xcd, 0x05, + 0x7f, 0x1c, 0x5b, 0x92, 0xc5, 0x71, 0x9a, 0xbd, 0x24, 0x18, + 0x1f, 0x23, 0x85, 0xb5, 0x76, 0xca, 0x6d, 0x3c, 0xd1, 0xb6, + 0xcc, 0xc1, 0xc5, 0x48, 0xd7, 0x95, 0x17, 0x55, 0xd2, 0x3b, + 0x43, 0x3d, 0x8c, 0x42, 0x07, 0x6a, 0xfb, 0xcc, 0x8e, 0x2e, + 0x64, 0xef, 0x59, 0xd2, 0xd7, 0xca, 0x7a, 0xa9, 0x51, 0x8b, + 0x0a, 0xc1, 0xa1, 0xa6, 0x8d, 0xa3, 0xd5, 0xd4, 0x09, 0x08, + 0x84, 0xef, 0x7b, 0x30, 0x54, 0x01, 0x25, 0x29, 0x9b, 0xb7, + 0x72, 0x44, 0x63, 0xed, 0x74, 0xfa, 0x06, 0x1f, 0x2e, 0x59, + 0x96, 0x8e, 0xa3, 0x32, 0xed, 0xc3, 0xdb, 0x73, 0xb7, 0xf8, + 0x72, 0x3d, 0xa9, 0x9a, 0x49, 0x8e, 0xae, 0x4f, 0x22, 0x43, + 0x60, 0x7b, 0xfc, 0x6a, 0x07, 0x02, 0x2d, 0x28, 0xd1, 0xd5, + 0x54, 0xf0, 0xc7, 0x05, 0x61, 0xaf, 0x5b, 0x41, 0x49, 0x90, + 0x6d, 0xe9, 0x2e, 0xaa, 0x67, 0x76, 0x86, 0x7a, 0xdb, 0x84, + 0x14, 0x41, 0x81, 0x8f, 0xd9, 0x85, 0x69, 0x6b, 0x12, 0x10, + 0xcb, 0x1d, 0xf6, 0x60, 0xa8, 0x02, 0xa6, 0xb3, 0x5c, 0x90, + 0x7c, 0xc3, 0x3c, 0x92, 0x97, 0x39, 0xeb, 0x0c, 0x95, 0x96, + 0x84, 0xae, 0x11, 0xc0, 0x30, 0xdc, 0x7e, 0x35, 0xe2, 0x01, + 0xf7, 0x14, 0x89, 0x8b, 0x2a, 0x78, 0x82, 0xe3, 0x02, 0xeb, + 0x4a, 0x9f, 0x29, 0x9e, 0xef, 0x85, 0xbc, 0xd6, 0x95, 0x5c, + 0xa6, 0xb1, 0x7b, 0x6a, 0x2f, 0xe8, 0x3a, 0x11, 0xff, 0xe7, + 0xb6, 0x39, 0x7d, 0xf2, 0x82, 0xf0, 0x55, 0x69, 0xc2, 0x8f, + 0xca, 0xb7, 0x5d, 0xbb, 0x36, 0xde, 0xe0, 0x40, 0xe9, 0x49, + 0xdf, 0x5f, 0x12, 0x75, 0x5a, 0xa0, 0x3c, 0xc3, 0x40, 0x52, + 0xa8, 0x4c, 0xbb, 0xbd, 0x36, 0x30, 0x9e, 0x27, 0xd9, 0xa0, + 0x3b, 0x06, 0x4e, 0x47, 0x61, 0x50, 0xb6, 0x77, 0xdb, 0xd0, + 0x53, 0x58, 0xe5, 0x86, 0xd3, 0x13, 0x19, 0x0b, 0x7d, 0xc4, + 0x31, 0xf7, 0x34, 0x28, 0x3e, 0xd3, 0x89, 0x64, 0xbd, 0xd8, + 0xad, 0x9b, 0x5c, 0xed, 0xb9, 0xa7, 0x59, 0x17, 0xdd, 0xaa, + 0x16, 0x8e, 0xd2, 0x4a, 0x0f, 0xd0, 0x4b, 0x7f, 0xa4, 0x98, + 0x80, 0xe5, 0xa8, 0x16, 0xd2, 0x56, 0x26, 0x59, 0x01, 0x7e, + 0xd3, 0x61, 0x4e, 0xc7, 0xb5, 0x7f, 0x04, 0x15, 0x94, 0xfd, + 0x52, 0xff, 0x1d, 0xc9, 0xbb, 0x6f, 0xe9, 0xb8, 0x8f, 0xa1, + 0xf6, 0xd4, 0x32, 0x17, 0x75, 0x09, 0x77, 0x10, 0x73, 0xa0, + 0x84, 0x57, 0xf3, 0x70, 0x2d, 0x31, 0x99, 0xd3, 0xc6, 0x88, + 0x22, 0x7f, 0xc0, 0x1c, 0xc7, 0xd8, 0xe7, 0xf8, 0x27, 0x54, + 0x40, 0x55, 0x83, 0x1f, 0x41, 0x07, 0x71, 0xa5, 0x9c, 0x64, + 0x85, 0x6e, 0xbf, 0x54, 0x23, 0xff, 0x74, 0x3b, 0x67, 0xeb, + 0x0b, 0x55, 0x84, 0x08, 0x78, 0xec, 0x43, 0x77, 0x57, 0x63, + 0x2f, 0xc1, 0x28, 0x89, 0x88, 0x34, 0xfb, 0xdf, 0x47, 0x83, + 0x9d, 0x1f, 0xea, 0xc6, 0x8f, 0xa3, 0x12, 0x5d, 0xca, 0x4c, + 0x64, 0x2c, 0x6f, 0x7b, 0x6e, 0x1a, 0x96, 0xcc, 0xa5, 0xf4, + 0x9c, 0xcd, 0x0a, 0x21, 0x72, 0xeb, 0x79, 0x51, 0x4b, 0xc6, + 0xd0, 0x03, 0x11, 0xc7, 0x50, 0xba, 0xb6, 0x5c, 0xa7, 0x10, + 0x0f, 0x0b, 0x33, 0xea, 0xdc, 0x1d, 0x96, 0xab, 0xc6, 0xc5, + 0x66, 0xae, 0x47, 0x8f, 0x81, 0x1e, 0x42, 0xa4, 0x89, 0xc8, + 0x95, 0x30, 0x0c, 0x37, 0xfe, 0x9c, 0xd9, 0x91, 0x4d, 0x05, + 0xb3, 0x52, 0xeb, 0x1e, 0xc1, 0x48, 0x84, 0xf0, 0x3c, 0xeb, + 0x80, 0xa9, 0x3b, 0x90, 0xba, 0x11, 0x3a, 0xd9, 0xc1, 0x66, + 0x43, 0xab, 0xbb, 0x4c, 0x13, 0x88, 0xf4, 0x34, 0xf9, 0x0b, + 0x6e, 0x9c, 0x9a, 0x8c, 0xed, 0xce, 0xdf, 0xf2, 0xc7, 0x1c, + 0x07, 0xd1, 0x35, 0x53, 0x51, 0x7b, 0xb9, 0x93, 0x8c, 0x7a, + 0x13, 0xec, 0x5f, 0x2a, 0x16, 0xaa, 0xcb, 0x10, 0xf0, 0x1b, + 0x86, 0xee, 0xae, 0xc6, 0x5e, 0x41, 0x50, 0xd1, 0xd3, 0x68, + 0xde, 0xf6, 0xdc, 0x34, 0xef, 0x5b, 0x89, 0x2b, 0xfb, 0x59, + 0x14, 0x42, 0xe4, 0x15, 0xf2, 0xa2, 0xdd, 0x89, 0xb3, 0x05, + 0x33, 0x8a, 0xf0, 0x0d, 0x19, 0xe4, 0x2a, 0x30, 0x11, 0x1d, + 0x55, 0xfd, 0x67, 0x51, 0x85, 0x23, 0x32, 0xf1, 0x9f, 0xa5, + 0x29, 0x13, 0x1b, 0x92, 0xaf, 0x6a, 0x56, 0x3a, 0xe0, 0xde, + 0xd6, 0xf9, 0x6e, 0x89, 0xdd, 0x13, 0x71, 0xbf, 0x1f, 0x39, + 0x9b, 0x04, 0xb2, 0xce, 0xf4, 0x9f, 0x57, 0x76, 0xb7, 0x0c, + 0xb4, 0x78, 0x63, 0xaf, 0xd4, 0x24, 0x6d, 0x64, 0x1a, 0xcc, + 0x48, 0xb9, 0xbf, 0x32, 0xcd, 0x16, 0x29, 0x9c, 0x54, 0xe1, + 0x99, 0x62, 0xfa, 0x03, 0x94, 0xb5, 0xe6, 0x20, 0x08, 0x9b, + 0x15, 0xe8, 0x2f, 0x5f, 0x76, 0x06, 0x63, 0xdd, 0xb2, 0x14, + 0x3f, 0x70, 0x6c, 0x04, 0x01, 0x2b, 0x4a, 0x1d, 0xdc, 0xd2, + 0x7e, 0x70, 0x34, 0x53, 0x87, 0xe3, 0xde, 0x0e, 0x59, 0x79, + 0x8f, 0xee, 0xb3, 0x23, 0xcb, 0x9d, 0xa3, 0xf5, 0x10, 0xe9, + 0xd0, 0x7b, 0x16, 0x56, 0x50, 0xc7, 0x41, 0x79, 0xe2, 0x51, + 0x67, 0x6f, 0x48, 0x40, 0xaa, 0x74, 0x5e, 0x43, 0xe5, 0x08, + 0x78, 0x45, 0x80, 0xa4, 0x93, 0x98, 0xb5, 0xb9, 0x6c, 0x60, + 0xff, 0x4e, 0x71, 0x83, 0x76, 0x0c, 0xda, 0xe3, 0x48, 0xc9, + 0xbd, 0xa4, 0x94, 0xe2, 0x40, 0x36, 0xfd, 0xfa, 0x6b, 0xb4, + 0x04, 0x76, 0xb4, 0x0c, 0x03, 0x7d, 0xde, 0x27, 0xa7, 0xb5, + 0x82, 0x90, 0x5c, 0xf5, 0x4a, 0xe6, 0xa1, 0x12, 0x0c, 0x3f, + 0x7f, 0xc4, 0xf6, 0xc2, 0x27, 0x98, 0x0e, 0xb1, 0xf8, 0x0b, + 0x52, 0x20, 0xd9, 0xbf, 0xf2, 0x61, 0x89, 0x14, 0xcc, 0x6d, + 0x46, 0x34, 0x64, 0x16, 0xa8, 0xc0, 0x44, 0x74, 0x97, 0x72, + 0xbe, 0xcd, 0xa2, 0xdb, 0x53, 0x84, 0x72, 0x61, 0x8b, 0x98, + 0xd8, 0x1a, 0x31, 0xd6, 0xf5, 0x13, 0xf3, 0xf5, 0xac, 0xba, + 0x39, 0x22, 0xd0, 0x97, 0x3a, 0x7d, 0x03, 0xee, 0x17, 0xcd, + 0x4b, 0x47, 0x91, 0x25, 0x98, 0xca, 0xac, 0x63, 0xc4, 0x58, + 0xf6, 0x6a, 0x5a, 0xea, 0x64, 0xbf, 0x37, 0x9c, 0x5c, 0xf8, + 0x3e, 0xbd, 0x14, 0x93, 0x40, 0xf7, 0x46, 0xf1, 0x52, 0x7f, + 0x0c, 0x63, 0x3c, 0xb7, 0x17, 0x3e, 0xee, 0xbe, 0x05, 0x54, + 0x10, 0x4d, 0xf0, 0xad, 0xf5, 0x6f, 0x03, 0x68, 0x0f, 0x5d, + 0x7f, 0x2f, 0x7b, 0x68, 0x1d, 0xb6, 0xd1, 0x56, 0x35, 0xb2, + 0x28, 0x84, 0x0b, 0x2a, 0x27, 0x87, 0x82, 0x0e, 0xe2, 0x89, + 0xfb, 0xc8, 0xc9, 0xdc, 0xbd, 0xa8, 0x46, 0x3d, 0xe8, 0x76, + 0xce, 0x15, 0xc0, 0x76, 0xfc, 0x1d, 0xbb, 0x7d, 0x35, 0x94, + 0xe0, 0x41, 0x5b, 0xb0, 0x69, 0x45, 0x0e, 0xa1, 0xd5, 0xa3, + 0x58, 0x3c, 0x97, 0xb7, 0xca, 0x5c, 0xac, 0x3a, 0x3b, 0x83, + 0xcc, 0x9c, 0x7a, 0x96, 0xd9, 0x9c, 0x27, 0xf8, 0x61, 0x75, + 0xed, 0xc4, 0xa2, 0x8b, 0xc3, 0x88, 0x9e, 0xbc, 0xa3, 0x29, + 0xa0, 0x4d, 0x82, 0xf2, 0x07, 0xa2, 0xce, 0xde, 0x90, 0x80, + 0x97, 0xe8, 0xbc, 0x86, 0x09, 0x10, 0xa8, 0x67, 0x69, 0xcb, + 0xa3, 0x9f, 0xf4, 0x8f, 0x25, 0x5e, 0x86, 0x5b, 0x61, 0x07, + 0x26, 0x7b, 0xad, 0xe6, 0xd8, 0x98, 0x04, 0x2f, 0x7f, 0xe5, + 0xc0, 0x5a, 0xc4, 0xcd, 0xbd, 0x1f, 0x0c, 0x9a, 0xba, 0xd8, + 0x36, 0x26, 0x01, 0x7b, 0x6f, 0xa8, 0x30, 0xf7, 0x31, 0xa2, + 0xbe, 0x77, 0x03, 0xc7, 0xb1, 0x8d, 0xb2, 0x2e, 0x79, 0x97, + 0x2c, 0xdf, 0x67, 0x94, 0x1e, 0x63, 0x96, 0xfe, 0x8b, 0xf3, + 0xe3, 0xa1, 0xb9, 0xc8, 0xb2, 0x58, 0xa4, 0x35, 0x93, 0x02, + 0x21, 0x4b, 0x6e, 0x0c, 0x15, 0x91, 0xb6, 0xe7, 0x49, 0xe2, + 0xf7, 0xb9, 0x48, 0x30, 0x3e, 0x46, 0xc9, 0xa9, 0xec, 0x57, + 0xda, 0x78, 0x20, 0xa8, 0x2a, 0xe4, 0xd5, 0xf4, 0xe8, 0x87, + 0x91, 0xfe, 0x44, 0x89, 0xf2, 0x41, 0xbc, 0x6f, 0x9b, 0xe4, + 0x39, 0x6c, 0x21, 0xc0, 0x11, 0x8c, 0xff, 0x62, 0xde, 0x05, + 0x1f, 0x8f, 0x63, 0x9d, 0x85, 0x64, 0x19, 0x45, 0x75, 0xe6, + 0xad, 0x33, 0xe4, 0x7a, 0x91, 0xf7, 0x92, 0xdf, 0x9f, 0x9e, + 0x7e, 0xbb, 0x5e, 0xc6, 0xe8, 0xf9, 0x47, 0xf5, 0x6b, 0xd9, + 0x83, 0xaa, 0x58, 0x93, 0xfb, 0xb2, 0x60, 0x3b, 0x7e, 0xef, + 0xbc, 0xdf, 0xfb, 0x4a, 0x70, 0xc1, 0xcc, 0x58, 0xd5, 0xc3, + 0x07, 0xb1, 0x37, 0x96, 0xc4, 0x5a, 0xd0, 0xa0, 0xf8, 0xca, + 0x61, 0x53, 0xb1, 0xe6, 0xf1, 0x29, 0xb3, 0x32, 0xc4, 0x63, + 0x68, 0xe0, 0xe9, 0x82, 0x28, 0x5d, 0x5b, 0x2e, 0xb2, 0x08, + 0xe6, 0xe4, 0xf8, 0x75, 0xfa, 0x4b, 0x62, 0x2d, 0x68, 0x50, + 0x7c, 0x65, 0xd1, 0xc8, 0xb9, 0x73, 0x99, 0xf5, 0xb8, 0x19, + 0x51, 0x53, 0x64, 0xd7, 0x17, 0x1e, 0xf1, 0xcc, 0x16, 0x2b, + 0x01, 0x5a, 0x0d, 0xfa, 0x39, 0x3d, 0xc9, 0xc8, 0x32, 0x8a, + 0xea, 0x0f, 0x99, 0x66, 0x0b, 0xf4, 0xe1, 0x2d, 0xe7, 0x7d, + 0xfd, 0xff, 0x01, 0x94, 0x25, 0xae, 0xf5, 0x4f, 0x96, 0xa3, + 0x5e, 0x6b, 0xab, 0x2e, 0x53, 0xb9, 0xdc, 0x35, 0x0d, 0xab, + 0x5a, 0x6a, 0x03, 0x8d, 0xb1, 0x3b, 0x50, 0xda, 0x53, 0x25, + 0x01, 0x99, 0x05, 0x8a, 0x8a, 0x24, 0x09, 0xb0, 0x5f, 0xf5, + 0xf3, 0x8d, 0x08, 0x76, 0x57, 0x8e, 0x35, 0xf7, 0xe1, 0x7e, + 0x34, 0xe9, 0xab, 0x6b, 0x0c, 0x71, 0x81, 0xec, 0x83, 0xee, + 0x8f, 0x94, 0x04, 0x21, 0x14, 0x6d, 0x4d, 0x38, 0x0e, 0x61, + 0x6a, 0xa6, 0xa2, 0xf6, 0xb1, 0xe5, 0xdb, 0xf4, 0x26, 0x1b, + 0xbe, 0x54, 0xb0, 0x19, 0x97, 0x80, 0x8c, 0xd8, 0xba, 0x7c, + 0x39, 0xff, 0xb5, 0x4d, 0xc5, 0x47, 0x57, 0xc6, 0x49, 0x2d, + 0x9a, 0x9c, 0x38, 0x59, 0xbf, 0x3f, 0x0a, 0x8a, 0x32, 0x4c, + 0xa9, 0xba, 0x48, 0x80, 0x92, 0x5a, 0xf7, 0xfb, 0x70, 0xb2, + 0xbd, 0x7e, 0x14, 0xd7, 0x64, 0x98, 0x91, 0xb7, 0x90, 0xc3, + 0x18, 0x7e, 0xfe, 0x4b, 0x2f, 0x47, 0x4e, 0xf3, 0x1c, 0xa1, + 0x33, 0x16, 0xa4, 0x40, 0x71, 0xbd, 0x72, 0x84, 0x21, 0x02, + 0x1e, 0x3b, 0x60, 0x6d, 0x65, 0x68, 0x7b, 0xa1, 0x0a, 0xb3, + 0x22, 0x0d, 0x53, 0xb8, 0x2e, 0x48, 0x3e, 0x80, 0x1e, 0x49, + 0xaa, 0xfd, 0x94, 0x06, 0xab, 0x4b, 0x42, 0x57, 0x4a, 0x52, + 0xf5, 0xad, 0xe4, 0x88, 0xc6, 0x19, 0xe8, 0x37, 0x0c, 0x3e, + 0x5c, 0xb2, 0xef, 0xdf, 0x8d, 0x4e, 0xf2, 0x7c, 0xd1, 0xdb, + 0x97, 0x62, 0x51, 0xa4, 0x80, 0x44, 0x4f, 0x5e, 0xb0, 0xf5, + 0xab, 0x18, 0x06, 0xfa, 0x7f, 0x4e, 0x8d, 0xa9, 0xc7, 0xe3, + 0xb8, 0x29, 0x94, 0x0f, 0x81, 0x24, 0x90, 0xb1, 0xbd, 0x64, + 0x59, 0x2c, 0x52, 0xfb, 0xa8, 0x01, 0xf1, 0xc4, 0x37, 0x06, + 0xeb, 0xa9, 0x4f, 0xd3, 0x44, 0xfe, 0x43, 0x38, 0x4d, 0x73, + 0x0d, 0x33, 0x4e, 0xa8, 0x80, 0xaa, 0xc5, 0x3e, 0x9a, 0x70, + 0x1c, 0xc2, 0xd4, 0x8f, 0x87, 0x2f, 0xa1, 0x09, 0x75, 0x2b, + 0x4c, 0x36, 0xbf, 0xa8, 0xdb, 0x77, 0x6d, 0x67, 0x48, 0xeb, + 0x02, 0x41, 0x1e, 0x5d, 0x56, 0xd4, 0x38, 0x0d, 0xd8, 0x43, + 0xd6, 0xdc, 0x37, 0x0d, 0x4b, 0x66, 0xb3, 0x7a, 0x4e, 0x87, + 0x05, 0xf1, 0x39, 0x94, 0xdd, 0xc9, 0x1a, 0x95, 0xb4, 0xd4, + 0x06, 0xd9, 0xa1, 0x76, 0xa0, 0x77, 0xa6, 0x4a, 0x02, 0xf1, + 0x0a, 0xd7, 0xbc, 0x26, 0xe8, 0x44, 0x7a, 0x1a, 0x9d, 0xe4, + 0x37, 0x4e, 0x4d, 0x46, 0x97, 0x67, 0x8e, 0x79, 0x10, 0x54, + 0x15, 0x72, 0x8b, 0x7a, 0x74, 0xa2, 0xa9, 0x7f, 0x22, 0xa5, + 0x79, 0xc1, 0x5e, 0xd6, 0x93, 0xce, 0xd2, 0x55, 0x85, 0xfd, + 0x2b, 0xdd, 0x4a, 0xbc, 0xcf, 0xb6, 0xc2, 0x0e, 0x4c, 0xf6, + 0x9e, 0x65, 0x88, 0x3f, 0x86, 0x70, 0x9a, 0xe6, 0x1a, 0x66, + 0x9c, 0x93, 0xc3, 0x97, 0x49, 0x7c, 0x97, 0xdb, 0x46, 0xa8, + 0xd7, 0x02, 0x36, 0x14, 0xf1, 0xd3, 0x26, 0x0e, 0x4d, 0xaf, + 0xba, 0x22, 0x30, 0xfc, 0x3f, 0x96, 0x5e, 0x8e, 0x9c, 0x25, + 0x38, 0x81, 0x66, 0x2c, 0x8b, 0x80, 0xe2, 0xb9, 0x1e, 0x80, + 0x20, 0x29, 0x54, 0x26, 0xbc, 0xbf, 0x1b, 0x18, 0x4f, 0xf2, + 0x8d, 0x50, 0xfc, 0x03, 0x0f, 0x40, 0x10, 0xf5, 0x2a, 0x13, + 0x5e, 0xbe, 0xec, 0x0c, 0xc6, 0x79, 0xa7, 0x28, 0x7e, 0xe0, + 0x66, 0xc5, 0xa0, 0x8d, 0xc7, 0xbe, 0x09, 0x06, 0x77, 0x78, + 0xb0, 0xbc, 0xfc, 0xd3, 0x8a, 0x0f, 0x77, 0x05, 0x90, 0x51, + 0xb9, 0x8b, 0xeb, 0x07, 0x80, 0x6c, 0x39, 0x37, 0xd6, 0xab, + 0x08, 0xec, 0x40, 0x93, 0x54, 0x0b, 0x69, 0x2b, 0x13, 0xcd, + 0xe1, 0x3f, 0x88, 0xd1, 0x27, 0x82, 0xbb, 0xde, 0xa2, 0xa6, + 0xc8, 0x6d, 0x2e, 0x3c, 0x21, 0x5b, 0x2c, 0x56, 0x02, 0xb4, + 0x1a, 0x37, 0x72, 0x7a, 0xc1, 0xe2, 0xd9, 0xb3, 0x4e, 0x32, + 0xa3, 0x37, 0xbe, 0x2a, 0xf0, 0x9e, 0x3a, 0xfc, 0xd2, 0x94, + 0x6a, 0xfa, 0xdf, 0x49, 0x31, 0x7c, 0x2e, 0x9e, 0x79, 0xc9, + 0x48, 0xb7, 0xae, 0xf3, 0x53, 0xb0, 0x12, 0xbf, 0x5f, 0xed, + 0xa2, 0xe4, 0x9b, 0x27, 0x15, 0xa9, 0xb7, 0xf9, 0xdf, 0x70, + 0x25, 0xbc, 0x54, 0xd2, 0xd5, 0x84, 0xb0, 0xae, 0x7a, 0xa6, + 0xf3, 0x2f, 0x43, 0xcc, 0xd1, 0xe2, 0x13, 0xdc, 0x5f, 0x87, + 0x51, 0x8c, 0xc8, 0x42, 0x39, 0xd1, 0xa4, 0x4c, 0x6c, 0x0d, + 0xf9, 0x6b, 0x9b, 0xe8, 0xd3, 0x5d, 0x86, 0x5e, 0xec, 0xd6, + 0x38, 0x10, 0xab, 0x83, 0x47, 0x67, 0xe5, 0x8c, 0xf7, 0x28, + 0x65, 0xba, 0xcf, 0xbc, 0x1b, 0x6f, 0x70, 0x20, 0x95, 0xc5, + 0x8e, 0xce, 0x09, 0xdb, 0x2d, 0x50, 0xa9, 0xf3, 0x4c, 0x65, + 0x56, 0xd0, 0x62, 0x2c, 0x7b, 0x35, 0x2d, 0x75, 0x32, 0xbe, + 0xfa, 0x4e, 0x3d, 0x57, 0x65, 0xfc, 0x5d, 0x03, 0x2d, 0x1e, + 0x68, 0x5b, 0x35, 0x09, 0x8a, 0x19, 0xe7, 0x33, 0x44, 0x86, + 0xc0, 0xf6, 0x3b, 0xd4, 0x0e, 0x04, 0x5a, 0x50, 0x61, 0x69, + 0xa8, 0x23, 0x4d, 0x0a, 0x81, 0x71, 0x8d, 0xb8, 0x27, 0x19, + 0xb0, 0xfa, 0x5f, 0x15, 0x78, 0x4f, 0x1d, 0x7e, 0x69, 0x4a, + 0xfc, 0xb5, 0xbc, 0x4f, 0x13, 0x31, 0x8e, 0x29, 0xd6, 0x71, + 0xc5, 0x97, 0xb0, 0xe5, 0x35, 0xa7, 0xdf, 0x62, 0xf9, 0x9a, + 0x1a, 0x14, 0x1f, 0x88, 0xa5, 0x32, 0xbf, 0x6c, 0xb7, 0xac, + 0x2e, 0x97, 0x46, 0x6d, 0x8a, 0x69, 0x12, 0x4a, 0xe1, 0x81, + 0xe6, 0x86, 0xf4, 0x35, 0x0e, 0x92, 0x36, 0x60, 0xf8, 0xa0, + 0x28, 0xb2, 0x41, 0xce, 0x93, 0xe0, 0x6d, 0x1e, 0x2c, 0x2f, + 0x3f, 0x44, 0xc3, 0x73, 0xcc, 0x49, 0x83, 0xd9, 0x4d, 0xbf, + 0x12, 0x0c, 0xee, 0xf0, 0xa3, 0xbb, 0x3b, 0x65, 0xd7, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x2c, 0x0b, 0xe6, + 0xcb, 0xcf, 0x88, 0xea, 0xf4, 0x96, 0x3f, 0x28, 0xf8, 0xf2, + 0x9e, 0x62, 0xed, 0x75, 0x8c, 0x93, 0x6d, 0x04, 0x6c, 0x28, + 0x21, 0x65, 0x4c, 0x1c, 0x9a, 0x9d, 0xb7, 0x44, 0xe4, 0xcb, + 0x42, 0x04, 0x3c, 0x76, 0xc0, 0xda, 0xca, 0xd0, 0xf6, 0x81, + 0x14, 0xa5, 0x44, 0x1a, 0x3a, 0x3d, 0x9e, 0x30, 0xd3, 0x2d, + 0x49, 0xf1, 0x31, 0x89, 0xe2, 0xc3, 0xf0, 0xb0, 0xb6, 0xb8, + 0x73, 0x10, 0x04, 0xac, 0xeb, 0x74, 0xf6, 0xce, 0x3b, 0x03, + 0xd0, 0x8f, 0x59, 0x0a, 0xfe, 0x38, 0x5d, 0x6c, 0x1b, 0x13, + 0xe1, 0xdc, 0xd6, 0x54, 0x18, 0x9a, 0xf9, 0x51, 0x5f, 0xda, + 0xe0, 0x82, 0x6e, 0xef, 0x4b, 0xb4, 0x63, 0x83, 0x33, 0x57, + 0xc2, 0xa6, 0xa1, 0x0f, 0x21, 0x52, 0xa5, 0x64, 0x8f, 0xa5, + 0xb8, 0xe3, 0xf8, 0x45, 0x78, 0xe7, 0xed, 0x72, 0x15, 0x18, + 0xe9, 0xef, 0xcb, 0x9f, 0xbf, 0x59, 0x87, 0x75, 0xa6, 0xcb, + 0xe4, 0xc2, 0xd5, 0xf3, 0x73, 0x34, 0x62, 0x6f, 0x29, 0x26, + 0xcf, 0x36, 0xec, 0xe8, 0x91, 0x6e, 0x6b, 0x2a, 0x0c, 0x4d, + 0x9d, 0xc9, 0xce, 0x6d, 0x70, 0x41, 0xb8, 0x33, 0x7c, 0xb9, + 0x28, 0xe5, 0x80, 0x2d, 0x8c, 0x21, 0xa4, 0xfe, 0x18, 0xc6, + 0x78, 0xad, 0xe7, 0xb4, 0x2d, 0x35, 0xe0, 0xa7, 0xb9, 0xfc, + 0x28, 0x6d, 0xc8, 0xf3, 0xe1, 0xad, 0xe3, 0x45, 0xf9, 0x34, + 0x0d, 0x1c, 0xb4, 0x81, 0x05, 0x43, 0x33, 0x75, 0x87, 0x01, + 0x6c, 0xfd, 0x1f, 0x46, 0xfd, 0x21, 0x99, 0xe1, 0xe6, 0x7e, + 0x18, 0x8a, 0x88, 0x1a, 0x6e, 0xb9, 0xe3, 0x5c, 0xe9, 0x92, + 0xb5, 0x98, 0x26, 0xd3, 0x2b, 0x68, 0x31, 0x16, 0xdc, 0xfb, + 0xf7, 0xdb, 0x19, 0x5f, 0x7d, 0x27, 0x09, 0xbe, 0xce, 0x97, + 0x51, 0x72, 0xac, 0xf2, 0xeb, 0xb5, 0xba, 0x9d, 0x8e, 0x38, + 0xf3, 0x5e, 0x47, 0xf9, 0xaf, 0xc7, 0xe7, 0x05, 0x77, 0x22, + 0xb8, 0xed, 0x5f, 0x1b, 0x5d, 0x2b, 0xea, 0x55, 0xe5, 0x5f, + 0x67, 0xaa, 0xc9, 0x39, 0x56, 0x79, 0x94, 0xbb, 0x5d, 0xaf, + 0x47, 0x1c, 0x98, 0x2f, 0x31, 0x68, 0x1a, 0x38, 0xab, 0xc1, + 0x0a, 0x86, 0x66, 0xea, 0xcd, 0x02, 0xd8, 0x39, 0x3e, 0x8c, + 0xd4, 0x37, 0x7d, 0x92, 0x62, 0xf8, 0x5c, 0xff, 0xf2, 0x51, + 0x90, 0xad, 0x9f, 0x25, 0xa6, 0xa3, 0xe8, 0xf4, 0x3d, 0xc0, + 0xca, 0xb4, 0xe7, 0x42, 0xc4, 0x61, 0x0e, 0x8a, 0x46, 0x85, + 0x9d, 0xa5, 0x94, 0xa4, 0x29, 0x99, 0x0b, 0xd3, 0x4f, 0x32, + 0x13, 0x6e, 0x18, 0x7c, 0xb8, 0xa7, 0x1d, 0x7d, 0x1c, 0x6b, + 0x6a, 0xb6, 0x7d, 0xb8, 0x53, 0x3a, 0xa7, 0xce, 0xda, 0xae, + 0x2b, 0xe1, 0x87, 0x69, 0x0e, 0xd4, 0x35, 0x5b, 0xdf, 0x5c, + 0xc8, 0x1d, 0xb2, 0x67, 0x6d, 0x57, 0xf4, 0x91, 0xa2, 0xd5, + 0xcb, 0x23, 0x78, 0x15, 0xc3, 0x91, 0x76, 0xe3, 0xb7, 0x22, + 0x74, 0x71, 0x41, 0xcc, 0x86, 0x95, 0x6d, 0x90, 0x24, 0x85, + 0xbf, 0x52, 0x4a, 0x71, 0x20, 0x1b, 0x9f, 0x7d, 0xd4, 0x5a, + 0x02, 0x3b, 0x36, 0x02, 0xe1, 0xf4, 0x25, 0xef, 0x6e, 0x69, + 0x3f, 0x38, 0x1a, 0xc8, 0xa2, 0x90, 0x6f, 0x07, 0x35, 0x7d, + 0x8e, 0xc5, 0xf9, 0x3e, 0x17, 0x4f, 0xdd, 0x85, 0x24, 0xba, + 0x57, 0x98, 0xc8, 0x58, 0x74, 0x7a, 0xff, 0x60, 0x65, 0x5a, + 0x92, 0x21, 0x62, 0xd1, 0x07, 0x45, 0x23, 0xa3, 0xaf, 0xb3, + 0xc5, 0xf7, 0x4d, 0x4e, 0x1c, 0xcd, 0xbe, 0xfe, 0x05, 0x45, + 0x19, 0x26, 0xb5, 0x5d, 0x24, 0x40, 0x75, 0xee, 0xda, 0xce, + 0x90, 0x15, 0x04, 0x82, 0x3c, 0xba, 0xac, 0x6b, 0x70, 0x1a, + 0x73, 0x86, 0xb2, 0xf2, 0xdd, 0x1f, 0xa5, 0x46, 0x55, 0xf9, + 0x85, 0x29, 0x20, 0x11, 0x63, 0xf6, 0x2c, 0xac, 0xd2, 0xc9, + 0xa3, 0xf0, 0x19, 0x99, 0xae, 0xb3, 0xf5, 0xe8, 0xec, 0x49, + 0xb6, 0x35, 0x2b, 0x1d, 0x99, 0x0f, 0x73, 0xf3, 0x08, 0x5e, + 0xfe, 0x09, 0x43, 0xb4, 0x4b, 0x59, 0xb9, 0x3e, 0x18, 0xf7, + 0x23, 0xd7, 0x45, 0xd5, 0x09, 0x25, 0x91, 0xa1, 0x73, 0x43, + 0x7a, 0xfb, 0x07, 0x49, 0x1b, 0x30, 0x15, 0xd5, 0xa4, 0x21, + 0x2c, 0xca, 0xff, 0xc8, 0x4c, 0x7b, 0x60, 0x33, 0xa5, 0xd9, + 0x74, 0x37, 0x08, 0x2a, 0xeb, 0x39, 0xa4, 0x3d, 0x3a, 0x51, + 0xb5, 0xde, 0x11, 0xb3, 0xdd, 0x81, 0x2f, 0x6b, 0x27, 0xc2, + 0xd1, 0x28, 0x5b, 0xda, 0x8c, 0x68, 0xc8, 0x2c, 0x93, 0x43, + 0x88, 0xe8, 0xed, 0xe4, 0x19, 0xea, 0xdb, 0xe5, 0xda, 0x08, + 0xd8, 0x50, 0x42, 0xca, 0x98, 0x38, 0xf7, 0xf9, 0xad, 0x88, + 0x76, 0x91, 0xb5, 0xff, 0x4c, 0xc4, 0x7d, 0xa4, 0xde, 0x07, + 0x92, 0x19, 0x85, 0x12, 0xd4, 0xd9, 0x39, 0x42, 0xf1, 0x01, + 0x0f, 0xfc, 0x30, 0xd7, 0xd3, 0x34, 0xdc, 0xb1, 0x05, 0xb8, + 0x11, 0xe7, 0x13, 0x2b, 0x7a, 0x43, 0x57, 0xab, 0x0d, 0x84, + 0x4b, 0xc2, 0x1c, 0xd7, 0x8c, 0xc9, 0xf9, 0x89, 0x05, 0x81, + 0xb1, 0x53, 0xa7, 0xb0, 0x8b, 0x6a, 0xe5, 0x04, 0x42, 0x96, + 0xdc, 0x18, 0x2a, 0xe1, 0xee, 0x0a, 0xe3, 0xa2, 0xb1, 0xd5, + 0x15, 0x0e, 0xc3, 0xd8, 0x72, 0x6e, 0x6f, 0x95, 0x10, 0x1b, + 0x57, 0xad, 0xba, 0xb5, 0x6c, 0x7f, 0x03, 0x80, 0x11, 0x92, + 0x7d, 0xbe, 0x24, 0xea, 0xb4, 0x83, 0x9f, 0xf1, 0xad, 0x91, + 0x73, 0x3f, 0x0c, 0x45, 0x44, 0x0d, 0x37, 0xbd, 0x90, 0x2e, + 0x95, 0x49, 0xbd, 0xb2, 0xcd, 0xea, 0x8f, 0x55, 0x0b, 0x47, + 0x69, 0x25, 0xe6, 0x68, 0xc4, 0xde, 0x52, 0x4c, 0x45, 0x12, + 0xe5, 0x58, 0xce, 0x9b, 0x98, 0xa7, 0x04, 0x3b, 0xca, 0x47, + 0xfb, 0x9a, 0x91, 0x3f, 0xff, 0xca, 0xd3, 0x7e, 0xcf, 0xe0, + 0xf7, 0x0f, 0x34, 0xcc, 0xfb, 0xe5, 0x45, 0xed, 0x92, 0xf8, + 0xc3, 0x09, 0x93, 0x2c, 0x67, 0xac, 0x4c, 0xb2, 0x02, 0xfc, + 0x65, 0xc2, 0x9c, 0x4d, 0xa9, 0xfe, 0x3b, 0xa9, 0xbb, 0x9e, + 0x26, 0x62, 0xdf, 0x52, 0x6f, 0xe2, 0x49, 0xed, 0xa3, 0x09, + 0x6a, 0x8d, 0x7b, 0x3a, 0xef, 0x95, 0x4f, 0x49, 0xcc, 0x9f, + 0x8e, 0xdd, 0xc1, 0x3c, 0x84, 0x8b, 0xd1, 0x53, 0x8e, 0x31, + 0x9d, 0x4d, 0x0d, 0x0a, 0xee, 0x44, 0xb3, 0x19, 0xbe, 0x36, + 0xba, 0x56, 0x17, 0xaa, 0xe9, 0x60, 0x18, 0x6e, 0x3f, 0xfb, + 0x71, 0xe1, 0x9a, 0x0a, 0xa5, 0xa4, 0x15, 0x3c, 0x41, 0x90, + 0xc8, 0x5c, 0x17, 0x24, 0x1f, 0x40, 0x0f, 0xc5, 0x55, 0x9f, + 0x4a, 0x03, 0xb4, 0xc4, 0x21, 0xca, 0x7c, 0x50, 0x14, 0x59, + 0xc1, 0x67, 0xa8, 0x70, 0xd7, 0x0f, 0x16, 0xf6, 0xfe, 0x22, + 0x80, 0xd8, 0x6b, 0x6e, 0xfa, 0xe7, 0xc4, 0x33, 0xb8, 0x3d, + 0x27, 0xa2, 0xe3, 0x99, 0xfd, 0x4a, 0x8f, 0x85, 0x4c, 0xac, + 0x2b, 0xcf, 0x9f, 0xe9, 0x34, 0x55, 0xef, 0x8e, 0x70, 0xda, + 0x75, 0xa2, 0x62, 0x61, 0x83, 0x9a, 0xc7, 0x27, 0x0e, 0x87, + 0x5f, 0x7f, 0xe3, 0xc3, 0xed, 0x13, 0xbb, 0xcf, 0x12, 0x20, + 0xec, 0xe1, 0xa9, 0x3d, 0x98, 0x4b, 0xfa, 0x8b, 0x7f, 0x0e, + 0xe7, 0x32, 0xc9, 0x24, 0x6b, 0x71, 0x70, 0x6f, 0x6b, 0x9d, + 0x37, 0xa5, 0x8f, 0xe8, 0xd9, 0xbe, 0xee, 0xfd, 0xac, 0x02, + 0x59, 0x67, 0xe2, 0x35, 0x9c, 0x66, 0x47, 0x17, 0x32, 0x96, + 0xcd, 0x69, 0x8a, 0x65, 0x3d, 0xb5, 0xc9, 0xa4, 0xf1, 0x1e, + 0xe6, 0x25, 0x10, 0xbc, 0x3f, 0x12, 0x86, 0xab, 0x96, 0xb2, + 0xb1, 0x7c, 0x30, 0x2d, 0xcd, 0xdd, 0xa6, 0x77, 0xb8, 0xf0, + 0x84, 0xaf, 0xb0, 0x9b, 0x08, 0x95, 0x68, 0xdc, 0x0b, 0x2b, + 0x5a, 0x06, 0xe0, 0xdf, 0x6f, 0xf2, 0xb2, 0xbb, 0x41, 0x48, + 0x2e, 0x9b, 0x25, 0x73, 0xb1, 0x09, 0x2b, 0xfd, 0xae, 0xec, + 0xad, 0x18, 0xab, 0xf0, 0xc6, 0x9d, 0x6b, 0x48, 0xda, 0xc8, + 0x34, 0x5b, 0xc2, 0x9d, 0xb6, 0x82, 0x92, 0xe3, 0xda, 0x11, + 0x5c, 0x97, 0xce, 0xec, 0xcf, 0xf4, 0x75, 0xcb, 0xa7, 0x27, + 0x79, 0x3e, 0x89, 0x8c, 0xaa, 0x31, 0xc9, 0x52, 0x40, 0x22, + 0xc6, 0x2f, 0x58, 0x9b, 0xa1, 0xd9, 0xa7, 0x5c, 0xf2, 0xed, + 0x58, 0x7d, 0xce, 0xeb, 0x3c, 0xc6, 0xef, 0x3f, 0xd5, 0x25, + 0x2c, 0x97, 0x55, 0x20, 0x23, 0x36, 0xcf, 0x1f, 0x9f, 0x4f, + 0xbc, 0x82, 0xa0, 0x61, 0x65, 0xd0, 0x06, 0xfe, 0xde, 0x62, + 0x7b, 0x61, 0xf2, 0x4c, 0x07, 0xb9, 0x7c, 0xe4, 0x29, 0x10, + 0x8d, 0xbe, 0x2d, 0x03, 0x70, 0x8e, 0xd6, 0x79, 0x59, 0xbc, + 0xc1, 0x24, 0x17, 0xac, 0xf3, 0xd8, 0xb9, 0xe5, 0x3e, 0x28, + 0x0a, 0xcd, 0x81, 0xd2, 0x54, 0x38, 0x8a, 0xe6, 0x0b, 0x7b, + 0x7f, 0x11, 0x40, 0x6c, 0x71, 0xfb, 0x4e, 0x33, 0xc2, 0xea, + 0x19, 0x4b, 0x87, 0xd5, 0x45, 0xd3, 0xff, 0xbb, 0x85, 0x52, + 0x3f, 0xbc, 0x2f, 0x63, 0x74, 0x9d, 0xc2, 0x9b, 0xd4, 0x8d, + 0xa0, 0x55, 0x2c, 0xa8, 0x9c, 0x59, 0xf6, 0x74, 0x1d, 0xe9, + 0x9e, 0x92, 0x5b, 0xfd, 0xdf, 0x79, 0x41, 0x78, 0xcb, 0xd5, + 0x61, 0xa6, 0xce, 0xa2, 0xc9, 0x46, 0x64, 0x21, 0xfd, 0x89, + 0x52, 0x26, 0x36, 0xe7, 0x9d, 0xd4, 0xac, 0x74, 0x38, 0xd6, + 0xd4, 0xaf, 0xfa, 0xb3, 0xa6, 0x74, 0x8d, 0x5f, 0x77, 0x9f, + 0x56, 0x01, 0xcd, 0xd2, 0x33, 0x83, 0x50, 0xa7, 0x82, 0x5f, + 0xe5, 0x03, 0xda, 0x3c, 0x58, 0x5e, 0x7e, 0x88, 0x45, 0xe6, + 0x87, 0x8f, 0x53, 0xda, 0x5c, 0x78, 0x42, 0xb6, 0x58, 0xac, + 0x04, 0xab, 0x34, 0x6e, 0xe4, 0xf4, 0x42, 0x78, 0x1e, 0x94, + 0x40, 0xb5, 0xfc, 0x48, 0x5d, 0xe9, 0x1d, 0x8d, 0x81, 0x33, + 0xc0, 0xb4, 0x8c, 0xda, 0xd7, 0xd2, 0x24, 0x94, 0x01, 0xc1, + 0x0f, 0xcf, 0x2b, 0x6a, 0x1c, 0xe7, 0x6c, 0xc0, 0x26, 0x56, + 0xf4, 0x86, 0xae, 0x95, 0x1a, 0xcb, 0x96, 0x47, 0x38, 0x6d, + 0xdb, 0x51, 0x31, 0xd1, 0x7a, 0xae, 0xca, 0x3b, 0xba, 0x06, + 0x5a, 0x3c, 0xd0, 0xb6, 0x6a, 0x12, 0xd7, 0x32, 0x0d, 0x66, + 0xac, 0x72, 0xfd, 0x36, 0xf1, 0x60, 0xe9, 0x46, 0x9e, 0x31, + 0x6f, 0xe3, 0xee, 0xa6, 0xd0, 0xaf, 0x98, 0x9b, 0x56, 0x5d, + 0xfd, 0x11, 0x68, 0xaa, 0x1d, 0xdf, 0xe0, 0x77, 0xea, 0x87, + 0xc4, 0xc2, 0x79, 0xd1, 0xa5, 0x0a, 0x66, 0xd7, 0x23, 0x1a, + 0x32, 0x0b, 0x54, 0x60, 0x22, 0x3a, 0xaa, 0x39, 0x8b, 0xb0, + 0x2c, 0x1e, 0xaa, 0xba, 0x65, 0x2e, 0x56, 0x1d, 0xfc, 0xa0, + 0x66, 0x4e, 0x3d, 0x4b, 0x58, 0xed, 0xaa, 0x40, 0x46, 0x6c, + 0x5d, 0x3e, 0xfd, 0x9e, 0xbb, 0xc7, 0x83, 0xc2, 0xca, 0x63, + 0x56, 0x39, 0x9f, 0x1b, 0x99, 0x30, 0x95, 0x23, 0x4f, 0xf9, + 0xd6, 0x90, 0x77, 0x53, 0x68, 0xb6, + }, + { + /* 9 */ + 0xa8, 0x2c, 0x9d, 0x1e, 0xd9, 0x7e, 0xa9, 0xb3, 0xc0, 0x01, + 0x6b, 0x3d, 0xc4, 0xa3, 0x83, 0xb4, 0xb4, 0x6b, 0xa4, 0x9d, + 0x6c, 0x77, 0x14, 0x4c, 0x17, 0xa0, 0x80, 0x59, 0xd2, 0xde, + 0x39, 0xaa, 0x96, 0x95, 0xc3, 0xd6, 0x72, 0x8f, 0xd1, 0xd8, + 0xb2, 0x47, 0xed, 0x28, 0x6d, 0x22, 0x15, 0xce, 0x1e, 0xeb, + 0x9c, 0x39, 0x0a, 0xe9, 0x43, 0xcd, 0x63, 0x5d, 0x9a, 0x2f, + 0xd4, 0x54, 0xa5, 0x9d, 0x8a, 0xd2, 0xfa, 0x55, 0xc7, 0x86, + 0x6c, 0x27, 0x65, 0xe6, 0x06, 0x4c, 0x7b, 0x5f, 0xaf, 0xd0, + 0xf5, 0x99, 0x50, 0xe1, 0x53, 0x37, 0x1d, 0xda, 0x6f, 0xe8, + 0x61, 0xe9, 0x49, 0x42, 0xb1, 0x07, 0x9f, 0x36, 0xa1, 0x26, + 0x75, 0xf9, 0xd0, 0x09, 0x7d, 0x4f, 0x33, 0x03, 0x82, 0x73, + 0x87, 0x27, 0xa5, 0x14, 0x76, 0x59, 0x63, 0x0b, 0x97, 0x06, + 0xa4, 0x32, 0x57, 0x80, 0x6c, 0xa0, 0x2f, 0x98, 0x13, 0xd3, + 0x77, 0x7e, 0xb0, 0x9c, 0x7d, 0x78, 0x07, 0x6e, 0xa6, 0x92, + 0x7c, 0x57, 0x09, 0xb1, 0x39, 0xd8, 0xc1, 0x98, 0x17, 0x62, + 0xc6, 0x24, 0x37, 0xff, 0xcc, 0x0c, 0x4d, 0x0f, 0x59, 0x9c, + 0xac, 0xb7, 0x14, 0xa9, 0x64, 0x7d, 0x96, 0xd7, 0x6b, 0x3a, + 0x89, 0xab, 0x83, 0xf1, 0xbd, 0x71, 0x2d, 0x6a, 0x29, 0xb6, + 0x1b, 0x6d, 0x05, 0x13, 0x75, 0x28, 0x20, 0x87, 0xd5, 0xd6, + 0x9f, 0xcb, 0x83, 0x71, 0x98, 0xa5, 0xc0, 0xf0, 0x6d, 0xf6, + 0xaa, 0xee, 0xd8, 0x67, 0x94, 0x0e, 0x3d, 0x39, 0x86, 0xbc, + 0xa2, 0x4f, 0xc3, 0x83, 0x2d, 0x8b, 0x5b, 0xab, 0xe3, 0x35, + 0xb2, 0xa9, 0xed, 0x5c, 0xb9, 0x53, 0x4f, 0xda, 0xd6, 0x02, + 0x2a, 0xf9, 0x73, 0x93, 0xbc, 0xe4, 0x7a, 0xdd, 0x95, 0x86, + 0x76, 0xe8, 0xc8, 0x44, 0x93, 0xc7, 0x70, 0x2c, 0xc5, 0x06, + 0xb9, 0x8e, 0xdd, 0x4c, 0x8c, 0x3e, 0x0f, 0x94, 0x4e, 0xfd, + 0x05, 0x95, 0xc0, 0x87, 0xd0, 0xcf, 0x4d, 0xf6, 0x6a, 0x2a, + 0xb3, 0xaf, 0x5a, 0xd4, 0x52, 0xaf, 0x36, 0xda, 0x0a, 0x26, + 0xea, 0x50, 0x40, 0xcd, 0x69, 0x6f, 0xfd, 0x55, 0xa0, 0xd9, + 0x4c, 0xb3, 0x60, 0x78, 0xd7, 0x7b, 0x55, 0x77, 0x6c, 0xd2, + 0x4a, 0x07, 0xff, 0xfd, 0x92, 0x0e, 0x4a, 0x61, 0xcf, 0x8c, + 0xee, 0xbc, 0x19, 0x7c, 0x0f, 0xbe, 0x2a, 0x70, 0x2b, 0x0b, + 0xe2, 0xd1, 0xae, 0x28, 0x5e, 0xa8, 0x5f, 0xc6, 0xc3, 0xbd, + 0x25, 0xed, 0x72, 0x47, 0x86, 0x73, 0x34, 0xe0, 0x2a, 0xdf, + 0xad, 0x17, 0xf8, 0x91, 0x53, 0xcc, 0xf0, 0xb1, 0xe5, 0x0c, + 0xf5, 0xb0, 0xee, 0xbf, 0xf6, 0x32, 0x5a, 0xad, 0x1e, 0x6a, + 0xfd, 0xf0, 0xc0, 0x94, 0xbb, 0xb1, 0xc4, 0xff, 0x6d, 0xce, + 0x6e, 0x97, 0x9a, 0x5d, 0x73, 0x9c, 0x57, 0x1e, 0x18, 0xf3, + 0x2f, 0xbf, 0xf9, 0xc6, 0x1a, 0x70, 0x15, 0x8e, 0xb7, 0xea, + 0x7c, 0xa9, 0xc8, 0x66, 0x78, 0xb9, 0x93, 0x06, 0x9b, 0x58, + 0x24, 0xc9, 0x4b, 0x46, 0x1c, 0x1b, 0x04, 0xc2, 0xba, 0x20, + 0xfe, 0xac, 0x3a, 0x87, 0x0d, 0x22, 0x1f, 0xbd, 0x2f, 0x64, + 0xb4, 0x99, 0x3c, 0xd4, 0x39, 0x23, 0x43, 0xeb, 0xb5, 0xa1, + 0x4b, 0x3d, 0xd2, 0xaa, 0x0d, 0x40, 0x4e, 0xbc, 0x98, 0x33, + 0x3b, 0x4a, 0x37, 0xca, 0xd0, 0x19, 0x4d, 0x06, 0x18, 0xdc, + 0xb0, 0x34, 0x08, 0x0a, 0x82, 0x9b, 0x7c, 0x9a, 0x09, 0xf2, + 0x51, 0x2f, 0x84, 0xdb, 0x37, 0x1a, 0x3c, 0x38, 0xac, 0x87, + 0x79, 0xba, 0xbd, 0x4e, 0x58, 0x3e, 0x46, 0xd0, 0x04, 0x93, + 0x6a, 0xaf, 0xf1, 0xc7, 0x26, 0xce, 0xcd, 0xd3, 0x12, 0xa7, + 0x52, 0xea, 0xcb, 0x31, 0x36, 0x20, 0x3f, 0xef, 0xed, 0x95, + 0x15, 0x81, 0x07, 0x72, 0x28, 0x38, 0x5f, 0xd1, 0xc8, 0x74, + 0x78, 0xda, 0xae, 0x1b, 0xb1, 0x13, 0xdb, 0x9d, 0x68, 0xe5, + 0xdf, 0xc6, 0xf8, 0xe0, 0x41, 0xd8, 0xa2, 0xf2, 0x10, 0x29, + 0x61, 0x99, 0xb1, 0x0c, 0xfc, 0x53, 0xe9, 0xec, 0x0e, 0x1d, + 0xdf, 0x8b, 0xf8, 0x92, 0x46, 0x93, 0x6b, 0x2c, 0x83, 0xd3, + 0xb7, 0xd9, 0x3d, 0xf1, 0xab, 0xa9, 0x7f, 0x12, 0x47, 0x4b, + 0x6c, 0x98, 0xdd, 0xca, 0x24, 0x2d, 0x0c, 0x85, 0x0d, 0x60, + 0xc1, 0x37, 0x4e, 0x4a, 0x17, 0x66, 0xbc, 0x9e, 0x75, 0x30, + 0xd5, 0x71, 0x6a, 0x84, 0x82, 0xd6, 0x87, 0xb6, 0x5c, 0x7a, + 0x45, 0xe3, 0x68, 0x03, 0x54, 0x7d, 0x99, 0x2e, 0x33, 0xe1, + 0xa6, 0x5b, 0x23, 0xa1, 0x09, 0x18, 0x29, 0xa3, 0x0b, 0x0f, + 0xc7, 0x4a, 0xb8, 0x96, 0xff, 0xe3, 0x7b, 0xf4, 0xaf, 0x60, + 0x2d, 0x78, 0x8d, 0x6a, 0x3e, 0xb9, 0x5e, 0xc8, 0xab, 0xf1, + 0x78, 0x6b, 0x72, 0x46, 0x86, 0x15, 0xa9, 0x81, 0x96, 0x7a, + 0xfe, 0x96, 0x97, 0xab, 0xeb, 0xa1, 0xe2, 0x39, 0x14, 0x1c, + 0xce, 0x89, 0x64, 0x3a, 0x3c, 0x6d, 0xa9, 0x7a, 0x2e, 0x43, + 0x67, 0x0e, 0xd6, 0xaa, 0x9a, 0x7f, 0xb2, 0xf9, 0xa5, 0x56, + 0x6d, 0x14, 0x28, 0xa7, 0x13, 0x5c, 0x18, 0x1e, 0x45, 0x6e, + 0x84, 0x6d, 0x1b, 0xd5, 0xf3, 0x71, 0x4f, 0xae, 0x7c, 0xb1, + 0xbc, 0x53, 0x95, 0x21, 0xf0, 0xd6, 0xe4, 0x8c, 0xcf, 0x2a, + 0x91, 0xc1, 0xef, 0xf4, 0xf2, 0xf8, 0xcf, 0xb1, 0xef, 0xa4, + 0xa3, 0x95, 0x2a, 0x51, 0x2b, 0xf0, 0xad, 0xcc, 0x7e, 0xe1, + 0xbf, 0x64, 0x63, 0xd7, 0xd4, 0xe1, 0xeb, 0xaf, 0x6c, 0x54, + 0x2f, 0x39, 0xff, 0xa6, 0xb4, 0xc0, 0xf4, 0xcf, 0xe3, 0xbc, + 0xed, 0x47, 0x62, 0xc3, 0x35, 0x96, 0xb8, 0x2d, 0x28, 0xb7, + 0x5f, 0xa7, 0xcb, 0x20, 0x0e, 0x29, 0xf8, 0xc6, 0x65, 0xb1, + 0x1d, 0xae, 0xe7, 0xfc, 0xe0, 0xc3, 0x27, 0x7d, 0x06, 0x37, + 0x2c, 0x0d, 0x02, 0xe3, 0xc1, 0x56, 0x1f, 0xc7, 0x93, 0xdd, + 0x85, 0x7b, 0x21, 0x46, 0xf8, 0xa1, 0xbb, 0xa6, 0xe9, 0x42, + 0x23, 0x6f, 0x0b, 0xdb, 0x5d, 0x54, 0xe1, 0x41, 0x1d, 0x2b, + 0xbd, 0xc8, 0xc6, 0x6d, 0x6b, 0x01, 0x15, 0x9d, 0xd8, 0xa8, + 0x5e, 0x72, 0x3d, 0x8f, 0xab, 0x43, 0x75, 0x12, 0xde, 0xa3, + 0x92, 0x57, 0xf1, 0x07, 0x2b, 0x84, 0x11, 0x01, 0x7e, 0x90, + 0x7d, 0x1d, 0x03, 0xfa, 0x16, 0xe7, 0x01, 0x90, 0x81, 0x2b, + 0xee, 0x82, 0xa8, 0x8f, 0xa3, 0xdc, 0xf1, 0x23, 0x4c, 0xca, + 0x1f, 0x3b, 0x85, 0x35, 0x37, 0x23, 0x1c, 0x7b, 0xdd, 0x0d, + 0x33, 0x9f, 0x24, 0x81, 0x4b, 0xab, 0x80, 0x6b, 0x39, 0xa6, + 0x89, 0x6c, 0x59, 0xc2, 0x97, 0x14, 0xd7, 0x11, 0xeb, 0x67, + 0xc0, 0x2f, 0xc9, 0x63, 0x40, 0x50, 0x9a, 0x52, 0x66, 0x5a, + 0x48, 0x9c, 0xcd, 0xbb, 0xaa, 0x17, 0x04, 0x9b, 0x89, 0xb7, + 0xbd, 0x03, 0x3f, 0x64, 0xab, 0x3b, 0xe2, 0x96, 0x47, 0x52, + 0x3e, 0xc5, 0xb3, 0x0a, 0x3b, 0xcd, 0xd0, 0xe4, 0xaa, 0x03, + 0x52, 0x19, 0xca, 0x40, 0x36, 0x50, 0xf6, 0x4c, 0xb6, 0xc7, + 0x01, 0x27, 0xd3, 0x97, 0xea, 0x7e, 0xa3, 0x5c, 0xf1, 0x12, + 0x10, 0xf7, 0x26, 0x29, 0x51, 0xdb, 0x95, 0xe5, 0x8e, 0x4c, + 0xf5, 0xc5, 0x91, 0xa4, 0xef, 0xad, 0x44, 0x17, 0x70, 0x3f, + 0xeb, 0x72, 0xcc, 0xd8, 0x59, 0xde, 0x5e, 0x17, 0x0c, 0xb5, + 0xfb, 0xc6, 0x9d, 0x16, 0x14, 0x9a, 0x98, 0x57, 0x3e, 0x76, + 0xc9, 0x6a, 0x6e, 0x46, 0x38, 0xf6, 0x79, 0x1a, 0x66, 0xfd, + 0x48, 0xc1, 0x23, 0xa8, 0xd4, 0x16, 0xa0, 0x88, 0xba, 0x8d, + 0xff, 0x99, 0xb4, 0xb5, 0xde, 0x09, 0xc2, 0xc4, 0xab, 0xd6, + 0x8b, 0xf9, 0xd8, 0xee, 0x28, 0x98, 0x2e, 0x83, 0xc3, 0xb2, + 0x67, 0x7f, 0x72, 0x97, 0xb2, 0x5c, 0x88, 0x90, 0x6e, 0x94, + 0xd5, 0x1a, 0x08, 0x67, 0x13, 0x84, 0x57, 0xa5, 0x18, 0xec, + 0x99, 0x01, 0x8d, 0x2b, 0x77, 0x1a, 0x11, 0x5f, 0x62, 0x88, + 0xa0, 0xde, 0x07, 0x08, 0xa6, 0x61, 0x89, 0x28, 0xec, 0xb2, + 0xc6, 0x16, 0xed, 0x0c, 0x8b, 0x64, 0xae, 0xc3, 0xd8, 0x83, + 0x5e, 0xf3, 0xdf, 0x92, 0xe6, 0x07, 0xf4, 0xc9, 0xa6, 0x86, + 0x5f, 0x79, 0x0b, 0x77, 0x78, 0x1a, 0xe1, 0x2a, 0x0d, 0x38, + 0xeb, 0x47, 0xba, 0x75, 0x3e, 0xb5, 0x64, 0x33, 0x3c, 0xbd, + 0xa8, 0x03, 0xac, 0x2c, 0x31, 0x2d, 0x10, 0x35, 0xae, 0x64, + 0xb8, 0xec, 0xa2, 0x89, 0xcb, 0xe3, 0xc3, 0xab, 0x25, 0xd5, + 0x70, 0xdf, 0xe4, 0x49, 0x91, 0x24, 0xb1, 0x7a, 0xda, 0xc1, + 0x2a, 0x53, 0x58, 0x37, 0xad, 0x78, 0x73, 0x25, 0xf2, 0xae, + 0x90, 0xb4, 0x30, 0x51, 0x34, 0x43, 0x82, 0xdc, 0xfb, 0xeb, + 0x5c, 0x5b, 0x1d, 0x11, 0x8a, 0xde, 0x0b, 0x79, 0xc2, 0xe6, + 0x8d, 0xdf, 0x32, 0xa0, 0x77, 0x88, 0x54, 0xbe, 0x8d, 0xb3, + 0x65, 0x05, 0x7b, 0x15, 0xd2, 0x68, 0x20, 0x5f, 0x4c, 0x55, + 0x9f, 0xd1, 0x60, 0x36, 0xf1, 0x02, 0xd9, 0x56, 0xee, 0x34, + 0x22, 0xbe, 0xc4, 0xd3, 0x83, 0x7f, 0x0e, 0x10, 0x8f, 0xc2, + 0x7d, 0xe7, 0x0f, 0x0e, 0x2b, 0x51, 0x8f, 0xcf, 0xbe, 0xf2, + 0x16, 0xee, 0xf0, 0x34, 0x01, 0x54, 0x17, 0x48, 0xfe, 0xc9, + 0x0d, 0x9f, 0x42, 0x1c, 0xac, 0x55, 0x44, 0x04, 0x3b, 0x05, + 0x37, 0x74, 0x2c, 0x3c, 0x9a, 0xeb, 0xa5, 0x1d, 0x7a, 0x0a, + 0x2f, 0x56, 0xf9, 0x43, 0xb4, 0x23, 0x71, 0x6b, 0x35, 0xb6, + 0x99, 0x82, 0x13, 0x67, 0x87, 0x88, 0x09, 0xb2, 0x29, 0x75, + 0x84, 0xf9, 0x1b, 0x10, 0x88, 0x7e, 0x5f, 0xef, 0x78, 0x66, + 0x92, 0x15, 0xd1, 0x1a, 0x77, 0x07, 0xb9, 0x76, 0xb0, 0x53, + 0x67, 0x97, 0x1a, 0x80, 0x9c, 0xbb, 0xf3, 0x66, 0x76, 0x94, + 0x6e, 0x57, 0x63, 0x32, 0x9a, 0x0c, 0xe1, 0x2b, 0xb8, 0xcf, + 0x5f, 0x38, 0xde, 0xed, 0x2d, 0x3f, 0x8d, 0x62, 0xd1, 0x9b, + 0x77, 0x50, 0xb5, 0x3d, 0x17, 0xc0, 0xd2, 0x07, 0x6b, 0x55, + 0x4d, 0xde, 0x59, 0x9d, 0xb3, 0x2b, 0xd7, 0x0a, 0x64, 0x6d, + 0x0c, 0x67, 0x9d, 0x2b, 0x72, 0x4d, 0x98, 0x16, 0xc6, 0xd8, + 0xc0, 0xee, 0x6b, 0x2f, 0xb1, 0xa6, 0x9e, 0x77, 0x6f, 0x04, + 0x54, 0x31, 0xe6, 0xe5, 0xbb, 0x0b, 0xf4, 0x79, 0xe9, 0xcf, + 0x08, 0xf5, 0xd1, 0xad, 0xb9, 0x06, 0x7e, 0xc8, 0x95, 0x76, + 0x07, 0xef, 0x8e, 0xa4, 0x7c, 0x49, 0xe5, 0xb0, 0x31, 0x78, + 0xe2, 0x3b, 0xe1, 0x89, 0x86, 0x04, 0x6f, 0xf4, 0x96, 0xc9, + 0x49, 0x95, 0x1c, 0x47, 0x39, 0x83, 0xb5, 0x09, 0xbd, 0xff, + 0xd7, 0xa1, 0xeb, 0x64, 0x16, 0x7d, 0xba, 0x1e, 0x6b, 0xf9, + 0x42, 0x9a, 0x98, 0xbe, 0xb2, 0xca, 0x48, 0xd9, 0x8b, 0x2e, + 0xaa, 0xc4, 0xd8, 0x80, 0x5c, 0xe3, 0x7e, 0xa2, 0x34, 0x39, + 0xcb, 0x70, 0xf5, 0x97, 0xd3, 0x10, 0xec, 0x14, 0xdc, 0x13, + 0xa3, 0x23, 0x5a, 0x54, 0x61, 0xe8, 0x56, 0x50, 0xbb, 0xf5, + 0xc4, 0x5d, 0xe9, 0xdb, 0x0e, 0xde, 0x7a, 0x86, 0x90, 0x5e, + 0x97, 0xc2, 0x31, 0x80, 0xfb, 0x4b, 0x5c, 0xf7, 0x14, 0xba, + 0xce, 0xb2, 0xe8, 0x88, 0xda, 0x3f, 0x58, 0x4e, 0xdf, 0x3c, + 0xe2, 0x37, 0x53, 0x49, 0x3e, 0xca, 0xe5, 0xb9, 0xda, 0x5f, + 0xdc, 0xed, 0xf7, 0xba, 0xe6, 0xfb, 0xae, 0x3c, 0x30, 0x25, + 0x5e, 0xbd, 0x31, 0x4f, 0xd7, 0x67, 0x37, 0xaa, 0x4d, 0xcf, + 0xd8, 0x4e, 0xca, 0x0f, 0x0c, 0x98, 0xf6, 0xbe, 0x9d, 0x63, + 0xfa, 0x0d, 0x1e, 0x1c, 0x56, 0xa2, 0xdd, 0x5d, 0xbf, 0x27, + 0x2c, 0x1f, 0x23, 0x68, 0x02, 0xa8, 0xa7, 0xb8, 0xd3, 0xe3, + 0xdc, 0xeb, 0x69, 0x34, 0x10, 0xce, 0x26, 0xcb, 0xae, 0x89, + 0x30, 0x1b, 0x7f, 0x4b, 0xaa, 0xb4, 0x94, 0xb1, 0x71, 0xfd, + 0x0a, 0x0e, 0x67, 0xa5, 0x32, 0x1d, 0x1e, 0xd7, 0xe4, 0xe6, + 0x82, 0x25, 0x5c, 0x4b, 0x9e, 0x90, 0xdc, 0x7a, 0xb6, 0x30, + 0xf7, 0x3c, 0xa7, 0x35, 0x8f, 0x1f, 0xc0, 0xbf, 0xc4, 0xf5, + 0x2c, 0x5a, 0x94, 0xa3, 0x3d, 0x1e, 0x5d, 0xf8, 0x7f, 0xb5, + 0xa1, 0x8f, 0xff, 0xee, 0xde, 0x08, 0xa8, 0x62, 0x0f, 0x09, + 0xb5, 0x16, 0x2b, 0xf2, 0x11, 0x5d, 0x52, 0x21, 0x83, 0x02, + 0x8f, 0xdc, 0x74, 0xee, 0x7f, 0x26, 0x47, 0x22, 0xe7, 0xcb, + 0x81, 0x1c, 0xec, 0x13, 0x53, 0x88, 0xe5, 0x4d, 0xe0, 0x58, + 0x49, 0x0c, 0xb1, 0xdf, 0x79, 0x98, 0xdb, 0x7c, 0x3b, 0x74, + 0x64, 0x22, 0xa8, 0x82, 0x38, 0x16, 0x83, 0x03, 0xbd, 0x47, + 0x8f, 0x26, 0x46, 0x1f, 0xa2, 0x75, 0xe9, 0x09, 0xdf, 0x98, + 0x29, 0x49, 0xe1, 0x8b, 0x1d, 0x99, 0x88, 0x2e, 0xe0, 0x7e, + 0x5f, 0x19, 0x68, 0x45, 0x35, 0xa9, 0x4a, 0x5b, 0x1b, 0x15, + 0x7b, 0x9f, 0x4f, 0xc8, 0x2d, 0x30, 0x50, 0x8d, 0x26, 0xb8, + 0x30, 0x3c, 0x8a, 0xdc, 0xcb, 0xda, 0x36, 0x69, 0x25, 0xe2, + 0x9e, 0x9f, 0x4a, 0xfd, 0x33, 0x36, 0x87, 0xd6, 0xf6, 0x75, + 0x03, 0xbc, 0x4e, 0xd0, 0xb6, 0xe4, 0x05, 0xc7, 0x57, 0xec, + 0xb9, 0xe8, 0x8c, 0xaf, 0x34, 0x93, 0x8e, 0x63, 0x7c, 0x70, + 0xc1, 0x6c, 0x51, 0x79, 0x55, 0x40, 0x1c, 0x52, 0x33, 0x4f, + 0xca, 0xa1, 0x3a, 0x9f, 0x0d, 0x3b, 0x03, 0x45, 0x4e, 0xfa, + 0xdc, 0x68, 0xf0, 0xe0, 0xf5, 0x59, 0x27, 0xad, 0xb1, 0xfb, + 0xa3, 0xf8, 0xdb, 0xc6, 0x10, 0x09, 0xde, 0xc4, 0x55, 0x5a, + 0x4a, 0xb9, 0xd9, 0x9f, 0x05, 0x07, 0xd2, 0xb3, 0x19, 0xef, + 0x0f, 0x8a, 0x9d, 0x9a, 0x04, 0x9c, 0xca, 0x19, 0x2e, 0x3b, + 0xc9, 0xb3, 0x42, 0x48, 0x40, 0x5a, 0x98, 0xa4, 0xe7, 0x1c, + 0x94, 0xc2, 0x5d, 0xdb, 0x1f, 0xbb, 0x32, 0xf8, 0x1e, 0xbf, + 0x54, 0xe0, 0x56, 0x16, 0xaf, 0x4d, 0x02, 0x4e, 0x65, 0xed, + 0x17, 0xfc, 0x85, 0xb8, 0x21, 0x24, 0x20, 0x2d, 0x4c, 0x52, + 0x97, 0xc3, 0x70, 0x8b, 0xcc, 0xff, 0xae, 0xc1, 0xe8, 0x39, + 0x34, 0xec, 0x0c, 0xd7, 0xfb, 0x6e, 0xaa, 0x80, 0x38, 0xa4, + 0x66, 0x9e, 0x57, 0x81, 0x74, 0xfd, 0x1a, 0x76, 0x06, 0x8a, + 0x9c, 0x37, 0x26, 0x65, 0xee, 0xfc, 0xa3, 0xfb, 0xfa, 0xf0, + 0x0e, 0xdc, 0x8f, 0xe7, 0xf8, 0xae, 0x12, 0xa1, 0x4d, 0x9c, + 0xac, 0x66, 0x3b, 0x45, 0x48, 0x3a, 0x46, 0x05, 0x04, 0xc9, + 0x52, 0x6a, 0xca, 0x21, 0x54, 0x16, 0xaf, 0x0f, 0x8d, 0x3f, + 0xb5, 0xb8, 0x60, 0xe1, 0xd4, 0xff, 0x62, 0xb0, 0xa0, 0x5a, + 0xf7, 0x35, 0xf5, 0x5b, 0xec, 0xd7, 0xe3, 0xe8, 0xdb, 0x14, + 0x10, 0xa2, 0x8b, 0x6b, 0xae, 0x84, 0xd9, 0xa5, 0xca, 0x0a, + 0xf6, 0x2a, 0x67, 0xd0, 0x40, 0xbe, 0x98, 0xaa, 0xfd, 0x61, + 0xc0, 0x6c, 0x84, 0x10, 0x07, 0xf5, 0x7c, 0x63, 0xd3, 0xb9, + 0xef, 0x57, 0x92, 0x7e, 0x70, 0x80, 0xf2, 0xdf, 0x41, 0xf2, + 0xf4, 0x7c, 0x3f, 0x40, 0x09, 0x96, 0x78, 0x48, 0xe1, 0xb0, + 0x9b, 0x9c, 0x88, 0xad, 0x82, 0x27, 0x2b, 0xf8, 0x7e, 0x80, + 0x12, 0xef, 0xf0, 0x90, 0x01, 0xa3, 0xf5, 0xfb, 0xd3, 0x99, + 0xd6, 0x31, 0x84, 0xf7, 0xf3, 0xbf, 0xa7, 0x57, 0x90, 0x71, + 0xd5, 0x5c, 0x97, 0x4b, 0x73, 0xc3, 0xb7, 0x91, 0xb2, 0x7a, + 0x6d, 0xe7, 0x95, 0x67, 0xf9, 0x22, 0x28, 0xd6, 0x71, 0x02, + 0xc8, 0x89, 0xdb, 0x09, 0x6f, 0xb0, 0x49, 0xca, 0x99, 0xe2, + 0xf4, 0x42, 0xe9, 0xe1, 0x3f, 0x48, 0xdf, 0xef, 0x2b, 0x5d, + 0x05, 0xbb, 0x19, 0x8e, 0xc4, 0x45, 0x6a, 0xef, 0xb3, 0x5a, + 0x50, 0xad, 0xbe, 0x8d, 0xa6, 0xee, 0x60, 0xbe, 0x62, 0x9b, + 0x16, 0x2d, 0x4a, 0xb0, 0xff, 0x0f, 0xcf, 0x7c, 0xde, 0xbb, + 0x38, 0x8e, 0x72, 0xc5, 0xa9, 0x12, 0xb9, 0x3d, 0x6d, 0x81, + 0x15, 0xc8, 0x2c, 0xfa, 0xb7, 0x3c, 0xce, 0xed, 0x34, 0xc3, + 0xfb, 0xb5, 0x25, 0xcc, 0xec, 0xeb, 0xdc, 0xae, 0xc6, 0x64, + 0xf7, 0x18, 0x95, 0x6f, 0xd5, 0x31, 0x73, 0x1f, 0x50, 0xf3, + 0x5c, 0xc5, 0x45, 0xa7, 0xce, 0xfe, 0xe4, 0xed, 0x71, 0x89, + 0x57, 0x14, 0x2f, 0x54, 0xce, 0x63, 0x80, 0xbf, 0xf3, 0x97, + 0x39, 0xc2, 0x43, 0xd8, 0xc3, 0xd5, 0xdf, 0x84, 0x41, 0xc0, + 0x1b, 0x79, 0x88, 0xd8, 0xe0, 0x13, 0x6e, 0x67, 0x5b, 0x34, + 0x8e, 0x49, 0x73, 0xe2, 0x7a, 0x85, 0x53, 0x43, 0xce, 0xdd, + 0xe4, 0xda, 0x3c, 0x0d, 0x91, 0x15, 0x9a, 0xfb, 0x9b, 0xcc, + 0x76, 0x8a, 0x90, 0x74, 0x8c, 0x0a, 0x08, 0x51, 0xa4, 0xd4, + 0x57, 0x42, 0xef, 0xe9, 0x45, 0x6f, 0xe4, 0xdd, 0x61, 0x73, + 0xa7, 0x8e, 0x19, 0x50, 0xda, 0x44, 0x2a, 0x5f, 0x25, 0x9f, + 0xf8, 0x1b, 0xa2, 0x6b, 0x7b, 0xdb, 0xe0, 0x5e, 0x27, 0x68, + 0x5b, 0x72, 0xe3, 0x82, 0xa4, 0x42, 0xc5, 0x04, 0xdd, 0x7b, + 0xe8, 0x1f, 0xfe, 0x4c, 0x8e, 0x44, 0x0d, 0x55, 0xc1, 0x38, + 0xe9, 0xde, 0x69, 0x62, 0xe6, 0x3e, 0xa0, 0x25, 0xb8, 0x49, + 0x8a, 0x8d, 0x5f, 0x3f, 0x0b, 0x19, 0x3c, 0x15, 0xfb, 0x72, + 0x14, 0x11, 0x86, 0x59, 0xc6, 0xba, 0xf7, 0x5e, 0x6b, 0xa8, + 0x89, 0xf9, 0x6f, 0x62, 0xcb, 0x2d, 0x25, 0xbd, 0x8d, 0xae, + 0xe3, 0xe2, 0x69, 0xb8, 0xed, 0x96, 0xe6, 0x45, 0x02, 0xac, + 0xa5, 0xba, 0xbf, 0xe0, 0xfe, 0x32, 0xb4, 0xfc, 0x71, 0x4b, + 0xc2, 0x29, 0x1f, 0x83, 0x01, 0x56, 0xb3, 0x5d, 0xbe, 0x70, + 0x7f, 0x19, 0x5a, 0x7e, 0xd9, 0xc4, 0x61, 0xf5, 0xee, 0xa0, + 0x0a, 0x59, 0x74, 0x17, 0x06, 0xe6, 0x80, 0xfa, 0x21, 0x8a, + 0x76, 0xa4, 0x4c, 0x8d, 0x63, 0xca, 0x09, 0xa3, 0x62, 0xf0, + 0x07, 0x76, 0x01, 0xd1, 0xcf, 0x08, 0xde, 0x2b, 0xef, 0x51, + 0x92, 0xe9, 0x94, 0x39, 0x66, 0x6c, 0xcd, 0x6f, 0x2f, 0xea, + 0x06, 0xbb, 0x9c, 0x63, 0xaf, 0x0b, 0x0a, 0x4d, 0xed, 0x45, + 0xe0, 0xd5, 0x5b, 0x3d, 0x9f, 0x41, 0x13, 0x72, 0x68, 0x1b, + 0x18, 0x6d, 0x35, 0xdc, 0x59, 0x2e, 0x44, 0x48, 0x37, 0x4a, + 0x8b, 0x0d, 0x04, 0xd2, 0xe8, 0x42, 0xca, 0xb3, 0x0c, 0x76, + 0x61, 0xa0, 0x36, 0x8d, 0x9e, 0x58, 0x32, 0x30, 0x69, 0x53, + 0xfd, 0x8a, 0xe6, 0x49, 0xbb, 0x4a, 0x69, 0x55, 0xe7, 0x20, + 0x27, 0x5e, 0x4c, 0xf8, 0xfc, 0x25, 0xfa, 0x65, 0x68, 0xed, + 0xc7, 0x03, 0x29, 0xf1, 0xa0, 0x01, 0xa6, 0x6e, 0x3a, 0x77, + 0xde, 0x13, 0xc2, 0x11, 0x92, 0x84, 0xa1, 0x0e, 0xb0, 0xf0, + 0x2d, 0x2a, 0xd1, 0x74, 0x2b, 0x28, 0xbc, 0x9b, 0x62, 0xcf, + 0x95, 0x8c, 0x07, 0x6f, 0x30, 0x7b, 0xa3, 0x68, 0x10, 0x14, + 0xc7, 0xf5, 0xf8, 0xf7, 0x12, 0x27, 0xa2, 0x5e, 0xcb, 0x75, + 0x60, 0xf6, 0x85, 0xd0, 0x20, 0x28, 0x4d, 0x29, 0x33, 0x2d, + 0x24, 0x4e, 0x87, 0xbc, 0x55, 0xea, 0x74, 0x44, 0x6d, 0xfe, + 0x2c, 0x27, 0x8e, 0x1e, 0x71, 0xfa, 0xc8, 0xc5, 0x1f, 0x65, + 0x93, 0xbd, 0x22, 0xfe, 0x67, 0x4b, 0x1e, 0xf8, 0xc5, 0x94, + 0xa5, 0xe7, 0x6d, 0x71, 0xbf, 0xfc, 0x2c, 0x64, 0x0c, 0x6e, + 0x58, 0x1a, 0x04, 0x05, 0x41, 0xac, 0x3e, 0x4d, 0xe5, 0x79, + 0xc9, 0xf6, 0x42, 0x8c, 0xcd, 0x17, 0x22, 0x24, 0xfa, 0x25, + 0xa4, 0xe7, 0x02, 0x69, 0x74, 0x21, 0x65, 0xb8, 0x06, 0x3b, + 0x7b, 0xd0, 0x23, 0x03, 0x29, 0xb2, 0x4e, 0x99, 0xa1, 0x35, + 0x85, 0x33, 0x75, 0x4f, 0x20, 0x12, 0x5b, 0x82, 0xe1, 0xf2, + 0x88, 0xaa, 0x75, 0x3f, 0xb0, 0x2e, 0x99, 0x09, 0x08, 0x9a, + 0x13, 0xf5, 0x40, 0xa4, 0x47, 0x21, 0x81, 0x30, 0x76, 0x8f, + 0x22, 0x36, 0x38, 0x74, 0xfa, 0x69, 0x66, 0x0d, 0xe3, 0x87, + 0x1d, 0x75, 0xe0, 0xd8, 0x20, 0xdf, 0x99, 0xc3, 0xfc, 0x29, + 0x13, 0xb2, 0x68, 0xd3, 0x14, 0xb2, 0xe8, 0x2e, 0x0c, 0x0f, + 0xc3, 0x37, 0x42, 0xd7, 0xec, 0x8b, 0x98, 0xd9, 0xc6, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x6c, 0x81, 0x4c, + 0xea, 0x31, 0x63, 0x12, 0xfa, 0x9e, 0x66, 0x06, 0xc7, 0xe6, + 0xcd, 0x4e, 0x78, 0x2a, 0x35, 0xe4, 0x28, 0x22, 0xcf, 0xb2, + 0x4f, 0xb7, 0x2d, 0xbc, 0xd6, 0x93, 0xd1, 0x31, 0xad, 0xe1, + 0xa7, 0xf4, 0xda, 0x0d, 0xe9, 0xce, 0x31, 0x44, 0x50, 0x6f, + 0xe2, 0x04, 0x53, 0xd1, 0xd0, 0x06, 0xa8, 0xfa, 0xf1, 0x5c, + 0x66, 0x01, 0x8f, 0xb6, 0x46, 0x81, 0x12, 0x30, 0x52, 0x85, + 0x91, 0xf4, 0x5c, 0x86, 0xce, 0x1c, 0x6f, 0x97, 0xf7, 0xfe, + 0xa7, 0x31, 0x89, 0xac, 0xda, 0x28, 0xfc, 0x3a, 0x32, 0x11, + 0x54, 0x41, 0x1c, 0x0b, 0xa0, 0xe0, 0xbf, 0xc2, 0xa6, 0x13, + 0x23, 0xee, 0xf9, 0xf7, 0x08, 0xfb, 0x57, 0x32, 0x5c, 0x76, + 0x51, 0xa5, 0x84, 0x90, 0x80, 0xb4, 0xf3, 0x8b, 0xea, 0x24, + 0x7f, 0x85, 0xe7, 0xae, 0x21, 0x0e, 0x56, 0xcb, 0x22, 0x02, + 0xfc, 0xe3, 0xfa, 0x3a, 0x85, 0x46, 0xb4, 0xa8, 0xc2, 0x13, + 0xac, 0xa0, 0xb5, 0x29, 0x4b, 0xba, 0x11, 0x75, 0x1c, 0x7f, + 0x7e, 0x1d, 0x19, 0xe9, 0x2a, 0xc1, 0x0e, 0xe4, 0x50, 0x70, + 0xbe, 0x61, 0x53, 0xe8, 0xf0, 0x77, 0x77, 0xbe, 0x7b, 0x19, + 0x2d, 0xb7, 0x0f, 0x35, 0x9f, 0x78, 0x60, 0x4a, 0xbc, 0xb9, + 0x62, 0x9e, 0xc7, 0x4e, 0x56, 0x33, 0xfc, 0xc3, 0x24, 0x1d, + 0x23, 0xe3, 0x02, 0x85, 0x29, 0x35, 0x65, 0xf1, 0xc5, 0xe2, + 0xf3, 0x89, 0x43, 0x23, 0xda, 0x2f, 0x97, 0x1f, 0x73, 0xce, + 0xeb, 0x1c, 0x7a, 0x72, 0x5d, 0xb5, 0xcd, 0xff, 0x8a, 0x49, + 0xb4, 0x69, 0xaf, 0xe9, 0x0a, 0xd4, 0x8d, 0xe1, 0x32, 0xb3, + 0x3a, 0x22, 0xd7, 0x7f, 0x16, 0xf2, 0x47, 0x0f, 0xd9, 0x7d, + 0x64, 0x83, 0xee, 0xd3, 0xa8, 0xbf, 0xd5, 0xcb, 0x92, 0x10, + 0xf2, 0x2f, 0x26, 0x7c, 0x7e, 0xf3, 0x7d, 0xd3, 0x34, 0x97, + 0x82, 0xe0, 0x66, 0xc1, 0xa9, 0xdd, 0x22, 0xcb, 0x8c, 0x7f, + 0x2c, 0xea, 0xb7, 0x93, 0x02, 0xc7, 0x74, 0xac, 0x8b, 0x84, + 0x49, 0x08, 0x79, 0xf6, 0x13, 0x3e, 0x3f, 0x98, 0xdf, 0x88, + 0x1a, 0xaa, 0x41, 0x70, 0x49, 0x07, 0x25, 0xd1, 0x86, 0x46, + 0x77, 0x5e, 0xed, 0x3e, 0xe6, 0x5f, 0x15, 0x38, 0xf4, 0xe4, + 0xc2, 0x83, 0x6c, 0xd9, 0xff, 0xb0, 0x64, 0x60, 0xd2, 0xa6, + 0x39, 0xd7, 0x0f, 0x92, 0xb5, 0x94, 0xc6, 0x18, 0xe5, 0x6e, + 0x42, 0xb3, 0x5b, 0x04, 0x79, 0x9d, 0xdb, 0x41, 0x48, 0xc0, + 0x8b, 0x51, 0x56, 0xba, 0x0a, 0xb5, 0x32, 0xdf, 0x4b, 0x8a, + 0xd4, 0x1d, 0xa5, 0xb4, 0xa0, 0x99, 0xbf, 0xd9, 0x4e, 0x66, + 0xba, 0x81, 0x3a, 0xd5, 0xc9, 0x11, 0xa8, 0x87, 0xac, 0x46, + 0xf1, 0xb6, 0x3b, 0x02, 0x27, 0x33, 0x5d, 0xa1, 0x1d, 0x8b, + 0x85, 0xe9, 0x54, 0xa2, 0x56, 0x23, 0x99, 0x5b, 0xfc, 0x01, + 0xe6, 0x4a, 0x27, 0x9f, 0xe3, 0xab, 0x60, 0xa2, 0x68, 0x86, + 0xc7, 0x7b, 0x35, 0x15, 0xb8, 0xb6, 0x93, 0x58, 0xf9, 0x3c, + 0x71, 0xfc, 0x91, 0xa5, 0x43, 0x02, 0xd6, 0x7a, 0x4b, 0x85, + 0xc5, 0xab, 0xbb, 0xff, 0xea, 0x60, 0x69, 0xe2, 0xd4, 0xcb, + 0xc7, 0x6f, 0xcd, 0xaf, 0xb8, 0xf4, 0x8a, 0x05, 0xd1, 0x50, + 0x1b, 0xa7, 0x4f, 0x2c, 0x19, 0x18, 0xd5, 0xc8, 0x9f, 0x45, + 0x73, 0xc5, 0xbc, 0x25, 0x63, 0x0c, 0x93, 0x37, 0x21, 0xb8, + 0xcc, 0x02, 0xdd, 0xaf, 0x8c, 0xc1, 0x24, 0x60, 0xa4, 0xc9, + 0xc1, 0x79, 0x7a, 0x3e, 0xfe, 0x20, 0xe5, 0x4b, 0x3c, 0x24, + 0x91, 0x58, 0xac, 0x4e, 0x44, 0xb7, 0x45, 0x69, 0x7d, 0xcb, + 0x82, 0x43, 0x36, 0xf2, 0xd3, 0x73, 0x03, 0x26, 0xdc, 0xce, + 0xb6, 0x68, 0xc8, 0xda, 0x18, 0xce, 0xf9, 0x56, 0xe4, 0x9a, + 0xf3, 0x2c, 0x4f, 0x73, 0x43, 0x1f, 0xd6, 0x5e, 0x16, 0x1e, + 0x4d, 0x94, 0xb3, 0xef, 0x3d, 0x05, 0xf6, 0x2b, 0x9d, 0xc0, + 0x5a, 0xf0, 0xd9, 0xd4, 0x1b, 0x26, 0xa6, 0xd3, 0x09, 0x9a, + 0x03, 0xb0, 0x92, 0x18, 0xa1, 0x7d, 0xf2, 0xf3, 0x75, 0xf8, + 0x20, 0x52, 0xc2, 0xf1, 0xa1, 0x18, 0x3b, 0xa6, 0x11, 0x1b, + 0x1c, 0x3a, 0x7d, 0xd5, 0x33, 0xe7, 0x9b, 0xad, 0x28, 0x91, + 0xc8, 0xfa, 0xef, 0x6d, 0xd6, 0x74, 0xd1, 0x95, 0xc5, 0x21, + 0xb9, 0xe2, 0xf3, 0xae, 0x7c, 0xec, 0x51, 0xd4, 0xdc, 0x8c, + 0x70, 0x2f, 0xf2, 0x34, 0xcc, 0x39, 0x90, 0x41, 0xb8, 0x05, + 0xfc, 0x87, 0x68, 0x72, 0x55, 0xe0, 0x29, 0xed, 0x65, 0x20, + 0x1b, 0x28, 0x7b, 0x26, 0xf0, 0x54, 0x6a, 0x0b, 0x50, 0x44, + 0x5d, 0xa7, 0x9e, 0xad, 0x5a, 0xbb, 0x6f, 0xe5, 0x61, 0x62, + 0x2f, 0xc6, 0x8c, 0x0c, 0xa4, 0x8d, 0xfb, 0x21, 0xc1, 0xd4, + 0x51, 0xcc, 0x17, 0xff, 0x80, 0x48, 0xba, 0xa9, 0x59, 0x3d, + 0xd7, 0x92, 0xab, 0xd2, 0x9d, 0x11, 0x14, 0x6b, 0xd9, 0x01, + 0x64, 0xa5, 0x4f, 0x30, 0x09, 0xdc, 0x84, 0xa5, 0xb6, 0x08, + 0xf2, 0xf9, 0x75, 0x82, 0x90, 0x43, 0xd5, 0xa2, 0xbe, 0x32, + 0xd0, 0x8a, 0x6a, 0x91, 0x94, 0xb6, 0x36, 0x2a, 0xf6, 0xfd, + 0x9e, 0x53, 0x5a, 0x60, 0x12, 0x85, 0xc4, 0x23, 0x0e, 0xec, + 0x02, 0x61, 0x5d, 0x10, 0x7f, 0x56, 0x1d, 0xa2, 0xe7, 0x11, + 0x43, 0x5e, 0x51, 0xc6, 0x80, 0xa0, 0xf7, 0xa4, 0xcc, 0xb4, + 0x90, 0xfb, 0x59, 0xb5, 0x97, 0x2e, 0xcf, 0xbb, 0x87, 0x9e, + 0x45, 0xc5, 0x5a, 0xd5, 0xb6, 0x95, 0x05, 0x6a, 0xa7, 0x91, + 0x19, 0xb8, 0xc9, 0x8c, 0xab, 0x93, 0x47, 0x26, 0x9b, 0x83, + 0xa9, 0x52, 0x96, 0xb7, 0x22, 0xea, 0x38, 0xfe, 0x2a, 0x0b, + 0xb6, 0xe6, 0xa7, 0xfe, 0xbb, 0x5c, 0x30, 0x91, 0x6a, 0x9e, + 0x31, 0x58, 0x50, 0x2d, 0x11, 0x7f, 0xd2, 0xc4, 0x0f, 0x7c, + 0x83, 0x4a, 0xb3, 0x92, 0xd7, 0xd9, 0xbe, 0x7e, 0x16, 0x32, + 0x15, 0xe4, 0x5b, 0x73, 0xb2, 0x7f, 0xbc, 0x2e, 0x18, 0xa9, + 0x35, 0x4f, 0xf9, 0x2c, 0x28, 0xf7, 0xf6, 0x63, 0x46, 0x06, + 0x52, 0xa7, 0x9c, 0xf1, 0x81, 0x6a, 0xc9, 0x66, 0xea, 0x9e, + 0x40, 0x24, 0x62, 0x5a, 0x20, 0x6a, 0x9f, 0xc8, 0xb3, 0x1b, + 0x87, 0xd1, 0x55, 0x05, 0x45, 0x95, 0x4a, 0x69, 0xcc, 0x41, + 0x91, 0x79, 0x44, 0x55, 0xdb, 0xfe, 0x58, 0x17, 0xad, 0xe5, + 0x04, 0x4d, 0xe8, 0x9b, 0xe0, 0x7d, 0x0b, 0x92, 0xe1, 0x48, + 0xa1, 0xf4, 0x77, 0x41, 0x54, 0xa6, 0xb0, 0x6e, 0x99, 0xf0, + 0x8c, 0xe5, 0xd6, 0x58, 0xc5, 0x65, 0xad, 0x71, 0x7a, 0x21, + 0x95, 0x91, 0xfe, 0x24, 0x8e, 0x96, 0x90, 0xa2, 0xef, 0xdb, + 0x70, 0x6c, 0x10, 0x8e, 0xad, 0x80, 0x7e, 0xf5, 0xe8, 0x59, + 0x34, 0x88, 0x47, 0xc5, 0xd8, 0x71, 0x3d, 0xa3, 0xc8, 0xc0, + 0x67, 0x8f, 0x72, 0x6d, 0x1e, 0xe7, 0xa9, 0xeb, 0xff, 0xc0, + 0x24, 0xf6, 0x55, 0xd1, 0x9d, 0x20, 0x4e, 0x62, 0x17, 0x4d, + 0x05, 0xcf, 0xd2, 0xcd, 0x81, 0xdd, 0x3d, 0x1f, 0x7f, 0x10, + 0x93, 0xc4, 0x1e, 0x12, 0xa9, 0x2c, 0x56, 0x27, 0x22, 0xba, + 0x5e, 0x4f, 0xdb, 0x18, 0x8b, 0xd9, 0x35, 0x42, 0x41, 0x6b, + 0xa2, 0x5b, 0x2e, 0x3d, 0xc3, 0x90, 0xfb, 0x5b, 0xad, 0x41, + 0xe8, 0xd2, 0xa2, 0x44, 0xe5, 0x59, 0xf5, 0xdb, 0x42, 0x9d, + 0xec, 0x08, 0x79, 0x7c, 0x86, 0xb9, 0x96, 0x52, 0xb0, 0xab, + 0x15, 0xc9, 0xf4, 0x78, 0xb7, 0x66, 0x3f, 0x91, 0x36, 0x4c, + 0x8f, 0x65, 0x12, 0xf7, 0x06, 0xa3, 0xe7, 0x30, 0x81, 0xfa, + 0x27, 0x25, 0xea, 0x33, 0x32, 0xd7, 0x06, 0xd2, 0xaf, 0xf4, + 0x39, 0xc7, 0x4c, 0x0b, 0x63, 0x6c, 0x60, 0x77, 0xd4, 0xf6, + 0x0e, 0xc2, 0xfd, 0xa0, 0xbb, 0xe5, 0xbf, 0x9e, 0x8a, 0xb1, + 0x94, 0x32, 0x0b, 0xdf, 0x5d, 0x0f, 0xd3, 0xfc, 0xbe, 0x1d, + 0xf0, 0xcc, 0xe7, 0x2a, 0x61, 0x34, 0xee, 0x0e, 0xb1, 0xec, + 0xa3, 0xa6, 0x33, 0x81, 0xb5, 0x8f, 0x11, 0x84, 0x46, 0xde, + 0x16, 0x75, 0xba, 0xa8, 0x01, 0x82, 0x3a, 0x56, 0x53, 0x77, + 0x30, 0x5f, 0x31, 0xac, 0x0b, 0xf7, 0x25, 0x58, 0x9e, 0xe6, + 0x86, 0x3e, 0x6f, 0xbc, 0x87, 0xea, 0x11, 0x12, 0x7d, 0xf3, + 0x52, 0x92, 0x01, 0xd5, 0x3a, 0xf1, 0xd3, 0x5c, 0x03, 0xfc, + 0x21, 0x04, 0x71, 0xac, 0x1f, 0x68, 0x44, 0xbf, 0x4b, 0x65, + 0xc5, 0xfe, 0x1c, 0x20, 0xdd, 0x47, 0xd4, 0x9d, 0x21, 0x4d, + 0x4c, 0x5f, 0x59, 0x65, 0x24, 0x8d, 0xa4, 0x17, 0x55, 0x62, + 0x6c, 0x40, 0x07, 0x61, 0x9f, 0x50, 0xbc, 0x93, 0xbe, 0x4f, + 0x45, 0xb9, 0x4a, 0x19, 0xe4, 0x8e, 0xcf, 0xe6, 0x48, 0x51, + 0x96, 0x8c, 0x38, 0x36, 0x08, 0x47, 0xb7, 0x40, 0x3f, 0x9b, + 0x74, 0xcd, 0x1a, 0x44, 0xdd, 0x3e, 0x43, 0xbd, 0x4b, 0x29, + 0x58, 0xb4, 0xeb, 0x85, 0x7a, 0x3c, 0xba, 0x33, 0xfe, 0xa9, + 0x6e, 0x34, 0x78, 0x70, 0x9b, 0xcd, 0xf2, 0xb7, 0xb9, 0x9c, + 0xb0, 0x7c, 0x8c, 0x63, 0x08, 0xe5, 0xc4, 0xb4, 0x40, 0xd4, + 0xfd, 0x53, 0xa5, 0x36, 0xcd, 0x61, 0xaa, 0x0a, 0x8a, 0xe9, + 0x94, 0xd2, 0x58, 0x78, 0xf7, 0x15, 0x89, 0x3a, 0xf4, 0x14, + 0x5e, 0xac, 0x31, 0x86, 0xab, 0x46, 0xe2, 0xd6, 0x9c, 0xcc, + 0xb7, 0xc1, 0x74, 0x69, 0x51, 0x22, 0x93, 0xcd, 0x9b, 0x8c, + 0x21, 0xaf, 0x76, 0x04, 0x05, 0xcd, 0x3a, 0xea, 0x03, 0x73, + 0x40, 0x7d, 0xf1, 0x45, 0x3b, 0x52, 0x26, 0xa7, 0xd0, 0x65, + 0x19, 0x8a, 0x03, 0x69, 0xb6, 0x7a, 0xfd, 0x82, 0x26, 0xe4, + 0xd0, 0x36, 0x30, 0xda, 0x6a, 0x7b, 0xd8, 0xf3, 0x79, 0x57, + 0x48, 0x5a, 0x18, 0xc9, 0x1a, 0xc0, 0x41, 0x6e, 0x9c, 0x94, + 0x2e, 0xcc, 0x80, 0x8b, 0x8e, 0x42, 0xc1, 0x60, 0xec, 0xdd, + 0x44, 0x6c, 0x70, 0xe8, 0x37, 0xd2, 0xcc, 0x1a, 0x9e, 0x60, + 0x12, 0x7b, 0xcb, 0x89, 0xaf, 0x10, 0x27, 0x31, 0xea, 0xc7, + 0xe3, 0x86, 0x69, 0x87, 0x44, 0x3f, 0xce, 0x96, 0x3c, 0x33, + 0x49, 0xeb, 0x89, 0x0d, 0xda, 0xe2, 0xbd, 0x3b, 0x58, 0xc8, + 0xca, 0x76, 0xbd, 0x74, 0x46, 0xb6, 0x1a, 0xa8, 0x47, 0xd0, + 0x3e, 0x38, 0x81, 0x36, 0xc9, 0xdd, 0x3d, 0x43, 0x48, 0x2f, + 0xaa, 0x61, 0xf9, 0x40, 0x9c, 0xc4, 0x2e, 0x9a, 0x0a, 0x5d, + 0x67, 0x59, 0x2e, 0x90, 0x3f, 0x51, 0x1a, 0xfd, 0x84, 0x38, + 0x9b, 0xaa, 0x88, 0x08, 0x76, 0x0a, 0x6e, 0xe8, 0x72, 0x73, + 0x41, 0xf3, 0x2e, 0xc4, 0x4f, 0x48, 0x6e, 0x3d, 0x5b, 0x18, + 0x9a, 0x1e, 0xb2, 0xfb, 0x42, 0x08, 0xe2, 0x9b, 0x3e, 0xd0, + 0x88, 0xbd, 0x96, 0xca, 0x49, 0x3f, 0x38, 0x40, 0x79, 0x8e, + 0x65, 0x3b, 0xbf, 0x3a, 0x23, 0x5b, 0x0d, 0x54, 0xc2, 0x68, + 0x1f, 0x1c, 0xa1, 0x1b, 0x85, 0x8f, + }, + { + /* 10 */ + 0xd4, 0x19, 0x2d, 0xd4, 0xc2, 0xc3, 0xd3, 0x9c, 0xe1, 0x5d, + 0xa9, 0x18, 0x2c, 0xd1, 0xbe, 0x8f, 0x40, 0x7b, 0xcb, 0x40, + 0x94, 0x34, 0xa6, 0x04, 0x50, 0xb3, 0x14, 0xdb, 0x6b, 0x25, + 0x60, 0xb5, 0x97, 0xc0, 0xd2, 0x97, 0x3c, 0x7b, 0x81, 0x84, + 0xc2, 0x71, 0xd1, 0x87, 0x95, 0x0f, 0x3d, 0xb7, 0x4d, 0x69, + 0xb6, 0x4d, 0xd9, 0x84, 0x1d, 0xc1, 0xcf, 0xff, 0x43, 0x34, + 0xeb, 0xa7, 0x8a, 0xbf, 0x03, 0xa2, 0x34, 0x03, 0x6a, 0x8c, + 0xf4, 0x1c, 0x73, 0x9f, 0x6c, 0x44, 0xd2, 0xfb, 0xe3, 0x8d, + 0xd1, 0x3c, 0x71, 0xd1, 0x7c, 0x94, 0x0c, 0xb8, 0x74, 0x3f, + 0x1d, 0xd4, 0x99, 0x1f, 0x58, 0xdb, 0xf8, 0x08, 0x79, 0xf8, + 0xe3, 0xac, 0xd6, 0xee, 0xc6, 0xdc, 0xd0, 0x47, 0x36, 0x48, + 0x84, 0x45, 0xca, 0xc7, 0x26, 0xca, 0xc0, 0xf2, 0x54, 0x44, + 0x19, 0xd2, 0x97, 0xf5, 0x14, 0x30, 0xaf, 0xb4, 0x53, 0xb7, + 0xbd, 0x53, 0xdb, 0xb5, 0x9a, 0x19, 0x37, 0x70, 0x7d, 0xd9, + 0xd3, 0x46, 0x9b, 0x84, 0x66, 0x20, 0x27, 0x66, 0x0a, 0xf5, + 0xde, 0x3e, 0x9e, 0xf6, 0xc6, 0xdf, 0xd8, 0xe3, 0x55, 0xd7, + 0xa5, 0x0f, 0x8d, 0xa5, 0x1f, 0x25, 0x03, 0x2e, 0x1d, 0x7f, + 0x96, 0x35, 0xb7, 0x77, 0x16, 0x46, 0x10, 0x6e, 0x42, 0x10, + 0x25, 0x0d, 0xc8, 0x01, 0x14, 0x5c, 0x05, 0x46, 0x6a, 0x98, + 0x18, 0xbc, 0x6c, 0x6a, 0x9f, 0x6c, 0xb5, 0x5b, 0xa3, 0x76, + 0x77, 0x32, 0x6d, 0x84, 0x71, 0xbc, 0x5a, 0x7f, 0x90, 0x98, + 0x17, 0x90, 0xce, 0x65, 0x47, 0x09, 0xb4, 0xf9, 0x2d, 0x33, + 0xbc, 0xd2, 0xd8, 0x15, 0x5e, 0xa5, 0xc0, 0x5e, 0x96, 0x05, + 0x21, 0xdc, 0xa8, 0x3c, 0x2a, 0x36, 0x53, 0xc4, 0x71, 0x8e, + 0xbd, 0x56, 0xee, 0xbd, 0xc9, 0xcf, 0xaf, 0xce, 0x03, 0x0d, + 0x70, 0x50, 0xe8, 0xa3, 0x02, 0xa4, 0xc7, 0xd5, 0x5b, 0xc7, + 0x8d, 0x42, 0xef, 0x81, 0x86, 0x9e, 0xc0, 0x1a, 0x94, 0xb2, + 0x45, 0xbe, 0x20, 0xdc, 0x84, 0x20, 0x4a, 0x1a, 0x53, 0x02, + 0x28, 0xb8, 0x0a, 0x8c, 0xd4, 0xf3, 0x30, 0xbb, 0x36, 0x35, + 0xae, 0x36, 0xbb, 0xcc, 0xb0, 0x3b, 0xda, 0x19, 0xd7, 0x42, + 0xd9, 0x5e, 0x2d, 0xde, 0xe6, 0xd6, 0x72, 0xe6, 0xe1, 0x9d, + 0x51, 0x36, 0x3e, 0x53, 0xee, 0xaa, 0x0e, 0xa9, 0x95, 0x7e, + 0xf3, 0x9d, 0x6c, 0xf3, 0x7a, 0xc7, 0x46, 0x13, 0xbf, 0x6d, + 0x5f, 0x20, 0xd1, 0xff, 0x6b, 0x96, 0x78, 0xfe, 0x2c, 0x78, + 0x08, 0xc4, 0x59, 0xe6, 0x66, 0x79, 0xf8, 0x32, 0xe0, 0x02, + 0x44, 0xec, 0x60, 0xa7, 0x4f, 0x60, 0xde, 0x2e, 0xf5, 0x06, + 0x78, 0x0b, 0x1e, 0x57, 0xbf, 0xd6, 0x50, 0x0e, 0x0c, 0xcd, + 0xd0, 0x0c, 0x6b, 0x75, 0x56, 0x70, 0x0f, 0x39, 0x73, 0xd3, + 0xce, 0x6a, 0x0a, 0x71, 0x3c, 0x7f, 0x16, 0x3c, 0x04, 0x62, + 0xcd, 0x73, 0x33, 0xdd, 0x7c, 0x19, 0x70, 0x01, 0x22, 0x76, + 0x7f, 0xa6, 0xe9, 0x7f, 0xfa, 0xda, 0x9f, 0x6b, 0x10, 0xf1, + 0x04, 0x86, 0xc9, 0xdf, 0xa1, 0x4e, 0xc0, 0x8d, 0x9e, 0xc0, + 0x7f, 0x5c, 0x29, 0x0c, 0xf0, 0x16, 0x3c, 0xae, 0xbd, 0x6f, + 0xa0, 0x1c, 0xfa, 0x75, 0xe0, 0xfa, 0xaf, 0xe5, 0xcf, 0x47, + 0x25, 0x36, 0x98, 0x3f, 0xaa, 0x5b, 0x87, 0xb3, 0xe5, 0x74, + 0x46, 0xe5, 0x8b, 0x11, 0xa5, 0x2a, 0x4d, 0xcc, 0x82, 0xee, + 0xdc, 0x52, 0x76, 0xf3, 0x2c, 0x11, 0x54, 0x2c, 0x21, 0x6f, + 0x05, 0x72, 0x27, 0x81, 0x79, 0x5f, 0x1a, 0x99, 0x3a, 0xca, + 0x29, 0x34, 0x08, 0x29, 0x9f, 0x38, 0xda, 0x56, 0xb2, 0xe3, + 0xcd, 0x93, 0xaf, 0x57, 0xdc, 0x9e, 0xce, 0x3d, 0xd7, 0xce, + 0x58, 0x60, 0x66, 0xd5, 0x1c, 0xc5, 0x07, 0x05, 0xef, 0x16, + 0xa9, 0x9b, 0x7c, 0x04, 0xdd, 0x7c, 0x90, 0x56, 0x6b, 0x77, + 0x63, 0x6e, 0x68, 0xc2, 0x1b, 0x24, 0x42, 0xc3, 0x07, 0x58, + 0xc5, 0x07, 0xf2, 0x1e, 0xc6, 0x8d, 0x76, 0x88, 0xfc, 0xb4, + 0x29, 0xdd, 0xe5, 0xa2, 0xb4, 0xbe, 0x62, 0xb4, 0x1c, 0xed, + 0x26, 0x9a, 0x99, 0x56, 0xb7, 0x4f, 0x93, 0x07, 0xee, 0x81, + 0x81, 0x29, 0xf8, 0x81, 0xcd, 0xad, 0x62, 0xbd, 0x30, 0xd0, + 0x0c, 0x49, 0x98, 0xa2, 0x20, 0xd2, 0xa2, 0x57, 0x48, 0xa2, + 0xed, 0x3b, 0xc5, 0xa3, 0x6b, 0xf7, 0x6a, 0x81, 0x9e, 0xaa, + 0xf3, 0xe4, 0xf0, 0x3f, 0x58, 0xf0, 0x10, 0x4b, 0xb2, 0x0f, + 0xcc, 0xf2, 0x33, 0x64, 0x03, 0x04, 0x88, 0x1b, 0xb6, 0xc3, + 0xfb, 0xb6, 0x50, 0xa4, 0x3f, 0x33, 0x7a, 0xbc, 0xff, 0x37, + 0x0f, 0x14, 0xed, 0x77, 0x43, 0xd9, 0xff, 0x43, 0xfe, 0xb8, + 0x52, 0x18, 0x23, 0x2c, 0x78, 0x9f, 0xb9, 0xde, 0x83, 0x38, + 0x67, 0xff, 0x8a, 0x67, 0x2c, 0x30, 0x33, 0x8b, 0x0e, 0x83, + 0xe2, 0xe3, 0x96, 0x0b, 0xb5, 0xac, 0x59, 0xfd, 0x05, 0x59, + 0x64, 0x1b, 0xe7, 0x51, 0xde, 0xb4, 0xd6, 0x82, 0x7a, 0x19, + 0x94, 0x2c, 0xec, 0x9c, 0xca, 0xec, 0x5e, 0x33, 0x2c, 0x7e, + 0xd7, 0x97, 0x45, 0xf1, 0xa7, 0xf6, 0x9a, 0xd6, 0x86, 0x71, + 0x3d, 0x86, 0x3f, 0xb3, 0xa4, 0x30, 0x46, 0x58, 0xf0, 0xfd, + 0xb1, 0x7f, 0xc5, 0x70, 0xf4, 0xc5, 0xa9, 0xf4, 0x88, 0xd9, + 0x80, 0x9e, 0xc9, 0xe5, 0xa3, 0x94, 0xf8, 0x22, 0x8e, 0x34, + 0xf6, 0xb8, 0x30, 0xf6, 0xc4, 0x90, 0x99, 0x37, 0x2a, 0x0f, + 0xeb, 0xec, 0x64, 0x31, 0x8d, 0xc2, 0x5c, 0xd8, 0x59, 0x5c, + 0xda, 0x4c, 0x38, 0x75, 0x4b, 0xd6, 0x62, 0x4e, 0xcf, 0xd7, + 0x72, 0x78, 0x92, 0xe5, 0x8e, 0x92, 0x82, 0x2c, 0x5e, 0xa0, + 0x57, 0x13, 0x65, 0x4b, 0x20, 0xc1, 0xdb, 0xe3, 0xa8, 0x1d, + 0xf0, 0xa8, 0x52, 0x95, 0xb8, 0xeb, 0x82, 0x33, 0xc1, 0xda, + 0x37, 0xf5, 0xfc, 0x4c, 0xcf, 0xe2, 0x7a, 0xcf, 0x7e, 0xa5, + 0x8b, 0x60, 0x8c, 0xb0, 0x23, 0x39, 0xa1, 0xfe, 0x49, 0xe0, + 0x2f, 0xb3, 0x60, 0x2f, 0x4b, 0xe3, 0xf1, 0x6e, 0x54, 0x1e, + 0x15, 0x1b, 0xc8, 0x62, 0xd9, 0x47, 0xe9, 0xb9, 0x96, 0xe9, + 0xe0, 0x64, 0xf3, 0x5a, 0x42, 0xf5, 0xf1, 0x3d, 0x12, 0x38, + 0x7c, 0x82, 0x54, 0xef, 0x78, 0x54, 0x29, 0xab, 0x5c, 0x94, + 0x41, 0xf8, 0x81, 0x6d, 0xfa, 0x9b, 0x7e, 0x26, 0x8f, 0x99, + 0xb1, 0x8f, 0xea, 0x91, 0x2d, 0x64, 0xdc, 0x03, 0x37, 0xe2, + 0xca, 0xdb, 0x29, 0x55, 0xaa, 0x60, 0x69, 0xaa, 0x1e, 0xdc, + 0xa1, 0x42, 0x61, 0xd9, 0x89, 0xa2, 0xab, 0xe6, 0xff, 0xba, + 0x24, 0x26, 0x75, 0x24, 0xd2, 0x88, 0x61, 0x93, 0x2d, 0xaf, + 0x9a, 0x7c, 0x2f, 0xd5, 0x36, 0x94, 0x71, 0x16, 0xa0, 0x71, + 0xdd, 0xe6, 0xd0, 0xb2, 0xfc, 0x22, 0x3f, 0x2d, 0x9b, 0xa6, + 0xa8, 0xc9, 0x65, 0x82, 0x13, 0x65, 0x60, 0x79, 0x2a, 0x22, + 0xed, 0x69, 0xaa, 0x9b, 0x0a, 0x18, 0xb6, 0x5a, 0x99, 0x70, + 0x9b, 0x99, 0x1b, 0x47, 0xce, 0x5d, 0x2e, 0xa2, 0xea, 0x2c, + 0xc7, 0x76, 0x34, 0x30, 0x96, 0x1f, 0x7f, 0x96, 0x1a, 0xbe, + 0x6c, 0x31, 0x52, 0x04, 0xf5, 0xbb, 0xdb, 0xe7, 0xdd, 0xcc, + 0x9c, 0x55, 0xc7, 0x9c, 0xa5, 0x10, 0x11, 0x79, 0xbb, 0xc0, + 0x5e, 0xe0, 0x72, 0xb8, 0xd2, 0x64, 0xdd, 0xf1, 0xa1, 0xdd, + 0x17, 0xe1, 0x5a, 0xc8, 0x7b, 0x06, 0x6e, 0x07, 0x57, 0x75, + 0x52, 0xaa, 0x5a, 0x5f, 0x31, 0x5a, 0x0e, 0x97, 0x13, 0x4d, + 0xad, 0x2b, 0xba, 0xc6, 0xa8, 0xe2, 0x77, 0xa1, 0x80, 0xf6, + 0x55, 0x80, 0xeb, 0x68, 0x8f, 0x08, 0xa0, 0xa5, 0x28, 0x75, + 0xd6, 0x4a, 0xc0, 0xa9, 0xe8, 0x66, 0x3b, 0xe8, 0xc6, 0xa1, + 0x1e, 0xef, 0xd2, 0x80, 0xd5, 0x01, 0x5c, 0xd0, 0x9c, 0xf9, + 0x50, 0x15, 0x89, 0x50, 0xb1, 0x39, 0x6e, 0x05, 0x44, 0xef, + 0x11, 0x9d, 0x01, 0xbd, 0x78, 0x09, 0x57, 0x4d, 0x4c, 0x57, + 0x43, 0x27, 0xa8, 0x88, 0x32, 0x67, 0xed, 0x29, 0x28, 0x60, + 0x9d, 0xab, 0xe4, 0xab, 0xeb, 0xe4, 0xad, 0xd4, 0x48, 0x9f, + 0xdd, 0xb9, 0xa6, 0xd2, 0x92, 0xba, 0x96, 0x88, 0x1e, 0xde, + 0x0b, 0x1e, 0x02, 0x31, 0x87, 0xd8, 0xf8, 0x8f, 0x3e, 0xed, + 0x38, 0xe1, 0x11, 0x3b, 0x84, 0x0c, 0xa4, 0x84, 0x73, 0xfa, + 0xbd, 0x99, 0xa5, 0xb2, 0xb8, 0x85, 0x2d, 0x6c, 0xc6, 0x86, + 0x15, 0x4b, 0x1e, 0x15, 0x9b, 0x5a, 0x17, 0x25, 0x81, 0x3e, + 0xb1, 0x8a, 0xdf, 0x56, 0xfe, 0xe8, 0x41, 0xa4, 0x66, 0x41, + 0xb2, 0xf1, 0x4b, 0xb1, 0xc0, 0xc6, 0x30, 0xe7, 0x25, 0xcd, + 0x80, 0xce, 0x19, 0x86, 0xce, 0x19, 0xf0, 0x2f, 0x41, 0x55, + 0x8e, 0x07, 0xc2, 0x59, 0x11, 0x3c, 0xf4, 0x99, 0x26, 0x5b, + 0xec, 0x26, 0x9e, 0xc1, 0x78, 0x3a, 0xce, 0x45, 0xd2, 0x04, + 0xb3, 0xc6, 0x35, 0x62, 0xa0, 0x2a, 0xd1, 0xa0, 0xa1, 0x72, + 0xdc, 0x0a, 0x88, 0x1d, 0x22, 0xf9, 0x02, 0xb9, 0xf0, 0x12, + 0x0b, 0x95, 0x15, 0x0b, 0x99, 0x6b, 0x90, 0xfd, 0x79, 0xb1, + 0x8f, 0x67, 0xe7, 0xb7, 0xef, 0xd3, 0x22, 0xa1, 0x1d, 0x22, + 0x06, 0x53, 0x4a, 0xab, 0xcb, 0x52, 0x42, 0xf4, 0x48, 0xe0, + 0x33, 0x4d, 0x9d, 0x8a, 0x6a, 0x9d, 0x83, 0xd5, 0xfc, 0xcc, + 0x2b, 0xb5, 0x7a, 0xdc, 0x3c, 0x50, 0x32, 0x1f, 0xf5, 0x1a, + 0x04, 0xf5, 0xae, 0x1c, 0x6d, 0x2b, 0x59, 0x90, 0x87, 0xa8, + 0xb6, 0xca, 0x6e, 0x4f, 0xda, 0xa9, 0x64, 0xda, 0xe5, 0xff, + 0x9c, 0x45, 0x0d, 0x8e, 0x92, 0xb3, 0x7e, 0xa8, 0xb7, 0x08, + 0x37, 0xea, 0x03, 0x37, 0x9d, 0x09, 0x5d, 0x8e, 0x4a, 0x6c, + 0xf3, 0x7e, 0x97, 0xb6, 0xcd, 0xa5, 0xa7, 0x72, 0x14, 0xa7, + 0x53, 0x6c, 0x1a, 0x87, 0xfe, 0x95, 0xde, 0x4d, 0x2b, 0x64, + 0x15, 0xb0, 0xcd, 0x9f, 0xe3, 0xcd, 0x32, 0xec, 0x92, 0xc9, + 0x6f, 0x5a, 0x6b, 0x41, 0x3d, 0xed, 0x4a, 0x16, 0x63, 0x05, + 0x7b, 0x63, 0xb4, 0xa2, 0x01, 0x1a, 0x0b, 0x94, 0x72, 0x13, + 0x6d, 0x2d, 0xb3, 0x83, 0xbc, 0x89, 0x43, 0xbc, 0xef, 0x0a, + 0x42, 0x7b, 0x93, 0x78, 0x54, 0x6c, 0xa6, 0x4b, 0xe2, 0xdf, + 0xe2, 0x2c, 0x83, 0xe2, 0x79, 0x0f, 0x63, 0xa7, 0x3b, 0x44, + 0x7e, 0x5a, 0xf5, 0x8f, 0x93, 0x51, 0xd6, 0x64, 0xb4, 0xd6, + 0x8e, 0x8a, 0xca, 0x35, 0x02, 0xb7, 0xe1, 0x60, 0xb0, 0xc2, + 0xbd, 0x79, 0x94, 0x62, 0xe6, 0x94, 0x56, 0xf7, 0x75, 0x98, + 0xb1, 0xee, 0xbd, 0xc3, 0x47, 0xf4, 0xde, 0x3a, 0xa4, 0xd0, + 0x20, 0xa4, 0x39, 0xe0, 0xee, 0x9b, 0x8d, 0x0a, 0xb2, 0x09, + 0xf9, 0x9f, 0xf6, 0x3d, 0x88, 0xc1, 0x74, 0x88, 0x18, 0x8f, + 0xeb, 0xe9, 0xaa, 0x8b, 0xcb, 0x56, 0xe3, 0x06, 0xcc, 0xf7, + 0x62, 0xda, 0xd6, 0x62, 0x92, 0x67, 0xec, 0xaf, 0x9b, 0xe1, + 0x56, 0x2f, 0x23, 0xc5, 0x53, 0xf8, 0x2e, 0x6c, 0xcd, 0x2e, + 0x6d, 0x26, 0x1c, 0xdb, 0xc4, 0x6b, 0x31, 0x27, 0x86, 0x8a, + 0x39, 0x3c, 0xc8, 0xba, 0xbf, 0xc8, 0x8c, 0xbb, 0x4d, 0xed, + 0xfa, 0x38, 0xdf, 0x8d, 0x88, 0x23, 0xac, 0x42, 0x18, 0x59, + 0x63, 0x18, 0xd6, 0xea, 0xac, 0xe0, 0x1e, 0x72, 0xe6, 0x65, + 0x5f, 0xd4, 0x14, 0xe2, 0x06, 0x87, 0x68, 0x06, 0xd4, 0xdb, + 0x2b, 0x38, 0xe6, 0xfd, 0xd8, 0x88, 0x67, 0x35, 0x05, 0xd9, + 0x16, 0xe9, 0x2a, 0x16, 0xf1, 0xd6, 0xe3, 0x39, 0xf2, 0xa1, + 0xdd, 0xce, 0x0d, 0xad, 0x1d, 0x65, 0x13, 0xcc, 0x76, 0x13, + 0x4f, 0x81, 0x3c, 0x1d, 0x67, 0xc3, 0x69, 0x02, 0xb8, 0x63, + 0xfb, 0x31, 0xd2, 0x9e, 0x45, 0xd2, 0x16, 0x18, 0xf8, 0xa4, + 0x07, 0xa0, 0x71, 0x90, 0x4b, 0xe4, 0xbb, 0x56, 0x5b, 0x80, + 0x9c, 0x5b, 0x28, 0x52, 0xfe, 0xf8, 0x3d, 0x5e, 0x9e, 0xfa, + 0xe6, 0x0a, 0x97, 0xda, 0xff, 0x50, 0xbc, 0xff, 0x11, 0xb2, + 0x10, 0x63, 0xb0, 0x54, 0x2c, 0xf3, 0x1f, 0x95, 0x61, 0xe7, + 0xbb, 0xd1, 0x86, 0xbb, 0x1d, 0x14, 0x84, 0xf6, 0xe5, 0xf0, + 0xa8, 0xd8, 0x8f, 0x96, 0x07, 0x7d, 0xc2, 0xf0, 0x07, 0xc2, + 0x33, 0x15, 0x30, 0xa5, 0x13, 0xfc, 0x74, 0xd6, 0x21, 0x7c, + 0xa3, 0xea, 0xb9, 0xac, 0x1f, 0xb9, 0x51, 0x5d, 0x9d, 0x5f, + 0x06, 0x1a, 0xe0, 0xa0, 0x13, 0x85, 0x04, 0x8b, 0xbf, 0x2b, + 0x77, 0xbf, 0x85, 0x86, 0xb6, 0x67, 0xe0, 0xe7, 0x38, 0x28, + 0x74, 0xb0, 0x01, 0x52, 0xef, 0x3e, 0xfe, 0xef, 0x34, 0xbf, + 0xd8, 0x62, 0xa4, 0x08, 0x29, 0xb5, 0x75, 0x0d, 0x79, 0x5b, + 0xdc, 0x2e, 0x0c, 0xdc, 0x31, 0x24, 0xb7, 0x7d, 0xeb, 0x73, + 0x4a, 0x3b, 0x19, 0x9d, 0xb2, 0xd1, 0x1b, 0xfb, 0x57, 0x1b, + 0xbc, 0x66, 0x58, 0xfc, 0x6d, 0xed, 0x8a, 0x21, 0x8d, 0x2f, + 0xf7, 0x6f, 0x27, 0x84, 0x41, 0x27, 0xb8, 0x04, 0x95, 0x8f, + 0x5e, 0x30, 0xf6, 0x38, 0xfd, 0x2e, 0xd5, 0x19, 0x3e, 0x02, + 0x8f, 0x3e, 0x48, 0x2b, 0xd4, 0xda, 0xd0, 0x37, 0x34, 0x61, + 0xec, 0x12, 0x21, 0x80, 0xe7, 0x09, 0xdf, 0xe7, 0xc7, 0x58, + 0xbc, 0x83, 0xae, 0x26, 0xca, 0x96, 0x40, 0x41, 0x75, 0x05, + 0xb0, 0x44, 0x93, 0xb0, 0x84, 0x7f, 0x14, 0x0b, 0x9c, 0x41, + 0x27, 0xbf, 0x68, 0x21, 0xe8, 0xae, 0x69, 0x4f, 0xc3, 0x69, + 0x0b, 0x0c, 0x7c, 0x52, 0xe2, 0x50, 0xd9, 0x48, 0xc4, 0x72, + 0xbc, 0x2b, 0x21, 0x03, 0x29, 0x21, 0x6c, 0xdf, 0xbe, 0xb7, + 0xb8, 0xcd, 0x2e, 0xb0, 0x9a, 0x1b, 0xd0, 0xc0, 0x0f, 0x6f, + 0xe4, 0x0f, 0x01, 0xf9, 0xa2, 0x6c, 0x7c, 0xa6, 0x1f, 0x97, + 0x1c, 0x91, 0xe9, 0xfc, 0xf1, 0xe0, 0xf5, 0xf1, 0x36, 0x8e, + 0x5f, 0xba, 0x5c, 0x87, 0x17, 0x58, 0x4d, 0xec, 0x68, 0x60, + 0x1a, 0x24, 0xfa, 0x1a, 0x9a, 0xa3, 0xb5, 0x49, 0xfd, 0x98, + 0xae, 0x1d, 0xc3, 0xc7, 0x17, 0x14, 0x0d, 0x12, 0x7d, 0x0d, + 0x4d, 0xb0, 0xbb, 0xc5, 0x9f, 0x4c, 0x57, 0xef, 0x80, 0x82, + 0xea, 0x0a, 0xa6, 0xad, 0xb9, 0xa6, 0x75, 0xa9, 0xf7, 0x32, + 0x6e, 0xe0, 0xfa, 0x71, 0x65, 0x8c, 0xf5, 0xcb, 0x02, 0x7d, + 0x99, 0x02, 0x4c, 0x49, 0x19, 0xa9, 0xe3, 0xea, 0x48, 0x78, + 0x9c, 0x13, 0x03, 0xf6, 0x6a, 0xed, 0xf7, 0x6a, 0x61, 0x80, + 0x88, 0x4e, 0x91, 0xcf, 0xb5, 0x0c, 0x16, 0x89, 0x5f, 0xa6, + 0x08, 0x37, 0x21, 0x08, 0xf3, 0xe7, 0x64, 0xe1, 0x0a, 0x2e, + 0xe3, 0x23, 0x35, 0x4c, 0x0c, 0x5e, 0x4c, 0xb6, 0x1b, 0x4c, + 0xff, 0x41, 0xf0, 0x74, 0x5f, 0x8a, 0x67, 0x08, 0xa5, 0x4f, + 0x6a, 0xc4, 0x49, 0x93, 0x47, 0x49, 0x41, 0x16, 0x2f, 0x50, + 0xca, 0xe8, 0xd3, 0xc4, 0x10, 0x81, 0x8c, 0x90, 0x91, 0x47, + 0xba, 0x91, 0xe8, 0xa0, 0xaa, 0xbc, 0x24, 0x8c, 0x09, 0x0f, + 0xf2, 0x3a, 0x38, 0x6e, 0xe1, 0x8e, 0xb7, 0xe1, 0x13, 0x83, + 0x97, 0xbb, 0x48, 0xdb, 0x12, 0x1e, 0x27, 0x74, 0x70, 0xdc, + 0x8b, 0x63, 0x40, 0x8b, 0x72, 0x03, 0x1f, 0xf5, 0xd9, 0x14, + 0xa7, 0x12, 0x31, 0xfd, 0x2f, 0x7a, 0x14, 0x94, 0xb3, 0x14, + 0xbd, 0x9f, 0xfa, 0x90, 0x11, 0x4b, 0x95, 0xb6, 0x91, 0xbe, + 0x1e, 0x93, 0x95, 0xbd, 0x4b, 0x95, 0x70, 0x32, 0x98, 0x2d, + 0x21, 0x9b, 0x99, 0xff, 0x09, 0x1c, 0x3e, 0x41, 0xb8, 0x73, + 0xb2, 0xb8, 0x77, 0x98, 0x70, 0xea, 0x96, 0x6f, 0xc4, 0x9c, + 0x5d, 0x6d, 0xe4, 0xf0, 0x9e, 0x28, 0x5e, 0x9e, 0xe9, 0x59, + 0x08, 0xd0, 0x58, 0x2a, 0x16, 0x98, 0xee, 0xab, 0xd1, 0x92, + 0xeb, 0xc4, 0x0f, 0xeb, 0xac, 0x2d, 0xea, 0xf3, 0xa1, 0x1f, + 0xb9, 0x45, 0x8e, 0x2b, 0x7f, 0x74, 0x6e, 0x17, 0x06, 0x6e, + 0xf9, 0x12, 0xba, 0xdf, 0x94, 0xd8, 0x25, 0xfc, 0xed, 0xaf, + 0x59, 0x89, 0xc3, 0x2f, 0xaa, 0xc3, 0x15, 0xd0, 0xdd, 0x10, + 0x83, 0x89, 0x50, 0xea, 0x6f, 0x94, 0x43, 0x91, 0x98, 0xaf, + 0x36, 0x98, 0x3d, 0x82, 0x23, 0xe8, 0xbe, 0xd7, 0xce, 0x10, + 0x89, 0x9e, 0xd4, 0x4b, 0x70, 0xc9, 0x0d, 0x70, 0xfb, 0x23, + 0x3d, 0x07, 0x6c, 0x57, 0x1b, 0x11, 0xd5, 0x4e, 0x48, 0xb2, + 0x72, 0xb4, 0x94, 0x72, 0xb7, 0x6a, 0x24, 0xae, 0x8f, 0xbd, + 0x53, 0x69, 0x49, 0x5d, 0x4b, 0x44, 0x04, 0xfa, 0xf1, 0x04, + 0x98, 0x92, 0x32, 0x91, 0x05, 0x17, 0x90, 0xf0, 0xfb, 0x26, + 0x06, 0x2f, 0xed, 0x43, 0x67, 0xed, 0x78, 0xf6, 0xc1, 0xcb, + 0x47, 0xe2, 0x61, 0xcd, 0xe9, 0x1e, 0x7a, 0xad, 0xf2, 0x42, + 0xc1, 0xf2, 0x5c, 0x02, 0xab, 0xa6, 0x2f, 0x18, 0x7b, 0x1c, + 0x9f, 0x17, 0x8b, 0xed, 0x47, 0x23, 0x0e, 0x47, 0x66, 0x2a, + 0x60, 0x89, 0x26, 0x3b, 0xe8, 0x6f, 0x42, 0xf8, 0x85, 0x17, + 0x45, 0x5e, 0x97, 0x45, 0x2a, 0x63, 0x79, 0x20, 0xc5, 0xd1, + 0xa0, 0x17, 0xde, 0xeb, 0x86, 0xe1, 0x9a, 0xd2, 0xaf, 0x9a, + 0x71, 0xcb, 0x3a, 0x41, 0x5d, 0x3d, 0x86, 0x68, 0x15, 0x8d, + 0xd7, 0xbd, 0xd5, 0xc6, 0x80, 0xd5, 0xe4, 0x06, 0x3e, 0x29, + 0x71, 0x28, 0x8d, 0x24, 0x62, 0x39, 0x5e, 0xf4, 0xd9, 0x0b, + 0x50, 0xd9, 0x8f, 0x73, 0x68, 0x59, 0x7e, 0x11, 0xfe, 0xf7, + 0xac, 0x53, 0x54, 0x85, 0x8d, 0xe4, 0x28, 0x8d, 0xa6, 0xd8, + 0x34, 0xcd, 0x3f, 0xe9, 0x7f, 0x9a, 0x56, 0xc8, 0x2a, 0xa3, + 0x3b, 0x27, 0xd3, 0x3b, 0xf6, 0x7c, 0x0b, 0xfe, 0x45, 0x55, + 0x80, 0xad, 0x59, 0xdc, 0xc7, 0xd4, 0x6f, 0xc8, 0xab, 0x6f, + 0xdf, 0xd7, 0x57, 0x6a, 0x04, 0xad, 0x01, 0xc0, 0xa3, 0x47, + 0xb9, 0xf2, 0x4e, 0xcb, 0x82, 0x4e, 0xb3, 0x08, 0xe9, 0xdd, + 0xbc, 0x60, 0x2f, 0x70, 0x39, 0x5c, 0x69, 0x32, 0x34, 0x48, + 0x37, 0x34, 0xf7, 0x85, 0xa9, 0x92, 0x39, 0xf3, 0x9f, 0x3a, + 0x45, 0x4d, 0x2e, 0x28, 0x74, 0x33, 0xfc, 0x74, 0x63, 0xb1, + 0x0f, 0x96, 0x69, 0x40, 0x8b, 0xe1, 0x2e, 0x68, 0x4e, 0x9d, + 0x9f, 0xf7, 0xf3, 0x9f, 0xcf, 0x9c, 0xe5, 0x65, 0xc8, 0x5f, + 0x32, 0xa4, 0xa0, 0x43, 0x31, 0xe9, 0x7d, 0xdb, 0x70, 0x7d, + 0xb6, 0x93, 0x86, 0xc2, 0xf3, 0x1b, 0x4c, 0xfe, 0x55, 0xcc, + 0xa2, 0xb8, 0x61, 0x78, 0xe2, 0x61, 0xf8, 0xeb, 0x18, 0xb3, + 0xe8, 0x7e, 0x3a, 0x6b, 0xf1, 0x3e, 0xb0, 0x75, 0x31, 0x6d, + 0x6b, 0x31, 0x49, 0xd2, 0x76, 0xb6, 0xac, 0x91, 0x2b, 0xf6, + 0xf0, 0x83, 0xc8, 0x7c, 0x09, 0xe8, 0x8c, 0x09, 0xd5, 0x22, + 0x89, 0x54, 0x9a, 0x5b, 0xc7, 0x1f, 0x7b, 0xa4, 0xec, 0x25, + 0x12, 0x13, 0xdb, 0x12, 0x69, 0x44, 0xd1, 0xa8, 0xf7, 0xb6, + 0x4d, 0x3e, 0xf6, 0x8b, 0x1b, 0x4a, 0x64, 0x5d, 0xbe, 0x64, + 0x46, 0xbc, 0xc7, 0x97, 0x7d, 0x1c, 0x8e, 0xa7, 0x44, 0xf0, + 0x56, 0x21, 0xd7, 0xbb, 0x19, 0xd7, 0xa8, 0x4f, 0x27, 0x80, + 0x92, 0xc2, 0xc5, 0x5c, 0xfe, 0x2a, 0x5d, 0x02, 0x93, 0x3a, + 0x23, 0x93, 0xa4, 0xe9, 0xb3, 0x15, 0xc7, 0x66, 0x41, 0x77, + 0x6e, 0x29, 0x3b, 0x98, 0x3a, 0xf8, 0x7e, 0x3a, 0xd0, 0xb9, + 0xe6, 0x4b, 0xd5, 0x20, 0xa4, 0x91, 0x17, 0x34, 0x27, 0xaf, + 0xa3, 0x88, 0xe5, 0xa3, 0xcb, 0xfe, 0x28, 0x16, 0xfb, 0x82, + 0x4e, 0xbd, 0xd0, 0x42, 0x13, 0x9f, 0xad, 0x38, 0xac, 0xad, + 0xec, 0xc2, 0x67, 0xcf, 0x17, 0x51, 0x75, 0x16, 0x82, 0x3b, + 0x1a, 0x18, 0x1c, 0xa3, 0x92, 0x1c, 0x4e, 0x78, 0x9e, 0x71, + 0x1b, 0x65, 0x76, 0x95, 0xa4, 0xf2, 0x12, 0xcd, 0x7e, 0x79, + 0x44, 0x7e, 0xdc, 0x1f, 0x72, 0xde, 0x80, 0x84, 0x20, 0xba, + 0x87, 0x37, 0x41, 0x35, 0x76, 0x4e, 0x65, 0x76, 0x2f, 0xf8, + 0x16, 0x3f, 0x8a, 0xaa, 0xc3, 0x99, 0xb2, 0x7b, 0x4d, 0x6b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x10, 0xf2, 0x33, + 0x05, 0x9b, 0x6f, 0x1f, 0x4f, 0x7b, 0x63, 0x8e, 0x6c, 0x90, + 0xcb, 0x8a, 0xf7, 0x67, 0x9d, 0xf7, 0xe2, 0x55, 0x74, 0x82, + 0xba, 0x7a, 0xcf, 0xd0, 0x2a, 0xd9, 0x6d, 0xb9, 0x28, 0xeb, + 0xa5, 0x28, 0xb9, 0xfd, 0x37, 0xe3, 0x22, 0x96, 0xe9, 0xaf, + 0xe1, 0xbf, 0x3c, 0xe5, 0x23, 0x7e, 0xb0, 0x23, 0x20, 0x96, + 0xa7, 0x1e, 0x5b, 0x27, 0x66, 0xc8, 0x06, 0x08, 0xd3, 0x36, + 0xb2, 0x39, 0x0a, 0xb2, 0xc8, 0x36, 0x0d, 0xa2, 0x7f, 0xab, + 0x6f, 0xc7, 0xf4, 0x32, 0xeb, 0x58, 0xbe, 0xf4, 0xda, 0xbe, + 0xa3, 0x43, 0x5b, 0xd2, 0x70, 0x92, 0x1c, 0x14, 0x3a, 0x58, + 0xe1, 0x29, 0x42, 0x06, 0x52, 0x42, 0xd8, 0x7d, 0xbf, 0xad, + 0xb3, 0x59, 0x5c, 0xa3, 0xf7, 0x36, 0x63, 0x43, 0x11, 0xb1, + 0xef, 0x11, 0x03, 0xc8, 0x25, 0xb4, 0x84, 0x29, 0x21, 0x7a, + 0x24, 0x70, 0xf8, 0xc7, 0xc4, 0x77, 0x6f, 0xc4, 0xe7, 0xce, + 0x1b, 0x9d, 0xf5, 0x01, 0xac, 0x5e, 0x46, 0x49, 0xa6, 0x33, + 0x5f, 0x7a, 0x6d, 0x5f, 0xb0, 0xc0, 0xcc, 0x69, 0x38, 0x49, + 0x0e, 0x0a, 0x1d, 0x2c, 0x91, 0xf5, 0x30, 0xb2, 0xc6, 0x30, + 0x6f, 0x17, 0x9b, 0x03, 0x3c, 0xe4, 0x0f, 0xca, 0xbe, 0x6b, + 0x28, 0x07, 0x01, 0xdf, 0xad, 0x01, 0x26, 0xc5, 0xed, 0xb5, + 0x90, 0x75, 0x24, 0x3c, 0x4e, 0xe8, 0xe0, 0x7b, 0xd8, 0xd4, + 0xfd, 0xd8, 0xa9, 0xb6, 0x85, 0xec, 0xee, 0x64, 0xda, 0xcb, + 0xe2, 0xbb, 0xb4, 0xfe, 0x05, 0x25, 0x5c, 0x05, 0xbe, 0x57, + 0xdf, 0x24, 0x95, 0x62, 0xb4, 0xcc, 0xb5, 0xce, 0xe6, 0x54, + 0x32, 0xcf, 0x5f, 0x32, 0x23, 0x5e, 0x82, 0xaa, 0xdf, 0x0e, + 0x47, 0xb2, 0x22, 0x78, 0x2b, 0xf1, 0xdf, 0x8c, 0x38, 0xdf, + 0x5b, 0xa8, 0x43, 0x61, 0x98, 0xec, 0x26, 0x7f, 0xcb, 0x66, + 0x51, 0x5c, 0xba, 0x0e, 0x2b, 0xba, 0x3b, 0xd1, 0x69, 0x43, + 0x75, 0x85, 0x8c, 0xe4, 0xc1, 0x7e, 0xe7, 0x06, 0x8e, 0x46, + 0x1c, 0x8e, 0xcc, 0x54, 0xc0, 0xd1, 0x4c, 0x76, 0x13, 0xde, + 0x84, 0x33, 0xc9, 0x2e, 0x73, 0x6b, 0x39, 0x73, 0x91, 0xaf, + 0xc9, 0x1b, 0x1f, 0xc8, 0x77, 0x55, 0x07, 0xb5, 0xab, 0x3f, + 0xfd, 0x2d, 0x25, 0xfd, 0x5d, 0xfb, 0x09, 0xca, 0x53, 0xbe, + 0x64, 0x8b, 0x83, 0x86, 0x62, 0x11, 0x8c, 0x3b, 0x85, 0x8c, + 0x80, 0x1d, 0xd9, 0x78, 0xaf, 0x9c, 0x5b, 0xa6, 0x18, 0x20, + 0xca, 0xd8, 0xb3, 0xe6, 0xa7, 0xb3, 0xee, 0xf3, 0xe0, 0x17, + 0xef, 0xde, 0x4b, 0xfb, 0xba, 0xda, 0x0b, 0x23, 0x56, 0x92, + 0xe1, 0x56, 0x65, 0xe2, 0x45, 0x3d, 0xa2, 0x12, 0xc9, 0x15, + 0x66, 0x88, 0x7d, 0xd0, 0x2b, 0x49, 0x91, 0x2b, 0xd3, 0x71, + 0xc3, 0xff, 0x51, 0x09, 0x85, 0xeb, 0x33, 0x44, 0xdf, 0x68, + 0x82, 0x8b, 0xcc, 0x82, 0xa7, 0x21, 0x96, 0xa1, 0x43, 0x4f, + 0x60, 0x0d, 0x4a, 0x59, 0xc3, 0x5f, 0x6b, 0x32, 0x5a, 0x6b, + 0x47, 0x45, 0x65, 0xfb, 0x01, 0xba, 0x91, 0x30, 0x58, 0x61, + 0xbf, 0xdd, 0x87, 0xae, 0x90, 0x87, 0x19, 0x76, 0x49, 0x85, + 0xd6, 0x2d, 0xd4, 0xc1, 0xff, 0x97, 0x25, 0x0b, 0xae, 0x9a, + 0x98, 0xae, 0x86, 0x4e, 0x93, 0xd3, 0x64, 0xce, 0x19, 0x52, + 0x50, 0xc0, 0xf9, 0x95, 0x46, 0xfc, 0xa3, 0x46, 0x40, 0xef, + 0x8d, 0x3c, 0xb6, 0x4e, 0xcc, 0x53, 0x0c, 0x10, 0x65, 0x6c, + 0xa9, 0xc2, 0x5d, 0xa9, 0x74, 0x50, 0x55, 0x5e, 0x12, 0x46, + 0xe5, 0xe6, 0x79, 0x1d, 0x1c, 0x37, 0xe0, 0x51, 0x1a, 0xe0, + 0x35, 0x46, 0x7a, 0x0e, 0xd8, 0xae, 0x36, 0x22, 0x69, 0x9c, + 0x90, 0xa7, 0xc6, 0x0a, 0xf6, 0xc6, 0xab, 0x87, 0x02, 0x34, + 0x16, 0xeb, 0xe4, 0x26, 0xda, 0x5a, 0xa5, 0xc5, 0xaf, 0x45, + 0x35, 0xaf, 0xa0, 0x8b, 0x7e, 0x66, 0xf4, 0xbb, 0x3d, 0x6e, + 0x1e, 0x28, 0x19, 0xee, 0xb1, 0x9b, 0x3e, 0xb1, 0xa2, 0xba, + 0xf9, 0xbe, 0x0c, 0x34, 0x03, 0x83, 0x26, 0xc9, 0x08, 0xd5, + 0x0e, 0xb0, 0x49, 0x0e, 0x27, 0x3c, 0x4f, 0xd9, 0xec, 0xd3, + 0x3b, 0xab, 0x52, 0x79, 0x09, 0x87, 0x89, 0x1e, 0xd9, 0x89, + 0x3e, 0x4a, 0x06, 0x5c, 0x3a, 0xfe, 0xef, 0x6a, 0xad, 0xee, + 0x2c, 0x8c, 0x79, 0x21, 0x81, 0x79, 0x2e, 0x01, 0xb4, 0x53, + 0xf6, 0x0c, 0xdc, 0x0e, 0xae, 0xea, 0xa4, 0x97, 0xd3, 0x41, + 0xe8, 0xd3, 0x30, 0xdd, 0x15, 0x11, 0x97, 0xd5, 0x55, 0xac, + 0x05, 0x0c, 0x5b, 0x2d, 0x2d, 0xce, 0xf9, 0x2d, 0x07, 0xaa, + 0xe8, 0xc7, 0xb7, 0xf4, 0x5d, 0x63, 0x54, 0x71, 0xda, 0xb1, + 0xc9, 0x65, 0x12, 0xc9, 0xaa, 0x7e, 0xa0, 0x58, 0x6a, 0x4d, + 0xfb, 0xb1, 0xc6, 0xcb, 0x4c, 0x39, 0x0a, 0x4a, 0xb8, 0x0a, + 0xbf, 0xae, 0x7d, 0x48, 0xe9, 0xc4, 0xab, 0x5b, 0xa9, 0x5f, + 0x0f, 0xa8, 0xdb, 0x76, 0xc9, 0xdb, 0xc3, 0x3a, 0x71, 0xf0, + 0x9d, 0xfb, 0xb6, 0x8f, 0x30, 0x40, 0x57, 0x73, 0x7b, 0x5c, + 0x18, 0x7b, 0x62, 0x48, 0xad, 0xfa, 0x15, 0xe6, 0x94, 0x76, + 0x32, 0xf9, 0xa7, 0x61, 0xde, 0x53, 0x95, 0xde, 0x7d, 0x6d, + 0xae, 0xd4, 0x08, 0x99, 0x02, 0x43, 0x85, 0x8e, 0xb1, 0x27, + 0x48, 0x4c, 0xea, 0x48, 0x67, 0xd3, 0xc2, 0xe5, 0x5a, 0x9d, + 0xf7, 0xf8, 0x5e, 0x69, 0x6c, 0xeb, 0xe3, 0xf3, 0x2e, 0xe3, + 0x5f, 0xca, 0x8e, 0x12, 0xab, 0x31, 0x5a, 0x66, 0xbb, 0x67, + 0x73, 0x2a, 0x4b, 0xee, 0xde, 0x4b, 0x0d, 0x5f, 0x36, 0xf9, + 0x29, 0x02, 0x9b, 0xbc, 0x8c, 0x92, 0x8f, 0x66, 0x35, 0x97, + 0x9a, 0x35, 0xd1, 0x40, 0x44, 0x27, 0xa9, 0x86, 0xbb, 0x06, + 0x0b, 0xa5, 0xce, 0x53, 0x8a, 0xbc, 0xed, 0x8a, 0x54, 0xc6, + 0xf2, 0x40, 0x49, 0x61, 0x83, 0x2e, 0x7f, 0x15, 0xcf, 0x01, + 0xfb, 0xaa, 0x4d, 0xfb, 0x89, 0x20, 0x22, 0xf2, 0xb5, 0x43, + 0xbc, 0x03, 0xe4, 0xb3, 0x67, 0xc8, 0x85, 0xd3, 0x09, 0x85, + 0x55, 0x3f, 0x50, 0x2c, 0x35, 0xc7, 0x9c, 0xb9, 0x63, 0x84, + 0x26, 0xfd, 0xcb, 0x18, 0x8b, 0xcb, 0xe6, 0x37, 0xb9, 0xf1, + 0x89, 0xa7, 0xb3, 0xc9, 0x5a, 0xd8, 0x4f, 0xcf, 0xb7, 0x1c, + 0x56, 0xb7, 0x76, 0x61, 0xd2, 0x86, 0xea, 0xc9, 0xdb, 0x0b, + 0x41, 0xfc, 0x0d, 0x0c, 0x2a, 0x96, 0x3c, 0x2a, 0xf5, 0xb4, + 0x2e, 0x4a, 0xc1, 0x7c, 0xa1, 0xd7, 0x7d, 0xac, 0x3f, 0x13, + 0xab, 0xbf, 0xc4, 0xab, 0x38, 0x19, 0x4c, 0xf7, 0xf1, 0xac, + 0xad, 0x9e, 0xe5, 0x0e, 0x1f, 0xc1, 0x3f, 0xdd, 0x22, 0x3f, + 0x6e, 0xee, 0x39, 0x6f, 0x40, 0x42, 0x10, 0x5d, 0xa2, 0xfa, + 0xc1, 0xfb, 0x39, 0x5a, 0x4a, 0x39, 0xba, 0x35, 0x12, 0x57, + 0xa6, 0xbf, 0xc8, 0xd5, 0xc5, 0xcf, 0xc4, 0x22, 0xea, 0x1b, + 0xa2, 0xea, 0x8a, 0xe8, 0x07, 0x46, 0x31, 0x6a, 0x9d, 0x79, + 0xc0, 0xc3, 0x9f, 0x0f, 0xb5, 0x61, 0xcf, 0xb5, 0x3a, 0x28, + 0xcb, 0x2f, 0x09, 0x23, 0x93, 0x73, 0xdd, 0xef, 0x0e, 0xfa, + 0x51, 0xca, 0x24, 0x51, 0x97, 0xfc, 0x83, 0xb0, 0xd4, 0x9a, + 0x35, 0xa1, 0x4f, 0x55, 0x98, 0x72, 0x9b, 0x0d, 0x02, 0x9b, + 0x57, 0x0e, 0xd7, 0xf4, 0xcd, 0x48, 0xa2, 0x54, 0x5b, 0x65, + 0x37, 0xc6, 0x7a, 0x83, 0xb5, 0x7a, 0x44, 0x8d, 0x40, 0x4f, + 0x85, 0x93, 0xb0, 0x4a, 0x7c, 0x11, 0x47, 0x1a, 0xa1, 0xf5, + 0x7c, 0xa1, 0x87, 0xb7, 0x31, 0xbf, 0x18, 0x68, 0x06, 0xc5, + 0x4c, 0x51, 0x10, 0x69, 0xd0, 0xe3, 0xdc, 0xd0, 0x5a, 0x51, + 0xe1, 0x0d, 0xe4, 0x4a, 0x39, 0xe8, 0xd7, 0xf7, 0xb8, 0xa0, + 0x4a, 0x31, 0x73, 0x4a, 0x2b, 0x9a, 0xdb, 0x4c, 0xb9, 0x77, + 0xbf, 0x80, 0xc2, 0x7a, 0x6f, 0x1d, 0x77, 0x91, 0xc8, 0x77, + 0x09, 0x3d, 0xfb, 0x8a, 0x1a, 0xdf, 0xe7, 0xa5, 0xfc, 0x93, + 0xad, 0x10, 0x5d, 0x07, 0xf4, 0x5d, 0xfc, 0x89, 0xd5, 0xc0, + 0xdb, 0xa3, 0x46, 0x72, 0x81, 0x3f, 0x92, 0x03, 0x4f, 0x14, + 0x2f, 0x4f, 0x95, 0xcd, 0x04, 0x68, 0x2c, 0x15, 0x0b, 0x4c, + 0x77, 0xb4, 0x89, 0x49, 0x1d, 0x7c, 0x3f, 0x1d, 0x68, 0xbd, + 0x73, 0xc4, 0x8b, 0x10, 0x52, 0xa9, 0xea, 0x1a, 0xf2, 0xb6, + 0x83, 0x54, 0x61, 0x83, 0x81, 0xe4, 0x7b, 0x14, 0xd3, 0x3a, + 0x44, 0x31, 0x04, 0xb1, 0x23, 0x24, 0x52, 0x68, 0x10, 0x52, + 0xfd, 0x70, 0x77, 0xac, 0xa7, 0x05, 0x59, 0xe5, 0x9d, 0xae, + 0x7b, 0xff, 0x25, 0xf9, 0xd8, 0x25, 0xf4, 0x4d, 0x8c, 0x26, + 0xbd, 0xda, 0xbe, 0x40, 0x61, 0x3d, 0xd6, 0xef, 0xfe, 0x8f, + 0x11, 0xfe, 0x37, 0x77, 0xfd, 0xd6, 0x20, 0x21, 0x08, 0xcf, + 0x51, 0x7d, 0x81, 0x9c, 0x3d, 0xa0, 0xbb, 0x3d, 0x22, 0xa7, + 0x20, 0xc6, 0xa3, 0xa8, 0x58, 0x25, 0x3e, 0xe9, 0xc2, 0x0d, + 0x58, 0x22, 0xa8, 0x58, 0x42, 0xde, 0x0a, 0xe4, 0x4e, 0xc1, + 0xf2, 0xbe, 0x34, 0xf1, 0x74, 0x57, 0x55, 0x30, 0xd5, 0x55, + 0x0f, 0x6e, 0xb1, 0x21, 0xd1, 0x8d, 0xa5, 0x51, 0xb4, 0x73, + 0x9e, 0x5d, 0xf9, 0xd7, 0xd4, 0xf9, 0xc5, 0x69, 0x3b, 0x5b, + 0x56, 0xa9, 0xf4, 0x7b, 0x78, 0xa0, 0x64, 0x3e, 0xac, 0xe7, + 0x01, 0xac, 0xca, 0x07, 0x8a, 0x7a, 0x87, 0x24, 0x51, 0x2a, + 0xcc, 0xd3, 0xfa, 0x63, 0xfc, 0xf2, 0x88, 0xfc, 0x7b, 0x3e, + 0xe4, 0x7f, 0xc3, 0xcb, 0x40, 0xb7, 0xcd, 0x6e, 0x82, 0x6a, + 0x68, 0x90, 0x6e, 0x68, 0x2d, 0xc9, 0x91, 0xe7, 0x72, 0x25, + 0xfd, 0x74, 0x8a, 0x9a, 0x5c, 0x50, 0xc1, 0x52, 0x33, 0xc1, + 0x59, 0x99, 0xc4, 0xb9, 0x60, 0x63, 0x18, 0x92, 0xf3, 0x87, + 0x40, 0x67, 0x38, 0x85, 0xe7, 0x38, 0x9c, 0xf0, 0xff, 0xe2, + 0x36, 0xca, 0xec, 0xe9, 0x8b, 0x27, 0x24, 0x59, 0x75, 0xec, + 0x51, 0x75, 0x45, 0x74, 0xe2, 0x23, 0xf9, 0x35, 0xaf, 0xdd, + 0x60, 0x80, 0xae, 0xe6, 0x6d, 0xb5, 0x32, 0x6d, 0x93, 0x9e, + 0x4e, 0xc3, 0xe7, 0x47, 0x49, 0xb8, 0x3f, 0x54, 0xba, 0x04, + 0x1f, 0x01, 0xa6, 0x1f, 0x24, 0xf4, 0x6a, 0x6d, 0x68, 0xfa, + 0x1a, 0xd1, 0x76, 0x09, 0xf1, 0x40, 0x17, 0x36, 0x87, 0x17, + 0xd7, 0x13, 0x0e, 0x8c, 0x62, 0xd4, 0xf9, 0xf2, 0x43, 0x45, + 0xfd, 0x1e, 0x44, 0x81, 0x3a, 0x44, 0x0c, 0xa6, 0x94, 0x95, + 0x55, 0xa4, 0x84, 0x2b, 0x90, 0x03, 0x66, 0x9a, 0xcc, 0x40, + 0x4e, 0xcc, 0x14, 0x29, 0x7f, 0x7c, 0xff, 0x2f, 0x4f, 0x7d, + 0x73, 0x05, 0xaa, 0x6d, 0xc5, 0xa8, 0xc2, 0xc5, 0xc1, 0x0b, + 0xf6, 0x28, 0x65, 0x74, 0x88, 0x62, 0x08, 0xa1, 0x46, 0x48, + 0xee, 0xe1, 0x53, 0xee, 0x12, 0x7a, 0x35, 0xd7, 0x34, 0x7d, + 0x0d, 0x89, 0x3b, 0xe5, 0x99, 0x20, + }, + { + /* 11 */ + 0xfe, 0x50, 0x71, 0x7c, 0xfc, 0x9b, 0xad, 0x09, 0xfc, 0x5e, + 0x38, 0x3f, 0x3f, 0x68, 0x53, 0x1b, 0x6d, 0x9f, 0xd8, 0xf4, + 0xee, 0xe2, 0xd1, 0xe9, 0xee, 0x90, 0x3c, 0xda, 0xda, 0xa3, + 0xbc, 0xf8, 0x53, 0x94, 0xe4, 0x01, 0xdd, 0x92, 0x0e, 0x3a, + 0xdd, 0xb8, 0xb0, 0xa6, 0xa6, 0x24, 0x5d, 0x4e, 0xab, 0xb8, + 0x14, 0x53, 0x11, 0x91, 0xf4, 0xf0, 0x11, 0x18, 0xc5, 0x95, + 0x95, 0x7d, 0x5f, 0xd3, 0xc0, 0x5b, 0x4d, 0x89, 0xcf, 0xeb, + 0x72, 0xda, 0xcf, 0x76, 0xb4, 0x43, 0x43, 0xef, 0xb2, 0xad, + 0x7d, 0xbd, 0xa6, 0x24, 0x6e, 0x65, 0x3b, 0xa4, 0x6e, 0xc4, + 0x27, 0xfa, 0xfa, 0x9a, 0x46, 0x2f, 0xaf, 0x51, 0xea, 0x67, + 0x31, 0xc0, 0x2f, 0x72, 0x31, 0x0d, 0xb3, 0x9d, 0x9d, 0xe2, + 0x80, 0x96, 0x72, 0x7b, 0xc6, 0x6f, 0x16, 0xda, 0x5f, 0x61, + 0x16, 0x84, 0x7a, 0xe4, 0xe4, 0x01, 0x2d, 0xa3, 0x27, 0x93, + 0xa3, 0x40, 0xfb, 0xd0, 0x06, 0x98, 0xfb, 0xc2, 0x87, 0x4e, + 0x4e, 0x14, 0x21, 0x6b, 0xf9, 0x87, 0x2e, 0x5f, 0xc4, 0x86, + 0xbc, 0x0b, 0xc4, 0x34, 0x89, 0x31, 0x31, 0x0e, 0x45, 0x1d, + 0x8e, 0xbe, 0xc8, 0x09, 0xfa, 0x88, 0x7e, 0x29, 0xfa, 0x31, + 0x79, 0xdf, 0xdf, 0xc7, 0xf0, 0x7b, 0x8a, 0x57, 0x36, 0x3d, + 0xda, 0xd9, 0xa5, 0xab, 0xda, 0x24, 0x0f, 0xd7, 0xd7, 0x58, + 0x2f, 0x3e, 0x3c, 0x9e, 0x43, 0xef, 0x23, 0xb9, 0x53, 0x92, + 0x23, 0xc3, 0xb7, 0x78, 0x78, 0x29, 0x6f, 0x75, 0x50, 0xaa, + 0x45, 0x16, 0xc5, 0xde, 0xc4, 0xba, 0xc5, 0xc7, 0x77, 0xa0, + 0xa0, 0xdd, 0x94, 0x0d, 0xe1, 0xb4, 0x6f, 0xe7, 0x04, 0xa3, + 0x23, 0x81, 0x04, 0x4a, 0x7e, 0x01, 0x01, 0xca, 0xc2, 0x40, + 0x41, 0x23, 0xe5, 0xcb, 0x4d, 0xdc, 0x68, 0x36, 0x4d, 0x07, + 0x90, 0x82, 0x82, 0xb3, 0x29, 0x5a, 0xb4, 0x5c, 0x0a, 0xc8, + 0xe9, 0xa9, 0x7a, 0x78, 0xe9, 0x0c, 0x83, 0xab, 0xab, 0xdf, + 0xce, 0x88, 0xd7, 0xae, 0x6c, 0x7a, 0x77, 0x71, 0x89, 0x95, + 0x77, 0x48, 0x1e, 0x6d, 0x6d, 0xb0, 0x5e, 0x7c, 0x1e, 0x4f, + 0xc0, 0x96, 0xf0, 0xbd, 0xc8, 0x49, 0xf0, 0x80, 0xba, 0x3c, + 0x3c, 0xf5, 0xd6, 0xdb, 0x23, 0x7a, 0x5d, 0x74, 0xdb, 0x81, + 0xdd, 0x1a, 0xdb, 0xd7, 0xf1, 0x46, 0x46, 0x8b, 0xfe, 0x2e, + 0x2a, 0xc0, 0xbc, 0x11, 0x93, 0xa6, 0xee, 0x1c, 0x93, 0x69, + 0xe1, 0x54, 0x54, 0x21, 0xc4, 0x24, 0x75, 0xac, 0x99, 0x4c, + 0x2e, 0xc7, 0x4e, 0x63, 0x2e, 0xee, 0xcb, 0xea, 0xea, 0x67, + 0x3b, 0xa5, 0xba, 0x31, 0xb4, 0x8e, 0x99, 0x93, 0x58, 0x7c, + 0x99, 0xd8, 0x22, 0xb7, 0xb7, 0x13, 0xe2, 0x84, 0x86, 0xaf, + 0xf7, 0x61, 0xba, 0x2a, 0x0b, 0xee, 0xba, 0x1b, 0x95, 0xcf, + 0xcf, 0x3a, 0x8d, 0xf1, 0xdb, 0x56, 0xad, 0x26, 0x17, 0x82, + 0x27, 0xd0, 0x17, 0x77, 0x84, 0x75, 0x75, 0xd2, 0xfc, 0xb3, + 0x76, 0x92, 0x38, 0x5b, 0x36, 0x8b, 0x84, 0xe3, 0x36, 0x91, + 0x0c, 0xec, 0xec, 0x9e, 0xf2, 0xe6, 0xb7, 0x62, 0xab, 0xdf, + 0xf1, 0xe5, 0xb0, 0xf8, 0xf1, 0x73, 0x44, 0xad, 0xad, 0x26, + 0x07, 0xcb, 0x2f, 0x82, 0x9c, 0x28, 0xbb, 0x72, 0x73, 0x5f, + 0xbb, 0xe8, 0x6b, 0x5e, 0x5e, 0xe9, 0x5c, 0xe1, 0xe3, 0x21, + 0x10, 0xfd, 0x14, 0x6a, 0xaf, 0xc0, 0x14, 0xa1, 0x45, 0x05, + 0x05, 0x64, 0x4c, 0x83, 0x51, 0x01, 0x9b, 0x1b, 0xcd, 0x5b, + 0x82, 0x7b, 0xcd, 0x53, 0x8b, 0xa2, 0xa2, 0x8a, 0xd3, 0x8d, + 0xd2, 0xec, 0x4c, 0x43, 0x5f, 0xa5, 0x14, 0xd6, 0x5f, 0xc9, + 0x94, 0x67, 0x67, 0x78, 0xc6, 0xb9, 0xb1, 0x1e, 0x2a, 0xf1, + 0xc1, 0x7d, 0xe7, 0x3b, 0xc1, 0x8d, 0x09, 0xa1, 0xa1, 0x17, + 0x56, 0x4d, 0xb6, 0xc9, 0x75, 0xd2, 0xf9, 0x60, 0xf6, 0x39, + 0xf9, 0xe7, 0xb8, 0xaf, 0xaf, 0x71, 0x40, 0x4b, 0x03, 0x3e, + 0xa1, 0x17, 0x18, 0x4c, 0xca, 0x80, 0x18, 0x7f, 0xc7, 0x06, + 0x06, 0xf9, 0xc9, 0x43, 0x44, 0x61, 0xc5, 0xf2, 0x65, 0x08, + 0xf5, 0x75, 0x65, 0x86, 0x1a, 0x88, 0x88, 0x7b, 0xb1, 0x9f, + 0x9a, 0x75, 0x48, 0xed, 0x5a, 0x5e, 0x4f, 0xe6, 0x5a, 0x70, + 0x14, 0xf7, 0xf7, 0x61, 0xd5, 0xe9, 0x8d, 0x80, 0x69, 0x1e, + 0xe2, 0xc4, 0xb4, 0xa9, 0xe2, 0x4e, 0xbe, 0xd9, 0xd9, 0x3e, + 0x39, 0x38, 0xea, 0x9b, 0xf1, 0x98, 0x5c, 0x4d, 0x9c, 0xc6, + 0x5c, 0x1f, 0x55, 0x17, 0x17, 0xce, 0x76, 0x89, 0xc4, 0xb2, + 0xb3, 0xbd, 0xef, 0xba, 0xa9, 0x58, 0xef, 0x63, 0xc2, 0x4b, + 0x4b, 0x70, 0x6d, 0xe8, 0xad, 0xc4, 0x95, 0x7d, 0x21, 0x09, + 0xa3, 0x33, 0x21, 0xe6, 0x88, 0x99, 0x99, 0x4c, 0x0e, 0x55, + 0xb9, 0x0f, 0x15, 0x99, 0x81, 0xdf, 0x92, 0xfc, 0x81, 0xa7, + 0xe5, 0xb1, 0xb1, 0xea, 0x2b, 0xc7, 0xe2, 0x8a, 0xce, 0xf0, + 0x1c, 0xef, 0xe9, 0x01, 0x1c, 0x35, 0xb9, 0x07, 0x07, 0x33, + 0x0b, 0x03, 0xe6, 0x63, 0x30, 0xc4, 0x3c, 0xbe, 0x32, 0x83, + 0x3c, 0x20, 0xcf, 0x0f, 0x0f, 0xac, 0xd4, 0x46, 0x99, 0x4b, + 0xe9, 0xfa, 0x42, 0x12, 0x85, 0x66, 0x42, 0x0f, 0xd3, 0xf1, + 0xf1, 0x98, 0x1c, 0xaa, 0x29, 0xfe, 0x1d, 0x06, 0x8b, 0xea, + 0x24, 0x9c, 0x8b, 0x16, 0x26, 0x52, 0x52, 0xd8, 0x0d, 0x67, + 0xa9, 0x2d, 0x6b, 0x49, 0x01, 0x58, 0x78, 0xb1, 0x01, 0xf3, + 0xfe, 0x91, 0x91, 0xd3, 0xd1, 0x10, 0x61, 0x67, 0x19, 0xa8, + 0x8e, 0x11, 0x7f, 0xac, 0x8e, 0xaf, 0xa6, 0xc2, 0xc2, 0xc1, + 0x1e, 0x37, 0xd0, 0x79, 0x33, 0x59, 0x4f, 0x6c, 0x98, 0x97, + 0x4f, 0x22, 0xaf, 0x63, 0x63, 0xd6, 0x48, 0x7a, 0x48, 0x99, + 0x04, 0xae, 0x05, 0xfb, 0x5b, 0x30, 0x05, 0xb9, 0x80, 0x90, + 0x90, 0x19, 0x13, 0x50, 0xf1, 0x96, 0x11, 0x37, 0x84, 0x24, + 0xc9, 0xcc, 0x84, 0x1e, 0x65, 0x21, 0x21, 0xf3, 0x38, 0x97, + 0x91, 0x5a, 0xd6, 0x92, 0x02, 0xb0, 0xf0, 0xa1, 0x02, 0x25, + 0x3f, 0xe1, 0xe1, 0x65, 0x61, 0x20, 0x65, 0x8e, 0xe7, 0x9c, + 0xae, 0x40, 0xa4, 0x2e, 0xae, 0xba, 0xd0, 0xca, 0xca, 0x5e, + 0xc1, 0x72, 0x24, 0xad, 0x02, 0x57, 0xe3, 0x9c, 0xcc, 0x18, + 0xe3, 0xbd, 0x40, 0x48, 0x48, 0xed, 0xe8, 0x28, 0x9c, 0x09, + 0xc9, 0xc3, 0x6a, 0xc6, 0x18, 0x25, 0x6a, 0x8e, 0x59, 0xfb, + 0xfb, 0x50, 0x84, 0x6f, 0xc8, 0x4a, 0x72, 0xe1, 0x8f, 0x49, + 0x07, 0x1d, 0x8f, 0x5c, 0x58, 0x53, 0x53, 0x12, 0xcf, 0x27, + 0x14, 0xcb, 0x80, 0xe4, 0xa0, 0xd6, 0x31, 0xcf, 0xa0, 0x41, + 0x6d, 0x28, 0x28, 0xa6, 0x25, 0x92, 0x70, 0xee, 0xb9, 0x75, + 0x06, 0x13, 0xd3, 0x20, 0x06, 0x6f, 0x41, 0xe0, 0xe0, 0xaf, + 0xa3, 0x60, 0x39, 0xdc, 0x63, 0xd6, 0x0b, 0x6d, 0xce, 0xd1, + 0x0b, 0x42, 0x3d, 0x72, 0x72, 0xe1, 0xf7, 0xb0, 0x55, 0xe8, + 0x65, 0x2f, 0xed, 0x0a, 0x59, 0xf9, 0xed, 0x46, 0xfd, 0xaa, + 0xaa, 0x15, 0x0c, 0xc8, 0x13, 0x1c, 0xdf, 0xc7, 0x98, 0xcb, + 0x20, 0xcd, 0x98, 0x2b, 0xdc, 0x26, 0x26, 0xc0, 0x33, 0x94, + 0xd6, 0x05, 0xb2, 0x77, 0x7f, 0xf4, 0xcf, 0x54, 0x7f, 0xdc, + 0xe2, 0x6f, 0x6f, 0xe7, 0x19, 0xfc, 0xfb, 0x12, 0x51, 0x45, + 0xd4, 0x4f, 0x30, 0x4a, 0xd4, 0xdf, 0xb2, 0x35, 0x35, 0xa0, + 0xcb, 0xde, 0x22, 0xd1, 0x83, 0x79, 0xd3, 0x04, 0x9b, 0xdb, + 0xd3, 0x43, 0x0d, 0x44, 0x44, 0xdc, 0xb9, 0xae, 0xda, 0xfd, + 0x73, 0x2b, 0x1f, 0x07, 0x61, 0x11, 0x1f, 0xe3, 0x78, 0x77, + 0x77, 0x85, 0xbb, 0x33, 0x25, 0x06, 0xdc, 0x5a, 0xeb, 0x19, + 0x8a, 0xd9, 0xeb, 0x29, 0xbc, 0x4a, 0x4a, 0xba, 0xaf, 0xa8, + 0xe7, 0xc8, 0xee, 0xc9, 0x34, 0x3b, 0x74, 0x42, 0x34, 0xb4, + 0x33, 0x0d, 0x0d, 0xfb, 0x93, 0xc6, 0xe4, 0xf6, 0x4f, 0xde, + 0x2c, 0x77, 0xbe, 0xc2, 0x2c, 0xcb, 0xf4, 0x0b, 0x0b, 0x02, + 0x5a, 0x85, 0xa3, 0xa9, 0x2b, 0x3b, 0x51, 0x33, 0x81, 0x37, + 0x51, 0x32, 0x29, 0x85, 0x85, 0x80, 0x22, 0x59, 0x8c, 0x2b, + 0xb7, 0x13, 0xea, 0x41, 0xf2, 0x68, 0xea, 0xda, 0x42, 0xdb, + 0xdb, 0x69, 0x7e, 0xb8, 0x19, 0x98, 0x9f, 0xb5, 0xc8, 0xa0, + 0xd9, 0x4b, 0xc8, 0xea, 0x0b, 0x32, 0x32, 0x93, 0xc0, 0xdd, + 0x09, 0xba, 0xe1, 0x65, 0x48, 0x27, 0x33, 0x06, 0x48, 0xbe, + 0x10, 0x12, 0x12, 0xaa, 0x3a, 0x0a, 0x2d, 0x17, 0xe3, 0x32, + 0xab, 0xbb, 0xff, 0x1e, 0xab, 0x03, 0x50, 0x5a, 0x5a, 0x47, + 0xd2, 0x22, 0x8f, 0x15, 0x16, 0x04, 0xf2, 0x0d, 0x38, 0xe8, + 0xf2, 0xa5, 0x85, 0xdd, 0xdd, 0x90, 0xb7, 0xfb, 0x94, 0x18, + 0xf6, 0xab, 0x2a, 0x64, 0x6d, 0xe2, 0x2a, 0xa4, 0xb5, 0xeb, + 0xeb, 0xad, 0xf9, 0xe5, 0x0d, 0x53, 0x1f, 0x51, 0x68, 0x76, + 0xe8, 0x84, 0x68, 0xab, 0x66, 0x1a, 0x1a, 0x35, 0xe5, 0x4f, + 0x85, 0x91, 0x56, 0x76, 0xa2, 0x66, 0xc1, 0x6e, 0xa2, 0x64, + 0x52, 0xc9, 0xc9, 0xc3, 0x44, 0xb2, 0x57, 0x7d, 0x1a, 0x35, + 0xfd, 0xc3, 0xd5, 0xb8, 0xfd, 0xad, 0xc6, 0xae, 0xae, 0xbb, + 0x82, 0x0b, 0x96, 0x8d, 0x89, 0xb1, 0x3a, 0xad, 0xe1, 0xa3, + 0x3a, 0x4f, 0x8e, 0xef, 0xef, 0x03, 0x77, 0x26, 0x69, 0x76, + 0x26, 0xc0, 0xce, 0xb3, 0x0a, 0x6b, 0xce, 0x85, 0x4a, 0xd2, + 0xd2, 0x3c, 0x63, 0xbd, 0xf8, 0x2c, 0xf0, 0x52, 0xcc, 0x03, + 0xfa, 0xca, 0xcc, 0xa0, 0x75, 0x33, 0x33, 0x59, 0x02, 0x9d, + 0x5e, 0xc7, 0xfb, 0x50, 0xb5, 0xe4, 0xe6, 0xbe, 0xb5, 0x13, + 0xd6, 0xbc, 0xbc, 0x11, 0xb8, 0x01, 0x0e, 0x6d, 0xbe, 0x46, + 0x70, 0x3a, 0x22, 0x04, 0x70, 0xd4, 0xa1, 0x1c, 0x1c, 0xcc, + 0x2c, 0x0c, 0x71, 0x45, 0x67, 0x78, 0x0e, 0x96, 0x95, 0xe1, + 0x0e, 0xfb, 0xbd, 0xe2, 0xe2, 0xf8, 0xe4, 0xe0, 0x7a, 0x6a, + 0xf9, 0x07, 0x56, 0x78, 0x2a, 0xa6, 0x56, 0xae, 0x96, 0xf4, + 0xf4, 0xfc, 0x50, 0x29, 0x01, 0xab, 0xde, 0x0d, 0x08, 0x85, + 0x46, 0xc1, 0x08, 0x94, 0xfc, 0x02, 0x02, 0x57, 0x47, 0x80, + 0xe0, 0x1f, 0xb1, 0xea, 0x0c, 0x26, 0x65, 0x40, 0x0c, 0xde, + 0x82, 0x03, 0x03, 0x9d, 0x85, 0xc0, 0x7e, 0x83, 0x07, 0x33, + 0x76, 0x29, 0xf1, 0x24, 0x76, 0xbb, 0xe0, 0xfc, 0xfc, 0x63, + 0x8f, 0x6c, 0x93, 0xcf, 0xa9, 0x88, 0x12, 0x79, 0x7c, 0xe0, + 0x12, 0xce, 0x04, 0xe5, 0xe5, 0xcb, 0xef, 0xe3, 0xce, 0x36, + 0xf3, 0xcf, 0xbf, 0xd1, 0x50, 0xde, 0xbf, 0xa2, 0x15, 0x5f, + 0x5f, 0x23, 0x9e, 0xa1, 0x9f, 0x37, 0x68, 0xd4, 0x72, 0x8a, + 0xd2, 0xa5, 0x72, 0xf1, 0x9e, 0xfd, 0xfd, 0xa9, 0x4d, 0x2c, + 0x3a, 0xe2, 0xc2, 0xc1, 0x13, 0x21, 0x04, 0x51, 0x13, 0x3d, + 0xfa, 0x74, 0x74, 0x18, 0x3e, 0xf3, 0xd1, 0xd2, 0xed, 0x54, + 0x47, 0xe9, 0xde, 0x56, 0x47, 0xb6, 0x53, 0x61, 0x61, 0x81, + 0x0f, 0xfa, 0xf2, 0xa8, 0xb0, 0x20, 0x9c, 0x68, 0x03, 0x4c, + 0x9c, 0x61, 0xa2, 0x27, 0x27, 0x0a, 0xf1, 0xd4, 0xcf, 0x9d, + 0x2d, 0xc2, 0xb7, 0x54, 0x16, 0x1f, 0xb7, 0x36, 0xe9, 0x5d, + 0x5d, 0x74, 0xd9, 0x21, 0x43, 0xb6, 0x9a, 0xd1, 0x5d, 0x15, + 0xe4, 0x77, 0x5d, 0xec, 0xab, 0x86, 0x86, 0x1d, 0xa7, 0x99, + 0xc9, 0xe1, 0xac, 0xec, 0x87, 0xcc, 0x41, 0xdc, 0x87, 0xc8, + 0xa4, 0x51, 0x51, 0x45, 0x88, 0xa7, 0x4a, 0x0c, 0x7b, 0xb4, + 0x15, 0x32, 0xd7, 0x71, 0x15, 0x52, 0xbb, 0x94, 0x94, 0xb7, + 0x9d, 0x93, 0xbd, 0xe6, 0xeb, 0xad, 0xa1, 0x8e, 0x49, 0x7e, + 0xa1, 0xb2, 0x93, 0xb9, 0xb9, 0x75, 0xf4, 0x82, 0x62, 0x59, + 0xb8, 0xbf, 0x96, 0x5d, 0xb5, 0x2c, 0x96, 0xd0, 0x61, 0xc4, + 0xc4, 0x38, 0xd7, 0x74, 0xac, 0x6f, 0x4b, 0x70, 0x29, 0x8c, + 0xe5, 0xf2, 0x29, 0x72, 0x74, 0x9b, 0x9b, 0x1b, 0x49, 0xd5, + 0x02, 0x95, 0x7f, 0x1a, 0x10, 0xc9, 0x8c, 0x41, 0x10, 0xeb, + 0x3b, 0x04, 0x04, 0xae, 0x8e, 0xc3, 0x37, 0xb1, 0xdd, 0x90, + 0x7b, 0x57, 0xec, 0xd5, 0x7b, 0x96, 0x9c, 0x6e, 0x6e, 0x2d, + 0xdb, 0xbc, 0x82, 0x46, 0x09, 0x55, 0x9a, 0x7b, 0xd0, 0x6c, + 0x9a, 0x0e, 0xe3, 0xc7, 0xc7, 0xa5, 0x52, 0xb4, 0xc1, 0xf0, + 0x93, 0x84, 0xc7, 0x6e, 0x34, 0x1b, 0xc7, 0xe2, 0x48, 0x41, + 0x41, 0xb8, 0xf5, 0x2d, 0x26, 0x38, 0x7d, 0x4d, 0xf3, 0x55, + 0x40, 0x59, 0xf3, 0x56, 0x7b, 0x4c, 0x4c, 0x43, 0x66, 0xeb, + 0xbb, 0x9a, 0x6a, 0x83, 0x91, 0x16, 0x1e, 0xbd, 0x91, 0x4c, + 0xde, 0xb5, 0xb5, 0x44, 0xa5, 0x04, 0x0f, 0xc6, 0x60, 0x4b, + 0x78, 0xbf, 0x64, 0xc5, 0x78, 0x40, 0x5d, 0x1e, 0x1e, 0x9b, + 0x6b, 0x8c, 0xd4, 0x90, 0xcd, 0x6d, 0x6f, 0x3d, 0x43, 0x15, + 0x6f, 0x37, 0xd9, 0x6b, 0x6b, 0x49, 0x97, 0x3f, 0x5b, 0x85, + 0xdb, 0x69, 0x9d, 0x30, 0x7b, 0xfd, 0x9d, 0x92, 0x5c, 0xb6, + 0xb6, 0xd9, 0x20, 0xc4, 0x63, 0xf2, 0x66, 0xb2, 0x9e, 0xd8, + 0xf3, 0xed, 0x9e, 0x44, 0x9d, 0xc6, 0xc6, 0x6f, 0x90, 0xf4, + 0x87, 0x04, 0x29, 0x6c, 0xb2, 0xaf, 0x4d, 0x2f, 0xb2, 0x8f, + 0x69, 0xcd, 0xcd, 0x6d, 0xca, 0x71, 0xbf, 0x73, 0x94, 0xb7, + 0xb1, 0x47, 0xc5, 0x3f, 0xb1, 0x59, 0xa8, 0xbd, 0xbd, 0xdb, + 0x7a, 0x41, 0x97, 0x26, 0x57, 0xbc, 0x32, 0x28, 0xa7, 0x62, + 0x32, 0xdb, 0x72, 0xed, 0xed, 0x54, 0x30, 0xa6, 0x46, 0xf4, + 0xba, 0xe8, 0x75, 0xc1, 0x79, 0x34, 0x75, 0x6d, 0x21, 0x8c, + 0x8c, 0xd5, 0x3f, 0x5c, 0xaa, 0x13, 0xca, 0x5e, 0x19, 0x14, + 0xb2, 0x31, 0x19, 0x8c, 0x39, 0x97, 0x97, 0x2a, 0x18, 0x53, + 0x4f, 0x4e, 0x5b, 0x8d, 0x3d, 0xe6, 0x4a, 0x32, 0x3d, 0xd3, + 0x31, 0x9e, 0x9e, 0x7f, 0x05, 0x56, 0xc6, 0x27, 0xcc, 0xa7, + 0xff, 0x73, 0x25, 0x19, 0xff, 0x88, 0xf9, 0x4f, 0x4f, 0xde, + 0xe3, 0x2b, 0x4e, 0xe5, 0x85, 0x80, 0x35, 0x63, 0x0c, 0xf3, + 0x35, 0x47, 0xcd, 0x9c, 0x9c, 0x28, 0x42, 0xd6, 0x80, 0xd3, + 0x76, 0x4f, 0x8a, 0xb2, 0x5c, 0x2d, 0x8a, 0xe5, 0xd8, 0xc3, + 0xc3, 0x0b, 0xdc, 0x77, 0x7f, 0x28, 0xd9, 0x3e, 0x7e, 0xac, + 0xb7, 0xe5, 0x7e, 0x2f, 0x1c, 0xfe, 0xfe, 0x34, 0xc8, 0xec, + 0x45, 0xca, 0x1b, 0xff, 0x6d, 0x8d, 0xb3, 0xb4, 0x6d, 0x12, + 0xe6, 0x8a, 0x8a, 0x2c, 0xf6, 0x1f, 0xeb, 0x30, 0x2f, 0x95, + 0x54, 0xc8, 0xda, 0x07, 0x54, 0x8b, 0xa9, 0x15, 0x15, 0x99, + 0x31, 0x09, 0x68, 0xdd, 0xf8, 0xcd, 0xc6, 0x36, 0x4c, 0xaa, + 0xc6, 0x11, 0xb6, 0xd0, 0xd0, 0x6b, 0x24, 0x3d, 0x10, 0x22, + 0x7e, 0xd0, 0x80, 0x87, 0xea, 0x4d, 0x80, 0x54, 0x1b, 0x20, + 0x20, 0x39, 0xfa, 0xd7, 0x20, 0x44, 0xfc, 0x63, 0xc3, 0xcd, + 0x17, 0x9a, 0xc3, 0xa8, 0x36, 0x40, 0x40, 0x72, 0x37, 0x6d, + 0x5f, 0x6c, 0x25, 0x5d, 0xbd, 0x61, 0xa0, 0x7f, 0xbd, 0x87, + 0x2a, 0xbe, 0xbe, 0x46, 0xff, 0x81, 0x49, 0x32, 0xda, 0xa3, + 0x0d, 0x7e, 0x1d, 0xf1, 0x0d, 0x2d, 0x7c, 0x92, 0x92, 0x4e, + 0x54, 0xd0, 0xd3, 0x47, 0x92, 0x4e, 0x57, 0x20, 0x52, 0x17, + 0x57, 0x5d, 0x68, 0x65, 0x65, 0x2f, 0x81, 0x39, 0xc2, 0xce, + 0x32, 0x93, 0xdf, 0x22, 0xfe, 0x9b, 0xdf, 0x9d, 0x8f, 0x47, + 0x47, 0x41, 0x3c, 0x6e, 0x56, 0xd6, 0xc4, 0x38, 0xf5, 0x46, + 0x93, 0x79, 0xf5, 0x39, 0x3a, 0xac, 0xac, 0xec, 0xc5, 0x8b, + 0xe5, 0x5d, 0x91, 0xd3, 0x24, 0xf2, 0xf8, 0x03, 0x24, 0x5f, + 0x08, 0x09, 0x09, 0x55, 0x1d, 0x05, 0xbc, 0x4d, 0x35, 0xa0, + 0xa9, 0x0b, 0x0f, 0xbf, 0xa9, 0x26, 0x6f, 0xbb, 0xbb, 0x22, + 0xb3, 0x02, 0x77, 0x39, 0xe6, 0x56, 0x3e, 0x0e, 0xc2, 0x22, + 0x3e, 0x05, 0xf0, 0xee, 0xee, 0xc9, 0xb5, 0x66, 0x15, 0x60, + 0x5e, 0xe9, 0xa8, 0x53, 0x77, 0x0e, 0xa8, 0xd5, 0x91, 0x2a, + 0x2a, 0xf1, 0x62, 0x12, 0x30, 0x66, 0x82, 0xb3, 0x43, 0x4a, + 0xfd, 0xd7, 0x43, 0xfc, 0x2d, 0x60, 0x60, 0x4b, 0xcd, 0xba, + 0xb0, 0xb5, 0xf4, 0xfc, 0xc9, 0xf8, 0xa1, 0xfa, 0xc9, 0x19, + 0xf5, 0xa3, 0xa3, 0x40, 0x11, 0xcd, 0xc3, 0x65, 0xec, 0x9e, + 0xd7, 0xa7, 0xb8, 0x5a, 0xd7, 0x09, 0x73, 0x45, 0x45, 0x16, + 0x7b, 0xee, 0xa6, 0xeb, 0x0b, 0x02, 0x79, 0xe7, 0x1c, 0x74, + 0x79, 0xb3, 0xa3, 0x8f, 0x8f, 0x48, 0xba, 0x9c, 0x6a, 0x48, + 0x87, 0xd7, 0xd6, 0xff, 0xc0, 0xeb, 0xd6, 0xfa, 0x8d, 0xd4, + 0xd4, 0xc5, 0xaa, 0xfe, 0x6e, 0xa1, 0x79, 0xe3, 0xf6, 0xae, + 0x1b, 0x69, 0xf6, 0xef, 0xfb, 0xdc, 0xdc, 0x5a, 0x75, 0xbb, + 0xee, 0x72, 0x0f, 0xac, 0x7c, 0x1c, 0x47, 0x44, 0x7c, 0x0a, + 0x23, 0x1f, 0x1f, 0x51, 0xa9, 0xcc, 0x95, 0xb3, 0x28, 0xa6, + 0x22, 0xe1, 0x2b, 0x23, 0x22, 0x30, 0x49, 0xe9, 0xe9, 0xfa, + 0xbe, 0x65, 0xbe, 0xd8, 0x4a, 0xba, 0xb9, 0xc2, 0x83, 0xfe, + 0xb9, 0xcd, 0x54, 0xbf, 0xbf, 0x8c, 0x3d, 0xc1, 0x38, 0x77, + 0xbd, 0xdb, 0x03, 0xe8, 0x88, 0x10, 0x03, 0xd6, 0xc1, 0x70, + 0x70, 0xb6, 0xb0, 0x30, 0x1c, 0xda, 0xbf, 0x8c, 0xe0, 0x74, + 0x44, 0x08, 0xe0, 0x6b, 0x81, 0x38, 0x38, 0x5b, 0x58, 0x18, + 0xd8, 0x68, 0x0c, 0x31, 0x0f, 0xce, 0xed, 0x50, 0x0f, 0x08, + 0x43, 0x73, 0x73, 0x2b, 0x35, 0xf0, 0xfc, 0xc5, 0x0e, 0x66, + 0xec, 0x52, 0x21, 0x48, 0xec, 0xb5, 0x03, 0x3b, 0x3b, 0xc6, + 0xdd, 0xd8, 0x6b, 0xe3, 0x59, 0xda, 0xde, 0x7a, 0x86, 0x2a, + 0xde, 0x6e, 0x71, 0xd6, 0xd6, 0x92, 0xed, 0x7e, 0x9e, 0x9c, + 0xb6, 0xd9, 0x7a, 0x0f, 0x94, 0x64, 0x7a, 0x65, 0x62, 0xff, + 0xff, 0xfe, 0x0a, 0xac, 0xf3, 0x03, 0x6e, 0x2d, 0x94, 0xed, + 0x45, 0x8d, 0x94, 0xf5, 0x5e, 0x25, 0x25, 0x5d, 0xb6, 0x54, + 0x16, 0x5e, 0xff, 0xfe, 0xb0, 0x1f, 0xbd, 0x8e, 0xb0, 0xaa, + 0x56, 0x2c, 0x2c, 0x08, 0xab, 0x51, 0xf6, 0x41, 0x4e, 0x14, + 0xbc, 0x39, 0xd8, 0xce, 0xbc, 0x74, 0xd4, 0x2f, 0x2f, 0x95, + 0x2e, 0x91, 0xfa, 0xb9, 0x8f, 0x48, 0xdc, 0xca, 0x76, 0x8b, + 0xdc, 0x4b, 0x4e, 0x37, 0x37, 0xf7, 0x8c, 0x5e, 0x1d, 0x71, + 0x61, 0x81, 0xe8, 0xf1, 0x02, 0xc9, 0xe8, 0xff, 0x7d, 0x3a, + 0x3a, 0x0c, 0x1f, 0x98, 0x05, 0x42, 0x20, 0x39, 0x28, 0xd4, + 0x9d, 0x43, 0x28, 0x81, 0x8a, 0x0a, 0x0a, 0xc8, 0x98, 0xc5, + 0x0a, 0x84, 0x40, 0x72, 0x50, 0x6b, 0xf9, 0x86, 0x50, 0xc1, + 0xd7, 0x14, 0x14, 0x53, 0xf3, 0x49, 0x79, 0x54, 0x58, 0x10, + 0x4e, 0x34, 0xe0, 0x26, 0x4e, 0xd1, 0x51, 0xf2, 0xf2, 0x05, + 0x99, 0x6a, 0x3e, 0x0b, 0x3c, 0xf5, 0x33, 0x70, 0xdf, 0xd3, + 0x33, 0x28, 0x8c, 0x7c, 0x7c, 0x87, 0xe1, 0xb6, 0x90, 0xf1, + 0x08, 0x9f, 0x0a, 0x35, 0xb6, 0x60, 0x0a, 0xb1, 0xc3, 0xe3, + 0xe3, 0x32, 0x26, 0xa0, 0x98, 0xe0, 0x37, 0xf7, 0x4a, 0x97, + 0xc3, 0xa7, 0x4a, 0x9b, 0x2f, 0xf3, 0xf3, 0xcf, 0x5b, 0x2a, + 0xcd, 0x08, 0x52, 0xd8, 0xa7, 0x9d, 0x9a, 0x5e, 0xa7, 0xdd, + 0xd2, 0x59, 0x59, 0xda, 0x57, 0xe2, 0xcb, 0x74, 0xd3, 0xf6, + 0x97, 0x05, 0xcd, 0x9d, 0x97, 0x23, 0x9f, 0x55, 0x55, 0xeb, + 0x06, 0x64, 0x0c, 0xf8, 0xc1, 0x5c, 0x60, 0xf3, 0xae, 0x45, + 0x60, 0x3f, 0x9a, 0x18, 0x18, 0x62, 0xa2, 0xcf, 0x36, 0x1a, + 0x03, 0x9d, 0x73, 0xd2, 0xaa, 0x14, 0x73, 0x02, 0x60, 0x6c, + 0x6c, 0x7a, 0x9c, 0x3c, 0x73, 0xd0, 0x18, 0x62, 0x1e, 0x5f, + 0x19, 0xa0, 0x1e, 0x10, 0x86, 0xe6, 0xe6, 0x56, 0x6a, 0x23, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0xa2, 0x17, 0xce, + 0x62, 0x43, 0x5e, 0xe4, 0x62, 0x1a, 0xa5, 0xf9, 0xf9, 0x07, + 0xc3, 0xef, 0xe9, 0xa5, 0x50, 0x8f, 0x44, 0x01, 0x56, 0x46, + 0x44, 0x60, 0x92, 0x11, 0x11, 0x37, 0xbf, 0xca, 0x92, 0x64, + 0x77, 0x85, 0x1a, 0xfc, 0x3a, 0x21, 0x1a, 0x5a, 0xf8, 0xe7, + 0xe7, 0x9c, 0xa8, 0x63, 0x17, 0xf5, 0x21, 0xf3, 0xb8, 0x9a, + 0xfb, 0x4f, 0xb8, 0x3e, 0xaa, 0x2e, 0x2e, 0x5f, 0xec, 0xd1, + 0x07, 0xd7, 0x5f, 0x23, 0x38, 0x1d, 0x11, 0x02, 0x38, 0x6a, + 0xb1, 0x0e, 0x0e, 0x66, 0x16, 0x06, 0x81, 0x78, 0xa8, 0x42, + 0x82, 0x37, 0x1a, 0xec, 0x82, 0x71, 0x24, 0xc1, 0xc1, 0x5c, + 0x9b, 0xf7, 0xed, 0x4c, 0xae, 0xbb, 0x64, 0x50, 0x8d, 0xc4, + 0x64, 0x75, 0xe4, 0x19, 0x19, 0xa8, 0x60, 0x8f, 0xca, 0xdf, + 0x0d, 0xfb, 0x9f, 0x80, 0x8b, 0x5c, 0x9f, 0xb7, 0x63, 0x57, + 0x57, 0xbc, 0x41, 0xe4, 0x74, 0x07, 0x47, 0x41, 0x26, 0x42, + 0x08, 0xa2, 0x26, 0x7a, 0x37, 0xe8, 0xe8, 0x30, 0x7c, 0x25, + 0xa1, 0x3c, 0x54, 0x21, 0x41, 0xfa, 0x0d, 0x76, 0x41, 0xd9, + 0x12, 0x81, 0x81, 0x2e, 0xac, 0x9a, 0x5d, 0xf9, 0x5a, 0x47, + 0xad, 0xa8, 0x2c, 0x3e, 0xad, 0x6c, 0x11, 0xba, 0xba, 0xe8, + 0x71, 0x42, 0x40, 0x88, 0x3b, 0xc6, 0x45, 0x59, 0x2e, 0xf7, + 0x45, 0x93, 0x6c, 0x80, 0x80, 0xe4, 0x6e, 0xda, 0x78, 0xff, + 0x86, 0x1d, 0x46, 0xb1, 0xa6, 0xe7, 0x46, 0x45, 0xad, 0xf0, + 0xf0, 0x52, 0xde, 0xea, 0x83, 0xed, 0xd7, 0x58, 0x92, 0xfe, + 0x96, 0xad, 0x92, 0x9a, 0x1f, 0xc5, 0xc5, 0xf2, 0x15, 0x34, + 0xdd, 0x2a, 0x2c, 0x08, 0x27, 0x1a, 0x70, 0x13, 0x27, 0x89, + 0xc9, 0x79, 0x79, 0xe3, 0xad, 0x35, 0x7b, 0xc1, 0x27, 0x0a, + 0x5e, 0xfd, 0x6c, 0x67, 0x5e, 0x3a, 0x6a, 0xf6, 0xf6, 0xab, + 0x17, 0xa9, 0x42, 0x1d, 0x44, 0xdc, 0x55, 0x90, 0xa2, 0xb6, + 0x55, 0x78, 0x57, 0x84, 0x84, 0x4a, 0xe0, 0x19, 0xdc, 0x81, + 0xf2, 0x05, 0x2f, 0x9f, 0x36, 0xd2, 0x2f, 0x1d, 0x35, 0x7b, + 0x7b, 0xb4, 0xea, 0xb5, 0xf0, 0x3d, 0xcf, 0x3a, 0x8c, 0xa1, + 0x8f, 0x0d, 0x8c, 0x8a, 0x99, 0x23, 0x23, 0xa4, 0x7f, 0x17, + 0x2c, 0xbc, 0x3d, 0x3f, 0xa3, 0x3e, 0xb9, 0xdf, 0xa3, 0x97, + 0xac, 0x58, 0x58, 0x10, 0x95, 0xa2, 0x5c, 0x52, 0x84, 0x4a, + 0xa5, 0x2d, 0x6a, 0xff, 0xa5, 0xf8, 0xed, 0xb8, 0xb8, 0xbf, + 0x36, 0xc2, 0x47, 0x5f, 0x64, 0xe5, 0x7d, 0x44, 0x3f, 0xf5, + 0x7d, 0xf9, 0xdd, 0x8e, 0x8e, 0x82, 0x78, 0xdc, 0xa4, 0x7e, + 0x74, 0x18, 0x69, 0x2e, 0x90, 0x35, 0x69, 0x58, 0x98, 0x8b, + 0x8b, 0xe6, 0x34, 0x5f, 0x52, 0x3f, 0x3a, 0x0c, 0xd5, 0x17, + 0x48, 0xfb, 0xd5, 0x2c, 0x4c, 0xa4, 0xa4, 0x73, 0x1a, 0xce, + 0x5a, 0x2e, 0x05, 0x64, 0x95, 0xb5, 0x3d, 0x3c, 0x95, 0x06, + 0xa0, 0xb4, 0xb4, 0x8e, 0x67, 0x44, 0x3f, 0xa0, 0xe2, 0xf8, + 0x3b, 0xf5, 0x99, 0x12, 0x3b, 0xbc, 0x70, 0x7e, 0x7e, 0xd0, + 0xa6, 0x36, 0xd9, 0xc3, 0xd2, 0x3c, 0x07, 0x4b, 0xab, 0x91, + 0x07, 0x9c, 0xbf, 0x71, 0x71, 0x7c, 0x72, 0x70, 0x0b, 0x2f, + 0x9e, 0x7f, 0x58, 0xee, 0xbf, 0x47, 0x58, 0x55, 0x2b, 0x16, + 0x16, 0x04, 0xb4, 0xc9, 0x2e, 0x29, 0x42, 0x25, 0xb3, 0xf7, + 0x35, 0x9e, 0xb3, 0x7c, 0x97, 0x5c, 0x5c, 0xbe, 0x1b, 0x61, + 0x08, 0x11, 0x3f, 0x68, 0x40, 0xa2, 0x75, 0xc7, 0x40, 0x2a, + 0xec, 0x10, 0x10, 0xfd, 0x7d, 0x8a, 0x60, 0xcc, 0xc7, 0xa5, + 0x86, 0x94, 0x39, 0x6d, 0x86, 0x3b, 0x5a, 0xc0, 0xc0, 0x96, + 0x59, 0xb7, 0xf4, 0xd4, 0x31, 0x0e, 0xac, 0xf0, 0x54, 0x8f, + 0xac, 0x9f, 0xef, 0x2b, 0x2b, 0x3b, 0xa0, 0x52, 0x4b, 0xa7, + 0xa5, 0xb9, 0x1d, 0xb7, 0x91, 0xb0, 0x1d, 0xc6, 0x47, 0x96, + 0x96, 0xe0, 0xda, 0x13, 0xc7, 0x8c, 0x12, 0xaa, 0xf7, 0xf6, + 0x63, 0xd8, 0xf7, 0x1c, 0x05, 0x4d, 0x4d, 0x89, 0xa4, 0xab, + 0x06, 0x7c, 0x81, 0x2e, 0x30, 0x98, 0x57, 0xc3, 0x30, 0xfe, + 0x4d, 0x0c, 0x0c, 0x31, 0x51, 0x86, 0xdf, 0xbf, 0x53, 0x12, + 0x37, 0xd3, 0xfc, 0x52, 0x37, 0x62, 0xf2, 0x7d, 0x7d, 0x4d, + 0x23, 0xf6, 0x35, 0x24, 0xa2, 0x8a, 0x6b, 0x9e, 0x60, 0x94, + 0x6b, 0x7d, 0xa7, 0x6a, 0x6a, 0x83, 0x55, 0x7f, 0xfd, 0x6e, + 0xd0, 0x6b, 0xe4, 0xd7, 0x67, 0x89, 0xe4, 0x21, 0xff, 0x39, + 0x39, 0x91, 0x9a, 0x58, 0x11, 0x89, 0xa0, 0xdd, 0x88, 0x02, + 0xac, 0x8c, 0x88, 0xc0, 0xe7, 0x22, 0x22, 0x6e, 0xbd, 0x57, + 0xb2, 0x20, 0x8b, 0xe6, 0xd9, 0x31, 0x2d, 0xbb, 0xd9, 0xf2, + 0xce, 0xa7, 0xa7, 0xee, 0x9f, 0x0e, 0xc5, 0x19, 0x6d, 0xb0, + 0xe7, 0x3f, 0xef, 0x99, 0xe7, 0xf7, 0x3e, 0x49, 0x49, 0x27, + 0x2a, 0x68, 0xb8, 0xa4, 0xcb, 0x94, 0x89, 0x5a, 0xd4, 0x3d, + 0x89, 0x33, 0x19, 0xb3, 0xb3, 0xbd, 0x6c, 0x47, 0xb5, 0xf7, + 0xd4, 0xc5, 0xe1, 0x2c, 0x3c, 0xb9, 0xe1, 0x98, 0x7f, 0xa9, + 0xa9, 0x88, 0x89, 0x08, 0x3b, 0x49, 0x1c, 0xcc, 0x1b, 0xa4, + 0x42, 0x90, 0x1b, 0xa9, 0x06, 0x76, 0x76, 0x4f, 0x79, 0x73, + 0x28, 0x55, 0xc3, 0x0b, 0x83, 0x6f, 0x62, 0x5d, 0x83, 0x82, + 0xda, 0x50, 0x50, 0x8f, 0x4a, 0xe7, 0xa0, 0x97, 0x8a, 0x2c, + 0x49, 0x7f, 0x4b, 0xb7, 0x49, 0x4d, 0xee, 0x83, 0x83, 0x79, + 0xeb, 0x1a, 0xe8, 0x0e, 0x8e, 0x82, 0x4c, 0x84, 0x10, 0x87, + 0x4c, 0xf4, 0x6e, 0x13, 0x13, 0x60, 0xf8, 0x4a, 0xde, 0x14, + 0x8d, 0x1f, 0x3f, 0x56, 0xba, 0x93, 0x3f, 0xf6, 0x0e, 0x7f, + 0x7f, 0x1a, 0x64, 0x76, 0x1f, 0xe4, 0x1e, 0x9b, 0xf8, 0x38, + 0x8e, 0x88, 0xf8, 0x14, 0x46, 0x3e, 0x3e, 0xa2, 0x91, 0x5b, + 0x6f, 0x0a, 0xa7, 0xee, 0xfe, 0x2b, 0x5d, 0xa8, 0xfe, 0x7b, + 0x07, 0xde, 0xde, 0x0d, 0x32, 0x3b, 0x59, 0x10, 0xa4, 0x73, + 0x8d, 0xf9, 0xf7, 0xbc, 0x8d, 0x79, 0x67, 0xb2, 0xb2, 0x77, + 0xae, 0x07, 0x32, 0xf3, 0xfd, 0xa9, 0x53, 0x83, 0x71, 0x96, + 0x53, 0x17, 0x16, 0x64, 0x64, 0xe5, 0x43, 0x79, 0x84, 0x3a, + 0x88, 0x7b, 0xaa, 0xe3, 0x87, 0xaf, 0xaa, 0xf0, 0xae, 0xcb, + 0xcb, 0x94, 0x03, 0x32, 0x12, 0xb7, 0x01, 0xca, 0x90, 0x4e, + 0x66, 0x0c, 0x90, 0xbf, 0x20, 0x24, 0x24, 0x97, 0x74, 0x14, + 0x88, 0xc2, 0x49, 0x27, 0xca, 0x10, 0x29, 0xea, 0xca, 0xcf, + 0x34, 0xd3, 0xd3, 0xf6, 0xa1, 0xfd, 0x1b, 0x0d, 0xe0, 0xaf, + 0xd8, 0x69, 0x55, 0x0a, 0xd8, 0x01, 0x30, 0x36, 0x36, 0x3d, + 0x4e, 0x1e, 0x58, 0xbb, 0x7a, 0x7e, 0x85, 0x7c, 0xb1, 0x7d, + 0x85, 0xed, 0x9b, 0xb0, 0xb0, 0x20, 0xe9, 0x87, 0xa5, 0xd5, + 0xaa, 0x15, 0x61, 0xab, 0xd6, 0xf4, 0x61, 0xcc, 0x64, 0x89, + 0x89, 0xb1, 0x73, 0xdf, 0x04, 0xe9, 0xfe, 0x34, 0x20, 0x51, + 0xdb, 0x82, 0x20, 0x15, 0x76, 0x08, 0x08, 0x9f, 0xdf, 0x45, + 0xa7, 0x40, 0xd5, 0x0f, 0x71, 0x62, 0x5a, 0xb5, 0x71, 0x27, + 0x5f, 0x8d, 0x8d, 0x1f, 0xfd, 0x1c, 0xd5, 0x3b, 0x13, 0x60, + 0x67, 0xb8, 0x05, 0xd4, 0x67, 0xa3, 0x25, 0x69, 0x69, 0x1e, + 0xd0, 0xbf, 0xf5, 0x7f, 0xef, 0x03, 0xa4, 0x75, 0x12, 0x4e, + 0xa4, 0x0b, 0x13, 0x29, 0x29, 0x6c, 0xe7, 0xd2, 0x4d, 0xdb, + 0x24, 0x97, 0x2d, 0x2f, 0xc6, 0x73, 0x2d, 0x38, 0x0a, 0x9a, + 0x9a, 0xd1, 0x8b, 0x95, 0x3d, 0x35, 0x9d, 0xe2, 0x2b, 0x3c, + 0x15, 0x53, 0x2b, 0x57, 0x4b, 0x7a, 0x7a, 0x7e, 0x28, 0xf5, + 0xa8, 0x86, 0xb5, 0x44, 0x09, 0xdd, 0x3e, 0x70, 0x09, 0x67, + 0x02, 0x93, 0x93, 0x84, 0x96, 0x90, 0x33, 0x58, 0x23, 0xa4, + 0x5b, 0x06, 0x37, 0x57, 0x5b, 0x83, 0xea, 0x66, 0x66, 0xb2, + 0x04, 0xf9, 0x21, 0xef, 0x22, 0x6e, 0xcb, 0x48, 0x51, 0x5b, + 0xcb, 0x3c, 0xca, 0x42, 0x42, 0x25, 0x70, 0xed, 0x2b, 0x6b, + 0x62, 0x1c, 0x9b, 0x23, 0xa8, 0xdd, 0x9b, 0xfd, 0x1d, 0x56, + 0x56, 0x76, 0x83, 0xa4, 0x4c, 0x70, 0xfa, 0x9a, 0x25, 0xaa, + 0x80, 0xb2, 0x25, 0xac, 0xf6, 0x98, 0x98, 0x86, 0xcc, 0x15, + 0x1a, 0xa6, 0x3e, 0xa2, 0xd0, 0xec, 0x13, 0xcb, 0xd0, 0x95, + 0xcc, 0x34, 0x34, 0x6a, 0x09, 0x9e, 0x67, 0x1b, 0x98, 0x86, + 0xbe, 0x89, 0x28, 0x6f, 0xbe, 0x51, 0xeb, 0xce, 0xce, 0xf0, + 0x4f, 0xb1, 0x54, 0x43, 0xbb, 0x22, 0xe5, 0x8f, 0x1f, 0x38, + 0xe5, 0xd2, 0x01, 0xa8, 0xa8, 0x42, 0x4b, 0x48, 0xec, 0xe7, + 0x70, 0xb6, 0x6c, 0xd5, 0xcb, 0x05, 0x6c, 0xe1, 0x18, 0x1b, + 0x1b, 0xff, 0x27, 0x0f, 0x9b, 0xde, 0x96, 0xe0, 0x52, 0xdb, + 0x09, 0x27, 0x52, 0xe4, 0xe8, 0xf5, 0xf5, 0x36, 0x92, 0x69, + 0xa2, 0x02, 0xf5, 0x36, 0x59, 0xb6, 0xc7, 0xf6, 0x59, 0xa6, + 0xd5, 0x87, 0x87, 0xd7, 0x65, 0xd9, 0x64, 0x25, 0x39, 0x91, + 0xa6, 0xc5, 0xe2, 0xef, 0xa6, 0x2e, 0x2c, 0xc8, 0xc8, 0x09, + 0x86, 0xf2, 0xef, 0xd9, 0xd1, 0xa1, 0x74, 0x99, 0x01, 0x85, + 0x74, 0x9e, 0xdf, 0x1d, 0x1d, 0x06, 0xee, 0x4c, 0x8b, 0xfc, + 0xe8, 0x30, 0xd2, 0x5c, 0xe3, 0x6a, 0xd2, 0xb0, 0xf3, 0xd5, + 0xd5, 0x0f, 0x68, 0xbe, 0x6c, 0x34, 0x06, 0xf9, 0xe6, 0x67, + 0x97, 0x28, 0xe6, 0x04, 0xc0, 0xd8, 0xd8, 0xf4, 0xfb, 0x78, + 0xff, 0xfb, 0xaf, 0x71, 0xf4, 0x1e, 0xeb, 0xc8, 0xf4, 0xca, + 0xc4, 0x3d, 0x3d, 0x3f, 0x14, 0x9b, 0xf7, 0xea, 0x90, 0x19, + 0xb4, 0xbc, 0x9e, 0x0f, 0xb4, 0xe0, 0x28, 0x2d, 0x2d, 0xc2, + 0x69, 0x11, 0x18, 0x33, 0x41, 0xb8, 0xc0, 0x25, 0x9f, 0x8a, + 0xc0, 0x7e, 0xf7, 0x30, 0x30, 0xc4, 0x87, 0x5d, 0xb3, 0x8b, + 0x55, 0xeb, 0xd1, 0xb4, 0x6b, 0x7a, 0xd1, 0x66, 0x32, 0xa5, + 0xa5, 0xb9, 0xd8, 0x8e, 0x7c, 0x16, 0x78, 0x29, 0x66, 0xe0, + 0x7d, 0x65, 0x66, 0x50, 0xdb, 0xf8, 0xf8, 0xcd, 0x01, 0xaf, + 0xcc, 0xa3, 0x8c, 0xd5, 0xaf, 0x18, 0xdc, 0x9f, 0xaf, 0x49, + 0x2e, 0x5b, 0x5b, 0x8d, 0x10, 0x62, 0x89, 0x69, 0x97, 0x2a, + 0xc2, 0x95, 0x6f, 0x2b, 0xc2, 0x5b, 0xc8, 0xd1, 0xd1, 0xa1, + 0xe6, 0x7d, 0xae, 0xfa, 0x34, 0x6a, 0x39, 0x45, 0x69, 0xb3, + 0x39, 0x99, 0x4f, 0x9f, 0x9f, 0xb5, 0xc7, 0x16, 0x31, 0xcd, + 0x5c, 0xbe, 0x4b, 0xcf, 0xbb, 0x16, 0x4b, 0x68, 0xd1, 0x62, + 0x62, 0x1c, 0x8a, 0x3a, 0x34, 0x8f, 0x7c, 0x87, 0x63, 0x1b, + 0x26, 0x55, 0x63, 0xe9, 0x5b, 0x68, 0x68, 0xd4, 0x12, 0xff, + 0x66, 0xb0, 0x46, 0x8b, 0xb6, 0x0c, 0x6e, 0xae, 0xb6, 0xc5, + 0x17, 0xcc, 0xcc, 0xa7, 0x08, 0x31, + }, + { + /* 12 */ + 0x55, 0x95, 0x9e, 0xb1, 0xd0, 0xa1, 0x4c, 0xd9, 0x5a, 0x2f, + 0xf9, 0x1c, 0x4c, 0xf2, 0x1a, 0x52, 0xfa, 0xed, 0x87, 0xcf, + 0x85, 0x5d, 0x81, 0x6c, 0x55, 0x48, 0x8b, 0x1e, 0x81, 0xe1, + 0x58, 0x1c, 0x0c, 0xbe, 0x0a, 0x56, 0x48, 0xac, 0xcc, 0x72, + 0x67, 0x5c, 0x45, 0x58, 0xcc, 0xf1, 0x09, 0x1a, 0x52, 0x31, + 0x7b, 0x77, 0xfa, 0xee, 0x3b, 0x0a, 0xaf, 0x0c, 0xfb, 0x83, + 0x3b, 0xb1, 0x8e, 0x02, 0xa3, 0xc6, 0x13, 0x28, 0x1d, 0x50, + 0x01, 0xc7, 0x68, 0x3b, 0x37, 0x5a, 0x01, 0xe2, 0x4b, 0x54, + 0x73, 0x1c, 0xab, 0xc9, 0xf7, 0x51, 0x4f, 0x53, 0xe2, 0x62, + 0xa0, 0xf2, 0x4f, 0x17, 0xc7, 0xae, 0xe1, 0x9c, 0x70, 0x97, + 0x07, 0xed, 0xe9, 0x75, 0xf2, 0xe7, 0x81, 0xb8, 0xe9, 0x6d, + 0xd9, 0xcf, 0x81, 0x25, 0x20, 0x62, 0x02, 0xc4, 0x46, 0x63, + 0x4c, 0x42, 0xec, 0x3d, 0x46, 0xe9, 0x91, 0x1f, 0x86, 0x81, + 0xc5, 0xa4, 0x28, 0x8b, 0x31, 0xb0, 0xb9, 0x61, 0xee, 0xa2, + 0x31, 0xaa, 0x05, 0x4f, 0x02, 0x35, 0x03, 0x19, 0x1c, 0x32, + 0x22, 0x17, 0x4e, 0x1a, 0x41, 0xa5, 0x22, 0x77, 0xe2, 0xba, + 0x6c, 0x07, 0x5a, 0xa3, 0x4d, 0x85, 0x63, 0x64, 0xd9, 0xf9, + 0x28, 0xdd, 0x63, 0x75, 0x41, 0xca, 0xdf, 0xaa, 0x51, 0x43, + 0xb0, 0x86, 0xb1, 0x1b, 0x84, 0x12, 0x52, 0xe6, 0xb1, 0xa9, + 0x16, 0x07, 0x4e, 0xe4, 0x69, 0xe9, 0x52, 0x11, 0x24, 0xc0, + 0xfd, 0x80, 0xf3, 0xba, 0x24, 0x7e, 0x9b, 0x81, 0xe8, 0xb3, + 0x9c, 0x1e, 0x79, 0x3c, 0x70, 0xc3, 0x2e, 0x82, 0x87, 0xda, + 0x70, 0xa8, 0xa6, 0x3f, 0x2e, 0x5d, 0x39, 0x1c, 0x57, 0x38, + 0x8b, 0xd6, 0x43, 0x25, 0x9e, 0x3f, 0x8b, 0xfa, 0xd3, 0x51, + 0x3d, 0xf8, 0xc2, 0x20, 0xa5, 0x40, 0x6b, 0x93, 0x1f, 0xe2, + 0x53, 0x48, 0x6b, 0x69, 0x5c, 0x2f, 0x29, 0xf9, 0xdc, 0xda, + 0x7d, 0x77, 0xfc, 0x05, 0xb6, 0x06, 0x9c, 0xa0, 0xfc, 0xb9, + 0x47, 0x01, 0x7d, 0x97, 0xa2, 0x86, 0xa3, 0xcf, 0xa1, 0x36, + 0xcb, 0x24, 0xa4, 0x0f, 0xa1, 0x91, 0x2c, 0x0e, 0x27, 0x72, + 0xd5, 0x95, 0x29, 0xe9, 0x12, 0x60, 0x9f, 0x40, 0x98, 0x5d, + 0x12, 0x3f, 0xac, 0xa1, 0x35, 0x2c, 0xce, 0x44, 0xd5, 0x88, + 0xe3, 0xcf, 0xe4, 0x8a, 0x94, 0x99, 0xe3, 0x76, 0x52, 0x82, + 0xcc, 0x0f, 0xaa, 0x7f, 0x42, 0xfe, 0x51, 0x5e, 0xd8, 0xd5, + 0x9f, 0x91, 0x51, 0x3a, 0x99, 0x79, 0xd6, 0x85, 0xbd, 0xca, + 0xce, 0x57, 0x28, 0xad, 0x58, 0x77, 0x54, 0x84, 0x28, 0x6c, + 0x69, 0xf7, 0x87, 0x7a, 0x25, 0x49, 0x26, 0x92, 0x20, 0x5a, + 0x9e, 0x6c, 0x2f, 0x11, 0x20, 0x70, 0x74, 0x12, 0xc9, 0x9e, + 0x4c, 0xa0, 0x74, 0x83, 0x04, 0x9a, 0x63, 0xec, 0xdc, 0xab, + 0x04, 0x0e, 0xef, 0x93, 0x6b, 0xa3, 0xbf, 0x65, 0x67, 0xca, + 0x14, 0xb7, 0x2c, 0xda, 0x2a, 0x42, 0x14, 0x36, 0xd5, 0x9a, + 0x32, 0x88, 0x2b, 0x82, 0xff, 0xc7, 0x94, 0x1c, 0x11, 0xa9, + 0x96, 0x06, 0x94, 0x35, 0xc6, 0xd2, 0xcd, 0xf4, 0x4a, 0x92, + 0x4c, 0xe7, 0x40, 0xb4, 0xff, 0xd8, 0x5e, 0x22, 0x40, 0xe0, + 0xe8, 0x24, 0x23, 0x18, 0xd3, 0xa7, 0x11, 0x8d, 0x56, 0x4e, + 0x03, 0x74, 0x1a, 0xd4, 0x56, 0xd1, 0xab, 0x16, 0x96, 0xea, + 0xdd, 0x6c, 0xc8, 0xd8, 0xe2, 0x08, 0x8c, 0xb1, 0xa3, 0xc3, + 0xe2, 0x94, 0x19, 0xd6, 0xb4, 0x09, 0xee, 0x26, 0xd7, 0x4c, + 0xa5, 0xac, 0xa8, 0xc8, 0x78, 0xa4, 0xa5, 0x9f, 0xc3, 0x9d, + 0x92, 0x80, 0xdb, 0x5e, 0xf0, 0xbc, 0xa6, 0x26, 0x10, 0x85, + 0x21, 0x4a, 0xa6, 0x7a, 0x1e, 0x61, 0xc6, 0xee, 0xa5, 0x02, + 0x2e, 0x04, 0xfb, 0x15, 0x6d, 0xa7, 0x19, 0xe5, 0xfb, 0x52, + 0x75, 0x6e, 0x91, 0x4e, 0x38, 0xaa, 0xe2, 0x97, 0x95, 0xdb, + 0x79, 0x92, 0xa1, 0x5c, 0x95, 0xd7, 0x8d, 0x86, 0xe4, 0x0d, + 0x96, 0x48, 0x31, 0x90, 0xbc, 0xb1, 0x49, 0xde, 0xc2, 0x82, + 0xbc, 0x59, 0xaf, 0x25, 0xd2, 0xef, 0xbb, 0xf8, 0xf6, 0x33, + 0x6c, 0x83, 0xc4, 0x43, 0xd6, 0x0d, 0x6c, 0x82, 0x6e, 0x40, + 0x56, 0x5b, 0x7d, 0x45, 0xc2, 0x8a, 0x7f, 0x24, 0x33, 0x38, + 0x79, 0x0a, 0x7f, 0x5f, 0x89, 0xb5, 0x88, 0x0a, 0xcc, 0xeb, + 0x7c, 0x15, 0xdf, 0xd5, 0x90, 0x27, 0xea, 0x5f, 0xdf, 0x2c, + 0xee, 0xef, 0x6f, 0xc9, 0xb9, 0x57, 0x5f, 0xae, 0x50, 0x99, + 0xb0, 0xee, 0xa8, 0xcb, 0x50, 0xd8, 0xd2, 0x2d, 0x10, 0x6b, + 0x18, 0xc8, 0xe0, 0x53, 0xd3, 0xb8, 0x35, 0xd0, 0x4d, 0x61, + 0xd3, 0x3e, 0x1c, 0x99, 0x59, 0x2b, 0x94, 0xe7, 0x98, 0x0d, + 0x80, 0xab, 0x3d, 0x73, 0xbc, 0x44, 0x80, 0x03, 0x13, 0x48, + 0x63, 0x77, 0xb3, 0x01, 0x17, 0x02, 0x9c, 0xeb, 0xd7, 0xb2, + 0xed, 0x93, 0x9c, 0x29, 0xdb, 0x37, 0xca, 0x50, 0xaf, 0x54, + 0x66, 0xa8, 0x37, 0x67, 0x0a, 0xfb, 0x5c, 0xbd, 0x37, 0xa3, + 0x7c, 0x74, 0x79, 0xfd, 0xa4, 0xb4, 0x9b, 0xab, 0xe5, 0x18, + 0x57, 0x10, 0x26, 0x86, 0xe5, 0x7f, 0x2b, 0xb9, 0xb2, 0x56, + 0xeb, 0x0d, 0xf3, 0x1a, 0xc3, 0x95, 0x7a, 0xe6, 0xbb, 0x88, + 0xc3, 0x06, 0x26, 0x90, 0x28, 0x02, 0x3c, 0x37, 0x73, 0x6e, + 0xed, 0xef, 0x91, 0x0b, 0x5d, 0x13, 0xed, 0x63, 0x36, 0x5c, + 0xea, 0x86, 0x9f, 0x07, 0x65, 0x0e, 0x52, 0xd4, 0x60, 0x98, + 0xc6, 0x7f, 0x52, 0xdf, 0x44, 0x85, 0xec, 0xd9, 0x9a, 0x2c, + 0x41, 0x58, 0x34, 0xed, 0xb2, 0xb6, 0x05, 0x53, 0x34, 0x46, + 0xa1, 0x88, 0x2a, 0x37, 0x3f, 0x2e, 0x6f, 0x5c, 0xcf, 0xf8, + 0xdf, 0x11, 0x1c, 0xb6, 0xcf, 0x14, 0xd4, 0xe6, 0xc4, 0xdb, + 0xa6, 0x1b, 0x32, 0x36, 0xd9, 0x02, 0x23, 0xbd, 0x58, 0x40, + 0xd9, 0x25, 0x97, 0xd4, 0xa7, 0xac, 0x15, 0x1a, 0x25, 0x34, + 0x45, 0xe9, 0xf4, 0x0f, 0xb5, 0xd3, 0x45, 0x0c, 0x4c, 0xe3, + 0x17, 0xcf, 0xfd, 0x0e, 0xca, 0x1c, 0xa4, 0x6b, 0xc0, 0xf3, + 0x4f, 0xfe, 0xa4, 0x7d, 0x88, 0xc9, 0x5f, 0x74, 0x91, 0xcc, + 0xbc, 0x5b, 0xe6, 0x92, 0xef, 0x5d, 0x7f, 0x68, 0xe6, 0x9a, + 0xf6, 0x45, 0x62, 0x8c, 0x53, 0xec, 0x19, 0x1b, 0x8d, 0x01, + 0xf0, 0xbf, 0x2c, 0x20, 0x8d, 0xf3, 0xaa, 0x6a, 0x5d, 0x41, + 0x92, 0xd5, 0xa0, 0x69, 0xc4, 0x85, 0xa1, 0x47, 0x3e, 0xcd, + 0xc4, 0xed, 0x14, 0xff, 0x06, 0x5f, 0x05, 0x2b, 0x24, 0x56, + 0x66, 0x39, 0xd2, 0x2e, 0xc3, 0x2c, 0x66, 0x99, 0xe5, 0x0d, + 0x3a, 0x5c, 0x27, 0xe6, 0x8f, 0x0f, 0x1c, 0x40, 0xea, 0xc1, + 0x51, 0xd7, 0x1c, 0x2a, 0xc8, 0x7f, 0x39, 0x92, 0xc4, 0x12, + 0x9d, 0x24, 0x2f, 0xbd, 0x83, 0xd6, 0xd1, 0xc1, 0x2f, 0x87, + 0x5b, 0x98, 0xa1, 0xf3, 0x10, 0x31, 0x01, 0x62, 0x23, 0xd0, + 0x26, 0x21, 0x76, 0xff, 0x23, 0x95, 0xa9, 0xee, 0x07, 0xa4, + 0xe5, 0xc6, 0x2a, 0x4f, 0x77, 0xd3, 0xf5, 0x23, 0x02, 0x9f, + 0x77, 0x43, 0x94, 0x50, 0x6d, 0xfc, 0xba, 0x4e, 0x43, 0x9c, + 0x72, 0x8e, 0xfe, 0xf4, 0xe9, 0x6e, 0x72, 0xaf, 0x30, 0x97, + 0x21, 0x2d, 0xd0, 0xbe, 0x0d, 0xbf, 0x74, 0x59, 0x4d, 0x6e, + 0x5b, 0x71, 0x74, 0xa6, 0x49, 0xac, 0xba, 0x82, 0xe7, 0x69, + 0x83, 0xd2, 0x4b, 0xc9, 0x81, 0x8e, 0x7c, 0x59, 0x4b, 0x19, + 0x28, 0x3d, 0x69, 0x96, 0xbc, 0x7c, 0x7b, 0xf8, 0x36, 0xa0, + 0x62, 0xc0, 0x6b, 0xe7, 0x36, 0x41, 0x37, 0x20, 0x37, 0x19, + 0xcd, 0x5d, 0xc9, 0xba, 0xc1, 0xd8, 0xaa, 0x90, 0xd5, 0x3c, + 0xc1, 0x01, 0xb0, 0x38, 0x3e, 0x36, 0x21, 0xd4, 0xb7, 0x6b, + 0x58, 0x6e, 0x76, 0xf5, 0xd3, 0x5e, 0x58, 0xc4, 0xcf, 0xc8, + 0x25, 0x47, 0xd6, 0x8c, 0x35, 0xdb, 0x30, 0x77, 0xd1, 0x5a, + 0xd9, 0xf8, 0x30, 0x48, 0x4e, 0x1b, 0xc1, 0x4a, 0x40, 0xc4, + 0x04, 0x4b, 0x8c, 0xc6, 0x98, 0x84, 0x1b, 0x7a, 0x8c, 0x11, + 0xe1, 0x3e, 0xf7, 0xa8, 0x6d, 0x74, 0xc3, 0xe8, 0x5c, 0xf4, + 0x15, 0x19, 0x0f, 0xf5, 0x5c, 0xca, 0x20, 0x5b, 0xd4, 0xb0, + 0xbe, 0xd3, 0xd2, 0x65, 0x0a, 0xba, 0x16, 0x6d, 0x15, 0x21, + 0x0a, 0x1b, 0x8b, 0x4d, 0x70, 0xd2, 0x48, 0x3d, 0xe5, 0x7a, + 0x7c, 0xae, 0x8b, 0x75, 0x20, 0xe4, 0x7c, 0xba, 0x54, 0x49, + 0xf9, 0x23, 0x64, 0x3b, 0x97, 0x76, 0xb2, 0x91, 0x3c, 0x5f, + 0x0b, 0x08, 0xb2, 0x4c, 0xcb, 0xfb, 0x9b, 0xaf, 0x37, 0xd7, + 0x8e, 0x6d, 0x3f, 0x90, 0xcc, 0xe0, 0x27, 0x28, 0x3f, 0xbf, + 0x61, 0x91, 0x30, 0xbd, 0x28, 0x9b, 0xe3, 0xf5, 0xb6, 0x0b, + 0x5f, 0xb3, 0xd7, 0xa3, 0xb6, 0x42, 0x24, 0x68, 0xf8, 0xd8, + 0x84, 0xd6, 0x99, 0x6f, 0xa3, 0x7b, 0x1b, 0x52, 0xca, 0xbb, + 0xa3, 0x96, 0xba, 0xa6, 0x4a, 0x8e, 0x6f, 0xdb, 0x6a, 0x75, + 0x60, 0xee, 0x61, 0xb4, 0x71, 0x33, 0x60, 0x90, 0x9c, 0x36, + 0x2d, 0x93, 0xda, 0xe8, 0x45, 0x13, 0xb8, 0x2b, 0x2a, 0x32, + 0x1e, 0x29, 0xb8, 0x57, 0x40, 0xb6, 0xbf, 0x13, 0x01, 0xb6, + 0xb5, 0xaf, 0x1e, 0x0d, 0x3a, 0xb7, 0x3f, 0x63, 0x1e, 0x2d, + 0x5e, 0xd7, 0x40, 0x6f, 0x60, 0xa6, 0x06, 0x8f, 0xca, 0xa5, + 0xd4, 0xc6, 0xf7, 0x47, 0xca, 0xf8, 0x70, 0x21, 0x49, 0x40, + 0x8c, 0x2f, 0x78, 0x5e, 0x53, 0x13, 0x08, 0xa3, 0xf1, 0x25, + 0x53, 0x3d, 0x0f, 0xd1, 0x5e, 0x8f, 0x71, 0x21, 0xb2, 0x42, + 0xf7, 0x78, 0xc8, 0x50, 0xbe, 0xdb, 0xf7, 0x40, 0x87, 0x18, + 0x46, 0x30, 0x65, 0x8d, 0x22, 0xd9, 0xac, 0x9c, 0x06, 0xe8, + 0x34, 0x6b, 0xac, 0x61, 0x95, 0x2c, 0xae, 0x83, 0xf9, 0x93, + 0x5b, 0xe5, 0xdc, 0x5f, 0x28, 0x6a, 0xb3, 0xb1, 0xdc, 0xc9, + 0x33, 0x13, 0x65, 0x28, 0xb6, 0x2a, 0x33, 0x54, 0xfa, 0xd2, + 0x05, 0x9c, 0x2e, 0xbf, 0xfa, 0xb0, 0x3e, 0x3a, 0x24, 0xbc, + 0x36, 0x61, 0x3b, 0xc2, 0x21, 0x9d, 0xf6, 0x57, 0x18, 0x4b, + 0x21, 0x92, 0x3f, 0x46, 0x5c, 0xba, 0x72, 0x38, 0xae, 0x70, + 0xd5, 0x6f, 0x86, 0x4a, 0xff, 0x7e, 0xd5, 0x37, 0x65, 0xa2, + 0x72, 0xe7, 0x4b, 0x24, 0xf9, 0x48, 0x5e, 0xb9, 0xc5, 0x6f, + 0x61, 0x41, 0x5e, 0xcd, 0xb6, 0xf3, 0x97, 0x11, 0x3d, 0x81, + 0xc6, 0xc1, 0xf3, 0xe2, 0xab, 0xbc, 0x62, 0x70, 0xf3, 0x4e, + 0x68, 0x8b, 0xaf, 0x78, 0x19, 0x7e, 0x55, 0xfc, 0xcd, 0xb5, + 0x0f, 0x67, 0x72, 0x02, 0xcd, 0x13, 0x42, 0x4e, 0x0d, 0x45, + 0xea, 0xbb, 0x46, 0xb5, 0xdd, 0x98, 0x40, 0x51, 0x84, 0xeb, + 0xdd, 0x2b, 0x78, 0x47, 0xb9, 0x4c, 0x04, 0x9d, 0x91, 0xf9, + 0x78, 0x34, 0xe8, 0x99, 0xfc, 0x4f, 0x78, 0xb4, 0xbb, 0xda, + 0x45, 0xfe, 0x86, 0x79, 0x30, 0xf2, 0x9f, 0x61, 0x6f, 0xff, + 0xb4, 0x7d, 0x9f, 0xcc, 0x06, 0xcb, 0x76, 0x8d, 0x4d, 0x16, + 0xc1, 0x2c, 0x1a, 0x97, 0x59, 0x5b, 0xe3, 0xc8, 0x1a, 0x23, + 0xb1, 0x44, 0x43, 0xa1, 0x83, 0x52, 0x14, 0xa4, 0xf9, 0x58, + 0xbd, 0xd1, 0x77, 0x51, 0xf9, 0x55, 0xe3, 0xc6, 0x51, 0xff, + 0x98, 0x83, 0xe8, 0xc5, 0x08, 0xf7, 0xc6, 0x1b, 0x7b, 0x95, + 0x08, 0x1c, 0x1d, 0xe5, 0x85, 0x4f, 0x26, 0x50, 0x3a, 0xa0, + 0x02, 0x4d, 0xd0, 0x76, 0x6e, 0xb4, 0x02, 0x07, 0x96, 0xa8, + 0x5a, 0xe5, 0x77, 0x13, 0x8a, 0x26, 0xb3, 0x56, 0x54, 0x64, + 0x3c, 0x52, 0xb3, 0xae, 0x80, 0xaf, 0x7c, 0x6c, 0x42, 0x6b, + 0xad, 0xd6, 0xb0, 0xdc, 0xec, 0x29, 0x65, 0xbc, 0xb0, 0x4b, + 0x5d, 0x53, 0xd0, 0xda, 0xb8, 0xe1, 0xea, 0x01, 0x4e, 0x94, + 0x8a, 0x59, 0x97, 0xa8, 0x4e, 0xf5, 0x8c, 0xfa, 0x08, 0xd4, + 0x0c, 0x64, 0x70, 0xc8, 0x88, 0x5c, 0xfb, 0x68, 0xc7, 0xd1, + 0x88, 0x1f, 0x0e, 0xad, 0x05, 0x91, 0xe6, 0xdf, 0x36, 0x7d, + 0x55, 0xc4, 0xbb, 0x39, 0x43, 0x3a, 0x55, 0x34, 0x76, 0xea, + 0xb8, 0xb7, 0xe4, 0x70, 0x9f, 0xe0, 0x69, 0xde, 0xcf, 0x94, + 0x3d, 0xfc, 0x69, 0x6e, 0xca, 0x87, 0x0f, 0x70, 0xe9, 0xa2, + 0x5a, 0x87, 0xff, 0x8f, 0x0e, 0x4b, 0xc5, 0x4e, 0xff, 0x5c, + 0x9a, 0xfd, 0x7a, 0x33, 0x47, 0x40, 0x89, 0x80, 0xd6, 0xe5, + 0x3e, 0x07, 0xa6, 0x90, 0xd6, 0xd2, 0xb8, 0x5e, 0xff, 0x7c, + 0x61, 0x10, 0xb3, 0x20, 0xd4, 0xa8, 0xee, 0x71, 0xc8, 0x24, + 0xd4, 0xd5, 0x2e, 0xf6, 0xda, 0x3b, 0xb7, 0x9c, 0x86, 0xfb, + 0xe4, 0xdf, 0x3f, 0x2b, 0x11, 0xdc, 0xe4, 0x9d, 0x60, 0xed, + 0xdb, 0xc0, 0x57, 0x71, 0x88, 0xe2, 0xf5, 0x35, 0x18, 0x26, + 0xd0, 0x6f, 0xf5, 0x47, 0x11, 0xb0, 0xf2, 0x39, 0x8b, 0xab, + 0xf5, 0x95, 0x09, 0x30, 0xae, 0x20, 0x4c, 0xcf, 0x09, 0xfe, + 0x56, 0xb1, 0x99, 0x9a, 0x34, 0xce, 0x92, 0x5f, 0x1d, 0x87, + 0x82, 0xfa, 0x66, 0x8d, 0x1d, 0xc8, 0x83, 0x2b, 0xa9, 0x27, + 0x1c, 0x55, 0x71, 0xaa, 0xab, 0x8c, 0xdd, 0x49, 0xb1, 0x2e, + 0xab, 0x8a, 0xa7, 0x43, 0x54, 0x6e, 0x7e, 0x5c, 0xde, 0xb8, + 0x5d, 0x33, 0x7d, 0x22, 0x38, 0xaf, 0x5d, 0x28, 0x6b, 0x0f, + 0x95, 0x24, 0x3e, 0x98, 0xda, 0xf3, 0xd1, 0xf5, 0xe5, 0xa6, + 0x23, 0xd5, 0xd1, 0x39, 0x8a, 0x31, 0x68, 0x6d, 0x5c, 0x91, + 0x75, 0xe1, 0x27, 0x4a, 0x45, 0xcd, 0xaa, 0x54, 0x27, 0x9b, + 0x46, 0x7d, 0x1c, 0xd5, 0x12, 0x9e, 0xa8, 0xff, 0x1f, 0xca, + 0x52, 0x8c, 0x08, 0x39, 0x1f, 0xcf, 0x15, 0x83, 0x6a, 0x58, + 0x5f, 0x88, 0x69, 0xd3, 0x05, 0x5d, 0x0b, 0xd7, 0xeb, 0xf1, + 0x05, 0xec, 0xa4, 0xc7, 0x0e, 0x8b, 0x09, 0x4f, 0x54, 0x9e, + 0xee, 0x65, 0x29, 0x46, 0x04, 0xfd, 0xee, 0x86, 0xeb, 0xa0, + 0x93, 0x7b, 0x3b, 0xb3, 0xfe, 0xa5, 0xb7, 0xcc, 0x37, 0x88, + 0xe0, 0xf9, 0xb7, 0xa0, 0x6f, 0x3c, 0xa8, 0xdc, 0xfc, 0xb8, + 0x7f, 0xb3, 0xba, 0x66, 0xfa, 0x44, 0x70, 0x9d, 0xba, 0x50, + 0xd6, 0x1e, 0xcf, 0xc1, 0x49, 0x8b, 0x50, 0xd5, 0x62, 0xa3, + 0xb1, 0xc2, 0x1f, 0x87, 0x62, 0x97, 0x0a, 0x9e, 0xc2, 0x84, + 0xa3, 0x30, 0x16, 0x60, 0xbf, 0x3b, 0xf1, 0x93, 0x9b, 0x6c, + 0xbf, 0xbc, 0x72, 0xd9, 0xcb, 0xab, 0x4f, 0xb9, 0x68, 0xb1, + 0x26, 0x8d, 0x2d, 0xf6, 0x9d, 0x0e, 0x26, 0x79, 0x0d, 0x29, + 0x8e, 0x55, 0xc9, 0xc0, 0x58, 0x43, 0xb9, 0xec, 0x42, 0x09, + 0x29, 0x73, 0xb9, 0xb5, 0x0b, 0xe2, 0x33, 0x73, 0xcb, 0x6f, + 0xf1, 0xde, 0x85, 0xf6, 0x36, 0xa4, 0x57, 0xb5, 0x85, 0xef, + 0xb7, 0x8f, 0x15, 0xfa, 0xfe, 0x17, 0xd6, 0x2e, 0x86, 0x7c, + 0x8e, 0xe9, 0x0e, 0x5b, 0x86, 0x0a, 0x6a, 0x73, 0x89, 0xf1, + 0x2c, 0x06, 0x72, 0x0c, 0xce, 0x3f, 0xb7, 0x2a, 0x2b, 0xec, + 0xce, 0xf6, 0x9f, 0xb2, 0xd1, 0x21, 0x58, 0x0c, 0xe4, 0x18, + 0x5f, 0x7e, 0xad, 0x54, 0x56, 0x1b, 0x5f, 0x2f, 0xfd, 0xa7, + 0x1a, 0x8a, 0x17, 0xb5, 0x8c, 0xa9, 0x79, 0xf3, 0x80, 0xa2, + 0xcb, 0x15, 0x79, 0x56, 0xf0, 0x8e, 0x98, 0x61, 0xd4, 0x23, + 0x9c, 0x46, 0x0c, 0x6d, 0xa5, 0xf7, 0xa7, 0x3e, 0x0c, 0x12, + 0xf2, 0x76, 0xce, 0x3a, 0xa9, 0x66, 0x5e, 0xcc, 0x73, 0x49, + 0x96, 0xcf, 0xde, 0x34, 0x73, 0x4d, 0x7b, 0xc3, 0x1b, 0x71, + 0xf7, 0x58, 0x82, 0xb0, 0x68, 0x19, 0xa7, 0xaf, 0x0a, 0xa6, + 0x68, 0x8c, 0x81, 0xd3, 0xe3, 0xa9, 0x73, 0x8e, 0x1b, 0xdf, + 0xcb, 0x62, 0xbc, 0xfd, 0xc0, 0x1d, 0xcb, 0x1a, 0x3b, 0x75, + 0x9d, 0xf0, 0x32, 0xfc, 0xaa, 0x3b, 0x59, 0xa9, 0x1e, 0xce, + 0xe4, 0x04, 0x59, 0x26, 0x84, 0x9c, 0x8c, 0x60, 0xca, 0xd9, + 0x44, 0x71, 0x9b, 0xfb, 0x0c, 0x13, 0x68, 0xd6, 0x9b, 0xc2, + 0xe9, 0x58, 0x6e, 0x32, 0x59, 0xba, 0x51, 0xb7, 0x41, 0x73, + 0x97, 0xe3, 0x69, 0x78, 0x41, 0x02, 0xa3, 0x70, 0x66, 0xe6, + 0x55, 0xde, 0x21, 0x7f, 0xc9, 0x2f, 0x6c, 0x8b, 0xae, 0xa9, + 0xc9, 0x1d, 0xad, 0xdd, 0x58, 0xd0, 0x74, 0x0a, 0x96, 0x14, + 0x91, 0x41, 0x1a, 0x7e, 0x7d, 0xf7, 0x91, 0xd9, 0x62, 0x15, + 0x9a, 0x54, 0xd7, 0x3a, 0x80, 0x74, 0x2e, 0x7a, 0xeb, 0xed, + 0xe6, 0x9b, 0x2e, 0x65, 0x10, 0xcc, 0x47, 0xcb, 0x85, 0x60, + 0x2c, 0xc0, 0xbd, 0x76, 0x21, 0xe5, 0xf5, 0xd8, 0xbd, 0xbb, + 0xe4, 0x71, 0x18, 0xbf, 0x14, 0xac, 0x90, 0x9b, 0x5b, 0xe4, + 0xce, 0xb8, 0x8a, 0xb0, 0x5b, 0x21, 0x12, 0x34, 0xad, 0x4d, + 0x1a, 0x67, 0x49, 0xce, 0xef, 0xa2, 0x41, 0x7d, 0x33, 0xa7, + 0xef, 0x64, 0xa0, 0xf4, 0x1e, 0xe0, 0x11, 0x87, 0xb4, 0xcd, + 0x3d, 0xdd, 0x1c, 0x96, 0x49, 0x9c, 0x3d, 0xb8, 0xf7, 0x39, + 0xdc, 0x64, 0xb2, 0xb7, 0xa2, 0xad, 0x82, 0xe6, 0xed, 0x05, + 0xd2, 0xf0, 0x82, 0x04, 0x85, 0xe0, 0xa4, 0x62, 0xf6, 0xee, + 0x37, 0x1f, 0x76, 0x14, 0x9d, 0x18, 0x35, 0xc5, 0x76, 0xa1, + 0xdf, 0x04, 0x34, 0xd7, 0x2e, 0xa9, 0xdb, 0x91, 0xf2, 0x25, + 0xc3, 0x87, 0x55, 0x2a, 0xf2, 0xac, 0x23, 0xdf, 0xfd, 0x49, + 0x62, 0x09, 0xaf, 0x12, 0xf6, 0xbf, 0xa0, 0x6b, 0x89, 0x81, + 0xf6, 0xa2, 0xcc, 0x4c, 0x9f, 0xc5, 0x31, 0xe5, 0xb6, 0x09, + 0x7b, 0xbe, 0x50, 0xd4, 0xa5, 0xa1, 0x7b, 0x51, 0x66, 0x26, + 0x8f, 0xae, 0x29, 0x2d, 0x56, 0x5a, 0xa8, 0x06, 0x65, 0x04, + 0xe8, 0xc0, 0xa8, 0x6f, 0x7a, 0xbf, 0xed, 0x22, 0x7a, 0xc1, + 0x4f, 0x41, 0x25, 0x07, 0x95, 0xbb, 0xc4, 0xe0, 0x25, 0x9c, + 0xd0, 0xd5, 0xf1, 0xf7, 0x68, 0x5f, 0xe7, 0xbe, 0x3a, 0xcd, + 0xc7, 0x37, 0xcc, 0xd9, 0x3a, 0x53, 0xc5, 0x56, 0xe5, 0xf6, + 0x76, 0xa5, 0x3f, 0x89, 0xad, 0x5b, 0x6e, 0xd3, 0x03, 0x31, + 0xad, 0x83, 0xde, 0x78, 0x1f, 0x1b, 0xf1, 0x6a, 0xba, 0xd4, + 0x2c, 0x37, 0x3b, 0x9b, 0x88, 0x2f, 0x2c, 0x62, 0x86, 0x64, + 0x82, 0xeb, 0xc3, 0x96, 0x10, 0xef, 0x75, 0x9e, 0x25, 0x55, + 0x6c, 0x2b, 0x75, 0x44, 0x02, 0xf8, 0xf0, 0x0c, 0x88, 0xb2, + 0xe9, 0xa7, 0x2b, 0x27, 0xe0, 0x3a, 0x0d, 0x6a, 0x2b, 0x89, + 0xb4, 0x0b, 0xe6, 0x38, 0x95, 0x51, 0x2d, 0xa2, 0x9e, 0xa6, + 0x07, 0xc4, 0x83, 0x27, 0x9e, 0x2e, 0x4d, 0x9f, 0xc3, 0x7f, + 0x43, 0xdd, 0x18, 0x79, 0xae, 0xd1, 0xd6, 0x9e, 0x5a, 0xdf, + 0xae, 0x66, 0x03, 0x84, 0xef, 0x17, 0x79, 0xd8, 0x53, 0x73, + 0x07, 0x10, 0xdb, 0xa1, 0x85, 0x45, 0x07, 0xeb, 0x32, 0x6f, + 0x1d, 0x2e, 0xf2, 0x73, 0xa6, 0xe6, 0x0e, 0x20, 0x75, 0x81, + 0xc9, 0x8a, 0x0e, 0x15, 0x64, 0xde, 0xc0, 0xb1, 0xa0, 0x29, + 0x0a, 0x52, 0x9d, 0x2c, 0xbf, 0x89, 0xda, 0xc9, 0x9d, 0xcb, + 0x90, 0x63, 0xf6, 0x53, 0x8d, 0x99, 0xcd, 0xf1, 0x4d, 0x1e, + 0x32, 0x14, 0xce, 0x46, 0x4d, 0x10, 0x51, 0x06, 0x4b, 0x75, + 0x8f, 0x36, 0x64, 0x6c, 0x71, 0x04, 0x46, 0xb9, 0xb0, 0x80, + 0x71, 0x4a, 0xed, 0x6b, 0xee, 0xec, 0x99, 0x35, 0x5d, 0x6a, + 0x16, 0xfa, 0xfc, 0xac, 0x44, 0xf6, 0x16, 0x31, 0x43, 0x32, + 0xe9, 0x48, 0x7c, 0xf3, 0x77, 0x25, 0x61, 0x29, 0x09, 0x8f, + 0x46, 0x69, 0x61, 0x72, 0xd7, 0x62, 0xe2, 0x52, 0x93, 0x63, + 0x15, 0xc6, 0xda, 0x88, 0x9b, 0xf0, 0x01, 0xae, 0xda, 0xc0, + 0x4a, 0x28, 0x16, 0x34, 0x1d, 0xe3, 0xc4, 0x05, 0xb5, 0x81, + 0xe7, 0xfe, 0x8e, 0x4d, 0xb5, 0xa7, 0xf9, 0x94, 0x53, 0xca, + 0x9b, 0x9a, 0xf4, 0xf7, 0x2a, 0xe0, 0x88, 0x01, 0x3a, 0x30, + 0x2a, 0x6b, 0xff, 0x5f, 0xdd, 0x9f, 0x52, 0x5a, 0xac, 0xb4, + 0x93, 0x0c, 0xca, 0x08, 0x13, 0x43, 0x93, 0xde, 0xf4, 0xbd, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfb, 0xe0, 0xed, + 0x0e, 0x19, 0x11, 0xea, 0x27, 0x0d, 0xc1, 0xb3, 0x11, 0xda, + 0x71, 0x5d, 0x8b, 0xc4, 0x2f, 0x1f, 0x6e, 0x3e, 0xec, 0x28, + 0xf9, 0x30, 0x6a, 0x49, 0xec, 0x81, 0x7d, 0x08, 0xf3, 0xc2, + 0x6b, 0x46, 0xfb, 0x8c, 0x18, 0xda, 0x89, 0x2d, 0x8d, 0x7c, + 0x18, 0x24, 0x27, 0xec, 0xde, 0x51, 0xb1, 0xae, 0xbe, 0x9f, + 0xa0, 0xf1, 0xa3, 0x1f, 0x93, 0x55, 0xa0, 0x73, 0x67, 0x5a, + 0x57, 0xa0, 0x9d, 0xa8, 0xcc, 0x93, 0x6e, 0xce, 0x14, 0x35, + 0xb8, 0xb9, 0x6e, 0x85, 0xf8, 0xe8, 0x9e, 0x3e, 0xd1, 0x08, + 0xb8, 0x10, 0x6a, 0x54, 0x77, 0xd9, 0x64, 0x12, 0x6a, 0x8b, + 0x17, 0x7b, 0x38, 0x69, 0x24, 0xff, 0x93, 0x3d, 0x3e, 0x57, + 0xa4, 0xdb, 0x10, 0x72, 0x3e, 0x5d, 0x2a, 0xc5, 0xbe, 0xe8, + 0xe1, 0x5b, 0xbb, 0xb6, 0x0f, 0xe7, 0x1d, 0xba, 0xfe, 0xd0, + 0x0f, 0xf7, 0x2f, 0x8a, 0x8a, 0x3f, 0xcf, 0xf2, 0x60, 0x27, + 0xfd, 0xc2, 0xde, 0x3d, 0xab, 0xfa, 0xfd, 0x5b, 0x0c, 0x55, + 0x4f, 0x1f, 0x89, 0x04, 0x5c, 0x08, 0x35, 0x2a, 0xda, 0x8d, + 0x32, 0x09, 0x35, 0xa4, 0xea, 0xdc, 0xa2, 0x3d, 0xf3, 0xc5, + 0x13, 0x49, 0x10, 0x2d, 0x4f, 0x36, 0xf6, 0xe9, 0x10, 0x38, + 0x3a, 0x09, 0x61, 0x42, 0xb0, 0x18, 0x0b, 0x30, 0xbe, 0xfc, + 0x99, 0xa8, 0xac, 0x36, 0xbe, 0x5e, 0x39, 0x8d, 0x9c, 0x0b, + 0xd2, 0x11, 0xa4, 0x22, 0x48, 0x43, 0x39, 0xc3, 0x25, 0xb7, + 0x48, 0xfc, 0xf5, 0xc1, 0x26, 0x89, 0x35, 0x78, 0x27, 0xf0, + 0x03, 0x8a, 0xb8, 0x4d, 0x59, 0xee, 0x03, 0xe5, 0xdd, 0xfc, + 0x60, 0xb9, 0x50, 0xf5, 0x05, 0x29, 0xaf, 0x16, 0xbe, 0xa5, + 0x6d, 0x85, 0xaf, 0x84, 0x48, 0xd0, 0x78, 0x06, 0x44, 0x59, + 0x95, 0xb2, 0xf4, 0xf2, 0x70, 0x1d, 0xe7, 0x35, 0xf4, 0xa5, + 0x5a, 0xe4, 0xd9, 0xf5, 0x54, 0x68, 0x94, 0xd0, 0xd7, 0x22, + 0x56, 0x3c, 0x91, 0xca, 0xd7, 0x30, 0xf3, 0x0a, 0x3c, 0x03, + 0x22, 0xcd, 0xab, 0x59, 0x7a, 0x79, 0x38, 0xef, 0x92, 0xfb, + 0x7a, 0xb3, 0x2d, 0x72, 0xfb, 0x16, 0x67, 0x22, 0x8b, 0x44, + 0x90, 0x86, 0x72, 0x45, 0x4a, 0xad, 0x90, 0x3b, 0x29, 0x41, + 0xc7, 0x15, 0x45, 0xef, 0x20, 0x1d, 0xea, 0xff, 0x4a, 0xaa, + 0xd8, 0x56, 0xea, 0x88, 0x04, 0x33, 0xfe, 0x87, 0x81, 0xfd, + 0xbd, 0x39, 0xc5, 0x42, 0xc9, 0x7c, 0x09, 0x97, 0xc5, 0x0f, + 0x5f, 0xab, 0x36, 0xe2, 0x2d, 0xb0, 0xc7, 0xa3, 0xd0, 0x32, + 0x8d, 0x9d, 0x14, 0x8f, 0xd0, 0xdb, 0xc1, 0x65, 0xa0, 0x08, + 0xf0, 0xdc, 0x0f, 0x7b, 0x32, 0x3a, 0x01, 0x2c, 0xb7, 0x4c, + 0x32, 0x4f, 0xd8, 0xb3, 0x50, 0x04, 0x78, 0x6e, 0xe6, 0xdc, + 0x19, 0x1d, 0xe1, 0x16, 0xba, 0x26, 0x19, 0xc6, 0x6c, 0xb8, + 0xf5, 0x9d, 0x6e, 0x6d, 0xdf, 0xda, 0x7e, 0xe3, 0x5b, 0x03, + 0x4e, 0x50, 0x7e, 0xbd, 0xc2, 0xe1, 0xaa, 0xe9, 0xff, 0xa1, + 0x63, 0x81, 0x98, 0x71, 0xb4, 0x5e, 0x31, 0x38, 0x98, 0x27, + 0x34, 0xa4, 0xd3, 0x14, 0x5b, 0x15, 0xf8, 0x2a, 0x7d, 0x69, + 0xe3, 0x4e, 0x17, 0xbe, 0x7d, 0x58, 0x1f, 0x1d, 0x41, 0x94, + 0x80, 0x4b, 0x08, 0x96, 0xdb, 0x4f, 0xf3, 0xcb, 0x36, 0xf4, + 0xdb, 0x22, 0x01, 0x7c, 0x7f, 0xa2, 0xa1, 0x9f, 0xbf, 0xfd, + 0x83, 0x21, 0x85, 0x3e, 0xe5, 0xaa, 0x83, 0xe6, 0xce, 0xb4, + 0xa5, 0x99, 0x16, 0x03, 0x39, 0x06, 0x67, 0xfe, 0xba, 0x15, + 0xf4, 0x76, 0x67, 0x7b, 0xae, 0x59, 0xb0, 0x63, 0xe8, 0x14, + 0xef, 0x28, 0xe1, 0x82, 0x34, 0xfc, 0xfa, 0x2d, 0xe1, 0x71, + 0xc4, 0x2a, 0x48, 0xbb, 0x6c, 0xc2, 0x76, 0x47, 0x42, 0xf9, + 0x2f, 0xae, 0x30, 0x96, 0x42, 0xe7, 0x7e, 0x8c, 0x20, 0xd6, + 0x30, 0x53, 0x03, 0xa6, 0x65, 0xb3, 0x6a, 0x63, 0x9a, 0xc2, + 0x65, 0x7c, 0x38, 0xf1, 0xf4, 0x66, 0x8e, 0x80, 0xd1, 0xc3, + 0x6f, 0x09, 0x7c, 0x0e, 0x8f, 0xe3, 0x6f, 0x67, 0xb3, 0xbc, + 0x0b, 0x1a, 0xef, 0x90, 0x62, 0xe3, 0xbb, 0xa1, 0x92, 0x7f, + 0x47, 0xc7, 0xbb, 0xb2, 0x9d, 0x4a, 0xd8, 0x0e, 0xb4, 0x85, + 0x9a, 0xc9, 0xc6, 0xc8, 0x71, 0x31, 0x50, 0x79, 0xc6, 0xea, + 0x82, 0x57, 0xb7, 0xc7, 0x0d, 0xd2, 0xc5, 0x67, 0x96, 0x51, + 0xc1, 0xdf, 0xf8, 0xb2, 0x96, 0x32, 0x50, 0x7a, 0xb1, 0x98, + 0x08, 0xf9, 0xe1, 0x31, 0xf0, 0x68, 0x13, 0xf1, 0x3b, 0x9e, + 0xf0, 0xab, 0xb5, 0x77, 0xd5, 0x4b, 0x5e, 0x3e, 0xdc, 0x7c, + 0x1b, 0x50, 0x31, 0x60, 0xd4, 0x92, 0x1b, 0xc1, 0xfa, 0x10, + 0x22, 0xe3, 0x33, 0x4a, 0x1f, 0x94, 0x47, 0xa4, 0x24, 0x79, + 0xdb, 0x67, 0x47, 0x0b, 0xda, 0x4b, 0x4c, 0xd1, 0x6a, 0xf0, + 0x4e, 0x23, 0x06, 0xd7, 0xb3, 0x9a, 0xb2, 0x1f, 0x06, 0x09, + 0x79, 0x3b, 0x3f, 0xcd, 0xc1, 0x39, 0xb9, 0x72, 0x49, 0x84, + 0x51, 0xf8, 0x12, 0xed, 0x49, 0x1e, 0xbe, 0x95, 0x75, 0x43, + 0xae, 0xe2, 0xd3, 0x07, 0x29, 0x6a, 0x30, 0x4c, 0x63, 0xde, + 0x29, 0x8e, 0x22, 0xa3, 0x19, 0x44, 0xf4, 0x41, 0x9e, 0x82, + 0x4a, 0x0e, 0xe9, 0xb5, 0x4b, 0x03, 0x4a, 0xfb, 0x63, 0x69, + 0x74, 0xb8, 0x4e, 0x0f, 0xdd, 0x1e, 0x38, 0x80, 0x17, 0x41, + 0xa2, 0x6d, 0x38, 0x54, 0x53, 0xfe, 0x13, 0xa5, 0xfb, 0x3c, + 0xf2, 0x78, 0xe0, 0x45, 0x5c, 0xc7, 0xcd, 0x77, 0xe0, 0x93, + 0x8f, 0x7e, 0xd7, 0x7e, 0x5d, 0x27, 0xc0, 0x4e, 0x39, 0x47, + 0x7f, 0x7a, 0x95, 0x37, 0x39, 0xb6, 0x18, 0xaa, 0x84, 0xb4, + 0xc6, 0xbd, 0x34, 0xb9, 0x13, 0xa7, 0xf7, 0x7b, 0xaf, 0x07, + 0x13, 0xdd, 0xe7, 0xf5, 0x7b, 0xc8, 0xa7, 0xad, 0x87, 0x99, + 0xc7, 0x0f, 0x19, 0x0a, 0x67, 0x23, 0xc7, 0x08, 0xc9, 0x03, + 0x42, 0x5a, 0x63, 0xbf, 0x1a, 0xbd, 0xe8, 0xb2, 0x9a, 0xdc, + 0xb6, 0xe2, 0xe8, 0x8f, 0x92, 0x9b, 0x11, 0x90, 0xf8, 0x25, + 0xee, 0x4a, 0xc2, 0x52, 0x12, 0xdd, 0x8c, 0xd2, 0xc2, 0xe4, + 0x6d, 0xc4, 0xe0, 0x67, 0x90, 0x7a, 0x09, 0xf4, 0xf8, 0x9f, + 0xd5, 0xea, 0x40, 0x0b, 0xf8, 0xb7, 0xa8, 0x92, 0x71, 0x29, + 0xa8, 0xd0, 0xeb, 0x63, 0x6d, 0x44, 0xac, 0x78, 0xe1, 0x57, + 0x6d, 0x60, 0x25, 0x14, 0x31, 0x46, 0xc8, 0x76, 0xed, 0xec, + 0xa7, 0xe1, 0x78, 0xbe, 0x16, 0x10, 0xa7, 0x98, 0x55, 0x35, + 0x67, 0x1d, 0xb5, 0x33, 0x2f, 0x66, 0xd8, 0xc5, 0x4b, 0x86, + 0x6f, 0x1a, 0xd8, 0xc7, 0xdc, 0x80, 0xc8, 0x65, 0xac, 0x4d, + 0x7a, 0x9a, 0x15, 0x70, 0x44, 0xe1, 0x1d, 0x18, 0x15, 0xd4, + 0x9e, 0xce, 0x4d, 0x2a, 0x8a, 0x1d, 0x40, 0x3a, 0x17, 0x3d, + 0x94, 0x97, 0x73, 0xac, 0x17, 0xd3, 0x08, 0x66, 0xfc, 0xb2, + 0x82, 0xe4, 0xa1, 0x0b, 0xe7, 0x55, 0x87, 0x66, 0x48, 0x32, + 0xe7, 0x78, 0xbd, 0x11, 0xb3, 0xad, 0x0b, 0xe0, 0xfd, 0x03, + 0xd2, 0x7f, 0x5d, 0xeb, 0x7a, 0x3b, 0xd2, 0xdc, 0x57, 0xcd, + 0x44, 0x05, 0x66, 0x94, 0x3e, 0xeb, 0x8e, 0x8b, 0x48, 0xf2, + 0x75, 0xce, 0x8e, 0x16, 0x77, 0x96, 0xc5, 0x20, 0x46, 0xf6, + 0x3c, 0x2f, 0xc8, 0xe8, 0x04, 0xb0, 0x99, 0xf3, 0xc8, 0xff, + 0xe6, 0x89, 0x14, 0x01, 0x1e, 0xfa, 0xd8, 0x37, 0x97, 0x96, + 0xa9, 0xe4, 0xcf, 0xe8, 0x97, 0xd0, 0x1b, 0x2e, 0x2b, 0xcc, + 0xdf, 0xc3, 0x61, 0x45, 0xde, 0x12, 0xf8, 0x1c, 0xdd, 0x05, + 0xde, 0xce, 0xa5, 0xbb, 0x12, 0x5e, 0x1b, 0xd1, 0xfc, 0x61, + 0xf1, 0xaf, 0x7b, 0xca, 0x0c, 0xc4, 0xf1, 0x49, 0xfe, 0x23, + 0xb6, 0x3c, 0xed, 0x3f, 0xcb, 0x7e, 0x87, 0xbb, 0xe6, 0xd2, + 0x39, 0x01, 0x87, 0xe8, 0x21, 0x27, 0xbc, 0xdd, 0xe2, 0x42, + 0xa7, 0x84, 0x2d, 0xf0, 0x53, 0xa0, 0xbf, 0x75, 0x2d, 0x80, + 0xcd, 0x30, 0x8d, 0x9b, 0x2a, 0x34, 0x4a, 0x68, 0x8a, 0x11, + 0x2b, 0x1e, 0xa9, 0x65, 0x8a, 0x18, 0x98, 0x05, 0x90, 0xb5, + 0xd8, 0x47, 0xec, 0x8e, 0x84, 0x31, 0x5e, 0x9f, 0x60, 0xef, + 0x84, 0x0d, 0xfc, 0xdb, 0x77, 0x76, 0xad, 0xfb, 0xcf, 0x35, + 0x0b, 0x7d, 0x7e, 0x56, 0x22, 0x7b, 0x0b, 0xf9, 0xc0, 0x19, + 0x94, 0xdf, 0xde, 0x75, 0xd4, 0xea, 0xc0, 0x1f, 0xc2, 0xab, + 0xe2, 0x66, 0xc0, 0xe3, 0xfb, 0x6c, 0xe7, 0xc3, 0x75, 0xbc, + 0x23, 0xbb, 0x8f, 0x4c, 0x20, 0xc9, 0x42, 0x94, 0x8f, 0xf4, + 0x3c, 0xc2, 0x5b, 0x1e, 0x97, 0xfe, 0x84, 0x3f, 0xa2, 0xbc, + 0x73, 0x69, 0xfd, 0xe1, 0xa2, 0x74, 0xf1, 0xf2, 0x64, 0xd3, + 0x56, 0xc7, 0x3d, 0x4d, 0xeb, 0x38, 0x22, 0x91, 0xef, 0x0c, + 0xeb, 0x6a, 0x4f, 0x67, 0x0a, 0xe1, 0x0f, 0x7d, 0x6c, 0xfa, + 0xaa, 0x4b, 0xb5, 0x72, 0x86, 0x74, 0xaa, 0x68, 0xec, 0x17, + 0xab, 0x12, 0x1f, 0x4c, 0x6d, 0x98, 0x89, 0x9b, 0x93, 0x53, + 0xf0, 0x8b, 0x89, 0xfd, 0x45, 0xf9, 0x03, 0xce, 0xe3, 0xf4, + 0x12, 0x2b, 0x33, 0xfd, 0x69, 0x17, 0x80, 0x16, 0x33, 0xad, + 0x93, 0xe7, 0x80, 0xde, 0xc0, 0x8f, 0x0c, 0xdd, 0x57, 0x89, + 0x6b, 0x4f, 0x2d, 0x8e, 0x57, 0x33, 0xe0, 0x42, 0x83, 0x10, + 0x23, 0x7b, 0x1e, 0xf6, 0x64, 0x74, 0x02, 0x58, 0xad, 0x98, + 0x64, 0x9e, 0x73, 0xa5, 0xa6, 0x57, 0xf5, 0xf7, 0x2b, 0x2d, + 0x54, 0x03, 0xd3, 0x02, 0x74, 0x60, 0x54, 0xd6, 0x3d, 0xbe, + 0x09, 0x2f, 0xec, 0x89, 0x7e, 0xd1, 0x99, 0xb6, 0xdc, 0x65, + 0x06, 0x62, 0x99, 0xc5, 0x7f, 0xf0, 0xac, 0xb6, 0xfa, 0x8a, + 0x47, 0xd7, 0xfe, 0x48, 0x66, 0x70, 0xf2, 0x14, 0xfe, 0xbe, + 0xd1, 0xa9, 0x2c, 0x68, 0x3a, 0x05, 0x4b, 0x0a, 0xa9, 0xc1, + 0x0d, 0x3f, 0xdf, 0x9a, 0xa9, 0x8d, 0x31, 0xeb, 0x7e, 0x59, + 0x41, 0x72, 0xb1, 0xe4, 0x92, 0xcb, 0xa2, 0x33, 0x24, 0x19, + 0x92, 0x3c, 0xbf, 0xe9, 0x2f, 0xa6, 0xd9, 0xf1, 0x59, 0x21, + 0x9a, 0x3c, 0x64, 0x28, 0x5f, 0x8c, 0x9a, 0x20, 0xa2, 0x0c, + 0xb5, 0xf2, 0x0e, 0xcb, 0xd9, 0x55, 0xb4, 0x46, 0x8f, 0xc5, + 0xb9, 0x17, 0xb4, 0x45, 0xb2, 0xc0, 0x3b, 0xa7, 0xc7, 0x0b, + 0x81, 0x16, 0x0d, 0xaa, 0xcd, 0xcc, 0x90, 0x64, 0x0d, 0xf0, + 0xb9, 0x22, 0xbd, 0x26, 0x02, 0xaf, 0xa9, 0x9d, 0x3c, 0x1a, + 0x74, 0xad, 0x7e, 0xc6, 0x3c, 0x5a, 0xbc, 0x6d, 0x04, 0x6a, + 0x06, 0x32, 0x38, 0x64, 0x44, 0x2e, 0x9c, 0x34, 0x82, 0x89, + 0x44, 0xee, 0x07, 0xb7, 0xeb, 0x7d, 0x7f, 0xea, 0x6b, 0x17, + 0x43, 0x3e, 0x47, 0x95, 0x07, 0xcc, 0x43, 0x05, 0x35, 0xd8, + 0xbb, 0x79, 0x07, 0x84, 0x8d, 0xcb, 0x5a, 0x23, 0xa6, 0x83, + 0xbd, 0xea, 0x5a, 0xc3, 0x59, 0x60, + }, + { + /* 13 */ + 0x79, 0x1a, 0x2d, 0x6d, 0xc9, 0x3b, 0x13, 0xe1, 0x79, 0x58, + 0x80, 0x80, 0x75, 0x80, 0xb7, 0x36, 0x91, 0x58, 0xcb, 0xc6, + 0xfe, 0x1f, 0xb1, 0x50, 0x91, 0xd6, 0x1a, 0x1a, 0x1d, 0x1a, + 0x89, 0x33, 0x99, 0x09, 0xd2, 0xbc, 0x88, 0x79, 0x33, 0xc2, + 0x99, 0xe9, 0xdc, 0xdc, 0x3b, 0xdc, 0x07, 0x9c, 0xb9, 0x8e, + 0xb6, 0x97, 0x93, 0x22, 0x7e, 0xcf, 0xb9, 0x15, 0x42, 0x42, + 0xa3, 0x42, 0x7a, 0x65, 0x71, 0x4b, 0x34, 0x17, 0xbf, 0x5d, + 0x91, 0x73, 0x71, 0x67, 0x46, 0x46, 0x53, 0x46, 0x39, 0x99, + 0xea, 0xc7, 0x71, 0x54, 0xcb, 0xdc, 0x63, 0x74, 0xea, 0xf1, + 0x4a, 0x4a, 0x80, 0x4a, 0xfc, 0x5e, 0xd7, 0xd9, 0x79, 0x52, + 0x0f, 0x62, 0xab, 0xc6, 0xd7, 0x6c, 0x56, 0x56, 0x15, 0x56, + 0xf6, 0xef, 0x95, 0x91, 0x26, 0xfb, 0xc5, 0x2c, 0xf0, 0x19, + 0x95, 0x28, 0x79, 0x79, 0x0e, 0x79, 0xce, 0x85, 0x55, 0x05, + 0xbd, 0x01, 0x9f, 0x35, 0x9d, 0x37, 0x55, 0x65, 0xbb, 0xbb, + 0xd8, 0xbb, 0x03, 0xd6, 0xda, 0xe2, 0x27, 0x8b, 0x3c, 0x4b, + 0xe9, 0x9e, 0xda, 0x73, 0x9b, 0x9b, 0x54, 0x9b, 0x5e, 0x3a, + 0xdb, 0x41, 0x8d, 0x15, 0x42, 0x37, 0x68, 0x1d, 0xdb, 0xad, + 0xf3, 0xf3, 0x20, 0xf3, 0x3f, 0xf6, 0xb5, 0x16, 0x42, 0xd0, + 0xde, 0x77, 0xbd, 0x14, 0xb5, 0xd4, 0xe7, 0xe7, 0x96, 0xe7, + 0xb3, 0x7c, 0x3f, 0x9b, 0x9f, 0xf9, 0x38, 0x46, 0x09, 0x77, + 0x3f, 0xe2, 0xcc, 0xcc, 0x7d, 0xcc, 0xc8, 0xea, 0x54, 0xa6, + 0x17, 0x9f, 0xe1, 0x49, 0x1c, 0xb4, 0x54, 0xbb, 0xd3, 0xd3, + 0xac, 0xd3, 0x62, 0x1a, 0x7d, 0xd3, 0xc0, 0x50, 0xf2, 0x08, + 0x52, 0xa8, 0x7d, 0xa6, 0xe3, 0xe3, 0x66, 0xe3, 0xf0, 0x80, + 0xd5, 0x5c, 0xee, 0xad, 0xf3, 0x9a, 0x6a, 0x03, 0xd5, 0x13, + 0x86, 0x86, 0xfd, 0x86, 0x34, 0xb4, 0xbd, 0x47, 0x5b, 0xaa, + 0xa8, 0x11, 0x3f, 0x86, 0xbd, 0xeb, 0x21, 0x21, 0xb0, 0x21, + 0x3d, 0xd3, 0xa9, 0x2c, 0x84, 0x63, 0x7f, 0xee, 0xb9, 0x28, + 0xa9, 0x6b, 0x0d, 0x0d, 0xef, 0x0d, 0xa5, 0xf8, 0xfe, 0xac, + 0xae, 0x9d, 0x1c, 0x23, 0xe5, 0xda, 0xfe, 0x71, 0x66, 0x66, + 0xdf, 0x66, 0x64, 0x75, 0x3b, 0x52, 0x72, 0xc4, 0x03, 0x75, + 0x48, 0x3e, 0x3b, 0x1c, 0xaf, 0xaf, 0x6e, 0xaf, 0x8f, 0x5c, + 0x1d, 0x99, 0x6c, 0x2d, 0xdf, 0xe5, 0x85, 0xbf, 0x1d, 0x61, + 0x82, 0x82, 0x0d, 0x82, 0x77, 0x48, 0x36, 0x69, 0x2c, 0x1d, + 0x30, 0x5c, 0x0a, 0x66, 0x36, 0x03, 0x62, 0x62, 0x2f, 0x62, + 0x27, 0x89, 0x38, 0x74, 0x4f, 0xa5, 0x81, 0xf1, 0x08, 0x78, + 0x38, 0xbd, 0x17, 0x17, 0xf2, 0x17, 0x2c, 0xcb, 0x07, 0xef, + 0xd0, 0x5c, 0xb9, 0xb7, 0x01, 0x0f, 0x07, 0x5f, 0xdb, 0xdb, + 0x8f, 0xdb, 0xe4, 0x21, 0x1b, 0xd5, 0x16, 0xef, 0x18, 0x2e, + 0x05, 0x33, 0x1b, 0xe0, 0x31, 0x31, 0xf6, 0x31, 0xf2, 0xa5, + 0xfb, 0xc6, 0xe9, 0x3e, 0x59, 0x6c, 0x25, 0x10, 0xfb, 0x51, + 0x6d, 0x6d, 0xb8, 0x6d, 0x42, 0x0f, 0x70, 0xe8, 0x9e, 0x89, + 0xc1, 0x21, 0x10, 0xf0, 0x70, 0xb9, 0x2e, 0x2e, 0x27, 0x2e, + 0x58, 0x55, 0x89, 0xab, 0xe0, 0x48, 0x64, 0xb5, 0xf4, 0x25, + 0x89, 0x97, 0x93, 0x93, 0x77, 0x93, 0xd8, 0x01, 0x4a, 0x19, + 0x46, 0xd3, 0xbc, 0x28, 0xd9, 0x4d, 0x4a, 0x7b, 0xe9, 0xe9, + 0x3d, 0xe9, 0xb6, 0xc5, 0xae, 0xc3, 0x54, 0x3f, 0xc6, 0x59, + 0xb8, 0x27, 0xae, 0x34, 0xd6, 0xd6, 0x60, 0xd6, 0x41, 0xd9, + 0x3d, 0x1e, 0x08, 0x06, 0xc4, 0xbe, 0xc8, 0xb2, 0x3d, 0x9d, + 0x1c, 0x1c, 0x95, 0x1c, 0x0a, 0xb1, 0x29, 0x75, 0xd7, 0xcf, + 0x13, 0x41, 0x4e, 0x1c, 0x29, 0x1d, 0x30, 0x30, 0xca, 0x30, + 0x92, 0x9a, 0x8a, 0x8d, 0xdd, 0x29, 0xe6, 0x31, 0xb4, 0x63, + 0x8a, 0x36, 0x2b, 0x2b, 0xeb, 0x2b, 0x7b, 0x96, 0xcd, 0xaf, + 0xc5, 0x23, 0x69, 0x30, 0x2f, 0x76, 0xcd, 0x52, 0x0f, 0x0f, + 0x97, 0x0f, 0x65, 0x86, 0x41, 0x6e, 0x62, 0xc8, 0x48, 0xca, + 0x1b, 0x99, 0x41, 0xe5, 0x97, 0x97, 0x87, 0x97, 0x9b, 0xfd, + 0xce, 0x89, 0xf8, 0x42, 0xeb, 0xb4, 0x6f, 0x30, 0xce, 0xf3, + 0xb7, 0xb7, 0x0b, 0xb7, 0xc6, 0x11, 0x16, 0xee, 0x48, 0x36, + 0x2b, 0x07, 0x47, 0x6b, 0x16, 0xff, 0xfc, 0xfc, 0xb7, 0xfc, + 0x5a, 0x70, 0x6c, 0xd2, 0x58, 0x3a, 0x60, 0xb8, 0x14, 0xcc, + 0x6c, 0x06, 0xc4, 0xc4, 0x5e, 0xc4, 0x4e, 0xd1, 0x1f, 0x1c, + 0xfb, 0xd2, 0x23, 0x1d, 0x44, 0x7a, 0x1f, 0x1e, 0x52, 0x52, + 0xe5, 0x52, 0xb5, 0x13, 0xe0, 0x13, 0xff, 0xd1, 0x41, 0x42, + 0x20, 0x23, 0xe0, 0xb1, 0x5c, 0x5c, 0x4e, 0x5c, 0xb0, 0xaa, + 0xf5, 0xdb, 0x8a, 0x86, 0xe8, 0xc1, 0x27, 0x0e, 0xf5, 0xef, + 0x18, 0x18, 0x65, 0x18, 0x49, 0x4d, 0xb0, 0x7c, 0x05, 0x73, + 0x9b, 0x38, 0x7d, 0xde, 0xb0, 0xf4, 0xec, 0xec, 0xf1, 0xec, + 0x95, 0x06, 0xde, 0x2b, 0xca, 0xb6, 0x07, 0x78, 0xa8, 0xd7, + 0xde, 0x8d, 0xf8, 0xf8, 0x47, 0xf8, 0x19, 0x8c, 0x03, 0x26, + 0x3d, 0x61, 0x82, 0x84, 0x40, 0x46, 0x03, 0xa1, 0xb8, 0xb8, + 0x9c, 0xb8, 0xa3, 0x97, 0xd0, 0x36, 0xa9, 0x0e, 0xb6, 0xd5, + 0xaa, 0xc9, 0xd0, 0x33, 0x8d, 0x8d, 0x9a, 0x8d, 0x12, 0xce, + 0x8e, 0x44, 0x30, 0x14, 0xdd, 0x02, 0xf5, 0x2a, 0x8e, 0xc8, + 0x48, 0x48, 0xf8, 0x48, 0x3c, 0x20, 0x23, 0xa1, 0x59, 0x4a, + 0x99, 0xdf, 0x0d, 0x4b, 0x23, 0x5d, 0x26, 0x26, 0x04, 0x26, + 0xde, 0x6e, 0x0a, 0xd4, 0x8e, 0x85, 0x8a, 0x9e, 0x43, 0x57, + 0x0a, 0x40, 0x16, 0x16, 0xce, 0x16, 0x4c, 0xf4, 0xf3, 0x97, + 0xf0, 0x44, 0x2f, 0x0a, 0xa7, 0x82, 0xf3, 0x6e, 0xab, 0xab, + 0x9e, 0xab, 0xcc, 0xa0, 0x06, 0x4c, 0x7a, 0xc2, 0xc7, 0xcb, + 0x80, 0x8c, 0x06, 0x81, 0xb3, 0xb3, 0xfb, 0xb3, 0x85, 0xed, + 0xdf, 0x88, 0x60, 0x28, 0x79, 0x04, 0x29, 0x54, 0xdf, 0x53, + 0x90, 0x90, 0x33, 0x90, 0x78, 0x40, 0x4d, 0xf6, 0x96, 0x8f, + 0x05, 0x9f, 0xd8, 0x42, 0x4d, 0x24, 0x32, 0x32, 0xb2, 0x32, + 0x52, 0xe4, 0x98, 0xaa, 0x78, 0x22, 0xf6, 0x05, 0xb2, 0x41, + 0x98, 0x37, 0xb4, 0xb4, 0x4f, 0xb4, 0x66, 0x50, 0x97, 0x14, + 0xb1, 0x04, 0x39, 0xd4, 0x31, 0xdc, 0x97, 0x57, 0xa9, 0xa9, + 0xe6, 0xa9, 0x0c, 0xde, 0xad, 0xe5, 0x69, 0x5e, 0x44, 0xdd, + 0xf8, 0x61, 0xad, 0x95, 0x6e, 0x6e, 0xfc, 0x6e, 0xe2, 0x4e, + 0x15, 0xc8, 0x75, 0x57, 0xa9, 0x83, 0x07, 0x2d, 0x15, 0x5e, + 0x44, 0x44, 0x2b, 0x44, 0xf9, 0xe7, 0xa2, 0x5b, 0xa0, 0x78, + 0x8b, 0x0c, 0x7b, 0xfc, 0xa2, 0xf5, 0x73, 0x73, 0x55, 0x73, + 0x88, 0xc0, 0xab, 0xa9, 0x13, 0x9c, 0x83, 0x16, 0x78, 0xed, + 0xab, 0x14, 0xdd, 0xdd, 0x07, 0xdd, 0x67, 0xa3, 0xc0, 0x94, + 0x9b, 0xfa, 0x5a, 0x19, 0x6d, 0x2e, 0xc0, 0x4d, 0xc2, 0xc2, + 0xd6, 0xc2, 0xcd, 0x53, 0xb6, 0x30, 0x7f, 0xb1, 0x5c, 0xf3, + 0xfd, 0x52, 0xb6, 0x75, 0x5f, 0x5f, 0x0a, 0x5f, 0x10, 0xeb, + 0x53, 0x49, 0xc7, 0xc3, 0x58, 0xfe, 0x1d, 0xbb, 0x53, 0xe4, + 0x08, 0x08, 0x23, 0x08, 0x86, 0x3b, 0xed, 0x28, 0xa1, 0x08, + 0x72, 0x6b, 0x62, 0x7b, 0xed, 0xae, 0x91, 0x91, 0x0f, 0x91, + 0x18, 0x7f, 0xc1, 0x37, 0x31, 0x64, 0x24, 0x65, 0xec, 0xad, + 0xc1, 0x93, 0xaa, 0xaa, 0xa2, 0xaa, 0xac, 0x9f, 0xe1, 0xb0, + 0x55, 0x4f, 0x3f, 0x3e, 0xa1, 0xa0, 0xe1, 0x6f, 0x34, 0x34, + 0x3a, 0x34, 0xd1, 0x66, 0x62, 0xcf, 0x3b, 0x82, 0xd1, 0x15, + 0x16, 0xd2, 0x62, 0xb8, 0xb1, 0xb1, 0x83, 0xb1, 0x45, 0x93, + 0x24, 0x4e, 0x89, 0x16, 0x20, 0x68, 0x0c, 0x44, 0x24, 0x02, + 0xfd, 0xfd, 0x8b, 0xfd, 0x3a, 0x4f, 0xe9, 0xe1, 0x4c, 0x35, + 0x49, 0x58, 0x23, 0x32, 0xe9, 0x50, 0xf2, 0xf2, 0x1c, 0xf2, + 0x5f, 0xc9, 0x65, 0x20, 0xeb, 0xde, 0x68, 0xa2, 0x17, 0xdd, + 0x65, 0xe7, 0x6a, 0x6a, 0x0c, 0x6a, 0xa1, 0xb2, 0xec, 0x8b, + 0x0b, 0x96, 0x0c, 0x17, 0xe3, 0xf8, 0xec, 0x70, 0xf9, 0xf9, + 0x7b, 0xf9, 0x79, 0xb3, 0x5d, 0x54, 0xa4, 0x7b, 0xe9, 0x53, + 0x1f, 0xa5, 0x5d, 0x5a, 0x7d, 0x7d, 0xfe, 0x7d, 0x8d, 0x79, + 0x26, 0xcb, 0x1e, 0xe9, 0xdc, 0x90, 0xcd, 0x81, 0x26, 0x7d, + 0x2d, 0x2d, 0x63, 0x2d, 0xf8, 0x14, 0xbe, 0x61, 0x66, 0xcb, + 0x2a, 0x95, 0x7f, 0xc0, 0xbe, 0x4a, 0x99, 0x99, 0x2c, 0x99, + 0x9e, 0x44, 0x21, 0x24, 0xce, 0xb5, 0x65, 0x27, 0xcc, 0x8e, + 0x21, 0x22, 0xf6, 0xf6, 0xec, 0xf6, 0x1c, 0x35, 0x4b, 0xba, + 0xec, 0x4d, 0xc2, 0x54, 0x58, 0xce, 0x4b, 0xa5, 0x81, 0x81, + 0x49, 0x81, 0xd7, 0x09, 0x48, 0x9c, 0xd1, 0x2c, 0x40, 0xd0, + 0x18, 0x88, 0x48, 0x04, 0x39, 0x39, 0xd5, 0x39, 0x74, 0x9e, + 0xca, 0x40, 0x15, 0x7f, 0xd0, 0x87, 0x2e, 0x79, 0xca, 0x0d, + 0xd4, 0xd4, 0x18, 0xd4, 0x81, 0xa7, 0xf7, 0x5e, 0x1d, 0x79, + 0x14, 0x39, 0xe6, 0xcb, 0xf7, 0x90, 0xc8, 0xc8, 0x8d, 0xc8, + 0x8b, 0x16, 0x7c, 0x70, 0x6a, 0xce, 0x8c, 0x74, 0xd3, 0x2b, + 0x7c, 0x78, 0x8b, 0x8b, 0x12, 0x8b, 0x91, 0x4c, 0xff, 0x0f, + 0x04, 0x03, 0x62, 0x5f, 0x64, 0x59, 0xff, 0xaf, 0x0e, 0x0e, + 0xab, 0x0e, 0x05, 0xb9, 0x20, 0x87, 0x64, 0x2b, 0x1b, 0x5b, + 0x4d, 0x0d, 0x20, 0xfc, 0x9e, 0x9e, 0x98, 0x9e, 0x7d, 0xf9, + 0xd1, 0x95, 0x03, 0x90, 0xc8, 0xa9, 0x2b, 0x4a, 0xd1, 0xed, + 0xe5, 0xe5, 0xee, 0xe5, 0x73, 0x02, 0x85, 0x33, 0x14, 0x0f, + 0x29, 0xe0, 0x37, 0xfe, 0x85, 0x56, 0x36, 0x36, 0x42, 0x36, + 0x11, 0x18, 0x58, 0x3e, 0xe3, 0xd8, 0xac, 0x1c, 0xdf, 0x6f, + 0x58, 0x7a, 0x76, 0x76, 0x99, 0x76, 0xab, 0x03, 0x49, 0x3f, + 0x7b, 0xb2, 0x3e, 0xac, 0x99, 0x0b, 0x49, 0xda, 0x51, 0x51, + 0xa1, 0x51, 0x15, 0x52, 0xfa, 0x65, 0x43, 0xa0, 0x27, 0x10, + 0xa4, 0x93, 0xfa, 0x8f, 0x05, 0x05, 0xcc, 0x05, 0x23, 0xc3, + 0x87, 0xb6, 0x83, 0xf0, 0xd5, 0x18, 0xf6, 0x3b, 0x87, 0x29, + 0xe6, 0xe6, 0xaa, 0xe6, 0xd3, 0x43, 0x27, 0x68, 0xb4, 0x77, + 0xa2, 0xec, 0x4c, 0x02, 0x27, 0xa3, 0x45, 0x45, 0x17, 0x45, + 0x99, 0xd8, 0xe8, 0x42, 0xe6, 0xab, 0x37, 0x24, 0xa2, 0xb1, + 0xe8, 0x8e, 0x9a, 0x9a, 0x68, 0x9a, 0x3e, 0x05, 0xf4, 0x78, + 0x20, 0x18, 0x96, 0xbd, 0xa6, 0x8d, 0xf4, 0x31, 0x70, 0x70, + 0x11, 0x70, 0x28, 0x81, 0x5a, 0xbb, 0x74, 0x27, 0x50, 0xe4, + 0x1e, 0xaa, 0x5a, 0x05, 0xa6, 0xa6, 0x71, 0xa6, 0x69, 0x58, + 0x66, 0x06, 0xd6, 0xbf, 0xea, 0x26, 0x57, 0x9b, 0x66, 0x46, + 0xd2, 0xd2, 0x90, 0xd2, 0x02, 0x25, 0xf0, 0xb1, 0xcd, 0x25, + 0xad, 0x8e, 0xe7, 0xc4, 0xf0, 0xcf, 0x13, 0x13, 0x02, 0x13, + 0x6f, 0x37, 0xcb, 0xe3, 0xbf, 0xe1, 0xae, 0xfb, 0xaf, 0xfa, + 0xcb, 0xd3, 0xbc, 0xbc, 0x6c, 0xbc, 0xe0, 0x6b, 0x0e, 0x1d, + 0x63, 0xb8, 0xb1, 0xad, 0x02, 0x1e, 0x0e, 0xbe, 0x75, 0x75, + 0xdd, 0x75, 0x0b, 0x42, 0xe2, 0x96, 0x68, 0x2e, 0xbd, 0xba, + 0xe1, 0xe6, 0xe2, 0xce, 0x8c, 0x8c, 0xa6, 0x8c, 0x72, 0xf1, + 0x57, 0x80, 0x2a, 0xfe, 0x63, 0xcd, 0x5c, 0xf2, 0x57, 0x1a, + 0x6b, 0x6b, 0x30, 0x6b, 0xc1, 0x8d, 0xc4, 0x5d, 0x76, 0xc7, + 0x61, 0x2a, 0x2c, 0x67, 0xc4, 0xb3, 0xa1, 0xa1, 0xc5, 0xa1, + 0x8a, 0xe5, 0x9b, 0x8c, 0x45, 0x43, 0x74, 0x81, 0xf2, 0x07, + 0x9b, 0x96, 0x0c, 0x0c, 0xd3, 0x0c, 0xc5, 0xc7, 0xee, 0x0e, + 0x9c, 0x69, 0xf0, 0xef, 0x22, 0x3d, 0xee, 0x0f, 0x29, 0x29, + 0x93, 0x29, 0xbb, 0xe8, 0x1a, 0x76, 0xbc, 0x71, 0x66, 0x52, + 0x84, 0xb0, 0x1a, 0x3e, 0x59, 0x59, 0x82, 0x59, 0x93, 0x69, + 0x37, 0xca, 0x86, 0x83, 0x4e, 0x20, 0x8b, 0xe5, 0x37, 0xdd, + 0x0a, 0x0a, 0x5b, 0x0a, 0x46, 0x45, 0x2e, 0x9a, 0x07, 0x93, + 0xaa, 0xf6, 0x4f, 0x13, 0x2e, 0x42, 0xeb, 0xeb, 0x45, 0xeb, + 0x76, 0xbb, 0x69, 0xb8, 0x1f, 0x99, 0x25, 0xf7, 0xd4, 0x06, + 0x69, 0x26, 0xcf, 0xcf, 0x39, 0xcf, 0x68, 0xab, 0x8b, 0x2e, + 0x77, 0xb7, 0x98, 0x4d, 0x35, 0xe0, 0x8b, 0xe8, 0x43, 0x43, + 0x9f, 0x43, 0x1a, 0x5a, 0xaf, 0x60, 0xfe, 0xa1, 0xb8, 0x25, + 0x39, 0xa4, 0xaf, 0xea, 0xbe, 0xbe, 0x14, 0xbe, 0x20, 0x15, + 0xc2, 0x11, 0x0c, 0x05, 0xa6, 0xe1, 0xac, 0xeb, 0xc2, 0x32, + 0x12, 0x12, 0x3e, 0x12, 0x0f, 0x08, 0x7f, 0x56, 0x57, 0xaf, + 0x0e, 0xf0, 0x93, 0x6d, 0x7f, 0xd9, 0x33, 0x33, 0x8e, 0x33, + 0x32, 0xdb, 0x64, 0x83, 0x41, 0x40, 0x16, 0xde, 0x96, 0x5e, + 0x64, 0x39, 0x02, 0x02, 0x78, 0x02, 0xc0, 0x7e, 0x45, 0xa7, + 0x8f, 0xf5, 0x73, 0xf9, 0x5a, 0xd0, 0x45, 0x1b, 0xf4, 0xf4, + 0x94, 0xf4, 0xdc, 0x4b, 0x14, 0x6b, 0xdf, 0xc9, 0xd7, 0xff, + 0x86, 0xae, 0x14, 0x80, 0x2c, 0x2c, 0x5f, 0x2c, 0x98, 0x2b, + 0xfd, 0x8a, 0x93, 0xfc, 0x9e, 0xa7, 0xa5, 0x9c, 0xfd, 0xd0, + 0xde, 0xde, 0x43, 0xde, 0xc7, 0xe2, 0xac, 0x46, 0xc3, 0xc0, + 0x3a, 0xa1, 0x79, 0xe2, 0xac, 0x4b, 0x06, 0x06, 0x88, 0x06, + 0x83, 0x82, 0x86, 0x15, 0x29, 0x6e, 0xab, 0x64, 0x77, 0xb8, + 0x86, 0xf7, 0x8e, 0x8e, 0xde, 0x8e, 0xb2, 0x8f, 0x76, 0xa4, + 0xe4, 0x4b, 0x06, 0xea, 0x90, 0x7c, 0x76, 0x38, 0x9d, 0x9d, + 0xdc, 0x9d, 0xdd, 0xb8, 0x43, 0xeb, 0xf5, 0x37, 0xb4, 0x32, + 0xda, 0x5c, 0x43, 0x9a, 0x47, 0x47, 0x6f, 0x47, 0x59, 0xa6, + 0x50, 0x6f, 0xfa, 0xa2, 0xda, 0x7a, 0x5d, 0xfd, 0x50, 0x45, + 0xb0, 0xb0, 0xbf, 0xb0, 0x25, 0xac, 0x28, 0xd6, 0x7d, 0x51, + 0x6d, 0x3d, 0xcf, 0x9f, 0x28, 0xc3, 0x58, 0x58, 0xbe, 0x58, + 0xf3, 0x56, 0xaa, 0x0a, 0xb9, 0x02, 0xfd, 0x6a, 0xf9, 0x6e, + 0xaa, 0xca, 0xb5, 0xb5, 0x73, 0xb5, 0x06, 0x6f, 0x5e, 0x72, + 0x99, 0x1a, 0x6b, 0xd7, 0x5f, 0xe3, 0x5e, 0xfb, 0xc5, 0xc5, + 0x62, 0xc5, 0x2e, 0xee, 0xdd, 0x0d, 0xf7, 0xd7, 0x85, 0xfc, + 0xe8, 0x91, 0xdd, 0x2c, 0x40, 0x40, 0xdb, 0x40, 0xba, 0x1b, + 0xbb, 0x0b, 0x21, 0x68, 0x6f, 0xda, 0xbf, 0x0a, 0xbb, 0x6a, + 0x92, 0x92, 0x4b, 0x92, 0xb8, 0x3e, 0x96, 0xb7, 0x1b, 0x9a, + 0x47, 0xa8, 0xb0, 0x5f, 0x96, 0x89, 0xc1, 0xc1, 0x92, 0xc1, + 0x6d, 0x12, 0x05, 0x6a, 0x47, 0xa3, 0x45, 0x4f, 0xc0, 0xca, + 0x05, 0x20, 0x0b, 0x0b, 0x67, 0x0b, 0x26, 0x7a, 0x7b, 0x9f, + 0xba, 0x92, 0x35, 0xc3, 0xd2, 0x24, 0x7b, 0x27, 0x50, 0x50, + 0x9d, 0x50, 0x75, 0x6d, 0xf6, 0xfd, 0xb7, 0xe7, 0x6a, 0x45, + 0x67, 0x48, 0xf6, 0x4e, 0xa0, 0xa0, 0xf9, 0xa0, 0xea, 0xda, + 0x2b, 0xf0, 0x40, 0x30, 0xef, 0xb9, 0x8f, 0xd9, 0x2b, 0x62, + 0xe0, 0xe0, 0x22, 0xe0, 0x50, 0xc1, 0x09, 0xf2, 0xb3, 0xe4, + 0x08, 0x1a, 0x03, 0x11, 0x09, 0xe1, 0xae, 0xae, 0x52, 0xae, + 0xef, 0x63, 0xc7, 0x7b, 0x4b, 0xa6, 0xe3, 0xae, 0x6c, 0x21, + 0xc7, 0x12, 0x19, 0x19, 0x59, 0x19, 0x29, 0x72, 0x46, 0x81, + 0xb2, 0x94, 0xf1, 0x7d, 0x1a, 0x96, 0x46, 0xba, 0x4c, 0x4c, + 0x08, 0x4c, 0x7f, 0xdc, 0x0d, 0x3b, 0x5e, 0xd9, 0x33, 0x29, + 0x42, 0x58, 0x0d, 0x1f, 0xcd, 0xcd, 0x41, 0xcd, 0xa8, 0xd5, + 0x13, 0x84, 0x0f, 0x95, 0x6e, 0x48, 0x87, 0xa1, 0x13, 0xdf, + 0xf7, 0xf7, 0xd0, 0xf7, 0x7c, 0x0a, 0x61, 0xe9, 0x06, 0xe3, + 0x53, 0x91, 0x56, 0x94, 0x61, 0x19, 0x09, 0x09, 0x1f, 0x09, + 0xe6, 0x04, 0x01, 0xa3, 0xaa, 0x9e, 0x7e, 0x7c, 0x81, 0x83, + 0x01, 0xde, 0x68, 0x68, 0x74, 0x68, 0x61, 0xcc, 0xef, 0xad, + 0x36, 0xf7, 0x8e, 0x93, 0xa3, 0xbe, 0xef, 0xd1, 0x41, 0x41, + 0xe7, 0x41, 0xda, 0x24, 0x8d, 0x62, 0x0d, 0x75, 0x5f, 0x86, + 0xb5, 0x6c, 0x8d, 0x69, 0xf0, 0xf0, 0x64, 0xf0, 0x9f, 0xb7, + 0xd3, 0x10, 0x94, 0x6f, 0x34, 0x51, 0xea, 0x8f, 0xd3, 0x92, + 0x35, 0x35, 0x06, 0x35, 0xb1, 0x59, 0xbc, 0xe4, 0xf1, 0x34, + 0xd6, 0x6d, 0xbe, 0x05, 0xbc, 0x35, 0x49, 0x49, 0xc4, 0x49, + 0x5c, 0x1f, 0xf1, 0x12, 0x67, 0xbb, 0xd3, 0xf2, 0x66, 0x47, + 0xf1, 0x11, 0x7b, 0x7b, 0x76, 0x7b, 0x0e, 0xfb, 0x32, 0xa0, + 0xc1, 0x20, 0x0b, 0x6f, 0x4b, 0x2f, 0x32, 0xfd, 0x01, 0x01, + 0x3c, 0x01, 0x60, 0x3f, 0x5c, 0xf7, 0x0e, 0xe5, 0x97, 0x2f, + 0x9e, 0x26, 0x5c, 0x84, 0x15, 0x15, 0x8a, 0x15, 0xec, 0xb5, + 0x02, 0x85, 0x97, 0xff, 0xfc, 0xf8, 0xc1, 0xc5, 0x02, 0x7f, + 0xd0, 0xd0, 0xe8, 0xd0, 0xc2, 0x5b, 0xb1, 0xdf, 0xaf, 0xed, + 0xe5, 0x44, 0xfc, 0x5d, 0xb1, 0x2a, 0x84, 0x84, 0x85, 0x84, + 0xf4, 0xca, 0x56, 0x23, 0x80, 0x60, 0x1d, 0xb1, 0xdd, 0x71, + 0x56, 0xc4, 0x03, 0x03, 0x44, 0x03, 0xa0, 0x41, 0x51, 0xcc, + 0x50, 0x3c, 0xa4, 0x06, 0xdc, 0x7e, 0x51, 0x9b, 0xd8, 0xd8, + 0xcb, 0xd8, 0x44, 0x60, 0xc9, 0x66, 0x28, 0x1e, 0x52, 0x03, + 0x6e, 0x3f, 0xc9, 0xac, 0x6c, 0x6c, 0x84, 0x6c, 0x22, 0x30, + 0xd6, 0x7a, 0xd3, 0xcc, 0x71, 0x1e, 0x2a, 0x45, 0xd6, 0xb2, + 0x3e, 0x3e, 0x61, 0x3e, 0x97, 0x23, 0x4e, 0xd0, 0xab, 0xee, + 0x87, 0x1b, 0x98, 0x04, 0x4e, 0x85, 0x8a, 0x8a, 0x2e, 0x8a, + 0xf1, 0x73, 0xc8, 0xc5, 0x82, 0x80, 0x2c, 0x7f, 0xef, 0xbc, + 0xc8, 0x72, 0x04, 0x04, 0xf0, 0x04, 0x43, 0xfc, 0xa0, 0xde, + 0x37, 0x87, 0x77, 0xf4, 0xba, 0x39, 0xa0, 0x8a, 0xa3, 0xa3, + 0xbd, 0xa3, 0x4a, 0x9b, 0x31, 0x86, 0xfc, 0x41, 0x89, 0xeb, + 0x0b, 0x69, 0x31, 0x5c, 0xb9, 0xb9, 0xa0, 0xb9, 0xc3, 0xa8, + 0x22, 0x02, 0xf3, 0xd4, 0xe7, 0xa3, 0x8c, 0xc8, 0x22, 0x83, + 0x4e, 0x4e, 0x70, 0x4e, 0xbf, 0xa2, 0xa5, 0xb4, 0x70, 0x24, + 0x32, 0xbb, 0x7a, 0xf3, 0xa5, 0xaa, 0xa8, 0xa8, 0xda, 0xa8, + 0x6c, 0xe1, 0x17, 0x4d, 0xe2, 0xa8, 0x55, 0x7b, 0xc6, 0xe8, + 0x17, 0x21, 0x94, 0x94, 0xc3, 0x94, 0x3b, 0xbc, 0x33, 0x03, + 0x6b, 0xbe, 0x75, 0x13, 0xca, 0xac, 0x33, 0x23, 0x69, 0x69, + 0x48, 0x69, 0x01, 0xf3, 0x94, 0x32, 0x8c, 0x65, 0xbb, 0x50, + 0x71, 0x9a, 0x94, 0xf6, 0x11, 0x11, 0x7a, 0x11, 0xaf, 0x49, + 0xeb, 0x64, 0xdb, 0xca, 0xb5, 0xa0, 0xe2, 0xf7, 0xeb, 0x2f, + 0x22, 0x22, 0xf4, 0x22, 0x9d, 0x92, 0x84, 0x90, 0xbe, 0x91, + 0x57, 0x9c, 0xb6, 0x7d, 0x84, 0x88, 0x5e, 0x5e, 0x36, 0x5e, + 0x70, 0xd4, 0x08, 0x51, 0x19, 0x7a, 0x76, 0x66, 0x82, 0x92, + 0x08, 0x3f, 0xc6, 0xc6, 0x26, 0xc6, 0x8e, 0xaf, 0x25, 0xed, + 0x23, 0x88, 0x5e, 0x14, 0x8d, 0xc7, 0x25, 0xdc, 0x95, 0x95, + 0xff, 0x95, 0x5b, 0x83, 0xf9, 0x43, 0x7e, 0xc1, 0xa5, 0x94, + 0xe4, 0xd5, 0xf9, 0x2e, 0xbd, 0xbd, 0x50, 0xbd, 0x80, 0x54, + 0x39, 0xd7, 0xe5, 0x3b, 0xff, 0x8d, 0x89, 0xfb, 0x39, 0x63, + 0x7f, 0x7f, 0x86, 0x7f, 0x4d, 0x07, 0x60, 0x4a, 0xac, 0x7d, + 0x2d, 0xed, 0xd7, 0x17, 0x60, 0xc7, 0x61, 0x61, 0x6b, 0x61, + 0x87, 0xc8, 0xb2, 0xf9, 0x92, 0x8c, 0x67, 0xc0, 0xbc, 0x1b, + 0xb2, 0x8b, 0x3c, 0x3c, 0x19, 0x3c, 0x57, 0x5d, 0xd4, 0xff, + 0x44, 0x33, 0x8d, 0xe6, 0xeb, 0x80, 0xd4, 0xcd, 0xee, 0xee, + 0x89, 0xee, 0x55, 0x78, 0x6f, 0xf4, 0x65, 0x5b, 0xe2, 0x3c, + 0x54, 0x8a, 0x6f, 0xa7, 0x7c, 0x7c, 0xc2, 0x7c, 0xed, 0x46, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x71, 0xf2, 0xa4, + 0x1e, 0xc4, 0x95, 0x4f, 0x6d, 0xd8, 0xac, 0xac, 0x2a, 0xac, + 0x2f, 0x1d, 0xa1, 0x7d, 0x9d, 0x19, 0x09, 0x88, 0x3b, 0xba, + 0xa1, 0x54, 0xcb, 0xcb, 0xc9, 0xcb, 0x2b, 0x57, 0x12, 0x27, + 0xa5, 0x0b, 0x10, 0x34, 0x06, 0x22, 0x12, 0x01, 0x9f, 0x9f, + 0xa4, 0x9f, 0x1d, 0xc6, 0xd8, 0x67, 0xb0, 0x74, 0xc0, 0xb3, + 0x28, 0x5b, 0xd8, 0x0c, 0x4b, 0x4b, 0xbc, 0x4b, 0x9c, 0x61, + 0xa3, 0xf8, 0x0a, 0xe6, 0xf5, 0x70, 0xfa, 0x7f, 0xa3, 0x2b, + 0x1b, 0x1b, 0x21, 0x1b, 0xe9, 0x0c, 0xa4, 0x17, 0xda, 0xba, + 0x4c, 0xc7, 0xfb, 0x70, 0xa4, 0x74, 0xc0, 0xc0, 0xae, 0xc0, + 0x0d, 0x2d, 0xcf, 0x2a, 0x52, 0xdc, 0x95, 0xc8, 0xee, 0xb3, + 0xcf, 0x2d, 0xdf, 0xdf, 0x7f, 0xdf, 0xa7, 0xdd, 0x9a, 0x2f, + 0xef, 0xdd, 0x0a, 0xfd, 0x73, 0x84, 0x9a, 0x48, 0x64, 0x64, + 0xa7, 0x64, 0xa4, 0x0b, 0xcc, 0x0c, 0x6f, 0xbd, 0x17, 0x4c, + 0xae, 0xf5, 0xcc, 0x8c, 0x67, 0x67, 0xe3, 0x67, 0x04, 0x4a, + 0x52, 0xea, 0x6d, 0x5d, 0x26, 0x82, 0x9c, 0x38, 0x52, 0x3a, + 0x60, 0x60, 0x57, 0x60, 0xe7, 0xf7, 0x1c, 0x3a, 0xc6, 0xb3, + 0xa1, 0x99, 0x04, 0x3c, 0x1c, 0xbf, 0xea, 0xea, 0x79, 0xea, + 0x16, 0x84, 0x2f, 0x39, 0xad, 0x0d, 0xd4, 0x8a, 0xce, 0x90, + 0x2f, 0x9c, 0x83, 0x83, 0x31, 0x83, 0x17, 0x77, 0x7e, 0xf5, + 0xfd, 0x31, 0x70, 0x8c, 0x12, 0xee, 0x7e, 0x07, 0x5b, 0x5b, + 0xfa, 0x5b, 0x53, 0x17, 0x93, 0xdd, 0x5c, 0x39, 0x02, 0xe7, + 0x70, 0x95, 0x93, 0xa9, 0xca, 0xca, 0xf5, 0xca, 0x4b, 0x68, + 0x42, 0x48, 0x5f, 0xa9, 0xca, 0x4e, 0x5b, 0xdf, 0x42, 0x44, + 0x2f, 0x2f, 0x1b, 0x2f, 0x38, 0x6a, 0xb3, 0x5a, 0x38, 0x12, + 0x19, 0xbc, 0x3d, 0x98, 0xb3, 0x55, 0x54, 0x54, 0x6d, 0x54, + 0x36, 0x91, 0x18, 0xf3, 0x2b, 0x8e, 0x9a, 0xaa, 0x45, 0x75, + 0x18, 0x41, 0x89, 0x89, 0x6a, 0x89, 0x51, 0x32, 0xb8, 0x2d, + 0x1c, 0x09, 0xed, 0x5e, 0xff, 0x4c, 0xb8, 0xcb, 0x2a, 0x2a, + 0xd7, 0x2a, 0x1b, 0xa9, 0xfc, 0x29, 0x39, 0x62, 0xe0, 0xdb, + 0x24, 0x1f, 0xfc, 0x0e, 0xb6, 0xb6, 0x37, 0xb6, 0xa6, 0x2e, + 0x44, 0x04, 0x25, 0x6b, 0x0d, 0x85, 0xdb, 0x53, 0x44, 0xc5, + 0x9c, 0x9c, 0xe0, 0x9c, 0xbd, 0x87, 0xe6, 0x5f, 0x85, 0x13, + 0x86, 0x89, 0xa0, 0xaf, 0xe6, 0x30, 0xef, 0xef, 0xb5, 0xef, + 0x35, 0x47, 0x8c, 0xc1, 0xa7, 0xeb, 0x21, 0xfa, 0x34, 0xef, + 0x8c, 0xb7, 0x98, 0x98, 0x10, 0x98, 0xfe, 0x7b, 0xc6, 0xd8, + 0xe1, 0x38, 0x9d, 0xd2, 0xed, 0xa2, 0xc6, 0xcc, 0x71, 0x71, + 0x2d, 0x71, 0x48, 0xbe, 0x63, 0x6c, 0x91, 0x1c, 0xaf, 0x69, + 0x97, 0x51, 0x63, 0x66, 0xd9, 0xd9, 0xf7, 0xd9, 0x24, 0x5f, + 0xbf, 0xc2, 0xcc, 0x55, 0x54, 0xe9, 0xfe, 0x43, 0xbf, 0x94, + 0xf1, 0xf1, 0x58, 0xf1, 0xff, 0x88, 0xf2, 0x34, 0x5a, 0xda, + 0x51, 0x76, 0x26, 0x01, 0xf2, 0xb0, 0xc3, 0xc3, 0xea, 0xc3, + 0xad, 0x6c, 0x2c, 0x1f, 0x90, 0x6c, 0x56, 0x0e, 0x8e, 0xd6, + 0x2c, 0x3d, 0x3b, 0x3b, 0xad, 0x3b, 0xb4, 0xe0, 0x11, 0x01, + 0x98, 0x6a, 0x92, 0xb0, 0x46, 0x64, 0x11, 0xa0, 0x27, 0x27, + 0x38, 0x27, 0xbe, 0x51, 0x73, 0xce, 0xa3, 0xe8, 0x43, 0xa5, + 0x50, 0xb6, 0x73, 0x18, 0x96, 0x96, 0xbb, 0x96, 0xfb, 0xc2, + 0xdc, 0xae, 0x5d, 0x49, 0xfb, 0x80, 0x69, 0x12, 0xdc, 0xf2, + 0x28, 0x28, 0xaf, 0x28, 0xdb, 0xd7, 0xd9, 0xc4, 0x1a, 0xea, + 0xbe, 0xcf, 0xa9, 0xd8, 0xd9, 0xd2, 0x23, 0x23, 0xc8, 0x23, + 0xfd, 0xad, 0x92, 0x7e, 0xf6, 0xa7, 0x7c, 0x9b, 0xf1, 0x16, + 0x92, 0x77, 0xa2, 0xa2, 0x81, 0xa2, 0x2a, 0xa4, 0x3e, 0x38, + 0x35, 0x67, 0x46, 0x3a, 0x88, 0xf4, 0x3e, 0x3c, 0xa4, 0xa4, + 0x09, 0xa4, 0xa9, 0x26, 0xd2, 0xb3, 0x3e, 0xf1, 0x4a, 0x2d, + 0x6b, 0x0c, 0xd2, 0x4c, 0x5d, 0x5d, 0x72, 0x5d, 0xd0, 0x95, + 0x59, 0x9d, 0x49, 0x46, 0xd2, 0x60, 0x5e, 0xec, 0x59, 0xa4, + 0x1e, 0x1e, 0xed, 0x1e, 0xca, 0xcf, 0x75, 0x82, 0xd9, 0x2a, + 0x84, 0x6e, 0xd0, 0x3a, 0x75, 0x99, 0x25, 0x25, 0x40, 0x25, + 0x7e, 0x2f, 0x19, 0x50, 0x81, 0x10, 0xe4, 0xd6, 0xc4, 0xf6, + 0x19, 0x9f, 0xe1, 0xe1, 0x1e, 0xe1, 0x30, 0xfe, 0xb4, 0xb5, + 0xe8, 0x4e, 0xa0, 0x0b, 0x3c, 0x97, 0xb4, 0x0a, 0x8f, 0x8f, + 0xe2, 0x8f, 0xd2, 0xb0, 0x81, 0xfa, 0xf9, 0x32, 0x12, 0xd3, + 0x76, 0xb7, 0x81, 0xa8, 0x55, 0x55, 0x51, 0x55, 0x56, 0xae, + 0xe4, 0xda, 0x12, 0xec, 0x7a, 0x71, 0x61, 0x6a, 0xe4, 0x4f, + 0x3f, 0x3f, 0x5d, 0x3f, 0xf7, 0x1c, 0xe5, 0x79, 0xb8, 0x72, + 0x04, 0x0d, 0xe0, 0xe9, 0xe5, 0x91, 0x57, 0x57, 0x29, 0x57, + 0x96, 0xd0, 0x0f, 0xbe, 0xc9, 0x26, 0xcf, 0xd1, 0x83, 0x9d, + 0x0f, 0x60, 0x1d, 0x1d, 0xa9, 0x1d, 0x6a, 0x8e, 0x47, 0x22, + 0x18, 0x0a, 0x8f, 0x01, 0x9b, 0x15, 0x47, 0x64, 0x24, 0x24, + 0x7c, 0x24, 0x1e, 0x10, 0x9c, 0x63, 0x95, 0x1f, 0xcd, 0x36, + 0xf3, 0x08, 0x9c, 0xc9, 0xd7, 0xd7, 0x5c, 0xd7, 0x21, 0xe6, + 0x2a, 0x53, 0xea, 0xae, 0x91, 0xc5, 0x0e, 0x5a, 0x2a, 0xbc, + 0x88, 0x88, 0x56, 0x88, 0x31, 0x0d, 0xa8, 0x8f, 0x2e, 0xfd, + 0x01, 0x92, 0x38, 0xab, 0xa8, 0xb5, 0x65, 0x65, 0x9b, 0x65, + 0xc4, 0x34, 0x5b, 0x18, 0xde, 0xb9, 0x2e, 0x98, 0x9f, 0x29, + 0x5b, 0xdb, 0xce, 0xce, 0x05, 0xce, 0x08, 0x94, 0x8f, 0xe7, + 0x9a, 0x8a, 0xa3, 0x7e, 0x74, 0xa9, 0x8f, 0x16, 0x20, 0x20, + 0x8c, 0x20, 0x5d, 0xec, 0x04, 0xc9, 0xed, 0x3d, 0x3b, 0x33, + 0x41, 0x49, 0x04, 0xfe, 0x63, 0x63, 0x13, 0x63, 0x47, 0xb6, + 0xa6, 0x92, 0x4d, 0x45, 0xb0, 0x3f, 0x3a, 0xb5, 0xa6, 0x0b, + 0x10, 0x10, 0x46, 0x10, 0xcf, 0x76, 0x72, 0x6d, 0x09, 0x76, + 0x3d, 0xd9, 0xd1, 0x35, 0x72, 0xc6, 0xfe, 0xfe, 0xcf, 0xfe, + 0x9a, 0x0e, 0xba, 0xa8, 0x8b, 0xf6, 0x11, 0xa6, 0x3e, 0x89, + 0xba, 0xb4, 0xfa, 0xfa, 0x3f, 0xfa, 0xd9, 0xf2, 0x30, 0x25, + 0x56, 0xdf, 0xf7, 0x97, 0x8a, 0xea, 0x30, 0x82, 0xd1, 0xd1, + 0xd4, 0xd1, 0xa2, 0x64, 0x4c, 0x55, 0x3c, 0x11, 0x7b, 0xe3, + 0x59, 0xc1, 0x4c, 0xfa, 0x5a, 0x5a, 0xc6, 0x5a, 0x33, 0x28, + 0x82, 0xdc, 0xc4, 0x53, 0x90, 0x57, 0x36, 0xf1, 0x82, 0x09, + 0xed, 0xed, 0xcd, 0xed, 0xf5, 0x39, 0x6a, 0x9e, 0x22, 0xf8, + 0xa7, 0x73, 0x94, 0x40, 0x6a, 0x87, 0x77, 0x77, 0xa5, 0x77, + 0xcb, 0x3c, 0x88, 0x08, 0x4a, 0xd6, 0x1a, 0xc9, 0x75, 0xa6, + 0x88, 0x49, 0xfb, 0xfb, 0x03, 0xfb, 0xb9, 0xcd, 0x3c, 0xbd, + 0xa2, 0x98, 0xba, 0xc2, 0x49, 0x31, 0x3c, 0x43, 0x74, 0x74, + 0xe1, 0x74, 0x6b, 0x7d, 0x6e, 0x57, 0xcf, 0xc5, 0x9c, 0x40, + 0xd5, 0x09, 0x6e, 0x79, 0x14, 0x14, 0xb6, 0x14, 0x8c, 0x8a, + 0x0b, 0x77, 0x24, 0x1b, 0xf4, 0xe2, 0xc2, 0xd4, 0x0b, 0x9e, + 0x7e, 0x7e, 0xba, 0x7e, 0x2d, 0x38, 0x9e, 0xe6, 0x02, 0xe0, + 0x31, 0xce, 0x32, 0xcd, 0x9e, 0xb6, 0x07, 0x07, 0xb4, 0x07, + 0xe3, 0xbd, 0x68, 0x1b, 0xb5, 0x07, 0x5b, 0x8b, 0x55, 0x85, + 0x68, 0xf8, 0xa7, 0xa7, 0x4d, 0xa7, 0x09, 0x67, 0x67, 0xa5, + 0x7c, 0x21, 0x94, 0x5a, 0xd6, 0x18, 0x67, 0x98, 0xba, 0xba, + 0xe4, 0xba, 0x63, 0xe9, 0xc5, 0xfe, 0xdc, 0x59, 0x1f, 0x56, + 0xad, 0xe4, 0xc5, 0x6d, 0xc9, 0xc9, 0xb1, 0xc9, 0xeb, 0x29, + 0x74, 0x21, 0x73, 0xb4, 0xfa, 0x12, 0x51, 0xb9, 0x74, 0x47, + 0x4d, 0x4d, 0x34, 0x4d, 0x1f, 0xe3, 0x40, 0xcd, 0xc8, 0x56, + 0x36, 0xb6, 0x9a, 0x1a, 0x40, 0x3b, 0xff, 0xff, 0xf3, 0xff, + 0xfa, 0x31, 0x0c, 0x98, 0xf4, 0x47, 0x4d, 0x55, 0xc3, 0xdb, + 0x0c, 0xc1, 0xa5, 0xa5, 0x35, 0xa5, 0xc9, 0x19, 0xe7, 0xfc, + 0x2f, 0x8d, 0xf8, 0xf5, 0x21, 0x2c, 0xe7, 0xee, 0x87, 0x87, + 0xc1, 0x87, 0x54, 0x8b, 0x9d, 0xc0, 0x3f, 0x81, 0xb3, 0x4a, + 0x72, 0x8b, 0x9d, 0x17, 0xbf, 0xbf, 0x28, 0xbf, 0x40, 0x2a, + 0x90, 0xfb, 0x61, 0x58, 0x80, 0x63, 0x30, 0xd3, 0x90, 0x08, + 0x72, 0x72, 0x69, 0x72, 0xe8, 0xff, 0x7a, 0x3c, 0x10, 0x0c, + 0x4b, 0xbf, 0x53, 0xa7, 0x7a, 0xf9, 0x38, 0x38, 0xe9, 0x38, + 0x14, 0xa1, 0x3a, 0xf1, 0xd8, 0x5a, 0x7d, 0x09, 0xc9, 0xbd, + 0x3a, 0xc2, 0xc7, 0xc7, 0x1a, 0xc7, 0xee, 0x90, 0x35, 0x4f, + 0x11, 0x7c, 0xb2, 0xd8, 0x4a, 0x20, 0x35, 0xa2, 0xda, 0xda, + 0xb3, 0xda, 0x84, 0x1e, 0x34, 0xec, 0xbb, 0xe2, 0xcc, 0xa4, + 0xcb, 0xa3, 0x34, 0x7c, 0xb2, 0xb2, 0xc7, 0xb2, 0xe5, 0xd2, + 0x9f, 0x45, 0xa8, 0x7e, 0x4f, 0xb2, 0xb3, 0x4e, 0x9f, 0x68, + 0x6f, 0x6f, 0xc0, 0x6f, 0x82, 0x71, 0xb7, 0x93, 0xd5, 0x2f, + 0x22, 0x8f, 0x7c, 0xd1, 0xb7, 0xab, 0x37, 0x37, 0x7e, 0x37, + 0x71, 0x27, 0xf8, 0xe0, 0xd4, 0x5f, 0xdb, 0xe8, 0x65, 0x56, + 0xf8, 0xf0, 0xd5, 0xd5, 0x24, 0xd5, 0xe1, 0x98, 0x4f, 0x73, + 0x01, 0x70, 0xf9, 0x67, 0x19, 0x87, 0x4f, 0x5b, 0xe2, 0xe2, + 0x5a, 0xe2, 0x90, 0xbf, 0x6b, 0x3d, 0x88, 0x66, 0xd9, 0x0f, + 0x15, 0xc3, 0x6b, 0x59, 0x1f, 0x1f, 0xd1, 0x1f, 0xaa, 0xf0, + 0x83, 0x7f, 0x6e, 0xcd, 0xee, 0x2b, 0xb7, 0x72, 0x83, 0xd7, + 0x85, 0x85, 0xb9, 0x85, 0x94, 0xf5, 0x5f, 0xd1, 0x33, 0x84, + 0x15, 0xab, 0xde, 0x60, 0x5f, 0x25, 0xad, 0xad, 0x16, 0xad, + 0x4f, 0x22, 0xa7, 0x31, 0xe7, 0xdb, 0xce, 0x43, 0xbb, 0x36, + 0xa7, 0xd5, 0x78, 0x78, 0x32, 0x78, 0xae, 0xba, 0x1e, 0xbf, + 0x51, 0x4c, 0x5d, 0x61, 0xc5, 0xf9, 0x1e, 0xc0, 0x3a, 0x3a, + 0x91, 0x3a, 0xd4, 0xdf, 0x10, 0xa2, 0x32, 0xf4, 0xec, 0xcc, + 0xc7, 0xe7, 0x10, 0x7e, 0x4f, 0x4f, 0x4c, 0x4f, 0xdf, 0x9d, + 0xc3, 0xb2, 0xa6, 0x9b, 0xd8, 0x9d, 0x2d, 0x68, 0xc3, 0xec, + 0x7a, 0x7a, 0x4a, 0x7a, 0x6e, 0xc4, 0x78, 0xb9, 0x87, 0xf3, + 0xb7, 0x47, 0x92, 0x62, 0x78, 0x86, 0xe8, 0xe8, 0x01, 0xe8, + 0xd6, 0xfa, 0x2d, 0xbc, 0x3a, 0xf2, 0x28, 0x72, 0x0f, 0x55, + 0x2d, 0xe3, 0x53, 0x53, 0xd9, 0x53, 0xd5, 0x2c, 0x77, 0x07, + 0x4e, 0xd5, 0x78, 0x96, 0x11, 0xff, 0x77, 0xe6, 0xf5, 0xf5, + 0xa8, 0xf5, 0xbc, 0x74, 0xe3, 0x35, 0xc2, 0xb0, 0xc3, 0xc6, + 0x60, 0x65, 0xe3, 0x10, 0xe4, 0xe4, 0xd2, 0xe4, 0x13, 0x3d, + 0x80, 0x59, 0x53, 0xac, 0x6c, 0xaf, 0xf7, 0x34, 0x80, 0x76, + 0x3d, 0x3d, 0x25, 0x3d, 0x37, 0x62, + }, + { + /* 14 */ + 0x0a, 0xaf, 0x45, 0x6e, 0xf6, 0x73, 0x56, 0xfb, 0x47, 0x1c, + 0xd5, 0xc8, 0x66, 0x2c, 0x64, 0xb5, 0xca, 0x52, 0x68, 0xe5, + 0x24, 0x5b, 0xd9, 0x08, 0xeb, 0x1e, 0xe0, 0x5e, 0xac, 0x6b, + 0x2f, 0x0a, 0xf3, 0x80, 0xf6, 0x75, 0x2e, 0x6a, 0xc5, 0xcb, + 0x78, 0x58, 0xd0, 0xcf, 0x08, 0x95, 0x86, 0x89, 0x17, 0x4e, + 0xcb, 0x70, 0x06, 0xae, 0xb5, 0x41, 0x71, 0x83, 0x10, 0xce, + 0xdd, 0xeb, 0x67, 0xc0, 0x33, 0x7d, 0xdb, 0xfe, 0xfc, 0x42, + 0x4a, 0x38, 0xd4, 0x5a, 0xe5, 0x59, 0xc2, 0xd2, 0xcd, 0x36, + 0x5f, 0x28, 0xeb, 0xaf, 0x31, 0xb5, 0x88, 0xb3, 0xf8, 0xf2, + 0x39, 0x23, 0xe3, 0x99, 0xf0, 0xef, 0xa3, 0xb1, 0x9b, 0x83, + 0x92, 0x74, 0x30, 0x1f, 0x05, 0xb8, 0xb7, 0x40, 0xbe, 0x36, + 0x20, 0x68, 0x37, 0x3b, 0x27, 0xad, 0x21, 0xa2, 0xd7, 0x88, + 0x43, 0x3d, 0xf8, 0xf7, 0xfe, 0x14, 0x9a, 0xaa, 0x2a, 0xda, + 0xa9, 0xb3, 0xd1, 0x7f, 0x34, 0x32, 0x75, 0xa2, 0x3d, 0xf1, + 0x45, 0xd3, 0x99, 0xdf, 0xc9, 0x81, 0x29, 0x49, 0x0d, 0x13, + 0xc0, 0x7c, 0x14, 0xa5, 0x99, 0xc3, 0xbd, 0xd8, 0x80, 0x63, + 0x67, 0x0a, 0x4a, 0x5b, 0x9d, 0xbc, 0x22, 0x5c, 0x3e, 0xdd, + 0x9f, 0x78, 0x48, 0xb7, 0x3c, 0x4b, 0xd3, 0xf5, 0x1a, 0xa8, + 0x09, 0x66, 0xa7, 0x02, 0x4a, 0xe6, 0x38, 0xf6, 0x2b, 0x6a, + 0x7b, 0xe3, 0x63, 0x4c, 0xb6, 0x08, 0x40, 0x5c, 0xbf, 0xec, + 0xa9, 0xba, 0x82, 0xd6, 0x74, 0x71, 0x6b, 0xd7, 0x84, 0x51, + 0xca, 0xa1, 0x41, 0xd0, 0xd6, 0x12, 0x5f, 0xda, 0x3b, 0x4a, + 0xb0, 0xbc, 0x25, 0xf7, 0xf7, 0xc6, 0x0a, 0x26, 0xf3, 0x8a, + 0x58, 0x7b, 0xef, 0x3f, 0xcd, 0x61, 0x34, 0x53, 0xd1, 0x15, + 0x3c, 0x64, 0x5d, 0xa7, 0x71, 0xe9, 0x37, 0x5f, 0x51, 0x48, + 0xbb, 0xf5, 0x97, 0xe8, 0x9b, 0x38, 0xea, 0x27, 0x84, 0x38, + 0x03, 0x57, 0xbb, 0xc1, 0xd9, 0xa0, 0x08, 0x67, 0x8f, 0x94, + 0xd2, 0x60, 0x65, 0x29, 0x34, 0x93, 0x12, 0xcc, 0x8d, 0x04, + 0x94, 0x0f, 0x70, 0x2f, 0x56, 0xd4, 0xf6, 0x05, 0xd0, 0x26, + 0x5b, 0x04, 0x20, 0x2e, 0xbe, 0x76, 0xb5, 0x5d, 0x41, 0x6b, + 0x3a, 0xd9, 0xd4, 0x8a, 0x9e, 0x25, 0xf9, 0x40, 0x45, 0xa5, + 0xb1, 0x6c, 0x01, 0x99, 0x9a, 0x7f, 0x26, 0x0e, 0xde, 0x77, + 0x18, 0x57, 0x4d, 0x29, 0x8b, 0x05, 0xc8, 0x26, 0xf4, 0x91, + 0x4e, 0x62, 0x88, 0xd1, 0x31, 0xce, 0xf4, 0x15, 0x4b, 0x8a, + 0xda, 0xc2, 0x41, 0x0f, 0x10, 0x84, 0xb4, 0xfc, 0x25, 0xe0, + 0x7e, 0x7c, 0xaf, 0x7b, 0x5c, 0x76, 0x36, 0x97, 0x54, 0x0c, + 0x7f, 0x11, 0x90, 0x71, 0xfa, 0xbf, 0xd9, 0x0f, 0xcc, 0x37, + 0xea, 0x7e, 0x76, 0xcb, 0xeb, 0xe0, 0xd6, 0xab, 0x12, 0xa7, + 0x8e, 0xce, 0xb2, 0xd8, 0x7a, 0xeb, 0xc4, 0x45, 0x6d, 0x61, + 0xc1, 0xe6, 0x08, 0x42, 0x5a, 0x7e, 0xf3, 0x70, 0x3f, 0x3e, + 0x83, 0xc4, 0x77, 0x5e, 0xb5, 0x78, 0x52, 0xd6, 0x37, 0x06, + 0x5f, 0x79, 0x9d, 0xc9, 0xdd, 0x02, 0x9d, 0xf6, 0xb8, 0xec, + 0x6c, 0xed, 0xa8, 0x18, 0xfe, 0x22, 0xe3, 0xe2, 0x37, 0xbd, + 0x71, 0x1e, 0x81, 0xe7, 0x09, 0x96, 0x3a, 0x08, 0xfd, 0x8e, + 0x9d, 0xd4, 0xb0, 0x2e, 0x83, 0xaa, 0x17, 0x4c, 0xad, 0x58, + 0x22, 0xbe, 0xb9, 0xe7, 0xfb, 0x54, 0xd5, 0xc3, 0x7f, 0x26, + 0xe4, 0xdc, 0x13, 0x41, 0xa9, 0x1e, 0xde, 0xed, 0x64, 0x07, + 0x66, 0xe4, 0x42, 0xa4, 0x62, 0x88, 0xd8, 0x1a, 0x44, 0xdd, + 0xfc, 0x99, 0x70, 0x2c, 0xa3, 0xc1, 0xb8, 0xac, 0xfd, 0x4a, + 0x8e, 0x63, 0x5d, 0xaf, 0xd0, 0x87, 0x73, 0x97, 0xc0, 0x87, + 0xb2, 0x5a, 0x8e, 0x69, 0xb0, 0xe5, 0xf6, 0x2b, 0x84, 0xef, + 0xf4, 0xe2, 0xb0, 0xb9, 0xac, 0xa0, 0x49, 0x3a, 0x18, 0xee, + 0xe3, 0x5c, 0xba, 0x20, 0x5f, 0x1b, 0x10, 0x34, 0x77, 0xd1, + 0x3c, 0xd4, 0x6f, 0xba, 0x13, 0xd9, 0x27, 0x82, 0xeb, 0x85, + 0xb8, 0x29, 0xa3, 0x7e, 0xa5, 0xd4, 0x19, 0x18, 0xc0, 0xe4, + 0x02, 0xf7, 0x38, 0x0d, 0x45, 0xb9, 0x9c, 0x93, 0xbd, 0xba, + 0x46, 0x8f, 0x99, 0xe2, 0x1c, 0x88, 0xf6, 0xb9, 0x59, 0x0a, + 0xe1, 0x8b, 0x64, 0x98, 0xa4, 0x06, 0x10, 0xdb, 0x76, 0x8f, + 0xf2, 0x06, 0x31, 0x85, 0x19, 0x5f, 0x74, 0xfd, 0xf0, 0x9e, + 0x9f, 0x35, 0x2b, 0x2a, 0x96, 0xd7, 0x77, 0x47, 0x82, 0x1e, + 0x20, 0xcb, 0xab, 0x3b, 0x4a, 0x03, 0xfc, 0xf8, 0x87, 0x82, + 0x8b, 0x0d, 0x68, 0x98, 0xcf, 0x66, 0xa0, 0x61, 0x42, 0xd7, + 0xa1, 0x0f, 0x8a, 0x9e, 0xf9, 0x2f, 0xb3, 0x1b, 0xd8, 0x19, + 0x93, 0x30, 0x3f, 0x44, 0x05, 0x07, 0x6e, 0xb9, 0xe2, 0x3c, + 0xd8, 0xaa, 0x60, 0xa2, 0x59, 0x2d, 0x47, 0xd5, 0x58, 0x93, + 0x7b, 0xf4, 0x42, 0x96, 0x7a, 0x71, 0x80, 0x17, 0x36, 0xf2, + 0x9c, 0x30, 0x4b, 0xa2, 0xc8, 0xbd, 0x26, 0xe4, 0x8c, 0x7a, + 0x72, 0x6b, 0x34, 0xe8, 0x66, 0x01, 0x08, 0xea, 0xce, 0xfc, + 0xbc, 0x86, 0x81, 0x6a, 0xef, 0xa7, 0x35, 0xc3, 0x31, 0x5e, + 0xa5, 0x36, 0x73, 0x32, 0xe5, 0x60, 0x7e, 0x88, 0x0a, 0x0e, + 0xdc, 0xb1, 0x07, 0x78, 0x6f, 0x86, 0x71, 0xfd, 0xe4, 0xbf, + 0xdb, 0xff, 0xd3, 0x13, 0xa5, 0xe7, 0x30, 0xf8, 0x92, 0xb0, + 0x4d, 0xd0, 0xe3, 0xe8, 0x4c, 0xc3, 0x16, 0x6e, 0x4b, 0x7f, + 0xa2, 0x89, 0x0d, 0x64, 0xa5, 0x94, 0xd5, 0x90, 0x98, 0x33, + 0x5b, 0xf6, 0x95, 0xea, 0x77, 0x53, 0xca, 0x0f, 0x09, 0xcf, + 0xe6, 0x31, 0xa6, 0x07, 0x58, 0xb4, 0xe9, 0xac, 0x1b, 0x83, + 0xc7, 0xb6, 0x3c, 0x24, 0x8d, 0x20, 0x12, 0xd3, 0xba, 0x16, + 0xe9, 0xce, 0xbf, 0x49, 0x4e, 0x15, 0xa4, 0x40, 0x6f, 0xe8, + 0x39, 0x37, 0x74, 0x81, 0x62, 0xbc, 0x89, 0x6c, 0xe6, 0x64, + 0x09, 0xc0, 0xfc, 0xd3, 0x14, 0x1c, 0x7b, 0xa1, 0x0e, 0xf0, + 0x9a, 0x63, 0x05, 0x13, 0x98, 0x45, 0x2c, 0xdc, 0x96, 0xfe, + 0x87, 0xd1, 0x1a, 0xc8, 0x89, 0xeb, 0x61, 0x6f, 0xc8, 0xc0, + 0xcf, 0x2c, 0x10, 0xb4, 0x03, 0x68, 0x6d, 0x81, 0x6a, 0x12, + 0xa1, 0x99, 0x5d, 0x0b, 0x95, 0x67, 0xbe, 0xc5, 0x27, 0xeb, + 0x52, 0x20, 0xd6, 0x74, 0xfd, 0xfa, 0x3a, 0xa1, 0xa8, 0xee, + 0xe1, 0x89, 0xc2, 0x3f, 0xd0, 0xc8, 0x17, 0xcd, 0xf4, 0x42, + 0xd7, 0xca, 0x21, 0xfa, 0x98, 0x40, 0x7b, 0xdb, 0x17, 0x35, + 0x83, 0x84, 0x3c, 0x2c, 0x68, 0x86, 0x04, 0xab, 0x43, 0xa5, + 0x21, 0x85, 0xd3, 0xb9, 0x81, 0x34, 0xd4, 0xe5, 0x67, 0xd7, + 0x7e, 0xf3, 0x2c, 0x2f, 0x98, 0x4d, 0x6d, 0xa5, 0x0f, 0x35, + 0x6b, 0xcf, 0x74, 0xa7, 0x79, 0xc1, 0x4a, 0xb0, 0x2e, 0x9b, + 0x58, 0xfe, 0xfa, 0xfc, 0xf2, 0xb7, 0xf1, 0x51, 0x8a, 0x44, + 0xc0, 0xff, 0x7c, 0x9a, 0x7f, 0x0a, 0x4d, 0x55, 0x1d, 0xe1, + 0x8e, 0x1e, 0xf0, 0xdd, 0xe3, 0xba, 0x36, 0x9f, 0xc5, 0x06, + 0xbb, 0xc7, 0x03, 0x75, 0xe2, 0xab, 0xbf, 0x9e, 0x7a, 0x54, + 0x42, 0x62, 0x34, 0x6e, 0x32, 0xf8, 0xf7, 0xdb, 0x7c, 0x9b, + 0x48, 0x66, 0x20, 0xdf, 0x37, 0x1b, 0x3d, 0xf2, 0x89, 0x71, + 0x29, 0xed, 0x3e, 0x72, 0x97, 0x2f, 0x93, 0x1f, 0x01, 0xd1, + 0x47, 0x7e, 0x63, 0x53, 0x2e, 0x59, 0x2b, 0x84, 0x6d, 0x57, + 0x42, 0x37, 0xb3, 0x6a, 0xed, 0x0c, 0x60, 0x72, 0x01, 0x9a, + 0x1c, 0xe7, 0xc3, 0xbd, 0x4e, 0xa8, 0xbf, 0x5d, 0x57, 0xa4, + 0xd0, 0x09, 0x48, 0xb6, 0x71, 0x10, 0x15, 0x3c, 0x03, 0xbc, + 0x9b, 0xd6, 0x5e, 0x14, 0x70, 0x44, 0x81, 0x2b, 0x9b, 0x12, + 0x97, 0x1d, 0x4f, 0x5e, 0x8f, 0xb6, 0x95, 0x5c, 0x5b, 0x8b, + 0x19, 0xa7, 0x72, 0x4d, 0x2d, 0x3d, 0x7e, 0x0a, 0xa1, 0xf8, + 0xd8, 0xa8, 0x87, 0x01, 0x54, 0xe9, 0x6e, 0x76, 0x4e, 0x99, + 0x42, 0x87, 0x6d, 0xd3, 0x86, 0x7a, 0x33, 0x2d, 0x3f, 0x28, + 0xf7, 0x97, 0xbc, 0x73, 0x6b, 0x55, 0xed, 0xd9, 0x7c, 0xfd, + 0x99, 0xf5, 0x9d, 0x11, 0x1b, 0x92, 0xe9, 0x53, 0x3d, 0x94, + 0x62, 0xc3, 0xd7, 0xd1, 0x81, 0x73, 0x04, 0x21, 0x2d, 0x3f, + 0x98, 0x38, 0xfe, 0x1f, 0x13, 0x08, 0x37, 0x23, 0xdb, 0x4e, + 0x28, 0xf1, 0xe6, 0xe4, 0x0d, 0x60, 0xe1, 0x2d, 0x30, 0x5c, + 0x86, 0x72, 0xb4, 0x69, 0xce, 0xa0, 0x79, 0x4a, 0xf5, 0x08, + 0xd4, 0x1d, 0xae, 0xdf, 0xef, 0xb9, 0xdb, 0x79, 0x21, 0x0e, + 0x70, 0x65, 0x5e, 0xa1, 0xa7, 0x28, 0x02, 0x69, 0x53, 0x25, + 0xd5, 0x18, 0x4a, 0x45, 0x5e, 0x17, 0xb8, 0x6b, 0x92, 0xaa, + 0x23, 0xa3, 0xc6, 0xba, 0x20, 0x11, 0x5d, 0x61, 0x03, 0xd3, + 0x41, 0xac, 0x29, 0x48, 0x19, 0x74, 0xff, 0xbb, 0x79, 0x9d, + 0x11, 0xb3, 0xaf, 0x69, 0x32, 0x8d, 0xe4, 0x9a, 0x5a, 0x7a, + 0xfc, 0x14, 0x81, 0x33, 0x73, 0x93, 0xcd, 0x02, 0xa8, 0x11, + 0xbb, 0xe6, 0xd6, 0xaa, 0x19, 0x71, 0xf8, 0x39, 0xf1, 0x29, + 0xf9, 0x22, 0x36, 0xe7, 0x11, 0xa6, 0x47, 0x7f, 0xa6, 0x86, + 0xba, 0xb0, 0x40, 0x95, 0x0c, 0x63, 0x77, 0x41, 0x6b, 0x48, + 0xc1, 0x21, 0x59, 0x4d, 0x69, 0x34, 0x63, 0x25, 0xba, 0x5b, + 0xc5, 0x47, 0xcb, 0xda, 0xc1, 0x3c, 0x6d, 0x3d, 0x7e, 0xad, + 0x38, 0x16, 0xb0, 0x81, 0x5c, 0x56, 0x9f, 0x25, 0x47, 0xd0, + 0xcf, 0xb6, 0x68, 0xa2, 0xe4, 0xce, 0x3d, 0x05, 0x28, 0xc4, + 0x70, 0x8a, 0x09, 0xdb, 0xc0, 0x01, 0xd5, 0x7e, 0xe1, 0x49, + 0xc1, 0x0d, 0x12, 0xef, 0x74, 0x10, 0x39, 0xdf, 0xf9, 0x6b, + 0xa3, 0x5c, 0xc5, 0x97, 0x2e, 0x98, 0x45, 0x5c, 0xd8, 0x4e, + 0x35, 0xc0, 0xef, 0xcd, 0xa6, 0xb1, 0x98, 0x16, 0x75, 0x2b, + 0x0b, 0x6f, 0x40, 0xea, 0x1b, 0x79, 0x4e, 0x18, 0xc4, 0x51, + 0x64, 0xbf, 0x13, 0x72, 0x46, 0x3d, 0x39, 0xd4, 0x9c, 0x06, + 0x87, 0x88, 0xca, 0xd5, 0x1e, 0x34, 0xab, 0x4b, 0x75, 0x28, + 0x38, 0x6d, 0x14, 0x39, 0x2d, 0x4f, 0x14, 0x4c, 0x25, 0xd7, + 0xb0, 0xf6, 0x1d, 0x7e, 0x59, 0xc2, 0x68, 0xa6, 0x61, 0x2a, + 0xda, 0x89, 0x1e, 0x6a, 0xd6, 0x5d, 0xe8, 0x8d, 0xf2, 0x41, + 0x94, 0xa3, 0x5c, 0xf5, 0xb0, 0x3f, 0x28, 0xf9, 0xd7, 0x7b, + 0x5e, 0x0f, 0x9b, 0x6a, 0xdf, 0x70, 0xd2, 0xa6, 0x5b, 0xb0, + 0x53, 0x91, 0xc0, 0xfd, 0x2d, 0x8b, 0xd2, 0x28, 0x8f, 0xf3, + 0xac, 0x02, 0x35, 0x96, 0xca, 0x47, 0x4b, 0xbf, 0x76, 0x21, + 0x03, 0xb0, 0xc9, 0x82, 0xa5, 0xf5, 0x72, 0xeb, 0x7d, 0x4f, + 0xb7, 0xf9, 0xc6, 0x59, 0xdf, 0x3f, 0xdd, 0x5d, 0xad, 0x85, + 0xc3, 0x11, 0x30, 0x4f, 0x1f, 0xc7, 0x6f, 0xe3, 0x82, 0x84, + 0x8d, 0x2d, 0xce, 0x63, 0x9e, 0xeb, 0x99, 0x9d, 0xe7, 0x7d, + 0x97, 0x1f, 0xc7, 0x23, 0xee, 0x2b, 0x8b, 0x48, 0x4c, 0xf8, + 0xcc, 0x7b, 0xab, 0x75, 0xda, 0xc8, 0x65, 0xe6, 0xe5, 0x86, + 0x73, 0xf9, 0x15, 0x6d, 0xb5, 0xb8, 0x89, 0xde, 0x1a, 0x19, + 0xdb, 0x51, 0xff, 0x99, 0xc3, 0x88, 0xad, 0x8e, 0x5b, 0x6e, + 0x17, 0xfc, 0xec, 0x55, 0x15, 0x03, 0x6f, 0x95, 0x24, 0x8d, + 0xdf, 0x5f, 0xa7, 0x73, 0x66, 0xfa, 0x75, 0x3f, 0x3b, 0x84, + 0x94, 0x70, 0x6b, 0xb4, 0x09, 0xb2, 0x47, 0x67, 0x59, 0x6c, + 0xb5, 0x0f, 0x6f, 0x97, 0x32, 0xe2, 0x33, 0x72, 0x21, 0x52, + 0x31, 0x44, 0x6c, 0x0d, 0x22, 0x8f, 0xe0, 0x88, 0xc1, 0x56, + 0xf5, 0x24, 0xed, 0x3a, 0x9e, 0xbc, 0xdd, 0xaf, 0xe9, 0xb8, + 0xb6, 0xd5, 0x6c, 0x55, 0x30, 0x51, 0xcd, 0xf7, 0xc2, 0x8b, + 0x2c, 0xa8, 0xdc, 0x7a, 0x21, 0x4b, 0x3d, 0xd9, 0xa2, 0x41, + 0xa4, 0xe7, 0x34, 0x4c, 0x86, 0x33, 0x50, 0xd1, 0x21, 0x8a, + 0xb1, 0xe6, 0x45, 0x4f, 0xd4, 0x60, 0xa7, 0x57, 0xfd, 0xce, + 0x23, 0xc6, 0x22, 0x3a, 0x5c, 0xc5, 0x06, 0x1f, 0x83, 0x16, + 0x5a, 0x9e, 0x28, 0x98, 0x4a, 0x6d, 0xa3, 0x2f, 0x3a, 0xfc, + 0xb2, 0x47, 0xd0, 0x8f, 0xc2, 0x54, 0xbf, 0xa0, 0x2a, 0xf9, + 0xc4, 0x91, 0x65, 0x89, 0x66, 0x4e, 0xe4, 0x8c, 0x0a, 0x21, + 0x46, 0x3a, 0x78, 0xc8, 0xba, 0x8d, 0xe2, 0x11, 0x6e, 0xbe, + 0xa2, 0x90, 0xb5, 0x29, 0xed, 0x13, 0xf5, 0x70, 0x1e, 0x32, + 0xcf, 0xb2, 0xd9, 0x95, 0xfa, 0xce, 0xc9, 0x24, 0xbc, 0x9b, + 0xaa, 0x74, 0xac, 0x1c, 0x07, 0x95, 0xbd, 0xff, 0xf4, 0xa8, + 0x84, 0xc4, 0x68, 0xdc, 0x64, 0x33, 0x2d, 0x75, 0xf8, 0xf5, + 0x82, 0x34, 0x48, 0x3a, 0x13, 0x40, 0xe4, 0xfa, 0x62, 0x6f, + 0xc9, 0xb3, 0x92, 0x19, 0xb8, 0x25, 0x68, 0x13, 0xcc, 0x02, + 0x10, 0x17, 0x5f, 0x3b, 0xbb, 0xcf, 0xc1, 0xd4, 0x1d, 0x8d, + 0x6a, 0x45, 0x12, 0xf8, 0x08, 0x47, 0x7d, 0x76, 0x9e, 0xdd, + 0xb3, 0x8d, 0x9b, 0xaa, 0xee, 0xfd, 0x55, 0x7b, 0x58, 0xbd, + 0x56, 0x50, 0xc5, 0x1d, 0x0c, 0x77, 0x90, 0x2e, 0x5d, 0x10, + 0xce, 0xec, 0x08, 0x1a, 0x8f, 0x0e, 0xb0, 0xab, 0x11, 0x9b, + 0x36, 0xc5, 0x4d, 0xaf, 0x78, 0x48, 0xd9, 0x40, 0x24, 0x65, + 0xe1, 0x78, 0xfe, 0x32, 0x53, 0x1c, 0x5b, 0x16, 0xcb, 0xd5, + 0x4b, 0x65, 0xe6, 0x68, 0xd3, 0xf2, 0x36, 0xcb, 0x18, 0xc9, + 0x87, 0x9a, 0x61, 0xa4, 0x16, 0x54, 0x6e, 0x3d, 0xf1, 0xc4, + 0xff, 0x8d, 0x74, 0x02, 0x7d, 0x78, 0x46, 0xf2, 0x0a, 0xad, + 0xd8, 0x39, 0x92, 0x18, 0xa9, 0x9a, 0x0c, 0x17, 0xff, 0x4a, + 0x31, 0x80, 0x8a, 0x89, 0xa1, 0xd8, 0x02, 0xf1, 0xf7, 0xfe, + 0x4c, 0x1c, 0x7f, 0xee, 0x3a, 0x01, 0xdf, 0x3c, 0x23, 0x79, + 0x05, 0xb7, 0x6c, 0xfd, 0x49, 0x0c, 0xb5, 0x4d, 0x06, 0xea, + 0x79, 0x38, 0x85, 0xe9, 0x44, 0x29, 0xd8, 0x92, 0xf7, 0xf9, + 0x23, 0xe3, 0xe2, 0xc3, 0x90, 0x57, 0xdd, 0x1c, 0xa3, 0x95, + 0x22, 0xf5, 0x6c, 0x49, 0x9a, 0x9d, 0xf0, 0x90, 0x71, 0x80, + 0x48, 0xca, 0x54, 0x77, 0x91, 0xa5, 0x61, 0xfe, 0x68, 0x64, + 0xea, 0x87, 0x7a, 0x21, 0x8a, 0x65, 0xf1, 0x7d, 0x22, 0x56, + 0x92, 0x15, 0xa8, 0x7c, 0xcd, 0x91, 0x98, 0x6c, 0x07, 0x6e, + 0x3d, 0x9c, 0x37, 0x24, 0x05, 0xb6, 0xc3, 0x37, 0x7b, 0xd8, + 0x2b, 0x9c, 0xc2, 0x0e, 0x8b, 0x64, 0x33, 0x16, 0x32, 0xbb, + 0x88, 0x9b, 0x0d, 0x54, 0xe5, 0x33, 0xb2, 0x01, 0x25, 0x73, + 0x1c, 0x7b, 0xf4, 0x35, 0xdc, 0x90, 0x06, 0x65, 0x82, 0x9b, + 0x52, 0x90, 0x32, 0xe8, 0x3d, 0xb5, 0xf2, 0xf9, 0x22, 0xa5, + 0x9d, 0xd2, 0x53, 0xe2, 0x2c, 0x5a, 0x95, 0x56, 0xec, 0xa0, + 0x82, 0x5b, 0x1e, 0x12, 0xa7, 0x10, 0x09, 0x88, 0x95, 0x7a, + 0x83, 0x4a, 0x15, 0xee, 0x51, 0xbb, 0x13, 0xec, 0xd9, 0x7d, + 0x4f, 0xf2, 0xdf, 0xe5, 0xe9, 0xf4, 0xc5, 0x94, 0x2a, 0x1f, + 0xa2, 0xb5, 0x26, 0x1b, 0x71, 0xfa, 0x9e, 0x27, 0x7d, 0x09, + 0xec, 0x42, 0x06, 0xa3, 0x51, 0xc7, 0x89, 0x29, 0xe4, 0x15, + 0xfa, 0x9e, 0xad, 0x31, 0x4f, 0xb2, 0x97, 0x59, 0xfd, 0x82, + 0x9a, 0x9e, 0xfe, 0xe3, 0xb9, 0x3e, 0x36, 0x2a, 0x51, 0x91, + 0x15, 0xab, 0xd1, 0xd6, 0x64, 0x60, 0x86, 0x16, 0x08, 0x5a, + 0xe0, 0x34, 0xd7, 0xa1, 0x35, 0x09, 0xb1, 0xad, 0x69, 0xe3, + 0xf3, 0x66, 0xb6, 0x2f, 0xe9, 0x17, 0xee, 0xa6, 0x57, 0x1e, + 0x12, 0x5d, 0x0f, 0x62, 0x6a, 0x30, 0xb2, 0xca, 0x9f, 0x67, + 0xf0, 0x63, 0x11, 0x1d, 0x2e, 0x83, 0x03, 0xee, 0xa0, 0x0b, + 0x43, 0x39, 0x5a, 0xd5, 0x67, 0x50, 0xdd, 0x25, 0x9b, 0x04, + 0x6a, 0xef, 0x57, 0x8e, 0x96, 0xbd, 0x41, 0x1a, 0x24, 0x1d, + 0xe8, 0x20, 0x72, 0x7d, 0x31, 0xd6, 0x85, 0xb8, 0x49, 0xed, + 0x5c, 0xf3, 0xae, 0x8b, 0x63, 0x12, 0x90, 0xaf, 0xe2, 0x20, + 0x2a, 0x78, 0x06, 0xbb, 0xf5, 0x6f, 0xbc, 0x28, 0x0c, 0xca, + 0xc7, 0xf5, 0xa4, 0xe3, 0x64, 0x13, 0x7a, 0xa9, 0x27, 0x31, + 0x44, 0x89, 0xf9, 0x67, 0x7c, 0x8e, 0x46, 0xde, 0x3f, 0xf1, + 0xf3, 0x0e, 0x35, 0xf7, 0xa8, 0x87, 0xd1, 0xd5, 0xa2, 0xec, + 0x5e, 0xd8, 0xd4, 0xcb, 0x97, 0x8d, 0x3e, 0x9f, 0xad, 0x9b, + 0xaf, 0xe9, 0xec, 0x49, 0x95, 0xc8, 0x44, 0xac, 0xe7, 0x2a, + 0x93, 0xf8, 0x59, 0xe1, 0xf3, 0xd8, 0x0e, 0xdc, 0x7a, 0xfb, + 0x6e, 0x48, 0x25, 0xc3, 0x2f, 0xea, 0x5c, 0xd4, 0x49, 0x55, + 0xf0, 0xb0, 0x63, 0x5d, 0x10, 0xe9, 0xcf, 0xd1, 0x09, 0x7c, + 0x04, 0xc2, 0xdf, 0x3b, 0x4f, 0x8f, 0xb8, 0xa7, 0xac, 0x55, + 0x77, 0x9f, 0xcb, 0xdc, 0xbd, 0x83, 0x54, 0x31, 0x4b, 0xe1, + 0xca, 0xd1, 0xcc, 0x9c, 0x0b, 0xdb, 0x14, 0x42, 0x8c, 0x74, + 0x9f, 0xd5, 0xc6, 0x24, 0xe3, 0x9d, 0x07, 0x40, 0x54, 0xf0, + 0x0c, 0xb5, 0x29, 0xde, 0xbb, 0x50, 0x2e, 0x9c, 0x55, 0xe0, + 0x0c, 0x9f, 0xa9, 0x82, 0xe2, 0xc5, 0x20, 0x5f, 0x79, 0x15, + 0xce, 0x43, 0x1b, 0x84, 0x0c, 0x85, 0xa2, 0x4d, 0xd1, 0x52, + 0x0b, 0x2a, 0x37, 0xff, 0x99, 0x62, 0x9e, 0xa7, 0xd7, 0xb3, + 0xe6, 0xfb, 0xd4, 0x86, 0x3a, 0xb2, 0xdd, 0x81, 0x25, 0x58, + 0x17, 0xac, 0x2c, 0x7f, 0x8a, 0xb8, 0x73, 0x9c, 0x6a, 0x43, + 0x1d, 0x59, 0x8f, 0xa1, 0xf3, 0x2c, 0xea, 0x56, 0x16, 0xde, + 0x0d, 0x3a, 0xf8, 0x91, 0x02, 0xdb, 0xd2, 0x3f, 0x2f, 0xc0, + 0xb1, 0xfb, 0x4b, 0x59, 0x9c, 0x40, 0x50, 0x31, 0x6d, 0xf6, + 0xbc, 0x1e, 0xf5, 0xd4, 0x7d, 0xe0, 0x67, 0x8f, 0xb6, 0xa3, + 0xa6, 0xe1, 0x24, 0x33, 0x10, 0x8e, 0xfa, 0xec, 0xff, 0x79, + 0xa5, 0xd9, 0xf5, 0x97, 0x1f, 0x39, 0xaa, 0xf6, 0xf2, 0x70, + 0xc9, 0x11, 0x88, 0x52, 0x73, 0xe7, 0x2d, 0x31, 0x46, 0x05, + 0x07, 0x45, 0xe3, 0xae, 0x38, 0x22, 0xa1, 0xf4, 0xac, 0x09, + 0xaa, 0xef, 0xc6, 0x2f, 0xa6, 0x5b, 0xab, 0x2e, 0xcc, 0xa4, + 0x7b, 0x1b, 0xfb, 0x21, 0xcb, 0x59, 0x77, 0xca, 0x5d, 0x2b, + 0xcc, 0xb4, 0xfc, 0xa0, 0x5a, 0x19, 0xa1, 0x92, 0xe5, 0x4b, + 0x1d, 0x04, 0x9f, 0x47, 0xaf, 0x6a, 0x58, 0x17, 0xa0, 0x55, + 0xea, 0x26, 0xbe, 0x50, 0x15, 0x9d, 0x62, 0xa9, 0xd3, 0xa5, + 0x33, 0x27, 0x72, 0x46, 0x05, 0xf1, 0x23, 0x1d, 0xa7, 0xf7, + 0x67, 0xd0, 0x4f, 0x94, 0xad, 0xaf, 0x92, 0xdf, 0xaa, 0xee, + 0x82, 0xf0, 0x77, 0xf4, 0x99, 0xb0, 0x44, 0xbf, 0xb1, 0x0d, + 0x35, 0xa8, 0x69, 0x45, 0xfe, 0x4c, 0x0b, 0x7b, 0x26, 0x82, + 0xf1, 0xa3, 0x88, 0xbd, 0xa1, 0x1a, 0x6a, 0x93, 0xd2, 0x8a, + 0x3f, 0x98, 0x16, 0xf6, 0x4c, 0xc7, 0xeb, 0xd7, 0xbb, 0x5c, + 0xa5, 0x6f, 0x0d, 0xed, 0x8c, 0xc9, 0x9e, 0xad, 0x80, 0x44, + 0xb7, 0x47, 0x39, 0xd2, 0x9e, 0x90, 0x0a, 0x31, 0x1c, 0xc3, + 0x93, 0x46, 0x30, 0x91, 0xa4, 0xfe, 0xa9, 0x83, 0xb7, 0x2c, + 0x11, 0x5f, 0xbd, 0x92, 0x9c, 0x2a, 0x8b, 0x80, 0xde, 0x13, + 0x72, 0x6e, 0xe8, 0xc1, 0x1c, 0x11, 0xb1, 0x7a, 0x56, 0xe5, + 0x55, 0x96, 0x63, 0xf6, 0x53, 0xcc, 0xb4, 0x17, 0x66, 0x52, + 0x01, 0xf0, 0x3f, 0x64, 0xa6, 0x38, 0xb6, 0x2c, 0x55, 0x69, + 0x96, 0xca, 0x0f, 0xd0, 0x65, 0x27, 0xef, 0x91, 0x47, 0x0f, + 0x78, 0x8f, 0x90, 0x5d, 0x1b, 0xae, 0x83, 0x03, 0xbc, 0x82, + 0xe0, 0xdb, 0x1f, 0xc2, 0xf0, 0xd6, 0x7f, 0xad, 0x4c, 0xe2, + 0x9c, 0x4d, 0x2a, 0x51, 0xa5, 0xa4, 0xc9, 0x3b, 0x92, 0xef, + 0x3e, 0xb5, 0xe1, 0x46, 0xd5, 0x7f, 0x7b, 0x30, 0xbd, 0x4e, + 0x62, 0x87, 0x27, 0x10, 0x1a, 0x74, 0x33, 0xe1, 0x04, 0x75, + 0x67, 0x7e, 0x5e, 0x43, 0xa1, 0x35, 0x96, 0xb2, 0xfb, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0xa1, 0xf5, 0xc5, + 0xe7, 0xe8, 0x60, 0x3e, 0x0a, 0xb3, 0xad, 0x80, 0xbf, 0x6c, + 0x40, 0xd0, 0x5c, 0xfb, 0xaa, 0x03, 0x18, 0xfd, 0x91, 0xc7, + 0x07, 0x49, 0x40, 0xbe, 0xf2, 0x2a, 0x5f, 0x86, 0xed, 0xb2, + 0x39, 0xc7, 0xf7, 0xff, 0x3f, 0x05, 0xb1, 0x7c, 0x6c, 0x54, + 0xa2, 0xe1, 0x2a, 0x95, 0x56, 0x54, 0xef, 0x6d, 0xee, 0x8e, + 0xc7, 0x3c, 0x40, 0x55, 0x95, 0x76, 0x94, 0x06, 0x3b, 0x33, + 0xc3, 0x2e, 0x6c, 0x27, 0xfb, 0x60, 0x96, 0x87, 0x53, 0xb9, + 0x4c, 0x0b, 0xdb, 0xf4, 0xe4, 0xd6, 0x0f, 0x19, 0x86, 0x59, + 0x8d, 0xab, 0x7d, 0x67, 0x85, 0x12, 0x5e, 0xac, 0x55, 0x3a, + 0x56, 0x0e, 0xe8, 0x04, 0xfa, 0xf0, 0x8c, 0x27, 0x14, 0x99, + 0x73, 0x72, 0xe7, 0x30, 0x91, 0xf7, 0x18, 0x2e, 0xc2, 0xde, + 0x53, 0x43, 0x5d, 0x58, 0x20, 0xab, 0x06, 0xd0, 0xda, 0xc1, + 0xd4, 0x24, 0x81, 0xf1, 0xd9, 0x5a, 0x5f, 0xc6, 0xff, 0x15, + 0xf1, 0xf9, 0x0d, 0xfa, 0xed, 0x3e, 0x4d, 0x46, 0x1f, 0x56, + 0xe6, 0xed, 0x43, 0xcd, 0xa7, 0xb4, 0xdf, 0xd2, 0xa3, 0x09, + 0x2f, 0x56, 0xcb, 0x1d, 0x2b, 0x07, 0xb6, 0xdc, 0x2e, 0x3b, + 0x1b, 0xaa, 0x2a, 0x06, 0xde, 0xe9, 0x48, 0xd9, 0x7d, 0xbe, + 0x8d, 0xe6, 0x11, 0x2b, 0x49, 0xeb, 0x54, 0x3e, 0x87, 0xa9, + 0x4c, 0x36, 0xe2, 0x37, 0xff, 0x4e, 0xfa, 0x12, 0xc6, 0x98, + 0xaf, 0x10, 0x80, 0xb8, 0xbd, 0x1b, 0x91, 0xb7, 0xc7, 0x6f, + 0xe8, 0xe2, 0xd6, 0x6d, 0x55, 0x87, 0xae, 0xc1, 0xc7, 0xc6, + 0xde, 0x48, 0xbf, 0xee, 0xec, 0xeb, 0x85, 0xb5, 0x94, 0x5a, + 0x94, 0x8a, 0xbc, 0x2e, 0xb3, 0xd6, 0xe7, 0x97, 0x46, 0x85, + 0x4f, 0xb7, 0x40, 0x22, 0xba, 0xc2, 0xb1, 0x49, 0x93, 0xc4, + 0xef, 0x02, 0xae, 0xc2, 0xb6, 0x35, 0x2c, 0xea, 0x50, 0xcb, + 0x75, 0x13, 0x4b, 0xb5, 0x61, 0x73, 0x1e, 0x53, 0x24, 0x86, + 0x76, 0xca, 0x50, 0x70, 0x2f, 0xc1, 0x38, 0x46, 0xb9, 0xc5, + 0xa8, 0x62, 0x96, 0x01, 0x57, 0x61, 0x5b, 0xfb, 0x16, 0x75, + 0x28, 0x84, 0xdb, 0xe8, 0x4f, 0xf3, 0x9d, 0x20, 0xc3, 0xb3, + 0xb9, 0x36, 0xe1, 0xad, 0x4d, 0xde, 0x13, 0x07, 0x6f, 0xda, + 0xf6, 0x36, 0x35, 0x42, 0x55, 0xb2, 0xee, 0x57, 0xba, 0x56, + 0x5b, 0xab, 0x3b, 0x83, 0xb4, 0x32, 0x9b, 0x93, 0x3a, 0x77, + 0x3e, 0x7d, 0x9a, 0xf0, 0xc3, 0x97, 0x11, 0x1b, 0x15, 0x18, + 0xec, 0xcc, 0xd2, 0x05, 0x25, 0xcc, 0xaf, 0x5e, 0x11, 0x2e, + 0x1f, 0x8f, 0xae, 0x3c, 0x24, 0xba, 0x1e, 0xc4, 0x7f, 0x5d, + 0x07, 0x72, 0x16, 0xb9, 0xea, 0x7a, 0xca, 0x4c, 0xd1, 0x1a, + 0xc0, 0x66, 0x0d, 0x85, 0xde, 0xcf, 0xe2, 0x39, 0x0b, 0xbd, + 0x75, 0x3d, 0x65, 0x26, 0x89, 0x0d, 0x60, 0x33, 0xe7, 0xa3, + 0x75, 0xf2, 0x42, 0x1c, 0xe0, 0xca, 0xbc, 0x81, 0x8d, 0x50, + 0x04, 0xd2, 0xa6, 0x4a, 0x69, 0x30, 0x14, 0x9d, 0x8a, 0xdc, + 0x2f, 0xe6, 0xac, 0x35, 0x8e, 0x38, 0x69, 0x53, 0xcc, 0x58, + 0xc8, 0xa9, 0x20, 0x75, 0xec, 0xdd, 0x27, 0x0c, 0x62, 0xc9, + 0x32, 0xbe, 0xe8, 0x39, 0x23, 0xff, 0xfd, 0x6a, 0xdc, 0xec, + 0x9c, 0xf1, 0x84, 0xcd, 0xda, 0x65, 0xcf, 0xf4, 0x66, 0x5a, + 0x7e, 0x50, 0x2d, 0xed, 0xac, 0xa8, 0x1d, 0xda, 0x1f, 0xdf, + 0x4d, 0x78, 0x80, 0xaa, 0xe9, 0xec, 0xeb, 0x0c, 0x76, 0x66, + 0xab, 0x3d, 0xa0, 0x25, 0xeb, 0x77, 0xc9, 0xbc, 0xe8, 0x76, + 0x8d, 0xdf, 0xc6, 0x79, 0x8e, 0x93, 0xf8, 0xdf, 0x8c, 0x7f, + 0x7e, 0x21, 0x25, 0x1c, 0x6a, 0x2d, 0x93, 0xcd, 0x61, 0x69, + 0x87, 0x1b, 0xfb, 0x0c, 0xcd, 0xd3, 0x57, 0x69, 0x3c, 0x68, + 0x95, 0x96, 0xea, 0x50, 0x70, 0xda, 0x28, 0x72, 0xcd, 0xc7, + 0xd5, 0x1a, 0xd0, 0xf3, 0x5d, 0xcc, 0x83, 0xc2, 0x84, 0x6d, + 0x81, 0x1e, 0xd7, 0xff, 0xf0, 0x53, 0xb7, 0xd9, 0x07, 0x22, + 0xdc, 0xbf, 0x87, 0xe3, 0xa9, 0x52, 0x19, 0x26, 0x29, 0xe0, + 0xee, 0x61, 0x78, 0x6b, 0xde, 0xb7, 0x26, 0x71, 0x4e, 0xc7, + 0x15, 0xc9, 0xb3, 0x52, 0x85, 0xfc, 0xce, 0x14, 0x94, 0xb6, + 0xf9, 0xbb, 0x44, 0xb8, 0x7c, 0x79, 0xfd, 0xf0, 0x90, 0xad, + 0x78, 0x96, 0xe5, 0x3e, 0x02, 0x61, 0x8e, 0xfc, 0xc6, 0xa6, + 0x5c, 0xb2, 0x56, 0xcb, 0xda, 0xae, 0x84, 0x6e, 0x7d, 0x7e, + 0x79, 0xba, 0x99, 0xc9, 0x45, 0x22, 0x60, 0x9e, 0x3e, 0x4d, + 0xde, 0x05, 0xc7, 0xcb, 0xb8, 0x35, 0x97, 0x06, 0x30, 0x39, + 0xe1, 0x4d, 0x0e, 0x92, 0x80, 0xbf, 0x27, 0x54, 0xbe, 0xcf, + 0x04, 0x46, 0xfc, 0x53, 0xdd, 0xe0, 0x9d, 0xb0, 0x97, 0x67, + 0x1d, 0xae, 0x3c, 0xc6, 0x57, 0x9c, 0xaa, 0xcd, 0x9f, 0x41, + 0x4d, 0x4f, 0x7f, 0x90, 0xbd, 0x1f, 0x1b, 0x15, 0xc9, 0xa9, + 0xeb, 0xb4, 0xf5, 0xe5, 0x74, 0xee, 0x7c, 0xfa, 0xf7, 0x23, + 0x45, 0xed, 0x22, 0x36, 0x2a, 0x30, 0x1b, 0x5b, 0xc7, 0x68, + 0x90, 0x74, 0x26, 0x80, 0x0b, 0x37, 0xc4, 0xde, 0x51, 0xa5, + 0xe7, 0x32, 0xb3, 0x4a, 0xa0, 0x62, 0xda, 0x2f, 0xbb, 0x3c, + 0x29, 0x6b, 0xfa, 0x03, 0xce, 0xdd, 0xaf, 0x85, 0x8f, 0x01, + 0x42, 0xc9, 0x65, 0xb1, 0xc1, 0x68, 0x6b, 0x09, 0xce, 0x6d, + 0xfc, 0x25, 0x58, 0x5e, 0xf3, 0x9a, 0xcb, 0xa2, 0x57, 0x81, + 0x82, 0x63, 0x6f, 0x24, 0xbe, 0x77, 0x76, 0x94, 0xa3, 0xbb, + 0x4a, 0x2d, 0x71, 0xb4, 0xbe, 0x4f, 0x3d, 0x2a, 0x21, 0x31, + 0x1a, 0x37, 0x19, 0x7c, 0x9a, 0x8c, 0x3e, 0xac, 0xe3, 0x5b, + 0x80, 0xfa, 0xdc, 0x6c, 0xf4, 0x4e, 0x61, 0x07, 0xa4, 0x32, + 0xf8, 0x0b, 0x19, 0xbc, 0xfd, 0x69, 0x4f, 0x48, 0x05, 0xf9, + 0x0e, 0x80, 0xa8, 0x23, 0x18, 0xa9, 0x52, 0x7f, 0xb5, 0xa0, + 0x90, 0xcc, 0x40, 0x7d, 0x6e, 0x36, 0x7a, 0x27, 0xd1, 0xe2, + 0x52, 0x19, 0x7c, 0xe4, 0xed, 0x5e, 0x02, 0x23, 0x7e, 0xc8, + 0x8f, 0x70, 0xaf, 0x58, 0xaa, 0xd2, 0xef, 0x57, 0x1e, 0x63, + 0xca, 0x4e, 0x26, 0x10, 0x6e, 0x46, 0x75, 0x9c, 0x50, 0x21, + 0x0f, 0x0b, 0x1a, 0xc0, 0x01, 0x5a, 0x60, 0xb8, 0x96, 0xa9, + 0xc2, 0xe6, 0x3c, 0xa6, 0x48, 0xcf, 0xec, 0x57, 0xa0, 0xe0, + 0x5e, 0x41, 0x70, 0x8c, 0xcf, 0xe4, 0xab, 0xd2, 0x5f, 0x83, + 0xf2, 0x94, 0x29, 0x10, 0x6b, 0x3a, 0x9f, 0x7d, 0x1d, 0xb1, + 0x89, 0x6b, 0x32, 0x30, 0x43, 0x0b, 0x04, 0x2d, 0x70, 0x1a, + 0x8a, 0xb1, 0xfb, 0xe5, 0xb9, 0xb7, 0x49, 0x96, 0x1f, 0xbb, + 0x91, 0x23, 0x8b, 0xde, 0xdc, 0x18, 0xbf, 0x27, 0x31, 0xa2, + 0xf2, 0x08, 0x2f, 0x6c, 0x6a, 0x84, 0xaa, 0xa7, 0x1f, 0xae, + 0xb7, 0xac, 0xb6, 0x95, 0x76, 0xc5, 0xab, 0x64, 0x52, 0x12, + 0x13, 0x3e, 0x33, 0x6e, 0x5a, 0x8c, 0xd7, 0x32, 0x88, 0xd8, + 0xa8, 0xc0, 0x6c, 0xaf, 0xb4, 0xff, 0x50, 0xf3, 0x94, 0xda, + 0x85, 0x5e, 0x74, 0x3b, 0xa7, 0x8e, 0x63, 0xdd, 0x47, 0xa8, + 0x08, 0x8c, 0x3b, 0xa6, 0x79, 0x03, 0xf9, 0xa3, 0xed, 0xce, + 0x3a, 0x9f, 0x78, 0x4f, 0xae, 0xfb, 0x3f, 0xb7, 0x1c, 0x0b, + 0x58, 0xa1, 0x2e, 0x2b, 0xae, 0xf3, 0xc2, 0x68, 0x86, 0x5b, + 0x34, 0x51, 0xd6, 0x43, 0xd9, 0x9f, 0x72, 0xbe, 0x8c, 0x9e, + 0x88, 0xe8, 0xb3, 0x92, 0x18, 0x7c, 0x49, 0x58, 0x23, 0xa6, + 0xad, 0x71, 0x0e, 0x44, 0x7b, 0xbd, 0xcd, 0x05, 0x91, 0xa4, + 0x32, 0x4c, 0x52, 0x03, 0x4e, 0x03, 0xa2, 0x44, 0x65, 0x8b, + 0x0f, 0x1a, 0xb4, 0xc4, 0xdb, 0x14, 0x1c, 0xd7, 0x0a, 0xfd, + 0x60, 0x9f, 0xf7, 0xa4, 0x69, 0x14, 0xa6, 0x98, 0x56, 0x01, + 0xfb, 0x4b, 0x65, 0xc2, 0xc4, 0xbe, 0x0b, 0x5f, 0x7a, 0x0a, + 0x50, 0x4b, 0xe0, 0xd7, 0x12, 0x75, 0x43, 0x02, 0x69, 0xfc, + 0x01, 0x92, 0xc4, 0xbb, 0xd1, 0xd8, 0x0f, 0xc8, 0x12, 0x43, + 0x3b, 0x65, 0x28, 0x38, 0xf6, 0x81, 0x1c, 0x23, 0x35, 0x18, + 0x59, 0x65, 0xae, 0xd2, 0x78, 0xd0, 0xe9, 0xef, 0x17, 0xa0, + 0xe0, 0x77, 0x50, 0xe4, 0x0e, 0xe9, 0xb9, 0x3d, 0x2b, 0x93, + 0xcb, 0x4b, 0xd0, 0x7b, 0xc8, 0x66, 0x5a, 0xea, 0x33, 0x29, + 0x64, 0xd9, 0x0b, 0xf7, 0xb4, 0xf4, 0x3b, 0x28, 0xc1, 0x66, + 0xe6, 0xe5, 0x59, 0x04, 0x93, 0x22, 0x3b, 0xf1, 0xe0, 0x58, + 0x85, 0x41, 0xb3, 0x9b, 0x39, 0x94, 0xdf, 0xc6, 0xba, 0x9d, + 0x63, 0xcd, 0x30, 0xae, 0x9a, 0x52, 0xd5, 0x0a, 0x53, 0x4c, + 0x2b, 0xe1, 0x9c, 0xc4, 0xd3, 0x61, 0x62, 0x5f, 0xc5, 0x4b, + 0xee, 0xbc, 0xa9, 0xf0, 0xa4, 0x6f, 0x6e, 0x0c, 0xbe, 0xf2, + 0xf9, 0x51, 0x79, 0x04, 0x6b, 0xc0, 0x8d, 0xae, 0x39, 0x5f, + 0x46, 0x4f, 0x44, 0x74, 0xb8, 0x49, 0x0c, 0x3e, 0xc5, 0x2c, + 0x91, 0x3c, 0x7f, 0x19, 0xc8, 0x0e, 0xcc, 0x0b, 0x84, 0x8b, + 0xc4, 0xd3, 0x73, 0x34, 0x88, 0x79, 0x4c, 0x20, 0xdc, 0x8c, + 0xea, 0xfb, 0xa0, 0x42, 0x1e, 0x16, 0x34, 0x43, 0x02, 0xb4, + 0xc0, 0xb3, 0xb2, 0x9a, 0xd2, 0x68, 0xc6, 0x4a, 0xb7, 0xb6, + 0x49, 0x8e, 0x55, 0x77, 0x41, 0x78, 0xda, 0x7a, 0xfe, 0xba, + 0x0e, 0xe4, 0x2c, 0xb1, 0x17, 0xf4, 0x57, 0x98, 0x61, 0x34, + 0x43, 0xcc, 0x1a, 0xc9, 0xe7, 0x1d, 0x7c, 0xa9, 0x01, 0x8c, + 0x69, 0xfe, 0xf6, 0x60, 0xb9, 0x9c, 0xc4, 0xcd, 0x4e, 0x20, + 0x27, 0xe0, 0x51, 0x22, 0xd3, 0xa4, 0xe6, 0x0d, 0x5a, 0x62, + 0x8c, 0x0a, 0x0e, 0x8a, 0x05, 0x9f, 0x8c, 0xdd, 0xf1, 0x07, + 0x38, 0xd3, 0x2f, 0xb1, 0xb2, 0x14, 0x01, 0xd5, 0xc8, 0xf3, + 0x8b, 0x0c, 0x3e, 0x47, 0x23, 0x6f, 0xfe, 0x99, 0x98, 0x07, + 0xfb, 0x9a, 0x54, 0xa2, 0x89, 0x8b, 0x51, 0x76, 0x29, 0x09, + 0xe8, 0x1f, 0xf8, 0x37, 0x2d, 0x46, 0x8a, 0x19, 0x44, 0x6c, + 0x54, 0x60, 0x36, 0xb6, 0x72, 0x67, 0xff, 0xe3, 0x14, 0x62, + 0x38, 0x45, 0xe5, 0x8c, 0x60, 0xe1, 0x8b, 0x3f, 0x91, 0xc5, + 0x2c, 0xbf, 0x2b, 0x28, 0x83, 0xef, 0x06, 0xda, 0x48, 0x17, + 0xcf, 0x08, 0x67, 0x76, 0x04, 0x0d, 0xa4, 0x24, 0x26, 0x7c, + 0x66, 0xdc, 0xb4, 0xdb, 0x6d, 0x64, 0xd3, 0x73, 0x93, 0x43, + 0xd8, 0x9d, 0x8e, 0xfe, 0x8f, 0xcf, 0xb7, 0xa3, 0x80, 0xe9, + 0x18, 0xc6, 0xee, 0x82, 0xd6, 0x90, 0x41, 0x42, 0x51, 0xc1, + 0x52, 0x92, 0x1a, 0x26, 0x43, 0xf8, 0x28, 0x89, 0xf1, 0x45, + 0xb9, 0x73, 0xc3, 0xc6, 0xc8, 0x71, 0x16, 0x2d, 0xab, 0x2b, + 0x76, 0x50, 0x41, 0xcc, 0x0f, 0x09, 0xb2, 0x08, 0xe5, 0x44, + 0x16, 0xbe, 0xf4, 0x14, 0xa0, 0x96, 0x03, 0x6d, 0x24, 0xea, + 0x86, 0x04, 0xd2, 0x3b, 0x02, 0xe7, + }, + { + /* 15 */ + 0xfb, 0xd5, 0x0c, 0x7a, 0xc0, 0x80, 0x96, 0x19, 0x11, 0x87, + 0x93, 0x1b, 0xc9, 0xae, 0xb5, 0xfc, 0x08, 0xe0, 0x8c, 0xb2, + 0x17, 0x1a, 0xce, 0x7b, 0x32, 0xfc, 0xab, 0xf8, 0xfe, 0xf2, + 0x0a, 0xee, 0xcb, 0xd0, 0xa2, 0x50, 0xb2, 0xdc, 0x77, 0xc0, + 0xbd, 0xca, 0xef, 0x4e, 0x88, 0xc7, 0x89, 0xdd, 0x41, 0x10, + 0x1a, 0x5e, 0x63, 0x42, 0xd6, 0x69, 0xc4, 0x12, 0x3c, 0xd3, + 0x93, 0x13, 0xc0, 0x11, 0x38, 0xe5, 0x22, 0x98, 0x65, 0x46, + 0x2f, 0xa2, 0x9e, 0xb1, 0xd7, 0xad, 0xbf, 0x9b, 0x36, 0xcf, + 0xb3, 0x39, 0x6a, 0x11, 0x6f, 0x4a, 0xe7, 0x3c, 0x70, 0x97, + 0x29, 0x2f, 0xcb, 0xc0, 0xef, 0x6e, 0x1f, 0xb7, 0xc2, 0x06, + 0x7d, 0x56, 0x4d, 0x08, 0x35, 0x78, 0xfd, 0x96, 0x0f, 0xfe, + 0x68, 0x31, 0x88, 0xf8, 0x9b, 0xc3, 0xa4, 0x79, 0x73, 0xc7, + 0x94, 0xe7, 0x89, 0xa3, 0xc5, 0x09, 0xaa, 0x16, 0x32, 0x3d, + 0x8d, 0xe7, 0x07, 0xbb, 0x33, 0xb7, 0x41, 0x72, 0x26, 0x6b, + 0x9f, 0xb4, 0xdf, 0xfb, 0x7c, 0x99, 0x8e, 0x18, 0x37, 0x9b, + 0xf7, 0x20, 0xd4, 0x23, 0x72, 0x1d, 0x3c, 0x7e, 0x63, 0xc4, + 0x5c, 0x9f, 0xfb, 0x95, 0x6b, 0xf3, 0x49, 0x0f, 0x1c, 0x55, + 0x9b, 0x7b, 0x42, 0x30, 0x4b, 0xfa, 0x02, 0x38, 0x23, 0xcd, + 0x75, 0xe7, 0xd2, 0x6e, 0xed, 0x3f, 0x5a, 0x3e, 0xde, 0xdd, + 0xe3, 0xda, 0xec, 0x82, 0x42, 0xce, 0xaa, 0xcc, 0x15, 0x6a, + 0x16, 0x03, 0xc5, 0x75, 0x38, 0xa2, 0xd7, 0x23, 0x12, 0x3b, + 0xf8, 0x6a, 0x5b, 0xd3, 0x8d, 0x98, 0x89, 0x04, 0xcf, 0x0d, + 0xe1, 0xfa, 0xf7, 0xc5, 0x7b, 0xcd, 0x1b, 0x0b, 0x73, 0xe3, + 0x2b, 0xa5, 0xb7, 0x9c, 0xb1, 0x40, 0xf2, 0x55, 0x15, 0x04, + 0x5f, 0xbb, 0x28, 0xdf, 0xc5, 0x86, 0xf2, 0x56, 0x66, 0x94, + 0xec, 0x5a, 0xf3, 0x62, 0x38, 0x4d, 0xc1, 0x08, 0x0d, 0x2f, + 0xd0, 0x21, 0x6b, 0xd5, 0x62, 0x09, 0x1e, 0x88, 0xa8, 0xe8, + 0x60, 0xe9, 0x04, 0x70, 0x46, 0x59, 0xea, 0x0d, 0x67, 0xdc, + 0x19, 0x7e, 0xb4, 0x7c, 0x7f, 0x79, 0x05, 0x77, 0x76, 0x41, + 0x21, 0x67, 0x55, 0x66, 0xeb, 0x35, 0x0b, 0xe0, 0x83, 0xdb, + 0x1c, 0x51, 0x8a, 0xf0, 0x6c, 0x9a, 0x55, 0xbf, 0x19, 0xaf, + 0xa8, 0xd6, 0xb0, 0x18, 0xe7, 0x2e, 0x03, 0x59, 0x77, 0xdb, + 0x26, 0x4e, 0x10, 0x19, 0xc3, 0x82, 0x0b, 0x9d, 0x3c, 0x37, + 0x07, 0x24, 0xdf, 0xea, 0xce, 0x93, 0x0f, 0xb4, 0x19, 0xa1, + 0x53, 0x62, 0x12, 0xfe, 0x51, 0x43, 0x68, 0xa5, 0x30, 0xd9, + 0x7c, 0x2e, 0x0c, 0x90, 0xca, 0xeb, 0xfd, 0x17, 0xa9, 0xa7, + 0x2b, 0x82, 0x1f, 0x84, 0x81, 0x8b, 0x0f, 0x99, 0xe0, 0x12, + 0x88, 0x25, 0x57, 0xdb, 0xbc, 0xcd, 0x3d, 0x81, 0xda, 0xf1, + 0xb9, 0x29, 0xd8, 0xba, 0xe6, 0x5a, 0xed, 0xb1, 0xc8, 0x31, + 0x09, 0x7f, 0xc9, 0xc0, 0x34, 0xb3, 0x18, 0x8d, 0x3e, 0x17, + 0xd6, 0x5f, 0x43, 0x9b, 0xba, 0x6d, 0xe8, 0xa6, 0x65, 0x8d, + 0x48, 0xe6, 0x59, 0xe4, 0x02, 0x36, 0x18, 0xe3, 0x57, 0x15, + 0x39, 0x2e, 0x91, 0x8d, 0x56, 0xc7, 0x3e, 0xcb, 0xc1, 0xd5, + 0x1e, 0xf1, 0x8e, 0xb0, 0xfe, 0x57, 0x3b, 0x93, 0xc6, 0x75, + 0x60, 0xa6, 0x67, 0xe1, 0x64, 0xad, 0x4c, 0xbb, 0x54, 0x7f, + 0x77, 0x27, 0x7c, 0xe9, 0x87, 0x74, 0x2e, 0xa9, 0x30, 0x83, + 0xbc, 0xc2, 0x41, 0x14, 0xe4, 0x62, 0xce, 0x7c, 0xbd, 0xd6, + 0xdb, 0x11, 0x24, 0xff, 0x6e, 0x8d, 0xc6, 0x50, 0xdd, 0xcd, + 0xac, 0x8e, 0xa8, 0x17, 0x12, 0x1c, 0xaa, 0x34, 0x45, 0xef, + 0xd4, 0xb9, 0xc4, 0x3e, 0x87, 0x5f, 0x69, 0xf6, 0xe3, 0x61, + 0x28, 0x30, 0xa6, 0x3d, 0x3e, 0x98, 0x7e, 0x4d, 0x13, 0xaf, + 0xe2, 0xc1, 0xee, 0xba, 0x61, 0x03, 0xdf, 0x2b, 0xc7, 0x04, + 0xfb, 0x3c, 0x9f, 0x4b, 0xe6, 0x7f, 0x34, 0xf9, 0xd9, 0xeb, + 0x5a, 0x3a, 0xe9, 0x0f, 0xfa, 0x58, 0x34, 0xce, 0x20, 0x43, + 0x69, 0x3d, 0x7e, 0x18, 0xf7, 0x45, 0xc6, 0x91, 0x3d, 0x97, + 0x3f, 0xbe, 0x3a, 0x05, 0x8c, 0x9f, 0x48, 0x25, 0xba, 0x65, + 0xb9, 0xe1, 0xc5, 0x6e, 0x0d, 0xb7, 0xfb, 0x29, 0xaf, 0x54, + 0xd8, 0xe9, 0xeb, 0xef, 0x06, 0x5a, 0x85, 0x74, 0xa1, 0xaf, + 0x82, 0xfc, 0xb3, 0x57, 0x28, 0x9b, 0xbb, 0x38, 0x2b, 0x0d, + 0x35, 0xe2, 0x1e, 0xab, 0x32, 0x81, 0xa6, 0xc4, 0x24, 0x3f, + 0xa2, 0x86, 0xd0, 0x89, 0x60, 0x71, 0xf8, 0x5c, 0x66, 0x42, + 0xfa, 0xc0, 0x7b, 0x52, 0xb4, 0xc3, 0x6f, 0xdb, 0x16, 0xe8, + 0x23, 0x76, 0x9e, 0xef, 0x30, 0x05, 0xae, 0x2a, 0x72, 0x5c, + 0xe1, 0xd9, 0xac, 0x4d, 0x7c, 0x55, 0x41, 0x69, 0x3c, 0x21, + 0xd5, 0x7b, 0x90, 0xd1, 0x14, 0x18, 0x53, 0xff, 0x1f, 0x4c, + 0x3f, 0xc7, 0xe8, 0xb6, 0x71, 0x81, 0xa2, 0x26, 0x41, 0x31, + 0x9a, 0xec, 0xd1, 0xfd, 0x83, 0x52, 0x91, 0x03, 0x9b, 0x68, + 0x6b, 0x1c, 0xfc, 0x81, 0x99, 0x69, 0x84, 0xf8, 0x4a, 0x9c, + 0x72, 0x38, 0x50, 0x46, 0x07, 0x85, 0xc3, 0x3c, 0x60, 0x0a, + 0x9f, 0x54, 0xe4, 0xb8, 0x01, 0x71, 0x9b, 0x9a, 0xf8, 0xaa, + 0x82, 0xd2, 0x78, 0x42, 0xff, 0xa5, 0x4a, 0x23, 0x2a, 0x8d, + 0xf1, 0xc5, 0x08, 0xf9, 0x27, 0x67, 0xb6, 0xd7, 0xb0, 0x8b, + 0x6e, 0xa2, 0x76, 0x72, 0x6c, 0x48, 0x7a, 0xb8, 0x5d, 0x27, + 0xbd, 0x10, 0xdd, 0x84, 0x94, 0x01, 0xea, 0xca, 0x27, 0x5a, + 0x35, 0x26, 0xa0, 0xd8, 0xe2, 0x42, 0x2b, 0x37, 0x99, 0x06, + 0x31, 0x8e, 0x83, 0x3c, 0xc4, 0x3b, 0x1d, 0x16, 0x06, 0xe5, + 0xdc, 0xda, 0x55, 0x7a, 0x8a, 0xa9, 0xd3, 0x4f, 0x15, 0x6f, + 0x6d, 0x79, 0x1f, 0xab, 0x51, 0x1d, 0xea, 0xbb, 0x0c, 0x50, + 0x2f, 0xd1, 0x81, 0x05, 0xc0, 0x14, 0xfd, 0xa8, 0x0b, 0xb3, + 0x02, 0xe2, 0xf5, 0xf7, 0x33, 0x97, 0xc7, 0x67, 0xf0, 0x84, + 0xdc, 0x87, 0xec, 0xe4, 0xd8, 0x90, 0xf4, 0xb3, 0xba, 0x4e, + 0xb9, 0x20, 0x79, 0xcb, 0xeb, 0x02, 0xb4, 0x6d, 0xff, 0x02, + 0x2b, 0x32, 0x3b, 0xb9, 0x13, 0x28, 0xea, 0x72, 0x05, 0xeb, + 0x99, 0xae, 0xeb, 0xd6, 0xd7, 0xdd, 0xee, 0xb4, 0xc9, 0xef, + 0x75, 0xbc, 0x06, 0x28, 0xf6, 0x89, 0xa1, 0xe3, 0xc8, 0xf4, + 0x71, 0x1a, 0x1c, 0xa9, 0xcc, 0x99, 0xc7, 0x0b, 0x98, 0x6f, + 0x39, 0x95, 0xfa, 0x6a, 0x84, 0x68, 0x51, 0x28, 0x59, 0x6e, + 0xda, 0x60, 0xbf, 0x65, 0x96, 0x27, 0x44, 0x82, 0xa5, 0x8f, + 0xe5, 0x7e, 0x3e, 0xfb, 0x66, 0x44, 0xb2, 0x26, 0xb3, 0x01, + 0x43, 0x92, 0xa9, 0xdf, 0x4d, 0xa0, 0xa7, 0x4a, 0xf7, 0xef, + 0xab, 0x73, 0xdf, 0x16, 0x0d, 0xd2, 0x08, 0x60, 0x8b, 0x9e, + 0xfe, 0x06, 0x44, 0x7c, 0xac, 0x80, 0x52, 0xdd, 0xd8, 0x82, + 0x4a, 0x92, 0xa5, 0xb0, 0x83, 0xe5, 0x55, 0x0b, 0xba, 0xc5, + 0x16, 0x24, 0xa3, 0xc2, 0x40, 0x70, 0xd5, 0x95, 0xaf, 0xc8, + 0x5a, 0xbd, 0x75, 0xed, 0x62, 0x32, 0xbc, 0x99, 0x91, 0x5f, + 0xd3, 0x1f, 0x76, 0xa5, 0xa2, 0x94, 0x5c, 0x0f, 0x9b, 0x98, + 0xf2, 0x29, 0x70, 0x4f, 0x0c, 0x08, 0x31, 0x55, 0xb4, 0x85, + 0x15, 0xfc, 0x58, 0xd3, 0x2f, 0x7f, 0x53, 0x2b, 0xe2, 0x34, + 0x38, 0x91, 0x5b, 0xf1, 0x4d, 0x16, 0xf3, 0xde, 0x72, 0xe9, + 0x37, 0xd4, 0x9a, 0xc3, 0x63, 0xa9, 0xff, 0xaa, 0xfe, 0x5f, + 0x1d, 0xe3, 0x46, 0xae, 0x24, 0xf3, 0x5d, 0xd3, 0x10, 0x03, + 0xdb, 0xa7, 0x2e, 0x34, 0x5f, 0xf6, 0x64, 0x3b, 0x95, 0x33, + 0x3f, 0x27, 0x14, 0x1f, 0x1d, 0x8f, 0xe1, 0xcb, 0x08, 0xb1, + 0x9f, 0x66, 0xd8, 0x47, 0xa7, 0xa8, 0xd1, 0x23, 0x8b, 0xeb, + 0x0a, 0xd8, 0xaf, 0x7f, 0x62, 0xfd, 0x1c, 0x15, 0xdf, 0xc3, + 0xf1, 0xc6, 0x20, 0x2f, 0xe9, 0x34, 0xd3, 0x33, 0xf5, 0x45, + 0x8b, 0xf2, 0xe6, 0x4d, 0xeb, 0x0d, 0xd1, 0x85, 0x49, 0x12, + 0x97, 0x2c, 0xfd, 0x9d, 0x69, 0xee, 0x5f, 0x6a, 0x23, 0xab, + 0xe5, 0xc6, 0x7d, 0x59, 0x68, 0x0a, 0x53, 0x51, 0x73, 0x2d, + 0x97, 0xb9, 0x64, 0xf9, 0xe5, 0xde, 0x85, 0x60, 0x1a, 0xb8, + 0x0c, 0xa7, 0x1f, 0xea, 0xf1, 0x0d, 0xa3, 0x05, 0xa2, 0x7d, + 0x8a, 0x0c, 0xce, 0x44, 0x62, 0xdd, 0xe9, 0x81, 0x5c, 0xc8, + 0x4a, 0xd4, 0x45, 0xa6, 0xda, 0x2d, 0xa3, 0x4b, 0x8c, 0x2f, + 0xe0, 0x0a, 0xdc, 0xb3, 0xb9, 0x48, 0xa1, 0x02, 0x92, 0x7b, + 0x34, 0x99, 0x6a, 0xa4, 0xf9, 0x93, 0xe6, 0x22, 0x2a, 0x3a, + 0x18, 0xab, 0xaa, 0xc6, 0xcd, 0x83, 0x8d, 0xf6, 0x1f, 0x86, + 0xb1, 0xae, 0x3a, 0xfb, 0x65, 0x9a, 0x61, 0xf2, 0x74, 0x79, + 0x02, 0xaa, 0x20, 0x81, 0x39, 0x5b, 0xe6, 0xdf, 0xd9, 0xe5, + 0xc2, 0x8c, 0x69, 0x2a, 0x14, 0x73, 0x9d, 0xfe, 0xc4, 0x39, + 0x38, 0x2a, 0x7d, 0x45, 0x21, 0x4f, 0x40, 0x5e, 0x11, 0x68, + 0x39, 0xf9, 0xd2, 0x1f, 0xbe, 0xd4, 0x46, 0x95, 0x09, 0x4f, + 0xfa, 0xb2, 0xd0, 0x14, 0xa6, 0xa2, 0x95, 0x77, 0x7a, 0x08, + 0xac, 0xc8, 0xec, 0xa1, 0x4c, 0xa0, 0x2e, 0x0b, 0x14, 0x2a, + 0x21, 0xfd, 0x5b, 0xcb, 0x6e, 0x86, 0x2f, 0x8b, 0x95, 0x8a, + 0x7f, 0xea, 0x58, 0x26, 0x8c, 0x1b, 0x3d, 0x3a, 0x56, 0x47, + 0x54, 0xea, 0x09, 0x0e, 0x55, 0x1a, 0xc3, 0x96, 0x6a, 0xbd, + 0x62, 0x1f, 0xa2, 0xce, 0x8a, 0xc0, 0xb8, 0x0e, 0xd1, 0x9e, + 0xa1, 0xa9, 0x79, 0xd8, 0xd3, 0x9d, 0x1b, 0xd4, 0x49, 0xcc, + 0xdf, 0xa3, 0x3f, 0xae, 0x76, 0xe5, 0x4f, 0xea, 0xc0, 0x8f, + 0xce, 0x01, 0xc8, 0x99, 0x98, 0xb5, 0xcd, 0x98, 0xc7, 0xc4, + 0x2d, 0x36, 0xc2, 0x72, 0x49, 0x8b, 0x01, 0x0c, 0x29, 0x63, + 0x6f, 0x70, 0x51, 0x13, 0xc1, 0xf9, 0x4d, 0x76, 0x89, 0x9f, + 0xa0, 0x29, 0xa9, 0xe0, 0xac, 0x34, 0xd4, 0x0e, 0x34, 0x75, + 0xe8, 0x73, 0x98, 0x51, 0x86, 0x05, 0xb5, 0x33, 0xc8, 0x29, + 0x3e, 0x10, 0x39, 0x56, 0xf6, 0x59, 0x36, 0x16, 0xe6, 0x05, + 0x56, 0x89, 0xad, 0xfb, 0xa1, 0x80, 0x27, 0xaa, 0x2a, 0x08, + 0x8d, 0x94, 0x2d, 0x1d, 0x95, 0xe6, 0x7d, 0x2c, 0x1a, 0x67, + 0x10, 0xc0, 0xd5, 0xff, 0x3f, 0x0c, 0x6a, 0xd2, 0x30, 0x2b, + 0x86, 0x45, 0x1d, 0x64, 0x44, 0x59, 0x09, 0x6c, 0xa2, 0xfd, + 0x91, 0x76, 0xf3, 0x35, 0x80, 0xc8, 0xd7, 0x9a, 0x58, 0x62, + 0x23, 0x7b, 0x38, 0xe3, 0x37, 0x5c, 0xbf, 0x12, 0xf5, 0x7d, + 0xe5, 0x5c, 0x48, 0x70, 0xed, 0xd0, 0xd7, 0x3a, 0xd6, 0xa1, + 0x96, 0xf8, 0x59, 0xbf, 0x11, 0x1f, 0x2b, 0x20, 0xf5, 0xa6, + 0x36, 0xc1, 0xf3, 0xc5, 0xb8, 0x2c, 0x50, 0xa8, 0x84, 0x72, + 0x9d, 0x97, 0xf6, 0xba, 0xbb, 0xd2, 0x22, 0xda, 0x7e, 0x5c, + 0x85, 0xf3, 0xea, 0xd8, 0x2b, 0x13, 0x75, 0x65, 0xf2, 0x2d, + 0xfb, 0x13, 0x50, 0x6c, 0x71, 0x21, 0xf4, 0xfa, 0xad, 0x03, + 0xf9, 0x47, 0x19, 0xff, 0xa7, 0x92, 0xe2, 0xbc, 0xf8, 0xba, + 0xc1, 0x39, 0x13, 0xd4, 0xae, 0x5a, 0x8e, 0x9c, 0x03, 0x24, + 0xd3, 0x4a, 0xae, 0x75, 0xbb, 0x59, 0x7a, 0xc1, 0x77, 0x21, + 0xb1, 0x52, 0x73, 0xb7, 0x70, 0x09, 0x44, 0xf3, 0xca, 0x8c, + 0x5e, 0x87, 0xff, 0xa1, 0x6d, 0x99, 0xbd, 0xf5, 0x6c, 0x5d, + 0x72, 0x31, 0x67, 0x3e, 0xbf, 0x6b, 0x8c, 0xe9, 0x12, 0x9e, + 0x37, 0xa7, 0x63, 0x28, 0x8f, 0x87, 0x3a, 0xdd, 0x01, 0x55, + 0x10, 0xa1, 0xfd, 0xcc, 0x73, 0x8e, 0x8d, 0x93, 0x61, 0x46, + 0xd5, 0x15, 0x8b, 0xdc, 0x48, 0x89, 0x0a, 0x0c, 0xc8, 0x9e, + 0xee, 0x26, 0xfe, 0x82, 0x74, 0x5b, 0xd9, 0xa1, 0x33, 0x21, + 0x7d, 0x60, 0xdc, 0x29, 0x5a, 0x80, 0xd6, 0x8c, 0x0b, 0x74, + 0xf0, 0x3b, 0x4f, 0x96, 0xc6, 0x5c, 0x98, 0x3c, 0x94, 0x59, + 0xb7, 0x50, 0x01, 0xb6, 0xdd, 0xd5, 0x66, 0xc3, 0x16, 0x29, + 0x2f, 0xb2, 0x6c, 0x2c, 0x0f, 0x0a, 0xac, 0xd1, 0x99, 0x35, + 0x81, 0xc3, 0x4e, 0x97, 0x54, 0x10, 0x89, 0xe4, 0x6b, 0x44, + 0x7f, 0xeb, 0x1a, 0xf0, 0x03, 0x19, 0xa4, 0xbc, 0xaa, 0x86, + 0x3a, 0x7b, 0xbe, 0xb5, 0x50, 0x7d, 0x49, 0xcf, 0x27, 0xac, + 0xcc, 0xeb, 0x1b, 0xb4, 0x25, 0xc4, 0x70, 0x9a, 0xce, 0xbc, + 0x14, 0x8e, 0x83, 0x43, 0x79, 0x2b, 0x33, 0x4a, 0x76, 0x2d, + 0x98, 0x31, 0x1c, 0xc7, 0xc4, 0x64, 0xbb, 0xf1, 0xe1, 0xbe, + 0x65, 0x3e, 0xec, 0x89, 0x87, 0xeb, 0xb8, 0x1e, 0xf5, 0xf3, + 0xfa, 0xc9, 0xfc, 0xfd, 0x1b, 0x12, 0xff, 0x2e, 0x86, 0x79, + 0xbe, 0x04, 0xa6, 0x21, 0x25, 0x91, 0x3b, 0xc1, 0xf1, 0xd2, + 0xcb, 0x33, 0x94, 0xfb, 0xe4, 0x70, 0xa0, 0x8c, 0x0e, 0xc9, + 0x45, 0x78, 0xdd, 0x9b, 0x1c, 0x63, 0x03, 0x02, 0x9d, 0x84, + 0x2d, 0xb0, 0x94, 0x3f, 0x16, 0x44, 0x7b, 0x6f, 0x77, 0x5d, + 0xd1, 0xe0, 0x8e, 0xf4, 0x82, 0x02, 0x9c, 0x1e, 0xae, 0xc4, + 0x73, 0xde, 0x1a, 0x9d, 0xc5, 0x78, 0x4b, 0x76, 0x3a, 0x2c, + 0x0c, 0x09, 0x7b, 0x77, 0xaa, 0xf4, 0xd7, 0x91, 0x65, 0x9e, + 0x16, 0x4b, 0xbe, 0x33, 0xb1, 0xde, 0xea, 0x44, 0x90, 0x7a, + 0x7b, 0x71, 0x9e, 0x83, 0xf2, 0xb2, 0xa4, 0x6e, 0x24, 0xa5, + 0x05, 0x06, 0x64, 0x4f, 0x77, 0x13, 0x7f, 0x41, 0x3a, 0xcc, + 0x8d, 0xb1, 0xad, 0x92, 0x58, 0x90, 0xc9, 0x8e, 0xc3, 0x03, + 0xd2, 0x11, 0xf9, 0xa6, 0xab, 0xb1, 0x17, 0x32, 0xd8, 0xf7, + 0xaa, 0xbd, 0x32, 0x9d, 0x93, 0x6f, 0xa3, 0x30, 0x0d, 0x5c, + 0x06, 0xb2, 0xee, 0x75, 0xb7, 0x49, 0x2c, 0x48, 0x85, 0x47, + 0x80, 0xe0, 0x69, 0xe9, 0x9d, 0x53, 0xb4, 0xb9, 0xea, 0x19, + 0x92, 0x23, 0xef, 0x1b, 0xe8, 0xb0, 0x30, 0x24, 0x2f, 0x1f, + 0xed, 0x56, 0xda, 0x01, 0x57, 0x3d, 0x49, 0xf0, 0x96, 0xec, + 0x74, 0x58, 0x18, 0x12, 0xf6, 0xee, 0x97, 0x2b, 0x6d, 0xe1, + 0xca, 0xff, 0x64, 0x7a, 0xd9, 0x0d, 0x0e, 0xb5, 0x66, 0xad, + 0x82, 0xe4, 0x4c, 0xd6, 0xfd, 0xab, 0x7d, 0x35, 0x91, 0x07, + 0x3c, 0x51, 0x46, 0xc5, 0x8b, 0x7d, 0x55, 0xde, 0x9a, 0x77, + 0x6b, 0x53, 0x24, 0x8a, 0x9c, 0x8b, 0x06, 0x3d, 0x60, 0x40, + 0x4b, 0xed, 0xe9, 0xa2, 0xa8, 0xec, 0x85, 0x57, 0xbb, 0x7e, + 0x01, 0x1c, 0xf0, 0x87, 0xdb, 0x92, 0x69, 0x37, 0x97, 0xfe, + 0x2d, 0x1f, 0x6f, 0x8f, 0x90, 0x6d, 0xe8, 0xf2, 0x04, 0x97, + 0x40, 0xc1, 0x72, 0xb6, 0x0f, 0x7d, 0x71, 0x09, 0x47, 0xdb, + 0xd2, 0x54, 0xa0, 0x1e, 0x62, 0xfc, 0xef, 0x0b, 0x03, 0x93, + 0x6e, 0x6d, 0xcb, 0x3d, 0x45, 0xb5, 0x88, 0xc6, 0xbb, 0xd9, + 0xe6, 0xa3, 0x78, 0x50, 0x29, 0x47, 0x42, 0x6b, 0x82, 0xd7, + 0x35, 0x32, 0xe5, 0x80, 0xb5, 0x71, 0x0f, 0x85, 0xf0, 0xa0, + 0x52, 0x8e, 0x84, 0xd6, 0xc7, 0x6d, 0x6a, 0x64, 0x09, 0xc3, + 0x29, 0xfa, 0x09, 0xb8, 0x90, 0xe0, 0x19, 0x63, 0x6d, 0x74, + 0x6f, 0x81, 0xef, 0x33, 0xb2, 0xbd, 0xe3, 0x36, 0x5b, 0x6f, + 0xf9, 0xae, 0x07, 0x94, 0x47, 0x40, 0xad, 0xd0, 0x08, 0x7b, + 0xab, 0x0d, 0x5a, 0xd7, 0x9e, 0x01, 0xf4, 0x19, 0xfc, 0xbd, + 0xe8, 0x14, 0x75, 0x39, 0xe3, 0x94, 0xad, 0x57, 0x17, 0x57, + 0x4e, 0xb4, 0x6a, 0x4c, 0x83, 0x73, 0x07, 0x84, 0x56, 0x6e, + 0xf1, 0x0c, 0x62, 0xdf, 0x63, 0x2e, 0x4c, 0x1e, 0x4a, 0xcd, + 0xba, 0x28, 0xe1, 0x5b, 0x8f, 0x8b, 0x33, 0x80, 0x0b, 0xf5, + 0x25, 0x6a, 0xc3, 0x53, 0x6d, 0xf7, 0xb0, 0xc4, 0x46, 0xf6, + 0x70, 0x05, 0x6e, 0xb8, 0xbd, 0x24, 0x7d, 0x85, 0x7e, 0x9f, + 0xec, 0x09, 0x9e, 0x17, 0x43, 0xdd, 0x5f, 0x02, 0x53, 0xf1, + 0xf3, 0xa9, 0x20, 0x06, 0x75, 0x8d, 0x5c, 0x68, 0xbe, 0x2f, + 0xc8, 0x76, 0xe9, 0x66, 0x7e, 0x4e, 0x28, 0x3e, 0x13, 0x27, + 0x08, 0xed, 0x80, 0x41, 0xe4, 0xaf, 0x1e, 0xfa, 0xe2, 0x12, + 0x8e, 0x75, 0x67, 0xa8, 0x0e, 0xa8, 0xe9, 0x26, 0x88, 0xf0, + 0x7b, 0xc9, 0xc6, 0xbd, 0x45, 0xba, 0x5f, 0x56, 0xec, 0x43, + 0x9f, 0xaf, 0xd5, 0x77, 0xce, 0x35, 0xf0, 0xb4, 0x93, 0x63, + 0xdf, 0xcd, 0x34, 0x05, 0xc8, 0xc9, 0xe1, 0x0e, 0x78, 0xa2, + 0x8c, 0x49, 0xd5, 0xfa, 0xaa, 0x7f, 0xf7, 0xee, 0xd6, 0xa6, + 0x48, 0xd7, 0x55, 0x63, 0x87, 0xa0, 0xa7, 0x7b, 0xee, 0x43, + 0xb9, 0x57, 0x1d, 0x9c, 0xd3, 0x4d, 0xd1, 0x79, 0x8f, 0xac, + 0x0e, 0xd0, 0xe0, 0x01, 0xaf, 0x42, 0xf7, 0x58, 0x4a, 0xfe, + 0x0b, 0x22, 0xdc, 0xd6, 0xd1, 0x0b, 0xd6, 0x88, 0xfe, 0x15, + 0x34, 0x23, 0x06, 0x32, 0x8b, 0xbb, 0x97, 0xcf, 0x74, 0xf6, + 0x40, 0x0c, 0xea, 0xd9, 0xb8, 0xd0, 0xbf, 0x5e, 0x53, 0xec, + 0x11, 0xcc, 0xfc, 0x9c, 0x50, 0x7c, 0x82, 0x20, 0x34, 0xbc, + 0xc6, 0x84, 0x6f, 0xd2, 0x4b, 0x24, 0x78, 0x65, 0xe5, 0x26, + 0x43, 0x22, 0x52, 0x37, 0x12, 0xb3, 0xe3, 0x03, 0x32, 0xc6, + 0xda, 0xe8, 0xde, 0xc1, 0x1d, 0x66, 0xa7, 0xb9, 0xb2, 0x25, + 0x9a, 0x96, 0xb4, 0xd8, 0x8e, 0x0b, 0xe7, 0x69, 0x04, 0x30, + 0xa4, 0x4f, 0x7f, 0x03, 0x59, 0xf3, 0x4d, 0x4b, 0x5a, 0x6c, + 0x47, 0xe4, 0x92, 0xd5, 0x02, 0x18, 0x52, 0xc6, 0xde, 0xe0, + 0x3f, 0xb1, 0xb7, 0x8b, 0x21, 0x3e, 0xf3, 0x27, 0xfd, 0x0e, + 0x14, 0xf0, 0x71, 0xb0, 0x40, 0x0f, 0xd4, 0x67, 0x60, 0x56, + 0xcf, 0x8a, 0x3a, 0xc8, 0x88, 0xb2, 0x12, 0xd8, 0x87, 0x39, + 0xe1, 0xec, 0x79, 0xf5, 0x38, 0xc6, 0x06, 0x04, 0xf9, 0xcb, + 0x5a, 0xa3, 0xeb, 0x7e, 0x2c, 0x88, 0xf6, 0xde, 0xe7, 0x46, + 0x1d, 0x36, 0x13, 0xa3, 0x60, 0x48, 0x5e, 0x3e, 0x19, 0xac, + 0x77, 0x02, 0xae, 0x7a, 0xef, 0xa6, 0x91, 0x84, 0x04, 0xb9, + 0xae, 0x33, 0x6c, 0xc2, 0xb2, 0x54, 0x89, 0xf0, 0xa4, 0x94, + 0xca, 0xcc, 0x52, 0xd7, 0x69, 0x4e, 0x1e, 0xf7, 0x2a, 0x34, + 0xc2, 0x51, 0xe7, 0x48, 0x19, 0xb0, 0x47, 0x58, 0x7f, 0xca, + 0xfc, 0xa8, 0x63, 0xdb, 0x30, 0x53, 0xd2, 0x91, 0x32, 0xb7, + 0x26, 0xbc, 0xa5, 0x72, 0xd4, 0x22, 0xde, 0x94, 0x0d, 0x78, + 0xe0, 0xed, 0x52, 0x5e, 0x55, 0x43, 0x1d, 0xdc, 0xaf, 0xaa, + 0x7b, 0x5d, 0xbc, 0x69, 0x11, 0x6d, 0x3f, 0x2e, 0xa3, 0x98, + 0x75, 0x6c, 0xf4, 0xe8, 0xa8, 0xfe, 0xee, 0x4e, 0xf8, 0x11, + 0xcd, 0xe8, 0x5c, 0x91, 0x60, 0xc5, 0xbb, 0x47, 0x82, 0x28, + 0x93, 0x3f, 0x1f, 0x9c, 0x33, 0x22, 0x59, 0x13, 0xb8, 0xe1, + 0xc0, 0x49, 0xb5, 0x8e, 0xc7, 0x50, 0xed, 0x9e, 0xb2, 0x49, + 0x71, 0x5e, 0x7c, 0x5d, 0x81, 0xfd, 0xe8, 0x6a, 0x57, 0x2d, + 0x47, 0x4e, 0xc3, 0x30, 0x2e, 0xe2, 0xa5, 0xc6, 0xb9, 0xbb, + 0x8f, 0x36, 0x44, 0xb6, 0x76, 0x35, 0x83, 0x33, 0x2a, 0xde, + 0xda, 0xf2, 0x3e, 0x95, 0xa2, 0x3a, 0x17, 0xb5, 0x18, 0xa0, + 0x5e, 0x61, 0xc1, 0x0a, 0x96, 0x53, 0xa9, 0x42, 0x02, 0xbd, + 0x57, 0xf8, 0x36, 0x61, 0x59, 0x2a, 0xa5, 0x78, 0x52, 0x4a, + 0x2c, 0x96, 0xbf, 0x66, 0xa1, 0x7f, 0x17, 0x88, 0xe3, 0xf4, + 0xf6, 0xe2, 0xff, 0xc5, 0x27, 0xa7, 0x5d, 0x83, 0x0b, 0x12, + 0xb0, 0x61, 0x20, 0x38, 0x8b, 0xab, 0xb6, 0x64, 0x2d, 0xbf, + 0xdb, 0x97, 0xe2, 0x2a, 0xab, 0xe8, 0x22, 0x3c, 0x6e, 0xa3, + 0xd0, 0xbe, 0x80, 0xcf, 0x67, 0xf4, 0x3b, 0x60, 0x7f, 0xbd, + 0x5d, 0x52, 0x99, 0xee, 0x4c, 0x79, 0xae, 0xe2, 0x05, 0x3c, + 0x8d, 0x2c, 0x10, 0x73, 0x7e, 0xa1, 0xad, 0xd5, 0x42, 0x7c, + 0x25, 0x4e, 0x39, 0x1c, 0x28, 0x23, 0xe2, 0xa3, 0x80, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xad, 0x47, 0x0c, + 0xfa, 0xac, 0x9a, 0x10, 0x6a, 0xf0, 0x39, 0xef, 0x1e, 0x3f, + 0xd0, 0x62, 0xc7, 0x40, 0x68, 0xbb, 0x4f, 0xcb, 0xde, 0x67, + 0x96, 0x48, 0xf0, 0xca, 0x09, 0x4c, 0x86, 0x44, 0x05, 0x6c, + 0xb6, 0xde, 0x31, 0x9f, 0x0e, 0xeb, 0x8e, 0x80, 0x99, 0x63, + 0x10, 0xf6, 0x95, 0x1a, 0x3c, 0x95, 0x64, 0xc1, 0x8f, 0x4b, + 0x48, 0x7e, 0x87, 0xcf, 0x63, 0xd1, 0xc0, 0xe2, 0x33, 0xb8, + 0x87, 0x4c, 0x82, 0x62, 0xf7, 0x1b, 0x61, 0x39, 0xc5, 0xa4, + 0xe1, 0x06, 0xf5, 0xd0, 0xd6, 0x38, 0x67, 0x5e, 0x0a, 0x47, + 0xa0, 0xc0, 0xdd, 0xf4, 0xf8, 0x25, 0x3b, 0xf7, 0x4c, 0xf9, + 0x0e, 0x82, 0x99, 0xe7, 0xb0, 0xe3, 0x51, 0xdf, 0x45, 0x06, + 0x67, 0x22, 0x31, 0x8f, 0x95, 0xa1, 0x2e, 0x64, 0xab, 0xda, + 0x3d, 0x04, 0x56, 0x64, 0x76, 0xb1, 0x26, 0x50, 0x17, 0xe4, + 0x0a, 0x15, 0xf1, 0x9f, 0xf9, 0xed, 0x2f, 0xb7, 0xb5, 0x67, + 0x44, 0x77, 0xfc, 0xb8, 0xc9, 0x25, 0x17, 0x73, 0x56, 0x26, + 0xd2, 0x2f, 0x05, 0xc2, 0x50, 0x60, 0x8f, 0x7a, 0x7c, 0xf3, + 0xfc, 0x9a, 0x26, 0x9d, 0x07, 0x41, 0x06, 0x48, 0x65, 0x94, + 0x9f, 0xea, 0xb5, 0xb2, 0xf4, 0x41, 0xee, 0x42, 0xa1, 0xa4, + 0xe6, 0xad, 0xa9, 0xe2, 0x1e, 0xc9, 0x23, 0x83, 0xa4, 0xdf, + 0xcb, 0x6f, 0x4d, 0xda, 0xd4, 0xc8, 0x12, 0x45, 0x1b, 0xc7, + 0x84, 0x5f, 0x97, 0x5b, 0x2a, 0xd4, 0x2c, 0x06, 0x49, 0xea, + 0x70, 0x87, 0x6d, 0x46, 0x48, 0xec, 0x66, 0x6b, 0xaf, 0xca, + 0x71, 0x25, 0x61, 0x10, 0xba, 0x34, 0x02, 0x6e, 0x5a, 0x92, + 0x97, 0x4f, 0x59, 0xc5, 0xd9, 0x2f, 0x3e, 0xcf, 0xa1, 0x9f, + 0x74, 0x35, 0xca, 0xf7, 0xc2, 0x27, 0xc2, 0x2c, 0xde, 0x65, + 0x7e, 0x54, 0xd0, 0x8c, 0x18, 0xc8, 0x69, 0xa9, 0x19, 0xba, + 0x13, 0x5e, 0x86, 0x50, 0x72, 0xe5, 0x2c, 0x89, 0x08, 0x0e, + 0x52, 0x5a, 0xcc, 0x19, 0x9a, 0x5f, 0x46, 0x55, 0x61, 0x16, + 0x6f, 0xd3, 0x3f, 0x2a, 0x68, 0x46, 0x0c, 0x64, 0xd5, 0xb5, + 0xed, 0x5d, 0xe8, 0x2f, 0x36, 0x4d, 0xcb, 0xbe, 0xed, 0xb6, + 0x54, 0x6b, 0x58, 0x0c, 0x92, 0x17, 0xe0, 0xcd, 0xda, 0x8c, + 0x57, 0x5b, 0xa4, 0x6d, 0xd2, 0x9c, 0x3c, 0x2d, 0x54, 0x68, + 0x47, 0xa2, 0x0d, 0x90, 0x32, 0xa3, 0xf0, 0x11, 0x53, 0x82, + 0x79, 0xef, 0xe3, 0x3b, 0x59, 0xba, 0x4f, 0xc2, 0x86, 0x0e, + 0xcc, 0xa5, 0x2e, 0xae, 0x9c, 0xab, 0xd4, 0x98, 0xc5, 0xe6, + 0x0e, 0xcb, 0xac, 0xdc, 0x21, 0x18, 0xc4, 0x7d, 0x7a, 0xd1, + 0xeb, 0x8c, 0xa8, 0x71, 0x42, 0x92, 0x20, 0x62, 0x9c, 0x5f, + 0x9d, 0xda, 0x85, 0x69, 0x3d, 0x89, 0x94, 0x46, 0x54, 0xd9, + 0x21, 0x49, 0x10, 0x31, 0x4e, 0xce, 0xaf, 0x6d, 0xa3, 0xd5, + 0x81, 0x04, 0xe7, 0xf6, 0x68, 0xf1, 0xd4, 0x8b, 0x31, 0xe5, + 0x0f, 0x44, 0x54, 0x74, 0x30, 0x95, 0x35, 0x69, 0x18, 0xf4, + 0x43, 0xc3, 0xef, 0x32, 0x22, 0xcd, 0xe5, 0x36, 0x51, 0x9f, + 0xa9, 0x3b, 0xc9, 0xe8, 0x81, 0x9d, 0xc7, 0x3b, 0xa5, 0xae, + 0x50, 0xf5, 0xb5, 0x70, 0x56, 0x1a, 0x6a, 0x07, 0x65, 0x66, + 0x29, 0x8a, 0xd5, 0x27, 0x0f, 0x9a, 0x15, 0x1a, 0x61, 0xc9, + 0x92, 0x24, 0xed, 0x58, 0x78, 0xe9, 0xc8, 0x41, 0xdd, 0x96, + 0x90, 0xfc, 0xcd, 0x5d, 0xc6, 0x61, 0x43, 0x07, 0x66, 0xb3, + 0xbc, 0x8d, 0x73, 0xb0, 0x3c, 0x28, 0xf5, 0xc2, 0x21, 0xd4, + 0x41, 0x8a, 0xfb, 0x19, 0x93, 0x40, 0x1c, 0x93, 0x11, 0x4c, + 0xd3, 0x23, 0xf6, 0x51, 0x4f, 0xb9, 0x8a, 0xb7, 0xbe, 0xac, + 0x1b, 0x86, 0x68, 0xea, 0x13, 0xe6, 0xf3, 0xa2, 0xcf, 0x0a, + 0xa9, 0x66, 0x53, 0x52, 0x7c, 0x20, 0x72, 0xac, 0xcc, 0x84, + 0x37, 0x43, 0xf6, 0xa4, 0xab, 0x45, 0xde, 0x75, 0x2c, 0x13, + 0x46, 0xec, 0xff, 0x1d, 0xbf, 0xa9, 0xa0, 0xfa, 0x92, 0x5d, + 0x4e, 0x9b, 0x5b, 0x15, 0x36, 0xab, 0x4a, 0x4b, 0xe0, 0xf7, + 0x71, 0x15, 0xb4, 0x74, 0x11, 0x1e, 0x37, 0xb0, 0x68, 0x5f, + 0x40, 0x86, 0xd2, 0x7a, 0xfc, 0x30, 0xb8, 0xfd, 0x35, 0xe9, + 0xd6, 0x25, 0x92, 0x1e, 0x38, 0xaa, 0xf5, 0xf6, 0x84, 0x60, + 0x96, 0x37, 0xa6, 0x56, 0x07, 0x68, 0x70, 0xe1, 0xb6, 0x21, + 0x9a, 0x2c, 0x25, 0x7f, 0xe4, 0x11, 0x6e, 0x6b, 0x22, 0x3e, + 0x56, 0x40, 0x29, 0x8f, 0x6c, 0x41, 0x25, 0x49, 0xb3, 0x58, + 0xa0, 0x93, 0xcb, 0xe4, 0x4d, 0x80, 0xd0, 0xb5, 0x9e, 0x55, + 0x7f, 0xce, 0xef, 0x90, 0x23, 0x57, 0x12, 0x98, 0xcf, 0x88, + 0xb0, 0x1d, 0xb9, 0x5b, 0xc1, 0x3f, 0x5c, 0x65, 0x0a, 0x56, + 0x5e, 0x0e, 0x7a, 0x92, 0x9c, 0xd9, 0x90, 0x1b, 0xcc, 0xd6, + 0x9d, 0x57, 0xe2, 0x4a, 0xc2, 0x20, 0xb7, 0x68, 0x04, 0xdc, + 0xb4, 0xe7, 0x23, 0x22, 0xa6, 0xc7, 0xf2, 0x1d, 0x05, 0x76, + 0xb2, 0xb7, 0x9e, 0x47, 0xcf, 0x1c, 0x5b, 0x89, 0x37, 0x51, + 0x3b, 0x39, 0x36, 0x24, 0x3d, 0x5c, 0xcf, 0xf2, 0xbf, 0x08, + 0x8f, 0x42, 0x4a, 0xe1, 0x6b, 0xce, 0xc0, 0xac, 0x5d, 0xd7, + 0x74, 0x53, 0xd3, 0xa7, 0x24, 0x73, 0xcd, 0x72, 0x01, 0x1b, + 0x09, 0xfc, 0x7c, 0x35, 0xcc, 0x88, 0xa7, 0x4c, 0xa5, 0x02, + 0x86, 0xe7, 0x91, 0x7d, 0x9a, 0x83, 0x24, 0x76, 0x33, 0xd4, + 0xb6, 0x65, 0xd9, 0xf3, 0xd1, 0x08, 0x5d, 0x1a, 0x01, 0x37, + 0x2d, 0x49, 0x31, 0x19, 0x5e, 0xad, 0xa9, 0xce, 0x88, 0xee, + 0x3b, 0xb3, 0x51, 0x4a, 0x2e, 0xe6, 0xac, 0x4c, 0x4e, 0xa4, + 0x03, 0xff, 0x30, 0x20, 0xc4, 0x97, 0x95, 0x51, 0x54, 0x76, + 0xa3, 0xca, 0xbc, 0x3f, 0x80, 0x18, 0x17, 0x71, 0xb3, 0x63, + 0xbd, 0xbc, 0xa6, 0x1b, 0x22, 0x5b, 0x3b, 0xfb, 0xa0, 0xf8, + 0x27, 0x52, 0xe0, 0x9e, 0x18, 0x10, 0x62, 0xaa, 0xab, 0xc9, + 0x2a, 0x3b, 0xb0, 0x65, 0x5e, 0xfe, 0x58, 0xef, 0xbd, 0xcc, + 0x81, 0xfe, 0x2e, 0xd3, 0x05, 0x2b, 0x2f, 0x07, 0x3d, 0x49, + 0x4e, 0x8d, 0x21, 0x1a, 0x85, 0x0a, 0x87, 0xfa, 0xd7, 0x18, + 0x5f, 0x88, 0xc4, 0x79, 0x11, 0xc1, 0xb8, 0x53, 0xcf, 0xa0, + 0xe4, 0x09, 0x58, 0xd1, 0x10, 0x1c, 0xa4, 0xb4, 0x5b, 0x32, + 0xf7, 0xbe, 0x8c, 0xaa, 0x94, 0x6b, 0x8a, 0x8f, 0x77, 0x5a, + 0x85, 0x96, 0xdb, 0x5e, 0x03, 0x14, 0x7b, 0xa5, 0xb1, 0x90, + 0x2d, 0x8a, 0x4f, 0xe1, 0x7a, 0xed, 0x7e, 0xbf, 0x74, 0x0a, + 0xdb, 0xfd, 0x90, 0x4a, 0xb7, 0xca, 0xde, 0xbf, 0xcf, 0x29, + 0xad, 0x77, 0x26, 0xdd, 0x57, 0x71, 0xe3, 0x1e, 0xa7, 0x16, + 0x08, 0xd8, 0xae, 0xb6, 0x8b, 0xda, 0x67, 0xfb, 0x78, 0x5a, + 0xa8, 0xd0, 0x8e, 0x87, 0x1a, 0xe3, 0x64, 0x85, 0x8c, 0x88, + 0xdd, 0x9a, 0x4e, 0x74, 0x14, 0x1b, 0x8d, 0x99, 0x3d, 0xdf, + 0xba, 0x70, 0xaf, 0x61, 0x5e, 0xa7, 0xd8, 0x58, 0x1e, 0x14, + 0x9b, 0x61, 0xf1, 0x6a, 0xc1, 0x45, 0x9c, 0xed, 0xa8, 0x20, + 0xa3, 0x3a, 0xb1, 0xb6, 0x41, 0x7e, 0xb8, 0xca, 0x14, 0xac, + 0xbc, 0x1c, 0xf4, 0xe7, 0xfb, 0x71, 0x2b, 0xc2, 0x2a, 0x75, + 0xe5, 0x07, 0xcb, 0x0d, 0x80, 0x4b, 0x35, 0xbf, 0x31, 0xee, + 0x51, 0x67, 0x9e, 0xb3, 0x25, 0xf0, 0x15, 0xa7, 0x99, 0x83, + 0x04, 0x9d, 0xf2, 0xd2, 0x5b, 0x8a, 0x58, 0xa4, 0xbd, 0x91, + 0x83, 0x37, 0xe7, 0xba, 0x9c, 0xf5, 0xb6, 0x2a, 0x6c, 0x95, + 0x94, 0x96, 0x03, 0x2d, 0x1a, 0xdb, 0x74, 0xd8, 0x4c, 0xc9, + 0x43, 0xe3, 0xbb, 0xf8, 0x64, 0xf5, 0x1f, 0x08, 0xfd, 0x2b, + 0x98, 0xfb, 0x40, 0x64, 0x8a, 0x4d, 0x2c, 0x31, 0xf0, 0xdc, + 0x1c, 0x90, 0xfa, 0x2e, 0xbe, 0x09, 0xd7, 0x43, 0xb3, 0x1c, + 0x61, 0xff, 0x81, 0x91, 0xf2, 0x73, 0x65, 0xf9, 0x36, 0x6b, + 0x92, 0x5b, 0x43, 0x28, 0x39, 0x93, 0x16, 0xa5, 0x04, 0x07, + 0x29, 0x2d, 0x66, 0xed, 0x4d, 0xce, 0x23, 0xcb, 0xd0, 0x17, + 0x26, 0x0f, 0x25, 0x87, 0x5d, 0x14, 0x91, 0xcc, 0xa6, 0xa4, + 0xf8, 0x40, 0xe4, 0x9b, 0x4b, 0xc8, 0xb5, 0x21, 0x01, 0xbf, + 0xca, 0x7c, 0x1b, 0xd1, 0xcd, 0x15, 0xb3, 0x3c, 0x29, 0x25, + 0x28, 0xe6, 0xf9, 0x3f, 0x4b, 0x72, 0x70, 0x54, 0xfa, 0x8a, + 0x42, 0x9e, 0x80, 0xbc, 0x22, 0xd0, 0x9b, 0xdf, 0x93, 0x2e, + 0x24, 0x38, 0x97, 0x68, 0x8a, 0x1d, 0x6b, 0xb1, 0x4b, 0x7c, + 0xcd, 0xbe, 0x4c, 0x9c, 0x20, 0x32, 0x45, 0xc7, 0x16, 0xf9, + 0x78, 0x6e, 0x0e, 0x48, 0x7d, 0x17, 0x5f, 0xe5, 0x6f, 0xbe, + 0x86, 0xf5, 0xb7, 0xda, 0x13, 0x8f, 0xca, 0xd9, 0x90, 0x0f, + 0xb2, 0x0b, 0x04, 0x6c, 0x4f, 0xb8, 0xf3, 0x78, 0xeb, 0xb2, + 0xad, 0xa0, 0x02, 0xaf, 0x79, 0x69, 0xcc, 0x45, 0x2c, 0x52, + 0x0b, 0xc4, 0x5f, 0xf8, 0xb9, 0x6f, 0x75, 0x22, 0x48, 0x3d, + 0xdc, 0xd9, 0x4f, 0xa0, 0x79, 0x59, 0x42, 0x34, 0xc9, 0x14, + 0xcd, 0x37, 0x6d, 0x30, 0xbe, 0xd3, 0x4b, 0xf2, 0x22, 0x41, + 0xb3, 0xa6, 0xb6, 0x55, 0xdc, 0xcf, 0x5e, 0xd5, 0xe9, 0xd7, + 0xfe, 0x17, 0xb0, 0x4c, 0xdb, 0x36, 0x7a, 0x74, 0xf4, 0x61, + 0x15, 0xdb, 0x93, 0xe2, 0x84, 0xe7, 0x40, 0xc4, 0xfb, 0xbe, + 0xf9, 0x77, 0xc9, 0xd2, 0xfe, 0xb9, 0xba, 0xa4, 0xf1, 0x1f, + 0x98, 0xf2, 0x9f, 0x07, 0x0a, 0x78, 0xd9, 0x58, 0x20, 0xe6, + 0x0d, 0x8c, 0x3a, 0x6c, 0x26, 0x85, 0xc0, 0x90, 0xbc, 0x7c, + 0x32, 0x9b, 0xee, 0x04, 0x9f, 0xf4, 0xb1, 0x01, 0x49, 0xdc, + 0x1a, 0xad, 0x35, 0x52, 0x9d, 0xa8, 0x73, 0x11, 0x15, 0x1d, + 0x0c, 0xb4, 0x07, 0x54, 0x95, 0x13, 0x44, 0x78, 0xdc, 0x85, + 0x63, 0xbf, 0xc3, 0x5d, 0xce, 0x2b, 0x76, 0xc0, 0x46, 0x44, + 0x8f, 0x4d, 0x27, 0x3a, 0x0a, 0xec, 0xa7, 0xad, 0xff, 0x8e, + 0x5d, 0x38, 0xb6, 0xd1, 0x45, 0x60, 0x5c, 0x07, 0x89, 0x4f, + 0xb1, 0xb5, 0xdd, 0x6c, 0x88, 0xaf, 0xec, 0x6a, 0xc5, 0x66, + 0xda, 0xcf, 0x89, 0x70, 0x47, 0x7a, 0x41, 0x01, 0x4e, 0x0f, + 0x57, 0x62, 0xd8, 0x6f, 0x0d, 0xaf, 0xdb, 0xd3, 0x79, 0xf7, + 0x9c, 0xe8, 0x28, 0x36, 0xd9, 0xf1, 0x7a, 0x7d, 0xb7, 0xe0, + 0x9d, 0xc2, 0xe9, 0xee, 0xf4, 0x10, 0x9b, 0x53, 0x1b, 0x81, + 0x98, 0x83, 0x5c, 0x16, 0x28, 0x54, 0x42, 0x39, 0xf8, 0xf1, + 0xdf, 0x30, 0x6e, 0xf5, 0x2d, 0x40, 0x6b, 0x46, 0xe4, 0x3a, + 0x78, 0xfc, 0xc6, 0x4b, 0x50, 0x0f, 0x31, 0x7e, 0x96, 0xe4, + 0xe0, 0xa8, 0x37, 0xd7, 0x84, 0xff, 0xc3, 0xbb, 0x44, 0x63, + 0x6d, 0x86, 0xa5, 0x38, 0xc2, 0x3d, 0xc1, 0xe1, 0x27, 0xe6, + 0xca, 0x31, 0x6c, 0xd6, 0xe7, 0xb6, + }, }; static const uint8_t kuz_table_inv[16][256 * 16] = { - { /* 0 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x01, 0x94, 0x84, 0xdd, 0x10, 0xbd, 0x27, 0x5d, 0xb8, 0x7a, 0x48, 0x6c, - 0x72, 0x76, 0xa2, 0x6e, - 0x02, 0xeb, 0xcb, 0x79, 0x20, 0xb9, 0x4e, 0xba, 0xb3, 0xf4, 0x90, 0xd8, - 0xe4, 0xec, 0x87, 0xdc, - 0x03, 0x7f, 0x4f, 0xa4, 0x30, 0x04, 0x69, 0xe7, 0x0b, 0x8e, 0xd8, 0xb4, - 0x96, 0x9a, 0x25, 0xb2, - 0x04, 0x15, 0x55, 0xf2, 0x40, 0xb1, 0x9c, 0xb7, 0xa5, 0x2b, 0xe3, 0x73, - 0x0b, 0x1b, 0xcd, 0x7b, - 0x05, 0x81, 0xd1, 0x2f, 0x50, 0x0c, 0xbb, 0xea, 0x1d, 0x51, 0xab, 0x1f, - 0x79, 0x6d, 0x6f, 0x15, - 0x06, 0xfe, 0x9e, 0x8b, 0x60, 0x08, 0xd2, 0x0d, 0x16, 0xdf, 0x73, 0xab, - 0xef, 0xf7, 0x4a, 0xa7, - 0x07, 0x6a, 0x1a, 0x56, 0x70, 0xb5, 0xf5, 0x50, 0xae, 0xa5, 0x3b, 0xc7, - 0x9d, 0x81, 0xe8, 0xc9, - 0x08, 0x2a, 0xaa, 0x27, 0x80, 0xa1, 0xfb, 0xad, 0x89, 0x56, 0x05, 0xe6, - 0x16, 0x36, 0x59, 0xf6, - 0x09, 0xbe, 0x2e, 0xfa, 0x90, 0x1c, 0xdc, 0xf0, 0x31, 0x2c, 0x4d, 0x8a, - 0x64, 0x40, 0xfb, 0x98, - 0x0a, 0xc1, 0x61, 0x5e, 0xa0, 0x18, 0xb5, 0x17, 0x3a, 0xa2, 0x95, 0x3e, - 0xf2, 0xda, 0xde, 0x2a, - 0x0b, 0x55, 0xe5, 0x83, 0xb0, 0xa5, 0x92, 0x4a, 0x82, 0xd8, 0xdd, 0x52, - 0x80, 0xac, 0x7c, 0x44, - 0x0c, 0x3f, 0xff, 0xd5, 0xc0, 0x10, 0x67, 0x1a, 0x2c, 0x7d, 0xe6, 0x95, - 0x1d, 0x2d, 0x94, 0x8d, - 0x0d, 0xab, 0x7b, 0x08, 0xd0, 0xad, 0x40, 0x47, 0x94, 0x07, 0xae, 0xf9, - 0x6f, 0x5b, 0x36, 0xe3, - 0x0e, 0xd4, 0x34, 0xac, 0xe0, 0xa9, 0x29, 0xa0, 0x9f, 0x89, 0x76, 0x4d, - 0xf9, 0xc1, 0x13, 0x51, - 0x0f, 0x40, 0xb0, 0x71, 0xf0, 0x14, 0x0e, 0xfd, 0x27, 0xf3, 0x3e, 0x21, - 0x8b, 0xb7, 0xb1, 0x3f, - 0x10, 0x54, 0x97, 0x4e, 0xc3, 0x81, 0x35, 0x99, 0xd1, 0xac, 0x0a, 0x0f, - 0x2c, 0x6c, 0xb2, 0x2f, - 0x11, 0xc0, 0x13, 0x93, 0xd3, 0x3c, 0x12, 0xc4, 0x69, 0xd6, 0x42, 0x63, - 0x5e, 0x1a, 0x10, 0x41, - 0x12, 0xbf, 0x5c, 0x37, 0xe3, 0x38, 0x7b, 0x23, 0x62, 0x58, 0x9a, 0xd7, - 0xc8, 0x80, 0x35, 0xf3, - 0x13, 0x2b, 0xd8, 0xea, 0xf3, 0x85, 0x5c, 0x7e, 0xda, 0x22, 0xd2, 0xbb, - 0xba, 0xf6, 0x97, 0x9d, - 0x14, 0x41, 0xc2, 0xbc, 0x83, 0x30, 0xa9, 0x2e, 0x74, 0x87, 0xe9, 0x7c, - 0x27, 0x77, 0x7f, 0x54, - 0x15, 0xd5, 0x46, 0x61, 0x93, 0x8d, 0x8e, 0x73, 0xcc, 0xfd, 0xa1, 0x10, - 0x55, 0x01, 0xdd, 0x3a, - 0x16, 0xaa, 0x09, 0xc5, 0xa3, 0x89, 0xe7, 0x94, 0xc7, 0x73, 0x79, 0xa4, - 0xc3, 0x9b, 0xf8, 0x88, - 0x17, 0x3e, 0x8d, 0x18, 0xb3, 0x34, 0xc0, 0xc9, 0x7f, 0x09, 0x31, 0xc8, - 0xb1, 0xed, 0x5a, 0xe6, - 0x18, 0x7e, 0x3d, 0x69, 0x43, 0x20, 0xce, 0x34, 0x58, 0xfa, 0x0f, 0xe9, - 0x3a, 0x5a, 0xeb, 0xd9, - 0x19, 0xea, 0xb9, 0xb4, 0x53, 0x9d, 0xe9, 0x69, 0xe0, 0x80, 0x47, 0x85, - 0x48, 0x2c, 0x49, 0xb7, - 0x1a, 0x95, 0xf6, 0x10, 0x63, 0x99, 0x80, 0x8e, 0xeb, 0x0e, 0x9f, 0x31, - 0xde, 0xb6, 0x6c, 0x05, - 0x1b, 0x01, 0x72, 0xcd, 0x73, 0x24, 0xa7, 0xd3, 0x53, 0x74, 0xd7, 0x5d, - 0xac, 0xc0, 0xce, 0x6b, - 0x1c, 0x6b, 0x68, 0x9b, 0x03, 0x91, 0x52, 0x83, 0xfd, 0xd1, 0xec, 0x9a, - 0x31, 0x41, 0x26, 0xa2, - 0x1d, 0xff, 0xec, 0x46, 0x13, 0x2c, 0x75, 0xde, 0x45, 0xab, 0xa4, 0xf6, - 0x43, 0x37, 0x84, 0xcc, - 0x1e, 0x80, 0xa3, 0xe2, 0x23, 0x28, 0x1c, 0x39, 0x4e, 0x25, 0x7c, 0x42, - 0xd5, 0xad, 0xa1, 0x7e, - 0x1f, 0x14, 0x27, 0x3f, 0x33, 0x95, 0x3b, 0x64, 0xf6, 0x5f, 0x34, 0x2e, - 0xa7, 0xdb, 0x03, 0x10, - 0x20, 0xa8, 0xed, 0x9c, 0x45, 0xc1, 0x6a, 0xf1, 0x61, 0x9b, 0x14, 0x1e, - 0x58, 0xd8, 0xa7, 0x5e, - 0x21, 0x3c, 0x69, 0x41, 0x55, 0x7c, 0x4d, 0xac, 0xd9, 0xe1, 0x5c, 0x72, - 0x2a, 0xae, 0x05, 0x30, - 0x22, 0x43, 0x26, 0xe5, 0x65, 0x78, 0x24, 0x4b, 0xd2, 0x6f, 0x84, 0xc6, - 0xbc, 0x34, 0x20, 0x82, - 0x23, 0xd7, 0xa2, 0x38, 0x75, 0xc5, 0x03, 0x16, 0x6a, 0x15, 0xcc, 0xaa, - 0xce, 0x42, 0x82, 0xec, - 0x24, 0xbd, 0xb8, 0x6e, 0x05, 0x70, 0xf6, 0x46, 0xc4, 0xb0, 0xf7, 0x6d, - 0x53, 0xc3, 0x6a, 0x25, - 0x25, 0x29, 0x3c, 0xb3, 0x15, 0xcd, 0xd1, 0x1b, 0x7c, 0xca, 0xbf, 0x01, - 0x21, 0xb5, 0xc8, 0x4b, - 0x26, 0x56, 0x73, 0x17, 0x25, 0xc9, 0xb8, 0xfc, 0x77, 0x44, 0x67, 0xb5, - 0xb7, 0x2f, 0xed, 0xf9, - 0x27, 0xc2, 0xf7, 0xca, 0x35, 0x74, 0x9f, 0xa1, 0xcf, 0x3e, 0x2f, 0xd9, - 0xc5, 0x59, 0x4f, 0x97, - 0x28, 0x82, 0x47, 0xbb, 0xc5, 0x60, 0x91, 0x5c, 0xe8, 0xcd, 0x11, 0xf8, - 0x4e, 0xee, 0xfe, 0xa8, - 0x29, 0x16, 0xc3, 0x66, 0xd5, 0xdd, 0xb6, 0x01, 0x50, 0xb7, 0x59, 0x94, - 0x3c, 0x98, 0x5c, 0xc6, - 0x2a, 0x69, 0x8c, 0xc2, 0xe5, 0xd9, 0xdf, 0xe6, 0x5b, 0x39, 0x81, 0x20, - 0xaa, 0x02, 0x79, 0x74, - 0x2b, 0xfd, 0x08, 0x1f, 0xf5, 0x64, 0xf8, 0xbb, 0xe3, 0x43, 0xc9, 0x4c, - 0xd8, 0x74, 0xdb, 0x1a, - 0x2c, 0x97, 0x12, 0x49, 0x85, 0xd1, 0x0d, 0xeb, 0x4d, 0xe6, 0xf2, 0x8b, - 0x45, 0xf5, 0x33, 0xd3, - 0x2d, 0x03, 0x96, 0x94, 0x95, 0x6c, 0x2a, 0xb6, 0xf5, 0x9c, 0xba, 0xe7, - 0x37, 0x83, 0x91, 0xbd, - 0x2e, 0x7c, 0xd9, 0x30, 0xa5, 0x68, 0x43, 0x51, 0xfe, 0x12, 0x62, 0x53, - 0xa1, 0x19, 0xb4, 0x0f, - 0x2f, 0xe8, 0x5d, 0xed, 0xb5, 0xd5, 0x64, 0x0c, 0x46, 0x68, 0x2a, 0x3f, - 0xd3, 0x6f, 0x16, 0x61, - 0x30, 0xfc, 0x7a, 0xd2, 0x86, 0x40, 0x5f, 0x68, 0xb0, 0x37, 0x1e, 0x11, - 0x74, 0xb4, 0x15, 0x71, - 0x31, 0x68, 0xfe, 0x0f, 0x96, 0xfd, 0x78, 0x35, 0x08, 0x4d, 0x56, 0x7d, - 0x06, 0xc2, 0xb7, 0x1f, - 0x32, 0x17, 0xb1, 0xab, 0xa6, 0xf9, 0x11, 0xd2, 0x03, 0xc3, 0x8e, 0xc9, - 0x90, 0x58, 0x92, 0xad, - 0x33, 0x83, 0x35, 0x76, 0xb6, 0x44, 0x36, 0x8f, 0xbb, 0xb9, 0xc6, 0xa5, - 0xe2, 0x2e, 0x30, 0xc3, - 0x34, 0xe9, 0x2f, 0x20, 0xc6, 0xf1, 0xc3, 0xdf, 0x15, 0x1c, 0xfd, 0x62, - 0x7f, 0xaf, 0xd8, 0x0a, - 0x35, 0x7d, 0xab, 0xfd, 0xd6, 0x4c, 0xe4, 0x82, 0xad, 0x66, 0xb5, 0x0e, - 0x0d, 0xd9, 0x7a, 0x64, - 0x36, 0x02, 0xe4, 0x59, 0xe6, 0x48, 0x8d, 0x65, 0xa6, 0xe8, 0x6d, 0xba, - 0x9b, 0x43, 0x5f, 0xd6, - 0x37, 0x96, 0x60, 0x84, 0xf6, 0xf5, 0xaa, 0x38, 0x1e, 0x92, 0x25, 0xd6, - 0xe9, 0x35, 0xfd, 0xb8, - 0x38, 0xd6, 0xd0, 0xf5, 0x06, 0xe1, 0xa4, 0xc5, 0x39, 0x61, 0x1b, 0xf7, - 0x62, 0x82, 0x4c, 0x87, - 0x39, 0x42, 0x54, 0x28, 0x16, 0x5c, 0x83, 0x98, 0x81, 0x1b, 0x53, 0x9b, - 0x10, 0xf4, 0xee, 0xe9, - 0x3a, 0x3d, 0x1b, 0x8c, 0x26, 0x58, 0xea, 0x7f, 0x8a, 0x95, 0x8b, 0x2f, - 0x86, 0x6e, 0xcb, 0x5b, - 0x3b, 0xa9, 0x9f, 0x51, 0x36, 0xe5, 0xcd, 0x22, 0x32, 0xef, 0xc3, 0x43, - 0xf4, 0x18, 0x69, 0x35, - 0x3c, 0xc3, 0x85, 0x07, 0x46, 0x50, 0x38, 0x72, 0x9c, 0x4a, 0xf8, 0x84, - 0x69, 0x99, 0x81, 0xfc, - 0x3d, 0x57, 0x01, 0xda, 0x56, 0xed, 0x1f, 0x2f, 0x24, 0x30, 0xb0, 0xe8, - 0x1b, 0xef, 0x23, 0x92, - 0x3e, 0x28, 0x4e, 0x7e, 0x66, 0xe9, 0x76, 0xc8, 0x2f, 0xbe, 0x68, 0x5c, - 0x8d, 0x75, 0x06, 0x20, - 0x3f, 0xbc, 0xca, 0xa3, 0x76, 0x54, 0x51, 0x95, 0x97, 0xc4, 0x20, 0x30, - 0xff, 0x03, 0xa4, 0x4e, - 0x40, 0x93, 0x19, 0xfb, 0x8a, 0x41, 0xd4, 0x21, 0xc2, 0xf5, 0x28, 0x3c, - 0xb0, 0x73, 0x8d, 0xbc, - 0x41, 0x07, 0x9d, 0x26, 0x9a, 0xfc, 0xf3, 0x7c, 0x7a, 0x8f, 0x60, 0x50, - 0xc2, 0x05, 0x2f, 0xd2, - 0x42, 0x78, 0xd2, 0x82, 0xaa, 0xf8, 0x9a, 0x9b, 0x71, 0x01, 0xb8, 0xe4, - 0x54, 0x9f, 0x0a, 0x60, - 0x43, 0xec, 0x56, 0x5f, 0xba, 0x45, 0xbd, 0xc6, 0xc9, 0x7b, 0xf0, 0x88, - 0x26, 0xe9, 0xa8, 0x0e, - 0x44, 0x86, 0x4c, 0x09, 0xca, 0xf0, 0x48, 0x96, 0x67, 0xde, 0xcb, 0x4f, - 0xbb, 0x68, 0x40, 0xc7, - 0x45, 0x12, 0xc8, 0xd4, 0xda, 0x4d, 0x6f, 0xcb, 0xdf, 0xa4, 0x83, 0x23, - 0xc9, 0x1e, 0xe2, 0xa9, - 0x46, 0x6d, 0x87, 0x70, 0xea, 0x49, 0x06, 0x2c, 0xd4, 0x2a, 0x5b, 0x97, - 0x5f, 0x84, 0xc7, 0x1b, - 0x47, 0xf9, 0x03, 0xad, 0xfa, 0xf4, 0x21, 0x71, 0x6c, 0x50, 0x13, 0xfb, - 0x2d, 0xf2, 0x65, 0x75, - 0x48, 0xb9, 0xb3, 0xdc, 0x0a, 0xe0, 0x2f, 0x8c, 0x4b, 0xa3, 0x2d, 0xda, - 0xa6, 0x45, 0xd4, 0x4a, - 0x49, 0x2d, 0x37, 0x01, 0x1a, 0x5d, 0x08, 0xd1, 0xf3, 0xd9, 0x65, 0xb6, - 0xd4, 0x33, 0x76, 0x24, - 0x4a, 0x52, 0x78, 0xa5, 0x2a, 0x59, 0x61, 0x36, 0xf8, 0x57, 0xbd, 0x02, - 0x42, 0xa9, 0x53, 0x96, - 0x4b, 0xc6, 0xfc, 0x78, 0x3a, 0xe4, 0x46, 0x6b, 0x40, 0x2d, 0xf5, 0x6e, - 0x30, 0xdf, 0xf1, 0xf8, - 0x4c, 0xac, 0xe6, 0x2e, 0x4a, 0x51, 0xb3, 0x3b, 0xee, 0x88, 0xce, 0xa9, - 0xad, 0x5e, 0x19, 0x31, - 0x4d, 0x38, 0x62, 0xf3, 0x5a, 0xec, 0x94, 0x66, 0x56, 0xf2, 0x86, 0xc5, - 0xdf, 0x28, 0xbb, 0x5f, - 0x4e, 0x47, 0x2d, 0x57, 0x6a, 0xe8, 0xfd, 0x81, 0x5d, 0x7c, 0x5e, 0x71, - 0x49, 0xb2, 0x9e, 0xed, - 0x4f, 0xd3, 0xa9, 0x8a, 0x7a, 0x55, 0xda, 0xdc, 0xe5, 0x06, 0x16, 0x1d, - 0x3b, 0xc4, 0x3c, 0x83, - 0x50, 0xc7, 0x8e, 0xb5, 0x49, 0xc0, 0xe1, 0xb8, 0x13, 0x59, 0x22, 0x33, - 0x9c, 0x1f, 0x3f, 0x93, - 0x51, 0x53, 0x0a, 0x68, 0x59, 0x7d, 0xc6, 0xe5, 0xab, 0x23, 0x6a, 0x5f, - 0xee, 0x69, 0x9d, 0xfd, - 0x52, 0x2c, 0x45, 0xcc, 0x69, 0x79, 0xaf, 0x02, 0xa0, 0xad, 0xb2, 0xeb, - 0x78, 0xf3, 0xb8, 0x4f, - 0x53, 0xb8, 0xc1, 0x11, 0x79, 0xc4, 0x88, 0x5f, 0x18, 0xd7, 0xfa, 0x87, - 0x0a, 0x85, 0x1a, 0x21, - 0x54, 0xd2, 0xdb, 0x47, 0x09, 0x71, 0x7d, 0x0f, 0xb6, 0x72, 0xc1, 0x40, - 0x97, 0x04, 0xf2, 0xe8, - 0x55, 0x46, 0x5f, 0x9a, 0x19, 0xcc, 0x5a, 0x52, 0x0e, 0x08, 0x89, 0x2c, - 0xe5, 0x72, 0x50, 0x86, - 0x56, 0x39, 0x10, 0x3e, 0x29, 0xc8, 0x33, 0xb5, 0x05, 0x86, 0x51, 0x98, - 0x73, 0xe8, 0x75, 0x34, - 0x57, 0xad, 0x94, 0xe3, 0x39, 0x75, 0x14, 0xe8, 0xbd, 0xfc, 0x19, 0xf4, - 0x01, 0x9e, 0xd7, 0x5a, - 0x58, 0xed, 0x24, 0x92, 0xc9, 0x61, 0x1a, 0x15, 0x9a, 0x0f, 0x27, 0xd5, - 0x8a, 0x29, 0x66, 0x65, - 0x59, 0x79, 0xa0, 0x4f, 0xd9, 0xdc, 0x3d, 0x48, 0x22, 0x75, 0x6f, 0xb9, - 0xf8, 0x5f, 0xc4, 0x0b, - 0x5a, 0x06, 0xef, 0xeb, 0xe9, 0xd8, 0x54, 0xaf, 0x29, 0xfb, 0xb7, 0x0d, - 0x6e, 0xc5, 0xe1, 0xb9, - 0x5b, 0x92, 0x6b, 0x36, 0xf9, 0x65, 0x73, 0xf2, 0x91, 0x81, 0xff, 0x61, - 0x1c, 0xb3, 0x43, 0xd7, - 0x5c, 0xf8, 0x71, 0x60, 0x89, 0xd0, 0x86, 0xa2, 0x3f, 0x24, 0xc4, 0xa6, - 0x81, 0x32, 0xab, 0x1e, - 0x5d, 0x6c, 0xf5, 0xbd, 0x99, 0x6d, 0xa1, 0xff, 0x87, 0x5e, 0x8c, 0xca, - 0xf3, 0x44, 0x09, 0x70, - 0x5e, 0x13, 0xba, 0x19, 0xa9, 0x69, 0xc8, 0x18, 0x8c, 0xd0, 0x54, 0x7e, - 0x65, 0xde, 0x2c, 0xc2, - 0x5f, 0x87, 0x3e, 0xc4, 0xb9, 0xd4, 0xef, 0x45, 0x34, 0xaa, 0x1c, 0x12, - 0x17, 0xa8, 0x8e, 0xac, - 0x60, 0x3b, 0xf4, 0x67, 0xcf, 0x80, 0xbe, 0xd0, 0xa3, 0x6e, 0x3c, 0x22, - 0xe8, 0xab, 0x2a, 0xe2, - 0x61, 0xaf, 0x70, 0xba, 0xdf, 0x3d, 0x99, 0x8d, 0x1b, 0x14, 0x74, 0x4e, - 0x9a, 0xdd, 0x88, 0x8c, - 0x62, 0xd0, 0x3f, 0x1e, 0xef, 0x39, 0xf0, 0x6a, 0x10, 0x9a, 0xac, 0xfa, - 0x0c, 0x47, 0xad, 0x3e, - 0x63, 0x44, 0xbb, 0xc3, 0xff, 0x84, 0xd7, 0x37, 0xa8, 0xe0, 0xe4, 0x96, - 0x7e, 0x31, 0x0f, 0x50, - 0x64, 0x2e, 0xa1, 0x95, 0x8f, 0x31, 0x22, 0x67, 0x06, 0x45, 0xdf, 0x51, - 0xe3, 0xb0, 0xe7, 0x99, - 0x65, 0xba, 0x25, 0x48, 0x9f, 0x8c, 0x05, 0x3a, 0xbe, 0x3f, 0x97, 0x3d, - 0x91, 0xc6, 0x45, 0xf7, - 0x66, 0xc5, 0x6a, 0xec, 0xaf, 0x88, 0x6c, 0xdd, 0xb5, 0xb1, 0x4f, 0x89, - 0x07, 0x5c, 0x60, 0x45, - 0x67, 0x51, 0xee, 0x31, 0xbf, 0x35, 0x4b, 0x80, 0x0d, 0xcb, 0x07, 0xe5, - 0x75, 0x2a, 0xc2, 0x2b, - 0x68, 0x11, 0x5e, 0x40, 0x4f, 0x21, 0x45, 0x7d, 0x2a, 0x38, 0x39, 0xc4, - 0xfe, 0x9d, 0x73, 0x14, - 0x69, 0x85, 0xda, 0x9d, 0x5f, 0x9c, 0x62, 0x20, 0x92, 0x42, 0x71, 0xa8, - 0x8c, 0xeb, 0xd1, 0x7a, - 0x6a, 0xfa, 0x95, 0x39, 0x6f, 0x98, 0x0b, 0xc7, 0x99, 0xcc, 0xa9, 0x1c, - 0x1a, 0x71, 0xf4, 0xc8, - 0x6b, 0x6e, 0x11, 0xe4, 0x7f, 0x25, 0x2c, 0x9a, 0x21, 0xb6, 0xe1, 0x70, - 0x68, 0x07, 0x56, 0xa6, - 0x6c, 0x04, 0x0b, 0xb2, 0x0f, 0x90, 0xd9, 0xca, 0x8f, 0x13, 0xda, 0xb7, - 0xf5, 0x86, 0xbe, 0x6f, - 0x6d, 0x90, 0x8f, 0x6f, 0x1f, 0x2d, 0xfe, 0x97, 0x37, 0x69, 0x92, 0xdb, - 0x87, 0xf0, 0x1c, 0x01, - 0x6e, 0xef, 0xc0, 0xcb, 0x2f, 0x29, 0x97, 0x70, 0x3c, 0xe7, 0x4a, 0x6f, - 0x11, 0x6a, 0x39, 0xb3, - 0x6f, 0x7b, 0x44, 0x16, 0x3f, 0x94, 0xb0, 0x2d, 0x84, 0x9d, 0x02, 0x03, - 0x63, 0x1c, 0x9b, 0xdd, - 0x70, 0x6f, 0x63, 0x29, 0x0c, 0x01, 0x8b, 0x49, 0x72, 0xc2, 0x36, 0x2d, - 0xc4, 0xc7, 0x98, 0xcd, - 0x71, 0xfb, 0xe7, 0xf4, 0x1c, 0xbc, 0xac, 0x14, 0xca, 0xb8, 0x7e, 0x41, - 0xb6, 0xb1, 0x3a, 0xa3, - 0x72, 0x84, 0xa8, 0x50, 0x2c, 0xb8, 0xc5, 0xf3, 0xc1, 0x36, 0xa6, 0xf5, - 0x20, 0x2b, 0x1f, 0x11, - 0x73, 0x10, 0x2c, 0x8d, 0x3c, 0x05, 0xe2, 0xae, 0x79, 0x4c, 0xee, 0x99, - 0x52, 0x5d, 0xbd, 0x7f, - 0x74, 0x7a, 0x36, 0xdb, 0x4c, 0xb0, 0x17, 0xfe, 0xd7, 0xe9, 0xd5, 0x5e, - 0xcf, 0xdc, 0x55, 0xb6, - 0x75, 0xee, 0xb2, 0x06, 0x5c, 0x0d, 0x30, 0xa3, 0x6f, 0x93, 0x9d, 0x32, - 0xbd, 0xaa, 0xf7, 0xd8, - 0x76, 0x91, 0xfd, 0xa2, 0x6c, 0x09, 0x59, 0x44, 0x64, 0x1d, 0x45, 0x86, - 0x2b, 0x30, 0xd2, 0x6a, - 0x77, 0x05, 0x79, 0x7f, 0x7c, 0xb4, 0x7e, 0x19, 0xdc, 0x67, 0x0d, 0xea, - 0x59, 0x46, 0x70, 0x04, - 0x78, 0x45, 0xc9, 0x0e, 0x8c, 0xa0, 0x70, 0xe4, 0xfb, 0x94, 0x33, 0xcb, - 0xd2, 0xf1, 0xc1, 0x3b, - 0x79, 0xd1, 0x4d, 0xd3, 0x9c, 0x1d, 0x57, 0xb9, 0x43, 0xee, 0x7b, 0xa7, - 0xa0, 0x87, 0x63, 0x55, - 0x7a, 0xae, 0x02, 0x77, 0xac, 0x19, 0x3e, 0x5e, 0x48, 0x60, 0xa3, 0x13, - 0x36, 0x1d, 0x46, 0xe7, - 0x7b, 0x3a, 0x86, 0xaa, 0xbc, 0xa4, 0x19, 0x03, 0xf0, 0x1a, 0xeb, 0x7f, - 0x44, 0x6b, 0xe4, 0x89, - 0x7c, 0x50, 0x9c, 0xfc, 0xcc, 0x11, 0xec, 0x53, 0x5e, 0xbf, 0xd0, 0xb8, - 0xd9, 0xea, 0x0c, 0x40, - 0x7d, 0xc4, 0x18, 0x21, 0xdc, 0xac, 0xcb, 0x0e, 0xe6, 0xc5, 0x98, 0xd4, - 0xab, 0x9c, 0xae, 0x2e, - 0x7e, 0xbb, 0x57, 0x85, 0xec, 0xa8, 0xa2, 0xe9, 0xed, 0x4b, 0x40, 0x60, - 0x3d, 0x06, 0x8b, 0x9c, - 0x7f, 0x2f, 0xd3, 0x58, 0xfc, 0x15, 0x85, 0xb4, 0x55, 0x31, 0x08, 0x0c, - 0x4f, 0x70, 0x29, 0xf2, - 0x80, 0xe5, 0x32, 0x35, 0xd7, 0x82, 0x6b, 0x42, 0x47, 0x29, 0x50, 0x78, - 0xa3, 0xe6, 0xd9, 0xbb, - 0x81, 0x71, 0xb6, 0xe8, 0xc7, 0x3f, 0x4c, 0x1f, 0xff, 0x53, 0x18, 0x14, - 0xd1, 0x90, 0x7b, 0xd5, - 0x82, 0x0e, 0xf9, 0x4c, 0xf7, 0x3b, 0x25, 0xf8, 0xf4, 0xdd, 0xc0, 0xa0, - 0x47, 0x0a, 0x5e, 0x67, - 0x83, 0x9a, 0x7d, 0x91, 0xe7, 0x86, 0x02, 0xa5, 0x4c, 0xa7, 0x88, 0xcc, - 0x35, 0x7c, 0xfc, 0x09, - 0x84, 0xf0, 0x67, 0xc7, 0x97, 0x33, 0xf7, 0xf5, 0xe2, 0x02, 0xb3, 0x0b, - 0xa8, 0xfd, 0x14, 0xc0, - 0x85, 0x64, 0xe3, 0x1a, 0x87, 0x8e, 0xd0, 0xa8, 0x5a, 0x78, 0xfb, 0x67, - 0xda, 0x8b, 0xb6, 0xae, - 0x86, 0x1b, 0xac, 0xbe, 0xb7, 0x8a, 0xb9, 0x4f, 0x51, 0xf6, 0x23, 0xd3, - 0x4c, 0x11, 0x93, 0x1c, - 0x87, 0x8f, 0x28, 0x63, 0xa7, 0x37, 0x9e, 0x12, 0xe9, 0x8c, 0x6b, 0xbf, - 0x3e, 0x67, 0x31, 0x72, - 0x88, 0xcf, 0x98, 0x12, 0x57, 0x23, 0x90, 0xef, 0xce, 0x7f, 0x55, 0x9e, - 0xb5, 0xd0, 0x80, 0x4d, - 0x89, 0x5b, 0x1c, 0xcf, 0x47, 0x9e, 0xb7, 0xb2, 0x76, 0x05, 0x1d, 0xf2, - 0xc7, 0xa6, 0x22, 0x23, - 0x8a, 0x24, 0x53, 0x6b, 0x77, 0x9a, 0xde, 0x55, 0x7d, 0x8b, 0xc5, 0x46, - 0x51, 0x3c, 0x07, 0x91, - 0x8b, 0xb0, 0xd7, 0xb6, 0x67, 0x27, 0xf9, 0x08, 0xc5, 0xf1, 0x8d, 0x2a, - 0x23, 0x4a, 0xa5, 0xff, - 0x8c, 0xda, 0xcd, 0xe0, 0x17, 0x92, 0x0c, 0x58, 0x6b, 0x54, 0xb6, 0xed, - 0xbe, 0xcb, 0x4d, 0x36, - 0x8d, 0x4e, 0x49, 0x3d, 0x07, 0x2f, 0x2b, 0x05, 0xd3, 0x2e, 0xfe, 0x81, - 0xcc, 0xbd, 0xef, 0x58, - 0x8e, 0x31, 0x06, 0x99, 0x37, 0x2b, 0x42, 0xe2, 0xd8, 0xa0, 0x26, 0x35, - 0x5a, 0x27, 0xca, 0xea, - 0x8f, 0xa5, 0x82, 0x44, 0x27, 0x96, 0x65, 0xbf, 0x60, 0xda, 0x6e, 0x59, - 0x28, 0x51, 0x68, 0x84, - 0x90, 0xb1, 0xa5, 0x7b, 0x14, 0x03, 0x5e, 0xdb, 0x96, 0x85, 0x5a, 0x77, - 0x8f, 0x8a, 0x6b, 0x94, - 0x91, 0x25, 0x21, 0xa6, 0x04, 0xbe, 0x79, 0x86, 0x2e, 0xff, 0x12, 0x1b, - 0xfd, 0xfc, 0xc9, 0xfa, - 0x92, 0x5a, 0x6e, 0x02, 0x34, 0xba, 0x10, 0x61, 0x25, 0x71, 0xca, 0xaf, - 0x6b, 0x66, 0xec, 0x48, - 0x93, 0xce, 0xea, 0xdf, 0x24, 0x07, 0x37, 0x3c, 0x9d, 0x0b, 0x82, 0xc3, - 0x19, 0x10, 0x4e, 0x26, - 0x94, 0xa4, 0xf0, 0x89, 0x54, 0xb2, 0xc2, 0x6c, 0x33, 0xae, 0xb9, 0x04, - 0x84, 0x91, 0xa6, 0xef, - 0x95, 0x30, 0x74, 0x54, 0x44, 0x0f, 0xe5, 0x31, 0x8b, 0xd4, 0xf1, 0x68, - 0xf6, 0xe7, 0x04, 0x81, - 0x96, 0x4f, 0x3b, 0xf0, 0x74, 0x0b, 0x8c, 0xd6, 0x80, 0x5a, 0x29, 0xdc, - 0x60, 0x7d, 0x21, 0x33, - 0x97, 0xdb, 0xbf, 0x2d, 0x64, 0xb6, 0xab, 0x8b, 0x38, 0x20, 0x61, 0xb0, - 0x12, 0x0b, 0x83, 0x5d, - 0x98, 0x9b, 0x0f, 0x5c, 0x94, 0xa2, 0xa5, 0x76, 0x1f, 0xd3, 0x5f, 0x91, - 0x99, 0xbc, 0x32, 0x62, - 0x99, 0x0f, 0x8b, 0x81, 0x84, 0x1f, 0x82, 0x2b, 0xa7, 0xa9, 0x17, 0xfd, - 0xeb, 0xca, 0x90, 0x0c, - 0x9a, 0x70, 0xc4, 0x25, 0xb4, 0x1b, 0xeb, 0xcc, 0xac, 0x27, 0xcf, 0x49, - 0x7d, 0x50, 0xb5, 0xbe, - 0x9b, 0xe4, 0x40, 0xf8, 0xa4, 0xa6, 0xcc, 0x91, 0x14, 0x5d, 0x87, 0x25, - 0x0f, 0x26, 0x17, 0xd0, - 0x9c, 0x8e, 0x5a, 0xae, 0xd4, 0x13, 0x39, 0xc1, 0xba, 0xf8, 0xbc, 0xe2, - 0x92, 0xa7, 0xff, 0x19, - 0x9d, 0x1a, 0xde, 0x73, 0xc4, 0xae, 0x1e, 0x9c, 0x02, 0x82, 0xf4, 0x8e, - 0xe0, 0xd1, 0x5d, 0x77, - 0x9e, 0x65, 0x91, 0xd7, 0xf4, 0xaa, 0x77, 0x7b, 0x09, 0x0c, 0x2c, 0x3a, - 0x76, 0x4b, 0x78, 0xc5, - 0x9f, 0xf1, 0x15, 0x0a, 0xe4, 0x17, 0x50, 0x26, 0xb1, 0x76, 0x64, 0x56, - 0x04, 0x3d, 0xda, 0xab, - 0xa0, 0x4d, 0xdf, 0xa9, 0x92, 0x43, 0x01, 0xb3, 0x26, 0xb2, 0x44, 0x66, - 0xfb, 0x3e, 0x7e, 0xe5, - 0xa1, 0xd9, 0x5b, 0x74, 0x82, 0xfe, 0x26, 0xee, 0x9e, 0xc8, 0x0c, 0x0a, - 0x89, 0x48, 0xdc, 0x8b, - 0xa2, 0xa6, 0x14, 0xd0, 0xb2, 0xfa, 0x4f, 0x09, 0x95, 0x46, 0xd4, 0xbe, - 0x1f, 0xd2, 0xf9, 0x39, - 0xa3, 0x32, 0x90, 0x0d, 0xa2, 0x47, 0x68, 0x54, 0x2d, 0x3c, 0x9c, 0xd2, - 0x6d, 0xa4, 0x5b, 0x57, - 0xa4, 0x58, 0x8a, 0x5b, 0xd2, 0xf2, 0x9d, 0x04, 0x83, 0x99, 0xa7, 0x15, - 0xf0, 0x25, 0xb3, 0x9e, - 0xa5, 0xcc, 0x0e, 0x86, 0xc2, 0x4f, 0xba, 0x59, 0x3b, 0xe3, 0xef, 0x79, - 0x82, 0x53, 0x11, 0xf0, - 0xa6, 0xb3, 0x41, 0x22, 0xf2, 0x4b, 0xd3, 0xbe, 0x30, 0x6d, 0x37, 0xcd, - 0x14, 0xc9, 0x34, 0x42, - 0xa7, 0x27, 0xc5, 0xff, 0xe2, 0xf6, 0xf4, 0xe3, 0x88, 0x17, 0x7f, 0xa1, - 0x66, 0xbf, 0x96, 0x2c, - 0xa8, 0x67, 0x75, 0x8e, 0x12, 0xe2, 0xfa, 0x1e, 0xaf, 0xe4, 0x41, 0x80, - 0xed, 0x08, 0x27, 0x13, - 0xa9, 0xf3, 0xf1, 0x53, 0x02, 0x5f, 0xdd, 0x43, 0x17, 0x9e, 0x09, 0xec, - 0x9f, 0x7e, 0x85, 0x7d, - 0xaa, 0x8c, 0xbe, 0xf7, 0x32, 0x5b, 0xb4, 0xa4, 0x1c, 0x10, 0xd1, 0x58, - 0x09, 0xe4, 0xa0, 0xcf, - 0xab, 0x18, 0x3a, 0x2a, 0x22, 0xe6, 0x93, 0xf9, 0xa4, 0x6a, 0x99, 0x34, - 0x7b, 0x92, 0x02, 0xa1, - 0xac, 0x72, 0x20, 0x7c, 0x52, 0x53, 0x66, 0xa9, 0x0a, 0xcf, 0xa2, 0xf3, - 0xe6, 0x13, 0xea, 0x68, - 0xad, 0xe6, 0xa4, 0xa1, 0x42, 0xee, 0x41, 0xf4, 0xb2, 0xb5, 0xea, 0x9f, - 0x94, 0x65, 0x48, 0x06, - 0xae, 0x99, 0xeb, 0x05, 0x72, 0xea, 0x28, 0x13, 0xb9, 0x3b, 0x32, 0x2b, - 0x02, 0xff, 0x6d, 0xb4, - 0xaf, 0x0d, 0x6f, 0xd8, 0x62, 0x57, 0x0f, 0x4e, 0x01, 0x41, 0x7a, 0x47, - 0x70, 0x89, 0xcf, 0xda, - 0xb0, 0x19, 0x48, 0xe7, 0x51, 0xc2, 0x34, 0x2a, 0xf7, 0x1e, 0x4e, 0x69, - 0xd7, 0x52, 0xcc, 0xca, - 0xb1, 0x8d, 0xcc, 0x3a, 0x41, 0x7f, 0x13, 0x77, 0x4f, 0x64, 0x06, 0x05, - 0xa5, 0x24, 0x6e, 0xa4, - 0xb2, 0xf2, 0x83, 0x9e, 0x71, 0x7b, 0x7a, 0x90, 0x44, 0xea, 0xde, 0xb1, - 0x33, 0xbe, 0x4b, 0x16, - 0xb3, 0x66, 0x07, 0x43, 0x61, 0xc6, 0x5d, 0xcd, 0xfc, 0x90, 0x96, 0xdd, - 0x41, 0xc8, 0xe9, 0x78, - 0xb4, 0x0c, 0x1d, 0x15, 0x11, 0x73, 0xa8, 0x9d, 0x52, 0x35, 0xad, 0x1a, - 0xdc, 0x49, 0x01, 0xb1, - 0xb5, 0x98, 0x99, 0xc8, 0x01, 0xce, 0x8f, 0xc0, 0xea, 0x4f, 0xe5, 0x76, - 0xae, 0x3f, 0xa3, 0xdf, - 0xb6, 0xe7, 0xd6, 0x6c, 0x31, 0xca, 0xe6, 0x27, 0xe1, 0xc1, 0x3d, 0xc2, - 0x38, 0xa5, 0x86, 0x6d, - 0xb7, 0x73, 0x52, 0xb1, 0x21, 0x77, 0xc1, 0x7a, 0x59, 0xbb, 0x75, 0xae, - 0x4a, 0xd3, 0x24, 0x03, - 0xb8, 0x33, 0xe2, 0xc0, 0xd1, 0x63, 0xcf, 0x87, 0x7e, 0x48, 0x4b, 0x8f, - 0xc1, 0x64, 0x95, 0x3c, - 0xb9, 0xa7, 0x66, 0x1d, 0xc1, 0xde, 0xe8, 0xda, 0xc6, 0x32, 0x03, 0xe3, - 0xb3, 0x12, 0x37, 0x52, - 0xba, 0xd8, 0x29, 0xb9, 0xf1, 0xda, 0x81, 0x3d, 0xcd, 0xbc, 0xdb, 0x57, - 0x25, 0x88, 0x12, 0xe0, - 0xbb, 0x4c, 0xad, 0x64, 0xe1, 0x67, 0xa6, 0x60, 0x75, 0xc6, 0x93, 0x3b, - 0x57, 0xfe, 0xb0, 0x8e, - 0xbc, 0x26, 0xb7, 0x32, 0x91, 0xd2, 0x53, 0x30, 0xdb, 0x63, 0xa8, 0xfc, - 0xca, 0x7f, 0x58, 0x47, - 0xbd, 0xb2, 0x33, 0xef, 0x81, 0x6f, 0x74, 0x6d, 0x63, 0x19, 0xe0, 0x90, - 0xb8, 0x09, 0xfa, 0x29, - 0xbe, 0xcd, 0x7c, 0x4b, 0xb1, 0x6b, 0x1d, 0x8a, 0x68, 0x97, 0x38, 0x24, - 0x2e, 0x93, 0xdf, 0x9b, - 0xbf, 0x59, 0xf8, 0x96, 0xa1, 0xd6, 0x3a, 0xd7, 0xd0, 0xed, 0x70, 0x48, - 0x5c, 0xe5, 0x7d, 0xf5, - 0xc0, 0x76, 0x2b, 0xce, 0x5d, 0xc3, 0xbf, 0x63, 0x85, 0xdc, 0x78, 0x44, - 0x13, 0x95, 0x54, 0x07, - 0xc1, 0xe2, 0xaf, 0x13, 0x4d, 0x7e, 0x98, 0x3e, 0x3d, 0xa6, 0x30, 0x28, - 0x61, 0xe3, 0xf6, 0x69, - 0xc2, 0x9d, 0xe0, 0xb7, 0x7d, 0x7a, 0xf1, 0xd9, 0x36, 0x28, 0xe8, 0x9c, - 0xf7, 0x79, 0xd3, 0xdb, - 0xc3, 0x09, 0x64, 0x6a, 0x6d, 0xc7, 0xd6, 0x84, 0x8e, 0x52, 0xa0, 0xf0, - 0x85, 0x0f, 0x71, 0xb5, - 0xc4, 0x63, 0x7e, 0x3c, 0x1d, 0x72, 0x23, 0xd4, 0x20, 0xf7, 0x9b, 0x37, - 0x18, 0x8e, 0x99, 0x7c, - 0xc5, 0xf7, 0xfa, 0xe1, 0x0d, 0xcf, 0x04, 0x89, 0x98, 0x8d, 0xd3, 0x5b, - 0x6a, 0xf8, 0x3b, 0x12, - 0xc6, 0x88, 0xb5, 0x45, 0x3d, 0xcb, 0x6d, 0x6e, 0x93, 0x03, 0x0b, 0xef, - 0xfc, 0x62, 0x1e, 0xa0, - 0xc7, 0x1c, 0x31, 0x98, 0x2d, 0x76, 0x4a, 0x33, 0x2b, 0x79, 0x43, 0x83, - 0x8e, 0x14, 0xbc, 0xce, - 0xc8, 0x5c, 0x81, 0xe9, 0xdd, 0x62, 0x44, 0xce, 0x0c, 0x8a, 0x7d, 0xa2, - 0x05, 0xa3, 0x0d, 0xf1, - 0xc9, 0xc8, 0x05, 0x34, 0xcd, 0xdf, 0x63, 0x93, 0xb4, 0xf0, 0x35, 0xce, - 0x77, 0xd5, 0xaf, 0x9f, - 0xca, 0xb7, 0x4a, 0x90, 0xfd, 0xdb, 0x0a, 0x74, 0xbf, 0x7e, 0xed, 0x7a, - 0xe1, 0x4f, 0x8a, 0x2d, - 0xcb, 0x23, 0xce, 0x4d, 0xed, 0x66, 0x2d, 0x29, 0x07, 0x04, 0xa5, 0x16, - 0x93, 0x39, 0x28, 0x43, - 0xcc, 0x49, 0xd4, 0x1b, 0x9d, 0xd3, 0xd8, 0x79, 0xa9, 0xa1, 0x9e, 0xd1, - 0x0e, 0xb8, 0xc0, 0x8a, - 0xcd, 0xdd, 0x50, 0xc6, 0x8d, 0x6e, 0xff, 0x24, 0x11, 0xdb, 0xd6, 0xbd, - 0x7c, 0xce, 0x62, 0xe4, - 0xce, 0xa2, 0x1f, 0x62, 0xbd, 0x6a, 0x96, 0xc3, 0x1a, 0x55, 0x0e, 0x09, - 0xea, 0x54, 0x47, 0x56, - 0xcf, 0x36, 0x9b, 0xbf, 0xad, 0xd7, 0xb1, 0x9e, 0xa2, 0x2f, 0x46, 0x65, - 0x98, 0x22, 0xe5, 0x38, - 0xd0, 0x22, 0xbc, 0x80, 0x9e, 0x42, 0x8a, 0xfa, 0x54, 0x70, 0x72, 0x4b, - 0x3f, 0xf9, 0xe6, 0x28, - 0xd1, 0xb6, 0x38, 0x5d, 0x8e, 0xff, 0xad, 0xa7, 0xec, 0x0a, 0x3a, 0x27, - 0x4d, 0x8f, 0x44, 0x46, - 0xd2, 0xc9, 0x77, 0xf9, 0xbe, 0xfb, 0xc4, 0x40, 0xe7, 0x84, 0xe2, 0x93, - 0xdb, 0x15, 0x61, 0xf4, - 0xd3, 0x5d, 0xf3, 0x24, 0xae, 0x46, 0xe3, 0x1d, 0x5f, 0xfe, 0xaa, 0xff, - 0xa9, 0x63, 0xc3, 0x9a, - 0xd4, 0x37, 0xe9, 0x72, 0xde, 0xf3, 0x16, 0x4d, 0xf1, 0x5b, 0x91, 0x38, - 0x34, 0xe2, 0x2b, 0x53, - 0xd5, 0xa3, 0x6d, 0xaf, 0xce, 0x4e, 0x31, 0x10, 0x49, 0x21, 0xd9, 0x54, - 0x46, 0x94, 0x89, 0x3d, - 0xd6, 0xdc, 0x22, 0x0b, 0xfe, 0x4a, 0x58, 0xf7, 0x42, 0xaf, 0x01, 0xe0, - 0xd0, 0x0e, 0xac, 0x8f, - 0xd7, 0x48, 0xa6, 0xd6, 0xee, 0xf7, 0x7f, 0xaa, 0xfa, 0xd5, 0x49, 0x8c, - 0xa2, 0x78, 0x0e, 0xe1, - 0xd8, 0x08, 0x16, 0xa7, 0x1e, 0xe3, 0x71, 0x57, 0xdd, 0x26, 0x77, 0xad, - 0x29, 0xcf, 0xbf, 0xde, - 0xd9, 0x9c, 0x92, 0x7a, 0x0e, 0x5e, 0x56, 0x0a, 0x65, 0x5c, 0x3f, 0xc1, - 0x5b, 0xb9, 0x1d, 0xb0, - 0xda, 0xe3, 0xdd, 0xde, 0x3e, 0x5a, 0x3f, 0xed, 0x6e, 0xd2, 0xe7, 0x75, - 0xcd, 0x23, 0x38, 0x02, - 0xdb, 0x77, 0x59, 0x03, 0x2e, 0xe7, 0x18, 0xb0, 0xd6, 0xa8, 0xaf, 0x19, - 0xbf, 0x55, 0x9a, 0x6c, - 0xdc, 0x1d, 0x43, 0x55, 0x5e, 0x52, 0xed, 0xe0, 0x78, 0x0d, 0x94, 0xde, - 0x22, 0xd4, 0x72, 0xa5, - 0xdd, 0x89, 0xc7, 0x88, 0x4e, 0xef, 0xca, 0xbd, 0xc0, 0x77, 0xdc, 0xb2, - 0x50, 0xa2, 0xd0, 0xcb, - 0xde, 0xf6, 0x88, 0x2c, 0x7e, 0xeb, 0xa3, 0x5a, 0xcb, 0xf9, 0x04, 0x06, - 0xc6, 0x38, 0xf5, 0x79, - 0xdf, 0x62, 0x0c, 0xf1, 0x6e, 0x56, 0x84, 0x07, 0x73, 0x83, 0x4c, 0x6a, - 0xb4, 0x4e, 0x57, 0x17, - 0xe0, 0xde, 0xc6, 0x52, 0x18, 0x02, 0xd5, 0x92, 0xe4, 0x47, 0x6c, 0x5a, - 0x4b, 0x4d, 0xf3, 0x59, - 0xe1, 0x4a, 0x42, 0x8f, 0x08, 0xbf, 0xf2, 0xcf, 0x5c, 0x3d, 0x24, 0x36, - 0x39, 0x3b, 0x51, 0x37, - 0xe2, 0x35, 0x0d, 0x2b, 0x38, 0xbb, 0x9b, 0x28, 0x57, 0xb3, 0xfc, 0x82, - 0xaf, 0xa1, 0x74, 0x85, - 0xe3, 0xa1, 0x89, 0xf6, 0x28, 0x06, 0xbc, 0x75, 0xef, 0xc9, 0xb4, 0xee, - 0xdd, 0xd7, 0xd6, 0xeb, - 0xe4, 0xcb, 0x93, 0xa0, 0x58, 0xb3, 0x49, 0x25, 0x41, 0x6c, 0x8f, 0x29, - 0x40, 0x56, 0x3e, 0x22, - 0xe5, 0x5f, 0x17, 0x7d, 0x48, 0x0e, 0x6e, 0x78, 0xf9, 0x16, 0xc7, 0x45, - 0x32, 0x20, 0x9c, 0x4c, - 0xe6, 0x20, 0x58, 0xd9, 0x78, 0x0a, 0x07, 0x9f, 0xf2, 0x98, 0x1f, 0xf1, - 0xa4, 0xba, 0xb9, 0xfe, - 0xe7, 0xb4, 0xdc, 0x04, 0x68, 0xb7, 0x20, 0xc2, 0x4a, 0xe2, 0x57, 0x9d, - 0xd6, 0xcc, 0x1b, 0x90, - 0xe8, 0xf4, 0x6c, 0x75, 0x98, 0xa3, 0x2e, 0x3f, 0x6d, 0x11, 0x69, 0xbc, - 0x5d, 0x7b, 0xaa, 0xaf, - 0xe9, 0x60, 0xe8, 0xa8, 0x88, 0x1e, 0x09, 0x62, 0xd5, 0x6b, 0x21, 0xd0, - 0x2f, 0x0d, 0x08, 0xc1, - 0xea, 0x1f, 0xa7, 0x0c, 0xb8, 0x1a, 0x60, 0x85, 0xde, 0xe5, 0xf9, 0x64, - 0xb9, 0x97, 0x2d, 0x73, - 0xeb, 0x8b, 0x23, 0xd1, 0xa8, 0xa7, 0x47, 0xd8, 0x66, 0x9f, 0xb1, 0x08, - 0xcb, 0xe1, 0x8f, 0x1d, - 0xec, 0xe1, 0x39, 0x87, 0xd8, 0x12, 0xb2, 0x88, 0xc8, 0x3a, 0x8a, 0xcf, - 0x56, 0x60, 0x67, 0xd4, - 0xed, 0x75, 0xbd, 0x5a, 0xc8, 0xaf, 0x95, 0xd5, 0x70, 0x40, 0xc2, 0xa3, - 0x24, 0x16, 0xc5, 0xba, - 0xee, 0x0a, 0xf2, 0xfe, 0xf8, 0xab, 0xfc, 0x32, 0x7b, 0xce, 0x1a, 0x17, - 0xb2, 0x8c, 0xe0, 0x08, - 0xef, 0x9e, 0x76, 0x23, 0xe8, 0x16, 0xdb, 0x6f, 0xc3, 0xb4, 0x52, 0x7b, - 0xc0, 0xfa, 0x42, 0x66, - 0xf0, 0x8a, 0x51, 0x1c, 0xdb, 0x83, 0xe0, 0x0b, 0x35, 0xeb, 0x66, 0x55, - 0x67, 0x21, 0x41, 0x76, - 0xf1, 0x1e, 0xd5, 0xc1, 0xcb, 0x3e, 0xc7, 0x56, 0x8d, 0x91, 0x2e, 0x39, - 0x15, 0x57, 0xe3, 0x18, - 0xf2, 0x61, 0x9a, 0x65, 0xfb, 0x3a, 0xae, 0xb1, 0x86, 0x1f, 0xf6, 0x8d, - 0x83, 0xcd, 0xc6, 0xaa, - 0xf3, 0xf5, 0x1e, 0xb8, 0xeb, 0x87, 0x89, 0xec, 0x3e, 0x65, 0xbe, 0xe1, - 0xf1, 0xbb, 0x64, 0xc4, - 0xf4, 0x9f, 0x04, 0xee, 0x9b, 0x32, 0x7c, 0xbc, 0x90, 0xc0, 0x85, 0x26, - 0x6c, 0x3a, 0x8c, 0x0d, - 0xf5, 0x0b, 0x80, 0x33, 0x8b, 0x8f, 0x5b, 0xe1, 0x28, 0xba, 0xcd, 0x4a, - 0x1e, 0x4c, 0x2e, 0x63, - 0xf6, 0x74, 0xcf, 0x97, 0xbb, 0x8b, 0x32, 0x06, 0x23, 0x34, 0x15, 0xfe, - 0x88, 0xd6, 0x0b, 0xd1, - 0xf7, 0xe0, 0x4b, 0x4a, 0xab, 0x36, 0x15, 0x5b, 0x9b, 0x4e, 0x5d, 0x92, - 0xfa, 0xa0, 0xa9, 0xbf, - 0xf8, 0xa0, 0xfb, 0x3b, 0x5b, 0x22, 0x1b, 0xa6, 0xbc, 0xbd, 0x63, 0xb3, - 0x71, 0x17, 0x18, 0x80, - 0xf9, 0x34, 0x7f, 0xe6, 0x4b, 0x9f, 0x3c, 0xfb, 0x04, 0xc7, 0x2b, 0xdf, - 0x03, 0x61, 0xba, 0xee, - 0xfa, 0x4b, 0x30, 0x42, 0x7b, 0x9b, 0x55, 0x1c, 0x0f, 0x49, 0xf3, 0x6b, - 0x95, 0xfb, 0x9f, 0x5c, - 0xfb, 0xdf, 0xb4, 0x9f, 0x6b, 0x26, 0x72, 0x41, 0xb7, 0x33, 0xbb, 0x07, - 0xe7, 0x8d, 0x3d, 0x32, - 0xfc, 0xb5, 0xae, 0xc9, 0x1b, 0x93, 0x87, 0x11, 0x19, 0x96, 0x80, 0xc0, - 0x7a, 0x0c, 0xd5, 0xfb, - 0xfd, 0x21, 0x2a, 0x14, 0x0b, 0x2e, 0xa0, 0x4c, 0xa1, 0xec, 0xc8, 0xac, - 0x08, 0x7a, 0x77, 0x95, - 0xfe, 0x5e, 0x65, 0xb0, 0x3b, 0x2a, 0xc9, 0xab, 0xaa, 0x62, 0x10, 0x18, - 0x9e, 0xe0, 0x52, 0x27, - 0xff, 0xca, 0xe1, 0x6d, 0x2b, 0x97, 0xee, 0xf6, 0x12, 0x18, 0x58, 0x74, - 0xec, 0x96, 0xf0, 0x49, - }, - { /* 1 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x94, 0xa5, 0x64, 0x0d, 0x89, 0xa2, 0x7f, 0x4b, 0x6e, 0x16, 0xc3, 0x4c, - 0xe8, 0xe3, 0xd0, 0x4d, - 0xeb, 0x89, 0xc8, 0x1a, 0xd1, 0x87, 0xfe, 0x96, 0xdc, 0x2c, 0x45, 0x98, - 0x13, 0x05, 0x63, 0x9a, - 0x7f, 0x2c, 0xac, 0x17, 0x58, 0x25, 0x81, 0xdd, 0xb2, 0x3a, 0x86, 0xd4, - 0xfb, 0xe6, 0xb3, 0xd7, - 0x15, 0xd1, 0x53, 0x34, 0x61, 0xcd, 0x3f, 0xef, 0x7b, 0x58, 0x8a, 0xf3, - 0x26, 0x0a, 0xc6, 0xf7, - 0x81, 0x74, 0x37, 0x39, 0xe8, 0x6f, 0x40, 0xa4, 0x15, 0x4e, 0x49, 0xbf, - 0xce, 0xe9, 0x16, 0xba, - 0xfe, 0x58, 0x9b, 0x2e, 0xb0, 0x4a, 0xc1, 0x79, 0xa7, 0x74, 0xcf, 0x6b, - 0x35, 0x0f, 0xa5, 0x6d, - 0x6a, 0xfd, 0xff, 0x23, 0x39, 0xe8, 0xbe, 0x32, 0xc9, 0x62, 0x0c, 0x27, - 0xdd, 0xec, 0x75, 0x20, - 0x2a, 0x61, 0xa6, 0x68, 0xc2, 0x59, 0x7e, 0x1d, 0xf6, 0xb0, 0xd7, 0x25, - 0x4c, 0x14, 0x4f, 0x2d, - 0xbe, 0xc4, 0xc2, 0x65, 0x4b, 0xfb, 0x01, 0x56, 0x98, 0xa6, 0x14, 0x69, - 0xa4, 0xf7, 0x9f, 0x60, - 0xc1, 0xe8, 0x6e, 0x72, 0x13, 0xde, 0x80, 0x8b, 0x2a, 0x9c, 0x92, 0xbd, - 0x5f, 0x11, 0x2c, 0xb7, - 0x55, 0x4d, 0x0a, 0x7f, 0x9a, 0x7c, 0xff, 0xc0, 0x44, 0x8a, 0x51, 0xf1, - 0xb7, 0xf2, 0xfc, 0xfa, - 0x3f, 0xb0, 0xf5, 0x5c, 0xa3, 0x94, 0x41, 0xf2, 0x8d, 0xe8, 0x5d, 0xd6, - 0x6a, 0x1e, 0x89, 0xda, - 0xab, 0x15, 0x91, 0x51, 0x2a, 0x36, 0x3e, 0xb9, 0xe3, 0xfe, 0x9e, 0x9a, - 0x82, 0xfd, 0x59, 0x97, - 0xd4, 0x39, 0x3d, 0x46, 0x72, 0x13, 0xbf, 0x64, 0x51, 0xc4, 0x18, 0x4e, - 0x79, 0x1b, 0xea, 0x40, - 0x40, 0x9c, 0x59, 0x4b, 0xfb, 0xb1, 0xc0, 0x2f, 0x3f, 0xd2, 0xdb, 0x02, - 0x91, 0xf8, 0x3a, 0x0d, - 0x54, 0xc2, 0x8f, 0xd0, 0x47, 0xb2, 0xfc, 0x3a, 0x2f, 0xa3, 0x6d, 0x4a, - 0x98, 0x28, 0x9e, 0x5a, - 0xc0, 0x67, 0xeb, 0xdd, 0xce, 0x10, 0x83, 0x71, 0x41, 0xb5, 0xae, 0x06, - 0x70, 0xcb, 0x4e, 0x17, - 0xbf, 0x4b, 0x47, 0xca, 0x96, 0x35, 0x02, 0xac, 0xf3, 0x8f, 0x28, 0xd2, - 0x8b, 0x2d, 0xfd, 0xc0, - 0x2b, 0xee, 0x23, 0xc7, 0x1f, 0x97, 0x7d, 0xe7, 0x9d, 0x99, 0xeb, 0x9e, - 0x63, 0xce, 0x2d, 0x8d, - 0x41, 0x13, 0xdc, 0xe4, 0x26, 0x7f, 0xc3, 0xd5, 0x54, 0xfb, 0xe7, 0xb9, - 0xbe, 0x22, 0x58, 0xad, - 0xd5, 0xb6, 0xb8, 0xe9, 0xaf, 0xdd, 0xbc, 0x9e, 0x3a, 0xed, 0x24, 0xf5, - 0x56, 0xc1, 0x88, 0xe0, - 0xaa, 0x9a, 0x14, 0xfe, 0xf7, 0xf8, 0x3d, 0x43, 0x88, 0xd7, 0xa2, 0x21, - 0xad, 0x27, 0x3b, 0x37, - 0x3e, 0x3f, 0x70, 0xf3, 0x7e, 0x5a, 0x42, 0x08, 0xe6, 0xc1, 0x61, 0x6d, - 0x45, 0xc4, 0xeb, 0x7a, - 0x7e, 0xa3, 0x29, 0xb8, 0x85, 0xeb, 0x82, 0x27, 0xd9, 0x13, 0xba, 0x6f, - 0xd4, 0x3c, 0xd1, 0x77, - 0xea, 0x06, 0x4d, 0xb5, 0x0c, 0x49, 0xfd, 0x6c, 0xb7, 0x05, 0x79, 0x23, - 0x3c, 0xdf, 0x01, 0x3a, - 0x95, 0x2a, 0xe1, 0xa2, 0x54, 0x6c, 0x7c, 0xb1, 0x05, 0x3f, 0xff, 0xf7, - 0xc7, 0x39, 0xb2, 0xed, - 0x01, 0x8f, 0x85, 0xaf, 0xdd, 0xce, 0x03, 0xfa, 0x6b, 0x29, 0x3c, 0xbb, - 0x2f, 0xda, 0x62, 0xa0, - 0x6b, 0x72, 0x7a, 0x8c, 0xe4, 0x26, 0xbd, 0xc8, 0xa2, 0x4b, 0x30, 0x9c, - 0xf2, 0x36, 0x17, 0x80, - 0xff, 0xd7, 0x1e, 0x81, 0x6d, 0x84, 0xc2, 0x83, 0xcc, 0x5d, 0xf3, 0xd0, - 0x1a, 0xd5, 0xc7, 0xcd, - 0x80, 0xfb, 0xb2, 0x96, 0x35, 0xa1, 0x43, 0x5e, 0x7e, 0x67, 0x75, 0x04, - 0xe1, 0x33, 0x74, 0x1a, - 0x14, 0x5e, 0xd6, 0x9b, 0xbc, 0x03, 0x3c, 0x15, 0x10, 0x71, 0xb6, 0x48, - 0x09, 0xd0, 0xa4, 0x57, - 0xa8, 0x47, 0xdd, 0x63, 0x8e, 0xa7, 0x3b, 0x74, 0x5e, 0x85, 0xda, 0x94, - 0xf3, 0x50, 0xff, 0xb4, - 0x3c, 0xe2, 0xb9, 0x6e, 0x07, 0x05, 0x44, 0x3f, 0x30, 0x93, 0x19, 0xd8, - 0x1b, 0xb3, 0x2f, 0xf9, - 0x43, 0xce, 0x15, 0x79, 0x5f, 0x20, 0xc5, 0xe2, 0x82, 0xa9, 0x9f, 0x0c, - 0xe0, 0x55, 0x9c, 0x2e, - 0xd7, 0x6b, 0x71, 0x74, 0xd6, 0x82, 0xba, 0xa9, 0xec, 0xbf, 0x5c, 0x40, - 0x08, 0xb6, 0x4c, 0x63, - 0xbd, 0x96, 0x8e, 0x57, 0xef, 0x6a, 0x04, 0x9b, 0x25, 0xdd, 0x50, 0x67, - 0xd5, 0x5a, 0x39, 0x43, - 0x29, 0x33, 0xea, 0x5a, 0x66, 0xc8, 0x7b, 0xd0, 0x4b, 0xcb, 0x93, 0x2b, - 0x3d, 0xb9, 0xe9, 0x0e, - 0x56, 0x1f, 0x46, 0x4d, 0x3e, 0xed, 0xfa, 0x0d, 0xf9, 0xf1, 0x15, 0xff, - 0xc6, 0x5f, 0x5a, 0xd9, - 0xc2, 0xba, 0x22, 0x40, 0xb7, 0x4f, 0x85, 0x46, 0x97, 0xe7, 0xd6, 0xb3, - 0x2e, 0xbc, 0x8a, 0x94, - 0x82, 0x26, 0x7b, 0x0b, 0x4c, 0xfe, 0x45, 0x69, 0xa8, 0x35, 0x0d, 0xb1, - 0xbf, 0x44, 0xb0, 0x99, - 0x16, 0x83, 0x1f, 0x06, 0xc5, 0x5c, 0x3a, 0x22, 0xc6, 0x23, 0xce, 0xfd, - 0x57, 0xa7, 0x60, 0xd4, - 0x69, 0xaf, 0xb3, 0x11, 0x9d, 0x79, 0xbb, 0xff, 0x74, 0x19, 0x48, 0x29, - 0xac, 0x41, 0xd3, 0x03, - 0xfd, 0x0a, 0xd7, 0x1c, 0x14, 0xdb, 0xc4, 0xb4, 0x1a, 0x0f, 0x8b, 0x65, - 0x44, 0xa2, 0x03, 0x4e, - 0x97, 0xf7, 0x28, 0x3f, 0x2d, 0x33, 0x7a, 0x86, 0xd3, 0x6d, 0x87, 0x42, - 0x99, 0x4e, 0x76, 0x6e, - 0x03, 0x52, 0x4c, 0x32, 0xa4, 0x91, 0x05, 0xcd, 0xbd, 0x7b, 0x44, 0x0e, - 0x71, 0xad, 0xa6, 0x23, - 0x7c, 0x7e, 0xe0, 0x25, 0xfc, 0xb4, 0x84, 0x10, 0x0f, 0x41, 0xc2, 0xda, - 0x8a, 0x4b, 0x15, 0xf4, - 0xe8, 0xdb, 0x84, 0x28, 0x75, 0x16, 0xfb, 0x5b, 0x61, 0x57, 0x01, 0x96, - 0x62, 0xa8, 0xc5, 0xb9, - 0xfc, 0x85, 0x52, 0xb3, 0xc9, 0x15, 0xc7, 0x4e, 0x71, 0x26, 0xb7, 0xde, - 0x6b, 0x78, 0x61, 0xee, - 0x68, 0x20, 0x36, 0xbe, 0x40, 0xb7, 0xb8, 0x05, 0x1f, 0x30, 0x74, 0x92, - 0x83, 0x9b, 0xb1, 0xa3, - 0x17, 0x0c, 0x9a, 0xa9, 0x18, 0x92, 0x39, 0xd8, 0xad, 0x0a, 0xf2, 0x46, - 0x78, 0x7d, 0x02, 0x74, - 0x83, 0xa9, 0xfe, 0xa4, 0x91, 0x30, 0x46, 0x93, 0xc3, 0x1c, 0x31, 0x0a, - 0x90, 0x9e, 0xd2, 0x39, - 0xe9, 0x54, 0x01, 0x87, 0xa8, 0xd8, 0xf8, 0xa1, 0x0a, 0x7e, 0x3d, 0x2d, - 0x4d, 0x72, 0xa7, 0x19, - 0x7d, 0xf1, 0x65, 0x8a, 0x21, 0x7a, 0x87, 0xea, 0x64, 0x68, 0xfe, 0x61, - 0xa5, 0x91, 0x77, 0x54, - 0x02, 0xdd, 0xc9, 0x9d, 0x79, 0x5f, 0x06, 0x37, 0xd6, 0x52, 0x78, 0xb5, - 0x5e, 0x77, 0xc4, 0x83, - 0x96, 0x78, 0xad, 0x90, 0xf0, 0xfd, 0x79, 0x7c, 0xb8, 0x44, 0xbb, 0xf9, - 0xb6, 0x94, 0x14, 0xce, - 0xd6, 0xe4, 0xf4, 0xdb, 0x0b, 0x4c, 0xb9, 0x53, 0x87, 0x96, 0x60, 0xfb, - 0x27, 0x6c, 0x2e, 0xc3, - 0x42, 0x41, 0x90, 0xd6, 0x82, 0xee, 0xc6, 0x18, 0xe9, 0x80, 0xa3, 0xb7, - 0xcf, 0x8f, 0xfe, 0x8e, - 0x3d, 0x6d, 0x3c, 0xc1, 0xda, 0xcb, 0x47, 0xc5, 0x5b, 0xba, 0x25, 0x63, - 0x34, 0x69, 0x4d, 0x59, - 0xa9, 0xc8, 0x58, 0xcc, 0x53, 0x69, 0x38, 0x8e, 0x35, 0xac, 0xe6, 0x2f, - 0xdc, 0x8a, 0x9d, 0x14, - 0xc3, 0x35, 0xa7, 0xef, 0x6a, 0x81, 0x86, 0xbc, 0xfc, 0xce, 0xea, 0x08, - 0x01, 0x66, 0xe8, 0x34, - 0x57, 0x90, 0xc3, 0xe2, 0xe3, 0x23, 0xf9, 0xf7, 0x92, 0xd8, 0x29, 0x44, - 0xe9, 0x85, 0x38, 0x79, - 0x28, 0xbc, 0x6f, 0xf5, 0xbb, 0x06, 0x78, 0x2a, 0x20, 0xe2, 0xaf, 0x90, - 0x12, 0x63, 0x8b, 0xae, - 0xbc, 0x19, 0x0b, 0xf8, 0x32, 0xa4, 0x07, 0x61, 0x4e, 0xf4, 0x6c, 0xdc, - 0xfa, 0x80, 0x5b, 0xe3, - 0x93, 0x8e, 0x79, 0xc6, 0xdf, 0x8d, 0x76, 0xe8, 0xbc, 0xc9, 0x77, 0xeb, - 0x25, 0xa0, 0x3d, 0xab, - 0x07, 0x2b, 0x1d, 0xcb, 0x56, 0x2f, 0x09, 0xa3, 0xd2, 0xdf, 0xb4, 0xa7, - 0xcd, 0x43, 0xed, 0xe6, - 0x78, 0x07, 0xb1, 0xdc, 0x0e, 0x0a, 0x88, 0x7e, 0x60, 0xe5, 0x32, 0x73, - 0x36, 0xa5, 0x5e, 0x31, - 0xec, 0xa2, 0xd5, 0xd1, 0x87, 0xa8, 0xf7, 0x35, 0x0e, 0xf3, 0xf1, 0x3f, - 0xde, 0x46, 0x8e, 0x7c, - 0x86, 0x5f, 0x2a, 0xf2, 0xbe, 0x40, 0x49, 0x07, 0xc7, 0x91, 0xfd, 0x18, - 0x03, 0xaa, 0xfb, 0x5c, - 0x12, 0xfa, 0x4e, 0xff, 0x37, 0xe2, 0x36, 0x4c, 0xa9, 0x87, 0x3e, 0x54, - 0xeb, 0x49, 0x2b, 0x11, - 0x6d, 0xd6, 0xe2, 0xe8, 0x6f, 0xc7, 0xb7, 0x91, 0x1b, 0xbd, 0xb8, 0x80, - 0x10, 0xaf, 0x98, 0xc6, - 0xf9, 0x73, 0x86, 0xe5, 0xe6, 0x65, 0xc8, 0xda, 0x75, 0xab, 0x7b, 0xcc, - 0xf8, 0x4c, 0x48, 0x8b, - 0xb9, 0xef, 0xdf, 0xae, 0x1d, 0xd4, 0x08, 0xf5, 0x4a, 0x79, 0xa0, 0xce, - 0x69, 0xb4, 0x72, 0x86, - 0x2d, 0x4a, 0xbb, 0xa3, 0x94, 0x76, 0x77, 0xbe, 0x24, 0x6f, 0x63, 0x82, - 0x81, 0x57, 0xa2, 0xcb, - 0x52, 0x66, 0x17, 0xb4, 0xcc, 0x53, 0xf6, 0x63, 0x96, 0x55, 0xe5, 0x56, - 0x7a, 0xb1, 0x11, 0x1c, - 0xc6, 0xc3, 0x73, 0xb9, 0x45, 0xf1, 0x89, 0x28, 0xf8, 0x43, 0x26, 0x1a, - 0x92, 0x52, 0xc1, 0x51, - 0xac, 0x3e, 0x8c, 0x9a, 0x7c, 0x19, 0x37, 0x1a, 0x31, 0x21, 0x2a, 0x3d, - 0x4f, 0xbe, 0xb4, 0x71, - 0x38, 0x9b, 0xe8, 0x97, 0xf5, 0xbb, 0x48, 0x51, 0x5f, 0x37, 0xe9, 0x71, - 0xa7, 0x5d, 0x64, 0x3c, - 0x47, 0xb7, 0x44, 0x80, 0xad, 0x9e, 0xc9, 0x8c, 0xed, 0x0d, 0x6f, 0xa5, - 0x5c, 0xbb, 0xd7, 0xeb, - 0xd3, 0x12, 0x20, 0x8d, 0x24, 0x3c, 0xb6, 0xc7, 0x83, 0x1b, 0xac, 0xe9, - 0xb4, 0x58, 0x07, 0xa6, - 0xc7, 0x4c, 0xf6, 0x16, 0x98, 0x3f, 0x8a, 0xd2, 0x93, 0x6a, 0x1a, 0xa1, - 0xbd, 0x88, 0xa3, 0xf1, - 0x53, 0xe9, 0x92, 0x1b, 0x11, 0x9d, 0xf5, 0x99, 0xfd, 0x7c, 0xd9, 0xed, - 0x55, 0x6b, 0x73, 0xbc, - 0x2c, 0xc5, 0x3e, 0x0c, 0x49, 0xb8, 0x74, 0x44, 0x4f, 0x46, 0x5f, 0x39, - 0xae, 0x8d, 0xc0, 0x6b, - 0xb8, 0x60, 0x5a, 0x01, 0xc0, 0x1a, 0x0b, 0x0f, 0x21, 0x50, 0x9c, 0x75, - 0x46, 0x6e, 0x10, 0x26, - 0xd2, 0x9d, 0xa5, 0x22, 0xf9, 0xf2, 0xb5, 0x3d, 0xe8, 0x32, 0x90, 0x52, - 0x9b, 0x82, 0x65, 0x06, - 0x46, 0x38, 0xc1, 0x2f, 0x70, 0x50, 0xca, 0x76, 0x86, 0x24, 0x53, 0x1e, - 0x73, 0x61, 0xb5, 0x4b, - 0x39, 0x14, 0x6d, 0x38, 0x28, 0x75, 0x4b, 0xab, 0x34, 0x1e, 0xd5, 0xca, - 0x88, 0x87, 0x06, 0x9c, - 0xad, 0xb1, 0x09, 0x35, 0xa1, 0xd7, 0x34, 0xe0, 0x5a, 0x08, 0x16, 0x86, - 0x60, 0x64, 0xd6, 0xd1, - 0xed, 0x2d, 0x50, 0x7e, 0x5a, 0x66, 0xf4, 0xcf, 0x65, 0xda, 0xcd, 0x84, - 0xf1, 0x9c, 0xec, 0xdc, - 0x79, 0x88, 0x34, 0x73, 0xd3, 0xc4, 0x8b, 0x84, 0x0b, 0xcc, 0x0e, 0xc8, - 0x19, 0x7f, 0x3c, 0x91, - 0x06, 0xa4, 0x98, 0x64, 0x8b, 0xe1, 0x0a, 0x59, 0xb9, 0xf6, 0x88, 0x1c, - 0xe2, 0x99, 0x8f, 0x46, - 0x92, 0x01, 0xfc, 0x69, 0x02, 0x43, 0x75, 0x12, 0xd7, 0xe0, 0x4b, 0x50, - 0x0a, 0x7a, 0x5f, 0x0b, - 0xf8, 0xfc, 0x03, 0x4a, 0x3b, 0xab, 0xcb, 0x20, 0x1e, 0x82, 0x47, 0x77, - 0xd7, 0x96, 0x2a, 0x2b, - 0x6c, 0x59, 0x67, 0x47, 0xb2, 0x09, 0xb4, 0x6b, 0x70, 0x94, 0x84, 0x3b, - 0x3f, 0x75, 0xfa, 0x66, - 0x13, 0x75, 0xcb, 0x50, 0xea, 0x2c, 0x35, 0xb6, 0xc2, 0xae, 0x02, 0xef, - 0xc4, 0x93, 0x49, 0xb1, - 0x87, 0xd0, 0xaf, 0x5d, 0x63, 0x8e, 0x4a, 0xfd, 0xac, 0xb8, 0xc1, 0xa3, - 0x2c, 0x70, 0x99, 0xfc, - 0x3b, 0xc9, 0xa4, 0xa5, 0x51, 0x2a, 0x4d, 0x9c, 0xe2, 0x4c, 0xad, 0x7f, - 0xd6, 0xf0, 0xc2, 0x1f, - 0xaf, 0x6c, 0xc0, 0xa8, 0xd8, 0x88, 0x32, 0xd7, 0x8c, 0x5a, 0x6e, 0x33, - 0x3e, 0x13, 0x12, 0x52, - 0xd0, 0x40, 0x6c, 0xbf, 0x80, 0xad, 0xb3, 0x0a, 0x3e, 0x60, 0xe8, 0xe7, - 0xc5, 0xf5, 0xa1, 0x85, - 0x44, 0xe5, 0x08, 0xb2, 0x09, 0x0f, 0xcc, 0x41, 0x50, 0x76, 0x2b, 0xab, - 0x2d, 0x16, 0x71, 0xc8, - 0x2e, 0x18, 0xf7, 0x91, 0x30, 0xe7, 0x72, 0x73, 0x99, 0x14, 0x27, 0x8c, - 0xf0, 0xfa, 0x04, 0xe8, - 0xba, 0xbd, 0x93, 0x9c, 0xb9, 0x45, 0x0d, 0x38, 0xf7, 0x02, 0xe4, 0xc0, - 0x18, 0x19, 0xd4, 0xa5, - 0xc5, 0x91, 0x3f, 0x8b, 0xe1, 0x60, 0x8c, 0xe5, 0x45, 0x38, 0x62, 0x14, - 0xe3, 0xff, 0x67, 0x72, - 0x51, 0x34, 0x5b, 0x86, 0x68, 0xc2, 0xf3, 0xae, 0x2b, 0x2e, 0xa1, 0x58, - 0x0b, 0x1c, 0xb7, 0x3f, - 0x11, 0xa8, 0x02, 0xcd, 0x93, 0x73, 0x33, 0x81, 0x14, 0xfc, 0x7a, 0x5a, - 0x9a, 0xe4, 0x8d, 0x32, - 0x85, 0x0d, 0x66, 0xc0, 0x1a, 0xd1, 0x4c, 0xca, 0x7a, 0xea, 0xb9, 0x16, - 0x72, 0x07, 0x5d, 0x7f, - 0xfa, 0x21, 0xca, 0xd7, 0x42, 0xf4, 0xcd, 0x17, 0xc8, 0xd0, 0x3f, 0xc2, - 0x89, 0xe1, 0xee, 0xa8, - 0x6e, 0x84, 0xae, 0xda, 0xcb, 0x56, 0xb2, 0x5c, 0xa6, 0xc6, 0xfc, 0x8e, - 0x61, 0x02, 0x3e, 0xe5, - 0x04, 0x79, 0x51, 0xf9, 0xf2, 0xbe, 0x0c, 0x6e, 0x6f, 0xa4, 0xf0, 0xa9, - 0xbc, 0xee, 0x4b, 0xc5, - 0x90, 0xdc, 0x35, 0xf4, 0x7b, 0x1c, 0x73, 0x25, 0x01, 0xb2, 0x33, 0xe5, - 0x54, 0x0d, 0x9b, 0x88, - 0xef, 0xf0, 0x99, 0xe3, 0x23, 0x39, 0xf2, 0xf8, 0xb3, 0x88, 0xb5, 0x31, - 0xaf, 0xeb, 0x28, 0x5f, - 0x7b, 0x55, 0xfd, 0xee, 0xaa, 0x9b, 0x8d, 0xb3, 0xdd, 0x9e, 0x76, 0x7d, - 0x47, 0x08, 0xf8, 0x12, - 0x6f, 0x0b, 0x2b, 0x75, 0x16, 0x98, 0xb1, 0xa6, 0xcd, 0xef, 0xc0, 0x35, - 0x4e, 0xd8, 0x5c, 0x45, - 0xfb, 0xae, 0x4f, 0x78, 0x9f, 0x3a, 0xce, 0xed, 0xa3, 0xf9, 0x03, 0x79, - 0xa6, 0x3b, 0x8c, 0x08, - 0x84, 0x82, 0xe3, 0x6f, 0xc7, 0x1f, 0x4f, 0x30, 0x11, 0xc3, 0x85, 0xad, - 0x5d, 0xdd, 0x3f, 0xdf, - 0x10, 0x27, 0x87, 0x62, 0x4e, 0xbd, 0x30, 0x7b, 0x7f, 0xd5, 0x46, 0xe1, - 0xb5, 0x3e, 0xef, 0x92, - 0x7a, 0xda, 0x78, 0x41, 0x77, 0x55, 0x8e, 0x49, 0xb6, 0xb7, 0x4a, 0xc6, - 0x68, 0xd2, 0x9a, 0xb2, - 0xee, 0x7f, 0x1c, 0x4c, 0xfe, 0xf7, 0xf1, 0x02, 0xd8, 0xa1, 0x89, 0x8a, - 0x80, 0x31, 0x4a, 0xff, - 0x91, 0x53, 0xb0, 0x5b, 0xa6, 0xd2, 0x70, 0xdf, 0x6a, 0x9b, 0x0f, 0x5e, - 0x7b, 0xd7, 0xf9, 0x28, - 0x05, 0xf6, 0xd4, 0x56, 0x2f, 0x70, 0x0f, 0x94, 0x04, 0x8d, 0xcc, 0x12, - 0x93, 0x34, 0x29, 0x65, - 0x45, 0x6a, 0x8d, 0x1d, 0xd4, 0xc1, 0xcf, 0xbb, 0x3b, 0x5f, 0x17, 0x10, - 0x02, 0xcc, 0x13, 0x68, - 0xd1, 0xcf, 0xe9, 0x10, 0x5d, 0x63, 0xb0, 0xf0, 0x55, 0x49, 0xd4, 0x5c, - 0xea, 0x2f, 0xc3, 0x25, - 0xae, 0xe3, 0x45, 0x07, 0x05, 0x46, 0x31, 0x2d, 0xe7, 0x73, 0x52, 0x88, - 0x11, 0xc9, 0x70, 0xf2, - 0x3a, 0x46, 0x21, 0x0a, 0x8c, 0xe4, 0x4e, 0x66, 0x89, 0x65, 0x91, 0xc4, - 0xf9, 0x2a, 0xa0, 0xbf, - 0x50, 0xbb, 0xde, 0x29, 0xb5, 0x0c, 0xf0, 0x54, 0x40, 0x07, 0x9d, 0xe3, - 0x24, 0xc6, 0xd5, 0x9f, - 0xc4, 0x1e, 0xba, 0x24, 0x3c, 0xae, 0x8f, 0x1f, 0x2e, 0x11, 0x5e, 0xaf, - 0xcc, 0x25, 0x05, 0xd2, - 0xbb, 0x32, 0x16, 0x33, 0x64, 0x8b, 0x0e, 0xc2, 0x9c, 0x2b, 0xd8, 0x7b, - 0x37, 0xc3, 0xb6, 0x05, - 0x2f, 0x97, 0x72, 0x3e, 0xed, 0x29, 0x71, 0x89, 0xf2, 0x3d, 0x1b, 0x37, - 0xdf, 0x20, 0x66, 0x48, - 0xe5, 0xdf, 0xf2, 0x4f, 0x7d, 0xd9, 0xec, 0x13, 0xbb, 0x51, 0xee, 0x15, - 0x4a, 0x83, 0x7a, 0x95, - 0x71, 0x7a, 0x96, 0x42, 0xf4, 0x7b, 0x93, 0x58, 0xd5, 0x47, 0x2d, 0x59, - 0xa2, 0x60, 0xaa, 0xd8, - 0x0e, 0x56, 0x3a, 0x55, 0xac, 0x5e, 0x12, 0x85, 0x67, 0x7d, 0xab, 0x8d, - 0x59, 0x86, 0x19, 0x0f, - 0x9a, 0xf3, 0x5e, 0x58, 0x25, 0xfc, 0x6d, 0xce, 0x09, 0x6b, 0x68, 0xc1, - 0xb1, 0x65, 0xc9, 0x42, - 0xf0, 0x0e, 0xa1, 0x7b, 0x1c, 0x14, 0xd3, 0xfc, 0xc0, 0x09, 0x64, 0xe6, - 0x6c, 0x89, 0xbc, 0x62, - 0x64, 0xab, 0xc5, 0x76, 0x95, 0xb6, 0xac, 0xb7, 0xae, 0x1f, 0xa7, 0xaa, - 0x84, 0x6a, 0x6c, 0x2f, - 0x1b, 0x87, 0x69, 0x61, 0xcd, 0x93, 0x2d, 0x6a, 0x1c, 0x25, 0x21, 0x7e, - 0x7f, 0x8c, 0xdf, 0xf8, - 0x8f, 0x22, 0x0d, 0x6c, 0x44, 0x31, 0x52, 0x21, 0x72, 0x33, 0xe2, 0x32, - 0x97, 0x6f, 0x0f, 0xb5, - 0xcf, 0xbe, 0x54, 0x27, 0xbf, 0x80, 0x92, 0x0e, 0x4d, 0xe1, 0x39, 0x30, - 0x06, 0x97, 0x35, 0xb8, - 0x5b, 0x1b, 0x30, 0x2a, 0x36, 0x22, 0xed, 0x45, 0x23, 0xf7, 0xfa, 0x7c, - 0xee, 0x74, 0xe5, 0xf5, - 0x24, 0x37, 0x9c, 0x3d, 0x6e, 0x07, 0x6c, 0x98, 0x91, 0xcd, 0x7c, 0xa8, - 0x15, 0x92, 0x56, 0x22, - 0xb0, 0x92, 0xf8, 0x30, 0xe7, 0xa5, 0x13, 0xd3, 0xff, 0xdb, 0xbf, 0xe4, - 0xfd, 0x71, 0x86, 0x6f, - 0xda, 0x6f, 0x07, 0x13, 0xde, 0x4d, 0xad, 0xe1, 0x36, 0xb9, 0xb3, 0xc3, - 0x20, 0x9d, 0xf3, 0x4f, - 0x4e, 0xca, 0x63, 0x1e, 0x57, 0xef, 0xd2, 0xaa, 0x58, 0xaf, 0x70, 0x8f, - 0xc8, 0x7e, 0x23, 0x02, - 0x31, 0xe6, 0xcf, 0x09, 0x0f, 0xca, 0x53, 0x77, 0xea, 0x95, 0xf6, 0x5b, - 0x33, 0x98, 0x90, 0xd5, - 0xa5, 0x43, 0xab, 0x04, 0x86, 0x68, 0x2c, 0x3c, 0x84, 0x83, 0x35, 0x17, - 0xdb, 0x7b, 0x40, 0x98, - 0xb1, 0x1d, 0x7d, 0x9f, 0x3a, 0x6b, 0x10, 0x29, 0x94, 0xf2, 0x83, 0x5f, - 0xd2, 0xab, 0xe4, 0xcf, - 0x25, 0xb8, 0x19, 0x92, 0xb3, 0xc9, 0x6f, 0x62, 0xfa, 0xe4, 0x40, 0x13, - 0x3a, 0x48, 0x34, 0x82, - 0x5a, 0x94, 0xb5, 0x85, 0xeb, 0xec, 0xee, 0xbf, 0x48, 0xde, 0xc6, 0xc7, - 0xc1, 0xae, 0x87, 0x55, - 0xce, 0x31, 0xd1, 0x88, 0x62, 0x4e, 0x91, 0xf4, 0x26, 0xc8, 0x05, 0x8b, - 0x29, 0x4d, 0x57, 0x18, - 0xa4, 0xcc, 0x2e, 0xab, 0x5b, 0xa6, 0x2f, 0xc6, 0xef, 0xaa, 0x09, 0xac, - 0xf4, 0xa1, 0x22, 0x38, - 0x30, 0x69, 0x4a, 0xa6, 0xd2, 0x04, 0x50, 0x8d, 0x81, 0xbc, 0xca, 0xe0, - 0x1c, 0x42, 0xf2, 0x75, - 0x4f, 0x45, 0xe6, 0xb1, 0x8a, 0x21, 0xd1, 0x50, 0x33, 0x86, 0x4c, 0x34, - 0xe7, 0xa4, 0x41, 0xa2, - 0xdb, 0xe0, 0x82, 0xbc, 0x03, 0x83, 0xae, 0x1b, 0x5d, 0x90, 0x8f, 0x78, - 0x0f, 0x47, 0x91, 0xef, - 0x9b, 0x7c, 0xdb, 0xf7, 0xf8, 0x32, 0x6e, 0x34, 0x62, 0x42, 0x54, 0x7a, - 0x9e, 0xbf, 0xab, 0xe2, - 0x0f, 0xd9, 0xbf, 0xfa, 0x71, 0x90, 0x11, 0x7f, 0x0c, 0x54, 0x97, 0x36, - 0x76, 0x5c, 0x7b, 0xaf, - 0x70, 0xf5, 0x13, 0xed, 0x29, 0xb5, 0x90, 0xa2, 0xbe, 0x6e, 0x11, 0xe2, - 0x8d, 0xba, 0xc8, 0x78, - 0xe4, 0x50, 0x77, 0xe0, 0xa0, 0x17, 0xef, 0xe9, 0xd0, 0x78, 0xd2, 0xae, - 0x65, 0x59, 0x18, 0x35, - 0x8e, 0xad, 0x88, 0xc3, 0x99, 0xff, 0x51, 0xdb, 0x19, 0x1a, 0xde, 0x89, - 0xb8, 0xb5, 0x6d, 0x15, - 0x1a, 0x08, 0xec, 0xce, 0x10, 0x5d, 0x2e, 0x90, 0x77, 0x0c, 0x1d, 0xc5, - 0x50, 0x56, 0xbd, 0x58, - 0x65, 0x24, 0x40, 0xd9, 0x48, 0x78, 0xaf, 0x4d, 0xc5, 0x36, 0x9b, 0x11, - 0xab, 0xb0, 0x0e, 0x8f, - 0xf1, 0x81, 0x24, 0xd4, 0xc1, 0xda, 0xd0, 0x06, 0xab, 0x20, 0x58, 0x5d, - 0x43, 0x53, 0xde, 0xc2, - 0x4d, 0x98, 0x2f, 0x2c, 0xf3, 0x7e, 0xd7, 0x67, 0xe5, 0xd4, 0x34, 0x81, - 0xb9, 0xd3, 0x85, 0x21, - 0xd9, 0x3d, 0x4b, 0x21, 0x7a, 0xdc, 0xa8, 0x2c, 0x8b, 0xc2, 0xf7, 0xcd, - 0x51, 0x30, 0x55, 0x6c, - 0xa6, 0x11, 0xe7, 0x36, 0x22, 0xf9, 0x29, 0xf1, 0x39, 0xf8, 0x71, 0x19, - 0xaa, 0xd6, 0xe6, 0xbb, - 0x32, 0xb4, 0x83, 0x3b, 0xab, 0x5b, 0x56, 0xba, 0x57, 0xee, 0xb2, 0x55, - 0x42, 0x35, 0x36, 0xf6, - 0x58, 0x49, 0x7c, 0x18, 0x92, 0xb3, 0xe8, 0x88, 0x9e, 0x8c, 0xbe, 0x72, - 0x9f, 0xd9, 0x43, 0xd6, - 0xcc, 0xec, 0x18, 0x15, 0x1b, 0x11, 0x97, 0xc3, 0xf0, 0x9a, 0x7d, 0x3e, - 0x77, 0x3a, 0x93, 0x9b, - 0xb3, 0xc0, 0xb4, 0x02, 0x43, 0x34, 0x16, 0x1e, 0x42, 0xa0, 0xfb, 0xea, - 0x8c, 0xdc, 0x20, 0x4c, - 0x27, 0x65, 0xd0, 0x0f, 0xca, 0x96, 0x69, 0x55, 0x2c, 0xb6, 0x38, 0xa6, - 0x64, 0x3f, 0xf0, 0x01, - 0x67, 0xf9, 0x89, 0x44, 0x31, 0x27, 0xa9, 0x7a, 0x13, 0x64, 0xe3, 0xa4, - 0xf5, 0xc7, 0xca, 0x0c, - 0xf3, 0x5c, 0xed, 0x49, 0xb8, 0x85, 0xd6, 0x31, 0x7d, 0x72, 0x20, 0xe8, - 0x1d, 0x24, 0x1a, 0x41, - 0x8c, 0x70, 0x41, 0x5e, 0xe0, 0xa0, 0x57, 0xec, 0xcf, 0x48, 0xa6, 0x3c, - 0xe6, 0xc2, 0xa9, 0x96, - 0x18, 0xd5, 0x25, 0x53, 0x69, 0x02, 0x28, 0xa7, 0xa1, 0x5e, 0x65, 0x70, - 0x0e, 0x21, 0x79, 0xdb, - 0x72, 0x28, 0xda, 0x70, 0x50, 0xea, 0x96, 0x95, 0x68, 0x3c, 0x69, 0x57, - 0xd3, 0xcd, 0x0c, 0xfb, - 0xe6, 0x8d, 0xbe, 0x7d, 0xd9, 0x48, 0xe9, 0xde, 0x06, 0x2a, 0xaa, 0x1b, - 0x3b, 0x2e, 0xdc, 0xb6, - 0x99, 0xa1, 0x12, 0x6a, 0x81, 0x6d, 0x68, 0x03, 0xb4, 0x10, 0x2c, 0xcf, - 0xc0, 0xc8, 0x6f, 0x61, - 0x0d, 0x04, 0x76, 0x67, 0x08, 0xcf, 0x17, 0x48, 0xda, 0x06, 0xef, 0x83, - 0x28, 0x2b, 0xbf, 0x2c, - 0x19, 0x5a, 0xa0, 0xfc, 0xb4, 0xcc, 0x2b, 0x5d, 0xca, 0x77, 0x59, 0xcb, - 0x21, 0xfb, 0x1b, 0x7b, - 0x8d, 0xff, 0xc4, 0xf1, 0x3d, 0x6e, 0x54, 0x16, 0xa4, 0x61, 0x9a, 0x87, - 0xc9, 0x18, 0xcb, 0x36, - 0xf2, 0xd3, 0x68, 0xe6, 0x65, 0x4b, 0xd5, 0xcb, 0x16, 0x5b, 0x1c, 0x53, - 0x32, 0xfe, 0x78, 0xe1, - 0x66, 0x76, 0x0c, 0xeb, 0xec, 0xe9, 0xaa, 0x80, 0x78, 0x4d, 0xdf, 0x1f, - 0xda, 0x1d, 0xa8, 0xac, - 0x0c, 0x8b, 0xf3, 0xc8, 0xd5, 0x01, 0x14, 0xb2, 0xb1, 0x2f, 0xd3, 0x38, - 0x07, 0xf1, 0xdd, 0x8c, - 0x98, 0x2e, 0x97, 0xc5, 0x5c, 0xa3, 0x6b, 0xf9, 0xdf, 0x39, 0x10, 0x74, - 0xef, 0x12, 0x0d, 0xc1, - 0xe7, 0x02, 0x3b, 0xd2, 0x04, 0x86, 0xea, 0x24, 0x6d, 0x03, 0x96, 0xa0, - 0x14, 0xf4, 0xbe, 0x16, - 0x73, 0xa7, 0x5f, 0xdf, 0x8d, 0x24, 0x95, 0x6f, 0x03, 0x15, 0x55, 0xec, - 0xfc, 0x17, 0x6e, 0x5b, - 0x33, 0x3b, 0x06, 0x94, 0x76, 0x95, 0x55, 0x40, 0x3c, 0xc7, 0x8e, 0xee, - 0x6d, 0xef, 0x54, 0x56, - 0xa7, 0x9e, 0x62, 0x99, 0xff, 0x37, 0x2a, 0x0b, 0x52, 0xd1, 0x4d, 0xa2, - 0x85, 0x0c, 0x84, 0x1b, - 0xd8, 0xb2, 0xce, 0x8e, 0xa7, 0x12, 0xab, 0xd6, 0xe0, 0xeb, 0xcb, 0x76, - 0x7e, 0xea, 0x37, 0xcc, - 0x4c, 0x17, 0xaa, 0x83, 0x2e, 0xb0, 0xd4, 0x9d, 0x8e, 0xfd, 0x08, 0x3a, - 0x96, 0x09, 0xe7, 0x81, - 0x26, 0xea, 0x55, 0xa0, 0x17, 0x58, 0x6a, 0xaf, 0x47, 0x9f, 0x04, 0x1d, - 0x4b, 0xe5, 0x92, 0xa1, - 0xb2, 0x4f, 0x31, 0xad, 0x9e, 0xfa, 0x15, 0xe4, 0x29, 0x89, 0xc7, 0x51, - 0xa3, 0x06, 0x42, 0xec, - 0xcd, 0x63, 0x9d, 0xba, 0xc6, 0xdf, 0x94, 0x39, 0x9b, 0xb3, 0x41, 0x85, - 0x58, 0xe0, 0xf1, 0x3b, - 0x59, 0xc6, 0xf9, 0xb7, 0x4f, 0x7d, 0xeb, 0x72, 0xf5, 0xa5, 0x82, 0xc9, - 0xb0, 0x03, 0x21, 0x76, - 0x76, 0x51, 0x8b, 0x89, 0xa2, 0x54, 0x9a, 0xfb, 0x07, 0x98, 0x99, 0xfe, - 0x6f, 0x23, 0x47, 0x3e, - 0xe2, 0xf4, 0xef, 0x84, 0x2b, 0xf6, 0xe5, 0xb0, 0x69, 0x8e, 0x5a, 0xb2, - 0x87, 0xc0, 0x97, 0x73, - 0x9d, 0xd8, 0x43, 0x93, 0x73, 0xd3, 0x64, 0x6d, 0xdb, 0xb4, 0xdc, 0x66, - 0x7c, 0x26, 0x24, 0xa4, - 0x09, 0x7d, 0x27, 0x9e, 0xfa, 0x71, 0x1b, 0x26, 0xb5, 0xa2, 0x1f, 0x2a, - 0x94, 0xc5, 0xf4, 0xe9, - 0x63, 0x80, 0xd8, 0xbd, 0xc3, 0x99, 0xa5, 0x14, 0x7c, 0xc0, 0x13, 0x0d, - 0x49, 0x29, 0x81, 0xc9, - 0xf7, 0x25, 0xbc, 0xb0, 0x4a, 0x3b, 0xda, 0x5f, 0x12, 0xd6, 0xd0, 0x41, - 0xa1, 0xca, 0x51, 0x84, - 0x88, 0x09, 0x10, 0xa7, 0x12, 0x1e, 0x5b, 0x82, 0xa0, 0xec, 0x56, 0x95, - 0x5a, 0x2c, 0xe2, 0x53, - 0x1c, 0xac, 0x74, 0xaa, 0x9b, 0xbc, 0x24, 0xc9, 0xce, 0xfa, 0x95, 0xd9, - 0xb2, 0xcf, 0x32, 0x1e, - 0x5c, 0x30, 0x2d, 0xe1, 0x60, 0x0d, 0xe4, 0xe6, 0xf1, 0x28, 0x4e, 0xdb, - 0x23, 0x37, 0x08, 0x13, - 0xc8, 0x95, 0x49, 0xec, 0xe9, 0xaf, 0x9b, 0xad, 0x9f, 0x3e, 0x8d, 0x97, - 0xcb, 0xd4, 0xd8, 0x5e, - 0xb7, 0xb9, 0xe5, 0xfb, 0xb1, 0x8a, 0x1a, 0x70, 0x2d, 0x04, 0x0b, 0x43, - 0x30, 0x32, 0x6b, 0x89, - 0x23, 0x1c, 0x81, 0xf6, 0x38, 0x28, 0x65, 0x3b, 0x43, 0x12, 0xc8, 0x0f, - 0xd8, 0xd1, 0xbb, 0xc4, - 0x49, 0xe1, 0x7e, 0xd5, 0x01, 0xc0, 0xdb, 0x09, 0x8a, 0x70, 0xc4, 0x28, - 0x05, 0x3d, 0xce, 0xe4, - 0xdd, 0x44, 0x1a, 0xd8, 0x88, 0x62, 0xa4, 0x42, 0xe4, 0x66, 0x07, 0x64, - 0xed, 0xde, 0x1e, 0xa9, - 0xa2, 0x68, 0xb6, 0xcf, 0xd0, 0x47, 0x25, 0x9f, 0x56, 0x5c, 0x81, 0xb0, - 0x16, 0x38, 0xad, 0x7e, - 0x36, 0xcd, 0xd2, 0xc2, 0x59, 0xe5, 0x5a, 0xd4, 0x38, 0x4a, 0x42, 0xfc, - 0xfe, 0xdb, 0x7d, 0x33, - 0x22, 0x93, 0x04, 0x59, 0xe5, 0xe6, 0x66, 0xc1, 0x28, 0x3b, 0xf4, 0xb4, - 0xf7, 0x0b, 0xd9, 0x64, - 0xb6, 0x36, 0x60, 0x54, 0x6c, 0x44, 0x19, 0x8a, 0x46, 0x2d, 0x37, 0xf8, - 0x1f, 0xe8, 0x09, 0x29, - 0xc9, 0x1a, 0xcc, 0x43, 0x34, 0x61, 0x98, 0x57, 0xf4, 0x17, 0xb1, 0x2c, - 0xe4, 0x0e, 0xba, 0xfe, - 0x5d, 0xbf, 0xa8, 0x4e, 0xbd, 0xc3, 0xe7, 0x1c, 0x9a, 0x01, 0x72, 0x60, - 0x0c, 0xed, 0x6a, 0xb3, - 0x37, 0x42, 0x57, 0x6d, 0x84, 0x2b, 0x59, 0x2e, 0x53, 0x63, 0x7e, 0x47, - 0xd1, 0x01, 0x1f, 0x93, - 0xa3, 0xe7, 0x33, 0x60, 0x0d, 0x89, 0x26, 0x65, 0x3d, 0x75, 0xbd, 0x0b, - 0x39, 0xe2, 0xcf, 0xde, - 0xdc, 0xcb, 0x9f, 0x77, 0x55, 0xac, 0xa7, 0xb8, 0x8f, 0x4f, 0x3b, 0xdf, - 0xc2, 0x04, 0x7c, 0x09, - 0x48, 0x6e, 0xfb, 0x7a, 0xdc, 0x0e, 0xd8, 0xf3, 0xe1, 0x59, 0xf8, 0x93, - 0x2a, 0xe7, 0xac, 0x44, - 0x08, 0xf2, 0xa2, 0x31, 0x27, 0xbf, 0x18, 0xdc, 0xde, 0x8b, 0x23, 0x91, - 0xbb, 0x1f, 0x96, 0x49, - 0x9c, 0x57, 0xc6, 0x3c, 0xae, 0x1d, 0x67, 0x97, 0xb0, 0x9d, 0xe0, 0xdd, - 0x53, 0xfc, 0x46, 0x04, - 0xe3, 0x7b, 0x6a, 0x2b, 0xf6, 0x38, 0xe6, 0x4a, 0x02, 0xa7, 0x66, 0x09, - 0xa8, 0x1a, 0xf5, 0xd3, - 0x77, 0xde, 0x0e, 0x26, 0x7f, 0x9a, 0x99, 0x01, 0x6c, 0xb1, 0xa5, 0x45, - 0x40, 0xf9, 0x25, 0x9e, - 0x1d, 0x23, 0xf1, 0x05, 0x46, 0x72, 0x27, 0x33, 0xa5, 0xd3, 0xa9, 0x62, - 0x9d, 0x15, 0x50, 0xbe, - 0x89, 0x86, 0x95, 0x08, 0xcf, 0xd0, 0x58, 0x78, 0xcb, 0xc5, 0x6a, 0x2e, - 0x75, 0xf6, 0x80, 0xf3, - 0xf6, 0xaa, 0x39, 0x1f, 0x97, 0xf5, 0xd9, 0xa5, 0x79, 0xff, 0xec, 0xfa, - 0x8e, 0x10, 0x33, 0x24, - 0x62, 0x0f, 0x5d, 0x12, 0x1e, 0x57, 0xa6, 0xee, 0x17, 0xe9, 0x2f, 0xb6, - 0x66, 0xf3, 0xe3, 0x69, - 0xde, 0x16, 0x56, 0xea, 0x2c, 0xf3, 0xa1, 0x8f, 0x59, 0x1d, 0x43, 0x6a, - 0x9c, 0x73, 0xb8, 0x8a, - 0x4a, 0xb3, 0x32, 0xe7, 0xa5, 0x51, 0xde, 0xc4, 0x37, 0x0b, 0x80, 0x26, - 0x74, 0x90, 0x68, 0xc7, - 0x35, 0x9f, 0x9e, 0xf0, 0xfd, 0x74, 0x5f, 0x19, 0x85, 0x31, 0x06, 0xf2, - 0x8f, 0x76, 0xdb, 0x10, - 0xa1, 0x3a, 0xfa, 0xfd, 0x74, 0xd6, 0x20, 0x52, 0xeb, 0x27, 0xc5, 0xbe, - 0x67, 0x95, 0x0b, 0x5d, - 0xcb, 0xc7, 0x05, 0xde, 0x4d, 0x3e, 0x9e, 0x60, 0x22, 0x45, 0xc9, 0x99, - 0xba, 0x79, 0x7e, 0x7d, - 0x5f, 0x62, 0x61, 0xd3, 0xc4, 0x9c, 0xe1, 0x2b, 0x4c, 0x53, 0x0a, 0xd5, - 0x52, 0x9a, 0xae, 0x30, - 0x20, 0x4e, 0xcd, 0xc4, 0x9c, 0xb9, 0x60, 0xf6, 0xfe, 0x69, 0x8c, 0x01, - 0xa9, 0x7c, 0x1d, 0xe7, - 0xb4, 0xeb, 0xa9, 0xc9, 0x15, 0x1b, 0x1f, 0xbd, 0x90, 0x7f, 0x4f, 0x4d, - 0x41, 0x9f, 0xcd, 0xaa, - 0xf4, 0x77, 0xf0, 0x82, 0xee, 0xaa, 0xdf, 0x92, 0xaf, 0xad, 0x94, 0x4f, - 0xd0, 0x67, 0xf7, 0xa7, - 0x60, 0xd2, 0x94, 0x8f, 0x67, 0x08, 0xa0, 0xd9, 0xc1, 0xbb, 0x57, 0x03, - 0x38, 0x84, 0x27, 0xea, - 0x1f, 0xfe, 0x38, 0x98, 0x3f, 0x2d, 0x21, 0x04, 0x73, 0x81, 0xd1, 0xd7, - 0xc3, 0x62, 0x94, 0x3d, - 0x8b, 0x5b, 0x5c, 0x95, 0xb6, 0x8f, 0x5e, 0x4f, 0x1d, 0x97, 0x12, 0x9b, - 0x2b, 0x81, 0x44, 0x70, - 0xe1, 0xa6, 0xa3, 0xb6, 0x8f, 0x67, 0xe0, 0x7d, 0xd4, 0xf5, 0x1e, 0xbc, - 0xf6, 0x6d, 0x31, 0x50, - 0x75, 0x03, 0xc7, 0xbb, 0x06, 0xc5, 0x9f, 0x36, 0xba, 0xe3, 0xdd, 0xf0, - 0x1e, 0x8e, 0xe1, 0x1d, - 0x0a, 0x2f, 0x6b, 0xac, 0x5e, 0xe0, 0x1e, 0xeb, 0x08, 0xd9, 0x5b, 0x24, - 0xe5, 0x68, 0x52, 0xca, - 0x9e, 0x8a, 0x0f, 0xa1, 0xd7, 0x42, 0x61, 0xa0, 0x66, 0xcf, 0x98, 0x68, - 0x0d, 0x8b, 0x82, 0x87, - 0x8a, 0xd4, 0xd9, 0x3a, 0x6b, 0x41, 0x5d, 0xb5, 0x76, 0xbe, 0x2e, 0x20, - 0x04, 0x5b, 0x26, 0xd0, - 0x1e, 0x71, 0xbd, 0x37, 0xe2, 0xe3, 0x22, 0xfe, 0x18, 0xa8, 0xed, 0x6c, - 0xec, 0xb8, 0xf6, 0x9d, - 0x61, 0x5d, 0x11, 0x20, 0xba, 0xc6, 0xa3, 0x23, 0xaa, 0x92, 0x6b, 0xb8, - 0x17, 0x5e, 0x45, 0x4a, - 0xf5, 0xf8, 0x75, 0x2d, 0x33, 0x64, 0xdc, 0x68, 0xc4, 0x84, 0xa8, 0xf4, - 0xff, 0xbd, 0x95, 0x07, - 0x9f, 0x05, 0x8a, 0x0e, 0x0a, 0x8c, 0x62, 0x5a, 0x0d, 0xe6, 0xa4, 0xd3, - 0x22, 0x51, 0xe0, 0x27, - 0x0b, 0xa0, 0xee, 0x03, 0x83, 0x2e, 0x1d, 0x11, 0x63, 0xf0, 0x67, 0x9f, - 0xca, 0xb2, 0x30, 0x6a, - 0x74, 0x8c, 0x42, 0x14, 0xdb, 0x0b, 0x9c, 0xcc, 0xd1, 0xca, 0xe1, 0x4b, - 0x31, 0x54, 0x83, 0xbd, - 0xe0, 0x29, 0x26, 0x19, 0x52, 0xa9, 0xe3, 0x87, 0xbf, 0xdc, 0x22, 0x07, - 0xd9, 0xb7, 0x53, 0xf0, - 0xa0, 0xb5, 0x7f, 0x52, 0xa9, 0x18, 0x23, 0xa8, 0x80, 0x0e, 0xf9, 0x05, - 0x48, 0x4f, 0x69, 0xfd, - 0x34, 0x10, 0x1b, 0x5f, 0x20, 0xba, 0x5c, 0xe3, 0xee, 0x18, 0x3a, 0x49, - 0xa0, 0xac, 0xb9, 0xb0, - 0x4b, 0x3c, 0xb7, 0x48, 0x78, 0x9f, 0xdd, 0x3e, 0x5c, 0x22, 0xbc, 0x9d, - 0x5b, 0x4a, 0x0a, 0x67, - 0xdf, 0x99, 0xd3, 0x45, 0xf1, 0x3d, 0xa2, 0x75, 0x32, 0x34, 0x7f, 0xd1, - 0xb3, 0xa9, 0xda, 0x2a, - 0xb5, 0x64, 0x2c, 0x66, 0xc8, 0xd5, 0x1c, 0x47, 0xfb, 0x56, 0x73, 0xf6, - 0x6e, 0x45, 0xaf, 0x0a, - 0x21, 0xc1, 0x48, 0x6b, 0x41, 0x77, 0x63, 0x0c, 0x95, 0x40, 0xb0, 0xba, - 0x86, 0xa6, 0x7f, 0x47, - 0x5e, 0xed, 0xe4, 0x7c, 0x19, 0x52, 0xe2, 0xd1, 0x27, 0x7a, 0x36, 0x6e, - 0x7d, 0x40, 0xcc, 0x90, - 0xca, 0x48, 0x80, 0x71, 0x90, 0xf0, 0x9d, 0x9a, 0x49, 0x6c, 0xf5, 0x22, - 0x95, 0xa3, 0x1c, 0xdd, - }, - { /* 2 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x20, 0x3c, 0x48, 0xf8, 0x48, 0x48, 0xc8, 0x8e, 0x2a, 0xf5, 0x02, 0xdd, - 0x14, 0x30, 0x44, 0x8e, - 0x40, 0x78, 0x90, 0x33, 0x90, 0x90, 0x53, 0xdf, 0x54, 0x29, 0x04, 0x79, - 0x28, 0x60, 0x88, 0xdf, - 0x60, 0x44, 0xd8, 0xcb, 0xd8, 0xd8, 0x9b, 0x51, 0x7e, 0xdc, 0x06, 0xa4, - 0x3c, 0x50, 0xcc, 0x51, - 0x80, 0xf0, 0xe3, 0x66, 0xe3, 0xe3, 0xa6, 0x7d, 0xa8, 0x52, 0x08, 0xf2, - 0x50, 0xc0, 0xd3, 0x7d, - 0xa0, 0xcc, 0xab, 0x9e, 0xab, 0xab, 0x6e, 0xf3, 0x82, 0xa7, 0x0a, 0x2f, - 0x44, 0xf0, 0x97, 0xf3, - 0xc0, 0x88, 0x73, 0x55, 0x73, 0x73, 0xf5, 0xa2, 0xfc, 0x7b, 0x0c, 0x8b, - 0x78, 0xa0, 0x5b, 0xa2, - 0xe0, 0xb4, 0x3b, 0xad, 0x3b, 0x3b, 0x3d, 0x2c, 0xd6, 0x8e, 0x0e, 0x56, - 0x6c, 0x90, 0x1f, 0x2c, - 0xc3, 0x23, 0x05, 0xcc, 0x05, 0x05, 0x8f, 0xfa, 0x93, 0xa4, 0x10, 0x27, - 0xa0, 0x43, 0x65, 0xfa, - 0xe3, 0x1f, 0x4d, 0x34, 0x4d, 0x4d, 0x47, 0x74, 0xb9, 0x51, 0x12, 0xfa, - 0xb4, 0x73, 0x21, 0x74, - 0x83, 0x5b, 0x95, 0xff, 0x95, 0x95, 0xdc, 0x25, 0xc7, 0x8d, 0x14, 0x5e, - 0x88, 0x23, 0xed, 0x25, - 0xa3, 0x67, 0xdd, 0x07, 0xdd, 0xdd, 0x14, 0xab, 0xed, 0x78, 0x16, 0x83, - 0x9c, 0x13, 0xa9, 0xab, - 0x43, 0xd3, 0xe6, 0xaa, 0xe6, 0xe6, 0x29, 0x87, 0x3b, 0xf6, 0x18, 0xd5, - 0xf0, 0x83, 0xb6, 0x87, - 0x63, 0xef, 0xae, 0x52, 0xae, 0xae, 0xe1, 0x09, 0x11, 0x03, 0x1a, 0x08, - 0xe4, 0xb3, 0xf2, 0x09, - 0x03, 0xab, 0x76, 0x99, 0x76, 0x76, 0x7a, 0x58, 0x6f, 0xdf, 0x1c, 0xac, - 0xd8, 0xe3, 0x3e, 0x58, - 0x23, 0x97, 0x3e, 0x61, 0x3e, 0x3e, 0xb2, 0xd6, 0x45, 0x2a, 0x1e, 0x71, - 0xcc, 0xd3, 0x7a, 0xd6, - 0x45, 0x46, 0x0a, 0x5b, 0x0a, 0x0a, 0xdd, 0x37, 0xe5, 0x8b, 0x20, 0x4e, - 0x83, 0x86, 0xca, 0x37, - 0x65, 0x7a, 0x42, 0xa3, 0x42, 0x42, 0x15, 0xb9, 0xcf, 0x7e, 0x22, 0x93, - 0x97, 0xb6, 0x8e, 0xb9, - 0x05, 0x3e, 0x9a, 0x68, 0x9a, 0x9a, 0x8e, 0xe8, 0xb1, 0xa2, 0x24, 0x37, - 0xab, 0xe6, 0x42, 0xe8, - 0x25, 0x02, 0xd2, 0x90, 0xd2, 0xd2, 0x46, 0x66, 0x9b, 0x57, 0x26, 0xea, - 0xbf, 0xd6, 0x06, 0x66, - 0xc5, 0xb6, 0xe9, 0x3d, 0xe9, 0xe9, 0x7b, 0x4a, 0x4d, 0xd9, 0x28, 0xbc, - 0xd3, 0x46, 0x19, 0x4a, - 0xe5, 0x8a, 0xa1, 0xc5, 0xa1, 0xa1, 0xb3, 0xc4, 0x67, 0x2c, 0x2a, 0x61, - 0xc7, 0x76, 0x5d, 0xc4, - 0x85, 0xce, 0x79, 0x0e, 0x79, 0x79, 0x28, 0x95, 0x19, 0xf0, 0x2c, 0xc5, - 0xfb, 0x26, 0x91, 0x95, - 0xa5, 0xf2, 0x31, 0xf6, 0x31, 0x31, 0xe0, 0x1b, 0x33, 0x05, 0x2e, 0x18, - 0xef, 0x16, 0xd5, 0x1b, - 0x86, 0x65, 0x0f, 0x97, 0x0f, 0x0f, 0x52, 0xcd, 0x76, 0x2f, 0x30, 0x69, - 0x23, 0xc5, 0xaf, 0xcd, - 0xa6, 0x59, 0x47, 0x6f, 0x47, 0x47, 0x9a, 0x43, 0x5c, 0xda, 0x32, 0xb4, - 0x37, 0xf5, 0xeb, 0x43, - 0xc6, 0x1d, 0x9f, 0xa4, 0x9f, 0x9f, 0x01, 0x12, 0x22, 0x06, 0x34, 0x10, - 0x0b, 0xa5, 0x27, 0x12, - 0xe6, 0x21, 0xd7, 0x5c, 0xd7, 0xd7, 0xc9, 0x9c, 0x08, 0xf3, 0x36, 0xcd, - 0x1f, 0x95, 0x63, 0x9c, - 0x06, 0x95, 0xec, 0xf1, 0xec, 0xec, 0xf4, 0xb0, 0xde, 0x7d, 0x38, 0x9b, - 0x73, 0x05, 0x7c, 0xb0, - 0x26, 0xa9, 0xa4, 0x09, 0xa4, 0xa4, 0x3c, 0x3e, 0xf4, 0x88, 0x3a, 0x46, - 0x67, 0x35, 0x38, 0x3e, - 0x46, 0xed, 0x7c, 0xc2, 0x7c, 0x7c, 0xa7, 0x6f, 0x8a, 0x54, 0x3c, 0xe2, - 0x5b, 0x65, 0xf4, 0x6f, - 0x66, 0xd1, 0x34, 0x3a, 0x34, 0x34, 0x6f, 0xe1, 0xa0, 0xa1, 0x3e, 0x3f, - 0x4f, 0x55, 0xb0, 0xe1, - 0x8a, 0x8c, 0x14, 0xb6, 0x14, 0x14, 0x79, 0x6e, 0x09, 0xd5, 0x40, 0x9c, - 0xc5, 0xcf, 0x57, 0x6e, - 0xaa, 0xb0, 0x5c, 0x4e, 0x5c, 0x5c, 0xb1, 0xe0, 0x23, 0x20, 0x42, 0x41, - 0xd1, 0xff, 0x13, 0xe0, - 0xca, 0xf4, 0x84, 0x85, 0x84, 0x84, 0x2a, 0xb1, 0x5d, 0xfc, 0x44, 0xe5, - 0xed, 0xaf, 0xdf, 0xb1, - 0xea, 0xc8, 0xcc, 0x7d, 0xcc, 0xcc, 0xe2, 0x3f, 0x77, 0x09, 0x46, 0x38, - 0xf9, 0x9f, 0x9b, 0x3f, - 0x0a, 0x7c, 0xf7, 0xd0, 0xf7, 0xf7, 0xdf, 0x13, 0xa1, 0x87, 0x48, 0x6e, - 0x95, 0x0f, 0x84, 0x13, - 0x2a, 0x40, 0xbf, 0x28, 0xbf, 0xbf, 0x17, 0x9d, 0x8b, 0x72, 0x4a, 0xb3, - 0x81, 0x3f, 0xc0, 0x9d, - 0x4a, 0x04, 0x67, 0xe3, 0x67, 0x67, 0x8c, 0xcc, 0xf5, 0xae, 0x4c, 0x17, - 0xbd, 0x6f, 0x0c, 0xcc, - 0x6a, 0x38, 0x2f, 0x1b, 0x2f, 0x2f, 0x44, 0x42, 0xdf, 0x5b, 0x4e, 0xca, - 0xa9, 0x5f, 0x48, 0x42, - 0x49, 0xaf, 0x11, 0x7a, 0x11, 0x11, 0xf6, 0x94, 0x9a, 0x71, 0x50, 0xbb, - 0x65, 0x8c, 0x32, 0x94, - 0x69, 0x93, 0x59, 0x82, 0x59, 0x59, 0x3e, 0x1a, 0xb0, 0x84, 0x52, 0x66, - 0x71, 0xbc, 0x76, 0x1a, - 0x09, 0xd7, 0x81, 0x49, 0x81, 0x81, 0xa5, 0x4b, 0xce, 0x58, 0x54, 0xc2, - 0x4d, 0xec, 0xba, 0x4b, - 0x29, 0xeb, 0xc9, 0xb1, 0xc9, 0xc9, 0x6d, 0xc5, 0xe4, 0xad, 0x56, 0x1f, - 0x59, 0xdc, 0xfe, 0xc5, - 0xc9, 0x5f, 0xf2, 0x1c, 0xf2, 0xf2, 0x50, 0xe9, 0x32, 0x23, 0x58, 0x49, - 0x35, 0x4c, 0xe1, 0xe9, - 0xe9, 0x63, 0xba, 0xe4, 0xba, 0xba, 0x98, 0x67, 0x18, 0xd6, 0x5a, 0x94, - 0x21, 0x7c, 0xa5, 0x67, - 0x89, 0x27, 0x62, 0x2f, 0x62, 0x62, 0x03, 0x36, 0x66, 0x0a, 0x5c, 0x30, - 0x1d, 0x2c, 0x69, 0x36, - 0xa9, 0x1b, 0x2a, 0xd7, 0x2a, 0x2a, 0xcb, 0xb8, 0x4c, 0xff, 0x5e, 0xed, - 0x09, 0x1c, 0x2d, 0xb8, - 0xcf, 0xca, 0x1e, 0xed, 0x1e, 0x1e, 0xa4, 0x59, 0xec, 0x5e, 0x60, 0xd2, - 0x46, 0x49, 0x9d, 0x59, - 0xef, 0xf6, 0x56, 0x15, 0x56, 0x56, 0x6c, 0xd7, 0xc6, 0xab, 0x62, 0x0f, - 0x52, 0x79, 0xd9, 0xd7, - 0x8f, 0xb2, 0x8e, 0xde, 0x8e, 0x8e, 0xf7, 0x86, 0xb8, 0x77, 0x64, 0xab, - 0x6e, 0x29, 0x15, 0x86, - 0xaf, 0x8e, 0xc6, 0x26, 0xc6, 0xc6, 0x3f, 0x08, 0x92, 0x82, 0x66, 0x76, - 0x7a, 0x19, 0x51, 0x08, - 0x4f, 0x3a, 0xfd, 0x8b, 0xfd, 0xfd, 0x02, 0x24, 0x44, 0x0c, 0x68, 0x20, - 0x16, 0x89, 0x4e, 0x24, - 0x6f, 0x06, 0xb5, 0x73, 0xb5, 0xb5, 0xca, 0xaa, 0x6e, 0xf9, 0x6a, 0xfd, - 0x02, 0xb9, 0x0a, 0xaa, - 0x0f, 0x42, 0x6d, 0xb8, 0x6d, 0x6d, 0x51, 0xfb, 0x10, 0x25, 0x6c, 0x59, - 0x3e, 0xe9, 0xc6, 0xfb, - 0x2f, 0x7e, 0x25, 0x40, 0x25, 0x25, 0x99, 0x75, 0x3a, 0xd0, 0x6e, 0x84, - 0x2a, 0xd9, 0x82, 0x75, - 0x0c, 0xe9, 0x1b, 0x21, 0x1b, 0x1b, 0x2b, 0xa3, 0x7f, 0xfa, 0x70, 0xf5, - 0xe6, 0x0a, 0xf8, 0xa3, - 0x2c, 0xd5, 0x53, 0xd9, 0x53, 0x53, 0xe3, 0x2d, 0x55, 0x0f, 0x72, 0x28, - 0xf2, 0x3a, 0xbc, 0x2d, - 0x4c, 0x91, 0x8b, 0x12, 0x8b, 0x8b, 0x78, 0x7c, 0x2b, 0xd3, 0x74, 0x8c, - 0xce, 0x6a, 0x70, 0x7c, - 0x6c, 0xad, 0xc3, 0xea, 0xc3, 0xc3, 0xb0, 0xf2, 0x01, 0x26, 0x76, 0x51, - 0xda, 0x5a, 0x34, 0xf2, - 0x8c, 0x19, 0xf8, 0x47, 0xf8, 0xf8, 0x8d, 0xde, 0xd7, 0xa8, 0x78, 0x07, - 0xb6, 0xca, 0x2b, 0xde, - 0xac, 0x25, 0xb0, 0xbf, 0xb0, 0xb0, 0x45, 0x50, 0xfd, 0x5d, 0x7a, 0xda, - 0xa2, 0xfa, 0x6f, 0x50, - 0xcc, 0x61, 0x68, 0x74, 0x68, 0x68, 0xde, 0x01, 0x83, 0x81, 0x7c, 0x7e, - 0x9e, 0xaa, 0xa3, 0x01, - 0xec, 0x5d, 0x20, 0x8c, 0x20, 0x20, 0x16, 0x8f, 0xa9, 0x74, 0x7e, 0xa3, - 0x8a, 0x9a, 0xe7, 0x8f, - 0xd7, 0xdb, 0x28, 0xaf, 0x28, 0x28, 0xf2, 0xdc, 0x12, 0x69, 0x80, 0xfb, - 0x49, 0x5d, 0xae, 0xdc, - 0xf7, 0xe7, 0x60, 0x57, 0x60, 0x60, 0x3a, 0x52, 0x38, 0x9c, 0x82, 0x26, - 0x5d, 0x6d, 0xea, 0x52, - 0x97, 0xa3, 0xb8, 0x9c, 0xb8, 0xb8, 0xa1, 0x03, 0x46, 0x40, 0x84, 0x82, - 0x61, 0x3d, 0x26, 0x03, - 0xb7, 0x9f, 0xf0, 0x64, 0xf0, 0xf0, 0x69, 0x8d, 0x6c, 0xb5, 0x86, 0x5f, - 0x75, 0x0d, 0x62, 0x8d, - 0x57, 0x2b, 0xcb, 0xc9, 0xcb, 0xcb, 0x54, 0xa1, 0xba, 0x3b, 0x88, 0x09, - 0x19, 0x9d, 0x7d, 0xa1, - 0x77, 0x17, 0x83, 0x31, 0x83, 0x83, 0x9c, 0x2f, 0x90, 0xce, 0x8a, 0xd4, - 0x0d, 0xad, 0x39, 0x2f, - 0x17, 0x53, 0x5b, 0xfa, 0x5b, 0x5b, 0x07, 0x7e, 0xee, 0x12, 0x8c, 0x70, - 0x31, 0xfd, 0xf5, 0x7e, - 0x37, 0x6f, 0x13, 0x02, 0x13, 0x13, 0xcf, 0xf0, 0xc4, 0xe7, 0x8e, 0xad, - 0x25, 0xcd, 0xb1, 0xf0, - 0x14, 0xf8, 0x2d, 0x63, 0x2d, 0x2d, 0x7d, 0x26, 0x81, 0xcd, 0x90, 0xdc, - 0xe9, 0x1e, 0xcb, 0x26, - 0x34, 0xc4, 0x65, 0x9b, 0x65, 0x65, 0xb5, 0xa8, 0xab, 0x38, 0x92, 0x01, - 0xfd, 0x2e, 0x8f, 0xa8, - 0x54, 0x80, 0xbd, 0x50, 0xbd, 0xbd, 0x2e, 0xf9, 0xd5, 0xe4, 0x94, 0xa5, - 0xc1, 0x7e, 0x43, 0xf9, - 0x74, 0xbc, 0xf5, 0xa8, 0xf5, 0xf5, 0xe6, 0x77, 0xff, 0x11, 0x96, 0x78, - 0xd5, 0x4e, 0x07, 0x77, - 0x94, 0x08, 0xce, 0x05, 0xce, 0xce, 0xdb, 0x5b, 0x29, 0x9f, 0x98, 0x2e, - 0xb9, 0xde, 0x18, 0x5b, - 0xb4, 0x34, 0x86, 0xfd, 0x86, 0x86, 0x13, 0xd5, 0x03, 0x6a, 0x9a, 0xf3, - 0xad, 0xee, 0x5c, 0xd5, - 0xd4, 0x70, 0x5e, 0x36, 0x5e, 0x5e, 0x88, 0x84, 0x7d, 0xb6, 0x9c, 0x57, - 0x91, 0xbe, 0x90, 0x84, - 0xf4, 0x4c, 0x16, 0xce, 0x16, 0x16, 0x40, 0x0a, 0x57, 0x43, 0x9e, 0x8a, - 0x85, 0x8e, 0xd4, 0x0a, - 0x92, 0x9d, 0x22, 0xf4, 0x22, 0x22, 0x2f, 0xeb, 0xf7, 0xe2, 0xa0, 0xb5, - 0xca, 0xdb, 0x64, 0xeb, - 0xb2, 0xa1, 0x6a, 0x0c, 0x6a, 0x6a, 0xe7, 0x65, 0xdd, 0x17, 0xa2, 0x68, - 0xde, 0xeb, 0x20, 0x65, - 0xd2, 0xe5, 0xb2, 0xc7, 0xb2, 0xb2, 0x7c, 0x34, 0xa3, 0xcb, 0xa4, 0xcc, - 0xe2, 0xbb, 0xec, 0x34, - 0xf2, 0xd9, 0xfa, 0x3f, 0xfa, 0xfa, 0xb4, 0xba, 0x89, 0x3e, 0xa6, 0x11, - 0xf6, 0x8b, 0xa8, 0xba, - 0x12, 0x6d, 0xc1, 0x92, 0xc1, 0xc1, 0x89, 0x96, 0x5f, 0xb0, 0xa8, 0x47, - 0x9a, 0x1b, 0xb7, 0x96, - 0x32, 0x51, 0x89, 0x6a, 0x89, 0x89, 0x41, 0x18, 0x75, 0x45, 0xaa, 0x9a, - 0x8e, 0x2b, 0xf3, 0x18, - 0x52, 0x15, 0x51, 0xa1, 0x51, 0x51, 0xda, 0x49, 0x0b, 0x99, 0xac, 0x3e, - 0xb2, 0x7b, 0x3f, 0x49, - 0x72, 0x29, 0x19, 0x59, 0x19, 0x19, 0x12, 0xc7, 0x21, 0x6c, 0xae, 0xe3, - 0xa6, 0x4b, 0x7b, 0xc7, - 0x51, 0xbe, 0x27, 0x38, 0x27, 0x27, 0xa0, 0x11, 0x64, 0x46, 0xb0, 0x92, - 0x6a, 0x98, 0x01, 0x11, - 0x71, 0x82, 0x6f, 0xc0, 0x6f, 0x6f, 0x68, 0x9f, 0x4e, 0xb3, 0xb2, 0x4f, - 0x7e, 0xa8, 0x45, 0x9f, - 0x11, 0xc6, 0xb7, 0x0b, 0xb7, 0xb7, 0xf3, 0xce, 0x30, 0x6f, 0xb4, 0xeb, - 0x42, 0xf8, 0x89, 0xce, - 0x31, 0xfa, 0xff, 0xf3, 0xff, 0xff, 0x3b, 0x40, 0x1a, 0x9a, 0xb6, 0x36, - 0x56, 0xc8, 0xcd, 0x40, - 0xd1, 0x4e, 0xc4, 0x5e, 0xc4, 0xc4, 0x06, 0x6c, 0xcc, 0x14, 0xb8, 0x60, - 0x3a, 0x58, 0xd2, 0x6c, - 0xf1, 0x72, 0x8c, 0xa6, 0x8c, 0x8c, 0xce, 0xe2, 0xe6, 0xe1, 0xba, 0xbd, - 0x2e, 0x68, 0x96, 0xe2, - 0x91, 0x36, 0x54, 0x6d, 0x54, 0x54, 0x55, 0xb3, 0x98, 0x3d, 0xbc, 0x19, - 0x12, 0x38, 0x5a, 0xb3, - 0xb1, 0x0a, 0x1c, 0x95, 0x1c, 0x1c, 0x9d, 0x3d, 0xb2, 0xc8, 0xbe, 0xc4, - 0x06, 0x08, 0x1e, 0x3d, - 0x5d, 0x57, 0x3c, 0x19, 0x3c, 0x3c, 0x8b, 0xb2, 0x1b, 0xbc, 0xc0, 0x67, - 0x8c, 0x92, 0xf9, 0xb2, - 0x7d, 0x6b, 0x74, 0xe1, 0x74, 0x74, 0x43, 0x3c, 0x31, 0x49, 0xc2, 0xba, - 0x98, 0xa2, 0xbd, 0x3c, - 0x1d, 0x2f, 0xac, 0x2a, 0xac, 0xac, 0xd8, 0x6d, 0x4f, 0x95, 0xc4, 0x1e, - 0xa4, 0xf2, 0x71, 0x6d, - 0x3d, 0x13, 0xe4, 0xd2, 0xe4, 0xe4, 0x10, 0xe3, 0x65, 0x60, 0xc6, 0xc3, - 0xb0, 0xc2, 0x35, 0xe3, - 0xdd, 0xa7, 0xdf, 0x7f, 0xdf, 0xdf, 0x2d, 0xcf, 0xb3, 0xee, 0xc8, 0x95, - 0xdc, 0x52, 0x2a, 0xcf, - 0xfd, 0x9b, 0x97, 0x87, 0x97, 0x97, 0xe5, 0x41, 0x99, 0x1b, 0xca, 0x48, - 0xc8, 0x62, 0x6e, 0x41, - 0x9d, 0xdf, 0x4f, 0x4c, 0x4f, 0x4f, 0x7e, 0x10, 0xe7, 0xc7, 0xcc, 0xec, - 0xf4, 0x32, 0xa2, 0x10, - 0xbd, 0xe3, 0x07, 0xb4, 0x07, 0x07, 0xb6, 0x9e, 0xcd, 0x32, 0xce, 0x31, - 0xe0, 0x02, 0xe6, 0x9e, - 0x9e, 0x74, 0x39, 0xd5, 0x39, 0x39, 0x04, 0x48, 0x88, 0x18, 0xd0, 0x40, - 0x2c, 0xd1, 0x9c, 0x48, - 0xbe, 0x48, 0x71, 0x2d, 0x71, 0x71, 0xcc, 0xc6, 0xa2, 0xed, 0xd2, 0x9d, - 0x38, 0xe1, 0xd8, 0xc6, - 0xde, 0x0c, 0xa9, 0xe6, 0xa9, 0xa9, 0x57, 0x97, 0xdc, 0x31, 0xd4, 0x39, - 0x04, 0xb1, 0x14, 0x97, - 0xfe, 0x30, 0xe1, 0x1e, 0xe1, 0xe1, 0x9f, 0x19, 0xf6, 0xc4, 0xd6, 0xe4, - 0x10, 0x81, 0x50, 0x19, - 0x1e, 0x84, 0xda, 0xb3, 0xda, 0xda, 0xa2, 0x35, 0x20, 0x4a, 0xd8, 0xb2, - 0x7c, 0x11, 0x4f, 0x35, - 0x3e, 0xb8, 0x92, 0x4b, 0x92, 0x92, 0x6a, 0xbb, 0x0a, 0xbf, 0xda, 0x6f, - 0x68, 0x21, 0x0b, 0xbb, - 0x5e, 0xfc, 0x4a, 0x80, 0x4a, 0x4a, 0xf1, 0xea, 0x74, 0x63, 0xdc, 0xcb, - 0x54, 0x71, 0xc7, 0xea, - 0x7e, 0xc0, 0x02, 0x78, 0x02, 0x02, 0x39, 0x64, 0x5e, 0x96, 0xde, 0x16, - 0x40, 0x41, 0x83, 0x64, - 0x18, 0x11, 0x36, 0x42, 0x36, 0x36, 0x56, 0x85, 0xfe, 0x37, 0xe0, 0x29, - 0x0f, 0x14, 0x33, 0x85, - 0x38, 0x2d, 0x7e, 0xba, 0x7e, 0x7e, 0x9e, 0x0b, 0xd4, 0xc2, 0xe2, 0xf4, - 0x1b, 0x24, 0x77, 0x0b, - 0x58, 0x69, 0xa6, 0x71, 0xa6, 0xa6, 0x05, 0x5a, 0xaa, 0x1e, 0xe4, 0x50, - 0x27, 0x74, 0xbb, 0x5a, - 0x78, 0x55, 0xee, 0x89, 0xee, 0xee, 0xcd, 0xd4, 0x80, 0xeb, 0xe6, 0x8d, - 0x33, 0x44, 0xff, 0xd4, - 0x98, 0xe1, 0xd5, 0x24, 0xd5, 0xd5, 0xf0, 0xf8, 0x56, 0x65, 0xe8, 0xdb, - 0x5f, 0xd4, 0xe0, 0xf8, - 0xb8, 0xdd, 0x9d, 0xdc, 0x9d, 0x9d, 0x38, 0x76, 0x7c, 0x90, 0xea, 0x06, - 0x4b, 0xe4, 0xa4, 0x76, - 0xd8, 0x99, 0x45, 0x17, 0x45, 0x45, 0xa3, 0x27, 0x02, 0x4c, 0xec, 0xa2, - 0x77, 0xb4, 0x68, 0x27, - 0xf8, 0xa5, 0x0d, 0xef, 0x0d, 0x0d, 0x6b, 0xa9, 0x28, 0xb9, 0xee, 0x7f, - 0x63, 0x84, 0x2c, 0xa9, - 0xdb, 0x32, 0x33, 0x8e, 0x33, 0x33, 0xd9, 0x7f, 0x6d, 0x93, 0xf0, 0x0e, - 0xaf, 0x57, 0x56, 0x7f, - 0xfb, 0x0e, 0x7b, 0x76, 0x7b, 0x7b, 0x11, 0xf1, 0x47, 0x66, 0xf2, 0xd3, - 0xbb, 0x67, 0x12, 0xf1, - 0x9b, 0x4a, 0xa3, 0xbd, 0xa3, 0xa3, 0x8a, 0xa0, 0x39, 0xba, 0xf4, 0x77, - 0x87, 0x37, 0xde, 0xa0, - 0xbb, 0x76, 0xeb, 0x45, 0xeb, 0xeb, 0x42, 0x2e, 0x13, 0x4f, 0xf6, 0xaa, - 0x93, 0x07, 0x9a, 0x2e, - 0x5b, 0xc2, 0xd0, 0xe8, 0xd0, 0xd0, 0x7f, 0x02, 0xc5, 0xc1, 0xf8, 0xfc, - 0xff, 0x97, 0x85, 0x02, - 0x7b, 0xfe, 0x98, 0x10, 0x98, 0x98, 0xb7, 0x8c, 0xef, 0x34, 0xfa, 0x21, - 0xeb, 0xa7, 0xc1, 0x8c, - 0x1b, 0xba, 0x40, 0xdb, 0x40, 0x40, 0x2c, 0xdd, 0x91, 0xe8, 0xfc, 0x85, - 0xd7, 0xf7, 0x0d, 0xdd, - 0x3b, 0x86, 0x08, 0x23, 0x08, 0x08, 0xe4, 0x53, 0xbb, 0x1d, 0xfe, 0x58, - 0xc3, 0xc7, 0x49, 0x53, - 0x6d, 0x75, 0x50, 0x9d, 0x50, 0x50, 0x27, 0x7b, 0x24, 0xd2, 0xc3, 0x35, - 0x92, 0xba, 0x9f, 0x7b, - 0x4d, 0x49, 0x18, 0x65, 0x18, 0x18, 0xef, 0xf5, 0x0e, 0x27, 0xc1, 0xe8, - 0x86, 0x8a, 0xdb, 0xf5, - 0x2d, 0x0d, 0xc0, 0xae, 0xc0, 0xc0, 0x74, 0xa4, 0x70, 0xfb, 0xc7, 0x4c, - 0xba, 0xda, 0x17, 0xa4, - 0x0d, 0x31, 0x88, 0x56, 0x88, 0x88, 0xbc, 0x2a, 0x5a, 0x0e, 0xc5, 0x91, - 0xae, 0xea, 0x53, 0x2a, - 0xed, 0x85, 0xb3, 0xfb, 0xb3, 0xb3, 0x81, 0x06, 0x8c, 0x80, 0xcb, 0xc7, - 0xc2, 0x7a, 0x4c, 0x06, - 0xcd, 0xb9, 0xfb, 0x03, 0xfb, 0xfb, 0x49, 0x88, 0xa6, 0x75, 0xc9, 0x1a, - 0xd6, 0x4a, 0x08, 0x88, - 0xad, 0xfd, 0x23, 0xc8, 0x23, 0x23, 0xd2, 0xd9, 0xd8, 0xa9, 0xcf, 0xbe, - 0xea, 0x1a, 0xc4, 0xd9, - 0x8d, 0xc1, 0x6b, 0x30, 0x6b, 0x6b, 0x1a, 0x57, 0xf2, 0x5c, 0xcd, 0x63, - 0xfe, 0x2a, 0x80, 0x57, - 0xae, 0x56, 0x55, 0x51, 0x55, 0x55, 0xa8, 0x81, 0xb7, 0x76, 0xd3, 0x12, - 0x32, 0xf9, 0xfa, 0x81, - 0x8e, 0x6a, 0x1d, 0xa9, 0x1d, 0x1d, 0x60, 0x0f, 0x9d, 0x83, 0xd1, 0xcf, - 0x26, 0xc9, 0xbe, 0x0f, - 0xee, 0x2e, 0xc5, 0x62, 0xc5, 0xc5, 0xfb, 0x5e, 0xe3, 0x5f, 0xd7, 0x6b, - 0x1a, 0x99, 0x72, 0x5e, - 0xce, 0x12, 0x8d, 0x9a, 0x8d, 0x8d, 0x33, 0xd0, 0xc9, 0xaa, 0xd5, 0xb6, - 0x0e, 0xa9, 0x36, 0xd0, - 0x2e, 0xa6, 0xb6, 0x37, 0xb6, 0xb6, 0x0e, 0xfc, 0x1f, 0x24, 0xdb, 0xe0, - 0x62, 0x39, 0x29, 0xfc, - 0x0e, 0x9a, 0xfe, 0xcf, 0xfe, 0xfe, 0xc6, 0x72, 0x35, 0xd1, 0xd9, 0x3d, - 0x76, 0x09, 0x6d, 0x72, - 0x6e, 0xde, 0x26, 0x04, 0x26, 0x26, 0x5d, 0x23, 0x4b, 0x0d, 0xdf, 0x99, - 0x4a, 0x59, 0xa1, 0x23, - 0x4e, 0xe2, 0x6e, 0xfc, 0x6e, 0x6e, 0x95, 0xad, 0x61, 0xf8, 0xdd, 0x44, - 0x5e, 0x69, 0xe5, 0xad, - 0x28, 0x33, 0x5a, 0xc6, 0x5a, 0x5a, 0xfa, 0x4c, 0xc1, 0x59, 0xe3, 0x7b, - 0x11, 0x3c, 0x55, 0x4c, - 0x08, 0x0f, 0x12, 0x3e, 0x12, 0x12, 0x32, 0xc2, 0xeb, 0xac, 0xe1, 0xa6, - 0x05, 0x0c, 0x11, 0xc2, - 0x68, 0x4b, 0xca, 0xf5, 0xca, 0xca, 0xa9, 0x93, 0x95, 0x70, 0xe7, 0x02, - 0x39, 0x5c, 0xdd, 0x93, - 0x48, 0x77, 0x82, 0x0d, 0x82, 0x82, 0x61, 0x1d, 0xbf, 0x85, 0xe5, 0xdf, - 0x2d, 0x6c, 0x99, 0x1d, - 0xa8, 0xc3, 0xb9, 0xa0, 0xb9, 0xb9, 0x5c, 0x31, 0x69, 0x0b, 0xeb, 0x89, - 0x41, 0xfc, 0x86, 0x31, - 0x88, 0xff, 0xf1, 0x58, 0xf1, 0xf1, 0x94, 0xbf, 0x43, 0xfe, 0xe9, 0x54, - 0x55, 0xcc, 0xc2, 0xbf, - 0xe8, 0xbb, 0x29, 0x93, 0x29, 0x29, 0x0f, 0xee, 0x3d, 0x22, 0xef, 0xf0, - 0x69, 0x9c, 0x0e, 0xee, - 0xc8, 0x87, 0x61, 0x6b, 0x61, 0x61, 0xc7, 0x60, 0x17, 0xd7, 0xed, 0x2d, - 0x7d, 0xac, 0x4a, 0x60, - 0xeb, 0x10, 0x5f, 0x0a, 0x5f, 0x5f, 0x75, 0xb6, 0x52, 0xfd, 0xf3, 0x5c, - 0xb1, 0x7f, 0x30, 0xb6, - 0xcb, 0x2c, 0x17, 0xf2, 0x17, 0x17, 0xbd, 0x38, 0x78, 0x08, 0xf1, 0x81, - 0xa5, 0x4f, 0x74, 0x38, - 0xab, 0x68, 0xcf, 0x39, 0xcf, 0xcf, 0x26, 0x69, 0x06, 0xd4, 0xf7, 0x25, - 0x99, 0x1f, 0xb8, 0x69, - 0x8b, 0x54, 0x87, 0xc1, 0x87, 0x87, 0xee, 0xe7, 0x2c, 0x21, 0xf5, 0xf8, - 0x8d, 0x2f, 0xfc, 0xe7, - 0x6b, 0xe0, 0xbc, 0x6c, 0xbc, 0xbc, 0xd3, 0xcb, 0xfa, 0xaf, 0xfb, 0xae, - 0xe1, 0xbf, 0xe3, 0xcb, - 0x4b, 0xdc, 0xf4, 0x94, 0xf4, 0xf4, 0x1b, 0x45, 0xd0, 0x5a, 0xf9, 0x73, - 0xf5, 0x8f, 0xa7, 0x45, - 0x2b, 0x98, 0x2c, 0x5f, 0x2c, 0x2c, 0x80, 0x14, 0xae, 0x86, 0xff, 0xd7, - 0xc9, 0xdf, 0x6b, 0x14, - 0x0b, 0xa4, 0x64, 0xa7, 0x64, 0x64, 0x48, 0x9a, 0x84, 0x73, 0xfd, 0x0a, - 0xdd, 0xef, 0x2f, 0x9a, - 0xe7, 0xf9, 0x44, 0x2b, 0x44, 0x44, 0x5e, 0x15, 0x2d, 0x07, 0x83, 0xa9, - 0x57, 0x75, 0xc8, 0x15, - 0xc7, 0xc5, 0x0c, 0xd3, 0x0c, 0x0c, 0x96, 0x9b, 0x07, 0xf2, 0x81, 0x74, - 0x43, 0x45, 0x8c, 0x9b, - 0xa7, 0x81, 0xd4, 0x18, 0xd4, 0xd4, 0x0d, 0xca, 0x79, 0x2e, 0x87, 0xd0, - 0x7f, 0x15, 0x40, 0xca, - 0x87, 0xbd, 0x9c, 0xe0, 0x9c, 0x9c, 0xc5, 0x44, 0x53, 0xdb, 0x85, 0x0d, - 0x6b, 0x25, 0x04, 0x44, - 0x67, 0x09, 0xa7, 0x4d, 0xa7, 0xa7, 0xf8, 0x68, 0x85, 0x55, 0x8b, 0x5b, - 0x07, 0xb5, 0x1b, 0x68, - 0x47, 0x35, 0xef, 0xb5, 0xef, 0xef, 0x30, 0xe6, 0xaf, 0xa0, 0x89, 0x86, - 0x13, 0x85, 0x5f, 0xe6, - 0x27, 0x71, 0x37, 0x7e, 0x37, 0x37, 0xab, 0xb7, 0xd1, 0x7c, 0x8f, 0x22, - 0x2f, 0xd5, 0x93, 0xb7, - 0x07, 0x4d, 0x7f, 0x86, 0x7f, 0x7f, 0x63, 0x39, 0xfb, 0x89, 0x8d, 0xff, - 0x3b, 0xe5, 0xd7, 0x39, - 0x24, 0xda, 0x41, 0xe7, 0x41, 0x41, 0xd1, 0xef, 0xbe, 0xa3, 0x93, 0x8e, - 0xf7, 0x36, 0xad, 0xef, - 0x04, 0xe6, 0x09, 0x1f, 0x09, 0x09, 0x19, 0x61, 0x94, 0x56, 0x91, 0x53, - 0xe3, 0x06, 0xe9, 0x61, - 0x64, 0xa2, 0xd1, 0xd4, 0xd1, 0xd1, 0x82, 0x30, 0xea, 0x8a, 0x97, 0xf7, - 0xdf, 0x56, 0x25, 0x30, - 0x44, 0x9e, 0x99, 0x2c, 0x99, 0x99, 0x4a, 0xbe, 0xc0, 0x7f, 0x95, 0x2a, - 0xcb, 0x66, 0x61, 0xbe, - 0xa4, 0x2a, 0xa2, 0x81, 0xa2, 0xa2, 0x77, 0x92, 0x16, 0xf1, 0x9b, 0x7c, - 0xa7, 0xf6, 0x7e, 0x92, - 0x84, 0x16, 0xea, 0x79, 0xea, 0xea, 0xbf, 0x1c, 0x3c, 0x04, 0x99, 0xa1, - 0xb3, 0xc6, 0x3a, 0x1c, - 0xe4, 0x52, 0x32, 0xb2, 0x32, 0x32, 0x24, 0x4d, 0x42, 0xd8, 0x9f, 0x05, - 0x8f, 0x96, 0xf6, 0x4d, - 0xc4, 0x6e, 0x7a, 0x4a, 0x7a, 0x7a, 0xec, 0xc3, 0x68, 0x2d, 0x9d, 0xd8, - 0x9b, 0xa6, 0xb2, 0xc3, - 0xa2, 0xbf, 0x4e, 0x70, 0x4e, 0x4e, 0x83, 0x22, 0xc8, 0x8c, 0xa3, 0xe7, - 0xd4, 0xf3, 0x02, 0x22, - 0x82, 0x83, 0x06, 0x88, 0x06, 0x06, 0x4b, 0xac, 0xe2, 0x79, 0xa1, 0x3a, - 0xc0, 0xc3, 0x46, 0xac, - 0xe2, 0xc7, 0xde, 0x43, 0xde, 0xde, 0xd0, 0xfd, 0x9c, 0xa5, 0xa7, 0x9e, - 0xfc, 0x93, 0x8a, 0xfd, - 0xc2, 0xfb, 0x96, 0xbb, 0x96, 0x96, 0x18, 0x73, 0xb6, 0x50, 0xa5, 0x43, - 0xe8, 0xa3, 0xce, 0x73, - 0x22, 0x4f, 0xad, 0x16, 0xad, 0xad, 0x25, 0x5f, 0x60, 0xde, 0xab, 0x15, - 0x84, 0x33, 0xd1, 0x5f, - 0x02, 0x73, 0xe5, 0xee, 0xe5, 0xe5, 0xed, 0xd1, 0x4a, 0x2b, 0xa9, 0xc8, - 0x90, 0x03, 0x95, 0xd1, - 0x62, 0x37, 0x3d, 0x25, 0x3d, 0x3d, 0x76, 0x80, 0x34, 0xf7, 0xaf, 0x6c, - 0xac, 0x53, 0x59, 0x80, - 0x42, 0x0b, 0x75, 0xdd, 0x75, 0x75, 0xbe, 0x0e, 0x1e, 0x02, 0xad, 0xb1, - 0xb8, 0x63, 0x1d, 0x0e, - 0x61, 0x9c, 0x4b, 0xbc, 0x4b, 0x4b, 0x0c, 0xd8, 0x5b, 0x28, 0xb3, 0xc0, - 0x74, 0xb0, 0x67, 0xd8, - 0x41, 0xa0, 0x03, 0x44, 0x03, 0x03, 0xc4, 0x56, 0x71, 0xdd, 0xb1, 0x1d, - 0x60, 0x80, 0x23, 0x56, - 0x21, 0xe4, 0xdb, 0x8f, 0xdb, 0xdb, 0x5f, 0x07, 0x0f, 0x01, 0xb7, 0xb9, - 0x5c, 0xd0, 0xef, 0x07, - 0x01, 0xd8, 0x93, 0x77, 0x93, 0x93, 0x97, 0x89, 0x25, 0xf4, 0xb5, 0x64, - 0x48, 0xe0, 0xab, 0x89, - 0xe1, 0x6c, 0xa8, 0xda, 0xa8, 0xa8, 0xaa, 0xa5, 0xf3, 0x7a, 0xbb, 0x32, - 0x24, 0x70, 0xb4, 0xa5, - 0xc1, 0x50, 0xe0, 0x22, 0xe0, 0xe0, 0x62, 0x2b, 0xd9, 0x8f, 0xb9, 0xef, - 0x30, 0x40, 0xf0, 0x2b, - 0xa1, 0x14, 0x38, 0xe9, 0x38, 0x38, 0xf9, 0x7a, 0xa7, 0x53, 0xbf, 0x4b, - 0x0c, 0x10, 0x3c, 0x7a, - 0x81, 0x28, 0x70, 0x11, 0x70, 0x70, 0x31, 0xf4, 0x8d, 0xa6, 0xbd, 0x96, - 0x18, 0x20, 0x78, 0xf4, - 0xba, 0xae, 0x78, 0x32, 0x78, 0x78, 0xd5, 0xa7, 0x36, 0xbb, 0x43, 0xce, - 0xdb, 0xe7, 0x31, 0xa7, - 0x9a, 0x92, 0x30, 0xca, 0x30, 0x30, 0x1d, 0x29, 0x1c, 0x4e, 0x41, 0x13, - 0xcf, 0xd7, 0x75, 0x29, - 0xfa, 0xd6, 0xe8, 0x01, 0xe8, 0xe8, 0x86, 0x78, 0x62, 0x92, 0x47, 0xb7, - 0xf3, 0x87, 0xb9, 0x78, - 0xda, 0xea, 0xa0, 0xf9, 0xa0, 0xa0, 0x4e, 0xf6, 0x48, 0x67, 0x45, 0x6a, - 0xe7, 0xb7, 0xfd, 0xf6, - 0x3a, 0x5e, 0x9b, 0x54, 0x9b, 0x9b, 0x73, 0xda, 0x9e, 0xe9, 0x4b, 0x3c, - 0x8b, 0x27, 0xe2, 0xda, - 0x1a, 0x62, 0xd3, 0xac, 0xd3, 0xd3, 0xbb, 0x54, 0xb4, 0x1c, 0x49, 0xe1, - 0x9f, 0x17, 0xa6, 0x54, - 0x7a, 0x26, 0x0b, 0x67, 0x0b, 0x0b, 0x20, 0x05, 0xca, 0xc0, 0x4f, 0x45, - 0xa3, 0x47, 0x6a, 0x05, - 0x5a, 0x1a, 0x43, 0x9f, 0x43, 0x43, 0xe8, 0x8b, 0xe0, 0x35, 0x4d, 0x98, - 0xb7, 0x77, 0x2e, 0x8b, - 0x79, 0x8d, 0x7d, 0xfe, 0x7d, 0x7d, 0x5a, 0x5d, 0xa5, 0x1f, 0x53, 0xe9, - 0x7b, 0xa4, 0x54, 0x5d, - 0x59, 0xb1, 0x35, 0x06, 0x35, 0x35, 0x92, 0xd3, 0x8f, 0xea, 0x51, 0x34, - 0x6f, 0x94, 0x10, 0xd3, - 0x39, 0xf5, 0xed, 0xcd, 0xed, 0xed, 0x09, 0x82, 0xf1, 0x36, 0x57, 0x90, - 0x53, 0xc4, 0xdc, 0x82, - 0x19, 0xc9, 0xa5, 0x35, 0xa5, 0xa5, 0xc1, 0x0c, 0xdb, 0xc3, 0x55, 0x4d, - 0x47, 0xf4, 0x98, 0x0c, - 0xf9, 0x7d, 0x9e, 0x98, 0x9e, 0x9e, 0xfc, 0x20, 0x0d, 0x4d, 0x5b, 0x1b, - 0x2b, 0x64, 0x87, 0x20, - 0xd9, 0x41, 0xd6, 0x60, 0xd6, 0xd6, 0x34, 0xae, 0x27, 0xb8, 0x59, 0xc6, - 0x3f, 0x54, 0xc3, 0xae, - 0xb9, 0x05, 0x0e, 0xab, 0x0e, 0x0e, 0xaf, 0xff, 0x59, 0x64, 0x5f, 0x62, - 0x03, 0x04, 0x0f, 0xff, - 0x99, 0x39, 0x46, 0x53, 0x46, 0x46, 0x67, 0x71, 0x73, 0x91, 0x5d, 0xbf, - 0x17, 0x34, 0x4b, 0x71, - 0xff, 0xe8, 0x72, 0x69, 0x72, 0x72, 0x08, 0x90, 0xd3, 0x30, 0x63, 0x80, - 0x58, 0x61, 0xfb, 0x90, - 0xdf, 0xd4, 0x3a, 0x91, 0x3a, 0x3a, 0xc0, 0x1e, 0xf9, 0xc5, 0x61, 0x5d, - 0x4c, 0x51, 0xbf, 0x1e, - 0xbf, 0x90, 0xe2, 0x5a, 0xe2, 0xe2, 0x5b, 0x4f, 0x87, 0x19, 0x67, 0xf9, - 0x70, 0x01, 0x73, 0x4f, - 0x9f, 0xac, 0xaa, 0xa2, 0xaa, 0xaa, 0x93, 0xc1, 0xad, 0xec, 0x65, 0x24, - 0x64, 0x31, 0x37, 0xc1, - 0x7f, 0x18, 0x91, 0x0f, 0x91, 0x91, 0xae, 0xed, 0x7b, 0x62, 0x6b, 0x72, - 0x08, 0xa1, 0x28, 0xed, - 0x5f, 0x24, 0xd9, 0xf7, 0xd9, 0xd9, 0x66, 0x63, 0x51, 0x97, 0x69, 0xaf, - 0x1c, 0x91, 0x6c, 0x63, - 0x3f, 0x60, 0x01, 0x3c, 0x01, 0x01, 0xfd, 0x32, 0x2f, 0x4b, 0x6f, 0x0b, - 0x20, 0xc1, 0xa0, 0x32, - 0x1f, 0x5c, 0x49, 0xc4, 0x49, 0x49, 0x35, 0xbc, 0x05, 0xbe, 0x6d, 0xd6, - 0x34, 0xf1, 0xe4, 0xbc, - 0x3c, 0xcb, 0x77, 0xa5, 0x77, 0x77, 0x87, 0x6a, 0x40, 0x94, 0x73, 0xa7, - 0xf8, 0x22, 0x9e, 0x6a, - 0x1c, 0xf7, 0x3f, 0x5d, 0x3f, 0x3f, 0x4f, 0xe4, 0x6a, 0x61, 0x71, 0x7a, - 0xec, 0x12, 0xda, 0xe4, - 0x7c, 0xb3, 0xe7, 0x96, 0xe7, 0xe7, 0xd4, 0xb5, 0x14, 0xbd, 0x77, 0xde, - 0xd0, 0x42, 0x16, 0xb5, - 0x5c, 0x8f, 0xaf, 0x6e, 0xaf, 0xaf, 0x1c, 0x3b, 0x3e, 0x48, 0x75, 0x03, - 0xc4, 0x72, 0x52, 0x3b, - 0xbc, 0x3b, 0x94, 0xc3, 0x94, 0x94, 0x21, 0x17, 0xe8, 0xc6, 0x7b, 0x55, - 0xa8, 0xe2, 0x4d, 0x17, - 0x9c, 0x07, 0xdc, 0x3b, 0xdc, 0xdc, 0xe9, 0x99, 0xc2, 0x33, 0x79, 0x88, - 0xbc, 0xd2, 0x09, 0x99, - 0xfc, 0x43, 0x04, 0xf0, 0x04, 0x04, 0x72, 0xc8, 0xbc, 0xef, 0x7f, 0x2c, - 0x80, 0x82, 0xc5, 0xc8, - 0xdc, 0x7f, 0x4c, 0x08, 0x4c, 0x4c, 0xba, 0x46, 0x96, 0x1a, 0x7d, 0xf1, - 0x94, 0xb2, 0x81, 0x46, - 0x30, 0x22, 0x6c, 0x84, 0x6c, 0x6c, 0xac, 0xc9, 0x3f, 0x6e, 0x03, 0x52, - 0x1e, 0x28, 0x66, 0xc9, - 0x10, 0x1e, 0x24, 0x7c, 0x24, 0x24, 0x64, 0x47, 0x15, 0x9b, 0x01, 0x8f, - 0x0a, 0x18, 0x22, 0x47, - 0x70, 0x5a, 0xfc, 0xb7, 0xfc, 0xfc, 0xff, 0x16, 0x6b, 0x47, 0x07, 0x2b, - 0x36, 0x48, 0xee, 0x16, - 0x50, 0x66, 0xb4, 0x4f, 0xb4, 0xb4, 0x37, 0x98, 0x41, 0xb2, 0x05, 0xf6, - 0x22, 0x78, 0xaa, 0x98, - 0xb0, 0xd2, 0x8f, 0xe2, 0x8f, 0x8f, 0x0a, 0xb4, 0x97, 0x3c, 0x0b, 0xa0, - 0x4e, 0xe8, 0xb5, 0xb4, - 0x90, 0xee, 0xc7, 0x1a, 0xc7, 0xc7, 0xc2, 0x3a, 0xbd, 0xc9, 0x09, 0x7d, - 0x5a, 0xd8, 0xf1, 0x3a, - 0xf0, 0xaa, 0x1f, 0xd1, 0x1f, 0x1f, 0x59, 0x6b, 0xc3, 0x15, 0x0f, 0xd9, - 0x66, 0x88, 0x3d, 0x6b, - 0xd0, 0x96, 0x57, 0x29, 0x57, 0x57, 0x91, 0xe5, 0xe9, 0xe0, 0x0d, 0x04, - 0x72, 0xb8, 0x79, 0xe5, - 0xf3, 0x01, 0x69, 0x48, 0x69, 0x69, 0x23, 0x33, 0xac, 0xca, 0x13, 0x75, - 0xbe, 0x6b, 0x03, 0x33, - 0xd3, 0x3d, 0x21, 0xb0, 0x21, 0x21, 0xeb, 0xbd, 0x86, 0x3f, 0x11, 0xa8, - 0xaa, 0x5b, 0x47, 0xbd, - 0xb3, 0x79, 0xf9, 0x7b, 0xf9, 0xf9, 0x70, 0xec, 0xf8, 0xe3, 0x17, 0x0c, - 0x96, 0x0b, 0x8b, 0xec, - 0x93, 0x45, 0xb1, 0x83, 0xb1, 0xb1, 0xb8, 0x62, 0xd2, 0x16, 0x15, 0xd1, - 0x82, 0x3b, 0xcf, 0x62, - 0x73, 0xf1, 0x8a, 0x2e, 0x8a, 0x8a, 0x85, 0x4e, 0x04, 0x98, 0x1b, 0x87, - 0xee, 0xab, 0xd0, 0x4e, - 0x53, 0xcd, 0xc2, 0xd6, 0xc2, 0xc2, 0x4d, 0xc0, 0x2e, 0x6d, 0x19, 0x5a, - 0xfa, 0x9b, 0x94, 0xc0, - 0x33, 0x89, 0x1a, 0x1d, 0x1a, 0x1a, 0xd6, 0x91, 0x50, 0xb1, 0x1f, 0xfe, - 0xc6, 0xcb, 0x58, 0x91, - 0x13, 0xb5, 0x52, 0xe5, 0x52, 0x52, 0x1e, 0x1f, 0x7a, 0x44, 0x1d, 0x23, - 0xd2, 0xfb, 0x1c, 0x1f, - 0x75, 0x64, 0x66, 0xdf, 0x66, 0x66, 0x71, 0xfe, 0xda, 0xe5, 0x23, 0x1c, - 0x9d, 0xae, 0xac, 0xfe, - 0x55, 0x58, 0x2e, 0x27, 0x2e, 0x2e, 0xb9, 0x70, 0xf0, 0x10, 0x21, 0xc1, - 0x89, 0x9e, 0xe8, 0x70, - 0x35, 0x1c, 0xf6, 0xec, 0xf6, 0xf6, 0x22, 0x21, 0x8e, 0xcc, 0x27, 0x65, - 0xb5, 0xce, 0x24, 0x21, - 0x15, 0x20, 0xbe, 0x14, 0xbe, 0xbe, 0xea, 0xaf, 0xa4, 0x39, 0x25, 0xb8, - 0xa1, 0xfe, 0x60, 0xaf, - 0xf5, 0x94, 0x85, 0xb9, 0x85, 0x85, 0xd7, 0x83, 0x72, 0xb7, 0x2b, 0xee, - 0xcd, 0x6e, 0x7f, 0x83, - 0xd5, 0xa8, 0xcd, 0x41, 0xcd, 0xcd, 0x1f, 0x0d, 0x58, 0x42, 0x29, 0x33, - 0xd9, 0x5e, 0x3b, 0x0d, - 0xb5, 0xec, 0x15, 0x8a, 0x15, 0x15, 0x84, 0x5c, 0x26, 0x9e, 0x2f, 0x97, - 0xe5, 0x0e, 0xf7, 0x5c, - 0x95, 0xd0, 0x5d, 0x72, 0x5d, 0x5d, 0x4c, 0xd2, 0x0c, 0x6b, 0x2d, 0x4a, - 0xf1, 0x3e, 0xb3, 0xd2, - 0xb6, 0x47, 0x63, 0x13, 0x63, 0x63, 0xfe, 0x04, 0x49, 0x41, 0x33, 0x3b, - 0x3d, 0xed, 0xc9, 0x04, - 0x96, 0x7b, 0x2b, 0xeb, 0x2b, 0x2b, 0x36, 0x8a, 0x63, 0xb4, 0x31, 0xe6, - 0x29, 0xdd, 0x8d, 0x8a, - 0xf6, 0x3f, 0xf3, 0x20, 0xf3, 0xf3, 0xad, 0xdb, 0x1d, 0x68, 0x37, 0x42, - 0x15, 0x8d, 0x41, 0xdb, - 0xd6, 0x03, 0xbb, 0xd8, 0xbb, 0xbb, 0x65, 0x55, 0x37, 0x9d, 0x35, 0x9f, - 0x01, 0xbd, 0x05, 0x55, - 0x36, 0xb7, 0x80, 0x75, 0x80, 0x80, 0x58, 0x79, 0xe1, 0x13, 0x3b, 0xc9, - 0x6d, 0x2d, 0x1a, 0x79, - 0x16, 0x8b, 0xc8, 0x8d, 0xc8, 0xc8, 0x90, 0xf7, 0xcb, 0xe6, 0x39, 0x14, - 0x79, 0x1d, 0x5e, 0xf7, - 0x76, 0xcf, 0x10, 0x46, 0x10, 0x10, 0x0b, 0xa6, 0xb5, 0x3a, 0x3f, 0xb0, - 0x45, 0x4d, 0x92, 0xa6, - 0x56, 0xf3, 0x58, 0xbe, 0x58, 0x58, 0xc3, 0x28, 0x9f, 0xcf, 0x3d, 0x6d, - 0x51, 0x7d, 0xd6, 0x28, - }, - { /* 3 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x85, 0x44, 0xdf, 0x52, 0x7f, 0xc6, 0x98, 0x60, 0xd4, 0x52, 0x0e, 0x65, - 0x07, 0x9f, 0x86, 0xea, - 0xc9, 0x88, 0x7d, 0xa4, 0xfe, 0x4f, 0xf3, 0xc0, 0x6b, 0xa4, 0x1c, 0xca, - 0x0e, 0xfd, 0xcf, 0x17, - 0x4c, 0xcc, 0xa2, 0xf6, 0x81, 0x89, 0x6b, 0xa0, 0xbf, 0xf6, 0x12, 0xaf, - 0x09, 0x62, 0x49, 0xfd, - 0x51, 0xd3, 0xfa, 0x8b, 0x3f, 0x9e, 0x25, 0x43, 0xd6, 0x8b, 0x38, 0x57, - 0x1c, 0x39, 0x5d, 0x2e, - 0xd4, 0x97, 0x25, 0xd9, 0x40, 0x58, 0xbd, 0x23, 0x02, 0xd9, 0x36, 0x32, - 0x1b, 0xa6, 0xdb, 0xc4, - 0x98, 0x5b, 0x87, 0x2f, 0xc1, 0xd1, 0xd6, 0x83, 0xbd, 0x2f, 0x24, 0x9d, - 0x12, 0xc4, 0x92, 0x39, - 0x1d, 0x1f, 0x58, 0x7d, 0xbe, 0x17, 0x4e, 0xe3, 0x69, 0x7d, 0x2a, 0xf8, - 0x15, 0x5b, 0x14, 0xd3, - 0xa2, 0x65, 0x37, 0xd5, 0x7e, 0xff, 0x4a, 0x86, 0x6f, 0xd5, 0x70, 0xae, - 0x38, 0x72, 0xba, 0x5c, - 0x27, 0x21, 0xe8, 0x87, 0x01, 0x39, 0xd2, 0xe6, 0xbb, 0x87, 0x7e, 0xcb, - 0x3f, 0xed, 0x3c, 0xb6, - 0x6b, 0xed, 0x4a, 0x71, 0x80, 0xb0, 0xb9, 0x46, 0x04, 0x71, 0x6c, 0x64, - 0x36, 0x8f, 0x75, 0x4b, - 0xee, 0xa9, 0x95, 0x23, 0xff, 0x76, 0x21, 0x26, 0xd0, 0x23, 0x62, 0x01, - 0x31, 0x10, 0xf3, 0xa1, - 0xf3, 0xb6, 0xcd, 0x5e, 0x41, 0x61, 0x6f, 0xc5, 0xb9, 0x5e, 0x48, 0xf9, - 0x24, 0x4b, 0xe7, 0x72, - 0x76, 0xf2, 0x12, 0x0c, 0x3e, 0xa7, 0xf7, 0xa5, 0x6d, 0x0c, 0x46, 0x9c, - 0x23, 0xd4, 0x61, 0x98, - 0x3a, 0x3e, 0xb0, 0xfa, 0xbf, 0x2e, 0x9c, 0x05, 0xd2, 0xfa, 0x54, 0x33, - 0x2a, 0xb6, 0x28, 0x65, - 0xbf, 0x7a, 0x6f, 0xa8, 0xc0, 0xe8, 0x04, 0x65, 0x06, 0xa8, 0x5a, 0x56, - 0x2d, 0x29, 0xae, 0x8f, - 0x87, 0xca, 0x6e, 0x69, 0xfc, 0x3d, 0x94, 0xcf, 0xde, 0x69, 0xe0, 0x9f, - 0x70, 0xe4, 0xb7, 0xb8, - 0x02, 0x8e, 0xb1, 0x3b, 0x83, 0xfb, 0x0c, 0xaf, 0x0a, 0x3b, 0xee, 0xfa, - 0x77, 0x7b, 0x31, 0x52, - 0x4e, 0x42, 0x13, 0xcd, 0x02, 0x72, 0x67, 0x0f, 0xb5, 0xcd, 0xfc, 0x55, - 0x7e, 0x19, 0x78, 0xaf, - 0xcb, 0x06, 0xcc, 0x9f, 0x7d, 0xb4, 0xff, 0x6f, 0x61, 0x9f, 0xf2, 0x30, - 0x79, 0x86, 0xfe, 0x45, - 0xd6, 0x19, 0x94, 0xe2, 0xc3, 0xa3, 0xb1, 0x8c, 0x08, 0xe2, 0xd8, 0xc8, - 0x6c, 0xdd, 0xea, 0x96, - 0x53, 0x5d, 0x4b, 0xb0, 0xbc, 0x65, 0x29, 0xec, 0xdc, 0xb0, 0xd6, 0xad, - 0x6b, 0x42, 0x6c, 0x7c, - 0x1f, 0x91, 0xe9, 0x46, 0x3d, 0xec, 0x42, 0x4c, 0x63, 0x46, 0xc4, 0x02, - 0x62, 0x20, 0x25, 0x81, - 0x9a, 0xd5, 0x36, 0x14, 0x42, 0x2a, 0xda, 0x2c, 0xb7, 0x14, 0xca, 0x67, - 0x65, 0xbf, 0xa3, 0x6b, - 0x25, 0xaf, 0x59, 0xbc, 0x82, 0xc2, 0xde, 0x49, 0xb1, 0xbc, 0x90, 0x31, - 0x48, 0x96, 0x0d, 0xe4, - 0xa0, 0xeb, 0x86, 0xee, 0xfd, 0x04, 0x46, 0x29, 0x65, 0xee, 0x9e, 0x54, - 0x4f, 0x09, 0x8b, 0x0e, - 0xec, 0x27, 0x24, 0x18, 0x7c, 0x8d, 0x2d, 0x89, 0xda, 0x18, 0x8c, 0xfb, - 0x46, 0x6b, 0xc2, 0xf3, - 0x69, 0x63, 0xfb, 0x4a, 0x03, 0x4b, 0xb5, 0xe9, 0x0e, 0x4a, 0x82, 0x9e, - 0x41, 0xf4, 0x44, 0x19, - 0x74, 0x7c, 0xa3, 0x37, 0xbd, 0x5c, 0xfb, 0x0a, 0x67, 0x37, 0xa8, 0x66, - 0x54, 0xaf, 0x50, 0xca, - 0xf1, 0x38, 0x7c, 0x65, 0xc2, 0x9a, 0x63, 0x6a, 0xb3, 0x65, 0xa6, 0x03, - 0x53, 0x30, 0xd6, 0x20, - 0xbd, 0xf4, 0xde, 0x93, 0x43, 0x13, 0x08, 0xca, 0x0c, 0x93, 0xb4, 0xac, - 0x5a, 0x52, 0x9f, 0xdd, - 0x38, 0xb0, 0x01, 0xc1, 0x3c, 0xd5, 0x90, 0xaa, 0xd8, 0xc1, 0xba, 0xc9, - 0x5d, 0xcd, 0x19, 0x37, - 0xcd, 0x57, 0xdc, 0xd2, 0x3b, 0x7a, 0xeb, 0x5d, 0x7f, 0xd2, 0x03, 0xfd, - 0xe0, 0x0b, 0xad, 0xb3, - 0x48, 0x13, 0x03, 0x80, 0x44, 0xbc, 0x73, 0x3d, 0xab, 0x80, 0x0d, 0x98, - 0xe7, 0x94, 0x2b, 0x59, - 0x04, 0xdf, 0xa1, 0x76, 0xc5, 0x35, 0x18, 0x9d, 0x14, 0x76, 0x1f, 0x37, - 0xee, 0xf6, 0x62, 0xa4, - 0x81, 0x9b, 0x7e, 0x24, 0xba, 0xf3, 0x80, 0xfd, 0xc0, 0x24, 0x11, 0x52, - 0xe9, 0x69, 0xe4, 0x4e, - 0x9c, 0x84, 0x26, 0x59, 0x04, 0xe4, 0xce, 0x1e, 0xa9, 0x59, 0x3b, 0xaa, - 0xfc, 0x32, 0xf0, 0x9d, - 0x19, 0xc0, 0xf9, 0x0b, 0x7b, 0x22, 0x56, 0x7e, 0x7d, 0x0b, 0x35, 0xcf, - 0xfb, 0xad, 0x76, 0x77, - 0x55, 0x0c, 0x5b, 0xfd, 0xfa, 0xab, 0x3d, 0xde, 0xc2, 0xfd, 0x27, 0x60, - 0xf2, 0xcf, 0x3f, 0x8a, - 0xd0, 0x48, 0x84, 0xaf, 0x85, 0x6d, 0xa5, 0xbe, 0x16, 0xaf, 0x29, 0x05, - 0xf5, 0x50, 0xb9, 0x60, - 0x6f, 0x32, 0xeb, 0x07, 0x45, 0x85, 0xa1, 0xdb, 0x10, 0x07, 0x73, 0x53, - 0xd8, 0x79, 0x17, 0xef, - 0xea, 0x76, 0x34, 0x55, 0x3a, 0x43, 0x39, 0xbb, 0xc4, 0x55, 0x7d, 0x36, - 0xdf, 0xe6, 0x91, 0x05, - 0xa6, 0xba, 0x96, 0xa3, 0xbb, 0xca, 0x52, 0x1b, 0x7b, 0xa3, 0x6f, 0x99, - 0xd6, 0x84, 0xd8, 0xf8, - 0x23, 0xfe, 0x49, 0xf1, 0xc4, 0x0c, 0xca, 0x7b, 0xaf, 0xf1, 0x61, 0xfc, - 0xd1, 0x1b, 0x5e, 0x12, - 0x3e, 0xe1, 0x11, 0x8c, 0x7a, 0x1b, 0x84, 0x98, 0xc6, 0x8c, 0x4b, 0x04, - 0xc4, 0x40, 0x4a, 0xc1, - 0xbb, 0xa5, 0xce, 0xde, 0x05, 0xdd, 0x1c, 0xf8, 0x12, 0xde, 0x45, 0x61, - 0xc3, 0xdf, 0xcc, 0x2b, - 0xf7, 0x69, 0x6c, 0x28, 0x84, 0x54, 0x77, 0x58, 0xad, 0x28, 0x57, 0xce, - 0xca, 0xbd, 0x85, 0xd6, - 0x72, 0x2d, 0xb3, 0x7a, 0xfb, 0x92, 0xef, 0x38, 0x79, 0x7a, 0x59, 0xab, - 0xcd, 0x22, 0x03, 0x3c, - 0x4a, 0x9d, 0xb2, 0xbb, 0xc7, 0x47, 0x7f, 0x92, 0xa1, 0xbb, 0xe3, 0x62, - 0x90, 0xef, 0x1a, 0x0b, - 0xcf, 0xd9, 0x6d, 0xe9, 0xb8, 0x81, 0xe7, 0xf2, 0x75, 0xe9, 0xed, 0x07, - 0x97, 0x70, 0x9c, 0xe1, - 0x83, 0x15, 0xcf, 0x1f, 0x39, 0x08, 0x8c, 0x52, 0xca, 0x1f, 0xff, 0xa8, - 0x9e, 0x12, 0xd5, 0x1c, - 0x06, 0x51, 0x10, 0x4d, 0x46, 0xce, 0x14, 0x32, 0x1e, 0x4d, 0xf1, 0xcd, - 0x99, 0x8d, 0x53, 0xf6, - 0x1b, 0x4e, 0x48, 0x30, 0xf8, 0xd9, 0x5a, 0xd1, 0x77, 0x30, 0xdb, 0x35, - 0x8c, 0xd6, 0x47, 0x25, - 0x9e, 0x0a, 0x97, 0x62, 0x87, 0x1f, 0xc2, 0xb1, 0xa3, 0x62, 0xd5, 0x50, - 0x8b, 0x49, 0xc1, 0xcf, - 0xd2, 0xc6, 0x35, 0x94, 0x06, 0x96, 0xa9, 0x11, 0x1c, 0x94, 0xc7, 0xff, - 0x82, 0x2b, 0x88, 0x32, - 0x57, 0x82, 0xea, 0xc6, 0x79, 0x50, 0x31, 0x71, 0xc8, 0xc6, 0xc9, 0x9a, - 0x85, 0xb4, 0x0e, 0xd8, - 0xe8, 0xf8, 0x85, 0x6e, 0xb9, 0xb8, 0x35, 0x14, 0xce, 0x6e, 0x93, 0xcc, - 0xa8, 0x9d, 0xa0, 0x57, - 0x6d, 0xbc, 0x5a, 0x3c, 0xc6, 0x7e, 0xad, 0x74, 0x1a, 0x3c, 0x9d, 0xa9, - 0xaf, 0x02, 0x26, 0xbd, - 0x21, 0x70, 0xf8, 0xca, 0x47, 0xf7, 0xc6, 0xd4, 0xa5, 0xca, 0x8f, 0x06, - 0xa6, 0x60, 0x6f, 0x40, - 0xa4, 0x34, 0x27, 0x98, 0x38, 0x31, 0x5e, 0xb4, 0x71, 0x98, 0x81, 0x63, - 0xa1, 0xff, 0xe9, 0xaa, - 0xb9, 0x2b, 0x7f, 0xe5, 0x86, 0x26, 0x10, 0x57, 0x18, 0xe5, 0xab, 0x9b, - 0xb4, 0xa4, 0xfd, 0x79, - 0x3c, 0x6f, 0xa0, 0xb7, 0xf9, 0xe0, 0x88, 0x37, 0xcc, 0xb7, 0xa5, 0xfe, - 0xb3, 0x3b, 0x7b, 0x93, - 0x70, 0xa3, 0x02, 0x41, 0x78, 0x69, 0xe3, 0x97, 0x73, 0x41, 0xb7, 0x51, - 0xba, 0x59, 0x32, 0x6e, - 0xf5, 0xe7, 0xdd, 0x13, 0x07, 0xaf, 0x7b, 0xf7, 0xa7, 0x13, 0xb9, 0x34, - 0xbd, 0xc6, 0xb4, 0x84, - 0x59, 0xae, 0x7b, 0x67, 0x76, 0xf4, 0x15, 0xba, 0xfe, 0x67, 0x06, 0x39, - 0x03, 0x16, 0x99, 0xa5, - 0xdc, 0xea, 0xa4, 0x35, 0x09, 0x32, 0x8d, 0xda, 0x2a, 0x35, 0x08, 0x5c, - 0x04, 0x89, 0x1f, 0x4f, - 0x90, 0x26, 0x06, 0xc3, 0x88, 0xbb, 0xe6, 0x7a, 0x95, 0xc3, 0x1a, 0xf3, - 0x0d, 0xeb, 0x56, 0xb2, - 0x15, 0x62, 0xd9, 0x91, 0xf7, 0x7d, 0x7e, 0x1a, 0x41, 0x91, 0x14, 0x96, - 0x0a, 0x74, 0xd0, 0x58, - 0x08, 0x7d, 0x81, 0xec, 0x49, 0x6a, 0x30, 0xf9, 0x28, 0xec, 0x3e, 0x6e, - 0x1f, 0x2f, 0xc4, 0x8b, - 0x8d, 0x39, 0x5e, 0xbe, 0x36, 0xac, 0xa8, 0x99, 0xfc, 0xbe, 0x30, 0x0b, - 0x18, 0xb0, 0x42, 0x61, - 0xc1, 0xf5, 0xfc, 0x48, 0xb7, 0x25, 0xc3, 0x39, 0x43, 0x48, 0x22, 0xa4, - 0x11, 0xd2, 0x0b, 0x9c, - 0x44, 0xb1, 0x23, 0x1a, 0xc8, 0xe3, 0x5b, 0x59, 0x97, 0x1a, 0x2c, 0xc1, - 0x16, 0x4d, 0x8d, 0x76, - 0xfb, 0xcb, 0x4c, 0xb2, 0x08, 0x0b, 0x5f, 0x3c, 0x91, 0xb2, 0x76, 0x97, - 0x3b, 0x64, 0x23, 0xf9, - 0x7e, 0x8f, 0x93, 0xe0, 0x77, 0xcd, 0xc7, 0x5c, 0x45, 0xe0, 0x78, 0xf2, - 0x3c, 0xfb, 0xa5, 0x13, - 0x32, 0x43, 0x31, 0x16, 0xf6, 0x44, 0xac, 0xfc, 0xfa, 0x16, 0x6a, 0x5d, - 0x35, 0x99, 0xec, 0xee, - 0xb7, 0x07, 0xee, 0x44, 0x89, 0x82, 0x34, 0x9c, 0x2e, 0x44, 0x64, 0x38, - 0x32, 0x06, 0x6a, 0x04, - 0xaa, 0x18, 0xb6, 0x39, 0x37, 0x95, 0x7a, 0x7f, 0x47, 0x39, 0x4e, 0xc0, - 0x27, 0x5d, 0x7e, 0xd7, - 0x2f, 0x5c, 0x69, 0x6b, 0x48, 0x53, 0xe2, 0x1f, 0x93, 0x6b, 0x40, 0xa5, - 0x20, 0xc2, 0xf8, 0x3d, - 0x63, 0x90, 0xcb, 0x9d, 0xc9, 0xda, 0x89, 0xbf, 0x2c, 0x9d, 0x52, 0x0a, - 0x29, 0xa0, 0xb1, 0xc0, - 0xe6, 0xd4, 0x14, 0xcf, 0xb6, 0x1c, 0x11, 0xdf, 0xf8, 0xcf, 0x5c, 0x6f, - 0x2e, 0x3f, 0x37, 0x2a, - 0xde, 0x64, 0x15, 0x0e, 0x8a, 0xc9, 0x81, 0x75, 0x20, 0x0e, 0xe6, 0xa6, - 0x73, 0xf2, 0x2e, 0x1d, - 0x5b, 0x20, 0xca, 0x5c, 0xf5, 0x0f, 0x19, 0x15, 0xf4, 0x5c, 0xe8, 0xc3, - 0x74, 0x6d, 0xa8, 0xf7, - 0x17, 0xec, 0x68, 0xaa, 0x74, 0x86, 0x72, 0xb5, 0x4b, 0xaa, 0xfa, 0x6c, - 0x7d, 0x0f, 0xe1, 0x0a, - 0x92, 0xa8, 0xb7, 0xf8, 0x0b, 0x40, 0xea, 0xd5, 0x9f, 0xf8, 0xf4, 0x09, - 0x7a, 0x90, 0x67, 0xe0, - 0x8f, 0xb7, 0xef, 0x85, 0xb5, 0x57, 0xa4, 0x36, 0xf6, 0x85, 0xde, 0xf1, - 0x6f, 0xcb, 0x73, 0x33, - 0x0a, 0xf3, 0x30, 0xd7, 0xca, 0x91, 0x3c, 0x56, 0x22, 0xd7, 0xd0, 0x94, - 0x68, 0x54, 0xf5, 0xd9, - 0x46, 0x3f, 0x92, 0x21, 0x4b, 0x18, 0x57, 0xf6, 0x9d, 0x21, 0xc2, 0x3b, - 0x61, 0x36, 0xbc, 0x24, - 0xc3, 0x7b, 0x4d, 0x73, 0x34, 0xde, 0xcf, 0x96, 0x49, 0x73, 0xcc, 0x5e, - 0x66, 0xa9, 0x3a, 0xce, - 0x7c, 0x01, 0x22, 0xdb, 0xf4, 0x36, 0xcb, 0xf3, 0x4f, 0xdb, 0x96, 0x08, - 0x4b, 0x80, 0x94, 0x41, - 0xf9, 0x45, 0xfd, 0x89, 0x8b, 0xf0, 0x53, 0x93, 0x9b, 0x89, 0x98, 0x6d, - 0x4c, 0x1f, 0x12, 0xab, - 0xb5, 0x89, 0x5f, 0x7f, 0x0a, 0x79, 0x38, 0x33, 0x24, 0x7f, 0x8a, 0xc2, - 0x45, 0x7d, 0x5b, 0x56, - 0x30, 0xcd, 0x80, 0x2d, 0x75, 0xbf, 0xa0, 0x53, 0xf0, 0x2d, 0x84, 0xa7, - 0x42, 0xe2, 0xdd, 0xbc, - 0x2d, 0xd2, 0xd8, 0x50, 0xcb, 0xa8, 0xee, 0xb0, 0x99, 0x50, 0xae, 0x5f, - 0x57, 0xb9, 0xc9, 0x6f, - 0xa8, 0x96, 0x07, 0x02, 0xb4, 0x6e, 0x76, 0xd0, 0x4d, 0x02, 0xa0, 0x3a, - 0x50, 0x26, 0x4f, 0x85, - 0xe4, 0x5a, 0xa5, 0xf4, 0x35, 0xe7, 0x1d, 0x70, 0xf2, 0xf4, 0xb2, 0x95, - 0x59, 0x44, 0x06, 0x78, - 0x61, 0x1e, 0x7a, 0xa6, 0x4a, 0x21, 0x85, 0x10, 0x26, 0xa6, 0xbc, 0xf0, - 0x5e, 0xdb, 0x80, 0x92, - 0x94, 0xf9, 0xa7, 0xb5, 0x4d, 0x8e, 0xfe, 0xe7, 0x81, 0xb5, 0x05, 0xc4, - 0xe3, 0x1d, 0x34, 0x16, - 0x11, 0xbd, 0x78, 0xe7, 0x32, 0x48, 0x66, 0x87, 0x55, 0xe7, 0x0b, 0xa1, - 0xe4, 0x82, 0xb2, 0xfc, - 0x5d, 0x71, 0xda, 0x11, 0xb3, 0xc1, 0x0d, 0x27, 0xea, 0x11, 0x19, 0x0e, - 0xed, 0xe0, 0xfb, 0x01, - 0xd8, 0x35, 0x05, 0x43, 0xcc, 0x07, 0x95, 0x47, 0x3e, 0x43, 0x17, 0x6b, - 0xea, 0x7f, 0x7d, 0xeb, - 0xc5, 0x2a, 0x5d, 0x3e, 0x72, 0x10, 0xdb, 0xa4, 0x57, 0x3e, 0x3d, 0x93, - 0xff, 0x24, 0x69, 0x38, - 0x40, 0x6e, 0x82, 0x6c, 0x0d, 0xd6, 0x43, 0xc4, 0x83, 0x6c, 0x33, 0xf6, - 0xf8, 0xbb, 0xef, 0xd2, - 0x0c, 0xa2, 0x20, 0x9a, 0x8c, 0x5f, 0x28, 0x64, 0x3c, 0x9a, 0x21, 0x59, - 0xf1, 0xd9, 0xa6, 0x2f, - 0x89, 0xe6, 0xff, 0xc8, 0xf3, 0x99, 0xb0, 0x04, 0xe8, 0xc8, 0x2f, 0x3c, - 0xf6, 0x46, 0x20, 0xc5, - 0x36, 0x9c, 0x90, 0x60, 0x33, 0x71, 0xb4, 0x61, 0xee, 0x60, 0x75, 0x6a, - 0xdb, 0x6f, 0x8e, 0x4a, - 0xb3, 0xd8, 0x4f, 0x32, 0x4c, 0xb7, 0x2c, 0x01, 0x3a, 0x32, 0x7b, 0x0f, - 0xdc, 0xf0, 0x08, 0xa0, - 0xff, 0x14, 0xed, 0xc4, 0xcd, 0x3e, 0x47, 0xa1, 0x85, 0xc4, 0x69, 0xa0, - 0xd5, 0x92, 0x41, 0x5d, - 0x7a, 0x50, 0x32, 0x96, 0xb2, 0xf8, 0xdf, 0xc1, 0x51, 0x96, 0x67, 0xc5, - 0xd2, 0x0d, 0xc7, 0xb7, - 0x67, 0x4f, 0x6a, 0xeb, 0x0c, 0xef, 0x91, 0x22, 0x38, 0xeb, 0x4d, 0x3d, - 0xc7, 0x56, 0xd3, 0x64, - 0xe2, 0x0b, 0xb5, 0xb9, 0x73, 0x29, 0x09, 0x42, 0xec, 0xb9, 0x43, 0x58, - 0xc0, 0xc9, 0x55, 0x8e, - 0xae, 0xc7, 0x17, 0x4f, 0xf2, 0xa0, 0x62, 0xe2, 0x53, 0x4f, 0x51, 0xf7, - 0xc9, 0xab, 0x1c, 0x73, - 0x2b, 0x83, 0xc8, 0x1d, 0x8d, 0x66, 0xfa, 0x82, 0x87, 0x1d, 0x5f, 0x92, - 0xce, 0x34, 0x9a, 0x99, - 0x13, 0x33, 0xc9, 0xdc, 0xb1, 0xb3, 0x6a, 0x28, 0x5f, 0xdc, 0xe5, 0x5b, - 0x93, 0xf9, 0x83, 0xae, - 0x96, 0x77, 0x16, 0x8e, 0xce, 0x75, 0xf2, 0x48, 0x8b, 0x8e, 0xeb, 0x3e, - 0x94, 0x66, 0x05, 0x44, - 0xda, 0xbb, 0xb4, 0x78, 0x4f, 0xfc, 0x99, 0xe8, 0x34, 0x78, 0xf9, 0x91, - 0x9d, 0x04, 0x4c, 0xb9, - 0x5f, 0xff, 0x6b, 0x2a, 0x30, 0x3a, 0x01, 0x88, 0xe0, 0x2a, 0xf7, 0xf4, - 0x9a, 0x9b, 0xca, 0x53, - 0x42, 0xe0, 0x33, 0x57, 0x8e, 0x2d, 0x4f, 0x6b, 0x89, 0x57, 0xdd, 0x0c, - 0x8f, 0xc0, 0xde, 0x80, - 0xc7, 0xa4, 0xec, 0x05, 0xf1, 0xeb, 0xd7, 0x0b, 0x5d, 0x05, 0xd3, 0x69, - 0x88, 0x5f, 0x58, 0x6a, - 0x8b, 0x68, 0x4e, 0xf3, 0x70, 0x62, 0xbc, 0xab, 0xe2, 0xf3, 0xc1, 0xc6, - 0x81, 0x3d, 0x11, 0x97, - 0x0e, 0x2c, 0x91, 0xa1, 0x0f, 0xa4, 0x24, 0xcb, 0x36, 0xa1, 0xcf, 0xa3, - 0x86, 0xa2, 0x97, 0x7d, - 0xb1, 0x56, 0xfe, 0x09, 0xcf, 0x4c, 0x20, 0xae, 0x30, 0x09, 0x95, 0xf5, - 0xab, 0x8b, 0x39, 0xf2, - 0x34, 0x12, 0x21, 0x5b, 0xb0, 0x8a, 0xb8, 0xce, 0xe4, 0x5b, 0x9b, 0x90, - 0xac, 0x14, 0xbf, 0x18, - 0x78, 0xde, 0x83, 0xad, 0x31, 0x03, 0xd3, 0x6e, 0x5b, 0xad, 0x89, 0x3f, - 0xa5, 0x76, 0xf6, 0xe5, - 0xfd, 0x9a, 0x5c, 0xff, 0x4e, 0xc5, 0x4b, 0x0e, 0x8f, 0xff, 0x87, 0x5a, - 0xa2, 0xe9, 0x70, 0x0f, - 0xe0, 0x85, 0x04, 0x82, 0xf0, 0xd2, 0x05, 0xed, 0xe6, 0x82, 0xad, 0xa2, - 0xb7, 0xb2, 0x64, 0xdc, - 0x65, 0xc1, 0xdb, 0xd0, 0x8f, 0x14, 0x9d, 0x8d, 0x32, 0xd0, 0xa3, 0xc7, - 0xb0, 0x2d, 0xe2, 0x36, - 0x29, 0x0d, 0x79, 0x26, 0x0e, 0x9d, 0xf6, 0x2d, 0x8d, 0x26, 0xb1, 0x68, - 0xb9, 0x4f, 0xab, 0xcb, - 0xac, 0x49, 0xa6, 0x74, 0x71, 0x5b, 0x6e, 0x4d, 0x59, 0x74, 0xbf, 0x0d, - 0xbe, 0xd0, 0x2d, 0x21, - 0xb2, 0x9f, 0xf6, 0xce, 0xec, 0x2b, 0x2a, 0xb7, 0x3f, 0xce, 0x0c, 0x72, - 0x06, 0x2c, 0xf1, 0x89, - 0x37, 0xdb, 0x29, 0x9c, 0x93, 0xed, 0xb2, 0xd7, 0xeb, 0x9c, 0x02, 0x17, - 0x01, 0xb3, 0x77, 0x63, - 0x7b, 0x17, 0x8b, 0x6a, 0x12, 0x64, 0xd9, 0x77, 0x54, 0x6a, 0x10, 0xb8, - 0x08, 0xd1, 0x3e, 0x9e, - 0xfe, 0x53, 0x54, 0x38, 0x6d, 0xa2, 0x41, 0x17, 0x80, 0x38, 0x1e, 0xdd, - 0x0f, 0x4e, 0xb8, 0x74, - 0xe3, 0x4c, 0x0c, 0x45, 0xd3, 0xb5, 0x0f, 0xf4, 0xe9, 0x45, 0x34, 0x25, - 0x1a, 0x15, 0xac, 0xa7, - 0x66, 0x08, 0xd3, 0x17, 0xac, 0x73, 0x97, 0x94, 0x3d, 0x17, 0x3a, 0x40, - 0x1d, 0x8a, 0x2a, 0x4d, - 0x2a, 0xc4, 0x71, 0xe1, 0x2d, 0xfa, 0xfc, 0x34, 0x82, 0xe1, 0x28, 0xef, - 0x14, 0xe8, 0x63, 0xb0, - 0xaf, 0x80, 0xae, 0xb3, 0x52, 0x3c, 0x64, 0x54, 0x56, 0xb3, 0x26, 0x8a, - 0x13, 0x77, 0xe5, 0x5a, - 0x10, 0xfa, 0xc1, 0x1b, 0x92, 0xd4, 0x60, 0x31, 0x50, 0x1b, 0x7c, 0xdc, - 0x3e, 0x5e, 0x4b, 0xd5, - 0x95, 0xbe, 0x1e, 0x49, 0xed, 0x12, 0xf8, 0x51, 0x84, 0x49, 0x72, 0xb9, - 0x39, 0xc1, 0xcd, 0x3f, - 0xd9, 0x72, 0xbc, 0xbf, 0x6c, 0x9b, 0x93, 0xf1, 0x3b, 0xbf, 0x60, 0x16, - 0x30, 0xa3, 0x84, 0xc2, - 0x5c, 0x36, 0x63, 0xed, 0x13, 0x5d, 0x0b, 0x91, 0xef, 0xed, 0x6e, 0x73, - 0x37, 0x3c, 0x02, 0x28, - 0x41, 0x29, 0x3b, 0x90, 0xad, 0x4a, 0x45, 0x72, 0x86, 0x90, 0x44, 0x8b, - 0x22, 0x67, 0x16, 0xfb, - 0xc4, 0x6d, 0xe4, 0xc2, 0xd2, 0x8c, 0xdd, 0x12, 0x52, 0xc2, 0x4a, 0xee, - 0x25, 0xf8, 0x90, 0x11, - 0x88, 0xa1, 0x46, 0x34, 0x53, 0x05, 0xb6, 0xb2, 0xed, 0x34, 0x58, 0x41, - 0x2c, 0x9a, 0xd9, 0xec, - 0x0d, 0xe5, 0x99, 0x66, 0x2c, 0xc3, 0x2e, 0xd2, 0x39, 0x66, 0x56, 0x24, - 0x2b, 0x05, 0x5f, 0x06, - 0x35, 0x55, 0x98, 0xa7, 0x10, 0x16, 0xbe, 0x78, 0xe1, 0xa7, 0xec, 0xed, - 0x76, 0xc8, 0x46, 0x31, - 0xb0, 0x11, 0x47, 0xf5, 0x6f, 0xd0, 0x26, 0x18, 0x35, 0xf5, 0xe2, 0x88, - 0x71, 0x57, 0xc0, 0xdb, - 0xfc, 0xdd, 0xe5, 0x03, 0xee, 0x59, 0x4d, 0xb8, 0x8a, 0x03, 0xf0, 0x27, - 0x78, 0x35, 0x89, 0x26, - 0x79, 0x99, 0x3a, 0x51, 0x91, 0x9f, 0xd5, 0xd8, 0x5e, 0x51, 0xfe, 0x42, - 0x7f, 0xaa, 0x0f, 0xcc, - 0x64, 0x86, 0x62, 0x2c, 0x2f, 0x88, 0x9b, 0x3b, 0x37, 0x2c, 0xd4, 0xba, - 0x6a, 0xf1, 0x1b, 0x1f, - 0xe1, 0xc2, 0xbd, 0x7e, 0x50, 0x4e, 0x03, 0x5b, 0xe3, 0x7e, 0xda, 0xdf, - 0x6d, 0x6e, 0x9d, 0xf5, - 0xad, 0x0e, 0x1f, 0x88, 0xd1, 0xc7, 0x68, 0xfb, 0x5c, 0x88, 0xc8, 0x70, - 0x64, 0x0c, 0xd4, 0x08, - 0x28, 0x4a, 0xc0, 0xda, 0xae, 0x01, 0xf0, 0x9b, 0x88, 0xda, 0xc6, 0x15, - 0x63, 0x93, 0x52, 0xe2, - 0x97, 0x30, 0xaf, 0x72, 0x6e, 0xe9, 0xf4, 0xfe, 0x8e, 0x72, 0x9c, 0x43, - 0x4e, 0xba, 0xfc, 0x6d, - 0x12, 0x74, 0x70, 0x20, 0x11, 0x2f, 0x6c, 0x9e, 0x5a, 0x20, 0x92, 0x26, - 0x49, 0x25, 0x7a, 0x87, - 0x5e, 0xb8, 0xd2, 0xd6, 0x90, 0xa6, 0x07, 0x3e, 0xe5, 0xd6, 0x80, 0x89, - 0x40, 0x47, 0x33, 0x7a, - 0xdb, 0xfc, 0x0d, 0x84, 0xef, 0x60, 0x9f, 0x5e, 0x31, 0x84, 0x8e, 0xec, - 0x47, 0xd8, 0xb5, 0x90, - 0xc6, 0xe3, 0x55, 0xf9, 0x51, 0x77, 0xd1, 0xbd, 0x58, 0xf9, 0xa4, 0x14, - 0x52, 0x83, 0xa1, 0x43, - 0x43, 0xa7, 0x8a, 0xab, 0x2e, 0xb1, 0x49, 0xdd, 0x8c, 0xab, 0xaa, 0x71, - 0x55, 0x1c, 0x27, 0xa9, - 0x0f, 0x6b, 0x28, 0x5d, 0xaf, 0x38, 0x22, 0x7d, 0x33, 0x5d, 0xb8, 0xde, - 0x5c, 0x7e, 0x6e, 0x54, - 0x8a, 0x2f, 0xf7, 0x0f, 0xd0, 0xfe, 0xba, 0x1d, 0xe7, 0x0f, 0xb6, 0xbb, - 0x5b, 0xe1, 0xe8, 0xbe, - 0x7f, 0xc8, 0x2a, 0x1c, 0xd7, 0x51, 0xc1, 0xea, 0x40, 0x1c, 0x0f, 0x8f, - 0xe6, 0x27, 0x5c, 0x3a, - 0xfa, 0x8c, 0xf5, 0x4e, 0xa8, 0x97, 0x59, 0x8a, 0x94, 0x4e, 0x01, 0xea, - 0xe1, 0xb8, 0xda, 0xd0, - 0xb6, 0x40, 0x57, 0xb8, 0x29, 0x1e, 0x32, 0x2a, 0x2b, 0xb8, 0x13, 0x45, - 0xe8, 0xda, 0x93, 0x2d, - 0x33, 0x04, 0x88, 0xea, 0x56, 0xd8, 0xaa, 0x4a, 0xff, 0xea, 0x1d, 0x20, - 0xef, 0x45, 0x15, 0xc7, - 0x2e, 0x1b, 0xd0, 0x97, 0xe8, 0xcf, 0xe4, 0xa9, 0x96, 0x97, 0x37, 0xd8, - 0xfa, 0x1e, 0x01, 0x14, - 0xab, 0x5f, 0x0f, 0xc5, 0x97, 0x09, 0x7c, 0xc9, 0x42, 0xc5, 0x39, 0xbd, - 0xfd, 0x81, 0x87, 0xfe, - 0xe7, 0x93, 0xad, 0x33, 0x16, 0x80, 0x17, 0x69, 0xfd, 0x33, 0x2b, 0x12, - 0xf4, 0xe3, 0xce, 0x03, - 0x62, 0xd7, 0x72, 0x61, 0x69, 0x46, 0x8f, 0x09, 0x29, 0x61, 0x25, 0x77, - 0xf3, 0x7c, 0x48, 0xe9, - 0xdd, 0xad, 0x1d, 0xc9, 0xa9, 0xae, 0x8b, 0x6c, 0x2f, 0xc9, 0x7f, 0x21, - 0xde, 0x55, 0xe6, 0x66, - 0x58, 0xe9, 0xc2, 0x9b, 0xd6, 0x68, 0x13, 0x0c, 0xfb, 0x9b, 0x71, 0x44, - 0xd9, 0xca, 0x60, 0x8c, - 0x14, 0x25, 0x60, 0x6d, 0x57, 0xe1, 0x78, 0xac, 0x44, 0x6d, 0x63, 0xeb, - 0xd0, 0xa8, 0x29, 0x71, - 0x91, 0x61, 0xbf, 0x3f, 0x28, 0x27, 0xe0, 0xcc, 0x90, 0x3f, 0x6d, 0x8e, - 0xd7, 0x37, 0xaf, 0x9b, - 0x8c, 0x7e, 0xe7, 0x42, 0x96, 0x30, 0xae, 0x2f, 0xf9, 0x42, 0x47, 0x76, - 0xc2, 0x6c, 0xbb, 0x48, - 0x09, 0x3a, 0x38, 0x10, 0xe9, 0xf6, 0x36, 0x4f, 0x2d, 0x10, 0x49, 0x13, - 0xc5, 0xf3, 0x3d, 0xa2, - 0x45, 0xf6, 0x9a, 0xe6, 0x68, 0x7f, 0x5d, 0xef, 0x92, 0xe6, 0x5b, 0xbc, - 0xcc, 0x91, 0x74, 0x5f, - 0xc0, 0xb2, 0x45, 0xb4, 0x17, 0xb9, 0xc5, 0x8f, 0x46, 0xb4, 0x55, 0xd9, - 0xcb, 0x0e, 0xf2, 0xb5, - 0xf8, 0x02, 0x44, 0x75, 0x2b, 0x6c, 0x55, 0x25, 0x9e, 0x75, 0xef, 0x10, - 0x96, 0xc3, 0xeb, 0x82, - 0x7d, 0x46, 0x9b, 0x27, 0x54, 0xaa, 0xcd, 0x45, 0x4a, 0x27, 0xe1, 0x75, - 0x91, 0x5c, 0x6d, 0x68, - 0x31, 0x8a, 0x39, 0xd1, 0xd5, 0x23, 0xa6, 0xe5, 0xf5, 0xd1, 0xf3, 0xda, - 0x98, 0x3e, 0x24, 0x95, - 0xb4, 0xce, 0xe6, 0x83, 0xaa, 0xe5, 0x3e, 0x85, 0x21, 0x83, 0xfd, 0xbf, - 0x9f, 0xa1, 0xa2, 0x7f, - 0xa9, 0xd1, 0xbe, 0xfe, 0x14, 0xf2, 0x70, 0x66, 0x48, 0xfe, 0xd7, 0x47, - 0x8a, 0xfa, 0xb6, 0xac, - 0x2c, 0x95, 0x61, 0xac, 0x6b, 0x34, 0xe8, 0x06, 0x9c, 0xac, 0xd9, 0x22, - 0x8d, 0x65, 0x30, 0x46, - 0x60, 0x59, 0xc3, 0x5a, 0xea, 0xbd, 0x83, 0xa6, 0x23, 0x5a, 0xcb, 0x8d, - 0x84, 0x07, 0x79, 0xbb, - 0xe5, 0x1d, 0x1c, 0x08, 0x95, 0x7b, 0x1b, 0xc6, 0xf7, 0x08, 0xc5, 0xe8, - 0x83, 0x98, 0xff, 0x51, - 0x5a, 0x67, 0x73, 0xa0, 0x55, 0x93, 0x1f, 0xa3, 0xf1, 0xa0, 0x9f, 0xbe, - 0xae, 0xb1, 0x51, 0xde, - 0xdf, 0x23, 0xac, 0xf2, 0x2a, 0x55, 0x87, 0xc3, 0x25, 0xf2, 0x91, 0xdb, - 0xa9, 0x2e, 0xd7, 0x34, - 0x93, 0xef, 0x0e, 0x04, 0xab, 0xdc, 0xec, 0x63, 0x9a, 0x04, 0x83, 0x74, - 0xa0, 0x4c, 0x9e, 0xc9, - 0x16, 0xab, 0xd1, 0x56, 0xd4, 0x1a, 0x74, 0x03, 0x4e, 0x56, 0x8d, 0x11, - 0xa7, 0xd3, 0x18, 0x23, - 0x0b, 0xb4, 0x89, 0x2b, 0x6a, 0x0d, 0x3a, 0xe0, 0x27, 0x2b, 0xa7, 0xe9, - 0xb2, 0x88, 0x0c, 0xf0, - 0x8e, 0xf0, 0x56, 0x79, 0x15, 0xcb, 0xa2, 0x80, 0xf3, 0x79, 0xa9, 0x8c, - 0xb5, 0x17, 0x8a, 0x1a, - 0xc2, 0x3c, 0xf4, 0x8f, 0x94, 0x42, 0xc9, 0x20, 0x4c, 0x8f, 0xbb, 0x23, - 0xbc, 0x75, 0xc3, 0xe7, - 0x47, 0x78, 0x2b, 0xdd, 0xeb, 0x84, 0x51, 0x40, 0x98, 0xdd, 0xb5, 0x46, - 0xbb, 0xea, 0x45, 0x0d, - 0xeb, 0x31, 0x8d, 0xa9, 0x9a, 0xdf, 0x3f, 0x0d, 0xc1, 0xa9, 0x0a, 0x4b, - 0x05, 0x3a, 0x68, 0x2c, - 0x6e, 0x75, 0x52, 0xfb, 0xe5, 0x19, 0xa7, 0x6d, 0x15, 0xfb, 0x04, 0x2e, - 0x02, 0xa5, 0xee, 0xc6, - 0x22, 0xb9, 0xf0, 0x0d, 0x64, 0x90, 0xcc, 0xcd, 0xaa, 0x0d, 0x16, 0x81, - 0x0b, 0xc7, 0xa7, 0x3b, - 0xa7, 0xfd, 0x2f, 0x5f, 0x1b, 0x56, 0x54, 0xad, 0x7e, 0x5f, 0x18, 0xe4, - 0x0c, 0x58, 0x21, 0xd1, - 0xba, 0xe2, 0x77, 0x22, 0xa5, 0x41, 0x1a, 0x4e, 0x17, 0x22, 0x32, 0x1c, - 0x19, 0x03, 0x35, 0x02, - 0x3f, 0xa6, 0xa8, 0x70, 0xda, 0x87, 0x82, 0x2e, 0xc3, 0x70, 0x3c, 0x79, - 0x1e, 0x9c, 0xb3, 0xe8, - 0x73, 0x6a, 0x0a, 0x86, 0x5b, 0x0e, 0xe9, 0x8e, 0x7c, 0x86, 0x2e, 0xd6, - 0x17, 0xfe, 0xfa, 0x15, - 0xf6, 0x2e, 0xd5, 0xd4, 0x24, 0xc8, 0x71, 0xee, 0xa8, 0xd4, 0x20, 0xb3, - 0x10, 0x61, 0x7c, 0xff, - 0x49, 0x54, 0xba, 0x7c, 0xe4, 0x20, 0x75, 0x8b, 0xae, 0x7c, 0x7a, 0xe5, - 0x3d, 0x48, 0xd2, 0x70, - 0xcc, 0x10, 0x65, 0x2e, 0x9b, 0xe6, 0xed, 0xeb, 0x7a, 0x2e, 0x74, 0x80, - 0x3a, 0xd7, 0x54, 0x9a, - 0x80, 0xdc, 0xc7, 0xd8, 0x1a, 0x6f, 0x86, 0x4b, 0xc5, 0xd8, 0x66, 0x2f, - 0x33, 0xb5, 0x1d, 0x67, - 0x05, 0x98, 0x18, 0x8a, 0x65, 0xa9, 0x1e, 0x2b, 0x11, 0x8a, 0x68, 0x4a, - 0x34, 0x2a, 0x9b, 0x8d, - 0x18, 0x87, 0x40, 0xf7, 0xdb, 0xbe, 0x50, 0xc8, 0x78, 0xf7, 0x42, 0xb2, - 0x21, 0x71, 0x8f, 0x5e, - 0x9d, 0xc3, 0x9f, 0xa5, 0xa4, 0x78, 0xc8, 0xa8, 0xac, 0xa5, 0x4c, 0xd7, - 0x26, 0xee, 0x09, 0xb4, - 0xd1, 0x0f, 0x3d, 0x53, 0x25, 0xf1, 0xa3, 0x08, 0x13, 0x53, 0x5e, 0x78, - 0x2f, 0x8c, 0x40, 0x49, - 0x54, 0x4b, 0xe2, 0x01, 0x5a, 0x37, 0x3b, 0x68, 0xc7, 0x01, 0x50, 0x1d, - 0x28, 0x13, 0xc6, 0xa3, - 0x6c, 0xfb, 0xe3, 0xc0, 0x66, 0xe2, 0xab, 0xc2, 0x1f, 0xc0, 0xea, 0xd4, - 0x75, 0xde, 0xdf, 0x94, - 0xe9, 0xbf, 0x3c, 0x92, 0x19, 0x24, 0x33, 0xa2, 0xcb, 0x92, 0xe4, 0xb1, - 0x72, 0x41, 0x59, 0x7e, - 0xa5, 0x73, 0x9e, 0x64, 0x98, 0xad, 0x58, 0x02, 0x74, 0x64, 0xf6, 0x1e, - 0x7b, 0x23, 0x10, 0x83, - 0x20, 0x37, 0x41, 0x36, 0xe7, 0x6b, 0xc0, 0x62, 0xa0, 0x36, 0xf8, 0x7b, - 0x7c, 0xbc, 0x96, 0x69, - 0x3d, 0x28, 0x19, 0x4b, 0x59, 0x7c, 0x8e, 0x81, 0xc9, 0x4b, 0xd2, 0x83, - 0x69, 0xe7, 0x82, 0xba, - 0xb8, 0x6c, 0xc6, 0x19, 0x26, 0xba, 0x16, 0xe1, 0x1d, 0x19, 0xdc, 0xe6, - 0x6e, 0x78, 0x04, 0x50, - 0xf4, 0xa0, 0x64, 0xef, 0xa7, 0x33, 0x7d, 0x41, 0xa2, 0xef, 0xce, 0x49, - 0x67, 0x1a, 0x4d, 0xad, - 0x71, 0xe4, 0xbb, 0xbd, 0xd8, 0xf5, 0xe5, 0x21, 0x76, 0xbd, 0xc0, 0x2c, - 0x60, 0x85, 0xcb, 0x47, - 0xce, 0x9e, 0xd4, 0x15, 0x18, 0x1d, 0xe1, 0x44, 0x70, 0x15, 0x9a, 0x7a, - 0x4d, 0xac, 0x65, 0xc8, - 0x4b, 0xda, 0x0b, 0x47, 0x67, 0xdb, 0x79, 0x24, 0xa4, 0x47, 0x94, 0x1f, - 0x4a, 0x33, 0xe3, 0x22, - 0x07, 0x16, 0xa9, 0xb1, 0xe6, 0x52, 0x12, 0x84, 0x1b, 0xb1, 0x86, 0xb0, - 0x43, 0x51, 0xaa, 0xdf, - 0x82, 0x52, 0x76, 0xe3, 0x99, 0x94, 0x8a, 0xe4, 0xcf, 0xe3, 0x88, 0xd5, - 0x44, 0xce, 0x2c, 0x35, - 0x9f, 0x4d, 0x2e, 0x9e, 0x27, 0x83, 0xc4, 0x07, 0xa6, 0x9e, 0xa2, 0x2d, - 0x51, 0x95, 0x38, 0xe6, - 0x1a, 0x09, 0xf1, 0xcc, 0x58, 0x45, 0x5c, 0x67, 0x72, 0xcc, 0xac, 0x48, - 0x56, 0x0a, 0xbe, 0x0c, - 0x56, 0xc5, 0x53, 0x3a, 0xd9, 0xcc, 0x37, 0xc7, 0xcd, 0x3a, 0xbe, 0xe7, - 0x5f, 0x68, 0xf7, 0xf1, - 0xd3, 0x81, 0x8c, 0x68, 0xa6, 0x0a, 0xaf, 0xa7, 0x19, 0x68, 0xb0, 0x82, - 0x58, 0xf7, 0x71, 0x1b, - 0x26, 0x66, 0x51, 0x7b, 0xa1, 0xa5, 0xd4, 0x50, 0xbe, 0x7b, 0x09, 0xb6, - 0xe5, 0x31, 0xc5, 0x9f, - 0xa3, 0x22, 0x8e, 0x29, 0xde, 0x63, 0x4c, 0x30, 0x6a, 0x29, 0x07, 0xd3, - 0xe2, 0xae, 0x43, 0x75, - 0xef, 0xee, 0x2c, 0xdf, 0x5f, 0xea, 0x27, 0x90, 0xd5, 0xdf, 0x15, 0x7c, - 0xeb, 0xcc, 0x0a, 0x88, - 0x6a, 0xaa, 0xf3, 0x8d, 0x20, 0x2c, 0xbf, 0xf0, 0x01, 0x8d, 0x1b, 0x19, - 0xec, 0x53, 0x8c, 0x62, - 0x77, 0xb5, 0xab, 0xf0, 0x9e, 0x3b, 0xf1, 0x13, 0x68, 0xf0, 0x31, 0xe1, - 0xf9, 0x08, 0x98, 0xb1, - 0xf2, 0xf1, 0x74, 0xa2, 0xe1, 0xfd, 0x69, 0x73, 0xbc, 0xa2, 0x3f, 0x84, - 0xfe, 0x97, 0x1e, 0x5b, - 0xbe, 0x3d, 0xd6, 0x54, 0x60, 0x74, 0x02, 0xd3, 0x03, 0x54, 0x2d, 0x2b, - 0xf7, 0xf5, 0x57, 0xa6, - 0x3b, 0x79, 0x09, 0x06, 0x1f, 0xb2, 0x9a, 0xb3, 0xd7, 0x06, 0x23, 0x4e, - 0xf0, 0x6a, 0xd1, 0x4c, - 0x84, 0x03, 0x66, 0xae, 0xdf, 0x5a, 0x9e, 0xd6, 0xd1, 0xae, 0x79, 0x18, - 0xdd, 0x43, 0x7f, 0xc3, - 0x01, 0x47, 0xb9, 0xfc, 0xa0, 0x9c, 0x06, 0xb6, 0x05, 0xfc, 0x77, 0x7d, - 0xda, 0xdc, 0xf9, 0x29, - 0x4d, 0x8b, 0x1b, 0x0a, 0x21, 0x15, 0x6d, 0x16, 0xba, 0x0a, 0x65, 0xd2, - 0xd3, 0xbe, 0xb0, 0xd4, - 0xc8, 0xcf, 0xc4, 0x58, 0x5e, 0xd3, 0xf5, 0x76, 0x6e, 0x58, 0x6b, 0xb7, - 0xd4, 0x21, 0x36, 0x3e, - 0xd5, 0xd0, 0x9c, 0x25, 0xe0, 0xc4, 0xbb, 0x95, 0x07, 0x25, 0x41, 0x4f, - 0xc1, 0x7a, 0x22, 0xed, - 0x50, 0x94, 0x43, 0x77, 0x9f, 0x02, 0x23, 0xf5, 0xd3, 0x77, 0x4f, 0x2a, - 0xc6, 0xe5, 0xa4, 0x07, - 0x1c, 0x58, 0xe1, 0x81, 0x1e, 0x8b, 0x48, 0x55, 0x6c, 0x81, 0x5d, 0x85, - 0xcf, 0x87, 0xed, 0xfa, - 0x99, 0x1c, 0x3e, 0xd3, 0x61, 0x4d, 0xd0, 0x35, 0xb8, 0xd3, 0x53, 0xe0, - 0xc8, 0x18, 0x6b, 0x10, - 0xa1, 0xac, 0x3f, 0x12, 0x5d, 0x98, 0x40, 0x9f, 0x60, 0x12, 0xe9, 0x29, - 0x95, 0xd5, 0x72, 0x27, - 0x24, 0xe8, 0xe0, 0x40, 0x22, 0x5e, 0xd8, 0xff, 0xb4, 0x40, 0xe7, 0x4c, - 0x92, 0x4a, 0xf4, 0xcd, - 0x68, 0x24, 0x42, 0xb6, 0xa3, 0xd7, 0xb3, 0x5f, 0x0b, 0xb6, 0xf5, 0xe3, - 0x9b, 0x28, 0xbd, 0x30, - 0xed, 0x60, 0x9d, 0xe4, 0xdc, 0x11, 0x2b, 0x3f, 0xdf, 0xe4, 0xfb, 0x86, - 0x9c, 0xb7, 0x3b, 0xda, - 0xf0, 0x7f, 0xc5, 0x99, 0x62, 0x06, 0x65, 0xdc, 0xb6, 0x99, 0xd1, 0x7e, - 0x89, 0xec, 0x2f, 0x09, - 0x75, 0x3b, 0x1a, 0xcb, 0x1d, 0xc0, 0xfd, 0xbc, 0x62, 0xcb, 0xdf, 0x1b, - 0x8e, 0x73, 0xa9, 0xe3, - 0x39, 0xf7, 0xb8, 0x3d, 0x9c, 0x49, 0x96, 0x1c, 0xdd, 0x3d, 0xcd, 0xb4, - 0x87, 0x11, 0xe0, 0x1e, - 0xbc, 0xb3, 0x67, 0x6f, 0xe3, 0x8f, 0x0e, 0x7c, 0x09, 0x6f, 0xc3, 0xd1, - 0x80, 0x8e, 0x66, 0xf4, - 0x03, 0xc9, 0x08, 0xc7, 0x23, 0x67, 0x0a, 0x19, 0x0f, 0xc7, 0x99, 0x87, - 0xad, 0xa7, 0xc8, 0x7b, - 0x86, 0x8d, 0xd7, 0x95, 0x5c, 0xa1, 0x92, 0x79, 0xdb, 0x95, 0x97, 0xe2, - 0xaa, 0x38, 0x4e, 0x91, - 0xca, 0x41, 0x75, 0x63, 0xdd, 0x28, 0xf9, 0xd9, 0x64, 0x63, 0x85, 0x4d, - 0xa3, 0x5a, 0x07, 0x6c, - 0x4f, 0x05, 0xaa, 0x31, 0xa2, 0xee, 0x61, 0xb9, 0xb0, 0x31, 0x8b, 0x28, - 0xa4, 0xc5, 0x81, 0x86, - 0x52, 0x1a, 0xf2, 0x4c, 0x1c, 0xf9, 0x2f, 0x5a, 0xd9, 0x4c, 0xa1, 0xd0, - 0xb1, 0x9e, 0x95, 0x55, - 0xd7, 0x5e, 0x2d, 0x1e, 0x63, 0x3f, 0xb7, 0x3a, 0x0d, 0x1e, 0xaf, 0xb5, - 0xb6, 0x01, 0x13, 0xbf, - 0x9b, 0x92, 0x8f, 0xe8, 0xe2, 0xb6, 0xdc, 0x9a, 0xb2, 0xe8, 0xbd, 0x1a, - 0xbf, 0x63, 0x5a, 0x42, - 0x1e, 0xd6, 0x50, 0xba, 0x9d, 0x70, 0x44, 0xfa, 0x66, 0xba, 0xb3, 0x7f, - 0xb8, 0xfc, 0xdc, 0xa8, - }, - { /* 4 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x10, 0xd1, 0xd3, 0x91, 0x91, 0xfe, 0xf3, 0x01, 0xb1, 0x78, 0x58, 0x01, - 0x49, 0x6b, 0x2d, 0xa9, - 0x20, 0x61, 0x65, 0xe1, 0xe1, 0x3f, 0x25, 0x02, 0xa1, 0xf0, 0xb0, 0x02, - 0x92, 0xd6, 0x5a, 0x91, - 0x30, 0xb0, 0xb6, 0x70, 0x70, 0xc1, 0xd6, 0x03, 0x10, 0x88, 0xe8, 0x03, - 0xdb, 0xbd, 0x77, 0x38, - 0x40, 0xc2, 0xca, 0x01, 0x01, 0x7e, 0x4a, 0x04, 0x81, 0x23, 0xa3, 0x04, - 0xe7, 0x6f, 0xb4, 0xe1, - 0x50, 0x13, 0x19, 0x90, 0x90, 0x80, 0xb9, 0x05, 0x30, 0x5b, 0xfb, 0x05, - 0xae, 0x04, 0x99, 0x48, - 0x60, 0xa3, 0xaf, 0xe0, 0xe0, 0x41, 0x6f, 0x06, 0x20, 0xd3, 0x13, 0x06, - 0x75, 0xb9, 0xee, 0x70, - 0x70, 0x72, 0x7c, 0x71, 0x71, 0xbf, 0x9c, 0x07, 0x91, 0xab, 0x4b, 0x07, - 0x3c, 0xd2, 0xc3, 0xd9, - 0x80, 0x47, 0x57, 0x02, 0x02, 0xfc, 0x94, 0x08, 0xc1, 0x46, 0x85, 0x08, - 0x0d, 0xde, 0xab, 0x01, - 0x90, 0x96, 0x84, 0x93, 0x93, 0x02, 0x67, 0x09, 0x70, 0x3e, 0xdd, 0x09, - 0x44, 0xb5, 0x86, 0xa8, - 0xa0, 0x26, 0x32, 0xe3, 0xe3, 0xc3, 0xb1, 0x0a, 0x60, 0xb6, 0x35, 0x0a, - 0x9f, 0x08, 0xf1, 0x90, - 0xb0, 0xf7, 0xe1, 0x72, 0x72, 0x3d, 0x42, 0x0b, 0xd1, 0xce, 0x6d, 0x0b, - 0xd6, 0x63, 0xdc, 0x39, - 0xc0, 0x85, 0x9d, 0x03, 0x03, 0x82, 0xde, 0x0c, 0x40, 0x65, 0x26, 0x0c, - 0xea, 0xb1, 0x1f, 0xe0, - 0xd0, 0x54, 0x4e, 0x92, 0x92, 0x7c, 0x2d, 0x0d, 0xf1, 0x1d, 0x7e, 0x0d, - 0xa3, 0xda, 0x32, 0x49, - 0xe0, 0xe4, 0xf8, 0xe2, 0xe2, 0xbd, 0xfb, 0x0e, 0xe1, 0x95, 0x96, 0x0e, - 0x78, 0x67, 0x45, 0x71, - 0xf0, 0x35, 0x2b, 0x73, 0x73, 0x43, 0x08, 0x0f, 0x50, 0xed, 0xce, 0x0f, - 0x31, 0x0c, 0x68, 0xd8, - 0xc3, 0x8e, 0xae, 0x04, 0x04, 0x3b, 0xeb, 0x10, 0x41, 0x8c, 0xc9, 0x10, - 0x1a, 0x7f, 0x95, 0x02, - 0xd3, 0x5f, 0x7d, 0x95, 0x95, 0xc5, 0x18, 0x11, 0xf0, 0xf4, 0x91, 0x11, - 0x53, 0x14, 0xb8, 0xab, - 0xe3, 0xef, 0xcb, 0xe5, 0xe5, 0x04, 0xce, 0x12, 0xe0, 0x7c, 0x79, 0x12, - 0x88, 0xa9, 0xcf, 0x93, - 0xf3, 0x3e, 0x18, 0x74, 0x74, 0xfa, 0x3d, 0x13, 0x51, 0x04, 0x21, 0x13, - 0xc1, 0xc2, 0xe2, 0x3a, - 0x83, 0x4c, 0x64, 0x05, 0x05, 0x45, 0xa1, 0x14, 0xc0, 0xaf, 0x6a, 0x14, - 0xfd, 0x10, 0x21, 0xe3, - 0x93, 0x9d, 0xb7, 0x94, 0x94, 0xbb, 0x52, 0x15, 0x71, 0xd7, 0x32, 0x15, - 0xb4, 0x7b, 0x0c, 0x4a, - 0xa3, 0x2d, 0x01, 0xe4, 0xe4, 0x7a, 0x84, 0x16, 0x61, 0x5f, 0xda, 0x16, - 0x6f, 0xc6, 0x7b, 0x72, - 0xb3, 0xfc, 0xd2, 0x75, 0x75, 0x84, 0x77, 0x17, 0xd0, 0x27, 0x82, 0x17, - 0x26, 0xad, 0x56, 0xdb, - 0x43, 0xc9, 0xf9, 0x06, 0x06, 0xc7, 0x7f, 0x18, 0x80, 0xca, 0x4c, 0x18, - 0x17, 0xa1, 0x3e, 0x03, - 0x53, 0x18, 0x2a, 0x97, 0x97, 0x39, 0x8c, 0x19, 0x31, 0xb2, 0x14, 0x19, - 0x5e, 0xca, 0x13, 0xaa, - 0x63, 0xa8, 0x9c, 0xe7, 0xe7, 0xf8, 0x5a, 0x1a, 0x21, 0x3a, 0xfc, 0x1a, - 0x85, 0x77, 0x64, 0x92, - 0x73, 0x79, 0x4f, 0x76, 0x76, 0x06, 0xa9, 0x1b, 0x90, 0x42, 0xa4, 0x1b, - 0xcc, 0x1c, 0x49, 0x3b, - 0x03, 0x0b, 0x33, 0x07, 0x07, 0xb9, 0x35, 0x1c, 0x01, 0xe9, 0xef, 0x1c, - 0xf0, 0xce, 0x8a, 0xe2, - 0x13, 0xda, 0xe0, 0x96, 0x96, 0x47, 0xc6, 0x1d, 0xb0, 0x91, 0xb7, 0x1d, - 0xb9, 0xa5, 0xa7, 0x4b, - 0x23, 0x6a, 0x56, 0xe6, 0xe6, 0x86, 0x10, 0x1e, 0xa0, 0x19, 0x5f, 0x1e, - 0x62, 0x18, 0xd0, 0x73, - 0x33, 0xbb, 0x85, 0x77, 0x77, 0x78, 0xe3, 0x1f, 0x11, 0x61, 0x07, 0x1f, - 0x2b, 0x73, 0xfd, 0xda, - 0x45, 0xdf, 0x9f, 0x08, 0x08, 0x76, 0x15, 0x20, 0x82, 0xdb, 0x51, 0x20, - 0x34, 0xfe, 0xe9, 0x04, - 0x55, 0x0e, 0x4c, 0x99, 0x99, 0x88, 0xe6, 0x21, 0x33, 0xa3, 0x09, 0x21, - 0x7d, 0x95, 0xc4, 0xad, - 0x65, 0xbe, 0xfa, 0xe9, 0xe9, 0x49, 0x30, 0x22, 0x23, 0x2b, 0xe1, 0x22, - 0xa6, 0x28, 0xb3, 0x95, - 0x75, 0x6f, 0x29, 0x78, 0x78, 0xb7, 0xc3, 0x23, 0x92, 0x53, 0xb9, 0x23, - 0xef, 0x43, 0x9e, 0x3c, - 0x05, 0x1d, 0x55, 0x09, 0x09, 0x08, 0x5f, 0x24, 0x03, 0xf8, 0xf2, 0x24, - 0xd3, 0x91, 0x5d, 0xe5, - 0x15, 0xcc, 0x86, 0x98, 0x98, 0xf6, 0xac, 0x25, 0xb2, 0x80, 0xaa, 0x25, - 0x9a, 0xfa, 0x70, 0x4c, - 0x25, 0x7c, 0x30, 0xe8, 0xe8, 0x37, 0x7a, 0x26, 0xa2, 0x08, 0x42, 0x26, - 0x41, 0x47, 0x07, 0x74, - 0x35, 0xad, 0xe3, 0x79, 0x79, 0xc9, 0x89, 0x27, 0x13, 0x70, 0x1a, 0x27, - 0x08, 0x2c, 0x2a, 0xdd, - 0xc5, 0x98, 0xc8, 0x0a, 0x0a, 0x8a, 0x81, 0x28, 0x43, 0x9d, 0xd4, 0x28, - 0x39, 0x20, 0x42, 0x05, - 0xd5, 0x49, 0x1b, 0x9b, 0x9b, 0x74, 0x72, 0x29, 0xf2, 0xe5, 0x8c, 0x29, - 0x70, 0x4b, 0x6f, 0xac, - 0xe5, 0xf9, 0xad, 0xeb, 0xeb, 0xb5, 0xa4, 0x2a, 0xe2, 0x6d, 0x64, 0x2a, - 0xab, 0xf6, 0x18, 0x94, - 0xf5, 0x28, 0x7e, 0x7a, 0x7a, 0x4b, 0x57, 0x2b, 0x53, 0x15, 0x3c, 0x2b, - 0xe2, 0x9d, 0x35, 0x3d, - 0x85, 0x5a, 0x02, 0x0b, 0x0b, 0xf4, 0xcb, 0x2c, 0xc2, 0xbe, 0x77, 0x2c, - 0xde, 0x4f, 0xf6, 0xe4, - 0x95, 0x8b, 0xd1, 0x9a, 0x9a, 0x0a, 0x38, 0x2d, 0x73, 0xc6, 0x2f, 0x2d, - 0x97, 0x24, 0xdb, 0x4d, - 0xa5, 0x3b, 0x67, 0xea, 0xea, 0xcb, 0xee, 0x2e, 0x63, 0x4e, 0xc7, 0x2e, - 0x4c, 0x99, 0xac, 0x75, - 0xb5, 0xea, 0xb4, 0x7b, 0x7b, 0x35, 0x1d, 0x2f, 0xd2, 0x36, 0x9f, 0x2f, - 0x05, 0xf2, 0x81, 0xdc, - 0x86, 0x51, 0x31, 0x0c, 0x0c, 0x4d, 0xfe, 0x30, 0xc3, 0x57, 0x98, 0x30, - 0x2e, 0x81, 0x7c, 0x06, - 0x96, 0x80, 0xe2, 0x9d, 0x9d, 0xb3, 0x0d, 0x31, 0x72, 0x2f, 0xc0, 0x31, - 0x67, 0xea, 0x51, 0xaf, - 0xa6, 0x30, 0x54, 0xed, 0xed, 0x72, 0xdb, 0x32, 0x62, 0xa7, 0x28, 0x32, - 0xbc, 0x57, 0x26, 0x97, - 0xb6, 0xe1, 0x87, 0x7c, 0x7c, 0x8c, 0x28, 0x33, 0xd3, 0xdf, 0x70, 0x33, - 0xf5, 0x3c, 0x0b, 0x3e, - 0xc6, 0x93, 0xfb, 0x0d, 0x0d, 0x33, 0xb4, 0x34, 0x42, 0x74, 0x3b, 0x34, - 0xc9, 0xee, 0xc8, 0xe7, - 0xd6, 0x42, 0x28, 0x9c, 0x9c, 0xcd, 0x47, 0x35, 0xf3, 0x0c, 0x63, 0x35, - 0x80, 0x85, 0xe5, 0x4e, - 0xe6, 0xf2, 0x9e, 0xec, 0xec, 0x0c, 0x91, 0x36, 0xe3, 0x84, 0x8b, 0x36, - 0x5b, 0x38, 0x92, 0x76, - 0xf6, 0x23, 0x4d, 0x7d, 0x7d, 0xf2, 0x62, 0x37, 0x52, 0xfc, 0xd3, 0x37, - 0x12, 0x53, 0xbf, 0xdf, - 0x06, 0x16, 0x66, 0x0e, 0x0e, 0xb1, 0x6a, 0x38, 0x02, 0x11, 0x1d, 0x38, - 0x23, 0x5f, 0xd7, 0x07, - 0x16, 0xc7, 0xb5, 0x9f, 0x9f, 0x4f, 0x99, 0x39, 0xb3, 0x69, 0x45, 0x39, - 0x6a, 0x34, 0xfa, 0xae, - 0x26, 0x77, 0x03, 0xef, 0xef, 0x8e, 0x4f, 0x3a, 0xa3, 0xe1, 0xad, 0x3a, - 0xb1, 0x89, 0x8d, 0x96, - 0x36, 0xa6, 0xd0, 0x7e, 0x7e, 0x70, 0xbc, 0x3b, 0x12, 0x99, 0xf5, 0x3b, - 0xf8, 0xe2, 0xa0, 0x3f, - 0x46, 0xd4, 0xac, 0x0f, 0x0f, 0xcf, 0x20, 0x3c, 0x83, 0x32, 0xbe, 0x3c, - 0xc4, 0x30, 0x63, 0xe6, - 0x56, 0x05, 0x7f, 0x9e, 0x9e, 0x31, 0xd3, 0x3d, 0x32, 0x4a, 0xe6, 0x3d, - 0x8d, 0x5b, 0x4e, 0x4f, - 0x66, 0xb5, 0xc9, 0xee, 0xee, 0xf0, 0x05, 0x3e, 0x22, 0xc2, 0x0e, 0x3e, - 0x56, 0xe6, 0x39, 0x77, - 0x76, 0x64, 0x1a, 0x7f, 0x7f, 0x0e, 0xf6, 0x3f, 0x93, 0xba, 0x56, 0x3f, - 0x1f, 0x8d, 0x14, 0xde, - 0x8a, 0x7d, 0xfd, 0x10, 0x10, 0xec, 0x2a, 0x40, 0xc7, 0x75, 0xa2, 0x40, - 0x68, 0x3f, 0x11, 0x08, - 0x9a, 0xac, 0x2e, 0x81, 0x81, 0x12, 0xd9, 0x41, 0x76, 0x0d, 0xfa, 0x41, - 0x21, 0x54, 0x3c, 0xa1, - 0xaa, 0x1c, 0x98, 0xf1, 0xf1, 0xd3, 0x0f, 0x42, 0x66, 0x85, 0x12, 0x42, - 0xfa, 0xe9, 0x4b, 0x99, - 0xba, 0xcd, 0x4b, 0x60, 0x60, 0x2d, 0xfc, 0x43, 0xd7, 0xfd, 0x4a, 0x43, - 0xb3, 0x82, 0x66, 0x30, - 0xca, 0xbf, 0x37, 0x11, 0x11, 0x92, 0x60, 0x44, 0x46, 0x56, 0x01, 0x44, - 0x8f, 0x50, 0xa5, 0xe9, - 0xda, 0x6e, 0xe4, 0x80, 0x80, 0x6c, 0x93, 0x45, 0xf7, 0x2e, 0x59, 0x45, - 0xc6, 0x3b, 0x88, 0x40, - 0xea, 0xde, 0x52, 0xf0, 0xf0, 0xad, 0x45, 0x46, 0xe7, 0xa6, 0xb1, 0x46, - 0x1d, 0x86, 0xff, 0x78, - 0xfa, 0x0f, 0x81, 0x61, 0x61, 0x53, 0xb6, 0x47, 0x56, 0xde, 0xe9, 0x47, - 0x54, 0xed, 0xd2, 0xd1, - 0x0a, 0x3a, 0xaa, 0x12, 0x12, 0x10, 0xbe, 0x48, 0x06, 0x33, 0x27, 0x48, - 0x65, 0xe1, 0xba, 0x09, - 0x1a, 0xeb, 0x79, 0x83, 0x83, 0xee, 0x4d, 0x49, 0xb7, 0x4b, 0x7f, 0x49, - 0x2c, 0x8a, 0x97, 0xa0, - 0x2a, 0x5b, 0xcf, 0xf3, 0xf3, 0x2f, 0x9b, 0x4a, 0xa7, 0xc3, 0x97, 0x4a, - 0xf7, 0x37, 0xe0, 0x98, - 0x3a, 0x8a, 0x1c, 0x62, 0x62, 0xd1, 0x68, 0x4b, 0x16, 0xbb, 0xcf, 0x4b, - 0xbe, 0x5c, 0xcd, 0x31, - 0x4a, 0xf8, 0x60, 0x13, 0x13, 0x6e, 0xf4, 0x4c, 0x87, 0x10, 0x84, 0x4c, - 0x82, 0x8e, 0x0e, 0xe8, - 0x5a, 0x29, 0xb3, 0x82, 0x82, 0x90, 0x07, 0x4d, 0x36, 0x68, 0xdc, 0x4d, - 0xcb, 0xe5, 0x23, 0x41, - 0x6a, 0x99, 0x05, 0xf2, 0xf2, 0x51, 0xd1, 0x4e, 0x26, 0xe0, 0x34, 0x4e, - 0x10, 0x58, 0x54, 0x79, - 0x7a, 0x48, 0xd6, 0x63, 0x63, 0xaf, 0x22, 0x4f, 0x97, 0x98, 0x6c, 0x4f, - 0x59, 0x33, 0x79, 0xd0, - 0x49, 0xf3, 0x53, 0x14, 0x14, 0xd7, 0xc1, 0x50, 0x86, 0xf9, 0x6b, 0x50, - 0x72, 0x40, 0x84, 0x0a, - 0x59, 0x22, 0x80, 0x85, 0x85, 0x29, 0x32, 0x51, 0x37, 0x81, 0x33, 0x51, - 0x3b, 0x2b, 0xa9, 0xa3, - 0x69, 0x92, 0x36, 0xf5, 0xf5, 0xe8, 0xe4, 0x52, 0x27, 0x09, 0xdb, 0x52, - 0xe0, 0x96, 0xde, 0x9b, - 0x79, 0x43, 0xe5, 0x64, 0x64, 0x16, 0x17, 0x53, 0x96, 0x71, 0x83, 0x53, - 0xa9, 0xfd, 0xf3, 0x32, - 0x09, 0x31, 0x99, 0x15, 0x15, 0xa9, 0x8b, 0x54, 0x07, 0xda, 0xc8, 0x54, - 0x95, 0x2f, 0x30, 0xeb, - 0x19, 0xe0, 0x4a, 0x84, 0x84, 0x57, 0x78, 0x55, 0xb6, 0xa2, 0x90, 0x55, - 0xdc, 0x44, 0x1d, 0x42, - 0x29, 0x50, 0xfc, 0xf4, 0xf4, 0x96, 0xae, 0x56, 0xa6, 0x2a, 0x78, 0x56, - 0x07, 0xf9, 0x6a, 0x7a, - 0x39, 0x81, 0x2f, 0x65, 0x65, 0x68, 0x5d, 0x57, 0x17, 0x52, 0x20, 0x57, - 0x4e, 0x92, 0x47, 0xd3, - 0xc9, 0xb4, 0x04, 0x16, 0x16, 0x2b, 0x55, 0x58, 0x47, 0xbf, 0xee, 0x58, - 0x7f, 0x9e, 0x2f, 0x0b, - 0xd9, 0x65, 0xd7, 0x87, 0x87, 0xd5, 0xa6, 0x59, 0xf6, 0xc7, 0xb6, 0x59, - 0x36, 0xf5, 0x02, 0xa2, - 0xe9, 0xd5, 0x61, 0xf7, 0xf7, 0x14, 0x70, 0x5a, 0xe6, 0x4f, 0x5e, 0x5a, - 0xed, 0x48, 0x75, 0x9a, - 0xf9, 0x04, 0xb2, 0x66, 0x66, 0xea, 0x83, 0x5b, 0x57, 0x37, 0x06, 0x5b, - 0xa4, 0x23, 0x58, 0x33, - 0x89, 0x76, 0xce, 0x17, 0x17, 0x55, 0x1f, 0x5c, 0xc6, 0x9c, 0x4d, 0x5c, - 0x98, 0xf1, 0x9b, 0xea, - 0x99, 0xa7, 0x1d, 0x86, 0x86, 0xab, 0xec, 0x5d, 0x77, 0xe4, 0x15, 0x5d, - 0xd1, 0x9a, 0xb6, 0x43, - 0xa9, 0x17, 0xab, 0xf6, 0xf6, 0x6a, 0x3a, 0x5e, 0x67, 0x6c, 0xfd, 0x5e, - 0x0a, 0x27, 0xc1, 0x7b, - 0xb9, 0xc6, 0x78, 0x67, 0x67, 0x94, 0xc9, 0x5f, 0xd6, 0x14, 0xa5, 0x5f, - 0x43, 0x4c, 0xec, 0xd2, - 0xcf, 0xa2, 0x62, 0x18, 0x18, 0x9a, 0x3f, 0x60, 0x45, 0xae, 0xf3, 0x60, - 0x5c, 0xc1, 0xf8, 0x0c, - 0xdf, 0x73, 0xb1, 0x89, 0x89, 0x64, 0xcc, 0x61, 0xf4, 0xd6, 0xab, 0x61, - 0x15, 0xaa, 0xd5, 0xa5, - 0xef, 0xc3, 0x07, 0xf9, 0xf9, 0xa5, 0x1a, 0x62, 0xe4, 0x5e, 0x43, 0x62, - 0xce, 0x17, 0xa2, 0x9d, - 0xff, 0x12, 0xd4, 0x68, 0x68, 0x5b, 0xe9, 0x63, 0x55, 0x26, 0x1b, 0x63, - 0x87, 0x7c, 0x8f, 0x34, - 0x8f, 0x60, 0xa8, 0x19, 0x19, 0xe4, 0x75, 0x64, 0xc4, 0x8d, 0x50, 0x64, - 0xbb, 0xae, 0x4c, 0xed, - 0x9f, 0xb1, 0x7b, 0x88, 0x88, 0x1a, 0x86, 0x65, 0x75, 0xf5, 0x08, 0x65, - 0xf2, 0xc5, 0x61, 0x44, - 0xaf, 0x01, 0xcd, 0xf8, 0xf8, 0xdb, 0x50, 0x66, 0x65, 0x7d, 0xe0, 0x66, - 0x29, 0x78, 0x16, 0x7c, - 0xbf, 0xd0, 0x1e, 0x69, 0x69, 0x25, 0xa3, 0x67, 0xd4, 0x05, 0xb8, 0x67, - 0x60, 0x13, 0x3b, 0xd5, - 0x4f, 0xe5, 0x35, 0x1a, 0x1a, 0x66, 0xab, 0x68, 0x84, 0xe8, 0x76, 0x68, - 0x51, 0x1f, 0x53, 0x0d, - 0x5f, 0x34, 0xe6, 0x8b, 0x8b, 0x98, 0x58, 0x69, 0x35, 0x90, 0x2e, 0x69, - 0x18, 0x74, 0x7e, 0xa4, - 0x6f, 0x84, 0x50, 0xfb, 0xfb, 0x59, 0x8e, 0x6a, 0x25, 0x18, 0xc6, 0x6a, - 0xc3, 0xc9, 0x09, 0x9c, - 0x7f, 0x55, 0x83, 0x6a, 0x6a, 0xa7, 0x7d, 0x6b, 0x94, 0x60, 0x9e, 0x6b, - 0x8a, 0xa2, 0x24, 0x35, - 0x0f, 0x27, 0xff, 0x1b, 0x1b, 0x18, 0xe1, 0x6c, 0x05, 0xcb, 0xd5, 0x6c, - 0xb6, 0x70, 0xe7, 0xec, - 0x1f, 0xf6, 0x2c, 0x8a, 0x8a, 0xe6, 0x12, 0x6d, 0xb4, 0xb3, 0x8d, 0x6d, - 0xff, 0x1b, 0xca, 0x45, - 0x2f, 0x46, 0x9a, 0xfa, 0xfa, 0x27, 0xc4, 0x6e, 0xa4, 0x3b, 0x65, 0x6e, - 0x24, 0xa6, 0xbd, 0x7d, - 0x3f, 0x97, 0x49, 0x6b, 0x6b, 0xd9, 0x37, 0x6f, 0x15, 0x43, 0x3d, 0x6f, - 0x6d, 0xcd, 0x90, 0xd4, - 0x0c, 0x2c, 0xcc, 0x1c, 0x1c, 0xa1, 0xd4, 0x70, 0x04, 0x22, 0x3a, 0x70, - 0x46, 0xbe, 0x6d, 0x0e, - 0x1c, 0xfd, 0x1f, 0x8d, 0x8d, 0x5f, 0x27, 0x71, 0xb5, 0x5a, 0x62, 0x71, - 0x0f, 0xd5, 0x40, 0xa7, - 0x2c, 0x4d, 0xa9, 0xfd, 0xfd, 0x9e, 0xf1, 0x72, 0xa5, 0xd2, 0x8a, 0x72, - 0xd4, 0x68, 0x37, 0x9f, - 0x3c, 0x9c, 0x7a, 0x6c, 0x6c, 0x60, 0x02, 0x73, 0x14, 0xaa, 0xd2, 0x73, - 0x9d, 0x03, 0x1a, 0x36, - 0x4c, 0xee, 0x06, 0x1d, 0x1d, 0xdf, 0x9e, 0x74, 0x85, 0x01, 0x99, 0x74, - 0xa1, 0xd1, 0xd9, 0xef, - 0x5c, 0x3f, 0xd5, 0x8c, 0x8c, 0x21, 0x6d, 0x75, 0x34, 0x79, 0xc1, 0x75, - 0xe8, 0xba, 0xf4, 0x46, - 0x6c, 0x8f, 0x63, 0xfc, 0xfc, 0xe0, 0xbb, 0x76, 0x24, 0xf1, 0x29, 0x76, - 0x33, 0x07, 0x83, 0x7e, - 0x7c, 0x5e, 0xb0, 0x6d, 0x6d, 0x1e, 0x48, 0x77, 0x95, 0x89, 0x71, 0x77, - 0x7a, 0x6c, 0xae, 0xd7, - 0x8c, 0x6b, 0x9b, 0x1e, 0x1e, 0x5d, 0x40, 0x78, 0xc5, 0x64, 0xbf, 0x78, - 0x4b, 0x60, 0xc6, 0x0f, - 0x9c, 0xba, 0x48, 0x8f, 0x8f, 0xa3, 0xb3, 0x79, 0x74, 0x1c, 0xe7, 0x79, - 0x02, 0x0b, 0xeb, 0xa6, - 0xac, 0x0a, 0xfe, 0xff, 0xff, 0x62, 0x65, 0x7a, 0x64, 0x94, 0x0f, 0x7a, - 0xd9, 0xb6, 0x9c, 0x9e, - 0xbc, 0xdb, 0x2d, 0x6e, 0x6e, 0x9c, 0x96, 0x7b, 0xd5, 0xec, 0x57, 0x7b, - 0x90, 0xdd, 0xb1, 0x37, - 0xcc, 0xa9, 0x51, 0x1f, 0x1f, 0x23, 0x0a, 0x7c, 0x44, 0x47, 0x1c, 0x7c, - 0xac, 0x0f, 0x72, 0xee, - 0xdc, 0x78, 0x82, 0x8e, 0x8e, 0xdd, 0xf9, 0x7d, 0xf5, 0x3f, 0x44, 0x7d, - 0xe5, 0x64, 0x5f, 0x47, - 0xec, 0xc8, 0x34, 0xfe, 0xfe, 0x1c, 0x2f, 0x7e, 0xe5, 0xb7, 0xac, 0x7e, - 0x3e, 0xd9, 0x28, 0x7f, - 0xfc, 0x19, 0xe7, 0x6f, 0x6f, 0xe2, 0xdc, 0x7f, 0x54, 0xcf, 0xf4, 0x7f, - 0x77, 0xb2, 0x05, 0xd6, - 0xd7, 0xfa, 0x39, 0x20, 0x20, 0x1b, 0x54, 0x80, 0x4d, 0xea, 0x87, 0x80, - 0xd0, 0x7e, 0x22, 0x10, - 0xc7, 0x2b, 0xea, 0xb1, 0xb1, 0xe5, 0xa7, 0x81, 0xfc, 0x92, 0xdf, 0x81, - 0x99, 0x15, 0x0f, 0xb9, - 0xf7, 0x9b, 0x5c, 0xc1, 0xc1, 0x24, 0x71, 0x82, 0xec, 0x1a, 0x37, 0x82, - 0x42, 0xa8, 0x78, 0x81, - 0xe7, 0x4a, 0x8f, 0x50, 0x50, 0xda, 0x82, 0x83, 0x5d, 0x62, 0x6f, 0x83, - 0x0b, 0xc3, 0x55, 0x28, - 0x97, 0x38, 0xf3, 0x21, 0x21, 0x65, 0x1e, 0x84, 0xcc, 0xc9, 0x24, 0x84, - 0x37, 0x11, 0x96, 0xf1, - 0x87, 0xe9, 0x20, 0xb0, 0xb0, 0x9b, 0xed, 0x85, 0x7d, 0xb1, 0x7c, 0x85, - 0x7e, 0x7a, 0xbb, 0x58, - 0xb7, 0x59, 0x96, 0xc0, 0xc0, 0x5a, 0x3b, 0x86, 0x6d, 0x39, 0x94, 0x86, - 0xa5, 0xc7, 0xcc, 0x60, - 0xa7, 0x88, 0x45, 0x51, 0x51, 0xa4, 0xc8, 0x87, 0xdc, 0x41, 0xcc, 0x87, - 0xec, 0xac, 0xe1, 0xc9, - 0x57, 0xbd, 0x6e, 0x22, 0x22, 0xe7, 0xc0, 0x88, 0x8c, 0xac, 0x02, 0x88, - 0xdd, 0xa0, 0x89, 0x11, - 0x47, 0x6c, 0xbd, 0xb3, 0xb3, 0x19, 0x33, 0x89, 0x3d, 0xd4, 0x5a, 0x89, - 0x94, 0xcb, 0xa4, 0xb8, - 0x77, 0xdc, 0x0b, 0xc3, 0xc3, 0xd8, 0xe5, 0x8a, 0x2d, 0x5c, 0xb2, 0x8a, - 0x4f, 0x76, 0xd3, 0x80, - 0x67, 0x0d, 0xd8, 0x52, 0x52, 0x26, 0x16, 0x8b, 0x9c, 0x24, 0xea, 0x8b, - 0x06, 0x1d, 0xfe, 0x29, - 0x17, 0x7f, 0xa4, 0x23, 0x23, 0x99, 0x8a, 0x8c, 0x0d, 0x8f, 0xa1, 0x8c, - 0x3a, 0xcf, 0x3d, 0xf0, - 0x07, 0xae, 0x77, 0xb2, 0xb2, 0x67, 0x79, 0x8d, 0xbc, 0xf7, 0xf9, 0x8d, - 0x73, 0xa4, 0x10, 0x59, - 0x37, 0x1e, 0xc1, 0xc2, 0xc2, 0xa6, 0xaf, 0x8e, 0xac, 0x7f, 0x11, 0x8e, - 0xa8, 0x19, 0x67, 0x61, - 0x27, 0xcf, 0x12, 0x53, 0x53, 0x58, 0x5c, 0x8f, 0x1d, 0x07, 0x49, 0x8f, - 0xe1, 0x72, 0x4a, 0xc8, - 0x14, 0x74, 0x97, 0x24, 0x24, 0x20, 0xbf, 0x90, 0x0c, 0x66, 0x4e, 0x90, - 0xca, 0x01, 0xb7, 0x12, - 0x04, 0xa5, 0x44, 0xb5, 0xb5, 0xde, 0x4c, 0x91, 0xbd, 0x1e, 0x16, 0x91, - 0x83, 0x6a, 0x9a, 0xbb, - 0x34, 0x15, 0xf2, 0xc5, 0xc5, 0x1f, 0x9a, 0x92, 0xad, 0x96, 0xfe, 0x92, - 0x58, 0xd7, 0xed, 0x83, - 0x24, 0xc4, 0x21, 0x54, 0x54, 0xe1, 0x69, 0x93, 0x1c, 0xee, 0xa6, 0x93, - 0x11, 0xbc, 0xc0, 0x2a, - 0x54, 0xb6, 0x5d, 0x25, 0x25, 0x5e, 0xf5, 0x94, 0x8d, 0x45, 0xed, 0x94, - 0x2d, 0x6e, 0x03, 0xf3, - 0x44, 0x67, 0x8e, 0xb4, 0xb4, 0xa0, 0x06, 0x95, 0x3c, 0x3d, 0xb5, 0x95, - 0x64, 0x05, 0x2e, 0x5a, - 0x74, 0xd7, 0x38, 0xc4, 0xc4, 0x61, 0xd0, 0x96, 0x2c, 0xb5, 0x5d, 0x96, - 0xbf, 0xb8, 0x59, 0x62, - 0x64, 0x06, 0xeb, 0x55, 0x55, 0x9f, 0x23, 0x97, 0x9d, 0xcd, 0x05, 0x97, - 0xf6, 0xd3, 0x74, 0xcb, - 0x94, 0x33, 0xc0, 0x26, 0x26, 0xdc, 0x2b, 0x98, 0xcd, 0x20, 0xcb, 0x98, - 0xc7, 0xdf, 0x1c, 0x13, - 0x84, 0xe2, 0x13, 0xb7, 0xb7, 0x22, 0xd8, 0x99, 0x7c, 0x58, 0x93, 0x99, - 0x8e, 0xb4, 0x31, 0xba, - 0xb4, 0x52, 0xa5, 0xc7, 0xc7, 0xe3, 0x0e, 0x9a, 0x6c, 0xd0, 0x7b, 0x9a, - 0x55, 0x09, 0x46, 0x82, - 0xa4, 0x83, 0x76, 0x56, 0x56, 0x1d, 0xfd, 0x9b, 0xdd, 0xa8, 0x23, 0x9b, - 0x1c, 0x62, 0x6b, 0x2b, - 0xd4, 0xf1, 0x0a, 0x27, 0x27, 0xa2, 0x61, 0x9c, 0x4c, 0x03, 0x68, 0x9c, - 0x20, 0xb0, 0xa8, 0xf2, - 0xc4, 0x20, 0xd9, 0xb6, 0xb6, 0x5c, 0x92, 0x9d, 0xfd, 0x7b, 0x30, 0x9d, - 0x69, 0xdb, 0x85, 0x5b, - 0xf4, 0x90, 0x6f, 0xc6, 0xc6, 0x9d, 0x44, 0x9e, 0xed, 0xf3, 0xd8, 0x9e, - 0xb2, 0x66, 0xf2, 0x63, - 0xe4, 0x41, 0xbc, 0x57, 0x57, 0x63, 0xb7, 0x9f, 0x5c, 0x8b, 0x80, 0x9f, - 0xfb, 0x0d, 0xdf, 0xca, - 0x92, 0x25, 0xa6, 0x28, 0x28, 0x6d, 0x41, 0xa0, 0xcf, 0x31, 0xd6, 0xa0, - 0xe4, 0x80, 0xcb, 0x14, - 0x82, 0xf4, 0x75, 0xb9, 0xb9, 0x93, 0xb2, 0xa1, 0x7e, 0x49, 0x8e, 0xa1, - 0xad, 0xeb, 0xe6, 0xbd, - 0xb2, 0x44, 0xc3, 0xc9, 0xc9, 0x52, 0x64, 0xa2, 0x6e, 0xc1, 0x66, 0xa2, - 0x76, 0x56, 0x91, 0x85, - 0xa2, 0x95, 0x10, 0x58, 0x58, 0xac, 0x97, 0xa3, 0xdf, 0xb9, 0x3e, 0xa3, - 0x3f, 0x3d, 0xbc, 0x2c, - 0xd2, 0xe7, 0x6c, 0x29, 0x29, 0x13, 0x0b, 0xa4, 0x4e, 0x12, 0x75, 0xa4, - 0x03, 0xef, 0x7f, 0xf5, - 0xc2, 0x36, 0xbf, 0xb8, 0xb8, 0xed, 0xf8, 0xa5, 0xff, 0x6a, 0x2d, 0xa5, - 0x4a, 0x84, 0x52, 0x5c, - 0xf2, 0x86, 0x09, 0xc8, 0xc8, 0x2c, 0x2e, 0xa6, 0xef, 0xe2, 0xc5, 0xa6, - 0x91, 0x39, 0x25, 0x64, - 0xe2, 0x57, 0xda, 0x59, 0x59, 0xd2, 0xdd, 0xa7, 0x5e, 0x9a, 0x9d, 0xa7, - 0xd8, 0x52, 0x08, 0xcd, - 0x12, 0x62, 0xf1, 0x2a, 0x2a, 0x91, 0xd5, 0xa8, 0x0e, 0x77, 0x53, 0xa8, - 0xe9, 0x5e, 0x60, 0x15, - 0x02, 0xb3, 0x22, 0xbb, 0xbb, 0x6f, 0x26, 0xa9, 0xbf, 0x0f, 0x0b, 0xa9, - 0xa0, 0x35, 0x4d, 0xbc, - 0x32, 0x03, 0x94, 0xcb, 0xcb, 0xae, 0xf0, 0xaa, 0xaf, 0x87, 0xe3, 0xaa, - 0x7b, 0x88, 0x3a, 0x84, - 0x22, 0xd2, 0x47, 0x5a, 0x5a, 0x50, 0x03, 0xab, 0x1e, 0xff, 0xbb, 0xab, - 0x32, 0xe3, 0x17, 0x2d, - 0x52, 0xa0, 0x3b, 0x2b, 0x2b, 0xef, 0x9f, 0xac, 0x8f, 0x54, 0xf0, 0xac, - 0x0e, 0x31, 0xd4, 0xf4, - 0x42, 0x71, 0xe8, 0xba, 0xba, 0x11, 0x6c, 0xad, 0x3e, 0x2c, 0xa8, 0xad, - 0x47, 0x5a, 0xf9, 0x5d, - 0x72, 0xc1, 0x5e, 0xca, 0xca, 0xd0, 0xba, 0xae, 0x2e, 0xa4, 0x40, 0xae, - 0x9c, 0xe7, 0x8e, 0x65, - 0x62, 0x10, 0x8d, 0x5b, 0x5b, 0x2e, 0x49, 0xaf, 0x9f, 0xdc, 0x18, 0xaf, - 0xd5, 0x8c, 0xa3, 0xcc, - 0x51, 0xab, 0x08, 0x2c, 0x2c, 0x56, 0xaa, 0xb0, 0x8e, 0xbd, 0x1f, 0xb0, - 0xfe, 0xff, 0x5e, 0x16, - 0x41, 0x7a, 0xdb, 0xbd, 0xbd, 0xa8, 0x59, 0xb1, 0x3f, 0xc5, 0x47, 0xb1, - 0xb7, 0x94, 0x73, 0xbf, - 0x71, 0xca, 0x6d, 0xcd, 0xcd, 0x69, 0x8f, 0xb2, 0x2f, 0x4d, 0xaf, 0xb2, - 0x6c, 0x29, 0x04, 0x87, - 0x61, 0x1b, 0xbe, 0x5c, 0x5c, 0x97, 0x7c, 0xb3, 0x9e, 0x35, 0xf7, 0xb3, - 0x25, 0x42, 0x29, 0x2e, - 0x11, 0x69, 0xc2, 0x2d, 0x2d, 0x28, 0xe0, 0xb4, 0x0f, 0x9e, 0xbc, 0xb4, - 0x19, 0x90, 0xea, 0xf7, - 0x01, 0xb8, 0x11, 0xbc, 0xbc, 0xd6, 0x13, 0xb5, 0xbe, 0xe6, 0xe4, 0xb5, - 0x50, 0xfb, 0xc7, 0x5e, - 0x31, 0x08, 0xa7, 0xcc, 0xcc, 0x17, 0xc5, 0xb6, 0xae, 0x6e, 0x0c, 0xb6, - 0x8b, 0x46, 0xb0, 0x66, - 0x21, 0xd9, 0x74, 0x5d, 0x5d, 0xe9, 0x36, 0xb7, 0x1f, 0x16, 0x54, 0xb7, - 0xc2, 0x2d, 0x9d, 0xcf, - 0xd1, 0xec, 0x5f, 0x2e, 0x2e, 0xaa, 0x3e, 0xb8, 0x4f, 0xfb, 0x9a, 0xb8, - 0xf3, 0x21, 0xf5, 0x17, - 0xc1, 0x3d, 0x8c, 0xbf, 0xbf, 0x54, 0xcd, 0xb9, 0xfe, 0x83, 0xc2, 0xb9, - 0xba, 0x4a, 0xd8, 0xbe, - 0xf1, 0x8d, 0x3a, 0xcf, 0xcf, 0x95, 0x1b, 0xba, 0xee, 0x0b, 0x2a, 0xba, - 0x61, 0xf7, 0xaf, 0x86, - 0xe1, 0x5c, 0xe9, 0x5e, 0x5e, 0x6b, 0xe8, 0xbb, 0x5f, 0x73, 0x72, 0xbb, - 0x28, 0x9c, 0x82, 0x2f, - 0x91, 0x2e, 0x95, 0x2f, 0x2f, 0xd4, 0x74, 0xbc, 0xce, 0xd8, 0x39, 0xbc, - 0x14, 0x4e, 0x41, 0xf6, - 0x81, 0xff, 0x46, 0xbe, 0xbe, 0x2a, 0x87, 0xbd, 0x7f, 0xa0, 0x61, 0xbd, - 0x5d, 0x25, 0x6c, 0x5f, - 0xb1, 0x4f, 0xf0, 0xce, 0xce, 0xeb, 0x51, 0xbe, 0x6f, 0x28, 0x89, 0xbe, - 0x86, 0x98, 0x1b, 0x67, - 0xa1, 0x9e, 0x23, 0x5f, 0x5f, 0x15, 0xa2, 0xbf, 0xde, 0x50, 0xd1, 0xbf, - 0xcf, 0xf3, 0x36, 0xce, - 0x5d, 0x87, 0xc4, 0x30, 0x30, 0xf7, 0x7e, 0xc0, 0x8a, 0x9f, 0x25, 0xc0, - 0xb8, 0x41, 0x33, 0x18, - 0x4d, 0x56, 0x17, 0xa1, 0xa1, 0x09, 0x8d, 0xc1, 0x3b, 0xe7, 0x7d, 0xc1, - 0xf1, 0x2a, 0x1e, 0xb1, - 0x7d, 0xe6, 0xa1, 0xd1, 0xd1, 0xc8, 0x5b, 0xc2, 0x2b, 0x6f, 0x95, 0xc2, - 0x2a, 0x97, 0x69, 0x89, - 0x6d, 0x37, 0x72, 0x40, 0x40, 0x36, 0xa8, 0xc3, 0x9a, 0x17, 0xcd, 0xc3, - 0x63, 0xfc, 0x44, 0x20, - 0x1d, 0x45, 0x0e, 0x31, 0x31, 0x89, 0x34, 0xc4, 0x0b, 0xbc, 0x86, 0xc4, - 0x5f, 0x2e, 0x87, 0xf9, - 0x0d, 0x94, 0xdd, 0xa0, 0xa0, 0x77, 0xc7, 0xc5, 0xba, 0xc4, 0xde, 0xc5, - 0x16, 0x45, 0xaa, 0x50, - 0x3d, 0x24, 0x6b, 0xd0, 0xd0, 0xb6, 0x11, 0xc6, 0xaa, 0x4c, 0x36, 0xc6, - 0xcd, 0xf8, 0xdd, 0x68, - 0x2d, 0xf5, 0xb8, 0x41, 0x41, 0x48, 0xe2, 0xc7, 0x1b, 0x34, 0x6e, 0xc7, - 0x84, 0x93, 0xf0, 0xc1, - 0xdd, 0xc0, 0x93, 0x32, 0x32, 0x0b, 0xea, 0xc8, 0x4b, 0xd9, 0xa0, 0xc8, - 0xb5, 0x9f, 0x98, 0x19, - 0xcd, 0x11, 0x40, 0xa3, 0xa3, 0xf5, 0x19, 0xc9, 0xfa, 0xa1, 0xf8, 0xc9, - 0xfc, 0xf4, 0xb5, 0xb0, - 0xfd, 0xa1, 0xf6, 0xd3, 0xd3, 0x34, 0xcf, 0xca, 0xea, 0x29, 0x10, 0xca, - 0x27, 0x49, 0xc2, 0x88, - 0xed, 0x70, 0x25, 0x42, 0x42, 0xca, 0x3c, 0xcb, 0x5b, 0x51, 0x48, 0xcb, - 0x6e, 0x22, 0xef, 0x21, - 0x9d, 0x02, 0x59, 0x33, 0x33, 0x75, 0xa0, 0xcc, 0xca, 0xfa, 0x03, 0xcc, - 0x52, 0xf0, 0x2c, 0xf8, - 0x8d, 0xd3, 0x8a, 0xa2, 0xa2, 0x8b, 0x53, 0xcd, 0x7b, 0x82, 0x5b, 0xcd, - 0x1b, 0x9b, 0x01, 0x51, - 0xbd, 0x63, 0x3c, 0xd2, 0xd2, 0x4a, 0x85, 0xce, 0x6b, 0x0a, 0xb3, 0xce, - 0xc0, 0x26, 0x76, 0x69, - 0xad, 0xb2, 0xef, 0x43, 0x43, 0xb4, 0x76, 0xcf, 0xda, 0x72, 0xeb, 0xcf, - 0x89, 0x4d, 0x5b, 0xc0, - 0x9e, 0x09, 0x6a, 0x34, 0x34, 0xcc, 0x95, 0xd0, 0xcb, 0x13, 0xec, 0xd0, - 0xa2, 0x3e, 0xa6, 0x1a, - 0x8e, 0xd8, 0xb9, 0xa5, 0xa5, 0x32, 0x66, 0xd1, 0x7a, 0x6b, 0xb4, 0xd1, - 0xeb, 0x55, 0x8b, 0xb3, - 0xbe, 0x68, 0x0f, 0xd5, 0xd5, 0xf3, 0xb0, 0xd2, 0x6a, 0xe3, 0x5c, 0xd2, - 0x30, 0xe8, 0xfc, 0x8b, - 0xae, 0xb9, 0xdc, 0x44, 0x44, 0x0d, 0x43, 0xd3, 0xdb, 0x9b, 0x04, 0xd3, - 0x79, 0x83, 0xd1, 0x22, - 0xde, 0xcb, 0xa0, 0x35, 0x35, 0xb2, 0xdf, 0xd4, 0x4a, 0x30, 0x4f, 0xd4, - 0x45, 0x51, 0x12, 0xfb, - 0xce, 0x1a, 0x73, 0xa4, 0xa4, 0x4c, 0x2c, 0xd5, 0xfb, 0x48, 0x17, 0xd5, - 0x0c, 0x3a, 0x3f, 0x52, - 0xfe, 0xaa, 0xc5, 0xd4, 0xd4, 0x8d, 0xfa, 0xd6, 0xeb, 0xc0, 0xff, 0xd6, - 0xd7, 0x87, 0x48, 0x6a, - 0xee, 0x7b, 0x16, 0x45, 0x45, 0x73, 0x09, 0xd7, 0x5a, 0xb8, 0xa7, 0xd7, - 0x9e, 0xec, 0x65, 0xc3, - 0x1e, 0x4e, 0x3d, 0x36, 0x36, 0x30, 0x01, 0xd8, 0x0a, 0x55, 0x69, 0xd8, - 0xaf, 0xe0, 0x0d, 0x1b, - 0x0e, 0x9f, 0xee, 0xa7, 0xa7, 0xce, 0xf2, 0xd9, 0xbb, 0x2d, 0x31, 0xd9, - 0xe6, 0x8b, 0x20, 0xb2, - 0x3e, 0x2f, 0x58, 0xd7, 0xd7, 0x0f, 0x24, 0xda, 0xab, 0xa5, 0xd9, 0xda, - 0x3d, 0x36, 0x57, 0x8a, - 0x2e, 0xfe, 0x8b, 0x46, 0x46, 0xf1, 0xd7, 0xdb, 0x1a, 0xdd, 0x81, 0xdb, - 0x74, 0x5d, 0x7a, 0x23, - 0x5e, 0x8c, 0xf7, 0x37, 0x37, 0x4e, 0x4b, 0xdc, 0x8b, 0x76, 0xca, 0xdc, - 0x48, 0x8f, 0xb9, 0xfa, - 0x4e, 0x5d, 0x24, 0xa6, 0xa6, 0xb0, 0xb8, 0xdd, 0x3a, 0x0e, 0x92, 0xdd, - 0x01, 0xe4, 0x94, 0x53, - 0x7e, 0xed, 0x92, 0xd6, 0xd6, 0x71, 0x6e, 0xde, 0x2a, 0x86, 0x7a, 0xde, - 0xda, 0x59, 0xe3, 0x6b, - 0x6e, 0x3c, 0x41, 0x47, 0x47, 0x8f, 0x9d, 0xdf, 0x9b, 0xfe, 0x22, 0xdf, - 0x93, 0x32, 0xce, 0xc2, - 0x18, 0x58, 0x5b, 0x38, 0x38, 0x81, 0x6b, 0xe0, 0x08, 0x44, 0x74, 0xe0, - 0x8c, 0xbf, 0xda, 0x1c, - 0x08, 0x89, 0x88, 0xa9, 0xa9, 0x7f, 0x98, 0xe1, 0xb9, 0x3c, 0x2c, 0xe1, - 0xc5, 0xd4, 0xf7, 0xb5, - 0x38, 0x39, 0x3e, 0xd9, 0xd9, 0xbe, 0x4e, 0xe2, 0xa9, 0xb4, 0xc4, 0xe2, - 0x1e, 0x69, 0x80, 0x8d, - 0x28, 0xe8, 0xed, 0x48, 0x48, 0x40, 0xbd, 0xe3, 0x18, 0xcc, 0x9c, 0xe3, - 0x57, 0x02, 0xad, 0x24, - 0x58, 0x9a, 0x91, 0x39, 0x39, 0xff, 0x21, 0xe4, 0x89, 0x67, 0xd7, 0xe4, - 0x6b, 0xd0, 0x6e, 0xfd, - 0x48, 0x4b, 0x42, 0xa8, 0xa8, 0x01, 0xd2, 0xe5, 0x38, 0x1f, 0x8f, 0xe5, - 0x22, 0xbb, 0x43, 0x54, - 0x78, 0xfb, 0xf4, 0xd8, 0xd8, 0xc0, 0x04, 0xe6, 0x28, 0x97, 0x67, 0xe6, - 0xf9, 0x06, 0x34, 0x6c, - 0x68, 0x2a, 0x27, 0x49, 0x49, 0x3e, 0xf7, 0xe7, 0x99, 0xef, 0x3f, 0xe7, - 0xb0, 0x6d, 0x19, 0xc5, - 0x98, 0x1f, 0x0c, 0x3a, 0x3a, 0x7d, 0xff, 0xe8, 0xc9, 0x02, 0xf1, 0xe8, - 0x81, 0x61, 0x71, 0x1d, - 0x88, 0xce, 0xdf, 0xab, 0xab, 0x83, 0x0c, 0xe9, 0x78, 0x7a, 0xa9, 0xe9, - 0xc8, 0x0a, 0x5c, 0xb4, - 0xb8, 0x7e, 0x69, 0xdb, 0xdb, 0x42, 0xda, 0xea, 0x68, 0xf2, 0x41, 0xea, - 0x13, 0xb7, 0x2b, 0x8c, - 0xa8, 0xaf, 0xba, 0x4a, 0x4a, 0xbc, 0x29, 0xeb, 0xd9, 0x8a, 0x19, 0xeb, - 0x5a, 0xdc, 0x06, 0x25, - 0xd8, 0xdd, 0xc6, 0x3b, 0x3b, 0x03, 0xb5, 0xec, 0x48, 0x21, 0x52, 0xec, - 0x66, 0x0e, 0xc5, 0xfc, - 0xc8, 0x0c, 0x15, 0xaa, 0xaa, 0xfd, 0x46, 0xed, 0xf9, 0x59, 0x0a, 0xed, - 0x2f, 0x65, 0xe8, 0x55, - 0xf8, 0xbc, 0xa3, 0xda, 0xda, 0x3c, 0x90, 0xee, 0xe9, 0xd1, 0xe2, 0xee, - 0xf4, 0xd8, 0x9f, 0x6d, - 0xe8, 0x6d, 0x70, 0x4b, 0x4b, 0xc2, 0x63, 0xef, 0x58, 0xa9, 0xba, 0xef, - 0xbd, 0xb3, 0xb2, 0xc4, - 0xdb, 0xd6, 0xf5, 0x3c, 0x3c, 0xba, 0x80, 0xf0, 0x49, 0xc8, 0xbd, 0xf0, - 0x96, 0xc0, 0x4f, 0x1e, - 0xcb, 0x07, 0x26, 0xad, 0xad, 0x44, 0x73, 0xf1, 0xf8, 0xb0, 0xe5, 0xf1, - 0xdf, 0xab, 0x62, 0xb7, - 0xfb, 0xb7, 0x90, 0xdd, 0xdd, 0x85, 0xa5, 0xf2, 0xe8, 0x38, 0x0d, 0xf2, - 0x04, 0x16, 0x15, 0x8f, - 0xeb, 0x66, 0x43, 0x4c, 0x4c, 0x7b, 0x56, 0xf3, 0x59, 0x40, 0x55, 0xf3, - 0x4d, 0x7d, 0x38, 0x26, - 0x9b, 0x14, 0x3f, 0x3d, 0x3d, 0xc4, 0xca, 0xf4, 0xc8, 0xeb, 0x1e, 0xf4, - 0x71, 0xaf, 0xfb, 0xff, - 0x8b, 0xc5, 0xec, 0xac, 0xac, 0x3a, 0x39, 0xf5, 0x79, 0x93, 0x46, 0xf5, - 0x38, 0xc4, 0xd6, 0x56, - 0xbb, 0x75, 0x5a, 0xdc, 0xdc, 0xfb, 0xef, 0xf6, 0x69, 0x1b, 0xae, 0xf6, - 0xe3, 0x79, 0xa1, 0x6e, - 0xab, 0xa4, 0x89, 0x4d, 0x4d, 0x05, 0x1c, 0xf7, 0xd8, 0x63, 0xf6, 0xf7, - 0xaa, 0x12, 0x8c, 0xc7, - 0x5b, 0x91, 0xa2, 0x3e, 0x3e, 0x46, 0x14, 0xf8, 0x88, 0x8e, 0x38, 0xf8, - 0x9b, 0x1e, 0xe4, 0x1f, - 0x4b, 0x40, 0x71, 0xaf, 0xaf, 0xb8, 0xe7, 0xf9, 0x39, 0xf6, 0x60, 0xf9, - 0xd2, 0x75, 0xc9, 0xb6, - 0x7b, 0xf0, 0xc7, 0xdf, 0xdf, 0x79, 0x31, 0xfa, 0x29, 0x7e, 0x88, 0xfa, - 0x09, 0xc8, 0xbe, 0x8e, - 0x6b, 0x21, 0x14, 0x4e, 0x4e, 0x87, 0xc2, 0xfb, 0x98, 0x06, 0xd0, 0xfb, - 0x40, 0xa3, 0x93, 0x27, - 0x1b, 0x53, 0x68, 0x3f, 0x3f, 0x38, 0x5e, 0xfc, 0x09, 0xad, 0x9b, 0xfc, - 0x7c, 0x71, 0x50, 0xfe, - 0x0b, 0x82, 0xbb, 0xae, 0xae, 0xc6, 0xad, 0xfd, 0xb8, 0xd5, 0xc3, 0xfd, - 0x35, 0x1a, 0x7d, 0x57, - 0x3b, 0x32, 0x0d, 0xde, 0xde, 0x07, 0x7b, 0xfe, 0xa8, 0x5d, 0x2b, 0xfe, - 0xee, 0xa7, 0x0a, 0x6f, - 0x2b, 0xe3, 0xde, 0x4f, 0x4f, 0xf9, 0x88, 0xff, 0x19, 0x25, 0x73, 0xff, - 0xa7, 0xcc, 0x27, 0xc6, - }, - { /* 5 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0xc2, 0x8d, 0x31, 0x64, 0xec, 0xeb, 0x0f, 0x2a, 0x37, 0x99, 0x90, 0xc4, - 0xf6, 0x30, 0xb8, 0xf6, - 0x47, 0xd9, 0x62, 0xc8, 0x1b, 0x15, 0x1e, 0x54, 0x6e, 0xf1, 0xe3, 0x4b, - 0x2f, 0x60, 0xb3, 0x2f, - 0x85, 0x54, 0x53, 0xac, 0xf7, 0xfe, 0x11, 0x7e, 0x59, 0x68, 0x73, 0x8f, - 0xd9, 0x50, 0x0b, 0xd9, - 0x8e, 0x71, 0xc4, 0x53, 0x36, 0x2a, 0x3c, 0xa8, 0xdc, 0x21, 0x05, 0x96, - 0x5e, 0xc0, 0xa5, 0x5e, - 0x4c, 0xfc, 0xf5, 0x37, 0xda, 0xc1, 0x33, 0x82, 0xeb, 0xb8, 0x95, 0x52, - 0xa8, 0xf0, 0x1d, 0xa8, - 0xc9, 0xa8, 0xa6, 0x9b, 0x2d, 0x3f, 0x22, 0xfc, 0xb2, 0xd0, 0xe6, 0xdd, - 0x71, 0xa0, 0x16, 0x71, - 0x0b, 0x25, 0x97, 0xff, 0xc1, 0xd4, 0x2d, 0xd6, 0x85, 0x49, 0x76, 0x19, - 0x87, 0x90, 0xae, 0x87, - 0xdf, 0xe2, 0x4b, 0xa6, 0x6c, 0x54, 0x78, 0x93, 0x7b, 0x42, 0x0a, 0xef, - 0xbc, 0x43, 0x89, 0xbc, - 0x1d, 0x6f, 0x7a, 0xc2, 0x80, 0xbf, 0x77, 0xb9, 0x4c, 0xdb, 0x9a, 0x2b, - 0x4a, 0x73, 0x31, 0x4a, - 0x98, 0x3b, 0x29, 0x6e, 0x77, 0x41, 0x66, 0xc7, 0x15, 0xb3, 0xe9, 0xa4, - 0x93, 0x23, 0x3a, 0x93, - 0x5a, 0xb6, 0x18, 0x0a, 0x9b, 0xaa, 0x69, 0xed, 0x22, 0x2a, 0x79, 0x60, - 0x65, 0x13, 0x82, 0x65, - 0x51, 0x93, 0x8f, 0xf5, 0x5a, 0x7e, 0x44, 0x3b, 0xa7, 0x63, 0x0f, 0x79, - 0xe2, 0x83, 0x2c, 0xe2, - 0x93, 0x1e, 0xbe, 0x91, 0xb6, 0x95, 0x4b, 0x11, 0x90, 0xfa, 0x9f, 0xbd, - 0x14, 0xb3, 0x94, 0x14, - 0x16, 0x4a, 0xed, 0x3d, 0x41, 0x6b, 0x5a, 0x6f, 0xc9, 0x92, 0xec, 0x32, - 0xcd, 0xe3, 0x9f, 0xcd, - 0xd4, 0xc7, 0xdc, 0x59, 0xad, 0x80, 0x55, 0x45, 0xfe, 0x0b, 0x7c, 0xf6, - 0x3b, 0xd3, 0x27, 0x3b, - 0x7d, 0x07, 0x96, 0x8f, 0xd8, 0xa8, 0xf0, 0xe5, 0xf6, 0x84, 0x14, 0x1d, - 0xbb, 0x86, 0xd1, 0xbb, - 0xbf, 0x8a, 0xa7, 0xeb, 0x34, 0x43, 0xff, 0xcf, 0xc1, 0x1d, 0x84, 0xd9, - 0x4d, 0xb6, 0x69, 0x4d, - 0x3a, 0xde, 0xf4, 0x47, 0xc3, 0xbd, 0xee, 0xb1, 0x98, 0x75, 0xf7, 0x56, - 0x94, 0xe6, 0x62, 0x94, - 0xf8, 0x53, 0xc5, 0x23, 0x2f, 0x56, 0xe1, 0x9b, 0xaf, 0xec, 0x67, 0x92, - 0x62, 0xd6, 0xda, 0x62, - 0xf3, 0x76, 0x52, 0xdc, 0xee, 0x82, 0xcc, 0x4d, 0x2a, 0xa5, 0x11, 0x8b, - 0xe5, 0x46, 0x74, 0xe5, - 0x31, 0xfb, 0x63, 0xb8, 0x02, 0x69, 0xc3, 0x67, 0x1d, 0x3c, 0x81, 0x4f, - 0x13, 0x76, 0xcc, 0x13, - 0xb4, 0xaf, 0x30, 0x14, 0xf5, 0x97, 0xd2, 0x19, 0x44, 0x54, 0xf2, 0xc0, - 0xca, 0x26, 0xc7, 0xca, - 0x76, 0x22, 0x01, 0x70, 0x19, 0x7c, 0xdd, 0x33, 0x73, 0xcd, 0x62, 0x04, - 0x3c, 0x16, 0x7f, 0x3c, - 0xa2, 0xe5, 0xdd, 0x29, 0xb4, 0xfc, 0x88, 0x76, 0x8d, 0xc6, 0x1e, 0xf2, - 0x07, 0xc5, 0x58, 0x07, - 0x60, 0x68, 0xec, 0x4d, 0x58, 0x17, 0x87, 0x5c, 0xba, 0x5f, 0x8e, 0x36, - 0xf1, 0xf5, 0xe0, 0xf1, - 0xe5, 0x3c, 0xbf, 0xe1, 0xaf, 0xe9, 0x96, 0x22, 0xe3, 0x37, 0xfd, 0xb9, - 0x28, 0xa5, 0xeb, 0x28, - 0x27, 0xb1, 0x8e, 0x85, 0x43, 0x02, 0x99, 0x08, 0xd4, 0xae, 0x6d, 0x7d, - 0xde, 0x95, 0x53, 0xde, - 0x2c, 0x94, 0x19, 0x7a, 0x82, 0xd6, 0xb4, 0xde, 0x51, 0xe7, 0x1b, 0x64, - 0x59, 0x05, 0xfd, 0x59, - 0xee, 0x19, 0x28, 0x1e, 0x6e, 0x3d, 0xbb, 0xf4, 0x66, 0x7e, 0x8b, 0xa0, - 0xaf, 0x35, 0x45, 0xaf, - 0x6b, 0x4d, 0x7b, 0xb2, 0x99, 0xc3, 0xaa, 0x8a, 0x3f, 0x16, 0xf8, 0x2f, - 0x76, 0x65, 0x4e, 0x76, - 0xa9, 0xc0, 0x4a, 0xd6, 0x75, 0x28, 0xa5, 0xa0, 0x08, 0x8f, 0x68, 0xeb, - 0x80, 0x55, 0xf6, 0x80, - 0xfa, 0x0e, 0xef, 0xdd, 0x73, 0x93, 0x23, 0x09, 0x2f, 0xcb, 0x28, 0x3a, - 0xb5, 0xcf, 0x61, 0xb5, - 0x38, 0x83, 0xde, 0xb9, 0x9f, 0x78, 0x2c, 0x23, 0x18, 0x52, 0xb8, 0xfe, - 0x43, 0xff, 0xd9, 0x43, - 0xbd, 0xd7, 0x8d, 0x15, 0x68, 0x86, 0x3d, 0x5d, 0x41, 0x3a, 0xcb, 0x71, - 0x9a, 0xaf, 0xd2, 0x9a, - 0x7f, 0x5a, 0xbc, 0x71, 0x84, 0x6d, 0x32, 0x77, 0x76, 0xa3, 0x5b, 0xb5, - 0x6c, 0x9f, 0x6a, 0x6c, - 0x74, 0x7f, 0x2b, 0x8e, 0x45, 0xb9, 0x1f, 0xa1, 0xf3, 0xea, 0x2d, 0xac, - 0xeb, 0x0f, 0xc4, 0xeb, - 0xb6, 0xf2, 0x1a, 0xea, 0xa9, 0x52, 0x10, 0x8b, 0xc4, 0x73, 0xbd, 0x68, - 0x1d, 0x3f, 0x7c, 0x1d, - 0x33, 0xa6, 0x49, 0x46, 0x5e, 0xac, 0x01, 0xf5, 0x9d, 0x1b, 0xce, 0xe7, - 0xc4, 0x6f, 0x77, 0xc4, - 0xf1, 0x2b, 0x78, 0x22, 0xb2, 0x47, 0x0e, 0xdf, 0xaa, 0x82, 0x5e, 0x23, - 0x32, 0x5f, 0xcf, 0x32, - 0x25, 0xec, 0xa4, 0x7b, 0x1f, 0xc7, 0x5b, 0x9a, 0x54, 0x89, 0x22, 0xd5, - 0x09, 0x8c, 0xe8, 0x09, - 0xe7, 0x61, 0x95, 0x1f, 0xf3, 0x2c, 0x54, 0xb0, 0x63, 0x10, 0xb2, 0x11, - 0xff, 0xbc, 0x50, 0xff, - 0x62, 0x35, 0xc6, 0xb3, 0x04, 0xd2, 0x45, 0xce, 0x3a, 0x78, 0xc1, 0x9e, - 0x26, 0xec, 0x5b, 0x26, - 0xa0, 0xb8, 0xf7, 0xd7, 0xe8, 0x39, 0x4a, 0xe4, 0x0d, 0xe1, 0x51, 0x5a, - 0xd0, 0xdc, 0xe3, 0xd0, - 0xab, 0x9d, 0x60, 0x28, 0x29, 0xed, 0x67, 0x32, 0x88, 0xa8, 0x27, 0x43, - 0x57, 0x4c, 0x4d, 0x57, - 0x69, 0x10, 0x51, 0x4c, 0xc5, 0x06, 0x68, 0x18, 0xbf, 0x31, 0xb7, 0x87, - 0xa1, 0x7c, 0xf5, 0xa1, - 0xec, 0x44, 0x02, 0xe0, 0x32, 0xf8, 0x79, 0x66, 0xe6, 0x59, 0xc4, 0x08, - 0x78, 0x2c, 0xfe, 0x78, - 0x2e, 0xc9, 0x33, 0x84, 0xde, 0x13, 0x76, 0x4c, 0xd1, 0xc0, 0x54, 0xcc, - 0x8e, 0x1c, 0x46, 0x8e, - 0x87, 0x09, 0x79, 0x52, 0xab, 0x3b, 0xd3, 0xec, 0xd9, 0x4f, 0x3c, 0x27, - 0x0e, 0x49, 0xb0, 0x0e, - 0x45, 0x84, 0x48, 0x36, 0x47, 0xd0, 0xdc, 0xc6, 0xee, 0xd6, 0xac, 0xe3, - 0xf8, 0x79, 0x08, 0xf8, - 0xc0, 0xd0, 0x1b, 0x9a, 0xb0, 0x2e, 0xcd, 0xb8, 0xb7, 0xbe, 0xdf, 0x6c, - 0x21, 0x29, 0x03, 0x21, - 0x02, 0x5d, 0x2a, 0xfe, 0x5c, 0xc5, 0xc2, 0x92, 0x80, 0x27, 0x4f, 0xa8, - 0xd7, 0x19, 0xbb, 0xd7, - 0x09, 0x78, 0xbd, 0x01, 0x9d, 0x11, 0xef, 0x44, 0x05, 0x6e, 0x39, 0xb1, - 0x50, 0x89, 0x15, 0x50, - 0xcb, 0xf5, 0x8c, 0x65, 0x71, 0xfa, 0xe0, 0x6e, 0x32, 0xf7, 0xa9, 0x75, - 0xa6, 0xb9, 0xad, 0xa6, - 0x4e, 0xa1, 0xdf, 0xc9, 0x86, 0x04, 0xf1, 0x10, 0x6b, 0x9f, 0xda, 0xfa, - 0x7f, 0xe9, 0xa6, 0x7f, - 0x8c, 0x2c, 0xee, 0xad, 0x6a, 0xef, 0xfe, 0x3a, 0x5c, 0x06, 0x4a, 0x3e, - 0x89, 0xd9, 0x1e, 0x89, - 0x58, 0xeb, 0x32, 0xf4, 0xc7, 0x6f, 0xab, 0x7f, 0xa2, 0x0d, 0x36, 0xc8, - 0xb2, 0x0a, 0x39, 0xb2, - 0x9a, 0x66, 0x03, 0x90, 0x2b, 0x84, 0xa4, 0x55, 0x95, 0x94, 0xa6, 0x0c, - 0x44, 0x3a, 0x81, 0x44, - 0x1f, 0x32, 0x50, 0x3c, 0xdc, 0x7a, 0xb5, 0x2b, 0xcc, 0xfc, 0xd5, 0x83, - 0x9d, 0x6a, 0x8a, 0x9d, - 0xdd, 0xbf, 0x61, 0x58, 0x30, 0x91, 0xba, 0x01, 0xfb, 0x65, 0x45, 0x47, - 0x6b, 0x5a, 0x32, 0x6b, - 0xd6, 0x9a, 0xf6, 0xa7, 0xf1, 0x45, 0x97, 0xd7, 0x7e, 0x2c, 0x33, 0x5e, - 0xec, 0xca, 0x9c, 0xec, - 0x14, 0x17, 0xc7, 0xc3, 0x1d, 0xae, 0x98, 0xfd, 0x49, 0xb5, 0xa3, 0x9a, - 0x1a, 0xfa, 0x24, 0x1a, - 0x91, 0x43, 0x94, 0x6f, 0xea, 0x50, 0x89, 0x83, 0x10, 0xdd, 0xd0, 0x15, - 0xc3, 0xaa, 0x2f, 0xc3, - 0x53, 0xce, 0xa5, 0x0b, 0x06, 0xbb, 0x86, 0xa9, 0x27, 0x44, 0x40, 0xd1, - 0x35, 0x9a, 0x97, 0x35, - 0x37, 0x1c, 0x1d, 0x79, 0xe6, 0xe5, 0x46, 0x12, 0x5e, 0x55, 0x50, 0x74, - 0xa9, 0x5d, 0xc2, 0xa9, - 0xf5, 0x91, 0x2c, 0x1d, 0x0a, 0x0e, 0x49, 0x38, 0x69, 0xcc, 0xc0, 0xb0, - 0x5f, 0x6d, 0x7a, 0x5f, - 0x70, 0xc5, 0x7f, 0xb1, 0xfd, 0xf0, 0x58, 0x46, 0x30, 0xa4, 0xb3, 0x3f, - 0x86, 0x3d, 0x71, 0x86, - 0xb2, 0x48, 0x4e, 0xd5, 0x11, 0x1b, 0x57, 0x6c, 0x07, 0x3d, 0x23, 0xfb, - 0x70, 0x0d, 0xc9, 0x70, - 0xb9, 0x6d, 0xd9, 0x2a, 0xd0, 0xcf, 0x7a, 0xba, 0x82, 0x74, 0x55, 0xe2, - 0xf7, 0x9d, 0x67, 0xf7, - 0x7b, 0xe0, 0xe8, 0x4e, 0x3c, 0x24, 0x75, 0x90, 0xb5, 0xed, 0xc5, 0x26, - 0x01, 0xad, 0xdf, 0x01, - 0xfe, 0xb4, 0xbb, 0xe2, 0xcb, 0xda, 0x64, 0xee, 0xec, 0x85, 0xb6, 0xa9, - 0xd8, 0xfd, 0xd4, 0xd8, - 0x3c, 0x39, 0x8a, 0x86, 0x27, 0x31, 0x6b, 0xc4, 0xdb, 0x1c, 0x26, 0x6d, - 0x2e, 0xcd, 0x6c, 0x2e, - 0xe8, 0xfe, 0x56, 0xdf, 0x8a, 0xb1, 0x3e, 0x81, 0x25, 0x17, 0x5a, 0x9b, - 0x15, 0x1e, 0x4b, 0x15, - 0x2a, 0x73, 0x67, 0xbb, 0x66, 0x5a, 0x31, 0xab, 0x12, 0x8e, 0xca, 0x5f, - 0xe3, 0x2e, 0xf3, 0xe3, - 0xaf, 0x27, 0x34, 0x17, 0x91, 0xa4, 0x20, 0xd5, 0x4b, 0xe6, 0xb9, 0xd0, - 0x3a, 0x7e, 0xf8, 0x3a, - 0x6d, 0xaa, 0x05, 0x73, 0x7d, 0x4f, 0x2f, 0xff, 0x7c, 0x7f, 0x29, 0x14, - 0xcc, 0x4e, 0x40, 0xcc, - 0x66, 0x8f, 0x92, 0x8c, 0xbc, 0x9b, 0x02, 0x29, 0xf9, 0x36, 0x5f, 0x0d, - 0x4b, 0xde, 0xee, 0x4b, - 0xa4, 0x02, 0xa3, 0xe8, 0x50, 0x70, 0x0d, 0x03, 0xce, 0xaf, 0xcf, 0xc9, - 0xbd, 0xee, 0x56, 0xbd, - 0x21, 0x56, 0xf0, 0x44, 0xa7, 0x8e, 0x1c, 0x7d, 0x97, 0xc7, 0xbc, 0x46, - 0x64, 0xbe, 0x5d, 0x64, - 0xe3, 0xdb, 0xc1, 0x20, 0x4b, 0x65, 0x13, 0x57, 0xa0, 0x5e, 0x2c, 0x82, - 0x92, 0x8e, 0xe5, 0x92, - 0x4a, 0x1b, 0x8b, 0xf6, 0x3e, 0x4d, 0xb6, 0xf7, 0xa8, 0xd1, 0x44, 0x69, - 0x12, 0xdb, 0x13, 0x12, - 0x88, 0x96, 0xba, 0x92, 0xd2, 0xa6, 0xb9, 0xdd, 0x9f, 0x48, 0xd4, 0xad, - 0xe4, 0xeb, 0xab, 0xe4, - 0x0d, 0xc2, 0xe9, 0x3e, 0x25, 0x58, 0xa8, 0xa3, 0xc6, 0x20, 0xa7, 0x22, - 0x3d, 0xbb, 0xa0, 0x3d, - 0xcf, 0x4f, 0xd8, 0x5a, 0xc9, 0xb3, 0xa7, 0x89, 0xf1, 0xb9, 0x37, 0xe6, - 0xcb, 0x8b, 0x18, 0xcb, - 0xc4, 0x6a, 0x4f, 0xa5, 0x08, 0x67, 0x8a, 0x5f, 0x74, 0xf0, 0x41, 0xff, - 0x4c, 0x1b, 0xb6, 0x4c, - 0x06, 0xe7, 0x7e, 0xc1, 0xe4, 0x8c, 0x85, 0x75, 0x43, 0x69, 0xd1, 0x3b, - 0xba, 0x2b, 0x0e, 0xba, - 0x83, 0xb3, 0x2d, 0x6d, 0x13, 0x72, 0x94, 0x0b, 0x1a, 0x01, 0xa2, 0xb4, - 0x63, 0x7b, 0x05, 0x63, - 0x41, 0x3e, 0x1c, 0x09, 0xff, 0x99, 0x9b, 0x21, 0x2d, 0x98, 0x32, 0x70, - 0x95, 0x4b, 0xbd, 0x95, - 0x95, 0xf9, 0xc0, 0x50, 0x52, 0x19, 0xce, 0x64, 0xd3, 0x93, 0x4e, 0x86, - 0xae, 0x98, 0x9a, 0xae, - 0x57, 0x74, 0xf1, 0x34, 0xbe, 0xf2, 0xc1, 0x4e, 0xe4, 0x0a, 0xde, 0x42, - 0x58, 0xa8, 0x22, 0x58, - 0xd2, 0x20, 0xa2, 0x98, 0x49, 0x0c, 0xd0, 0x30, 0xbd, 0x62, 0xad, 0xcd, - 0x81, 0xf8, 0x29, 0x81, - 0x10, 0xad, 0x93, 0xfc, 0xa5, 0xe7, 0xdf, 0x1a, 0x8a, 0xfb, 0x3d, 0x09, - 0x77, 0xc8, 0x91, 0x77, - 0x1b, 0x88, 0x04, 0x03, 0x64, 0x33, 0xf2, 0xcc, 0x0f, 0xb2, 0x4b, 0x10, - 0xf0, 0x58, 0x3f, 0xf0, - 0xd9, 0x05, 0x35, 0x67, 0x88, 0xd8, 0xfd, 0xe6, 0x38, 0x2b, 0xdb, 0xd4, - 0x06, 0x68, 0x87, 0x06, - 0x5c, 0x51, 0x66, 0xcb, 0x7f, 0x26, 0xec, 0x98, 0x61, 0x43, 0xa8, 0x5b, - 0xdf, 0x38, 0x8c, 0xdf, - 0x9e, 0xdc, 0x57, 0xaf, 0x93, 0xcd, 0xe3, 0xb2, 0x56, 0xda, 0x38, 0x9f, - 0x29, 0x08, 0x34, 0x29, - 0xcd, 0x12, 0xf2, 0xa4, 0x95, 0x76, 0x65, 0x1b, 0x71, 0x9e, 0x78, 0x4e, - 0x1c, 0x92, 0xa3, 0x1c, - 0x0f, 0x9f, 0xc3, 0xc0, 0x79, 0x9d, 0x6a, 0x31, 0x46, 0x07, 0xe8, 0x8a, - 0xea, 0xa2, 0x1b, 0xea, - 0x8a, 0xcb, 0x90, 0x6c, 0x8e, 0x63, 0x7b, 0x4f, 0x1f, 0x6f, 0x9b, 0x05, - 0x33, 0xf2, 0x10, 0x33, - 0x48, 0x46, 0xa1, 0x08, 0x62, 0x88, 0x74, 0x65, 0x28, 0xf6, 0x0b, 0xc1, - 0xc5, 0xc2, 0xa8, 0xc5, - 0x43, 0x63, 0x36, 0xf7, 0xa3, 0x5c, 0x59, 0xb3, 0xad, 0xbf, 0x7d, 0xd8, - 0x42, 0x52, 0x06, 0x42, - 0x81, 0xee, 0x07, 0x93, 0x4f, 0xb7, 0x56, 0x99, 0x9a, 0x26, 0xed, 0x1c, - 0xb4, 0x62, 0xbe, 0xb4, - 0x04, 0xba, 0x54, 0x3f, 0xb8, 0x49, 0x47, 0xe7, 0xc3, 0x4e, 0x9e, 0x93, - 0x6d, 0x32, 0xb5, 0x6d, - 0xc6, 0x37, 0x65, 0x5b, 0x54, 0xa2, 0x48, 0xcd, 0xf4, 0xd7, 0x0e, 0x57, - 0x9b, 0x02, 0x0d, 0x9b, - 0x12, 0xf0, 0xb9, 0x02, 0xf9, 0x22, 0x1d, 0x88, 0x0a, 0xdc, 0x72, 0xa1, - 0xa0, 0xd1, 0x2a, 0xa0, - 0xd0, 0x7d, 0x88, 0x66, 0x15, 0xc9, 0x12, 0xa2, 0x3d, 0x45, 0xe2, 0x65, - 0x56, 0xe1, 0x92, 0x56, - 0x55, 0x29, 0xdb, 0xca, 0xe2, 0x37, 0x03, 0xdc, 0x64, 0x2d, 0x91, 0xea, - 0x8f, 0xb1, 0x99, 0x8f, - 0x97, 0xa4, 0xea, 0xae, 0x0e, 0xdc, 0x0c, 0xf6, 0x53, 0xb4, 0x01, 0x2e, - 0x79, 0x81, 0x21, 0x79, - 0x9c, 0x81, 0x7d, 0x51, 0xcf, 0x08, 0x21, 0x20, 0xd6, 0xfd, 0x77, 0x37, - 0xfe, 0x11, 0x8f, 0xfe, - 0x5e, 0x0c, 0x4c, 0x35, 0x23, 0xe3, 0x2e, 0x0a, 0xe1, 0x64, 0xe7, 0xf3, - 0x08, 0x21, 0x37, 0x08, - 0xdb, 0x58, 0x1f, 0x99, 0xd4, 0x1d, 0x3f, 0x74, 0xb8, 0x0c, 0x94, 0x7c, - 0xd1, 0x71, 0x3c, 0xd1, - 0x19, 0xd5, 0x2e, 0xfd, 0x38, 0xf6, 0x30, 0x5e, 0x8f, 0x95, 0x04, 0xb8, - 0x27, 0x41, 0x84, 0x27, - 0xb0, 0x15, 0x64, 0x2b, 0x4d, 0xde, 0x95, 0xfe, 0x87, 0x1a, 0x6c, 0x53, - 0xa7, 0x14, 0x72, 0xa7, - 0x72, 0x98, 0x55, 0x4f, 0xa1, 0x35, 0x9a, 0xd4, 0xb0, 0x83, 0xfc, 0x97, - 0x51, 0x24, 0xca, 0x51, - 0xf7, 0xcc, 0x06, 0xe3, 0x56, 0xcb, 0x8b, 0xaa, 0xe9, 0xeb, 0x8f, 0x18, - 0x88, 0x74, 0xc1, 0x88, - 0x35, 0x41, 0x37, 0x87, 0xba, 0x20, 0x84, 0x80, 0xde, 0x72, 0x1f, 0xdc, - 0x7e, 0x44, 0x79, 0x7e, - 0x3e, 0x64, 0xa0, 0x78, 0x7b, 0xf4, 0xa9, 0x56, 0x5b, 0x3b, 0x69, 0xc5, - 0xf9, 0xd4, 0xd7, 0xf9, - 0xfc, 0xe9, 0x91, 0x1c, 0x97, 0x1f, 0xa6, 0x7c, 0x6c, 0xa2, 0xf9, 0x01, - 0x0f, 0xe4, 0x6f, 0x0f, - 0x79, 0xbd, 0xc2, 0xb0, 0x60, 0xe1, 0xb7, 0x02, 0x35, 0xca, 0x8a, 0x8e, - 0xd6, 0xb4, 0x64, 0xd6, - 0xbb, 0x30, 0xf3, 0xd4, 0x8c, 0x0a, 0xb8, 0x28, 0x02, 0x53, 0x1a, 0x4a, - 0x20, 0x84, 0xdc, 0x20, - 0x6f, 0xf7, 0x2f, 0x8d, 0x21, 0x8a, 0xed, 0x6d, 0xfc, 0x58, 0x66, 0xbc, - 0x1b, 0x57, 0xfb, 0x1b, - 0xad, 0x7a, 0x1e, 0xe9, 0xcd, 0x61, 0xe2, 0x47, 0xcb, 0xc1, 0xf6, 0x78, - 0xed, 0x67, 0x43, 0xed, - 0x28, 0x2e, 0x4d, 0x45, 0x3a, 0x9f, 0xf3, 0x39, 0x92, 0xa9, 0x85, 0xf7, - 0x34, 0x37, 0x48, 0x34, - 0xea, 0xa3, 0x7c, 0x21, 0xd6, 0x74, 0xfc, 0x13, 0xa5, 0x30, 0x15, 0x33, - 0xc2, 0x07, 0xf0, 0xc2, - 0xe1, 0x86, 0xeb, 0xde, 0x17, 0xa0, 0xd1, 0xc5, 0x20, 0x79, 0x63, 0x2a, - 0x45, 0x97, 0x5e, 0x45, - 0x23, 0x0b, 0xda, 0xba, 0xfb, 0x4b, 0xde, 0xef, 0x17, 0xe0, 0xf3, 0xee, - 0xb3, 0xa7, 0xe6, 0xb3, - 0xa6, 0x5f, 0x89, 0x16, 0x0c, 0xb5, 0xcf, 0x91, 0x4e, 0x88, 0x80, 0x61, - 0x6a, 0xf7, 0xed, 0x6a, - 0x64, 0xd2, 0xb8, 0x72, 0xe0, 0x5e, 0xc0, 0xbb, 0x79, 0x11, 0x10, 0xa5, - 0x9c, 0xc7, 0x55, 0x9c, - 0x6e, 0x38, 0x3a, 0xf2, 0x0f, 0x09, 0x8c, 0x24, 0xbc, 0xaa, 0xa0, 0xe8, - 0x91, 0xba, 0x47, 0x91, - 0xac, 0xb5, 0x0b, 0x96, 0xe3, 0xe2, 0x83, 0x0e, 0x8b, 0x33, 0x30, 0x2c, - 0x67, 0x8a, 0xff, 0x67, - 0x29, 0xe1, 0x58, 0x3a, 0x14, 0x1c, 0x92, 0x70, 0xd2, 0x5b, 0x43, 0xa3, - 0xbe, 0xda, 0xf4, 0xbe, - 0xeb, 0x6c, 0x69, 0x5e, 0xf8, 0xf7, 0x9d, 0x5a, 0xe5, 0xc2, 0xd3, 0x67, - 0x48, 0xea, 0x4c, 0x48, - 0xe0, 0x49, 0xfe, 0xa1, 0x39, 0x23, 0xb0, 0x8c, 0x60, 0x8b, 0xa5, 0x7e, - 0xcf, 0x7a, 0xe2, 0xcf, - 0x22, 0xc4, 0xcf, 0xc5, 0xd5, 0xc8, 0xbf, 0xa6, 0x57, 0x12, 0x35, 0xba, - 0x39, 0x4a, 0x5a, 0x39, - 0xa7, 0x90, 0x9c, 0x69, 0x22, 0x36, 0xae, 0xd8, 0x0e, 0x7a, 0x46, 0x35, - 0xe0, 0x1a, 0x51, 0xe0, - 0x65, 0x1d, 0xad, 0x0d, 0xce, 0xdd, 0xa1, 0xf2, 0x39, 0xe3, 0xd6, 0xf1, - 0x16, 0x2a, 0xe9, 0x16, - 0xb1, 0xda, 0x71, 0x54, 0x63, 0x5d, 0xf4, 0xb7, 0xc7, 0xe8, 0xaa, 0x07, - 0x2d, 0xf9, 0xce, 0x2d, - 0x73, 0x57, 0x40, 0x30, 0x8f, 0xb6, 0xfb, 0x9d, 0xf0, 0x71, 0x3a, 0xc3, - 0xdb, 0xc9, 0x76, 0xdb, - 0xf6, 0x03, 0x13, 0x9c, 0x78, 0x48, 0xea, 0xe3, 0xa9, 0x19, 0x49, 0x4c, - 0x02, 0x99, 0x7d, 0x02, - 0x34, 0x8e, 0x22, 0xf8, 0x94, 0xa3, 0xe5, 0xc9, 0x9e, 0x80, 0xd9, 0x88, - 0xf4, 0xa9, 0xc5, 0xf4, - 0x3f, 0xab, 0xb5, 0x07, 0x55, 0x77, 0xc8, 0x1f, 0x1b, 0xc9, 0xaf, 0x91, - 0x73, 0x39, 0x6b, 0x73, - 0xfd, 0x26, 0x84, 0x63, 0xb9, 0x9c, 0xc7, 0x35, 0x2c, 0x50, 0x3f, 0x55, - 0x85, 0x09, 0xd3, 0x85, - 0x78, 0x72, 0xd7, 0xcf, 0x4e, 0x62, 0xd6, 0x4b, 0x75, 0x38, 0x4c, 0xda, - 0x5c, 0x59, 0xd8, 0x5c, - 0xba, 0xff, 0xe6, 0xab, 0xa2, 0x89, 0xd9, 0x61, 0x42, 0xa1, 0xdc, 0x1e, - 0xaa, 0x69, 0x60, 0xaa, - 0x13, 0x3f, 0xac, 0x7d, 0xd7, 0xa1, 0x7c, 0xc1, 0x4a, 0x2e, 0xb4, 0xf5, - 0x2a, 0x3c, 0x96, 0x2a, - 0xd1, 0xb2, 0x9d, 0x19, 0x3b, 0x4a, 0x73, 0xeb, 0x7d, 0xb7, 0x24, 0x31, - 0xdc, 0x0c, 0x2e, 0xdc, - 0x54, 0xe6, 0xce, 0xb5, 0xcc, 0xb4, 0x62, 0x95, 0x24, 0xdf, 0x57, 0xbe, - 0x05, 0x5c, 0x25, 0x05, - 0x96, 0x6b, 0xff, 0xd1, 0x20, 0x5f, 0x6d, 0xbf, 0x13, 0x46, 0xc7, 0x7a, - 0xf3, 0x6c, 0x9d, 0xf3, - 0x9d, 0x4e, 0x68, 0x2e, 0xe1, 0x8b, 0x40, 0x69, 0x96, 0x0f, 0xb1, 0x63, - 0x74, 0xfc, 0x33, 0x74, - 0x5f, 0xc3, 0x59, 0x4a, 0x0d, 0x60, 0x4f, 0x43, 0xa1, 0x96, 0x21, 0xa7, - 0x82, 0xcc, 0x8b, 0x82, - 0xda, 0x97, 0x0a, 0xe6, 0xfa, 0x9e, 0x5e, 0x3d, 0xf8, 0xfe, 0x52, 0x28, - 0x5b, 0x9c, 0x80, 0x5b, - 0x18, 0x1a, 0x3b, 0x82, 0x16, 0x75, 0x51, 0x17, 0xcf, 0x67, 0xc2, 0xec, - 0xad, 0xac, 0x38, 0xad, - 0xcc, 0xdd, 0xe7, 0xdb, 0xbb, 0xf5, 0x04, 0x52, 0x31, 0x6c, 0xbe, 0x1a, - 0x96, 0x7f, 0x1f, 0x96, - 0x0e, 0x50, 0xd6, 0xbf, 0x57, 0x1e, 0x0b, 0x78, 0x06, 0xf5, 0x2e, 0xde, - 0x60, 0x4f, 0xa7, 0x60, - 0x8b, 0x04, 0x85, 0x13, 0xa0, 0xe0, 0x1a, 0x06, 0x5f, 0x9d, 0x5d, 0x51, - 0xb9, 0x1f, 0xac, 0xb9, - 0x49, 0x89, 0xb4, 0x77, 0x4c, 0x0b, 0x15, 0x2c, 0x68, 0x04, 0xcd, 0x95, - 0x4f, 0x2f, 0x14, 0x4f, - 0x42, 0xac, 0x23, 0x88, 0x8d, 0xdf, 0x38, 0xfa, 0xed, 0x4d, 0xbb, 0x8c, - 0xc8, 0xbf, 0xba, 0xc8, - 0x80, 0x21, 0x12, 0xec, 0x61, 0x34, 0x37, 0xd0, 0xda, 0xd4, 0x2b, 0x48, - 0x3e, 0x8f, 0x02, 0x3e, - 0x05, 0x75, 0x41, 0x40, 0x96, 0xca, 0x26, 0xae, 0x83, 0xbc, 0x58, 0xc7, - 0xe7, 0xdf, 0x09, 0xe7, - 0xc7, 0xf8, 0x70, 0x24, 0x7a, 0x21, 0x29, 0x84, 0xb4, 0x25, 0xc8, 0x03, - 0x11, 0xef, 0xb1, 0x11, - 0x94, 0x36, 0xd5, 0x2f, 0x7c, 0x9a, 0xaf, 0x2d, 0x93, 0x61, 0x88, 0xd2, - 0x24, 0x75, 0x26, 0x24, - 0x56, 0xbb, 0xe4, 0x4b, 0x90, 0x71, 0xa0, 0x07, 0xa4, 0xf8, 0x18, 0x16, - 0xd2, 0x45, 0x9e, 0xd2, - 0xd3, 0xef, 0xb7, 0xe7, 0x67, 0x8f, 0xb1, 0x79, 0xfd, 0x90, 0x6b, 0x99, - 0x0b, 0x15, 0x95, 0x0b, - 0x11, 0x62, 0x86, 0x83, 0x8b, 0x64, 0xbe, 0x53, 0xca, 0x09, 0xfb, 0x5d, - 0xfd, 0x25, 0x2d, 0xfd, - 0x1a, 0x47, 0x11, 0x7c, 0x4a, 0xb0, 0x93, 0x85, 0x4f, 0x40, 0x8d, 0x44, - 0x7a, 0xb5, 0x83, 0x7a, - 0xd8, 0xca, 0x20, 0x18, 0xa6, 0x5b, 0x9c, 0xaf, 0x78, 0xd9, 0x1d, 0x80, - 0x8c, 0x85, 0x3b, 0x8c, - 0x5d, 0x9e, 0x73, 0xb4, 0x51, 0xa5, 0x8d, 0xd1, 0x21, 0xb1, 0x6e, 0x0f, - 0x55, 0xd5, 0x30, 0x55, - 0x9f, 0x13, 0x42, 0xd0, 0xbd, 0x4e, 0x82, 0xfb, 0x16, 0x28, 0xfe, 0xcb, - 0xa3, 0xe5, 0x88, 0xa3, - 0x4b, 0xd4, 0x9e, 0x89, 0x10, 0xce, 0xd7, 0xbe, 0xe8, 0x23, 0x82, 0x3d, - 0x98, 0x36, 0xaf, 0x98, - 0x89, 0x59, 0xaf, 0xed, 0xfc, 0x25, 0xd8, 0x94, 0xdf, 0xba, 0x12, 0xf9, - 0x6e, 0x06, 0x17, 0x6e, - 0x0c, 0x0d, 0xfc, 0x41, 0x0b, 0xdb, 0xc9, 0xea, 0x86, 0xd2, 0x61, 0x76, - 0xb7, 0x56, 0x1c, 0xb7, - 0xce, 0x80, 0xcd, 0x25, 0xe7, 0x30, 0xc6, 0xc0, 0xb1, 0x4b, 0xf1, 0xb2, - 0x41, 0x66, 0xa4, 0x41, - 0xc5, 0xa5, 0x5a, 0xda, 0x26, 0xe4, 0xeb, 0x16, 0x34, 0x02, 0x87, 0xab, - 0xc6, 0xf6, 0x0a, 0xc6, - 0x07, 0x28, 0x6b, 0xbe, 0xca, 0x0f, 0xe4, 0x3c, 0x03, 0x9b, 0x17, 0x6f, - 0x30, 0xc6, 0xb2, 0x30, - 0x82, 0x7c, 0x38, 0x12, 0x3d, 0xf1, 0xf5, 0x42, 0x5a, 0xf3, 0x64, 0xe0, - 0xe9, 0x96, 0xb9, 0xe9, - 0x40, 0xf1, 0x09, 0x76, 0xd1, 0x1a, 0xfa, 0x68, 0x6d, 0x6a, 0xf4, 0x24, - 0x1f, 0xa6, 0x01, 0x1f, - 0xe9, 0x31, 0x43, 0xa0, 0xa4, 0x32, 0x5f, 0xc8, 0x65, 0xe5, 0x9c, 0xcf, - 0x9f, 0xf3, 0xf7, 0x9f, - 0x2b, 0xbc, 0x72, 0xc4, 0x48, 0xd9, 0x50, 0xe2, 0x52, 0x7c, 0x0c, 0x0b, - 0x69, 0xc3, 0x4f, 0x69, - 0xae, 0xe8, 0x21, 0x68, 0xbf, 0x27, 0x41, 0x9c, 0x0b, 0x14, 0x7f, 0x84, - 0xb0, 0x93, 0x44, 0xb0, - 0x6c, 0x65, 0x10, 0x0c, 0x53, 0xcc, 0x4e, 0xb6, 0x3c, 0x8d, 0xef, 0x40, - 0x46, 0xa3, 0xfc, 0x46, - 0x67, 0x40, 0x87, 0xf3, 0x92, 0x18, 0x63, 0x60, 0xb9, 0xc4, 0x99, 0x59, - 0xc1, 0x33, 0x52, 0xc1, - 0xa5, 0xcd, 0xb6, 0x97, 0x7e, 0xf3, 0x6c, 0x4a, 0x8e, 0x5d, 0x09, 0x9d, - 0x37, 0x03, 0xea, 0x37, - 0x20, 0x99, 0xe5, 0x3b, 0x89, 0x0d, 0x7d, 0x34, 0xd7, 0x35, 0x7a, 0x12, - 0xee, 0x53, 0xe1, 0xee, - 0xe2, 0x14, 0xd4, 0x5f, 0x65, 0xe6, 0x72, 0x1e, 0xe0, 0xac, 0xea, 0xd6, - 0x18, 0x63, 0x59, 0x18, - 0x36, 0xd3, 0x08, 0x06, 0xc8, 0x66, 0x27, 0x5b, 0x1e, 0xa7, 0x96, 0x20, - 0x23, 0xb0, 0x7e, 0x23, - 0xf4, 0x5e, 0x39, 0x62, 0x24, 0x8d, 0x28, 0x71, 0x29, 0x3e, 0x06, 0xe4, - 0xd5, 0x80, 0xc6, 0xd5, - 0x71, 0x0a, 0x6a, 0xce, 0xd3, 0x73, 0x39, 0x0f, 0x70, 0x56, 0x75, 0x6b, - 0x0c, 0xd0, 0xcd, 0x0c, - 0xb3, 0x87, 0x5b, 0xaa, 0x3f, 0x98, 0x36, 0x25, 0x47, 0xcf, 0xe5, 0xaf, - 0xfa, 0xe0, 0x75, 0xfa, - 0xb8, 0xa2, 0xcc, 0x55, 0xfe, 0x4c, 0x1b, 0xf3, 0xc2, 0x86, 0x93, 0xb6, - 0x7d, 0x70, 0xdb, 0x7d, - 0x7a, 0x2f, 0xfd, 0x31, 0x12, 0xa7, 0x14, 0xd9, 0xf5, 0x1f, 0x03, 0x72, - 0x8b, 0x40, 0x63, 0x8b, - 0xff, 0x7b, 0xae, 0x9d, 0xe5, 0x59, 0x05, 0xa7, 0xac, 0x77, 0x70, 0xfd, - 0x52, 0x10, 0x68, 0x52, - 0x3d, 0xf6, 0x9f, 0xf9, 0x09, 0xb2, 0x0a, 0x8d, 0x9b, 0xee, 0xe0, 0x39, - 0xa4, 0x20, 0xd0, 0xa4, - 0x59, 0x24, 0x27, 0x8b, 0xe9, 0xec, 0xca, 0x36, 0xe2, 0xff, 0xf0, 0x9c, - 0x38, 0xe7, 0x85, 0x38, - 0x9b, 0xa9, 0x16, 0xef, 0x05, 0x07, 0xc5, 0x1c, 0xd5, 0x66, 0x60, 0x58, - 0xce, 0xd7, 0x3d, 0xce, - 0x1e, 0xfd, 0x45, 0x43, 0xf2, 0xf9, 0xd4, 0x62, 0x8c, 0x0e, 0x13, 0xd7, - 0x17, 0x87, 0x36, 0x17, - 0xdc, 0x70, 0x74, 0x27, 0x1e, 0x12, 0xdb, 0x48, 0xbb, 0x97, 0x83, 0x13, - 0xe1, 0xb7, 0x8e, 0xe1, - 0xd7, 0x55, 0xe3, 0xd8, 0xdf, 0xc6, 0xf6, 0x9e, 0x3e, 0xde, 0xf5, 0x0a, - 0x66, 0x27, 0x20, 0x66, - 0x15, 0xd8, 0xd2, 0xbc, 0x33, 0x2d, 0xf9, 0xb4, 0x09, 0x47, 0x65, 0xce, - 0x90, 0x17, 0x98, 0x90, - 0x90, 0x8c, 0x81, 0x10, 0xc4, 0xd3, 0xe8, 0xca, 0x50, 0x2f, 0x16, 0x41, - 0x49, 0x47, 0x93, 0x49, - 0x52, 0x01, 0xb0, 0x74, 0x28, 0x38, 0xe7, 0xe0, 0x67, 0xb6, 0x86, 0x85, - 0xbf, 0x77, 0x2b, 0xbf, - 0x86, 0xc6, 0x6c, 0x2d, 0x85, 0xb8, 0xb2, 0xa5, 0x99, 0xbd, 0xfa, 0x73, - 0x84, 0xa4, 0x0c, 0x84, - 0x44, 0x4b, 0x5d, 0x49, 0x69, 0x53, 0xbd, 0x8f, 0xae, 0x24, 0x6a, 0xb7, - 0x72, 0x94, 0xb4, 0x72, - 0xc1, 0x1f, 0x0e, 0xe5, 0x9e, 0xad, 0xac, 0xf1, 0xf7, 0x4c, 0x19, 0x38, - 0xab, 0xc4, 0xbf, 0xab, - 0x03, 0x92, 0x3f, 0x81, 0x72, 0x46, 0xa3, 0xdb, 0xc0, 0xd5, 0x89, 0xfc, - 0x5d, 0xf4, 0x07, 0x5d, - 0x08, 0xb7, 0xa8, 0x7e, 0xb3, 0x92, 0x8e, 0x0d, 0x45, 0x9c, 0xff, 0xe5, - 0xda, 0x64, 0xa9, 0xda, - 0xca, 0x3a, 0x99, 0x1a, 0x5f, 0x79, 0x81, 0x27, 0x72, 0x05, 0x6f, 0x21, - 0x2c, 0x54, 0x11, 0x2c, - 0x4f, 0x6e, 0xca, 0xb6, 0xa8, 0x87, 0x90, 0x59, 0x2b, 0x6d, 0x1c, 0xae, - 0xf5, 0x04, 0x1a, 0xf5, - 0x8d, 0xe3, 0xfb, 0xd2, 0x44, 0x6c, 0x9f, 0x73, 0x1c, 0xf4, 0x8c, 0x6a, - 0x03, 0x34, 0xa2, 0x03, - 0x24, 0x23, 0xb1, 0x04, 0x31, 0x44, 0x3a, 0xd3, 0x14, 0x7b, 0xe4, 0x81, - 0x83, 0x61, 0x54, 0x83, - 0xe6, 0xae, 0x80, 0x60, 0xdd, 0xaf, 0x35, 0xf9, 0x23, 0xe2, 0x74, 0x45, - 0x75, 0x51, 0xec, 0x75, - 0x63, 0xfa, 0xd3, 0xcc, 0x2a, 0x51, 0x24, 0x87, 0x7a, 0x8a, 0x07, 0xca, - 0xac, 0x01, 0xe7, 0xac, - 0xa1, 0x77, 0xe2, 0xa8, 0xc6, 0xba, 0x2b, 0xad, 0x4d, 0x13, 0x97, 0x0e, - 0x5a, 0x31, 0x5f, 0x5a, - 0xaa, 0x52, 0x75, 0x57, 0x07, 0x6e, 0x06, 0x7b, 0xc8, 0x5a, 0xe1, 0x17, - 0xdd, 0xa1, 0xf1, 0xdd, - 0x68, 0xdf, 0x44, 0x33, 0xeb, 0x85, 0x09, 0x51, 0xff, 0xc3, 0x71, 0xd3, - 0x2b, 0x91, 0x49, 0x2b, - 0xed, 0x8b, 0x17, 0x9f, 0x1c, 0x7b, 0x18, 0x2f, 0xa6, 0xab, 0x02, 0x5c, - 0xf2, 0xc1, 0x42, 0xf2, - 0x2f, 0x06, 0x26, 0xfb, 0xf0, 0x90, 0x17, 0x05, 0x91, 0x32, 0x92, 0x98, - 0x04, 0xf1, 0xfa, 0x04, - 0xfb, 0xc1, 0xfa, 0xa2, 0x5d, 0x10, 0x42, 0x40, 0x6f, 0x39, 0xee, 0x6e, - 0x3f, 0x22, 0xdd, 0x3f, - 0x39, 0x4c, 0xcb, 0xc6, 0xb1, 0xfb, 0x4d, 0x6a, 0x58, 0xa0, 0x7e, 0xaa, - 0xc9, 0x12, 0x65, 0xc9, - 0xbc, 0x18, 0x98, 0x6a, 0x46, 0x05, 0x5c, 0x14, 0x01, 0xc8, 0x0d, 0x25, - 0x10, 0x42, 0x6e, 0x10, - 0x7e, 0x95, 0xa9, 0x0e, 0xaa, 0xee, 0x53, 0x3e, 0x36, 0x51, 0x9d, 0xe1, - 0xe6, 0x72, 0xd6, 0xe6, - 0x75, 0xb0, 0x3e, 0xf1, 0x6b, 0x3a, 0x7e, 0xe8, 0xb3, 0x18, 0xeb, 0xf8, - 0x61, 0xe2, 0x78, 0x61, - 0xb7, 0x3d, 0x0f, 0x95, 0x87, 0xd1, 0x71, 0xc2, 0x84, 0x81, 0x7b, 0x3c, - 0x97, 0xd2, 0xc0, 0x97, - 0x32, 0x69, 0x5c, 0x39, 0x70, 0x2f, 0x60, 0xbc, 0xdd, 0xe9, 0x08, 0xb3, - 0x4e, 0x82, 0xcb, 0x4e, - 0xf0, 0xe4, 0x6d, 0x5d, 0x9c, 0xc4, 0x6f, 0x96, 0xea, 0x70, 0x98, 0x77, - 0xb8, 0xb2, 0x73, 0xb8, - 0xa3, 0x2a, 0xc8, 0x56, 0x9a, 0x7f, 0xe9, 0x3f, 0xcd, 0x34, 0xd8, 0xa6, - 0x8d, 0x28, 0xe4, 0x8d, - 0x61, 0xa7, 0xf9, 0x32, 0x76, 0x94, 0xe6, 0x15, 0xfa, 0xad, 0x48, 0x62, - 0x7b, 0x18, 0x5c, 0x7b, - 0xe4, 0xf3, 0xaa, 0x9e, 0x81, 0x6a, 0xf7, 0x6b, 0xa3, 0xc5, 0x3b, 0xed, - 0xa2, 0x48, 0x57, 0xa2, - 0x26, 0x7e, 0x9b, 0xfa, 0x6d, 0x81, 0xf8, 0x41, 0x94, 0x5c, 0xab, 0x29, - 0x54, 0x78, 0xef, 0x54, - 0x2d, 0x5b, 0x0c, 0x05, 0xac, 0x55, 0xd5, 0x97, 0x11, 0x15, 0xdd, 0x30, - 0xd3, 0xe8, 0x41, 0xd3, - 0xef, 0xd6, 0x3d, 0x61, 0x40, 0xbe, 0xda, 0xbd, 0x26, 0x8c, 0x4d, 0xf4, - 0x25, 0xd8, 0xf9, 0x25, - 0x6a, 0x82, 0x6e, 0xcd, 0xb7, 0x40, 0xcb, 0xc3, 0x7f, 0xe4, 0x3e, 0x7b, - 0xfc, 0x88, 0xf2, 0xfc, - 0xa8, 0x0f, 0x5f, 0xa9, 0x5b, 0xab, 0xc4, 0xe9, 0x48, 0x7d, 0xae, 0xbf, - 0x0a, 0xb8, 0x4a, 0x0a, - 0x7c, 0xc8, 0x83, 0xf0, 0xf6, 0x2b, 0x91, 0xac, 0xb6, 0x76, 0xd2, 0x49, - 0x31, 0x6b, 0x6d, 0x31, - 0xbe, 0x45, 0xb2, 0x94, 0x1a, 0xc0, 0x9e, 0x86, 0x81, 0xef, 0x42, 0x8d, - 0xc7, 0x5b, 0xd5, 0xc7, - 0x3b, 0x11, 0xe1, 0x38, 0xed, 0x3e, 0x8f, 0xf8, 0xd8, 0x87, 0x31, 0x02, - 0x1e, 0x0b, 0xde, 0x1e, - 0xf9, 0x9c, 0xd0, 0x5c, 0x01, 0xd5, 0x80, 0xd2, 0xef, 0x1e, 0xa1, 0xc6, - 0xe8, 0x3b, 0x66, 0xe8, - 0xf2, 0xb9, 0x47, 0xa3, 0xc0, 0x01, 0xad, 0x04, 0x6a, 0x57, 0xd7, 0xdf, - 0x6f, 0xab, 0xc8, 0x6f, - 0x30, 0x34, 0x76, 0xc7, 0x2c, 0xea, 0xa2, 0x2e, 0x5d, 0xce, 0x47, 0x1b, - 0x99, 0x9b, 0x70, 0x99, - 0xb5, 0x60, 0x25, 0x6b, 0xdb, 0x14, 0xb3, 0x50, 0x04, 0xa6, 0x34, 0x94, - 0x40, 0xcb, 0x7b, 0x40, - 0x77, 0xed, 0x14, 0x0f, 0x37, 0xff, 0xbc, 0x7a, 0x33, 0x3f, 0xa4, 0x50, - 0xb6, 0xfb, 0xc3, 0xb6, - 0xde, 0x2d, 0x5e, 0xd9, 0x42, 0xd7, 0x19, 0xda, 0x3b, 0xb0, 0xcc, 0xbb, - 0x36, 0xae, 0x35, 0x36, - 0x1c, 0xa0, 0x6f, 0xbd, 0xae, 0x3c, 0x16, 0xf0, 0x0c, 0x29, 0x5c, 0x7f, - 0xc0, 0x9e, 0x8d, 0xc0, - 0x99, 0xf4, 0x3c, 0x11, 0x59, 0xc2, 0x07, 0x8e, 0x55, 0x41, 0x2f, 0xf0, - 0x19, 0xce, 0x86, 0x19, - 0x5b, 0x79, 0x0d, 0x75, 0xb5, 0x29, 0x08, 0xa4, 0x62, 0xd8, 0xbf, 0x34, - 0xef, 0xfe, 0x3e, 0xef, - 0x50, 0x5c, 0x9a, 0x8a, 0x74, 0xfd, 0x25, 0x72, 0xe7, 0x91, 0xc9, 0x2d, - 0x68, 0x6e, 0x90, 0x68, - 0x92, 0xd1, 0xab, 0xee, 0x98, 0x16, 0x2a, 0x58, 0xd0, 0x08, 0x59, 0xe9, - 0x9e, 0x5e, 0x28, 0x9e, - 0x17, 0x85, 0xf8, 0x42, 0x6f, 0xe8, 0x3b, 0x26, 0x89, 0x60, 0x2a, 0x66, - 0x47, 0x0e, 0x23, 0x47, - 0xd5, 0x08, 0xc9, 0x26, 0x83, 0x03, 0x34, 0x0c, 0xbe, 0xf9, 0xba, 0xa2, - 0xb1, 0x3e, 0x9b, 0xb1, - 0x01, 0xcf, 0x15, 0x7f, 0x2e, 0x83, 0x61, 0x49, 0x40, 0xf2, 0xc6, 0x54, - 0x8a, 0xed, 0xbc, 0x8a, - 0xc3, 0x42, 0x24, 0x1b, 0xc2, 0x68, 0x6e, 0x63, 0x77, 0x6b, 0x56, 0x90, - 0x7c, 0xdd, 0x04, 0x7c, - 0x46, 0x16, 0x77, 0xb7, 0x35, 0x96, 0x7f, 0x1d, 0x2e, 0x03, 0x25, 0x1f, - 0xa5, 0x8d, 0x0f, 0xa5, - 0x84, 0x9b, 0x46, 0xd3, 0xd9, 0x7d, 0x70, 0x37, 0x19, 0x9a, 0xb5, 0xdb, - 0x53, 0xbd, 0xb7, 0x53, - 0x8f, 0xbe, 0xd1, 0x2c, 0x18, 0xa9, 0x5d, 0xe1, 0x9c, 0xd3, 0xc3, 0xc2, - 0xd4, 0x2d, 0x19, 0xd4, - 0x4d, 0x33, 0xe0, 0x48, 0xf4, 0x42, 0x52, 0xcb, 0xab, 0x4a, 0x53, 0x06, - 0x22, 0x1d, 0xa1, 0x22, - 0xc8, 0x67, 0xb3, 0xe4, 0x03, 0xbc, 0x43, 0xb5, 0xf2, 0x22, 0x20, 0x89, - 0xfb, 0x4d, 0xaa, 0xfb, - 0x0a, 0xea, 0x82, 0x80, 0xef, 0x57, 0x4c, 0x9f, 0xc5, 0xbb, 0xb0, 0x4d, - 0x0d, 0x7d, 0x12, 0x0d, - }, - { /* 6 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0xc0, 0xb4, 0xa6, 0xff, 0x39, 0x2f, 0x54, 0x6c, 0xaf, 0xeb, 0xe1, 0xd4, - 0xd7, 0x63, 0x64, 0xbf, - 0x43, 0xab, 0x8f, 0x3d, 0x72, 0x5e, 0xa8, 0xd8, 0x9d, 0x15, 0x01, 0x6b, - 0x6d, 0xc6, 0xc8, 0xbd, - 0x83, 0x1f, 0x29, 0xc2, 0x4b, 0x71, 0xfc, 0xb4, 0x32, 0xfe, 0xe0, 0xbf, - 0xba, 0xa5, 0xac, 0x02, - 0x86, 0x95, 0xdd, 0x7a, 0xe4, 0xbc, 0x93, 0x73, 0xf9, 0x2a, 0x02, 0xd6, - 0xda, 0x4f, 0x53, 0xb9, - 0x46, 0x21, 0x7b, 0x85, 0xdd, 0x93, 0xc7, 0x1f, 0x56, 0xc1, 0xe3, 0x02, - 0x0d, 0x2c, 0x37, 0x06, - 0xc5, 0x3e, 0x52, 0x47, 0x96, 0xe2, 0x3b, 0xab, 0x64, 0x3f, 0x03, 0xbd, - 0xb7, 0x89, 0x9b, 0x04, - 0x05, 0x8a, 0xf4, 0xb8, 0xaf, 0xcd, 0x6f, 0xc7, 0xcb, 0xd4, 0xe2, 0x69, - 0x60, 0xea, 0xff, 0xbb, - 0xcf, 0xe9, 0x79, 0xf4, 0x0b, 0xbb, 0xe5, 0xe6, 0x31, 0x54, 0x04, 0x6f, - 0x77, 0x9e, 0xa6, 0xb1, - 0x0f, 0x5d, 0xdf, 0x0b, 0x32, 0x94, 0xb1, 0x8a, 0x9e, 0xbf, 0xe5, 0xbb, - 0xa0, 0xfd, 0xc2, 0x0e, - 0x8c, 0x42, 0xf6, 0xc9, 0x79, 0xe5, 0x4d, 0x3e, 0xac, 0x41, 0x05, 0x04, - 0x1a, 0x58, 0x6e, 0x0c, - 0x4c, 0xf6, 0x50, 0x36, 0x40, 0xca, 0x19, 0x52, 0x03, 0xaa, 0xe4, 0xd0, - 0xcd, 0x3b, 0x0a, 0xb3, - 0x49, 0x7c, 0xa4, 0x8e, 0xef, 0x07, 0x76, 0x95, 0xc8, 0x7e, 0x06, 0xb9, - 0xad, 0xd1, 0xf5, 0x08, - 0x89, 0xc8, 0x02, 0x71, 0xd6, 0x28, 0x22, 0xf9, 0x67, 0x95, 0xe7, 0x6d, - 0x7a, 0xb2, 0x91, 0xb7, - 0x0a, 0xd7, 0x2b, 0xb3, 0x9d, 0x59, 0xde, 0x4d, 0x55, 0x6b, 0x07, 0xd2, - 0xc0, 0x17, 0x3d, 0xb5, - 0xca, 0x63, 0x8d, 0x4c, 0xa4, 0x76, 0x8a, 0x21, 0xfa, 0x80, 0xe6, 0x06, - 0x17, 0x74, 0x59, 0x0a, - 0x5d, 0x11, 0xf2, 0x2b, 0x16, 0xb5, 0x09, 0x0f, 0x62, 0xa8, 0x08, 0xde, - 0xee, 0xff, 0x8f, 0xa1, - 0x9d, 0xa5, 0x54, 0xd4, 0x2f, 0x9a, 0x5d, 0x63, 0xcd, 0x43, 0xe9, 0x0a, - 0x39, 0x9c, 0xeb, 0x1e, - 0x1e, 0xba, 0x7d, 0x16, 0x64, 0xeb, 0xa1, 0xd7, 0xff, 0xbd, 0x09, 0xb5, - 0x83, 0x39, 0x47, 0x1c, - 0xde, 0x0e, 0xdb, 0xe9, 0x5d, 0xc4, 0xf5, 0xbb, 0x50, 0x56, 0xe8, 0x61, - 0x54, 0x5a, 0x23, 0xa3, - 0xdb, 0x84, 0x2f, 0x51, 0xf2, 0x09, 0x9a, 0x7c, 0x9b, 0x82, 0x0a, 0x08, - 0x34, 0xb0, 0xdc, 0x18, - 0x1b, 0x30, 0x89, 0xae, 0xcb, 0x26, 0xce, 0x10, 0x34, 0x69, 0xeb, 0xdc, - 0xe3, 0xd3, 0xb8, 0xa7, - 0x98, 0x2f, 0xa0, 0x6c, 0x80, 0x57, 0x32, 0xa4, 0x06, 0x97, 0x0b, 0x63, - 0x59, 0x76, 0x14, 0xa5, - 0x58, 0x9b, 0x06, 0x93, 0xb9, 0x78, 0x66, 0xc8, 0xa9, 0x7c, 0xea, 0xb7, - 0x8e, 0x15, 0x70, 0x1a, - 0x92, 0xf8, 0x8b, 0xdf, 0x1d, 0x0e, 0xec, 0xe9, 0x53, 0xfc, 0x0c, 0xb1, - 0x99, 0x61, 0x29, 0x10, - 0x52, 0x4c, 0x2d, 0x20, 0x24, 0x21, 0xb8, 0x85, 0xfc, 0x17, 0xed, 0x65, - 0x4e, 0x02, 0x4d, 0xaf, - 0xd1, 0x53, 0x04, 0xe2, 0x6f, 0x50, 0x44, 0x31, 0xce, 0xe9, 0x0d, 0xda, - 0xf4, 0xa7, 0xe1, 0xad, - 0x11, 0xe7, 0xa2, 0x1d, 0x56, 0x7f, 0x10, 0x5d, 0x61, 0x02, 0xec, 0x0e, - 0x23, 0xc4, 0x85, 0x12, - 0x14, 0x6d, 0x56, 0xa5, 0xf9, 0xb2, 0x7f, 0x9a, 0xaa, 0xd6, 0x0e, 0x67, - 0x43, 0x2e, 0x7a, 0xa9, - 0xd4, 0xd9, 0xf0, 0x5a, 0xc0, 0x9d, 0x2b, 0xf6, 0x05, 0x3d, 0xef, 0xb3, - 0x94, 0x4d, 0x1e, 0x16, - 0x57, 0xc6, 0xd9, 0x98, 0x8b, 0xec, 0xd7, 0x42, 0x37, 0xc3, 0x0f, 0x0c, - 0x2e, 0xe8, 0xb2, 0x14, - 0x97, 0x72, 0x7f, 0x67, 0xb2, 0xc3, 0x83, 0x2e, 0x98, 0x28, 0xee, 0xd8, - 0xf9, 0x8b, 0xd6, 0xab, - 0xba, 0x22, 0x27, 0x56, 0x2c, 0xa9, 0x12, 0x1e, 0xc4, 0x93, 0x10, 0x7f, - 0x1f, 0x3d, 0xdd, 0x81, - 0x7a, 0x96, 0x81, 0xa9, 0x15, 0x86, 0x46, 0x72, 0x6b, 0x78, 0xf1, 0xab, - 0xc8, 0x5e, 0xb9, 0x3e, - 0xf9, 0x89, 0xa8, 0x6b, 0x5e, 0xf7, 0xba, 0xc6, 0x59, 0x86, 0x11, 0x14, - 0x72, 0xfb, 0x15, 0x3c, - 0x39, 0x3d, 0x0e, 0x94, 0x67, 0xd8, 0xee, 0xaa, 0xf6, 0x6d, 0xf0, 0xc0, - 0xa5, 0x98, 0x71, 0x83, - 0x3c, 0xb7, 0xfa, 0x2c, 0xc8, 0x15, 0x81, 0x6d, 0x3d, 0xb9, 0x12, 0xa9, - 0xc5, 0x72, 0x8e, 0x38, - 0xfc, 0x03, 0x5c, 0xd3, 0xf1, 0x3a, 0xd5, 0x01, 0x92, 0x52, 0xf3, 0x7d, - 0x12, 0x11, 0xea, 0x87, - 0x7f, 0x1c, 0x75, 0x11, 0xba, 0x4b, 0x29, 0xb5, 0xa0, 0xac, 0x13, 0xc2, - 0xa8, 0xb4, 0x46, 0x85, - 0xbf, 0xa8, 0xd3, 0xee, 0x83, 0x64, 0x7d, 0xd9, 0x0f, 0x47, 0xf2, 0x16, - 0x7f, 0xd7, 0x22, 0x3a, - 0x75, 0xcb, 0x5e, 0xa2, 0x27, 0x12, 0xf7, 0xf8, 0xf5, 0xc7, 0x14, 0x10, - 0x68, 0xa3, 0x7b, 0x30, - 0xb5, 0x7f, 0xf8, 0x5d, 0x1e, 0x3d, 0xa3, 0x94, 0x5a, 0x2c, 0xf5, 0xc4, - 0xbf, 0xc0, 0x1f, 0x8f, - 0x36, 0x60, 0xd1, 0x9f, 0x55, 0x4c, 0x5f, 0x20, 0x68, 0xd2, 0x15, 0x7b, - 0x05, 0x65, 0xb3, 0x8d, - 0xf6, 0xd4, 0x77, 0x60, 0x6c, 0x63, 0x0b, 0x4c, 0xc7, 0x39, 0xf4, 0xaf, - 0xd2, 0x06, 0xd7, 0x32, - 0xf3, 0x5e, 0x83, 0xd8, 0xc3, 0xae, 0x64, 0x8b, 0x0c, 0xed, 0x16, 0xc6, - 0xb2, 0xec, 0x28, 0x89, - 0x33, 0xea, 0x25, 0x27, 0xfa, 0x81, 0x30, 0xe7, 0xa3, 0x06, 0xf7, 0x12, - 0x65, 0x8f, 0x4c, 0x36, - 0xb0, 0xf5, 0x0c, 0xe5, 0xb1, 0xf0, 0xcc, 0x53, 0x91, 0xf8, 0x17, 0xad, - 0xdf, 0x2a, 0xe0, 0x34, - 0x70, 0x41, 0xaa, 0x1a, 0x88, 0xdf, 0x98, 0x3f, 0x3e, 0x13, 0xf6, 0x79, - 0x08, 0x49, 0x84, 0x8b, - 0xe7, 0x33, 0xd5, 0x7d, 0x3a, 0x1c, 0x1b, 0x11, 0xa6, 0x3b, 0x18, 0xa1, - 0xf1, 0xc2, 0x52, 0x20, - 0x27, 0x87, 0x73, 0x82, 0x03, 0x33, 0x4f, 0x7d, 0x09, 0xd0, 0xf9, 0x75, - 0x26, 0xa1, 0x36, 0x9f, - 0xa4, 0x98, 0x5a, 0x40, 0x48, 0x42, 0xb3, 0xc9, 0x3b, 0x2e, 0x19, 0xca, - 0x9c, 0x04, 0x9a, 0x9d, - 0x64, 0x2c, 0xfc, 0xbf, 0x71, 0x6d, 0xe7, 0xa5, 0x94, 0xc5, 0xf8, 0x1e, - 0x4b, 0x67, 0xfe, 0x22, - 0x61, 0xa6, 0x08, 0x07, 0xde, 0xa0, 0x88, 0x62, 0x5f, 0x11, 0x1a, 0x77, - 0x2b, 0x8d, 0x01, 0x99, - 0xa1, 0x12, 0xae, 0xf8, 0xe7, 0x8f, 0xdc, 0x0e, 0xf0, 0xfa, 0xfb, 0xa3, - 0xfc, 0xee, 0x65, 0x26, - 0x22, 0x0d, 0x87, 0x3a, 0xac, 0xfe, 0x20, 0xba, 0xc2, 0x04, 0x1b, 0x1c, - 0x46, 0x4b, 0xc9, 0x24, - 0xe2, 0xb9, 0x21, 0xc5, 0x95, 0xd1, 0x74, 0xd6, 0x6d, 0xef, 0xfa, 0xc8, - 0x91, 0x28, 0xad, 0x9b, - 0x28, 0xda, 0xac, 0x89, 0x31, 0xa7, 0xfe, 0xf7, 0x97, 0x6f, 0x1c, 0xce, - 0x86, 0x5c, 0xf4, 0x91, - 0xe8, 0x6e, 0x0a, 0x76, 0x08, 0x88, 0xaa, 0x9b, 0x38, 0x84, 0xfd, 0x1a, - 0x51, 0x3f, 0x90, 0x2e, - 0x6b, 0x71, 0x23, 0xb4, 0x43, 0xf9, 0x56, 0x2f, 0x0a, 0x7a, 0x1d, 0xa5, - 0xeb, 0x9a, 0x3c, 0x2c, - 0xab, 0xc5, 0x85, 0x4b, 0x7a, 0xd6, 0x02, 0x43, 0xa5, 0x91, 0xfc, 0x71, - 0x3c, 0xf9, 0x58, 0x93, - 0xae, 0x4f, 0x71, 0xf3, 0xd5, 0x1b, 0x6d, 0x84, 0x6e, 0x45, 0x1e, 0x18, - 0x5c, 0x13, 0xa7, 0x28, - 0x6e, 0xfb, 0xd7, 0x0c, 0xec, 0x34, 0x39, 0xe8, 0xc1, 0xae, 0xff, 0xcc, - 0x8b, 0x70, 0xc3, 0x97, - 0xed, 0xe4, 0xfe, 0xce, 0xa7, 0x45, 0xc5, 0x5c, 0xf3, 0x50, 0x1f, 0x73, - 0x31, 0xd5, 0x6f, 0x95, - 0x2d, 0x50, 0x58, 0x31, 0x9e, 0x6a, 0x91, 0x30, 0x5c, 0xbb, 0xfe, 0xa7, - 0xe6, 0xb6, 0x0b, 0x2a, - 0xb7, 0x44, 0x4e, 0xac, 0x58, 0x91, 0x24, 0x3c, 0x4b, 0xe5, 0x20, 0xfe, - 0x3e, 0x7a, 0x79, 0xc1, - 0x77, 0xf0, 0xe8, 0x53, 0x61, 0xbe, 0x70, 0x50, 0xe4, 0x0e, 0xc1, 0x2a, - 0xe9, 0x19, 0x1d, 0x7e, - 0xf4, 0xef, 0xc1, 0x91, 0x2a, 0xcf, 0x8c, 0xe4, 0xd6, 0xf0, 0x21, 0x95, - 0x53, 0xbc, 0xb1, 0x7c, - 0x34, 0x5b, 0x67, 0x6e, 0x13, 0xe0, 0xd8, 0x88, 0x79, 0x1b, 0xc0, 0x41, - 0x84, 0xdf, 0xd5, 0xc3, - 0x31, 0xd1, 0x93, 0xd6, 0xbc, 0x2d, 0xb7, 0x4f, 0xb2, 0xcf, 0x22, 0x28, - 0xe4, 0x35, 0x2a, 0x78, - 0xf1, 0x65, 0x35, 0x29, 0x85, 0x02, 0xe3, 0x23, 0x1d, 0x24, 0xc3, 0xfc, - 0x33, 0x56, 0x4e, 0xc7, - 0x72, 0x7a, 0x1c, 0xeb, 0xce, 0x73, 0x1f, 0x97, 0x2f, 0xda, 0x23, 0x43, - 0x89, 0xf3, 0xe2, 0xc5, - 0xb2, 0xce, 0xba, 0x14, 0xf7, 0x5c, 0x4b, 0xfb, 0x80, 0x31, 0xc2, 0x97, - 0x5e, 0x90, 0x86, 0x7a, - 0x78, 0xad, 0x37, 0x58, 0x53, 0x2a, 0xc1, 0xda, 0x7a, 0xb1, 0x24, 0x91, - 0x49, 0xe4, 0xdf, 0x70, - 0xb8, 0x19, 0x91, 0xa7, 0x6a, 0x05, 0x95, 0xb6, 0xd5, 0x5a, 0xc5, 0x45, - 0x9e, 0x87, 0xbb, 0xcf, - 0x3b, 0x06, 0xb8, 0x65, 0x21, 0x74, 0x69, 0x02, 0xe7, 0xa4, 0x25, 0xfa, - 0x24, 0x22, 0x17, 0xcd, - 0xfb, 0xb2, 0x1e, 0x9a, 0x18, 0x5b, 0x3d, 0x6e, 0x48, 0x4f, 0xc4, 0x2e, - 0xf3, 0x41, 0x73, 0x72, - 0xfe, 0x38, 0xea, 0x22, 0xb7, 0x96, 0x52, 0xa9, 0x83, 0x9b, 0x26, 0x47, - 0x93, 0xab, 0x8c, 0xc9, - 0x3e, 0x8c, 0x4c, 0xdd, 0x8e, 0xb9, 0x06, 0xc5, 0x2c, 0x70, 0xc7, 0x93, - 0x44, 0xc8, 0xe8, 0x76, - 0xbd, 0x93, 0x65, 0x1f, 0xc5, 0xc8, 0xfa, 0x71, 0x1e, 0x8e, 0x27, 0x2c, - 0xfe, 0x6d, 0x44, 0x74, - 0x7d, 0x27, 0xc3, 0xe0, 0xfc, 0xe7, 0xae, 0x1d, 0xb1, 0x65, 0xc6, 0xf8, - 0x29, 0x0e, 0x20, 0xcb, - 0xea, 0x55, 0xbc, 0x87, 0x4e, 0x24, 0x2d, 0x33, 0x29, 0x4d, 0x28, 0x20, - 0xd0, 0x85, 0xf6, 0x60, - 0x2a, 0xe1, 0x1a, 0x78, 0x77, 0x0b, 0x79, 0x5f, 0x86, 0xa6, 0xc9, 0xf4, - 0x07, 0xe6, 0x92, 0xdf, - 0xa9, 0xfe, 0x33, 0xba, 0x3c, 0x7a, 0x85, 0xeb, 0xb4, 0x58, 0x29, 0x4b, - 0xbd, 0x43, 0x3e, 0xdd, - 0x69, 0x4a, 0x95, 0x45, 0x05, 0x55, 0xd1, 0x87, 0x1b, 0xb3, 0xc8, 0x9f, - 0x6a, 0x20, 0x5a, 0x62, - 0x6c, 0xc0, 0x61, 0xfd, 0xaa, 0x98, 0xbe, 0x40, 0xd0, 0x67, 0x2a, 0xf6, - 0x0a, 0xca, 0xa5, 0xd9, - 0xac, 0x74, 0xc7, 0x02, 0x93, 0xb7, 0xea, 0x2c, 0x7f, 0x8c, 0xcb, 0x22, - 0xdd, 0xa9, 0xc1, 0x66, - 0x2f, 0x6b, 0xee, 0xc0, 0xd8, 0xc6, 0x16, 0x98, 0x4d, 0x72, 0x2b, 0x9d, - 0x67, 0x0c, 0x6d, 0x64, - 0xef, 0xdf, 0x48, 0x3f, 0xe1, 0xe9, 0x42, 0xf4, 0xe2, 0x99, 0xca, 0x49, - 0xb0, 0x6f, 0x09, 0xdb, - 0x25, 0xbc, 0xc5, 0x73, 0x45, 0x9f, 0xc8, 0xd5, 0x18, 0x19, 0x2c, 0x4f, - 0xa7, 0x1b, 0x50, 0xd1, - 0xe5, 0x08, 0x63, 0x8c, 0x7c, 0xb0, 0x9c, 0xb9, 0xb7, 0xf2, 0xcd, 0x9b, - 0x70, 0x78, 0x34, 0x6e, - 0x66, 0x17, 0x4a, 0x4e, 0x37, 0xc1, 0x60, 0x0d, 0x85, 0x0c, 0x2d, 0x24, - 0xca, 0xdd, 0x98, 0x6c, - 0xa6, 0xa3, 0xec, 0xb1, 0x0e, 0xee, 0x34, 0x61, 0x2a, 0xe7, 0xcc, 0xf0, - 0x1d, 0xbe, 0xfc, 0xd3, - 0xa3, 0x29, 0x18, 0x09, 0xa1, 0x23, 0x5b, 0xa6, 0xe1, 0x33, 0x2e, 0x99, - 0x7d, 0x54, 0x03, 0x68, - 0x63, 0x9d, 0xbe, 0xf6, 0x98, 0x0c, 0x0f, 0xca, 0x4e, 0xd8, 0xcf, 0x4d, - 0xaa, 0x37, 0x67, 0xd7, - 0xe0, 0x82, 0x97, 0x34, 0xd3, 0x7d, 0xf3, 0x7e, 0x7c, 0x26, 0x2f, 0xf2, - 0x10, 0x92, 0xcb, 0xd5, - 0x20, 0x36, 0x31, 0xcb, 0xea, 0x52, 0xa7, 0x12, 0xd3, 0xcd, 0xce, 0x26, - 0xc7, 0xf1, 0xaf, 0x6a, - 0x0d, 0x66, 0x69, 0xfa, 0x74, 0x38, 0x36, 0x22, 0x8f, 0x76, 0x30, 0x81, - 0x21, 0x47, 0xa4, 0x40, - 0xcd, 0xd2, 0xcf, 0x05, 0x4d, 0x17, 0x62, 0x4e, 0x20, 0x9d, 0xd1, 0x55, - 0xf6, 0x24, 0xc0, 0xff, - 0x4e, 0xcd, 0xe6, 0xc7, 0x06, 0x66, 0x9e, 0xfa, 0x12, 0x63, 0x31, 0xea, - 0x4c, 0x81, 0x6c, 0xfd, - 0x8e, 0x79, 0x40, 0x38, 0x3f, 0x49, 0xca, 0x96, 0xbd, 0x88, 0xd0, 0x3e, - 0x9b, 0xe2, 0x08, 0x42, - 0x8b, 0xf3, 0xb4, 0x80, 0x90, 0x84, 0xa5, 0x51, 0x76, 0x5c, 0x32, 0x57, - 0xfb, 0x08, 0xf7, 0xf9, - 0x4b, 0x47, 0x12, 0x7f, 0xa9, 0xab, 0xf1, 0x3d, 0xd9, 0xb7, 0xd3, 0x83, - 0x2c, 0x6b, 0x93, 0x46, - 0xc8, 0x58, 0x3b, 0xbd, 0xe2, 0xda, 0x0d, 0x89, 0xeb, 0x49, 0x33, 0x3c, - 0x96, 0xce, 0x3f, 0x44, - 0x08, 0xec, 0x9d, 0x42, 0xdb, 0xf5, 0x59, 0xe5, 0x44, 0xa2, 0xd2, 0xe8, - 0x41, 0xad, 0x5b, 0xfb, - 0xc2, 0x8f, 0x10, 0x0e, 0x7f, 0x83, 0xd3, 0xc4, 0xbe, 0x22, 0x34, 0xee, - 0x56, 0xd9, 0x02, 0xf1, - 0x02, 0x3b, 0xb6, 0xf1, 0x46, 0xac, 0x87, 0xa8, 0x11, 0xc9, 0xd5, 0x3a, - 0x81, 0xba, 0x66, 0x4e, - 0x81, 0x24, 0x9f, 0x33, 0x0d, 0xdd, 0x7b, 0x1c, 0x23, 0x37, 0x35, 0x85, - 0x3b, 0x1f, 0xca, 0x4c, - 0x41, 0x90, 0x39, 0xcc, 0x34, 0xf2, 0x2f, 0x70, 0x8c, 0xdc, 0xd4, 0x51, - 0xec, 0x7c, 0xae, 0xf3, - 0x44, 0x1a, 0xcd, 0x74, 0x9b, 0x3f, 0x40, 0xb7, 0x47, 0x08, 0x36, 0x38, - 0x8c, 0x96, 0x51, 0x48, - 0x84, 0xae, 0x6b, 0x8b, 0xa2, 0x10, 0x14, 0xdb, 0xe8, 0xe3, 0xd7, 0xec, - 0x5b, 0xf5, 0x35, 0xf7, - 0x07, 0xb1, 0x42, 0x49, 0xe9, 0x61, 0xe8, 0x6f, 0xda, 0x1d, 0x37, 0x53, - 0xe1, 0x50, 0x99, 0xf5, - 0xc7, 0x05, 0xe4, 0xb6, 0xd0, 0x4e, 0xbc, 0x03, 0x75, 0xf6, 0xd6, 0x87, - 0x36, 0x33, 0xfd, 0x4a, - 0x50, 0x77, 0x9b, 0xd1, 0x62, 0x8d, 0x3f, 0x2d, 0xed, 0xde, 0x38, 0x5f, - 0xcf, 0xb8, 0x2b, 0xe1, - 0x90, 0xc3, 0x3d, 0x2e, 0x5b, 0xa2, 0x6b, 0x41, 0x42, 0x35, 0xd9, 0x8b, - 0x18, 0xdb, 0x4f, 0x5e, - 0x13, 0xdc, 0x14, 0xec, 0x10, 0xd3, 0x97, 0xf5, 0x70, 0xcb, 0x39, 0x34, - 0xa2, 0x7e, 0xe3, 0x5c, - 0xd3, 0x68, 0xb2, 0x13, 0x29, 0xfc, 0xc3, 0x99, 0xdf, 0x20, 0xd8, 0xe0, - 0x75, 0x1d, 0x87, 0xe3, - 0xd6, 0xe2, 0x46, 0xab, 0x86, 0x31, 0xac, 0x5e, 0x14, 0xf4, 0x3a, 0x89, - 0x15, 0xf7, 0x78, 0x58, - 0x16, 0x56, 0xe0, 0x54, 0xbf, 0x1e, 0xf8, 0x32, 0xbb, 0x1f, 0xdb, 0x5d, - 0xc2, 0x94, 0x1c, 0xe7, - 0x95, 0x49, 0xc9, 0x96, 0xf4, 0x6f, 0x04, 0x86, 0x89, 0xe1, 0x3b, 0xe2, - 0x78, 0x31, 0xb0, 0xe5, - 0x55, 0xfd, 0x6f, 0x69, 0xcd, 0x40, 0x50, 0xea, 0x26, 0x0a, 0xda, 0x36, - 0xaf, 0x52, 0xd4, 0x5a, - 0x9f, 0x9e, 0xe2, 0x25, 0x69, 0x36, 0xda, 0xcb, 0xdc, 0x8a, 0x3c, 0x30, - 0xb8, 0x26, 0x8d, 0x50, - 0x5f, 0x2a, 0x44, 0xda, 0x50, 0x19, 0x8e, 0xa7, 0x73, 0x61, 0xdd, 0xe4, - 0x6f, 0x45, 0xe9, 0xef, - 0xdc, 0x35, 0x6d, 0x18, 0x1b, 0x68, 0x72, 0x13, 0x41, 0x9f, 0x3d, 0x5b, - 0xd5, 0xe0, 0x45, 0xed, - 0x1c, 0x81, 0xcb, 0xe7, 0x22, 0x47, 0x26, 0x7f, 0xee, 0x74, 0xdc, 0x8f, - 0x02, 0x83, 0x21, 0x52, - 0x19, 0x0b, 0x3f, 0x5f, 0x8d, 0x8a, 0x49, 0xb8, 0x25, 0xa0, 0x3e, 0xe6, - 0x62, 0x69, 0xde, 0xe9, - 0xd9, 0xbf, 0x99, 0xa0, 0xb4, 0xa5, 0x1d, 0xd4, 0x8a, 0x4b, 0xdf, 0x32, - 0xb5, 0x0a, 0xba, 0x56, - 0x5a, 0xa0, 0xb0, 0x62, 0xff, 0xd4, 0xe1, 0x60, 0xb8, 0xb5, 0x3f, 0x8d, - 0x0f, 0xaf, 0x16, 0x54, - 0x9a, 0x14, 0x16, 0x9d, 0xc6, 0xfb, 0xb5, 0x0c, 0x17, 0x5e, 0xde, 0x59, - 0xd8, 0xcc, 0x72, 0xeb, - 0xad, 0x88, 0x9c, 0x9b, 0xb0, 0xe1, 0x48, 0x78, 0x96, 0x09, 0x40, 0x3f, - 0x7c, 0xf4, 0xf2, 0x41, - 0x6d, 0x3c, 0x3a, 0x64, 0x89, 0xce, 0x1c, 0x14, 0x39, 0xe2, 0xa1, 0xeb, - 0xab, 0x97, 0x96, 0xfe, - 0xee, 0x23, 0x13, 0xa6, 0xc2, 0xbf, 0xe0, 0xa0, 0x0b, 0x1c, 0x41, 0x54, - 0x11, 0x32, 0x3a, 0xfc, - 0x2e, 0x97, 0xb5, 0x59, 0xfb, 0x90, 0xb4, 0xcc, 0xa4, 0xf7, 0xa0, 0x80, - 0xc6, 0x51, 0x5e, 0x43, - 0x2b, 0x1d, 0x41, 0xe1, 0x54, 0x5d, 0xdb, 0x0b, 0x6f, 0x23, 0x42, 0xe9, - 0xa6, 0xbb, 0xa1, 0xf8, - 0xeb, 0xa9, 0xe7, 0x1e, 0x6d, 0x72, 0x8f, 0x67, 0xc0, 0xc8, 0xa3, 0x3d, - 0x71, 0xd8, 0xc5, 0x47, - 0x68, 0xb6, 0xce, 0xdc, 0x26, 0x03, 0x73, 0xd3, 0xf2, 0x36, 0x43, 0x82, - 0xcb, 0x7d, 0x69, 0x45, - 0xa8, 0x02, 0x68, 0x23, 0x1f, 0x2c, 0x27, 0xbf, 0x5d, 0xdd, 0xa2, 0x56, - 0x1c, 0x1e, 0x0d, 0xfa, - 0x62, 0x61, 0xe5, 0x6f, 0xbb, 0x5a, 0xad, 0x9e, 0xa7, 0x5d, 0x44, 0x50, - 0x0b, 0x6a, 0x54, 0xf0, - 0xa2, 0xd5, 0x43, 0x90, 0x82, 0x75, 0xf9, 0xf2, 0x08, 0xb6, 0xa5, 0x84, - 0xdc, 0x09, 0x30, 0x4f, - 0x21, 0xca, 0x6a, 0x52, 0xc9, 0x04, 0x05, 0x46, 0x3a, 0x48, 0x45, 0x3b, - 0x66, 0xac, 0x9c, 0x4d, - 0xe1, 0x7e, 0xcc, 0xad, 0xf0, 0x2b, 0x51, 0x2a, 0x95, 0xa3, 0xa4, 0xef, - 0xb1, 0xcf, 0xf8, 0xf2, - 0xe4, 0xf4, 0x38, 0x15, 0x5f, 0xe6, 0x3e, 0xed, 0x5e, 0x77, 0x46, 0x86, - 0xd1, 0x25, 0x07, 0x49, - 0x24, 0x40, 0x9e, 0xea, 0x66, 0xc9, 0x6a, 0x81, 0xf1, 0x9c, 0xa7, 0x52, - 0x06, 0x46, 0x63, 0xf6, - 0xa7, 0x5f, 0xb7, 0x28, 0x2d, 0xb8, 0x96, 0x35, 0xc3, 0x62, 0x47, 0xed, - 0xbc, 0xe3, 0xcf, 0xf4, - 0x67, 0xeb, 0x11, 0xd7, 0x14, 0x97, 0xc2, 0x59, 0x6c, 0x89, 0xa6, 0x39, - 0x6b, 0x80, 0xab, 0x4b, - 0xf0, 0x99, 0x6e, 0xb0, 0xa6, 0x54, 0x41, 0x77, 0xf4, 0xa1, 0x48, 0xe1, - 0x92, 0x0b, 0x7d, 0xe0, - 0x30, 0x2d, 0xc8, 0x4f, 0x9f, 0x7b, 0x15, 0x1b, 0x5b, 0x4a, 0xa9, 0x35, - 0x45, 0x68, 0x19, 0x5f, - 0xb3, 0x32, 0xe1, 0x8d, 0xd4, 0x0a, 0xe9, 0xaf, 0x69, 0xb4, 0x49, 0x8a, - 0xff, 0xcd, 0xb5, 0x5d, - 0x73, 0x86, 0x47, 0x72, 0xed, 0x25, 0xbd, 0xc3, 0xc6, 0x5f, 0xa8, 0x5e, - 0x28, 0xae, 0xd1, 0xe2, - 0x76, 0x0c, 0xb3, 0xca, 0x42, 0xe8, 0xd2, 0x04, 0x0d, 0x8b, 0x4a, 0x37, - 0x48, 0x44, 0x2e, 0x59, - 0xb6, 0xb8, 0x15, 0x35, 0x7b, 0xc7, 0x86, 0x68, 0xa2, 0x60, 0xab, 0xe3, - 0x9f, 0x27, 0x4a, 0xe6, - 0x35, 0xa7, 0x3c, 0xf7, 0x30, 0xb6, 0x7a, 0xdc, 0x90, 0x9e, 0x4b, 0x5c, - 0x25, 0x82, 0xe6, 0xe4, - 0xf5, 0x13, 0x9a, 0x08, 0x09, 0x99, 0x2e, 0xb0, 0x3f, 0x75, 0xaa, 0x88, - 0xf2, 0xe1, 0x82, 0x5b, - 0x3f, 0x70, 0x17, 0x44, 0xad, 0xef, 0xa4, 0x91, 0xc5, 0xf5, 0x4c, 0x8e, - 0xe5, 0x95, 0xdb, 0x51, - 0xff, 0xc4, 0xb1, 0xbb, 0x94, 0xc0, 0xf0, 0xfd, 0x6a, 0x1e, 0xad, 0x5a, - 0x32, 0xf6, 0xbf, 0xee, - 0x7c, 0xdb, 0x98, 0x79, 0xdf, 0xb1, 0x0c, 0x49, 0x58, 0xe0, 0x4d, 0xe5, - 0x88, 0x53, 0x13, 0xec, - 0xbc, 0x6f, 0x3e, 0x86, 0xe6, 0x9e, 0x58, 0x25, 0xf7, 0x0b, 0xac, 0x31, - 0x5f, 0x30, 0x77, 0x53, - 0xb9, 0xe5, 0xca, 0x3e, 0x49, 0x53, 0x37, 0xe2, 0x3c, 0xdf, 0x4e, 0x58, - 0x3f, 0xda, 0x88, 0xe8, - 0x79, 0x51, 0x6c, 0xc1, 0x70, 0x7c, 0x63, 0x8e, 0x93, 0x34, 0xaf, 0x8c, - 0xe8, 0xb9, 0xec, 0x57, - 0xfa, 0x4e, 0x45, 0x03, 0x3b, 0x0d, 0x9f, 0x3a, 0xa1, 0xca, 0x4f, 0x33, - 0x52, 0x1c, 0x40, 0x55, - 0x3a, 0xfa, 0xe3, 0xfc, 0x02, 0x22, 0xcb, 0x56, 0x0e, 0x21, 0xae, 0xe7, - 0x85, 0x7f, 0x24, 0xea, - 0x17, 0xaa, 0xbb, 0xcd, 0x9c, 0x48, 0x5a, 0x66, 0x52, 0x9a, 0x50, 0x40, - 0x63, 0xc9, 0x2f, 0xc0, - 0xd7, 0x1e, 0x1d, 0x32, 0xa5, 0x67, 0x0e, 0x0a, 0xfd, 0x71, 0xb1, 0x94, - 0xb4, 0xaa, 0x4b, 0x7f, - 0x54, 0x01, 0x34, 0xf0, 0xee, 0x16, 0xf2, 0xbe, 0xcf, 0x8f, 0x51, 0x2b, - 0x0e, 0x0f, 0xe7, 0x7d, - 0x94, 0xb5, 0x92, 0x0f, 0xd7, 0x39, 0xa6, 0xd2, 0x60, 0x64, 0xb0, 0xff, - 0xd9, 0x6c, 0x83, 0xc2, - 0x91, 0x3f, 0x66, 0xb7, 0x78, 0xf4, 0xc9, 0x15, 0xab, 0xb0, 0x52, 0x96, - 0xb9, 0x86, 0x7c, 0x79, - 0x51, 0x8b, 0xc0, 0x48, 0x41, 0xdb, 0x9d, 0x79, 0x04, 0x5b, 0xb3, 0x42, - 0x6e, 0xe5, 0x18, 0xc6, - 0xd2, 0x94, 0xe9, 0x8a, 0x0a, 0xaa, 0x61, 0xcd, 0x36, 0xa5, 0x53, 0xfd, - 0xd4, 0x40, 0xb4, 0xc4, - 0x12, 0x20, 0x4f, 0x75, 0x33, 0x85, 0x35, 0xa1, 0x99, 0x4e, 0xb2, 0x29, - 0x03, 0x23, 0xd0, 0x7b, - 0xd8, 0x43, 0xc2, 0x39, 0x97, 0xf3, 0xbf, 0x80, 0x63, 0xce, 0x54, 0x2f, - 0x14, 0x57, 0x89, 0x71, - 0x18, 0xf7, 0x64, 0xc6, 0xae, 0xdc, 0xeb, 0xec, 0xcc, 0x25, 0xb5, 0xfb, - 0xc3, 0x34, 0xed, 0xce, - 0x9b, 0xe8, 0x4d, 0x04, 0xe5, 0xad, 0x17, 0x58, 0xfe, 0xdb, 0x55, 0x44, - 0x79, 0x91, 0x41, 0xcc, - 0x5b, 0x5c, 0xeb, 0xfb, 0xdc, 0x82, 0x43, 0x34, 0x51, 0x30, 0xb4, 0x90, - 0xae, 0xf2, 0x25, 0x73, - 0x5e, 0xd6, 0x1f, 0x43, 0x73, 0x4f, 0x2c, 0xf3, 0x9a, 0xe4, 0x56, 0xf9, - 0xce, 0x18, 0xda, 0xc8, - 0x9e, 0x62, 0xb9, 0xbc, 0x4a, 0x60, 0x78, 0x9f, 0x35, 0x0f, 0xb7, 0x2d, - 0x19, 0x7b, 0xbe, 0x77, - 0x1d, 0x7d, 0x90, 0x7e, 0x01, 0x11, 0x84, 0x2b, 0x07, 0xf1, 0x57, 0x92, - 0xa3, 0xde, 0x12, 0x75, - 0xdd, 0xc9, 0x36, 0x81, 0x38, 0x3e, 0xd0, 0x47, 0xa8, 0x1a, 0xb6, 0x46, - 0x74, 0xbd, 0x76, 0xca, - 0x4a, 0xbb, 0x49, 0xe6, 0x8a, 0xfd, 0x53, 0x69, 0x30, 0x32, 0x58, 0x9e, - 0x8d, 0x36, 0xa0, 0x61, - 0x8a, 0x0f, 0xef, 0x19, 0xb3, 0xd2, 0x07, 0x05, 0x9f, 0xd9, 0xb9, 0x4a, - 0x5a, 0x55, 0xc4, 0xde, - 0x09, 0x10, 0xc6, 0xdb, 0xf8, 0xa3, 0xfb, 0xb1, 0xad, 0x27, 0x59, 0xf5, - 0xe0, 0xf0, 0x68, 0xdc, - 0xc9, 0xa4, 0x60, 0x24, 0xc1, 0x8c, 0xaf, 0xdd, 0x02, 0xcc, 0xb8, 0x21, - 0x37, 0x93, 0x0c, 0x63, - 0xcc, 0x2e, 0x94, 0x9c, 0x6e, 0x41, 0xc0, 0x1a, 0xc9, 0x18, 0x5a, 0x48, - 0x57, 0x79, 0xf3, 0xd8, - 0x0c, 0x9a, 0x32, 0x63, 0x57, 0x6e, 0x94, 0x76, 0x66, 0xf3, 0xbb, 0x9c, - 0x80, 0x1a, 0x97, 0x67, - 0x8f, 0x85, 0x1b, 0xa1, 0x1c, 0x1f, 0x68, 0xc2, 0x54, 0x0d, 0x5b, 0x23, - 0x3a, 0xbf, 0x3b, 0x65, - 0x4f, 0x31, 0xbd, 0x5e, 0x25, 0x30, 0x3c, 0xae, 0xfb, 0xe6, 0xba, 0xf7, - 0xed, 0xdc, 0x5f, 0xda, - 0x85, 0x52, 0x30, 0x12, 0x81, 0x46, 0xb6, 0x8f, 0x01, 0x66, 0x5c, 0xf1, - 0xfa, 0xa8, 0x06, 0xd0, - 0x45, 0xe6, 0x96, 0xed, 0xb8, 0x69, 0xe2, 0xe3, 0xae, 0x8d, 0xbd, 0x25, - 0x2d, 0xcb, 0x62, 0x6f, - 0xc6, 0xf9, 0xbf, 0x2f, 0xf3, 0x18, 0x1e, 0x57, 0x9c, 0x73, 0x5d, 0x9a, - 0x97, 0x6e, 0xce, 0x6d, - 0x06, 0x4d, 0x19, 0xd0, 0xca, 0x37, 0x4a, 0x3b, 0x33, 0x98, 0xbc, 0x4e, - 0x40, 0x0d, 0xaa, 0xd2, - 0x03, 0xc7, 0xed, 0x68, 0x65, 0xfa, 0x25, 0xfc, 0xf8, 0x4c, 0x5e, 0x27, - 0x20, 0xe7, 0x55, 0x69, - 0xc3, 0x73, 0x4b, 0x97, 0x5c, 0xd5, 0x71, 0x90, 0x57, 0xa7, 0xbf, 0xf3, - 0xf7, 0x84, 0x31, 0xd6, - 0x40, 0x6c, 0x62, 0x55, 0x17, 0xa4, 0x8d, 0x24, 0x65, 0x59, 0x5f, 0x4c, - 0x4d, 0x21, 0x9d, 0xd4, - 0x80, 0xd8, 0xc4, 0xaa, 0x2e, 0x8b, 0xd9, 0x48, 0xca, 0xb2, 0xbe, 0x98, - 0x9a, 0x42, 0xf9, 0x6b, - 0x1a, 0xcc, 0xd2, 0x37, 0xe8, 0x70, 0x6c, 0x44, 0xdd, 0xec, 0x60, 0xc1, - 0x42, 0x8e, 0x8b, 0x80, - 0xda, 0x78, 0x74, 0xc8, 0xd1, 0x5f, 0x38, 0x28, 0x72, 0x07, 0x81, 0x15, - 0x95, 0xed, 0xef, 0x3f, - 0x59, 0x67, 0x5d, 0x0a, 0x9a, 0x2e, 0xc4, 0x9c, 0x40, 0xf9, 0x61, 0xaa, - 0x2f, 0x48, 0x43, 0x3d, - 0x99, 0xd3, 0xfb, 0xf5, 0xa3, 0x01, 0x90, 0xf0, 0xef, 0x12, 0x80, 0x7e, - 0xf8, 0x2b, 0x27, 0x82, - 0x9c, 0x59, 0x0f, 0x4d, 0x0c, 0xcc, 0xff, 0x37, 0x24, 0xc6, 0x62, 0x17, - 0x98, 0xc1, 0xd8, 0x39, - 0x5c, 0xed, 0xa9, 0xb2, 0x35, 0xe3, 0xab, 0x5b, 0x8b, 0x2d, 0x83, 0xc3, - 0x4f, 0xa2, 0xbc, 0x86, - 0xdf, 0xf2, 0x80, 0x70, 0x7e, 0x92, 0x57, 0xef, 0xb9, 0xd3, 0x63, 0x7c, - 0xf5, 0x07, 0x10, 0x84, - 0x1f, 0x46, 0x26, 0x8f, 0x47, 0xbd, 0x03, 0x83, 0x16, 0x38, 0x82, 0xa8, - 0x22, 0x64, 0x74, 0x3b, - 0xd5, 0x25, 0xab, 0xc3, 0xe3, 0xcb, 0x89, 0xa2, 0xec, 0xb8, 0x64, 0xae, - 0x35, 0x10, 0x2d, 0x31, - 0x15, 0x91, 0x0d, 0x3c, 0xda, 0xe4, 0xdd, 0xce, 0x43, 0x53, 0x85, 0x7a, - 0xe2, 0x73, 0x49, 0x8e, - 0x96, 0x8e, 0x24, 0xfe, 0x91, 0x95, 0x21, 0x7a, 0x71, 0xad, 0x65, 0xc5, - 0x58, 0xd6, 0xe5, 0x8c, - 0x56, 0x3a, 0x82, 0x01, 0xa8, 0xba, 0x75, 0x16, 0xde, 0x46, 0x84, 0x11, - 0x8f, 0xb5, 0x81, 0x33, - 0x53, 0xb0, 0x76, 0xb9, 0x07, 0x77, 0x1a, 0xd1, 0x15, 0x92, 0x66, 0x78, - 0xef, 0x5f, 0x7e, 0x88, - 0x93, 0x04, 0xd0, 0x46, 0x3e, 0x58, 0x4e, 0xbd, 0xba, 0x79, 0x87, 0xac, - 0x38, 0x3c, 0x1a, 0x37, - 0x10, 0x1b, 0xf9, 0x84, 0x75, 0x29, 0xb2, 0x09, 0x88, 0x87, 0x67, 0x13, - 0x82, 0x99, 0xb6, 0x35, - 0xd0, 0xaf, 0x5f, 0x7b, 0x4c, 0x06, 0xe6, 0x65, 0x27, 0x6c, 0x86, 0xc7, - 0x55, 0xfa, 0xd2, 0x8a, - 0x47, 0xdd, 0x20, 0x1c, 0xfe, 0xc5, 0x65, 0x4b, 0xbf, 0x44, 0x68, 0x1f, - 0xac, 0x71, 0x04, 0x21, - 0x87, 0x69, 0x86, 0xe3, 0xc7, 0xea, 0x31, 0x27, 0x10, 0xaf, 0x89, 0xcb, - 0x7b, 0x12, 0x60, 0x9e, - 0x04, 0x76, 0xaf, 0x21, 0x8c, 0x9b, 0xcd, 0x93, 0x22, 0x51, 0x69, 0x74, - 0xc1, 0xb7, 0xcc, 0x9c, - 0xc4, 0xc2, 0x09, 0xde, 0xb5, 0xb4, 0x99, 0xff, 0x8d, 0xba, 0x88, 0xa0, - 0x16, 0xd4, 0xa8, 0x23, - 0xc1, 0x48, 0xfd, 0x66, 0x1a, 0x79, 0xf6, 0x38, 0x46, 0x6e, 0x6a, 0xc9, - 0x76, 0x3e, 0x57, 0x98, - 0x01, 0xfc, 0x5b, 0x99, 0x23, 0x56, 0xa2, 0x54, 0xe9, 0x85, 0x8b, 0x1d, - 0xa1, 0x5d, 0x33, 0x27, - 0x82, 0xe3, 0x72, 0x5b, 0x68, 0x27, 0x5e, 0xe0, 0xdb, 0x7b, 0x6b, 0xa2, - 0x1b, 0xf8, 0x9f, 0x25, - 0x42, 0x57, 0xd4, 0xa4, 0x51, 0x08, 0x0a, 0x8c, 0x74, 0x90, 0x8a, 0x76, - 0xcc, 0x9b, 0xfb, 0x9a, - 0x88, 0x34, 0x59, 0xe8, 0xf5, 0x7e, 0x80, 0xad, 0x8e, 0x10, 0x6c, 0x70, - 0xdb, 0xef, 0xa2, 0x90, - 0x48, 0x80, 0xff, 0x17, 0xcc, 0x51, 0xd4, 0xc1, 0x21, 0xfb, 0x8d, 0xa4, - 0x0c, 0x8c, 0xc6, 0x2f, - 0xcb, 0x9f, 0xd6, 0xd5, 0x87, 0x20, 0x28, 0x75, 0x13, 0x05, 0x6d, 0x1b, - 0xb6, 0x29, 0x6a, 0x2d, - 0x0b, 0x2b, 0x70, 0x2a, 0xbe, 0x0f, 0x7c, 0x19, 0xbc, 0xee, 0x8c, 0xcf, - 0x61, 0x4a, 0x0e, 0x92, - 0x0e, 0xa1, 0x84, 0x92, 0x11, 0xc2, 0x13, 0xde, 0x77, 0x3a, 0x6e, 0xa6, - 0x01, 0xa0, 0xf1, 0x29, - 0xce, 0x15, 0x22, 0x6d, 0x28, 0xed, 0x47, 0xb2, 0xd8, 0xd1, 0x8f, 0x72, - 0xd6, 0xc3, 0x95, 0x96, - 0x4d, 0x0a, 0x0b, 0xaf, 0x63, 0x9c, 0xbb, 0x06, 0xea, 0x2f, 0x6f, 0xcd, - 0x6c, 0x66, 0x39, 0x94, - 0x8d, 0xbe, 0xad, 0x50, 0x5a, 0xb3, 0xef, 0x6a, 0x45, 0xc4, 0x8e, 0x19, - 0xbb, 0x05, 0x5d, 0x2b, - 0xa0, 0xee, 0xf5, 0x61, 0xc4, 0xd9, 0x7e, 0x5a, 0x19, 0x7f, 0x70, 0xbe, - 0x5d, 0xb3, 0x56, 0x01, - 0x60, 0x5a, 0x53, 0x9e, 0xfd, 0xf6, 0x2a, 0x36, 0xb6, 0x94, 0x91, 0x6a, - 0x8a, 0xd0, 0x32, 0xbe, - 0xe3, 0x45, 0x7a, 0x5c, 0xb6, 0x87, 0xd6, 0x82, 0x84, 0x6a, 0x71, 0xd5, - 0x30, 0x75, 0x9e, 0xbc, - 0x23, 0xf1, 0xdc, 0xa3, 0x8f, 0xa8, 0x82, 0xee, 0x2b, 0x81, 0x90, 0x01, - 0xe7, 0x16, 0xfa, 0x03, - 0x26, 0x7b, 0x28, 0x1b, 0x20, 0x65, 0xed, 0x29, 0xe0, 0x55, 0x72, 0x68, - 0x87, 0xfc, 0x05, 0xb8, - 0xe6, 0xcf, 0x8e, 0xe4, 0x19, 0x4a, 0xb9, 0x45, 0x4f, 0xbe, 0x93, 0xbc, - 0x50, 0x9f, 0x61, 0x07, - 0x65, 0xd0, 0xa7, 0x26, 0x52, 0x3b, 0x45, 0xf1, 0x7d, 0x40, 0x73, 0x03, - 0xea, 0x3a, 0xcd, 0x05, - 0xa5, 0x64, 0x01, 0xd9, 0x6b, 0x14, 0x11, 0x9d, 0xd2, 0xab, 0x92, 0xd7, - 0x3d, 0x59, 0xa9, 0xba, - 0x6f, 0x07, 0x8c, 0x95, 0xcf, 0x62, 0x9b, 0xbc, 0x28, 0x2b, 0x74, 0xd1, - 0x2a, 0x2d, 0xf0, 0xb0, - 0xaf, 0xb3, 0x2a, 0x6a, 0xf6, 0x4d, 0xcf, 0xd0, 0x87, 0xc0, 0x95, 0x05, - 0xfd, 0x4e, 0x94, 0x0f, - 0x2c, 0xac, 0x03, 0xa8, 0xbd, 0x3c, 0x33, 0x64, 0xb5, 0x3e, 0x75, 0xba, - 0x47, 0xeb, 0x38, 0x0d, - 0xec, 0x18, 0xa5, 0x57, 0x84, 0x13, 0x67, 0x08, 0x1a, 0xd5, 0x94, 0x6e, - 0x90, 0x88, 0x5c, 0xb2, - 0xe9, 0x92, 0x51, 0xef, 0x2b, 0xde, 0x08, 0xcf, 0xd1, 0x01, 0x76, 0x07, - 0xf0, 0x62, 0xa3, 0x09, - 0x29, 0x26, 0xf7, 0x10, 0x12, 0xf1, 0x5c, 0xa3, 0x7e, 0xea, 0x97, 0xd3, - 0x27, 0x01, 0xc7, 0xb6, - 0xaa, 0x39, 0xde, 0xd2, 0x59, 0x80, 0xa0, 0x17, 0x4c, 0x14, 0x77, 0x6c, - 0x9d, 0xa4, 0x6b, 0xb4, - 0x6a, 0x8d, 0x78, 0x2d, 0x60, 0xaf, 0xf4, 0x7b, 0xe3, 0xff, 0x96, 0xb8, - 0x4a, 0xc7, 0x0f, 0x0b, - 0xfd, 0xff, 0x07, 0x4a, 0xd2, 0x6c, 0x77, 0x55, 0x7b, 0xd7, 0x78, 0x60, - 0xb3, 0x4c, 0xd9, 0xa0, - 0x3d, 0x4b, 0xa1, 0xb5, 0xeb, 0x43, 0x23, 0x39, 0xd4, 0x3c, 0x99, 0xb4, - 0x64, 0x2f, 0xbd, 0x1f, - 0xbe, 0x54, 0x88, 0x77, 0xa0, 0x32, 0xdf, 0x8d, 0xe6, 0xc2, 0x79, 0x0b, - 0xde, 0x8a, 0x11, 0x1d, - 0x7e, 0xe0, 0x2e, 0x88, 0x99, 0x1d, 0x8b, 0xe1, 0x49, 0x29, 0x98, 0xdf, - 0x09, 0xe9, 0x75, 0xa2, - 0x7b, 0x6a, 0xda, 0x30, 0x36, 0xd0, 0xe4, 0x26, 0x82, 0xfd, 0x7a, 0xb6, - 0x69, 0x03, 0x8a, 0x19, - 0xbb, 0xde, 0x7c, 0xcf, 0x0f, 0xff, 0xb0, 0x4a, 0x2d, 0x16, 0x9b, 0x62, - 0xbe, 0x60, 0xee, 0xa6, - 0x38, 0xc1, 0x55, 0x0d, 0x44, 0x8e, 0x4c, 0xfe, 0x1f, 0xe8, 0x7b, 0xdd, - 0x04, 0xc5, 0x42, 0xa4, - 0xf8, 0x75, 0xf3, 0xf2, 0x7d, 0xa1, 0x18, 0x92, 0xb0, 0x03, 0x9a, 0x09, - 0xd3, 0xa6, 0x26, 0x1b, - 0x32, 0x16, 0x7e, 0xbe, 0xd9, 0xd7, 0x92, 0xb3, 0x4a, 0x83, 0x7c, 0x0f, - 0xc4, 0xd2, 0x7f, 0x11, - 0xf2, 0xa2, 0xd8, 0x41, 0xe0, 0xf8, 0xc6, 0xdf, 0xe5, 0x68, 0x9d, 0xdb, - 0x13, 0xb1, 0x1b, 0xae, - 0x71, 0xbd, 0xf1, 0x83, 0xab, 0x89, 0x3a, 0x6b, 0xd7, 0x96, 0x7d, 0x64, - 0xa9, 0x14, 0xb7, 0xac, - 0xb1, 0x09, 0x57, 0x7c, 0x92, 0xa6, 0x6e, 0x07, 0x78, 0x7d, 0x9c, 0xb0, - 0x7e, 0x77, 0xd3, 0x13, - 0xb4, 0x83, 0xa3, 0xc4, 0x3d, 0x6b, 0x01, 0xc0, 0xb3, 0xa9, 0x7e, 0xd9, - 0x1e, 0x9d, 0x2c, 0xa8, - 0x74, 0x37, 0x05, 0x3b, 0x04, 0x44, 0x55, 0xac, 0x1c, 0x42, 0x9f, 0x0d, - 0xc9, 0xfe, 0x48, 0x17, - 0xf7, 0x28, 0x2c, 0xf9, 0x4f, 0x35, 0xa9, 0x18, 0x2e, 0xbc, 0x7f, 0xb2, - 0x73, 0x5b, 0xe4, 0x15, - 0x37, 0x9c, 0x8a, 0x06, 0x76, 0x1a, 0xfd, 0x74, 0x81, 0x57, 0x9e, 0x66, - 0xa4, 0x38, 0x80, 0xaa, - }, - { /* 7 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x01, 0x54, 0x30, 0x7b, 0xef, 0x84, 0x08, 0x09, 0xd4, 0xd5, 0xa3, 0x8d, - 0xa6, 0xa1, 0xc1, 0x0a, - 0x02, 0xa8, 0x60, 0xf6, 0x1d, 0xcb, 0x10, 0x12, 0x6b, 0x69, 0x85, 0xd9, - 0x8f, 0x81, 0x41, 0x14, - 0x03, 0xfc, 0x50, 0x8d, 0xf2, 0x4f, 0x18, 0x1b, 0xbf, 0xbc, 0x26, 0x54, - 0x29, 0x20, 0x80, 0x1e, - 0x04, 0x93, 0xc0, 0x2f, 0x3a, 0x55, 0x20, 0x24, 0xd6, 0xd2, 0xc9, 0x71, - 0xdd, 0xc1, 0x82, 0x28, - 0x05, 0xc7, 0xf0, 0x54, 0xd5, 0xd1, 0x28, 0x2d, 0x02, 0x07, 0x6a, 0xfc, - 0x7b, 0x60, 0x43, 0x22, - 0x06, 0x3b, 0xa0, 0xd9, 0x27, 0x9e, 0x30, 0x36, 0xbd, 0xbb, 0x4c, 0xa8, - 0x52, 0x40, 0xc3, 0x3c, - 0x07, 0x6f, 0x90, 0xa2, 0xc8, 0x1a, 0x38, 0x3f, 0x69, 0x6e, 0xef, 0x25, - 0xf4, 0xe1, 0x02, 0x36, - 0x08, 0xe5, 0x43, 0x5e, 0x74, 0xaa, 0x40, 0x48, 0x6f, 0x67, 0x51, 0xe2, - 0x79, 0x41, 0xc7, 0x50, - 0x09, 0xb1, 0x73, 0x25, 0x9b, 0x2e, 0x48, 0x41, 0xbb, 0xb2, 0xf2, 0x6f, - 0xdf, 0xe0, 0x06, 0x5a, - 0x0a, 0x4d, 0x23, 0xa8, 0x69, 0x61, 0x50, 0x5a, 0x04, 0x0e, 0xd4, 0x3b, - 0xf6, 0xc0, 0x86, 0x44, - 0x0b, 0x19, 0x13, 0xd3, 0x86, 0xe5, 0x58, 0x53, 0xd0, 0xdb, 0x77, 0xb6, - 0x50, 0x61, 0x47, 0x4e, - 0x0c, 0x76, 0x83, 0x71, 0x4e, 0xff, 0x60, 0x6c, 0xb9, 0xb5, 0x98, 0x93, - 0xa4, 0x80, 0x45, 0x78, - 0x0d, 0x22, 0xb3, 0x0a, 0xa1, 0x7b, 0x68, 0x65, 0x6d, 0x60, 0x3b, 0x1e, - 0x02, 0x21, 0x84, 0x72, - 0x0e, 0xde, 0xe3, 0x87, 0x53, 0x34, 0x70, 0x7e, 0xd2, 0xdc, 0x1d, 0x4a, - 0x2b, 0x01, 0x04, 0x6c, - 0x0f, 0x8a, 0xd3, 0xfc, 0xbc, 0xb0, 0x78, 0x77, 0x06, 0x09, 0xbe, 0xc7, - 0x8d, 0xa0, 0xc5, 0x66, - 0x10, 0x09, 0x86, 0xbc, 0xe8, 0x97, 0x80, 0x90, 0xde, 0xce, 0xa2, 0x07, - 0xf2, 0x82, 0x4d, 0xa0, - 0x11, 0x5d, 0xb6, 0xc7, 0x07, 0x13, 0x88, 0x99, 0x0a, 0x1b, 0x01, 0x8a, - 0x54, 0x23, 0x8c, 0xaa, - 0x12, 0xa1, 0xe6, 0x4a, 0xf5, 0x5c, 0x90, 0x82, 0xb5, 0xa7, 0x27, 0xde, - 0x7d, 0x03, 0x0c, 0xb4, - 0x13, 0xf5, 0xd6, 0x31, 0x1a, 0xd8, 0x98, 0x8b, 0x61, 0x72, 0x84, 0x53, - 0xdb, 0xa2, 0xcd, 0xbe, - 0x14, 0x9a, 0x46, 0x93, 0xd2, 0xc2, 0xa0, 0xb4, 0x08, 0x1c, 0x6b, 0x76, - 0x2f, 0x43, 0xcf, 0x88, - 0x15, 0xce, 0x76, 0xe8, 0x3d, 0x46, 0xa8, 0xbd, 0xdc, 0xc9, 0xc8, 0xfb, - 0x89, 0xe2, 0x0e, 0x82, - 0x16, 0x32, 0x26, 0x65, 0xcf, 0x09, 0xb0, 0xa6, 0x63, 0x75, 0xee, 0xaf, - 0xa0, 0xc2, 0x8e, 0x9c, - 0x17, 0x66, 0x16, 0x1e, 0x20, 0x8d, 0xb8, 0xaf, 0xb7, 0xa0, 0x4d, 0x22, - 0x06, 0x63, 0x4f, 0x96, - 0x18, 0xec, 0xc5, 0xe2, 0x9c, 0x3d, 0xc0, 0xd8, 0xb1, 0xa9, 0xf3, 0xe5, - 0x8b, 0xc3, 0x8a, 0xf0, - 0x19, 0xb8, 0xf5, 0x99, 0x73, 0xb9, 0xc8, 0xd1, 0x65, 0x7c, 0x50, 0x68, - 0x2d, 0x62, 0x4b, 0xfa, - 0x1a, 0x44, 0xa5, 0x14, 0x81, 0xf6, 0xd0, 0xca, 0xda, 0xc0, 0x76, 0x3c, - 0x04, 0x42, 0xcb, 0xe4, - 0x1b, 0x10, 0x95, 0x6f, 0x6e, 0x72, 0xd8, 0xc3, 0x0e, 0x15, 0xd5, 0xb1, - 0xa2, 0xe3, 0x0a, 0xee, - 0x1c, 0x7f, 0x05, 0xcd, 0xa6, 0x68, 0xe0, 0xfc, 0x67, 0x7b, 0x3a, 0x94, - 0x56, 0x02, 0x08, 0xd8, - 0x1d, 0x2b, 0x35, 0xb6, 0x49, 0xec, 0xe8, 0xf5, 0xb3, 0xae, 0x99, 0x19, - 0xf0, 0xa3, 0xc9, 0xd2, - 0x1e, 0xd7, 0x65, 0x3b, 0xbb, 0xa3, 0xf0, 0xee, 0x0c, 0x12, 0xbf, 0x4d, - 0xd9, 0x83, 0x49, 0xcc, - 0x1f, 0x83, 0x55, 0x40, 0x54, 0x27, 0xf8, 0xe7, 0xd8, 0xc7, 0x1c, 0xc0, - 0x7f, 0x22, 0x88, 0xc6, - 0x20, 0x12, 0xcf, 0xbb, 0x13, 0xed, 0xc3, 0xe3, 0x7f, 0x5f, 0x87, 0x0e, - 0x27, 0xc7, 0x9a, 0x83, - 0x21, 0x46, 0xff, 0xc0, 0xfc, 0x69, 0xcb, 0xea, 0xab, 0x8a, 0x24, 0x83, - 0x81, 0x66, 0x5b, 0x89, - 0x22, 0xba, 0xaf, 0x4d, 0x0e, 0x26, 0xd3, 0xf1, 0x14, 0x36, 0x02, 0xd7, - 0xa8, 0x46, 0xdb, 0x97, - 0x23, 0xee, 0x9f, 0x36, 0xe1, 0xa2, 0xdb, 0xf8, 0xc0, 0xe3, 0xa1, 0x5a, - 0x0e, 0xe7, 0x1a, 0x9d, - 0x24, 0x81, 0x0f, 0x94, 0x29, 0xb8, 0xe3, 0xc7, 0xa9, 0x8d, 0x4e, 0x7f, - 0xfa, 0x06, 0x18, 0xab, - 0x25, 0xd5, 0x3f, 0xef, 0xc6, 0x3c, 0xeb, 0xce, 0x7d, 0x58, 0xed, 0xf2, - 0x5c, 0xa7, 0xd9, 0xa1, - 0x26, 0x29, 0x6f, 0x62, 0x34, 0x73, 0xf3, 0xd5, 0xc2, 0xe4, 0xcb, 0xa6, - 0x75, 0x87, 0x59, 0xbf, - 0x27, 0x7d, 0x5f, 0x19, 0xdb, 0xf7, 0xfb, 0xdc, 0x16, 0x31, 0x68, 0x2b, - 0xd3, 0x26, 0x98, 0xb5, - 0x28, 0xf7, 0x8c, 0xe5, 0x67, 0x47, 0x83, 0xab, 0x10, 0x38, 0xd6, 0xec, - 0x5e, 0x86, 0x5d, 0xd3, - 0x29, 0xa3, 0xbc, 0x9e, 0x88, 0xc3, 0x8b, 0xa2, 0xc4, 0xed, 0x75, 0x61, - 0xf8, 0x27, 0x9c, 0xd9, - 0x2a, 0x5f, 0xec, 0x13, 0x7a, 0x8c, 0x93, 0xb9, 0x7b, 0x51, 0x53, 0x35, - 0xd1, 0x07, 0x1c, 0xc7, - 0x2b, 0x0b, 0xdc, 0x68, 0x95, 0x08, 0x9b, 0xb0, 0xaf, 0x84, 0xf0, 0xb8, - 0x77, 0xa6, 0xdd, 0xcd, - 0x2c, 0x64, 0x4c, 0xca, 0x5d, 0x12, 0xa3, 0x8f, 0xc6, 0xea, 0x1f, 0x9d, - 0x83, 0x47, 0xdf, 0xfb, - 0x2d, 0x30, 0x7c, 0xb1, 0xb2, 0x96, 0xab, 0x86, 0x12, 0x3f, 0xbc, 0x10, - 0x25, 0xe6, 0x1e, 0xf1, - 0x2e, 0xcc, 0x2c, 0x3c, 0x40, 0xd9, 0xb3, 0x9d, 0xad, 0x83, 0x9a, 0x44, - 0x0c, 0xc6, 0x9e, 0xef, - 0x2f, 0x98, 0x1c, 0x47, 0xaf, 0x5d, 0xbb, 0x94, 0x79, 0x56, 0x39, 0xc9, - 0xaa, 0x67, 0x5f, 0xe5, - 0x30, 0x1b, 0x49, 0x07, 0xfb, 0x7a, 0x43, 0x73, 0xa1, 0x91, 0x25, 0x09, - 0xd5, 0x45, 0xd7, 0x23, - 0x31, 0x4f, 0x79, 0x7c, 0x14, 0xfe, 0x4b, 0x7a, 0x75, 0x44, 0x86, 0x84, - 0x73, 0xe4, 0x16, 0x29, - 0x32, 0xb3, 0x29, 0xf1, 0xe6, 0xb1, 0x53, 0x61, 0xca, 0xf8, 0xa0, 0xd0, - 0x5a, 0xc4, 0x96, 0x37, - 0x33, 0xe7, 0x19, 0x8a, 0x09, 0x35, 0x5b, 0x68, 0x1e, 0x2d, 0x03, 0x5d, - 0xfc, 0x65, 0x57, 0x3d, - 0x34, 0x88, 0x89, 0x28, 0xc1, 0x2f, 0x63, 0x57, 0x77, 0x43, 0xec, 0x78, - 0x08, 0x84, 0x55, 0x0b, - 0x35, 0xdc, 0xb9, 0x53, 0x2e, 0xab, 0x6b, 0x5e, 0xa3, 0x96, 0x4f, 0xf5, - 0xae, 0x25, 0x94, 0x01, - 0x36, 0x20, 0xe9, 0xde, 0xdc, 0xe4, 0x73, 0x45, 0x1c, 0x2a, 0x69, 0xa1, - 0x87, 0x05, 0x14, 0x1f, - 0x37, 0x74, 0xd9, 0xa5, 0x33, 0x60, 0x7b, 0x4c, 0xc8, 0xff, 0xca, 0x2c, - 0x21, 0xa4, 0xd5, 0x15, - 0x38, 0xfe, 0x0a, 0x59, 0x8f, 0xd0, 0x03, 0x3b, 0xce, 0xf6, 0x74, 0xeb, - 0xac, 0x04, 0x10, 0x73, - 0x39, 0xaa, 0x3a, 0x22, 0x60, 0x54, 0x0b, 0x32, 0x1a, 0x23, 0xd7, 0x66, - 0x0a, 0xa5, 0xd1, 0x79, - 0x3a, 0x56, 0x6a, 0xaf, 0x92, 0x1b, 0x13, 0x29, 0xa5, 0x9f, 0xf1, 0x32, - 0x23, 0x85, 0x51, 0x67, - 0x3b, 0x02, 0x5a, 0xd4, 0x7d, 0x9f, 0x1b, 0x20, 0x71, 0x4a, 0x52, 0xbf, - 0x85, 0x24, 0x90, 0x6d, - 0x3c, 0x6d, 0xca, 0x76, 0xb5, 0x85, 0x23, 0x1f, 0x18, 0x24, 0xbd, 0x9a, - 0x71, 0xc5, 0x92, 0x5b, - 0x3d, 0x39, 0xfa, 0x0d, 0x5a, 0x01, 0x2b, 0x16, 0xcc, 0xf1, 0x1e, 0x17, - 0xd7, 0x64, 0x53, 0x51, - 0x3e, 0xc5, 0xaa, 0x80, 0xa8, 0x4e, 0x33, 0x0d, 0x73, 0x4d, 0x38, 0x43, - 0xfe, 0x44, 0xd3, 0x4f, - 0x3f, 0x91, 0x9a, 0xfb, 0x47, 0xca, 0x3b, 0x04, 0xa7, 0x98, 0x9b, 0xce, - 0x58, 0xe5, 0x12, 0x45, - 0x40, 0x24, 0x5d, 0xb5, 0x26, 0x19, 0x45, 0x05, 0xfe, 0xbe, 0xcd, 0x1c, - 0x4e, 0x4d, 0xf7, 0xc5, - 0x41, 0x70, 0x6d, 0xce, 0xc9, 0x9d, 0x4d, 0x0c, 0x2a, 0x6b, 0x6e, 0x91, - 0xe8, 0xec, 0x36, 0xcf, - 0x42, 0x8c, 0x3d, 0x43, 0x3b, 0xd2, 0x55, 0x17, 0x95, 0xd7, 0x48, 0xc5, - 0xc1, 0xcc, 0xb6, 0xd1, - 0x43, 0xd8, 0x0d, 0x38, 0xd4, 0x56, 0x5d, 0x1e, 0x41, 0x02, 0xeb, 0x48, - 0x67, 0x6d, 0x77, 0xdb, - 0x44, 0xb7, 0x9d, 0x9a, 0x1c, 0x4c, 0x65, 0x21, 0x28, 0x6c, 0x04, 0x6d, - 0x93, 0x8c, 0x75, 0xed, - 0x45, 0xe3, 0xad, 0xe1, 0xf3, 0xc8, 0x6d, 0x28, 0xfc, 0xb9, 0xa7, 0xe0, - 0x35, 0x2d, 0xb4, 0xe7, - 0x46, 0x1f, 0xfd, 0x6c, 0x01, 0x87, 0x75, 0x33, 0x43, 0x05, 0x81, 0xb4, - 0x1c, 0x0d, 0x34, 0xf9, - 0x47, 0x4b, 0xcd, 0x17, 0xee, 0x03, 0x7d, 0x3a, 0x97, 0xd0, 0x22, 0x39, - 0xba, 0xac, 0xf5, 0xf3, - 0x48, 0xc1, 0x1e, 0xeb, 0x52, 0xb3, 0x05, 0x4d, 0x91, 0xd9, 0x9c, 0xfe, - 0x37, 0x0c, 0x30, 0x95, - 0x49, 0x95, 0x2e, 0x90, 0xbd, 0x37, 0x0d, 0x44, 0x45, 0x0c, 0x3f, 0x73, - 0x91, 0xad, 0xf1, 0x9f, - 0x4a, 0x69, 0x7e, 0x1d, 0x4f, 0x78, 0x15, 0x5f, 0xfa, 0xb0, 0x19, 0x27, - 0xb8, 0x8d, 0x71, 0x81, - 0x4b, 0x3d, 0x4e, 0x66, 0xa0, 0xfc, 0x1d, 0x56, 0x2e, 0x65, 0xba, 0xaa, - 0x1e, 0x2c, 0xb0, 0x8b, - 0x4c, 0x52, 0xde, 0xc4, 0x68, 0xe6, 0x25, 0x69, 0x47, 0x0b, 0x55, 0x8f, - 0xea, 0xcd, 0xb2, 0xbd, - 0x4d, 0x06, 0xee, 0xbf, 0x87, 0x62, 0x2d, 0x60, 0x93, 0xde, 0xf6, 0x02, - 0x4c, 0x6c, 0x73, 0xb7, - 0x4e, 0xfa, 0xbe, 0x32, 0x75, 0x2d, 0x35, 0x7b, 0x2c, 0x62, 0xd0, 0x56, - 0x65, 0x4c, 0xf3, 0xa9, - 0x4f, 0xae, 0x8e, 0x49, 0x9a, 0xa9, 0x3d, 0x72, 0xf8, 0xb7, 0x73, 0xdb, - 0xc3, 0xed, 0x32, 0xa3, - 0x50, 0x2d, 0xdb, 0x09, 0xce, 0x8e, 0xc5, 0x95, 0x20, 0x70, 0x6f, 0x1b, - 0xbc, 0xcf, 0xba, 0x65, - 0x51, 0x79, 0xeb, 0x72, 0x21, 0x0a, 0xcd, 0x9c, 0xf4, 0xa5, 0xcc, 0x96, - 0x1a, 0x6e, 0x7b, 0x6f, - 0x52, 0x85, 0xbb, 0xff, 0xd3, 0x45, 0xd5, 0x87, 0x4b, 0x19, 0xea, 0xc2, - 0x33, 0x4e, 0xfb, 0x71, - 0x53, 0xd1, 0x8b, 0x84, 0x3c, 0xc1, 0xdd, 0x8e, 0x9f, 0xcc, 0x49, 0x4f, - 0x95, 0xef, 0x3a, 0x7b, - 0x54, 0xbe, 0x1b, 0x26, 0xf4, 0xdb, 0xe5, 0xb1, 0xf6, 0xa2, 0xa6, 0x6a, - 0x61, 0x0e, 0x38, 0x4d, - 0x55, 0xea, 0x2b, 0x5d, 0x1b, 0x5f, 0xed, 0xb8, 0x22, 0x77, 0x05, 0xe7, - 0xc7, 0xaf, 0xf9, 0x47, - 0x56, 0x16, 0x7b, 0xd0, 0xe9, 0x10, 0xf5, 0xa3, 0x9d, 0xcb, 0x23, 0xb3, - 0xee, 0x8f, 0x79, 0x59, - 0x57, 0x42, 0x4b, 0xab, 0x06, 0x94, 0xfd, 0xaa, 0x49, 0x1e, 0x80, 0x3e, - 0x48, 0x2e, 0xb8, 0x53, - 0x58, 0xc8, 0x98, 0x57, 0xba, 0x24, 0x85, 0xdd, 0x4f, 0x17, 0x3e, 0xf9, - 0xc5, 0x8e, 0x7d, 0x35, - 0x59, 0x9c, 0xa8, 0x2c, 0x55, 0xa0, 0x8d, 0xd4, 0x9b, 0xc2, 0x9d, 0x74, - 0x63, 0x2f, 0xbc, 0x3f, - 0x5a, 0x60, 0xf8, 0xa1, 0xa7, 0xef, 0x95, 0xcf, 0x24, 0x7e, 0xbb, 0x20, - 0x4a, 0x0f, 0x3c, 0x21, - 0x5b, 0x34, 0xc8, 0xda, 0x48, 0x6b, 0x9d, 0xc6, 0xf0, 0xab, 0x18, 0xad, - 0xec, 0xae, 0xfd, 0x2b, - 0x5c, 0x5b, 0x58, 0x78, 0x80, 0x71, 0xa5, 0xf9, 0x99, 0xc5, 0xf7, 0x88, - 0x18, 0x4f, 0xff, 0x1d, - 0x5d, 0x0f, 0x68, 0x03, 0x6f, 0xf5, 0xad, 0xf0, 0x4d, 0x10, 0x54, 0x05, - 0xbe, 0xee, 0x3e, 0x17, - 0x5e, 0xf3, 0x38, 0x8e, 0x9d, 0xba, 0xb5, 0xeb, 0xf2, 0xac, 0x72, 0x51, - 0x97, 0xce, 0xbe, 0x09, - 0x5f, 0xa7, 0x08, 0xf5, 0x72, 0x3e, 0xbd, 0xe2, 0x26, 0x79, 0xd1, 0xdc, - 0x31, 0x6f, 0x7f, 0x03, - 0x60, 0x36, 0x92, 0x0e, 0x35, 0xf4, 0x86, 0xe6, 0x81, 0xe1, 0x4a, 0x12, - 0x69, 0x8a, 0x6d, 0x46, - 0x61, 0x62, 0xa2, 0x75, 0xda, 0x70, 0x8e, 0xef, 0x55, 0x34, 0xe9, 0x9f, - 0xcf, 0x2b, 0xac, 0x4c, - 0x62, 0x9e, 0xf2, 0xf8, 0x28, 0x3f, 0x96, 0xf4, 0xea, 0x88, 0xcf, 0xcb, - 0xe6, 0x0b, 0x2c, 0x52, - 0x63, 0xca, 0xc2, 0x83, 0xc7, 0xbb, 0x9e, 0xfd, 0x3e, 0x5d, 0x6c, 0x46, - 0x40, 0xaa, 0xed, 0x58, - 0x64, 0xa5, 0x52, 0x21, 0x0f, 0xa1, 0xa6, 0xc2, 0x57, 0x33, 0x83, 0x63, - 0xb4, 0x4b, 0xef, 0x6e, - 0x65, 0xf1, 0x62, 0x5a, 0xe0, 0x25, 0xae, 0xcb, 0x83, 0xe6, 0x20, 0xee, - 0x12, 0xea, 0x2e, 0x64, - 0x66, 0x0d, 0x32, 0xd7, 0x12, 0x6a, 0xb6, 0xd0, 0x3c, 0x5a, 0x06, 0xba, - 0x3b, 0xca, 0xae, 0x7a, - 0x67, 0x59, 0x02, 0xac, 0xfd, 0xee, 0xbe, 0xd9, 0xe8, 0x8f, 0xa5, 0x37, - 0x9d, 0x6b, 0x6f, 0x70, - 0x68, 0xd3, 0xd1, 0x50, 0x41, 0x5e, 0xc6, 0xae, 0xee, 0x86, 0x1b, 0xf0, - 0x10, 0xcb, 0xaa, 0x16, - 0x69, 0x87, 0xe1, 0x2b, 0xae, 0xda, 0xce, 0xa7, 0x3a, 0x53, 0xb8, 0x7d, - 0xb6, 0x6a, 0x6b, 0x1c, - 0x6a, 0x7b, 0xb1, 0xa6, 0x5c, 0x95, 0xd6, 0xbc, 0x85, 0xef, 0x9e, 0x29, - 0x9f, 0x4a, 0xeb, 0x02, - 0x6b, 0x2f, 0x81, 0xdd, 0xb3, 0x11, 0xde, 0xb5, 0x51, 0x3a, 0x3d, 0xa4, - 0x39, 0xeb, 0x2a, 0x08, - 0x6c, 0x40, 0x11, 0x7f, 0x7b, 0x0b, 0xe6, 0x8a, 0x38, 0x54, 0xd2, 0x81, - 0xcd, 0x0a, 0x28, 0x3e, - 0x6d, 0x14, 0x21, 0x04, 0x94, 0x8f, 0xee, 0x83, 0xec, 0x81, 0x71, 0x0c, - 0x6b, 0xab, 0xe9, 0x34, - 0x6e, 0xe8, 0x71, 0x89, 0x66, 0xc0, 0xf6, 0x98, 0x53, 0x3d, 0x57, 0x58, - 0x42, 0x8b, 0x69, 0x2a, - 0x6f, 0xbc, 0x41, 0xf2, 0x89, 0x44, 0xfe, 0x91, 0x87, 0xe8, 0xf4, 0xd5, - 0xe4, 0x2a, 0xa8, 0x20, - 0x70, 0x3f, 0x14, 0xb2, 0xdd, 0x63, 0x06, 0x76, 0x5f, 0x2f, 0xe8, 0x15, - 0x9b, 0x08, 0x20, 0xe6, - 0x71, 0x6b, 0x24, 0xc9, 0x32, 0xe7, 0x0e, 0x7f, 0x8b, 0xfa, 0x4b, 0x98, - 0x3d, 0xa9, 0xe1, 0xec, - 0x72, 0x97, 0x74, 0x44, 0xc0, 0xa8, 0x16, 0x64, 0x34, 0x46, 0x6d, 0xcc, - 0x14, 0x89, 0x61, 0xf2, - 0x73, 0xc3, 0x44, 0x3f, 0x2f, 0x2c, 0x1e, 0x6d, 0xe0, 0x93, 0xce, 0x41, - 0xb2, 0x28, 0xa0, 0xf8, - 0x74, 0xac, 0xd4, 0x9d, 0xe7, 0x36, 0x26, 0x52, 0x89, 0xfd, 0x21, 0x64, - 0x46, 0xc9, 0xa2, 0xce, - 0x75, 0xf8, 0xe4, 0xe6, 0x08, 0xb2, 0x2e, 0x5b, 0x5d, 0x28, 0x82, 0xe9, - 0xe0, 0x68, 0x63, 0xc4, - 0x76, 0x04, 0xb4, 0x6b, 0xfa, 0xfd, 0x36, 0x40, 0xe2, 0x94, 0xa4, 0xbd, - 0xc9, 0x48, 0xe3, 0xda, - 0x77, 0x50, 0x84, 0x10, 0x15, 0x79, 0x3e, 0x49, 0x36, 0x41, 0x07, 0x30, - 0x6f, 0xe9, 0x22, 0xd0, - 0x78, 0xda, 0x57, 0xec, 0xa9, 0xc9, 0x46, 0x3e, 0x30, 0x48, 0xb9, 0xf7, - 0xe2, 0x49, 0xe7, 0xb6, - 0x79, 0x8e, 0x67, 0x97, 0x46, 0x4d, 0x4e, 0x37, 0xe4, 0x9d, 0x1a, 0x7a, - 0x44, 0xe8, 0x26, 0xbc, - 0x7a, 0x72, 0x37, 0x1a, 0xb4, 0x02, 0x56, 0x2c, 0x5b, 0x21, 0x3c, 0x2e, - 0x6d, 0xc8, 0xa6, 0xa2, - 0x7b, 0x26, 0x07, 0x61, 0x5b, 0x86, 0x5e, 0x25, 0x8f, 0xf4, 0x9f, 0xa3, - 0xcb, 0x69, 0x67, 0xa8, - 0x7c, 0x49, 0x97, 0xc3, 0x93, 0x9c, 0x66, 0x1a, 0xe6, 0x9a, 0x70, 0x86, - 0x3f, 0x88, 0x65, 0x9e, - 0x7d, 0x1d, 0xa7, 0xb8, 0x7c, 0x18, 0x6e, 0x13, 0x32, 0x4f, 0xd3, 0x0b, - 0x99, 0x29, 0xa4, 0x94, - 0x7e, 0xe1, 0xf7, 0x35, 0x8e, 0x57, 0x76, 0x08, 0x8d, 0xf3, 0xf5, 0x5f, - 0xb0, 0x09, 0x24, 0x8a, - 0x7f, 0xb5, 0xc7, 0x4e, 0x61, 0xd3, 0x7e, 0x01, 0x59, 0x26, 0x56, 0xd2, - 0x16, 0xa8, 0xe5, 0x80, - 0x80, 0x48, 0xba, 0xa9, 0x4c, 0x32, 0x8a, 0x0a, 0x3f, 0xbf, 0x59, 0x38, - 0x9c, 0x9a, 0x2d, 0x49, - 0x81, 0x1c, 0x8a, 0xd2, 0xa3, 0xb6, 0x82, 0x03, 0xeb, 0x6a, 0xfa, 0xb5, - 0x3a, 0x3b, 0xec, 0x43, - 0x82, 0xe0, 0xda, 0x5f, 0x51, 0xf9, 0x9a, 0x18, 0x54, 0xd6, 0xdc, 0xe1, - 0x13, 0x1b, 0x6c, 0x5d, - 0x83, 0xb4, 0xea, 0x24, 0xbe, 0x7d, 0x92, 0x11, 0x80, 0x03, 0x7f, 0x6c, - 0xb5, 0xba, 0xad, 0x57, - 0x84, 0xdb, 0x7a, 0x86, 0x76, 0x67, 0xaa, 0x2e, 0xe9, 0x6d, 0x90, 0x49, - 0x41, 0x5b, 0xaf, 0x61, - 0x85, 0x8f, 0x4a, 0xfd, 0x99, 0xe3, 0xa2, 0x27, 0x3d, 0xb8, 0x33, 0xc4, - 0xe7, 0xfa, 0x6e, 0x6b, - 0x86, 0x73, 0x1a, 0x70, 0x6b, 0xac, 0xba, 0x3c, 0x82, 0x04, 0x15, 0x90, - 0xce, 0xda, 0xee, 0x75, - 0x87, 0x27, 0x2a, 0x0b, 0x84, 0x28, 0xb2, 0x35, 0x56, 0xd1, 0xb6, 0x1d, - 0x68, 0x7b, 0x2f, 0x7f, - 0x88, 0xad, 0xf9, 0xf7, 0x38, 0x98, 0xca, 0x42, 0x50, 0xd8, 0x08, 0xda, - 0xe5, 0xdb, 0xea, 0x19, - 0x89, 0xf9, 0xc9, 0x8c, 0xd7, 0x1c, 0xc2, 0x4b, 0x84, 0x0d, 0xab, 0x57, - 0x43, 0x7a, 0x2b, 0x13, - 0x8a, 0x05, 0x99, 0x01, 0x25, 0x53, 0xda, 0x50, 0x3b, 0xb1, 0x8d, 0x03, - 0x6a, 0x5a, 0xab, 0x0d, - 0x8b, 0x51, 0xa9, 0x7a, 0xca, 0xd7, 0xd2, 0x59, 0xef, 0x64, 0x2e, 0x8e, - 0xcc, 0xfb, 0x6a, 0x07, - 0x8c, 0x3e, 0x39, 0xd8, 0x02, 0xcd, 0xea, 0x66, 0x86, 0x0a, 0xc1, 0xab, - 0x38, 0x1a, 0x68, 0x31, - 0x8d, 0x6a, 0x09, 0xa3, 0xed, 0x49, 0xe2, 0x6f, 0x52, 0xdf, 0x62, 0x26, - 0x9e, 0xbb, 0xa9, 0x3b, - 0x8e, 0x96, 0x59, 0x2e, 0x1f, 0x06, 0xfa, 0x74, 0xed, 0x63, 0x44, 0x72, - 0xb7, 0x9b, 0x29, 0x25, - 0x8f, 0xc2, 0x69, 0x55, 0xf0, 0x82, 0xf2, 0x7d, 0x39, 0xb6, 0xe7, 0xff, - 0x11, 0x3a, 0xe8, 0x2f, - 0x90, 0x41, 0x3c, 0x15, 0xa4, 0xa5, 0x0a, 0x9a, 0xe1, 0x71, 0xfb, 0x3f, - 0x6e, 0x18, 0x60, 0xe9, - 0x91, 0x15, 0x0c, 0x6e, 0x4b, 0x21, 0x02, 0x93, 0x35, 0xa4, 0x58, 0xb2, - 0xc8, 0xb9, 0xa1, 0xe3, - 0x92, 0xe9, 0x5c, 0xe3, 0xb9, 0x6e, 0x1a, 0x88, 0x8a, 0x18, 0x7e, 0xe6, - 0xe1, 0x99, 0x21, 0xfd, - 0x93, 0xbd, 0x6c, 0x98, 0x56, 0xea, 0x12, 0x81, 0x5e, 0xcd, 0xdd, 0x6b, - 0x47, 0x38, 0xe0, 0xf7, - 0x94, 0xd2, 0xfc, 0x3a, 0x9e, 0xf0, 0x2a, 0xbe, 0x37, 0xa3, 0x32, 0x4e, - 0xb3, 0xd9, 0xe2, 0xc1, - 0x95, 0x86, 0xcc, 0x41, 0x71, 0x74, 0x22, 0xb7, 0xe3, 0x76, 0x91, 0xc3, - 0x15, 0x78, 0x23, 0xcb, - 0x96, 0x7a, 0x9c, 0xcc, 0x83, 0x3b, 0x3a, 0xac, 0x5c, 0xca, 0xb7, 0x97, - 0x3c, 0x58, 0xa3, 0xd5, - 0x97, 0x2e, 0xac, 0xb7, 0x6c, 0xbf, 0x32, 0xa5, 0x88, 0x1f, 0x14, 0x1a, - 0x9a, 0xf9, 0x62, 0xdf, - 0x98, 0xa4, 0x7f, 0x4b, 0xd0, 0x0f, 0x4a, 0xd2, 0x8e, 0x16, 0xaa, 0xdd, - 0x17, 0x59, 0xa7, 0xb9, - 0x99, 0xf0, 0x4f, 0x30, 0x3f, 0x8b, 0x42, 0xdb, 0x5a, 0xc3, 0x09, 0x50, - 0xb1, 0xf8, 0x66, 0xb3, - 0x9a, 0x0c, 0x1f, 0xbd, 0xcd, 0xc4, 0x5a, 0xc0, 0xe5, 0x7f, 0x2f, 0x04, - 0x98, 0xd8, 0xe6, 0xad, - 0x9b, 0x58, 0x2f, 0xc6, 0x22, 0x40, 0x52, 0xc9, 0x31, 0xaa, 0x8c, 0x89, - 0x3e, 0x79, 0x27, 0xa7, - 0x9c, 0x37, 0xbf, 0x64, 0xea, 0x5a, 0x6a, 0xf6, 0x58, 0xc4, 0x63, 0xac, - 0xca, 0x98, 0x25, 0x91, - 0x9d, 0x63, 0x8f, 0x1f, 0x05, 0xde, 0x62, 0xff, 0x8c, 0x11, 0xc0, 0x21, - 0x6c, 0x39, 0xe4, 0x9b, - 0x9e, 0x9f, 0xdf, 0x92, 0xf7, 0x91, 0x7a, 0xe4, 0x33, 0xad, 0xe6, 0x75, - 0x45, 0x19, 0x64, 0x85, - 0x9f, 0xcb, 0xef, 0xe9, 0x18, 0x15, 0x72, 0xed, 0xe7, 0x78, 0x45, 0xf8, - 0xe3, 0xb8, 0xa5, 0x8f, - 0xa0, 0x5a, 0x75, 0x12, 0x5f, 0xdf, 0x49, 0xe9, 0x40, 0xe0, 0xde, 0x36, - 0xbb, 0x5d, 0xb7, 0xca, - 0xa1, 0x0e, 0x45, 0x69, 0xb0, 0x5b, 0x41, 0xe0, 0x94, 0x35, 0x7d, 0xbb, - 0x1d, 0xfc, 0x76, 0xc0, - 0xa2, 0xf2, 0x15, 0xe4, 0x42, 0x14, 0x59, 0xfb, 0x2b, 0x89, 0x5b, 0xef, - 0x34, 0xdc, 0xf6, 0xde, - 0xa3, 0xa6, 0x25, 0x9f, 0xad, 0x90, 0x51, 0xf2, 0xff, 0x5c, 0xf8, 0x62, - 0x92, 0x7d, 0x37, 0xd4, - 0xa4, 0xc9, 0xb5, 0x3d, 0x65, 0x8a, 0x69, 0xcd, 0x96, 0x32, 0x17, 0x47, - 0x66, 0x9c, 0x35, 0xe2, - 0xa5, 0x9d, 0x85, 0x46, 0x8a, 0x0e, 0x61, 0xc4, 0x42, 0xe7, 0xb4, 0xca, - 0xc0, 0x3d, 0xf4, 0xe8, - 0xa6, 0x61, 0xd5, 0xcb, 0x78, 0x41, 0x79, 0xdf, 0xfd, 0x5b, 0x92, 0x9e, - 0xe9, 0x1d, 0x74, 0xf6, - 0xa7, 0x35, 0xe5, 0xb0, 0x97, 0xc5, 0x71, 0xd6, 0x29, 0x8e, 0x31, 0x13, - 0x4f, 0xbc, 0xb5, 0xfc, - 0xa8, 0xbf, 0x36, 0x4c, 0x2b, 0x75, 0x09, 0xa1, 0x2f, 0x87, 0x8f, 0xd4, - 0xc2, 0x1c, 0x70, 0x9a, - 0xa9, 0xeb, 0x06, 0x37, 0xc4, 0xf1, 0x01, 0xa8, 0xfb, 0x52, 0x2c, 0x59, - 0x64, 0xbd, 0xb1, 0x90, - 0xaa, 0x17, 0x56, 0xba, 0x36, 0xbe, 0x19, 0xb3, 0x44, 0xee, 0x0a, 0x0d, - 0x4d, 0x9d, 0x31, 0x8e, - 0xab, 0x43, 0x66, 0xc1, 0xd9, 0x3a, 0x11, 0xba, 0x90, 0x3b, 0xa9, 0x80, - 0xeb, 0x3c, 0xf0, 0x84, - 0xac, 0x2c, 0xf6, 0x63, 0x11, 0x20, 0x29, 0x85, 0xf9, 0x55, 0x46, 0xa5, - 0x1f, 0xdd, 0xf2, 0xb2, - 0xad, 0x78, 0xc6, 0x18, 0xfe, 0xa4, 0x21, 0x8c, 0x2d, 0x80, 0xe5, 0x28, - 0xb9, 0x7c, 0x33, 0xb8, - 0xae, 0x84, 0x96, 0x95, 0x0c, 0xeb, 0x39, 0x97, 0x92, 0x3c, 0xc3, 0x7c, - 0x90, 0x5c, 0xb3, 0xa6, - 0xaf, 0xd0, 0xa6, 0xee, 0xe3, 0x6f, 0x31, 0x9e, 0x46, 0xe9, 0x60, 0xf1, - 0x36, 0xfd, 0x72, 0xac, - 0xb0, 0x53, 0xf3, 0xae, 0xb7, 0x48, 0xc9, 0x79, 0x9e, 0x2e, 0x7c, 0x31, - 0x49, 0xdf, 0xfa, 0x6a, - 0xb1, 0x07, 0xc3, 0xd5, 0x58, 0xcc, 0xc1, 0x70, 0x4a, 0xfb, 0xdf, 0xbc, - 0xef, 0x7e, 0x3b, 0x60, - 0xb2, 0xfb, 0x93, 0x58, 0xaa, 0x83, 0xd9, 0x6b, 0xf5, 0x47, 0xf9, 0xe8, - 0xc6, 0x5e, 0xbb, 0x7e, - 0xb3, 0xaf, 0xa3, 0x23, 0x45, 0x07, 0xd1, 0x62, 0x21, 0x92, 0x5a, 0x65, - 0x60, 0xff, 0x7a, 0x74, - 0xb4, 0xc0, 0x33, 0x81, 0x8d, 0x1d, 0xe9, 0x5d, 0x48, 0xfc, 0xb5, 0x40, - 0x94, 0x1e, 0x78, 0x42, - 0xb5, 0x94, 0x03, 0xfa, 0x62, 0x99, 0xe1, 0x54, 0x9c, 0x29, 0x16, 0xcd, - 0x32, 0xbf, 0xb9, 0x48, - 0xb6, 0x68, 0x53, 0x77, 0x90, 0xd6, 0xf9, 0x4f, 0x23, 0x95, 0x30, 0x99, - 0x1b, 0x9f, 0x39, 0x56, - 0xb7, 0x3c, 0x63, 0x0c, 0x7f, 0x52, 0xf1, 0x46, 0xf7, 0x40, 0x93, 0x14, - 0xbd, 0x3e, 0xf8, 0x5c, - 0xb8, 0xb6, 0xb0, 0xf0, 0xc3, 0xe2, 0x89, 0x31, 0xf1, 0x49, 0x2d, 0xd3, - 0x30, 0x9e, 0x3d, 0x3a, - 0xb9, 0xe2, 0x80, 0x8b, 0x2c, 0x66, 0x81, 0x38, 0x25, 0x9c, 0x8e, 0x5e, - 0x96, 0x3f, 0xfc, 0x30, - 0xba, 0x1e, 0xd0, 0x06, 0xde, 0x29, 0x99, 0x23, 0x9a, 0x20, 0xa8, 0x0a, - 0xbf, 0x1f, 0x7c, 0x2e, - 0xbb, 0x4a, 0xe0, 0x7d, 0x31, 0xad, 0x91, 0x2a, 0x4e, 0xf5, 0x0b, 0x87, - 0x19, 0xbe, 0xbd, 0x24, - 0xbc, 0x25, 0x70, 0xdf, 0xf9, 0xb7, 0xa9, 0x15, 0x27, 0x9b, 0xe4, 0xa2, - 0xed, 0x5f, 0xbf, 0x12, - 0xbd, 0x71, 0x40, 0xa4, 0x16, 0x33, 0xa1, 0x1c, 0xf3, 0x4e, 0x47, 0x2f, - 0x4b, 0xfe, 0x7e, 0x18, - 0xbe, 0x8d, 0x10, 0x29, 0xe4, 0x7c, 0xb9, 0x07, 0x4c, 0xf2, 0x61, 0x7b, - 0x62, 0xde, 0xfe, 0x06, - 0xbf, 0xd9, 0x20, 0x52, 0x0b, 0xf8, 0xb1, 0x0e, 0x98, 0x27, 0xc2, 0xf6, - 0xc4, 0x7f, 0x3f, 0x0c, - 0xc0, 0x6c, 0xe7, 0x1c, 0x6a, 0x2b, 0xcf, 0x0f, 0xc1, 0x01, 0x94, 0x24, - 0xd2, 0xd7, 0xda, 0x8c, - 0xc1, 0x38, 0xd7, 0x67, 0x85, 0xaf, 0xc7, 0x06, 0x15, 0xd4, 0x37, 0xa9, - 0x74, 0x76, 0x1b, 0x86, - 0xc2, 0xc4, 0x87, 0xea, 0x77, 0xe0, 0xdf, 0x1d, 0xaa, 0x68, 0x11, 0xfd, - 0x5d, 0x56, 0x9b, 0x98, - 0xc3, 0x90, 0xb7, 0x91, 0x98, 0x64, 0xd7, 0x14, 0x7e, 0xbd, 0xb2, 0x70, - 0xfb, 0xf7, 0x5a, 0x92, - 0xc4, 0xff, 0x27, 0x33, 0x50, 0x7e, 0xef, 0x2b, 0x17, 0xd3, 0x5d, 0x55, - 0x0f, 0x16, 0x58, 0xa4, - 0xc5, 0xab, 0x17, 0x48, 0xbf, 0xfa, 0xe7, 0x22, 0xc3, 0x06, 0xfe, 0xd8, - 0xa9, 0xb7, 0x99, 0xae, - 0xc6, 0x57, 0x47, 0xc5, 0x4d, 0xb5, 0xff, 0x39, 0x7c, 0xba, 0xd8, 0x8c, - 0x80, 0x97, 0x19, 0xb0, - 0xc7, 0x03, 0x77, 0xbe, 0xa2, 0x31, 0xf7, 0x30, 0xa8, 0x6f, 0x7b, 0x01, - 0x26, 0x36, 0xd8, 0xba, - 0xc8, 0x89, 0xa4, 0x42, 0x1e, 0x81, 0x8f, 0x47, 0xae, 0x66, 0xc5, 0xc6, - 0xab, 0x96, 0x1d, 0xdc, - 0xc9, 0xdd, 0x94, 0x39, 0xf1, 0x05, 0x87, 0x4e, 0x7a, 0xb3, 0x66, 0x4b, - 0x0d, 0x37, 0xdc, 0xd6, - 0xca, 0x21, 0xc4, 0xb4, 0x03, 0x4a, 0x9f, 0x55, 0xc5, 0x0f, 0x40, 0x1f, - 0x24, 0x17, 0x5c, 0xc8, - 0xcb, 0x75, 0xf4, 0xcf, 0xec, 0xce, 0x97, 0x5c, 0x11, 0xda, 0xe3, 0x92, - 0x82, 0xb6, 0x9d, 0xc2, - 0xcc, 0x1a, 0x64, 0x6d, 0x24, 0xd4, 0xaf, 0x63, 0x78, 0xb4, 0x0c, 0xb7, - 0x76, 0x57, 0x9f, 0xf4, - 0xcd, 0x4e, 0x54, 0x16, 0xcb, 0x50, 0xa7, 0x6a, 0xac, 0x61, 0xaf, 0x3a, - 0xd0, 0xf6, 0x5e, 0xfe, - 0xce, 0xb2, 0x04, 0x9b, 0x39, 0x1f, 0xbf, 0x71, 0x13, 0xdd, 0x89, 0x6e, - 0xf9, 0xd6, 0xde, 0xe0, - 0xcf, 0xe6, 0x34, 0xe0, 0xd6, 0x9b, 0xb7, 0x78, 0xc7, 0x08, 0x2a, 0xe3, - 0x5f, 0x77, 0x1f, 0xea, - 0xd0, 0x65, 0x61, 0xa0, 0x82, 0xbc, 0x4f, 0x9f, 0x1f, 0xcf, 0x36, 0x23, - 0x20, 0x55, 0x97, 0x2c, - 0xd1, 0x31, 0x51, 0xdb, 0x6d, 0x38, 0x47, 0x96, 0xcb, 0x1a, 0x95, 0xae, - 0x86, 0xf4, 0x56, 0x26, - 0xd2, 0xcd, 0x01, 0x56, 0x9f, 0x77, 0x5f, 0x8d, 0x74, 0xa6, 0xb3, 0xfa, - 0xaf, 0xd4, 0xd6, 0x38, - 0xd3, 0x99, 0x31, 0x2d, 0x70, 0xf3, 0x57, 0x84, 0xa0, 0x73, 0x10, 0x77, - 0x09, 0x75, 0x17, 0x32, - 0xd4, 0xf6, 0xa1, 0x8f, 0xb8, 0xe9, 0x6f, 0xbb, 0xc9, 0x1d, 0xff, 0x52, - 0xfd, 0x94, 0x15, 0x04, - 0xd5, 0xa2, 0x91, 0xf4, 0x57, 0x6d, 0x67, 0xb2, 0x1d, 0xc8, 0x5c, 0xdf, - 0x5b, 0x35, 0xd4, 0x0e, - 0xd6, 0x5e, 0xc1, 0x79, 0xa5, 0x22, 0x7f, 0xa9, 0xa2, 0x74, 0x7a, 0x8b, - 0x72, 0x15, 0x54, 0x10, - 0xd7, 0x0a, 0xf1, 0x02, 0x4a, 0xa6, 0x77, 0xa0, 0x76, 0xa1, 0xd9, 0x06, - 0xd4, 0xb4, 0x95, 0x1a, - 0xd8, 0x80, 0x22, 0xfe, 0xf6, 0x16, 0x0f, 0xd7, 0x70, 0xa8, 0x67, 0xc1, - 0x59, 0x14, 0x50, 0x7c, - 0xd9, 0xd4, 0x12, 0x85, 0x19, 0x92, 0x07, 0xde, 0xa4, 0x7d, 0xc4, 0x4c, - 0xff, 0xb5, 0x91, 0x76, - 0xda, 0x28, 0x42, 0x08, 0xeb, 0xdd, 0x1f, 0xc5, 0x1b, 0xc1, 0xe2, 0x18, - 0xd6, 0x95, 0x11, 0x68, - 0xdb, 0x7c, 0x72, 0x73, 0x04, 0x59, 0x17, 0xcc, 0xcf, 0x14, 0x41, 0x95, - 0x70, 0x34, 0xd0, 0x62, - 0xdc, 0x13, 0xe2, 0xd1, 0xcc, 0x43, 0x2f, 0xf3, 0xa6, 0x7a, 0xae, 0xb0, - 0x84, 0xd5, 0xd2, 0x54, - 0xdd, 0x47, 0xd2, 0xaa, 0x23, 0xc7, 0x27, 0xfa, 0x72, 0xaf, 0x0d, 0x3d, - 0x22, 0x74, 0x13, 0x5e, - 0xde, 0xbb, 0x82, 0x27, 0xd1, 0x88, 0x3f, 0xe1, 0xcd, 0x13, 0x2b, 0x69, - 0x0b, 0x54, 0x93, 0x40, - 0xdf, 0xef, 0xb2, 0x5c, 0x3e, 0x0c, 0x37, 0xe8, 0x19, 0xc6, 0x88, 0xe4, - 0xad, 0xf5, 0x52, 0x4a, - 0xe0, 0x7e, 0x28, 0xa7, 0x79, 0xc6, 0x0c, 0xec, 0xbe, 0x5e, 0x13, 0x2a, - 0xf5, 0x10, 0x40, 0x0f, - 0xe1, 0x2a, 0x18, 0xdc, 0x96, 0x42, 0x04, 0xe5, 0x6a, 0x8b, 0xb0, 0xa7, - 0x53, 0xb1, 0x81, 0x05, - 0xe2, 0xd6, 0x48, 0x51, 0x64, 0x0d, 0x1c, 0xfe, 0xd5, 0x37, 0x96, 0xf3, - 0x7a, 0x91, 0x01, 0x1b, - 0xe3, 0x82, 0x78, 0x2a, 0x8b, 0x89, 0x14, 0xf7, 0x01, 0xe2, 0x35, 0x7e, - 0xdc, 0x30, 0xc0, 0x11, - 0xe4, 0xed, 0xe8, 0x88, 0x43, 0x93, 0x2c, 0xc8, 0x68, 0x8c, 0xda, 0x5b, - 0x28, 0xd1, 0xc2, 0x27, - 0xe5, 0xb9, 0xd8, 0xf3, 0xac, 0x17, 0x24, 0xc1, 0xbc, 0x59, 0x79, 0xd6, - 0x8e, 0x70, 0x03, 0x2d, - 0xe6, 0x45, 0x88, 0x7e, 0x5e, 0x58, 0x3c, 0xda, 0x03, 0xe5, 0x5f, 0x82, - 0xa7, 0x50, 0x83, 0x33, - 0xe7, 0x11, 0xb8, 0x05, 0xb1, 0xdc, 0x34, 0xd3, 0xd7, 0x30, 0xfc, 0x0f, - 0x01, 0xf1, 0x42, 0x39, - 0xe8, 0x9b, 0x6b, 0xf9, 0x0d, 0x6c, 0x4c, 0xa4, 0xd1, 0x39, 0x42, 0xc8, - 0x8c, 0x51, 0x87, 0x5f, - 0xe9, 0xcf, 0x5b, 0x82, 0xe2, 0xe8, 0x44, 0xad, 0x05, 0xec, 0xe1, 0x45, - 0x2a, 0xf0, 0x46, 0x55, - 0xea, 0x33, 0x0b, 0x0f, 0x10, 0xa7, 0x5c, 0xb6, 0xba, 0x50, 0xc7, 0x11, - 0x03, 0xd0, 0xc6, 0x4b, - 0xeb, 0x67, 0x3b, 0x74, 0xff, 0x23, 0x54, 0xbf, 0x6e, 0x85, 0x64, 0x9c, - 0xa5, 0x71, 0x07, 0x41, - 0xec, 0x08, 0xab, 0xd6, 0x37, 0x39, 0x6c, 0x80, 0x07, 0xeb, 0x8b, 0xb9, - 0x51, 0x90, 0x05, 0x77, - 0xed, 0x5c, 0x9b, 0xad, 0xd8, 0xbd, 0x64, 0x89, 0xd3, 0x3e, 0x28, 0x34, - 0xf7, 0x31, 0xc4, 0x7d, - 0xee, 0xa0, 0xcb, 0x20, 0x2a, 0xf2, 0x7c, 0x92, 0x6c, 0x82, 0x0e, 0x60, - 0xde, 0x11, 0x44, 0x63, - 0xef, 0xf4, 0xfb, 0x5b, 0xc5, 0x76, 0x74, 0x9b, 0xb8, 0x57, 0xad, 0xed, - 0x78, 0xb0, 0x85, 0x69, - 0xf0, 0x77, 0xae, 0x1b, 0x91, 0x51, 0x8c, 0x7c, 0x60, 0x90, 0xb1, 0x2d, - 0x07, 0x92, 0x0d, 0xaf, - 0xf1, 0x23, 0x9e, 0x60, 0x7e, 0xd5, 0x84, 0x75, 0xb4, 0x45, 0x12, 0xa0, - 0xa1, 0x33, 0xcc, 0xa5, - 0xf2, 0xdf, 0xce, 0xed, 0x8c, 0x9a, 0x9c, 0x6e, 0x0b, 0xf9, 0x34, 0xf4, - 0x88, 0x13, 0x4c, 0xbb, - 0xf3, 0x8b, 0xfe, 0x96, 0x63, 0x1e, 0x94, 0x67, 0xdf, 0x2c, 0x97, 0x79, - 0x2e, 0xb2, 0x8d, 0xb1, - 0xf4, 0xe4, 0x6e, 0x34, 0xab, 0x04, 0xac, 0x58, 0xb6, 0x42, 0x78, 0x5c, - 0xda, 0x53, 0x8f, 0x87, - 0xf5, 0xb0, 0x5e, 0x4f, 0x44, 0x80, 0xa4, 0x51, 0x62, 0x97, 0xdb, 0xd1, - 0x7c, 0xf2, 0x4e, 0x8d, - 0xf6, 0x4c, 0x0e, 0xc2, 0xb6, 0xcf, 0xbc, 0x4a, 0xdd, 0x2b, 0xfd, 0x85, - 0x55, 0xd2, 0xce, 0x93, - 0xf7, 0x18, 0x3e, 0xb9, 0x59, 0x4b, 0xb4, 0x43, 0x09, 0xfe, 0x5e, 0x08, - 0xf3, 0x73, 0x0f, 0x99, - 0xf8, 0x92, 0xed, 0x45, 0xe5, 0xfb, 0xcc, 0x34, 0x0f, 0xf7, 0xe0, 0xcf, - 0x7e, 0xd3, 0xca, 0xff, - 0xf9, 0xc6, 0xdd, 0x3e, 0x0a, 0x7f, 0xc4, 0x3d, 0xdb, 0x22, 0x43, 0x42, - 0xd8, 0x72, 0x0b, 0xf5, - 0xfa, 0x3a, 0x8d, 0xb3, 0xf8, 0x30, 0xdc, 0x26, 0x64, 0x9e, 0x65, 0x16, - 0xf1, 0x52, 0x8b, 0xeb, - 0xfb, 0x6e, 0xbd, 0xc8, 0x17, 0xb4, 0xd4, 0x2f, 0xb0, 0x4b, 0xc6, 0x9b, - 0x57, 0xf3, 0x4a, 0xe1, - 0xfc, 0x01, 0x2d, 0x6a, 0xdf, 0xae, 0xec, 0x10, 0xd9, 0x25, 0x29, 0xbe, - 0xa3, 0x12, 0x48, 0xd7, - 0xfd, 0x55, 0x1d, 0x11, 0x30, 0x2a, 0xe4, 0x19, 0x0d, 0xf0, 0x8a, 0x33, - 0x05, 0xb3, 0x89, 0xdd, - 0xfe, 0xa9, 0x4d, 0x9c, 0xc2, 0x65, 0xfc, 0x02, 0xb2, 0x4c, 0xac, 0x67, - 0x2c, 0x93, 0x09, 0xc3, - 0xff, 0xfd, 0x7d, 0xe7, 0x2d, 0xe1, 0xf4, 0x0b, 0x66, 0x99, 0x0f, 0xea, - 0x8a, 0x32, 0xc8, 0xc9, - }, - { /* 8 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0xfb, 0xde, 0xe0, 0xaf, 0x10, 0xc9, 0xf6, 0x49, 0xbe, 0xe7, 0x6e, 0xa4, - 0x6a, 0x2b, 0x9c, 0xf3, - 0x35, 0x7f, 0x03, 0x9d, 0x20, 0x51, 0x2f, 0x92, 0xbf, 0x0d, 0xdc, 0x8b, - 0xd4, 0x56, 0xfb, 0x25, - 0xce, 0xa1, 0xe3, 0x32, 0x30, 0x98, 0xd9, 0xdb, 0x01, 0xea, 0xb2, 0x2f, - 0xbe, 0x7d, 0x67, 0xd6, - 0x6a, 0xfe, 0x06, 0xf9, 0x40, 0xa2, 0x5e, 0xe7, 0xbd, 0x1a, 0x7b, 0xd5, - 0x6b, 0xac, 0x35, 0x4a, - 0x91, 0x20, 0xe6, 0x56, 0x50, 0x6b, 0xa8, 0xae, 0x03, 0xfd, 0x15, 0x71, - 0x01, 0x87, 0xa9, 0xb9, - 0x5f, 0x81, 0x05, 0x64, 0x60, 0xf3, 0x71, 0x75, 0x02, 0x17, 0xa7, 0x5e, - 0xbf, 0xfa, 0xce, 0x6f, - 0xa4, 0x5f, 0xe5, 0xcb, 0x70, 0x3a, 0x87, 0x3c, 0xbc, 0xf0, 0xc9, 0xfa, - 0xd5, 0xd1, 0x52, 0x9c, - 0xd4, 0x3f, 0x0c, 0x31, 0x80, 0x87, 0xbc, 0x0d, 0xb9, 0x34, 0xf6, 0x69, - 0xd6, 0x9b, 0x6a, 0x94, - 0x2f, 0xe1, 0xec, 0x9e, 0x90, 0x4e, 0x4a, 0x44, 0x07, 0xd3, 0x98, 0xcd, - 0xbc, 0xb0, 0xf6, 0x67, - 0xe1, 0x40, 0x0f, 0xac, 0xa0, 0xd6, 0x93, 0x9f, 0x06, 0x39, 0x2a, 0xe2, - 0x02, 0xcd, 0x91, 0xb1, - 0x1a, 0x9e, 0xef, 0x03, 0xb0, 0x1f, 0x65, 0xd6, 0xb8, 0xde, 0x44, 0x46, - 0x68, 0xe6, 0x0d, 0x42, - 0xbe, 0xc1, 0x0a, 0xc8, 0xc0, 0x25, 0xe2, 0xea, 0x04, 0x2e, 0x8d, 0xbc, - 0xbd, 0x37, 0x5f, 0xde, - 0x45, 0x1f, 0xea, 0x67, 0xd0, 0xec, 0x14, 0xa3, 0xba, 0xc9, 0xe3, 0x18, - 0xd7, 0x1c, 0xc3, 0x2d, - 0x8b, 0xbe, 0x09, 0x55, 0xe0, 0x74, 0xcd, 0x78, 0xbb, 0x23, 0x51, 0x37, - 0x69, 0x61, 0xa4, 0xfb, - 0x70, 0x60, 0xe9, 0xfa, 0xf0, 0xbd, 0x3b, 0x31, 0x05, 0xc4, 0x3f, 0x93, - 0x03, 0x4a, 0x38, 0x08, - 0x6b, 0x7e, 0x18, 0x62, 0xc3, 0xcd, 0xbb, 0x1a, 0xb1, 0x68, 0x2f, 0xd2, - 0x6f, 0xf5, 0xd4, 0xeb, - 0x90, 0xa0, 0xf8, 0xcd, 0xd3, 0x04, 0x4d, 0x53, 0x0f, 0x8f, 0x41, 0x76, - 0x05, 0xde, 0x48, 0x18, - 0x5e, 0x01, 0x1b, 0xff, 0xe3, 0x9c, 0x94, 0x88, 0x0e, 0x65, 0xf3, 0x59, - 0xbb, 0xa3, 0x2f, 0xce, - 0xa5, 0xdf, 0xfb, 0x50, 0xf3, 0x55, 0x62, 0xc1, 0xb0, 0x82, 0x9d, 0xfd, - 0xd1, 0x88, 0xb3, 0x3d, - 0x01, 0x80, 0x1e, 0x9b, 0x83, 0x6f, 0xe5, 0xfd, 0x0c, 0x72, 0x54, 0x07, - 0x04, 0x59, 0xe1, 0xa1, - 0xfa, 0x5e, 0xfe, 0x34, 0x93, 0xa6, 0x13, 0xb4, 0xb2, 0x95, 0x3a, 0xa3, - 0x6e, 0x72, 0x7d, 0x52, - 0x34, 0xff, 0x1d, 0x06, 0xa3, 0x3e, 0xca, 0x6f, 0xb3, 0x7f, 0x88, 0x8c, - 0xd0, 0x0f, 0x1a, 0x84, - 0xcf, 0x21, 0xfd, 0xa9, 0xb3, 0xf7, 0x3c, 0x26, 0x0d, 0x98, 0xe6, 0x28, - 0xba, 0x24, 0x86, 0x77, - 0xbf, 0x41, 0x14, 0x53, 0x43, 0x4a, 0x07, 0x17, 0x08, 0x5c, 0xd9, 0xbb, - 0xb9, 0x6e, 0xbe, 0x7f, - 0x44, 0x9f, 0xf4, 0xfc, 0x53, 0x83, 0xf1, 0x5e, 0xb6, 0xbb, 0xb7, 0x1f, - 0xd3, 0x45, 0x22, 0x8c, - 0x8a, 0x3e, 0x17, 0xce, 0x63, 0x1b, 0x28, 0x85, 0xb7, 0x51, 0x05, 0x30, - 0x6d, 0x38, 0x45, 0x5a, - 0x71, 0xe0, 0xf7, 0x61, 0x73, 0xd2, 0xde, 0xcc, 0x09, 0xb6, 0x6b, 0x94, - 0x07, 0x13, 0xd9, 0xa9, - 0xd5, 0xbf, 0x12, 0xaa, 0x03, 0xe8, 0x59, 0xf0, 0xb5, 0x46, 0xa2, 0x6e, - 0xd2, 0xc2, 0x8b, 0x35, - 0x2e, 0x61, 0xf2, 0x05, 0x13, 0x21, 0xaf, 0xb9, 0x0b, 0xa1, 0xcc, 0xca, - 0xb8, 0xe9, 0x17, 0xc6, - 0xe0, 0xc0, 0x11, 0x37, 0x23, 0xb9, 0x76, 0x62, 0x0a, 0x4b, 0x7e, 0xe5, - 0x06, 0x94, 0x70, 0x10, - 0x1b, 0x1e, 0xf1, 0x98, 0x33, 0x70, 0x80, 0x2b, 0xb4, 0xac, 0x10, 0x41, - 0x6c, 0xbf, 0xec, 0xe3, - 0xd6, 0xfc, 0x30, 0xc4, 0x45, 0x59, 0xb5, 0x34, 0xa1, 0xd0, 0x5e, 0x67, - 0xde, 0x29, 0x6b, 0x15, - 0x2d, 0x22, 0xd0, 0x6b, 0x55, 0x90, 0x43, 0x7d, 0x1f, 0x37, 0x30, 0xc3, - 0xb4, 0x02, 0xf7, 0xe6, - 0xe3, 0x83, 0x33, 0x59, 0x65, 0x08, 0x9a, 0xa6, 0x1e, 0xdd, 0x82, 0xec, - 0x0a, 0x7f, 0x90, 0x30, - 0x18, 0x5d, 0xd3, 0xf6, 0x75, 0xc1, 0x6c, 0xef, 0xa0, 0x3a, 0xec, 0x48, - 0x60, 0x54, 0x0c, 0xc3, - 0xbc, 0x02, 0x36, 0x3d, 0x05, 0xfb, 0xeb, 0xd3, 0x1c, 0xca, 0x25, 0xb2, - 0xb5, 0x85, 0x5e, 0x5f, - 0x47, 0xdc, 0xd6, 0x92, 0x15, 0x32, 0x1d, 0x9a, 0xa2, 0x2d, 0x4b, 0x16, - 0xdf, 0xae, 0xc2, 0xac, - 0x89, 0x7d, 0x35, 0xa0, 0x25, 0xaa, 0xc4, 0x41, 0xa3, 0xc7, 0xf9, 0x39, - 0x61, 0xd3, 0xa5, 0x7a, - 0x72, 0xa3, 0xd5, 0x0f, 0x35, 0x63, 0x32, 0x08, 0x1d, 0x20, 0x97, 0x9d, - 0x0b, 0xf8, 0x39, 0x89, - 0x02, 0xc3, 0x3c, 0xf5, 0xc5, 0xde, 0x09, 0x39, 0x18, 0xe4, 0xa8, 0x0e, - 0x08, 0xb2, 0x01, 0x81, - 0xf9, 0x1d, 0xdc, 0x5a, 0xd5, 0x17, 0xff, 0x70, 0xa6, 0x03, 0xc6, 0xaa, - 0x62, 0x99, 0x9d, 0x72, - 0x37, 0xbc, 0x3f, 0x68, 0xe5, 0x8f, 0x26, 0xab, 0xa7, 0xe9, 0x74, 0x85, - 0xdc, 0xe4, 0xfa, 0xa4, - 0xcc, 0x62, 0xdf, 0xc7, 0xf5, 0x46, 0xd0, 0xe2, 0x19, 0x0e, 0x1a, 0x21, - 0xb6, 0xcf, 0x66, 0x57, - 0x68, 0x3d, 0x3a, 0x0c, 0x85, 0x7c, 0x57, 0xde, 0xa5, 0xfe, 0xd3, 0xdb, - 0x63, 0x1e, 0x34, 0xcb, - 0x93, 0xe3, 0xda, 0xa3, 0x95, 0xb5, 0xa1, 0x97, 0x1b, 0x19, 0xbd, 0x7f, - 0x09, 0x35, 0xa8, 0x38, - 0x5d, 0x42, 0x39, 0x91, 0xa5, 0x2d, 0x78, 0x4c, 0x1a, 0xf3, 0x0f, 0x50, - 0xb7, 0x48, 0xcf, 0xee, - 0xa6, 0x9c, 0xd9, 0x3e, 0xb5, 0xe4, 0x8e, 0x05, 0xa4, 0x14, 0x61, 0xf4, - 0xdd, 0x63, 0x53, 0x1d, - 0xbd, 0x82, 0x28, 0xa6, 0x86, 0x94, 0x0e, 0x2e, 0x10, 0xb8, 0x71, 0xb5, - 0xb1, 0xdc, 0xbf, 0xfe, - 0x46, 0x5c, 0xc8, 0x09, 0x96, 0x5d, 0xf8, 0x67, 0xae, 0x5f, 0x1f, 0x11, - 0xdb, 0xf7, 0x23, 0x0d, - 0x88, 0xfd, 0x2b, 0x3b, 0xa6, 0xc5, 0x21, 0xbc, 0xaf, 0xb5, 0xad, 0x3e, - 0x65, 0x8a, 0x44, 0xdb, - 0x73, 0x23, 0xcb, 0x94, 0xb6, 0x0c, 0xd7, 0xf5, 0x11, 0x52, 0xc3, 0x9a, - 0x0f, 0xa1, 0xd8, 0x28, - 0xd7, 0x7c, 0x2e, 0x5f, 0xc6, 0x36, 0x50, 0xc9, 0xad, 0xa2, 0x0a, 0x60, - 0xda, 0x70, 0x8a, 0xb4, - 0x2c, 0xa2, 0xce, 0xf0, 0xd6, 0xff, 0xa6, 0x80, 0x13, 0x45, 0x64, 0xc4, - 0xb0, 0x5b, 0x16, 0x47, - 0xe2, 0x03, 0x2d, 0xc2, 0xe6, 0x67, 0x7f, 0x5b, 0x12, 0xaf, 0xd6, 0xeb, - 0x0e, 0x26, 0x71, 0x91, - 0x19, 0xdd, 0xcd, 0x6d, 0xf6, 0xae, 0x89, 0x12, 0xac, 0x48, 0xb8, 0x4f, - 0x64, 0x0d, 0xed, 0x62, - 0x69, 0xbd, 0x24, 0x97, 0x06, 0x13, 0xb2, 0x23, 0xa9, 0x8c, 0x87, 0xdc, - 0x67, 0x47, 0xd5, 0x6a, - 0x92, 0x63, 0xc4, 0x38, 0x16, 0xda, 0x44, 0x6a, 0x17, 0x6b, 0xe9, 0x78, - 0x0d, 0x6c, 0x49, 0x99, - 0x5c, 0xc2, 0x27, 0x0a, 0x26, 0x42, 0x9d, 0xb1, 0x16, 0x81, 0x5b, 0x57, - 0xb3, 0x11, 0x2e, 0x4f, - 0xa7, 0x1c, 0xc7, 0xa5, 0x36, 0x8b, 0x6b, 0xf8, 0xa8, 0x66, 0x35, 0xf3, - 0xd9, 0x3a, 0xb2, 0xbc, - 0x03, 0x43, 0x22, 0x6e, 0x46, 0xb1, 0xec, 0xc4, 0x14, 0x96, 0xfc, 0x09, - 0x0c, 0xeb, 0xe0, 0x20, - 0xf8, 0x9d, 0xc2, 0xc1, 0x56, 0x78, 0x1a, 0x8d, 0xaa, 0x71, 0x92, 0xad, - 0x66, 0xc0, 0x7c, 0xd3, - 0x36, 0x3c, 0x21, 0xf3, 0x66, 0xe0, 0xc3, 0x56, 0xab, 0x9b, 0x20, 0x82, - 0xd8, 0xbd, 0x1b, 0x05, - 0xcd, 0xe2, 0xc1, 0x5c, 0x76, 0x29, 0x35, 0x1f, 0x15, 0x7c, 0x4e, 0x26, - 0xb2, 0x96, 0x87, 0xf6, - 0x6f, 0x3b, 0x60, 0x4b, 0x8a, 0xb2, 0xa9, 0x68, 0x81, 0x63, 0xbc, 0xce, - 0x7f, 0x52, 0xd6, 0x2a, - 0x94, 0xe5, 0x80, 0xe4, 0x9a, 0x7b, 0x5f, 0x21, 0x3f, 0x84, 0xd2, 0x6a, - 0x15, 0x79, 0x4a, 0xd9, - 0x5a, 0x44, 0x63, 0xd6, 0xaa, 0xe3, 0x86, 0xfa, 0x3e, 0x6e, 0x60, 0x45, - 0xab, 0x04, 0x2d, 0x0f, - 0xa1, 0x9a, 0x83, 0x79, 0xba, 0x2a, 0x70, 0xb3, 0x80, 0x89, 0x0e, 0xe1, - 0xc1, 0x2f, 0xb1, 0xfc, - 0x05, 0xc5, 0x66, 0xb2, 0xca, 0x10, 0xf7, 0x8f, 0x3c, 0x79, 0xc7, 0x1b, - 0x14, 0xfe, 0xe3, 0x60, - 0xfe, 0x1b, 0x86, 0x1d, 0xda, 0xd9, 0x01, 0xc6, 0x82, 0x9e, 0xa9, 0xbf, - 0x7e, 0xd5, 0x7f, 0x93, - 0x30, 0xba, 0x65, 0x2f, 0xea, 0x41, 0xd8, 0x1d, 0x83, 0x74, 0x1b, 0x90, - 0xc0, 0xa8, 0x18, 0x45, - 0xcb, 0x64, 0x85, 0x80, 0xfa, 0x88, 0x2e, 0x54, 0x3d, 0x93, 0x75, 0x34, - 0xaa, 0x83, 0x84, 0xb6, - 0xbb, 0x04, 0x6c, 0x7a, 0x0a, 0x35, 0x15, 0x65, 0x38, 0x57, 0x4a, 0xa7, - 0xa9, 0xc9, 0xbc, 0xbe, - 0x40, 0xda, 0x8c, 0xd5, 0x1a, 0xfc, 0xe3, 0x2c, 0x86, 0xb0, 0x24, 0x03, - 0xc3, 0xe2, 0x20, 0x4d, - 0x8e, 0x7b, 0x6f, 0xe7, 0x2a, 0x64, 0x3a, 0xf7, 0x87, 0x5a, 0x96, 0x2c, - 0x7d, 0x9f, 0x47, 0x9b, - 0x75, 0xa5, 0x8f, 0x48, 0x3a, 0xad, 0xcc, 0xbe, 0x39, 0xbd, 0xf8, 0x88, - 0x17, 0xb4, 0xdb, 0x68, - 0xd1, 0xfa, 0x6a, 0x83, 0x4a, 0x97, 0x4b, 0x82, 0x85, 0x4d, 0x31, 0x72, - 0xc2, 0x65, 0x89, 0xf4, - 0x2a, 0x24, 0x8a, 0x2c, 0x5a, 0x5e, 0xbd, 0xcb, 0x3b, 0xaa, 0x5f, 0xd6, - 0xa8, 0x4e, 0x15, 0x07, - 0xe4, 0x85, 0x69, 0x1e, 0x6a, 0xc6, 0x64, 0x10, 0x3a, 0x40, 0xed, 0xf9, - 0x16, 0x33, 0x72, 0xd1, - 0x1f, 0x5b, 0x89, 0xb1, 0x7a, 0x0f, 0x92, 0x59, 0x84, 0xa7, 0x83, 0x5d, - 0x7c, 0x18, 0xee, 0x22, - 0x04, 0x45, 0x78, 0x29, 0x49, 0x7f, 0x12, 0x72, 0x30, 0x0b, 0x93, 0x1c, - 0x10, 0xa7, 0x02, 0xc1, - 0xff, 0x9b, 0x98, 0x86, 0x59, 0xb6, 0xe4, 0x3b, 0x8e, 0xec, 0xfd, 0xb8, - 0x7a, 0x8c, 0x9e, 0x32, - 0x31, 0x3a, 0x7b, 0xb4, 0x69, 0x2e, 0x3d, 0xe0, 0x8f, 0x06, 0x4f, 0x97, - 0xc4, 0xf1, 0xf9, 0xe4, - 0xca, 0xe4, 0x9b, 0x1b, 0x79, 0xe7, 0xcb, 0xa9, 0x31, 0xe1, 0x21, 0x33, - 0xae, 0xda, 0x65, 0x17, - 0x6e, 0xbb, 0x7e, 0xd0, 0x09, 0xdd, 0x4c, 0x95, 0x8d, 0x11, 0xe8, 0xc9, - 0x7b, 0x0b, 0x37, 0x8b, - 0x95, 0x65, 0x9e, 0x7f, 0x19, 0x14, 0xba, 0xdc, 0x33, 0xf6, 0x86, 0x6d, - 0x11, 0x20, 0xab, 0x78, - 0x5b, 0xc4, 0x7d, 0x4d, 0x29, 0x8c, 0x63, 0x07, 0x32, 0x1c, 0x34, 0x42, - 0xaf, 0x5d, 0xcc, 0xae, - 0xa0, 0x1a, 0x9d, 0xe2, 0x39, 0x45, 0x95, 0x4e, 0x8c, 0xfb, 0x5a, 0xe6, - 0xc5, 0x76, 0x50, 0x5d, - 0xd0, 0x7a, 0x74, 0x18, 0xc9, 0xf8, 0xae, 0x7f, 0x89, 0x3f, 0x65, 0x75, - 0xc6, 0x3c, 0x68, 0x55, - 0x2b, 0xa4, 0x94, 0xb7, 0xd9, 0x31, 0x58, 0x36, 0x37, 0xd8, 0x0b, 0xd1, - 0xac, 0x17, 0xf4, 0xa6, - 0xe5, 0x05, 0x77, 0x85, 0xe9, 0xa9, 0x81, 0xed, 0x36, 0x32, 0xb9, 0xfe, - 0x12, 0x6a, 0x93, 0x70, - 0x1e, 0xdb, 0x97, 0x2a, 0xf9, 0x60, 0x77, 0xa4, 0x88, 0xd5, 0xd7, 0x5a, - 0x78, 0x41, 0x0f, 0x83, - 0xba, 0x84, 0x72, 0xe1, 0x89, 0x5a, 0xf0, 0x98, 0x34, 0x25, 0x1e, 0xa0, - 0xad, 0x90, 0x5d, 0x1f, - 0x41, 0x5a, 0x92, 0x4e, 0x99, 0x93, 0x06, 0xd1, 0x8a, 0xc2, 0x70, 0x04, - 0xc7, 0xbb, 0xc1, 0xec, - 0x8f, 0xfb, 0x71, 0x7c, 0xa9, 0x0b, 0xdf, 0x0a, 0x8b, 0x28, 0xc2, 0x2b, - 0x79, 0xc6, 0xa6, 0x3a, - 0x74, 0x25, 0x91, 0xd3, 0xb9, 0xc2, 0x29, 0x43, 0x35, 0xcf, 0xac, 0x8f, - 0x13, 0xed, 0x3a, 0xc9, - 0xb9, 0xc7, 0x50, 0x8f, 0xcf, 0xeb, 0x1c, 0x5c, 0x20, 0xb3, 0xe2, 0xa9, - 0xa1, 0x7b, 0xbd, 0x3f, - 0x42, 0x19, 0xb0, 0x20, 0xdf, 0x22, 0xea, 0x15, 0x9e, 0x54, 0x8c, 0x0d, - 0xcb, 0x50, 0x21, 0xcc, - 0x8c, 0xb8, 0x53, 0x12, 0xef, 0xba, 0x33, 0xce, 0x9f, 0xbe, 0x3e, 0x22, - 0x75, 0x2d, 0x46, 0x1a, - 0x77, 0x66, 0xb3, 0xbd, 0xff, 0x73, 0xc5, 0x87, 0x21, 0x59, 0x50, 0x86, - 0x1f, 0x06, 0xda, 0xe9, - 0xd3, 0x39, 0x56, 0x76, 0x8f, 0x49, 0x42, 0xbb, 0x9d, 0xa9, 0x99, 0x7c, - 0xca, 0xd7, 0x88, 0x75, - 0x28, 0xe7, 0xb6, 0xd9, 0x9f, 0x80, 0xb4, 0xf2, 0x23, 0x4e, 0xf7, 0xd8, - 0xa0, 0xfc, 0x14, 0x86, - 0xe6, 0x46, 0x55, 0xeb, 0xaf, 0x18, 0x6d, 0x29, 0x22, 0xa4, 0x45, 0xf7, - 0x1e, 0x81, 0x73, 0x50, - 0x1d, 0x98, 0xb5, 0x44, 0xbf, 0xd1, 0x9b, 0x60, 0x9c, 0x43, 0x2b, 0x53, - 0x74, 0xaa, 0xef, 0xa3, - 0x6d, 0xf8, 0x5c, 0xbe, 0x4f, 0x6c, 0xa0, 0x51, 0x99, 0x87, 0x14, 0xc0, - 0x77, 0xe0, 0xd7, 0xab, - 0x96, 0x26, 0xbc, 0x11, 0x5f, 0xa5, 0x56, 0x18, 0x27, 0x60, 0x7a, 0x64, - 0x1d, 0xcb, 0x4b, 0x58, - 0x58, 0x87, 0x5f, 0x23, 0x6f, 0x3d, 0x8f, 0xc3, 0x26, 0x8a, 0xc8, 0x4b, - 0xa3, 0xb6, 0x2c, 0x8e, - 0xa3, 0x59, 0xbf, 0x8c, 0x7f, 0xf4, 0x79, 0x8a, 0x98, 0x6d, 0xa6, 0xef, - 0xc9, 0x9d, 0xb0, 0x7d, - 0x07, 0x06, 0x5a, 0x47, 0x0f, 0xce, 0xfe, 0xb6, 0x24, 0x9d, 0x6f, 0x15, - 0x1c, 0x4c, 0xe2, 0xe1, - 0xfc, 0xd8, 0xba, 0xe8, 0x1f, 0x07, 0x08, 0xff, 0x9a, 0x7a, 0x01, 0xb1, - 0x76, 0x67, 0x7e, 0x12, - 0x32, 0x79, 0x59, 0xda, 0x2f, 0x9f, 0xd1, 0x24, 0x9b, 0x90, 0xb3, 0x9e, - 0xc8, 0x1a, 0x19, 0xc4, - 0xc9, 0xa7, 0xb9, 0x75, 0x3f, 0x56, 0x27, 0x6d, 0x25, 0x77, 0xdd, 0x3a, - 0xa2, 0x31, 0x85, 0x37, - 0xd2, 0xb9, 0x48, 0xed, 0x0c, 0x26, 0xa7, 0x46, 0x91, 0xdb, 0xcd, 0x7b, - 0xce, 0x8e, 0x69, 0xd4, - 0x29, 0x67, 0xa8, 0x42, 0x1c, 0xef, 0x51, 0x0f, 0x2f, 0x3c, 0xa3, 0xdf, - 0xa4, 0xa5, 0xf5, 0x27, - 0xe7, 0xc6, 0x4b, 0x70, 0x2c, 0x77, 0x88, 0xd4, 0x2e, 0xd6, 0x11, 0xf0, - 0x1a, 0xd8, 0x92, 0xf1, - 0x1c, 0x18, 0xab, 0xdf, 0x3c, 0xbe, 0x7e, 0x9d, 0x90, 0x31, 0x7f, 0x54, - 0x70, 0xf3, 0x0e, 0x02, - 0xb8, 0x47, 0x4e, 0x14, 0x4c, 0x84, 0xf9, 0xa1, 0x2c, 0xc1, 0xb6, 0xae, - 0xa5, 0x22, 0x5c, 0x9e, - 0x43, 0x99, 0xae, 0xbb, 0x5c, 0x4d, 0x0f, 0xe8, 0x92, 0x26, 0xd8, 0x0a, - 0xcf, 0x09, 0xc0, 0x6d, - 0x8d, 0x38, 0x4d, 0x89, 0x6c, 0xd5, 0xd6, 0x33, 0x93, 0xcc, 0x6a, 0x25, - 0x71, 0x74, 0xa7, 0xbb, - 0x76, 0xe6, 0xad, 0x26, 0x7c, 0x1c, 0x20, 0x7a, 0x2d, 0x2b, 0x04, 0x81, - 0x1b, 0x5f, 0x3b, 0x48, - 0x06, 0x86, 0x44, 0xdc, 0x8c, 0xa1, 0x1b, 0x4b, 0x28, 0xef, 0x3b, 0x12, - 0x18, 0x15, 0x03, 0x40, - 0xfd, 0x58, 0xa4, 0x73, 0x9c, 0x68, 0xed, 0x02, 0x96, 0x08, 0x55, 0xb6, - 0x72, 0x3e, 0x9f, 0xb3, - 0x33, 0xf9, 0x47, 0x41, 0xac, 0xf0, 0x34, 0xd9, 0x97, 0xe2, 0xe7, 0x99, - 0xcc, 0x43, 0xf8, 0x65, - 0xc8, 0x27, 0xa7, 0xee, 0xbc, 0x39, 0xc2, 0x90, 0x29, 0x05, 0x89, 0x3d, - 0xa6, 0x68, 0x64, 0x96, - 0x6c, 0x78, 0x42, 0x25, 0xcc, 0x03, 0x45, 0xac, 0x95, 0xf5, 0x40, 0xc7, - 0x73, 0xb9, 0x36, 0x0a, - 0x97, 0xa6, 0xa2, 0x8a, 0xdc, 0xca, 0xb3, 0xe5, 0x2b, 0x12, 0x2e, 0x63, - 0x19, 0x92, 0xaa, 0xf9, - 0x59, 0x07, 0x41, 0xb8, 0xec, 0x52, 0x6a, 0x3e, 0x2a, 0xf8, 0x9c, 0x4c, - 0xa7, 0xef, 0xcd, 0x2f, - 0xa2, 0xd9, 0xa1, 0x17, 0xfc, 0x9b, 0x9c, 0x77, 0x94, 0x1f, 0xf2, 0xe8, - 0xcd, 0xc4, 0x51, 0xdc, - 0xde, 0x76, 0xc0, 0x96, 0xd7, 0xa7, 0x91, 0xd0, 0xc1, 0xc6, 0xbb, 0x5f, - 0xfe, 0xa4, 0x6f, 0x54, - 0x25, 0xa8, 0x20, 0x39, 0xc7, 0x6e, 0x67, 0x99, 0x7f, 0x21, 0xd5, 0xfb, - 0x94, 0x8f, 0xf3, 0xa7, - 0xeb, 0x09, 0xc3, 0x0b, 0xf7, 0xf6, 0xbe, 0x42, 0x7e, 0xcb, 0x67, 0xd4, - 0x2a, 0xf2, 0x94, 0x71, - 0x10, 0xd7, 0x23, 0xa4, 0xe7, 0x3f, 0x48, 0x0b, 0xc0, 0x2c, 0x09, 0x70, - 0x40, 0xd9, 0x08, 0x82, - 0xb4, 0x88, 0xc6, 0x6f, 0x97, 0x05, 0xcf, 0x37, 0x7c, 0xdc, 0xc0, 0x8a, - 0x95, 0x08, 0x5a, 0x1e, - 0x4f, 0x56, 0x26, 0xc0, 0x87, 0xcc, 0x39, 0x7e, 0xc2, 0x3b, 0xae, 0x2e, - 0xff, 0x23, 0xc6, 0xed, - 0x81, 0xf7, 0xc5, 0xf2, 0xb7, 0x54, 0xe0, 0xa5, 0xc3, 0xd1, 0x1c, 0x01, - 0x41, 0x5e, 0xa1, 0x3b, - 0x7a, 0x29, 0x25, 0x5d, 0xa7, 0x9d, 0x16, 0xec, 0x7d, 0x36, 0x72, 0xa5, - 0x2b, 0x75, 0x3d, 0xc8, - 0x0a, 0x49, 0xcc, 0xa7, 0x57, 0x20, 0x2d, 0xdd, 0x78, 0xf2, 0x4d, 0x36, - 0x28, 0x3f, 0x05, 0xc0, - 0xf1, 0x97, 0x2c, 0x08, 0x47, 0xe9, 0xdb, 0x94, 0xc6, 0x15, 0x23, 0x92, - 0x42, 0x14, 0x99, 0x33, - 0x3f, 0x36, 0xcf, 0x3a, 0x77, 0x71, 0x02, 0x4f, 0xc7, 0xff, 0x91, 0xbd, - 0xfc, 0x69, 0xfe, 0xe5, - 0xc4, 0xe8, 0x2f, 0x95, 0x67, 0xb8, 0xf4, 0x06, 0x79, 0x18, 0xff, 0x19, - 0x96, 0x42, 0x62, 0x16, - 0x60, 0xb7, 0xca, 0x5e, 0x17, 0x82, 0x73, 0x3a, 0xc5, 0xe8, 0x36, 0xe3, - 0x43, 0x93, 0x30, 0x8a, - 0x9b, 0x69, 0x2a, 0xf1, 0x07, 0x4b, 0x85, 0x73, 0x7b, 0x0f, 0x58, 0x47, - 0x29, 0xb8, 0xac, 0x79, - 0x55, 0xc8, 0xc9, 0xc3, 0x37, 0xd3, 0x5c, 0xa8, 0x7a, 0xe5, 0xea, 0x68, - 0x97, 0xc5, 0xcb, 0xaf, - 0xae, 0x16, 0x29, 0x6c, 0x27, 0x1a, 0xaa, 0xe1, 0xc4, 0x02, 0x84, 0xcc, - 0xfd, 0xee, 0x57, 0x5c, - 0xb5, 0x08, 0xd8, 0xf4, 0x14, 0x6a, 0x2a, 0xca, 0x70, 0xae, 0x94, 0x8d, - 0x91, 0x51, 0xbb, 0xbf, - 0x4e, 0xd6, 0x38, 0x5b, 0x04, 0xa3, 0xdc, 0x83, 0xce, 0x49, 0xfa, 0x29, - 0xfb, 0x7a, 0x27, 0x4c, - 0x80, 0x77, 0xdb, 0x69, 0x34, 0x3b, 0x05, 0x58, 0xcf, 0xa3, 0x48, 0x06, - 0x45, 0x07, 0x40, 0x9a, - 0x7b, 0xa9, 0x3b, 0xc6, 0x24, 0xf2, 0xf3, 0x11, 0x71, 0x44, 0x26, 0xa2, - 0x2f, 0x2c, 0xdc, 0x69, - 0xdf, 0xf6, 0xde, 0x0d, 0x54, 0xc8, 0x74, 0x2d, 0xcd, 0xb4, 0xef, 0x58, - 0xfa, 0xfd, 0x8e, 0xf5, - 0x24, 0x28, 0x3e, 0xa2, 0x44, 0x01, 0x82, 0x64, 0x73, 0x53, 0x81, 0xfc, - 0x90, 0xd6, 0x12, 0x06, - 0xea, 0x89, 0xdd, 0x90, 0x74, 0x99, 0x5b, 0xbf, 0x72, 0xb9, 0x33, 0xd3, - 0x2e, 0xab, 0x75, 0xd0, - 0x11, 0x57, 0x3d, 0x3f, 0x64, 0x50, 0xad, 0xf6, 0xcc, 0x5e, 0x5d, 0x77, - 0x44, 0x80, 0xe9, 0x23, - 0x61, 0x37, 0xd4, 0xc5, 0x94, 0xed, 0x96, 0xc7, 0xc9, 0x9a, 0x62, 0xe4, - 0x47, 0xca, 0xd1, 0x2b, - 0x9a, 0xe9, 0x34, 0x6a, 0x84, 0x24, 0x60, 0x8e, 0x77, 0x7d, 0x0c, 0x40, - 0x2d, 0xe1, 0x4d, 0xd8, - 0x54, 0x48, 0xd7, 0x58, 0xb4, 0xbc, 0xb9, 0x55, 0x76, 0x97, 0xbe, 0x6f, - 0x93, 0x9c, 0x2a, 0x0e, - 0xaf, 0x96, 0x37, 0xf7, 0xa4, 0x75, 0x4f, 0x1c, 0xc8, 0x70, 0xd0, 0xcb, - 0xf9, 0xb7, 0xb6, 0xfd, - 0x0b, 0xc9, 0xd2, 0x3c, 0xd4, 0x4f, 0xc8, 0x20, 0x74, 0x80, 0x19, 0x31, - 0x2c, 0x66, 0xe4, 0x61, - 0xf0, 0x17, 0x32, 0x93, 0xc4, 0x86, 0x3e, 0x69, 0xca, 0x67, 0x77, 0x95, - 0x46, 0x4d, 0x78, 0x92, - 0x3e, 0xb6, 0xd1, 0xa1, 0xf4, 0x1e, 0xe7, 0xb2, 0xcb, 0x8d, 0xc5, 0xba, - 0xf8, 0x30, 0x1f, 0x44, - 0xc5, 0x68, 0x31, 0x0e, 0xe4, 0xd7, 0x11, 0xfb, 0x75, 0x6a, 0xab, 0x1e, - 0x92, 0x1b, 0x83, 0xb7, - 0x08, 0x8a, 0xf0, 0x52, 0x92, 0xfe, 0x24, 0xe4, 0x60, 0x16, 0xe5, 0x38, - 0x20, 0x8d, 0x04, 0x41, - 0xf3, 0x54, 0x10, 0xfd, 0x82, 0x37, 0xd2, 0xad, 0xde, 0xf1, 0x8b, 0x9c, - 0x4a, 0xa6, 0x98, 0xb2, - 0x3d, 0xf5, 0xf3, 0xcf, 0xb2, 0xaf, 0x0b, 0x76, 0xdf, 0x1b, 0x39, 0xb3, - 0xf4, 0xdb, 0xff, 0x64, - 0xc6, 0x2b, 0x13, 0x60, 0xa2, 0x66, 0xfd, 0x3f, 0x61, 0xfc, 0x57, 0x17, - 0x9e, 0xf0, 0x63, 0x97, - 0x62, 0x74, 0xf6, 0xab, 0xd2, 0x5c, 0x7a, 0x03, 0xdd, 0x0c, 0x9e, 0xed, - 0x4b, 0x21, 0x31, 0x0b, - 0x99, 0xaa, 0x16, 0x04, 0xc2, 0x95, 0x8c, 0x4a, 0x63, 0xeb, 0xf0, 0x49, - 0x21, 0x0a, 0xad, 0xf8, - 0x57, 0x0b, 0xf5, 0x36, 0xf2, 0x0d, 0x55, 0x91, 0x62, 0x01, 0x42, 0x66, - 0x9f, 0x77, 0xca, 0x2e, - 0xac, 0xd5, 0x15, 0x99, 0xe2, 0xc4, 0xa3, 0xd8, 0xdc, 0xe6, 0x2c, 0xc2, - 0xf5, 0x5c, 0x56, 0xdd, - 0xdc, 0xb5, 0xfc, 0x63, 0x12, 0x79, 0x98, 0xe9, 0xd9, 0x22, 0x13, 0x51, - 0xf6, 0x16, 0x6e, 0xd5, - 0x27, 0x6b, 0x1c, 0xcc, 0x02, 0xb0, 0x6e, 0xa0, 0x67, 0xc5, 0x7d, 0xf5, - 0x9c, 0x3d, 0xf2, 0x26, - 0xe9, 0xca, 0xff, 0xfe, 0x32, 0x28, 0xb7, 0x7b, 0x66, 0x2f, 0xcf, 0xda, - 0x22, 0x40, 0x95, 0xf0, - 0x12, 0x14, 0x1f, 0x51, 0x22, 0xe1, 0x41, 0x32, 0xd8, 0xc8, 0xa1, 0x7e, - 0x48, 0x6b, 0x09, 0x03, - 0xb6, 0x4b, 0xfa, 0x9a, 0x52, 0xdb, 0xc6, 0x0e, 0x64, 0x38, 0x68, 0x84, - 0x9d, 0xba, 0x5b, 0x9f, - 0x4d, 0x95, 0x1a, 0x35, 0x42, 0x12, 0x30, 0x47, 0xda, 0xdf, 0x06, 0x20, - 0xf7, 0x91, 0xc7, 0x6c, - 0x83, 0x34, 0xf9, 0x07, 0x72, 0x8a, 0xe9, 0x9c, 0xdb, 0x35, 0xb4, 0x0f, - 0x49, 0xec, 0xa0, 0xba, - 0x78, 0xea, 0x19, 0xa8, 0x62, 0x43, 0x1f, 0xd5, 0x65, 0xd2, 0xda, 0xab, - 0x23, 0xc7, 0x3c, 0x49, - 0x63, 0xf4, 0xe8, 0x30, 0x51, 0x33, 0x9f, 0xfe, 0xd1, 0x7e, 0xca, 0xea, - 0x4f, 0x78, 0xd0, 0xaa, - 0x98, 0x2a, 0x08, 0x9f, 0x41, 0xfa, 0x69, 0xb7, 0x6f, 0x99, 0xa4, 0x4e, - 0x25, 0x53, 0x4c, 0x59, - 0x56, 0x8b, 0xeb, 0xad, 0x71, 0x62, 0xb0, 0x6c, 0x6e, 0x73, 0x16, 0x61, - 0x9b, 0x2e, 0x2b, 0x8f, - 0xad, 0x55, 0x0b, 0x02, 0x61, 0xab, 0x46, 0x25, 0xd0, 0x94, 0x78, 0xc5, - 0xf1, 0x05, 0xb7, 0x7c, - 0x09, 0x0a, 0xee, 0xc9, 0x11, 0x91, 0xc1, 0x19, 0x6c, 0x64, 0xb1, 0x3f, - 0x24, 0xd4, 0xe5, 0xe0, - 0xf2, 0xd4, 0x0e, 0x66, 0x01, 0x58, 0x37, 0x50, 0xd2, 0x83, 0xdf, 0x9b, - 0x4e, 0xff, 0x79, 0x13, - 0x3c, 0x75, 0xed, 0x54, 0x31, 0xc0, 0xee, 0x8b, 0xd3, 0x69, 0x6d, 0xb4, - 0xf0, 0x82, 0x1e, 0xc5, - 0xc7, 0xab, 0x0d, 0xfb, 0x21, 0x09, 0x18, 0xc2, 0x6d, 0x8e, 0x03, 0x10, - 0x9a, 0xa9, 0x82, 0x36, - 0xb7, 0xcb, 0xe4, 0x01, 0xd1, 0xb4, 0x23, 0xf3, 0x68, 0x4a, 0x3c, 0x83, - 0x99, 0xe3, 0xba, 0x3e, - 0x4c, 0x15, 0x04, 0xae, 0xc1, 0x7d, 0xd5, 0xba, 0xd6, 0xad, 0x52, 0x27, - 0xf3, 0xc8, 0x26, 0xcd, - 0x82, 0xb4, 0xe7, 0x9c, 0xf1, 0xe5, 0x0c, 0x61, 0xd7, 0x47, 0xe0, 0x08, - 0x4d, 0xb5, 0x41, 0x1b, - 0x79, 0x6a, 0x07, 0x33, 0xe1, 0x2c, 0xfa, 0x28, 0x69, 0xa0, 0x8e, 0xac, - 0x27, 0x9e, 0xdd, 0xe8, - 0xdd, 0x35, 0xe2, 0xf8, 0x91, 0x16, 0x7d, 0x14, 0xd5, 0x50, 0x47, 0x56, - 0xf2, 0x4f, 0x8f, 0x74, - 0x26, 0xeb, 0x02, 0x57, 0x81, 0xdf, 0x8b, 0x5d, 0x6b, 0xb7, 0x29, 0xf2, - 0x98, 0x64, 0x13, 0x87, - 0xe8, 0x4a, 0xe1, 0x65, 0xb1, 0x47, 0x52, 0x86, 0x6a, 0x5d, 0x9b, 0xdd, - 0x26, 0x19, 0x74, 0x51, - 0x13, 0x94, 0x01, 0xca, 0xa1, 0x8e, 0xa4, 0xcf, 0xd4, 0xba, 0xf5, 0x79, - 0x4c, 0x32, 0xe8, 0xa2, - 0xb1, 0x4d, 0xa0, 0xdd, 0x5d, 0x15, 0x38, 0xb8, 0x40, 0xa5, 0x07, 0x91, - 0x81, 0xf6, 0xb9, 0x7e, - 0x4a, 0x93, 0x40, 0x72, 0x4d, 0xdc, 0xce, 0xf1, 0xfe, 0x42, 0x69, 0x35, - 0xeb, 0xdd, 0x25, 0x8d, - 0x84, 0x32, 0xa3, 0x40, 0x7d, 0x44, 0x17, 0x2a, 0xff, 0xa8, 0xdb, 0x1a, - 0x55, 0xa0, 0x42, 0x5b, - 0x7f, 0xec, 0x43, 0xef, 0x6d, 0x8d, 0xe1, 0x63, 0x41, 0x4f, 0xb5, 0xbe, - 0x3f, 0x8b, 0xde, 0xa8, - 0xdb, 0xb3, 0xa6, 0x24, 0x1d, 0xb7, 0x66, 0x5f, 0xfd, 0xbf, 0x7c, 0x44, - 0xea, 0x5a, 0x8c, 0x34, - 0x20, 0x6d, 0x46, 0x8b, 0x0d, 0x7e, 0x90, 0x16, 0x43, 0x58, 0x12, 0xe0, - 0x80, 0x71, 0x10, 0xc7, - 0xee, 0xcc, 0xa5, 0xb9, 0x3d, 0xe6, 0x49, 0xcd, 0x42, 0xb2, 0xa0, 0xcf, - 0x3e, 0x0c, 0x77, 0x11, - 0x15, 0x12, 0x45, 0x16, 0x2d, 0x2f, 0xbf, 0x84, 0xfc, 0x55, 0xce, 0x6b, - 0x54, 0x27, 0xeb, 0xe2, - 0x65, 0x72, 0xac, 0xec, 0xdd, 0x92, 0x84, 0xb5, 0xf9, 0x91, 0xf1, 0xf8, - 0x57, 0x6d, 0xd3, 0xea, - 0x9e, 0xac, 0x4c, 0x43, 0xcd, 0x5b, 0x72, 0xfc, 0x47, 0x76, 0x9f, 0x5c, - 0x3d, 0x46, 0x4f, 0x19, - 0x50, 0x0d, 0xaf, 0x71, 0xfd, 0xc3, 0xab, 0x27, 0x46, 0x9c, 0x2d, 0x73, - 0x83, 0x3b, 0x28, 0xcf, - 0xab, 0xd3, 0x4f, 0xde, 0xed, 0x0a, 0x5d, 0x6e, 0xf8, 0x7b, 0x43, 0xd7, - 0xe9, 0x10, 0xb4, 0x3c, - 0x0f, 0x8c, 0xaa, 0x15, 0x9d, 0x30, 0xda, 0x52, 0x44, 0x8b, 0x8a, 0x2d, - 0x3c, 0xc1, 0xe6, 0xa0, - 0xf4, 0x52, 0x4a, 0xba, 0x8d, 0xf9, 0x2c, 0x1b, 0xfa, 0x6c, 0xe4, 0x89, - 0x56, 0xea, 0x7a, 0x53, - 0x3a, 0xf3, 0xa9, 0x88, 0xbd, 0x61, 0xf5, 0xc0, 0xfb, 0x86, 0x56, 0xa6, - 0xe8, 0x97, 0x1d, 0x85, - 0xc1, 0x2d, 0x49, 0x27, 0xad, 0xa8, 0x03, 0x89, 0x45, 0x61, 0x38, 0x02, - 0x82, 0xbc, 0x81, 0x76, - 0xda, 0x33, 0xb8, 0xbf, 0x9e, 0xd8, 0x83, 0xa2, 0xf1, 0xcd, 0x28, 0x43, - 0xee, 0x03, 0x6d, 0x95, - 0x21, 0xed, 0x58, 0x10, 0x8e, 0x11, 0x75, 0xeb, 0x4f, 0x2a, 0x46, 0xe7, - 0x84, 0x28, 0xf1, 0x66, - 0xef, 0x4c, 0xbb, 0x22, 0xbe, 0x89, 0xac, 0x30, 0x4e, 0xc0, 0xf4, 0xc8, - 0x3a, 0x55, 0x96, 0xb0, - 0x14, 0x92, 0x5b, 0x8d, 0xae, 0x40, 0x5a, 0x79, 0xf0, 0x27, 0x9a, 0x6c, - 0x50, 0x7e, 0x0a, 0x43, - 0xb0, 0xcd, 0xbe, 0x46, 0xde, 0x7a, 0xdd, 0x45, 0x4c, 0xd7, 0x53, 0x96, - 0x85, 0xaf, 0x58, 0xdf, - 0x4b, 0x13, 0x5e, 0xe9, 0xce, 0xb3, 0x2b, 0x0c, 0xf2, 0x30, 0x3d, 0x32, - 0xef, 0x84, 0xc4, 0x2c, - 0x85, 0xb2, 0xbd, 0xdb, 0xfe, 0x2b, 0xf2, 0xd7, 0xf3, 0xda, 0x8f, 0x1d, - 0x51, 0xf9, 0xa3, 0xfa, - 0x7e, 0x6c, 0x5d, 0x74, 0xee, 0xe2, 0x04, 0x9e, 0x4d, 0x3d, 0xe1, 0xb9, - 0x3b, 0xd2, 0x3f, 0x09, - 0x0e, 0x0c, 0xb4, 0x8e, 0x1e, 0x5f, 0x3f, 0xaf, 0x48, 0xf9, 0xde, 0x2a, - 0x38, 0x98, 0x07, 0x01, - 0xf5, 0xd2, 0x54, 0x21, 0x0e, 0x96, 0xc9, 0xe6, 0xf6, 0x1e, 0xb0, 0x8e, - 0x52, 0xb3, 0x9b, 0xf2, - 0x3b, 0x73, 0xb7, 0x13, 0x3e, 0x0e, 0x10, 0x3d, 0xf7, 0xf4, 0x02, 0xa1, - 0xec, 0xce, 0xfc, 0x24, - 0xc0, 0xad, 0x57, 0xbc, 0x2e, 0xc7, 0xe6, 0x74, 0x49, 0x13, 0x6c, 0x05, - 0x86, 0xe5, 0x60, 0xd7, - 0x64, 0xf2, 0xb2, 0x77, 0x5e, 0xfd, 0x61, 0x48, 0xf5, 0xe3, 0xa5, 0xff, - 0x53, 0x34, 0x32, 0x4b, - 0x9f, 0x2c, 0x52, 0xd8, 0x4e, 0x34, 0x97, 0x01, 0x4b, 0x04, 0xcb, 0x5b, - 0x39, 0x1f, 0xae, 0xb8, - 0x51, 0x8d, 0xb1, 0xea, 0x7e, 0xac, 0x4e, 0xda, 0x4a, 0xee, 0x79, 0x74, - 0x87, 0x62, 0xc9, 0x6e, - 0xaa, 0x53, 0x51, 0x45, 0x6e, 0x65, 0xb8, 0x93, 0xf4, 0x09, 0x17, 0xd0, - 0xed, 0x49, 0x55, 0x9d, - 0x67, 0xb1, 0x90, 0x19, 0x18, 0x4c, 0x8d, 0x8c, 0xe1, 0x75, 0x59, 0xf6, - 0x5f, 0xdf, 0xd2, 0x6b, - 0x9c, 0x6f, 0x70, 0xb6, 0x08, 0x85, 0x7b, 0xc5, 0x5f, 0x92, 0x37, 0x52, - 0x35, 0xf4, 0x4e, 0x98, - 0x52, 0xce, 0x93, 0x84, 0x38, 0x1d, 0xa2, 0x1e, 0x5e, 0x78, 0x85, 0x7d, - 0x8b, 0x89, 0x29, 0x4e, - 0xa9, 0x10, 0x73, 0x2b, 0x28, 0xd4, 0x54, 0x57, 0xe0, 0x9f, 0xeb, 0xd9, - 0xe1, 0xa2, 0xb5, 0xbd, - 0x0d, 0x4f, 0x96, 0xe0, 0x58, 0xee, 0xd3, 0x6b, 0x5c, 0x6f, 0x22, 0x23, - 0x34, 0x73, 0xe7, 0x21, - 0xf6, 0x91, 0x76, 0x4f, 0x48, 0x27, 0x25, 0x22, 0xe2, 0x88, 0x4c, 0x87, - 0x5e, 0x58, 0x7b, 0xd2, - 0x38, 0x30, 0x95, 0x7d, 0x78, 0xbf, 0xfc, 0xf9, 0xe3, 0x62, 0xfe, 0xa8, - 0xe0, 0x25, 0x1c, 0x04, - 0xc3, 0xee, 0x75, 0xd2, 0x68, 0x76, 0x0a, 0xb0, 0x5d, 0x85, 0x90, 0x0c, - 0x8a, 0x0e, 0x80, 0xf7, - 0xb3, 0x8e, 0x9c, 0x28, 0x98, 0xcb, 0x31, 0x81, 0x58, 0x41, 0xaf, 0x9f, - 0x89, 0x44, 0xb8, 0xff, - 0x48, 0x50, 0x7c, 0x87, 0x88, 0x02, 0xc7, 0xc8, 0xe6, 0xa6, 0xc1, 0x3b, - 0xe3, 0x6f, 0x24, 0x0c, - 0x86, 0xf1, 0x9f, 0xb5, 0xb8, 0x9a, 0x1e, 0x13, 0xe7, 0x4c, 0x73, 0x14, - 0x5d, 0x12, 0x43, 0xda, - 0x7d, 0x2f, 0x7f, 0x1a, 0xa8, 0x53, 0xe8, 0x5a, 0x59, 0xab, 0x1d, 0xb0, - 0x37, 0x39, 0xdf, 0x29, - 0xd9, 0x70, 0x9a, 0xd1, 0xd8, 0x69, 0x6f, 0x66, 0xe5, 0x5b, 0xd4, 0x4a, - 0xe2, 0xe8, 0x8d, 0xb5, - 0x22, 0xae, 0x7a, 0x7e, 0xc8, 0xa0, 0x99, 0x2f, 0x5b, 0xbc, 0xba, 0xee, - 0x88, 0xc3, 0x11, 0x46, - 0xec, 0x0f, 0x99, 0x4c, 0xf8, 0x38, 0x40, 0xf4, 0x5a, 0x56, 0x08, 0xc1, - 0x36, 0xbe, 0x76, 0x90, - 0x17, 0xd1, 0x79, 0xe3, 0xe8, 0xf1, 0xb6, 0xbd, 0xe4, 0xb1, 0x66, 0x65, - 0x5c, 0x95, 0xea, 0x63, - 0x0c, 0xcf, 0x88, 0x7b, 0xdb, 0x81, 0x36, 0x96, 0x50, 0x1d, 0x76, 0x24, - 0x30, 0x2a, 0x06, 0x80, - 0xf7, 0x11, 0x68, 0xd4, 0xcb, 0x48, 0xc0, 0xdf, 0xee, 0xfa, 0x18, 0x80, - 0x5a, 0x01, 0x9a, 0x73, - 0x39, 0xb0, 0x8b, 0xe6, 0xfb, 0xd0, 0x19, 0x04, 0xef, 0x10, 0xaa, 0xaf, - 0xe4, 0x7c, 0xfd, 0xa5, - 0xc2, 0x6e, 0x6b, 0x49, 0xeb, 0x19, 0xef, 0x4d, 0x51, 0xf7, 0xc4, 0x0b, - 0x8e, 0x57, 0x61, 0x56, - 0x66, 0x31, 0x8e, 0x82, 0x9b, 0x23, 0x68, 0x71, 0xed, 0x07, 0x0d, 0xf1, - 0x5b, 0x86, 0x33, 0xca, - 0x9d, 0xef, 0x6e, 0x2d, 0x8b, 0xea, 0x9e, 0x38, 0x53, 0xe0, 0x63, 0x55, - 0x31, 0xad, 0xaf, 0x39, - 0x53, 0x4e, 0x8d, 0x1f, 0xbb, 0x72, 0x47, 0xe3, 0x52, 0x0a, 0xd1, 0x7a, - 0x8f, 0xd0, 0xc8, 0xef, - 0xa8, 0x90, 0x6d, 0xb0, 0xab, 0xbb, 0xb1, 0xaa, 0xec, 0xed, 0xbf, 0xde, - 0xe5, 0xfb, 0x54, 0x1c, - 0xd8, 0xf0, 0x84, 0x4a, 0x5b, 0x06, 0x8a, 0x9b, 0xe9, 0x29, 0x80, 0x4d, - 0xe6, 0xb1, 0x6c, 0x14, - 0x23, 0x2e, 0x64, 0xe5, 0x4b, 0xcf, 0x7c, 0xd2, 0x57, 0xce, 0xee, 0xe9, - 0x8c, 0x9a, 0xf0, 0xe7, - 0xed, 0x8f, 0x87, 0xd7, 0x7b, 0x57, 0xa5, 0x09, 0x56, 0x24, 0x5c, 0xc6, - 0x32, 0xe7, 0x97, 0x31, - 0x16, 0x51, 0x67, 0x78, 0x6b, 0x9e, 0x53, 0x40, 0xe8, 0xc3, 0x32, 0x62, - 0x58, 0xcc, 0x0b, 0xc2, - 0xb2, 0x0e, 0x82, 0xb3, 0x1b, 0xa4, 0xd4, 0x7c, 0x54, 0x33, 0xfb, 0x98, - 0x8d, 0x1d, 0x59, 0x5e, - 0x49, 0xd0, 0x62, 0x1c, 0x0b, 0x6d, 0x22, 0x35, 0xea, 0xd4, 0x95, 0x3c, - 0xe7, 0x36, 0xc5, 0xad, - 0x87, 0x71, 0x81, 0x2e, 0x3b, 0xf5, 0xfb, 0xee, 0xeb, 0x3e, 0x27, 0x13, - 0x59, 0x4b, 0xa2, 0x7b, - 0x7c, 0xaf, 0x61, 0x81, 0x2b, 0x3c, 0x0d, 0xa7, 0x55, 0xd9, 0x49, 0xb7, - 0x33, 0x60, 0x3e, 0x88, - }, - { /* 9 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x01, 0x6f, 0x5a, 0x3d, 0xbf, 0xad, 0xee, 0xab, 0xf1, 0xc4, 0xaf, 0x02, - 0xd6, 0x1c, 0x89, 0xf2, - 0x02, 0xde, 0xb4, 0x7a, 0xbd, 0x99, 0x1f, 0x95, 0x21, 0x4b, 0x9d, 0x04, - 0x6f, 0x38, 0xd1, 0x27, - 0x03, 0xb1, 0xee, 0x47, 0x02, 0x34, 0xf1, 0x3e, 0xd0, 0x8f, 0x32, 0x06, - 0xb9, 0x24, 0x58, 0xd5, - 0x04, 0x7f, 0xab, 0xf4, 0xb9, 0xf1, 0x3e, 0xe9, 0x42, 0x96, 0xf9, 0x08, - 0xde, 0x70, 0x61, 0x4e, - 0x05, 0x10, 0xf1, 0xc9, 0x06, 0x5c, 0xd0, 0x42, 0xb3, 0x52, 0x56, 0x0a, - 0x08, 0x6c, 0xe8, 0xbc, - 0x06, 0xa1, 0x1f, 0x8e, 0x04, 0x68, 0x21, 0x7c, 0x63, 0xdd, 0x64, 0x0c, - 0xb1, 0x48, 0xb0, 0x69, - 0x07, 0xce, 0x45, 0xb3, 0xbb, 0xc5, 0xcf, 0xd7, 0x92, 0x19, 0xcb, 0x0e, - 0x67, 0x54, 0x39, 0x9b, - 0x08, 0xfe, 0x95, 0x2b, 0xb1, 0x21, 0x7c, 0x11, 0x84, 0xef, 0x31, 0x10, - 0x7f, 0xe0, 0xc2, 0x9c, - 0x09, 0x91, 0xcf, 0x16, 0x0e, 0x8c, 0x92, 0xba, 0x75, 0x2b, 0x9e, 0x12, - 0xa9, 0xfc, 0x4b, 0x6e, - 0x0a, 0x20, 0x21, 0x51, 0x0c, 0xb8, 0x63, 0x84, 0xa5, 0xa4, 0xac, 0x14, - 0x10, 0xd8, 0x13, 0xbb, - 0x0b, 0x4f, 0x7b, 0x6c, 0xb3, 0x15, 0x8d, 0x2f, 0x54, 0x60, 0x03, 0x16, - 0xc6, 0xc4, 0x9a, 0x49, - 0x0c, 0x81, 0x3e, 0xdf, 0x08, 0xd0, 0x42, 0xf8, 0xc6, 0x79, 0xc8, 0x18, - 0xa1, 0x90, 0xa3, 0xd2, - 0x0d, 0xee, 0x64, 0xe2, 0xb7, 0x7d, 0xac, 0x53, 0x37, 0xbd, 0x67, 0x1a, - 0x77, 0x8c, 0x2a, 0x20, - 0x0e, 0x5f, 0x8a, 0xa5, 0xb5, 0x49, 0x5d, 0x6d, 0xe7, 0x32, 0x55, 0x1c, - 0xce, 0xa8, 0x72, 0xf5, - 0x0f, 0x30, 0xd0, 0x98, 0x0a, 0xe4, 0xb3, 0xc6, 0x16, 0xf6, 0xfa, 0x1e, - 0x18, 0xb4, 0xfb, 0x07, - 0x10, 0x3f, 0xe9, 0x56, 0xa1, 0x42, 0xf8, 0x22, 0xcb, 0x1d, 0x62, 0x20, - 0xfe, 0x03, 0x47, 0xfb, - 0x11, 0x50, 0xb3, 0x6b, 0x1e, 0xef, 0x16, 0x89, 0x3a, 0xd9, 0xcd, 0x22, - 0x28, 0x1f, 0xce, 0x09, - 0x12, 0xe1, 0x5d, 0x2c, 0x1c, 0xdb, 0xe7, 0xb7, 0xea, 0x56, 0xff, 0x24, - 0x91, 0x3b, 0x96, 0xdc, - 0x13, 0x8e, 0x07, 0x11, 0xa3, 0x76, 0x09, 0x1c, 0x1b, 0x92, 0x50, 0x26, - 0x47, 0x27, 0x1f, 0x2e, - 0x14, 0x40, 0x42, 0xa2, 0x18, 0xb3, 0xc6, 0xcb, 0x89, 0x8b, 0x9b, 0x28, - 0x20, 0x73, 0x26, 0xb5, - 0x15, 0x2f, 0x18, 0x9f, 0xa7, 0x1e, 0x28, 0x60, 0x78, 0x4f, 0x34, 0x2a, - 0xf6, 0x6f, 0xaf, 0x47, - 0x16, 0x9e, 0xf6, 0xd8, 0xa5, 0x2a, 0xd9, 0x5e, 0xa8, 0xc0, 0x06, 0x2c, - 0x4f, 0x4b, 0xf7, 0x92, - 0x17, 0xf1, 0xac, 0xe5, 0x1a, 0x87, 0x37, 0xf5, 0x59, 0x04, 0xa9, 0x2e, - 0x99, 0x57, 0x7e, 0x60, - 0x18, 0xc1, 0x7c, 0x7d, 0x10, 0x63, 0x84, 0x33, 0x4f, 0xf2, 0x53, 0x30, - 0x81, 0xe3, 0x85, 0x67, - 0x19, 0xae, 0x26, 0x40, 0xaf, 0xce, 0x6a, 0x98, 0xbe, 0x36, 0xfc, 0x32, - 0x57, 0xff, 0x0c, 0x95, - 0x1a, 0x1f, 0xc8, 0x07, 0xad, 0xfa, 0x9b, 0xa6, 0x6e, 0xb9, 0xce, 0x34, - 0xee, 0xdb, 0x54, 0x40, - 0x1b, 0x70, 0x92, 0x3a, 0x12, 0x57, 0x75, 0x0d, 0x9f, 0x7d, 0x61, 0x36, - 0x38, 0xc7, 0xdd, 0xb2, - 0x1c, 0xbe, 0xd7, 0x89, 0xa9, 0x92, 0xba, 0xda, 0x0d, 0x64, 0xaa, 0x38, - 0x5f, 0x93, 0xe4, 0x29, - 0x1d, 0xd1, 0x8d, 0xb4, 0x16, 0x3f, 0x54, 0x71, 0xfc, 0xa0, 0x05, 0x3a, - 0x89, 0x8f, 0x6d, 0xdb, - 0x1e, 0x60, 0x63, 0xf3, 0x14, 0x0b, 0xa5, 0x4f, 0x2c, 0x2f, 0x37, 0x3c, - 0x30, 0xab, 0x35, 0x0e, - 0x1f, 0x0f, 0x39, 0xce, 0xab, 0xa6, 0x4b, 0xe4, 0xdd, 0xeb, 0x98, 0x3e, - 0xe6, 0xb7, 0xbc, 0xfc, - 0x20, 0x7e, 0x11, 0xac, 0x81, 0x84, 0x33, 0x44, 0x55, 0x3a, 0xc4, 0x40, - 0x3f, 0x06, 0x8e, 0x35, - 0x21, 0x11, 0x4b, 0x91, 0x3e, 0x29, 0xdd, 0xef, 0xa4, 0xfe, 0x6b, 0x42, - 0xe9, 0x1a, 0x07, 0xc7, - 0x22, 0xa0, 0xa5, 0xd6, 0x3c, 0x1d, 0x2c, 0xd1, 0x74, 0x71, 0x59, 0x44, - 0x50, 0x3e, 0x5f, 0x12, - 0x23, 0xcf, 0xff, 0xeb, 0x83, 0xb0, 0xc2, 0x7a, 0x85, 0xb5, 0xf6, 0x46, - 0x86, 0x22, 0xd6, 0xe0, - 0x24, 0x01, 0xba, 0x58, 0x38, 0x75, 0x0d, 0xad, 0x17, 0xac, 0x3d, 0x48, - 0xe1, 0x76, 0xef, 0x7b, - 0x25, 0x6e, 0xe0, 0x65, 0x87, 0xd8, 0xe3, 0x06, 0xe6, 0x68, 0x92, 0x4a, - 0x37, 0x6a, 0x66, 0x89, - 0x26, 0xdf, 0x0e, 0x22, 0x85, 0xec, 0x12, 0x38, 0x36, 0xe7, 0xa0, 0x4c, - 0x8e, 0x4e, 0x3e, 0x5c, - 0x27, 0xb0, 0x54, 0x1f, 0x3a, 0x41, 0xfc, 0x93, 0xc7, 0x23, 0x0f, 0x4e, - 0x58, 0x52, 0xb7, 0xae, - 0x28, 0x80, 0x84, 0x87, 0x30, 0xa5, 0x4f, 0x55, 0xd1, 0xd5, 0xf5, 0x50, - 0x40, 0xe6, 0x4c, 0xa9, - 0x29, 0xef, 0xde, 0xba, 0x8f, 0x08, 0xa1, 0xfe, 0x20, 0x11, 0x5a, 0x52, - 0x96, 0xfa, 0xc5, 0x5b, - 0x2a, 0x5e, 0x30, 0xfd, 0x8d, 0x3c, 0x50, 0xc0, 0xf0, 0x9e, 0x68, 0x54, - 0x2f, 0xde, 0x9d, 0x8e, - 0x2b, 0x31, 0x6a, 0xc0, 0x32, 0x91, 0xbe, 0x6b, 0x01, 0x5a, 0xc7, 0x56, - 0xf9, 0xc2, 0x14, 0x7c, - 0x2c, 0xff, 0x2f, 0x73, 0x89, 0x54, 0x71, 0xbc, 0x93, 0x43, 0x0c, 0x58, - 0x9e, 0x96, 0x2d, 0xe7, - 0x2d, 0x90, 0x75, 0x4e, 0x36, 0xf9, 0x9f, 0x17, 0x62, 0x87, 0xa3, 0x5a, - 0x48, 0x8a, 0xa4, 0x15, - 0x2e, 0x21, 0x9b, 0x09, 0x34, 0xcd, 0x6e, 0x29, 0xb2, 0x08, 0x91, 0x5c, - 0xf1, 0xae, 0xfc, 0xc0, - 0x2f, 0x4e, 0xc1, 0x34, 0x8b, 0x60, 0x80, 0x82, 0x43, 0xcc, 0x3e, 0x5e, - 0x27, 0xb2, 0x75, 0x32, - 0x30, 0x41, 0xf8, 0xfa, 0x20, 0xc6, 0xcb, 0x66, 0x9e, 0x27, 0xa6, 0x60, - 0xc1, 0x05, 0xc9, 0xce, - 0x31, 0x2e, 0xa2, 0xc7, 0x9f, 0x6b, 0x25, 0xcd, 0x6f, 0xe3, 0x09, 0x62, - 0x17, 0x19, 0x40, 0x3c, - 0x32, 0x9f, 0x4c, 0x80, 0x9d, 0x5f, 0xd4, 0xf3, 0xbf, 0x6c, 0x3b, 0x64, - 0xae, 0x3d, 0x18, 0xe9, - 0x33, 0xf0, 0x16, 0xbd, 0x22, 0xf2, 0x3a, 0x58, 0x4e, 0xa8, 0x94, 0x66, - 0x78, 0x21, 0x91, 0x1b, - 0x34, 0x3e, 0x53, 0x0e, 0x99, 0x37, 0xf5, 0x8f, 0xdc, 0xb1, 0x5f, 0x68, - 0x1f, 0x75, 0xa8, 0x80, - 0x35, 0x51, 0x09, 0x33, 0x26, 0x9a, 0x1b, 0x24, 0x2d, 0x75, 0xf0, 0x6a, - 0xc9, 0x69, 0x21, 0x72, - 0x36, 0xe0, 0xe7, 0x74, 0x24, 0xae, 0xea, 0x1a, 0xfd, 0xfa, 0xc2, 0x6c, - 0x70, 0x4d, 0x79, 0xa7, - 0x37, 0x8f, 0xbd, 0x49, 0x9b, 0x03, 0x04, 0xb1, 0x0c, 0x3e, 0x6d, 0x6e, - 0xa6, 0x51, 0xf0, 0x55, - 0x38, 0xbf, 0x6d, 0xd1, 0x91, 0xe7, 0xb7, 0x77, 0x1a, 0xc8, 0x97, 0x70, - 0xbe, 0xe5, 0x0b, 0x52, - 0x39, 0xd0, 0x37, 0xec, 0x2e, 0x4a, 0x59, 0xdc, 0xeb, 0x0c, 0x38, 0x72, - 0x68, 0xf9, 0x82, 0xa0, - 0x3a, 0x61, 0xd9, 0xab, 0x2c, 0x7e, 0xa8, 0xe2, 0x3b, 0x83, 0x0a, 0x74, - 0xd1, 0xdd, 0xda, 0x75, - 0x3b, 0x0e, 0x83, 0x96, 0x93, 0xd3, 0x46, 0x49, 0xca, 0x47, 0xa5, 0x76, - 0x07, 0xc1, 0x53, 0x87, - 0x3c, 0xc0, 0xc6, 0x25, 0x28, 0x16, 0x89, 0x9e, 0x58, 0x5e, 0x6e, 0x78, - 0x60, 0x95, 0x6a, 0x1c, - 0x3d, 0xaf, 0x9c, 0x18, 0x97, 0xbb, 0x67, 0x35, 0xa9, 0x9a, 0xc1, 0x7a, - 0xb6, 0x89, 0xe3, 0xee, - 0x3e, 0x1e, 0x72, 0x5f, 0x95, 0x8f, 0x96, 0x0b, 0x79, 0x15, 0xf3, 0x7c, - 0x0f, 0xad, 0xbb, 0x3b, - 0x3f, 0x71, 0x28, 0x62, 0x2a, 0x22, 0x78, 0xa0, 0x88, 0xd1, 0x5c, 0x7e, - 0xd9, 0xb1, 0x32, 0xc9, - 0x40, 0xfc, 0x22, 0x9b, 0xc1, 0xcb, 0x66, 0x88, 0xaa, 0x74, 0x4b, 0x80, - 0x7e, 0x0c, 0xdf, 0x6a, - 0x41, 0x93, 0x78, 0xa6, 0x7e, 0x66, 0x88, 0x23, 0x5b, 0xb0, 0xe4, 0x82, - 0xa8, 0x10, 0x56, 0x98, - 0x42, 0x22, 0x96, 0xe1, 0x7c, 0x52, 0x79, 0x1d, 0x8b, 0x3f, 0xd6, 0x84, - 0x11, 0x34, 0x0e, 0x4d, - 0x43, 0x4d, 0xcc, 0xdc, 0xc3, 0xff, 0x97, 0xb6, 0x7a, 0xfb, 0x79, 0x86, - 0xc7, 0x28, 0x87, 0xbf, - 0x44, 0x83, 0x89, 0x6f, 0x78, 0x3a, 0x58, 0x61, 0xe8, 0xe2, 0xb2, 0x88, - 0xa0, 0x7c, 0xbe, 0x24, - 0x45, 0xec, 0xd3, 0x52, 0xc7, 0x97, 0xb6, 0xca, 0x19, 0x26, 0x1d, 0x8a, - 0x76, 0x60, 0x37, 0xd6, - 0x46, 0x5d, 0x3d, 0x15, 0xc5, 0xa3, 0x47, 0xf4, 0xc9, 0xa9, 0x2f, 0x8c, - 0xcf, 0x44, 0x6f, 0x03, - 0x47, 0x32, 0x67, 0x28, 0x7a, 0x0e, 0xa9, 0x5f, 0x38, 0x6d, 0x80, 0x8e, - 0x19, 0x58, 0xe6, 0xf1, - 0x48, 0x02, 0xb7, 0xb0, 0x70, 0xea, 0x1a, 0x99, 0x2e, 0x9b, 0x7a, 0x90, - 0x01, 0xec, 0x1d, 0xf6, - 0x49, 0x6d, 0xed, 0x8d, 0xcf, 0x47, 0xf4, 0x32, 0xdf, 0x5f, 0xd5, 0x92, - 0xd7, 0xf0, 0x94, 0x04, - 0x4a, 0xdc, 0x03, 0xca, 0xcd, 0x73, 0x05, 0x0c, 0x0f, 0xd0, 0xe7, 0x94, - 0x6e, 0xd4, 0xcc, 0xd1, - 0x4b, 0xb3, 0x59, 0xf7, 0x72, 0xde, 0xeb, 0xa7, 0xfe, 0x14, 0x48, 0x96, - 0xb8, 0xc8, 0x45, 0x23, - 0x4c, 0x7d, 0x1c, 0x44, 0xc9, 0x1b, 0x24, 0x70, 0x6c, 0x0d, 0x83, 0x98, - 0xdf, 0x9c, 0x7c, 0xb8, - 0x4d, 0x12, 0x46, 0x79, 0x76, 0xb6, 0xca, 0xdb, 0x9d, 0xc9, 0x2c, 0x9a, - 0x09, 0x80, 0xf5, 0x4a, - 0x4e, 0xa3, 0xa8, 0x3e, 0x74, 0x82, 0x3b, 0xe5, 0x4d, 0x46, 0x1e, 0x9c, - 0xb0, 0xa4, 0xad, 0x9f, - 0x4f, 0xcc, 0xf2, 0x03, 0xcb, 0x2f, 0xd5, 0x4e, 0xbc, 0x82, 0xb1, 0x9e, - 0x66, 0xb8, 0x24, 0x6d, - 0x50, 0xc3, 0xcb, 0xcd, 0x60, 0x89, 0x9e, 0xaa, 0x61, 0x69, 0x29, 0xa0, - 0x80, 0x0f, 0x98, 0x91, - 0x51, 0xac, 0x91, 0xf0, 0xdf, 0x24, 0x70, 0x01, 0x90, 0xad, 0x86, 0xa2, - 0x56, 0x13, 0x11, 0x63, - 0x52, 0x1d, 0x7f, 0xb7, 0xdd, 0x10, 0x81, 0x3f, 0x40, 0x22, 0xb4, 0xa4, - 0xef, 0x37, 0x49, 0xb6, - 0x53, 0x72, 0x25, 0x8a, 0x62, 0xbd, 0x6f, 0x94, 0xb1, 0xe6, 0x1b, 0xa6, - 0x39, 0x2b, 0xc0, 0x44, - 0x54, 0xbc, 0x60, 0x39, 0xd9, 0x78, 0xa0, 0x43, 0x23, 0xff, 0xd0, 0xa8, - 0x5e, 0x7f, 0xf9, 0xdf, - 0x55, 0xd3, 0x3a, 0x04, 0x66, 0xd5, 0x4e, 0xe8, 0xd2, 0x3b, 0x7f, 0xaa, - 0x88, 0x63, 0x70, 0x2d, - 0x56, 0x62, 0xd4, 0x43, 0x64, 0xe1, 0xbf, 0xd6, 0x02, 0xb4, 0x4d, 0xac, - 0x31, 0x47, 0x28, 0xf8, - 0x57, 0x0d, 0x8e, 0x7e, 0xdb, 0x4c, 0x51, 0x7d, 0xf3, 0x70, 0xe2, 0xae, - 0xe7, 0x5b, 0xa1, 0x0a, - 0x58, 0x3d, 0x5e, 0xe6, 0xd1, 0xa8, 0xe2, 0xbb, 0xe5, 0x86, 0x18, 0xb0, - 0xff, 0xef, 0x5a, 0x0d, - 0x59, 0x52, 0x04, 0xdb, 0x6e, 0x05, 0x0c, 0x10, 0x14, 0x42, 0xb7, 0xb2, - 0x29, 0xf3, 0xd3, 0xff, - 0x5a, 0xe3, 0xea, 0x9c, 0x6c, 0x31, 0xfd, 0x2e, 0xc4, 0xcd, 0x85, 0xb4, - 0x90, 0xd7, 0x8b, 0x2a, - 0x5b, 0x8c, 0xb0, 0xa1, 0xd3, 0x9c, 0x13, 0x85, 0x35, 0x09, 0x2a, 0xb6, - 0x46, 0xcb, 0x02, 0xd8, - 0x5c, 0x42, 0xf5, 0x12, 0x68, 0x59, 0xdc, 0x52, 0xa7, 0x10, 0xe1, 0xb8, - 0x21, 0x9f, 0x3b, 0x43, - 0x5d, 0x2d, 0xaf, 0x2f, 0xd7, 0xf4, 0x32, 0xf9, 0x56, 0xd4, 0x4e, 0xba, - 0xf7, 0x83, 0xb2, 0xb1, - 0x5e, 0x9c, 0x41, 0x68, 0xd5, 0xc0, 0xc3, 0xc7, 0x86, 0x5b, 0x7c, 0xbc, - 0x4e, 0xa7, 0xea, 0x64, - 0x5f, 0xf3, 0x1b, 0x55, 0x6a, 0x6d, 0x2d, 0x6c, 0x77, 0x9f, 0xd3, 0xbe, - 0x98, 0xbb, 0x63, 0x96, - 0x60, 0x82, 0x33, 0x37, 0x40, 0x4f, 0x55, 0xcc, 0xff, 0x4e, 0x8f, 0xc0, - 0x41, 0x0a, 0x51, 0x5f, - 0x61, 0xed, 0x69, 0x0a, 0xff, 0xe2, 0xbb, 0x67, 0x0e, 0x8a, 0x20, 0xc2, - 0x97, 0x16, 0xd8, 0xad, - 0x62, 0x5c, 0x87, 0x4d, 0xfd, 0xd6, 0x4a, 0x59, 0xde, 0x05, 0x12, 0xc4, - 0x2e, 0x32, 0x80, 0x78, - 0x63, 0x33, 0xdd, 0x70, 0x42, 0x7b, 0xa4, 0xf2, 0x2f, 0xc1, 0xbd, 0xc6, - 0xf8, 0x2e, 0x09, 0x8a, - 0x64, 0xfd, 0x98, 0xc3, 0xf9, 0xbe, 0x6b, 0x25, 0xbd, 0xd8, 0x76, 0xc8, - 0x9f, 0x7a, 0x30, 0x11, - 0x65, 0x92, 0xc2, 0xfe, 0x46, 0x13, 0x85, 0x8e, 0x4c, 0x1c, 0xd9, 0xca, - 0x49, 0x66, 0xb9, 0xe3, - 0x66, 0x23, 0x2c, 0xb9, 0x44, 0x27, 0x74, 0xb0, 0x9c, 0x93, 0xeb, 0xcc, - 0xf0, 0x42, 0xe1, 0x36, - 0x67, 0x4c, 0x76, 0x84, 0xfb, 0x8a, 0x9a, 0x1b, 0x6d, 0x57, 0x44, 0xce, - 0x26, 0x5e, 0x68, 0xc4, - 0x68, 0x7c, 0xa6, 0x1c, 0xf1, 0x6e, 0x29, 0xdd, 0x7b, 0xa1, 0xbe, 0xd0, - 0x3e, 0xea, 0x93, 0xc3, - 0x69, 0x13, 0xfc, 0x21, 0x4e, 0xc3, 0xc7, 0x76, 0x8a, 0x65, 0x11, 0xd2, - 0xe8, 0xf6, 0x1a, 0x31, - 0x6a, 0xa2, 0x12, 0x66, 0x4c, 0xf7, 0x36, 0x48, 0x5a, 0xea, 0x23, 0xd4, - 0x51, 0xd2, 0x42, 0xe4, - 0x6b, 0xcd, 0x48, 0x5b, 0xf3, 0x5a, 0xd8, 0xe3, 0xab, 0x2e, 0x8c, 0xd6, - 0x87, 0xce, 0xcb, 0x16, - 0x6c, 0x03, 0x0d, 0xe8, 0x48, 0x9f, 0x17, 0x34, 0x39, 0x37, 0x47, 0xd8, - 0xe0, 0x9a, 0xf2, 0x8d, - 0x6d, 0x6c, 0x57, 0xd5, 0xf7, 0x32, 0xf9, 0x9f, 0xc8, 0xf3, 0xe8, 0xda, - 0x36, 0x86, 0x7b, 0x7f, - 0x6e, 0xdd, 0xb9, 0x92, 0xf5, 0x06, 0x08, 0xa1, 0x18, 0x7c, 0xda, 0xdc, - 0x8f, 0xa2, 0x23, 0xaa, - 0x6f, 0xb2, 0xe3, 0xaf, 0x4a, 0xab, 0xe6, 0x0a, 0xe9, 0xb8, 0x75, 0xde, - 0x59, 0xbe, 0xaa, 0x58, - 0x70, 0xbd, 0xda, 0x61, 0xe1, 0x0d, 0xad, 0xee, 0x34, 0x53, 0xed, 0xe0, - 0xbf, 0x09, 0x16, 0xa4, - 0x71, 0xd2, 0x80, 0x5c, 0x5e, 0xa0, 0x43, 0x45, 0xc5, 0x97, 0x42, 0xe2, - 0x69, 0x15, 0x9f, 0x56, - 0x72, 0x63, 0x6e, 0x1b, 0x5c, 0x94, 0xb2, 0x7b, 0x15, 0x18, 0x70, 0xe4, - 0xd0, 0x31, 0xc7, 0x83, - 0x73, 0x0c, 0x34, 0x26, 0xe3, 0x39, 0x5c, 0xd0, 0xe4, 0xdc, 0xdf, 0xe6, - 0x06, 0x2d, 0x4e, 0x71, - 0x74, 0xc2, 0x71, 0x95, 0x58, 0xfc, 0x93, 0x07, 0x76, 0xc5, 0x14, 0xe8, - 0x61, 0x79, 0x77, 0xea, - 0x75, 0xad, 0x2b, 0xa8, 0xe7, 0x51, 0x7d, 0xac, 0x87, 0x01, 0xbb, 0xea, - 0xb7, 0x65, 0xfe, 0x18, - 0x76, 0x1c, 0xc5, 0xef, 0xe5, 0x65, 0x8c, 0x92, 0x57, 0x8e, 0x89, 0xec, - 0x0e, 0x41, 0xa6, 0xcd, - 0x77, 0x73, 0x9f, 0xd2, 0x5a, 0xc8, 0x62, 0x39, 0xa6, 0x4a, 0x26, 0xee, - 0xd8, 0x5d, 0x2f, 0x3f, - 0x78, 0x43, 0x4f, 0x4a, 0x50, 0x2c, 0xd1, 0xff, 0xb0, 0xbc, 0xdc, 0xf0, - 0xc0, 0xe9, 0xd4, 0x38, - 0x79, 0x2c, 0x15, 0x77, 0xef, 0x81, 0x3f, 0x54, 0x41, 0x78, 0x73, 0xf2, - 0x16, 0xf5, 0x5d, 0xca, - 0x7a, 0x9d, 0xfb, 0x30, 0xed, 0xb5, 0xce, 0x6a, 0x91, 0xf7, 0x41, 0xf4, - 0xaf, 0xd1, 0x05, 0x1f, - 0x7b, 0xf2, 0xa1, 0x0d, 0x52, 0x18, 0x20, 0xc1, 0x60, 0x33, 0xee, 0xf6, - 0x79, 0xcd, 0x8c, 0xed, - 0x7c, 0x3c, 0xe4, 0xbe, 0xe9, 0xdd, 0xef, 0x16, 0xf2, 0x2a, 0x25, 0xf8, - 0x1e, 0x99, 0xb5, 0x76, - 0x7d, 0x53, 0xbe, 0x83, 0x56, 0x70, 0x01, 0xbd, 0x03, 0xee, 0x8a, 0xfa, - 0xc8, 0x85, 0x3c, 0x84, - 0x7e, 0xe2, 0x50, 0xc4, 0x54, 0x44, 0xf0, 0x83, 0xd3, 0x61, 0xb8, 0xfc, - 0x71, 0xa1, 0x64, 0x51, - 0x7f, 0x8d, 0x0a, 0xf9, 0xeb, 0xe9, 0x1e, 0x28, 0x22, 0xa5, 0x17, 0xfe, - 0xa7, 0xbd, 0xed, 0xa3, - 0x80, 0x3b, 0x44, 0xf5, 0x41, 0x55, 0xcc, 0xd3, 0x97, 0xe8, 0x96, 0xc3, - 0xfc, 0x18, 0x7d, 0xd4, - 0x81, 0x54, 0x1e, 0xc8, 0xfe, 0xf8, 0x22, 0x78, 0x66, 0x2c, 0x39, 0xc1, - 0x2a, 0x04, 0xf4, 0x26, - 0x82, 0xe5, 0xf0, 0x8f, 0xfc, 0xcc, 0xd3, 0x46, 0xb6, 0xa3, 0x0b, 0xc7, - 0x93, 0x20, 0xac, 0xf3, - 0x83, 0x8a, 0xaa, 0xb2, 0x43, 0x61, 0x3d, 0xed, 0x47, 0x67, 0xa4, 0xc5, - 0x45, 0x3c, 0x25, 0x01, - 0x84, 0x44, 0xef, 0x01, 0xf8, 0xa4, 0xf2, 0x3a, 0xd5, 0x7e, 0x6f, 0xcb, - 0x22, 0x68, 0x1c, 0x9a, - 0x85, 0x2b, 0xb5, 0x3c, 0x47, 0x09, 0x1c, 0x91, 0x24, 0xba, 0xc0, 0xc9, - 0xf4, 0x74, 0x95, 0x68, - 0x86, 0x9a, 0x5b, 0x7b, 0x45, 0x3d, 0xed, 0xaf, 0xf4, 0x35, 0xf2, 0xcf, - 0x4d, 0x50, 0xcd, 0xbd, - 0x87, 0xf5, 0x01, 0x46, 0xfa, 0x90, 0x03, 0x04, 0x05, 0xf1, 0x5d, 0xcd, - 0x9b, 0x4c, 0x44, 0x4f, - 0x88, 0xc5, 0xd1, 0xde, 0xf0, 0x74, 0xb0, 0xc2, 0x13, 0x07, 0xa7, 0xd3, - 0x83, 0xf8, 0xbf, 0x48, - 0x89, 0xaa, 0x8b, 0xe3, 0x4f, 0xd9, 0x5e, 0x69, 0xe2, 0xc3, 0x08, 0xd1, - 0x55, 0xe4, 0x36, 0xba, - 0x8a, 0x1b, 0x65, 0xa4, 0x4d, 0xed, 0xaf, 0x57, 0x32, 0x4c, 0x3a, 0xd7, - 0xec, 0xc0, 0x6e, 0x6f, - 0x8b, 0x74, 0x3f, 0x99, 0xf2, 0x40, 0x41, 0xfc, 0xc3, 0x88, 0x95, 0xd5, - 0x3a, 0xdc, 0xe7, 0x9d, - 0x8c, 0xba, 0x7a, 0x2a, 0x49, 0x85, 0x8e, 0x2b, 0x51, 0x91, 0x5e, 0xdb, - 0x5d, 0x88, 0xde, 0x06, - 0x8d, 0xd5, 0x20, 0x17, 0xf6, 0x28, 0x60, 0x80, 0xa0, 0x55, 0xf1, 0xd9, - 0x8b, 0x94, 0x57, 0xf4, - 0x8e, 0x64, 0xce, 0x50, 0xf4, 0x1c, 0x91, 0xbe, 0x70, 0xda, 0xc3, 0xdf, - 0x32, 0xb0, 0x0f, 0x21, - 0x8f, 0x0b, 0x94, 0x6d, 0x4b, 0xb1, 0x7f, 0x15, 0x81, 0x1e, 0x6c, 0xdd, - 0xe4, 0xac, 0x86, 0xd3, - 0x90, 0x04, 0xad, 0xa3, 0xe0, 0x17, 0x34, 0xf1, 0x5c, 0xf5, 0xf4, 0xe3, - 0x02, 0x1b, 0x3a, 0x2f, - 0x91, 0x6b, 0xf7, 0x9e, 0x5f, 0xba, 0xda, 0x5a, 0xad, 0x31, 0x5b, 0xe1, - 0xd4, 0x07, 0xb3, 0xdd, - 0x92, 0xda, 0x19, 0xd9, 0x5d, 0x8e, 0x2b, 0x64, 0x7d, 0xbe, 0x69, 0xe7, - 0x6d, 0x23, 0xeb, 0x08, - 0x93, 0xb5, 0x43, 0xe4, 0xe2, 0x23, 0xc5, 0xcf, 0x8c, 0x7a, 0xc6, 0xe5, - 0xbb, 0x3f, 0x62, 0xfa, - 0x94, 0x7b, 0x06, 0x57, 0x59, 0xe6, 0x0a, 0x18, 0x1e, 0x63, 0x0d, 0xeb, - 0xdc, 0x6b, 0x5b, 0x61, - 0x95, 0x14, 0x5c, 0x6a, 0xe6, 0x4b, 0xe4, 0xb3, 0xef, 0xa7, 0xa2, 0xe9, - 0x0a, 0x77, 0xd2, 0x93, - 0x96, 0xa5, 0xb2, 0x2d, 0xe4, 0x7f, 0x15, 0x8d, 0x3f, 0x28, 0x90, 0xef, - 0xb3, 0x53, 0x8a, 0x46, - 0x97, 0xca, 0xe8, 0x10, 0x5b, 0xd2, 0xfb, 0x26, 0xce, 0xec, 0x3f, 0xed, - 0x65, 0x4f, 0x03, 0xb4, - 0x98, 0xfa, 0x38, 0x88, 0x51, 0x36, 0x48, 0xe0, 0xd8, 0x1a, 0xc5, 0xf3, - 0x7d, 0xfb, 0xf8, 0xb3, - 0x99, 0x95, 0x62, 0xb5, 0xee, 0x9b, 0xa6, 0x4b, 0x29, 0xde, 0x6a, 0xf1, - 0xab, 0xe7, 0x71, 0x41, - 0x9a, 0x24, 0x8c, 0xf2, 0xec, 0xaf, 0x57, 0x75, 0xf9, 0x51, 0x58, 0xf7, - 0x12, 0xc3, 0x29, 0x94, - 0x9b, 0x4b, 0xd6, 0xcf, 0x53, 0x02, 0xb9, 0xde, 0x08, 0x95, 0xf7, 0xf5, - 0xc4, 0xdf, 0xa0, 0x66, - 0x9c, 0x85, 0x93, 0x7c, 0xe8, 0xc7, 0x76, 0x09, 0x9a, 0x8c, 0x3c, 0xfb, - 0xa3, 0x8b, 0x99, 0xfd, - 0x9d, 0xea, 0xc9, 0x41, 0x57, 0x6a, 0x98, 0xa2, 0x6b, 0x48, 0x93, 0xf9, - 0x75, 0x97, 0x10, 0x0f, - 0x9e, 0x5b, 0x27, 0x06, 0x55, 0x5e, 0x69, 0x9c, 0xbb, 0xc7, 0xa1, 0xff, - 0xcc, 0xb3, 0x48, 0xda, - 0x9f, 0x34, 0x7d, 0x3b, 0xea, 0xf3, 0x87, 0x37, 0x4a, 0x03, 0x0e, 0xfd, - 0x1a, 0xaf, 0xc1, 0x28, - 0xa0, 0x45, 0x55, 0x59, 0xc0, 0xd1, 0xff, 0x97, 0xc2, 0xd2, 0x52, 0x83, - 0xc3, 0x1e, 0xf3, 0xe1, - 0xa1, 0x2a, 0x0f, 0x64, 0x7f, 0x7c, 0x11, 0x3c, 0x33, 0x16, 0xfd, 0x81, - 0x15, 0x02, 0x7a, 0x13, - 0xa2, 0x9b, 0xe1, 0x23, 0x7d, 0x48, 0xe0, 0x02, 0xe3, 0x99, 0xcf, 0x87, - 0xac, 0x26, 0x22, 0xc6, - 0xa3, 0xf4, 0xbb, 0x1e, 0xc2, 0xe5, 0x0e, 0xa9, 0x12, 0x5d, 0x60, 0x85, - 0x7a, 0x3a, 0xab, 0x34, - 0xa4, 0x3a, 0xfe, 0xad, 0x79, 0x20, 0xc1, 0x7e, 0x80, 0x44, 0xab, 0x8b, - 0x1d, 0x6e, 0x92, 0xaf, - 0xa5, 0x55, 0xa4, 0x90, 0xc6, 0x8d, 0x2f, 0xd5, 0x71, 0x80, 0x04, 0x89, - 0xcb, 0x72, 0x1b, 0x5d, - 0xa6, 0xe4, 0x4a, 0xd7, 0xc4, 0xb9, 0xde, 0xeb, 0xa1, 0x0f, 0x36, 0x8f, - 0x72, 0x56, 0x43, 0x88, - 0xa7, 0x8b, 0x10, 0xea, 0x7b, 0x14, 0x30, 0x40, 0x50, 0xcb, 0x99, 0x8d, - 0xa4, 0x4a, 0xca, 0x7a, - 0xa8, 0xbb, 0xc0, 0x72, 0x71, 0xf0, 0x83, 0x86, 0x46, 0x3d, 0x63, 0x93, - 0xbc, 0xfe, 0x31, 0x7d, - 0xa9, 0xd4, 0x9a, 0x4f, 0xce, 0x5d, 0x6d, 0x2d, 0xb7, 0xf9, 0xcc, 0x91, - 0x6a, 0xe2, 0xb8, 0x8f, - 0xaa, 0x65, 0x74, 0x08, 0xcc, 0x69, 0x9c, 0x13, 0x67, 0x76, 0xfe, 0x97, - 0xd3, 0xc6, 0xe0, 0x5a, - 0xab, 0x0a, 0x2e, 0x35, 0x73, 0xc4, 0x72, 0xb8, 0x96, 0xb2, 0x51, 0x95, - 0x05, 0xda, 0x69, 0xa8, - 0xac, 0xc4, 0x6b, 0x86, 0xc8, 0x01, 0xbd, 0x6f, 0x04, 0xab, 0x9a, 0x9b, - 0x62, 0x8e, 0x50, 0x33, - 0xad, 0xab, 0x31, 0xbb, 0x77, 0xac, 0x53, 0xc4, 0xf5, 0x6f, 0x35, 0x99, - 0xb4, 0x92, 0xd9, 0xc1, - 0xae, 0x1a, 0xdf, 0xfc, 0x75, 0x98, 0xa2, 0xfa, 0x25, 0xe0, 0x07, 0x9f, - 0x0d, 0xb6, 0x81, 0x14, - 0xaf, 0x75, 0x85, 0xc1, 0xca, 0x35, 0x4c, 0x51, 0xd4, 0x24, 0xa8, 0x9d, - 0xdb, 0xaa, 0x08, 0xe6, - 0xb0, 0x7a, 0xbc, 0x0f, 0x61, 0x93, 0x07, 0xb5, 0x09, 0xcf, 0x30, 0xa3, - 0x3d, 0x1d, 0xb4, 0x1a, - 0xb1, 0x15, 0xe6, 0x32, 0xde, 0x3e, 0xe9, 0x1e, 0xf8, 0x0b, 0x9f, 0xa1, - 0xeb, 0x01, 0x3d, 0xe8, - 0xb2, 0xa4, 0x08, 0x75, 0xdc, 0x0a, 0x18, 0x20, 0x28, 0x84, 0xad, 0xa7, - 0x52, 0x25, 0x65, 0x3d, - 0xb3, 0xcb, 0x52, 0x48, 0x63, 0xa7, 0xf6, 0x8b, 0xd9, 0x40, 0x02, 0xa5, - 0x84, 0x39, 0xec, 0xcf, - 0xb4, 0x05, 0x17, 0xfb, 0xd8, 0x62, 0x39, 0x5c, 0x4b, 0x59, 0xc9, 0xab, - 0xe3, 0x6d, 0xd5, 0x54, - 0xb5, 0x6a, 0x4d, 0xc6, 0x67, 0xcf, 0xd7, 0xf7, 0xba, 0x9d, 0x66, 0xa9, - 0x35, 0x71, 0x5c, 0xa6, - 0xb6, 0xdb, 0xa3, 0x81, 0x65, 0xfb, 0x26, 0xc9, 0x6a, 0x12, 0x54, 0xaf, - 0x8c, 0x55, 0x04, 0x73, - 0xb7, 0xb4, 0xf9, 0xbc, 0xda, 0x56, 0xc8, 0x62, 0x9b, 0xd6, 0xfb, 0xad, - 0x5a, 0x49, 0x8d, 0x81, - 0xb8, 0x84, 0x29, 0x24, 0xd0, 0xb2, 0x7b, 0xa4, 0x8d, 0x20, 0x01, 0xb3, - 0x42, 0xfd, 0x76, 0x86, - 0xb9, 0xeb, 0x73, 0x19, 0x6f, 0x1f, 0x95, 0x0f, 0x7c, 0xe4, 0xae, 0xb1, - 0x94, 0xe1, 0xff, 0x74, - 0xba, 0x5a, 0x9d, 0x5e, 0x6d, 0x2b, 0x64, 0x31, 0xac, 0x6b, 0x9c, 0xb7, - 0x2d, 0xc5, 0xa7, 0xa1, - 0xbb, 0x35, 0xc7, 0x63, 0xd2, 0x86, 0x8a, 0x9a, 0x5d, 0xaf, 0x33, 0xb5, - 0xfb, 0xd9, 0x2e, 0x53, - 0xbc, 0xfb, 0x82, 0xd0, 0x69, 0x43, 0x45, 0x4d, 0xcf, 0xb6, 0xf8, 0xbb, - 0x9c, 0x8d, 0x17, 0xc8, - 0xbd, 0x94, 0xd8, 0xed, 0xd6, 0xee, 0xab, 0xe6, 0x3e, 0x72, 0x57, 0xb9, - 0x4a, 0x91, 0x9e, 0x3a, - 0xbe, 0x25, 0x36, 0xaa, 0xd4, 0xda, 0x5a, 0xd8, 0xee, 0xfd, 0x65, 0xbf, - 0xf3, 0xb5, 0xc6, 0xef, - 0xbf, 0x4a, 0x6c, 0x97, 0x6b, 0x77, 0xb4, 0x73, 0x1f, 0x39, 0xca, 0xbd, - 0x25, 0xa9, 0x4f, 0x1d, - 0xc0, 0xc7, 0x66, 0x6e, 0x80, 0x9e, 0xaa, 0x5b, 0x3d, 0x9c, 0xdd, 0x43, - 0x82, 0x14, 0xa2, 0xbe, - 0xc1, 0xa8, 0x3c, 0x53, 0x3f, 0x33, 0x44, 0xf0, 0xcc, 0x58, 0x72, 0x41, - 0x54, 0x08, 0x2b, 0x4c, - 0xc2, 0x19, 0xd2, 0x14, 0x3d, 0x07, 0xb5, 0xce, 0x1c, 0xd7, 0x40, 0x47, - 0xed, 0x2c, 0x73, 0x99, - 0xc3, 0x76, 0x88, 0x29, 0x82, 0xaa, 0x5b, 0x65, 0xed, 0x13, 0xef, 0x45, - 0x3b, 0x30, 0xfa, 0x6b, - 0xc4, 0xb8, 0xcd, 0x9a, 0x39, 0x6f, 0x94, 0xb2, 0x7f, 0x0a, 0x24, 0x4b, - 0x5c, 0x64, 0xc3, 0xf0, - 0xc5, 0xd7, 0x97, 0xa7, 0x86, 0xc2, 0x7a, 0x19, 0x8e, 0xce, 0x8b, 0x49, - 0x8a, 0x78, 0x4a, 0x02, - 0xc6, 0x66, 0x79, 0xe0, 0x84, 0xf6, 0x8b, 0x27, 0x5e, 0x41, 0xb9, 0x4f, - 0x33, 0x5c, 0x12, 0xd7, - 0xc7, 0x09, 0x23, 0xdd, 0x3b, 0x5b, 0x65, 0x8c, 0xaf, 0x85, 0x16, 0x4d, - 0xe5, 0x40, 0x9b, 0x25, - 0xc8, 0x39, 0xf3, 0x45, 0x31, 0xbf, 0xd6, 0x4a, 0xb9, 0x73, 0xec, 0x53, - 0xfd, 0xf4, 0x60, 0x22, - 0xc9, 0x56, 0xa9, 0x78, 0x8e, 0x12, 0x38, 0xe1, 0x48, 0xb7, 0x43, 0x51, - 0x2b, 0xe8, 0xe9, 0xd0, - 0xca, 0xe7, 0x47, 0x3f, 0x8c, 0x26, 0xc9, 0xdf, 0x98, 0x38, 0x71, 0x57, - 0x92, 0xcc, 0xb1, 0x05, - 0xcb, 0x88, 0x1d, 0x02, 0x33, 0x8b, 0x27, 0x74, 0x69, 0xfc, 0xde, 0x55, - 0x44, 0xd0, 0x38, 0xf7, - 0xcc, 0x46, 0x58, 0xb1, 0x88, 0x4e, 0xe8, 0xa3, 0xfb, 0xe5, 0x15, 0x5b, - 0x23, 0x84, 0x01, 0x6c, - 0xcd, 0x29, 0x02, 0x8c, 0x37, 0xe3, 0x06, 0x08, 0x0a, 0x21, 0xba, 0x59, - 0xf5, 0x98, 0x88, 0x9e, - 0xce, 0x98, 0xec, 0xcb, 0x35, 0xd7, 0xf7, 0x36, 0xda, 0xae, 0x88, 0x5f, - 0x4c, 0xbc, 0xd0, 0x4b, - 0xcf, 0xf7, 0xb6, 0xf6, 0x8a, 0x7a, 0x19, 0x9d, 0x2b, 0x6a, 0x27, 0x5d, - 0x9a, 0xa0, 0x59, 0xb9, - 0xd0, 0xf8, 0x8f, 0x38, 0x21, 0xdc, 0x52, 0x79, 0xf6, 0x81, 0xbf, 0x63, - 0x7c, 0x17, 0xe5, 0x45, - 0xd1, 0x97, 0xd5, 0x05, 0x9e, 0x71, 0xbc, 0xd2, 0x07, 0x45, 0x10, 0x61, - 0xaa, 0x0b, 0x6c, 0xb7, - 0xd2, 0x26, 0x3b, 0x42, 0x9c, 0x45, 0x4d, 0xec, 0xd7, 0xca, 0x22, 0x67, - 0x13, 0x2f, 0x34, 0x62, - 0xd3, 0x49, 0x61, 0x7f, 0x23, 0xe8, 0xa3, 0x47, 0x26, 0x0e, 0x8d, 0x65, - 0xc5, 0x33, 0xbd, 0x90, - 0xd4, 0x87, 0x24, 0xcc, 0x98, 0x2d, 0x6c, 0x90, 0xb4, 0x17, 0x46, 0x6b, - 0xa2, 0x67, 0x84, 0x0b, - 0xd5, 0xe8, 0x7e, 0xf1, 0x27, 0x80, 0x82, 0x3b, 0x45, 0xd3, 0xe9, 0x69, - 0x74, 0x7b, 0x0d, 0xf9, - 0xd6, 0x59, 0x90, 0xb6, 0x25, 0xb4, 0x73, 0x05, 0x95, 0x5c, 0xdb, 0x6f, - 0xcd, 0x5f, 0x55, 0x2c, - 0xd7, 0x36, 0xca, 0x8b, 0x9a, 0x19, 0x9d, 0xae, 0x64, 0x98, 0x74, 0x6d, - 0x1b, 0x43, 0xdc, 0xde, - 0xd8, 0x06, 0x1a, 0x13, 0x90, 0xfd, 0x2e, 0x68, 0x72, 0x6e, 0x8e, 0x73, - 0x03, 0xf7, 0x27, 0xd9, - 0xd9, 0x69, 0x40, 0x2e, 0x2f, 0x50, 0xc0, 0xc3, 0x83, 0xaa, 0x21, 0x71, - 0xd5, 0xeb, 0xae, 0x2b, - 0xda, 0xd8, 0xae, 0x69, 0x2d, 0x64, 0x31, 0xfd, 0x53, 0x25, 0x13, 0x77, - 0x6c, 0xcf, 0xf6, 0xfe, - 0xdb, 0xb7, 0xf4, 0x54, 0x92, 0xc9, 0xdf, 0x56, 0xa2, 0xe1, 0xbc, 0x75, - 0xba, 0xd3, 0x7f, 0x0c, - 0xdc, 0x79, 0xb1, 0xe7, 0x29, 0x0c, 0x10, 0x81, 0x30, 0xf8, 0x77, 0x7b, - 0xdd, 0x87, 0x46, 0x97, - 0xdd, 0x16, 0xeb, 0xda, 0x96, 0xa1, 0xfe, 0x2a, 0xc1, 0x3c, 0xd8, 0x79, - 0x0b, 0x9b, 0xcf, 0x65, - 0xde, 0xa7, 0x05, 0x9d, 0x94, 0x95, 0x0f, 0x14, 0x11, 0xb3, 0xea, 0x7f, - 0xb2, 0xbf, 0x97, 0xb0, - 0xdf, 0xc8, 0x5f, 0xa0, 0x2b, 0x38, 0xe1, 0xbf, 0xe0, 0x77, 0x45, 0x7d, - 0x64, 0xa3, 0x1e, 0x42, - 0xe0, 0xb9, 0x77, 0xc2, 0x01, 0x1a, 0x99, 0x1f, 0x68, 0xa6, 0x19, 0x03, - 0xbd, 0x12, 0x2c, 0x8b, - 0xe1, 0xd6, 0x2d, 0xff, 0xbe, 0xb7, 0x77, 0xb4, 0x99, 0x62, 0xb6, 0x01, - 0x6b, 0x0e, 0xa5, 0x79, - 0xe2, 0x67, 0xc3, 0xb8, 0xbc, 0x83, 0x86, 0x8a, 0x49, 0xed, 0x84, 0x07, - 0xd2, 0x2a, 0xfd, 0xac, - 0xe3, 0x08, 0x99, 0x85, 0x03, 0x2e, 0x68, 0x21, 0xb8, 0x29, 0x2b, 0x05, - 0x04, 0x36, 0x74, 0x5e, - 0xe4, 0xc6, 0xdc, 0x36, 0xb8, 0xeb, 0xa7, 0xf6, 0x2a, 0x30, 0xe0, 0x0b, - 0x63, 0x62, 0x4d, 0xc5, - 0xe5, 0xa9, 0x86, 0x0b, 0x07, 0x46, 0x49, 0x5d, 0xdb, 0xf4, 0x4f, 0x09, - 0xb5, 0x7e, 0xc4, 0x37, - 0xe6, 0x18, 0x68, 0x4c, 0x05, 0x72, 0xb8, 0x63, 0x0b, 0x7b, 0x7d, 0x0f, - 0x0c, 0x5a, 0x9c, 0xe2, - 0xe7, 0x77, 0x32, 0x71, 0xba, 0xdf, 0x56, 0xc8, 0xfa, 0xbf, 0xd2, 0x0d, - 0xda, 0x46, 0x15, 0x10, - 0xe8, 0x47, 0xe2, 0xe9, 0xb0, 0x3b, 0xe5, 0x0e, 0xec, 0x49, 0x28, 0x13, - 0xc2, 0xf2, 0xee, 0x17, - 0xe9, 0x28, 0xb8, 0xd4, 0x0f, 0x96, 0x0b, 0xa5, 0x1d, 0x8d, 0x87, 0x11, - 0x14, 0xee, 0x67, 0xe5, - 0xea, 0x99, 0x56, 0x93, 0x0d, 0xa2, 0xfa, 0x9b, 0xcd, 0x02, 0xb5, 0x17, - 0xad, 0xca, 0x3f, 0x30, - 0xeb, 0xf6, 0x0c, 0xae, 0xb2, 0x0f, 0x14, 0x30, 0x3c, 0xc6, 0x1a, 0x15, - 0x7b, 0xd6, 0xb6, 0xc2, - 0xec, 0x38, 0x49, 0x1d, 0x09, 0xca, 0xdb, 0xe7, 0xae, 0xdf, 0xd1, 0x1b, - 0x1c, 0x82, 0x8f, 0x59, - 0xed, 0x57, 0x13, 0x20, 0xb6, 0x67, 0x35, 0x4c, 0x5f, 0x1b, 0x7e, 0x19, - 0xca, 0x9e, 0x06, 0xab, - 0xee, 0xe6, 0xfd, 0x67, 0xb4, 0x53, 0xc4, 0x72, 0x8f, 0x94, 0x4c, 0x1f, - 0x73, 0xba, 0x5e, 0x7e, - 0xef, 0x89, 0xa7, 0x5a, 0x0b, 0xfe, 0x2a, 0xd9, 0x7e, 0x50, 0xe3, 0x1d, - 0xa5, 0xa6, 0xd7, 0x8c, - 0xf0, 0x86, 0x9e, 0x94, 0xa0, 0x58, 0x61, 0x3d, 0xa3, 0xbb, 0x7b, 0x23, - 0x43, 0x11, 0x6b, 0x70, - 0xf1, 0xe9, 0xc4, 0xa9, 0x1f, 0xf5, 0x8f, 0x96, 0x52, 0x7f, 0xd4, 0x21, - 0x95, 0x0d, 0xe2, 0x82, - 0xf2, 0x58, 0x2a, 0xee, 0x1d, 0xc1, 0x7e, 0xa8, 0x82, 0xf0, 0xe6, 0x27, - 0x2c, 0x29, 0xba, 0x57, - 0xf3, 0x37, 0x70, 0xd3, 0xa2, 0x6c, 0x90, 0x03, 0x73, 0x34, 0x49, 0x25, - 0xfa, 0x35, 0x33, 0xa5, - 0xf4, 0xf9, 0x35, 0x60, 0x19, 0xa9, 0x5f, 0xd4, 0xe1, 0x2d, 0x82, 0x2b, - 0x9d, 0x61, 0x0a, 0x3e, - 0xf5, 0x96, 0x6f, 0x5d, 0xa6, 0x04, 0xb1, 0x7f, 0x10, 0xe9, 0x2d, 0x29, - 0x4b, 0x7d, 0x83, 0xcc, - 0xf6, 0x27, 0x81, 0x1a, 0xa4, 0x30, 0x40, 0x41, 0xc0, 0x66, 0x1f, 0x2f, - 0xf2, 0x59, 0xdb, 0x19, - 0xf7, 0x48, 0xdb, 0x27, 0x1b, 0x9d, 0xae, 0xea, 0x31, 0xa2, 0xb0, 0x2d, - 0x24, 0x45, 0x52, 0xeb, - 0xf8, 0x78, 0x0b, 0xbf, 0x11, 0x79, 0x1d, 0x2c, 0x27, 0x54, 0x4a, 0x33, - 0x3c, 0xf1, 0xa9, 0xec, - 0xf9, 0x17, 0x51, 0x82, 0xae, 0xd4, 0xf3, 0x87, 0xd6, 0x90, 0xe5, 0x31, - 0xea, 0xed, 0x20, 0x1e, - 0xfa, 0xa6, 0xbf, 0xc5, 0xac, 0xe0, 0x02, 0xb9, 0x06, 0x1f, 0xd7, 0x37, - 0x53, 0xc9, 0x78, 0xcb, - 0xfb, 0xc9, 0xe5, 0xf8, 0x13, 0x4d, 0xec, 0x12, 0xf7, 0xdb, 0x78, 0x35, - 0x85, 0xd5, 0xf1, 0x39, - 0xfc, 0x07, 0xa0, 0x4b, 0xa8, 0x88, 0x23, 0xc5, 0x65, 0xc2, 0xb3, 0x3b, - 0xe2, 0x81, 0xc8, 0xa2, - 0xfd, 0x68, 0xfa, 0x76, 0x17, 0x25, 0xcd, 0x6e, 0x94, 0x06, 0x1c, 0x39, - 0x34, 0x9d, 0x41, 0x50, - 0xfe, 0xd9, 0x14, 0x31, 0x15, 0x11, 0x3c, 0x50, 0x44, 0x89, 0x2e, 0x3f, - 0x8d, 0xb9, 0x19, 0x85, - 0xff, 0xb6, 0x4e, 0x0c, 0xaa, 0xbc, 0xd2, 0xfb, 0xb5, 0x4d, 0x81, 0x3d, - 0x5b, 0xa5, 0x90, 0x77, - }, - { /* 10 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x77, 0x44, 0x94, 0x60, 0x7c, 0x12, 0x8d, 0x2e, 0x2d, 0xbc, 0xeb, - 0x11, 0x43, 0x48, 0x8e, - 0x43, 0xee, 0x88, 0xeb, 0xc0, 0xf8, 0x24, 0xd9, 0x5c, 0x5a, 0xbb, 0x15, - 0x22, 0x86, 0x90, 0xdf, - 0x83, 0x99, 0xcc, 0x7f, 0xa0, 0x84, 0x36, 0x54, 0x72, 0x77, 0x07, 0xfe, - 0x33, 0xc5, 0xd8, 0x51, - 0x86, 0x1f, 0xd3, 0x15, 0x43, 0x33, 0x48, 0x71, 0xb8, 0xb4, 0xb5, 0x2a, - 0x44, 0xcf, 0xe3, 0x7d, - 0x46, 0x68, 0x97, 0x81, 0x23, 0x4f, 0x5a, 0xfc, 0x96, 0x99, 0x09, 0xc1, - 0x55, 0x8c, 0xab, 0xf3, - 0xc5, 0xf1, 0x5b, 0xfe, 0x83, 0xcb, 0x6c, 0xa8, 0xe4, 0xee, 0x0e, 0x3f, - 0x66, 0x49, 0x73, 0xa2, - 0x05, 0x86, 0x1f, 0x6a, 0xe3, 0xb7, 0x7e, 0x25, 0xca, 0xc3, 0xb2, 0xd4, - 0x77, 0x0a, 0x3b, 0x2c, - 0xcf, 0x3e, 0x65, 0x2a, 0x86, 0x66, 0x90, 0xe2, 0xb3, 0xab, 0xa9, 0x54, - 0x88, 0x5d, 0x05, 0xfa, - 0x0f, 0x49, 0x21, 0xbe, 0xe6, 0x1a, 0x82, 0x6f, 0x9d, 0x86, 0x15, 0xbf, - 0x99, 0x1e, 0x4d, 0x74, - 0x8c, 0xd0, 0xed, 0xc1, 0x46, 0x9e, 0xb4, 0x3b, 0xef, 0xf1, 0x12, 0x41, - 0xaa, 0xdb, 0x95, 0x25, - 0x4c, 0xa7, 0xa9, 0x55, 0x26, 0xe2, 0xa6, 0xb6, 0xc1, 0xdc, 0xae, 0xaa, - 0xbb, 0x98, 0xdd, 0xab, - 0x49, 0x21, 0xb6, 0x3f, 0xc5, 0x55, 0xd8, 0x93, 0x0b, 0x1f, 0x1c, 0x7e, - 0xcc, 0x92, 0xe6, 0x87, - 0x89, 0x56, 0xf2, 0xab, 0xa5, 0x29, 0xca, 0x1e, 0x25, 0x32, 0xa0, 0x95, - 0xdd, 0xd1, 0xae, 0x09, - 0x0a, 0xcf, 0x3e, 0xd4, 0x05, 0xad, 0xfc, 0x4a, 0x57, 0x45, 0xa7, 0x6b, - 0xee, 0x14, 0x76, 0x58, - 0xca, 0xb8, 0x7a, 0x40, 0x65, 0xd1, 0xee, 0xc7, 0x79, 0x68, 0x1b, 0x80, - 0xff, 0x57, 0x3e, 0xd6, - 0x5d, 0x7c, 0xca, 0x54, 0xcf, 0xcc, 0xe3, 0x07, 0xa5, 0x95, 0x91, 0xa8, - 0xd3, 0xba, 0x0a, 0x37, - 0x9d, 0x0b, 0x8e, 0xc0, 0xaf, 0xb0, 0xf1, 0x8a, 0x8b, 0xb8, 0x2d, 0x43, - 0xc2, 0xf9, 0x42, 0xb9, - 0x1e, 0x92, 0x42, 0xbf, 0x0f, 0x34, 0xc7, 0xde, 0xf9, 0xcf, 0x2a, 0xbd, - 0xf1, 0x3c, 0x9a, 0xe8, - 0xde, 0xe5, 0x06, 0x2b, 0x6f, 0x48, 0xd5, 0x53, 0xd7, 0xe2, 0x96, 0x56, - 0xe0, 0x7f, 0xd2, 0x66, - 0xdb, 0x63, 0x19, 0x41, 0x8c, 0xff, 0xab, 0x76, 0x1d, 0x21, 0x24, 0x82, - 0x97, 0x75, 0xe9, 0x4a, - 0x1b, 0x14, 0x5d, 0xd5, 0xec, 0x83, 0xb9, 0xfb, 0x33, 0x0c, 0x98, 0x69, - 0x86, 0x36, 0xa1, 0xc4, - 0x98, 0x8d, 0x91, 0xaa, 0x4c, 0x07, 0x8f, 0xaf, 0x41, 0x7b, 0x9f, 0x97, - 0xb5, 0xf3, 0x79, 0x95, - 0x58, 0xfa, 0xd5, 0x3e, 0x2c, 0x7b, 0x9d, 0x22, 0x6f, 0x56, 0x23, 0x7c, - 0xa4, 0xb0, 0x31, 0x1b, - 0x92, 0x42, 0xaf, 0x7e, 0x49, 0xaa, 0x73, 0xe5, 0x16, 0x3e, 0x38, 0xfc, - 0x5b, 0xe7, 0x0f, 0xcd, - 0x52, 0x35, 0xeb, 0xea, 0x29, 0xd6, 0x61, 0x68, 0x38, 0x13, 0x84, 0x17, - 0x4a, 0xa4, 0x47, 0x43, - 0xd1, 0xac, 0x27, 0x95, 0x89, 0x52, 0x57, 0x3c, 0x4a, 0x64, 0x83, 0xe9, - 0x79, 0x61, 0x9f, 0x12, - 0x11, 0xdb, 0x63, 0x01, 0xe9, 0x2e, 0x45, 0xb1, 0x64, 0x49, 0x3f, 0x02, - 0x68, 0x22, 0xd7, 0x9c, - 0x14, 0x5d, 0x7c, 0x6b, 0x0a, 0x99, 0x3b, 0x94, 0xae, 0x8a, 0x8d, 0xd6, - 0x1f, 0x28, 0xec, 0xb0, - 0xd4, 0x2a, 0x38, 0xff, 0x6a, 0xe5, 0x29, 0x19, 0x80, 0xa7, 0x31, 0x3d, - 0x0e, 0x6b, 0xa4, 0x3e, - 0x57, 0xb3, 0xf4, 0x80, 0xca, 0x61, 0x1f, 0x4d, 0xf2, 0xd0, 0x36, 0xc3, - 0x3d, 0xae, 0x7c, 0x6f, - 0x97, 0xc4, 0xb0, 0x14, 0xaa, 0x1d, 0x0d, 0xc0, 0xdc, 0xfd, 0x8a, 0x28, - 0x2c, 0xed, 0x34, 0xe1, - 0xba, 0xf8, 0x57, 0xa8, 0x5d, 0x5b, 0x05, 0x0e, 0x89, 0xe9, 0xe1, 0x93, - 0x65, 0xb7, 0x14, 0x6e, - 0x7a, 0x8f, 0x13, 0x3c, 0x3d, 0x27, 0x17, 0x83, 0xa7, 0xc4, 0x5d, 0x78, - 0x74, 0xf4, 0x5c, 0xe0, - 0xf9, 0x16, 0xdf, 0x43, 0x9d, 0xa3, 0x21, 0xd7, 0xd5, 0xb3, 0x5a, 0x86, - 0x47, 0x31, 0x84, 0xb1, - 0x39, 0x61, 0x9b, 0xd7, 0xfd, 0xdf, 0x33, 0x5a, 0xfb, 0x9e, 0xe6, 0x6d, - 0x56, 0x72, 0xcc, 0x3f, - 0x3c, 0xe7, 0x84, 0xbd, 0x1e, 0x68, 0x4d, 0x7f, 0x31, 0x5d, 0x54, 0xb9, - 0x21, 0x78, 0xf7, 0x13, - 0xfc, 0x90, 0xc0, 0x29, 0x7e, 0x14, 0x5f, 0xf2, 0x1f, 0x70, 0xe8, 0x52, - 0x30, 0x3b, 0xbf, 0x9d, - 0x7f, 0x09, 0x0c, 0x56, 0xde, 0x90, 0x69, 0xa6, 0x6d, 0x07, 0xef, 0xac, - 0x03, 0xfe, 0x67, 0xcc, - 0xbf, 0x7e, 0x48, 0xc2, 0xbe, 0xec, 0x7b, 0x2b, 0x43, 0x2a, 0x53, 0x47, - 0x12, 0xbd, 0x2f, 0x42, - 0x75, 0xc6, 0x32, 0x82, 0xdb, 0x3d, 0x95, 0xec, 0x3a, 0x42, 0x48, 0xc7, - 0xed, 0xea, 0x11, 0x94, - 0xb5, 0xb1, 0x76, 0x16, 0xbb, 0x41, 0x87, 0x61, 0x14, 0x6f, 0xf4, 0x2c, - 0xfc, 0xa9, 0x59, 0x1a, - 0x36, 0x28, 0xba, 0x69, 0x1b, 0xc5, 0xb1, 0x35, 0x66, 0x18, 0xf3, 0xd2, - 0xcf, 0x6c, 0x81, 0x4b, - 0xf6, 0x5f, 0xfe, 0xfd, 0x7b, 0xb9, 0xa3, 0xb8, 0x48, 0x35, 0x4f, 0x39, - 0xde, 0x2f, 0xc9, 0xc5, - 0xf3, 0xd9, 0xe1, 0x97, 0x98, 0x0e, 0xdd, 0x9d, 0x82, 0xf6, 0xfd, 0xed, - 0xa9, 0x25, 0xf2, 0xe9, - 0x33, 0xae, 0xa5, 0x03, 0xf8, 0x72, 0xcf, 0x10, 0xac, 0xdb, 0x41, 0x06, - 0xb8, 0x66, 0xba, 0x67, - 0xb0, 0x37, 0x69, 0x7c, 0x58, 0xf6, 0xf9, 0x44, 0xde, 0xac, 0x46, 0xf8, - 0x8b, 0xa3, 0x62, 0x36, - 0x70, 0x40, 0x2d, 0xe8, 0x38, 0x8a, 0xeb, 0xc9, 0xf0, 0x81, 0xfa, 0x13, - 0x9a, 0xe0, 0x2a, 0xb8, - 0xe7, 0x84, 0x9d, 0xfc, 0x92, 0x97, 0xe6, 0x09, 0x2c, 0x7c, 0x70, 0x3b, - 0xb6, 0x0d, 0x1e, 0x59, - 0x27, 0xf3, 0xd9, 0x68, 0xf2, 0xeb, 0xf4, 0x84, 0x02, 0x51, 0xcc, 0xd0, - 0xa7, 0x4e, 0x56, 0xd7, - 0xa4, 0x6a, 0x15, 0x17, 0x52, 0x6f, 0xc2, 0xd0, 0x70, 0x26, 0xcb, 0x2e, - 0x94, 0x8b, 0x8e, 0x86, - 0x64, 0x1d, 0x51, 0x83, 0x32, 0x13, 0xd0, 0x5d, 0x5e, 0x0b, 0x77, 0xc5, - 0x85, 0xc8, 0xc6, 0x08, - 0x61, 0x9b, 0x4e, 0xe9, 0xd1, 0xa4, 0xae, 0x78, 0x94, 0xc8, 0xc5, 0x11, - 0xf2, 0xc2, 0xfd, 0x24, - 0xa1, 0xec, 0x0a, 0x7d, 0xb1, 0xd8, 0xbc, 0xf5, 0xba, 0xe5, 0x79, 0xfa, - 0xe3, 0x81, 0xb5, 0xaa, - 0x22, 0x75, 0xc6, 0x02, 0x11, 0x5c, 0x8a, 0xa1, 0xc8, 0x92, 0x7e, 0x04, - 0xd0, 0x44, 0x6d, 0xfb, - 0xe2, 0x02, 0x82, 0x96, 0x71, 0x20, 0x98, 0x2c, 0xe6, 0xbf, 0xc2, 0xef, - 0xc1, 0x07, 0x25, 0x75, - 0x28, 0xba, 0xf8, 0xd6, 0x14, 0xf1, 0x76, 0xeb, 0x9f, 0xd7, 0xd9, 0x6f, - 0x3e, 0x50, 0x1b, 0xa3, - 0xe8, 0xcd, 0xbc, 0x42, 0x74, 0x8d, 0x64, 0x66, 0xb1, 0xfa, 0x65, 0x84, - 0x2f, 0x13, 0x53, 0x2d, - 0x6b, 0x54, 0x70, 0x3d, 0xd4, 0x09, 0x52, 0x32, 0xc3, 0x8d, 0x62, 0x7a, - 0x1c, 0xd6, 0x8b, 0x7c, - 0xab, 0x23, 0x34, 0xa9, 0xb4, 0x75, 0x40, 0xbf, 0xed, 0xa0, 0xde, 0x91, - 0x0d, 0x95, 0xc3, 0xf2, - 0xae, 0xa5, 0x2b, 0xc3, 0x57, 0xc2, 0x3e, 0x9a, 0x27, 0x63, 0x6c, 0x45, - 0x7a, 0x9f, 0xf8, 0xde, - 0x6e, 0xd2, 0x6f, 0x57, 0x37, 0xbe, 0x2c, 0x17, 0x09, 0x4e, 0xd0, 0xae, - 0x6b, 0xdc, 0xb0, 0x50, - 0xed, 0x4b, 0xa3, 0x28, 0x97, 0x3a, 0x1a, 0x43, 0x7b, 0x39, 0xd7, 0x50, - 0x58, 0x19, 0x68, 0x01, - 0x2d, 0x3c, 0xe7, 0xbc, 0xf7, 0x46, 0x08, 0xce, 0x55, 0x14, 0x6b, 0xbb, - 0x49, 0x5a, 0x20, 0x8f, - 0xb7, 0x33, 0xae, 0x93, 0xba, 0xb6, 0x0a, 0x1c, 0xd1, 0x11, 0x01, 0xe5, - 0xca, 0xad, 0x28, 0xdc, - 0x77, 0x44, 0xea, 0x07, 0xda, 0xca, 0x18, 0x91, 0xff, 0x3c, 0xbd, 0x0e, - 0xdb, 0xee, 0x60, 0x52, - 0xf4, 0xdd, 0x26, 0x78, 0x7a, 0x4e, 0x2e, 0xc5, 0x8d, 0x4b, 0xba, 0xf0, - 0xe8, 0x2b, 0xb8, 0x03, - 0x34, 0xaa, 0x62, 0xec, 0x1a, 0x32, 0x3c, 0x48, 0xa3, 0x66, 0x06, 0x1b, - 0xf9, 0x68, 0xf0, 0x8d, - 0x31, 0x2c, 0x7d, 0x86, 0xf9, 0x85, 0x42, 0x6d, 0x69, 0xa5, 0xb4, 0xcf, - 0x8e, 0x62, 0xcb, 0xa1, - 0xf1, 0x5b, 0x39, 0x12, 0x99, 0xf9, 0x50, 0xe0, 0x47, 0x88, 0x08, 0x24, - 0x9f, 0x21, 0x83, 0x2f, - 0x72, 0xc2, 0xf5, 0x6d, 0x39, 0x7d, 0x66, 0xb4, 0x35, 0xff, 0x0f, 0xda, - 0xac, 0xe4, 0x5b, 0x7e, - 0xb2, 0xb5, 0xb1, 0xf9, 0x59, 0x01, 0x74, 0x39, 0x1b, 0xd2, 0xb3, 0x31, - 0xbd, 0xa7, 0x13, 0xf0, - 0x78, 0x0d, 0xcb, 0xb9, 0x3c, 0xd0, 0x9a, 0xfe, 0x62, 0xba, 0xa8, 0xb1, - 0x42, 0xf0, 0x2d, 0x26, - 0xb8, 0x7a, 0x8f, 0x2d, 0x5c, 0xac, 0x88, 0x73, 0x4c, 0x97, 0x14, 0x5a, - 0x53, 0xb3, 0x65, 0xa8, - 0x3b, 0xe3, 0x43, 0x52, 0xfc, 0x28, 0xbe, 0x27, 0x3e, 0xe0, 0x13, 0xa4, - 0x60, 0x76, 0xbd, 0xf9, - 0xfb, 0x94, 0x07, 0xc6, 0x9c, 0x54, 0xac, 0xaa, 0x10, 0xcd, 0xaf, 0x4f, - 0x71, 0x35, 0xf5, 0x77, - 0xfe, 0x12, 0x18, 0xac, 0x7f, 0xe3, 0xd2, 0x8f, 0xda, 0x0e, 0x1d, 0x9b, - 0x06, 0x3f, 0xce, 0x5b, - 0x3e, 0x65, 0x5c, 0x38, 0x1f, 0x9f, 0xc0, 0x02, 0xf4, 0x23, 0xa1, 0x70, - 0x17, 0x7c, 0x86, 0xd5, - 0xbd, 0xfc, 0x90, 0x47, 0xbf, 0x1b, 0xf6, 0x56, 0x86, 0x54, 0xa6, 0x8e, - 0x24, 0xb9, 0x5e, 0x84, - 0x7d, 0x8b, 0xd4, 0xd3, 0xdf, 0x67, 0xe4, 0xdb, 0xa8, 0x79, 0x1a, 0x65, - 0x35, 0xfa, 0x16, 0x0a, - 0xea, 0x4f, 0x64, 0xc7, 0x75, 0x7a, 0xe9, 0x1b, 0x74, 0x84, 0x90, 0x4d, - 0x19, 0x17, 0x22, 0xeb, - 0x2a, 0x38, 0x20, 0x53, 0x15, 0x06, 0xfb, 0x96, 0x5a, 0xa9, 0x2c, 0xa6, - 0x08, 0x54, 0x6a, 0x65, - 0xa9, 0xa1, 0xec, 0x2c, 0xb5, 0x82, 0xcd, 0xc2, 0x28, 0xde, 0x2b, 0x58, - 0x3b, 0x91, 0xb2, 0x34, - 0x69, 0xd6, 0xa8, 0xb8, 0xd5, 0xfe, 0xdf, 0x4f, 0x06, 0xf3, 0x97, 0xb3, - 0x2a, 0xd2, 0xfa, 0xba, - 0x6c, 0x50, 0xb7, 0xd2, 0x36, 0x49, 0xa1, 0x6a, 0xcc, 0x30, 0x25, 0x67, - 0x5d, 0xd8, 0xc1, 0x96, - 0xac, 0x27, 0xf3, 0x46, 0x56, 0x35, 0xb3, 0xe7, 0xe2, 0x1d, 0x99, 0x8c, - 0x4c, 0x9b, 0x89, 0x18, - 0x2f, 0xbe, 0x3f, 0x39, 0xf6, 0xb1, 0x85, 0xb3, 0x90, 0x6a, 0x9e, 0x72, - 0x7f, 0x5e, 0x51, 0x49, - 0xef, 0xc9, 0x7b, 0xad, 0x96, 0xcd, 0x97, 0x3e, 0xbe, 0x47, 0x22, 0x99, - 0x6e, 0x1d, 0x19, 0xc7, - 0x25, 0x71, 0x01, 0xed, 0xf3, 0x1c, 0x79, 0xf9, 0xc7, 0x2f, 0x39, 0x19, - 0x91, 0x4a, 0x27, 0x11, - 0xe5, 0x06, 0x45, 0x79, 0x93, 0x60, 0x6b, 0x74, 0xe9, 0x02, 0x85, 0xf2, - 0x80, 0x09, 0x6f, 0x9f, - 0x66, 0x9f, 0x89, 0x06, 0x33, 0xe4, 0x5d, 0x20, 0x9b, 0x75, 0x82, 0x0c, - 0xb3, 0xcc, 0xb7, 0xce, - 0xa6, 0xe8, 0xcd, 0x92, 0x53, 0x98, 0x4f, 0xad, 0xb5, 0x58, 0x3e, 0xe7, - 0xa2, 0x8f, 0xff, 0x40, - 0xa3, 0x6e, 0xd2, 0xf8, 0xb0, 0x2f, 0x31, 0x88, 0x7f, 0x9b, 0x8c, 0x33, - 0xd5, 0x85, 0xc4, 0x6c, - 0x63, 0x19, 0x96, 0x6c, 0xd0, 0x53, 0x23, 0x05, 0x51, 0xb6, 0x30, 0xd8, - 0xc4, 0xc6, 0x8c, 0xe2, - 0xe0, 0x80, 0x5a, 0x13, 0x70, 0xd7, 0x15, 0x51, 0x23, 0xc1, 0x37, 0x26, - 0xf7, 0x03, 0x54, 0xb3, - 0x20, 0xf7, 0x1e, 0x87, 0x10, 0xab, 0x07, 0xdc, 0x0d, 0xec, 0x8b, 0xcd, - 0xe6, 0x40, 0x1c, 0x3d, - 0x0d, 0xcb, 0xf9, 0x3b, 0xe7, 0xed, 0x0f, 0x12, 0x58, 0xf8, 0xe0, 0x76, - 0xaf, 0x1a, 0x3c, 0xb2, - 0xcd, 0xbc, 0xbd, 0xaf, 0x87, 0x91, 0x1d, 0x9f, 0x76, 0xd5, 0x5c, 0x9d, - 0xbe, 0x59, 0x74, 0x3c, - 0x4e, 0x25, 0x71, 0xd0, 0x27, 0x15, 0x2b, 0xcb, 0x04, 0xa2, 0x5b, 0x63, - 0x8d, 0x9c, 0xac, 0x6d, - 0x8e, 0x52, 0x35, 0x44, 0x47, 0x69, 0x39, 0x46, 0x2a, 0x8f, 0xe7, 0x88, - 0x9c, 0xdf, 0xe4, 0xe3, - 0x8b, 0xd4, 0x2a, 0x2e, 0xa4, 0xde, 0x47, 0x63, 0xe0, 0x4c, 0x55, 0x5c, - 0xeb, 0xd5, 0xdf, 0xcf, - 0x4b, 0xa3, 0x6e, 0xba, 0xc4, 0xa2, 0x55, 0xee, 0xce, 0x61, 0xe9, 0xb7, - 0xfa, 0x96, 0x97, 0x41, - 0xc8, 0x3a, 0xa2, 0xc5, 0x64, 0x26, 0x63, 0xba, 0xbc, 0x16, 0xee, 0x49, - 0xc9, 0x53, 0x4f, 0x10, - 0x08, 0x4d, 0xe6, 0x51, 0x04, 0x5a, 0x71, 0x37, 0x92, 0x3b, 0x52, 0xa2, - 0xd8, 0x10, 0x07, 0x9e, - 0xc2, 0xf5, 0x9c, 0x11, 0x61, 0x8b, 0x9f, 0xf0, 0xeb, 0x53, 0x49, 0x22, - 0x27, 0x47, 0x39, 0x48, - 0x02, 0x82, 0xd8, 0x85, 0x01, 0xf7, 0x8d, 0x7d, 0xc5, 0x7e, 0xf5, 0xc9, - 0x36, 0x04, 0x71, 0xc6, - 0x81, 0x1b, 0x14, 0xfa, 0xa1, 0x73, 0xbb, 0x29, 0xb7, 0x09, 0xf2, 0x37, - 0x05, 0xc1, 0xa9, 0x97, - 0x41, 0x6c, 0x50, 0x6e, 0xc1, 0x0f, 0xa9, 0xa4, 0x99, 0x24, 0x4e, 0xdc, - 0x14, 0x82, 0xe1, 0x19, - 0x44, 0xea, 0x4f, 0x04, 0x22, 0xb8, 0xd7, 0x81, 0x53, 0xe7, 0xfc, 0x08, - 0x63, 0x88, 0xda, 0x35, - 0x84, 0x9d, 0x0b, 0x90, 0x42, 0xc4, 0xc5, 0x0c, 0x7d, 0xca, 0x40, 0xe3, - 0x72, 0xcb, 0x92, 0xbb, - 0x07, 0x04, 0xc7, 0xef, 0xe2, 0x40, 0xf3, 0x58, 0x0f, 0xbd, 0x47, 0x1d, - 0x41, 0x0e, 0x4a, 0xea, - 0xc7, 0x73, 0x83, 0x7b, 0x82, 0x3c, 0xe1, 0xd5, 0x21, 0x90, 0xfb, 0xf6, - 0x50, 0x4d, 0x02, 0x64, - 0x50, 0xb7, 0x33, 0x6f, 0x28, 0x21, 0xec, 0x15, 0xfd, 0x6d, 0x71, 0xde, - 0x7c, 0xa0, 0x36, 0x85, - 0x90, 0xc0, 0x77, 0xfb, 0x48, 0x5d, 0xfe, 0x98, 0xd3, 0x40, 0xcd, 0x35, - 0x6d, 0xe3, 0x7e, 0x0b, - 0x13, 0x59, 0xbb, 0x84, 0xe8, 0xd9, 0xc8, 0xcc, 0xa1, 0x37, 0xca, 0xcb, - 0x5e, 0x26, 0xa6, 0x5a, - 0xd3, 0x2e, 0xff, 0x10, 0x88, 0xa5, 0xda, 0x41, 0x8f, 0x1a, 0x76, 0x20, - 0x4f, 0x65, 0xee, 0xd4, - 0xd6, 0xa8, 0xe0, 0x7a, 0x6b, 0x12, 0xa4, 0x64, 0x45, 0xd9, 0xc4, 0xf4, - 0x38, 0x6f, 0xd5, 0xf8, - 0x16, 0xdf, 0xa4, 0xee, 0x0b, 0x6e, 0xb6, 0xe9, 0x6b, 0xf4, 0x78, 0x1f, - 0x29, 0x2c, 0x9d, 0x76, - 0x95, 0x46, 0x68, 0x91, 0xab, 0xea, 0x80, 0xbd, 0x19, 0x83, 0x7f, 0xe1, - 0x1a, 0xe9, 0x45, 0x27, - 0x55, 0x31, 0x2c, 0x05, 0xcb, 0x96, 0x92, 0x30, 0x37, 0xae, 0xc3, 0x0a, - 0x0b, 0xaa, 0x0d, 0xa9, - 0x9f, 0x89, 0x56, 0x45, 0xae, 0x47, 0x7c, 0xf7, 0x4e, 0xc6, 0xd8, 0x8a, - 0xf4, 0xfd, 0x33, 0x7f, - 0x5f, 0xfe, 0x12, 0xd1, 0xce, 0x3b, 0x6e, 0x7a, 0x60, 0xeb, 0x64, 0x61, - 0xe5, 0xbe, 0x7b, 0xf1, - 0xdc, 0x67, 0xde, 0xae, 0x6e, 0xbf, 0x58, 0x2e, 0x12, 0x9c, 0x63, 0x9f, - 0xd6, 0x7b, 0xa3, 0xa0, - 0x1c, 0x10, 0x9a, 0x3a, 0x0e, 0xc3, 0x4a, 0xa3, 0x3c, 0xb1, 0xdf, 0x74, - 0xc7, 0x38, 0xeb, 0x2e, - 0x19, 0x96, 0x85, 0x50, 0xed, 0x74, 0x34, 0x86, 0xf6, 0x72, 0x6d, 0xa0, - 0xb0, 0x32, 0xd0, 0x02, - 0xd9, 0xe1, 0xc1, 0xc4, 0x8d, 0x08, 0x26, 0x0b, 0xd8, 0x5f, 0xd1, 0x4b, - 0xa1, 0x71, 0x98, 0x8c, - 0x5a, 0x78, 0x0d, 0xbb, 0x2d, 0x8c, 0x10, 0x5f, 0xaa, 0x28, 0xd6, 0xb5, - 0x92, 0xb4, 0x40, 0xdd, - 0x9a, 0x0f, 0x49, 0x2f, 0x4d, 0xf0, 0x02, 0xd2, 0x84, 0x05, 0x6a, 0x5e, - 0x83, 0xf7, 0x08, 0x53, - 0xad, 0x66, 0x9f, 0xe5, 0xb7, 0xaf, 0x14, 0x38, 0x61, 0x22, 0x02, 0x09, - 0x57, 0x99, 0x50, 0x7b, - 0x6d, 0x11, 0xdb, 0x71, 0xd7, 0xd3, 0x06, 0xb5, 0x4f, 0x0f, 0xbe, 0xe2, - 0x46, 0xda, 0x18, 0xf5, - 0xee, 0x88, 0x17, 0x0e, 0x77, 0x57, 0x30, 0xe1, 0x3d, 0x78, 0xb9, 0x1c, - 0x75, 0x1f, 0xc0, 0xa4, - 0x2e, 0xff, 0x53, 0x9a, 0x17, 0x2b, 0x22, 0x6c, 0x13, 0x55, 0x05, 0xf7, - 0x64, 0x5c, 0x88, 0x2a, - 0x2b, 0x79, 0x4c, 0xf0, 0xf4, 0x9c, 0x5c, 0x49, 0xd9, 0x96, 0xb7, 0x23, - 0x13, 0x56, 0xb3, 0x06, - 0xeb, 0x0e, 0x08, 0x64, 0x94, 0xe0, 0x4e, 0xc4, 0xf7, 0xbb, 0x0b, 0xc8, - 0x02, 0x15, 0xfb, 0x88, - 0x68, 0x97, 0xc4, 0x1b, 0x34, 0x64, 0x78, 0x90, 0x85, 0xcc, 0x0c, 0x36, - 0x31, 0xd0, 0x23, 0xd9, - 0xa8, 0xe0, 0x80, 0x8f, 0x54, 0x18, 0x6a, 0x1d, 0xab, 0xe1, 0xb0, 0xdd, - 0x20, 0x93, 0x6b, 0x57, - 0x62, 0x58, 0xfa, 0xcf, 0x31, 0xc9, 0x84, 0xda, 0xd2, 0x89, 0xab, 0x5d, - 0xdf, 0xc4, 0x55, 0x81, - 0xa2, 0x2f, 0xbe, 0x5b, 0x51, 0xb5, 0x96, 0x57, 0xfc, 0xa4, 0x17, 0xb6, - 0xce, 0x87, 0x1d, 0x0f, - 0x21, 0xb6, 0x72, 0x24, 0xf1, 0x31, 0xa0, 0x03, 0x8e, 0xd3, 0x10, 0x48, - 0xfd, 0x42, 0xc5, 0x5e, - 0xe1, 0xc1, 0x36, 0xb0, 0x91, 0x4d, 0xb2, 0x8e, 0xa0, 0xfe, 0xac, 0xa3, - 0xec, 0x01, 0x8d, 0xd0, - 0xe4, 0x47, 0x29, 0xda, 0x72, 0xfa, 0xcc, 0xab, 0x6a, 0x3d, 0x1e, 0x77, - 0x9b, 0x0b, 0xb6, 0xfc, - 0x24, 0x30, 0x6d, 0x4e, 0x12, 0x86, 0xde, 0x26, 0x44, 0x10, 0xa2, 0x9c, - 0x8a, 0x48, 0xfe, 0x72, - 0xa7, 0xa9, 0xa1, 0x31, 0xb2, 0x02, 0xe8, 0x72, 0x36, 0x67, 0xa5, 0x62, - 0xb9, 0x8d, 0x26, 0x23, - 0x67, 0xde, 0xe5, 0xa5, 0xd2, 0x7e, 0xfa, 0xff, 0x18, 0x4a, 0x19, 0x89, - 0xa8, 0xce, 0x6e, 0xad, - 0xf0, 0x1a, 0x55, 0xb1, 0x78, 0x63, 0xf7, 0x3f, 0xc4, 0xb7, 0x93, 0xa1, - 0x84, 0x23, 0x5a, 0x4c, - 0x30, 0x6d, 0x11, 0x25, 0x18, 0x1f, 0xe5, 0xb2, 0xea, 0x9a, 0x2f, 0x4a, - 0x95, 0x60, 0x12, 0xc2, - 0xb3, 0xf4, 0xdd, 0x5a, 0xb8, 0x9b, 0xd3, 0xe6, 0x98, 0xed, 0x28, 0xb4, - 0xa6, 0xa5, 0xca, 0x93, - 0x73, 0x83, 0x99, 0xce, 0xd8, 0xe7, 0xc1, 0x6b, 0xb6, 0xc0, 0x94, 0x5f, - 0xb7, 0xe6, 0x82, 0x1d, - 0x76, 0x05, 0x86, 0xa4, 0x3b, 0x50, 0xbf, 0x4e, 0x7c, 0x03, 0x26, 0x8b, - 0xc0, 0xec, 0xb9, 0x31, - 0xb6, 0x72, 0xc2, 0x30, 0x5b, 0x2c, 0xad, 0xc3, 0x52, 0x2e, 0x9a, 0x60, - 0xd1, 0xaf, 0xf1, 0xbf, - 0x35, 0xeb, 0x0e, 0x4f, 0xfb, 0xa8, 0x9b, 0x97, 0x20, 0x59, 0x9d, 0x9e, - 0xe2, 0x6a, 0x29, 0xee, - 0xf5, 0x9c, 0x4a, 0xdb, 0x9b, 0xd4, 0x89, 0x1a, 0x0e, 0x74, 0x21, 0x75, - 0xf3, 0x29, 0x61, 0x60, - 0x3f, 0x24, 0x30, 0x9b, 0xfe, 0x05, 0x67, 0xdd, 0x77, 0x1c, 0x3a, 0xf5, - 0x0c, 0x7e, 0x5f, 0xb6, - 0xff, 0x53, 0x74, 0x0f, 0x9e, 0x79, 0x75, 0x50, 0x59, 0x31, 0x86, 0x1e, - 0x1d, 0x3d, 0x17, 0x38, - 0x7c, 0xca, 0xb8, 0x70, 0x3e, 0xfd, 0x43, 0x04, 0x2b, 0x46, 0x81, 0xe0, - 0x2e, 0xf8, 0xcf, 0x69, - 0xbc, 0xbd, 0xfc, 0xe4, 0x5e, 0x81, 0x51, 0x89, 0x05, 0x6b, 0x3d, 0x0b, - 0x3f, 0xbb, 0x87, 0xe7, - 0xb9, 0x3b, 0xe3, 0x8e, 0xbd, 0x36, 0x2f, 0xac, 0xcf, 0xa8, 0x8f, 0xdf, - 0x48, 0xb1, 0xbc, 0xcb, - 0x79, 0x4c, 0xa7, 0x1a, 0xdd, 0x4a, 0x3d, 0x21, 0xe1, 0x85, 0x33, 0x34, - 0x59, 0xf2, 0xf4, 0x45, - 0xfa, 0xd5, 0x6b, 0x65, 0x7d, 0xce, 0x0b, 0x75, 0x93, 0xf2, 0x34, 0xca, - 0x6a, 0x37, 0x2c, 0x14, - 0x3a, 0xa2, 0x2f, 0xf1, 0x1d, 0xb2, 0x19, 0xf8, 0xbd, 0xdf, 0x88, 0x21, - 0x7b, 0x74, 0x64, 0x9a, - 0x17, 0x9e, 0xc8, 0x4d, 0xea, 0xf4, 0x11, 0x36, 0xe8, 0xcb, 0xe3, 0x9a, - 0x32, 0x2e, 0x44, 0x15, - 0xd7, 0xe9, 0x8c, 0xd9, 0x8a, 0x88, 0x03, 0xbb, 0xc6, 0xe6, 0x5f, 0x71, - 0x23, 0x6d, 0x0c, 0x9b, - 0x54, 0x70, 0x40, 0xa6, 0x2a, 0x0c, 0x35, 0xef, 0xb4, 0x91, 0x58, 0x8f, - 0x10, 0xa8, 0xd4, 0xca, - 0x94, 0x07, 0x04, 0x32, 0x4a, 0x70, 0x27, 0x62, 0x9a, 0xbc, 0xe4, 0x64, - 0x01, 0xeb, 0x9c, 0x44, - 0x91, 0x81, 0x1b, 0x58, 0xa9, 0xc7, 0x59, 0x47, 0x50, 0x7f, 0x56, 0xb0, - 0x76, 0xe1, 0xa7, 0x68, - 0x51, 0xf6, 0x5f, 0xcc, 0xc9, 0xbb, 0x4b, 0xca, 0x7e, 0x52, 0xea, 0x5b, - 0x67, 0xa2, 0xef, 0xe6, - 0xd2, 0x6f, 0x93, 0xb3, 0x69, 0x3f, 0x7d, 0x9e, 0x0c, 0x25, 0xed, 0xa5, - 0x54, 0x67, 0x37, 0xb7, - 0x12, 0x18, 0xd7, 0x27, 0x09, 0x43, 0x6f, 0x13, 0x22, 0x08, 0x51, 0x4e, - 0x45, 0x24, 0x7f, 0x39, - 0xd8, 0xa0, 0xad, 0x67, 0x6c, 0x92, 0x81, 0xd4, 0x5b, 0x60, 0x4a, 0xce, - 0xba, 0x73, 0x41, 0xef, - 0x18, 0xd7, 0xe9, 0xf3, 0x0c, 0xee, 0x93, 0x59, 0x75, 0x4d, 0xf6, 0x25, - 0xab, 0x30, 0x09, 0x61, - 0x9b, 0x4e, 0x25, 0x8c, 0xac, 0x6a, 0xa5, 0x0d, 0x07, 0x3a, 0xf1, 0xdb, - 0x98, 0xf5, 0xd1, 0x30, - 0x5b, 0x39, 0x61, 0x18, 0xcc, 0x16, 0xb7, 0x80, 0x29, 0x17, 0x4d, 0x30, - 0x89, 0xb6, 0x99, 0xbe, - 0x5e, 0xbf, 0x7e, 0x72, 0x2f, 0xa1, 0xc9, 0xa5, 0xe3, 0xd4, 0xff, 0xe4, - 0xfe, 0xbc, 0xa2, 0x92, - 0x9e, 0xc8, 0x3a, 0xe6, 0x4f, 0xdd, 0xdb, 0x28, 0xcd, 0xf9, 0x43, 0x0f, - 0xef, 0xff, 0xea, 0x1c, - 0x1d, 0x51, 0xf6, 0x99, 0xef, 0x59, 0xed, 0x7c, 0xbf, 0x8e, 0x44, 0xf1, - 0xdc, 0x3a, 0x32, 0x4d, - 0xdd, 0x26, 0xb2, 0x0d, 0x8f, 0x25, 0xff, 0xf1, 0x91, 0xa3, 0xf8, 0x1a, - 0xcd, 0x79, 0x7a, 0xc3, - 0x4a, 0xe2, 0x02, 0x19, 0x25, 0x38, 0xf2, 0x31, 0x4d, 0x5e, 0x72, 0x32, - 0xe1, 0x94, 0x4e, 0x22, - 0x8a, 0x95, 0x46, 0x8d, 0x45, 0x44, 0xe0, 0xbc, 0x63, 0x73, 0xce, 0xd9, - 0xf0, 0xd7, 0x06, 0xac, - 0x09, 0x0c, 0x8a, 0xf2, 0xe5, 0xc0, 0xd6, 0xe8, 0x11, 0x04, 0xc9, 0x27, - 0xc3, 0x12, 0xde, 0xfd, - 0xc9, 0x7b, 0xce, 0x66, 0x85, 0xbc, 0xc4, 0x65, 0x3f, 0x29, 0x75, 0xcc, - 0xd2, 0x51, 0x96, 0x73, - 0xcc, 0xfd, 0xd1, 0x0c, 0x66, 0x0b, 0xba, 0x40, 0xf5, 0xea, 0xc7, 0x18, - 0xa5, 0x5b, 0xad, 0x5f, - 0x0c, 0x8a, 0x95, 0x98, 0x06, 0x77, 0xa8, 0xcd, 0xdb, 0xc7, 0x7b, 0xf3, - 0xb4, 0x18, 0xe5, 0xd1, - 0x8f, 0x13, 0x59, 0xe7, 0xa6, 0xf3, 0x9e, 0x99, 0xa9, 0xb0, 0x7c, 0x0d, - 0x87, 0xdd, 0x3d, 0x80, - 0x4f, 0x64, 0x1d, 0x73, 0xc6, 0x8f, 0x8c, 0x14, 0x87, 0x9d, 0xc0, 0xe6, - 0x96, 0x9e, 0x75, 0x0e, - 0x85, 0xdc, 0x67, 0x33, 0xa3, 0x5e, 0x62, 0xd3, 0xfe, 0xf5, 0xdb, 0x66, - 0x69, 0xc9, 0x4b, 0xd8, - 0x45, 0xab, 0x23, 0xa7, 0xc3, 0x22, 0x70, 0x5e, 0xd0, 0xd8, 0x67, 0x8d, - 0x78, 0x8a, 0x03, 0x56, - 0xc6, 0x32, 0xef, 0xd8, 0x63, 0xa6, 0x46, 0x0a, 0xa2, 0xaf, 0x60, 0x73, - 0x4b, 0x4f, 0xdb, 0x07, - 0x06, 0x45, 0xab, 0x4c, 0x03, 0xda, 0x54, 0x87, 0x8c, 0x82, 0xdc, 0x98, - 0x5a, 0x0c, 0x93, 0x89, - 0x03, 0xc3, 0xb4, 0x26, 0xe0, 0x6d, 0x2a, 0xa2, 0x46, 0x41, 0x6e, 0x4c, - 0x2d, 0x06, 0xa8, 0xa5, - 0xc3, 0xb4, 0xf0, 0xb2, 0x80, 0x11, 0x38, 0x2f, 0x68, 0x6c, 0xd2, 0xa7, - 0x3c, 0x45, 0xe0, 0x2b, - 0x40, 0x2d, 0x3c, 0xcd, 0x20, 0x95, 0x0e, 0x7b, 0x1a, 0x1b, 0xd5, 0x59, - 0x0f, 0x80, 0x38, 0x7a, - 0x80, 0x5a, 0x78, 0x59, 0x40, 0xe9, 0x1c, 0xf6, 0x34, 0x36, 0x69, 0xb2, - 0x1e, 0xc3, 0x70, 0xf4, - 0x1a, 0x55, 0x31, 0x76, 0x0d, 0x19, 0x1e, 0x24, 0xb0, 0x33, 0x03, 0xec, - 0x9d, 0x34, 0x78, 0xa7, - 0xda, 0x22, 0x75, 0xe2, 0x6d, 0x65, 0x0c, 0xa9, 0x9e, 0x1e, 0xbf, 0x07, - 0x8c, 0x77, 0x30, 0x29, - 0x59, 0xbb, 0xb9, 0x9d, 0xcd, 0xe1, 0x3a, 0xfd, 0xec, 0x69, 0xb8, 0xf9, - 0xbf, 0xb2, 0xe8, 0x78, - 0x99, 0xcc, 0xfd, 0x09, 0xad, 0x9d, 0x28, 0x70, 0xc2, 0x44, 0x04, 0x12, - 0xae, 0xf1, 0xa0, 0xf6, - 0x9c, 0x4a, 0xe2, 0x63, 0x4e, 0x2a, 0x56, 0x55, 0x08, 0x87, 0xb6, 0xc6, - 0xd9, 0xfb, 0x9b, 0xda, - 0x5c, 0x3d, 0xa6, 0xf7, 0x2e, 0x56, 0x44, 0xd8, 0x26, 0xaa, 0x0a, 0x2d, - 0xc8, 0xb8, 0xd3, 0x54, - 0xdf, 0xa4, 0x6a, 0x88, 0x8e, 0xd2, 0x72, 0x8c, 0x54, 0xdd, 0x0d, 0xd3, - 0xfb, 0x7d, 0x0b, 0x05, - 0x1f, 0xd3, 0x2e, 0x1c, 0xee, 0xae, 0x60, 0x01, 0x7a, 0xf0, 0xb1, 0x38, - 0xea, 0x3e, 0x43, 0x8b, - 0xd5, 0x6b, 0x54, 0x5c, 0x8b, 0x7f, 0x8e, 0xc6, 0x03, 0x98, 0xaa, 0xb8, - 0x15, 0x69, 0x7d, 0x5d, - 0x15, 0x1c, 0x10, 0xc8, 0xeb, 0x03, 0x9c, 0x4b, 0x2d, 0xb5, 0x16, 0x53, - 0x04, 0x2a, 0x35, 0xd3, - 0x96, 0x85, 0xdc, 0xb7, 0x4b, 0x87, 0xaa, 0x1f, 0x5f, 0xc2, 0x11, 0xad, - 0x37, 0xef, 0xed, 0x82, - 0x56, 0xf2, 0x98, 0x23, 0x2b, 0xfb, 0xb8, 0x92, 0x71, 0xef, 0xad, 0x46, - 0x26, 0xac, 0xa5, 0x0c, - 0x53, 0x74, 0x87, 0x49, 0xc8, 0x4c, 0xc6, 0xb7, 0xbb, 0x2c, 0x1f, 0x92, - 0x51, 0xa6, 0x9e, 0x20, - 0x93, 0x03, 0xc3, 0xdd, 0xa8, 0x30, 0xd4, 0x3a, 0x95, 0x01, 0xa3, 0x79, - 0x40, 0xe5, 0xd6, 0xae, - 0x10, 0x9a, 0x0f, 0xa2, 0x08, 0xb4, 0xe2, 0x6e, 0xe7, 0x76, 0xa4, 0x87, - 0x73, 0x20, 0x0e, 0xff, - 0xd0, 0xed, 0x4b, 0x36, 0x68, 0xc8, 0xf0, 0xe3, 0xc9, 0x5b, 0x18, 0x6c, - 0x62, 0x63, 0x46, 0x71, - 0x47, 0x29, 0xfb, 0x22, 0xc2, 0xd5, 0xfd, 0x23, 0x15, 0xa6, 0x92, 0x44, - 0x4e, 0x8e, 0x72, 0x90, - 0x87, 0x5e, 0xbf, 0xb6, 0xa2, 0xa9, 0xef, 0xae, 0x3b, 0x8b, 0x2e, 0xaf, - 0x5f, 0xcd, 0x3a, 0x1e, - 0x04, 0xc7, 0x73, 0xc9, 0x02, 0x2d, 0xd9, 0xfa, 0x49, 0xfc, 0x29, 0x51, - 0x6c, 0x08, 0xe2, 0x4f, - 0xc4, 0xb0, 0x37, 0x5d, 0x62, 0x51, 0xcb, 0x77, 0x67, 0xd1, 0x95, 0xba, - 0x7d, 0x4b, 0xaa, 0xc1, - 0xc1, 0x36, 0x28, 0x37, 0x81, 0xe6, 0xb5, 0x52, 0xad, 0x12, 0x27, 0x6e, - 0x0a, 0x41, 0x91, 0xed, - 0x01, 0x41, 0x6c, 0xa3, 0xe1, 0x9a, 0xa7, 0xdf, 0x83, 0x3f, 0x9b, 0x85, - 0x1b, 0x02, 0xd9, 0x63, - 0x82, 0xd8, 0xa0, 0xdc, 0x41, 0x1e, 0x91, 0x8b, 0xf1, 0x48, 0x9c, 0x7b, - 0x28, 0xc7, 0x01, 0x32, - 0x42, 0xaf, 0xe4, 0x48, 0x21, 0x62, 0x83, 0x06, 0xdf, 0x65, 0x20, 0x90, - 0x39, 0x84, 0x49, 0xbc, - 0x88, 0x17, 0x9e, 0x08, 0x44, 0xb3, 0x6d, 0xc1, 0xa6, 0x0d, 0x3b, 0x10, - 0xc6, 0xd3, 0x77, 0x6a, - 0x48, 0x60, 0xda, 0x9c, 0x24, 0xcf, 0x7f, 0x4c, 0x88, 0x20, 0x87, 0xfb, - 0xd7, 0x90, 0x3f, 0xe4, - 0xcb, 0xf9, 0x16, 0xe3, 0x84, 0x4b, 0x49, 0x18, 0xfa, 0x57, 0x80, 0x05, - 0xe4, 0x55, 0xe7, 0xb5, - 0x0b, 0x8e, 0x52, 0x77, 0xe4, 0x37, 0x5b, 0x95, 0xd4, 0x7a, 0x3c, 0xee, - 0xf5, 0x16, 0xaf, 0x3b, - 0x0e, 0x08, 0x4d, 0x1d, 0x07, 0x80, 0x25, 0xb0, 0x1e, 0xb9, 0x8e, 0x3a, - 0x82, 0x1c, 0x94, 0x17, - 0xce, 0x7f, 0x09, 0x89, 0x67, 0xfc, 0x37, 0x3d, 0x30, 0x94, 0x32, 0xd1, - 0x93, 0x5f, 0xdc, 0x99, - 0x4d, 0xe6, 0xc5, 0xf6, 0xc7, 0x78, 0x01, 0x69, 0x42, 0xe3, 0x35, 0x2f, - 0xa0, 0x9a, 0x04, 0xc8, - 0x8d, 0x91, 0x81, 0x62, 0xa7, 0x04, 0x13, 0xe4, 0x6c, 0xce, 0x89, 0xc4, - 0xb1, 0xd9, 0x4c, 0x46, - 0xa0, 0xad, 0x66, 0xde, 0x50, 0x42, 0x1b, 0x2a, 0x39, 0xda, 0xe2, 0x7f, - 0xf8, 0x83, 0x6c, 0xc9, - 0x60, 0xda, 0x22, 0x4a, 0x30, 0x3e, 0x09, 0xa7, 0x17, 0xf7, 0x5e, 0x94, - 0xe9, 0xc0, 0x24, 0x47, - 0xe3, 0x43, 0xee, 0x35, 0x90, 0xba, 0x3f, 0xf3, 0x65, 0x80, 0x59, 0x6a, - 0xda, 0x05, 0xfc, 0x16, - 0x23, 0x34, 0xaa, 0xa1, 0xf0, 0xc6, 0x2d, 0x7e, 0x4b, 0xad, 0xe5, 0x81, - 0xcb, 0x46, 0xb4, 0x98, - 0x26, 0xb2, 0xb5, 0xcb, 0x13, 0x71, 0x53, 0x5b, 0x81, 0x6e, 0x57, 0x55, - 0xbc, 0x4c, 0x8f, 0xb4, - 0xe6, 0xc5, 0xf1, 0x5f, 0x73, 0x0d, 0x41, 0xd6, 0xaf, 0x43, 0xeb, 0xbe, - 0xad, 0x0f, 0xc7, 0x3a, - 0x65, 0x5c, 0x3d, 0x20, 0xd3, 0x89, 0x77, 0x82, 0xdd, 0x34, 0xec, 0x40, - 0x9e, 0xca, 0x1f, 0x6b, - 0xa5, 0x2b, 0x79, 0xb4, 0xb3, 0xf5, 0x65, 0x0f, 0xf3, 0x19, 0x50, 0xab, - 0x8f, 0x89, 0x57, 0xe5, - 0x6f, 0x93, 0x03, 0xf4, 0xd6, 0x24, 0x8b, 0xc8, 0x8a, 0x71, 0x4b, 0x2b, - 0x70, 0xde, 0x69, 0x33, - 0xaf, 0xe4, 0x47, 0x60, 0xb6, 0x58, 0x99, 0x45, 0xa4, 0x5c, 0xf7, 0xc0, - 0x61, 0x9d, 0x21, 0xbd, - 0x2c, 0x7d, 0x8b, 0x1f, 0x16, 0xdc, 0xaf, 0x11, 0xd6, 0x2b, 0xf0, 0x3e, - 0x52, 0x58, 0xf9, 0xec, - 0xec, 0x0a, 0xcf, 0x8b, 0x76, 0xa0, 0xbd, 0x9c, 0xf8, 0x06, 0x4c, 0xd5, - 0x43, 0x1b, 0xb1, 0x62, - 0xe9, 0x8c, 0xd0, 0xe1, 0x95, 0x17, 0xc3, 0xb9, 0x32, 0xc5, 0xfe, 0x01, - 0x34, 0x11, 0x8a, 0x4e, - 0x29, 0xfb, 0x94, 0x75, 0xf5, 0x6b, 0xd1, 0x34, 0x1c, 0xe8, 0x42, 0xea, - 0x25, 0x52, 0xc2, 0xc0, - 0xaa, 0x62, 0x58, 0x0a, 0x55, 0xef, 0xe7, 0x60, 0x6e, 0x9f, 0x45, 0x14, - 0x16, 0x97, 0x1a, 0x91, - 0x6a, 0x15, 0x1c, 0x9e, 0x35, 0x93, 0xf5, 0xed, 0x40, 0xb2, 0xf9, 0xff, - 0x07, 0xd4, 0x52, 0x1f, - 0xfd, 0xd1, 0xac, 0x8a, 0x9f, 0x8e, 0xf8, 0x2d, 0x9c, 0x4f, 0x73, 0xd7, - 0x2b, 0x39, 0x66, 0xfe, - 0x3d, 0xa6, 0xe8, 0x1e, 0xff, 0xf2, 0xea, 0xa0, 0xb2, 0x62, 0xcf, 0x3c, - 0x3a, 0x7a, 0x2e, 0x70, - 0xbe, 0x3f, 0x24, 0x61, 0x5f, 0x76, 0xdc, 0xf4, 0xc0, 0x15, 0xc8, 0xc2, - 0x09, 0xbf, 0xf6, 0x21, - 0x7e, 0x48, 0x60, 0xf5, 0x3f, 0x0a, 0xce, 0x79, 0xee, 0x38, 0x74, 0x29, - 0x18, 0xfc, 0xbe, 0xaf, - 0x7b, 0xce, 0x7f, 0x9f, 0xdc, 0xbd, 0xb0, 0x5c, 0x24, 0xfb, 0xc6, 0xfd, - 0x6f, 0xf6, 0x85, 0x83, - 0xbb, 0xb9, 0x3b, 0x0b, 0xbc, 0xc1, 0xa2, 0xd1, 0x0a, 0xd6, 0x7a, 0x16, - 0x7e, 0xb5, 0xcd, 0x0d, - 0x38, 0x20, 0xf7, 0x74, 0x1c, 0x45, 0x94, 0x85, 0x78, 0xa1, 0x7d, 0xe8, - 0x4d, 0x70, 0x15, 0x5c, - 0xf8, 0x57, 0xb3, 0xe0, 0x7c, 0x39, 0x86, 0x08, 0x56, 0x8c, 0xc1, 0x03, - 0x5c, 0x33, 0x5d, 0xd2, - 0x32, 0xef, 0xc9, 0xa0, 0x19, 0xe8, 0x68, 0xcf, 0x2f, 0xe4, 0xda, 0x83, - 0xa3, 0x64, 0x63, 0x04, - 0xf2, 0x98, 0x8d, 0x34, 0x79, 0x94, 0x7a, 0x42, 0x01, 0xc9, 0x66, 0x68, - 0xb2, 0x27, 0x2b, 0x8a, - 0x71, 0x01, 0x41, 0x4b, 0xd9, 0x10, 0x4c, 0x16, 0x73, 0xbe, 0x61, 0x96, - 0x81, 0xe2, 0xf3, 0xdb, - 0xb1, 0x76, 0x05, 0xdf, 0xb9, 0x6c, 0x5e, 0x9b, 0x5d, 0x93, 0xdd, 0x7d, - 0x90, 0xa1, 0xbb, 0x55, - 0xb4, 0xf0, 0x1a, 0xb5, 0x5a, 0xdb, 0x20, 0xbe, 0x97, 0x50, 0x6f, 0xa9, - 0xe7, 0xab, 0x80, 0x79, - 0x74, 0x87, 0x5e, 0x21, 0x3a, 0xa7, 0x32, 0x33, 0xb9, 0x7d, 0xd3, 0x42, - 0xf6, 0xe8, 0xc8, 0xf7, - 0xf7, 0x1e, 0x92, 0x5e, 0x9a, 0x23, 0x04, 0x67, 0xcb, 0x0a, 0xd4, 0xbc, - 0xc5, 0x2d, 0x10, 0xa6, - 0x37, 0x69, 0xd6, 0xca, 0xfa, 0x5f, 0x16, 0xea, 0xe5, 0x27, 0x68, 0x57, - 0xd4, 0x6e, 0x58, 0x28, - }, - { /* 11 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0xc2, 0x5d, 0x97, 0xf3, 0xe9, 0x1a, 0x8d, 0xcb, 0xbb, 0x06, 0xc5, 0x20, - 0x1c, 0x68, 0x90, 0x93, - 0x47, 0xba, 0xed, 0x25, 0x11, 0x34, 0xd9, 0x55, 0xb5, 0x0c, 0x49, 0x40, - 0x38, 0xd0, 0xe3, 0xe5, - 0x85, 0xe7, 0x7a, 0xd6, 0xf8, 0x2e, 0x54, 0x9e, 0x0e, 0x0a, 0x8c, 0x60, - 0x24, 0xb8, 0x73, 0x76, - 0x8e, 0xb7, 0x19, 0x4a, 0x22, 0x68, 0x71, 0xaa, 0xa9, 0x18, 0x92, 0x80, - 0x70, 0x63, 0x05, 0x09, - 0x4c, 0xea, 0x8e, 0xb9, 0xcb, 0x72, 0xfc, 0x61, 0x12, 0x1e, 0x57, 0xa0, - 0x6c, 0x0b, 0x95, 0x9a, - 0xc9, 0x0d, 0xf4, 0x6f, 0x33, 0x5c, 0xa8, 0xff, 0x1c, 0x14, 0xdb, 0xc0, - 0x48, 0xb3, 0xe6, 0xec, - 0x0b, 0x50, 0x63, 0x9c, 0xda, 0x46, 0x25, 0x34, 0xa7, 0x12, 0x1e, 0xe0, - 0x54, 0xdb, 0x76, 0x7f, - 0xdf, 0xad, 0x32, 0x94, 0x44, 0xd0, 0xe2, 0x97, 0x91, 0x30, 0xe7, 0xc3, - 0xe0, 0xc6, 0x0a, 0x12, - 0x1d, 0xf0, 0xa5, 0x67, 0xad, 0xca, 0x6f, 0x5c, 0x2a, 0x36, 0x22, 0xe3, - 0xfc, 0xae, 0x9a, 0x81, - 0x98, 0x17, 0xdf, 0xb1, 0x55, 0xe4, 0x3b, 0xc2, 0x24, 0x3c, 0xae, 0x83, - 0xd8, 0x16, 0xe9, 0xf7, - 0x5a, 0x4a, 0x48, 0x42, 0xbc, 0xfe, 0xb6, 0x09, 0x9f, 0x3a, 0x6b, 0xa3, - 0xc4, 0x7e, 0x79, 0x64, - 0x51, 0x1a, 0x2b, 0xde, 0x66, 0xb8, 0x93, 0x3d, 0x38, 0x28, 0x75, 0x43, - 0x90, 0xa5, 0x0f, 0x1b, - 0x93, 0x47, 0xbc, 0x2d, 0x8f, 0xa2, 0x1e, 0xf6, 0x83, 0x2e, 0xb0, 0x63, - 0x8c, 0xcd, 0x9f, 0x88, - 0x16, 0xa0, 0xc6, 0xfb, 0x77, 0x8c, 0x4a, 0x68, 0x8d, 0x24, 0x3c, 0x03, - 0xa8, 0x75, 0xec, 0xfe, - 0xd4, 0xfd, 0x51, 0x08, 0x9e, 0x96, 0xc7, 0xa3, 0x36, 0x22, 0xf9, 0x23, - 0xb4, 0x1d, 0x7c, 0x6d, - 0x7d, 0x99, 0x64, 0xeb, 0x88, 0x63, 0x07, 0xed, 0xe1, 0x60, 0x0d, 0x45, - 0x03, 0x4f, 0x14, 0x24, - 0xbf, 0xc4, 0xf3, 0x18, 0x61, 0x79, 0x8a, 0x26, 0x5a, 0x66, 0xc8, 0x65, - 0x1f, 0x27, 0x84, 0xb7, - 0x3a, 0x23, 0x89, 0xce, 0x99, 0x57, 0xde, 0xb8, 0x54, 0x6c, 0x44, 0x05, - 0x3b, 0x9f, 0xf7, 0xc1, - 0xf8, 0x7e, 0x1e, 0x3d, 0x70, 0x4d, 0x53, 0x73, 0xef, 0x6a, 0x81, 0x25, - 0x27, 0xf7, 0x67, 0x52, - 0xf3, 0x2e, 0x7d, 0xa1, 0xaa, 0x0b, 0x76, 0x47, 0x48, 0x78, 0x9f, 0xc5, - 0x73, 0x2c, 0x11, 0x2d, - 0x31, 0x73, 0xea, 0x52, 0x43, 0x11, 0xfb, 0x8c, 0xf3, 0x7e, 0x5a, 0xe5, - 0x6f, 0x44, 0x81, 0xbe, - 0xb4, 0x94, 0x90, 0x84, 0xbb, 0x3f, 0xaf, 0x12, 0xfd, 0x74, 0xd6, 0x85, - 0x4b, 0xfc, 0xf2, 0xc8, - 0x76, 0xc9, 0x07, 0x77, 0x52, 0x25, 0x22, 0xd9, 0x46, 0x72, 0x13, 0xa5, - 0x57, 0x94, 0x62, 0x5b, - 0xa2, 0x34, 0x56, 0x7f, 0xcc, 0xb3, 0xe5, 0x7a, 0x70, 0x50, 0xea, 0x86, - 0xe3, 0x89, 0x1e, 0x36, - 0x60, 0x69, 0xc1, 0x8c, 0x25, 0xa9, 0x68, 0xb1, 0xcb, 0x56, 0x2f, 0xa6, - 0xff, 0xe1, 0x8e, 0xa5, - 0xe5, 0x8e, 0xbb, 0x5a, 0xdd, 0x87, 0x3c, 0x2f, 0xc5, 0x5c, 0xa3, 0xc6, - 0xdb, 0x59, 0xfd, 0xd3, - 0x27, 0xd3, 0x2c, 0xa9, 0x34, 0x9d, 0xb1, 0xe4, 0x7e, 0x5a, 0x66, 0xe6, - 0xc7, 0x31, 0x6d, 0x40, - 0x2c, 0x83, 0x4f, 0x35, 0xee, 0xdb, 0x94, 0xd0, 0xd9, 0x48, 0x78, 0x06, - 0x93, 0xea, 0x1b, 0x3f, - 0xee, 0xde, 0xd8, 0xc6, 0x07, 0xc1, 0x19, 0x1b, 0x62, 0x4e, 0xbd, 0x26, - 0x8f, 0x82, 0x8b, 0xac, - 0x6b, 0x39, 0xa2, 0x10, 0xff, 0xef, 0x4d, 0x85, 0x6c, 0x44, 0x31, 0x46, - 0xab, 0x3a, 0xf8, 0xda, - 0xa9, 0x64, 0x35, 0xe3, 0x16, 0xf5, 0xc0, 0x4e, 0xd7, 0x42, 0xf4, 0x66, - 0xb7, 0x52, 0x68, 0x49, - 0xfa, 0xf1, 0xc8, 0x15, 0xd3, 0xc6, 0x0e, 0x19, 0x01, 0xc0, 0x1a, 0x8a, - 0x06, 0x9e, 0x28, 0x48, - 0x38, 0xac, 0x5f, 0xe6, 0x3a, 0xdc, 0x83, 0xd2, 0xba, 0xc6, 0xdf, 0xaa, - 0x1a, 0xf6, 0xb8, 0xdb, - 0xbd, 0x4b, 0x25, 0x30, 0xc2, 0xf2, 0xd7, 0x4c, 0xb4, 0xcc, 0x53, 0xca, - 0x3e, 0x4e, 0xcb, 0xad, - 0x7f, 0x16, 0xb2, 0xc3, 0x2b, 0xe8, 0x5a, 0x87, 0x0f, 0xca, 0x96, 0xea, - 0x22, 0x26, 0x5b, 0x3e, - 0x74, 0x46, 0xd1, 0x5f, 0xf1, 0xae, 0x7f, 0xb3, 0xa8, 0xd8, 0x88, 0x0a, - 0x76, 0xfd, 0x2d, 0x41, - 0xb6, 0x1b, 0x46, 0xac, 0x18, 0xb4, 0xf2, 0x78, 0x13, 0xde, 0x4d, 0x2a, - 0x6a, 0x95, 0xbd, 0xd2, - 0x33, 0xfc, 0x3c, 0x7a, 0xe0, 0x9a, 0xa6, 0xe6, 0x1d, 0xd4, 0xc1, 0x4a, - 0x4e, 0x2d, 0xce, 0xa4, - 0xf1, 0xa1, 0xab, 0x89, 0x09, 0x80, 0x2b, 0x2d, 0xa6, 0xd2, 0x04, 0x6a, - 0x52, 0x45, 0x5e, 0x37, - 0x25, 0x5c, 0xfa, 0x81, 0x97, 0x16, 0xec, 0x8e, 0x90, 0xf0, 0xfd, 0x49, - 0xe6, 0x58, 0x22, 0x5a, - 0xe7, 0x01, 0x6d, 0x72, 0x7e, 0x0c, 0x61, 0x45, 0x2b, 0xf6, 0x38, 0x69, - 0xfa, 0x30, 0xb2, 0xc9, - 0x62, 0xe6, 0x17, 0xa4, 0x86, 0x22, 0x35, 0xdb, 0x25, 0xfc, 0xb4, 0x09, - 0xde, 0x88, 0xc1, 0xbf, - 0xa0, 0xbb, 0x80, 0x57, 0x6f, 0x38, 0xb8, 0x10, 0x9e, 0xfa, 0x71, 0x29, - 0xc2, 0xe0, 0x51, 0x2c, - 0xab, 0xeb, 0xe3, 0xcb, 0xb5, 0x7e, 0x9d, 0x24, 0x39, 0xe8, 0x6f, 0xc9, - 0x96, 0x3b, 0x27, 0x53, - 0x69, 0xb6, 0x74, 0x38, 0x5c, 0x64, 0x10, 0xef, 0x82, 0xee, 0xaa, 0xe9, - 0x8a, 0x53, 0xb7, 0xc0, - 0xec, 0x51, 0x0e, 0xee, 0xa4, 0x4a, 0x44, 0x71, 0x8c, 0xe4, 0x26, 0x89, - 0xae, 0xeb, 0xc4, 0xb6, - 0x2e, 0x0c, 0x99, 0x1d, 0x4d, 0x50, 0xc9, 0xba, 0x37, 0xe2, 0xe3, 0xa9, - 0xb2, 0x83, 0x54, 0x25, - 0x87, 0x68, 0xac, 0xfe, 0x5b, 0xa5, 0x09, 0xf4, 0xe0, 0xa0, 0x17, 0xcf, - 0x05, 0xd1, 0x3c, 0x6c, - 0x45, 0x35, 0x3b, 0x0d, 0xb2, 0xbf, 0x84, 0x3f, 0x5b, 0xa6, 0xd2, 0xef, - 0x19, 0xb9, 0xac, 0xff, - 0xc0, 0xd2, 0x41, 0xdb, 0x4a, 0x91, 0xd0, 0xa1, 0x55, 0xac, 0x5e, 0x8f, - 0x3d, 0x01, 0xdf, 0x89, - 0x02, 0x8f, 0xd6, 0x28, 0xa3, 0x8b, 0x5d, 0x6a, 0xee, 0xaa, 0x9b, 0xaf, - 0x21, 0x69, 0x4f, 0x1a, - 0x09, 0xdf, 0xb5, 0xb4, 0x79, 0xcd, 0x78, 0x5e, 0x49, 0xb8, 0x85, 0x4f, - 0x75, 0xb2, 0x39, 0x65, - 0xcb, 0x82, 0x22, 0x47, 0x90, 0xd7, 0xf5, 0x95, 0xf2, 0xbe, 0x40, 0x6f, - 0x69, 0xda, 0xa9, 0xf6, - 0x4e, 0x65, 0x58, 0x91, 0x68, 0xf9, 0xa1, 0x0b, 0xfc, 0xb4, 0xcc, 0x0f, - 0x4d, 0x62, 0xda, 0x80, - 0x8c, 0x38, 0xcf, 0x62, 0x81, 0xe3, 0x2c, 0xc0, 0x47, 0xb2, 0x09, 0x2f, - 0x51, 0x0a, 0x4a, 0x13, - 0x58, 0xc5, 0x9e, 0x6a, 0x1f, 0x75, 0xeb, 0x63, 0x71, 0x90, 0xf0, 0x0c, - 0xe5, 0x17, 0x36, 0x7e, - 0x9a, 0x98, 0x09, 0x99, 0xf6, 0x6f, 0x66, 0xa8, 0xca, 0x96, 0x35, 0x2c, - 0xf9, 0x7f, 0xa6, 0xed, - 0x1f, 0x7f, 0x73, 0x4f, 0x0e, 0x41, 0x32, 0x36, 0xc4, 0x9c, 0xb9, 0x4c, - 0xdd, 0xc7, 0xd5, 0x9b, - 0xdd, 0x22, 0xe4, 0xbc, 0xe7, 0x5b, 0xbf, 0xfd, 0x7f, 0x9a, 0x7c, 0x6c, - 0xc1, 0xaf, 0x45, 0x08, - 0xd6, 0x72, 0x87, 0x20, 0x3d, 0x1d, 0x9a, 0xc9, 0xd8, 0x88, 0x62, 0x8c, - 0x95, 0x74, 0x33, 0x77, - 0x14, 0x2f, 0x10, 0xd3, 0xd4, 0x07, 0x17, 0x02, 0x63, 0x8e, 0xa7, 0xac, - 0x89, 0x1c, 0xa3, 0xe4, - 0x91, 0xc8, 0x6a, 0x05, 0x2c, 0x29, 0x43, 0x9c, 0x6d, 0x84, 0x2b, 0xcc, - 0xad, 0xa4, 0xd0, 0x92, - 0x53, 0x95, 0xfd, 0xf6, 0xc5, 0x33, 0xce, 0x57, 0xd6, 0x82, 0xee, 0xec, - 0xb1, 0xcc, 0x40, 0x01, - 0x37, 0x21, 0x53, 0x2a, 0x65, 0x4f, 0x1c, 0x32, 0x02, 0x43, 0x34, 0xd7, - 0x0c, 0xff, 0x50, 0x90, - 0xf5, 0x7c, 0xc4, 0xd9, 0x8c, 0x55, 0x91, 0xf9, 0xb9, 0x45, 0xf1, 0xf7, - 0x10, 0x97, 0xc0, 0x03, - 0x70, 0x9b, 0xbe, 0x0f, 0x74, 0x7b, 0xc5, 0x67, 0xb7, 0x4f, 0x7d, 0x97, - 0x34, 0x2f, 0xb3, 0x75, - 0xb2, 0xc6, 0x29, 0xfc, 0x9d, 0x61, 0x48, 0xac, 0x0c, 0x49, 0xb8, 0xb7, - 0x28, 0x47, 0x23, 0xe6, - 0xb9, 0x96, 0x4a, 0x60, 0x47, 0x27, 0x6d, 0x98, 0xab, 0x5b, 0xa6, 0x57, - 0x7c, 0x9c, 0x55, 0x99, - 0x7b, 0xcb, 0xdd, 0x93, 0xae, 0x3d, 0xe0, 0x53, 0x10, 0x5d, 0x63, 0x77, - 0x60, 0xf4, 0xc5, 0x0a, - 0xfe, 0x2c, 0xa7, 0x45, 0x56, 0x13, 0xb4, 0xcd, 0x1e, 0x57, 0xef, 0x17, - 0x44, 0x4c, 0xb6, 0x7c, - 0x3c, 0x71, 0x30, 0xb6, 0xbf, 0x09, 0x39, 0x06, 0xa5, 0x51, 0x2a, 0x37, - 0x58, 0x24, 0x26, 0xef, - 0xe8, 0x8c, 0x61, 0xbe, 0x21, 0x9f, 0xfe, 0xa5, 0x93, 0x73, 0xd3, 0x14, - 0xec, 0x39, 0x5a, 0x82, - 0x2a, 0xd1, 0xf6, 0x4d, 0xc8, 0x85, 0x73, 0x6e, 0x28, 0x75, 0x16, 0x34, - 0xf0, 0x51, 0xca, 0x11, - 0xaf, 0x36, 0x8c, 0x9b, 0x30, 0xab, 0x27, 0xf0, 0x26, 0x7f, 0x9a, 0x54, - 0xd4, 0xe9, 0xb9, 0x67, - 0x6d, 0x6b, 0x1b, 0x68, 0xd9, 0xb1, 0xaa, 0x3b, 0x9d, 0x79, 0x5f, 0x74, - 0xc8, 0x81, 0x29, 0xf4, - 0x66, 0x3b, 0x78, 0xf4, 0x03, 0xf7, 0x8f, 0x0f, 0x3a, 0x6b, 0x41, 0x94, - 0x9c, 0x5a, 0x5f, 0x8b, - 0xa4, 0x66, 0xef, 0x07, 0xea, 0xed, 0x02, 0xc4, 0x81, 0x6d, 0x84, 0xb4, - 0x80, 0x32, 0xcf, 0x18, - 0x21, 0x81, 0x95, 0xd1, 0x12, 0xc3, 0x56, 0x5a, 0x8f, 0x67, 0x08, 0xd4, - 0xa4, 0x8a, 0xbc, 0x6e, - 0xe3, 0xdc, 0x02, 0x22, 0xfb, 0xd9, 0xdb, 0x91, 0x34, 0x61, 0xcd, 0xf4, - 0xb8, 0xe2, 0x2c, 0xfd, - 0x4a, 0xb8, 0x37, 0xc1, 0xed, 0x2c, 0x1b, 0xdf, 0xe3, 0x23, 0x39, 0x92, - 0x0f, 0xb0, 0x44, 0xb4, - 0x88, 0xe5, 0xa0, 0x32, 0x04, 0x36, 0x96, 0x14, 0x58, 0x25, 0xfc, 0xb2, - 0x13, 0xd8, 0xd4, 0x27, - 0x0d, 0x02, 0xda, 0xe4, 0xfc, 0x18, 0xc2, 0x8a, 0x56, 0x2f, 0x70, 0xd2, - 0x37, 0x60, 0xa7, 0x51, - 0xcf, 0x5f, 0x4d, 0x17, 0x15, 0x02, 0x4f, 0x41, 0xed, 0x29, 0xb5, 0xf2, - 0x2b, 0x08, 0x37, 0xc2, - 0xc4, 0x0f, 0x2e, 0x8b, 0xcf, 0x44, 0x6a, 0x75, 0x4a, 0x3b, 0xab, 0x12, - 0x7f, 0xd3, 0x41, 0xbd, - 0x06, 0x52, 0xb9, 0x78, 0x26, 0x5e, 0xe7, 0xbe, 0xf1, 0x3d, 0x6e, 0x32, - 0x63, 0xbb, 0xd1, 0x2e, - 0x83, 0xb5, 0xc3, 0xae, 0xde, 0x70, 0xb3, 0x20, 0xff, 0x37, 0xe2, 0x52, - 0x47, 0x03, 0xa2, 0x58, - 0x41, 0xe8, 0x54, 0x5d, 0x37, 0x6a, 0x3e, 0xeb, 0x44, 0x31, 0x27, 0x72, - 0x5b, 0x6b, 0x32, 0xcb, - 0x95, 0x15, 0x05, 0x55, 0xa9, 0xfc, 0xf9, 0x48, 0x72, 0x13, 0xde, 0x51, - 0xef, 0x76, 0x4e, 0xa6, - 0x57, 0x48, 0x92, 0xa6, 0x40, 0xe6, 0x74, 0x83, 0xc9, 0x15, 0x1b, 0x71, - 0xf3, 0x1e, 0xde, 0x35, - 0xd2, 0xaf, 0xe8, 0x70, 0xb8, 0xc8, 0x20, 0x1d, 0xc7, 0x1f, 0x97, 0x11, - 0xd7, 0xa6, 0xad, 0x43, - 0x10, 0xf2, 0x7f, 0x83, 0x51, 0xd2, 0xad, 0xd6, 0x7c, 0x19, 0x52, 0x31, - 0xcb, 0xce, 0x3d, 0xd0, - 0x1b, 0xa2, 0x1c, 0x1f, 0x8b, 0x94, 0x88, 0xe2, 0xdb, 0x0b, 0x4c, 0xd1, - 0x9f, 0x15, 0x4b, 0xaf, - 0xd9, 0xff, 0x8b, 0xec, 0x62, 0x8e, 0x05, 0x29, 0x60, 0x0d, 0x89, 0xf1, - 0x83, 0x7d, 0xdb, 0x3c, - 0x5c, 0x18, 0xf1, 0x3a, 0x9a, 0xa0, 0x51, 0xb7, 0x6e, 0x07, 0x05, 0x91, - 0xa7, 0xc5, 0xa8, 0x4a, - 0x9e, 0x45, 0x66, 0xc9, 0x73, 0xba, 0xdc, 0x7c, 0xd5, 0x01, 0xc0, 0xb1, - 0xbb, 0xad, 0x38, 0xd9, - 0xcd, 0xd0, 0x9b, 0x3f, 0xb6, 0x89, 0x12, 0x2b, 0x03, 0x83, 0x2e, 0x5d, - 0x0a, 0x61, 0x78, 0xd8, - 0x0f, 0x8d, 0x0c, 0xcc, 0x5f, 0x93, 0x9f, 0xe0, 0xb8, 0x85, 0xeb, 0x7d, - 0x16, 0x09, 0xe8, 0x4b, - 0x8a, 0x6a, 0x76, 0x1a, 0xa7, 0xbd, 0xcb, 0x7e, 0xb6, 0x8f, 0x67, 0x1d, - 0x32, 0xb1, 0x9b, 0x3d, - 0x48, 0x37, 0xe1, 0xe9, 0x4e, 0xa7, 0x46, 0xb5, 0x0d, 0x89, 0xa2, 0x3d, - 0x2e, 0xd9, 0x0b, 0xae, - 0x43, 0x67, 0x82, 0x75, 0x94, 0xe1, 0x63, 0x81, 0xaa, 0x9b, 0xbc, 0xdd, - 0x7a, 0x02, 0x7d, 0xd1, - 0x81, 0x3a, 0x15, 0x86, 0x7d, 0xfb, 0xee, 0x4a, 0x11, 0x9d, 0x79, 0xfd, - 0x66, 0x6a, 0xed, 0x42, - 0x04, 0xdd, 0x6f, 0x50, 0x85, 0xd5, 0xba, 0xd4, 0x1f, 0x97, 0xf5, 0x9d, - 0x42, 0xd2, 0x9e, 0x34, - 0xc6, 0x80, 0xf8, 0xa3, 0x6c, 0xcf, 0x37, 0x1f, 0xa4, 0x91, 0x30, 0xbd, - 0x5e, 0xba, 0x0e, 0xa7, - 0x12, 0x7d, 0xa9, 0xab, 0xf2, 0x59, 0xf0, 0xbc, 0x92, 0xb3, 0xc9, 0x9e, - 0xea, 0xa7, 0x72, 0xca, - 0xd0, 0x20, 0x3e, 0x58, 0x1b, 0x43, 0x7d, 0x77, 0x29, 0xb5, 0x0c, 0xbe, - 0xf6, 0xcf, 0xe2, 0x59, - 0x55, 0xc7, 0x44, 0x8e, 0xe3, 0x6d, 0x29, 0xe9, 0x27, 0xbf, 0x80, 0xde, - 0xd2, 0x77, 0x91, 0x2f, - 0x97, 0x9a, 0xd3, 0x7d, 0x0a, 0x77, 0xa4, 0x22, 0x9c, 0xb9, 0x45, 0xfe, - 0xce, 0x1f, 0x01, 0xbc, - 0x9c, 0xca, 0xb0, 0xe1, 0xd0, 0x31, 0x81, 0x16, 0x3b, 0xab, 0x5b, 0x1e, - 0x9a, 0xc4, 0x77, 0xc3, - 0x5e, 0x97, 0x27, 0x12, 0x39, 0x2b, 0x0c, 0xdd, 0x80, 0xad, 0x9e, 0x3e, - 0x86, 0xac, 0xe7, 0x50, - 0xdb, 0x70, 0x5d, 0xc4, 0xc1, 0x05, 0x58, 0x43, 0x8e, 0xa7, 0x12, 0x5e, - 0xa2, 0x14, 0x94, 0x26, - 0x19, 0x2d, 0xca, 0x37, 0x28, 0x1f, 0xd5, 0x88, 0x35, 0xa1, 0xd7, 0x7e, - 0xbe, 0x7c, 0x04, 0xb5, - 0xb0, 0x49, 0xff, 0xd4, 0x3e, 0xea, 0x15, 0xc6, 0xe2, 0xe3, 0x23, 0x18, - 0x09, 0x2e, 0x6c, 0xfc, - 0x72, 0x14, 0x68, 0x27, 0xd7, 0xf0, 0x98, 0x0d, 0x59, 0xe5, 0xe6, 0x38, - 0x15, 0x46, 0xfc, 0x6f, - 0xf7, 0xf3, 0x12, 0xf1, 0x2f, 0xde, 0xcc, 0x93, 0x57, 0xef, 0x6a, 0x58, - 0x31, 0xfe, 0x8f, 0x19, - 0x35, 0xae, 0x85, 0x02, 0xc6, 0xc4, 0x41, 0x58, 0xec, 0xe9, 0xaf, 0x78, - 0x2d, 0x96, 0x1f, 0x8a, - 0x3e, 0xfe, 0xe6, 0x9e, 0x1c, 0x82, 0x64, 0x6c, 0x4b, 0xfb, 0xb1, 0x98, - 0x79, 0x4d, 0x69, 0xf5, - 0xfc, 0xa3, 0x71, 0x6d, 0xf5, 0x98, 0xe9, 0xa7, 0xf0, 0xfd, 0x74, 0xb8, - 0x65, 0x25, 0xf9, 0x66, - 0x79, 0x44, 0x0b, 0xbb, 0x0d, 0xb6, 0xbd, 0x39, 0xfe, 0xf7, 0xf8, 0xd8, - 0x41, 0x9d, 0x8a, 0x10, - 0xbb, 0x19, 0x9c, 0x48, 0xe4, 0xac, 0x30, 0xf2, 0x45, 0xf1, 0x3d, 0xf8, - 0x5d, 0xf5, 0x1a, 0x83, - 0x6f, 0xe4, 0xcd, 0x40, 0x7a, 0x3a, 0xf7, 0x51, 0x73, 0xd3, 0xc4, 0xdb, - 0xe9, 0xe8, 0x66, 0xee, - 0xad, 0xb9, 0x5a, 0xb3, 0x93, 0x20, 0x7a, 0x9a, 0xc8, 0xd5, 0x01, 0xfb, - 0xf5, 0x80, 0xf6, 0x7d, - 0x28, 0x5e, 0x20, 0x65, 0x6b, 0x0e, 0x2e, 0x04, 0xc6, 0xdf, 0x8d, 0x9b, - 0xd1, 0x38, 0x85, 0x0b, - 0xea, 0x03, 0xb7, 0x96, 0x82, 0x14, 0xa3, 0xcf, 0x7d, 0xd9, 0x48, 0xbb, - 0xcd, 0x50, 0x15, 0x98, - 0xe1, 0x53, 0xd4, 0x0a, 0x58, 0x52, 0x86, 0xfb, 0xda, 0xcb, 0x56, 0x5b, - 0x99, 0x8b, 0x63, 0xe7, - 0x23, 0x0e, 0x43, 0xf9, 0xb1, 0x48, 0x0b, 0x30, 0x61, 0xcd, 0x93, 0x7b, - 0x85, 0xe3, 0xf3, 0x74, - 0xa6, 0xe9, 0x39, 0x2f, 0x49, 0x66, 0x5f, 0xae, 0x6f, 0xc7, 0x1f, 0x1b, - 0xa1, 0x5b, 0x80, 0x02, - 0x64, 0xb4, 0xae, 0xdc, 0xa0, 0x7c, 0xd2, 0x65, 0xd4, 0xc1, 0xda, 0x3b, - 0xbd, 0x33, 0x10, 0x91, - 0x6e, 0x42, 0xa6, 0x54, 0xca, 0x9e, 0x38, 0x64, 0x04, 0x86, 0x68, 0x6d, - 0x18, 0x3d, 0xa0, 0xe3, - 0xac, 0x1f, 0x31, 0xa7, 0x23, 0x84, 0xb5, 0xaf, 0xbf, 0x80, 0xad, 0x4d, - 0x04, 0x55, 0x30, 0x70, - 0x29, 0xf8, 0x4b, 0x71, 0xdb, 0xaa, 0xe1, 0x31, 0xb1, 0x8a, 0x21, 0x2d, - 0x20, 0xed, 0x43, 0x06, - 0xeb, 0xa5, 0xdc, 0x82, 0x32, 0xb0, 0x6c, 0xfa, 0x0a, 0x8c, 0xe4, 0x0d, - 0x3c, 0x85, 0xd3, 0x95, - 0xe0, 0xf5, 0xbf, 0x1e, 0xe8, 0xf6, 0x49, 0xce, 0xad, 0x9e, 0xfa, 0xed, - 0x68, 0x5e, 0xa5, 0xea, - 0x22, 0xa8, 0x28, 0xed, 0x01, 0xec, 0xc4, 0x05, 0x16, 0x98, 0x3f, 0xcd, - 0x74, 0x36, 0x35, 0x79, - 0xa7, 0x4f, 0x52, 0x3b, 0xf9, 0xc2, 0x90, 0x9b, 0x18, 0x92, 0xb3, 0xad, - 0x50, 0x8e, 0x46, 0x0f, - 0x65, 0x12, 0xc5, 0xc8, 0x10, 0xd8, 0x1d, 0x50, 0xa3, 0x94, 0x76, 0x8d, - 0x4c, 0xe6, 0xd6, 0x9c, - 0xb1, 0xef, 0x94, 0xc0, 0x8e, 0x4e, 0xda, 0xf3, 0x95, 0xb6, 0x8f, 0xae, - 0xf8, 0xfb, 0xaa, 0xf1, - 0x73, 0xb2, 0x03, 0x33, 0x67, 0x54, 0x57, 0x38, 0x2e, 0xb0, 0x4a, 0x8e, - 0xe4, 0x93, 0x3a, 0x62, - 0xf6, 0x55, 0x79, 0xe5, 0x9f, 0x7a, 0x03, 0xa6, 0x20, 0xba, 0xc6, 0xee, - 0xc0, 0x2b, 0x49, 0x14, - 0x34, 0x08, 0xee, 0x16, 0x76, 0x60, 0x8e, 0x6d, 0x9b, 0xbc, 0x03, 0xce, - 0xdc, 0x43, 0xd9, 0x87, - 0x3f, 0x58, 0x8d, 0x8a, 0xac, 0x26, 0xab, 0x59, 0x3c, 0xae, 0x1d, 0x2e, - 0x88, 0x98, 0xaf, 0xf8, - 0xfd, 0x05, 0x1a, 0x79, 0x45, 0x3c, 0x26, 0x92, 0x87, 0xa8, 0xd8, 0x0e, - 0x94, 0xf0, 0x3f, 0x6b, - 0x78, 0xe2, 0x60, 0xaf, 0xbd, 0x12, 0x72, 0x0c, 0x89, 0xa2, 0x54, 0x6e, - 0xb0, 0x48, 0x4c, 0x1d, - 0xba, 0xbf, 0xf7, 0x5c, 0x54, 0x08, 0xff, 0xc7, 0x32, 0xa4, 0x91, 0x4e, - 0xac, 0x20, 0xdc, 0x8e, - 0x13, 0xdb, 0xc2, 0xbf, 0x42, 0xfd, 0x3f, 0x89, 0xe5, 0xe6, 0x65, 0x28, - 0x1b, 0x72, 0xb4, 0xc7, - 0xd1, 0x86, 0x55, 0x4c, 0xab, 0xe7, 0xb2, 0x42, 0x5e, 0xe0, 0xa0, 0x08, - 0x07, 0x1a, 0x24, 0x54, - 0x54, 0x61, 0x2f, 0x9a, 0x53, 0xc9, 0xe6, 0xdc, 0x50, 0xea, 0x2c, 0x68, - 0x23, 0xa2, 0x57, 0x22, - 0x96, 0x3c, 0xb8, 0x69, 0xba, 0xd3, 0x6b, 0x17, 0xeb, 0xec, 0xe9, 0x48, - 0x3f, 0xca, 0xc7, 0xb1, - 0x9d, 0x6c, 0xdb, 0xf5, 0x60, 0x95, 0x4e, 0x23, 0x4c, 0xfe, 0xf7, 0xa8, - 0x6b, 0x11, 0xb1, 0xce, - 0x5f, 0x31, 0x4c, 0x06, 0x89, 0x8f, 0xc3, 0xe8, 0xf7, 0xf8, 0x32, 0x88, - 0x77, 0x79, 0x21, 0x5d, - 0xda, 0xd6, 0x36, 0xd0, 0x71, 0xa1, 0x97, 0x76, 0xf9, 0xf2, 0xbe, 0xe8, - 0x53, 0xc1, 0x52, 0x2b, - 0x18, 0x8b, 0xa1, 0x23, 0x98, 0xbb, 0x1a, 0xbd, 0x42, 0xf4, 0x7b, 0xc8, - 0x4f, 0xa9, 0xc2, 0xb8, - 0xcc, 0x76, 0xf0, 0x2b, 0x06, 0x2d, 0xdd, 0x1e, 0x74, 0xd6, 0x82, 0xeb, - 0xfb, 0xb4, 0xbe, 0xd5, - 0x0e, 0x2b, 0x67, 0xd8, 0xef, 0x37, 0x50, 0xd5, 0xcf, 0xd0, 0x47, 0xcb, - 0xe7, 0xdc, 0x2e, 0x46, - 0x8b, 0xcc, 0x1d, 0x0e, 0x17, 0x19, 0x04, 0x4b, 0xc1, 0xda, 0xcb, 0xab, - 0xc3, 0x64, 0x5d, 0x30, - 0x49, 0x91, 0x8a, 0xfd, 0xfe, 0x03, 0x89, 0x80, 0x7a, 0xdc, 0x0e, 0x8b, - 0xdf, 0x0c, 0xcd, 0xa3, - 0x42, 0xc1, 0xe9, 0x61, 0x24, 0x45, 0xac, 0xb4, 0xdd, 0xce, 0x10, 0x6b, - 0x8b, 0xd7, 0xbb, 0xdc, - 0x80, 0x9c, 0x7e, 0x92, 0xcd, 0x5f, 0x21, 0x7f, 0x66, 0xc8, 0xd5, 0x4b, - 0x97, 0xbf, 0x2b, 0x4f, - 0x05, 0x7b, 0x04, 0x44, 0x35, 0x71, 0x75, 0xe1, 0x68, 0xc2, 0x59, 0x2b, - 0xb3, 0x07, 0x58, 0x39, - 0xc7, 0x26, 0x93, 0xb7, 0xdc, 0x6b, 0xf8, 0x2a, 0xd3, 0xc4, 0x9c, 0x0b, - 0xaf, 0x6f, 0xc8, 0xaa, - 0x94, 0xb3, 0x6e, 0x41, 0x19, 0x58, 0x36, 0x7d, 0x05, 0x46, 0x72, 0xe7, - 0x1e, 0xa3, 0x88, 0xab, - 0x56, 0xee, 0xf9, 0xb2, 0xf0, 0x42, 0xbb, 0xb6, 0xbe, 0x40, 0xb7, 0xc7, - 0x02, 0xcb, 0x18, 0x38, - 0xd3, 0x09, 0x83, 0x64, 0x08, 0x6c, 0xef, 0x28, 0xb0, 0x4a, 0x3b, 0xa7, - 0x26, 0x73, 0x6b, 0x4e, - 0x11, 0x54, 0x14, 0x97, 0xe1, 0x76, 0x62, 0xe3, 0x0b, 0x4c, 0xfe, 0x87, - 0x3a, 0x1b, 0xfb, 0xdd, - 0x1a, 0x04, 0x77, 0x0b, 0x3b, 0x30, 0x47, 0xd7, 0xac, 0x5e, 0xe0, 0x67, - 0x6e, 0xc0, 0x8d, 0xa2, - 0xd8, 0x59, 0xe0, 0xf8, 0xd2, 0x2a, 0xca, 0x1c, 0x17, 0x58, 0x25, 0x47, - 0x72, 0xa8, 0x1d, 0x31, - 0x5d, 0xbe, 0x9a, 0x2e, 0x2a, 0x04, 0x9e, 0x82, 0x19, 0x52, 0xa9, 0x27, - 0x56, 0x10, 0x6e, 0x47, - 0x9f, 0xe3, 0x0d, 0xdd, 0xc3, 0x1e, 0x13, 0x49, 0xa2, 0x54, 0x6c, 0x07, - 0x4a, 0x78, 0xfe, 0xd4, - 0x4b, 0x1e, 0x5c, 0xd5, 0x5d, 0x88, 0xd4, 0xea, 0x94, 0x76, 0x95, 0x24, - 0xfe, 0x65, 0x82, 0xb9, - 0x89, 0x43, 0xcb, 0x26, 0xb4, 0x92, 0x59, 0x21, 0x2f, 0x70, 0x50, 0x04, - 0xe2, 0x0d, 0x12, 0x2a, - 0x0c, 0xa4, 0xb1, 0xf0, 0x4c, 0xbc, 0x0d, 0xbf, 0x21, 0x7a, 0xdc, 0x64, - 0xc6, 0xb5, 0x61, 0x5c, - 0xce, 0xf9, 0x26, 0x03, 0xa5, 0xa6, 0x80, 0x74, 0x9a, 0x7c, 0x19, 0x44, - 0xda, 0xdd, 0xf1, 0xcf, - 0xc5, 0xa9, 0x45, 0x9f, 0x7f, 0xe0, 0xa5, 0x40, 0x3d, 0x6e, 0x07, 0xa4, - 0x8e, 0x06, 0x87, 0xb0, - 0x07, 0xf4, 0xd2, 0x6c, 0x96, 0xfa, 0x28, 0x8b, 0x86, 0x68, 0xc2, 0x84, - 0x92, 0x6e, 0x17, 0x23, - 0x82, 0x13, 0xa8, 0xba, 0x6e, 0xd4, 0x7c, 0x15, 0x88, 0x62, 0x4e, 0xe4, - 0xb6, 0xd6, 0x64, 0x55, - 0x40, 0x4e, 0x3f, 0x49, 0x87, 0xce, 0xf1, 0xde, 0x33, 0x64, 0x8b, 0xc4, - 0xaa, 0xbe, 0xf4, 0xc6, - 0xe9, 0x2a, 0x0a, 0xaa, 0x91, 0x3b, 0x31, 0x90, 0xe4, 0x26, 0x7f, 0xa2, - 0x1d, 0xec, 0x9c, 0x8f, - 0x2b, 0x77, 0x9d, 0x59, 0x78, 0x21, 0xbc, 0x5b, 0x5f, 0x20, 0xba, 0x82, - 0x01, 0x84, 0x0c, 0x1c, - 0xae, 0x90, 0xe7, 0x8f, 0x80, 0x0f, 0xe8, 0xc5, 0x51, 0x2a, 0x36, 0xe2, - 0x25, 0x3c, 0x7f, 0x6a, - 0x6c, 0xcd, 0x70, 0x7c, 0x69, 0x15, 0x65, 0x0e, 0xea, 0x2c, 0xf3, 0xc2, - 0x39, 0x54, 0xef, 0xf9, - 0x67, 0x9d, 0x13, 0xe0, 0xb3, 0x53, 0x40, 0x3a, 0x4d, 0x3e, 0xed, 0x22, - 0x6d, 0x8f, 0x99, 0x86, - 0xa5, 0xc0, 0x84, 0x13, 0x5a, 0x49, 0xcd, 0xf1, 0xf6, 0x38, 0x28, 0x02, - 0x71, 0xe7, 0x09, 0x15, - 0x20, 0x27, 0xfe, 0xc5, 0xa2, 0x67, 0x99, 0x6f, 0xf8, 0x32, 0xa4, 0x62, - 0x55, 0x5f, 0x7a, 0x63, - 0xe2, 0x7a, 0x69, 0x36, 0x4b, 0x7d, 0x14, 0xa4, 0x43, 0x34, 0x61, 0x42, - 0x49, 0x37, 0xea, 0xf0, - 0x36, 0x87, 0x38, 0x3e, 0xd5, 0xeb, 0xd3, 0x07, 0x75, 0x16, 0x98, 0x61, - 0xfd, 0x2a, 0x96, 0x9d, - 0xf4, 0xda, 0xaf, 0xcd, 0x3c, 0xf1, 0x5e, 0xcc, 0xce, 0x10, 0x5d, 0x41, - 0xe1, 0x42, 0x06, 0x0e, - 0x71, 0x3d, 0xd5, 0x1b, 0xc4, 0xdf, 0x0a, 0x52, 0xc0, 0x1a, 0xd1, 0x21, - 0xc5, 0xfa, 0x75, 0x78, - 0xb3, 0x60, 0x42, 0xe8, 0x2d, 0xc5, 0x87, 0x99, 0x7b, 0x1c, 0x14, 0x01, - 0xd9, 0x92, 0xe5, 0xeb, - 0xb8, 0x30, 0x21, 0x74, 0xf7, 0x83, 0xa2, 0xad, 0xdc, 0x0e, 0x0a, 0xe1, - 0x8d, 0x49, 0x93, 0x94, - 0x7a, 0x6d, 0xb6, 0x87, 0x1e, 0x99, 0x2f, 0x66, 0x67, 0x08, 0xcf, 0xc1, - 0x91, 0x21, 0x03, 0x07, - 0xff, 0x8a, 0xcc, 0x51, 0xe6, 0xb7, 0x7b, 0xf8, 0x69, 0x02, 0x43, 0xa1, - 0xb5, 0x99, 0x70, 0x71, - 0x3d, 0xd7, 0x5b, 0xa2, 0x0f, 0xad, 0xf6, 0x33, 0xd2, 0x04, 0x86, 0x81, - 0xa9, 0xf1, 0xe0, 0xe2, - 0x59, 0x63, 0xf5, 0x7e, 0xaf, 0xd1, 0x24, 0x56, 0x06, 0xc5, 0x5c, 0xba, - 0x14, 0xc2, 0xf0, 0x73, - 0x9b, 0x3e, 0x62, 0x8d, 0x46, 0xcb, 0xa9, 0x9d, 0xbd, 0xc3, 0x99, 0x9a, - 0x08, 0xaa, 0x60, 0xe0, - 0x1e, 0xd9, 0x18, 0x5b, 0xbe, 0xe5, 0xfd, 0x03, 0xb3, 0xc9, 0x15, 0xfa, - 0x2c, 0x12, 0x13, 0x96, - 0xdc, 0x84, 0x8f, 0xa8, 0x57, 0xff, 0x70, 0xc8, 0x08, 0xcf, 0xd0, 0xda, - 0x30, 0x7a, 0x83, 0x05, - 0xd7, 0xd4, 0xec, 0x34, 0x8d, 0xb9, 0x55, 0xfc, 0xaf, 0xdd, 0xce, 0x3a, - 0x64, 0xa1, 0xf5, 0x7a, - 0x15, 0x89, 0x7b, 0xc7, 0x64, 0xa3, 0xd8, 0x37, 0x14, 0xdb, 0x0b, 0x1a, - 0x78, 0xc9, 0x65, 0xe9, - 0x90, 0x6e, 0x01, 0x11, 0x9c, 0x8d, 0x8c, 0xa9, 0x1a, 0xd1, 0x87, 0x7a, - 0x5c, 0x71, 0x16, 0x9f, - 0x52, 0x33, 0x96, 0xe2, 0x75, 0x97, 0x01, 0x62, 0xa1, 0xd7, 0x42, 0x5a, - 0x40, 0x19, 0x86, 0x0c, - 0x86, 0xce, 0xc7, 0xea, 0xeb, 0x01, 0xc6, 0xc1, 0x97, 0xf5, 0xbb, 0x79, - 0xf4, 0x04, 0xfa, 0x61, - 0x44, 0x93, 0x50, 0x19, 0x02, 0x1b, 0x4b, 0x0a, 0x2c, 0xf3, 0x7e, 0x59, - 0xe8, 0x6c, 0x6a, 0xf2, - 0xc1, 0x74, 0x2a, 0xcf, 0xfa, 0x35, 0x1f, 0x94, 0x22, 0xf9, 0xf2, 0x39, - 0xcc, 0xd4, 0x19, 0x84, - 0x03, 0x29, 0xbd, 0x3c, 0x13, 0x2f, 0x92, 0x5f, 0x99, 0xff, 0x37, 0x19, - 0xd0, 0xbc, 0x89, 0x17, - 0x08, 0x79, 0xde, 0xa0, 0xc9, 0x69, 0xb7, 0x6b, 0x3e, 0xed, 0x29, 0xf9, - 0x84, 0x67, 0xff, 0x68, - 0xca, 0x24, 0x49, 0x53, 0x20, 0x73, 0x3a, 0xa0, 0x85, 0xeb, 0xec, 0xd9, - 0x98, 0x0f, 0x6f, 0xfb, - 0x4f, 0xc3, 0x33, 0x85, 0xd8, 0x5d, 0x6e, 0x3e, 0x8b, 0xe1, 0x60, 0xb9, - 0xbc, 0xb7, 0x1c, 0x8d, - 0x8d, 0x9e, 0xa4, 0x76, 0x31, 0x47, 0xe3, 0xf5, 0x30, 0xe7, 0xa5, 0x99, - 0xa0, 0xdf, 0x8c, 0x1e, - 0x24, 0xfa, 0x91, 0x95, 0x27, 0xb2, 0x23, 0xbb, 0xe7, 0xa5, 0x51, 0xff, - 0x17, 0x8d, 0xe4, 0x57, - 0xe6, 0xa7, 0x06, 0x66, 0xce, 0xa8, 0xae, 0x70, 0x5c, 0xa3, 0x94, 0xdf, - 0x0b, 0xe5, 0x74, 0xc4, - 0x63, 0x40, 0x7c, 0xb0, 0x36, 0x86, 0xfa, 0xee, 0x52, 0xa9, 0x18, 0xbf, - 0x2f, 0x5d, 0x07, 0xb2, - 0xa1, 0x1d, 0xeb, 0x43, 0xdf, 0x9c, 0x77, 0x25, 0xe9, 0xaf, 0xdd, 0x9f, - 0x33, 0x35, 0x97, 0x21, - 0xaa, 0x4d, 0x88, 0xdf, 0x05, 0xda, 0x52, 0x11, 0x4e, 0xbd, 0xc3, 0x7f, - 0x67, 0xee, 0xe1, 0x5e, - 0x68, 0x10, 0x1f, 0x2c, 0xec, 0xc0, 0xdf, 0xda, 0xf5, 0xbb, 0x06, 0x5f, - 0x7b, 0x86, 0x71, 0xcd, - 0xed, 0xf7, 0x65, 0xfa, 0x14, 0xee, 0x8b, 0x44, 0xfb, 0xb1, 0x8a, 0x3f, - 0x5f, 0x3e, 0x02, 0xbb, - 0x2f, 0xaa, 0xf2, 0x09, 0xfd, 0xf4, 0x06, 0x8f, 0x40, 0xb7, 0x4f, 0x1f, - 0x43, 0x56, 0x92, 0x28, - 0xfb, 0x57, 0xa3, 0x01, 0x63, 0x62, 0xc1, 0x2c, 0x76, 0x95, 0xb6, 0x3c, - 0xf7, 0x4b, 0xee, 0x45, - 0x39, 0x0a, 0x34, 0xf2, 0x8a, 0x78, 0x4c, 0xe7, 0xcd, 0x93, 0x73, 0x1c, - 0xeb, 0x23, 0x7e, 0xd6, - 0xbc, 0xed, 0x4e, 0x24, 0x72, 0x56, 0x18, 0x79, 0xc3, 0x99, 0xff, 0x7c, - 0xcf, 0x9b, 0x0d, 0xa0, - 0x7e, 0xb0, 0xd9, 0xd7, 0x9b, 0x4c, 0x95, 0xb2, 0x78, 0x9f, 0x3a, 0x5c, - 0xd3, 0xf3, 0x9d, 0x33, - 0x75, 0xe0, 0xba, 0x4b, 0x41, 0x0a, 0xb0, 0x86, 0xdf, 0x8d, 0x24, 0xbc, - 0x87, 0x28, 0xeb, 0x4c, - 0xb7, 0xbd, 0x2d, 0xb8, 0xa8, 0x10, 0x3d, 0x4d, 0x64, 0x8b, 0xe1, 0x9c, - 0x9b, 0x40, 0x7b, 0xdf, - 0x32, 0x5a, 0x57, 0x6e, 0x50, 0x3e, 0x69, 0xd3, 0x6a, 0x81, 0x6d, 0xfc, - 0xbf, 0xf8, 0x08, 0xa9, - 0xf0, 0x07, 0xc0, 0x9d, 0xb9, 0x24, 0xe4, 0x18, 0xd1, 0x87, 0xa8, 0xdc, - 0xa3, 0x90, 0x98, 0x3a, - 0xa3, 0x92, 0x3d, 0x6b, 0x7c, 0x17, 0x2a, 0x4f, 0x07, 0x05, 0x46, 0x30, - 0x12, 0x5c, 0xd8, 0x3b, - 0x61, 0xcf, 0xaa, 0x98, 0x95, 0x0d, 0xa7, 0x84, 0xbc, 0x03, 0x83, 0x10, - 0x0e, 0x34, 0x48, 0xa8, - 0xe4, 0x28, 0xd0, 0x4e, 0x6d, 0x23, 0xf3, 0x1a, 0xb2, 0x09, 0x0f, 0x70, - 0x2a, 0x8c, 0x3b, 0xde, - 0x26, 0x75, 0x47, 0xbd, 0x84, 0x39, 0x7e, 0xd1, 0x09, 0x0f, 0xca, 0x50, - 0x36, 0xe4, 0xab, 0x4d, - 0x2d, 0x25, 0x24, 0x21, 0x5e, 0x7f, 0x5b, 0xe5, 0xae, 0x1d, 0xd4, 0xb0, - 0x62, 0x3f, 0xdd, 0x32, - 0xef, 0x78, 0xb3, 0xd2, 0xb7, 0x65, 0xd6, 0x2e, 0x15, 0x1b, 0x11, 0x90, - 0x7e, 0x57, 0x4d, 0xa1, - 0x6a, 0x9f, 0xc9, 0x04, 0x4f, 0x4b, 0x82, 0xb0, 0x1b, 0x11, 0x9d, 0xf0, - 0x5a, 0xef, 0x3e, 0xd7, - 0xa8, 0xc2, 0x5e, 0xf7, 0xa6, 0x51, 0x0f, 0x7b, 0xa0, 0x17, 0x58, 0xd0, - 0x46, 0x87, 0xae, 0x44, - 0x7c, 0x3f, 0x0f, 0xff, 0x38, 0xc7, 0xc8, 0xd8, 0x96, 0x35, 0xa1, 0xf3, - 0xf2, 0x9a, 0xd2, 0x29, - 0xbe, 0x62, 0x98, 0x0c, 0xd1, 0xdd, 0x45, 0x13, 0x2d, 0x33, 0x64, 0xd3, - 0xee, 0xf2, 0x42, 0xba, - 0x3b, 0x85, 0xe2, 0xda, 0x29, 0xf3, 0x11, 0x8d, 0x23, 0x39, 0xe8, 0xb3, - 0xca, 0x4a, 0x31, 0xcc, - 0xf9, 0xd8, 0x75, 0x29, 0xc0, 0xe9, 0x9c, 0x46, 0x98, 0x3f, 0x2d, 0x93, - 0xd6, 0x22, 0xa1, 0x5f, - 0xf2, 0x88, 0x16, 0xb5, 0x1a, 0xaf, 0xb9, 0x72, 0x3f, 0x2d, 0x33, 0x73, - 0x82, 0xf9, 0xd7, 0x20, - 0x30, 0xd5, 0x81, 0x46, 0xf3, 0xb5, 0x34, 0xb9, 0x84, 0x2b, 0xf6, 0x53, - 0x9e, 0x91, 0x47, 0xb3, - 0xb5, 0x32, 0xfb, 0x90, 0x0b, 0x9b, 0x60, 0x27, 0x8a, 0x21, 0x7a, 0x33, - 0xba, 0x29, 0x34, 0xc5, - 0x77, 0x6f, 0x6c, 0x63, 0xe2, 0x81, 0xed, 0xec, 0x31, 0x27, 0xbf, 0x13, - 0xa6, 0x41, 0xa4, 0x56, - 0xde, 0x0b, 0x59, 0x80, 0xf4, 0x74, 0x2d, 0xa2, 0xe6, 0x65, 0x4b, 0x75, - 0x11, 0x13, 0xcc, 0x1f, - 0x1c, 0x56, 0xce, 0x73, 0x1d, 0x6e, 0xa0, 0x69, 0x5d, 0x63, 0x8e, 0x55, - 0x0d, 0x7b, 0x5c, 0x8c, - 0x99, 0xb1, 0xb4, 0xa5, 0xe5, 0x40, 0xf4, 0xf7, 0x53, 0x69, 0x02, 0x35, - 0x29, 0xc3, 0x2f, 0xfa, - 0x5b, 0xec, 0x23, 0x56, 0x0c, 0x5a, 0x79, 0x3c, 0xe8, 0x6f, 0xc7, 0x15, - 0x35, 0xab, 0xbf, 0x69, - 0x50, 0xbc, 0x40, 0xca, 0xd6, 0x1c, 0x5c, 0x08, 0x4f, 0x7d, 0xd9, 0xf5, - 0x61, 0x70, 0xc9, 0x16, - 0x92, 0xe1, 0xd7, 0x39, 0x3f, 0x06, 0xd1, 0xc3, 0xf4, 0x7b, 0x1c, 0xd5, - 0x7d, 0x18, 0x59, 0x85, - 0x17, 0x06, 0xad, 0xef, 0xc7, 0x28, 0x85, 0x5d, 0xfa, 0x71, 0x90, 0xb5, - 0x59, 0xa0, 0x2a, 0xf3, - 0xd5, 0x5b, 0x3a, 0x1c, 0x2e, 0x32, 0x08, 0x96, 0x41, 0x77, 0x55, 0x95, - 0x45, 0xc8, 0xba, 0x60, - 0x01, 0xa6, 0x6b, 0x14, 0xb0, 0xa4, 0xcf, 0x35, 0x77, 0x55, 0xac, 0xb6, - 0xf1, 0xd5, 0xc6, 0x0d, - 0xc3, 0xfb, 0xfc, 0xe7, 0x59, 0xbe, 0x42, 0xfe, 0xcc, 0x53, 0x69, 0x96, - 0xed, 0xbd, 0x56, 0x9e, - 0x46, 0x1c, 0x86, 0x31, 0xa1, 0x90, 0x16, 0x60, 0xc2, 0x59, 0xe5, 0xf6, - 0xc9, 0x05, 0x25, 0xe8, - 0x84, 0x41, 0x11, 0xc2, 0x48, 0x8a, 0x9b, 0xab, 0x79, 0x5f, 0x20, 0xd6, - 0xd5, 0x6d, 0xb5, 0x7b, - 0x8f, 0x11, 0x72, 0x5e, 0x92, 0xcc, 0xbe, 0x9f, 0xde, 0x4d, 0x3e, 0x36, - 0x81, 0xb6, 0xc3, 0x04, - 0x4d, 0x4c, 0xe5, 0xad, 0x7b, 0xd6, 0x33, 0x54, 0x65, 0x4b, 0xfb, 0x16, - 0x9d, 0xde, 0x53, 0x97, - 0xc8, 0xab, 0x9f, 0x7b, 0x83, 0xf8, 0x67, 0xca, 0x6b, 0x41, 0x77, 0x76, - 0xb9, 0x66, 0x20, 0xe1, - 0x0a, 0xf6, 0x08, 0x88, 0x6a, 0xe2, 0xea, 0x01, 0xd0, 0x47, 0xb2, 0x56, - 0xa5, 0x0e, 0xb0, 0x72, - }, - { /* 12 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x10, 0x96, 0xca, 0xd9, 0x30, 0x68, 0x2f, 0x14, 0x1a, 0x17, 0x0c, 0xca, - 0x0c, 0x70, 0xda, 0xbf, - 0x20, 0xef, 0x57, 0x71, 0x60, 0xd0, 0x5e, 0x28, 0x34, 0x2e, 0x18, 0x57, - 0x18, 0xe0, 0x77, 0xbd, - 0x30, 0x79, 0x9d, 0xa8, 0x50, 0xb8, 0x71, 0x3c, 0x2e, 0x39, 0x14, 0x9d, - 0x14, 0x90, 0xad, 0x02, - 0x40, 0x1d, 0xae, 0xe2, 0xc0, 0x63, 0xbc, 0x50, 0x68, 0x5c, 0x30, 0xae, - 0x30, 0x03, 0xee, 0xb9, - 0x50, 0x8b, 0x64, 0x3b, 0xf0, 0x0b, 0x93, 0x44, 0x72, 0x4b, 0x3c, 0x64, - 0x3c, 0x73, 0x34, 0x06, - 0x60, 0xf2, 0xf9, 0x93, 0xa0, 0xb3, 0xe2, 0x78, 0x5c, 0x72, 0x28, 0xf9, - 0x28, 0xe3, 0x99, 0x04, - 0x70, 0x64, 0x33, 0x4a, 0x90, 0xdb, 0xcd, 0x6c, 0x46, 0x65, 0x24, 0x33, - 0x24, 0x93, 0x43, 0xbb, - 0x80, 0x3a, 0x9f, 0x07, 0x43, 0xc6, 0xbb, 0xa0, 0xd0, 0xb8, 0x60, 0x9f, - 0x60, 0x06, 0x1f, 0xb1, - 0x90, 0xac, 0x55, 0xde, 0x73, 0xae, 0x94, 0xb4, 0xca, 0xaf, 0x6c, 0x55, - 0x6c, 0x76, 0xc5, 0x0e, - 0xa0, 0xd5, 0xc8, 0x76, 0x23, 0x16, 0xe5, 0x88, 0xe4, 0x96, 0x78, 0xc8, - 0x78, 0xe6, 0x68, 0x0c, - 0xb0, 0x43, 0x02, 0xaf, 0x13, 0x7e, 0xca, 0x9c, 0xfe, 0x81, 0x74, 0x02, - 0x74, 0x96, 0xb2, 0xb3, - 0xc0, 0x27, 0x31, 0xe5, 0x83, 0xa5, 0x07, 0xf0, 0xb8, 0xe4, 0x50, 0x31, - 0x50, 0x05, 0xf1, 0x08, - 0xd0, 0xb1, 0xfb, 0x3c, 0xb3, 0xcd, 0x28, 0xe4, 0xa2, 0xf3, 0x5c, 0xfb, - 0x5c, 0x75, 0x2b, 0xb7, - 0xe0, 0xc8, 0x66, 0x94, 0xe3, 0x75, 0x59, 0xd8, 0x8c, 0xca, 0x48, 0x66, - 0x48, 0xe5, 0x86, 0xb5, - 0xf0, 0x5e, 0xac, 0x4d, 0xd3, 0x1d, 0x76, 0xcc, 0x96, 0xdd, 0x44, 0xac, - 0x44, 0x95, 0x5c, 0x0a, - 0xc3, 0x74, 0xfd, 0x0e, 0x86, 0x4f, 0xb5, 0x83, 0x63, 0xb3, 0xc0, 0xfd, - 0xc0, 0x0c, 0x3e, 0xa1, - 0xd3, 0xe2, 0x37, 0xd7, 0xb6, 0x27, 0x9a, 0x97, 0x79, 0xa4, 0xcc, 0x37, - 0xcc, 0x7c, 0xe4, 0x1e, - 0xe3, 0x9b, 0xaa, 0x7f, 0xe6, 0x9f, 0xeb, 0xab, 0x57, 0x9d, 0xd8, 0xaa, - 0xd8, 0xec, 0x49, 0x1c, - 0xf3, 0x0d, 0x60, 0xa6, 0xd6, 0xf7, 0xc4, 0xbf, 0x4d, 0x8a, 0xd4, 0x60, - 0xd4, 0x9c, 0x93, 0xa3, - 0x83, 0x69, 0x53, 0xec, 0x46, 0x2c, 0x09, 0xd3, 0x0b, 0xef, 0xf0, 0x53, - 0xf0, 0x0f, 0xd0, 0x18, - 0x93, 0xff, 0x99, 0x35, 0x76, 0x44, 0x26, 0xc7, 0x11, 0xf8, 0xfc, 0x99, - 0xfc, 0x7f, 0x0a, 0xa7, - 0xa3, 0x86, 0x04, 0x9d, 0x26, 0xfc, 0x57, 0xfb, 0x3f, 0xc1, 0xe8, 0x04, - 0xe8, 0xef, 0xa7, 0xa5, - 0xb3, 0x10, 0xce, 0x44, 0x16, 0x94, 0x78, 0xef, 0x25, 0xd6, 0xe4, 0xce, - 0xe4, 0x9f, 0x7d, 0x1a, - 0x43, 0x4e, 0x62, 0x09, 0xc5, 0x89, 0x0e, 0x23, 0xb3, 0x0b, 0xa0, 0x62, - 0xa0, 0x0a, 0x21, 0x10, - 0x53, 0xd8, 0xa8, 0xd0, 0xf5, 0xe1, 0x21, 0x37, 0xa9, 0x1c, 0xac, 0xa8, - 0xac, 0x7a, 0xfb, 0xaf, - 0x63, 0xa1, 0x35, 0x78, 0xa5, 0x59, 0x50, 0x0b, 0x87, 0x25, 0xb8, 0x35, - 0xb8, 0xea, 0x56, 0xad, - 0x73, 0x37, 0xff, 0xa1, 0x95, 0x31, 0x7f, 0x1f, 0x9d, 0x32, 0xb4, 0xff, - 0xb4, 0x9a, 0x8c, 0x12, - 0x03, 0x53, 0xcc, 0xeb, 0x05, 0xea, 0xb2, 0x73, 0xdb, 0x57, 0x90, 0xcc, - 0x90, 0x09, 0xcf, 0xa9, - 0x13, 0xc5, 0x06, 0x32, 0x35, 0x82, 0x9d, 0x67, 0xc1, 0x40, 0x9c, 0x06, - 0x9c, 0x79, 0x15, 0x16, - 0x23, 0xbc, 0x9b, 0x9a, 0x65, 0x3a, 0xec, 0x5b, 0xef, 0x79, 0x88, 0x9b, - 0x88, 0xe9, 0xb8, 0x14, - 0x33, 0x2a, 0x51, 0x43, 0x55, 0x52, 0xc3, 0x4f, 0xf5, 0x6e, 0x84, 0x51, - 0x84, 0x99, 0x62, 0xab, - 0x45, 0xe8, 0x39, 0x1c, 0xcf, 0x9e, 0xa9, 0xc5, 0xc6, 0xa5, 0x43, 0x39, - 0x43, 0x18, 0x7c, 0x81, - 0x55, 0x7e, 0xf3, 0xc5, 0xff, 0xf6, 0x86, 0xd1, 0xdc, 0xb2, 0x4f, 0xf3, - 0x4f, 0x68, 0xa6, 0x3e, - 0x65, 0x07, 0x6e, 0x6d, 0xaf, 0x4e, 0xf7, 0xed, 0xf2, 0x8b, 0x5b, 0x6e, - 0x5b, 0xf8, 0x0b, 0x3c, - 0x75, 0x91, 0xa4, 0xb4, 0x9f, 0x26, 0xd8, 0xf9, 0xe8, 0x9c, 0x57, 0xa4, - 0x57, 0x88, 0xd1, 0x83, - 0x05, 0xf5, 0x97, 0xfe, 0x0f, 0xfd, 0x15, 0x95, 0xae, 0xf9, 0x73, 0x97, - 0x73, 0x1b, 0x92, 0x38, - 0x15, 0x63, 0x5d, 0x27, 0x3f, 0x95, 0x3a, 0x81, 0xb4, 0xee, 0x7f, 0x5d, - 0x7f, 0x6b, 0x48, 0x87, - 0x25, 0x1a, 0xc0, 0x8f, 0x6f, 0x2d, 0x4b, 0xbd, 0x9a, 0xd7, 0x6b, 0xc0, - 0x6b, 0xfb, 0xe5, 0x85, - 0x35, 0x8c, 0x0a, 0x56, 0x5f, 0x45, 0x64, 0xa9, 0x80, 0xc0, 0x67, 0x0a, - 0x67, 0x8b, 0x3f, 0x3a, - 0xc5, 0xd2, 0xa6, 0x1b, 0x8c, 0x58, 0x12, 0x65, 0x16, 0x1d, 0x23, 0xa6, - 0x23, 0x1e, 0x63, 0x30, - 0xd5, 0x44, 0x6c, 0xc2, 0xbc, 0x30, 0x3d, 0x71, 0x0c, 0x0a, 0x2f, 0x6c, - 0x2f, 0x6e, 0xb9, 0x8f, - 0xe5, 0x3d, 0xf1, 0x6a, 0xec, 0x88, 0x4c, 0x4d, 0x22, 0x33, 0x3b, 0xf1, - 0x3b, 0xfe, 0x14, 0x8d, - 0xf5, 0xab, 0x3b, 0xb3, 0xdc, 0xe0, 0x63, 0x59, 0x38, 0x24, 0x37, 0x3b, - 0x37, 0x8e, 0xce, 0x32, - 0x85, 0xcf, 0x08, 0xf9, 0x4c, 0x3b, 0xae, 0x35, 0x7e, 0x41, 0x13, 0x08, - 0x13, 0x1d, 0x8d, 0x89, - 0x95, 0x59, 0xc2, 0x20, 0x7c, 0x53, 0x81, 0x21, 0x64, 0x56, 0x1f, 0xc2, - 0x1f, 0x6d, 0x57, 0x36, - 0xa5, 0x20, 0x5f, 0x88, 0x2c, 0xeb, 0xf0, 0x1d, 0x4a, 0x6f, 0x0b, 0x5f, - 0x0b, 0xfd, 0xfa, 0x34, - 0xb5, 0xb6, 0x95, 0x51, 0x1c, 0x83, 0xdf, 0x09, 0x50, 0x78, 0x07, 0x95, - 0x07, 0x8d, 0x20, 0x8b, - 0x86, 0x9c, 0xc4, 0x12, 0x49, 0xd1, 0x1c, 0x46, 0xa5, 0x16, 0x83, 0xc4, - 0x83, 0x14, 0x42, 0x20, - 0x96, 0x0a, 0x0e, 0xcb, 0x79, 0xb9, 0x33, 0x52, 0xbf, 0x01, 0x8f, 0x0e, - 0x8f, 0x64, 0x98, 0x9f, - 0xa6, 0x73, 0x93, 0x63, 0x29, 0x01, 0x42, 0x6e, 0x91, 0x38, 0x9b, 0x93, - 0x9b, 0xf4, 0x35, 0x9d, - 0xb6, 0xe5, 0x59, 0xba, 0x19, 0x69, 0x6d, 0x7a, 0x8b, 0x2f, 0x97, 0x59, - 0x97, 0x84, 0xef, 0x22, - 0xc6, 0x81, 0x6a, 0xf0, 0x89, 0xb2, 0xa0, 0x16, 0xcd, 0x4a, 0xb3, 0x6a, - 0xb3, 0x17, 0xac, 0x99, - 0xd6, 0x17, 0xa0, 0x29, 0xb9, 0xda, 0x8f, 0x02, 0xd7, 0x5d, 0xbf, 0xa0, - 0xbf, 0x67, 0x76, 0x26, - 0xe6, 0x6e, 0x3d, 0x81, 0xe9, 0x62, 0xfe, 0x3e, 0xf9, 0x64, 0xab, 0x3d, - 0xab, 0xf7, 0xdb, 0x24, - 0xf6, 0xf8, 0xf7, 0x58, 0xd9, 0x0a, 0xd1, 0x2a, 0xe3, 0x73, 0xa7, 0xf7, - 0xa7, 0x87, 0x01, 0x9b, - 0x06, 0xa6, 0x5b, 0x15, 0x0a, 0x17, 0xa7, 0xe6, 0x75, 0xae, 0xe3, 0x5b, - 0xe3, 0x12, 0x5d, 0x91, - 0x16, 0x30, 0x91, 0xcc, 0x3a, 0x7f, 0x88, 0xf2, 0x6f, 0xb9, 0xef, 0x91, - 0xef, 0x62, 0x87, 0x2e, - 0x26, 0x49, 0x0c, 0x64, 0x6a, 0xc7, 0xf9, 0xce, 0x41, 0x80, 0xfb, 0x0c, - 0xfb, 0xf2, 0x2a, 0x2c, - 0x36, 0xdf, 0xc6, 0xbd, 0x5a, 0xaf, 0xd6, 0xda, 0x5b, 0x97, 0xf7, 0xc6, - 0xf7, 0x82, 0xf0, 0x93, - 0x46, 0xbb, 0xf5, 0xf7, 0xca, 0x74, 0x1b, 0xb6, 0x1d, 0xf2, 0xd3, 0xf5, - 0xd3, 0x11, 0xb3, 0x28, - 0x56, 0x2d, 0x3f, 0x2e, 0xfa, 0x1c, 0x34, 0xa2, 0x07, 0xe5, 0xdf, 0x3f, - 0xdf, 0x61, 0x69, 0x97, - 0x66, 0x54, 0xa2, 0x86, 0xaa, 0xa4, 0x45, 0x9e, 0x29, 0xdc, 0xcb, 0xa2, - 0xcb, 0xf1, 0xc4, 0x95, - 0x76, 0xc2, 0x68, 0x5f, 0x9a, 0xcc, 0x6a, 0x8a, 0x33, 0xcb, 0xc7, 0x68, - 0xc7, 0x81, 0x1e, 0x2a, - 0x8a, 0x13, 0x72, 0x38, 0x5d, 0xff, 0x91, 0x49, 0x4f, 0x89, 0x86, 0x72, - 0x86, 0x30, 0xf8, 0xc1, - 0x9a, 0x85, 0xb8, 0xe1, 0x6d, 0x97, 0xbe, 0x5d, 0x55, 0x9e, 0x8a, 0xb8, - 0x8a, 0x40, 0x22, 0x7e, - 0xaa, 0xfc, 0x25, 0x49, 0x3d, 0x2f, 0xcf, 0x61, 0x7b, 0xa7, 0x9e, 0x25, - 0x9e, 0xd0, 0x8f, 0x7c, - 0xba, 0x6a, 0xef, 0x90, 0x0d, 0x47, 0xe0, 0x75, 0x61, 0xb0, 0x92, 0xef, - 0x92, 0xa0, 0x55, 0xc3, - 0xca, 0x0e, 0xdc, 0xda, 0x9d, 0x9c, 0x2d, 0x19, 0x27, 0xd5, 0xb6, 0xdc, - 0xb6, 0x33, 0x16, 0x78, - 0xda, 0x98, 0x16, 0x03, 0xad, 0xf4, 0x02, 0x0d, 0x3d, 0xc2, 0xba, 0x16, - 0xba, 0x43, 0xcc, 0xc7, - 0xea, 0xe1, 0x8b, 0xab, 0xfd, 0x4c, 0x73, 0x31, 0x13, 0xfb, 0xae, 0x8b, - 0xae, 0xd3, 0x61, 0xc5, - 0xfa, 0x77, 0x41, 0x72, 0xcd, 0x24, 0x5c, 0x25, 0x09, 0xec, 0xa2, 0x41, - 0xa2, 0xa3, 0xbb, 0x7a, - 0x0a, 0x29, 0xed, 0x3f, 0x1e, 0x39, 0x2a, 0xe9, 0x9f, 0x31, 0xe6, 0xed, - 0xe6, 0x36, 0xe7, 0x70, - 0x1a, 0xbf, 0x27, 0xe6, 0x2e, 0x51, 0x05, 0xfd, 0x85, 0x26, 0xea, 0x27, - 0xea, 0x46, 0x3d, 0xcf, - 0x2a, 0xc6, 0xba, 0x4e, 0x7e, 0xe9, 0x74, 0xc1, 0xab, 0x1f, 0xfe, 0xba, - 0xfe, 0xd6, 0x90, 0xcd, - 0x3a, 0x50, 0x70, 0x97, 0x4e, 0x81, 0x5b, 0xd5, 0xb1, 0x08, 0xf2, 0x70, - 0xf2, 0xa6, 0x4a, 0x72, - 0x4a, 0x34, 0x43, 0xdd, 0xde, 0x5a, 0x96, 0xb9, 0xf7, 0x6d, 0xd6, 0x43, - 0xd6, 0x35, 0x09, 0xc9, - 0x5a, 0xa2, 0x89, 0x04, 0xee, 0x32, 0xb9, 0xad, 0xed, 0x7a, 0xda, 0x89, - 0xda, 0x45, 0xd3, 0x76, - 0x6a, 0xdb, 0x14, 0xac, 0xbe, 0x8a, 0xc8, 0x91, 0xc3, 0x43, 0xce, 0x14, - 0xce, 0xd5, 0x7e, 0x74, - 0x7a, 0x4d, 0xde, 0x75, 0x8e, 0xe2, 0xe7, 0x85, 0xd9, 0x54, 0xc2, 0xde, - 0xc2, 0xa5, 0xa4, 0xcb, - 0x49, 0x67, 0x8f, 0x36, 0xdb, 0xb0, 0x24, 0xca, 0x2c, 0x3a, 0x46, 0x8f, - 0x46, 0x3c, 0xc6, 0x60, - 0x59, 0xf1, 0x45, 0xef, 0xeb, 0xd8, 0x0b, 0xde, 0x36, 0x2d, 0x4a, 0x45, - 0x4a, 0x4c, 0x1c, 0xdf, - 0x69, 0x88, 0xd8, 0x47, 0xbb, 0x60, 0x7a, 0xe2, 0x18, 0x14, 0x5e, 0xd8, - 0x5e, 0xdc, 0xb1, 0xdd, - 0x79, 0x1e, 0x12, 0x9e, 0x8b, 0x08, 0x55, 0xf6, 0x02, 0x03, 0x52, 0x12, - 0x52, 0xac, 0x6b, 0x62, - 0x09, 0x7a, 0x21, 0xd4, 0x1b, 0xd3, 0x98, 0x9a, 0x44, 0x66, 0x76, 0x21, - 0x76, 0x3f, 0x28, 0xd9, - 0x19, 0xec, 0xeb, 0x0d, 0x2b, 0xbb, 0xb7, 0x8e, 0x5e, 0x71, 0x7a, 0xeb, - 0x7a, 0x4f, 0xf2, 0x66, - 0x29, 0x95, 0x76, 0xa5, 0x7b, 0x03, 0xc6, 0xb2, 0x70, 0x48, 0x6e, 0x76, - 0x6e, 0xdf, 0x5f, 0x64, - 0x39, 0x03, 0xbc, 0x7c, 0x4b, 0x6b, 0xe9, 0xa6, 0x6a, 0x5f, 0x62, 0xbc, - 0x62, 0xaf, 0x85, 0xdb, - 0xc9, 0x5d, 0x10, 0x31, 0x98, 0x76, 0x9f, 0x6a, 0xfc, 0x82, 0x26, 0x10, - 0x26, 0x3a, 0xd9, 0xd1, - 0xd9, 0xcb, 0xda, 0xe8, 0xa8, 0x1e, 0xb0, 0x7e, 0xe6, 0x95, 0x2a, 0xda, - 0x2a, 0x4a, 0x03, 0x6e, - 0xe9, 0xb2, 0x47, 0x40, 0xf8, 0xa6, 0xc1, 0x42, 0xc8, 0xac, 0x3e, 0x47, - 0x3e, 0xda, 0xae, 0x6c, - 0xf9, 0x24, 0x8d, 0x99, 0xc8, 0xce, 0xee, 0x56, 0xd2, 0xbb, 0x32, 0x8d, - 0x32, 0xaa, 0x74, 0xd3, - 0x89, 0x40, 0xbe, 0xd3, 0x58, 0x15, 0x23, 0x3a, 0x94, 0xde, 0x16, 0xbe, - 0x16, 0x39, 0x37, 0x68, - 0x99, 0xd6, 0x74, 0x0a, 0x68, 0x7d, 0x0c, 0x2e, 0x8e, 0xc9, 0x1a, 0x74, - 0x1a, 0x49, 0xed, 0xd7, - 0xa9, 0xaf, 0xe9, 0xa2, 0x38, 0xc5, 0x7d, 0x12, 0xa0, 0xf0, 0x0e, 0xe9, - 0x0e, 0xd9, 0x40, 0xd5, - 0xb9, 0x39, 0x23, 0x7b, 0x08, 0xad, 0x52, 0x06, 0xba, 0xe7, 0x02, 0x23, - 0x02, 0xa9, 0x9a, 0x6a, - 0xcf, 0xfb, 0x4b, 0x24, 0x92, 0x61, 0x38, 0x8c, 0x89, 0x2c, 0xc5, 0x4b, - 0xc5, 0x28, 0x84, 0x40, - 0xdf, 0x6d, 0x81, 0xfd, 0xa2, 0x09, 0x17, 0x98, 0x93, 0x3b, 0xc9, 0x81, - 0xc9, 0x58, 0x5e, 0xff, - 0xef, 0x14, 0x1c, 0x55, 0xf2, 0xb1, 0x66, 0xa4, 0xbd, 0x02, 0xdd, 0x1c, - 0xdd, 0xc8, 0xf3, 0xfd, - 0xff, 0x82, 0xd6, 0x8c, 0xc2, 0xd9, 0x49, 0xb0, 0xa7, 0x15, 0xd1, 0xd6, - 0xd1, 0xb8, 0x29, 0x42, - 0x8f, 0xe6, 0xe5, 0xc6, 0x52, 0x02, 0x84, 0xdc, 0xe1, 0x70, 0xf5, 0xe5, - 0xf5, 0x2b, 0x6a, 0xf9, - 0x9f, 0x70, 0x2f, 0x1f, 0x62, 0x6a, 0xab, 0xc8, 0xfb, 0x67, 0xf9, 0x2f, - 0xf9, 0x5b, 0xb0, 0x46, - 0xaf, 0x09, 0xb2, 0xb7, 0x32, 0xd2, 0xda, 0xf4, 0xd5, 0x5e, 0xed, 0xb2, - 0xed, 0xcb, 0x1d, 0x44, - 0xbf, 0x9f, 0x78, 0x6e, 0x02, 0xba, 0xf5, 0xe0, 0xcf, 0x49, 0xe1, 0x78, - 0xe1, 0xbb, 0xc7, 0xfb, - 0x4f, 0xc1, 0xd4, 0x23, 0xd1, 0xa7, 0x83, 0x2c, 0x59, 0x94, 0xa5, 0xd4, - 0xa5, 0x2e, 0x9b, 0xf1, - 0x5f, 0x57, 0x1e, 0xfa, 0xe1, 0xcf, 0xac, 0x38, 0x43, 0x83, 0xa9, 0x1e, - 0xa9, 0x5e, 0x41, 0x4e, - 0x6f, 0x2e, 0x83, 0x52, 0xb1, 0x77, 0xdd, 0x04, 0x6d, 0xba, 0xbd, 0x83, - 0xbd, 0xce, 0xec, 0x4c, - 0x7f, 0xb8, 0x49, 0x8b, 0x81, 0x1f, 0xf2, 0x10, 0x77, 0xad, 0xb1, 0x49, - 0xb1, 0xbe, 0x36, 0xf3, - 0x0f, 0xdc, 0x7a, 0xc1, 0x11, 0xc4, 0x3f, 0x7c, 0x31, 0xc8, 0x95, 0x7a, - 0x95, 0x2d, 0x75, 0x48, - 0x1f, 0x4a, 0xb0, 0x18, 0x21, 0xac, 0x10, 0x68, 0x2b, 0xdf, 0x99, 0xb0, - 0x99, 0x5d, 0xaf, 0xf7, - 0x2f, 0x33, 0x2d, 0xb0, 0x71, 0x14, 0x61, 0x54, 0x05, 0xe6, 0x8d, 0x2d, - 0x8d, 0xcd, 0x02, 0xf5, - 0x3f, 0xa5, 0xe7, 0x69, 0x41, 0x7c, 0x4e, 0x40, 0x1f, 0xf1, 0x81, 0xe7, - 0x81, 0xbd, 0xd8, 0x4a, - 0x0c, 0x8f, 0xb6, 0x2a, 0x14, 0x2e, 0x8d, 0x0f, 0xea, 0x9f, 0x05, 0xb6, - 0x05, 0x24, 0xba, 0xe1, - 0x1c, 0x19, 0x7c, 0xf3, 0x24, 0x46, 0xa2, 0x1b, 0xf0, 0x88, 0x09, 0x7c, - 0x09, 0x54, 0x60, 0x5e, - 0x2c, 0x60, 0xe1, 0x5b, 0x74, 0xfe, 0xd3, 0x27, 0xde, 0xb1, 0x1d, 0xe1, - 0x1d, 0xc4, 0xcd, 0x5c, - 0x3c, 0xf6, 0x2b, 0x82, 0x44, 0x96, 0xfc, 0x33, 0xc4, 0xa6, 0x11, 0x2b, - 0x11, 0xb4, 0x17, 0xe3, - 0x4c, 0x92, 0x18, 0xc8, 0xd4, 0x4d, 0x31, 0x5f, 0x82, 0xc3, 0x35, 0x18, - 0x35, 0x27, 0x54, 0x58, - 0x5c, 0x04, 0xd2, 0x11, 0xe4, 0x25, 0x1e, 0x4b, 0x98, 0xd4, 0x39, 0xd2, - 0x39, 0x57, 0x8e, 0xe7, - 0x6c, 0x7d, 0x4f, 0xb9, 0xb4, 0x9d, 0x6f, 0x77, 0xb6, 0xed, 0x2d, 0x4f, - 0x2d, 0xc7, 0x23, 0xe5, - 0x7c, 0xeb, 0x85, 0x60, 0x84, 0xf5, 0x40, 0x63, 0xac, 0xfa, 0x21, 0x85, - 0x21, 0xb7, 0xf9, 0x5a, - 0x8c, 0xb5, 0x29, 0x2d, 0x57, 0xe8, 0x36, 0xaf, 0x3a, 0x27, 0x65, 0x29, - 0x65, 0x22, 0xa5, 0x50, - 0x9c, 0x23, 0xe3, 0xf4, 0x67, 0x80, 0x19, 0xbb, 0x20, 0x30, 0x69, 0xe3, - 0x69, 0x52, 0x7f, 0xef, - 0xac, 0x5a, 0x7e, 0x5c, 0x37, 0x38, 0x68, 0x87, 0x0e, 0x09, 0x7d, 0x7e, - 0x7d, 0xc2, 0xd2, 0xed, - 0xbc, 0xcc, 0xb4, 0x85, 0x07, 0x50, 0x47, 0x93, 0x14, 0x1e, 0x71, 0xb4, - 0x71, 0xb2, 0x08, 0x52, - 0xcc, 0xa8, 0x87, 0xcf, 0x97, 0x8b, 0x8a, 0xff, 0x52, 0x7b, 0x55, 0x87, - 0x55, 0x21, 0x4b, 0xe9, - 0xdc, 0x3e, 0x4d, 0x16, 0xa7, 0xe3, 0xa5, 0xeb, 0x48, 0x6c, 0x59, 0x4d, - 0x59, 0x51, 0x91, 0x56, - 0xec, 0x47, 0xd0, 0xbe, 0xf7, 0x5b, 0xd4, 0xd7, 0x66, 0x55, 0x4d, 0xd0, - 0x4d, 0xc1, 0x3c, 0x54, - 0xfc, 0xd1, 0x1a, 0x67, 0xc7, 0x33, 0xfb, 0xc3, 0x7c, 0x42, 0x41, 0x1a, - 0x41, 0xb1, 0xe6, 0xeb, - 0xd7, 0x26, 0xe4, 0x70, 0xba, 0x3d, 0xe1, 0x92, 0x9e, 0xd1, 0xcf, 0xe4, - 0xcf, 0x60, 0x33, 0x41, - 0xc7, 0xb0, 0x2e, 0xa9, 0x8a, 0x55, 0xce, 0x86, 0x84, 0xc6, 0xc3, 0x2e, - 0xc3, 0x10, 0xe9, 0xfe, - 0xf7, 0xc9, 0xb3, 0x01, 0xda, 0xed, 0xbf, 0xba, 0xaa, 0xff, 0xd7, 0xb3, - 0xd7, 0x80, 0x44, 0xfc, - 0xe7, 0x5f, 0x79, 0xd8, 0xea, 0x85, 0x90, 0xae, 0xb0, 0xe8, 0xdb, 0x79, - 0xdb, 0xf0, 0x9e, 0x43, - 0x97, 0x3b, 0x4a, 0x92, 0x7a, 0x5e, 0x5d, 0xc2, 0xf6, 0x8d, 0xff, 0x4a, - 0xff, 0x63, 0xdd, 0xf8, - 0x87, 0xad, 0x80, 0x4b, 0x4a, 0x36, 0x72, 0xd6, 0xec, 0x9a, 0xf3, 0x80, - 0xf3, 0x13, 0x07, 0x47, - 0xb7, 0xd4, 0x1d, 0xe3, 0x1a, 0x8e, 0x03, 0xea, 0xc2, 0xa3, 0xe7, 0x1d, - 0xe7, 0x83, 0xaa, 0x45, - 0xa7, 0x42, 0xd7, 0x3a, 0x2a, 0xe6, 0x2c, 0xfe, 0xd8, 0xb4, 0xeb, 0xd7, - 0xeb, 0xf3, 0x70, 0xfa, - 0x57, 0x1c, 0x7b, 0x77, 0xf9, 0xfb, 0x5a, 0x32, 0x4e, 0x69, 0xaf, 0x7b, - 0xaf, 0x66, 0x2c, 0xf0, - 0x47, 0x8a, 0xb1, 0xae, 0xc9, 0x93, 0x75, 0x26, 0x54, 0x7e, 0xa3, 0xb1, - 0xa3, 0x16, 0xf6, 0x4f, - 0x77, 0xf3, 0x2c, 0x06, 0x99, 0x2b, 0x04, 0x1a, 0x7a, 0x47, 0xb7, 0x2c, - 0xb7, 0x86, 0x5b, 0x4d, - 0x67, 0x65, 0xe6, 0xdf, 0xa9, 0x43, 0x2b, 0x0e, 0x60, 0x50, 0xbb, 0xe6, - 0xbb, 0xf6, 0x81, 0xf2, - 0x17, 0x01, 0xd5, 0x95, 0x39, 0x98, 0xe6, 0x62, 0x26, 0x35, 0x9f, 0xd5, - 0x9f, 0x65, 0xc2, 0x49, - 0x07, 0x97, 0x1f, 0x4c, 0x09, 0xf0, 0xc9, 0x76, 0x3c, 0x22, 0x93, 0x1f, - 0x93, 0x15, 0x18, 0xf6, - 0x37, 0xee, 0x82, 0xe4, 0x59, 0x48, 0xb8, 0x4a, 0x12, 0x1b, 0x87, 0x82, - 0x87, 0x85, 0xb5, 0xf4, - 0x27, 0x78, 0x48, 0x3d, 0x69, 0x20, 0x97, 0x5e, 0x08, 0x0c, 0x8b, 0x48, - 0x8b, 0xf5, 0x6f, 0x4b, - 0x14, 0x52, 0x19, 0x7e, 0x3c, 0x72, 0x54, 0x11, 0xfd, 0x62, 0x0f, 0x19, - 0x0f, 0x6c, 0x0d, 0xe0, - 0x04, 0xc4, 0xd3, 0xa7, 0x0c, 0x1a, 0x7b, 0x05, 0xe7, 0x75, 0x03, 0xd3, - 0x03, 0x1c, 0xd7, 0x5f, - 0x34, 0xbd, 0x4e, 0x0f, 0x5c, 0xa2, 0x0a, 0x39, 0xc9, 0x4c, 0x17, 0x4e, - 0x17, 0x8c, 0x7a, 0x5d, - 0x24, 0x2b, 0x84, 0xd6, 0x6c, 0xca, 0x25, 0x2d, 0xd3, 0x5b, 0x1b, 0x84, - 0x1b, 0xfc, 0xa0, 0xe2, - 0x54, 0x4f, 0xb7, 0x9c, 0xfc, 0x11, 0xe8, 0x41, 0x95, 0x3e, 0x3f, 0xb7, - 0x3f, 0x6f, 0xe3, 0x59, - 0x44, 0xd9, 0x7d, 0x45, 0xcc, 0x79, 0xc7, 0x55, 0x8f, 0x29, 0x33, 0x7d, - 0x33, 0x1f, 0x39, 0xe6, - 0x74, 0xa0, 0xe0, 0xed, 0x9c, 0xc1, 0xb6, 0x69, 0xa1, 0x10, 0x27, 0xe0, - 0x27, 0x8f, 0x94, 0xe4, - 0x64, 0x36, 0x2a, 0x34, 0xac, 0xa9, 0x99, 0x7d, 0xbb, 0x07, 0x2b, 0x2a, - 0x2b, 0xff, 0x4e, 0x5b, - 0x94, 0x68, 0x86, 0x79, 0x7f, 0xb4, 0xef, 0xb1, 0x2d, 0xda, 0x6f, 0x86, - 0x6f, 0x6a, 0x12, 0x51, - 0x84, 0xfe, 0x4c, 0xa0, 0x4f, 0xdc, 0xc0, 0xa5, 0x37, 0xcd, 0x63, 0x4c, - 0x63, 0x1a, 0xc8, 0xee, - 0xb4, 0x87, 0xd1, 0x08, 0x1f, 0x64, 0xb1, 0x99, 0x19, 0xf4, 0x77, 0xd1, - 0x77, 0x8a, 0x65, 0xec, - 0xa4, 0x11, 0x1b, 0xd1, 0x2f, 0x0c, 0x9e, 0x8d, 0x03, 0xe3, 0x7b, 0x1b, - 0x7b, 0xfa, 0xbf, 0x53, - 0xd4, 0x75, 0x28, 0x9b, 0xbf, 0xd7, 0x53, 0xe1, 0x45, 0x86, 0x5f, 0x28, - 0x5f, 0x69, 0xfc, 0xe8, - 0xc4, 0xe3, 0xe2, 0x42, 0x8f, 0xbf, 0x7c, 0xf5, 0x5f, 0x91, 0x53, 0xe2, - 0x53, 0x19, 0x26, 0x57, - 0xf4, 0x9a, 0x7f, 0xea, 0xdf, 0x07, 0x0d, 0xc9, 0x71, 0xa8, 0x47, 0x7f, - 0x47, 0x89, 0x8b, 0x55, - 0xe4, 0x0c, 0xb5, 0x33, 0xef, 0x6f, 0x22, 0xdd, 0x6b, 0xbf, 0x4b, 0xb5, - 0x4b, 0xf9, 0x51, 0xea, - 0x92, 0xce, 0xdd, 0x6c, 0x75, 0xa3, 0x48, 0x57, 0x58, 0x74, 0x8c, 0xdd, - 0x8c, 0x78, 0x4f, 0xc0, - 0x82, 0x58, 0x17, 0xb5, 0x45, 0xcb, 0x67, 0x43, 0x42, 0x63, 0x80, 0x17, - 0x80, 0x08, 0x95, 0x7f, - 0xb2, 0x21, 0x8a, 0x1d, 0x15, 0x73, 0x16, 0x7f, 0x6c, 0x5a, 0x94, 0x8a, - 0x94, 0x98, 0x38, 0x7d, - 0xa2, 0xb7, 0x40, 0xc4, 0x25, 0x1b, 0x39, 0x6b, 0x76, 0x4d, 0x98, 0x40, - 0x98, 0xe8, 0xe2, 0xc2, - 0xd2, 0xd3, 0x73, 0x8e, 0xb5, 0xc0, 0xf4, 0x07, 0x30, 0x28, 0xbc, 0x73, - 0xbc, 0x7b, 0xa1, 0x79, - 0xc2, 0x45, 0xb9, 0x57, 0x85, 0xa8, 0xdb, 0x13, 0x2a, 0x3f, 0xb0, 0xb9, - 0xb0, 0x0b, 0x7b, 0xc6, - 0xf2, 0x3c, 0x24, 0xff, 0xd5, 0x10, 0xaa, 0x2f, 0x04, 0x06, 0xa4, 0x24, - 0xa4, 0x9b, 0xd6, 0xc4, - 0xe2, 0xaa, 0xee, 0x26, 0xe5, 0x78, 0x85, 0x3b, 0x1e, 0x11, 0xa8, 0xee, - 0xa8, 0xeb, 0x0c, 0x7b, - 0x12, 0xf4, 0x42, 0x6b, 0x36, 0x65, 0xf3, 0xf7, 0x88, 0xcc, 0xec, 0x42, - 0xec, 0x7e, 0x50, 0x71, - 0x02, 0x62, 0x88, 0xb2, 0x06, 0x0d, 0xdc, 0xe3, 0x92, 0xdb, 0xe0, 0x88, - 0xe0, 0x0e, 0x8a, 0xce, - 0x32, 0x1b, 0x15, 0x1a, 0x56, 0xb5, 0xad, 0xdf, 0xbc, 0xe2, 0xf4, 0x15, - 0xf4, 0x9e, 0x27, 0xcc, - 0x22, 0x8d, 0xdf, 0xc3, 0x66, 0xdd, 0x82, 0xcb, 0xa6, 0xf5, 0xf8, 0xdf, - 0xf8, 0xee, 0xfd, 0x73, - 0x52, 0xe9, 0xec, 0x89, 0xf6, 0x06, 0x4f, 0xa7, 0xe0, 0x90, 0xdc, 0xec, - 0xdc, 0x7d, 0xbe, 0xc8, - 0x42, 0x7f, 0x26, 0x50, 0xc6, 0x6e, 0x60, 0xb3, 0xfa, 0x87, 0xd0, 0x26, - 0xd0, 0x0d, 0x64, 0x77, - 0x72, 0x06, 0xbb, 0xf8, 0x96, 0xd6, 0x11, 0x8f, 0xd4, 0xbe, 0xc4, 0xbb, - 0xc4, 0x9d, 0xc9, 0x75, - 0x62, 0x90, 0x71, 0x21, 0xa6, 0xbe, 0x3e, 0x9b, 0xce, 0xa9, 0xc8, 0x71, - 0xc8, 0xed, 0x13, 0xca, - 0x51, 0xba, 0x20, 0x62, 0xf3, 0xec, 0xfd, 0xd4, 0x3b, 0xc7, 0x4c, 0x20, - 0x4c, 0x74, 0x71, 0x61, - 0x41, 0x2c, 0xea, 0xbb, 0xc3, 0x84, 0xd2, 0xc0, 0x21, 0xd0, 0x40, 0xea, - 0x40, 0x04, 0xab, 0xde, - 0x71, 0x55, 0x77, 0x13, 0x93, 0x3c, 0xa3, 0xfc, 0x0f, 0xe9, 0x54, 0x77, - 0x54, 0x94, 0x06, 0xdc, - 0x61, 0xc3, 0xbd, 0xca, 0xa3, 0x54, 0x8c, 0xe8, 0x15, 0xfe, 0x58, 0xbd, - 0x58, 0xe4, 0xdc, 0x63, - 0x11, 0xa7, 0x8e, 0x80, 0x33, 0x8f, 0x41, 0x84, 0x53, 0x9b, 0x7c, 0x8e, - 0x7c, 0x77, 0x9f, 0xd8, - 0x01, 0x31, 0x44, 0x59, 0x03, 0xe7, 0x6e, 0x90, 0x49, 0x8c, 0x70, 0x44, - 0x70, 0x07, 0x45, 0x67, - 0x31, 0x48, 0xd9, 0xf1, 0x53, 0x5f, 0x1f, 0xac, 0x67, 0xb5, 0x64, 0xd9, - 0x64, 0x97, 0xe8, 0x65, - 0x21, 0xde, 0x13, 0x28, 0x63, 0x37, 0x30, 0xb8, 0x7d, 0xa2, 0x68, 0x13, - 0x68, 0xe7, 0x32, 0xda, - 0xd1, 0x80, 0xbf, 0x65, 0xb0, 0x2a, 0x46, 0x74, 0xeb, 0x7f, 0x2c, 0xbf, - 0x2c, 0x72, 0x6e, 0xd0, - 0xc1, 0x16, 0x75, 0xbc, 0x80, 0x42, 0x69, 0x60, 0xf1, 0x68, 0x20, 0x75, - 0x20, 0x02, 0xb4, 0x6f, - 0xf1, 0x6f, 0xe8, 0x14, 0xd0, 0xfa, 0x18, 0x5c, 0xdf, 0x51, 0x34, 0xe8, - 0x34, 0x92, 0x19, 0x6d, - 0xe1, 0xf9, 0x22, 0xcd, 0xe0, 0x92, 0x37, 0x48, 0xc5, 0x46, 0x38, 0x22, - 0x38, 0xe2, 0xc3, 0xd2, - 0x91, 0x9d, 0x11, 0x87, 0x70, 0x49, 0xfa, 0x24, 0x83, 0x23, 0x1c, 0x11, - 0x1c, 0x71, 0x80, 0x69, - 0x81, 0x0b, 0xdb, 0x5e, 0x40, 0x21, 0xd5, 0x30, 0x99, 0x34, 0x10, 0xdb, - 0x10, 0x01, 0x5a, 0xd6, - 0xb1, 0x72, 0x46, 0xf6, 0x10, 0x99, 0xa4, 0x0c, 0xb7, 0x0d, 0x04, 0x46, - 0x04, 0x91, 0xf7, 0xd4, - 0xa1, 0xe4, 0x8c, 0x2f, 0x20, 0xf1, 0x8b, 0x18, 0xad, 0x1a, 0x08, 0x8c, - 0x08, 0xe1, 0x2d, 0x6b, - 0x5d, 0x35, 0x96, 0x48, 0xe7, 0xc2, 0x70, 0xdb, 0xd1, 0x58, 0x49, 0x96, - 0x49, 0x50, 0xcb, 0x80, - 0x4d, 0xa3, 0x5c, 0x91, 0xd7, 0xaa, 0x5f, 0xcf, 0xcb, 0x4f, 0x45, 0x5c, - 0x45, 0x20, 0x11, 0x3f, - 0x7d, 0xda, 0xc1, 0x39, 0x87, 0x12, 0x2e, 0xf3, 0xe5, 0x76, 0x51, 0xc1, - 0x51, 0xb0, 0xbc, 0x3d, - 0x6d, 0x4c, 0x0b, 0xe0, 0xb7, 0x7a, 0x01, 0xe7, 0xff, 0x61, 0x5d, 0x0b, - 0x5d, 0xc0, 0x66, 0x82, - 0x1d, 0x28, 0x38, 0xaa, 0x27, 0xa1, 0xcc, 0x8b, 0xb9, 0x04, 0x79, 0x38, - 0x79, 0x53, 0x25, 0x39, - 0x0d, 0xbe, 0xf2, 0x73, 0x17, 0xc9, 0xe3, 0x9f, 0xa3, 0x13, 0x75, 0xf2, - 0x75, 0x23, 0xff, 0x86, - 0x3d, 0xc7, 0x6f, 0xdb, 0x47, 0x71, 0x92, 0xa3, 0x8d, 0x2a, 0x61, 0x6f, - 0x61, 0xb3, 0x52, 0x84, - 0x2d, 0x51, 0xa5, 0x02, 0x77, 0x19, 0xbd, 0xb7, 0x97, 0x3d, 0x6d, 0xa5, - 0x6d, 0xc3, 0x88, 0x3b, - 0xdd, 0x0f, 0x09, 0x4f, 0xa4, 0x04, 0xcb, 0x7b, 0x01, 0xe0, 0x29, 0x09, - 0x29, 0x56, 0xd4, 0x31, - 0xcd, 0x99, 0xc3, 0x96, 0x94, 0x6c, 0xe4, 0x6f, 0x1b, 0xf7, 0x25, 0xc3, - 0x25, 0x26, 0x0e, 0x8e, - 0xfd, 0xe0, 0x5e, 0x3e, 0xc4, 0xd4, 0x95, 0x53, 0x35, 0xce, 0x31, 0x5e, - 0x31, 0xb6, 0xa3, 0x8c, - 0xed, 0x76, 0x94, 0xe7, 0xf4, 0xbc, 0xba, 0x47, 0x2f, 0xd9, 0x3d, 0x94, - 0x3d, 0xc6, 0x79, 0x33, - 0x9d, 0x12, 0xa7, 0xad, 0x64, 0x67, 0x77, 0x2b, 0x69, 0xbc, 0x19, 0xa7, - 0x19, 0x55, 0x3a, 0x88, - 0x8d, 0x84, 0x6d, 0x74, 0x54, 0x0f, 0x58, 0x3f, 0x73, 0xab, 0x15, 0x6d, - 0x15, 0x25, 0xe0, 0x37, - 0xbd, 0xfd, 0xf0, 0xdc, 0x04, 0xb7, 0x29, 0x03, 0x5d, 0x92, 0x01, 0xf0, - 0x01, 0xb5, 0x4d, 0x35, - 0xad, 0x6b, 0x3a, 0x05, 0x34, 0xdf, 0x06, 0x17, 0x47, 0x85, 0x0d, 0x3a, - 0x0d, 0xc5, 0x97, 0x8a, - 0x9e, 0x41, 0x6b, 0x46, 0x61, 0x8d, 0xc5, 0x58, 0xb2, 0xeb, 0x89, 0x6b, - 0x89, 0x5c, 0xf5, 0x21, - 0x8e, 0xd7, 0xa1, 0x9f, 0x51, 0xe5, 0xea, 0x4c, 0xa8, 0xfc, 0x85, 0xa1, - 0x85, 0x2c, 0x2f, 0x9e, - 0xbe, 0xae, 0x3c, 0x37, 0x01, 0x5d, 0x9b, 0x70, 0x86, 0xc5, 0x91, 0x3c, - 0x91, 0xbc, 0x82, 0x9c, - 0xae, 0x38, 0xf6, 0xee, 0x31, 0x35, 0xb4, 0x64, 0x9c, 0xd2, 0x9d, 0xf6, - 0x9d, 0xcc, 0x58, 0x23, - 0xde, 0x5c, 0xc5, 0xa4, 0xa1, 0xee, 0x79, 0x08, 0xda, 0xb7, 0xb9, 0xc5, - 0xb9, 0x5f, 0x1b, 0x98, - 0xce, 0xca, 0x0f, 0x7d, 0x91, 0x86, 0x56, 0x1c, 0xc0, 0xa0, 0xb5, 0x0f, - 0xb5, 0x2f, 0xc1, 0x27, - 0xfe, 0xb3, 0x92, 0xd5, 0xc1, 0x3e, 0x27, 0x20, 0xee, 0x99, 0xa1, 0x92, - 0xa1, 0xbf, 0x6c, 0x25, - 0xee, 0x25, 0x58, 0x0c, 0xf1, 0x56, 0x08, 0x34, 0xf4, 0x8e, 0xad, 0x58, - 0xad, 0xcf, 0xb6, 0x9a, - 0x1e, 0x7b, 0xf4, 0x41, 0x22, 0x4b, 0x7e, 0xf8, 0x62, 0x53, 0xe9, 0xf4, - 0xe9, 0x5a, 0xea, 0x90, - 0x0e, 0xed, 0x3e, 0x98, 0x12, 0x23, 0x51, 0xec, 0x78, 0x44, 0xe5, 0x3e, - 0xe5, 0x2a, 0x30, 0x2f, - 0x3e, 0x94, 0xa3, 0x30, 0x42, 0x9b, 0x20, 0xd0, 0x56, 0x7d, 0xf1, 0xa3, - 0xf1, 0xba, 0x9d, 0x2d, - 0x2e, 0x02, 0x69, 0xe9, 0x72, 0xf3, 0x0f, 0xc4, 0x4c, 0x6a, 0xfd, 0x69, - 0xfd, 0xca, 0x47, 0x92, - 0x5e, 0x66, 0x5a, 0xa3, 0xe2, 0x28, 0xc2, 0xa8, 0x0a, 0x0f, 0xd9, 0x5a, - 0xd9, 0x59, 0x04, 0x29, - 0x4e, 0xf0, 0x90, 0x7a, 0xd2, 0x40, 0xed, 0xbc, 0x10, 0x18, 0xd5, 0x90, - 0xd5, 0x29, 0xde, 0x96, - 0x7e, 0x89, 0x0d, 0xd2, 0x82, 0xf8, 0x9c, 0x80, 0x3e, 0x21, 0xc1, 0x0d, - 0xc1, 0xb9, 0x73, 0x94, - 0x6e, 0x1f, 0xc7, 0x0b, 0xb2, 0x90, 0xb3, 0x94, 0x24, 0x36, 0xcd, 0xc7, - 0xcd, 0xc9, 0xa9, 0x2b, - 0x18, 0xdd, 0xaf, 0x54, 0x28, 0x5c, 0xd9, 0x1e, 0x17, 0xfd, 0x0a, 0xaf, - 0x0a, 0x48, 0xb7, 0x01, - 0x08, 0x4b, 0x65, 0x8d, 0x18, 0x34, 0xf6, 0x0a, 0x0d, 0xea, 0x06, 0x65, - 0x06, 0x38, 0x6d, 0xbe, - 0x38, 0x32, 0xf8, 0x25, 0x48, 0x8c, 0x87, 0x36, 0x23, 0xd3, 0x12, 0xf8, - 0x12, 0xa8, 0xc0, 0xbc, - 0x28, 0xa4, 0x32, 0xfc, 0x78, 0xe4, 0xa8, 0x22, 0x39, 0xc4, 0x1e, 0x32, - 0x1e, 0xd8, 0x1a, 0x03, - 0x58, 0xc0, 0x01, 0xb6, 0xe8, 0x3f, 0x65, 0x4e, 0x7f, 0xa1, 0x3a, 0x01, - 0x3a, 0x4b, 0x59, 0xb8, - 0x48, 0x56, 0xcb, 0x6f, 0xd8, 0x57, 0x4a, 0x5a, 0x65, 0xb6, 0x36, 0xcb, - 0x36, 0x3b, 0x83, 0x07, - 0x78, 0x2f, 0x56, 0xc7, 0x88, 0xef, 0x3b, 0x66, 0x4b, 0x8f, 0x22, 0x56, - 0x22, 0xab, 0x2e, 0x05, - 0x68, 0xb9, 0x9c, 0x1e, 0xb8, 0x87, 0x14, 0x72, 0x51, 0x98, 0x2e, 0x9c, - 0x2e, 0xdb, 0xf4, 0xba, - 0x98, 0xe7, 0x30, 0x53, 0x6b, 0x9a, 0x62, 0xbe, 0xc7, 0x45, 0x6a, 0x30, - 0x6a, 0x4e, 0xa8, 0xb0, - 0x88, 0x71, 0xfa, 0x8a, 0x5b, 0xf2, 0x4d, 0xaa, 0xdd, 0x52, 0x66, 0xfa, - 0x66, 0x3e, 0x72, 0x0f, - 0xb8, 0x08, 0x67, 0x22, 0x0b, 0x4a, 0x3c, 0x96, 0xf3, 0x6b, 0x72, 0x67, - 0x72, 0xae, 0xdf, 0x0d, - 0xa8, 0x9e, 0xad, 0xfb, 0x3b, 0x22, 0x13, 0x82, 0xe9, 0x7c, 0x7e, 0xad, - 0x7e, 0xde, 0x05, 0xb2, - 0xd8, 0xfa, 0x9e, 0xb1, 0xab, 0xf9, 0xde, 0xee, 0xaf, 0x19, 0x5a, 0x9e, - 0x5a, 0x4d, 0x46, 0x09, - 0xc8, 0x6c, 0x54, 0x68, 0x9b, 0x91, 0xf1, 0xfa, 0xb5, 0x0e, 0x56, 0x54, - 0x56, 0x3d, 0x9c, 0xb6, - 0xf8, 0x15, 0xc9, 0xc0, 0xcb, 0x29, 0x80, 0xc6, 0x9b, 0x37, 0x42, 0xc9, - 0x42, 0xad, 0x31, 0xb4, - 0xe8, 0x83, 0x03, 0x19, 0xfb, 0x41, 0xaf, 0xd2, 0x81, 0x20, 0x4e, 0x03, - 0x4e, 0xdd, 0xeb, 0x0b, - 0xdb, 0xa9, 0x52, 0x5a, 0xae, 0x13, 0x6c, 0x9d, 0x74, 0x4e, 0xca, 0x52, - 0xca, 0x44, 0x89, 0xa0, - 0xcb, 0x3f, 0x98, 0x83, 0x9e, 0x7b, 0x43, 0x89, 0x6e, 0x59, 0xc6, 0x98, - 0xc6, 0x34, 0x53, 0x1f, - 0xfb, 0x46, 0x05, 0x2b, 0xce, 0xc3, 0x32, 0xb5, 0x40, 0x60, 0xd2, 0x05, - 0xd2, 0xa4, 0xfe, 0x1d, - 0xeb, 0xd0, 0xcf, 0xf2, 0xfe, 0xab, 0x1d, 0xa1, 0x5a, 0x77, 0xde, 0xcf, - 0xde, 0xd4, 0x24, 0xa2, - 0x9b, 0xb4, 0xfc, 0xb8, 0x6e, 0x70, 0xd0, 0xcd, 0x1c, 0x12, 0xfa, 0xfc, - 0xfa, 0x47, 0x67, 0x19, - 0x8b, 0x22, 0x36, 0x61, 0x5e, 0x18, 0xff, 0xd9, 0x06, 0x05, 0xf6, 0x36, - 0xf6, 0x37, 0xbd, 0xa6, - 0xbb, 0x5b, 0xab, 0xc9, 0x0e, 0xa0, 0x8e, 0xe5, 0x28, 0x3c, 0xe2, 0xab, - 0xe2, 0xa7, 0x10, 0xa4, - 0xab, 0xcd, 0x61, 0x10, 0x3e, 0xc8, 0xa1, 0xf1, 0x32, 0x2b, 0xee, 0x61, - 0xee, 0xd7, 0xca, 0x1b, - 0x5b, 0x93, 0xcd, 0x5d, 0xed, 0xd5, 0xd7, 0x3d, 0xa4, 0xf6, 0xaa, 0xcd, - 0xaa, 0x42, 0x96, 0x11, - 0x4b, 0x05, 0x07, 0x84, 0xdd, 0xbd, 0xf8, 0x29, 0xbe, 0xe1, 0xa6, 0x07, - 0xa6, 0x32, 0x4c, 0xae, - 0x7b, 0x7c, 0x9a, 0x2c, 0x8d, 0x05, 0x89, 0x15, 0x90, 0xd8, 0xb2, 0x9a, - 0xb2, 0xa2, 0xe1, 0xac, - 0x6b, 0xea, 0x50, 0xf5, 0xbd, 0x6d, 0xa6, 0x01, 0x8a, 0xcf, 0xbe, 0x50, - 0xbe, 0xd2, 0x3b, 0x13, - 0x1b, 0x8e, 0x63, 0xbf, 0x2d, 0xb6, 0x6b, 0x6d, 0xcc, 0xaa, 0x9a, 0x63, - 0x9a, 0x41, 0x78, 0xa8, - 0x0b, 0x18, 0xa9, 0x66, 0x1d, 0xde, 0x44, 0x79, 0xd6, 0xbd, 0x96, 0xa9, - 0x96, 0x31, 0xa2, 0x17, - 0x3b, 0x61, 0x34, 0xce, 0x4d, 0x66, 0x35, 0x45, 0xf8, 0x84, 0x82, 0x34, - 0x82, 0xa1, 0x0f, 0x15, - 0x2b, 0xf7, 0xfe, 0x17, 0x7d, 0x0e, 0x1a, 0x51, 0xe2, 0x93, 0x8e, 0xfe, - 0x8e, 0xd1, 0xd5, 0xaa, - }, - { /* 13 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x85, 0x74, 0x75, 0xd0, 0x5e, 0xbe, 0xb8, 0x87, 0x4e, 0x62, 0xec, 0x6b, - 0x10, 0x87, 0xc6, 0x74, - 0xc9, 0xe8, 0xea, 0x63, 0xbc, 0xbf, 0xb3, 0xcd, 0x9c, 0xc4, 0x1b, 0xd6, - 0x20, 0xcd, 0x4f, 0xe8, - 0x4c, 0x9c, 0x9f, 0xb3, 0xe2, 0x01, 0x0b, 0x4a, 0xd2, 0xa6, 0xf7, 0xbd, - 0x30, 0x4a, 0x89, 0x9c, - 0x51, 0x13, 0x17, 0xc6, 0xbb, 0xbd, 0xa5, 0x59, 0xfb, 0x4b, 0x36, 0x6f, - 0x40, 0x59, 0x9e, 0x13, - 0xd4, 0x67, 0x62, 0x16, 0xe5, 0x03, 0x1d, 0xde, 0xb5, 0x29, 0xda, 0x04, - 0x50, 0xde, 0x58, 0x67, - 0x98, 0xfb, 0xfd, 0xa5, 0x07, 0x02, 0x16, 0x94, 0x67, 0x8f, 0x2d, 0xb9, - 0x60, 0x94, 0xd1, 0xfb, - 0x1d, 0x8f, 0x88, 0x75, 0x59, 0xbc, 0xae, 0x13, 0x29, 0xed, 0xc1, 0xd2, - 0x70, 0x13, 0x17, 0x8f, - 0xa2, 0x26, 0x2e, 0x4f, 0xb5, 0xb9, 0x89, 0xb2, 0x35, 0x96, 0x6c, 0xde, - 0x80, 0xb2, 0xff, 0x26, - 0x27, 0x52, 0x5b, 0x9f, 0xeb, 0x07, 0x31, 0x35, 0x7b, 0xf4, 0x80, 0xb5, - 0x90, 0x35, 0x39, 0x52, - 0x6b, 0xce, 0xc4, 0x2c, 0x09, 0x06, 0x3a, 0x7f, 0xa9, 0x52, 0x77, 0x08, - 0xa0, 0x7f, 0xb0, 0xce, - 0xee, 0xba, 0xb1, 0xfc, 0x57, 0xb8, 0x82, 0xf8, 0xe7, 0x30, 0x9b, 0x63, - 0xb0, 0xf8, 0x76, 0xba, - 0xf3, 0x35, 0x39, 0x89, 0x0e, 0x04, 0x2c, 0xeb, 0xce, 0xdd, 0x5a, 0xb1, - 0xc0, 0xeb, 0x61, 0x35, - 0x76, 0x41, 0x4c, 0x59, 0x50, 0xba, 0x94, 0x6c, 0x80, 0xbf, 0xb6, 0xda, - 0xd0, 0x6c, 0xa7, 0x41, - 0x3a, 0xdd, 0xd3, 0xea, 0xb2, 0xbb, 0x9f, 0x26, 0x52, 0x19, 0x41, 0x67, - 0xe0, 0x26, 0x2e, 0xdd, - 0xbf, 0xa9, 0xa6, 0x3a, 0xec, 0x05, 0x27, 0xa1, 0x1c, 0x7b, 0xad, 0x0c, - 0xf0, 0xa1, 0xe8, 0xa9, - 0x87, 0x4c, 0x5c, 0x9e, 0xa9, 0xb1, 0xd1, 0xa7, 0x6a, 0xef, 0xd8, 0x7f, - 0xc3, 0xa7, 0x3d, 0x4c, - 0x02, 0x38, 0x29, 0x4e, 0xf7, 0x0f, 0x69, 0x20, 0x24, 0x8d, 0x34, 0x14, - 0xd3, 0x20, 0xfb, 0x38, - 0x4e, 0xa4, 0xb6, 0xfd, 0x15, 0x0e, 0x62, 0x6a, 0xf6, 0x2b, 0xc3, 0xa9, - 0xe3, 0x6a, 0x72, 0xa4, - 0xcb, 0xd0, 0xc3, 0x2d, 0x4b, 0xb0, 0xda, 0xed, 0xb8, 0x49, 0x2f, 0xc2, - 0xf3, 0xed, 0xb4, 0xd0, - 0xd6, 0x5f, 0x4b, 0x58, 0x12, 0x0c, 0x74, 0xfe, 0x91, 0xa4, 0xee, 0x10, - 0x83, 0xfe, 0xa3, 0x5f, - 0x53, 0x2b, 0x3e, 0x88, 0x4c, 0xb2, 0xcc, 0x79, 0xdf, 0xc6, 0x02, 0x7b, - 0x93, 0x79, 0x65, 0x2b, - 0x1f, 0xb7, 0xa1, 0x3b, 0xae, 0xb3, 0xc7, 0x33, 0x0d, 0x60, 0xf5, 0xc6, - 0xa3, 0x33, 0xec, 0xb7, - 0x9a, 0xc3, 0xd4, 0xeb, 0xf0, 0x0d, 0x7f, 0xb4, 0x43, 0x02, 0x19, 0xad, - 0xb3, 0xb4, 0x2a, 0xc3, - 0x25, 0x6a, 0x72, 0xd1, 0x1c, 0x08, 0x58, 0x15, 0x5f, 0x79, 0xb4, 0xa1, - 0x43, 0x15, 0xc2, 0x6a, - 0xa0, 0x1e, 0x07, 0x01, 0x42, 0xb6, 0xe0, 0x92, 0x11, 0x1b, 0x58, 0xca, - 0x53, 0x92, 0x04, 0x1e, - 0xec, 0x82, 0x98, 0xb2, 0xa0, 0xb7, 0xeb, 0xd8, 0xc3, 0xbd, 0xaf, 0x77, - 0x63, 0xd8, 0x8d, 0x82, - 0x69, 0xf6, 0xed, 0x62, 0xfe, 0x09, 0x53, 0x5f, 0x8d, 0xdf, 0x43, 0x1c, - 0x73, 0x5f, 0x4b, 0xf6, - 0x74, 0x79, 0x65, 0x17, 0xa7, 0xb5, 0xfd, 0x4c, 0xa4, 0x32, 0x82, 0xce, - 0x03, 0x4c, 0x5c, 0x79, - 0xf1, 0x0d, 0x10, 0xc7, 0xf9, 0x0b, 0x45, 0xcb, 0xea, 0x50, 0x6e, 0xa5, - 0x13, 0xcb, 0x9a, 0x0d, - 0xbd, 0x91, 0x8f, 0x74, 0x1b, 0x0a, 0x4e, 0x81, 0x38, 0xf6, 0x99, 0x18, - 0x23, 0x81, 0x13, 0x91, - 0x38, 0xe5, 0xfa, 0xa4, 0x45, 0xb4, 0xf6, 0x06, 0x76, 0x94, 0x75, 0x73, - 0x33, 0x06, 0xd5, 0xe5, - 0xcd, 0x98, 0xb8, 0xff, 0x91, 0xa1, 0x61, 0x8d, 0xd4, 0x1d, 0x73, 0xfe, - 0x45, 0x8d, 0x7a, 0x98, - 0x48, 0xec, 0xcd, 0x2f, 0xcf, 0x1f, 0xd9, 0x0a, 0x9a, 0x7f, 0x9f, 0x95, - 0x55, 0x0a, 0xbc, 0xec, - 0x04, 0x70, 0x52, 0x9c, 0x2d, 0x1e, 0xd2, 0x40, 0x48, 0xd9, 0x68, 0x28, - 0x65, 0x40, 0x35, 0x70, - 0x81, 0x04, 0x27, 0x4c, 0x73, 0xa0, 0x6a, 0xc7, 0x06, 0xbb, 0x84, 0x43, - 0x75, 0xc7, 0xf3, 0x04, - 0x9c, 0x8b, 0xaf, 0x39, 0x2a, 0x1c, 0xc4, 0xd4, 0x2f, 0x56, 0x45, 0x91, - 0x05, 0xd4, 0xe4, 0x8b, - 0x19, 0xff, 0xda, 0xe9, 0x74, 0xa2, 0x7c, 0x53, 0x61, 0x34, 0xa9, 0xfa, - 0x15, 0x53, 0x22, 0xff, - 0x55, 0x63, 0x45, 0x5a, 0x96, 0xa3, 0x77, 0x19, 0xb3, 0x92, 0x5e, 0x47, - 0x25, 0x19, 0xab, 0x63, - 0xd0, 0x17, 0x30, 0x8a, 0xc8, 0x1d, 0xcf, 0x9e, 0xfd, 0xf0, 0xb2, 0x2c, - 0x35, 0x9e, 0x6d, 0x17, - 0x6f, 0xbe, 0x96, 0xb0, 0x24, 0x18, 0xe8, 0x3f, 0xe1, 0x8b, 0x1f, 0x20, - 0xc5, 0x3f, 0x85, 0xbe, - 0xea, 0xca, 0xe3, 0x60, 0x7a, 0xa6, 0x50, 0xb8, 0xaf, 0xe9, 0xf3, 0x4b, - 0xd5, 0xb8, 0x43, 0xca, - 0xa6, 0x56, 0x7c, 0xd3, 0x98, 0xa7, 0x5b, 0xf2, 0x7d, 0x4f, 0x04, 0xf6, - 0xe5, 0xf2, 0xca, 0x56, - 0x23, 0x22, 0x09, 0x03, 0xc6, 0x19, 0xe3, 0x75, 0x33, 0x2d, 0xe8, 0x9d, - 0xf5, 0x75, 0x0c, 0x22, - 0x3e, 0xad, 0x81, 0x76, 0x9f, 0xa5, 0x4d, 0x66, 0x1a, 0xc0, 0x29, 0x4f, - 0x85, 0x66, 0x1b, 0xad, - 0xbb, 0xd9, 0xf4, 0xa6, 0xc1, 0x1b, 0xf5, 0xe1, 0x54, 0xa2, 0xc5, 0x24, - 0x95, 0xe1, 0xdd, 0xd9, - 0xf7, 0x45, 0x6b, 0x15, 0x23, 0x1a, 0xfe, 0xab, 0x86, 0x04, 0x32, 0x99, - 0xa5, 0xab, 0x54, 0x45, - 0x72, 0x31, 0x1e, 0xc5, 0x7d, 0xa4, 0x46, 0x2c, 0xc8, 0x66, 0xde, 0xf2, - 0xb5, 0x2c, 0x92, 0x31, - 0x4a, 0xd4, 0xe4, 0x61, 0x38, 0x10, 0xb0, 0x2a, 0xbe, 0xf2, 0xab, 0x81, - 0x86, 0x2a, 0x47, 0xd4, - 0xcf, 0xa0, 0x91, 0xb1, 0x66, 0xae, 0x08, 0xad, 0xf0, 0x90, 0x47, 0xea, - 0x96, 0xad, 0x81, 0xa0, - 0x83, 0x3c, 0x0e, 0x02, 0x84, 0xaf, 0x03, 0xe7, 0x22, 0x36, 0xb0, 0x57, - 0xa6, 0xe7, 0x08, 0x3c, - 0x06, 0x48, 0x7b, 0xd2, 0xda, 0x11, 0xbb, 0x60, 0x6c, 0x54, 0x5c, 0x3c, - 0xb6, 0x60, 0xce, 0x48, - 0x1b, 0xc7, 0xf3, 0xa7, 0x83, 0xad, 0x15, 0x73, 0x45, 0xb9, 0x9d, 0xee, - 0xc6, 0x73, 0xd9, 0xc7, - 0x9e, 0xb3, 0x86, 0x77, 0xdd, 0x13, 0xad, 0xf4, 0x0b, 0xdb, 0x71, 0x85, - 0xd6, 0xf4, 0x1f, 0xb3, - 0xd2, 0x2f, 0x19, 0xc4, 0x3f, 0x12, 0xa6, 0xbe, 0xd9, 0x7d, 0x86, 0x38, - 0xe6, 0xbe, 0x96, 0x2f, - 0x57, 0x5b, 0x6c, 0x14, 0x61, 0xac, 0x1e, 0x39, 0x97, 0x1f, 0x6a, 0x53, - 0xf6, 0x39, 0x50, 0x5b, - 0xe8, 0xf2, 0xca, 0x2e, 0x8d, 0xa9, 0x39, 0x98, 0x8b, 0x64, 0xc7, 0x5f, - 0x06, 0x98, 0xb8, 0xf2, - 0x6d, 0x86, 0xbf, 0xfe, 0xd3, 0x17, 0x81, 0x1f, 0xc5, 0x06, 0x2b, 0x34, - 0x16, 0x1f, 0x7e, 0x86, - 0x21, 0x1a, 0x20, 0x4d, 0x31, 0x16, 0x8a, 0x55, 0x17, 0xa0, 0xdc, 0x89, - 0x26, 0x55, 0xf7, 0x1a, - 0xa4, 0x6e, 0x55, 0x9d, 0x6f, 0xa8, 0x32, 0xd2, 0x59, 0xc2, 0x30, 0xe2, - 0x36, 0xd2, 0x31, 0x6e, - 0xb9, 0xe1, 0xdd, 0xe8, 0x36, 0x14, 0x9c, 0xc1, 0x70, 0x2f, 0xf1, 0x30, - 0x46, 0xc1, 0x26, 0xe1, - 0x3c, 0x95, 0xa8, 0x38, 0x68, 0xaa, 0x24, 0x46, 0x3e, 0x4d, 0x1d, 0x5b, - 0x56, 0x46, 0xe0, 0x95, - 0x70, 0x09, 0x37, 0x8b, 0x8a, 0xab, 0x2f, 0x0c, 0xec, 0xeb, 0xea, 0xe6, - 0x66, 0x0c, 0x69, 0x09, - 0xf5, 0x7d, 0x42, 0x5b, 0xd4, 0x15, 0x97, 0x8b, 0xa2, 0x89, 0x06, 0x8d, - 0x76, 0x8b, 0xaf, 0x7d, - 0x59, 0xf3, 0xb3, 0x3d, 0xe1, 0x81, 0xc2, 0xd9, 0x6b, 0x3a, 0xe6, 0x3f, - 0x8a, 0xd9, 0xf4, 0xf3, - 0xdc, 0x87, 0xc6, 0xed, 0xbf, 0x3f, 0x7a, 0x5e, 0x25, 0x58, 0x0a, 0x54, - 0x9a, 0x5e, 0x32, 0x87, - 0x90, 0x1b, 0x59, 0x5e, 0x5d, 0x3e, 0x71, 0x14, 0xf7, 0xfe, 0xfd, 0xe9, - 0xaa, 0x14, 0xbb, 0x1b, - 0x15, 0x6f, 0x2c, 0x8e, 0x03, 0x80, 0xc9, 0x93, 0xb9, 0x9c, 0x11, 0x82, - 0xba, 0x93, 0x7d, 0x6f, - 0x08, 0xe0, 0xa4, 0xfb, 0x5a, 0x3c, 0x67, 0x80, 0x90, 0x71, 0xd0, 0x50, - 0xca, 0x80, 0x6a, 0xe0, - 0x8d, 0x94, 0xd1, 0x2b, 0x04, 0x82, 0xdf, 0x07, 0xde, 0x13, 0x3c, 0x3b, - 0xda, 0x07, 0xac, 0x94, - 0xc1, 0x08, 0x4e, 0x98, 0xe6, 0x83, 0xd4, 0x4d, 0x0c, 0xb5, 0xcb, 0x86, - 0xea, 0x4d, 0x25, 0x08, - 0x44, 0x7c, 0x3b, 0x48, 0xb8, 0x3d, 0x6c, 0xca, 0x42, 0xd7, 0x27, 0xed, - 0xfa, 0xca, 0xe3, 0x7c, - 0xfb, 0xd5, 0x9d, 0x72, 0x54, 0x38, 0x4b, 0x6b, 0x5e, 0xac, 0x8a, 0xe1, - 0x0a, 0x6b, 0x0b, 0xd5, - 0x7e, 0xa1, 0xe8, 0xa2, 0x0a, 0x86, 0xf3, 0xec, 0x10, 0xce, 0x66, 0x8a, - 0x1a, 0xec, 0xcd, 0xa1, - 0x32, 0x3d, 0x77, 0x11, 0xe8, 0x87, 0xf8, 0xa6, 0xc2, 0x68, 0x91, 0x37, - 0x2a, 0xa6, 0x44, 0x3d, - 0xb7, 0x49, 0x02, 0xc1, 0xb6, 0x39, 0x40, 0x21, 0x8c, 0x0a, 0x7d, 0x5c, - 0x3a, 0x21, 0x82, 0x49, - 0xaa, 0xc6, 0x8a, 0xb4, 0xef, 0x85, 0xee, 0x32, 0xa5, 0xe7, 0xbc, 0x8e, - 0x4a, 0x32, 0x95, 0xc6, - 0x2f, 0xb2, 0xff, 0x64, 0xb1, 0x3b, 0x56, 0xb5, 0xeb, 0x85, 0x50, 0xe5, - 0x5a, 0xb5, 0x53, 0xb2, - 0x63, 0x2e, 0x60, 0xd7, 0x53, 0x3a, 0x5d, 0xff, 0x39, 0x23, 0xa7, 0x58, - 0x6a, 0xff, 0xda, 0x2e, - 0xe6, 0x5a, 0x15, 0x07, 0x0d, 0x84, 0xe5, 0x78, 0x77, 0x41, 0x4b, 0x33, - 0x7a, 0x78, 0x1c, 0x5a, - 0xde, 0xbf, 0xef, 0xa3, 0x48, 0x30, 0x13, 0x7e, 0x01, 0xd5, 0x3e, 0x40, - 0x49, 0x7e, 0xc9, 0xbf, - 0x5b, 0xcb, 0x9a, 0x73, 0x16, 0x8e, 0xab, 0xf9, 0x4f, 0xb7, 0xd2, 0x2b, - 0x59, 0xf9, 0x0f, 0xcb, - 0x17, 0x57, 0x05, 0xc0, 0xf4, 0x8f, 0xa0, 0xb3, 0x9d, 0x11, 0x25, 0x96, - 0x69, 0xb3, 0x86, 0x57, - 0x92, 0x23, 0x70, 0x10, 0xaa, 0x31, 0x18, 0x34, 0xd3, 0x73, 0xc9, 0xfd, - 0x79, 0x34, 0x40, 0x23, - 0x8f, 0xac, 0xf8, 0x65, 0xf3, 0x8d, 0xb6, 0x27, 0xfa, 0x9e, 0x08, 0x2f, - 0x09, 0x27, 0x57, 0xac, - 0x0a, 0xd8, 0x8d, 0xb5, 0xad, 0x33, 0x0e, 0xa0, 0xb4, 0xfc, 0xe4, 0x44, - 0x19, 0xa0, 0x91, 0xd8, - 0x46, 0x44, 0x12, 0x06, 0x4f, 0x32, 0x05, 0xea, 0x66, 0x5a, 0x13, 0xf9, - 0x29, 0xea, 0x18, 0x44, - 0xc3, 0x30, 0x67, 0xd6, 0x11, 0x8c, 0xbd, 0x6d, 0x28, 0x38, 0xff, 0x92, - 0x39, 0x6d, 0xde, 0x30, - 0x7c, 0x99, 0xc1, 0xec, 0xfd, 0x89, 0x9a, 0xcc, 0x34, 0x43, 0x52, 0x9e, - 0xc9, 0xcc, 0x36, 0x99, - 0xf9, 0xed, 0xb4, 0x3c, 0xa3, 0x37, 0x22, 0x4b, 0x7a, 0x21, 0xbe, 0xf5, - 0xd9, 0x4b, 0xf0, 0xed, - 0xb5, 0x71, 0x2b, 0x8f, 0x41, 0x36, 0x29, 0x01, 0xa8, 0x87, 0x49, 0x48, - 0xe9, 0x01, 0x79, 0x71, - 0x30, 0x05, 0x5e, 0x5f, 0x1f, 0x88, 0x91, 0x86, 0xe6, 0xe5, 0xa5, 0x23, - 0xf9, 0x86, 0xbf, 0x05, - 0x2d, 0x8a, 0xd6, 0x2a, 0x46, 0x34, 0x3f, 0x95, 0xcf, 0x08, 0x64, 0xf1, - 0x89, 0x95, 0xa8, 0x8a, - 0xa8, 0xfe, 0xa3, 0xfa, 0x18, 0x8a, 0x87, 0x12, 0x81, 0x6a, 0x88, 0x9a, - 0x99, 0x12, 0x6e, 0xfe, - 0xe4, 0x62, 0x3c, 0x49, 0xfa, 0x8b, 0x8c, 0x58, 0x53, 0xcc, 0x7f, 0x27, - 0xa9, 0x58, 0xe7, 0x62, - 0x61, 0x16, 0x49, 0x99, 0xa4, 0x35, 0x34, 0xdf, 0x1d, 0xae, 0x93, 0x4c, - 0xb9, 0xdf, 0x21, 0x16, - 0x94, 0x6b, 0x0b, 0xc2, 0x70, 0x20, 0xa3, 0x54, 0xbf, 0x27, 0x95, 0xc1, - 0xcf, 0x54, 0x8e, 0x6b, - 0x11, 0x1f, 0x7e, 0x12, 0x2e, 0x9e, 0x1b, 0xd3, 0xf1, 0x45, 0x79, 0xaa, - 0xdf, 0xd3, 0x48, 0x1f, - 0x5d, 0x83, 0xe1, 0xa1, 0xcc, 0x9f, 0x10, 0x99, 0x23, 0xe3, 0x8e, 0x17, - 0xef, 0x99, 0xc1, 0x83, - 0xd8, 0xf7, 0x94, 0x71, 0x92, 0x21, 0xa8, 0x1e, 0x6d, 0x81, 0x62, 0x7c, - 0xff, 0x1e, 0x07, 0xf7, - 0xc5, 0x78, 0x1c, 0x04, 0xcb, 0x9d, 0x06, 0x0d, 0x44, 0x6c, 0xa3, 0xae, - 0x8f, 0x0d, 0x10, 0x78, - 0x40, 0x0c, 0x69, 0xd4, 0x95, 0x23, 0xbe, 0x8a, 0x0a, 0x0e, 0x4f, 0xc5, - 0x9f, 0x8a, 0xd6, 0x0c, - 0x0c, 0x90, 0xf6, 0x67, 0x77, 0x22, 0xb5, 0xc0, 0xd8, 0xa8, 0xb8, 0x78, - 0xaf, 0xc0, 0x5f, 0x90, - 0x89, 0xe4, 0x83, 0xb7, 0x29, 0x9c, 0x0d, 0x47, 0x96, 0xca, 0x54, 0x13, - 0xbf, 0x47, 0x99, 0xe4, - 0x36, 0x4d, 0x25, 0x8d, 0xc5, 0x99, 0x2a, 0xe6, 0x8a, 0xb1, 0xf9, 0x1f, - 0x4f, 0xe6, 0x71, 0x4d, - 0xb3, 0x39, 0x50, 0x5d, 0x9b, 0x27, 0x92, 0x61, 0xc4, 0xd3, 0x15, 0x74, - 0x5f, 0x61, 0xb7, 0x39, - 0xff, 0xa5, 0xcf, 0xee, 0x79, 0x26, 0x99, 0x2b, 0x16, 0x75, 0xe2, 0xc9, - 0x6f, 0x2b, 0x3e, 0xa5, - 0x7a, 0xd1, 0xba, 0x3e, 0x27, 0x98, 0x21, 0xac, 0x58, 0x17, 0x0e, 0xa2, - 0x7f, 0xac, 0xf8, 0xd1, - 0x67, 0x5e, 0x32, 0x4b, 0x7e, 0x24, 0x8f, 0xbf, 0x71, 0xfa, 0xcf, 0x70, - 0x0f, 0xbf, 0xef, 0x5e, - 0xe2, 0x2a, 0x47, 0x9b, 0x20, 0x9a, 0x37, 0x38, 0x3f, 0x98, 0x23, 0x1b, - 0x1f, 0x38, 0x29, 0x2a, - 0xae, 0xb6, 0xd8, 0x28, 0xc2, 0x9b, 0x3c, 0x72, 0xed, 0x3e, 0xd4, 0xa6, - 0x2f, 0x72, 0xa0, 0xb6, - 0x2b, 0xc2, 0xad, 0xf8, 0x9c, 0x25, 0x84, 0xf5, 0xa3, 0x5c, 0x38, 0xcd, - 0x3f, 0xf5, 0x66, 0xc2, - 0x13, 0x27, 0x57, 0x5c, 0xd9, 0x91, 0x72, 0xf3, 0xd5, 0xc8, 0x4d, 0xbe, - 0x0c, 0xf3, 0xb3, 0x27, - 0x96, 0x53, 0x22, 0x8c, 0x87, 0x2f, 0xca, 0x74, 0x9b, 0xaa, 0xa1, 0xd5, - 0x1c, 0x74, 0x75, 0x53, - 0xda, 0xcf, 0xbd, 0x3f, 0x65, 0x2e, 0xc1, 0x3e, 0x49, 0x0c, 0x56, 0x68, - 0x2c, 0x3e, 0xfc, 0xcf, - 0x5f, 0xbb, 0xc8, 0xef, 0x3b, 0x90, 0x79, 0xb9, 0x07, 0x6e, 0xba, 0x03, - 0x3c, 0xb9, 0x3a, 0xbb, - 0x42, 0x34, 0x40, 0x9a, 0x62, 0x2c, 0xd7, 0xaa, 0x2e, 0x83, 0x7b, 0xd1, - 0x4c, 0xaa, 0x2d, 0x34, - 0xc7, 0x40, 0x35, 0x4a, 0x3c, 0x92, 0x6f, 0x2d, 0x60, 0xe1, 0x97, 0xba, - 0x5c, 0x2d, 0xeb, 0x40, - 0x8b, 0xdc, 0xaa, 0xf9, 0xde, 0x93, 0x64, 0x67, 0xb2, 0x47, 0x60, 0x07, - 0x6c, 0x67, 0x62, 0xdc, - 0x0e, 0xa8, 0xdf, 0x29, 0x80, 0x2d, 0xdc, 0xe0, 0xfc, 0x25, 0x8c, 0x6c, - 0x7c, 0xe0, 0xa4, 0xa8, - 0xb1, 0x01, 0x79, 0x13, 0x6c, 0x28, 0xfb, 0x41, 0xe0, 0x5e, 0x21, 0x60, - 0x8c, 0x41, 0x4c, 0x01, - 0x34, 0x75, 0x0c, 0xc3, 0x32, 0x96, 0x43, 0xc6, 0xae, 0x3c, 0xcd, 0x0b, - 0x9c, 0xc6, 0x8a, 0x75, - 0x78, 0xe9, 0x93, 0x70, 0xd0, 0x97, 0x48, 0x8c, 0x7c, 0x9a, 0x3a, 0xb6, - 0xac, 0x8c, 0x03, 0xe9, - 0xfd, 0x9d, 0xe6, 0xa0, 0x8e, 0x29, 0xf0, 0x0b, 0x32, 0xf8, 0xd6, 0xdd, - 0xbc, 0x0b, 0xc5, 0x9d, - 0xe0, 0x12, 0x6e, 0xd5, 0xd7, 0x95, 0x5e, 0x18, 0x1b, 0x15, 0x17, 0x0f, - 0xcc, 0x18, 0xd2, 0x12, - 0x65, 0x66, 0x1b, 0x05, 0x89, 0x2b, 0xe6, 0x9f, 0x55, 0x77, 0xfb, 0x64, - 0xdc, 0x9f, 0x14, 0x66, - 0x29, 0xfa, 0x84, 0xb6, 0x6b, 0x2a, 0xed, 0xd5, 0x87, 0xd1, 0x0c, 0xd9, - 0xec, 0xd5, 0x9d, 0xfa, - 0xac, 0x8e, 0xf1, 0x66, 0x35, 0x94, 0x55, 0x52, 0xc9, 0xb3, 0xe0, 0xb2, - 0xfc, 0x52, 0x5b, 0x8e, - 0xb2, 0x25, 0xa5, 0x7a, 0x01, 0xc1, 0x47, 0x71, 0xd6, 0x74, 0x0f, 0x7e, - 0xd7, 0x71, 0x2b, 0x25, - 0x37, 0x51, 0xd0, 0xaa, 0x5f, 0x7f, 0xff, 0xf6, 0x98, 0x16, 0xe3, 0x15, - 0xc7, 0xf6, 0xed, 0x51, - 0x7b, 0xcd, 0x4f, 0x19, 0xbd, 0x7e, 0xf4, 0xbc, 0x4a, 0xb0, 0x14, 0xa8, - 0xf7, 0xbc, 0x64, 0xcd, - 0xfe, 0xb9, 0x3a, 0xc9, 0xe3, 0xc0, 0x4c, 0x3b, 0x04, 0xd2, 0xf8, 0xc3, - 0xe7, 0x3b, 0xa2, 0xb9, - 0xe3, 0x36, 0xb2, 0xbc, 0xba, 0x7c, 0xe2, 0x28, 0x2d, 0x3f, 0x39, 0x11, - 0x97, 0x28, 0xb5, 0x36, - 0x66, 0x42, 0xc7, 0x6c, 0xe4, 0xc2, 0x5a, 0xaf, 0x63, 0x5d, 0xd5, 0x7a, - 0x87, 0xaf, 0x73, 0x42, - 0x2a, 0xde, 0x58, 0xdf, 0x06, 0xc3, 0x51, 0xe5, 0xb1, 0xfb, 0x22, 0xc7, - 0xb7, 0xe5, 0xfa, 0xde, - 0xaf, 0xaa, 0x2d, 0x0f, 0x58, 0x7d, 0xe9, 0x62, 0xff, 0x99, 0xce, 0xac, - 0xa7, 0x62, 0x3c, 0xaa, - 0x10, 0x03, 0x8b, 0x35, 0xb4, 0x78, 0xce, 0xc3, 0xe3, 0xe2, 0x63, 0xa0, - 0x57, 0xc3, 0xd4, 0x03, - 0x95, 0x77, 0xfe, 0xe5, 0xea, 0xc6, 0x76, 0x44, 0xad, 0x80, 0x8f, 0xcb, - 0x47, 0x44, 0x12, 0x77, - 0xd9, 0xeb, 0x61, 0x56, 0x08, 0xc7, 0x7d, 0x0e, 0x7f, 0x26, 0x78, 0x76, - 0x77, 0x0e, 0x9b, 0xeb, - 0x5c, 0x9f, 0x14, 0x86, 0x56, 0x79, 0xc5, 0x89, 0x31, 0x44, 0x94, 0x1d, - 0x67, 0x89, 0x5d, 0x9f, - 0x41, 0x10, 0x9c, 0xf3, 0x0f, 0xc5, 0x6b, 0x9a, 0x18, 0xa9, 0x55, 0xcf, - 0x17, 0x9a, 0x4a, 0x10, - 0xc4, 0x64, 0xe9, 0x23, 0x51, 0x7b, 0xd3, 0x1d, 0x56, 0xcb, 0xb9, 0xa4, - 0x07, 0x1d, 0x8c, 0x64, - 0x88, 0xf8, 0x76, 0x90, 0xb3, 0x7a, 0xd8, 0x57, 0x84, 0x6d, 0x4e, 0x19, - 0x37, 0x57, 0x05, 0xf8, - 0x0d, 0x8c, 0x03, 0x40, 0xed, 0xc4, 0x60, 0xd0, 0xca, 0x0f, 0xa2, 0x72, - 0x27, 0xd0, 0xc3, 0x8c, - 0x35, 0x69, 0xf9, 0xe4, 0xa8, 0x70, 0x96, 0xd6, 0xbc, 0x9b, 0xd7, 0x01, - 0x14, 0xd6, 0x16, 0x69, - 0xb0, 0x1d, 0x8c, 0x34, 0xf6, 0xce, 0x2e, 0x51, 0xf2, 0xf9, 0x3b, 0x6a, - 0x04, 0x51, 0xd0, 0x1d, - 0xfc, 0x81, 0x13, 0x87, 0x14, 0xcf, 0x25, 0x1b, 0x20, 0x5f, 0xcc, 0xd7, - 0x34, 0x1b, 0x59, 0x81, - 0x79, 0xf5, 0x66, 0x57, 0x4a, 0x71, 0x9d, 0x9c, 0x6e, 0x3d, 0x20, 0xbc, - 0x24, 0x9c, 0x9f, 0xf5, - 0x64, 0x7a, 0xee, 0x22, 0x13, 0xcd, 0x33, 0x8f, 0x47, 0xd0, 0xe1, 0x6e, - 0x54, 0x8f, 0x88, 0x7a, - 0xe1, 0x0e, 0x9b, 0xf2, 0x4d, 0x73, 0x8b, 0x08, 0x09, 0xb2, 0x0d, 0x05, - 0x44, 0x08, 0x4e, 0x0e, - 0xad, 0x92, 0x04, 0x41, 0xaf, 0x72, 0x80, 0x42, 0xdb, 0x14, 0xfa, 0xb8, - 0x74, 0x42, 0xc7, 0x92, - 0x28, 0xe6, 0x71, 0x91, 0xf1, 0xcc, 0x38, 0xc5, 0x95, 0x76, 0x16, 0xd3, - 0x64, 0xc5, 0x01, 0xe6, - 0x97, 0x4f, 0xd7, 0xab, 0x1d, 0xc9, 0x1f, 0x64, 0x89, 0x0d, 0xbb, 0xdf, - 0x94, 0x64, 0xe9, 0x4f, - 0x12, 0x3b, 0xa2, 0x7b, 0x43, 0x77, 0xa7, 0xe3, 0xc7, 0x6f, 0x57, 0xb4, - 0x84, 0xe3, 0x2f, 0x3b, - 0x5e, 0xa7, 0x3d, 0xc8, 0xa1, 0x76, 0xac, 0xa9, 0x15, 0xc9, 0xa0, 0x09, - 0xb4, 0xa9, 0xa6, 0xa7, - 0xdb, 0xd3, 0x48, 0x18, 0xff, 0xc8, 0x14, 0x2e, 0x5b, 0xab, 0x4c, 0x62, - 0xa4, 0x2e, 0x60, 0xd3, - 0xc6, 0x5c, 0xc0, 0x6d, 0xa6, 0x74, 0xba, 0x3d, 0x72, 0x46, 0x8d, 0xb0, - 0xd4, 0x3d, 0x77, 0x5c, - 0x43, 0x28, 0xb5, 0xbd, 0xf8, 0xca, 0x02, 0xba, 0x3c, 0x24, 0x61, 0xdb, - 0xc4, 0xba, 0xb1, 0x28, - 0x0f, 0xb4, 0x2a, 0x0e, 0x1a, 0xcb, 0x09, 0xf0, 0xee, 0x82, 0x96, 0x66, - 0xf4, 0xf0, 0x38, 0xb4, - 0x8a, 0xc0, 0x5f, 0xde, 0x44, 0x75, 0xb1, 0x77, 0xa0, 0xe0, 0x7a, 0x0d, - 0xe4, 0x77, 0xfe, 0xc0, - 0x7f, 0xbd, 0x1d, 0x85, 0x90, 0x60, 0x26, 0xfc, 0x02, 0x69, 0x7c, 0x80, - 0x92, 0xfc, 0x51, 0xbd, - 0xfa, 0xc9, 0x68, 0x55, 0xce, 0xde, 0x9e, 0x7b, 0x4c, 0x0b, 0x90, 0xeb, - 0x82, 0x7b, 0x97, 0xc9, - 0xb6, 0x55, 0xf7, 0xe6, 0x2c, 0xdf, 0x95, 0x31, 0x9e, 0xad, 0x67, 0x56, - 0xb2, 0x31, 0x1e, 0x55, - 0x33, 0x21, 0x82, 0x36, 0x72, 0x61, 0x2d, 0xb6, 0xd0, 0xcf, 0x8b, 0x3d, - 0xa2, 0xb6, 0xd8, 0x21, - 0x2e, 0xae, 0x0a, 0x43, 0x2b, 0xdd, 0x83, 0xa5, 0xf9, 0x22, 0x4a, 0xef, - 0xd2, 0xa5, 0xcf, 0xae, - 0xab, 0xda, 0x7f, 0x93, 0x75, 0x63, 0x3b, 0x22, 0xb7, 0x40, 0xa6, 0x84, - 0xc2, 0x22, 0x09, 0xda, - 0xe7, 0x46, 0xe0, 0x20, 0x97, 0x62, 0x30, 0x68, 0x65, 0xe6, 0x51, 0x39, - 0xf2, 0x68, 0x80, 0x46, - 0x62, 0x32, 0x95, 0xf0, 0xc9, 0xdc, 0x88, 0xef, 0x2b, 0x84, 0xbd, 0x52, - 0xe2, 0xef, 0x46, 0x32, - 0xdd, 0x9b, 0x33, 0xca, 0x25, 0xd9, 0xaf, 0x4e, 0x37, 0xff, 0x10, 0x5e, - 0x12, 0x4e, 0xae, 0x9b, - 0x58, 0xef, 0x46, 0x1a, 0x7b, 0x67, 0x17, 0xc9, 0x79, 0x9d, 0xfc, 0x35, - 0x02, 0xc9, 0x68, 0xef, - 0x14, 0x73, 0xd9, 0xa9, 0x99, 0x66, 0x1c, 0x83, 0xab, 0x3b, 0x0b, 0x88, - 0x32, 0x83, 0xe1, 0x73, - 0x91, 0x07, 0xac, 0x79, 0xc7, 0xd8, 0xa4, 0x04, 0xe5, 0x59, 0xe7, 0xe3, - 0x22, 0x04, 0x27, 0x07, - 0x8c, 0x88, 0x24, 0x0c, 0x9e, 0x64, 0x0a, 0x17, 0xcc, 0xb4, 0x26, 0x31, - 0x52, 0x17, 0x30, 0x88, - 0x09, 0xfc, 0x51, 0xdc, 0xc0, 0xda, 0xb2, 0x90, 0x82, 0xd6, 0xca, 0x5a, - 0x42, 0x90, 0xf6, 0xfc, - 0x45, 0x60, 0xce, 0x6f, 0x22, 0xdb, 0xb9, 0xda, 0x50, 0x70, 0x3d, 0xe7, - 0x72, 0xda, 0x7f, 0x60, - 0xc0, 0x14, 0xbb, 0xbf, 0x7c, 0x65, 0x01, 0x5d, 0x1e, 0x12, 0xd1, 0x8c, - 0x62, 0x5d, 0xb9, 0x14, - 0xf8, 0xf1, 0x41, 0x1b, 0x39, 0xd1, 0xf7, 0x5b, 0x68, 0x86, 0xa4, 0xff, - 0x51, 0x5b, 0x6c, 0xf1, - 0x7d, 0x85, 0x34, 0xcb, 0x67, 0x6f, 0x4f, 0xdc, 0x26, 0xe4, 0x48, 0x94, - 0x41, 0xdc, 0xaa, 0x85, - 0x31, 0x19, 0xab, 0x78, 0x85, 0x6e, 0x44, 0x96, 0xf4, 0x42, 0xbf, 0x29, - 0x71, 0x96, 0x23, 0x19, - 0xb4, 0x6d, 0xde, 0xa8, 0xdb, 0xd0, 0xfc, 0x11, 0xba, 0x20, 0x53, 0x42, - 0x61, 0x11, 0xe5, 0x6d, - 0xa9, 0xe2, 0x56, 0xdd, 0x82, 0x6c, 0x52, 0x02, 0x93, 0xcd, 0x92, 0x90, - 0x11, 0x02, 0xf2, 0xe2, - 0x2c, 0x96, 0x23, 0x0d, 0xdc, 0xd2, 0xea, 0x85, 0xdd, 0xaf, 0x7e, 0xfb, - 0x01, 0x85, 0x34, 0x96, - 0x60, 0x0a, 0xbc, 0xbe, 0x3e, 0xd3, 0xe1, 0xcf, 0x0f, 0x09, 0x89, 0x46, - 0x31, 0xcf, 0xbd, 0x0a, - 0xe5, 0x7e, 0xc9, 0x6e, 0x60, 0x6d, 0x59, 0x48, 0x41, 0x6b, 0x65, 0x2d, - 0x21, 0x48, 0x7b, 0x7e, - 0x5a, 0xd7, 0x6f, 0x54, 0x8c, 0x68, 0x7e, 0xe9, 0x5d, 0x10, 0xc8, 0x21, - 0xd1, 0xe9, 0x93, 0xd7, - 0xdf, 0xa3, 0x1a, 0x84, 0xd2, 0xd6, 0xc6, 0x6e, 0x13, 0x72, 0x24, 0x4a, - 0xc1, 0x6e, 0x55, 0xa3, - 0x93, 0x3f, 0x85, 0x37, 0x30, 0xd7, 0xcd, 0x24, 0xc1, 0xd4, 0xd3, 0xf7, - 0xf1, 0x24, 0xdc, 0x3f, - 0x16, 0x4b, 0xf0, 0xe7, 0x6e, 0x69, 0x75, 0xa3, 0x8f, 0xb6, 0x3f, 0x9c, - 0xe1, 0xa3, 0x1a, 0x4b, - 0x0b, 0xc4, 0x78, 0x92, 0x37, 0xd5, 0xdb, 0xb0, 0xa6, 0x5b, 0xfe, 0x4e, - 0x91, 0xb0, 0x0d, 0xc4, - 0x8e, 0xb0, 0x0d, 0x42, 0x69, 0x6b, 0x63, 0x37, 0xe8, 0x39, 0x12, 0x25, - 0x81, 0x37, 0xcb, 0xb0, - 0xc2, 0x2c, 0x92, 0xf1, 0x8b, 0x6a, 0x68, 0x7d, 0x3a, 0x9f, 0xe5, 0x98, - 0xb1, 0x7d, 0x42, 0x2c, - 0x47, 0x58, 0xe7, 0x21, 0xd5, 0xd4, 0xd0, 0xfa, 0x74, 0xfd, 0x09, 0xf3, - 0xa1, 0xfa, 0x84, 0x58, - 0xeb, 0xd6, 0x16, 0x47, 0xe0, 0x40, 0x85, 0xa8, 0xbd, 0x4e, 0xe9, 0x41, - 0x5d, 0xa8, 0xdf, 0xd6, - 0x6e, 0xa2, 0x63, 0x97, 0xbe, 0xfe, 0x3d, 0x2f, 0xf3, 0x2c, 0x05, 0x2a, - 0x4d, 0x2f, 0x19, 0xa2, - 0x22, 0x3e, 0xfc, 0x24, 0x5c, 0xff, 0x36, 0x65, 0x21, 0x8a, 0xf2, 0x97, - 0x7d, 0x65, 0x90, 0x3e, - 0xa7, 0x4a, 0x89, 0xf4, 0x02, 0x41, 0x8e, 0xe2, 0x6f, 0xe8, 0x1e, 0xfc, - 0x6d, 0xe2, 0x56, 0x4a, - 0xba, 0xc5, 0x01, 0x81, 0x5b, 0xfd, 0x20, 0xf1, 0x46, 0x05, 0xdf, 0x2e, - 0x1d, 0xf1, 0x41, 0xc5, - 0x3f, 0xb1, 0x74, 0x51, 0x05, 0x43, 0x98, 0x76, 0x08, 0x67, 0x33, 0x45, - 0x0d, 0x76, 0x87, 0xb1, - 0x73, 0x2d, 0xeb, 0xe2, 0xe7, 0x42, 0x93, 0x3c, 0xda, 0xc1, 0xc4, 0xf8, - 0x3d, 0x3c, 0x0e, 0x2d, - 0xf6, 0x59, 0x9e, 0x32, 0xb9, 0xfc, 0x2b, 0xbb, 0x94, 0xa3, 0x28, 0x93, - 0x2d, 0xbb, 0xc8, 0x59, - 0x49, 0xf0, 0x38, 0x08, 0x55, 0xf9, 0x0c, 0x1a, 0x88, 0xd8, 0x85, 0x9f, - 0xdd, 0x1a, 0x20, 0xf0, - 0xcc, 0x84, 0x4d, 0xd8, 0x0b, 0x47, 0xb4, 0x9d, 0xc6, 0xba, 0x69, 0xf4, - 0xcd, 0x9d, 0xe6, 0x84, - 0x80, 0x18, 0xd2, 0x6b, 0xe9, 0x46, 0xbf, 0xd7, 0x14, 0x1c, 0x9e, 0x49, - 0xfd, 0xd7, 0x6f, 0x18, - 0x05, 0x6c, 0xa7, 0xbb, 0xb7, 0xf8, 0x07, 0x50, 0x5a, 0x7e, 0x72, 0x22, - 0xed, 0x50, 0xa9, 0x6c, - 0x18, 0xe3, 0x2f, 0xce, 0xee, 0x44, 0xa9, 0x43, 0x73, 0x93, 0xb3, 0xf0, - 0x9d, 0x43, 0xbe, 0xe3, - 0x9d, 0x97, 0x5a, 0x1e, 0xb0, 0xfa, 0x11, 0xc4, 0x3d, 0xf1, 0x5f, 0x9b, - 0x8d, 0xc4, 0x78, 0x97, - 0xd1, 0x0b, 0xc5, 0xad, 0x52, 0xfb, 0x1a, 0x8e, 0xef, 0x57, 0xa8, 0x26, - 0xbd, 0x8e, 0xf1, 0x0b, - 0x54, 0x7f, 0xb0, 0x7d, 0x0c, 0x45, 0xa2, 0x09, 0xa1, 0x35, 0x44, 0x4d, - 0xad, 0x09, 0x37, 0x7f, - 0x6c, 0x9a, 0x4a, 0xd9, 0x49, 0xf1, 0x54, 0x0f, 0xd7, 0xa1, 0x31, 0x3e, - 0x9e, 0x0f, 0xe2, 0x9a, - 0xe9, 0xee, 0x3f, 0x09, 0x17, 0x4f, 0xec, 0x88, 0x99, 0xc3, 0xdd, 0x55, - 0x8e, 0x88, 0x24, 0xee, - 0xa5, 0x72, 0xa0, 0xba, 0xf5, 0x4e, 0xe7, 0xc2, 0x4b, 0x65, 0x2a, 0xe8, - 0xbe, 0xc2, 0xad, 0x72, - 0x20, 0x06, 0xd5, 0x6a, 0xab, 0xf0, 0x5f, 0x45, 0x05, 0x07, 0xc6, 0x83, - 0xae, 0x45, 0x6b, 0x06, - 0x3d, 0x89, 0x5d, 0x1f, 0xf2, 0x4c, 0xf1, 0x56, 0x2c, 0xea, 0x07, 0x51, - 0xde, 0x56, 0x7c, 0x89, - 0xb8, 0xfd, 0x28, 0xcf, 0xac, 0xf2, 0x49, 0xd1, 0x62, 0x88, 0xeb, 0x3a, - 0xce, 0xd1, 0xba, 0xfd, - 0xf4, 0x61, 0xb7, 0x7c, 0x4e, 0xf3, 0x42, 0x9b, 0xb0, 0x2e, 0x1c, 0x87, - 0xfe, 0x9b, 0x33, 0x61, - 0x71, 0x15, 0xc2, 0xac, 0x10, 0x4d, 0xfa, 0x1c, 0xfe, 0x4c, 0xf0, 0xec, - 0xee, 0x1c, 0xf5, 0x15, - 0xce, 0xbc, 0x64, 0x96, 0xfc, 0x48, 0xdd, 0xbd, 0xe2, 0x37, 0x5d, 0xe0, - 0x1e, 0xbd, 0x1d, 0xbc, - 0x4b, 0xc8, 0x11, 0x46, 0xa2, 0xf6, 0x65, 0x3a, 0xac, 0x55, 0xb1, 0x8b, - 0x0e, 0x3a, 0xdb, 0xc8, - 0x07, 0x54, 0x8e, 0xf5, 0x40, 0xf7, 0x6e, 0x70, 0x7e, 0xf3, 0x46, 0x36, - 0x3e, 0x70, 0x52, 0x54, - 0x82, 0x20, 0xfb, 0x25, 0x1e, 0x49, 0xd6, 0xf7, 0x30, 0x91, 0xaa, 0x5d, - 0x2e, 0xf7, 0x94, 0x20, - 0x9f, 0xaf, 0x73, 0x50, 0x47, 0xf5, 0x78, 0xe4, 0x19, 0x7c, 0x6b, 0x8f, - 0x5e, 0xe4, 0x83, 0xaf, - 0x1a, 0xdb, 0x06, 0x80, 0x19, 0x4b, 0xc0, 0x63, 0x57, 0x1e, 0x87, 0xe4, - 0x4e, 0x63, 0x45, 0xdb, - 0x56, 0x47, 0x99, 0x33, 0xfb, 0x4a, 0xcb, 0x29, 0x85, 0xb8, 0x70, 0x59, - 0x7e, 0x29, 0xcc, 0x47, - 0xd3, 0x33, 0xec, 0xe3, 0xa5, 0xf4, 0x73, 0xae, 0xcb, 0xda, 0x9c, 0x32, - 0x6e, 0xae, 0x0a, 0x33, - 0x26, 0x4e, 0xae, 0xb8, 0x71, 0xe1, 0xe4, 0x25, 0x69, 0x53, 0x9a, 0xbf, - 0x18, 0x25, 0xa5, 0x4e, - 0xa3, 0x3a, 0xdb, 0x68, 0x2f, 0x5f, 0x5c, 0xa2, 0x27, 0x31, 0x76, 0xd4, - 0x08, 0xa2, 0x63, 0x3a, - 0xef, 0xa6, 0x44, 0xdb, 0xcd, 0x5e, 0x57, 0xe8, 0xf5, 0x97, 0x81, 0x69, - 0x38, 0xe8, 0xea, 0xa6, - 0x6a, 0xd2, 0x31, 0x0b, 0x93, 0xe0, 0xef, 0x6f, 0xbb, 0xf5, 0x6d, 0x02, - 0x28, 0x6f, 0x2c, 0xd2, - 0x77, 0x5d, 0xb9, 0x7e, 0xca, 0x5c, 0x41, 0x7c, 0x92, 0x18, 0xac, 0xd0, - 0x58, 0x7c, 0x3b, 0x5d, - 0xf2, 0x29, 0xcc, 0xae, 0x94, 0xe2, 0xf9, 0xfb, 0xdc, 0x7a, 0x40, 0xbb, - 0x48, 0xfb, 0xfd, 0x29, - 0xbe, 0xb5, 0x53, 0x1d, 0x76, 0xe3, 0xf2, 0xb1, 0x0e, 0xdc, 0xb7, 0x06, - 0x78, 0xb1, 0x74, 0xb5, - 0x3b, 0xc1, 0x26, 0xcd, 0x28, 0x5d, 0x4a, 0x36, 0x40, 0xbe, 0x5b, 0x6d, - 0x68, 0x36, 0xb2, 0xc1, - 0x84, 0x68, 0x80, 0xf7, 0xc4, 0x58, 0x6d, 0x97, 0x5c, 0xc5, 0xf6, 0x61, - 0x98, 0x97, 0x5a, 0x68, - 0x01, 0x1c, 0xf5, 0x27, 0x9a, 0xe6, 0xd5, 0x10, 0x12, 0xa7, 0x1a, 0x0a, - 0x88, 0x10, 0x9c, 0x1c, - 0x4d, 0x80, 0x6a, 0x94, 0x78, 0xe7, 0xde, 0x5a, 0xc0, 0x01, 0xed, 0xb7, - 0xb8, 0x5a, 0x15, 0x80, - 0xc8, 0xf4, 0x1f, 0x44, 0x26, 0x59, 0x66, 0xdd, 0x8e, 0x63, 0x01, 0xdc, - 0xa8, 0xdd, 0xd3, 0xf4, - 0xd5, 0x7b, 0x97, 0x31, 0x7f, 0xe5, 0xc8, 0xce, 0xa7, 0x8e, 0xc0, 0x0e, - 0xd8, 0xce, 0xc4, 0x7b, - 0x50, 0x0f, 0xe2, 0xe1, 0x21, 0x5b, 0x70, 0x49, 0xe9, 0xec, 0x2c, 0x65, - 0xc8, 0x49, 0x02, 0x0f, - 0x1c, 0x93, 0x7d, 0x52, 0xc3, 0x5a, 0x7b, 0x03, 0x3b, 0x4a, 0xdb, 0xd8, - 0xf8, 0x03, 0x8b, 0x93, - 0x99, 0xe7, 0x08, 0x82, 0x9d, 0xe4, 0xc3, 0x84, 0x75, 0x28, 0x37, 0xb3, - 0xe8, 0x84, 0x4d, 0xe7, - 0xa1, 0x02, 0xf2, 0x26, 0xd8, 0x50, 0x35, 0x82, 0x03, 0xbc, 0x42, 0xc0, - 0xdb, 0x82, 0x98, 0x02, - 0x24, 0x76, 0x87, 0xf6, 0x86, 0xee, 0x8d, 0x05, 0x4d, 0xde, 0xae, 0xab, - 0xcb, 0x05, 0x5e, 0x76, - 0x68, 0xea, 0x18, 0x45, 0x64, 0xef, 0x86, 0x4f, 0x9f, 0x78, 0x59, 0x16, - 0xfb, 0x4f, 0xd7, 0xea, - 0xed, 0x9e, 0x6d, 0x95, 0x3a, 0x51, 0x3e, 0xc8, 0xd1, 0x1a, 0xb5, 0x7d, - 0xeb, 0xc8, 0x11, 0x9e, - 0xf0, 0x11, 0xe5, 0xe0, 0x63, 0xed, 0x90, 0xdb, 0xf8, 0xf7, 0x74, 0xaf, - 0x9b, 0xdb, 0x06, 0x11, - 0x75, 0x65, 0x90, 0x30, 0x3d, 0x53, 0x28, 0x5c, 0xb6, 0x95, 0x98, 0xc4, - 0x8b, 0x5c, 0xc0, 0x65, - 0x39, 0xf9, 0x0f, 0x83, 0xdf, 0x52, 0x23, 0x16, 0x64, 0x33, 0x6f, 0x79, - 0xbb, 0x16, 0x49, 0xf9, - 0xbc, 0x8d, 0x7a, 0x53, 0x81, 0xec, 0x9b, 0x91, 0x2a, 0x51, 0x83, 0x12, - 0xab, 0x91, 0x8f, 0x8d, - 0x03, 0x24, 0xdc, 0x69, 0x6d, 0xe9, 0xbc, 0x30, 0x36, 0x2a, 0x2e, 0x1e, - 0x5b, 0x30, 0x67, 0x24, - 0x86, 0x50, 0xa9, 0xb9, 0x33, 0x57, 0x04, 0xb7, 0x78, 0x48, 0xc2, 0x75, - 0x4b, 0xb7, 0xa1, 0x50, - 0xca, 0xcc, 0x36, 0x0a, 0xd1, 0x56, 0x0f, 0xfd, 0xaa, 0xee, 0x35, 0xc8, - 0x7b, 0xfd, 0x28, 0xcc, - 0x4f, 0xb8, 0x43, 0xda, 0x8f, 0xe8, 0xb7, 0x7a, 0xe4, 0x8c, 0xd9, 0xa3, - 0x6b, 0x7a, 0xee, 0xb8, - 0x52, 0x37, 0xcb, 0xaf, 0xd6, 0x54, 0x19, 0x69, 0xcd, 0x61, 0x18, 0x71, - 0x1b, 0x69, 0xf9, 0x37, - 0xd7, 0x43, 0xbe, 0x7f, 0x88, 0xea, 0xa1, 0xee, 0x83, 0x03, 0xf4, 0x1a, - 0x0b, 0xee, 0x3f, 0x43, - 0x9b, 0xdf, 0x21, 0xcc, 0x6a, 0xeb, 0xaa, 0xa4, 0x51, 0xa5, 0x03, 0xa7, - 0x3b, 0xa4, 0xb6, 0xdf, - 0x1e, 0xab, 0x54, 0x1c, 0x34, 0x55, 0x12, 0x23, 0x1f, 0xc7, 0xef, 0xcc, - 0x2b, 0x23, 0x70, 0xab, - }, - { /* 14 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x20, 0x2d, 0x99, 0xe9, 0x95, 0x9f, 0xd4, 0x49, 0xe6, 0xd5, 0x76, 0xf2, - 0x33, 0xc8, 0x20, 0x98, - 0x40, 0x5a, 0xf1, 0x11, 0xe9, 0xfd, 0x6b, 0x92, 0x0f, 0x69, 0xec, 0x27, - 0x66, 0x53, 0x40, 0xf3, - 0x60, 0x77, 0x68, 0xf8, 0x7c, 0x62, 0xbf, 0xdb, 0xe9, 0xbc, 0x9a, 0xd5, - 0x55, 0x9b, 0x60, 0x6b, - 0x80, 0xb4, 0x21, 0x22, 0x11, 0x39, 0xd6, 0xe7, 0x1e, 0xd2, 0x1b, 0x4e, - 0xcc, 0xa6, 0x80, 0x25, - 0xa0, 0x99, 0xb8, 0xcb, 0x84, 0xa6, 0x02, 0xae, 0xf8, 0x07, 0x6d, 0xbc, - 0xff, 0x6e, 0xa0, 0xbd, - 0xc0, 0xee, 0xd0, 0x33, 0xf8, 0xc4, 0xbd, 0x75, 0x11, 0xbb, 0xf7, 0x69, - 0xaa, 0xf5, 0xc0, 0xd6, - 0xe0, 0xc3, 0x49, 0xda, 0x6d, 0x5b, 0x69, 0x3c, 0xf7, 0x6e, 0x81, 0x9b, - 0x99, 0x3d, 0xe0, 0x4e, - 0xc3, 0xab, 0x42, 0x44, 0x22, 0x72, 0x6f, 0x0d, 0x3c, 0x67, 0x36, 0x9c, - 0x5b, 0x8f, 0xc3, 0x4a, - 0xe3, 0x86, 0xdb, 0xad, 0xb7, 0xed, 0xbb, 0x44, 0xda, 0xb2, 0x40, 0x6e, - 0x68, 0x47, 0xe3, 0xd2, - 0x83, 0xf1, 0xb3, 0x55, 0xcb, 0x8f, 0x04, 0x9f, 0x33, 0x0e, 0xda, 0xbb, - 0x3d, 0xdc, 0x83, 0xb9, - 0xa3, 0xdc, 0x2a, 0xbc, 0x5e, 0x10, 0xd0, 0xd6, 0xd5, 0xdb, 0xac, 0x49, - 0x0e, 0x14, 0xa3, 0x21, - 0x43, 0x1f, 0x63, 0x66, 0x33, 0x4b, 0xb9, 0xea, 0x22, 0xb5, 0x2d, 0xd2, - 0x97, 0x29, 0x43, 0x6f, - 0x63, 0x32, 0xfa, 0x8f, 0xa6, 0xd4, 0x6d, 0xa3, 0xc4, 0x60, 0x5b, 0x20, - 0xa4, 0xe1, 0x63, 0xf7, - 0x03, 0x45, 0x92, 0x77, 0xda, 0xb6, 0xd2, 0x78, 0x2d, 0xdc, 0xc1, 0xf5, - 0xf1, 0x7a, 0x03, 0x9c, - 0x23, 0x68, 0x0b, 0x9e, 0x4f, 0x29, 0x06, 0x31, 0xcb, 0x09, 0xb7, 0x07, - 0xc2, 0xb2, 0x23, 0x04, - 0x45, 0x95, 0x84, 0x88, 0x44, 0xe4, 0xde, 0x1a, 0x78, 0xce, 0x6c, 0xfb, - 0xb6, 0xdd, 0x45, 0x94, - 0x65, 0xb8, 0x1d, 0x61, 0xd1, 0x7b, 0x0a, 0x53, 0x9e, 0x1b, 0x1a, 0x09, - 0x85, 0x15, 0x65, 0x0c, - 0x05, 0xcf, 0x75, 0x99, 0xad, 0x19, 0xb5, 0x88, 0x77, 0xa7, 0x80, 0xdc, - 0xd0, 0x8e, 0x05, 0x67, - 0x25, 0xe2, 0xec, 0x70, 0x38, 0x86, 0x61, 0xc1, 0x91, 0x72, 0xf6, 0x2e, - 0xe3, 0x46, 0x25, 0xff, - 0xc5, 0x21, 0xa5, 0xaa, 0x55, 0xdd, 0x08, 0xfd, 0x66, 0x1c, 0x77, 0xb5, - 0x7a, 0x7b, 0xc5, 0xb1, - 0xe5, 0x0c, 0x3c, 0x43, 0xc0, 0x42, 0xdc, 0xb4, 0x80, 0xc9, 0x01, 0x47, - 0x49, 0xb3, 0xe5, 0x29, - 0x85, 0x7b, 0x54, 0xbb, 0xbc, 0x20, 0x63, 0x6f, 0x69, 0x75, 0x9b, 0x92, - 0x1c, 0x28, 0x85, 0x42, - 0xa5, 0x56, 0xcd, 0x52, 0x29, 0xbf, 0xb7, 0x26, 0x8f, 0xa0, 0xed, 0x60, - 0x2f, 0xe0, 0xa5, 0xda, - 0x86, 0x3e, 0xc6, 0xcc, 0x66, 0x96, 0xb1, 0x17, 0x44, 0xa9, 0x5a, 0x67, - 0xed, 0x52, 0x86, 0xde, - 0xa6, 0x13, 0x5f, 0x25, 0xf3, 0x09, 0x65, 0x5e, 0xa2, 0x7c, 0x2c, 0x95, - 0xde, 0x9a, 0xa6, 0x46, - 0xc6, 0x64, 0x37, 0xdd, 0x8f, 0x6b, 0xda, 0x85, 0x4b, 0xc0, 0xb6, 0x40, - 0x8b, 0x01, 0xc6, 0x2d, - 0xe6, 0x49, 0xae, 0x34, 0x1a, 0xf4, 0x0e, 0xcc, 0xad, 0x15, 0xc0, 0xb2, - 0xb8, 0xc9, 0xe6, 0xb5, - 0x06, 0x8a, 0xe7, 0xee, 0x77, 0xaf, 0x67, 0xf0, 0x5a, 0x7b, 0x41, 0x29, - 0x21, 0xf4, 0x06, 0xfb, - 0x26, 0xa7, 0x7e, 0x07, 0xe2, 0x30, 0xb3, 0xb9, 0xbc, 0xae, 0x37, 0xdb, - 0x12, 0x3c, 0x26, 0x63, - 0x46, 0xd0, 0x16, 0xff, 0x9e, 0x52, 0x0c, 0x62, 0x55, 0x12, 0xad, 0x0e, - 0x47, 0xa7, 0x46, 0x08, - 0x66, 0xfd, 0x8f, 0x16, 0x0b, 0xcd, 0xd8, 0x2b, 0xb3, 0xc7, 0xdb, 0xfc, - 0x74, 0x6f, 0x66, 0x90, - 0x8a, 0xe9, 0xcb, 0xd3, 0x88, 0x0b, 0x7f, 0x34, 0xf0, 0x5f, 0xd8, 0x35, - 0xaf, 0x79, 0x8a, 0xeb, - 0xaa, 0xc4, 0x52, 0x3a, 0x1d, 0x94, 0xab, 0x7d, 0x16, 0x8a, 0xae, 0xc7, - 0x9c, 0xb1, 0xaa, 0x73, - 0xca, 0xb3, 0x3a, 0xc2, 0x61, 0xf6, 0x14, 0xa6, 0xff, 0x36, 0x34, 0x12, - 0xc9, 0x2a, 0xca, 0x18, - 0xea, 0x9e, 0xa3, 0x2b, 0xf4, 0x69, 0xc0, 0xef, 0x19, 0xe3, 0x42, 0xe0, - 0xfa, 0xe2, 0xea, 0x80, - 0x0a, 0x5d, 0xea, 0xf1, 0x99, 0x32, 0xa9, 0xd3, 0xee, 0x8d, 0xc3, 0x7b, - 0x63, 0xdf, 0x0a, 0xce, - 0x2a, 0x70, 0x73, 0x18, 0x0c, 0xad, 0x7d, 0x9a, 0x08, 0x58, 0xb5, 0x89, - 0x50, 0x17, 0x2a, 0x56, - 0x4a, 0x07, 0x1b, 0xe0, 0x70, 0xcf, 0xc2, 0x41, 0xe1, 0xe4, 0x2f, 0x5c, - 0x05, 0x8c, 0x4a, 0x3d, - 0x6a, 0x2a, 0x82, 0x09, 0xe5, 0x50, 0x16, 0x08, 0x07, 0x31, 0x59, 0xae, - 0x36, 0x44, 0x6a, 0xa5, - 0x49, 0x42, 0x89, 0x97, 0xaa, 0x79, 0x10, 0x39, 0xcc, 0x38, 0xee, 0xa9, - 0xf4, 0xf6, 0x49, 0xa1, - 0x69, 0x6f, 0x10, 0x7e, 0x3f, 0xe6, 0xc4, 0x70, 0x2a, 0xed, 0x98, 0x5b, - 0xc7, 0x3e, 0x69, 0x39, - 0x09, 0x18, 0x78, 0x86, 0x43, 0x84, 0x7b, 0xab, 0xc3, 0x51, 0x02, 0x8e, - 0x92, 0xa5, 0x09, 0x52, - 0x29, 0x35, 0xe1, 0x6f, 0xd6, 0x1b, 0xaf, 0xe2, 0x25, 0x84, 0x74, 0x7c, - 0xa1, 0x6d, 0x29, 0xca, - 0xc9, 0xf6, 0xa8, 0xb5, 0xbb, 0x40, 0xc6, 0xde, 0xd2, 0xea, 0xf5, 0xe7, - 0x38, 0x50, 0xc9, 0x84, - 0xe9, 0xdb, 0x31, 0x5c, 0x2e, 0xdf, 0x12, 0x97, 0x34, 0x3f, 0x83, 0x15, - 0x0b, 0x98, 0xe9, 0x1c, - 0x89, 0xac, 0x59, 0xa4, 0x52, 0xbd, 0xad, 0x4c, 0xdd, 0x83, 0x19, 0xc0, - 0x5e, 0x03, 0x89, 0x77, - 0xa9, 0x81, 0xc0, 0x4d, 0xc7, 0x22, 0x79, 0x05, 0x3b, 0x56, 0x6f, 0x32, - 0x6d, 0xcb, 0xa9, 0xef, - 0xcf, 0x7c, 0x4f, 0x5b, 0xcc, 0xef, 0xa1, 0x2e, 0x88, 0x91, 0xb4, 0xce, - 0x19, 0xa4, 0xcf, 0x7f, - 0xef, 0x51, 0xd6, 0xb2, 0x59, 0x70, 0x75, 0x67, 0x6e, 0x44, 0xc2, 0x3c, - 0x2a, 0x6c, 0xef, 0xe7, - 0x8f, 0x26, 0xbe, 0x4a, 0x25, 0x12, 0xca, 0xbc, 0x87, 0xf8, 0x58, 0xe9, - 0x7f, 0xf7, 0x8f, 0x8c, - 0xaf, 0x0b, 0x27, 0xa3, 0xb0, 0x8d, 0x1e, 0xf5, 0x61, 0x2d, 0x2e, 0x1b, - 0x4c, 0x3f, 0xaf, 0x14, - 0x4f, 0xc8, 0x6e, 0x79, 0xdd, 0xd6, 0x77, 0xc9, 0x96, 0x43, 0xaf, 0x80, - 0xd5, 0x02, 0x4f, 0x5a, - 0x6f, 0xe5, 0xf7, 0x90, 0x48, 0x49, 0xa3, 0x80, 0x70, 0x96, 0xd9, 0x72, - 0xe6, 0xca, 0x6f, 0xc2, - 0x0f, 0x92, 0x9f, 0x68, 0x34, 0x2b, 0x1c, 0x5b, 0x99, 0x2a, 0x43, 0xa7, - 0xb3, 0x51, 0x0f, 0xa9, - 0x2f, 0xbf, 0x06, 0x81, 0xa1, 0xb4, 0xc8, 0x12, 0x7f, 0xff, 0x35, 0x55, - 0x80, 0x99, 0x2f, 0x31, - 0x0c, 0xd7, 0x0d, 0x1f, 0xee, 0x9d, 0xce, 0x23, 0xb4, 0xf6, 0x82, 0x52, - 0x42, 0x2b, 0x0c, 0x35, - 0x2c, 0xfa, 0x94, 0xf6, 0x7b, 0x02, 0x1a, 0x6a, 0x52, 0x23, 0xf4, 0xa0, - 0x71, 0xe3, 0x2c, 0xad, - 0x4c, 0x8d, 0xfc, 0x0e, 0x07, 0x60, 0xa5, 0xb1, 0xbb, 0x9f, 0x6e, 0x75, - 0x24, 0x78, 0x4c, 0xc6, - 0x6c, 0xa0, 0x65, 0xe7, 0x92, 0xff, 0x71, 0xf8, 0x5d, 0x4a, 0x18, 0x87, - 0x17, 0xb0, 0x6c, 0x5e, - 0x8c, 0x63, 0x2c, 0x3d, 0xff, 0xa4, 0x18, 0xc4, 0xaa, 0x24, 0x99, 0x1c, - 0x8e, 0x8d, 0x8c, 0x10, - 0xac, 0x4e, 0xb5, 0xd4, 0x6a, 0x3b, 0xcc, 0x8d, 0x4c, 0xf1, 0xef, 0xee, - 0xbd, 0x45, 0xac, 0x88, - 0xcc, 0x39, 0xdd, 0x2c, 0x16, 0x59, 0x73, 0x56, 0xa5, 0x4d, 0x75, 0x3b, - 0xe8, 0xde, 0xcc, 0xe3, - 0xec, 0x14, 0x44, 0xc5, 0x83, 0xc6, 0xa7, 0x1f, 0x43, 0x98, 0x03, 0xc9, - 0xdb, 0x16, 0xec, 0x7b, - 0xd7, 0x11, 0x55, 0x65, 0xd3, 0x16, 0xfe, 0x68, 0x23, 0xbe, 0x73, 0x6a, - 0x9d, 0xf2, 0xd7, 0x15, - 0xf7, 0x3c, 0xcc, 0x8c, 0x46, 0x89, 0x2a, 0x21, 0xc5, 0x6b, 0x05, 0x98, - 0xae, 0x3a, 0xf7, 0x8d, - 0x97, 0x4b, 0xa4, 0x74, 0x3a, 0xeb, 0x95, 0xfa, 0x2c, 0xd7, 0x9f, 0x4d, - 0xfb, 0xa1, 0x97, 0xe6, - 0xb7, 0x66, 0x3d, 0x9d, 0xaf, 0x74, 0x41, 0xb3, 0xca, 0x02, 0xe9, 0xbf, - 0xc8, 0x69, 0xb7, 0x7e, - 0x57, 0xa5, 0x74, 0x47, 0xc2, 0x2f, 0x28, 0x8f, 0x3d, 0x6c, 0x68, 0x24, - 0x51, 0x54, 0x57, 0x30, - 0x77, 0x88, 0xed, 0xae, 0x57, 0xb0, 0xfc, 0xc6, 0xdb, 0xb9, 0x1e, 0xd6, - 0x62, 0x9c, 0x77, 0xa8, - 0x17, 0xff, 0x85, 0x56, 0x2b, 0xd2, 0x43, 0x1d, 0x32, 0x05, 0x84, 0x03, - 0x37, 0x07, 0x17, 0xc3, - 0x37, 0xd2, 0x1c, 0xbf, 0xbe, 0x4d, 0x97, 0x54, 0xd4, 0xd0, 0xf2, 0xf1, - 0x04, 0xcf, 0x37, 0x5b, - 0x14, 0xba, 0x17, 0x21, 0xf1, 0x64, 0x91, 0x65, 0x1f, 0xd9, 0x45, 0xf6, - 0xc6, 0x7d, 0x14, 0x5f, - 0x34, 0x97, 0x8e, 0xc8, 0x64, 0xfb, 0x45, 0x2c, 0xf9, 0x0c, 0x33, 0x04, - 0xf5, 0xb5, 0x34, 0xc7, - 0x54, 0xe0, 0xe6, 0x30, 0x18, 0x99, 0xfa, 0xf7, 0x10, 0xb0, 0xa9, 0xd1, - 0xa0, 0x2e, 0x54, 0xac, - 0x74, 0xcd, 0x7f, 0xd9, 0x8d, 0x06, 0x2e, 0xbe, 0xf6, 0x65, 0xdf, 0x23, - 0x93, 0xe6, 0x74, 0x34, - 0x94, 0x0e, 0x36, 0x03, 0xe0, 0x5d, 0x47, 0x82, 0x01, 0x0b, 0x5e, 0xb8, - 0x0a, 0xdb, 0x94, 0x7a, - 0xb4, 0x23, 0xaf, 0xea, 0x75, 0xc2, 0x93, 0xcb, 0xe7, 0xde, 0x28, 0x4a, - 0x39, 0x13, 0xb4, 0xe2, - 0xd4, 0x54, 0xc7, 0x12, 0x09, 0xa0, 0x2c, 0x10, 0x0e, 0x62, 0xb2, 0x9f, - 0x6c, 0x88, 0xd4, 0x89, - 0xf4, 0x79, 0x5e, 0xfb, 0x9c, 0x3f, 0xf8, 0x59, 0xe8, 0xb7, 0xc4, 0x6d, - 0x5f, 0x40, 0xf4, 0x11, - 0x92, 0x84, 0xd1, 0xed, 0x97, 0xf2, 0x20, 0x72, 0x5b, 0x70, 0x1f, 0x91, - 0x2b, 0x2f, 0x92, 0x81, - 0xb2, 0xa9, 0x48, 0x04, 0x02, 0x6d, 0xf4, 0x3b, 0xbd, 0xa5, 0x69, 0x63, - 0x18, 0xe7, 0xb2, 0x19, - 0xd2, 0xde, 0x20, 0xfc, 0x7e, 0x0f, 0x4b, 0xe0, 0x54, 0x19, 0xf3, 0xb6, - 0x4d, 0x7c, 0xd2, 0x72, - 0xf2, 0xf3, 0xb9, 0x15, 0xeb, 0x90, 0x9f, 0xa9, 0xb2, 0xcc, 0x85, 0x44, - 0x7e, 0xb4, 0xf2, 0xea, - 0x12, 0x30, 0xf0, 0xcf, 0x86, 0xcb, 0xf6, 0x95, 0x45, 0xa2, 0x04, 0xdf, - 0xe7, 0x89, 0x12, 0xa4, - 0x32, 0x1d, 0x69, 0x26, 0x13, 0x54, 0x22, 0xdc, 0xa3, 0x77, 0x72, 0x2d, - 0xd4, 0x41, 0x32, 0x3c, - 0x52, 0x6a, 0x01, 0xde, 0x6f, 0x36, 0x9d, 0x07, 0x4a, 0xcb, 0xe8, 0xf8, - 0x81, 0xda, 0x52, 0x57, - 0x72, 0x47, 0x98, 0x37, 0xfa, 0xa9, 0x49, 0x4e, 0xac, 0x1e, 0x9e, 0x0a, - 0xb2, 0x12, 0x72, 0xcf, - 0x51, 0x2f, 0x93, 0xa9, 0xb5, 0x80, 0x4f, 0x7f, 0x67, 0x17, 0x29, 0x0d, - 0x70, 0xa0, 0x51, 0xcb, - 0x71, 0x02, 0x0a, 0x40, 0x20, 0x1f, 0x9b, 0x36, 0x81, 0xc2, 0x5f, 0xff, - 0x43, 0x68, 0x71, 0x53, - 0x11, 0x75, 0x62, 0xb8, 0x5c, 0x7d, 0x24, 0xed, 0x68, 0x7e, 0xc5, 0x2a, - 0x16, 0xf3, 0x11, 0x38, - 0x31, 0x58, 0xfb, 0x51, 0xc9, 0xe2, 0xf0, 0xa4, 0x8e, 0xab, 0xb3, 0xd8, - 0x25, 0x3b, 0x31, 0xa0, - 0xd1, 0x9b, 0xb2, 0x8b, 0xa4, 0xb9, 0x99, 0x98, 0x79, 0xc5, 0x32, 0x43, - 0xbc, 0x06, 0xd1, 0xee, - 0xf1, 0xb6, 0x2b, 0x62, 0x31, 0x26, 0x4d, 0xd1, 0x9f, 0x10, 0x44, 0xb1, - 0x8f, 0xce, 0xf1, 0x76, - 0x91, 0xc1, 0x43, 0x9a, 0x4d, 0x44, 0xf2, 0x0a, 0x76, 0xac, 0xde, 0x64, - 0xda, 0x55, 0x91, 0x1d, - 0xb1, 0xec, 0xda, 0x73, 0xd8, 0xdb, 0x26, 0x43, 0x90, 0x79, 0xa8, 0x96, - 0xe9, 0x9d, 0xb1, 0x85, - 0x5d, 0xf8, 0x9e, 0xb6, 0x5b, 0x1d, 0x81, 0x5c, 0xd3, 0xe1, 0xab, 0x5f, - 0x32, 0x8b, 0x5d, 0xfe, - 0x7d, 0xd5, 0x07, 0x5f, 0xce, 0x82, 0x55, 0x15, 0x35, 0x34, 0xdd, 0xad, - 0x01, 0x43, 0x7d, 0x66, - 0x1d, 0xa2, 0x6f, 0xa7, 0xb2, 0xe0, 0xea, 0xce, 0xdc, 0x88, 0x47, 0x78, - 0x54, 0xd8, 0x1d, 0x0d, - 0x3d, 0x8f, 0xf6, 0x4e, 0x27, 0x7f, 0x3e, 0x87, 0x3a, 0x5d, 0x31, 0x8a, - 0x67, 0x10, 0x3d, 0x95, - 0xdd, 0x4c, 0xbf, 0x94, 0x4a, 0x24, 0x57, 0xbb, 0xcd, 0x33, 0xb0, 0x11, - 0xfe, 0x2d, 0xdd, 0xdb, - 0xfd, 0x61, 0x26, 0x7d, 0xdf, 0xbb, 0x83, 0xf2, 0x2b, 0xe6, 0xc6, 0xe3, - 0xcd, 0xe5, 0xfd, 0x43, - 0x9d, 0x16, 0x4e, 0x85, 0xa3, 0xd9, 0x3c, 0x29, 0xc2, 0x5a, 0x5c, 0x36, - 0x98, 0x7e, 0x9d, 0x28, - 0xbd, 0x3b, 0xd7, 0x6c, 0x36, 0x46, 0xe8, 0x60, 0x24, 0x8f, 0x2a, 0xc4, - 0xab, 0xb6, 0xbd, 0xb0, - 0x9e, 0x53, 0xdc, 0xf2, 0x79, 0x6f, 0xee, 0x51, 0xef, 0x86, 0x9d, 0xc3, - 0x69, 0x04, 0x9e, 0xb4, - 0xbe, 0x7e, 0x45, 0x1b, 0xec, 0xf0, 0x3a, 0x18, 0x09, 0x53, 0xeb, 0x31, - 0x5a, 0xcc, 0xbe, 0x2c, - 0xde, 0x09, 0x2d, 0xe3, 0x90, 0x92, 0x85, 0xc3, 0xe0, 0xef, 0x71, 0xe4, - 0x0f, 0x57, 0xde, 0x47, - 0xfe, 0x24, 0xb4, 0x0a, 0x05, 0x0d, 0x51, 0x8a, 0x06, 0x3a, 0x07, 0x16, - 0x3c, 0x9f, 0xfe, 0xdf, - 0x1e, 0xe7, 0xfd, 0xd0, 0x68, 0x56, 0x38, 0xb6, 0xf1, 0x54, 0x86, 0x8d, - 0xa5, 0xa2, 0x1e, 0x91, - 0x3e, 0xca, 0x64, 0x39, 0xfd, 0xc9, 0xec, 0xff, 0x17, 0x81, 0xf0, 0x7f, - 0x96, 0x6a, 0x3e, 0x09, - 0x5e, 0xbd, 0x0c, 0xc1, 0x81, 0xab, 0x53, 0x24, 0xfe, 0x3d, 0x6a, 0xaa, - 0xc3, 0xf1, 0x5e, 0x62, - 0x7e, 0x90, 0x95, 0x28, 0x14, 0x34, 0x87, 0x6d, 0x18, 0xe8, 0x1c, 0x58, - 0xf0, 0x39, 0x7e, 0xfa, - 0x18, 0x6d, 0x1a, 0x3e, 0x1f, 0xf9, 0x5f, 0x46, 0xab, 0x2f, 0xc7, 0xa4, - 0x84, 0x56, 0x18, 0x6a, - 0x38, 0x40, 0x83, 0xd7, 0x8a, 0x66, 0x8b, 0x0f, 0x4d, 0xfa, 0xb1, 0x56, - 0xb7, 0x9e, 0x38, 0xf2, - 0x58, 0x37, 0xeb, 0x2f, 0xf6, 0x04, 0x34, 0xd4, 0xa4, 0x46, 0x2b, 0x83, - 0xe2, 0x05, 0x58, 0x99, - 0x78, 0x1a, 0x72, 0xc6, 0x63, 0x9b, 0xe0, 0x9d, 0x42, 0x93, 0x5d, 0x71, - 0xd1, 0xcd, 0x78, 0x01, - 0x98, 0xd9, 0x3b, 0x1c, 0x0e, 0xc0, 0x89, 0xa1, 0xb5, 0xfd, 0xdc, 0xea, - 0x48, 0xf0, 0x98, 0x4f, - 0xb8, 0xf4, 0xa2, 0xf5, 0x9b, 0x5f, 0x5d, 0xe8, 0x53, 0x28, 0xaa, 0x18, - 0x7b, 0x38, 0xb8, 0xd7, - 0xd8, 0x83, 0xca, 0x0d, 0xe7, 0x3d, 0xe2, 0x33, 0xba, 0x94, 0x30, 0xcd, - 0x2e, 0xa3, 0xd8, 0xbc, - 0xf8, 0xae, 0x53, 0xe4, 0x72, 0xa2, 0x36, 0x7a, 0x5c, 0x41, 0x46, 0x3f, - 0x1d, 0x6b, 0xf8, 0x24, - 0xdb, 0xc6, 0x58, 0x7a, 0x3d, 0x8b, 0x30, 0x4b, 0x97, 0x48, 0xf1, 0x38, - 0xdf, 0xd9, 0xdb, 0x20, - 0xfb, 0xeb, 0xc1, 0x93, 0xa8, 0x14, 0xe4, 0x02, 0x71, 0x9d, 0x87, 0xca, - 0xec, 0x11, 0xfb, 0xb8, - 0x9b, 0x9c, 0xa9, 0x6b, 0xd4, 0x76, 0x5b, 0xd9, 0x98, 0x21, 0x1d, 0x1f, - 0xb9, 0x8a, 0x9b, 0xd3, - 0xbb, 0xb1, 0x30, 0x82, 0x41, 0xe9, 0x8f, 0x90, 0x7e, 0xf4, 0x6b, 0xed, - 0x8a, 0x42, 0xbb, 0x4b, - 0x5b, 0x72, 0x79, 0x58, 0x2c, 0xb2, 0xe6, 0xac, 0x89, 0x9a, 0xea, 0x76, - 0x13, 0x7f, 0x5b, 0x05, - 0x7b, 0x5f, 0xe0, 0xb1, 0xb9, 0x2d, 0x32, 0xe5, 0x6f, 0x4f, 0x9c, 0x84, - 0x20, 0xb7, 0x7b, 0x9d, - 0x1b, 0x28, 0x88, 0x49, 0xc5, 0x4f, 0x8d, 0x3e, 0x86, 0xf3, 0x06, 0x51, - 0x75, 0x2c, 0x1b, 0xf6, - 0x3b, 0x05, 0x11, 0xa0, 0x50, 0xd0, 0x59, 0x77, 0x60, 0x26, 0x70, 0xa3, - 0x46, 0xe4, 0x3b, 0x6e, - 0x6d, 0x22, 0xaa, 0xca, 0x65, 0x2c, 0x3f, 0xd0, 0x46, 0xbf, 0xe6, 0xd4, - 0xf9, 0x27, 0x6d, 0x2a, - 0x4d, 0x0f, 0x33, 0x23, 0xf0, 0xb3, 0xeb, 0x99, 0xa0, 0x6a, 0x90, 0x26, - 0xca, 0xef, 0x4d, 0xb2, - 0x2d, 0x78, 0x5b, 0xdb, 0x8c, 0xd1, 0x54, 0x42, 0x49, 0xd6, 0x0a, 0xf3, - 0x9f, 0x74, 0x2d, 0xd9, - 0x0d, 0x55, 0xc2, 0x32, 0x19, 0x4e, 0x80, 0x0b, 0xaf, 0x03, 0x7c, 0x01, - 0xac, 0xbc, 0x0d, 0x41, - 0xed, 0x96, 0x8b, 0xe8, 0x74, 0x15, 0xe9, 0x37, 0x58, 0x6d, 0xfd, 0x9a, - 0x35, 0x81, 0xed, 0x0f, - 0xcd, 0xbb, 0x12, 0x01, 0xe1, 0x8a, 0x3d, 0x7e, 0xbe, 0xb8, 0x8b, 0x68, - 0x06, 0x49, 0xcd, 0x97, - 0xad, 0xcc, 0x7a, 0xf9, 0x9d, 0xe8, 0x82, 0xa5, 0x57, 0x04, 0x11, 0xbd, - 0x53, 0xd2, 0xad, 0xfc, - 0x8d, 0xe1, 0xe3, 0x10, 0x08, 0x77, 0x56, 0xec, 0xb1, 0xd1, 0x67, 0x4f, - 0x60, 0x1a, 0x8d, 0x64, - 0xae, 0x89, 0xe8, 0x8e, 0x47, 0x5e, 0x50, 0xdd, 0x7a, 0xd8, 0xd0, 0x48, - 0xa2, 0xa8, 0xae, 0x60, - 0x8e, 0xa4, 0x71, 0x67, 0xd2, 0xc1, 0x84, 0x94, 0x9c, 0x0d, 0xa6, 0xba, - 0x91, 0x60, 0x8e, 0xf8, - 0xee, 0xd3, 0x19, 0x9f, 0xae, 0xa3, 0x3b, 0x4f, 0x75, 0xb1, 0x3c, 0x6f, - 0xc4, 0xfb, 0xee, 0x93, - 0xce, 0xfe, 0x80, 0x76, 0x3b, 0x3c, 0xef, 0x06, 0x93, 0x64, 0x4a, 0x9d, - 0xf7, 0x33, 0xce, 0x0b, - 0x2e, 0x3d, 0xc9, 0xac, 0x56, 0x67, 0x86, 0x3a, 0x64, 0x0a, 0xcb, 0x06, - 0x6e, 0x0e, 0x2e, 0x45, - 0x0e, 0x10, 0x50, 0x45, 0xc3, 0xf8, 0x52, 0x73, 0x82, 0xdf, 0xbd, 0xf4, - 0x5d, 0xc6, 0x0e, 0xdd, - 0x6e, 0x67, 0x38, 0xbd, 0xbf, 0x9a, 0xed, 0xa8, 0x6b, 0x63, 0x27, 0x21, - 0x08, 0x5d, 0x6e, 0xb6, - 0x4e, 0x4a, 0xa1, 0x54, 0x2a, 0x05, 0x39, 0xe1, 0x8d, 0xb6, 0x51, 0xd3, - 0x3b, 0x95, 0x4e, 0x2e, - 0x28, 0xb7, 0x2e, 0x42, 0x21, 0xc8, 0xe1, 0xca, 0x3e, 0x71, 0x8a, 0x2f, - 0x4f, 0xfa, 0x28, 0xbe, - 0x08, 0x9a, 0xb7, 0xab, 0xb4, 0x57, 0x35, 0x83, 0xd8, 0xa4, 0xfc, 0xdd, - 0x7c, 0x32, 0x08, 0x26, - 0x68, 0xed, 0xdf, 0x53, 0xc8, 0x35, 0x8a, 0x58, 0x31, 0x18, 0x66, 0x08, - 0x29, 0xa9, 0x68, 0x4d, - 0x48, 0xc0, 0x46, 0xba, 0x5d, 0xaa, 0x5e, 0x11, 0xd7, 0xcd, 0x10, 0xfa, - 0x1a, 0x61, 0x48, 0xd5, - 0xa8, 0x03, 0x0f, 0x60, 0x30, 0xf1, 0x37, 0x2d, 0x20, 0xa3, 0x91, 0x61, - 0x83, 0x5c, 0xa8, 0x9b, - 0x88, 0x2e, 0x96, 0x89, 0xa5, 0x6e, 0xe3, 0x64, 0xc6, 0x76, 0xe7, 0x93, - 0xb0, 0x94, 0x88, 0x03, - 0xe8, 0x59, 0xfe, 0x71, 0xd9, 0x0c, 0x5c, 0xbf, 0x2f, 0xca, 0x7d, 0x46, - 0xe5, 0x0f, 0xe8, 0x68, - 0xc8, 0x74, 0x67, 0x98, 0x4c, 0x93, 0x88, 0xf6, 0xc9, 0x1f, 0x0b, 0xb4, - 0xd6, 0xc7, 0xc8, 0xf0, - 0xeb, 0x1c, 0x6c, 0x06, 0x03, 0xba, 0x8e, 0xc7, 0x02, 0x16, 0xbc, 0xb3, - 0x14, 0x75, 0xeb, 0xf4, - 0xcb, 0x31, 0xf5, 0xef, 0x96, 0x25, 0x5a, 0x8e, 0xe4, 0xc3, 0xca, 0x41, - 0x27, 0xbd, 0xcb, 0x6c, - 0xab, 0x46, 0x9d, 0x17, 0xea, 0x47, 0xe5, 0x55, 0x0d, 0x7f, 0x50, 0x94, - 0x72, 0x26, 0xab, 0x07, - 0x8b, 0x6b, 0x04, 0xfe, 0x7f, 0xd8, 0x31, 0x1c, 0xeb, 0xaa, 0x26, 0x66, - 0x41, 0xee, 0x8b, 0x9f, - 0x6b, 0xa8, 0x4d, 0x24, 0x12, 0x83, 0x58, 0x20, 0x1c, 0xc4, 0xa7, 0xfd, - 0xd8, 0xd3, 0x6b, 0xd1, - 0x4b, 0x85, 0xd4, 0xcd, 0x87, 0x1c, 0x8c, 0x69, 0xfa, 0x11, 0xd1, 0x0f, - 0xeb, 0x1b, 0x4b, 0x49, - 0x2b, 0xf2, 0xbc, 0x35, 0xfb, 0x7e, 0x33, 0xb2, 0x13, 0xad, 0x4b, 0xda, - 0xbe, 0x80, 0x2b, 0x22, - 0x0b, 0xdf, 0x25, 0xdc, 0x6e, 0xe1, 0xe7, 0xfb, 0xf5, 0x78, 0x3d, 0x28, - 0x8d, 0x48, 0x0b, 0xba, - 0xe7, 0xcb, 0x61, 0x19, 0xed, 0x27, 0x40, 0xe4, 0xb6, 0xe0, 0x3e, 0xe1, - 0x56, 0x5e, 0xe7, 0xc1, - 0xc7, 0xe6, 0xf8, 0xf0, 0x78, 0xb8, 0x94, 0xad, 0x50, 0x35, 0x48, 0x13, - 0x65, 0x96, 0xc7, 0x59, - 0xa7, 0x91, 0x90, 0x08, 0x04, 0xda, 0x2b, 0x76, 0xb9, 0x89, 0xd2, 0xc6, - 0x30, 0x0d, 0xa7, 0x32, - 0x87, 0xbc, 0x09, 0xe1, 0x91, 0x45, 0xff, 0x3f, 0x5f, 0x5c, 0xa4, 0x34, - 0x03, 0xc5, 0x87, 0xaa, - 0x67, 0x7f, 0x40, 0x3b, 0xfc, 0x1e, 0x96, 0x03, 0xa8, 0x32, 0x25, 0xaf, - 0x9a, 0xf8, 0x67, 0xe4, - 0x47, 0x52, 0xd9, 0xd2, 0x69, 0x81, 0x42, 0x4a, 0x4e, 0xe7, 0x53, 0x5d, - 0xa9, 0x30, 0x47, 0x7c, - 0x27, 0x25, 0xb1, 0x2a, 0x15, 0xe3, 0xfd, 0x91, 0xa7, 0x5b, 0xc9, 0x88, - 0xfc, 0xab, 0x27, 0x17, - 0x07, 0x08, 0x28, 0xc3, 0x80, 0x7c, 0x29, 0xd8, 0x41, 0x8e, 0xbf, 0x7a, - 0xcf, 0x63, 0x07, 0x8f, - 0x24, 0x60, 0x23, 0x5d, 0xcf, 0x55, 0x2f, 0xe9, 0x8a, 0x87, 0x08, 0x7d, - 0x0d, 0xd1, 0x24, 0x8b, - 0x04, 0x4d, 0xba, 0xb4, 0x5a, 0xca, 0xfb, 0xa0, 0x6c, 0x52, 0x7e, 0x8f, - 0x3e, 0x19, 0x04, 0x13, - 0x64, 0x3a, 0xd2, 0x4c, 0x26, 0xa8, 0x44, 0x7b, 0x85, 0xee, 0xe4, 0x5a, - 0x6b, 0x82, 0x64, 0x78, - 0x44, 0x17, 0x4b, 0xa5, 0xb3, 0x37, 0x90, 0x32, 0x63, 0x3b, 0x92, 0xa8, - 0x58, 0x4a, 0x44, 0xe0, - 0xa4, 0xd4, 0x02, 0x7f, 0xde, 0x6c, 0xf9, 0x0e, 0x94, 0x55, 0x13, 0x33, - 0xc1, 0x77, 0xa4, 0xae, - 0x84, 0xf9, 0x9b, 0x96, 0x4b, 0xf3, 0x2d, 0x47, 0x72, 0x80, 0x65, 0xc1, - 0xf2, 0xbf, 0x84, 0x36, - 0xe4, 0x8e, 0xf3, 0x6e, 0x37, 0x91, 0x92, 0x9c, 0x9b, 0x3c, 0xff, 0x14, - 0xa7, 0x24, 0xe4, 0x5d, - 0xc4, 0xa3, 0x6a, 0x87, 0xa2, 0x0e, 0x46, 0xd5, 0x7d, 0xe9, 0x89, 0xe6, - 0x94, 0xec, 0xc4, 0xc5, - 0xa2, 0x5e, 0xe5, 0x91, 0xa9, 0xc3, 0x9e, 0xfe, 0xce, 0x2e, 0x52, 0x1a, - 0xe0, 0x83, 0xa2, 0x55, - 0x82, 0x73, 0x7c, 0x78, 0x3c, 0x5c, 0x4a, 0xb7, 0x28, 0xfb, 0x24, 0xe8, - 0xd3, 0x4b, 0x82, 0xcd, - 0xe2, 0x04, 0x14, 0x80, 0x40, 0x3e, 0xf5, 0x6c, 0xc1, 0x47, 0xbe, 0x3d, - 0x86, 0xd0, 0xe2, 0xa6, - 0xc2, 0x29, 0x8d, 0x69, 0xd5, 0xa1, 0x21, 0x25, 0x27, 0x92, 0xc8, 0xcf, - 0xb5, 0x18, 0xc2, 0x3e, - 0x22, 0xea, 0xc4, 0xb3, 0xb8, 0xfa, 0x48, 0x19, 0xd0, 0xfc, 0x49, 0x54, - 0x2c, 0x25, 0x22, 0x70, - 0x02, 0xc7, 0x5d, 0x5a, 0x2d, 0x65, 0x9c, 0x50, 0x36, 0x29, 0x3f, 0xa6, - 0x1f, 0xed, 0x02, 0xe8, - 0x62, 0xb0, 0x35, 0xa2, 0x51, 0x07, 0x23, 0x8b, 0xdf, 0x95, 0xa5, 0x73, - 0x4a, 0x76, 0x62, 0x83, - 0x42, 0x9d, 0xac, 0x4b, 0xc4, 0x98, 0xf7, 0xc2, 0x39, 0x40, 0xd3, 0x81, - 0x79, 0xbe, 0x42, 0x1b, - 0x61, 0xf5, 0xa7, 0xd5, 0x8b, 0xb1, 0xf1, 0xf3, 0xf2, 0x49, 0x64, 0x86, - 0xbb, 0x0c, 0x61, 0x1f, - 0x41, 0xd8, 0x3e, 0x3c, 0x1e, 0x2e, 0x25, 0xba, 0x14, 0x9c, 0x12, 0x74, - 0x88, 0xc4, 0x41, 0x87, - 0x21, 0xaf, 0x56, 0xc4, 0x62, 0x4c, 0x9a, 0x61, 0xfd, 0x20, 0x88, 0xa1, - 0xdd, 0x5f, 0x21, 0xec, - 0x01, 0x82, 0xcf, 0x2d, 0xf7, 0xd3, 0x4e, 0x28, 0x1b, 0xf5, 0xfe, 0x53, - 0xee, 0x97, 0x01, 0x74, - 0xe1, 0x41, 0x86, 0xf7, 0x9a, 0x88, 0x27, 0x14, 0xec, 0x9b, 0x7f, 0xc8, - 0x77, 0xaa, 0xe1, 0x3a, - 0xc1, 0x6c, 0x1f, 0x1e, 0x0f, 0x17, 0xf3, 0x5d, 0x0a, 0x4e, 0x09, 0x3a, - 0x44, 0x62, 0xc1, 0xa2, - 0xa1, 0x1b, 0x77, 0xe6, 0x73, 0x75, 0x4c, 0x86, 0xe3, 0xf2, 0x93, 0xef, - 0x11, 0xf9, 0xa1, 0xc9, - 0x81, 0x36, 0xee, 0x0f, 0xe6, 0xea, 0x98, 0xcf, 0x05, 0x27, 0xe5, 0x1d, - 0x22, 0x31, 0x81, 0x51, - 0xba, 0x33, 0xff, 0xaf, 0xb6, 0x3a, 0xc1, 0xb8, 0x65, 0x01, 0x95, 0xbe, - 0x64, 0xd5, 0xba, 0x3f, - 0x9a, 0x1e, 0x66, 0x46, 0x23, 0xa5, 0x15, 0xf1, 0x83, 0xd4, 0xe3, 0x4c, - 0x57, 0x1d, 0x9a, 0xa7, - 0xfa, 0x69, 0x0e, 0xbe, 0x5f, 0xc7, 0xaa, 0x2a, 0x6a, 0x68, 0x79, 0x99, - 0x02, 0x86, 0xfa, 0xcc, - 0xda, 0x44, 0x97, 0x57, 0xca, 0x58, 0x7e, 0x63, 0x8c, 0xbd, 0x0f, 0x6b, - 0x31, 0x4e, 0xda, 0x54, - 0x3a, 0x87, 0xde, 0x8d, 0xa7, 0x03, 0x17, 0x5f, 0x7b, 0xd3, 0x8e, 0xf0, - 0xa8, 0x73, 0x3a, 0x1a, - 0x1a, 0xaa, 0x47, 0x64, 0x32, 0x9c, 0xc3, 0x16, 0x9d, 0x06, 0xf8, 0x02, - 0x9b, 0xbb, 0x1a, 0x82, - 0x7a, 0xdd, 0x2f, 0x9c, 0x4e, 0xfe, 0x7c, 0xcd, 0x74, 0xba, 0x62, 0xd7, - 0xce, 0x20, 0x7a, 0xe9, - 0x5a, 0xf0, 0xb6, 0x75, 0xdb, 0x61, 0xa8, 0x84, 0x92, 0x6f, 0x14, 0x25, - 0xfd, 0xe8, 0x5a, 0x71, - 0x79, 0x98, 0xbd, 0xeb, 0x94, 0x48, 0xae, 0xb5, 0x59, 0x66, 0xa3, 0x22, - 0x3f, 0x5a, 0x79, 0x75, - 0x59, 0xb5, 0x24, 0x02, 0x01, 0xd7, 0x7a, 0xfc, 0xbf, 0xb3, 0xd5, 0xd0, - 0x0c, 0x92, 0x59, 0xed, - 0x39, 0xc2, 0x4c, 0xfa, 0x7d, 0xb5, 0xc5, 0x27, 0x56, 0x0f, 0x4f, 0x05, - 0x59, 0x09, 0x39, 0x86, - 0x19, 0xef, 0xd5, 0x13, 0xe8, 0x2a, 0x11, 0x6e, 0xb0, 0xda, 0x39, 0xf7, - 0x6a, 0xc1, 0x19, 0x1e, - 0xf9, 0x2c, 0x9c, 0xc9, 0x85, 0x71, 0x78, 0x52, 0x47, 0xb4, 0xb8, 0x6c, - 0xf3, 0xfc, 0xf9, 0x50, - 0xd9, 0x01, 0x05, 0x20, 0x10, 0xee, 0xac, 0x1b, 0xa1, 0x61, 0xce, 0x9e, - 0xc0, 0x34, 0xd9, 0xc8, - 0xb9, 0x76, 0x6d, 0xd8, 0x6c, 0x8c, 0x13, 0xc0, 0x48, 0xdd, 0x54, 0x4b, - 0x95, 0xaf, 0xb9, 0xa3, - 0x99, 0x5b, 0xf4, 0x31, 0xf9, 0x13, 0xc7, 0x89, 0xae, 0x08, 0x22, 0xb9, - 0xa6, 0x67, 0x99, 0x3b, - 0xff, 0xa6, 0x7b, 0x27, 0xf2, 0xde, 0x1f, 0xa2, 0x1d, 0xcf, 0xf9, 0x45, - 0xd2, 0x08, 0xff, 0xab, - 0xdf, 0x8b, 0xe2, 0xce, 0x67, 0x41, 0xcb, 0xeb, 0xfb, 0x1a, 0x8f, 0xb7, - 0xe1, 0xc0, 0xdf, 0x33, - 0xbf, 0xfc, 0x8a, 0x36, 0x1b, 0x23, 0x74, 0x30, 0x12, 0xa6, 0x15, 0x62, - 0xb4, 0x5b, 0xbf, 0x58, - 0x9f, 0xd1, 0x13, 0xdf, 0x8e, 0xbc, 0xa0, 0x79, 0xf4, 0x73, 0x63, 0x90, - 0x87, 0x93, 0x9f, 0xc0, - 0x7f, 0x12, 0x5a, 0x05, 0xe3, 0xe7, 0xc9, 0x45, 0x03, 0x1d, 0xe2, 0x0b, - 0x1e, 0xae, 0x7f, 0x8e, - 0x5f, 0x3f, 0xc3, 0xec, 0x76, 0x78, 0x1d, 0x0c, 0xe5, 0xc8, 0x94, 0xf9, - 0x2d, 0x66, 0x5f, 0x16, - 0x3f, 0x48, 0xab, 0x14, 0x0a, 0x1a, 0xa2, 0xd7, 0x0c, 0x74, 0x0e, 0x2c, - 0x78, 0xfd, 0x3f, 0x7d, - 0x1f, 0x65, 0x32, 0xfd, 0x9f, 0x85, 0x76, 0x9e, 0xea, 0xa1, 0x78, 0xde, - 0x4b, 0x35, 0x1f, 0xe5, - 0x3c, 0x0d, 0x39, 0x63, 0xd0, 0xac, 0x70, 0xaf, 0x21, 0xa8, 0xcf, 0xd9, - 0x89, 0x87, 0x3c, 0xe1, - 0x1c, 0x20, 0xa0, 0x8a, 0x45, 0x33, 0xa4, 0xe6, 0xc7, 0x7d, 0xb9, 0x2b, - 0xba, 0x4f, 0x1c, 0x79, - 0x7c, 0x57, 0xc8, 0x72, 0x39, 0x51, 0x1b, 0x3d, 0x2e, 0xc1, 0x23, 0xfe, - 0xef, 0xd4, 0x7c, 0x12, - 0x5c, 0x7a, 0x51, 0x9b, 0xac, 0xce, 0xcf, 0x74, 0xc8, 0x14, 0x55, 0x0c, - 0xdc, 0x1c, 0x5c, 0x8a, - 0xbc, 0xb9, 0x18, 0x41, 0xc1, 0x95, 0xa6, 0x48, 0x3f, 0x7a, 0xd4, 0x97, - 0x45, 0x21, 0xbc, 0xc4, - 0x9c, 0x94, 0x81, 0xa8, 0x54, 0x0a, 0x72, 0x01, 0xd9, 0xaf, 0xa2, 0x65, - 0x76, 0xe9, 0x9c, 0x5c, - 0xfc, 0xe3, 0xe9, 0x50, 0x28, 0x68, 0xcd, 0xda, 0x30, 0x13, 0x38, 0xb0, - 0x23, 0x72, 0xfc, 0x37, - 0xdc, 0xce, 0x70, 0xb9, 0xbd, 0xf7, 0x19, 0x93, 0xd6, 0xc6, 0x4e, 0x42, - 0x10, 0xba, 0xdc, 0xaf, - 0x30, 0xda, 0x34, 0x7c, 0x3e, 0x31, 0xbe, 0x8c, 0x95, 0x5e, 0x4d, 0x8b, - 0xcb, 0xac, 0x30, 0xd4, - 0x10, 0xf7, 0xad, 0x95, 0xab, 0xae, 0x6a, 0xc5, 0x73, 0x8b, 0x3b, 0x79, - 0xf8, 0x64, 0x10, 0x4c, - 0x70, 0x80, 0xc5, 0x6d, 0xd7, 0xcc, 0xd5, 0x1e, 0x9a, 0x37, 0xa1, 0xac, - 0xad, 0xff, 0x70, 0x27, - 0x50, 0xad, 0x5c, 0x84, 0x42, 0x53, 0x01, 0x57, 0x7c, 0xe2, 0xd7, 0x5e, - 0x9e, 0x37, 0x50, 0xbf, - 0xb0, 0x6e, 0x15, 0x5e, 0x2f, 0x08, 0x68, 0x6b, 0x8b, 0x8c, 0x56, 0xc5, - 0x07, 0x0a, 0xb0, 0xf1, - 0x90, 0x43, 0x8c, 0xb7, 0xba, 0x97, 0xbc, 0x22, 0x6d, 0x59, 0x20, 0x37, - 0x34, 0xc2, 0x90, 0x69, - 0xf0, 0x34, 0xe4, 0x4f, 0xc6, 0xf5, 0x03, 0xf9, 0x84, 0xe5, 0xba, 0xe2, - 0x61, 0x59, 0xf0, 0x02, - 0xd0, 0x19, 0x7d, 0xa6, 0x53, 0x6a, 0xd7, 0xb0, 0x62, 0x30, 0xcc, 0x10, - 0x52, 0x91, 0xd0, 0x9a, - 0xf3, 0x71, 0x76, 0x38, 0x1c, 0x43, 0xd1, 0x81, 0xa9, 0x39, 0x7b, 0x17, - 0x90, 0x23, 0xf3, 0x9e, - 0xd3, 0x5c, 0xef, 0xd1, 0x89, 0xdc, 0x05, 0xc8, 0x4f, 0xec, 0x0d, 0xe5, - 0xa3, 0xeb, 0xd3, 0x06, - 0xb3, 0x2b, 0x87, 0x29, 0xf5, 0xbe, 0xba, 0x13, 0xa6, 0x50, 0x97, 0x30, - 0xf6, 0x70, 0xb3, 0x6d, - 0x93, 0x06, 0x1e, 0xc0, 0x60, 0x21, 0x6e, 0x5a, 0x40, 0x85, 0xe1, 0xc2, - 0xc5, 0xb8, 0x93, 0xf5, - 0x73, 0xc5, 0x57, 0x1a, 0x0d, 0x7a, 0x07, 0x66, 0xb7, 0xeb, 0x60, 0x59, - 0x5c, 0x85, 0x73, 0xbb, - 0x53, 0xe8, 0xce, 0xf3, 0x98, 0xe5, 0xd3, 0x2f, 0x51, 0x3e, 0x16, 0xab, - 0x6f, 0x4d, 0x53, 0x23, - 0x33, 0x9f, 0xa6, 0x0b, 0xe4, 0x87, 0x6c, 0xf4, 0xb8, 0x82, 0x8c, 0x7e, - 0x3a, 0xd6, 0x33, 0x48, - 0x13, 0xb2, 0x3f, 0xe2, 0x71, 0x18, 0xb8, 0xbd, 0x5e, 0x57, 0xfa, 0x8c, - 0x09, 0x1e, 0x13, 0xd0, - 0x75, 0x4f, 0xb0, 0xf4, 0x7a, 0xd5, 0x60, 0x96, 0xed, 0x90, 0x21, 0x70, - 0x7d, 0x71, 0x75, 0x40, - 0x55, 0x62, 0x29, 0x1d, 0xef, 0x4a, 0xb4, 0xdf, 0x0b, 0x45, 0x57, 0x82, - 0x4e, 0xb9, 0x55, 0xd8, - 0x35, 0x15, 0x41, 0xe5, 0x93, 0x28, 0x0b, 0x04, 0xe2, 0xf9, 0xcd, 0x57, - 0x1b, 0x22, 0x35, 0xb3, - 0x15, 0x38, 0xd8, 0x0c, 0x06, 0xb7, 0xdf, 0x4d, 0x04, 0x2c, 0xbb, 0xa5, - 0x28, 0xea, 0x15, 0x2b, - 0xf5, 0xfb, 0x91, 0xd6, 0x6b, 0xec, 0xb6, 0x71, 0xf3, 0x42, 0x3a, 0x3e, - 0xb1, 0xd7, 0xf5, 0x65, - 0xd5, 0xd6, 0x08, 0x3f, 0xfe, 0x73, 0x62, 0x38, 0x15, 0x97, 0x4c, 0xcc, - 0x82, 0x1f, 0xd5, 0xfd, - 0xb5, 0xa1, 0x60, 0xc7, 0x82, 0x11, 0xdd, 0xe3, 0xfc, 0x2b, 0xd6, 0x19, - 0xd7, 0x84, 0xb5, 0x96, - 0x95, 0x8c, 0xf9, 0x2e, 0x17, 0x8e, 0x09, 0xaa, 0x1a, 0xfe, 0xa0, 0xeb, - 0xe4, 0x4c, 0x95, 0x0e, - 0xb6, 0xe4, 0xf2, 0xb0, 0x58, 0xa7, 0x0f, 0x9b, 0xd1, 0xf7, 0x17, 0xec, - 0x26, 0xfe, 0xb6, 0x0a, - 0x96, 0xc9, 0x6b, 0x59, 0xcd, 0x38, 0xdb, 0xd2, 0x37, 0x22, 0x61, 0x1e, - 0x15, 0x36, 0x96, 0x92, - 0xf6, 0xbe, 0x03, 0xa1, 0xb1, 0x5a, 0x64, 0x09, 0xde, 0x9e, 0xfb, 0xcb, - 0x40, 0xad, 0xf6, 0xf9, - 0xd6, 0x93, 0x9a, 0x48, 0x24, 0xc5, 0xb0, 0x40, 0x38, 0x4b, 0x8d, 0x39, - 0x73, 0x65, 0xd6, 0x61, - 0x36, 0x50, 0xd3, 0x92, 0x49, 0x9e, 0xd9, 0x7c, 0xcf, 0x25, 0x0c, 0xa2, - 0xea, 0x58, 0x36, 0x2f, - 0x16, 0x7d, 0x4a, 0x7b, 0xdc, 0x01, 0x0d, 0x35, 0x29, 0xf0, 0x7a, 0x50, - 0xd9, 0x90, 0x16, 0xb7, - 0x76, 0x0a, 0x22, 0x83, 0xa0, 0x63, 0xb2, 0xee, 0xc0, 0x4c, 0xe0, 0x85, - 0x8c, 0x0b, 0x76, 0xdc, - 0x56, 0x27, 0xbb, 0x6a, 0x35, 0xfc, 0x66, 0xa7, 0x26, 0x99, 0x96, 0x77, - 0xbf, 0xc3, 0x56, 0x44, - }, - { /* 15 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x94, 0x84, 0xdd, 0x10, 0xbd, 0x27, 0x5d, 0xb8, 0x7a, 0x48, 0x6c, 0x72, - 0x76, 0xa2, 0x6e, 0xcf, - 0xeb, 0xcb, 0x79, 0x20, 0xb9, 0x4e, 0xba, 0xb3, 0xf4, 0x90, 0xd8, 0xe4, - 0xec, 0x87, 0xdc, 0x5d, - 0x7f, 0x4f, 0xa4, 0x30, 0x04, 0x69, 0xe7, 0x0b, 0x8e, 0xd8, 0xb4, 0x96, - 0x9a, 0x25, 0xb2, 0x92, - 0x15, 0x55, 0xf2, 0x40, 0xb1, 0x9c, 0xb7, 0xa5, 0x2b, 0xe3, 0x73, 0x0b, - 0x1b, 0xcd, 0x7b, 0xba, - 0x81, 0xd1, 0x2f, 0x50, 0x0c, 0xbb, 0xea, 0x1d, 0x51, 0xab, 0x1f, 0x79, - 0x6d, 0x6f, 0x15, 0x75, - 0xfe, 0x9e, 0x8b, 0x60, 0x08, 0xd2, 0x0d, 0x16, 0xdf, 0x73, 0xab, 0xef, - 0xf7, 0x4a, 0xa7, 0xe7, - 0x6a, 0x1a, 0x56, 0x70, 0xb5, 0xf5, 0x50, 0xae, 0xa5, 0x3b, 0xc7, 0x9d, - 0x81, 0xe8, 0xc9, 0x28, - 0x2a, 0xaa, 0x27, 0x80, 0xa1, 0xfb, 0xad, 0x89, 0x56, 0x05, 0xe6, 0x16, - 0x36, 0x59, 0xf6, 0xb7, - 0xbe, 0x2e, 0xfa, 0x90, 0x1c, 0xdc, 0xf0, 0x31, 0x2c, 0x4d, 0x8a, 0x64, - 0x40, 0xfb, 0x98, 0x78, - 0xc1, 0x61, 0x5e, 0xa0, 0x18, 0xb5, 0x17, 0x3a, 0xa2, 0x95, 0x3e, 0xf2, - 0xda, 0xde, 0x2a, 0xea, - 0x55, 0xe5, 0x83, 0xb0, 0xa5, 0x92, 0x4a, 0x82, 0xd8, 0xdd, 0x52, 0x80, - 0xac, 0x7c, 0x44, 0x25, - 0x3f, 0xff, 0xd5, 0xc0, 0x10, 0x67, 0x1a, 0x2c, 0x7d, 0xe6, 0x95, 0x1d, - 0x2d, 0x94, 0x8d, 0x0d, - 0xab, 0x7b, 0x08, 0xd0, 0xad, 0x40, 0x47, 0x94, 0x07, 0xae, 0xf9, 0x6f, - 0x5b, 0x36, 0xe3, 0xc2, - 0xd4, 0x34, 0xac, 0xe0, 0xa9, 0x29, 0xa0, 0x9f, 0x89, 0x76, 0x4d, 0xf9, - 0xc1, 0x13, 0x51, 0x50, - 0x40, 0xb0, 0x71, 0xf0, 0x14, 0x0e, 0xfd, 0x27, 0xf3, 0x3e, 0x21, 0x8b, - 0xb7, 0xb1, 0x3f, 0x9f, - 0x54, 0x97, 0x4e, 0xc3, 0x81, 0x35, 0x99, 0xd1, 0xac, 0x0a, 0x0f, 0x2c, - 0x6c, 0xb2, 0x2f, 0xad, - 0xc0, 0x13, 0x93, 0xd3, 0x3c, 0x12, 0xc4, 0x69, 0xd6, 0x42, 0x63, 0x5e, - 0x1a, 0x10, 0x41, 0x62, - 0xbf, 0x5c, 0x37, 0xe3, 0x38, 0x7b, 0x23, 0x62, 0x58, 0x9a, 0xd7, 0xc8, - 0x80, 0x35, 0xf3, 0xf0, - 0x2b, 0xd8, 0xea, 0xf3, 0x85, 0x5c, 0x7e, 0xda, 0x22, 0xd2, 0xbb, 0xba, - 0xf6, 0x97, 0x9d, 0x3f, - 0x41, 0xc2, 0xbc, 0x83, 0x30, 0xa9, 0x2e, 0x74, 0x87, 0xe9, 0x7c, 0x27, - 0x77, 0x7f, 0x54, 0x17, - 0xd5, 0x46, 0x61, 0x93, 0x8d, 0x8e, 0x73, 0xcc, 0xfd, 0xa1, 0x10, 0x55, - 0x01, 0xdd, 0x3a, 0xd8, - 0xaa, 0x09, 0xc5, 0xa3, 0x89, 0xe7, 0x94, 0xc7, 0x73, 0x79, 0xa4, 0xc3, - 0x9b, 0xf8, 0x88, 0x4a, - 0x3e, 0x8d, 0x18, 0xb3, 0x34, 0xc0, 0xc9, 0x7f, 0x09, 0x31, 0xc8, 0xb1, - 0xed, 0x5a, 0xe6, 0x85, - 0x7e, 0x3d, 0x69, 0x43, 0x20, 0xce, 0x34, 0x58, 0xfa, 0x0f, 0xe9, 0x3a, - 0x5a, 0xeb, 0xd9, 0x1a, - 0xea, 0xb9, 0xb4, 0x53, 0x9d, 0xe9, 0x69, 0xe0, 0x80, 0x47, 0x85, 0x48, - 0x2c, 0x49, 0xb7, 0xd5, - 0x95, 0xf6, 0x10, 0x63, 0x99, 0x80, 0x8e, 0xeb, 0x0e, 0x9f, 0x31, 0xde, - 0xb6, 0x6c, 0x05, 0x47, - 0x01, 0x72, 0xcd, 0x73, 0x24, 0xa7, 0xd3, 0x53, 0x74, 0xd7, 0x5d, 0xac, - 0xc0, 0xce, 0x6b, 0x88, - 0x6b, 0x68, 0x9b, 0x03, 0x91, 0x52, 0x83, 0xfd, 0xd1, 0xec, 0x9a, 0x31, - 0x41, 0x26, 0xa2, 0xa0, - 0xff, 0xec, 0x46, 0x13, 0x2c, 0x75, 0xde, 0x45, 0xab, 0xa4, 0xf6, 0x43, - 0x37, 0x84, 0xcc, 0x6f, - 0x80, 0xa3, 0xe2, 0x23, 0x28, 0x1c, 0x39, 0x4e, 0x25, 0x7c, 0x42, 0xd5, - 0xad, 0xa1, 0x7e, 0xfd, - 0x14, 0x27, 0x3f, 0x33, 0x95, 0x3b, 0x64, 0xf6, 0x5f, 0x34, 0x2e, 0xa7, - 0xdb, 0x03, 0x10, 0x32, - 0xa8, 0xed, 0x9c, 0x45, 0xc1, 0x6a, 0xf1, 0x61, 0x9b, 0x14, 0x1e, 0x58, - 0xd8, 0xa7, 0x5e, 0x99, - 0x3c, 0x69, 0x41, 0x55, 0x7c, 0x4d, 0xac, 0xd9, 0xe1, 0x5c, 0x72, 0x2a, - 0xae, 0x05, 0x30, 0x56, - 0x43, 0x26, 0xe5, 0x65, 0x78, 0x24, 0x4b, 0xd2, 0x6f, 0x84, 0xc6, 0xbc, - 0x34, 0x20, 0x82, 0xc4, - 0xd7, 0xa2, 0x38, 0x75, 0xc5, 0x03, 0x16, 0x6a, 0x15, 0xcc, 0xaa, 0xce, - 0x42, 0x82, 0xec, 0x0b, - 0xbd, 0xb8, 0x6e, 0x05, 0x70, 0xf6, 0x46, 0xc4, 0xb0, 0xf7, 0x6d, 0x53, - 0xc3, 0x6a, 0x25, 0x23, - 0x29, 0x3c, 0xb3, 0x15, 0xcd, 0xd1, 0x1b, 0x7c, 0xca, 0xbf, 0x01, 0x21, - 0xb5, 0xc8, 0x4b, 0xec, - 0x56, 0x73, 0x17, 0x25, 0xc9, 0xb8, 0xfc, 0x77, 0x44, 0x67, 0xb5, 0xb7, - 0x2f, 0xed, 0xf9, 0x7e, - 0xc2, 0xf7, 0xca, 0x35, 0x74, 0x9f, 0xa1, 0xcf, 0x3e, 0x2f, 0xd9, 0xc5, - 0x59, 0x4f, 0x97, 0xb1, - 0x82, 0x47, 0xbb, 0xc5, 0x60, 0x91, 0x5c, 0xe8, 0xcd, 0x11, 0xf8, 0x4e, - 0xee, 0xfe, 0xa8, 0x2e, - 0x16, 0xc3, 0x66, 0xd5, 0xdd, 0xb6, 0x01, 0x50, 0xb7, 0x59, 0x94, 0x3c, - 0x98, 0x5c, 0xc6, 0xe1, - 0x69, 0x8c, 0xc2, 0xe5, 0xd9, 0xdf, 0xe6, 0x5b, 0x39, 0x81, 0x20, 0xaa, - 0x02, 0x79, 0x74, 0x73, - 0xfd, 0x08, 0x1f, 0xf5, 0x64, 0xf8, 0xbb, 0xe3, 0x43, 0xc9, 0x4c, 0xd8, - 0x74, 0xdb, 0x1a, 0xbc, - 0x97, 0x12, 0x49, 0x85, 0xd1, 0x0d, 0xeb, 0x4d, 0xe6, 0xf2, 0x8b, 0x45, - 0xf5, 0x33, 0xd3, 0x94, - 0x03, 0x96, 0x94, 0x95, 0x6c, 0x2a, 0xb6, 0xf5, 0x9c, 0xba, 0xe7, 0x37, - 0x83, 0x91, 0xbd, 0x5b, - 0x7c, 0xd9, 0x30, 0xa5, 0x68, 0x43, 0x51, 0xfe, 0x12, 0x62, 0x53, 0xa1, - 0x19, 0xb4, 0x0f, 0xc9, - 0xe8, 0x5d, 0xed, 0xb5, 0xd5, 0x64, 0x0c, 0x46, 0x68, 0x2a, 0x3f, 0xd3, - 0x6f, 0x16, 0x61, 0x06, - 0xfc, 0x7a, 0xd2, 0x86, 0x40, 0x5f, 0x68, 0xb0, 0x37, 0x1e, 0x11, 0x74, - 0xb4, 0x15, 0x71, 0x34, - 0x68, 0xfe, 0x0f, 0x96, 0xfd, 0x78, 0x35, 0x08, 0x4d, 0x56, 0x7d, 0x06, - 0xc2, 0xb7, 0x1f, 0xfb, - 0x17, 0xb1, 0xab, 0xa6, 0xf9, 0x11, 0xd2, 0x03, 0xc3, 0x8e, 0xc9, 0x90, - 0x58, 0x92, 0xad, 0x69, - 0x83, 0x35, 0x76, 0xb6, 0x44, 0x36, 0x8f, 0xbb, 0xb9, 0xc6, 0xa5, 0xe2, - 0x2e, 0x30, 0xc3, 0xa6, - 0xe9, 0x2f, 0x20, 0xc6, 0xf1, 0xc3, 0xdf, 0x15, 0x1c, 0xfd, 0x62, 0x7f, - 0xaf, 0xd8, 0x0a, 0x8e, - 0x7d, 0xab, 0xfd, 0xd6, 0x4c, 0xe4, 0x82, 0xad, 0x66, 0xb5, 0x0e, 0x0d, - 0xd9, 0x7a, 0x64, 0x41, - 0x02, 0xe4, 0x59, 0xe6, 0x48, 0x8d, 0x65, 0xa6, 0xe8, 0x6d, 0xba, 0x9b, - 0x43, 0x5f, 0xd6, 0xd3, - 0x96, 0x60, 0x84, 0xf6, 0xf5, 0xaa, 0x38, 0x1e, 0x92, 0x25, 0xd6, 0xe9, - 0x35, 0xfd, 0xb8, 0x1c, - 0xd6, 0xd0, 0xf5, 0x06, 0xe1, 0xa4, 0xc5, 0x39, 0x61, 0x1b, 0xf7, 0x62, - 0x82, 0x4c, 0x87, 0x83, - 0x42, 0x54, 0x28, 0x16, 0x5c, 0x83, 0x98, 0x81, 0x1b, 0x53, 0x9b, 0x10, - 0xf4, 0xee, 0xe9, 0x4c, - 0x3d, 0x1b, 0x8c, 0x26, 0x58, 0xea, 0x7f, 0x8a, 0x95, 0x8b, 0x2f, 0x86, - 0x6e, 0xcb, 0x5b, 0xde, - 0xa9, 0x9f, 0x51, 0x36, 0xe5, 0xcd, 0x22, 0x32, 0xef, 0xc3, 0x43, 0xf4, - 0x18, 0x69, 0x35, 0x11, - 0xc3, 0x85, 0x07, 0x46, 0x50, 0x38, 0x72, 0x9c, 0x4a, 0xf8, 0x84, 0x69, - 0x99, 0x81, 0xfc, 0x39, - 0x57, 0x01, 0xda, 0x56, 0xed, 0x1f, 0x2f, 0x24, 0x30, 0xb0, 0xe8, 0x1b, - 0xef, 0x23, 0x92, 0xf6, - 0x28, 0x4e, 0x7e, 0x66, 0xe9, 0x76, 0xc8, 0x2f, 0xbe, 0x68, 0x5c, 0x8d, - 0x75, 0x06, 0x20, 0x64, - 0xbc, 0xca, 0xa3, 0x76, 0x54, 0x51, 0x95, 0x97, 0xc4, 0x20, 0x30, 0xff, - 0x03, 0xa4, 0x4e, 0xab, - 0x93, 0x19, 0xfb, 0x8a, 0x41, 0xd4, 0x21, 0xc2, 0xf5, 0x28, 0x3c, 0xb0, - 0x73, 0x8d, 0xbc, 0xf1, - 0x07, 0x9d, 0x26, 0x9a, 0xfc, 0xf3, 0x7c, 0x7a, 0x8f, 0x60, 0x50, 0xc2, - 0x05, 0x2f, 0xd2, 0x3e, - 0x78, 0xd2, 0x82, 0xaa, 0xf8, 0x9a, 0x9b, 0x71, 0x01, 0xb8, 0xe4, 0x54, - 0x9f, 0x0a, 0x60, 0xac, - 0xec, 0x56, 0x5f, 0xba, 0x45, 0xbd, 0xc6, 0xc9, 0x7b, 0xf0, 0x88, 0x26, - 0xe9, 0xa8, 0x0e, 0x63, - 0x86, 0x4c, 0x09, 0xca, 0xf0, 0x48, 0x96, 0x67, 0xde, 0xcb, 0x4f, 0xbb, - 0x68, 0x40, 0xc7, 0x4b, - 0x12, 0xc8, 0xd4, 0xda, 0x4d, 0x6f, 0xcb, 0xdf, 0xa4, 0x83, 0x23, 0xc9, - 0x1e, 0xe2, 0xa9, 0x84, - 0x6d, 0x87, 0x70, 0xea, 0x49, 0x06, 0x2c, 0xd4, 0x2a, 0x5b, 0x97, 0x5f, - 0x84, 0xc7, 0x1b, 0x16, - 0xf9, 0x03, 0xad, 0xfa, 0xf4, 0x21, 0x71, 0x6c, 0x50, 0x13, 0xfb, 0x2d, - 0xf2, 0x65, 0x75, 0xd9, - 0xb9, 0xb3, 0xdc, 0x0a, 0xe0, 0x2f, 0x8c, 0x4b, 0xa3, 0x2d, 0xda, 0xa6, - 0x45, 0xd4, 0x4a, 0x46, - 0x2d, 0x37, 0x01, 0x1a, 0x5d, 0x08, 0xd1, 0xf3, 0xd9, 0x65, 0xb6, 0xd4, - 0x33, 0x76, 0x24, 0x89, - 0x52, 0x78, 0xa5, 0x2a, 0x59, 0x61, 0x36, 0xf8, 0x57, 0xbd, 0x02, 0x42, - 0xa9, 0x53, 0x96, 0x1b, - 0xc6, 0xfc, 0x78, 0x3a, 0xe4, 0x46, 0x6b, 0x40, 0x2d, 0xf5, 0x6e, 0x30, - 0xdf, 0xf1, 0xf8, 0xd4, - 0xac, 0xe6, 0x2e, 0x4a, 0x51, 0xb3, 0x3b, 0xee, 0x88, 0xce, 0xa9, 0xad, - 0x5e, 0x19, 0x31, 0xfc, - 0x38, 0x62, 0xf3, 0x5a, 0xec, 0x94, 0x66, 0x56, 0xf2, 0x86, 0xc5, 0xdf, - 0x28, 0xbb, 0x5f, 0x33, - 0x47, 0x2d, 0x57, 0x6a, 0xe8, 0xfd, 0x81, 0x5d, 0x7c, 0x5e, 0x71, 0x49, - 0xb2, 0x9e, 0xed, 0xa1, - 0xd3, 0xa9, 0x8a, 0x7a, 0x55, 0xda, 0xdc, 0xe5, 0x06, 0x16, 0x1d, 0x3b, - 0xc4, 0x3c, 0x83, 0x6e, - 0xc7, 0x8e, 0xb5, 0x49, 0xc0, 0xe1, 0xb8, 0x13, 0x59, 0x22, 0x33, 0x9c, - 0x1f, 0x3f, 0x93, 0x5c, - 0x53, 0x0a, 0x68, 0x59, 0x7d, 0xc6, 0xe5, 0xab, 0x23, 0x6a, 0x5f, 0xee, - 0x69, 0x9d, 0xfd, 0x93, - 0x2c, 0x45, 0xcc, 0x69, 0x79, 0xaf, 0x02, 0xa0, 0xad, 0xb2, 0xeb, 0x78, - 0xf3, 0xb8, 0x4f, 0x01, - 0xb8, 0xc1, 0x11, 0x79, 0xc4, 0x88, 0x5f, 0x18, 0xd7, 0xfa, 0x87, 0x0a, - 0x85, 0x1a, 0x21, 0xce, - 0xd2, 0xdb, 0x47, 0x09, 0x71, 0x7d, 0x0f, 0xb6, 0x72, 0xc1, 0x40, 0x97, - 0x04, 0xf2, 0xe8, 0xe6, - 0x46, 0x5f, 0x9a, 0x19, 0xcc, 0x5a, 0x52, 0x0e, 0x08, 0x89, 0x2c, 0xe5, - 0x72, 0x50, 0x86, 0x29, - 0x39, 0x10, 0x3e, 0x29, 0xc8, 0x33, 0xb5, 0x05, 0x86, 0x51, 0x98, 0x73, - 0xe8, 0x75, 0x34, 0xbb, - 0xad, 0x94, 0xe3, 0x39, 0x75, 0x14, 0xe8, 0xbd, 0xfc, 0x19, 0xf4, 0x01, - 0x9e, 0xd7, 0x5a, 0x74, - 0xed, 0x24, 0x92, 0xc9, 0x61, 0x1a, 0x15, 0x9a, 0x0f, 0x27, 0xd5, 0x8a, - 0x29, 0x66, 0x65, 0xeb, - 0x79, 0xa0, 0x4f, 0xd9, 0xdc, 0x3d, 0x48, 0x22, 0x75, 0x6f, 0xb9, 0xf8, - 0x5f, 0xc4, 0x0b, 0x24, - 0x06, 0xef, 0xeb, 0xe9, 0xd8, 0x54, 0xaf, 0x29, 0xfb, 0xb7, 0x0d, 0x6e, - 0xc5, 0xe1, 0xb9, 0xb6, - 0x92, 0x6b, 0x36, 0xf9, 0x65, 0x73, 0xf2, 0x91, 0x81, 0xff, 0x61, 0x1c, - 0xb3, 0x43, 0xd7, 0x79, - 0xf8, 0x71, 0x60, 0x89, 0xd0, 0x86, 0xa2, 0x3f, 0x24, 0xc4, 0xa6, 0x81, - 0x32, 0xab, 0x1e, 0x51, - 0x6c, 0xf5, 0xbd, 0x99, 0x6d, 0xa1, 0xff, 0x87, 0x5e, 0x8c, 0xca, 0xf3, - 0x44, 0x09, 0x70, 0x9e, - 0x13, 0xba, 0x19, 0xa9, 0x69, 0xc8, 0x18, 0x8c, 0xd0, 0x54, 0x7e, 0x65, - 0xde, 0x2c, 0xc2, 0x0c, - 0x87, 0x3e, 0xc4, 0xb9, 0xd4, 0xef, 0x45, 0x34, 0xaa, 0x1c, 0x12, 0x17, - 0xa8, 0x8e, 0xac, 0xc3, - 0x3b, 0xf4, 0x67, 0xcf, 0x80, 0xbe, 0xd0, 0xa3, 0x6e, 0x3c, 0x22, 0xe8, - 0xab, 0x2a, 0xe2, 0x68, - 0xaf, 0x70, 0xba, 0xdf, 0x3d, 0x99, 0x8d, 0x1b, 0x14, 0x74, 0x4e, 0x9a, - 0xdd, 0x88, 0x8c, 0xa7, - 0xd0, 0x3f, 0x1e, 0xef, 0x39, 0xf0, 0x6a, 0x10, 0x9a, 0xac, 0xfa, 0x0c, - 0x47, 0xad, 0x3e, 0x35, - 0x44, 0xbb, 0xc3, 0xff, 0x84, 0xd7, 0x37, 0xa8, 0xe0, 0xe4, 0x96, 0x7e, - 0x31, 0x0f, 0x50, 0xfa, - 0x2e, 0xa1, 0x95, 0x8f, 0x31, 0x22, 0x67, 0x06, 0x45, 0xdf, 0x51, 0xe3, - 0xb0, 0xe7, 0x99, 0xd2, - 0xba, 0x25, 0x48, 0x9f, 0x8c, 0x05, 0x3a, 0xbe, 0x3f, 0x97, 0x3d, 0x91, - 0xc6, 0x45, 0xf7, 0x1d, - 0xc5, 0x6a, 0xec, 0xaf, 0x88, 0x6c, 0xdd, 0xb5, 0xb1, 0x4f, 0x89, 0x07, - 0x5c, 0x60, 0x45, 0x8f, - 0x51, 0xee, 0x31, 0xbf, 0x35, 0x4b, 0x80, 0x0d, 0xcb, 0x07, 0xe5, 0x75, - 0x2a, 0xc2, 0x2b, 0x40, - 0x11, 0x5e, 0x40, 0x4f, 0x21, 0x45, 0x7d, 0x2a, 0x38, 0x39, 0xc4, 0xfe, - 0x9d, 0x73, 0x14, 0xdf, - 0x85, 0xda, 0x9d, 0x5f, 0x9c, 0x62, 0x20, 0x92, 0x42, 0x71, 0xa8, 0x8c, - 0xeb, 0xd1, 0x7a, 0x10, - 0xfa, 0x95, 0x39, 0x6f, 0x98, 0x0b, 0xc7, 0x99, 0xcc, 0xa9, 0x1c, 0x1a, - 0x71, 0xf4, 0xc8, 0x82, - 0x6e, 0x11, 0xe4, 0x7f, 0x25, 0x2c, 0x9a, 0x21, 0xb6, 0xe1, 0x70, 0x68, - 0x07, 0x56, 0xa6, 0x4d, - 0x04, 0x0b, 0xb2, 0x0f, 0x90, 0xd9, 0xca, 0x8f, 0x13, 0xda, 0xb7, 0xf5, - 0x86, 0xbe, 0x6f, 0x65, - 0x90, 0x8f, 0x6f, 0x1f, 0x2d, 0xfe, 0x97, 0x37, 0x69, 0x92, 0xdb, 0x87, - 0xf0, 0x1c, 0x01, 0xaa, - 0xef, 0xc0, 0xcb, 0x2f, 0x29, 0x97, 0x70, 0x3c, 0xe7, 0x4a, 0x6f, 0x11, - 0x6a, 0x39, 0xb3, 0x38, - 0x7b, 0x44, 0x16, 0x3f, 0x94, 0xb0, 0x2d, 0x84, 0x9d, 0x02, 0x03, 0x63, - 0x1c, 0x9b, 0xdd, 0xf7, - 0x6f, 0x63, 0x29, 0x0c, 0x01, 0x8b, 0x49, 0x72, 0xc2, 0x36, 0x2d, 0xc4, - 0xc7, 0x98, 0xcd, 0xc5, - 0xfb, 0xe7, 0xf4, 0x1c, 0xbc, 0xac, 0x14, 0xca, 0xb8, 0x7e, 0x41, 0xb6, - 0xb1, 0x3a, 0xa3, 0x0a, - 0x84, 0xa8, 0x50, 0x2c, 0xb8, 0xc5, 0xf3, 0xc1, 0x36, 0xa6, 0xf5, 0x20, - 0x2b, 0x1f, 0x11, 0x98, - 0x10, 0x2c, 0x8d, 0x3c, 0x05, 0xe2, 0xae, 0x79, 0x4c, 0xee, 0x99, 0x52, - 0x5d, 0xbd, 0x7f, 0x57, - 0x7a, 0x36, 0xdb, 0x4c, 0xb0, 0x17, 0xfe, 0xd7, 0xe9, 0xd5, 0x5e, 0xcf, - 0xdc, 0x55, 0xb6, 0x7f, - 0xee, 0xb2, 0x06, 0x5c, 0x0d, 0x30, 0xa3, 0x6f, 0x93, 0x9d, 0x32, 0xbd, - 0xaa, 0xf7, 0xd8, 0xb0, - 0x91, 0xfd, 0xa2, 0x6c, 0x09, 0x59, 0x44, 0x64, 0x1d, 0x45, 0x86, 0x2b, - 0x30, 0xd2, 0x6a, 0x22, - 0x05, 0x79, 0x7f, 0x7c, 0xb4, 0x7e, 0x19, 0xdc, 0x67, 0x0d, 0xea, 0x59, - 0x46, 0x70, 0x04, 0xed, - 0x45, 0xc9, 0x0e, 0x8c, 0xa0, 0x70, 0xe4, 0xfb, 0x94, 0x33, 0xcb, 0xd2, - 0xf1, 0xc1, 0x3b, 0x72, - 0xd1, 0x4d, 0xd3, 0x9c, 0x1d, 0x57, 0xb9, 0x43, 0xee, 0x7b, 0xa7, 0xa0, - 0x87, 0x63, 0x55, 0xbd, - 0xae, 0x02, 0x77, 0xac, 0x19, 0x3e, 0x5e, 0x48, 0x60, 0xa3, 0x13, 0x36, - 0x1d, 0x46, 0xe7, 0x2f, - 0x3a, 0x86, 0xaa, 0xbc, 0xa4, 0x19, 0x03, 0xf0, 0x1a, 0xeb, 0x7f, 0x44, - 0x6b, 0xe4, 0x89, 0xe0, - 0x50, 0x9c, 0xfc, 0xcc, 0x11, 0xec, 0x53, 0x5e, 0xbf, 0xd0, 0xb8, 0xd9, - 0xea, 0x0c, 0x40, 0xc8, - 0xc4, 0x18, 0x21, 0xdc, 0xac, 0xcb, 0x0e, 0xe6, 0xc5, 0x98, 0xd4, 0xab, - 0x9c, 0xae, 0x2e, 0x07, - 0xbb, 0x57, 0x85, 0xec, 0xa8, 0xa2, 0xe9, 0xed, 0x4b, 0x40, 0x60, 0x3d, - 0x06, 0x8b, 0x9c, 0x95, - 0x2f, 0xd3, 0x58, 0xfc, 0x15, 0x85, 0xb4, 0x55, 0x31, 0x08, 0x0c, 0x4f, - 0x70, 0x29, 0xf2, 0x5a, - 0xe5, 0x32, 0x35, 0xd7, 0x82, 0x6b, 0x42, 0x47, 0x29, 0x50, 0x78, 0xa3, - 0xe6, 0xd9, 0xbb, 0x21, - 0x71, 0xb6, 0xe8, 0xc7, 0x3f, 0x4c, 0x1f, 0xff, 0x53, 0x18, 0x14, 0xd1, - 0x90, 0x7b, 0xd5, 0xee, - 0x0e, 0xf9, 0x4c, 0xf7, 0x3b, 0x25, 0xf8, 0xf4, 0xdd, 0xc0, 0xa0, 0x47, - 0x0a, 0x5e, 0x67, 0x7c, - 0x9a, 0x7d, 0x91, 0xe7, 0x86, 0x02, 0xa5, 0x4c, 0xa7, 0x88, 0xcc, 0x35, - 0x7c, 0xfc, 0x09, 0xb3, - 0xf0, 0x67, 0xc7, 0x97, 0x33, 0xf7, 0xf5, 0xe2, 0x02, 0xb3, 0x0b, 0xa8, - 0xfd, 0x14, 0xc0, 0x9b, - 0x64, 0xe3, 0x1a, 0x87, 0x8e, 0xd0, 0xa8, 0x5a, 0x78, 0xfb, 0x67, 0xda, - 0x8b, 0xb6, 0xae, 0x54, - 0x1b, 0xac, 0xbe, 0xb7, 0x8a, 0xb9, 0x4f, 0x51, 0xf6, 0x23, 0xd3, 0x4c, - 0x11, 0x93, 0x1c, 0xc6, - 0x8f, 0x28, 0x63, 0xa7, 0x37, 0x9e, 0x12, 0xe9, 0x8c, 0x6b, 0xbf, 0x3e, - 0x67, 0x31, 0x72, 0x09, - 0xcf, 0x98, 0x12, 0x57, 0x23, 0x90, 0xef, 0xce, 0x7f, 0x55, 0x9e, 0xb5, - 0xd0, 0x80, 0x4d, 0x96, - 0x5b, 0x1c, 0xcf, 0x47, 0x9e, 0xb7, 0xb2, 0x76, 0x05, 0x1d, 0xf2, 0xc7, - 0xa6, 0x22, 0x23, 0x59, - 0x24, 0x53, 0x6b, 0x77, 0x9a, 0xde, 0x55, 0x7d, 0x8b, 0xc5, 0x46, 0x51, - 0x3c, 0x07, 0x91, 0xcb, - 0xb0, 0xd7, 0xb6, 0x67, 0x27, 0xf9, 0x08, 0xc5, 0xf1, 0x8d, 0x2a, 0x23, - 0x4a, 0xa5, 0xff, 0x04, - 0xda, 0xcd, 0xe0, 0x17, 0x92, 0x0c, 0x58, 0x6b, 0x54, 0xb6, 0xed, 0xbe, - 0xcb, 0x4d, 0x36, 0x2c, - 0x4e, 0x49, 0x3d, 0x07, 0x2f, 0x2b, 0x05, 0xd3, 0x2e, 0xfe, 0x81, 0xcc, - 0xbd, 0xef, 0x58, 0xe3, - 0x31, 0x06, 0x99, 0x37, 0x2b, 0x42, 0xe2, 0xd8, 0xa0, 0x26, 0x35, 0x5a, - 0x27, 0xca, 0xea, 0x71, - 0xa5, 0x82, 0x44, 0x27, 0x96, 0x65, 0xbf, 0x60, 0xda, 0x6e, 0x59, 0x28, - 0x51, 0x68, 0x84, 0xbe, - 0xb1, 0xa5, 0x7b, 0x14, 0x03, 0x5e, 0xdb, 0x96, 0x85, 0x5a, 0x77, 0x8f, - 0x8a, 0x6b, 0x94, 0x8c, - 0x25, 0x21, 0xa6, 0x04, 0xbe, 0x79, 0x86, 0x2e, 0xff, 0x12, 0x1b, 0xfd, - 0xfc, 0xc9, 0xfa, 0x43, - 0x5a, 0x6e, 0x02, 0x34, 0xba, 0x10, 0x61, 0x25, 0x71, 0xca, 0xaf, 0x6b, - 0x66, 0xec, 0x48, 0xd1, - 0xce, 0xea, 0xdf, 0x24, 0x07, 0x37, 0x3c, 0x9d, 0x0b, 0x82, 0xc3, 0x19, - 0x10, 0x4e, 0x26, 0x1e, - 0xa4, 0xf0, 0x89, 0x54, 0xb2, 0xc2, 0x6c, 0x33, 0xae, 0xb9, 0x04, 0x84, - 0x91, 0xa6, 0xef, 0x36, - 0x30, 0x74, 0x54, 0x44, 0x0f, 0xe5, 0x31, 0x8b, 0xd4, 0xf1, 0x68, 0xf6, - 0xe7, 0x04, 0x81, 0xf9, - 0x4f, 0x3b, 0xf0, 0x74, 0x0b, 0x8c, 0xd6, 0x80, 0x5a, 0x29, 0xdc, 0x60, - 0x7d, 0x21, 0x33, 0x6b, - 0xdb, 0xbf, 0x2d, 0x64, 0xb6, 0xab, 0x8b, 0x38, 0x20, 0x61, 0xb0, 0x12, - 0x0b, 0x83, 0x5d, 0xa4, - 0x9b, 0x0f, 0x5c, 0x94, 0xa2, 0xa5, 0x76, 0x1f, 0xd3, 0x5f, 0x91, 0x99, - 0xbc, 0x32, 0x62, 0x3b, - 0x0f, 0x8b, 0x81, 0x84, 0x1f, 0x82, 0x2b, 0xa7, 0xa9, 0x17, 0xfd, 0xeb, - 0xca, 0x90, 0x0c, 0xf4, - 0x70, 0xc4, 0x25, 0xb4, 0x1b, 0xeb, 0xcc, 0xac, 0x27, 0xcf, 0x49, 0x7d, - 0x50, 0xb5, 0xbe, 0x66, - 0xe4, 0x40, 0xf8, 0xa4, 0xa6, 0xcc, 0x91, 0x14, 0x5d, 0x87, 0x25, 0x0f, - 0x26, 0x17, 0xd0, 0xa9, - 0x8e, 0x5a, 0xae, 0xd4, 0x13, 0x39, 0xc1, 0xba, 0xf8, 0xbc, 0xe2, 0x92, - 0xa7, 0xff, 0x19, 0x81, - 0x1a, 0xde, 0x73, 0xc4, 0xae, 0x1e, 0x9c, 0x02, 0x82, 0xf4, 0x8e, 0xe0, - 0xd1, 0x5d, 0x77, 0x4e, - 0x65, 0x91, 0xd7, 0xf4, 0xaa, 0x77, 0x7b, 0x09, 0x0c, 0x2c, 0x3a, 0x76, - 0x4b, 0x78, 0xc5, 0xdc, - 0xf1, 0x15, 0x0a, 0xe4, 0x17, 0x50, 0x26, 0xb1, 0x76, 0x64, 0x56, 0x04, - 0x3d, 0xda, 0xab, 0x13, - 0x4d, 0xdf, 0xa9, 0x92, 0x43, 0x01, 0xb3, 0x26, 0xb2, 0x44, 0x66, 0xfb, - 0x3e, 0x7e, 0xe5, 0xb8, - 0xd9, 0x5b, 0x74, 0x82, 0xfe, 0x26, 0xee, 0x9e, 0xc8, 0x0c, 0x0a, 0x89, - 0x48, 0xdc, 0x8b, 0x77, - 0xa6, 0x14, 0xd0, 0xb2, 0xfa, 0x4f, 0x09, 0x95, 0x46, 0xd4, 0xbe, 0x1f, - 0xd2, 0xf9, 0x39, 0xe5, - 0x32, 0x90, 0x0d, 0xa2, 0x47, 0x68, 0x54, 0x2d, 0x3c, 0x9c, 0xd2, 0x6d, - 0xa4, 0x5b, 0x57, 0x2a, - 0x58, 0x8a, 0x5b, 0xd2, 0xf2, 0x9d, 0x04, 0x83, 0x99, 0xa7, 0x15, 0xf0, - 0x25, 0xb3, 0x9e, 0x02, - 0xcc, 0x0e, 0x86, 0xc2, 0x4f, 0xba, 0x59, 0x3b, 0xe3, 0xef, 0x79, 0x82, - 0x53, 0x11, 0xf0, 0xcd, - 0xb3, 0x41, 0x22, 0xf2, 0x4b, 0xd3, 0xbe, 0x30, 0x6d, 0x37, 0xcd, 0x14, - 0xc9, 0x34, 0x42, 0x5f, - 0x27, 0xc5, 0xff, 0xe2, 0xf6, 0xf4, 0xe3, 0x88, 0x17, 0x7f, 0xa1, 0x66, - 0xbf, 0x96, 0x2c, 0x90, - 0x67, 0x75, 0x8e, 0x12, 0xe2, 0xfa, 0x1e, 0xaf, 0xe4, 0x41, 0x80, 0xed, - 0x08, 0x27, 0x13, 0x0f, - 0xf3, 0xf1, 0x53, 0x02, 0x5f, 0xdd, 0x43, 0x17, 0x9e, 0x09, 0xec, 0x9f, - 0x7e, 0x85, 0x7d, 0xc0, - 0x8c, 0xbe, 0xf7, 0x32, 0x5b, 0xb4, 0xa4, 0x1c, 0x10, 0xd1, 0x58, 0x09, - 0xe4, 0xa0, 0xcf, 0x52, - 0x18, 0x3a, 0x2a, 0x22, 0xe6, 0x93, 0xf9, 0xa4, 0x6a, 0x99, 0x34, 0x7b, - 0x92, 0x02, 0xa1, 0x9d, - 0x72, 0x20, 0x7c, 0x52, 0x53, 0x66, 0xa9, 0x0a, 0xcf, 0xa2, 0xf3, 0xe6, - 0x13, 0xea, 0x68, 0xb5, - 0xe6, 0xa4, 0xa1, 0x42, 0xee, 0x41, 0xf4, 0xb2, 0xb5, 0xea, 0x9f, 0x94, - 0x65, 0x48, 0x06, 0x7a, - 0x99, 0xeb, 0x05, 0x72, 0xea, 0x28, 0x13, 0xb9, 0x3b, 0x32, 0x2b, 0x02, - 0xff, 0x6d, 0xb4, 0xe8, - 0x0d, 0x6f, 0xd8, 0x62, 0x57, 0x0f, 0x4e, 0x01, 0x41, 0x7a, 0x47, 0x70, - 0x89, 0xcf, 0xda, 0x27, - 0x19, 0x48, 0xe7, 0x51, 0xc2, 0x34, 0x2a, 0xf7, 0x1e, 0x4e, 0x69, 0xd7, - 0x52, 0xcc, 0xca, 0x15, - 0x8d, 0xcc, 0x3a, 0x41, 0x7f, 0x13, 0x77, 0x4f, 0x64, 0x06, 0x05, 0xa5, - 0x24, 0x6e, 0xa4, 0xda, - 0xf2, 0x83, 0x9e, 0x71, 0x7b, 0x7a, 0x90, 0x44, 0xea, 0xde, 0xb1, 0x33, - 0xbe, 0x4b, 0x16, 0x48, - 0x66, 0x07, 0x43, 0x61, 0xc6, 0x5d, 0xcd, 0xfc, 0x90, 0x96, 0xdd, 0x41, - 0xc8, 0xe9, 0x78, 0x87, - 0x0c, 0x1d, 0x15, 0x11, 0x73, 0xa8, 0x9d, 0x52, 0x35, 0xad, 0x1a, 0xdc, - 0x49, 0x01, 0xb1, 0xaf, - 0x98, 0x99, 0xc8, 0x01, 0xce, 0x8f, 0xc0, 0xea, 0x4f, 0xe5, 0x76, 0xae, - 0x3f, 0xa3, 0xdf, 0x60, - 0xe7, 0xd6, 0x6c, 0x31, 0xca, 0xe6, 0x27, 0xe1, 0xc1, 0x3d, 0xc2, 0x38, - 0xa5, 0x86, 0x6d, 0xf2, - 0x73, 0x52, 0xb1, 0x21, 0x77, 0xc1, 0x7a, 0x59, 0xbb, 0x75, 0xae, 0x4a, - 0xd3, 0x24, 0x03, 0x3d, - 0x33, 0xe2, 0xc0, 0xd1, 0x63, 0xcf, 0x87, 0x7e, 0x48, 0x4b, 0x8f, 0xc1, - 0x64, 0x95, 0x3c, 0xa2, - 0xa7, 0x66, 0x1d, 0xc1, 0xde, 0xe8, 0xda, 0xc6, 0x32, 0x03, 0xe3, 0xb3, - 0x12, 0x37, 0x52, 0x6d, - 0xd8, 0x29, 0xb9, 0xf1, 0xda, 0x81, 0x3d, 0xcd, 0xbc, 0xdb, 0x57, 0x25, - 0x88, 0x12, 0xe0, 0xff, - 0x4c, 0xad, 0x64, 0xe1, 0x67, 0xa6, 0x60, 0x75, 0xc6, 0x93, 0x3b, 0x57, - 0xfe, 0xb0, 0x8e, 0x30, - 0x26, 0xb7, 0x32, 0x91, 0xd2, 0x53, 0x30, 0xdb, 0x63, 0xa8, 0xfc, 0xca, - 0x7f, 0x58, 0x47, 0x18, - 0xb2, 0x33, 0xef, 0x81, 0x6f, 0x74, 0x6d, 0x63, 0x19, 0xe0, 0x90, 0xb8, - 0x09, 0xfa, 0x29, 0xd7, - 0xcd, 0x7c, 0x4b, 0xb1, 0x6b, 0x1d, 0x8a, 0x68, 0x97, 0x38, 0x24, 0x2e, - 0x93, 0xdf, 0x9b, 0x45, - 0x59, 0xf8, 0x96, 0xa1, 0xd6, 0x3a, 0xd7, 0xd0, 0xed, 0x70, 0x48, 0x5c, - 0xe5, 0x7d, 0xf5, 0x8a, - 0x76, 0x2b, 0xce, 0x5d, 0xc3, 0xbf, 0x63, 0x85, 0xdc, 0x78, 0x44, 0x13, - 0x95, 0x54, 0x07, 0xd0, - 0xe2, 0xaf, 0x13, 0x4d, 0x7e, 0x98, 0x3e, 0x3d, 0xa6, 0x30, 0x28, 0x61, - 0xe3, 0xf6, 0x69, 0x1f, - 0x9d, 0xe0, 0xb7, 0x7d, 0x7a, 0xf1, 0xd9, 0x36, 0x28, 0xe8, 0x9c, 0xf7, - 0x79, 0xd3, 0xdb, 0x8d, - 0x09, 0x64, 0x6a, 0x6d, 0xc7, 0xd6, 0x84, 0x8e, 0x52, 0xa0, 0xf0, 0x85, - 0x0f, 0x71, 0xb5, 0x42, - 0x63, 0x7e, 0x3c, 0x1d, 0x72, 0x23, 0xd4, 0x20, 0xf7, 0x9b, 0x37, 0x18, - 0x8e, 0x99, 0x7c, 0x6a, - 0xf7, 0xfa, 0xe1, 0x0d, 0xcf, 0x04, 0x89, 0x98, 0x8d, 0xd3, 0x5b, 0x6a, - 0xf8, 0x3b, 0x12, 0xa5, - 0x88, 0xb5, 0x45, 0x3d, 0xcb, 0x6d, 0x6e, 0x93, 0x03, 0x0b, 0xef, 0xfc, - 0x62, 0x1e, 0xa0, 0x37, - 0x1c, 0x31, 0x98, 0x2d, 0x76, 0x4a, 0x33, 0x2b, 0x79, 0x43, 0x83, 0x8e, - 0x14, 0xbc, 0xce, 0xf8, - 0x5c, 0x81, 0xe9, 0xdd, 0x62, 0x44, 0xce, 0x0c, 0x8a, 0x7d, 0xa2, 0x05, - 0xa3, 0x0d, 0xf1, 0x67, - 0xc8, 0x05, 0x34, 0xcd, 0xdf, 0x63, 0x93, 0xb4, 0xf0, 0x35, 0xce, 0x77, - 0xd5, 0xaf, 0x9f, 0xa8, - 0xb7, 0x4a, 0x90, 0xfd, 0xdb, 0x0a, 0x74, 0xbf, 0x7e, 0xed, 0x7a, 0xe1, - 0x4f, 0x8a, 0x2d, 0x3a, - 0x23, 0xce, 0x4d, 0xed, 0x66, 0x2d, 0x29, 0x07, 0x04, 0xa5, 0x16, 0x93, - 0x39, 0x28, 0x43, 0xf5, - 0x49, 0xd4, 0x1b, 0x9d, 0xd3, 0xd8, 0x79, 0xa9, 0xa1, 0x9e, 0xd1, 0x0e, - 0xb8, 0xc0, 0x8a, 0xdd, - 0xdd, 0x50, 0xc6, 0x8d, 0x6e, 0xff, 0x24, 0x11, 0xdb, 0xd6, 0xbd, 0x7c, - 0xce, 0x62, 0xe4, 0x12, - 0xa2, 0x1f, 0x62, 0xbd, 0x6a, 0x96, 0xc3, 0x1a, 0x55, 0x0e, 0x09, 0xea, - 0x54, 0x47, 0x56, 0x80, - 0x36, 0x9b, 0xbf, 0xad, 0xd7, 0xb1, 0x9e, 0xa2, 0x2f, 0x46, 0x65, 0x98, - 0x22, 0xe5, 0x38, 0x4f, - 0x22, 0xbc, 0x80, 0x9e, 0x42, 0x8a, 0xfa, 0x54, 0x70, 0x72, 0x4b, 0x3f, - 0xf9, 0xe6, 0x28, 0x7d, - 0xb6, 0x38, 0x5d, 0x8e, 0xff, 0xad, 0xa7, 0xec, 0x0a, 0x3a, 0x27, 0x4d, - 0x8f, 0x44, 0x46, 0xb2, - 0xc9, 0x77, 0xf9, 0xbe, 0xfb, 0xc4, 0x40, 0xe7, 0x84, 0xe2, 0x93, 0xdb, - 0x15, 0x61, 0xf4, 0x20, - 0x5d, 0xf3, 0x24, 0xae, 0x46, 0xe3, 0x1d, 0x5f, 0xfe, 0xaa, 0xff, 0xa9, - 0x63, 0xc3, 0x9a, 0xef, - 0x37, 0xe9, 0x72, 0xde, 0xf3, 0x16, 0x4d, 0xf1, 0x5b, 0x91, 0x38, 0x34, - 0xe2, 0x2b, 0x53, 0xc7, - 0xa3, 0x6d, 0xaf, 0xce, 0x4e, 0x31, 0x10, 0x49, 0x21, 0xd9, 0x54, 0x46, - 0x94, 0x89, 0x3d, 0x08, - 0xdc, 0x22, 0x0b, 0xfe, 0x4a, 0x58, 0xf7, 0x42, 0xaf, 0x01, 0xe0, 0xd0, - 0x0e, 0xac, 0x8f, 0x9a, - 0x48, 0xa6, 0xd6, 0xee, 0xf7, 0x7f, 0xaa, 0xfa, 0xd5, 0x49, 0x8c, 0xa2, - 0x78, 0x0e, 0xe1, 0x55, - 0x08, 0x16, 0xa7, 0x1e, 0xe3, 0x71, 0x57, 0xdd, 0x26, 0x77, 0xad, 0x29, - 0xcf, 0xbf, 0xde, 0xca, - 0x9c, 0x92, 0x7a, 0x0e, 0x5e, 0x56, 0x0a, 0x65, 0x5c, 0x3f, 0xc1, 0x5b, - 0xb9, 0x1d, 0xb0, 0x05, - 0xe3, 0xdd, 0xde, 0x3e, 0x5a, 0x3f, 0xed, 0x6e, 0xd2, 0xe7, 0x75, 0xcd, - 0x23, 0x38, 0x02, 0x97, - 0x77, 0x59, 0x03, 0x2e, 0xe7, 0x18, 0xb0, 0xd6, 0xa8, 0xaf, 0x19, 0xbf, - 0x55, 0x9a, 0x6c, 0x58, - 0x1d, 0x43, 0x55, 0x5e, 0x52, 0xed, 0xe0, 0x78, 0x0d, 0x94, 0xde, 0x22, - 0xd4, 0x72, 0xa5, 0x70, - 0x89, 0xc7, 0x88, 0x4e, 0xef, 0xca, 0xbd, 0xc0, 0x77, 0xdc, 0xb2, 0x50, - 0xa2, 0xd0, 0xcb, 0xbf, - 0xf6, 0x88, 0x2c, 0x7e, 0xeb, 0xa3, 0x5a, 0xcb, 0xf9, 0x04, 0x06, 0xc6, - 0x38, 0xf5, 0x79, 0x2d, - 0x62, 0x0c, 0xf1, 0x6e, 0x56, 0x84, 0x07, 0x73, 0x83, 0x4c, 0x6a, 0xb4, - 0x4e, 0x57, 0x17, 0xe2, - 0xde, 0xc6, 0x52, 0x18, 0x02, 0xd5, 0x92, 0xe4, 0x47, 0x6c, 0x5a, 0x4b, - 0x4d, 0xf3, 0x59, 0x49, - 0x4a, 0x42, 0x8f, 0x08, 0xbf, 0xf2, 0xcf, 0x5c, 0x3d, 0x24, 0x36, 0x39, - 0x3b, 0x51, 0x37, 0x86, - 0x35, 0x0d, 0x2b, 0x38, 0xbb, 0x9b, 0x28, 0x57, 0xb3, 0xfc, 0x82, 0xaf, - 0xa1, 0x74, 0x85, 0x14, - 0xa1, 0x89, 0xf6, 0x28, 0x06, 0xbc, 0x75, 0xef, 0xc9, 0xb4, 0xee, 0xdd, - 0xd7, 0xd6, 0xeb, 0xdb, - 0xcb, 0x93, 0xa0, 0x58, 0xb3, 0x49, 0x25, 0x41, 0x6c, 0x8f, 0x29, 0x40, - 0x56, 0x3e, 0x22, 0xf3, - 0x5f, 0x17, 0x7d, 0x48, 0x0e, 0x6e, 0x78, 0xf9, 0x16, 0xc7, 0x45, 0x32, - 0x20, 0x9c, 0x4c, 0x3c, - 0x20, 0x58, 0xd9, 0x78, 0x0a, 0x07, 0x9f, 0xf2, 0x98, 0x1f, 0xf1, 0xa4, - 0xba, 0xb9, 0xfe, 0xae, - 0xb4, 0xdc, 0x04, 0x68, 0xb7, 0x20, 0xc2, 0x4a, 0xe2, 0x57, 0x9d, 0xd6, - 0xcc, 0x1b, 0x90, 0x61, - 0xf4, 0x6c, 0x75, 0x98, 0xa3, 0x2e, 0x3f, 0x6d, 0x11, 0x69, 0xbc, 0x5d, - 0x7b, 0xaa, 0xaf, 0xfe, - 0x60, 0xe8, 0xa8, 0x88, 0x1e, 0x09, 0x62, 0xd5, 0x6b, 0x21, 0xd0, 0x2f, - 0x0d, 0x08, 0xc1, 0x31, - 0x1f, 0xa7, 0x0c, 0xb8, 0x1a, 0x60, 0x85, 0xde, 0xe5, 0xf9, 0x64, 0xb9, - 0x97, 0x2d, 0x73, 0xa3, - 0x8b, 0x23, 0xd1, 0xa8, 0xa7, 0x47, 0xd8, 0x66, 0x9f, 0xb1, 0x08, 0xcb, - 0xe1, 0x8f, 0x1d, 0x6c, - 0xe1, 0x39, 0x87, 0xd8, 0x12, 0xb2, 0x88, 0xc8, 0x3a, 0x8a, 0xcf, 0x56, - 0x60, 0x67, 0xd4, 0x44, - 0x75, 0xbd, 0x5a, 0xc8, 0xaf, 0x95, 0xd5, 0x70, 0x40, 0xc2, 0xa3, 0x24, - 0x16, 0xc5, 0xba, 0x8b, - 0x0a, 0xf2, 0xfe, 0xf8, 0xab, 0xfc, 0x32, 0x7b, 0xce, 0x1a, 0x17, 0xb2, - 0x8c, 0xe0, 0x08, 0x19, - 0x9e, 0x76, 0x23, 0xe8, 0x16, 0xdb, 0x6f, 0xc3, 0xb4, 0x52, 0x7b, 0xc0, - 0xfa, 0x42, 0x66, 0xd6, - 0x8a, 0x51, 0x1c, 0xdb, 0x83, 0xe0, 0x0b, 0x35, 0xeb, 0x66, 0x55, 0x67, - 0x21, 0x41, 0x76, 0xe4, - 0x1e, 0xd5, 0xc1, 0xcb, 0x3e, 0xc7, 0x56, 0x8d, 0x91, 0x2e, 0x39, 0x15, - 0x57, 0xe3, 0x18, 0x2b, - 0x61, 0x9a, 0x65, 0xfb, 0x3a, 0xae, 0xb1, 0x86, 0x1f, 0xf6, 0x8d, 0x83, - 0xcd, 0xc6, 0xaa, 0xb9, - 0xf5, 0x1e, 0xb8, 0xeb, 0x87, 0x89, 0xec, 0x3e, 0x65, 0xbe, 0xe1, 0xf1, - 0xbb, 0x64, 0xc4, 0x76, - 0x9f, 0x04, 0xee, 0x9b, 0x32, 0x7c, 0xbc, 0x90, 0xc0, 0x85, 0x26, 0x6c, - 0x3a, 0x8c, 0x0d, 0x5e, - 0x0b, 0x80, 0x33, 0x8b, 0x8f, 0x5b, 0xe1, 0x28, 0xba, 0xcd, 0x4a, 0x1e, - 0x4c, 0x2e, 0x63, 0x91, - 0x74, 0xcf, 0x97, 0xbb, 0x8b, 0x32, 0x06, 0x23, 0x34, 0x15, 0xfe, 0x88, - 0xd6, 0x0b, 0xd1, 0x03, - 0xe0, 0x4b, 0x4a, 0xab, 0x36, 0x15, 0x5b, 0x9b, 0x4e, 0x5d, 0x92, 0xfa, - 0xa0, 0xa9, 0xbf, 0xcc, - 0xa0, 0xfb, 0x3b, 0x5b, 0x22, 0x1b, 0xa6, 0xbc, 0xbd, 0x63, 0xb3, 0x71, - 0x17, 0x18, 0x80, 0x53, - 0x34, 0x7f, 0xe6, 0x4b, 0x9f, 0x3c, 0xfb, 0x04, 0xc7, 0x2b, 0xdf, 0x03, - 0x61, 0xba, 0xee, 0x9c, - 0x4b, 0x30, 0x42, 0x7b, 0x9b, 0x55, 0x1c, 0x0f, 0x49, 0xf3, 0x6b, 0x95, - 0xfb, 0x9f, 0x5c, 0x0e, - 0xdf, 0xb4, 0x9f, 0x6b, 0x26, 0x72, 0x41, 0xb7, 0x33, 0xbb, 0x07, 0xe7, - 0x8d, 0x3d, 0x32, 0xc1, - 0xb5, 0xae, 0xc9, 0x1b, 0x93, 0x87, 0x11, 0x19, 0x96, 0x80, 0xc0, 0x7a, - 0x0c, 0xd5, 0xfb, 0xe9, - 0x21, 0x2a, 0x14, 0x0b, 0x2e, 0xa0, 0x4c, 0xa1, 0xec, 0xc8, 0xac, 0x08, - 0x7a, 0x77, 0x95, 0x26, - 0x5e, 0x65, 0xb0, 0x3b, 0x2a, 0xc9, 0xab, 0xaa, 0x62, 0x10, 0x18, 0x9e, - 0xe0, 0x52, 0x27, 0xb4, - 0xca, 0xe1, 0x6d, 0x2b, 0x97, 0xee, 0xf6, 0x12, 0x18, 0x58, 0x74, 0xec, - 0x96, 0xf0, 0x49, 0x7b, - }, + { + /* 0 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x94, 0x84, 0xdd, + 0x10, 0xbd, 0x27, 0x5d, 0xb8, 0x7a, 0x48, 0x6c, 0x72, 0x76, + 0xa2, 0x6e, 0x02, 0xeb, 0xcb, 0x79, 0x20, 0xb9, 0x4e, 0xba, + 0xb3, 0xf4, 0x90, 0xd8, 0xe4, 0xec, 0x87, 0xdc, 0x03, 0x7f, + 0x4f, 0xa4, 0x30, 0x04, 0x69, 0xe7, 0x0b, 0x8e, 0xd8, 0xb4, + 0x96, 0x9a, 0x25, 0xb2, 0x04, 0x15, 0x55, 0xf2, 0x40, 0xb1, + 0x9c, 0xb7, 0xa5, 0x2b, 0xe3, 0x73, 0x0b, 0x1b, 0xcd, 0x7b, + 0x05, 0x81, 0xd1, 0x2f, 0x50, 0x0c, 0xbb, 0xea, 0x1d, 0x51, + 0xab, 0x1f, 0x79, 0x6d, 0x6f, 0x15, 0x06, 0xfe, 0x9e, 0x8b, + 0x60, 0x08, 0xd2, 0x0d, 0x16, 0xdf, 0x73, 0xab, 0xef, 0xf7, + 0x4a, 0xa7, 0x07, 0x6a, 0x1a, 0x56, 0x70, 0xb5, 0xf5, 0x50, + 0xae, 0xa5, 0x3b, 0xc7, 0x9d, 0x81, 0xe8, 0xc9, 0x08, 0x2a, + 0xaa, 0x27, 0x80, 0xa1, 0xfb, 0xad, 0x89, 0x56, 0x05, 0xe6, + 0x16, 0x36, 0x59, 0xf6, 0x09, 0xbe, 0x2e, 0xfa, 0x90, 0x1c, + 0xdc, 0xf0, 0x31, 0x2c, 0x4d, 0x8a, 0x64, 0x40, 0xfb, 0x98, + 0x0a, 0xc1, 0x61, 0x5e, 0xa0, 0x18, 0xb5, 0x17, 0x3a, 0xa2, + 0x95, 0x3e, 0xf2, 0xda, 0xde, 0x2a, 0x0b, 0x55, 0xe5, 0x83, + 0xb0, 0xa5, 0x92, 0x4a, 0x82, 0xd8, 0xdd, 0x52, 0x80, 0xac, + 0x7c, 0x44, 0x0c, 0x3f, 0xff, 0xd5, 0xc0, 0x10, 0x67, 0x1a, + 0x2c, 0x7d, 0xe6, 0x95, 0x1d, 0x2d, 0x94, 0x8d, 0x0d, 0xab, + 0x7b, 0x08, 0xd0, 0xad, 0x40, 0x47, 0x94, 0x07, 0xae, 0xf9, + 0x6f, 0x5b, 0x36, 0xe3, 0x0e, 0xd4, 0x34, 0xac, 0xe0, 0xa9, + 0x29, 0xa0, 0x9f, 0x89, 0x76, 0x4d, 0xf9, 0xc1, 0x13, 0x51, + 0x0f, 0x40, 0xb0, 0x71, 0xf0, 0x14, 0x0e, 0xfd, 0x27, 0xf3, + 0x3e, 0x21, 0x8b, 0xb7, 0xb1, 0x3f, 0x10, 0x54, 0x97, 0x4e, + 0xc3, 0x81, 0x35, 0x99, 0xd1, 0xac, 0x0a, 0x0f, 0x2c, 0x6c, + 0xb2, 0x2f, 0x11, 0xc0, 0x13, 0x93, 0xd3, 0x3c, 0x12, 0xc4, + 0x69, 0xd6, 0x42, 0x63, 0x5e, 0x1a, 0x10, 0x41, 0x12, 0xbf, + 0x5c, 0x37, 0xe3, 0x38, 0x7b, 0x23, 0x62, 0x58, 0x9a, 0xd7, + 0xc8, 0x80, 0x35, 0xf3, 0x13, 0x2b, 0xd8, 0xea, 0xf3, 0x85, + 0x5c, 0x7e, 0xda, 0x22, 0xd2, 0xbb, 0xba, 0xf6, 0x97, 0x9d, + 0x14, 0x41, 0xc2, 0xbc, 0x83, 0x30, 0xa9, 0x2e, 0x74, 0x87, + 0xe9, 0x7c, 0x27, 0x77, 0x7f, 0x54, 0x15, 0xd5, 0x46, 0x61, + 0x93, 0x8d, 0x8e, 0x73, 0xcc, 0xfd, 0xa1, 0x10, 0x55, 0x01, + 0xdd, 0x3a, 0x16, 0xaa, 0x09, 0xc5, 0xa3, 0x89, 0xe7, 0x94, + 0xc7, 0x73, 0x79, 0xa4, 0xc3, 0x9b, 0xf8, 0x88, 0x17, 0x3e, + 0x8d, 0x18, 0xb3, 0x34, 0xc0, 0xc9, 0x7f, 0x09, 0x31, 0xc8, + 0xb1, 0xed, 0x5a, 0xe6, 0x18, 0x7e, 0x3d, 0x69, 0x43, 0x20, + 0xce, 0x34, 0x58, 0xfa, 0x0f, 0xe9, 0x3a, 0x5a, 0xeb, 0xd9, + 0x19, 0xea, 0xb9, 0xb4, 0x53, 0x9d, 0xe9, 0x69, 0xe0, 0x80, + 0x47, 0x85, 0x48, 0x2c, 0x49, 0xb7, 0x1a, 0x95, 0xf6, 0x10, + 0x63, 0x99, 0x80, 0x8e, 0xeb, 0x0e, 0x9f, 0x31, 0xde, 0xb6, + 0x6c, 0x05, 0x1b, 0x01, 0x72, 0xcd, 0x73, 0x24, 0xa7, 0xd3, + 0x53, 0x74, 0xd7, 0x5d, 0xac, 0xc0, 0xce, 0x6b, 0x1c, 0x6b, + 0x68, 0x9b, 0x03, 0x91, 0x52, 0x83, 0xfd, 0xd1, 0xec, 0x9a, + 0x31, 0x41, 0x26, 0xa2, 0x1d, 0xff, 0xec, 0x46, 0x13, 0x2c, + 0x75, 0xde, 0x45, 0xab, 0xa4, 0xf6, 0x43, 0x37, 0x84, 0xcc, + 0x1e, 0x80, 0xa3, 0xe2, 0x23, 0x28, 0x1c, 0x39, 0x4e, 0x25, + 0x7c, 0x42, 0xd5, 0xad, 0xa1, 0x7e, 0x1f, 0x14, 0x27, 0x3f, + 0x33, 0x95, 0x3b, 0x64, 0xf6, 0x5f, 0x34, 0x2e, 0xa7, 0xdb, + 0x03, 0x10, 0x20, 0xa8, 0xed, 0x9c, 0x45, 0xc1, 0x6a, 0xf1, + 0x61, 0x9b, 0x14, 0x1e, 0x58, 0xd8, 0xa7, 0x5e, 0x21, 0x3c, + 0x69, 0x41, 0x55, 0x7c, 0x4d, 0xac, 0xd9, 0xe1, 0x5c, 0x72, + 0x2a, 0xae, 0x05, 0x30, 0x22, 0x43, 0x26, 0xe5, 0x65, 0x78, + 0x24, 0x4b, 0xd2, 0x6f, 0x84, 0xc6, 0xbc, 0x34, 0x20, 0x82, + 0x23, 0xd7, 0xa2, 0x38, 0x75, 0xc5, 0x03, 0x16, 0x6a, 0x15, + 0xcc, 0xaa, 0xce, 0x42, 0x82, 0xec, 0x24, 0xbd, 0xb8, 0x6e, + 0x05, 0x70, 0xf6, 0x46, 0xc4, 0xb0, 0xf7, 0x6d, 0x53, 0xc3, + 0x6a, 0x25, 0x25, 0x29, 0x3c, 0xb3, 0x15, 0xcd, 0xd1, 0x1b, + 0x7c, 0xca, 0xbf, 0x01, 0x21, 0xb5, 0xc8, 0x4b, 0x26, 0x56, + 0x73, 0x17, 0x25, 0xc9, 0xb8, 0xfc, 0x77, 0x44, 0x67, 0xb5, + 0xb7, 0x2f, 0xed, 0xf9, 0x27, 0xc2, 0xf7, 0xca, 0x35, 0x74, + 0x9f, 0xa1, 0xcf, 0x3e, 0x2f, 0xd9, 0xc5, 0x59, 0x4f, 0x97, + 0x28, 0x82, 0x47, 0xbb, 0xc5, 0x60, 0x91, 0x5c, 0xe8, 0xcd, + 0x11, 0xf8, 0x4e, 0xee, 0xfe, 0xa8, 0x29, 0x16, 0xc3, 0x66, + 0xd5, 0xdd, 0xb6, 0x01, 0x50, 0xb7, 0x59, 0x94, 0x3c, 0x98, + 0x5c, 0xc6, 0x2a, 0x69, 0x8c, 0xc2, 0xe5, 0xd9, 0xdf, 0xe6, + 0x5b, 0x39, 0x81, 0x20, 0xaa, 0x02, 0x79, 0x74, 0x2b, 0xfd, + 0x08, 0x1f, 0xf5, 0x64, 0xf8, 0xbb, 0xe3, 0x43, 0xc9, 0x4c, + 0xd8, 0x74, 0xdb, 0x1a, 0x2c, 0x97, 0x12, 0x49, 0x85, 0xd1, + 0x0d, 0xeb, 0x4d, 0xe6, 0xf2, 0x8b, 0x45, 0xf5, 0x33, 0xd3, + 0x2d, 0x03, 0x96, 0x94, 0x95, 0x6c, 0x2a, 0xb6, 0xf5, 0x9c, + 0xba, 0xe7, 0x37, 0x83, 0x91, 0xbd, 0x2e, 0x7c, 0xd9, 0x30, + 0xa5, 0x68, 0x43, 0x51, 0xfe, 0x12, 0x62, 0x53, 0xa1, 0x19, + 0xb4, 0x0f, 0x2f, 0xe8, 0x5d, 0xed, 0xb5, 0xd5, 0x64, 0x0c, + 0x46, 0x68, 0x2a, 0x3f, 0xd3, 0x6f, 0x16, 0x61, 0x30, 0xfc, + 0x7a, 0xd2, 0x86, 0x40, 0x5f, 0x68, 0xb0, 0x37, 0x1e, 0x11, + 0x74, 0xb4, 0x15, 0x71, 0x31, 0x68, 0xfe, 0x0f, 0x96, 0xfd, + 0x78, 0x35, 0x08, 0x4d, 0x56, 0x7d, 0x06, 0xc2, 0xb7, 0x1f, + 0x32, 0x17, 0xb1, 0xab, 0xa6, 0xf9, 0x11, 0xd2, 0x03, 0xc3, + 0x8e, 0xc9, 0x90, 0x58, 0x92, 0xad, 0x33, 0x83, 0x35, 0x76, + 0xb6, 0x44, 0x36, 0x8f, 0xbb, 0xb9, 0xc6, 0xa5, 0xe2, 0x2e, + 0x30, 0xc3, 0x34, 0xe9, 0x2f, 0x20, 0xc6, 0xf1, 0xc3, 0xdf, + 0x15, 0x1c, 0xfd, 0x62, 0x7f, 0xaf, 0xd8, 0x0a, 0x35, 0x7d, + 0xab, 0xfd, 0xd6, 0x4c, 0xe4, 0x82, 0xad, 0x66, 0xb5, 0x0e, + 0x0d, 0xd9, 0x7a, 0x64, 0x36, 0x02, 0xe4, 0x59, 0xe6, 0x48, + 0x8d, 0x65, 0xa6, 0xe8, 0x6d, 0xba, 0x9b, 0x43, 0x5f, 0xd6, + 0x37, 0x96, 0x60, 0x84, 0xf6, 0xf5, 0xaa, 0x38, 0x1e, 0x92, + 0x25, 0xd6, 0xe9, 0x35, 0xfd, 0xb8, 0x38, 0xd6, 0xd0, 0xf5, + 0x06, 0xe1, 0xa4, 0xc5, 0x39, 0x61, 0x1b, 0xf7, 0x62, 0x82, + 0x4c, 0x87, 0x39, 0x42, 0x54, 0x28, 0x16, 0x5c, 0x83, 0x98, + 0x81, 0x1b, 0x53, 0x9b, 0x10, 0xf4, 0xee, 0xe9, 0x3a, 0x3d, + 0x1b, 0x8c, 0x26, 0x58, 0xea, 0x7f, 0x8a, 0x95, 0x8b, 0x2f, + 0x86, 0x6e, 0xcb, 0x5b, 0x3b, 0xa9, 0x9f, 0x51, 0x36, 0xe5, + 0xcd, 0x22, 0x32, 0xef, 0xc3, 0x43, 0xf4, 0x18, 0x69, 0x35, + 0x3c, 0xc3, 0x85, 0x07, 0x46, 0x50, 0x38, 0x72, 0x9c, 0x4a, + 0xf8, 0x84, 0x69, 0x99, 0x81, 0xfc, 0x3d, 0x57, 0x01, 0xda, + 0x56, 0xed, 0x1f, 0x2f, 0x24, 0x30, 0xb0, 0xe8, 0x1b, 0xef, + 0x23, 0x92, 0x3e, 0x28, 0x4e, 0x7e, 0x66, 0xe9, 0x76, 0xc8, + 0x2f, 0xbe, 0x68, 0x5c, 0x8d, 0x75, 0x06, 0x20, 0x3f, 0xbc, + 0xca, 0xa3, 0x76, 0x54, 0x51, 0x95, 0x97, 0xc4, 0x20, 0x30, + 0xff, 0x03, 0xa4, 0x4e, 0x40, 0x93, 0x19, 0xfb, 0x8a, 0x41, + 0xd4, 0x21, 0xc2, 0xf5, 0x28, 0x3c, 0xb0, 0x73, 0x8d, 0xbc, + 0x41, 0x07, 0x9d, 0x26, 0x9a, 0xfc, 0xf3, 0x7c, 0x7a, 0x8f, + 0x60, 0x50, 0xc2, 0x05, 0x2f, 0xd2, 0x42, 0x78, 0xd2, 0x82, + 0xaa, 0xf8, 0x9a, 0x9b, 0x71, 0x01, 0xb8, 0xe4, 0x54, 0x9f, + 0x0a, 0x60, 0x43, 0xec, 0x56, 0x5f, 0xba, 0x45, 0xbd, 0xc6, + 0xc9, 0x7b, 0xf0, 0x88, 0x26, 0xe9, 0xa8, 0x0e, 0x44, 0x86, + 0x4c, 0x09, 0xca, 0xf0, 0x48, 0x96, 0x67, 0xde, 0xcb, 0x4f, + 0xbb, 0x68, 0x40, 0xc7, 0x45, 0x12, 0xc8, 0xd4, 0xda, 0x4d, + 0x6f, 0xcb, 0xdf, 0xa4, 0x83, 0x23, 0xc9, 0x1e, 0xe2, 0xa9, + 0x46, 0x6d, 0x87, 0x70, 0xea, 0x49, 0x06, 0x2c, 0xd4, 0x2a, + 0x5b, 0x97, 0x5f, 0x84, 0xc7, 0x1b, 0x47, 0xf9, 0x03, 0xad, + 0xfa, 0xf4, 0x21, 0x71, 0x6c, 0x50, 0x13, 0xfb, 0x2d, 0xf2, + 0x65, 0x75, 0x48, 0xb9, 0xb3, 0xdc, 0x0a, 0xe0, 0x2f, 0x8c, + 0x4b, 0xa3, 0x2d, 0xda, 0xa6, 0x45, 0xd4, 0x4a, 0x49, 0x2d, + 0x37, 0x01, 0x1a, 0x5d, 0x08, 0xd1, 0xf3, 0xd9, 0x65, 0xb6, + 0xd4, 0x33, 0x76, 0x24, 0x4a, 0x52, 0x78, 0xa5, 0x2a, 0x59, + 0x61, 0x36, 0xf8, 0x57, 0xbd, 0x02, 0x42, 0xa9, 0x53, 0x96, + 0x4b, 0xc6, 0xfc, 0x78, 0x3a, 0xe4, 0x46, 0x6b, 0x40, 0x2d, + 0xf5, 0x6e, 0x30, 0xdf, 0xf1, 0xf8, 0x4c, 0xac, 0xe6, 0x2e, + 0x4a, 0x51, 0xb3, 0x3b, 0xee, 0x88, 0xce, 0xa9, 0xad, 0x5e, + 0x19, 0x31, 0x4d, 0x38, 0x62, 0xf3, 0x5a, 0xec, 0x94, 0x66, + 0x56, 0xf2, 0x86, 0xc5, 0xdf, 0x28, 0xbb, 0x5f, 0x4e, 0x47, + 0x2d, 0x57, 0x6a, 0xe8, 0xfd, 0x81, 0x5d, 0x7c, 0x5e, 0x71, + 0x49, 0xb2, 0x9e, 0xed, 0x4f, 0xd3, 0xa9, 0x8a, 0x7a, 0x55, + 0xda, 0xdc, 0xe5, 0x06, 0x16, 0x1d, 0x3b, 0xc4, 0x3c, 0x83, + 0x50, 0xc7, 0x8e, 0xb5, 0x49, 0xc0, 0xe1, 0xb8, 0x13, 0x59, + 0x22, 0x33, 0x9c, 0x1f, 0x3f, 0x93, 0x51, 0x53, 0x0a, 0x68, + 0x59, 0x7d, 0xc6, 0xe5, 0xab, 0x23, 0x6a, 0x5f, 0xee, 0x69, + 0x9d, 0xfd, 0x52, 0x2c, 0x45, 0xcc, 0x69, 0x79, 0xaf, 0x02, + 0xa0, 0xad, 0xb2, 0xeb, 0x78, 0xf3, 0xb8, 0x4f, 0x53, 0xb8, + 0xc1, 0x11, 0x79, 0xc4, 0x88, 0x5f, 0x18, 0xd7, 0xfa, 0x87, + 0x0a, 0x85, 0x1a, 0x21, 0x54, 0xd2, 0xdb, 0x47, 0x09, 0x71, + 0x7d, 0x0f, 0xb6, 0x72, 0xc1, 0x40, 0x97, 0x04, 0xf2, 0xe8, + 0x55, 0x46, 0x5f, 0x9a, 0x19, 0xcc, 0x5a, 0x52, 0x0e, 0x08, + 0x89, 0x2c, 0xe5, 0x72, 0x50, 0x86, 0x56, 0x39, 0x10, 0x3e, + 0x29, 0xc8, 0x33, 0xb5, 0x05, 0x86, 0x51, 0x98, 0x73, 0xe8, + 0x75, 0x34, 0x57, 0xad, 0x94, 0xe3, 0x39, 0x75, 0x14, 0xe8, + 0xbd, 0xfc, 0x19, 0xf4, 0x01, 0x9e, 0xd7, 0x5a, 0x58, 0xed, + 0x24, 0x92, 0xc9, 0x61, 0x1a, 0x15, 0x9a, 0x0f, 0x27, 0xd5, + 0x8a, 0x29, 0x66, 0x65, 0x59, 0x79, 0xa0, 0x4f, 0xd9, 0xdc, + 0x3d, 0x48, 0x22, 0x75, 0x6f, 0xb9, 0xf8, 0x5f, 0xc4, 0x0b, + 0x5a, 0x06, 0xef, 0xeb, 0xe9, 0xd8, 0x54, 0xaf, 0x29, 0xfb, + 0xb7, 0x0d, 0x6e, 0xc5, 0xe1, 0xb9, 0x5b, 0x92, 0x6b, 0x36, + 0xf9, 0x65, 0x73, 0xf2, 0x91, 0x81, 0xff, 0x61, 0x1c, 0xb3, + 0x43, 0xd7, 0x5c, 0xf8, 0x71, 0x60, 0x89, 0xd0, 0x86, 0xa2, + 0x3f, 0x24, 0xc4, 0xa6, 0x81, 0x32, 0xab, 0x1e, 0x5d, 0x6c, + 0xf5, 0xbd, 0x99, 0x6d, 0xa1, 0xff, 0x87, 0x5e, 0x8c, 0xca, + 0xf3, 0x44, 0x09, 0x70, 0x5e, 0x13, 0xba, 0x19, 0xa9, 0x69, + 0xc8, 0x18, 0x8c, 0xd0, 0x54, 0x7e, 0x65, 0xde, 0x2c, 0xc2, + 0x5f, 0x87, 0x3e, 0xc4, 0xb9, 0xd4, 0xef, 0x45, 0x34, 0xaa, + 0x1c, 0x12, 0x17, 0xa8, 0x8e, 0xac, 0x60, 0x3b, 0xf4, 0x67, + 0xcf, 0x80, 0xbe, 0xd0, 0xa3, 0x6e, 0x3c, 0x22, 0xe8, 0xab, + 0x2a, 0xe2, 0x61, 0xaf, 0x70, 0xba, 0xdf, 0x3d, 0x99, 0x8d, + 0x1b, 0x14, 0x74, 0x4e, 0x9a, 0xdd, 0x88, 0x8c, 0x62, 0xd0, + 0x3f, 0x1e, 0xef, 0x39, 0xf0, 0x6a, 0x10, 0x9a, 0xac, 0xfa, + 0x0c, 0x47, 0xad, 0x3e, 0x63, 0x44, 0xbb, 0xc3, 0xff, 0x84, + 0xd7, 0x37, 0xa8, 0xe0, 0xe4, 0x96, 0x7e, 0x31, 0x0f, 0x50, + 0x64, 0x2e, 0xa1, 0x95, 0x8f, 0x31, 0x22, 0x67, 0x06, 0x45, + 0xdf, 0x51, 0xe3, 0xb0, 0xe7, 0x99, 0x65, 0xba, 0x25, 0x48, + 0x9f, 0x8c, 0x05, 0x3a, 0xbe, 0x3f, 0x97, 0x3d, 0x91, 0xc6, + 0x45, 0xf7, 0x66, 0xc5, 0x6a, 0xec, 0xaf, 0x88, 0x6c, 0xdd, + 0xb5, 0xb1, 0x4f, 0x89, 0x07, 0x5c, 0x60, 0x45, 0x67, 0x51, + 0xee, 0x31, 0xbf, 0x35, 0x4b, 0x80, 0x0d, 0xcb, 0x07, 0xe5, + 0x75, 0x2a, 0xc2, 0x2b, 0x68, 0x11, 0x5e, 0x40, 0x4f, 0x21, + 0x45, 0x7d, 0x2a, 0x38, 0x39, 0xc4, 0xfe, 0x9d, 0x73, 0x14, + 0x69, 0x85, 0xda, 0x9d, 0x5f, 0x9c, 0x62, 0x20, 0x92, 0x42, + 0x71, 0xa8, 0x8c, 0xeb, 0xd1, 0x7a, 0x6a, 0xfa, 0x95, 0x39, + 0x6f, 0x98, 0x0b, 0xc7, 0x99, 0xcc, 0xa9, 0x1c, 0x1a, 0x71, + 0xf4, 0xc8, 0x6b, 0x6e, 0x11, 0xe4, 0x7f, 0x25, 0x2c, 0x9a, + 0x21, 0xb6, 0xe1, 0x70, 0x68, 0x07, 0x56, 0xa6, 0x6c, 0x04, + 0x0b, 0xb2, 0x0f, 0x90, 0xd9, 0xca, 0x8f, 0x13, 0xda, 0xb7, + 0xf5, 0x86, 0xbe, 0x6f, 0x6d, 0x90, 0x8f, 0x6f, 0x1f, 0x2d, + 0xfe, 0x97, 0x37, 0x69, 0x92, 0xdb, 0x87, 0xf0, 0x1c, 0x01, + 0x6e, 0xef, 0xc0, 0xcb, 0x2f, 0x29, 0x97, 0x70, 0x3c, 0xe7, + 0x4a, 0x6f, 0x11, 0x6a, 0x39, 0xb3, 0x6f, 0x7b, 0x44, 0x16, + 0x3f, 0x94, 0xb0, 0x2d, 0x84, 0x9d, 0x02, 0x03, 0x63, 0x1c, + 0x9b, 0xdd, 0x70, 0x6f, 0x63, 0x29, 0x0c, 0x01, 0x8b, 0x49, + 0x72, 0xc2, 0x36, 0x2d, 0xc4, 0xc7, 0x98, 0xcd, 0x71, 0xfb, + 0xe7, 0xf4, 0x1c, 0xbc, 0xac, 0x14, 0xca, 0xb8, 0x7e, 0x41, + 0xb6, 0xb1, 0x3a, 0xa3, 0x72, 0x84, 0xa8, 0x50, 0x2c, 0xb8, + 0xc5, 0xf3, 0xc1, 0x36, 0xa6, 0xf5, 0x20, 0x2b, 0x1f, 0x11, + 0x73, 0x10, 0x2c, 0x8d, 0x3c, 0x05, 0xe2, 0xae, 0x79, 0x4c, + 0xee, 0x99, 0x52, 0x5d, 0xbd, 0x7f, 0x74, 0x7a, 0x36, 0xdb, + 0x4c, 0xb0, 0x17, 0xfe, 0xd7, 0xe9, 0xd5, 0x5e, 0xcf, 0xdc, + 0x55, 0xb6, 0x75, 0xee, 0xb2, 0x06, 0x5c, 0x0d, 0x30, 0xa3, + 0x6f, 0x93, 0x9d, 0x32, 0xbd, 0xaa, 0xf7, 0xd8, 0x76, 0x91, + 0xfd, 0xa2, 0x6c, 0x09, 0x59, 0x44, 0x64, 0x1d, 0x45, 0x86, + 0x2b, 0x30, 0xd2, 0x6a, 0x77, 0x05, 0x79, 0x7f, 0x7c, 0xb4, + 0x7e, 0x19, 0xdc, 0x67, 0x0d, 0xea, 0x59, 0x46, 0x70, 0x04, + 0x78, 0x45, 0xc9, 0x0e, 0x8c, 0xa0, 0x70, 0xe4, 0xfb, 0x94, + 0x33, 0xcb, 0xd2, 0xf1, 0xc1, 0x3b, 0x79, 0xd1, 0x4d, 0xd3, + 0x9c, 0x1d, 0x57, 0xb9, 0x43, 0xee, 0x7b, 0xa7, 0xa0, 0x87, + 0x63, 0x55, 0x7a, 0xae, 0x02, 0x77, 0xac, 0x19, 0x3e, 0x5e, + 0x48, 0x60, 0xa3, 0x13, 0x36, 0x1d, 0x46, 0xe7, 0x7b, 0x3a, + 0x86, 0xaa, 0xbc, 0xa4, 0x19, 0x03, 0xf0, 0x1a, 0xeb, 0x7f, + 0x44, 0x6b, 0xe4, 0x89, 0x7c, 0x50, 0x9c, 0xfc, 0xcc, 0x11, + 0xec, 0x53, 0x5e, 0xbf, 0xd0, 0xb8, 0xd9, 0xea, 0x0c, 0x40, + 0x7d, 0xc4, 0x18, 0x21, 0xdc, 0xac, 0xcb, 0x0e, 0xe6, 0xc5, + 0x98, 0xd4, 0xab, 0x9c, 0xae, 0x2e, 0x7e, 0xbb, 0x57, 0x85, + 0xec, 0xa8, 0xa2, 0xe9, 0xed, 0x4b, 0x40, 0x60, 0x3d, 0x06, + 0x8b, 0x9c, 0x7f, 0x2f, 0xd3, 0x58, 0xfc, 0x15, 0x85, 0xb4, + 0x55, 0x31, 0x08, 0x0c, 0x4f, 0x70, 0x29, 0xf2, 0x80, 0xe5, + 0x32, 0x35, 0xd7, 0x82, 0x6b, 0x42, 0x47, 0x29, 0x50, 0x78, + 0xa3, 0xe6, 0xd9, 0xbb, 0x81, 0x71, 0xb6, 0xe8, 0xc7, 0x3f, + 0x4c, 0x1f, 0xff, 0x53, 0x18, 0x14, 0xd1, 0x90, 0x7b, 0xd5, + 0x82, 0x0e, 0xf9, 0x4c, 0xf7, 0x3b, 0x25, 0xf8, 0xf4, 0xdd, + 0xc0, 0xa0, 0x47, 0x0a, 0x5e, 0x67, 0x83, 0x9a, 0x7d, 0x91, + 0xe7, 0x86, 0x02, 0xa5, 0x4c, 0xa7, 0x88, 0xcc, 0x35, 0x7c, + 0xfc, 0x09, 0x84, 0xf0, 0x67, 0xc7, 0x97, 0x33, 0xf7, 0xf5, + 0xe2, 0x02, 0xb3, 0x0b, 0xa8, 0xfd, 0x14, 0xc0, 0x85, 0x64, + 0xe3, 0x1a, 0x87, 0x8e, 0xd0, 0xa8, 0x5a, 0x78, 0xfb, 0x67, + 0xda, 0x8b, 0xb6, 0xae, 0x86, 0x1b, 0xac, 0xbe, 0xb7, 0x8a, + 0xb9, 0x4f, 0x51, 0xf6, 0x23, 0xd3, 0x4c, 0x11, 0x93, 0x1c, + 0x87, 0x8f, 0x28, 0x63, 0xa7, 0x37, 0x9e, 0x12, 0xe9, 0x8c, + 0x6b, 0xbf, 0x3e, 0x67, 0x31, 0x72, 0x88, 0xcf, 0x98, 0x12, + 0x57, 0x23, 0x90, 0xef, 0xce, 0x7f, 0x55, 0x9e, 0xb5, 0xd0, + 0x80, 0x4d, 0x89, 0x5b, 0x1c, 0xcf, 0x47, 0x9e, 0xb7, 0xb2, + 0x76, 0x05, 0x1d, 0xf2, 0xc7, 0xa6, 0x22, 0x23, 0x8a, 0x24, + 0x53, 0x6b, 0x77, 0x9a, 0xde, 0x55, 0x7d, 0x8b, 0xc5, 0x46, + 0x51, 0x3c, 0x07, 0x91, 0x8b, 0xb0, 0xd7, 0xb6, 0x67, 0x27, + 0xf9, 0x08, 0xc5, 0xf1, 0x8d, 0x2a, 0x23, 0x4a, 0xa5, 0xff, + 0x8c, 0xda, 0xcd, 0xe0, 0x17, 0x92, 0x0c, 0x58, 0x6b, 0x54, + 0xb6, 0xed, 0xbe, 0xcb, 0x4d, 0x36, 0x8d, 0x4e, 0x49, 0x3d, + 0x07, 0x2f, 0x2b, 0x05, 0xd3, 0x2e, 0xfe, 0x81, 0xcc, 0xbd, + 0xef, 0x58, 0x8e, 0x31, 0x06, 0x99, 0x37, 0x2b, 0x42, 0xe2, + 0xd8, 0xa0, 0x26, 0x35, 0x5a, 0x27, 0xca, 0xea, 0x8f, 0xa5, + 0x82, 0x44, 0x27, 0x96, 0x65, 0xbf, 0x60, 0xda, 0x6e, 0x59, + 0x28, 0x51, 0x68, 0x84, 0x90, 0xb1, 0xa5, 0x7b, 0x14, 0x03, + 0x5e, 0xdb, 0x96, 0x85, 0x5a, 0x77, 0x8f, 0x8a, 0x6b, 0x94, + 0x91, 0x25, 0x21, 0xa6, 0x04, 0xbe, 0x79, 0x86, 0x2e, 0xff, + 0x12, 0x1b, 0xfd, 0xfc, 0xc9, 0xfa, 0x92, 0x5a, 0x6e, 0x02, + 0x34, 0xba, 0x10, 0x61, 0x25, 0x71, 0xca, 0xaf, 0x6b, 0x66, + 0xec, 0x48, 0x93, 0xce, 0xea, 0xdf, 0x24, 0x07, 0x37, 0x3c, + 0x9d, 0x0b, 0x82, 0xc3, 0x19, 0x10, 0x4e, 0x26, 0x94, 0xa4, + 0xf0, 0x89, 0x54, 0xb2, 0xc2, 0x6c, 0x33, 0xae, 0xb9, 0x04, + 0x84, 0x91, 0xa6, 0xef, 0x95, 0x30, 0x74, 0x54, 0x44, 0x0f, + 0xe5, 0x31, 0x8b, 0xd4, 0xf1, 0x68, 0xf6, 0xe7, 0x04, 0x81, + 0x96, 0x4f, 0x3b, 0xf0, 0x74, 0x0b, 0x8c, 0xd6, 0x80, 0x5a, + 0x29, 0xdc, 0x60, 0x7d, 0x21, 0x33, 0x97, 0xdb, 0xbf, 0x2d, + 0x64, 0xb6, 0xab, 0x8b, 0x38, 0x20, 0x61, 0xb0, 0x12, 0x0b, + 0x83, 0x5d, 0x98, 0x9b, 0x0f, 0x5c, 0x94, 0xa2, 0xa5, 0x76, + 0x1f, 0xd3, 0x5f, 0x91, 0x99, 0xbc, 0x32, 0x62, 0x99, 0x0f, + 0x8b, 0x81, 0x84, 0x1f, 0x82, 0x2b, 0xa7, 0xa9, 0x17, 0xfd, + 0xeb, 0xca, 0x90, 0x0c, 0x9a, 0x70, 0xc4, 0x25, 0xb4, 0x1b, + 0xeb, 0xcc, 0xac, 0x27, 0xcf, 0x49, 0x7d, 0x50, 0xb5, 0xbe, + 0x9b, 0xe4, 0x40, 0xf8, 0xa4, 0xa6, 0xcc, 0x91, 0x14, 0x5d, + 0x87, 0x25, 0x0f, 0x26, 0x17, 0xd0, 0x9c, 0x8e, 0x5a, 0xae, + 0xd4, 0x13, 0x39, 0xc1, 0xba, 0xf8, 0xbc, 0xe2, 0x92, 0xa7, + 0xff, 0x19, 0x9d, 0x1a, 0xde, 0x73, 0xc4, 0xae, 0x1e, 0x9c, + 0x02, 0x82, 0xf4, 0x8e, 0xe0, 0xd1, 0x5d, 0x77, 0x9e, 0x65, + 0x91, 0xd7, 0xf4, 0xaa, 0x77, 0x7b, 0x09, 0x0c, 0x2c, 0x3a, + 0x76, 0x4b, 0x78, 0xc5, 0x9f, 0xf1, 0x15, 0x0a, 0xe4, 0x17, + 0x50, 0x26, 0xb1, 0x76, 0x64, 0x56, 0x04, 0x3d, 0xda, 0xab, + 0xa0, 0x4d, 0xdf, 0xa9, 0x92, 0x43, 0x01, 0xb3, 0x26, 0xb2, + 0x44, 0x66, 0xfb, 0x3e, 0x7e, 0xe5, 0xa1, 0xd9, 0x5b, 0x74, + 0x82, 0xfe, 0x26, 0xee, 0x9e, 0xc8, 0x0c, 0x0a, 0x89, 0x48, + 0xdc, 0x8b, 0xa2, 0xa6, 0x14, 0xd0, 0xb2, 0xfa, 0x4f, 0x09, + 0x95, 0x46, 0xd4, 0xbe, 0x1f, 0xd2, 0xf9, 0x39, 0xa3, 0x32, + 0x90, 0x0d, 0xa2, 0x47, 0x68, 0x54, 0x2d, 0x3c, 0x9c, 0xd2, + 0x6d, 0xa4, 0x5b, 0x57, 0xa4, 0x58, 0x8a, 0x5b, 0xd2, 0xf2, + 0x9d, 0x04, 0x83, 0x99, 0xa7, 0x15, 0xf0, 0x25, 0xb3, 0x9e, + 0xa5, 0xcc, 0x0e, 0x86, 0xc2, 0x4f, 0xba, 0x59, 0x3b, 0xe3, + 0xef, 0x79, 0x82, 0x53, 0x11, 0xf0, 0xa6, 0xb3, 0x41, 0x22, + 0xf2, 0x4b, 0xd3, 0xbe, 0x30, 0x6d, 0x37, 0xcd, 0x14, 0xc9, + 0x34, 0x42, 0xa7, 0x27, 0xc5, 0xff, 0xe2, 0xf6, 0xf4, 0xe3, + 0x88, 0x17, 0x7f, 0xa1, 0x66, 0xbf, 0x96, 0x2c, 0xa8, 0x67, + 0x75, 0x8e, 0x12, 0xe2, 0xfa, 0x1e, 0xaf, 0xe4, 0x41, 0x80, + 0xed, 0x08, 0x27, 0x13, 0xa9, 0xf3, 0xf1, 0x53, 0x02, 0x5f, + 0xdd, 0x43, 0x17, 0x9e, 0x09, 0xec, 0x9f, 0x7e, 0x85, 0x7d, + 0xaa, 0x8c, 0xbe, 0xf7, 0x32, 0x5b, 0xb4, 0xa4, 0x1c, 0x10, + 0xd1, 0x58, 0x09, 0xe4, 0xa0, 0xcf, 0xab, 0x18, 0x3a, 0x2a, + 0x22, 0xe6, 0x93, 0xf9, 0xa4, 0x6a, 0x99, 0x34, 0x7b, 0x92, + 0x02, 0xa1, 0xac, 0x72, 0x20, 0x7c, 0x52, 0x53, 0x66, 0xa9, + 0x0a, 0xcf, 0xa2, 0xf3, 0xe6, 0x13, 0xea, 0x68, 0xad, 0xe6, + 0xa4, 0xa1, 0x42, 0xee, 0x41, 0xf4, 0xb2, 0xb5, 0xea, 0x9f, + 0x94, 0x65, 0x48, 0x06, 0xae, 0x99, 0xeb, 0x05, 0x72, 0xea, + 0x28, 0x13, 0xb9, 0x3b, 0x32, 0x2b, 0x02, 0xff, 0x6d, 0xb4, + 0xaf, 0x0d, 0x6f, 0xd8, 0x62, 0x57, 0x0f, 0x4e, 0x01, 0x41, + 0x7a, 0x47, 0x70, 0x89, 0xcf, 0xda, 0xb0, 0x19, 0x48, 0xe7, + 0x51, 0xc2, 0x34, 0x2a, 0xf7, 0x1e, 0x4e, 0x69, 0xd7, 0x52, + 0xcc, 0xca, 0xb1, 0x8d, 0xcc, 0x3a, 0x41, 0x7f, 0x13, 0x77, + 0x4f, 0x64, 0x06, 0x05, 0xa5, 0x24, 0x6e, 0xa4, 0xb2, 0xf2, + 0x83, 0x9e, 0x71, 0x7b, 0x7a, 0x90, 0x44, 0xea, 0xde, 0xb1, + 0x33, 0xbe, 0x4b, 0x16, 0xb3, 0x66, 0x07, 0x43, 0x61, 0xc6, + 0x5d, 0xcd, 0xfc, 0x90, 0x96, 0xdd, 0x41, 0xc8, 0xe9, 0x78, + 0xb4, 0x0c, 0x1d, 0x15, 0x11, 0x73, 0xa8, 0x9d, 0x52, 0x35, + 0xad, 0x1a, 0xdc, 0x49, 0x01, 0xb1, 0xb5, 0x98, 0x99, 0xc8, + 0x01, 0xce, 0x8f, 0xc0, 0xea, 0x4f, 0xe5, 0x76, 0xae, 0x3f, + 0xa3, 0xdf, 0xb6, 0xe7, 0xd6, 0x6c, 0x31, 0xca, 0xe6, 0x27, + 0xe1, 0xc1, 0x3d, 0xc2, 0x38, 0xa5, 0x86, 0x6d, 0xb7, 0x73, + 0x52, 0xb1, 0x21, 0x77, 0xc1, 0x7a, 0x59, 0xbb, 0x75, 0xae, + 0x4a, 0xd3, 0x24, 0x03, 0xb8, 0x33, 0xe2, 0xc0, 0xd1, 0x63, + 0xcf, 0x87, 0x7e, 0x48, 0x4b, 0x8f, 0xc1, 0x64, 0x95, 0x3c, + 0xb9, 0xa7, 0x66, 0x1d, 0xc1, 0xde, 0xe8, 0xda, 0xc6, 0x32, + 0x03, 0xe3, 0xb3, 0x12, 0x37, 0x52, 0xba, 0xd8, 0x29, 0xb9, + 0xf1, 0xda, 0x81, 0x3d, 0xcd, 0xbc, 0xdb, 0x57, 0x25, 0x88, + 0x12, 0xe0, 0xbb, 0x4c, 0xad, 0x64, 0xe1, 0x67, 0xa6, 0x60, + 0x75, 0xc6, 0x93, 0x3b, 0x57, 0xfe, 0xb0, 0x8e, 0xbc, 0x26, + 0xb7, 0x32, 0x91, 0xd2, 0x53, 0x30, 0xdb, 0x63, 0xa8, 0xfc, + 0xca, 0x7f, 0x58, 0x47, 0xbd, 0xb2, 0x33, 0xef, 0x81, 0x6f, + 0x74, 0x6d, 0x63, 0x19, 0xe0, 0x90, 0xb8, 0x09, 0xfa, 0x29, + 0xbe, 0xcd, 0x7c, 0x4b, 0xb1, 0x6b, 0x1d, 0x8a, 0x68, 0x97, + 0x38, 0x24, 0x2e, 0x93, 0xdf, 0x9b, 0xbf, 0x59, 0xf8, 0x96, + 0xa1, 0xd6, 0x3a, 0xd7, 0xd0, 0xed, 0x70, 0x48, 0x5c, 0xe5, + 0x7d, 0xf5, 0xc0, 0x76, 0x2b, 0xce, 0x5d, 0xc3, 0xbf, 0x63, + 0x85, 0xdc, 0x78, 0x44, 0x13, 0x95, 0x54, 0x07, 0xc1, 0xe2, + 0xaf, 0x13, 0x4d, 0x7e, 0x98, 0x3e, 0x3d, 0xa6, 0x30, 0x28, + 0x61, 0xe3, 0xf6, 0x69, 0xc2, 0x9d, 0xe0, 0xb7, 0x7d, 0x7a, + 0xf1, 0xd9, 0x36, 0x28, 0xe8, 0x9c, 0xf7, 0x79, 0xd3, 0xdb, + 0xc3, 0x09, 0x64, 0x6a, 0x6d, 0xc7, 0xd6, 0x84, 0x8e, 0x52, + 0xa0, 0xf0, 0x85, 0x0f, 0x71, 0xb5, 0xc4, 0x63, 0x7e, 0x3c, + 0x1d, 0x72, 0x23, 0xd4, 0x20, 0xf7, 0x9b, 0x37, 0x18, 0x8e, + 0x99, 0x7c, 0xc5, 0xf7, 0xfa, 0xe1, 0x0d, 0xcf, 0x04, 0x89, + 0x98, 0x8d, 0xd3, 0x5b, 0x6a, 0xf8, 0x3b, 0x12, 0xc6, 0x88, + 0xb5, 0x45, 0x3d, 0xcb, 0x6d, 0x6e, 0x93, 0x03, 0x0b, 0xef, + 0xfc, 0x62, 0x1e, 0xa0, 0xc7, 0x1c, 0x31, 0x98, 0x2d, 0x76, + 0x4a, 0x33, 0x2b, 0x79, 0x43, 0x83, 0x8e, 0x14, 0xbc, 0xce, + 0xc8, 0x5c, 0x81, 0xe9, 0xdd, 0x62, 0x44, 0xce, 0x0c, 0x8a, + 0x7d, 0xa2, 0x05, 0xa3, 0x0d, 0xf1, 0xc9, 0xc8, 0x05, 0x34, + 0xcd, 0xdf, 0x63, 0x93, 0xb4, 0xf0, 0x35, 0xce, 0x77, 0xd5, + 0xaf, 0x9f, 0xca, 0xb7, 0x4a, 0x90, 0xfd, 0xdb, 0x0a, 0x74, + 0xbf, 0x7e, 0xed, 0x7a, 0xe1, 0x4f, 0x8a, 0x2d, 0xcb, 0x23, + 0xce, 0x4d, 0xed, 0x66, 0x2d, 0x29, 0x07, 0x04, 0xa5, 0x16, + 0x93, 0x39, 0x28, 0x43, 0xcc, 0x49, 0xd4, 0x1b, 0x9d, 0xd3, + 0xd8, 0x79, 0xa9, 0xa1, 0x9e, 0xd1, 0x0e, 0xb8, 0xc0, 0x8a, + 0xcd, 0xdd, 0x50, 0xc6, 0x8d, 0x6e, 0xff, 0x24, 0x11, 0xdb, + 0xd6, 0xbd, 0x7c, 0xce, 0x62, 0xe4, 0xce, 0xa2, 0x1f, 0x62, + 0xbd, 0x6a, 0x96, 0xc3, 0x1a, 0x55, 0x0e, 0x09, 0xea, 0x54, + 0x47, 0x56, 0xcf, 0x36, 0x9b, 0xbf, 0xad, 0xd7, 0xb1, 0x9e, + 0xa2, 0x2f, 0x46, 0x65, 0x98, 0x22, 0xe5, 0x38, 0xd0, 0x22, + 0xbc, 0x80, 0x9e, 0x42, 0x8a, 0xfa, 0x54, 0x70, 0x72, 0x4b, + 0x3f, 0xf9, 0xe6, 0x28, 0xd1, 0xb6, 0x38, 0x5d, 0x8e, 0xff, + 0xad, 0xa7, 0xec, 0x0a, 0x3a, 0x27, 0x4d, 0x8f, 0x44, 0x46, + 0xd2, 0xc9, 0x77, 0xf9, 0xbe, 0xfb, 0xc4, 0x40, 0xe7, 0x84, + 0xe2, 0x93, 0xdb, 0x15, 0x61, 0xf4, 0xd3, 0x5d, 0xf3, 0x24, + 0xae, 0x46, 0xe3, 0x1d, 0x5f, 0xfe, 0xaa, 0xff, 0xa9, 0x63, + 0xc3, 0x9a, 0xd4, 0x37, 0xe9, 0x72, 0xde, 0xf3, 0x16, 0x4d, + 0xf1, 0x5b, 0x91, 0x38, 0x34, 0xe2, 0x2b, 0x53, 0xd5, 0xa3, + 0x6d, 0xaf, 0xce, 0x4e, 0x31, 0x10, 0x49, 0x21, 0xd9, 0x54, + 0x46, 0x94, 0x89, 0x3d, 0xd6, 0xdc, 0x22, 0x0b, 0xfe, 0x4a, + 0x58, 0xf7, 0x42, 0xaf, 0x01, 0xe0, 0xd0, 0x0e, 0xac, 0x8f, + 0xd7, 0x48, 0xa6, 0xd6, 0xee, 0xf7, 0x7f, 0xaa, 0xfa, 0xd5, + 0x49, 0x8c, 0xa2, 0x78, 0x0e, 0xe1, 0xd8, 0x08, 0x16, 0xa7, + 0x1e, 0xe3, 0x71, 0x57, 0xdd, 0x26, 0x77, 0xad, 0x29, 0xcf, + 0xbf, 0xde, 0xd9, 0x9c, 0x92, 0x7a, 0x0e, 0x5e, 0x56, 0x0a, + 0x65, 0x5c, 0x3f, 0xc1, 0x5b, 0xb9, 0x1d, 0xb0, 0xda, 0xe3, + 0xdd, 0xde, 0x3e, 0x5a, 0x3f, 0xed, 0x6e, 0xd2, 0xe7, 0x75, + 0xcd, 0x23, 0x38, 0x02, 0xdb, 0x77, 0x59, 0x03, 0x2e, 0xe7, + 0x18, 0xb0, 0xd6, 0xa8, 0xaf, 0x19, 0xbf, 0x55, 0x9a, 0x6c, + 0xdc, 0x1d, 0x43, 0x55, 0x5e, 0x52, 0xed, 0xe0, 0x78, 0x0d, + 0x94, 0xde, 0x22, 0xd4, 0x72, 0xa5, 0xdd, 0x89, 0xc7, 0x88, + 0x4e, 0xef, 0xca, 0xbd, 0xc0, 0x77, 0xdc, 0xb2, 0x50, 0xa2, + 0xd0, 0xcb, 0xde, 0xf6, 0x88, 0x2c, 0x7e, 0xeb, 0xa3, 0x5a, + 0xcb, 0xf9, 0x04, 0x06, 0xc6, 0x38, 0xf5, 0x79, 0xdf, 0x62, + 0x0c, 0xf1, 0x6e, 0x56, 0x84, 0x07, 0x73, 0x83, 0x4c, 0x6a, + 0xb4, 0x4e, 0x57, 0x17, 0xe0, 0xde, 0xc6, 0x52, 0x18, 0x02, + 0xd5, 0x92, 0xe4, 0x47, 0x6c, 0x5a, 0x4b, 0x4d, 0xf3, 0x59, + 0xe1, 0x4a, 0x42, 0x8f, 0x08, 0xbf, 0xf2, 0xcf, 0x5c, 0x3d, + 0x24, 0x36, 0x39, 0x3b, 0x51, 0x37, 0xe2, 0x35, 0x0d, 0x2b, + 0x38, 0xbb, 0x9b, 0x28, 0x57, 0xb3, 0xfc, 0x82, 0xaf, 0xa1, + 0x74, 0x85, 0xe3, 0xa1, 0x89, 0xf6, 0x28, 0x06, 0xbc, 0x75, + 0xef, 0xc9, 0xb4, 0xee, 0xdd, 0xd7, 0xd6, 0xeb, 0xe4, 0xcb, + 0x93, 0xa0, 0x58, 0xb3, 0x49, 0x25, 0x41, 0x6c, 0x8f, 0x29, + 0x40, 0x56, 0x3e, 0x22, 0xe5, 0x5f, 0x17, 0x7d, 0x48, 0x0e, + 0x6e, 0x78, 0xf9, 0x16, 0xc7, 0x45, 0x32, 0x20, 0x9c, 0x4c, + 0xe6, 0x20, 0x58, 0xd9, 0x78, 0x0a, 0x07, 0x9f, 0xf2, 0x98, + 0x1f, 0xf1, 0xa4, 0xba, 0xb9, 0xfe, 0xe7, 0xb4, 0xdc, 0x04, + 0x68, 0xb7, 0x20, 0xc2, 0x4a, 0xe2, 0x57, 0x9d, 0xd6, 0xcc, + 0x1b, 0x90, 0xe8, 0xf4, 0x6c, 0x75, 0x98, 0xa3, 0x2e, 0x3f, + 0x6d, 0x11, 0x69, 0xbc, 0x5d, 0x7b, 0xaa, 0xaf, 0xe9, 0x60, + 0xe8, 0xa8, 0x88, 0x1e, 0x09, 0x62, 0xd5, 0x6b, 0x21, 0xd0, + 0x2f, 0x0d, 0x08, 0xc1, 0xea, 0x1f, 0xa7, 0x0c, 0xb8, 0x1a, + 0x60, 0x85, 0xde, 0xe5, 0xf9, 0x64, 0xb9, 0x97, 0x2d, 0x73, + 0xeb, 0x8b, 0x23, 0xd1, 0xa8, 0xa7, 0x47, 0xd8, 0x66, 0x9f, + 0xb1, 0x08, 0xcb, 0xe1, 0x8f, 0x1d, 0xec, 0xe1, 0x39, 0x87, + 0xd8, 0x12, 0xb2, 0x88, 0xc8, 0x3a, 0x8a, 0xcf, 0x56, 0x60, + 0x67, 0xd4, 0xed, 0x75, 0xbd, 0x5a, 0xc8, 0xaf, 0x95, 0xd5, + 0x70, 0x40, 0xc2, 0xa3, 0x24, 0x16, 0xc5, 0xba, 0xee, 0x0a, + 0xf2, 0xfe, 0xf8, 0xab, 0xfc, 0x32, 0x7b, 0xce, 0x1a, 0x17, + 0xb2, 0x8c, 0xe0, 0x08, 0xef, 0x9e, 0x76, 0x23, 0xe8, 0x16, + 0xdb, 0x6f, 0xc3, 0xb4, 0x52, 0x7b, 0xc0, 0xfa, 0x42, 0x66, + 0xf0, 0x8a, 0x51, 0x1c, 0xdb, 0x83, 0xe0, 0x0b, 0x35, 0xeb, + 0x66, 0x55, 0x67, 0x21, 0x41, 0x76, 0xf1, 0x1e, 0xd5, 0xc1, + 0xcb, 0x3e, 0xc7, 0x56, 0x8d, 0x91, 0x2e, 0x39, 0x15, 0x57, + 0xe3, 0x18, 0xf2, 0x61, 0x9a, 0x65, 0xfb, 0x3a, 0xae, 0xb1, + 0x86, 0x1f, 0xf6, 0x8d, 0x83, 0xcd, 0xc6, 0xaa, 0xf3, 0xf5, + 0x1e, 0xb8, 0xeb, 0x87, 0x89, 0xec, 0x3e, 0x65, 0xbe, 0xe1, + 0xf1, 0xbb, 0x64, 0xc4, 0xf4, 0x9f, 0x04, 0xee, 0x9b, 0x32, + 0x7c, 0xbc, 0x90, 0xc0, 0x85, 0x26, 0x6c, 0x3a, 0x8c, 0x0d, + 0xf5, 0x0b, 0x80, 0x33, 0x8b, 0x8f, 0x5b, 0xe1, 0x28, 0xba, + 0xcd, 0x4a, 0x1e, 0x4c, 0x2e, 0x63, 0xf6, 0x74, 0xcf, 0x97, + 0xbb, 0x8b, 0x32, 0x06, 0x23, 0x34, 0x15, 0xfe, 0x88, 0xd6, + 0x0b, 0xd1, 0xf7, 0xe0, 0x4b, 0x4a, 0xab, 0x36, 0x15, 0x5b, + 0x9b, 0x4e, 0x5d, 0x92, 0xfa, 0xa0, 0xa9, 0xbf, 0xf8, 0xa0, + 0xfb, 0x3b, 0x5b, 0x22, 0x1b, 0xa6, 0xbc, 0xbd, 0x63, 0xb3, + 0x71, 0x17, 0x18, 0x80, 0xf9, 0x34, 0x7f, 0xe6, 0x4b, 0x9f, + 0x3c, 0xfb, 0x04, 0xc7, 0x2b, 0xdf, 0x03, 0x61, 0xba, 0xee, + 0xfa, 0x4b, 0x30, 0x42, 0x7b, 0x9b, 0x55, 0x1c, 0x0f, 0x49, + 0xf3, 0x6b, 0x95, 0xfb, 0x9f, 0x5c, 0xfb, 0xdf, 0xb4, 0x9f, + 0x6b, 0x26, 0x72, 0x41, 0xb7, 0x33, 0xbb, 0x07, 0xe7, 0x8d, + 0x3d, 0x32, 0xfc, 0xb5, 0xae, 0xc9, 0x1b, 0x93, 0x87, 0x11, + 0x19, 0x96, 0x80, 0xc0, 0x7a, 0x0c, 0xd5, 0xfb, 0xfd, 0x21, + 0x2a, 0x14, 0x0b, 0x2e, 0xa0, 0x4c, 0xa1, 0xec, 0xc8, 0xac, + 0x08, 0x7a, 0x77, 0x95, 0xfe, 0x5e, 0x65, 0xb0, 0x3b, 0x2a, + 0xc9, 0xab, 0xaa, 0x62, 0x10, 0x18, 0x9e, 0xe0, 0x52, 0x27, + 0xff, 0xca, 0xe1, 0x6d, 0x2b, 0x97, 0xee, 0xf6, 0x12, 0x18, + 0x58, 0x74, 0xec, 0x96, 0xf0, 0x49, + }, + { + /* 1 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xa5, 0x64, 0x0d, + 0x89, 0xa2, 0x7f, 0x4b, 0x6e, 0x16, 0xc3, 0x4c, 0xe8, 0xe3, + 0xd0, 0x4d, 0xeb, 0x89, 0xc8, 0x1a, 0xd1, 0x87, 0xfe, 0x96, + 0xdc, 0x2c, 0x45, 0x98, 0x13, 0x05, 0x63, 0x9a, 0x7f, 0x2c, + 0xac, 0x17, 0x58, 0x25, 0x81, 0xdd, 0xb2, 0x3a, 0x86, 0xd4, + 0xfb, 0xe6, 0xb3, 0xd7, 0x15, 0xd1, 0x53, 0x34, 0x61, 0xcd, + 0x3f, 0xef, 0x7b, 0x58, 0x8a, 0xf3, 0x26, 0x0a, 0xc6, 0xf7, + 0x81, 0x74, 0x37, 0x39, 0xe8, 0x6f, 0x40, 0xa4, 0x15, 0x4e, + 0x49, 0xbf, 0xce, 0xe9, 0x16, 0xba, 0xfe, 0x58, 0x9b, 0x2e, + 0xb0, 0x4a, 0xc1, 0x79, 0xa7, 0x74, 0xcf, 0x6b, 0x35, 0x0f, + 0xa5, 0x6d, 0x6a, 0xfd, 0xff, 0x23, 0x39, 0xe8, 0xbe, 0x32, + 0xc9, 0x62, 0x0c, 0x27, 0xdd, 0xec, 0x75, 0x20, 0x2a, 0x61, + 0xa6, 0x68, 0xc2, 0x59, 0x7e, 0x1d, 0xf6, 0xb0, 0xd7, 0x25, + 0x4c, 0x14, 0x4f, 0x2d, 0xbe, 0xc4, 0xc2, 0x65, 0x4b, 0xfb, + 0x01, 0x56, 0x98, 0xa6, 0x14, 0x69, 0xa4, 0xf7, 0x9f, 0x60, + 0xc1, 0xe8, 0x6e, 0x72, 0x13, 0xde, 0x80, 0x8b, 0x2a, 0x9c, + 0x92, 0xbd, 0x5f, 0x11, 0x2c, 0xb7, 0x55, 0x4d, 0x0a, 0x7f, + 0x9a, 0x7c, 0xff, 0xc0, 0x44, 0x8a, 0x51, 0xf1, 0xb7, 0xf2, + 0xfc, 0xfa, 0x3f, 0xb0, 0xf5, 0x5c, 0xa3, 0x94, 0x41, 0xf2, + 0x8d, 0xe8, 0x5d, 0xd6, 0x6a, 0x1e, 0x89, 0xda, 0xab, 0x15, + 0x91, 0x51, 0x2a, 0x36, 0x3e, 0xb9, 0xe3, 0xfe, 0x9e, 0x9a, + 0x82, 0xfd, 0x59, 0x97, 0xd4, 0x39, 0x3d, 0x46, 0x72, 0x13, + 0xbf, 0x64, 0x51, 0xc4, 0x18, 0x4e, 0x79, 0x1b, 0xea, 0x40, + 0x40, 0x9c, 0x59, 0x4b, 0xfb, 0xb1, 0xc0, 0x2f, 0x3f, 0xd2, + 0xdb, 0x02, 0x91, 0xf8, 0x3a, 0x0d, 0x54, 0xc2, 0x8f, 0xd0, + 0x47, 0xb2, 0xfc, 0x3a, 0x2f, 0xa3, 0x6d, 0x4a, 0x98, 0x28, + 0x9e, 0x5a, 0xc0, 0x67, 0xeb, 0xdd, 0xce, 0x10, 0x83, 0x71, + 0x41, 0xb5, 0xae, 0x06, 0x70, 0xcb, 0x4e, 0x17, 0xbf, 0x4b, + 0x47, 0xca, 0x96, 0x35, 0x02, 0xac, 0xf3, 0x8f, 0x28, 0xd2, + 0x8b, 0x2d, 0xfd, 0xc0, 0x2b, 0xee, 0x23, 0xc7, 0x1f, 0x97, + 0x7d, 0xe7, 0x9d, 0x99, 0xeb, 0x9e, 0x63, 0xce, 0x2d, 0x8d, + 0x41, 0x13, 0xdc, 0xe4, 0x26, 0x7f, 0xc3, 0xd5, 0x54, 0xfb, + 0xe7, 0xb9, 0xbe, 0x22, 0x58, 0xad, 0xd5, 0xb6, 0xb8, 0xe9, + 0xaf, 0xdd, 0xbc, 0x9e, 0x3a, 0xed, 0x24, 0xf5, 0x56, 0xc1, + 0x88, 0xe0, 0xaa, 0x9a, 0x14, 0xfe, 0xf7, 0xf8, 0x3d, 0x43, + 0x88, 0xd7, 0xa2, 0x21, 0xad, 0x27, 0x3b, 0x37, 0x3e, 0x3f, + 0x70, 0xf3, 0x7e, 0x5a, 0x42, 0x08, 0xe6, 0xc1, 0x61, 0x6d, + 0x45, 0xc4, 0xeb, 0x7a, 0x7e, 0xa3, 0x29, 0xb8, 0x85, 0xeb, + 0x82, 0x27, 0xd9, 0x13, 0xba, 0x6f, 0xd4, 0x3c, 0xd1, 0x77, + 0xea, 0x06, 0x4d, 0xb5, 0x0c, 0x49, 0xfd, 0x6c, 0xb7, 0x05, + 0x79, 0x23, 0x3c, 0xdf, 0x01, 0x3a, 0x95, 0x2a, 0xe1, 0xa2, + 0x54, 0x6c, 0x7c, 0xb1, 0x05, 0x3f, 0xff, 0xf7, 0xc7, 0x39, + 0xb2, 0xed, 0x01, 0x8f, 0x85, 0xaf, 0xdd, 0xce, 0x03, 0xfa, + 0x6b, 0x29, 0x3c, 0xbb, 0x2f, 0xda, 0x62, 0xa0, 0x6b, 0x72, + 0x7a, 0x8c, 0xe4, 0x26, 0xbd, 0xc8, 0xa2, 0x4b, 0x30, 0x9c, + 0xf2, 0x36, 0x17, 0x80, 0xff, 0xd7, 0x1e, 0x81, 0x6d, 0x84, + 0xc2, 0x83, 0xcc, 0x5d, 0xf3, 0xd0, 0x1a, 0xd5, 0xc7, 0xcd, + 0x80, 0xfb, 0xb2, 0x96, 0x35, 0xa1, 0x43, 0x5e, 0x7e, 0x67, + 0x75, 0x04, 0xe1, 0x33, 0x74, 0x1a, 0x14, 0x5e, 0xd6, 0x9b, + 0xbc, 0x03, 0x3c, 0x15, 0x10, 0x71, 0xb6, 0x48, 0x09, 0xd0, + 0xa4, 0x57, 0xa8, 0x47, 0xdd, 0x63, 0x8e, 0xa7, 0x3b, 0x74, + 0x5e, 0x85, 0xda, 0x94, 0xf3, 0x50, 0xff, 0xb4, 0x3c, 0xe2, + 0xb9, 0x6e, 0x07, 0x05, 0x44, 0x3f, 0x30, 0x93, 0x19, 0xd8, + 0x1b, 0xb3, 0x2f, 0xf9, 0x43, 0xce, 0x15, 0x79, 0x5f, 0x20, + 0xc5, 0xe2, 0x82, 0xa9, 0x9f, 0x0c, 0xe0, 0x55, 0x9c, 0x2e, + 0xd7, 0x6b, 0x71, 0x74, 0xd6, 0x82, 0xba, 0xa9, 0xec, 0xbf, + 0x5c, 0x40, 0x08, 0xb6, 0x4c, 0x63, 0xbd, 0x96, 0x8e, 0x57, + 0xef, 0x6a, 0x04, 0x9b, 0x25, 0xdd, 0x50, 0x67, 0xd5, 0x5a, + 0x39, 0x43, 0x29, 0x33, 0xea, 0x5a, 0x66, 0xc8, 0x7b, 0xd0, + 0x4b, 0xcb, 0x93, 0x2b, 0x3d, 0xb9, 0xe9, 0x0e, 0x56, 0x1f, + 0x46, 0x4d, 0x3e, 0xed, 0xfa, 0x0d, 0xf9, 0xf1, 0x15, 0xff, + 0xc6, 0x5f, 0x5a, 0xd9, 0xc2, 0xba, 0x22, 0x40, 0xb7, 0x4f, + 0x85, 0x46, 0x97, 0xe7, 0xd6, 0xb3, 0x2e, 0xbc, 0x8a, 0x94, + 0x82, 0x26, 0x7b, 0x0b, 0x4c, 0xfe, 0x45, 0x69, 0xa8, 0x35, + 0x0d, 0xb1, 0xbf, 0x44, 0xb0, 0x99, 0x16, 0x83, 0x1f, 0x06, + 0xc5, 0x5c, 0x3a, 0x22, 0xc6, 0x23, 0xce, 0xfd, 0x57, 0xa7, + 0x60, 0xd4, 0x69, 0xaf, 0xb3, 0x11, 0x9d, 0x79, 0xbb, 0xff, + 0x74, 0x19, 0x48, 0x29, 0xac, 0x41, 0xd3, 0x03, 0xfd, 0x0a, + 0xd7, 0x1c, 0x14, 0xdb, 0xc4, 0xb4, 0x1a, 0x0f, 0x8b, 0x65, + 0x44, 0xa2, 0x03, 0x4e, 0x97, 0xf7, 0x28, 0x3f, 0x2d, 0x33, + 0x7a, 0x86, 0xd3, 0x6d, 0x87, 0x42, 0x99, 0x4e, 0x76, 0x6e, + 0x03, 0x52, 0x4c, 0x32, 0xa4, 0x91, 0x05, 0xcd, 0xbd, 0x7b, + 0x44, 0x0e, 0x71, 0xad, 0xa6, 0x23, 0x7c, 0x7e, 0xe0, 0x25, + 0xfc, 0xb4, 0x84, 0x10, 0x0f, 0x41, 0xc2, 0xda, 0x8a, 0x4b, + 0x15, 0xf4, 0xe8, 0xdb, 0x84, 0x28, 0x75, 0x16, 0xfb, 0x5b, + 0x61, 0x57, 0x01, 0x96, 0x62, 0xa8, 0xc5, 0xb9, 0xfc, 0x85, + 0x52, 0xb3, 0xc9, 0x15, 0xc7, 0x4e, 0x71, 0x26, 0xb7, 0xde, + 0x6b, 0x78, 0x61, 0xee, 0x68, 0x20, 0x36, 0xbe, 0x40, 0xb7, + 0xb8, 0x05, 0x1f, 0x30, 0x74, 0x92, 0x83, 0x9b, 0xb1, 0xa3, + 0x17, 0x0c, 0x9a, 0xa9, 0x18, 0x92, 0x39, 0xd8, 0xad, 0x0a, + 0xf2, 0x46, 0x78, 0x7d, 0x02, 0x74, 0x83, 0xa9, 0xfe, 0xa4, + 0x91, 0x30, 0x46, 0x93, 0xc3, 0x1c, 0x31, 0x0a, 0x90, 0x9e, + 0xd2, 0x39, 0xe9, 0x54, 0x01, 0x87, 0xa8, 0xd8, 0xf8, 0xa1, + 0x0a, 0x7e, 0x3d, 0x2d, 0x4d, 0x72, 0xa7, 0x19, 0x7d, 0xf1, + 0x65, 0x8a, 0x21, 0x7a, 0x87, 0xea, 0x64, 0x68, 0xfe, 0x61, + 0xa5, 0x91, 0x77, 0x54, 0x02, 0xdd, 0xc9, 0x9d, 0x79, 0x5f, + 0x06, 0x37, 0xd6, 0x52, 0x78, 0xb5, 0x5e, 0x77, 0xc4, 0x83, + 0x96, 0x78, 0xad, 0x90, 0xf0, 0xfd, 0x79, 0x7c, 0xb8, 0x44, + 0xbb, 0xf9, 0xb6, 0x94, 0x14, 0xce, 0xd6, 0xe4, 0xf4, 0xdb, + 0x0b, 0x4c, 0xb9, 0x53, 0x87, 0x96, 0x60, 0xfb, 0x27, 0x6c, + 0x2e, 0xc3, 0x42, 0x41, 0x90, 0xd6, 0x82, 0xee, 0xc6, 0x18, + 0xe9, 0x80, 0xa3, 0xb7, 0xcf, 0x8f, 0xfe, 0x8e, 0x3d, 0x6d, + 0x3c, 0xc1, 0xda, 0xcb, 0x47, 0xc5, 0x5b, 0xba, 0x25, 0x63, + 0x34, 0x69, 0x4d, 0x59, 0xa9, 0xc8, 0x58, 0xcc, 0x53, 0x69, + 0x38, 0x8e, 0x35, 0xac, 0xe6, 0x2f, 0xdc, 0x8a, 0x9d, 0x14, + 0xc3, 0x35, 0xa7, 0xef, 0x6a, 0x81, 0x86, 0xbc, 0xfc, 0xce, + 0xea, 0x08, 0x01, 0x66, 0xe8, 0x34, 0x57, 0x90, 0xc3, 0xe2, + 0xe3, 0x23, 0xf9, 0xf7, 0x92, 0xd8, 0x29, 0x44, 0xe9, 0x85, + 0x38, 0x79, 0x28, 0xbc, 0x6f, 0xf5, 0xbb, 0x06, 0x78, 0x2a, + 0x20, 0xe2, 0xaf, 0x90, 0x12, 0x63, 0x8b, 0xae, 0xbc, 0x19, + 0x0b, 0xf8, 0x32, 0xa4, 0x07, 0x61, 0x4e, 0xf4, 0x6c, 0xdc, + 0xfa, 0x80, 0x5b, 0xe3, 0x93, 0x8e, 0x79, 0xc6, 0xdf, 0x8d, + 0x76, 0xe8, 0xbc, 0xc9, 0x77, 0xeb, 0x25, 0xa0, 0x3d, 0xab, + 0x07, 0x2b, 0x1d, 0xcb, 0x56, 0x2f, 0x09, 0xa3, 0xd2, 0xdf, + 0xb4, 0xa7, 0xcd, 0x43, 0xed, 0xe6, 0x78, 0x07, 0xb1, 0xdc, + 0x0e, 0x0a, 0x88, 0x7e, 0x60, 0xe5, 0x32, 0x73, 0x36, 0xa5, + 0x5e, 0x31, 0xec, 0xa2, 0xd5, 0xd1, 0x87, 0xa8, 0xf7, 0x35, + 0x0e, 0xf3, 0xf1, 0x3f, 0xde, 0x46, 0x8e, 0x7c, 0x86, 0x5f, + 0x2a, 0xf2, 0xbe, 0x40, 0x49, 0x07, 0xc7, 0x91, 0xfd, 0x18, + 0x03, 0xaa, 0xfb, 0x5c, 0x12, 0xfa, 0x4e, 0xff, 0x37, 0xe2, + 0x36, 0x4c, 0xa9, 0x87, 0x3e, 0x54, 0xeb, 0x49, 0x2b, 0x11, + 0x6d, 0xd6, 0xe2, 0xe8, 0x6f, 0xc7, 0xb7, 0x91, 0x1b, 0xbd, + 0xb8, 0x80, 0x10, 0xaf, 0x98, 0xc6, 0xf9, 0x73, 0x86, 0xe5, + 0xe6, 0x65, 0xc8, 0xda, 0x75, 0xab, 0x7b, 0xcc, 0xf8, 0x4c, + 0x48, 0x8b, 0xb9, 0xef, 0xdf, 0xae, 0x1d, 0xd4, 0x08, 0xf5, + 0x4a, 0x79, 0xa0, 0xce, 0x69, 0xb4, 0x72, 0x86, 0x2d, 0x4a, + 0xbb, 0xa3, 0x94, 0x76, 0x77, 0xbe, 0x24, 0x6f, 0x63, 0x82, + 0x81, 0x57, 0xa2, 0xcb, 0x52, 0x66, 0x17, 0xb4, 0xcc, 0x53, + 0xf6, 0x63, 0x96, 0x55, 0xe5, 0x56, 0x7a, 0xb1, 0x11, 0x1c, + 0xc6, 0xc3, 0x73, 0xb9, 0x45, 0xf1, 0x89, 0x28, 0xf8, 0x43, + 0x26, 0x1a, 0x92, 0x52, 0xc1, 0x51, 0xac, 0x3e, 0x8c, 0x9a, + 0x7c, 0x19, 0x37, 0x1a, 0x31, 0x21, 0x2a, 0x3d, 0x4f, 0xbe, + 0xb4, 0x71, 0x38, 0x9b, 0xe8, 0x97, 0xf5, 0xbb, 0x48, 0x51, + 0x5f, 0x37, 0xe9, 0x71, 0xa7, 0x5d, 0x64, 0x3c, 0x47, 0xb7, + 0x44, 0x80, 0xad, 0x9e, 0xc9, 0x8c, 0xed, 0x0d, 0x6f, 0xa5, + 0x5c, 0xbb, 0xd7, 0xeb, 0xd3, 0x12, 0x20, 0x8d, 0x24, 0x3c, + 0xb6, 0xc7, 0x83, 0x1b, 0xac, 0xe9, 0xb4, 0x58, 0x07, 0xa6, + 0xc7, 0x4c, 0xf6, 0x16, 0x98, 0x3f, 0x8a, 0xd2, 0x93, 0x6a, + 0x1a, 0xa1, 0xbd, 0x88, 0xa3, 0xf1, 0x53, 0xe9, 0x92, 0x1b, + 0x11, 0x9d, 0xf5, 0x99, 0xfd, 0x7c, 0xd9, 0xed, 0x55, 0x6b, + 0x73, 0xbc, 0x2c, 0xc5, 0x3e, 0x0c, 0x49, 0xb8, 0x74, 0x44, + 0x4f, 0x46, 0x5f, 0x39, 0xae, 0x8d, 0xc0, 0x6b, 0xb8, 0x60, + 0x5a, 0x01, 0xc0, 0x1a, 0x0b, 0x0f, 0x21, 0x50, 0x9c, 0x75, + 0x46, 0x6e, 0x10, 0x26, 0xd2, 0x9d, 0xa5, 0x22, 0xf9, 0xf2, + 0xb5, 0x3d, 0xe8, 0x32, 0x90, 0x52, 0x9b, 0x82, 0x65, 0x06, + 0x46, 0x38, 0xc1, 0x2f, 0x70, 0x50, 0xca, 0x76, 0x86, 0x24, + 0x53, 0x1e, 0x73, 0x61, 0xb5, 0x4b, 0x39, 0x14, 0x6d, 0x38, + 0x28, 0x75, 0x4b, 0xab, 0x34, 0x1e, 0xd5, 0xca, 0x88, 0x87, + 0x06, 0x9c, 0xad, 0xb1, 0x09, 0x35, 0xa1, 0xd7, 0x34, 0xe0, + 0x5a, 0x08, 0x16, 0x86, 0x60, 0x64, 0xd6, 0xd1, 0xed, 0x2d, + 0x50, 0x7e, 0x5a, 0x66, 0xf4, 0xcf, 0x65, 0xda, 0xcd, 0x84, + 0xf1, 0x9c, 0xec, 0xdc, 0x79, 0x88, 0x34, 0x73, 0xd3, 0xc4, + 0x8b, 0x84, 0x0b, 0xcc, 0x0e, 0xc8, 0x19, 0x7f, 0x3c, 0x91, + 0x06, 0xa4, 0x98, 0x64, 0x8b, 0xe1, 0x0a, 0x59, 0xb9, 0xf6, + 0x88, 0x1c, 0xe2, 0x99, 0x8f, 0x46, 0x92, 0x01, 0xfc, 0x69, + 0x02, 0x43, 0x75, 0x12, 0xd7, 0xe0, 0x4b, 0x50, 0x0a, 0x7a, + 0x5f, 0x0b, 0xf8, 0xfc, 0x03, 0x4a, 0x3b, 0xab, 0xcb, 0x20, + 0x1e, 0x82, 0x47, 0x77, 0xd7, 0x96, 0x2a, 0x2b, 0x6c, 0x59, + 0x67, 0x47, 0xb2, 0x09, 0xb4, 0x6b, 0x70, 0x94, 0x84, 0x3b, + 0x3f, 0x75, 0xfa, 0x66, 0x13, 0x75, 0xcb, 0x50, 0xea, 0x2c, + 0x35, 0xb6, 0xc2, 0xae, 0x02, 0xef, 0xc4, 0x93, 0x49, 0xb1, + 0x87, 0xd0, 0xaf, 0x5d, 0x63, 0x8e, 0x4a, 0xfd, 0xac, 0xb8, + 0xc1, 0xa3, 0x2c, 0x70, 0x99, 0xfc, 0x3b, 0xc9, 0xa4, 0xa5, + 0x51, 0x2a, 0x4d, 0x9c, 0xe2, 0x4c, 0xad, 0x7f, 0xd6, 0xf0, + 0xc2, 0x1f, 0xaf, 0x6c, 0xc0, 0xa8, 0xd8, 0x88, 0x32, 0xd7, + 0x8c, 0x5a, 0x6e, 0x33, 0x3e, 0x13, 0x12, 0x52, 0xd0, 0x40, + 0x6c, 0xbf, 0x80, 0xad, 0xb3, 0x0a, 0x3e, 0x60, 0xe8, 0xe7, + 0xc5, 0xf5, 0xa1, 0x85, 0x44, 0xe5, 0x08, 0xb2, 0x09, 0x0f, + 0xcc, 0x41, 0x50, 0x76, 0x2b, 0xab, 0x2d, 0x16, 0x71, 0xc8, + 0x2e, 0x18, 0xf7, 0x91, 0x30, 0xe7, 0x72, 0x73, 0x99, 0x14, + 0x27, 0x8c, 0xf0, 0xfa, 0x04, 0xe8, 0xba, 0xbd, 0x93, 0x9c, + 0xb9, 0x45, 0x0d, 0x38, 0xf7, 0x02, 0xe4, 0xc0, 0x18, 0x19, + 0xd4, 0xa5, 0xc5, 0x91, 0x3f, 0x8b, 0xe1, 0x60, 0x8c, 0xe5, + 0x45, 0x38, 0x62, 0x14, 0xe3, 0xff, 0x67, 0x72, 0x51, 0x34, + 0x5b, 0x86, 0x68, 0xc2, 0xf3, 0xae, 0x2b, 0x2e, 0xa1, 0x58, + 0x0b, 0x1c, 0xb7, 0x3f, 0x11, 0xa8, 0x02, 0xcd, 0x93, 0x73, + 0x33, 0x81, 0x14, 0xfc, 0x7a, 0x5a, 0x9a, 0xe4, 0x8d, 0x32, + 0x85, 0x0d, 0x66, 0xc0, 0x1a, 0xd1, 0x4c, 0xca, 0x7a, 0xea, + 0xb9, 0x16, 0x72, 0x07, 0x5d, 0x7f, 0xfa, 0x21, 0xca, 0xd7, + 0x42, 0xf4, 0xcd, 0x17, 0xc8, 0xd0, 0x3f, 0xc2, 0x89, 0xe1, + 0xee, 0xa8, 0x6e, 0x84, 0xae, 0xda, 0xcb, 0x56, 0xb2, 0x5c, + 0xa6, 0xc6, 0xfc, 0x8e, 0x61, 0x02, 0x3e, 0xe5, 0x04, 0x79, + 0x51, 0xf9, 0xf2, 0xbe, 0x0c, 0x6e, 0x6f, 0xa4, 0xf0, 0xa9, + 0xbc, 0xee, 0x4b, 0xc5, 0x90, 0xdc, 0x35, 0xf4, 0x7b, 0x1c, + 0x73, 0x25, 0x01, 0xb2, 0x33, 0xe5, 0x54, 0x0d, 0x9b, 0x88, + 0xef, 0xf0, 0x99, 0xe3, 0x23, 0x39, 0xf2, 0xf8, 0xb3, 0x88, + 0xb5, 0x31, 0xaf, 0xeb, 0x28, 0x5f, 0x7b, 0x55, 0xfd, 0xee, + 0xaa, 0x9b, 0x8d, 0xb3, 0xdd, 0x9e, 0x76, 0x7d, 0x47, 0x08, + 0xf8, 0x12, 0x6f, 0x0b, 0x2b, 0x75, 0x16, 0x98, 0xb1, 0xa6, + 0xcd, 0xef, 0xc0, 0x35, 0x4e, 0xd8, 0x5c, 0x45, 0xfb, 0xae, + 0x4f, 0x78, 0x9f, 0x3a, 0xce, 0xed, 0xa3, 0xf9, 0x03, 0x79, + 0xa6, 0x3b, 0x8c, 0x08, 0x84, 0x82, 0xe3, 0x6f, 0xc7, 0x1f, + 0x4f, 0x30, 0x11, 0xc3, 0x85, 0xad, 0x5d, 0xdd, 0x3f, 0xdf, + 0x10, 0x27, 0x87, 0x62, 0x4e, 0xbd, 0x30, 0x7b, 0x7f, 0xd5, + 0x46, 0xe1, 0xb5, 0x3e, 0xef, 0x92, 0x7a, 0xda, 0x78, 0x41, + 0x77, 0x55, 0x8e, 0x49, 0xb6, 0xb7, 0x4a, 0xc6, 0x68, 0xd2, + 0x9a, 0xb2, 0xee, 0x7f, 0x1c, 0x4c, 0xfe, 0xf7, 0xf1, 0x02, + 0xd8, 0xa1, 0x89, 0x8a, 0x80, 0x31, 0x4a, 0xff, 0x91, 0x53, + 0xb0, 0x5b, 0xa6, 0xd2, 0x70, 0xdf, 0x6a, 0x9b, 0x0f, 0x5e, + 0x7b, 0xd7, 0xf9, 0x28, 0x05, 0xf6, 0xd4, 0x56, 0x2f, 0x70, + 0x0f, 0x94, 0x04, 0x8d, 0xcc, 0x12, 0x93, 0x34, 0x29, 0x65, + 0x45, 0x6a, 0x8d, 0x1d, 0xd4, 0xc1, 0xcf, 0xbb, 0x3b, 0x5f, + 0x17, 0x10, 0x02, 0xcc, 0x13, 0x68, 0xd1, 0xcf, 0xe9, 0x10, + 0x5d, 0x63, 0xb0, 0xf0, 0x55, 0x49, 0xd4, 0x5c, 0xea, 0x2f, + 0xc3, 0x25, 0xae, 0xe3, 0x45, 0x07, 0x05, 0x46, 0x31, 0x2d, + 0xe7, 0x73, 0x52, 0x88, 0x11, 0xc9, 0x70, 0xf2, 0x3a, 0x46, + 0x21, 0x0a, 0x8c, 0xe4, 0x4e, 0x66, 0x89, 0x65, 0x91, 0xc4, + 0xf9, 0x2a, 0xa0, 0xbf, 0x50, 0xbb, 0xde, 0x29, 0xb5, 0x0c, + 0xf0, 0x54, 0x40, 0x07, 0x9d, 0xe3, 0x24, 0xc6, 0xd5, 0x9f, + 0xc4, 0x1e, 0xba, 0x24, 0x3c, 0xae, 0x8f, 0x1f, 0x2e, 0x11, + 0x5e, 0xaf, 0xcc, 0x25, 0x05, 0xd2, 0xbb, 0x32, 0x16, 0x33, + 0x64, 0x8b, 0x0e, 0xc2, 0x9c, 0x2b, 0xd8, 0x7b, 0x37, 0xc3, + 0xb6, 0x05, 0x2f, 0x97, 0x72, 0x3e, 0xed, 0x29, 0x71, 0x89, + 0xf2, 0x3d, 0x1b, 0x37, 0xdf, 0x20, 0x66, 0x48, 0xe5, 0xdf, + 0xf2, 0x4f, 0x7d, 0xd9, 0xec, 0x13, 0xbb, 0x51, 0xee, 0x15, + 0x4a, 0x83, 0x7a, 0x95, 0x71, 0x7a, 0x96, 0x42, 0xf4, 0x7b, + 0x93, 0x58, 0xd5, 0x47, 0x2d, 0x59, 0xa2, 0x60, 0xaa, 0xd8, + 0x0e, 0x56, 0x3a, 0x55, 0xac, 0x5e, 0x12, 0x85, 0x67, 0x7d, + 0xab, 0x8d, 0x59, 0x86, 0x19, 0x0f, 0x9a, 0xf3, 0x5e, 0x58, + 0x25, 0xfc, 0x6d, 0xce, 0x09, 0x6b, 0x68, 0xc1, 0xb1, 0x65, + 0xc9, 0x42, 0xf0, 0x0e, 0xa1, 0x7b, 0x1c, 0x14, 0xd3, 0xfc, + 0xc0, 0x09, 0x64, 0xe6, 0x6c, 0x89, 0xbc, 0x62, 0x64, 0xab, + 0xc5, 0x76, 0x95, 0xb6, 0xac, 0xb7, 0xae, 0x1f, 0xa7, 0xaa, + 0x84, 0x6a, 0x6c, 0x2f, 0x1b, 0x87, 0x69, 0x61, 0xcd, 0x93, + 0x2d, 0x6a, 0x1c, 0x25, 0x21, 0x7e, 0x7f, 0x8c, 0xdf, 0xf8, + 0x8f, 0x22, 0x0d, 0x6c, 0x44, 0x31, 0x52, 0x21, 0x72, 0x33, + 0xe2, 0x32, 0x97, 0x6f, 0x0f, 0xb5, 0xcf, 0xbe, 0x54, 0x27, + 0xbf, 0x80, 0x92, 0x0e, 0x4d, 0xe1, 0x39, 0x30, 0x06, 0x97, + 0x35, 0xb8, 0x5b, 0x1b, 0x30, 0x2a, 0x36, 0x22, 0xed, 0x45, + 0x23, 0xf7, 0xfa, 0x7c, 0xee, 0x74, 0xe5, 0xf5, 0x24, 0x37, + 0x9c, 0x3d, 0x6e, 0x07, 0x6c, 0x98, 0x91, 0xcd, 0x7c, 0xa8, + 0x15, 0x92, 0x56, 0x22, 0xb0, 0x92, 0xf8, 0x30, 0xe7, 0xa5, + 0x13, 0xd3, 0xff, 0xdb, 0xbf, 0xe4, 0xfd, 0x71, 0x86, 0x6f, + 0xda, 0x6f, 0x07, 0x13, 0xde, 0x4d, 0xad, 0xe1, 0x36, 0xb9, + 0xb3, 0xc3, 0x20, 0x9d, 0xf3, 0x4f, 0x4e, 0xca, 0x63, 0x1e, + 0x57, 0xef, 0xd2, 0xaa, 0x58, 0xaf, 0x70, 0x8f, 0xc8, 0x7e, + 0x23, 0x02, 0x31, 0xe6, 0xcf, 0x09, 0x0f, 0xca, 0x53, 0x77, + 0xea, 0x95, 0xf6, 0x5b, 0x33, 0x98, 0x90, 0xd5, 0xa5, 0x43, + 0xab, 0x04, 0x86, 0x68, 0x2c, 0x3c, 0x84, 0x83, 0x35, 0x17, + 0xdb, 0x7b, 0x40, 0x98, 0xb1, 0x1d, 0x7d, 0x9f, 0x3a, 0x6b, + 0x10, 0x29, 0x94, 0xf2, 0x83, 0x5f, 0xd2, 0xab, 0xe4, 0xcf, + 0x25, 0xb8, 0x19, 0x92, 0xb3, 0xc9, 0x6f, 0x62, 0xfa, 0xe4, + 0x40, 0x13, 0x3a, 0x48, 0x34, 0x82, 0x5a, 0x94, 0xb5, 0x85, + 0xeb, 0xec, 0xee, 0xbf, 0x48, 0xde, 0xc6, 0xc7, 0xc1, 0xae, + 0x87, 0x55, 0xce, 0x31, 0xd1, 0x88, 0x62, 0x4e, 0x91, 0xf4, + 0x26, 0xc8, 0x05, 0x8b, 0x29, 0x4d, 0x57, 0x18, 0xa4, 0xcc, + 0x2e, 0xab, 0x5b, 0xa6, 0x2f, 0xc6, 0xef, 0xaa, 0x09, 0xac, + 0xf4, 0xa1, 0x22, 0x38, 0x30, 0x69, 0x4a, 0xa6, 0xd2, 0x04, + 0x50, 0x8d, 0x81, 0xbc, 0xca, 0xe0, 0x1c, 0x42, 0xf2, 0x75, + 0x4f, 0x45, 0xe6, 0xb1, 0x8a, 0x21, 0xd1, 0x50, 0x33, 0x86, + 0x4c, 0x34, 0xe7, 0xa4, 0x41, 0xa2, 0xdb, 0xe0, 0x82, 0xbc, + 0x03, 0x83, 0xae, 0x1b, 0x5d, 0x90, 0x8f, 0x78, 0x0f, 0x47, + 0x91, 0xef, 0x9b, 0x7c, 0xdb, 0xf7, 0xf8, 0x32, 0x6e, 0x34, + 0x62, 0x42, 0x54, 0x7a, 0x9e, 0xbf, 0xab, 0xe2, 0x0f, 0xd9, + 0xbf, 0xfa, 0x71, 0x90, 0x11, 0x7f, 0x0c, 0x54, 0x97, 0x36, + 0x76, 0x5c, 0x7b, 0xaf, 0x70, 0xf5, 0x13, 0xed, 0x29, 0xb5, + 0x90, 0xa2, 0xbe, 0x6e, 0x11, 0xe2, 0x8d, 0xba, 0xc8, 0x78, + 0xe4, 0x50, 0x77, 0xe0, 0xa0, 0x17, 0xef, 0xe9, 0xd0, 0x78, + 0xd2, 0xae, 0x65, 0x59, 0x18, 0x35, 0x8e, 0xad, 0x88, 0xc3, + 0x99, 0xff, 0x51, 0xdb, 0x19, 0x1a, 0xde, 0x89, 0xb8, 0xb5, + 0x6d, 0x15, 0x1a, 0x08, 0xec, 0xce, 0x10, 0x5d, 0x2e, 0x90, + 0x77, 0x0c, 0x1d, 0xc5, 0x50, 0x56, 0xbd, 0x58, 0x65, 0x24, + 0x40, 0xd9, 0x48, 0x78, 0xaf, 0x4d, 0xc5, 0x36, 0x9b, 0x11, + 0xab, 0xb0, 0x0e, 0x8f, 0xf1, 0x81, 0x24, 0xd4, 0xc1, 0xda, + 0xd0, 0x06, 0xab, 0x20, 0x58, 0x5d, 0x43, 0x53, 0xde, 0xc2, + 0x4d, 0x98, 0x2f, 0x2c, 0xf3, 0x7e, 0xd7, 0x67, 0xe5, 0xd4, + 0x34, 0x81, 0xb9, 0xd3, 0x85, 0x21, 0xd9, 0x3d, 0x4b, 0x21, + 0x7a, 0xdc, 0xa8, 0x2c, 0x8b, 0xc2, 0xf7, 0xcd, 0x51, 0x30, + 0x55, 0x6c, 0xa6, 0x11, 0xe7, 0x36, 0x22, 0xf9, 0x29, 0xf1, + 0x39, 0xf8, 0x71, 0x19, 0xaa, 0xd6, 0xe6, 0xbb, 0x32, 0xb4, + 0x83, 0x3b, 0xab, 0x5b, 0x56, 0xba, 0x57, 0xee, 0xb2, 0x55, + 0x42, 0x35, 0x36, 0xf6, 0x58, 0x49, 0x7c, 0x18, 0x92, 0xb3, + 0xe8, 0x88, 0x9e, 0x8c, 0xbe, 0x72, 0x9f, 0xd9, 0x43, 0xd6, + 0xcc, 0xec, 0x18, 0x15, 0x1b, 0x11, 0x97, 0xc3, 0xf0, 0x9a, + 0x7d, 0x3e, 0x77, 0x3a, 0x93, 0x9b, 0xb3, 0xc0, 0xb4, 0x02, + 0x43, 0x34, 0x16, 0x1e, 0x42, 0xa0, 0xfb, 0xea, 0x8c, 0xdc, + 0x20, 0x4c, 0x27, 0x65, 0xd0, 0x0f, 0xca, 0x96, 0x69, 0x55, + 0x2c, 0xb6, 0x38, 0xa6, 0x64, 0x3f, 0xf0, 0x01, 0x67, 0xf9, + 0x89, 0x44, 0x31, 0x27, 0xa9, 0x7a, 0x13, 0x64, 0xe3, 0xa4, + 0xf5, 0xc7, 0xca, 0x0c, 0xf3, 0x5c, 0xed, 0x49, 0xb8, 0x85, + 0xd6, 0x31, 0x7d, 0x72, 0x20, 0xe8, 0x1d, 0x24, 0x1a, 0x41, + 0x8c, 0x70, 0x41, 0x5e, 0xe0, 0xa0, 0x57, 0xec, 0xcf, 0x48, + 0xa6, 0x3c, 0xe6, 0xc2, 0xa9, 0x96, 0x18, 0xd5, 0x25, 0x53, + 0x69, 0x02, 0x28, 0xa7, 0xa1, 0x5e, 0x65, 0x70, 0x0e, 0x21, + 0x79, 0xdb, 0x72, 0x28, 0xda, 0x70, 0x50, 0xea, 0x96, 0x95, + 0x68, 0x3c, 0x69, 0x57, 0xd3, 0xcd, 0x0c, 0xfb, 0xe6, 0x8d, + 0xbe, 0x7d, 0xd9, 0x48, 0xe9, 0xde, 0x06, 0x2a, 0xaa, 0x1b, + 0x3b, 0x2e, 0xdc, 0xb6, 0x99, 0xa1, 0x12, 0x6a, 0x81, 0x6d, + 0x68, 0x03, 0xb4, 0x10, 0x2c, 0xcf, 0xc0, 0xc8, 0x6f, 0x61, + 0x0d, 0x04, 0x76, 0x67, 0x08, 0xcf, 0x17, 0x48, 0xda, 0x06, + 0xef, 0x83, 0x28, 0x2b, 0xbf, 0x2c, 0x19, 0x5a, 0xa0, 0xfc, + 0xb4, 0xcc, 0x2b, 0x5d, 0xca, 0x77, 0x59, 0xcb, 0x21, 0xfb, + 0x1b, 0x7b, 0x8d, 0xff, 0xc4, 0xf1, 0x3d, 0x6e, 0x54, 0x16, + 0xa4, 0x61, 0x9a, 0x87, 0xc9, 0x18, 0xcb, 0x36, 0xf2, 0xd3, + 0x68, 0xe6, 0x65, 0x4b, 0xd5, 0xcb, 0x16, 0x5b, 0x1c, 0x53, + 0x32, 0xfe, 0x78, 0xe1, 0x66, 0x76, 0x0c, 0xeb, 0xec, 0xe9, + 0xaa, 0x80, 0x78, 0x4d, 0xdf, 0x1f, 0xda, 0x1d, 0xa8, 0xac, + 0x0c, 0x8b, 0xf3, 0xc8, 0xd5, 0x01, 0x14, 0xb2, 0xb1, 0x2f, + 0xd3, 0x38, 0x07, 0xf1, 0xdd, 0x8c, 0x98, 0x2e, 0x97, 0xc5, + 0x5c, 0xa3, 0x6b, 0xf9, 0xdf, 0x39, 0x10, 0x74, 0xef, 0x12, + 0x0d, 0xc1, 0xe7, 0x02, 0x3b, 0xd2, 0x04, 0x86, 0xea, 0x24, + 0x6d, 0x03, 0x96, 0xa0, 0x14, 0xf4, 0xbe, 0x16, 0x73, 0xa7, + 0x5f, 0xdf, 0x8d, 0x24, 0x95, 0x6f, 0x03, 0x15, 0x55, 0xec, + 0xfc, 0x17, 0x6e, 0x5b, 0x33, 0x3b, 0x06, 0x94, 0x76, 0x95, + 0x55, 0x40, 0x3c, 0xc7, 0x8e, 0xee, 0x6d, 0xef, 0x54, 0x56, + 0xa7, 0x9e, 0x62, 0x99, 0xff, 0x37, 0x2a, 0x0b, 0x52, 0xd1, + 0x4d, 0xa2, 0x85, 0x0c, 0x84, 0x1b, 0xd8, 0xb2, 0xce, 0x8e, + 0xa7, 0x12, 0xab, 0xd6, 0xe0, 0xeb, 0xcb, 0x76, 0x7e, 0xea, + 0x37, 0xcc, 0x4c, 0x17, 0xaa, 0x83, 0x2e, 0xb0, 0xd4, 0x9d, + 0x8e, 0xfd, 0x08, 0x3a, 0x96, 0x09, 0xe7, 0x81, 0x26, 0xea, + 0x55, 0xa0, 0x17, 0x58, 0x6a, 0xaf, 0x47, 0x9f, 0x04, 0x1d, + 0x4b, 0xe5, 0x92, 0xa1, 0xb2, 0x4f, 0x31, 0xad, 0x9e, 0xfa, + 0x15, 0xe4, 0x29, 0x89, 0xc7, 0x51, 0xa3, 0x06, 0x42, 0xec, + 0xcd, 0x63, 0x9d, 0xba, 0xc6, 0xdf, 0x94, 0x39, 0x9b, 0xb3, + 0x41, 0x85, 0x58, 0xe0, 0xf1, 0x3b, 0x59, 0xc6, 0xf9, 0xb7, + 0x4f, 0x7d, 0xeb, 0x72, 0xf5, 0xa5, 0x82, 0xc9, 0xb0, 0x03, + 0x21, 0x76, 0x76, 0x51, 0x8b, 0x89, 0xa2, 0x54, 0x9a, 0xfb, + 0x07, 0x98, 0x99, 0xfe, 0x6f, 0x23, 0x47, 0x3e, 0xe2, 0xf4, + 0xef, 0x84, 0x2b, 0xf6, 0xe5, 0xb0, 0x69, 0x8e, 0x5a, 0xb2, + 0x87, 0xc0, 0x97, 0x73, 0x9d, 0xd8, 0x43, 0x93, 0x73, 0xd3, + 0x64, 0x6d, 0xdb, 0xb4, 0xdc, 0x66, 0x7c, 0x26, 0x24, 0xa4, + 0x09, 0x7d, 0x27, 0x9e, 0xfa, 0x71, 0x1b, 0x26, 0xb5, 0xa2, + 0x1f, 0x2a, 0x94, 0xc5, 0xf4, 0xe9, 0x63, 0x80, 0xd8, 0xbd, + 0xc3, 0x99, 0xa5, 0x14, 0x7c, 0xc0, 0x13, 0x0d, 0x49, 0x29, + 0x81, 0xc9, 0xf7, 0x25, 0xbc, 0xb0, 0x4a, 0x3b, 0xda, 0x5f, + 0x12, 0xd6, 0xd0, 0x41, 0xa1, 0xca, 0x51, 0x84, 0x88, 0x09, + 0x10, 0xa7, 0x12, 0x1e, 0x5b, 0x82, 0xa0, 0xec, 0x56, 0x95, + 0x5a, 0x2c, 0xe2, 0x53, 0x1c, 0xac, 0x74, 0xaa, 0x9b, 0xbc, + 0x24, 0xc9, 0xce, 0xfa, 0x95, 0xd9, 0xb2, 0xcf, 0x32, 0x1e, + 0x5c, 0x30, 0x2d, 0xe1, 0x60, 0x0d, 0xe4, 0xe6, 0xf1, 0x28, + 0x4e, 0xdb, 0x23, 0x37, 0x08, 0x13, 0xc8, 0x95, 0x49, 0xec, + 0xe9, 0xaf, 0x9b, 0xad, 0x9f, 0x3e, 0x8d, 0x97, 0xcb, 0xd4, + 0xd8, 0x5e, 0xb7, 0xb9, 0xe5, 0xfb, 0xb1, 0x8a, 0x1a, 0x70, + 0x2d, 0x04, 0x0b, 0x43, 0x30, 0x32, 0x6b, 0x89, 0x23, 0x1c, + 0x81, 0xf6, 0x38, 0x28, 0x65, 0x3b, 0x43, 0x12, 0xc8, 0x0f, + 0xd8, 0xd1, 0xbb, 0xc4, 0x49, 0xe1, 0x7e, 0xd5, 0x01, 0xc0, + 0xdb, 0x09, 0x8a, 0x70, 0xc4, 0x28, 0x05, 0x3d, 0xce, 0xe4, + 0xdd, 0x44, 0x1a, 0xd8, 0x88, 0x62, 0xa4, 0x42, 0xe4, 0x66, + 0x07, 0x64, 0xed, 0xde, 0x1e, 0xa9, 0xa2, 0x68, 0xb6, 0xcf, + 0xd0, 0x47, 0x25, 0x9f, 0x56, 0x5c, 0x81, 0xb0, 0x16, 0x38, + 0xad, 0x7e, 0x36, 0xcd, 0xd2, 0xc2, 0x59, 0xe5, 0x5a, 0xd4, + 0x38, 0x4a, 0x42, 0xfc, 0xfe, 0xdb, 0x7d, 0x33, 0x22, 0x93, + 0x04, 0x59, 0xe5, 0xe6, 0x66, 0xc1, 0x28, 0x3b, 0xf4, 0xb4, + 0xf7, 0x0b, 0xd9, 0x64, 0xb6, 0x36, 0x60, 0x54, 0x6c, 0x44, + 0x19, 0x8a, 0x46, 0x2d, 0x37, 0xf8, 0x1f, 0xe8, 0x09, 0x29, + 0xc9, 0x1a, 0xcc, 0x43, 0x34, 0x61, 0x98, 0x57, 0xf4, 0x17, + 0xb1, 0x2c, 0xe4, 0x0e, 0xba, 0xfe, 0x5d, 0xbf, 0xa8, 0x4e, + 0xbd, 0xc3, 0xe7, 0x1c, 0x9a, 0x01, 0x72, 0x60, 0x0c, 0xed, + 0x6a, 0xb3, 0x37, 0x42, 0x57, 0x6d, 0x84, 0x2b, 0x59, 0x2e, + 0x53, 0x63, 0x7e, 0x47, 0xd1, 0x01, 0x1f, 0x93, 0xa3, 0xe7, + 0x33, 0x60, 0x0d, 0x89, 0x26, 0x65, 0x3d, 0x75, 0xbd, 0x0b, + 0x39, 0xe2, 0xcf, 0xde, 0xdc, 0xcb, 0x9f, 0x77, 0x55, 0xac, + 0xa7, 0xb8, 0x8f, 0x4f, 0x3b, 0xdf, 0xc2, 0x04, 0x7c, 0x09, + 0x48, 0x6e, 0xfb, 0x7a, 0xdc, 0x0e, 0xd8, 0xf3, 0xe1, 0x59, + 0xf8, 0x93, 0x2a, 0xe7, 0xac, 0x44, 0x08, 0xf2, 0xa2, 0x31, + 0x27, 0xbf, 0x18, 0xdc, 0xde, 0x8b, 0x23, 0x91, 0xbb, 0x1f, + 0x96, 0x49, 0x9c, 0x57, 0xc6, 0x3c, 0xae, 0x1d, 0x67, 0x97, + 0xb0, 0x9d, 0xe0, 0xdd, 0x53, 0xfc, 0x46, 0x04, 0xe3, 0x7b, + 0x6a, 0x2b, 0xf6, 0x38, 0xe6, 0x4a, 0x02, 0xa7, 0x66, 0x09, + 0xa8, 0x1a, 0xf5, 0xd3, 0x77, 0xde, 0x0e, 0x26, 0x7f, 0x9a, + 0x99, 0x01, 0x6c, 0xb1, 0xa5, 0x45, 0x40, 0xf9, 0x25, 0x9e, + 0x1d, 0x23, 0xf1, 0x05, 0x46, 0x72, 0x27, 0x33, 0xa5, 0xd3, + 0xa9, 0x62, 0x9d, 0x15, 0x50, 0xbe, 0x89, 0x86, 0x95, 0x08, + 0xcf, 0xd0, 0x58, 0x78, 0xcb, 0xc5, 0x6a, 0x2e, 0x75, 0xf6, + 0x80, 0xf3, 0xf6, 0xaa, 0x39, 0x1f, 0x97, 0xf5, 0xd9, 0xa5, + 0x79, 0xff, 0xec, 0xfa, 0x8e, 0x10, 0x33, 0x24, 0x62, 0x0f, + 0x5d, 0x12, 0x1e, 0x57, 0xa6, 0xee, 0x17, 0xe9, 0x2f, 0xb6, + 0x66, 0xf3, 0xe3, 0x69, 0xde, 0x16, 0x56, 0xea, 0x2c, 0xf3, + 0xa1, 0x8f, 0x59, 0x1d, 0x43, 0x6a, 0x9c, 0x73, 0xb8, 0x8a, + 0x4a, 0xb3, 0x32, 0xe7, 0xa5, 0x51, 0xde, 0xc4, 0x37, 0x0b, + 0x80, 0x26, 0x74, 0x90, 0x68, 0xc7, 0x35, 0x9f, 0x9e, 0xf0, + 0xfd, 0x74, 0x5f, 0x19, 0x85, 0x31, 0x06, 0xf2, 0x8f, 0x76, + 0xdb, 0x10, 0xa1, 0x3a, 0xfa, 0xfd, 0x74, 0xd6, 0x20, 0x52, + 0xeb, 0x27, 0xc5, 0xbe, 0x67, 0x95, 0x0b, 0x5d, 0xcb, 0xc7, + 0x05, 0xde, 0x4d, 0x3e, 0x9e, 0x60, 0x22, 0x45, 0xc9, 0x99, + 0xba, 0x79, 0x7e, 0x7d, 0x5f, 0x62, 0x61, 0xd3, 0xc4, 0x9c, + 0xe1, 0x2b, 0x4c, 0x53, 0x0a, 0xd5, 0x52, 0x9a, 0xae, 0x30, + 0x20, 0x4e, 0xcd, 0xc4, 0x9c, 0xb9, 0x60, 0xf6, 0xfe, 0x69, + 0x8c, 0x01, 0xa9, 0x7c, 0x1d, 0xe7, 0xb4, 0xeb, 0xa9, 0xc9, + 0x15, 0x1b, 0x1f, 0xbd, 0x90, 0x7f, 0x4f, 0x4d, 0x41, 0x9f, + 0xcd, 0xaa, 0xf4, 0x77, 0xf0, 0x82, 0xee, 0xaa, 0xdf, 0x92, + 0xaf, 0xad, 0x94, 0x4f, 0xd0, 0x67, 0xf7, 0xa7, 0x60, 0xd2, + 0x94, 0x8f, 0x67, 0x08, 0xa0, 0xd9, 0xc1, 0xbb, 0x57, 0x03, + 0x38, 0x84, 0x27, 0xea, 0x1f, 0xfe, 0x38, 0x98, 0x3f, 0x2d, + 0x21, 0x04, 0x73, 0x81, 0xd1, 0xd7, 0xc3, 0x62, 0x94, 0x3d, + 0x8b, 0x5b, 0x5c, 0x95, 0xb6, 0x8f, 0x5e, 0x4f, 0x1d, 0x97, + 0x12, 0x9b, 0x2b, 0x81, 0x44, 0x70, 0xe1, 0xa6, 0xa3, 0xb6, + 0x8f, 0x67, 0xe0, 0x7d, 0xd4, 0xf5, 0x1e, 0xbc, 0xf6, 0x6d, + 0x31, 0x50, 0x75, 0x03, 0xc7, 0xbb, 0x06, 0xc5, 0x9f, 0x36, + 0xba, 0xe3, 0xdd, 0xf0, 0x1e, 0x8e, 0xe1, 0x1d, 0x0a, 0x2f, + 0x6b, 0xac, 0x5e, 0xe0, 0x1e, 0xeb, 0x08, 0xd9, 0x5b, 0x24, + 0xe5, 0x68, 0x52, 0xca, 0x9e, 0x8a, 0x0f, 0xa1, 0xd7, 0x42, + 0x61, 0xa0, 0x66, 0xcf, 0x98, 0x68, 0x0d, 0x8b, 0x82, 0x87, + 0x8a, 0xd4, 0xd9, 0x3a, 0x6b, 0x41, 0x5d, 0xb5, 0x76, 0xbe, + 0x2e, 0x20, 0x04, 0x5b, 0x26, 0xd0, 0x1e, 0x71, 0xbd, 0x37, + 0xe2, 0xe3, 0x22, 0xfe, 0x18, 0xa8, 0xed, 0x6c, 0xec, 0xb8, + 0xf6, 0x9d, 0x61, 0x5d, 0x11, 0x20, 0xba, 0xc6, 0xa3, 0x23, + 0xaa, 0x92, 0x6b, 0xb8, 0x17, 0x5e, 0x45, 0x4a, 0xf5, 0xf8, + 0x75, 0x2d, 0x33, 0x64, 0xdc, 0x68, 0xc4, 0x84, 0xa8, 0xf4, + 0xff, 0xbd, 0x95, 0x07, 0x9f, 0x05, 0x8a, 0x0e, 0x0a, 0x8c, + 0x62, 0x5a, 0x0d, 0xe6, 0xa4, 0xd3, 0x22, 0x51, 0xe0, 0x27, + 0x0b, 0xa0, 0xee, 0x03, 0x83, 0x2e, 0x1d, 0x11, 0x63, 0xf0, + 0x67, 0x9f, 0xca, 0xb2, 0x30, 0x6a, 0x74, 0x8c, 0x42, 0x14, + 0xdb, 0x0b, 0x9c, 0xcc, 0xd1, 0xca, 0xe1, 0x4b, 0x31, 0x54, + 0x83, 0xbd, 0xe0, 0x29, 0x26, 0x19, 0x52, 0xa9, 0xe3, 0x87, + 0xbf, 0xdc, 0x22, 0x07, 0xd9, 0xb7, 0x53, 0xf0, 0xa0, 0xb5, + 0x7f, 0x52, 0xa9, 0x18, 0x23, 0xa8, 0x80, 0x0e, 0xf9, 0x05, + 0x48, 0x4f, 0x69, 0xfd, 0x34, 0x10, 0x1b, 0x5f, 0x20, 0xba, + 0x5c, 0xe3, 0xee, 0x18, 0x3a, 0x49, 0xa0, 0xac, 0xb9, 0xb0, + 0x4b, 0x3c, 0xb7, 0x48, 0x78, 0x9f, 0xdd, 0x3e, 0x5c, 0x22, + 0xbc, 0x9d, 0x5b, 0x4a, 0x0a, 0x67, 0xdf, 0x99, 0xd3, 0x45, + 0xf1, 0x3d, 0xa2, 0x75, 0x32, 0x34, 0x7f, 0xd1, 0xb3, 0xa9, + 0xda, 0x2a, 0xb5, 0x64, 0x2c, 0x66, 0xc8, 0xd5, 0x1c, 0x47, + 0xfb, 0x56, 0x73, 0xf6, 0x6e, 0x45, 0xaf, 0x0a, 0x21, 0xc1, + 0x48, 0x6b, 0x41, 0x77, 0x63, 0x0c, 0x95, 0x40, 0xb0, 0xba, + 0x86, 0xa6, 0x7f, 0x47, 0x5e, 0xed, 0xe4, 0x7c, 0x19, 0x52, + 0xe2, 0xd1, 0x27, 0x7a, 0x36, 0x6e, 0x7d, 0x40, 0xcc, 0x90, + 0xca, 0x48, 0x80, 0x71, 0x90, 0xf0, 0x9d, 0x9a, 0x49, 0x6c, + 0xf5, 0x22, 0x95, 0xa3, 0x1c, 0xdd, + }, + { + /* 2 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x3c, 0x48, 0xf8, + 0x48, 0x48, 0xc8, 0x8e, 0x2a, 0xf5, 0x02, 0xdd, 0x14, 0x30, + 0x44, 0x8e, 0x40, 0x78, 0x90, 0x33, 0x90, 0x90, 0x53, 0xdf, + 0x54, 0x29, 0x04, 0x79, 0x28, 0x60, 0x88, 0xdf, 0x60, 0x44, + 0xd8, 0xcb, 0xd8, 0xd8, 0x9b, 0x51, 0x7e, 0xdc, 0x06, 0xa4, + 0x3c, 0x50, 0xcc, 0x51, 0x80, 0xf0, 0xe3, 0x66, 0xe3, 0xe3, + 0xa6, 0x7d, 0xa8, 0x52, 0x08, 0xf2, 0x50, 0xc0, 0xd3, 0x7d, + 0xa0, 0xcc, 0xab, 0x9e, 0xab, 0xab, 0x6e, 0xf3, 0x82, 0xa7, + 0x0a, 0x2f, 0x44, 0xf0, 0x97, 0xf3, 0xc0, 0x88, 0x73, 0x55, + 0x73, 0x73, 0xf5, 0xa2, 0xfc, 0x7b, 0x0c, 0x8b, 0x78, 0xa0, + 0x5b, 0xa2, 0xe0, 0xb4, 0x3b, 0xad, 0x3b, 0x3b, 0x3d, 0x2c, + 0xd6, 0x8e, 0x0e, 0x56, 0x6c, 0x90, 0x1f, 0x2c, 0xc3, 0x23, + 0x05, 0xcc, 0x05, 0x05, 0x8f, 0xfa, 0x93, 0xa4, 0x10, 0x27, + 0xa0, 0x43, 0x65, 0xfa, 0xe3, 0x1f, 0x4d, 0x34, 0x4d, 0x4d, + 0x47, 0x74, 0xb9, 0x51, 0x12, 0xfa, 0xb4, 0x73, 0x21, 0x74, + 0x83, 0x5b, 0x95, 0xff, 0x95, 0x95, 0xdc, 0x25, 0xc7, 0x8d, + 0x14, 0x5e, 0x88, 0x23, 0xed, 0x25, 0xa3, 0x67, 0xdd, 0x07, + 0xdd, 0xdd, 0x14, 0xab, 0xed, 0x78, 0x16, 0x83, 0x9c, 0x13, + 0xa9, 0xab, 0x43, 0xd3, 0xe6, 0xaa, 0xe6, 0xe6, 0x29, 0x87, + 0x3b, 0xf6, 0x18, 0xd5, 0xf0, 0x83, 0xb6, 0x87, 0x63, 0xef, + 0xae, 0x52, 0xae, 0xae, 0xe1, 0x09, 0x11, 0x03, 0x1a, 0x08, + 0xe4, 0xb3, 0xf2, 0x09, 0x03, 0xab, 0x76, 0x99, 0x76, 0x76, + 0x7a, 0x58, 0x6f, 0xdf, 0x1c, 0xac, 0xd8, 0xe3, 0x3e, 0x58, + 0x23, 0x97, 0x3e, 0x61, 0x3e, 0x3e, 0xb2, 0xd6, 0x45, 0x2a, + 0x1e, 0x71, 0xcc, 0xd3, 0x7a, 0xd6, 0x45, 0x46, 0x0a, 0x5b, + 0x0a, 0x0a, 0xdd, 0x37, 0xe5, 0x8b, 0x20, 0x4e, 0x83, 0x86, + 0xca, 0x37, 0x65, 0x7a, 0x42, 0xa3, 0x42, 0x42, 0x15, 0xb9, + 0xcf, 0x7e, 0x22, 0x93, 0x97, 0xb6, 0x8e, 0xb9, 0x05, 0x3e, + 0x9a, 0x68, 0x9a, 0x9a, 0x8e, 0xe8, 0xb1, 0xa2, 0x24, 0x37, + 0xab, 0xe6, 0x42, 0xe8, 0x25, 0x02, 0xd2, 0x90, 0xd2, 0xd2, + 0x46, 0x66, 0x9b, 0x57, 0x26, 0xea, 0xbf, 0xd6, 0x06, 0x66, + 0xc5, 0xb6, 0xe9, 0x3d, 0xe9, 0xe9, 0x7b, 0x4a, 0x4d, 0xd9, + 0x28, 0xbc, 0xd3, 0x46, 0x19, 0x4a, 0xe5, 0x8a, 0xa1, 0xc5, + 0xa1, 0xa1, 0xb3, 0xc4, 0x67, 0x2c, 0x2a, 0x61, 0xc7, 0x76, + 0x5d, 0xc4, 0x85, 0xce, 0x79, 0x0e, 0x79, 0x79, 0x28, 0x95, + 0x19, 0xf0, 0x2c, 0xc5, 0xfb, 0x26, 0x91, 0x95, 0xa5, 0xf2, + 0x31, 0xf6, 0x31, 0x31, 0xe0, 0x1b, 0x33, 0x05, 0x2e, 0x18, + 0xef, 0x16, 0xd5, 0x1b, 0x86, 0x65, 0x0f, 0x97, 0x0f, 0x0f, + 0x52, 0xcd, 0x76, 0x2f, 0x30, 0x69, 0x23, 0xc5, 0xaf, 0xcd, + 0xa6, 0x59, 0x47, 0x6f, 0x47, 0x47, 0x9a, 0x43, 0x5c, 0xda, + 0x32, 0xb4, 0x37, 0xf5, 0xeb, 0x43, 0xc6, 0x1d, 0x9f, 0xa4, + 0x9f, 0x9f, 0x01, 0x12, 0x22, 0x06, 0x34, 0x10, 0x0b, 0xa5, + 0x27, 0x12, 0xe6, 0x21, 0xd7, 0x5c, 0xd7, 0xd7, 0xc9, 0x9c, + 0x08, 0xf3, 0x36, 0xcd, 0x1f, 0x95, 0x63, 0x9c, 0x06, 0x95, + 0xec, 0xf1, 0xec, 0xec, 0xf4, 0xb0, 0xde, 0x7d, 0x38, 0x9b, + 0x73, 0x05, 0x7c, 0xb0, 0x26, 0xa9, 0xa4, 0x09, 0xa4, 0xa4, + 0x3c, 0x3e, 0xf4, 0x88, 0x3a, 0x46, 0x67, 0x35, 0x38, 0x3e, + 0x46, 0xed, 0x7c, 0xc2, 0x7c, 0x7c, 0xa7, 0x6f, 0x8a, 0x54, + 0x3c, 0xe2, 0x5b, 0x65, 0xf4, 0x6f, 0x66, 0xd1, 0x34, 0x3a, + 0x34, 0x34, 0x6f, 0xe1, 0xa0, 0xa1, 0x3e, 0x3f, 0x4f, 0x55, + 0xb0, 0xe1, 0x8a, 0x8c, 0x14, 0xb6, 0x14, 0x14, 0x79, 0x6e, + 0x09, 0xd5, 0x40, 0x9c, 0xc5, 0xcf, 0x57, 0x6e, 0xaa, 0xb0, + 0x5c, 0x4e, 0x5c, 0x5c, 0xb1, 0xe0, 0x23, 0x20, 0x42, 0x41, + 0xd1, 0xff, 0x13, 0xe0, 0xca, 0xf4, 0x84, 0x85, 0x84, 0x84, + 0x2a, 0xb1, 0x5d, 0xfc, 0x44, 0xe5, 0xed, 0xaf, 0xdf, 0xb1, + 0xea, 0xc8, 0xcc, 0x7d, 0xcc, 0xcc, 0xe2, 0x3f, 0x77, 0x09, + 0x46, 0x38, 0xf9, 0x9f, 0x9b, 0x3f, 0x0a, 0x7c, 0xf7, 0xd0, + 0xf7, 0xf7, 0xdf, 0x13, 0xa1, 0x87, 0x48, 0x6e, 0x95, 0x0f, + 0x84, 0x13, 0x2a, 0x40, 0xbf, 0x28, 0xbf, 0xbf, 0x17, 0x9d, + 0x8b, 0x72, 0x4a, 0xb3, 0x81, 0x3f, 0xc0, 0x9d, 0x4a, 0x04, + 0x67, 0xe3, 0x67, 0x67, 0x8c, 0xcc, 0xf5, 0xae, 0x4c, 0x17, + 0xbd, 0x6f, 0x0c, 0xcc, 0x6a, 0x38, 0x2f, 0x1b, 0x2f, 0x2f, + 0x44, 0x42, 0xdf, 0x5b, 0x4e, 0xca, 0xa9, 0x5f, 0x48, 0x42, + 0x49, 0xaf, 0x11, 0x7a, 0x11, 0x11, 0xf6, 0x94, 0x9a, 0x71, + 0x50, 0xbb, 0x65, 0x8c, 0x32, 0x94, 0x69, 0x93, 0x59, 0x82, + 0x59, 0x59, 0x3e, 0x1a, 0xb0, 0x84, 0x52, 0x66, 0x71, 0xbc, + 0x76, 0x1a, 0x09, 0xd7, 0x81, 0x49, 0x81, 0x81, 0xa5, 0x4b, + 0xce, 0x58, 0x54, 0xc2, 0x4d, 0xec, 0xba, 0x4b, 0x29, 0xeb, + 0xc9, 0xb1, 0xc9, 0xc9, 0x6d, 0xc5, 0xe4, 0xad, 0x56, 0x1f, + 0x59, 0xdc, 0xfe, 0xc5, 0xc9, 0x5f, 0xf2, 0x1c, 0xf2, 0xf2, + 0x50, 0xe9, 0x32, 0x23, 0x58, 0x49, 0x35, 0x4c, 0xe1, 0xe9, + 0xe9, 0x63, 0xba, 0xe4, 0xba, 0xba, 0x98, 0x67, 0x18, 0xd6, + 0x5a, 0x94, 0x21, 0x7c, 0xa5, 0x67, 0x89, 0x27, 0x62, 0x2f, + 0x62, 0x62, 0x03, 0x36, 0x66, 0x0a, 0x5c, 0x30, 0x1d, 0x2c, + 0x69, 0x36, 0xa9, 0x1b, 0x2a, 0xd7, 0x2a, 0x2a, 0xcb, 0xb8, + 0x4c, 0xff, 0x5e, 0xed, 0x09, 0x1c, 0x2d, 0xb8, 0xcf, 0xca, + 0x1e, 0xed, 0x1e, 0x1e, 0xa4, 0x59, 0xec, 0x5e, 0x60, 0xd2, + 0x46, 0x49, 0x9d, 0x59, 0xef, 0xf6, 0x56, 0x15, 0x56, 0x56, + 0x6c, 0xd7, 0xc6, 0xab, 0x62, 0x0f, 0x52, 0x79, 0xd9, 0xd7, + 0x8f, 0xb2, 0x8e, 0xde, 0x8e, 0x8e, 0xf7, 0x86, 0xb8, 0x77, + 0x64, 0xab, 0x6e, 0x29, 0x15, 0x86, 0xaf, 0x8e, 0xc6, 0x26, + 0xc6, 0xc6, 0x3f, 0x08, 0x92, 0x82, 0x66, 0x76, 0x7a, 0x19, + 0x51, 0x08, 0x4f, 0x3a, 0xfd, 0x8b, 0xfd, 0xfd, 0x02, 0x24, + 0x44, 0x0c, 0x68, 0x20, 0x16, 0x89, 0x4e, 0x24, 0x6f, 0x06, + 0xb5, 0x73, 0xb5, 0xb5, 0xca, 0xaa, 0x6e, 0xf9, 0x6a, 0xfd, + 0x02, 0xb9, 0x0a, 0xaa, 0x0f, 0x42, 0x6d, 0xb8, 0x6d, 0x6d, + 0x51, 0xfb, 0x10, 0x25, 0x6c, 0x59, 0x3e, 0xe9, 0xc6, 0xfb, + 0x2f, 0x7e, 0x25, 0x40, 0x25, 0x25, 0x99, 0x75, 0x3a, 0xd0, + 0x6e, 0x84, 0x2a, 0xd9, 0x82, 0x75, 0x0c, 0xe9, 0x1b, 0x21, + 0x1b, 0x1b, 0x2b, 0xa3, 0x7f, 0xfa, 0x70, 0xf5, 0xe6, 0x0a, + 0xf8, 0xa3, 0x2c, 0xd5, 0x53, 0xd9, 0x53, 0x53, 0xe3, 0x2d, + 0x55, 0x0f, 0x72, 0x28, 0xf2, 0x3a, 0xbc, 0x2d, 0x4c, 0x91, + 0x8b, 0x12, 0x8b, 0x8b, 0x78, 0x7c, 0x2b, 0xd3, 0x74, 0x8c, + 0xce, 0x6a, 0x70, 0x7c, 0x6c, 0xad, 0xc3, 0xea, 0xc3, 0xc3, + 0xb0, 0xf2, 0x01, 0x26, 0x76, 0x51, 0xda, 0x5a, 0x34, 0xf2, + 0x8c, 0x19, 0xf8, 0x47, 0xf8, 0xf8, 0x8d, 0xde, 0xd7, 0xa8, + 0x78, 0x07, 0xb6, 0xca, 0x2b, 0xde, 0xac, 0x25, 0xb0, 0xbf, + 0xb0, 0xb0, 0x45, 0x50, 0xfd, 0x5d, 0x7a, 0xda, 0xa2, 0xfa, + 0x6f, 0x50, 0xcc, 0x61, 0x68, 0x74, 0x68, 0x68, 0xde, 0x01, + 0x83, 0x81, 0x7c, 0x7e, 0x9e, 0xaa, 0xa3, 0x01, 0xec, 0x5d, + 0x20, 0x8c, 0x20, 0x20, 0x16, 0x8f, 0xa9, 0x74, 0x7e, 0xa3, + 0x8a, 0x9a, 0xe7, 0x8f, 0xd7, 0xdb, 0x28, 0xaf, 0x28, 0x28, + 0xf2, 0xdc, 0x12, 0x69, 0x80, 0xfb, 0x49, 0x5d, 0xae, 0xdc, + 0xf7, 0xe7, 0x60, 0x57, 0x60, 0x60, 0x3a, 0x52, 0x38, 0x9c, + 0x82, 0x26, 0x5d, 0x6d, 0xea, 0x52, 0x97, 0xa3, 0xb8, 0x9c, + 0xb8, 0xb8, 0xa1, 0x03, 0x46, 0x40, 0x84, 0x82, 0x61, 0x3d, + 0x26, 0x03, 0xb7, 0x9f, 0xf0, 0x64, 0xf0, 0xf0, 0x69, 0x8d, + 0x6c, 0xb5, 0x86, 0x5f, 0x75, 0x0d, 0x62, 0x8d, 0x57, 0x2b, + 0xcb, 0xc9, 0xcb, 0xcb, 0x54, 0xa1, 0xba, 0x3b, 0x88, 0x09, + 0x19, 0x9d, 0x7d, 0xa1, 0x77, 0x17, 0x83, 0x31, 0x83, 0x83, + 0x9c, 0x2f, 0x90, 0xce, 0x8a, 0xd4, 0x0d, 0xad, 0x39, 0x2f, + 0x17, 0x53, 0x5b, 0xfa, 0x5b, 0x5b, 0x07, 0x7e, 0xee, 0x12, + 0x8c, 0x70, 0x31, 0xfd, 0xf5, 0x7e, 0x37, 0x6f, 0x13, 0x02, + 0x13, 0x13, 0xcf, 0xf0, 0xc4, 0xe7, 0x8e, 0xad, 0x25, 0xcd, + 0xb1, 0xf0, 0x14, 0xf8, 0x2d, 0x63, 0x2d, 0x2d, 0x7d, 0x26, + 0x81, 0xcd, 0x90, 0xdc, 0xe9, 0x1e, 0xcb, 0x26, 0x34, 0xc4, + 0x65, 0x9b, 0x65, 0x65, 0xb5, 0xa8, 0xab, 0x38, 0x92, 0x01, + 0xfd, 0x2e, 0x8f, 0xa8, 0x54, 0x80, 0xbd, 0x50, 0xbd, 0xbd, + 0x2e, 0xf9, 0xd5, 0xe4, 0x94, 0xa5, 0xc1, 0x7e, 0x43, 0xf9, + 0x74, 0xbc, 0xf5, 0xa8, 0xf5, 0xf5, 0xe6, 0x77, 0xff, 0x11, + 0x96, 0x78, 0xd5, 0x4e, 0x07, 0x77, 0x94, 0x08, 0xce, 0x05, + 0xce, 0xce, 0xdb, 0x5b, 0x29, 0x9f, 0x98, 0x2e, 0xb9, 0xde, + 0x18, 0x5b, 0xb4, 0x34, 0x86, 0xfd, 0x86, 0x86, 0x13, 0xd5, + 0x03, 0x6a, 0x9a, 0xf3, 0xad, 0xee, 0x5c, 0xd5, 0xd4, 0x70, + 0x5e, 0x36, 0x5e, 0x5e, 0x88, 0x84, 0x7d, 0xb6, 0x9c, 0x57, + 0x91, 0xbe, 0x90, 0x84, 0xf4, 0x4c, 0x16, 0xce, 0x16, 0x16, + 0x40, 0x0a, 0x57, 0x43, 0x9e, 0x8a, 0x85, 0x8e, 0xd4, 0x0a, + 0x92, 0x9d, 0x22, 0xf4, 0x22, 0x22, 0x2f, 0xeb, 0xf7, 0xe2, + 0xa0, 0xb5, 0xca, 0xdb, 0x64, 0xeb, 0xb2, 0xa1, 0x6a, 0x0c, + 0x6a, 0x6a, 0xe7, 0x65, 0xdd, 0x17, 0xa2, 0x68, 0xde, 0xeb, + 0x20, 0x65, 0xd2, 0xe5, 0xb2, 0xc7, 0xb2, 0xb2, 0x7c, 0x34, + 0xa3, 0xcb, 0xa4, 0xcc, 0xe2, 0xbb, 0xec, 0x34, 0xf2, 0xd9, + 0xfa, 0x3f, 0xfa, 0xfa, 0xb4, 0xba, 0x89, 0x3e, 0xa6, 0x11, + 0xf6, 0x8b, 0xa8, 0xba, 0x12, 0x6d, 0xc1, 0x92, 0xc1, 0xc1, + 0x89, 0x96, 0x5f, 0xb0, 0xa8, 0x47, 0x9a, 0x1b, 0xb7, 0x96, + 0x32, 0x51, 0x89, 0x6a, 0x89, 0x89, 0x41, 0x18, 0x75, 0x45, + 0xaa, 0x9a, 0x8e, 0x2b, 0xf3, 0x18, 0x52, 0x15, 0x51, 0xa1, + 0x51, 0x51, 0xda, 0x49, 0x0b, 0x99, 0xac, 0x3e, 0xb2, 0x7b, + 0x3f, 0x49, 0x72, 0x29, 0x19, 0x59, 0x19, 0x19, 0x12, 0xc7, + 0x21, 0x6c, 0xae, 0xe3, 0xa6, 0x4b, 0x7b, 0xc7, 0x51, 0xbe, + 0x27, 0x38, 0x27, 0x27, 0xa0, 0x11, 0x64, 0x46, 0xb0, 0x92, + 0x6a, 0x98, 0x01, 0x11, 0x71, 0x82, 0x6f, 0xc0, 0x6f, 0x6f, + 0x68, 0x9f, 0x4e, 0xb3, 0xb2, 0x4f, 0x7e, 0xa8, 0x45, 0x9f, + 0x11, 0xc6, 0xb7, 0x0b, 0xb7, 0xb7, 0xf3, 0xce, 0x30, 0x6f, + 0xb4, 0xeb, 0x42, 0xf8, 0x89, 0xce, 0x31, 0xfa, 0xff, 0xf3, + 0xff, 0xff, 0x3b, 0x40, 0x1a, 0x9a, 0xb6, 0x36, 0x56, 0xc8, + 0xcd, 0x40, 0xd1, 0x4e, 0xc4, 0x5e, 0xc4, 0xc4, 0x06, 0x6c, + 0xcc, 0x14, 0xb8, 0x60, 0x3a, 0x58, 0xd2, 0x6c, 0xf1, 0x72, + 0x8c, 0xa6, 0x8c, 0x8c, 0xce, 0xe2, 0xe6, 0xe1, 0xba, 0xbd, + 0x2e, 0x68, 0x96, 0xe2, 0x91, 0x36, 0x54, 0x6d, 0x54, 0x54, + 0x55, 0xb3, 0x98, 0x3d, 0xbc, 0x19, 0x12, 0x38, 0x5a, 0xb3, + 0xb1, 0x0a, 0x1c, 0x95, 0x1c, 0x1c, 0x9d, 0x3d, 0xb2, 0xc8, + 0xbe, 0xc4, 0x06, 0x08, 0x1e, 0x3d, 0x5d, 0x57, 0x3c, 0x19, + 0x3c, 0x3c, 0x8b, 0xb2, 0x1b, 0xbc, 0xc0, 0x67, 0x8c, 0x92, + 0xf9, 0xb2, 0x7d, 0x6b, 0x74, 0xe1, 0x74, 0x74, 0x43, 0x3c, + 0x31, 0x49, 0xc2, 0xba, 0x98, 0xa2, 0xbd, 0x3c, 0x1d, 0x2f, + 0xac, 0x2a, 0xac, 0xac, 0xd8, 0x6d, 0x4f, 0x95, 0xc4, 0x1e, + 0xa4, 0xf2, 0x71, 0x6d, 0x3d, 0x13, 0xe4, 0xd2, 0xe4, 0xe4, + 0x10, 0xe3, 0x65, 0x60, 0xc6, 0xc3, 0xb0, 0xc2, 0x35, 0xe3, + 0xdd, 0xa7, 0xdf, 0x7f, 0xdf, 0xdf, 0x2d, 0xcf, 0xb3, 0xee, + 0xc8, 0x95, 0xdc, 0x52, 0x2a, 0xcf, 0xfd, 0x9b, 0x97, 0x87, + 0x97, 0x97, 0xe5, 0x41, 0x99, 0x1b, 0xca, 0x48, 0xc8, 0x62, + 0x6e, 0x41, 0x9d, 0xdf, 0x4f, 0x4c, 0x4f, 0x4f, 0x7e, 0x10, + 0xe7, 0xc7, 0xcc, 0xec, 0xf4, 0x32, 0xa2, 0x10, 0xbd, 0xe3, + 0x07, 0xb4, 0x07, 0x07, 0xb6, 0x9e, 0xcd, 0x32, 0xce, 0x31, + 0xe0, 0x02, 0xe6, 0x9e, 0x9e, 0x74, 0x39, 0xd5, 0x39, 0x39, + 0x04, 0x48, 0x88, 0x18, 0xd0, 0x40, 0x2c, 0xd1, 0x9c, 0x48, + 0xbe, 0x48, 0x71, 0x2d, 0x71, 0x71, 0xcc, 0xc6, 0xa2, 0xed, + 0xd2, 0x9d, 0x38, 0xe1, 0xd8, 0xc6, 0xde, 0x0c, 0xa9, 0xe6, + 0xa9, 0xa9, 0x57, 0x97, 0xdc, 0x31, 0xd4, 0x39, 0x04, 0xb1, + 0x14, 0x97, 0xfe, 0x30, 0xe1, 0x1e, 0xe1, 0xe1, 0x9f, 0x19, + 0xf6, 0xc4, 0xd6, 0xe4, 0x10, 0x81, 0x50, 0x19, 0x1e, 0x84, + 0xda, 0xb3, 0xda, 0xda, 0xa2, 0x35, 0x20, 0x4a, 0xd8, 0xb2, + 0x7c, 0x11, 0x4f, 0x35, 0x3e, 0xb8, 0x92, 0x4b, 0x92, 0x92, + 0x6a, 0xbb, 0x0a, 0xbf, 0xda, 0x6f, 0x68, 0x21, 0x0b, 0xbb, + 0x5e, 0xfc, 0x4a, 0x80, 0x4a, 0x4a, 0xf1, 0xea, 0x74, 0x63, + 0xdc, 0xcb, 0x54, 0x71, 0xc7, 0xea, 0x7e, 0xc0, 0x02, 0x78, + 0x02, 0x02, 0x39, 0x64, 0x5e, 0x96, 0xde, 0x16, 0x40, 0x41, + 0x83, 0x64, 0x18, 0x11, 0x36, 0x42, 0x36, 0x36, 0x56, 0x85, + 0xfe, 0x37, 0xe0, 0x29, 0x0f, 0x14, 0x33, 0x85, 0x38, 0x2d, + 0x7e, 0xba, 0x7e, 0x7e, 0x9e, 0x0b, 0xd4, 0xc2, 0xe2, 0xf4, + 0x1b, 0x24, 0x77, 0x0b, 0x58, 0x69, 0xa6, 0x71, 0xa6, 0xa6, + 0x05, 0x5a, 0xaa, 0x1e, 0xe4, 0x50, 0x27, 0x74, 0xbb, 0x5a, + 0x78, 0x55, 0xee, 0x89, 0xee, 0xee, 0xcd, 0xd4, 0x80, 0xeb, + 0xe6, 0x8d, 0x33, 0x44, 0xff, 0xd4, 0x98, 0xe1, 0xd5, 0x24, + 0xd5, 0xd5, 0xf0, 0xf8, 0x56, 0x65, 0xe8, 0xdb, 0x5f, 0xd4, + 0xe0, 0xf8, 0xb8, 0xdd, 0x9d, 0xdc, 0x9d, 0x9d, 0x38, 0x76, + 0x7c, 0x90, 0xea, 0x06, 0x4b, 0xe4, 0xa4, 0x76, 0xd8, 0x99, + 0x45, 0x17, 0x45, 0x45, 0xa3, 0x27, 0x02, 0x4c, 0xec, 0xa2, + 0x77, 0xb4, 0x68, 0x27, 0xf8, 0xa5, 0x0d, 0xef, 0x0d, 0x0d, + 0x6b, 0xa9, 0x28, 0xb9, 0xee, 0x7f, 0x63, 0x84, 0x2c, 0xa9, + 0xdb, 0x32, 0x33, 0x8e, 0x33, 0x33, 0xd9, 0x7f, 0x6d, 0x93, + 0xf0, 0x0e, 0xaf, 0x57, 0x56, 0x7f, 0xfb, 0x0e, 0x7b, 0x76, + 0x7b, 0x7b, 0x11, 0xf1, 0x47, 0x66, 0xf2, 0xd3, 0xbb, 0x67, + 0x12, 0xf1, 0x9b, 0x4a, 0xa3, 0xbd, 0xa3, 0xa3, 0x8a, 0xa0, + 0x39, 0xba, 0xf4, 0x77, 0x87, 0x37, 0xde, 0xa0, 0xbb, 0x76, + 0xeb, 0x45, 0xeb, 0xeb, 0x42, 0x2e, 0x13, 0x4f, 0xf6, 0xaa, + 0x93, 0x07, 0x9a, 0x2e, 0x5b, 0xc2, 0xd0, 0xe8, 0xd0, 0xd0, + 0x7f, 0x02, 0xc5, 0xc1, 0xf8, 0xfc, 0xff, 0x97, 0x85, 0x02, + 0x7b, 0xfe, 0x98, 0x10, 0x98, 0x98, 0xb7, 0x8c, 0xef, 0x34, + 0xfa, 0x21, 0xeb, 0xa7, 0xc1, 0x8c, 0x1b, 0xba, 0x40, 0xdb, + 0x40, 0x40, 0x2c, 0xdd, 0x91, 0xe8, 0xfc, 0x85, 0xd7, 0xf7, + 0x0d, 0xdd, 0x3b, 0x86, 0x08, 0x23, 0x08, 0x08, 0xe4, 0x53, + 0xbb, 0x1d, 0xfe, 0x58, 0xc3, 0xc7, 0x49, 0x53, 0x6d, 0x75, + 0x50, 0x9d, 0x50, 0x50, 0x27, 0x7b, 0x24, 0xd2, 0xc3, 0x35, + 0x92, 0xba, 0x9f, 0x7b, 0x4d, 0x49, 0x18, 0x65, 0x18, 0x18, + 0xef, 0xf5, 0x0e, 0x27, 0xc1, 0xe8, 0x86, 0x8a, 0xdb, 0xf5, + 0x2d, 0x0d, 0xc0, 0xae, 0xc0, 0xc0, 0x74, 0xa4, 0x70, 0xfb, + 0xc7, 0x4c, 0xba, 0xda, 0x17, 0xa4, 0x0d, 0x31, 0x88, 0x56, + 0x88, 0x88, 0xbc, 0x2a, 0x5a, 0x0e, 0xc5, 0x91, 0xae, 0xea, + 0x53, 0x2a, 0xed, 0x85, 0xb3, 0xfb, 0xb3, 0xb3, 0x81, 0x06, + 0x8c, 0x80, 0xcb, 0xc7, 0xc2, 0x7a, 0x4c, 0x06, 0xcd, 0xb9, + 0xfb, 0x03, 0xfb, 0xfb, 0x49, 0x88, 0xa6, 0x75, 0xc9, 0x1a, + 0xd6, 0x4a, 0x08, 0x88, 0xad, 0xfd, 0x23, 0xc8, 0x23, 0x23, + 0xd2, 0xd9, 0xd8, 0xa9, 0xcf, 0xbe, 0xea, 0x1a, 0xc4, 0xd9, + 0x8d, 0xc1, 0x6b, 0x30, 0x6b, 0x6b, 0x1a, 0x57, 0xf2, 0x5c, + 0xcd, 0x63, 0xfe, 0x2a, 0x80, 0x57, 0xae, 0x56, 0x55, 0x51, + 0x55, 0x55, 0xa8, 0x81, 0xb7, 0x76, 0xd3, 0x12, 0x32, 0xf9, + 0xfa, 0x81, 0x8e, 0x6a, 0x1d, 0xa9, 0x1d, 0x1d, 0x60, 0x0f, + 0x9d, 0x83, 0xd1, 0xcf, 0x26, 0xc9, 0xbe, 0x0f, 0xee, 0x2e, + 0xc5, 0x62, 0xc5, 0xc5, 0xfb, 0x5e, 0xe3, 0x5f, 0xd7, 0x6b, + 0x1a, 0x99, 0x72, 0x5e, 0xce, 0x12, 0x8d, 0x9a, 0x8d, 0x8d, + 0x33, 0xd0, 0xc9, 0xaa, 0xd5, 0xb6, 0x0e, 0xa9, 0x36, 0xd0, + 0x2e, 0xa6, 0xb6, 0x37, 0xb6, 0xb6, 0x0e, 0xfc, 0x1f, 0x24, + 0xdb, 0xe0, 0x62, 0x39, 0x29, 0xfc, 0x0e, 0x9a, 0xfe, 0xcf, + 0xfe, 0xfe, 0xc6, 0x72, 0x35, 0xd1, 0xd9, 0x3d, 0x76, 0x09, + 0x6d, 0x72, 0x6e, 0xde, 0x26, 0x04, 0x26, 0x26, 0x5d, 0x23, + 0x4b, 0x0d, 0xdf, 0x99, 0x4a, 0x59, 0xa1, 0x23, 0x4e, 0xe2, + 0x6e, 0xfc, 0x6e, 0x6e, 0x95, 0xad, 0x61, 0xf8, 0xdd, 0x44, + 0x5e, 0x69, 0xe5, 0xad, 0x28, 0x33, 0x5a, 0xc6, 0x5a, 0x5a, + 0xfa, 0x4c, 0xc1, 0x59, 0xe3, 0x7b, 0x11, 0x3c, 0x55, 0x4c, + 0x08, 0x0f, 0x12, 0x3e, 0x12, 0x12, 0x32, 0xc2, 0xeb, 0xac, + 0xe1, 0xa6, 0x05, 0x0c, 0x11, 0xc2, 0x68, 0x4b, 0xca, 0xf5, + 0xca, 0xca, 0xa9, 0x93, 0x95, 0x70, 0xe7, 0x02, 0x39, 0x5c, + 0xdd, 0x93, 0x48, 0x77, 0x82, 0x0d, 0x82, 0x82, 0x61, 0x1d, + 0xbf, 0x85, 0xe5, 0xdf, 0x2d, 0x6c, 0x99, 0x1d, 0xa8, 0xc3, + 0xb9, 0xa0, 0xb9, 0xb9, 0x5c, 0x31, 0x69, 0x0b, 0xeb, 0x89, + 0x41, 0xfc, 0x86, 0x31, 0x88, 0xff, 0xf1, 0x58, 0xf1, 0xf1, + 0x94, 0xbf, 0x43, 0xfe, 0xe9, 0x54, 0x55, 0xcc, 0xc2, 0xbf, + 0xe8, 0xbb, 0x29, 0x93, 0x29, 0x29, 0x0f, 0xee, 0x3d, 0x22, + 0xef, 0xf0, 0x69, 0x9c, 0x0e, 0xee, 0xc8, 0x87, 0x61, 0x6b, + 0x61, 0x61, 0xc7, 0x60, 0x17, 0xd7, 0xed, 0x2d, 0x7d, 0xac, + 0x4a, 0x60, 0xeb, 0x10, 0x5f, 0x0a, 0x5f, 0x5f, 0x75, 0xb6, + 0x52, 0xfd, 0xf3, 0x5c, 0xb1, 0x7f, 0x30, 0xb6, 0xcb, 0x2c, + 0x17, 0xf2, 0x17, 0x17, 0xbd, 0x38, 0x78, 0x08, 0xf1, 0x81, + 0xa5, 0x4f, 0x74, 0x38, 0xab, 0x68, 0xcf, 0x39, 0xcf, 0xcf, + 0x26, 0x69, 0x06, 0xd4, 0xf7, 0x25, 0x99, 0x1f, 0xb8, 0x69, + 0x8b, 0x54, 0x87, 0xc1, 0x87, 0x87, 0xee, 0xe7, 0x2c, 0x21, + 0xf5, 0xf8, 0x8d, 0x2f, 0xfc, 0xe7, 0x6b, 0xe0, 0xbc, 0x6c, + 0xbc, 0xbc, 0xd3, 0xcb, 0xfa, 0xaf, 0xfb, 0xae, 0xe1, 0xbf, + 0xe3, 0xcb, 0x4b, 0xdc, 0xf4, 0x94, 0xf4, 0xf4, 0x1b, 0x45, + 0xd0, 0x5a, 0xf9, 0x73, 0xf5, 0x8f, 0xa7, 0x45, 0x2b, 0x98, + 0x2c, 0x5f, 0x2c, 0x2c, 0x80, 0x14, 0xae, 0x86, 0xff, 0xd7, + 0xc9, 0xdf, 0x6b, 0x14, 0x0b, 0xa4, 0x64, 0xa7, 0x64, 0x64, + 0x48, 0x9a, 0x84, 0x73, 0xfd, 0x0a, 0xdd, 0xef, 0x2f, 0x9a, + 0xe7, 0xf9, 0x44, 0x2b, 0x44, 0x44, 0x5e, 0x15, 0x2d, 0x07, + 0x83, 0xa9, 0x57, 0x75, 0xc8, 0x15, 0xc7, 0xc5, 0x0c, 0xd3, + 0x0c, 0x0c, 0x96, 0x9b, 0x07, 0xf2, 0x81, 0x74, 0x43, 0x45, + 0x8c, 0x9b, 0xa7, 0x81, 0xd4, 0x18, 0xd4, 0xd4, 0x0d, 0xca, + 0x79, 0x2e, 0x87, 0xd0, 0x7f, 0x15, 0x40, 0xca, 0x87, 0xbd, + 0x9c, 0xe0, 0x9c, 0x9c, 0xc5, 0x44, 0x53, 0xdb, 0x85, 0x0d, + 0x6b, 0x25, 0x04, 0x44, 0x67, 0x09, 0xa7, 0x4d, 0xa7, 0xa7, + 0xf8, 0x68, 0x85, 0x55, 0x8b, 0x5b, 0x07, 0xb5, 0x1b, 0x68, + 0x47, 0x35, 0xef, 0xb5, 0xef, 0xef, 0x30, 0xe6, 0xaf, 0xa0, + 0x89, 0x86, 0x13, 0x85, 0x5f, 0xe6, 0x27, 0x71, 0x37, 0x7e, + 0x37, 0x37, 0xab, 0xb7, 0xd1, 0x7c, 0x8f, 0x22, 0x2f, 0xd5, + 0x93, 0xb7, 0x07, 0x4d, 0x7f, 0x86, 0x7f, 0x7f, 0x63, 0x39, + 0xfb, 0x89, 0x8d, 0xff, 0x3b, 0xe5, 0xd7, 0x39, 0x24, 0xda, + 0x41, 0xe7, 0x41, 0x41, 0xd1, 0xef, 0xbe, 0xa3, 0x93, 0x8e, + 0xf7, 0x36, 0xad, 0xef, 0x04, 0xe6, 0x09, 0x1f, 0x09, 0x09, + 0x19, 0x61, 0x94, 0x56, 0x91, 0x53, 0xe3, 0x06, 0xe9, 0x61, + 0x64, 0xa2, 0xd1, 0xd4, 0xd1, 0xd1, 0x82, 0x30, 0xea, 0x8a, + 0x97, 0xf7, 0xdf, 0x56, 0x25, 0x30, 0x44, 0x9e, 0x99, 0x2c, + 0x99, 0x99, 0x4a, 0xbe, 0xc0, 0x7f, 0x95, 0x2a, 0xcb, 0x66, + 0x61, 0xbe, 0xa4, 0x2a, 0xa2, 0x81, 0xa2, 0xa2, 0x77, 0x92, + 0x16, 0xf1, 0x9b, 0x7c, 0xa7, 0xf6, 0x7e, 0x92, 0x84, 0x16, + 0xea, 0x79, 0xea, 0xea, 0xbf, 0x1c, 0x3c, 0x04, 0x99, 0xa1, + 0xb3, 0xc6, 0x3a, 0x1c, 0xe4, 0x52, 0x32, 0xb2, 0x32, 0x32, + 0x24, 0x4d, 0x42, 0xd8, 0x9f, 0x05, 0x8f, 0x96, 0xf6, 0x4d, + 0xc4, 0x6e, 0x7a, 0x4a, 0x7a, 0x7a, 0xec, 0xc3, 0x68, 0x2d, + 0x9d, 0xd8, 0x9b, 0xa6, 0xb2, 0xc3, 0xa2, 0xbf, 0x4e, 0x70, + 0x4e, 0x4e, 0x83, 0x22, 0xc8, 0x8c, 0xa3, 0xe7, 0xd4, 0xf3, + 0x02, 0x22, 0x82, 0x83, 0x06, 0x88, 0x06, 0x06, 0x4b, 0xac, + 0xe2, 0x79, 0xa1, 0x3a, 0xc0, 0xc3, 0x46, 0xac, 0xe2, 0xc7, + 0xde, 0x43, 0xde, 0xde, 0xd0, 0xfd, 0x9c, 0xa5, 0xa7, 0x9e, + 0xfc, 0x93, 0x8a, 0xfd, 0xc2, 0xfb, 0x96, 0xbb, 0x96, 0x96, + 0x18, 0x73, 0xb6, 0x50, 0xa5, 0x43, 0xe8, 0xa3, 0xce, 0x73, + 0x22, 0x4f, 0xad, 0x16, 0xad, 0xad, 0x25, 0x5f, 0x60, 0xde, + 0xab, 0x15, 0x84, 0x33, 0xd1, 0x5f, 0x02, 0x73, 0xe5, 0xee, + 0xe5, 0xe5, 0xed, 0xd1, 0x4a, 0x2b, 0xa9, 0xc8, 0x90, 0x03, + 0x95, 0xd1, 0x62, 0x37, 0x3d, 0x25, 0x3d, 0x3d, 0x76, 0x80, + 0x34, 0xf7, 0xaf, 0x6c, 0xac, 0x53, 0x59, 0x80, 0x42, 0x0b, + 0x75, 0xdd, 0x75, 0x75, 0xbe, 0x0e, 0x1e, 0x02, 0xad, 0xb1, + 0xb8, 0x63, 0x1d, 0x0e, 0x61, 0x9c, 0x4b, 0xbc, 0x4b, 0x4b, + 0x0c, 0xd8, 0x5b, 0x28, 0xb3, 0xc0, 0x74, 0xb0, 0x67, 0xd8, + 0x41, 0xa0, 0x03, 0x44, 0x03, 0x03, 0xc4, 0x56, 0x71, 0xdd, + 0xb1, 0x1d, 0x60, 0x80, 0x23, 0x56, 0x21, 0xe4, 0xdb, 0x8f, + 0xdb, 0xdb, 0x5f, 0x07, 0x0f, 0x01, 0xb7, 0xb9, 0x5c, 0xd0, + 0xef, 0x07, 0x01, 0xd8, 0x93, 0x77, 0x93, 0x93, 0x97, 0x89, + 0x25, 0xf4, 0xb5, 0x64, 0x48, 0xe0, 0xab, 0x89, 0xe1, 0x6c, + 0xa8, 0xda, 0xa8, 0xa8, 0xaa, 0xa5, 0xf3, 0x7a, 0xbb, 0x32, + 0x24, 0x70, 0xb4, 0xa5, 0xc1, 0x50, 0xe0, 0x22, 0xe0, 0xe0, + 0x62, 0x2b, 0xd9, 0x8f, 0xb9, 0xef, 0x30, 0x40, 0xf0, 0x2b, + 0xa1, 0x14, 0x38, 0xe9, 0x38, 0x38, 0xf9, 0x7a, 0xa7, 0x53, + 0xbf, 0x4b, 0x0c, 0x10, 0x3c, 0x7a, 0x81, 0x28, 0x70, 0x11, + 0x70, 0x70, 0x31, 0xf4, 0x8d, 0xa6, 0xbd, 0x96, 0x18, 0x20, + 0x78, 0xf4, 0xba, 0xae, 0x78, 0x32, 0x78, 0x78, 0xd5, 0xa7, + 0x36, 0xbb, 0x43, 0xce, 0xdb, 0xe7, 0x31, 0xa7, 0x9a, 0x92, + 0x30, 0xca, 0x30, 0x30, 0x1d, 0x29, 0x1c, 0x4e, 0x41, 0x13, + 0xcf, 0xd7, 0x75, 0x29, 0xfa, 0xd6, 0xe8, 0x01, 0xe8, 0xe8, + 0x86, 0x78, 0x62, 0x92, 0x47, 0xb7, 0xf3, 0x87, 0xb9, 0x78, + 0xda, 0xea, 0xa0, 0xf9, 0xa0, 0xa0, 0x4e, 0xf6, 0x48, 0x67, + 0x45, 0x6a, 0xe7, 0xb7, 0xfd, 0xf6, 0x3a, 0x5e, 0x9b, 0x54, + 0x9b, 0x9b, 0x73, 0xda, 0x9e, 0xe9, 0x4b, 0x3c, 0x8b, 0x27, + 0xe2, 0xda, 0x1a, 0x62, 0xd3, 0xac, 0xd3, 0xd3, 0xbb, 0x54, + 0xb4, 0x1c, 0x49, 0xe1, 0x9f, 0x17, 0xa6, 0x54, 0x7a, 0x26, + 0x0b, 0x67, 0x0b, 0x0b, 0x20, 0x05, 0xca, 0xc0, 0x4f, 0x45, + 0xa3, 0x47, 0x6a, 0x05, 0x5a, 0x1a, 0x43, 0x9f, 0x43, 0x43, + 0xe8, 0x8b, 0xe0, 0x35, 0x4d, 0x98, 0xb7, 0x77, 0x2e, 0x8b, + 0x79, 0x8d, 0x7d, 0xfe, 0x7d, 0x7d, 0x5a, 0x5d, 0xa5, 0x1f, + 0x53, 0xe9, 0x7b, 0xa4, 0x54, 0x5d, 0x59, 0xb1, 0x35, 0x06, + 0x35, 0x35, 0x92, 0xd3, 0x8f, 0xea, 0x51, 0x34, 0x6f, 0x94, + 0x10, 0xd3, 0x39, 0xf5, 0xed, 0xcd, 0xed, 0xed, 0x09, 0x82, + 0xf1, 0x36, 0x57, 0x90, 0x53, 0xc4, 0xdc, 0x82, 0x19, 0xc9, + 0xa5, 0x35, 0xa5, 0xa5, 0xc1, 0x0c, 0xdb, 0xc3, 0x55, 0x4d, + 0x47, 0xf4, 0x98, 0x0c, 0xf9, 0x7d, 0x9e, 0x98, 0x9e, 0x9e, + 0xfc, 0x20, 0x0d, 0x4d, 0x5b, 0x1b, 0x2b, 0x64, 0x87, 0x20, + 0xd9, 0x41, 0xd6, 0x60, 0xd6, 0xd6, 0x34, 0xae, 0x27, 0xb8, + 0x59, 0xc6, 0x3f, 0x54, 0xc3, 0xae, 0xb9, 0x05, 0x0e, 0xab, + 0x0e, 0x0e, 0xaf, 0xff, 0x59, 0x64, 0x5f, 0x62, 0x03, 0x04, + 0x0f, 0xff, 0x99, 0x39, 0x46, 0x53, 0x46, 0x46, 0x67, 0x71, + 0x73, 0x91, 0x5d, 0xbf, 0x17, 0x34, 0x4b, 0x71, 0xff, 0xe8, + 0x72, 0x69, 0x72, 0x72, 0x08, 0x90, 0xd3, 0x30, 0x63, 0x80, + 0x58, 0x61, 0xfb, 0x90, 0xdf, 0xd4, 0x3a, 0x91, 0x3a, 0x3a, + 0xc0, 0x1e, 0xf9, 0xc5, 0x61, 0x5d, 0x4c, 0x51, 0xbf, 0x1e, + 0xbf, 0x90, 0xe2, 0x5a, 0xe2, 0xe2, 0x5b, 0x4f, 0x87, 0x19, + 0x67, 0xf9, 0x70, 0x01, 0x73, 0x4f, 0x9f, 0xac, 0xaa, 0xa2, + 0xaa, 0xaa, 0x93, 0xc1, 0xad, 0xec, 0x65, 0x24, 0x64, 0x31, + 0x37, 0xc1, 0x7f, 0x18, 0x91, 0x0f, 0x91, 0x91, 0xae, 0xed, + 0x7b, 0x62, 0x6b, 0x72, 0x08, 0xa1, 0x28, 0xed, 0x5f, 0x24, + 0xd9, 0xf7, 0xd9, 0xd9, 0x66, 0x63, 0x51, 0x97, 0x69, 0xaf, + 0x1c, 0x91, 0x6c, 0x63, 0x3f, 0x60, 0x01, 0x3c, 0x01, 0x01, + 0xfd, 0x32, 0x2f, 0x4b, 0x6f, 0x0b, 0x20, 0xc1, 0xa0, 0x32, + 0x1f, 0x5c, 0x49, 0xc4, 0x49, 0x49, 0x35, 0xbc, 0x05, 0xbe, + 0x6d, 0xd6, 0x34, 0xf1, 0xe4, 0xbc, 0x3c, 0xcb, 0x77, 0xa5, + 0x77, 0x77, 0x87, 0x6a, 0x40, 0x94, 0x73, 0xa7, 0xf8, 0x22, + 0x9e, 0x6a, 0x1c, 0xf7, 0x3f, 0x5d, 0x3f, 0x3f, 0x4f, 0xe4, + 0x6a, 0x61, 0x71, 0x7a, 0xec, 0x12, 0xda, 0xe4, 0x7c, 0xb3, + 0xe7, 0x96, 0xe7, 0xe7, 0xd4, 0xb5, 0x14, 0xbd, 0x77, 0xde, + 0xd0, 0x42, 0x16, 0xb5, 0x5c, 0x8f, 0xaf, 0x6e, 0xaf, 0xaf, + 0x1c, 0x3b, 0x3e, 0x48, 0x75, 0x03, 0xc4, 0x72, 0x52, 0x3b, + 0xbc, 0x3b, 0x94, 0xc3, 0x94, 0x94, 0x21, 0x17, 0xe8, 0xc6, + 0x7b, 0x55, 0xa8, 0xe2, 0x4d, 0x17, 0x9c, 0x07, 0xdc, 0x3b, + 0xdc, 0xdc, 0xe9, 0x99, 0xc2, 0x33, 0x79, 0x88, 0xbc, 0xd2, + 0x09, 0x99, 0xfc, 0x43, 0x04, 0xf0, 0x04, 0x04, 0x72, 0xc8, + 0xbc, 0xef, 0x7f, 0x2c, 0x80, 0x82, 0xc5, 0xc8, 0xdc, 0x7f, + 0x4c, 0x08, 0x4c, 0x4c, 0xba, 0x46, 0x96, 0x1a, 0x7d, 0xf1, + 0x94, 0xb2, 0x81, 0x46, 0x30, 0x22, 0x6c, 0x84, 0x6c, 0x6c, + 0xac, 0xc9, 0x3f, 0x6e, 0x03, 0x52, 0x1e, 0x28, 0x66, 0xc9, + 0x10, 0x1e, 0x24, 0x7c, 0x24, 0x24, 0x64, 0x47, 0x15, 0x9b, + 0x01, 0x8f, 0x0a, 0x18, 0x22, 0x47, 0x70, 0x5a, 0xfc, 0xb7, + 0xfc, 0xfc, 0xff, 0x16, 0x6b, 0x47, 0x07, 0x2b, 0x36, 0x48, + 0xee, 0x16, 0x50, 0x66, 0xb4, 0x4f, 0xb4, 0xb4, 0x37, 0x98, + 0x41, 0xb2, 0x05, 0xf6, 0x22, 0x78, 0xaa, 0x98, 0xb0, 0xd2, + 0x8f, 0xe2, 0x8f, 0x8f, 0x0a, 0xb4, 0x97, 0x3c, 0x0b, 0xa0, + 0x4e, 0xe8, 0xb5, 0xb4, 0x90, 0xee, 0xc7, 0x1a, 0xc7, 0xc7, + 0xc2, 0x3a, 0xbd, 0xc9, 0x09, 0x7d, 0x5a, 0xd8, 0xf1, 0x3a, + 0xf0, 0xaa, 0x1f, 0xd1, 0x1f, 0x1f, 0x59, 0x6b, 0xc3, 0x15, + 0x0f, 0xd9, 0x66, 0x88, 0x3d, 0x6b, 0xd0, 0x96, 0x57, 0x29, + 0x57, 0x57, 0x91, 0xe5, 0xe9, 0xe0, 0x0d, 0x04, 0x72, 0xb8, + 0x79, 0xe5, 0xf3, 0x01, 0x69, 0x48, 0x69, 0x69, 0x23, 0x33, + 0xac, 0xca, 0x13, 0x75, 0xbe, 0x6b, 0x03, 0x33, 0xd3, 0x3d, + 0x21, 0xb0, 0x21, 0x21, 0xeb, 0xbd, 0x86, 0x3f, 0x11, 0xa8, + 0xaa, 0x5b, 0x47, 0xbd, 0xb3, 0x79, 0xf9, 0x7b, 0xf9, 0xf9, + 0x70, 0xec, 0xf8, 0xe3, 0x17, 0x0c, 0x96, 0x0b, 0x8b, 0xec, + 0x93, 0x45, 0xb1, 0x83, 0xb1, 0xb1, 0xb8, 0x62, 0xd2, 0x16, + 0x15, 0xd1, 0x82, 0x3b, 0xcf, 0x62, 0x73, 0xf1, 0x8a, 0x2e, + 0x8a, 0x8a, 0x85, 0x4e, 0x04, 0x98, 0x1b, 0x87, 0xee, 0xab, + 0xd0, 0x4e, 0x53, 0xcd, 0xc2, 0xd6, 0xc2, 0xc2, 0x4d, 0xc0, + 0x2e, 0x6d, 0x19, 0x5a, 0xfa, 0x9b, 0x94, 0xc0, 0x33, 0x89, + 0x1a, 0x1d, 0x1a, 0x1a, 0xd6, 0x91, 0x50, 0xb1, 0x1f, 0xfe, + 0xc6, 0xcb, 0x58, 0x91, 0x13, 0xb5, 0x52, 0xe5, 0x52, 0x52, + 0x1e, 0x1f, 0x7a, 0x44, 0x1d, 0x23, 0xd2, 0xfb, 0x1c, 0x1f, + 0x75, 0x64, 0x66, 0xdf, 0x66, 0x66, 0x71, 0xfe, 0xda, 0xe5, + 0x23, 0x1c, 0x9d, 0xae, 0xac, 0xfe, 0x55, 0x58, 0x2e, 0x27, + 0x2e, 0x2e, 0xb9, 0x70, 0xf0, 0x10, 0x21, 0xc1, 0x89, 0x9e, + 0xe8, 0x70, 0x35, 0x1c, 0xf6, 0xec, 0xf6, 0xf6, 0x22, 0x21, + 0x8e, 0xcc, 0x27, 0x65, 0xb5, 0xce, 0x24, 0x21, 0x15, 0x20, + 0xbe, 0x14, 0xbe, 0xbe, 0xea, 0xaf, 0xa4, 0x39, 0x25, 0xb8, + 0xa1, 0xfe, 0x60, 0xaf, 0xf5, 0x94, 0x85, 0xb9, 0x85, 0x85, + 0xd7, 0x83, 0x72, 0xb7, 0x2b, 0xee, 0xcd, 0x6e, 0x7f, 0x83, + 0xd5, 0xa8, 0xcd, 0x41, 0xcd, 0xcd, 0x1f, 0x0d, 0x58, 0x42, + 0x29, 0x33, 0xd9, 0x5e, 0x3b, 0x0d, 0xb5, 0xec, 0x15, 0x8a, + 0x15, 0x15, 0x84, 0x5c, 0x26, 0x9e, 0x2f, 0x97, 0xe5, 0x0e, + 0xf7, 0x5c, 0x95, 0xd0, 0x5d, 0x72, 0x5d, 0x5d, 0x4c, 0xd2, + 0x0c, 0x6b, 0x2d, 0x4a, 0xf1, 0x3e, 0xb3, 0xd2, 0xb6, 0x47, + 0x63, 0x13, 0x63, 0x63, 0xfe, 0x04, 0x49, 0x41, 0x33, 0x3b, + 0x3d, 0xed, 0xc9, 0x04, 0x96, 0x7b, 0x2b, 0xeb, 0x2b, 0x2b, + 0x36, 0x8a, 0x63, 0xb4, 0x31, 0xe6, 0x29, 0xdd, 0x8d, 0x8a, + 0xf6, 0x3f, 0xf3, 0x20, 0xf3, 0xf3, 0xad, 0xdb, 0x1d, 0x68, + 0x37, 0x42, 0x15, 0x8d, 0x41, 0xdb, 0xd6, 0x03, 0xbb, 0xd8, + 0xbb, 0xbb, 0x65, 0x55, 0x37, 0x9d, 0x35, 0x9f, 0x01, 0xbd, + 0x05, 0x55, 0x36, 0xb7, 0x80, 0x75, 0x80, 0x80, 0x58, 0x79, + 0xe1, 0x13, 0x3b, 0xc9, 0x6d, 0x2d, 0x1a, 0x79, 0x16, 0x8b, + 0xc8, 0x8d, 0xc8, 0xc8, 0x90, 0xf7, 0xcb, 0xe6, 0x39, 0x14, + 0x79, 0x1d, 0x5e, 0xf7, 0x76, 0xcf, 0x10, 0x46, 0x10, 0x10, + 0x0b, 0xa6, 0xb5, 0x3a, 0x3f, 0xb0, 0x45, 0x4d, 0x92, 0xa6, + 0x56, 0xf3, 0x58, 0xbe, 0x58, 0x58, 0xc3, 0x28, 0x9f, 0xcf, + 0x3d, 0x6d, 0x51, 0x7d, 0xd6, 0x28, + }, + { + /* 3 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x44, 0xdf, 0x52, + 0x7f, 0xc6, 0x98, 0x60, 0xd4, 0x52, 0x0e, 0x65, 0x07, 0x9f, + 0x86, 0xea, 0xc9, 0x88, 0x7d, 0xa4, 0xfe, 0x4f, 0xf3, 0xc0, + 0x6b, 0xa4, 0x1c, 0xca, 0x0e, 0xfd, 0xcf, 0x17, 0x4c, 0xcc, + 0xa2, 0xf6, 0x81, 0x89, 0x6b, 0xa0, 0xbf, 0xf6, 0x12, 0xaf, + 0x09, 0x62, 0x49, 0xfd, 0x51, 0xd3, 0xfa, 0x8b, 0x3f, 0x9e, + 0x25, 0x43, 0xd6, 0x8b, 0x38, 0x57, 0x1c, 0x39, 0x5d, 0x2e, + 0xd4, 0x97, 0x25, 0xd9, 0x40, 0x58, 0xbd, 0x23, 0x02, 0xd9, + 0x36, 0x32, 0x1b, 0xa6, 0xdb, 0xc4, 0x98, 0x5b, 0x87, 0x2f, + 0xc1, 0xd1, 0xd6, 0x83, 0xbd, 0x2f, 0x24, 0x9d, 0x12, 0xc4, + 0x92, 0x39, 0x1d, 0x1f, 0x58, 0x7d, 0xbe, 0x17, 0x4e, 0xe3, + 0x69, 0x7d, 0x2a, 0xf8, 0x15, 0x5b, 0x14, 0xd3, 0xa2, 0x65, + 0x37, 0xd5, 0x7e, 0xff, 0x4a, 0x86, 0x6f, 0xd5, 0x70, 0xae, + 0x38, 0x72, 0xba, 0x5c, 0x27, 0x21, 0xe8, 0x87, 0x01, 0x39, + 0xd2, 0xe6, 0xbb, 0x87, 0x7e, 0xcb, 0x3f, 0xed, 0x3c, 0xb6, + 0x6b, 0xed, 0x4a, 0x71, 0x80, 0xb0, 0xb9, 0x46, 0x04, 0x71, + 0x6c, 0x64, 0x36, 0x8f, 0x75, 0x4b, 0xee, 0xa9, 0x95, 0x23, + 0xff, 0x76, 0x21, 0x26, 0xd0, 0x23, 0x62, 0x01, 0x31, 0x10, + 0xf3, 0xa1, 0xf3, 0xb6, 0xcd, 0x5e, 0x41, 0x61, 0x6f, 0xc5, + 0xb9, 0x5e, 0x48, 0xf9, 0x24, 0x4b, 0xe7, 0x72, 0x76, 0xf2, + 0x12, 0x0c, 0x3e, 0xa7, 0xf7, 0xa5, 0x6d, 0x0c, 0x46, 0x9c, + 0x23, 0xd4, 0x61, 0x98, 0x3a, 0x3e, 0xb0, 0xfa, 0xbf, 0x2e, + 0x9c, 0x05, 0xd2, 0xfa, 0x54, 0x33, 0x2a, 0xb6, 0x28, 0x65, + 0xbf, 0x7a, 0x6f, 0xa8, 0xc0, 0xe8, 0x04, 0x65, 0x06, 0xa8, + 0x5a, 0x56, 0x2d, 0x29, 0xae, 0x8f, 0x87, 0xca, 0x6e, 0x69, + 0xfc, 0x3d, 0x94, 0xcf, 0xde, 0x69, 0xe0, 0x9f, 0x70, 0xe4, + 0xb7, 0xb8, 0x02, 0x8e, 0xb1, 0x3b, 0x83, 0xfb, 0x0c, 0xaf, + 0x0a, 0x3b, 0xee, 0xfa, 0x77, 0x7b, 0x31, 0x52, 0x4e, 0x42, + 0x13, 0xcd, 0x02, 0x72, 0x67, 0x0f, 0xb5, 0xcd, 0xfc, 0x55, + 0x7e, 0x19, 0x78, 0xaf, 0xcb, 0x06, 0xcc, 0x9f, 0x7d, 0xb4, + 0xff, 0x6f, 0x61, 0x9f, 0xf2, 0x30, 0x79, 0x86, 0xfe, 0x45, + 0xd6, 0x19, 0x94, 0xe2, 0xc3, 0xa3, 0xb1, 0x8c, 0x08, 0xe2, + 0xd8, 0xc8, 0x6c, 0xdd, 0xea, 0x96, 0x53, 0x5d, 0x4b, 0xb0, + 0xbc, 0x65, 0x29, 0xec, 0xdc, 0xb0, 0xd6, 0xad, 0x6b, 0x42, + 0x6c, 0x7c, 0x1f, 0x91, 0xe9, 0x46, 0x3d, 0xec, 0x42, 0x4c, + 0x63, 0x46, 0xc4, 0x02, 0x62, 0x20, 0x25, 0x81, 0x9a, 0xd5, + 0x36, 0x14, 0x42, 0x2a, 0xda, 0x2c, 0xb7, 0x14, 0xca, 0x67, + 0x65, 0xbf, 0xa3, 0x6b, 0x25, 0xaf, 0x59, 0xbc, 0x82, 0xc2, + 0xde, 0x49, 0xb1, 0xbc, 0x90, 0x31, 0x48, 0x96, 0x0d, 0xe4, + 0xa0, 0xeb, 0x86, 0xee, 0xfd, 0x04, 0x46, 0x29, 0x65, 0xee, + 0x9e, 0x54, 0x4f, 0x09, 0x8b, 0x0e, 0xec, 0x27, 0x24, 0x18, + 0x7c, 0x8d, 0x2d, 0x89, 0xda, 0x18, 0x8c, 0xfb, 0x46, 0x6b, + 0xc2, 0xf3, 0x69, 0x63, 0xfb, 0x4a, 0x03, 0x4b, 0xb5, 0xe9, + 0x0e, 0x4a, 0x82, 0x9e, 0x41, 0xf4, 0x44, 0x19, 0x74, 0x7c, + 0xa3, 0x37, 0xbd, 0x5c, 0xfb, 0x0a, 0x67, 0x37, 0xa8, 0x66, + 0x54, 0xaf, 0x50, 0xca, 0xf1, 0x38, 0x7c, 0x65, 0xc2, 0x9a, + 0x63, 0x6a, 0xb3, 0x65, 0xa6, 0x03, 0x53, 0x30, 0xd6, 0x20, + 0xbd, 0xf4, 0xde, 0x93, 0x43, 0x13, 0x08, 0xca, 0x0c, 0x93, + 0xb4, 0xac, 0x5a, 0x52, 0x9f, 0xdd, 0x38, 0xb0, 0x01, 0xc1, + 0x3c, 0xd5, 0x90, 0xaa, 0xd8, 0xc1, 0xba, 0xc9, 0x5d, 0xcd, + 0x19, 0x37, 0xcd, 0x57, 0xdc, 0xd2, 0x3b, 0x7a, 0xeb, 0x5d, + 0x7f, 0xd2, 0x03, 0xfd, 0xe0, 0x0b, 0xad, 0xb3, 0x48, 0x13, + 0x03, 0x80, 0x44, 0xbc, 0x73, 0x3d, 0xab, 0x80, 0x0d, 0x98, + 0xe7, 0x94, 0x2b, 0x59, 0x04, 0xdf, 0xa1, 0x76, 0xc5, 0x35, + 0x18, 0x9d, 0x14, 0x76, 0x1f, 0x37, 0xee, 0xf6, 0x62, 0xa4, + 0x81, 0x9b, 0x7e, 0x24, 0xba, 0xf3, 0x80, 0xfd, 0xc0, 0x24, + 0x11, 0x52, 0xe9, 0x69, 0xe4, 0x4e, 0x9c, 0x84, 0x26, 0x59, + 0x04, 0xe4, 0xce, 0x1e, 0xa9, 0x59, 0x3b, 0xaa, 0xfc, 0x32, + 0xf0, 0x9d, 0x19, 0xc0, 0xf9, 0x0b, 0x7b, 0x22, 0x56, 0x7e, + 0x7d, 0x0b, 0x35, 0xcf, 0xfb, 0xad, 0x76, 0x77, 0x55, 0x0c, + 0x5b, 0xfd, 0xfa, 0xab, 0x3d, 0xde, 0xc2, 0xfd, 0x27, 0x60, + 0xf2, 0xcf, 0x3f, 0x8a, 0xd0, 0x48, 0x84, 0xaf, 0x85, 0x6d, + 0xa5, 0xbe, 0x16, 0xaf, 0x29, 0x05, 0xf5, 0x50, 0xb9, 0x60, + 0x6f, 0x32, 0xeb, 0x07, 0x45, 0x85, 0xa1, 0xdb, 0x10, 0x07, + 0x73, 0x53, 0xd8, 0x79, 0x17, 0xef, 0xea, 0x76, 0x34, 0x55, + 0x3a, 0x43, 0x39, 0xbb, 0xc4, 0x55, 0x7d, 0x36, 0xdf, 0xe6, + 0x91, 0x05, 0xa6, 0xba, 0x96, 0xa3, 0xbb, 0xca, 0x52, 0x1b, + 0x7b, 0xa3, 0x6f, 0x99, 0xd6, 0x84, 0xd8, 0xf8, 0x23, 0xfe, + 0x49, 0xf1, 0xc4, 0x0c, 0xca, 0x7b, 0xaf, 0xf1, 0x61, 0xfc, + 0xd1, 0x1b, 0x5e, 0x12, 0x3e, 0xe1, 0x11, 0x8c, 0x7a, 0x1b, + 0x84, 0x98, 0xc6, 0x8c, 0x4b, 0x04, 0xc4, 0x40, 0x4a, 0xc1, + 0xbb, 0xa5, 0xce, 0xde, 0x05, 0xdd, 0x1c, 0xf8, 0x12, 0xde, + 0x45, 0x61, 0xc3, 0xdf, 0xcc, 0x2b, 0xf7, 0x69, 0x6c, 0x28, + 0x84, 0x54, 0x77, 0x58, 0xad, 0x28, 0x57, 0xce, 0xca, 0xbd, + 0x85, 0xd6, 0x72, 0x2d, 0xb3, 0x7a, 0xfb, 0x92, 0xef, 0x38, + 0x79, 0x7a, 0x59, 0xab, 0xcd, 0x22, 0x03, 0x3c, 0x4a, 0x9d, + 0xb2, 0xbb, 0xc7, 0x47, 0x7f, 0x92, 0xa1, 0xbb, 0xe3, 0x62, + 0x90, 0xef, 0x1a, 0x0b, 0xcf, 0xd9, 0x6d, 0xe9, 0xb8, 0x81, + 0xe7, 0xf2, 0x75, 0xe9, 0xed, 0x07, 0x97, 0x70, 0x9c, 0xe1, + 0x83, 0x15, 0xcf, 0x1f, 0x39, 0x08, 0x8c, 0x52, 0xca, 0x1f, + 0xff, 0xa8, 0x9e, 0x12, 0xd5, 0x1c, 0x06, 0x51, 0x10, 0x4d, + 0x46, 0xce, 0x14, 0x32, 0x1e, 0x4d, 0xf1, 0xcd, 0x99, 0x8d, + 0x53, 0xf6, 0x1b, 0x4e, 0x48, 0x30, 0xf8, 0xd9, 0x5a, 0xd1, + 0x77, 0x30, 0xdb, 0x35, 0x8c, 0xd6, 0x47, 0x25, 0x9e, 0x0a, + 0x97, 0x62, 0x87, 0x1f, 0xc2, 0xb1, 0xa3, 0x62, 0xd5, 0x50, + 0x8b, 0x49, 0xc1, 0xcf, 0xd2, 0xc6, 0x35, 0x94, 0x06, 0x96, + 0xa9, 0x11, 0x1c, 0x94, 0xc7, 0xff, 0x82, 0x2b, 0x88, 0x32, + 0x57, 0x82, 0xea, 0xc6, 0x79, 0x50, 0x31, 0x71, 0xc8, 0xc6, + 0xc9, 0x9a, 0x85, 0xb4, 0x0e, 0xd8, 0xe8, 0xf8, 0x85, 0x6e, + 0xb9, 0xb8, 0x35, 0x14, 0xce, 0x6e, 0x93, 0xcc, 0xa8, 0x9d, + 0xa0, 0x57, 0x6d, 0xbc, 0x5a, 0x3c, 0xc6, 0x7e, 0xad, 0x74, + 0x1a, 0x3c, 0x9d, 0xa9, 0xaf, 0x02, 0x26, 0xbd, 0x21, 0x70, + 0xf8, 0xca, 0x47, 0xf7, 0xc6, 0xd4, 0xa5, 0xca, 0x8f, 0x06, + 0xa6, 0x60, 0x6f, 0x40, 0xa4, 0x34, 0x27, 0x98, 0x38, 0x31, + 0x5e, 0xb4, 0x71, 0x98, 0x81, 0x63, 0xa1, 0xff, 0xe9, 0xaa, + 0xb9, 0x2b, 0x7f, 0xe5, 0x86, 0x26, 0x10, 0x57, 0x18, 0xe5, + 0xab, 0x9b, 0xb4, 0xa4, 0xfd, 0x79, 0x3c, 0x6f, 0xa0, 0xb7, + 0xf9, 0xe0, 0x88, 0x37, 0xcc, 0xb7, 0xa5, 0xfe, 0xb3, 0x3b, + 0x7b, 0x93, 0x70, 0xa3, 0x02, 0x41, 0x78, 0x69, 0xe3, 0x97, + 0x73, 0x41, 0xb7, 0x51, 0xba, 0x59, 0x32, 0x6e, 0xf5, 0xe7, + 0xdd, 0x13, 0x07, 0xaf, 0x7b, 0xf7, 0xa7, 0x13, 0xb9, 0x34, + 0xbd, 0xc6, 0xb4, 0x84, 0x59, 0xae, 0x7b, 0x67, 0x76, 0xf4, + 0x15, 0xba, 0xfe, 0x67, 0x06, 0x39, 0x03, 0x16, 0x99, 0xa5, + 0xdc, 0xea, 0xa4, 0x35, 0x09, 0x32, 0x8d, 0xda, 0x2a, 0x35, + 0x08, 0x5c, 0x04, 0x89, 0x1f, 0x4f, 0x90, 0x26, 0x06, 0xc3, + 0x88, 0xbb, 0xe6, 0x7a, 0x95, 0xc3, 0x1a, 0xf3, 0x0d, 0xeb, + 0x56, 0xb2, 0x15, 0x62, 0xd9, 0x91, 0xf7, 0x7d, 0x7e, 0x1a, + 0x41, 0x91, 0x14, 0x96, 0x0a, 0x74, 0xd0, 0x58, 0x08, 0x7d, + 0x81, 0xec, 0x49, 0x6a, 0x30, 0xf9, 0x28, 0xec, 0x3e, 0x6e, + 0x1f, 0x2f, 0xc4, 0x8b, 0x8d, 0x39, 0x5e, 0xbe, 0x36, 0xac, + 0xa8, 0x99, 0xfc, 0xbe, 0x30, 0x0b, 0x18, 0xb0, 0x42, 0x61, + 0xc1, 0xf5, 0xfc, 0x48, 0xb7, 0x25, 0xc3, 0x39, 0x43, 0x48, + 0x22, 0xa4, 0x11, 0xd2, 0x0b, 0x9c, 0x44, 0xb1, 0x23, 0x1a, + 0xc8, 0xe3, 0x5b, 0x59, 0x97, 0x1a, 0x2c, 0xc1, 0x16, 0x4d, + 0x8d, 0x76, 0xfb, 0xcb, 0x4c, 0xb2, 0x08, 0x0b, 0x5f, 0x3c, + 0x91, 0xb2, 0x76, 0x97, 0x3b, 0x64, 0x23, 0xf9, 0x7e, 0x8f, + 0x93, 0xe0, 0x77, 0xcd, 0xc7, 0x5c, 0x45, 0xe0, 0x78, 0xf2, + 0x3c, 0xfb, 0xa5, 0x13, 0x32, 0x43, 0x31, 0x16, 0xf6, 0x44, + 0xac, 0xfc, 0xfa, 0x16, 0x6a, 0x5d, 0x35, 0x99, 0xec, 0xee, + 0xb7, 0x07, 0xee, 0x44, 0x89, 0x82, 0x34, 0x9c, 0x2e, 0x44, + 0x64, 0x38, 0x32, 0x06, 0x6a, 0x04, 0xaa, 0x18, 0xb6, 0x39, + 0x37, 0x95, 0x7a, 0x7f, 0x47, 0x39, 0x4e, 0xc0, 0x27, 0x5d, + 0x7e, 0xd7, 0x2f, 0x5c, 0x69, 0x6b, 0x48, 0x53, 0xe2, 0x1f, + 0x93, 0x6b, 0x40, 0xa5, 0x20, 0xc2, 0xf8, 0x3d, 0x63, 0x90, + 0xcb, 0x9d, 0xc9, 0xda, 0x89, 0xbf, 0x2c, 0x9d, 0x52, 0x0a, + 0x29, 0xa0, 0xb1, 0xc0, 0xe6, 0xd4, 0x14, 0xcf, 0xb6, 0x1c, + 0x11, 0xdf, 0xf8, 0xcf, 0x5c, 0x6f, 0x2e, 0x3f, 0x37, 0x2a, + 0xde, 0x64, 0x15, 0x0e, 0x8a, 0xc9, 0x81, 0x75, 0x20, 0x0e, + 0xe6, 0xa6, 0x73, 0xf2, 0x2e, 0x1d, 0x5b, 0x20, 0xca, 0x5c, + 0xf5, 0x0f, 0x19, 0x15, 0xf4, 0x5c, 0xe8, 0xc3, 0x74, 0x6d, + 0xa8, 0xf7, 0x17, 0xec, 0x68, 0xaa, 0x74, 0x86, 0x72, 0xb5, + 0x4b, 0xaa, 0xfa, 0x6c, 0x7d, 0x0f, 0xe1, 0x0a, 0x92, 0xa8, + 0xb7, 0xf8, 0x0b, 0x40, 0xea, 0xd5, 0x9f, 0xf8, 0xf4, 0x09, + 0x7a, 0x90, 0x67, 0xe0, 0x8f, 0xb7, 0xef, 0x85, 0xb5, 0x57, + 0xa4, 0x36, 0xf6, 0x85, 0xde, 0xf1, 0x6f, 0xcb, 0x73, 0x33, + 0x0a, 0xf3, 0x30, 0xd7, 0xca, 0x91, 0x3c, 0x56, 0x22, 0xd7, + 0xd0, 0x94, 0x68, 0x54, 0xf5, 0xd9, 0x46, 0x3f, 0x92, 0x21, + 0x4b, 0x18, 0x57, 0xf6, 0x9d, 0x21, 0xc2, 0x3b, 0x61, 0x36, + 0xbc, 0x24, 0xc3, 0x7b, 0x4d, 0x73, 0x34, 0xde, 0xcf, 0x96, + 0x49, 0x73, 0xcc, 0x5e, 0x66, 0xa9, 0x3a, 0xce, 0x7c, 0x01, + 0x22, 0xdb, 0xf4, 0x36, 0xcb, 0xf3, 0x4f, 0xdb, 0x96, 0x08, + 0x4b, 0x80, 0x94, 0x41, 0xf9, 0x45, 0xfd, 0x89, 0x8b, 0xf0, + 0x53, 0x93, 0x9b, 0x89, 0x98, 0x6d, 0x4c, 0x1f, 0x12, 0xab, + 0xb5, 0x89, 0x5f, 0x7f, 0x0a, 0x79, 0x38, 0x33, 0x24, 0x7f, + 0x8a, 0xc2, 0x45, 0x7d, 0x5b, 0x56, 0x30, 0xcd, 0x80, 0x2d, + 0x75, 0xbf, 0xa0, 0x53, 0xf0, 0x2d, 0x84, 0xa7, 0x42, 0xe2, + 0xdd, 0xbc, 0x2d, 0xd2, 0xd8, 0x50, 0xcb, 0xa8, 0xee, 0xb0, + 0x99, 0x50, 0xae, 0x5f, 0x57, 0xb9, 0xc9, 0x6f, 0xa8, 0x96, + 0x07, 0x02, 0xb4, 0x6e, 0x76, 0xd0, 0x4d, 0x02, 0xa0, 0x3a, + 0x50, 0x26, 0x4f, 0x85, 0xe4, 0x5a, 0xa5, 0xf4, 0x35, 0xe7, + 0x1d, 0x70, 0xf2, 0xf4, 0xb2, 0x95, 0x59, 0x44, 0x06, 0x78, + 0x61, 0x1e, 0x7a, 0xa6, 0x4a, 0x21, 0x85, 0x10, 0x26, 0xa6, + 0xbc, 0xf0, 0x5e, 0xdb, 0x80, 0x92, 0x94, 0xf9, 0xa7, 0xb5, + 0x4d, 0x8e, 0xfe, 0xe7, 0x81, 0xb5, 0x05, 0xc4, 0xe3, 0x1d, + 0x34, 0x16, 0x11, 0xbd, 0x78, 0xe7, 0x32, 0x48, 0x66, 0x87, + 0x55, 0xe7, 0x0b, 0xa1, 0xe4, 0x82, 0xb2, 0xfc, 0x5d, 0x71, + 0xda, 0x11, 0xb3, 0xc1, 0x0d, 0x27, 0xea, 0x11, 0x19, 0x0e, + 0xed, 0xe0, 0xfb, 0x01, 0xd8, 0x35, 0x05, 0x43, 0xcc, 0x07, + 0x95, 0x47, 0x3e, 0x43, 0x17, 0x6b, 0xea, 0x7f, 0x7d, 0xeb, + 0xc5, 0x2a, 0x5d, 0x3e, 0x72, 0x10, 0xdb, 0xa4, 0x57, 0x3e, + 0x3d, 0x93, 0xff, 0x24, 0x69, 0x38, 0x40, 0x6e, 0x82, 0x6c, + 0x0d, 0xd6, 0x43, 0xc4, 0x83, 0x6c, 0x33, 0xf6, 0xf8, 0xbb, + 0xef, 0xd2, 0x0c, 0xa2, 0x20, 0x9a, 0x8c, 0x5f, 0x28, 0x64, + 0x3c, 0x9a, 0x21, 0x59, 0xf1, 0xd9, 0xa6, 0x2f, 0x89, 0xe6, + 0xff, 0xc8, 0xf3, 0x99, 0xb0, 0x04, 0xe8, 0xc8, 0x2f, 0x3c, + 0xf6, 0x46, 0x20, 0xc5, 0x36, 0x9c, 0x90, 0x60, 0x33, 0x71, + 0xb4, 0x61, 0xee, 0x60, 0x75, 0x6a, 0xdb, 0x6f, 0x8e, 0x4a, + 0xb3, 0xd8, 0x4f, 0x32, 0x4c, 0xb7, 0x2c, 0x01, 0x3a, 0x32, + 0x7b, 0x0f, 0xdc, 0xf0, 0x08, 0xa0, 0xff, 0x14, 0xed, 0xc4, + 0xcd, 0x3e, 0x47, 0xa1, 0x85, 0xc4, 0x69, 0xa0, 0xd5, 0x92, + 0x41, 0x5d, 0x7a, 0x50, 0x32, 0x96, 0xb2, 0xf8, 0xdf, 0xc1, + 0x51, 0x96, 0x67, 0xc5, 0xd2, 0x0d, 0xc7, 0xb7, 0x67, 0x4f, + 0x6a, 0xeb, 0x0c, 0xef, 0x91, 0x22, 0x38, 0xeb, 0x4d, 0x3d, + 0xc7, 0x56, 0xd3, 0x64, 0xe2, 0x0b, 0xb5, 0xb9, 0x73, 0x29, + 0x09, 0x42, 0xec, 0xb9, 0x43, 0x58, 0xc0, 0xc9, 0x55, 0x8e, + 0xae, 0xc7, 0x17, 0x4f, 0xf2, 0xa0, 0x62, 0xe2, 0x53, 0x4f, + 0x51, 0xf7, 0xc9, 0xab, 0x1c, 0x73, 0x2b, 0x83, 0xc8, 0x1d, + 0x8d, 0x66, 0xfa, 0x82, 0x87, 0x1d, 0x5f, 0x92, 0xce, 0x34, + 0x9a, 0x99, 0x13, 0x33, 0xc9, 0xdc, 0xb1, 0xb3, 0x6a, 0x28, + 0x5f, 0xdc, 0xe5, 0x5b, 0x93, 0xf9, 0x83, 0xae, 0x96, 0x77, + 0x16, 0x8e, 0xce, 0x75, 0xf2, 0x48, 0x8b, 0x8e, 0xeb, 0x3e, + 0x94, 0x66, 0x05, 0x44, 0xda, 0xbb, 0xb4, 0x78, 0x4f, 0xfc, + 0x99, 0xe8, 0x34, 0x78, 0xf9, 0x91, 0x9d, 0x04, 0x4c, 0xb9, + 0x5f, 0xff, 0x6b, 0x2a, 0x30, 0x3a, 0x01, 0x88, 0xe0, 0x2a, + 0xf7, 0xf4, 0x9a, 0x9b, 0xca, 0x53, 0x42, 0xe0, 0x33, 0x57, + 0x8e, 0x2d, 0x4f, 0x6b, 0x89, 0x57, 0xdd, 0x0c, 0x8f, 0xc0, + 0xde, 0x80, 0xc7, 0xa4, 0xec, 0x05, 0xf1, 0xeb, 0xd7, 0x0b, + 0x5d, 0x05, 0xd3, 0x69, 0x88, 0x5f, 0x58, 0x6a, 0x8b, 0x68, + 0x4e, 0xf3, 0x70, 0x62, 0xbc, 0xab, 0xe2, 0xf3, 0xc1, 0xc6, + 0x81, 0x3d, 0x11, 0x97, 0x0e, 0x2c, 0x91, 0xa1, 0x0f, 0xa4, + 0x24, 0xcb, 0x36, 0xa1, 0xcf, 0xa3, 0x86, 0xa2, 0x97, 0x7d, + 0xb1, 0x56, 0xfe, 0x09, 0xcf, 0x4c, 0x20, 0xae, 0x30, 0x09, + 0x95, 0xf5, 0xab, 0x8b, 0x39, 0xf2, 0x34, 0x12, 0x21, 0x5b, + 0xb0, 0x8a, 0xb8, 0xce, 0xe4, 0x5b, 0x9b, 0x90, 0xac, 0x14, + 0xbf, 0x18, 0x78, 0xde, 0x83, 0xad, 0x31, 0x03, 0xd3, 0x6e, + 0x5b, 0xad, 0x89, 0x3f, 0xa5, 0x76, 0xf6, 0xe5, 0xfd, 0x9a, + 0x5c, 0xff, 0x4e, 0xc5, 0x4b, 0x0e, 0x8f, 0xff, 0x87, 0x5a, + 0xa2, 0xe9, 0x70, 0x0f, 0xe0, 0x85, 0x04, 0x82, 0xf0, 0xd2, + 0x05, 0xed, 0xe6, 0x82, 0xad, 0xa2, 0xb7, 0xb2, 0x64, 0xdc, + 0x65, 0xc1, 0xdb, 0xd0, 0x8f, 0x14, 0x9d, 0x8d, 0x32, 0xd0, + 0xa3, 0xc7, 0xb0, 0x2d, 0xe2, 0x36, 0x29, 0x0d, 0x79, 0x26, + 0x0e, 0x9d, 0xf6, 0x2d, 0x8d, 0x26, 0xb1, 0x68, 0xb9, 0x4f, + 0xab, 0xcb, 0xac, 0x49, 0xa6, 0x74, 0x71, 0x5b, 0x6e, 0x4d, + 0x59, 0x74, 0xbf, 0x0d, 0xbe, 0xd0, 0x2d, 0x21, 0xb2, 0x9f, + 0xf6, 0xce, 0xec, 0x2b, 0x2a, 0xb7, 0x3f, 0xce, 0x0c, 0x72, + 0x06, 0x2c, 0xf1, 0x89, 0x37, 0xdb, 0x29, 0x9c, 0x93, 0xed, + 0xb2, 0xd7, 0xeb, 0x9c, 0x02, 0x17, 0x01, 0xb3, 0x77, 0x63, + 0x7b, 0x17, 0x8b, 0x6a, 0x12, 0x64, 0xd9, 0x77, 0x54, 0x6a, + 0x10, 0xb8, 0x08, 0xd1, 0x3e, 0x9e, 0xfe, 0x53, 0x54, 0x38, + 0x6d, 0xa2, 0x41, 0x17, 0x80, 0x38, 0x1e, 0xdd, 0x0f, 0x4e, + 0xb8, 0x74, 0xe3, 0x4c, 0x0c, 0x45, 0xd3, 0xb5, 0x0f, 0xf4, + 0xe9, 0x45, 0x34, 0x25, 0x1a, 0x15, 0xac, 0xa7, 0x66, 0x08, + 0xd3, 0x17, 0xac, 0x73, 0x97, 0x94, 0x3d, 0x17, 0x3a, 0x40, + 0x1d, 0x8a, 0x2a, 0x4d, 0x2a, 0xc4, 0x71, 0xe1, 0x2d, 0xfa, + 0xfc, 0x34, 0x82, 0xe1, 0x28, 0xef, 0x14, 0xe8, 0x63, 0xb0, + 0xaf, 0x80, 0xae, 0xb3, 0x52, 0x3c, 0x64, 0x54, 0x56, 0xb3, + 0x26, 0x8a, 0x13, 0x77, 0xe5, 0x5a, 0x10, 0xfa, 0xc1, 0x1b, + 0x92, 0xd4, 0x60, 0x31, 0x50, 0x1b, 0x7c, 0xdc, 0x3e, 0x5e, + 0x4b, 0xd5, 0x95, 0xbe, 0x1e, 0x49, 0xed, 0x12, 0xf8, 0x51, + 0x84, 0x49, 0x72, 0xb9, 0x39, 0xc1, 0xcd, 0x3f, 0xd9, 0x72, + 0xbc, 0xbf, 0x6c, 0x9b, 0x93, 0xf1, 0x3b, 0xbf, 0x60, 0x16, + 0x30, 0xa3, 0x84, 0xc2, 0x5c, 0x36, 0x63, 0xed, 0x13, 0x5d, + 0x0b, 0x91, 0xef, 0xed, 0x6e, 0x73, 0x37, 0x3c, 0x02, 0x28, + 0x41, 0x29, 0x3b, 0x90, 0xad, 0x4a, 0x45, 0x72, 0x86, 0x90, + 0x44, 0x8b, 0x22, 0x67, 0x16, 0xfb, 0xc4, 0x6d, 0xe4, 0xc2, + 0xd2, 0x8c, 0xdd, 0x12, 0x52, 0xc2, 0x4a, 0xee, 0x25, 0xf8, + 0x90, 0x11, 0x88, 0xa1, 0x46, 0x34, 0x53, 0x05, 0xb6, 0xb2, + 0xed, 0x34, 0x58, 0x41, 0x2c, 0x9a, 0xd9, 0xec, 0x0d, 0xe5, + 0x99, 0x66, 0x2c, 0xc3, 0x2e, 0xd2, 0x39, 0x66, 0x56, 0x24, + 0x2b, 0x05, 0x5f, 0x06, 0x35, 0x55, 0x98, 0xa7, 0x10, 0x16, + 0xbe, 0x78, 0xe1, 0xa7, 0xec, 0xed, 0x76, 0xc8, 0x46, 0x31, + 0xb0, 0x11, 0x47, 0xf5, 0x6f, 0xd0, 0x26, 0x18, 0x35, 0xf5, + 0xe2, 0x88, 0x71, 0x57, 0xc0, 0xdb, 0xfc, 0xdd, 0xe5, 0x03, + 0xee, 0x59, 0x4d, 0xb8, 0x8a, 0x03, 0xf0, 0x27, 0x78, 0x35, + 0x89, 0x26, 0x79, 0x99, 0x3a, 0x51, 0x91, 0x9f, 0xd5, 0xd8, + 0x5e, 0x51, 0xfe, 0x42, 0x7f, 0xaa, 0x0f, 0xcc, 0x64, 0x86, + 0x62, 0x2c, 0x2f, 0x88, 0x9b, 0x3b, 0x37, 0x2c, 0xd4, 0xba, + 0x6a, 0xf1, 0x1b, 0x1f, 0xe1, 0xc2, 0xbd, 0x7e, 0x50, 0x4e, + 0x03, 0x5b, 0xe3, 0x7e, 0xda, 0xdf, 0x6d, 0x6e, 0x9d, 0xf5, + 0xad, 0x0e, 0x1f, 0x88, 0xd1, 0xc7, 0x68, 0xfb, 0x5c, 0x88, + 0xc8, 0x70, 0x64, 0x0c, 0xd4, 0x08, 0x28, 0x4a, 0xc0, 0xda, + 0xae, 0x01, 0xf0, 0x9b, 0x88, 0xda, 0xc6, 0x15, 0x63, 0x93, + 0x52, 0xe2, 0x97, 0x30, 0xaf, 0x72, 0x6e, 0xe9, 0xf4, 0xfe, + 0x8e, 0x72, 0x9c, 0x43, 0x4e, 0xba, 0xfc, 0x6d, 0x12, 0x74, + 0x70, 0x20, 0x11, 0x2f, 0x6c, 0x9e, 0x5a, 0x20, 0x92, 0x26, + 0x49, 0x25, 0x7a, 0x87, 0x5e, 0xb8, 0xd2, 0xd6, 0x90, 0xa6, + 0x07, 0x3e, 0xe5, 0xd6, 0x80, 0x89, 0x40, 0x47, 0x33, 0x7a, + 0xdb, 0xfc, 0x0d, 0x84, 0xef, 0x60, 0x9f, 0x5e, 0x31, 0x84, + 0x8e, 0xec, 0x47, 0xd8, 0xb5, 0x90, 0xc6, 0xe3, 0x55, 0xf9, + 0x51, 0x77, 0xd1, 0xbd, 0x58, 0xf9, 0xa4, 0x14, 0x52, 0x83, + 0xa1, 0x43, 0x43, 0xa7, 0x8a, 0xab, 0x2e, 0xb1, 0x49, 0xdd, + 0x8c, 0xab, 0xaa, 0x71, 0x55, 0x1c, 0x27, 0xa9, 0x0f, 0x6b, + 0x28, 0x5d, 0xaf, 0x38, 0x22, 0x7d, 0x33, 0x5d, 0xb8, 0xde, + 0x5c, 0x7e, 0x6e, 0x54, 0x8a, 0x2f, 0xf7, 0x0f, 0xd0, 0xfe, + 0xba, 0x1d, 0xe7, 0x0f, 0xb6, 0xbb, 0x5b, 0xe1, 0xe8, 0xbe, + 0x7f, 0xc8, 0x2a, 0x1c, 0xd7, 0x51, 0xc1, 0xea, 0x40, 0x1c, + 0x0f, 0x8f, 0xe6, 0x27, 0x5c, 0x3a, 0xfa, 0x8c, 0xf5, 0x4e, + 0xa8, 0x97, 0x59, 0x8a, 0x94, 0x4e, 0x01, 0xea, 0xe1, 0xb8, + 0xda, 0xd0, 0xb6, 0x40, 0x57, 0xb8, 0x29, 0x1e, 0x32, 0x2a, + 0x2b, 0xb8, 0x13, 0x45, 0xe8, 0xda, 0x93, 0x2d, 0x33, 0x04, + 0x88, 0xea, 0x56, 0xd8, 0xaa, 0x4a, 0xff, 0xea, 0x1d, 0x20, + 0xef, 0x45, 0x15, 0xc7, 0x2e, 0x1b, 0xd0, 0x97, 0xe8, 0xcf, + 0xe4, 0xa9, 0x96, 0x97, 0x37, 0xd8, 0xfa, 0x1e, 0x01, 0x14, + 0xab, 0x5f, 0x0f, 0xc5, 0x97, 0x09, 0x7c, 0xc9, 0x42, 0xc5, + 0x39, 0xbd, 0xfd, 0x81, 0x87, 0xfe, 0xe7, 0x93, 0xad, 0x33, + 0x16, 0x80, 0x17, 0x69, 0xfd, 0x33, 0x2b, 0x12, 0xf4, 0xe3, + 0xce, 0x03, 0x62, 0xd7, 0x72, 0x61, 0x69, 0x46, 0x8f, 0x09, + 0x29, 0x61, 0x25, 0x77, 0xf3, 0x7c, 0x48, 0xe9, 0xdd, 0xad, + 0x1d, 0xc9, 0xa9, 0xae, 0x8b, 0x6c, 0x2f, 0xc9, 0x7f, 0x21, + 0xde, 0x55, 0xe6, 0x66, 0x58, 0xe9, 0xc2, 0x9b, 0xd6, 0x68, + 0x13, 0x0c, 0xfb, 0x9b, 0x71, 0x44, 0xd9, 0xca, 0x60, 0x8c, + 0x14, 0x25, 0x60, 0x6d, 0x57, 0xe1, 0x78, 0xac, 0x44, 0x6d, + 0x63, 0xeb, 0xd0, 0xa8, 0x29, 0x71, 0x91, 0x61, 0xbf, 0x3f, + 0x28, 0x27, 0xe0, 0xcc, 0x90, 0x3f, 0x6d, 0x8e, 0xd7, 0x37, + 0xaf, 0x9b, 0x8c, 0x7e, 0xe7, 0x42, 0x96, 0x30, 0xae, 0x2f, + 0xf9, 0x42, 0x47, 0x76, 0xc2, 0x6c, 0xbb, 0x48, 0x09, 0x3a, + 0x38, 0x10, 0xe9, 0xf6, 0x36, 0x4f, 0x2d, 0x10, 0x49, 0x13, + 0xc5, 0xf3, 0x3d, 0xa2, 0x45, 0xf6, 0x9a, 0xe6, 0x68, 0x7f, + 0x5d, 0xef, 0x92, 0xe6, 0x5b, 0xbc, 0xcc, 0x91, 0x74, 0x5f, + 0xc0, 0xb2, 0x45, 0xb4, 0x17, 0xb9, 0xc5, 0x8f, 0x46, 0xb4, + 0x55, 0xd9, 0xcb, 0x0e, 0xf2, 0xb5, 0xf8, 0x02, 0x44, 0x75, + 0x2b, 0x6c, 0x55, 0x25, 0x9e, 0x75, 0xef, 0x10, 0x96, 0xc3, + 0xeb, 0x82, 0x7d, 0x46, 0x9b, 0x27, 0x54, 0xaa, 0xcd, 0x45, + 0x4a, 0x27, 0xe1, 0x75, 0x91, 0x5c, 0x6d, 0x68, 0x31, 0x8a, + 0x39, 0xd1, 0xd5, 0x23, 0xa6, 0xe5, 0xf5, 0xd1, 0xf3, 0xda, + 0x98, 0x3e, 0x24, 0x95, 0xb4, 0xce, 0xe6, 0x83, 0xaa, 0xe5, + 0x3e, 0x85, 0x21, 0x83, 0xfd, 0xbf, 0x9f, 0xa1, 0xa2, 0x7f, + 0xa9, 0xd1, 0xbe, 0xfe, 0x14, 0xf2, 0x70, 0x66, 0x48, 0xfe, + 0xd7, 0x47, 0x8a, 0xfa, 0xb6, 0xac, 0x2c, 0x95, 0x61, 0xac, + 0x6b, 0x34, 0xe8, 0x06, 0x9c, 0xac, 0xd9, 0x22, 0x8d, 0x65, + 0x30, 0x46, 0x60, 0x59, 0xc3, 0x5a, 0xea, 0xbd, 0x83, 0xa6, + 0x23, 0x5a, 0xcb, 0x8d, 0x84, 0x07, 0x79, 0xbb, 0xe5, 0x1d, + 0x1c, 0x08, 0x95, 0x7b, 0x1b, 0xc6, 0xf7, 0x08, 0xc5, 0xe8, + 0x83, 0x98, 0xff, 0x51, 0x5a, 0x67, 0x73, 0xa0, 0x55, 0x93, + 0x1f, 0xa3, 0xf1, 0xa0, 0x9f, 0xbe, 0xae, 0xb1, 0x51, 0xde, + 0xdf, 0x23, 0xac, 0xf2, 0x2a, 0x55, 0x87, 0xc3, 0x25, 0xf2, + 0x91, 0xdb, 0xa9, 0x2e, 0xd7, 0x34, 0x93, 0xef, 0x0e, 0x04, + 0xab, 0xdc, 0xec, 0x63, 0x9a, 0x04, 0x83, 0x74, 0xa0, 0x4c, + 0x9e, 0xc9, 0x16, 0xab, 0xd1, 0x56, 0xd4, 0x1a, 0x74, 0x03, + 0x4e, 0x56, 0x8d, 0x11, 0xa7, 0xd3, 0x18, 0x23, 0x0b, 0xb4, + 0x89, 0x2b, 0x6a, 0x0d, 0x3a, 0xe0, 0x27, 0x2b, 0xa7, 0xe9, + 0xb2, 0x88, 0x0c, 0xf0, 0x8e, 0xf0, 0x56, 0x79, 0x15, 0xcb, + 0xa2, 0x80, 0xf3, 0x79, 0xa9, 0x8c, 0xb5, 0x17, 0x8a, 0x1a, + 0xc2, 0x3c, 0xf4, 0x8f, 0x94, 0x42, 0xc9, 0x20, 0x4c, 0x8f, + 0xbb, 0x23, 0xbc, 0x75, 0xc3, 0xe7, 0x47, 0x78, 0x2b, 0xdd, + 0xeb, 0x84, 0x51, 0x40, 0x98, 0xdd, 0xb5, 0x46, 0xbb, 0xea, + 0x45, 0x0d, 0xeb, 0x31, 0x8d, 0xa9, 0x9a, 0xdf, 0x3f, 0x0d, + 0xc1, 0xa9, 0x0a, 0x4b, 0x05, 0x3a, 0x68, 0x2c, 0x6e, 0x75, + 0x52, 0xfb, 0xe5, 0x19, 0xa7, 0x6d, 0x15, 0xfb, 0x04, 0x2e, + 0x02, 0xa5, 0xee, 0xc6, 0x22, 0xb9, 0xf0, 0x0d, 0x64, 0x90, + 0xcc, 0xcd, 0xaa, 0x0d, 0x16, 0x81, 0x0b, 0xc7, 0xa7, 0x3b, + 0xa7, 0xfd, 0x2f, 0x5f, 0x1b, 0x56, 0x54, 0xad, 0x7e, 0x5f, + 0x18, 0xe4, 0x0c, 0x58, 0x21, 0xd1, 0xba, 0xe2, 0x77, 0x22, + 0xa5, 0x41, 0x1a, 0x4e, 0x17, 0x22, 0x32, 0x1c, 0x19, 0x03, + 0x35, 0x02, 0x3f, 0xa6, 0xa8, 0x70, 0xda, 0x87, 0x82, 0x2e, + 0xc3, 0x70, 0x3c, 0x79, 0x1e, 0x9c, 0xb3, 0xe8, 0x73, 0x6a, + 0x0a, 0x86, 0x5b, 0x0e, 0xe9, 0x8e, 0x7c, 0x86, 0x2e, 0xd6, + 0x17, 0xfe, 0xfa, 0x15, 0xf6, 0x2e, 0xd5, 0xd4, 0x24, 0xc8, + 0x71, 0xee, 0xa8, 0xd4, 0x20, 0xb3, 0x10, 0x61, 0x7c, 0xff, + 0x49, 0x54, 0xba, 0x7c, 0xe4, 0x20, 0x75, 0x8b, 0xae, 0x7c, + 0x7a, 0xe5, 0x3d, 0x48, 0xd2, 0x70, 0xcc, 0x10, 0x65, 0x2e, + 0x9b, 0xe6, 0xed, 0xeb, 0x7a, 0x2e, 0x74, 0x80, 0x3a, 0xd7, + 0x54, 0x9a, 0x80, 0xdc, 0xc7, 0xd8, 0x1a, 0x6f, 0x86, 0x4b, + 0xc5, 0xd8, 0x66, 0x2f, 0x33, 0xb5, 0x1d, 0x67, 0x05, 0x98, + 0x18, 0x8a, 0x65, 0xa9, 0x1e, 0x2b, 0x11, 0x8a, 0x68, 0x4a, + 0x34, 0x2a, 0x9b, 0x8d, 0x18, 0x87, 0x40, 0xf7, 0xdb, 0xbe, + 0x50, 0xc8, 0x78, 0xf7, 0x42, 0xb2, 0x21, 0x71, 0x8f, 0x5e, + 0x9d, 0xc3, 0x9f, 0xa5, 0xa4, 0x78, 0xc8, 0xa8, 0xac, 0xa5, + 0x4c, 0xd7, 0x26, 0xee, 0x09, 0xb4, 0xd1, 0x0f, 0x3d, 0x53, + 0x25, 0xf1, 0xa3, 0x08, 0x13, 0x53, 0x5e, 0x78, 0x2f, 0x8c, + 0x40, 0x49, 0x54, 0x4b, 0xe2, 0x01, 0x5a, 0x37, 0x3b, 0x68, + 0xc7, 0x01, 0x50, 0x1d, 0x28, 0x13, 0xc6, 0xa3, 0x6c, 0xfb, + 0xe3, 0xc0, 0x66, 0xe2, 0xab, 0xc2, 0x1f, 0xc0, 0xea, 0xd4, + 0x75, 0xde, 0xdf, 0x94, 0xe9, 0xbf, 0x3c, 0x92, 0x19, 0x24, + 0x33, 0xa2, 0xcb, 0x92, 0xe4, 0xb1, 0x72, 0x41, 0x59, 0x7e, + 0xa5, 0x73, 0x9e, 0x64, 0x98, 0xad, 0x58, 0x02, 0x74, 0x64, + 0xf6, 0x1e, 0x7b, 0x23, 0x10, 0x83, 0x20, 0x37, 0x41, 0x36, + 0xe7, 0x6b, 0xc0, 0x62, 0xa0, 0x36, 0xf8, 0x7b, 0x7c, 0xbc, + 0x96, 0x69, 0x3d, 0x28, 0x19, 0x4b, 0x59, 0x7c, 0x8e, 0x81, + 0xc9, 0x4b, 0xd2, 0x83, 0x69, 0xe7, 0x82, 0xba, 0xb8, 0x6c, + 0xc6, 0x19, 0x26, 0xba, 0x16, 0xe1, 0x1d, 0x19, 0xdc, 0xe6, + 0x6e, 0x78, 0x04, 0x50, 0xf4, 0xa0, 0x64, 0xef, 0xa7, 0x33, + 0x7d, 0x41, 0xa2, 0xef, 0xce, 0x49, 0x67, 0x1a, 0x4d, 0xad, + 0x71, 0xe4, 0xbb, 0xbd, 0xd8, 0xf5, 0xe5, 0x21, 0x76, 0xbd, + 0xc0, 0x2c, 0x60, 0x85, 0xcb, 0x47, 0xce, 0x9e, 0xd4, 0x15, + 0x18, 0x1d, 0xe1, 0x44, 0x70, 0x15, 0x9a, 0x7a, 0x4d, 0xac, + 0x65, 0xc8, 0x4b, 0xda, 0x0b, 0x47, 0x67, 0xdb, 0x79, 0x24, + 0xa4, 0x47, 0x94, 0x1f, 0x4a, 0x33, 0xe3, 0x22, 0x07, 0x16, + 0xa9, 0xb1, 0xe6, 0x52, 0x12, 0x84, 0x1b, 0xb1, 0x86, 0xb0, + 0x43, 0x51, 0xaa, 0xdf, 0x82, 0x52, 0x76, 0xe3, 0x99, 0x94, + 0x8a, 0xe4, 0xcf, 0xe3, 0x88, 0xd5, 0x44, 0xce, 0x2c, 0x35, + 0x9f, 0x4d, 0x2e, 0x9e, 0x27, 0x83, 0xc4, 0x07, 0xa6, 0x9e, + 0xa2, 0x2d, 0x51, 0x95, 0x38, 0xe6, 0x1a, 0x09, 0xf1, 0xcc, + 0x58, 0x45, 0x5c, 0x67, 0x72, 0xcc, 0xac, 0x48, 0x56, 0x0a, + 0xbe, 0x0c, 0x56, 0xc5, 0x53, 0x3a, 0xd9, 0xcc, 0x37, 0xc7, + 0xcd, 0x3a, 0xbe, 0xe7, 0x5f, 0x68, 0xf7, 0xf1, 0xd3, 0x81, + 0x8c, 0x68, 0xa6, 0x0a, 0xaf, 0xa7, 0x19, 0x68, 0xb0, 0x82, + 0x58, 0xf7, 0x71, 0x1b, 0x26, 0x66, 0x51, 0x7b, 0xa1, 0xa5, + 0xd4, 0x50, 0xbe, 0x7b, 0x09, 0xb6, 0xe5, 0x31, 0xc5, 0x9f, + 0xa3, 0x22, 0x8e, 0x29, 0xde, 0x63, 0x4c, 0x30, 0x6a, 0x29, + 0x07, 0xd3, 0xe2, 0xae, 0x43, 0x75, 0xef, 0xee, 0x2c, 0xdf, + 0x5f, 0xea, 0x27, 0x90, 0xd5, 0xdf, 0x15, 0x7c, 0xeb, 0xcc, + 0x0a, 0x88, 0x6a, 0xaa, 0xf3, 0x8d, 0x20, 0x2c, 0xbf, 0xf0, + 0x01, 0x8d, 0x1b, 0x19, 0xec, 0x53, 0x8c, 0x62, 0x77, 0xb5, + 0xab, 0xf0, 0x9e, 0x3b, 0xf1, 0x13, 0x68, 0xf0, 0x31, 0xe1, + 0xf9, 0x08, 0x98, 0xb1, 0xf2, 0xf1, 0x74, 0xa2, 0xe1, 0xfd, + 0x69, 0x73, 0xbc, 0xa2, 0x3f, 0x84, 0xfe, 0x97, 0x1e, 0x5b, + 0xbe, 0x3d, 0xd6, 0x54, 0x60, 0x74, 0x02, 0xd3, 0x03, 0x54, + 0x2d, 0x2b, 0xf7, 0xf5, 0x57, 0xa6, 0x3b, 0x79, 0x09, 0x06, + 0x1f, 0xb2, 0x9a, 0xb3, 0xd7, 0x06, 0x23, 0x4e, 0xf0, 0x6a, + 0xd1, 0x4c, 0x84, 0x03, 0x66, 0xae, 0xdf, 0x5a, 0x9e, 0xd6, + 0xd1, 0xae, 0x79, 0x18, 0xdd, 0x43, 0x7f, 0xc3, 0x01, 0x47, + 0xb9, 0xfc, 0xa0, 0x9c, 0x06, 0xb6, 0x05, 0xfc, 0x77, 0x7d, + 0xda, 0xdc, 0xf9, 0x29, 0x4d, 0x8b, 0x1b, 0x0a, 0x21, 0x15, + 0x6d, 0x16, 0xba, 0x0a, 0x65, 0xd2, 0xd3, 0xbe, 0xb0, 0xd4, + 0xc8, 0xcf, 0xc4, 0x58, 0x5e, 0xd3, 0xf5, 0x76, 0x6e, 0x58, + 0x6b, 0xb7, 0xd4, 0x21, 0x36, 0x3e, 0xd5, 0xd0, 0x9c, 0x25, + 0xe0, 0xc4, 0xbb, 0x95, 0x07, 0x25, 0x41, 0x4f, 0xc1, 0x7a, + 0x22, 0xed, 0x50, 0x94, 0x43, 0x77, 0x9f, 0x02, 0x23, 0xf5, + 0xd3, 0x77, 0x4f, 0x2a, 0xc6, 0xe5, 0xa4, 0x07, 0x1c, 0x58, + 0xe1, 0x81, 0x1e, 0x8b, 0x48, 0x55, 0x6c, 0x81, 0x5d, 0x85, + 0xcf, 0x87, 0xed, 0xfa, 0x99, 0x1c, 0x3e, 0xd3, 0x61, 0x4d, + 0xd0, 0x35, 0xb8, 0xd3, 0x53, 0xe0, 0xc8, 0x18, 0x6b, 0x10, + 0xa1, 0xac, 0x3f, 0x12, 0x5d, 0x98, 0x40, 0x9f, 0x60, 0x12, + 0xe9, 0x29, 0x95, 0xd5, 0x72, 0x27, 0x24, 0xe8, 0xe0, 0x40, + 0x22, 0x5e, 0xd8, 0xff, 0xb4, 0x40, 0xe7, 0x4c, 0x92, 0x4a, + 0xf4, 0xcd, 0x68, 0x24, 0x42, 0xb6, 0xa3, 0xd7, 0xb3, 0x5f, + 0x0b, 0xb6, 0xf5, 0xe3, 0x9b, 0x28, 0xbd, 0x30, 0xed, 0x60, + 0x9d, 0xe4, 0xdc, 0x11, 0x2b, 0x3f, 0xdf, 0xe4, 0xfb, 0x86, + 0x9c, 0xb7, 0x3b, 0xda, 0xf0, 0x7f, 0xc5, 0x99, 0x62, 0x06, + 0x65, 0xdc, 0xb6, 0x99, 0xd1, 0x7e, 0x89, 0xec, 0x2f, 0x09, + 0x75, 0x3b, 0x1a, 0xcb, 0x1d, 0xc0, 0xfd, 0xbc, 0x62, 0xcb, + 0xdf, 0x1b, 0x8e, 0x73, 0xa9, 0xe3, 0x39, 0xf7, 0xb8, 0x3d, + 0x9c, 0x49, 0x96, 0x1c, 0xdd, 0x3d, 0xcd, 0xb4, 0x87, 0x11, + 0xe0, 0x1e, 0xbc, 0xb3, 0x67, 0x6f, 0xe3, 0x8f, 0x0e, 0x7c, + 0x09, 0x6f, 0xc3, 0xd1, 0x80, 0x8e, 0x66, 0xf4, 0x03, 0xc9, + 0x08, 0xc7, 0x23, 0x67, 0x0a, 0x19, 0x0f, 0xc7, 0x99, 0x87, + 0xad, 0xa7, 0xc8, 0x7b, 0x86, 0x8d, 0xd7, 0x95, 0x5c, 0xa1, + 0x92, 0x79, 0xdb, 0x95, 0x97, 0xe2, 0xaa, 0x38, 0x4e, 0x91, + 0xca, 0x41, 0x75, 0x63, 0xdd, 0x28, 0xf9, 0xd9, 0x64, 0x63, + 0x85, 0x4d, 0xa3, 0x5a, 0x07, 0x6c, 0x4f, 0x05, 0xaa, 0x31, + 0xa2, 0xee, 0x61, 0xb9, 0xb0, 0x31, 0x8b, 0x28, 0xa4, 0xc5, + 0x81, 0x86, 0x52, 0x1a, 0xf2, 0x4c, 0x1c, 0xf9, 0x2f, 0x5a, + 0xd9, 0x4c, 0xa1, 0xd0, 0xb1, 0x9e, 0x95, 0x55, 0xd7, 0x5e, + 0x2d, 0x1e, 0x63, 0x3f, 0xb7, 0x3a, 0x0d, 0x1e, 0xaf, 0xb5, + 0xb6, 0x01, 0x13, 0xbf, 0x9b, 0x92, 0x8f, 0xe8, 0xe2, 0xb6, + 0xdc, 0x9a, 0xb2, 0xe8, 0xbd, 0x1a, 0xbf, 0x63, 0x5a, 0x42, + 0x1e, 0xd6, 0x50, 0xba, 0x9d, 0x70, 0x44, 0xfa, 0x66, 0xba, + 0xb3, 0x7f, 0xb8, 0xfc, 0xdc, 0xa8, + }, + { + /* 4 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xd1, 0xd3, 0x91, + 0x91, 0xfe, 0xf3, 0x01, 0xb1, 0x78, 0x58, 0x01, 0x49, 0x6b, + 0x2d, 0xa9, 0x20, 0x61, 0x65, 0xe1, 0xe1, 0x3f, 0x25, 0x02, + 0xa1, 0xf0, 0xb0, 0x02, 0x92, 0xd6, 0x5a, 0x91, 0x30, 0xb0, + 0xb6, 0x70, 0x70, 0xc1, 0xd6, 0x03, 0x10, 0x88, 0xe8, 0x03, + 0xdb, 0xbd, 0x77, 0x38, 0x40, 0xc2, 0xca, 0x01, 0x01, 0x7e, + 0x4a, 0x04, 0x81, 0x23, 0xa3, 0x04, 0xe7, 0x6f, 0xb4, 0xe1, + 0x50, 0x13, 0x19, 0x90, 0x90, 0x80, 0xb9, 0x05, 0x30, 0x5b, + 0xfb, 0x05, 0xae, 0x04, 0x99, 0x48, 0x60, 0xa3, 0xaf, 0xe0, + 0xe0, 0x41, 0x6f, 0x06, 0x20, 0xd3, 0x13, 0x06, 0x75, 0xb9, + 0xee, 0x70, 0x70, 0x72, 0x7c, 0x71, 0x71, 0xbf, 0x9c, 0x07, + 0x91, 0xab, 0x4b, 0x07, 0x3c, 0xd2, 0xc3, 0xd9, 0x80, 0x47, + 0x57, 0x02, 0x02, 0xfc, 0x94, 0x08, 0xc1, 0x46, 0x85, 0x08, + 0x0d, 0xde, 0xab, 0x01, 0x90, 0x96, 0x84, 0x93, 0x93, 0x02, + 0x67, 0x09, 0x70, 0x3e, 0xdd, 0x09, 0x44, 0xb5, 0x86, 0xa8, + 0xa0, 0x26, 0x32, 0xe3, 0xe3, 0xc3, 0xb1, 0x0a, 0x60, 0xb6, + 0x35, 0x0a, 0x9f, 0x08, 0xf1, 0x90, 0xb0, 0xf7, 0xe1, 0x72, + 0x72, 0x3d, 0x42, 0x0b, 0xd1, 0xce, 0x6d, 0x0b, 0xd6, 0x63, + 0xdc, 0x39, 0xc0, 0x85, 0x9d, 0x03, 0x03, 0x82, 0xde, 0x0c, + 0x40, 0x65, 0x26, 0x0c, 0xea, 0xb1, 0x1f, 0xe0, 0xd0, 0x54, + 0x4e, 0x92, 0x92, 0x7c, 0x2d, 0x0d, 0xf1, 0x1d, 0x7e, 0x0d, + 0xa3, 0xda, 0x32, 0x49, 0xe0, 0xe4, 0xf8, 0xe2, 0xe2, 0xbd, + 0xfb, 0x0e, 0xe1, 0x95, 0x96, 0x0e, 0x78, 0x67, 0x45, 0x71, + 0xf0, 0x35, 0x2b, 0x73, 0x73, 0x43, 0x08, 0x0f, 0x50, 0xed, + 0xce, 0x0f, 0x31, 0x0c, 0x68, 0xd8, 0xc3, 0x8e, 0xae, 0x04, + 0x04, 0x3b, 0xeb, 0x10, 0x41, 0x8c, 0xc9, 0x10, 0x1a, 0x7f, + 0x95, 0x02, 0xd3, 0x5f, 0x7d, 0x95, 0x95, 0xc5, 0x18, 0x11, + 0xf0, 0xf4, 0x91, 0x11, 0x53, 0x14, 0xb8, 0xab, 0xe3, 0xef, + 0xcb, 0xe5, 0xe5, 0x04, 0xce, 0x12, 0xe0, 0x7c, 0x79, 0x12, + 0x88, 0xa9, 0xcf, 0x93, 0xf3, 0x3e, 0x18, 0x74, 0x74, 0xfa, + 0x3d, 0x13, 0x51, 0x04, 0x21, 0x13, 0xc1, 0xc2, 0xe2, 0x3a, + 0x83, 0x4c, 0x64, 0x05, 0x05, 0x45, 0xa1, 0x14, 0xc0, 0xaf, + 0x6a, 0x14, 0xfd, 0x10, 0x21, 0xe3, 0x93, 0x9d, 0xb7, 0x94, + 0x94, 0xbb, 0x52, 0x15, 0x71, 0xd7, 0x32, 0x15, 0xb4, 0x7b, + 0x0c, 0x4a, 0xa3, 0x2d, 0x01, 0xe4, 0xe4, 0x7a, 0x84, 0x16, + 0x61, 0x5f, 0xda, 0x16, 0x6f, 0xc6, 0x7b, 0x72, 0xb3, 0xfc, + 0xd2, 0x75, 0x75, 0x84, 0x77, 0x17, 0xd0, 0x27, 0x82, 0x17, + 0x26, 0xad, 0x56, 0xdb, 0x43, 0xc9, 0xf9, 0x06, 0x06, 0xc7, + 0x7f, 0x18, 0x80, 0xca, 0x4c, 0x18, 0x17, 0xa1, 0x3e, 0x03, + 0x53, 0x18, 0x2a, 0x97, 0x97, 0x39, 0x8c, 0x19, 0x31, 0xb2, + 0x14, 0x19, 0x5e, 0xca, 0x13, 0xaa, 0x63, 0xa8, 0x9c, 0xe7, + 0xe7, 0xf8, 0x5a, 0x1a, 0x21, 0x3a, 0xfc, 0x1a, 0x85, 0x77, + 0x64, 0x92, 0x73, 0x79, 0x4f, 0x76, 0x76, 0x06, 0xa9, 0x1b, + 0x90, 0x42, 0xa4, 0x1b, 0xcc, 0x1c, 0x49, 0x3b, 0x03, 0x0b, + 0x33, 0x07, 0x07, 0xb9, 0x35, 0x1c, 0x01, 0xe9, 0xef, 0x1c, + 0xf0, 0xce, 0x8a, 0xe2, 0x13, 0xda, 0xe0, 0x96, 0x96, 0x47, + 0xc6, 0x1d, 0xb0, 0x91, 0xb7, 0x1d, 0xb9, 0xa5, 0xa7, 0x4b, + 0x23, 0x6a, 0x56, 0xe6, 0xe6, 0x86, 0x10, 0x1e, 0xa0, 0x19, + 0x5f, 0x1e, 0x62, 0x18, 0xd0, 0x73, 0x33, 0xbb, 0x85, 0x77, + 0x77, 0x78, 0xe3, 0x1f, 0x11, 0x61, 0x07, 0x1f, 0x2b, 0x73, + 0xfd, 0xda, 0x45, 0xdf, 0x9f, 0x08, 0x08, 0x76, 0x15, 0x20, + 0x82, 0xdb, 0x51, 0x20, 0x34, 0xfe, 0xe9, 0x04, 0x55, 0x0e, + 0x4c, 0x99, 0x99, 0x88, 0xe6, 0x21, 0x33, 0xa3, 0x09, 0x21, + 0x7d, 0x95, 0xc4, 0xad, 0x65, 0xbe, 0xfa, 0xe9, 0xe9, 0x49, + 0x30, 0x22, 0x23, 0x2b, 0xe1, 0x22, 0xa6, 0x28, 0xb3, 0x95, + 0x75, 0x6f, 0x29, 0x78, 0x78, 0xb7, 0xc3, 0x23, 0x92, 0x53, + 0xb9, 0x23, 0xef, 0x43, 0x9e, 0x3c, 0x05, 0x1d, 0x55, 0x09, + 0x09, 0x08, 0x5f, 0x24, 0x03, 0xf8, 0xf2, 0x24, 0xd3, 0x91, + 0x5d, 0xe5, 0x15, 0xcc, 0x86, 0x98, 0x98, 0xf6, 0xac, 0x25, + 0xb2, 0x80, 0xaa, 0x25, 0x9a, 0xfa, 0x70, 0x4c, 0x25, 0x7c, + 0x30, 0xe8, 0xe8, 0x37, 0x7a, 0x26, 0xa2, 0x08, 0x42, 0x26, + 0x41, 0x47, 0x07, 0x74, 0x35, 0xad, 0xe3, 0x79, 0x79, 0xc9, + 0x89, 0x27, 0x13, 0x70, 0x1a, 0x27, 0x08, 0x2c, 0x2a, 0xdd, + 0xc5, 0x98, 0xc8, 0x0a, 0x0a, 0x8a, 0x81, 0x28, 0x43, 0x9d, + 0xd4, 0x28, 0x39, 0x20, 0x42, 0x05, 0xd5, 0x49, 0x1b, 0x9b, + 0x9b, 0x74, 0x72, 0x29, 0xf2, 0xe5, 0x8c, 0x29, 0x70, 0x4b, + 0x6f, 0xac, 0xe5, 0xf9, 0xad, 0xeb, 0xeb, 0xb5, 0xa4, 0x2a, + 0xe2, 0x6d, 0x64, 0x2a, 0xab, 0xf6, 0x18, 0x94, 0xf5, 0x28, + 0x7e, 0x7a, 0x7a, 0x4b, 0x57, 0x2b, 0x53, 0x15, 0x3c, 0x2b, + 0xe2, 0x9d, 0x35, 0x3d, 0x85, 0x5a, 0x02, 0x0b, 0x0b, 0xf4, + 0xcb, 0x2c, 0xc2, 0xbe, 0x77, 0x2c, 0xde, 0x4f, 0xf6, 0xe4, + 0x95, 0x8b, 0xd1, 0x9a, 0x9a, 0x0a, 0x38, 0x2d, 0x73, 0xc6, + 0x2f, 0x2d, 0x97, 0x24, 0xdb, 0x4d, 0xa5, 0x3b, 0x67, 0xea, + 0xea, 0xcb, 0xee, 0x2e, 0x63, 0x4e, 0xc7, 0x2e, 0x4c, 0x99, + 0xac, 0x75, 0xb5, 0xea, 0xb4, 0x7b, 0x7b, 0x35, 0x1d, 0x2f, + 0xd2, 0x36, 0x9f, 0x2f, 0x05, 0xf2, 0x81, 0xdc, 0x86, 0x51, + 0x31, 0x0c, 0x0c, 0x4d, 0xfe, 0x30, 0xc3, 0x57, 0x98, 0x30, + 0x2e, 0x81, 0x7c, 0x06, 0x96, 0x80, 0xe2, 0x9d, 0x9d, 0xb3, + 0x0d, 0x31, 0x72, 0x2f, 0xc0, 0x31, 0x67, 0xea, 0x51, 0xaf, + 0xa6, 0x30, 0x54, 0xed, 0xed, 0x72, 0xdb, 0x32, 0x62, 0xa7, + 0x28, 0x32, 0xbc, 0x57, 0x26, 0x97, 0xb6, 0xe1, 0x87, 0x7c, + 0x7c, 0x8c, 0x28, 0x33, 0xd3, 0xdf, 0x70, 0x33, 0xf5, 0x3c, + 0x0b, 0x3e, 0xc6, 0x93, 0xfb, 0x0d, 0x0d, 0x33, 0xb4, 0x34, + 0x42, 0x74, 0x3b, 0x34, 0xc9, 0xee, 0xc8, 0xe7, 0xd6, 0x42, + 0x28, 0x9c, 0x9c, 0xcd, 0x47, 0x35, 0xf3, 0x0c, 0x63, 0x35, + 0x80, 0x85, 0xe5, 0x4e, 0xe6, 0xf2, 0x9e, 0xec, 0xec, 0x0c, + 0x91, 0x36, 0xe3, 0x84, 0x8b, 0x36, 0x5b, 0x38, 0x92, 0x76, + 0xf6, 0x23, 0x4d, 0x7d, 0x7d, 0xf2, 0x62, 0x37, 0x52, 0xfc, + 0xd3, 0x37, 0x12, 0x53, 0xbf, 0xdf, 0x06, 0x16, 0x66, 0x0e, + 0x0e, 0xb1, 0x6a, 0x38, 0x02, 0x11, 0x1d, 0x38, 0x23, 0x5f, + 0xd7, 0x07, 0x16, 0xc7, 0xb5, 0x9f, 0x9f, 0x4f, 0x99, 0x39, + 0xb3, 0x69, 0x45, 0x39, 0x6a, 0x34, 0xfa, 0xae, 0x26, 0x77, + 0x03, 0xef, 0xef, 0x8e, 0x4f, 0x3a, 0xa3, 0xe1, 0xad, 0x3a, + 0xb1, 0x89, 0x8d, 0x96, 0x36, 0xa6, 0xd0, 0x7e, 0x7e, 0x70, + 0xbc, 0x3b, 0x12, 0x99, 0xf5, 0x3b, 0xf8, 0xe2, 0xa0, 0x3f, + 0x46, 0xd4, 0xac, 0x0f, 0x0f, 0xcf, 0x20, 0x3c, 0x83, 0x32, + 0xbe, 0x3c, 0xc4, 0x30, 0x63, 0xe6, 0x56, 0x05, 0x7f, 0x9e, + 0x9e, 0x31, 0xd3, 0x3d, 0x32, 0x4a, 0xe6, 0x3d, 0x8d, 0x5b, + 0x4e, 0x4f, 0x66, 0xb5, 0xc9, 0xee, 0xee, 0xf0, 0x05, 0x3e, + 0x22, 0xc2, 0x0e, 0x3e, 0x56, 0xe6, 0x39, 0x77, 0x76, 0x64, + 0x1a, 0x7f, 0x7f, 0x0e, 0xf6, 0x3f, 0x93, 0xba, 0x56, 0x3f, + 0x1f, 0x8d, 0x14, 0xde, 0x8a, 0x7d, 0xfd, 0x10, 0x10, 0xec, + 0x2a, 0x40, 0xc7, 0x75, 0xa2, 0x40, 0x68, 0x3f, 0x11, 0x08, + 0x9a, 0xac, 0x2e, 0x81, 0x81, 0x12, 0xd9, 0x41, 0x76, 0x0d, + 0xfa, 0x41, 0x21, 0x54, 0x3c, 0xa1, 0xaa, 0x1c, 0x98, 0xf1, + 0xf1, 0xd3, 0x0f, 0x42, 0x66, 0x85, 0x12, 0x42, 0xfa, 0xe9, + 0x4b, 0x99, 0xba, 0xcd, 0x4b, 0x60, 0x60, 0x2d, 0xfc, 0x43, + 0xd7, 0xfd, 0x4a, 0x43, 0xb3, 0x82, 0x66, 0x30, 0xca, 0xbf, + 0x37, 0x11, 0x11, 0x92, 0x60, 0x44, 0x46, 0x56, 0x01, 0x44, + 0x8f, 0x50, 0xa5, 0xe9, 0xda, 0x6e, 0xe4, 0x80, 0x80, 0x6c, + 0x93, 0x45, 0xf7, 0x2e, 0x59, 0x45, 0xc6, 0x3b, 0x88, 0x40, + 0xea, 0xde, 0x52, 0xf0, 0xf0, 0xad, 0x45, 0x46, 0xe7, 0xa6, + 0xb1, 0x46, 0x1d, 0x86, 0xff, 0x78, 0xfa, 0x0f, 0x81, 0x61, + 0x61, 0x53, 0xb6, 0x47, 0x56, 0xde, 0xe9, 0x47, 0x54, 0xed, + 0xd2, 0xd1, 0x0a, 0x3a, 0xaa, 0x12, 0x12, 0x10, 0xbe, 0x48, + 0x06, 0x33, 0x27, 0x48, 0x65, 0xe1, 0xba, 0x09, 0x1a, 0xeb, + 0x79, 0x83, 0x83, 0xee, 0x4d, 0x49, 0xb7, 0x4b, 0x7f, 0x49, + 0x2c, 0x8a, 0x97, 0xa0, 0x2a, 0x5b, 0xcf, 0xf3, 0xf3, 0x2f, + 0x9b, 0x4a, 0xa7, 0xc3, 0x97, 0x4a, 0xf7, 0x37, 0xe0, 0x98, + 0x3a, 0x8a, 0x1c, 0x62, 0x62, 0xd1, 0x68, 0x4b, 0x16, 0xbb, + 0xcf, 0x4b, 0xbe, 0x5c, 0xcd, 0x31, 0x4a, 0xf8, 0x60, 0x13, + 0x13, 0x6e, 0xf4, 0x4c, 0x87, 0x10, 0x84, 0x4c, 0x82, 0x8e, + 0x0e, 0xe8, 0x5a, 0x29, 0xb3, 0x82, 0x82, 0x90, 0x07, 0x4d, + 0x36, 0x68, 0xdc, 0x4d, 0xcb, 0xe5, 0x23, 0x41, 0x6a, 0x99, + 0x05, 0xf2, 0xf2, 0x51, 0xd1, 0x4e, 0x26, 0xe0, 0x34, 0x4e, + 0x10, 0x58, 0x54, 0x79, 0x7a, 0x48, 0xd6, 0x63, 0x63, 0xaf, + 0x22, 0x4f, 0x97, 0x98, 0x6c, 0x4f, 0x59, 0x33, 0x79, 0xd0, + 0x49, 0xf3, 0x53, 0x14, 0x14, 0xd7, 0xc1, 0x50, 0x86, 0xf9, + 0x6b, 0x50, 0x72, 0x40, 0x84, 0x0a, 0x59, 0x22, 0x80, 0x85, + 0x85, 0x29, 0x32, 0x51, 0x37, 0x81, 0x33, 0x51, 0x3b, 0x2b, + 0xa9, 0xa3, 0x69, 0x92, 0x36, 0xf5, 0xf5, 0xe8, 0xe4, 0x52, + 0x27, 0x09, 0xdb, 0x52, 0xe0, 0x96, 0xde, 0x9b, 0x79, 0x43, + 0xe5, 0x64, 0x64, 0x16, 0x17, 0x53, 0x96, 0x71, 0x83, 0x53, + 0xa9, 0xfd, 0xf3, 0x32, 0x09, 0x31, 0x99, 0x15, 0x15, 0xa9, + 0x8b, 0x54, 0x07, 0xda, 0xc8, 0x54, 0x95, 0x2f, 0x30, 0xeb, + 0x19, 0xe0, 0x4a, 0x84, 0x84, 0x57, 0x78, 0x55, 0xb6, 0xa2, + 0x90, 0x55, 0xdc, 0x44, 0x1d, 0x42, 0x29, 0x50, 0xfc, 0xf4, + 0xf4, 0x96, 0xae, 0x56, 0xa6, 0x2a, 0x78, 0x56, 0x07, 0xf9, + 0x6a, 0x7a, 0x39, 0x81, 0x2f, 0x65, 0x65, 0x68, 0x5d, 0x57, + 0x17, 0x52, 0x20, 0x57, 0x4e, 0x92, 0x47, 0xd3, 0xc9, 0xb4, + 0x04, 0x16, 0x16, 0x2b, 0x55, 0x58, 0x47, 0xbf, 0xee, 0x58, + 0x7f, 0x9e, 0x2f, 0x0b, 0xd9, 0x65, 0xd7, 0x87, 0x87, 0xd5, + 0xa6, 0x59, 0xf6, 0xc7, 0xb6, 0x59, 0x36, 0xf5, 0x02, 0xa2, + 0xe9, 0xd5, 0x61, 0xf7, 0xf7, 0x14, 0x70, 0x5a, 0xe6, 0x4f, + 0x5e, 0x5a, 0xed, 0x48, 0x75, 0x9a, 0xf9, 0x04, 0xb2, 0x66, + 0x66, 0xea, 0x83, 0x5b, 0x57, 0x37, 0x06, 0x5b, 0xa4, 0x23, + 0x58, 0x33, 0x89, 0x76, 0xce, 0x17, 0x17, 0x55, 0x1f, 0x5c, + 0xc6, 0x9c, 0x4d, 0x5c, 0x98, 0xf1, 0x9b, 0xea, 0x99, 0xa7, + 0x1d, 0x86, 0x86, 0xab, 0xec, 0x5d, 0x77, 0xe4, 0x15, 0x5d, + 0xd1, 0x9a, 0xb6, 0x43, 0xa9, 0x17, 0xab, 0xf6, 0xf6, 0x6a, + 0x3a, 0x5e, 0x67, 0x6c, 0xfd, 0x5e, 0x0a, 0x27, 0xc1, 0x7b, + 0xb9, 0xc6, 0x78, 0x67, 0x67, 0x94, 0xc9, 0x5f, 0xd6, 0x14, + 0xa5, 0x5f, 0x43, 0x4c, 0xec, 0xd2, 0xcf, 0xa2, 0x62, 0x18, + 0x18, 0x9a, 0x3f, 0x60, 0x45, 0xae, 0xf3, 0x60, 0x5c, 0xc1, + 0xf8, 0x0c, 0xdf, 0x73, 0xb1, 0x89, 0x89, 0x64, 0xcc, 0x61, + 0xf4, 0xd6, 0xab, 0x61, 0x15, 0xaa, 0xd5, 0xa5, 0xef, 0xc3, + 0x07, 0xf9, 0xf9, 0xa5, 0x1a, 0x62, 0xe4, 0x5e, 0x43, 0x62, + 0xce, 0x17, 0xa2, 0x9d, 0xff, 0x12, 0xd4, 0x68, 0x68, 0x5b, + 0xe9, 0x63, 0x55, 0x26, 0x1b, 0x63, 0x87, 0x7c, 0x8f, 0x34, + 0x8f, 0x60, 0xa8, 0x19, 0x19, 0xe4, 0x75, 0x64, 0xc4, 0x8d, + 0x50, 0x64, 0xbb, 0xae, 0x4c, 0xed, 0x9f, 0xb1, 0x7b, 0x88, + 0x88, 0x1a, 0x86, 0x65, 0x75, 0xf5, 0x08, 0x65, 0xf2, 0xc5, + 0x61, 0x44, 0xaf, 0x01, 0xcd, 0xf8, 0xf8, 0xdb, 0x50, 0x66, + 0x65, 0x7d, 0xe0, 0x66, 0x29, 0x78, 0x16, 0x7c, 0xbf, 0xd0, + 0x1e, 0x69, 0x69, 0x25, 0xa3, 0x67, 0xd4, 0x05, 0xb8, 0x67, + 0x60, 0x13, 0x3b, 0xd5, 0x4f, 0xe5, 0x35, 0x1a, 0x1a, 0x66, + 0xab, 0x68, 0x84, 0xe8, 0x76, 0x68, 0x51, 0x1f, 0x53, 0x0d, + 0x5f, 0x34, 0xe6, 0x8b, 0x8b, 0x98, 0x58, 0x69, 0x35, 0x90, + 0x2e, 0x69, 0x18, 0x74, 0x7e, 0xa4, 0x6f, 0x84, 0x50, 0xfb, + 0xfb, 0x59, 0x8e, 0x6a, 0x25, 0x18, 0xc6, 0x6a, 0xc3, 0xc9, + 0x09, 0x9c, 0x7f, 0x55, 0x83, 0x6a, 0x6a, 0xa7, 0x7d, 0x6b, + 0x94, 0x60, 0x9e, 0x6b, 0x8a, 0xa2, 0x24, 0x35, 0x0f, 0x27, + 0xff, 0x1b, 0x1b, 0x18, 0xe1, 0x6c, 0x05, 0xcb, 0xd5, 0x6c, + 0xb6, 0x70, 0xe7, 0xec, 0x1f, 0xf6, 0x2c, 0x8a, 0x8a, 0xe6, + 0x12, 0x6d, 0xb4, 0xb3, 0x8d, 0x6d, 0xff, 0x1b, 0xca, 0x45, + 0x2f, 0x46, 0x9a, 0xfa, 0xfa, 0x27, 0xc4, 0x6e, 0xa4, 0x3b, + 0x65, 0x6e, 0x24, 0xa6, 0xbd, 0x7d, 0x3f, 0x97, 0x49, 0x6b, + 0x6b, 0xd9, 0x37, 0x6f, 0x15, 0x43, 0x3d, 0x6f, 0x6d, 0xcd, + 0x90, 0xd4, 0x0c, 0x2c, 0xcc, 0x1c, 0x1c, 0xa1, 0xd4, 0x70, + 0x04, 0x22, 0x3a, 0x70, 0x46, 0xbe, 0x6d, 0x0e, 0x1c, 0xfd, + 0x1f, 0x8d, 0x8d, 0x5f, 0x27, 0x71, 0xb5, 0x5a, 0x62, 0x71, + 0x0f, 0xd5, 0x40, 0xa7, 0x2c, 0x4d, 0xa9, 0xfd, 0xfd, 0x9e, + 0xf1, 0x72, 0xa5, 0xd2, 0x8a, 0x72, 0xd4, 0x68, 0x37, 0x9f, + 0x3c, 0x9c, 0x7a, 0x6c, 0x6c, 0x60, 0x02, 0x73, 0x14, 0xaa, + 0xd2, 0x73, 0x9d, 0x03, 0x1a, 0x36, 0x4c, 0xee, 0x06, 0x1d, + 0x1d, 0xdf, 0x9e, 0x74, 0x85, 0x01, 0x99, 0x74, 0xa1, 0xd1, + 0xd9, 0xef, 0x5c, 0x3f, 0xd5, 0x8c, 0x8c, 0x21, 0x6d, 0x75, + 0x34, 0x79, 0xc1, 0x75, 0xe8, 0xba, 0xf4, 0x46, 0x6c, 0x8f, + 0x63, 0xfc, 0xfc, 0xe0, 0xbb, 0x76, 0x24, 0xf1, 0x29, 0x76, + 0x33, 0x07, 0x83, 0x7e, 0x7c, 0x5e, 0xb0, 0x6d, 0x6d, 0x1e, + 0x48, 0x77, 0x95, 0x89, 0x71, 0x77, 0x7a, 0x6c, 0xae, 0xd7, + 0x8c, 0x6b, 0x9b, 0x1e, 0x1e, 0x5d, 0x40, 0x78, 0xc5, 0x64, + 0xbf, 0x78, 0x4b, 0x60, 0xc6, 0x0f, 0x9c, 0xba, 0x48, 0x8f, + 0x8f, 0xa3, 0xb3, 0x79, 0x74, 0x1c, 0xe7, 0x79, 0x02, 0x0b, + 0xeb, 0xa6, 0xac, 0x0a, 0xfe, 0xff, 0xff, 0x62, 0x65, 0x7a, + 0x64, 0x94, 0x0f, 0x7a, 0xd9, 0xb6, 0x9c, 0x9e, 0xbc, 0xdb, + 0x2d, 0x6e, 0x6e, 0x9c, 0x96, 0x7b, 0xd5, 0xec, 0x57, 0x7b, + 0x90, 0xdd, 0xb1, 0x37, 0xcc, 0xa9, 0x51, 0x1f, 0x1f, 0x23, + 0x0a, 0x7c, 0x44, 0x47, 0x1c, 0x7c, 0xac, 0x0f, 0x72, 0xee, + 0xdc, 0x78, 0x82, 0x8e, 0x8e, 0xdd, 0xf9, 0x7d, 0xf5, 0x3f, + 0x44, 0x7d, 0xe5, 0x64, 0x5f, 0x47, 0xec, 0xc8, 0x34, 0xfe, + 0xfe, 0x1c, 0x2f, 0x7e, 0xe5, 0xb7, 0xac, 0x7e, 0x3e, 0xd9, + 0x28, 0x7f, 0xfc, 0x19, 0xe7, 0x6f, 0x6f, 0xe2, 0xdc, 0x7f, + 0x54, 0xcf, 0xf4, 0x7f, 0x77, 0xb2, 0x05, 0xd6, 0xd7, 0xfa, + 0x39, 0x20, 0x20, 0x1b, 0x54, 0x80, 0x4d, 0xea, 0x87, 0x80, + 0xd0, 0x7e, 0x22, 0x10, 0xc7, 0x2b, 0xea, 0xb1, 0xb1, 0xe5, + 0xa7, 0x81, 0xfc, 0x92, 0xdf, 0x81, 0x99, 0x15, 0x0f, 0xb9, + 0xf7, 0x9b, 0x5c, 0xc1, 0xc1, 0x24, 0x71, 0x82, 0xec, 0x1a, + 0x37, 0x82, 0x42, 0xa8, 0x78, 0x81, 0xe7, 0x4a, 0x8f, 0x50, + 0x50, 0xda, 0x82, 0x83, 0x5d, 0x62, 0x6f, 0x83, 0x0b, 0xc3, + 0x55, 0x28, 0x97, 0x38, 0xf3, 0x21, 0x21, 0x65, 0x1e, 0x84, + 0xcc, 0xc9, 0x24, 0x84, 0x37, 0x11, 0x96, 0xf1, 0x87, 0xe9, + 0x20, 0xb0, 0xb0, 0x9b, 0xed, 0x85, 0x7d, 0xb1, 0x7c, 0x85, + 0x7e, 0x7a, 0xbb, 0x58, 0xb7, 0x59, 0x96, 0xc0, 0xc0, 0x5a, + 0x3b, 0x86, 0x6d, 0x39, 0x94, 0x86, 0xa5, 0xc7, 0xcc, 0x60, + 0xa7, 0x88, 0x45, 0x51, 0x51, 0xa4, 0xc8, 0x87, 0xdc, 0x41, + 0xcc, 0x87, 0xec, 0xac, 0xe1, 0xc9, 0x57, 0xbd, 0x6e, 0x22, + 0x22, 0xe7, 0xc0, 0x88, 0x8c, 0xac, 0x02, 0x88, 0xdd, 0xa0, + 0x89, 0x11, 0x47, 0x6c, 0xbd, 0xb3, 0xb3, 0x19, 0x33, 0x89, + 0x3d, 0xd4, 0x5a, 0x89, 0x94, 0xcb, 0xa4, 0xb8, 0x77, 0xdc, + 0x0b, 0xc3, 0xc3, 0xd8, 0xe5, 0x8a, 0x2d, 0x5c, 0xb2, 0x8a, + 0x4f, 0x76, 0xd3, 0x80, 0x67, 0x0d, 0xd8, 0x52, 0x52, 0x26, + 0x16, 0x8b, 0x9c, 0x24, 0xea, 0x8b, 0x06, 0x1d, 0xfe, 0x29, + 0x17, 0x7f, 0xa4, 0x23, 0x23, 0x99, 0x8a, 0x8c, 0x0d, 0x8f, + 0xa1, 0x8c, 0x3a, 0xcf, 0x3d, 0xf0, 0x07, 0xae, 0x77, 0xb2, + 0xb2, 0x67, 0x79, 0x8d, 0xbc, 0xf7, 0xf9, 0x8d, 0x73, 0xa4, + 0x10, 0x59, 0x37, 0x1e, 0xc1, 0xc2, 0xc2, 0xa6, 0xaf, 0x8e, + 0xac, 0x7f, 0x11, 0x8e, 0xa8, 0x19, 0x67, 0x61, 0x27, 0xcf, + 0x12, 0x53, 0x53, 0x58, 0x5c, 0x8f, 0x1d, 0x07, 0x49, 0x8f, + 0xe1, 0x72, 0x4a, 0xc8, 0x14, 0x74, 0x97, 0x24, 0x24, 0x20, + 0xbf, 0x90, 0x0c, 0x66, 0x4e, 0x90, 0xca, 0x01, 0xb7, 0x12, + 0x04, 0xa5, 0x44, 0xb5, 0xb5, 0xde, 0x4c, 0x91, 0xbd, 0x1e, + 0x16, 0x91, 0x83, 0x6a, 0x9a, 0xbb, 0x34, 0x15, 0xf2, 0xc5, + 0xc5, 0x1f, 0x9a, 0x92, 0xad, 0x96, 0xfe, 0x92, 0x58, 0xd7, + 0xed, 0x83, 0x24, 0xc4, 0x21, 0x54, 0x54, 0xe1, 0x69, 0x93, + 0x1c, 0xee, 0xa6, 0x93, 0x11, 0xbc, 0xc0, 0x2a, 0x54, 0xb6, + 0x5d, 0x25, 0x25, 0x5e, 0xf5, 0x94, 0x8d, 0x45, 0xed, 0x94, + 0x2d, 0x6e, 0x03, 0xf3, 0x44, 0x67, 0x8e, 0xb4, 0xb4, 0xa0, + 0x06, 0x95, 0x3c, 0x3d, 0xb5, 0x95, 0x64, 0x05, 0x2e, 0x5a, + 0x74, 0xd7, 0x38, 0xc4, 0xc4, 0x61, 0xd0, 0x96, 0x2c, 0xb5, + 0x5d, 0x96, 0xbf, 0xb8, 0x59, 0x62, 0x64, 0x06, 0xeb, 0x55, + 0x55, 0x9f, 0x23, 0x97, 0x9d, 0xcd, 0x05, 0x97, 0xf6, 0xd3, + 0x74, 0xcb, 0x94, 0x33, 0xc0, 0x26, 0x26, 0xdc, 0x2b, 0x98, + 0xcd, 0x20, 0xcb, 0x98, 0xc7, 0xdf, 0x1c, 0x13, 0x84, 0xe2, + 0x13, 0xb7, 0xb7, 0x22, 0xd8, 0x99, 0x7c, 0x58, 0x93, 0x99, + 0x8e, 0xb4, 0x31, 0xba, 0xb4, 0x52, 0xa5, 0xc7, 0xc7, 0xe3, + 0x0e, 0x9a, 0x6c, 0xd0, 0x7b, 0x9a, 0x55, 0x09, 0x46, 0x82, + 0xa4, 0x83, 0x76, 0x56, 0x56, 0x1d, 0xfd, 0x9b, 0xdd, 0xa8, + 0x23, 0x9b, 0x1c, 0x62, 0x6b, 0x2b, 0xd4, 0xf1, 0x0a, 0x27, + 0x27, 0xa2, 0x61, 0x9c, 0x4c, 0x03, 0x68, 0x9c, 0x20, 0xb0, + 0xa8, 0xf2, 0xc4, 0x20, 0xd9, 0xb6, 0xb6, 0x5c, 0x92, 0x9d, + 0xfd, 0x7b, 0x30, 0x9d, 0x69, 0xdb, 0x85, 0x5b, 0xf4, 0x90, + 0x6f, 0xc6, 0xc6, 0x9d, 0x44, 0x9e, 0xed, 0xf3, 0xd8, 0x9e, + 0xb2, 0x66, 0xf2, 0x63, 0xe4, 0x41, 0xbc, 0x57, 0x57, 0x63, + 0xb7, 0x9f, 0x5c, 0x8b, 0x80, 0x9f, 0xfb, 0x0d, 0xdf, 0xca, + 0x92, 0x25, 0xa6, 0x28, 0x28, 0x6d, 0x41, 0xa0, 0xcf, 0x31, + 0xd6, 0xa0, 0xe4, 0x80, 0xcb, 0x14, 0x82, 0xf4, 0x75, 0xb9, + 0xb9, 0x93, 0xb2, 0xa1, 0x7e, 0x49, 0x8e, 0xa1, 0xad, 0xeb, + 0xe6, 0xbd, 0xb2, 0x44, 0xc3, 0xc9, 0xc9, 0x52, 0x64, 0xa2, + 0x6e, 0xc1, 0x66, 0xa2, 0x76, 0x56, 0x91, 0x85, 0xa2, 0x95, + 0x10, 0x58, 0x58, 0xac, 0x97, 0xa3, 0xdf, 0xb9, 0x3e, 0xa3, + 0x3f, 0x3d, 0xbc, 0x2c, 0xd2, 0xe7, 0x6c, 0x29, 0x29, 0x13, + 0x0b, 0xa4, 0x4e, 0x12, 0x75, 0xa4, 0x03, 0xef, 0x7f, 0xf5, + 0xc2, 0x36, 0xbf, 0xb8, 0xb8, 0xed, 0xf8, 0xa5, 0xff, 0x6a, + 0x2d, 0xa5, 0x4a, 0x84, 0x52, 0x5c, 0xf2, 0x86, 0x09, 0xc8, + 0xc8, 0x2c, 0x2e, 0xa6, 0xef, 0xe2, 0xc5, 0xa6, 0x91, 0x39, + 0x25, 0x64, 0xe2, 0x57, 0xda, 0x59, 0x59, 0xd2, 0xdd, 0xa7, + 0x5e, 0x9a, 0x9d, 0xa7, 0xd8, 0x52, 0x08, 0xcd, 0x12, 0x62, + 0xf1, 0x2a, 0x2a, 0x91, 0xd5, 0xa8, 0x0e, 0x77, 0x53, 0xa8, + 0xe9, 0x5e, 0x60, 0x15, 0x02, 0xb3, 0x22, 0xbb, 0xbb, 0x6f, + 0x26, 0xa9, 0xbf, 0x0f, 0x0b, 0xa9, 0xa0, 0x35, 0x4d, 0xbc, + 0x32, 0x03, 0x94, 0xcb, 0xcb, 0xae, 0xf0, 0xaa, 0xaf, 0x87, + 0xe3, 0xaa, 0x7b, 0x88, 0x3a, 0x84, 0x22, 0xd2, 0x47, 0x5a, + 0x5a, 0x50, 0x03, 0xab, 0x1e, 0xff, 0xbb, 0xab, 0x32, 0xe3, + 0x17, 0x2d, 0x52, 0xa0, 0x3b, 0x2b, 0x2b, 0xef, 0x9f, 0xac, + 0x8f, 0x54, 0xf0, 0xac, 0x0e, 0x31, 0xd4, 0xf4, 0x42, 0x71, + 0xe8, 0xba, 0xba, 0x11, 0x6c, 0xad, 0x3e, 0x2c, 0xa8, 0xad, + 0x47, 0x5a, 0xf9, 0x5d, 0x72, 0xc1, 0x5e, 0xca, 0xca, 0xd0, + 0xba, 0xae, 0x2e, 0xa4, 0x40, 0xae, 0x9c, 0xe7, 0x8e, 0x65, + 0x62, 0x10, 0x8d, 0x5b, 0x5b, 0x2e, 0x49, 0xaf, 0x9f, 0xdc, + 0x18, 0xaf, 0xd5, 0x8c, 0xa3, 0xcc, 0x51, 0xab, 0x08, 0x2c, + 0x2c, 0x56, 0xaa, 0xb0, 0x8e, 0xbd, 0x1f, 0xb0, 0xfe, 0xff, + 0x5e, 0x16, 0x41, 0x7a, 0xdb, 0xbd, 0xbd, 0xa8, 0x59, 0xb1, + 0x3f, 0xc5, 0x47, 0xb1, 0xb7, 0x94, 0x73, 0xbf, 0x71, 0xca, + 0x6d, 0xcd, 0xcd, 0x69, 0x8f, 0xb2, 0x2f, 0x4d, 0xaf, 0xb2, + 0x6c, 0x29, 0x04, 0x87, 0x61, 0x1b, 0xbe, 0x5c, 0x5c, 0x97, + 0x7c, 0xb3, 0x9e, 0x35, 0xf7, 0xb3, 0x25, 0x42, 0x29, 0x2e, + 0x11, 0x69, 0xc2, 0x2d, 0x2d, 0x28, 0xe0, 0xb4, 0x0f, 0x9e, + 0xbc, 0xb4, 0x19, 0x90, 0xea, 0xf7, 0x01, 0xb8, 0x11, 0xbc, + 0xbc, 0xd6, 0x13, 0xb5, 0xbe, 0xe6, 0xe4, 0xb5, 0x50, 0xfb, + 0xc7, 0x5e, 0x31, 0x08, 0xa7, 0xcc, 0xcc, 0x17, 0xc5, 0xb6, + 0xae, 0x6e, 0x0c, 0xb6, 0x8b, 0x46, 0xb0, 0x66, 0x21, 0xd9, + 0x74, 0x5d, 0x5d, 0xe9, 0x36, 0xb7, 0x1f, 0x16, 0x54, 0xb7, + 0xc2, 0x2d, 0x9d, 0xcf, 0xd1, 0xec, 0x5f, 0x2e, 0x2e, 0xaa, + 0x3e, 0xb8, 0x4f, 0xfb, 0x9a, 0xb8, 0xf3, 0x21, 0xf5, 0x17, + 0xc1, 0x3d, 0x8c, 0xbf, 0xbf, 0x54, 0xcd, 0xb9, 0xfe, 0x83, + 0xc2, 0xb9, 0xba, 0x4a, 0xd8, 0xbe, 0xf1, 0x8d, 0x3a, 0xcf, + 0xcf, 0x95, 0x1b, 0xba, 0xee, 0x0b, 0x2a, 0xba, 0x61, 0xf7, + 0xaf, 0x86, 0xe1, 0x5c, 0xe9, 0x5e, 0x5e, 0x6b, 0xe8, 0xbb, + 0x5f, 0x73, 0x72, 0xbb, 0x28, 0x9c, 0x82, 0x2f, 0x91, 0x2e, + 0x95, 0x2f, 0x2f, 0xd4, 0x74, 0xbc, 0xce, 0xd8, 0x39, 0xbc, + 0x14, 0x4e, 0x41, 0xf6, 0x81, 0xff, 0x46, 0xbe, 0xbe, 0x2a, + 0x87, 0xbd, 0x7f, 0xa0, 0x61, 0xbd, 0x5d, 0x25, 0x6c, 0x5f, + 0xb1, 0x4f, 0xf0, 0xce, 0xce, 0xeb, 0x51, 0xbe, 0x6f, 0x28, + 0x89, 0xbe, 0x86, 0x98, 0x1b, 0x67, 0xa1, 0x9e, 0x23, 0x5f, + 0x5f, 0x15, 0xa2, 0xbf, 0xde, 0x50, 0xd1, 0xbf, 0xcf, 0xf3, + 0x36, 0xce, 0x5d, 0x87, 0xc4, 0x30, 0x30, 0xf7, 0x7e, 0xc0, + 0x8a, 0x9f, 0x25, 0xc0, 0xb8, 0x41, 0x33, 0x18, 0x4d, 0x56, + 0x17, 0xa1, 0xa1, 0x09, 0x8d, 0xc1, 0x3b, 0xe7, 0x7d, 0xc1, + 0xf1, 0x2a, 0x1e, 0xb1, 0x7d, 0xe6, 0xa1, 0xd1, 0xd1, 0xc8, + 0x5b, 0xc2, 0x2b, 0x6f, 0x95, 0xc2, 0x2a, 0x97, 0x69, 0x89, + 0x6d, 0x37, 0x72, 0x40, 0x40, 0x36, 0xa8, 0xc3, 0x9a, 0x17, + 0xcd, 0xc3, 0x63, 0xfc, 0x44, 0x20, 0x1d, 0x45, 0x0e, 0x31, + 0x31, 0x89, 0x34, 0xc4, 0x0b, 0xbc, 0x86, 0xc4, 0x5f, 0x2e, + 0x87, 0xf9, 0x0d, 0x94, 0xdd, 0xa0, 0xa0, 0x77, 0xc7, 0xc5, + 0xba, 0xc4, 0xde, 0xc5, 0x16, 0x45, 0xaa, 0x50, 0x3d, 0x24, + 0x6b, 0xd0, 0xd0, 0xb6, 0x11, 0xc6, 0xaa, 0x4c, 0x36, 0xc6, + 0xcd, 0xf8, 0xdd, 0x68, 0x2d, 0xf5, 0xb8, 0x41, 0x41, 0x48, + 0xe2, 0xc7, 0x1b, 0x34, 0x6e, 0xc7, 0x84, 0x93, 0xf0, 0xc1, + 0xdd, 0xc0, 0x93, 0x32, 0x32, 0x0b, 0xea, 0xc8, 0x4b, 0xd9, + 0xa0, 0xc8, 0xb5, 0x9f, 0x98, 0x19, 0xcd, 0x11, 0x40, 0xa3, + 0xa3, 0xf5, 0x19, 0xc9, 0xfa, 0xa1, 0xf8, 0xc9, 0xfc, 0xf4, + 0xb5, 0xb0, 0xfd, 0xa1, 0xf6, 0xd3, 0xd3, 0x34, 0xcf, 0xca, + 0xea, 0x29, 0x10, 0xca, 0x27, 0x49, 0xc2, 0x88, 0xed, 0x70, + 0x25, 0x42, 0x42, 0xca, 0x3c, 0xcb, 0x5b, 0x51, 0x48, 0xcb, + 0x6e, 0x22, 0xef, 0x21, 0x9d, 0x02, 0x59, 0x33, 0x33, 0x75, + 0xa0, 0xcc, 0xca, 0xfa, 0x03, 0xcc, 0x52, 0xf0, 0x2c, 0xf8, + 0x8d, 0xd3, 0x8a, 0xa2, 0xa2, 0x8b, 0x53, 0xcd, 0x7b, 0x82, + 0x5b, 0xcd, 0x1b, 0x9b, 0x01, 0x51, 0xbd, 0x63, 0x3c, 0xd2, + 0xd2, 0x4a, 0x85, 0xce, 0x6b, 0x0a, 0xb3, 0xce, 0xc0, 0x26, + 0x76, 0x69, 0xad, 0xb2, 0xef, 0x43, 0x43, 0xb4, 0x76, 0xcf, + 0xda, 0x72, 0xeb, 0xcf, 0x89, 0x4d, 0x5b, 0xc0, 0x9e, 0x09, + 0x6a, 0x34, 0x34, 0xcc, 0x95, 0xd0, 0xcb, 0x13, 0xec, 0xd0, + 0xa2, 0x3e, 0xa6, 0x1a, 0x8e, 0xd8, 0xb9, 0xa5, 0xa5, 0x32, + 0x66, 0xd1, 0x7a, 0x6b, 0xb4, 0xd1, 0xeb, 0x55, 0x8b, 0xb3, + 0xbe, 0x68, 0x0f, 0xd5, 0xd5, 0xf3, 0xb0, 0xd2, 0x6a, 0xe3, + 0x5c, 0xd2, 0x30, 0xe8, 0xfc, 0x8b, 0xae, 0xb9, 0xdc, 0x44, + 0x44, 0x0d, 0x43, 0xd3, 0xdb, 0x9b, 0x04, 0xd3, 0x79, 0x83, + 0xd1, 0x22, 0xde, 0xcb, 0xa0, 0x35, 0x35, 0xb2, 0xdf, 0xd4, + 0x4a, 0x30, 0x4f, 0xd4, 0x45, 0x51, 0x12, 0xfb, 0xce, 0x1a, + 0x73, 0xa4, 0xa4, 0x4c, 0x2c, 0xd5, 0xfb, 0x48, 0x17, 0xd5, + 0x0c, 0x3a, 0x3f, 0x52, 0xfe, 0xaa, 0xc5, 0xd4, 0xd4, 0x8d, + 0xfa, 0xd6, 0xeb, 0xc0, 0xff, 0xd6, 0xd7, 0x87, 0x48, 0x6a, + 0xee, 0x7b, 0x16, 0x45, 0x45, 0x73, 0x09, 0xd7, 0x5a, 0xb8, + 0xa7, 0xd7, 0x9e, 0xec, 0x65, 0xc3, 0x1e, 0x4e, 0x3d, 0x36, + 0x36, 0x30, 0x01, 0xd8, 0x0a, 0x55, 0x69, 0xd8, 0xaf, 0xe0, + 0x0d, 0x1b, 0x0e, 0x9f, 0xee, 0xa7, 0xa7, 0xce, 0xf2, 0xd9, + 0xbb, 0x2d, 0x31, 0xd9, 0xe6, 0x8b, 0x20, 0xb2, 0x3e, 0x2f, + 0x58, 0xd7, 0xd7, 0x0f, 0x24, 0xda, 0xab, 0xa5, 0xd9, 0xda, + 0x3d, 0x36, 0x57, 0x8a, 0x2e, 0xfe, 0x8b, 0x46, 0x46, 0xf1, + 0xd7, 0xdb, 0x1a, 0xdd, 0x81, 0xdb, 0x74, 0x5d, 0x7a, 0x23, + 0x5e, 0x8c, 0xf7, 0x37, 0x37, 0x4e, 0x4b, 0xdc, 0x8b, 0x76, + 0xca, 0xdc, 0x48, 0x8f, 0xb9, 0xfa, 0x4e, 0x5d, 0x24, 0xa6, + 0xa6, 0xb0, 0xb8, 0xdd, 0x3a, 0x0e, 0x92, 0xdd, 0x01, 0xe4, + 0x94, 0x53, 0x7e, 0xed, 0x92, 0xd6, 0xd6, 0x71, 0x6e, 0xde, + 0x2a, 0x86, 0x7a, 0xde, 0xda, 0x59, 0xe3, 0x6b, 0x6e, 0x3c, + 0x41, 0x47, 0x47, 0x8f, 0x9d, 0xdf, 0x9b, 0xfe, 0x22, 0xdf, + 0x93, 0x32, 0xce, 0xc2, 0x18, 0x58, 0x5b, 0x38, 0x38, 0x81, + 0x6b, 0xe0, 0x08, 0x44, 0x74, 0xe0, 0x8c, 0xbf, 0xda, 0x1c, + 0x08, 0x89, 0x88, 0xa9, 0xa9, 0x7f, 0x98, 0xe1, 0xb9, 0x3c, + 0x2c, 0xe1, 0xc5, 0xd4, 0xf7, 0xb5, 0x38, 0x39, 0x3e, 0xd9, + 0xd9, 0xbe, 0x4e, 0xe2, 0xa9, 0xb4, 0xc4, 0xe2, 0x1e, 0x69, + 0x80, 0x8d, 0x28, 0xe8, 0xed, 0x48, 0x48, 0x40, 0xbd, 0xe3, + 0x18, 0xcc, 0x9c, 0xe3, 0x57, 0x02, 0xad, 0x24, 0x58, 0x9a, + 0x91, 0x39, 0x39, 0xff, 0x21, 0xe4, 0x89, 0x67, 0xd7, 0xe4, + 0x6b, 0xd0, 0x6e, 0xfd, 0x48, 0x4b, 0x42, 0xa8, 0xa8, 0x01, + 0xd2, 0xe5, 0x38, 0x1f, 0x8f, 0xe5, 0x22, 0xbb, 0x43, 0x54, + 0x78, 0xfb, 0xf4, 0xd8, 0xd8, 0xc0, 0x04, 0xe6, 0x28, 0x97, + 0x67, 0xe6, 0xf9, 0x06, 0x34, 0x6c, 0x68, 0x2a, 0x27, 0x49, + 0x49, 0x3e, 0xf7, 0xe7, 0x99, 0xef, 0x3f, 0xe7, 0xb0, 0x6d, + 0x19, 0xc5, 0x98, 0x1f, 0x0c, 0x3a, 0x3a, 0x7d, 0xff, 0xe8, + 0xc9, 0x02, 0xf1, 0xe8, 0x81, 0x61, 0x71, 0x1d, 0x88, 0xce, + 0xdf, 0xab, 0xab, 0x83, 0x0c, 0xe9, 0x78, 0x7a, 0xa9, 0xe9, + 0xc8, 0x0a, 0x5c, 0xb4, 0xb8, 0x7e, 0x69, 0xdb, 0xdb, 0x42, + 0xda, 0xea, 0x68, 0xf2, 0x41, 0xea, 0x13, 0xb7, 0x2b, 0x8c, + 0xa8, 0xaf, 0xba, 0x4a, 0x4a, 0xbc, 0x29, 0xeb, 0xd9, 0x8a, + 0x19, 0xeb, 0x5a, 0xdc, 0x06, 0x25, 0xd8, 0xdd, 0xc6, 0x3b, + 0x3b, 0x03, 0xb5, 0xec, 0x48, 0x21, 0x52, 0xec, 0x66, 0x0e, + 0xc5, 0xfc, 0xc8, 0x0c, 0x15, 0xaa, 0xaa, 0xfd, 0x46, 0xed, + 0xf9, 0x59, 0x0a, 0xed, 0x2f, 0x65, 0xe8, 0x55, 0xf8, 0xbc, + 0xa3, 0xda, 0xda, 0x3c, 0x90, 0xee, 0xe9, 0xd1, 0xe2, 0xee, + 0xf4, 0xd8, 0x9f, 0x6d, 0xe8, 0x6d, 0x70, 0x4b, 0x4b, 0xc2, + 0x63, 0xef, 0x58, 0xa9, 0xba, 0xef, 0xbd, 0xb3, 0xb2, 0xc4, + 0xdb, 0xd6, 0xf5, 0x3c, 0x3c, 0xba, 0x80, 0xf0, 0x49, 0xc8, + 0xbd, 0xf0, 0x96, 0xc0, 0x4f, 0x1e, 0xcb, 0x07, 0x26, 0xad, + 0xad, 0x44, 0x73, 0xf1, 0xf8, 0xb0, 0xe5, 0xf1, 0xdf, 0xab, + 0x62, 0xb7, 0xfb, 0xb7, 0x90, 0xdd, 0xdd, 0x85, 0xa5, 0xf2, + 0xe8, 0x38, 0x0d, 0xf2, 0x04, 0x16, 0x15, 0x8f, 0xeb, 0x66, + 0x43, 0x4c, 0x4c, 0x7b, 0x56, 0xf3, 0x59, 0x40, 0x55, 0xf3, + 0x4d, 0x7d, 0x38, 0x26, 0x9b, 0x14, 0x3f, 0x3d, 0x3d, 0xc4, + 0xca, 0xf4, 0xc8, 0xeb, 0x1e, 0xf4, 0x71, 0xaf, 0xfb, 0xff, + 0x8b, 0xc5, 0xec, 0xac, 0xac, 0x3a, 0x39, 0xf5, 0x79, 0x93, + 0x46, 0xf5, 0x38, 0xc4, 0xd6, 0x56, 0xbb, 0x75, 0x5a, 0xdc, + 0xdc, 0xfb, 0xef, 0xf6, 0x69, 0x1b, 0xae, 0xf6, 0xe3, 0x79, + 0xa1, 0x6e, 0xab, 0xa4, 0x89, 0x4d, 0x4d, 0x05, 0x1c, 0xf7, + 0xd8, 0x63, 0xf6, 0xf7, 0xaa, 0x12, 0x8c, 0xc7, 0x5b, 0x91, + 0xa2, 0x3e, 0x3e, 0x46, 0x14, 0xf8, 0x88, 0x8e, 0x38, 0xf8, + 0x9b, 0x1e, 0xe4, 0x1f, 0x4b, 0x40, 0x71, 0xaf, 0xaf, 0xb8, + 0xe7, 0xf9, 0x39, 0xf6, 0x60, 0xf9, 0xd2, 0x75, 0xc9, 0xb6, + 0x7b, 0xf0, 0xc7, 0xdf, 0xdf, 0x79, 0x31, 0xfa, 0x29, 0x7e, + 0x88, 0xfa, 0x09, 0xc8, 0xbe, 0x8e, 0x6b, 0x21, 0x14, 0x4e, + 0x4e, 0x87, 0xc2, 0xfb, 0x98, 0x06, 0xd0, 0xfb, 0x40, 0xa3, + 0x93, 0x27, 0x1b, 0x53, 0x68, 0x3f, 0x3f, 0x38, 0x5e, 0xfc, + 0x09, 0xad, 0x9b, 0xfc, 0x7c, 0x71, 0x50, 0xfe, 0x0b, 0x82, + 0xbb, 0xae, 0xae, 0xc6, 0xad, 0xfd, 0xb8, 0xd5, 0xc3, 0xfd, + 0x35, 0x1a, 0x7d, 0x57, 0x3b, 0x32, 0x0d, 0xde, 0xde, 0x07, + 0x7b, 0xfe, 0xa8, 0x5d, 0x2b, 0xfe, 0xee, 0xa7, 0x0a, 0x6f, + 0x2b, 0xe3, 0xde, 0x4f, 0x4f, 0xf9, 0x88, 0xff, 0x19, 0x25, + 0x73, 0xff, 0xa7, 0xcc, 0x27, 0xc6, + }, + { + /* 5 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x8d, 0x31, 0x64, + 0xec, 0xeb, 0x0f, 0x2a, 0x37, 0x99, 0x90, 0xc4, 0xf6, 0x30, + 0xb8, 0xf6, 0x47, 0xd9, 0x62, 0xc8, 0x1b, 0x15, 0x1e, 0x54, + 0x6e, 0xf1, 0xe3, 0x4b, 0x2f, 0x60, 0xb3, 0x2f, 0x85, 0x54, + 0x53, 0xac, 0xf7, 0xfe, 0x11, 0x7e, 0x59, 0x68, 0x73, 0x8f, + 0xd9, 0x50, 0x0b, 0xd9, 0x8e, 0x71, 0xc4, 0x53, 0x36, 0x2a, + 0x3c, 0xa8, 0xdc, 0x21, 0x05, 0x96, 0x5e, 0xc0, 0xa5, 0x5e, + 0x4c, 0xfc, 0xf5, 0x37, 0xda, 0xc1, 0x33, 0x82, 0xeb, 0xb8, + 0x95, 0x52, 0xa8, 0xf0, 0x1d, 0xa8, 0xc9, 0xa8, 0xa6, 0x9b, + 0x2d, 0x3f, 0x22, 0xfc, 0xb2, 0xd0, 0xe6, 0xdd, 0x71, 0xa0, + 0x16, 0x71, 0x0b, 0x25, 0x97, 0xff, 0xc1, 0xd4, 0x2d, 0xd6, + 0x85, 0x49, 0x76, 0x19, 0x87, 0x90, 0xae, 0x87, 0xdf, 0xe2, + 0x4b, 0xa6, 0x6c, 0x54, 0x78, 0x93, 0x7b, 0x42, 0x0a, 0xef, + 0xbc, 0x43, 0x89, 0xbc, 0x1d, 0x6f, 0x7a, 0xc2, 0x80, 0xbf, + 0x77, 0xb9, 0x4c, 0xdb, 0x9a, 0x2b, 0x4a, 0x73, 0x31, 0x4a, + 0x98, 0x3b, 0x29, 0x6e, 0x77, 0x41, 0x66, 0xc7, 0x15, 0xb3, + 0xe9, 0xa4, 0x93, 0x23, 0x3a, 0x93, 0x5a, 0xb6, 0x18, 0x0a, + 0x9b, 0xaa, 0x69, 0xed, 0x22, 0x2a, 0x79, 0x60, 0x65, 0x13, + 0x82, 0x65, 0x51, 0x93, 0x8f, 0xf5, 0x5a, 0x7e, 0x44, 0x3b, + 0xa7, 0x63, 0x0f, 0x79, 0xe2, 0x83, 0x2c, 0xe2, 0x93, 0x1e, + 0xbe, 0x91, 0xb6, 0x95, 0x4b, 0x11, 0x90, 0xfa, 0x9f, 0xbd, + 0x14, 0xb3, 0x94, 0x14, 0x16, 0x4a, 0xed, 0x3d, 0x41, 0x6b, + 0x5a, 0x6f, 0xc9, 0x92, 0xec, 0x32, 0xcd, 0xe3, 0x9f, 0xcd, + 0xd4, 0xc7, 0xdc, 0x59, 0xad, 0x80, 0x55, 0x45, 0xfe, 0x0b, + 0x7c, 0xf6, 0x3b, 0xd3, 0x27, 0x3b, 0x7d, 0x07, 0x96, 0x8f, + 0xd8, 0xa8, 0xf0, 0xe5, 0xf6, 0x84, 0x14, 0x1d, 0xbb, 0x86, + 0xd1, 0xbb, 0xbf, 0x8a, 0xa7, 0xeb, 0x34, 0x43, 0xff, 0xcf, + 0xc1, 0x1d, 0x84, 0xd9, 0x4d, 0xb6, 0x69, 0x4d, 0x3a, 0xde, + 0xf4, 0x47, 0xc3, 0xbd, 0xee, 0xb1, 0x98, 0x75, 0xf7, 0x56, + 0x94, 0xe6, 0x62, 0x94, 0xf8, 0x53, 0xc5, 0x23, 0x2f, 0x56, + 0xe1, 0x9b, 0xaf, 0xec, 0x67, 0x92, 0x62, 0xd6, 0xda, 0x62, + 0xf3, 0x76, 0x52, 0xdc, 0xee, 0x82, 0xcc, 0x4d, 0x2a, 0xa5, + 0x11, 0x8b, 0xe5, 0x46, 0x74, 0xe5, 0x31, 0xfb, 0x63, 0xb8, + 0x02, 0x69, 0xc3, 0x67, 0x1d, 0x3c, 0x81, 0x4f, 0x13, 0x76, + 0xcc, 0x13, 0xb4, 0xaf, 0x30, 0x14, 0xf5, 0x97, 0xd2, 0x19, + 0x44, 0x54, 0xf2, 0xc0, 0xca, 0x26, 0xc7, 0xca, 0x76, 0x22, + 0x01, 0x70, 0x19, 0x7c, 0xdd, 0x33, 0x73, 0xcd, 0x62, 0x04, + 0x3c, 0x16, 0x7f, 0x3c, 0xa2, 0xe5, 0xdd, 0x29, 0xb4, 0xfc, + 0x88, 0x76, 0x8d, 0xc6, 0x1e, 0xf2, 0x07, 0xc5, 0x58, 0x07, + 0x60, 0x68, 0xec, 0x4d, 0x58, 0x17, 0x87, 0x5c, 0xba, 0x5f, + 0x8e, 0x36, 0xf1, 0xf5, 0xe0, 0xf1, 0xe5, 0x3c, 0xbf, 0xe1, + 0xaf, 0xe9, 0x96, 0x22, 0xe3, 0x37, 0xfd, 0xb9, 0x28, 0xa5, + 0xeb, 0x28, 0x27, 0xb1, 0x8e, 0x85, 0x43, 0x02, 0x99, 0x08, + 0xd4, 0xae, 0x6d, 0x7d, 0xde, 0x95, 0x53, 0xde, 0x2c, 0x94, + 0x19, 0x7a, 0x82, 0xd6, 0xb4, 0xde, 0x51, 0xe7, 0x1b, 0x64, + 0x59, 0x05, 0xfd, 0x59, 0xee, 0x19, 0x28, 0x1e, 0x6e, 0x3d, + 0xbb, 0xf4, 0x66, 0x7e, 0x8b, 0xa0, 0xaf, 0x35, 0x45, 0xaf, + 0x6b, 0x4d, 0x7b, 0xb2, 0x99, 0xc3, 0xaa, 0x8a, 0x3f, 0x16, + 0xf8, 0x2f, 0x76, 0x65, 0x4e, 0x76, 0xa9, 0xc0, 0x4a, 0xd6, + 0x75, 0x28, 0xa5, 0xa0, 0x08, 0x8f, 0x68, 0xeb, 0x80, 0x55, + 0xf6, 0x80, 0xfa, 0x0e, 0xef, 0xdd, 0x73, 0x93, 0x23, 0x09, + 0x2f, 0xcb, 0x28, 0x3a, 0xb5, 0xcf, 0x61, 0xb5, 0x38, 0x83, + 0xde, 0xb9, 0x9f, 0x78, 0x2c, 0x23, 0x18, 0x52, 0xb8, 0xfe, + 0x43, 0xff, 0xd9, 0x43, 0xbd, 0xd7, 0x8d, 0x15, 0x68, 0x86, + 0x3d, 0x5d, 0x41, 0x3a, 0xcb, 0x71, 0x9a, 0xaf, 0xd2, 0x9a, + 0x7f, 0x5a, 0xbc, 0x71, 0x84, 0x6d, 0x32, 0x77, 0x76, 0xa3, + 0x5b, 0xb5, 0x6c, 0x9f, 0x6a, 0x6c, 0x74, 0x7f, 0x2b, 0x8e, + 0x45, 0xb9, 0x1f, 0xa1, 0xf3, 0xea, 0x2d, 0xac, 0xeb, 0x0f, + 0xc4, 0xeb, 0xb6, 0xf2, 0x1a, 0xea, 0xa9, 0x52, 0x10, 0x8b, + 0xc4, 0x73, 0xbd, 0x68, 0x1d, 0x3f, 0x7c, 0x1d, 0x33, 0xa6, + 0x49, 0x46, 0x5e, 0xac, 0x01, 0xf5, 0x9d, 0x1b, 0xce, 0xe7, + 0xc4, 0x6f, 0x77, 0xc4, 0xf1, 0x2b, 0x78, 0x22, 0xb2, 0x47, + 0x0e, 0xdf, 0xaa, 0x82, 0x5e, 0x23, 0x32, 0x5f, 0xcf, 0x32, + 0x25, 0xec, 0xa4, 0x7b, 0x1f, 0xc7, 0x5b, 0x9a, 0x54, 0x89, + 0x22, 0xd5, 0x09, 0x8c, 0xe8, 0x09, 0xe7, 0x61, 0x95, 0x1f, + 0xf3, 0x2c, 0x54, 0xb0, 0x63, 0x10, 0xb2, 0x11, 0xff, 0xbc, + 0x50, 0xff, 0x62, 0x35, 0xc6, 0xb3, 0x04, 0xd2, 0x45, 0xce, + 0x3a, 0x78, 0xc1, 0x9e, 0x26, 0xec, 0x5b, 0x26, 0xa0, 0xb8, + 0xf7, 0xd7, 0xe8, 0x39, 0x4a, 0xe4, 0x0d, 0xe1, 0x51, 0x5a, + 0xd0, 0xdc, 0xe3, 0xd0, 0xab, 0x9d, 0x60, 0x28, 0x29, 0xed, + 0x67, 0x32, 0x88, 0xa8, 0x27, 0x43, 0x57, 0x4c, 0x4d, 0x57, + 0x69, 0x10, 0x51, 0x4c, 0xc5, 0x06, 0x68, 0x18, 0xbf, 0x31, + 0xb7, 0x87, 0xa1, 0x7c, 0xf5, 0xa1, 0xec, 0x44, 0x02, 0xe0, + 0x32, 0xf8, 0x79, 0x66, 0xe6, 0x59, 0xc4, 0x08, 0x78, 0x2c, + 0xfe, 0x78, 0x2e, 0xc9, 0x33, 0x84, 0xde, 0x13, 0x76, 0x4c, + 0xd1, 0xc0, 0x54, 0xcc, 0x8e, 0x1c, 0x46, 0x8e, 0x87, 0x09, + 0x79, 0x52, 0xab, 0x3b, 0xd3, 0xec, 0xd9, 0x4f, 0x3c, 0x27, + 0x0e, 0x49, 0xb0, 0x0e, 0x45, 0x84, 0x48, 0x36, 0x47, 0xd0, + 0xdc, 0xc6, 0xee, 0xd6, 0xac, 0xe3, 0xf8, 0x79, 0x08, 0xf8, + 0xc0, 0xd0, 0x1b, 0x9a, 0xb0, 0x2e, 0xcd, 0xb8, 0xb7, 0xbe, + 0xdf, 0x6c, 0x21, 0x29, 0x03, 0x21, 0x02, 0x5d, 0x2a, 0xfe, + 0x5c, 0xc5, 0xc2, 0x92, 0x80, 0x27, 0x4f, 0xa8, 0xd7, 0x19, + 0xbb, 0xd7, 0x09, 0x78, 0xbd, 0x01, 0x9d, 0x11, 0xef, 0x44, + 0x05, 0x6e, 0x39, 0xb1, 0x50, 0x89, 0x15, 0x50, 0xcb, 0xf5, + 0x8c, 0x65, 0x71, 0xfa, 0xe0, 0x6e, 0x32, 0xf7, 0xa9, 0x75, + 0xa6, 0xb9, 0xad, 0xa6, 0x4e, 0xa1, 0xdf, 0xc9, 0x86, 0x04, + 0xf1, 0x10, 0x6b, 0x9f, 0xda, 0xfa, 0x7f, 0xe9, 0xa6, 0x7f, + 0x8c, 0x2c, 0xee, 0xad, 0x6a, 0xef, 0xfe, 0x3a, 0x5c, 0x06, + 0x4a, 0x3e, 0x89, 0xd9, 0x1e, 0x89, 0x58, 0xeb, 0x32, 0xf4, + 0xc7, 0x6f, 0xab, 0x7f, 0xa2, 0x0d, 0x36, 0xc8, 0xb2, 0x0a, + 0x39, 0xb2, 0x9a, 0x66, 0x03, 0x90, 0x2b, 0x84, 0xa4, 0x55, + 0x95, 0x94, 0xa6, 0x0c, 0x44, 0x3a, 0x81, 0x44, 0x1f, 0x32, + 0x50, 0x3c, 0xdc, 0x7a, 0xb5, 0x2b, 0xcc, 0xfc, 0xd5, 0x83, + 0x9d, 0x6a, 0x8a, 0x9d, 0xdd, 0xbf, 0x61, 0x58, 0x30, 0x91, + 0xba, 0x01, 0xfb, 0x65, 0x45, 0x47, 0x6b, 0x5a, 0x32, 0x6b, + 0xd6, 0x9a, 0xf6, 0xa7, 0xf1, 0x45, 0x97, 0xd7, 0x7e, 0x2c, + 0x33, 0x5e, 0xec, 0xca, 0x9c, 0xec, 0x14, 0x17, 0xc7, 0xc3, + 0x1d, 0xae, 0x98, 0xfd, 0x49, 0xb5, 0xa3, 0x9a, 0x1a, 0xfa, + 0x24, 0x1a, 0x91, 0x43, 0x94, 0x6f, 0xea, 0x50, 0x89, 0x83, + 0x10, 0xdd, 0xd0, 0x15, 0xc3, 0xaa, 0x2f, 0xc3, 0x53, 0xce, + 0xa5, 0x0b, 0x06, 0xbb, 0x86, 0xa9, 0x27, 0x44, 0x40, 0xd1, + 0x35, 0x9a, 0x97, 0x35, 0x37, 0x1c, 0x1d, 0x79, 0xe6, 0xe5, + 0x46, 0x12, 0x5e, 0x55, 0x50, 0x74, 0xa9, 0x5d, 0xc2, 0xa9, + 0xf5, 0x91, 0x2c, 0x1d, 0x0a, 0x0e, 0x49, 0x38, 0x69, 0xcc, + 0xc0, 0xb0, 0x5f, 0x6d, 0x7a, 0x5f, 0x70, 0xc5, 0x7f, 0xb1, + 0xfd, 0xf0, 0x58, 0x46, 0x30, 0xa4, 0xb3, 0x3f, 0x86, 0x3d, + 0x71, 0x86, 0xb2, 0x48, 0x4e, 0xd5, 0x11, 0x1b, 0x57, 0x6c, + 0x07, 0x3d, 0x23, 0xfb, 0x70, 0x0d, 0xc9, 0x70, 0xb9, 0x6d, + 0xd9, 0x2a, 0xd0, 0xcf, 0x7a, 0xba, 0x82, 0x74, 0x55, 0xe2, + 0xf7, 0x9d, 0x67, 0xf7, 0x7b, 0xe0, 0xe8, 0x4e, 0x3c, 0x24, + 0x75, 0x90, 0xb5, 0xed, 0xc5, 0x26, 0x01, 0xad, 0xdf, 0x01, + 0xfe, 0xb4, 0xbb, 0xe2, 0xcb, 0xda, 0x64, 0xee, 0xec, 0x85, + 0xb6, 0xa9, 0xd8, 0xfd, 0xd4, 0xd8, 0x3c, 0x39, 0x8a, 0x86, + 0x27, 0x31, 0x6b, 0xc4, 0xdb, 0x1c, 0x26, 0x6d, 0x2e, 0xcd, + 0x6c, 0x2e, 0xe8, 0xfe, 0x56, 0xdf, 0x8a, 0xb1, 0x3e, 0x81, + 0x25, 0x17, 0x5a, 0x9b, 0x15, 0x1e, 0x4b, 0x15, 0x2a, 0x73, + 0x67, 0xbb, 0x66, 0x5a, 0x31, 0xab, 0x12, 0x8e, 0xca, 0x5f, + 0xe3, 0x2e, 0xf3, 0xe3, 0xaf, 0x27, 0x34, 0x17, 0x91, 0xa4, + 0x20, 0xd5, 0x4b, 0xe6, 0xb9, 0xd0, 0x3a, 0x7e, 0xf8, 0x3a, + 0x6d, 0xaa, 0x05, 0x73, 0x7d, 0x4f, 0x2f, 0xff, 0x7c, 0x7f, + 0x29, 0x14, 0xcc, 0x4e, 0x40, 0xcc, 0x66, 0x8f, 0x92, 0x8c, + 0xbc, 0x9b, 0x02, 0x29, 0xf9, 0x36, 0x5f, 0x0d, 0x4b, 0xde, + 0xee, 0x4b, 0xa4, 0x02, 0xa3, 0xe8, 0x50, 0x70, 0x0d, 0x03, + 0xce, 0xaf, 0xcf, 0xc9, 0xbd, 0xee, 0x56, 0xbd, 0x21, 0x56, + 0xf0, 0x44, 0xa7, 0x8e, 0x1c, 0x7d, 0x97, 0xc7, 0xbc, 0x46, + 0x64, 0xbe, 0x5d, 0x64, 0xe3, 0xdb, 0xc1, 0x20, 0x4b, 0x65, + 0x13, 0x57, 0xa0, 0x5e, 0x2c, 0x82, 0x92, 0x8e, 0xe5, 0x92, + 0x4a, 0x1b, 0x8b, 0xf6, 0x3e, 0x4d, 0xb6, 0xf7, 0xa8, 0xd1, + 0x44, 0x69, 0x12, 0xdb, 0x13, 0x12, 0x88, 0x96, 0xba, 0x92, + 0xd2, 0xa6, 0xb9, 0xdd, 0x9f, 0x48, 0xd4, 0xad, 0xe4, 0xeb, + 0xab, 0xe4, 0x0d, 0xc2, 0xe9, 0x3e, 0x25, 0x58, 0xa8, 0xa3, + 0xc6, 0x20, 0xa7, 0x22, 0x3d, 0xbb, 0xa0, 0x3d, 0xcf, 0x4f, + 0xd8, 0x5a, 0xc9, 0xb3, 0xa7, 0x89, 0xf1, 0xb9, 0x37, 0xe6, + 0xcb, 0x8b, 0x18, 0xcb, 0xc4, 0x6a, 0x4f, 0xa5, 0x08, 0x67, + 0x8a, 0x5f, 0x74, 0xf0, 0x41, 0xff, 0x4c, 0x1b, 0xb6, 0x4c, + 0x06, 0xe7, 0x7e, 0xc1, 0xe4, 0x8c, 0x85, 0x75, 0x43, 0x69, + 0xd1, 0x3b, 0xba, 0x2b, 0x0e, 0xba, 0x83, 0xb3, 0x2d, 0x6d, + 0x13, 0x72, 0x94, 0x0b, 0x1a, 0x01, 0xa2, 0xb4, 0x63, 0x7b, + 0x05, 0x63, 0x41, 0x3e, 0x1c, 0x09, 0xff, 0x99, 0x9b, 0x21, + 0x2d, 0x98, 0x32, 0x70, 0x95, 0x4b, 0xbd, 0x95, 0x95, 0xf9, + 0xc0, 0x50, 0x52, 0x19, 0xce, 0x64, 0xd3, 0x93, 0x4e, 0x86, + 0xae, 0x98, 0x9a, 0xae, 0x57, 0x74, 0xf1, 0x34, 0xbe, 0xf2, + 0xc1, 0x4e, 0xe4, 0x0a, 0xde, 0x42, 0x58, 0xa8, 0x22, 0x58, + 0xd2, 0x20, 0xa2, 0x98, 0x49, 0x0c, 0xd0, 0x30, 0xbd, 0x62, + 0xad, 0xcd, 0x81, 0xf8, 0x29, 0x81, 0x10, 0xad, 0x93, 0xfc, + 0xa5, 0xe7, 0xdf, 0x1a, 0x8a, 0xfb, 0x3d, 0x09, 0x77, 0xc8, + 0x91, 0x77, 0x1b, 0x88, 0x04, 0x03, 0x64, 0x33, 0xf2, 0xcc, + 0x0f, 0xb2, 0x4b, 0x10, 0xf0, 0x58, 0x3f, 0xf0, 0xd9, 0x05, + 0x35, 0x67, 0x88, 0xd8, 0xfd, 0xe6, 0x38, 0x2b, 0xdb, 0xd4, + 0x06, 0x68, 0x87, 0x06, 0x5c, 0x51, 0x66, 0xcb, 0x7f, 0x26, + 0xec, 0x98, 0x61, 0x43, 0xa8, 0x5b, 0xdf, 0x38, 0x8c, 0xdf, + 0x9e, 0xdc, 0x57, 0xaf, 0x93, 0xcd, 0xe3, 0xb2, 0x56, 0xda, + 0x38, 0x9f, 0x29, 0x08, 0x34, 0x29, 0xcd, 0x12, 0xf2, 0xa4, + 0x95, 0x76, 0x65, 0x1b, 0x71, 0x9e, 0x78, 0x4e, 0x1c, 0x92, + 0xa3, 0x1c, 0x0f, 0x9f, 0xc3, 0xc0, 0x79, 0x9d, 0x6a, 0x31, + 0x46, 0x07, 0xe8, 0x8a, 0xea, 0xa2, 0x1b, 0xea, 0x8a, 0xcb, + 0x90, 0x6c, 0x8e, 0x63, 0x7b, 0x4f, 0x1f, 0x6f, 0x9b, 0x05, + 0x33, 0xf2, 0x10, 0x33, 0x48, 0x46, 0xa1, 0x08, 0x62, 0x88, + 0x74, 0x65, 0x28, 0xf6, 0x0b, 0xc1, 0xc5, 0xc2, 0xa8, 0xc5, + 0x43, 0x63, 0x36, 0xf7, 0xa3, 0x5c, 0x59, 0xb3, 0xad, 0xbf, + 0x7d, 0xd8, 0x42, 0x52, 0x06, 0x42, 0x81, 0xee, 0x07, 0x93, + 0x4f, 0xb7, 0x56, 0x99, 0x9a, 0x26, 0xed, 0x1c, 0xb4, 0x62, + 0xbe, 0xb4, 0x04, 0xba, 0x54, 0x3f, 0xb8, 0x49, 0x47, 0xe7, + 0xc3, 0x4e, 0x9e, 0x93, 0x6d, 0x32, 0xb5, 0x6d, 0xc6, 0x37, + 0x65, 0x5b, 0x54, 0xa2, 0x48, 0xcd, 0xf4, 0xd7, 0x0e, 0x57, + 0x9b, 0x02, 0x0d, 0x9b, 0x12, 0xf0, 0xb9, 0x02, 0xf9, 0x22, + 0x1d, 0x88, 0x0a, 0xdc, 0x72, 0xa1, 0xa0, 0xd1, 0x2a, 0xa0, + 0xd0, 0x7d, 0x88, 0x66, 0x15, 0xc9, 0x12, 0xa2, 0x3d, 0x45, + 0xe2, 0x65, 0x56, 0xe1, 0x92, 0x56, 0x55, 0x29, 0xdb, 0xca, + 0xe2, 0x37, 0x03, 0xdc, 0x64, 0x2d, 0x91, 0xea, 0x8f, 0xb1, + 0x99, 0x8f, 0x97, 0xa4, 0xea, 0xae, 0x0e, 0xdc, 0x0c, 0xf6, + 0x53, 0xb4, 0x01, 0x2e, 0x79, 0x81, 0x21, 0x79, 0x9c, 0x81, + 0x7d, 0x51, 0xcf, 0x08, 0x21, 0x20, 0xd6, 0xfd, 0x77, 0x37, + 0xfe, 0x11, 0x8f, 0xfe, 0x5e, 0x0c, 0x4c, 0x35, 0x23, 0xe3, + 0x2e, 0x0a, 0xe1, 0x64, 0xe7, 0xf3, 0x08, 0x21, 0x37, 0x08, + 0xdb, 0x58, 0x1f, 0x99, 0xd4, 0x1d, 0x3f, 0x74, 0xb8, 0x0c, + 0x94, 0x7c, 0xd1, 0x71, 0x3c, 0xd1, 0x19, 0xd5, 0x2e, 0xfd, + 0x38, 0xf6, 0x30, 0x5e, 0x8f, 0x95, 0x04, 0xb8, 0x27, 0x41, + 0x84, 0x27, 0xb0, 0x15, 0x64, 0x2b, 0x4d, 0xde, 0x95, 0xfe, + 0x87, 0x1a, 0x6c, 0x53, 0xa7, 0x14, 0x72, 0xa7, 0x72, 0x98, + 0x55, 0x4f, 0xa1, 0x35, 0x9a, 0xd4, 0xb0, 0x83, 0xfc, 0x97, + 0x51, 0x24, 0xca, 0x51, 0xf7, 0xcc, 0x06, 0xe3, 0x56, 0xcb, + 0x8b, 0xaa, 0xe9, 0xeb, 0x8f, 0x18, 0x88, 0x74, 0xc1, 0x88, + 0x35, 0x41, 0x37, 0x87, 0xba, 0x20, 0x84, 0x80, 0xde, 0x72, + 0x1f, 0xdc, 0x7e, 0x44, 0x79, 0x7e, 0x3e, 0x64, 0xa0, 0x78, + 0x7b, 0xf4, 0xa9, 0x56, 0x5b, 0x3b, 0x69, 0xc5, 0xf9, 0xd4, + 0xd7, 0xf9, 0xfc, 0xe9, 0x91, 0x1c, 0x97, 0x1f, 0xa6, 0x7c, + 0x6c, 0xa2, 0xf9, 0x01, 0x0f, 0xe4, 0x6f, 0x0f, 0x79, 0xbd, + 0xc2, 0xb0, 0x60, 0xe1, 0xb7, 0x02, 0x35, 0xca, 0x8a, 0x8e, + 0xd6, 0xb4, 0x64, 0xd6, 0xbb, 0x30, 0xf3, 0xd4, 0x8c, 0x0a, + 0xb8, 0x28, 0x02, 0x53, 0x1a, 0x4a, 0x20, 0x84, 0xdc, 0x20, + 0x6f, 0xf7, 0x2f, 0x8d, 0x21, 0x8a, 0xed, 0x6d, 0xfc, 0x58, + 0x66, 0xbc, 0x1b, 0x57, 0xfb, 0x1b, 0xad, 0x7a, 0x1e, 0xe9, + 0xcd, 0x61, 0xe2, 0x47, 0xcb, 0xc1, 0xf6, 0x78, 0xed, 0x67, + 0x43, 0xed, 0x28, 0x2e, 0x4d, 0x45, 0x3a, 0x9f, 0xf3, 0x39, + 0x92, 0xa9, 0x85, 0xf7, 0x34, 0x37, 0x48, 0x34, 0xea, 0xa3, + 0x7c, 0x21, 0xd6, 0x74, 0xfc, 0x13, 0xa5, 0x30, 0x15, 0x33, + 0xc2, 0x07, 0xf0, 0xc2, 0xe1, 0x86, 0xeb, 0xde, 0x17, 0xa0, + 0xd1, 0xc5, 0x20, 0x79, 0x63, 0x2a, 0x45, 0x97, 0x5e, 0x45, + 0x23, 0x0b, 0xda, 0xba, 0xfb, 0x4b, 0xde, 0xef, 0x17, 0xe0, + 0xf3, 0xee, 0xb3, 0xa7, 0xe6, 0xb3, 0xa6, 0x5f, 0x89, 0x16, + 0x0c, 0xb5, 0xcf, 0x91, 0x4e, 0x88, 0x80, 0x61, 0x6a, 0xf7, + 0xed, 0x6a, 0x64, 0xd2, 0xb8, 0x72, 0xe0, 0x5e, 0xc0, 0xbb, + 0x79, 0x11, 0x10, 0xa5, 0x9c, 0xc7, 0x55, 0x9c, 0x6e, 0x38, + 0x3a, 0xf2, 0x0f, 0x09, 0x8c, 0x24, 0xbc, 0xaa, 0xa0, 0xe8, + 0x91, 0xba, 0x47, 0x91, 0xac, 0xb5, 0x0b, 0x96, 0xe3, 0xe2, + 0x83, 0x0e, 0x8b, 0x33, 0x30, 0x2c, 0x67, 0x8a, 0xff, 0x67, + 0x29, 0xe1, 0x58, 0x3a, 0x14, 0x1c, 0x92, 0x70, 0xd2, 0x5b, + 0x43, 0xa3, 0xbe, 0xda, 0xf4, 0xbe, 0xeb, 0x6c, 0x69, 0x5e, + 0xf8, 0xf7, 0x9d, 0x5a, 0xe5, 0xc2, 0xd3, 0x67, 0x48, 0xea, + 0x4c, 0x48, 0xe0, 0x49, 0xfe, 0xa1, 0x39, 0x23, 0xb0, 0x8c, + 0x60, 0x8b, 0xa5, 0x7e, 0xcf, 0x7a, 0xe2, 0xcf, 0x22, 0xc4, + 0xcf, 0xc5, 0xd5, 0xc8, 0xbf, 0xa6, 0x57, 0x12, 0x35, 0xba, + 0x39, 0x4a, 0x5a, 0x39, 0xa7, 0x90, 0x9c, 0x69, 0x22, 0x36, + 0xae, 0xd8, 0x0e, 0x7a, 0x46, 0x35, 0xe0, 0x1a, 0x51, 0xe0, + 0x65, 0x1d, 0xad, 0x0d, 0xce, 0xdd, 0xa1, 0xf2, 0x39, 0xe3, + 0xd6, 0xf1, 0x16, 0x2a, 0xe9, 0x16, 0xb1, 0xda, 0x71, 0x54, + 0x63, 0x5d, 0xf4, 0xb7, 0xc7, 0xe8, 0xaa, 0x07, 0x2d, 0xf9, + 0xce, 0x2d, 0x73, 0x57, 0x40, 0x30, 0x8f, 0xb6, 0xfb, 0x9d, + 0xf0, 0x71, 0x3a, 0xc3, 0xdb, 0xc9, 0x76, 0xdb, 0xf6, 0x03, + 0x13, 0x9c, 0x78, 0x48, 0xea, 0xe3, 0xa9, 0x19, 0x49, 0x4c, + 0x02, 0x99, 0x7d, 0x02, 0x34, 0x8e, 0x22, 0xf8, 0x94, 0xa3, + 0xe5, 0xc9, 0x9e, 0x80, 0xd9, 0x88, 0xf4, 0xa9, 0xc5, 0xf4, + 0x3f, 0xab, 0xb5, 0x07, 0x55, 0x77, 0xc8, 0x1f, 0x1b, 0xc9, + 0xaf, 0x91, 0x73, 0x39, 0x6b, 0x73, 0xfd, 0x26, 0x84, 0x63, + 0xb9, 0x9c, 0xc7, 0x35, 0x2c, 0x50, 0x3f, 0x55, 0x85, 0x09, + 0xd3, 0x85, 0x78, 0x72, 0xd7, 0xcf, 0x4e, 0x62, 0xd6, 0x4b, + 0x75, 0x38, 0x4c, 0xda, 0x5c, 0x59, 0xd8, 0x5c, 0xba, 0xff, + 0xe6, 0xab, 0xa2, 0x89, 0xd9, 0x61, 0x42, 0xa1, 0xdc, 0x1e, + 0xaa, 0x69, 0x60, 0xaa, 0x13, 0x3f, 0xac, 0x7d, 0xd7, 0xa1, + 0x7c, 0xc1, 0x4a, 0x2e, 0xb4, 0xf5, 0x2a, 0x3c, 0x96, 0x2a, + 0xd1, 0xb2, 0x9d, 0x19, 0x3b, 0x4a, 0x73, 0xeb, 0x7d, 0xb7, + 0x24, 0x31, 0xdc, 0x0c, 0x2e, 0xdc, 0x54, 0xe6, 0xce, 0xb5, + 0xcc, 0xb4, 0x62, 0x95, 0x24, 0xdf, 0x57, 0xbe, 0x05, 0x5c, + 0x25, 0x05, 0x96, 0x6b, 0xff, 0xd1, 0x20, 0x5f, 0x6d, 0xbf, + 0x13, 0x46, 0xc7, 0x7a, 0xf3, 0x6c, 0x9d, 0xf3, 0x9d, 0x4e, + 0x68, 0x2e, 0xe1, 0x8b, 0x40, 0x69, 0x96, 0x0f, 0xb1, 0x63, + 0x74, 0xfc, 0x33, 0x74, 0x5f, 0xc3, 0x59, 0x4a, 0x0d, 0x60, + 0x4f, 0x43, 0xa1, 0x96, 0x21, 0xa7, 0x82, 0xcc, 0x8b, 0x82, + 0xda, 0x97, 0x0a, 0xe6, 0xfa, 0x9e, 0x5e, 0x3d, 0xf8, 0xfe, + 0x52, 0x28, 0x5b, 0x9c, 0x80, 0x5b, 0x18, 0x1a, 0x3b, 0x82, + 0x16, 0x75, 0x51, 0x17, 0xcf, 0x67, 0xc2, 0xec, 0xad, 0xac, + 0x38, 0xad, 0xcc, 0xdd, 0xe7, 0xdb, 0xbb, 0xf5, 0x04, 0x52, + 0x31, 0x6c, 0xbe, 0x1a, 0x96, 0x7f, 0x1f, 0x96, 0x0e, 0x50, + 0xd6, 0xbf, 0x57, 0x1e, 0x0b, 0x78, 0x06, 0xf5, 0x2e, 0xde, + 0x60, 0x4f, 0xa7, 0x60, 0x8b, 0x04, 0x85, 0x13, 0xa0, 0xe0, + 0x1a, 0x06, 0x5f, 0x9d, 0x5d, 0x51, 0xb9, 0x1f, 0xac, 0xb9, + 0x49, 0x89, 0xb4, 0x77, 0x4c, 0x0b, 0x15, 0x2c, 0x68, 0x04, + 0xcd, 0x95, 0x4f, 0x2f, 0x14, 0x4f, 0x42, 0xac, 0x23, 0x88, + 0x8d, 0xdf, 0x38, 0xfa, 0xed, 0x4d, 0xbb, 0x8c, 0xc8, 0xbf, + 0xba, 0xc8, 0x80, 0x21, 0x12, 0xec, 0x61, 0x34, 0x37, 0xd0, + 0xda, 0xd4, 0x2b, 0x48, 0x3e, 0x8f, 0x02, 0x3e, 0x05, 0x75, + 0x41, 0x40, 0x96, 0xca, 0x26, 0xae, 0x83, 0xbc, 0x58, 0xc7, + 0xe7, 0xdf, 0x09, 0xe7, 0xc7, 0xf8, 0x70, 0x24, 0x7a, 0x21, + 0x29, 0x84, 0xb4, 0x25, 0xc8, 0x03, 0x11, 0xef, 0xb1, 0x11, + 0x94, 0x36, 0xd5, 0x2f, 0x7c, 0x9a, 0xaf, 0x2d, 0x93, 0x61, + 0x88, 0xd2, 0x24, 0x75, 0x26, 0x24, 0x56, 0xbb, 0xe4, 0x4b, + 0x90, 0x71, 0xa0, 0x07, 0xa4, 0xf8, 0x18, 0x16, 0xd2, 0x45, + 0x9e, 0xd2, 0xd3, 0xef, 0xb7, 0xe7, 0x67, 0x8f, 0xb1, 0x79, + 0xfd, 0x90, 0x6b, 0x99, 0x0b, 0x15, 0x95, 0x0b, 0x11, 0x62, + 0x86, 0x83, 0x8b, 0x64, 0xbe, 0x53, 0xca, 0x09, 0xfb, 0x5d, + 0xfd, 0x25, 0x2d, 0xfd, 0x1a, 0x47, 0x11, 0x7c, 0x4a, 0xb0, + 0x93, 0x85, 0x4f, 0x40, 0x8d, 0x44, 0x7a, 0xb5, 0x83, 0x7a, + 0xd8, 0xca, 0x20, 0x18, 0xa6, 0x5b, 0x9c, 0xaf, 0x78, 0xd9, + 0x1d, 0x80, 0x8c, 0x85, 0x3b, 0x8c, 0x5d, 0x9e, 0x73, 0xb4, + 0x51, 0xa5, 0x8d, 0xd1, 0x21, 0xb1, 0x6e, 0x0f, 0x55, 0xd5, + 0x30, 0x55, 0x9f, 0x13, 0x42, 0xd0, 0xbd, 0x4e, 0x82, 0xfb, + 0x16, 0x28, 0xfe, 0xcb, 0xa3, 0xe5, 0x88, 0xa3, 0x4b, 0xd4, + 0x9e, 0x89, 0x10, 0xce, 0xd7, 0xbe, 0xe8, 0x23, 0x82, 0x3d, + 0x98, 0x36, 0xaf, 0x98, 0x89, 0x59, 0xaf, 0xed, 0xfc, 0x25, + 0xd8, 0x94, 0xdf, 0xba, 0x12, 0xf9, 0x6e, 0x06, 0x17, 0x6e, + 0x0c, 0x0d, 0xfc, 0x41, 0x0b, 0xdb, 0xc9, 0xea, 0x86, 0xd2, + 0x61, 0x76, 0xb7, 0x56, 0x1c, 0xb7, 0xce, 0x80, 0xcd, 0x25, + 0xe7, 0x30, 0xc6, 0xc0, 0xb1, 0x4b, 0xf1, 0xb2, 0x41, 0x66, + 0xa4, 0x41, 0xc5, 0xa5, 0x5a, 0xda, 0x26, 0xe4, 0xeb, 0x16, + 0x34, 0x02, 0x87, 0xab, 0xc6, 0xf6, 0x0a, 0xc6, 0x07, 0x28, + 0x6b, 0xbe, 0xca, 0x0f, 0xe4, 0x3c, 0x03, 0x9b, 0x17, 0x6f, + 0x30, 0xc6, 0xb2, 0x30, 0x82, 0x7c, 0x38, 0x12, 0x3d, 0xf1, + 0xf5, 0x42, 0x5a, 0xf3, 0x64, 0xe0, 0xe9, 0x96, 0xb9, 0xe9, + 0x40, 0xf1, 0x09, 0x76, 0xd1, 0x1a, 0xfa, 0x68, 0x6d, 0x6a, + 0xf4, 0x24, 0x1f, 0xa6, 0x01, 0x1f, 0xe9, 0x31, 0x43, 0xa0, + 0xa4, 0x32, 0x5f, 0xc8, 0x65, 0xe5, 0x9c, 0xcf, 0x9f, 0xf3, + 0xf7, 0x9f, 0x2b, 0xbc, 0x72, 0xc4, 0x48, 0xd9, 0x50, 0xe2, + 0x52, 0x7c, 0x0c, 0x0b, 0x69, 0xc3, 0x4f, 0x69, 0xae, 0xe8, + 0x21, 0x68, 0xbf, 0x27, 0x41, 0x9c, 0x0b, 0x14, 0x7f, 0x84, + 0xb0, 0x93, 0x44, 0xb0, 0x6c, 0x65, 0x10, 0x0c, 0x53, 0xcc, + 0x4e, 0xb6, 0x3c, 0x8d, 0xef, 0x40, 0x46, 0xa3, 0xfc, 0x46, + 0x67, 0x40, 0x87, 0xf3, 0x92, 0x18, 0x63, 0x60, 0xb9, 0xc4, + 0x99, 0x59, 0xc1, 0x33, 0x52, 0xc1, 0xa5, 0xcd, 0xb6, 0x97, + 0x7e, 0xf3, 0x6c, 0x4a, 0x8e, 0x5d, 0x09, 0x9d, 0x37, 0x03, + 0xea, 0x37, 0x20, 0x99, 0xe5, 0x3b, 0x89, 0x0d, 0x7d, 0x34, + 0xd7, 0x35, 0x7a, 0x12, 0xee, 0x53, 0xe1, 0xee, 0xe2, 0x14, + 0xd4, 0x5f, 0x65, 0xe6, 0x72, 0x1e, 0xe0, 0xac, 0xea, 0xd6, + 0x18, 0x63, 0x59, 0x18, 0x36, 0xd3, 0x08, 0x06, 0xc8, 0x66, + 0x27, 0x5b, 0x1e, 0xa7, 0x96, 0x20, 0x23, 0xb0, 0x7e, 0x23, + 0xf4, 0x5e, 0x39, 0x62, 0x24, 0x8d, 0x28, 0x71, 0x29, 0x3e, + 0x06, 0xe4, 0xd5, 0x80, 0xc6, 0xd5, 0x71, 0x0a, 0x6a, 0xce, + 0xd3, 0x73, 0x39, 0x0f, 0x70, 0x56, 0x75, 0x6b, 0x0c, 0xd0, + 0xcd, 0x0c, 0xb3, 0x87, 0x5b, 0xaa, 0x3f, 0x98, 0x36, 0x25, + 0x47, 0xcf, 0xe5, 0xaf, 0xfa, 0xe0, 0x75, 0xfa, 0xb8, 0xa2, + 0xcc, 0x55, 0xfe, 0x4c, 0x1b, 0xf3, 0xc2, 0x86, 0x93, 0xb6, + 0x7d, 0x70, 0xdb, 0x7d, 0x7a, 0x2f, 0xfd, 0x31, 0x12, 0xa7, + 0x14, 0xd9, 0xf5, 0x1f, 0x03, 0x72, 0x8b, 0x40, 0x63, 0x8b, + 0xff, 0x7b, 0xae, 0x9d, 0xe5, 0x59, 0x05, 0xa7, 0xac, 0x77, + 0x70, 0xfd, 0x52, 0x10, 0x68, 0x52, 0x3d, 0xf6, 0x9f, 0xf9, + 0x09, 0xb2, 0x0a, 0x8d, 0x9b, 0xee, 0xe0, 0x39, 0xa4, 0x20, + 0xd0, 0xa4, 0x59, 0x24, 0x27, 0x8b, 0xe9, 0xec, 0xca, 0x36, + 0xe2, 0xff, 0xf0, 0x9c, 0x38, 0xe7, 0x85, 0x38, 0x9b, 0xa9, + 0x16, 0xef, 0x05, 0x07, 0xc5, 0x1c, 0xd5, 0x66, 0x60, 0x58, + 0xce, 0xd7, 0x3d, 0xce, 0x1e, 0xfd, 0x45, 0x43, 0xf2, 0xf9, + 0xd4, 0x62, 0x8c, 0x0e, 0x13, 0xd7, 0x17, 0x87, 0x36, 0x17, + 0xdc, 0x70, 0x74, 0x27, 0x1e, 0x12, 0xdb, 0x48, 0xbb, 0x97, + 0x83, 0x13, 0xe1, 0xb7, 0x8e, 0xe1, 0xd7, 0x55, 0xe3, 0xd8, + 0xdf, 0xc6, 0xf6, 0x9e, 0x3e, 0xde, 0xf5, 0x0a, 0x66, 0x27, + 0x20, 0x66, 0x15, 0xd8, 0xd2, 0xbc, 0x33, 0x2d, 0xf9, 0xb4, + 0x09, 0x47, 0x65, 0xce, 0x90, 0x17, 0x98, 0x90, 0x90, 0x8c, + 0x81, 0x10, 0xc4, 0xd3, 0xe8, 0xca, 0x50, 0x2f, 0x16, 0x41, + 0x49, 0x47, 0x93, 0x49, 0x52, 0x01, 0xb0, 0x74, 0x28, 0x38, + 0xe7, 0xe0, 0x67, 0xb6, 0x86, 0x85, 0xbf, 0x77, 0x2b, 0xbf, + 0x86, 0xc6, 0x6c, 0x2d, 0x85, 0xb8, 0xb2, 0xa5, 0x99, 0xbd, + 0xfa, 0x73, 0x84, 0xa4, 0x0c, 0x84, 0x44, 0x4b, 0x5d, 0x49, + 0x69, 0x53, 0xbd, 0x8f, 0xae, 0x24, 0x6a, 0xb7, 0x72, 0x94, + 0xb4, 0x72, 0xc1, 0x1f, 0x0e, 0xe5, 0x9e, 0xad, 0xac, 0xf1, + 0xf7, 0x4c, 0x19, 0x38, 0xab, 0xc4, 0xbf, 0xab, 0x03, 0x92, + 0x3f, 0x81, 0x72, 0x46, 0xa3, 0xdb, 0xc0, 0xd5, 0x89, 0xfc, + 0x5d, 0xf4, 0x07, 0x5d, 0x08, 0xb7, 0xa8, 0x7e, 0xb3, 0x92, + 0x8e, 0x0d, 0x45, 0x9c, 0xff, 0xe5, 0xda, 0x64, 0xa9, 0xda, + 0xca, 0x3a, 0x99, 0x1a, 0x5f, 0x79, 0x81, 0x27, 0x72, 0x05, + 0x6f, 0x21, 0x2c, 0x54, 0x11, 0x2c, 0x4f, 0x6e, 0xca, 0xb6, + 0xa8, 0x87, 0x90, 0x59, 0x2b, 0x6d, 0x1c, 0xae, 0xf5, 0x04, + 0x1a, 0xf5, 0x8d, 0xe3, 0xfb, 0xd2, 0x44, 0x6c, 0x9f, 0x73, + 0x1c, 0xf4, 0x8c, 0x6a, 0x03, 0x34, 0xa2, 0x03, 0x24, 0x23, + 0xb1, 0x04, 0x31, 0x44, 0x3a, 0xd3, 0x14, 0x7b, 0xe4, 0x81, + 0x83, 0x61, 0x54, 0x83, 0xe6, 0xae, 0x80, 0x60, 0xdd, 0xaf, + 0x35, 0xf9, 0x23, 0xe2, 0x74, 0x45, 0x75, 0x51, 0xec, 0x75, + 0x63, 0xfa, 0xd3, 0xcc, 0x2a, 0x51, 0x24, 0x87, 0x7a, 0x8a, + 0x07, 0xca, 0xac, 0x01, 0xe7, 0xac, 0xa1, 0x77, 0xe2, 0xa8, + 0xc6, 0xba, 0x2b, 0xad, 0x4d, 0x13, 0x97, 0x0e, 0x5a, 0x31, + 0x5f, 0x5a, 0xaa, 0x52, 0x75, 0x57, 0x07, 0x6e, 0x06, 0x7b, + 0xc8, 0x5a, 0xe1, 0x17, 0xdd, 0xa1, 0xf1, 0xdd, 0x68, 0xdf, + 0x44, 0x33, 0xeb, 0x85, 0x09, 0x51, 0xff, 0xc3, 0x71, 0xd3, + 0x2b, 0x91, 0x49, 0x2b, 0xed, 0x8b, 0x17, 0x9f, 0x1c, 0x7b, + 0x18, 0x2f, 0xa6, 0xab, 0x02, 0x5c, 0xf2, 0xc1, 0x42, 0xf2, + 0x2f, 0x06, 0x26, 0xfb, 0xf0, 0x90, 0x17, 0x05, 0x91, 0x32, + 0x92, 0x98, 0x04, 0xf1, 0xfa, 0x04, 0xfb, 0xc1, 0xfa, 0xa2, + 0x5d, 0x10, 0x42, 0x40, 0x6f, 0x39, 0xee, 0x6e, 0x3f, 0x22, + 0xdd, 0x3f, 0x39, 0x4c, 0xcb, 0xc6, 0xb1, 0xfb, 0x4d, 0x6a, + 0x58, 0xa0, 0x7e, 0xaa, 0xc9, 0x12, 0x65, 0xc9, 0xbc, 0x18, + 0x98, 0x6a, 0x46, 0x05, 0x5c, 0x14, 0x01, 0xc8, 0x0d, 0x25, + 0x10, 0x42, 0x6e, 0x10, 0x7e, 0x95, 0xa9, 0x0e, 0xaa, 0xee, + 0x53, 0x3e, 0x36, 0x51, 0x9d, 0xe1, 0xe6, 0x72, 0xd6, 0xe6, + 0x75, 0xb0, 0x3e, 0xf1, 0x6b, 0x3a, 0x7e, 0xe8, 0xb3, 0x18, + 0xeb, 0xf8, 0x61, 0xe2, 0x78, 0x61, 0xb7, 0x3d, 0x0f, 0x95, + 0x87, 0xd1, 0x71, 0xc2, 0x84, 0x81, 0x7b, 0x3c, 0x97, 0xd2, + 0xc0, 0x97, 0x32, 0x69, 0x5c, 0x39, 0x70, 0x2f, 0x60, 0xbc, + 0xdd, 0xe9, 0x08, 0xb3, 0x4e, 0x82, 0xcb, 0x4e, 0xf0, 0xe4, + 0x6d, 0x5d, 0x9c, 0xc4, 0x6f, 0x96, 0xea, 0x70, 0x98, 0x77, + 0xb8, 0xb2, 0x73, 0xb8, 0xa3, 0x2a, 0xc8, 0x56, 0x9a, 0x7f, + 0xe9, 0x3f, 0xcd, 0x34, 0xd8, 0xa6, 0x8d, 0x28, 0xe4, 0x8d, + 0x61, 0xa7, 0xf9, 0x32, 0x76, 0x94, 0xe6, 0x15, 0xfa, 0xad, + 0x48, 0x62, 0x7b, 0x18, 0x5c, 0x7b, 0xe4, 0xf3, 0xaa, 0x9e, + 0x81, 0x6a, 0xf7, 0x6b, 0xa3, 0xc5, 0x3b, 0xed, 0xa2, 0x48, + 0x57, 0xa2, 0x26, 0x7e, 0x9b, 0xfa, 0x6d, 0x81, 0xf8, 0x41, + 0x94, 0x5c, 0xab, 0x29, 0x54, 0x78, 0xef, 0x54, 0x2d, 0x5b, + 0x0c, 0x05, 0xac, 0x55, 0xd5, 0x97, 0x11, 0x15, 0xdd, 0x30, + 0xd3, 0xe8, 0x41, 0xd3, 0xef, 0xd6, 0x3d, 0x61, 0x40, 0xbe, + 0xda, 0xbd, 0x26, 0x8c, 0x4d, 0xf4, 0x25, 0xd8, 0xf9, 0x25, + 0x6a, 0x82, 0x6e, 0xcd, 0xb7, 0x40, 0xcb, 0xc3, 0x7f, 0xe4, + 0x3e, 0x7b, 0xfc, 0x88, 0xf2, 0xfc, 0xa8, 0x0f, 0x5f, 0xa9, + 0x5b, 0xab, 0xc4, 0xe9, 0x48, 0x7d, 0xae, 0xbf, 0x0a, 0xb8, + 0x4a, 0x0a, 0x7c, 0xc8, 0x83, 0xf0, 0xf6, 0x2b, 0x91, 0xac, + 0xb6, 0x76, 0xd2, 0x49, 0x31, 0x6b, 0x6d, 0x31, 0xbe, 0x45, + 0xb2, 0x94, 0x1a, 0xc0, 0x9e, 0x86, 0x81, 0xef, 0x42, 0x8d, + 0xc7, 0x5b, 0xd5, 0xc7, 0x3b, 0x11, 0xe1, 0x38, 0xed, 0x3e, + 0x8f, 0xf8, 0xd8, 0x87, 0x31, 0x02, 0x1e, 0x0b, 0xde, 0x1e, + 0xf9, 0x9c, 0xd0, 0x5c, 0x01, 0xd5, 0x80, 0xd2, 0xef, 0x1e, + 0xa1, 0xc6, 0xe8, 0x3b, 0x66, 0xe8, 0xf2, 0xb9, 0x47, 0xa3, + 0xc0, 0x01, 0xad, 0x04, 0x6a, 0x57, 0xd7, 0xdf, 0x6f, 0xab, + 0xc8, 0x6f, 0x30, 0x34, 0x76, 0xc7, 0x2c, 0xea, 0xa2, 0x2e, + 0x5d, 0xce, 0x47, 0x1b, 0x99, 0x9b, 0x70, 0x99, 0xb5, 0x60, + 0x25, 0x6b, 0xdb, 0x14, 0xb3, 0x50, 0x04, 0xa6, 0x34, 0x94, + 0x40, 0xcb, 0x7b, 0x40, 0x77, 0xed, 0x14, 0x0f, 0x37, 0xff, + 0xbc, 0x7a, 0x33, 0x3f, 0xa4, 0x50, 0xb6, 0xfb, 0xc3, 0xb6, + 0xde, 0x2d, 0x5e, 0xd9, 0x42, 0xd7, 0x19, 0xda, 0x3b, 0xb0, + 0xcc, 0xbb, 0x36, 0xae, 0x35, 0x36, 0x1c, 0xa0, 0x6f, 0xbd, + 0xae, 0x3c, 0x16, 0xf0, 0x0c, 0x29, 0x5c, 0x7f, 0xc0, 0x9e, + 0x8d, 0xc0, 0x99, 0xf4, 0x3c, 0x11, 0x59, 0xc2, 0x07, 0x8e, + 0x55, 0x41, 0x2f, 0xf0, 0x19, 0xce, 0x86, 0x19, 0x5b, 0x79, + 0x0d, 0x75, 0xb5, 0x29, 0x08, 0xa4, 0x62, 0xd8, 0xbf, 0x34, + 0xef, 0xfe, 0x3e, 0xef, 0x50, 0x5c, 0x9a, 0x8a, 0x74, 0xfd, + 0x25, 0x72, 0xe7, 0x91, 0xc9, 0x2d, 0x68, 0x6e, 0x90, 0x68, + 0x92, 0xd1, 0xab, 0xee, 0x98, 0x16, 0x2a, 0x58, 0xd0, 0x08, + 0x59, 0xe9, 0x9e, 0x5e, 0x28, 0x9e, 0x17, 0x85, 0xf8, 0x42, + 0x6f, 0xe8, 0x3b, 0x26, 0x89, 0x60, 0x2a, 0x66, 0x47, 0x0e, + 0x23, 0x47, 0xd5, 0x08, 0xc9, 0x26, 0x83, 0x03, 0x34, 0x0c, + 0xbe, 0xf9, 0xba, 0xa2, 0xb1, 0x3e, 0x9b, 0xb1, 0x01, 0xcf, + 0x15, 0x7f, 0x2e, 0x83, 0x61, 0x49, 0x40, 0xf2, 0xc6, 0x54, + 0x8a, 0xed, 0xbc, 0x8a, 0xc3, 0x42, 0x24, 0x1b, 0xc2, 0x68, + 0x6e, 0x63, 0x77, 0x6b, 0x56, 0x90, 0x7c, 0xdd, 0x04, 0x7c, + 0x46, 0x16, 0x77, 0xb7, 0x35, 0x96, 0x7f, 0x1d, 0x2e, 0x03, + 0x25, 0x1f, 0xa5, 0x8d, 0x0f, 0xa5, 0x84, 0x9b, 0x46, 0xd3, + 0xd9, 0x7d, 0x70, 0x37, 0x19, 0x9a, 0xb5, 0xdb, 0x53, 0xbd, + 0xb7, 0x53, 0x8f, 0xbe, 0xd1, 0x2c, 0x18, 0xa9, 0x5d, 0xe1, + 0x9c, 0xd3, 0xc3, 0xc2, 0xd4, 0x2d, 0x19, 0xd4, 0x4d, 0x33, + 0xe0, 0x48, 0xf4, 0x42, 0x52, 0xcb, 0xab, 0x4a, 0x53, 0x06, + 0x22, 0x1d, 0xa1, 0x22, 0xc8, 0x67, 0xb3, 0xe4, 0x03, 0xbc, + 0x43, 0xb5, 0xf2, 0x22, 0x20, 0x89, 0xfb, 0x4d, 0xaa, 0xfb, + 0x0a, 0xea, 0x82, 0x80, 0xef, 0x57, 0x4c, 0x9f, 0xc5, 0xbb, + 0xb0, 0x4d, 0x0d, 0x7d, 0x12, 0x0d, + }, + { + /* 6 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xb4, 0xa6, 0xff, + 0x39, 0x2f, 0x54, 0x6c, 0xaf, 0xeb, 0xe1, 0xd4, 0xd7, 0x63, + 0x64, 0xbf, 0x43, 0xab, 0x8f, 0x3d, 0x72, 0x5e, 0xa8, 0xd8, + 0x9d, 0x15, 0x01, 0x6b, 0x6d, 0xc6, 0xc8, 0xbd, 0x83, 0x1f, + 0x29, 0xc2, 0x4b, 0x71, 0xfc, 0xb4, 0x32, 0xfe, 0xe0, 0xbf, + 0xba, 0xa5, 0xac, 0x02, 0x86, 0x95, 0xdd, 0x7a, 0xe4, 0xbc, + 0x93, 0x73, 0xf9, 0x2a, 0x02, 0xd6, 0xda, 0x4f, 0x53, 0xb9, + 0x46, 0x21, 0x7b, 0x85, 0xdd, 0x93, 0xc7, 0x1f, 0x56, 0xc1, + 0xe3, 0x02, 0x0d, 0x2c, 0x37, 0x06, 0xc5, 0x3e, 0x52, 0x47, + 0x96, 0xe2, 0x3b, 0xab, 0x64, 0x3f, 0x03, 0xbd, 0xb7, 0x89, + 0x9b, 0x04, 0x05, 0x8a, 0xf4, 0xb8, 0xaf, 0xcd, 0x6f, 0xc7, + 0xcb, 0xd4, 0xe2, 0x69, 0x60, 0xea, 0xff, 0xbb, 0xcf, 0xe9, + 0x79, 0xf4, 0x0b, 0xbb, 0xe5, 0xe6, 0x31, 0x54, 0x04, 0x6f, + 0x77, 0x9e, 0xa6, 0xb1, 0x0f, 0x5d, 0xdf, 0x0b, 0x32, 0x94, + 0xb1, 0x8a, 0x9e, 0xbf, 0xe5, 0xbb, 0xa0, 0xfd, 0xc2, 0x0e, + 0x8c, 0x42, 0xf6, 0xc9, 0x79, 0xe5, 0x4d, 0x3e, 0xac, 0x41, + 0x05, 0x04, 0x1a, 0x58, 0x6e, 0x0c, 0x4c, 0xf6, 0x50, 0x36, + 0x40, 0xca, 0x19, 0x52, 0x03, 0xaa, 0xe4, 0xd0, 0xcd, 0x3b, + 0x0a, 0xb3, 0x49, 0x7c, 0xa4, 0x8e, 0xef, 0x07, 0x76, 0x95, + 0xc8, 0x7e, 0x06, 0xb9, 0xad, 0xd1, 0xf5, 0x08, 0x89, 0xc8, + 0x02, 0x71, 0xd6, 0x28, 0x22, 0xf9, 0x67, 0x95, 0xe7, 0x6d, + 0x7a, 0xb2, 0x91, 0xb7, 0x0a, 0xd7, 0x2b, 0xb3, 0x9d, 0x59, + 0xde, 0x4d, 0x55, 0x6b, 0x07, 0xd2, 0xc0, 0x17, 0x3d, 0xb5, + 0xca, 0x63, 0x8d, 0x4c, 0xa4, 0x76, 0x8a, 0x21, 0xfa, 0x80, + 0xe6, 0x06, 0x17, 0x74, 0x59, 0x0a, 0x5d, 0x11, 0xf2, 0x2b, + 0x16, 0xb5, 0x09, 0x0f, 0x62, 0xa8, 0x08, 0xde, 0xee, 0xff, + 0x8f, 0xa1, 0x9d, 0xa5, 0x54, 0xd4, 0x2f, 0x9a, 0x5d, 0x63, + 0xcd, 0x43, 0xe9, 0x0a, 0x39, 0x9c, 0xeb, 0x1e, 0x1e, 0xba, + 0x7d, 0x16, 0x64, 0xeb, 0xa1, 0xd7, 0xff, 0xbd, 0x09, 0xb5, + 0x83, 0x39, 0x47, 0x1c, 0xde, 0x0e, 0xdb, 0xe9, 0x5d, 0xc4, + 0xf5, 0xbb, 0x50, 0x56, 0xe8, 0x61, 0x54, 0x5a, 0x23, 0xa3, + 0xdb, 0x84, 0x2f, 0x51, 0xf2, 0x09, 0x9a, 0x7c, 0x9b, 0x82, + 0x0a, 0x08, 0x34, 0xb0, 0xdc, 0x18, 0x1b, 0x30, 0x89, 0xae, + 0xcb, 0x26, 0xce, 0x10, 0x34, 0x69, 0xeb, 0xdc, 0xe3, 0xd3, + 0xb8, 0xa7, 0x98, 0x2f, 0xa0, 0x6c, 0x80, 0x57, 0x32, 0xa4, + 0x06, 0x97, 0x0b, 0x63, 0x59, 0x76, 0x14, 0xa5, 0x58, 0x9b, + 0x06, 0x93, 0xb9, 0x78, 0x66, 0xc8, 0xa9, 0x7c, 0xea, 0xb7, + 0x8e, 0x15, 0x70, 0x1a, 0x92, 0xf8, 0x8b, 0xdf, 0x1d, 0x0e, + 0xec, 0xe9, 0x53, 0xfc, 0x0c, 0xb1, 0x99, 0x61, 0x29, 0x10, + 0x52, 0x4c, 0x2d, 0x20, 0x24, 0x21, 0xb8, 0x85, 0xfc, 0x17, + 0xed, 0x65, 0x4e, 0x02, 0x4d, 0xaf, 0xd1, 0x53, 0x04, 0xe2, + 0x6f, 0x50, 0x44, 0x31, 0xce, 0xe9, 0x0d, 0xda, 0xf4, 0xa7, + 0xe1, 0xad, 0x11, 0xe7, 0xa2, 0x1d, 0x56, 0x7f, 0x10, 0x5d, + 0x61, 0x02, 0xec, 0x0e, 0x23, 0xc4, 0x85, 0x12, 0x14, 0x6d, + 0x56, 0xa5, 0xf9, 0xb2, 0x7f, 0x9a, 0xaa, 0xd6, 0x0e, 0x67, + 0x43, 0x2e, 0x7a, 0xa9, 0xd4, 0xd9, 0xf0, 0x5a, 0xc0, 0x9d, + 0x2b, 0xf6, 0x05, 0x3d, 0xef, 0xb3, 0x94, 0x4d, 0x1e, 0x16, + 0x57, 0xc6, 0xd9, 0x98, 0x8b, 0xec, 0xd7, 0x42, 0x37, 0xc3, + 0x0f, 0x0c, 0x2e, 0xe8, 0xb2, 0x14, 0x97, 0x72, 0x7f, 0x67, + 0xb2, 0xc3, 0x83, 0x2e, 0x98, 0x28, 0xee, 0xd8, 0xf9, 0x8b, + 0xd6, 0xab, 0xba, 0x22, 0x27, 0x56, 0x2c, 0xa9, 0x12, 0x1e, + 0xc4, 0x93, 0x10, 0x7f, 0x1f, 0x3d, 0xdd, 0x81, 0x7a, 0x96, + 0x81, 0xa9, 0x15, 0x86, 0x46, 0x72, 0x6b, 0x78, 0xf1, 0xab, + 0xc8, 0x5e, 0xb9, 0x3e, 0xf9, 0x89, 0xa8, 0x6b, 0x5e, 0xf7, + 0xba, 0xc6, 0x59, 0x86, 0x11, 0x14, 0x72, 0xfb, 0x15, 0x3c, + 0x39, 0x3d, 0x0e, 0x94, 0x67, 0xd8, 0xee, 0xaa, 0xf6, 0x6d, + 0xf0, 0xc0, 0xa5, 0x98, 0x71, 0x83, 0x3c, 0xb7, 0xfa, 0x2c, + 0xc8, 0x15, 0x81, 0x6d, 0x3d, 0xb9, 0x12, 0xa9, 0xc5, 0x72, + 0x8e, 0x38, 0xfc, 0x03, 0x5c, 0xd3, 0xf1, 0x3a, 0xd5, 0x01, + 0x92, 0x52, 0xf3, 0x7d, 0x12, 0x11, 0xea, 0x87, 0x7f, 0x1c, + 0x75, 0x11, 0xba, 0x4b, 0x29, 0xb5, 0xa0, 0xac, 0x13, 0xc2, + 0xa8, 0xb4, 0x46, 0x85, 0xbf, 0xa8, 0xd3, 0xee, 0x83, 0x64, + 0x7d, 0xd9, 0x0f, 0x47, 0xf2, 0x16, 0x7f, 0xd7, 0x22, 0x3a, + 0x75, 0xcb, 0x5e, 0xa2, 0x27, 0x12, 0xf7, 0xf8, 0xf5, 0xc7, + 0x14, 0x10, 0x68, 0xa3, 0x7b, 0x30, 0xb5, 0x7f, 0xf8, 0x5d, + 0x1e, 0x3d, 0xa3, 0x94, 0x5a, 0x2c, 0xf5, 0xc4, 0xbf, 0xc0, + 0x1f, 0x8f, 0x36, 0x60, 0xd1, 0x9f, 0x55, 0x4c, 0x5f, 0x20, + 0x68, 0xd2, 0x15, 0x7b, 0x05, 0x65, 0xb3, 0x8d, 0xf6, 0xd4, + 0x77, 0x60, 0x6c, 0x63, 0x0b, 0x4c, 0xc7, 0x39, 0xf4, 0xaf, + 0xd2, 0x06, 0xd7, 0x32, 0xf3, 0x5e, 0x83, 0xd8, 0xc3, 0xae, + 0x64, 0x8b, 0x0c, 0xed, 0x16, 0xc6, 0xb2, 0xec, 0x28, 0x89, + 0x33, 0xea, 0x25, 0x27, 0xfa, 0x81, 0x30, 0xe7, 0xa3, 0x06, + 0xf7, 0x12, 0x65, 0x8f, 0x4c, 0x36, 0xb0, 0xf5, 0x0c, 0xe5, + 0xb1, 0xf0, 0xcc, 0x53, 0x91, 0xf8, 0x17, 0xad, 0xdf, 0x2a, + 0xe0, 0x34, 0x70, 0x41, 0xaa, 0x1a, 0x88, 0xdf, 0x98, 0x3f, + 0x3e, 0x13, 0xf6, 0x79, 0x08, 0x49, 0x84, 0x8b, 0xe7, 0x33, + 0xd5, 0x7d, 0x3a, 0x1c, 0x1b, 0x11, 0xa6, 0x3b, 0x18, 0xa1, + 0xf1, 0xc2, 0x52, 0x20, 0x27, 0x87, 0x73, 0x82, 0x03, 0x33, + 0x4f, 0x7d, 0x09, 0xd0, 0xf9, 0x75, 0x26, 0xa1, 0x36, 0x9f, + 0xa4, 0x98, 0x5a, 0x40, 0x48, 0x42, 0xb3, 0xc9, 0x3b, 0x2e, + 0x19, 0xca, 0x9c, 0x04, 0x9a, 0x9d, 0x64, 0x2c, 0xfc, 0xbf, + 0x71, 0x6d, 0xe7, 0xa5, 0x94, 0xc5, 0xf8, 0x1e, 0x4b, 0x67, + 0xfe, 0x22, 0x61, 0xa6, 0x08, 0x07, 0xde, 0xa0, 0x88, 0x62, + 0x5f, 0x11, 0x1a, 0x77, 0x2b, 0x8d, 0x01, 0x99, 0xa1, 0x12, + 0xae, 0xf8, 0xe7, 0x8f, 0xdc, 0x0e, 0xf0, 0xfa, 0xfb, 0xa3, + 0xfc, 0xee, 0x65, 0x26, 0x22, 0x0d, 0x87, 0x3a, 0xac, 0xfe, + 0x20, 0xba, 0xc2, 0x04, 0x1b, 0x1c, 0x46, 0x4b, 0xc9, 0x24, + 0xe2, 0xb9, 0x21, 0xc5, 0x95, 0xd1, 0x74, 0xd6, 0x6d, 0xef, + 0xfa, 0xc8, 0x91, 0x28, 0xad, 0x9b, 0x28, 0xda, 0xac, 0x89, + 0x31, 0xa7, 0xfe, 0xf7, 0x97, 0x6f, 0x1c, 0xce, 0x86, 0x5c, + 0xf4, 0x91, 0xe8, 0x6e, 0x0a, 0x76, 0x08, 0x88, 0xaa, 0x9b, + 0x38, 0x84, 0xfd, 0x1a, 0x51, 0x3f, 0x90, 0x2e, 0x6b, 0x71, + 0x23, 0xb4, 0x43, 0xf9, 0x56, 0x2f, 0x0a, 0x7a, 0x1d, 0xa5, + 0xeb, 0x9a, 0x3c, 0x2c, 0xab, 0xc5, 0x85, 0x4b, 0x7a, 0xd6, + 0x02, 0x43, 0xa5, 0x91, 0xfc, 0x71, 0x3c, 0xf9, 0x58, 0x93, + 0xae, 0x4f, 0x71, 0xf3, 0xd5, 0x1b, 0x6d, 0x84, 0x6e, 0x45, + 0x1e, 0x18, 0x5c, 0x13, 0xa7, 0x28, 0x6e, 0xfb, 0xd7, 0x0c, + 0xec, 0x34, 0x39, 0xe8, 0xc1, 0xae, 0xff, 0xcc, 0x8b, 0x70, + 0xc3, 0x97, 0xed, 0xe4, 0xfe, 0xce, 0xa7, 0x45, 0xc5, 0x5c, + 0xf3, 0x50, 0x1f, 0x73, 0x31, 0xd5, 0x6f, 0x95, 0x2d, 0x50, + 0x58, 0x31, 0x9e, 0x6a, 0x91, 0x30, 0x5c, 0xbb, 0xfe, 0xa7, + 0xe6, 0xb6, 0x0b, 0x2a, 0xb7, 0x44, 0x4e, 0xac, 0x58, 0x91, + 0x24, 0x3c, 0x4b, 0xe5, 0x20, 0xfe, 0x3e, 0x7a, 0x79, 0xc1, + 0x77, 0xf0, 0xe8, 0x53, 0x61, 0xbe, 0x70, 0x50, 0xe4, 0x0e, + 0xc1, 0x2a, 0xe9, 0x19, 0x1d, 0x7e, 0xf4, 0xef, 0xc1, 0x91, + 0x2a, 0xcf, 0x8c, 0xe4, 0xd6, 0xf0, 0x21, 0x95, 0x53, 0xbc, + 0xb1, 0x7c, 0x34, 0x5b, 0x67, 0x6e, 0x13, 0xe0, 0xd8, 0x88, + 0x79, 0x1b, 0xc0, 0x41, 0x84, 0xdf, 0xd5, 0xc3, 0x31, 0xd1, + 0x93, 0xd6, 0xbc, 0x2d, 0xb7, 0x4f, 0xb2, 0xcf, 0x22, 0x28, + 0xe4, 0x35, 0x2a, 0x78, 0xf1, 0x65, 0x35, 0x29, 0x85, 0x02, + 0xe3, 0x23, 0x1d, 0x24, 0xc3, 0xfc, 0x33, 0x56, 0x4e, 0xc7, + 0x72, 0x7a, 0x1c, 0xeb, 0xce, 0x73, 0x1f, 0x97, 0x2f, 0xda, + 0x23, 0x43, 0x89, 0xf3, 0xe2, 0xc5, 0xb2, 0xce, 0xba, 0x14, + 0xf7, 0x5c, 0x4b, 0xfb, 0x80, 0x31, 0xc2, 0x97, 0x5e, 0x90, + 0x86, 0x7a, 0x78, 0xad, 0x37, 0x58, 0x53, 0x2a, 0xc1, 0xda, + 0x7a, 0xb1, 0x24, 0x91, 0x49, 0xe4, 0xdf, 0x70, 0xb8, 0x19, + 0x91, 0xa7, 0x6a, 0x05, 0x95, 0xb6, 0xd5, 0x5a, 0xc5, 0x45, + 0x9e, 0x87, 0xbb, 0xcf, 0x3b, 0x06, 0xb8, 0x65, 0x21, 0x74, + 0x69, 0x02, 0xe7, 0xa4, 0x25, 0xfa, 0x24, 0x22, 0x17, 0xcd, + 0xfb, 0xb2, 0x1e, 0x9a, 0x18, 0x5b, 0x3d, 0x6e, 0x48, 0x4f, + 0xc4, 0x2e, 0xf3, 0x41, 0x73, 0x72, 0xfe, 0x38, 0xea, 0x22, + 0xb7, 0x96, 0x52, 0xa9, 0x83, 0x9b, 0x26, 0x47, 0x93, 0xab, + 0x8c, 0xc9, 0x3e, 0x8c, 0x4c, 0xdd, 0x8e, 0xb9, 0x06, 0xc5, + 0x2c, 0x70, 0xc7, 0x93, 0x44, 0xc8, 0xe8, 0x76, 0xbd, 0x93, + 0x65, 0x1f, 0xc5, 0xc8, 0xfa, 0x71, 0x1e, 0x8e, 0x27, 0x2c, + 0xfe, 0x6d, 0x44, 0x74, 0x7d, 0x27, 0xc3, 0xe0, 0xfc, 0xe7, + 0xae, 0x1d, 0xb1, 0x65, 0xc6, 0xf8, 0x29, 0x0e, 0x20, 0xcb, + 0xea, 0x55, 0xbc, 0x87, 0x4e, 0x24, 0x2d, 0x33, 0x29, 0x4d, + 0x28, 0x20, 0xd0, 0x85, 0xf6, 0x60, 0x2a, 0xe1, 0x1a, 0x78, + 0x77, 0x0b, 0x79, 0x5f, 0x86, 0xa6, 0xc9, 0xf4, 0x07, 0xe6, + 0x92, 0xdf, 0xa9, 0xfe, 0x33, 0xba, 0x3c, 0x7a, 0x85, 0xeb, + 0xb4, 0x58, 0x29, 0x4b, 0xbd, 0x43, 0x3e, 0xdd, 0x69, 0x4a, + 0x95, 0x45, 0x05, 0x55, 0xd1, 0x87, 0x1b, 0xb3, 0xc8, 0x9f, + 0x6a, 0x20, 0x5a, 0x62, 0x6c, 0xc0, 0x61, 0xfd, 0xaa, 0x98, + 0xbe, 0x40, 0xd0, 0x67, 0x2a, 0xf6, 0x0a, 0xca, 0xa5, 0xd9, + 0xac, 0x74, 0xc7, 0x02, 0x93, 0xb7, 0xea, 0x2c, 0x7f, 0x8c, + 0xcb, 0x22, 0xdd, 0xa9, 0xc1, 0x66, 0x2f, 0x6b, 0xee, 0xc0, + 0xd8, 0xc6, 0x16, 0x98, 0x4d, 0x72, 0x2b, 0x9d, 0x67, 0x0c, + 0x6d, 0x64, 0xef, 0xdf, 0x48, 0x3f, 0xe1, 0xe9, 0x42, 0xf4, + 0xe2, 0x99, 0xca, 0x49, 0xb0, 0x6f, 0x09, 0xdb, 0x25, 0xbc, + 0xc5, 0x73, 0x45, 0x9f, 0xc8, 0xd5, 0x18, 0x19, 0x2c, 0x4f, + 0xa7, 0x1b, 0x50, 0xd1, 0xe5, 0x08, 0x63, 0x8c, 0x7c, 0xb0, + 0x9c, 0xb9, 0xb7, 0xf2, 0xcd, 0x9b, 0x70, 0x78, 0x34, 0x6e, + 0x66, 0x17, 0x4a, 0x4e, 0x37, 0xc1, 0x60, 0x0d, 0x85, 0x0c, + 0x2d, 0x24, 0xca, 0xdd, 0x98, 0x6c, 0xa6, 0xa3, 0xec, 0xb1, + 0x0e, 0xee, 0x34, 0x61, 0x2a, 0xe7, 0xcc, 0xf0, 0x1d, 0xbe, + 0xfc, 0xd3, 0xa3, 0x29, 0x18, 0x09, 0xa1, 0x23, 0x5b, 0xa6, + 0xe1, 0x33, 0x2e, 0x99, 0x7d, 0x54, 0x03, 0x68, 0x63, 0x9d, + 0xbe, 0xf6, 0x98, 0x0c, 0x0f, 0xca, 0x4e, 0xd8, 0xcf, 0x4d, + 0xaa, 0x37, 0x67, 0xd7, 0xe0, 0x82, 0x97, 0x34, 0xd3, 0x7d, + 0xf3, 0x7e, 0x7c, 0x26, 0x2f, 0xf2, 0x10, 0x92, 0xcb, 0xd5, + 0x20, 0x36, 0x31, 0xcb, 0xea, 0x52, 0xa7, 0x12, 0xd3, 0xcd, + 0xce, 0x26, 0xc7, 0xf1, 0xaf, 0x6a, 0x0d, 0x66, 0x69, 0xfa, + 0x74, 0x38, 0x36, 0x22, 0x8f, 0x76, 0x30, 0x81, 0x21, 0x47, + 0xa4, 0x40, 0xcd, 0xd2, 0xcf, 0x05, 0x4d, 0x17, 0x62, 0x4e, + 0x20, 0x9d, 0xd1, 0x55, 0xf6, 0x24, 0xc0, 0xff, 0x4e, 0xcd, + 0xe6, 0xc7, 0x06, 0x66, 0x9e, 0xfa, 0x12, 0x63, 0x31, 0xea, + 0x4c, 0x81, 0x6c, 0xfd, 0x8e, 0x79, 0x40, 0x38, 0x3f, 0x49, + 0xca, 0x96, 0xbd, 0x88, 0xd0, 0x3e, 0x9b, 0xe2, 0x08, 0x42, + 0x8b, 0xf3, 0xb4, 0x80, 0x90, 0x84, 0xa5, 0x51, 0x76, 0x5c, + 0x32, 0x57, 0xfb, 0x08, 0xf7, 0xf9, 0x4b, 0x47, 0x12, 0x7f, + 0xa9, 0xab, 0xf1, 0x3d, 0xd9, 0xb7, 0xd3, 0x83, 0x2c, 0x6b, + 0x93, 0x46, 0xc8, 0x58, 0x3b, 0xbd, 0xe2, 0xda, 0x0d, 0x89, + 0xeb, 0x49, 0x33, 0x3c, 0x96, 0xce, 0x3f, 0x44, 0x08, 0xec, + 0x9d, 0x42, 0xdb, 0xf5, 0x59, 0xe5, 0x44, 0xa2, 0xd2, 0xe8, + 0x41, 0xad, 0x5b, 0xfb, 0xc2, 0x8f, 0x10, 0x0e, 0x7f, 0x83, + 0xd3, 0xc4, 0xbe, 0x22, 0x34, 0xee, 0x56, 0xd9, 0x02, 0xf1, + 0x02, 0x3b, 0xb6, 0xf1, 0x46, 0xac, 0x87, 0xa8, 0x11, 0xc9, + 0xd5, 0x3a, 0x81, 0xba, 0x66, 0x4e, 0x81, 0x24, 0x9f, 0x33, + 0x0d, 0xdd, 0x7b, 0x1c, 0x23, 0x37, 0x35, 0x85, 0x3b, 0x1f, + 0xca, 0x4c, 0x41, 0x90, 0x39, 0xcc, 0x34, 0xf2, 0x2f, 0x70, + 0x8c, 0xdc, 0xd4, 0x51, 0xec, 0x7c, 0xae, 0xf3, 0x44, 0x1a, + 0xcd, 0x74, 0x9b, 0x3f, 0x40, 0xb7, 0x47, 0x08, 0x36, 0x38, + 0x8c, 0x96, 0x51, 0x48, 0x84, 0xae, 0x6b, 0x8b, 0xa2, 0x10, + 0x14, 0xdb, 0xe8, 0xe3, 0xd7, 0xec, 0x5b, 0xf5, 0x35, 0xf7, + 0x07, 0xb1, 0x42, 0x49, 0xe9, 0x61, 0xe8, 0x6f, 0xda, 0x1d, + 0x37, 0x53, 0xe1, 0x50, 0x99, 0xf5, 0xc7, 0x05, 0xe4, 0xb6, + 0xd0, 0x4e, 0xbc, 0x03, 0x75, 0xf6, 0xd6, 0x87, 0x36, 0x33, + 0xfd, 0x4a, 0x50, 0x77, 0x9b, 0xd1, 0x62, 0x8d, 0x3f, 0x2d, + 0xed, 0xde, 0x38, 0x5f, 0xcf, 0xb8, 0x2b, 0xe1, 0x90, 0xc3, + 0x3d, 0x2e, 0x5b, 0xa2, 0x6b, 0x41, 0x42, 0x35, 0xd9, 0x8b, + 0x18, 0xdb, 0x4f, 0x5e, 0x13, 0xdc, 0x14, 0xec, 0x10, 0xd3, + 0x97, 0xf5, 0x70, 0xcb, 0x39, 0x34, 0xa2, 0x7e, 0xe3, 0x5c, + 0xd3, 0x68, 0xb2, 0x13, 0x29, 0xfc, 0xc3, 0x99, 0xdf, 0x20, + 0xd8, 0xe0, 0x75, 0x1d, 0x87, 0xe3, 0xd6, 0xe2, 0x46, 0xab, + 0x86, 0x31, 0xac, 0x5e, 0x14, 0xf4, 0x3a, 0x89, 0x15, 0xf7, + 0x78, 0x58, 0x16, 0x56, 0xe0, 0x54, 0xbf, 0x1e, 0xf8, 0x32, + 0xbb, 0x1f, 0xdb, 0x5d, 0xc2, 0x94, 0x1c, 0xe7, 0x95, 0x49, + 0xc9, 0x96, 0xf4, 0x6f, 0x04, 0x86, 0x89, 0xe1, 0x3b, 0xe2, + 0x78, 0x31, 0xb0, 0xe5, 0x55, 0xfd, 0x6f, 0x69, 0xcd, 0x40, + 0x50, 0xea, 0x26, 0x0a, 0xda, 0x36, 0xaf, 0x52, 0xd4, 0x5a, + 0x9f, 0x9e, 0xe2, 0x25, 0x69, 0x36, 0xda, 0xcb, 0xdc, 0x8a, + 0x3c, 0x30, 0xb8, 0x26, 0x8d, 0x50, 0x5f, 0x2a, 0x44, 0xda, + 0x50, 0x19, 0x8e, 0xa7, 0x73, 0x61, 0xdd, 0xe4, 0x6f, 0x45, + 0xe9, 0xef, 0xdc, 0x35, 0x6d, 0x18, 0x1b, 0x68, 0x72, 0x13, + 0x41, 0x9f, 0x3d, 0x5b, 0xd5, 0xe0, 0x45, 0xed, 0x1c, 0x81, + 0xcb, 0xe7, 0x22, 0x47, 0x26, 0x7f, 0xee, 0x74, 0xdc, 0x8f, + 0x02, 0x83, 0x21, 0x52, 0x19, 0x0b, 0x3f, 0x5f, 0x8d, 0x8a, + 0x49, 0xb8, 0x25, 0xa0, 0x3e, 0xe6, 0x62, 0x69, 0xde, 0xe9, + 0xd9, 0xbf, 0x99, 0xa0, 0xb4, 0xa5, 0x1d, 0xd4, 0x8a, 0x4b, + 0xdf, 0x32, 0xb5, 0x0a, 0xba, 0x56, 0x5a, 0xa0, 0xb0, 0x62, + 0xff, 0xd4, 0xe1, 0x60, 0xb8, 0xb5, 0x3f, 0x8d, 0x0f, 0xaf, + 0x16, 0x54, 0x9a, 0x14, 0x16, 0x9d, 0xc6, 0xfb, 0xb5, 0x0c, + 0x17, 0x5e, 0xde, 0x59, 0xd8, 0xcc, 0x72, 0xeb, 0xad, 0x88, + 0x9c, 0x9b, 0xb0, 0xe1, 0x48, 0x78, 0x96, 0x09, 0x40, 0x3f, + 0x7c, 0xf4, 0xf2, 0x41, 0x6d, 0x3c, 0x3a, 0x64, 0x89, 0xce, + 0x1c, 0x14, 0x39, 0xe2, 0xa1, 0xeb, 0xab, 0x97, 0x96, 0xfe, + 0xee, 0x23, 0x13, 0xa6, 0xc2, 0xbf, 0xe0, 0xa0, 0x0b, 0x1c, + 0x41, 0x54, 0x11, 0x32, 0x3a, 0xfc, 0x2e, 0x97, 0xb5, 0x59, + 0xfb, 0x90, 0xb4, 0xcc, 0xa4, 0xf7, 0xa0, 0x80, 0xc6, 0x51, + 0x5e, 0x43, 0x2b, 0x1d, 0x41, 0xe1, 0x54, 0x5d, 0xdb, 0x0b, + 0x6f, 0x23, 0x42, 0xe9, 0xa6, 0xbb, 0xa1, 0xf8, 0xeb, 0xa9, + 0xe7, 0x1e, 0x6d, 0x72, 0x8f, 0x67, 0xc0, 0xc8, 0xa3, 0x3d, + 0x71, 0xd8, 0xc5, 0x47, 0x68, 0xb6, 0xce, 0xdc, 0x26, 0x03, + 0x73, 0xd3, 0xf2, 0x36, 0x43, 0x82, 0xcb, 0x7d, 0x69, 0x45, + 0xa8, 0x02, 0x68, 0x23, 0x1f, 0x2c, 0x27, 0xbf, 0x5d, 0xdd, + 0xa2, 0x56, 0x1c, 0x1e, 0x0d, 0xfa, 0x62, 0x61, 0xe5, 0x6f, + 0xbb, 0x5a, 0xad, 0x9e, 0xa7, 0x5d, 0x44, 0x50, 0x0b, 0x6a, + 0x54, 0xf0, 0xa2, 0xd5, 0x43, 0x90, 0x82, 0x75, 0xf9, 0xf2, + 0x08, 0xb6, 0xa5, 0x84, 0xdc, 0x09, 0x30, 0x4f, 0x21, 0xca, + 0x6a, 0x52, 0xc9, 0x04, 0x05, 0x46, 0x3a, 0x48, 0x45, 0x3b, + 0x66, 0xac, 0x9c, 0x4d, 0xe1, 0x7e, 0xcc, 0xad, 0xf0, 0x2b, + 0x51, 0x2a, 0x95, 0xa3, 0xa4, 0xef, 0xb1, 0xcf, 0xf8, 0xf2, + 0xe4, 0xf4, 0x38, 0x15, 0x5f, 0xe6, 0x3e, 0xed, 0x5e, 0x77, + 0x46, 0x86, 0xd1, 0x25, 0x07, 0x49, 0x24, 0x40, 0x9e, 0xea, + 0x66, 0xc9, 0x6a, 0x81, 0xf1, 0x9c, 0xa7, 0x52, 0x06, 0x46, + 0x63, 0xf6, 0xa7, 0x5f, 0xb7, 0x28, 0x2d, 0xb8, 0x96, 0x35, + 0xc3, 0x62, 0x47, 0xed, 0xbc, 0xe3, 0xcf, 0xf4, 0x67, 0xeb, + 0x11, 0xd7, 0x14, 0x97, 0xc2, 0x59, 0x6c, 0x89, 0xa6, 0x39, + 0x6b, 0x80, 0xab, 0x4b, 0xf0, 0x99, 0x6e, 0xb0, 0xa6, 0x54, + 0x41, 0x77, 0xf4, 0xa1, 0x48, 0xe1, 0x92, 0x0b, 0x7d, 0xe0, + 0x30, 0x2d, 0xc8, 0x4f, 0x9f, 0x7b, 0x15, 0x1b, 0x5b, 0x4a, + 0xa9, 0x35, 0x45, 0x68, 0x19, 0x5f, 0xb3, 0x32, 0xe1, 0x8d, + 0xd4, 0x0a, 0xe9, 0xaf, 0x69, 0xb4, 0x49, 0x8a, 0xff, 0xcd, + 0xb5, 0x5d, 0x73, 0x86, 0x47, 0x72, 0xed, 0x25, 0xbd, 0xc3, + 0xc6, 0x5f, 0xa8, 0x5e, 0x28, 0xae, 0xd1, 0xe2, 0x76, 0x0c, + 0xb3, 0xca, 0x42, 0xe8, 0xd2, 0x04, 0x0d, 0x8b, 0x4a, 0x37, + 0x48, 0x44, 0x2e, 0x59, 0xb6, 0xb8, 0x15, 0x35, 0x7b, 0xc7, + 0x86, 0x68, 0xa2, 0x60, 0xab, 0xe3, 0x9f, 0x27, 0x4a, 0xe6, + 0x35, 0xa7, 0x3c, 0xf7, 0x30, 0xb6, 0x7a, 0xdc, 0x90, 0x9e, + 0x4b, 0x5c, 0x25, 0x82, 0xe6, 0xe4, 0xf5, 0x13, 0x9a, 0x08, + 0x09, 0x99, 0x2e, 0xb0, 0x3f, 0x75, 0xaa, 0x88, 0xf2, 0xe1, + 0x82, 0x5b, 0x3f, 0x70, 0x17, 0x44, 0xad, 0xef, 0xa4, 0x91, + 0xc5, 0xf5, 0x4c, 0x8e, 0xe5, 0x95, 0xdb, 0x51, 0xff, 0xc4, + 0xb1, 0xbb, 0x94, 0xc0, 0xf0, 0xfd, 0x6a, 0x1e, 0xad, 0x5a, + 0x32, 0xf6, 0xbf, 0xee, 0x7c, 0xdb, 0x98, 0x79, 0xdf, 0xb1, + 0x0c, 0x49, 0x58, 0xe0, 0x4d, 0xe5, 0x88, 0x53, 0x13, 0xec, + 0xbc, 0x6f, 0x3e, 0x86, 0xe6, 0x9e, 0x58, 0x25, 0xf7, 0x0b, + 0xac, 0x31, 0x5f, 0x30, 0x77, 0x53, 0xb9, 0xe5, 0xca, 0x3e, + 0x49, 0x53, 0x37, 0xe2, 0x3c, 0xdf, 0x4e, 0x58, 0x3f, 0xda, + 0x88, 0xe8, 0x79, 0x51, 0x6c, 0xc1, 0x70, 0x7c, 0x63, 0x8e, + 0x93, 0x34, 0xaf, 0x8c, 0xe8, 0xb9, 0xec, 0x57, 0xfa, 0x4e, + 0x45, 0x03, 0x3b, 0x0d, 0x9f, 0x3a, 0xa1, 0xca, 0x4f, 0x33, + 0x52, 0x1c, 0x40, 0x55, 0x3a, 0xfa, 0xe3, 0xfc, 0x02, 0x22, + 0xcb, 0x56, 0x0e, 0x21, 0xae, 0xe7, 0x85, 0x7f, 0x24, 0xea, + 0x17, 0xaa, 0xbb, 0xcd, 0x9c, 0x48, 0x5a, 0x66, 0x52, 0x9a, + 0x50, 0x40, 0x63, 0xc9, 0x2f, 0xc0, 0xd7, 0x1e, 0x1d, 0x32, + 0xa5, 0x67, 0x0e, 0x0a, 0xfd, 0x71, 0xb1, 0x94, 0xb4, 0xaa, + 0x4b, 0x7f, 0x54, 0x01, 0x34, 0xf0, 0xee, 0x16, 0xf2, 0xbe, + 0xcf, 0x8f, 0x51, 0x2b, 0x0e, 0x0f, 0xe7, 0x7d, 0x94, 0xb5, + 0x92, 0x0f, 0xd7, 0x39, 0xa6, 0xd2, 0x60, 0x64, 0xb0, 0xff, + 0xd9, 0x6c, 0x83, 0xc2, 0x91, 0x3f, 0x66, 0xb7, 0x78, 0xf4, + 0xc9, 0x15, 0xab, 0xb0, 0x52, 0x96, 0xb9, 0x86, 0x7c, 0x79, + 0x51, 0x8b, 0xc0, 0x48, 0x41, 0xdb, 0x9d, 0x79, 0x04, 0x5b, + 0xb3, 0x42, 0x6e, 0xe5, 0x18, 0xc6, 0xd2, 0x94, 0xe9, 0x8a, + 0x0a, 0xaa, 0x61, 0xcd, 0x36, 0xa5, 0x53, 0xfd, 0xd4, 0x40, + 0xb4, 0xc4, 0x12, 0x20, 0x4f, 0x75, 0x33, 0x85, 0x35, 0xa1, + 0x99, 0x4e, 0xb2, 0x29, 0x03, 0x23, 0xd0, 0x7b, 0xd8, 0x43, + 0xc2, 0x39, 0x97, 0xf3, 0xbf, 0x80, 0x63, 0xce, 0x54, 0x2f, + 0x14, 0x57, 0x89, 0x71, 0x18, 0xf7, 0x64, 0xc6, 0xae, 0xdc, + 0xeb, 0xec, 0xcc, 0x25, 0xb5, 0xfb, 0xc3, 0x34, 0xed, 0xce, + 0x9b, 0xe8, 0x4d, 0x04, 0xe5, 0xad, 0x17, 0x58, 0xfe, 0xdb, + 0x55, 0x44, 0x79, 0x91, 0x41, 0xcc, 0x5b, 0x5c, 0xeb, 0xfb, + 0xdc, 0x82, 0x43, 0x34, 0x51, 0x30, 0xb4, 0x90, 0xae, 0xf2, + 0x25, 0x73, 0x5e, 0xd6, 0x1f, 0x43, 0x73, 0x4f, 0x2c, 0xf3, + 0x9a, 0xe4, 0x56, 0xf9, 0xce, 0x18, 0xda, 0xc8, 0x9e, 0x62, + 0xb9, 0xbc, 0x4a, 0x60, 0x78, 0x9f, 0x35, 0x0f, 0xb7, 0x2d, + 0x19, 0x7b, 0xbe, 0x77, 0x1d, 0x7d, 0x90, 0x7e, 0x01, 0x11, + 0x84, 0x2b, 0x07, 0xf1, 0x57, 0x92, 0xa3, 0xde, 0x12, 0x75, + 0xdd, 0xc9, 0x36, 0x81, 0x38, 0x3e, 0xd0, 0x47, 0xa8, 0x1a, + 0xb6, 0x46, 0x74, 0xbd, 0x76, 0xca, 0x4a, 0xbb, 0x49, 0xe6, + 0x8a, 0xfd, 0x53, 0x69, 0x30, 0x32, 0x58, 0x9e, 0x8d, 0x36, + 0xa0, 0x61, 0x8a, 0x0f, 0xef, 0x19, 0xb3, 0xd2, 0x07, 0x05, + 0x9f, 0xd9, 0xb9, 0x4a, 0x5a, 0x55, 0xc4, 0xde, 0x09, 0x10, + 0xc6, 0xdb, 0xf8, 0xa3, 0xfb, 0xb1, 0xad, 0x27, 0x59, 0xf5, + 0xe0, 0xf0, 0x68, 0xdc, 0xc9, 0xa4, 0x60, 0x24, 0xc1, 0x8c, + 0xaf, 0xdd, 0x02, 0xcc, 0xb8, 0x21, 0x37, 0x93, 0x0c, 0x63, + 0xcc, 0x2e, 0x94, 0x9c, 0x6e, 0x41, 0xc0, 0x1a, 0xc9, 0x18, + 0x5a, 0x48, 0x57, 0x79, 0xf3, 0xd8, 0x0c, 0x9a, 0x32, 0x63, + 0x57, 0x6e, 0x94, 0x76, 0x66, 0xf3, 0xbb, 0x9c, 0x80, 0x1a, + 0x97, 0x67, 0x8f, 0x85, 0x1b, 0xa1, 0x1c, 0x1f, 0x68, 0xc2, + 0x54, 0x0d, 0x5b, 0x23, 0x3a, 0xbf, 0x3b, 0x65, 0x4f, 0x31, + 0xbd, 0x5e, 0x25, 0x30, 0x3c, 0xae, 0xfb, 0xe6, 0xba, 0xf7, + 0xed, 0xdc, 0x5f, 0xda, 0x85, 0x52, 0x30, 0x12, 0x81, 0x46, + 0xb6, 0x8f, 0x01, 0x66, 0x5c, 0xf1, 0xfa, 0xa8, 0x06, 0xd0, + 0x45, 0xe6, 0x96, 0xed, 0xb8, 0x69, 0xe2, 0xe3, 0xae, 0x8d, + 0xbd, 0x25, 0x2d, 0xcb, 0x62, 0x6f, 0xc6, 0xf9, 0xbf, 0x2f, + 0xf3, 0x18, 0x1e, 0x57, 0x9c, 0x73, 0x5d, 0x9a, 0x97, 0x6e, + 0xce, 0x6d, 0x06, 0x4d, 0x19, 0xd0, 0xca, 0x37, 0x4a, 0x3b, + 0x33, 0x98, 0xbc, 0x4e, 0x40, 0x0d, 0xaa, 0xd2, 0x03, 0xc7, + 0xed, 0x68, 0x65, 0xfa, 0x25, 0xfc, 0xf8, 0x4c, 0x5e, 0x27, + 0x20, 0xe7, 0x55, 0x69, 0xc3, 0x73, 0x4b, 0x97, 0x5c, 0xd5, + 0x71, 0x90, 0x57, 0xa7, 0xbf, 0xf3, 0xf7, 0x84, 0x31, 0xd6, + 0x40, 0x6c, 0x62, 0x55, 0x17, 0xa4, 0x8d, 0x24, 0x65, 0x59, + 0x5f, 0x4c, 0x4d, 0x21, 0x9d, 0xd4, 0x80, 0xd8, 0xc4, 0xaa, + 0x2e, 0x8b, 0xd9, 0x48, 0xca, 0xb2, 0xbe, 0x98, 0x9a, 0x42, + 0xf9, 0x6b, 0x1a, 0xcc, 0xd2, 0x37, 0xe8, 0x70, 0x6c, 0x44, + 0xdd, 0xec, 0x60, 0xc1, 0x42, 0x8e, 0x8b, 0x80, 0xda, 0x78, + 0x74, 0xc8, 0xd1, 0x5f, 0x38, 0x28, 0x72, 0x07, 0x81, 0x15, + 0x95, 0xed, 0xef, 0x3f, 0x59, 0x67, 0x5d, 0x0a, 0x9a, 0x2e, + 0xc4, 0x9c, 0x40, 0xf9, 0x61, 0xaa, 0x2f, 0x48, 0x43, 0x3d, + 0x99, 0xd3, 0xfb, 0xf5, 0xa3, 0x01, 0x90, 0xf0, 0xef, 0x12, + 0x80, 0x7e, 0xf8, 0x2b, 0x27, 0x82, 0x9c, 0x59, 0x0f, 0x4d, + 0x0c, 0xcc, 0xff, 0x37, 0x24, 0xc6, 0x62, 0x17, 0x98, 0xc1, + 0xd8, 0x39, 0x5c, 0xed, 0xa9, 0xb2, 0x35, 0xe3, 0xab, 0x5b, + 0x8b, 0x2d, 0x83, 0xc3, 0x4f, 0xa2, 0xbc, 0x86, 0xdf, 0xf2, + 0x80, 0x70, 0x7e, 0x92, 0x57, 0xef, 0xb9, 0xd3, 0x63, 0x7c, + 0xf5, 0x07, 0x10, 0x84, 0x1f, 0x46, 0x26, 0x8f, 0x47, 0xbd, + 0x03, 0x83, 0x16, 0x38, 0x82, 0xa8, 0x22, 0x64, 0x74, 0x3b, + 0xd5, 0x25, 0xab, 0xc3, 0xe3, 0xcb, 0x89, 0xa2, 0xec, 0xb8, + 0x64, 0xae, 0x35, 0x10, 0x2d, 0x31, 0x15, 0x91, 0x0d, 0x3c, + 0xda, 0xe4, 0xdd, 0xce, 0x43, 0x53, 0x85, 0x7a, 0xe2, 0x73, + 0x49, 0x8e, 0x96, 0x8e, 0x24, 0xfe, 0x91, 0x95, 0x21, 0x7a, + 0x71, 0xad, 0x65, 0xc5, 0x58, 0xd6, 0xe5, 0x8c, 0x56, 0x3a, + 0x82, 0x01, 0xa8, 0xba, 0x75, 0x16, 0xde, 0x46, 0x84, 0x11, + 0x8f, 0xb5, 0x81, 0x33, 0x53, 0xb0, 0x76, 0xb9, 0x07, 0x77, + 0x1a, 0xd1, 0x15, 0x92, 0x66, 0x78, 0xef, 0x5f, 0x7e, 0x88, + 0x93, 0x04, 0xd0, 0x46, 0x3e, 0x58, 0x4e, 0xbd, 0xba, 0x79, + 0x87, 0xac, 0x38, 0x3c, 0x1a, 0x37, 0x10, 0x1b, 0xf9, 0x84, + 0x75, 0x29, 0xb2, 0x09, 0x88, 0x87, 0x67, 0x13, 0x82, 0x99, + 0xb6, 0x35, 0xd0, 0xaf, 0x5f, 0x7b, 0x4c, 0x06, 0xe6, 0x65, + 0x27, 0x6c, 0x86, 0xc7, 0x55, 0xfa, 0xd2, 0x8a, 0x47, 0xdd, + 0x20, 0x1c, 0xfe, 0xc5, 0x65, 0x4b, 0xbf, 0x44, 0x68, 0x1f, + 0xac, 0x71, 0x04, 0x21, 0x87, 0x69, 0x86, 0xe3, 0xc7, 0xea, + 0x31, 0x27, 0x10, 0xaf, 0x89, 0xcb, 0x7b, 0x12, 0x60, 0x9e, + 0x04, 0x76, 0xaf, 0x21, 0x8c, 0x9b, 0xcd, 0x93, 0x22, 0x51, + 0x69, 0x74, 0xc1, 0xb7, 0xcc, 0x9c, 0xc4, 0xc2, 0x09, 0xde, + 0xb5, 0xb4, 0x99, 0xff, 0x8d, 0xba, 0x88, 0xa0, 0x16, 0xd4, + 0xa8, 0x23, 0xc1, 0x48, 0xfd, 0x66, 0x1a, 0x79, 0xf6, 0x38, + 0x46, 0x6e, 0x6a, 0xc9, 0x76, 0x3e, 0x57, 0x98, 0x01, 0xfc, + 0x5b, 0x99, 0x23, 0x56, 0xa2, 0x54, 0xe9, 0x85, 0x8b, 0x1d, + 0xa1, 0x5d, 0x33, 0x27, 0x82, 0xe3, 0x72, 0x5b, 0x68, 0x27, + 0x5e, 0xe0, 0xdb, 0x7b, 0x6b, 0xa2, 0x1b, 0xf8, 0x9f, 0x25, + 0x42, 0x57, 0xd4, 0xa4, 0x51, 0x08, 0x0a, 0x8c, 0x74, 0x90, + 0x8a, 0x76, 0xcc, 0x9b, 0xfb, 0x9a, 0x88, 0x34, 0x59, 0xe8, + 0xf5, 0x7e, 0x80, 0xad, 0x8e, 0x10, 0x6c, 0x70, 0xdb, 0xef, + 0xa2, 0x90, 0x48, 0x80, 0xff, 0x17, 0xcc, 0x51, 0xd4, 0xc1, + 0x21, 0xfb, 0x8d, 0xa4, 0x0c, 0x8c, 0xc6, 0x2f, 0xcb, 0x9f, + 0xd6, 0xd5, 0x87, 0x20, 0x28, 0x75, 0x13, 0x05, 0x6d, 0x1b, + 0xb6, 0x29, 0x6a, 0x2d, 0x0b, 0x2b, 0x70, 0x2a, 0xbe, 0x0f, + 0x7c, 0x19, 0xbc, 0xee, 0x8c, 0xcf, 0x61, 0x4a, 0x0e, 0x92, + 0x0e, 0xa1, 0x84, 0x92, 0x11, 0xc2, 0x13, 0xde, 0x77, 0x3a, + 0x6e, 0xa6, 0x01, 0xa0, 0xf1, 0x29, 0xce, 0x15, 0x22, 0x6d, + 0x28, 0xed, 0x47, 0xb2, 0xd8, 0xd1, 0x8f, 0x72, 0xd6, 0xc3, + 0x95, 0x96, 0x4d, 0x0a, 0x0b, 0xaf, 0x63, 0x9c, 0xbb, 0x06, + 0xea, 0x2f, 0x6f, 0xcd, 0x6c, 0x66, 0x39, 0x94, 0x8d, 0xbe, + 0xad, 0x50, 0x5a, 0xb3, 0xef, 0x6a, 0x45, 0xc4, 0x8e, 0x19, + 0xbb, 0x05, 0x5d, 0x2b, 0xa0, 0xee, 0xf5, 0x61, 0xc4, 0xd9, + 0x7e, 0x5a, 0x19, 0x7f, 0x70, 0xbe, 0x5d, 0xb3, 0x56, 0x01, + 0x60, 0x5a, 0x53, 0x9e, 0xfd, 0xf6, 0x2a, 0x36, 0xb6, 0x94, + 0x91, 0x6a, 0x8a, 0xd0, 0x32, 0xbe, 0xe3, 0x45, 0x7a, 0x5c, + 0xb6, 0x87, 0xd6, 0x82, 0x84, 0x6a, 0x71, 0xd5, 0x30, 0x75, + 0x9e, 0xbc, 0x23, 0xf1, 0xdc, 0xa3, 0x8f, 0xa8, 0x82, 0xee, + 0x2b, 0x81, 0x90, 0x01, 0xe7, 0x16, 0xfa, 0x03, 0x26, 0x7b, + 0x28, 0x1b, 0x20, 0x65, 0xed, 0x29, 0xe0, 0x55, 0x72, 0x68, + 0x87, 0xfc, 0x05, 0xb8, 0xe6, 0xcf, 0x8e, 0xe4, 0x19, 0x4a, + 0xb9, 0x45, 0x4f, 0xbe, 0x93, 0xbc, 0x50, 0x9f, 0x61, 0x07, + 0x65, 0xd0, 0xa7, 0x26, 0x52, 0x3b, 0x45, 0xf1, 0x7d, 0x40, + 0x73, 0x03, 0xea, 0x3a, 0xcd, 0x05, 0xa5, 0x64, 0x01, 0xd9, + 0x6b, 0x14, 0x11, 0x9d, 0xd2, 0xab, 0x92, 0xd7, 0x3d, 0x59, + 0xa9, 0xba, 0x6f, 0x07, 0x8c, 0x95, 0xcf, 0x62, 0x9b, 0xbc, + 0x28, 0x2b, 0x74, 0xd1, 0x2a, 0x2d, 0xf0, 0xb0, 0xaf, 0xb3, + 0x2a, 0x6a, 0xf6, 0x4d, 0xcf, 0xd0, 0x87, 0xc0, 0x95, 0x05, + 0xfd, 0x4e, 0x94, 0x0f, 0x2c, 0xac, 0x03, 0xa8, 0xbd, 0x3c, + 0x33, 0x64, 0xb5, 0x3e, 0x75, 0xba, 0x47, 0xeb, 0x38, 0x0d, + 0xec, 0x18, 0xa5, 0x57, 0x84, 0x13, 0x67, 0x08, 0x1a, 0xd5, + 0x94, 0x6e, 0x90, 0x88, 0x5c, 0xb2, 0xe9, 0x92, 0x51, 0xef, + 0x2b, 0xde, 0x08, 0xcf, 0xd1, 0x01, 0x76, 0x07, 0xf0, 0x62, + 0xa3, 0x09, 0x29, 0x26, 0xf7, 0x10, 0x12, 0xf1, 0x5c, 0xa3, + 0x7e, 0xea, 0x97, 0xd3, 0x27, 0x01, 0xc7, 0xb6, 0xaa, 0x39, + 0xde, 0xd2, 0x59, 0x80, 0xa0, 0x17, 0x4c, 0x14, 0x77, 0x6c, + 0x9d, 0xa4, 0x6b, 0xb4, 0x6a, 0x8d, 0x78, 0x2d, 0x60, 0xaf, + 0xf4, 0x7b, 0xe3, 0xff, 0x96, 0xb8, 0x4a, 0xc7, 0x0f, 0x0b, + 0xfd, 0xff, 0x07, 0x4a, 0xd2, 0x6c, 0x77, 0x55, 0x7b, 0xd7, + 0x78, 0x60, 0xb3, 0x4c, 0xd9, 0xa0, 0x3d, 0x4b, 0xa1, 0xb5, + 0xeb, 0x43, 0x23, 0x39, 0xd4, 0x3c, 0x99, 0xb4, 0x64, 0x2f, + 0xbd, 0x1f, 0xbe, 0x54, 0x88, 0x77, 0xa0, 0x32, 0xdf, 0x8d, + 0xe6, 0xc2, 0x79, 0x0b, 0xde, 0x8a, 0x11, 0x1d, 0x7e, 0xe0, + 0x2e, 0x88, 0x99, 0x1d, 0x8b, 0xe1, 0x49, 0x29, 0x98, 0xdf, + 0x09, 0xe9, 0x75, 0xa2, 0x7b, 0x6a, 0xda, 0x30, 0x36, 0xd0, + 0xe4, 0x26, 0x82, 0xfd, 0x7a, 0xb6, 0x69, 0x03, 0x8a, 0x19, + 0xbb, 0xde, 0x7c, 0xcf, 0x0f, 0xff, 0xb0, 0x4a, 0x2d, 0x16, + 0x9b, 0x62, 0xbe, 0x60, 0xee, 0xa6, 0x38, 0xc1, 0x55, 0x0d, + 0x44, 0x8e, 0x4c, 0xfe, 0x1f, 0xe8, 0x7b, 0xdd, 0x04, 0xc5, + 0x42, 0xa4, 0xf8, 0x75, 0xf3, 0xf2, 0x7d, 0xa1, 0x18, 0x92, + 0xb0, 0x03, 0x9a, 0x09, 0xd3, 0xa6, 0x26, 0x1b, 0x32, 0x16, + 0x7e, 0xbe, 0xd9, 0xd7, 0x92, 0xb3, 0x4a, 0x83, 0x7c, 0x0f, + 0xc4, 0xd2, 0x7f, 0x11, 0xf2, 0xa2, 0xd8, 0x41, 0xe0, 0xf8, + 0xc6, 0xdf, 0xe5, 0x68, 0x9d, 0xdb, 0x13, 0xb1, 0x1b, 0xae, + 0x71, 0xbd, 0xf1, 0x83, 0xab, 0x89, 0x3a, 0x6b, 0xd7, 0x96, + 0x7d, 0x64, 0xa9, 0x14, 0xb7, 0xac, 0xb1, 0x09, 0x57, 0x7c, + 0x92, 0xa6, 0x6e, 0x07, 0x78, 0x7d, 0x9c, 0xb0, 0x7e, 0x77, + 0xd3, 0x13, 0xb4, 0x83, 0xa3, 0xc4, 0x3d, 0x6b, 0x01, 0xc0, + 0xb3, 0xa9, 0x7e, 0xd9, 0x1e, 0x9d, 0x2c, 0xa8, 0x74, 0x37, + 0x05, 0x3b, 0x04, 0x44, 0x55, 0xac, 0x1c, 0x42, 0x9f, 0x0d, + 0xc9, 0xfe, 0x48, 0x17, 0xf7, 0x28, 0x2c, 0xf9, 0x4f, 0x35, + 0xa9, 0x18, 0x2e, 0xbc, 0x7f, 0xb2, 0x73, 0x5b, 0xe4, 0x15, + 0x37, 0x9c, 0x8a, 0x06, 0x76, 0x1a, 0xfd, 0x74, 0x81, 0x57, + 0x9e, 0x66, 0xa4, 0x38, 0x80, 0xaa, + }, + { + /* 7 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x54, 0x30, 0x7b, + 0xef, 0x84, 0x08, 0x09, 0xd4, 0xd5, 0xa3, 0x8d, 0xa6, 0xa1, + 0xc1, 0x0a, 0x02, 0xa8, 0x60, 0xf6, 0x1d, 0xcb, 0x10, 0x12, + 0x6b, 0x69, 0x85, 0xd9, 0x8f, 0x81, 0x41, 0x14, 0x03, 0xfc, + 0x50, 0x8d, 0xf2, 0x4f, 0x18, 0x1b, 0xbf, 0xbc, 0x26, 0x54, + 0x29, 0x20, 0x80, 0x1e, 0x04, 0x93, 0xc0, 0x2f, 0x3a, 0x55, + 0x20, 0x24, 0xd6, 0xd2, 0xc9, 0x71, 0xdd, 0xc1, 0x82, 0x28, + 0x05, 0xc7, 0xf0, 0x54, 0xd5, 0xd1, 0x28, 0x2d, 0x02, 0x07, + 0x6a, 0xfc, 0x7b, 0x60, 0x43, 0x22, 0x06, 0x3b, 0xa0, 0xd9, + 0x27, 0x9e, 0x30, 0x36, 0xbd, 0xbb, 0x4c, 0xa8, 0x52, 0x40, + 0xc3, 0x3c, 0x07, 0x6f, 0x90, 0xa2, 0xc8, 0x1a, 0x38, 0x3f, + 0x69, 0x6e, 0xef, 0x25, 0xf4, 0xe1, 0x02, 0x36, 0x08, 0xe5, + 0x43, 0x5e, 0x74, 0xaa, 0x40, 0x48, 0x6f, 0x67, 0x51, 0xe2, + 0x79, 0x41, 0xc7, 0x50, 0x09, 0xb1, 0x73, 0x25, 0x9b, 0x2e, + 0x48, 0x41, 0xbb, 0xb2, 0xf2, 0x6f, 0xdf, 0xe0, 0x06, 0x5a, + 0x0a, 0x4d, 0x23, 0xa8, 0x69, 0x61, 0x50, 0x5a, 0x04, 0x0e, + 0xd4, 0x3b, 0xf6, 0xc0, 0x86, 0x44, 0x0b, 0x19, 0x13, 0xd3, + 0x86, 0xe5, 0x58, 0x53, 0xd0, 0xdb, 0x77, 0xb6, 0x50, 0x61, + 0x47, 0x4e, 0x0c, 0x76, 0x83, 0x71, 0x4e, 0xff, 0x60, 0x6c, + 0xb9, 0xb5, 0x98, 0x93, 0xa4, 0x80, 0x45, 0x78, 0x0d, 0x22, + 0xb3, 0x0a, 0xa1, 0x7b, 0x68, 0x65, 0x6d, 0x60, 0x3b, 0x1e, + 0x02, 0x21, 0x84, 0x72, 0x0e, 0xde, 0xe3, 0x87, 0x53, 0x34, + 0x70, 0x7e, 0xd2, 0xdc, 0x1d, 0x4a, 0x2b, 0x01, 0x04, 0x6c, + 0x0f, 0x8a, 0xd3, 0xfc, 0xbc, 0xb0, 0x78, 0x77, 0x06, 0x09, + 0xbe, 0xc7, 0x8d, 0xa0, 0xc5, 0x66, 0x10, 0x09, 0x86, 0xbc, + 0xe8, 0x97, 0x80, 0x90, 0xde, 0xce, 0xa2, 0x07, 0xf2, 0x82, + 0x4d, 0xa0, 0x11, 0x5d, 0xb6, 0xc7, 0x07, 0x13, 0x88, 0x99, + 0x0a, 0x1b, 0x01, 0x8a, 0x54, 0x23, 0x8c, 0xaa, 0x12, 0xa1, + 0xe6, 0x4a, 0xf5, 0x5c, 0x90, 0x82, 0xb5, 0xa7, 0x27, 0xde, + 0x7d, 0x03, 0x0c, 0xb4, 0x13, 0xf5, 0xd6, 0x31, 0x1a, 0xd8, + 0x98, 0x8b, 0x61, 0x72, 0x84, 0x53, 0xdb, 0xa2, 0xcd, 0xbe, + 0x14, 0x9a, 0x46, 0x93, 0xd2, 0xc2, 0xa0, 0xb4, 0x08, 0x1c, + 0x6b, 0x76, 0x2f, 0x43, 0xcf, 0x88, 0x15, 0xce, 0x76, 0xe8, + 0x3d, 0x46, 0xa8, 0xbd, 0xdc, 0xc9, 0xc8, 0xfb, 0x89, 0xe2, + 0x0e, 0x82, 0x16, 0x32, 0x26, 0x65, 0xcf, 0x09, 0xb0, 0xa6, + 0x63, 0x75, 0xee, 0xaf, 0xa0, 0xc2, 0x8e, 0x9c, 0x17, 0x66, + 0x16, 0x1e, 0x20, 0x8d, 0xb8, 0xaf, 0xb7, 0xa0, 0x4d, 0x22, + 0x06, 0x63, 0x4f, 0x96, 0x18, 0xec, 0xc5, 0xe2, 0x9c, 0x3d, + 0xc0, 0xd8, 0xb1, 0xa9, 0xf3, 0xe5, 0x8b, 0xc3, 0x8a, 0xf0, + 0x19, 0xb8, 0xf5, 0x99, 0x73, 0xb9, 0xc8, 0xd1, 0x65, 0x7c, + 0x50, 0x68, 0x2d, 0x62, 0x4b, 0xfa, 0x1a, 0x44, 0xa5, 0x14, + 0x81, 0xf6, 0xd0, 0xca, 0xda, 0xc0, 0x76, 0x3c, 0x04, 0x42, + 0xcb, 0xe4, 0x1b, 0x10, 0x95, 0x6f, 0x6e, 0x72, 0xd8, 0xc3, + 0x0e, 0x15, 0xd5, 0xb1, 0xa2, 0xe3, 0x0a, 0xee, 0x1c, 0x7f, + 0x05, 0xcd, 0xa6, 0x68, 0xe0, 0xfc, 0x67, 0x7b, 0x3a, 0x94, + 0x56, 0x02, 0x08, 0xd8, 0x1d, 0x2b, 0x35, 0xb6, 0x49, 0xec, + 0xe8, 0xf5, 0xb3, 0xae, 0x99, 0x19, 0xf0, 0xa3, 0xc9, 0xd2, + 0x1e, 0xd7, 0x65, 0x3b, 0xbb, 0xa3, 0xf0, 0xee, 0x0c, 0x12, + 0xbf, 0x4d, 0xd9, 0x83, 0x49, 0xcc, 0x1f, 0x83, 0x55, 0x40, + 0x54, 0x27, 0xf8, 0xe7, 0xd8, 0xc7, 0x1c, 0xc0, 0x7f, 0x22, + 0x88, 0xc6, 0x20, 0x12, 0xcf, 0xbb, 0x13, 0xed, 0xc3, 0xe3, + 0x7f, 0x5f, 0x87, 0x0e, 0x27, 0xc7, 0x9a, 0x83, 0x21, 0x46, + 0xff, 0xc0, 0xfc, 0x69, 0xcb, 0xea, 0xab, 0x8a, 0x24, 0x83, + 0x81, 0x66, 0x5b, 0x89, 0x22, 0xba, 0xaf, 0x4d, 0x0e, 0x26, + 0xd3, 0xf1, 0x14, 0x36, 0x02, 0xd7, 0xa8, 0x46, 0xdb, 0x97, + 0x23, 0xee, 0x9f, 0x36, 0xe1, 0xa2, 0xdb, 0xf8, 0xc0, 0xe3, + 0xa1, 0x5a, 0x0e, 0xe7, 0x1a, 0x9d, 0x24, 0x81, 0x0f, 0x94, + 0x29, 0xb8, 0xe3, 0xc7, 0xa9, 0x8d, 0x4e, 0x7f, 0xfa, 0x06, + 0x18, 0xab, 0x25, 0xd5, 0x3f, 0xef, 0xc6, 0x3c, 0xeb, 0xce, + 0x7d, 0x58, 0xed, 0xf2, 0x5c, 0xa7, 0xd9, 0xa1, 0x26, 0x29, + 0x6f, 0x62, 0x34, 0x73, 0xf3, 0xd5, 0xc2, 0xe4, 0xcb, 0xa6, + 0x75, 0x87, 0x59, 0xbf, 0x27, 0x7d, 0x5f, 0x19, 0xdb, 0xf7, + 0xfb, 0xdc, 0x16, 0x31, 0x68, 0x2b, 0xd3, 0x26, 0x98, 0xb5, + 0x28, 0xf7, 0x8c, 0xe5, 0x67, 0x47, 0x83, 0xab, 0x10, 0x38, + 0xd6, 0xec, 0x5e, 0x86, 0x5d, 0xd3, 0x29, 0xa3, 0xbc, 0x9e, + 0x88, 0xc3, 0x8b, 0xa2, 0xc4, 0xed, 0x75, 0x61, 0xf8, 0x27, + 0x9c, 0xd9, 0x2a, 0x5f, 0xec, 0x13, 0x7a, 0x8c, 0x93, 0xb9, + 0x7b, 0x51, 0x53, 0x35, 0xd1, 0x07, 0x1c, 0xc7, 0x2b, 0x0b, + 0xdc, 0x68, 0x95, 0x08, 0x9b, 0xb0, 0xaf, 0x84, 0xf0, 0xb8, + 0x77, 0xa6, 0xdd, 0xcd, 0x2c, 0x64, 0x4c, 0xca, 0x5d, 0x12, + 0xa3, 0x8f, 0xc6, 0xea, 0x1f, 0x9d, 0x83, 0x47, 0xdf, 0xfb, + 0x2d, 0x30, 0x7c, 0xb1, 0xb2, 0x96, 0xab, 0x86, 0x12, 0x3f, + 0xbc, 0x10, 0x25, 0xe6, 0x1e, 0xf1, 0x2e, 0xcc, 0x2c, 0x3c, + 0x40, 0xd9, 0xb3, 0x9d, 0xad, 0x83, 0x9a, 0x44, 0x0c, 0xc6, + 0x9e, 0xef, 0x2f, 0x98, 0x1c, 0x47, 0xaf, 0x5d, 0xbb, 0x94, + 0x79, 0x56, 0x39, 0xc9, 0xaa, 0x67, 0x5f, 0xe5, 0x30, 0x1b, + 0x49, 0x07, 0xfb, 0x7a, 0x43, 0x73, 0xa1, 0x91, 0x25, 0x09, + 0xd5, 0x45, 0xd7, 0x23, 0x31, 0x4f, 0x79, 0x7c, 0x14, 0xfe, + 0x4b, 0x7a, 0x75, 0x44, 0x86, 0x84, 0x73, 0xe4, 0x16, 0x29, + 0x32, 0xb3, 0x29, 0xf1, 0xe6, 0xb1, 0x53, 0x61, 0xca, 0xf8, + 0xa0, 0xd0, 0x5a, 0xc4, 0x96, 0x37, 0x33, 0xe7, 0x19, 0x8a, + 0x09, 0x35, 0x5b, 0x68, 0x1e, 0x2d, 0x03, 0x5d, 0xfc, 0x65, + 0x57, 0x3d, 0x34, 0x88, 0x89, 0x28, 0xc1, 0x2f, 0x63, 0x57, + 0x77, 0x43, 0xec, 0x78, 0x08, 0x84, 0x55, 0x0b, 0x35, 0xdc, + 0xb9, 0x53, 0x2e, 0xab, 0x6b, 0x5e, 0xa3, 0x96, 0x4f, 0xf5, + 0xae, 0x25, 0x94, 0x01, 0x36, 0x20, 0xe9, 0xde, 0xdc, 0xe4, + 0x73, 0x45, 0x1c, 0x2a, 0x69, 0xa1, 0x87, 0x05, 0x14, 0x1f, + 0x37, 0x74, 0xd9, 0xa5, 0x33, 0x60, 0x7b, 0x4c, 0xc8, 0xff, + 0xca, 0x2c, 0x21, 0xa4, 0xd5, 0x15, 0x38, 0xfe, 0x0a, 0x59, + 0x8f, 0xd0, 0x03, 0x3b, 0xce, 0xf6, 0x74, 0xeb, 0xac, 0x04, + 0x10, 0x73, 0x39, 0xaa, 0x3a, 0x22, 0x60, 0x54, 0x0b, 0x32, + 0x1a, 0x23, 0xd7, 0x66, 0x0a, 0xa5, 0xd1, 0x79, 0x3a, 0x56, + 0x6a, 0xaf, 0x92, 0x1b, 0x13, 0x29, 0xa5, 0x9f, 0xf1, 0x32, + 0x23, 0x85, 0x51, 0x67, 0x3b, 0x02, 0x5a, 0xd4, 0x7d, 0x9f, + 0x1b, 0x20, 0x71, 0x4a, 0x52, 0xbf, 0x85, 0x24, 0x90, 0x6d, + 0x3c, 0x6d, 0xca, 0x76, 0xb5, 0x85, 0x23, 0x1f, 0x18, 0x24, + 0xbd, 0x9a, 0x71, 0xc5, 0x92, 0x5b, 0x3d, 0x39, 0xfa, 0x0d, + 0x5a, 0x01, 0x2b, 0x16, 0xcc, 0xf1, 0x1e, 0x17, 0xd7, 0x64, + 0x53, 0x51, 0x3e, 0xc5, 0xaa, 0x80, 0xa8, 0x4e, 0x33, 0x0d, + 0x73, 0x4d, 0x38, 0x43, 0xfe, 0x44, 0xd3, 0x4f, 0x3f, 0x91, + 0x9a, 0xfb, 0x47, 0xca, 0x3b, 0x04, 0xa7, 0x98, 0x9b, 0xce, + 0x58, 0xe5, 0x12, 0x45, 0x40, 0x24, 0x5d, 0xb5, 0x26, 0x19, + 0x45, 0x05, 0xfe, 0xbe, 0xcd, 0x1c, 0x4e, 0x4d, 0xf7, 0xc5, + 0x41, 0x70, 0x6d, 0xce, 0xc9, 0x9d, 0x4d, 0x0c, 0x2a, 0x6b, + 0x6e, 0x91, 0xe8, 0xec, 0x36, 0xcf, 0x42, 0x8c, 0x3d, 0x43, + 0x3b, 0xd2, 0x55, 0x17, 0x95, 0xd7, 0x48, 0xc5, 0xc1, 0xcc, + 0xb6, 0xd1, 0x43, 0xd8, 0x0d, 0x38, 0xd4, 0x56, 0x5d, 0x1e, + 0x41, 0x02, 0xeb, 0x48, 0x67, 0x6d, 0x77, 0xdb, 0x44, 0xb7, + 0x9d, 0x9a, 0x1c, 0x4c, 0x65, 0x21, 0x28, 0x6c, 0x04, 0x6d, + 0x93, 0x8c, 0x75, 0xed, 0x45, 0xe3, 0xad, 0xe1, 0xf3, 0xc8, + 0x6d, 0x28, 0xfc, 0xb9, 0xa7, 0xe0, 0x35, 0x2d, 0xb4, 0xe7, + 0x46, 0x1f, 0xfd, 0x6c, 0x01, 0x87, 0x75, 0x33, 0x43, 0x05, + 0x81, 0xb4, 0x1c, 0x0d, 0x34, 0xf9, 0x47, 0x4b, 0xcd, 0x17, + 0xee, 0x03, 0x7d, 0x3a, 0x97, 0xd0, 0x22, 0x39, 0xba, 0xac, + 0xf5, 0xf3, 0x48, 0xc1, 0x1e, 0xeb, 0x52, 0xb3, 0x05, 0x4d, + 0x91, 0xd9, 0x9c, 0xfe, 0x37, 0x0c, 0x30, 0x95, 0x49, 0x95, + 0x2e, 0x90, 0xbd, 0x37, 0x0d, 0x44, 0x45, 0x0c, 0x3f, 0x73, + 0x91, 0xad, 0xf1, 0x9f, 0x4a, 0x69, 0x7e, 0x1d, 0x4f, 0x78, + 0x15, 0x5f, 0xfa, 0xb0, 0x19, 0x27, 0xb8, 0x8d, 0x71, 0x81, + 0x4b, 0x3d, 0x4e, 0x66, 0xa0, 0xfc, 0x1d, 0x56, 0x2e, 0x65, + 0xba, 0xaa, 0x1e, 0x2c, 0xb0, 0x8b, 0x4c, 0x52, 0xde, 0xc4, + 0x68, 0xe6, 0x25, 0x69, 0x47, 0x0b, 0x55, 0x8f, 0xea, 0xcd, + 0xb2, 0xbd, 0x4d, 0x06, 0xee, 0xbf, 0x87, 0x62, 0x2d, 0x60, + 0x93, 0xde, 0xf6, 0x02, 0x4c, 0x6c, 0x73, 0xb7, 0x4e, 0xfa, + 0xbe, 0x32, 0x75, 0x2d, 0x35, 0x7b, 0x2c, 0x62, 0xd0, 0x56, + 0x65, 0x4c, 0xf3, 0xa9, 0x4f, 0xae, 0x8e, 0x49, 0x9a, 0xa9, + 0x3d, 0x72, 0xf8, 0xb7, 0x73, 0xdb, 0xc3, 0xed, 0x32, 0xa3, + 0x50, 0x2d, 0xdb, 0x09, 0xce, 0x8e, 0xc5, 0x95, 0x20, 0x70, + 0x6f, 0x1b, 0xbc, 0xcf, 0xba, 0x65, 0x51, 0x79, 0xeb, 0x72, + 0x21, 0x0a, 0xcd, 0x9c, 0xf4, 0xa5, 0xcc, 0x96, 0x1a, 0x6e, + 0x7b, 0x6f, 0x52, 0x85, 0xbb, 0xff, 0xd3, 0x45, 0xd5, 0x87, + 0x4b, 0x19, 0xea, 0xc2, 0x33, 0x4e, 0xfb, 0x71, 0x53, 0xd1, + 0x8b, 0x84, 0x3c, 0xc1, 0xdd, 0x8e, 0x9f, 0xcc, 0x49, 0x4f, + 0x95, 0xef, 0x3a, 0x7b, 0x54, 0xbe, 0x1b, 0x26, 0xf4, 0xdb, + 0xe5, 0xb1, 0xf6, 0xa2, 0xa6, 0x6a, 0x61, 0x0e, 0x38, 0x4d, + 0x55, 0xea, 0x2b, 0x5d, 0x1b, 0x5f, 0xed, 0xb8, 0x22, 0x77, + 0x05, 0xe7, 0xc7, 0xaf, 0xf9, 0x47, 0x56, 0x16, 0x7b, 0xd0, + 0xe9, 0x10, 0xf5, 0xa3, 0x9d, 0xcb, 0x23, 0xb3, 0xee, 0x8f, + 0x79, 0x59, 0x57, 0x42, 0x4b, 0xab, 0x06, 0x94, 0xfd, 0xaa, + 0x49, 0x1e, 0x80, 0x3e, 0x48, 0x2e, 0xb8, 0x53, 0x58, 0xc8, + 0x98, 0x57, 0xba, 0x24, 0x85, 0xdd, 0x4f, 0x17, 0x3e, 0xf9, + 0xc5, 0x8e, 0x7d, 0x35, 0x59, 0x9c, 0xa8, 0x2c, 0x55, 0xa0, + 0x8d, 0xd4, 0x9b, 0xc2, 0x9d, 0x74, 0x63, 0x2f, 0xbc, 0x3f, + 0x5a, 0x60, 0xf8, 0xa1, 0xa7, 0xef, 0x95, 0xcf, 0x24, 0x7e, + 0xbb, 0x20, 0x4a, 0x0f, 0x3c, 0x21, 0x5b, 0x34, 0xc8, 0xda, + 0x48, 0x6b, 0x9d, 0xc6, 0xf0, 0xab, 0x18, 0xad, 0xec, 0xae, + 0xfd, 0x2b, 0x5c, 0x5b, 0x58, 0x78, 0x80, 0x71, 0xa5, 0xf9, + 0x99, 0xc5, 0xf7, 0x88, 0x18, 0x4f, 0xff, 0x1d, 0x5d, 0x0f, + 0x68, 0x03, 0x6f, 0xf5, 0xad, 0xf0, 0x4d, 0x10, 0x54, 0x05, + 0xbe, 0xee, 0x3e, 0x17, 0x5e, 0xf3, 0x38, 0x8e, 0x9d, 0xba, + 0xb5, 0xeb, 0xf2, 0xac, 0x72, 0x51, 0x97, 0xce, 0xbe, 0x09, + 0x5f, 0xa7, 0x08, 0xf5, 0x72, 0x3e, 0xbd, 0xe2, 0x26, 0x79, + 0xd1, 0xdc, 0x31, 0x6f, 0x7f, 0x03, 0x60, 0x36, 0x92, 0x0e, + 0x35, 0xf4, 0x86, 0xe6, 0x81, 0xe1, 0x4a, 0x12, 0x69, 0x8a, + 0x6d, 0x46, 0x61, 0x62, 0xa2, 0x75, 0xda, 0x70, 0x8e, 0xef, + 0x55, 0x34, 0xe9, 0x9f, 0xcf, 0x2b, 0xac, 0x4c, 0x62, 0x9e, + 0xf2, 0xf8, 0x28, 0x3f, 0x96, 0xf4, 0xea, 0x88, 0xcf, 0xcb, + 0xe6, 0x0b, 0x2c, 0x52, 0x63, 0xca, 0xc2, 0x83, 0xc7, 0xbb, + 0x9e, 0xfd, 0x3e, 0x5d, 0x6c, 0x46, 0x40, 0xaa, 0xed, 0x58, + 0x64, 0xa5, 0x52, 0x21, 0x0f, 0xa1, 0xa6, 0xc2, 0x57, 0x33, + 0x83, 0x63, 0xb4, 0x4b, 0xef, 0x6e, 0x65, 0xf1, 0x62, 0x5a, + 0xe0, 0x25, 0xae, 0xcb, 0x83, 0xe6, 0x20, 0xee, 0x12, 0xea, + 0x2e, 0x64, 0x66, 0x0d, 0x32, 0xd7, 0x12, 0x6a, 0xb6, 0xd0, + 0x3c, 0x5a, 0x06, 0xba, 0x3b, 0xca, 0xae, 0x7a, 0x67, 0x59, + 0x02, 0xac, 0xfd, 0xee, 0xbe, 0xd9, 0xe8, 0x8f, 0xa5, 0x37, + 0x9d, 0x6b, 0x6f, 0x70, 0x68, 0xd3, 0xd1, 0x50, 0x41, 0x5e, + 0xc6, 0xae, 0xee, 0x86, 0x1b, 0xf0, 0x10, 0xcb, 0xaa, 0x16, + 0x69, 0x87, 0xe1, 0x2b, 0xae, 0xda, 0xce, 0xa7, 0x3a, 0x53, + 0xb8, 0x7d, 0xb6, 0x6a, 0x6b, 0x1c, 0x6a, 0x7b, 0xb1, 0xa6, + 0x5c, 0x95, 0xd6, 0xbc, 0x85, 0xef, 0x9e, 0x29, 0x9f, 0x4a, + 0xeb, 0x02, 0x6b, 0x2f, 0x81, 0xdd, 0xb3, 0x11, 0xde, 0xb5, + 0x51, 0x3a, 0x3d, 0xa4, 0x39, 0xeb, 0x2a, 0x08, 0x6c, 0x40, + 0x11, 0x7f, 0x7b, 0x0b, 0xe6, 0x8a, 0x38, 0x54, 0xd2, 0x81, + 0xcd, 0x0a, 0x28, 0x3e, 0x6d, 0x14, 0x21, 0x04, 0x94, 0x8f, + 0xee, 0x83, 0xec, 0x81, 0x71, 0x0c, 0x6b, 0xab, 0xe9, 0x34, + 0x6e, 0xe8, 0x71, 0x89, 0x66, 0xc0, 0xf6, 0x98, 0x53, 0x3d, + 0x57, 0x58, 0x42, 0x8b, 0x69, 0x2a, 0x6f, 0xbc, 0x41, 0xf2, + 0x89, 0x44, 0xfe, 0x91, 0x87, 0xe8, 0xf4, 0xd5, 0xe4, 0x2a, + 0xa8, 0x20, 0x70, 0x3f, 0x14, 0xb2, 0xdd, 0x63, 0x06, 0x76, + 0x5f, 0x2f, 0xe8, 0x15, 0x9b, 0x08, 0x20, 0xe6, 0x71, 0x6b, + 0x24, 0xc9, 0x32, 0xe7, 0x0e, 0x7f, 0x8b, 0xfa, 0x4b, 0x98, + 0x3d, 0xa9, 0xe1, 0xec, 0x72, 0x97, 0x74, 0x44, 0xc0, 0xa8, + 0x16, 0x64, 0x34, 0x46, 0x6d, 0xcc, 0x14, 0x89, 0x61, 0xf2, + 0x73, 0xc3, 0x44, 0x3f, 0x2f, 0x2c, 0x1e, 0x6d, 0xe0, 0x93, + 0xce, 0x41, 0xb2, 0x28, 0xa0, 0xf8, 0x74, 0xac, 0xd4, 0x9d, + 0xe7, 0x36, 0x26, 0x52, 0x89, 0xfd, 0x21, 0x64, 0x46, 0xc9, + 0xa2, 0xce, 0x75, 0xf8, 0xe4, 0xe6, 0x08, 0xb2, 0x2e, 0x5b, + 0x5d, 0x28, 0x82, 0xe9, 0xe0, 0x68, 0x63, 0xc4, 0x76, 0x04, + 0xb4, 0x6b, 0xfa, 0xfd, 0x36, 0x40, 0xe2, 0x94, 0xa4, 0xbd, + 0xc9, 0x48, 0xe3, 0xda, 0x77, 0x50, 0x84, 0x10, 0x15, 0x79, + 0x3e, 0x49, 0x36, 0x41, 0x07, 0x30, 0x6f, 0xe9, 0x22, 0xd0, + 0x78, 0xda, 0x57, 0xec, 0xa9, 0xc9, 0x46, 0x3e, 0x30, 0x48, + 0xb9, 0xf7, 0xe2, 0x49, 0xe7, 0xb6, 0x79, 0x8e, 0x67, 0x97, + 0x46, 0x4d, 0x4e, 0x37, 0xe4, 0x9d, 0x1a, 0x7a, 0x44, 0xe8, + 0x26, 0xbc, 0x7a, 0x72, 0x37, 0x1a, 0xb4, 0x02, 0x56, 0x2c, + 0x5b, 0x21, 0x3c, 0x2e, 0x6d, 0xc8, 0xa6, 0xa2, 0x7b, 0x26, + 0x07, 0x61, 0x5b, 0x86, 0x5e, 0x25, 0x8f, 0xf4, 0x9f, 0xa3, + 0xcb, 0x69, 0x67, 0xa8, 0x7c, 0x49, 0x97, 0xc3, 0x93, 0x9c, + 0x66, 0x1a, 0xe6, 0x9a, 0x70, 0x86, 0x3f, 0x88, 0x65, 0x9e, + 0x7d, 0x1d, 0xa7, 0xb8, 0x7c, 0x18, 0x6e, 0x13, 0x32, 0x4f, + 0xd3, 0x0b, 0x99, 0x29, 0xa4, 0x94, 0x7e, 0xe1, 0xf7, 0x35, + 0x8e, 0x57, 0x76, 0x08, 0x8d, 0xf3, 0xf5, 0x5f, 0xb0, 0x09, + 0x24, 0x8a, 0x7f, 0xb5, 0xc7, 0x4e, 0x61, 0xd3, 0x7e, 0x01, + 0x59, 0x26, 0x56, 0xd2, 0x16, 0xa8, 0xe5, 0x80, 0x80, 0x48, + 0xba, 0xa9, 0x4c, 0x32, 0x8a, 0x0a, 0x3f, 0xbf, 0x59, 0x38, + 0x9c, 0x9a, 0x2d, 0x49, 0x81, 0x1c, 0x8a, 0xd2, 0xa3, 0xb6, + 0x82, 0x03, 0xeb, 0x6a, 0xfa, 0xb5, 0x3a, 0x3b, 0xec, 0x43, + 0x82, 0xe0, 0xda, 0x5f, 0x51, 0xf9, 0x9a, 0x18, 0x54, 0xd6, + 0xdc, 0xe1, 0x13, 0x1b, 0x6c, 0x5d, 0x83, 0xb4, 0xea, 0x24, + 0xbe, 0x7d, 0x92, 0x11, 0x80, 0x03, 0x7f, 0x6c, 0xb5, 0xba, + 0xad, 0x57, 0x84, 0xdb, 0x7a, 0x86, 0x76, 0x67, 0xaa, 0x2e, + 0xe9, 0x6d, 0x90, 0x49, 0x41, 0x5b, 0xaf, 0x61, 0x85, 0x8f, + 0x4a, 0xfd, 0x99, 0xe3, 0xa2, 0x27, 0x3d, 0xb8, 0x33, 0xc4, + 0xe7, 0xfa, 0x6e, 0x6b, 0x86, 0x73, 0x1a, 0x70, 0x6b, 0xac, + 0xba, 0x3c, 0x82, 0x04, 0x15, 0x90, 0xce, 0xda, 0xee, 0x75, + 0x87, 0x27, 0x2a, 0x0b, 0x84, 0x28, 0xb2, 0x35, 0x56, 0xd1, + 0xb6, 0x1d, 0x68, 0x7b, 0x2f, 0x7f, 0x88, 0xad, 0xf9, 0xf7, + 0x38, 0x98, 0xca, 0x42, 0x50, 0xd8, 0x08, 0xda, 0xe5, 0xdb, + 0xea, 0x19, 0x89, 0xf9, 0xc9, 0x8c, 0xd7, 0x1c, 0xc2, 0x4b, + 0x84, 0x0d, 0xab, 0x57, 0x43, 0x7a, 0x2b, 0x13, 0x8a, 0x05, + 0x99, 0x01, 0x25, 0x53, 0xda, 0x50, 0x3b, 0xb1, 0x8d, 0x03, + 0x6a, 0x5a, 0xab, 0x0d, 0x8b, 0x51, 0xa9, 0x7a, 0xca, 0xd7, + 0xd2, 0x59, 0xef, 0x64, 0x2e, 0x8e, 0xcc, 0xfb, 0x6a, 0x07, + 0x8c, 0x3e, 0x39, 0xd8, 0x02, 0xcd, 0xea, 0x66, 0x86, 0x0a, + 0xc1, 0xab, 0x38, 0x1a, 0x68, 0x31, 0x8d, 0x6a, 0x09, 0xa3, + 0xed, 0x49, 0xe2, 0x6f, 0x52, 0xdf, 0x62, 0x26, 0x9e, 0xbb, + 0xa9, 0x3b, 0x8e, 0x96, 0x59, 0x2e, 0x1f, 0x06, 0xfa, 0x74, + 0xed, 0x63, 0x44, 0x72, 0xb7, 0x9b, 0x29, 0x25, 0x8f, 0xc2, + 0x69, 0x55, 0xf0, 0x82, 0xf2, 0x7d, 0x39, 0xb6, 0xe7, 0xff, + 0x11, 0x3a, 0xe8, 0x2f, 0x90, 0x41, 0x3c, 0x15, 0xa4, 0xa5, + 0x0a, 0x9a, 0xe1, 0x71, 0xfb, 0x3f, 0x6e, 0x18, 0x60, 0xe9, + 0x91, 0x15, 0x0c, 0x6e, 0x4b, 0x21, 0x02, 0x93, 0x35, 0xa4, + 0x58, 0xb2, 0xc8, 0xb9, 0xa1, 0xe3, 0x92, 0xe9, 0x5c, 0xe3, + 0xb9, 0x6e, 0x1a, 0x88, 0x8a, 0x18, 0x7e, 0xe6, 0xe1, 0x99, + 0x21, 0xfd, 0x93, 0xbd, 0x6c, 0x98, 0x56, 0xea, 0x12, 0x81, + 0x5e, 0xcd, 0xdd, 0x6b, 0x47, 0x38, 0xe0, 0xf7, 0x94, 0xd2, + 0xfc, 0x3a, 0x9e, 0xf0, 0x2a, 0xbe, 0x37, 0xa3, 0x32, 0x4e, + 0xb3, 0xd9, 0xe2, 0xc1, 0x95, 0x86, 0xcc, 0x41, 0x71, 0x74, + 0x22, 0xb7, 0xe3, 0x76, 0x91, 0xc3, 0x15, 0x78, 0x23, 0xcb, + 0x96, 0x7a, 0x9c, 0xcc, 0x83, 0x3b, 0x3a, 0xac, 0x5c, 0xca, + 0xb7, 0x97, 0x3c, 0x58, 0xa3, 0xd5, 0x97, 0x2e, 0xac, 0xb7, + 0x6c, 0xbf, 0x32, 0xa5, 0x88, 0x1f, 0x14, 0x1a, 0x9a, 0xf9, + 0x62, 0xdf, 0x98, 0xa4, 0x7f, 0x4b, 0xd0, 0x0f, 0x4a, 0xd2, + 0x8e, 0x16, 0xaa, 0xdd, 0x17, 0x59, 0xa7, 0xb9, 0x99, 0xf0, + 0x4f, 0x30, 0x3f, 0x8b, 0x42, 0xdb, 0x5a, 0xc3, 0x09, 0x50, + 0xb1, 0xf8, 0x66, 0xb3, 0x9a, 0x0c, 0x1f, 0xbd, 0xcd, 0xc4, + 0x5a, 0xc0, 0xe5, 0x7f, 0x2f, 0x04, 0x98, 0xd8, 0xe6, 0xad, + 0x9b, 0x58, 0x2f, 0xc6, 0x22, 0x40, 0x52, 0xc9, 0x31, 0xaa, + 0x8c, 0x89, 0x3e, 0x79, 0x27, 0xa7, 0x9c, 0x37, 0xbf, 0x64, + 0xea, 0x5a, 0x6a, 0xf6, 0x58, 0xc4, 0x63, 0xac, 0xca, 0x98, + 0x25, 0x91, 0x9d, 0x63, 0x8f, 0x1f, 0x05, 0xde, 0x62, 0xff, + 0x8c, 0x11, 0xc0, 0x21, 0x6c, 0x39, 0xe4, 0x9b, 0x9e, 0x9f, + 0xdf, 0x92, 0xf7, 0x91, 0x7a, 0xe4, 0x33, 0xad, 0xe6, 0x75, + 0x45, 0x19, 0x64, 0x85, 0x9f, 0xcb, 0xef, 0xe9, 0x18, 0x15, + 0x72, 0xed, 0xe7, 0x78, 0x45, 0xf8, 0xe3, 0xb8, 0xa5, 0x8f, + 0xa0, 0x5a, 0x75, 0x12, 0x5f, 0xdf, 0x49, 0xe9, 0x40, 0xe0, + 0xde, 0x36, 0xbb, 0x5d, 0xb7, 0xca, 0xa1, 0x0e, 0x45, 0x69, + 0xb0, 0x5b, 0x41, 0xe0, 0x94, 0x35, 0x7d, 0xbb, 0x1d, 0xfc, + 0x76, 0xc0, 0xa2, 0xf2, 0x15, 0xe4, 0x42, 0x14, 0x59, 0xfb, + 0x2b, 0x89, 0x5b, 0xef, 0x34, 0xdc, 0xf6, 0xde, 0xa3, 0xa6, + 0x25, 0x9f, 0xad, 0x90, 0x51, 0xf2, 0xff, 0x5c, 0xf8, 0x62, + 0x92, 0x7d, 0x37, 0xd4, 0xa4, 0xc9, 0xb5, 0x3d, 0x65, 0x8a, + 0x69, 0xcd, 0x96, 0x32, 0x17, 0x47, 0x66, 0x9c, 0x35, 0xe2, + 0xa5, 0x9d, 0x85, 0x46, 0x8a, 0x0e, 0x61, 0xc4, 0x42, 0xe7, + 0xb4, 0xca, 0xc0, 0x3d, 0xf4, 0xe8, 0xa6, 0x61, 0xd5, 0xcb, + 0x78, 0x41, 0x79, 0xdf, 0xfd, 0x5b, 0x92, 0x9e, 0xe9, 0x1d, + 0x74, 0xf6, 0xa7, 0x35, 0xe5, 0xb0, 0x97, 0xc5, 0x71, 0xd6, + 0x29, 0x8e, 0x31, 0x13, 0x4f, 0xbc, 0xb5, 0xfc, 0xa8, 0xbf, + 0x36, 0x4c, 0x2b, 0x75, 0x09, 0xa1, 0x2f, 0x87, 0x8f, 0xd4, + 0xc2, 0x1c, 0x70, 0x9a, 0xa9, 0xeb, 0x06, 0x37, 0xc4, 0xf1, + 0x01, 0xa8, 0xfb, 0x52, 0x2c, 0x59, 0x64, 0xbd, 0xb1, 0x90, + 0xaa, 0x17, 0x56, 0xba, 0x36, 0xbe, 0x19, 0xb3, 0x44, 0xee, + 0x0a, 0x0d, 0x4d, 0x9d, 0x31, 0x8e, 0xab, 0x43, 0x66, 0xc1, + 0xd9, 0x3a, 0x11, 0xba, 0x90, 0x3b, 0xa9, 0x80, 0xeb, 0x3c, + 0xf0, 0x84, 0xac, 0x2c, 0xf6, 0x63, 0x11, 0x20, 0x29, 0x85, + 0xf9, 0x55, 0x46, 0xa5, 0x1f, 0xdd, 0xf2, 0xb2, 0xad, 0x78, + 0xc6, 0x18, 0xfe, 0xa4, 0x21, 0x8c, 0x2d, 0x80, 0xe5, 0x28, + 0xb9, 0x7c, 0x33, 0xb8, 0xae, 0x84, 0x96, 0x95, 0x0c, 0xeb, + 0x39, 0x97, 0x92, 0x3c, 0xc3, 0x7c, 0x90, 0x5c, 0xb3, 0xa6, + 0xaf, 0xd0, 0xa6, 0xee, 0xe3, 0x6f, 0x31, 0x9e, 0x46, 0xe9, + 0x60, 0xf1, 0x36, 0xfd, 0x72, 0xac, 0xb0, 0x53, 0xf3, 0xae, + 0xb7, 0x48, 0xc9, 0x79, 0x9e, 0x2e, 0x7c, 0x31, 0x49, 0xdf, + 0xfa, 0x6a, 0xb1, 0x07, 0xc3, 0xd5, 0x58, 0xcc, 0xc1, 0x70, + 0x4a, 0xfb, 0xdf, 0xbc, 0xef, 0x7e, 0x3b, 0x60, 0xb2, 0xfb, + 0x93, 0x58, 0xaa, 0x83, 0xd9, 0x6b, 0xf5, 0x47, 0xf9, 0xe8, + 0xc6, 0x5e, 0xbb, 0x7e, 0xb3, 0xaf, 0xa3, 0x23, 0x45, 0x07, + 0xd1, 0x62, 0x21, 0x92, 0x5a, 0x65, 0x60, 0xff, 0x7a, 0x74, + 0xb4, 0xc0, 0x33, 0x81, 0x8d, 0x1d, 0xe9, 0x5d, 0x48, 0xfc, + 0xb5, 0x40, 0x94, 0x1e, 0x78, 0x42, 0xb5, 0x94, 0x03, 0xfa, + 0x62, 0x99, 0xe1, 0x54, 0x9c, 0x29, 0x16, 0xcd, 0x32, 0xbf, + 0xb9, 0x48, 0xb6, 0x68, 0x53, 0x77, 0x90, 0xd6, 0xf9, 0x4f, + 0x23, 0x95, 0x30, 0x99, 0x1b, 0x9f, 0x39, 0x56, 0xb7, 0x3c, + 0x63, 0x0c, 0x7f, 0x52, 0xf1, 0x46, 0xf7, 0x40, 0x93, 0x14, + 0xbd, 0x3e, 0xf8, 0x5c, 0xb8, 0xb6, 0xb0, 0xf0, 0xc3, 0xe2, + 0x89, 0x31, 0xf1, 0x49, 0x2d, 0xd3, 0x30, 0x9e, 0x3d, 0x3a, + 0xb9, 0xe2, 0x80, 0x8b, 0x2c, 0x66, 0x81, 0x38, 0x25, 0x9c, + 0x8e, 0x5e, 0x96, 0x3f, 0xfc, 0x30, 0xba, 0x1e, 0xd0, 0x06, + 0xde, 0x29, 0x99, 0x23, 0x9a, 0x20, 0xa8, 0x0a, 0xbf, 0x1f, + 0x7c, 0x2e, 0xbb, 0x4a, 0xe0, 0x7d, 0x31, 0xad, 0x91, 0x2a, + 0x4e, 0xf5, 0x0b, 0x87, 0x19, 0xbe, 0xbd, 0x24, 0xbc, 0x25, + 0x70, 0xdf, 0xf9, 0xb7, 0xa9, 0x15, 0x27, 0x9b, 0xe4, 0xa2, + 0xed, 0x5f, 0xbf, 0x12, 0xbd, 0x71, 0x40, 0xa4, 0x16, 0x33, + 0xa1, 0x1c, 0xf3, 0x4e, 0x47, 0x2f, 0x4b, 0xfe, 0x7e, 0x18, + 0xbe, 0x8d, 0x10, 0x29, 0xe4, 0x7c, 0xb9, 0x07, 0x4c, 0xf2, + 0x61, 0x7b, 0x62, 0xde, 0xfe, 0x06, 0xbf, 0xd9, 0x20, 0x52, + 0x0b, 0xf8, 0xb1, 0x0e, 0x98, 0x27, 0xc2, 0xf6, 0xc4, 0x7f, + 0x3f, 0x0c, 0xc0, 0x6c, 0xe7, 0x1c, 0x6a, 0x2b, 0xcf, 0x0f, + 0xc1, 0x01, 0x94, 0x24, 0xd2, 0xd7, 0xda, 0x8c, 0xc1, 0x38, + 0xd7, 0x67, 0x85, 0xaf, 0xc7, 0x06, 0x15, 0xd4, 0x37, 0xa9, + 0x74, 0x76, 0x1b, 0x86, 0xc2, 0xc4, 0x87, 0xea, 0x77, 0xe0, + 0xdf, 0x1d, 0xaa, 0x68, 0x11, 0xfd, 0x5d, 0x56, 0x9b, 0x98, + 0xc3, 0x90, 0xb7, 0x91, 0x98, 0x64, 0xd7, 0x14, 0x7e, 0xbd, + 0xb2, 0x70, 0xfb, 0xf7, 0x5a, 0x92, 0xc4, 0xff, 0x27, 0x33, + 0x50, 0x7e, 0xef, 0x2b, 0x17, 0xd3, 0x5d, 0x55, 0x0f, 0x16, + 0x58, 0xa4, 0xc5, 0xab, 0x17, 0x48, 0xbf, 0xfa, 0xe7, 0x22, + 0xc3, 0x06, 0xfe, 0xd8, 0xa9, 0xb7, 0x99, 0xae, 0xc6, 0x57, + 0x47, 0xc5, 0x4d, 0xb5, 0xff, 0x39, 0x7c, 0xba, 0xd8, 0x8c, + 0x80, 0x97, 0x19, 0xb0, 0xc7, 0x03, 0x77, 0xbe, 0xa2, 0x31, + 0xf7, 0x30, 0xa8, 0x6f, 0x7b, 0x01, 0x26, 0x36, 0xd8, 0xba, + 0xc8, 0x89, 0xa4, 0x42, 0x1e, 0x81, 0x8f, 0x47, 0xae, 0x66, + 0xc5, 0xc6, 0xab, 0x96, 0x1d, 0xdc, 0xc9, 0xdd, 0x94, 0x39, + 0xf1, 0x05, 0x87, 0x4e, 0x7a, 0xb3, 0x66, 0x4b, 0x0d, 0x37, + 0xdc, 0xd6, 0xca, 0x21, 0xc4, 0xb4, 0x03, 0x4a, 0x9f, 0x55, + 0xc5, 0x0f, 0x40, 0x1f, 0x24, 0x17, 0x5c, 0xc8, 0xcb, 0x75, + 0xf4, 0xcf, 0xec, 0xce, 0x97, 0x5c, 0x11, 0xda, 0xe3, 0x92, + 0x82, 0xb6, 0x9d, 0xc2, 0xcc, 0x1a, 0x64, 0x6d, 0x24, 0xd4, + 0xaf, 0x63, 0x78, 0xb4, 0x0c, 0xb7, 0x76, 0x57, 0x9f, 0xf4, + 0xcd, 0x4e, 0x54, 0x16, 0xcb, 0x50, 0xa7, 0x6a, 0xac, 0x61, + 0xaf, 0x3a, 0xd0, 0xf6, 0x5e, 0xfe, 0xce, 0xb2, 0x04, 0x9b, + 0x39, 0x1f, 0xbf, 0x71, 0x13, 0xdd, 0x89, 0x6e, 0xf9, 0xd6, + 0xde, 0xe0, 0xcf, 0xe6, 0x34, 0xe0, 0xd6, 0x9b, 0xb7, 0x78, + 0xc7, 0x08, 0x2a, 0xe3, 0x5f, 0x77, 0x1f, 0xea, 0xd0, 0x65, + 0x61, 0xa0, 0x82, 0xbc, 0x4f, 0x9f, 0x1f, 0xcf, 0x36, 0x23, + 0x20, 0x55, 0x97, 0x2c, 0xd1, 0x31, 0x51, 0xdb, 0x6d, 0x38, + 0x47, 0x96, 0xcb, 0x1a, 0x95, 0xae, 0x86, 0xf4, 0x56, 0x26, + 0xd2, 0xcd, 0x01, 0x56, 0x9f, 0x77, 0x5f, 0x8d, 0x74, 0xa6, + 0xb3, 0xfa, 0xaf, 0xd4, 0xd6, 0x38, 0xd3, 0x99, 0x31, 0x2d, + 0x70, 0xf3, 0x57, 0x84, 0xa0, 0x73, 0x10, 0x77, 0x09, 0x75, + 0x17, 0x32, 0xd4, 0xf6, 0xa1, 0x8f, 0xb8, 0xe9, 0x6f, 0xbb, + 0xc9, 0x1d, 0xff, 0x52, 0xfd, 0x94, 0x15, 0x04, 0xd5, 0xa2, + 0x91, 0xf4, 0x57, 0x6d, 0x67, 0xb2, 0x1d, 0xc8, 0x5c, 0xdf, + 0x5b, 0x35, 0xd4, 0x0e, 0xd6, 0x5e, 0xc1, 0x79, 0xa5, 0x22, + 0x7f, 0xa9, 0xa2, 0x74, 0x7a, 0x8b, 0x72, 0x15, 0x54, 0x10, + 0xd7, 0x0a, 0xf1, 0x02, 0x4a, 0xa6, 0x77, 0xa0, 0x76, 0xa1, + 0xd9, 0x06, 0xd4, 0xb4, 0x95, 0x1a, 0xd8, 0x80, 0x22, 0xfe, + 0xf6, 0x16, 0x0f, 0xd7, 0x70, 0xa8, 0x67, 0xc1, 0x59, 0x14, + 0x50, 0x7c, 0xd9, 0xd4, 0x12, 0x85, 0x19, 0x92, 0x07, 0xde, + 0xa4, 0x7d, 0xc4, 0x4c, 0xff, 0xb5, 0x91, 0x76, 0xda, 0x28, + 0x42, 0x08, 0xeb, 0xdd, 0x1f, 0xc5, 0x1b, 0xc1, 0xe2, 0x18, + 0xd6, 0x95, 0x11, 0x68, 0xdb, 0x7c, 0x72, 0x73, 0x04, 0x59, + 0x17, 0xcc, 0xcf, 0x14, 0x41, 0x95, 0x70, 0x34, 0xd0, 0x62, + 0xdc, 0x13, 0xe2, 0xd1, 0xcc, 0x43, 0x2f, 0xf3, 0xa6, 0x7a, + 0xae, 0xb0, 0x84, 0xd5, 0xd2, 0x54, 0xdd, 0x47, 0xd2, 0xaa, + 0x23, 0xc7, 0x27, 0xfa, 0x72, 0xaf, 0x0d, 0x3d, 0x22, 0x74, + 0x13, 0x5e, 0xde, 0xbb, 0x82, 0x27, 0xd1, 0x88, 0x3f, 0xe1, + 0xcd, 0x13, 0x2b, 0x69, 0x0b, 0x54, 0x93, 0x40, 0xdf, 0xef, + 0xb2, 0x5c, 0x3e, 0x0c, 0x37, 0xe8, 0x19, 0xc6, 0x88, 0xe4, + 0xad, 0xf5, 0x52, 0x4a, 0xe0, 0x7e, 0x28, 0xa7, 0x79, 0xc6, + 0x0c, 0xec, 0xbe, 0x5e, 0x13, 0x2a, 0xf5, 0x10, 0x40, 0x0f, + 0xe1, 0x2a, 0x18, 0xdc, 0x96, 0x42, 0x04, 0xe5, 0x6a, 0x8b, + 0xb0, 0xa7, 0x53, 0xb1, 0x81, 0x05, 0xe2, 0xd6, 0x48, 0x51, + 0x64, 0x0d, 0x1c, 0xfe, 0xd5, 0x37, 0x96, 0xf3, 0x7a, 0x91, + 0x01, 0x1b, 0xe3, 0x82, 0x78, 0x2a, 0x8b, 0x89, 0x14, 0xf7, + 0x01, 0xe2, 0x35, 0x7e, 0xdc, 0x30, 0xc0, 0x11, 0xe4, 0xed, + 0xe8, 0x88, 0x43, 0x93, 0x2c, 0xc8, 0x68, 0x8c, 0xda, 0x5b, + 0x28, 0xd1, 0xc2, 0x27, 0xe5, 0xb9, 0xd8, 0xf3, 0xac, 0x17, + 0x24, 0xc1, 0xbc, 0x59, 0x79, 0xd6, 0x8e, 0x70, 0x03, 0x2d, + 0xe6, 0x45, 0x88, 0x7e, 0x5e, 0x58, 0x3c, 0xda, 0x03, 0xe5, + 0x5f, 0x82, 0xa7, 0x50, 0x83, 0x33, 0xe7, 0x11, 0xb8, 0x05, + 0xb1, 0xdc, 0x34, 0xd3, 0xd7, 0x30, 0xfc, 0x0f, 0x01, 0xf1, + 0x42, 0x39, 0xe8, 0x9b, 0x6b, 0xf9, 0x0d, 0x6c, 0x4c, 0xa4, + 0xd1, 0x39, 0x42, 0xc8, 0x8c, 0x51, 0x87, 0x5f, 0xe9, 0xcf, + 0x5b, 0x82, 0xe2, 0xe8, 0x44, 0xad, 0x05, 0xec, 0xe1, 0x45, + 0x2a, 0xf0, 0x46, 0x55, 0xea, 0x33, 0x0b, 0x0f, 0x10, 0xa7, + 0x5c, 0xb6, 0xba, 0x50, 0xc7, 0x11, 0x03, 0xd0, 0xc6, 0x4b, + 0xeb, 0x67, 0x3b, 0x74, 0xff, 0x23, 0x54, 0xbf, 0x6e, 0x85, + 0x64, 0x9c, 0xa5, 0x71, 0x07, 0x41, 0xec, 0x08, 0xab, 0xd6, + 0x37, 0x39, 0x6c, 0x80, 0x07, 0xeb, 0x8b, 0xb9, 0x51, 0x90, + 0x05, 0x77, 0xed, 0x5c, 0x9b, 0xad, 0xd8, 0xbd, 0x64, 0x89, + 0xd3, 0x3e, 0x28, 0x34, 0xf7, 0x31, 0xc4, 0x7d, 0xee, 0xa0, + 0xcb, 0x20, 0x2a, 0xf2, 0x7c, 0x92, 0x6c, 0x82, 0x0e, 0x60, + 0xde, 0x11, 0x44, 0x63, 0xef, 0xf4, 0xfb, 0x5b, 0xc5, 0x76, + 0x74, 0x9b, 0xb8, 0x57, 0xad, 0xed, 0x78, 0xb0, 0x85, 0x69, + 0xf0, 0x77, 0xae, 0x1b, 0x91, 0x51, 0x8c, 0x7c, 0x60, 0x90, + 0xb1, 0x2d, 0x07, 0x92, 0x0d, 0xaf, 0xf1, 0x23, 0x9e, 0x60, + 0x7e, 0xd5, 0x84, 0x75, 0xb4, 0x45, 0x12, 0xa0, 0xa1, 0x33, + 0xcc, 0xa5, 0xf2, 0xdf, 0xce, 0xed, 0x8c, 0x9a, 0x9c, 0x6e, + 0x0b, 0xf9, 0x34, 0xf4, 0x88, 0x13, 0x4c, 0xbb, 0xf3, 0x8b, + 0xfe, 0x96, 0x63, 0x1e, 0x94, 0x67, 0xdf, 0x2c, 0x97, 0x79, + 0x2e, 0xb2, 0x8d, 0xb1, 0xf4, 0xe4, 0x6e, 0x34, 0xab, 0x04, + 0xac, 0x58, 0xb6, 0x42, 0x78, 0x5c, 0xda, 0x53, 0x8f, 0x87, + 0xf5, 0xb0, 0x5e, 0x4f, 0x44, 0x80, 0xa4, 0x51, 0x62, 0x97, + 0xdb, 0xd1, 0x7c, 0xf2, 0x4e, 0x8d, 0xf6, 0x4c, 0x0e, 0xc2, + 0xb6, 0xcf, 0xbc, 0x4a, 0xdd, 0x2b, 0xfd, 0x85, 0x55, 0xd2, + 0xce, 0x93, 0xf7, 0x18, 0x3e, 0xb9, 0x59, 0x4b, 0xb4, 0x43, + 0x09, 0xfe, 0x5e, 0x08, 0xf3, 0x73, 0x0f, 0x99, 0xf8, 0x92, + 0xed, 0x45, 0xe5, 0xfb, 0xcc, 0x34, 0x0f, 0xf7, 0xe0, 0xcf, + 0x7e, 0xd3, 0xca, 0xff, 0xf9, 0xc6, 0xdd, 0x3e, 0x0a, 0x7f, + 0xc4, 0x3d, 0xdb, 0x22, 0x43, 0x42, 0xd8, 0x72, 0x0b, 0xf5, + 0xfa, 0x3a, 0x8d, 0xb3, 0xf8, 0x30, 0xdc, 0x26, 0x64, 0x9e, + 0x65, 0x16, 0xf1, 0x52, 0x8b, 0xeb, 0xfb, 0x6e, 0xbd, 0xc8, + 0x17, 0xb4, 0xd4, 0x2f, 0xb0, 0x4b, 0xc6, 0x9b, 0x57, 0xf3, + 0x4a, 0xe1, 0xfc, 0x01, 0x2d, 0x6a, 0xdf, 0xae, 0xec, 0x10, + 0xd9, 0x25, 0x29, 0xbe, 0xa3, 0x12, 0x48, 0xd7, 0xfd, 0x55, + 0x1d, 0x11, 0x30, 0x2a, 0xe4, 0x19, 0x0d, 0xf0, 0x8a, 0x33, + 0x05, 0xb3, 0x89, 0xdd, 0xfe, 0xa9, 0x4d, 0x9c, 0xc2, 0x65, + 0xfc, 0x02, 0xb2, 0x4c, 0xac, 0x67, 0x2c, 0x93, 0x09, 0xc3, + 0xff, 0xfd, 0x7d, 0xe7, 0x2d, 0xe1, 0xf4, 0x0b, 0x66, 0x99, + 0x0f, 0xea, 0x8a, 0x32, 0xc8, 0xc9, + }, + { + /* 8 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xde, 0xe0, 0xaf, + 0x10, 0xc9, 0xf6, 0x49, 0xbe, 0xe7, 0x6e, 0xa4, 0x6a, 0x2b, + 0x9c, 0xf3, 0x35, 0x7f, 0x03, 0x9d, 0x20, 0x51, 0x2f, 0x92, + 0xbf, 0x0d, 0xdc, 0x8b, 0xd4, 0x56, 0xfb, 0x25, 0xce, 0xa1, + 0xe3, 0x32, 0x30, 0x98, 0xd9, 0xdb, 0x01, 0xea, 0xb2, 0x2f, + 0xbe, 0x7d, 0x67, 0xd6, 0x6a, 0xfe, 0x06, 0xf9, 0x40, 0xa2, + 0x5e, 0xe7, 0xbd, 0x1a, 0x7b, 0xd5, 0x6b, 0xac, 0x35, 0x4a, + 0x91, 0x20, 0xe6, 0x56, 0x50, 0x6b, 0xa8, 0xae, 0x03, 0xfd, + 0x15, 0x71, 0x01, 0x87, 0xa9, 0xb9, 0x5f, 0x81, 0x05, 0x64, + 0x60, 0xf3, 0x71, 0x75, 0x02, 0x17, 0xa7, 0x5e, 0xbf, 0xfa, + 0xce, 0x6f, 0xa4, 0x5f, 0xe5, 0xcb, 0x70, 0x3a, 0x87, 0x3c, + 0xbc, 0xf0, 0xc9, 0xfa, 0xd5, 0xd1, 0x52, 0x9c, 0xd4, 0x3f, + 0x0c, 0x31, 0x80, 0x87, 0xbc, 0x0d, 0xb9, 0x34, 0xf6, 0x69, + 0xd6, 0x9b, 0x6a, 0x94, 0x2f, 0xe1, 0xec, 0x9e, 0x90, 0x4e, + 0x4a, 0x44, 0x07, 0xd3, 0x98, 0xcd, 0xbc, 0xb0, 0xf6, 0x67, + 0xe1, 0x40, 0x0f, 0xac, 0xa0, 0xd6, 0x93, 0x9f, 0x06, 0x39, + 0x2a, 0xe2, 0x02, 0xcd, 0x91, 0xb1, 0x1a, 0x9e, 0xef, 0x03, + 0xb0, 0x1f, 0x65, 0xd6, 0xb8, 0xde, 0x44, 0x46, 0x68, 0xe6, + 0x0d, 0x42, 0xbe, 0xc1, 0x0a, 0xc8, 0xc0, 0x25, 0xe2, 0xea, + 0x04, 0x2e, 0x8d, 0xbc, 0xbd, 0x37, 0x5f, 0xde, 0x45, 0x1f, + 0xea, 0x67, 0xd0, 0xec, 0x14, 0xa3, 0xba, 0xc9, 0xe3, 0x18, + 0xd7, 0x1c, 0xc3, 0x2d, 0x8b, 0xbe, 0x09, 0x55, 0xe0, 0x74, + 0xcd, 0x78, 0xbb, 0x23, 0x51, 0x37, 0x69, 0x61, 0xa4, 0xfb, + 0x70, 0x60, 0xe9, 0xfa, 0xf0, 0xbd, 0x3b, 0x31, 0x05, 0xc4, + 0x3f, 0x93, 0x03, 0x4a, 0x38, 0x08, 0x6b, 0x7e, 0x18, 0x62, + 0xc3, 0xcd, 0xbb, 0x1a, 0xb1, 0x68, 0x2f, 0xd2, 0x6f, 0xf5, + 0xd4, 0xeb, 0x90, 0xa0, 0xf8, 0xcd, 0xd3, 0x04, 0x4d, 0x53, + 0x0f, 0x8f, 0x41, 0x76, 0x05, 0xde, 0x48, 0x18, 0x5e, 0x01, + 0x1b, 0xff, 0xe3, 0x9c, 0x94, 0x88, 0x0e, 0x65, 0xf3, 0x59, + 0xbb, 0xa3, 0x2f, 0xce, 0xa5, 0xdf, 0xfb, 0x50, 0xf3, 0x55, + 0x62, 0xc1, 0xb0, 0x82, 0x9d, 0xfd, 0xd1, 0x88, 0xb3, 0x3d, + 0x01, 0x80, 0x1e, 0x9b, 0x83, 0x6f, 0xe5, 0xfd, 0x0c, 0x72, + 0x54, 0x07, 0x04, 0x59, 0xe1, 0xa1, 0xfa, 0x5e, 0xfe, 0x34, + 0x93, 0xa6, 0x13, 0xb4, 0xb2, 0x95, 0x3a, 0xa3, 0x6e, 0x72, + 0x7d, 0x52, 0x34, 0xff, 0x1d, 0x06, 0xa3, 0x3e, 0xca, 0x6f, + 0xb3, 0x7f, 0x88, 0x8c, 0xd0, 0x0f, 0x1a, 0x84, 0xcf, 0x21, + 0xfd, 0xa9, 0xb3, 0xf7, 0x3c, 0x26, 0x0d, 0x98, 0xe6, 0x28, + 0xba, 0x24, 0x86, 0x77, 0xbf, 0x41, 0x14, 0x53, 0x43, 0x4a, + 0x07, 0x17, 0x08, 0x5c, 0xd9, 0xbb, 0xb9, 0x6e, 0xbe, 0x7f, + 0x44, 0x9f, 0xf4, 0xfc, 0x53, 0x83, 0xf1, 0x5e, 0xb6, 0xbb, + 0xb7, 0x1f, 0xd3, 0x45, 0x22, 0x8c, 0x8a, 0x3e, 0x17, 0xce, + 0x63, 0x1b, 0x28, 0x85, 0xb7, 0x51, 0x05, 0x30, 0x6d, 0x38, + 0x45, 0x5a, 0x71, 0xe0, 0xf7, 0x61, 0x73, 0xd2, 0xde, 0xcc, + 0x09, 0xb6, 0x6b, 0x94, 0x07, 0x13, 0xd9, 0xa9, 0xd5, 0xbf, + 0x12, 0xaa, 0x03, 0xe8, 0x59, 0xf0, 0xb5, 0x46, 0xa2, 0x6e, + 0xd2, 0xc2, 0x8b, 0x35, 0x2e, 0x61, 0xf2, 0x05, 0x13, 0x21, + 0xaf, 0xb9, 0x0b, 0xa1, 0xcc, 0xca, 0xb8, 0xe9, 0x17, 0xc6, + 0xe0, 0xc0, 0x11, 0x37, 0x23, 0xb9, 0x76, 0x62, 0x0a, 0x4b, + 0x7e, 0xe5, 0x06, 0x94, 0x70, 0x10, 0x1b, 0x1e, 0xf1, 0x98, + 0x33, 0x70, 0x80, 0x2b, 0xb4, 0xac, 0x10, 0x41, 0x6c, 0xbf, + 0xec, 0xe3, 0xd6, 0xfc, 0x30, 0xc4, 0x45, 0x59, 0xb5, 0x34, + 0xa1, 0xd0, 0x5e, 0x67, 0xde, 0x29, 0x6b, 0x15, 0x2d, 0x22, + 0xd0, 0x6b, 0x55, 0x90, 0x43, 0x7d, 0x1f, 0x37, 0x30, 0xc3, + 0xb4, 0x02, 0xf7, 0xe6, 0xe3, 0x83, 0x33, 0x59, 0x65, 0x08, + 0x9a, 0xa6, 0x1e, 0xdd, 0x82, 0xec, 0x0a, 0x7f, 0x90, 0x30, + 0x18, 0x5d, 0xd3, 0xf6, 0x75, 0xc1, 0x6c, 0xef, 0xa0, 0x3a, + 0xec, 0x48, 0x60, 0x54, 0x0c, 0xc3, 0xbc, 0x02, 0x36, 0x3d, + 0x05, 0xfb, 0xeb, 0xd3, 0x1c, 0xca, 0x25, 0xb2, 0xb5, 0x85, + 0x5e, 0x5f, 0x47, 0xdc, 0xd6, 0x92, 0x15, 0x32, 0x1d, 0x9a, + 0xa2, 0x2d, 0x4b, 0x16, 0xdf, 0xae, 0xc2, 0xac, 0x89, 0x7d, + 0x35, 0xa0, 0x25, 0xaa, 0xc4, 0x41, 0xa3, 0xc7, 0xf9, 0x39, + 0x61, 0xd3, 0xa5, 0x7a, 0x72, 0xa3, 0xd5, 0x0f, 0x35, 0x63, + 0x32, 0x08, 0x1d, 0x20, 0x97, 0x9d, 0x0b, 0xf8, 0x39, 0x89, + 0x02, 0xc3, 0x3c, 0xf5, 0xc5, 0xde, 0x09, 0x39, 0x18, 0xe4, + 0xa8, 0x0e, 0x08, 0xb2, 0x01, 0x81, 0xf9, 0x1d, 0xdc, 0x5a, + 0xd5, 0x17, 0xff, 0x70, 0xa6, 0x03, 0xc6, 0xaa, 0x62, 0x99, + 0x9d, 0x72, 0x37, 0xbc, 0x3f, 0x68, 0xe5, 0x8f, 0x26, 0xab, + 0xa7, 0xe9, 0x74, 0x85, 0xdc, 0xe4, 0xfa, 0xa4, 0xcc, 0x62, + 0xdf, 0xc7, 0xf5, 0x46, 0xd0, 0xe2, 0x19, 0x0e, 0x1a, 0x21, + 0xb6, 0xcf, 0x66, 0x57, 0x68, 0x3d, 0x3a, 0x0c, 0x85, 0x7c, + 0x57, 0xde, 0xa5, 0xfe, 0xd3, 0xdb, 0x63, 0x1e, 0x34, 0xcb, + 0x93, 0xe3, 0xda, 0xa3, 0x95, 0xb5, 0xa1, 0x97, 0x1b, 0x19, + 0xbd, 0x7f, 0x09, 0x35, 0xa8, 0x38, 0x5d, 0x42, 0x39, 0x91, + 0xa5, 0x2d, 0x78, 0x4c, 0x1a, 0xf3, 0x0f, 0x50, 0xb7, 0x48, + 0xcf, 0xee, 0xa6, 0x9c, 0xd9, 0x3e, 0xb5, 0xe4, 0x8e, 0x05, + 0xa4, 0x14, 0x61, 0xf4, 0xdd, 0x63, 0x53, 0x1d, 0xbd, 0x82, + 0x28, 0xa6, 0x86, 0x94, 0x0e, 0x2e, 0x10, 0xb8, 0x71, 0xb5, + 0xb1, 0xdc, 0xbf, 0xfe, 0x46, 0x5c, 0xc8, 0x09, 0x96, 0x5d, + 0xf8, 0x67, 0xae, 0x5f, 0x1f, 0x11, 0xdb, 0xf7, 0x23, 0x0d, + 0x88, 0xfd, 0x2b, 0x3b, 0xa6, 0xc5, 0x21, 0xbc, 0xaf, 0xb5, + 0xad, 0x3e, 0x65, 0x8a, 0x44, 0xdb, 0x73, 0x23, 0xcb, 0x94, + 0xb6, 0x0c, 0xd7, 0xf5, 0x11, 0x52, 0xc3, 0x9a, 0x0f, 0xa1, + 0xd8, 0x28, 0xd7, 0x7c, 0x2e, 0x5f, 0xc6, 0x36, 0x50, 0xc9, + 0xad, 0xa2, 0x0a, 0x60, 0xda, 0x70, 0x8a, 0xb4, 0x2c, 0xa2, + 0xce, 0xf0, 0xd6, 0xff, 0xa6, 0x80, 0x13, 0x45, 0x64, 0xc4, + 0xb0, 0x5b, 0x16, 0x47, 0xe2, 0x03, 0x2d, 0xc2, 0xe6, 0x67, + 0x7f, 0x5b, 0x12, 0xaf, 0xd6, 0xeb, 0x0e, 0x26, 0x71, 0x91, + 0x19, 0xdd, 0xcd, 0x6d, 0xf6, 0xae, 0x89, 0x12, 0xac, 0x48, + 0xb8, 0x4f, 0x64, 0x0d, 0xed, 0x62, 0x69, 0xbd, 0x24, 0x97, + 0x06, 0x13, 0xb2, 0x23, 0xa9, 0x8c, 0x87, 0xdc, 0x67, 0x47, + 0xd5, 0x6a, 0x92, 0x63, 0xc4, 0x38, 0x16, 0xda, 0x44, 0x6a, + 0x17, 0x6b, 0xe9, 0x78, 0x0d, 0x6c, 0x49, 0x99, 0x5c, 0xc2, + 0x27, 0x0a, 0x26, 0x42, 0x9d, 0xb1, 0x16, 0x81, 0x5b, 0x57, + 0xb3, 0x11, 0x2e, 0x4f, 0xa7, 0x1c, 0xc7, 0xa5, 0x36, 0x8b, + 0x6b, 0xf8, 0xa8, 0x66, 0x35, 0xf3, 0xd9, 0x3a, 0xb2, 0xbc, + 0x03, 0x43, 0x22, 0x6e, 0x46, 0xb1, 0xec, 0xc4, 0x14, 0x96, + 0xfc, 0x09, 0x0c, 0xeb, 0xe0, 0x20, 0xf8, 0x9d, 0xc2, 0xc1, + 0x56, 0x78, 0x1a, 0x8d, 0xaa, 0x71, 0x92, 0xad, 0x66, 0xc0, + 0x7c, 0xd3, 0x36, 0x3c, 0x21, 0xf3, 0x66, 0xe0, 0xc3, 0x56, + 0xab, 0x9b, 0x20, 0x82, 0xd8, 0xbd, 0x1b, 0x05, 0xcd, 0xe2, + 0xc1, 0x5c, 0x76, 0x29, 0x35, 0x1f, 0x15, 0x7c, 0x4e, 0x26, + 0xb2, 0x96, 0x87, 0xf6, 0x6f, 0x3b, 0x60, 0x4b, 0x8a, 0xb2, + 0xa9, 0x68, 0x81, 0x63, 0xbc, 0xce, 0x7f, 0x52, 0xd6, 0x2a, + 0x94, 0xe5, 0x80, 0xe4, 0x9a, 0x7b, 0x5f, 0x21, 0x3f, 0x84, + 0xd2, 0x6a, 0x15, 0x79, 0x4a, 0xd9, 0x5a, 0x44, 0x63, 0xd6, + 0xaa, 0xe3, 0x86, 0xfa, 0x3e, 0x6e, 0x60, 0x45, 0xab, 0x04, + 0x2d, 0x0f, 0xa1, 0x9a, 0x83, 0x79, 0xba, 0x2a, 0x70, 0xb3, + 0x80, 0x89, 0x0e, 0xe1, 0xc1, 0x2f, 0xb1, 0xfc, 0x05, 0xc5, + 0x66, 0xb2, 0xca, 0x10, 0xf7, 0x8f, 0x3c, 0x79, 0xc7, 0x1b, + 0x14, 0xfe, 0xe3, 0x60, 0xfe, 0x1b, 0x86, 0x1d, 0xda, 0xd9, + 0x01, 0xc6, 0x82, 0x9e, 0xa9, 0xbf, 0x7e, 0xd5, 0x7f, 0x93, + 0x30, 0xba, 0x65, 0x2f, 0xea, 0x41, 0xd8, 0x1d, 0x83, 0x74, + 0x1b, 0x90, 0xc0, 0xa8, 0x18, 0x45, 0xcb, 0x64, 0x85, 0x80, + 0xfa, 0x88, 0x2e, 0x54, 0x3d, 0x93, 0x75, 0x34, 0xaa, 0x83, + 0x84, 0xb6, 0xbb, 0x04, 0x6c, 0x7a, 0x0a, 0x35, 0x15, 0x65, + 0x38, 0x57, 0x4a, 0xa7, 0xa9, 0xc9, 0xbc, 0xbe, 0x40, 0xda, + 0x8c, 0xd5, 0x1a, 0xfc, 0xe3, 0x2c, 0x86, 0xb0, 0x24, 0x03, + 0xc3, 0xe2, 0x20, 0x4d, 0x8e, 0x7b, 0x6f, 0xe7, 0x2a, 0x64, + 0x3a, 0xf7, 0x87, 0x5a, 0x96, 0x2c, 0x7d, 0x9f, 0x47, 0x9b, + 0x75, 0xa5, 0x8f, 0x48, 0x3a, 0xad, 0xcc, 0xbe, 0x39, 0xbd, + 0xf8, 0x88, 0x17, 0xb4, 0xdb, 0x68, 0xd1, 0xfa, 0x6a, 0x83, + 0x4a, 0x97, 0x4b, 0x82, 0x85, 0x4d, 0x31, 0x72, 0xc2, 0x65, + 0x89, 0xf4, 0x2a, 0x24, 0x8a, 0x2c, 0x5a, 0x5e, 0xbd, 0xcb, + 0x3b, 0xaa, 0x5f, 0xd6, 0xa8, 0x4e, 0x15, 0x07, 0xe4, 0x85, + 0x69, 0x1e, 0x6a, 0xc6, 0x64, 0x10, 0x3a, 0x40, 0xed, 0xf9, + 0x16, 0x33, 0x72, 0xd1, 0x1f, 0x5b, 0x89, 0xb1, 0x7a, 0x0f, + 0x92, 0x59, 0x84, 0xa7, 0x83, 0x5d, 0x7c, 0x18, 0xee, 0x22, + 0x04, 0x45, 0x78, 0x29, 0x49, 0x7f, 0x12, 0x72, 0x30, 0x0b, + 0x93, 0x1c, 0x10, 0xa7, 0x02, 0xc1, 0xff, 0x9b, 0x98, 0x86, + 0x59, 0xb6, 0xe4, 0x3b, 0x8e, 0xec, 0xfd, 0xb8, 0x7a, 0x8c, + 0x9e, 0x32, 0x31, 0x3a, 0x7b, 0xb4, 0x69, 0x2e, 0x3d, 0xe0, + 0x8f, 0x06, 0x4f, 0x97, 0xc4, 0xf1, 0xf9, 0xe4, 0xca, 0xe4, + 0x9b, 0x1b, 0x79, 0xe7, 0xcb, 0xa9, 0x31, 0xe1, 0x21, 0x33, + 0xae, 0xda, 0x65, 0x17, 0x6e, 0xbb, 0x7e, 0xd0, 0x09, 0xdd, + 0x4c, 0x95, 0x8d, 0x11, 0xe8, 0xc9, 0x7b, 0x0b, 0x37, 0x8b, + 0x95, 0x65, 0x9e, 0x7f, 0x19, 0x14, 0xba, 0xdc, 0x33, 0xf6, + 0x86, 0x6d, 0x11, 0x20, 0xab, 0x78, 0x5b, 0xc4, 0x7d, 0x4d, + 0x29, 0x8c, 0x63, 0x07, 0x32, 0x1c, 0x34, 0x42, 0xaf, 0x5d, + 0xcc, 0xae, 0xa0, 0x1a, 0x9d, 0xe2, 0x39, 0x45, 0x95, 0x4e, + 0x8c, 0xfb, 0x5a, 0xe6, 0xc5, 0x76, 0x50, 0x5d, 0xd0, 0x7a, + 0x74, 0x18, 0xc9, 0xf8, 0xae, 0x7f, 0x89, 0x3f, 0x65, 0x75, + 0xc6, 0x3c, 0x68, 0x55, 0x2b, 0xa4, 0x94, 0xb7, 0xd9, 0x31, + 0x58, 0x36, 0x37, 0xd8, 0x0b, 0xd1, 0xac, 0x17, 0xf4, 0xa6, + 0xe5, 0x05, 0x77, 0x85, 0xe9, 0xa9, 0x81, 0xed, 0x36, 0x32, + 0xb9, 0xfe, 0x12, 0x6a, 0x93, 0x70, 0x1e, 0xdb, 0x97, 0x2a, + 0xf9, 0x60, 0x77, 0xa4, 0x88, 0xd5, 0xd7, 0x5a, 0x78, 0x41, + 0x0f, 0x83, 0xba, 0x84, 0x72, 0xe1, 0x89, 0x5a, 0xf0, 0x98, + 0x34, 0x25, 0x1e, 0xa0, 0xad, 0x90, 0x5d, 0x1f, 0x41, 0x5a, + 0x92, 0x4e, 0x99, 0x93, 0x06, 0xd1, 0x8a, 0xc2, 0x70, 0x04, + 0xc7, 0xbb, 0xc1, 0xec, 0x8f, 0xfb, 0x71, 0x7c, 0xa9, 0x0b, + 0xdf, 0x0a, 0x8b, 0x28, 0xc2, 0x2b, 0x79, 0xc6, 0xa6, 0x3a, + 0x74, 0x25, 0x91, 0xd3, 0xb9, 0xc2, 0x29, 0x43, 0x35, 0xcf, + 0xac, 0x8f, 0x13, 0xed, 0x3a, 0xc9, 0xb9, 0xc7, 0x50, 0x8f, + 0xcf, 0xeb, 0x1c, 0x5c, 0x20, 0xb3, 0xe2, 0xa9, 0xa1, 0x7b, + 0xbd, 0x3f, 0x42, 0x19, 0xb0, 0x20, 0xdf, 0x22, 0xea, 0x15, + 0x9e, 0x54, 0x8c, 0x0d, 0xcb, 0x50, 0x21, 0xcc, 0x8c, 0xb8, + 0x53, 0x12, 0xef, 0xba, 0x33, 0xce, 0x9f, 0xbe, 0x3e, 0x22, + 0x75, 0x2d, 0x46, 0x1a, 0x77, 0x66, 0xb3, 0xbd, 0xff, 0x73, + 0xc5, 0x87, 0x21, 0x59, 0x50, 0x86, 0x1f, 0x06, 0xda, 0xe9, + 0xd3, 0x39, 0x56, 0x76, 0x8f, 0x49, 0x42, 0xbb, 0x9d, 0xa9, + 0x99, 0x7c, 0xca, 0xd7, 0x88, 0x75, 0x28, 0xe7, 0xb6, 0xd9, + 0x9f, 0x80, 0xb4, 0xf2, 0x23, 0x4e, 0xf7, 0xd8, 0xa0, 0xfc, + 0x14, 0x86, 0xe6, 0x46, 0x55, 0xeb, 0xaf, 0x18, 0x6d, 0x29, + 0x22, 0xa4, 0x45, 0xf7, 0x1e, 0x81, 0x73, 0x50, 0x1d, 0x98, + 0xb5, 0x44, 0xbf, 0xd1, 0x9b, 0x60, 0x9c, 0x43, 0x2b, 0x53, + 0x74, 0xaa, 0xef, 0xa3, 0x6d, 0xf8, 0x5c, 0xbe, 0x4f, 0x6c, + 0xa0, 0x51, 0x99, 0x87, 0x14, 0xc0, 0x77, 0xe0, 0xd7, 0xab, + 0x96, 0x26, 0xbc, 0x11, 0x5f, 0xa5, 0x56, 0x18, 0x27, 0x60, + 0x7a, 0x64, 0x1d, 0xcb, 0x4b, 0x58, 0x58, 0x87, 0x5f, 0x23, + 0x6f, 0x3d, 0x8f, 0xc3, 0x26, 0x8a, 0xc8, 0x4b, 0xa3, 0xb6, + 0x2c, 0x8e, 0xa3, 0x59, 0xbf, 0x8c, 0x7f, 0xf4, 0x79, 0x8a, + 0x98, 0x6d, 0xa6, 0xef, 0xc9, 0x9d, 0xb0, 0x7d, 0x07, 0x06, + 0x5a, 0x47, 0x0f, 0xce, 0xfe, 0xb6, 0x24, 0x9d, 0x6f, 0x15, + 0x1c, 0x4c, 0xe2, 0xe1, 0xfc, 0xd8, 0xba, 0xe8, 0x1f, 0x07, + 0x08, 0xff, 0x9a, 0x7a, 0x01, 0xb1, 0x76, 0x67, 0x7e, 0x12, + 0x32, 0x79, 0x59, 0xda, 0x2f, 0x9f, 0xd1, 0x24, 0x9b, 0x90, + 0xb3, 0x9e, 0xc8, 0x1a, 0x19, 0xc4, 0xc9, 0xa7, 0xb9, 0x75, + 0x3f, 0x56, 0x27, 0x6d, 0x25, 0x77, 0xdd, 0x3a, 0xa2, 0x31, + 0x85, 0x37, 0xd2, 0xb9, 0x48, 0xed, 0x0c, 0x26, 0xa7, 0x46, + 0x91, 0xdb, 0xcd, 0x7b, 0xce, 0x8e, 0x69, 0xd4, 0x29, 0x67, + 0xa8, 0x42, 0x1c, 0xef, 0x51, 0x0f, 0x2f, 0x3c, 0xa3, 0xdf, + 0xa4, 0xa5, 0xf5, 0x27, 0xe7, 0xc6, 0x4b, 0x70, 0x2c, 0x77, + 0x88, 0xd4, 0x2e, 0xd6, 0x11, 0xf0, 0x1a, 0xd8, 0x92, 0xf1, + 0x1c, 0x18, 0xab, 0xdf, 0x3c, 0xbe, 0x7e, 0x9d, 0x90, 0x31, + 0x7f, 0x54, 0x70, 0xf3, 0x0e, 0x02, 0xb8, 0x47, 0x4e, 0x14, + 0x4c, 0x84, 0xf9, 0xa1, 0x2c, 0xc1, 0xb6, 0xae, 0xa5, 0x22, + 0x5c, 0x9e, 0x43, 0x99, 0xae, 0xbb, 0x5c, 0x4d, 0x0f, 0xe8, + 0x92, 0x26, 0xd8, 0x0a, 0xcf, 0x09, 0xc0, 0x6d, 0x8d, 0x38, + 0x4d, 0x89, 0x6c, 0xd5, 0xd6, 0x33, 0x93, 0xcc, 0x6a, 0x25, + 0x71, 0x74, 0xa7, 0xbb, 0x76, 0xe6, 0xad, 0x26, 0x7c, 0x1c, + 0x20, 0x7a, 0x2d, 0x2b, 0x04, 0x81, 0x1b, 0x5f, 0x3b, 0x48, + 0x06, 0x86, 0x44, 0xdc, 0x8c, 0xa1, 0x1b, 0x4b, 0x28, 0xef, + 0x3b, 0x12, 0x18, 0x15, 0x03, 0x40, 0xfd, 0x58, 0xa4, 0x73, + 0x9c, 0x68, 0xed, 0x02, 0x96, 0x08, 0x55, 0xb6, 0x72, 0x3e, + 0x9f, 0xb3, 0x33, 0xf9, 0x47, 0x41, 0xac, 0xf0, 0x34, 0xd9, + 0x97, 0xe2, 0xe7, 0x99, 0xcc, 0x43, 0xf8, 0x65, 0xc8, 0x27, + 0xa7, 0xee, 0xbc, 0x39, 0xc2, 0x90, 0x29, 0x05, 0x89, 0x3d, + 0xa6, 0x68, 0x64, 0x96, 0x6c, 0x78, 0x42, 0x25, 0xcc, 0x03, + 0x45, 0xac, 0x95, 0xf5, 0x40, 0xc7, 0x73, 0xb9, 0x36, 0x0a, + 0x97, 0xa6, 0xa2, 0x8a, 0xdc, 0xca, 0xb3, 0xe5, 0x2b, 0x12, + 0x2e, 0x63, 0x19, 0x92, 0xaa, 0xf9, 0x59, 0x07, 0x41, 0xb8, + 0xec, 0x52, 0x6a, 0x3e, 0x2a, 0xf8, 0x9c, 0x4c, 0xa7, 0xef, + 0xcd, 0x2f, 0xa2, 0xd9, 0xa1, 0x17, 0xfc, 0x9b, 0x9c, 0x77, + 0x94, 0x1f, 0xf2, 0xe8, 0xcd, 0xc4, 0x51, 0xdc, 0xde, 0x76, + 0xc0, 0x96, 0xd7, 0xa7, 0x91, 0xd0, 0xc1, 0xc6, 0xbb, 0x5f, + 0xfe, 0xa4, 0x6f, 0x54, 0x25, 0xa8, 0x20, 0x39, 0xc7, 0x6e, + 0x67, 0x99, 0x7f, 0x21, 0xd5, 0xfb, 0x94, 0x8f, 0xf3, 0xa7, + 0xeb, 0x09, 0xc3, 0x0b, 0xf7, 0xf6, 0xbe, 0x42, 0x7e, 0xcb, + 0x67, 0xd4, 0x2a, 0xf2, 0x94, 0x71, 0x10, 0xd7, 0x23, 0xa4, + 0xe7, 0x3f, 0x48, 0x0b, 0xc0, 0x2c, 0x09, 0x70, 0x40, 0xd9, + 0x08, 0x82, 0xb4, 0x88, 0xc6, 0x6f, 0x97, 0x05, 0xcf, 0x37, + 0x7c, 0xdc, 0xc0, 0x8a, 0x95, 0x08, 0x5a, 0x1e, 0x4f, 0x56, + 0x26, 0xc0, 0x87, 0xcc, 0x39, 0x7e, 0xc2, 0x3b, 0xae, 0x2e, + 0xff, 0x23, 0xc6, 0xed, 0x81, 0xf7, 0xc5, 0xf2, 0xb7, 0x54, + 0xe0, 0xa5, 0xc3, 0xd1, 0x1c, 0x01, 0x41, 0x5e, 0xa1, 0x3b, + 0x7a, 0x29, 0x25, 0x5d, 0xa7, 0x9d, 0x16, 0xec, 0x7d, 0x36, + 0x72, 0xa5, 0x2b, 0x75, 0x3d, 0xc8, 0x0a, 0x49, 0xcc, 0xa7, + 0x57, 0x20, 0x2d, 0xdd, 0x78, 0xf2, 0x4d, 0x36, 0x28, 0x3f, + 0x05, 0xc0, 0xf1, 0x97, 0x2c, 0x08, 0x47, 0xe9, 0xdb, 0x94, + 0xc6, 0x15, 0x23, 0x92, 0x42, 0x14, 0x99, 0x33, 0x3f, 0x36, + 0xcf, 0x3a, 0x77, 0x71, 0x02, 0x4f, 0xc7, 0xff, 0x91, 0xbd, + 0xfc, 0x69, 0xfe, 0xe5, 0xc4, 0xe8, 0x2f, 0x95, 0x67, 0xb8, + 0xf4, 0x06, 0x79, 0x18, 0xff, 0x19, 0x96, 0x42, 0x62, 0x16, + 0x60, 0xb7, 0xca, 0x5e, 0x17, 0x82, 0x73, 0x3a, 0xc5, 0xe8, + 0x36, 0xe3, 0x43, 0x93, 0x30, 0x8a, 0x9b, 0x69, 0x2a, 0xf1, + 0x07, 0x4b, 0x85, 0x73, 0x7b, 0x0f, 0x58, 0x47, 0x29, 0xb8, + 0xac, 0x79, 0x55, 0xc8, 0xc9, 0xc3, 0x37, 0xd3, 0x5c, 0xa8, + 0x7a, 0xe5, 0xea, 0x68, 0x97, 0xc5, 0xcb, 0xaf, 0xae, 0x16, + 0x29, 0x6c, 0x27, 0x1a, 0xaa, 0xe1, 0xc4, 0x02, 0x84, 0xcc, + 0xfd, 0xee, 0x57, 0x5c, 0xb5, 0x08, 0xd8, 0xf4, 0x14, 0x6a, + 0x2a, 0xca, 0x70, 0xae, 0x94, 0x8d, 0x91, 0x51, 0xbb, 0xbf, + 0x4e, 0xd6, 0x38, 0x5b, 0x04, 0xa3, 0xdc, 0x83, 0xce, 0x49, + 0xfa, 0x29, 0xfb, 0x7a, 0x27, 0x4c, 0x80, 0x77, 0xdb, 0x69, + 0x34, 0x3b, 0x05, 0x58, 0xcf, 0xa3, 0x48, 0x06, 0x45, 0x07, + 0x40, 0x9a, 0x7b, 0xa9, 0x3b, 0xc6, 0x24, 0xf2, 0xf3, 0x11, + 0x71, 0x44, 0x26, 0xa2, 0x2f, 0x2c, 0xdc, 0x69, 0xdf, 0xf6, + 0xde, 0x0d, 0x54, 0xc8, 0x74, 0x2d, 0xcd, 0xb4, 0xef, 0x58, + 0xfa, 0xfd, 0x8e, 0xf5, 0x24, 0x28, 0x3e, 0xa2, 0x44, 0x01, + 0x82, 0x64, 0x73, 0x53, 0x81, 0xfc, 0x90, 0xd6, 0x12, 0x06, + 0xea, 0x89, 0xdd, 0x90, 0x74, 0x99, 0x5b, 0xbf, 0x72, 0xb9, + 0x33, 0xd3, 0x2e, 0xab, 0x75, 0xd0, 0x11, 0x57, 0x3d, 0x3f, + 0x64, 0x50, 0xad, 0xf6, 0xcc, 0x5e, 0x5d, 0x77, 0x44, 0x80, + 0xe9, 0x23, 0x61, 0x37, 0xd4, 0xc5, 0x94, 0xed, 0x96, 0xc7, + 0xc9, 0x9a, 0x62, 0xe4, 0x47, 0xca, 0xd1, 0x2b, 0x9a, 0xe9, + 0x34, 0x6a, 0x84, 0x24, 0x60, 0x8e, 0x77, 0x7d, 0x0c, 0x40, + 0x2d, 0xe1, 0x4d, 0xd8, 0x54, 0x48, 0xd7, 0x58, 0xb4, 0xbc, + 0xb9, 0x55, 0x76, 0x97, 0xbe, 0x6f, 0x93, 0x9c, 0x2a, 0x0e, + 0xaf, 0x96, 0x37, 0xf7, 0xa4, 0x75, 0x4f, 0x1c, 0xc8, 0x70, + 0xd0, 0xcb, 0xf9, 0xb7, 0xb6, 0xfd, 0x0b, 0xc9, 0xd2, 0x3c, + 0xd4, 0x4f, 0xc8, 0x20, 0x74, 0x80, 0x19, 0x31, 0x2c, 0x66, + 0xe4, 0x61, 0xf0, 0x17, 0x32, 0x93, 0xc4, 0x86, 0x3e, 0x69, + 0xca, 0x67, 0x77, 0x95, 0x46, 0x4d, 0x78, 0x92, 0x3e, 0xb6, + 0xd1, 0xa1, 0xf4, 0x1e, 0xe7, 0xb2, 0xcb, 0x8d, 0xc5, 0xba, + 0xf8, 0x30, 0x1f, 0x44, 0xc5, 0x68, 0x31, 0x0e, 0xe4, 0xd7, + 0x11, 0xfb, 0x75, 0x6a, 0xab, 0x1e, 0x92, 0x1b, 0x83, 0xb7, + 0x08, 0x8a, 0xf0, 0x52, 0x92, 0xfe, 0x24, 0xe4, 0x60, 0x16, + 0xe5, 0x38, 0x20, 0x8d, 0x04, 0x41, 0xf3, 0x54, 0x10, 0xfd, + 0x82, 0x37, 0xd2, 0xad, 0xde, 0xf1, 0x8b, 0x9c, 0x4a, 0xa6, + 0x98, 0xb2, 0x3d, 0xf5, 0xf3, 0xcf, 0xb2, 0xaf, 0x0b, 0x76, + 0xdf, 0x1b, 0x39, 0xb3, 0xf4, 0xdb, 0xff, 0x64, 0xc6, 0x2b, + 0x13, 0x60, 0xa2, 0x66, 0xfd, 0x3f, 0x61, 0xfc, 0x57, 0x17, + 0x9e, 0xf0, 0x63, 0x97, 0x62, 0x74, 0xf6, 0xab, 0xd2, 0x5c, + 0x7a, 0x03, 0xdd, 0x0c, 0x9e, 0xed, 0x4b, 0x21, 0x31, 0x0b, + 0x99, 0xaa, 0x16, 0x04, 0xc2, 0x95, 0x8c, 0x4a, 0x63, 0xeb, + 0xf0, 0x49, 0x21, 0x0a, 0xad, 0xf8, 0x57, 0x0b, 0xf5, 0x36, + 0xf2, 0x0d, 0x55, 0x91, 0x62, 0x01, 0x42, 0x66, 0x9f, 0x77, + 0xca, 0x2e, 0xac, 0xd5, 0x15, 0x99, 0xe2, 0xc4, 0xa3, 0xd8, + 0xdc, 0xe6, 0x2c, 0xc2, 0xf5, 0x5c, 0x56, 0xdd, 0xdc, 0xb5, + 0xfc, 0x63, 0x12, 0x79, 0x98, 0xe9, 0xd9, 0x22, 0x13, 0x51, + 0xf6, 0x16, 0x6e, 0xd5, 0x27, 0x6b, 0x1c, 0xcc, 0x02, 0xb0, + 0x6e, 0xa0, 0x67, 0xc5, 0x7d, 0xf5, 0x9c, 0x3d, 0xf2, 0x26, + 0xe9, 0xca, 0xff, 0xfe, 0x32, 0x28, 0xb7, 0x7b, 0x66, 0x2f, + 0xcf, 0xda, 0x22, 0x40, 0x95, 0xf0, 0x12, 0x14, 0x1f, 0x51, + 0x22, 0xe1, 0x41, 0x32, 0xd8, 0xc8, 0xa1, 0x7e, 0x48, 0x6b, + 0x09, 0x03, 0xb6, 0x4b, 0xfa, 0x9a, 0x52, 0xdb, 0xc6, 0x0e, + 0x64, 0x38, 0x68, 0x84, 0x9d, 0xba, 0x5b, 0x9f, 0x4d, 0x95, + 0x1a, 0x35, 0x42, 0x12, 0x30, 0x47, 0xda, 0xdf, 0x06, 0x20, + 0xf7, 0x91, 0xc7, 0x6c, 0x83, 0x34, 0xf9, 0x07, 0x72, 0x8a, + 0xe9, 0x9c, 0xdb, 0x35, 0xb4, 0x0f, 0x49, 0xec, 0xa0, 0xba, + 0x78, 0xea, 0x19, 0xa8, 0x62, 0x43, 0x1f, 0xd5, 0x65, 0xd2, + 0xda, 0xab, 0x23, 0xc7, 0x3c, 0x49, 0x63, 0xf4, 0xe8, 0x30, + 0x51, 0x33, 0x9f, 0xfe, 0xd1, 0x7e, 0xca, 0xea, 0x4f, 0x78, + 0xd0, 0xaa, 0x98, 0x2a, 0x08, 0x9f, 0x41, 0xfa, 0x69, 0xb7, + 0x6f, 0x99, 0xa4, 0x4e, 0x25, 0x53, 0x4c, 0x59, 0x56, 0x8b, + 0xeb, 0xad, 0x71, 0x62, 0xb0, 0x6c, 0x6e, 0x73, 0x16, 0x61, + 0x9b, 0x2e, 0x2b, 0x8f, 0xad, 0x55, 0x0b, 0x02, 0x61, 0xab, + 0x46, 0x25, 0xd0, 0x94, 0x78, 0xc5, 0xf1, 0x05, 0xb7, 0x7c, + 0x09, 0x0a, 0xee, 0xc9, 0x11, 0x91, 0xc1, 0x19, 0x6c, 0x64, + 0xb1, 0x3f, 0x24, 0xd4, 0xe5, 0xe0, 0xf2, 0xd4, 0x0e, 0x66, + 0x01, 0x58, 0x37, 0x50, 0xd2, 0x83, 0xdf, 0x9b, 0x4e, 0xff, + 0x79, 0x13, 0x3c, 0x75, 0xed, 0x54, 0x31, 0xc0, 0xee, 0x8b, + 0xd3, 0x69, 0x6d, 0xb4, 0xf0, 0x82, 0x1e, 0xc5, 0xc7, 0xab, + 0x0d, 0xfb, 0x21, 0x09, 0x18, 0xc2, 0x6d, 0x8e, 0x03, 0x10, + 0x9a, 0xa9, 0x82, 0x36, 0xb7, 0xcb, 0xe4, 0x01, 0xd1, 0xb4, + 0x23, 0xf3, 0x68, 0x4a, 0x3c, 0x83, 0x99, 0xe3, 0xba, 0x3e, + 0x4c, 0x15, 0x04, 0xae, 0xc1, 0x7d, 0xd5, 0xba, 0xd6, 0xad, + 0x52, 0x27, 0xf3, 0xc8, 0x26, 0xcd, 0x82, 0xb4, 0xe7, 0x9c, + 0xf1, 0xe5, 0x0c, 0x61, 0xd7, 0x47, 0xe0, 0x08, 0x4d, 0xb5, + 0x41, 0x1b, 0x79, 0x6a, 0x07, 0x33, 0xe1, 0x2c, 0xfa, 0x28, + 0x69, 0xa0, 0x8e, 0xac, 0x27, 0x9e, 0xdd, 0xe8, 0xdd, 0x35, + 0xe2, 0xf8, 0x91, 0x16, 0x7d, 0x14, 0xd5, 0x50, 0x47, 0x56, + 0xf2, 0x4f, 0x8f, 0x74, 0x26, 0xeb, 0x02, 0x57, 0x81, 0xdf, + 0x8b, 0x5d, 0x6b, 0xb7, 0x29, 0xf2, 0x98, 0x64, 0x13, 0x87, + 0xe8, 0x4a, 0xe1, 0x65, 0xb1, 0x47, 0x52, 0x86, 0x6a, 0x5d, + 0x9b, 0xdd, 0x26, 0x19, 0x74, 0x51, 0x13, 0x94, 0x01, 0xca, + 0xa1, 0x8e, 0xa4, 0xcf, 0xd4, 0xba, 0xf5, 0x79, 0x4c, 0x32, + 0xe8, 0xa2, 0xb1, 0x4d, 0xa0, 0xdd, 0x5d, 0x15, 0x38, 0xb8, + 0x40, 0xa5, 0x07, 0x91, 0x81, 0xf6, 0xb9, 0x7e, 0x4a, 0x93, + 0x40, 0x72, 0x4d, 0xdc, 0xce, 0xf1, 0xfe, 0x42, 0x69, 0x35, + 0xeb, 0xdd, 0x25, 0x8d, 0x84, 0x32, 0xa3, 0x40, 0x7d, 0x44, + 0x17, 0x2a, 0xff, 0xa8, 0xdb, 0x1a, 0x55, 0xa0, 0x42, 0x5b, + 0x7f, 0xec, 0x43, 0xef, 0x6d, 0x8d, 0xe1, 0x63, 0x41, 0x4f, + 0xb5, 0xbe, 0x3f, 0x8b, 0xde, 0xa8, 0xdb, 0xb3, 0xa6, 0x24, + 0x1d, 0xb7, 0x66, 0x5f, 0xfd, 0xbf, 0x7c, 0x44, 0xea, 0x5a, + 0x8c, 0x34, 0x20, 0x6d, 0x46, 0x8b, 0x0d, 0x7e, 0x90, 0x16, + 0x43, 0x58, 0x12, 0xe0, 0x80, 0x71, 0x10, 0xc7, 0xee, 0xcc, + 0xa5, 0xb9, 0x3d, 0xe6, 0x49, 0xcd, 0x42, 0xb2, 0xa0, 0xcf, + 0x3e, 0x0c, 0x77, 0x11, 0x15, 0x12, 0x45, 0x16, 0x2d, 0x2f, + 0xbf, 0x84, 0xfc, 0x55, 0xce, 0x6b, 0x54, 0x27, 0xeb, 0xe2, + 0x65, 0x72, 0xac, 0xec, 0xdd, 0x92, 0x84, 0xb5, 0xf9, 0x91, + 0xf1, 0xf8, 0x57, 0x6d, 0xd3, 0xea, 0x9e, 0xac, 0x4c, 0x43, + 0xcd, 0x5b, 0x72, 0xfc, 0x47, 0x76, 0x9f, 0x5c, 0x3d, 0x46, + 0x4f, 0x19, 0x50, 0x0d, 0xaf, 0x71, 0xfd, 0xc3, 0xab, 0x27, + 0x46, 0x9c, 0x2d, 0x73, 0x83, 0x3b, 0x28, 0xcf, 0xab, 0xd3, + 0x4f, 0xde, 0xed, 0x0a, 0x5d, 0x6e, 0xf8, 0x7b, 0x43, 0xd7, + 0xe9, 0x10, 0xb4, 0x3c, 0x0f, 0x8c, 0xaa, 0x15, 0x9d, 0x30, + 0xda, 0x52, 0x44, 0x8b, 0x8a, 0x2d, 0x3c, 0xc1, 0xe6, 0xa0, + 0xf4, 0x52, 0x4a, 0xba, 0x8d, 0xf9, 0x2c, 0x1b, 0xfa, 0x6c, + 0xe4, 0x89, 0x56, 0xea, 0x7a, 0x53, 0x3a, 0xf3, 0xa9, 0x88, + 0xbd, 0x61, 0xf5, 0xc0, 0xfb, 0x86, 0x56, 0xa6, 0xe8, 0x97, + 0x1d, 0x85, 0xc1, 0x2d, 0x49, 0x27, 0xad, 0xa8, 0x03, 0x89, + 0x45, 0x61, 0x38, 0x02, 0x82, 0xbc, 0x81, 0x76, 0xda, 0x33, + 0xb8, 0xbf, 0x9e, 0xd8, 0x83, 0xa2, 0xf1, 0xcd, 0x28, 0x43, + 0xee, 0x03, 0x6d, 0x95, 0x21, 0xed, 0x58, 0x10, 0x8e, 0x11, + 0x75, 0xeb, 0x4f, 0x2a, 0x46, 0xe7, 0x84, 0x28, 0xf1, 0x66, + 0xef, 0x4c, 0xbb, 0x22, 0xbe, 0x89, 0xac, 0x30, 0x4e, 0xc0, + 0xf4, 0xc8, 0x3a, 0x55, 0x96, 0xb0, 0x14, 0x92, 0x5b, 0x8d, + 0xae, 0x40, 0x5a, 0x79, 0xf0, 0x27, 0x9a, 0x6c, 0x50, 0x7e, + 0x0a, 0x43, 0xb0, 0xcd, 0xbe, 0x46, 0xde, 0x7a, 0xdd, 0x45, + 0x4c, 0xd7, 0x53, 0x96, 0x85, 0xaf, 0x58, 0xdf, 0x4b, 0x13, + 0x5e, 0xe9, 0xce, 0xb3, 0x2b, 0x0c, 0xf2, 0x30, 0x3d, 0x32, + 0xef, 0x84, 0xc4, 0x2c, 0x85, 0xb2, 0xbd, 0xdb, 0xfe, 0x2b, + 0xf2, 0xd7, 0xf3, 0xda, 0x8f, 0x1d, 0x51, 0xf9, 0xa3, 0xfa, + 0x7e, 0x6c, 0x5d, 0x74, 0xee, 0xe2, 0x04, 0x9e, 0x4d, 0x3d, + 0xe1, 0xb9, 0x3b, 0xd2, 0x3f, 0x09, 0x0e, 0x0c, 0xb4, 0x8e, + 0x1e, 0x5f, 0x3f, 0xaf, 0x48, 0xf9, 0xde, 0x2a, 0x38, 0x98, + 0x07, 0x01, 0xf5, 0xd2, 0x54, 0x21, 0x0e, 0x96, 0xc9, 0xe6, + 0xf6, 0x1e, 0xb0, 0x8e, 0x52, 0xb3, 0x9b, 0xf2, 0x3b, 0x73, + 0xb7, 0x13, 0x3e, 0x0e, 0x10, 0x3d, 0xf7, 0xf4, 0x02, 0xa1, + 0xec, 0xce, 0xfc, 0x24, 0xc0, 0xad, 0x57, 0xbc, 0x2e, 0xc7, + 0xe6, 0x74, 0x49, 0x13, 0x6c, 0x05, 0x86, 0xe5, 0x60, 0xd7, + 0x64, 0xf2, 0xb2, 0x77, 0x5e, 0xfd, 0x61, 0x48, 0xf5, 0xe3, + 0xa5, 0xff, 0x53, 0x34, 0x32, 0x4b, 0x9f, 0x2c, 0x52, 0xd8, + 0x4e, 0x34, 0x97, 0x01, 0x4b, 0x04, 0xcb, 0x5b, 0x39, 0x1f, + 0xae, 0xb8, 0x51, 0x8d, 0xb1, 0xea, 0x7e, 0xac, 0x4e, 0xda, + 0x4a, 0xee, 0x79, 0x74, 0x87, 0x62, 0xc9, 0x6e, 0xaa, 0x53, + 0x51, 0x45, 0x6e, 0x65, 0xb8, 0x93, 0xf4, 0x09, 0x17, 0xd0, + 0xed, 0x49, 0x55, 0x9d, 0x67, 0xb1, 0x90, 0x19, 0x18, 0x4c, + 0x8d, 0x8c, 0xe1, 0x75, 0x59, 0xf6, 0x5f, 0xdf, 0xd2, 0x6b, + 0x9c, 0x6f, 0x70, 0xb6, 0x08, 0x85, 0x7b, 0xc5, 0x5f, 0x92, + 0x37, 0x52, 0x35, 0xf4, 0x4e, 0x98, 0x52, 0xce, 0x93, 0x84, + 0x38, 0x1d, 0xa2, 0x1e, 0x5e, 0x78, 0x85, 0x7d, 0x8b, 0x89, + 0x29, 0x4e, 0xa9, 0x10, 0x73, 0x2b, 0x28, 0xd4, 0x54, 0x57, + 0xe0, 0x9f, 0xeb, 0xd9, 0xe1, 0xa2, 0xb5, 0xbd, 0x0d, 0x4f, + 0x96, 0xe0, 0x58, 0xee, 0xd3, 0x6b, 0x5c, 0x6f, 0x22, 0x23, + 0x34, 0x73, 0xe7, 0x21, 0xf6, 0x91, 0x76, 0x4f, 0x48, 0x27, + 0x25, 0x22, 0xe2, 0x88, 0x4c, 0x87, 0x5e, 0x58, 0x7b, 0xd2, + 0x38, 0x30, 0x95, 0x7d, 0x78, 0xbf, 0xfc, 0xf9, 0xe3, 0x62, + 0xfe, 0xa8, 0xe0, 0x25, 0x1c, 0x04, 0xc3, 0xee, 0x75, 0xd2, + 0x68, 0x76, 0x0a, 0xb0, 0x5d, 0x85, 0x90, 0x0c, 0x8a, 0x0e, + 0x80, 0xf7, 0xb3, 0x8e, 0x9c, 0x28, 0x98, 0xcb, 0x31, 0x81, + 0x58, 0x41, 0xaf, 0x9f, 0x89, 0x44, 0xb8, 0xff, 0x48, 0x50, + 0x7c, 0x87, 0x88, 0x02, 0xc7, 0xc8, 0xe6, 0xa6, 0xc1, 0x3b, + 0xe3, 0x6f, 0x24, 0x0c, 0x86, 0xf1, 0x9f, 0xb5, 0xb8, 0x9a, + 0x1e, 0x13, 0xe7, 0x4c, 0x73, 0x14, 0x5d, 0x12, 0x43, 0xda, + 0x7d, 0x2f, 0x7f, 0x1a, 0xa8, 0x53, 0xe8, 0x5a, 0x59, 0xab, + 0x1d, 0xb0, 0x37, 0x39, 0xdf, 0x29, 0xd9, 0x70, 0x9a, 0xd1, + 0xd8, 0x69, 0x6f, 0x66, 0xe5, 0x5b, 0xd4, 0x4a, 0xe2, 0xe8, + 0x8d, 0xb5, 0x22, 0xae, 0x7a, 0x7e, 0xc8, 0xa0, 0x99, 0x2f, + 0x5b, 0xbc, 0xba, 0xee, 0x88, 0xc3, 0x11, 0x46, 0xec, 0x0f, + 0x99, 0x4c, 0xf8, 0x38, 0x40, 0xf4, 0x5a, 0x56, 0x08, 0xc1, + 0x36, 0xbe, 0x76, 0x90, 0x17, 0xd1, 0x79, 0xe3, 0xe8, 0xf1, + 0xb6, 0xbd, 0xe4, 0xb1, 0x66, 0x65, 0x5c, 0x95, 0xea, 0x63, + 0x0c, 0xcf, 0x88, 0x7b, 0xdb, 0x81, 0x36, 0x96, 0x50, 0x1d, + 0x76, 0x24, 0x30, 0x2a, 0x06, 0x80, 0xf7, 0x11, 0x68, 0xd4, + 0xcb, 0x48, 0xc0, 0xdf, 0xee, 0xfa, 0x18, 0x80, 0x5a, 0x01, + 0x9a, 0x73, 0x39, 0xb0, 0x8b, 0xe6, 0xfb, 0xd0, 0x19, 0x04, + 0xef, 0x10, 0xaa, 0xaf, 0xe4, 0x7c, 0xfd, 0xa5, 0xc2, 0x6e, + 0x6b, 0x49, 0xeb, 0x19, 0xef, 0x4d, 0x51, 0xf7, 0xc4, 0x0b, + 0x8e, 0x57, 0x61, 0x56, 0x66, 0x31, 0x8e, 0x82, 0x9b, 0x23, + 0x68, 0x71, 0xed, 0x07, 0x0d, 0xf1, 0x5b, 0x86, 0x33, 0xca, + 0x9d, 0xef, 0x6e, 0x2d, 0x8b, 0xea, 0x9e, 0x38, 0x53, 0xe0, + 0x63, 0x55, 0x31, 0xad, 0xaf, 0x39, 0x53, 0x4e, 0x8d, 0x1f, + 0xbb, 0x72, 0x47, 0xe3, 0x52, 0x0a, 0xd1, 0x7a, 0x8f, 0xd0, + 0xc8, 0xef, 0xa8, 0x90, 0x6d, 0xb0, 0xab, 0xbb, 0xb1, 0xaa, + 0xec, 0xed, 0xbf, 0xde, 0xe5, 0xfb, 0x54, 0x1c, 0xd8, 0xf0, + 0x84, 0x4a, 0x5b, 0x06, 0x8a, 0x9b, 0xe9, 0x29, 0x80, 0x4d, + 0xe6, 0xb1, 0x6c, 0x14, 0x23, 0x2e, 0x64, 0xe5, 0x4b, 0xcf, + 0x7c, 0xd2, 0x57, 0xce, 0xee, 0xe9, 0x8c, 0x9a, 0xf0, 0xe7, + 0xed, 0x8f, 0x87, 0xd7, 0x7b, 0x57, 0xa5, 0x09, 0x56, 0x24, + 0x5c, 0xc6, 0x32, 0xe7, 0x97, 0x31, 0x16, 0x51, 0x67, 0x78, + 0x6b, 0x9e, 0x53, 0x40, 0xe8, 0xc3, 0x32, 0x62, 0x58, 0xcc, + 0x0b, 0xc2, 0xb2, 0x0e, 0x82, 0xb3, 0x1b, 0xa4, 0xd4, 0x7c, + 0x54, 0x33, 0xfb, 0x98, 0x8d, 0x1d, 0x59, 0x5e, 0x49, 0xd0, + 0x62, 0x1c, 0x0b, 0x6d, 0x22, 0x35, 0xea, 0xd4, 0x95, 0x3c, + 0xe7, 0x36, 0xc5, 0xad, 0x87, 0x71, 0x81, 0x2e, 0x3b, 0xf5, + 0xfb, 0xee, 0xeb, 0x3e, 0x27, 0x13, 0x59, 0x4b, 0xa2, 0x7b, + 0x7c, 0xaf, 0x61, 0x81, 0x2b, 0x3c, 0x0d, 0xa7, 0x55, 0xd9, + 0x49, 0xb7, 0x33, 0x60, 0x3e, 0x88, + }, + { + /* 9 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x6f, 0x5a, 0x3d, + 0xbf, 0xad, 0xee, 0xab, 0xf1, 0xc4, 0xaf, 0x02, 0xd6, 0x1c, + 0x89, 0xf2, 0x02, 0xde, 0xb4, 0x7a, 0xbd, 0x99, 0x1f, 0x95, + 0x21, 0x4b, 0x9d, 0x04, 0x6f, 0x38, 0xd1, 0x27, 0x03, 0xb1, + 0xee, 0x47, 0x02, 0x34, 0xf1, 0x3e, 0xd0, 0x8f, 0x32, 0x06, + 0xb9, 0x24, 0x58, 0xd5, 0x04, 0x7f, 0xab, 0xf4, 0xb9, 0xf1, + 0x3e, 0xe9, 0x42, 0x96, 0xf9, 0x08, 0xde, 0x70, 0x61, 0x4e, + 0x05, 0x10, 0xf1, 0xc9, 0x06, 0x5c, 0xd0, 0x42, 0xb3, 0x52, + 0x56, 0x0a, 0x08, 0x6c, 0xe8, 0xbc, 0x06, 0xa1, 0x1f, 0x8e, + 0x04, 0x68, 0x21, 0x7c, 0x63, 0xdd, 0x64, 0x0c, 0xb1, 0x48, + 0xb0, 0x69, 0x07, 0xce, 0x45, 0xb3, 0xbb, 0xc5, 0xcf, 0xd7, + 0x92, 0x19, 0xcb, 0x0e, 0x67, 0x54, 0x39, 0x9b, 0x08, 0xfe, + 0x95, 0x2b, 0xb1, 0x21, 0x7c, 0x11, 0x84, 0xef, 0x31, 0x10, + 0x7f, 0xe0, 0xc2, 0x9c, 0x09, 0x91, 0xcf, 0x16, 0x0e, 0x8c, + 0x92, 0xba, 0x75, 0x2b, 0x9e, 0x12, 0xa9, 0xfc, 0x4b, 0x6e, + 0x0a, 0x20, 0x21, 0x51, 0x0c, 0xb8, 0x63, 0x84, 0xa5, 0xa4, + 0xac, 0x14, 0x10, 0xd8, 0x13, 0xbb, 0x0b, 0x4f, 0x7b, 0x6c, + 0xb3, 0x15, 0x8d, 0x2f, 0x54, 0x60, 0x03, 0x16, 0xc6, 0xc4, + 0x9a, 0x49, 0x0c, 0x81, 0x3e, 0xdf, 0x08, 0xd0, 0x42, 0xf8, + 0xc6, 0x79, 0xc8, 0x18, 0xa1, 0x90, 0xa3, 0xd2, 0x0d, 0xee, + 0x64, 0xe2, 0xb7, 0x7d, 0xac, 0x53, 0x37, 0xbd, 0x67, 0x1a, + 0x77, 0x8c, 0x2a, 0x20, 0x0e, 0x5f, 0x8a, 0xa5, 0xb5, 0x49, + 0x5d, 0x6d, 0xe7, 0x32, 0x55, 0x1c, 0xce, 0xa8, 0x72, 0xf5, + 0x0f, 0x30, 0xd0, 0x98, 0x0a, 0xe4, 0xb3, 0xc6, 0x16, 0xf6, + 0xfa, 0x1e, 0x18, 0xb4, 0xfb, 0x07, 0x10, 0x3f, 0xe9, 0x56, + 0xa1, 0x42, 0xf8, 0x22, 0xcb, 0x1d, 0x62, 0x20, 0xfe, 0x03, + 0x47, 0xfb, 0x11, 0x50, 0xb3, 0x6b, 0x1e, 0xef, 0x16, 0x89, + 0x3a, 0xd9, 0xcd, 0x22, 0x28, 0x1f, 0xce, 0x09, 0x12, 0xe1, + 0x5d, 0x2c, 0x1c, 0xdb, 0xe7, 0xb7, 0xea, 0x56, 0xff, 0x24, + 0x91, 0x3b, 0x96, 0xdc, 0x13, 0x8e, 0x07, 0x11, 0xa3, 0x76, + 0x09, 0x1c, 0x1b, 0x92, 0x50, 0x26, 0x47, 0x27, 0x1f, 0x2e, + 0x14, 0x40, 0x42, 0xa2, 0x18, 0xb3, 0xc6, 0xcb, 0x89, 0x8b, + 0x9b, 0x28, 0x20, 0x73, 0x26, 0xb5, 0x15, 0x2f, 0x18, 0x9f, + 0xa7, 0x1e, 0x28, 0x60, 0x78, 0x4f, 0x34, 0x2a, 0xf6, 0x6f, + 0xaf, 0x47, 0x16, 0x9e, 0xf6, 0xd8, 0xa5, 0x2a, 0xd9, 0x5e, + 0xa8, 0xc0, 0x06, 0x2c, 0x4f, 0x4b, 0xf7, 0x92, 0x17, 0xf1, + 0xac, 0xe5, 0x1a, 0x87, 0x37, 0xf5, 0x59, 0x04, 0xa9, 0x2e, + 0x99, 0x57, 0x7e, 0x60, 0x18, 0xc1, 0x7c, 0x7d, 0x10, 0x63, + 0x84, 0x33, 0x4f, 0xf2, 0x53, 0x30, 0x81, 0xe3, 0x85, 0x67, + 0x19, 0xae, 0x26, 0x40, 0xaf, 0xce, 0x6a, 0x98, 0xbe, 0x36, + 0xfc, 0x32, 0x57, 0xff, 0x0c, 0x95, 0x1a, 0x1f, 0xc8, 0x07, + 0xad, 0xfa, 0x9b, 0xa6, 0x6e, 0xb9, 0xce, 0x34, 0xee, 0xdb, + 0x54, 0x40, 0x1b, 0x70, 0x92, 0x3a, 0x12, 0x57, 0x75, 0x0d, + 0x9f, 0x7d, 0x61, 0x36, 0x38, 0xc7, 0xdd, 0xb2, 0x1c, 0xbe, + 0xd7, 0x89, 0xa9, 0x92, 0xba, 0xda, 0x0d, 0x64, 0xaa, 0x38, + 0x5f, 0x93, 0xe4, 0x29, 0x1d, 0xd1, 0x8d, 0xb4, 0x16, 0x3f, + 0x54, 0x71, 0xfc, 0xa0, 0x05, 0x3a, 0x89, 0x8f, 0x6d, 0xdb, + 0x1e, 0x60, 0x63, 0xf3, 0x14, 0x0b, 0xa5, 0x4f, 0x2c, 0x2f, + 0x37, 0x3c, 0x30, 0xab, 0x35, 0x0e, 0x1f, 0x0f, 0x39, 0xce, + 0xab, 0xa6, 0x4b, 0xe4, 0xdd, 0xeb, 0x98, 0x3e, 0xe6, 0xb7, + 0xbc, 0xfc, 0x20, 0x7e, 0x11, 0xac, 0x81, 0x84, 0x33, 0x44, + 0x55, 0x3a, 0xc4, 0x40, 0x3f, 0x06, 0x8e, 0x35, 0x21, 0x11, + 0x4b, 0x91, 0x3e, 0x29, 0xdd, 0xef, 0xa4, 0xfe, 0x6b, 0x42, + 0xe9, 0x1a, 0x07, 0xc7, 0x22, 0xa0, 0xa5, 0xd6, 0x3c, 0x1d, + 0x2c, 0xd1, 0x74, 0x71, 0x59, 0x44, 0x50, 0x3e, 0x5f, 0x12, + 0x23, 0xcf, 0xff, 0xeb, 0x83, 0xb0, 0xc2, 0x7a, 0x85, 0xb5, + 0xf6, 0x46, 0x86, 0x22, 0xd6, 0xe0, 0x24, 0x01, 0xba, 0x58, + 0x38, 0x75, 0x0d, 0xad, 0x17, 0xac, 0x3d, 0x48, 0xe1, 0x76, + 0xef, 0x7b, 0x25, 0x6e, 0xe0, 0x65, 0x87, 0xd8, 0xe3, 0x06, + 0xe6, 0x68, 0x92, 0x4a, 0x37, 0x6a, 0x66, 0x89, 0x26, 0xdf, + 0x0e, 0x22, 0x85, 0xec, 0x12, 0x38, 0x36, 0xe7, 0xa0, 0x4c, + 0x8e, 0x4e, 0x3e, 0x5c, 0x27, 0xb0, 0x54, 0x1f, 0x3a, 0x41, + 0xfc, 0x93, 0xc7, 0x23, 0x0f, 0x4e, 0x58, 0x52, 0xb7, 0xae, + 0x28, 0x80, 0x84, 0x87, 0x30, 0xa5, 0x4f, 0x55, 0xd1, 0xd5, + 0xf5, 0x50, 0x40, 0xe6, 0x4c, 0xa9, 0x29, 0xef, 0xde, 0xba, + 0x8f, 0x08, 0xa1, 0xfe, 0x20, 0x11, 0x5a, 0x52, 0x96, 0xfa, + 0xc5, 0x5b, 0x2a, 0x5e, 0x30, 0xfd, 0x8d, 0x3c, 0x50, 0xc0, + 0xf0, 0x9e, 0x68, 0x54, 0x2f, 0xde, 0x9d, 0x8e, 0x2b, 0x31, + 0x6a, 0xc0, 0x32, 0x91, 0xbe, 0x6b, 0x01, 0x5a, 0xc7, 0x56, + 0xf9, 0xc2, 0x14, 0x7c, 0x2c, 0xff, 0x2f, 0x73, 0x89, 0x54, + 0x71, 0xbc, 0x93, 0x43, 0x0c, 0x58, 0x9e, 0x96, 0x2d, 0xe7, + 0x2d, 0x90, 0x75, 0x4e, 0x36, 0xf9, 0x9f, 0x17, 0x62, 0x87, + 0xa3, 0x5a, 0x48, 0x8a, 0xa4, 0x15, 0x2e, 0x21, 0x9b, 0x09, + 0x34, 0xcd, 0x6e, 0x29, 0xb2, 0x08, 0x91, 0x5c, 0xf1, 0xae, + 0xfc, 0xc0, 0x2f, 0x4e, 0xc1, 0x34, 0x8b, 0x60, 0x80, 0x82, + 0x43, 0xcc, 0x3e, 0x5e, 0x27, 0xb2, 0x75, 0x32, 0x30, 0x41, + 0xf8, 0xfa, 0x20, 0xc6, 0xcb, 0x66, 0x9e, 0x27, 0xa6, 0x60, + 0xc1, 0x05, 0xc9, 0xce, 0x31, 0x2e, 0xa2, 0xc7, 0x9f, 0x6b, + 0x25, 0xcd, 0x6f, 0xe3, 0x09, 0x62, 0x17, 0x19, 0x40, 0x3c, + 0x32, 0x9f, 0x4c, 0x80, 0x9d, 0x5f, 0xd4, 0xf3, 0xbf, 0x6c, + 0x3b, 0x64, 0xae, 0x3d, 0x18, 0xe9, 0x33, 0xf0, 0x16, 0xbd, + 0x22, 0xf2, 0x3a, 0x58, 0x4e, 0xa8, 0x94, 0x66, 0x78, 0x21, + 0x91, 0x1b, 0x34, 0x3e, 0x53, 0x0e, 0x99, 0x37, 0xf5, 0x8f, + 0xdc, 0xb1, 0x5f, 0x68, 0x1f, 0x75, 0xa8, 0x80, 0x35, 0x51, + 0x09, 0x33, 0x26, 0x9a, 0x1b, 0x24, 0x2d, 0x75, 0xf0, 0x6a, + 0xc9, 0x69, 0x21, 0x72, 0x36, 0xe0, 0xe7, 0x74, 0x24, 0xae, + 0xea, 0x1a, 0xfd, 0xfa, 0xc2, 0x6c, 0x70, 0x4d, 0x79, 0xa7, + 0x37, 0x8f, 0xbd, 0x49, 0x9b, 0x03, 0x04, 0xb1, 0x0c, 0x3e, + 0x6d, 0x6e, 0xa6, 0x51, 0xf0, 0x55, 0x38, 0xbf, 0x6d, 0xd1, + 0x91, 0xe7, 0xb7, 0x77, 0x1a, 0xc8, 0x97, 0x70, 0xbe, 0xe5, + 0x0b, 0x52, 0x39, 0xd0, 0x37, 0xec, 0x2e, 0x4a, 0x59, 0xdc, + 0xeb, 0x0c, 0x38, 0x72, 0x68, 0xf9, 0x82, 0xa0, 0x3a, 0x61, + 0xd9, 0xab, 0x2c, 0x7e, 0xa8, 0xe2, 0x3b, 0x83, 0x0a, 0x74, + 0xd1, 0xdd, 0xda, 0x75, 0x3b, 0x0e, 0x83, 0x96, 0x93, 0xd3, + 0x46, 0x49, 0xca, 0x47, 0xa5, 0x76, 0x07, 0xc1, 0x53, 0x87, + 0x3c, 0xc0, 0xc6, 0x25, 0x28, 0x16, 0x89, 0x9e, 0x58, 0x5e, + 0x6e, 0x78, 0x60, 0x95, 0x6a, 0x1c, 0x3d, 0xaf, 0x9c, 0x18, + 0x97, 0xbb, 0x67, 0x35, 0xa9, 0x9a, 0xc1, 0x7a, 0xb6, 0x89, + 0xe3, 0xee, 0x3e, 0x1e, 0x72, 0x5f, 0x95, 0x8f, 0x96, 0x0b, + 0x79, 0x15, 0xf3, 0x7c, 0x0f, 0xad, 0xbb, 0x3b, 0x3f, 0x71, + 0x28, 0x62, 0x2a, 0x22, 0x78, 0xa0, 0x88, 0xd1, 0x5c, 0x7e, + 0xd9, 0xb1, 0x32, 0xc9, 0x40, 0xfc, 0x22, 0x9b, 0xc1, 0xcb, + 0x66, 0x88, 0xaa, 0x74, 0x4b, 0x80, 0x7e, 0x0c, 0xdf, 0x6a, + 0x41, 0x93, 0x78, 0xa6, 0x7e, 0x66, 0x88, 0x23, 0x5b, 0xb0, + 0xe4, 0x82, 0xa8, 0x10, 0x56, 0x98, 0x42, 0x22, 0x96, 0xe1, + 0x7c, 0x52, 0x79, 0x1d, 0x8b, 0x3f, 0xd6, 0x84, 0x11, 0x34, + 0x0e, 0x4d, 0x43, 0x4d, 0xcc, 0xdc, 0xc3, 0xff, 0x97, 0xb6, + 0x7a, 0xfb, 0x79, 0x86, 0xc7, 0x28, 0x87, 0xbf, 0x44, 0x83, + 0x89, 0x6f, 0x78, 0x3a, 0x58, 0x61, 0xe8, 0xe2, 0xb2, 0x88, + 0xa0, 0x7c, 0xbe, 0x24, 0x45, 0xec, 0xd3, 0x52, 0xc7, 0x97, + 0xb6, 0xca, 0x19, 0x26, 0x1d, 0x8a, 0x76, 0x60, 0x37, 0xd6, + 0x46, 0x5d, 0x3d, 0x15, 0xc5, 0xa3, 0x47, 0xf4, 0xc9, 0xa9, + 0x2f, 0x8c, 0xcf, 0x44, 0x6f, 0x03, 0x47, 0x32, 0x67, 0x28, + 0x7a, 0x0e, 0xa9, 0x5f, 0x38, 0x6d, 0x80, 0x8e, 0x19, 0x58, + 0xe6, 0xf1, 0x48, 0x02, 0xb7, 0xb0, 0x70, 0xea, 0x1a, 0x99, + 0x2e, 0x9b, 0x7a, 0x90, 0x01, 0xec, 0x1d, 0xf6, 0x49, 0x6d, + 0xed, 0x8d, 0xcf, 0x47, 0xf4, 0x32, 0xdf, 0x5f, 0xd5, 0x92, + 0xd7, 0xf0, 0x94, 0x04, 0x4a, 0xdc, 0x03, 0xca, 0xcd, 0x73, + 0x05, 0x0c, 0x0f, 0xd0, 0xe7, 0x94, 0x6e, 0xd4, 0xcc, 0xd1, + 0x4b, 0xb3, 0x59, 0xf7, 0x72, 0xde, 0xeb, 0xa7, 0xfe, 0x14, + 0x48, 0x96, 0xb8, 0xc8, 0x45, 0x23, 0x4c, 0x7d, 0x1c, 0x44, + 0xc9, 0x1b, 0x24, 0x70, 0x6c, 0x0d, 0x83, 0x98, 0xdf, 0x9c, + 0x7c, 0xb8, 0x4d, 0x12, 0x46, 0x79, 0x76, 0xb6, 0xca, 0xdb, + 0x9d, 0xc9, 0x2c, 0x9a, 0x09, 0x80, 0xf5, 0x4a, 0x4e, 0xa3, + 0xa8, 0x3e, 0x74, 0x82, 0x3b, 0xe5, 0x4d, 0x46, 0x1e, 0x9c, + 0xb0, 0xa4, 0xad, 0x9f, 0x4f, 0xcc, 0xf2, 0x03, 0xcb, 0x2f, + 0xd5, 0x4e, 0xbc, 0x82, 0xb1, 0x9e, 0x66, 0xb8, 0x24, 0x6d, + 0x50, 0xc3, 0xcb, 0xcd, 0x60, 0x89, 0x9e, 0xaa, 0x61, 0x69, + 0x29, 0xa0, 0x80, 0x0f, 0x98, 0x91, 0x51, 0xac, 0x91, 0xf0, + 0xdf, 0x24, 0x70, 0x01, 0x90, 0xad, 0x86, 0xa2, 0x56, 0x13, + 0x11, 0x63, 0x52, 0x1d, 0x7f, 0xb7, 0xdd, 0x10, 0x81, 0x3f, + 0x40, 0x22, 0xb4, 0xa4, 0xef, 0x37, 0x49, 0xb6, 0x53, 0x72, + 0x25, 0x8a, 0x62, 0xbd, 0x6f, 0x94, 0xb1, 0xe6, 0x1b, 0xa6, + 0x39, 0x2b, 0xc0, 0x44, 0x54, 0xbc, 0x60, 0x39, 0xd9, 0x78, + 0xa0, 0x43, 0x23, 0xff, 0xd0, 0xa8, 0x5e, 0x7f, 0xf9, 0xdf, + 0x55, 0xd3, 0x3a, 0x04, 0x66, 0xd5, 0x4e, 0xe8, 0xd2, 0x3b, + 0x7f, 0xaa, 0x88, 0x63, 0x70, 0x2d, 0x56, 0x62, 0xd4, 0x43, + 0x64, 0xe1, 0xbf, 0xd6, 0x02, 0xb4, 0x4d, 0xac, 0x31, 0x47, + 0x28, 0xf8, 0x57, 0x0d, 0x8e, 0x7e, 0xdb, 0x4c, 0x51, 0x7d, + 0xf3, 0x70, 0xe2, 0xae, 0xe7, 0x5b, 0xa1, 0x0a, 0x58, 0x3d, + 0x5e, 0xe6, 0xd1, 0xa8, 0xe2, 0xbb, 0xe5, 0x86, 0x18, 0xb0, + 0xff, 0xef, 0x5a, 0x0d, 0x59, 0x52, 0x04, 0xdb, 0x6e, 0x05, + 0x0c, 0x10, 0x14, 0x42, 0xb7, 0xb2, 0x29, 0xf3, 0xd3, 0xff, + 0x5a, 0xe3, 0xea, 0x9c, 0x6c, 0x31, 0xfd, 0x2e, 0xc4, 0xcd, + 0x85, 0xb4, 0x90, 0xd7, 0x8b, 0x2a, 0x5b, 0x8c, 0xb0, 0xa1, + 0xd3, 0x9c, 0x13, 0x85, 0x35, 0x09, 0x2a, 0xb6, 0x46, 0xcb, + 0x02, 0xd8, 0x5c, 0x42, 0xf5, 0x12, 0x68, 0x59, 0xdc, 0x52, + 0xa7, 0x10, 0xe1, 0xb8, 0x21, 0x9f, 0x3b, 0x43, 0x5d, 0x2d, + 0xaf, 0x2f, 0xd7, 0xf4, 0x32, 0xf9, 0x56, 0xd4, 0x4e, 0xba, + 0xf7, 0x83, 0xb2, 0xb1, 0x5e, 0x9c, 0x41, 0x68, 0xd5, 0xc0, + 0xc3, 0xc7, 0x86, 0x5b, 0x7c, 0xbc, 0x4e, 0xa7, 0xea, 0x64, + 0x5f, 0xf3, 0x1b, 0x55, 0x6a, 0x6d, 0x2d, 0x6c, 0x77, 0x9f, + 0xd3, 0xbe, 0x98, 0xbb, 0x63, 0x96, 0x60, 0x82, 0x33, 0x37, + 0x40, 0x4f, 0x55, 0xcc, 0xff, 0x4e, 0x8f, 0xc0, 0x41, 0x0a, + 0x51, 0x5f, 0x61, 0xed, 0x69, 0x0a, 0xff, 0xe2, 0xbb, 0x67, + 0x0e, 0x8a, 0x20, 0xc2, 0x97, 0x16, 0xd8, 0xad, 0x62, 0x5c, + 0x87, 0x4d, 0xfd, 0xd6, 0x4a, 0x59, 0xde, 0x05, 0x12, 0xc4, + 0x2e, 0x32, 0x80, 0x78, 0x63, 0x33, 0xdd, 0x70, 0x42, 0x7b, + 0xa4, 0xf2, 0x2f, 0xc1, 0xbd, 0xc6, 0xf8, 0x2e, 0x09, 0x8a, + 0x64, 0xfd, 0x98, 0xc3, 0xf9, 0xbe, 0x6b, 0x25, 0xbd, 0xd8, + 0x76, 0xc8, 0x9f, 0x7a, 0x30, 0x11, 0x65, 0x92, 0xc2, 0xfe, + 0x46, 0x13, 0x85, 0x8e, 0x4c, 0x1c, 0xd9, 0xca, 0x49, 0x66, + 0xb9, 0xe3, 0x66, 0x23, 0x2c, 0xb9, 0x44, 0x27, 0x74, 0xb0, + 0x9c, 0x93, 0xeb, 0xcc, 0xf0, 0x42, 0xe1, 0x36, 0x67, 0x4c, + 0x76, 0x84, 0xfb, 0x8a, 0x9a, 0x1b, 0x6d, 0x57, 0x44, 0xce, + 0x26, 0x5e, 0x68, 0xc4, 0x68, 0x7c, 0xa6, 0x1c, 0xf1, 0x6e, + 0x29, 0xdd, 0x7b, 0xa1, 0xbe, 0xd0, 0x3e, 0xea, 0x93, 0xc3, + 0x69, 0x13, 0xfc, 0x21, 0x4e, 0xc3, 0xc7, 0x76, 0x8a, 0x65, + 0x11, 0xd2, 0xe8, 0xf6, 0x1a, 0x31, 0x6a, 0xa2, 0x12, 0x66, + 0x4c, 0xf7, 0x36, 0x48, 0x5a, 0xea, 0x23, 0xd4, 0x51, 0xd2, + 0x42, 0xe4, 0x6b, 0xcd, 0x48, 0x5b, 0xf3, 0x5a, 0xd8, 0xe3, + 0xab, 0x2e, 0x8c, 0xd6, 0x87, 0xce, 0xcb, 0x16, 0x6c, 0x03, + 0x0d, 0xe8, 0x48, 0x9f, 0x17, 0x34, 0x39, 0x37, 0x47, 0xd8, + 0xe0, 0x9a, 0xf2, 0x8d, 0x6d, 0x6c, 0x57, 0xd5, 0xf7, 0x32, + 0xf9, 0x9f, 0xc8, 0xf3, 0xe8, 0xda, 0x36, 0x86, 0x7b, 0x7f, + 0x6e, 0xdd, 0xb9, 0x92, 0xf5, 0x06, 0x08, 0xa1, 0x18, 0x7c, + 0xda, 0xdc, 0x8f, 0xa2, 0x23, 0xaa, 0x6f, 0xb2, 0xe3, 0xaf, + 0x4a, 0xab, 0xe6, 0x0a, 0xe9, 0xb8, 0x75, 0xde, 0x59, 0xbe, + 0xaa, 0x58, 0x70, 0xbd, 0xda, 0x61, 0xe1, 0x0d, 0xad, 0xee, + 0x34, 0x53, 0xed, 0xe0, 0xbf, 0x09, 0x16, 0xa4, 0x71, 0xd2, + 0x80, 0x5c, 0x5e, 0xa0, 0x43, 0x45, 0xc5, 0x97, 0x42, 0xe2, + 0x69, 0x15, 0x9f, 0x56, 0x72, 0x63, 0x6e, 0x1b, 0x5c, 0x94, + 0xb2, 0x7b, 0x15, 0x18, 0x70, 0xe4, 0xd0, 0x31, 0xc7, 0x83, + 0x73, 0x0c, 0x34, 0x26, 0xe3, 0x39, 0x5c, 0xd0, 0xe4, 0xdc, + 0xdf, 0xe6, 0x06, 0x2d, 0x4e, 0x71, 0x74, 0xc2, 0x71, 0x95, + 0x58, 0xfc, 0x93, 0x07, 0x76, 0xc5, 0x14, 0xe8, 0x61, 0x79, + 0x77, 0xea, 0x75, 0xad, 0x2b, 0xa8, 0xe7, 0x51, 0x7d, 0xac, + 0x87, 0x01, 0xbb, 0xea, 0xb7, 0x65, 0xfe, 0x18, 0x76, 0x1c, + 0xc5, 0xef, 0xe5, 0x65, 0x8c, 0x92, 0x57, 0x8e, 0x89, 0xec, + 0x0e, 0x41, 0xa6, 0xcd, 0x77, 0x73, 0x9f, 0xd2, 0x5a, 0xc8, + 0x62, 0x39, 0xa6, 0x4a, 0x26, 0xee, 0xd8, 0x5d, 0x2f, 0x3f, + 0x78, 0x43, 0x4f, 0x4a, 0x50, 0x2c, 0xd1, 0xff, 0xb0, 0xbc, + 0xdc, 0xf0, 0xc0, 0xe9, 0xd4, 0x38, 0x79, 0x2c, 0x15, 0x77, + 0xef, 0x81, 0x3f, 0x54, 0x41, 0x78, 0x73, 0xf2, 0x16, 0xf5, + 0x5d, 0xca, 0x7a, 0x9d, 0xfb, 0x30, 0xed, 0xb5, 0xce, 0x6a, + 0x91, 0xf7, 0x41, 0xf4, 0xaf, 0xd1, 0x05, 0x1f, 0x7b, 0xf2, + 0xa1, 0x0d, 0x52, 0x18, 0x20, 0xc1, 0x60, 0x33, 0xee, 0xf6, + 0x79, 0xcd, 0x8c, 0xed, 0x7c, 0x3c, 0xe4, 0xbe, 0xe9, 0xdd, + 0xef, 0x16, 0xf2, 0x2a, 0x25, 0xf8, 0x1e, 0x99, 0xb5, 0x76, + 0x7d, 0x53, 0xbe, 0x83, 0x56, 0x70, 0x01, 0xbd, 0x03, 0xee, + 0x8a, 0xfa, 0xc8, 0x85, 0x3c, 0x84, 0x7e, 0xe2, 0x50, 0xc4, + 0x54, 0x44, 0xf0, 0x83, 0xd3, 0x61, 0xb8, 0xfc, 0x71, 0xa1, + 0x64, 0x51, 0x7f, 0x8d, 0x0a, 0xf9, 0xeb, 0xe9, 0x1e, 0x28, + 0x22, 0xa5, 0x17, 0xfe, 0xa7, 0xbd, 0xed, 0xa3, 0x80, 0x3b, + 0x44, 0xf5, 0x41, 0x55, 0xcc, 0xd3, 0x97, 0xe8, 0x96, 0xc3, + 0xfc, 0x18, 0x7d, 0xd4, 0x81, 0x54, 0x1e, 0xc8, 0xfe, 0xf8, + 0x22, 0x78, 0x66, 0x2c, 0x39, 0xc1, 0x2a, 0x04, 0xf4, 0x26, + 0x82, 0xe5, 0xf0, 0x8f, 0xfc, 0xcc, 0xd3, 0x46, 0xb6, 0xa3, + 0x0b, 0xc7, 0x93, 0x20, 0xac, 0xf3, 0x83, 0x8a, 0xaa, 0xb2, + 0x43, 0x61, 0x3d, 0xed, 0x47, 0x67, 0xa4, 0xc5, 0x45, 0x3c, + 0x25, 0x01, 0x84, 0x44, 0xef, 0x01, 0xf8, 0xa4, 0xf2, 0x3a, + 0xd5, 0x7e, 0x6f, 0xcb, 0x22, 0x68, 0x1c, 0x9a, 0x85, 0x2b, + 0xb5, 0x3c, 0x47, 0x09, 0x1c, 0x91, 0x24, 0xba, 0xc0, 0xc9, + 0xf4, 0x74, 0x95, 0x68, 0x86, 0x9a, 0x5b, 0x7b, 0x45, 0x3d, + 0xed, 0xaf, 0xf4, 0x35, 0xf2, 0xcf, 0x4d, 0x50, 0xcd, 0xbd, + 0x87, 0xf5, 0x01, 0x46, 0xfa, 0x90, 0x03, 0x04, 0x05, 0xf1, + 0x5d, 0xcd, 0x9b, 0x4c, 0x44, 0x4f, 0x88, 0xc5, 0xd1, 0xde, + 0xf0, 0x74, 0xb0, 0xc2, 0x13, 0x07, 0xa7, 0xd3, 0x83, 0xf8, + 0xbf, 0x48, 0x89, 0xaa, 0x8b, 0xe3, 0x4f, 0xd9, 0x5e, 0x69, + 0xe2, 0xc3, 0x08, 0xd1, 0x55, 0xe4, 0x36, 0xba, 0x8a, 0x1b, + 0x65, 0xa4, 0x4d, 0xed, 0xaf, 0x57, 0x32, 0x4c, 0x3a, 0xd7, + 0xec, 0xc0, 0x6e, 0x6f, 0x8b, 0x74, 0x3f, 0x99, 0xf2, 0x40, + 0x41, 0xfc, 0xc3, 0x88, 0x95, 0xd5, 0x3a, 0xdc, 0xe7, 0x9d, + 0x8c, 0xba, 0x7a, 0x2a, 0x49, 0x85, 0x8e, 0x2b, 0x51, 0x91, + 0x5e, 0xdb, 0x5d, 0x88, 0xde, 0x06, 0x8d, 0xd5, 0x20, 0x17, + 0xf6, 0x28, 0x60, 0x80, 0xa0, 0x55, 0xf1, 0xd9, 0x8b, 0x94, + 0x57, 0xf4, 0x8e, 0x64, 0xce, 0x50, 0xf4, 0x1c, 0x91, 0xbe, + 0x70, 0xda, 0xc3, 0xdf, 0x32, 0xb0, 0x0f, 0x21, 0x8f, 0x0b, + 0x94, 0x6d, 0x4b, 0xb1, 0x7f, 0x15, 0x81, 0x1e, 0x6c, 0xdd, + 0xe4, 0xac, 0x86, 0xd3, 0x90, 0x04, 0xad, 0xa3, 0xe0, 0x17, + 0x34, 0xf1, 0x5c, 0xf5, 0xf4, 0xe3, 0x02, 0x1b, 0x3a, 0x2f, + 0x91, 0x6b, 0xf7, 0x9e, 0x5f, 0xba, 0xda, 0x5a, 0xad, 0x31, + 0x5b, 0xe1, 0xd4, 0x07, 0xb3, 0xdd, 0x92, 0xda, 0x19, 0xd9, + 0x5d, 0x8e, 0x2b, 0x64, 0x7d, 0xbe, 0x69, 0xe7, 0x6d, 0x23, + 0xeb, 0x08, 0x93, 0xb5, 0x43, 0xe4, 0xe2, 0x23, 0xc5, 0xcf, + 0x8c, 0x7a, 0xc6, 0xe5, 0xbb, 0x3f, 0x62, 0xfa, 0x94, 0x7b, + 0x06, 0x57, 0x59, 0xe6, 0x0a, 0x18, 0x1e, 0x63, 0x0d, 0xeb, + 0xdc, 0x6b, 0x5b, 0x61, 0x95, 0x14, 0x5c, 0x6a, 0xe6, 0x4b, + 0xe4, 0xb3, 0xef, 0xa7, 0xa2, 0xe9, 0x0a, 0x77, 0xd2, 0x93, + 0x96, 0xa5, 0xb2, 0x2d, 0xe4, 0x7f, 0x15, 0x8d, 0x3f, 0x28, + 0x90, 0xef, 0xb3, 0x53, 0x8a, 0x46, 0x97, 0xca, 0xe8, 0x10, + 0x5b, 0xd2, 0xfb, 0x26, 0xce, 0xec, 0x3f, 0xed, 0x65, 0x4f, + 0x03, 0xb4, 0x98, 0xfa, 0x38, 0x88, 0x51, 0x36, 0x48, 0xe0, + 0xd8, 0x1a, 0xc5, 0xf3, 0x7d, 0xfb, 0xf8, 0xb3, 0x99, 0x95, + 0x62, 0xb5, 0xee, 0x9b, 0xa6, 0x4b, 0x29, 0xde, 0x6a, 0xf1, + 0xab, 0xe7, 0x71, 0x41, 0x9a, 0x24, 0x8c, 0xf2, 0xec, 0xaf, + 0x57, 0x75, 0xf9, 0x51, 0x58, 0xf7, 0x12, 0xc3, 0x29, 0x94, + 0x9b, 0x4b, 0xd6, 0xcf, 0x53, 0x02, 0xb9, 0xde, 0x08, 0x95, + 0xf7, 0xf5, 0xc4, 0xdf, 0xa0, 0x66, 0x9c, 0x85, 0x93, 0x7c, + 0xe8, 0xc7, 0x76, 0x09, 0x9a, 0x8c, 0x3c, 0xfb, 0xa3, 0x8b, + 0x99, 0xfd, 0x9d, 0xea, 0xc9, 0x41, 0x57, 0x6a, 0x98, 0xa2, + 0x6b, 0x48, 0x93, 0xf9, 0x75, 0x97, 0x10, 0x0f, 0x9e, 0x5b, + 0x27, 0x06, 0x55, 0x5e, 0x69, 0x9c, 0xbb, 0xc7, 0xa1, 0xff, + 0xcc, 0xb3, 0x48, 0xda, 0x9f, 0x34, 0x7d, 0x3b, 0xea, 0xf3, + 0x87, 0x37, 0x4a, 0x03, 0x0e, 0xfd, 0x1a, 0xaf, 0xc1, 0x28, + 0xa0, 0x45, 0x55, 0x59, 0xc0, 0xd1, 0xff, 0x97, 0xc2, 0xd2, + 0x52, 0x83, 0xc3, 0x1e, 0xf3, 0xe1, 0xa1, 0x2a, 0x0f, 0x64, + 0x7f, 0x7c, 0x11, 0x3c, 0x33, 0x16, 0xfd, 0x81, 0x15, 0x02, + 0x7a, 0x13, 0xa2, 0x9b, 0xe1, 0x23, 0x7d, 0x48, 0xe0, 0x02, + 0xe3, 0x99, 0xcf, 0x87, 0xac, 0x26, 0x22, 0xc6, 0xa3, 0xf4, + 0xbb, 0x1e, 0xc2, 0xe5, 0x0e, 0xa9, 0x12, 0x5d, 0x60, 0x85, + 0x7a, 0x3a, 0xab, 0x34, 0xa4, 0x3a, 0xfe, 0xad, 0x79, 0x20, + 0xc1, 0x7e, 0x80, 0x44, 0xab, 0x8b, 0x1d, 0x6e, 0x92, 0xaf, + 0xa5, 0x55, 0xa4, 0x90, 0xc6, 0x8d, 0x2f, 0xd5, 0x71, 0x80, + 0x04, 0x89, 0xcb, 0x72, 0x1b, 0x5d, 0xa6, 0xe4, 0x4a, 0xd7, + 0xc4, 0xb9, 0xde, 0xeb, 0xa1, 0x0f, 0x36, 0x8f, 0x72, 0x56, + 0x43, 0x88, 0xa7, 0x8b, 0x10, 0xea, 0x7b, 0x14, 0x30, 0x40, + 0x50, 0xcb, 0x99, 0x8d, 0xa4, 0x4a, 0xca, 0x7a, 0xa8, 0xbb, + 0xc0, 0x72, 0x71, 0xf0, 0x83, 0x86, 0x46, 0x3d, 0x63, 0x93, + 0xbc, 0xfe, 0x31, 0x7d, 0xa9, 0xd4, 0x9a, 0x4f, 0xce, 0x5d, + 0x6d, 0x2d, 0xb7, 0xf9, 0xcc, 0x91, 0x6a, 0xe2, 0xb8, 0x8f, + 0xaa, 0x65, 0x74, 0x08, 0xcc, 0x69, 0x9c, 0x13, 0x67, 0x76, + 0xfe, 0x97, 0xd3, 0xc6, 0xe0, 0x5a, 0xab, 0x0a, 0x2e, 0x35, + 0x73, 0xc4, 0x72, 0xb8, 0x96, 0xb2, 0x51, 0x95, 0x05, 0xda, + 0x69, 0xa8, 0xac, 0xc4, 0x6b, 0x86, 0xc8, 0x01, 0xbd, 0x6f, + 0x04, 0xab, 0x9a, 0x9b, 0x62, 0x8e, 0x50, 0x33, 0xad, 0xab, + 0x31, 0xbb, 0x77, 0xac, 0x53, 0xc4, 0xf5, 0x6f, 0x35, 0x99, + 0xb4, 0x92, 0xd9, 0xc1, 0xae, 0x1a, 0xdf, 0xfc, 0x75, 0x98, + 0xa2, 0xfa, 0x25, 0xe0, 0x07, 0x9f, 0x0d, 0xb6, 0x81, 0x14, + 0xaf, 0x75, 0x85, 0xc1, 0xca, 0x35, 0x4c, 0x51, 0xd4, 0x24, + 0xa8, 0x9d, 0xdb, 0xaa, 0x08, 0xe6, 0xb0, 0x7a, 0xbc, 0x0f, + 0x61, 0x93, 0x07, 0xb5, 0x09, 0xcf, 0x30, 0xa3, 0x3d, 0x1d, + 0xb4, 0x1a, 0xb1, 0x15, 0xe6, 0x32, 0xde, 0x3e, 0xe9, 0x1e, + 0xf8, 0x0b, 0x9f, 0xa1, 0xeb, 0x01, 0x3d, 0xe8, 0xb2, 0xa4, + 0x08, 0x75, 0xdc, 0x0a, 0x18, 0x20, 0x28, 0x84, 0xad, 0xa7, + 0x52, 0x25, 0x65, 0x3d, 0xb3, 0xcb, 0x52, 0x48, 0x63, 0xa7, + 0xf6, 0x8b, 0xd9, 0x40, 0x02, 0xa5, 0x84, 0x39, 0xec, 0xcf, + 0xb4, 0x05, 0x17, 0xfb, 0xd8, 0x62, 0x39, 0x5c, 0x4b, 0x59, + 0xc9, 0xab, 0xe3, 0x6d, 0xd5, 0x54, 0xb5, 0x6a, 0x4d, 0xc6, + 0x67, 0xcf, 0xd7, 0xf7, 0xba, 0x9d, 0x66, 0xa9, 0x35, 0x71, + 0x5c, 0xa6, 0xb6, 0xdb, 0xa3, 0x81, 0x65, 0xfb, 0x26, 0xc9, + 0x6a, 0x12, 0x54, 0xaf, 0x8c, 0x55, 0x04, 0x73, 0xb7, 0xb4, + 0xf9, 0xbc, 0xda, 0x56, 0xc8, 0x62, 0x9b, 0xd6, 0xfb, 0xad, + 0x5a, 0x49, 0x8d, 0x81, 0xb8, 0x84, 0x29, 0x24, 0xd0, 0xb2, + 0x7b, 0xa4, 0x8d, 0x20, 0x01, 0xb3, 0x42, 0xfd, 0x76, 0x86, + 0xb9, 0xeb, 0x73, 0x19, 0x6f, 0x1f, 0x95, 0x0f, 0x7c, 0xe4, + 0xae, 0xb1, 0x94, 0xe1, 0xff, 0x74, 0xba, 0x5a, 0x9d, 0x5e, + 0x6d, 0x2b, 0x64, 0x31, 0xac, 0x6b, 0x9c, 0xb7, 0x2d, 0xc5, + 0xa7, 0xa1, 0xbb, 0x35, 0xc7, 0x63, 0xd2, 0x86, 0x8a, 0x9a, + 0x5d, 0xaf, 0x33, 0xb5, 0xfb, 0xd9, 0x2e, 0x53, 0xbc, 0xfb, + 0x82, 0xd0, 0x69, 0x43, 0x45, 0x4d, 0xcf, 0xb6, 0xf8, 0xbb, + 0x9c, 0x8d, 0x17, 0xc8, 0xbd, 0x94, 0xd8, 0xed, 0xd6, 0xee, + 0xab, 0xe6, 0x3e, 0x72, 0x57, 0xb9, 0x4a, 0x91, 0x9e, 0x3a, + 0xbe, 0x25, 0x36, 0xaa, 0xd4, 0xda, 0x5a, 0xd8, 0xee, 0xfd, + 0x65, 0xbf, 0xf3, 0xb5, 0xc6, 0xef, 0xbf, 0x4a, 0x6c, 0x97, + 0x6b, 0x77, 0xb4, 0x73, 0x1f, 0x39, 0xca, 0xbd, 0x25, 0xa9, + 0x4f, 0x1d, 0xc0, 0xc7, 0x66, 0x6e, 0x80, 0x9e, 0xaa, 0x5b, + 0x3d, 0x9c, 0xdd, 0x43, 0x82, 0x14, 0xa2, 0xbe, 0xc1, 0xa8, + 0x3c, 0x53, 0x3f, 0x33, 0x44, 0xf0, 0xcc, 0x58, 0x72, 0x41, + 0x54, 0x08, 0x2b, 0x4c, 0xc2, 0x19, 0xd2, 0x14, 0x3d, 0x07, + 0xb5, 0xce, 0x1c, 0xd7, 0x40, 0x47, 0xed, 0x2c, 0x73, 0x99, + 0xc3, 0x76, 0x88, 0x29, 0x82, 0xaa, 0x5b, 0x65, 0xed, 0x13, + 0xef, 0x45, 0x3b, 0x30, 0xfa, 0x6b, 0xc4, 0xb8, 0xcd, 0x9a, + 0x39, 0x6f, 0x94, 0xb2, 0x7f, 0x0a, 0x24, 0x4b, 0x5c, 0x64, + 0xc3, 0xf0, 0xc5, 0xd7, 0x97, 0xa7, 0x86, 0xc2, 0x7a, 0x19, + 0x8e, 0xce, 0x8b, 0x49, 0x8a, 0x78, 0x4a, 0x02, 0xc6, 0x66, + 0x79, 0xe0, 0x84, 0xf6, 0x8b, 0x27, 0x5e, 0x41, 0xb9, 0x4f, + 0x33, 0x5c, 0x12, 0xd7, 0xc7, 0x09, 0x23, 0xdd, 0x3b, 0x5b, + 0x65, 0x8c, 0xaf, 0x85, 0x16, 0x4d, 0xe5, 0x40, 0x9b, 0x25, + 0xc8, 0x39, 0xf3, 0x45, 0x31, 0xbf, 0xd6, 0x4a, 0xb9, 0x73, + 0xec, 0x53, 0xfd, 0xf4, 0x60, 0x22, 0xc9, 0x56, 0xa9, 0x78, + 0x8e, 0x12, 0x38, 0xe1, 0x48, 0xb7, 0x43, 0x51, 0x2b, 0xe8, + 0xe9, 0xd0, 0xca, 0xe7, 0x47, 0x3f, 0x8c, 0x26, 0xc9, 0xdf, + 0x98, 0x38, 0x71, 0x57, 0x92, 0xcc, 0xb1, 0x05, 0xcb, 0x88, + 0x1d, 0x02, 0x33, 0x8b, 0x27, 0x74, 0x69, 0xfc, 0xde, 0x55, + 0x44, 0xd0, 0x38, 0xf7, 0xcc, 0x46, 0x58, 0xb1, 0x88, 0x4e, + 0xe8, 0xa3, 0xfb, 0xe5, 0x15, 0x5b, 0x23, 0x84, 0x01, 0x6c, + 0xcd, 0x29, 0x02, 0x8c, 0x37, 0xe3, 0x06, 0x08, 0x0a, 0x21, + 0xba, 0x59, 0xf5, 0x98, 0x88, 0x9e, 0xce, 0x98, 0xec, 0xcb, + 0x35, 0xd7, 0xf7, 0x36, 0xda, 0xae, 0x88, 0x5f, 0x4c, 0xbc, + 0xd0, 0x4b, 0xcf, 0xf7, 0xb6, 0xf6, 0x8a, 0x7a, 0x19, 0x9d, + 0x2b, 0x6a, 0x27, 0x5d, 0x9a, 0xa0, 0x59, 0xb9, 0xd0, 0xf8, + 0x8f, 0x38, 0x21, 0xdc, 0x52, 0x79, 0xf6, 0x81, 0xbf, 0x63, + 0x7c, 0x17, 0xe5, 0x45, 0xd1, 0x97, 0xd5, 0x05, 0x9e, 0x71, + 0xbc, 0xd2, 0x07, 0x45, 0x10, 0x61, 0xaa, 0x0b, 0x6c, 0xb7, + 0xd2, 0x26, 0x3b, 0x42, 0x9c, 0x45, 0x4d, 0xec, 0xd7, 0xca, + 0x22, 0x67, 0x13, 0x2f, 0x34, 0x62, 0xd3, 0x49, 0x61, 0x7f, + 0x23, 0xe8, 0xa3, 0x47, 0x26, 0x0e, 0x8d, 0x65, 0xc5, 0x33, + 0xbd, 0x90, 0xd4, 0x87, 0x24, 0xcc, 0x98, 0x2d, 0x6c, 0x90, + 0xb4, 0x17, 0x46, 0x6b, 0xa2, 0x67, 0x84, 0x0b, 0xd5, 0xe8, + 0x7e, 0xf1, 0x27, 0x80, 0x82, 0x3b, 0x45, 0xd3, 0xe9, 0x69, + 0x74, 0x7b, 0x0d, 0xf9, 0xd6, 0x59, 0x90, 0xb6, 0x25, 0xb4, + 0x73, 0x05, 0x95, 0x5c, 0xdb, 0x6f, 0xcd, 0x5f, 0x55, 0x2c, + 0xd7, 0x36, 0xca, 0x8b, 0x9a, 0x19, 0x9d, 0xae, 0x64, 0x98, + 0x74, 0x6d, 0x1b, 0x43, 0xdc, 0xde, 0xd8, 0x06, 0x1a, 0x13, + 0x90, 0xfd, 0x2e, 0x68, 0x72, 0x6e, 0x8e, 0x73, 0x03, 0xf7, + 0x27, 0xd9, 0xd9, 0x69, 0x40, 0x2e, 0x2f, 0x50, 0xc0, 0xc3, + 0x83, 0xaa, 0x21, 0x71, 0xd5, 0xeb, 0xae, 0x2b, 0xda, 0xd8, + 0xae, 0x69, 0x2d, 0x64, 0x31, 0xfd, 0x53, 0x25, 0x13, 0x77, + 0x6c, 0xcf, 0xf6, 0xfe, 0xdb, 0xb7, 0xf4, 0x54, 0x92, 0xc9, + 0xdf, 0x56, 0xa2, 0xe1, 0xbc, 0x75, 0xba, 0xd3, 0x7f, 0x0c, + 0xdc, 0x79, 0xb1, 0xe7, 0x29, 0x0c, 0x10, 0x81, 0x30, 0xf8, + 0x77, 0x7b, 0xdd, 0x87, 0x46, 0x97, 0xdd, 0x16, 0xeb, 0xda, + 0x96, 0xa1, 0xfe, 0x2a, 0xc1, 0x3c, 0xd8, 0x79, 0x0b, 0x9b, + 0xcf, 0x65, 0xde, 0xa7, 0x05, 0x9d, 0x94, 0x95, 0x0f, 0x14, + 0x11, 0xb3, 0xea, 0x7f, 0xb2, 0xbf, 0x97, 0xb0, 0xdf, 0xc8, + 0x5f, 0xa0, 0x2b, 0x38, 0xe1, 0xbf, 0xe0, 0x77, 0x45, 0x7d, + 0x64, 0xa3, 0x1e, 0x42, 0xe0, 0xb9, 0x77, 0xc2, 0x01, 0x1a, + 0x99, 0x1f, 0x68, 0xa6, 0x19, 0x03, 0xbd, 0x12, 0x2c, 0x8b, + 0xe1, 0xd6, 0x2d, 0xff, 0xbe, 0xb7, 0x77, 0xb4, 0x99, 0x62, + 0xb6, 0x01, 0x6b, 0x0e, 0xa5, 0x79, 0xe2, 0x67, 0xc3, 0xb8, + 0xbc, 0x83, 0x86, 0x8a, 0x49, 0xed, 0x84, 0x07, 0xd2, 0x2a, + 0xfd, 0xac, 0xe3, 0x08, 0x99, 0x85, 0x03, 0x2e, 0x68, 0x21, + 0xb8, 0x29, 0x2b, 0x05, 0x04, 0x36, 0x74, 0x5e, 0xe4, 0xc6, + 0xdc, 0x36, 0xb8, 0xeb, 0xa7, 0xf6, 0x2a, 0x30, 0xe0, 0x0b, + 0x63, 0x62, 0x4d, 0xc5, 0xe5, 0xa9, 0x86, 0x0b, 0x07, 0x46, + 0x49, 0x5d, 0xdb, 0xf4, 0x4f, 0x09, 0xb5, 0x7e, 0xc4, 0x37, + 0xe6, 0x18, 0x68, 0x4c, 0x05, 0x72, 0xb8, 0x63, 0x0b, 0x7b, + 0x7d, 0x0f, 0x0c, 0x5a, 0x9c, 0xe2, 0xe7, 0x77, 0x32, 0x71, + 0xba, 0xdf, 0x56, 0xc8, 0xfa, 0xbf, 0xd2, 0x0d, 0xda, 0x46, + 0x15, 0x10, 0xe8, 0x47, 0xe2, 0xe9, 0xb0, 0x3b, 0xe5, 0x0e, + 0xec, 0x49, 0x28, 0x13, 0xc2, 0xf2, 0xee, 0x17, 0xe9, 0x28, + 0xb8, 0xd4, 0x0f, 0x96, 0x0b, 0xa5, 0x1d, 0x8d, 0x87, 0x11, + 0x14, 0xee, 0x67, 0xe5, 0xea, 0x99, 0x56, 0x93, 0x0d, 0xa2, + 0xfa, 0x9b, 0xcd, 0x02, 0xb5, 0x17, 0xad, 0xca, 0x3f, 0x30, + 0xeb, 0xf6, 0x0c, 0xae, 0xb2, 0x0f, 0x14, 0x30, 0x3c, 0xc6, + 0x1a, 0x15, 0x7b, 0xd6, 0xb6, 0xc2, 0xec, 0x38, 0x49, 0x1d, + 0x09, 0xca, 0xdb, 0xe7, 0xae, 0xdf, 0xd1, 0x1b, 0x1c, 0x82, + 0x8f, 0x59, 0xed, 0x57, 0x13, 0x20, 0xb6, 0x67, 0x35, 0x4c, + 0x5f, 0x1b, 0x7e, 0x19, 0xca, 0x9e, 0x06, 0xab, 0xee, 0xe6, + 0xfd, 0x67, 0xb4, 0x53, 0xc4, 0x72, 0x8f, 0x94, 0x4c, 0x1f, + 0x73, 0xba, 0x5e, 0x7e, 0xef, 0x89, 0xa7, 0x5a, 0x0b, 0xfe, + 0x2a, 0xd9, 0x7e, 0x50, 0xe3, 0x1d, 0xa5, 0xa6, 0xd7, 0x8c, + 0xf0, 0x86, 0x9e, 0x94, 0xa0, 0x58, 0x61, 0x3d, 0xa3, 0xbb, + 0x7b, 0x23, 0x43, 0x11, 0x6b, 0x70, 0xf1, 0xe9, 0xc4, 0xa9, + 0x1f, 0xf5, 0x8f, 0x96, 0x52, 0x7f, 0xd4, 0x21, 0x95, 0x0d, + 0xe2, 0x82, 0xf2, 0x58, 0x2a, 0xee, 0x1d, 0xc1, 0x7e, 0xa8, + 0x82, 0xf0, 0xe6, 0x27, 0x2c, 0x29, 0xba, 0x57, 0xf3, 0x37, + 0x70, 0xd3, 0xa2, 0x6c, 0x90, 0x03, 0x73, 0x34, 0x49, 0x25, + 0xfa, 0x35, 0x33, 0xa5, 0xf4, 0xf9, 0x35, 0x60, 0x19, 0xa9, + 0x5f, 0xd4, 0xe1, 0x2d, 0x82, 0x2b, 0x9d, 0x61, 0x0a, 0x3e, + 0xf5, 0x96, 0x6f, 0x5d, 0xa6, 0x04, 0xb1, 0x7f, 0x10, 0xe9, + 0x2d, 0x29, 0x4b, 0x7d, 0x83, 0xcc, 0xf6, 0x27, 0x81, 0x1a, + 0xa4, 0x30, 0x40, 0x41, 0xc0, 0x66, 0x1f, 0x2f, 0xf2, 0x59, + 0xdb, 0x19, 0xf7, 0x48, 0xdb, 0x27, 0x1b, 0x9d, 0xae, 0xea, + 0x31, 0xa2, 0xb0, 0x2d, 0x24, 0x45, 0x52, 0xeb, 0xf8, 0x78, + 0x0b, 0xbf, 0x11, 0x79, 0x1d, 0x2c, 0x27, 0x54, 0x4a, 0x33, + 0x3c, 0xf1, 0xa9, 0xec, 0xf9, 0x17, 0x51, 0x82, 0xae, 0xd4, + 0xf3, 0x87, 0xd6, 0x90, 0xe5, 0x31, 0xea, 0xed, 0x20, 0x1e, + 0xfa, 0xa6, 0xbf, 0xc5, 0xac, 0xe0, 0x02, 0xb9, 0x06, 0x1f, + 0xd7, 0x37, 0x53, 0xc9, 0x78, 0xcb, 0xfb, 0xc9, 0xe5, 0xf8, + 0x13, 0x4d, 0xec, 0x12, 0xf7, 0xdb, 0x78, 0x35, 0x85, 0xd5, + 0xf1, 0x39, 0xfc, 0x07, 0xa0, 0x4b, 0xa8, 0x88, 0x23, 0xc5, + 0x65, 0xc2, 0xb3, 0x3b, 0xe2, 0x81, 0xc8, 0xa2, 0xfd, 0x68, + 0xfa, 0x76, 0x17, 0x25, 0xcd, 0x6e, 0x94, 0x06, 0x1c, 0x39, + 0x34, 0x9d, 0x41, 0x50, 0xfe, 0xd9, 0x14, 0x31, 0x15, 0x11, + 0x3c, 0x50, 0x44, 0x89, 0x2e, 0x3f, 0x8d, 0xb9, 0x19, 0x85, + 0xff, 0xb6, 0x4e, 0x0c, 0xaa, 0xbc, 0xd2, 0xfb, 0xb5, 0x4d, + 0x81, 0x3d, 0x5b, 0xa5, 0x90, 0x77, + }, + { + /* 10 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x77, 0x44, 0x94, + 0x60, 0x7c, 0x12, 0x8d, 0x2e, 0x2d, 0xbc, 0xeb, 0x11, 0x43, + 0x48, 0x8e, 0x43, 0xee, 0x88, 0xeb, 0xc0, 0xf8, 0x24, 0xd9, + 0x5c, 0x5a, 0xbb, 0x15, 0x22, 0x86, 0x90, 0xdf, 0x83, 0x99, + 0xcc, 0x7f, 0xa0, 0x84, 0x36, 0x54, 0x72, 0x77, 0x07, 0xfe, + 0x33, 0xc5, 0xd8, 0x51, 0x86, 0x1f, 0xd3, 0x15, 0x43, 0x33, + 0x48, 0x71, 0xb8, 0xb4, 0xb5, 0x2a, 0x44, 0xcf, 0xe3, 0x7d, + 0x46, 0x68, 0x97, 0x81, 0x23, 0x4f, 0x5a, 0xfc, 0x96, 0x99, + 0x09, 0xc1, 0x55, 0x8c, 0xab, 0xf3, 0xc5, 0xf1, 0x5b, 0xfe, + 0x83, 0xcb, 0x6c, 0xa8, 0xe4, 0xee, 0x0e, 0x3f, 0x66, 0x49, + 0x73, 0xa2, 0x05, 0x86, 0x1f, 0x6a, 0xe3, 0xb7, 0x7e, 0x25, + 0xca, 0xc3, 0xb2, 0xd4, 0x77, 0x0a, 0x3b, 0x2c, 0xcf, 0x3e, + 0x65, 0x2a, 0x86, 0x66, 0x90, 0xe2, 0xb3, 0xab, 0xa9, 0x54, + 0x88, 0x5d, 0x05, 0xfa, 0x0f, 0x49, 0x21, 0xbe, 0xe6, 0x1a, + 0x82, 0x6f, 0x9d, 0x86, 0x15, 0xbf, 0x99, 0x1e, 0x4d, 0x74, + 0x8c, 0xd0, 0xed, 0xc1, 0x46, 0x9e, 0xb4, 0x3b, 0xef, 0xf1, + 0x12, 0x41, 0xaa, 0xdb, 0x95, 0x25, 0x4c, 0xa7, 0xa9, 0x55, + 0x26, 0xe2, 0xa6, 0xb6, 0xc1, 0xdc, 0xae, 0xaa, 0xbb, 0x98, + 0xdd, 0xab, 0x49, 0x21, 0xb6, 0x3f, 0xc5, 0x55, 0xd8, 0x93, + 0x0b, 0x1f, 0x1c, 0x7e, 0xcc, 0x92, 0xe6, 0x87, 0x89, 0x56, + 0xf2, 0xab, 0xa5, 0x29, 0xca, 0x1e, 0x25, 0x32, 0xa0, 0x95, + 0xdd, 0xd1, 0xae, 0x09, 0x0a, 0xcf, 0x3e, 0xd4, 0x05, 0xad, + 0xfc, 0x4a, 0x57, 0x45, 0xa7, 0x6b, 0xee, 0x14, 0x76, 0x58, + 0xca, 0xb8, 0x7a, 0x40, 0x65, 0xd1, 0xee, 0xc7, 0x79, 0x68, + 0x1b, 0x80, 0xff, 0x57, 0x3e, 0xd6, 0x5d, 0x7c, 0xca, 0x54, + 0xcf, 0xcc, 0xe3, 0x07, 0xa5, 0x95, 0x91, 0xa8, 0xd3, 0xba, + 0x0a, 0x37, 0x9d, 0x0b, 0x8e, 0xc0, 0xaf, 0xb0, 0xf1, 0x8a, + 0x8b, 0xb8, 0x2d, 0x43, 0xc2, 0xf9, 0x42, 0xb9, 0x1e, 0x92, + 0x42, 0xbf, 0x0f, 0x34, 0xc7, 0xde, 0xf9, 0xcf, 0x2a, 0xbd, + 0xf1, 0x3c, 0x9a, 0xe8, 0xde, 0xe5, 0x06, 0x2b, 0x6f, 0x48, + 0xd5, 0x53, 0xd7, 0xe2, 0x96, 0x56, 0xe0, 0x7f, 0xd2, 0x66, + 0xdb, 0x63, 0x19, 0x41, 0x8c, 0xff, 0xab, 0x76, 0x1d, 0x21, + 0x24, 0x82, 0x97, 0x75, 0xe9, 0x4a, 0x1b, 0x14, 0x5d, 0xd5, + 0xec, 0x83, 0xb9, 0xfb, 0x33, 0x0c, 0x98, 0x69, 0x86, 0x36, + 0xa1, 0xc4, 0x98, 0x8d, 0x91, 0xaa, 0x4c, 0x07, 0x8f, 0xaf, + 0x41, 0x7b, 0x9f, 0x97, 0xb5, 0xf3, 0x79, 0x95, 0x58, 0xfa, + 0xd5, 0x3e, 0x2c, 0x7b, 0x9d, 0x22, 0x6f, 0x56, 0x23, 0x7c, + 0xa4, 0xb0, 0x31, 0x1b, 0x92, 0x42, 0xaf, 0x7e, 0x49, 0xaa, + 0x73, 0xe5, 0x16, 0x3e, 0x38, 0xfc, 0x5b, 0xe7, 0x0f, 0xcd, + 0x52, 0x35, 0xeb, 0xea, 0x29, 0xd6, 0x61, 0x68, 0x38, 0x13, + 0x84, 0x17, 0x4a, 0xa4, 0x47, 0x43, 0xd1, 0xac, 0x27, 0x95, + 0x89, 0x52, 0x57, 0x3c, 0x4a, 0x64, 0x83, 0xe9, 0x79, 0x61, + 0x9f, 0x12, 0x11, 0xdb, 0x63, 0x01, 0xe9, 0x2e, 0x45, 0xb1, + 0x64, 0x49, 0x3f, 0x02, 0x68, 0x22, 0xd7, 0x9c, 0x14, 0x5d, + 0x7c, 0x6b, 0x0a, 0x99, 0x3b, 0x94, 0xae, 0x8a, 0x8d, 0xd6, + 0x1f, 0x28, 0xec, 0xb0, 0xd4, 0x2a, 0x38, 0xff, 0x6a, 0xe5, + 0x29, 0x19, 0x80, 0xa7, 0x31, 0x3d, 0x0e, 0x6b, 0xa4, 0x3e, + 0x57, 0xb3, 0xf4, 0x80, 0xca, 0x61, 0x1f, 0x4d, 0xf2, 0xd0, + 0x36, 0xc3, 0x3d, 0xae, 0x7c, 0x6f, 0x97, 0xc4, 0xb0, 0x14, + 0xaa, 0x1d, 0x0d, 0xc0, 0xdc, 0xfd, 0x8a, 0x28, 0x2c, 0xed, + 0x34, 0xe1, 0xba, 0xf8, 0x57, 0xa8, 0x5d, 0x5b, 0x05, 0x0e, + 0x89, 0xe9, 0xe1, 0x93, 0x65, 0xb7, 0x14, 0x6e, 0x7a, 0x8f, + 0x13, 0x3c, 0x3d, 0x27, 0x17, 0x83, 0xa7, 0xc4, 0x5d, 0x78, + 0x74, 0xf4, 0x5c, 0xe0, 0xf9, 0x16, 0xdf, 0x43, 0x9d, 0xa3, + 0x21, 0xd7, 0xd5, 0xb3, 0x5a, 0x86, 0x47, 0x31, 0x84, 0xb1, + 0x39, 0x61, 0x9b, 0xd7, 0xfd, 0xdf, 0x33, 0x5a, 0xfb, 0x9e, + 0xe6, 0x6d, 0x56, 0x72, 0xcc, 0x3f, 0x3c, 0xe7, 0x84, 0xbd, + 0x1e, 0x68, 0x4d, 0x7f, 0x31, 0x5d, 0x54, 0xb9, 0x21, 0x78, + 0xf7, 0x13, 0xfc, 0x90, 0xc0, 0x29, 0x7e, 0x14, 0x5f, 0xf2, + 0x1f, 0x70, 0xe8, 0x52, 0x30, 0x3b, 0xbf, 0x9d, 0x7f, 0x09, + 0x0c, 0x56, 0xde, 0x90, 0x69, 0xa6, 0x6d, 0x07, 0xef, 0xac, + 0x03, 0xfe, 0x67, 0xcc, 0xbf, 0x7e, 0x48, 0xc2, 0xbe, 0xec, + 0x7b, 0x2b, 0x43, 0x2a, 0x53, 0x47, 0x12, 0xbd, 0x2f, 0x42, + 0x75, 0xc6, 0x32, 0x82, 0xdb, 0x3d, 0x95, 0xec, 0x3a, 0x42, + 0x48, 0xc7, 0xed, 0xea, 0x11, 0x94, 0xb5, 0xb1, 0x76, 0x16, + 0xbb, 0x41, 0x87, 0x61, 0x14, 0x6f, 0xf4, 0x2c, 0xfc, 0xa9, + 0x59, 0x1a, 0x36, 0x28, 0xba, 0x69, 0x1b, 0xc5, 0xb1, 0x35, + 0x66, 0x18, 0xf3, 0xd2, 0xcf, 0x6c, 0x81, 0x4b, 0xf6, 0x5f, + 0xfe, 0xfd, 0x7b, 0xb9, 0xa3, 0xb8, 0x48, 0x35, 0x4f, 0x39, + 0xde, 0x2f, 0xc9, 0xc5, 0xf3, 0xd9, 0xe1, 0x97, 0x98, 0x0e, + 0xdd, 0x9d, 0x82, 0xf6, 0xfd, 0xed, 0xa9, 0x25, 0xf2, 0xe9, + 0x33, 0xae, 0xa5, 0x03, 0xf8, 0x72, 0xcf, 0x10, 0xac, 0xdb, + 0x41, 0x06, 0xb8, 0x66, 0xba, 0x67, 0xb0, 0x37, 0x69, 0x7c, + 0x58, 0xf6, 0xf9, 0x44, 0xde, 0xac, 0x46, 0xf8, 0x8b, 0xa3, + 0x62, 0x36, 0x70, 0x40, 0x2d, 0xe8, 0x38, 0x8a, 0xeb, 0xc9, + 0xf0, 0x81, 0xfa, 0x13, 0x9a, 0xe0, 0x2a, 0xb8, 0xe7, 0x84, + 0x9d, 0xfc, 0x92, 0x97, 0xe6, 0x09, 0x2c, 0x7c, 0x70, 0x3b, + 0xb6, 0x0d, 0x1e, 0x59, 0x27, 0xf3, 0xd9, 0x68, 0xf2, 0xeb, + 0xf4, 0x84, 0x02, 0x51, 0xcc, 0xd0, 0xa7, 0x4e, 0x56, 0xd7, + 0xa4, 0x6a, 0x15, 0x17, 0x52, 0x6f, 0xc2, 0xd0, 0x70, 0x26, + 0xcb, 0x2e, 0x94, 0x8b, 0x8e, 0x86, 0x64, 0x1d, 0x51, 0x83, + 0x32, 0x13, 0xd0, 0x5d, 0x5e, 0x0b, 0x77, 0xc5, 0x85, 0xc8, + 0xc6, 0x08, 0x61, 0x9b, 0x4e, 0xe9, 0xd1, 0xa4, 0xae, 0x78, + 0x94, 0xc8, 0xc5, 0x11, 0xf2, 0xc2, 0xfd, 0x24, 0xa1, 0xec, + 0x0a, 0x7d, 0xb1, 0xd8, 0xbc, 0xf5, 0xba, 0xe5, 0x79, 0xfa, + 0xe3, 0x81, 0xb5, 0xaa, 0x22, 0x75, 0xc6, 0x02, 0x11, 0x5c, + 0x8a, 0xa1, 0xc8, 0x92, 0x7e, 0x04, 0xd0, 0x44, 0x6d, 0xfb, + 0xe2, 0x02, 0x82, 0x96, 0x71, 0x20, 0x98, 0x2c, 0xe6, 0xbf, + 0xc2, 0xef, 0xc1, 0x07, 0x25, 0x75, 0x28, 0xba, 0xf8, 0xd6, + 0x14, 0xf1, 0x76, 0xeb, 0x9f, 0xd7, 0xd9, 0x6f, 0x3e, 0x50, + 0x1b, 0xa3, 0xe8, 0xcd, 0xbc, 0x42, 0x74, 0x8d, 0x64, 0x66, + 0xb1, 0xfa, 0x65, 0x84, 0x2f, 0x13, 0x53, 0x2d, 0x6b, 0x54, + 0x70, 0x3d, 0xd4, 0x09, 0x52, 0x32, 0xc3, 0x8d, 0x62, 0x7a, + 0x1c, 0xd6, 0x8b, 0x7c, 0xab, 0x23, 0x34, 0xa9, 0xb4, 0x75, + 0x40, 0xbf, 0xed, 0xa0, 0xde, 0x91, 0x0d, 0x95, 0xc3, 0xf2, + 0xae, 0xa5, 0x2b, 0xc3, 0x57, 0xc2, 0x3e, 0x9a, 0x27, 0x63, + 0x6c, 0x45, 0x7a, 0x9f, 0xf8, 0xde, 0x6e, 0xd2, 0x6f, 0x57, + 0x37, 0xbe, 0x2c, 0x17, 0x09, 0x4e, 0xd0, 0xae, 0x6b, 0xdc, + 0xb0, 0x50, 0xed, 0x4b, 0xa3, 0x28, 0x97, 0x3a, 0x1a, 0x43, + 0x7b, 0x39, 0xd7, 0x50, 0x58, 0x19, 0x68, 0x01, 0x2d, 0x3c, + 0xe7, 0xbc, 0xf7, 0x46, 0x08, 0xce, 0x55, 0x14, 0x6b, 0xbb, + 0x49, 0x5a, 0x20, 0x8f, 0xb7, 0x33, 0xae, 0x93, 0xba, 0xb6, + 0x0a, 0x1c, 0xd1, 0x11, 0x01, 0xe5, 0xca, 0xad, 0x28, 0xdc, + 0x77, 0x44, 0xea, 0x07, 0xda, 0xca, 0x18, 0x91, 0xff, 0x3c, + 0xbd, 0x0e, 0xdb, 0xee, 0x60, 0x52, 0xf4, 0xdd, 0x26, 0x78, + 0x7a, 0x4e, 0x2e, 0xc5, 0x8d, 0x4b, 0xba, 0xf0, 0xe8, 0x2b, + 0xb8, 0x03, 0x34, 0xaa, 0x62, 0xec, 0x1a, 0x32, 0x3c, 0x48, + 0xa3, 0x66, 0x06, 0x1b, 0xf9, 0x68, 0xf0, 0x8d, 0x31, 0x2c, + 0x7d, 0x86, 0xf9, 0x85, 0x42, 0x6d, 0x69, 0xa5, 0xb4, 0xcf, + 0x8e, 0x62, 0xcb, 0xa1, 0xf1, 0x5b, 0x39, 0x12, 0x99, 0xf9, + 0x50, 0xe0, 0x47, 0x88, 0x08, 0x24, 0x9f, 0x21, 0x83, 0x2f, + 0x72, 0xc2, 0xf5, 0x6d, 0x39, 0x7d, 0x66, 0xb4, 0x35, 0xff, + 0x0f, 0xda, 0xac, 0xe4, 0x5b, 0x7e, 0xb2, 0xb5, 0xb1, 0xf9, + 0x59, 0x01, 0x74, 0x39, 0x1b, 0xd2, 0xb3, 0x31, 0xbd, 0xa7, + 0x13, 0xf0, 0x78, 0x0d, 0xcb, 0xb9, 0x3c, 0xd0, 0x9a, 0xfe, + 0x62, 0xba, 0xa8, 0xb1, 0x42, 0xf0, 0x2d, 0x26, 0xb8, 0x7a, + 0x8f, 0x2d, 0x5c, 0xac, 0x88, 0x73, 0x4c, 0x97, 0x14, 0x5a, + 0x53, 0xb3, 0x65, 0xa8, 0x3b, 0xe3, 0x43, 0x52, 0xfc, 0x28, + 0xbe, 0x27, 0x3e, 0xe0, 0x13, 0xa4, 0x60, 0x76, 0xbd, 0xf9, + 0xfb, 0x94, 0x07, 0xc6, 0x9c, 0x54, 0xac, 0xaa, 0x10, 0xcd, + 0xaf, 0x4f, 0x71, 0x35, 0xf5, 0x77, 0xfe, 0x12, 0x18, 0xac, + 0x7f, 0xe3, 0xd2, 0x8f, 0xda, 0x0e, 0x1d, 0x9b, 0x06, 0x3f, + 0xce, 0x5b, 0x3e, 0x65, 0x5c, 0x38, 0x1f, 0x9f, 0xc0, 0x02, + 0xf4, 0x23, 0xa1, 0x70, 0x17, 0x7c, 0x86, 0xd5, 0xbd, 0xfc, + 0x90, 0x47, 0xbf, 0x1b, 0xf6, 0x56, 0x86, 0x54, 0xa6, 0x8e, + 0x24, 0xb9, 0x5e, 0x84, 0x7d, 0x8b, 0xd4, 0xd3, 0xdf, 0x67, + 0xe4, 0xdb, 0xa8, 0x79, 0x1a, 0x65, 0x35, 0xfa, 0x16, 0x0a, + 0xea, 0x4f, 0x64, 0xc7, 0x75, 0x7a, 0xe9, 0x1b, 0x74, 0x84, + 0x90, 0x4d, 0x19, 0x17, 0x22, 0xeb, 0x2a, 0x38, 0x20, 0x53, + 0x15, 0x06, 0xfb, 0x96, 0x5a, 0xa9, 0x2c, 0xa6, 0x08, 0x54, + 0x6a, 0x65, 0xa9, 0xa1, 0xec, 0x2c, 0xb5, 0x82, 0xcd, 0xc2, + 0x28, 0xde, 0x2b, 0x58, 0x3b, 0x91, 0xb2, 0x34, 0x69, 0xd6, + 0xa8, 0xb8, 0xd5, 0xfe, 0xdf, 0x4f, 0x06, 0xf3, 0x97, 0xb3, + 0x2a, 0xd2, 0xfa, 0xba, 0x6c, 0x50, 0xb7, 0xd2, 0x36, 0x49, + 0xa1, 0x6a, 0xcc, 0x30, 0x25, 0x67, 0x5d, 0xd8, 0xc1, 0x96, + 0xac, 0x27, 0xf3, 0x46, 0x56, 0x35, 0xb3, 0xe7, 0xe2, 0x1d, + 0x99, 0x8c, 0x4c, 0x9b, 0x89, 0x18, 0x2f, 0xbe, 0x3f, 0x39, + 0xf6, 0xb1, 0x85, 0xb3, 0x90, 0x6a, 0x9e, 0x72, 0x7f, 0x5e, + 0x51, 0x49, 0xef, 0xc9, 0x7b, 0xad, 0x96, 0xcd, 0x97, 0x3e, + 0xbe, 0x47, 0x22, 0x99, 0x6e, 0x1d, 0x19, 0xc7, 0x25, 0x71, + 0x01, 0xed, 0xf3, 0x1c, 0x79, 0xf9, 0xc7, 0x2f, 0x39, 0x19, + 0x91, 0x4a, 0x27, 0x11, 0xe5, 0x06, 0x45, 0x79, 0x93, 0x60, + 0x6b, 0x74, 0xe9, 0x02, 0x85, 0xf2, 0x80, 0x09, 0x6f, 0x9f, + 0x66, 0x9f, 0x89, 0x06, 0x33, 0xe4, 0x5d, 0x20, 0x9b, 0x75, + 0x82, 0x0c, 0xb3, 0xcc, 0xb7, 0xce, 0xa6, 0xe8, 0xcd, 0x92, + 0x53, 0x98, 0x4f, 0xad, 0xb5, 0x58, 0x3e, 0xe7, 0xa2, 0x8f, + 0xff, 0x40, 0xa3, 0x6e, 0xd2, 0xf8, 0xb0, 0x2f, 0x31, 0x88, + 0x7f, 0x9b, 0x8c, 0x33, 0xd5, 0x85, 0xc4, 0x6c, 0x63, 0x19, + 0x96, 0x6c, 0xd0, 0x53, 0x23, 0x05, 0x51, 0xb6, 0x30, 0xd8, + 0xc4, 0xc6, 0x8c, 0xe2, 0xe0, 0x80, 0x5a, 0x13, 0x70, 0xd7, + 0x15, 0x51, 0x23, 0xc1, 0x37, 0x26, 0xf7, 0x03, 0x54, 0xb3, + 0x20, 0xf7, 0x1e, 0x87, 0x10, 0xab, 0x07, 0xdc, 0x0d, 0xec, + 0x8b, 0xcd, 0xe6, 0x40, 0x1c, 0x3d, 0x0d, 0xcb, 0xf9, 0x3b, + 0xe7, 0xed, 0x0f, 0x12, 0x58, 0xf8, 0xe0, 0x76, 0xaf, 0x1a, + 0x3c, 0xb2, 0xcd, 0xbc, 0xbd, 0xaf, 0x87, 0x91, 0x1d, 0x9f, + 0x76, 0xd5, 0x5c, 0x9d, 0xbe, 0x59, 0x74, 0x3c, 0x4e, 0x25, + 0x71, 0xd0, 0x27, 0x15, 0x2b, 0xcb, 0x04, 0xa2, 0x5b, 0x63, + 0x8d, 0x9c, 0xac, 0x6d, 0x8e, 0x52, 0x35, 0x44, 0x47, 0x69, + 0x39, 0x46, 0x2a, 0x8f, 0xe7, 0x88, 0x9c, 0xdf, 0xe4, 0xe3, + 0x8b, 0xd4, 0x2a, 0x2e, 0xa4, 0xde, 0x47, 0x63, 0xe0, 0x4c, + 0x55, 0x5c, 0xeb, 0xd5, 0xdf, 0xcf, 0x4b, 0xa3, 0x6e, 0xba, + 0xc4, 0xa2, 0x55, 0xee, 0xce, 0x61, 0xe9, 0xb7, 0xfa, 0x96, + 0x97, 0x41, 0xc8, 0x3a, 0xa2, 0xc5, 0x64, 0x26, 0x63, 0xba, + 0xbc, 0x16, 0xee, 0x49, 0xc9, 0x53, 0x4f, 0x10, 0x08, 0x4d, + 0xe6, 0x51, 0x04, 0x5a, 0x71, 0x37, 0x92, 0x3b, 0x52, 0xa2, + 0xd8, 0x10, 0x07, 0x9e, 0xc2, 0xf5, 0x9c, 0x11, 0x61, 0x8b, + 0x9f, 0xf0, 0xeb, 0x53, 0x49, 0x22, 0x27, 0x47, 0x39, 0x48, + 0x02, 0x82, 0xd8, 0x85, 0x01, 0xf7, 0x8d, 0x7d, 0xc5, 0x7e, + 0xf5, 0xc9, 0x36, 0x04, 0x71, 0xc6, 0x81, 0x1b, 0x14, 0xfa, + 0xa1, 0x73, 0xbb, 0x29, 0xb7, 0x09, 0xf2, 0x37, 0x05, 0xc1, + 0xa9, 0x97, 0x41, 0x6c, 0x50, 0x6e, 0xc1, 0x0f, 0xa9, 0xa4, + 0x99, 0x24, 0x4e, 0xdc, 0x14, 0x82, 0xe1, 0x19, 0x44, 0xea, + 0x4f, 0x04, 0x22, 0xb8, 0xd7, 0x81, 0x53, 0xe7, 0xfc, 0x08, + 0x63, 0x88, 0xda, 0x35, 0x84, 0x9d, 0x0b, 0x90, 0x42, 0xc4, + 0xc5, 0x0c, 0x7d, 0xca, 0x40, 0xe3, 0x72, 0xcb, 0x92, 0xbb, + 0x07, 0x04, 0xc7, 0xef, 0xe2, 0x40, 0xf3, 0x58, 0x0f, 0xbd, + 0x47, 0x1d, 0x41, 0x0e, 0x4a, 0xea, 0xc7, 0x73, 0x83, 0x7b, + 0x82, 0x3c, 0xe1, 0xd5, 0x21, 0x90, 0xfb, 0xf6, 0x50, 0x4d, + 0x02, 0x64, 0x50, 0xb7, 0x33, 0x6f, 0x28, 0x21, 0xec, 0x15, + 0xfd, 0x6d, 0x71, 0xde, 0x7c, 0xa0, 0x36, 0x85, 0x90, 0xc0, + 0x77, 0xfb, 0x48, 0x5d, 0xfe, 0x98, 0xd3, 0x40, 0xcd, 0x35, + 0x6d, 0xe3, 0x7e, 0x0b, 0x13, 0x59, 0xbb, 0x84, 0xe8, 0xd9, + 0xc8, 0xcc, 0xa1, 0x37, 0xca, 0xcb, 0x5e, 0x26, 0xa6, 0x5a, + 0xd3, 0x2e, 0xff, 0x10, 0x88, 0xa5, 0xda, 0x41, 0x8f, 0x1a, + 0x76, 0x20, 0x4f, 0x65, 0xee, 0xd4, 0xd6, 0xa8, 0xe0, 0x7a, + 0x6b, 0x12, 0xa4, 0x64, 0x45, 0xd9, 0xc4, 0xf4, 0x38, 0x6f, + 0xd5, 0xf8, 0x16, 0xdf, 0xa4, 0xee, 0x0b, 0x6e, 0xb6, 0xe9, + 0x6b, 0xf4, 0x78, 0x1f, 0x29, 0x2c, 0x9d, 0x76, 0x95, 0x46, + 0x68, 0x91, 0xab, 0xea, 0x80, 0xbd, 0x19, 0x83, 0x7f, 0xe1, + 0x1a, 0xe9, 0x45, 0x27, 0x55, 0x31, 0x2c, 0x05, 0xcb, 0x96, + 0x92, 0x30, 0x37, 0xae, 0xc3, 0x0a, 0x0b, 0xaa, 0x0d, 0xa9, + 0x9f, 0x89, 0x56, 0x45, 0xae, 0x47, 0x7c, 0xf7, 0x4e, 0xc6, + 0xd8, 0x8a, 0xf4, 0xfd, 0x33, 0x7f, 0x5f, 0xfe, 0x12, 0xd1, + 0xce, 0x3b, 0x6e, 0x7a, 0x60, 0xeb, 0x64, 0x61, 0xe5, 0xbe, + 0x7b, 0xf1, 0xdc, 0x67, 0xde, 0xae, 0x6e, 0xbf, 0x58, 0x2e, + 0x12, 0x9c, 0x63, 0x9f, 0xd6, 0x7b, 0xa3, 0xa0, 0x1c, 0x10, + 0x9a, 0x3a, 0x0e, 0xc3, 0x4a, 0xa3, 0x3c, 0xb1, 0xdf, 0x74, + 0xc7, 0x38, 0xeb, 0x2e, 0x19, 0x96, 0x85, 0x50, 0xed, 0x74, + 0x34, 0x86, 0xf6, 0x72, 0x6d, 0xa0, 0xb0, 0x32, 0xd0, 0x02, + 0xd9, 0xe1, 0xc1, 0xc4, 0x8d, 0x08, 0x26, 0x0b, 0xd8, 0x5f, + 0xd1, 0x4b, 0xa1, 0x71, 0x98, 0x8c, 0x5a, 0x78, 0x0d, 0xbb, + 0x2d, 0x8c, 0x10, 0x5f, 0xaa, 0x28, 0xd6, 0xb5, 0x92, 0xb4, + 0x40, 0xdd, 0x9a, 0x0f, 0x49, 0x2f, 0x4d, 0xf0, 0x02, 0xd2, + 0x84, 0x05, 0x6a, 0x5e, 0x83, 0xf7, 0x08, 0x53, 0xad, 0x66, + 0x9f, 0xe5, 0xb7, 0xaf, 0x14, 0x38, 0x61, 0x22, 0x02, 0x09, + 0x57, 0x99, 0x50, 0x7b, 0x6d, 0x11, 0xdb, 0x71, 0xd7, 0xd3, + 0x06, 0xb5, 0x4f, 0x0f, 0xbe, 0xe2, 0x46, 0xda, 0x18, 0xf5, + 0xee, 0x88, 0x17, 0x0e, 0x77, 0x57, 0x30, 0xe1, 0x3d, 0x78, + 0xb9, 0x1c, 0x75, 0x1f, 0xc0, 0xa4, 0x2e, 0xff, 0x53, 0x9a, + 0x17, 0x2b, 0x22, 0x6c, 0x13, 0x55, 0x05, 0xf7, 0x64, 0x5c, + 0x88, 0x2a, 0x2b, 0x79, 0x4c, 0xf0, 0xf4, 0x9c, 0x5c, 0x49, + 0xd9, 0x96, 0xb7, 0x23, 0x13, 0x56, 0xb3, 0x06, 0xeb, 0x0e, + 0x08, 0x64, 0x94, 0xe0, 0x4e, 0xc4, 0xf7, 0xbb, 0x0b, 0xc8, + 0x02, 0x15, 0xfb, 0x88, 0x68, 0x97, 0xc4, 0x1b, 0x34, 0x64, + 0x78, 0x90, 0x85, 0xcc, 0x0c, 0x36, 0x31, 0xd0, 0x23, 0xd9, + 0xa8, 0xe0, 0x80, 0x8f, 0x54, 0x18, 0x6a, 0x1d, 0xab, 0xe1, + 0xb0, 0xdd, 0x20, 0x93, 0x6b, 0x57, 0x62, 0x58, 0xfa, 0xcf, + 0x31, 0xc9, 0x84, 0xda, 0xd2, 0x89, 0xab, 0x5d, 0xdf, 0xc4, + 0x55, 0x81, 0xa2, 0x2f, 0xbe, 0x5b, 0x51, 0xb5, 0x96, 0x57, + 0xfc, 0xa4, 0x17, 0xb6, 0xce, 0x87, 0x1d, 0x0f, 0x21, 0xb6, + 0x72, 0x24, 0xf1, 0x31, 0xa0, 0x03, 0x8e, 0xd3, 0x10, 0x48, + 0xfd, 0x42, 0xc5, 0x5e, 0xe1, 0xc1, 0x36, 0xb0, 0x91, 0x4d, + 0xb2, 0x8e, 0xa0, 0xfe, 0xac, 0xa3, 0xec, 0x01, 0x8d, 0xd0, + 0xe4, 0x47, 0x29, 0xda, 0x72, 0xfa, 0xcc, 0xab, 0x6a, 0x3d, + 0x1e, 0x77, 0x9b, 0x0b, 0xb6, 0xfc, 0x24, 0x30, 0x6d, 0x4e, + 0x12, 0x86, 0xde, 0x26, 0x44, 0x10, 0xa2, 0x9c, 0x8a, 0x48, + 0xfe, 0x72, 0xa7, 0xa9, 0xa1, 0x31, 0xb2, 0x02, 0xe8, 0x72, + 0x36, 0x67, 0xa5, 0x62, 0xb9, 0x8d, 0x26, 0x23, 0x67, 0xde, + 0xe5, 0xa5, 0xd2, 0x7e, 0xfa, 0xff, 0x18, 0x4a, 0x19, 0x89, + 0xa8, 0xce, 0x6e, 0xad, 0xf0, 0x1a, 0x55, 0xb1, 0x78, 0x63, + 0xf7, 0x3f, 0xc4, 0xb7, 0x93, 0xa1, 0x84, 0x23, 0x5a, 0x4c, + 0x30, 0x6d, 0x11, 0x25, 0x18, 0x1f, 0xe5, 0xb2, 0xea, 0x9a, + 0x2f, 0x4a, 0x95, 0x60, 0x12, 0xc2, 0xb3, 0xf4, 0xdd, 0x5a, + 0xb8, 0x9b, 0xd3, 0xe6, 0x98, 0xed, 0x28, 0xb4, 0xa6, 0xa5, + 0xca, 0x93, 0x73, 0x83, 0x99, 0xce, 0xd8, 0xe7, 0xc1, 0x6b, + 0xb6, 0xc0, 0x94, 0x5f, 0xb7, 0xe6, 0x82, 0x1d, 0x76, 0x05, + 0x86, 0xa4, 0x3b, 0x50, 0xbf, 0x4e, 0x7c, 0x03, 0x26, 0x8b, + 0xc0, 0xec, 0xb9, 0x31, 0xb6, 0x72, 0xc2, 0x30, 0x5b, 0x2c, + 0xad, 0xc3, 0x52, 0x2e, 0x9a, 0x60, 0xd1, 0xaf, 0xf1, 0xbf, + 0x35, 0xeb, 0x0e, 0x4f, 0xfb, 0xa8, 0x9b, 0x97, 0x20, 0x59, + 0x9d, 0x9e, 0xe2, 0x6a, 0x29, 0xee, 0xf5, 0x9c, 0x4a, 0xdb, + 0x9b, 0xd4, 0x89, 0x1a, 0x0e, 0x74, 0x21, 0x75, 0xf3, 0x29, + 0x61, 0x60, 0x3f, 0x24, 0x30, 0x9b, 0xfe, 0x05, 0x67, 0xdd, + 0x77, 0x1c, 0x3a, 0xf5, 0x0c, 0x7e, 0x5f, 0xb6, 0xff, 0x53, + 0x74, 0x0f, 0x9e, 0x79, 0x75, 0x50, 0x59, 0x31, 0x86, 0x1e, + 0x1d, 0x3d, 0x17, 0x38, 0x7c, 0xca, 0xb8, 0x70, 0x3e, 0xfd, + 0x43, 0x04, 0x2b, 0x46, 0x81, 0xe0, 0x2e, 0xf8, 0xcf, 0x69, + 0xbc, 0xbd, 0xfc, 0xe4, 0x5e, 0x81, 0x51, 0x89, 0x05, 0x6b, + 0x3d, 0x0b, 0x3f, 0xbb, 0x87, 0xe7, 0xb9, 0x3b, 0xe3, 0x8e, + 0xbd, 0x36, 0x2f, 0xac, 0xcf, 0xa8, 0x8f, 0xdf, 0x48, 0xb1, + 0xbc, 0xcb, 0x79, 0x4c, 0xa7, 0x1a, 0xdd, 0x4a, 0x3d, 0x21, + 0xe1, 0x85, 0x33, 0x34, 0x59, 0xf2, 0xf4, 0x45, 0xfa, 0xd5, + 0x6b, 0x65, 0x7d, 0xce, 0x0b, 0x75, 0x93, 0xf2, 0x34, 0xca, + 0x6a, 0x37, 0x2c, 0x14, 0x3a, 0xa2, 0x2f, 0xf1, 0x1d, 0xb2, + 0x19, 0xf8, 0xbd, 0xdf, 0x88, 0x21, 0x7b, 0x74, 0x64, 0x9a, + 0x17, 0x9e, 0xc8, 0x4d, 0xea, 0xf4, 0x11, 0x36, 0xe8, 0xcb, + 0xe3, 0x9a, 0x32, 0x2e, 0x44, 0x15, 0xd7, 0xe9, 0x8c, 0xd9, + 0x8a, 0x88, 0x03, 0xbb, 0xc6, 0xe6, 0x5f, 0x71, 0x23, 0x6d, + 0x0c, 0x9b, 0x54, 0x70, 0x40, 0xa6, 0x2a, 0x0c, 0x35, 0xef, + 0xb4, 0x91, 0x58, 0x8f, 0x10, 0xa8, 0xd4, 0xca, 0x94, 0x07, + 0x04, 0x32, 0x4a, 0x70, 0x27, 0x62, 0x9a, 0xbc, 0xe4, 0x64, + 0x01, 0xeb, 0x9c, 0x44, 0x91, 0x81, 0x1b, 0x58, 0xa9, 0xc7, + 0x59, 0x47, 0x50, 0x7f, 0x56, 0xb0, 0x76, 0xe1, 0xa7, 0x68, + 0x51, 0xf6, 0x5f, 0xcc, 0xc9, 0xbb, 0x4b, 0xca, 0x7e, 0x52, + 0xea, 0x5b, 0x67, 0xa2, 0xef, 0xe6, 0xd2, 0x6f, 0x93, 0xb3, + 0x69, 0x3f, 0x7d, 0x9e, 0x0c, 0x25, 0xed, 0xa5, 0x54, 0x67, + 0x37, 0xb7, 0x12, 0x18, 0xd7, 0x27, 0x09, 0x43, 0x6f, 0x13, + 0x22, 0x08, 0x51, 0x4e, 0x45, 0x24, 0x7f, 0x39, 0xd8, 0xa0, + 0xad, 0x67, 0x6c, 0x92, 0x81, 0xd4, 0x5b, 0x60, 0x4a, 0xce, + 0xba, 0x73, 0x41, 0xef, 0x18, 0xd7, 0xe9, 0xf3, 0x0c, 0xee, + 0x93, 0x59, 0x75, 0x4d, 0xf6, 0x25, 0xab, 0x30, 0x09, 0x61, + 0x9b, 0x4e, 0x25, 0x8c, 0xac, 0x6a, 0xa5, 0x0d, 0x07, 0x3a, + 0xf1, 0xdb, 0x98, 0xf5, 0xd1, 0x30, 0x5b, 0x39, 0x61, 0x18, + 0xcc, 0x16, 0xb7, 0x80, 0x29, 0x17, 0x4d, 0x30, 0x89, 0xb6, + 0x99, 0xbe, 0x5e, 0xbf, 0x7e, 0x72, 0x2f, 0xa1, 0xc9, 0xa5, + 0xe3, 0xd4, 0xff, 0xe4, 0xfe, 0xbc, 0xa2, 0x92, 0x9e, 0xc8, + 0x3a, 0xe6, 0x4f, 0xdd, 0xdb, 0x28, 0xcd, 0xf9, 0x43, 0x0f, + 0xef, 0xff, 0xea, 0x1c, 0x1d, 0x51, 0xf6, 0x99, 0xef, 0x59, + 0xed, 0x7c, 0xbf, 0x8e, 0x44, 0xf1, 0xdc, 0x3a, 0x32, 0x4d, + 0xdd, 0x26, 0xb2, 0x0d, 0x8f, 0x25, 0xff, 0xf1, 0x91, 0xa3, + 0xf8, 0x1a, 0xcd, 0x79, 0x7a, 0xc3, 0x4a, 0xe2, 0x02, 0x19, + 0x25, 0x38, 0xf2, 0x31, 0x4d, 0x5e, 0x72, 0x32, 0xe1, 0x94, + 0x4e, 0x22, 0x8a, 0x95, 0x46, 0x8d, 0x45, 0x44, 0xe0, 0xbc, + 0x63, 0x73, 0xce, 0xd9, 0xf0, 0xd7, 0x06, 0xac, 0x09, 0x0c, + 0x8a, 0xf2, 0xe5, 0xc0, 0xd6, 0xe8, 0x11, 0x04, 0xc9, 0x27, + 0xc3, 0x12, 0xde, 0xfd, 0xc9, 0x7b, 0xce, 0x66, 0x85, 0xbc, + 0xc4, 0x65, 0x3f, 0x29, 0x75, 0xcc, 0xd2, 0x51, 0x96, 0x73, + 0xcc, 0xfd, 0xd1, 0x0c, 0x66, 0x0b, 0xba, 0x40, 0xf5, 0xea, + 0xc7, 0x18, 0xa5, 0x5b, 0xad, 0x5f, 0x0c, 0x8a, 0x95, 0x98, + 0x06, 0x77, 0xa8, 0xcd, 0xdb, 0xc7, 0x7b, 0xf3, 0xb4, 0x18, + 0xe5, 0xd1, 0x8f, 0x13, 0x59, 0xe7, 0xa6, 0xf3, 0x9e, 0x99, + 0xa9, 0xb0, 0x7c, 0x0d, 0x87, 0xdd, 0x3d, 0x80, 0x4f, 0x64, + 0x1d, 0x73, 0xc6, 0x8f, 0x8c, 0x14, 0x87, 0x9d, 0xc0, 0xe6, + 0x96, 0x9e, 0x75, 0x0e, 0x85, 0xdc, 0x67, 0x33, 0xa3, 0x5e, + 0x62, 0xd3, 0xfe, 0xf5, 0xdb, 0x66, 0x69, 0xc9, 0x4b, 0xd8, + 0x45, 0xab, 0x23, 0xa7, 0xc3, 0x22, 0x70, 0x5e, 0xd0, 0xd8, + 0x67, 0x8d, 0x78, 0x8a, 0x03, 0x56, 0xc6, 0x32, 0xef, 0xd8, + 0x63, 0xa6, 0x46, 0x0a, 0xa2, 0xaf, 0x60, 0x73, 0x4b, 0x4f, + 0xdb, 0x07, 0x06, 0x45, 0xab, 0x4c, 0x03, 0xda, 0x54, 0x87, + 0x8c, 0x82, 0xdc, 0x98, 0x5a, 0x0c, 0x93, 0x89, 0x03, 0xc3, + 0xb4, 0x26, 0xe0, 0x6d, 0x2a, 0xa2, 0x46, 0x41, 0x6e, 0x4c, + 0x2d, 0x06, 0xa8, 0xa5, 0xc3, 0xb4, 0xf0, 0xb2, 0x80, 0x11, + 0x38, 0x2f, 0x68, 0x6c, 0xd2, 0xa7, 0x3c, 0x45, 0xe0, 0x2b, + 0x40, 0x2d, 0x3c, 0xcd, 0x20, 0x95, 0x0e, 0x7b, 0x1a, 0x1b, + 0xd5, 0x59, 0x0f, 0x80, 0x38, 0x7a, 0x80, 0x5a, 0x78, 0x59, + 0x40, 0xe9, 0x1c, 0xf6, 0x34, 0x36, 0x69, 0xb2, 0x1e, 0xc3, + 0x70, 0xf4, 0x1a, 0x55, 0x31, 0x76, 0x0d, 0x19, 0x1e, 0x24, + 0xb0, 0x33, 0x03, 0xec, 0x9d, 0x34, 0x78, 0xa7, 0xda, 0x22, + 0x75, 0xe2, 0x6d, 0x65, 0x0c, 0xa9, 0x9e, 0x1e, 0xbf, 0x07, + 0x8c, 0x77, 0x30, 0x29, 0x59, 0xbb, 0xb9, 0x9d, 0xcd, 0xe1, + 0x3a, 0xfd, 0xec, 0x69, 0xb8, 0xf9, 0xbf, 0xb2, 0xe8, 0x78, + 0x99, 0xcc, 0xfd, 0x09, 0xad, 0x9d, 0x28, 0x70, 0xc2, 0x44, + 0x04, 0x12, 0xae, 0xf1, 0xa0, 0xf6, 0x9c, 0x4a, 0xe2, 0x63, + 0x4e, 0x2a, 0x56, 0x55, 0x08, 0x87, 0xb6, 0xc6, 0xd9, 0xfb, + 0x9b, 0xda, 0x5c, 0x3d, 0xa6, 0xf7, 0x2e, 0x56, 0x44, 0xd8, + 0x26, 0xaa, 0x0a, 0x2d, 0xc8, 0xb8, 0xd3, 0x54, 0xdf, 0xa4, + 0x6a, 0x88, 0x8e, 0xd2, 0x72, 0x8c, 0x54, 0xdd, 0x0d, 0xd3, + 0xfb, 0x7d, 0x0b, 0x05, 0x1f, 0xd3, 0x2e, 0x1c, 0xee, 0xae, + 0x60, 0x01, 0x7a, 0xf0, 0xb1, 0x38, 0xea, 0x3e, 0x43, 0x8b, + 0xd5, 0x6b, 0x54, 0x5c, 0x8b, 0x7f, 0x8e, 0xc6, 0x03, 0x98, + 0xaa, 0xb8, 0x15, 0x69, 0x7d, 0x5d, 0x15, 0x1c, 0x10, 0xc8, + 0xeb, 0x03, 0x9c, 0x4b, 0x2d, 0xb5, 0x16, 0x53, 0x04, 0x2a, + 0x35, 0xd3, 0x96, 0x85, 0xdc, 0xb7, 0x4b, 0x87, 0xaa, 0x1f, + 0x5f, 0xc2, 0x11, 0xad, 0x37, 0xef, 0xed, 0x82, 0x56, 0xf2, + 0x98, 0x23, 0x2b, 0xfb, 0xb8, 0x92, 0x71, 0xef, 0xad, 0x46, + 0x26, 0xac, 0xa5, 0x0c, 0x53, 0x74, 0x87, 0x49, 0xc8, 0x4c, + 0xc6, 0xb7, 0xbb, 0x2c, 0x1f, 0x92, 0x51, 0xa6, 0x9e, 0x20, + 0x93, 0x03, 0xc3, 0xdd, 0xa8, 0x30, 0xd4, 0x3a, 0x95, 0x01, + 0xa3, 0x79, 0x40, 0xe5, 0xd6, 0xae, 0x10, 0x9a, 0x0f, 0xa2, + 0x08, 0xb4, 0xe2, 0x6e, 0xe7, 0x76, 0xa4, 0x87, 0x73, 0x20, + 0x0e, 0xff, 0xd0, 0xed, 0x4b, 0x36, 0x68, 0xc8, 0xf0, 0xe3, + 0xc9, 0x5b, 0x18, 0x6c, 0x62, 0x63, 0x46, 0x71, 0x47, 0x29, + 0xfb, 0x22, 0xc2, 0xd5, 0xfd, 0x23, 0x15, 0xa6, 0x92, 0x44, + 0x4e, 0x8e, 0x72, 0x90, 0x87, 0x5e, 0xbf, 0xb6, 0xa2, 0xa9, + 0xef, 0xae, 0x3b, 0x8b, 0x2e, 0xaf, 0x5f, 0xcd, 0x3a, 0x1e, + 0x04, 0xc7, 0x73, 0xc9, 0x02, 0x2d, 0xd9, 0xfa, 0x49, 0xfc, + 0x29, 0x51, 0x6c, 0x08, 0xe2, 0x4f, 0xc4, 0xb0, 0x37, 0x5d, + 0x62, 0x51, 0xcb, 0x77, 0x67, 0xd1, 0x95, 0xba, 0x7d, 0x4b, + 0xaa, 0xc1, 0xc1, 0x36, 0x28, 0x37, 0x81, 0xe6, 0xb5, 0x52, + 0xad, 0x12, 0x27, 0x6e, 0x0a, 0x41, 0x91, 0xed, 0x01, 0x41, + 0x6c, 0xa3, 0xe1, 0x9a, 0xa7, 0xdf, 0x83, 0x3f, 0x9b, 0x85, + 0x1b, 0x02, 0xd9, 0x63, 0x82, 0xd8, 0xa0, 0xdc, 0x41, 0x1e, + 0x91, 0x8b, 0xf1, 0x48, 0x9c, 0x7b, 0x28, 0xc7, 0x01, 0x32, + 0x42, 0xaf, 0xe4, 0x48, 0x21, 0x62, 0x83, 0x06, 0xdf, 0x65, + 0x20, 0x90, 0x39, 0x84, 0x49, 0xbc, 0x88, 0x17, 0x9e, 0x08, + 0x44, 0xb3, 0x6d, 0xc1, 0xa6, 0x0d, 0x3b, 0x10, 0xc6, 0xd3, + 0x77, 0x6a, 0x48, 0x60, 0xda, 0x9c, 0x24, 0xcf, 0x7f, 0x4c, + 0x88, 0x20, 0x87, 0xfb, 0xd7, 0x90, 0x3f, 0xe4, 0xcb, 0xf9, + 0x16, 0xe3, 0x84, 0x4b, 0x49, 0x18, 0xfa, 0x57, 0x80, 0x05, + 0xe4, 0x55, 0xe7, 0xb5, 0x0b, 0x8e, 0x52, 0x77, 0xe4, 0x37, + 0x5b, 0x95, 0xd4, 0x7a, 0x3c, 0xee, 0xf5, 0x16, 0xaf, 0x3b, + 0x0e, 0x08, 0x4d, 0x1d, 0x07, 0x80, 0x25, 0xb0, 0x1e, 0xb9, + 0x8e, 0x3a, 0x82, 0x1c, 0x94, 0x17, 0xce, 0x7f, 0x09, 0x89, + 0x67, 0xfc, 0x37, 0x3d, 0x30, 0x94, 0x32, 0xd1, 0x93, 0x5f, + 0xdc, 0x99, 0x4d, 0xe6, 0xc5, 0xf6, 0xc7, 0x78, 0x01, 0x69, + 0x42, 0xe3, 0x35, 0x2f, 0xa0, 0x9a, 0x04, 0xc8, 0x8d, 0x91, + 0x81, 0x62, 0xa7, 0x04, 0x13, 0xe4, 0x6c, 0xce, 0x89, 0xc4, + 0xb1, 0xd9, 0x4c, 0x46, 0xa0, 0xad, 0x66, 0xde, 0x50, 0x42, + 0x1b, 0x2a, 0x39, 0xda, 0xe2, 0x7f, 0xf8, 0x83, 0x6c, 0xc9, + 0x60, 0xda, 0x22, 0x4a, 0x30, 0x3e, 0x09, 0xa7, 0x17, 0xf7, + 0x5e, 0x94, 0xe9, 0xc0, 0x24, 0x47, 0xe3, 0x43, 0xee, 0x35, + 0x90, 0xba, 0x3f, 0xf3, 0x65, 0x80, 0x59, 0x6a, 0xda, 0x05, + 0xfc, 0x16, 0x23, 0x34, 0xaa, 0xa1, 0xf0, 0xc6, 0x2d, 0x7e, + 0x4b, 0xad, 0xe5, 0x81, 0xcb, 0x46, 0xb4, 0x98, 0x26, 0xb2, + 0xb5, 0xcb, 0x13, 0x71, 0x53, 0x5b, 0x81, 0x6e, 0x57, 0x55, + 0xbc, 0x4c, 0x8f, 0xb4, 0xe6, 0xc5, 0xf1, 0x5f, 0x73, 0x0d, + 0x41, 0xd6, 0xaf, 0x43, 0xeb, 0xbe, 0xad, 0x0f, 0xc7, 0x3a, + 0x65, 0x5c, 0x3d, 0x20, 0xd3, 0x89, 0x77, 0x82, 0xdd, 0x34, + 0xec, 0x40, 0x9e, 0xca, 0x1f, 0x6b, 0xa5, 0x2b, 0x79, 0xb4, + 0xb3, 0xf5, 0x65, 0x0f, 0xf3, 0x19, 0x50, 0xab, 0x8f, 0x89, + 0x57, 0xe5, 0x6f, 0x93, 0x03, 0xf4, 0xd6, 0x24, 0x8b, 0xc8, + 0x8a, 0x71, 0x4b, 0x2b, 0x70, 0xde, 0x69, 0x33, 0xaf, 0xe4, + 0x47, 0x60, 0xb6, 0x58, 0x99, 0x45, 0xa4, 0x5c, 0xf7, 0xc0, + 0x61, 0x9d, 0x21, 0xbd, 0x2c, 0x7d, 0x8b, 0x1f, 0x16, 0xdc, + 0xaf, 0x11, 0xd6, 0x2b, 0xf0, 0x3e, 0x52, 0x58, 0xf9, 0xec, + 0xec, 0x0a, 0xcf, 0x8b, 0x76, 0xa0, 0xbd, 0x9c, 0xf8, 0x06, + 0x4c, 0xd5, 0x43, 0x1b, 0xb1, 0x62, 0xe9, 0x8c, 0xd0, 0xe1, + 0x95, 0x17, 0xc3, 0xb9, 0x32, 0xc5, 0xfe, 0x01, 0x34, 0x11, + 0x8a, 0x4e, 0x29, 0xfb, 0x94, 0x75, 0xf5, 0x6b, 0xd1, 0x34, + 0x1c, 0xe8, 0x42, 0xea, 0x25, 0x52, 0xc2, 0xc0, 0xaa, 0x62, + 0x58, 0x0a, 0x55, 0xef, 0xe7, 0x60, 0x6e, 0x9f, 0x45, 0x14, + 0x16, 0x97, 0x1a, 0x91, 0x6a, 0x15, 0x1c, 0x9e, 0x35, 0x93, + 0xf5, 0xed, 0x40, 0xb2, 0xf9, 0xff, 0x07, 0xd4, 0x52, 0x1f, + 0xfd, 0xd1, 0xac, 0x8a, 0x9f, 0x8e, 0xf8, 0x2d, 0x9c, 0x4f, + 0x73, 0xd7, 0x2b, 0x39, 0x66, 0xfe, 0x3d, 0xa6, 0xe8, 0x1e, + 0xff, 0xf2, 0xea, 0xa0, 0xb2, 0x62, 0xcf, 0x3c, 0x3a, 0x7a, + 0x2e, 0x70, 0xbe, 0x3f, 0x24, 0x61, 0x5f, 0x76, 0xdc, 0xf4, + 0xc0, 0x15, 0xc8, 0xc2, 0x09, 0xbf, 0xf6, 0x21, 0x7e, 0x48, + 0x60, 0xf5, 0x3f, 0x0a, 0xce, 0x79, 0xee, 0x38, 0x74, 0x29, + 0x18, 0xfc, 0xbe, 0xaf, 0x7b, 0xce, 0x7f, 0x9f, 0xdc, 0xbd, + 0xb0, 0x5c, 0x24, 0xfb, 0xc6, 0xfd, 0x6f, 0xf6, 0x85, 0x83, + 0xbb, 0xb9, 0x3b, 0x0b, 0xbc, 0xc1, 0xa2, 0xd1, 0x0a, 0xd6, + 0x7a, 0x16, 0x7e, 0xb5, 0xcd, 0x0d, 0x38, 0x20, 0xf7, 0x74, + 0x1c, 0x45, 0x94, 0x85, 0x78, 0xa1, 0x7d, 0xe8, 0x4d, 0x70, + 0x15, 0x5c, 0xf8, 0x57, 0xb3, 0xe0, 0x7c, 0x39, 0x86, 0x08, + 0x56, 0x8c, 0xc1, 0x03, 0x5c, 0x33, 0x5d, 0xd2, 0x32, 0xef, + 0xc9, 0xa0, 0x19, 0xe8, 0x68, 0xcf, 0x2f, 0xe4, 0xda, 0x83, + 0xa3, 0x64, 0x63, 0x04, 0xf2, 0x98, 0x8d, 0x34, 0x79, 0x94, + 0x7a, 0x42, 0x01, 0xc9, 0x66, 0x68, 0xb2, 0x27, 0x2b, 0x8a, + 0x71, 0x01, 0x41, 0x4b, 0xd9, 0x10, 0x4c, 0x16, 0x73, 0xbe, + 0x61, 0x96, 0x81, 0xe2, 0xf3, 0xdb, 0xb1, 0x76, 0x05, 0xdf, + 0xb9, 0x6c, 0x5e, 0x9b, 0x5d, 0x93, 0xdd, 0x7d, 0x90, 0xa1, + 0xbb, 0x55, 0xb4, 0xf0, 0x1a, 0xb5, 0x5a, 0xdb, 0x20, 0xbe, + 0x97, 0x50, 0x6f, 0xa9, 0xe7, 0xab, 0x80, 0x79, 0x74, 0x87, + 0x5e, 0x21, 0x3a, 0xa7, 0x32, 0x33, 0xb9, 0x7d, 0xd3, 0x42, + 0xf6, 0xe8, 0xc8, 0xf7, 0xf7, 0x1e, 0x92, 0x5e, 0x9a, 0x23, + 0x04, 0x67, 0xcb, 0x0a, 0xd4, 0xbc, 0xc5, 0x2d, 0x10, 0xa6, + 0x37, 0x69, 0xd6, 0xca, 0xfa, 0x5f, 0x16, 0xea, 0xe5, 0x27, + 0x68, 0x57, 0xd4, 0x6e, 0x58, 0x28, + }, + { + /* 11 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x5d, 0x97, 0xf3, + 0xe9, 0x1a, 0x8d, 0xcb, 0xbb, 0x06, 0xc5, 0x20, 0x1c, 0x68, + 0x90, 0x93, 0x47, 0xba, 0xed, 0x25, 0x11, 0x34, 0xd9, 0x55, + 0xb5, 0x0c, 0x49, 0x40, 0x38, 0xd0, 0xe3, 0xe5, 0x85, 0xe7, + 0x7a, 0xd6, 0xf8, 0x2e, 0x54, 0x9e, 0x0e, 0x0a, 0x8c, 0x60, + 0x24, 0xb8, 0x73, 0x76, 0x8e, 0xb7, 0x19, 0x4a, 0x22, 0x68, + 0x71, 0xaa, 0xa9, 0x18, 0x92, 0x80, 0x70, 0x63, 0x05, 0x09, + 0x4c, 0xea, 0x8e, 0xb9, 0xcb, 0x72, 0xfc, 0x61, 0x12, 0x1e, + 0x57, 0xa0, 0x6c, 0x0b, 0x95, 0x9a, 0xc9, 0x0d, 0xf4, 0x6f, + 0x33, 0x5c, 0xa8, 0xff, 0x1c, 0x14, 0xdb, 0xc0, 0x48, 0xb3, + 0xe6, 0xec, 0x0b, 0x50, 0x63, 0x9c, 0xda, 0x46, 0x25, 0x34, + 0xa7, 0x12, 0x1e, 0xe0, 0x54, 0xdb, 0x76, 0x7f, 0xdf, 0xad, + 0x32, 0x94, 0x44, 0xd0, 0xe2, 0x97, 0x91, 0x30, 0xe7, 0xc3, + 0xe0, 0xc6, 0x0a, 0x12, 0x1d, 0xf0, 0xa5, 0x67, 0xad, 0xca, + 0x6f, 0x5c, 0x2a, 0x36, 0x22, 0xe3, 0xfc, 0xae, 0x9a, 0x81, + 0x98, 0x17, 0xdf, 0xb1, 0x55, 0xe4, 0x3b, 0xc2, 0x24, 0x3c, + 0xae, 0x83, 0xd8, 0x16, 0xe9, 0xf7, 0x5a, 0x4a, 0x48, 0x42, + 0xbc, 0xfe, 0xb6, 0x09, 0x9f, 0x3a, 0x6b, 0xa3, 0xc4, 0x7e, + 0x79, 0x64, 0x51, 0x1a, 0x2b, 0xde, 0x66, 0xb8, 0x93, 0x3d, + 0x38, 0x28, 0x75, 0x43, 0x90, 0xa5, 0x0f, 0x1b, 0x93, 0x47, + 0xbc, 0x2d, 0x8f, 0xa2, 0x1e, 0xf6, 0x83, 0x2e, 0xb0, 0x63, + 0x8c, 0xcd, 0x9f, 0x88, 0x16, 0xa0, 0xc6, 0xfb, 0x77, 0x8c, + 0x4a, 0x68, 0x8d, 0x24, 0x3c, 0x03, 0xa8, 0x75, 0xec, 0xfe, + 0xd4, 0xfd, 0x51, 0x08, 0x9e, 0x96, 0xc7, 0xa3, 0x36, 0x22, + 0xf9, 0x23, 0xb4, 0x1d, 0x7c, 0x6d, 0x7d, 0x99, 0x64, 0xeb, + 0x88, 0x63, 0x07, 0xed, 0xe1, 0x60, 0x0d, 0x45, 0x03, 0x4f, + 0x14, 0x24, 0xbf, 0xc4, 0xf3, 0x18, 0x61, 0x79, 0x8a, 0x26, + 0x5a, 0x66, 0xc8, 0x65, 0x1f, 0x27, 0x84, 0xb7, 0x3a, 0x23, + 0x89, 0xce, 0x99, 0x57, 0xde, 0xb8, 0x54, 0x6c, 0x44, 0x05, + 0x3b, 0x9f, 0xf7, 0xc1, 0xf8, 0x7e, 0x1e, 0x3d, 0x70, 0x4d, + 0x53, 0x73, 0xef, 0x6a, 0x81, 0x25, 0x27, 0xf7, 0x67, 0x52, + 0xf3, 0x2e, 0x7d, 0xa1, 0xaa, 0x0b, 0x76, 0x47, 0x48, 0x78, + 0x9f, 0xc5, 0x73, 0x2c, 0x11, 0x2d, 0x31, 0x73, 0xea, 0x52, + 0x43, 0x11, 0xfb, 0x8c, 0xf3, 0x7e, 0x5a, 0xe5, 0x6f, 0x44, + 0x81, 0xbe, 0xb4, 0x94, 0x90, 0x84, 0xbb, 0x3f, 0xaf, 0x12, + 0xfd, 0x74, 0xd6, 0x85, 0x4b, 0xfc, 0xf2, 0xc8, 0x76, 0xc9, + 0x07, 0x77, 0x52, 0x25, 0x22, 0xd9, 0x46, 0x72, 0x13, 0xa5, + 0x57, 0x94, 0x62, 0x5b, 0xa2, 0x34, 0x56, 0x7f, 0xcc, 0xb3, + 0xe5, 0x7a, 0x70, 0x50, 0xea, 0x86, 0xe3, 0x89, 0x1e, 0x36, + 0x60, 0x69, 0xc1, 0x8c, 0x25, 0xa9, 0x68, 0xb1, 0xcb, 0x56, + 0x2f, 0xa6, 0xff, 0xe1, 0x8e, 0xa5, 0xe5, 0x8e, 0xbb, 0x5a, + 0xdd, 0x87, 0x3c, 0x2f, 0xc5, 0x5c, 0xa3, 0xc6, 0xdb, 0x59, + 0xfd, 0xd3, 0x27, 0xd3, 0x2c, 0xa9, 0x34, 0x9d, 0xb1, 0xe4, + 0x7e, 0x5a, 0x66, 0xe6, 0xc7, 0x31, 0x6d, 0x40, 0x2c, 0x83, + 0x4f, 0x35, 0xee, 0xdb, 0x94, 0xd0, 0xd9, 0x48, 0x78, 0x06, + 0x93, 0xea, 0x1b, 0x3f, 0xee, 0xde, 0xd8, 0xc6, 0x07, 0xc1, + 0x19, 0x1b, 0x62, 0x4e, 0xbd, 0x26, 0x8f, 0x82, 0x8b, 0xac, + 0x6b, 0x39, 0xa2, 0x10, 0xff, 0xef, 0x4d, 0x85, 0x6c, 0x44, + 0x31, 0x46, 0xab, 0x3a, 0xf8, 0xda, 0xa9, 0x64, 0x35, 0xe3, + 0x16, 0xf5, 0xc0, 0x4e, 0xd7, 0x42, 0xf4, 0x66, 0xb7, 0x52, + 0x68, 0x49, 0xfa, 0xf1, 0xc8, 0x15, 0xd3, 0xc6, 0x0e, 0x19, + 0x01, 0xc0, 0x1a, 0x8a, 0x06, 0x9e, 0x28, 0x48, 0x38, 0xac, + 0x5f, 0xe6, 0x3a, 0xdc, 0x83, 0xd2, 0xba, 0xc6, 0xdf, 0xaa, + 0x1a, 0xf6, 0xb8, 0xdb, 0xbd, 0x4b, 0x25, 0x30, 0xc2, 0xf2, + 0xd7, 0x4c, 0xb4, 0xcc, 0x53, 0xca, 0x3e, 0x4e, 0xcb, 0xad, + 0x7f, 0x16, 0xb2, 0xc3, 0x2b, 0xe8, 0x5a, 0x87, 0x0f, 0xca, + 0x96, 0xea, 0x22, 0x26, 0x5b, 0x3e, 0x74, 0x46, 0xd1, 0x5f, + 0xf1, 0xae, 0x7f, 0xb3, 0xa8, 0xd8, 0x88, 0x0a, 0x76, 0xfd, + 0x2d, 0x41, 0xb6, 0x1b, 0x46, 0xac, 0x18, 0xb4, 0xf2, 0x78, + 0x13, 0xde, 0x4d, 0x2a, 0x6a, 0x95, 0xbd, 0xd2, 0x33, 0xfc, + 0x3c, 0x7a, 0xe0, 0x9a, 0xa6, 0xe6, 0x1d, 0xd4, 0xc1, 0x4a, + 0x4e, 0x2d, 0xce, 0xa4, 0xf1, 0xa1, 0xab, 0x89, 0x09, 0x80, + 0x2b, 0x2d, 0xa6, 0xd2, 0x04, 0x6a, 0x52, 0x45, 0x5e, 0x37, + 0x25, 0x5c, 0xfa, 0x81, 0x97, 0x16, 0xec, 0x8e, 0x90, 0xf0, + 0xfd, 0x49, 0xe6, 0x58, 0x22, 0x5a, 0xe7, 0x01, 0x6d, 0x72, + 0x7e, 0x0c, 0x61, 0x45, 0x2b, 0xf6, 0x38, 0x69, 0xfa, 0x30, + 0xb2, 0xc9, 0x62, 0xe6, 0x17, 0xa4, 0x86, 0x22, 0x35, 0xdb, + 0x25, 0xfc, 0xb4, 0x09, 0xde, 0x88, 0xc1, 0xbf, 0xa0, 0xbb, + 0x80, 0x57, 0x6f, 0x38, 0xb8, 0x10, 0x9e, 0xfa, 0x71, 0x29, + 0xc2, 0xe0, 0x51, 0x2c, 0xab, 0xeb, 0xe3, 0xcb, 0xb5, 0x7e, + 0x9d, 0x24, 0x39, 0xe8, 0x6f, 0xc9, 0x96, 0x3b, 0x27, 0x53, + 0x69, 0xb6, 0x74, 0x38, 0x5c, 0x64, 0x10, 0xef, 0x82, 0xee, + 0xaa, 0xe9, 0x8a, 0x53, 0xb7, 0xc0, 0xec, 0x51, 0x0e, 0xee, + 0xa4, 0x4a, 0x44, 0x71, 0x8c, 0xe4, 0x26, 0x89, 0xae, 0xeb, + 0xc4, 0xb6, 0x2e, 0x0c, 0x99, 0x1d, 0x4d, 0x50, 0xc9, 0xba, + 0x37, 0xe2, 0xe3, 0xa9, 0xb2, 0x83, 0x54, 0x25, 0x87, 0x68, + 0xac, 0xfe, 0x5b, 0xa5, 0x09, 0xf4, 0xe0, 0xa0, 0x17, 0xcf, + 0x05, 0xd1, 0x3c, 0x6c, 0x45, 0x35, 0x3b, 0x0d, 0xb2, 0xbf, + 0x84, 0x3f, 0x5b, 0xa6, 0xd2, 0xef, 0x19, 0xb9, 0xac, 0xff, + 0xc0, 0xd2, 0x41, 0xdb, 0x4a, 0x91, 0xd0, 0xa1, 0x55, 0xac, + 0x5e, 0x8f, 0x3d, 0x01, 0xdf, 0x89, 0x02, 0x8f, 0xd6, 0x28, + 0xa3, 0x8b, 0x5d, 0x6a, 0xee, 0xaa, 0x9b, 0xaf, 0x21, 0x69, + 0x4f, 0x1a, 0x09, 0xdf, 0xb5, 0xb4, 0x79, 0xcd, 0x78, 0x5e, + 0x49, 0xb8, 0x85, 0x4f, 0x75, 0xb2, 0x39, 0x65, 0xcb, 0x82, + 0x22, 0x47, 0x90, 0xd7, 0xf5, 0x95, 0xf2, 0xbe, 0x40, 0x6f, + 0x69, 0xda, 0xa9, 0xf6, 0x4e, 0x65, 0x58, 0x91, 0x68, 0xf9, + 0xa1, 0x0b, 0xfc, 0xb4, 0xcc, 0x0f, 0x4d, 0x62, 0xda, 0x80, + 0x8c, 0x38, 0xcf, 0x62, 0x81, 0xe3, 0x2c, 0xc0, 0x47, 0xb2, + 0x09, 0x2f, 0x51, 0x0a, 0x4a, 0x13, 0x58, 0xc5, 0x9e, 0x6a, + 0x1f, 0x75, 0xeb, 0x63, 0x71, 0x90, 0xf0, 0x0c, 0xe5, 0x17, + 0x36, 0x7e, 0x9a, 0x98, 0x09, 0x99, 0xf6, 0x6f, 0x66, 0xa8, + 0xca, 0x96, 0x35, 0x2c, 0xf9, 0x7f, 0xa6, 0xed, 0x1f, 0x7f, + 0x73, 0x4f, 0x0e, 0x41, 0x32, 0x36, 0xc4, 0x9c, 0xb9, 0x4c, + 0xdd, 0xc7, 0xd5, 0x9b, 0xdd, 0x22, 0xe4, 0xbc, 0xe7, 0x5b, + 0xbf, 0xfd, 0x7f, 0x9a, 0x7c, 0x6c, 0xc1, 0xaf, 0x45, 0x08, + 0xd6, 0x72, 0x87, 0x20, 0x3d, 0x1d, 0x9a, 0xc9, 0xd8, 0x88, + 0x62, 0x8c, 0x95, 0x74, 0x33, 0x77, 0x14, 0x2f, 0x10, 0xd3, + 0xd4, 0x07, 0x17, 0x02, 0x63, 0x8e, 0xa7, 0xac, 0x89, 0x1c, + 0xa3, 0xe4, 0x91, 0xc8, 0x6a, 0x05, 0x2c, 0x29, 0x43, 0x9c, + 0x6d, 0x84, 0x2b, 0xcc, 0xad, 0xa4, 0xd0, 0x92, 0x53, 0x95, + 0xfd, 0xf6, 0xc5, 0x33, 0xce, 0x57, 0xd6, 0x82, 0xee, 0xec, + 0xb1, 0xcc, 0x40, 0x01, 0x37, 0x21, 0x53, 0x2a, 0x65, 0x4f, + 0x1c, 0x32, 0x02, 0x43, 0x34, 0xd7, 0x0c, 0xff, 0x50, 0x90, + 0xf5, 0x7c, 0xc4, 0xd9, 0x8c, 0x55, 0x91, 0xf9, 0xb9, 0x45, + 0xf1, 0xf7, 0x10, 0x97, 0xc0, 0x03, 0x70, 0x9b, 0xbe, 0x0f, + 0x74, 0x7b, 0xc5, 0x67, 0xb7, 0x4f, 0x7d, 0x97, 0x34, 0x2f, + 0xb3, 0x75, 0xb2, 0xc6, 0x29, 0xfc, 0x9d, 0x61, 0x48, 0xac, + 0x0c, 0x49, 0xb8, 0xb7, 0x28, 0x47, 0x23, 0xe6, 0xb9, 0x96, + 0x4a, 0x60, 0x47, 0x27, 0x6d, 0x98, 0xab, 0x5b, 0xa6, 0x57, + 0x7c, 0x9c, 0x55, 0x99, 0x7b, 0xcb, 0xdd, 0x93, 0xae, 0x3d, + 0xe0, 0x53, 0x10, 0x5d, 0x63, 0x77, 0x60, 0xf4, 0xc5, 0x0a, + 0xfe, 0x2c, 0xa7, 0x45, 0x56, 0x13, 0xb4, 0xcd, 0x1e, 0x57, + 0xef, 0x17, 0x44, 0x4c, 0xb6, 0x7c, 0x3c, 0x71, 0x30, 0xb6, + 0xbf, 0x09, 0x39, 0x06, 0xa5, 0x51, 0x2a, 0x37, 0x58, 0x24, + 0x26, 0xef, 0xe8, 0x8c, 0x61, 0xbe, 0x21, 0x9f, 0xfe, 0xa5, + 0x93, 0x73, 0xd3, 0x14, 0xec, 0x39, 0x5a, 0x82, 0x2a, 0xd1, + 0xf6, 0x4d, 0xc8, 0x85, 0x73, 0x6e, 0x28, 0x75, 0x16, 0x34, + 0xf0, 0x51, 0xca, 0x11, 0xaf, 0x36, 0x8c, 0x9b, 0x30, 0xab, + 0x27, 0xf0, 0x26, 0x7f, 0x9a, 0x54, 0xd4, 0xe9, 0xb9, 0x67, + 0x6d, 0x6b, 0x1b, 0x68, 0xd9, 0xb1, 0xaa, 0x3b, 0x9d, 0x79, + 0x5f, 0x74, 0xc8, 0x81, 0x29, 0xf4, 0x66, 0x3b, 0x78, 0xf4, + 0x03, 0xf7, 0x8f, 0x0f, 0x3a, 0x6b, 0x41, 0x94, 0x9c, 0x5a, + 0x5f, 0x8b, 0xa4, 0x66, 0xef, 0x07, 0xea, 0xed, 0x02, 0xc4, + 0x81, 0x6d, 0x84, 0xb4, 0x80, 0x32, 0xcf, 0x18, 0x21, 0x81, + 0x95, 0xd1, 0x12, 0xc3, 0x56, 0x5a, 0x8f, 0x67, 0x08, 0xd4, + 0xa4, 0x8a, 0xbc, 0x6e, 0xe3, 0xdc, 0x02, 0x22, 0xfb, 0xd9, + 0xdb, 0x91, 0x34, 0x61, 0xcd, 0xf4, 0xb8, 0xe2, 0x2c, 0xfd, + 0x4a, 0xb8, 0x37, 0xc1, 0xed, 0x2c, 0x1b, 0xdf, 0xe3, 0x23, + 0x39, 0x92, 0x0f, 0xb0, 0x44, 0xb4, 0x88, 0xe5, 0xa0, 0x32, + 0x04, 0x36, 0x96, 0x14, 0x58, 0x25, 0xfc, 0xb2, 0x13, 0xd8, + 0xd4, 0x27, 0x0d, 0x02, 0xda, 0xe4, 0xfc, 0x18, 0xc2, 0x8a, + 0x56, 0x2f, 0x70, 0xd2, 0x37, 0x60, 0xa7, 0x51, 0xcf, 0x5f, + 0x4d, 0x17, 0x15, 0x02, 0x4f, 0x41, 0xed, 0x29, 0xb5, 0xf2, + 0x2b, 0x08, 0x37, 0xc2, 0xc4, 0x0f, 0x2e, 0x8b, 0xcf, 0x44, + 0x6a, 0x75, 0x4a, 0x3b, 0xab, 0x12, 0x7f, 0xd3, 0x41, 0xbd, + 0x06, 0x52, 0xb9, 0x78, 0x26, 0x5e, 0xe7, 0xbe, 0xf1, 0x3d, + 0x6e, 0x32, 0x63, 0xbb, 0xd1, 0x2e, 0x83, 0xb5, 0xc3, 0xae, + 0xde, 0x70, 0xb3, 0x20, 0xff, 0x37, 0xe2, 0x52, 0x47, 0x03, + 0xa2, 0x58, 0x41, 0xe8, 0x54, 0x5d, 0x37, 0x6a, 0x3e, 0xeb, + 0x44, 0x31, 0x27, 0x72, 0x5b, 0x6b, 0x32, 0xcb, 0x95, 0x15, + 0x05, 0x55, 0xa9, 0xfc, 0xf9, 0x48, 0x72, 0x13, 0xde, 0x51, + 0xef, 0x76, 0x4e, 0xa6, 0x57, 0x48, 0x92, 0xa6, 0x40, 0xe6, + 0x74, 0x83, 0xc9, 0x15, 0x1b, 0x71, 0xf3, 0x1e, 0xde, 0x35, + 0xd2, 0xaf, 0xe8, 0x70, 0xb8, 0xc8, 0x20, 0x1d, 0xc7, 0x1f, + 0x97, 0x11, 0xd7, 0xa6, 0xad, 0x43, 0x10, 0xf2, 0x7f, 0x83, + 0x51, 0xd2, 0xad, 0xd6, 0x7c, 0x19, 0x52, 0x31, 0xcb, 0xce, + 0x3d, 0xd0, 0x1b, 0xa2, 0x1c, 0x1f, 0x8b, 0x94, 0x88, 0xe2, + 0xdb, 0x0b, 0x4c, 0xd1, 0x9f, 0x15, 0x4b, 0xaf, 0xd9, 0xff, + 0x8b, 0xec, 0x62, 0x8e, 0x05, 0x29, 0x60, 0x0d, 0x89, 0xf1, + 0x83, 0x7d, 0xdb, 0x3c, 0x5c, 0x18, 0xf1, 0x3a, 0x9a, 0xa0, + 0x51, 0xb7, 0x6e, 0x07, 0x05, 0x91, 0xa7, 0xc5, 0xa8, 0x4a, + 0x9e, 0x45, 0x66, 0xc9, 0x73, 0xba, 0xdc, 0x7c, 0xd5, 0x01, + 0xc0, 0xb1, 0xbb, 0xad, 0x38, 0xd9, 0xcd, 0xd0, 0x9b, 0x3f, + 0xb6, 0x89, 0x12, 0x2b, 0x03, 0x83, 0x2e, 0x5d, 0x0a, 0x61, + 0x78, 0xd8, 0x0f, 0x8d, 0x0c, 0xcc, 0x5f, 0x93, 0x9f, 0xe0, + 0xb8, 0x85, 0xeb, 0x7d, 0x16, 0x09, 0xe8, 0x4b, 0x8a, 0x6a, + 0x76, 0x1a, 0xa7, 0xbd, 0xcb, 0x7e, 0xb6, 0x8f, 0x67, 0x1d, + 0x32, 0xb1, 0x9b, 0x3d, 0x48, 0x37, 0xe1, 0xe9, 0x4e, 0xa7, + 0x46, 0xb5, 0x0d, 0x89, 0xa2, 0x3d, 0x2e, 0xd9, 0x0b, 0xae, + 0x43, 0x67, 0x82, 0x75, 0x94, 0xe1, 0x63, 0x81, 0xaa, 0x9b, + 0xbc, 0xdd, 0x7a, 0x02, 0x7d, 0xd1, 0x81, 0x3a, 0x15, 0x86, + 0x7d, 0xfb, 0xee, 0x4a, 0x11, 0x9d, 0x79, 0xfd, 0x66, 0x6a, + 0xed, 0x42, 0x04, 0xdd, 0x6f, 0x50, 0x85, 0xd5, 0xba, 0xd4, + 0x1f, 0x97, 0xf5, 0x9d, 0x42, 0xd2, 0x9e, 0x34, 0xc6, 0x80, + 0xf8, 0xa3, 0x6c, 0xcf, 0x37, 0x1f, 0xa4, 0x91, 0x30, 0xbd, + 0x5e, 0xba, 0x0e, 0xa7, 0x12, 0x7d, 0xa9, 0xab, 0xf2, 0x59, + 0xf0, 0xbc, 0x92, 0xb3, 0xc9, 0x9e, 0xea, 0xa7, 0x72, 0xca, + 0xd0, 0x20, 0x3e, 0x58, 0x1b, 0x43, 0x7d, 0x77, 0x29, 0xb5, + 0x0c, 0xbe, 0xf6, 0xcf, 0xe2, 0x59, 0x55, 0xc7, 0x44, 0x8e, + 0xe3, 0x6d, 0x29, 0xe9, 0x27, 0xbf, 0x80, 0xde, 0xd2, 0x77, + 0x91, 0x2f, 0x97, 0x9a, 0xd3, 0x7d, 0x0a, 0x77, 0xa4, 0x22, + 0x9c, 0xb9, 0x45, 0xfe, 0xce, 0x1f, 0x01, 0xbc, 0x9c, 0xca, + 0xb0, 0xe1, 0xd0, 0x31, 0x81, 0x16, 0x3b, 0xab, 0x5b, 0x1e, + 0x9a, 0xc4, 0x77, 0xc3, 0x5e, 0x97, 0x27, 0x12, 0x39, 0x2b, + 0x0c, 0xdd, 0x80, 0xad, 0x9e, 0x3e, 0x86, 0xac, 0xe7, 0x50, + 0xdb, 0x70, 0x5d, 0xc4, 0xc1, 0x05, 0x58, 0x43, 0x8e, 0xa7, + 0x12, 0x5e, 0xa2, 0x14, 0x94, 0x26, 0x19, 0x2d, 0xca, 0x37, + 0x28, 0x1f, 0xd5, 0x88, 0x35, 0xa1, 0xd7, 0x7e, 0xbe, 0x7c, + 0x04, 0xb5, 0xb0, 0x49, 0xff, 0xd4, 0x3e, 0xea, 0x15, 0xc6, + 0xe2, 0xe3, 0x23, 0x18, 0x09, 0x2e, 0x6c, 0xfc, 0x72, 0x14, + 0x68, 0x27, 0xd7, 0xf0, 0x98, 0x0d, 0x59, 0xe5, 0xe6, 0x38, + 0x15, 0x46, 0xfc, 0x6f, 0xf7, 0xf3, 0x12, 0xf1, 0x2f, 0xde, + 0xcc, 0x93, 0x57, 0xef, 0x6a, 0x58, 0x31, 0xfe, 0x8f, 0x19, + 0x35, 0xae, 0x85, 0x02, 0xc6, 0xc4, 0x41, 0x58, 0xec, 0xe9, + 0xaf, 0x78, 0x2d, 0x96, 0x1f, 0x8a, 0x3e, 0xfe, 0xe6, 0x9e, + 0x1c, 0x82, 0x64, 0x6c, 0x4b, 0xfb, 0xb1, 0x98, 0x79, 0x4d, + 0x69, 0xf5, 0xfc, 0xa3, 0x71, 0x6d, 0xf5, 0x98, 0xe9, 0xa7, + 0xf0, 0xfd, 0x74, 0xb8, 0x65, 0x25, 0xf9, 0x66, 0x79, 0x44, + 0x0b, 0xbb, 0x0d, 0xb6, 0xbd, 0x39, 0xfe, 0xf7, 0xf8, 0xd8, + 0x41, 0x9d, 0x8a, 0x10, 0xbb, 0x19, 0x9c, 0x48, 0xe4, 0xac, + 0x30, 0xf2, 0x45, 0xf1, 0x3d, 0xf8, 0x5d, 0xf5, 0x1a, 0x83, + 0x6f, 0xe4, 0xcd, 0x40, 0x7a, 0x3a, 0xf7, 0x51, 0x73, 0xd3, + 0xc4, 0xdb, 0xe9, 0xe8, 0x66, 0xee, 0xad, 0xb9, 0x5a, 0xb3, + 0x93, 0x20, 0x7a, 0x9a, 0xc8, 0xd5, 0x01, 0xfb, 0xf5, 0x80, + 0xf6, 0x7d, 0x28, 0x5e, 0x20, 0x65, 0x6b, 0x0e, 0x2e, 0x04, + 0xc6, 0xdf, 0x8d, 0x9b, 0xd1, 0x38, 0x85, 0x0b, 0xea, 0x03, + 0xb7, 0x96, 0x82, 0x14, 0xa3, 0xcf, 0x7d, 0xd9, 0x48, 0xbb, + 0xcd, 0x50, 0x15, 0x98, 0xe1, 0x53, 0xd4, 0x0a, 0x58, 0x52, + 0x86, 0xfb, 0xda, 0xcb, 0x56, 0x5b, 0x99, 0x8b, 0x63, 0xe7, + 0x23, 0x0e, 0x43, 0xf9, 0xb1, 0x48, 0x0b, 0x30, 0x61, 0xcd, + 0x93, 0x7b, 0x85, 0xe3, 0xf3, 0x74, 0xa6, 0xe9, 0x39, 0x2f, + 0x49, 0x66, 0x5f, 0xae, 0x6f, 0xc7, 0x1f, 0x1b, 0xa1, 0x5b, + 0x80, 0x02, 0x64, 0xb4, 0xae, 0xdc, 0xa0, 0x7c, 0xd2, 0x65, + 0xd4, 0xc1, 0xda, 0x3b, 0xbd, 0x33, 0x10, 0x91, 0x6e, 0x42, + 0xa6, 0x54, 0xca, 0x9e, 0x38, 0x64, 0x04, 0x86, 0x68, 0x6d, + 0x18, 0x3d, 0xa0, 0xe3, 0xac, 0x1f, 0x31, 0xa7, 0x23, 0x84, + 0xb5, 0xaf, 0xbf, 0x80, 0xad, 0x4d, 0x04, 0x55, 0x30, 0x70, + 0x29, 0xf8, 0x4b, 0x71, 0xdb, 0xaa, 0xe1, 0x31, 0xb1, 0x8a, + 0x21, 0x2d, 0x20, 0xed, 0x43, 0x06, 0xeb, 0xa5, 0xdc, 0x82, + 0x32, 0xb0, 0x6c, 0xfa, 0x0a, 0x8c, 0xe4, 0x0d, 0x3c, 0x85, + 0xd3, 0x95, 0xe0, 0xf5, 0xbf, 0x1e, 0xe8, 0xf6, 0x49, 0xce, + 0xad, 0x9e, 0xfa, 0xed, 0x68, 0x5e, 0xa5, 0xea, 0x22, 0xa8, + 0x28, 0xed, 0x01, 0xec, 0xc4, 0x05, 0x16, 0x98, 0x3f, 0xcd, + 0x74, 0x36, 0x35, 0x79, 0xa7, 0x4f, 0x52, 0x3b, 0xf9, 0xc2, + 0x90, 0x9b, 0x18, 0x92, 0xb3, 0xad, 0x50, 0x8e, 0x46, 0x0f, + 0x65, 0x12, 0xc5, 0xc8, 0x10, 0xd8, 0x1d, 0x50, 0xa3, 0x94, + 0x76, 0x8d, 0x4c, 0xe6, 0xd6, 0x9c, 0xb1, 0xef, 0x94, 0xc0, + 0x8e, 0x4e, 0xda, 0xf3, 0x95, 0xb6, 0x8f, 0xae, 0xf8, 0xfb, + 0xaa, 0xf1, 0x73, 0xb2, 0x03, 0x33, 0x67, 0x54, 0x57, 0x38, + 0x2e, 0xb0, 0x4a, 0x8e, 0xe4, 0x93, 0x3a, 0x62, 0xf6, 0x55, + 0x79, 0xe5, 0x9f, 0x7a, 0x03, 0xa6, 0x20, 0xba, 0xc6, 0xee, + 0xc0, 0x2b, 0x49, 0x14, 0x34, 0x08, 0xee, 0x16, 0x76, 0x60, + 0x8e, 0x6d, 0x9b, 0xbc, 0x03, 0xce, 0xdc, 0x43, 0xd9, 0x87, + 0x3f, 0x58, 0x8d, 0x8a, 0xac, 0x26, 0xab, 0x59, 0x3c, 0xae, + 0x1d, 0x2e, 0x88, 0x98, 0xaf, 0xf8, 0xfd, 0x05, 0x1a, 0x79, + 0x45, 0x3c, 0x26, 0x92, 0x87, 0xa8, 0xd8, 0x0e, 0x94, 0xf0, + 0x3f, 0x6b, 0x78, 0xe2, 0x60, 0xaf, 0xbd, 0x12, 0x72, 0x0c, + 0x89, 0xa2, 0x54, 0x6e, 0xb0, 0x48, 0x4c, 0x1d, 0xba, 0xbf, + 0xf7, 0x5c, 0x54, 0x08, 0xff, 0xc7, 0x32, 0xa4, 0x91, 0x4e, + 0xac, 0x20, 0xdc, 0x8e, 0x13, 0xdb, 0xc2, 0xbf, 0x42, 0xfd, + 0x3f, 0x89, 0xe5, 0xe6, 0x65, 0x28, 0x1b, 0x72, 0xb4, 0xc7, + 0xd1, 0x86, 0x55, 0x4c, 0xab, 0xe7, 0xb2, 0x42, 0x5e, 0xe0, + 0xa0, 0x08, 0x07, 0x1a, 0x24, 0x54, 0x54, 0x61, 0x2f, 0x9a, + 0x53, 0xc9, 0xe6, 0xdc, 0x50, 0xea, 0x2c, 0x68, 0x23, 0xa2, + 0x57, 0x22, 0x96, 0x3c, 0xb8, 0x69, 0xba, 0xd3, 0x6b, 0x17, + 0xeb, 0xec, 0xe9, 0x48, 0x3f, 0xca, 0xc7, 0xb1, 0x9d, 0x6c, + 0xdb, 0xf5, 0x60, 0x95, 0x4e, 0x23, 0x4c, 0xfe, 0xf7, 0xa8, + 0x6b, 0x11, 0xb1, 0xce, 0x5f, 0x31, 0x4c, 0x06, 0x89, 0x8f, + 0xc3, 0xe8, 0xf7, 0xf8, 0x32, 0x88, 0x77, 0x79, 0x21, 0x5d, + 0xda, 0xd6, 0x36, 0xd0, 0x71, 0xa1, 0x97, 0x76, 0xf9, 0xf2, + 0xbe, 0xe8, 0x53, 0xc1, 0x52, 0x2b, 0x18, 0x8b, 0xa1, 0x23, + 0x98, 0xbb, 0x1a, 0xbd, 0x42, 0xf4, 0x7b, 0xc8, 0x4f, 0xa9, + 0xc2, 0xb8, 0xcc, 0x76, 0xf0, 0x2b, 0x06, 0x2d, 0xdd, 0x1e, + 0x74, 0xd6, 0x82, 0xeb, 0xfb, 0xb4, 0xbe, 0xd5, 0x0e, 0x2b, + 0x67, 0xd8, 0xef, 0x37, 0x50, 0xd5, 0xcf, 0xd0, 0x47, 0xcb, + 0xe7, 0xdc, 0x2e, 0x46, 0x8b, 0xcc, 0x1d, 0x0e, 0x17, 0x19, + 0x04, 0x4b, 0xc1, 0xda, 0xcb, 0xab, 0xc3, 0x64, 0x5d, 0x30, + 0x49, 0x91, 0x8a, 0xfd, 0xfe, 0x03, 0x89, 0x80, 0x7a, 0xdc, + 0x0e, 0x8b, 0xdf, 0x0c, 0xcd, 0xa3, 0x42, 0xc1, 0xe9, 0x61, + 0x24, 0x45, 0xac, 0xb4, 0xdd, 0xce, 0x10, 0x6b, 0x8b, 0xd7, + 0xbb, 0xdc, 0x80, 0x9c, 0x7e, 0x92, 0xcd, 0x5f, 0x21, 0x7f, + 0x66, 0xc8, 0xd5, 0x4b, 0x97, 0xbf, 0x2b, 0x4f, 0x05, 0x7b, + 0x04, 0x44, 0x35, 0x71, 0x75, 0xe1, 0x68, 0xc2, 0x59, 0x2b, + 0xb3, 0x07, 0x58, 0x39, 0xc7, 0x26, 0x93, 0xb7, 0xdc, 0x6b, + 0xf8, 0x2a, 0xd3, 0xc4, 0x9c, 0x0b, 0xaf, 0x6f, 0xc8, 0xaa, + 0x94, 0xb3, 0x6e, 0x41, 0x19, 0x58, 0x36, 0x7d, 0x05, 0x46, + 0x72, 0xe7, 0x1e, 0xa3, 0x88, 0xab, 0x56, 0xee, 0xf9, 0xb2, + 0xf0, 0x42, 0xbb, 0xb6, 0xbe, 0x40, 0xb7, 0xc7, 0x02, 0xcb, + 0x18, 0x38, 0xd3, 0x09, 0x83, 0x64, 0x08, 0x6c, 0xef, 0x28, + 0xb0, 0x4a, 0x3b, 0xa7, 0x26, 0x73, 0x6b, 0x4e, 0x11, 0x54, + 0x14, 0x97, 0xe1, 0x76, 0x62, 0xe3, 0x0b, 0x4c, 0xfe, 0x87, + 0x3a, 0x1b, 0xfb, 0xdd, 0x1a, 0x04, 0x77, 0x0b, 0x3b, 0x30, + 0x47, 0xd7, 0xac, 0x5e, 0xe0, 0x67, 0x6e, 0xc0, 0x8d, 0xa2, + 0xd8, 0x59, 0xe0, 0xf8, 0xd2, 0x2a, 0xca, 0x1c, 0x17, 0x58, + 0x25, 0x47, 0x72, 0xa8, 0x1d, 0x31, 0x5d, 0xbe, 0x9a, 0x2e, + 0x2a, 0x04, 0x9e, 0x82, 0x19, 0x52, 0xa9, 0x27, 0x56, 0x10, + 0x6e, 0x47, 0x9f, 0xe3, 0x0d, 0xdd, 0xc3, 0x1e, 0x13, 0x49, + 0xa2, 0x54, 0x6c, 0x07, 0x4a, 0x78, 0xfe, 0xd4, 0x4b, 0x1e, + 0x5c, 0xd5, 0x5d, 0x88, 0xd4, 0xea, 0x94, 0x76, 0x95, 0x24, + 0xfe, 0x65, 0x82, 0xb9, 0x89, 0x43, 0xcb, 0x26, 0xb4, 0x92, + 0x59, 0x21, 0x2f, 0x70, 0x50, 0x04, 0xe2, 0x0d, 0x12, 0x2a, + 0x0c, 0xa4, 0xb1, 0xf0, 0x4c, 0xbc, 0x0d, 0xbf, 0x21, 0x7a, + 0xdc, 0x64, 0xc6, 0xb5, 0x61, 0x5c, 0xce, 0xf9, 0x26, 0x03, + 0xa5, 0xa6, 0x80, 0x74, 0x9a, 0x7c, 0x19, 0x44, 0xda, 0xdd, + 0xf1, 0xcf, 0xc5, 0xa9, 0x45, 0x9f, 0x7f, 0xe0, 0xa5, 0x40, + 0x3d, 0x6e, 0x07, 0xa4, 0x8e, 0x06, 0x87, 0xb0, 0x07, 0xf4, + 0xd2, 0x6c, 0x96, 0xfa, 0x28, 0x8b, 0x86, 0x68, 0xc2, 0x84, + 0x92, 0x6e, 0x17, 0x23, 0x82, 0x13, 0xa8, 0xba, 0x6e, 0xd4, + 0x7c, 0x15, 0x88, 0x62, 0x4e, 0xe4, 0xb6, 0xd6, 0x64, 0x55, + 0x40, 0x4e, 0x3f, 0x49, 0x87, 0xce, 0xf1, 0xde, 0x33, 0x64, + 0x8b, 0xc4, 0xaa, 0xbe, 0xf4, 0xc6, 0xe9, 0x2a, 0x0a, 0xaa, + 0x91, 0x3b, 0x31, 0x90, 0xe4, 0x26, 0x7f, 0xa2, 0x1d, 0xec, + 0x9c, 0x8f, 0x2b, 0x77, 0x9d, 0x59, 0x78, 0x21, 0xbc, 0x5b, + 0x5f, 0x20, 0xba, 0x82, 0x01, 0x84, 0x0c, 0x1c, 0xae, 0x90, + 0xe7, 0x8f, 0x80, 0x0f, 0xe8, 0xc5, 0x51, 0x2a, 0x36, 0xe2, + 0x25, 0x3c, 0x7f, 0x6a, 0x6c, 0xcd, 0x70, 0x7c, 0x69, 0x15, + 0x65, 0x0e, 0xea, 0x2c, 0xf3, 0xc2, 0x39, 0x54, 0xef, 0xf9, + 0x67, 0x9d, 0x13, 0xe0, 0xb3, 0x53, 0x40, 0x3a, 0x4d, 0x3e, + 0xed, 0x22, 0x6d, 0x8f, 0x99, 0x86, 0xa5, 0xc0, 0x84, 0x13, + 0x5a, 0x49, 0xcd, 0xf1, 0xf6, 0x38, 0x28, 0x02, 0x71, 0xe7, + 0x09, 0x15, 0x20, 0x27, 0xfe, 0xc5, 0xa2, 0x67, 0x99, 0x6f, + 0xf8, 0x32, 0xa4, 0x62, 0x55, 0x5f, 0x7a, 0x63, 0xe2, 0x7a, + 0x69, 0x36, 0x4b, 0x7d, 0x14, 0xa4, 0x43, 0x34, 0x61, 0x42, + 0x49, 0x37, 0xea, 0xf0, 0x36, 0x87, 0x38, 0x3e, 0xd5, 0xeb, + 0xd3, 0x07, 0x75, 0x16, 0x98, 0x61, 0xfd, 0x2a, 0x96, 0x9d, + 0xf4, 0xda, 0xaf, 0xcd, 0x3c, 0xf1, 0x5e, 0xcc, 0xce, 0x10, + 0x5d, 0x41, 0xe1, 0x42, 0x06, 0x0e, 0x71, 0x3d, 0xd5, 0x1b, + 0xc4, 0xdf, 0x0a, 0x52, 0xc0, 0x1a, 0xd1, 0x21, 0xc5, 0xfa, + 0x75, 0x78, 0xb3, 0x60, 0x42, 0xe8, 0x2d, 0xc5, 0x87, 0x99, + 0x7b, 0x1c, 0x14, 0x01, 0xd9, 0x92, 0xe5, 0xeb, 0xb8, 0x30, + 0x21, 0x74, 0xf7, 0x83, 0xa2, 0xad, 0xdc, 0x0e, 0x0a, 0xe1, + 0x8d, 0x49, 0x93, 0x94, 0x7a, 0x6d, 0xb6, 0x87, 0x1e, 0x99, + 0x2f, 0x66, 0x67, 0x08, 0xcf, 0xc1, 0x91, 0x21, 0x03, 0x07, + 0xff, 0x8a, 0xcc, 0x51, 0xe6, 0xb7, 0x7b, 0xf8, 0x69, 0x02, + 0x43, 0xa1, 0xb5, 0x99, 0x70, 0x71, 0x3d, 0xd7, 0x5b, 0xa2, + 0x0f, 0xad, 0xf6, 0x33, 0xd2, 0x04, 0x86, 0x81, 0xa9, 0xf1, + 0xe0, 0xe2, 0x59, 0x63, 0xf5, 0x7e, 0xaf, 0xd1, 0x24, 0x56, + 0x06, 0xc5, 0x5c, 0xba, 0x14, 0xc2, 0xf0, 0x73, 0x9b, 0x3e, + 0x62, 0x8d, 0x46, 0xcb, 0xa9, 0x9d, 0xbd, 0xc3, 0x99, 0x9a, + 0x08, 0xaa, 0x60, 0xe0, 0x1e, 0xd9, 0x18, 0x5b, 0xbe, 0xe5, + 0xfd, 0x03, 0xb3, 0xc9, 0x15, 0xfa, 0x2c, 0x12, 0x13, 0x96, + 0xdc, 0x84, 0x8f, 0xa8, 0x57, 0xff, 0x70, 0xc8, 0x08, 0xcf, + 0xd0, 0xda, 0x30, 0x7a, 0x83, 0x05, 0xd7, 0xd4, 0xec, 0x34, + 0x8d, 0xb9, 0x55, 0xfc, 0xaf, 0xdd, 0xce, 0x3a, 0x64, 0xa1, + 0xf5, 0x7a, 0x15, 0x89, 0x7b, 0xc7, 0x64, 0xa3, 0xd8, 0x37, + 0x14, 0xdb, 0x0b, 0x1a, 0x78, 0xc9, 0x65, 0xe9, 0x90, 0x6e, + 0x01, 0x11, 0x9c, 0x8d, 0x8c, 0xa9, 0x1a, 0xd1, 0x87, 0x7a, + 0x5c, 0x71, 0x16, 0x9f, 0x52, 0x33, 0x96, 0xe2, 0x75, 0x97, + 0x01, 0x62, 0xa1, 0xd7, 0x42, 0x5a, 0x40, 0x19, 0x86, 0x0c, + 0x86, 0xce, 0xc7, 0xea, 0xeb, 0x01, 0xc6, 0xc1, 0x97, 0xf5, + 0xbb, 0x79, 0xf4, 0x04, 0xfa, 0x61, 0x44, 0x93, 0x50, 0x19, + 0x02, 0x1b, 0x4b, 0x0a, 0x2c, 0xf3, 0x7e, 0x59, 0xe8, 0x6c, + 0x6a, 0xf2, 0xc1, 0x74, 0x2a, 0xcf, 0xfa, 0x35, 0x1f, 0x94, + 0x22, 0xf9, 0xf2, 0x39, 0xcc, 0xd4, 0x19, 0x84, 0x03, 0x29, + 0xbd, 0x3c, 0x13, 0x2f, 0x92, 0x5f, 0x99, 0xff, 0x37, 0x19, + 0xd0, 0xbc, 0x89, 0x17, 0x08, 0x79, 0xde, 0xa0, 0xc9, 0x69, + 0xb7, 0x6b, 0x3e, 0xed, 0x29, 0xf9, 0x84, 0x67, 0xff, 0x68, + 0xca, 0x24, 0x49, 0x53, 0x20, 0x73, 0x3a, 0xa0, 0x85, 0xeb, + 0xec, 0xd9, 0x98, 0x0f, 0x6f, 0xfb, 0x4f, 0xc3, 0x33, 0x85, + 0xd8, 0x5d, 0x6e, 0x3e, 0x8b, 0xe1, 0x60, 0xb9, 0xbc, 0xb7, + 0x1c, 0x8d, 0x8d, 0x9e, 0xa4, 0x76, 0x31, 0x47, 0xe3, 0xf5, + 0x30, 0xe7, 0xa5, 0x99, 0xa0, 0xdf, 0x8c, 0x1e, 0x24, 0xfa, + 0x91, 0x95, 0x27, 0xb2, 0x23, 0xbb, 0xe7, 0xa5, 0x51, 0xff, + 0x17, 0x8d, 0xe4, 0x57, 0xe6, 0xa7, 0x06, 0x66, 0xce, 0xa8, + 0xae, 0x70, 0x5c, 0xa3, 0x94, 0xdf, 0x0b, 0xe5, 0x74, 0xc4, + 0x63, 0x40, 0x7c, 0xb0, 0x36, 0x86, 0xfa, 0xee, 0x52, 0xa9, + 0x18, 0xbf, 0x2f, 0x5d, 0x07, 0xb2, 0xa1, 0x1d, 0xeb, 0x43, + 0xdf, 0x9c, 0x77, 0x25, 0xe9, 0xaf, 0xdd, 0x9f, 0x33, 0x35, + 0x97, 0x21, 0xaa, 0x4d, 0x88, 0xdf, 0x05, 0xda, 0x52, 0x11, + 0x4e, 0xbd, 0xc3, 0x7f, 0x67, 0xee, 0xe1, 0x5e, 0x68, 0x10, + 0x1f, 0x2c, 0xec, 0xc0, 0xdf, 0xda, 0xf5, 0xbb, 0x06, 0x5f, + 0x7b, 0x86, 0x71, 0xcd, 0xed, 0xf7, 0x65, 0xfa, 0x14, 0xee, + 0x8b, 0x44, 0xfb, 0xb1, 0x8a, 0x3f, 0x5f, 0x3e, 0x02, 0xbb, + 0x2f, 0xaa, 0xf2, 0x09, 0xfd, 0xf4, 0x06, 0x8f, 0x40, 0xb7, + 0x4f, 0x1f, 0x43, 0x56, 0x92, 0x28, 0xfb, 0x57, 0xa3, 0x01, + 0x63, 0x62, 0xc1, 0x2c, 0x76, 0x95, 0xb6, 0x3c, 0xf7, 0x4b, + 0xee, 0x45, 0x39, 0x0a, 0x34, 0xf2, 0x8a, 0x78, 0x4c, 0xe7, + 0xcd, 0x93, 0x73, 0x1c, 0xeb, 0x23, 0x7e, 0xd6, 0xbc, 0xed, + 0x4e, 0x24, 0x72, 0x56, 0x18, 0x79, 0xc3, 0x99, 0xff, 0x7c, + 0xcf, 0x9b, 0x0d, 0xa0, 0x7e, 0xb0, 0xd9, 0xd7, 0x9b, 0x4c, + 0x95, 0xb2, 0x78, 0x9f, 0x3a, 0x5c, 0xd3, 0xf3, 0x9d, 0x33, + 0x75, 0xe0, 0xba, 0x4b, 0x41, 0x0a, 0xb0, 0x86, 0xdf, 0x8d, + 0x24, 0xbc, 0x87, 0x28, 0xeb, 0x4c, 0xb7, 0xbd, 0x2d, 0xb8, + 0xa8, 0x10, 0x3d, 0x4d, 0x64, 0x8b, 0xe1, 0x9c, 0x9b, 0x40, + 0x7b, 0xdf, 0x32, 0x5a, 0x57, 0x6e, 0x50, 0x3e, 0x69, 0xd3, + 0x6a, 0x81, 0x6d, 0xfc, 0xbf, 0xf8, 0x08, 0xa9, 0xf0, 0x07, + 0xc0, 0x9d, 0xb9, 0x24, 0xe4, 0x18, 0xd1, 0x87, 0xa8, 0xdc, + 0xa3, 0x90, 0x98, 0x3a, 0xa3, 0x92, 0x3d, 0x6b, 0x7c, 0x17, + 0x2a, 0x4f, 0x07, 0x05, 0x46, 0x30, 0x12, 0x5c, 0xd8, 0x3b, + 0x61, 0xcf, 0xaa, 0x98, 0x95, 0x0d, 0xa7, 0x84, 0xbc, 0x03, + 0x83, 0x10, 0x0e, 0x34, 0x48, 0xa8, 0xe4, 0x28, 0xd0, 0x4e, + 0x6d, 0x23, 0xf3, 0x1a, 0xb2, 0x09, 0x0f, 0x70, 0x2a, 0x8c, + 0x3b, 0xde, 0x26, 0x75, 0x47, 0xbd, 0x84, 0x39, 0x7e, 0xd1, + 0x09, 0x0f, 0xca, 0x50, 0x36, 0xe4, 0xab, 0x4d, 0x2d, 0x25, + 0x24, 0x21, 0x5e, 0x7f, 0x5b, 0xe5, 0xae, 0x1d, 0xd4, 0xb0, + 0x62, 0x3f, 0xdd, 0x32, 0xef, 0x78, 0xb3, 0xd2, 0xb7, 0x65, + 0xd6, 0x2e, 0x15, 0x1b, 0x11, 0x90, 0x7e, 0x57, 0x4d, 0xa1, + 0x6a, 0x9f, 0xc9, 0x04, 0x4f, 0x4b, 0x82, 0xb0, 0x1b, 0x11, + 0x9d, 0xf0, 0x5a, 0xef, 0x3e, 0xd7, 0xa8, 0xc2, 0x5e, 0xf7, + 0xa6, 0x51, 0x0f, 0x7b, 0xa0, 0x17, 0x58, 0xd0, 0x46, 0x87, + 0xae, 0x44, 0x7c, 0x3f, 0x0f, 0xff, 0x38, 0xc7, 0xc8, 0xd8, + 0x96, 0x35, 0xa1, 0xf3, 0xf2, 0x9a, 0xd2, 0x29, 0xbe, 0x62, + 0x98, 0x0c, 0xd1, 0xdd, 0x45, 0x13, 0x2d, 0x33, 0x64, 0xd3, + 0xee, 0xf2, 0x42, 0xba, 0x3b, 0x85, 0xe2, 0xda, 0x29, 0xf3, + 0x11, 0x8d, 0x23, 0x39, 0xe8, 0xb3, 0xca, 0x4a, 0x31, 0xcc, + 0xf9, 0xd8, 0x75, 0x29, 0xc0, 0xe9, 0x9c, 0x46, 0x98, 0x3f, + 0x2d, 0x93, 0xd6, 0x22, 0xa1, 0x5f, 0xf2, 0x88, 0x16, 0xb5, + 0x1a, 0xaf, 0xb9, 0x72, 0x3f, 0x2d, 0x33, 0x73, 0x82, 0xf9, + 0xd7, 0x20, 0x30, 0xd5, 0x81, 0x46, 0xf3, 0xb5, 0x34, 0xb9, + 0x84, 0x2b, 0xf6, 0x53, 0x9e, 0x91, 0x47, 0xb3, 0xb5, 0x32, + 0xfb, 0x90, 0x0b, 0x9b, 0x60, 0x27, 0x8a, 0x21, 0x7a, 0x33, + 0xba, 0x29, 0x34, 0xc5, 0x77, 0x6f, 0x6c, 0x63, 0xe2, 0x81, + 0xed, 0xec, 0x31, 0x27, 0xbf, 0x13, 0xa6, 0x41, 0xa4, 0x56, + 0xde, 0x0b, 0x59, 0x80, 0xf4, 0x74, 0x2d, 0xa2, 0xe6, 0x65, + 0x4b, 0x75, 0x11, 0x13, 0xcc, 0x1f, 0x1c, 0x56, 0xce, 0x73, + 0x1d, 0x6e, 0xa0, 0x69, 0x5d, 0x63, 0x8e, 0x55, 0x0d, 0x7b, + 0x5c, 0x8c, 0x99, 0xb1, 0xb4, 0xa5, 0xe5, 0x40, 0xf4, 0xf7, + 0x53, 0x69, 0x02, 0x35, 0x29, 0xc3, 0x2f, 0xfa, 0x5b, 0xec, + 0x23, 0x56, 0x0c, 0x5a, 0x79, 0x3c, 0xe8, 0x6f, 0xc7, 0x15, + 0x35, 0xab, 0xbf, 0x69, 0x50, 0xbc, 0x40, 0xca, 0xd6, 0x1c, + 0x5c, 0x08, 0x4f, 0x7d, 0xd9, 0xf5, 0x61, 0x70, 0xc9, 0x16, + 0x92, 0xe1, 0xd7, 0x39, 0x3f, 0x06, 0xd1, 0xc3, 0xf4, 0x7b, + 0x1c, 0xd5, 0x7d, 0x18, 0x59, 0x85, 0x17, 0x06, 0xad, 0xef, + 0xc7, 0x28, 0x85, 0x5d, 0xfa, 0x71, 0x90, 0xb5, 0x59, 0xa0, + 0x2a, 0xf3, 0xd5, 0x5b, 0x3a, 0x1c, 0x2e, 0x32, 0x08, 0x96, + 0x41, 0x77, 0x55, 0x95, 0x45, 0xc8, 0xba, 0x60, 0x01, 0xa6, + 0x6b, 0x14, 0xb0, 0xa4, 0xcf, 0x35, 0x77, 0x55, 0xac, 0xb6, + 0xf1, 0xd5, 0xc6, 0x0d, 0xc3, 0xfb, 0xfc, 0xe7, 0x59, 0xbe, + 0x42, 0xfe, 0xcc, 0x53, 0x69, 0x96, 0xed, 0xbd, 0x56, 0x9e, + 0x46, 0x1c, 0x86, 0x31, 0xa1, 0x90, 0x16, 0x60, 0xc2, 0x59, + 0xe5, 0xf6, 0xc9, 0x05, 0x25, 0xe8, 0x84, 0x41, 0x11, 0xc2, + 0x48, 0x8a, 0x9b, 0xab, 0x79, 0x5f, 0x20, 0xd6, 0xd5, 0x6d, + 0xb5, 0x7b, 0x8f, 0x11, 0x72, 0x5e, 0x92, 0xcc, 0xbe, 0x9f, + 0xde, 0x4d, 0x3e, 0x36, 0x81, 0xb6, 0xc3, 0x04, 0x4d, 0x4c, + 0xe5, 0xad, 0x7b, 0xd6, 0x33, 0x54, 0x65, 0x4b, 0xfb, 0x16, + 0x9d, 0xde, 0x53, 0x97, 0xc8, 0xab, 0x9f, 0x7b, 0x83, 0xf8, + 0x67, 0xca, 0x6b, 0x41, 0x77, 0x76, 0xb9, 0x66, 0x20, 0xe1, + 0x0a, 0xf6, 0x08, 0x88, 0x6a, 0xe2, 0xea, 0x01, 0xd0, 0x47, + 0xb2, 0x56, 0xa5, 0x0e, 0xb0, 0x72, + }, + { + /* 12 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x96, 0xca, 0xd9, + 0x30, 0x68, 0x2f, 0x14, 0x1a, 0x17, 0x0c, 0xca, 0x0c, 0x70, + 0xda, 0xbf, 0x20, 0xef, 0x57, 0x71, 0x60, 0xd0, 0x5e, 0x28, + 0x34, 0x2e, 0x18, 0x57, 0x18, 0xe0, 0x77, 0xbd, 0x30, 0x79, + 0x9d, 0xa8, 0x50, 0xb8, 0x71, 0x3c, 0x2e, 0x39, 0x14, 0x9d, + 0x14, 0x90, 0xad, 0x02, 0x40, 0x1d, 0xae, 0xe2, 0xc0, 0x63, + 0xbc, 0x50, 0x68, 0x5c, 0x30, 0xae, 0x30, 0x03, 0xee, 0xb9, + 0x50, 0x8b, 0x64, 0x3b, 0xf0, 0x0b, 0x93, 0x44, 0x72, 0x4b, + 0x3c, 0x64, 0x3c, 0x73, 0x34, 0x06, 0x60, 0xf2, 0xf9, 0x93, + 0xa0, 0xb3, 0xe2, 0x78, 0x5c, 0x72, 0x28, 0xf9, 0x28, 0xe3, + 0x99, 0x04, 0x70, 0x64, 0x33, 0x4a, 0x90, 0xdb, 0xcd, 0x6c, + 0x46, 0x65, 0x24, 0x33, 0x24, 0x93, 0x43, 0xbb, 0x80, 0x3a, + 0x9f, 0x07, 0x43, 0xc6, 0xbb, 0xa0, 0xd0, 0xb8, 0x60, 0x9f, + 0x60, 0x06, 0x1f, 0xb1, 0x90, 0xac, 0x55, 0xde, 0x73, 0xae, + 0x94, 0xb4, 0xca, 0xaf, 0x6c, 0x55, 0x6c, 0x76, 0xc5, 0x0e, + 0xa0, 0xd5, 0xc8, 0x76, 0x23, 0x16, 0xe5, 0x88, 0xe4, 0x96, + 0x78, 0xc8, 0x78, 0xe6, 0x68, 0x0c, 0xb0, 0x43, 0x02, 0xaf, + 0x13, 0x7e, 0xca, 0x9c, 0xfe, 0x81, 0x74, 0x02, 0x74, 0x96, + 0xb2, 0xb3, 0xc0, 0x27, 0x31, 0xe5, 0x83, 0xa5, 0x07, 0xf0, + 0xb8, 0xe4, 0x50, 0x31, 0x50, 0x05, 0xf1, 0x08, 0xd0, 0xb1, + 0xfb, 0x3c, 0xb3, 0xcd, 0x28, 0xe4, 0xa2, 0xf3, 0x5c, 0xfb, + 0x5c, 0x75, 0x2b, 0xb7, 0xe0, 0xc8, 0x66, 0x94, 0xe3, 0x75, + 0x59, 0xd8, 0x8c, 0xca, 0x48, 0x66, 0x48, 0xe5, 0x86, 0xb5, + 0xf0, 0x5e, 0xac, 0x4d, 0xd3, 0x1d, 0x76, 0xcc, 0x96, 0xdd, + 0x44, 0xac, 0x44, 0x95, 0x5c, 0x0a, 0xc3, 0x74, 0xfd, 0x0e, + 0x86, 0x4f, 0xb5, 0x83, 0x63, 0xb3, 0xc0, 0xfd, 0xc0, 0x0c, + 0x3e, 0xa1, 0xd3, 0xe2, 0x37, 0xd7, 0xb6, 0x27, 0x9a, 0x97, + 0x79, 0xa4, 0xcc, 0x37, 0xcc, 0x7c, 0xe4, 0x1e, 0xe3, 0x9b, + 0xaa, 0x7f, 0xe6, 0x9f, 0xeb, 0xab, 0x57, 0x9d, 0xd8, 0xaa, + 0xd8, 0xec, 0x49, 0x1c, 0xf3, 0x0d, 0x60, 0xa6, 0xd6, 0xf7, + 0xc4, 0xbf, 0x4d, 0x8a, 0xd4, 0x60, 0xd4, 0x9c, 0x93, 0xa3, + 0x83, 0x69, 0x53, 0xec, 0x46, 0x2c, 0x09, 0xd3, 0x0b, 0xef, + 0xf0, 0x53, 0xf0, 0x0f, 0xd0, 0x18, 0x93, 0xff, 0x99, 0x35, + 0x76, 0x44, 0x26, 0xc7, 0x11, 0xf8, 0xfc, 0x99, 0xfc, 0x7f, + 0x0a, 0xa7, 0xa3, 0x86, 0x04, 0x9d, 0x26, 0xfc, 0x57, 0xfb, + 0x3f, 0xc1, 0xe8, 0x04, 0xe8, 0xef, 0xa7, 0xa5, 0xb3, 0x10, + 0xce, 0x44, 0x16, 0x94, 0x78, 0xef, 0x25, 0xd6, 0xe4, 0xce, + 0xe4, 0x9f, 0x7d, 0x1a, 0x43, 0x4e, 0x62, 0x09, 0xc5, 0x89, + 0x0e, 0x23, 0xb3, 0x0b, 0xa0, 0x62, 0xa0, 0x0a, 0x21, 0x10, + 0x53, 0xd8, 0xa8, 0xd0, 0xf5, 0xe1, 0x21, 0x37, 0xa9, 0x1c, + 0xac, 0xa8, 0xac, 0x7a, 0xfb, 0xaf, 0x63, 0xa1, 0x35, 0x78, + 0xa5, 0x59, 0x50, 0x0b, 0x87, 0x25, 0xb8, 0x35, 0xb8, 0xea, + 0x56, 0xad, 0x73, 0x37, 0xff, 0xa1, 0x95, 0x31, 0x7f, 0x1f, + 0x9d, 0x32, 0xb4, 0xff, 0xb4, 0x9a, 0x8c, 0x12, 0x03, 0x53, + 0xcc, 0xeb, 0x05, 0xea, 0xb2, 0x73, 0xdb, 0x57, 0x90, 0xcc, + 0x90, 0x09, 0xcf, 0xa9, 0x13, 0xc5, 0x06, 0x32, 0x35, 0x82, + 0x9d, 0x67, 0xc1, 0x40, 0x9c, 0x06, 0x9c, 0x79, 0x15, 0x16, + 0x23, 0xbc, 0x9b, 0x9a, 0x65, 0x3a, 0xec, 0x5b, 0xef, 0x79, + 0x88, 0x9b, 0x88, 0xe9, 0xb8, 0x14, 0x33, 0x2a, 0x51, 0x43, + 0x55, 0x52, 0xc3, 0x4f, 0xf5, 0x6e, 0x84, 0x51, 0x84, 0x99, + 0x62, 0xab, 0x45, 0xe8, 0x39, 0x1c, 0xcf, 0x9e, 0xa9, 0xc5, + 0xc6, 0xa5, 0x43, 0x39, 0x43, 0x18, 0x7c, 0x81, 0x55, 0x7e, + 0xf3, 0xc5, 0xff, 0xf6, 0x86, 0xd1, 0xdc, 0xb2, 0x4f, 0xf3, + 0x4f, 0x68, 0xa6, 0x3e, 0x65, 0x07, 0x6e, 0x6d, 0xaf, 0x4e, + 0xf7, 0xed, 0xf2, 0x8b, 0x5b, 0x6e, 0x5b, 0xf8, 0x0b, 0x3c, + 0x75, 0x91, 0xa4, 0xb4, 0x9f, 0x26, 0xd8, 0xf9, 0xe8, 0x9c, + 0x57, 0xa4, 0x57, 0x88, 0xd1, 0x83, 0x05, 0xf5, 0x97, 0xfe, + 0x0f, 0xfd, 0x15, 0x95, 0xae, 0xf9, 0x73, 0x97, 0x73, 0x1b, + 0x92, 0x38, 0x15, 0x63, 0x5d, 0x27, 0x3f, 0x95, 0x3a, 0x81, + 0xb4, 0xee, 0x7f, 0x5d, 0x7f, 0x6b, 0x48, 0x87, 0x25, 0x1a, + 0xc0, 0x8f, 0x6f, 0x2d, 0x4b, 0xbd, 0x9a, 0xd7, 0x6b, 0xc0, + 0x6b, 0xfb, 0xe5, 0x85, 0x35, 0x8c, 0x0a, 0x56, 0x5f, 0x45, + 0x64, 0xa9, 0x80, 0xc0, 0x67, 0x0a, 0x67, 0x8b, 0x3f, 0x3a, + 0xc5, 0xd2, 0xa6, 0x1b, 0x8c, 0x58, 0x12, 0x65, 0x16, 0x1d, + 0x23, 0xa6, 0x23, 0x1e, 0x63, 0x30, 0xd5, 0x44, 0x6c, 0xc2, + 0xbc, 0x30, 0x3d, 0x71, 0x0c, 0x0a, 0x2f, 0x6c, 0x2f, 0x6e, + 0xb9, 0x8f, 0xe5, 0x3d, 0xf1, 0x6a, 0xec, 0x88, 0x4c, 0x4d, + 0x22, 0x33, 0x3b, 0xf1, 0x3b, 0xfe, 0x14, 0x8d, 0xf5, 0xab, + 0x3b, 0xb3, 0xdc, 0xe0, 0x63, 0x59, 0x38, 0x24, 0x37, 0x3b, + 0x37, 0x8e, 0xce, 0x32, 0x85, 0xcf, 0x08, 0xf9, 0x4c, 0x3b, + 0xae, 0x35, 0x7e, 0x41, 0x13, 0x08, 0x13, 0x1d, 0x8d, 0x89, + 0x95, 0x59, 0xc2, 0x20, 0x7c, 0x53, 0x81, 0x21, 0x64, 0x56, + 0x1f, 0xc2, 0x1f, 0x6d, 0x57, 0x36, 0xa5, 0x20, 0x5f, 0x88, + 0x2c, 0xeb, 0xf0, 0x1d, 0x4a, 0x6f, 0x0b, 0x5f, 0x0b, 0xfd, + 0xfa, 0x34, 0xb5, 0xb6, 0x95, 0x51, 0x1c, 0x83, 0xdf, 0x09, + 0x50, 0x78, 0x07, 0x95, 0x07, 0x8d, 0x20, 0x8b, 0x86, 0x9c, + 0xc4, 0x12, 0x49, 0xd1, 0x1c, 0x46, 0xa5, 0x16, 0x83, 0xc4, + 0x83, 0x14, 0x42, 0x20, 0x96, 0x0a, 0x0e, 0xcb, 0x79, 0xb9, + 0x33, 0x52, 0xbf, 0x01, 0x8f, 0x0e, 0x8f, 0x64, 0x98, 0x9f, + 0xa6, 0x73, 0x93, 0x63, 0x29, 0x01, 0x42, 0x6e, 0x91, 0x38, + 0x9b, 0x93, 0x9b, 0xf4, 0x35, 0x9d, 0xb6, 0xe5, 0x59, 0xba, + 0x19, 0x69, 0x6d, 0x7a, 0x8b, 0x2f, 0x97, 0x59, 0x97, 0x84, + 0xef, 0x22, 0xc6, 0x81, 0x6a, 0xf0, 0x89, 0xb2, 0xa0, 0x16, + 0xcd, 0x4a, 0xb3, 0x6a, 0xb3, 0x17, 0xac, 0x99, 0xd6, 0x17, + 0xa0, 0x29, 0xb9, 0xda, 0x8f, 0x02, 0xd7, 0x5d, 0xbf, 0xa0, + 0xbf, 0x67, 0x76, 0x26, 0xe6, 0x6e, 0x3d, 0x81, 0xe9, 0x62, + 0xfe, 0x3e, 0xf9, 0x64, 0xab, 0x3d, 0xab, 0xf7, 0xdb, 0x24, + 0xf6, 0xf8, 0xf7, 0x58, 0xd9, 0x0a, 0xd1, 0x2a, 0xe3, 0x73, + 0xa7, 0xf7, 0xa7, 0x87, 0x01, 0x9b, 0x06, 0xa6, 0x5b, 0x15, + 0x0a, 0x17, 0xa7, 0xe6, 0x75, 0xae, 0xe3, 0x5b, 0xe3, 0x12, + 0x5d, 0x91, 0x16, 0x30, 0x91, 0xcc, 0x3a, 0x7f, 0x88, 0xf2, + 0x6f, 0xb9, 0xef, 0x91, 0xef, 0x62, 0x87, 0x2e, 0x26, 0x49, + 0x0c, 0x64, 0x6a, 0xc7, 0xf9, 0xce, 0x41, 0x80, 0xfb, 0x0c, + 0xfb, 0xf2, 0x2a, 0x2c, 0x36, 0xdf, 0xc6, 0xbd, 0x5a, 0xaf, + 0xd6, 0xda, 0x5b, 0x97, 0xf7, 0xc6, 0xf7, 0x82, 0xf0, 0x93, + 0x46, 0xbb, 0xf5, 0xf7, 0xca, 0x74, 0x1b, 0xb6, 0x1d, 0xf2, + 0xd3, 0xf5, 0xd3, 0x11, 0xb3, 0x28, 0x56, 0x2d, 0x3f, 0x2e, + 0xfa, 0x1c, 0x34, 0xa2, 0x07, 0xe5, 0xdf, 0x3f, 0xdf, 0x61, + 0x69, 0x97, 0x66, 0x54, 0xa2, 0x86, 0xaa, 0xa4, 0x45, 0x9e, + 0x29, 0xdc, 0xcb, 0xa2, 0xcb, 0xf1, 0xc4, 0x95, 0x76, 0xc2, + 0x68, 0x5f, 0x9a, 0xcc, 0x6a, 0x8a, 0x33, 0xcb, 0xc7, 0x68, + 0xc7, 0x81, 0x1e, 0x2a, 0x8a, 0x13, 0x72, 0x38, 0x5d, 0xff, + 0x91, 0x49, 0x4f, 0x89, 0x86, 0x72, 0x86, 0x30, 0xf8, 0xc1, + 0x9a, 0x85, 0xb8, 0xe1, 0x6d, 0x97, 0xbe, 0x5d, 0x55, 0x9e, + 0x8a, 0xb8, 0x8a, 0x40, 0x22, 0x7e, 0xaa, 0xfc, 0x25, 0x49, + 0x3d, 0x2f, 0xcf, 0x61, 0x7b, 0xa7, 0x9e, 0x25, 0x9e, 0xd0, + 0x8f, 0x7c, 0xba, 0x6a, 0xef, 0x90, 0x0d, 0x47, 0xe0, 0x75, + 0x61, 0xb0, 0x92, 0xef, 0x92, 0xa0, 0x55, 0xc3, 0xca, 0x0e, + 0xdc, 0xda, 0x9d, 0x9c, 0x2d, 0x19, 0x27, 0xd5, 0xb6, 0xdc, + 0xb6, 0x33, 0x16, 0x78, 0xda, 0x98, 0x16, 0x03, 0xad, 0xf4, + 0x02, 0x0d, 0x3d, 0xc2, 0xba, 0x16, 0xba, 0x43, 0xcc, 0xc7, + 0xea, 0xe1, 0x8b, 0xab, 0xfd, 0x4c, 0x73, 0x31, 0x13, 0xfb, + 0xae, 0x8b, 0xae, 0xd3, 0x61, 0xc5, 0xfa, 0x77, 0x41, 0x72, + 0xcd, 0x24, 0x5c, 0x25, 0x09, 0xec, 0xa2, 0x41, 0xa2, 0xa3, + 0xbb, 0x7a, 0x0a, 0x29, 0xed, 0x3f, 0x1e, 0x39, 0x2a, 0xe9, + 0x9f, 0x31, 0xe6, 0xed, 0xe6, 0x36, 0xe7, 0x70, 0x1a, 0xbf, + 0x27, 0xe6, 0x2e, 0x51, 0x05, 0xfd, 0x85, 0x26, 0xea, 0x27, + 0xea, 0x46, 0x3d, 0xcf, 0x2a, 0xc6, 0xba, 0x4e, 0x7e, 0xe9, + 0x74, 0xc1, 0xab, 0x1f, 0xfe, 0xba, 0xfe, 0xd6, 0x90, 0xcd, + 0x3a, 0x50, 0x70, 0x97, 0x4e, 0x81, 0x5b, 0xd5, 0xb1, 0x08, + 0xf2, 0x70, 0xf2, 0xa6, 0x4a, 0x72, 0x4a, 0x34, 0x43, 0xdd, + 0xde, 0x5a, 0x96, 0xb9, 0xf7, 0x6d, 0xd6, 0x43, 0xd6, 0x35, + 0x09, 0xc9, 0x5a, 0xa2, 0x89, 0x04, 0xee, 0x32, 0xb9, 0xad, + 0xed, 0x7a, 0xda, 0x89, 0xda, 0x45, 0xd3, 0x76, 0x6a, 0xdb, + 0x14, 0xac, 0xbe, 0x8a, 0xc8, 0x91, 0xc3, 0x43, 0xce, 0x14, + 0xce, 0xd5, 0x7e, 0x74, 0x7a, 0x4d, 0xde, 0x75, 0x8e, 0xe2, + 0xe7, 0x85, 0xd9, 0x54, 0xc2, 0xde, 0xc2, 0xa5, 0xa4, 0xcb, + 0x49, 0x67, 0x8f, 0x36, 0xdb, 0xb0, 0x24, 0xca, 0x2c, 0x3a, + 0x46, 0x8f, 0x46, 0x3c, 0xc6, 0x60, 0x59, 0xf1, 0x45, 0xef, + 0xeb, 0xd8, 0x0b, 0xde, 0x36, 0x2d, 0x4a, 0x45, 0x4a, 0x4c, + 0x1c, 0xdf, 0x69, 0x88, 0xd8, 0x47, 0xbb, 0x60, 0x7a, 0xe2, + 0x18, 0x14, 0x5e, 0xd8, 0x5e, 0xdc, 0xb1, 0xdd, 0x79, 0x1e, + 0x12, 0x9e, 0x8b, 0x08, 0x55, 0xf6, 0x02, 0x03, 0x52, 0x12, + 0x52, 0xac, 0x6b, 0x62, 0x09, 0x7a, 0x21, 0xd4, 0x1b, 0xd3, + 0x98, 0x9a, 0x44, 0x66, 0x76, 0x21, 0x76, 0x3f, 0x28, 0xd9, + 0x19, 0xec, 0xeb, 0x0d, 0x2b, 0xbb, 0xb7, 0x8e, 0x5e, 0x71, + 0x7a, 0xeb, 0x7a, 0x4f, 0xf2, 0x66, 0x29, 0x95, 0x76, 0xa5, + 0x7b, 0x03, 0xc6, 0xb2, 0x70, 0x48, 0x6e, 0x76, 0x6e, 0xdf, + 0x5f, 0x64, 0x39, 0x03, 0xbc, 0x7c, 0x4b, 0x6b, 0xe9, 0xa6, + 0x6a, 0x5f, 0x62, 0xbc, 0x62, 0xaf, 0x85, 0xdb, 0xc9, 0x5d, + 0x10, 0x31, 0x98, 0x76, 0x9f, 0x6a, 0xfc, 0x82, 0x26, 0x10, + 0x26, 0x3a, 0xd9, 0xd1, 0xd9, 0xcb, 0xda, 0xe8, 0xa8, 0x1e, + 0xb0, 0x7e, 0xe6, 0x95, 0x2a, 0xda, 0x2a, 0x4a, 0x03, 0x6e, + 0xe9, 0xb2, 0x47, 0x40, 0xf8, 0xa6, 0xc1, 0x42, 0xc8, 0xac, + 0x3e, 0x47, 0x3e, 0xda, 0xae, 0x6c, 0xf9, 0x24, 0x8d, 0x99, + 0xc8, 0xce, 0xee, 0x56, 0xd2, 0xbb, 0x32, 0x8d, 0x32, 0xaa, + 0x74, 0xd3, 0x89, 0x40, 0xbe, 0xd3, 0x58, 0x15, 0x23, 0x3a, + 0x94, 0xde, 0x16, 0xbe, 0x16, 0x39, 0x37, 0x68, 0x99, 0xd6, + 0x74, 0x0a, 0x68, 0x7d, 0x0c, 0x2e, 0x8e, 0xc9, 0x1a, 0x74, + 0x1a, 0x49, 0xed, 0xd7, 0xa9, 0xaf, 0xe9, 0xa2, 0x38, 0xc5, + 0x7d, 0x12, 0xa0, 0xf0, 0x0e, 0xe9, 0x0e, 0xd9, 0x40, 0xd5, + 0xb9, 0x39, 0x23, 0x7b, 0x08, 0xad, 0x52, 0x06, 0xba, 0xe7, + 0x02, 0x23, 0x02, 0xa9, 0x9a, 0x6a, 0xcf, 0xfb, 0x4b, 0x24, + 0x92, 0x61, 0x38, 0x8c, 0x89, 0x2c, 0xc5, 0x4b, 0xc5, 0x28, + 0x84, 0x40, 0xdf, 0x6d, 0x81, 0xfd, 0xa2, 0x09, 0x17, 0x98, + 0x93, 0x3b, 0xc9, 0x81, 0xc9, 0x58, 0x5e, 0xff, 0xef, 0x14, + 0x1c, 0x55, 0xf2, 0xb1, 0x66, 0xa4, 0xbd, 0x02, 0xdd, 0x1c, + 0xdd, 0xc8, 0xf3, 0xfd, 0xff, 0x82, 0xd6, 0x8c, 0xc2, 0xd9, + 0x49, 0xb0, 0xa7, 0x15, 0xd1, 0xd6, 0xd1, 0xb8, 0x29, 0x42, + 0x8f, 0xe6, 0xe5, 0xc6, 0x52, 0x02, 0x84, 0xdc, 0xe1, 0x70, + 0xf5, 0xe5, 0xf5, 0x2b, 0x6a, 0xf9, 0x9f, 0x70, 0x2f, 0x1f, + 0x62, 0x6a, 0xab, 0xc8, 0xfb, 0x67, 0xf9, 0x2f, 0xf9, 0x5b, + 0xb0, 0x46, 0xaf, 0x09, 0xb2, 0xb7, 0x32, 0xd2, 0xda, 0xf4, + 0xd5, 0x5e, 0xed, 0xb2, 0xed, 0xcb, 0x1d, 0x44, 0xbf, 0x9f, + 0x78, 0x6e, 0x02, 0xba, 0xf5, 0xe0, 0xcf, 0x49, 0xe1, 0x78, + 0xe1, 0xbb, 0xc7, 0xfb, 0x4f, 0xc1, 0xd4, 0x23, 0xd1, 0xa7, + 0x83, 0x2c, 0x59, 0x94, 0xa5, 0xd4, 0xa5, 0x2e, 0x9b, 0xf1, + 0x5f, 0x57, 0x1e, 0xfa, 0xe1, 0xcf, 0xac, 0x38, 0x43, 0x83, + 0xa9, 0x1e, 0xa9, 0x5e, 0x41, 0x4e, 0x6f, 0x2e, 0x83, 0x52, + 0xb1, 0x77, 0xdd, 0x04, 0x6d, 0xba, 0xbd, 0x83, 0xbd, 0xce, + 0xec, 0x4c, 0x7f, 0xb8, 0x49, 0x8b, 0x81, 0x1f, 0xf2, 0x10, + 0x77, 0xad, 0xb1, 0x49, 0xb1, 0xbe, 0x36, 0xf3, 0x0f, 0xdc, + 0x7a, 0xc1, 0x11, 0xc4, 0x3f, 0x7c, 0x31, 0xc8, 0x95, 0x7a, + 0x95, 0x2d, 0x75, 0x48, 0x1f, 0x4a, 0xb0, 0x18, 0x21, 0xac, + 0x10, 0x68, 0x2b, 0xdf, 0x99, 0xb0, 0x99, 0x5d, 0xaf, 0xf7, + 0x2f, 0x33, 0x2d, 0xb0, 0x71, 0x14, 0x61, 0x54, 0x05, 0xe6, + 0x8d, 0x2d, 0x8d, 0xcd, 0x02, 0xf5, 0x3f, 0xa5, 0xe7, 0x69, + 0x41, 0x7c, 0x4e, 0x40, 0x1f, 0xf1, 0x81, 0xe7, 0x81, 0xbd, + 0xd8, 0x4a, 0x0c, 0x8f, 0xb6, 0x2a, 0x14, 0x2e, 0x8d, 0x0f, + 0xea, 0x9f, 0x05, 0xb6, 0x05, 0x24, 0xba, 0xe1, 0x1c, 0x19, + 0x7c, 0xf3, 0x24, 0x46, 0xa2, 0x1b, 0xf0, 0x88, 0x09, 0x7c, + 0x09, 0x54, 0x60, 0x5e, 0x2c, 0x60, 0xe1, 0x5b, 0x74, 0xfe, + 0xd3, 0x27, 0xde, 0xb1, 0x1d, 0xe1, 0x1d, 0xc4, 0xcd, 0x5c, + 0x3c, 0xf6, 0x2b, 0x82, 0x44, 0x96, 0xfc, 0x33, 0xc4, 0xa6, + 0x11, 0x2b, 0x11, 0xb4, 0x17, 0xe3, 0x4c, 0x92, 0x18, 0xc8, + 0xd4, 0x4d, 0x31, 0x5f, 0x82, 0xc3, 0x35, 0x18, 0x35, 0x27, + 0x54, 0x58, 0x5c, 0x04, 0xd2, 0x11, 0xe4, 0x25, 0x1e, 0x4b, + 0x98, 0xd4, 0x39, 0xd2, 0x39, 0x57, 0x8e, 0xe7, 0x6c, 0x7d, + 0x4f, 0xb9, 0xb4, 0x9d, 0x6f, 0x77, 0xb6, 0xed, 0x2d, 0x4f, + 0x2d, 0xc7, 0x23, 0xe5, 0x7c, 0xeb, 0x85, 0x60, 0x84, 0xf5, + 0x40, 0x63, 0xac, 0xfa, 0x21, 0x85, 0x21, 0xb7, 0xf9, 0x5a, + 0x8c, 0xb5, 0x29, 0x2d, 0x57, 0xe8, 0x36, 0xaf, 0x3a, 0x27, + 0x65, 0x29, 0x65, 0x22, 0xa5, 0x50, 0x9c, 0x23, 0xe3, 0xf4, + 0x67, 0x80, 0x19, 0xbb, 0x20, 0x30, 0x69, 0xe3, 0x69, 0x52, + 0x7f, 0xef, 0xac, 0x5a, 0x7e, 0x5c, 0x37, 0x38, 0x68, 0x87, + 0x0e, 0x09, 0x7d, 0x7e, 0x7d, 0xc2, 0xd2, 0xed, 0xbc, 0xcc, + 0xb4, 0x85, 0x07, 0x50, 0x47, 0x93, 0x14, 0x1e, 0x71, 0xb4, + 0x71, 0xb2, 0x08, 0x52, 0xcc, 0xa8, 0x87, 0xcf, 0x97, 0x8b, + 0x8a, 0xff, 0x52, 0x7b, 0x55, 0x87, 0x55, 0x21, 0x4b, 0xe9, + 0xdc, 0x3e, 0x4d, 0x16, 0xa7, 0xe3, 0xa5, 0xeb, 0x48, 0x6c, + 0x59, 0x4d, 0x59, 0x51, 0x91, 0x56, 0xec, 0x47, 0xd0, 0xbe, + 0xf7, 0x5b, 0xd4, 0xd7, 0x66, 0x55, 0x4d, 0xd0, 0x4d, 0xc1, + 0x3c, 0x54, 0xfc, 0xd1, 0x1a, 0x67, 0xc7, 0x33, 0xfb, 0xc3, + 0x7c, 0x42, 0x41, 0x1a, 0x41, 0xb1, 0xe6, 0xeb, 0xd7, 0x26, + 0xe4, 0x70, 0xba, 0x3d, 0xe1, 0x92, 0x9e, 0xd1, 0xcf, 0xe4, + 0xcf, 0x60, 0x33, 0x41, 0xc7, 0xb0, 0x2e, 0xa9, 0x8a, 0x55, + 0xce, 0x86, 0x84, 0xc6, 0xc3, 0x2e, 0xc3, 0x10, 0xe9, 0xfe, + 0xf7, 0xc9, 0xb3, 0x01, 0xda, 0xed, 0xbf, 0xba, 0xaa, 0xff, + 0xd7, 0xb3, 0xd7, 0x80, 0x44, 0xfc, 0xe7, 0x5f, 0x79, 0xd8, + 0xea, 0x85, 0x90, 0xae, 0xb0, 0xe8, 0xdb, 0x79, 0xdb, 0xf0, + 0x9e, 0x43, 0x97, 0x3b, 0x4a, 0x92, 0x7a, 0x5e, 0x5d, 0xc2, + 0xf6, 0x8d, 0xff, 0x4a, 0xff, 0x63, 0xdd, 0xf8, 0x87, 0xad, + 0x80, 0x4b, 0x4a, 0x36, 0x72, 0xd6, 0xec, 0x9a, 0xf3, 0x80, + 0xf3, 0x13, 0x07, 0x47, 0xb7, 0xd4, 0x1d, 0xe3, 0x1a, 0x8e, + 0x03, 0xea, 0xc2, 0xa3, 0xe7, 0x1d, 0xe7, 0x83, 0xaa, 0x45, + 0xa7, 0x42, 0xd7, 0x3a, 0x2a, 0xe6, 0x2c, 0xfe, 0xd8, 0xb4, + 0xeb, 0xd7, 0xeb, 0xf3, 0x70, 0xfa, 0x57, 0x1c, 0x7b, 0x77, + 0xf9, 0xfb, 0x5a, 0x32, 0x4e, 0x69, 0xaf, 0x7b, 0xaf, 0x66, + 0x2c, 0xf0, 0x47, 0x8a, 0xb1, 0xae, 0xc9, 0x93, 0x75, 0x26, + 0x54, 0x7e, 0xa3, 0xb1, 0xa3, 0x16, 0xf6, 0x4f, 0x77, 0xf3, + 0x2c, 0x06, 0x99, 0x2b, 0x04, 0x1a, 0x7a, 0x47, 0xb7, 0x2c, + 0xb7, 0x86, 0x5b, 0x4d, 0x67, 0x65, 0xe6, 0xdf, 0xa9, 0x43, + 0x2b, 0x0e, 0x60, 0x50, 0xbb, 0xe6, 0xbb, 0xf6, 0x81, 0xf2, + 0x17, 0x01, 0xd5, 0x95, 0x39, 0x98, 0xe6, 0x62, 0x26, 0x35, + 0x9f, 0xd5, 0x9f, 0x65, 0xc2, 0x49, 0x07, 0x97, 0x1f, 0x4c, + 0x09, 0xf0, 0xc9, 0x76, 0x3c, 0x22, 0x93, 0x1f, 0x93, 0x15, + 0x18, 0xf6, 0x37, 0xee, 0x82, 0xe4, 0x59, 0x48, 0xb8, 0x4a, + 0x12, 0x1b, 0x87, 0x82, 0x87, 0x85, 0xb5, 0xf4, 0x27, 0x78, + 0x48, 0x3d, 0x69, 0x20, 0x97, 0x5e, 0x08, 0x0c, 0x8b, 0x48, + 0x8b, 0xf5, 0x6f, 0x4b, 0x14, 0x52, 0x19, 0x7e, 0x3c, 0x72, + 0x54, 0x11, 0xfd, 0x62, 0x0f, 0x19, 0x0f, 0x6c, 0x0d, 0xe0, + 0x04, 0xc4, 0xd3, 0xa7, 0x0c, 0x1a, 0x7b, 0x05, 0xe7, 0x75, + 0x03, 0xd3, 0x03, 0x1c, 0xd7, 0x5f, 0x34, 0xbd, 0x4e, 0x0f, + 0x5c, 0xa2, 0x0a, 0x39, 0xc9, 0x4c, 0x17, 0x4e, 0x17, 0x8c, + 0x7a, 0x5d, 0x24, 0x2b, 0x84, 0xd6, 0x6c, 0xca, 0x25, 0x2d, + 0xd3, 0x5b, 0x1b, 0x84, 0x1b, 0xfc, 0xa0, 0xe2, 0x54, 0x4f, + 0xb7, 0x9c, 0xfc, 0x11, 0xe8, 0x41, 0x95, 0x3e, 0x3f, 0xb7, + 0x3f, 0x6f, 0xe3, 0x59, 0x44, 0xd9, 0x7d, 0x45, 0xcc, 0x79, + 0xc7, 0x55, 0x8f, 0x29, 0x33, 0x7d, 0x33, 0x1f, 0x39, 0xe6, + 0x74, 0xa0, 0xe0, 0xed, 0x9c, 0xc1, 0xb6, 0x69, 0xa1, 0x10, + 0x27, 0xe0, 0x27, 0x8f, 0x94, 0xe4, 0x64, 0x36, 0x2a, 0x34, + 0xac, 0xa9, 0x99, 0x7d, 0xbb, 0x07, 0x2b, 0x2a, 0x2b, 0xff, + 0x4e, 0x5b, 0x94, 0x68, 0x86, 0x79, 0x7f, 0xb4, 0xef, 0xb1, + 0x2d, 0xda, 0x6f, 0x86, 0x6f, 0x6a, 0x12, 0x51, 0x84, 0xfe, + 0x4c, 0xa0, 0x4f, 0xdc, 0xc0, 0xa5, 0x37, 0xcd, 0x63, 0x4c, + 0x63, 0x1a, 0xc8, 0xee, 0xb4, 0x87, 0xd1, 0x08, 0x1f, 0x64, + 0xb1, 0x99, 0x19, 0xf4, 0x77, 0xd1, 0x77, 0x8a, 0x65, 0xec, + 0xa4, 0x11, 0x1b, 0xd1, 0x2f, 0x0c, 0x9e, 0x8d, 0x03, 0xe3, + 0x7b, 0x1b, 0x7b, 0xfa, 0xbf, 0x53, 0xd4, 0x75, 0x28, 0x9b, + 0xbf, 0xd7, 0x53, 0xe1, 0x45, 0x86, 0x5f, 0x28, 0x5f, 0x69, + 0xfc, 0xe8, 0xc4, 0xe3, 0xe2, 0x42, 0x8f, 0xbf, 0x7c, 0xf5, + 0x5f, 0x91, 0x53, 0xe2, 0x53, 0x19, 0x26, 0x57, 0xf4, 0x9a, + 0x7f, 0xea, 0xdf, 0x07, 0x0d, 0xc9, 0x71, 0xa8, 0x47, 0x7f, + 0x47, 0x89, 0x8b, 0x55, 0xe4, 0x0c, 0xb5, 0x33, 0xef, 0x6f, + 0x22, 0xdd, 0x6b, 0xbf, 0x4b, 0xb5, 0x4b, 0xf9, 0x51, 0xea, + 0x92, 0xce, 0xdd, 0x6c, 0x75, 0xa3, 0x48, 0x57, 0x58, 0x74, + 0x8c, 0xdd, 0x8c, 0x78, 0x4f, 0xc0, 0x82, 0x58, 0x17, 0xb5, + 0x45, 0xcb, 0x67, 0x43, 0x42, 0x63, 0x80, 0x17, 0x80, 0x08, + 0x95, 0x7f, 0xb2, 0x21, 0x8a, 0x1d, 0x15, 0x73, 0x16, 0x7f, + 0x6c, 0x5a, 0x94, 0x8a, 0x94, 0x98, 0x38, 0x7d, 0xa2, 0xb7, + 0x40, 0xc4, 0x25, 0x1b, 0x39, 0x6b, 0x76, 0x4d, 0x98, 0x40, + 0x98, 0xe8, 0xe2, 0xc2, 0xd2, 0xd3, 0x73, 0x8e, 0xb5, 0xc0, + 0xf4, 0x07, 0x30, 0x28, 0xbc, 0x73, 0xbc, 0x7b, 0xa1, 0x79, + 0xc2, 0x45, 0xb9, 0x57, 0x85, 0xa8, 0xdb, 0x13, 0x2a, 0x3f, + 0xb0, 0xb9, 0xb0, 0x0b, 0x7b, 0xc6, 0xf2, 0x3c, 0x24, 0xff, + 0xd5, 0x10, 0xaa, 0x2f, 0x04, 0x06, 0xa4, 0x24, 0xa4, 0x9b, + 0xd6, 0xc4, 0xe2, 0xaa, 0xee, 0x26, 0xe5, 0x78, 0x85, 0x3b, + 0x1e, 0x11, 0xa8, 0xee, 0xa8, 0xeb, 0x0c, 0x7b, 0x12, 0xf4, + 0x42, 0x6b, 0x36, 0x65, 0xf3, 0xf7, 0x88, 0xcc, 0xec, 0x42, + 0xec, 0x7e, 0x50, 0x71, 0x02, 0x62, 0x88, 0xb2, 0x06, 0x0d, + 0xdc, 0xe3, 0x92, 0xdb, 0xe0, 0x88, 0xe0, 0x0e, 0x8a, 0xce, + 0x32, 0x1b, 0x15, 0x1a, 0x56, 0xb5, 0xad, 0xdf, 0xbc, 0xe2, + 0xf4, 0x15, 0xf4, 0x9e, 0x27, 0xcc, 0x22, 0x8d, 0xdf, 0xc3, + 0x66, 0xdd, 0x82, 0xcb, 0xa6, 0xf5, 0xf8, 0xdf, 0xf8, 0xee, + 0xfd, 0x73, 0x52, 0xe9, 0xec, 0x89, 0xf6, 0x06, 0x4f, 0xa7, + 0xe0, 0x90, 0xdc, 0xec, 0xdc, 0x7d, 0xbe, 0xc8, 0x42, 0x7f, + 0x26, 0x50, 0xc6, 0x6e, 0x60, 0xb3, 0xfa, 0x87, 0xd0, 0x26, + 0xd0, 0x0d, 0x64, 0x77, 0x72, 0x06, 0xbb, 0xf8, 0x96, 0xd6, + 0x11, 0x8f, 0xd4, 0xbe, 0xc4, 0xbb, 0xc4, 0x9d, 0xc9, 0x75, + 0x62, 0x90, 0x71, 0x21, 0xa6, 0xbe, 0x3e, 0x9b, 0xce, 0xa9, + 0xc8, 0x71, 0xc8, 0xed, 0x13, 0xca, 0x51, 0xba, 0x20, 0x62, + 0xf3, 0xec, 0xfd, 0xd4, 0x3b, 0xc7, 0x4c, 0x20, 0x4c, 0x74, + 0x71, 0x61, 0x41, 0x2c, 0xea, 0xbb, 0xc3, 0x84, 0xd2, 0xc0, + 0x21, 0xd0, 0x40, 0xea, 0x40, 0x04, 0xab, 0xde, 0x71, 0x55, + 0x77, 0x13, 0x93, 0x3c, 0xa3, 0xfc, 0x0f, 0xe9, 0x54, 0x77, + 0x54, 0x94, 0x06, 0xdc, 0x61, 0xc3, 0xbd, 0xca, 0xa3, 0x54, + 0x8c, 0xe8, 0x15, 0xfe, 0x58, 0xbd, 0x58, 0xe4, 0xdc, 0x63, + 0x11, 0xa7, 0x8e, 0x80, 0x33, 0x8f, 0x41, 0x84, 0x53, 0x9b, + 0x7c, 0x8e, 0x7c, 0x77, 0x9f, 0xd8, 0x01, 0x31, 0x44, 0x59, + 0x03, 0xe7, 0x6e, 0x90, 0x49, 0x8c, 0x70, 0x44, 0x70, 0x07, + 0x45, 0x67, 0x31, 0x48, 0xd9, 0xf1, 0x53, 0x5f, 0x1f, 0xac, + 0x67, 0xb5, 0x64, 0xd9, 0x64, 0x97, 0xe8, 0x65, 0x21, 0xde, + 0x13, 0x28, 0x63, 0x37, 0x30, 0xb8, 0x7d, 0xa2, 0x68, 0x13, + 0x68, 0xe7, 0x32, 0xda, 0xd1, 0x80, 0xbf, 0x65, 0xb0, 0x2a, + 0x46, 0x74, 0xeb, 0x7f, 0x2c, 0xbf, 0x2c, 0x72, 0x6e, 0xd0, + 0xc1, 0x16, 0x75, 0xbc, 0x80, 0x42, 0x69, 0x60, 0xf1, 0x68, + 0x20, 0x75, 0x20, 0x02, 0xb4, 0x6f, 0xf1, 0x6f, 0xe8, 0x14, + 0xd0, 0xfa, 0x18, 0x5c, 0xdf, 0x51, 0x34, 0xe8, 0x34, 0x92, + 0x19, 0x6d, 0xe1, 0xf9, 0x22, 0xcd, 0xe0, 0x92, 0x37, 0x48, + 0xc5, 0x46, 0x38, 0x22, 0x38, 0xe2, 0xc3, 0xd2, 0x91, 0x9d, + 0x11, 0x87, 0x70, 0x49, 0xfa, 0x24, 0x83, 0x23, 0x1c, 0x11, + 0x1c, 0x71, 0x80, 0x69, 0x81, 0x0b, 0xdb, 0x5e, 0x40, 0x21, + 0xd5, 0x30, 0x99, 0x34, 0x10, 0xdb, 0x10, 0x01, 0x5a, 0xd6, + 0xb1, 0x72, 0x46, 0xf6, 0x10, 0x99, 0xa4, 0x0c, 0xb7, 0x0d, + 0x04, 0x46, 0x04, 0x91, 0xf7, 0xd4, 0xa1, 0xe4, 0x8c, 0x2f, + 0x20, 0xf1, 0x8b, 0x18, 0xad, 0x1a, 0x08, 0x8c, 0x08, 0xe1, + 0x2d, 0x6b, 0x5d, 0x35, 0x96, 0x48, 0xe7, 0xc2, 0x70, 0xdb, + 0xd1, 0x58, 0x49, 0x96, 0x49, 0x50, 0xcb, 0x80, 0x4d, 0xa3, + 0x5c, 0x91, 0xd7, 0xaa, 0x5f, 0xcf, 0xcb, 0x4f, 0x45, 0x5c, + 0x45, 0x20, 0x11, 0x3f, 0x7d, 0xda, 0xc1, 0x39, 0x87, 0x12, + 0x2e, 0xf3, 0xe5, 0x76, 0x51, 0xc1, 0x51, 0xb0, 0xbc, 0x3d, + 0x6d, 0x4c, 0x0b, 0xe0, 0xb7, 0x7a, 0x01, 0xe7, 0xff, 0x61, + 0x5d, 0x0b, 0x5d, 0xc0, 0x66, 0x82, 0x1d, 0x28, 0x38, 0xaa, + 0x27, 0xa1, 0xcc, 0x8b, 0xb9, 0x04, 0x79, 0x38, 0x79, 0x53, + 0x25, 0x39, 0x0d, 0xbe, 0xf2, 0x73, 0x17, 0xc9, 0xe3, 0x9f, + 0xa3, 0x13, 0x75, 0xf2, 0x75, 0x23, 0xff, 0x86, 0x3d, 0xc7, + 0x6f, 0xdb, 0x47, 0x71, 0x92, 0xa3, 0x8d, 0x2a, 0x61, 0x6f, + 0x61, 0xb3, 0x52, 0x84, 0x2d, 0x51, 0xa5, 0x02, 0x77, 0x19, + 0xbd, 0xb7, 0x97, 0x3d, 0x6d, 0xa5, 0x6d, 0xc3, 0x88, 0x3b, + 0xdd, 0x0f, 0x09, 0x4f, 0xa4, 0x04, 0xcb, 0x7b, 0x01, 0xe0, + 0x29, 0x09, 0x29, 0x56, 0xd4, 0x31, 0xcd, 0x99, 0xc3, 0x96, + 0x94, 0x6c, 0xe4, 0x6f, 0x1b, 0xf7, 0x25, 0xc3, 0x25, 0x26, + 0x0e, 0x8e, 0xfd, 0xe0, 0x5e, 0x3e, 0xc4, 0xd4, 0x95, 0x53, + 0x35, 0xce, 0x31, 0x5e, 0x31, 0xb6, 0xa3, 0x8c, 0xed, 0x76, + 0x94, 0xe7, 0xf4, 0xbc, 0xba, 0x47, 0x2f, 0xd9, 0x3d, 0x94, + 0x3d, 0xc6, 0x79, 0x33, 0x9d, 0x12, 0xa7, 0xad, 0x64, 0x67, + 0x77, 0x2b, 0x69, 0xbc, 0x19, 0xa7, 0x19, 0x55, 0x3a, 0x88, + 0x8d, 0x84, 0x6d, 0x74, 0x54, 0x0f, 0x58, 0x3f, 0x73, 0xab, + 0x15, 0x6d, 0x15, 0x25, 0xe0, 0x37, 0xbd, 0xfd, 0xf0, 0xdc, + 0x04, 0xb7, 0x29, 0x03, 0x5d, 0x92, 0x01, 0xf0, 0x01, 0xb5, + 0x4d, 0x35, 0xad, 0x6b, 0x3a, 0x05, 0x34, 0xdf, 0x06, 0x17, + 0x47, 0x85, 0x0d, 0x3a, 0x0d, 0xc5, 0x97, 0x8a, 0x9e, 0x41, + 0x6b, 0x46, 0x61, 0x8d, 0xc5, 0x58, 0xb2, 0xeb, 0x89, 0x6b, + 0x89, 0x5c, 0xf5, 0x21, 0x8e, 0xd7, 0xa1, 0x9f, 0x51, 0xe5, + 0xea, 0x4c, 0xa8, 0xfc, 0x85, 0xa1, 0x85, 0x2c, 0x2f, 0x9e, + 0xbe, 0xae, 0x3c, 0x37, 0x01, 0x5d, 0x9b, 0x70, 0x86, 0xc5, + 0x91, 0x3c, 0x91, 0xbc, 0x82, 0x9c, 0xae, 0x38, 0xf6, 0xee, + 0x31, 0x35, 0xb4, 0x64, 0x9c, 0xd2, 0x9d, 0xf6, 0x9d, 0xcc, + 0x58, 0x23, 0xde, 0x5c, 0xc5, 0xa4, 0xa1, 0xee, 0x79, 0x08, + 0xda, 0xb7, 0xb9, 0xc5, 0xb9, 0x5f, 0x1b, 0x98, 0xce, 0xca, + 0x0f, 0x7d, 0x91, 0x86, 0x56, 0x1c, 0xc0, 0xa0, 0xb5, 0x0f, + 0xb5, 0x2f, 0xc1, 0x27, 0xfe, 0xb3, 0x92, 0xd5, 0xc1, 0x3e, + 0x27, 0x20, 0xee, 0x99, 0xa1, 0x92, 0xa1, 0xbf, 0x6c, 0x25, + 0xee, 0x25, 0x58, 0x0c, 0xf1, 0x56, 0x08, 0x34, 0xf4, 0x8e, + 0xad, 0x58, 0xad, 0xcf, 0xb6, 0x9a, 0x1e, 0x7b, 0xf4, 0x41, + 0x22, 0x4b, 0x7e, 0xf8, 0x62, 0x53, 0xe9, 0xf4, 0xe9, 0x5a, + 0xea, 0x90, 0x0e, 0xed, 0x3e, 0x98, 0x12, 0x23, 0x51, 0xec, + 0x78, 0x44, 0xe5, 0x3e, 0xe5, 0x2a, 0x30, 0x2f, 0x3e, 0x94, + 0xa3, 0x30, 0x42, 0x9b, 0x20, 0xd0, 0x56, 0x7d, 0xf1, 0xa3, + 0xf1, 0xba, 0x9d, 0x2d, 0x2e, 0x02, 0x69, 0xe9, 0x72, 0xf3, + 0x0f, 0xc4, 0x4c, 0x6a, 0xfd, 0x69, 0xfd, 0xca, 0x47, 0x92, + 0x5e, 0x66, 0x5a, 0xa3, 0xe2, 0x28, 0xc2, 0xa8, 0x0a, 0x0f, + 0xd9, 0x5a, 0xd9, 0x59, 0x04, 0x29, 0x4e, 0xf0, 0x90, 0x7a, + 0xd2, 0x40, 0xed, 0xbc, 0x10, 0x18, 0xd5, 0x90, 0xd5, 0x29, + 0xde, 0x96, 0x7e, 0x89, 0x0d, 0xd2, 0x82, 0xf8, 0x9c, 0x80, + 0x3e, 0x21, 0xc1, 0x0d, 0xc1, 0xb9, 0x73, 0x94, 0x6e, 0x1f, + 0xc7, 0x0b, 0xb2, 0x90, 0xb3, 0x94, 0x24, 0x36, 0xcd, 0xc7, + 0xcd, 0xc9, 0xa9, 0x2b, 0x18, 0xdd, 0xaf, 0x54, 0x28, 0x5c, + 0xd9, 0x1e, 0x17, 0xfd, 0x0a, 0xaf, 0x0a, 0x48, 0xb7, 0x01, + 0x08, 0x4b, 0x65, 0x8d, 0x18, 0x34, 0xf6, 0x0a, 0x0d, 0xea, + 0x06, 0x65, 0x06, 0x38, 0x6d, 0xbe, 0x38, 0x32, 0xf8, 0x25, + 0x48, 0x8c, 0x87, 0x36, 0x23, 0xd3, 0x12, 0xf8, 0x12, 0xa8, + 0xc0, 0xbc, 0x28, 0xa4, 0x32, 0xfc, 0x78, 0xe4, 0xa8, 0x22, + 0x39, 0xc4, 0x1e, 0x32, 0x1e, 0xd8, 0x1a, 0x03, 0x58, 0xc0, + 0x01, 0xb6, 0xe8, 0x3f, 0x65, 0x4e, 0x7f, 0xa1, 0x3a, 0x01, + 0x3a, 0x4b, 0x59, 0xb8, 0x48, 0x56, 0xcb, 0x6f, 0xd8, 0x57, + 0x4a, 0x5a, 0x65, 0xb6, 0x36, 0xcb, 0x36, 0x3b, 0x83, 0x07, + 0x78, 0x2f, 0x56, 0xc7, 0x88, 0xef, 0x3b, 0x66, 0x4b, 0x8f, + 0x22, 0x56, 0x22, 0xab, 0x2e, 0x05, 0x68, 0xb9, 0x9c, 0x1e, + 0xb8, 0x87, 0x14, 0x72, 0x51, 0x98, 0x2e, 0x9c, 0x2e, 0xdb, + 0xf4, 0xba, 0x98, 0xe7, 0x30, 0x53, 0x6b, 0x9a, 0x62, 0xbe, + 0xc7, 0x45, 0x6a, 0x30, 0x6a, 0x4e, 0xa8, 0xb0, 0x88, 0x71, + 0xfa, 0x8a, 0x5b, 0xf2, 0x4d, 0xaa, 0xdd, 0x52, 0x66, 0xfa, + 0x66, 0x3e, 0x72, 0x0f, 0xb8, 0x08, 0x67, 0x22, 0x0b, 0x4a, + 0x3c, 0x96, 0xf3, 0x6b, 0x72, 0x67, 0x72, 0xae, 0xdf, 0x0d, + 0xa8, 0x9e, 0xad, 0xfb, 0x3b, 0x22, 0x13, 0x82, 0xe9, 0x7c, + 0x7e, 0xad, 0x7e, 0xde, 0x05, 0xb2, 0xd8, 0xfa, 0x9e, 0xb1, + 0xab, 0xf9, 0xde, 0xee, 0xaf, 0x19, 0x5a, 0x9e, 0x5a, 0x4d, + 0x46, 0x09, 0xc8, 0x6c, 0x54, 0x68, 0x9b, 0x91, 0xf1, 0xfa, + 0xb5, 0x0e, 0x56, 0x54, 0x56, 0x3d, 0x9c, 0xb6, 0xf8, 0x15, + 0xc9, 0xc0, 0xcb, 0x29, 0x80, 0xc6, 0x9b, 0x37, 0x42, 0xc9, + 0x42, 0xad, 0x31, 0xb4, 0xe8, 0x83, 0x03, 0x19, 0xfb, 0x41, + 0xaf, 0xd2, 0x81, 0x20, 0x4e, 0x03, 0x4e, 0xdd, 0xeb, 0x0b, + 0xdb, 0xa9, 0x52, 0x5a, 0xae, 0x13, 0x6c, 0x9d, 0x74, 0x4e, + 0xca, 0x52, 0xca, 0x44, 0x89, 0xa0, 0xcb, 0x3f, 0x98, 0x83, + 0x9e, 0x7b, 0x43, 0x89, 0x6e, 0x59, 0xc6, 0x98, 0xc6, 0x34, + 0x53, 0x1f, 0xfb, 0x46, 0x05, 0x2b, 0xce, 0xc3, 0x32, 0xb5, + 0x40, 0x60, 0xd2, 0x05, 0xd2, 0xa4, 0xfe, 0x1d, 0xeb, 0xd0, + 0xcf, 0xf2, 0xfe, 0xab, 0x1d, 0xa1, 0x5a, 0x77, 0xde, 0xcf, + 0xde, 0xd4, 0x24, 0xa2, 0x9b, 0xb4, 0xfc, 0xb8, 0x6e, 0x70, + 0xd0, 0xcd, 0x1c, 0x12, 0xfa, 0xfc, 0xfa, 0x47, 0x67, 0x19, + 0x8b, 0x22, 0x36, 0x61, 0x5e, 0x18, 0xff, 0xd9, 0x06, 0x05, + 0xf6, 0x36, 0xf6, 0x37, 0xbd, 0xa6, 0xbb, 0x5b, 0xab, 0xc9, + 0x0e, 0xa0, 0x8e, 0xe5, 0x28, 0x3c, 0xe2, 0xab, 0xe2, 0xa7, + 0x10, 0xa4, 0xab, 0xcd, 0x61, 0x10, 0x3e, 0xc8, 0xa1, 0xf1, + 0x32, 0x2b, 0xee, 0x61, 0xee, 0xd7, 0xca, 0x1b, 0x5b, 0x93, + 0xcd, 0x5d, 0xed, 0xd5, 0xd7, 0x3d, 0xa4, 0xf6, 0xaa, 0xcd, + 0xaa, 0x42, 0x96, 0x11, 0x4b, 0x05, 0x07, 0x84, 0xdd, 0xbd, + 0xf8, 0x29, 0xbe, 0xe1, 0xa6, 0x07, 0xa6, 0x32, 0x4c, 0xae, + 0x7b, 0x7c, 0x9a, 0x2c, 0x8d, 0x05, 0x89, 0x15, 0x90, 0xd8, + 0xb2, 0x9a, 0xb2, 0xa2, 0xe1, 0xac, 0x6b, 0xea, 0x50, 0xf5, + 0xbd, 0x6d, 0xa6, 0x01, 0x8a, 0xcf, 0xbe, 0x50, 0xbe, 0xd2, + 0x3b, 0x13, 0x1b, 0x8e, 0x63, 0xbf, 0x2d, 0xb6, 0x6b, 0x6d, + 0xcc, 0xaa, 0x9a, 0x63, 0x9a, 0x41, 0x78, 0xa8, 0x0b, 0x18, + 0xa9, 0x66, 0x1d, 0xde, 0x44, 0x79, 0xd6, 0xbd, 0x96, 0xa9, + 0x96, 0x31, 0xa2, 0x17, 0x3b, 0x61, 0x34, 0xce, 0x4d, 0x66, + 0x35, 0x45, 0xf8, 0x84, 0x82, 0x34, 0x82, 0xa1, 0x0f, 0x15, + 0x2b, 0xf7, 0xfe, 0x17, 0x7d, 0x0e, 0x1a, 0x51, 0xe2, 0x93, + 0x8e, 0xfe, 0x8e, 0xd1, 0xd5, 0xaa, + }, + { + /* 13 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x74, 0x75, 0xd0, + 0x5e, 0xbe, 0xb8, 0x87, 0x4e, 0x62, 0xec, 0x6b, 0x10, 0x87, + 0xc6, 0x74, 0xc9, 0xe8, 0xea, 0x63, 0xbc, 0xbf, 0xb3, 0xcd, + 0x9c, 0xc4, 0x1b, 0xd6, 0x20, 0xcd, 0x4f, 0xe8, 0x4c, 0x9c, + 0x9f, 0xb3, 0xe2, 0x01, 0x0b, 0x4a, 0xd2, 0xa6, 0xf7, 0xbd, + 0x30, 0x4a, 0x89, 0x9c, 0x51, 0x13, 0x17, 0xc6, 0xbb, 0xbd, + 0xa5, 0x59, 0xfb, 0x4b, 0x36, 0x6f, 0x40, 0x59, 0x9e, 0x13, + 0xd4, 0x67, 0x62, 0x16, 0xe5, 0x03, 0x1d, 0xde, 0xb5, 0x29, + 0xda, 0x04, 0x50, 0xde, 0x58, 0x67, 0x98, 0xfb, 0xfd, 0xa5, + 0x07, 0x02, 0x16, 0x94, 0x67, 0x8f, 0x2d, 0xb9, 0x60, 0x94, + 0xd1, 0xfb, 0x1d, 0x8f, 0x88, 0x75, 0x59, 0xbc, 0xae, 0x13, + 0x29, 0xed, 0xc1, 0xd2, 0x70, 0x13, 0x17, 0x8f, 0xa2, 0x26, + 0x2e, 0x4f, 0xb5, 0xb9, 0x89, 0xb2, 0x35, 0x96, 0x6c, 0xde, + 0x80, 0xb2, 0xff, 0x26, 0x27, 0x52, 0x5b, 0x9f, 0xeb, 0x07, + 0x31, 0x35, 0x7b, 0xf4, 0x80, 0xb5, 0x90, 0x35, 0x39, 0x52, + 0x6b, 0xce, 0xc4, 0x2c, 0x09, 0x06, 0x3a, 0x7f, 0xa9, 0x52, + 0x77, 0x08, 0xa0, 0x7f, 0xb0, 0xce, 0xee, 0xba, 0xb1, 0xfc, + 0x57, 0xb8, 0x82, 0xf8, 0xe7, 0x30, 0x9b, 0x63, 0xb0, 0xf8, + 0x76, 0xba, 0xf3, 0x35, 0x39, 0x89, 0x0e, 0x04, 0x2c, 0xeb, + 0xce, 0xdd, 0x5a, 0xb1, 0xc0, 0xeb, 0x61, 0x35, 0x76, 0x41, + 0x4c, 0x59, 0x50, 0xba, 0x94, 0x6c, 0x80, 0xbf, 0xb6, 0xda, + 0xd0, 0x6c, 0xa7, 0x41, 0x3a, 0xdd, 0xd3, 0xea, 0xb2, 0xbb, + 0x9f, 0x26, 0x52, 0x19, 0x41, 0x67, 0xe0, 0x26, 0x2e, 0xdd, + 0xbf, 0xa9, 0xa6, 0x3a, 0xec, 0x05, 0x27, 0xa1, 0x1c, 0x7b, + 0xad, 0x0c, 0xf0, 0xa1, 0xe8, 0xa9, 0x87, 0x4c, 0x5c, 0x9e, + 0xa9, 0xb1, 0xd1, 0xa7, 0x6a, 0xef, 0xd8, 0x7f, 0xc3, 0xa7, + 0x3d, 0x4c, 0x02, 0x38, 0x29, 0x4e, 0xf7, 0x0f, 0x69, 0x20, + 0x24, 0x8d, 0x34, 0x14, 0xd3, 0x20, 0xfb, 0x38, 0x4e, 0xa4, + 0xb6, 0xfd, 0x15, 0x0e, 0x62, 0x6a, 0xf6, 0x2b, 0xc3, 0xa9, + 0xe3, 0x6a, 0x72, 0xa4, 0xcb, 0xd0, 0xc3, 0x2d, 0x4b, 0xb0, + 0xda, 0xed, 0xb8, 0x49, 0x2f, 0xc2, 0xf3, 0xed, 0xb4, 0xd0, + 0xd6, 0x5f, 0x4b, 0x58, 0x12, 0x0c, 0x74, 0xfe, 0x91, 0xa4, + 0xee, 0x10, 0x83, 0xfe, 0xa3, 0x5f, 0x53, 0x2b, 0x3e, 0x88, + 0x4c, 0xb2, 0xcc, 0x79, 0xdf, 0xc6, 0x02, 0x7b, 0x93, 0x79, + 0x65, 0x2b, 0x1f, 0xb7, 0xa1, 0x3b, 0xae, 0xb3, 0xc7, 0x33, + 0x0d, 0x60, 0xf5, 0xc6, 0xa3, 0x33, 0xec, 0xb7, 0x9a, 0xc3, + 0xd4, 0xeb, 0xf0, 0x0d, 0x7f, 0xb4, 0x43, 0x02, 0x19, 0xad, + 0xb3, 0xb4, 0x2a, 0xc3, 0x25, 0x6a, 0x72, 0xd1, 0x1c, 0x08, + 0x58, 0x15, 0x5f, 0x79, 0xb4, 0xa1, 0x43, 0x15, 0xc2, 0x6a, + 0xa0, 0x1e, 0x07, 0x01, 0x42, 0xb6, 0xe0, 0x92, 0x11, 0x1b, + 0x58, 0xca, 0x53, 0x92, 0x04, 0x1e, 0xec, 0x82, 0x98, 0xb2, + 0xa0, 0xb7, 0xeb, 0xd8, 0xc3, 0xbd, 0xaf, 0x77, 0x63, 0xd8, + 0x8d, 0x82, 0x69, 0xf6, 0xed, 0x62, 0xfe, 0x09, 0x53, 0x5f, + 0x8d, 0xdf, 0x43, 0x1c, 0x73, 0x5f, 0x4b, 0xf6, 0x74, 0x79, + 0x65, 0x17, 0xa7, 0xb5, 0xfd, 0x4c, 0xa4, 0x32, 0x82, 0xce, + 0x03, 0x4c, 0x5c, 0x79, 0xf1, 0x0d, 0x10, 0xc7, 0xf9, 0x0b, + 0x45, 0xcb, 0xea, 0x50, 0x6e, 0xa5, 0x13, 0xcb, 0x9a, 0x0d, + 0xbd, 0x91, 0x8f, 0x74, 0x1b, 0x0a, 0x4e, 0x81, 0x38, 0xf6, + 0x99, 0x18, 0x23, 0x81, 0x13, 0x91, 0x38, 0xe5, 0xfa, 0xa4, + 0x45, 0xb4, 0xf6, 0x06, 0x76, 0x94, 0x75, 0x73, 0x33, 0x06, + 0xd5, 0xe5, 0xcd, 0x98, 0xb8, 0xff, 0x91, 0xa1, 0x61, 0x8d, + 0xd4, 0x1d, 0x73, 0xfe, 0x45, 0x8d, 0x7a, 0x98, 0x48, 0xec, + 0xcd, 0x2f, 0xcf, 0x1f, 0xd9, 0x0a, 0x9a, 0x7f, 0x9f, 0x95, + 0x55, 0x0a, 0xbc, 0xec, 0x04, 0x70, 0x52, 0x9c, 0x2d, 0x1e, + 0xd2, 0x40, 0x48, 0xd9, 0x68, 0x28, 0x65, 0x40, 0x35, 0x70, + 0x81, 0x04, 0x27, 0x4c, 0x73, 0xa0, 0x6a, 0xc7, 0x06, 0xbb, + 0x84, 0x43, 0x75, 0xc7, 0xf3, 0x04, 0x9c, 0x8b, 0xaf, 0x39, + 0x2a, 0x1c, 0xc4, 0xd4, 0x2f, 0x56, 0x45, 0x91, 0x05, 0xd4, + 0xe4, 0x8b, 0x19, 0xff, 0xda, 0xe9, 0x74, 0xa2, 0x7c, 0x53, + 0x61, 0x34, 0xa9, 0xfa, 0x15, 0x53, 0x22, 0xff, 0x55, 0x63, + 0x45, 0x5a, 0x96, 0xa3, 0x77, 0x19, 0xb3, 0x92, 0x5e, 0x47, + 0x25, 0x19, 0xab, 0x63, 0xd0, 0x17, 0x30, 0x8a, 0xc8, 0x1d, + 0xcf, 0x9e, 0xfd, 0xf0, 0xb2, 0x2c, 0x35, 0x9e, 0x6d, 0x17, + 0x6f, 0xbe, 0x96, 0xb0, 0x24, 0x18, 0xe8, 0x3f, 0xe1, 0x8b, + 0x1f, 0x20, 0xc5, 0x3f, 0x85, 0xbe, 0xea, 0xca, 0xe3, 0x60, + 0x7a, 0xa6, 0x50, 0xb8, 0xaf, 0xe9, 0xf3, 0x4b, 0xd5, 0xb8, + 0x43, 0xca, 0xa6, 0x56, 0x7c, 0xd3, 0x98, 0xa7, 0x5b, 0xf2, + 0x7d, 0x4f, 0x04, 0xf6, 0xe5, 0xf2, 0xca, 0x56, 0x23, 0x22, + 0x09, 0x03, 0xc6, 0x19, 0xe3, 0x75, 0x33, 0x2d, 0xe8, 0x9d, + 0xf5, 0x75, 0x0c, 0x22, 0x3e, 0xad, 0x81, 0x76, 0x9f, 0xa5, + 0x4d, 0x66, 0x1a, 0xc0, 0x29, 0x4f, 0x85, 0x66, 0x1b, 0xad, + 0xbb, 0xd9, 0xf4, 0xa6, 0xc1, 0x1b, 0xf5, 0xe1, 0x54, 0xa2, + 0xc5, 0x24, 0x95, 0xe1, 0xdd, 0xd9, 0xf7, 0x45, 0x6b, 0x15, + 0x23, 0x1a, 0xfe, 0xab, 0x86, 0x04, 0x32, 0x99, 0xa5, 0xab, + 0x54, 0x45, 0x72, 0x31, 0x1e, 0xc5, 0x7d, 0xa4, 0x46, 0x2c, + 0xc8, 0x66, 0xde, 0xf2, 0xb5, 0x2c, 0x92, 0x31, 0x4a, 0xd4, + 0xe4, 0x61, 0x38, 0x10, 0xb0, 0x2a, 0xbe, 0xf2, 0xab, 0x81, + 0x86, 0x2a, 0x47, 0xd4, 0xcf, 0xa0, 0x91, 0xb1, 0x66, 0xae, + 0x08, 0xad, 0xf0, 0x90, 0x47, 0xea, 0x96, 0xad, 0x81, 0xa0, + 0x83, 0x3c, 0x0e, 0x02, 0x84, 0xaf, 0x03, 0xe7, 0x22, 0x36, + 0xb0, 0x57, 0xa6, 0xe7, 0x08, 0x3c, 0x06, 0x48, 0x7b, 0xd2, + 0xda, 0x11, 0xbb, 0x60, 0x6c, 0x54, 0x5c, 0x3c, 0xb6, 0x60, + 0xce, 0x48, 0x1b, 0xc7, 0xf3, 0xa7, 0x83, 0xad, 0x15, 0x73, + 0x45, 0xb9, 0x9d, 0xee, 0xc6, 0x73, 0xd9, 0xc7, 0x9e, 0xb3, + 0x86, 0x77, 0xdd, 0x13, 0xad, 0xf4, 0x0b, 0xdb, 0x71, 0x85, + 0xd6, 0xf4, 0x1f, 0xb3, 0xd2, 0x2f, 0x19, 0xc4, 0x3f, 0x12, + 0xa6, 0xbe, 0xd9, 0x7d, 0x86, 0x38, 0xe6, 0xbe, 0x96, 0x2f, + 0x57, 0x5b, 0x6c, 0x14, 0x61, 0xac, 0x1e, 0x39, 0x97, 0x1f, + 0x6a, 0x53, 0xf6, 0x39, 0x50, 0x5b, 0xe8, 0xf2, 0xca, 0x2e, + 0x8d, 0xa9, 0x39, 0x98, 0x8b, 0x64, 0xc7, 0x5f, 0x06, 0x98, + 0xb8, 0xf2, 0x6d, 0x86, 0xbf, 0xfe, 0xd3, 0x17, 0x81, 0x1f, + 0xc5, 0x06, 0x2b, 0x34, 0x16, 0x1f, 0x7e, 0x86, 0x21, 0x1a, + 0x20, 0x4d, 0x31, 0x16, 0x8a, 0x55, 0x17, 0xa0, 0xdc, 0x89, + 0x26, 0x55, 0xf7, 0x1a, 0xa4, 0x6e, 0x55, 0x9d, 0x6f, 0xa8, + 0x32, 0xd2, 0x59, 0xc2, 0x30, 0xe2, 0x36, 0xd2, 0x31, 0x6e, + 0xb9, 0xe1, 0xdd, 0xe8, 0x36, 0x14, 0x9c, 0xc1, 0x70, 0x2f, + 0xf1, 0x30, 0x46, 0xc1, 0x26, 0xe1, 0x3c, 0x95, 0xa8, 0x38, + 0x68, 0xaa, 0x24, 0x46, 0x3e, 0x4d, 0x1d, 0x5b, 0x56, 0x46, + 0xe0, 0x95, 0x70, 0x09, 0x37, 0x8b, 0x8a, 0xab, 0x2f, 0x0c, + 0xec, 0xeb, 0xea, 0xe6, 0x66, 0x0c, 0x69, 0x09, 0xf5, 0x7d, + 0x42, 0x5b, 0xd4, 0x15, 0x97, 0x8b, 0xa2, 0x89, 0x06, 0x8d, + 0x76, 0x8b, 0xaf, 0x7d, 0x59, 0xf3, 0xb3, 0x3d, 0xe1, 0x81, + 0xc2, 0xd9, 0x6b, 0x3a, 0xe6, 0x3f, 0x8a, 0xd9, 0xf4, 0xf3, + 0xdc, 0x87, 0xc6, 0xed, 0xbf, 0x3f, 0x7a, 0x5e, 0x25, 0x58, + 0x0a, 0x54, 0x9a, 0x5e, 0x32, 0x87, 0x90, 0x1b, 0x59, 0x5e, + 0x5d, 0x3e, 0x71, 0x14, 0xf7, 0xfe, 0xfd, 0xe9, 0xaa, 0x14, + 0xbb, 0x1b, 0x15, 0x6f, 0x2c, 0x8e, 0x03, 0x80, 0xc9, 0x93, + 0xb9, 0x9c, 0x11, 0x82, 0xba, 0x93, 0x7d, 0x6f, 0x08, 0xe0, + 0xa4, 0xfb, 0x5a, 0x3c, 0x67, 0x80, 0x90, 0x71, 0xd0, 0x50, + 0xca, 0x80, 0x6a, 0xe0, 0x8d, 0x94, 0xd1, 0x2b, 0x04, 0x82, + 0xdf, 0x07, 0xde, 0x13, 0x3c, 0x3b, 0xda, 0x07, 0xac, 0x94, + 0xc1, 0x08, 0x4e, 0x98, 0xe6, 0x83, 0xd4, 0x4d, 0x0c, 0xb5, + 0xcb, 0x86, 0xea, 0x4d, 0x25, 0x08, 0x44, 0x7c, 0x3b, 0x48, + 0xb8, 0x3d, 0x6c, 0xca, 0x42, 0xd7, 0x27, 0xed, 0xfa, 0xca, + 0xe3, 0x7c, 0xfb, 0xd5, 0x9d, 0x72, 0x54, 0x38, 0x4b, 0x6b, + 0x5e, 0xac, 0x8a, 0xe1, 0x0a, 0x6b, 0x0b, 0xd5, 0x7e, 0xa1, + 0xe8, 0xa2, 0x0a, 0x86, 0xf3, 0xec, 0x10, 0xce, 0x66, 0x8a, + 0x1a, 0xec, 0xcd, 0xa1, 0x32, 0x3d, 0x77, 0x11, 0xe8, 0x87, + 0xf8, 0xa6, 0xc2, 0x68, 0x91, 0x37, 0x2a, 0xa6, 0x44, 0x3d, + 0xb7, 0x49, 0x02, 0xc1, 0xb6, 0x39, 0x40, 0x21, 0x8c, 0x0a, + 0x7d, 0x5c, 0x3a, 0x21, 0x82, 0x49, 0xaa, 0xc6, 0x8a, 0xb4, + 0xef, 0x85, 0xee, 0x32, 0xa5, 0xe7, 0xbc, 0x8e, 0x4a, 0x32, + 0x95, 0xc6, 0x2f, 0xb2, 0xff, 0x64, 0xb1, 0x3b, 0x56, 0xb5, + 0xeb, 0x85, 0x50, 0xe5, 0x5a, 0xb5, 0x53, 0xb2, 0x63, 0x2e, + 0x60, 0xd7, 0x53, 0x3a, 0x5d, 0xff, 0x39, 0x23, 0xa7, 0x58, + 0x6a, 0xff, 0xda, 0x2e, 0xe6, 0x5a, 0x15, 0x07, 0x0d, 0x84, + 0xe5, 0x78, 0x77, 0x41, 0x4b, 0x33, 0x7a, 0x78, 0x1c, 0x5a, + 0xde, 0xbf, 0xef, 0xa3, 0x48, 0x30, 0x13, 0x7e, 0x01, 0xd5, + 0x3e, 0x40, 0x49, 0x7e, 0xc9, 0xbf, 0x5b, 0xcb, 0x9a, 0x73, + 0x16, 0x8e, 0xab, 0xf9, 0x4f, 0xb7, 0xd2, 0x2b, 0x59, 0xf9, + 0x0f, 0xcb, 0x17, 0x57, 0x05, 0xc0, 0xf4, 0x8f, 0xa0, 0xb3, + 0x9d, 0x11, 0x25, 0x96, 0x69, 0xb3, 0x86, 0x57, 0x92, 0x23, + 0x70, 0x10, 0xaa, 0x31, 0x18, 0x34, 0xd3, 0x73, 0xc9, 0xfd, + 0x79, 0x34, 0x40, 0x23, 0x8f, 0xac, 0xf8, 0x65, 0xf3, 0x8d, + 0xb6, 0x27, 0xfa, 0x9e, 0x08, 0x2f, 0x09, 0x27, 0x57, 0xac, + 0x0a, 0xd8, 0x8d, 0xb5, 0xad, 0x33, 0x0e, 0xa0, 0xb4, 0xfc, + 0xe4, 0x44, 0x19, 0xa0, 0x91, 0xd8, 0x46, 0x44, 0x12, 0x06, + 0x4f, 0x32, 0x05, 0xea, 0x66, 0x5a, 0x13, 0xf9, 0x29, 0xea, + 0x18, 0x44, 0xc3, 0x30, 0x67, 0xd6, 0x11, 0x8c, 0xbd, 0x6d, + 0x28, 0x38, 0xff, 0x92, 0x39, 0x6d, 0xde, 0x30, 0x7c, 0x99, + 0xc1, 0xec, 0xfd, 0x89, 0x9a, 0xcc, 0x34, 0x43, 0x52, 0x9e, + 0xc9, 0xcc, 0x36, 0x99, 0xf9, 0xed, 0xb4, 0x3c, 0xa3, 0x37, + 0x22, 0x4b, 0x7a, 0x21, 0xbe, 0xf5, 0xd9, 0x4b, 0xf0, 0xed, + 0xb5, 0x71, 0x2b, 0x8f, 0x41, 0x36, 0x29, 0x01, 0xa8, 0x87, + 0x49, 0x48, 0xe9, 0x01, 0x79, 0x71, 0x30, 0x05, 0x5e, 0x5f, + 0x1f, 0x88, 0x91, 0x86, 0xe6, 0xe5, 0xa5, 0x23, 0xf9, 0x86, + 0xbf, 0x05, 0x2d, 0x8a, 0xd6, 0x2a, 0x46, 0x34, 0x3f, 0x95, + 0xcf, 0x08, 0x64, 0xf1, 0x89, 0x95, 0xa8, 0x8a, 0xa8, 0xfe, + 0xa3, 0xfa, 0x18, 0x8a, 0x87, 0x12, 0x81, 0x6a, 0x88, 0x9a, + 0x99, 0x12, 0x6e, 0xfe, 0xe4, 0x62, 0x3c, 0x49, 0xfa, 0x8b, + 0x8c, 0x58, 0x53, 0xcc, 0x7f, 0x27, 0xa9, 0x58, 0xe7, 0x62, + 0x61, 0x16, 0x49, 0x99, 0xa4, 0x35, 0x34, 0xdf, 0x1d, 0xae, + 0x93, 0x4c, 0xb9, 0xdf, 0x21, 0x16, 0x94, 0x6b, 0x0b, 0xc2, + 0x70, 0x20, 0xa3, 0x54, 0xbf, 0x27, 0x95, 0xc1, 0xcf, 0x54, + 0x8e, 0x6b, 0x11, 0x1f, 0x7e, 0x12, 0x2e, 0x9e, 0x1b, 0xd3, + 0xf1, 0x45, 0x79, 0xaa, 0xdf, 0xd3, 0x48, 0x1f, 0x5d, 0x83, + 0xe1, 0xa1, 0xcc, 0x9f, 0x10, 0x99, 0x23, 0xe3, 0x8e, 0x17, + 0xef, 0x99, 0xc1, 0x83, 0xd8, 0xf7, 0x94, 0x71, 0x92, 0x21, + 0xa8, 0x1e, 0x6d, 0x81, 0x62, 0x7c, 0xff, 0x1e, 0x07, 0xf7, + 0xc5, 0x78, 0x1c, 0x04, 0xcb, 0x9d, 0x06, 0x0d, 0x44, 0x6c, + 0xa3, 0xae, 0x8f, 0x0d, 0x10, 0x78, 0x40, 0x0c, 0x69, 0xd4, + 0x95, 0x23, 0xbe, 0x8a, 0x0a, 0x0e, 0x4f, 0xc5, 0x9f, 0x8a, + 0xd6, 0x0c, 0x0c, 0x90, 0xf6, 0x67, 0x77, 0x22, 0xb5, 0xc0, + 0xd8, 0xa8, 0xb8, 0x78, 0xaf, 0xc0, 0x5f, 0x90, 0x89, 0xe4, + 0x83, 0xb7, 0x29, 0x9c, 0x0d, 0x47, 0x96, 0xca, 0x54, 0x13, + 0xbf, 0x47, 0x99, 0xe4, 0x36, 0x4d, 0x25, 0x8d, 0xc5, 0x99, + 0x2a, 0xe6, 0x8a, 0xb1, 0xf9, 0x1f, 0x4f, 0xe6, 0x71, 0x4d, + 0xb3, 0x39, 0x50, 0x5d, 0x9b, 0x27, 0x92, 0x61, 0xc4, 0xd3, + 0x15, 0x74, 0x5f, 0x61, 0xb7, 0x39, 0xff, 0xa5, 0xcf, 0xee, + 0x79, 0x26, 0x99, 0x2b, 0x16, 0x75, 0xe2, 0xc9, 0x6f, 0x2b, + 0x3e, 0xa5, 0x7a, 0xd1, 0xba, 0x3e, 0x27, 0x98, 0x21, 0xac, + 0x58, 0x17, 0x0e, 0xa2, 0x7f, 0xac, 0xf8, 0xd1, 0x67, 0x5e, + 0x32, 0x4b, 0x7e, 0x24, 0x8f, 0xbf, 0x71, 0xfa, 0xcf, 0x70, + 0x0f, 0xbf, 0xef, 0x5e, 0xe2, 0x2a, 0x47, 0x9b, 0x20, 0x9a, + 0x37, 0x38, 0x3f, 0x98, 0x23, 0x1b, 0x1f, 0x38, 0x29, 0x2a, + 0xae, 0xb6, 0xd8, 0x28, 0xc2, 0x9b, 0x3c, 0x72, 0xed, 0x3e, + 0xd4, 0xa6, 0x2f, 0x72, 0xa0, 0xb6, 0x2b, 0xc2, 0xad, 0xf8, + 0x9c, 0x25, 0x84, 0xf5, 0xa3, 0x5c, 0x38, 0xcd, 0x3f, 0xf5, + 0x66, 0xc2, 0x13, 0x27, 0x57, 0x5c, 0xd9, 0x91, 0x72, 0xf3, + 0xd5, 0xc8, 0x4d, 0xbe, 0x0c, 0xf3, 0xb3, 0x27, 0x96, 0x53, + 0x22, 0x8c, 0x87, 0x2f, 0xca, 0x74, 0x9b, 0xaa, 0xa1, 0xd5, + 0x1c, 0x74, 0x75, 0x53, 0xda, 0xcf, 0xbd, 0x3f, 0x65, 0x2e, + 0xc1, 0x3e, 0x49, 0x0c, 0x56, 0x68, 0x2c, 0x3e, 0xfc, 0xcf, + 0x5f, 0xbb, 0xc8, 0xef, 0x3b, 0x90, 0x79, 0xb9, 0x07, 0x6e, + 0xba, 0x03, 0x3c, 0xb9, 0x3a, 0xbb, 0x42, 0x34, 0x40, 0x9a, + 0x62, 0x2c, 0xd7, 0xaa, 0x2e, 0x83, 0x7b, 0xd1, 0x4c, 0xaa, + 0x2d, 0x34, 0xc7, 0x40, 0x35, 0x4a, 0x3c, 0x92, 0x6f, 0x2d, + 0x60, 0xe1, 0x97, 0xba, 0x5c, 0x2d, 0xeb, 0x40, 0x8b, 0xdc, + 0xaa, 0xf9, 0xde, 0x93, 0x64, 0x67, 0xb2, 0x47, 0x60, 0x07, + 0x6c, 0x67, 0x62, 0xdc, 0x0e, 0xa8, 0xdf, 0x29, 0x80, 0x2d, + 0xdc, 0xe0, 0xfc, 0x25, 0x8c, 0x6c, 0x7c, 0xe0, 0xa4, 0xa8, + 0xb1, 0x01, 0x79, 0x13, 0x6c, 0x28, 0xfb, 0x41, 0xe0, 0x5e, + 0x21, 0x60, 0x8c, 0x41, 0x4c, 0x01, 0x34, 0x75, 0x0c, 0xc3, + 0x32, 0x96, 0x43, 0xc6, 0xae, 0x3c, 0xcd, 0x0b, 0x9c, 0xc6, + 0x8a, 0x75, 0x78, 0xe9, 0x93, 0x70, 0xd0, 0x97, 0x48, 0x8c, + 0x7c, 0x9a, 0x3a, 0xb6, 0xac, 0x8c, 0x03, 0xe9, 0xfd, 0x9d, + 0xe6, 0xa0, 0x8e, 0x29, 0xf0, 0x0b, 0x32, 0xf8, 0xd6, 0xdd, + 0xbc, 0x0b, 0xc5, 0x9d, 0xe0, 0x12, 0x6e, 0xd5, 0xd7, 0x95, + 0x5e, 0x18, 0x1b, 0x15, 0x17, 0x0f, 0xcc, 0x18, 0xd2, 0x12, + 0x65, 0x66, 0x1b, 0x05, 0x89, 0x2b, 0xe6, 0x9f, 0x55, 0x77, + 0xfb, 0x64, 0xdc, 0x9f, 0x14, 0x66, 0x29, 0xfa, 0x84, 0xb6, + 0x6b, 0x2a, 0xed, 0xd5, 0x87, 0xd1, 0x0c, 0xd9, 0xec, 0xd5, + 0x9d, 0xfa, 0xac, 0x8e, 0xf1, 0x66, 0x35, 0x94, 0x55, 0x52, + 0xc9, 0xb3, 0xe0, 0xb2, 0xfc, 0x52, 0x5b, 0x8e, 0xb2, 0x25, + 0xa5, 0x7a, 0x01, 0xc1, 0x47, 0x71, 0xd6, 0x74, 0x0f, 0x7e, + 0xd7, 0x71, 0x2b, 0x25, 0x37, 0x51, 0xd0, 0xaa, 0x5f, 0x7f, + 0xff, 0xf6, 0x98, 0x16, 0xe3, 0x15, 0xc7, 0xf6, 0xed, 0x51, + 0x7b, 0xcd, 0x4f, 0x19, 0xbd, 0x7e, 0xf4, 0xbc, 0x4a, 0xb0, + 0x14, 0xa8, 0xf7, 0xbc, 0x64, 0xcd, 0xfe, 0xb9, 0x3a, 0xc9, + 0xe3, 0xc0, 0x4c, 0x3b, 0x04, 0xd2, 0xf8, 0xc3, 0xe7, 0x3b, + 0xa2, 0xb9, 0xe3, 0x36, 0xb2, 0xbc, 0xba, 0x7c, 0xe2, 0x28, + 0x2d, 0x3f, 0x39, 0x11, 0x97, 0x28, 0xb5, 0x36, 0x66, 0x42, + 0xc7, 0x6c, 0xe4, 0xc2, 0x5a, 0xaf, 0x63, 0x5d, 0xd5, 0x7a, + 0x87, 0xaf, 0x73, 0x42, 0x2a, 0xde, 0x58, 0xdf, 0x06, 0xc3, + 0x51, 0xe5, 0xb1, 0xfb, 0x22, 0xc7, 0xb7, 0xe5, 0xfa, 0xde, + 0xaf, 0xaa, 0x2d, 0x0f, 0x58, 0x7d, 0xe9, 0x62, 0xff, 0x99, + 0xce, 0xac, 0xa7, 0x62, 0x3c, 0xaa, 0x10, 0x03, 0x8b, 0x35, + 0xb4, 0x78, 0xce, 0xc3, 0xe3, 0xe2, 0x63, 0xa0, 0x57, 0xc3, + 0xd4, 0x03, 0x95, 0x77, 0xfe, 0xe5, 0xea, 0xc6, 0x76, 0x44, + 0xad, 0x80, 0x8f, 0xcb, 0x47, 0x44, 0x12, 0x77, 0xd9, 0xeb, + 0x61, 0x56, 0x08, 0xc7, 0x7d, 0x0e, 0x7f, 0x26, 0x78, 0x76, + 0x77, 0x0e, 0x9b, 0xeb, 0x5c, 0x9f, 0x14, 0x86, 0x56, 0x79, + 0xc5, 0x89, 0x31, 0x44, 0x94, 0x1d, 0x67, 0x89, 0x5d, 0x9f, + 0x41, 0x10, 0x9c, 0xf3, 0x0f, 0xc5, 0x6b, 0x9a, 0x18, 0xa9, + 0x55, 0xcf, 0x17, 0x9a, 0x4a, 0x10, 0xc4, 0x64, 0xe9, 0x23, + 0x51, 0x7b, 0xd3, 0x1d, 0x56, 0xcb, 0xb9, 0xa4, 0x07, 0x1d, + 0x8c, 0x64, 0x88, 0xf8, 0x76, 0x90, 0xb3, 0x7a, 0xd8, 0x57, + 0x84, 0x6d, 0x4e, 0x19, 0x37, 0x57, 0x05, 0xf8, 0x0d, 0x8c, + 0x03, 0x40, 0xed, 0xc4, 0x60, 0xd0, 0xca, 0x0f, 0xa2, 0x72, + 0x27, 0xd0, 0xc3, 0x8c, 0x35, 0x69, 0xf9, 0xe4, 0xa8, 0x70, + 0x96, 0xd6, 0xbc, 0x9b, 0xd7, 0x01, 0x14, 0xd6, 0x16, 0x69, + 0xb0, 0x1d, 0x8c, 0x34, 0xf6, 0xce, 0x2e, 0x51, 0xf2, 0xf9, + 0x3b, 0x6a, 0x04, 0x51, 0xd0, 0x1d, 0xfc, 0x81, 0x13, 0x87, + 0x14, 0xcf, 0x25, 0x1b, 0x20, 0x5f, 0xcc, 0xd7, 0x34, 0x1b, + 0x59, 0x81, 0x79, 0xf5, 0x66, 0x57, 0x4a, 0x71, 0x9d, 0x9c, + 0x6e, 0x3d, 0x20, 0xbc, 0x24, 0x9c, 0x9f, 0xf5, 0x64, 0x7a, + 0xee, 0x22, 0x13, 0xcd, 0x33, 0x8f, 0x47, 0xd0, 0xe1, 0x6e, + 0x54, 0x8f, 0x88, 0x7a, 0xe1, 0x0e, 0x9b, 0xf2, 0x4d, 0x73, + 0x8b, 0x08, 0x09, 0xb2, 0x0d, 0x05, 0x44, 0x08, 0x4e, 0x0e, + 0xad, 0x92, 0x04, 0x41, 0xaf, 0x72, 0x80, 0x42, 0xdb, 0x14, + 0xfa, 0xb8, 0x74, 0x42, 0xc7, 0x92, 0x28, 0xe6, 0x71, 0x91, + 0xf1, 0xcc, 0x38, 0xc5, 0x95, 0x76, 0x16, 0xd3, 0x64, 0xc5, + 0x01, 0xe6, 0x97, 0x4f, 0xd7, 0xab, 0x1d, 0xc9, 0x1f, 0x64, + 0x89, 0x0d, 0xbb, 0xdf, 0x94, 0x64, 0xe9, 0x4f, 0x12, 0x3b, + 0xa2, 0x7b, 0x43, 0x77, 0xa7, 0xe3, 0xc7, 0x6f, 0x57, 0xb4, + 0x84, 0xe3, 0x2f, 0x3b, 0x5e, 0xa7, 0x3d, 0xc8, 0xa1, 0x76, + 0xac, 0xa9, 0x15, 0xc9, 0xa0, 0x09, 0xb4, 0xa9, 0xa6, 0xa7, + 0xdb, 0xd3, 0x48, 0x18, 0xff, 0xc8, 0x14, 0x2e, 0x5b, 0xab, + 0x4c, 0x62, 0xa4, 0x2e, 0x60, 0xd3, 0xc6, 0x5c, 0xc0, 0x6d, + 0xa6, 0x74, 0xba, 0x3d, 0x72, 0x46, 0x8d, 0xb0, 0xd4, 0x3d, + 0x77, 0x5c, 0x43, 0x28, 0xb5, 0xbd, 0xf8, 0xca, 0x02, 0xba, + 0x3c, 0x24, 0x61, 0xdb, 0xc4, 0xba, 0xb1, 0x28, 0x0f, 0xb4, + 0x2a, 0x0e, 0x1a, 0xcb, 0x09, 0xf0, 0xee, 0x82, 0x96, 0x66, + 0xf4, 0xf0, 0x38, 0xb4, 0x8a, 0xc0, 0x5f, 0xde, 0x44, 0x75, + 0xb1, 0x77, 0xa0, 0xe0, 0x7a, 0x0d, 0xe4, 0x77, 0xfe, 0xc0, + 0x7f, 0xbd, 0x1d, 0x85, 0x90, 0x60, 0x26, 0xfc, 0x02, 0x69, + 0x7c, 0x80, 0x92, 0xfc, 0x51, 0xbd, 0xfa, 0xc9, 0x68, 0x55, + 0xce, 0xde, 0x9e, 0x7b, 0x4c, 0x0b, 0x90, 0xeb, 0x82, 0x7b, + 0x97, 0xc9, 0xb6, 0x55, 0xf7, 0xe6, 0x2c, 0xdf, 0x95, 0x31, + 0x9e, 0xad, 0x67, 0x56, 0xb2, 0x31, 0x1e, 0x55, 0x33, 0x21, + 0x82, 0x36, 0x72, 0x61, 0x2d, 0xb6, 0xd0, 0xcf, 0x8b, 0x3d, + 0xa2, 0xb6, 0xd8, 0x21, 0x2e, 0xae, 0x0a, 0x43, 0x2b, 0xdd, + 0x83, 0xa5, 0xf9, 0x22, 0x4a, 0xef, 0xd2, 0xa5, 0xcf, 0xae, + 0xab, 0xda, 0x7f, 0x93, 0x75, 0x63, 0x3b, 0x22, 0xb7, 0x40, + 0xa6, 0x84, 0xc2, 0x22, 0x09, 0xda, 0xe7, 0x46, 0xe0, 0x20, + 0x97, 0x62, 0x30, 0x68, 0x65, 0xe6, 0x51, 0x39, 0xf2, 0x68, + 0x80, 0x46, 0x62, 0x32, 0x95, 0xf0, 0xc9, 0xdc, 0x88, 0xef, + 0x2b, 0x84, 0xbd, 0x52, 0xe2, 0xef, 0x46, 0x32, 0xdd, 0x9b, + 0x33, 0xca, 0x25, 0xd9, 0xaf, 0x4e, 0x37, 0xff, 0x10, 0x5e, + 0x12, 0x4e, 0xae, 0x9b, 0x58, 0xef, 0x46, 0x1a, 0x7b, 0x67, + 0x17, 0xc9, 0x79, 0x9d, 0xfc, 0x35, 0x02, 0xc9, 0x68, 0xef, + 0x14, 0x73, 0xd9, 0xa9, 0x99, 0x66, 0x1c, 0x83, 0xab, 0x3b, + 0x0b, 0x88, 0x32, 0x83, 0xe1, 0x73, 0x91, 0x07, 0xac, 0x79, + 0xc7, 0xd8, 0xa4, 0x04, 0xe5, 0x59, 0xe7, 0xe3, 0x22, 0x04, + 0x27, 0x07, 0x8c, 0x88, 0x24, 0x0c, 0x9e, 0x64, 0x0a, 0x17, + 0xcc, 0xb4, 0x26, 0x31, 0x52, 0x17, 0x30, 0x88, 0x09, 0xfc, + 0x51, 0xdc, 0xc0, 0xda, 0xb2, 0x90, 0x82, 0xd6, 0xca, 0x5a, + 0x42, 0x90, 0xf6, 0xfc, 0x45, 0x60, 0xce, 0x6f, 0x22, 0xdb, + 0xb9, 0xda, 0x50, 0x70, 0x3d, 0xe7, 0x72, 0xda, 0x7f, 0x60, + 0xc0, 0x14, 0xbb, 0xbf, 0x7c, 0x65, 0x01, 0x5d, 0x1e, 0x12, + 0xd1, 0x8c, 0x62, 0x5d, 0xb9, 0x14, 0xf8, 0xf1, 0x41, 0x1b, + 0x39, 0xd1, 0xf7, 0x5b, 0x68, 0x86, 0xa4, 0xff, 0x51, 0x5b, + 0x6c, 0xf1, 0x7d, 0x85, 0x34, 0xcb, 0x67, 0x6f, 0x4f, 0xdc, + 0x26, 0xe4, 0x48, 0x94, 0x41, 0xdc, 0xaa, 0x85, 0x31, 0x19, + 0xab, 0x78, 0x85, 0x6e, 0x44, 0x96, 0xf4, 0x42, 0xbf, 0x29, + 0x71, 0x96, 0x23, 0x19, 0xb4, 0x6d, 0xde, 0xa8, 0xdb, 0xd0, + 0xfc, 0x11, 0xba, 0x20, 0x53, 0x42, 0x61, 0x11, 0xe5, 0x6d, + 0xa9, 0xe2, 0x56, 0xdd, 0x82, 0x6c, 0x52, 0x02, 0x93, 0xcd, + 0x92, 0x90, 0x11, 0x02, 0xf2, 0xe2, 0x2c, 0x96, 0x23, 0x0d, + 0xdc, 0xd2, 0xea, 0x85, 0xdd, 0xaf, 0x7e, 0xfb, 0x01, 0x85, + 0x34, 0x96, 0x60, 0x0a, 0xbc, 0xbe, 0x3e, 0xd3, 0xe1, 0xcf, + 0x0f, 0x09, 0x89, 0x46, 0x31, 0xcf, 0xbd, 0x0a, 0xe5, 0x7e, + 0xc9, 0x6e, 0x60, 0x6d, 0x59, 0x48, 0x41, 0x6b, 0x65, 0x2d, + 0x21, 0x48, 0x7b, 0x7e, 0x5a, 0xd7, 0x6f, 0x54, 0x8c, 0x68, + 0x7e, 0xe9, 0x5d, 0x10, 0xc8, 0x21, 0xd1, 0xe9, 0x93, 0xd7, + 0xdf, 0xa3, 0x1a, 0x84, 0xd2, 0xd6, 0xc6, 0x6e, 0x13, 0x72, + 0x24, 0x4a, 0xc1, 0x6e, 0x55, 0xa3, 0x93, 0x3f, 0x85, 0x37, + 0x30, 0xd7, 0xcd, 0x24, 0xc1, 0xd4, 0xd3, 0xf7, 0xf1, 0x24, + 0xdc, 0x3f, 0x16, 0x4b, 0xf0, 0xe7, 0x6e, 0x69, 0x75, 0xa3, + 0x8f, 0xb6, 0x3f, 0x9c, 0xe1, 0xa3, 0x1a, 0x4b, 0x0b, 0xc4, + 0x78, 0x92, 0x37, 0xd5, 0xdb, 0xb0, 0xa6, 0x5b, 0xfe, 0x4e, + 0x91, 0xb0, 0x0d, 0xc4, 0x8e, 0xb0, 0x0d, 0x42, 0x69, 0x6b, + 0x63, 0x37, 0xe8, 0x39, 0x12, 0x25, 0x81, 0x37, 0xcb, 0xb0, + 0xc2, 0x2c, 0x92, 0xf1, 0x8b, 0x6a, 0x68, 0x7d, 0x3a, 0x9f, + 0xe5, 0x98, 0xb1, 0x7d, 0x42, 0x2c, 0x47, 0x58, 0xe7, 0x21, + 0xd5, 0xd4, 0xd0, 0xfa, 0x74, 0xfd, 0x09, 0xf3, 0xa1, 0xfa, + 0x84, 0x58, 0xeb, 0xd6, 0x16, 0x47, 0xe0, 0x40, 0x85, 0xa8, + 0xbd, 0x4e, 0xe9, 0x41, 0x5d, 0xa8, 0xdf, 0xd6, 0x6e, 0xa2, + 0x63, 0x97, 0xbe, 0xfe, 0x3d, 0x2f, 0xf3, 0x2c, 0x05, 0x2a, + 0x4d, 0x2f, 0x19, 0xa2, 0x22, 0x3e, 0xfc, 0x24, 0x5c, 0xff, + 0x36, 0x65, 0x21, 0x8a, 0xf2, 0x97, 0x7d, 0x65, 0x90, 0x3e, + 0xa7, 0x4a, 0x89, 0xf4, 0x02, 0x41, 0x8e, 0xe2, 0x6f, 0xe8, + 0x1e, 0xfc, 0x6d, 0xe2, 0x56, 0x4a, 0xba, 0xc5, 0x01, 0x81, + 0x5b, 0xfd, 0x20, 0xf1, 0x46, 0x05, 0xdf, 0x2e, 0x1d, 0xf1, + 0x41, 0xc5, 0x3f, 0xb1, 0x74, 0x51, 0x05, 0x43, 0x98, 0x76, + 0x08, 0x67, 0x33, 0x45, 0x0d, 0x76, 0x87, 0xb1, 0x73, 0x2d, + 0xeb, 0xe2, 0xe7, 0x42, 0x93, 0x3c, 0xda, 0xc1, 0xc4, 0xf8, + 0x3d, 0x3c, 0x0e, 0x2d, 0xf6, 0x59, 0x9e, 0x32, 0xb9, 0xfc, + 0x2b, 0xbb, 0x94, 0xa3, 0x28, 0x93, 0x2d, 0xbb, 0xc8, 0x59, + 0x49, 0xf0, 0x38, 0x08, 0x55, 0xf9, 0x0c, 0x1a, 0x88, 0xd8, + 0x85, 0x9f, 0xdd, 0x1a, 0x20, 0xf0, 0xcc, 0x84, 0x4d, 0xd8, + 0x0b, 0x47, 0xb4, 0x9d, 0xc6, 0xba, 0x69, 0xf4, 0xcd, 0x9d, + 0xe6, 0x84, 0x80, 0x18, 0xd2, 0x6b, 0xe9, 0x46, 0xbf, 0xd7, + 0x14, 0x1c, 0x9e, 0x49, 0xfd, 0xd7, 0x6f, 0x18, 0x05, 0x6c, + 0xa7, 0xbb, 0xb7, 0xf8, 0x07, 0x50, 0x5a, 0x7e, 0x72, 0x22, + 0xed, 0x50, 0xa9, 0x6c, 0x18, 0xe3, 0x2f, 0xce, 0xee, 0x44, + 0xa9, 0x43, 0x73, 0x93, 0xb3, 0xf0, 0x9d, 0x43, 0xbe, 0xe3, + 0x9d, 0x97, 0x5a, 0x1e, 0xb0, 0xfa, 0x11, 0xc4, 0x3d, 0xf1, + 0x5f, 0x9b, 0x8d, 0xc4, 0x78, 0x97, 0xd1, 0x0b, 0xc5, 0xad, + 0x52, 0xfb, 0x1a, 0x8e, 0xef, 0x57, 0xa8, 0x26, 0xbd, 0x8e, + 0xf1, 0x0b, 0x54, 0x7f, 0xb0, 0x7d, 0x0c, 0x45, 0xa2, 0x09, + 0xa1, 0x35, 0x44, 0x4d, 0xad, 0x09, 0x37, 0x7f, 0x6c, 0x9a, + 0x4a, 0xd9, 0x49, 0xf1, 0x54, 0x0f, 0xd7, 0xa1, 0x31, 0x3e, + 0x9e, 0x0f, 0xe2, 0x9a, 0xe9, 0xee, 0x3f, 0x09, 0x17, 0x4f, + 0xec, 0x88, 0x99, 0xc3, 0xdd, 0x55, 0x8e, 0x88, 0x24, 0xee, + 0xa5, 0x72, 0xa0, 0xba, 0xf5, 0x4e, 0xe7, 0xc2, 0x4b, 0x65, + 0x2a, 0xe8, 0xbe, 0xc2, 0xad, 0x72, 0x20, 0x06, 0xd5, 0x6a, + 0xab, 0xf0, 0x5f, 0x45, 0x05, 0x07, 0xc6, 0x83, 0xae, 0x45, + 0x6b, 0x06, 0x3d, 0x89, 0x5d, 0x1f, 0xf2, 0x4c, 0xf1, 0x56, + 0x2c, 0xea, 0x07, 0x51, 0xde, 0x56, 0x7c, 0x89, 0xb8, 0xfd, + 0x28, 0xcf, 0xac, 0xf2, 0x49, 0xd1, 0x62, 0x88, 0xeb, 0x3a, + 0xce, 0xd1, 0xba, 0xfd, 0xf4, 0x61, 0xb7, 0x7c, 0x4e, 0xf3, + 0x42, 0x9b, 0xb0, 0x2e, 0x1c, 0x87, 0xfe, 0x9b, 0x33, 0x61, + 0x71, 0x15, 0xc2, 0xac, 0x10, 0x4d, 0xfa, 0x1c, 0xfe, 0x4c, + 0xf0, 0xec, 0xee, 0x1c, 0xf5, 0x15, 0xce, 0xbc, 0x64, 0x96, + 0xfc, 0x48, 0xdd, 0xbd, 0xe2, 0x37, 0x5d, 0xe0, 0x1e, 0xbd, + 0x1d, 0xbc, 0x4b, 0xc8, 0x11, 0x46, 0xa2, 0xf6, 0x65, 0x3a, + 0xac, 0x55, 0xb1, 0x8b, 0x0e, 0x3a, 0xdb, 0xc8, 0x07, 0x54, + 0x8e, 0xf5, 0x40, 0xf7, 0x6e, 0x70, 0x7e, 0xf3, 0x46, 0x36, + 0x3e, 0x70, 0x52, 0x54, 0x82, 0x20, 0xfb, 0x25, 0x1e, 0x49, + 0xd6, 0xf7, 0x30, 0x91, 0xaa, 0x5d, 0x2e, 0xf7, 0x94, 0x20, + 0x9f, 0xaf, 0x73, 0x50, 0x47, 0xf5, 0x78, 0xe4, 0x19, 0x7c, + 0x6b, 0x8f, 0x5e, 0xe4, 0x83, 0xaf, 0x1a, 0xdb, 0x06, 0x80, + 0x19, 0x4b, 0xc0, 0x63, 0x57, 0x1e, 0x87, 0xe4, 0x4e, 0x63, + 0x45, 0xdb, 0x56, 0x47, 0x99, 0x33, 0xfb, 0x4a, 0xcb, 0x29, + 0x85, 0xb8, 0x70, 0x59, 0x7e, 0x29, 0xcc, 0x47, 0xd3, 0x33, + 0xec, 0xe3, 0xa5, 0xf4, 0x73, 0xae, 0xcb, 0xda, 0x9c, 0x32, + 0x6e, 0xae, 0x0a, 0x33, 0x26, 0x4e, 0xae, 0xb8, 0x71, 0xe1, + 0xe4, 0x25, 0x69, 0x53, 0x9a, 0xbf, 0x18, 0x25, 0xa5, 0x4e, + 0xa3, 0x3a, 0xdb, 0x68, 0x2f, 0x5f, 0x5c, 0xa2, 0x27, 0x31, + 0x76, 0xd4, 0x08, 0xa2, 0x63, 0x3a, 0xef, 0xa6, 0x44, 0xdb, + 0xcd, 0x5e, 0x57, 0xe8, 0xf5, 0x97, 0x81, 0x69, 0x38, 0xe8, + 0xea, 0xa6, 0x6a, 0xd2, 0x31, 0x0b, 0x93, 0xe0, 0xef, 0x6f, + 0xbb, 0xf5, 0x6d, 0x02, 0x28, 0x6f, 0x2c, 0xd2, 0x77, 0x5d, + 0xb9, 0x7e, 0xca, 0x5c, 0x41, 0x7c, 0x92, 0x18, 0xac, 0xd0, + 0x58, 0x7c, 0x3b, 0x5d, 0xf2, 0x29, 0xcc, 0xae, 0x94, 0xe2, + 0xf9, 0xfb, 0xdc, 0x7a, 0x40, 0xbb, 0x48, 0xfb, 0xfd, 0x29, + 0xbe, 0xb5, 0x53, 0x1d, 0x76, 0xe3, 0xf2, 0xb1, 0x0e, 0xdc, + 0xb7, 0x06, 0x78, 0xb1, 0x74, 0xb5, 0x3b, 0xc1, 0x26, 0xcd, + 0x28, 0x5d, 0x4a, 0x36, 0x40, 0xbe, 0x5b, 0x6d, 0x68, 0x36, + 0xb2, 0xc1, 0x84, 0x68, 0x80, 0xf7, 0xc4, 0x58, 0x6d, 0x97, + 0x5c, 0xc5, 0xf6, 0x61, 0x98, 0x97, 0x5a, 0x68, 0x01, 0x1c, + 0xf5, 0x27, 0x9a, 0xe6, 0xd5, 0x10, 0x12, 0xa7, 0x1a, 0x0a, + 0x88, 0x10, 0x9c, 0x1c, 0x4d, 0x80, 0x6a, 0x94, 0x78, 0xe7, + 0xde, 0x5a, 0xc0, 0x01, 0xed, 0xb7, 0xb8, 0x5a, 0x15, 0x80, + 0xc8, 0xf4, 0x1f, 0x44, 0x26, 0x59, 0x66, 0xdd, 0x8e, 0x63, + 0x01, 0xdc, 0xa8, 0xdd, 0xd3, 0xf4, 0xd5, 0x7b, 0x97, 0x31, + 0x7f, 0xe5, 0xc8, 0xce, 0xa7, 0x8e, 0xc0, 0x0e, 0xd8, 0xce, + 0xc4, 0x7b, 0x50, 0x0f, 0xe2, 0xe1, 0x21, 0x5b, 0x70, 0x49, + 0xe9, 0xec, 0x2c, 0x65, 0xc8, 0x49, 0x02, 0x0f, 0x1c, 0x93, + 0x7d, 0x52, 0xc3, 0x5a, 0x7b, 0x03, 0x3b, 0x4a, 0xdb, 0xd8, + 0xf8, 0x03, 0x8b, 0x93, 0x99, 0xe7, 0x08, 0x82, 0x9d, 0xe4, + 0xc3, 0x84, 0x75, 0x28, 0x37, 0xb3, 0xe8, 0x84, 0x4d, 0xe7, + 0xa1, 0x02, 0xf2, 0x26, 0xd8, 0x50, 0x35, 0x82, 0x03, 0xbc, + 0x42, 0xc0, 0xdb, 0x82, 0x98, 0x02, 0x24, 0x76, 0x87, 0xf6, + 0x86, 0xee, 0x8d, 0x05, 0x4d, 0xde, 0xae, 0xab, 0xcb, 0x05, + 0x5e, 0x76, 0x68, 0xea, 0x18, 0x45, 0x64, 0xef, 0x86, 0x4f, + 0x9f, 0x78, 0x59, 0x16, 0xfb, 0x4f, 0xd7, 0xea, 0xed, 0x9e, + 0x6d, 0x95, 0x3a, 0x51, 0x3e, 0xc8, 0xd1, 0x1a, 0xb5, 0x7d, + 0xeb, 0xc8, 0x11, 0x9e, 0xf0, 0x11, 0xe5, 0xe0, 0x63, 0xed, + 0x90, 0xdb, 0xf8, 0xf7, 0x74, 0xaf, 0x9b, 0xdb, 0x06, 0x11, + 0x75, 0x65, 0x90, 0x30, 0x3d, 0x53, 0x28, 0x5c, 0xb6, 0x95, + 0x98, 0xc4, 0x8b, 0x5c, 0xc0, 0x65, 0x39, 0xf9, 0x0f, 0x83, + 0xdf, 0x52, 0x23, 0x16, 0x64, 0x33, 0x6f, 0x79, 0xbb, 0x16, + 0x49, 0xf9, 0xbc, 0x8d, 0x7a, 0x53, 0x81, 0xec, 0x9b, 0x91, + 0x2a, 0x51, 0x83, 0x12, 0xab, 0x91, 0x8f, 0x8d, 0x03, 0x24, + 0xdc, 0x69, 0x6d, 0xe9, 0xbc, 0x30, 0x36, 0x2a, 0x2e, 0x1e, + 0x5b, 0x30, 0x67, 0x24, 0x86, 0x50, 0xa9, 0xb9, 0x33, 0x57, + 0x04, 0xb7, 0x78, 0x48, 0xc2, 0x75, 0x4b, 0xb7, 0xa1, 0x50, + 0xca, 0xcc, 0x36, 0x0a, 0xd1, 0x56, 0x0f, 0xfd, 0xaa, 0xee, + 0x35, 0xc8, 0x7b, 0xfd, 0x28, 0xcc, 0x4f, 0xb8, 0x43, 0xda, + 0x8f, 0xe8, 0xb7, 0x7a, 0xe4, 0x8c, 0xd9, 0xa3, 0x6b, 0x7a, + 0xee, 0xb8, 0x52, 0x37, 0xcb, 0xaf, 0xd6, 0x54, 0x19, 0x69, + 0xcd, 0x61, 0x18, 0x71, 0x1b, 0x69, 0xf9, 0x37, 0xd7, 0x43, + 0xbe, 0x7f, 0x88, 0xea, 0xa1, 0xee, 0x83, 0x03, 0xf4, 0x1a, + 0x0b, 0xee, 0x3f, 0x43, 0x9b, 0xdf, 0x21, 0xcc, 0x6a, 0xeb, + 0xaa, 0xa4, 0x51, 0xa5, 0x03, 0xa7, 0x3b, 0xa4, 0xb6, 0xdf, + 0x1e, 0xab, 0x54, 0x1c, 0x34, 0x55, 0x12, 0x23, 0x1f, 0xc7, + 0xef, 0xcc, 0x2b, 0x23, 0x70, 0xab, + }, + { + /* 14 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x2d, 0x99, 0xe9, + 0x95, 0x9f, 0xd4, 0x49, 0xe6, 0xd5, 0x76, 0xf2, 0x33, 0xc8, + 0x20, 0x98, 0x40, 0x5a, 0xf1, 0x11, 0xe9, 0xfd, 0x6b, 0x92, + 0x0f, 0x69, 0xec, 0x27, 0x66, 0x53, 0x40, 0xf3, 0x60, 0x77, + 0x68, 0xf8, 0x7c, 0x62, 0xbf, 0xdb, 0xe9, 0xbc, 0x9a, 0xd5, + 0x55, 0x9b, 0x60, 0x6b, 0x80, 0xb4, 0x21, 0x22, 0x11, 0x39, + 0xd6, 0xe7, 0x1e, 0xd2, 0x1b, 0x4e, 0xcc, 0xa6, 0x80, 0x25, + 0xa0, 0x99, 0xb8, 0xcb, 0x84, 0xa6, 0x02, 0xae, 0xf8, 0x07, + 0x6d, 0xbc, 0xff, 0x6e, 0xa0, 0xbd, 0xc0, 0xee, 0xd0, 0x33, + 0xf8, 0xc4, 0xbd, 0x75, 0x11, 0xbb, 0xf7, 0x69, 0xaa, 0xf5, + 0xc0, 0xd6, 0xe0, 0xc3, 0x49, 0xda, 0x6d, 0x5b, 0x69, 0x3c, + 0xf7, 0x6e, 0x81, 0x9b, 0x99, 0x3d, 0xe0, 0x4e, 0xc3, 0xab, + 0x42, 0x44, 0x22, 0x72, 0x6f, 0x0d, 0x3c, 0x67, 0x36, 0x9c, + 0x5b, 0x8f, 0xc3, 0x4a, 0xe3, 0x86, 0xdb, 0xad, 0xb7, 0xed, + 0xbb, 0x44, 0xda, 0xb2, 0x40, 0x6e, 0x68, 0x47, 0xe3, 0xd2, + 0x83, 0xf1, 0xb3, 0x55, 0xcb, 0x8f, 0x04, 0x9f, 0x33, 0x0e, + 0xda, 0xbb, 0x3d, 0xdc, 0x83, 0xb9, 0xa3, 0xdc, 0x2a, 0xbc, + 0x5e, 0x10, 0xd0, 0xd6, 0xd5, 0xdb, 0xac, 0x49, 0x0e, 0x14, + 0xa3, 0x21, 0x43, 0x1f, 0x63, 0x66, 0x33, 0x4b, 0xb9, 0xea, + 0x22, 0xb5, 0x2d, 0xd2, 0x97, 0x29, 0x43, 0x6f, 0x63, 0x32, + 0xfa, 0x8f, 0xa6, 0xd4, 0x6d, 0xa3, 0xc4, 0x60, 0x5b, 0x20, + 0xa4, 0xe1, 0x63, 0xf7, 0x03, 0x45, 0x92, 0x77, 0xda, 0xb6, + 0xd2, 0x78, 0x2d, 0xdc, 0xc1, 0xf5, 0xf1, 0x7a, 0x03, 0x9c, + 0x23, 0x68, 0x0b, 0x9e, 0x4f, 0x29, 0x06, 0x31, 0xcb, 0x09, + 0xb7, 0x07, 0xc2, 0xb2, 0x23, 0x04, 0x45, 0x95, 0x84, 0x88, + 0x44, 0xe4, 0xde, 0x1a, 0x78, 0xce, 0x6c, 0xfb, 0xb6, 0xdd, + 0x45, 0x94, 0x65, 0xb8, 0x1d, 0x61, 0xd1, 0x7b, 0x0a, 0x53, + 0x9e, 0x1b, 0x1a, 0x09, 0x85, 0x15, 0x65, 0x0c, 0x05, 0xcf, + 0x75, 0x99, 0xad, 0x19, 0xb5, 0x88, 0x77, 0xa7, 0x80, 0xdc, + 0xd0, 0x8e, 0x05, 0x67, 0x25, 0xe2, 0xec, 0x70, 0x38, 0x86, + 0x61, 0xc1, 0x91, 0x72, 0xf6, 0x2e, 0xe3, 0x46, 0x25, 0xff, + 0xc5, 0x21, 0xa5, 0xaa, 0x55, 0xdd, 0x08, 0xfd, 0x66, 0x1c, + 0x77, 0xb5, 0x7a, 0x7b, 0xc5, 0xb1, 0xe5, 0x0c, 0x3c, 0x43, + 0xc0, 0x42, 0xdc, 0xb4, 0x80, 0xc9, 0x01, 0x47, 0x49, 0xb3, + 0xe5, 0x29, 0x85, 0x7b, 0x54, 0xbb, 0xbc, 0x20, 0x63, 0x6f, + 0x69, 0x75, 0x9b, 0x92, 0x1c, 0x28, 0x85, 0x42, 0xa5, 0x56, + 0xcd, 0x52, 0x29, 0xbf, 0xb7, 0x26, 0x8f, 0xa0, 0xed, 0x60, + 0x2f, 0xe0, 0xa5, 0xda, 0x86, 0x3e, 0xc6, 0xcc, 0x66, 0x96, + 0xb1, 0x17, 0x44, 0xa9, 0x5a, 0x67, 0xed, 0x52, 0x86, 0xde, + 0xa6, 0x13, 0x5f, 0x25, 0xf3, 0x09, 0x65, 0x5e, 0xa2, 0x7c, + 0x2c, 0x95, 0xde, 0x9a, 0xa6, 0x46, 0xc6, 0x64, 0x37, 0xdd, + 0x8f, 0x6b, 0xda, 0x85, 0x4b, 0xc0, 0xb6, 0x40, 0x8b, 0x01, + 0xc6, 0x2d, 0xe6, 0x49, 0xae, 0x34, 0x1a, 0xf4, 0x0e, 0xcc, + 0xad, 0x15, 0xc0, 0xb2, 0xb8, 0xc9, 0xe6, 0xb5, 0x06, 0x8a, + 0xe7, 0xee, 0x77, 0xaf, 0x67, 0xf0, 0x5a, 0x7b, 0x41, 0x29, + 0x21, 0xf4, 0x06, 0xfb, 0x26, 0xa7, 0x7e, 0x07, 0xe2, 0x30, + 0xb3, 0xb9, 0xbc, 0xae, 0x37, 0xdb, 0x12, 0x3c, 0x26, 0x63, + 0x46, 0xd0, 0x16, 0xff, 0x9e, 0x52, 0x0c, 0x62, 0x55, 0x12, + 0xad, 0x0e, 0x47, 0xa7, 0x46, 0x08, 0x66, 0xfd, 0x8f, 0x16, + 0x0b, 0xcd, 0xd8, 0x2b, 0xb3, 0xc7, 0xdb, 0xfc, 0x74, 0x6f, + 0x66, 0x90, 0x8a, 0xe9, 0xcb, 0xd3, 0x88, 0x0b, 0x7f, 0x34, + 0xf0, 0x5f, 0xd8, 0x35, 0xaf, 0x79, 0x8a, 0xeb, 0xaa, 0xc4, + 0x52, 0x3a, 0x1d, 0x94, 0xab, 0x7d, 0x16, 0x8a, 0xae, 0xc7, + 0x9c, 0xb1, 0xaa, 0x73, 0xca, 0xb3, 0x3a, 0xc2, 0x61, 0xf6, + 0x14, 0xa6, 0xff, 0x36, 0x34, 0x12, 0xc9, 0x2a, 0xca, 0x18, + 0xea, 0x9e, 0xa3, 0x2b, 0xf4, 0x69, 0xc0, 0xef, 0x19, 0xe3, + 0x42, 0xe0, 0xfa, 0xe2, 0xea, 0x80, 0x0a, 0x5d, 0xea, 0xf1, + 0x99, 0x32, 0xa9, 0xd3, 0xee, 0x8d, 0xc3, 0x7b, 0x63, 0xdf, + 0x0a, 0xce, 0x2a, 0x70, 0x73, 0x18, 0x0c, 0xad, 0x7d, 0x9a, + 0x08, 0x58, 0xb5, 0x89, 0x50, 0x17, 0x2a, 0x56, 0x4a, 0x07, + 0x1b, 0xe0, 0x70, 0xcf, 0xc2, 0x41, 0xe1, 0xe4, 0x2f, 0x5c, + 0x05, 0x8c, 0x4a, 0x3d, 0x6a, 0x2a, 0x82, 0x09, 0xe5, 0x50, + 0x16, 0x08, 0x07, 0x31, 0x59, 0xae, 0x36, 0x44, 0x6a, 0xa5, + 0x49, 0x42, 0x89, 0x97, 0xaa, 0x79, 0x10, 0x39, 0xcc, 0x38, + 0xee, 0xa9, 0xf4, 0xf6, 0x49, 0xa1, 0x69, 0x6f, 0x10, 0x7e, + 0x3f, 0xe6, 0xc4, 0x70, 0x2a, 0xed, 0x98, 0x5b, 0xc7, 0x3e, + 0x69, 0x39, 0x09, 0x18, 0x78, 0x86, 0x43, 0x84, 0x7b, 0xab, + 0xc3, 0x51, 0x02, 0x8e, 0x92, 0xa5, 0x09, 0x52, 0x29, 0x35, + 0xe1, 0x6f, 0xd6, 0x1b, 0xaf, 0xe2, 0x25, 0x84, 0x74, 0x7c, + 0xa1, 0x6d, 0x29, 0xca, 0xc9, 0xf6, 0xa8, 0xb5, 0xbb, 0x40, + 0xc6, 0xde, 0xd2, 0xea, 0xf5, 0xe7, 0x38, 0x50, 0xc9, 0x84, + 0xe9, 0xdb, 0x31, 0x5c, 0x2e, 0xdf, 0x12, 0x97, 0x34, 0x3f, + 0x83, 0x15, 0x0b, 0x98, 0xe9, 0x1c, 0x89, 0xac, 0x59, 0xa4, + 0x52, 0xbd, 0xad, 0x4c, 0xdd, 0x83, 0x19, 0xc0, 0x5e, 0x03, + 0x89, 0x77, 0xa9, 0x81, 0xc0, 0x4d, 0xc7, 0x22, 0x79, 0x05, + 0x3b, 0x56, 0x6f, 0x32, 0x6d, 0xcb, 0xa9, 0xef, 0xcf, 0x7c, + 0x4f, 0x5b, 0xcc, 0xef, 0xa1, 0x2e, 0x88, 0x91, 0xb4, 0xce, + 0x19, 0xa4, 0xcf, 0x7f, 0xef, 0x51, 0xd6, 0xb2, 0x59, 0x70, + 0x75, 0x67, 0x6e, 0x44, 0xc2, 0x3c, 0x2a, 0x6c, 0xef, 0xe7, + 0x8f, 0x26, 0xbe, 0x4a, 0x25, 0x12, 0xca, 0xbc, 0x87, 0xf8, + 0x58, 0xe9, 0x7f, 0xf7, 0x8f, 0x8c, 0xaf, 0x0b, 0x27, 0xa3, + 0xb0, 0x8d, 0x1e, 0xf5, 0x61, 0x2d, 0x2e, 0x1b, 0x4c, 0x3f, + 0xaf, 0x14, 0x4f, 0xc8, 0x6e, 0x79, 0xdd, 0xd6, 0x77, 0xc9, + 0x96, 0x43, 0xaf, 0x80, 0xd5, 0x02, 0x4f, 0x5a, 0x6f, 0xe5, + 0xf7, 0x90, 0x48, 0x49, 0xa3, 0x80, 0x70, 0x96, 0xd9, 0x72, + 0xe6, 0xca, 0x6f, 0xc2, 0x0f, 0x92, 0x9f, 0x68, 0x34, 0x2b, + 0x1c, 0x5b, 0x99, 0x2a, 0x43, 0xa7, 0xb3, 0x51, 0x0f, 0xa9, + 0x2f, 0xbf, 0x06, 0x81, 0xa1, 0xb4, 0xc8, 0x12, 0x7f, 0xff, + 0x35, 0x55, 0x80, 0x99, 0x2f, 0x31, 0x0c, 0xd7, 0x0d, 0x1f, + 0xee, 0x9d, 0xce, 0x23, 0xb4, 0xf6, 0x82, 0x52, 0x42, 0x2b, + 0x0c, 0x35, 0x2c, 0xfa, 0x94, 0xf6, 0x7b, 0x02, 0x1a, 0x6a, + 0x52, 0x23, 0xf4, 0xa0, 0x71, 0xe3, 0x2c, 0xad, 0x4c, 0x8d, + 0xfc, 0x0e, 0x07, 0x60, 0xa5, 0xb1, 0xbb, 0x9f, 0x6e, 0x75, + 0x24, 0x78, 0x4c, 0xc6, 0x6c, 0xa0, 0x65, 0xe7, 0x92, 0xff, + 0x71, 0xf8, 0x5d, 0x4a, 0x18, 0x87, 0x17, 0xb0, 0x6c, 0x5e, + 0x8c, 0x63, 0x2c, 0x3d, 0xff, 0xa4, 0x18, 0xc4, 0xaa, 0x24, + 0x99, 0x1c, 0x8e, 0x8d, 0x8c, 0x10, 0xac, 0x4e, 0xb5, 0xd4, + 0x6a, 0x3b, 0xcc, 0x8d, 0x4c, 0xf1, 0xef, 0xee, 0xbd, 0x45, + 0xac, 0x88, 0xcc, 0x39, 0xdd, 0x2c, 0x16, 0x59, 0x73, 0x56, + 0xa5, 0x4d, 0x75, 0x3b, 0xe8, 0xde, 0xcc, 0xe3, 0xec, 0x14, + 0x44, 0xc5, 0x83, 0xc6, 0xa7, 0x1f, 0x43, 0x98, 0x03, 0xc9, + 0xdb, 0x16, 0xec, 0x7b, 0xd7, 0x11, 0x55, 0x65, 0xd3, 0x16, + 0xfe, 0x68, 0x23, 0xbe, 0x73, 0x6a, 0x9d, 0xf2, 0xd7, 0x15, + 0xf7, 0x3c, 0xcc, 0x8c, 0x46, 0x89, 0x2a, 0x21, 0xc5, 0x6b, + 0x05, 0x98, 0xae, 0x3a, 0xf7, 0x8d, 0x97, 0x4b, 0xa4, 0x74, + 0x3a, 0xeb, 0x95, 0xfa, 0x2c, 0xd7, 0x9f, 0x4d, 0xfb, 0xa1, + 0x97, 0xe6, 0xb7, 0x66, 0x3d, 0x9d, 0xaf, 0x74, 0x41, 0xb3, + 0xca, 0x02, 0xe9, 0xbf, 0xc8, 0x69, 0xb7, 0x7e, 0x57, 0xa5, + 0x74, 0x47, 0xc2, 0x2f, 0x28, 0x8f, 0x3d, 0x6c, 0x68, 0x24, + 0x51, 0x54, 0x57, 0x30, 0x77, 0x88, 0xed, 0xae, 0x57, 0xb0, + 0xfc, 0xc6, 0xdb, 0xb9, 0x1e, 0xd6, 0x62, 0x9c, 0x77, 0xa8, + 0x17, 0xff, 0x85, 0x56, 0x2b, 0xd2, 0x43, 0x1d, 0x32, 0x05, + 0x84, 0x03, 0x37, 0x07, 0x17, 0xc3, 0x37, 0xd2, 0x1c, 0xbf, + 0xbe, 0x4d, 0x97, 0x54, 0xd4, 0xd0, 0xf2, 0xf1, 0x04, 0xcf, + 0x37, 0x5b, 0x14, 0xba, 0x17, 0x21, 0xf1, 0x64, 0x91, 0x65, + 0x1f, 0xd9, 0x45, 0xf6, 0xc6, 0x7d, 0x14, 0x5f, 0x34, 0x97, + 0x8e, 0xc8, 0x64, 0xfb, 0x45, 0x2c, 0xf9, 0x0c, 0x33, 0x04, + 0xf5, 0xb5, 0x34, 0xc7, 0x54, 0xe0, 0xe6, 0x30, 0x18, 0x99, + 0xfa, 0xf7, 0x10, 0xb0, 0xa9, 0xd1, 0xa0, 0x2e, 0x54, 0xac, + 0x74, 0xcd, 0x7f, 0xd9, 0x8d, 0x06, 0x2e, 0xbe, 0xf6, 0x65, + 0xdf, 0x23, 0x93, 0xe6, 0x74, 0x34, 0x94, 0x0e, 0x36, 0x03, + 0xe0, 0x5d, 0x47, 0x82, 0x01, 0x0b, 0x5e, 0xb8, 0x0a, 0xdb, + 0x94, 0x7a, 0xb4, 0x23, 0xaf, 0xea, 0x75, 0xc2, 0x93, 0xcb, + 0xe7, 0xde, 0x28, 0x4a, 0x39, 0x13, 0xb4, 0xe2, 0xd4, 0x54, + 0xc7, 0x12, 0x09, 0xa0, 0x2c, 0x10, 0x0e, 0x62, 0xb2, 0x9f, + 0x6c, 0x88, 0xd4, 0x89, 0xf4, 0x79, 0x5e, 0xfb, 0x9c, 0x3f, + 0xf8, 0x59, 0xe8, 0xb7, 0xc4, 0x6d, 0x5f, 0x40, 0xf4, 0x11, + 0x92, 0x84, 0xd1, 0xed, 0x97, 0xf2, 0x20, 0x72, 0x5b, 0x70, + 0x1f, 0x91, 0x2b, 0x2f, 0x92, 0x81, 0xb2, 0xa9, 0x48, 0x04, + 0x02, 0x6d, 0xf4, 0x3b, 0xbd, 0xa5, 0x69, 0x63, 0x18, 0xe7, + 0xb2, 0x19, 0xd2, 0xde, 0x20, 0xfc, 0x7e, 0x0f, 0x4b, 0xe0, + 0x54, 0x19, 0xf3, 0xb6, 0x4d, 0x7c, 0xd2, 0x72, 0xf2, 0xf3, + 0xb9, 0x15, 0xeb, 0x90, 0x9f, 0xa9, 0xb2, 0xcc, 0x85, 0x44, + 0x7e, 0xb4, 0xf2, 0xea, 0x12, 0x30, 0xf0, 0xcf, 0x86, 0xcb, + 0xf6, 0x95, 0x45, 0xa2, 0x04, 0xdf, 0xe7, 0x89, 0x12, 0xa4, + 0x32, 0x1d, 0x69, 0x26, 0x13, 0x54, 0x22, 0xdc, 0xa3, 0x77, + 0x72, 0x2d, 0xd4, 0x41, 0x32, 0x3c, 0x52, 0x6a, 0x01, 0xde, + 0x6f, 0x36, 0x9d, 0x07, 0x4a, 0xcb, 0xe8, 0xf8, 0x81, 0xda, + 0x52, 0x57, 0x72, 0x47, 0x98, 0x37, 0xfa, 0xa9, 0x49, 0x4e, + 0xac, 0x1e, 0x9e, 0x0a, 0xb2, 0x12, 0x72, 0xcf, 0x51, 0x2f, + 0x93, 0xa9, 0xb5, 0x80, 0x4f, 0x7f, 0x67, 0x17, 0x29, 0x0d, + 0x70, 0xa0, 0x51, 0xcb, 0x71, 0x02, 0x0a, 0x40, 0x20, 0x1f, + 0x9b, 0x36, 0x81, 0xc2, 0x5f, 0xff, 0x43, 0x68, 0x71, 0x53, + 0x11, 0x75, 0x62, 0xb8, 0x5c, 0x7d, 0x24, 0xed, 0x68, 0x7e, + 0xc5, 0x2a, 0x16, 0xf3, 0x11, 0x38, 0x31, 0x58, 0xfb, 0x51, + 0xc9, 0xe2, 0xf0, 0xa4, 0x8e, 0xab, 0xb3, 0xd8, 0x25, 0x3b, + 0x31, 0xa0, 0xd1, 0x9b, 0xb2, 0x8b, 0xa4, 0xb9, 0x99, 0x98, + 0x79, 0xc5, 0x32, 0x43, 0xbc, 0x06, 0xd1, 0xee, 0xf1, 0xb6, + 0x2b, 0x62, 0x31, 0x26, 0x4d, 0xd1, 0x9f, 0x10, 0x44, 0xb1, + 0x8f, 0xce, 0xf1, 0x76, 0x91, 0xc1, 0x43, 0x9a, 0x4d, 0x44, + 0xf2, 0x0a, 0x76, 0xac, 0xde, 0x64, 0xda, 0x55, 0x91, 0x1d, + 0xb1, 0xec, 0xda, 0x73, 0xd8, 0xdb, 0x26, 0x43, 0x90, 0x79, + 0xa8, 0x96, 0xe9, 0x9d, 0xb1, 0x85, 0x5d, 0xf8, 0x9e, 0xb6, + 0x5b, 0x1d, 0x81, 0x5c, 0xd3, 0xe1, 0xab, 0x5f, 0x32, 0x8b, + 0x5d, 0xfe, 0x7d, 0xd5, 0x07, 0x5f, 0xce, 0x82, 0x55, 0x15, + 0x35, 0x34, 0xdd, 0xad, 0x01, 0x43, 0x7d, 0x66, 0x1d, 0xa2, + 0x6f, 0xa7, 0xb2, 0xe0, 0xea, 0xce, 0xdc, 0x88, 0x47, 0x78, + 0x54, 0xd8, 0x1d, 0x0d, 0x3d, 0x8f, 0xf6, 0x4e, 0x27, 0x7f, + 0x3e, 0x87, 0x3a, 0x5d, 0x31, 0x8a, 0x67, 0x10, 0x3d, 0x95, + 0xdd, 0x4c, 0xbf, 0x94, 0x4a, 0x24, 0x57, 0xbb, 0xcd, 0x33, + 0xb0, 0x11, 0xfe, 0x2d, 0xdd, 0xdb, 0xfd, 0x61, 0x26, 0x7d, + 0xdf, 0xbb, 0x83, 0xf2, 0x2b, 0xe6, 0xc6, 0xe3, 0xcd, 0xe5, + 0xfd, 0x43, 0x9d, 0x16, 0x4e, 0x85, 0xa3, 0xd9, 0x3c, 0x29, + 0xc2, 0x5a, 0x5c, 0x36, 0x98, 0x7e, 0x9d, 0x28, 0xbd, 0x3b, + 0xd7, 0x6c, 0x36, 0x46, 0xe8, 0x60, 0x24, 0x8f, 0x2a, 0xc4, + 0xab, 0xb6, 0xbd, 0xb0, 0x9e, 0x53, 0xdc, 0xf2, 0x79, 0x6f, + 0xee, 0x51, 0xef, 0x86, 0x9d, 0xc3, 0x69, 0x04, 0x9e, 0xb4, + 0xbe, 0x7e, 0x45, 0x1b, 0xec, 0xf0, 0x3a, 0x18, 0x09, 0x53, + 0xeb, 0x31, 0x5a, 0xcc, 0xbe, 0x2c, 0xde, 0x09, 0x2d, 0xe3, + 0x90, 0x92, 0x85, 0xc3, 0xe0, 0xef, 0x71, 0xe4, 0x0f, 0x57, + 0xde, 0x47, 0xfe, 0x24, 0xb4, 0x0a, 0x05, 0x0d, 0x51, 0x8a, + 0x06, 0x3a, 0x07, 0x16, 0x3c, 0x9f, 0xfe, 0xdf, 0x1e, 0xe7, + 0xfd, 0xd0, 0x68, 0x56, 0x38, 0xb6, 0xf1, 0x54, 0x86, 0x8d, + 0xa5, 0xa2, 0x1e, 0x91, 0x3e, 0xca, 0x64, 0x39, 0xfd, 0xc9, + 0xec, 0xff, 0x17, 0x81, 0xf0, 0x7f, 0x96, 0x6a, 0x3e, 0x09, + 0x5e, 0xbd, 0x0c, 0xc1, 0x81, 0xab, 0x53, 0x24, 0xfe, 0x3d, + 0x6a, 0xaa, 0xc3, 0xf1, 0x5e, 0x62, 0x7e, 0x90, 0x95, 0x28, + 0x14, 0x34, 0x87, 0x6d, 0x18, 0xe8, 0x1c, 0x58, 0xf0, 0x39, + 0x7e, 0xfa, 0x18, 0x6d, 0x1a, 0x3e, 0x1f, 0xf9, 0x5f, 0x46, + 0xab, 0x2f, 0xc7, 0xa4, 0x84, 0x56, 0x18, 0x6a, 0x38, 0x40, + 0x83, 0xd7, 0x8a, 0x66, 0x8b, 0x0f, 0x4d, 0xfa, 0xb1, 0x56, + 0xb7, 0x9e, 0x38, 0xf2, 0x58, 0x37, 0xeb, 0x2f, 0xf6, 0x04, + 0x34, 0xd4, 0xa4, 0x46, 0x2b, 0x83, 0xe2, 0x05, 0x58, 0x99, + 0x78, 0x1a, 0x72, 0xc6, 0x63, 0x9b, 0xe0, 0x9d, 0x42, 0x93, + 0x5d, 0x71, 0xd1, 0xcd, 0x78, 0x01, 0x98, 0xd9, 0x3b, 0x1c, + 0x0e, 0xc0, 0x89, 0xa1, 0xb5, 0xfd, 0xdc, 0xea, 0x48, 0xf0, + 0x98, 0x4f, 0xb8, 0xf4, 0xa2, 0xf5, 0x9b, 0x5f, 0x5d, 0xe8, + 0x53, 0x28, 0xaa, 0x18, 0x7b, 0x38, 0xb8, 0xd7, 0xd8, 0x83, + 0xca, 0x0d, 0xe7, 0x3d, 0xe2, 0x33, 0xba, 0x94, 0x30, 0xcd, + 0x2e, 0xa3, 0xd8, 0xbc, 0xf8, 0xae, 0x53, 0xe4, 0x72, 0xa2, + 0x36, 0x7a, 0x5c, 0x41, 0x46, 0x3f, 0x1d, 0x6b, 0xf8, 0x24, + 0xdb, 0xc6, 0x58, 0x7a, 0x3d, 0x8b, 0x30, 0x4b, 0x97, 0x48, + 0xf1, 0x38, 0xdf, 0xd9, 0xdb, 0x20, 0xfb, 0xeb, 0xc1, 0x93, + 0xa8, 0x14, 0xe4, 0x02, 0x71, 0x9d, 0x87, 0xca, 0xec, 0x11, + 0xfb, 0xb8, 0x9b, 0x9c, 0xa9, 0x6b, 0xd4, 0x76, 0x5b, 0xd9, + 0x98, 0x21, 0x1d, 0x1f, 0xb9, 0x8a, 0x9b, 0xd3, 0xbb, 0xb1, + 0x30, 0x82, 0x41, 0xe9, 0x8f, 0x90, 0x7e, 0xf4, 0x6b, 0xed, + 0x8a, 0x42, 0xbb, 0x4b, 0x5b, 0x72, 0x79, 0x58, 0x2c, 0xb2, + 0xe6, 0xac, 0x89, 0x9a, 0xea, 0x76, 0x13, 0x7f, 0x5b, 0x05, + 0x7b, 0x5f, 0xe0, 0xb1, 0xb9, 0x2d, 0x32, 0xe5, 0x6f, 0x4f, + 0x9c, 0x84, 0x20, 0xb7, 0x7b, 0x9d, 0x1b, 0x28, 0x88, 0x49, + 0xc5, 0x4f, 0x8d, 0x3e, 0x86, 0xf3, 0x06, 0x51, 0x75, 0x2c, + 0x1b, 0xf6, 0x3b, 0x05, 0x11, 0xa0, 0x50, 0xd0, 0x59, 0x77, + 0x60, 0x26, 0x70, 0xa3, 0x46, 0xe4, 0x3b, 0x6e, 0x6d, 0x22, + 0xaa, 0xca, 0x65, 0x2c, 0x3f, 0xd0, 0x46, 0xbf, 0xe6, 0xd4, + 0xf9, 0x27, 0x6d, 0x2a, 0x4d, 0x0f, 0x33, 0x23, 0xf0, 0xb3, + 0xeb, 0x99, 0xa0, 0x6a, 0x90, 0x26, 0xca, 0xef, 0x4d, 0xb2, + 0x2d, 0x78, 0x5b, 0xdb, 0x8c, 0xd1, 0x54, 0x42, 0x49, 0xd6, + 0x0a, 0xf3, 0x9f, 0x74, 0x2d, 0xd9, 0x0d, 0x55, 0xc2, 0x32, + 0x19, 0x4e, 0x80, 0x0b, 0xaf, 0x03, 0x7c, 0x01, 0xac, 0xbc, + 0x0d, 0x41, 0xed, 0x96, 0x8b, 0xe8, 0x74, 0x15, 0xe9, 0x37, + 0x58, 0x6d, 0xfd, 0x9a, 0x35, 0x81, 0xed, 0x0f, 0xcd, 0xbb, + 0x12, 0x01, 0xe1, 0x8a, 0x3d, 0x7e, 0xbe, 0xb8, 0x8b, 0x68, + 0x06, 0x49, 0xcd, 0x97, 0xad, 0xcc, 0x7a, 0xf9, 0x9d, 0xe8, + 0x82, 0xa5, 0x57, 0x04, 0x11, 0xbd, 0x53, 0xd2, 0xad, 0xfc, + 0x8d, 0xe1, 0xe3, 0x10, 0x08, 0x77, 0x56, 0xec, 0xb1, 0xd1, + 0x67, 0x4f, 0x60, 0x1a, 0x8d, 0x64, 0xae, 0x89, 0xe8, 0x8e, + 0x47, 0x5e, 0x50, 0xdd, 0x7a, 0xd8, 0xd0, 0x48, 0xa2, 0xa8, + 0xae, 0x60, 0x8e, 0xa4, 0x71, 0x67, 0xd2, 0xc1, 0x84, 0x94, + 0x9c, 0x0d, 0xa6, 0xba, 0x91, 0x60, 0x8e, 0xf8, 0xee, 0xd3, + 0x19, 0x9f, 0xae, 0xa3, 0x3b, 0x4f, 0x75, 0xb1, 0x3c, 0x6f, + 0xc4, 0xfb, 0xee, 0x93, 0xce, 0xfe, 0x80, 0x76, 0x3b, 0x3c, + 0xef, 0x06, 0x93, 0x64, 0x4a, 0x9d, 0xf7, 0x33, 0xce, 0x0b, + 0x2e, 0x3d, 0xc9, 0xac, 0x56, 0x67, 0x86, 0x3a, 0x64, 0x0a, + 0xcb, 0x06, 0x6e, 0x0e, 0x2e, 0x45, 0x0e, 0x10, 0x50, 0x45, + 0xc3, 0xf8, 0x52, 0x73, 0x82, 0xdf, 0xbd, 0xf4, 0x5d, 0xc6, + 0x0e, 0xdd, 0x6e, 0x67, 0x38, 0xbd, 0xbf, 0x9a, 0xed, 0xa8, + 0x6b, 0x63, 0x27, 0x21, 0x08, 0x5d, 0x6e, 0xb6, 0x4e, 0x4a, + 0xa1, 0x54, 0x2a, 0x05, 0x39, 0xe1, 0x8d, 0xb6, 0x51, 0xd3, + 0x3b, 0x95, 0x4e, 0x2e, 0x28, 0xb7, 0x2e, 0x42, 0x21, 0xc8, + 0xe1, 0xca, 0x3e, 0x71, 0x8a, 0x2f, 0x4f, 0xfa, 0x28, 0xbe, + 0x08, 0x9a, 0xb7, 0xab, 0xb4, 0x57, 0x35, 0x83, 0xd8, 0xa4, + 0xfc, 0xdd, 0x7c, 0x32, 0x08, 0x26, 0x68, 0xed, 0xdf, 0x53, + 0xc8, 0x35, 0x8a, 0x58, 0x31, 0x18, 0x66, 0x08, 0x29, 0xa9, + 0x68, 0x4d, 0x48, 0xc0, 0x46, 0xba, 0x5d, 0xaa, 0x5e, 0x11, + 0xd7, 0xcd, 0x10, 0xfa, 0x1a, 0x61, 0x48, 0xd5, 0xa8, 0x03, + 0x0f, 0x60, 0x30, 0xf1, 0x37, 0x2d, 0x20, 0xa3, 0x91, 0x61, + 0x83, 0x5c, 0xa8, 0x9b, 0x88, 0x2e, 0x96, 0x89, 0xa5, 0x6e, + 0xe3, 0x64, 0xc6, 0x76, 0xe7, 0x93, 0xb0, 0x94, 0x88, 0x03, + 0xe8, 0x59, 0xfe, 0x71, 0xd9, 0x0c, 0x5c, 0xbf, 0x2f, 0xca, + 0x7d, 0x46, 0xe5, 0x0f, 0xe8, 0x68, 0xc8, 0x74, 0x67, 0x98, + 0x4c, 0x93, 0x88, 0xf6, 0xc9, 0x1f, 0x0b, 0xb4, 0xd6, 0xc7, + 0xc8, 0xf0, 0xeb, 0x1c, 0x6c, 0x06, 0x03, 0xba, 0x8e, 0xc7, + 0x02, 0x16, 0xbc, 0xb3, 0x14, 0x75, 0xeb, 0xf4, 0xcb, 0x31, + 0xf5, 0xef, 0x96, 0x25, 0x5a, 0x8e, 0xe4, 0xc3, 0xca, 0x41, + 0x27, 0xbd, 0xcb, 0x6c, 0xab, 0x46, 0x9d, 0x17, 0xea, 0x47, + 0xe5, 0x55, 0x0d, 0x7f, 0x50, 0x94, 0x72, 0x26, 0xab, 0x07, + 0x8b, 0x6b, 0x04, 0xfe, 0x7f, 0xd8, 0x31, 0x1c, 0xeb, 0xaa, + 0x26, 0x66, 0x41, 0xee, 0x8b, 0x9f, 0x6b, 0xa8, 0x4d, 0x24, + 0x12, 0x83, 0x58, 0x20, 0x1c, 0xc4, 0xa7, 0xfd, 0xd8, 0xd3, + 0x6b, 0xd1, 0x4b, 0x85, 0xd4, 0xcd, 0x87, 0x1c, 0x8c, 0x69, + 0xfa, 0x11, 0xd1, 0x0f, 0xeb, 0x1b, 0x4b, 0x49, 0x2b, 0xf2, + 0xbc, 0x35, 0xfb, 0x7e, 0x33, 0xb2, 0x13, 0xad, 0x4b, 0xda, + 0xbe, 0x80, 0x2b, 0x22, 0x0b, 0xdf, 0x25, 0xdc, 0x6e, 0xe1, + 0xe7, 0xfb, 0xf5, 0x78, 0x3d, 0x28, 0x8d, 0x48, 0x0b, 0xba, + 0xe7, 0xcb, 0x61, 0x19, 0xed, 0x27, 0x40, 0xe4, 0xb6, 0xe0, + 0x3e, 0xe1, 0x56, 0x5e, 0xe7, 0xc1, 0xc7, 0xe6, 0xf8, 0xf0, + 0x78, 0xb8, 0x94, 0xad, 0x50, 0x35, 0x48, 0x13, 0x65, 0x96, + 0xc7, 0x59, 0xa7, 0x91, 0x90, 0x08, 0x04, 0xda, 0x2b, 0x76, + 0xb9, 0x89, 0xd2, 0xc6, 0x30, 0x0d, 0xa7, 0x32, 0x87, 0xbc, + 0x09, 0xe1, 0x91, 0x45, 0xff, 0x3f, 0x5f, 0x5c, 0xa4, 0x34, + 0x03, 0xc5, 0x87, 0xaa, 0x67, 0x7f, 0x40, 0x3b, 0xfc, 0x1e, + 0x96, 0x03, 0xa8, 0x32, 0x25, 0xaf, 0x9a, 0xf8, 0x67, 0xe4, + 0x47, 0x52, 0xd9, 0xd2, 0x69, 0x81, 0x42, 0x4a, 0x4e, 0xe7, + 0x53, 0x5d, 0xa9, 0x30, 0x47, 0x7c, 0x27, 0x25, 0xb1, 0x2a, + 0x15, 0xe3, 0xfd, 0x91, 0xa7, 0x5b, 0xc9, 0x88, 0xfc, 0xab, + 0x27, 0x17, 0x07, 0x08, 0x28, 0xc3, 0x80, 0x7c, 0x29, 0xd8, + 0x41, 0x8e, 0xbf, 0x7a, 0xcf, 0x63, 0x07, 0x8f, 0x24, 0x60, + 0x23, 0x5d, 0xcf, 0x55, 0x2f, 0xe9, 0x8a, 0x87, 0x08, 0x7d, + 0x0d, 0xd1, 0x24, 0x8b, 0x04, 0x4d, 0xba, 0xb4, 0x5a, 0xca, + 0xfb, 0xa0, 0x6c, 0x52, 0x7e, 0x8f, 0x3e, 0x19, 0x04, 0x13, + 0x64, 0x3a, 0xd2, 0x4c, 0x26, 0xa8, 0x44, 0x7b, 0x85, 0xee, + 0xe4, 0x5a, 0x6b, 0x82, 0x64, 0x78, 0x44, 0x17, 0x4b, 0xa5, + 0xb3, 0x37, 0x90, 0x32, 0x63, 0x3b, 0x92, 0xa8, 0x58, 0x4a, + 0x44, 0xe0, 0xa4, 0xd4, 0x02, 0x7f, 0xde, 0x6c, 0xf9, 0x0e, + 0x94, 0x55, 0x13, 0x33, 0xc1, 0x77, 0xa4, 0xae, 0x84, 0xf9, + 0x9b, 0x96, 0x4b, 0xf3, 0x2d, 0x47, 0x72, 0x80, 0x65, 0xc1, + 0xf2, 0xbf, 0x84, 0x36, 0xe4, 0x8e, 0xf3, 0x6e, 0x37, 0x91, + 0x92, 0x9c, 0x9b, 0x3c, 0xff, 0x14, 0xa7, 0x24, 0xe4, 0x5d, + 0xc4, 0xa3, 0x6a, 0x87, 0xa2, 0x0e, 0x46, 0xd5, 0x7d, 0xe9, + 0x89, 0xe6, 0x94, 0xec, 0xc4, 0xc5, 0xa2, 0x5e, 0xe5, 0x91, + 0xa9, 0xc3, 0x9e, 0xfe, 0xce, 0x2e, 0x52, 0x1a, 0xe0, 0x83, + 0xa2, 0x55, 0x82, 0x73, 0x7c, 0x78, 0x3c, 0x5c, 0x4a, 0xb7, + 0x28, 0xfb, 0x24, 0xe8, 0xd3, 0x4b, 0x82, 0xcd, 0xe2, 0x04, + 0x14, 0x80, 0x40, 0x3e, 0xf5, 0x6c, 0xc1, 0x47, 0xbe, 0x3d, + 0x86, 0xd0, 0xe2, 0xa6, 0xc2, 0x29, 0x8d, 0x69, 0xd5, 0xa1, + 0x21, 0x25, 0x27, 0x92, 0xc8, 0xcf, 0xb5, 0x18, 0xc2, 0x3e, + 0x22, 0xea, 0xc4, 0xb3, 0xb8, 0xfa, 0x48, 0x19, 0xd0, 0xfc, + 0x49, 0x54, 0x2c, 0x25, 0x22, 0x70, 0x02, 0xc7, 0x5d, 0x5a, + 0x2d, 0x65, 0x9c, 0x50, 0x36, 0x29, 0x3f, 0xa6, 0x1f, 0xed, + 0x02, 0xe8, 0x62, 0xb0, 0x35, 0xa2, 0x51, 0x07, 0x23, 0x8b, + 0xdf, 0x95, 0xa5, 0x73, 0x4a, 0x76, 0x62, 0x83, 0x42, 0x9d, + 0xac, 0x4b, 0xc4, 0x98, 0xf7, 0xc2, 0x39, 0x40, 0xd3, 0x81, + 0x79, 0xbe, 0x42, 0x1b, 0x61, 0xf5, 0xa7, 0xd5, 0x8b, 0xb1, + 0xf1, 0xf3, 0xf2, 0x49, 0x64, 0x86, 0xbb, 0x0c, 0x61, 0x1f, + 0x41, 0xd8, 0x3e, 0x3c, 0x1e, 0x2e, 0x25, 0xba, 0x14, 0x9c, + 0x12, 0x74, 0x88, 0xc4, 0x41, 0x87, 0x21, 0xaf, 0x56, 0xc4, + 0x62, 0x4c, 0x9a, 0x61, 0xfd, 0x20, 0x88, 0xa1, 0xdd, 0x5f, + 0x21, 0xec, 0x01, 0x82, 0xcf, 0x2d, 0xf7, 0xd3, 0x4e, 0x28, + 0x1b, 0xf5, 0xfe, 0x53, 0xee, 0x97, 0x01, 0x74, 0xe1, 0x41, + 0x86, 0xf7, 0x9a, 0x88, 0x27, 0x14, 0xec, 0x9b, 0x7f, 0xc8, + 0x77, 0xaa, 0xe1, 0x3a, 0xc1, 0x6c, 0x1f, 0x1e, 0x0f, 0x17, + 0xf3, 0x5d, 0x0a, 0x4e, 0x09, 0x3a, 0x44, 0x62, 0xc1, 0xa2, + 0xa1, 0x1b, 0x77, 0xe6, 0x73, 0x75, 0x4c, 0x86, 0xe3, 0xf2, + 0x93, 0xef, 0x11, 0xf9, 0xa1, 0xc9, 0x81, 0x36, 0xee, 0x0f, + 0xe6, 0xea, 0x98, 0xcf, 0x05, 0x27, 0xe5, 0x1d, 0x22, 0x31, + 0x81, 0x51, 0xba, 0x33, 0xff, 0xaf, 0xb6, 0x3a, 0xc1, 0xb8, + 0x65, 0x01, 0x95, 0xbe, 0x64, 0xd5, 0xba, 0x3f, 0x9a, 0x1e, + 0x66, 0x46, 0x23, 0xa5, 0x15, 0xf1, 0x83, 0xd4, 0xe3, 0x4c, + 0x57, 0x1d, 0x9a, 0xa7, 0xfa, 0x69, 0x0e, 0xbe, 0x5f, 0xc7, + 0xaa, 0x2a, 0x6a, 0x68, 0x79, 0x99, 0x02, 0x86, 0xfa, 0xcc, + 0xda, 0x44, 0x97, 0x57, 0xca, 0x58, 0x7e, 0x63, 0x8c, 0xbd, + 0x0f, 0x6b, 0x31, 0x4e, 0xda, 0x54, 0x3a, 0x87, 0xde, 0x8d, + 0xa7, 0x03, 0x17, 0x5f, 0x7b, 0xd3, 0x8e, 0xf0, 0xa8, 0x73, + 0x3a, 0x1a, 0x1a, 0xaa, 0x47, 0x64, 0x32, 0x9c, 0xc3, 0x16, + 0x9d, 0x06, 0xf8, 0x02, 0x9b, 0xbb, 0x1a, 0x82, 0x7a, 0xdd, + 0x2f, 0x9c, 0x4e, 0xfe, 0x7c, 0xcd, 0x74, 0xba, 0x62, 0xd7, + 0xce, 0x20, 0x7a, 0xe9, 0x5a, 0xf0, 0xb6, 0x75, 0xdb, 0x61, + 0xa8, 0x84, 0x92, 0x6f, 0x14, 0x25, 0xfd, 0xe8, 0x5a, 0x71, + 0x79, 0x98, 0xbd, 0xeb, 0x94, 0x48, 0xae, 0xb5, 0x59, 0x66, + 0xa3, 0x22, 0x3f, 0x5a, 0x79, 0x75, 0x59, 0xb5, 0x24, 0x02, + 0x01, 0xd7, 0x7a, 0xfc, 0xbf, 0xb3, 0xd5, 0xd0, 0x0c, 0x92, + 0x59, 0xed, 0x39, 0xc2, 0x4c, 0xfa, 0x7d, 0xb5, 0xc5, 0x27, + 0x56, 0x0f, 0x4f, 0x05, 0x59, 0x09, 0x39, 0x86, 0x19, 0xef, + 0xd5, 0x13, 0xe8, 0x2a, 0x11, 0x6e, 0xb0, 0xda, 0x39, 0xf7, + 0x6a, 0xc1, 0x19, 0x1e, 0xf9, 0x2c, 0x9c, 0xc9, 0x85, 0x71, + 0x78, 0x52, 0x47, 0xb4, 0xb8, 0x6c, 0xf3, 0xfc, 0xf9, 0x50, + 0xd9, 0x01, 0x05, 0x20, 0x10, 0xee, 0xac, 0x1b, 0xa1, 0x61, + 0xce, 0x9e, 0xc0, 0x34, 0xd9, 0xc8, 0xb9, 0x76, 0x6d, 0xd8, + 0x6c, 0x8c, 0x13, 0xc0, 0x48, 0xdd, 0x54, 0x4b, 0x95, 0xaf, + 0xb9, 0xa3, 0x99, 0x5b, 0xf4, 0x31, 0xf9, 0x13, 0xc7, 0x89, + 0xae, 0x08, 0x22, 0xb9, 0xa6, 0x67, 0x99, 0x3b, 0xff, 0xa6, + 0x7b, 0x27, 0xf2, 0xde, 0x1f, 0xa2, 0x1d, 0xcf, 0xf9, 0x45, + 0xd2, 0x08, 0xff, 0xab, 0xdf, 0x8b, 0xe2, 0xce, 0x67, 0x41, + 0xcb, 0xeb, 0xfb, 0x1a, 0x8f, 0xb7, 0xe1, 0xc0, 0xdf, 0x33, + 0xbf, 0xfc, 0x8a, 0x36, 0x1b, 0x23, 0x74, 0x30, 0x12, 0xa6, + 0x15, 0x62, 0xb4, 0x5b, 0xbf, 0x58, 0x9f, 0xd1, 0x13, 0xdf, + 0x8e, 0xbc, 0xa0, 0x79, 0xf4, 0x73, 0x63, 0x90, 0x87, 0x93, + 0x9f, 0xc0, 0x7f, 0x12, 0x5a, 0x05, 0xe3, 0xe7, 0xc9, 0x45, + 0x03, 0x1d, 0xe2, 0x0b, 0x1e, 0xae, 0x7f, 0x8e, 0x5f, 0x3f, + 0xc3, 0xec, 0x76, 0x78, 0x1d, 0x0c, 0xe5, 0xc8, 0x94, 0xf9, + 0x2d, 0x66, 0x5f, 0x16, 0x3f, 0x48, 0xab, 0x14, 0x0a, 0x1a, + 0xa2, 0xd7, 0x0c, 0x74, 0x0e, 0x2c, 0x78, 0xfd, 0x3f, 0x7d, + 0x1f, 0x65, 0x32, 0xfd, 0x9f, 0x85, 0x76, 0x9e, 0xea, 0xa1, + 0x78, 0xde, 0x4b, 0x35, 0x1f, 0xe5, 0x3c, 0x0d, 0x39, 0x63, + 0xd0, 0xac, 0x70, 0xaf, 0x21, 0xa8, 0xcf, 0xd9, 0x89, 0x87, + 0x3c, 0xe1, 0x1c, 0x20, 0xa0, 0x8a, 0x45, 0x33, 0xa4, 0xe6, + 0xc7, 0x7d, 0xb9, 0x2b, 0xba, 0x4f, 0x1c, 0x79, 0x7c, 0x57, + 0xc8, 0x72, 0x39, 0x51, 0x1b, 0x3d, 0x2e, 0xc1, 0x23, 0xfe, + 0xef, 0xd4, 0x7c, 0x12, 0x5c, 0x7a, 0x51, 0x9b, 0xac, 0xce, + 0xcf, 0x74, 0xc8, 0x14, 0x55, 0x0c, 0xdc, 0x1c, 0x5c, 0x8a, + 0xbc, 0xb9, 0x18, 0x41, 0xc1, 0x95, 0xa6, 0x48, 0x3f, 0x7a, + 0xd4, 0x97, 0x45, 0x21, 0xbc, 0xc4, 0x9c, 0x94, 0x81, 0xa8, + 0x54, 0x0a, 0x72, 0x01, 0xd9, 0xaf, 0xa2, 0x65, 0x76, 0xe9, + 0x9c, 0x5c, 0xfc, 0xe3, 0xe9, 0x50, 0x28, 0x68, 0xcd, 0xda, + 0x30, 0x13, 0x38, 0xb0, 0x23, 0x72, 0xfc, 0x37, 0xdc, 0xce, + 0x70, 0xb9, 0xbd, 0xf7, 0x19, 0x93, 0xd6, 0xc6, 0x4e, 0x42, + 0x10, 0xba, 0xdc, 0xaf, 0x30, 0xda, 0x34, 0x7c, 0x3e, 0x31, + 0xbe, 0x8c, 0x95, 0x5e, 0x4d, 0x8b, 0xcb, 0xac, 0x30, 0xd4, + 0x10, 0xf7, 0xad, 0x95, 0xab, 0xae, 0x6a, 0xc5, 0x73, 0x8b, + 0x3b, 0x79, 0xf8, 0x64, 0x10, 0x4c, 0x70, 0x80, 0xc5, 0x6d, + 0xd7, 0xcc, 0xd5, 0x1e, 0x9a, 0x37, 0xa1, 0xac, 0xad, 0xff, + 0x70, 0x27, 0x50, 0xad, 0x5c, 0x84, 0x42, 0x53, 0x01, 0x57, + 0x7c, 0xe2, 0xd7, 0x5e, 0x9e, 0x37, 0x50, 0xbf, 0xb0, 0x6e, + 0x15, 0x5e, 0x2f, 0x08, 0x68, 0x6b, 0x8b, 0x8c, 0x56, 0xc5, + 0x07, 0x0a, 0xb0, 0xf1, 0x90, 0x43, 0x8c, 0xb7, 0xba, 0x97, + 0xbc, 0x22, 0x6d, 0x59, 0x20, 0x37, 0x34, 0xc2, 0x90, 0x69, + 0xf0, 0x34, 0xe4, 0x4f, 0xc6, 0xf5, 0x03, 0xf9, 0x84, 0xe5, + 0xba, 0xe2, 0x61, 0x59, 0xf0, 0x02, 0xd0, 0x19, 0x7d, 0xa6, + 0x53, 0x6a, 0xd7, 0xb0, 0x62, 0x30, 0xcc, 0x10, 0x52, 0x91, + 0xd0, 0x9a, 0xf3, 0x71, 0x76, 0x38, 0x1c, 0x43, 0xd1, 0x81, + 0xa9, 0x39, 0x7b, 0x17, 0x90, 0x23, 0xf3, 0x9e, 0xd3, 0x5c, + 0xef, 0xd1, 0x89, 0xdc, 0x05, 0xc8, 0x4f, 0xec, 0x0d, 0xe5, + 0xa3, 0xeb, 0xd3, 0x06, 0xb3, 0x2b, 0x87, 0x29, 0xf5, 0xbe, + 0xba, 0x13, 0xa6, 0x50, 0x97, 0x30, 0xf6, 0x70, 0xb3, 0x6d, + 0x93, 0x06, 0x1e, 0xc0, 0x60, 0x21, 0x6e, 0x5a, 0x40, 0x85, + 0xe1, 0xc2, 0xc5, 0xb8, 0x93, 0xf5, 0x73, 0xc5, 0x57, 0x1a, + 0x0d, 0x7a, 0x07, 0x66, 0xb7, 0xeb, 0x60, 0x59, 0x5c, 0x85, + 0x73, 0xbb, 0x53, 0xe8, 0xce, 0xf3, 0x98, 0xe5, 0xd3, 0x2f, + 0x51, 0x3e, 0x16, 0xab, 0x6f, 0x4d, 0x53, 0x23, 0x33, 0x9f, + 0xa6, 0x0b, 0xe4, 0x87, 0x6c, 0xf4, 0xb8, 0x82, 0x8c, 0x7e, + 0x3a, 0xd6, 0x33, 0x48, 0x13, 0xb2, 0x3f, 0xe2, 0x71, 0x18, + 0xb8, 0xbd, 0x5e, 0x57, 0xfa, 0x8c, 0x09, 0x1e, 0x13, 0xd0, + 0x75, 0x4f, 0xb0, 0xf4, 0x7a, 0xd5, 0x60, 0x96, 0xed, 0x90, + 0x21, 0x70, 0x7d, 0x71, 0x75, 0x40, 0x55, 0x62, 0x29, 0x1d, + 0xef, 0x4a, 0xb4, 0xdf, 0x0b, 0x45, 0x57, 0x82, 0x4e, 0xb9, + 0x55, 0xd8, 0x35, 0x15, 0x41, 0xe5, 0x93, 0x28, 0x0b, 0x04, + 0xe2, 0xf9, 0xcd, 0x57, 0x1b, 0x22, 0x35, 0xb3, 0x15, 0x38, + 0xd8, 0x0c, 0x06, 0xb7, 0xdf, 0x4d, 0x04, 0x2c, 0xbb, 0xa5, + 0x28, 0xea, 0x15, 0x2b, 0xf5, 0xfb, 0x91, 0xd6, 0x6b, 0xec, + 0xb6, 0x71, 0xf3, 0x42, 0x3a, 0x3e, 0xb1, 0xd7, 0xf5, 0x65, + 0xd5, 0xd6, 0x08, 0x3f, 0xfe, 0x73, 0x62, 0x38, 0x15, 0x97, + 0x4c, 0xcc, 0x82, 0x1f, 0xd5, 0xfd, 0xb5, 0xa1, 0x60, 0xc7, + 0x82, 0x11, 0xdd, 0xe3, 0xfc, 0x2b, 0xd6, 0x19, 0xd7, 0x84, + 0xb5, 0x96, 0x95, 0x8c, 0xf9, 0x2e, 0x17, 0x8e, 0x09, 0xaa, + 0x1a, 0xfe, 0xa0, 0xeb, 0xe4, 0x4c, 0x95, 0x0e, 0xb6, 0xe4, + 0xf2, 0xb0, 0x58, 0xa7, 0x0f, 0x9b, 0xd1, 0xf7, 0x17, 0xec, + 0x26, 0xfe, 0xb6, 0x0a, 0x96, 0xc9, 0x6b, 0x59, 0xcd, 0x38, + 0xdb, 0xd2, 0x37, 0x22, 0x61, 0x1e, 0x15, 0x36, 0x96, 0x92, + 0xf6, 0xbe, 0x03, 0xa1, 0xb1, 0x5a, 0x64, 0x09, 0xde, 0x9e, + 0xfb, 0xcb, 0x40, 0xad, 0xf6, 0xf9, 0xd6, 0x93, 0x9a, 0x48, + 0x24, 0xc5, 0xb0, 0x40, 0x38, 0x4b, 0x8d, 0x39, 0x73, 0x65, + 0xd6, 0x61, 0x36, 0x50, 0xd3, 0x92, 0x49, 0x9e, 0xd9, 0x7c, + 0xcf, 0x25, 0x0c, 0xa2, 0xea, 0x58, 0x36, 0x2f, 0x16, 0x7d, + 0x4a, 0x7b, 0xdc, 0x01, 0x0d, 0x35, 0x29, 0xf0, 0x7a, 0x50, + 0xd9, 0x90, 0x16, 0xb7, 0x76, 0x0a, 0x22, 0x83, 0xa0, 0x63, + 0xb2, 0xee, 0xc0, 0x4c, 0xe0, 0x85, 0x8c, 0x0b, 0x76, 0xdc, + 0x56, 0x27, 0xbb, 0x6a, 0x35, 0xfc, 0x66, 0xa7, 0x26, 0x99, + 0x96, 0x77, 0xbf, 0xc3, 0x56, 0x44, + }, + { + /* 15 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x84, 0xdd, 0x10, + 0xbd, 0x27, 0x5d, 0xb8, 0x7a, 0x48, 0x6c, 0x72, 0x76, 0xa2, + 0x6e, 0xcf, 0xeb, 0xcb, 0x79, 0x20, 0xb9, 0x4e, 0xba, 0xb3, + 0xf4, 0x90, 0xd8, 0xe4, 0xec, 0x87, 0xdc, 0x5d, 0x7f, 0x4f, + 0xa4, 0x30, 0x04, 0x69, 0xe7, 0x0b, 0x8e, 0xd8, 0xb4, 0x96, + 0x9a, 0x25, 0xb2, 0x92, 0x15, 0x55, 0xf2, 0x40, 0xb1, 0x9c, + 0xb7, 0xa5, 0x2b, 0xe3, 0x73, 0x0b, 0x1b, 0xcd, 0x7b, 0xba, + 0x81, 0xd1, 0x2f, 0x50, 0x0c, 0xbb, 0xea, 0x1d, 0x51, 0xab, + 0x1f, 0x79, 0x6d, 0x6f, 0x15, 0x75, 0xfe, 0x9e, 0x8b, 0x60, + 0x08, 0xd2, 0x0d, 0x16, 0xdf, 0x73, 0xab, 0xef, 0xf7, 0x4a, + 0xa7, 0xe7, 0x6a, 0x1a, 0x56, 0x70, 0xb5, 0xf5, 0x50, 0xae, + 0xa5, 0x3b, 0xc7, 0x9d, 0x81, 0xe8, 0xc9, 0x28, 0x2a, 0xaa, + 0x27, 0x80, 0xa1, 0xfb, 0xad, 0x89, 0x56, 0x05, 0xe6, 0x16, + 0x36, 0x59, 0xf6, 0xb7, 0xbe, 0x2e, 0xfa, 0x90, 0x1c, 0xdc, + 0xf0, 0x31, 0x2c, 0x4d, 0x8a, 0x64, 0x40, 0xfb, 0x98, 0x78, + 0xc1, 0x61, 0x5e, 0xa0, 0x18, 0xb5, 0x17, 0x3a, 0xa2, 0x95, + 0x3e, 0xf2, 0xda, 0xde, 0x2a, 0xea, 0x55, 0xe5, 0x83, 0xb0, + 0xa5, 0x92, 0x4a, 0x82, 0xd8, 0xdd, 0x52, 0x80, 0xac, 0x7c, + 0x44, 0x25, 0x3f, 0xff, 0xd5, 0xc0, 0x10, 0x67, 0x1a, 0x2c, + 0x7d, 0xe6, 0x95, 0x1d, 0x2d, 0x94, 0x8d, 0x0d, 0xab, 0x7b, + 0x08, 0xd0, 0xad, 0x40, 0x47, 0x94, 0x07, 0xae, 0xf9, 0x6f, + 0x5b, 0x36, 0xe3, 0xc2, 0xd4, 0x34, 0xac, 0xe0, 0xa9, 0x29, + 0xa0, 0x9f, 0x89, 0x76, 0x4d, 0xf9, 0xc1, 0x13, 0x51, 0x50, + 0x40, 0xb0, 0x71, 0xf0, 0x14, 0x0e, 0xfd, 0x27, 0xf3, 0x3e, + 0x21, 0x8b, 0xb7, 0xb1, 0x3f, 0x9f, 0x54, 0x97, 0x4e, 0xc3, + 0x81, 0x35, 0x99, 0xd1, 0xac, 0x0a, 0x0f, 0x2c, 0x6c, 0xb2, + 0x2f, 0xad, 0xc0, 0x13, 0x93, 0xd3, 0x3c, 0x12, 0xc4, 0x69, + 0xd6, 0x42, 0x63, 0x5e, 0x1a, 0x10, 0x41, 0x62, 0xbf, 0x5c, + 0x37, 0xe3, 0x38, 0x7b, 0x23, 0x62, 0x58, 0x9a, 0xd7, 0xc8, + 0x80, 0x35, 0xf3, 0xf0, 0x2b, 0xd8, 0xea, 0xf3, 0x85, 0x5c, + 0x7e, 0xda, 0x22, 0xd2, 0xbb, 0xba, 0xf6, 0x97, 0x9d, 0x3f, + 0x41, 0xc2, 0xbc, 0x83, 0x30, 0xa9, 0x2e, 0x74, 0x87, 0xe9, + 0x7c, 0x27, 0x77, 0x7f, 0x54, 0x17, 0xd5, 0x46, 0x61, 0x93, + 0x8d, 0x8e, 0x73, 0xcc, 0xfd, 0xa1, 0x10, 0x55, 0x01, 0xdd, + 0x3a, 0xd8, 0xaa, 0x09, 0xc5, 0xa3, 0x89, 0xe7, 0x94, 0xc7, + 0x73, 0x79, 0xa4, 0xc3, 0x9b, 0xf8, 0x88, 0x4a, 0x3e, 0x8d, + 0x18, 0xb3, 0x34, 0xc0, 0xc9, 0x7f, 0x09, 0x31, 0xc8, 0xb1, + 0xed, 0x5a, 0xe6, 0x85, 0x7e, 0x3d, 0x69, 0x43, 0x20, 0xce, + 0x34, 0x58, 0xfa, 0x0f, 0xe9, 0x3a, 0x5a, 0xeb, 0xd9, 0x1a, + 0xea, 0xb9, 0xb4, 0x53, 0x9d, 0xe9, 0x69, 0xe0, 0x80, 0x47, + 0x85, 0x48, 0x2c, 0x49, 0xb7, 0xd5, 0x95, 0xf6, 0x10, 0x63, + 0x99, 0x80, 0x8e, 0xeb, 0x0e, 0x9f, 0x31, 0xde, 0xb6, 0x6c, + 0x05, 0x47, 0x01, 0x72, 0xcd, 0x73, 0x24, 0xa7, 0xd3, 0x53, + 0x74, 0xd7, 0x5d, 0xac, 0xc0, 0xce, 0x6b, 0x88, 0x6b, 0x68, + 0x9b, 0x03, 0x91, 0x52, 0x83, 0xfd, 0xd1, 0xec, 0x9a, 0x31, + 0x41, 0x26, 0xa2, 0xa0, 0xff, 0xec, 0x46, 0x13, 0x2c, 0x75, + 0xde, 0x45, 0xab, 0xa4, 0xf6, 0x43, 0x37, 0x84, 0xcc, 0x6f, + 0x80, 0xa3, 0xe2, 0x23, 0x28, 0x1c, 0x39, 0x4e, 0x25, 0x7c, + 0x42, 0xd5, 0xad, 0xa1, 0x7e, 0xfd, 0x14, 0x27, 0x3f, 0x33, + 0x95, 0x3b, 0x64, 0xf6, 0x5f, 0x34, 0x2e, 0xa7, 0xdb, 0x03, + 0x10, 0x32, 0xa8, 0xed, 0x9c, 0x45, 0xc1, 0x6a, 0xf1, 0x61, + 0x9b, 0x14, 0x1e, 0x58, 0xd8, 0xa7, 0x5e, 0x99, 0x3c, 0x69, + 0x41, 0x55, 0x7c, 0x4d, 0xac, 0xd9, 0xe1, 0x5c, 0x72, 0x2a, + 0xae, 0x05, 0x30, 0x56, 0x43, 0x26, 0xe5, 0x65, 0x78, 0x24, + 0x4b, 0xd2, 0x6f, 0x84, 0xc6, 0xbc, 0x34, 0x20, 0x82, 0xc4, + 0xd7, 0xa2, 0x38, 0x75, 0xc5, 0x03, 0x16, 0x6a, 0x15, 0xcc, + 0xaa, 0xce, 0x42, 0x82, 0xec, 0x0b, 0xbd, 0xb8, 0x6e, 0x05, + 0x70, 0xf6, 0x46, 0xc4, 0xb0, 0xf7, 0x6d, 0x53, 0xc3, 0x6a, + 0x25, 0x23, 0x29, 0x3c, 0xb3, 0x15, 0xcd, 0xd1, 0x1b, 0x7c, + 0xca, 0xbf, 0x01, 0x21, 0xb5, 0xc8, 0x4b, 0xec, 0x56, 0x73, + 0x17, 0x25, 0xc9, 0xb8, 0xfc, 0x77, 0x44, 0x67, 0xb5, 0xb7, + 0x2f, 0xed, 0xf9, 0x7e, 0xc2, 0xf7, 0xca, 0x35, 0x74, 0x9f, + 0xa1, 0xcf, 0x3e, 0x2f, 0xd9, 0xc5, 0x59, 0x4f, 0x97, 0xb1, + 0x82, 0x47, 0xbb, 0xc5, 0x60, 0x91, 0x5c, 0xe8, 0xcd, 0x11, + 0xf8, 0x4e, 0xee, 0xfe, 0xa8, 0x2e, 0x16, 0xc3, 0x66, 0xd5, + 0xdd, 0xb6, 0x01, 0x50, 0xb7, 0x59, 0x94, 0x3c, 0x98, 0x5c, + 0xc6, 0xe1, 0x69, 0x8c, 0xc2, 0xe5, 0xd9, 0xdf, 0xe6, 0x5b, + 0x39, 0x81, 0x20, 0xaa, 0x02, 0x79, 0x74, 0x73, 0xfd, 0x08, + 0x1f, 0xf5, 0x64, 0xf8, 0xbb, 0xe3, 0x43, 0xc9, 0x4c, 0xd8, + 0x74, 0xdb, 0x1a, 0xbc, 0x97, 0x12, 0x49, 0x85, 0xd1, 0x0d, + 0xeb, 0x4d, 0xe6, 0xf2, 0x8b, 0x45, 0xf5, 0x33, 0xd3, 0x94, + 0x03, 0x96, 0x94, 0x95, 0x6c, 0x2a, 0xb6, 0xf5, 0x9c, 0xba, + 0xe7, 0x37, 0x83, 0x91, 0xbd, 0x5b, 0x7c, 0xd9, 0x30, 0xa5, + 0x68, 0x43, 0x51, 0xfe, 0x12, 0x62, 0x53, 0xa1, 0x19, 0xb4, + 0x0f, 0xc9, 0xe8, 0x5d, 0xed, 0xb5, 0xd5, 0x64, 0x0c, 0x46, + 0x68, 0x2a, 0x3f, 0xd3, 0x6f, 0x16, 0x61, 0x06, 0xfc, 0x7a, + 0xd2, 0x86, 0x40, 0x5f, 0x68, 0xb0, 0x37, 0x1e, 0x11, 0x74, + 0xb4, 0x15, 0x71, 0x34, 0x68, 0xfe, 0x0f, 0x96, 0xfd, 0x78, + 0x35, 0x08, 0x4d, 0x56, 0x7d, 0x06, 0xc2, 0xb7, 0x1f, 0xfb, + 0x17, 0xb1, 0xab, 0xa6, 0xf9, 0x11, 0xd2, 0x03, 0xc3, 0x8e, + 0xc9, 0x90, 0x58, 0x92, 0xad, 0x69, 0x83, 0x35, 0x76, 0xb6, + 0x44, 0x36, 0x8f, 0xbb, 0xb9, 0xc6, 0xa5, 0xe2, 0x2e, 0x30, + 0xc3, 0xa6, 0xe9, 0x2f, 0x20, 0xc6, 0xf1, 0xc3, 0xdf, 0x15, + 0x1c, 0xfd, 0x62, 0x7f, 0xaf, 0xd8, 0x0a, 0x8e, 0x7d, 0xab, + 0xfd, 0xd6, 0x4c, 0xe4, 0x82, 0xad, 0x66, 0xb5, 0x0e, 0x0d, + 0xd9, 0x7a, 0x64, 0x41, 0x02, 0xe4, 0x59, 0xe6, 0x48, 0x8d, + 0x65, 0xa6, 0xe8, 0x6d, 0xba, 0x9b, 0x43, 0x5f, 0xd6, 0xd3, + 0x96, 0x60, 0x84, 0xf6, 0xf5, 0xaa, 0x38, 0x1e, 0x92, 0x25, + 0xd6, 0xe9, 0x35, 0xfd, 0xb8, 0x1c, 0xd6, 0xd0, 0xf5, 0x06, + 0xe1, 0xa4, 0xc5, 0x39, 0x61, 0x1b, 0xf7, 0x62, 0x82, 0x4c, + 0x87, 0x83, 0x42, 0x54, 0x28, 0x16, 0x5c, 0x83, 0x98, 0x81, + 0x1b, 0x53, 0x9b, 0x10, 0xf4, 0xee, 0xe9, 0x4c, 0x3d, 0x1b, + 0x8c, 0x26, 0x58, 0xea, 0x7f, 0x8a, 0x95, 0x8b, 0x2f, 0x86, + 0x6e, 0xcb, 0x5b, 0xde, 0xa9, 0x9f, 0x51, 0x36, 0xe5, 0xcd, + 0x22, 0x32, 0xef, 0xc3, 0x43, 0xf4, 0x18, 0x69, 0x35, 0x11, + 0xc3, 0x85, 0x07, 0x46, 0x50, 0x38, 0x72, 0x9c, 0x4a, 0xf8, + 0x84, 0x69, 0x99, 0x81, 0xfc, 0x39, 0x57, 0x01, 0xda, 0x56, + 0xed, 0x1f, 0x2f, 0x24, 0x30, 0xb0, 0xe8, 0x1b, 0xef, 0x23, + 0x92, 0xf6, 0x28, 0x4e, 0x7e, 0x66, 0xe9, 0x76, 0xc8, 0x2f, + 0xbe, 0x68, 0x5c, 0x8d, 0x75, 0x06, 0x20, 0x64, 0xbc, 0xca, + 0xa3, 0x76, 0x54, 0x51, 0x95, 0x97, 0xc4, 0x20, 0x30, 0xff, + 0x03, 0xa4, 0x4e, 0xab, 0x93, 0x19, 0xfb, 0x8a, 0x41, 0xd4, + 0x21, 0xc2, 0xf5, 0x28, 0x3c, 0xb0, 0x73, 0x8d, 0xbc, 0xf1, + 0x07, 0x9d, 0x26, 0x9a, 0xfc, 0xf3, 0x7c, 0x7a, 0x8f, 0x60, + 0x50, 0xc2, 0x05, 0x2f, 0xd2, 0x3e, 0x78, 0xd2, 0x82, 0xaa, + 0xf8, 0x9a, 0x9b, 0x71, 0x01, 0xb8, 0xe4, 0x54, 0x9f, 0x0a, + 0x60, 0xac, 0xec, 0x56, 0x5f, 0xba, 0x45, 0xbd, 0xc6, 0xc9, + 0x7b, 0xf0, 0x88, 0x26, 0xe9, 0xa8, 0x0e, 0x63, 0x86, 0x4c, + 0x09, 0xca, 0xf0, 0x48, 0x96, 0x67, 0xde, 0xcb, 0x4f, 0xbb, + 0x68, 0x40, 0xc7, 0x4b, 0x12, 0xc8, 0xd4, 0xda, 0x4d, 0x6f, + 0xcb, 0xdf, 0xa4, 0x83, 0x23, 0xc9, 0x1e, 0xe2, 0xa9, 0x84, + 0x6d, 0x87, 0x70, 0xea, 0x49, 0x06, 0x2c, 0xd4, 0x2a, 0x5b, + 0x97, 0x5f, 0x84, 0xc7, 0x1b, 0x16, 0xf9, 0x03, 0xad, 0xfa, + 0xf4, 0x21, 0x71, 0x6c, 0x50, 0x13, 0xfb, 0x2d, 0xf2, 0x65, + 0x75, 0xd9, 0xb9, 0xb3, 0xdc, 0x0a, 0xe0, 0x2f, 0x8c, 0x4b, + 0xa3, 0x2d, 0xda, 0xa6, 0x45, 0xd4, 0x4a, 0x46, 0x2d, 0x37, + 0x01, 0x1a, 0x5d, 0x08, 0xd1, 0xf3, 0xd9, 0x65, 0xb6, 0xd4, + 0x33, 0x76, 0x24, 0x89, 0x52, 0x78, 0xa5, 0x2a, 0x59, 0x61, + 0x36, 0xf8, 0x57, 0xbd, 0x02, 0x42, 0xa9, 0x53, 0x96, 0x1b, + 0xc6, 0xfc, 0x78, 0x3a, 0xe4, 0x46, 0x6b, 0x40, 0x2d, 0xf5, + 0x6e, 0x30, 0xdf, 0xf1, 0xf8, 0xd4, 0xac, 0xe6, 0x2e, 0x4a, + 0x51, 0xb3, 0x3b, 0xee, 0x88, 0xce, 0xa9, 0xad, 0x5e, 0x19, + 0x31, 0xfc, 0x38, 0x62, 0xf3, 0x5a, 0xec, 0x94, 0x66, 0x56, + 0xf2, 0x86, 0xc5, 0xdf, 0x28, 0xbb, 0x5f, 0x33, 0x47, 0x2d, + 0x57, 0x6a, 0xe8, 0xfd, 0x81, 0x5d, 0x7c, 0x5e, 0x71, 0x49, + 0xb2, 0x9e, 0xed, 0xa1, 0xd3, 0xa9, 0x8a, 0x7a, 0x55, 0xda, + 0xdc, 0xe5, 0x06, 0x16, 0x1d, 0x3b, 0xc4, 0x3c, 0x83, 0x6e, + 0xc7, 0x8e, 0xb5, 0x49, 0xc0, 0xe1, 0xb8, 0x13, 0x59, 0x22, + 0x33, 0x9c, 0x1f, 0x3f, 0x93, 0x5c, 0x53, 0x0a, 0x68, 0x59, + 0x7d, 0xc6, 0xe5, 0xab, 0x23, 0x6a, 0x5f, 0xee, 0x69, 0x9d, + 0xfd, 0x93, 0x2c, 0x45, 0xcc, 0x69, 0x79, 0xaf, 0x02, 0xa0, + 0xad, 0xb2, 0xeb, 0x78, 0xf3, 0xb8, 0x4f, 0x01, 0xb8, 0xc1, + 0x11, 0x79, 0xc4, 0x88, 0x5f, 0x18, 0xd7, 0xfa, 0x87, 0x0a, + 0x85, 0x1a, 0x21, 0xce, 0xd2, 0xdb, 0x47, 0x09, 0x71, 0x7d, + 0x0f, 0xb6, 0x72, 0xc1, 0x40, 0x97, 0x04, 0xf2, 0xe8, 0xe6, + 0x46, 0x5f, 0x9a, 0x19, 0xcc, 0x5a, 0x52, 0x0e, 0x08, 0x89, + 0x2c, 0xe5, 0x72, 0x50, 0x86, 0x29, 0x39, 0x10, 0x3e, 0x29, + 0xc8, 0x33, 0xb5, 0x05, 0x86, 0x51, 0x98, 0x73, 0xe8, 0x75, + 0x34, 0xbb, 0xad, 0x94, 0xe3, 0x39, 0x75, 0x14, 0xe8, 0xbd, + 0xfc, 0x19, 0xf4, 0x01, 0x9e, 0xd7, 0x5a, 0x74, 0xed, 0x24, + 0x92, 0xc9, 0x61, 0x1a, 0x15, 0x9a, 0x0f, 0x27, 0xd5, 0x8a, + 0x29, 0x66, 0x65, 0xeb, 0x79, 0xa0, 0x4f, 0xd9, 0xdc, 0x3d, + 0x48, 0x22, 0x75, 0x6f, 0xb9, 0xf8, 0x5f, 0xc4, 0x0b, 0x24, + 0x06, 0xef, 0xeb, 0xe9, 0xd8, 0x54, 0xaf, 0x29, 0xfb, 0xb7, + 0x0d, 0x6e, 0xc5, 0xe1, 0xb9, 0xb6, 0x92, 0x6b, 0x36, 0xf9, + 0x65, 0x73, 0xf2, 0x91, 0x81, 0xff, 0x61, 0x1c, 0xb3, 0x43, + 0xd7, 0x79, 0xf8, 0x71, 0x60, 0x89, 0xd0, 0x86, 0xa2, 0x3f, + 0x24, 0xc4, 0xa6, 0x81, 0x32, 0xab, 0x1e, 0x51, 0x6c, 0xf5, + 0xbd, 0x99, 0x6d, 0xa1, 0xff, 0x87, 0x5e, 0x8c, 0xca, 0xf3, + 0x44, 0x09, 0x70, 0x9e, 0x13, 0xba, 0x19, 0xa9, 0x69, 0xc8, + 0x18, 0x8c, 0xd0, 0x54, 0x7e, 0x65, 0xde, 0x2c, 0xc2, 0x0c, + 0x87, 0x3e, 0xc4, 0xb9, 0xd4, 0xef, 0x45, 0x34, 0xaa, 0x1c, + 0x12, 0x17, 0xa8, 0x8e, 0xac, 0xc3, 0x3b, 0xf4, 0x67, 0xcf, + 0x80, 0xbe, 0xd0, 0xa3, 0x6e, 0x3c, 0x22, 0xe8, 0xab, 0x2a, + 0xe2, 0x68, 0xaf, 0x70, 0xba, 0xdf, 0x3d, 0x99, 0x8d, 0x1b, + 0x14, 0x74, 0x4e, 0x9a, 0xdd, 0x88, 0x8c, 0xa7, 0xd0, 0x3f, + 0x1e, 0xef, 0x39, 0xf0, 0x6a, 0x10, 0x9a, 0xac, 0xfa, 0x0c, + 0x47, 0xad, 0x3e, 0x35, 0x44, 0xbb, 0xc3, 0xff, 0x84, 0xd7, + 0x37, 0xa8, 0xe0, 0xe4, 0x96, 0x7e, 0x31, 0x0f, 0x50, 0xfa, + 0x2e, 0xa1, 0x95, 0x8f, 0x31, 0x22, 0x67, 0x06, 0x45, 0xdf, + 0x51, 0xe3, 0xb0, 0xe7, 0x99, 0xd2, 0xba, 0x25, 0x48, 0x9f, + 0x8c, 0x05, 0x3a, 0xbe, 0x3f, 0x97, 0x3d, 0x91, 0xc6, 0x45, + 0xf7, 0x1d, 0xc5, 0x6a, 0xec, 0xaf, 0x88, 0x6c, 0xdd, 0xb5, + 0xb1, 0x4f, 0x89, 0x07, 0x5c, 0x60, 0x45, 0x8f, 0x51, 0xee, + 0x31, 0xbf, 0x35, 0x4b, 0x80, 0x0d, 0xcb, 0x07, 0xe5, 0x75, + 0x2a, 0xc2, 0x2b, 0x40, 0x11, 0x5e, 0x40, 0x4f, 0x21, 0x45, + 0x7d, 0x2a, 0x38, 0x39, 0xc4, 0xfe, 0x9d, 0x73, 0x14, 0xdf, + 0x85, 0xda, 0x9d, 0x5f, 0x9c, 0x62, 0x20, 0x92, 0x42, 0x71, + 0xa8, 0x8c, 0xeb, 0xd1, 0x7a, 0x10, 0xfa, 0x95, 0x39, 0x6f, + 0x98, 0x0b, 0xc7, 0x99, 0xcc, 0xa9, 0x1c, 0x1a, 0x71, 0xf4, + 0xc8, 0x82, 0x6e, 0x11, 0xe4, 0x7f, 0x25, 0x2c, 0x9a, 0x21, + 0xb6, 0xe1, 0x70, 0x68, 0x07, 0x56, 0xa6, 0x4d, 0x04, 0x0b, + 0xb2, 0x0f, 0x90, 0xd9, 0xca, 0x8f, 0x13, 0xda, 0xb7, 0xf5, + 0x86, 0xbe, 0x6f, 0x65, 0x90, 0x8f, 0x6f, 0x1f, 0x2d, 0xfe, + 0x97, 0x37, 0x69, 0x92, 0xdb, 0x87, 0xf0, 0x1c, 0x01, 0xaa, + 0xef, 0xc0, 0xcb, 0x2f, 0x29, 0x97, 0x70, 0x3c, 0xe7, 0x4a, + 0x6f, 0x11, 0x6a, 0x39, 0xb3, 0x38, 0x7b, 0x44, 0x16, 0x3f, + 0x94, 0xb0, 0x2d, 0x84, 0x9d, 0x02, 0x03, 0x63, 0x1c, 0x9b, + 0xdd, 0xf7, 0x6f, 0x63, 0x29, 0x0c, 0x01, 0x8b, 0x49, 0x72, + 0xc2, 0x36, 0x2d, 0xc4, 0xc7, 0x98, 0xcd, 0xc5, 0xfb, 0xe7, + 0xf4, 0x1c, 0xbc, 0xac, 0x14, 0xca, 0xb8, 0x7e, 0x41, 0xb6, + 0xb1, 0x3a, 0xa3, 0x0a, 0x84, 0xa8, 0x50, 0x2c, 0xb8, 0xc5, + 0xf3, 0xc1, 0x36, 0xa6, 0xf5, 0x20, 0x2b, 0x1f, 0x11, 0x98, + 0x10, 0x2c, 0x8d, 0x3c, 0x05, 0xe2, 0xae, 0x79, 0x4c, 0xee, + 0x99, 0x52, 0x5d, 0xbd, 0x7f, 0x57, 0x7a, 0x36, 0xdb, 0x4c, + 0xb0, 0x17, 0xfe, 0xd7, 0xe9, 0xd5, 0x5e, 0xcf, 0xdc, 0x55, + 0xb6, 0x7f, 0xee, 0xb2, 0x06, 0x5c, 0x0d, 0x30, 0xa3, 0x6f, + 0x93, 0x9d, 0x32, 0xbd, 0xaa, 0xf7, 0xd8, 0xb0, 0x91, 0xfd, + 0xa2, 0x6c, 0x09, 0x59, 0x44, 0x64, 0x1d, 0x45, 0x86, 0x2b, + 0x30, 0xd2, 0x6a, 0x22, 0x05, 0x79, 0x7f, 0x7c, 0xb4, 0x7e, + 0x19, 0xdc, 0x67, 0x0d, 0xea, 0x59, 0x46, 0x70, 0x04, 0xed, + 0x45, 0xc9, 0x0e, 0x8c, 0xa0, 0x70, 0xe4, 0xfb, 0x94, 0x33, + 0xcb, 0xd2, 0xf1, 0xc1, 0x3b, 0x72, 0xd1, 0x4d, 0xd3, 0x9c, + 0x1d, 0x57, 0xb9, 0x43, 0xee, 0x7b, 0xa7, 0xa0, 0x87, 0x63, + 0x55, 0xbd, 0xae, 0x02, 0x77, 0xac, 0x19, 0x3e, 0x5e, 0x48, + 0x60, 0xa3, 0x13, 0x36, 0x1d, 0x46, 0xe7, 0x2f, 0x3a, 0x86, + 0xaa, 0xbc, 0xa4, 0x19, 0x03, 0xf0, 0x1a, 0xeb, 0x7f, 0x44, + 0x6b, 0xe4, 0x89, 0xe0, 0x50, 0x9c, 0xfc, 0xcc, 0x11, 0xec, + 0x53, 0x5e, 0xbf, 0xd0, 0xb8, 0xd9, 0xea, 0x0c, 0x40, 0xc8, + 0xc4, 0x18, 0x21, 0xdc, 0xac, 0xcb, 0x0e, 0xe6, 0xc5, 0x98, + 0xd4, 0xab, 0x9c, 0xae, 0x2e, 0x07, 0xbb, 0x57, 0x85, 0xec, + 0xa8, 0xa2, 0xe9, 0xed, 0x4b, 0x40, 0x60, 0x3d, 0x06, 0x8b, + 0x9c, 0x95, 0x2f, 0xd3, 0x58, 0xfc, 0x15, 0x85, 0xb4, 0x55, + 0x31, 0x08, 0x0c, 0x4f, 0x70, 0x29, 0xf2, 0x5a, 0xe5, 0x32, + 0x35, 0xd7, 0x82, 0x6b, 0x42, 0x47, 0x29, 0x50, 0x78, 0xa3, + 0xe6, 0xd9, 0xbb, 0x21, 0x71, 0xb6, 0xe8, 0xc7, 0x3f, 0x4c, + 0x1f, 0xff, 0x53, 0x18, 0x14, 0xd1, 0x90, 0x7b, 0xd5, 0xee, + 0x0e, 0xf9, 0x4c, 0xf7, 0x3b, 0x25, 0xf8, 0xf4, 0xdd, 0xc0, + 0xa0, 0x47, 0x0a, 0x5e, 0x67, 0x7c, 0x9a, 0x7d, 0x91, 0xe7, + 0x86, 0x02, 0xa5, 0x4c, 0xa7, 0x88, 0xcc, 0x35, 0x7c, 0xfc, + 0x09, 0xb3, 0xf0, 0x67, 0xc7, 0x97, 0x33, 0xf7, 0xf5, 0xe2, + 0x02, 0xb3, 0x0b, 0xa8, 0xfd, 0x14, 0xc0, 0x9b, 0x64, 0xe3, + 0x1a, 0x87, 0x8e, 0xd0, 0xa8, 0x5a, 0x78, 0xfb, 0x67, 0xda, + 0x8b, 0xb6, 0xae, 0x54, 0x1b, 0xac, 0xbe, 0xb7, 0x8a, 0xb9, + 0x4f, 0x51, 0xf6, 0x23, 0xd3, 0x4c, 0x11, 0x93, 0x1c, 0xc6, + 0x8f, 0x28, 0x63, 0xa7, 0x37, 0x9e, 0x12, 0xe9, 0x8c, 0x6b, + 0xbf, 0x3e, 0x67, 0x31, 0x72, 0x09, 0xcf, 0x98, 0x12, 0x57, + 0x23, 0x90, 0xef, 0xce, 0x7f, 0x55, 0x9e, 0xb5, 0xd0, 0x80, + 0x4d, 0x96, 0x5b, 0x1c, 0xcf, 0x47, 0x9e, 0xb7, 0xb2, 0x76, + 0x05, 0x1d, 0xf2, 0xc7, 0xa6, 0x22, 0x23, 0x59, 0x24, 0x53, + 0x6b, 0x77, 0x9a, 0xde, 0x55, 0x7d, 0x8b, 0xc5, 0x46, 0x51, + 0x3c, 0x07, 0x91, 0xcb, 0xb0, 0xd7, 0xb6, 0x67, 0x27, 0xf9, + 0x08, 0xc5, 0xf1, 0x8d, 0x2a, 0x23, 0x4a, 0xa5, 0xff, 0x04, + 0xda, 0xcd, 0xe0, 0x17, 0x92, 0x0c, 0x58, 0x6b, 0x54, 0xb6, + 0xed, 0xbe, 0xcb, 0x4d, 0x36, 0x2c, 0x4e, 0x49, 0x3d, 0x07, + 0x2f, 0x2b, 0x05, 0xd3, 0x2e, 0xfe, 0x81, 0xcc, 0xbd, 0xef, + 0x58, 0xe3, 0x31, 0x06, 0x99, 0x37, 0x2b, 0x42, 0xe2, 0xd8, + 0xa0, 0x26, 0x35, 0x5a, 0x27, 0xca, 0xea, 0x71, 0xa5, 0x82, + 0x44, 0x27, 0x96, 0x65, 0xbf, 0x60, 0xda, 0x6e, 0x59, 0x28, + 0x51, 0x68, 0x84, 0xbe, 0xb1, 0xa5, 0x7b, 0x14, 0x03, 0x5e, + 0xdb, 0x96, 0x85, 0x5a, 0x77, 0x8f, 0x8a, 0x6b, 0x94, 0x8c, + 0x25, 0x21, 0xa6, 0x04, 0xbe, 0x79, 0x86, 0x2e, 0xff, 0x12, + 0x1b, 0xfd, 0xfc, 0xc9, 0xfa, 0x43, 0x5a, 0x6e, 0x02, 0x34, + 0xba, 0x10, 0x61, 0x25, 0x71, 0xca, 0xaf, 0x6b, 0x66, 0xec, + 0x48, 0xd1, 0xce, 0xea, 0xdf, 0x24, 0x07, 0x37, 0x3c, 0x9d, + 0x0b, 0x82, 0xc3, 0x19, 0x10, 0x4e, 0x26, 0x1e, 0xa4, 0xf0, + 0x89, 0x54, 0xb2, 0xc2, 0x6c, 0x33, 0xae, 0xb9, 0x04, 0x84, + 0x91, 0xa6, 0xef, 0x36, 0x30, 0x74, 0x54, 0x44, 0x0f, 0xe5, + 0x31, 0x8b, 0xd4, 0xf1, 0x68, 0xf6, 0xe7, 0x04, 0x81, 0xf9, + 0x4f, 0x3b, 0xf0, 0x74, 0x0b, 0x8c, 0xd6, 0x80, 0x5a, 0x29, + 0xdc, 0x60, 0x7d, 0x21, 0x33, 0x6b, 0xdb, 0xbf, 0x2d, 0x64, + 0xb6, 0xab, 0x8b, 0x38, 0x20, 0x61, 0xb0, 0x12, 0x0b, 0x83, + 0x5d, 0xa4, 0x9b, 0x0f, 0x5c, 0x94, 0xa2, 0xa5, 0x76, 0x1f, + 0xd3, 0x5f, 0x91, 0x99, 0xbc, 0x32, 0x62, 0x3b, 0x0f, 0x8b, + 0x81, 0x84, 0x1f, 0x82, 0x2b, 0xa7, 0xa9, 0x17, 0xfd, 0xeb, + 0xca, 0x90, 0x0c, 0xf4, 0x70, 0xc4, 0x25, 0xb4, 0x1b, 0xeb, + 0xcc, 0xac, 0x27, 0xcf, 0x49, 0x7d, 0x50, 0xb5, 0xbe, 0x66, + 0xe4, 0x40, 0xf8, 0xa4, 0xa6, 0xcc, 0x91, 0x14, 0x5d, 0x87, + 0x25, 0x0f, 0x26, 0x17, 0xd0, 0xa9, 0x8e, 0x5a, 0xae, 0xd4, + 0x13, 0x39, 0xc1, 0xba, 0xf8, 0xbc, 0xe2, 0x92, 0xa7, 0xff, + 0x19, 0x81, 0x1a, 0xde, 0x73, 0xc4, 0xae, 0x1e, 0x9c, 0x02, + 0x82, 0xf4, 0x8e, 0xe0, 0xd1, 0x5d, 0x77, 0x4e, 0x65, 0x91, + 0xd7, 0xf4, 0xaa, 0x77, 0x7b, 0x09, 0x0c, 0x2c, 0x3a, 0x76, + 0x4b, 0x78, 0xc5, 0xdc, 0xf1, 0x15, 0x0a, 0xe4, 0x17, 0x50, + 0x26, 0xb1, 0x76, 0x64, 0x56, 0x04, 0x3d, 0xda, 0xab, 0x13, + 0x4d, 0xdf, 0xa9, 0x92, 0x43, 0x01, 0xb3, 0x26, 0xb2, 0x44, + 0x66, 0xfb, 0x3e, 0x7e, 0xe5, 0xb8, 0xd9, 0x5b, 0x74, 0x82, + 0xfe, 0x26, 0xee, 0x9e, 0xc8, 0x0c, 0x0a, 0x89, 0x48, 0xdc, + 0x8b, 0x77, 0xa6, 0x14, 0xd0, 0xb2, 0xfa, 0x4f, 0x09, 0x95, + 0x46, 0xd4, 0xbe, 0x1f, 0xd2, 0xf9, 0x39, 0xe5, 0x32, 0x90, + 0x0d, 0xa2, 0x47, 0x68, 0x54, 0x2d, 0x3c, 0x9c, 0xd2, 0x6d, + 0xa4, 0x5b, 0x57, 0x2a, 0x58, 0x8a, 0x5b, 0xd2, 0xf2, 0x9d, + 0x04, 0x83, 0x99, 0xa7, 0x15, 0xf0, 0x25, 0xb3, 0x9e, 0x02, + 0xcc, 0x0e, 0x86, 0xc2, 0x4f, 0xba, 0x59, 0x3b, 0xe3, 0xef, + 0x79, 0x82, 0x53, 0x11, 0xf0, 0xcd, 0xb3, 0x41, 0x22, 0xf2, + 0x4b, 0xd3, 0xbe, 0x30, 0x6d, 0x37, 0xcd, 0x14, 0xc9, 0x34, + 0x42, 0x5f, 0x27, 0xc5, 0xff, 0xe2, 0xf6, 0xf4, 0xe3, 0x88, + 0x17, 0x7f, 0xa1, 0x66, 0xbf, 0x96, 0x2c, 0x90, 0x67, 0x75, + 0x8e, 0x12, 0xe2, 0xfa, 0x1e, 0xaf, 0xe4, 0x41, 0x80, 0xed, + 0x08, 0x27, 0x13, 0x0f, 0xf3, 0xf1, 0x53, 0x02, 0x5f, 0xdd, + 0x43, 0x17, 0x9e, 0x09, 0xec, 0x9f, 0x7e, 0x85, 0x7d, 0xc0, + 0x8c, 0xbe, 0xf7, 0x32, 0x5b, 0xb4, 0xa4, 0x1c, 0x10, 0xd1, + 0x58, 0x09, 0xe4, 0xa0, 0xcf, 0x52, 0x18, 0x3a, 0x2a, 0x22, + 0xe6, 0x93, 0xf9, 0xa4, 0x6a, 0x99, 0x34, 0x7b, 0x92, 0x02, + 0xa1, 0x9d, 0x72, 0x20, 0x7c, 0x52, 0x53, 0x66, 0xa9, 0x0a, + 0xcf, 0xa2, 0xf3, 0xe6, 0x13, 0xea, 0x68, 0xb5, 0xe6, 0xa4, + 0xa1, 0x42, 0xee, 0x41, 0xf4, 0xb2, 0xb5, 0xea, 0x9f, 0x94, + 0x65, 0x48, 0x06, 0x7a, 0x99, 0xeb, 0x05, 0x72, 0xea, 0x28, + 0x13, 0xb9, 0x3b, 0x32, 0x2b, 0x02, 0xff, 0x6d, 0xb4, 0xe8, + 0x0d, 0x6f, 0xd8, 0x62, 0x57, 0x0f, 0x4e, 0x01, 0x41, 0x7a, + 0x47, 0x70, 0x89, 0xcf, 0xda, 0x27, 0x19, 0x48, 0xe7, 0x51, + 0xc2, 0x34, 0x2a, 0xf7, 0x1e, 0x4e, 0x69, 0xd7, 0x52, 0xcc, + 0xca, 0x15, 0x8d, 0xcc, 0x3a, 0x41, 0x7f, 0x13, 0x77, 0x4f, + 0x64, 0x06, 0x05, 0xa5, 0x24, 0x6e, 0xa4, 0xda, 0xf2, 0x83, + 0x9e, 0x71, 0x7b, 0x7a, 0x90, 0x44, 0xea, 0xde, 0xb1, 0x33, + 0xbe, 0x4b, 0x16, 0x48, 0x66, 0x07, 0x43, 0x61, 0xc6, 0x5d, + 0xcd, 0xfc, 0x90, 0x96, 0xdd, 0x41, 0xc8, 0xe9, 0x78, 0x87, + 0x0c, 0x1d, 0x15, 0x11, 0x73, 0xa8, 0x9d, 0x52, 0x35, 0xad, + 0x1a, 0xdc, 0x49, 0x01, 0xb1, 0xaf, 0x98, 0x99, 0xc8, 0x01, + 0xce, 0x8f, 0xc0, 0xea, 0x4f, 0xe5, 0x76, 0xae, 0x3f, 0xa3, + 0xdf, 0x60, 0xe7, 0xd6, 0x6c, 0x31, 0xca, 0xe6, 0x27, 0xe1, + 0xc1, 0x3d, 0xc2, 0x38, 0xa5, 0x86, 0x6d, 0xf2, 0x73, 0x52, + 0xb1, 0x21, 0x77, 0xc1, 0x7a, 0x59, 0xbb, 0x75, 0xae, 0x4a, + 0xd3, 0x24, 0x03, 0x3d, 0x33, 0xe2, 0xc0, 0xd1, 0x63, 0xcf, + 0x87, 0x7e, 0x48, 0x4b, 0x8f, 0xc1, 0x64, 0x95, 0x3c, 0xa2, + 0xa7, 0x66, 0x1d, 0xc1, 0xde, 0xe8, 0xda, 0xc6, 0x32, 0x03, + 0xe3, 0xb3, 0x12, 0x37, 0x52, 0x6d, 0xd8, 0x29, 0xb9, 0xf1, + 0xda, 0x81, 0x3d, 0xcd, 0xbc, 0xdb, 0x57, 0x25, 0x88, 0x12, + 0xe0, 0xff, 0x4c, 0xad, 0x64, 0xe1, 0x67, 0xa6, 0x60, 0x75, + 0xc6, 0x93, 0x3b, 0x57, 0xfe, 0xb0, 0x8e, 0x30, 0x26, 0xb7, + 0x32, 0x91, 0xd2, 0x53, 0x30, 0xdb, 0x63, 0xa8, 0xfc, 0xca, + 0x7f, 0x58, 0x47, 0x18, 0xb2, 0x33, 0xef, 0x81, 0x6f, 0x74, + 0x6d, 0x63, 0x19, 0xe0, 0x90, 0xb8, 0x09, 0xfa, 0x29, 0xd7, + 0xcd, 0x7c, 0x4b, 0xb1, 0x6b, 0x1d, 0x8a, 0x68, 0x97, 0x38, + 0x24, 0x2e, 0x93, 0xdf, 0x9b, 0x45, 0x59, 0xf8, 0x96, 0xa1, + 0xd6, 0x3a, 0xd7, 0xd0, 0xed, 0x70, 0x48, 0x5c, 0xe5, 0x7d, + 0xf5, 0x8a, 0x76, 0x2b, 0xce, 0x5d, 0xc3, 0xbf, 0x63, 0x85, + 0xdc, 0x78, 0x44, 0x13, 0x95, 0x54, 0x07, 0xd0, 0xe2, 0xaf, + 0x13, 0x4d, 0x7e, 0x98, 0x3e, 0x3d, 0xa6, 0x30, 0x28, 0x61, + 0xe3, 0xf6, 0x69, 0x1f, 0x9d, 0xe0, 0xb7, 0x7d, 0x7a, 0xf1, + 0xd9, 0x36, 0x28, 0xe8, 0x9c, 0xf7, 0x79, 0xd3, 0xdb, 0x8d, + 0x09, 0x64, 0x6a, 0x6d, 0xc7, 0xd6, 0x84, 0x8e, 0x52, 0xa0, + 0xf0, 0x85, 0x0f, 0x71, 0xb5, 0x42, 0x63, 0x7e, 0x3c, 0x1d, + 0x72, 0x23, 0xd4, 0x20, 0xf7, 0x9b, 0x37, 0x18, 0x8e, 0x99, + 0x7c, 0x6a, 0xf7, 0xfa, 0xe1, 0x0d, 0xcf, 0x04, 0x89, 0x98, + 0x8d, 0xd3, 0x5b, 0x6a, 0xf8, 0x3b, 0x12, 0xa5, 0x88, 0xb5, + 0x45, 0x3d, 0xcb, 0x6d, 0x6e, 0x93, 0x03, 0x0b, 0xef, 0xfc, + 0x62, 0x1e, 0xa0, 0x37, 0x1c, 0x31, 0x98, 0x2d, 0x76, 0x4a, + 0x33, 0x2b, 0x79, 0x43, 0x83, 0x8e, 0x14, 0xbc, 0xce, 0xf8, + 0x5c, 0x81, 0xe9, 0xdd, 0x62, 0x44, 0xce, 0x0c, 0x8a, 0x7d, + 0xa2, 0x05, 0xa3, 0x0d, 0xf1, 0x67, 0xc8, 0x05, 0x34, 0xcd, + 0xdf, 0x63, 0x93, 0xb4, 0xf0, 0x35, 0xce, 0x77, 0xd5, 0xaf, + 0x9f, 0xa8, 0xb7, 0x4a, 0x90, 0xfd, 0xdb, 0x0a, 0x74, 0xbf, + 0x7e, 0xed, 0x7a, 0xe1, 0x4f, 0x8a, 0x2d, 0x3a, 0x23, 0xce, + 0x4d, 0xed, 0x66, 0x2d, 0x29, 0x07, 0x04, 0xa5, 0x16, 0x93, + 0x39, 0x28, 0x43, 0xf5, 0x49, 0xd4, 0x1b, 0x9d, 0xd3, 0xd8, + 0x79, 0xa9, 0xa1, 0x9e, 0xd1, 0x0e, 0xb8, 0xc0, 0x8a, 0xdd, + 0xdd, 0x50, 0xc6, 0x8d, 0x6e, 0xff, 0x24, 0x11, 0xdb, 0xd6, + 0xbd, 0x7c, 0xce, 0x62, 0xe4, 0x12, 0xa2, 0x1f, 0x62, 0xbd, + 0x6a, 0x96, 0xc3, 0x1a, 0x55, 0x0e, 0x09, 0xea, 0x54, 0x47, + 0x56, 0x80, 0x36, 0x9b, 0xbf, 0xad, 0xd7, 0xb1, 0x9e, 0xa2, + 0x2f, 0x46, 0x65, 0x98, 0x22, 0xe5, 0x38, 0x4f, 0x22, 0xbc, + 0x80, 0x9e, 0x42, 0x8a, 0xfa, 0x54, 0x70, 0x72, 0x4b, 0x3f, + 0xf9, 0xe6, 0x28, 0x7d, 0xb6, 0x38, 0x5d, 0x8e, 0xff, 0xad, + 0xa7, 0xec, 0x0a, 0x3a, 0x27, 0x4d, 0x8f, 0x44, 0x46, 0xb2, + 0xc9, 0x77, 0xf9, 0xbe, 0xfb, 0xc4, 0x40, 0xe7, 0x84, 0xe2, + 0x93, 0xdb, 0x15, 0x61, 0xf4, 0x20, 0x5d, 0xf3, 0x24, 0xae, + 0x46, 0xe3, 0x1d, 0x5f, 0xfe, 0xaa, 0xff, 0xa9, 0x63, 0xc3, + 0x9a, 0xef, 0x37, 0xe9, 0x72, 0xde, 0xf3, 0x16, 0x4d, 0xf1, + 0x5b, 0x91, 0x38, 0x34, 0xe2, 0x2b, 0x53, 0xc7, 0xa3, 0x6d, + 0xaf, 0xce, 0x4e, 0x31, 0x10, 0x49, 0x21, 0xd9, 0x54, 0x46, + 0x94, 0x89, 0x3d, 0x08, 0xdc, 0x22, 0x0b, 0xfe, 0x4a, 0x58, + 0xf7, 0x42, 0xaf, 0x01, 0xe0, 0xd0, 0x0e, 0xac, 0x8f, 0x9a, + 0x48, 0xa6, 0xd6, 0xee, 0xf7, 0x7f, 0xaa, 0xfa, 0xd5, 0x49, + 0x8c, 0xa2, 0x78, 0x0e, 0xe1, 0x55, 0x08, 0x16, 0xa7, 0x1e, + 0xe3, 0x71, 0x57, 0xdd, 0x26, 0x77, 0xad, 0x29, 0xcf, 0xbf, + 0xde, 0xca, 0x9c, 0x92, 0x7a, 0x0e, 0x5e, 0x56, 0x0a, 0x65, + 0x5c, 0x3f, 0xc1, 0x5b, 0xb9, 0x1d, 0xb0, 0x05, 0xe3, 0xdd, + 0xde, 0x3e, 0x5a, 0x3f, 0xed, 0x6e, 0xd2, 0xe7, 0x75, 0xcd, + 0x23, 0x38, 0x02, 0x97, 0x77, 0x59, 0x03, 0x2e, 0xe7, 0x18, + 0xb0, 0xd6, 0xa8, 0xaf, 0x19, 0xbf, 0x55, 0x9a, 0x6c, 0x58, + 0x1d, 0x43, 0x55, 0x5e, 0x52, 0xed, 0xe0, 0x78, 0x0d, 0x94, + 0xde, 0x22, 0xd4, 0x72, 0xa5, 0x70, 0x89, 0xc7, 0x88, 0x4e, + 0xef, 0xca, 0xbd, 0xc0, 0x77, 0xdc, 0xb2, 0x50, 0xa2, 0xd0, + 0xcb, 0xbf, 0xf6, 0x88, 0x2c, 0x7e, 0xeb, 0xa3, 0x5a, 0xcb, + 0xf9, 0x04, 0x06, 0xc6, 0x38, 0xf5, 0x79, 0x2d, 0x62, 0x0c, + 0xf1, 0x6e, 0x56, 0x84, 0x07, 0x73, 0x83, 0x4c, 0x6a, 0xb4, + 0x4e, 0x57, 0x17, 0xe2, 0xde, 0xc6, 0x52, 0x18, 0x02, 0xd5, + 0x92, 0xe4, 0x47, 0x6c, 0x5a, 0x4b, 0x4d, 0xf3, 0x59, 0x49, + 0x4a, 0x42, 0x8f, 0x08, 0xbf, 0xf2, 0xcf, 0x5c, 0x3d, 0x24, + 0x36, 0x39, 0x3b, 0x51, 0x37, 0x86, 0x35, 0x0d, 0x2b, 0x38, + 0xbb, 0x9b, 0x28, 0x57, 0xb3, 0xfc, 0x82, 0xaf, 0xa1, 0x74, + 0x85, 0x14, 0xa1, 0x89, 0xf6, 0x28, 0x06, 0xbc, 0x75, 0xef, + 0xc9, 0xb4, 0xee, 0xdd, 0xd7, 0xd6, 0xeb, 0xdb, 0xcb, 0x93, + 0xa0, 0x58, 0xb3, 0x49, 0x25, 0x41, 0x6c, 0x8f, 0x29, 0x40, + 0x56, 0x3e, 0x22, 0xf3, 0x5f, 0x17, 0x7d, 0x48, 0x0e, 0x6e, + 0x78, 0xf9, 0x16, 0xc7, 0x45, 0x32, 0x20, 0x9c, 0x4c, 0x3c, + 0x20, 0x58, 0xd9, 0x78, 0x0a, 0x07, 0x9f, 0xf2, 0x98, 0x1f, + 0xf1, 0xa4, 0xba, 0xb9, 0xfe, 0xae, 0xb4, 0xdc, 0x04, 0x68, + 0xb7, 0x20, 0xc2, 0x4a, 0xe2, 0x57, 0x9d, 0xd6, 0xcc, 0x1b, + 0x90, 0x61, 0xf4, 0x6c, 0x75, 0x98, 0xa3, 0x2e, 0x3f, 0x6d, + 0x11, 0x69, 0xbc, 0x5d, 0x7b, 0xaa, 0xaf, 0xfe, 0x60, 0xe8, + 0xa8, 0x88, 0x1e, 0x09, 0x62, 0xd5, 0x6b, 0x21, 0xd0, 0x2f, + 0x0d, 0x08, 0xc1, 0x31, 0x1f, 0xa7, 0x0c, 0xb8, 0x1a, 0x60, + 0x85, 0xde, 0xe5, 0xf9, 0x64, 0xb9, 0x97, 0x2d, 0x73, 0xa3, + 0x8b, 0x23, 0xd1, 0xa8, 0xa7, 0x47, 0xd8, 0x66, 0x9f, 0xb1, + 0x08, 0xcb, 0xe1, 0x8f, 0x1d, 0x6c, 0xe1, 0x39, 0x87, 0xd8, + 0x12, 0xb2, 0x88, 0xc8, 0x3a, 0x8a, 0xcf, 0x56, 0x60, 0x67, + 0xd4, 0x44, 0x75, 0xbd, 0x5a, 0xc8, 0xaf, 0x95, 0xd5, 0x70, + 0x40, 0xc2, 0xa3, 0x24, 0x16, 0xc5, 0xba, 0x8b, 0x0a, 0xf2, + 0xfe, 0xf8, 0xab, 0xfc, 0x32, 0x7b, 0xce, 0x1a, 0x17, 0xb2, + 0x8c, 0xe0, 0x08, 0x19, 0x9e, 0x76, 0x23, 0xe8, 0x16, 0xdb, + 0x6f, 0xc3, 0xb4, 0x52, 0x7b, 0xc0, 0xfa, 0x42, 0x66, 0xd6, + 0x8a, 0x51, 0x1c, 0xdb, 0x83, 0xe0, 0x0b, 0x35, 0xeb, 0x66, + 0x55, 0x67, 0x21, 0x41, 0x76, 0xe4, 0x1e, 0xd5, 0xc1, 0xcb, + 0x3e, 0xc7, 0x56, 0x8d, 0x91, 0x2e, 0x39, 0x15, 0x57, 0xe3, + 0x18, 0x2b, 0x61, 0x9a, 0x65, 0xfb, 0x3a, 0xae, 0xb1, 0x86, + 0x1f, 0xf6, 0x8d, 0x83, 0xcd, 0xc6, 0xaa, 0xb9, 0xf5, 0x1e, + 0xb8, 0xeb, 0x87, 0x89, 0xec, 0x3e, 0x65, 0xbe, 0xe1, 0xf1, + 0xbb, 0x64, 0xc4, 0x76, 0x9f, 0x04, 0xee, 0x9b, 0x32, 0x7c, + 0xbc, 0x90, 0xc0, 0x85, 0x26, 0x6c, 0x3a, 0x8c, 0x0d, 0x5e, + 0x0b, 0x80, 0x33, 0x8b, 0x8f, 0x5b, 0xe1, 0x28, 0xba, 0xcd, + 0x4a, 0x1e, 0x4c, 0x2e, 0x63, 0x91, 0x74, 0xcf, 0x97, 0xbb, + 0x8b, 0x32, 0x06, 0x23, 0x34, 0x15, 0xfe, 0x88, 0xd6, 0x0b, + 0xd1, 0x03, 0xe0, 0x4b, 0x4a, 0xab, 0x36, 0x15, 0x5b, 0x9b, + 0x4e, 0x5d, 0x92, 0xfa, 0xa0, 0xa9, 0xbf, 0xcc, 0xa0, 0xfb, + 0x3b, 0x5b, 0x22, 0x1b, 0xa6, 0xbc, 0xbd, 0x63, 0xb3, 0x71, + 0x17, 0x18, 0x80, 0x53, 0x34, 0x7f, 0xe6, 0x4b, 0x9f, 0x3c, + 0xfb, 0x04, 0xc7, 0x2b, 0xdf, 0x03, 0x61, 0xba, 0xee, 0x9c, + 0x4b, 0x30, 0x42, 0x7b, 0x9b, 0x55, 0x1c, 0x0f, 0x49, 0xf3, + 0x6b, 0x95, 0xfb, 0x9f, 0x5c, 0x0e, 0xdf, 0xb4, 0x9f, 0x6b, + 0x26, 0x72, 0x41, 0xb7, 0x33, 0xbb, 0x07, 0xe7, 0x8d, 0x3d, + 0x32, 0xc1, 0xb5, 0xae, 0xc9, 0x1b, 0x93, 0x87, 0x11, 0x19, + 0x96, 0x80, 0xc0, 0x7a, 0x0c, 0xd5, 0xfb, 0xe9, 0x21, 0x2a, + 0x14, 0x0b, 0x2e, 0xa0, 0x4c, 0xa1, 0xec, 0xc8, 0xac, 0x08, + 0x7a, 0x77, 0x95, 0x26, 0x5e, 0x65, 0xb0, 0x3b, 0x2a, 0xc9, + 0xab, 0xaa, 0x62, 0x10, 0x18, 0x9e, 0xe0, 0x52, 0x27, 0xb4, + 0xca, 0xe1, 0x6d, 0x2b, 0x97, 0xee, 0xf6, 0x12, 0x18, 0x58, + 0x74, 0xec, 0x96, 0xf0, 0x49, 0x7b, + }, }; static const uint8_t kuz_table_inv_LS[16][256 * 16] = { - { /* 0 */ - 0xa5, 0xcc, 0x0e, 0x86, 0xc2, 0x4f, 0xba, 0x59, 0x3b, 0xe3, 0xef, 0x79, - 0x82, 0x53, 0x11, 0xf0, - 0x2d, 0x03, 0x96, 0x94, 0x95, 0x6c, 0x2a, 0xb6, 0xf5, 0x9c, 0xba, 0xe7, - 0x37, 0x83, 0x91, 0xbd, - 0x32, 0x17, 0xb1, 0xab, 0xa6, 0xf9, 0x11, 0xd2, 0x03, 0xc3, 0x8e, 0xc9, - 0x90, 0x58, 0x92, 0xad, - 0x8f, 0xa5, 0x82, 0x44, 0x27, 0x96, 0x65, 0xbf, 0x60, 0xda, 0x6e, 0x59, - 0x28, 0x51, 0x68, 0x84, - 0x0e, 0xd4, 0x34, 0xac, 0xe0, 0xa9, 0x29, 0xa0, 0x9f, 0x89, 0x76, 0x4d, - 0xf9, 0xc1, 0x13, 0x51, - 0x30, 0xfc, 0x7a, 0xd2, 0x86, 0x40, 0x5f, 0x68, 0xb0, 0x37, 0x1e, 0x11, - 0x74, 0xb4, 0x15, 0x71, - 0x38, 0xd6, 0xd0, 0xf5, 0x06, 0xe1, 0xa4, 0xc5, 0x39, 0x61, 0x1b, 0xf7, - 0x62, 0x82, 0x4c, 0x87, - 0xc0, 0x76, 0x2b, 0xce, 0x5d, 0xc3, 0xbf, 0x63, 0x85, 0xdc, 0x78, 0x44, - 0x13, 0x95, 0x54, 0x07, - 0x54, 0xd2, 0xdb, 0x47, 0x09, 0x71, 0x7d, 0x0f, 0xb6, 0x72, 0xc1, 0x40, - 0x97, 0x04, 0xf2, 0xe8, - 0xe6, 0x20, 0x58, 0xd9, 0x78, 0x0a, 0x07, 0x9f, 0xf2, 0x98, 0x1f, 0xf1, - 0xa4, 0xba, 0xb9, 0xfe, - 0x9e, 0x65, 0x91, 0xd7, 0xf4, 0xaa, 0x77, 0x7b, 0x09, 0x0c, 0x2c, 0x3a, - 0x76, 0x4b, 0x78, 0xc5, - 0x39, 0x42, 0x54, 0x28, 0x16, 0x5c, 0x83, 0x98, 0x81, 0x1b, 0x53, 0x9b, - 0x10, 0xf4, 0xee, 0xe9, - 0x55, 0x46, 0x5f, 0x9a, 0x19, 0xcc, 0x5a, 0x52, 0x0e, 0x08, 0x89, 0x2c, - 0xe5, 0x72, 0x50, 0x86, - 0x7e, 0xbb, 0x57, 0x85, 0xec, 0xa8, 0xa2, 0xe9, 0xed, 0x4b, 0x40, 0x60, - 0x3d, 0x06, 0x8b, 0x9c, - 0x52, 0x2c, 0x45, 0xcc, 0x69, 0x79, 0xaf, 0x02, 0xa0, 0xad, 0xb2, 0xeb, - 0x78, 0xf3, 0xb8, 0x4f, - 0x91, 0x25, 0x21, 0xa6, 0x04, 0xbe, 0x79, 0x86, 0x2e, 0xff, 0x12, 0x1b, - 0xfd, 0xfc, 0xc9, 0xfa, - 0x64, 0x2e, 0xa1, 0x95, 0x8f, 0x31, 0x22, 0x67, 0x06, 0x45, 0xdf, 0x51, - 0xe3, 0xb0, 0xe7, 0x99, - 0x03, 0x7f, 0x4f, 0xa4, 0x30, 0x04, 0x69, 0xe7, 0x0b, 0x8e, 0xd8, 0xb4, - 0x96, 0x9a, 0x25, 0xb2, - 0x57, 0xad, 0x94, 0xe3, 0x39, 0x75, 0x14, 0xe8, 0xbd, 0xfc, 0x19, 0xf4, - 0x01, 0x9e, 0xd7, 0x5a, - 0x5a, 0x06, 0xef, 0xeb, 0xe9, 0xd8, 0x54, 0xaf, 0x29, 0xfb, 0xb7, 0x0d, - 0x6e, 0xc5, 0xe1, 0xb9, - 0x1c, 0x6b, 0x68, 0x9b, 0x03, 0x91, 0x52, 0x83, 0xfd, 0xd1, 0xec, 0x9a, - 0x31, 0x41, 0x26, 0xa2, - 0x60, 0x3b, 0xf4, 0x67, 0xcf, 0x80, 0xbe, 0xd0, 0xa3, 0x6e, 0x3c, 0x22, - 0xe8, 0xab, 0x2a, 0xe2, - 0x07, 0x6a, 0x1a, 0x56, 0x70, 0xb5, 0xf5, 0x50, 0xae, 0xa5, 0x3b, 0xc7, - 0x9d, 0x81, 0xe8, 0xc9, - 0x18, 0x7e, 0x3d, 0x69, 0x43, 0x20, 0xce, 0x34, 0x58, 0xfa, 0x0f, 0xe9, - 0x3a, 0x5a, 0xeb, 0xd9, - 0x21, 0x3c, 0x69, 0x41, 0x55, 0x7c, 0x4d, 0xac, 0xd9, 0xe1, 0x5c, 0x72, - 0x2a, 0xae, 0x05, 0x30, - 0x72, 0x84, 0xa8, 0x50, 0x2c, 0xb8, 0xc5, 0xf3, 0xc1, 0x36, 0xa6, 0xf5, - 0x20, 0x2b, 0x1f, 0x11, - 0xa8, 0x67, 0x75, 0x8e, 0x12, 0xe2, 0xfa, 0x1e, 0xaf, 0xe4, 0x41, 0x80, - 0xed, 0x08, 0x27, 0x13, - 0xd1, 0xb6, 0x38, 0x5d, 0x8e, 0xff, 0xad, 0xa7, 0xec, 0x0a, 0x3a, 0x27, - 0x4d, 0x8f, 0x44, 0x46, - 0x29, 0x16, 0xc3, 0x66, 0xd5, 0xdd, 0xb6, 0x01, 0x50, 0xb7, 0x59, 0x94, - 0x3c, 0x98, 0x5c, 0xc6, - 0xc6, 0x88, 0xb5, 0x45, 0x3d, 0xcb, 0x6d, 0x6e, 0x93, 0x03, 0x0b, 0xef, - 0xfc, 0x62, 0x1e, 0xa0, - 0xa4, 0x58, 0x8a, 0x5b, 0xd2, 0xf2, 0x9d, 0x04, 0x83, 0x99, 0xa7, 0x15, - 0xf0, 0x25, 0xb3, 0x9e, - 0x3f, 0xbc, 0xca, 0xa3, 0x76, 0x54, 0x51, 0x95, 0x97, 0xc4, 0x20, 0x30, - 0xff, 0x03, 0xa4, 0x4e, - 0xe0, 0xde, 0xc6, 0x52, 0x18, 0x02, 0xd5, 0x92, 0xe4, 0x47, 0x6c, 0x5a, - 0x4b, 0x4d, 0xf3, 0x59, - 0x27, 0xc2, 0xf7, 0xca, 0x35, 0x74, 0x9f, 0xa1, 0xcf, 0x3e, 0x2f, 0xd9, - 0xc5, 0x59, 0x4f, 0x97, - 0x8d, 0x4e, 0x49, 0x3d, 0x07, 0x2f, 0x2b, 0x05, 0xd3, 0x2e, 0xfe, 0x81, - 0xcc, 0xbd, 0xef, 0x58, - 0x0c, 0x3f, 0xff, 0xd5, 0xc0, 0x10, 0x67, 0x1a, 0x2c, 0x7d, 0xe6, 0x95, - 0x1d, 0x2d, 0x94, 0x8d, - 0x82, 0x0e, 0xf9, 0x4c, 0xf7, 0x3b, 0x25, 0xf8, 0xf4, 0xdd, 0xc0, 0xa0, - 0x47, 0x0a, 0x5e, 0x67, - 0xea, 0x1f, 0xa7, 0x0c, 0xb8, 0x1a, 0x60, 0x85, 0xde, 0xe5, 0xf9, 0x64, - 0xb9, 0x97, 0x2d, 0x73, - 0xae, 0x99, 0xeb, 0x05, 0x72, 0xea, 0x28, 0x13, 0xb9, 0x3b, 0x32, 0x2b, - 0x02, 0xff, 0x6d, 0xb4, - 0xb4, 0x0c, 0x1d, 0x15, 0x11, 0x73, 0xa8, 0x9d, 0x52, 0x35, 0xad, 0x1a, - 0xdc, 0x49, 0x01, 0xb1, - 0x9a, 0x70, 0xc4, 0x25, 0xb4, 0x1b, 0xeb, 0xcc, 0xac, 0x27, 0xcf, 0x49, - 0x7d, 0x50, 0xb5, 0xbe, - 0x63, 0x44, 0xbb, 0xc3, 0xff, 0x84, 0xd7, 0x37, 0xa8, 0xe0, 0xe4, 0x96, - 0x7e, 0x31, 0x0f, 0x50, - 0x49, 0x2d, 0x37, 0x01, 0x1a, 0x5d, 0x08, 0xd1, 0xf3, 0xd9, 0x65, 0xb6, - 0xd4, 0x33, 0x76, 0x24, - 0xe5, 0x5f, 0x17, 0x7d, 0x48, 0x0e, 0x6e, 0x78, 0xf9, 0x16, 0xc7, 0x45, - 0x32, 0x20, 0x9c, 0x4c, - 0x42, 0x78, 0xd2, 0x82, 0xaa, 0xf8, 0x9a, 0x9b, 0x71, 0x01, 0xb8, 0xe4, - 0x54, 0x9f, 0x0a, 0x60, - 0xe4, 0xcb, 0x93, 0xa0, 0x58, 0xb3, 0x49, 0x25, 0x41, 0x6c, 0x8f, 0x29, - 0x40, 0x56, 0x3e, 0x22, - 0x15, 0xd5, 0x46, 0x61, 0x93, 0x8d, 0x8e, 0x73, 0xcc, 0xfd, 0xa1, 0x10, - 0x55, 0x01, 0xdd, 0x3a, - 0xb7, 0x73, 0x52, 0xb1, 0x21, 0x77, 0xc1, 0x7a, 0x59, 0xbb, 0x75, 0xae, - 0x4a, 0xd3, 0x24, 0x03, - 0xc8, 0x5c, 0x81, 0xe9, 0xdd, 0x62, 0x44, 0xce, 0x0c, 0x8a, 0x7d, 0xa2, - 0x05, 0xa3, 0x0d, 0xf1, - 0x06, 0xfe, 0x9e, 0x8b, 0x60, 0x08, 0xd2, 0x0d, 0x16, 0xdf, 0x73, 0xab, - 0xef, 0xf7, 0x4a, 0xa7, - 0x70, 0x6f, 0x63, 0x29, 0x0c, 0x01, 0x8b, 0x49, 0x72, 0xc2, 0x36, 0x2d, - 0xc4, 0xc7, 0x98, 0xcd, - 0x9d, 0x1a, 0xde, 0x73, 0xc4, 0xae, 0x1e, 0x9c, 0x02, 0x82, 0xf4, 0x8e, - 0xe0, 0xd1, 0x5d, 0x77, - 0x41, 0x07, 0x9d, 0x26, 0x9a, 0xfc, 0xf3, 0x7c, 0x7a, 0x8f, 0x60, 0x50, - 0xc2, 0x05, 0x2f, 0xd2, - 0x75, 0xee, 0xb2, 0x06, 0x5c, 0x0d, 0x30, 0xa3, 0x6f, 0x93, 0x9d, 0x32, - 0xbd, 0xaa, 0xf7, 0xd8, - 0x19, 0xea, 0xb9, 0xb4, 0x53, 0x9d, 0xe9, 0x69, 0xe0, 0x80, 0x47, 0x85, - 0x48, 0x2c, 0x49, 0xb7, - 0xc9, 0xc8, 0x05, 0x34, 0xcd, 0xdf, 0x63, 0x93, 0xb4, 0xf0, 0x35, 0xce, - 0x77, 0xd5, 0xaf, 0x9f, - 0xaa, 0x8c, 0xbe, 0xf7, 0x32, 0x5b, 0xb4, 0xa4, 0x1c, 0x10, 0xd1, 0x58, - 0x09, 0xe4, 0xa0, 0xcf, - 0xfc, 0xb5, 0xae, 0xc9, 0x1b, 0x93, 0x87, 0x11, 0x19, 0x96, 0x80, 0xc0, - 0x7a, 0x0c, 0xd5, 0xfb, - 0x4d, 0x38, 0x62, 0xf3, 0x5a, 0xec, 0x94, 0x66, 0x56, 0xf2, 0x86, 0xc5, - 0xdf, 0x28, 0xbb, 0x5f, - 0xbf, 0x59, 0xf8, 0x96, 0xa1, 0xd6, 0x3a, 0xd7, 0xd0, 0xed, 0x70, 0x48, - 0x5c, 0xe5, 0x7d, 0xf5, - 0x2a, 0x69, 0x8c, 0xc2, 0xe5, 0xd9, 0xdf, 0xe6, 0x5b, 0x39, 0x81, 0x20, - 0xaa, 0x02, 0x79, 0x74, - 0x73, 0x10, 0x2c, 0x8d, 0x3c, 0x05, 0xe2, 0xae, 0x79, 0x4c, 0xee, 0x99, - 0x52, 0x5d, 0xbd, 0x7f, - 0x84, 0xf0, 0x67, 0xc7, 0x97, 0x33, 0xf7, 0xf5, 0xe2, 0x02, 0xb3, 0x0b, - 0xa8, 0xfd, 0x14, 0xc0, - 0xd5, 0xa3, 0x6d, 0xaf, 0xce, 0x4e, 0x31, 0x10, 0x49, 0x21, 0xd9, 0x54, - 0x46, 0x94, 0x89, 0x3d, - 0xc3, 0x09, 0x64, 0x6a, 0x6d, 0xc7, 0xd6, 0x84, 0x8e, 0x52, 0xa0, 0xf0, - 0x85, 0x0f, 0x71, 0xb5, - 0xaf, 0x0d, 0x6f, 0xd8, 0x62, 0x57, 0x0f, 0x4e, 0x01, 0x41, 0x7a, 0x47, - 0x70, 0x89, 0xcf, 0xda, - 0x2b, 0xfd, 0x08, 0x1f, 0xf5, 0x64, 0xf8, 0xbb, 0xe3, 0x43, 0xc9, 0x4c, - 0xd8, 0x74, 0xdb, 0x1a, - 0x86, 0x1b, 0xac, 0xbe, 0xb7, 0x8a, 0xb9, 0x4f, 0x51, 0xf6, 0x23, 0xd3, - 0x4c, 0x11, 0x93, 0x1c, - 0xa7, 0x27, 0xc5, 0xff, 0xe2, 0xf6, 0xf4, 0xe3, 0x88, 0x17, 0x7f, 0xa1, - 0x66, 0xbf, 0x96, 0x2c, - 0xb1, 0x8d, 0xcc, 0x3a, 0x41, 0x7f, 0x13, 0x77, 0x4f, 0x64, 0x06, 0x05, - 0xa5, 0x24, 0x6e, 0xa4, - 0xb2, 0xf2, 0x83, 0x9e, 0x71, 0x7b, 0x7a, 0x90, 0x44, 0xea, 0xde, 0xb1, - 0x33, 0xbe, 0x4b, 0x16, - 0x5b, 0x92, 0x6b, 0x36, 0xf9, 0x65, 0x73, 0xf2, 0x91, 0x81, 0xff, 0x61, - 0x1c, 0xb3, 0x43, 0xd7, - 0x46, 0x6d, 0x87, 0x70, 0xea, 0x49, 0x06, 0x2c, 0xd4, 0x2a, 0x5b, 0x97, - 0x5f, 0x84, 0xc7, 0x1b, - 0xd3, 0x5d, 0xf3, 0x24, 0xae, 0x46, 0xe3, 0x1d, 0x5f, 0xfe, 0xaa, 0xff, - 0xa9, 0x63, 0xc3, 0x9a, - 0x9f, 0xf1, 0x15, 0x0a, 0xe4, 0x17, 0x50, 0x26, 0xb1, 0x76, 0x64, 0x56, - 0x04, 0x3d, 0xda, 0xab, - 0xfd, 0x21, 0x2a, 0x14, 0x0b, 0x2e, 0xa0, 0x4c, 0xa1, 0xec, 0xc8, 0xac, - 0x08, 0x7a, 0x77, 0x95, - 0xd4, 0x37, 0xe9, 0x72, 0xde, 0xf3, 0x16, 0x4d, 0xf1, 0x5b, 0x91, 0x38, - 0x34, 0xe2, 0x2b, 0x53, - 0x0f, 0x40, 0xb0, 0x71, 0xf0, 0x14, 0x0e, 0xfd, 0x27, 0xf3, 0x3e, 0x21, - 0x8b, 0xb7, 0xb1, 0x3f, - 0x9c, 0x8e, 0x5a, 0xae, 0xd4, 0x13, 0x39, 0xc1, 0xba, 0xf8, 0xbc, 0xe2, - 0x92, 0xa7, 0xff, 0x19, - 0x2f, 0xe8, 0x5d, 0xed, 0xb5, 0xd5, 0x64, 0x0c, 0x46, 0x68, 0x2a, 0x3f, - 0xd3, 0x6f, 0x16, 0x61, - 0x9b, 0xe4, 0x40, 0xf8, 0xa4, 0xa6, 0xcc, 0x91, 0x14, 0x5d, 0x87, 0x25, - 0x0f, 0x26, 0x17, 0xd0, - 0x43, 0xec, 0x56, 0x5f, 0xba, 0x45, 0xbd, 0xc6, 0xc9, 0x7b, 0xf0, 0x88, - 0x26, 0xe9, 0xa8, 0x0e, - 0xef, 0x9e, 0x76, 0x23, 0xe8, 0x16, 0xdb, 0x6f, 0xc3, 0xb4, 0x52, 0x7b, - 0xc0, 0xfa, 0x42, 0x66, - 0xd9, 0x9c, 0x92, 0x7a, 0x0e, 0x5e, 0x56, 0x0a, 0x65, 0x5c, 0x3f, 0xc1, - 0x5b, 0xb9, 0x1d, 0xb0, - 0x79, 0xd1, 0x4d, 0xd3, 0x9c, 0x1d, 0x57, 0xb9, 0x43, 0xee, 0x7b, 0xa7, - 0xa0, 0x87, 0x63, 0x55, - 0xb6, 0xe7, 0xd6, 0x6c, 0x31, 0xca, 0xe6, 0x27, 0xe1, 0xc1, 0x3d, 0xc2, - 0x38, 0xa5, 0x86, 0x6d, - 0x53, 0xb8, 0xc1, 0x11, 0x79, 0xc4, 0x88, 0x5f, 0x18, 0xd7, 0xfa, 0x87, - 0x0a, 0x85, 0x1a, 0x21, - 0x7f, 0x2f, 0xd3, 0x58, 0xfc, 0x15, 0x85, 0xb4, 0x55, 0x31, 0x08, 0x0c, - 0x4f, 0x70, 0x29, 0xf2, - 0xc1, 0xe2, 0xaf, 0x13, 0x4d, 0x7e, 0x98, 0x3e, 0x3d, 0xa6, 0x30, 0x28, - 0x61, 0xe3, 0xf6, 0x69, - 0xf0, 0x8a, 0x51, 0x1c, 0xdb, 0x83, 0xe0, 0x0b, 0x35, 0xeb, 0x66, 0x55, - 0x67, 0x21, 0x41, 0x76, - 0x23, 0xd7, 0xa2, 0x38, 0x75, 0xc5, 0x03, 0x16, 0x6a, 0x15, 0xcc, 0xaa, - 0xce, 0x42, 0x82, 0xec, - 0xe7, 0xb4, 0xdc, 0x04, 0x68, 0xb7, 0x20, 0xc2, 0x4a, 0xe2, 0x57, 0x9d, - 0xd6, 0xcc, 0x1b, 0x90, - 0x25, 0x29, 0x3c, 0xb3, 0x15, 0xcd, 0xd1, 0x1b, 0x7c, 0xca, 0xbf, 0x01, - 0x21, 0xb5, 0xc8, 0x4b, - 0x5e, 0x13, 0xba, 0x19, 0xa9, 0x69, 0xc8, 0x18, 0x8c, 0xd0, 0x54, 0x7e, - 0x65, 0xde, 0x2c, 0xc2, - 0xb5, 0x98, 0x99, 0xc8, 0x01, 0xce, 0x8f, 0xc0, 0xea, 0x4f, 0xe5, 0x76, - 0xae, 0x3f, 0xa3, 0xdf, - 0x1e, 0x80, 0xa3, 0xe2, 0x23, 0x28, 0x1c, 0x39, 0x4e, 0x25, 0x7c, 0x42, - 0xd5, 0xad, 0xa1, 0x7e, - 0xa2, 0xa6, 0x14, 0xd0, 0xb2, 0xfa, 0x4f, 0x09, 0x95, 0x46, 0xd4, 0xbe, - 0x1f, 0xd2, 0xf9, 0x39, - 0xdf, 0x62, 0x0c, 0xf1, 0x6e, 0x56, 0x84, 0x07, 0x73, 0x83, 0x4c, 0x6a, - 0xb4, 0x4e, 0x57, 0x17, - 0xa6, 0xb3, 0x41, 0x22, 0xf2, 0x4b, 0xd3, 0xbe, 0x30, 0x6d, 0x37, 0xcd, - 0x14, 0xc9, 0x34, 0x42, - 0xfe, 0x5e, 0x65, 0xb0, 0x3b, 0x2a, 0xc9, 0xab, 0xaa, 0x62, 0x10, 0x18, - 0x9e, 0xe0, 0x52, 0x27, - 0xac, 0x72, 0x20, 0x7c, 0x52, 0x53, 0x66, 0xa9, 0x0a, 0xcf, 0xa2, 0xf3, - 0xe6, 0x13, 0xea, 0x68, - 0x22, 0x43, 0x26, 0xe5, 0x65, 0x78, 0x24, 0x4b, 0xd2, 0x6f, 0x84, 0xc6, - 0xbc, 0x34, 0x20, 0x82, - 0xf9, 0x34, 0x7f, 0xe6, 0x4b, 0x9f, 0x3c, 0xfb, 0x04, 0xc7, 0x2b, 0xdf, - 0x03, 0x61, 0xba, 0xee, - 0xe2, 0x35, 0x0d, 0x2b, 0x38, 0xbb, 0x9b, 0x28, 0x57, 0xb3, 0xfc, 0x82, - 0xaf, 0xa1, 0x74, 0x85, - 0x4a, 0x52, 0x78, 0xa5, 0x2a, 0x59, 0x61, 0x36, 0xf8, 0x57, 0xbd, 0x02, - 0x42, 0xa9, 0x53, 0x96, - 0xbc, 0x26, 0xb7, 0x32, 0x91, 0xd2, 0x53, 0x30, 0xdb, 0x63, 0xa8, 0xfc, - 0xca, 0x7f, 0x58, 0x47, - 0x35, 0x7d, 0xab, 0xfd, 0xd6, 0x4c, 0xe4, 0x82, 0xad, 0x66, 0xb5, 0x0e, - 0x0d, 0xd9, 0x7a, 0x64, - 0xca, 0xb7, 0x4a, 0x90, 0xfd, 0xdb, 0x0a, 0x74, 0xbf, 0x7e, 0xed, 0x7a, - 0xe1, 0x4f, 0x8a, 0x2d, - 0xee, 0x0a, 0xf2, 0xfe, 0xf8, 0xab, 0xfc, 0x32, 0x7b, 0xce, 0x1a, 0x17, - 0xb2, 0x8c, 0xe0, 0x08, - 0x78, 0x45, 0xc9, 0x0e, 0x8c, 0xa0, 0x70, 0xe4, 0xfb, 0x94, 0x33, 0xcb, - 0xd2, 0xf1, 0xc1, 0x3b, - 0x05, 0x81, 0xd1, 0x2f, 0x50, 0x0c, 0xbb, 0xea, 0x1d, 0x51, 0xab, 0x1f, - 0x79, 0x6d, 0x6f, 0x15, - 0x6b, 0x6e, 0x11, 0xe4, 0x7f, 0x25, 0x2c, 0x9a, 0x21, 0xb6, 0xe1, 0x70, - 0x68, 0x07, 0x56, 0xa6, - 0x51, 0x53, 0x0a, 0x68, 0x59, 0x7d, 0xc6, 0xe5, 0xab, 0x23, 0x6a, 0x5f, - 0xee, 0x69, 0x9d, 0xfd, - 0xe1, 0x4a, 0x42, 0x8f, 0x08, 0xbf, 0xf2, 0xcf, 0x5c, 0x3d, 0x24, 0x36, - 0x39, 0x3b, 0x51, 0x37, - 0x59, 0x79, 0xa0, 0x4f, 0xd9, 0xdc, 0x3d, 0x48, 0x22, 0x75, 0x6f, 0xb9, - 0xf8, 0x5f, 0xc4, 0x0b, - 0xa3, 0x32, 0x90, 0x0d, 0xa2, 0x47, 0x68, 0x54, 0x2d, 0x3c, 0x9c, 0xd2, - 0x6d, 0xa4, 0x5b, 0x57, - 0xf2, 0x61, 0x9a, 0x65, 0xfb, 0x3a, 0xae, 0xb1, 0x86, 0x1f, 0xf6, 0x8d, - 0x83, 0xcd, 0xc6, 0xaa, - 0x71, 0xfb, 0xe7, 0xf4, 0x1c, 0xbc, 0xac, 0x14, 0xca, 0xb8, 0x7e, 0x41, - 0xb6, 0xb1, 0x3a, 0xa3, - 0x56, 0x39, 0x10, 0x3e, 0x29, 0xc8, 0x33, 0xb5, 0x05, 0x86, 0x51, 0x98, - 0x73, 0xe8, 0x75, 0x34, - 0x11, 0xc0, 0x13, 0x93, 0xd3, 0x3c, 0x12, 0xc4, 0x69, 0xd6, 0x42, 0x63, - 0x5e, 0x1a, 0x10, 0x41, - 0x6a, 0xfa, 0x95, 0x39, 0x6f, 0x98, 0x0b, 0xc7, 0x99, 0xcc, 0xa9, 0x1c, - 0x1a, 0x71, 0xf4, 0xc8, - 0x89, 0x5b, 0x1c, 0xcf, 0x47, 0x9e, 0xb7, 0xb2, 0x76, 0x05, 0x1d, 0xf2, - 0xc7, 0xa6, 0x22, 0x23, - 0x94, 0xa4, 0xf0, 0x89, 0x54, 0xb2, 0xc2, 0x6c, 0x33, 0xae, 0xb9, 0x04, - 0x84, 0x91, 0xa6, 0xef, - 0x65, 0xba, 0x25, 0x48, 0x9f, 0x8c, 0x05, 0x3a, 0xbe, 0x3f, 0x97, 0x3d, - 0x91, 0xc6, 0x45, 0xf7, - 0x8c, 0xda, 0xcd, 0xe0, 0x17, 0x92, 0x0c, 0x58, 0x6b, 0x54, 0xb6, 0xed, - 0xbe, 0xcb, 0x4d, 0x36, - 0xbb, 0x4c, 0xad, 0x64, 0xe1, 0x67, 0xa6, 0x60, 0x75, 0xc6, 0x93, 0x3b, - 0x57, 0xfe, 0xb0, 0x8e, - 0x77, 0x05, 0x79, 0x7f, 0x7c, 0xb4, 0x7e, 0x19, 0xdc, 0x67, 0x0d, 0xea, - 0x59, 0x46, 0x70, 0x04, - 0x3c, 0xc3, 0x85, 0x07, 0x46, 0x50, 0x38, 0x72, 0x9c, 0x4a, 0xf8, 0x84, - 0x69, 0x99, 0x81, 0xfc, - 0x7b, 0x3a, 0x86, 0xaa, 0xbc, 0xa4, 0x19, 0x03, 0xf0, 0x1a, 0xeb, 0x7f, - 0x44, 0x6b, 0xe4, 0x89, - 0x28, 0x82, 0x47, 0xbb, 0xc5, 0x60, 0x91, 0x5c, 0xe8, 0xcd, 0x11, 0xf8, - 0x4e, 0xee, 0xfe, 0xa8, - 0xab, 0x18, 0x3a, 0x2a, 0x22, 0xe6, 0x93, 0xf9, 0xa4, 0x6a, 0x99, 0x34, - 0x7b, 0x92, 0x02, 0xa1, - 0xd2, 0xc9, 0x77, 0xf9, 0xbe, 0xfb, 0xc4, 0x40, 0xe7, 0x84, 0xe2, 0x93, - 0xdb, 0x15, 0x61, 0xf4, - 0x31, 0x68, 0xfe, 0x0f, 0x96, 0xfd, 0x78, 0x35, 0x08, 0x4d, 0x56, 0x7d, - 0x06, 0xc2, 0xb7, 0x1f, - 0xde, 0xf6, 0x88, 0x2c, 0x7e, 0xeb, 0xa3, 0x5a, 0xcb, 0xf9, 0x04, 0x06, - 0xc6, 0x38, 0xf5, 0x79, - 0xc4, 0x63, 0x7e, 0x3c, 0x1d, 0x72, 0x23, 0xd4, 0x20, 0xf7, 0x9b, 0x37, - 0x18, 0x8e, 0x99, 0x7c, - 0x5f, 0x87, 0x3e, 0xc4, 0xb9, 0xd4, 0xef, 0x45, 0x34, 0xaa, 0x1c, 0x12, - 0x17, 0xa8, 0x8e, 0xac, - 0xcc, 0x49, 0xd4, 0x1b, 0x9d, 0xd3, 0xd8, 0x79, 0xa9, 0xa1, 0x9e, 0xd1, - 0x0e, 0xb8, 0xc0, 0x8a, - 0xcf, 0x36, 0x9b, 0xbf, 0xad, 0xd7, 0xb1, 0x9e, 0xa2, 0x2f, 0x46, 0x65, - 0x98, 0x22, 0xe5, 0x38, - 0x76, 0x91, 0xfd, 0xa2, 0x6c, 0x09, 0x59, 0x44, 0x64, 0x1d, 0x45, 0x86, - 0x2b, 0x30, 0xd2, 0x6a, - 0x2c, 0x97, 0x12, 0x49, 0x85, 0xd1, 0x0d, 0xeb, 0x4d, 0xe6, 0xf2, 0x8b, - 0x45, 0xf5, 0x33, 0xd3, - 0xb8, 0x33, 0xe2, 0xc0, 0xd1, 0x63, 0xcf, 0x87, 0x7e, 0x48, 0x4b, 0x8f, - 0xc1, 0x64, 0x95, 0x3c, - 0xd8, 0x08, 0x16, 0xa7, 0x1e, 0xe3, 0x71, 0x57, 0xdd, 0x26, 0x77, 0xad, - 0x29, 0xcf, 0xbf, 0xde, - 0x2e, 0x7c, 0xd9, 0x30, 0xa5, 0x68, 0x43, 0x51, 0xfe, 0x12, 0x62, 0x53, - 0xa1, 0x19, 0xb4, 0x0f, - 0x36, 0x02, 0xe4, 0x59, 0xe6, 0x48, 0x8d, 0x65, 0xa6, 0xe8, 0x6d, 0xba, - 0x9b, 0x43, 0x5f, 0xd6, - 0xdb, 0x77, 0x59, 0x03, 0x2e, 0xe7, 0x18, 0xb0, 0xd6, 0xa8, 0xaf, 0x19, - 0xbf, 0x55, 0x9a, 0x6c, - 0x69, 0x85, 0xda, 0x9d, 0x5f, 0x9c, 0x62, 0x20, 0x92, 0x42, 0x71, 0xa8, - 0x8c, 0xeb, 0xd1, 0x7a, - 0xb3, 0x66, 0x07, 0x43, 0x61, 0xc6, 0x5d, 0xcd, 0xfc, 0x90, 0x96, 0xdd, - 0x41, 0xc8, 0xe9, 0x78, - 0x14, 0x41, 0xc2, 0xbc, 0x83, 0x30, 0xa9, 0x2e, 0x74, 0x87, 0xe9, 0x7c, - 0x27, 0x77, 0x7f, 0x54, - 0x95, 0x30, 0x74, 0x54, 0x44, 0x0f, 0xe5, 0x31, 0x8b, 0xd4, 0xf1, 0x68, - 0xf6, 0xe7, 0x04, 0x81, - 0xbe, 0xcd, 0x7c, 0x4b, 0xb1, 0x6b, 0x1d, 0x8a, 0x68, 0x97, 0x38, 0x24, - 0x2e, 0x93, 0xdf, 0x9b, - 0x62, 0xd0, 0x3f, 0x1e, 0xef, 0x39, 0xf0, 0x6a, 0x10, 0x9a, 0xac, 0xfa, - 0x0c, 0x47, 0xad, 0x3e, - 0xa1, 0xd9, 0x5b, 0x74, 0x82, 0xfe, 0x26, 0xee, 0x9e, 0xc8, 0x0c, 0x0a, - 0x89, 0x48, 0xdc, 0x8b, - 0x3b, 0xa9, 0x9f, 0x51, 0x36, 0xe5, 0xcd, 0x22, 0x32, 0xef, 0xc3, 0x43, - 0xf4, 0x18, 0x69, 0x35, - 0x16, 0xaa, 0x09, 0xc5, 0xa3, 0x89, 0xe7, 0x94, 0xc7, 0x73, 0x79, 0xa4, - 0xc3, 0x9b, 0xf8, 0x88, - 0x66, 0xc5, 0x6a, 0xec, 0xaf, 0x88, 0x6c, 0xdd, 0xb5, 0xb1, 0x4f, 0x89, - 0x07, 0x5c, 0x60, 0x45, - 0xe9, 0x60, 0xe8, 0xa8, 0x88, 0x1e, 0x09, 0x62, 0xd5, 0x6b, 0x21, 0xd0, - 0x2f, 0x0d, 0x08, 0xc1, - 0x5c, 0xf8, 0x71, 0x60, 0x89, 0xd0, 0x86, 0xa2, 0x3f, 0x24, 0xc4, 0xa6, - 0x81, 0x32, 0xab, 0x1e, - 0x6c, 0x04, 0x0b, 0xb2, 0x0f, 0x90, 0xd9, 0xca, 0x8f, 0x13, 0xda, 0xb7, - 0xf5, 0x86, 0xbe, 0x6f, - 0x6d, 0x90, 0x8f, 0x6f, 0x1f, 0x2d, 0xfe, 0x97, 0x37, 0x69, 0x92, 0xdb, - 0x87, 0xf0, 0x1c, 0x01, - 0xad, 0xe6, 0xa4, 0xa1, 0x42, 0xee, 0x41, 0xf4, 0xb2, 0xb5, 0xea, 0x9f, - 0x94, 0x65, 0x48, 0x06, - 0x37, 0x96, 0x60, 0x84, 0xf6, 0xf5, 0xaa, 0x38, 0x1e, 0x92, 0x25, 0xd6, - 0xe9, 0x35, 0xfd, 0xb8, - 0x61, 0xaf, 0x70, 0xba, 0xdf, 0x3d, 0x99, 0x8d, 0x1b, 0x14, 0x74, 0x4e, - 0x9a, 0xdd, 0x88, 0x8c, - 0x4b, 0xc6, 0xfc, 0x78, 0x3a, 0xe4, 0x46, 0x6b, 0x40, 0x2d, 0xf5, 0x6e, - 0x30, 0xdf, 0xf1, 0xf8, - 0xb9, 0xa7, 0x66, 0x1d, 0xc1, 0xde, 0xe8, 0xda, 0xc6, 0x32, 0x03, 0xe3, - 0xb3, 0x12, 0x37, 0x52, - 0xe3, 0xa1, 0x89, 0xf6, 0x28, 0x06, 0xbc, 0x75, 0xef, 0xc9, 0xb4, 0xee, - 0xdd, 0xd7, 0xd6, 0xeb, - 0xba, 0xd8, 0x29, 0xb9, 0xf1, 0xda, 0x81, 0x3d, 0xcd, 0xbc, 0xdb, 0x57, - 0x25, 0x88, 0x12, 0xe0, - 0xf1, 0x1e, 0xd5, 0xc1, 0xcb, 0x3e, 0xc7, 0x56, 0x8d, 0x91, 0x2e, 0x39, - 0x15, 0x57, 0xe3, 0x18, - 0xa0, 0x4d, 0xdf, 0xa9, 0x92, 0x43, 0x01, 0xb3, 0x26, 0xb2, 0x44, 0x66, - 0xfb, 0x3e, 0x7e, 0xe5, - 0x85, 0x64, 0xe3, 0x1a, 0x87, 0x8e, 0xd0, 0xa8, 0x5a, 0x78, 0xfb, 0x67, - 0xda, 0x8b, 0xb6, 0xae, - 0x83, 0x9a, 0x7d, 0x91, 0xe7, 0x86, 0x02, 0xa5, 0x4c, 0xa7, 0x88, 0xcc, - 0x35, 0x7c, 0xfc, 0x09, - 0xda, 0xe3, 0xdd, 0xde, 0x3e, 0x5a, 0x3f, 0xed, 0x6e, 0xd2, 0xe7, 0x75, - 0xcd, 0x23, 0x38, 0x02, - 0x47, 0xf9, 0x03, 0xad, 0xfa, 0xf4, 0x21, 0x71, 0x6c, 0x50, 0x13, 0xfb, - 0x2d, 0xf2, 0x65, 0x75, - 0xc5, 0xf7, 0xfa, 0xe1, 0x0d, 0xcf, 0x04, 0x89, 0x98, 0x8d, 0xd3, 0x5b, - 0x6a, 0xf8, 0x3b, 0x12, - 0xb0, 0x19, 0x48, 0xe7, 0x51, 0xc2, 0x34, 0x2a, 0xf7, 0x1e, 0x4e, 0x69, - 0xd7, 0x52, 0xcc, 0xca, - 0x33, 0x83, 0x35, 0x76, 0xb6, 0x44, 0x36, 0x8f, 0xbb, 0xb9, 0xc6, 0xa5, - 0xe2, 0x2e, 0x30, 0xc3, - 0xfa, 0x4b, 0x30, 0x42, 0x7b, 0x9b, 0x55, 0x1c, 0x0f, 0x49, 0xf3, 0x6b, - 0x95, 0xfb, 0x9f, 0x5c, - 0x96, 0x4f, 0x3b, 0xf0, 0x74, 0x0b, 0x8c, 0xd6, 0x80, 0x5a, 0x29, 0xdc, - 0x60, 0x7d, 0x21, 0x33, - 0x6f, 0x7b, 0x44, 0x16, 0x3f, 0x94, 0xb0, 0x2d, 0x84, 0x9d, 0x02, 0x03, - 0x63, 0x1c, 0x9b, 0xdd, - 0x6e, 0xef, 0xc0, 0xcb, 0x2f, 0x29, 0x97, 0x70, 0x3c, 0xe7, 0x4a, 0x6f, - 0x11, 0x6a, 0x39, 0xb3, - 0xc2, 0x9d, 0xe0, 0xb7, 0x7d, 0x7a, 0xf1, 0xd9, 0x36, 0x28, 0xe8, 0x9c, - 0xf7, 0x79, 0xd3, 0xdb, - 0xf6, 0x74, 0xcf, 0x97, 0xbb, 0x8b, 0x32, 0x06, 0x23, 0x34, 0x15, 0xfe, - 0x88, 0xd6, 0x0b, 0xd1, - 0x50, 0xc7, 0x8e, 0xb5, 0x49, 0xc0, 0xe1, 0xb8, 0x13, 0x59, 0x22, 0x33, - 0x9c, 0x1f, 0x3f, 0x93, - 0xff, 0xca, 0xe1, 0x6d, 0x2b, 0x97, 0xee, 0xf6, 0x12, 0x18, 0x58, 0x74, - 0xec, 0x96, 0xf0, 0x49, - 0x5d, 0x6c, 0xf5, 0xbd, 0x99, 0x6d, 0xa1, 0xff, 0x87, 0x5e, 0x8c, 0xca, - 0xf3, 0x44, 0x09, 0x70, - 0xa9, 0xf3, 0xf1, 0x53, 0x02, 0x5f, 0xdd, 0x43, 0x17, 0x9e, 0x09, 0xec, - 0x9f, 0x7e, 0x85, 0x7d, - 0x8e, 0x31, 0x06, 0x99, 0x37, 0x2b, 0x42, 0xe2, 0xd8, 0xa0, 0x26, 0x35, - 0x5a, 0x27, 0xca, 0xea, - 0x17, 0x3e, 0x8d, 0x18, 0xb3, 0x34, 0xc0, 0xc9, 0x7f, 0x09, 0x31, 0xc8, - 0xb1, 0xed, 0x5a, 0xe6, - 0x1b, 0x01, 0x72, 0xcd, 0x73, 0x24, 0xa7, 0xd3, 0x53, 0x74, 0xd7, 0x5d, - 0xac, 0xc0, 0xce, 0x6b, - 0x97, 0xdb, 0xbf, 0x2d, 0x64, 0xb6, 0xab, 0x8b, 0x38, 0x20, 0x61, 0xb0, - 0x12, 0x0b, 0x83, 0x5d, - 0x7d, 0xc4, 0x18, 0x21, 0xdc, 0xac, 0xcb, 0x0e, 0xe6, 0xc5, 0x98, 0xd4, - 0xab, 0x9c, 0xae, 0x2e, - 0xec, 0xe1, 0x39, 0x87, 0xd8, 0x12, 0xb2, 0x88, 0xc8, 0x3a, 0x8a, 0xcf, - 0x56, 0x60, 0x67, 0xd4, - 0x58, 0xed, 0x24, 0x92, 0xc9, 0x61, 0x1a, 0x15, 0x9a, 0x0f, 0x27, 0xd5, - 0x8a, 0x29, 0x66, 0x65, - 0xf7, 0xe0, 0x4b, 0x4a, 0xab, 0x36, 0x15, 0x5b, 0x9b, 0x4e, 0x5d, 0x92, - 0xfa, 0xa0, 0xa9, 0xbf, - 0x1f, 0x14, 0x27, 0x3f, 0x33, 0x95, 0x3b, 0x64, 0xf6, 0x5f, 0x34, 0x2e, - 0xa7, 0xdb, 0x03, 0x10, - 0xfb, 0xdf, 0xb4, 0x9f, 0x6b, 0x26, 0x72, 0x41, 0xb7, 0x33, 0xbb, 0x07, - 0xe7, 0x8d, 0x3d, 0x32, - 0x7c, 0x50, 0x9c, 0xfc, 0xcc, 0x11, 0xec, 0x53, 0x5e, 0xbf, 0xd0, 0xb8, - 0xd9, 0xea, 0x0c, 0x40, - 0x09, 0xbe, 0x2e, 0xfa, 0x90, 0x1c, 0xdc, 0xf0, 0x31, 0x2c, 0x4d, 0x8a, - 0x64, 0x40, 0xfb, 0x98, - 0x0d, 0xab, 0x7b, 0x08, 0xd0, 0xad, 0x40, 0x47, 0x94, 0x07, 0xae, 0xf9, - 0x6f, 0x5b, 0x36, 0xe3, - 0x7a, 0xae, 0x02, 0x77, 0xac, 0x19, 0x3e, 0x5e, 0x48, 0x60, 0xa3, 0x13, - 0x36, 0x1d, 0x46, 0xe7, - 0x67, 0x51, 0xee, 0x31, 0xbf, 0x35, 0x4b, 0x80, 0x0d, 0xcb, 0x07, 0xe5, - 0x75, 0x2a, 0xc2, 0x2b, - 0x45, 0x12, 0xc8, 0xd4, 0xda, 0x4d, 0x6f, 0xcb, 0xdf, 0xa4, 0x83, 0x23, - 0xc9, 0x1e, 0xe2, 0xa9, - 0x87, 0x8f, 0x28, 0x63, 0xa7, 0x37, 0x9e, 0x12, 0xe9, 0x8c, 0x6b, 0xbf, - 0x3e, 0x67, 0x31, 0x72, - 0xdc, 0x1d, 0x43, 0x55, 0x5e, 0x52, 0xed, 0xe0, 0x78, 0x0d, 0x94, 0xde, - 0x22, 0xd4, 0x72, 0xa5, - 0xe8, 0xf4, 0x6c, 0x75, 0x98, 0xa3, 0x2e, 0x3f, 0x6d, 0x11, 0x69, 0xbc, - 0x5d, 0x7b, 0xaa, 0xaf, - 0x4f, 0xd3, 0xa9, 0x8a, 0x7a, 0x55, 0xda, 0xdc, 0xe5, 0x06, 0x16, 0x1d, - 0x3b, 0xc4, 0x3c, 0x83, - 0x1d, 0xff, 0xec, 0x46, 0x13, 0x2c, 0x75, 0xde, 0x45, 0xab, 0xa4, 0xf6, - 0x43, 0x37, 0x84, 0xcc, - 0x4e, 0x47, 0x2d, 0x57, 0x6a, 0xe8, 0xfd, 0x81, 0x5d, 0x7c, 0x5e, 0x71, - 0x49, 0xb2, 0x9e, 0xed, - 0x04, 0x15, 0x55, 0xf2, 0x40, 0xb1, 0x9c, 0xb7, 0xa5, 0x2b, 0xe3, 0x73, - 0x0b, 0x1b, 0xcd, 0x7b, - 0xeb, 0x8b, 0x23, 0xd1, 0xa8, 0xa7, 0x47, 0xd8, 0x66, 0x9f, 0xb1, 0x08, - 0xcb, 0xe1, 0x8f, 0x1d, - 0xf8, 0xa0, 0xfb, 0x3b, 0x5b, 0x22, 0x1b, 0xa6, 0xbc, 0xbd, 0x63, 0xb3, - 0x71, 0x17, 0x18, 0x80, - 0xf3, 0xf5, 0x1e, 0xb8, 0xeb, 0x87, 0x89, 0xec, 0x3e, 0x65, 0xbe, 0xe1, - 0xf1, 0xbb, 0x64, 0xc4, - 0x3e, 0x28, 0x4e, 0x7e, 0x66, 0xe9, 0x76, 0xc8, 0x2f, 0xbe, 0x68, 0x5c, - 0x8d, 0x75, 0x06, 0x20, - 0x3d, 0x57, 0x01, 0xda, 0x56, 0xed, 0x1f, 0x2f, 0x24, 0x30, 0xb0, 0xe8, - 0x1b, 0xef, 0x23, 0x92, - 0xbd, 0xb2, 0x33, 0xef, 0x81, 0x6f, 0x74, 0x6d, 0x63, 0x19, 0xe0, 0x90, - 0xb8, 0x09, 0xfa, 0x29, - 0x8a, 0x24, 0x53, 0x6b, 0x77, 0x9a, 0xde, 0x55, 0x7d, 0x8b, 0xc5, 0x46, - 0x51, 0x3c, 0x07, 0x91, - 0x88, 0xcf, 0x98, 0x12, 0x57, 0x23, 0x90, 0xef, 0xce, 0x7f, 0x55, 0x9e, - 0xb5, 0xd0, 0x80, 0x4d, - 0xdd, 0x89, 0xc7, 0x88, 0x4e, 0xef, 0xca, 0xbd, 0xc0, 0x77, 0xdc, 0xb2, - 0x50, 0xa2, 0xd0, 0xcb, - 0xcd, 0xdd, 0x50, 0xc6, 0x8d, 0x6e, 0xff, 0x24, 0x11, 0xdb, 0xd6, 0xbd, - 0x7c, 0xce, 0x62, 0xe4, - 0x0b, 0x55, 0xe5, 0x83, 0xb0, 0xa5, 0x92, 0x4a, 0x82, 0xd8, 0xdd, 0x52, - 0x80, 0xac, 0x7c, 0x44, - 0x13, 0x2b, 0xd8, 0xea, 0xf3, 0x85, 0x5c, 0x7e, 0xda, 0x22, 0xd2, 0xbb, - 0xba, 0xf6, 0x97, 0x9d, - 0x98, 0x9b, 0x0f, 0x5c, 0x94, 0xa2, 0xa5, 0x76, 0x1f, 0xd3, 0x5f, 0x91, - 0x99, 0xbc, 0x32, 0x62, - 0x02, 0xeb, 0xcb, 0x79, 0x20, 0xb9, 0x4e, 0xba, 0xb3, 0xf4, 0x90, 0xd8, - 0xe4, 0xec, 0x87, 0xdc, - 0x93, 0xce, 0xea, 0xdf, 0x24, 0x07, 0x37, 0x3c, 0x9d, 0x0b, 0x82, 0xc3, - 0x19, 0x10, 0x4e, 0x26, - 0x80, 0xe5, 0x32, 0x35, 0xd7, 0x82, 0x6b, 0x42, 0x47, 0x29, 0x50, 0x78, - 0xa3, 0xe6, 0xd9, 0xbb, - 0x90, 0xb1, 0xa5, 0x7b, 0x14, 0x03, 0x5e, 0xdb, 0x96, 0x85, 0x5a, 0x77, - 0x8f, 0x8a, 0x6b, 0x94, - 0xd0, 0x22, 0xbc, 0x80, 0x9e, 0x42, 0x8a, 0xfa, 0x54, 0x70, 0x72, 0x4b, - 0x3f, 0xf9, 0xe6, 0x28, - 0x24, 0xbd, 0xb8, 0x6e, 0x05, 0x70, 0xf6, 0x46, 0xc4, 0xb0, 0xf7, 0x6d, - 0x53, 0xc3, 0x6a, 0x25, - 0x34, 0xe9, 0x2f, 0x20, 0xc6, 0xf1, 0xc3, 0xdf, 0x15, 0x1c, 0xfd, 0x62, - 0x7f, 0xaf, 0xd8, 0x0a, - 0xcb, 0x23, 0xce, 0x4d, 0xed, 0x66, 0x2d, 0x29, 0x07, 0x04, 0xa5, 0x16, - 0x93, 0x39, 0x28, 0x43, - 0xed, 0x75, 0xbd, 0x5a, 0xc8, 0xaf, 0x95, 0xd5, 0x70, 0x40, 0xc2, 0xa3, - 0x24, 0x16, 0xc5, 0xba, - 0xf4, 0x9f, 0x04, 0xee, 0x9b, 0x32, 0x7c, 0xbc, 0x90, 0xc0, 0x85, 0x26, - 0x6c, 0x3a, 0x8c, 0x0d, - 0xce, 0xa2, 0x1f, 0x62, 0xbd, 0x6a, 0x96, 0xc3, 0x1a, 0x55, 0x0e, 0x09, - 0xea, 0x54, 0x47, 0x56, - 0x99, 0x0f, 0x8b, 0x81, 0x84, 0x1f, 0x82, 0x2b, 0xa7, 0xa9, 0x17, 0xfd, - 0xeb, 0xca, 0x90, 0x0c, - 0x10, 0x54, 0x97, 0x4e, 0xc3, 0x81, 0x35, 0x99, 0xd1, 0xac, 0x0a, 0x0f, - 0x2c, 0x6c, 0xb2, 0x2f, - 0x44, 0x86, 0x4c, 0x09, 0xca, 0xf0, 0x48, 0x96, 0x67, 0xde, 0xcb, 0x4f, - 0xbb, 0x68, 0x40, 0xc7, - 0x40, 0x93, 0x19, 0xfb, 0x8a, 0x41, 0xd4, 0x21, 0xc2, 0xf5, 0x28, 0x3c, - 0xb0, 0x73, 0x8d, 0xbc, - 0x92, 0x5a, 0x6e, 0x02, 0x34, 0xba, 0x10, 0x61, 0x25, 0x71, 0xca, 0xaf, - 0x6b, 0x66, 0xec, 0x48, - 0x3a, 0x3d, 0x1b, 0x8c, 0x26, 0x58, 0xea, 0x7f, 0x8a, 0x95, 0x8b, 0x2f, - 0x86, 0x6e, 0xcb, 0x5b, - 0x01, 0x94, 0x84, 0xdd, 0x10, 0xbd, 0x27, 0x5d, 0xb8, 0x7a, 0x48, 0x6c, - 0x72, 0x76, 0xa2, 0x6e, - 0x26, 0x56, 0x73, 0x17, 0x25, 0xc9, 0xb8, 0xfc, 0x77, 0x44, 0x67, 0xb5, - 0xb7, 0x2f, 0xed, 0xf9, - 0x12, 0xbf, 0x5c, 0x37, 0xe3, 0x38, 0x7b, 0x23, 0x62, 0x58, 0x9a, 0xd7, - 0xc8, 0x80, 0x35, 0xf3, - 0x1a, 0x95, 0xf6, 0x10, 0x63, 0x99, 0x80, 0x8e, 0xeb, 0x0e, 0x9f, 0x31, - 0xde, 0xb6, 0x6c, 0x05, - 0x48, 0xb9, 0xb3, 0xdc, 0x0a, 0xe0, 0x2f, 0x8c, 0x4b, 0xa3, 0x2d, 0xda, - 0xa6, 0x45, 0xd4, 0x4a, - 0x68, 0x11, 0x5e, 0x40, 0x4f, 0x21, 0x45, 0x7d, 0x2a, 0x38, 0x39, 0xc4, - 0xfe, 0x9d, 0x73, 0x14, - 0xf5, 0x0b, 0x80, 0x33, 0x8b, 0x8f, 0x5b, 0xe1, 0x28, 0xba, 0xcd, 0x4a, - 0x1e, 0x4c, 0x2e, 0x63, - 0x81, 0x71, 0xb6, 0xe8, 0xc7, 0x3f, 0x4c, 0x1f, 0xff, 0x53, 0x18, 0x14, - 0xd1, 0x90, 0x7b, 0xd5, - 0x8b, 0xb0, 0xd7, 0xb6, 0x67, 0x27, 0xf9, 0x08, 0xc5, 0xf1, 0x8d, 0x2a, - 0x23, 0x4a, 0xa5, 0xff, - 0xc7, 0x1c, 0x31, 0x98, 0x2d, 0x76, 0x4a, 0x33, 0x2b, 0x79, 0x43, 0x83, - 0x8e, 0x14, 0xbc, 0xce, - 0xd6, 0xdc, 0x22, 0x0b, 0xfe, 0x4a, 0x58, 0xf7, 0x42, 0xaf, 0x01, 0xe0, - 0xd0, 0x0e, 0xac, 0x8f, - 0x20, 0xa8, 0xed, 0x9c, 0x45, 0xc1, 0x6a, 0xf1, 0x61, 0x9b, 0x14, 0x1e, - 0x58, 0xd8, 0xa7, 0x5e, - 0x0a, 0xc1, 0x61, 0x5e, 0xa0, 0x18, 0xb5, 0x17, 0x3a, 0xa2, 0x95, 0x3e, - 0xf2, 0xda, 0xde, 0x2a, - 0x08, 0x2a, 0xaa, 0x27, 0x80, 0xa1, 0xfb, 0xad, 0x89, 0x56, 0x05, 0xe6, - 0x16, 0x36, 0x59, 0xf6, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x4c, 0xac, 0xe6, 0x2e, 0x4a, 0x51, 0xb3, 0x3b, 0xee, 0x88, 0xce, 0xa9, - 0xad, 0x5e, 0x19, 0x31, - 0xd7, 0x48, 0xa6, 0xd6, 0xee, 0xf7, 0x7f, 0xaa, 0xfa, 0xd5, 0x49, 0x8c, - 0xa2, 0x78, 0x0e, 0xe1, - 0x74, 0x7a, 0x36, 0xdb, 0x4c, 0xb0, 0x17, 0xfe, 0xd7, 0xe9, 0xd5, 0x5e, - 0xcf, 0xdc, 0x55, 0xb6, - }, - { /* 1 */ - 0xcc, 0xec, 0x18, 0x15, 0x1b, 0x11, 0x97, 0xc3, 0xf0, 0x9a, 0x7d, 0x3e, - 0x77, 0x3a, 0x93, 0x9b, - 0x03, 0x52, 0x4c, 0x32, 0xa4, 0x91, 0x05, 0xcd, 0xbd, 0x7b, 0x44, 0x0e, - 0x71, 0xad, 0xa6, 0x23, - 0x17, 0x0c, 0x9a, 0xa9, 0x18, 0x92, 0x39, 0xd8, 0xad, 0x0a, 0xf2, 0x46, - 0x78, 0x7d, 0x02, 0x74, - 0xa5, 0x43, 0xab, 0x04, 0x86, 0x68, 0x2c, 0x3c, 0x84, 0x83, 0x35, 0x17, - 0xdb, 0x7b, 0x40, 0x98, - 0xd4, 0x39, 0x3d, 0x46, 0x72, 0x13, 0xbf, 0x64, 0x51, 0xc4, 0x18, 0x4e, - 0x79, 0x1b, 0xea, 0x40, - 0xfc, 0x85, 0x52, 0xb3, 0xc9, 0x15, 0xc7, 0x4e, 0x71, 0x26, 0xb7, 0xde, - 0x6b, 0x78, 0x61, 0xee, - 0xd6, 0xe4, 0xf4, 0xdb, 0x0b, 0x4c, 0xb9, 0x53, 0x87, 0x96, 0x60, 0xfb, - 0x27, 0x6c, 0x2e, 0xc3, - 0x76, 0x51, 0x8b, 0x89, 0xa2, 0x54, 0x9a, 0xfb, 0x07, 0x98, 0x99, 0xfe, - 0x6f, 0x23, 0x47, 0x3e, - 0xd2, 0x9d, 0xa5, 0x22, 0xf9, 0xf2, 0xb5, 0x3d, 0xe8, 0x32, 0x90, 0x52, - 0x9b, 0x82, 0x65, 0x06, - 0x20, 0x4e, 0xcd, 0xc4, 0x9c, 0xb9, 0x60, 0xf6, 0xfe, 0x69, 0x8c, 0x01, - 0xa9, 0x7c, 0x1d, 0xe7, - 0x65, 0x24, 0x40, 0xd9, 0x48, 0x78, 0xaf, 0x4d, 0xc5, 0x36, 0x9b, 0x11, - 0xab, 0xb0, 0x0e, 0x8f, - 0x42, 0x41, 0x90, 0xd6, 0x82, 0xee, 0xc6, 0x18, 0xe9, 0x80, 0xa3, 0xb7, - 0xcf, 0x8f, 0xfe, 0x8e, - 0x46, 0x38, 0xc1, 0x2f, 0x70, 0x50, 0xca, 0x76, 0x86, 0x24, 0x53, 0x1e, - 0x73, 0x61, 0xb5, 0x4b, - 0xbb, 0x32, 0x16, 0x33, 0x64, 0x8b, 0x0e, 0xc2, 0x9c, 0x2b, 0xd8, 0x7b, - 0x37, 0xc3, 0xb6, 0x05, - 0x2c, 0xc5, 0x3e, 0x0c, 0x49, 0xb8, 0x74, 0x44, 0x4f, 0x46, 0x5f, 0x39, - 0xae, 0x8d, 0xc0, 0x6b, - 0x25, 0xb8, 0x19, 0x92, 0xb3, 0xc9, 0x6f, 0x62, 0xfa, 0xe4, 0x40, 0x13, - 0x3a, 0x48, 0x34, 0x82, - 0x2e, 0x18, 0xf7, 0x91, 0x30, 0xe7, 0x72, 0x73, 0x99, 0x14, 0x27, 0x8c, - 0xf0, 0xfa, 0x04, 0xe8, - 0x7f, 0x2c, 0xac, 0x17, 0x58, 0x25, 0x81, 0xdd, 0xb2, 0x3a, 0x86, 0xd4, - 0xfb, 0xe6, 0xb3, 0xd7, - 0xad, 0xb1, 0x09, 0x35, 0xa1, 0xd7, 0x34, 0xe0, 0x5a, 0x08, 0x16, 0x86, - 0x60, 0x64, 0xd6, 0xd1, - 0x06, 0xa4, 0x98, 0x64, 0x8b, 0xe1, 0x0a, 0x59, 0xb9, 0xf6, 0x88, 0x1c, - 0xe2, 0x99, 0x8f, 0x46, - 0x6b, 0x72, 0x7a, 0x8c, 0xe4, 0x26, 0xbd, 0xc8, 0xa2, 0x4b, 0x30, 0x9c, - 0xf2, 0x36, 0x17, 0x80, - 0x3b, 0xc9, 0xa4, 0xa5, 0x51, 0x2a, 0x4d, 0x9c, 0xe2, 0x4c, 0xad, 0x7f, - 0xd6, 0xf0, 0xc2, 0x1f, - 0x6a, 0xfd, 0xff, 0x23, 0x39, 0xe8, 0xbe, 0x32, 0xc9, 0x62, 0x0c, 0x27, - 0xdd, 0xec, 0x75, 0x20, - 0x7e, 0xa3, 0x29, 0xb8, 0x85, 0xeb, 0x82, 0x27, 0xd9, 0x13, 0xba, 0x6f, - 0xd4, 0x3c, 0xd1, 0x77, - 0x3c, 0xe2, 0xb9, 0x6e, 0x07, 0x05, 0x44, 0x3f, 0x30, 0x93, 0x19, 0xd8, - 0x1b, 0xb3, 0x2f, 0xf9, - 0x84, 0x82, 0xe3, 0x6f, 0xc7, 0x1f, 0x4f, 0x30, 0x11, 0xc3, 0x85, 0xad, - 0x5d, 0xdd, 0x3f, 0xdf, - 0x67, 0xf9, 0x89, 0x44, 0x31, 0x27, 0xa9, 0x7a, 0x13, 0x64, 0xe3, 0xa4, - 0xf5, 0xc7, 0xca, 0x0c, - 0xb6, 0x36, 0x60, 0x54, 0x6c, 0x44, 0x19, 0x8a, 0x46, 0x2d, 0x37, 0xf8, - 0x1f, 0xe8, 0x09, 0x29, - 0x16, 0x83, 0x1f, 0x06, 0xc5, 0x5c, 0x3a, 0x22, 0xc6, 0x23, 0xce, 0xfd, - 0x57, 0xa7, 0x60, 0xd4, - 0x88, 0x09, 0x10, 0xa7, 0x12, 0x1e, 0x5b, 0x82, 0xa0, 0xec, 0x56, 0x95, - 0x5a, 0x2c, 0xe2, 0x53, - 0x58, 0x49, 0x7c, 0x18, 0x92, 0xb3, 0xe8, 0x88, 0x9e, 0x8c, 0xbe, 0x72, - 0x9f, 0xd9, 0x43, 0xd6, - 0xbc, 0x19, 0x0b, 0xf8, 0x32, 0xa4, 0x07, 0x61, 0x4e, 0xf4, 0x6c, 0xdc, - 0xfa, 0x80, 0x5b, 0xe3, - 0xde, 0x16, 0x56, 0xea, 0x2c, 0xf3, 0xa1, 0x8f, 0x59, 0x1d, 0x43, 0x6a, - 0x9c, 0x73, 0xb8, 0x8a, - 0xc2, 0xba, 0x22, 0x40, 0xb7, 0x4f, 0x85, 0x46, 0x97, 0xe7, 0xd6, 0xb3, - 0x2e, 0xbc, 0x8a, 0x94, - 0x4e, 0xca, 0x63, 0x1e, 0x57, 0xef, 0xd2, 0xaa, 0x58, 0xaf, 0x70, 0x8f, - 0xc8, 0x7e, 0x23, 0x02, - 0x3f, 0xb0, 0xf5, 0x5c, 0xa3, 0x94, 0x41, 0xf2, 0x8d, 0xe8, 0x5d, 0xd6, - 0x6a, 0x1e, 0x89, 0xda, - 0x0e, 0x56, 0x3a, 0x55, 0xac, 0x5e, 0x12, 0x85, 0x67, 0x7d, 0xab, 0x8d, - 0x59, 0x86, 0x19, 0x0f, - 0x1f, 0xfe, 0x38, 0x98, 0x3f, 0x2d, 0x21, 0x04, 0x73, 0x81, 0xd1, 0xd7, - 0xc3, 0x62, 0x94, 0x3d, - 0x99, 0xa1, 0x12, 0x6a, 0x81, 0x6d, 0x68, 0x03, 0xb4, 0x10, 0x2c, 0xcf, - 0xc0, 0xc8, 0x6f, 0x61, - 0x0c, 0x8b, 0xf3, 0xc8, 0xd5, 0x01, 0x14, 0xb2, 0xb1, 0x2f, 0xd3, 0x38, - 0x07, 0xf1, 0xdd, 0x8c, - 0x70, 0xf5, 0x13, 0xed, 0x29, 0xb5, 0x90, 0xa2, 0xbe, 0x6e, 0x11, 0xe2, - 0x8d, 0xba, 0xc8, 0x78, - 0x44, 0xe5, 0x08, 0xb2, 0x09, 0x0f, 0xcc, 0x41, 0x50, 0x76, 0x2b, 0xab, - 0x2d, 0x16, 0x71, 0xc8, - 0x2d, 0x4a, 0xbb, 0xa3, 0x94, 0x76, 0x77, 0xbe, 0x24, 0x6f, 0x63, 0x82, - 0x81, 0x57, 0xa2, 0xcb, - 0x5f, 0x62, 0x61, 0xd3, 0xc4, 0x9c, 0xe1, 0x2b, 0x4c, 0x53, 0x0a, 0xd5, - 0x52, 0x9a, 0xae, 0x30, - 0x78, 0x07, 0xb1, 0xdc, 0x0e, 0x0a, 0x88, 0x7e, 0x60, 0xe5, 0x32, 0x73, - 0x36, 0xa5, 0x5e, 0x31, - 0xcb, 0xc7, 0x05, 0xde, 0x4d, 0x3e, 0x9e, 0x60, 0x22, 0x45, 0xc9, 0x99, - 0xba, 0x79, 0x7e, 0x7d, - 0xd5, 0xb6, 0xb8, 0xe9, 0xaf, 0xdd, 0xbc, 0x9e, 0x3a, 0xed, 0x24, 0xf5, - 0x56, 0xc1, 0x88, 0xe0, - 0x73, 0xa7, 0x5f, 0xdf, 0x8d, 0x24, 0x95, 0x6f, 0x03, 0x15, 0x55, 0xec, - 0xfc, 0x17, 0x6e, 0x5b, - 0x5c, 0x30, 0x2d, 0xe1, 0x60, 0x0d, 0xe4, 0xe6, 0xf1, 0x28, 0x4e, 0xdb, - 0x23, 0x37, 0x08, 0x13, - 0xfe, 0x58, 0x9b, 0x2e, 0xb0, 0x4a, 0xc1, 0x79, 0xa7, 0x74, 0xcf, 0x6b, - 0x35, 0x0f, 0xa5, 0x6d, - 0x6f, 0x0b, 0x2b, 0x75, 0x16, 0x98, 0xb1, 0xa6, 0xcd, 0xef, 0xc0, 0x35, - 0x4e, 0xd8, 0x5c, 0x45, - 0x1a, 0x08, 0xec, 0xce, 0x10, 0x5d, 0x2e, 0x90, 0x77, 0x0c, 0x1d, 0xc5, - 0x50, 0x56, 0xbd, 0x58, - 0x07, 0x2b, 0x1d, 0xcb, 0x56, 0x2f, 0x09, 0xa3, 0xd2, 0xdf, 0xb4, 0xa7, - 0xcd, 0x43, 0xed, 0xe6, - 0xee, 0x7f, 0x1c, 0x4c, 0xfe, 0xf7, 0xf1, 0x02, 0xd8, 0xa1, 0x89, 0x8a, - 0x80, 0x31, 0x4a, 0xff, - 0xea, 0x06, 0x4d, 0xb5, 0x0c, 0x49, 0xfd, 0x6c, 0xb7, 0x05, 0x79, 0x23, - 0x3c, 0xdf, 0x01, 0x3a, - 0xc8, 0x95, 0x49, 0xec, 0xe9, 0xaf, 0x9b, 0xad, 0x9f, 0x3e, 0x8d, 0x97, - 0xcb, 0xd4, 0xd8, 0x5e, - 0x8c, 0x70, 0x41, 0x5e, 0xe0, 0xa0, 0x57, 0xec, 0xcf, 0x48, 0xa6, 0x3c, - 0xe6, 0xc2, 0xa9, 0x96, - 0xb5, 0x64, 0x2c, 0x66, 0xc8, 0xd5, 0x1c, 0x47, 0xfb, 0x56, 0x73, 0xf6, - 0x6e, 0x45, 0xaf, 0x0a, - 0x38, 0x9b, 0xe8, 0x97, 0xf5, 0xbb, 0x48, 0x51, 0x5f, 0x37, 0xe9, 0x71, - 0xa7, 0x5d, 0x64, 0x3c, - 0x59, 0xc6, 0xf9, 0xb7, 0x4f, 0x7d, 0xeb, 0x72, 0xf5, 0xa5, 0x82, 0xc9, - 0xb0, 0x03, 0x21, 0x76, - 0x69, 0xaf, 0xb3, 0x11, 0x9d, 0x79, 0xbb, 0xff, 0x74, 0x19, 0x48, 0x29, - 0xac, 0x41, 0xd3, 0x03, - 0x10, 0x27, 0x87, 0x62, 0x4e, 0xbd, 0x30, 0x7b, 0x7f, 0xd5, 0x46, 0xe1, - 0xb5, 0x3e, 0xef, 0x92, - 0xf0, 0x0e, 0xa1, 0x7b, 0x1c, 0x14, 0xd3, 0xfc, 0xc0, 0x09, 0x64, 0xe6, - 0x6c, 0x89, 0xbc, 0x62, - 0xa3, 0xe7, 0x33, 0x60, 0x0d, 0x89, 0x26, 0x65, 0x3d, 0x75, 0xbd, 0x0b, - 0x39, 0xe2, 0xcf, 0xde, - 0x09, 0x7d, 0x27, 0x9e, 0xfa, 0x71, 0x1b, 0x26, 0xb5, 0xa2, 0x1f, 0x2a, - 0x94, 0xc5, 0xf4, 0xe9, - 0x0d, 0x04, 0x76, 0x67, 0x08, 0xcf, 0x17, 0x48, 0xda, 0x06, 0xef, 0x83, - 0x28, 0x2b, 0xbf, 0x2c, - 0xfd, 0x0a, 0xd7, 0x1c, 0x14, 0xdb, 0xc4, 0xb4, 0x1a, 0x0f, 0x8b, 0x65, - 0x44, 0xa2, 0x03, 0x4e, - 0x1b, 0x87, 0x69, 0x61, 0xcd, 0x93, 0x2d, 0x6a, 0x1c, 0x25, 0x21, 0x7e, - 0x7f, 0x8c, 0xdf, 0xf8, - 0x27, 0x65, 0xd0, 0x0f, 0xca, 0x96, 0x69, 0x55, 0x2c, 0xb6, 0x38, 0xa6, - 0x64, 0x3f, 0xf0, 0x01, - 0x8d, 0xff, 0xc4, 0xf1, 0x3d, 0x6e, 0x54, 0x16, 0xa4, 0x61, 0x9a, 0x87, - 0xc9, 0x18, 0xcb, 0x36, - 0xf2, 0xd3, 0x68, 0xe6, 0x65, 0x4b, 0xd5, 0xcb, 0x16, 0x5b, 0x1c, 0x53, - 0x32, 0xfe, 0x78, 0xe1, - 0x92, 0x01, 0xfc, 0x69, 0x02, 0x43, 0x75, 0x12, 0xd7, 0xe0, 0x4b, 0x50, - 0x0a, 0x7a, 0x5f, 0x0b, - 0x6d, 0xd6, 0xe2, 0xe8, 0x6f, 0xc7, 0xb7, 0x91, 0x1b, 0xbd, 0xb8, 0x80, - 0x10, 0xaf, 0x98, 0xc6, - 0x5d, 0xbf, 0xa8, 0x4e, 0xbd, 0xc3, 0xe7, 0x1c, 0x9a, 0x01, 0x72, 0x60, - 0x0c, 0xed, 0x6a, 0xb3, - 0xf1, 0x81, 0x24, 0xd4, 0xc1, 0xda, 0xd0, 0x06, 0xab, 0x20, 0x58, 0x5d, - 0x43, 0x53, 0xde, 0xc2, - 0x21, 0xc1, 0x48, 0x6b, 0x41, 0x77, 0x63, 0x0c, 0x95, 0x40, 0xb0, 0xba, - 0x86, 0xa6, 0x7f, 0x47, - 0x37, 0x42, 0x57, 0x6d, 0x84, 0x2b, 0x59, 0x2e, 0x53, 0x63, 0x7e, 0x47, - 0xd1, 0x01, 0x1f, 0x93, - 0x40, 0x9c, 0x59, 0x4b, 0xfb, 0xb1, 0xc0, 0x2f, 0x3f, 0xd2, 0xdb, 0x02, - 0x91, 0xf8, 0x3a, 0x0d, - 0x8e, 0xad, 0x88, 0xc3, 0x99, 0xff, 0x51, 0xdb, 0x19, 0x1a, 0xde, 0x89, - 0xb8, 0xb5, 0x6d, 0x15, - 0xe8, 0xdb, 0x84, 0x28, 0x75, 0x16, 0xfb, 0x5b, 0x61, 0x57, 0x01, 0x96, - 0x62, 0xa8, 0xc5, 0xb9, - 0xe4, 0x50, 0x77, 0xe0, 0xa0, 0x17, 0xef, 0xe9, 0xd0, 0x78, 0xd2, 0xae, - 0x65, 0x59, 0x18, 0x35, - 0xec, 0xa2, 0xd5, 0xd1, 0x87, 0xa8, 0xf7, 0x35, 0x0e, 0xf3, 0xf1, 0x3f, - 0xde, 0x46, 0x8e, 0x7c, - 0x9e, 0x8a, 0x0f, 0xa1, 0xd7, 0x42, 0x61, 0xa0, 0x66, 0xcf, 0x98, 0x68, - 0x0d, 0x8b, 0x82, 0x87, - 0x9c, 0x57, 0xc6, 0x3c, 0xae, 0x1d, 0x67, 0x97, 0xb0, 0x9d, 0xe0, 0xdd, - 0x53, 0xfc, 0x46, 0x04, - 0xd1, 0xcf, 0xe9, 0x10, 0x5d, 0x63, 0xb0, 0xf0, 0x55, 0x49, 0xd4, 0x5c, - 0xea, 0x2f, 0xc3, 0x25, - 0xe7, 0x02, 0x3b, 0xd2, 0x04, 0x86, 0xea, 0x24, 0x6d, 0x03, 0x96, 0xa0, - 0x14, 0xf4, 0xbe, 0x16, - 0xb8, 0x60, 0x5a, 0x01, 0xc0, 0x1a, 0x0b, 0x0f, 0x21, 0x50, 0x9c, 0x75, - 0x46, 0x6e, 0x10, 0x26, - 0x2f, 0x97, 0x72, 0x3e, 0xed, 0x29, 0x71, 0x89, 0xf2, 0x3d, 0x1b, 0x37, - 0xdf, 0x20, 0x66, 0x48, - 0xe2, 0xf4, 0xef, 0x84, 0x2b, 0xf6, 0xe5, 0xb0, 0x69, 0x8e, 0x5a, 0xb2, - 0x87, 0xc0, 0x97, 0x73, - 0x8a, 0xd4, 0xd9, 0x3a, 0x6b, 0x41, 0x5d, 0xb5, 0x76, 0xbe, 0x2e, 0x20, - 0x04, 0x5b, 0x26, 0xd0, - 0xd7, 0x6b, 0x71, 0x74, 0xd6, 0x82, 0xba, 0xa9, 0xec, 0xbf, 0x5c, 0x40, - 0x08, 0xb6, 0x4c, 0x63, - 0xb4, 0xeb, 0xa9, 0xc9, 0x15, 0x1b, 0x1f, 0xbd, 0x90, 0x7f, 0x4f, 0x4d, - 0x41, 0x9f, 0xcd, 0xaa, - 0x29, 0x33, 0xea, 0x5a, 0x66, 0xc8, 0x7b, 0xd0, 0x4b, 0xcb, 0x93, 0x2b, - 0x3d, 0xb9, 0xe9, 0x0e, - 0x13, 0x75, 0xcb, 0x50, 0xea, 0x2c, 0x35, 0xb6, 0xc2, 0xae, 0x02, 0xef, - 0xc4, 0x93, 0x49, 0xb1, - 0x98, 0x2e, 0x97, 0xc5, 0x5c, 0xa3, 0x6b, 0xf9, 0xdf, 0x39, 0x10, 0x74, - 0xef, 0x12, 0x0d, 0xc1, - 0x80, 0xfb, 0xb2, 0x96, 0x35, 0xa1, 0x43, 0x5e, 0x7e, 0x67, 0x75, 0x04, - 0xe1, 0x33, 0x74, 0x1a, - 0xa6, 0x11, 0xe7, 0x36, 0x22, 0xf9, 0x29, 0xf1, 0x39, 0xf8, 0x71, 0x19, - 0xaa, 0xd6, 0xe6, 0xbb, - 0x62, 0x0f, 0x5d, 0x12, 0x1e, 0x57, 0xa6, 0xee, 0x17, 0xe9, 0x2f, 0xb6, - 0x66, 0xf3, 0xe3, 0x69, - 0xb3, 0xc0, 0xb4, 0x02, 0x43, 0x34, 0x16, 0x1e, 0x42, 0xa0, 0xfb, 0xea, - 0x8c, 0xdc, 0x20, 0x4c, - 0x5e, 0xed, 0xe4, 0x7c, 0x19, 0x52, 0xe2, 0xd1, 0x27, 0x7a, 0x36, 0x6e, - 0x7d, 0x40, 0xcc, 0x90, - 0x72, 0x28, 0xda, 0x70, 0x50, 0xea, 0x96, 0x95, 0x68, 0x3c, 0x69, 0x57, - 0xd3, 0xcd, 0x0c, 0xfb, - 0x43, 0xce, 0x15, 0x79, 0x5f, 0x20, 0xc5, 0xe2, 0x82, 0xa9, 0x9f, 0x0c, - 0xe0, 0x55, 0x9c, 0x2e, - 0x34, 0x10, 0x1b, 0x5f, 0x20, 0xba, 0x5c, 0xe3, 0xee, 0x18, 0x3a, 0x49, - 0xa0, 0xac, 0xb9, 0xb0, - 0x35, 0x9f, 0x9e, 0xf0, 0xfd, 0x74, 0x5f, 0x19, 0x85, 0x31, 0x06, 0xf2, - 0x8f, 0x76, 0xdb, 0x10, - 0x52, 0x66, 0x17, 0xb4, 0xcc, 0x53, 0xf6, 0x63, 0x96, 0x55, 0xe5, 0x56, - 0x7a, 0xb1, 0x11, 0x1c, - 0x26, 0xea, 0x55, 0xa0, 0x17, 0x58, 0x6a, 0xaf, 0x47, 0x9f, 0x04, 0x1d, - 0x4b, 0xe5, 0x92, 0xa1, - 0x7d, 0xf1, 0x65, 0x8a, 0x21, 0x7a, 0x87, 0xea, 0x64, 0x68, 0xfe, 0x61, - 0xa5, 0x91, 0x77, 0x54, - 0xb7, 0xb9, 0xe5, 0xfb, 0xb1, 0x8a, 0x1a, 0x70, 0x2d, 0x04, 0x0b, 0x43, - 0x30, 0x32, 0x6b, 0x89, - 0x0a, 0x2f, 0x6b, 0xac, 0x5e, 0xe0, 0x1e, 0xeb, 0x08, 0xd9, 0x5b, 0x24, - 0xe5, 0x68, 0x52, 0xca, - 0x45, 0x6a, 0x8d, 0x1d, 0xd4, 0xc1, 0xcf, 0xbb, 0x3b, 0x5f, 0x17, 0x10, - 0x02, 0xcc, 0x13, 0x68, - 0x81, 0x74, 0x37, 0x39, 0xe8, 0x6f, 0x40, 0xa4, 0x15, 0x4e, 0x49, 0xbf, - 0xce, 0xe9, 0x16, 0xba, - 0x6e, 0x84, 0xae, 0xda, 0xcb, 0x56, 0xb2, 0x5c, 0xa6, 0xc6, 0xfc, 0x8e, - 0x61, 0x02, 0x3e, 0xe5, - 0x53, 0xe9, 0x92, 0x1b, 0x11, 0x9d, 0xf5, 0x99, 0xfd, 0x7c, 0xd9, 0xed, - 0x55, 0x6b, 0x73, 0xbc, - 0x4a, 0xb3, 0x32, 0xe7, 0xa5, 0x51, 0xde, 0xc4, 0x37, 0x0b, 0x80, 0x26, - 0x74, 0x90, 0x68, 0xc7, - 0x79, 0x88, 0x34, 0x73, 0xd3, 0xc4, 0x8b, 0x84, 0x0b, 0xcc, 0x0e, 0xc8, - 0x19, 0x7f, 0x3c, 0x91, - 0x32, 0xb4, 0x83, 0x3b, 0xab, 0x5b, 0x56, 0xba, 0x57, 0xee, 0xb2, 0x55, - 0x42, 0x35, 0x36, 0xf6, - 0x61, 0x5d, 0x11, 0x20, 0xba, 0xc6, 0xa3, 0x23, 0xaa, 0x92, 0x6b, 0xb8, - 0x17, 0x5e, 0x45, 0x4a, - 0xfb, 0xae, 0x4f, 0x78, 0x9f, 0x3a, 0xce, 0xed, 0xa3, 0xf9, 0x03, 0x79, - 0xa6, 0x3b, 0x8c, 0x08, - 0x39, 0x14, 0x6d, 0x38, 0x28, 0x75, 0x4b, 0xab, 0x34, 0x1e, 0xd5, 0xca, - 0x88, 0x87, 0x06, 0x9c, - 0xc0, 0x67, 0xeb, 0xdd, 0xce, 0x10, 0x83, 0x71, 0x41, 0xb5, 0xae, 0x06, - 0x70, 0xcb, 0x4e, 0x17, - 0xfa, 0x21, 0xca, 0xd7, 0x42, 0xf4, 0xcd, 0x17, 0xc8, 0xd0, 0x3f, 0xc2, - 0x89, 0xe1, 0xee, 0xa8, - 0x5b, 0x1b, 0x30, 0x2a, 0x36, 0x22, 0xed, 0x45, 0x23, 0xf7, 0xfa, 0x7c, - 0xee, 0x74, 0xe5, 0xf5, - 0xa4, 0xcc, 0x2e, 0xab, 0x5b, 0xa6, 0x2f, 0xc6, 0xef, 0xaa, 0x09, 0xac, - 0xf4, 0xa1, 0x22, 0x38, - 0xba, 0xbd, 0x93, 0x9c, 0xb9, 0x45, 0x0d, 0x38, 0xf7, 0x02, 0xe4, 0xc0, - 0x18, 0x19, 0xd4, 0xa5, - 0xda, 0x6f, 0x07, 0x13, 0xde, 0x4d, 0xad, 0xe1, 0x36, 0xb9, 0xb3, 0xc3, - 0x20, 0x9d, 0xf3, 0x4f, - 0x4c, 0x17, 0xaa, 0x83, 0x2e, 0xb0, 0xd4, 0x9d, 0x8e, 0xfd, 0x08, 0x3a, - 0x96, 0x09, 0xe7, 0x81, - 0x05, 0xf6, 0xd4, 0x56, 0x2f, 0x70, 0x0f, 0x94, 0x04, 0x8d, 0xcc, 0x12, - 0x93, 0x34, 0x29, 0x65, - 0xc3, 0x35, 0xa7, 0xef, 0x6a, 0x81, 0x86, 0xbc, 0xfc, 0xce, 0xea, 0x08, - 0x01, 0x66, 0xe8, 0x34, - 0x3a, 0x46, 0x21, 0x0a, 0x8c, 0xe4, 0x4e, 0x66, 0x89, 0x65, 0x91, 0xc4, - 0xf9, 0x2a, 0xa0, 0xbf, - 0x82, 0x26, 0x7b, 0x0b, 0x4c, 0xfe, 0x45, 0x69, 0xa8, 0x35, 0x0d, 0xb1, - 0xbf, 0x44, 0xb0, 0x99, - 0x18, 0xd5, 0x25, 0x53, 0x69, 0x02, 0x28, 0xa7, 0xa1, 0x5e, 0x65, 0x70, - 0x0e, 0x21, 0x79, 0xdb, - 0xc9, 0x1a, 0xcc, 0x43, 0x34, 0x61, 0x98, 0x57, 0xf4, 0x17, 0xb1, 0x2c, - 0xe4, 0x0e, 0xba, 0xfe, - 0x68, 0x20, 0x36, 0xbe, 0x40, 0xb7, 0xb8, 0x05, 0x1f, 0x30, 0x74, 0x92, - 0x83, 0x9b, 0xb1, 0xa3, - 0xf6, 0xaa, 0x39, 0x1f, 0x97, 0xf5, 0xd9, 0xa5, 0x79, 0xff, 0xec, 0xfa, - 0x8e, 0x10, 0x33, 0x24, - 0x63, 0x80, 0xd8, 0xbd, 0xc3, 0x99, 0xa5, 0x14, 0x7c, 0xc0, 0x13, 0x0d, - 0x49, 0x29, 0x81, 0xc9, - 0x87, 0xd0, 0xaf, 0x5d, 0x63, 0x8e, 0x4a, 0xfd, 0xac, 0xb8, 0xc1, 0xa3, - 0x2c, 0x70, 0x99, 0xfc, - 0x49, 0xe1, 0x7e, 0xd5, 0x01, 0xc0, 0xdb, 0x09, 0x8a, 0x70, 0xc4, 0x28, - 0x05, 0x3d, 0xce, 0xe4, - 0x36, 0xcd, 0xd2, 0xc2, 0x59, 0xe5, 0x5a, 0xd4, 0x38, 0x4a, 0x42, 0xfc, - 0xfe, 0xdb, 0x7d, 0x33, - 0x91, 0x53, 0xb0, 0x5b, 0xa6, 0xd2, 0x70, 0xdf, 0x6a, 0x9b, 0x0f, 0x5e, - 0x7b, 0xd7, 0xf9, 0x28, - 0x97, 0xf7, 0x28, 0x3f, 0x2d, 0x33, 0x7a, 0x86, 0xd3, 0x6d, 0x87, 0x42, - 0x99, 0x4e, 0x76, 0x6e, - 0x33, 0x3b, 0x06, 0x94, 0x76, 0x95, 0x55, 0x40, 0x3c, 0xc7, 0x8e, 0xee, - 0x6d, 0xef, 0x54, 0x56, - 0x08, 0xf2, 0xa2, 0x31, 0x27, 0xbf, 0x18, 0xdc, 0xde, 0x8b, 0x23, 0x91, - 0xbb, 0x1f, 0x96, 0x49, - 0x7c, 0x7e, 0xe0, 0x25, 0xfc, 0xb4, 0x84, 0x10, 0x0f, 0x41, 0xc2, 0xda, - 0x8a, 0x4b, 0x15, 0xf4, - 0x02, 0xdd, 0xc9, 0x9d, 0x79, 0x5f, 0x06, 0x37, 0xd6, 0x52, 0x78, 0xb5, - 0x5e, 0x77, 0xc4, 0x83, - 0x77, 0xde, 0x0e, 0x26, 0x7f, 0x9a, 0x99, 0x01, 0x6c, 0xb1, 0xa5, 0x45, - 0x40, 0xf9, 0x25, 0x9e, - 0x85, 0x0d, 0x66, 0xc0, 0x1a, 0xd1, 0x4c, 0xca, 0x7a, 0xea, 0xb9, 0x16, - 0x72, 0x07, 0x5d, 0x7f, - 0x66, 0x76, 0x0c, 0xeb, 0xec, 0xe9, 0xaa, 0x80, 0x78, 0x4d, 0xdf, 0x1f, - 0xda, 0x1d, 0xa8, 0xac, - 0x41, 0x13, 0xdc, 0xe4, 0x26, 0x7f, 0xc3, 0xd5, 0x54, 0xfb, 0xe7, 0xb9, - 0xbe, 0x22, 0x58, 0xad, - 0x30, 0x69, 0x4a, 0xa6, 0xd2, 0x04, 0x50, 0x8d, 0x81, 0xbc, 0xca, 0xe0, - 0x1c, 0x42, 0xf2, 0x75, - 0xcd, 0x63, 0x9d, 0xba, 0xc6, 0xdf, 0x94, 0x39, 0x9b, 0xb3, 0x41, 0x85, - 0x58, 0xe0, 0xf1, 0x3b, - 0xd0, 0x40, 0x6c, 0xbf, 0x80, 0xad, 0xb3, 0x0a, 0x3e, 0x60, 0xe8, 0xe7, - 0xc5, 0xf5, 0xa1, 0x85, - 0xd9, 0x3d, 0x4b, 0x21, 0x7a, 0xdc, 0xa8, 0x2c, 0x8b, 0xc2, 0xf7, 0xcd, - 0x51, 0x30, 0x55, 0x6c, - 0xa9, 0xc8, 0x58, 0xcc, 0x53, 0x69, 0x38, 0x8e, 0x35, 0xac, 0xe6, 0x2f, - 0xdc, 0x8a, 0x9d, 0x14, - 0xaa, 0x9a, 0x14, 0xfe, 0xf7, 0xf8, 0x3d, 0x43, 0x88, 0xd7, 0xa2, 0x21, - 0xad, 0x27, 0x3b, 0x37, - 0xc5, 0x91, 0x3f, 0x8b, 0xe1, 0x60, 0x8c, 0xe5, 0x45, 0x38, 0x62, 0x14, - 0xe3, 0xff, 0x67, 0x72, - 0x60, 0xd2, 0x94, 0x8f, 0x67, 0x08, 0xa0, 0xd9, 0xc1, 0xbb, 0x57, 0x03, - 0x38, 0x84, 0x27, 0xea, - 0xf8, 0xfc, 0x03, 0x4a, 0x3b, 0xab, 0xcb, 0x20, 0x1e, 0x82, 0x47, 0x77, - 0xd7, 0x96, 0x2a, 0x2b, - 0x04, 0x79, 0x51, 0xf9, 0xf2, 0xbe, 0x0c, 0x6e, 0x6f, 0xa4, 0xf0, 0xa9, - 0xbc, 0xee, 0x4b, 0xc5, - 0x90, 0xdc, 0x35, 0xf4, 0x7b, 0x1c, 0x73, 0x25, 0x01, 0xb2, 0x33, 0xe5, - 0x54, 0x0d, 0x9b, 0x88, - 0xe6, 0x8d, 0xbe, 0x7d, 0xd9, 0x48, 0xe9, 0xde, 0x06, 0x2a, 0xaa, 0x1b, - 0x3b, 0x2e, 0xdc, 0xb6, - 0x96, 0x78, 0xad, 0x90, 0xf0, 0xfd, 0x79, 0x7c, 0xb8, 0x44, 0xbb, 0xf9, - 0xb6, 0x94, 0x14, 0xce, - 0xaf, 0x6c, 0xc0, 0xa8, 0xd8, 0x88, 0x32, 0xd7, 0x8c, 0x5a, 0x6e, 0x33, - 0x3e, 0x13, 0x12, 0x52, - 0xc6, 0xc3, 0x73, 0xb9, 0x45, 0xf1, 0x89, 0x28, 0xf8, 0x43, 0x26, 0x1a, - 0x92, 0x52, 0xc1, 0x51, - 0xa7, 0x9e, 0x62, 0x99, 0xff, 0x37, 0x2a, 0x0b, 0x52, 0xd1, 0x4d, 0xa2, - 0x85, 0x0c, 0x84, 0x1b, - 0xa1, 0x3a, 0xfa, 0xfd, 0x74, 0xd6, 0x20, 0x52, 0xeb, 0x27, 0xc5, 0xbe, - 0x67, 0x95, 0x0b, 0x5d, - 0xd8, 0xb2, 0xce, 0x8e, 0xa7, 0x12, 0xab, 0xd6, 0xe0, 0xeb, 0xcb, 0x76, - 0x7e, 0xea, 0x37, 0xcc, - 0x1e, 0x71, 0xbd, 0x37, 0xe2, 0xe3, 0x22, 0xfe, 0x18, 0xa8, 0xed, 0x6c, - 0xec, 0xb8, 0xf6, 0x9d, - 0x4d, 0x98, 0x2f, 0x2c, 0xf3, 0x7e, 0xd7, 0x67, 0xe5, 0xd4, 0x34, 0x81, - 0xb9, 0xd3, 0x85, 0x21, - 0x64, 0xab, 0xc5, 0x76, 0x95, 0xb6, 0xac, 0xb7, 0xae, 0x1f, 0xa7, 0xaa, - 0x84, 0x6a, 0x6c, 0x2f, - 0x9a, 0xf3, 0x5e, 0x58, 0x25, 0xfc, 0x6d, 0xce, 0x09, 0x6b, 0x68, 0xc1, - 0xb1, 0x65, 0xc9, 0x42, - 0xe3, 0x7b, 0x6a, 0x2b, 0xf6, 0x38, 0xe6, 0x4a, 0x02, 0xa7, 0x66, 0x09, - 0xa8, 0x1a, 0xf5, 0xd3, - 0xf9, 0x73, 0x86, 0xe5, 0xe6, 0x65, 0xc8, 0xda, 0x75, 0xab, 0x7b, 0xcc, - 0xf8, 0x4c, 0x48, 0x8b, - 0xf7, 0x25, 0xbc, 0xb0, 0x4a, 0x3b, 0xda, 0x5f, 0x12, 0xd6, 0xd0, 0x41, - 0xa1, 0xca, 0x51, 0x84, - 0x19, 0x5a, 0xa0, 0xfc, 0xb4, 0xcc, 0x2b, 0x5d, 0xca, 0x77, 0x59, 0xcb, - 0x21, 0xfb, 0x1b, 0x7b, - 0x83, 0xa9, 0xfe, 0xa4, 0x91, 0x30, 0x46, 0x93, 0xc3, 0x1c, 0x31, 0x0a, - 0x90, 0x9e, 0xd2, 0x39, - 0x4b, 0x3c, 0xb7, 0x48, 0x78, 0x9f, 0xdd, 0x3e, 0x5c, 0x22, 0xbc, 0x9d, - 0x5b, 0x4a, 0x0a, 0x67, - 0x4f, 0x45, 0xe6, 0xb1, 0x8a, 0x21, 0xd1, 0x50, 0x33, 0x86, 0x4c, 0x34, - 0xe7, 0xa4, 0x41, 0xa2, - 0x7b, 0x55, 0xfd, 0xee, 0xaa, 0x9b, 0x8d, 0xb3, 0xdd, 0x9e, 0x76, 0x7d, - 0x47, 0x08, 0xf8, 0x12, - 0xef, 0xf0, 0x99, 0xe3, 0x23, 0x39, 0xf2, 0xf8, 0xb3, 0x88, 0xb5, 0x31, - 0xaf, 0xeb, 0x28, 0x5f, - 0x9d, 0xd8, 0x43, 0x93, 0x73, 0xd3, 0x64, 0x6d, 0xdb, 0xb4, 0xdc, 0x66, - 0x7c, 0x26, 0x24, 0xa4, - 0x74, 0x8c, 0x42, 0x14, 0xdb, 0x0b, 0x9c, 0xcc, 0xd1, 0xca, 0xe1, 0x4b, - 0x31, 0x54, 0x83, 0xbd, - 0xc7, 0x4c, 0xf6, 0x16, 0x98, 0x3f, 0x8a, 0xd2, 0x93, 0x6a, 0x1a, 0xa1, - 0xbd, 0x88, 0xa3, 0xf1, - 0xca, 0x48, 0x80, 0x71, 0x90, 0xf0, 0x9d, 0x9a, 0x49, 0x6c, 0xf5, 0x22, - 0x95, 0xa3, 0x1c, 0xdd, - 0x6c, 0x59, 0x67, 0x47, 0xb2, 0x09, 0xb4, 0x6b, 0x70, 0x94, 0x84, 0x3b, - 0x3f, 0x75, 0xfa, 0x66, - 0xf3, 0x5c, 0xed, 0x49, 0xb8, 0x85, 0xd6, 0x31, 0x7d, 0x72, 0x20, 0xe8, - 0x1d, 0x24, 0x1a, 0x41, - 0x31, 0xe6, 0xcf, 0x09, 0x0f, 0xca, 0x53, 0x77, 0xea, 0x95, 0xf6, 0x5b, - 0x33, 0x98, 0x90, 0xd5, - 0x3e, 0x3f, 0x70, 0xf3, 0x7e, 0x5a, 0x42, 0x08, 0xe6, 0xc1, 0x61, 0x6d, - 0x45, 0xc4, 0xeb, 0x7a, - 0x01, 0x8f, 0x85, 0xaf, 0xdd, 0xce, 0x03, 0xfa, 0x6b, 0x29, 0x3c, 0xbb, - 0x2f, 0xda, 0x62, 0xa0, - 0xdb, 0xe0, 0x82, 0xbc, 0x03, 0x83, 0xae, 0x1b, 0x5d, 0x90, 0x8f, 0x78, - 0x0f, 0x47, 0x91, 0xef, - 0xc4, 0x1e, 0xba, 0x24, 0x3c, 0xae, 0x8f, 0x1f, 0x2e, 0x11, 0x5e, 0xaf, - 0xcc, 0x25, 0x05, 0xd2, - 0xe1, 0xa6, 0xa3, 0xb6, 0x8f, 0x67, 0xe0, 0x7d, 0xd4, 0xf5, 0x1e, 0xbc, - 0xf6, 0x6d, 0x31, 0x50, - 0xed, 0x2d, 0x50, 0x7e, 0x5a, 0x66, 0xf4, 0xcf, 0x65, 0xda, 0xcd, 0x84, - 0xf1, 0x9c, 0xec, 0xdc, - 0xe0, 0x29, 0x26, 0x19, 0x52, 0xa9, 0xe3, 0x87, 0xbf, 0xdc, 0x22, 0x07, - 0xd9, 0xb7, 0x53, 0xf0, - 0x14, 0x5e, 0xd6, 0x9b, 0xbc, 0x03, 0x3c, 0x15, 0x10, 0x71, 0xb6, 0x48, - 0x09, 0xd0, 0xa4, 0x57, - 0xdf, 0x99, 0xd3, 0x45, 0xf1, 0x3d, 0xa2, 0x75, 0x32, 0x34, 0x7f, 0xd1, - 0xb3, 0xa9, 0xda, 0x2a, - 0x50, 0xbb, 0xde, 0x29, 0xb5, 0x0c, 0xf0, 0x54, 0x40, 0x07, 0x9d, 0xe3, - 0x24, 0xc6, 0xd5, 0x9f, - 0xbe, 0xc4, 0xc2, 0x65, 0x4b, 0xfb, 0x01, 0x56, 0x98, 0xa6, 0x14, 0x69, - 0xa4, 0xf7, 0x9f, 0x60, - 0xab, 0x15, 0x91, 0x51, 0x2a, 0x36, 0x3e, 0xb9, 0xe3, 0xfe, 0x9e, 0x9a, - 0x82, 0xfd, 0x59, 0x97, - 0xae, 0xe3, 0x45, 0x07, 0x05, 0x46, 0x31, 0x2d, 0xe7, 0x73, 0x52, 0x88, - 0x11, 0xc9, 0x70, 0xf2, - 0x51, 0x34, 0x5b, 0x86, 0x68, 0xc2, 0xf3, 0xae, 0x2b, 0x2e, 0xa1, 0x58, - 0x0b, 0x1c, 0xb7, 0x3f, - 0x12, 0xfa, 0x4e, 0xff, 0x37, 0xe2, 0x36, 0x4c, 0xa9, 0x87, 0x3e, 0x54, - 0xeb, 0x49, 0x2b, 0x11, - 0x8f, 0x22, 0x0d, 0x6c, 0x44, 0x31, 0x52, 0x21, 0x72, 0x33, 0xe2, 0x32, - 0x97, 0x6f, 0x0f, 0xb5, - 0x1d, 0x23, 0xf1, 0x05, 0x46, 0x72, 0x27, 0x33, 0xa5, 0xd3, 0xa9, 0x62, - 0x9d, 0x15, 0x50, 0xbe, - 0xf4, 0x77, 0xf0, 0x82, 0xee, 0xaa, 0xdf, 0x92, 0xaf, 0xad, 0x94, 0x4f, - 0xd0, 0x67, 0xf7, 0xa7, - 0xd3, 0x12, 0x20, 0x8d, 0x24, 0x3c, 0xb6, 0xc7, 0x83, 0x1b, 0xac, 0xe9, - 0xb4, 0x58, 0x07, 0xa6, - 0xff, 0xd7, 0x1e, 0x81, 0x6d, 0x84, 0xc2, 0x83, 0xcc, 0x5d, 0xf3, 0xd0, - 0x1a, 0xd5, 0xc7, 0xcd, - 0x47, 0xb7, 0x44, 0x80, 0xad, 0x9e, 0xc9, 0x8c, 0xed, 0x0d, 0x6f, 0xa5, - 0x5c, 0xbb, 0xd7, 0xeb, - 0x15, 0xd1, 0x53, 0x34, 0x61, 0xcd, 0x3f, 0xef, 0x7b, 0x58, 0x8a, 0xf3, - 0x26, 0x0a, 0xc6, 0xf7, - 0x8b, 0x5b, 0x5c, 0x95, 0xb6, 0x8f, 0x5e, 0x4f, 0x1d, 0x97, 0x12, 0x9b, - 0x2b, 0x81, 0x44, 0x70, - 0xa0, 0xb5, 0x7f, 0x52, 0xa9, 0x18, 0x23, 0xa8, 0x80, 0x0e, 0xf9, 0x05, - 0x48, 0x4f, 0x69, 0xfd, - 0xf5, 0xf8, 0x75, 0x2d, 0x33, 0x64, 0xdc, 0x68, 0xc4, 0x84, 0xa8, 0xf4, - 0xff, 0xbd, 0x95, 0x07, - 0x28, 0xbc, 0x6f, 0xf5, 0xbb, 0x06, 0x78, 0x2a, 0x20, 0xe2, 0xaf, 0x90, - 0x12, 0x63, 0x8b, 0xae, - 0x57, 0x90, 0xc3, 0xe2, 0xe3, 0x23, 0xf9, 0xf7, 0x92, 0xd8, 0x29, 0x44, - 0xe9, 0x85, 0x38, 0x79, - 0xb2, 0x4f, 0x31, 0xad, 0x9e, 0xfa, 0x15, 0xe4, 0x29, 0x89, 0xc7, 0x51, - 0xa3, 0x06, 0x42, 0xec, - 0x24, 0x37, 0x9c, 0x3d, 0x6e, 0x07, 0x6c, 0x98, 0x91, 0xcd, 0x7c, 0xa8, - 0x15, 0x92, 0x56, 0x22, - 0xcf, 0xbe, 0x54, 0x27, 0xbf, 0x80, 0x92, 0x0e, 0x4d, 0xe1, 0x39, 0x30, - 0x06, 0x97, 0x35, 0xb8, - 0x89, 0x86, 0x95, 0x08, 0xcf, 0xd0, 0x58, 0x78, 0xcb, 0xc5, 0x6a, 0x2e, - 0x75, 0xf6, 0x80, 0xf3, - 0xdd, 0x44, 0x1a, 0xd8, 0x88, 0x62, 0xa4, 0x42, 0xe4, 0x66, 0x07, 0x64, - 0xed, 0xde, 0x1e, 0xa9, - 0x55, 0x4d, 0x0a, 0x7f, 0x9a, 0x7c, 0xff, 0xc0, 0x44, 0x8a, 0x51, 0xf1, - 0xb7, 0xf2, 0xfc, 0xfa, - 0x2b, 0xee, 0x23, 0xc7, 0x1f, 0x97, 0x7d, 0xe7, 0x9d, 0x99, 0xeb, 0x9e, - 0x63, 0xce, 0x2d, 0x8d, - 0x9b, 0x7c, 0xdb, 0xf7, 0xf8, 0x32, 0x6e, 0x34, 0x62, 0x42, 0x54, 0x7a, - 0x9e, 0xbf, 0xab, 0xe2, - 0xeb, 0x89, 0xc8, 0x1a, 0xd1, 0x87, 0xfe, 0x96, 0xdc, 0x2c, 0x45, 0x98, - 0x13, 0x05, 0x63, 0x9a, - 0xce, 0x31, 0xd1, 0x88, 0x62, 0x4e, 0x91, 0xf4, 0x26, 0xc8, 0x05, 0x8b, - 0x29, 0x4d, 0x57, 0x18, - 0xe5, 0xdf, 0xf2, 0x4f, 0x7d, 0xd9, 0xec, 0x13, 0xbb, 0x51, 0xee, 0x15, - 0x4a, 0x83, 0x7a, 0x95, - 0xb1, 0x1d, 0x7d, 0x9f, 0x3a, 0x6b, 0x10, 0x29, 0x94, 0xf2, 0x83, 0x5f, - 0xd2, 0xab, 0xe4, 0xcf, - 0x22, 0x93, 0x04, 0x59, 0xe5, 0xe6, 0x66, 0xc1, 0x28, 0x3b, 0xf4, 0xb4, - 0xf7, 0x0b, 0xd9, 0x64, - 0xbd, 0x96, 0x8e, 0x57, 0xef, 0x6a, 0x04, 0x9b, 0x25, 0xdd, 0x50, 0x67, - 0xd5, 0x5a, 0x39, 0x43, - 0xe9, 0x54, 0x01, 0x87, 0xa8, 0xd8, 0xf8, 0xa1, 0x0a, 0x7e, 0x3d, 0x2d, - 0x4d, 0x72, 0xa7, 0x19, - 0x23, 0x1c, 0x81, 0xf6, 0x38, 0x28, 0x65, 0x3b, 0x43, 0x12, 0xc8, 0x0f, - 0xd8, 0xd1, 0xbb, 0xc4, - 0x75, 0x03, 0xc7, 0xbb, 0x06, 0xc5, 0x9f, 0x36, 0xba, 0xe3, 0xdd, 0xf0, - 0x1e, 0x8e, 0xe1, 0x1d, - 0x9f, 0x05, 0x8a, 0x0e, 0x0a, 0x8c, 0x62, 0x5a, 0x0d, 0xe6, 0xa4, 0xd3, - 0x22, 0x51, 0xe0, 0x27, - 0xa2, 0x68, 0xb6, 0xcf, 0xd0, 0x47, 0x25, 0x9f, 0x56, 0x5c, 0x81, 0xb0, - 0x16, 0x38, 0xad, 0x7e, - 0x0f, 0xd9, 0xbf, 0xfa, 0x71, 0x90, 0x11, 0x7f, 0x0c, 0x54, 0x97, 0x36, - 0x76, 0x5c, 0x7b, 0xaf, - 0x54, 0xc2, 0x8f, 0xd0, 0x47, 0xb2, 0xfc, 0x3a, 0x2f, 0xa3, 0x6d, 0x4a, - 0x98, 0x28, 0x9e, 0x5a, - 0x86, 0x5f, 0x2a, 0xf2, 0xbe, 0x40, 0x49, 0x07, 0xc7, 0x91, 0xfd, 0x18, - 0x03, 0xaa, 0xfb, 0x5c, - 0x93, 0x8e, 0x79, 0xc6, 0xdf, 0x8d, 0x76, 0xe8, 0xbc, 0xc9, 0x77, 0xeb, - 0x25, 0xa0, 0x3d, 0xab, - 0x5a, 0x94, 0xb5, 0x85, 0xeb, 0xec, 0xee, 0xbf, 0x48, 0xde, 0xc6, 0xc7, - 0xc1, 0xae, 0x87, 0x55, - 0x3d, 0x6d, 0x3c, 0xc1, 0xda, 0xcb, 0x47, 0xc5, 0x5b, 0xba, 0x25, 0x63, - 0x34, 0x69, 0x4d, 0x59, - 0x94, 0xa5, 0x64, 0x0d, 0x89, 0xa2, 0x7f, 0x4b, 0x6e, 0x16, 0xc3, 0x4c, - 0xe8, 0xe3, 0xd0, 0x4d, - 0x56, 0x1f, 0x46, 0x4d, 0x3e, 0xed, 0xfa, 0x0d, 0xf9, 0xf1, 0x15, 0xff, - 0xc6, 0x5f, 0x5a, 0xd9, - 0xbf, 0x4b, 0x47, 0xca, 0x96, 0x35, 0x02, 0xac, 0xf3, 0x8f, 0x28, 0xd2, - 0x8b, 0x2d, 0xfd, 0xc0, - 0x95, 0x2a, 0xe1, 0xa2, 0x54, 0x6c, 0x7c, 0xb1, 0x05, 0x3f, 0xff, 0xf7, - 0xc7, 0x39, 0xb2, 0xed, - 0xb9, 0xef, 0xdf, 0xae, 0x1d, 0xd4, 0x08, 0xf5, 0x4a, 0x79, 0xa0, 0xce, - 0x69, 0xb4, 0x72, 0x86, - 0x11, 0xa8, 0x02, 0xcd, 0x93, 0x73, 0x33, 0x81, 0x14, 0xfc, 0x7a, 0x5a, - 0x9a, 0xe4, 0x8d, 0x32, - 0x0b, 0xa0, 0xee, 0x03, 0x83, 0x2e, 0x1d, 0x11, 0x63, 0xf0, 0x67, 0x9f, - 0xca, 0xb2, 0x30, 0x6a, - 0x71, 0x7a, 0x96, 0x42, 0xf4, 0x7b, 0x93, 0x58, 0xd5, 0x47, 0x2d, 0x59, - 0xa2, 0x60, 0xaa, 0xd8, - 0xb0, 0x92, 0xf8, 0x30, 0xe7, 0xa5, 0x13, 0xd3, 0xff, 0xdb, 0xbf, 0xe4, - 0xfd, 0x71, 0x86, 0x6f, - 0x1c, 0xac, 0x74, 0xaa, 0x9b, 0xbc, 0x24, 0xc9, 0xce, 0xfa, 0x95, 0xd9, - 0xb2, 0xcf, 0x32, 0x1e, - 0xdc, 0xcb, 0x9f, 0x77, 0x55, 0xac, 0xa7, 0xb8, 0x8f, 0x4f, 0x3b, 0xdf, - 0xc2, 0x04, 0x7c, 0x09, - 0xa8, 0x47, 0xdd, 0x63, 0x8e, 0xa7, 0x3b, 0x74, 0x5e, 0x85, 0xda, 0x94, - 0xf3, 0x50, 0xff, 0xb4, - 0xc1, 0xe8, 0x6e, 0x72, 0x13, 0xde, 0x80, 0x8b, 0x2a, 0x9c, 0x92, 0xbd, - 0x5f, 0x11, 0x2c, 0xb7, - 0x2a, 0x61, 0xa6, 0x68, 0xc2, 0x59, 0x7e, 0x1d, 0xf6, 0xb0, 0xd7, 0x25, - 0x4c, 0x14, 0x4f, 0x2d, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0xac, 0x3e, 0x8c, 0x9a, 0x7c, 0x19, 0x37, 0x1a, 0x31, 0x21, 0x2a, 0x3d, - 0x4f, 0xbe, 0xb4, 0x71, - 0x48, 0x6e, 0xfb, 0x7a, 0xdc, 0x0e, 0xd8, 0xf3, 0xe1, 0x59, 0xf8, 0x93, - 0x2a, 0xe7, 0xac, 0x44, - 0x7a, 0xda, 0x78, 0x41, 0x77, 0x55, 0x8e, 0x49, 0xb6, 0xb7, 0x4a, 0xc6, - 0x68, 0xd2, 0x9a, 0xb2, - }, - { /* 2 */ - 0x47, 0x35, 0xef, 0xb5, 0xef, 0xef, 0x30, 0xe6, 0xaf, 0xa0, 0x89, 0x86, - 0x13, 0x85, 0x5f, 0xe6, - 0xe9, 0x63, 0xba, 0xe4, 0xba, 0xba, 0x98, 0x67, 0x18, 0xd6, 0x5a, 0x94, - 0x21, 0x7c, 0xa5, 0x67, - 0x8f, 0xb2, 0x8e, 0xde, 0x8e, 0x8e, 0xf7, 0x86, 0xb8, 0x77, 0x64, 0xab, - 0x6e, 0x29, 0x15, 0x86, - 0x4e, 0xe2, 0x6e, 0xfc, 0x6e, 0x6e, 0x95, 0xad, 0x61, 0xf8, 0xdd, 0x44, - 0x5e, 0x69, 0xe5, 0xad, - 0x03, 0xab, 0x76, 0x99, 0x76, 0x76, 0x7a, 0x58, 0x6f, 0xdf, 0x1c, 0xac, - 0xd8, 0xe3, 0x3e, 0x58, - 0xcf, 0xca, 0x1e, 0xed, 0x1e, 0x1e, 0xa4, 0x59, 0xec, 0x5e, 0x60, 0xd2, - 0x46, 0x49, 0x9d, 0x59, - 0x0c, 0xe9, 0x1b, 0x21, 0x1b, 0x1b, 0x2b, 0xa3, 0x7f, 0xfa, 0x70, 0xf5, - 0xe6, 0x0a, 0xf8, 0xa3, - 0xba, 0xae, 0x78, 0x32, 0x78, 0x78, 0xd5, 0xa7, 0x36, 0xbb, 0x43, 0xce, - 0xdb, 0xe7, 0x31, 0xa7, - 0x12, 0x6d, 0xc1, 0x92, 0xc1, 0xc1, 0x89, 0x96, 0x5f, 0xb0, 0xa8, 0x47, - 0x9a, 0x1b, 0xb7, 0x96, - 0xf0, 0xaa, 0x1f, 0xd1, 0x1f, 0x1f, 0x59, 0x6b, 0xc3, 0x15, 0x0f, 0xd9, - 0x66, 0x88, 0x3d, 0x6b, - 0x2b, 0x98, 0x2c, 0x5f, 0x2c, 0x2c, 0x80, 0x14, 0xae, 0x86, 0xff, 0xd7, - 0xc9, 0xdf, 0x6b, 0x14, - 0x2c, 0xd5, 0x53, 0xd9, 0x53, 0x53, 0xe3, 0x2d, 0x55, 0x0f, 0x72, 0x28, - 0xf2, 0x3a, 0xbc, 0x2d, - 0x32, 0x51, 0x89, 0x6a, 0x89, 0x89, 0x41, 0x18, 0x75, 0x45, 0xaa, 0x9a, - 0x8e, 0x2b, 0xf3, 0x18, - 0x1b, 0xba, 0x40, 0xdb, 0x40, 0x40, 0x2c, 0xdd, 0x91, 0xe8, 0xfc, 0x85, - 0xd7, 0xf7, 0x0d, 0xdd, - 0xd2, 0xe5, 0xb2, 0xc7, 0xb2, 0xb2, 0x7c, 0x34, 0xa3, 0xcb, 0xa4, 0xcc, - 0xe2, 0xbb, 0xec, 0x34, - 0x08, 0x0f, 0x12, 0x3e, 0x12, 0x12, 0x32, 0xc2, 0xeb, 0xac, 0xe1, 0xa6, - 0x05, 0x0c, 0x11, 0xc2, - 0xdd, 0xa7, 0xdf, 0x7f, 0xdf, 0xdf, 0x2d, 0xcf, 0xb3, 0xee, 0xc8, 0x95, - 0xdc, 0x52, 0x2a, 0xcf, - 0x60, 0x44, 0xd8, 0xcb, 0xd8, 0xd8, 0x9b, 0x51, 0x7e, 0xdc, 0x06, 0xa4, - 0x3c, 0x50, 0xcc, 0x51, - 0x72, 0x29, 0x19, 0x59, 0x19, 0x19, 0x12, 0xc7, 0x21, 0x6c, 0xae, 0xe3, - 0xa6, 0x4b, 0x7b, 0xc7, - 0x11, 0xc6, 0xb7, 0x0b, 0xb7, 0xb7, 0xf3, 0xce, 0x30, 0x6f, 0xb4, 0xeb, - 0x42, 0xf8, 0x89, 0xce, - 0x06, 0x95, 0xec, 0xf1, 0xec, 0xec, 0xf4, 0xb0, 0xde, 0x7d, 0x38, 0x9b, - 0x73, 0x05, 0x7c, 0xb0, - 0x5d, 0x57, 0x3c, 0x19, 0x3c, 0x3c, 0x8b, 0xb2, 0x1b, 0xbc, 0xc0, 0x67, - 0x8c, 0x92, 0xf9, 0xb2, - 0xe0, 0xb4, 0x3b, 0xad, 0x3b, 0x3b, 0x3d, 0x2c, 0xd6, 0x8e, 0x0e, 0x56, - 0x6c, 0x90, 0x1f, 0x2c, - 0x86, 0x65, 0x0f, 0x97, 0x0f, 0x0f, 0x52, 0xcd, 0x76, 0x2f, 0x30, 0x69, - 0x23, 0xc5, 0xaf, 0xcd, - 0xaa, 0xb0, 0x5c, 0x4e, 0x5c, 0x5c, 0xb1, 0xe0, 0x23, 0x20, 0x42, 0x41, - 0xd1, 0xff, 0x13, 0xe0, - 0x58, 0x69, 0xa6, 0x71, 0xa6, 0xa6, 0x05, 0x5a, 0xaa, 0x1e, 0xe4, 0x50, - 0x27, 0x74, 0xbb, 0x5a, - 0x24, 0xda, 0x41, 0xe7, 0x41, 0x41, 0xd1, 0xef, 0xbe, 0xa3, 0x93, 0x8e, - 0xf7, 0x36, 0xad, 0xef, - 0xdf, 0xd4, 0x3a, 0x91, 0x3a, 0x3a, 0xc0, 0x1e, 0xf9, 0xc5, 0x61, 0x5d, - 0x4c, 0x51, 0xbf, 0x1e, - 0x69, 0x93, 0x59, 0x82, 0x59, 0x59, 0x3e, 0x1a, 0xb0, 0x84, 0x52, 0x66, - 0x71, 0xbc, 0x76, 0x1a, - 0x7a, 0x26, 0x0b, 0x67, 0x0b, 0x0b, 0x20, 0x05, 0xca, 0xc0, 0x4f, 0x45, - 0xa3, 0x47, 0x6a, 0x05, - 0x67, 0x09, 0xa7, 0x4d, 0xa7, 0xa7, 0xf8, 0x68, 0x85, 0x55, 0x8b, 0x5b, - 0x07, 0xb5, 0x1b, 0x68, - 0xec, 0x5d, 0x20, 0x8c, 0x20, 0x20, 0x16, 0x8f, 0xa9, 0x74, 0x7e, 0xa3, - 0x8a, 0x9a, 0xe7, 0x8f, - 0x30, 0x22, 0x6c, 0x84, 0x6c, 0x6c, 0xac, 0xc9, 0x3f, 0x6e, 0x03, 0x52, - 0x1e, 0x28, 0x66, 0xc9, - 0x6a, 0x38, 0x2f, 0x1b, 0x2f, 0x2f, 0x44, 0x42, 0xdf, 0x5b, 0x4e, 0xca, - 0xa9, 0x5f, 0x48, 0x42, - 0x0e, 0x9a, 0xfe, 0xcf, 0xfe, 0xfe, 0xc6, 0x72, 0x35, 0xd1, 0xd9, 0x3d, - 0x76, 0x09, 0x6d, 0x72, - 0x43, 0xd3, 0xe6, 0xaa, 0xe6, 0xe6, 0x29, 0x87, 0x3b, 0xf6, 0x18, 0xd5, - 0xf0, 0x83, 0xb6, 0x87, - 0x2d, 0x0d, 0xc0, 0xae, 0xc0, 0xc0, 0x74, 0xa4, 0x70, 0xfb, 0xc7, 0x4c, - 0xba, 0xda, 0x17, 0xa4, - 0xb3, 0x79, 0xf9, 0x7b, 0xf9, 0xf9, 0x70, 0xec, 0xf8, 0xe3, 0x17, 0x0c, - 0x96, 0x0b, 0x8b, 0xec, - 0xe4, 0x52, 0x32, 0xb2, 0x32, 0x32, 0x24, 0x4d, 0x42, 0xd8, 0x9f, 0x05, - 0x8f, 0x96, 0xf6, 0x4d, - 0x22, 0x4f, 0xad, 0x16, 0xad, 0xad, 0x25, 0x5f, 0x60, 0xde, 0xab, 0x15, - 0x84, 0x33, 0xd1, 0x5f, - 0xab, 0x68, 0xcf, 0x39, 0xcf, 0xcf, 0x26, 0x69, 0x06, 0xd4, 0xf7, 0x25, - 0x99, 0x1f, 0xb8, 0x69, - 0x3d, 0x13, 0xe4, 0xd2, 0xe4, 0xe4, 0x10, 0xe3, 0x65, 0x60, 0xc6, 0xc3, - 0xb0, 0xc2, 0x35, 0xe3, - 0x34, 0xc4, 0x65, 0x9b, 0x65, 0x65, 0xb5, 0xa8, 0xab, 0x38, 0x92, 0x01, - 0xfd, 0x2e, 0x8f, 0xa8, - 0x90, 0xee, 0xc7, 0x1a, 0xc7, 0xc7, 0xc2, 0x3a, 0xbd, 0xc9, 0x09, 0x7d, - 0x5a, 0xd8, 0xf1, 0x3a, - 0x97, 0xa3, 0xb8, 0x9c, 0xb8, 0xb8, 0xa1, 0x03, 0x46, 0x40, 0x84, 0x82, - 0x61, 0x3d, 0x26, 0x03, - 0xb0, 0xd2, 0x8f, 0xe2, 0x8f, 0x8f, 0x0a, 0xb4, 0x97, 0x3c, 0x0b, 0xa0, - 0x4e, 0xe8, 0xb5, 0xb4, - 0xe5, 0x8a, 0xa1, 0xc5, 0xa1, 0xa1, 0xb3, 0xc4, 0x67, 0x2c, 0x2a, 0x61, - 0xc7, 0x76, 0x5d, 0xc4, - 0x42, 0x0b, 0x75, 0xdd, 0x75, 0x75, 0xbe, 0x0e, 0x1e, 0x02, 0xad, 0xb1, - 0xb8, 0x63, 0x1d, 0x0e, - 0x79, 0x8d, 0x7d, 0xfe, 0x7d, 0x7d, 0x5a, 0x5d, 0xa5, 0x1f, 0x53, 0xe9, - 0x7b, 0xa4, 0x54, 0x5d, - 0xc0, 0x88, 0x73, 0x55, 0x73, 0x73, 0xf5, 0xa2, 0xfc, 0x7b, 0x0c, 0x8b, - 0x78, 0xa0, 0x5b, 0xa2, - 0x18, 0x11, 0x36, 0x42, 0x36, 0x36, 0x56, 0x85, 0xfe, 0x37, 0xe0, 0x29, - 0x0f, 0x14, 0x33, 0x85, - 0x4b, 0xdc, 0xf4, 0x94, 0xf4, 0xf4, 0x1b, 0x45, 0xd0, 0x5a, 0xf9, 0x73, - 0xf5, 0x8f, 0xa7, 0x45, - 0xf7, 0xe7, 0x60, 0x57, 0x60, 0x60, 0x3a, 0x52, 0x38, 0x9c, 0x82, 0x26, - 0x5d, 0x6d, 0xea, 0x52, - 0xb8, 0xdd, 0x9d, 0xdc, 0x9d, 0x9d, 0x38, 0x76, 0x7c, 0x90, 0xea, 0x06, - 0x4b, 0xe4, 0xa4, 0x76, - 0xa6, 0x59, 0x47, 0x6f, 0x47, 0x47, 0x9a, 0x43, 0x5c, 0xda, 0x32, 0xb4, - 0x37, 0xf5, 0xeb, 0x43, - 0x59, 0xb1, 0x35, 0x06, 0x35, 0x35, 0x92, 0xd3, 0x8f, 0xea, 0x51, 0x34, - 0x6f, 0x94, 0x10, 0xd3, - 0x64, 0xa2, 0xd1, 0xd4, 0xd1, 0xd1, 0x82, 0x30, 0xea, 0x8a, 0x97, 0xf7, - 0xdf, 0x56, 0x25, 0x30, - 0x36, 0xb7, 0x80, 0x75, 0x80, 0x80, 0x58, 0x79, 0xe1, 0x13, 0x3b, 0xc9, - 0x6d, 0x2d, 0x1a, 0x79, - 0xb4, 0x34, 0x86, 0xfd, 0x86, 0x86, 0x13, 0xd5, 0x03, 0x6a, 0x9a, 0xf3, - 0xad, 0xee, 0x5c, 0xd5, - 0x81, 0x28, 0x70, 0x11, 0x70, 0x70, 0x31, 0xf4, 0x8d, 0xa6, 0xbd, 0x96, - 0x18, 0x20, 0x78, 0xf4, - 0x09, 0xd7, 0x81, 0x49, 0x81, 0x81, 0xa5, 0x4b, 0xce, 0x58, 0x54, 0xc2, - 0x4d, 0xec, 0xba, 0x4b, - 0x78, 0x55, 0xee, 0x89, 0xee, 0xee, 0xcd, 0xd4, 0x80, 0xeb, 0xe6, 0x8d, - 0x33, 0x44, 0xff, 0xd4, - 0xed, 0x85, 0xb3, 0xfb, 0xb3, 0xb3, 0x81, 0x06, 0x8c, 0x80, 0xcb, 0xc7, - 0xc2, 0x7a, 0x4c, 0x06, - 0x5f, 0x24, 0xd9, 0xf7, 0xd9, 0xd9, 0x66, 0x63, 0x51, 0x97, 0x69, 0xaf, - 0x1c, 0x91, 0x6c, 0x63, - 0xda, 0xea, 0xa0, 0xf9, 0xa0, 0xa0, 0x4e, 0xf6, 0x48, 0x67, 0x45, 0x6a, - 0xe7, 0xb7, 0xfd, 0xf6, - 0xc4, 0x6e, 0x7a, 0x4a, 0x7a, 0x7a, 0xec, 0xc3, 0x68, 0x2d, 0x9d, 0xd8, - 0x9b, 0xa6, 0xb2, 0xc3, - 0x29, 0xeb, 0xc9, 0xb1, 0xc9, 0xc9, 0x6d, 0xc5, 0xe4, 0xad, 0x56, 0x1f, - 0x59, 0xdc, 0xfe, 0xc5, - 0xad, 0xfd, 0x23, 0xc8, 0x23, 0x23, 0xd2, 0xd9, 0xd8, 0xa9, 0xcf, 0xbe, - 0xea, 0x1a, 0xc4, 0xd9, - 0x07, 0x4d, 0x7f, 0x86, 0x7f, 0x7f, 0x63, 0x39, 0xfb, 0x89, 0x8d, 0xff, - 0x3b, 0xe5, 0xd7, 0x39, - 0x82, 0x83, 0x06, 0x88, 0x06, 0x06, 0x4b, 0xac, 0xe2, 0x79, 0xa1, 0x3a, - 0xc0, 0xc3, 0x46, 0xac, - 0xe2, 0xc7, 0xde, 0x43, 0xde, 0xde, 0xd0, 0xfd, 0x9c, 0xa5, 0xa7, 0x9e, - 0xfc, 0x93, 0x8a, 0xfd, - 0x31, 0xfa, 0xff, 0xf3, 0xff, 0xff, 0x3b, 0x40, 0x1a, 0x9a, 0xb6, 0x36, - 0x56, 0xc8, 0xcd, 0x40, - 0x17, 0x53, 0x5b, 0xfa, 0x5b, 0x5b, 0x07, 0x7e, 0xee, 0x12, 0x8c, 0x70, - 0x31, 0xfd, 0xf5, 0x7e, - 0x9f, 0xac, 0xaa, 0xa2, 0xaa, 0xaa, 0x93, 0xc1, 0xad, 0xec, 0x65, 0x24, - 0x64, 0x31, 0x37, 0xc1, - 0x0b, 0xa4, 0x64, 0xa7, 0x64, 0x64, 0x48, 0x9a, 0x84, 0x73, 0xfd, 0x0a, - 0xdd, 0xef, 0x2f, 0x9a, - 0x16, 0x8b, 0xc8, 0x8d, 0xc8, 0xc8, 0x90, 0xf7, 0xcb, 0xe6, 0x39, 0x14, - 0x79, 0x1d, 0x5e, 0xf7, - 0x7f, 0x18, 0x91, 0x0f, 0x91, 0x91, 0xae, 0xed, 0x7b, 0x62, 0x6b, 0x72, - 0x08, 0xa1, 0x28, 0xed, - 0x23, 0x97, 0x3e, 0x61, 0x3e, 0x3e, 0xb2, 0xd6, 0x45, 0x2a, 0x1e, 0x71, - 0xcc, 0xd3, 0x7a, 0xd6, - 0x6b, 0xe0, 0xbc, 0x6c, 0xbc, 0xbc, 0xd3, 0xcb, 0xfa, 0xaf, 0xfb, 0xae, - 0xe1, 0xbf, 0xe3, 0xcb, - 0xa9, 0x1b, 0x2a, 0xd7, 0x2a, 0x2a, 0xcb, 0xb8, 0x4c, 0xff, 0x5e, 0xed, - 0x09, 0x1c, 0x2d, 0xb8, - 0x8b, 0x54, 0x87, 0xc1, 0x87, 0x87, 0xee, 0xe7, 0x2c, 0x21, 0xf5, 0xf8, - 0x8d, 0x2f, 0xfc, 0xe7, - 0xb7, 0x9f, 0xf0, 0x64, 0xf0, 0xf0, 0x69, 0x8d, 0x6c, 0xb5, 0x86, 0x5f, - 0x75, 0x0d, 0x62, 0x8d, - 0x13, 0xb5, 0x52, 0xe5, 0x52, 0x52, 0x1e, 0x1f, 0x7a, 0x44, 0x1d, 0x23, - 0xd2, 0xfb, 0x1c, 0x1f, - 0x1c, 0xf7, 0x3f, 0x5d, 0x3f, 0x3f, 0x4f, 0xe4, 0x6a, 0x61, 0x71, 0x7a, - 0xec, 0x12, 0xda, 0xe4, - 0xfb, 0x0e, 0x7b, 0x76, 0x7b, 0x7b, 0x11, 0xf1, 0x47, 0x66, 0xf2, 0xd3, - 0xbb, 0x67, 0x12, 0xf1, - 0x62, 0x37, 0x3d, 0x25, 0x3d, 0x3d, 0x76, 0x80, 0x34, 0xf7, 0xaf, 0x6c, - 0xac, 0x53, 0x59, 0x80, - 0xf2, 0xd9, 0xfa, 0x3f, 0xfa, 0xfa, 0xb4, 0xba, 0x89, 0x3e, 0xa6, 0x11, - 0xf6, 0x8b, 0xa8, 0xba, - 0x3b, 0x86, 0x08, 0x23, 0x08, 0x08, 0xe4, 0x53, 0xbb, 0x1d, 0xfe, 0x58, - 0xc3, 0xc7, 0x49, 0x53, - 0x9a, 0x92, 0x30, 0xca, 0x30, 0x30, 0x1d, 0x29, 0x1c, 0x4e, 0x41, 0x13, - 0xcf, 0xd7, 0x75, 0x29, - 0x75, 0x64, 0x66, 0xdf, 0x66, 0x66, 0x71, 0xfe, 0xda, 0xe5, 0x23, 0x1c, - 0x9d, 0xae, 0xac, 0xfe, - 0xea, 0xc8, 0xcc, 0x7d, 0xcc, 0xcc, 0xe2, 0x3f, 0x77, 0x09, 0x46, 0x38, - 0xf9, 0x9f, 0x9b, 0x3f, - 0xd0, 0x96, 0x57, 0x29, 0x57, 0x57, 0x91, 0xe5, 0xe9, 0xe0, 0x0d, 0x04, - 0x72, 0xb8, 0x79, 0xe5, - 0x2a, 0x40, 0xbf, 0x28, 0xbf, 0xbf, 0x17, 0x9d, 0x8b, 0x72, 0x4a, 0xb3, - 0x81, 0x3f, 0xc0, 0x9d, - 0x91, 0x36, 0x54, 0x6d, 0x54, 0x54, 0x55, 0xb3, 0x98, 0x3d, 0xbc, 0x19, - 0x12, 0x38, 0x5a, 0xb3, - 0x02, 0x73, 0xe5, 0xee, 0xe5, 0xe5, 0xed, 0xd1, 0x4a, 0x2b, 0xa9, 0xc8, - 0x90, 0x03, 0x95, 0xd1, - 0x46, 0xed, 0x7c, 0xc2, 0x7c, 0x7c, 0xa7, 0x6f, 0x8a, 0x54, 0x3c, 0xe2, - 0x5b, 0x65, 0xf4, 0x6f, - 0xa7, 0x81, 0xd4, 0x18, 0xd4, 0xd4, 0x0d, 0xca, 0x79, 0x2e, 0x87, 0xd0, - 0x7f, 0x15, 0x40, 0xca, - 0xdc, 0x7f, 0x4c, 0x08, 0x4c, 0x4c, 0xba, 0x46, 0x96, 0x1a, 0x7d, 0xf1, - 0x94, 0xb2, 0x81, 0x46, - 0x27, 0x71, 0x37, 0x7e, 0x37, 0x37, 0xab, 0xb7, 0xd1, 0x7c, 0x8f, 0x22, - 0x2f, 0xd5, 0x93, 0xb7, - 0x76, 0xcf, 0x10, 0x46, 0x10, 0x10, 0x0b, 0xa6, 0xb5, 0x3a, 0x3f, 0xb0, - 0x45, 0x4d, 0x92, 0xa6, - 0xa4, 0x2a, 0xa2, 0x81, 0xa2, 0xa2, 0x77, 0x92, 0x16, 0xf1, 0x9b, 0x7c, - 0xa7, 0xf6, 0x7e, 0x92, - 0xca, 0xf4, 0x84, 0x85, 0x84, 0x84, 0x2a, 0xb1, 0x5d, 0xfc, 0x44, 0xe5, - 0xed, 0xaf, 0xdf, 0xb1, - 0x96, 0x7b, 0x2b, 0xeb, 0x2b, 0x2b, 0x36, 0x8a, 0x63, 0xb4, 0x31, 0xe6, - 0x29, 0xdd, 0x8d, 0x8a, - 0x70, 0x5a, 0xfc, 0xb7, 0xfc, 0xfc, 0xff, 0x16, 0x6b, 0x47, 0x07, 0x2b, - 0x36, 0x48, 0xee, 0x16, - 0x54, 0x80, 0xbd, 0x50, 0xbd, 0xbd, 0x2e, 0xf9, 0xd5, 0xe4, 0x94, 0xa5, - 0xc1, 0x7e, 0x43, 0xf9, - 0xe1, 0x6c, 0xa8, 0xda, 0xa8, 0xa8, 0xaa, 0xa5, 0xf3, 0x7a, 0xbb, 0x32, - 0x24, 0x70, 0xb4, 0xa5, - 0x6f, 0x06, 0xb5, 0x73, 0xb5, 0xb5, 0xca, 0xaa, 0x6e, 0xf9, 0x6a, 0xfd, - 0x02, 0xb9, 0x0a, 0xaa, - 0x39, 0xf5, 0xed, 0xcd, 0xed, 0xed, 0x09, 0x82, 0xf1, 0x36, 0x57, 0x90, - 0x53, 0xc4, 0xdc, 0x82, - 0x33, 0x89, 0x1a, 0x1d, 0x1a, 0x1a, 0xd6, 0x91, 0x50, 0xb1, 0x1f, 0xfe, - 0xc6, 0xcb, 0x58, 0x91, - 0xdb, 0x32, 0x33, 0x8e, 0x33, 0x33, 0xd9, 0x7f, 0x6d, 0x93, 0xf0, 0x0e, - 0xaf, 0x57, 0x56, 0x7f, - 0xa0, 0xcc, 0xab, 0x9e, 0xab, 0xab, 0x6e, 0xf3, 0x82, 0xa7, 0x0a, 0x2f, - 0x44, 0xf0, 0x97, 0xf3, - 0xfe, 0x30, 0xe1, 0x1e, 0xe1, 0xe1, 0x9f, 0x19, 0xf6, 0xc4, 0xd6, 0xe4, - 0x10, 0x81, 0x50, 0x19, - 0xb2, 0xa1, 0x6a, 0x0c, 0x6a, 0x6a, 0xe7, 0x65, 0xdd, 0x17, 0xa2, 0x68, - 0xde, 0xeb, 0x20, 0x65, - 0x10, 0x1e, 0x24, 0x7c, 0x24, 0x24, 0x64, 0x47, 0x15, 0x9b, 0x01, 0x8f, - 0x0a, 0x18, 0x22, 0x47, - 0x71, 0x82, 0x6f, 0xc0, 0x6f, 0x6f, 0x68, 0x9f, 0x4e, 0xb3, 0xb2, 0x4f, - 0x7e, 0xa8, 0x45, 0x9f, - 0x87, 0xbd, 0x9c, 0xe0, 0x9c, 0x9c, 0xc5, 0x44, 0x53, 0xdb, 0x85, 0x0d, - 0x6b, 0x25, 0x04, 0x44, - 0x35, 0x1c, 0xf6, 0xec, 0xf6, 0xf6, 0x22, 0x21, 0x8e, 0xcc, 0x27, 0x65, - 0xb5, 0xce, 0x24, 0x21, - 0x38, 0x2d, 0x7e, 0xba, 0x7e, 0x7e, 0x9e, 0x0b, 0xd4, 0xc2, 0xe2, 0xf4, - 0x1b, 0x24, 0x77, 0x0b, - 0x52, 0x15, 0x51, 0xa1, 0x51, 0x51, 0xda, 0x49, 0x0b, 0x99, 0xac, 0x3e, - 0xb2, 0x7b, 0x3f, 0x49, - 0x65, 0x7a, 0x42, 0xa3, 0x42, 0x42, 0x15, 0xb9, 0xcf, 0x7e, 0x22, 0x93, - 0x97, 0xb6, 0x8e, 0xb9, - 0xde, 0x0c, 0xa9, 0xe6, 0xa9, 0xa9, 0x57, 0x97, 0xdc, 0x31, 0xd4, 0x39, - 0x04, 0xb1, 0x14, 0x97, - 0x8e, 0x6a, 0x1d, 0xa9, 0x1d, 0x1d, 0x60, 0x0f, 0x9d, 0x83, 0xd1, 0xcf, - 0x26, 0xc9, 0xbe, 0x0f, - 0xa8, 0xc3, 0xb9, 0xa0, 0xb9, 0xb9, 0x5c, 0x31, 0x69, 0x0b, 0xeb, 0x89, - 0x41, 0xfc, 0x86, 0x31, - 0xfd, 0x9b, 0x97, 0x87, 0x97, 0x97, 0xe5, 0x41, 0x99, 0x1b, 0xca, 0x48, - 0xc8, 0x62, 0x6e, 0x41, - 0x2e, 0xa6, 0xb6, 0x37, 0xb6, 0xb6, 0x0e, 0xfc, 0x1f, 0x24, 0xdb, 0xe0, - 0x62, 0x39, 0x29, 0xfc, - 0x01, 0xd8, 0x93, 0x77, 0x93, 0x93, 0x97, 0x89, 0x25, 0xf4, 0xb5, 0x64, - 0x48, 0xe0, 0xab, 0x89, - 0xf8, 0xa5, 0x0d, 0xef, 0x0d, 0x0d, 0x6b, 0xa9, 0x28, 0xb9, 0xee, 0x7f, - 0x63, 0x84, 0x2c, 0xa9, - 0x8c, 0x19, 0xf8, 0x47, 0xf8, 0xf8, 0x8d, 0xde, 0xd7, 0xa8, 0x78, 0x07, - 0xb6, 0xca, 0x2b, 0xde, - 0xbb, 0x76, 0xeb, 0x45, 0xeb, 0xeb, 0x42, 0x2e, 0x13, 0x4f, 0xf6, 0xaa, - 0x93, 0x07, 0x9a, 0x2e, - 0x49, 0xaf, 0x11, 0x7a, 0x11, 0x11, 0xf6, 0x94, 0x9a, 0x71, 0x50, 0xbb, - 0x65, 0x8c, 0x32, 0x94, - 0x44, 0x9e, 0x99, 0x2c, 0x99, 0x99, 0x4a, 0xbe, 0xc0, 0x7f, 0x95, 0x2a, - 0xcb, 0x66, 0x61, 0xbe, - 0xbf, 0x90, 0xe2, 0x5a, 0xe2, 0xe2, 0x5b, 0x4f, 0x87, 0x19, 0x67, 0xf9, - 0x70, 0x01, 0x73, 0x4f, - 0xef, 0xf6, 0x56, 0x15, 0x56, 0x56, 0x6c, 0xd7, 0xc6, 0xab, 0x62, 0x0f, - 0x52, 0x79, 0xd9, 0xd7, - 0xfc, 0x43, 0x04, 0xf0, 0x04, 0x04, 0x72, 0xc8, 0xbc, 0xef, 0x7f, 0x2c, - 0x80, 0x82, 0xc5, 0xc8, - 0x3a, 0x5e, 0x9b, 0x54, 0x9b, 0x9b, 0x73, 0xda, 0x9e, 0xe9, 0x4b, 0x3c, - 0x8b, 0x27, 0xe2, 0xda, - 0xb1, 0x0a, 0x1c, 0x95, 0x1c, 0x1c, 0x9d, 0x3d, 0xb2, 0xc8, 0xbe, 0xc4, - 0x06, 0x08, 0x1e, 0x3d, - 0xf9, 0x7d, 0x9e, 0x98, 0x9e, 0x9e, 0xfc, 0x20, 0x0d, 0x4d, 0x5b, 0x1b, - 0x2b, 0x64, 0x87, 0x20, - 0x99, 0x39, 0x46, 0x53, 0x46, 0x46, 0x67, 0x71, 0x73, 0x91, 0x5d, 0xbf, - 0x17, 0x34, 0x4b, 0x71, - 0xd8, 0x99, 0x45, 0x17, 0x45, 0x45, 0xa3, 0x27, 0x02, 0x4c, 0xec, 0xa2, - 0x77, 0xb4, 0x68, 0x27, - 0xc9, 0x5f, 0xf2, 0x1c, 0xf2, 0xf2, 0x50, 0xe9, 0x32, 0x23, 0x58, 0x49, - 0x35, 0x4c, 0xe1, 0xe9, - 0x61, 0x9c, 0x4b, 0xbc, 0x4b, 0x4b, 0x0c, 0xd8, 0x5b, 0x28, 0xb3, 0xc0, - 0x74, 0xb0, 0x67, 0xd8, - 0x3c, 0xcb, 0x77, 0xa5, 0x77, 0x77, 0x87, 0x6a, 0x40, 0x94, 0x73, 0xa7, - 0xf8, 0x22, 0x9e, 0x6a, - 0x89, 0x27, 0x62, 0x2f, 0x62, 0x62, 0x03, 0x36, 0x66, 0x0a, 0x5c, 0x30, - 0x1d, 0x2c, 0x69, 0x36, - 0x0f, 0x42, 0x6d, 0xb8, 0x6d, 0x6d, 0x51, 0xfb, 0x10, 0x25, 0x6c, 0x59, - 0x3e, 0xe9, 0xc6, 0xfb, - 0x5c, 0x8f, 0xaf, 0x6e, 0xaf, 0xaf, 0x1c, 0x3b, 0x3e, 0x48, 0x75, 0x03, - 0xc4, 0x72, 0x52, 0x3b, - 0xbe, 0x48, 0x71, 0x2d, 0x71, 0x71, 0xcc, 0xc6, 0xa2, 0xed, 0xd2, 0x9d, - 0x38, 0xe1, 0xd8, 0xc6, - 0xc2, 0xfb, 0x96, 0xbb, 0x96, 0x96, 0x18, 0x73, 0xb6, 0x50, 0xa5, 0x43, - 0xe8, 0xa3, 0xce, 0x73, - 0xc5, 0xb6, 0xe9, 0x3d, 0xe9, 0xe9, 0x7b, 0x4a, 0x4d, 0xd9, 0x28, 0xbc, - 0xd3, 0x46, 0x19, 0x4a, - 0x88, 0xff, 0xf1, 0x58, 0xf1, 0xf1, 0x94, 0xbf, 0x43, 0xfe, 0xe9, 0x54, - 0x55, 0xcc, 0xc2, 0xbf, - 0xa1, 0x14, 0x38, 0xe9, 0x38, 0x38, 0xf9, 0x7a, 0xa7, 0x53, 0xbf, 0x4b, - 0x0c, 0x10, 0x3c, 0x7a, - 0x1d, 0x2f, 0xac, 0x2a, 0xac, 0xac, 0xd8, 0x6d, 0x4f, 0x95, 0xc4, 0x1e, - 0xa4, 0xf2, 0x71, 0x6d, - 0xc7, 0xc5, 0x0c, 0xd3, 0x0c, 0x0c, 0x96, 0x9b, 0x07, 0xf2, 0x81, 0x74, - 0x43, 0x45, 0x8c, 0x9b, - 0x6c, 0xad, 0xc3, 0xea, 0xc3, 0xc3, 0xb0, 0xf2, 0x01, 0x26, 0x76, 0x51, - 0xda, 0x5a, 0x34, 0xf2, - 0x85, 0xce, 0x79, 0x0e, 0x79, 0x79, 0x28, 0x95, 0x19, 0xf0, 0x2c, 0xc5, - 0xfb, 0x26, 0x91, 0x95, - 0x9d, 0xdf, 0x4f, 0x4c, 0x4f, 0x4f, 0x7e, 0x10, 0xe7, 0xc7, 0xcc, 0xec, - 0xf4, 0x32, 0xa2, 0x10, - 0xd3, 0x3d, 0x21, 0xb0, 0x21, 0x21, 0xeb, 0xbd, 0x86, 0x3f, 0x11, 0xa8, - 0xaa, 0x5b, 0x47, 0xbd, - 0xd1, 0x4e, 0xc4, 0x5e, 0xc4, 0xc4, 0x06, 0x6c, 0xcc, 0x14, 0xb8, 0x60, - 0x3a, 0x58, 0xd2, 0x6c, - 0x1e, 0x84, 0xda, 0xb3, 0xda, 0xda, 0xa2, 0x35, 0x20, 0x4a, 0xd8, 0xb2, - 0x7c, 0x11, 0x4f, 0x35, - 0x3e, 0xb8, 0x92, 0x4b, 0x92, 0x92, 0x6a, 0xbb, 0x0a, 0xbf, 0xda, 0x6f, - 0x68, 0x21, 0x0b, 0xbb, - 0x84, 0x16, 0xea, 0x79, 0xea, 0xea, 0xbf, 0x1c, 0x3c, 0x04, 0x99, 0xa1, - 0xb3, 0xc6, 0x3a, 0x1c, - 0x2f, 0x7e, 0x25, 0x40, 0x25, 0x25, 0x99, 0x75, 0x3a, 0xd0, 0x6e, 0x84, - 0x2a, 0xd9, 0x82, 0x75, - 0x7d, 0x6b, 0x74, 0xe1, 0x74, 0x74, 0x43, 0x3c, 0x31, 0x49, 0xc2, 0xba, - 0x98, 0xa2, 0xbd, 0x3c, - 0x74, 0xbc, 0xf5, 0xa8, 0xf5, 0xf5, 0xe6, 0x77, 0xff, 0x11, 0x96, 0x78, - 0xd5, 0x4e, 0x07, 0x77, - 0x41, 0xa0, 0x03, 0x44, 0x03, 0x03, 0xc4, 0x56, 0x71, 0xdd, 0xb1, 0x1d, - 0x60, 0x80, 0x23, 0x56, - 0x50, 0x66, 0xb4, 0x4f, 0xb4, 0xb4, 0x37, 0x98, 0x41, 0xb2, 0x05, 0xf6, - 0x22, 0x78, 0xaa, 0x98, - 0x21, 0xe4, 0xdb, 0x8f, 0xdb, 0xdb, 0x5f, 0x07, 0x0f, 0x01, 0xb7, 0xb9, - 0x5c, 0xd0, 0xef, 0x07, - 0x55, 0x58, 0x2e, 0x27, 0x2e, 0x2e, 0xb9, 0x70, 0xf0, 0x10, 0x21, 0xc1, - 0x89, 0x9e, 0xe8, 0x70, - 0xe7, 0xf9, 0x44, 0x2b, 0x44, 0x44, 0x5e, 0x15, 0x2d, 0x07, 0x83, 0xa9, - 0x57, 0x75, 0xc8, 0x15, - 0xcd, 0xb9, 0xfb, 0x03, 0xfb, 0xfb, 0x49, 0x88, 0xa6, 0x75, 0xc9, 0x1a, - 0xd6, 0x4a, 0x08, 0x88, - 0x0d, 0x31, 0x88, 0x56, 0x88, 0x88, 0xbc, 0x2a, 0x5a, 0x0e, 0xc5, 0x91, - 0xae, 0xea, 0x53, 0x2a, - 0x7c, 0xb3, 0xe7, 0x96, 0xe7, 0xe7, 0xd4, 0xb5, 0x14, 0xbd, 0x77, 0xde, - 0xd0, 0x42, 0x16, 0xb5, - 0x37, 0x6f, 0x13, 0x02, 0x13, 0x13, 0xcf, 0xf0, 0xc4, 0xe7, 0x8e, 0xad, - 0x25, 0xcd, 0xb1, 0xf0, - 0x1a, 0x62, 0xd3, 0xac, 0xd3, 0xd3, 0xbb, 0x54, 0xb4, 0x1c, 0x49, 0xe1, - 0x9f, 0x17, 0xa6, 0x54, - 0xa2, 0xbf, 0x4e, 0x70, 0x4e, 0x4e, 0x83, 0x22, 0xc8, 0x8c, 0xa3, 0xe7, - 0xd4, 0xf3, 0x02, 0x22, - 0xaf, 0x8e, 0xc6, 0x26, 0xc6, 0xc6, 0x3f, 0x08, 0x92, 0x82, 0x66, 0x76, - 0x7a, 0x19, 0x51, 0x08, - 0xf6, 0x3f, 0xf3, 0x20, 0xf3, 0xf3, 0xad, 0xdb, 0x1d, 0x68, 0x37, 0x42, - 0x15, 0x8d, 0x41, 0xdb, - 0xe8, 0xbb, 0x29, 0x93, 0x29, 0x29, 0x0f, 0xee, 0x3d, 0x22, 0xef, 0xf0, - 0x69, 0x9c, 0x0e, 0xee, - 0x7e, 0xc0, 0x02, 0x78, 0x02, 0x02, 0x39, 0x64, 0x5e, 0x96, 0xde, 0x16, - 0x40, 0x41, 0x83, 0x64, - 0x5e, 0xfc, 0x4a, 0x80, 0x4a, 0x4a, 0xf1, 0xea, 0x74, 0x63, 0xdc, 0xcb, - 0x54, 0x71, 0xc7, 0xea, - 0xfa, 0xd6, 0xe8, 0x01, 0xe8, 0xe8, 0x86, 0x78, 0x62, 0x92, 0x47, 0xb7, - 0xf3, 0x87, 0xb9, 0x78, - 0xb5, 0xec, 0x15, 0x8a, 0x15, 0x15, 0x84, 0x5c, 0x26, 0x9e, 0x2f, 0x97, - 0xe5, 0x0e, 0xf7, 0x5c, - 0x92, 0x9d, 0x22, 0xf4, 0x22, 0x22, 0x2f, 0xeb, 0xf7, 0xe2, 0xa0, 0xb5, - 0xca, 0xdb, 0x64, 0xeb, - 0x56, 0xf3, 0x58, 0xbe, 0x58, 0x58, 0xc3, 0x28, 0x9f, 0xcf, 0x3d, 0x6d, - 0x51, 0x7d, 0xd6, 0x28, - 0xf1, 0x72, 0x8c, 0xa6, 0x8c, 0x8c, 0xce, 0xe2, 0xe6, 0xe1, 0xba, 0xbd, - 0x2e, 0x68, 0x96, 0xe2, - 0x04, 0xe6, 0x09, 0x1f, 0x09, 0x09, 0x19, 0x61, 0x94, 0x56, 0x91, 0x53, - 0xe3, 0x06, 0xe9, 0x61, - 0x6e, 0xde, 0x26, 0x04, 0x26, 0x26, 0x5d, 0x23, 0x4b, 0x0d, 0xdf, 0x99, - 0x4a, 0x59, 0xa1, 0x23, - 0xa5, 0xf2, 0x31, 0xf6, 0x31, 0x31, 0xe0, 0x1b, 0x33, 0x05, 0x2e, 0x18, - 0xef, 0x16, 0xd5, 0x1b, - 0xe6, 0x21, 0xd7, 0x5c, 0xd7, 0xd7, 0xc9, 0x9c, 0x08, 0xf3, 0x36, 0xcd, - 0x1f, 0x95, 0x63, 0x9c, - 0xc8, 0x87, 0x61, 0x6b, 0x61, 0x61, 0xc7, 0x60, 0x17, 0xd7, 0xed, 0x2d, - 0x7d, 0xac, 0x4a, 0x60, - 0x7b, 0xfe, 0x98, 0x10, 0x98, 0x98, 0xb7, 0x8c, 0xef, 0x34, 0xfa, 0x21, - 0xeb, 0xa7, 0xc1, 0x8c, - 0x73, 0xf1, 0x8a, 0x2e, 0x8a, 0x8a, 0x85, 0x4e, 0x04, 0x98, 0x1b, 0x87, - 0xee, 0xab, 0xd0, 0x4e, - 0x51, 0xbe, 0x27, 0x38, 0x27, 0x27, 0xa0, 0x11, 0x64, 0x46, 0xb0, 0x92, - 0x6a, 0x98, 0x01, 0x11, - 0x95, 0xd0, 0x5d, 0x72, 0x5d, 0x5d, 0x4c, 0xd2, 0x0c, 0x6b, 0x2d, 0x4a, - 0xf1, 0x3e, 0xb3, 0xd2, - 0x66, 0xd1, 0x34, 0x3a, 0x34, 0x34, 0x6f, 0xe1, 0xa0, 0xa1, 0x3e, 0x3f, - 0x4f, 0x55, 0xb0, 0xe1, - 0xd6, 0x03, 0xbb, 0xd8, 0xbb, 0xbb, 0x65, 0x55, 0x37, 0x9d, 0x35, 0x9f, - 0x01, 0xbd, 0x05, 0x55, - 0x5b, 0xc2, 0xd0, 0xe8, 0xd0, 0xd0, 0x7f, 0x02, 0xc5, 0xc1, 0xf8, 0xfc, - 0xff, 0x97, 0x85, 0x02, - 0xe3, 0x1f, 0x4d, 0x34, 0x4d, 0x4d, 0x47, 0x74, 0xb9, 0x51, 0x12, 0xfa, - 0xb4, 0x73, 0x21, 0x74, - 0x63, 0xef, 0xae, 0x52, 0xae, 0xae, 0xe1, 0x09, 0x11, 0x03, 0x1a, 0x08, - 0xe4, 0xb3, 0xf2, 0x09, - 0x9b, 0x4a, 0xa3, 0xbd, 0xa3, 0xa3, 0x8a, 0xa0, 0x39, 0xba, 0xf4, 0x77, - 0x87, 0x37, 0xde, 0xa0, - 0xbd, 0xe3, 0x07, 0xb4, 0x07, 0x07, 0xb6, 0x9e, 0xcd, 0x32, 0xce, 0x31, - 0xe0, 0x02, 0xe6, 0x9e, - 0x77, 0x17, 0x83, 0x31, 0x83, 0x83, 0x9c, 0x2f, 0x90, 0xce, 0x8a, 0xd4, - 0x0d, 0xad, 0x39, 0x2f, - 0x8d, 0xc1, 0x6b, 0x30, 0x6b, 0x6b, 0x1a, 0x57, 0xf2, 0x5c, 0xcd, 0x63, - 0xfe, 0x2a, 0x80, 0x57, - 0xbc, 0x3b, 0x94, 0xc3, 0x94, 0x94, 0x21, 0x17, 0xe8, 0xc6, 0x7b, 0x55, - 0xa8, 0xe2, 0x4d, 0x17, - 0xf3, 0x01, 0x69, 0x48, 0x69, 0x69, 0x23, 0x33, 0xac, 0xca, 0x13, 0x75, - 0xbe, 0x6b, 0x03, 0x33, - 0xf4, 0x4c, 0x16, 0xce, 0x16, 0x16, 0x40, 0x0a, 0x57, 0x43, 0x9e, 0x8a, - 0x85, 0x8e, 0xd4, 0x0a, - 0x26, 0xa9, 0xa4, 0x09, 0xa4, 0xa4, 0x3c, 0x3e, 0xf4, 0x88, 0x3a, 0x46, - 0x67, 0x35, 0x38, 0x3e, - 0xd4, 0x70, 0x5e, 0x36, 0x5e, 0x5e, 0x88, 0x84, 0x7d, 0xb6, 0x9c, 0x57, - 0x91, 0xbe, 0x90, 0x84, - 0x80, 0xf0, 0xe3, 0x66, 0xe3, 0xe3, 0xa6, 0x7d, 0xa8, 0x52, 0x08, 0xf2, - 0x50, 0xc0, 0xd3, 0x7d, - 0x93, 0x45, 0xb1, 0x83, 0xb1, 0xb1, 0xb8, 0x62, 0xd2, 0x16, 0x15, 0xd1, - 0x82, 0x3b, 0xcf, 0x62, - 0xb6, 0x47, 0x63, 0x13, 0x63, 0x63, 0xfe, 0x04, 0x49, 0x41, 0x33, 0x3b, - 0x3d, 0xed, 0xc9, 0x04, - 0x15, 0x20, 0xbe, 0x14, 0xbe, 0xbe, 0xea, 0xaf, 0xa4, 0x39, 0x25, 0xb8, - 0xa1, 0xfe, 0x60, 0xaf, - 0xcc, 0x61, 0x68, 0x74, 0x68, 0x68, 0xde, 0x01, 0x83, 0x81, 0x7c, 0x7e, - 0x9e, 0xaa, 0xa3, 0x01, - 0xac, 0x25, 0xb0, 0xbf, 0xb0, 0xb0, 0x45, 0x50, 0xfd, 0x5d, 0x7a, 0xda, - 0xa2, 0xfa, 0x6f, 0x50, - 0xc1, 0x50, 0xe0, 0x22, 0xe0, 0xe0, 0x62, 0x2b, 0xd9, 0x8f, 0xb9, 0xef, - 0x30, 0x40, 0xf0, 0x2b, - 0xee, 0x2e, 0xc5, 0x62, 0xc5, 0xc5, 0xfb, 0x5e, 0xe3, 0x5f, 0xd7, 0x6b, - 0x1a, 0x99, 0x72, 0x5e, - 0xae, 0x56, 0x55, 0x51, 0x55, 0x55, 0xa8, 0x81, 0xb7, 0x76, 0xd3, 0x12, - 0x32, 0xf9, 0xfa, 0x81, - 0x9c, 0x07, 0xdc, 0x3b, 0xdc, 0xdc, 0xe9, 0x99, 0xc2, 0x33, 0x79, 0x88, - 0xbc, 0xd2, 0x09, 0x99, - 0xd9, 0x41, 0xd6, 0x60, 0xd6, 0xd6, 0x34, 0xae, 0x27, 0xb8, 0x59, 0xc6, - 0x3f, 0x54, 0xc3, 0xae, - 0xa3, 0x67, 0xdd, 0x07, 0xdd, 0xdd, 0x14, 0xab, 0xed, 0x78, 0x16, 0x83, - 0x9c, 0x13, 0xa9, 0xab, - 0x25, 0x02, 0xd2, 0x90, 0xd2, 0xd2, 0x46, 0x66, 0x9b, 0x57, 0x26, 0xea, - 0xbf, 0xd6, 0x06, 0x66, - 0xeb, 0x10, 0x5f, 0x0a, 0x5f, 0x5f, 0x75, 0xb6, 0x52, 0xfd, 0xf3, 0x5c, - 0xb1, 0x7f, 0x30, 0xb6, - 0x40, 0x78, 0x90, 0x33, 0x90, 0x90, 0x53, 0xdf, 0x54, 0x29, 0x04, 0x79, - 0x28, 0x60, 0x88, 0xdf, - 0x48, 0x77, 0x82, 0x0d, 0x82, 0x82, 0x61, 0x1d, 0xbf, 0x85, 0xe5, 0xdf, - 0x2d, 0x6c, 0x99, 0x1d, - 0x6d, 0x75, 0x50, 0x9d, 0x50, 0x50, 0x27, 0x7b, 0x24, 0xd2, 0xc3, 0x35, - 0x92, 0xba, 0x9f, 0x7b, - 0x28, 0x33, 0x5a, 0xc6, 0x5a, 0x5a, 0xfa, 0x4c, 0xc1, 0x59, 0xe3, 0x7b, - 0x11, 0x3c, 0x55, 0x4c, - 0xff, 0xe8, 0x72, 0x69, 0x72, 0x72, 0x08, 0x90, 0xd3, 0x30, 0x63, 0x80, - 0x58, 0x61, 0xfb, 0x90, - 0x0a, 0x7c, 0xf7, 0xd0, 0xf7, 0xf7, 0xdf, 0x13, 0xa1, 0x87, 0x48, 0x6e, - 0x95, 0x0f, 0x84, 0x13, - 0x4f, 0x3a, 0xfd, 0x8b, 0xfd, 0xfd, 0x02, 0x24, 0x44, 0x0c, 0x68, 0x20, - 0x16, 0x89, 0x4e, 0x24, - 0x19, 0xc9, 0xa5, 0x35, 0xa5, 0xa5, 0xc1, 0x0c, 0xdb, 0xc3, 0x55, 0x4d, - 0x47, 0xf4, 0x98, 0x0c, - 0x53, 0xcd, 0xc2, 0xd6, 0xc2, 0xc2, 0x4d, 0xc0, 0x2e, 0x6d, 0x19, 0x5a, - 0xfa, 0x9b, 0x94, 0xc0, - 0xf5, 0x94, 0x85, 0xb9, 0x85, 0x85, 0xd7, 0x83, 0x72, 0xb7, 0x2b, 0xee, - 0xcd, 0x6e, 0x7f, 0x83, - 0xb9, 0x05, 0x0e, 0xab, 0x0e, 0x0e, 0xaf, 0xff, 0x59, 0x64, 0x5f, 0x62, - 0x03, 0x04, 0x0f, 0xff, - 0xcb, 0x2c, 0x17, 0xf2, 0x17, 0x17, 0xbd, 0x38, 0x78, 0x08, 0xf1, 0x81, - 0xa5, 0x4f, 0x74, 0x38, - 0x45, 0x46, 0x0a, 0x5b, 0x0a, 0x0a, 0xdd, 0x37, 0xe5, 0x8b, 0x20, 0x4e, - 0x83, 0x86, 0xca, 0x37, - 0x57, 0x2b, 0xcb, 0xc9, 0xcb, 0xcb, 0x54, 0xa1, 0xba, 0x3b, 0x88, 0x09, - 0x19, 0x9d, 0x7d, 0xa1, - 0xd7, 0xdb, 0x28, 0xaf, 0x28, 0x28, 0xf2, 0xdc, 0x12, 0x69, 0x80, 0xfb, - 0x49, 0x5d, 0xae, 0xdc, - 0x68, 0x4b, 0xca, 0xf5, 0xca, 0xca, 0xa9, 0x93, 0x95, 0x70, 0xe7, 0x02, - 0x39, 0x5c, 0xdd, 0x93, - 0x4c, 0x91, 0x8b, 0x12, 0x8b, 0x8b, 0x78, 0x7c, 0x2b, 0xd3, 0x74, 0x8c, - 0xce, 0x6a, 0x70, 0x7c, - 0x20, 0x3c, 0x48, 0xf8, 0x48, 0x48, 0xc8, 0x8e, 0x2a, 0xf5, 0x02, 0xdd, - 0x14, 0x30, 0x44, 0x8e, - 0x4a, 0x04, 0x67, 0xe3, 0x67, 0x67, 0x8c, 0xcc, 0xf5, 0xae, 0x4c, 0x17, - 0xbd, 0x6f, 0x0c, 0xcc, - 0x05, 0x3e, 0x9a, 0x68, 0x9a, 0x9a, 0x8e, 0xe8, 0xb1, 0xa2, 0x24, 0x37, - 0xab, 0xe6, 0x42, 0xe8, - 0xc6, 0x1d, 0x9f, 0xa4, 0x9f, 0x9f, 0x01, 0x12, 0x22, 0x06, 0x34, 0x10, - 0x0b, 0xa5, 0x27, 0x12, - 0x14, 0xf8, 0x2d, 0x63, 0x2d, 0x2d, 0x7d, 0x26, 0x81, 0xcd, 0x90, 0xdc, - 0xe9, 0x1e, 0xcb, 0x26, - 0x9e, 0x74, 0x39, 0xd5, 0x39, 0x39, 0x04, 0x48, 0x88, 0x18, 0xd0, 0x40, - 0x2c, 0xd1, 0x9c, 0x48, - 0xd5, 0xa8, 0xcd, 0x41, 0xcd, 0xcd, 0x1f, 0x0d, 0x58, 0x42, 0x29, 0x33, - 0xd9, 0x5e, 0x3b, 0x0d, - 0x4d, 0x49, 0x18, 0x65, 0x18, 0x18, 0xef, 0xf5, 0x0e, 0x27, 0xc1, 0xe8, - 0x86, 0x8a, 0xdb, 0xf5, - 0xce, 0x12, 0x8d, 0x9a, 0x8d, 0x8d, 0x33, 0xd0, 0xc9, 0xaa, 0xd5, 0xb6, - 0x0e, 0xa9, 0x36, 0xd0, - 0x5a, 0x1a, 0x43, 0x9f, 0x43, 0x43, 0xe8, 0x8b, 0xe0, 0x35, 0x4d, 0x98, - 0xb7, 0x77, 0x2e, 0x8b, - 0x3f, 0x60, 0x01, 0x3c, 0x01, 0x01, 0xfd, 0x32, 0x2f, 0x4b, 0x6f, 0x0b, - 0x20, 0xc1, 0xa0, 0x32, - 0x8a, 0x8c, 0x14, 0xb6, 0x14, 0x14, 0x79, 0x6e, 0x09, 0xd5, 0x40, 0x9c, - 0xc5, 0xcf, 0x57, 0x6e, - 0x83, 0x5b, 0x95, 0xff, 0x95, 0x95, 0xdc, 0x25, 0xc7, 0x8d, 0x14, 0x5e, - 0x88, 0x23, 0xed, 0x25, - 0xc3, 0x23, 0x05, 0xcc, 0x05, 0x05, 0x8f, 0xfa, 0x93, 0xa4, 0x10, 0x27, - 0xa0, 0x43, 0x65, 0xfa, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x94, 0x08, 0xce, 0x05, 0xce, 0xce, 0xdb, 0x5b, 0x29, 0x9f, 0x98, 0x2e, - 0xb9, 0xde, 0x18, 0x5b, - 0x1f, 0x5c, 0x49, 0xc4, 0x49, 0x49, 0x35, 0xbc, 0x05, 0xbe, 0x6d, 0xd6, - 0x34, 0xf1, 0xe4, 0xbc, - 0x98, 0xe1, 0xd5, 0x24, 0xd5, 0xd5, 0xf0, 0xf8, 0x56, 0x65, 0xe8, 0xdb, - 0x5f, 0xd4, 0xe0, 0xf8, - }, - { /* 3 */ - 0xab, 0x5f, 0x0f, 0xc5, 0x97, 0x09, 0x7c, 0xc9, 0x42, 0xc5, 0x39, 0xbd, - 0xfd, 0x81, 0x87, 0xfe, - 0xbb, 0xa5, 0xce, 0xde, 0x05, 0xdd, 0x1c, 0xf8, 0x12, 0xde, 0x45, 0x61, - 0xc3, 0xdf, 0xcc, 0x2b, - 0x83, 0x15, 0xcf, 0x1f, 0x39, 0x08, 0x8c, 0x52, 0xca, 0x1f, 0xff, 0xa8, - 0x9e, 0x12, 0xd5, 0x1c, - 0x0d, 0xe5, 0x99, 0x66, 0x2c, 0xc3, 0x2e, 0xd2, 0x39, 0x66, 0x56, 0x24, - 0x2b, 0x05, 0x5f, 0x06, - 0x3a, 0x3e, 0xb0, 0xfa, 0xbf, 0x2e, 0x9c, 0x05, 0xd2, 0xfa, 0x54, 0x33, - 0x2a, 0xb6, 0x28, 0x65, - 0x4a, 0x9d, 0xb2, 0xbb, 0xc7, 0x47, 0x7f, 0x92, 0xa1, 0xbb, 0xe3, 0x62, - 0x90, 0xef, 0x1a, 0x0b, - 0xe8, 0xf8, 0x85, 0x6e, 0xb9, 0xb8, 0x35, 0x14, 0xce, 0x6e, 0x93, 0xcc, - 0xa8, 0x9d, 0xa0, 0x57, - 0xeb, 0x31, 0x8d, 0xa9, 0x9a, 0xdf, 0x3f, 0x0d, 0xc1, 0xa9, 0x0a, 0x4b, - 0x05, 0x3a, 0x68, 0x2c, - 0x8f, 0xb7, 0xef, 0x85, 0xb5, 0x57, 0xa4, 0x36, 0xf6, 0x85, 0xde, 0xf1, - 0x6f, 0xcb, 0x73, 0x33, - 0xbe, 0x3d, 0xd6, 0x54, 0x60, 0x74, 0x02, 0xd3, 0x03, 0x54, 0x2d, 0x2b, - 0xf7, 0xf5, 0x57, 0xa6, - 0x0f, 0x6b, 0x28, 0x5d, 0xaf, 0x38, 0x22, 0x7d, 0x33, 0x5d, 0xb8, 0xde, - 0x5c, 0x7e, 0x6e, 0x54, - 0x6d, 0xbc, 0x5a, 0x3c, 0xc6, 0x7e, 0xad, 0x74, 0x1a, 0x3c, 0x9d, 0xa9, - 0xaf, 0x02, 0x26, 0xbd, - 0x0a, 0xf3, 0x30, 0xd7, 0xca, 0x91, 0x3c, 0x56, 0x22, 0xd7, 0xd0, 0x94, - 0x68, 0x54, 0xf5, 0xd9, - 0x29, 0x0d, 0x79, 0x26, 0x0e, 0x9d, 0xf6, 0x2d, 0x8d, 0x26, 0xb1, 0x68, - 0xb9, 0x4f, 0xab, 0xcb, - 0x17, 0xec, 0x68, 0xaa, 0x74, 0x86, 0x72, 0xb5, 0x4b, 0xaa, 0xfa, 0x6c, - 0x7d, 0x0f, 0xe1, 0x0a, - 0xb0, 0x11, 0x47, 0xf5, 0x6f, 0xd0, 0x26, 0x18, 0x35, 0xf5, 0xe2, 0x88, - 0x71, 0x57, 0xc0, 0xdb, - 0xc5, 0x2a, 0x5d, 0x3e, 0x72, 0x10, 0xdb, 0xa4, 0x57, 0x3e, 0x3d, 0x93, - 0xff, 0x24, 0x69, 0x38, - 0x4c, 0xcc, 0xa2, 0xf6, 0x81, 0x89, 0x6b, 0xa0, 0xbf, 0xf6, 0x12, 0xaf, - 0x09, 0x62, 0x49, 0xfd, - 0xc3, 0x7b, 0x4d, 0x73, 0x34, 0xde, 0xcf, 0x96, 0x49, 0x73, 0xcc, 0x5e, - 0x66, 0xa9, 0x3a, 0xce, - 0xb5, 0x89, 0x5f, 0x7f, 0x0a, 0x79, 0x38, 0x33, 0x24, 0x7f, 0x8a, 0xc2, - 0x45, 0x7d, 0x5b, 0x56, - 0x74, 0x7c, 0xa3, 0x37, 0xbd, 0x5c, 0xfb, 0x0a, 0x67, 0x37, 0xa8, 0x66, - 0x54, 0xaf, 0x50, 0xca, - 0x94, 0xf9, 0xa7, 0xb5, 0x4d, 0x8e, 0xfe, 0xe7, 0x81, 0xb5, 0x05, 0xc4, - 0xe3, 0x1d, 0x34, 0x16, - 0x1d, 0x1f, 0x58, 0x7d, 0xbe, 0x17, 0x4e, 0xe3, 0x69, 0x7d, 0x2a, 0xf8, - 0x15, 0x5b, 0x14, 0xd3, - 0x25, 0xaf, 0x59, 0xbc, 0x82, 0xc2, 0xde, 0x49, 0xb1, 0xbc, 0x90, 0x31, - 0x48, 0x96, 0x0d, 0xe4, - 0x48, 0x13, 0x03, 0x80, 0x44, 0xbc, 0x73, 0x3d, 0xab, 0x80, 0x0d, 0x98, - 0xe7, 0x94, 0x2b, 0x59, - 0xda, 0xbb, 0xb4, 0x78, 0x4f, 0xfc, 0x99, 0xe8, 0x34, 0x78, 0xf9, 0x91, - 0x9d, 0x04, 0x4c, 0xb9, - 0xdd, 0xad, 0x1d, 0xc9, 0xa9, 0xae, 0x8b, 0x6c, 0x2f, 0xc9, 0x7f, 0x21, - 0xde, 0x55, 0xe6, 0x66, - 0xe9, 0xbf, 0x3c, 0x92, 0x19, 0x24, 0x33, 0xa2, 0xcb, 0x92, 0xe4, 0xb1, - 0x72, 0x41, 0x59, 0x7e, - 0xea, 0x76, 0x34, 0x55, 0x3a, 0x43, 0x39, 0xbb, 0xc4, 0x55, 0x7d, 0x36, - 0xdf, 0xe6, 0x91, 0x05, - 0x73, 0x6a, 0x0a, 0x86, 0x5b, 0x0e, 0xe9, 0x8e, 0x7c, 0x86, 0x2e, 0xd6, - 0x17, 0xfe, 0xfa, 0x15, - 0x2e, 0x1b, 0xd0, 0x97, 0xe8, 0xcf, 0xe4, 0xa9, 0x96, 0x97, 0x37, 0xd8, - 0xfa, 0x1e, 0x01, 0x14, - 0xf5, 0xe7, 0xdd, 0x13, 0x07, 0xaf, 0x7b, 0xf7, 0xa7, 0x13, 0xb9, 0x34, - 0xbd, 0xc6, 0xb4, 0x84, - 0x26, 0x66, 0x51, 0x7b, 0xa1, 0xa5, 0xd4, 0x50, 0xbe, 0x7b, 0x09, 0xb6, - 0xe5, 0x31, 0xc5, 0x9f, - 0xd0, 0x48, 0x84, 0xaf, 0x85, 0x6d, 0xa5, 0xbe, 0x16, 0xaf, 0x29, 0x05, - 0xf5, 0x50, 0xb9, 0x60, - 0xc4, 0x6d, 0xe4, 0xc2, 0xd2, 0x8c, 0xdd, 0x12, 0x52, 0xc2, 0x4a, 0xee, - 0x25, 0xf8, 0x90, 0x11, - 0xf3, 0xb6, 0xcd, 0x5e, 0x41, 0x61, 0x6f, 0xc5, 0xb9, 0x5e, 0x48, 0xf9, - 0x24, 0x4b, 0xe7, 0x72, - 0x7b, 0x17, 0x8b, 0x6a, 0x12, 0x64, 0xd9, 0x77, 0x54, 0x6a, 0x10, 0xb8, - 0x08, 0xd1, 0x3e, 0x9e, - 0x4d, 0x8b, 0x1b, 0x0a, 0x21, 0x15, 0x6d, 0x16, 0xba, 0x0a, 0x65, 0xd2, - 0xd3, 0xbe, 0xb0, 0xd4, - 0x45, 0xf6, 0x9a, 0xe6, 0x68, 0x7f, 0x5d, 0xef, 0x92, 0xe6, 0x5b, 0xbc, - 0xcc, 0x91, 0x74, 0x5f, - 0xa9, 0xd1, 0xbe, 0xfe, 0x14, 0xf2, 0x70, 0x66, 0x48, 0xfe, 0xd7, 0x47, - 0x8a, 0xfa, 0xb6, 0xac, - 0x5e, 0xb8, 0xd2, 0xd6, 0x90, 0xa6, 0x07, 0x3e, 0xe5, 0xd6, 0x80, 0x89, - 0x40, 0x47, 0x33, 0x7a, - 0xd8, 0x35, 0x05, 0x43, 0xcc, 0x07, 0x95, 0x47, 0x3e, 0x43, 0x17, 0x6b, - 0xea, 0x7f, 0x7d, 0xeb, - 0x7e, 0x8f, 0x93, 0xe0, 0x77, 0xcd, 0xc7, 0x5c, 0x45, 0xe0, 0x78, 0xf2, - 0x3c, 0xfb, 0xa5, 0x13, - 0xf2, 0xf1, 0x74, 0xa2, 0xe1, 0xfd, 0x69, 0x73, 0xbc, 0xa2, 0x3f, 0x84, - 0xfe, 0x97, 0x1e, 0x5b, - 0x90, 0x26, 0x06, 0xc3, 0x88, 0xbb, 0xe6, 0x7a, 0x95, 0xc3, 0x1a, 0xf3, - 0x0d, 0xeb, 0x56, 0xb2, - 0x77, 0xb5, 0xab, 0xf0, 0x9e, 0x3b, 0xf1, 0x13, 0x68, 0xf0, 0x31, 0xe1, - 0xf9, 0x08, 0x98, 0xb1, - 0x53, 0x5d, 0x4b, 0xb0, 0xbc, 0x65, 0x29, 0xec, 0xdc, 0xb0, 0xd6, 0xad, - 0x6b, 0x42, 0x6c, 0x7c, - 0xe5, 0x1d, 0x1c, 0x08, 0x95, 0x7b, 0x1b, 0xc6, 0xf7, 0x08, 0xc5, 0xe8, - 0x83, 0x98, 0xff, 0x51, - 0x49, 0x54, 0xba, 0x7c, 0xe4, 0x20, 0x75, 0x8b, 0xae, 0x7c, 0x7a, 0xe5, - 0x3d, 0x48, 0xd2, 0x70, - 0x98, 0x5b, 0x87, 0x2f, 0xc1, 0xd1, 0xd6, 0x83, 0xbd, 0x2f, 0x24, 0x9d, - 0x12, 0xc4, 0x92, 0x39, - 0x13, 0x33, 0xc9, 0xdc, 0xb1, 0xb3, 0x6a, 0x28, 0x5f, 0xdc, 0xe5, 0x5b, - 0x93, 0xf9, 0x83, 0xae, - 0x43, 0xa7, 0x8a, 0xab, 0x2e, 0xb1, 0x49, 0xdd, 0x8c, 0xab, 0xaa, 0x71, - 0x55, 0x1c, 0x27, 0xa9, - 0xdc, 0xea, 0xa4, 0x35, 0x09, 0x32, 0x8d, 0xda, 0x2a, 0x35, 0x08, 0x5c, - 0x04, 0x89, 0x1f, 0x4f, - 0xc7, 0xa4, 0xec, 0x05, 0xf1, 0xeb, 0xd7, 0x0b, 0x5d, 0x05, 0xd3, 0x69, - 0x88, 0x5f, 0x58, 0x6a, - 0xa0, 0xeb, 0x86, 0xee, 0xfd, 0x04, 0x46, 0x29, 0x65, 0xee, 0x9e, 0x54, - 0x4f, 0x09, 0x8b, 0x0e, - 0xcc, 0x10, 0x65, 0x2e, 0x9b, 0xe6, 0xed, 0xeb, 0x7a, 0x2e, 0x74, 0x80, - 0x3a, 0xd7, 0x54, 0x9a, - 0x14, 0x25, 0x60, 0x6d, 0x57, 0xe1, 0x78, 0xac, 0x44, 0x6d, 0x63, 0xeb, - 0xd0, 0xa8, 0x29, 0x71, - 0x52, 0x1a, 0xf2, 0x4c, 0x1c, 0xf9, 0x2f, 0x5a, 0xd9, 0x4c, 0xa1, 0xd0, - 0xb1, 0x9e, 0x95, 0x55, - 0x2f, 0x5c, 0x69, 0x6b, 0x48, 0x53, 0xe2, 0x1f, 0x93, 0x6b, 0x40, 0xa5, - 0x20, 0xc2, 0xf8, 0x3d, - 0x47, 0x78, 0x2b, 0xdd, 0xeb, 0x84, 0x51, 0x40, 0x98, 0xdd, 0xb5, 0x46, - 0xbb, 0xea, 0x45, 0x0d, - 0xa6, 0xba, 0x96, 0xa3, 0xbb, 0xca, 0x52, 0x1b, 0x7b, 0xa3, 0x6f, 0x99, - 0xd6, 0x84, 0xd8, 0xf8, - 0x5f, 0xff, 0x6b, 0x2a, 0x30, 0x3a, 0x01, 0x88, 0xe0, 0x2a, 0xf7, 0xf4, - 0x9a, 0x9b, 0xca, 0x53, - 0xe3, 0x4c, 0x0c, 0x45, 0xd3, 0xb5, 0x0f, 0xf4, 0xe9, 0x45, 0x34, 0x25, - 0x1a, 0x15, 0xac, 0xa7, - 0xb8, 0x6c, 0xc6, 0x19, 0x26, 0xba, 0x16, 0xe1, 0x1d, 0x19, 0xdc, 0xe6, - 0x6e, 0x78, 0x04, 0x50, - 0xa7, 0xfd, 0x2f, 0x5f, 0x1b, 0x56, 0x54, 0xad, 0x7e, 0x5f, 0x18, 0xe4, - 0x0c, 0x58, 0x21, 0xd1, - 0xc0, 0xb2, 0x45, 0xb4, 0x17, 0xb9, 0xc5, 0x8f, 0x46, 0xb4, 0x55, 0xd9, - 0xcb, 0x0e, 0xf2, 0xb5, - 0x23, 0xfe, 0x49, 0xf1, 0xc4, 0x0c, 0xca, 0x7b, 0xaf, 0xf1, 0x61, 0xfc, - 0xd1, 0x1b, 0x5e, 0x12, - 0x2a, 0xc4, 0x71, 0xe1, 0x2d, 0xfa, 0xfc, 0x34, 0x82, 0xe1, 0x28, 0xef, - 0x14, 0xe8, 0x63, 0xb0, - 0x62, 0xd7, 0x72, 0x61, 0x69, 0x46, 0x8f, 0x09, 0x29, 0x61, 0x25, 0x77, - 0xf3, 0x7c, 0x48, 0xe9, - 0x7d, 0x46, 0x9b, 0x27, 0x54, 0xaa, 0xcd, 0x45, 0x4a, 0x27, 0xe1, 0x75, - 0x91, 0x5c, 0x6d, 0x68, - 0x31, 0x8a, 0x39, 0xd1, 0xd5, 0x23, 0xa6, 0xe5, 0xf5, 0xd1, 0xf3, 0xda, - 0x98, 0x3e, 0x24, 0x95, - 0x30, 0xcd, 0x80, 0x2d, 0x75, 0xbf, 0xa0, 0x53, 0xf0, 0x2d, 0x84, 0xa7, - 0x42, 0xe2, 0xdd, 0xbc, - 0xc1, 0xf5, 0xfc, 0x48, 0xb7, 0x25, 0xc3, 0x39, 0x43, 0x48, 0x22, 0xa4, - 0x11, 0xd2, 0x0b, 0x9c, - 0x20, 0x37, 0x41, 0x36, 0xe7, 0x6b, 0xc0, 0x62, 0xa0, 0x36, 0xf8, 0x7b, - 0x7c, 0xbc, 0x96, 0x69, - 0x8a, 0x2f, 0xf7, 0x0f, 0xd0, 0xfe, 0xba, 0x1d, 0xe7, 0x0f, 0xb6, 0xbb, - 0x5b, 0xe1, 0xe8, 0xbe, - 0xd7, 0x5e, 0x2d, 0x1e, 0x63, 0x3f, 0xb7, 0x3a, 0x0d, 0x1e, 0xaf, 0xb5, - 0xb6, 0x01, 0x13, 0xbf, - 0x3d, 0x28, 0x19, 0x4b, 0x59, 0x7c, 0x8e, 0x81, 0xc9, 0x4b, 0xd2, 0x83, - 0x69, 0xe7, 0x82, 0xba, - 0xbf, 0x7a, 0x6f, 0xa8, 0xc0, 0xe8, 0x04, 0x65, 0x06, 0xa8, 0x5a, 0x56, - 0x2d, 0x29, 0xae, 0x8f, - 0xc6, 0xe3, 0x55, 0xf9, 0x51, 0x77, 0xd1, 0xbd, 0x58, 0xf9, 0xa4, 0x14, - 0x52, 0x83, 0xa1, 0x43, - 0x72, 0x2d, 0xb3, 0x7a, 0xfb, 0x92, 0xef, 0x38, 0x79, 0x7a, 0x59, 0xab, - 0xcd, 0x22, 0x03, 0x3c, - 0xdb, 0xfc, 0x0d, 0x84, 0xef, 0x60, 0x9f, 0x5e, 0x31, 0x84, 0x8e, 0xec, - 0x47, 0xd8, 0xb5, 0x90, - 0x15, 0x62, 0xd9, 0x91, 0xf7, 0x7d, 0x7e, 0x1a, 0x41, 0x91, 0x14, 0x96, - 0x0a, 0x74, 0xd0, 0x58, - 0x99, 0x1c, 0x3e, 0xd3, 0x61, 0x4d, 0xd0, 0x35, 0xb8, 0xd3, 0x53, 0xe0, - 0xc8, 0x18, 0x6b, 0x10, - 0x4b, 0xda, 0x0b, 0x47, 0x67, 0xdb, 0x79, 0x24, 0xa4, 0x47, 0x94, 0x1f, - 0x4a, 0x33, 0xe3, 0x22, - 0x34, 0x12, 0x21, 0x5b, 0xb0, 0x8a, 0xb8, 0xce, 0xe4, 0x5b, 0x9b, 0x90, - 0xac, 0x14, 0xbf, 0x18, - 0x60, 0x59, 0xc3, 0x5a, 0xea, 0xbd, 0x83, 0xa6, 0x23, 0x5a, 0xcb, 0x8d, - 0x84, 0x07, 0x79, 0xbb, - 0x92, 0xa8, 0xb7, 0xf8, 0x0b, 0x40, 0xea, 0xd5, 0x9f, 0xf8, 0xf4, 0x09, - 0x7a, 0x90, 0x67, 0xe0, - 0xac, 0x49, 0xa6, 0x74, 0x71, 0x5b, 0x6e, 0x4d, 0x59, 0x74, 0xbf, 0x0d, - 0xbe, 0xd0, 0x2d, 0x21, - 0x6e, 0x75, 0x52, 0xfb, 0xe5, 0x19, 0xa7, 0x6d, 0x15, 0xfb, 0x04, 0x2e, - 0x02, 0xa5, 0xee, 0xc6, - 0xa1, 0xac, 0x3f, 0x12, 0x5d, 0x98, 0x40, 0x9f, 0x60, 0x12, 0xe9, 0x29, - 0x95, 0xd5, 0x72, 0x27, - 0x81, 0x9b, 0x7e, 0x24, 0xba, 0xf3, 0x80, 0xfd, 0xc0, 0x24, 0x11, 0x52, - 0xe9, 0x69, 0xe4, 0x4e, - 0x3b, 0x79, 0x09, 0x06, 0x1f, 0xb2, 0x9a, 0xb3, 0xd7, 0x06, 0x23, 0x4e, - 0xf0, 0x6a, 0xd1, 0x4c, - 0x19, 0xc0, 0xf9, 0x0b, 0x7b, 0x22, 0x56, 0x7e, 0x7d, 0x0b, 0x35, 0xcf, - 0xfb, 0xad, 0x76, 0x77, - 0xe4, 0x5a, 0xa5, 0xf4, 0x35, 0xe7, 0x1d, 0x70, 0xf2, 0xf4, 0xb2, 0x95, - 0x59, 0x44, 0x06, 0x78, - 0x2c, 0x95, 0x61, 0xac, 0x6b, 0x34, 0xe8, 0x06, 0x9c, 0xac, 0xd9, 0x22, - 0x8d, 0x65, 0x30, 0x46, - 0xbd, 0xf4, 0xde, 0x93, 0x43, 0x13, 0x08, 0xca, 0x0c, 0x93, 0xb4, 0xac, - 0x5a, 0x52, 0x9f, 0xdd, - 0xb6, 0x40, 0x57, 0xb8, 0x29, 0x1e, 0x32, 0x2a, 0x2b, 0xb8, 0x13, 0x45, - 0xe8, 0xda, 0x93, 0x2d, - 0xd3, 0x81, 0x8c, 0x68, 0xa6, 0x0a, 0xaf, 0xa7, 0x19, 0x68, 0xb0, 0x82, - 0x58, 0xf7, 0x71, 0x1b, - 0xe7, 0x93, 0xad, 0x33, 0x16, 0x80, 0x17, 0x69, 0xfd, 0x33, 0x2b, 0x12, - 0xf4, 0xe3, 0xce, 0x03, - 0x9b, 0x92, 0x8f, 0xe8, 0xe2, 0xb6, 0xdc, 0x9a, 0xb2, 0xe8, 0xbd, 0x1a, - 0xbf, 0x63, 0x5a, 0x42, - 0x8c, 0x7e, 0xe7, 0x42, 0x96, 0x30, 0xae, 0x2f, 0xf9, 0x42, 0x47, 0x76, - 0xc2, 0x6c, 0xbb, 0x48, - 0x04, 0xdf, 0xa1, 0x76, 0xc5, 0x35, 0x18, 0x9d, 0x14, 0x76, 0x1f, 0x37, - 0xee, 0xf6, 0x62, 0xa4, - 0x86, 0x8d, 0xd7, 0x95, 0x5c, 0xa1, 0x92, 0x79, 0xdb, 0x95, 0x97, 0xe2, - 0xaa, 0x38, 0x4e, 0x91, - 0xef, 0xee, 0x2c, 0xdf, 0x5f, 0xea, 0x27, 0x90, 0xd5, 0xdf, 0x15, 0x7c, - 0xeb, 0xcc, 0x0a, 0x88, - 0x32, 0x43, 0x31, 0x16, 0xf6, 0x44, 0xac, 0xfc, 0xfa, 0x16, 0x6a, 0x5d, - 0x35, 0x99, 0xec, 0xee, - 0x0b, 0xb4, 0x89, 0x2b, 0x6a, 0x0d, 0x3a, 0xe0, 0x27, 0x2b, 0xa7, 0xe9, - 0xb2, 0x88, 0x0c, 0xf0, - 0x9e, 0x0a, 0x97, 0x62, 0x87, 0x1f, 0xc2, 0xb1, 0xa3, 0x62, 0xd5, 0x50, - 0x8b, 0x49, 0xc1, 0xcf, - 0x80, 0xdc, 0xc7, 0xd8, 0x1a, 0x6f, 0x86, 0x4b, 0xc5, 0xd8, 0x66, 0x2f, - 0x33, 0xb5, 0x1d, 0x67, - 0x1c, 0x58, 0xe1, 0x81, 0x1e, 0x8b, 0x48, 0x55, 0x6c, 0x81, 0x5d, 0x85, - 0xcf, 0x87, 0xed, 0xfa, - 0xb1, 0x56, 0xfe, 0x09, 0xcf, 0x4c, 0x20, 0xae, 0x30, 0x09, 0x95, 0xf5, - 0xab, 0x8b, 0x39, 0xf2, - 0xd4, 0x97, 0x25, 0xd9, 0x40, 0x58, 0xbd, 0x23, 0x02, 0xd9, 0x36, 0x32, - 0x1b, 0xa6, 0xdb, 0xc4, - 0x7a, 0x50, 0x32, 0x96, 0xb2, 0xf8, 0xdf, 0xc1, 0x51, 0x96, 0x67, 0xc5, - 0xd2, 0x0d, 0xc7, 0xb7, - 0x5b, 0x20, 0xca, 0x5c, 0xf5, 0x0f, 0x19, 0x15, 0xf4, 0x5c, 0xe8, 0xc3, - 0x74, 0x6d, 0xa8, 0xf7, - 0xa3, 0x22, 0x8e, 0x29, 0xde, 0x63, 0x4c, 0x30, 0x6a, 0x29, 0x07, 0xd3, - 0xe2, 0xae, 0x43, 0x75, - 0xf9, 0x45, 0xfd, 0x89, 0x8b, 0xf0, 0x53, 0x93, 0x9b, 0x89, 0x98, 0x6d, - 0x4c, 0x1f, 0x12, 0xab, - 0x33, 0x04, 0x88, 0xea, 0x56, 0xd8, 0xaa, 0x4a, 0xff, 0xea, 0x1d, 0x20, - 0xef, 0x45, 0x15, 0xc7, - 0x68, 0x24, 0x42, 0xb6, 0xa3, 0xd7, 0xb3, 0x5f, 0x0b, 0xb6, 0xf5, 0xe3, - 0x9b, 0x28, 0xbd, 0x30, - 0x96, 0x77, 0x16, 0x8e, 0xce, 0x75, 0xf2, 0x48, 0x8b, 0x8e, 0xeb, 0x3e, - 0x94, 0x66, 0x05, 0x44, - 0x46, 0x3f, 0x92, 0x21, 0x4b, 0x18, 0x57, 0xf6, 0x9d, 0x21, 0xc2, 0x3b, - 0x61, 0x36, 0xbc, 0x24, - 0x02, 0x8e, 0xb1, 0x3b, 0x83, 0xfb, 0x0c, 0xaf, 0x0a, 0x3b, 0xee, 0xfa, - 0x77, 0x7b, 0x31, 0x52, - 0xff, 0x14, 0xed, 0xc4, 0xcd, 0x3e, 0x47, 0xa1, 0x85, 0xc4, 0x69, 0xa0, - 0xd5, 0x92, 0x41, 0x5d, - 0x95, 0xbe, 0x1e, 0x49, 0xed, 0x12, 0xf8, 0x51, 0x84, 0x49, 0x72, 0xb9, - 0x39, 0xc1, 0xcd, 0x3f, - 0x64, 0x86, 0x62, 0x2c, 0x2f, 0x88, 0x9b, 0x3b, 0x37, 0x2c, 0xd4, 0xba, - 0x6a, 0xf1, 0x1b, 0x1f, - 0x40, 0x6e, 0x82, 0x6c, 0x0d, 0xd6, 0x43, 0xc4, 0x83, 0x6c, 0x33, 0xf6, - 0xf8, 0xbb, 0xef, 0xd2, - 0x41, 0x29, 0x3b, 0x90, 0xad, 0x4a, 0x45, 0x72, 0x86, 0x90, 0x44, 0x8b, - 0x22, 0x67, 0x16, 0xfb, - 0x16, 0xab, 0xd1, 0x56, 0xd4, 0x1a, 0x74, 0x03, 0x4e, 0x56, 0x8d, 0x11, - 0xa7, 0xd3, 0x18, 0x23, - 0x0e, 0x2c, 0x91, 0xa1, 0x0f, 0xa4, 0x24, 0xcb, 0x36, 0xa1, 0xcf, 0xa3, - 0x86, 0xa2, 0x97, 0x7d, - 0xb9, 0x2b, 0x7f, 0xe5, 0x86, 0x26, 0x10, 0x57, 0x18, 0xe5, 0xab, 0x9b, - 0xb4, 0xa4, 0xfd, 0x79, - 0xfd, 0x9a, 0x5c, 0xff, 0x4e, 0xc5, 0x4b, 0x0e, 0x8f, 0xff, 0x87, 0x5a, - 0xa2, 0xe9, 0x70, 0x0f, - 0x6f, 0x32, 0xeb, 0x07, 0x45, 0x85, 0xa1, 0xdb, 0x10, 0x07, 0x73, 0x53, - 0xd8, 0x79, 0x17, 0xef, - 0x91, 0x61, 0xbf, 0x3f, 0x28, 0x27, 0xe0, 0xcc, 0x90, 0x3f, 0x6d, 0x8e, - 0xd7, 0x37, 0xaf, 0x9b, - 0xa5, 0x73, 0x9e, 0x64, 0x98, 0xad, 0x58, 0x02, 0x74, 0x64, 0xf6, 0x1e, - 0x7b, 0x23, 0x10, 0x83, - 0xcf, 0xd9, 0x6d, 0xe9, 0xb8, 0x81, 0xe7, 0xf2, 0x75, 0xe9, 0xed, 0x07, - 0x97, 0x70, 0x9c, 0xe1, - 0x56, 0xc5, 0x53, 0x3a, 0xd9, 0xcc, 0x37, 0xc7, 0xcd, 0x3a, 0xbe, 0xe7, - 0x5f, 0x68, 0xf7, 0xf1, - 0xba, 0xe2, 0x77, 0x22, 0xa5, 0x41, 0x1a, 0x4e, 0x17, 0x22, 0x32, 0x1c, - 0x19, 0x03, 0x35, 0x02, - 0x61, 0x1e, 0x7a, 0xa6, 0x4a, 0x21, 0x85, 0x10, 0x26, 0xa6, 0xbc, 0xf0, - 0x5e, 0xdb, 0x80, 0x92, - 0x18, 0x87, 0x40, 0xf7, 0xdb, 0xbe, 0x50, 0xc8, 0x78, 0xf7, 0x42, 0xb2, - 0x21, 0x71, 0x8f, 0x5e, - 0x54, 0x4b, 0xe2, 0x01, 0x5a, 0x37, 0x3b, 0x68, 0xc7, 0x01, 0x50, 0x1d, - 0x28, 0x13, 0xc6, 0xa3, - 0x8b, 0x68, 0x4e, 0xf3, 0x70, 0x62, 0xbc, 0xab, 0xe2, 0xf3, 0xc1, 0xc6, - 0x81, 0x3d, 0x11, 0x97, - 0x3e, 0xe1, 0x11, 0x8c, 0x7a, 0x1b, 0x84, 0x98, 0xc6, 0x8c, 0x4b, 0x04, - 0xc4, 0x40, 0x4a, 0xc1, - 0x5a, 0x67, 0x73, 0xa0, 0x55, 0x93, 0x1f, 0xa3, 0xf1, 0xa0, 0x9f, 0xbe, - 0xae, 0xb1, 0x51, 0xde, - 0xce, 0x9e, 0xd4, 0x15, 0x18, 0x1d, 0xe1, 0x44, 0x70, 0x15, 0x9a, 0x7a, - 0x4d, 0xac, 0x65, 0xc8, - 0xf7, 0x69, 0x6c, 0x28, 0x84, 0x54, 0x77, 0x58, 0xad, 0x28, 0x57, 0xce, - 0xca, 0xbd, 0x85, 0xd6, - 0xd2, 0xc6, 0x35, 0x94, 0x06, 0x96, 0xa9, 0x11, 0x1c, 0x94, 0xc7, 0xff, - 0x82, 0x2b, 0x88, 0x32, - 0x82, 0x52, 0x76, 0xe3, 0x99, 0x94, 0x8a, 0xe4, 0xcf, 0xe3, 0x88, 0xd5, - 0x44, 0xce, 0x2c, 0x35, - 0xb3, 0xd8, 0x4f, 0x32, 0x4c, 0xb7, 0x2c, 0x01, 0x3a, 0x32, 0x7b, 0x0f, - 0xdc, 0xf0, 0x08, 0xa0, - 0xb4, 0xce, 0xe6, 0x83, 0xaa, 0xe5, 0x3e, 0x85, 0x21, 0x83, 0xfd, 0xbf, - 0x9f, 0xa1, 0xa2, 0x7f, - 0xd6, 0x19, 0x94, 0xe2, 0xc3, 0xa3, 0xb1, 0x8c, 0x08, 0xe2, 0xd8, 0xc8, - 0x6c, 0xdd, 0xea, 0x96, - 0xe1, 0xc2, 0xbd, 0x7e, 0x50, 0x4e, 0x03, 0x5b, 0xe3, 0x7e, 0xda, 0xdf, - 0x6d, 0x6e, 0x9d, 0xf5, - 0xc2, 0x3c, 0xf4, 0x8f, 0x94, 0x42, 0xc9, 0x20, 0x4c, 0x8f, 0xbb, 0x23, - 0xbc, 0x75, 0xc3, 0xe7, - 0x5d, 0x71, 0xda, 0x11, 0xb3, 0xc1, 0x0d, 0x27, 0xea, 0x11, 0x19, 0x0e, - 0xed, 0xe0, 0xfb, 0x01, - 0xfa, 0x8c, 0xf5, 0x4e, 0xa8, 0x97, 0x59, 0x8a, 0x94, 0x4e, 0x01, 0xea, - 0xe1, 0xb8, 0xda, 0xd0, - 0xa4, 0x34, 0x27, 0x98, 0x38, 0x31, 0x5e, 0xb4, 0x71, 0x98, 0x81, 0x63, - 0xa1, 0xff, 0xe9, 0xaa, - 0x1f, 0x91, 0xe9, 0x46, 0x3d, 0xec, 0x42, 0x4c, 0x63, 0x46, 0xc4, 0x02, - 0x62, 0x20, 0x25, 0x81, - 0x0c, 0xa2, 0x20, 0x9a, 0x8c, 0x5f, 0x28, 0x64, 0x3c, 0x9a, 0x21, 0x59, - 0xf1, 0xd9, 0xa6, 0x2f, - 0x01, 0x47, 0xb9, 0xfc, 0xa0, 0x9c, 0x06, 0xb6, 0x05, 0xfc, 0x77, 0x7d, - 0xda, 0xdc, 0xf9, 0x29, - 0x2d, 0xd2, 0xd8, 0x50, 0xcb, 0xa8, 0xee, 0xb0, 0x99, 0x50, 0xae, 0x5f, - 0x57, 0xb9, 0xc9, 0x6f, - 0x67, 0x4f, 0x6a, 0xeb, 0x0c, 0xef, 0x91, 0x22, 0x38, 0xeb, 0x4d, 0x3d, - 0xc7, 0x56, 0xd3, 0x64, - 0xe2, 0x0b, 0xb5, 0xb9, 0x73, 0x29, 0x09, 0x42, 0xec, 0xb9, 0x43, 0x58, - 0xc0, 0xc9, 0x55, 0x8e, - 0x09, 0x3a, 0x38, 0x10, 0xe9, 0xf6, 0x36, 0x4f, 0x2d, 0x10, 0x49, 0x13, - 0xc5, 0xf3, 0x3d, 0xa2, - 0x57, 0x82, 0xea, 0xc6, 0x79, 0x50, 0x31, 0x71, 0xc8, 0xc6, 0xc9, 0x9a, - 0x85, 0xb4, 0x0e, 0xd8, - 0x11, 0xbd, 0x78, 0xe7, 0x32, 0x48, 0x66, 0x87, 0x55, 0xe7, 0x0b, 0xa1, - 0xe4, 0x82, 0xb2, 0xfc, - 0xb7, 0x07, 0xee, 0x44, 0x89, 0x82, 0x34, 0x9c, 0x2e, 0x44, 0x64, 0x38, - 0x32, 0x06, 0x6a, 0x04, - 0xdf, 0x23, 0xac, 0xf2, 0x2a, 0x55, 0x87, 0xc3, 0x25, 0xf2, 0x91, 0xdb, - 0xa9, 0x2e, 0xd7, 0x34, - 0x6a, 0xaa, 0xf3, 0x8d, 0x20, 0x2c, 0xbf, 0xf0, 0x01, 0x8d, 0x1b, 0x19, - 0xec, 0x53, 0x8c, 0x62, - 0x93, 0xef, 0x0e, 0x04, 0xab, 0xdc, 0xec, 0x63, 0x9a, 0x04, 0x83, 0x74, - 0xa0, 0x4c, 0x9e, 0xc9, - 0x24, 0xe8, 0xe0, 0x40, 0x22, 0x5e, 0xd8, 0xff, 0xb4, 0x40, 0xe7, 0x4c, - 0x92, 0x4a, 0xf4, 0xcd, - 0x7f, 0xc8, 0x2a, 0x1c, 0xd7, 0x51, 0xc1, 0xea, 0x40, 0x1c, 0x0f, 0x8f, - 0xe6, 0x27, 0x5c, 0x3a, - 0x66, 0x08, 0xd3, 0x17, 0xac, 0x73, 0x97, 0x94, 0x3d, 0x17, 0x3a, 0x40, - 0x1d, 0x8a, 0x2a, 0x4d, - 0xfe, 0x53, 0x54, 0x38, 0x6d, 0xa2, 0x41, 0x17, 0x80, 0x38, 0x1e, 0xdd, - 0x0f, 0x4e, 0xb8, 0x74, - 0x07, 0x16, 0xa9, 0xb1, 0xe6, 0x52, 0x12, 0x84, 0x1b, 0xb1, 0x86, 0xb0, - 0x43, 0x51, 0xaa, 0xdf, - 0x44, 0xb1, 0x23, 0x1a, 0xc8, 0xe3, 0x5b, 0x59, 0x97, 0x1a, 0x2c, 0xc1, - 0x16, 0x4d, 0x8d, 0x76, - 0x3f, 0xa6, 0xa8, 0x70, 0xda, 0x87, 0x82, 0x2e, 0xc3, 0x70, 0x3c, 0x79, - 0x1e, 0x9c, 0xb3, 0xe8, - 0xf8, 0x02, 0x44, 0x75, 0x2b, 0x6c, 0x55, 0x25, 0x9e, 0x75, 0xef, 0x10, - 0x96, 0xc3, 0xeb, 0x82, - 0x06, 0x51, 0x10, 0x4d, 0x46, 0xce, 0x14, 0x32, 0x1e, 0x4d, 0xf1, 0xcd, - 0x99, 0x8d, 0x53, 0xf6, - 0xca, 0x41, 0x75, 0x63, 0xdd, 0x28, 0xf9, 0xd9, 0x64, 0x63, 0x85, 0x4d, - 0xa3, 0x5a, 0x07, 0x6c, - 0xad, 0x0e, 0x1f, 0x88, 0xd1, 0xc7, 0x68, 0xfb, 0x5c, 0x88, 0xc8, 0x70, - 0x64, 0x0c, 0xd4, 0x08, - 0x2b, 0x83, 0xc8, 0x1d, 0x8d, 0x66, 0xfa, 0x82, 0x87, 0x1d, 0x5f, 0x92, - 0xce, 0x34, 0x9a, 0x99, - 0xae, 0xc7, 0x17, 0x4f, 0xf2, 0xa0, 0x62, 0xe2, 0x53, 0x4f, 0x51, 0xf7, - 0xc9, 0xab, 0x1c, 0x73, - 0x22, 0xb9, 0xf0, 0x0d, 0x64, 0x90, 0xcc, 0xcd, 0xaa, 0x0d, 0x16, 0x81, - 0x0b, 0xc7, 0xa7, 0x3b, - 0x39, 0xf7, 0xb8, 0x3d, 0x9c, 0x49, 0x96, 0x1c, 0xdd, 0x3d, 0xcd, 0xb4, - 0x87, 0x11, 0xe0, 0x1e, - 0xde, 0x64, 0x15, 0x0e, 0x8a, 0xc9, 0x81, 0x75, 0x20, 0x0e, 0xe6, 0xa6, - 0x73, 0xf2, 0x2e, 0x1d, - 0x1e, 0xd6, 0x50, 0xba, 0x9d, 0x70, 0x44, 0xfa, 0x66, 0xba, 0xb3, 0x7f, - 0xb8, 0xfc, 0xdc, 0xa8, - 0xa8, 0x96, 0x07, 0x02, 0xb4, 0x6e, 0x76, 0xd0, 0x4d, 0x02, 0xa0, 0x3a, - 0x50, 0x26, 0x4f, 0x85, - 0x58, 0xe9, 0xc2, 0x9b, 0xd6, 0x68, 0x13, 0x0c, 0xfb, 0x9b, 0x71, 0x44, - 0xd9, 0xca, 0x60, 0x8c, - 0x88, 0xa1, 0x46, 0x34, 0x53, 0x05, 0xb6, 0xb2, 0xed, 0x34, 0x58, 0x41, - 0x2c, 0x9a, 0xd9, 0xec, - 0x9a, 0xd5, 0x36, 0x14, 0x42, 0x2a, 0xda, 0x2c, 0xb7, 0x14, 0xca, 0x67, - 0x65, 0xbf, 0xa3, 0x6b, - 0x69, 0x63, 0xfb, 0x4a, 0x03, 0x4b, 0xb5, 0xe9, 0x0e, 0x4a, 0x82, 0x9e, - 0x41, 0xf4, 0x44, 0x19, - 0x28, 0x4a, 0xc0, 0xda, 0xae, 0x01, 0xf0, 0x9b, 0x88, 0xda, 0xc6, 0x15, - 0x63, 0x93, 0x52, 0xe2, - 0x65, 0xc1, 0xdb, 0xd0, 0x8f, 0x14, 0x9d, 0x8d, 0x32, 0xd0, 0xa3, 0xc7, - 0xb0, 0x2d, 0xe2, 0x36, - 0xd5, 0xd0, 0x9c, 0x25, 0xe0, 0xc4, 0xbb, 0x95, 0x07, 0x25, 0x41, 0x4f, - 0xc1, 0x7a, 0x22, 0xed, - 0x7c, 0x01, 0x22, 0xdb, 0xf4, 0x36, 0xcb, 0xf3, 0x4f, 0xdb, 0x96, 0x08, - 0x4b, 0x80, 0x94, 0x41, - 0xbc, 0xb3, 0x67, 0x6f, 0xe3, 0x8f, 0x0e, 0x7c, 0x09, 0x6f, 0xc3, 0xd1, - 0x80, 0x8e, 0x66, 0xf4, - 0x38, 0xb0, 0x01, 0xc1, 0x3c, 0xd5, 0x90, 0xaa, 0xd8, 0xc1, 0xba, 0xc9, - 0x5d, 0xcd, 0x19, 0x37, - 0x4f, 0x05, 0xaa, 0x31, 0xa2, 0xee, 0x61, 0xb9, 0xb0, 0x31, 0x8b, 0x28, - 0xa4, 0xc5, 0x81, 0x86, - 0xe0, 0x85, 0x04, 0x82, 0xf0, 0xd2, 0x05, 0xed, 0xe6, 0x82, 0xad, 0xa2, - 0xb7, 0xb2, 0x64, 0xdc, - 0x27, 0x21, 0xe8, 0x87, 0x01, 0x39, 0xd2, 0xe6, 0xbb, 0x87, 0x7e, 0xcb, - 0x3f, 0xed, 0x3c, 0xb6, - 0x76, 0xf2, 0x12, 0x0c, 0x3e, 0xa7, 0xf7, 0xa5, 0x6d, 0x0c, 0x46, 0x9c, - 0x23, 0xd4, 0x61, 0x98, - 0x78, 0xde, 0x83, 0xad, 0x31, 0x03, 0xd3, 0x6e, 0x5b, 0xad, 0x89, 0x3f, - 0xa5, 0x76, 0xf6, 0xe5, - 0x89, 0xe6, 0xff, 0xc8, 0xf3, 0x99, 0xb0, 0x04, 0xe8, 0xc8, 0x2f, 0x3c, - 0xf6, 0x46, 0x20, 0xc5, - 0x8d, 0x39, 0x5e, 0xbe, 0x36, 0xac, 0xa8, 0x99, 0xfc, 0xbe, 0x30, 0x0b, - 0x18, 0xb0, 0x42, 0x61, - 0xaf, 0x80, 0xae, 0xb3, 0x52, 0x3c, 0x64, 0x54, 0x56, 0xb3, 0x26, 0x8a, - 0x13, 0x77, 0xe5, 0x5a, - 0x9f, 0x4d, 0x2e, 0x9e, 0x27, 0x83, 0xc4, 0x07, 0xa6, 0x9e, 0xa2, 0x2d, - 0x51, 0x95, 0x38, 0xe6, - 0x84, 0x03, 0x66, 0xae, 0xdf, 0x5a, 0x9e, 0xd6, 0xd1, 0xae, 0x79, 0x18, - 0xdd, 0x43, 0x7f, 0xc3, - 0xe6, 0xd4, 0x14, 0xcf, 0xb6, 0x1c, 0x11, 0xdf, 0xf8, 0xcf, 0x5c, 0x6f, - 0x2e, 0x3f, 0x37, 0x2a, - 0xf1, 0x38, 0x7c, 0x65, 0xc2, 0x9a, 0x63, 0x6a, 0xb3, 0x65, 0xa6, 0x03, - 0x53, 0x30, 0xd6, 0x20, - 0x63, 0x90, 0xcb, 0x9d, 0xc9, 0xda, 0x89, 0xbf, 0x2c, 0x9d, 0x52, 0x0a, - 0x29, 0xa0, 0xb1, 0xc0, - 0x51, 0xd3, 0xfa, 0x8b, 0x3f, 0x9e, 0x25, 0x43, 0xd6, 0x8b, 0x38, 0x57, - 0x1c, 0x39, 0x5d, 0x2e, - 0xc8, 0xcf, 0xc4, 0x58, 0x5e, 0xd3, 0xf5, 0x76, 0x6e, 0x58, 0x6b, 0xb7, - 0xd4, 0x21, 0x36, 0x3e, - 0x03, 0xc9, 0x08, 0xc7, 0x23, 0x67, 0x0a, 0x19, 0x0f, 0xc7, 0x99, 0x87, - 0xad, 0xa7, 0xc8, 0x7b, - 0xed, 0x60, 0x9d, 0xe4, 0xdc, 0x11, 0x2b, 0x3f, 0xdf, 0xe4, 0xfb, 0x86, - 0x9c, 0xb7, 0x3b, 0xda, - 0x70, 0xa3, 0x02, 0x41, 0x78, 0x69, 0xe3, 0x97, 0x73, 0x41, 0xb7, 0x51, - 0xba, 0x59, 0x32, 0x6e, - 0x3c, 0x6f, 0xa0, 0xb7, 0xf9, 0xe0, 0x88, 0x37, 0xcc, 0xb7, 0xa5, 0xfe, - 0xb3, 0x3b, 0x7b, 0x93, - 0x8e, 0xf0, 0x56, 0x79, 0x15, 0xcb, 0xa2, 0x80, 0xf3, 0x79, 0xa9, 0x8c, - 0xb5, 0x17, 0x8a, 0x1a, - 0xd9, 0x72, 0xbc, 0xbf, 0x6c, 0x9b, 0x93, 0xf1, 0x3b, 0xbf, 0x60, 0x16, - 0x30, 0xa3, 0x84, 0xc2, - 0x10, 0xfa, 0xc1, 0x1b, 0x92, 0xd4, 0x60, 0x31, 0x50, 0x1b, 0x7c, 0xdc, - 0x3e, 0x5e, 0x4b, 0xd5, - 0x1a, 0x09, 0xf1, 0xcc, 0x58, 0x45, 0x5c, 0x67, 0x72, 0xcc, 0xac, 0x48, - 0x56, 0x0a, 0xbe, 0x0c, - 0x9d, 0xc3, 0x9f, 0xa5, 0xa4, 0x78, 0xc8, 0xa8, 0xac, 0xa5, 0x4c, 0xd7, - 0x26, 0xee, 0x09, 0xb4, - 0xee, 0xa9, 0x95, 0x23, 0xff, 0x76, 0x21, 0x26, 0xd0, 0x23, 0x62, 0x01, - 0x31, 0x10, 0xf3, 0xa1, - 0xcb, 0x06, 0xcc, 0x9f, 0x7d, 0xb4, 0xff, 0x6f, 0x61, 0x9f, 0xf2, 0x30, - 0x79, 0x86, 0xfe, 0x45, - 0x97, 0x30, 0xaf, 0x72, 0x6e, 0xe9, 0xf4, 0xfe, 0x8e, 0x72, 0x9c, 0x43, - 0x4e, 0xba, 0xfc, 0x6d, - 0xc9, 0x88, 0x7d, 0xa4, 0xfe, 0x4f, 0xf3, 0xc0, 0x6b, 0xa4, 0x1c, 0xca, - 0x0e, 0xfd, 0xcf, 0x17, - 0x79, 0x99, 0x3a, 0x51, 0x91, 0x9f, 0xd5, 0xd8, 0x5e, 0x51, 0xfe, 0x42, - 0x7f, 0xaa, 0x0f, 0xcc, - 0xb2, 0x9f, 0xf6, 0xce, 0xec, 0x2b, 0x2a, 0xb7, 0x3f, 0xce, 0x0c, 0x72, - 0x06, 0x2c, 0xf1, 0x89, - 0x35, 0x55, 0x98, 0xa7, 0x10, 0x16, 0xbe, 0x78, 0xe1, 0xa7, 0xec, 0xed, - 0x76, 0xc8, 0x46, 0x31, - 0x6c, 0xfb, 0xe3, 0xc0, 0x66, 0xe2, 0xab, 0xc2, 0x1f, 0xc0, 0xea, 0xd4, - 0x75, 0xde, 0xdf, 0x94, - 0x9c, 0x84, 0x26, 0x59, 0x04, 0xe4, 0xce, 0x1e, 0xa9, 0x59, 0x3b, 0xaa, - 0xfc, 0x32, 0xf0, 0x9d, - 0x1b, 0x4e, 0x48, 0x30, 0xf8, 0xd9, 0x5a, 0xd1, 0x77, 0x30, 0xdb, 0x35, - 0x8c, 0xd6, 0x47, 0x25, - 0x05, 0x98, 0x18, 0x8a, 0x65, 0xa9, 0x1e, 0x2b, 0x11, 0x8a, 0x68, 0x4a, - 0x34, 0x2a, 0x9b, 0x8d, - 0x50, 0x94, 0x43, 0x77, 0x9f, 0x02, 0x23, 0xf5, 0xd3, 0x77, 0x4f, 0x2a, - 0xc6, 0xe5, 0xa4, 0x07, - 0xf0, 0x7f, 0xc5, 0x99, 0x62, 0x06, 0x65, 0xdc, 0xb6, 0x99, 0xd1, 0x7e, - 0x89, 0xec, 0x2f, 0x09, - 0xd1, 0x0f, 0x3d, 0x53, 0x25, 0xf1, 0xa3, 0x08, 0x13, 0x53, 0x5e, 0x78, - 0x2f, 0x8c, 0x40, 0x49, - 0x12, 0x74, 0x70, 0x20, 0x11, 0x2f, 0x6c, 0x9e, 0x5a, 0x20, 0x92, 0x26, - 0x49, 0x25, 0x7a, 0x87, - 0x87, 0xca, 0x6e, 0x69, 0xfc, 0x3d, 0x94, 0xcf, 0xde, 0x69, 0xe0, 0x9f, - 0x70, 0xe4, 0xb7, 0xb8, - 0x08, 0x7d, 0x81, 0xec, 0x49, 0x6a, 0x30, 0xf9, 0x28, 0xec, 0x3e, 0x6e, - 0x1f, 0x2f, 0xc4, 0x8b, - 0x59, 0xae, 0x7b, 0x67, 0x76, 0xf4, 0x15, 0xba, 0xfe, 0x67, 0x06, 0x39, - 0x03, 0x16, 0x99, 0xa5, - 0xfc, 0xdd, 0xe5, 0x03, 0xee, 0x59, 0x4d, 0xb8, 0x8a, 0x03, 0xf0, 0x27, - 0x78, 0x35, 0x89, 0x26, - 0x21, 0x70, 0xf8, 0xca, 0x47, 0xf7, 0xc6, 0xd4, 0xa5, 0xca, 0x8f, 0x06, - 0xa6, 0x60, 0x6f, 0x40, - 0x85, 0x44, 0xdf, 0x52, 0x7f, 0xc6, 0x98, 0x60, 0xd4, 0x52, 0x0e, 0x65, - 0x07, 0x9f, 0x86, 0xea, - 0x55, 0x0c, 0x5b, 0xfd, 0xfa, 0xab, 0x3d, 0xde, 0xc2, 0xfd, 0x27, 0x60, - 0xf2, 0xcf, 0x3f, 0x8a, - 0x4e, 0x42, 0x13, 0xcd, 0x02, 0x72, 0x67, 0x0f, 0xb5, 0xcd, 0xfc, 0x55, - 0x7e, 0x19, 0x78, 0xaf, - 0xec, 0x27, 0x24, 0x18, 0x7c, 0x8d, 0x2d, 0x89, 0xda, 0x18, 0x8c, 0xfb, - 0x46, 0x6b, 0xc2, 0xf3, - 0xfb, 0xcb, 0x4c, 0xb2, 0x08, 0x0b, 0x5f, 0x3c, 0x91, 0xb2, 0x76, 0x97, - 0x3b, 0x64, 0x23, 0xf9, - 0x36, 0x9c, 0x90, 0x60, 0x33, 0x71, 0xb4, 0x61, 0xee, 0x60, 0x75, 0x6a, - 0xdb, 0x6f, 0x8e, 0x4a, - 0x75, 0x3b, 0x1a, 0xcb, 0x1d, 0xc0, 0xfd, 0xbc, 0x62, 0xcb, 0xdf, 0x1b, - 0x8e, 0x73, 0xa9, 0xe3, - 0x37, 0xdb, 0x29, 0x9c, 0x93, 0xed, 0xb2, 0xd7, 0xeb, 0x9c, 0x02, 0x17, - 0x01, 0xb3, 0x77, 0x63, - 0x5c, 0x36, 0x63, 0xed, 0x13, 0x5d, 0x0b, 0x91, 0xef, 0xed, 0x6e, 0x73, - 0x37, 0x3c, 0x02, 0x28, - 0xf6, 0x2e, 0xd5, 0xd4, 0x24, 0xc8, 0x71, 0xee, 0xa8, 0xd4, 0x20, 0xb3, - 0x10, 0x61, 0x7c, 0xff, - 0xf4, 0xa0, 0x64, 0xef, 0xa7, 0x33, 0x7d, 0x41, 0xa2, 0xef, 0xce, 0x49, - 0x67, 0x1a, 0x4d, 0xad, - 0xcd, 0x57, 0xdc, 0xd2, 0x3b, 0x7a, 0xeb, 0x5d, 0x7f, 0xd2, 0x03, 0xfd, - 0xe0, 0x0b, 0xad, 0xb3, - 0x6b, 0xed, 0x4a, 0x71, 0x80, 0xb0, 0xb9, 0x46, 0x04, 0x71, 0x6c, 0x64, - 0x36, 0x8f, 0x75, 0x4b, - 0xa2, 0x65, 0x37, 0xd5, 0x7e, 0xff, 0x4a, 0x86, 0x6f, 0xd5, 0x70, 0xae, - 0x38, 0x72, 0xba, 0x5c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0xaa, 0x18, 0xb6, 0x39, 0x37, 0x95, 0x7a, 0x7f, 0x47, 0x39, 0x4e, 0xc0, - 0x27, 0x5d, 0x7e, 0xd7, - 0x71, 0xe4, 0xbb, 0xbd, 0xd8, 0xf5, 0xe5, 0x21, 0x76, 0xbd, 0xc0, 0x2c, - 0x60, 0x85, 0xcb, 0x47, - 0x42, 0xe0, 0x33, 0x57, 0x8e, 0x2d, 0x4f, 0x6b, 0x89, 0x57, 0xdd, 0x0c, - 0x8f, 0xc0, 0xde, 0x80, - }, - { /* 4 */ - 0xc2, 0x36, 0xbf, 0xb8, 0xb8, 0xed, 0xf8, 0xa5, 0xff, 0x6a, 0x2d, 0xa5, - 0x4a, 0x84, 0x52, 0x5c, - 0x95, 0x8b, 0xd1, 0x9a, 0x9a, 0x0a, 0x38, 0x2d, 0x73, 0xc6, 0x2f, 0x2d, - 0x97, 0x24, 0xdb, 0x4d, - 0xa6, 0x30, 0x54, 0xed, 0xed, 0x72, 0xdb, 0x32, 0x62, 0xa7, 0x28, 0x32, - 0xbc, 0x57, 0x26, 0x97, - 0x27, 0xcf, 0x12, 0x53, 0x53, 0x58, 0x5c, 0x8f, 0x1d, 0x07, 0x49, 0x8f, - 0xe1, 0x72, 0x4a, 0xc8, - 0xe0, 0xe4, 0xf8, 0xe2, 0xe2, 0xbd, 0xfb, 0x0e, 0xe1, 0x95, 0x96, 0x0e, - 0x78, 0x67, 0x45, 0x71, - 0x86, 0x51, 0x31, 0x0c, 0x0c, 0x4d, 0xfe, 0x30, 0xc3, 0x57, 0x98, 0x30, - 0x2e, 0x81, 0x7c, 0x06, - 0x06, 0x16, 0x66, 0x0e, 0x0e, 0xb1, 0x6a, 0x38, 0x02, 0x11, 0x1d, 0x38, - 0x23, 0x5f, 0xd7, 0x07, - 0x5d, 0x87, 0xc4, 0x30, 0x30, 0xf7, 0x7e, 0xc0, 0x8a, 0x9f, 0x25, 0xc0, - 0xb8, 0x41, 0x33, 0x18, - 0x09, 0x31, 0x99, 0x15, 0x15, 0xa9, 0x8b, 0x54, 0x07, 0xda, 0xc8, 0x54, - 0x95, 0x2f, 0x30, 0xeb, - 0x78, 0xfb, 0xf4, 0xd8, 0xd8, 0xc0, 0x04, 0xe6, 0x28, 0x97, 0x67, 0xe6, - 0xf9, 0x06, 0x34, 0x6c, - 0xf4, 0x90, 0x6f, 0xc6, 0xc6, 0x9d, 0x44, 0x9e, 0xed, 0xf3, 0xd8, 0x9e, - 0xb2, 0x66, 0xf2, 0x63, - 0x16, 0xc7, 0xb5, 0x9f, 0x9f, 0x4f, 0x99, 0x39, 0xb3, 0x69, 0x45, 0x39, - 0x6a, 0x34, 0xfa, 0xae, - 0x19, 0xe0, 0x4a, 0x84, 0x84, 0x57, 0x78, 0x55, 0xb6, 0xa2, 0x90, 0x55, - 0xdc, 0x44, 0x1d, 0x42, - 0xec, 0xc8, 0x34, 0xfe, 0xfe, 0x1c, 0x2f, 0x7e, 0xe5, 0xb7, 0xac, 0x7e, - 0x3e, 0xd9, 0x28, 0x7f, - 0x69, 0x92, 0x36, 0xf5, 0xf5, 0xe8, 0xe4, 0x52, 0x27, 0x09, 0xdb, 0x52, - 0xe0, 0x96, 0xde, 0x9b, - 0x04, 0xa5, 0x44, 0xb5, 0xb5, 0xde, 0x4c, 0x91, 0xbd, 0x1e, 0x16, 0x91, - 0x83, 0x6a, 0x9a, 0xbb, - 0x8f, 0x60, 0xa8, 0x19, 0x19, 0xe4, 0x75, 0x64, 0xc4, 0x8d, 0x50, 0x64, - 0xbb, 0xae, 0x4c, 0xed, - 0x30, 0xb0, 0xb6, 0x70, 0x70, 0xc1, 0xd6, 0x03, 0x10, 0x88, 0xe8, 0x03, - 0xdb, 0xbd, 0x77, 0x38, - 0x39, 0x81, 0x2f, 0x65, 0x65, 0x68, 0x5d, 0x57, 0x17, 0x52, 0x20, 0x57, - 0x4e, 0x92, 0x47, 0xd3, - 0xe9, 0xd5, 0x61, 0xf7, 0xf7, 0x14, 0x70, 0x5a, 0xe6, 0x4f, 0x5e, 0x5a, - 0xed, 0x48, 0x75, 0x9a, - 0x03, 0x0b, 0x33, 0x07, 0x07, 0xb9, 0x35, 0x1c, 0x01, 0xe9, 0xef, 0x1c, - 0xf0, 0xce, 0x8a, 0xe2, - 0xcf, 0xa2, 0x62, 0x18, 0x18, 0x9a, 0x3f, 0x60, 0x45, 0xae, 0xf3, 0x60, - 0x5c, 0xc1, 0xf8, 0x0c, - 0x70, 0x72, 0x7c, 0x71, 0x71, 0xbf, 0x9c, 0x07, 0x91, 0xab, 0x4b, 0x07, - 0x3c, 0xd2, 0xc3, 0xd9, - 0x43, 0xc9, 0xf9, 0x06, 0x06, 0xc7, 0x7f, 0x18, 0x80, 0xca, 0x4c, 0x18, - 0x17, 0xa1, 0x3e, 0x03, - 0x55, 0x0e, 0x4c, 0x99, 0x99, 0x88, 0xe6, 0x21, 0x33, 0xa3, 0x09, 0x21, - 0x7d, 0x95, 0xc4, 0xad, - 0x2c, 0x4d, 0xa9, 0xfd, 0xfd, 0x9e, 0xf1, 0x72, 0xa5, 0xd2, 0x8a, 0x72, - 0xd4, 0x68, 0x37, 0x9f, - 0x12, 0x62, 0xf1, 0x2a, 0x2a, 0x91, 0xd5, 0xa8, 0x0e, 0x77, 0x53, 0xa8, - 0xe9, 0x5e, 0x60, 0x15, - 0x8e, 0xd8, 0xb9, 0xa5, 0xa5, 0x32, 0x66, 0xd1, 0x7a, 0x6b, 0xb4, 0xd1, - 0xeb, 0x55, 0x8b, 0xb3, - 0xd5, 0x49, 0x1b, 0x9b, 0x9b, 0x74, 0x72, 0x29, 0xf2, 0xe5, 0x8c, 0x29, - 0x70, 0x4b, 0x6f, 0xac, - 0x3d, 0x24, 0x6b, 0xd0, 0xd0, 0xb6, 0x11, 0xc6, 0xaa, 0x4c, 0x36, 0xc6, - 0xcd, 0xf8, 0xdd, 0x68, - 0xd2, 0xe7, 0x6c, 0x29, 0x29, 0x13, 0x0b, 0xa4, 0x4e, 0x12, 0x75, 0xa4, - 0x03, 0xef, 0x7f, 0xf5, - 0x76, 0x64, 0x1a, 0x7f, 0x7f, 0x0e, 0xf6, 0x3f, 0x93, 0xba, 0x56, 0x3f, - 0x1f, 0x8d, 0x14, 0xde, - 0x18, 0x58, 0x5b, 0x38, 0x38, 0x81, 0x6b, 0xe0, 0x08, 0x44, 0x74, 0xe0, - 0x8c, 0xbf, 0xda, 0x1c, - 0x35, 0xad, 0xe3, 0x79, 0x79, 0xc9, 0x89, 0x27, 0x13, 0x70, 0x1a, 0x27, - 0x08, 0x2c, 0x2a, 0xdd, - 0x07, 0xae, 0x77, 0xb2, 0xb2, 0x67, 0x79, 0x8d, 0xbc, 0xf7, 0xf9, 0x8d, - 0x73, 0xa4, 0x10, 0x59, - 0xc0, 0x85, 0x9d, 0x03, 0x03, 0x82, 0xde, 0x0c, 0x40, 0x65, 0x26, 0x0c, - 0xea, 0xb1, 0x1f, 0xe0, - 0xf7, 0x9b, 0x5c, 0xc1, 0xc1, 0x24, 0x71, 0x82, 0xec, 0x1a, 0x37, 0x82, - 0x42, 0xa8, 0x78, 0x81, - 0xb8, 0x7e, 0x69, 0xdb, 0xdb, 0x42, 0xda, 0xea, 0x68, 0xf2, 0x41, 0xea, - 0x13, 0xb7, 0x2b, 0x8c, - 0x72, 0xc1, 0x5e, 0xca, 0xca, 0xd0, 0xba, 0xae, 0x2e, 0xa4, 0x40, 0xae, - 0x9c, 0xe7, 0x8e, 0x65, - 0x11, 0x69, 0xc2, 0x2d, 0x2d, 0x28, 0xe0, 0xb4, 0x0f, 0x9e, 0xbc, 0xb4, - 0x19, 0x90, 0xea, 0xf7, - 0xb4, 0x52, 0xa5, 0xc7, 0xc7, 0xe3, 0x0e, 0x9a, 0x6c, 0xd0, 0x7b, 0x9a, - 0x55, 0x09, 0x46, 0x82, - 0xff, 0x12, 0xd4, 0x68, 0x68, 0x5b, 0xe9, 0x63, 0x55, 0x26, 0x1b, 0x63, - 0x87, 0x7c, 0x8f, 0x34, - 0x1a, 0xeb, 0x79, 0x83, 0x83, 0xee, 0x4d, 0x49, 0xb7, 0x4b, 0x7f, 0x49, - 0x2c, 0x8a, 0x97, 0xa0, - 0x48, 0x4b, 0x42, 0xa8, 0xa8, 0x01, 0xd2, 0xe5, 0x38, 0x1f, 0x8f, 0xe5, - 0x22, 0xbb, 0x43, 0x54, - 0xaa, 0x1c, 0x98, 0xf1, 0xf1, 0xd3, 0x0f, 0x42, 0x66, 0x85, 0x12, 0x42, - 0xfa, 0xe9, 0x4b, 0x99, - 0x58, 0x9a, 0x91, 0x39, 0x39, 0xff, 0x21, 0xe4, 0x89, 0x67, 0xd7, 0xe4, - 0x6b, 0xd0, 0x6e, 0xfd, - 0x93, 0x9d, 0xb7, 0x94, 0x94, 0xbb, 0x52, 0x15, 0x71, 0xd7, 0x32, 0x15, - 0xb4, 0x7b, 0x0c, 0x4a, - 0x21, 0xd9, 0x74, 0x5d, 0x5d, 0xe9, 0x36, 0xb7, 0x1f, 0x16, 0x54, 0xb7, - 0xc2, 0x2d, 0x9d, 0xcf, - 0xdd, 0xc0, 0x93, 0x32, 0x32, 0x0b, 0xea, 0xc8, 0x4b, 0xd9, 0xa0, 0xc8, - 0xb5, 0x9f, 0x98, 0x19, - 0x60, 0xa3, 0xaf, 0xe0, 0xe0, 0x41, 0x6f, 0x06, 0x20, 0xd3, 0x13, 0x06, - 0x75, 0xb9, 0xee, 0x70, - 0x0c, 0x2c, 0xcc, 0x1c, 0x1c, 0xa1, 0xd4, 0x70, 0x04, 0x22, 0x3a, 0x70, - 0x46, 0xbe, 0x6d, 0x0e, - 0xc4, 0x20, 0xd9, 0xb6, 0xb6, 0x5c, 0x92, 0x9d, 0xfd, 0x7b, 0x30, 0x9d, - 0x69, 0xdb, 0x85, 0x5b, - 0x9a, 0xac, 0x2e, 0x81, 0x81, 0x12, 0xd9, 0x41, 0x76, 0x0d, 0xfa, 0x41, - 0x21, 0x54, 0x3c, 0xa1, - 0x5c, 0x3f, 0xd5, 0x8c, 0x8c, 0x21, 0x6d, 0x75, 0x34, 0x79, 0xc1, 0x75, - 0xe8, 0xba, 0xf4, 0x46, - 0x53, 0x18, 0x2a, 0x97, 0x97, 0x39, 0x8c, 0x19, 0x31, 0xb2, 0x14, 0x19, - 0x5e, 0xca, 0x13, 0xaa, - 0xcd, 0x11, 0x40, 0xa3, 0xa3, 0xf5, 0x19, 0xc9, 0xfa, 0xa1, 0xf8, 0xc9, - 0xfc, 0xf4, 0xb5, 0xb0, - 0x32, 0x03, 0x94, 0xcb, 0xcb, 0xae, 0xf0, 0xaa, 0xaf, 0x87, 0xe3, 0xaa, - 0x7b, 0x88, 0x3a, 0x84, - 0x1b, 0x53, 0x68, 0x3f, 0x3f, 0x38, 0x5e, 0xfc, 0x09, 0xad, 0x9b, 0xfc, - 0x7c, 0x71, 0x50, 0xfe, - 0x5a, 0x29, 0xb3, 0x82, 0x82, 0x90, 0x07, 0x4d, 0x36, 0x68, 0xdc, 0x4d, - 0xcb, 0xe5, 0x23, 0x41, - 0xa1, 0x9e, 0x23, 0x5f, 0x5f, 0x15, 0xa2, 0xbf, 0xde, 0x50, 0xd1, 0xbf, - 0xcf, 0xf3, 0x36, 0xce, - 0xe5, 0xf9, 0xad, 0xeb, 0xeb, 0xb5, 0xa4, 0x2a, 0xe2, 0x6d, 0x64, 0x2a, - 0xab, 0xf6, 0x18, 0x94, - 0x3c, 0x9c, 0x7a, 0x6c, 0x6c, 0x60, 0x02, 0x73, 0x14, 0xaa, 0xd2, 0x73, - 0x9d, 0x03, 0x1a, 0x36, - 0x97, 0x38, 0xf3, 0x21, 0x21, 0x65, 0x1e, 0x84, 0xcc, 0xc9, 0x24, 0x84, - 0x37, 0x11, 0x96, 0xf1, - 0xce, 0x1a, 0x73, 0xa4, 0xa4, 0x4c, 0x2c, 0xd5, 0xfb, 0x48, 0x17, 0xd5, - 0x0c, 0x3a, 0x3f, 0x52, - 0x6d, 0x37, 0x72, 0x40, 0x40, 0x36, 0xa8, 0xc3, 0x9a, 0x17, 0xcd, 0xc3, - 0x63, 0xfc, 0x44, 0x20, - 0x62, 0x10, 0x8d, 0x5b, 0x5b, 0x2e, 0x49, 0xaf, 0x9f, 0xdc, 0x18, 0xaf, - 0xd5, 0x8c, 0xa3, 0xcc, - 0xf5, 0x28, 0x7e, 0x7a, 0x7a, 0x4b, 0x57, 0x2b, 0x53, 0x15, 0x3c, 0x2b, - 0xe2, 0x9d, 0x35, 0x3d, - 0xb7, 0x59, 0x96, 0xc0, 0xc0, 0x5a, 0x3b, 0x86, 0x6d, 0x39, 0x94, 0x86, - 0xa5, 0xc7, 0xcc, 0x60, - 0xe2, 0x57, 0xda, 0x59, 0x59, 0xd2, 0xdd, 0xa7, 0x5e, 0x9a, 0x9d, 0xa7, - 0xd8, 0x52, 0x08, 0xcd, - 0x41, 0x7a, 0xdb, 0xbd, 0xbd, 0xa8, 0x59, 0xb1, 0x3f, 0xc5, 0x47, 0xb1, - 0xb7, 0x94, 0x73, 0xbf, - 0x71, 0xca, 0x6d, 0xcd, 0xcd, 0x69, 0x8f, 0xb2, 0x2f, 0x4d, 0xaf, 0xb2, - 0x6c, 0x29, 0x04, 0x87, - 0xf9, 0x04, 0xb2, 0x66, 0x66, 0xea, 0x83, 0x5b, 0x57, 0x37, 0x06, 0x5b, - 0xa4, 0x23, 0x58, 0x33, - 0xea, 0xde, 0x52, 0xf0, 0xf0, 0xad, 0x45, 0x46, 0xe7, 0xa6, 0xb1, 0x46, - 0x1d, 0x86, 0xff, 0x78, - 0xae, 0xb9, 0xdc, 0x44, 0x44, 0x0d, 0x43, 0xd3, 0xdb, 0x9b, 0x04, 0xd3, - 0x79, 0x83, 0xd1, 0x22, - 0xe4, 0x41, 0xbc, 0x57, 0x57, 0x63, 0xb7, 0x9f, 0x5c, 0x8b, 0x80, 0x9f, - 0xfb, 0x0d, 0xdf, 0xca, - 0x0b, 0x82, 0xbb, 0xae, 0xae, 0xc6, 0xad, 0xfd, 0xb8, 0xd5, 0xc3, 0xfd, - 0x35, 0x1a, 0x7d, 0x57, - 0xde, 0xcb, 0xa0, 0x35, 0x35, 0xb2, 0xdf, 0xd4, 0x4a, 0x30, 0x4f, 0xd4, - 0x45, 0x51, 0x12, 0xfb, - 0xf0, 0x35, 0x2b, 0x73, 0x73, 0x43, 0x08, 0x0f, 0x50, 0xed, 0xce, 0x0f, - 0x31, 0x0c, 0x68, 0xd8, - 0xd4, 0xf1, 0x0a, 0x27, 0x27, 0xa2, 0x61, 0x9c, 0x4c, 0x03, 0x68, 0x9c, - 0x20, 0xb0, 0xa8, 0xf2, - 0xb5, 0xea, 0xb4, 0x7b, 0x7b, 0x35, 0x1d, 0x2f, 0xd2, 0x36, 0x9f, 0x2f, - 0x05, 0xf2, 0x81, 0xdc, - 0xa4, 0x83, 0x76, 0x56, 0x56, 0x1d, 0xfd, 0x9b, 0xdd, 0xa8, 0x23, 0x9b, - 0x1c, 0x62, 0x6b, 0x2b, - 0xba, 0xcd, 0x4b, 0x60, 0x60, 0x2d, 0xfc, 0x43, 0xd7, 0xfd, 0x4a, 0x43, - 0xb3, 0x82, 0x66, 0x30, - 0xe8, 0x6d, 0x70, 0x4b, 0x4b, 0xc2, 0x63, 0xef, 0x58, 0xa9, 0xba, 0xef, - 0xbd, 0xb3, 0xb2, 0xc4, - 0x0e, 0x9f, 0xee, 0xa7, 0xa7, 0xce, 0xf2, 0xd9, 0xbb, 0x2d, 0x31, 0xd9, - 0xe6, 0x8b, 0x20, 0xb2, - 0x9c, 0xba, 0x48, 0x8f, 0x8f, 0xa3, 0xb3, 0x79, 0x74, 0x1c, 0xe7, 0x79, - 0x02, 0x0b, 0xeb, 0xa6, - 0x31, 0x08, 0xa7, 0xcc, 0xcc, 0x17, 0xc5, 0xb6, 0xae, 0x6e, 0x0c, 0xb6, - 0x8b, 0x46, 0xb0, 0x66, - 0x79, 0x43, 0xe5, 0x64, 0x64, 0x16, 0x17, 0x53, 0x96, 0x71, 0x83, 0x53, - 0xa9, 0xfd, 0xf3, 0x32, - 0xfc, 0x19, 0xe7, 0x6f, 0x6f, 0xe2, 0xdc, 0x7f, 0x54, 0xcf, 0xf4, 0x7f, - 0x77, 0xb2, 0x05, 0xd6, - 0x4d, 0x56, 0x17, 0xa1, 0xa1, 0x09, 0x8d, 0xc1, 0x3b, 0xe7, 0x7d, 0xc1, - 0xf1, 0x2a, 0x1e, 0xb1, - 0xdb, 0xd6, 0xf5, 0x3c, 0x3c, 0xba, 0x80, 0xf0, 0x49, 0xc8, 0xbd, 0xf0, - 0x96, 0xc0, 0x4f, 0x1e, - 0x75, 0x6f, 0x29, 0x78, 0x78, 0xb7, 0xc3, 0x23, 0x92, 0x53, 0xb9, 0x23, - 0xef, 0x43, 0x9e, 0x3c, - 0x68, 0x2a, 0x27, 0x49, 0x49, 0x3e, 0xf7, 0xe7, 0x99, 0xef, 0x3f, 0xe7, - 0xb0, 0x6d, 0x19, 0xc5, - 0x15, 0xcc, 0x86, 0x98, 0x98, 0xf6, 0xac, 0x25, 0xb2, 0x80, 0xaa, 0x25, - 0x9a, 0xfa, 0x70, 0x4c, - 0xa9, 0x17, 0xab, 0xf6, 0xf6, 0x6a, 0x3a, 0x5e, 0x67, 0x6c, 0xfd, 0x5e, - 0x0a, 0x27, 0xc1, 0x7b, - 0x01, 0xb8, 0x11, 0xbc, 0xbc, 0xd6, 0x13, 0xb5, 0xbe, 0xe6, 0xe4, 0xb5, - 0x50, 0xfb, 0xc7, 0x5e, - 0x23, 0x6a, 0x56, 0xe6, 0xe6, 0x86, 0x10, 0x1e, 0xa0, 0x19, 0x5f, 0x1e, - 0x62, 0x18, 0xd0, 0x73, - 0xb2, 0x44, 0xc3, 0xc9, 0xc9, 0x52, 0x64, 0xa2, 0x6e, 0xc1, 0x66, 0xa2, - 0x76, 0x56, 0x91, 0x85, - 0x6e, 0x3c, 0x41, 0x47, 0x47, 0x8f, 0x9d, 0xdf, 0x9b, 0xfe, 0x22, 0xdf, - 0x93, 0x32, 0xce, 0xc2, - 0xf2, 0x86, 0x09, 0xc8, 0xc8, 0x2c, 0x2e, 0xa6, 0xef, 0xe2, 0xc5, 0xa6, - 0x91, 0x39, 0x25, 0x64, - 0x3b, 0x32, 0x0d, 0xde, 0xde, 0x07, 0x7b, 0xfe, 0xa8, 0x5d, 0x2b, 0xfe, - 0xee, 0xa7, 0x0a, 0x6f, - 0x52, 0xa0, 0x3b, 0x2b, 0x2b, 0xef, 0x9f, 0xac, 0x8f, 0x54, 0xf0, 0xac, - 0x0e, 0x31, 0xd4, 0xf4, - 0x65, 0xbe, 0xfa, 0xe9, 0xe9, 0x49, 0x30, 0x22, 0x23, 0x2b, 0xe1, 0x22, - 0xa6, 0x28, 0xb3, 0x95, - 0x4b, 0x40, 0x71, 0xaf, 0xaf, 0xb8, 0xe7, 0xf9, 0x39, 0xf6, 0x60, 0xf9, - 0xd2, 0x75, 0xc9, 0xb6, - 0x38, 0x39, 0x3e, 0xd9, 0xd9, 0xbe, 0x4e, 0xe2, 0xa9, 0xb4, 0xc4, 0xe2, - 0x1e, 0x69, 0x80, 0x8d, - 0x2a, 0x5b, 0xcf, 0xf3, 0xf3, 0x2f, 0x9b, 0x4a, 0xa7, 0xc3, 0x97, 0x4a, - 0xf7, 0x37, 0xe0, 0x98, - 0x91, 0x2e, 0x95, 0x2f, 0x2f, 0xd4, 0x74, 0xbc, 0xce, 0xd8, 0x39, 0xbc, - 0x14, 0x4e, 0x41, 0xf6, - 0xd6, 0x42, 0x28, 0x9c, 0x9c, 0xcd, 0x47, 0x35, 0xf3, 0x0c, 0x63, 0x35, - 0x80, 0x85, 0xe5, 0x4e, - 0xfd, 0xa1, 0xf6, 0xd3, 0xd3, 0x34, 0xcf, 0xca, 0xea, 0x29, 0x10, 0xca, - 0x27, 0x49, 0xc2, 0x88, - 0xf8, 0xbc, 0xa3, 0xda, 0xda, 0x3c, 0x90, 0xee, 0xe9, 0xd1, 0xe2, 0xee, - 0xf4, 0xd8, 0x9f, 0x6d, - 0x8c, 0x6b, 0x9b, 0x1e, 0x1e, 0x5d, 0x40, 0x78, 0xc5, 0x64, 0xbf, 0x78, - 0x4b, 0x60, 0xc6, 0x0f, - 0x50, 0x13, 0x19, 0x90, 0x90, 0x80, 0xb9, 0x05, 0x30, 0x5b, 0xfb, 0x05, - 0xae, 0x04, 0x99, 0x48, - 0x7f, 0x55, 0x83, 0x6a, 0x6a, 0xa7, 0x7d, 0x6b, 0x94, 0x60, 0x9e, 0x6b, - 0x8a, 0xa2, 0x24, 0x35, - 0x59, 0x22, 0x80, 0x85, 0x85, 0x29, 0x32, 0x51, 0x37, 0x81, 0x33, 0x51, - 0x3b, 0x2b, 0xa9, 0xa3, - 0x08, 0x89, 0x88, 0xa9, 0xa9, 0x7f, 0x98, 0xe1, 0xb9, 0x3c, 0x2c, 0xe1, - 0xc5, 0xd4, 0xf7, 0xb5, - 0xd9, 0x65, 0xd7, 0x87, 0x87, 0xd5, 0xa6, 0x59, 0xf6, 0xc7, 0xb6, 0x59, - 0x36, 0xf5, 0x02, 0xa2, - 0xa2, 0x95, 0x10, 0x58, 0x58, 0xac, 0x97, 0xa3, 0xdf, 0xb9, 0x3e, 0xa3, - 0x3f, 0x3d, 0xbc, 0x2c, - 0xfb, 0xb7, 0x90, 0xdd, 0xdd, 0x85, 0xa5, 0xf2, 0xe8, 0x38, 0x0d, 0xf2, - 0x04, 0x16, 0x15, 0x8f, - 0x1c, 0xfd, 0x1f, 0x8d, 0x8d, 0x5f, 0x27, 0x71, 0xb5, 0x5a, 0x62, 0x71, - 0x0f, 0xd5, 0x40, 0xa7, - 0x29, 0x50, 0xfc, 0xf4, 0xf4, 0x96, 0xae, 0x56, 0xa6, 0x2a, 0x78, 0x56, - 0x07, 0xf9, 0x6a, 0x7a, - 0xd3, 0x5f, 0x7d, 0x95, 0x95, 0xc5, 0x18, 0x11, 0xf0, 0xf4, 0x91, 0x11, - 0x53, 0x14, 0xb8, 0xab, - 0x6f, 0x84, 0x50, 0xfb, 0xfb, 0x59, 0x8e, 0x6a, 0x25, 0x18, 0xc6, 0x6a, - 0xc3, 0xc9, 0x09, 0x9c, - 0x47, 0x6c, 0xbd, 0xb3, 0xb3, 0x19, 0x33, 0x89, 0x3d, 0xd4, 0x5a, 0x89, - 0x94, 0xcb, 0xa4, 0xb8, - 0x54, 0xb6, 0x5d, 0x25, 0x25, 0x5e, 0xf5, 0x94, 0x8d, 0x45, 0xed, 0x94, - 0x2d, 0x6e, 0x03, 0xf3, - 0x9f, 0xb1, 0x7b, 0x88, 0x88, 0x1a, 0x86, 0x65, 0x75, 0xf5, 0x08, 0x65, - 0xf2, 0xc5, 0x61, 0x44, - 0x17, 0x7f, 0xa4, 0x23, 0x23, 0x99, 0x8a, 0x8c, 0x0d, 0x8f, 0xa1, 0x8c, - 0x3a, 0xcf, 0x3d, 0xf0, - 0xe1, 0x5c, 0xe9, 0x5e, 0x5e, 0x6b, 0xe8, 0xbb, 0x5f, 0x73, 0x72, 0xbb, - 0x28, 0x9c, 0x82, 0x2f, - 0x7c, 0x5e, 0xb0, 0x6d, 0x6d, 0x1e, 0x48, 0x77, 0x95, 0x89, 0x71, 0x77, - 0x7a, 0x6c, 0xae, 0xd7, - 0x46, 0xd4, 0xac, 0x0f, 0x0f, 0xcf, 0x20, 0x3c, 0x83, 0x32, 0xbe, 0x3c, - 0xc4, 0x30, 0x63, 0xe6, - 0xbc, 0xdb, 0x2d, 0x6e, 0x6e, 0x9c, 0x96, 0x7b, 0xd5, 0xec, 0x57, 0x7b, - 0x90, 0xdd, 0xb1, 0x37, - 0xc5, 0x98, 0xc8, 0x0a, 0x0a, 0x8a, 0x81, 0x28, 0x43, 0x9d, 0xd4, 0x28, - 0x39, 0x20, 0x42, 0x05, - 0x22, 0xd2, 0x47, 0x5a, 0x5a, 0x50, 0x03, 0xab, 0x1e, 0xff, 0xbb, 0xab, - 0x32, 0xe3, 0x17, 0x2d, - 0xbe, 0x68, 0x0f, 0xd5, 0xd5, 0xf3, 0xb0, 0xd2, 0x6a, 0xe3, 0x5c, 0xd2, - 0x30, 0xe8, 0xfc, 0x8b, - 0x96, 0x80, 0xe2, 0x9d, 0x9d, 0xb3, 0x0d, 0x31, 0x72, 0x2f, 0xc0, 0x31, - 0x67, 0xea, 0x51, 0xaf, - 0x7e, 0xed, 0x92, 0xd6, 0xd6, 0x71, 0x6e, 0xde, 0x2a, 0x86, 0x7a, 0xde, - 0xda, 0x59, 0xe3, 0x6b, - 0x1d, 0x45, 0x0e, 0x31, 0x31, 0x89, 0x34, 0xc4, 0x0b, 0xbc, 0x86, 0xc4, - 0x5f, 0x2e, 0x87, 0xf9, - 0xb9, 0xc6, 0x78, 0x67, 0x67, 0x94, 0xc9, 0x5f, 0xd6, 0x14, 0xa5, 0x5f, - 0x43, 0x4c, 0xec, 0xd2, - 0x9d, 0x02, 0x59, 0x33, 0x33, 0x75, 0xa0, 0xcc, 0xca, 0xfa, 0x03, 0xcc, - 0x52, 0xf0, 0x2c, 0xf8, - 0xad, 0xb2, 0xef, 0x43, 0x43, 0xb4, 0x76, 0xcf, 0xda, 0x72, 0xeb, 0xcf, - 0x89, 0x4d, 0x5b, 0xc0, - 0x6c, 0x8f, 0x63, 0xfc, 0xfc, 0xe0, 0xbb, 0x76, 0x24, 0xf1, 0x29, 0x76, - 0x33, 0x07, 0x83, 0x7e, - 0x85, 0x5a, 0x02, 0x0b, 0x0b, 0xf4, 0xcb, 0x2c, 0xc2, 0xbe, 0x77, 0x2c, - 0xde, 0x4f, 0xf6, 0xe4, - 0xd1, 0xec, 0x5f, 0x2e, 0x2e, 0xaa, 0x3e, 0xb8, 0x4f, 0xfb, 0x9a, 0xb8, - 0xf3, 0x21, 0xf5, 0x17, - 0x1e, 0x4e, 0x3d, 0x36, 0x36, 0x30, 0x01, 0xd8, 0x0a, 0x55, 0x69, 0xd8, - 0xaf, 0xe0, 0x0d, 0x1b, - 0xa5, 0x3b, 0x67, 0xea, 0xea, 0xcb, 0xee, 0x2e, 0x63, 0x4e, 0xc7, 0x2e, - 0x4c, 0x99, 0xac, 0x75, - 0xe6, 0xf2, 0x9e, 0xec, 0xec, 0x0c, 0x91, 0x36, 0xe3, 0x84, 0x8b, 0x36, - 0x5b, 0x38, 0x92, 0x76, - 0x2e, 0xfe, 0x8b, 0x46, 0x46, 0xf1, 0xd7, 0xdb, 0x1a, 0xdd, 0x81, 0xdb, - 0x74, 0x5d, 0x7a, 0x23, - 0x5f, 0x34, 0xe6, 0x8b, 0x8b, 0x98, 0x58, 0x69, 0x35, 0x90, 0x2e, 0x69, - 0x18, 0x74, 0x7e, 0xa4, - 0x61, 0x1b, 0xbe, 0x5c, 0x5c, 0x97, 0x7c, 0xb3, 0x9e, 0x35, 0xf7, 0xb3, - 0x25, 0x42, 0x29, 0x2e, - 0x83, 0x4c, 0x64, 0x05, 0x05, 0x45, 0xa1, 0x14, 0xc0, 0xaf, 0x6a, 0x14, - 0xfd, 0x10, 0x21, 0xe3, - 0x44, 0x67, 0x8e, 0xb4, 0xb4, 0xa0, 0x06, 0x95, 0x3c, 0x3d, 0xb5, 0x95, - 0x64, 0x05, 0x2e, 0x5a, - 0xb1, 0x4f, 0xf0, 0xce, 0xce, 0xeb, 0x51, 0xbe, 0x6f, 0x28, 0x89, 0xbe, - 0x86, 0x98, 0x1b, 0x67, - 0xef, 0xc3, 0x07, 0xf9, 0xf9, 0xa5, 0x1a, 0x62, 0xe4, 0x5e, 0x43, 0x62, - 0xce, 0x17, 0xa2, 0x9d, - 0x82, 0xf4, 0x75, 0xb9, 0xb9, 0x93, 0xb2, 0xa1, 0x7e, 0x49, 0x8e, 0xa1, - 0xad, 0xeb, 0xe6, 0xbd, - 0x36, 0xa6, 0xd0, 0x7e, 0x7e, 0x70, 0xbc, 0x3b, 0x12, 0x99, 0xf5, 0x3b, - 0xf8, 0xe2, 0xa0, 0x3f, - 0xa3, 0x2d, 0x01, 0xe4, 0xe4, 0x7a, 0x84, 0x16, 0x61, 0x5f, 0xda, 0x16, - 0x6f, 0xc6, 0x7b, 0x72, - 0xaf, 0x01, 0xcd, 0xf8, 0xf8, 0xdb, 0x50, 0x66, 0x65, 0x7d, 0xe0, 0x66, - 0x29, 0x78, 0x16, 0x7c, - 0x88, 0xce, 0xdf, 0xab, 0xab, 0x83, 0x0c, 0xe9, 0x78, 0x7a, 0xa9, 0xe9, - 0xc8, 0x0a, 0x5c, 0xb4, - 0x89, 0x76, 0xce, 0x17, 0x17, 0x55, 0x1f, 0x5c, 0xc6, 0x9c, 0x4d, 0x5c, - 0x98, 0xf1, 0x9b, 0xea, - 0x0f, 0x27, 0xff, 0x1b, 0x1b, 0x18, 0xe1, 0x6c, 0x05, 0xcb, 0xd5, 0x6c, - 0xb6, 0x70, 0xe7, 0xec, - 0x1f, 0xf6, 0x2c, 0x8a, 0x8a, 0xe6, 0x12, 0x6d, 0xb4, 0xb3, 0x8d, 0x6d, - 0xff, 0x1b, 0xca, 0x45, - 0x42, 0x71, 0xe8, 0xba, 0xba, 0x11, 0x6c, 0xad, 0x3e, 0x2c, 0xa8, 0xad, - 0x47, 0x5a, 0xf9, 0x5d, - 0xf6, 0x23, 0x4d, 0x7d, 0x7d, 0xf2, 0x62, 0x37, 0x52, 0xfc, 0xd3, 0x37, - 0x12, 0x53, 0xbf, 0xdf, - 0xdf, 0x73, 0xb1, 0x89, 0x89, 0x64, 0xcc, 0x61, 0xf4, 0xd6, 0xab, 0x61, - 0x15, 0xaa, 0xd5, 0xa5, - 0x3a, 0x8a, 0x1c, 0x62, 0x62, 0xd1, 0x68, 0x4b, 0x16, 0xbb, 0xcf, 0x4b, - 0xbe, 0x5c, 0xcd, 0x31, - 0xc1, 0x3d, 0x8c, 0xbf, 0xbf, 0x54, 0xcd, 0xb9, 0xfe, 0x83, 0xc2, 0xb9, - 0xba, 0x4a, 0xd8, 0xbe, - 0x28, 0xe8, 0xed, 0x48, 0x48, 0x40, 0xbd, 0xe3, 0x18, 0xcc, 0x9c, 0xe3, - 0x57, 0x02, 0xad, 0x24, - 0xf1, 0x8d, 0x3a, 0xcf, 0xcf, 0x95, 0x1b, 0xba, 0xee, 0x0b, 0x2a, 0xba, - 0x61, 0xf7, 0xaf, 0x86, - 0xcb, 0x07, 0x26, 0xad, 0xad, 0x44, 0x73, 0xf1, 0xf8, 0xb0, 0xe5, 0xf1, - 0xdf, 0xab, 0x62, 0xb7, - 0x92, 0x25, 0xa6, 0x28, 0x28, 0x6d, 0x41, 0xa0, 0xcf, 0x31, 0xd6, 0xa0, - 0xe4, 0x80, 0xcb, 0x14, - 0x87, 0xe9, 0x20, 0xb0, 0xb0, 0x9b, 0xed, 0x85, 0x7d, 0xb1, 0x7c, 0x85, - 0x7e, 0x7a, 0xbb, 0x58, - 0xe7, 0x4a, 0x8f, 0x50, 0x50, 0xda, 0x82, 0x83, 0x5d, 0x62, 0x6f, 0x83, - 0x0b, 0xc3, 0x55, 0x28, - 0x3e, 0x2f, 0x58, 0xd7, 0xd7, 0x0f, 0x24, 0xda, 0xab, 0xa5, 0xd9, 0xda, - 0x3d, 0x36, 0x57, 0x8a, - 0xfa, 0x0f, 0x81, 0x61, 0x61, 0x53, 0xb6, 0x47, 0x56, 0xde, 0xe9, 0x47, - 0x54, 0xed, 0xd2, 0xd1, - 0x0d, 0x94, 0xdd, 0xa0, 0xa0, 0x77, 0xc7, 0xc5, 0xba, 0xc4, 0xde, 0xc5, - 0x16, 0x45, 0xaa, 0x50, - 0x51, 0xab, 0x08, 0x2c, 0x2c, 0x56, 0xaa, 0xb0, 0x8e, 0xbd, 0x1f, 0xb0, - 0xfe, 0xff, 0x5e, 0x16, - 0xb6, 0xe1, 0x87, 0x7c, 0x7c, 0x8c, 0x28, 0x33, 0xd3, 0xdf, 0x70, 0x33, - 0xf5, 0x3c, 0x0b, 0x3e, - 0x7b, 0xf0, 0xc7, 0xdf, 0xdf, 0x79, 0x31, 0xfa, 0x29, 0x7e, 0x88, 0xfa, - 0x09, 0xc8, 0xbe, 0x8e, - 0x74, 0xd7, 0x38, 0xc4, 0xc4, 0x61, 0xd0, 0x96, 0x2c, 0xb5, 0x5d, 0x96, - 0xbf, 0xb8, 0x59, 0x62, - 0x3f, 0x97, 0x49, 0x6b, 0x6b, 0xd9, 0x37, 0x6f, 0x15, 0x43, 0x3d, 0x6f, - 0x6d, 0xcd, 0x90, 0xd4, - 0x2f, 0x46, 0x9a, 0xfa, 0xfa, 0x27, 0xc4, 0x6e, 0xa4, 0x3b, 0x65, 0x6e, - 0x24, 0xa6, 0xbd, 0x7d, - 0x7d, 0xe6, 0xa1, 0xd1, 0xd1, 0xc8, 0x5b, 0xc2, 0x2b, 0x6f, 0x95, 0xc2, - 0x2a, 0x97, 0x69, 0x89, - 0xbb, 0x75, 0x5a, 0xdc, 0xdc, 0xfb, 0xef, 0xf6, 0x69, 0x1b, 0xae, 0xf6, - 0xe3, 0x79, 0xa1, 0x6e, - 0x49, 0xf3, 0x53, 0x14, 0x14, 0xd7, 0xc1, 0x50, 0x86, 0xf9, 0x6b, 0x50, - 0x72, 0x40, 0x84, 0x0a, - 0x2b, 0xe3, 0xde, 0x4f, 0x4f, 0xf9, 0x88, 0xff, 0x19, 0x25, 0x73, 0xff, - 0xa7, 0xcc, 0x27, 0xc6, - 0x99, 0xa7, 0x1d, 0x86, 0x86, 0xab, 0xec, 0x5d, 0x77, 0xe4, 0x15, 0x5d, - 0xd1, 0x9a, 0xb6, 0x43, - 0x02, 0xb3, 0x22, 0xbb, 0xbb, 0x6f, 0x26, 0xa9, 0xbf, 0x0f, 0x0b, 0xa9, - 0xa0, 0x35, 0x4d, 0xbc, - 0x37, 0x1e, 0xc1, 0xc2, 0xc2, 0xa6, 0xaf, 0x8e, 0xac, 0x7f, 0x11, 0x8e, - 0xa8, 0x19, 0x67, 0x61, - 0xb3, 0xfc, 0xd2, 0x75, 0x75, 0x84, 0x77, 0x17, 0xd0, 0x27, 0x82, 0x17, - 0x26, 0xad, 0x56, 0xdb, - 0x73, 0x79, 0x4f, 0x76, 0x76, 0x06, 0xa9, 0x1b, 0x90, 0x42, 0xa4, 0x1b, - 0xcc, 0x1c, 0x49, 0x3b, - 0x64, 0x06, 0xeb, 0x55, 0x55, 0x9f, 0x23, 0x97, 0x9d, 0xcd, 0x05, 0x97, - 0xf6, 0xd3, 0x74, 0xcb, - 0xdc, 0x78, 0x82, 0x8e, 0x8e, 0xdd, 0xf9, 0x7d, 0xf5, 0x3f, 0x44, 0x7d, - 0xe5, 0x64, 0x5f, 0x47, - 0xd8, 0xdd, 0xc6, 0x3b, 0x3b, 0x03, 0xb5, 0xec, 0x48, 0x21, 0x52, 0xec, - 0x66, 0x0e, 0xc5, 0xfc, - 0xc9, 0xb4, 0x04, 0x16, 0x16, 0x2b, 0x55, 0x58, 0x47, 0xbf, 0xee, 0x58, - 0x7f, 0x9e, 0x2f, 0x0b, - 0xab, 0xa4, 0x89, 0x4d, 0x4d, 0x05, 0x1c, 0xf7, 0xd8, 0x63, 0xf6, 0xf7, - 0xaa, 0x12, 0x8c, 0xc7, - 0x33, 0xbb, 0x85, 0x77, 0x77, 0x78, 0xe3, 0x1f, 0x11, 0x61, 0x07, 0x1f, - 0x2b, 0x73, 0xfd, 0xda, - 0x6b, 0x21, 0x14, 0x4e, 0x4e, 0x87, 0xc2, 0xfb, 0x98, 0x06, 0xd0, 0xfb, - 0x40, 0xa3, 0x93, 0x27, - 0xcc, 0xa9, 0x51, 0x1f, 0x1f, 0x23, 0x0a, 0x7c, 0x44, 0x47, 0x1c, 0x7c, - 0xac, 0x0f, 0x72, 0xee, - 0x90, 0x96, 0x84, 0x93, 0x93, 0x02, 0x67, 0x09, 0x70, 0x3e, 0xdd, 0x09, - 0x44, 0xb5, 0x86, 0xa8, - 0xd0, 0x54, 0x4e, 0x92, 0x92, 0x7c, 0x2d, 0x0d, 0xf1, 0x1d, 0x7e, 0x0d, - 0xa3, 0xda, 0x32, 0x49, - 0xac, 0x0a, 0xfe, 0xff, 0xff, 0x62, 0x65, 0x7a, 0x64, 0x94, 0x0f, 0x7a, - 0xd9, 0xb6, 0x9c, 0x9e, - 0xbf, 0xd0, 0x1e, 0x69, 0x69, 0x25, 0xa3, 0x67, 0xd4, 0x05, 0xb8, 0x67, - 0x60, 0x13, 0x3b, 0xd5, - 0xda, 0x6e, 0xe4, 0x80, 0x80, 0x6c, 0x93, 0x45, 0xf7, 0x2e, 0x59, 0x45, - 0xc6, 0x3b, 0x88, 0x40, - 0xa7, 0x88, 0x45, 0x51, 0x51, 0xa4, 0xc8, 0x87, 0xdc, 0x41, 0xcc, 0x87, - 0xec, 0xac, 0xe1, 0xc9, - 0x5e, 0x8c, 0xf7, 0x37, 0x37, 0x4e, 0x4b, 0xdc, 0x8b, 0x76, 0xca, 0xdc, - 0x48, 0x8f, 0xb9, 0xfa, - 0x98, 0x1f, 0x0c, 0x3a, 0x3a, 0x7d, 0xff, 0xe8, 0xc9, 0x02, 0xf1, 0xe8, - 0x81, 0x61, 0x71, 0x1d, - 0x7a, 0x48, 0xd6, 0x63, 0x63, 0xaf, 0x22, 0x4f, 0x97, 0x98, 0x6c, 0x4f, - 0x59, 0x33, 0x79, 0xd0, - 0x13, 0xda, 0xe0, 0x96, 0x96, 0x47, 0xc6, 0x1d, 0xb0, 0x91, 0xb7, 0x1d, - 0xb9, 0xa5, 0xa7, 0x4b, - 0x6a, 0x99, 0x05, 0xf2, 0xf2, 0x51, 0xd1, 0x4e, 0x26, 0xe0, 0x34, 0x4e, - 0x10, 0x58, 0x54, 0x79, - 0x40, 0xc2, 0xca, 0x01, 0x01, 0x7e, 0x4a, 0x04, 0x81, 0x23, 0xa3, 0x04, - 0xe7, 0x6f, 0xb4, 0xe1, - 0xa8, 0xaf, 0xba, 0x4a, 0x4a, 0xbc, 0x29, 0xeb, 0xd9, 0x8a, 0x19, 0xeb, - 0x5a, 0xdc, 0x06, 0x25, - 0x5b, 0x91, 0xa2, 0x3e, 0x3e, 0x46, 0x14, 0xf8, 0x88, 0x8e, 0x38, 0xf8, - 0x9b, 0x1e, 0xe4, 0x1f, - 0xeb, 0x66, 0x43, 0x4c, 0x4c, 0x7b, 0x56, 0xf3, 0x59, 0x40, 0x55, 0xf3, - 0x4d, 0x7d, 0x38, 0x26, - 0x66, 0xb5, 0xc9, 0xee, 0xee, 0xf0, 0x05, 0x3e, 0x22, 0xc2, 0x0e, 0x3e, - 0x56, 0xe6, 0x39, 0x77, - 0x56, 0x05, 0x7f, 0x9e, 0x9e, 0x31, 0xd3, 0x3d, 0x32, 0x4a, 0xe6, 0x3d, - 0x8d, 0x5b, 0x4e, 0x4f, - 0x81, 0xff, 0x46, 0xbe, 0xbe, 0x2a, 0x87, 0xbd, 0x7f, 0xa0, 0x61, 0xbd, - 0x5d, 0x25, 0x6c, 0x5f, - 0x77, 0xdc, 0x0b, 0xc3, 0xc3, 0xd8, 0xe5, 0x8a, 0x2d, 0x5c, 0xb2, 0x8a, - 0x4f, 0x76, 0xd3, 0x80, - 0x57, 0xbd, 0x6e, 0x22, 0x22, 0xe7, 0xc0, 0x88, 0x8c, 0xac, 0x02, 0x88, - 0xdd, 0xa0, 0x89, 0x11, - 0x4e, 0x5d, 0x24, 0xa6, 0xa6, 0xb0, 0xb8, 0xdd, 0x3a, 0x0e, 0x92, 0xdd, - 0x01, 0xe4, 0x94, 0x53, - 0x8d, 0xd3, 0x8a, 0xa2, 0xa2, 0x8b, 0x53, 0xcd, 0x7b, 0x82, 0x5b, 0xcd, - 0x1b, 0x9b, 0x01, 0x51, - 0xb0, 0xf7, 0xe1, 0x72, 0x72, 0x3d, 0x42, 0x0b, 0xd1, 0xce, 0x6d, 0x0b, - 0xd6, 0x63, 0xdc, 0x39, - 0xf3, 0x3e, 0x18, 0x74, 0x74, 0xfa, 0x3d, 0x13, 0x51, 0x04, 0x21, 0x13, - 0xc1, 0xc2, 0xe2, 0x3a, - 0x94, 0x33, 0xc0, 0x26, 0x26, 0xdc, 0x2b, 0x98, 0xcd, 0x20, 0xcb, 0x98, - 0xc7, 0xdf, 0x1c, 0x13, - 0x20, 0x61, 0x65, 0xe1, 0xe1, 0x3f, 0x25, 0x02, 0xa1, 0xf0, 0xb0, 0x02, - 0x92, 0xd6, 0x5a, 0x91, - 0x24, 0xc4, 0x21, 0x54, 0x54, 0xe1, 0x69, 0x93, 0x1c, 0xee, 0xa6, 0x93, - 0x11, 0xbc, 0xc0, 0x2a, - 0xd7, 0xfa, 0x39, 0x20, 0x20, 0x1b, 0x54, 0x80, 0x4d, 0xea, 0x87, 0x80, - 0xd0, 0x7e, 0x22, 0x10, - 0x14, 0x74, 0x97, 0x24, 0x24, 0x20, 0xbf, 0x90, 0x0c, 0x66, 0x4e, 0x90, - 0xca, 0x01, 0xb7, 0x12, - 0x9e, 0x09, 0x6a, 0x34, 0x34, 0xcc, 0x95, 0xd0, 0xcb, 0x13, 0xec, 0xd0, - 0xa2, 0x3e, 0xa6, 0x1a, - 0x05, 0x1d, 0x55, 0x09, 0x09, 0x08, 0x5f, 0x24, 0x03, 0xf8, 0xf2, 0x24, - 0xd3, 0x91, 0x5d, 0xe5, - 0xc6, 0x93, 0xfb, 0x0d, 0x0d, 0x33, 0xb4, 0x34, 0x42, 0x74, 0x3b, 0x34, - 0xc9, 0xee, 0xc8, 0xe7, - 0xed, 0x70, 0x25, 0x42, 0x42, 0xca, 0x3c, 0xcb, 0x5b, 0x51, 0x48, 0xcb, - 0x6e, 0x22, 0xef, 0x21, - 0xc8, 0x0c, 0x15, 0xaa, 0xaa, 0xfd, 0x46, 0xed, 0xf9, 0x59, 0x0a, 0xed, - 0x2f, 0x65, 0xe8, 0x55, - 0x9b, 0x14, 0x3f, 0x3d, 0x3d, 0xc4, 0xca, 0xf4, 0xc8, 0xeb, 0x1e, 0xf4, - 0x71, 0xaf, 0xfb, 0xff, - 0xbd, 0x63, 0x3c, 0xd2, 0xd2, 0x4a, 0x85, 0xce, 0x6b, 0x0a, 0xb3, 0xce, - 0xc0, 0x26, 0x76, 0x69, - 0x84, 0xe2, 0x13, 0xb7, 0xb7, 0x22, 0xd8, 0x99, 0x7c, 0x58, 0x93, 0x99, - 0x8e, 0xb4, 0x31, 0xba, - 0xc3, 0x8e, 0xae, 0x04, 0x04, 0x3b, 0xeb, 0x10, 0x41, 0x8c, 0xc9, 0x10, - 0x1a, 0x7f, 0x95, 0x02, - 0xca, 0xbf, 0x37, 0x11, 0x11, 0x92, 0x60, 0x44, 0x46, 0x56, 0x01, 0x44, - 0x8f, 0x50, 0xa5, 0xe9, - 0x8a, 0x7d, 0xfd, 0x10, 0x10, 0xec, 0x2a, 0x40, 0xc7, 0x75, 0xa2, 0x40, - 0x68, 0x3f, 0x11, 0x08, - 0x34, 0x15, 0xf2, 0xc5, 0xc5, 0x1f, 0x9a, 0x92, 0xad, 0x96, 0xfe, 0x92, - 0x58, 0xd7, 0xed, 0x83, - 0x26, 0x77, 0x03, 0xef, 0xef, 0x8e, 0x4f, 0x3a, 0xa3, 0xe1, 0xad, 0x3a, - 0xb1, 0x89, 0x8d, 0x96, - 0x10, 0xd1, 0xd3, 0x91, 0x91, 0xfe, 0xf3, 0x01, 0xb1, 0x78, 0x58, 0x01, - 0x49, 0x6b, 0x2d, 0xa9, - 0x25, 0x7c, 0x30, 0xe8, 0xe8, 0x37, 0x7a, 0x26, 0xa2, 0x08, 0x42, 0x26, - 0x41, 0x47, 0x07, 0x74, - 0xe3, 0xef, 0xcb, 0xe5, 0xe5, 0x04, 0xce, 0x12, 0xe0, 0x7c, 0x79, 0x12, - 0x88, 0xa9, 0xcf, 0x93, - 0x63, 0xa8, 0x9c, 0xe7, 0xe7, 0xf8, 0x5a, 0x1a, 0x21, 0x3a, 0xfc, 0x1a, - 0x85, 0x77, 0x64, 0x92, - 0x0a, 0x3a, 0xaa, 0x12, 0x12, 0x10, 0xbe, 0x48, 0x06, 0x33, 0x27, 0x48, - 0x65, 0xe1, 0xba, 0x09, - 0x4f, 0xe5, 0x35, 0x1a, 0x1a, 0x66, 0xab, 0x68, 0x84, 0xe8, 0x76, 0x68, - 0x51, 0x1f, 0x53, 0x0d, - 0x8b, 0xc5, 0xec, 0xac, 0xac, 0x3a, 0x39, 0xf5, 0x79, 0x93, 0x46, 0xf5, - 0x38, 0xc4, 0xd6, 0x56, - 0xc7, 0x2b, 0xea, 0xb1, 0xb1, 0xe5, 0xa7, 0x81, 0xfc, 0x92, 0xdf, 0x81, - 0x99, 0x15, 0x0f, 0xb9, - 0x67, 0x0d, 0xd8, 0x52, 0x52, 0x26, 0x16, 0x8b, 0x9c, 0x24, 0xea, 0x8b, - 0x06, 0x1d, 0xfe, 0x29, - 0x2d, 0xf5, 0xb8, 0x41, 0x41, 0x48, 0xe2, 0xc7, 0x1b, 0x34, 0x6e, 0xc7, - 0x84, 0x93, 0xf0, 0xc1, - 0xfe, 0xaa, 0xc5, 0xd4, 0xd4, 0x8d, 0xfa, 0xd6, 0xeb, 0xc0, 0xff, 0xd6, - 0xd7, 0x87, 0x48, 0x6a, - 0x45, 0xdf, 0x9f, 0x08, 0x08, 0x76, 0x15, 0x20, 0x82, 0xdb, 0x51, 0x20, - 0x34, 0xfe, 0xe9, 0x04, - 0xa0, 0x26, 0x32, 0xe3, 0xe3, 0xc3, 0xb1, 0x0a, 0x60, 0xb6, 0x35, 0x0a, - 0x9f, 0x08, 0xf1, 0x90, - 0x80, 0x47, 0x57, 0x02, 0x02, 0xfc, 0x94, 0x08, 0xc1, 0x46, 0x85, 0x08, - 0x0d, 0xde, 0xab, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x4a, 0xf8, 0x60, 0x13, 0x13, 0x6e, 0xf4, 0x4c, 0x87, 0x10, 0x84, 0x4c, - 0x82, 0x8e, 0x0e, 0xe8, - 0xee, 0x7b, 0x16, 0x45, 0x45, 0x73, 0x09, 0xd7, 0x5a, 0xb8, 0xa7, 0xd7, - 0x9e, 0xec, 0x65, 0xc3, - 0x4c, 0xee, 0x06, 0x1d, 0x1d, 0xdf, 0x9e, 0x74, 0x85, 0x01, 0x99, 0x74, - 0xa1, 0xd1, 0xd9, 0xef, - }, - { /* 5 */ - 0xd8, 0xca, 0x20, 0x18, 0xa6, 0x5b, 0x9c, 0xaf, 0x78, 0xd9, 0x1d, 0x80, - 0x8c, 0x85, 0x3b, 0x8c, - 0x69, 0x10, 0x51, 0x4c, 0xc5, 0x06, 0x68, 0x18, 0xbf, 0x31, 0xb7, 0x87, - 0xa1, 0x7c, 0xf5, 0xa1, - 0xc0, 0xd0, 0x1b, 0x9a, 0xb0, 0x2e, 0xcd, 0xb8, 0xb7, 0xbe, 0xdf, 0x6c, - 0x21, 0x29, 0x03, 0x21, - 0xba, 0xff, 0xe6, 0xab, 0xa2, 0x89, 0xd9, 0x61, 0x42, 0xa1, 0xdc, 0x1e, - 0xaa, 0x69, 0x60, 0xaa, - 0x16, 0x4a, 0xed, 0x3d, 0x41, 0x6b, 0x5a, 0x6f, 0xc9, 0x92, 0xec, 0x32, - 0xcd, 0xe3, 0x9f, 0xcd, - 0x87, 0x09, 0x79, 0x52, 0xab, 0x3b, 0xd3, 0xec, 0xd9, 0x4f, 0x3c, 0x27, - 0x0e, 0x49, 0xb0, 0x0e, - 0x58, 0xeb, 0x32, 0xf4, 0xc7, 0x6f, 0xab, 0x7f, 0xa2, 0x0d, 0x36, 0xc8, - 0xb2, 0x0a, 0x39, 0xb2, - 0x59, 0x24, 0x27, 0x8b, 0xe9, 0xec, 0xca, 0x36, 0xe2, 0xff, 0xf0, 0x9c, - 0x38, 0xe7, 0x85, 0x38, - 0xc4, 0x6a, 0x4f, 0xa5, 0x08, 0x67, 0x8a, 0x5f, 0x74, 0xf0, 0x41, 0xff, - 0x4c, 0x1b, 0xb6, 0x4c, - 0x6a, 0x82, 0x6e, 0xcd, 0xb7, 0x40, 0xcb, 0xc3, 0x7f, 0xe4, 0x3e, 0x7b, - 0xfc, 0x88, 0xf2, 0xfc, - 0x05, 0x75, 0x41, 0x40, 0x96, 0xca, 0x26, 0xae, 0x83, 0xbc, 0x58, 0xc7, - 0xe7, 0xdf, 0x09, 0xe7, - 0x9a, 0x66, 0x03, 0x90, 0x2b, 0x84, 0xa4, 0x55, 0x95, 0x94, 0xa6, 0x0c, - 0x44, 0x3a, 0x81, 0x44, - 0x06, 0xe7, 0x7e, 0xc1, 0xe4, 0x8c, 0x85, 0x75, 0x43, 0x69, 0xd1, 0x3b, - 0xba, 0x2b, 0x0e, 0xba, - 0xa6, 0x5f, 0x89, 0x16, 0x0c, 0xb5, 0xcf, 0x91, 0x4e, 0x88, 0x80, 0x61, - 0x6a, 0xf7, 0xed, 0x6a, - 0x0d, 0xc2, 0xe9, 0x3e, 0x25, 0x58, 0xa8, 0xa3, 0xc6, 0x20, 0xa7, 0x22, - 0x3d, 0xbb, 0xa0, 0x3d, - 0xd1, 0xb2, 0x9d, 0x19, 0x3b, 0x4a, 0x73, 0xeb, 0x7d, 0xb7, 0x24, 0x31, - 0xdc, 0x0c, 0x2e, 0xdc, - 0x43, 0x63, 0x36, 0xf7, 0xa3, 0x5c, 0x59, 0xb3, 0xad, 0xbf, 0x7d, 0xd8, - 0x42, 0x52, 0x06, 0x42, - 0x85, 0x54, 0x53, 0xac, 0xf7, 0xfe, 0x11, 0x7e, 0x59, 0x68, 0x73, 0x8f, - 0xd9, 0x50, 0x0b, 0xd9, - 0x41, 0x3e, 0x1c, 0x09, 0xff, 0x99, 0x9b, 0x21, 0x2d, 0x98, 0x32, 0x70, - 0x95, 0x4b, 0xbd, 0x95, - 0xd2, 0x20, 0xa2, 0x98, 0x49, 0x0c, 0xd0, 0x30, 0xbd, 0x62, 0xad, 0xcd, - 0x81, 0xf8, 0x29, 0x81, - 0x2c, 0x94, 0x19, 0x7a, 0x82, 0xd6, 0xb4, 0xde, 0x51, 0xe7, 0x1b, 0x64, - 0x59, 0x05, 0xfd, 0x59, - 0xcd, 0x12, 0xf2, 0xa4, 0x95, 0x76, 0x65, 0x1b, 0x71, 0x9e, 0x78, 0x4e, - 0x1c, 0x92, 0xa3, 0x1c, - 0x0b, 0x25, 0x97, 0xff, 0xc1, 0xd4, 0x2d, 0xd6, 0x85, 0x49, 0x76, 0x19, - 0x87, 0x90, 0xae, 0x87, - 0xa2, 0xe5, 0xdd, 0x29, 0xb4, 0xfc, 0x88, 0x76, 0x8d, 0xc6, 0x1e, 0xf2, - 0x07, 0xc5, 0x58, 0x07, - 0x38, 0x83, 0xde, 0xb9, 0x9f, 0x78, 0x2c, 0x23, 0x18, 0x52, 0xb8, 0xfe, - 0x43, 0xff, 0xd9, 0x43, - 0xf7, 0xcc, 0x06, 0xe3, 0x56, 0xcb, 0x8b, 0xaa, 0xe9, 0xeb, 0x8f, 0x18, - 0x88, 0x74, 0xc1, 0x88, - 0x4b, 0xd4, 0x9e, 0x89, 0x10, 0xce, 0xd7, 0xbe, 0xe8, 0x23, 0x82, 0x3d, - 0x98, 0x36, 0xaf, 0x98, - 0xe6, 0xae, 0x80, 0x60, 0xdd, 0xaf, 0x35, 0xf9, 0x23, 0xe2, 0x74, 0x45, - 0x75, 0x51, 0xec, 0x75, - 0xe7, 0x61, 0x95, 0x1f, 0xf3, 0x2c, 0x54, 0xb0, 0x63, 0x10, 0xb2, 0x11, - 0xff, 0xbc, 0x50, 0xff, - 0x90, 0x8c, 0x81, 0x10, 0xc4, 0xd3, 0xe8, 0xca, 0x50, 0x2f, 0x16, 0x41, - 0x49, 0x47, 0x93, 0x49, - 0x1a, 0x47, 0x11, 0x7c, 0x4a, 0xb0, 0x93, 0x85, 0x4f, 0x40, 0x8d, 0x44, - 0x7a, 0xb5, 0x83, 0x7a, - 0x53, 0xce, 0xa5, 0x0b, 0x06, 0xbb, 0x86, 0xa9, 0x27, 0x44, 0x40, 0xd1, - 0x35, 0x9a, 0x97, 0x35, - 0xa3, 0x2a, 0xc8, 0x56, 0x9a, 0x7f, 0xe9, 0x3f, 0xcd, 0x34, 0xd8, 0xa6, - 0x8d, 0x28, 0xe4, 0x8d, - 0xf1, 0x2b, 0x78, 0x22, 0xb2, 0x47, 0x0e, 0xdf, 0xaa, 0x82, 0x5e, 0x23, - 0x32, 0x5f, 0xcf, 0x32, - 0xfd, 0x26, 0x84, 0x63, 0xb9, 0x9c, 0xc7, 0x35, 0x2c, 0x50, 0x3f, 0x55, - 0x85, 0x09, 0xd3, 0x85, - 0x51, 0x93, 0x8f, 0xf5, 0x5a, 0x7e, 0x44, 0x3b, 0xa7, 0x63, 0x0f, 0x79, - 0xe2, 0x83, 0x2c, 0xe2, - 0x29, 0xe1, 0x58, 0x3a, 0x14, 0x1c, 0x92, 0x70, 0xd2, 0x5b, 0x43, 0xa3, - 0xbe, 0xda, 0xf4, 0xbe, - 0x3b, 0x11, 0xe1, 0x38, 0xed, 0x3e, 0x8f, 0xf8, 0xd8, 0x87, 0x31, 0x02, - 0x1e, 0x0b, 0xde, 0x1e, - 0x82, 0x7c, 0x38, 0x12, 0x3d, 0xf1, 0xf5, 0x42, 0x5a, 0xf3, 0x64, 0xe0, - 0xe9, 0x96, 0xb9, 0xe9, - 0x67, 0x40, 0x87, 0xf3, 0x92, 0x18, 0x63, 0x60, 0xb9, 0xc4, 0x99, 0x59, - 0xc1, 0x33, 0x52, 0xc1, - 0x8b, 0x04, 0x85, 0x13, 0xa0, 0xe0, 0x1a, 0x06, 0x5f, 0x9d, 0x5d, 0x51, - 0xb9, 0x1f, 0xac, 0xb9, - 0x48, 0x46, 0xa1, 0x08, 0x62, 0x88, 0x74, 0x65, 0x28, 0xf6, 0x0b, 0xc1, - 0xc5, 0xc2, 0xa8, 0xc5, - 0x2a, 0x73, 0x67, 0xbb, 0x66, 0x5a, 0x31, 0xab, 0x12, 0x8e, 0xca, 0x5f, - 0xe3, 0x2e, 0xf3, 0xe3, - 0xef, 0xd6, 0x3d, 0x61, 0x40, 0xbe, 0xda, 0xbd, 0x26, 0x8c, 0x4d, 0xf4, - 0x25, 0xd8, 0xf9, 0x25, - 0x70, 0xc5, 0x7f, 0xb1, 0xfd, 0xf0, 0x58, 0x46, 0x30, 0xa4, 0xb3, 0x3f, - 0x86, 0x3d, 0x71, 0x86, - 0x2d, 0x5b, 0x0c, 0x05, 0xac, 0x55, 0xd5, 0x97, 0x11, 0x15, 0xdd, 0x30, - 0xd3, 0xe8, 0x41, 0xd3, - 0x31, 0xfb, 0x63, 0xb8, 0x02, 0x69, 0xc3, 0x67, 0x1d, 0x3c, 0x81, 0x4f, - 0x13, 0x76, 0xcc, 0x13, - 0xe2, 0x14, 0xd4, 0x5f, 0x65, 0xe6, 0x72, 0x1e, 0xe0, 0xac, 0xea, 0xd6, - 0x18, 0x63, 0x59, 0x18, - 0x86, 0xc6, 0x6c, 0x2d, 0x85, 0xb8, 0xb2, 0xa5, 0x99, 0xbd, 0xfa, 0x73, - 0x84, 0xa4, 0x0c, 0x84, - 0xc9, 0xa8, 0xa6, 0x9b, 0x2d, 0x3f, 0x22, 0xfc, 0xb2, 0xd0, 0xe6, 0xdd, - 0x71, 0xa0, 0x16, 0x71, - 0xb0, 0x15, 0x64, 0x2b, 0x4d, 0xde, 0x95, 0xfe, 0x87, 0x1a, 0x6c, 0x53, - 0xa7, 0x14, 0x72, 0xa7, - 0x80, 0x21, 0x12, 0xec, 0x61, 0x34, 0x37, 0xd0, 0xda, 0xd4, 0x2b, 0x48, - 0x3e, 0x8f, 0x02, 0x3e, - 0xf5, 0x91, 0x2c, 0x1d, 0x0a, 0x0e, 0x49, 0x38, 0x69, 0xcc, 0xc0, 0xb0, - 0x5f, 0x6d, 0x7a, 0x5f, - 0xfc, 0xe9, 0x91, 0x1c, 0x97, 0x1f, 0xa6, 0x7c, 0x6c, 0xa2, 0xf9, 0x01, - 0x0f, 0xe4, 0x6f, 0x0f, - 0x60, 0x68, 0xec, 0x4d, 0x58, 0x17, 0x87, 0x5c, 0xba, 0x5f, 0x8e, 0x36, - 0xf1, 0xf5, 0xe0, 0xf1, - 0x44, 0x4b, 0x5d, 0x49, 0x69, 0x53, 0xbd, 0x8f, 0xae, 0x24, 0x6a, 0xb7, - 0x72, 0x94, 0xb4, 0x72, - 0x0c, 0x0d, 0xfc, 0x41, 0x0b, 0xdb, 0xc9, 0xea, 0x86, 0xd2, 0x61, 0x76, - 0xb7, 0x56, 0x1c, 0xb7, - 0x8f, 0xbe, 0xd1, 0x2c, 0x18, 0xa9, 0x5d, 0xe1, 0x9c, 0xd3, 0xc3, 0xc2, - 0xd4, 0x2d, 0x19, 0xd4, - 0xa4, 0x02, 0xa3, 0xe8, 0x50, 0x70, 0x0d, 0x03, 0xce, 0xaf, 0xcf, 0xc9, - 0xbd, 0xee, 0x56, 0xbd, - 0x3d, 0xf6, 0x9f, 0xf9, 0x09, 0xb2, 0x0a, 0x8d, 0x9b, 0xee, 0xe0, 0x39, - 0xa4, 0x20, 0xd0, 0xa4, - 0x62, 0x35, 0xc6, 0xb3, 0x04, 0xd2, 0x45, 0xce, 0x3a, 0x78, 0xc1, 0x9e, - 0x26, 0xec, 0x5b, 0x26, - 0x35, 0x41, 0x37, 0x87, 0xba, 0x20, 0x84, 0x80, 0xde, 0x72, 0x1f, 0xdc, - 0x7e, 0x44, 0x79, 0x7e, - 0xe0, 0x49, 0xfe, 0xa1, 0x39, 0x23, 0xb0, 0x8c, 0x60, 0x8b, 0xa5, 0x7e, - 0xcf, 0x7a, 0xe2, 0xcf, - 0x68, 0xdf, 0x44, 0x33, 0xeb, 0x85, 0x09, 0x51, 0xff, 0xc3, 0x71, 0xd3, - 0x2b, 0x91, 0x49, 0x2b, - 0xdc, 0x70, 0x74, 0x27, 0x1e, 0x12, 0xdb, 0x48, 0xbb, 0x97, 0x83, 0x13, - 0xe1, 0xb7, 0x8e, 0xe1, - 0x40, 0xf1, 0x09, 0x76, 0xd1, 0x1a, 0xfa, 0x68, 0x6d, 0x6a, 0xf4, 0x24, - 0x1f, 0xa6, 0x01, 0x1f, - 0xa0, 0xb8, 0xf7, 0xd7, 0xe8, 0x39, 0x4a, 0xe4, 0x0d, 0xe1, 0x51, 0x5a, - 0xd0, 0xdc, 0xe3, 0xd0, - 0xa7, 0x90, 0x9c, 0x69, 0x22, 0x36, 0xae, 0xd8, 0x0e, 0x7a, 0x46, 0x35, - 0xe0, 0x1a, 0x51, 0xe0, - 0x9f, 0x13, 0x42, 0xd0, 0xbd, 0x4e, 0x82, 0xfb, 0x16, 0x28, 0xfe, 0xcb, - 0xa3, 0xe5, 0x88, 0xa3, - 0x2b, 0xbc, 0x72, 0xc4, 0x48, 0xd9, 0x50, 0xe2, 0x52, 0x7c, 0x0c, 0x0b, - 0x69, 0xc3, 0x4f, 0x69, - 0xae, 0xe8, 0x21, 0x68, 0xbf, 0x27, 0x41, 0x9c, 0x0b, 0x14, 0x7f, 0x84, - 0xb0, 0x93, 0x44, 0xb0, - 0x10, 0xad, 0x93, 0xfc, 0xa5, 0xe7, 0xdf, 0x1a, 0x8a, 0xfb, 0x3d, 0x09, - 0x77, 0xc8, 0x91, 0x77, - 0xfe, 0xb4, 0xbb, 0xe2, 0xcb, 0xda, 0x64, 0xee, 0xec, 0x85, 0xb6, 0xa9, - 0xd8, 0xfd, 0xd4, 0xd8, - 0xa1, 0x77, 0xe2, 0xa8, 0xc6, 0xba, 0x2b, 0xad, 0x4d, 0x13, 0x97, 0x0e, - 0x5a, 0x31, 0x5f, 0x5a, - 0xc7, 0xf8, 0x70, 0x24, 0x7a, 0x21, 0x29, 0x84, 0xb4, 0x25, 0xc8, 0x03, - 0x11, 0xef, 0xb1, 0x11, - 0x4d, 0x33, 0xe0, 0x48, 0xf4, 0x42, 0x52, 0xcb, 0xab, 0x4a, 0x53, 0x06, - 0x22, 0x1d, 0xa1, 0x22, - 0xaa, 0x52, 0x75, 0x57, 0x07, 0x6e, 0x06, 0x7b, 0xc8, 0x5a, 0xe1, 0x17, - 0xdd, 0xa1, 0xf1, 0xdd, - 0xd4, 0xc7, 0xdc, 0x59, 0xad, 0x80, 0x55, 0x45, 0xfe, 0x0b, 0x7c, 0xf6, - 0x3b, 0xd3, 0x27, 0x3b, - 0x42, 0xac, 0x23, 0x88, 0x8d, 0xdf, 0x38, 0xfa, 0xed, 0x4d, 0xbb, 0x8c, - 0xc8, 0xbf, 0xba, 0xc8, - 0x2e, 0xc9, 0x33, 0x84, 0xde, 0x13, 0x76, 0x4c, 0xd1, 0xc0, 0x54, 0xcc, - 0x8e, 0x1c, 0x46, 0x8e, - 0x49, 0x89, 0xb4, 0x77, 0x4c, 0x0b, 0x15, 0x2c, 0x68, 0x04, 0xcd, 0x95, - 0x4f, 0x2f, 0x14, 0x4f, - 0xb2, 0x48, 0x4e, 0xd5, 0x11, 0x1b, 0x57, 0x6c, 0x07, 0x3d, 0x23, 0xfb, - 0x70, 0x0d, 0xc9, 0x70, - 0x77, 0xed, 0x14, 0x0f, 0x37, 0xff, 0xbc, 0x7a, 0x33, 0x3f, 0xa4, 0x50, - 0xb6, 0xfb, 0xc3, 0xb6, - 0x39, 0x4c, 0xcb, 0xc6, 0xb1, 0xfb, 0x4d, 0x6a, 0x58, 0xa0, 0x7e, 0xaa, - 0xc9, 0x12, 0x65, 0xc9, - 0xad, 0x7a, 0x1e, 0xe9, 0xcd, 0x61, 0xe2, 0x47, 0xcb, 0xc1, 0xf6, 0x78, - 0xed, 0x67, 0x43, 0xed, - 0x20, 0x99, 0xe5, 0x3b, 0x89, 0x0d, 0x7d, 0x34, 0xd7, 0x35, 0x7a, 0x12, - 0xee, 0x53, 0xe1, 0xee, - 0xcf, 0x4f, 0xd8, 0x5a, 0xc9, 0xb3, 0xa7, 0x89, 0xf1, 0xb9, 0x37, 0xe6, - 0xcb, 0x8b, 0x18, 0xcb, - 0x64, 0xd2, 0xb8, 0x72, 0xe0, 0x5e, 0xc0, 0xbb, 0x79, 0x11, 0x10, 0xa5, - 0x9c, 0xc7, 0x55, 0x9c, - 0x9b, 0xa9, 0x16, 0xef, 0x05, 0x07, 0xc5, 0x1c, 0xd5, 0x66, 0x60, 0x58, - 0xce, 0xd7, 0x3d, 0xce, - 0xde, 0x2d, 0x5e, 0xd9, 0x42, 0xd7, 0x19, 0xda, 0x3b, 0xb0, 0xcc, 0xbb, - 0x36, 0xae, 0x35, 0x36, - 0x7f, 0x5a, 0xbc, 0x71, 0x84, 0x6d, 0x32, 0x77, 0x76, 0xa3, 0x5b, 0xb5, - 0x6c, 0x9f, 0x6a, 0x6c, - 0xa8, 0x0f, 0x5f, 0xa9, 0x5b, 0xab, 0xc4, 0xe9, 0x48, 0x7d, 0xae, 0xbf, - 0x0a, 0xb8, 0x4a, 0x0a, - 0xb6, 0xf2, 0x1a, 0xea, 0xa9, 0x52, 0x10, 0x8b, 0xc4, 0x73, 0xbd, 0x68, - 0x1d, 0x3f, 0x7c, 0x1d, - 0x5c, 0x51, 0x66, 0xcb, 0x7f, 0x26, 0xec, 0x98, 0x61, 0x43, 0xa8, 0x5b, - 0xdf, 0x38, 0x8c, 0xdf, - 0xa5, 0xcd, 0xb6, 0x97, 0x7e, 0xf3, 0x6c, 0x4a, 0x8e, 0x5d, 0x09, 0x9d, - 0x37, 0x03, 0xea, 0x37, - 0x6b, 0x4d, 0x7b, 0xb2, 0x99, 0xc3, 0xaa, 0x8a, 0x3f, 0x16, 0xf8, 0x2f, - 0x76, 0x65, 0x4e, 0x76, - 0xd3, 0xef, 0xb7, 0xe7, 0x67, 0x8f, 0xb1, 0x79, 0xfd, 0x90, 0x6b, 0x99, - 0x0b, 0x15, 0x95, 0x0b, - 0xf0, 0xe4, 0x6d, 0x5d, 0x9c, 0xc4, 0x6f, 0x96, 0xea, 0x70, 0x98, 0x77, - 0xb8, 0xb2, 0x73, 0xb8, - 0x5d, 0x9e, 0x73, 0xb4, 0x51, 0xa5, 0x8d, 0xd1, 0x21, 0xb1, 0x6e, 0x0f, - 0x55, 0xd5, 0x30, 0x55, - 0xc8, 0x67, 0xb3, 0xe4, 0x03, 0xbc, 0x43, 0xb5, 0xf2, 0x22, 0x20, 0x89, - 0xfb, 0x4d, 0xaa, 0xfb, - 0xc5, 0xa5, 0x5a, 0xda, 0x26, 0xe4, 0xeb, 0x16, 0x34, 0x02, 0x87, 0xab, - 0xc6, 0xf6, 0x0a, 0xc6, - 0xbd, 0xd7, 0x8d, 0x15, 0x68, 0x86, 0x3d, 0x5d, 0x41, 0x3a, 0xcb, 0x71, - 0x9a, 0xaf, 0xd2, 0x9a, - 0xc3, 0x42, 0x24, 0x1b, 0xc2, 0x68, 0x6e, 0x63, 0x77, 0x6b, 0x56, 0x90, - 0x7c, 0xdd, 0x04, 0x7c, - 0xe4, 0xf3, 0xaa, 0x9e, 0x81, 0x6a, 0xf7, 0x6b, 0xa3, 0xc5, 0x3b, 0xed, - 0xa2, 0x48, 0x57, 0xa2, - 0xaf, 0x27, 0x34, 0x17, 0x91, 0xa4, 0x20, 0xd5, 0x4b, 0xe6, 0xb9, 0xd0, - 0x3a, 0x7e, 0xf8, 0x3a, - 0xb8, 0xa2, 0xcc, 0x55, 0xfe, 0x4c, 0x1b, 0xf3, 0xc2, 0x86, 0x93, 0xb6, - 0x7d, 0x70, 0xdb, 0x7d, - 0xcb, 0xf5, 0x8c, 0x65, 0x71, 0xfa, 0xe0, 0x6e, 0x32, 0xf7, 0xa9, 0x75, - 0xa6, 0xb9, 0xad, 0xa6, - 0xc1, 0x1f, 0x0e, 0xe5, 0x9e, 0xad, 0xac, 0xf1, 0xf7, 0x4c, 0x19, 0x38, - 0xab, 0xc4, 0xbf, 0xab, - 0xb5, 0x60, 0x25, 0x6b, 0xdb, 0x14, 0xb3, 0x50, 0x04, 0xa6, 0x34, 0x94, - 0x40, 0xcb, 0x7b, 0x40, - 0x6f, 0xf7, 0x2f, 0x8d, 0x21, 0x8a, 0xed, 0x6d, 0xfc, 0x58, 0x66, 0xbc, - 0x1b, 0x57, 0xfb, 0x1b, - 0x4c, 0xfc, 0xf5, 0x37, 0xda, 0xc1, 0x33, 0x82, 0xeb, 0xb8, 0x95, 0x52, - 0xa8, 0xf0, 0x1d, 0xa8, - 0x97, 0xa4, 0xea, 0xae, 0x0e, 0xdc, 0x0c, 0xf6, 0x53, 0xb4, 0x01, 0x2e, - 0x79, 0x81, 0x21, 0x79, - 0x88, 0x96, 0xba, 0x92, 0xd2, 0xa6, 0xb9, 0xdd, 0x9f, 0x48, 0xd4, 0xad, - 0xe4, 0xeb, 0xab, 0xe4, - 0x61, 0xa7, 0xf9, 0x32, 0x76, 0x94, 0xe6, 0x15, 0xfa, 0xad, 0x48, 0x62, - 0x7b, 0x18, 0x5c, 0x7b, - 0x57, 0x74, 0xf1, 0x34, 0xbe, 0xf2, 0xc1, 0x4e, 0xe4, 0x0a, 0xde, 0x42, - 0x58, 0xa8, 0x22, 0x58, - 0x11, 0x62, 0x86, 0x83, 0x8b, 0x64, 0xbe, 0x53, 0xca, 0x09, 0xfb, 0x5d, - 0xfd, 0x25, 0x2d, 0xfd, - 0x99, 0xf4, 0x3c, 0x11, 0x59, 0xc2, 0x07, 0x8e, 0x55, 0x41, 0x2f, 0xf0, - 0x19, 0xce, 0x86, 0x19, - 0x72, 0x98, 0x55, 0x4f, 0xa1, 0x35, 0x9a, 0xd4, 0xb0, 0x83, 0xfc, 0x97, - 0x51, 0x24, 0xca, 0x51, - 0x83, 0xb3, 0x2d, 0x6d, 0x13, 0x72, 0x94, 0x0b, 0x1a, 0x01, 0xa2, 0xb4, - 0x63, 0x7b, 0x05, 0x63, - 0xbf, 0x8a, 0xa7, 0xeb, 0x34, 0x43, 0xff, 0xcf, 0xc1, 0x1d, 0x84, 0xd9, - 0x4d, 0xb6, 0x69, 0x4d, - 0x55, 0x29, 0xdb, 0xca, 0xe2, 0x37, 0x03, 0xdc, 0x64, 0x2d, 0x91, 0xea, - 0x8f, 0xb1, 0x99, 0x8f, - 0x73, 0x57, 0x40, 0x30, 0x8f, 0xb6, 0xfb, 0x9d, 0xf0, 0x71, 0x3a, 0xc3, - 0xdb, 0xc9, 0x76, 0xdb, - 0x9d, 0x4e, 0x68, 0x2e, 0xe1, 0x8b, 0x40, 0x69, 0x96, 0x0f, 0xb1, 0x63, - 0x74, 0xfc, 0x33, 0x74, - 0x81, 0xee, 0x07, 0x93, 0x4f, 0xb7, 0x56, 0x99, 0x9a, 0x26, 0xed, 0x1c, - 0xb4, 0x62, 0xbe, 0xb4, - 0x3f, 0xab, 0xb5, 0x07, 0x55, 0x77, 0xc8, 0x1f, 0x1b, 0xc9, 0xaf, 0x91, - 0x73, 0x39, 0x6b, 0x73, - 0xb3, 0x87, 0x5b, 0xaa, 0x3f, 0x98, 0x36, 0x25, 0x47, 0xcf, 0xe5, 0xaf, - 0xfa, 0xe0, 0x75, 0xfa, - 0xbb, 0x30, 0xf3, 0xd4, 0x8c, 0x0a, 0xb8, 0x28, 0x02, 0x53, 0x1a, 0x4a, - 0x20, 0x84, 0xdc, 0x20, - 0xd6, 0x9a, 0xf6, 0xa7, 0xf1, 0x45, 0x97, 0xd7, 0x7e, 0x2c, 0x33, 0x5e, - 0xec, 0xca, 0x9c, 0xec, - 0xea, 0xa3, 0x7c, 0x21, 0xd6, 0x74, 0xfc, 0x13, 0xa5, 0x30, 0x15, 0x33, - 0xc2, 0x07, 0xf0, 0xc2, - 0x25, 0xec, 0xa4, 0x7b, 0x1f, 0xc7, 0x5b, 0x9a, 0x54, 0x89, 0x22, 0xd5, - 0x09, 0x8c, 0xe8, 0x09, - 0xce, 0x80, 0xcd, 0x25, 0xe7, 0x30, 0xc6, 0xc0, 0xb1, 0x4b, 0xf1, 0xb2, - 0x41, 0x66, 0xa4, 0x41, - 0x63, 0xfa, 0xd3, 0xcc, 0x2a, 0x51, 0x24, 0x87, 0x7a, 0x8a, 0x07, 0xca, - 0xac, 0x01, 0xe7, 0xac, - 0x45, 0x84, 0x48, 0x36, 0x47, 0xd0, 0xdc, 0xc6, 0xee, 0xd6, 0xac, 0xe3, - 0xf8, 0x79, 0x08, 0xf8, - 0x32, 0x69, 0x5c, 0x39, 0x70, 0x2f, 0x60, 0xbc, 0xdd, 0xe9, 0x08, 0xb3, - 0x4e, 0x82, 0xcb, 0x4e, - 0xd7, 0x55, 0xe3, 0xd8, 0xdf, 0xc6, 0xf6, 0x9e, 0x3e, 0xde, 0xf5, 0x0a, - 0x66, 0x27, 0x20, 0x66, - 0x9e, 0xdc, 0x57, 0xaf, 0x93, 0xcd, 0xe3, 0xb2, 0x56, 0xda, 0x38, 0x9f, - 0x29, 0x08, 0x34, 0x29, - 0x08, 0xb7, 0xa8, 0x7e, 0xb3, 0x92, 0x8e, 0x0d, 0x45, 0x9c, 0xff, 0xe5, - 0xda, 0x64, 0xa9, 0xda, - 0x8d, 0xe3, 0xfb, 0xd2, 0x44, 0x6c, 0x9f, 0x73, 0x1c, 0xf4, 0x8c, 0x6a, - 0x03, 0x34, 0xa2, 0x03, - 0x79, 0xbd, 0xc2, 0xb0, 0x60, 0xe1, 0xb7, 0x02, 0x35, 0xca, 0x8a, 0x8e, - 0xd6, 0xb4, 0x64, 0xd6, - 0xab, 0x9d, 0x60, 0x28, 0x29, 0xed, 0x67, 0x32, 0x88, 0xa8, 0x27, 0x43, - 0x57, 0x4c, 0x4d, 0x57, - 0x36, 0xd3, 0x08, 0x06, 0xc8, 0x66, 0x27, 0x5b, 0x1e, 0xa7, 0x96, 0x20, - 0x23, 0xb0, 0x7e, 0x23, - 0xfb, 0xc1, 0xfa, 0xa2, 0x5d, 0x10, 0x42, 0x40, 0x6f, 0x39, 0xee, 0x6e, - 0x3f, 0x22, 0xdd, 0x3f, - 0xec, 0x44, 0x02, 0xe0, 0x32, 0xf8, 0x79, 0x66, 0xe6, 0x59, 0xc4, 0x08, - 0x78, 0x2c, 0xfe, 0x78, - 0x4e, 0xa1, 0xdf, 0xc9, 0x86, 0x04, 0xf1, 0x10, 0x6b, 0x9f, 0xda, 0xfa, - 0x7f, 0xe9, 0xa6, 0x7f, - 0x7e, 0x95, 0xa9, 0x0e, 0xaa, 0xee, 0x53, 0x3e, 0x36, 0x51, 0x9d, 0xe1, - 0xe6, 0x72, 0xd6, 0xe6, - 0xd0, 0x7d, 0x88, 0x66, 0x15, 0xc9, 0x12, 0xa2, 0x3d, 0x45, 0xe2, 0x65, - 0x56, 0xe1, 0x92, 0x56, - 0x6c, 0x65, 0x10, 0x0c, 0x53, 0xcc, 0x4e, 0xb6, 0x3c, 0x8d, 0xef, 0x40, - 0x46, 0xa3, 0xfc, 0x46, - 0xf3, 0x76, 0x52, 0xdc, 0xee, 0x82, 0xcc, 0x4d, 0x2a, 0xa5, 0x11, 0x8b, - 0xe5, 0x46, 0x74, 0xe5, - 0x5f, 0xc3, 0x59, 0x4a, 0x0d, 0x60, 0x4f, 0x43, 0xa1, 0x96, 0x21, 0xa7, - 0x82, 0xcc, 0x8b, 0x82, - 0xff, 0x7b, 0xae, 0x9d, 0xe5, 0x59, 0x05, 0xa7, 0xac, 0x77, 0x70, 0xfd, - 0x52, 0x10, 0x68, 0x52, - 0x8a, 0xcb, 0x90, 0x6c, 0x8e, 0x63, 0x7b, 0x4f, 0x1f, 0x6f, 0x9b, 0x05, - 0x33, 0xf2, 0x10, 0x33, - 0x56, 0xbb, 0xe4, 0x4b, 0x90, 0x71, 0xa0, 0x07, 0xa4, 0xf8, 0x18, 0x16, - 0xd2, 0x45, 0x9e, 0xd2, - 0xdd, 0xbf, 0x61, 0x58, 0x30, 0x91, 0xba, 0x01, 0xfb, 0x65, 0x45, 0x47, - 0x6b, 0x5a, 0x32, 0x6b, - 0xb4, 0xaf, 0x30, 0x14, 0xf5, 0x97, 0xd2, 0x19, 0x44, 0x54, 0xf2, 0xc0, - 0xca, 0x26, 0xc7, 0xca, - 0x04, 0xba, 0x54, 0x3f, 0xb8, 0x49, 0x47, 0xe7, 0xc3, 0x4e, 0x9e, 0x93, - 0x6d, 0x32, 0xb5, 0x6d, - 0xbe, 0x45, 0xb2, 0x94, 0x1a, 0xc0, 0x9e, 0x86, 0x81, 0xef, 0x42, 0x8d, - 0xc7, 0x5b, 0xd5, 0xc7, - 0x1b, 0x88, 0x04, 0x03, 0x64, 0x33, 0xf2, 0xcc, 0x0f, 0xb2, 0x4b, 0x10, - 0xf0, 0x58, 0x3f, 0xf0, - 0x9c, 0x81, 0x7d, 0x51, 0xcf, 0x08, 0x21, 0x20, 0xd6, 0xfd, 0x77, 0x37, - 0xfe, 0x11, 0x8f, 0xfe, - 0x5e, 0x0c, 0x4c, 0x35, 0x23, 0xe3, 0x2e, 0x0a, 0xe1, 0x64, 0xe7, 0xf3, - 0x08, 0x21, 0x37, 0x08, - 0x07, 0x28, 0x6b, 0xbe, 0xca, 0x0f, 0xe4, 0x3c, 0x03, 0x9b, 0x17, 0x6f, - 0x30, 0xc6, 0xb2, 0x30, - 0x8c, 0x2c, 0xee, 0xad, 0x6a, 0xef, 0xfe, 0x3a, 0x5c, 0x06, 0x4a, 0x3e, - 0x89, 0xd9, 0x1e, 0x89, - 0x0f, 0x9f, 0xc3, 0xc0, 0x79, 0x9d, 0x6a, 0x31, 0x46, 0x07, 0xe8, 0x8a, - 0xea, 0xa2, 0x1b, 0xea, - 0x6d, 0xaa, 0x05, 0x73, 0x7d, 0x4f, 0x2f, 0xff, 0x7c, 0x7f, 0x29, 0x14, - 0xcc, 0x4e, 0x40, 0xcc, - 0xf4, 0x5e, 0x39, 0x62, 0x24, 0x8d, 0x28, 0x71, 0x29, 0x3e, 0x06, 0xe4, - 0xd5, 0x80, 0xc6, 0xd5, - 0x26, 0x7e, 0x9b, 0xfa, 0x6d, 0x81, 0xf8, 0x41, 0x94, 0x5c, 0xab, 0x29, - 0x54, 0x78, 0xef, 0x54, - 0x71, 0x0a, 0x6a, 0xce, 0xd3, 0x73, 0x39, 0x0f, 0x70, 0x56, 0x75, 0x6b, - 0x0c, 0xd0, 0xcd, 0x0c, - 0x1c, 0xa0, 0x6f, 0xbd, 0xae, 0x3c, 0x16, 0xf0, 0x0c, 0x29, 0x5c, 0x7f, - 0xc0, 0x9e, 0x8d, 0xc0, - 0x94, 0x36, 0xd5, 0x2f, 0x7c, 0x9a, 0xaf, 0x2d, 0x93, 0x61, 0x88, 0xd2, - 0x24, 0x75, 0x26, 0x24, - 0x22, 0xc4, 0xcf, 0xc5, 0xd5, 0xc8, 0xbf, 0xa6, 0x57, 0x12, 0x35, 0xba, - 0x39, 0x4a, 0x5a, 0x39, - 0xeb, 0x6c, 0x69, 0x5e, 0xf8, 0xf7, 0x9d, 0x5a, 0xe5, 0xc2, 0xd3, 0x67, - 0x48, 0xea, 0x4c, 0x48, - 0xbc, 0x18, 0x98, 0x6a, 0x46, 0x05, 0x5c, 0x14, 0x01, 0xc8, 0x0d, 0x25, - 0x10, 0x42, 0x6e, 0x10, - 0x3c, 0x39, 0x8a, 0x86, 0x27, 0x31, 0x6b, 0xc4, 0xdb, 0x1c, 0x26, 0x6d, - 0x2e, 0xcd, 0x6c, 0x2e, - 0x15, 0xd8, 0xd2, 0xbc, 0x33, 0x2d, 0xf9, 0xb4, 0x09, 0x47, 0x65, 0xce, - 0x90, 0x17, 0x98, 0x90, - 0xe9, 0x31, 0x43, 0xa0, 0xa4, 0x32, 0x5f, 0xc8, 0x65, 0xe5, 0x9c, 0xcf, - 0x9f, 0xf3, 0xf7, 0x9f, - 0x02, 0x5d, 0x2a, 0xfe, 0x5c, 0xc5, 0xc2, 0x92, 0x80, 0x27, 0x4f, 0xa8, - 0xd7, 0x19, 0xbb, 0xd7, - 0x46, 0x16, 0x77, 0xb7, 0x35, 0x96, 0x7f, 0x1d, 0x2e, 0x03, 0x25, 0x1f, - 0xa5, 0x8d, 0x0f, 0xa5, - 0xda, 0x97, 0x0a, 0xe6, 0xfa, 0x9e, 0x5e, 0x3d, 0xf8, 0xfe, 0x52, 0x28, - 0x5b, 0x9c, 0x80, 0x5b, - 0x19, 0xd5, 0x2e, 0xfd, 0x38, 0xf6, 0x30, 0x5e, 0x8f, 0x95, 0x04, 0xb8, - 0x27, 0x41, 0x84, 0x27, - 0xdb, 0x58, 0x1f, 0x99, 0xd4, 0x1d, 0x3f, 0x74, 0xb8, 0x0c, 0x94, 0x7c, - 0xd1, 0x71, 0x3c, 0xd1, - 0x1e, 0xfd, 0x45, 0x43, 0xf2, 0xf9, 0xd4, 0x62, 0x8c, 0x0e, 0x13, 0xd7, - 0x17, 0x87, 0x36, 0x17, - 0x17, 0x85, 0xf8, 0x42, 0x6f, 0xe8, 0x3b, 0x26, 0x89, 0x60, 0x2a, 0x66, - 0x47, 0x0e, 0x23, 0x47, - 0x4a, 0x1b, 0x8b, 0xf6, 0x3e, 0x4d, 0xb6, 0xf7, 0xa8, 0xd1, 0x44, 0x69, - 0x12, 0xdb, 0x13, 0x12, - 0x0a, 0xea, 0x82, 0x80, 0xef, 0x57, 0x4c, 0x9f, 0xc5, 0xbb, 0xb0, 0x4d, - 0x0d, 0x7d, 0x12, 0x0d, - 0xd9, 0x05, 0x35, 0x67, 0x88, 0xd8, 0xfd, 0xe6, 0x38, 0x2b, 0xdb, 0xd4, - 0x06, 0x68, 0x87, 0x06, - 0x89, 0x59, 0xaf, 0xed, 0xfc, 0x25, 0xd8, 0x94, 0xdf, 0xba, 0x12, 0xf9, - 0x6e, 0x06, 0x17, 0x6e, - 0x78, 0x72, 0xd7, 0xcf, 0x4e, 0x62, 0xd6, 0x4b, 0x75, 0x38, 0x4c, 0xda, - 0x5c, 0x59, 0xd8, 0x5c, - 0x76, 0x22, 0x01, 0x70, 0x19, 0x7c, 0xdd, 0x33, 0x73, 0xcd, 0x62, 0x04, - 0x3c, 0x16, 0x7f, 0x3c, - 0x27, 0xb1, 0x8e, 0x85, 0x43, 0x02, 0x99, 0x08, 0xd4, 0xae, 0x6d, 0x7d, - 0xde, 0x95, 0x53, 0xde, - 0x18, 0x1a, 0x3b, 0x82, 0x16, 0x75, 0x51, 0x17, 0xcf, 0x67, 0xc2, 0xec, - 0xad, 0xac, 0x38, 0xad, - 0x23, 0x0b, 0xda, 0xba, 0xfb, 0x4b, 0xde, 0xef, 0x17, 0xe0, 0xf3, 0xee, - 0xb3, 0xa7, 0xe6, 0xb3, - 0xf2, 0xb9, 0x47, 0xa3, 0xc0, 0x01, 0xad, 0x04, 0x6a, 0x57, 0xd7, 0xdf, - 0x6f, 0xab, 0xc8, 0x6f, - 0x95, 0xf9, 0xc0, 0x50, 0x52, 0x19, 0xce, 0x64, 0xd3, 0x93, 0x4e, 0x86, - 0xae, 0x98, 0x9a, 0xae, - 0xd5, 0x08, 0xc9, 0x26, 0x83, 0x03, 0x34, 0x0c, 0xbe, 0xf9, 0xba, 0xa2, - 0xb1, 0x3e, 0x9b, 0xb1, - 0xa9, 0xc0, 0x4a, 0xd6, 0x75, 0x28, 0xa5, 0xa0, 0x08, 0x8f, 0x68, 0xeb, - 0x80, 0x55, 0xf6, 0x80, - 0x84, 0x9b, 0x46, 0xd3, 0xd9, 0x7d, 0x70, 0x37, 0x19, 0x9a, 0xb5, 0xdb, - 0x53, 0xbd, 0xb7, 0x53, - 0xe1, 0x86, 0xeb, 0xde, 0x17, 0xa0, 0xd1, 0xc5, 0x20, 0x79, 0x63, 0x2a, - 0x45, 0x97, 0x5e, 0x45, - 0x1d, 0x6f, 0x7a, 0xc2, 0x80, 0xbf, 0x77, 0xb9, 0x4c, 0xdb, 0x9a, 0x2b, - 0x4a, 0x73, 0x31, 0x4a, - 0x93, 0x1e, 0xbe, 0x91, 0xb6, 0x95, 0x4b, 0x11, 0x90, 0xfa, 0x9f, 0xbd, - 0x14, 0xb3, 0x94, 0x14, - 0x28, 0x2e, 0x4d, 0x45, 0x3a, 0x9f, 0xf3, 0x39, 0x92, 0xa9, 0x85, 0xf7, - 0x34, 0x37, 0x48, 0x34, - 0xc6, 0x37, 0x65, 0x5b, 0x54, 0xa2, 0x48, 0xcd, 0xf4, 0xd7, 0x0e, 0x57, - 0x9b, 0x02, 0x0d, 0x9b, - 0x7b, 0xe0, 0xe8, 0x4e, 0x3c, 0x24, 0x75, 0x90, 0xb5, 0xed, 0xc5, 0x26, - 0x01, 0xad, 0xdf, 0x01, - 0x65, 0x1d, 0xad, 0x0d, 0xce, 0xdd, 0xa1, 0xf2, 0x39, 0xe3, 0xd6, 0xf1, - 0x16, 0x2a, 0xe9, 0x16, - 0x75, 0xb0, 0x3e, 0xf1, 0x6b, 0x3a, 0x7e, 0xe8, 0xb3, 0x18, 0xeb, 0xf8, - 0x61, 0xe2, 0x78, 0x61, - 0x7c, 0xc8, 0x83, 0xf0, 0xf6, 0x2b, 0x91, 0xac, 0xb6, 0x76, 0xd2, 0x49, - 0x31, 0x6b, 0x6d, 0x31, - 0xe3, 0xdb, 0xc1, 0x20, 0x4b, 0x65, 0x13, 0x57, 0xa0, 0x5e, 0x2c, 0x82, - 0x92, 0x8e, 0xe5, 0x92, - 0xee, 0x19, 0x28, 0x1e, 0x6e, 0x3d, 0xbb, 0xf4, 0x66, 0x7e, 0x8b, 0xa0, - 0xaf, 0x35, 0x45, 0xaf, - 0x21, 0x56, 0xf0, 0x44, 0xa7, 0x8e, 0x1c, 0x7d, 0x97, 0xc7, 0xbc, 0x46, - 0x64, 0xbe, 0x5d, 0x64, - 0x8e, 0x71, 0xc4, 0x53, 0x36, 0x2a, 0x3c, 0xa8, 0xdc, 0x21, 0x05, 0x96, - 0x5e, 0xc0, 0xa5, 0x5e, - 0xf9, 0x9c, 0xd0, 0x5c, 0x01, 0xd5, 0x80, 0xd2, 0xef, 0x1e, 0xa1, 0xc6, - 0xe8, 0x3b, 0x66, 0xe8, - 0x01, 0xcf, 0x15, 0x7f, 0x2e, 0x83, 0x61, 0x49, 0x40, 0xf2, 0xc6, 0x54, - 0x8a, 0xed, 0xbc, 0x8a, - 0x5b, 0x79, 0x0d, 0x75, 0xb5, 0x29, 0x08, 0xa4, 0x62, 0xd8, 0xbf, 0x34, - 0xef, 0xfe, 0x3e, 0xef, - 0x91, 0x43, 0x94, 0x6f, 0xea, 0x50, 0x89, 0x83, 0x10, 0xdd, 0xd0, 0x15, - 0xc3, 0xaa, 0x2f, 0xc3, - 0x14, 0x17, 0xc7, 0xc3, 0x1d, 0xae, 0x98, 0xfd, 0x49, 0xb5, 0xa3, 0x9a, - 0x1a, 0xfa, 0x24, 0x1a, - 0x7a, 0x2f, 0xfd, 0x31, 0x12, 0xa7, 0x14, 0xd9, 0xf5, 0x1f, 0x03, 0x72, - 0x8b, 0x40, 0x63, 0x8b, - 0xf6, 0x03, 0x13, 0x9c, 0x78, 0x48, 0xea, 0xe3, 0xa9, 0x19, 0x49, 0x4c, - 0x02, 0x99, 0x7d, 0x02, - 0xb1, 0xda, 0x71, 0x54, 0x63, 0x5d, 0xf4, 0xb7, 0xc7, 0xe8, 0xaa, 0x07, - 0x2d, 0xf9, 0xce, 0x2d, - 0xb7, 0x3d, 0x0f, 0x95, 0x87, 0xd1, 0x71, 0xc2, 0x84, 0x81, 0x7b, 0x3c, - 0x97, 0xd2, 0xc0, 0x97, - 0xca, 0x3a, 0x99, 0x1a, 0x5f, 0x79, 0x81, 0x27, 0x72, 0x05, 0x6f, 0x21, - 0x2c, 0x54, 0x11, 0x2c, - 0x5a, 0xb6, 0x18, 0x0a, 0x9b, 0xaa, 0x69, 0xed, 0x22, 0x2a, 0x79, 0x60, - 0x65, 0x13, 0x82, 0x65, - 0xf8, 0x53, 0xc5, 0x23, 0x2f, 0x56, 0xe1, 0x9b, 0xaf, 0xec, 0x67, 0x92, - 0x62, 0xd6, 0xda, 0x62, - 0xcc, 0xdd, 0xe7, 0xdb, 0xbb, 0xf5, 0x04, 0x52, 0x31, 0x6c, 0xbe, 0x1a, - 0x96, 0x7f, 0x1f, 0x96, - 0x47, 0xd9, 0x62, 0xc8, 0x1b, 0x15, 0x1e, 0x54, 0x6e, 0xf1, 0xe3, 0x4b, - 0x2f, 0x60, 0xb3, 0x2f, - 0x96, 0x6b, 0xff, 0xd1, 0x20, 0x5f, 0x6d, 0xbf, 0x13, 0x46, 0xc7, 0x7a, - 0xf3, 0x6c, 0x9d, 0xf3, - 0x6e, 0x38, 0x3a, 0xf2, 0x0f, 0x09, 0x8c, 0x24, 0xbc, 0xaa, 0xa0, 0xe8, - 0x91, 0xba, 0x47, 0x91, - 0x13, 0x3f, 0xac, 0x7d, 0xd7, 0xa1, 0x7c, 0xc1, 0x4a, 0x2e, 0xb4, 0xf5, - 0x2a, 0x3c, 0x96, 0x2a, - 0x24, 0x23, 0xb1, 0x04, 0x31, 0x44, 0x3a, 0xd3, 0x14, 0x7b, 0xe4, 0x81, - 0x83, 0x61, 0x54, 0x83, - 0x74, 0x7f, 0x2b, 0x8e, 0x45, 0xb9, 0x1f, 0xa1, 0xf3, 0xea, 0x2d, 0xac, - 0xeb, 0x0f, 0xc4, 0xeb, - 0x09, 0x78, 0xbd, 0x01, 0x9d, 0x11, 0xef, 0x44, 0x05, 0x6e, 0x39, 0xb1, - 0x50, 0x89, 0x15, 0x50, - 0x03, 0x92, 0x3f, 0x81, 0x72, 0x46, 0xa3, 0xdb, 0xc0, 0xd5, 0x89, 0xfc, - 0x5d, 0xf4, 0x07, 0x5d, - 0x30, 0x34, 0x76, 0xc7, 0x2c, 0xea, 0xa2, 0x2e, 0x5d, 0xce, 0x47, 0x1b, - 0x99, 0x9b, 0x70, 0x99, - 0x50, 0x5c, 0x9a, 0x8a, 0x74, 0xfd, 0x25, 0x72, 0xe7, 0x91, 0xc9, 0x2d, - 0x68, 0x6e, 0x90, 0x68, - 0x4f, 0x6e, 0xca, 0xb6, 0xa8, 0x87, 0x90, 0x59, 0x2b, 0x6d, 0x1c, 0xae, - 0xf5, 0x04, 0x1a, 0xf5, - 0x0e, 0x50, 0xd6, 0xbf, 0x57, 0x1e, 0x0b, 0x78, 0x06, 0xf5, 0x2e, 0xde, - 0x60, 0x4f, 0xa7, 0x60, - 0x7d, 0x07, 0x96, 0x8f, 0xd8, 0xa8, 0xf0, 0xe5, 0xf6, 0x84, 0x14, 0x1d, - 0xbb, 0x86, 0xd1, 0xbb, - 0xb9, 0x6d, 0xd9, 0x2a, 0xd0, 0xcf, 0x7a, 0xba, 0x82, 0x74, 0x55, 0xe2, - 0xf7, 0x9d, 0x67, 0xf7, - 0x37, 0x1c, 0x1d, 0x79, 0xe6, 0xe5, 0x46, 0x12, 0x5e, 0x55, 0x50, 0x74, - 0xa9, 0x5d, 0xc2, 0xa9, - 0x54, 0xe6, 0xce, 0xb5, 0xcc, 0xb4, 0x62, 0x95, 0x24, 0xdf, 0x57, 0xbe, - 0x05, 0x5c, 0x25, 0x05, - 0x1f, 0x32, 0x50, 0x3c, 0xdc, 0x7a, 0xb5, 0x2b, 0xcc, 0xfc, 0xd5, 0x83, - 0x9d, 0x6a, 0x8a, 0x9d, - 0xc2, 0x8d, 0x31, 0x64, 0xec, 0xeb, 0x0f, 0x2a, 0x37, 0x99, 0x90, 0xc4, - 0xf6, 0x30, 0xb8, 0xf6, - 0x33, 0xa6, 0x49, 0x46, 0x5e, 0xac, 0x01, 0xf5, 0x9d, 0x1b, 0xce, 0xe7, - 0xc4, 0x6f, 0x77, 0xc4, - 0x3a, 0xde, 0xf4, 0x47, 0xc3, 0xbd, 0xee, 0xb1, 0x98, 0x75, 0xf7, 0x56, - 0x94, 0xe6, 0x62, 0x94, - 0xe5, 0x3c, 0xbf, 0xe1, 0xaf, 0xe9, 0x96, 0x22, 0xe3, 0x37, 0xfd, 0xb9, - 0x28, 0xa5, 0xeb, 0x28, - 0xe8, 0xfe, 0x56, 0xdf, 0x8a, 0xb1, 0x3e, 0x81, 0x25, 0x17, 0x5a, 0x9b, - 0x15, 0x1e, 0x4b, 0x15, - 0x12, 0xf0, 0xb9, 0x02, 0xf9, 0x22, 0x1d, 0x88, 0x0a, 0xdc, 0x72, 0xa1, - 0xa0, 0xd1, 0x2a, 0xa0, - 0x92, 0xd1, 0xab, 0xee, 0x98, 0x16, 0x2a, 0x58, 0xd0, 0x08, 0x59, 0xe9, - 0x9e, 0x5e, 0x28, 0x9e, - 0xac, 0xb5, 0x0b, 0x96, 0xe3, 0xe2, 0x83, 0x0e, 0x8b, 0x33, 0x30, 0x2c, - 0x67, 0x8a, 0xff, 0x67, - 0x34, 0x8e, 0x22, 0xf8, 0x94, 0xa3, 0xe5, 0xc9, 0x9e, 0x80, 0xd9, 0x88, - 0xf4, 0xa9, 0xc5, 0xf4, - 0x52, 0x01, 0xb0, 0x74, 0x28, 0x38, 0xe7, 0xe0, 0x67, 0xb6, 0x86, 0x85, - 0xbf, 0x77, 0x2b, 0xbf, - 0xed, 0x8b, 0x17, 0x9f, 0x1c, 0x7b, 0x18, 0x2f, 0xa6, 0xab, 0x02, 0x5c, - 0xf2, 0xc1, 0x42, 0xf2, - 0xfa, 0x0e, 0xef, 0xdd, 0x73, 0x93, 0x23, 0x09, 0x2f, 0xcb, 0x28, 0x3a, - 0xb5, 0xcf, 0x61, 0xb5, - 0x98, 0x3b, 0x29, 0x6e, 0x77, 0x41, 0x66, 0xc7, 0x15, 0xb3, 0xe9, 0xa4, - 0x93, 0x23, 0x3a, 0x93, - 0xdf, 0xe2, 0x4b, 0xa6, 0x6c, 0x54, 0x78, 0x93, 0x7b, 0x42, 0x0a, 0xef, - 0xbc, 0x43, 0x89, 0xbc, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x66, 0x8f, 0x92, 0x8c, 0xbc, 0x9b, 0x02, 0x29, 0xf9, 0x36, 0x5f, 0x0d, - 0x4b, 0xde, 0xee, 0x4b, - 0x2f, 0x06, 0x26, 0xfb, 0xf0, 0x90, 0x17, 0x05, 0x91, 0x32, 0x92, 0x98, - 0x04, 0xf1, 0xfa, 0x04, - 0x3e, 0x64, 0xa0, 0x78, 0x7b, 0xf4, 0xa9, 0x56, 0x5b, 0x3b, 0x69, 0xc5, - 0xf9, 0xd4, 0xd7, 0xf9, - }, - { /* 6 */ - 0x51, 0x8b, 0xc0, 0x48, 0x41, 0xdb, 0x9d, 0x79, 0x04, 0x5b, 0xb3, 0x42, - 0x6e, 0xe5, 0x18, 0xc6, - 0x33, 0xea, 0x25, 0x27, 0xfa, 0x81, 0x30, 0xe7, 0xa3, 0x06, 0xf7, 0x12, - 0x65, 0x8f, 0x4c, 0x36, - 0xa4, 0x98, 0x5a, 0x40, 0x48, 0x42, 0xb3, 0xc9, 0x3b, 0x2e, 0x19, 0xca, - 0x9c, 0x04, 0x9a, 0x9d, - 0x67, 0xeb, 0x11, 0xd7, 0x14, 0x97, 0xc2, 0x59, 0x6c, 0x89, 0xa6, 0x39, - 0x6b, 0x80, 0xab, 0x4b, - 0x0a, 0xd7, 0x2b, 0xb3, 0x9d, 0x59, 0xde, 0x4d, 0x55, 0x6b, 0x07, 0xd2, - 0xc0, 0x17, 0x3d, 0xb5, - 0xe7, 0x33, 0xd5, 0x7d, 0x3a, 0x1c, 0x1b, 0x11, 0xa6, 0x3b, 0x18, 0xa1, - 0xf1, 0xc2, 0x52, 0x20, - 0x28, 0xda, 0xac, 0x89, 0x31, 0xa7, 0xfe, 0xf7, 0x97, 0x6f, 0x1c, 0xce, - 0x86, 0x5c, 0xf4, 0x91, - 0x1a, 0xcc, 0xd2, 0x37, 0xe8, 0x70, 0x6c, 0x44, 0xdd, 0xec, 0x60, 0xc1, - 0x42, 0x8e, 0x8b, 0x80, - 0x6c, 0xc0, 0x61, 0xfd, 0xaa, 0x98, 0xbe, 0x40, 0xd0, 0x67, 0x2a, 0xf6, - 0x0a, 0xca, 0xa5, 0xd9, - 0x65, 0xd0, 0xa7, 0x26, 0x52, 0x3b, 0x45, 0xf1, 0x7d, 0x40, 0x73, 0x03, - 0xea, 0x3a, 0xcd, 0x05, - 0xfa, 0x4e, 0x45, 0x03, 0x3b, 0x0d, 0x9f, 0x3a, 0xa1, 0xca, 0x4f, 0x33, - 0x52, 0x1c, 0x40, 0x55, - 0xe8, 0x6e, 0x0a, 0x76, 0x08, 0x88, 0xaa, 0x9b, 0x38, 0x84, 0xfd, 0x1a, - 0x51, 0x3f, 0x90, 0x2e, - 0xac, 0x74, 0xc7, 0x02, 0x93, 0xb7, 0xea, 0x2c, 0x7f, 0x8c, 0xcb, 0x22, - 0xdd, 0xa9, 0xc1, 0x66, - 0x5a, 0xa0, 0xb0, 0x62, 0xff, 0xd4, 0xe1, 0x60, 0xb8, 0xb5, 0x3f, 0x8d, - 0x0f, 0xaf, 0x16, 0x54, - 0xa9, 0xfe, 0x33, 0xba, 0x3c, 0x7a, 0x85, 0xeb, 0xb4, 0x58, 0x29, 0x4b, - 0xbd, 0x43, 0x3e, 0xdd, - 0x30, 0x2d, 0xc8, 0x4f, 0x9f, 0x7b, 0x15, 0x1b, 0x5b, 0x4a, 0xa9, 0x35, - 0x45, 0x68, 0x19, 0x5f, - 0x8b, 0xf3, 0xb4, 0x80, 0x90, 0x84, 0xa5, 0x51, 0x76, 0x5c, 0x32, 0x57, - 0xfb, 0x08, 0xf7, 0xf9, - 0x83, 0x1f, 0x29, 0xc2, 0x4b, 0x71, 0xfc, 0xb4, 0x32, 0xfe, 0xe0, 0xbf, - 0xba, 0xa5, 0xac, 0x02, - 0xef, 0xdf, 0x48, 0x3f, 0xe1, 0xe9, 0x42, 0xf4, 0xe2, 0x99, 0xca, 0x49, - 0xb0, 0x6f, 0x09, 0xdb, - 0x66, 0x17, 0x4a, 0x4e, 0x37, 0xc1, 0x60, 0x0d, 0x85, 0x0c, 0x2d, 0x24, - 0xca, 0xdd, 0x98, 0x6c, - 0x14, 0x6d, 0x56, 0xa5, 0xf9, 0xb2, 0x7f, 0x9a, 0xaa, 0xd6, 0x0e, 0x67, - 0x43, 0x2e, 0x7a, 0xa9, - 0x0d, 0x66, 0x69, 0xfa, 0x74, 0x38, 0x36, 0x22, 0x8f, 0x76, 0x30, 0x81, - 0x21, 0x47, 0xa4, 0x40, - 0x05, 0x8a, 0xf4, 0xb8, 0xaf, 0xcd, 0x6f, 0xc7, 0xcb, 0xd4, 0xe2, 0x69, - 0x60, 0xea, 0xff, 0xbb, - 0x92, 0xf8, 0x8b, 0xdf, 0x1d, 0x0e, 0xec, 0xe9, 0x53, 0xfc, 0x0c, 0xb1, - 0x99, 0x61, 0x29, 0x10, - 0x7a, 0x96, 0x81, 0xa9, 0x15, 0x86, 0x46, 0x72, 0x6b, 0x78, 0xf1, 0xab, - 0xc8, 0x5e, 0xb9, 0x3e, - 0x13, 0xdc, 0x14, 0xec, 0x10, 0xd3, 0x97, 0xf5, 0x70, 0xcb, 0x39, 0x34, - 0xa2, 0x7e, 0xe3, 0x5c, - 0xd8, 0x43, 0xc2, 0x39, 0x97, 0xf3, 0xbf, 0x80, 0x63, 0xce, 0x54, 0x2f, - 0x14, 0x57, 0x89, 0x71, - 0x87, 0x69, 0x86, 0xe3, 0xc7, 0xea, 0x31, 0x27, 0x10, 0xaf, 0x89, 0xcb, - 0x7b, 0x12, 0x60, 0x9e, - 0xb5, 0x7f, 0xf8, 0x5d, 0x1e, 0x3d, 0xa3, 0x94, 0x5a, 0x2c, 0xf5, 0xc4, - 0xbf, 0xc0, 0x1f, 0x8f, - 0xdf, 0xf2, 0x80, 0x70, 0x7e, 0x92, 0x57, 0xef, 0xb9, 0xd3, 0x63, 0x7c, - 0xf5, 0x07, 0x10, 0x84, - 0x91, 0x3f, 0x66, 0xb7, 0x78, 0xf4, 0xc9, 0x15, 0xab, 0xb0, 0x52, 0x96, - 0xb9, 0x86, 0x7c, 0x79, - 0x2d, 0x50, 0x58, 0x31, 0x9e, 0x6a, 0x91, 0x30, 0x5c, 0xbb, 0xfe, 0xa7, - 0xe6, 0xb6, 0x0b, 0x2a, - 0xa0, 0xee, 0xf5, 0x61, 0xc4, 0xd9, 0x7e, 0x5a, 0x19, 0x7f, 0x70, 0xbe, - 0x5d, 0xb3, 0x56, 0x01, - 0xbf, 0xa8, 0xd3, 0xee, 0x83, 0x64, 0x7d, 0xd9, 0x0f, 0x47, 0xf2, 0x16, - 0x7f, 0xd7, 0x22, 0x3a, - 0x24, 0x40, 0x9e, 0xea, 0x66, 0xc9, 0x6a, 0x81, 0xf1, 0x9c, 0xa7, 0x52, - 0x06, 0x46, 0x63, 0xf6, - 0x49, 0x7c, 0xa4, 0x8e, 0xef, 0x07, 0x76, 0x95, 0xc8, 0x7e, 0x06, 0xb9, - 0xad, 0xd1, 0xf5, 0x08, - 0xee, 0x23, 0x13, 0xa6, 0xc2, 0xbf, 0xe0, 0xa0, 0x0b, 0x1c, 0x41, 0x54, - 0x11, 0x32, 0x3a, 0xfc, - 0x2c, 0xac, 0x03, 0xa8, 0xbd, 0x3c, 0x33, 0x64, 0xb5, 0x3e, 0x75, 0xba, - 0x47, 0xeb, 0x38, 0x0d, - 0x1d, 0x7d, 0x90, 0x7e, 0x01, 0x11, 0x84, 0x2b, 0x07, 0xf1, 0x57, 0x92, - 0xa3, 0xde, 0x12, 0x75, - 0xcc, 0x2e, 0x94, 0x9c, 0x6e, 0x41, 0xc0, 0x1a, 0xc9, 0x18, 0x5a, 0x48, - 0x57, 0x79, 0xf3, 0xd8, - 0x7c, 0xdb, 0x98, 0x79, 0xdf, 0xb1, 0x0c, 0x49, 0x58, 0xe0, 0x4d, 0xe5, - 0x88, 0x53, 0x13, 0xec, - 0x8e, 0x79, 0x40, 0x38, 0x3f, 0x49, 0xca, 0x96, 0xbd, 0x88, 0xd0, 0x3e, - 0x9b, 0xe2, 0x08, 0x42, - 0xb8, 0x19, 0x91, 0xa7, 0x6a, 0x05, 0x95, 0xb6, 0xd5, 0x5a, 0xc5, 0x45, - 0x9e, 0x87, 0xbb, 0xcf, - 0xe6, 0xcf, 0x8e, 0xe4, 0x19, 0x4a, 0xb9, 0x45, 0x4f, 0xbe, 0x93, 0xbc, - 0x50, 0x9f, 0x61, 0x07, - 0xf4, 0xef, 0xc1, 0x91, 0x2a, 0xcf, 0x8c, 0xe4, 0xd6, 0xf0, 0x21, 0x95, - 0x53, 0xbc, 0xb1, 0x7c, - 0x26, 0x7b, 0x28, 0x1b, 0x20, 0x65, 0xed, 0x29, 0xe0, 0x55, 0x72, 0x68, - 0x87, 0xfc, 0x05, 0xb8, - 0x1b, 0x30, 0x89, 0xae, 0xcb, 0x26, 0xce, 0x10, 0x34, 0x69, 0xeb, 0xdc, - 0xe3, 0xd3, 0xb8, 0xa7, - 0x4f, 0x31, 0xbd, 0x5e, 0x25, 0x30, 0x3c, 0xae, 0xfb, 0xe6, 0xba, 0xf7, - 0xed, 0xdc, 0x5f, 0xda, - 0xd5, 0x25, 0xab, 0xc3, 0xe3, 0xcb, 0x89, 0xa2, 0xec, 0xb8, 0x64, 0xae, - 0x35, 0x10, 0x2d, 0x31, - 0xc5, 0x3e, 0x52, 0x47, 0x96, 0xe2, 0x3b, 0xab, 0x64, 0x3f, 0x03, 0xbd, - 0xb7, 0x89, 0x9b, 0x04, - 0x50, 0x77, 0x9b, 0xd1, 0x62, 0x8d, 0x3f, 0x2d, 0xed, 0xde, 0x38, 0x5f, - 0xcf, 0xb8, 0x2b, 0xe1, - 0x79, 0x51, 0x6c, 0xc1, 0x70, 0x7c, 0x63, 0x8e, 0x93, 0x34, 0xaf, 0x8c, - 0xe8, 0xb9, 0xec, 0x57, - 0x77, 0xf0, 0xe8, 0x53, 0x61, 0xbe, 0x70, 0x50, 0xe4, 0x0e, 0xc1, 0x2a, - 0xe9, 0x19, 0x1d, 0x7e, - 0x16, 0x56, 0xe0, 0x54, 0xbf, 0x1e, 0xf8, 0x32, 0xbb, 0x1f, 0xdb, 0x5d, - 0xc2, 0x94, 0x1c, 0xe7, - 0x52, 0x4c, 0x2d, 0x20, 0x24, 0x21, 0xb8, 0x85, 0xfc, 0x17, 0xed, 0x65, - 0x4e, 0x02, 0x4d, 0xaf, - 0x15, 0x91, 0x0d, 0x3c, 0xda, 0xe4, 0xdd, 0xce, 0x43, 0x53, 0x85, 0x7a, - 0xe2, 0x73, 0x49, 0x8e, - 0x9b, 0xe8, 0x4d, 0x04, 0xe5, 0xad, 0x17, 0x58, 0xfe, 0xdb, 0x55, 0x44, - 0x79, 0x91, 0x41, 0xcc, - 0xb4, 0x83, 0xa3, 0xc4, 0x3d, 0x6b, 0x01, 0xc0, 0xb3, 0xa9, 0x7e, 0xd9, - 0x1e, 0x9d, 0x2c, 0xa8, - 0x3e, 0x8c, 0x4c, 0xdd, 0x8e, 0xb9, 0x06, 0xc5, 0x2c, 0x70, 0xc7, 0x93, - 0x44, 0xc8, 0xe8, 0x76, - 0x80, 0xd8, 0xc4, 0xaa, 0x2e, 0x8b, 0xd9, 0x48, 0xca, 0xb2, 0xbe, 0x98, - 0x9a, 0x42, 0xf9, 0x6b, - 0x36, 0x60, 0xd1, 0x9f, 0x55, 0x4c, 0x5f, 0x20, 0x68, 0xd2, 0x15, 0x7b, - 0x05, 0x65, 0xb3, 0x8d, - 0xd3, 0x68, 0xb2, 0x13, 0x29, 0xfc, 0xc3, 0x99, 0xdf, 0x20, 0xd8, 0xe0, - 0x75, 0x1d, 0x87, 0xe3, - 0x2b, 0x1d, 0x41, 0xe1, 0x54, 0x5d, 0xdb, 0x0b, 0x6f, 0x23, 0x42, 0xe9, - 0xa6, 0xbb, 0xa1, 0xf8, - 0x01, 0xfc, 0x5b, 0x99, 0x23, 0x56, 0xa2, 0x54, 0xe9, 0x85, 0x8b, 0x1d, - 0xa1, 0x5d, 0x33, 0x27, - 0x99, 0xd3, 0xfb, 0xf5, 0xa3, 0x01, 0x90, 0xf0, 0xef, 0x12, 0x80, 0x7e, - 0xf8, 0x2b, 0x27, 0x82, - 0xdd, 0xc9, 0x36, 0x81, 0x38, 0x3e, 0xd0, 0x47, 0xa8, 0x1a, 0xb6, 0x46, - 0x74, 0xbd, 0x76, 0xca, - 0xf6, 0xd4, 0x77, 0x60, 0x6c, 0x63, 0x0b, 0x4c, 0xc7, 0x39, 0xf4, 0xaf, - 0xd2, 0x06, 0xd7, 0x32, - 0x68, 0xb6, 0xce, 0xdc, 0x26, 0x03, 0x73, 0xd3, 0xf2, 0x36, 0x43, 0x82, - 0xcb, 0x7d, 0x69, 0x45, - 0x12, 0x20, 0x4f, 0x75, 0x33, 0x85, 0x35, 0xa1, 0x99, 0x4e, 0xb2, 0x29, - 0x03, 0x23, 0xd0, 0x7b, - 0x8a, 0x0f, 0xef, 0x19, 0xb3, 0xd2, 0x07, 0x05, 0x9f, 0xd9, 0xb9, 0x4a, - 0x5a, 0x55, 0xc4, 0xde, - 0x09, 0x10, 0xc6, 0xdb, 0xf8, 0xa3, 0xfb, 0xb1, 0xad, 0x27, 0x59, 0xf5, - 0xe0, 0xf0, 0x68, 0xdc, - 0xa6, 0xa3, 0xec, 0xb1, 0x0e, 0xee, 0x34, 0x61, 0x2a, 0xe7, 0xcc, 0xf0, - 0x1d, 0xbe, 0xfc, 0xd3, - 0x72, 0x7a, 0x1c, 0xeb, 0xce, 0x73, 0x1f, 0x97, 0x2f, 0xda, 0x23, 0x43, - 0x89, 0xf3, 0xe2, 0xc5, - 0xc4, 0xc2, 0x09, 0xde, 0xb5, 0xb4, 0x99, 0xff, 0x8d, 0xba, 0x88, 0xa0, - 0x16, 0xd4, 0xa8, 0x23, - 0x3a, 0xfa, 0xe3, 0xfc, 0x02, 0x22, 0xcb, 0x56, 0x0e, 0x21, 0xae, 0xe7, - 0x85, 0x7f, 0x24, 0xea, - 0x74, 0x37, 0x05, 0x3b, 0x04, 0x44, 0x55, 0xac, 0x1c, 0x42, 0x9f, 0x0d, - 0xc9, 0xfe, 0x48, 0x17, - 0xc1, 0x48, 0xfd, 0x66, 0x1a, 0x79, 0xf6, 0x38, 0x46, 0x6e, 0x6a, 0xc9, - 0x76, 0x3e, 0x57, 0x98, - 0xca, 0x63, 0x8d, 0x4c, 0xa4, 0x76, 0x8a, 0x21, 0xfa, 0x80, 0xe6, 0x06, - 0x17, 0x74, 0x59, 0x0a, - 0xb9, 0xe5, 0xca, 0x3e, 0x49, 0x53, 0x37, 0xe2, 0x3c, 0xdf, 0x4e, 0x58, - 0x3f, 0xda, 0x88, 0xe8, - 0x70, 0x41, 0xaa, 0x1a, 0x88, 0xdf, 0x98, 0x3f, 0x3e, 0x13, 0xf6, 0x79, - 0x08, 0x49, 0x84, 0x8b, - 0xbc, 0x6f, 0x3e, 0x86, 0xe6, 0x9e, 0x58, 0x25, 0xf7, 0x0b, 0xac, 0x31, - 0x5f, 0x30, 0x77, 0x53, - 0x34, 0x5b, 0x67, 0x6e, 0x13, 0xe0, 0xd8, 0x88, 0x79, 0x1b, 0xc0, 0x41, - 0x84, 0xdf, 0xd5, 0xc3, - 0x6a, 0x8d, 0x78, 0x2d, 0x60, 0xaf, 0xf4, 0x7b, 0xe3, 0xff, 0x96, 0xb8, - 0x4a, 0xc7, 0x0f, 0x0b, - 0x48, 0x80, 0xff, 0x17, 0xcc, 0x51, 0xd4, 0xc1, 0x21, 0xfb, 0x8d, 0xa4, - 0x0c, 0x8c, 0xc6, 0x2f, - 0x5f, 0x2a, 0x44, 0xda, 0x50, 0x19, 0x8e, 0xa7, 0x73, 0x61, 0xdd, 0xe4, - 0x6f, 0x45, 0xe9, 0xef, - 0x8f, 0x85, 0x1b, 0xa1, 0x1c, 0x1f, 0x68, 0xc2, 0x54, 0x0d, 0x5b, 0x23, - 0x3a, 0xbf, 0x3b, 0x65, - 0x69, 0x4a, 0x95, 0x45, 0x05, 0x55, 0xd1, 0x87, 0x1b, 0xb3, 0xc8, 0x9f, - 0x6a, 0x20, 0x5a, 0x62, - 0x9a, 0x14, 0x16, 0x9d, 0xc6, 0xfb, 0xb5, 0x0c, 0x17, 0x5e, 0xde, 0x59, - 0xd8, 0xcc, 0x72, 0xeb, - 0xda, 0x78, 0x74, 0xc8, 0xd1, 0x5f, 0x38, 0x28, 0x72, 0x07, 0x81, 0x15, - 0x95, 0xed, 0xef, 0x3f, - 0xfd, 0xff, 0x07, 0x4a, 0xd2, 0x6c, 0x77, 0x55, 0x7b, 0xd7, 0x78, 0x60, - 0xb3, 0x4c, 0xd9, 0xa0, - 0x39, 0x3d, 0x0e, 0x94, 0x67, 0xd8, 0xee, 0xaa, 0xf6, 0x6d, 0xf0, 0xc0, - 0xa5, 0x98, 0x71, 0x83, - 0xa5, 0x64, 0x01, 0xd9, 0x6b, 0x14, 0x11, 0x9d, 0xd2, 0xab, 0x92, 0xd7, - 0x3d, 0x59, 0xa9, 0xba, - 0xfc, 0x03, 0x5c, 0xd3, 0xf1, 0x3a, 0xd5, 0x01, 0x92, 0x52, 0xf3, 0x7d, - 0x12, 0x11, 0xea, 0x87, - 0xe0, 0x82, 0x97, 0x34, 0xd3, 0x7d, 0xf3, 0x7e, 0x7c, 0x26, 0x2f, 0xf2, - 0x10, 0x92, 0xcb, 0xd5, - 0x0c, 0x9a, 0x32, 0x63, 0x57, 0x6e, 0x94, 0x76, 0x66, 0xf3, 0xbb, 0x9c, - 0x80, 0x1a, 0x97, 0x67, - 0x57, 0xc6, 0xd9, 0x98, 0x8b, 0xec, 0xd7, 0x42, 0x37, 0xc3, 0x0f, 0x0c, - 0x2e, 0xe8, 0xb2, 0x14, - 0x54, 0x01, 0x34, 0xf0, 0xee, 0x16, 0xf2, 0xbe, 0xcf, 0x8f, 0x51, 0x2b, - 0x0e, 0x0f, 0xe7, 0x7d, - 0x8d, 0xbe, 0xad, 0x50, 0x5a, 0xb3, 0xef, 0x6a, 0x45, 0xc4, 0x8e, 0x19, - 0xbb, 0x05, 0x5d, 0x2b, - 0xd2, 0x94, 0xe9, 0x8a, 0x0a, 0xaa, 0x61, 0xcd, 0x36, 0xa5, 0x53, 0xfd, - 0xd4, 0x40, 0xb4, 0xc4, - 0xf7, 0x28, 0x2c, 0xf9, 0x4f, 0x35, 0xa9, 0x18, 0x2e, 0xbc, 0x7f, 0xb2, - 0x73, 0x5b, 0xe4, 0x15, - 0x5e, 0xd6, 0x1f, 0x43, 0x73, 0x4f, 0x2c, 0xf3, 0x9a, 0xe4, 0x56, 0xf9, - 0xce, 0x18, 0xda, 0xc8, - 0xf9, 0x89, 0xa8, 0x6b, 0x5e, 0xf7, 0xba, 0xc6, 0x59, 0x86, 0x11, 0x14, - 0x72, 0xfb, 0x15, 0x3c, - 0xf2, 0xa2, 0xd8, 0x41, 0xe0, 0xf8, 0xc6, 0xdf, 0xe5, 0x68, 0x9d, 0xdb, - 0x13, 0xb1, 0x1b, 0xae, - 0xe3, 0x45, 0x7a, 0x5c, 0xb6, 0x87, 0xd6, 0x82, 0x84, 0x6a, 0x71, 0xd5, - 0x30, 0x75, 0x9e, 0xbc, - 0x3b, 0x06, 0xb8, 0x65, 0x21, 0x74, 0x69, 0x02, 0xe7, 0xa4, 0x25, 0xfa, - 0x24, 0x22, 0x17, 0xcd, - 0x03, 0xc7, 0xed, 0x68, 0x65, 0xfa, 0x25, 0xfc, 0xf8, 0x4c, 0x5e, 0x27, - 0x20, 0xe7, 0x55, 0x69, - 0xa1, 0x12, 0xae, 0xf8, 0xe7, 0x8f, 0xdc, 0x0e, 0xf0, 0xfa, 0xfb, 0xa3, - 0xfc, 0xee, 0x65, 0x26, - 0x96, 0x8e, 0x24, 0xfe, 0x91, 0x95, 0x21, 0x7a, 0x71, 0xad, 0x65, 0xc5, - 0x58, 0xd6, 0xe5, 0x8c, - 0xaa, 0x39, 0xde, 0xd2, 0x59, 0x80, 0xa0, 0x17, 0x4c, 0x14, 0x77, 0x6c, - 0x9d, 0xa4, 0x6b, 0xb4, - 0x9f, 0x9e, 0xe2, 0x25, 0x69, 0x36, 0xda, 0xcb, 0xdc, 0x8a, 0x3c, 0x30, - 0xb8, 0x26, 0x8d, 0x50, - 0x46, 0x21, 0x7b, 0x85, 0xdd, 0x93, 0xc7, 0x1f, 0x56, 0xc1, 0xe3, 0x02, - 0x0d, 0x2c, 0x37, 0x06, - 0x41, 0x90, 0x39, 0xcc, 0x34, 0xf2, 0x2f, 0x70, 0x8c, 0xdc, 0xd4, 0x51, - 0xec, 0x7c, 0xae, 0xf3, - 0x2a, 0xe1, 0x1a, 0x78, 0x77, 0x0b, 0x79, 0x5f, 0x86, 0xa6, 0xc9, 0xf4, - 0x07, 0xe6, 0x92, 0xdf, - 0x60, 0x5a, 0x53, 0x9e, 0xfd, 0xf6, 0x2a, 0x36, 0xb6, 0x94, 0x91, 0x6a, - 0x8a, 0xd0, 0x32, 0xbe, - 0xe5, 0x08, 0x63, 0x8c, 0x7c, 0xb0, 0x9c, 0xb9, 0xb7, 0xf2, 0xcd, 0x9b, - 0x70, 0x78, 0x34, 0x6e, - 0x94, 0xb5, 0x92, 0x0f, 0xd7, 0x39, 0xa6, 0xd2, 0x60, 0x64, 0xb0, 0xff, - 0xd9, 0x6c, 0x83, 0xc2, - 0xbe, 0x54, 0x88, 0x77, 0xa0, 0x32, 0xdf, 0x8d, 0xe6, 0xc2, 0x79, 0x0b, - 0xde, 0x8a, 0x11, 0x1d, - 0x90, 0xc3, 0x3d, 0x2e, 0x5b, 0xa2, 0x6b, 0x41, 0x42, 0x35, 0xd9, 0x8b, - 0x18, 0xdb, 0x4f, 0x5e, - 0x2f, 0x6b, 0xee, 0xc0, 0xd8, 0xc6, 0x16, 0x98, 0x4d, 0x72, 0x2b, 0x9d, - 0x67, 0x0c, 0x6d, 0x64, - 0x9d, 0xa5, 0x54, 0xd4, 0x2f, 0x9a, 0x5d, 0x63, 0xcd, 0x43, 0xe9, 0x0a, - 0x39, 0x9c, 0xeb, 0x1e, - 0x81, 0x24, 0x9f, 0x33, 0x0d, 0xdd, 0x7b, 0x1c, 0x23, 0x37, 0x35, 0x85, - 0x3b, 0x1f, 0xca, 0x4c, - 0xa2, 0xd5, 0x43, 0x90, 0x82, 0x75, 0xf9, 0xf2, 0x08, 0xb6, 0xa5, 0x84, - 0xdc, 0x09, 0x30, 0x4f, - 0x76, 0x0c, 0xb3, 0xca, 0x42, 0xe8, 0xd2, 0x04, 0x0d, 0x8b, 0x4a, 0x37, - 0x48, 0x44, 0x2e, 0x59, - 0x4b, 0x47, 0x12, 0x7f, 0xa9, 0xab, 0xf1, 0x3d, 0xd9, 0xb7, 0xd3, 0x83, - 0x2c, 0x6b, 0x93, 0x46, - 0xe4, 0xf4, 0x38, 0x15, 0x5f, 0xe6, 0x3e, 0xed, 0x5e, 0x77, 0x46, 0x86, - 0xd1, 0x25, 0x07, 0x49, - 0x06, 0x4d, 0x19, 0xd0, 0xca, 0x37, 0x4a, 0x3b, 0x33, 0x98, 0xbc, 0x4e, - 0x40, 0x0d, 0xaa, 0xd2, - 0x55, 0xfd, 0x6f, 0x69, 0xcd, 0x40, 0x50, 0xea, 0x26, 0x0a, 0xda, 0x36, - 0xaf, 0x52, 0xd4, 0x5a, - 0xae, 0x4f, 0x71, 0xf3, 0xd5, 0x1b, 0x6d, 0x84, 0x6e, 0x45, 0x1e, 0x18, - 0x5c, 0x13, 0xa7, 0x28, - 0x1c, 0x81, 0xcb, 0xe7, 0x22, 0x47, 0x26, 0x7f, 0xee, 0x74, 0xdc, 0x8f, - 0x02, 0x83, 0x21, 0x52, - 0x75, 0xcb, 0x5e, 0xa2, 0x27, 0x12, 0xf7, 0xf8, 0xf5, 0xc7, 0x14, 0x10, - 0x68, 0xa3, 0x7b, 0x30, - 0x5b, 0x5c, 0xeb, 0xfb, 0xdc, 0x82, 0x43, 0x34, 0x51, 0x30, 0xb4, 0x90, - 0xae, 0xf2, 0x25, 0x73, - 0x04, 0x76, 0xaf, 0x21, 0x8c, 0x9b, 0xcd, 0x93, 0x22, 0x51, 0x69, 0x74, - 0xc1, 0xb7, 0xcc, 0x9c, - 0x27, 0x87, 0x73, 0x82, 0x03, 0x33, 0x4f, 0x7d, 0x09, 0xd0, 0xf9, 0x75, - 0x26, 0xa1, 0x36, 0x9f, - 0x4d, 0x0a, 0x0b, 0xaf, 0x63, 0x9c, 0xbb, 0x06, 0xea, 0x2f, 0x6f, 0xcd, - 0x6c, 0x66, 0x39, 0x94, - 0x9c, 0x59, 0x0f, 0x4d, 0x0c, 0xcc, 0xff, 0x37, 0x24, 0xc6, 0x62, 0x17, - 0x98, 0xc1, 0xd8, 0x39, - 0x20, 0x36, 0x31, 0xcb, 0xea, 0x52, 0xa7, 0x12, 0xd3, 0xcd, 0xce, 0x26, - 0xc7, 0xf1, 0xaf, 0x6a, - 0x53, 0xb0, 0x76, 0xb9, 0x07, 0x77, 0x1a, 0xd1, 0x15, 0x92, 0x66, 0x78, - 0xef, 0x5f, 0x7e, 0x88, - 0xd0, 0xaf, 0x5f, 0x7b, 0x4c, 0x06, 0xe6, 0x65, 0x27, 0x6c, 0x86, 0xc7, - 0x55, 0xfa, 0xd2, 0x8a, - 0x95, 0x49, 0xc9, 0x96, 0xf4, 0x6f, 0x04, 0x86, 0x89, 0xe1, 0x3b, 0xe2, - 0x78, 0x31, 0xb0, 0xe5, - 0xf3, 0x5e, 0x83, 0xd8, 0xc3, 0xae, 0x64, 0x8b, 0x0c, 0xed, 0x16, 0xc6, - 0xb2, 0xec, 0x28, 0x89, - 0x85, 0x52, 0x30, 0x12, 0x81, 0x46, 0xb6, 0x8f, 0x01, 0x66, 0x5c, 0xf1, - 0xfa, 0xa8, 0x06, 0xd0, - 0x88, 0x34, 0x59, 0xe8, 0xf5, 0x7e, 0x80, 0xad, 0x8e, 0x10, 0x6c, 0x70, - 0xdb, 0xef, 0xa2, 0x90, - 0xb0, 0xf5, 0x0c, 0xe5, 0xb1, 0xf0, 0xcc, 0x53, 0x91, 0xf8, 0x17, 0xad, - 0xdf, 0x2a, 0xe0, 0x34, - 0x22, 0x0d, 0x87, 0x3a, 0xac, 0xfe, 0x20, 0xba, 0xc2, 0x04, 0x1b, 0x1c, - 0x46, 0x4b, 0xc9, 0x24, - 0x0b, 0x2b, 0x70, 0x2a, 0xbe, 0x0f, 0x7c, 0x19, 0xbc, 0xee, 0x8c, 0xcf, - 0x61, 0x4a, 0x0e, 0x92, - 0x02, 0x3b, 0xb6, 0xf1, 0x46, 0xac, 0x87, 0xa8, 0x11, 0xc9, 0xd5, 0x3a, - 0x81, 0xba, 0x66, 0x4e, - 0xc9, 0xa4, 0x60, 0x24, 0xc1, 0x8c, 0xaf, 0xdd, 0x02, 0xcc, 0xb8, 0x21, - 0x37, 0x93, 0x0c, 0x63, - 0xdb, 0x84, 0x2f, 0x51, 0xf2, 0x09, 0x9a, 0x7c, 0x9b, 0x82, 0x0a, 0x08, - 0x34, 0xb0, 0xdc, 0x18, - 0xb6, 0xb8, 0x15, 0x35, 0x7b, 0xc7, 0x86, 0x68, 0xa2, 0x60, 0xab, 0xe3, - 0x9f, 0x27, 0x4a, 0xe6, - 0x40, 0x6c, 0x62, 0x55, 0x17, 0xa4, 0x8d, 0x24, 0x65, 0x59, 0x5f, 0x4c, - 0x4d, 0x21, 0x9d, 0xd4, - 0x4e, 0xcd, 0xe6, 0xc7, 0x06, 0x66, 0x9e, 0xfa, 0x12, 0x63, 0x31, 0xea, - 0x4c, 0x81, 0x6c, 0xfd, - 0xd7, 0x1e, 0x1d, 0x32, 0xa5, 0x67, 0x0e, 0x0a, 0xfd, 0x71, 0xb1, 0x94, - 0xb4, 0xaa, 0x4b, 0x7f, - 0xab, 0xc5, 0x85, 0x4b, 0x7a, 0xd6, 0x02, 0x43, 0xa5, 0x91, 0xfc, 0x71, - 0x3c, 0xf9, 0x58, 0x93, - 0x98, 0x2f, 0xa0, 0x6c, 0x80, 0x57, 0x32, 0xa4, 0x06, 0x97, 0x0b, 0x63, - 0x59, 0x76, 0x14, 0xa5, - 0xc8, 0x58, 0x3b, 0xbd, 0xe2, 0xda, 0x0d, 0x89, 0xeb, 0x49, 0x33, 0x3c, - 0x96, 0xce, 0x3f, 0x44, - 0xaf, 0xb3, 0x2a, 0x6a, 0xf6, 0x4d, 0xcf, 0xd0, 0x87, 0xc0, 0x95, 0x05, - 0xfd, 0x4e, 0x94, 0x0f, - 0xa3, 0x29, 0x18, 0x09, 0xa1, 0x23, 0x5b, 0xa6, 0xe1, 0x33, 0x2e, 0x99, - 0x7d, 0x54, 0x03, 0x68, - 0x44, 0x1a, 0xcd, 0x74, 0x9b, 0x3f, 0x40, 0xb7, 0x47, 0x08, 0x36, 0x38, - 0x8c, 0x96, 0x51, 0x48, - 0x84, 0xae, 0x6b, 0x8b, 0xa2, 0x10, 0x14, 0xdb, 0xe8, 0xe3, 0xd7, 0xec, - 0x5b, 0xf5, 0x35, 0xf7, - 0x9e, 0x62, 0xb9, 0xbc, 0x4a, 0x60, 0x78, 0x9f, 0x35, 0x0f, 0xb7, 0x2d, - 0x19, 0x7b, 0xbe, 0x77, - 0xe2, 0xb9, 0x21, 0xc5, 0x95, 0xd1, 0x74, 0xd6, 0x6d, 0xef, 0xfa, 0xc8, - 0x91, 0x28, 0xad, 0x9b, - 0xcd, 0xd2, 0xcf, 0x05, 0x4d, 0x17, 0x62, 0x4e, 0x20, 0x9d, 0xd1, 0x55, - 0xf6, 0x24, 0xc0, 0xff, - 0xfb, 0xb2, 0x1e, 0x9a, 0x18, 0x5b, 0x3d, 0x6e, 0x48, 0x4f, 0xc4, 0x2e, - 0xf3, 0x41, 0x73, 0x72, - 0x45, 0xe6, 0x96, 0xed, 0xb8, 0x69, 0xe2, 0xe3, 0xae, 0x8d, 0xbd, 0x25, - 0x2d, 0xcb, 0x62, 0x6f, - 0x23, 0xf1, 0xdc, 0xa3, 0x8f, 0xa8, 0x82, 0xee, 0x2b, 0x81, 0x90, 0x01, - 0xe7, 0x16, 0xfa, 0x03, - 0xc6, 0xf9, 0xbf, 0x2f, 0xf3, 0x18, 0x1e, 0x57, 0x9c, 0x73, 0x5d, 0x9a, - 0x97, 0x6e, 0xce, 0x6d, - 0x3d, 0x4b, 0xa1, 0xb5, 0xeb, 0x43, 0x23, 0x39, 0xd4, 0x3c, 0x99, 0xb4, - 0x64, 0x2f, 0xbd, 0x1f, - 0x17, 0xaa, 0xbb, 0xcd, 0x9c, 0x48, 0x5a, 0x66, 0x52, 0x9a, 0x50, 0x40, - 0x63, 0xc9, 0x2f, 0xc0, - 0xeb, 0xa9, 0xe7, 0x1e, 0x6d, 0x72, 0x8f, 0x67, 0xc0, 0xc8, 0xa3, 0x3d, - 0x71, 0xd8, 0xc5, 0x47, - 0x2e, 0x97, 0xb5, 0x59, 0xfb, 0x90, 0xb4, 0xcc, 0xa4, 0xf7, 0xa0, 0x80, - 0xc6, 0x51, 0x5e, 0x43, - 0xcb, 0x9f, 0xd6, 0xd5, 0x87, 0x20, 0x28, 0x75, 0x13, 0x05, 0x6d, 0x1b, - 0xb6, 0x29, 0x6a, 0x2d, - 0xb2, 0xce, 0xba, 0x14, 0xf7, 0x5c, 0x4b, 0xfb, 0x80, 0x31, 0xc2, 0x97, - 0x5e, 0x90, 0x86, 0x7a, - 0x5c, 0xed, 0xa9, 0xb2, 0x35, 0xe3, 0xab, 0x5b, 0x8b, 0x2d, 0x83, 0xc3, - 0x4f, 0xa2, 0xbc, 0x86, - 0x4a, 0xbb, 0x49, 0xe6, 0x8a, 0xfd, 0x53, 0x69, 0x30, 0x32, 0x58, 0x9e, - 0x8d, 0x36, 0xa0, 0x61, - 0x64, 0x2c, 0xfc, 0xbf, 0x71, 0x6d, 0xe7, 0xa5, 0x94, 0xc5, 0xf8, 0x1e, - 0x4b, 0x67, 0xfe, 0x22, - 0x71, 0xbd, 0xf1, 0x83, 0xab, 0x89, 0x3a, 0x6b, 0xd7, 0x96, 0x7d, 0x64, - 0xa9, 0x14, 0xb7, 0xac, - 0x35, 0xa7, 0x3c, 0xf7, 0x30, 0xb6, 0x7a, 0xdc, 0x90, 0x9e, 0x4b, 0x5c, - 0x25, 0x82, 0xe6, 0xe4, - 0xc7, 0x05, 0xe4, 0xb6, 0xd0, 0x4e, 0xbc, 0x03, 0x75, 0xf6, 0xd6, 0x87, - 0x36, 0x33, 0xfd, 0x4a, - 0x07, 0xb1, 0x42, 0x49, 0xe9, 0x61, 0xe8, 0x6f, 0xda, 0x1d, 0x37, 0x53, - 0xe1, 0x50, 0x99, 0xf5, - 0x59, 0x67, 0x5d, 0x0a, 0x9a, 0x2e, 0xc4, 0x9c, 0x40, 0xf9, 0x61, 0xaa, - 0x2f, 0x48, 0x43, 0x3d, - 0x38, 0xc1, 0x55, 0x0d, 0x44, 0x8e, 0x4c, 0xfe, 0x1f, 0xe8, 0x7b, 0xdd, - 0x04, 0xc5, 0x42, 0xa4, - 0xea, 0x55, 0xbc, 0x87, 0x4e, 0x24, 0x2d, 0x33, 0x29, 0x4d, 0x28, 0x20, - 0xd0, 0x85, 0xf6, 0x60, - 0x37, 0x9c, 0x8a, 0x06, 0x76, 0x1a, 0xfd, 0x74, 0x81, 0x57, 0x9e, 0x66, - 0xa4, 0x38, 0x80, 0xaa, - 0x63, 0x9d, 0xbe, 0xf6, 0x98, 0x0c, 0x0f, 0xca, 0x4e, 0xd8, 0xcf, 0x4d, - 0xaa, 0x37, 0x67, 0xd7, - 0x18, 0xf7, 0x64, 0xc6, 0xae, 0xdc, 0xeb, 0xec, 0xcc, 0x25, 0xb5, 0xfb, - 0xc3, 0x34, 0xed, 0xce, - 0xa7, 0x5f, 0xb7, 0x28, 0x2d, 0xb8, 0x96, 0x35, 0xc3, 0x62, 0x47, 0xed, - 0xbc, 0xe3, 0xcf, 0xf4, - 0x58, 0x9b, 0x06, 0x93, 0xb9, 0x78, 0x66, 0xc8, 0xa9, 0x7c, 0xea, 0xb7, - 0x8e, 0x15, 0x70, 0x1a, - 0x11, 0xe7, 0xa2, 0x1d, 0x56, 0x7f, 0x10, 0x5d, 0x61, 0x02, 0xec, 0x0e, - 0x23, 0xc4, 0x85, 0x12, - 0xf5, 0x13, 0x9a, 0x08, 0x09, 0x99, 0x2e, 0xb0, 0x3f, 0x75, 0xaa, 0x88, - 0xf2, 0xe1, 0x82, 0x5b, - 0xd9, 0xbf, 0x99, 0xa0, 0xb4, 0xa5, 0x1d, 0xd4, 0x8a, 0x4b, 0xdf, 0x32, - 0xb5, 0x0a, 0xba, 0x56, - 0xe9, 0x92, 0x51, 0xef, 0x2b, 0xde, 0x08, 0xcf, 0xd1, 0x01, 0x76, 0x07, - 0xf0, 0x62, 0xa3, 0x09, - 0x25, 0xbc, 0xc5, 0x73, 0x45, 0x9f, 0xc8, 0xd5, 0x18, 0x19, 0x2c, 0x4f, - 0xa7, 0x1b, 0x50, 0xd1, - 0xf8, 0x75, 0xf3, 0xf2, 0x7d, 0xa1, 0x18, 0x92, 0xb0, 0x03, 0x9a, 0x09, - 0xd3, 0xa6, 0x26, 0x1b, - 0x97, 0x72, 0x7f, 0x67, 0xb2, 0xc3, 0x83, 0x2e, 0x98, 0x28, 0xee, 0xd8, - 0xf9, 0x8b, 0xd6, 0xab, - 0xb1, 0x09, 0x57, 0x7c, 0x92, 0xa6, 0x6e, 0x07, 0x78, 0x7d, 0x9c, 0xb0, - 0x7e, 0x77, 0xd3, 0x13, - 0x19, 0x0b, 0x3f, 0x5f, 0x8d, 0x8a, 0x49, 0xb8, 0x25, 0xa0, 0x3e, 0xe6, - 0x62, 0x69, 0xde, 0xe9, - 0x0f, 0x5d, 0xdf, 0x0b, 0x32, 0x94, 0xb1, 0x8a, 0x9e, 0xbf, 0xe5, 0xbb, - 0xa0, 0xfd, 0xc2, 0x0e, - 0x89, 0xc8, 0x02, 0x71, 0xd6, 0x28, 0x22, 0xf9, 0x67, 0x95, 0xe7, 0x6d, - 0x7a, 0xb2, 0x91, 0xb7, - 0xdc, 0x35, 0x6d, 0x18, 0x1b, 0x68, 0x72, 0x13, 0x41, 0x9f, 0x3d, 0x5b, - 0xd5, 0xe0, 0x45, 0xed, - 0x08, 0xec, 0x9d, 0x42, 0xdb, 0xf5, 0x59, 0xe5, 0x44, 0xa2, 0xd2, 0xe8, - 0x41, 0xad, 0x5b, 0xfb, - 0xf1, 0x65, 0x35, 0x29, 0x85, 0x02, 0xe3, 0x23, 0x1d, 0x24, 0xc3, 0xfc, - 0x33, 0x56, 0x4e, 0xc7, - 0xa8, 0x02, 0x68, 0x23, 0x1f, 0x2c, 0x27, 0xbf, 0x5d, 0xdd, 0xa2, 0x56, - 0x1c, 0x1e, 0x0d, 0xfa, - 0x0e, 0xa1, 0x84, 0x92, 0x11, 0xc2, 0x13, 0xde, 0x77, 0x3a, 0x6e, 0xa6, - 0x01, 0xa0, 0xf1, 0x29, - 0x6f, 0x07, 0x8c, 0x95, 0xcf, 0x62, 0x9b, 0xbc, 0x28, 0x2b, 0x74, 0xd1, - 0x2a, 0x2d, 0xf0, 0xb0, - 0x7d, 0x27, 0xc3, 0xe0, 0xfc, 0xe7, 0xae, 0x1d, 0xb1, 0x65, 0xc6, 0xf8, - 0x29, 0x0e, 0x20, 0xcb, - 0xd4, 0xd9, 0xf0, 0x5a, 0xc0, 0x9d, 0x2b, 0xf6, 0x05, 0x3d, 0xef, 0xb3, - 0x94, 0x4d, 0x1e, 0x16, - 0xbd, 0x93, 0x65, 0x1f, 0xc5, 0xc8, 0xfa, 0x71, 0x1e, 0x8e, 0x27, 0x2c, - 0xfe, 0x6d, 0x44, 0x74, - 0x86, 0x95, 0xdd, 0x7a, 0xe4, 0xbc, 0x93, 0x73, 0xf9, 0x2a, 0x02, 0xd6, - 0xda, 0x4f, 0x53, 0xb9, - 0xec, 0x18, 0xa5, 0x57, 0x84, 0x13, 0x67, 0x08, 0x1a, 0xd5, 0x94, 0x6e, - 0x90, 0x88, 0x5c, 0xb2, - 0x32, 0x16, 0x7e, 0xbe, 0xd9, 0xd7, 0x92, 0xb3, 0x4a, 0x83, 0x7c, 0x0f, - 0xc4, 0xd2, 0x7f, 0x11, - 0x7e, 0xe0, 0x2e, 0x88, 0x99, 0x1d, 0x8b, 0xe1, 0x49, 0x29, 0x98, 0xdf, - 0x09, 0xe9, 0x75, 0xa2, - 0xed, 0xe4, 0xfe, 0xce, 0xa7, 0x45, 0xc5, 0x5c, 0xf3, 0x50, 0x1f, 0x73, - 0x31, 0xd5, 0x6f, 0x95, - 0x6e, 0xfb, 0xd7, 0x0c, 0xec, 0x34, 0x39, 0xe8, 0xc1, 0xae, 0xff, 0xcc, - 0x8b, 0x70, 0xc3, 0x97, - 0xc3, 0x73, 0x4b, 0x97, 0x5c, 0xd5, 0x71, 0x90, 0x57, 0xa7, 0xbf, 0xf3, - 0xf7, 0x84, 0x31, 0xd6, - 0x21, 0xca, 0x6a, 0x52, 0xc9, 0x04, 0x05, 0x46, 0x3a, 0x48, 0x45, 0x3b, - 0x66, 0xac, 0x9c, 0x4d, - 0x62, 0x61, 0xe5, 0x6f, 0xbb, 0x5a, 0xad, 0x9e, 0xa7, 0x5d, 0x44, 0x50, - 0x0b, 0x6a, 0x54, 0xf0, - 0xce, 0x15, 0x22, 0x6d, 0x28, 0xed, 0x47, 0xb2, 0xd8, 0xd1, 0x8f, 0x72, - 0xd6, 0xc3, 0x95, 0x96, - 0x93, 0x04, 0xd0, 0x46, 0x3e, 0x58, 0x4e, 0xbd, 0xba, 0x79, 0x87, 0xac, - 0x38, 0x3c, 0x1a, 0x37, - 0x4c, 0xf6, 0x50, 0x36, 0x40, 0xca, 0x19, 0x52, 0x03, 0xaa, 0xe4, 0xd0, - 0xcd, 0x3b, 0x0a, 0xb3, - 0xde, 0x0e, 0xdb, 0xe9, 0x5d, 0xc4, 0xf5, 0xbb, 0x50, 0x56, 0xe8, 0x61, - 0x54, 0x5a, 0x23, 0xa3, - 0x3f, 0x70, 0x17, 0x44, 0xad, 0xef, 0xa4, 0x91, 0xc5, 0xf5, 0x4c, 0x8e, - 0xe5, 0x95, 0xdb, 0x51, - 0x43, 0xab, 0x8f, 0x3d, 0x72, 0x5e, 0xa8, 0xd8, 0x9d, 0x15, 0x01, 0x6b, - 0x6d, 0xc6, 0xc8, 0xbd, - 0x73, 0x86, 0x47, 0x72, 0xed, 0x25, 0xbd, 0xc3, 0xc6, 0x5f, 0xa8, 0x5e, - 0x28, 0xae, 0xd1, 0xe2, - 0xad, 0x88, 0x9c, 0x9b, 0xb0, 0xe1, 0x48, 0x78, 0x96, 0x09, 0x40, 0x3f, - 0x7c, 0xf4, 0xf2, 0x41, - 0xf0, 0x99, 0x6e, 0xb0, 0xa6, 0x54, 0x41, 0x77, 0xf4, 0xa1, 0x48, 0xe1, - 0x92, 0x0b, 0x7d, 0xe0, - 0x47, 0xdd, 0x20, 0x1c, 0xfe, 0xc5, 0x65, 0x4b, 0xbf, 0x44, 0x68, 0x1f, - 0xac, 0x71, 0x04, 0x21, - 0x3c, 0xb7, 0xfa, 0x2c, 0xc8, 0x15, 0x81, 0x6d, 0x3d, 0xb9, 0x12, 0xa9, - 0xc5, 0x72, 0x8e, 0x38, - 0x61, 0xa6, 0x08, 0x07, 0xde, 0xa0, 0x88, 0x62, 0x5f, 0x11, 0x1a, 0x77, - 0x2b, 0x8d, 0x01, 0x99, - 0x56, 0x3a, 0x82, 0x01, 0xa8, 0xba, 0x75, 0x16, 0xde, 0x46, 0x84, 0x11, - 0x8f, 0xb5, 0x81, 0x33, - 0x29, 0x26, 0xf7, 0x10, 0x12, 0xf1, 0x5c, 0xa3, 0x7e, 0xea, 0x97, 0xd3, - 0x27, 0x01, 0xc7, 0xb6, - 0x7b, 0x6a, 0xda, 0x30, 0x36, 0xd0, 0xe4, 0x26, 0x82, 0xfd, 0x7a, 0xb6, - 0x69, 0x03, 0x8a, 0x19, - 0x10, 0x1b, 0xf9, 0x84, 0x75, 0x29, 0xb2, 0x09, 0x88, 0x87, 0x67, 0x13, - 0x82, 0x99, 0xb6, 0x35, - 0xff, 0xc4, 0xb1, 0xbb, 0x94, 0xc0, 0xf0, 0xfd, 0x6a, 0x1e, 0xad, 0x5a, - 0x32, 0xf6, 0xbf, 0xee, - 0x5d, 0x11, 0xf2, 0x2b, 0x16, 0xb5, 0x09, 0x0f, 0x62, 0xa8, 0x08, 0xde, - 0xee, 0xff, 0x8f, 0xa1, - 0x31, 0xd1, 0x93, 0xd6, 0xbc, 0x2d, 0xb7, 0x4f, 0xb2, 0xcf, 0x22, 0x28, - 0xe4, 0x35, 0x2a, 0x78, - 0xb7, 0x44, 0x4e, 0xac, 0x58, 0x91, 0x24, 0x3c, 0x4b, 0xe5, 0x20, 0xfe, - 0x3e, 0x7a, 0x79, 0xc1, - 0xb3, 0x32, 0xe1, 0x8d, 0xd4, 0x0a, 0xe9, 0xaf, 0x69, 0xb4, 0x49, 0x8a, - 0xff, 0xcd, 0xb5, 0x5d, - 0x6b, 0x71, 0x23, 0xb4, 0x43, 0xf9, 0x56, 0x2f, 0x0a, 0x7a, 0x1d, 0xa5, - 0xeb, 0x9a, 0x3c, 0x2c, - 0xc0, 0xb4, 0xa6, 0xff, 0x39, 0x2f, 0x54, 0x6c, 0xaf, 0xeb, 0xe1, 0xd4, - 0xd7, 0x63, 0x64, 0xbf, - 0x7f, 0x1c, 0x75, 0x11, 0xba, 0x4b, 0x29, 0xb5, 0xa0, 0xac, 0x13, 0xc2, - 0xa8, 0xb4, 0x46, 0x85, - 0x1e, 0xba, 0x7d, 0x16, 0x64, 0xeb, 0xa1, 0xd7, 0xff, 0xbd, 0x09, 0xb5, - 0x83, 0x39, 0x47, 0x1c, - 0xd1, 0x53, 0x04, 0xe2, 0x6f, 0x50, 0x44, 0x31, 0xce, 0xe9, 0x0d, 0xda, - 0xf4, 0xa7, 0xe1, 0xad, - 0x78, 0xad, 0x37, 0x58, 0x53, 0x2a, 0xc1, 0xda, 0x7a, 0xb1, 0x24, 0x91, - 0x49, 0xe4, 0xdf, 0x70, - 0xc2, 0x8f, 0x10, 0x0e, 0x7f, 0x83, 0xd3, 0xc4, 0xbe, 0x22, 0x34, 0xee, - 0x56, 0xd9, 0x02, 0xf1, - 0xbb, 0xde, 0x7c, 0xcf, 0x0f, 0xff, 0xb0, 0x4a, 0x2d, 0x16, 0x9b, 0x62, - 0xbe, 0x60, 0xee, 0xa6, - 0x6d, 0x3c, 0x3a, 0x64, 0x89, 0xce, 0x1c, 0x14, 0x39, 0xe2, 0xa1, 0xeb, - 0xab, 0x97, 0x96, 0xfe, - 0xe1, 0x7e, 0xcc, 0xad, 0xf0, 0x2b, 0x51, 0x2a, 0x95, 0xa3, 0xa4, 0xef, - 0xb1, 0xcf, 0xf8, 0xf2, - 0x1f, 0x46, 0x26, 0x8f, 0x47, 0xbd, 0x03, 0x83, 0x16, 0x38, 0x82, 0xa8, - 0x22, 0x64, 0x74, 0x3b, - 0x82, 0xe3, 0x72, 0x5b, 0x68, 0x27, 0x5e, 0xe0, 0xdb, 0x7b, 0x6b, 0xa2, - 0x1b, 0xf8, 0x9f, 0x25, - 0xba, 0x22, 0x27, 0x56, 0x2c, 0xa9, 0x12, 0x1e, 0xc4, 0x93, 0x10, 0x7f, - 0x1f, 0x3d, 0xdd, 0x81, - 0x8c, 0x42, 0xf6, 0xc9, 0x79, 0xe5, 0x4d, 0x3e, 0xac, 0x41, 0x05, 0x04, - 0x1a, 0x58, 0x6e, 0x0c, - 0xcf, 0xe9, 0x79, 0xf4, 0x0b, 0xbb, 0xe5, 0xe6, 0x31, 0x54, 0x04, 0x6f, - 0x77, 0x9e, 0xa6, 0xb1, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0xfe, 0x38, 0xea, 0x22, 0xb7, 0x96, 0x52, 0xa9, 0x83, 0x9b, 0x26, 0x47, - 0x93, 0xab, 0x8c, 0xc9, - 0x42, 0x57, 0xd4, 0xa4, 0x51, 0x08, 0x0a, 0x8c, 0x74, 0x90, 0x8a, 0x76, - 0xcc, 0x9b, 0xfb, 0x9a, - 0xd6, 0xe2, 0x46, 0xab, 0x86, 0x31, 0xac, 0x5e, 0x14, 0xf4, 0x3a, 0x89, - 0x15, 0xf7, 0x78, 0x58, - }, - { /* 7 */ - 0xa5, 0x9d, 0x85, 0x46, 0x8a, 0x0e, 0x61, 0xc4, 0x42, 0xe7, 0xb4, 0xca, - 0xc0, 0x3d, 0xf4, 0xe8, - 0x2d, 0x30, 0x7c, 0xb1, 0xb2, 0x96, 0xab, 0x86, 0x12, 0x3f, 0xbc, 0x10, - 0x25, 0xe6, 0x1e, 0xf1, - 0x32, 0xb3, 0x29, 0xf1, 0xe6, 0xb1, 0x53, 0x61, 0xca, 0xf8, 0xa0, 0xd0, - 0x5a, 0xc4, 0x96, 0x37, - 0x8f, 0xc2, 0x69, 0x55, 0xf0, 0x82, 0xf2, 0x7d, 0x39, 0xb6, 0xe7, 0xff, - 0x11, 0x3a, 0xe8, 0x2f, - 0x0e, 0xde, 0xe3, 0x87, 0x53, 0x34, 0x70, 0x7e, 0xd2, 0xdc, 0x1d, 0x4a, - 0x2b, 0x01, 0x04, 0x6c, - 0x30, 0x1b, 0x49, 0x07, 0xfb, 0x7a, 0x43, 0x73, 0xa1, 0x91, 0x25, 0x09, - 0xd5, 0x45, 0xd7, 0x23, - 0x38, 0xfe, 0x0a, 0x59, 0x8f, 0xd0, 0x03, 0x3b, 0xce, 0xf6, 0x74, 0xeb, - 0xac, 0x04, 0x10, 0x73, - 0xc0, 0x6c, 0xe7, 0x1c, 0x6a, 0x2b, 0xcf, 0x0f, 0xc1, 0x01, 0x94, 0x24, - 0xd2, 0xd7, 0xda, 0x8c, - 0x54, 0xbe, 0x1b, 0x26, 0xf4, 0xdb, 0xe5, 0xb1, 0xf6, 0xa2, 0xa6, 0x6a, - 0x61, 0x0e, 0x38, 0x4d, - 0xe6, 0x45, 0x88, 0x7e, 0x5e, 0x58, 0x3c, 0xda, 0x03, 0xe5, 0x5f, 0x82, - 0xa7, 0x50, 0x83, 0x33, - 0x9e, 0x9f, 0xdf, 0x92, 0xf7, 0x91, 0x7a, 0xe4, 0x33, 0xad, 0xe6, 0x75, - 0x45, 0x19, 0x64, 0x85, - 0x39, 0xaa, 0x3a, 0x22, 0x60, 0x54, 0x0b, 0x32, 0x1a, 0x23, 0xd7, 0x66, - 0x0a, 0xa5, 0xd1, 0x79, - 0x55, 0xea, 0x2b, 0x5d, 0x1b, 0x5f, 0xed, 0xb8, 0x22, 0x77, 0x05, 0xe7, - 0xc7, 0xaf, 0xf9, 0x47, - 0x7e, 0xe1, 0xf7, 0x35, 0x8e, 0x57, 0x76, 0x08, 0x8d, 0xf3, 0xf5, 0x5f, - 0xb0, 0x09, 0x24, 0x8a, - 0x52, 0x85, 0xbb, 0xff, 0xd3, 0x45, 0xd5, 0x87, 0x4b, 0x19, 0xea, 0xc2, - 0x33, 0x4e, 0xfb, 0x71, - 0x91, 0x15, 0x0c, 0x6e, 0x4b, 0x21, 0x02, 0x93, 0x35, 0xa4, 0x58, 0xb2, - 0xc8, 0xb9, 0xa1, 0xe3, - 0x64, 0xa5, 0x52, 0x21, 0x0f, 0xa1, 0xa6, 0xc2, 0x57, 0x33, 0x83, 0x63, - 0xb4, 0x4b, 0xef, 0x6e, - 0x03, 0xfc, 0x50, 0x8d, 0xf2, 0x4f, 0x18, 0x1b, 0xbf, 0xbc, 0x26, 0x54, - 0x29, 0x20, 0x80, 0x1e, - 0x57, 0x42, 0x4b, 0xab, 0x06, 0x94, 0xfd, 0xaa, 0x49, 0x1e, 0x80, 0x3e, - 0x48, 0x2e, 0xb8, 0x53, - 0x5a, 0x60, 0xf8, 0xa1, 0xa7, 0xef, 0x95, 0xcf, 0x24, 0x7e, 0xbb, 0x20, - 0x4a, 0x0f, 0x3c, 0x21, - 0x1c, 0x7f, 0x05, 0xcd, 0xa6, 0x68, 0xe0, 0xfc, 0x67, 0x7b, 0x3a, 0x94, - 0x56, 0x02, 0x08, 0xd8, - 0x60, 0x36, 0x92, 0x0e, 0x35, 0xf4, 0x86, 0xe6, 0x81, 0xe1, 0x4a, 0x12, - 0x69, 0x8a, 0x6d, 0x46, - 0x07, 0x6f, 0x90, 0xa2, 0xc8, 0x1a, 0x38, 0x3f, 0x69, 0x6e, 0xef, 0x25, - 0xf4, 0xe1, 0x02, 0x36, - 0x18, 0xec, 0xc5, 0xe2, 0x9c, 0x3d, 0xc0, 0xd8, 0xb1, 0xa9, 0xf3, 0xe5, - 0x8b, 0xc3, 0x8a, 0xf0, - 0x21, 0x46, 0xff, 0xc0, 0xfc, 0x69, 0xcb, 0xea, 0xab, 0x8a, 0x24, 0x83, - 0x81, 0x66, 0x5b, 0x89, - 0x72, 0x97, 0x74, 0x44, 0xc0, 0xa8, 0x16, 0x64, 0x34, 0x46, 0x6d, 0xcc, - 0x14, 0x89, 0x61, 0xf2, - 0xa8, 0xbf, 0x36, 0x4c, 0x2b, 0x75, 0x09, 0xa1, 0x2f, 0x87, 0x8f, 0xd4, - 0xc2, 0x1c, 0x70, 0x9a, - 0xd1, 0x31, 0x51, 0xdb, 0x6d, 0x38, 0x47, 0x96, 0xcb, 0x1a, 0x95, 0xae, - 0x86, 0xf4, 0x56, 0x26, - 0x29, 0xa3, 0xbc, 0x9e, 0x88, 0xc3, 0x8b, 0xa2, 0xc4, 0xed, 0x75, 0x61, - 0xf8, 0x27, 0x9c, 0xd9, - 0xc6, 0x57, 0x47, 0xc5, 0x4d, 0xb5, 0xff, 0x39, 0x7c, 0xba, 0xd8, 0x8c, - 0x80, 0x97, 0x19, 0xb0, - 0xa4, 0xc9, 0xb5, 0x3d, 0x65, 0x8a, 0x69, 0xcd, 0x96, 0x32, 0x17, 0x47, - 0x66, 0x9c, 0x35, 0xe2, - 0x3f, 0x91, 0x9a, 0xfb, 0x47, 0xca, 0x3b, 0x04, 0xa7, 0x98, 0x9b, 0xce, - 0x58, 0xe5, 0x12, 0x45, - 0xe0, 0x7e, 0x28, 0xa7, 0x79, 0xc6, 0x0c, 0xec, 0xbe, 0x5e, 0x13, 0x2a, - 0xf5, 0x10, 0x40, 0x0f, - 0x27, 0x7d, 0x5f, 0x19, 0xdb, 0xf7, 0xfb, 0xdc, 0x16, 0x31, 0x68, 0x2b, - 0xd3, 0x26, 0x98, 0xb5, - 0x8d, 0x6a, 0x09, 0xa3, 0xed, 0x49, 0xe2, 0x6f, 0x52, 0xdf, 0x62, 0x26, - 0x9e, 0xbb, 0xa9, 0x3b, - 0x0c, 0x76, 0x83, 0x71, 0x4e, 0xff, 0x60, 0x6c, 0xb9, 0xb5, 0x98, 0x93, - 0xa4, 0x80, 0x45, 0x78, - 0x82, 0xe0, 0xda, 0x5f, 0x51, 0xf9, 0x9a, 0x18, 0x54, 0xd6, 0xdc, 0xe1, - 0x13, 0x1b, 0x6c, 0x5d, - 0xea, 0x33, 0x0b, 0x0f, 0x10, 0xa7, 0x5c, 0xb6, 0xba, 0x50, 0xc7, 0x11, - 0x03, 0xd0, 0xc6, 0x4b, - 0xae, 0x84, 0x96, 0x95, 0x0c, 0xeb, 0x39, 0x97, 0x92, 0x3c, 0xc3, 0x7c, - 0x90, 0x5c, 0xb3, 0xa6, - 0xb4, 0xc0, 0x33, 0x81, 0x8d, 0x1d, 0xe9, 0x5d, 0x48, 0xfc, 0xb5, 0x40, - 0x94, 0x1e, 0x78, 0x42, - 0x9a, 0x0c, 0x1f, 0xbd, 0xcd, 0xc4, 0x5a, 0xc0, 0xe5, 0x7f, 0x2f, 0x04, - 0x98, 0xd8, 0xe6, 0xad, - 0x63, 0xca, 0xc2, 0x83, 0xc7, 0xbb, 0x9e, 0xfd, 0x3e, 0x5d, 0x6c, 0x46, - 0x40, 0xaa, 0xed, 0x58, - 0x49, 0x95, 0x2e, 0x90, 0xbd, 0x37, 0x0d, 0x44, 0x45, 0x0c, 0x3f, 0x73, - 0x91, 0xad, 0xf1, 0x9f, - 0xe5, 0xb9, 0xd8, 0xf3, 0xac, 0x17, 0x24, 0xc1, 0xbc, 0x59, 0x79, 0xd6, - 0x8e, 0x70, 0x03, 0x2d, - 0x42, 0x8c, 0x3d, 0x43, 0x3b, 0xd2, 0x55, 0x17, 0x95, 0xd7, 0x48, 0xc5, - 0xc1, 0xcc, 0xb6, 0xd1, - 0xe4, 0xed, 0xe8, 0x88, 0x43, 0x93, 0x2c, 0xc8, 0x68, 0x8c, 0xda, 0x5b, - 0x28, 0xd1, 0xc2, 0x27, - 0x15, 0xce, 0x76, 0xe8, 0x3d, 0x46, 0xa8, 0xbd, 0xdc, 0xc9, 0xc8, 0xfb, - 0x89, 0xe2, 0x0e, 0x82, - 0xb7, 0x3c, 0x63, 0x0c, 0x7f, 0x52, 0xf1, 0x46, 0xf7, 0x40, 0x93, 0x14, - 0xbd, 0x3e, 0xf8, 0x5c, - 0xc8, 0x89, 0xa4, 0x42, 0x1e, 0x81, 0x8f, 0x47, 0xae, 0x66, 0xc5, 0xc6, - 0xab, 0x96, 0x1d, 0xdc, - 0x06, 0x3b, 0xa0, 0xd9, 0x27, 0x9e, 0x30, 0x36, 0xbd, 0xbb, 0x4c, 0xa8, - 0x52, 0x40, 0xc3, 0x3c, - 0x70, 0x3f, 0x14, 0xb2, 0xdd, 0x63, 0x06, 0x76, 0x5f, 0x2f, 0xe8, 0x15, - 0x9b, 0x08, 0x20, 0xe6, - 0x9d, 0x63, 0x8f, 0x1f, 0x05, 0xde, 0x62, 0xff, 0x8c, 0x11, 0xc0, 0x21, - 0x6c, 0x39, 0xe4, 0x9b, - 0x41, 0x70, 0x6d, 0xce, 0xc9, 0x9d, 0x4d, 0x0c, 0x2a, 0x6b, 0x6e, 0x91, - 0xe8, 0xec, 0x36, 0xcf, - 0x75, 0xf8, 0xe4, 0xe6, 0x08, 0xb2, 0x2e, 0x5b, 0x5d, 0x28, 0x82, 0xe9, - 0xe0, 0x68, 0x63, 0xc4, - 0x19, 0xb8, 0xf5, 0x99, 0x73, 0xb9, 0xc8, 0xd1, 0x65, 0x7c, 0x50, 0x68, - 0x2d, 0x62, 0x4b, 0xfa, - 0xc9, 0xdd, 0x94, 0x39, 0xf1, 0x05, 0x87, 0x4e, 0x7a, 0xb3, 0x66, 0x4b, - 0x0d, 0x37, 0xdc, 0xd6, - 0xaa, 0x17, 0x56, 0xba, 0x36, 0xbe, 0x19, 0xb3, 0x44, 0xee, 0x0a, 0x0d, - 0x4d, 0x9d, 0x31, 0x8e, - 0xfc, 0x01, 0x2d, 0x6a, 0xdf, 0xae, 0xec, 0x10, 0xd9, 0x25, 0x29, 0xbe, - 0xa3, 0x12, 0x48, 0xd7, - 0x4d, 0x06, 0xee, 0xbf, 0x87, 0x62, 0x2d, 0x60, 0x93, 0xde, 0xf6, 0x02, - 0x4c, 0x6c, 0x73, 0xb7, - 0xbf, 0xd9, 0x20, 0x52, 0x0b, 0xf8, 0xb1, 0x0e, 0x98, 0x27, 0xc2, 0xf6, - 0xc4, 0x7f, 0x3f, 0x0c, - 0x2a, 0x5f, 0xec, 0x13, 0x7a, 0x8c, 0x93, 0xb9, 0x7b, 0x51, 0x53, 0x35, - 0xd1, 0x07, 0x1c, 0xc7, - 0x73, 0xc3, 0x44, 0x3f, 0x2f, 0x2c, 0x1e, 0x6d, 0xe0, 0x93, 0xce, 0x41, - 0xb2, 0x28, 0xa0, 0xf8, - 0x84, 0xdb, 0x7a, 0x86, 0x76, 0x67, 0xaa, 0x2e, 0xe9, 0x6d, 0x90, 0x49, - 0x41, 0x5b, 0xaf, 0x61, - 0xd5, 0xa2, 0x91, 0xf4, 0x57, 0x6d, 0x67, 0xb2, 0x1d, 0xc8, 0x5c, 0xdf, - 0x5b, 0x35, 0xd4, 0x0e, - 0xc3, 0x90, 0xb7, 0x91, 0x98, 0x64, 0xd7, 0x14, 0x7e, 0xbd, 0xb2, 0x70, - 0xfb, 0xf7, 0x5a, 0x92, - 0xaf, 0xd0, 0xa6, 0xee, 0xe3, 0x6f, 0x31, 0x9e, 0x46, 0xe9, 0x60, 0xf1, - 0x36, 0xfd, 0x72, 0xac, - 0x2b, 0x0b, 0xdc, 0x68, 0x95, 0x08, 0x9b, 0xb0, 0xaf, 0x84, 0xf0, 0xb8, - 0x77, 0xa6, 0xdd, 0xcd, - 0x86, 0x73, 0x1a, 0x70, 0x6b, 0xac, 0xba, 0x3c, 0x82, 0x04, 0x15, 0x90, - 0xce, 0xda, 0xee, 0x75, - 0xa7, 0x35, 0xe5, 0xb0, 0x97, 0xc5, 0x71, 0xd6, 0x29, 0x8e, 0x31, 0x13, - 0x4f, 0xbc, 0xb5, 0xfc, - 0xb1, 0x07, 0xc3, 0xd5, 0x58, 0xcc, 0xc1, 0x70, 0x4a, 0xfb, 0xdf, 0xbc, - 0xef, 0x7e, 0x3b, 0x60, - 0xb2, 0xfb, 0x93, 0x58, 0xaa, 0x83, 0xd9, 0x6b, 0xf5, 0x47, 0xf9, 0xe8, - 0xc6, 0x5e, 0xbb, 0x7e, - 0x5b, 0x34, 0xc8, 0xda, 0x48, 0x6b, 0x9d, 0xc6, 0xf0, 0xab, 0x18, 0xad, - 0xec, 0xae, 0xfd, 0x2b, - 0x46, 0x1f, 0xfd, 0x6c, 0x01, 0x87, 0x75, 0x33, 0x43, 0x05, 0x81, 0xb4, - 0x1c, 0x0d, 0x34, 0xf9, - 0xd3, 0x99, 0x31, 0x2d, 0x70, 0xf3, 0x57, 0x84, 0xa0, 0x73, 0x10, 0x77, - 0x09, 0x75, 0x17, 0x32, - 0x9f, 0xcb, 0xef, 0xe9, 0x18, 0x15, 0x72, 0xed, 0xe7, 0x78, 0x45, 0xf8, - 0xe3, 0xb8, 0xa5, 0x8f, - 0xfd, 0x55, 0x1d, 0x11, 0x30, 0x2a, 0xe4, 0x19, 0x0d, 0xf0, 0x8a, 0x33, - 0x05, 0xb3, 0x89, 0xdd, - 0xd4, 0xf6, 0xa1, 0x8f, 0xb8, 0xe9, 0x6f, 0xbb, 0xc9, 0x1d, 0xff, 0x52, - 0xfd, 0x94, 0x15, 0x04, - 0x0f, 0x8a, 0xd3, 0xfc, 0xbc, 0xb0, 0x78, 0x77, 0x06, 0x09, 0xbe, 0xc7, - 0x8d, 0xa0, 0xc5, 0x66, - 0x9c, 0x37, 0xbf, 0x64, 0xea, 0x5a, 0x6a, 0xf6, 0x58, 0xc4, 0x63, 0xac, - 0xca, 0x98, 0x25, 0x91, - 0x2f, 0x98, 0x1c, 0x47, 0xaf, 0x5d, 0xbb, 0x94, 0x79, 0x56, 0x39, 0xc9, - 0xaa, 0x67, 0x5f, 0xe5, - 0x9b, 0x58, 0x2f, 0xc6, 0x22, 0x40, 0x52, 0xc9, 0x31, 0xaa, 0x8c, 0x89, - 0x3e, 0x79, 0x27, 0xa7, - 0x43, 0xd8, 0x0d, 0x38, 0xd4, 0x56, 0x5d, 0x1e, 0x41, 0x02, 0xeb, 0x48, - 0x67, 0x6d, 0x77, 0xdb, - 0xef, 0xf4, 0xfb, 0x5b, 0xc5, 0x76, 0x74, 0x9b, 0xb8, 0x57, 0xad, 0xed, - 0x78, 0xb0, 0x85, 0x69, - 0xd9, 0xd4, 0x12, 0x85, 0x19, 0x92, 0x07, 0xde, 0xa4, 0x7d, 0xc4, 0x4c, - 0xff, 0xb5, 0x91, 0x76, - 0x79, 0x8e, 0x67, 0x97, 0x46, 0x4d, 0x4e, 0x37, 0xe4, 0x9d, 0x1a, 0x7a, - 0x44, 0xe8, 0x26, 0xbc, - 0xb6, 0x68, 0x53, 0x77, 0x90, 0xd6, 0xf9, 0x4f, 0x23, 0x95, 0x30, 0x99, - 0x1b, 0x9f, 0x39, 0x56, - 0x53, 0xd1, 0x8b, 0x84, 0x3c, 0xc1, 0xdd, 0x8e, 0x9f, 0xcc, 0x49, 0x4f, - 0x95, 0xef, 0x3a, 0x7b, - 0x7f, 0xb5, 0xc7, 0x4e, 0x61, 0xd3, 0x7e, 0x01, 0x59, 0x26, 0x56, 0xd2, - 0x16, 0xa8, 0xe5, 0x80, - 0xc1, 0x38, 0xd7, 0x67, 0x85, 0xaf, 0xc7, 0x06, 0x15, 0xd4, 0x37, 0xa9, - 0x74, 0x76, 0x1b, 0x86, - 0xf0, 0x77, 0xae, 0x1b, 0x91, 0x51, 0x8c, 0x7c, 0x60, 0x90, 0xb1, 0x2d, - 0x07, 0x92, 0x0d, 0xaf, - 0x23, 0xee, 0x9f, 0x36, 0xe1, 0xa2, 0xdb, 0xf8, 0xc0, 0xe3, 0xa1, 0x5a, - 0x0e, 0xe7, 0x1a, 0x9d, - 0xe7, 0x11, 0xb8, 0x05, 0xb1, 0xdc, 0x34, 0xd3, 0xd7, 0x30, 0xfc, 0x0f, - 0x01, 0xf1, 0x42, 0x39, - 0x25, 0xd5, 0x3f, 0xef, 0xc6, 0x3c, 0xeb, 0xce, 0x7d, 0x58, 0xed, 0xf2, - 0x5c, 0xa7, 0xd9, 0xa1, - 0x5e, 0xf3, 0x38, 0x8e, 0x9d, 0xba, 0xb5, 0xeb, 0xf2, 0xac, 0x72, 0x51, - 0x97, 0xce, 0xbe, 0x09, - 0xb5, 0x94, 0x03, 0xfa, 0x62, 0x99, 0xe1, 0x54, 0x9c, 0x29, 0x16, 0xcd, - 0x32, 0xbf, 0xb9, 0x48, - 0x1e, 0xd7, 0x65, 0x3b, 0xbb, 0xa3, 0xf0, 0xee, 0x0c, 0x12, 0xbf, 0x4d, - 0xd9, 0x83, 0x49, 0xcc, - 0xa2, 0xf2, 0x15, 0xe4, 0x42, 0x14, 0x59, 0xfb, 0x2b, 0x89, 0x5b, 0xef, - 0x34, 0xdc, 0xf6, 0xde, - 0xdf, 0xef, 0xb2, 0x5c, 0x3e, 0x0c, 0x37, 0xe8, 0x19, 0xc6, 0x88, 0xe4, - 0xad, 0xf5, 0x52, 0x4a, - 0xa6, 0x61, 0xd5, 0xcb, 0x78, 0x41, 0x79, 0xdf, 0xfd, 0x5b, 0x92, 0x9e, - 0xe9, 0x1d, 0x74, 0xf6, - 0xfe, 0xa9, 0x4d, 0x9c, 0xc2, 0x65, 0xfc, 0x02, 0xb2, 0x4c, 0xac, 0x67, - 0x2c, 0x93, 0x09, 0xc3, - 0xac, 0x2c, 0xf6, 0x63, 0x11, 0x20, 0x29, 0x85, 0xf9, 0x55, 0x46, 0xa5, - 0x1f, 0xdd, 0xf2, 0xb2, - 0x22, 0xba, 0xaf, 0x4d, 0x0e, 0x26, 0xd3, 0xf1, 0x14, 0x36, 0x02, 0xd7, - 0xa8, 0x46, 0xdb, 0x97, - 0xf9, 0xc6, 0xdd, 0x3e, 0x0a, 0x7f, 0xc4, 0x3d, 0xdb, 0x22, 0x43, 0x42, - 0xd8, 0x72, 0x0b, 0xf5, - 0xe2, 0xd6, 0x48, 0x51, 0x64, 0x0d, 0x1c, 0xfe, 0xd5, 0x37, 0x96, 0xf3, - 0x7a, 0x91, 0x01, 0x1b, - 0x4a, 0x69, 0x7e, 0x1d, 0x4f, 0x78, 0x15, 0x5f, 0xfa, 0xb0, 0x19, 0x27, - 0xb8, 0x8d, 0x71, 0x81, - 0xbc, 0x25, 0x70, 0xdf, 0xf9, 0xb7, 0xa9, 0x15, 0x27, 0x9b, 0xe4, 0xa2, - 0xed, 0x5f, 0xbf, 0x12, - 0x35, 0xdc, 0xb9, 0x53, 0x2e, 0xab, 0x6b, 0x5e, 0xa3, 0x96, 0x4f, 0xf5, - 0xae, 0x25, 0x94, 0x01, - 0xca, 0x21, 0xc4, 0xb4, 0x03, 0x4a, 0x9f, 0x55, 0xc5, 0x0f, 0x40, 0x1f, - 0x24, 0x17, 0x5c, 0xc8, - 0xee, 0xa0, 0xcb, 0x20, 0x2a, 0xf2, 0x7c, 0x92, 0x6c, 0x82, 0x0e, 0x60, - 0xde, 0x11, 0x44, 0x63, - 0x78, 0xda, 0x57, 0xec, 0xa9, 0xc9, 0x46, 0x3e, 0x30, 0x48, 0xb9, 0xf7, - 0xe2, 0x49, 0xe7, 0xb6, - 0x05, 0xc7, 0xf0, 0x54, 0xd5, 0xd1, 0x28, 0x2d, 0x02, 0x07, 0x6a, 0xfc, - 0x7b, 0x60, 0x43, 0x22, - 0x6b, 0x2f, 0x81, 0xdd, 0xb3, 0x11, 0xde, 0xb5, 0x51, 0x3a, 0x3d, 0xa4, - 0x39, 0xeb, 0x2a, 0x08, - 0x51, 0x79, 0xeb, 0x72, 0x21, 0x0a, 0xcd, 0x9c, 0xf4, 0xa5, 0xcc, 0x96, - 0x1a, 0x6e, 0x7b, 0x6f, - 0xe1, 0x2a, 0x18, 0xdc, 0x96, 0x42, 0x04, 0xe5, 0x6a, 0x8b, 0xb0, 0xa7, - 0x53, 0xb1, 0x81, 0x05, - 0x59, 0x9c, 0xa8, 0x2c, 0x55, 0xa0, 0x8d, 0xd4, 0x9b, 0xc2, 0x9d, 0x74, - 0x63, 0x2f, 0xbc, 0x3f, - 0xa3, 0xa6, 0x25, 0x9f, 0xad, 0x90, 0x51, 0xf2, 0xff, 0x5c, 0xf8, 0x62, - 0x92, 0x7d, 0x37, 0xd4, - 0xf2, 0xdf, 0xce, 0xed, 0x8c, 0x9a, 0x9c, 0x6e, 0x0b, 0xf9, 0x34, 0xf4, - 0x88, 0x13, 0x4c, 0xbb, - 0x71, 0x6b, 0x24, 0xc9, 0x32, 0xe7, 0x0e, 0x7f, 0x8b, 0xfa, 0x4b, 0x98, - 0x3d, 0xa9, 0xe1, 0xec, - 0x56, 0x16, 0x7b, 0xd0, 0xe9, 0x10, 0xf5, 0xa3, 0x9d, 0xcb, 0x23, 0xb3, - 0xee, 0x8f, 0x79, 0x59, - 0x11, 0x5d, 0xb6, 0xc7, 0x07, 0x13, 0x88, 0x99, 0x0a, 0x1b, 0x01, 0x8a, - 0x54, 0x23, 0x8c, 0xaa, - 0x6a, 0x7b, 0xb1, 0xa6, 0x5c, 0x95, 0xd6, 0xbc, 0x85, 0xef, 0x9e, 0x29, - 0x9f, 0x4a, 0xeb, 0x02, - 0x89, 0xf9, 0xc9, 0x8c, 0xd7, 0x1c, 0xc2, 0x4b, 0x84, 0x0d, 0xab, 0x57, - 0x43, 0x7a, 0x2b, 0x13, - 0x94, 0xd2, 0xfc, 0x3a, 0x9e, 0xf0, 0x2a, 0xbe, 0x37, 0xa3, 0x32, 0x4e, - 0xb3, 0xd9, 0xe2, 0xc1, - 0x65, 0xf1, 0x62, 0x5a, 0xe0, 0x25, 0xae, 0xcb, 0x83, 0xe6, 0x20, 0xee, - 0x12, 0xea, 0x2e, 0x64, - 0x8c, 0x3e, 0x39, 0xd8, 0x02, 0xcd, 0xea, 0x66, 0x86, 0x0a, 0xc1, 0xab, - 0x38, 0x1a, 0x68, 0x31, - 0xbb, 0x4a, 0xe0, 0x7d, 0x31, 0xad, 0x91, 0x2a, 0x4e, 0xf5, 0x0b, 0x87, - 0x19, 0xbe, 0xbd, 0x24, - 0x77, 0x50, 0x84, 0x10, 0x15, 0x79, 0x3e, 0x49, 0x36, 0x41, 0x07, 0x30, - 0x6f, 0xe9, 0x22, 0xd0, - 0x3c, 0x6d, 0xca, 0x76, 0xb5, 0x85, 0x23, 0x1f, 0x18, 0x24, 0xbd, 0x9a, - 0x71, 0xc5, 0x92, 0x5b, - 0x7b, 0x26, 0x07, 0x61, 0x5b, 0x86, 0x5e, 0x25, 0x8f, 0xf4, 0x9f, 0xa3, - 0xcb, 0x69, 0x67, 0xa8, - 0x28, 0xf7, 0x8c, 0xe5, 0x67, 0x47, 0x83, 0xab, 0x10, 0x38, 0xd6, 0xec, - 0x5e, 0x86, 0x5d, 0xd3, - 0xab, 0x43, 0x66, 0xc1, 0xd9, 0x3a, 0x11, 0xba, 0x90, 0x3b, 0xa9, 0x80, - 0xeb, 0x3c, 0xf0, 0x84, - 0xd2, 0xcd, 0x01, 0x56, 0x9f, 0x77, 0x5f, 0x8d, 0x74, 0xa6, 0xb3, 0xfa, - 0xaf, 0xd4, 0xd6, 0x38, - 0x31, 0x4f, 0x79, 0x7c, 0x14, 0xfe, 0x4b, 0x7a, 0x75, 0x44, 0x86, 0x84, - 0x73, 0xe4, 0x16, 0x29, - 0xde, 0xbb, 0x82, 0x27, 0xd1, 0x88, 0x3f, 0xe1, 0xcd, 0x13, 0x2b, 0x69, - 0x0b, 0x54, 0x93, 0x40, - 0xc4, 0xff, 0x27, 0x33, 0x50, 0x7e, 0xef, 0x2b, 0x17, 0xd3, 0x5d, 0x55, - 0x0f, 0x16, 0x58, 0xa4, - 0x5f, 0xa7, 0x08, 0xf5, 0x72, 0x3e, 0xbd, 0xe2, 0x26, 0x79, 0xd1, 0xdc, - 0x31, 0x6f, 0x7f, 0x03, - 0xcc, 0x1a, 0x64, 0x6d, 0x24, 0xd4, 0xaf, 0x63, 0x78, 0xb4, 0x0c, 0xb7, - 0x76, 0x57, 0x9f, 0xf4, - 0xcf, 0xe6, 0x34, 0xe0, 0xd6, 0x9b, 0xb7, 0x78, 0xc7, 0x08, 0x2a, 0xe3, - 0x5f, 0x77, 0x1f, 0xea, - 0x76, 0x04, 0xb4, 0x6b, 0xfa, 0xfd, 0x36, 0x40, 0xe2, 0x94, 0xa4, 0xbd, - 0xc9, 0x48, 0xe3, 0xda, - 0x2c, 0x64, 0x4c, 0xca, 0x5d, 0x12, 0xa3, 0x8f, 0xc6, 0xea, 0x1f, 0x9d, - 0x83, 0x47, 0xdf, 0xfb, - 0xb8, 0xb6, 0xb0, 0xf0, 0xc3, 0xe2, 0x89, 0x31, 0xf1, 0x49, 0x2d, 0xd3, - 0x30, 0x9e, 0x3d, 0x3a, - 0xd8, 0x80, 0x22, 0xfe, 0xf6, 0x16, 0x0f, 0xd7, 0x70, 0xa8, 0x67, 0xc1, - 0x59, 0x14, 0x50, 0x7c, - 0x2e, 0xcc, 0x2c, 0x3c, 0x40, 0xd9, 0xb3, 0x9d, 0xad, 0x83, 0x9a, 0x44, - 0x0c, 0xc6, 0x9e, 0xef, - 0x36, 0x20, 0xe9, 0xde, 0xdc, 0xe4, 0x73, 0x45, 0x1c, 0x2a, 0x69, 0xa1, - 0x87, 0x05, 0x14, 0x1f, - 0xdb, 0x7c, 0x72, 0x73, 0x04, 0x59, 0x17, 0xcc, 0xcf, 0x14, 0x41, 0x95, - 0x70, 0x34, 0xd0, 0x62, - 0x69, 0x87, 0xe1, 0x2b, 0xae, 0xda, 0xce, 0xa7, 0x3a, 0x53, 0xb8, 0x7d, - 0xb6, 0x6a, 0x6b, 0x1c, - 0xb3, 0xaf, 0xa3, 0x23, 0x45, 0x07, 0xd1, 0x62, 0x21, 0x92, 0x5a, 0x65, - 0x60, 0xff, 0x7a, 0x74, - 0x14, 0x9a, 0x46, 0x93, 0xd2, 0xc2, 0xa0, 0xb4, 0x08, 0x1c, 0x6b, 0x76, - 0x2f, 0x43, 0xcf, 0x88, - 0x95, 0x86, 0xcc, 0x41, 0x71, 0x74, 0x22, 0xb7, 0xe3, 0x76, 0x91, 0xc3, - 0x15, 0x78, 0x23, 0xcb, - 0xbe, 0x8d, 0x10, 0x29, 0xe4, 0x7c, 0xb9, 0x07, 0x4c, 0xf2, 0x61, 0x7b, - 0x62, 0xde, 0xfe, 0x06, - 0x62, 0x9e, 0xf2, 0xf8, 0x28, 0x3f, 0x96, 0xf4, 0xea, 0x88, 0xcf, 0xcb, - 0xe6, 0x0b, 0x2c, 0x52, - 0xa1, 0x0e, 0x45, 0x69, 0xb0, 0x5b, 0x41, 0xe0, 0x94, 0x35, 0x7d, 0xbb, - 0x1d, 0xfc, 0x76, 0xc0, - 0x3b, 0x02, 0x5a, 0xd4, 0x7d, 0x9f, 0x1b, 0x20, 0x71, 0x4a, 0x52, 0xbf, - 0x85, 0x24, 0x90, 0x6d, - 0x16, 0x32, 0x26, 0x65, 0xcf, 0x09, 0xb0, 0xa6, 0x63, 0x75, 0xee, 0xaf, - 0xa0, 0xc2, 0x8e, 0x9c, - 0x66, 0x0d, 0x32, 0xd7, 0x12, 0x6a, 0xb6, 0xd0, 0x3c, 0x5a, 0x06, 0xba, - 0x3b, 0xca, 0xae, 0x7a, - 0xe9, 0xcf, 0x5b, 0x82, 0xe2, 0xe8, 0x44, 0xad, 0x05, 0xec, 0xe1, 0x45, - 0x2a, 0xf0, 0x46, 0x55, - 0x5c, 0x5b, 0x58, 0x78, 0x80, 0x71, 0xa5, 0xf9, 0x99, 0xc5, 0xf7, 0x88, - 0x18, 0x4f, 0xff, 0x1d, - 0x6c, 0x40, 0x11, 0x7f, 0x7b, 0x0b, 0xe6, 0x8a, 0x38, 0x54, 0xd2, 0x81, - 0xcd, 0x0a, 0x28, 0x3e, - 0x6d, 0x14, 0x21, 0x04, 0x94, 0x8f, 0xee, 0x83, 0xec, 0x81, 0x71, 0x0c, - 0x6b, 0xab, 0xe9, 0x34, - 0xad, 0x78, 0xc6, 0x18, 0xfe, 0xa4, 0x21, 0x8c, 0x2d, 0x80, 0xe5, 0x28, - 0xb9, 0x7c, 0x33, 0xb8, - 0x37, 0x74, 0xd9, 0xa5, 0x33, 0x60, 0x7b, 0x4c, 0xc8, 0xff, 0xca, 0x2c, - 0x21, 0xa4, 0xd5, 0x15, - 0x61, 0x62, 0xa2, 0x75, 0xda, 0x70, 0x8e, 0xef, 0x55, 0x34, 0xe9, 0x9f, - 0xcf, 0x2b, 0xac, 0x4c, - 0x4b, 0x3d, 0x4e, 0x66, 0xa0, 0xfc, 0x1d, 0x56, 0x2e, 0x65, 0xba, 0xaa, - 0x1e, 0x2c, 0xb0, 0x8b, - 0xb9, 0xe2, 0x80, 0x8b, 0x2c, 0x66, 0x81, 0x38, 0x25, 0x9c, 0x8e, 0x5e, - 0x96, 0x3f, 0xfc, 0x30, - 0xe3, 0x82, 0x78, 0x2a, 0x8b, 0x89, 0x14, 0xf7, 0x01, 0xe2, 0x35, 0x7e, - 0xdc, 0x30, 0xc0, 0x11, - 0xba, 0x1e, 0xd0, 0x06, 0xde, 0x29, 0x99, 0x23, 0x9a, 0x20, 0xa8, 0x0a, - 0xbf, 0x1f, 0x7c, 0x2e, - 0xf1, 0x23, 0x9e, 0x60, 0x7e, 0xd5, 0x84, 0x75, 0xb4, 0x45, 0x12, 0xa0, - 0xa1, 0x33, 0xcc, 0xa5, - 0xa0, 0x5a, 0x75, 0x12, 0x5f, 0xdf, 0x49, 0xe9, 0x40, 0xe0, 0xde, 0x36, - 0xbb, 0x5d, 0xb7, 0xca, - 0x85, 0x8f, 0x4a, 0xfd, 0x99, 0xe3, 0xa2, 0x27, 0x3d, 0xb8, 0x33, 0xc4, - 0xe7, 0xfa, 0x6e, 0x6b, - 0x83, 0xb4, 0xea, 0x24, 0xbe, 0x7d, 0x92, 0x11, 0x80, 0x03, 0x7f, 0x6c, - 0xb5, 0xba, 0xad, 0x57, - 0xda, 0x28, 0x42, 0x08, 0xeb, 0xdd, 0x1f, 0xc5, 0x1b, 0xc1, 0xe2, 0x18, - 0xd6, 0x95, 0x11, 0x68, - 0x47, 0x4b, 0xcd, 0x17, 0xee, 0x03, 0x7d, 0x3a, 0x97, 0xd0, 0x22, 0x39, - 0xba, 0xac, 0xf5, 0xf3, - 0xc5, 0xab, 0x17, 0x48, 0xbf, 0xfa, 0xe7, 0x22, 0xc3, 0x06, 0xfe, 0xd8, - 0xa9, 0xb7, 0x99, 0xae, - 0xb0, 0x53, 0xf3, 0xae, 0xb7, 0x48, 0xc9, 0x79, 0x9e, 0x2e, 0x7c, 0x31, - 0x49, 0xdf, 0xfa, 0x6a, - 0x33, 0xe7, 0x19, 0x8a, 0x09, 0x35, 0x5b, 0x68, 0x1e, 0x2d, 0x03, 0x5d, - 0xfc, 0x65, 0x57, 0x3d, - 0xfa, 0x3a, 0x8d, 0xb3, 0xf8, 0x30, 0xdc, 0x26, 0x64, 0x9e, 0x65, 0x16, - 0xf1, 0x52, 0x8b, 0xeb, - 0x96, 0x7a, 0x9c, 0xcc, 0x83, 0x3b, 0x3a, 0xac, 0x5c, 0xca, 0xb7, 0x97, - 0x3c, 0x58, 0xa3, 0xd5, - 0x6f, 0xbc, 0x41, 0xf2, 0x89, 0x44, 0xfe, 0x91, 0x87, 0xe8, 0xf4, 0xd5, - 0xe4, 0x2a, 0xa8, 0x20, - 0x6e, 0xe8, 0x71, 0x89, 0x66, 0xc0, 0xf6, 0x98, 0x53, 0x3d, 0x57, 0x58, - 0x42, 0x8b, 0x69, 0x2a, - 0xc2, 0xc4, 0x87, 0xea, 0x77, 0xe0, 0xdf, 0x1d, 0xaa, 0x68, 0x11, 0xfd, - 0x5d, 0x56, 0x9b, 0x98, - 0xf6, 0x4c, 0x0e, 0xc2, 0xb6, 0xcf, 0xbc, 0x4a, 0xdd, 0x2b, 0xfd, 0x85, - 0x55, 0xd2, 0xce, 0x93, - 0x50, 0x2d, 0xdb, 0x09, 0xce, 0x8e, 0xc5, 0x95, 0x20, 0x70, 0x6f, 0x1b, - 0xbc, 0xcf, 0xba, 0x65, - 0xff, 0xfd, 0x7d, 0xe7, 0x2d, 0xe1, 0xf4, 0x0b, 0x66, 0x99, 0x0f, 0xea, - 0x8a, 0x32, 0xc8, 0xc9, - 0x5d, 0x0f, 0x68, 0x03, 0x6f, 0xf5, 0xad, 0xf0, 0x4d, 0x10, 0x54, 0x05, - 0xbe, 0xee, 0x3e, 0x17, - 0xa9, 0xeb, 0x06, 0x37, 0xc4, 0xf1, 0x01, 0xa8, 0xfb, 0x52, 0x2c, 0x59, - 0x64, 0xbd, 0xb1, 0x90, - 0x8e, 0x96, 0x59, 0x2e, 0x1f, 0x06, 0xfa, 0x74, 0xed, 0x63, 0x44, 0x72, - 0xb7, 0x9b, 0x29, 0x25, - 0x17, 0x66, 0x16, 0x1e, 0x20, 0x8d, 0xb8, 0xaf, 0xb7, 0xa0, 0x4d, 0x22, - 0x06, 0x63, 0x4f, 0x96, - 0x1b, 0x10, 0x95, 0x6f, 0x6e, 0x72, 0xd8, 0xc3, 0x0e, 0x15, 0xd5, 0xb1, - 0xa2, 0xe3, 0x0a, 0xee, - 0x97, 0x2e, 0xac, 0xb7, 0x6c, 0xbf, 0x32, 0xa5, 0x88, 0x1f, 0x14, 0x1a, - 0x9a, 0xf9, 0x62, 0xdf, - 0x7d, 0x1d, 0xa7, 0xb8, 0x7c, 0x18, 0x6e, 0x13, 0x32, 0x4f, 0xd3, 0x0b, - 0x99, 0x29, 0xa4, 0x94, - 0xec, 0x08, 0xab, 0xd6, 0x37, 0x39, 0x6c, 0x80, 0x07, 0xeb, 0x8b, 0xb9, - 0x51, 0x90, 0x05, 0x77, - 0x58, 0xc8, 0x98, 0x57, 0xba, 0x24, 0x85, 0xdd, 0x4f, 0x17, 0x3e, 0xf9, - 0xc5, 0x8e, 0x7d, 0x35, - 0xf7, 0x18, 0x3e, 0xb9, 0x59, 0x4b, 0xb4, 0x43, 0x09, 0xfe, 0x5e, 0x08, - 0xf3, 0x73, 0x0f, 0x99, - 0x1f, 0x83, 0x55, 0x40, 0x54, 0x27, 0xf8, 0xe7, 0xd8, 0xc7, 0x1c, 0xc0, - 0x7f, 0x22, 0x88, 0xc6, - 0xfb, 0x6e, 0xbd, 0xc8, 0x17, 0xb4, 0xd4, 0x2f, 0xb0, 0x4b, 0xc6, 0x9b, - 0x57, 0xf3, 0x4a, 0xe1, - 0x7c, 0x49, 0x97, 0xc3, 0x93, 0x9c, 0x66, 0x1a, 0xe6, 0x9a, 0x70, 0x86, - 0x3f, 0x88, 0x65, 0x9e, - 0x09, 0xb1, 0x73, 0x25, 0x9b, 0x2e, 0x48, 0x41, 0xbb, 0xb2, 0xf2, 0x6f, - 0xdf, 0xe0, 0x06, 0x5a, - 0x0d, 0x22, 0xb3, 0x0a, 0xa1, 0x7b, 0x68, 0x65, 0x6d, 0x60, 0x3b, 0x1e, - 0x02, 0x21, 0x84, 0x72, - 0x7a, 0x72, 0x37, 0x1a, 0xb4, 0x02, 0x56, 0x2c, 0x5b, 0x21, 0x3c, 0x2e, - 0x6d, 0xc8, 0xa6, 0xa2, - 0x67, 0x59, 0x02, 0xac, 0xfd, 0xee, 0xbe, 0xd9, 0xe8, 0x8f, 0xa5, 0x37, - 0x9d, 0x6b, 0x6f, 0x70, - 0x45, 0xe3, 0xad, 0xe1, 0xf3, 0xc8, 0x6d, 0x28, 0xfc, 0xb9, 0xa7, 0xe0, - 0x35, 0x2d, 0xb4, 0xe7, - 0x87, 0x27, 0x2a, 0x0b, 0x84, 0x28, 0xb2, 0x35, 0x56, 0xd1, 0xb6, 0x1d, - 0x68, 0x7b, 0x2f, 0x7f, - 0xdc, 0x13, 0xe2, 0xd1, 0xcc, 0x43, 0x2f, 0xf3, 0xa6, 0x7a, 0xae, 0xb0, - 0x84, 0xd5, 0xd2, 0x54, - 0xe8, 0x9b, 0x6b, 0xf9, 0x0d, 0x6c, 0x4c, 0xa4, 0xd1, 0x39, 0x42, 0xc8, - 0x8c, 0x51, 0x87, 0x5f, - 0x4f, 0xae, 0x8e, 0x49, 0x9a, 0xa9, 0x3d, 0x72, 0xf8, 0xb7, 0x73, 0xdb, - 0xc3, 0xed, 0x32, 0xa3, - 0x1d, 0x2b, 0x35, 0xb6, 0x49, 0xec, 0xe8, 0xf5, 0xb3, 0xae, 0x99, 0x19, - 0xf0, 0xa3, 0xc9, 0xd2, - 0x4e, 0xfa, 0xbe, 0x32, 0x75, 0x2d, 0x35, 0x7b, 0x2c, 0x62, 0xd0, 0x56, - 0x65, 0x4c, 0xf3, 0xa9, - 0x04, 0x93, 0xc0, 0x2f, 0x3a, 0x55, 0x20, 0x24, 0xd6, 0xd2, 0xc9, 0x71, - 0xdd, 0xc1, 0x82, 0x28, - 0xeb, 0x67, 0x3b, 0x74, 0xff, 0x23, 0x54, 0xbf, 0x6e, 0x85, 0x64, 0x9c, - 0xa5, 0x71, 0x07, 0x41, - 0xf8, 0x92, 0xed, 0x45, 0xe5, 0xfb, 0xcc, 0x34, 0x0f, 0xf7, 0xe0, 0xcf, - 0x7e, 0xd3, 0xca, 0xff, - 0xf3, 0x8b, 0xfe, 0x96, 0x63, 0x1e, 0x94, 0x67, 0xdf, 0x2c, 0x97, 0x79, - 0x2e, 0xb2, 0x8d, 0xb1, - 0x3e, 0xc5, 0xaa, 0x80, 0xa8, 0x4e, 0x33, 0x0d, 0x73, 0x4d, 0x38, 0x43, - 0xfe, 0x44, 0xd3, 0x4f, - 0x3d, 0x39, 0xfa, 0x0d, 0x5a, 0x01, 0x2b, 0x16, 0xcc, 0xf1, 0x1e, 0x17, - 0xd7, 0x64, 0x53, 0x51, - 0xbd, 0x71, 0x40, 0xa4, 0x16, 0x33, 0xa1, 0x1c, 0xf3, 0x4e, 0x47, 0x2f, - 0x4b, 0xfe, 0x7e, 0x18, - 0x8a, 0x05, 0x99, 0x01, 0x25, 0x53, 0xda, 0x50, 0x3b, 0xb1, 0x8d, 0x03, - 0x6a, 0x5a, 0xab, 0x0d, - 0x88, 0xad, 0xf9, 0xf7, 0x38, 0x98, 0xca, 0x42, 0x50, 0xd8, 0x08, 0xda, - 0xe5, 0xdb, 0xea, 0x19, - 0xdd, 0x47, 0xd2, 0xaa, 0x23, 0xc7, 0x27, 0xfa, 0x72, 0xaf, 0x0d, 0x3d, - 0x22, 0x74, 0x13, 0x5e, - 0xcd, 0x4e, 0x54, 0x16, 0xcb, 0x50, 0xa7, 0x6a, 0xac, 0x61, 0xaf, 0x3a, - 0xd0, 0xf6, 0x5e, 0xfe, - 0x0b, 0x19, 0x13, 0xd3, 0x86, 0xe5, 0x58, 0x53, 0xd0, 0xdb, 0x77, 0xb6, - 0x50, 0x61, 0x47, 0x4e, - 0x13, 0xf5, 0xd6, 0x31, 0x1a, 0xd8, 0x98, 0x8b, 0x61, 0x72, 0x84, 0x53, - 0xdb, 0xa2, 0xcd, 0xbe, - 0x98, 0xa4, 0x7f, 0x4b, 0xd0, 0x0f, 0x4a, 0xd2, 0x8e, 0x16, 0xaa, 0xdd, - 0x17, 0x59, 0xa7, 0xb9, - 0x02, 0xa8, 0x60, 0xf6, 0x1d, 0xcb, 0x10, 0x12, 0x6b, 0x69, 0x85, 0xd9, - 0x8f, 0x81, 0x41, 0x14, - 0x93, 0xbd, 0x6c, 0x98, 0x56, 0xea, 0x12, 0x81, 0x5e, 0xcd, 0xdd, 0x6b, - 0x47, 0x38, 0xe0, 0xf7, - 0x80, 0x48, 0xba, 0xa9, 0x4c, 0x32, 0x8a, 0x0a, 0x3f, 0xbf, 0x59, 0x38, - 0x9c, 0x9a, 0x2d, 0x49, - 0x90, 0x41, 0x3c, 0x15, 0xa4, 0xa5, 0x0a, 0x9a, 0xe1, 0x71, 0xfb, 0x3f, - 0x6e, 0x18, 0x60, 0xe9, - 0xd0, 0x65, 0x61, 0xa0, 0x82, 0xbc, 0x4f, 0x9f, 0x1f, 0xcf, 0x36, 0x23, - 0x20, 0x55, 0x97, 0x2c, - 0x24, 0x81, 0x0f, 0x94, 0x29, 0xb8, 0xe3, 0xc7, 0xa9, 0x8d, 0x4e, 0x7f, - 0xfa, 0x06, 0x18, 0xab, - 0x34, 0x88, 0x89, 0x28, 0xc1, 0x2f, 0x63, 0x57, 0x77, 0x43, 0xec, 0x78, - 0x08, 0x84, 0x55, 0x0b, - 0xcb, 0x75, 0xf4, 0xcf, 0xec, 0xce, 0x97, 0x5c, 0x11, 0xda, 0xe3, 0x92, - 0x82, 0xb6, 0x9d, 0xc2, - 0xed, 0x5c, 0x9b, 0xad, 0xd8, 0xbd, 0x64, 0x89, 0xd3, 0x3e, 0x28, 0x34, - 0xf7, 0x31, 0xc4, 0x7d, - 0xf4, 0xe4, 0x6e, 0x34, 0xab, 0x04, 0xac, 0x58, 0xb6, 0x42, 0x78, 0x5c, - 0xda, 0x53, 0x8f, 0x87, - 0xce, 0xb2, 0x04, 0x9b, 0x39, 0x1f, 0xbf, 0x71, 0x13, 0xdd, 0x89, 0x6e, - 0xf9, 0xd6, 0xde, 0xe0, - 0x99, 0xf0, 0x4f, 0x30, 0x3f, 0x8b, 0x42, 0xdb, 0x5a, 0xc3, 0x09, 0x50, - 0xb1, 0xf8, 0x66, 0xb3, - 0x10, 0x09, 0x86, 0xbc, 0xe8, 0x97, 0x80, 0x90, 0xde, 0xce, 0xa2, 0x07, - 0xf2, 0x82, 0x4d, 0xa0, - 0x44, 0xb7, 0x9d, 0x9a, 0x1c, 0x4c, 0x65, 0x21, 0x28, 0x6c, 0x04, 0x6d, - 0x93, 0x8c, 0x75, 0xed, - 0x40, 0x24, 0x5d, 0xb5, 0x26, 0x19, 0x45, 0x05, 0xfe, 0xbe, 0xcd, 0x1c, - 0x4e, 0x4d, 0xf7, 0xc5, - 0x92, 0xe9, 0x5c, 0xe3, 0xb9, 0x6e, 0x1a, 0x88, 0x8a, 0x18, 0x7e, 0xe6, - 0xe1, 0x99, 0x21, 0xfd, - 0x3a, 0x56, 0x6a, 0xaf, 0x92, 0x1b, 0x13, 0x29, 0xa5, 0x9f, 0xf1, 0x32, - 0x23, 0x85, 0x51, 0x67, - 0x01, 0x54, 0x30, 0x7b, 0xef, 0x84, 0x08, 0x09, 0xd4, 0xd5, 0xa3, 0x8d, - 0xa6, 0xa1, 0xc1, 0x0a, - 0x26, 0x29, 0x6f, 0x62, 0x34, 0x73, 0xf3, 0xd5, 0xc2, 0xe4, 0xcb, 0xa6, - 0x75, 0x87, 0x59, 0xbf, - 0x12, 0xa1, 0xe6, 0x4a, 0xf5, 0x5c, 0x90, 0x82, 0xb5, 0xa7, 0x27, 0xde, - 0x7d, 0x03, 0x0c, 0xb4, - 0x1a, 0x44, 0xa5, 0x14, 0x81, 0xf6, 0xd0, 0xca, 0xda, 0xc0, 0x76, 0x3c, - 0x04, 0x42, 0xcb, 0xe4, - 0x48, 0xc1, 0x1e, 0xeb, 0x52, 0xb3, 0x05, 0x4d, 0x91, 0xd9, 0x9c, 0xfe, - 0x37, 0x0c, 0x30, 0x95, - 0x68, 0xd3, 0xd1, 0x50, 0x41, 0x5e, 0xc6, 0xae, 0xee, 0x86, 0x1b, 0xf0, - 0x10, 0xcb, 0xaa, 0x16, - 0xf5, 0xb0, 0x5e, 0x4f, 0x44, 0x80, 0xa4, 0x51, 0x62, 0x97, 0xdb, 0xd1, - 0x7c, 0xf2, 0x4e, 0x8d, - 0x81, 0x1c, 0x8a, 0xd2, 0xa3, 0xb6, 0x82, 0x03, 0xeb, 0x6a, 0xfa, 0xb5, - 0x3a, 0x3b, 0xec, 0x43, - 0x8b, 0x51, 0xa9, 0x7a, 0xca, 0xd7, 0xd2, 0x59, 0xef, 0x64, 0x2e, 0x8e, - 0xcc, 0xfb, 0x6a, 0x07, - 0xc7, 0x03, 0x77, 0xbe, 0xa2, 0x31, 0xf7, 0x30, 0xa8, 0x6f, 0x7b, 0x01, - 0x26, 0x36, 0xd8, 0xba, - 0xd6, 0x5e, 0xc1, 0x79, 0xa5, 0x22, 0x7f, 0xa9, 0xa2, 0x74, 0x7a, 0x8b, - 0x72, 0x15, 0x54, 0x10, - 0x20, 0x12, 0xcf, 0xbb, 0x13, 0xed, 0xc3, 0xe3, 0x7f, 0x5f, 0x87, 0x0e, - 0x27, 0xc7, 0x9a, 0x83, - 0x0a, 0x4d, 0x23, 0xa8, 0x69, 0x61, 0x50, 0x5a, 0x04, 0x0e, 0xd4, 0x3b, - 0xf6, 0xc0, 0x86, 0x44, - 0x08, 0xe5, 0x43, 0x5e, 0x74, 0xaa, 0x40, 0x48, 0x6f, 0x67, 0x51, 0xe2, - 0x79, 0x41, 0xc7, 0x50, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x4c, 0x52, 0xde, 0xc4, 0x68, 0xe6, 0x25, 0x69, 0x47, 0x0b, 0x55, 0x8f, - 0xea, 0xcd, 0xb2, 0xbd, - 0xd7, 0x0a, 0xf1, 0x02, 0x4a, 0xa6, 0x77, 0xa0, 0x76, 0xa1, 0xd9, 0x06, - 0xd4, 0xb4, 0x95, 0x1a, - 0x74, 0xac, 0xd4, 0x9d, 0xe7, 0x36, 0x26, 0x52, 0x89, 0xfd, 0x21, 0x64, - 0x46, 0xc9, 0xa2, 0xce, - }, - { /* 8 */ - 0x99, 0xaa, 0x16, 0x04, 0xc2, 0x95, 0x8c, 0x4a, 0x63, 0xeb, 0xf0, 0x49, - 0x21, 0x0a, 0xad, 0xf8, - 0x93, 0xe3, 0xda, 0xa3, 0x95, 0xb5, 0xa1, 0x97, 0x1b, 0x19, 0xbd, 0x7f, - 0x09, 0x35, 0xa8, 0x38, - 0x88, 0xfd, 0x2b, 0x3b, 0xa6, 0xc5, 0x21, 0xbc, 0xaf, 0xb5, 0xad, 0x3e, - 0x65, 0x8a, 0x44, 0xdb, - 0xae, 0x16, 0x29, 0x6c, 0x27, 0x1a, 0xaa, 0xe1, 0xc4, 0x02, 0x84, 0xcc, - 0xfd, 0xee, 0x57, 0x5c, - 0x8b, 0xbe, 0x09, 0x55, 0xe0, 0x74, 0xcd, 0x78, 0xbb, 0x23, 0x51, 0x37, - 0x69, 0x61, 0xa4, 0xfb, - 0xbd, 0x82, 0x28, 0xa6, 0x86, 0x94, 0x0e, 0x2e, 0x10, 0xb8, 0x71, 0xb5, - 0xb1, 0xdc, 0xbf, 0xfe, - 0x69, 0xbd, 0x24, 0x97, 0x06, 0x13, 0xb2, 0x23, 0xa9, 0x8c, 0x87, 0xdc, - 0x67, 0x47, 0xd5, 0x6a, - 0xb1, 0x4d, 0xa0, 0xdd, 0x5d, 0x15, 0x38, 0xb8, 0x40, 0xa5, 0x07, 0x91, - 0x81, 0xf6, 0xb9, 0x7e, - 0x6e, 0xbb, 0x7e, 0xd0, 0x09, 0xdd, 0x4c, 0x95, 0x8d, 0x11, 0xe8, 0xc9, - 0x7b, 0x0b, 0x37, 0x8b, - 0x38, 0x30, 0x95, 0x7d, 0x78, 0xbf, 0xfc, 0xf9, 0xe3, 0x62, 0xfe, 0xa8, - 0xe0, 0x25, 0x1c, 0x04, - 0x3e, 0xb6, 0xd1, 0xa1, 0xf4, 0x1e, 0xe7, 0xb2, 0xcb, 0x8d, 0xc5, 0xba, - 0xf8, 0x30, 0x1f, 0x44, - 0x92, 0x63, 0xc4, 0x38, 0x16, 0xda, 0x44, 0x6a, 0x17, 0x6b, 0xe9, 0x78, - 0x0d, 0x6c, 0x49, 0x99, - 0x95, 0x65, 0x9e, 0x7f, 0x19, 0x14, 0xba, 0xdc, 0x33, 0xf6, 0x86, 0x6d, - 0x11, 0x20, 0xab, 0x78, - 0x59, 0x07, 0x41, 0xb8, 0xec, 0x52, 0x6a, 0x3e, 0x2a, 0xf8, 0x9c, 0x4c, - 0xa7, 0xef, 0xcd, 0x2f, - 0x31, 0x3a, 0x7b, 0xb4, 0x69, 0x2e, 0x3d, 0xe0, 0x8f, 0x06, 0x4f, 0x97, - 0xc4, 0xf1, 0xf9, 0xe4, - 0x4e, 0xd6, 0x38, 0x5b, 0x04, 0xa3, 0xdc, 0x83, 0xce, 0x49, 0xfa, 0x29, - 0xfb, 0x7a, 0x27, 0x4c, - 0xd3, 0x39, 0x56, 0x76, 0x8f, 0x49, 0x42, 0xbb, 0x9d, 0xa9, 0x99, 0x7c, - 0xca, 0xd7, 0x88, 0x75, - 0xce, 0xa1, 0xe3, 0x32, 0x30, 0x98, 0xd9, 0xdb, 0x01, 0xea, 0xb2, 0x2f, - 0xbe, 0x7d, 0x67, 0xd6, - 0xa0, 0x1a, 0x9d, 0xe2, 0x39, 0x45, 0x95, 0x4e, 0x8c, 0xfb, 0x5a, 0xe6, - 0xc5, 0x76, 0x50, 0x5d, - 0xe5, 0x05, 0x77, 0x85, 0xe9, 0xa9, 0x81, 0xed, 0x36, 0x32, 0xb9, 0xfe, - 0x12, 0x6a, 0x93, 0x70, - 0xd5, 0xbf, 0x12, 0xaa, 0x03, 0xe8, 0x59, 0xf0, 0xb5, 0x46, 0xa2, 0x6e, - 0xd2, 0xc2, 0x8b, 0x35, - 0xb9, 0xc7, 0x50, 0x8f, 0xcf, 0xeb, 0x1c, 0x5c, 0x20, 0xb3, 0xe2, 0xa9, - 0xa1, 0x7b, 0xbd, 0x3f, - 0xa4, 0x5f, 0xe5, 0xcb, 0x70, 0x3a, 0x87, 0x3c, 0xbc, 0xf0, 0xc9, 0xfa, - 0xd5, 0xd1, 0x52, 0x9c, - 0xbf, 0x41, 0x14, 0x53, 0x43, 0x4a, 0x07, 0x17, 0x08, 0x5c, 0xd9, 0xbb, - 0xb9, 0x6e, 0xbe, 0x7f, - 0x2d, 0x22, 0xd0, 0x6b, 0x55, 0x90, 0x43, 0x7d, 0x1f, 0x37, 0x30, 0xc3, - 0xb4, 0x02, 0xf7, 0xe6, - 0xe7, 0xc6, 0x4b, 0x70, 0x2c, 0x77, 0x88, 0xd4, 0x2e, 0xd6, 0x11, 0xf0, - 0x1a, 0xd8, 0x92, 0xf1, - 0xdc, 0xb5, 0xfc, 0x63, 0x12, 0x79, 0x98, 0xe9, 0xd9, 0x22, 0x13, 0x51, - 0xf6, 0x16, 0x6e, 0xd5, - 0x21, 0xed, 0x58, 0x10, 0x8e, 0x11, 0x75, 0xeb, 0x4f, 0x2a, 0x46, 0xe7, - 0x84, 0x28, 0xf1, 0x66, - 0xf9, 0x1d, 0xdc, 0x5a, 0xd5, 0x17, 0xff, 0x70, 0xa6, 0x03, 0xc6, 0xaa, - 0x62, 0x99, 0x9d, 0x72, - 0xee, 0xcc, 0xa5, 0xb9, 0x3d, 0xe6, 0x49, 0xcd, 0x42, 0xb2, 0xa0, 0xcf, - 0x3e, 0x0c, 0x77, 0x11, - 0x62, 0x74, 0xf6, 0xab, 0xd2, 0x5c, 0x7a, 0x03, 0xdd, 0x0c, 0x9e, 0xed, - 0x4b, 0x21, 0x31, 0x0b, - 0xcd, 0xe2, 0xc1, 0x5c, 0x76, 0x29, 0x35, 0x1f, 0x15, 0x7c, 0x4e, 0x26, - 0xb2, 0x96, 0x87, 0xf6, - 0x67, 0xb1, 0x90, 0x19, 0x18, 0x4c, 0x8d, 0x8c, 0xe1, 0x75, 0x59, 0xf6, - 0x5f, 0xdf, 0xd2, 0x6b, - 0x72, 0xa3, 0xd5, 0x0f, 0x35, 0x63, 0x32, 0x08, 0x1d, 0x20, 0x97, 0x9d, - 0x0b, 0xf8, 0x39, 0x89, - 0x9b, 0x69, 0x2a, 0xf1, 0x07, 0x4b, 0x85, 0x73, 0x7b, 0x0f, 0x58, 0x47, - 0x29, 0xb8, 0xac, 0x79, - 0xbe, 0xc1, 0x0a, 0xc8, 0xc0, 0x25, 0xe2, 0xea, 0x04, 0x2e, 0x8d, 0xbc, - 0xbd, 0x37, 0x5f, 0xde, - 0xeb, 0x09, 0xc3, 0x0b, 0xf7, 0xf6, 0xbe, 0x42, 0x7e, 0xcb, 0x67, 0xd4, - 0x2a, 0xf2, 0x94, 0x71, - 0x86, 0xf1, 0x9f, 0xb5, 0xb8, 0x9a, 0x1e, 0x13, 0xe7, 0x4c, 0x73, 0x14, - 0x5d, 0x12, 0x43, 0xda, - 0x83, 0x34, 0xf9, 0x07, 0x72, 0x8a, 0xe9, 0x9c, 0xdb, 0x35, 0xb4, 0x0f, - 0x49, 0xec, 0xa0, 0xba, - 0x09, 0x0a, 0xee, 0xc9, 0x11, 0x91, 0xc1, 0x19, 0x6c, 0x64, 0xb1, 0x3f, - 0x24, 0xd4, 0xe5, 0xe0, - 0x54, 0x48, 0xd7, 0x58, 0xb4, 0xbc, 0xb9, 0x55, 0x76, 0x97, 0xbe, 0x6f, - 0x93, 0x9c, 0x2a, 0x0e, - 0x77, 0x66, 0xb3, 0xbd, 0xff, 0x73, 0xc5, 0x87, 0x21, 0x59, 0x50, 0x86, - 0x1f, 0x06, 0xda, 0xe9, - 0x40, 0xda, 0x8c, 0xd5, 0x1a, 0xfc, 0xe3, 0x2c, 0x86, 0xb0, 0x24, 0x03, - 0xc3, 0xe2, 0x20, 0x4d, - 0xf6, 0x91, 0x76, 0x4f, 0x48, 0x27, 0x25, 0x22, 0xe2, 0x88, 0x4c, 0x87, - 0x5e, 0x58, 0x7b, 0xd2, - 0x5a, 0x44, 0x63, 0xd6, 0xaa, 0xe3, 0x86, 0xfa, 0x3e, 0x6e, 0x60, 0x45, - 0xab, 0x04, 0x2d, 0x0f, - 0x0d, 0x4f, 0x96, 0xe0, 0x58, 0xee, 0xd3, 0x6b, 0x5c, 0x6f, 0x22, 0x23, - 0x34, 0x73, 0xe7, 0x21, - 0xfa, 0x5e, 0xfe, 0x34, 0x93, 0xa6, 0x13, 0xb4, 0xb2, 0x95, 0x3a, 0xa3, - 0x6e, 0x72, 0x7d, 0x52, - 0xc7, 0xab, 0x0d, 0xfb, 0x21, 0x09, 0x18, 0xc2, 0x6d, 0x8e, 0x03, 0x10, - 0x9a, 0xa9, 0x82, 0x36, - 0x65, 0x72, 0xac, 0xec, 0xdd, 0x92, 0x84, 0xb5, 0xf9, 0x91, 0xf1, 0xf8, - 0x57, 0x6d, 0xd3, 0xea, - 0x5f, 0x81, 0x05, 0x64, 0x60, 0xf3, 0x71, 0x75, 0x02, 0x17, 0xa7, 0x5e, - 0xbf, 0xfa, 0xce, 0x6f, - 0xd2, 0xb9, 0x48, 0xed, 0x0c, 0x26, 0xa7, 0x46, 0x91, 0xdb, 0xcd, 0x7b, - 0xce, 0x8e, 0x69, 0xd4, - 0xf0, 0x17, 0x32, 0x93, 0xc4, 0x86, 0x3e, 0x69, 0xca, 0x67, 0x77, 0x95, - 0x46, 0x4d, 0x78, 0x92, - 0x94, 0xe5, 0x80, 0xe4, 0x9a, 0x7b, 0x5f, 0x21, 0x3f, 0x84, 0xd2, 0x6a, - 0x15, 0x79, 0x4a, 0xd9, - 0x43, 0x99, 0xae, 0xbb, 0x5c, 0x4d, 0x0f, 0xe8, 0x92, 0x26, 0xd8, 0x0a, - 0xcf, 0x09, 0xc0, 0x6d, - 0x44, 0x9f, 0xf4, 0xfc, 0x53, 0x83, 0xf1, 0x5e, 0xb6, 0xbb, 0xb7, 0x1f, - 0xd3, 0x45, 0x22, 0x8c, - 0x9e, 0xac, 0x4c, 0x43, 0xcd, 0x5b, 0x72, 0xfc, 0x47, 0x76, 0x9f, 0x5c, - 0x3d, 0x46, 0x4f, 0x19, - 0xe9, 0xca, 0xff, 0xfe, 0x32, 0x28, 0xb7, 0x7b, 0x66, 0x2f, 0xcf, 0xda, - 0x22, 0x40, 0x95, 0xf0, - 0xb2, 0x0e, 0x82, 0xb3, 0x1b, 0xa4, 0xd4, 0x7c, 0x54, 0x33, 0xfb, 0x98, - 0x8d, 0x1d, 0x59, 0x5e, - 0x2a, 0x24, 0x8a, 0x2c, 0x5a, 0x5e, 0xbd, 0xcb, 0x3b, 0xaa, 0x5f, 0xd6, - 0xa8, 0x4e, 0x15, 0x07, - 0x13, 0x94, 0x01, 0xca, 0xa1, 0x8e, 0xa4, 0xcf, 0xd4, 0xba, 0xf5, 0x79, - 0x4c, 0x32, 0xe8, 0xa2, - 0x37, 0xbc, 0x3f, 0x68, 0xe5, 0x8f, 0x26, 0xab, 0xa7, 0xe9, 0x74, 0x85, - 0xdc, 0xe4, 0xfa, 0xa4, - 0x1c, 0x18, 0xab, 0xdf, 0x3c, 0xbe, 0x7e, 0x9d, 0x90, 0x31, 0x7f, 0x54, - 0x70, 0xf3, 0x0e, 0x02, - 0xb4, 0x88, 0xc6, 0x6f, 0x97, 0x05, 0xcf, 0x37, 0x7c, 0xdc, 0xc0, 0x8a, - 0x95, 0x08, 0x5a, 0x1e, - 0x4b, 0x13, 0x5e, 0xe9, 0xce, 0xb3, 0x2b, 0x0c, 0xf2, 0x30, 0x3d, 0x32, - 0xef, 0x84, 0xc4, 0x2c, - 0x7f, 0xec, 0x43, 0xef, 0x6d, 0x8d, 0xe1, 0x63, 0x41, 0x4f, 0xb5, 0xbe, - 0x3f, 0x8b, 0xde, 0xa8, - 0x78, 0xea, 0x19, 0xa8, 0x62, 0x43, 0x1f, 0xd5, 0x65, 0xd2, 0xda, 0xab, - 0x23, 0xc7, 0x3c, 0x49, - 0xcc, 0x62, 0xdf, 0xc7, 0xf5, 0x46, 0xd0, 0xe2, 0x19, 0x0e, 0x1a, 0x21, - 0xb6, 0xcf, 0x66, 0x57, - 0x81, 0xf7, 0xc5, 0xf2, 0xb7, 0x54, 0xe0, 0xa5, 0xc3, 0xd1, 0x1c, 0x01, - 0x41, 0x5e, 0xa1, 0x3b, - 0xac, 0xd5, 0x15, 0x99, 0xe2, 0xc4, 0xa3, 0xd8, 0xdc, 0xe6, 0x2c, 0xc2, - 0xf5, 0x5c, 0x56, 0xdd, - 0x98, 0x2a, 0x08, 0x9f, 0x41, 0xfa, 0x69, 0xb7, 0x6f, 0x99, 0xa4, 0x4e, - 0x25, 0x53, 0x4c, 0x59, - 0x56, 0x8b, 0xeb, 0xad, 0x71, 0x62, 0xb0, 0x6c, 0x6e, 0x73, 0x16, 0x61, - 0x9b, 0x2e, 0x2b, 0x8f, - 0x1e, 0xdb, 0x97, 0x2a, 0xf9, 0x60, 0x77, 0xa4, 0x88, 0xd5, 0xd7, 0x5a, - 0x78, 0x41, 0x0f, 0x83, - 0x30, 0xba, 0x65, 0x2f, 0xea, 0x41, 0xd8, 0x1d, 0x83, 0x74, 0x1b, 0x90, - 0xc0, 0xa8, 0x18, 0x45, - 0x14, 0x92, 0x5b, 0x8d, 0xae, 0x40, 0x5a, 0x79, 0xf0, 0x27, 0x9a, 0x6c, - 0x50, 0x7e, 0x0a, 0x43, - 0xc5, 0x68, 0x31, 0x0e, 0xe4, 0xd7, 0x11, 0xfb, 0x75, 0x6a, 0xab, 0x1e, - 0x92, 0x1b, 0x83, 0xb7, - 0x49, 0xd0, 0x62, 0x1c, 0x0b, 0x6d, 0x22, 0x35, 0xea, 0xd4, 0x95, 0x3c, - 0xe7, 0x36, 0xc5, 0xad, - 0xb0, 0xcd, 0xbe, 0x46, 0xde, 0x7a, 0xdd, 0x45, 0x4c, 0xd7, 0x53, 0x96, - 0x85, 0xaf, 0x58, 0xdf, - 0x70, 0x60, 0xe9, 0xfa, 0xf0, 0xbd, 0x3b, 0x31, 0x05, 0xc4, 0x3f, 0x93, - 0x03, 0x4a, 0x38, 0x08, - 0x0b, 0xc9, 0xd2, 0x3c, 0xd4, 0x4f, 0xc8, 0x20, 0x74, 0x80, 0x19, 0x31, - 0x2c, 0x66, 0xe4, 0x61, - 0xa6, 0x9c, 0xd9, 0x3e, 0xb5, 0xe4, 0x8e, 0x05, 0xa4, 0x14, 0x61, 0xf4, - 0xdd, 0x63, 0x53, 0x1d, - 0xaf, 0x96, 0x37, 0xf7, 0xa4, 0x75, 0x4f, 0x1c, 0xc8, 0x70, 0xd0, 0xcb, - 0xf9, 0xb7, 0xb6, 0xfd, - 0xa1, 0x9a, 0x83, 0x79, 0xba, 0x2a, 0x70, 0xb3, 0x80, 0x89, 0x0e, 0xe1, - 0xc1, 0x2f, 0xb1, 0xfc, - 0x17, 0xd1, 0x79, 0xe3, 0xe8, 0xf1, 0xb6, 0xbd, 0xe4, 0xb1, 0x66, 0x65, - 0x5c, 0x95, 0xea, 0x63, - 0xf5, 0xd2, 0x54, 0x21, 0x0e, 0x96, 0xc9, 0xe6, 0xf6, 0x1e, 0xb0, 0x8e, - 0x52, 0xb3, 0x9b, 0xf2, - 0xfd, 0x58, 0xa4, 0x73, 0x9c, 0x68, 0xed, 0x02, 0x96, 0x08, 0x55, 0xb6, - 0x72, 0x3e, 0x9f, 0xb3, - 0x3c, 0x75, 0xed, 0x54, 0x31, 0xc0, 0xee, 0x8b, 0xd3, 0x69, 0x6d, 0xb4, - 0xf0, 0x82, 0x1e, 0xc5, - 0xca, 0xe4, 0x9b, 0x1b, 0x79, 0xe7, 0xcb, 0xa9, 0x31, 0xe1, 0x21, 0x33, - 0xae, 0xda, 0x65, 0x17, - 0xa2, 0xd9, 0xa1, 0x17, 0xfc, 0x9b, 0x9c, 0x77, 0x94, 0x1f, 0xf2, 0xe8, - 0xcd, 0xc4, 0x51, 0xdc, - 0x4a, 0x93, 0x40, 0x72, 0x4d, 0xdc, 0xce, 0xf1, 0xfe, 0x42, 0x69, 0x35, - 0xeb, 0xdd, 0x25, 0x8d, - 0x0c, 0xcf, 0x88, 0x7b, 0xdb, 0x81, 0x36, 0x96, 0x50, 0x1d, 0x76, 0x24, - 0x30, 0x2a, 0x06, 0x80, - 0x18, 0x5d, 0xd3, 0xf6, 0x75, 0xc1, 0x6c, 0xef, 0xa0, 0x3a, 0xec, 0x48, - 0x60, 0x54, 0x0c, 0xc3, - 0xc3, 0xee, 0x75, 0xd2, 0x68, 0x76, 0x0a, 0xb0, 0x5d, 0x85, 0x90, 0x0c, - 0x8a, 0x0e, 0x80, 0xf7, - 0x47, 0xdc, 0xd6, 0x92, 0x15, 0x32, 0x1d, 0x9a, 0xa2, 0x2d, 0x4b, 0x16, - 0xdf, 0xae, 0xc2, 0xac, - 0x8f, 0xfb, 0x71, 0x7c, 0xa9, 0x0b, 0xdf, 0x0a, 0x8b, 0x28, 0xc2, 0x2b, - 0x79, 0xc6, 0xa6, 0x3a, - 0xf2, 0xd4, 0x0e, 0x66, 0x01, 0x58, 0x37, 0x50, 0xd2, 0x83, 0xdf, 0x9b, - 0x4e, 0xff, 0x79, 0x13, - 0xe0, 0xc0, 0x11, 0x37, 0x23, 0xb9, 0x76, 0x62, 0x0a, 0x4b, 0x7e, 0xe5, - 0x06, 0x94, 0x70, 0x10, - 0x3d, 0xf5, 0xf3, 0xcf, 0xb2, 0xaf, 0x0b, 0x76, 0xdf, 0x1b, 0x39, 0xb3, - 0xf4, 0xdb, 0xff, 0x64, - 0xaa, 0x53, 0x51, 0x45, 0x6e, 0x65, 0xb8, 0x93, 0xf4, 0x09, 0x17, 0xd0, - 0xed, 0x49, 0x55, 0x9d, - 0x57, 0x0b, 0xf5, 0x36, 0xf2, 0x0d, 0x55, 0x91, 0x62, 0x01, 0x42, 0x66, - 0x9f, 0x77, 0xca, 0x2e, - 0x87, 0x71, 0x81, 0x2e, 0x3b, 0xf5, 0xfb, 0xee, 0xeb, 0x3e, 0x27, 0x13, - 0x59, 0x4b, 0xa2, 0x7b, - 0xb6, 0x4b, 0xfa, 0x9a, 0x52, 0xdb, 0xc6, 0x0e, 0x64, 0x38, 0x68, 0x84, - 0x9d, 0xba, 0x5b, 0x9f, - 0xe3, 0x83, 0x33, 0x59, 0x65, 0x08, 0x9a, 0xa6, 0x1e, 0xdd, 0x82, 0xec, - 0x0a, 0x7f, 0x90, 0x30, - 0x23, 0x2e, 0x64, 0xe5, 0x4b, 0xcf, 0x7c, 0xd2, 0x57, 0xce, 0xee, 0xe9, - 0x8c, 0x9a, 0xf0, 0xe7, - 0x52, 0xce, 0x93, 0x84, 0x38, 0x1d, 0xa2, 0x1e, 0x5e, 0x78, 0x85, 0x7d, - 0x8b, 0x89, 0x29, 0x4e, - 0x8e, 0x7b, 0x6f, 0xe7, 0x2a, 0x64, 0x3a, 0xf7, 0x87, 0x5a, 0x96, 0x2c, - 0x7d, 0x9f, 0x47, 0x9b, - 0xdd, 0x35, 0xe2, 0xf8, 0x91, 0x16, 0x7d, 0x14, 0xd5, 0x50, 0x47, 0x56, - 0xf2, 0x4f, 0x8f, 0x74, - 0x2c, 0xa2, 0xce, 0xf0, 0xd6, 0xff, 0xa6, 0x80, 0x13, 0x45, 0x64, 0xc4, - 0xb0, 0x5b, 0x16, 0x47, - 0x50, 0x0d, 0xaf, 0x71, 0xfd, 0xc3, 0xab, 0x27, 0x46, 0x9c, 0x2d, 0x73, - 0x83, 0x3b, 0x28, 0xcf, - 0xec, 0x0f, 0x99, 0x4c, 0xf8, 0x38, 0x40, 0xf4, 0x5a, 0x56, 0x08, 0xc1, - 0x36, 0xbe, 0x76, 0x90, - 0x06, 0x86, 0x44, 0xdc, 0x8c, 0xa1, 0x1b, 0x4b, 0x28, 0xef, 0x3b, 0x12, - 0x18, 0x15, 0x03, 0x40, - 0x91, 0x20, 0xe6, 0x56, 0x50, 0x6b, 0xa8, 0xae, 0x03, 0xfd, 0x15, 0x71, - 0x01, 0x87, 0xa9, 0xb9, - 0xa3, 0x59, 0xbf, 0x8c, 0x7f, 0xf4, 0x79, 0x8a, 0x98, 0x6d, 0xa6, 0xef, - 0xc9, 0x9d, 0xb0, 0x7d, - 0xff, 0x9b, 0x98, 0x86, 0x59, 0xb6, 0xe4, 0x3b, 0x8e, 0xec, 0xfd, 0xb8, - 0x7a, 0x8c, 0x9e, 0x32, - 0x9c, 0x6f, 0x70, 0xb6, 0x08, 0x85, 0x7b, 0xc5, 0x5f, 0x92, 0x37, 0x52, - 0x35, 0xf4, 0x4e, 0x98, - 0x2b, 0xa4, 0x94, 0xb7, 0xd9, 0x31, 0x58, 0x36, 0x37, 0xd8, 0x0b, 0xd1, - 0xac, 0x17, 0xf4, 0xa6, - 0xc6, 0x2b, 0x13, 0x60, 0xa2, 0x66, 0xfd, 0x3f, 0x61, 0xfc, 0x57, 0x17, - 0x9e, 0xf0, 0x63, 0x97, - 0x39, 0xb0, 0x8b, 0xe6, 0xfb, 0xd0, 0x19, 0x04, 0xef, 0x10, 0xaa, 0xaf, - 0xe4, 0x7c, 0xfd, 0xa5, - 0x29, 0x67, 0xa8, 0x42, 0x1c, 0xef, 0x51, 0x0f, 0x2f, 0x3c, 0xa3, 0xdf, - 0xa4, 0xa5, 0xf5, 0x27, - 0x5b, 0xc4, 0x7d, 0x4d, 0x29, 0x8c, 0x63, 0x07, 0x32, 0x1c, 0x34, 0x42, - 0xaf, 0x5d, 0xcc, 0xae, - 0x90, 0xa0, 0xf8, 0xcd, 0xd3, 0x04, 0x4d, 0x53, 0x0f, 0x8f, 0x41, 0x76, - 0x05, 0xde, 0x48, 0x18, - 0x58, 0x87, 0x5f, 0x23, 0x6f, 0x3d, 0x8f, 0xc3, 0x26, 0x8a, 0xc8, 0x4b, - 0xa3, 0xb6, 0x2c, 0x8e, - 0xf1, 0x97, 0x2c, 0x08, 0x47, 0xe9, 0xdb, 0x94, 0xc6, 0x15, 0x23, 0x92, - 0x42, 0x14, 0x99, 0x33, - 0xdf, 0xf6, 0xde, 0x0d, 0x54, 0xc8, 0x74, 0x2d, 0xcd, 0xb4, 0xef, 0x58, - 0xfa, 0xfd, 0x8e, 0xf5, - 0x28, 0xe7, 0xb6, 0xd9, 0x9f, 0x80, 0xb4, 0xf2, 0x23, 0x4e, 0xf7, 0xd8, - 0xa0, 0xfc, 0x14, 0x86, - 0x60, 0xb7, 0xca, 0x5e, 0x17, 0x82, 0x73, 0x3a, 0xc5, 0xe8, 0x36, 0xe3, - 0x43, 0x93, 0x30, 0x8a, - 0x79, 0x6a, 0x07, 0x33, 0xe1, 0x2c, 0xfa, 0x28, 0x69, 0xa0, 0x8e, 0xac, - 0x27, 0x9e, 0xdd, 0xe8, - 0x76, 0xe6, 0xad, 0x26, 0x7c, 0x1c, 0x20, 0x7a, 0x2d, 0x2b, 0x04, 0x81, - 0x1b, 0x5f, 0x3b, 0x48, - 0x03, 0x43, 0x22, 0x6e, 0x46, 0xb1, 0xec, 0xc4, 0x14, 0x96, 0xfc, 0x09, - 0x0c, 0xeb, 0xe0, 0x20, - 0xc8, 0x27, 0xa7, 0xee, 0xbc, 0x39, 0xc2, 0x90, 0x29, 0x05, 0x89, 0x3d, - 0xa6, 0x68, 0x64, 0x96, - 0x02, 0xc3, 0x3c, 0xf5, 0xc5, 0xde, 0x09, 0x39, 0x18, 0xe4, 0xa8, 0x0e, - 0x08, 0xb2, 0x01, 0x81, - 0x12, 0x14, 0x1f, 0x51, 0x22, 0xe1, 0x41, 0x32, 0xd8, 0xc8, 0xa1, 0x7e, - 0x48, 0x6b, 0x09, 0x03, - 0xef, 0x4c, 0xbb, 0x22, 0xbe, 0x89, 0xac, 0x30, 0x4e, 0xc0, 0xf4, 0xc8, - 0x3a, 0x55, 0x96, 0xb0, - 0x46, 0x5c, 0xc8, 0x09, 0x96, 0x5d, 0xf8, 0x67, 0xae, 0x5f, 0x1f, 0x11, - 0xdb, 0xf7, 0x23, 0x0d, - 0x51, 0x8d, 0xb1, 0xea, 0x7e, 0xac, 0x4e, 0xda, 0x4a, 0xee, 0x79, 0x74, - 0x87, 0x62, 0xc9, 0x6e, - 0xdb, 0xb3, 0xa6, 0x24, 0x1d, 0xb7, 0x66, 0x5f, 0xfd, 0xbf, 0x7c, 0x44, - 0xea, 0x5a, 0x8c, 0x34, - 0x74, 0x25, 0x91, 0xd3, 0xb9, 0xc2, 0x29, 0x43, 0x35, 0xcf, 0xac, 0x8f, - 0x13, 0xed, 0x3a, 0xc9, - 0x0f, 0x8c, 0xaa, 0x15, 0x9d, 0x30, 0xda, 0x52, 0x44, 0x8b, 0x8a, 0x2d, - 0x3c, 0xc1, 0xe6, 0xa0, - 0xc1, 0x2d, 0x49, 0x27, 0xad, 0xa8, 0x03, 0x89, 0x45, 0x61, 0x38, 0x02, - 0x82, 0xbc, 0x81, 0x76, - 0x8d, 0x38, 0x4d, 0x89, 0x6c, 0xd5, 0xd6, 0x33, 0x93, 0xcc, 0x6a, 0x25, - 0x71, 0x74, 0xa7, 0xbb, - 0x68, 0x3d, 0x3a, 0x0c, 0x85, 0x7c, 0x57, 0xde, 0xa5, 0xfe, 0xd3, 0xdb, - 0x63, 0x1e, 0x34, 0xcb, - 0xb7, 0xcb, 0xe4, 0x01, 0xd1, 0xb4, 0x23, 0xf3, 0x68, 0x4a, 0x3c, 0x83, - 0x99, 0xe3, 0xba, 0x3e, - 0x0e, 0x0c, 0xb4, 0x8e, 0x1e, 0x5f, 0x3f, 0xaf, 0x48, 0xf9, 0xde, 0x2a, - 0x38, 0x98, 0x07, 0x01, - 0x5d, 0x42, 0x39, 0x91, 0xa5, 0x2d, 0x78, 0x4c, 0x1a, 0xf3, 0x0f, 0x50, - 0xb7, 0x48, 0xcf, 0xee, - 0xe2, 0x03, 0x2d, 0xc2, 0xe6, 0x67, 0x7f, 0x5b, 0x12, 0xaf, 0xd6, 0xeb, - 0x0e, 0x26, 0x71, 0x91, - 0xc0, 0xad, 0x57, 0xbc, 0x2e, 0xc7, 0xe6, 0x74, 0x49, 0x13, 0x6c, 0x05, - 0x86, 0xe5, 0x60, 0xd7, - 0x96, 0x26, 0xbc, 0x11, 0x5f, 0xa5, 0x56, 0x18, 0x27, 0x60, 0x7a, 0x64, - 0x1d, 0xcb, 0x4b, 0x58, - 0xad, 0x55, 0x0b, 0x02, 0x61, 0xab, 0x46, 0x25, 0xd0, 0x94, 0x78, 0xc5, - 0xf1, 0x05, 0xb7, 0x7c, - 0x01, 0x80, 0x1e, 0x9b, 0x83, 0x6f, 0xe5, 0xfd, 0x0c, 0x72, 0x54, 0x07, - 0x04, 0x59, 0xe1, 0xa1, - 0x24, 0x28, 0x3e, 0xa2, 0x44, 0x01, 0x82, 0x64, 0x73, 0x53, 0x81, 0xfc, - 0x90, 0xd6, 0x12, 0x06, - 0xe8, 0x4a, 0xe1, 0x65, 0xb1, 0x47, 0x52, 0x86, 0x6a, 0x5d, 0x9b, 0xdd, - 0x26, 0x19, 0x74, 0x51, - 0x8c, 0xb8, 0x53, 0x12, 0xef, 0xba, 0x33, 0xce, 0x9f, 0xbe, 0x3e, 0x22, - 0x75, 0x2d, 0x46, 0x1a, - 0xf3, 0x54, 0x10, 0xfd, 0x82, 0x37, 0xd2, 0xad, 0xde, 0xf1, 0x8b, 0x9c, - 0x4a, 0xa6, 0x98, 0xb2, - 0xa7, 0x1c, 0xc7, 0xa5, 0x36, 0x8b, 0x6b, 0xf8, 0xa8, 0x66, 0x35, 0xf3, - 0xd9, 0x3a, 0xb2, 0xbc, - 0x34, 0xff, 0x1d, 0x06, 0xa3, 0x3e, 0xca, 0x6f, 0xb3, 0x7f, 0x88, 0x8c, - 0xd0, 0x0f, 0x1a, 0x84, - 0xe6, 0x46, 0x55, 0xeb, 0xaf, 0x18, 0x6d, 0x29, 0x22, 0xa4, 0x45, 0xf7, - 0x1e, 0x81, 0x73, 0x50, - 0x48, 0x50, 0x7c, 0x87, 0x88, 0x02, 0xc7, 0xc8, 0xe6, 0xa6, 0xc1, 0x3b, - 0xe3, 0x6f, 0x24, 0x0c, - 0xba, 0x84, 0x72, 0xe1, 0x89, 0x5a, 0xf0, 0x98, 0x34, 0x25, 0x1e, 0xa0, - 0xad, 0x90, 0x5d, 0x1f, - 0x07, 0x06, 0x5a, 0x47, 0x0f, 0xce, 0xfe, 0xb6, 0x24, 0x9d, 0x6f, 0x15, - 0x1c, 0x4c, 0xe2, 0xe1, - 0xfc, 0xd8, 0xba, 0xe8, 0x1f, 0x07, 0x08, 0xff, 0x9a, 0x7a, 0x01, 0xb1, - 0x76, 0x67, 0x7e, 0x12, - 0x4d, 0x95, 0x1a, 0x35, 0x42, 0x12, 0x30, 0x47, 0xda, 0xdf, 0x06, 0x20, - 0xf7, 0x91, 0xc7, 0x6c, - 0x19, 0xdd, 0xcd, 0x6d, 0xf6, 0xae, 0x89, 0x12, 0xac, 0x48, 0xb8, 0x4f, - 0x64, 0x0d, 0xed, 0x62, - 0x42, 0x19, 0xb0, 0x20, 0xdf, 0x22, 0xea, 0x15, 0x9e, 0x54, 0x8c, 0x0d, - 0xcb, 0x50, 0x21, 0xcc, - 0x75, 0xa5, 0x8f, 0x48, 0x3a, 0xad, 0xcc, 0xbe, 0x39, 0xbd, 0xf8, 0x88, - 0x17, 0xb4, 0xdb, 0x68, - 0x4c, 0x15, 0x04, 0xae, 0xc1, 0x7d, 0xd5, 0xba, 0xd6, 0xad, 0x52, 0x27, - 0xf3, 0xc8, 0x26, 0xcd, - 0xa9, 0x10, 0x73, 0x2b, 0x28, 0xd4, 0x54, 0x57, 0xe0, 0x9f, 0xeb, 0xd9, - 0xe1, 0xa2, 0xb5, 0xbd, - 0x82, 0xb4, 0xe7, 0x9c, 0xf1, 0xe5, 0x0c, 0x61, 0xd7, 0x47, 0xe0, 0x08, - 0x4d, 0xb5, 0x41, 0x1b, - 0xf7, 0x11, 0x68, 0xd4, 0xcb, 0x48, 0xc0, 0xdf, 0xee, 0xfa, 0x18, 0x80, - 0x5a, 0x01, 0x9a, 0x73, - 0x08, 0x8a, 0xf0, 0x52, 0x92, 0xfe, 0x24, 0xe4, 0x60, 0x16, 0xe5, 0x38, - 0x20, 0x8d, 0x04, 0x41, - 0x4f, 0x56, 0x26, 0xc0, 0x87, 0xcc, 0x39, 0x7e, 0xc2, 0x3b, 0xae, 0x2e, - 0xff, 0x23, 0xc6, 0xed, - 0x10, 0xd7, 0x23, 0xa4, 0xe7, 0x3f, 0x48, 0x0b, 0xc0, 0x2c, 0x09, 0x70, - 0x40, 0xd9, 0x08, 0x82, - 0x3b, 0x73, 0xb7, 0x13, 0x3e, 0x0e, 0x10, 0x3d, 0xf7, 0xf4, 0x02, 0xa1, - 0xec, 0xce, 0xfc, 0x24, - 0xcb, 0x64, 0x85, 0x80, 0xfa, 0x88, 0x2e, 0x54, 0x3d, 0x93, 0x75, 0x34, - 0xaa, 0x83, 0x84, 0xb6, - 0x20, 0x6d, 0x46, 0x8b, 0x0d, 0x7e, 0x90, 0x16, 0x43, 0x58, 0x12, 0xe0, - 0x80, 0x71, 0x10, 0xc7, - 0x63, 0xf4, 0xe8, 0x30, 0x51, 0x33, 0x9f, 0xfe, 0xd1, 0x7e, 0xca, 0xea, - 0x4f, 0x78, 0xd0, 0xaa, - 0x73, 0x23, 0xcb, 0x94, 0xb6, 0x0c, 0xd7, 0xf5, 0x11, 0x52, 0xc3, 0x9a, - 0x0f, 0xa1, 0xd8, 0x28, - 0xed, 0x8f, 0x87, 0xd7, 0x7b, 0x57, 0xa5, 0x09, 0x56, 0x24, 0x5c, 0xc6, - 0x32, 0xe7, 0x97, 0x31, - 0xea, 0x89, 0xdd, 0x90, 0x74, 0x99, 0x5b, 0xbf, 0x72, 0xb9, 0x33, 0xd3, - 0x2e, 0xab, 0x75, 0xd0, - 0xc9, 0xa7, 0xb9, 0x75, 0x3f, 0x56, 0x27, 0x6d, 0x25, 0x77, 0xdd, 0x3a, - 0xa2, 0x31, 0x85, 0x37, - 0x32, 0x79, 0x59, 0xda, 0x2f, 0x9f, 0xd1, 0x24, 0x9b, 0x90, 0xb3, 0x9e, - 0xc8, 0x1a, 0x19, 0xc4, - 0x84, 0x32, 0xa3, 0x40, 0x7d, 0x44, 0x17, 0x2a, 0xff, 0xa8, 0xdb, 0x1a, - 0x55, 0xa0, 0x42, 0x5b, - 0x53, 0x4e, 0x8d, 0x1f, 0xbb, 0x72, 0x47, 0xe3, 0x52, 0x0a, 0xd1, 0x7a, - 0x8f, 0xd0, 0xc8, 0xef, - 0x04, 0x45, 0x78, 0x29, 0x49, 0x7f, 0x12, 0x72, 0x30, 0x0b, 0x93, 0x1c, - 0x10, 0xa7, 0x02, 0xc1, - 0x7c, 0xaf, 0x61, 0x81, 0x2b, 0x3c, 0x0d, 0xa7, 0x55, 0xd9, 0x49, 0xb7, - 0x33, 0x60, 0x3e, 0x88, - 0x41, 0x5a, 0x92, 0x4e, 0x99, 0x93, 0x06, 0xd1, 0x8a, 0xc2, 0x70, 0x04, - 0xc7, 0xbb, 0xc1, 0xec, - 0x27, 0x6b, 0x1c, 0xcc, 0x02, 0xb0, 0x6e, 0xa0, 0x67, 0xc5, 0x7d, 0xf5, - 0x9c, 0x3d, 0xf2, 0x26, - 0x55, 0xc8, 0xc9, 0xc3, 0x37, 0xd3, 0x5c, 0xa8, 0x7a, 0xe5, 0xea, 0x68, - 0x97, 0xc5, 0xcb, 0xaf, - 0xcf, 0x21, 0xfd, 0xa9, 0xb3, 0xf7, 0x3c, 0x26, 0x0d, 0x98, 0xe6, 0x28, - 0xba, 0x24, 0x86, 0x77, - 0x71, 0xe0, 0xf7, 0x61, 0x73, 0xd2, 0xde, 0xcc, 0x09, 0xb6, 0x6b, 0x94, - 0x07, 0x13, 0xd9, 0xa9, - 0x11, 0x57, 0x3d, 0x3f, 0x64, 0x50, 0xad, 0xf6, 0xcc, 0x5e, 0x5d, 0x77, - 0x44, 0x80, 0xe9, 0x23, - 0x97, 0xa6, 0xa2, 0x8a, 0xdc, 0xca, 0xb3, 0xe5, 0x2b, 0x12, 0x2e, 0x63, - 0x19, 0x92, 0xaa, 0xf9, - 0xd9, 0x70, 0x9a, 0xd1, 0xd8, 0x69, 0x6f, 0x66, 0xe5, 0x5b, 0xd4, 0x4a, - 0xe2, 0xe8, 0x8d, 0xb5, - 0xd0, 0x7a, 0x74, 0x18, 0xc9, 0xf8, 0xae, 0x7f, 0x89, 0x3f, 0x65, 0x75, - 0xc6, 0x3c, 0x68, 0x55, - 0xa8, 0x90, 0x6d, 0xb0, 0xab, 0xbb, 0xb1, 0xaa, 0xec, 0xed, 0xbf, 0xde, - 0xe5, 0xfb, 0x54, 0x1c, - 0x1b, 0x1e, 0xf1, 0x98, 0x33, 0x70, 0x80, 0x2b, 0xb4, 0xac, 0x10, 0x41, - 0x6c, 0xbf, 0xec, 0xe3, - 0x16, 0x51, 0x67, 0x78, 0x6b, 0x9e, 0x53, 0x40, 0xe8, 0xc3, 0x32, 0x62, - 0x58, 0xcc, 0x0b, 0xc2, - 0x6c, 0x78, 0x42, 0x25, 0xcc, 0x03, 0x45, 0xac, 0x95, 0xf5, 0x40, 0xc7, - 0x73, 0xb9, 0x36, 0x0a, - 0x2f, 0xe1, 0xec, 0x9e, 0x90, 0x4e, 0x4a, 0x44, 0x07, 0xd3, 0x98, 0xcd, - 0xbc, 0xb0, 0xf6, 0x67, - 0x45, 0x1f, 0xea, 0x67, 0xd0, 0xec, 0x14, 0xa3, 0xba, 0xc9, 0xe3, 0x18, - 0xd7, 0x1c, 0xc3, 0x2d, - 0x33, 0xf9, 0x47, 0x41, 0xac, 0xf0, 0x34, 0xd9, 0x97, 0xe2, 0xe7, 0x99, - 0xcc, 0x43, 0xf8, 0x65, - 0x1d, 0x98, 0xb5, 0x44, 0xbf, 0xd1, 0x9b, 0x60, 0x9c, 0x43, 0x2b, 0x53, - 0x74, 0xaa, 0xef, 0xa3, - 0xfe, 0x1b, 0x86, 0x1d, 0xda, 0xd9, 0x01, 0xc6, 0x82, 0x9e, 0xa9, 0xbf, - 0x7e, 0xd5, 0x7f, 0x93, - 0x7a, 0x29, 0x25, 0x5d, 0xa7, 0x9d, 0x16, 0xec, 0x7d, 0x36, 0x72, 0xa5, - 0x2b, 0x75, 0x3d, 0xc8, - 0x64, 0xf2, 0xb2, 0x77, 0x5e, 0xfd, 0x61, 0x48, 0xf5, 0xe3, 0xa5, 0xff, - 0x53, 0x34, 0x32, 0x4b, - 0xb3, 0x8e, 0x9c, 0x28, 0x98, 0xcb, 0x31, 0x81, 0x58, 0x41, 0xaf, 0x9f, - 0x89, 0x44, 0xb8, 0xff, - 0x1f, 0x5b, 0x89, 0xb1, 0x7a, 0x0f, 0x92, 0x59, 0x84, 0xa7, 0x83, 0x5d, - 0x7c, 0x18, 0xee, 0x22, - 0x2e, 0x61, 0xf2, 0x05, 0x13, 0x21, 0xaf, 0xb9, 0x0b, 0xa1, 0xcc, 0xca, - 0xb8, 0xe9, 0x17, 0xc6, - 0xe4, 0x85, 0x69, 0x1e, 0x6a, 0xc6, 0x64, 0x10, 0x3a, 0x40, 0xed, 0xf9, - 0x16, 0x33, 0x72, 0xd1, - 0x6a, 0xfe, 0x06, 0xf9, 0x40, 0xa2, 0x5e, 0xe7, 0xbd, 0x1a, 0x7b, 0xd5, - 0x6b, 0xac, 0x35, 0x4a, - 0x7d, 0x2f, 0x7f, 0x1a, 0xa8, 0x53, 0xe8, 0x5a, 0x59, 0xab, 0x1d, 0xb0, - 0x37, 0x39, 0xdf, 0x29, - 0xd8, 0xf0, 0x84, 0x4a, 0x5b, 0x06, 0x8a, 0x9b, 0xe9, 0x29, 0x80, 0x4d, - 0xe6, 0xb1, 0x6c, 0x14, - 0xc2, 0x6e, 0x6b, 0x49, 0xeb, 0x19, 0xef, 0x4d, 0x51, 0xf7, 0xc4, 0x0b, - 0x8e, 0x57, 0x61, 0x56, - 0x36, 0x3c, 0x21, 0xf3, 0x66, 0xe0, 0xc3, 0x56, 0xab, 0x9b, 0x20, 0x82, - 0xd8, 0xbd, 0x1b, 0x05, - 0xf8, 0x9d, 0xc2, 0xc1, 0x56, 0x78, 0x1a, 0x8d, 0xaa, 0x71, 0x92, 0xad, - 0x66, 0xc0, 0x7c, 0xd3, - 0x26, 0xeb, 0x02, 0x57, 0x81, 0xdf, 0x8b, 0x5d, 0x6b, 0xb7, 0x29, 0xf2, - 0x98, 0x64, 0x13, 0x87, - 0x3f, 0x36, 0xcf, 0x3a, 0x77, 0x71, 0x02, 0x4f, 0xc7, 0xff, 0x91, 0xbd, - 0xfc, 0x69, 0xfe, 0xe5, - 0x0a, 0x49, 0xcc, 0xa7, 0x57, 0x20, 0x2d, 0xdd, 0x78, 0xf2, 0x4d, 0x36, - 0x28, 0x3f, 0x05, 0xc0, - 0x9f, 0x2c, 0x52, 0xd8, 0x4e, 0x34, 0x97, 0x01, 0x4b, 0x04, 0xcb, 0x5b, - 0x39, 0x1f, 0xae, 0xb8, - 0xf4, 0x52, 0x4a, 0xba, 0x8d, 0xf9, 0x2c, 0x1b, 0xfa, 0x6c, 0xe4, 0x89, - 0x56, 0xea, 0x7a, 0x53, - 0x1a, 0x9e, 0xef, 0x03, 0xb0, 0x1f, 0x65, 0xd6, 0xb8, 0xde, 0x44, 0x46, - 0x68, 0xe6, 0x0d, 0x42, - 0xa5, 0xdf, 0xfb, 0x50, 0xf3, 0x55, 0x62, 0xc1, 0xb0, 0x82, 0x9d, 0xfd, - 0xd1, 0x88, 0xb3, 0x3d, - 0x61, 0x37, 0xd4, 0xc5, 0x94, 0xed, 0x96, 0xc7, 0xc9, 0x9a, 0x62, 0xe4, - 0x47, 0xca, 0xd1, 0x2b, - 0x35, 0x7f, 0x03, 0x9d, 0x20, 0x51, 0x2f, 0x92, 0xbf, 0x0d, 0xdc, 0x8b, - 0xd4, 0x56, 0xfb, 0x25, - 0x7b, 0xa9, 0x3b, 0xc6, 0x24, 0xf2, 0xf3, 0x11, 0x71, 0x44, 0x26, 0xa2, - 0x2f, 0x2c, 0xdc, 0x69, - 0xde, 0x76, 0xc0, 0x96, 0xd7, 0xa7, 0x91, 0xd0, 0xc1, 0xc6, 0xbb, 0x5f, - 0xfe, 0xa4, 0x6f, 0x54, - 0xb5, 0x08, 0xd8, 0xf4, 0x14, 0x6a, 0x2a, 0xca, 0x70, 0xae, 0x94, 0x8d, - 0x91, 0x51, 0xbb, 0xbf, - 0xda, 0x33, 0xb8, 0xbf, 0x9e, 0xd8, 0x83, 0xa2, 0xf1, 0xcd, 0x28, 0x43, - 0xee, 0x03, 0x6d, 0x95, - 0xbc, 0x02, 0x36, 0x3d, 0x05, 0xfb, 0xeb, 0xd3, 0x1c, 0xca, 0x25, 0xb2, - 0xb5, 0x85, 0x5e, 0x5f, - 0xd7, 0x7c, 0x2e, 0x5f, 0xc6, 0x36, 0x50, 0xc9, 0xad, 0xa2, 0x0a, 0x60, - 0xda, 0x70, 0x8a, 0xb4, - 0xab, 0xd3, 0x4f, 0xde, 0xed, 0x0a, 0x5d, 0x6e, 0xf8, 0x7b, 0x43, 0xd7, - 0xe9, 0x10, 0xb4, 0x3c, - 0x22, 0xae, 0x7a, 0x7e, 0xc8, 0xa0, 0x99, 0x2f, 0x5b, 0xbc, 0xba, 0xee, - 0x88, 0xc3, 0x11, 0x46, - 0x66, 0x31, 0x8e, 0x82, 0x9b, 0x23, 0x68, 0x71, 0xed, 0x07, 0x0d, 0xf1, - 0x5b, 0x86, 0x33, 0xca, - 0x3a, 0xf3, 0xa9, 0x88, 0xbd, 0x61, 0xf5, 0xc0, 0xfb, 0x86, 0x56, 0xa6, - 0xe8, 0x97, 0x1d, 0x85, - 0x9a, 0xe9, 0x34, 0x6a, 0x84, 0x24, 0x60, 0x8e, 0x77, 0x7d, 0x0c, 0x40, - 0x2d, 0xe1, 0x4d, 0xd8, - 0x6b, 0x7e, 0x18, 0x62, 0xc3, 0xcd, 0xbb, 0x1a, 0xb1, 0x68, 0x2f, 0xd2, - 0x6f, 0xf5, 0xd4, 0xeb, - 0x05, 0xc5, 0x66, 0xb2, 0xca, 0x10, 0xf7, 0x8f, 0x3c, 0x79, 0xc7, 0x1b, - 0x14, 0xfe, 0xe3, 0x60, - 0x6f, 0x3b, 0x60, 0x4b, 0x8a, 0xb2, 0xa9, 0x68, 0x81, 0x63, 0xbc, 0xce, - 0x7f, 0x52, 0xd6, 0x2a, - 0x80, 0x77, 0xdb, 0x69, 0x34, 0x3b, 0x05, 0x58, 0xcf, 0xa3, 0x48, 0x06, - 0x45, 0x07, 0x40, 0x9a, - 0x5c, 0xc2, 0x27, 0x0a, 0x26, 0x42, 0x9d, 0xb1, 0x16, 0x81, 0x5b, 0x57, - 0xb3, 0x11, 0x2e, 0x4f, - 0xfb, 0xde, 0xe0, 0xaf, 0x10, 0xc9, 0xf6, 0x49, 0xbe, 0xe7, 0x6e, 0xa4, - 0x6a, 0x2b, 0x9c, 0xf3, - 0x89, 0x7d, 0x35, 0xa0, 0x25, 0xaa, 0xc4, 0x41, 0xa3, 0xc7, 0xf9, 0x39, - 0x61, 0xd3, 0xa5, 0x7a, - 0x5e, 0x01, 0x1b, 0xff, 0xe3, 0x9c, 0x94, 0x88, 0x0e, 0x65, 0xf3, 0x59, - 0xbb, 0xa3, 0x2f, 0xce, - 0x8a, 0x3e, 0x17, 0xce, 0x63, 0x1b, 0x28, 0x85, 0xb7, 0x51, 0x05, 0x30, - 0x6d, 0x38, 0x45, 0x5a, - 0xbb, 0x04, 0x6c, 0x7a, 0x0a, 0x35, 0x15, 0x65, 0x38, 0x57, 0x4a, 0xa7, - 0xa9, 0xc9, 0xbc, 0xbe, - 0x6d, 0xf8, 0x5c, 0xbe, 0x4f, 0x6c, 0xa0, 0x51, 0x99, 0x87, 0x14, 0xc0, - 0x77, 0xe0, 0xd7, 0xab, - 0x9d, 0xef, 0x6e, 0x2d, 0x8b, 0xea, 0x9e, 0x38, 0x53, 0xe0, 0x63, 0x55, - 0x31, 0xad, 0xaf, 0x39, - 0x25, 0xa8, 0x20, 0x39, 0xc7, 0x6e, 0x67, 0x99, 0x7f, 0x21, 0xd5, 0xfb, - 0x94, 0x8f, 0xf3, 0xa7, - 0xc4, 0xe8, 0x2f, 0x95, 0x67, 0xb8, 0xf4, 0x06, 0x79, 0x18, 0xff, 0x19, - 0x96, 0x42, 0x62, 0x16, - 0x15, 0x12, 0x45, 0x16, 0x2d, 0x2f, 0xbf, 0x84, 0xfc, 0x55, 0xce, 0x6b, - 0x54, 0x27, 0xeb, 0xe2, - 0x85, 0xb2, 0xbd, 0xdb, 0xfe, 0x2b, 0xf2, 0xd7, 0xf3, 0xda, 0x8f, 0x1d, - 0x51, 0xf9, 0xa3, 0xfa, - 0xd6, 0xfc, 0x30, 0xc4, 0x45, 0x59, 0xb5, 0x34, 0xa1, 0xd0, 0x5e, 0x67, - 0xde, 0x29, 0x6b, 0x15, - 0xe1, 0x40, 0x0f, 0xac, 0xa0, 0xd6, 0x93, 0x9f, 0x06, 0x39, 0x2a, 0xe2, - 0x02, 0xcd, 0x91, 0xb1, - 0xd4, 0x3f, 0x0c, 0x31, 0x80, 0x87, 0xbc, 0x0d, 0xb9, 0x34, 0xf6, 0x69, - 0xd6, 0x9b, 0x6a, 0x94, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0xd1, 0xfa, 0x6a, 0x83, 0x4a, 0x97, 0x4b, 0x82, 0x85, 0x4d, 0x31, 0x72, - 0xc2, 0x65, 0x89, 0xf4, - 0x7e, 0x6c, 0x5d, 0x74, 0xee, 0xe2, 0x04, 0x9e, 0x4d, 0x3d, 0xe1, 0xb9, - 0x3b, 0xd2, 0x3f, 0x09, - 0xb8, 0x47, 0x4e, 0x14, 0x4c, 0x84, 0xf9, 0xa1, 0x2c, 0xc1, 0xb6, 0xae, - 0xa5, 0x22, 0x5c, 0x9e, - }, - { /* 9 */ - 0xa5, 0x55, 0xa4, 0x90, 0xc6, 0x8d, 0x2f, 0xd5, 0x71, 0x80, 0x04, 0x89, - 0xcb, 0x72, 0x1b, 0x5d, - 0x2d, 0x90, 0x75, 0x4e, 0x36, 0xf9, 0x9f, 0x17, 0x62, 0x87, 0xa3, 0x5a, - 0x48, 0x8a, 0xa4, 0x15, - 0x32, 0x9f, 0x4c, 0x80, 0x9d, 0x5f, 0xd4, 0xf3, 0xbf, 0x6c, 0x3b, 0x64, - 0xae, 0x3d, 0x18, 0xe9, - 0x8f, 0x0b, 0x94, 0x6d, 0x4b, 0xb1, 0x7f, 0x15, 0x81, 0x1e, 0x6c, 0xdd, - 0xe4, 0xac, 0x86, 0xd3, - 0x0e, 0x5f, 0x8a, 0xa5, 0xb5, 0x49, 0x5d, 0x6d, 0xe7, 0x32, 0x55, 0x1c, - 0xce, 0xa8, 0x72, 0xf5, - 0x30, 0x41, 0xf8, 0xfa, 0x20, 0xc6, 0xcb, 0x66, 0x9e, 0x27, 0xa6, 0x60, - 0xc1, 0x05, 0xc9, 0xce, - 0x38, 0xbf, 0x6d, 0xd1, 0x91, 0xe7, 0xb7, 0x77, 0x1a, 0xc8, 0x97, 0x70, - 0xbe, 0xe5, 0x0b, 0x52, - 0xc0, 0xc7, 0x66, 0x6e, 0x80, 0x9e, 0xaa, 0x5b, 0x3d, 0x9c, 0xdd, 0x43, - 0x82, 0x14, 0xa2, 0xbe, - 0x54, 0xbc, 0x60, 0x39, 0xd9, 0x78, 0xa0, 0x43, 0x23, 0xff, 0xd0, 0xa8, - 0x5e, 0x7f, 0xf9, 0xdf, - 0xe6, 0x18, 0x68, 0x4c, 0x05, 0x72, 0xb8, 0x63, 0x0b, 0x7b, 0x7d, 0x0f, - 0x0c, 0x5a, 0x9c, 0xe2, - 0x9e, 0x5b, 0x27, 0x06, 0x55, 0x5e, 0x69, 0x9c, 0xbb, 0xc7, 0xa1, 0xff, - 0xcc, 0xb3, 0x48, 0xda, - 0x39, 0xd0, 0x37, 0xec, 0x2e, 0x4a, 0x59, 0xdc, 0xeb, 0x0c, 0x38, 0x72, - 0x68, 0xf9, 0x82, 0xa0, - 0x55, 0xd3, 0x3a, 0x04, 0x66, 0xd5, 0x4e, 0xe8, 0xd2, 0x3b, 0x7f, 0xaa, - 0x88, 0x63, 0x70, 0x2d, - 0x7e, 0xe2, 0x50, 0xc4, 0x54, 0x44, 0xf0, 0x83, 0xd3, 0x61, 0xb8, 0xfc, - 0x71, 0xa1, 0x64, 0x51, - 0x52, 0x1d, 0x7f, 0xb7, 0xdd, 0x10, 0x81, 0x3f, 0x40, 0x22, 0xb4, 0xa4, - 0xef, 0x37, 0x49, 0xb6, - 0x91, 0x6b, 0xf7, 0x9e, 0x5f, 0xba, 0xda, 0x5a, 0xad, 0x31, 0x5b, 0xe1, - 0xd4, 0x07, 0xb3, 0xdd, - 0x64, 0xfd, 0x98, 0xc3, 0xf9, 0xbe, 0x6b, 0x25, 0xbd, 0xd8, 0x76, 0xc8, - 0x9f, 0x7a, 0x30, 0x11, - 0x03, 0xb1, 0xee, 0x47, 0x02, 0x34, 0xf1, 0x3e, 0xd0, 0x8f, 0x32, 0x06, - 0xb9, 0x24, 0x58, 0xd5, - 0x57, 0x0d, 0x8e, 0x7e, 0xdb, 0x4c, 0x51, 0x7d, 0xf3, 0x70, 0xe2, 0xae, - 0xe7, 0x5b, 0xa1, 0x0a, - 0x5a, 0xe3, 0xea, 0x9c, 0x6c, 0x31, 0xfd, 0x2e, 0xc4, 0xcd, 0x85, 0xb4, - 0x90, 0xd7, 0x8b, 0x2a, - 0x1c, 0xbe, 0xd7, 0x89, 0xa9, 0x92, 0xba, 0xda, 0x0d, 0x64, 0xaa, 0x38, - 0x5f, 0x93, 0xe4, 0x29, - 0x60, 0x82, 0x33, 0x37, 0x40, 0x4f, 0x55, 0xcc, 0xff, 0x4e, 0x8f, 0xc0, - 0x41, 0x0a, 0x51, 0x5f, - 0x07, 0xce, 0x45, 0xb3, 0xbb, 0xc5, 0xcf, 0xd7, 0x92, 0x19, 0xcb, 0x0e, - 0x67, 0x54, 0x39, 0x9b, - 0x18, 0xc1, 0x7c, 0x7d, 0x10, 0x63, 0x84, 0x33, 0x4f, 0xf2, 0x53, 0x30, - 0x81, 0xe3, 0x85, 0x67, - 0x21, 0x11, 0x4b, 0x91, 0x3e, 0x29, 0xdd, 0xef, 0xa4, 0xfe, 0x6b, 0x42, - 0xe9, 0x1a, 0x07, 0xc7, - 0x72, 0x63, 0x6e, 0x1b, 0x5c, 0x94, 0xb2, 0x7b, 0x15, 0x18, 0x70, 0xe4, - 0xd0, 0x31, 0xc7, 0x83, - 0xa8, 0xbb, 0xc0, 0x72, 0x71, 0xf0, 0x83, 0x86, 0x46, 0x3d, 0x63, 0x93, - 0xbc, 0xfe, 0x31, 0x7d, - 0xd1, 0x97, 0xd5, 0x05, 0x9e, 0x71, 0xbc, 0xd2, 0x07, 0x45, 0x10, 0x61, - 0xaa, 0x0b, 0x6c, 0xb7, - 0x29, 0xef, 0xde, 0xba, 0x8f, 0x08, 0xa1, 0xfe, 0x20, 0x11, 0x5a, 0x52, - 0x96, 0xfa, 0xc5, 0x5b, - 0xc6, 0x66, 0x79, 0xe0, 0x84, 0xf6, 0x8b, 0x27, 0x5e, 0x41, 0xb9, 0x4f, - 0x33, 0x5c, 0x12, 0xd7, - 0xa4, 0x3a, 0xfe, 0xad, 0x79, 0x20, 0xc1, 0x7e, 0x80, 0x44, 0xab, 0x8b, - 0x1d, 0x6e, 0x92, 0xaf, - 0x3f, 0x71, 0x28, 0x62, 0x2a, 0x22, 0x78, 0xa0, 0x88, 0xd1, 0x5c, 0x7e, - 0xd9, 0xb1, 0x32, 0xc9, - 0xe0, 0xb9, 0x77, 0xc2, 0x01, 0x1a, 0x99, 0x1f, 0x68, 0xa6, 0x19, 0x03, - 0xbd, 0x12, 0x2c, 0x8b, - 0x27, 0xb0, 0x54, 0x1f, 0x3a, 0x41, 0xfc, 0x93, 0xc7, 0x23, 0x0f, 0x4e, - 0x58, 0x52, 0xb7, 0xae, - 0x8d, 0xd5, 0x20, 0x17, 0xf6, 0x28, 0x60, 0x80, 0xa0, 0x55, 0xf1, 0xd9, - 0x8b, 0x94, 0x57, 0xf4, - 0x0c, 0x81, 0x3e, 0xdf, 0x08, 0xd0, 0x42, 0xf8, 0xc6, 0x79, 0xc8, 0x18, - 0xa1, 0x90, 0xa3, 0xd2, - 0x82, 0xe5, 0xf0, 0x8f, 0xfc, 0xcc, 0xd3, 0x46, 0xb6, 0xa3, 0x0b, 0xc7, - 0x93, 0x20, 0xac, 0xf3, - 0xea, 0x99, 0x56, 0x93, 0x0d, 0xa2, 0xfa, 0x9b, 0xcd, 0x02, 0xb5, 0x17, - 0xad, 0xca, 0x3f, 0x30, - 0xae, 0x1a, 0xdf, 0xfc, 0x75, 0x98, 0xa2, 0xfa, 0x25, 0xe0, 0x07, 0x9f, - 0x0d, 0xb6, 0x81, 0x14, - 0xb4, 0x05, 0x17, 0xfb, 0xd8, 0x62, 0x39, 0x5c, 0x4b, 0x59, 0xc9, 0xab, - 0xe3, 0x6d, 0xd5, 0x54, - 0x9a, 0x24, 0x8c, 0xf2, 0xec, 0xaf, 0x57, 0x75, 0xf9, 0x51, 0x58, 0xf7, - 0x12, 0xc3, 0x29, 0x94, - 0x63, 0x33, 0xdd, 0x70, 0x42, 0x7b, 0xa4, 0xf2, 0x2f, 0xc1, 0xbd, 0xc6, - 0xf8, 0x2e, 0x09, 0x8a, - 0x49, 0x6d, 0xed, 0x8d, 0xcf, 0x47, 0xf4, 0x32, 0xdf, 0x5f, 0xd5, 0x92, - 0xd7, 0xf0, 0x94, 0x04, - 0xe5, 0xa9, 0x86, 0x0b, 0x07, 0x46, 0x49, 0x5d, 0xdb, 0xf4, 0x4f, 0x09, - 0xb5, 0x7e, 0xc4, 0x37, - 0x42, 0x22, 0x96, 0xe1, 0x7c, 0x52, 0x79, 0x1d, 0x8b, 0x3f, 0xd6, 0x84, - 0x11, 0x34, 0x0e, 0x4d, - 0xe4, 0xc6, 0xdc, 0x36, 0xb8, 0xeb, 0xa7, 0xf6, 0x2a, 0x30, 0xe0, 0x0b, - 0x63, 0x62, 0x4d, 0xc5, - 0x15, 0x2f, 0x18, 0x9f, 0xa7, 0x1e, 0x28, 0x60, 0x78, 0x4f, 0x34, 0x2a, - 0xf6, 0x6f, 0xaf, 0x47, - 0xb7, 0xb4, 0xf9, 0xbc, 0xda, 0x56, 0xc8, 0x62, 0x9b, 0xd6, 0xfb, 0xad, - 0x5a, 0x49, 0x8d, 0x81, - 0xc8, 0x39, 0xf3, 0x45, 0x31, 0xbf, 0xd6, 0x4a, 0xb9, 0x73, 0xec, 0x53, - 0xfd, 0xf4, 0x60, 0x22, - 0x06, 0xa1, 0x1f, 0x8e, 0x04, 0x68, 0x21, 0x7c, 0x63, 0xdd, 0x64, 0x0c, - 0xb1, 0x48, 0xb0, 0x69, - 0x70, 0xbd, 0xda, 0x61, 0xe1, 0x0d, 0xad, 0xee, 0x34, 0x53, 0xed, 0xe0, - 0xbf, 0x09, 0x16, 0xa4, - 0x9d, 0xea, 0xc9, 0x41, 0x57, 0x6a, 0x98, 0xa2, 0x6b, 0x48, 0x93, 0xf9, - 0x75, 0x97, 0x10, 0x0f, - 0x41, 0x93, 0x78, 0xa6, 0x7e, 0x66, 0x88, 0x23, 0x5b, 0xb0, 0xe4, 0x82, - 0xa8, 0x10, 0x56, 0x98, - 0x75, 0xad, 0x2b, 0xa8, 0xe7, 0x51, 0x7d, 0xac, 0x87, 0x01, 0xbb, 0xea, - 0xb7, 0x65, 0xfe, 0x18, - 0x19, 0xae, 0x26, 0x40, 0xaf, 0xce, 0x6a, 0x98, 0xbe, 0x36, 0xfc, 0x32, - 0x57, 0xff, 0x0c, 0x95, - 0xc9, 0x56, 0xa9, 0x78, 0x8e, 0x12, 0x38, 0xe1, 0x48, 0xb7, 0x43, 0x51, - 0x2b, 0xe8, 0xe9, 0xd0, - 0xaa, 0x65, 0x74, 0x08, 0xcc, 0x69, 0x9c, 0x13, 0x67, 0x76, 0xfe, 0x97, - 0xd3, 0xc6, 0xe0, 0x5a, - 0xfc, 0x07, 0xa0, 0x4b, 0xa8, 0x88, 0x23, 0xc5, 0x65, 0xc2, 0xb3, 0x3b, - 0xe2, 0x81, 0xc8, 0xa2, - 0x4d, 0x12, 0x46, 0x79, 0x76, 0xb6, 0xca, 0xdb, 0x9d, 0xc9, 0x2c, 0x9a, - 0x09, 0x80, 0xf5, 0x4a, - 0xbf, 0x4a, 0x6c, 0x97, 0x6b, 0x77, 0xb4, 0x73, 0x1f, 0x39, 0xca, 0xbd, - 0x25, 0xa9, 0x4f, 0x1d, - 0x2a, 0x5e, 0x30, 0xfd, 0x8d, 0x3c, 0x50, 0xc0, 0xf0, 0x9e, 0x68, 0x54, - 0x2f, 0xde, 0x9d, 0x8e, - 0x73, 0x0c, 0x34, 0x26, 0xe3, 0x39, 0x5c, 0xd0, 0xe4, 0xdc, 0xdf, 0xe6, - 0x06, 0x2d, 0x4e, 0x71, - 0x84, 0x44, 0xef, 0x01, 0xf8, 0xa4, 0xf2, 0x3a, 0xd5, 0x7e, 0x6f, 0xcb, - 0x22, 0x68, 0x1c, 0x9a, - 0xd5, 0xe8, 0x7e, 0xf1, 0x27, 0x80, 0x82, 0x3b, 0x45, 0xd3, 0xe9, 0x69, - 0x74, 0x7b, 0x0d, 0xf9, - 0xc3, 0x76, 0x88, 0x29, 0x82, 0xaa, 0x5b, 0x65, 0xed, 0x13, 0xef, 0x45, - 0x3b, 0x30, 0xfa, 0x6b, - 0xaf, 0x75, 0x85, 0xc1, 0xca, 0x35, 0x4c, 0x51, 0xd4, 0x24, 0xa8, 0x9d, - 0xdb, 0xaa, 0x08, 0xe6, - 0x2b, 0x31, 0x6a, 0xc0, 0x32, 0x91, 0xbe, 0x6b, 0x01, 0x5a, 0xc7, 0x56, - 0xf9, 0xc2, 0x14, 0x7c, - 0x86, 0x9a, 0x5b, 0x7b, 0x45, 0x3d, 0xed, 0xaf, 0xf4, 0x35, 0xf2, 0xcf, - 0x4d, 0x50, 0xcd, 0xbd, - 0xa7, 0x8b, 0x10, 0xea, 0x7b, 0x14, 0x30, 0x40, 0x50, 0xcb, 0x99, 0x8d, - 0xa4, 0x4a, 0xca, 0x7a, - 0xb1, 0x15, 0xe6, 0x32, 0xde, 0x3e, 0xe9, 0x1e, 0xf8, 0x0b, 0x9f, 0xa1, - 0xeb, 0x01, 0x3d, 0xe8, - 0xb2, 0xa4, 0x08, 0x75, 0xdc, 0x0a, 0x18, 0x20, 0x28, 0x84, 0xad, 0xa7, - 0x52, 0x25, 0x65, 0x3d, - 0x5b, 0x8c, 0xb0, 0xa1, 0xd3, 0x9c, 0x13, 0x85, 0x35, 0x09, 0x2a, 0xb6, - 0x46, 0xcb, 0x02, 0xd8, - 0x46, 0x5d, 0x3d, 0x15, 0xc5, 0xa3, 0x47, 0xf4, 0xc9, 0xa9, 0x2f, 0x8c, - 0xcf, 0x44, 0x6f, 0x03, - 0xd3, 0x49, 0x61, 0x7f, 0x23, 0xe8, 0xa3, 0x47, 0x26, 0x0e, 0x8d, 0x65, - 0xc5, 0x33, 0xbd, 0x90, - 0x9f, 0x34, 0x7d, 0x3b, 0xea, 0xf3, 0x87, 0x37, 0x4a, 0x03, 0x0e, 0xfd, - 0x1a, 0xaf, 0xc1, 0x28, - 0xfd, 0x68, 0xfa, 0x76, 0x17, 0x25, 0xcd, 0x6e, 0x94, 0x06, 0x1c, 0x39, - 0x34, 0x9d, 0x41, 0x50, - 0xd4, 0x87, 0x24, 0xcc, 0x98, 0x2d, 0x6c, 0x90, 0xb4, 0x17, 0x46, 0x6b, - 0xa2, 0x67, 0x84, 0x0b, - 0x0f, 0x30, 0xd0, 0x98, 0x0a, 0xe4, 0xb3, 0xc6, 0x16, 0xf6, 0xfa, 0x1e, - 0x18, 0xb4, 0xfb, 0x07, - 0x9c, 0x85, 0x93, 0x7c, 0xe8, 0xc7, 0x76, 0x09, 0x9a, 0x8c, 0x3c, 0xfb, - 0xa3, 0x8b, 0x99, 0xfd, - 0x2f, 0x4e, 0xc1, 0x34, 0x8b, 0x60, 0x80, 0x82, 0x43, 0xcc, 0x3e, 0x5e, - 0x27, 0xb2, 0x75, 0x32, - 0x9b, 0x4b, 0xd6, 0xcf, 0x53, 0x02, 0xb9, 0xde, 0x08, 0x95, 0xf7, 0xf5, - 0xc4, 0xdf, 0xa0, 0x66, - 0x43, 0x4d, 0xcc, 0xdc, 0xc3, 0xff, 0x97, 0xb6, 0x7a, 0xfb, 0x79, 0x86, - 0xc7, 0x28, 0x87, 0xbf, - 0xef, 0x89, 0xa7, 0x5a, 0x0b, 0xfe, 0x2a, 0xd9, 0x7e, 0x50, 0xe3, 0x1d, - 0xa5, 0xa6, 0xd7, 0x8c, - 0xd9, 0x69, 0x40, 0x2e, 0x2f, 0x50, 0xc0, 0xc3, 0x83, 0xaa, 0x21, 0x71, - 0xd5, 0xeb, 0xae, 0x2b, - 0x79, 0x2c, 0x15, 0x77, 0xef, 0x81, 0x3f, 0x54, 0x41, 0x78, 0x73, 0xf2, - 0x16, 0xf5, 0x5d, 0xca, - 0xb6, 0xdb, 0xa3, 0x81, 0x65, 0xfb, 0x26, 0xc9, 0x6a, 0x12, 0x54, 0xaf, - 0x8c, 0x55, 0x04, 0x73, - 0x53, 0x72, 0x25, 0x8a, 0x62, 0xbd, 0x6f, 0x94, 0xb1, 0xe6, 0x1b, 0xa6, - 0x39, 0x2b, 0xc0, 0x44, - 0x7f, 0x8d, 0x0a, 0xf9, 0xeb, 0xe9, 0x1e, 0x28, 0x22, 0xa5, 0x17, 0xfe, - 0xa7, 0xbd, 0xed, 0xa3, - 0xc1, 0xa8, 0x3c, 0x53, 0x3f, 0x33, 0x44, 0xf0, 0xcc, 0x58, 0x72, 0x41, - 0x54, 0x08, 0x2b, 0x4c, - 0xf0, 0x86, 0x9e, 0x94, 0xa0, 0x58, 0x61, 0x3d, 0xa3, 0xbb, 0x7b, 0x23, - 0x43, 0x11, 0x6b, 0x70, - 0x23, 0xcf, 0xff, 0xeb, 0x83, 0xb0, 0xc2, 0x7a, 0x85, 0xb5, 0xf6, 0x46, - 0x86, 0x22, 0xd6, 0xe0, - 0xe7, 0x77, 0x32, 0x71, 0xba, 0xdf, 0x56, 0xc8, 0xfa, 0xbf, 0xd2, 0x0d, - 0xda, 0x46, 0x15, 0x10, - 0x25, 0x6e, 0xe0, 0x65, 0x87, 0xd8, 0xe3, 0x06, 0xe6, 0x68, 0x92, 0x4a, - 0x37, 0x6a, 0x66, 0x89, - 0x5e, 0x9c, 0x41, 0x68, 0xd5, 0xc0, 0xc3, 0xc7, 0x86, 0x5b, 0x7c, 0xbc, - 0x4e, 0xa7, 0xea, 0x64, - 0xb5, 0x6a, 0x4d, 0xc6, 0x67, 0xcf, 0xd7, 0xf7, 0xba, 0x9d, 0x66, 0xa9, - 0x35, 0x71, 0x5c, 0xa6, - 0x1e, 0x60, 0x63, 0xf3, 0x14, 0x0b, 0xa5, 0x4f, 0x2c, 0x2f, 0x37, 0x3c, - 0x30, 0xab, 0x35, 0x0e, - 0xa2, 0x9b, 0xe1, 0x23, 0x7d, 0x48, 0xe0, 0x02, 0xe3, 0x99, 0xcf, 0x87, - 0xac, 0x26, 0x22, 0xc6, - 0xdf, 0xc8, 0x5f, 0xa0, 0x2b, 0x38, 0xe1, 0xbf, 0xe0, 0x77, 0x45, 0x7d, - 0x64, 0xa3, 0x1e, 0x42, - 0xa6, 0xe4, 0x4a, 0xd7, 0xc4, 0xb9, 0xde, 0xeb, 0xa1, 0x0f, 0x36, 0x8f, - 0x72, 0x56, 0x43, 0x88, - 0xfe, 0xd9, 0x14, 0x31, 0x15, 0x11, 0x3c, 0x50, 0x44, 0x89, 0x2e, 0x3f, - 0x8d, 0xb9, 0x19, 0x85, - 0xac, 0xc4, 0x6b, 0x86, 0xc8, 0x01, 0xbd, 0x6f, 0x04, 0xab, 0x9a, 0x9b, - 0x62, 0x8e, 0x50, 0x33, - 0x22, 0xa0, 0xa5, 0xd6, 0x3c, 0x1d, 0x2c, 0xd1, 0x74, 0x71, 0x59, 0x44, - 0x50, 0x3e, 0x5f, 0x12, - 0xf9, 0x17, 0x51, 0x82, 0xae, 0xd4, 0xf3, 0x87, 0xd6, 0x90, 0xe5, 0x31, - 0xea, 0xed, 0x20, 0x1e, - 0xe2, 0x67, 0xc3, 0xb8, 0xbc, 0x83, 0x86, 0x8a, 0x49, 0xed, 0x84, 0x07, - 0xd2, 0x2a, 0xfd, 0xac, - 0x4a, 0xdc, 0x03, 0xca, 0xcd, 0x73, 0x05, 0x0c, 0x0f, 0xd0, 0xe7, 0x94, - 0x6e, 0xd4, 0xcc, 0xd1, - 0xbc, 0xfb, 0x82, 0xd0, 0x69, 0x43, 0x45, 0x4d, 0xcf, 0xb6, 0xf8, 0xbb, - 0x9c, 0x8d, 0x17, 0xc8, - 0x35, 0x51, 0x09, 0x33, 0x26, 0x9a, 0x1b, 0x24, 0x2d, 0x75, 0xf0, 0x6a, - 0xc9, 0x69, 0x21, 0x72, - 0xca, 0xe7, 0x47, 0x3f, 0x8c, 0x26, 0xc9, 0xdf, 0x98, 0x38, 0x71, 0x57, - 0x92, 0xcc, 0xb1, 0x05, - 0xee, 0xe6, 0xfd, 0x67, 0xb4, 0x53, 0xc4, 0x72, 0x8f, 0x94, 0x4c, 0x1f, - 0x73, 0xba, 0x5e, 0x7e, - 0x78, 0x43, 0x4f, 0x4a, 0x50, 0x2c, 0xd1, 0xff, 0xb0, 0xbc, 0xdc, 0xf0, - 0xc0, 0xe9, 0xd4, 0x38, - 0x05, 0x10, 0xf1, 0xc9, 0x06, 0x5c, 0xd0, 0x42, 0xb3, 0x52, 0x56, 0x0a, - 0x08, 0x6c, 0xe8, 0xbc, - 0x6b, 0xcd, 0x48, 0x5b, 0xf3, 0x5a, 0xd8, 0xe3, 0xab, 0x2e, 0x8c, 0xd6, - 0x87, 0xce, 0xcb, 0x16, - 0x51, 0xac, 0x91, 0xf0, 0xdf, 0x24, 0x70, 0x01, 0x90, 0xad, 0x86, 0xa2, - 0x56, 0x13, 0x11, 0x63, - 0xe1, 0xd6, 0x2d, 0xff, 0xbe, 0xb7, 0x77, 0xb4, 0x99, 0x62, 0xb6, 0x01, - 0x6b, 0x0e, 0xa5, 0x79, - 0x59, 0x52, 0x04, 0xdb, 0x6e, 0x05, 0x0c, 0x10, 0x14, 0x42, 0xb7, 0xb2, - 0x29, 0xf3, 0xd3, 0xff, - 0xa3, 0xf4, 0xbb, 0x1e, 0xc2, 0xe5, 0x0e, 0xa9, 0x12, 0x5d, 0x60, 0x85, - 0x7a, 0x3a, 0xab, 0x34, - 0xf2, 0x58, 0x2a, 0xee, 0x1d, 0xc1, 0x7e, 0xa8, 0x82, 0xf0, 0xe6, 0x27, - 0x2c, 0x29, 0xba, 0x57, - 0x71, 0xd2, 0x80, 0x5c, 0x5e, 0xa0, 0x43, 0x45, 0xc5, 0x97, 0x42, 0xe2, - 0x69, 0x15, 0x9f, 0x56, - 0x56, 0x62, 0xd4, 0x43, 0x64, 0xe1, 0xbf, 0xd6, 0x02, 0xb4, 0x4d, 0xac, - 0x31, 0x47, 0x28, 0xf8, - 0x11, 0x50, 0xb3, 0x6b, 0x1e, 0xef, 0x16, 0x89, 0x3a, 0xd9, 0xcd, 0x22, - 0x28, 0x1f, 0xce, 0x09, - 0x6a, 0xa2, 0x12, 0x66, 0x4c, 0xf7, 0x36, 0x48, 0x5a, 0xea, 0x23, 0xd4, - 0x51, 0xd2, 0x42, 0xe4, - 0x89, 0xaa, 0x8b, 0xe3, 0x4f, 0xd9, 0x5e, 0x69, 0xe2, 0xc3, 0x08, 0xd1, - 0x55, 0xe4, 0x36, 0xba, - 0x94, 0x7b, 0x06, 0x57, 0x59, 0xe6, 0x0a, 0x18, 0x1e, 0x63, 0x0d, 0xeb, - 0xdc, 0x6b, 0x5b, 0x61, - 0x65, 0x92, 0xc2, 0xfe, 0x46, 0x13, 0x85, 0x8e, 0x4c, 0x1c, 0xd9, 0xca, - 0x49, 0x66, 0xb9, 0xe3, - 0x8c, 0xba, 0x7a, 0x2a, 0x49, 0x85, 0x8e, 0x2b, 0x51, 0x91, 0x5e, 0xdb, - 0x5d, 0x88, 0xde, 0x06, - 0xbb, 0x35, 0xc7, 0x63, 0xd2, 0x86, 0x8a, 0x9a, 0x5d, 0xaf, 0x33, 0xb5, - 0xfb, 0xd9, 0x2e, 0x53, - 0x77, 0x73, 0x9f, 0xd2, 0x5a, 0xc8, 0x62, 0x39, 0xa6, 0x4a, 0x26, 0xee, - 0xd8, 0x5d, 0x2f, 0x3f, - 0x3c, 0xc0, 0xc6, 0x25, 0x28, 0x16, 0x89, 0x9e, 0x58, 0x5e, 0x6e, 0x78, - 0x60, 0x95, 0x6a, 0x1c, - 0x7b, 0xf2, 0xa1, 0x0d, 0x52, 0x18, 0x20, 0xc1, 0x60, 0x33, 0xee, 0xf6, - 0x79, 0xcd, 0x8c, 0xed, - 0x28, 0x80, 0x84, 0x87, 0x30, 0xa5, 0x4f, 0x55, 0xd1, 0xd5, 0xf5, 0x50, - 0x40, 0xe6, 0x4c, 0xa9, - 0xab, 0x0a, 0x2e, 0x35, 0x73, 0xc4, 0x72, 0xb8, 0x96, 0xb2, 0x51, 0x95, - 0x05, 0xda, 0x69, 0xa8, - 0xd2, 0x26, 0x3b, 0x42, 0x9c, 0x45, 0x4d, 0xec, 0xd7, 0xca, 0x22, 0x67, - 0x13, 0x2f, 0x34, 0x62, - 0x31, 0x2e, 0xa2, 0xc7, 0x9f, 0x6b, 0x25, 0xcd, 0x6f, 0xe3, 0x09, 0x62, - 0x17, 0x19, 0x40, 0x3c, - 0xde, 0xa7, 0x05, 0x9d, 0x94, 0x95, 0x0f, 0x14, 0x11, 0xb3, 0xea, 0x7f, - 0xb2, 0xbf, 0x97, 0xb0, - 0xc4, 0xb8, 0xcd, 0x9a, 0x39, 0x6f, 0x94, 0xb2, 0x7f, 0x0a, 0x24, 0x4b, - 0x5c, 0x64, 0xc3, 0xf0, - 0x5f, 0xf3, 0x1b, 0x55, 0x6a, 0x6d, 0x2d, 0x6c, 0x77, 0x9f, 0xd3, 0xbe, - 0x98, 0xbb, 0x63, 0x96, - 0xcc, 0x46, 0x58, 0xb1, 0x88, 0x4e, 0xe8, 0xa3, 0xfb, 0xe5, 0x15, 0x5b, - 0x23, 0x84, 0x01, 0x6c, - 0xcf, 0xf7, 0xb6, 0xf6, 0x8a, 0x7a, 0x19, 0x9d, 0x2b, 0x6a, 0x27, 0x5d, - 0x9a, 0xa0, 0x59, 0xb9, - 0x76, 0x1c, 0xc5, 0xef, 0xe5, 0x65, 0x8c, 0x92, 0x57, 0x8e, 0x89, 0xec, - 0x0e, 0x41, 0xa6, 0xcd, - 0x2c, 0xff, 0x2f, 0x73, 0x89, 0x54, 0x71, 0xbc, 0x93, 0x43, 0x0c, 0x58, - 0x9e, 0x96, 0x2d, 0xe7, - 0xb8, 0x84, 0x29, 0x24, 0xd0, 0xb2, 0x7b, 0xa4, 0x8d, 0x20, 0x01, 0xb3, - 0x42, 0xfd, 0x76, 0x86, - 0xd8, 0x06, 0x1a, 0x13, 0x90, 0xfd, 0x2e, 0x68, 0x72, 0x6e, 0x8e, 0x73, - 0x03, 0xf7, 0x27, 0xd9, - 0x2e, 0x21, 0x9b, 0x09, 0x34, 0xcd, 0x6e, 0x29, 0xb2, 0x08, 0x91, 0x5c, - 0xf1, 0xae, 0xfc, 0xc0, - 0x36, 0xe0, 0xe7, 0x74, 0x24, 0xae, 0xea, 0x1a, 0xfd, 0xfa, 0xc2, 0x6c, - 0x70, 0x4d, 0x79, 0xa7, - 0xdb, 0xb7, 0xf4, 0x54, 0x92, 0xc9, 0xdf, 0x56, 0xa2, 0xe1, 0xbc, 0x75, - 0xba, 0xd3, 0x7f, 0x0c, - 0x69, 0x13, 0xfc, 0x21, 0x4e, 0xc3, 0xc7, 0x76, 0x8a, 0x65, 0x11, 0xd2, - 0xe8, 0xf6, 0x1a, 0x31, - 0xb3, 0xcb, 0x52, 0x48, 0x63, 0xa7, 0xf6, 0x8b, 0xd9, 0x40, 0x02, 0xa5, - 0x84, 0x39, 0xec, 0xcf, - 0x14, 0x40, 0x42, 0xa2, 0x18, 0xb3, 0xc6, 0xcb, 0x89, 0x8b, 0x9b, 0x28, - 0x20, 0x73, 0x26, 0xb5, - 0x95, 0x14, 0x5c, 0x6a, 0xe6, 0x4b, 0xe4, 0xb3, 0xef, 0xa7, 0xa2, 0xe9, - 0x0a, 0x77, 0xd2, 0x93, - 0xbe, 0x25, 0x36, 0xaa, 0xd4, 0xda, 0x5a, 0xd8, 0xee, 0xfd, 0x65, 0xbf, - 0xf3, 0xb5, 0xc6, 0xef, - 0x62, 0x5c, 0x87, 0x4d, 0xfd, 0xd6, 0x4a, 0x59, 0xde, 0x05, 0x12, 0xc4, - 0x2e, 0x32, 0x80, 0x78, - 0xa1, 0x2a, 0x0f, 0x64, 0x7f, 0x7c, 0x11, 0x3c, 0x33, 0x16, 0xfd, 0x81, - 0x15, 0x02, 0x7a, 0x13, - 0x3b, 0x0e, 0x83, 0x96, 0x93, 0xd3, 0x46, 0x49, 0xca, 0x47, 0xa5, 0x76, - 0x07, 0xc1, 0x53, 0x87, - 0x16, 0x9e, 0xf6, 0xd8, 0xa5, 0x2a, 0xd9, 0x5e, 0xa8, 0xc0, 0x06, 0x2c, - 0x4f, 0x4b, 0xf7, 0x92, - 0x66, 0x23, 0x2c, 0xb9, 0x44, 0x27, 0x74, 0xb0, 0x9c, 0x93, 0xeb, 0xcc, - 0xf0, 0x42, 0xe1, 0x36, - 0xe9, 0x28, 0xb8, 0xd4, 0x0f, 0x96, 0x0b, 0xa5, 0x1d, 0x8d, 0x87, 0x11, - 0x14, 0xee, 0x67, 0xe5, - 0x5c, 0x42, 0xf5, 0x12, 0x68, 0x59, 0xdc, 0x52, 0xa7, 0x10, 0xe1, 0xb8, - 0x21, 0x9f, 0x3b, 0x43, - 0x6c, 0x03, 0x0d, 0xe8, 0x48, 0x9f, 0x17, 0x34, 0x39, 0x37, 0x47, 0xd8, - 0xe0, 0x9a, 0xf2, 0x8d, - 0x6d, 0x6c, 0x57, 0xd5, 0xf7, 0x32, 0xf9, 0x9f, 0xc8, 0xf3, 0xe8, 0xda, - 0x36, 0x86, 0x7b, 0x7f, - 0xad, 0xab, 0x31, 0xbb, 0x77, 0xac, 0x53, 0xc4, 0xf5, 0x6f, 0x35, 0x99, - 0xb4, 0x92, 0xd9, 0xc1, - 0x37, 0x8f, 0xbd, 0x49, 0x9b, 0x03, 0x04, 0xb1, 0x0c, 0x3e, 0x6d, 0x6e, - 0xa6, 0x51, 0xf0, 0x55, - 0x61, 0xed, 0x69, 0x0a, 0xff, 0xe2, 0xbb, 0x67, 0x0e, 0x8a, 0x20, 0xc2, - 0x97, 0x16, 0xd8, 0xad, - 0x4b, 0xb3, 0x59, 0xf7, 0x72, 0xde, 0xeb, 0xa7, 0xfe, 0x14, 0x48, 0x96, - 0xb8, 0xc8, 0x45, 0x23, - 0xb9, 0xeb, 0x73, 0x19, 0x6f, 0x1f, 0x95, 0x0f, 0x7c, 0xe4, 0xae, 0xb1, - 0x94, 0xe1, 0xff, 0x74, - 0xe3, 0x08, 0x99, 0x85, 0x03, 0x2e, 0x68, 0x21, 0xb8, 0x29, 0x2b, 0x05, - 0x04, 0x36, 0x74, 0x5e, - 0xba, 0x5a, 0x9d, 0x5e, 0x6d, 0x2b, 0x64, 0x31, 0xac, 0x6b, 0x9c, 0xb7, - 0x2d, 0xc5, 0xa7, 0xa1, - 0xf1, 0xe9, 0xc4, 0xa9, 0x1f, 0xf5, 0x8f, 0x96, 0x52, 0x7f, 0xd4, 0x21, - 0x95, 0x0d, 0xe2, 0x82, - 0xa0, 0x45, 0x55, 0x59, 0xc0, 0xd1, 0xff, 0x97, 0xc2, 0xd2, 0x52, 0x83, - 0xc3, 0x1e, 0xf3, 0xe1, - 0x85, 0x2b, 0xb5, 0x3c, 0x47, 0x09, 0x1c, 0x91, 0x24, 0xba, 0xc0, 0xc9, - 0xf4, 0x74, 0x95, 0x68, - 0x83, 0x8a, 0xaa, 0xb2, 0x43, 0x61, 0x3d, 0xed, 0x47, 0x67, 0xa4, 0xc5, - 0x45, 0x3c, 0x25, 0x01, - 0xda, 0xd8, 0xae, 0x69, 0x2d, 0x64, 0x31, 0xfd, 0x53, 0x25, 0x13, 0x77, - 0x6c, 0xcf, 0xf6, 0xfe, - 0x47, 0x32, 0x67, 0x28, 0x7a, 0x0e, 0xa9, 0x5f, 0x38, 0x6d, 0x80, 0x8e, - 0x19, 0x58, 0xe6, 0xf1, - 0xc5, 0xd7, 0x97, 0xa7, 0x86, 0xc2, 0x7a, 0x19, 0x8e, 0xce, 0x8b, 0x49, - 0x8a, 0x78, 0x4a, 0x02, - 0xb0, 0x7a, 0xbc, 0x0f, 0x61, 0x93, 0x07, 0xb5, 0x09, 0xcf, 0x30, 0xa3, - 0x3d, 0x1d, 0xb4, 0x1a, - 0x33, 0xf0, 0x16, 0xbd, 0x22, 0xf2, 0x3a, 0x58, 0x4e, 0xa8, 0x94, 0x66, - 0x78, 0x21, 0x91, 0x1b, - 0xfa, 0xa6, 0xbf, 0xc5, 0xac, 0xe0, 0x02, 0xb9, 0x06, 0x1f, 0xd7, 0x37, - 0x53, 0xc9, 0x78, 0xcb, - 0x96, 0xa5, 0xb2, 0x2d, 0xe4, 0x7f, 0x15, 0x8d, 0x3f, 0x28, 0x90, 0xef, - 0xb3, 0x53, 0x8a, 0x46, - 0x6f, 0xb2, 0xe3, 0xaf, 0x4a, 0xab, 0xe6, 0x0a, 0xe9, 0xb8, 0x75, 0xde, - 0x59, 0xbe, 0xaa, 0x58, - 0x6e, 0xdd, 0xb9, 0x92, 0xf5, 0x06, 0x08, 0xa1, 0x18, 0x7c, 0xda, 0xdc, - 0x8f, 0xa2, 0x23, 0xaa, - 0xc2, 0x19, 0xd2, 0x14, 0x3d, 0x07, 0xb5, 0xce, 0x1c, 0xd7, 0x40, 0x47, - 0xed, 0x2c, 0x73, 0x99, - 0xf6, 0x27, 0x81, 0x1a, 0xa4, 0x30, 0x40, 0x41, 0xc0, 0x66, 0x1f, 0x2f, - 0xf2, 0x59, 0xdb, 0x19, - 0x50, 0xc3, 0xcb, 0xcd, 0x60, 0x89, 0x9e, 0xaa, 0x61, 0x69, 0x29, 0xa0, - 0x80, 0x0f, 0x98, 0x91, - 0xff, 0xb6, 0x4e, 0x0c, 0xaa, 0xbc, 0xd2, 0xfb, 0xb5, 0x4d, 0x81, 0x3d, - 0x5b, 0xa5, 0x90, 0x77, - 0x5d, 0x2d, 0xaf, 0x2f, 0xd7, 0xf4, 0x32, 0xf9, 0x56, 0xd4, 0x4e, 0xba, - 0xf7, 0x83, 0xb2, 0xb1, - 0xa9, 0xd4, 0x9a, 0x4f, 0xce, 0x5d, 0x6d, 0x2d, 0xb7, 0xf9, 0xcc, 0x91, - 0x6a, 0xe2, 0xb8, 0x8f, - 0x8e, 0x64, 0xce, 0x50, 0xf4, 0x1c, 0x91, 0xbe, 0x70, 0xda, 0xc3, 0xdf, - 0x32, 0xb0, 0x0f, 0x21, - 0x17, 0xf1, 0xac, 0xe5, 0x1a, 0x87, 0x37, 0xf5, 0x59, 0x04, 0xa9, 0x2e, - 0x99, 0x57, 0x7e, 0x60, - 0x1b, 0x70, 0x92, 0x3a, 0x12, 0x57, 0x75, 0x0d, 0x9f, 0x7d, 0x61, 0x36, - 0x38, 0xc7, 0xdd, 0xb2, - 0x97, 0xca, 0xe8, 0x10, 0x5b, 0xd2, 0xfb, 0x26, 0xce, 0xec, 0x3f, 0xed, - 0x65, 0x4f, 0x03, 0xb4, - 0x7d, 0x53, 0xbe, 0x83, 0x56, 0x70, 0x01, 0xbd, 0x03, 0xee, 0x8a, 0xfa, - 0xc8, 0x85, 0x3c, 0x84, - 0xec, 0x38, 0x49, 0x1d, 0x09, 0xca, 0xdb, 0xe7, 0xae, 0xdf, 0xd1, 0x1b, - 0x1c, 0x82, 0x8f, 0x59, - 0x58, 0x3d, 0x5e, 0xe6, 0xd1, 0xa8, 0xe2, 0xbb, 0xe5, 0x86, 0x18, 0xb0, - 0xff, 0xef, 0x5a, 0x0d, - 0xf7, 0x48, 0xdb, 0x27, 0x1b, 0x9d, 0xae, 0xea, 0x31, 0xa2, 0xb0, 0x2d, - 0x24, 0x45, 0x52, 0xeb, - 0x1f, 0x0f, 0x39, 0xce, 0xab, 0xa6, 0x4b, 0xe4, 0xdd, 0xeb, 0x98, 0x3e, - 0xe6, 0xb7, 0xbc, 0xfc, - 0xfb, 0xc9, 0xe5, 0xf8, 0x13, 0x4d, 0xec, 0x12, 0xf7, 0xdb, 0x78, 0x35, - 0x85, 0xd5, 0xf1, 0x39, - 0x7c, 0x3c, 0xe4, 0xbe, 0xe9, 0xdd, 0xef, 0x16, 0xf2, 0x2a, 0x25, 0xf8, - 0x1e, 0x99, 0xb5, 0x76, - 0x09, 0x91, 0xcf, 0x16, 0x0e, 0x8c, 0x92, 0xba, 0x75, 0x2b, 0x9e, 0x12, - 0xa9, 0xfc, 0x4b, 0x6e, - 0x0d, 0xee, 0x64, 0xe2, 0xb7, 0x7d, 0xac, 0x53, 0x37, 0xbd, 0x67, 0x1a, - 0x77, 0x8c, 0x2a, 0x20, - 0x7a, 0x9d, 0xfb, 0x30, 0xed, 0xb5, 0xce, 0x6a, 0x91, 0xf7, 0x41, 0xf4, - 0xaf, 0xd1, 0x05, 0x1f, - 0x67, 0x4c, 0x76, 0x84, 0xfb, 0x8a, 0x9a, 0x1b, 0x6d, 0x57, 0x44, 0xce, - 0x26, 0x5e, 0x68, 0xc4, - 0x45, 0xec, 0xd3, 0x52, 0xc7, 0x97, 0xb6, 0xca, 0x19, 0x26, 0x1d, 0x8a, - 0x76, 0x60, 0x37, 0xd6, - 0x87, 0xf5, 0x01, 0x46, 0xfa, 0x90, 0x03, 0x04, 0x05, 0xf1, 0x5d, 0xcd, - 0x9b, 0x4c, 0x44, 0x4f, - 0xdc, 0x79, 0xb1, 0xe7, 0x29, 0x0c, 0x10, 0x81, 0x30, 0xf8, 0x77, 0x7b, - 0xdd, 0x87, 0x46, 0x97, - 0xe8, 0x47, 0xe2, 0xe9, 0xb0, 0x3b, 0xe5, 0x0e, 0xec, 0x49, 0x28, 0x13, - 0xc2, 0xf2, 0xee, 0x17, - 0x4f, 0xcc, 0xf2, 0x03, 0xcb, 0x2f, 0xd5, 0x4e, 0xbc, 0x82, 0xb1, 0x9e, - 0x66, 0xb8, 0x24, 0x6d, - 0x1d, 0xd1, 0x8d, 0xb4, 0x16, 0x3f, 0x54, 0x71, 0xfc, 0xa0, 0x05, 0x3a, - 0x89, 0x8f, 0x6d, 0xdb, - 0x4e, 0xa3, 0xa8, 0x3e, 0x74, 0x82, 0x3b, 0xe5, 0x4d, 0x46, 0x1e, 0x9c, - 0xb0, 0xa4, 0xad, 0x9f, - 0x04, 0x7f, 0xab, 0xf4, 0xb9, 0xf1, 0x3e, 0xe9, 0x42, 0x96, 0xf9, 0x08, - 0xde, 0x70, 0x61, 0x4e, - 0xeb, 0xf6, 0x0c, 0xae, 0xb2, 0x0f, 0x14, 0x30, 0x3c, 0xc6, 0x1a, 0x15, - 0x7b, 0xd6, 0xb6, 0xc2, - 0xf8, 0x78, 0x0b, 0xbf, 0x11, 0x79, 0x1d, 0x2c, 0x27, 0x54, 0x4a, 0x33, - 0x3c, 0xf1, 0xa9, 0xec, - 0xf3, 0x37, 0x70, 0xd3, 0xa2, 0x6c, 0x90, 0x03, 0x73, 0x34, 0x49, 0x25, - 0xfa, 0x35, 0x33, 0xa5, - 0x3e, 0x1e, 0x72, 0x5f, 0x95, 0x8f, 0x96, 0x0b, 0x79, 0x15, 0xf3, 0x7c, - 0x0f, 0xad, 0xbb, 0x3b, - 0x3d, 0xaf, 0x9c, 0x18, 0x97, 0xbb, 0x67, 0x35, 0xa9, 0x9a, 0xc1, 0x7a, - 0xb6, 0x89, 0xe3, 0xee, - 0xbd, 0x94, 0xd8, 0xed, 0xd6, 0xee, 0xab, 0xe6, 0x3e, 0x72, 0x57, 0xb9, - 0x4a, 0x91, 0x9e, 0x3a, - 0x8a, 0x1b, 0x65, 0xa4, 0x4d, 0xed, 0xaf, 0x57, 0x32, 0x4c, 0x3a, 0xd7, - 0xec, 0xc0, 0x6e, 0x6f, - 0x88, 0xc5, 0xd1, 0xde, 0xf0, 0x74, 0xb0, 0xc2, 0x13, 0x07, 0xa7, 0xd3, - 0x83, 0xf8, 0xbf, 0x48, - 0xdd, 0x16, 0xeb, 0xda, 0x96, 0xa1, 0xfe, 0x2a, 0xc1, 0x3c, 0xd8, 0x79, - 0x0b, 0x9b, 0xcf, 0x65, - 0xcd, 0x29, 0x02, 0x8c, 0x37, 0xe3, 0x06, 0x08, 0x0a, 0x21, 0xba, 0x59, - 0xf5, 0x98, 0x88, 0x9e, - 0x0b, 0x4f, 0x7b, 0x6c, 0xb3, 0x15, 0x8d, 0x2f, 0x54, 0x60, 0x03, 0x16, - 0xc6, 0xc4, 0x9a, 0x49, - 0x13, 0x8e, 0x07, 0x11, 0xa3, 0x76, 0x09, 0x1c, 0x1b, 0x92, 0x50, 0x26, - 0x47, 0x27, 0x1f, 0x2e, - 0x98, 0xfa, 0x38, 0x88, 0x51, 0x36, 0x48, 0xe0, 0xd8, 0x1a, 0xc5, 0xf3, - 0x7d, 0xfb, 0xf8, 0xb3, - 0x02, 0xde, 0xb4, 0x7a, 0xbd, 0x99, 0x1f, 0x95, 0x21, 0x4b, 0x9d, 0x04, - 0x6f, 0x38, 0xd1, 0x27, - 0x93, 0xb5, 0x43, 0xe4, 0xe2, 0x23, 0xc5, 0xcf, 0x8c, 0x7a, 0xc6, 0xe5, - 0xbb, 0x3f, 0x62, 0xfa, - 0x80, 0x3b, 0x44, 0xf5, 0x41, 0x55, 0xcc, 0xd3, 0x97, 0xe8, 0x96, 0xc3, - 0xfc, 0x18, 0x7d, 0xd4, - 0x90, 0x04, 0xad, 0xa3, 0xe0, 0x17, 0x34, 0xf1, 0x5c, 0xf5, 0xf4, 0xe3, - 0x02, 0x1b, 0x3a, 0x2f, - 0xd0, 0xf8, 0x8f, 0x38, 0x21, 0xdc, 0x52, 0x79, 0xf6, 0x81, 0xbf, 0x63, - 0x7c, 0x17, 0xe5, 0x45, - 0x24, 0x01, 0xba, 0x58, 0x38, 0x75, 0x0d, 0xad, 0x17, 0xac, 0x3d, 0x48, - 0xe1, 0x76, 0xef, 0x7b, - 0x34, 0x3e, 0x53, 0x0e, 0x99, 0x37, 0xf5, 0x8f, 0xdc, 0xb1, 0x5f, 0x68, - 0x1f, 0x75, 0xa8, 0x80, - 0xcb, 0x88, 0x1d, 0x02, 0x33, 0x8b, 0x27, 0x74, 0x69, 0xfc, 0xde, 0x55, - 0x44, 0xd0, 0x38, 0xf7, - 0xed, 0x57, 0x13, 0x20, 0xb6, 0x67, 0x35, 0x4c, 0x5f, 0x1b, 0x7e, 0x19, - 0xca, 0x9e, 0x06, 0xab, - 0xf4, 0xf9, 0x35, 0x60, 0x19, 0xa9, 0x5f, 0xd4, 0xe1, 0x2d, 0x82, 0x2b, - 0x9d, 0x61, 0x0a, 0x3e, - 0xce, 0x98, 0xec, 0xcb, 0x35, 0xd7, 0xf7, 0x36, 0xda, 0xae, 0x88, 0x5f, - 0x4c, 0xbc, 0xd0, 0x4b, - 0x99, 0x95, 0x62, 0xb5, 0xee, 0x9b, 0xa6, 0x4b, 0x29, 0xde, 0x6a, 0xf1, - 0xab, 0xe7, 0x71, 0x41, - 0x10, 0x3f, 0xe9, 0x56, 0xa1, 0x42, 0xf8, 0x22, 0xcb, 0x1d, 0x62, 0x20, - 0xfe, 0x03, 0x47, 0xfb, - 0x44, 0x83, 0x89, 0x6f, 0x78, 0x3a, 0x58, 0x61, 0xe8, 0xe2, 0xb2, 0x88, - 0xa0, 0x7c, 0xbe, 0x24, - 0x40, 0xfc, 0x22, 0x9b, 0xc1, 0xcb, 0x66, 0x88, 0xaa, 0x74, 0x4b, 0x80, - 0x7e, 0x0c, 0xdf, 0x6a, - 0x92, 0xda, 0x19, 0xd9, 0x5d, 0x8e, 0x2b, 0x64, 0x7d, 0xbe, 0x69, 0xe7, - 0x6d, 0x23, 0xeb, 0x08, - 0x3a, 0x61, 0xd9, 0xab, 0x2c, 0x7e, 0xa8, 0xe2, 0x3b, 0x83, 0x0a, 0x74, - 0xd1, 0xdd, 0xda, 0x75, - 0x01, 0x6f, 0x5a, 0x3d, 0xbf, 0xad, 0xee, 0xab, 0xf1, 0xc4, 0xaf, 0x02, - 0xd6, 0x1c, 0x89, 0xf2, - 0x26, 0xdf, 0x0e, 0x22, 0x85, 0xec, 0x12, 0x38, 0x36, 0xe7, 0xa0, 0x4c, - 0x8e, 0x4e, 0x3e, 0x5c, - 0x12, 0xe1, 0x5d, 0x2c, 0x1c, 0xdb, 0xe7, 0xb7, 0xea, 0x56, 0xff, 0x24, - 0x91, 0x3b, 0x96, 0xdc, - 0x1a, 0x1f, 0xc8, 0x07, 0xad, 0xfa, 0x9b, 0xa6, 0x6e, 0xb9, 0xce, 0x34, - 0xee, 0xdb, 0x54, 0x40, - 0x48, 0x02, 0xb7, 0xb0, 0x70, 0xea, 0x1a, 0x99, 0x2e, 0x9b, 0x7a, 0x90, - 0x01, 0xec, 0x1d, 0xf6, - 0x68, 0x7c, 0xa6, 0x1c, 0xf1, 0x6e, 0x29, 0xdd, 0x7b, 0xa1, 0xbe, 0xd0, - 0x3e, 0xea, 0x93, 0xc3, - 0xf5, 0x96, 0x6f, 0x5d, 0xa6, 0x04, 0xb1, 0x7f, 0x10, 0xe9, 0x2d, 0x29, - 0x4b, 0x7d, 0x83, 0xcc, - 0x81, 0x54, 0x1e, 0xc8, 0xfe, 0xf8, 0x22, 0x78, 0x66, 0x2c, 0x39, 0xc1, - 0x2a, 0x04, 0xf4, 0x26, - 0x8b, 0x74, 0x3f, 0x99, 0xf2, 0x40, 0x41, 0xfc, 0xc3, 0x88, 0x95, 0xd5, - 0x3a, 0xdc, 0xe7, 0x9d, - 0xc7, 0x09, 0x23, 0xdd, 0x3b, 0x5b, 0x65, 0x8c, 0xaf, 0x85, 0x16, 0x4d, - 0xe5, 0x40, 0x9b, 0x25, - 0xd6, 0x59, 0x90, 0xb6, 0x25, 0xb4, 0x73, 0x05, 0x95, 0x5c, 0xdb, 0x6f, - 0xcd, 0x5f, 0x55, 0x2c, - 0x20, 0x7e, 0x11, 0xac, 0x81, 0x84, 0x33, 0x44, 0x55, 0x3a, 0xc4, 0x40, - 0x3f, 0x06, 0x8e, 0x35, - 0x0a, 0x20, 0x21, 0x51, 0x0c, 0xb8, 0x63, 0x84, 0xa5, 0xa4, 0xac, 0x14, - 0x10, 0xd8, 0x13, 0xbb, - 0x08, 0xfe, 0x95, 0x2b, 0xb1, 0x21, 0x7c, 0x11, 0x84, 0xef, 0x31, 0x10, - 0x7f, 0xe0, 0xc2, 0x9c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x4c, 0x7d, 0x1c, 0x44, 0xc9, 0x1b, 0x24, 0x70, 0x6c, 0x0d, 0x83, 0x98, - 0xdf, 0x9c, 0x7c, 0xb8, - 0xd7, 0x36, 0xca, 0x8b, 0x9a, 0x19, 0x9d, 0xae, 0x64, 0x98, 0x74, 0x6d, - 0x1b, 0x43, 0xdc, 0xde, - 0x74, 0xc2, 0x71, 0x95, 0x58, 0xfc, 0x93, 0x07, 0x76, 0xc5, 0x14, 0xe8, - 0x61, 0x79, 0x77, 0xea, - }, - { /* 10 */ - 0x51, 0xf6, 0x5f, 0xcc, 0xc9, 0xbb, 0x4b, 0xca, 0x7e, 0x52, 0xea, 0x5b, - 0x67, 0xa2, 0xef, 0xe6, - 0x33, 0xae, 0xa5, 0x03, 0xf8, 0x72, 0xcf, 0x10, 0xac, 0xdb, 0x41, 0x06, - 0xb8, 0x66, 0xba, 0x67, - 0xa4, 0x6a, 0x15, 0x17, 0x52, 0x6f, 0xc2, 0xd0, 0x70, 0x26, 0xcb, 0x2e, - 0x94, 0x8b, 0x8e, 0x86, - 0x67, 0xde, 0xe5, 0xa5, 0xd2, 0x7e, 0xfa, 0xff, 0x18, 0x4a, 0x19, 0x89, - 0xa8, 0xce, 0x6e, 0xad, - 0x0a, 0xcf, 0x3e, 0xd4, 0x05, 0xad, 0xfc, 0x4a, 0x57, 0x45, 0xa7, 0x6b, - 0xee, 0x14, 0x76, 0x58, - 0xe7, 0x84, 0x9d, 0xfc, 0x92, 0x97, 0xe6, 0x09, 0x2c, 0x7c, 0x70, 0x3b, - 0xb6, 0x0d, 0x1e, 0x59, - 0x28, 0xba, 0xf8, 0xd6, 0x14, 0xf1, 0x76, 0xeb, 0x9f, 0xd7, 0xd9, 0x6f, - 0x3e, 0x50, 0x1b, 0xa3, - 0x1a, 0x55, 0x31, 0x76, 0x0d, 0x19, 0x1e, 0x24, 0xb0, 0x33, 0x03, 0xec, - 0x9d, 0x34, 0x78, 0xa7, - 0x6c, 0x50, 0xb7, 0xd2, 0x36, 0x49, 0xa1, 0x6a, 0xcc, 0x30, 0x25, 0x67, - 0x5d, 0xd8, 0xc1, 0x96, - 0x65, 0x5c, 0x3d, 0x20, 0xd3, 0x89, 0x77, 0x82, 0xdd, 0x34, 0xec, 0x40, - 0x9e, 0xca, 0x1f, 0x6b, - 0xfa, 0xd5, 0x6b, 0x65, 0x7d, 0xce, 0x0b, 0x75, 0x93, 0xf2, 0x34, 0xca, - 0x6a, 0x37, 0x2c, 0x14, - 0xe8, 0xcd, 0xbc, 0x42, 0x74, 0x8d, 0x64, 0x66, 0xb1, 0xfa, 0x65, 0x84, - 0x2f, 0x13, 0x53, 0x2d, - 0xac, 0x27, 0xf3, 0x46, 0x56, 0x35, 0xb3, 0xe7, 0xe2, 0x1d, 0x99, 0x8c, - 0x4c, 0x9b, 0x89, 0x18, - 0x5a, 0x78, 0x0d, 0xbb, 0x2d, 0x8c, 0x10, 0x5f, 0xaa, 0x28, 0xd6, 0xb5, - 0x92, 0xb4, 0x40, 0xdd, - 0xa9, 0xa1, 0xec, 0x2c, 0xb5, 0x82, 0xcd, 0xc2, 0x28, 0xde, 0x2b, 0x58, - 0x3b, 0x91, 0xb2, 0x34, - 0x30, 0x6d, 0x11, 0x25, 0x18, 0x1f, 0xe5, 0xb2, 0xea, 0x9a, 0x2f, 0x4a, - 0x95, 0x60, 0x12, 0xc2, - 0x8b, 0xd4, 0x2a, 0x2e, 0xa4, 0xde, 0x47, 0x63, 0xe0, 0x4c, 0x55, 0x5c, - 0xeb, 0xd5, 0xdf, 0xcf, - 0x83, 0x99, 0xcc, 0x7f, 0xa0, 0x84, 0x36, 0x54, 0x72, 0x77, 0x07, 0xfe, - 0x33, 0xc5, 0xd8, 0x51, - 0xef, 0xc9, 0x7b, 0xad, 0x96, 0xcd, 0x97, 0x3e, 0xbe, 0x47, 0x22, 0x99, - 0x6e, 0x1d, 0x19, 0xc7, - 0x66, 0x9f, 0x89, 0x06, 0x33, 0xe4, 0x5d, 0x20, 0x9b, 0x75, 0x82, 0x0c, - 0xb3, 0xcc, 0xb7, 0xce, - 0x14, 0x5d, 0x7c, 0x6b, 0x0a, 0x99, 0x3b, 0x94, 0xae, 0x8a, 0x8d, 0xd6, - 0x1f, 0x28, 0xec, 0xb0, - 0x0d, 0xcb, 0xf9, 0x3b, 0xe7, 0xed, 0x0f, 0x12, 0x58, 0xf8, 0xe0, 0x76, - 0xaf, 0x1a, 0x3c, 0xb2, - 0x05, 0x86, 0x1f, 0x6a, 0xe3, 0xb7, 0x7e, 0x25, 0xca, 0xc3, 0xb2, 0xd4, - 0x77, 0x0a, 0x3b, 0x2c, - 0x92, 0x42, 0xaf, 0x7e, 0x49, 0xaa, 0x73, 0xe5, 0x16, 0x3e, 0x38, 0xfc, - 0x5b, 0xe7, 0x0f, 0xcd, - 0x7a, 0x8f, 0x13, 0x3c, 0x3d, 0x27, 0x17, 0x83, 0xa7, 0xc4, 0x5d, 0x78, - 0x74, 0xf4, 0x5c, 0xe0, - 0x13, 0x59, 0xbb, 0x84, 0xe8, 0xd9, 0xc8, 0xcc, 0xa1, 0x37, 0xca, 0xcb, - 0x5e, 0x26, 0xa6, 0x5a, - 0xd8, 0xa0, 0xad, 0x67, 0x6c, 0x92, 0x81, 0xd4, 0x5b, 0x60, 0x4a, 0xce, - 0xba, 0x73, 0x41, 0xef, - 0x87, 0x5e, 0xbf, 0xb6, 0xa2, 0xa9, 0xef, 0xae, 0x3b, 0x8b, 0x2e, 0xaf, - 0x5f, 0xcd, 0x3a, 0x1e, - 0xb5, 0xb1, 0x76, 0x16, 0xbb, 0x41, 0x87, 0x61, 0x14, 0x6f, 0xf4, 0x2c, - 0xfc, 0xa9, 0x59, 0x1a, - 0xdf, 0xa4, 0x6a, 0x88, 0x8e, 0xd2, 0x72, 0x8c, 0x54, 0xdd, 0x0d, 0xd3, - 0xfb, 0x7d, 0x0b, 0x05, - 0x91, 0x81, 0x1b, 0x58, 0xa9, 0xc7, 0x59, 0x47, 0x50, 0x7f, 0x56, 0xb0, - 0x76, 0xe1, 0xa7, 0x68, - 0x2d, 0x3c, 0xe7, 0xbc, 0xf7, 0x46, 0x08, 0xce, 0x55, 0x14, 0x6b, 0xbb, - 0x49, 0x5a, 0x20, 0x8f, - 0xa0, 0xad, 0x66, 0xde, 0x50, 0x42, 0x1b, 0x2a, 0x39, 0xda, 0xe2, 0x7f, - 0xf8, 0x83, 0x6c, 0xc9, - 0xbf, 0x7e, 0x48, 0xc2, 0xbe, 0xec, 0x7b, 0x2b, 0x43, 0x2a, 0x53, 0x47, - 0x12, 0xbd, 0x2f, 0x42, - 0x24, 0x30, 0x6d, 0x4e, 0x12, 0x86, 0xde, 0x26, 0x44, 0x10, 0xa2, 0x9c, - 0x8a, 0x48, 0xfe, 0x72, - 0x49, 0x21, 0xb6, 0x3f, 0xc5, 0x55, 0xd8, 0x93, 0x0b, 0x1f, 0x1c, 0x7e, - 0xcc, 0x92, 0xe6, 0x87, - 0xee, 0x88, 0x17, 0x0e, 0x77, 0x57, 0x30, 0xe1, 0x3d, 0x78, 0xb9, 0x1c, - 0x75, 0x1f, 0xc0, 0xa4, - 0x2c, 0x7d, 0x8b, 0x1f, 0x16, 0xdc, 0xaf, 0x11, 0xd6, 0x2b, 0xf0, 0x3e, - 0x52, 0x58, 0xf9, 0xec, - 0x1d, 0x51, 0xf6, 0x99, 0xef, 0x59, 0xed, 0x7c, 0xbf, 0x8e, 0x44, 0xf1, - 0xdc, 0x3a, 0x32, 0x4d, - 0xcc, 0xfd, 0xd1, 0x0c, 0x66, 0x0b, 0xba, 0x40, 0xf5, 0xea, 0xc7, 0x18, - 0xa5, 0x5b, 0xad, 0x5f, - 0x7c, 0xca, 0xb8, 0x70, 0x3e, 0xfd, 0x43, 0x04, 0x2b, 0x46, 0x81, 0xe0, - 0x2e, 0xf8, 0xcf, 0x69, - 0x8e, 0x52, 0x35, 0x44, 0x47, 0x69, 0x39, 0x46, 0x2a, 0x8f, 0xe7, 0x88, - 0x9c, 0xdf, 0xe4, 0xe3, - 0xb8, 0x7a, 0x8f, 0x2d, 0x5c, 0xac, 0x88, 0x73, 0x4c, 0x97, 0x14, 0x5a, - 0x53, 0xb3, 0x65, 0xa8, - 0xe6, 0xc5, 0xf1, 0x5f, 0x73, 0x0d, 0x41, 0xd6, 0xaf, 0x43, 0xeb, 0xbe, - 0xad, 0x0f, 0xc7, 0x3a, - 0xf4, 0xdd, 0x26, 0x78, 0x7a, 0x4e, 0x2e, 0xc5, 0x8d, 0x4b, 0xba, 0xf0, - 0xe8, 0x2b, 0xb8, 0x03, - 0x26, 0xb2, 0xb5, 0xcb, 0x13, 0x71, 0x53, 0x5b, 0x81, 0x6e, 0x57, 0x55, - 0xbc, 0x4c, 0x8f, 0xb4, - 0x1b, 0x14, 0x5d, 0xd5, 0xec, 0x83, 0xb9, 0xfb, 0x33, 0x0c, 0x98, 0x69, - 0x86, 0x36, 0xa1, 0xc4, - 0x4f, 0x64, 0x1d, 0x73, 0xc6, 0x8f, 0x8c, 0x14, 0x87, 0x9d, 0xc0, 0xe6, - 0x96, 0x9e, 0x75, 0x0e, - 0xd5, 0x6b, 0x54, 0x5c, 0x8b, 0x7f, 0x8e, 0xc6, 0x03, 0x98, 0xaa, 0xb8, - 0x15, 0x69, 0x7d, 0x5d, - 0xc5, 0xf1, 0x5b, 0xfe, 0x83, 0xcb, 0x6c, 0xa8, 0xe4, 0xee, 0x0e, 0x3f, - 0x66, 0x49, 0x73, 0xa2, - 0x50, 0xb7, 0x33, 0x6f, 0x28, 0x21, 0xec, 0x15, 0xfd, 0x6d, 0x71, 0xde, - 0x7c, 0xa0, 0x36, 0x85, - 0x79, 0x4c, 0xa7, 0x1a, 0xdd, 0x4a, 0x3d, 0x21, 0xe1, 0x85, 0x33, 0x34, - 0x59, 0xf2, 0xf4, 0x45, - 0x77, 0x44, 0xea, 0x07, 0xda, 0xca, 0x18, 0x91, 0xff, 0x3c, 0xbd, 0x0e, - 0xdb, 0xee, 0x60, 0x52, - 0x16, 0xdf, 0xa4, 0xee, 0x0b, 0x6e, 0xb6, 0xe9, 0x6b, 0xf4, 0x78, 0x1f, - 0x29, 0x2c, 0x9d, 0x76, - 0x52, 0x35, 0xeb, 0xea, 0x29, 0xd6, 0x61, 0x68, 0x38, 0x13, 0x84, 0x17, - 0x4a, 0xa4, 0x47, 0x43, - 0x15, 0x1c, 0x10, 0xc8, 0xeb, 0x03, 0x9c, 0x4b, 0x2d, 0xb5, 0x16, 0x53, - 0x04, 0x2a, 0x35, 0xd3, - 0x9b, 0x4e, 0x25, 0x8c, 0xac, 0x6a, 0xa5, 0x0d, 0x07, 0x3a, 0xf1, 0xdb, - 0x98, 0xf5, 0xd1, 0x30, - 0xb4, 0xf0, 0x1a, 0xb5, 0x5a, 0xdb, 0x20, 0xbe, 0x97, 0x50, 0x6f, 0xa9, - 0xe7, 0xab, 0x80, 0x79, - 0x3e, 0x65, 0x5c, 0x38, 0x1f, 0x9f, 0xc0, 0x02, 0xf4, 0x23, 0xa1, 0x70, - 0x17, 0x7c, 0x86, 0xd5, - 0x80, 0x5a, 0x78, 0x59, 0x40, 0xe9, 0x1c, 0xf6, 0x34, 0x36, 0x69, 0xb2, - 0x1e, 0xc3, 0x70, 0xf4, - 0x36, 0x28, 0xba, 0x69, 0x1b, 0xc5, 0xb1, 0x35, 0x66, 0x18, 0xf3, 0xd2, - 0xcf, 0x6c, 0x81, 0x4b, - 0xd3, 0x2e, 0xff, 0x10, 0x88, 0xa5, 0xda, 0x41, 0x8f, 0x1a, 0x76, 0x20, - 0x4f, 0x65, 0xee, 0xd4, - 0x2b, 0x79, 0x4c, 0xf0, 0xf4, 0x9c, 0x5c, 0x49, 0xd9, 0x96, 0xb7, 0x23, - 0x13, 0x56, 0xb3, 0x06, - 0x01, 0x41, 0x6c, 0xa3, 0xe1, 0x9a, 0xa7, 0xdf, 0x83, 0x3f, 0x9b, 0x85, - 0x1b, 0x02, 0xd9, 0x63, - 0x99, 0xcc, 0xfd, 0x09, 0xad, 0x9d, 0x28, 0x70, 0xc2, 0x44, 0x04, 0x12, - 0xae, 0xf1, 0xa0, 0xf6, - 0xdd, 0x26, 0xb2, 0x0d, 0x8f, 0x25, 0xff, 0xf1, 0x91, 0xa3, 0xf8, 0x1a, - 0xcd, 0x79, 0x7a, 0xc3, - 0xf6, 0x5f, 0xfe, 0xfd, 0x7b, 0xb9, 0xa3, 0xb8, 0x48, 0x35, 0x4f, 0x39, - 0xde, 0x2f, 0xc9, 0xc5, - 0x68, 0x97, 0xc4, 0x1b, 0x34, 0x64, 0x78, 0x90, 0x85, 0xcc, 0x0c, 0x36, - 0x31, 0xd0, 0x23, 0xd9, - 0x12, 0x18, 0xd7, 0x27, 0x09, 0x43, 0x6f, 0x13, 0x22, 0x08, 0x51, 0x4e, - 0x45, 0x24, 0x7f, 0x39, - 0x8a, 0x95, 0x46, 0x8d, 0x45, 0x44, 0xe0, 0xbc, 0x63, 0x73, 0xce, 0xd9, - 0xf0, 0xd7, 0x06, 0xac, - 0x09, 0x0c, 0x8a, 0xf2, 0xe5, 0xc0, 0xd6, 0xe8, 0x11, 0x04, 0xc9, 0x27, - 0xc3, 0x12, 0xde, 0xfd, - 0xa6, 0xe8, 0xcd, 0x92, 0x53, 0x98, 0x4f, 0xad, 0xb5, 0x58, 0x3e, 0xe7, - 0xa2, 0x8f, 0xff, 0x40, - 0x72, 0xc2, 0xf5, 0x6d, 0x39, 0x7d, 0x66, 0xb4, 0x35, 0xff, 0x0f, 0xda, - 0xac, 0xe4, 0x5b, 0x7e, - 0xc4, 0xb0, 0x37, 0x5d, 0x62, 0x51, 0xcb, 0x77, 0x67, 0xd1, 0x95, 0xba, - 0x7d, 0x4b, 0xaa, 0xc1, - 0x3a, 0xa2, 0x2f, 0xf1, 0x1d, 0xb2, 0x19, 0xf8, 0xbd, 0xdf, 0x88, 0x21, - 0x7b, 0x74, 0x64, 0x9a, - 0x74, 0x87, 0x5e, 0x21, 0x3a, 0xa7, 0x32, 0x33, 0xb9, 0x7d, 0xd3, 0x42, - 0xf6, 0xe8, 0xc8, 0xf7, - 0xc1, 0x36, 0x28, 0x37, 0x81, 0xe6, 0xb5, 0x52, 0xad, 0x12, 0x27, 0x6e, - 0x0a, 0x41, 0x91, 0xed, - 0xca, 0xb8, 0x7a, 0x40, 0x65, 0xd1, 0xee, 0xc7, 0x79, 0x68, 0x1b, 0x80, - 0xff, 0x57, 0x3e, 0xd6, - 0xb9, 0x3b, 0xe3, 0x8e, 0xbd, 0x36, 0x2f, 0xac, 0xcf, 0xa8, 0x8f, 0xdf, - 0x48, 0xb1, 0xbc, 0xcb, - 0x70, 0x40, 0x2d, 0xe8, 0x38, 0x8a, 0xeb, 0xc9, 0xf0, 0x81, 0xfa, 0x13, - 0x9a, 0xe0, 0x2a, 0xb8, - 0xbc, 0xbd, 0xfc, 0xe4, 0x5e, 0x81, 0x51, 0x89, 0x05, 0x6b, 0x3d, 0x0b, - 0x3f, 0xbb, 0x87, 0xe7, - 0x34, 0xaa, 0x62, 0xec, 0x1a, 0x32, 0x3c, 0x48, 0xa3, 0x66, 0x06, 0x1b, - 0xf9, 0x68, 0xf0, 0x8d, - 0x6a, 0x15, 0x1c, 0x9e, 0x35, 0x93, 0xf5, 0xed, 0x40, 0xb2, 0xf9, 0xff, - 0x07, 0xd4, 0x52, 0x1f, - 0x48, 0x60, 0xda, 0x9c, 0x24, 0xcf, 0x7f, 0x4c, 0x88, 0x20, 0x87, 0xfb, - 0xd7, 0x90, 0x3f, 0xe4, - 0x5f, 0xfe, 0x12, 0xd1, 0xce, 0x3b, 0x6e, 0x7a, 0x60, 0xeb, 0x64, 0x61, - 0xe5, 0xbe, 0x7b, 0xf1, - 0x8f, 0x13, 0x59, 0xe7, 0xa6, 0xf3, 0x9e, 0x99, 0xa9, 0xb0, 0x7c, 0x0d, - 0x87, 0xdd, 0x3d, 0x80, - 0x69, 0xd6, 0xa8, 0xb8, 0xd5, 0xfe, 0xdf, 0x4f, 0x06, 0xf3, 0x97, 0xb3, - 0x2a, 0xd2, 0xfa, 0xba, - 0x9a, 0x0f, 0x49, 0x2f, 0x4d, 0xf0, 0x02, 0xd2, 0x84, 0x05, 0x6a, 0x5e, - 0x83, 0xf7, 0x08, 0x53, - 0xda, 0x22, 0x75, 0xe2, 0x6d, 0x65, 0x0c, 0xa9, 0x9e, 0x1e, 0xbf, 0x07, - 0x8c, 0x77, 0x30, 0x29, - 0xfd, 0xd1, 0xac, 0x8a, 0x9f, 0x8e, 0xf8, 0x2d, 0x9c, 0x4f, 0x73, 0xd7, - 0x2b, 0x39, 0x66, 0xfe, - 0x39, 0x61, 0x9b, 0xd7, 0xfd, 0xdf, 0x33, 0x5a, 0xfb, 0x9e, 0xe6, 0x6d, - 0x56, 0x72, 0xcc, 0x3f, - 0xa5, 0x2b, 0x79, 0xb4, 0xb3, 0xf5, 0x65, 0x0f, 0xf3, 0x19, 0x50, 0xab, - 0x8f, 0x89, 0x57, 0xe5, - 0xfc, 0x90, 0xc0, 0x29, 0x7e, 0x14, 0x5f, 0xf2, 0x1f, 0x70, 0xe8, 0x52, - 0x30, 0x3b, 0xbf, 0x9d, - 0xe0, 0x80, 0x5a, 0x13, 0x70, 0xd7, 0x15, 0x51, 0x23, 0xc1, 0x37, 0x26, - 0xf7, 0x03, 0x54, 0xb3, - 0x0c, 0x8a, 0x95, 0x98, 0x06, 0x77, 0xa8, 0xcd, 0xdb, 0xc7, 0x7b, 0xf3, - 0xb4, 0x18, 0xe5, 0xd1, - 0x57, 0xb3, 0xf4, 0x80, 0xca, 0x61, 0x1f, 0x4d, 0xf2, 0xd0, 0x36, 0xc3, - 0x3d, 0xae, 0x7c, 0x6f, - 0x54, 0x70, 0x40, 0xa6, 0x2a, 0x0c, 0x35, 0xef, 0xb4, 0x91, 0x58, 0x8f, - 0x10, 0xa8, 0xd4, 0xca, - 0x8d, 0x91, 0x81, 0x62, 0xa7, 0x04, 0x13, 0xe4, 0x6c, 0xce, 0x89, 0xc4, - 0xb1, 0xd9, 0x4c, 0x46, - 0xd2, 0x6f, 0x93, 0xb3, 0x69, 0x3f, 0x7d, 0x9e, 0x0c, 0x25, 0xed, 0xa5, - 0x54, 0x67, 0x37, 0xb7, - 0xf7, 0x1e, 0x92, 0x5e, 0x9a, 0x23, 0x04, 0x67, 0xcb, 0x0a, 0xd4, 0xbc, - 0xc5, 0x2d, 0x10, 0xa6, - 0x5e, 0xbf, 0x7e, 0x72, 0x2f, 0xa1, 0xc9, 0xa5, 0xe3, 0xd4, 0xff, 0xe4, - 0xfe, 0xbc, 0xa2, 0x92, - 0xf9, 0x16, 0xdf, 0x43, 0x9d, 0xa3, 0x21, 0xd7, 0xd5, 0xb3, 0x5a, 0x86, - 0x47, 0x31, 0x84, 0xb1, - 0xf2, 0x98, 0x8d, 0x34, 0x79, 0x94, 0x7a, 0x42, 0x01, 0xc9, 0x66, 0x68, - 0xb2, 0x27, 0x2b, 0x8a, - 0xe3, 0x43, 0xee, 0x35, 0x90, 0xba, 0x3f, 0xf3, 0x65, 0x80, 0x59, 0x6a, - 0xda, 0x05, 0xfc, 0x16, - 0x3b, 0xe3, 0x43, 0x52, 0xfc, 0x28, 0xbe, 0x27, 0x3e, 0xe0, 0x13, 0xa4, - 0x60, 0x76, 0xbd, 0xf9, - 0x03, 0xc3, 0xb4, 0x26, 0xe0, 0x6d, 0x2a, 0xa2, 0x46, 0x41, 0x6e, 0x4c, - 0x2d, 0x06, 0xa8, 0xa5, - 0xa1, 0xec, 0x0a, 0x7d, 0xb1, 0xd8, 0xbc, 0xf5, 0xba, 0xe5, 0x79, 0xfa, - 0xe3, 0x81, 0xb5, 0xaa, - 0x96, 0x85, 0xdc, 0xb7, 0x4b, 0x87, 0xaa, 0x1f, 0x5f, 0xc2, 0x11, 0xad, - 0x37, 0xef, 0xed, 0x82, - 0xaa, 0x62, 0x58, 0x0a, 0x55, 0xef, 0xe7, 0x60, 0x6e, 0x9f, 0x45, 0x14, - 0x16, 0x97, 0x1a, 0x91, - 0x9f, 0x89, 0x56, 0x45, 0xae, 0x47, 0x7c, 0xf7, 0x4e, 0xc6, 0xd8, 0x8a, - 0xf4, 0xfd, 0x33, 0x7f, - 0x46, 0x68, 0x97, 0x81, 0x23, 0x4f, 0x5a, 0xfc, 0x96, 0x99, 0x09, 0xc1, - 0x55, 0x8c, 0xab, 0xf3, - 0x41, 0x6c, 0x50, 0x6e, 0xc1, 0x0f, 0xa9, 0xa4, 0x99, 0x24, 0x4e, 0xdc, - 0x14, 0x82, 0xe1, 0x19, - 0x2a, 0x38, 0x20, 0x53, 0x15, 0x06, 0xfb, 0x96, 0x5a, 0xa9, 0x2c, 0xa6, - 0x08, 0x54, 0x6a, 0x65, - 0x60, 0xda, 0x22, 0x4a, 0x30, 0x3e, 0x09, 0xa7, 0x17, 0xf7, 0x5e, 0x94, - 0xe9, 0xc0, 0x24, 0x47, - 0xe5, 0x06, 0x45, 0x79, 0x93, 0x60, 0x6b, 0x74, 0xe9, 0x02, 0x85, 0xf2, - 0x80, 0x09, 0x6f, 0x9f, - 0x94, 0x07, 0x04, 0x32, 0x4a, 0x70, 0x27, 0x62, 0x9a, 0xbc, 0xe4, 0x64, - 0x01, 0xeb, 0x9c, 0x44, - 0xbe, 0x3f, 0x24, 0x61, 0x5f, 0x76, 0xdc, 0xf4, 0xc0, 0x15, 0xc8, 0xc2, - 0x09, 0xbf, 0xf6, 0x21, - 0x90, 0xc0, 0x77, 0xfb, 0x48, 0x5d, 0xfe, 0x98, 0xd3, 0x40, 0xcd, 0x35, - 0x6d, 0xe3, 0x7e, 0x0b, - 0x2f, 0xbe, 0x3f, 0x39, 0xf6, 0xb1, 0x85, 0xb3, 0x90, 0x6a, 0x9e, 0x72, - 0x7f, 0x5e, 0x51, 0x49, - 0x9d, 0x0b, 0x8e, 0xc0, 0xaf, 0xb0, 0xf1, 0x8a, 0x8b, 0xb8, 0x2d, 0x43, - 0xc2, 0xf9, 0x42, 0xb9, - 0x81, 0x1b, 0x14, 0xfa, 0xa1, 0x73, 0xbb, 0x29, 0xb7, 0x09, 0xf2, 0x37, - 0x05, 0xc1, 0xa9, 0x97, - 0xa2, 0x2f, 0xbe, 0x5b, 0x51, 0xb5, 0x96, 0x57, 0xfc, 0xa4, 0x17, 0xb6, - 0xce, 0x87, 0x1d, 0x0f, - 0x76, 0x05, 0x86, 0xa4, 0x3b, 0x50, 0xbf, 0x4e, 0x7c, 0x03, 0x26, 0x8b, - 0xc0, 0xec, 0xb9, 0x31, - 0x4b, 0xa3, 0x6e, 0xba, 0xc4, 0xa2, 0x55, 0xee, 0xce, 0x61, 0xe9, 0xb7, - 0xfa, 0x96, 0x97, 0x41, - 0xe4, 0x47, 0x29, 0xda, 0x72, 0xfa, 0xcc, 0xab, 0x6a, 0x3d, 0x1e, 0x77, - 0x9b, 0x0b, 0xb6, 0xfc, - 0x06, 0x45, 0xab, 0x4c, 0x03, 0xda, 0x54, 0x87, 0x8c, 0x82, 0xdc, 0x98, - 0x5a, 0x0c, 0x93, 0x89, - 0x55, 0x31, 0x2c, 0x05, 0xcb, 0x96, 0x92, 0x30, 0x37, 0xae, 0xc3, 0x0a, - 0x0b, 0xaa, 0x0d, 0xa9, - 0xae, 0xa5, 0x2b, 0xc3, 0x57, 0xc2, 0x3e, 0x9a, 0x27, 0x63, 0x6c, 0x45, - 0x7a, 0x9f, 0xf8, 0xde, - 0x1c, 0x10, 0x9a, 0x3a, 0x0e, 0xc3, 0x4a, 0xa3, 0x3c, 0xb1, 0xdf, 0x74, - 0xc7, 0x38, 0xeb, 0x2e, - 0x75, 0xc6, 0x32, 0x82, 0xdb, 0x3d, 0x95, 0xec, 0x3a, 0x42, 0x48, 0xc7, - 0xed, 0xea, 0x11, 0x94, - 0x5b, 0x39, 0x61, 0x18, 0xcc, 0x16, 0xb7, 0x80, 0x29, 0x17, 0x4d, 0x30, - 0x89, 0xb6, 0x99, 0xbe, - 0x04, 0xc7, 0x73, 0xc9, 0x02, 0x2d, 0xd9, 0xfa, 0x49, 0xfc, 0x29, 0x51, - 0x6c, 0x08, 0xe2, 0x4f, - 0x27, 0xf3, 0xd9, 0x68, 0xf2, 0xeb, 0xf4, 0x84, 0x02, 0x51, 0xcc, 0xd0, - 0xa7, 0x4e, 0x56, 0xd7, - 0x4d, 0xe6, 0xc5, 0xf6, 0xc7, 0x78, 0x01, 0x69, 0x42, 0xe3, 0x35, 0x2f, - 0xa0, 0x9a, 0x04, 0xc8, - 0x9c, 0x4a, 0xe2, 0x63, 0x4e, 0x2a, 0x56, 0x55, 0x08, 0x87, 0xb6, 0xc6, - 0xd9, 0xfb, 0x9b, 0xda, - 0x20, 0xf7, 0x1e, 0x87, 0x10, 0xab, 0x07, 0xdc, 0x0d, 0xec, 0x8b, 0xcd, - 0xe6, 0x40, 0x1c, 0x3d, - 0x53, 0x74, 0x87, 0x49, 0xc8, 0x4c, 0xc6, 0xb7, 0xbb, 0x2c, 0x1f, 0x92, - 0x51, 0xa6, 0x9e, 0x20, - 0xd0, 0xed, 0x4b, 0x36, 0x68, 0xc8, 0xf0, 0xe3, 0xc9, 0x5b, 0x18, 0x6c, - 0x62, 0x63, 0x46, 0x71, - 0x95, 0x46, 0x68, 0x91, 0xab, 0xea, 0x80, 0xbd, 0x19, 0x83, 0x7f, 0xe1, - 0x1a, 0xe9, 0x45, 0x27, - 0xf3, 0xd9, 0xe1, 0x97, 0x98, 0x0e, 0xdd, 0x9d, 0x82, 0xf6, 0xfd, 0xed, - 0xa9, 0x25, 0xf2, 0xe9, - 0x85, 0xdc, 0x67, 0x33, 0xa3, 0x5e, 0x62, 0xd3, 0xfe, 0xf5, 0xdb, 0x66, - 0x69, 0xc9, 0x4b, 0xd8, - 0x88, 0x17, 0x9e, 0x08, 0x44, 0xb3, 0x6d, 0xc1, 0xa6, 0x0d, 0x3b, 0x10, - 0xc6, 0xd3, 0x77, 0x6a, - 0xb0, 0x37, 0x69, 0x7c, 0x58, 0xf6, 0xf9, 0x44, 0xde, 0xac, 0x46, 0xf8, - 0x8b, 0xa3, 0x62, 0x36, - 0x22, 0x75, 0xc6, 0x02, 0x11, 0x5c, 0x8a, 0xa1, 0xc8, 0x92, 0x7e, 0x04, - 0xd0, 0x44, 0x6d, 0xfb, - 0x0b, 0x8e, 0x52, 0x77, 0xe4, 0x37, 0x5b, 0x95, 0xd4, 0x7a, 0x3c, 0xee, - 0xf5, 0x16, 0xaf, 0x3b, - 0x02, 0x82, 0xd8, 0x85, 0x01, 0xf7, 0x8d, 0x7d, 0xc5, 0x7e, 0xf5, 0xc9, - 0x36, 0x04, 0x71, 0xc6, - 0xc9, 0x7b, 0xce, 0x66, 0x85, 0xbc, 0xc4, 0x65, 0x3f, 0x29, 0x75, 0xcc, - 0xd2, 0x51, 0x96, 0x73, - 0xdb, 0x63, 0x19, 0x41, 0x8c, 0xff, 0xab, 0x76, 0x1d, 0x21, 0x24, 0x82, - 0x97, 0x75, 0xe9, 0x4a, - 0xb6, 0x72, 0xc2, 0x30, 0x5b, 0x2c, 0xad, 0xc3, 0x52, 0x2e, 0x9a, 0x60, - 0xd1, 0xaf, 0xf1, 0xbf, - 0x40, 0x2d, 0x3c, 0xcd, 0x20, 0x95, 0x0e, 0x7b, 0x1a, 0x1b, 0xd5, 0x59, - 0x0f, 0x80, 0x38, 0x7a, - 0x4e, 0x25, 0x71, 0xd0, 0x27, 0x15, 0x2b, 0xcb, 0x04, 0xa2, 0x5b, 0x63, - 0x8d, 0x9c, 0xac, 0x6d, - 0xd7, 0xe9, 0x8c, 0xd9, 0x8a, 0x88, 0x03, 0xbb, 0xc6, 0xe6, 0x5f, 0x71, - 0x23, 0x6d, 0x0c, 0x9b, - 0xab, 0x23, 0x34, 0xa9, 0xb4, 0x75, 0x40, 0xbf, 0xed, 0xa0, 0xde, 0x91, - 0x0d, 0x95, 0xc3, 0xf2, - 0x98, 0x8d, 0x91, 0xaa, 0x4c, 0x07, 0x8f, 0xaf, 0x41, 0x7b, 0x9f, 0x97, - 0xb5, 0xf3, 0x79, 0x95, - 0xc8, 0x3a, 0xa2, 0xc5, 0x64, 0x26, 0x63, 0xba, 0xbc, 0x16, 0xee, 0x49, - 0xc9, 0x53, 0x4f, 0x10, - 0xaf, 0xe4, 0x47, 0x60, 0xb6, 0x58, 0x99, 0x45, 0xa4, 0x5c, 0xf7, 0xc0, - 0x61, 0x9d, 0x21, 0xbd, - 0xa3, 0x6e, 0xd2, 0xf8, 0xb0, 0x2f, 0x31, 0x88, 0x7f, 0x9b, 0x8c, 0x33, - 0xd5, 0x85, 0xc4, 0x6c, - 0x44, 0xea, 0x4f, 0x04, 0x22, 0xb8, 0xd7, 0x81, 0x53, 0xe7, 0xfc, 0x08, - 0x63, 0x88, 0xda, 0x35, - 0x84, 0x9d, 0x0b, 0x90, 0x42, 0xc4, 0xc5, 0x0c, 0x7d, 0xca, 0x40, 0xe3, - 0x72, 0xcb, 0x92, 0xbb, - 0x9e, 0xc8, 0x3a, 0xe6, 0x4f, 0xdd, 0xdb, 0x28, 0xcd, 0xf9, 0x43, 0x0f, - 0xef, 0xff, 0xea, 0x1c, - 0xe2, 0x02, 0x82, 0x96, 0x71, 0x20, 0x98, 0x2c, 0xe6, 0xbf, 0xc2, 0xef, - 0xc1, 0x07, 0x25, 0x75, - 0xcd, 0xbc, 0xbd, 0xaf, 0x87, 0x91, 0x1d, 0x9f, 0x76, 0xd5, 0x5c, 0x9d, - 0xbe, 0x59, 0x74, 0x3c, - 0xfb, 0x94, 0x07, 0xc6, 0x9c, 0x54, 0xac, 0xaa, 0x10, 0xcd, 0xaf, 0x4f, - 0x71, 0x35, 0xf5, 0x77, - 0x45, 0xab, 0x23, 0xa7, 0xc3, 0x22, 0x70, 0x5e, 0xd0, 0xd8, 0x67, 0x8d, - 0x78, 0x8a, 0x03, 0x56, - 0x23, 0x34, 0xaa, 0xa1, 0xf0, 0xc6, 0x2d, 0x7e, 0x4b, 0xad, 0xe5, 0x81, - 0xcb, 0x46, 0xb4, 0x98, - 0xc6, 0x32, 0xef, 0xd8, 0x63, 0xa6, 0x46, 0x0a, 0xa2, 0xaf, 0x60, 0x73, - 0x4b, 0x4f, 0xdb, 0x07, - 0x3d, 0xa6, 0xe8, 0x1e, 0xff, 0xf2, 0xea, 0xa0, 0xb2, 0x62, 0xcf, 0x3c, - 0x3a, 0x7a, 0x2e, 0x70, - 0x17, 0x9e, 0xc8, 0x4d, 0xea, 0xf4, 0x11, 0x36, 0xe8, 0xcb, 0xe3, 0x9a, - 0x32, 0x2e, 0x44, 0x15, - 0xeb, 0x0e, 0x08, 0x64, 0x94, 0xe0, 0x4e, 0xc4, 0xf7, 0xbb, 0x0b, 0xc8, - 0x02, 0x15, 0xfb, 0x88, - 0x2e, 0xff, 0x53, 0x9a, 0x17, 0x2b, 0x22, 0x6c, 0x13, 0x55, 0x05, 0xf7, - 0x64, 0x5c, 0x88, 0x2a, - 0xcb, 0xf9, 0x16, 0xe3, 0x84, 0x4b, 0x49, 0x18, 0xfa, 0x57, 0x80, 0x05, - 0xe4, 0x55, 0xe7, 0xb5, - 0xb2, 0xb5, 0xb1, 0xf9, 0x59, 0x01, 0x74, 0x39, 0x1b, 0xd2, 0xb3, 0x31, - 0xbd, 0xa7, 0x13, 0xf0, - 0x5c, 0x3d, 0xa6, 0xf7, 0x2e, 0x56, 0x44, 0xd8, 0x26, 0xaa, 0x0a, 0x2d, - 0xc8, 0xb8, 0xd3, 0x54, - 0x4a, 0xe2, 0x02, 0x19, 0x25, 0x38, 0xf2, 0x31, 0x4d, 0x5e, 0x72, 0x32, - 0xe1, 0x94, 0x4e, 0x22, - 0x64, 0x1d, 0x51, 0x83, 0x32, 0x13, 0xd0, 0x5d, 0x5e, 0x0b, 0x77, 0xc5, - 0x85, 0xc8, 0xc6, 0x08, - 0x71, 0x01, 0x41, 0x4b, 0xd9, 0x10, 0x4c, 0x16, 0x73, 0xbe, 0x61, 0x96, - 0x81, 0xe2, 0xf3, 0xdb, - 0x35, 0xeb, 0x0e, 0x4f, 0xfb, 0xa8, 0x9b, 0x97, 0x20, 0x59, 0x9d, 0x9e, - 0xe2, 0x6a, 0x29, 0xee, - 0xc7, 0x73, 0x83, 0x7b, 0x82, 0x3c, 0xe1, 0xd5, 0x21, 0x90, 0xfb, 0xf6, - 0x50, 0x4d, 0x02, 0x64, - 0x07, 0x04, 0xc7, 0xef, 0xe2, 0x40, 0xf3, 0x58, 0x0f, 0xbd, 0x47, 0x1d, - 0x41, 0x0e, 0x4a, 0xea, - 0x59, 0xbb, 0xb9, 0x9d, 0xcd, 0xe1, 0x3a, 0xfd, 0xec, 0x69, 0xb8, 0xf9, - 0xbf, 0xb2, 0xe8, 0x78, - 0x38, 0x20, 0xf7, 0x74, 0x1c, 0x45, 0x94, 0x85, 0x78, 0xa1, 0x7d, 0xe8, - 0x4d, 0x70, 0x15, 0x5c, - 0xea, 0x4f, 0x64, 0xc7, 0x75, 0x7a, 0xe9, 0x1b, 0x74, 0x84, 0x90, 0x4d, - 0x19, 0x17, 0x22, 0xeb, - 0x37, 0x69, 0xd6, 0xca, 0xfa, 0x5f, 0x16, 0xea, 0xe5, 0x27, 0x68, 0x57, - 0xd4, 0x6e, 0x58, 0x28, - 0x63, 0x19, 0x96, 0x6c, 0xd0, 0x53, 0x23, 0x05, 0x51, 0xb6, 0x30, 0xd8, - 0xc4, 0xc6, 0x8c, 0xe2, - 0x18, 0xd7, 0xe9, 0xf3, 0x0c, 0xee, 0x93, 0x59, 0x75, 0x4d, 0xf6, 0x25, - 0xab, 0x30, 0x09, 0x61, - 0xa7, 0xa9, 0xa1, 0x31, 0xb2, 0x02, 0xe8, 0x72, 0x36, 0x67, 0xa5, 0x62, - 0xb9, 0x8d, 0x26, 0x23, - 0x58, 0xfa, 0xd5, 0x3e, 0x2c, 0x7b, 0x9d, 0x22, 0x6f, 0x56, 0x23, 0x7c, - 0xa4, 0xb0, 0x31, 0x1b, - 0x11, 0xdb, 0x63, 0x01, 0xe9, 0x2e, 0x45, 0xb1, 0x64, 0x49, 0x3f, 0x02, - 0x68, 0x22, 0xd7, 0x9c, - 0xf5, 0x9c, 0x4a, 0xdb, 0x9b, 0xd4, 0x89, 0x1a, 0x0e, 0x74, 0x21, 0x75, - 0xf3, 0x29, 0x61, 0x60, - 0xd9, 0xe1, 0xc1, 0xc4, 0x8d, 0x08, 0x26, 0x0b, 0xd8, 0x5f, 0xd1, 0x4b, - 0xa1, 0x71, 0x98, 0x8c, - 0xe9, 0x8c, 0xd0, 0xe1, 0x95, 0x17, 0xc3, 0xb9, 0x32, 0xc5, 0xfe, 0x01, - 0x34, 0x11, 0x8a, 0x4e, - 0x25, 0x71, 0x01, 0xed, 0xf3, 0x1c, 0x79, 0xf9, 0xc7, 0x2f, 0x39, 0x19, - 0x91, 0x4a, 0x27, 0x11, - 0xf8, 0x57, 0xb3, 0xe0, 0x7c, 0x39, 0x86, 0x08, 0x56, 0x8c, 0xc1, 0x03, - 0x5c, 0x33, 0x5d, 0xd2, - 0x97, 0xc4, 0xb0, 0x14, 0xaa, 0x1d, 0x0d, 0xc0, 0xdc, 0xfd, 0x8a, 0x28, - 0x2c, 0xed, 0x34, 0xe1, - 0xb1, 0x76, 0x05, 0xdf, 0xb9, 0x6c, 0x5e, 0x9b, 0x5d, 0x93, 0xdd, 0x7d, - 0x90, 0xa1, 0xbb, 0x55, - 0x19, 0x96, 0x85, 0x50, 0xed, 0x74, 0x34, 0x86, 0xf6, 0x72, 0x6d, 0xa0, - 0xb0, 0x32, 0xd0, 0x02, - 0x0f, 0x49, 0x21, 0xbe, 0xe6, 0x1a, 0x82, 0x6f, 0x9d, 0x86, 0x15, 0xbf, - 0x99, 0x1e, 0x4d, 0x74, - 0x89, 0x56, 0xf2, 0xab, 0xa5, 0x29, 0xca, 0x1e, 0x25, 0x32, 0xa0, 0x95, - 0xdd, 0xd1, 0xae, 0x09, - 0xdc, 0x67, 0xde, 0xae, 0x6e, 0xbf, 0x58, 0x2e, 0x12, 0x9c, 0x63, 0x9f, - 0xd6, 0x7b, 0xa3, 0xa0, - 0x08, 0x4d, 0xe6, 0x51, 0x04, 0x5a, 0x71, 0x37, 0x92, 0x3b, 0x52, 0xa2, - 0xd8, 0x10, 0x07, 0x9e, - 0xf1, 0x5b, 0x39, 0x12, 0x99, 0xf9, 0x50, 0xe0, 0x47, 0x88, 0x08, 0x24, - 0x9f, 0x21, 0x83, 0x2f, - 0xa8, 0xe0, 0x80, 0x8f, 0x54, 0x18, 0x6a, 0x1d, 0xab, 0xe1, 0xb0, 0xdd, - 0x20, 0x93, 0x6b, 0x57, - 0x0e, 0x08, 0x4d, 0x1d, 0x07, 0x80, 0x25, 0xb0, 0x1e, 0xb9, 0x8e, 0x3a, - 0x82, 0x1c, 0x94, 0x17, - 0x6f, 0x93, 0x03, 0xf4, 0xd6, 0x24, 0x8b, 0xc8, 0x8a, 0x71, 0x4b, 0x2b, - 0x70, 0xde, 0x69, 0x33, - 0x7d, 0x8b, 0xd4, 0xd3, 0xdf, 0x67, 0xe4, 0xdb, 0xa8, 0x79, 0x1a, 0x65, - 0x35, 0xfa, 0x16, 0x0a, - 0xd4, 0x2a, 0x38, 0xff, 0x6a, 0xe5, 0x29, 0x19, 0x80, 0xa7, 0x31, 0x3d, - 0x0e, 0x6b, 0xa4, 0x3e, - 0xbd, 0xfc, 0x90, 0x47, 0xbf, 0x1b, 0xf6, 0x56, 0x86, 0x54, 0xa6, 0x8e, - 0x24, 0xb9, 0x5e, 0x84, - 0x86, 0x1f, 0xd3, 0x15, 0x43, 0x33, 0x48, 0x71, 0xb8, 0xb4, 0xb5, 0x2a, - 0x44, 0xcf, 0xe3, 0x7d, - 0xec, 0x0a, 0xcf, 0x8b, 0x76, 0xa0, 0xbd, 0x9c, 0xf8, 0x06, 0x4c, 0xd5, - 0x43, 0x1b, 0xb1, 0x62, - 0x32, 0xef, 0xc9, 0xa0, 0x19, 0xe8, 0x68, 0xcf, 0x2f, 0xe4, 0xda, 0x83, - 0xa3, 0x64, 0x63, 0x04, - 0x7e, 0x48, 0x60, 0xf5, 0x3f, 0x0a, 0xce, 0x79, 0xee, 0x38, 0x74, 0x29, - 0x18, 0xfc, 0xbe, 0xaf, - 0xed, 0x4b, 0xa3, 0x28, 0x97, 0x3a, 0x1a, 0x43, 0x7b, 0x39, 0xd7, 0x50, - 0x58, 0x19, 0x68, 0x01, - 0x6e, 0xd2, 0x6f, 0x57, 0x37, 0xbe, 0x2c, 0x17, 0x09, 0x4e, 0xd0, 0xae, - 0x6b, 0xdc, 0xb0, 0x50, - 0xc3, 0xb4, 0xf0, 0xb2, 0x80, 0x11, 0x38, 0x2f, 0x68, 0x6c, 0xd2, 0xa7, - 0x3c, 0x45, 0xe0, 0x2b, - 0x21, 0xb6, 0x72, 0x24, 0xf1, 0x31, 0xa0, 0x03, 0x8e, 0xd3, 0x10, 0x48, - 0xfd, 0x42, 0xc5, 0x5e, - 0x62, 0x58, 0xfa, 0xcf, 0x31, 0xc9, 0x84, 0xda, 0xd2, 0x89, 0xab, 0x5d, - 0xdf, 0xc4, 0x55, 0x81, - 0xce, 0x7f, 0x09, 0x89, 0x67, 0xfc, 0x37, 0x3d, 0x30, 0x94, 0x32, 0xd1, - 0x93, 0x5f, 0xdc, 0x99, - 0x93, 0x03, 0xc3, 0xdd, 0xa8, 0x30, 0xd4, 0x3a, 0x95, 0x01, 0xa3, 0x79, - 0x40, 0xe5, 0xd6, 0xae, - 0x4c, 0xa7, 0xa9, 0x55, 0x26, 0xe2, 0xa6, 0xb6, 0xc1, 0xdc, 0xae, 0xaa, - 0xbb, 0x98, 0xdd, 0xab, - 0xde, 0xe5, 0x06, 0x2b, 0x6f, 0x48, 0xd5, 0x53, 0xd7, 0xe2, 0x96, 0x56, - 0xe0, 0x7f, 0xd2, 0x66, - 0x3f, 0x24, 0x30, 0x9b, 0xfe, 0x05, 0x67, 0xdd, 0x77, 0x1c, 0x3a, 0xf5, - 0x0c, 0x7e, 0x5f, 0xb6, - 0x43, 0xee, 0x88, 0xeb, 0xc0, 0xf8, 0x24, 0xd9, 0x5c, 0x5a, 0xbb, 0x15, - 0x22, 0x86, 0x90, 0xdf, - 0x73, 0x83, 0x99, 0xce, 0xd8, 0xe7, 0xc1, 0x6b, 0xb6, 0xc0, 0x94, 0x5f, - 0xb7, 0xe6, 0x82, 0x1d, - 0xad, 0x66, 0x9f, 0xe5, 0xb7, 0xaf, 0x14, 0x38, 0x61, 0x22, 0x02, 0x09, - 0x57, 0x99, 0x50, 0x7b, - 0xf0, 0x1a, 0x55, 0xb1, 0x78, 0x63, 0xf7, 0x3f, 0xc4, 0xb7, 0x93, 0xa1, - 0x84, 0x23, 0x5a, 0x4c, - 0x47, 0x29, 0xfb, 0x22, 0xc2, 0xd5, 0xfd, 0x23, 0x15, 0xa6, 0x92, 0x44, - 0x4e, 0x8e, 0x72, 0x90, - 0x3c, 0xe7, 0x84, 0xbd, 0x1e, 0x68, 0x4d, 0x7f, 0x31, 0x5d, 0x54, 0xb9, - 0x21, 0x78, 0xf7, 0x13, - 0x61, 0x9b, 0x4e, 0xe9, 0xd1, 0xa4, 0xae, 0x78, 0x94, 0xc8, 0xc5, 0x11, - 0xf2, 0xc2, 0xfd, 0x24, - 0x56, 0xf2, 0x98, 0x23, 0x2b, 0xfb, 0xb8, 0x92, 0x71, 0xef, 0xad, 0x46, - 0x26, 0xac, 0xa5, 0x0c, - 0x29, 0xfb, 0x94, 0x75, 0xf5, 0x6b, 0xd1, 0x34, 0x1c, 0xe8, 0x42, 0xea, - 0x25, 0x52, 0xc2, 0xc0, - 0x7b, 0xce, 0x7f, 0x9f, 0xdc, 0xbd, 0xb0, 0x5c, 0x24, 0xfb, 0xc6, 0xfd, - 0x6f, 0xf6, 0x85, 0x83, - 0x10, 0x9a, 0x0f, 0xa2, 0x08, 0xb4, 0xe2, 0x6e, 0xe7, 0x76, 0xa4, 0x87, - 0x73, 0x20, 0x0e, 0xff, - 0xff, 0x53, 0x74, 0x0f, 0x9e, 0x79, 0x75, 0x50, 0x59, 0x31, 0x86, 0x1e, - 0x1d, 0x3d, 0x17, 0x38, - 0x5d, 0x7c, 0xca, 0x54, 0xcf, 0xcc, 0xe3, 0x07, 0xa5, 0x95, 0x91, 0xa8, - 0xd3, 0xba, 0x0a, 0x37, - 0x31, 0x2c, 0x7d, 0x86, 0xf9, 0x85, 0x42, 0x6d, 0x69, 0xa5, 0xb4, 0xcf, - 0x8e, 0x62, 0xcb, 0xa1, - 0xb7, 0x33, 0xae, 0x93, 0xba, 0xb6, 0x0a, 0x1c, 0xd1, 0x11, 0x01, 0xe5, - 0xca, 0xad, 0x28, 0xdc, - 0xb3, 0xf4, 0xdd, 0x5a, 0xb8, 0x9b, 0xd3, 0xe6, 0x98, 0xed, 0x28, 0xb4, - 0xa6, 0xa5, 0xca, 0x93, - 0x6b, 0x54, 0x70, 0x3d, 0xd4, 0x09, 0x52, 0x32, 0xc3, 0x8d, 0x62, 0x7a, - 0x1c, 0xd6, 0x8b, 0x7c, - 0xc0, 0x77, 0x44, 0x94, 0x60, 0x7c, 0x12, 0x8d, 0x2e, 0x2d, 0xbc, 0xeb, - 0x11, 0x43, 0x48, 0x8e, - 0x7f, 0x09, 0x0c, 0x56, 0xde, 0x90, 0x69, 0xa6, 0x6d, 0x07, 0xef, 0xac, - 0x03, 0xfe, 0x67, 0xcc, - 0x1e, 0x92, 0x42, 0xbf, 0x0f, 0x34, 0xc7, 0xde, 0xf9, 0xcf, 0x2a, 0xbd, - 0xf1, 0x3c, 0x9a, 0xe8, - 0xd1, 0xac, 0x27, 0x95, 0x89, 0x52, 0x57, 0x3c, 0x4a, 0x64, 0x83, 0xe9, - 0x79, 0x61, 0x9f, 0x12, - 0x78, 0x0d, 0xcb, 0xb9, 0x3c, 0xd0, 0x9a, 0xfe, 0x62, 0xba, 0xa8, 0xb1, - 0x42, 0xf0, 0x2d, 0x26, - 0xc2, 0xf5, 0x9c, 0x11, 0x61, 0x8b, 0x9f, 0xf0, 0xeb, 0x53, 0x49, 0x22, - 0x27, 0x47, 0x39, 0x48, - 0xbb, 0xb9, 0x3b, 0x0b, 0xbc, 0xc1, 0xa2, 0xd1, 0x0a, 0xd6, 0x7a, 0x16, - 0x7e, 0xb5, 0xcd, 0x0d, - 0x6d, 0x11, 0xdb, 0x71, 0xd7, 0xd3, 0x06, 0xb5, 0x4f, 0x0f, 0xbe, 0xe2, - 0x46, 0xda, 0x18, 0xf5, - 0xe1, 0xc1, 0x36, 0xb0, 0x91, 0x4d, 0xb2, 0x8e, 0xa0, 0xfe, 0xac, 0xa3, - 0xec, 0x01, 0x8d, 0xd0, - 0x1f, 0xd3, 0x2e, 0x1c, 0xee, 0xae, 0x60, 0x01, 0x7a, 0xf0, 0xb1, 0x38, - 0xea, 0x3e, 0x43, 0x8b, - 0x82, 0xd8, 0xa0, 0xdc, 0x41, 0x1e, 0x91, 0x8b, 0xf1, 0x48, 0x9c, 0x7b, - 0x28, 0xc7, 0x01, 0x32, - 0xba, 0xf8, 0x57, 0xa8, 0x5d, 0x5b, 0x05, 0x0e, 0x89, 0xe9, 0xe1, 0x93, - 0x65, 0xb7, 0x14, 0x6e, - 0x8c, 0xd0, 0xed, 0xc1, 0x46, 0x9e, 0xb4, 0x3b, 0xef, 0xf1, 0x12, 0x41, - 0xaa, 0xdb, 0x95, 0x25, - 0xcf, 0x3e, 0x65, 0x2a, 0x86, 0x66, 0x90, 0xe2, 0xb3, 0xab, 0xa9, 0x54, - 0x88, 0x5d, 0x05, 0xfa, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0xfe, 0x12, 0x18, 0xac, 0x7f, 0xe3, 0xd2, 0x8f, 0xda, 0x0e, 0x1d, 0x9b, - 0x06, 0x3f, 0xce, 0x5b, - 0x42, 0xaf, 0xe4, 0x48, 0x21, 0x62, 0x83, 0x06, 0xdf, 0x65, 0x20, 0x90, - 0x39, 0x84, 0x49, 0xbc, - 0xd6, 0xa8, 0xe0, 0x7a, 0x6b, 0x12, 0xa4, 0x64, 0x45, 0xd9, 0xc4, 0xf4, - 0x38, 0x6f, 0xd5, 0xf8, - }, - { /* 11 */ - 0xd8, 0x59, 0xe0, 0xf8, 0xd2, 0x2a, 0xca, 0x1c, 0x17, 0x58, 0x25, 0x47, - 0x72, 0xa8, 0x1d, 0x31, - 0x69, 0xb6, 0x74, 0x38, 0x5c, 0x64, 0x10, 0xef, 0x82, 0xee, 0xaa, 0xe9, - 0x8a, 0x53, 0xb7, 0xc0, - 0xc0, 0xd2, 0x41, 0xdb, 0x4a, 0x91, 0xd0, 0xa1, 0x55, 0xac, 0x5e, 0x8f, - 0x3d, 0x01, 0xdf, 0x89, - 0xba, 0xbf, 0xf7, 0x5c, 0x54, 0x08, 0xff, 0xc7, 0x32, 0xa4, 0x91, 0x4e, - 0xac, 0x20, 0xdc, 0x8e, - 0x16, 0xa0, 0xc6, 0xfb, 0x77, 0x8c, 0x4a, 0x68, 0x8d, 0x24, 0x3c, 0x03, - 0xa8, 0x75, 0xec, 0xfe, - 0x87, 0x68, 0xac, 0xfe, 0x5b, 0xa5, 0x09, 0xf4, 0xe0, 0xa0, 0x17, 0xcf, - 0x05, 0xd1, 0x3c, 0x6c, - 0x58, 0xc5, 0x9e, 0x6a, 0x1f, 0x75, 0xeb, 0x63, 0x71, 0x90, 0xf0, 0x0c, - 0xe5, 0x17, 0x36, 0x7e, - 0x59, 0x63, 0xf5, 0x7e, 0xaf, 0xd1, 0x24, 0x56, 0x06, 0xc5, 0x5c, 0xba, - 0x14, 0xc2, 0xf0, 0x73, - 0xc4, 0x0f, 0x2e, 0x8b, 0xcf, 0x44, 0x6a, 0x75, 0x4a, 0x3b, 0xab, 0x12, - 0x7f, 0xd3, 0x41, 0xbd, - 0x6a, 0x9f, 0xc9, 0x04, 0x4f, 0x4b, 0x82, 0xb0, 0x1b, 0x11, 0x9d, 0xf0, - 0x5a, 0xef, 0x3e, 0xd7, - 0x05, 0x7b, 0x04, 0x44, 0x35, 0x71, 0x75, 0xe1, 0x68, 0xc2, 0x59, 0x2b, - 0xb3, 0x07, 0x58, 0x39, - 0x9a, 0x98, 0x09, 0x99, 0xf6, 0x6f, 0x66, 0xa8, 0xca, 0x96, 0x35, 0x2c, - 0xf9, 0x7f, 0xa6, 0xed, - 0x06, 0x52, 0xb9, 0x78, 0x26, 0x5e, 0xe7, 0xbe, 0xf1, 0x3d, 0x6e, 0x32, - 0x63, 0xbb, 0xd1, 0x2e, - 0xa6, 0xe9, 0x39, 0x2f, 0x49, 0x66, 0x5f, 0xae, 0x6f, 0xc7, 0x1f, 0x1b, - 0xa1, 0x5b, 0x80, 0x02, - 0x0d, 0x02, 0xda, 0xe4, 0xfc, 0x18, 0xc2, 0x8a, 0x56, 0x2f, 0x70, 0xd2, - 0x37, 0x60, 0xa7, 0x51, - 0xd1, 0x86, 0x55, 0x4c, 0xab, 0xe7, 0xb2, 0x42, 0x5e, 0xe0, 0xa0, 0x08, - 0x07, 0x1a, 0x24, 0x54, - 0x43, 0x67, 0x82, 0x75, 0x94, 0xe1, 0x63, 0x81, 0xaa, 0x9b, 0xbc, 0xdd, - 0x7a, 0x02, 0x7d, 0xd1, - 0x85, 0xe7, 0x7a, 0xd6, 0xf8, 0x2e, 0x54, 0x9e, 0x0e, 0x0a, 0x8c, 0x60, - 0x24, 0xb8, 0x73, 0x76, - 0x41, 0xe8, 0x54, 0x5d, 0x37, 0x6a, 0x3e, 0xeb, 0x44, 0x31, 0x27, 0x72, - 0x5b, 0x6b, 0x32, 0xcb, - 0xd2, 0xaf, 0xe8, 0x70, 0xb8, 0xc8, 0x20, 0x1d, 0xc7, 0x1f, 0x97, 0x11, - 0xd7, 0xa6, 0xad, 0x43, - 0x2c, 0x83, 0x4f, 0x35, 0xee, 0xdb, 0x94, 0xd0, 0xd9, 0x48, 0x78, 0x06, - 0x93, 0xea, 0x1b, 0x3f, - 0xcd, 0xd0, 0x9b, 0x3f, 0xb6, 0x89, 0x12, 0x2b, 0x03, 0x83, 0x2e, 0x5d, - 0x0a, 0x61, 0x78, 0xd8, - 0x0b, 0x50, 0x63, 0x9c, 0xda, 0x46, 0x25, 0x34, 0xa7, 0x12, 0x1e, 0xe0, - 0x54, 0xdb, 0x76, 0x7f, - 0xa2, 0x34, 0x56, 0x7f, 0xcc, 0xb3, 0xe5, 0x7a, 0x70, 0x50, 0xea, 0x86, - 0xe3, 0x89, 0x1e, 0x36, - 0x38, 0xac, 0x5f, 0xe6, 0x3a, 0xdc, 0x83, 0xd2, 0xba, 0xc6, 0xdf, 0xaa, - 0x1a, 0xf6, 0xb8, 0xdb, - 0xf7, 0xf3, 0x12, 0xf1, 0x2f, 0xde, 0xcc, 0x93, 0x57, 0xef, 0x6a, 0x58, - 0x31, 0xfe, 0x8f, 0x19, - 0x4b, 0x1e, 0x5c, 0xd5, 0x5d, 0x88, 0xd4, 0xea, 0x94, 0x76, 0x95, 0x24, - 0xfe, 0x65, 0x82, 0xb9, - 0xe6, 0xa7, 0x06, 0x66, 0xce, 0xa8, 0xae, 0x70, 0x5c, 0xa3, 0x94, 0xdf, - 0x0b, 0xe5, 0x74, 0xc4, - 0xe7, 0x01, 0x6d, 0x72, 0x7e, 0x0c, 0x61, 0x45, 0x2b, 0xf6, 0x38, 0x69, - 0xfa, 0x30, 0xb2, 0xc9, - 0x90, 0x6e, 0x01, 0x11, 0x9c, 0x8d, 0x8c, 0xa9, 0x1a, 0xd1, 0x87, 0x7a, - 0x5c, 0x71, 0x16, 0x9f, - 0x1a, 0x04, 0x77, 0x0b, 0x3b, 0x30, 0x47, 0xd7, 0xac, 0x5e, 0xe0, 0x67, - 0x6e, 0xc0, 0x8d, 0xa2, - 0x53, 0x95, 0xfd, 0xf6, 0xc5, 0x33, 0xce, 0x57, 0xd6, 0x82, 0xee, 0xec, - 0xb1, 0xcc, 0x40, 0x01, - 0xa3, 0x92, 0x3d, 0x6b, 0x7c, 0x17, 0x2a, 0x4f, 0x07, 0x05, 0x46, 0x30, - 0x12, 0x5c, 0xd8, 0x3b, - 0xf1, 0xa1, 0xab, 0x89, 0x09, 0x80, 0x2b, 0x2d, 0xa6, 0xd2, 0x04, 0x6a, - 0x52, 0x45, 0x5e, 0x37, - 0xfd, 0x05, 0x1a, 0x79, 0x45, 0x3c, 0x26, 0x92, 0x87, 0xa8, 0xd8, 0x0e, - 0x94, 0xf0, 0x3f, 0x6b, - 0x51, 0x1a, 0x2b, 0xde, 0x66, 0xb8, 0x93, 0x3d, 0x38, 0x28, 0x75, 0x43, - 0x90, 0xa5, 0x0f, 0x1b, - 0x29, 0xf8, 0x4b, 0x71, 0xdb, 0xaa, 0xe1, 0x31, 0xb1, 0x8a, 0x21, 0x2d, - 0x20, 0xed, 0x43, 0x06, - 0x3b, 0x85, 0xe2, 0xda, 0x29, 0xf3, 0x11, 0x8d, 0x23, 0x39, 0xe8, 0xb3, - 0xca, 0x4a, 0x31, 0xcc, - 0x82, 0x13, 0xa8, 0xba, 0x6e, 0xd4, 0x7c, 0x15, 0x88, 0x62, 0x4e, 0xe4, - 0xb6, 0xd6, 0x64, 0x55, - 0x67, 0x9d, 0x13, 0xe0, 0xb3, 0x53, 0x40, 0x3a, 0x4d, 0x3e, 0xed, 0x22, - 0x6d, 0x8f, 0x99, 0x86, - 0x8b, 0xcc, 0x1d, 0x0e, 0x17, 0x19, 0x04, 0x4b, 0xc1, 0xda, 0xcb, 0xab, - 0xc3, 0x64, 0x5d, 0x30, - 0x48, 0x37, 0xe1, 0xe9, 0x4e, 0xa7, 0x46, 0xb5, 0x0d, 0x89, 0xa2, 0x3d, - 0x2e, 0xd9, 0x0b, 0xae, - 0x2a, 0xd1, 0xf6, 0x4d, 0xc8, 0x85, 0x73, 0x6e, 0x28, 0x75, 0x16, 0x34, - 0xf0, 0x51, 0xca, 0x11, - 0xef, 0x78, 0xb3, 0xd2, 0xb7, 0x65, 0xd6, 0x2e, 0x15, 0x1b, 0x11, 0x90, - 0x7e, 0x57, 0x4d, 0xa1, - 0x70, 0x9b, 0xbe, 0x0f, 0x74, 0x7b, 0xc5, 0x67, 0xb7, 0x4f, 0x7d, 0x97, - 0x34, 0x2f, 0xb3, 0x75, - 0x2d, 0x25, 0x24, 0x21, 0x5e, 0x7f, 0x5b, 0xe5, 0xae, 0x1d, 0xd4, 0xb0, - 0x62, 0x3f, 0xdd, 0x32, - 0x31, 0x73, 0xea, 0x52, 0x43, 0x11, 0xfb, 0x8c, 0xf3, 0x7e, 0x5a, 0xe5, - 0x6f, 0x44, 0x81, 0xbe, - 0xe2, 0x7a, 0x69, 0x36, 0x4b, 0x7d, 0x14, 0xa4, 0x43, 0x34, 0x61, 0x42, - 0x49, 0x37, 0xea, 0xf0, - 0x86, 0xce, 0xc7, 0xea, 0xeb, 0x01, 0xc6, 0xc1, 0x97, 0xf5, 0xbb, 0x79, - 0xf4, 0x04, 0xfa, 0x61, - 0xc9, 0x0d, 0xf4, 0x6f, 0x33, 0x5c, 0xa8, 0xff, 0x1c, 0x14, 0xdb, 0xc0, - 0x48, 0xb3, 0xe6, 0xec, - 0xb0, 0x49, 0xff, 0xd4, 0x3e, 0xea, 0x15, 0xc6, 0xe2, 0xe3, 0x23, 0x18, - 0x09, 0x2e, 0x6c, 0xfc, - 0x80, 0x9c, 0x7e, 0x92, 0xcd, 0x5f, 0x21, 0x7f, 0x66, 0xc8, 0xd5, 0x4b, - 0x97, 0xbf, 0x2b, 0x4f, - 0xf5, 0x7c, 0xc4, 0xd9, 0x8c, 0x55, 0x91, 0xf9, 0xb9, 0x45, 0xf1, 0xf7, - 0x10, 0x97, 0xc0, 0x03, - 0xfc, 0xa3, 0x71, 0x6d, 0xf5, 0x98, 0xe9, 0xa7, 0xf0, 0xfd, 0x74, 0xb8, - 0x65, 0x25, 0xf9, 0x66, - 0x60, 0x69, 0xc1, 0x8c, 0x25, 0xa9, 0x68, 0xb1, 0xcb, 0x56, 0x2f, 0xa6, - 0xff, 0xe1, 0x8e, 0xa5, - 0x44, 0x93, 0x50, 0x19, 0x02, 0x1b, 0x4b, 0x0a, 0x2c, 0xf3, 0x7e, 0x59, - 0xe8, 0x6c, 0x6a, 0xf2, - 0x0c, 0xa4, 0xb1, 0xf0, 0x4c, 0xbc, 0x0d, 0xbf, 0x21, 0x7a, 0xdc, 0x64, - 0xc6, 0xb5, 0x61, 0x5c, - 0x8f, 0x11, 0x72, 0x5e, 0x92, 0xcc, 0xbe, 0x9f, 0xde, 0x4d, 0x3e, 0x36, - 0x81, 0xb6, 0xc3, 0x04, - 0xa4, 0x66, 0xef, 0x07, 0xea, 0xed, 0x02, 0xc4, 0x81, 0x6d, 0x84, 0xb4, - 0x80, 0x32, 0xcf, 0x18, - 0x3d, 0xd7, 0x5b, 0xa2, 0x0f, 0xad, 0xf6, 0x33, 0xd2, 0x04, 0x86, 0x81, - 0xa9, 0xf1, 0xe0, 0xe2, - 0x62, 0xe6, 0x17, 0xa4, 0x86, 0x22, 0x35, 0xdb, 0x25, 0xfc, 0xb4, 0x09, - 0xde, 0x88, 0xc1, 0xbf, - 0x35, 0xae, 0x85, 0x02, 0xc6, 0xc4, 0x41, 0x58, 0xec, 0xe9, 0xaf, 0x78, - 0x2d, 0x96, 0x1f, 0x8a, - 0xe0, 0xf5, 0xbf, 0x1e, 0xe8, 0xf6, 0x49, 0xce, 0xad, 0x9e, 0xfa, 0xed, - 0x68, 0x5e, 0xa5, 0xea, - 0x68, 0x10, 0x1f, 0x2c, 0xec, 0xc0, 0xdf, 0xda, 0xf5, 0xbb, 0x06, 0x5f, - 0x7b, 0x86, 0x71, 0xcd, - 0xdc, 0x84, 0x8f, 0xa8, 0x57, 0xff, 0x70, 0xc8, 0x08, 0xcf, 0xd0, 0xda, - 0x30, 0x7a, 0x83, 0x05, - 0x40, 0x4e, 0x3f, 0x49, 0x87, 0xce, 0xf1, 0xde, 0x33, 0x64, 0x8b, 0xc4, - 0xaa, 0xbe, 0xf4, 0xc6, - 0xa0, 0xbb, 0x80, 0x57, 0x6f, 0x38, 0xb8, 0x10, 0x9e, 0xfa, 0x71, 0x29, - 0xc2, 0xe0, 0x51, 0x2c, - 0xa7, 0x4f, 0x52, 0x3b, 0xf9, 0xc2, 0x90, 0x9b, 0x18, 0x92, 0xb3, 0xad, - 0x50, 0x8e, 0x46, 0x0f, - 0x9f, 0xe3, 0x0d, 0xdd, 0xc3, 0x1e, 0x13, 0x49, 0xa2, 0x54, 0x6c, 0x07, - 0x4a, 0x78, 0xfe, 0xd4, - 0x2b, 0x77, 0x9d, 0x59, 0x78, 0x21, 0xbc, 0x5b, 0x5f, 0x20, 0xba, 0x82, - 0x01, 0x84, 0x0c, 0x1c, - 0xae, 0x90, 0xe7, 0x8f, 0x80, 0x0f, 0xe8, 0xc5, 0x51, 0x2a, 0x36, 0xe2, - 0x25, 0x3c, 0x7f, 0x6a, - 0x10, 0xf2, 0x7f, 0x83, 0x51, 0xd2, 0xad, 0xd6, 0x7c, 0x19, 0x52, 0x31, - 0xcb, 0xce, 0x3d, 0xd0, - 0xfe, 0x2c, 0xa7, 0x45, 0x56, 0x13, 0xb4, 0xcd, 0x1e, 0x57, 0xef, 0x17, - 0x44, 0x4c, 0xb6, 0x7c, - 0xa1, 0x1d, 0xeb, 0x43, 0xdf, 0x9c, 0x77, 0x25, 0xe9, 0xaf, 0xdd, 0x9f, - 0x33, 0x35, 0x97, 0x21, - 0xc7, 0x26, 0x93, 0xb7, 0xdc, 0x6b, 0xf8, 0x2a, 0xd3, 0xc4, 0x9c, 0x0b, - 0xaf, 0x6f, 0xc8, 0xaa, - 0x4d, 0x4c, 0xe5, 0xad, 0x7b, 0xd6, 0x33, 0x54, 0x65, 0x4b, 0xfb, 0x16, - 0x9d, 0xde, 0x53, 0x97, - 0xaa, 0x4d, 0x88, 0xdf, 0x05, 0xda, 0x52, 0x11, 0x4e, 0xbd, 0xc3, 0x7f, - 0x67, 0xee, 0xe1, 0x5e, - 0xd4, 0xfd, 0x51, 0x08, 0x9e, 0x96, 0xc7, 0xa3, 0x36, 0x22, 0xf9, 0x23, - 0xb4, 0x1d, 0x7c, 0x6d, - 0x42, 0xc1, 0xe9, 0x61, 0x24, 0x45, 0xac, 0xb4, 0xdd, 0xce, 0x10, 0x6b, - 0x8b, 0xd7, 0xbb, 0xdc, - 0x2e, 0x0c, 0x99, 0x1d, 0x4d, 0x50, 0xc9, 0xba, 0x37, 0xe2, 0xe3, 0xa9, - 0xb2, 0x83, 0x54, 0x25, - 0x49, 0x91, 0x8a, 0xfd, 0xfe, 0x03, 0x89, 0x80, 0x7a, 0xdc, 0x0e, 0x8b, - 0xdf, 0x0c, 0xcd, 0xa3, - 0xb2, 0xc6, 0x29, 0xfc, 0x9d, 0x61, 0x48, 0xac, 0x0c, 0x49, 0xb8, 0xb7, - 0x28, 0x47, 0x23, 0xe6, - 0x77, 0x6f, 0x6c, 0x63, 0xe2, 0x81, 0xed, 0xec, 0x31, 0x27, 0xbf, 0x13, - 0xa6, 0x41, 0xa4, 0x56, - 0x39, 0x0a, 0x34, 0xf2, 0x8a, 0x78, 0x4c, 0xe7, 0xcd, 0x93, 0x73, 0x1c, - 0xeb, 0x23, 0x7e, 0xd6, - 0xad, 0xb9, 0x5a, 0xb3, 0x93, 0x20, 0x7a, 0x9a, 0xc8, 0xd5, 0x01, 0xfb, - 0xf5, 0x80, 0xf6, 0x7d, - 0x20, 0x27, 0xfe, 0xc5, 0xa2, 0x67, 0x99, 0x6f, 0xf8, 0x32, 0xa4, 0x62, - 0x55, 0x5f, 0x7a, 0x63, - 0xcf, 0x5f, 0x4d, 0x17, 0x15, 0x02, 0x4f, 0x41, 0xed, 0x29, 0xb5, 0xf2, - 0x2b, 0x08, 0x37, 0xc2, - 0x64, 0xb4, 0xae, 0xdc, 0xa0, 0x7c, 0xd2, 0x65, 0xd4, 0xc1, 0xda, 0x3b, - 0xbd, 0x33, 0x10, 0x91, - 0x9b, 0x3e, 0x62, 0x8d, 0x46, 0xcb, 0xa9, 0x9d, 0xbd, 0xc3, 0x99, 0x9a, - 0x08, 0xaa, 0x60, 0xe0, - 0xde, 0x0b, 0x59, 0x80, 0xf4, 0x74, 0x2d, 0xa2, 0xe6, 0x65, 0x4b, 0x75, - 0x11, 0x13, 0xcc, 0x1f, - 0x7f, 0x16, 0xb2, 0xc3, 0x2b, 0xe8, 0x5a, 0x87, 0x0f, 0xca, 0x96, 0xea, - 0x22, 0x26, 0x5b, 0x3e, - 0xa8, 0xc2, 0x5e, 0xf7, 0xa6, 0x51, 0x0f, 0x7b, 0xa0, 0x17, 0x58, 0xd0, - 0x46, 0x87, 0xae, 0x44, - 0xb6, 0x1b, 0x46, 0xac, 0x18, 0xb4, 0xf2, 0x78, 0x13, 0xde, 0x4d, 0x2a, - 0x6a, 0x95, 0xbd, 0xd2, - 0x5c, 0x18, 0xf1, 0x3a, 0x9a, 0xa0, 0x51, 0xb7, 0x6e, 0x07, 0x05, 0x91, - 0xa7, 0xc5, 0xa8, 0x4a, - 0xa5, 0xc0, 0x84, 0x13, 0x5a, 0x49, 0xcd, 0xf1, 0xf6, 0x38, 0x28, 0x02, - 0x71, 0xe7, 0x09, 0x15, - 0x6b, 0x39, 0xa2, 0x10, 0xff, 0xef, 0x4d, 0x85, 0x6c, 0x44, 0x31, 0x46, - 0xab, 0x3a, 0xf8, 0xda, - 0xd3, 0x09, 0x83, 0x64, 0x08, 0x6c, 0xef, 0x28, 0xb0, 0x4a, 0x3b, 0xa7, - 0x26, 0x73, 0x6b, 0x4e, - 0xf0, 0x07, 0xc0, 0x9d, 0xb9, 0x24, 0xe4, 0x18, 0xd1, 0x87, 0xa8, 0xdc, - 0xa3, 0x90, 0x98, 0x3a, - 0x5d, 0xbe, 0x9a, 0x2e, 0x2a, 0x04, 0x9e, 0x82, 0x19, 0x52, 0xa9, 0x27, - 0x56, 0x10, 0x6e, 0x47, - 0xc8, 0xab, 0x9f, 0x7b, 0x83, 0xf8, 0x67, 0xca, 0x6b, 0x41, 0x77, 0x76, - 0xb9, 0x66, 0x20, 0xe1, - 0xc5, 0xa9, 0x45, 0x9f, 0x7f, 0xe0, 0xa5, 0x40, 0x3d, 0x6e, 0x07, 0xa4, - 0x8e, 0x06, 0x87, 0xb0, - 0xbd, 0x4b, 0x25, 0x30, 0xc2, 0xf2, 0xd7, 0x4c, 0xb4, 0xcc, 0x53, 0xca, - 0x3e, 0x4e, 0xcb, 0xad, - 0xc3, 0xfb, 0xfc, 0xe7, 0x59, 0xbe, 0x42, 0xfe, 0xcc, 0x53, 0x69, 0x96, - 0xed, 0xbd, 0x56, 0x9e, - 0xe4, 0x28, 0xd0, 0x4e, 0x6d, 0x23, 0xf3, 0x1a, 0xb2, 0x09, 0x0f, 0x70, - 0x2a, 0x8c, 0x3b, 0xde, - 0xaf, 0x36, 0x8c, 0x9b, 0x30, 0xab, 0x27, 0xf0, 0x26, 0x7f, 0x9a, 0x54, - 0xd4, 0xe9, 0xb9, 0x67, - 0xb8, 0x30, 0x21, 0x74, 0xf7, 0x83, 0xa2, 0xad, 0xdc, 0x0e, 0x0a, 0xe1, - 0x8d, 0x49, 0x93, 0x94, - 0xcb, 0x82, 0x22, 0x47, 0x90, 0xd7, 0xf5, 0x95, 0xf2, 0xbe, 0x40, 0x6f, - 0x69, 0xda, 0xa9, 0xf6, - 0xc1, 0x74, 0x2a, 0xcf, 0xfa, 0x35, 0x1f, 0x94, 0x22, 0xf9, 0xf2, 0x39, - 0xcc, 0xd4, 0x19, 0x84, - 0xb5, 0x32, 0xfb, 0x90, 0x0b, 0x9b, 0x60, 0x27, 0x8a, 0x21, 0x7a, 0x33, - 0xba, 0x29, 0x34, 0xc5, - 0x6f, 0xe4, 0xcd, 0x40, 0x7a, 0x3a, 0xf7, 0x51, 0x73, 0xd3, 0xc4, 0xdb, - 0xe9, 0xe8, 0x66, 0xee, - 0x4c, 0xea, 0x8e, 0xb9, 0xcb, 0x72, 0xfc, 0x61, 0x12, 0x1e, 0x57, 0xa0, - 0x6c, 0x0b, 0x95, 0x9a, - 0x97, 0x9a, 0xd3, 0x7d, 0x0a, 0x77, 0xa4, 0x22, 0x9c, 0xb9, 0x45, 0xfe, - 0xce, 0x1f, 0x01, 0xbc, - 0x88, 0xe5, 0xa0, 0x32, 0x04, 0x36, 0x96, 0x14, 0x58, 0x25, 0xfc, 0xb2, - 0x13, 0xd8, 0xd4, 0x27, - 0x61, 0xcf, 0xaa, 0x98, 0x95, 0x0d, 0xa7, 0x84, 0xbc, 0x03, 0x83, 0x10, - 0x0e, 0x34, 0x48, 0xa8, - 0x57, 0x48, 0x92, 0xa6, 0x40, 0xe6, 0x74, 0x83, 0xc9, 0x15, 0x1b, 0x71, - 0xf3, 0x1e, 0xde, 0x35, - 0x11, 0x54, 0x14, 0x97, 0xe1, 0x76, 0x62, 0xe3, 0x0b, 0x4c, 0xfe, 0x87, - 0x3a, 0x1b, 0xfb, 0xdd, - 0x99, 0xb1, 0xb4, 0xa5, 0xe5, 0x40, 0xf4, 0xf7, 0x53, 0x69, 0x02, 0x35, - 0x29, 0xc3, 0x2f, 0xfa, - 0x72, 0x14, 0x68, 0x27, 0xd7, 0xf0, 0x98, 0x0d, 0x59, 0xe5, 0xe6, 0x38, - 0x15, 0x46, 0xfc, 0x6f, - 0x83, 0xb5, 0xc3, 0xae, 0xde, 0x70, 0xb3, 0x20, 0xff, 0x37, 0xe2, 0x52, - 0x47, 0x03, 0xa2, 0x58, - 0xbf, 0xc4, 0xf3, 0x18, 0x61, 0x79, 0x8a, 0x26, 0x5a, 0x66, 0xc8, 0x65, - 0x1f, 0x27, 0x84, 0xb7, - 0x55, 0xc7, 0x44, 0x8e, 0xe3, 0x6d, 0x29, 0xe9, 0x27, 0xbf, 0x80, 0xde, - 0xd2, 0x77, 0x91, 0x2f, - 0x73, 0xb2, 0x03, 0x33, 0x67, 0x54, 0x57, 0x38, 0x2e, 0xb0, 0x4a, 0x8e, - 0xe4, 0x93, 0x3a, 0x62, - 0x9d, 0x6c, 0xdb, 0xf5, 0x60, 0x95, 0x4e, 0x23, 0x4c, 0xfe, 0xf7, 0xa8, - 0x6b, 0x11, 0xb1, 0xce, - 0x81, 0x3a, 0x15, 0x86, 0x7d, 0xfb, 0xee, 0x4a, 0x11, 0x9d, 0x79, 0xfd, - 0x66, 0x6a, 0xed, 0x42, - 0x3f, 0x58, 0x8d, 0x8a, 0xac, 0x26, 0xab, 0x59, 0x3c, 0xae, 0x1d, 0x2e, - 0x88, 0x98, 0xaf, 0xf8, - 0xb3, 0x60, 0x42, 0xe8, 0x2d, 0xc5, 0x87, 0x99, 0x7b, 0x1c, 0x14, 0x01, - 0xd9, 0x92, 0xe5, 0xeb, - 0xbb, 0x19, 0x9c, 0x48, 0xe4, 0xac, 0x30, 0xf2, 0x45, 0xf1, 0x3d, 0xf8, - 0x5d, 0xf5, 0x1a, 0x83, - 0xd6, 0x72, 0x87, 0x20, 0x3d, 0x1d, 0x9a, 0xc9, 0xd8, 0x88, 0x62, 0x8c, - 0x95, 0x74, 0x33, 0x77, - 0xea, 0x03, 0xb7, 0x96, 0x82, 0x14, 0xa3, 0xcf, 0x7d, 0xd9, 0x48, 0xbb, - 0xcd, 0x50, 0x15, 0x98, - 0x25, 0x5c, 0xfa, 0x81, 0x97, 0x16, 0xec, 0x8e, 0x90, 0xf0, 0xfd, 0x49, - 0xe6, 0x58, 0x22, 0x5a, - 0xce, 0xf9, 0x26, 0x03, 0xa5, 0xa6, 0x80, 0x74, 0x9a, 0x7c, 0x19, 0x44, - 0xda, 0xdd, 0xf1, 0xcf, - 0x63, 0x40, 0x7c, 0xb0, 0x36, 0x86, 0xfa, 0xee, 0x52, 0xa9, 0x18, 0xbf, - 0x2f, 0x5d, 0x07, 0xb2, - 0x45, 0x35, 0x3b, 0x0d, 0xb2, 0xbf, 0x84, 0x3f, 0x5b, 0xa6, 0xd2, 0xef, - 0x19, 0xb9, 0xac, 0xff, - 0x32, 0x5a, 0x57, 0x6e, 0x50, 0x3e, 0x69, 0xd3, 0x6a, 0x81, 0x6d, 0xfc, - 0xbf, 0xf8, 0x08, 0xa9, - 0xd7, 0xd4, 0xec, 0x34, 0x8d, 0xb9, 0x55, 0xfc, 0xaf, 0xdd, 0xce, 0x3a, - 0x64, 0xa1, 0xf5, 0x7a, - 0x9e, 0x45, 0x66, 0xc9, 0x73, 0xba, 0xdc, 0x7c, 0xd5, 0x01, 0xc0, 0xb1, - 0xbb, 0xad, 0x38, 0xd9, - 0x08, 0x79, 0xde, 0xa0, 0xc9, 0x69, 0xb7, 0x6b, 0x3e, 0xed, 0x29, 0xf9, - 0x84, 0x67, 0xff, 0x68, - 0x8d, 0x9e, 0xa4, 0x76, 0x31, 0x47, 0xe3, 0xf5, 0x30, 0xe7, 0xa5, 0x99, - 0xa0, 0xdf, 0x8c, 0x1e, - 0x79, 0x44, 0x0b, 0xbb, 0x0d, 0xb6, 0xbd, 0x39, 0xfe, 0xf7, 0xf8, 0xd8, - 0x41, 0x9d, 0x8a, 0x10, - 0xab, 0xeb, 0xe3, 0xcb, 0xb5, 0x7e, 0x9d, 0x24, 0x39, 0xe8, 0x6f, 0xc9, - 0x96, 0x3b, 0x27, 0x53, - 0x36, 0x87, 0x38, 0x3e, 0xd5, 0xeb, 0xd3, 0x07, 0x75, 0x16, 0x98, 0x61, - 0xfd, 0x2a, 0x96, 0x9d, - 0xfb, 0x57, 0xa3, 0x01, 0x63, 0x62, 0xc1, 0x2c, 0x76, 0x95, 0xb6, 0x3c, - 0xf7, 0x4b, 0xee, 0x45, - 0xec, 0x51, 0x0e, 0xee, 0xa4, 0x4a, 0x44, 0x71, 0x8c, 0xe4, 0x26, 0x89, - 0xae, 0xeb, 0xc4, 0xb6, - 0x4e, 0x65, 0x58, 0x91, 0x68, 0xf9, 0xa1, 0x0b, 0xfc, 0xb4, 0xcc, 0x0f, - 0x4d, 0x62, 0xda, 0x80, - 0x7e, 0xb0, 0xd9, 0xd7, 0x9b, 0x4c, 0x95, 0xb2, 0x78, 0x9f, 0x3a, 0x5c, - 0xd3, 0xf3, 0x9d, 0x33, - 0xd0, 0x20, 0x3e, 0x58, 0x1b, 0x43, 0x7d, 0x77, 0x29, 0xb5, 0x0c, 0xbe, - 0xf6, 0xcf, 0xe2, 0x59, - 0x6c, 0xcd, 0x70, 0x7c, 0x69, 0x15, 0x65, 0x0e, 0xea, 0x2c, 0xf3, 0xc2, - 0x39, 0x54, 0xef, 0xf9, - 0xf3, 0x2e, 0x7d, 0xa1, 0xaa, 0x0b, 0x76, 0x47, 0x48, 0x78, 0x9f, 0xc5, - 0x73, 0x2c, 0x11, 0x2d, - 0x5f, 0x31, 0x4c, 0x06, 0x89, 0x8f, 0xc3, 0xe8, 0xf7, 0xf8, 0x32, 0x88, - 0x77, 0x79, 0x21, 0x5d, - 0xff, 0x8a, 0xcc, 0x51, 0xe6, 0xb7, 0x7b, 0xf8, 0x69, 0x02, 0x43, 0xa1, - 0xb5, 0x99, 0x70, 0x71, - 0x8a, 0x6a, 0x76, 0x1a, 0xa7, 0xbd, 0xcb, 0x7e, 0xb6, 0x8f, 0x67, 0x1d, - 0x32, 0xb1, 0x9b, 0x3d, - 0x56, 0xee, 0xf9, 0xb2, 0xf0, 0x42, 0xbb, 0xb6, 0xbe, 0x40, 0xb7, 0xc7, - 0x02, 0xcb, 0x18, 0x38, - 0xdd, 0x22, 0xe4, 0xbc, 0xe7, 0x5b, 0xbf, 0xfd, 0x7f, 0x9a, 0x7c, 0x6c, - 0xc1, 0xaf, 0x45, 0x08, - 0xb4, 0x94, 0x90, 0x84, 0xbb, 0x3f, 0xaf, 0x12, 0xfd, 0x74, 0xd6, 0x85, - 0x4b, 0xfc, 0xf2, 0xc8, - 0x04, 0xdd, 0x6f, 0x50, 0x85, 0xd5, 0xba, 0xd4, 0x1f, 0x97, 0xf5, 0x9d, - 0x42, 0xd2, 0x9e, 0x34, - 0xbe, 0x62, 0x98, 0x0c, 0xd1, 0xdd, 0x45, 0x13, 0x2d, 0x33, 0x64, 0xd3, - 0xee, 0xf2, 0x42, 0xba, - 0x1b, 0xa2, 0x1c, 0x1f, 0x8b, 0x94, 0x88, 0xe2, 0xdb, 0x0b, 0x4c, 0xd1, - 0x9f, 0x15, 0x4b, 0xaf, - 0x9c, 0xca, 0xb0, 0xe1, 0xd0, 0x31, 0x81, 0x16, 0x3b, 0xab, 0x5b, 0x1e, - 0x9a, 0xc4, 0x77, 0xc3, - 0x5e, 0x97, 0x27, 0x12, 0x39, 0x2b, 0x0c, 0xdd, 0x80, 0xad, 0x9e, 0x3e, - 0x86, 0xac, 0xe7, 0x50, - 0x07, 0xf4, 0xd2, 0x6c, 0x96, 0xfa, 0x28, 0x8b, 0x86, 0x68, 0xc2, 0x84, - 0x92, 0x6e, 0x17, 0x23, - 0x8c, 0x38, 0xcf, 0x62, 0x81, 0xe3, 0x2c, 0xc0, 0x47, 0xb2, 0x09, 0x2f, - 0x51, 0x0a, 0x4a, 0x13, - 0x0f, 0x8d, 0x0c, 0xcc, 0x5f, 0x93, 0x9f, 0xe0, 0xb8, 0x85, 0xeb, 0x7d, - 0x16, 0x09, 0xe8, 0x4b, - 0x6d, 0x6b, 0x1b, 0x68, 0xd9, 0xb1, 0xaa, 0x3b, 0x9d, 0x79, 0x5f, 0x74, - 0xc8, 0x81, 0x29, 0xf4, - 0xf4, 0xda, 0xaf, 0xcd, 0x3c, 0xf1, 0x5e, 0xcc, 0xce, 0x10, 0x5d, 0x41, - 0xe1, 0x42, 0x06, 0x0e, - 0x26, 0x75, 0x47, 0xbd, 0x84, 0x39, 0x7e, 0xd1, 0x09, 0x0f, 0xca, 0x50, - 0x36, 0xe4, 0xab, 0x4d, - 0x71, 0x3d, 0xd5, 0x1b, 0xc4, 0xdf, 0x0a, 0x52, 0xc0, 0x1a, 0xd1, 0x21, - 0xc5, 0xfa, 0x75, 0x78, - 0x1c, 0x56, 0xce, 0x73, 0x1d, 0x6e, 0xa0, 0x69, 0x5d, 0x63, 0x8e, 0x55, - 0x0d, 0x7b, 0x5c, 0x8c, - 0x94, 0xb3, 0x6e, 0x41, 0x19, 0x58, 0x36, 0x7d, 0x05, 0x46, 0x72, 0xe7, - 0x1e, 0xa3, 0x88, 0xab, - 0x22, 0xa8, 0x28, 0xed, 0x01, 0xec, 0xc4, 0x05, 0x16, 0x98, 0x3f, 0xcd, - 0x74, 0x36, 0x35, 0x79, - 0xeb, 0xa5, 0xdc, 0x82, 0x32, 0xb0, 0x6c, 0xfa, 0x0a, 0x8c, 0xe4, 0x0d, - 0x3c, 0x85, 0xd3, 0x95, - 0xbc, 0xed, 0x4e, 0x24, 0x72, 0x56, 0x18, 0x79, 0xc3, 0x99, 0xff, 0x7c, - 0xcf, 0x9b, 0x0d, 0xa0, - 0x3c, 0x71, 0x30, 0xb6, 0xbf, 0x09, 0x39, 0x06, 0xa5, 0x51, 0x2a, 0x37, - 0x58, 0x24, 0x26, 0xef, - 0x15, 0x89, 0x7b, 0xc7, 0x64, 0xa3, 0xd8, 0x37, 0x14, 0xdb, 0x0b, 0x1a, - 0x78, 0xc9, 0x65, 0xe9, - 0xe9, 0x2a, 0x0a, 0xaa, 0x91, 0x3b, 0x31, 0x90, 0xe4, 0x26, 0x7f, 0xa2, - 0x1d, 0xec, 0x9c, 0x8f, - 0x02, 0x8f, 0xd6, 0x28, 0xa3, 0x8b, 0x5d, 0x6a, 0xee, 0xaa, 0x9b, 0xaf, - 0x21, 0x69, 0x4f, 0x1a, - 0x46, 0x1c, 0x86, 0x31, 0xa1, 0x90, 0x16, 0x60, 0xc2, 0x59, 0xe5, 0xf6, - 0xc9, 0x05, 0x25, 0xe8, - 0xda, 0xd6, 0x36, 0xd0, 0x71, 0xa1, 0x97, 0x76, 0xf9, 0xf2, 0xbe, 0xe8, - 0x53, 0xc1, 0x52, 0x2b, - 0x19, 0x2d, 0xca, 0x37, 0x28, 0x1f, 0xd5, 0x88, 0x35, 0xa1, 0xd7, 0x7e, - 0xbe, 0x7c, 0x04, 0xb5, - 0xdb, 0x70, 0x5d, 0xc4, 0xc1, 0x05, 0x58, 0x43, 0x8e, 0xa7, 0x12, 0x5e, - 0xa2, 0x14, 0x94, 0x26, - 0x1e, 0xd9, 0x18, 0x5b, 0xbe, 0xe5, 0xfd, 0x03, 0xb3, 0xc9, 0x15, 0xfa, - 0x2c, 0x12, 0x13, 0x96, - 0x17, 0x06, 0xad, 0xef, 0xc7, 0x28, 0x85, 0x5d, 0xfa, 0x71, 0x90, 0xb5, - 0x59, 0xa0, 0x2a, 0xf3, - 0x4a, 0xb8, 0x37, 0xc1, 0xed, 0x2c, 0x1b, 0xdf, 0xe3, 0x23, 0x39, 0x92, - 0x0f, 0xb0, 0x44, 0xb4, - 0x0a, 0xf6, 0x08, 0x88, 0x6a, 0xe2, 0xea, 0x01, 0xd0, 0x47, 0xb2, 0x56, - 0xa5, 0x0e, 0xb0, 0x72, - 0xd9, 0xff, 0x8b, 0xec, 0x62, 0x8e, 0x05, 0x29, 0x60, 0x0d, 0x89, 0xf1, - 0x83, 0x7d, 0xdb, 0x3c, - 0x89, 0x43, 0xcb, 0x26, 0xb4, 0x92, 0x59, 0x21, 0x2f, 0x70, 0x50, 0x04, - 0xe2, 0x0d, 0x12, 0x2a, - 0x78, 0xe2, 0x60, 0xaf, 0xbd, 0x12, 0x72, 0x0c, 0x89, 0xa2, 0x54, 0x6e, - 0xb0, 0x48, 0x4c, 0x1d, - 0x76, 0xc9, 0x07, 0x77, 0x52, 0x25, 0x22, 0xd9, 0x46, 0x72, 0x13, 0xa5, - 0x57, 0x94, 0x62, 0x5b, - 0x27, 0xd3, 0x2c, 0xa9, 0x34, 0x9d, 0xb1, 0xe4, 0x7e, 0x5a, 0x66, 0xe6, - 0xc7, 0x31, 0x6d, 0x40, - 0x18, 0x8b, 0xa1, 0x23, 0x98, 0xbb, 0x1a, 0xbd, 0x42, 0xf4, 0x7b, 0xc8, - 0x4f, 0xa9, 0xc2, 0xb8, - 0x23, 0x0e, 0x43, 0xf9, 0xb1, 0x48, 0x0b, 0x30, 0x61, 0xcd, 0x93, 0x7b, - 0x85, 0xe3, 0xf3, 0x74, - 0xf2, 0x88, 0x16, 0xb5, 0x1a, 0xaf, 0xb9, 0x72, 0x3f, 0x2d, 0x33, 0x73, - 0x82, 0xf9, 0xd7, 0x20, - 0x95, 0x15, 0x05, 0x55, 0xa9, 0xfc, 0xf9, 0x48, 0x72, 0x13, 0xde, 0x51, - 0xef, 0x76, 0x4e, 0xa6, - 0xd5, 0x5b, 0x3a, 0x1c, 0x2e, 0x32, 0x08, 0x96, 0x41, 0x77, 0x55, 0x95, - 0x45, 0xc8, 0xba, 0x60, - 0xa9, 0x64, 0x35, 0xe3, 0x16, 0xf5, 0xc0, 0x4e, 0xd7, 0x42, 0xf4, 0x66, - 0xb7, 0x52, 0x68, 0x49, - 0x84, 0x41, 0x11, 0xc2, 0x48, 0x8a, 0x9b, 0xab, 0x79, 0x5f, 0x20, 0xd6, - 0xd5, 0x6d, 0xb5, 0x7b, - 0xe1, 0x53, 0xd4, 0x0a, 0x58, 0x52, 0x86, 0xfb, 0xda, 0xcb, 0x56, 0x5b, - 0x99, 0x8b, 0x63, 0xe7, - 0x1d, 0xf0, 0xa5, 0x67, 0xad, 0xca, 0x6f, 0x5c, 0x2a, 0x36, 0x22, 0xe3, - 0xfc, 0xae, 0x9a, 0x81, - 0x93, 0x47, 0xbc, 0x2d, 0x8f, 0xa2, 0x1e, 0xf6, 0x83, 0x2e, 0xb0, 0x63, - 0x8c, 0xcd, 0x9f, 0x88, - 0x28, 0x5e, 0x20, 0x65, 0x6b, 0x0e, 0x2e, 0x04, 0xc6, 0xdf, 0x8d, 0x9b, - 0xd1, 0x38, 0x85, 0x0b, - 0xc6, 0x80, 0xf8, 0xa3, 0x6c, 0xcf, 0x37, 0x1f, 0xa4, 0x91, 0x30, 0xbd, - 0x5e, 0xba, 0x0e, 0xa7, - 0x7b, 0xcb, 0xdd, 0x93, 0xae, 0x3d, 0xe0, 0x53, 0x10, 0x5d, 0x63, 0x77, - 0x60, 0xf4, 0xc5, 0x0a, - 0x65, 0x12, 0xc5, 0xc8, 0x10, 0xd8, 0x1d, 0x50, 0xa3, 0x94, 0x76, 0x8d, - 0x4c, 0xe6, 0xd6, 0x9c, - 0x75, 0xe0, 0xba, 0x4b, 0x41, 0x0a, 0xb0, 0x86, 0xdf, 0x8d, 0x24, 0xbc, - 0x87, 0x28, 0xeb, 0x4c, - 0x7c, 0x3f, 0x0f, 0xff, 0x38, 0xc7, 0xc8, 0xd8, 0x96, 0x35, 0xa1, 0xf3, - 0xf2, 0x9a, 0xd2, 0x29, - 0xe3, 0xdc, 0x02, 0x22, 0xfb, 0xd9, 0xdb, 0x91, 0x34, 0x61, 0xcd, 0xf4, - 0xb8, 0xe2, 0x2c, 0xfd, - 0xee, 0xde, 0xd8, 0xc6, 0x07, 0xc1, 0x19, 0x1b, 0x62, 0x4e, 0xbd, 0x26, - 0x8f, 0x82, 0x8b, 0xac, - 0x21, 0x81, 0x95, 0xd1, 0x12, 0xc3, 0x56, 0x5a, 0x8f, 0x67, 0x08, 0xd4, - 0xa4, 0x8a, 0xbc, 0x6e, - 0x8e, 0xb7, 0x19, 0x4a, 0x22, 0x68, 0x71, 0xaa, 0xa9, 0x18, 0x92, 0x80, - 0x70, 0x63, 0x05, 0x09, - 0xf9, 0xd8, 0x75, 0x29, 0xc0, 0xe9, 0x9c, 0x46, 0x98, 0x3f, 0x2d, 0x93, - 0xd6, 0x22, 0xa1, 0x5f, - 0x01, 0xa6, 0x6b, 0x14, 0xb0, 0xa4, 0xcf, 0x35, 0x77, 0x55, 0xac, 0xb6, - 0xf1, 0xd5, 0xc6, 0x0d, - 0x5b, 0xec, 0x23, 0x56, 0x0c, 0x5a, 0x79, 0x3c, 0xe8, 0x6f, 0xc7, 0x15, - 0x35, 0xab, 0xbf, 0x69, - 0x91, 0xc8, 0x6a, 0x05, 0x2c, 0x29, 0x43, 0x9c, 0x6d, 0x84, 0x2b, 0xcc, - 0xad, 0xa4, 0xd0, 0x92, - 0x14, 0x2f, 0x10, 0xd3, 0xd4, 0x07, 0x17, 0x02, 0x63, 0x8e, 0xa7, 0xac, - 0x89, 0x1c, 0xa3, 0xe4, - 0x7a, 0x6d, 0xb6, 0x87, 0x1e, 0x99, 0x2f, 0x66, 0x67, 0x08, 0xcf, 0xc1, - 0x91, 0x21, 0x03, 0x07, - 0xf6, 0x55, 0x79, 0xe5, 0x9f, 0x7a, 0x03, 0xa6, 0x20, 0xba, 0xc6, 0xee, - 0xc0, 0x2b, 0x49, 0x14, - 0xb1, 0xef, 0x94, 0xc0, 0x8e, 0x4e, 0xda, 0xf3, 0x95, 0xb6, 0x8f, 0xae, - 0xf8, 0xfb, 0xaa, 0xf1, - 0xb7, 0xbd, 0x2d, 0xb8, 0xa8, 0x10, 0x3d, 0x4d, 0x64, 0x8b, 0xe1, 0x9c, - 0x9b, 0x40, 0x7b, 0xdf, - 0xca, 0x24, 0x49, 0x53, 0x20, 0x73, 0x3a, 0xa0, 0x85, 0xeb, 0xec, 0xd9, - 0x98, 0x0f, 0x6f, 0xfb, - 0x5a, 0x4a, 0x48, 0x42, 0xbc, 0xfe, 0xb6, 0x09, 0x9f, 0x3a, 0x6b, 0xa3, - 0xc4, 0x7e, 0x79, 0x64, - 0xf8, 0x7e, 0x1e, 0x3d, 0x70, 0x4d, 0x53, 0x73, 0xef, 0x6a, 0x81, 0x25, - 0x27, 0xf7, 0x67, 0x52, - 0xcc, 0x76, 0xf0, 0x2b, 0x06, 0x2d, 0xdd, 0x1e, 0x74, 0xd6, 0x82, 0xeb, - 0xfb, 0xb4, 0xbe, 0xd5, - 0x47, 0xba, 0xed, 0x25, 0x11, 0x34, 0xd9, 0x55, 0xb5, 0x0c, 0x49, 0x40, - 0x38, 0xd0, 0xe3, 0xe5, - 0x96, 0x3c, 0xb8, 0x69, 0xba, 0xd3, 0x6b, 0x17, 0xeb, 0xec, 0xe9, 0x48, - 0x3f, 0xca, 0xc7, 0xb1, - 0x6e, 0x42, 0xa6, 0x54, 0xca, 0x9e, 0x38, 0x64, 0x04, 0x86, 0x68, 0x6d, - 0x18, 0x3d, 0xa0, 0xe3, - 0x13, 0xdb, 0xc2, 0xbf, 0x42, 0xfd, 0x3f, 0x89, 0xe5, 0xe6, 0x65, 0x28, - 0x1b, 0x72, 0xb4, 0xc7, - 0x24, 0xfa, 0x91, 0x95, 0x27, 0xb2, 0x23, 0xbb, 0xe7, 0xa5, 0x51, 0xff, - 0x17, 0x8d, 0xe4, 0x57, - 0x74, 0x46, 0xd1, 0x5f, 0xf1, 0xae, 0x7f, 0xb3, 0xa8, 0xd8, 0x88, 0x0a, - 0x76, 0xfd, 0x2d, 0x41, - 0x09, 0xdf, 0xb5, 0xb4, 0x79, 0xcd, 0x78, 0x5e, 0x49, 0xb8, 0x85, 0x4f, - 0x75, 0xb2, 0x39, 0x65, - 0x03, 0x29, 0xbd, 0x3c, 0x13, 0x2f, 0x92, 0x5f, 0x99, 0xff, 0x37, 0x19, - 0xd0, 0xbc, 0x89, 0x17, - 0x30, 0xd5, 0x81, 0x46, 0xf3, 0xb5, 0x34, 0xb9, 0x84, 0x2b, 0xf6, 0x53, - 0x9e, 0x91, 0x47, 0xb3, - 0x50, 0xbc, 0x40, 0xca, 0xd6, 0x1c, 0x5c, 0x08, 0x4f, 0x7d, 0xd9, 0xf5, - 0x61, 0x70, 0xc9, 0x16, - 0x4f, 0xc3, 0x33, 0x85, 0xd8, 0x5d, 0x6e, 0x3e, 0x8b, 0xe1, 0x60, 0xb9, - 0xbc, 0xb7, 0x1c, 0x8d, - 0x0e, 0x2b, 0x67, 0xd8, 0xef, 0x37, 0x50, 0xd5, 0xcf, 0xd0, 0x47, 0xcb, - 0xe7, 0xdc, 0x2e, 0x46, - 0x7d, 0x99, 0x64, 0xeb, 0x88, 0x63, 0x07, 0xed, 0xe1, 0x60, 0x0d, 0x45, - 0x03, 0x4f, 0x14, 0x24, - 0xb9, 0x96, 0x4a, 0x60, 0x47, 0x27, 0x6d, 0x98, 0xab, 0x5b, 0xa6, 0x57, - 0x7c, 0x9c, 0x55, 0x99, - 0x37, 0x21, 0x53, 0x2a, 0x65, 0x4f, 0x1c, 0x32, 0x02, 0x43, 0x34, 0xd7, - 0x0c, 0xff, 0x50, 0x90, - 0x54, 0x61, 0x2f, 0x9a, 0x53, 0xc9, 0xe6, 0xdc, 0x50, 0xea, 0x2c, 0x68, - 0x23, 0xa2, 0x57, 0x22, - 0x1f, 0x7f, 0x73, 0x4f, 0x0e, 0x41, 0x32, 0x36, 0xc4, 0x9c, 0xb9, 0x4c, - 0xdd, 0xc7, 0xd5, 0x9b, - 0xc2, 0x5d, 0x97, 0xf3, 0xe9, 0x1a, 0x8d, 0xcb, 0xbb, 0x06, 0xc5, 0x20, - 0x1c, 0x68, 0x90, 0x93, - 0x33, 0xfc, 0x3c, 0x7a, 0xe0, 0x9a, 0xa6, 0xe6, 0x1d, 0xd4, 0xc1, 0x4a, - 0x4e, 0x2d, 0xce, 0xa4, - 0x3a, 0x23, 0x89, 0xce, 0x99, 0x57, 0xde, 0xb8, 0x54, 0x6c, 0x44, 0x05, - 0x3b, 0x9f, 0xf7, 0xc1, - 0xe5, 0x8e, 0xbb, 0x5a, 0xdd, 0x87, 0x3c, 0x2f, 0xc5, 0x5c, 0xa3, 0xc6, - 0xdb, 0x59, 0xfd, 0xd3, - 0xe8, 0x8c, 0x61, 0xbe, 0x21, 0x9f, 0xfe, 0xa5, 0x93, 0x73, 0xd3, 0x14, - 0xec, 0x39, 0x5a, 0x82, - 0x12, 0x7d, 0xa9, 0xab, 0xf2, 0x59, 0xf0, 0xbc, 0x92, 0xb3, 0xc9, 0x9e, - 0xea, 0xa7, 0x72, 0xca, - 0x92, 0xe1, 0xd7, 0x39, 0x3f, 0x06, 0xd1, 0xc3, 0xf4, 0x7b, 0x1c, 0xd5, - 0x7d, 0x18, 0x59, 0x85, - 0xac, 0x1f, 0x31, 0xa7, 0x23, 0x84, 0xb5, 0xaf, 0xbf, 0x80, 0xad, 0x4d, - 0x04, 0x55, 0x30, 0x70, - 0x34, 0x08, 0xee, 0x16, 0x76, 0x60, 0x8e, 0x6d, 0x9b, 0xbc, 0x03, 0xce, - 0xdc, 0x43, 0xd9, 0x87, - 0x52, 0x33, 0x96, 0xe2, 0x75, 0x97, 0x01, 0x62, 0xa1, 0xd7, 0x42, 0x5a, - 0x40, 0x19, 0x86, 0x0c, - 0xed, 0xf7, 0x65, 0xfa, 0x14, 0xee, 0x8b, 0x44, 0xfb, 0xb1, 0x8a, 0x3f, - 0x5f, 0x3e, 0x02, 0xbb, - 0xfa, 0xf1, 0xc8, 0x15, 0xd3, 0xc6, 0x0e, 0x19, 0x01, 0xc0, 0x1a, 0x8a, - 0x06, 0x9e, 0x28, 0x48, - 0x98, 0x17, 0xdf, 0xb1, 0x55, 0xe4, 0x3b, 0xc2, 0x24, 0x3c, 0xae, 0x83, - 0xd8, 0x16, 0xe9, 0xf7, - 0xdf, 0xad, 0x32, 0x94, 0x44, 0xd0, 0xe2, 0x97, 0x91, 0x30, 0xe7, 0xc3, - 0xe0, 0xc6, 0x0a, 0x12, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x66, 0x3b, 0x78, 0xf4, 0x03, 0xf7, 0x8f, 0x0f, 0x3a, 0x6b, 0x41, 0x94, - 0x9c, 0x5a, 0x5f, 0x8b, - 0x2f, 0xaa, 0xf2, 0x09, 0xfd, 0xf4, 0x06, 0x8f, 0x40, 0xb7, 0x4f, 0x1f, - 0x43, 0x56, 0x92, 0x28, - 0x3e, 0xfe, 0xe6, 0x9e, 0x1c, 0x82, 0x64, 0x6c, 0x4b, 0xfb, 0xb1, 0x98, - 0x79, 0x4d, 0x69, 0xf5, - }, - { /* 12 */ - 0xc2, 0x45, 0xb9, 0x57, 0x85, 0xa8, 0xdb, 0x13, 0x2a, 0x3f, 0xb0, 0xb9, - 0xb0, 0x0b, 0x7b, 0xc6, - 0x95, 0x59, 0xc2, 0x20, 0x7c, 0x53, 0x81, 0x21, 0x64, 0x56, 0x1f, 0xc2, - 0x1f, 0x6d, 0x57, 0x36, - 0xa6, 0x73, 0x93, 0x63, 0x29, 0x01, 0x42, 0x6e, 0x91, 0x38, 0x9b, 0x93, - 0x9b, 0xf4, 0x35, 0x9d, - 0x27, 0x78, 0x48, 0x3d, 0x69, 0x20, 0x97, 0x5e, 0x08, 0x0c, 0x8b, 0x48, - 0x8b, 0xf5, 0x6f, 0x4b, - 0xe0, 0xc8, 0x66, 0x94, 0xe3, 0x75, 0x59, 0xd8, 0x8c, 0xca, 0x48, 0x66, - 0x48, 0xe5, 0x86, 0xb5, - 0x86, 0x9c, 0xc4, 0x12, 0x49, 0xd1, 0x1c, 0x46, 0xa5, 0x16, 0x83, 0xc4, - 0x83, 0x14, 0x42, 0x20, - 0x06, 0xa6, 0x5b, 0x15, 0x0a, 0x17, 0xa7, 0xe6, 0x75, 0xae, 0xe3, 0x5b, - 0xe3, 0x12, 0x5d, 0x91, - 0x5d, 0x35, 0x96, 0x48, 0xe7, 0xc2, 0x70, 0xdb, 0xd1, 0x58, 0x49, 0x96, - 0x49, 0x50, 0xcb, 0x80, - 0x09, 0x7a, 0x21, 0xd4, 0x1b, 0xd3, 0x98, 0x9a, 0x44, 0x66, 0x76, 0x21, - 0x76, 0x3f, 0x28, 0xd9, - 0x78, 0x2f, 0x56, 0xc7, 0x88, 0xef, 0x3b, 0x66, 0x4b, 0x8f, 0x22, 0x56, - 0x22, 0xab, 0x2e, 0x05, - 0xf4, 0x9a, 0x7f, 0xea, 0xdf, 0x07, 0x0d, 0xc9, 0x71, 0xa8, 0x47, 0x7f, - 0x47, 0x89, 0x8b, 0x55, - 0x16, 0x30, 0x91, 0xcc, 0x3a, 0x7f, 0x88, 0xf2, 0x6f, 0xb9, 0xef, 0x91, - 0xef, 0x62, 0x87, 0x2e, - 0x19, 0xec, 0xeb, 0x0d, 0x2b, 0xbb, 0xb7, 0x8e, 0x5e, 0x71, 0x7a, 0xeb, - 0x7a, 0x4f, 0xf2, 0x66, - 0xec, 0x47, 0xd0, 0xbe, 0xf7, 0x5b, 0xd4, 0xd7, 0x66, 0x55, 0x4d, 0xd0, - 0x4d, 0xc1, 0x3c, 0x54, - 0x69, 0x88, 0xd8, 0x47, 0xbb, 0x60, 0x7a, 0xe2, 0x18, 0x14, 0x5e, 0xd8, - 0x5e, 0xdc, 0xb1, 0xdd, - 0x04, 0xc4, 0xd3, 0xa7, 0x0c, 0x1a, 0x7b, 0x05, 0xe7, 0x75, 0x03, 0xd3, - 0x03, 0x1c, 0xd7, 0x5f, - 0x8f, 0xe6, 0xe5, 0xc6, 0x52, 0x02, 0x84, 0xdc, 0xe1, 0x70, 0xf5, 0xe5, - 0xf5, 0x2b, 0x6a, 0xf9, - 0x30, 0x79, 0x9d, 0xa8, 0x50, 0xb8, 0x71, 0x3c, 0x2e, 0x39, 0x14, 0x9d, - 0x14, 0x90, 0xad, 0x02, - 0x39, 0x03, 0xbc, 0x7c, 0x4b, 0x6b, 0xe9, 0xa6, 0x6a, 0x5f, 0x62, 0xbc, - 0x62, 0xaf, 0x85, 0xdb, - 0xe9, 0xb2, 0x47, 0x40, 0xf8, 0xa6, 0xc1, 0x42, 0xc8, 0xac, 0x3e, 0x47, - 0x3e, 0xda, 0xae, 0x6c, - 0x03, 0x53, 0xcc, 0xeb, 0x05, 0xea, 0xb2, 0x73, 0xdb, 0x57, 0x90, 0xcc, - 0x90, 0x09, 0xcf, 0xa9, - 0xcf, 0xfb, 0x4b, 0x24, 0x92, 0x61, 0x38, 0x8c, 0x89, 0x2c, 0xc5, 0x4b, - 0xc5, 0x28, 0x84, 0x40, - 0x70, 0x64, 0x33, 0x4a, 0x90, 0xdb, 0xcd, 0x6c, 0x46, 0x65, 0x24, 0x33, - 0x24, 0x93, 0x43, 0xbb, - 0x43, 0x4e, 0x62, 0x09, 0xc5, 0x89, 0x0e, 0x23, 0xb3, 0x0b, 0xa0, 0x62, - 0xa0, 0x0a, 0x21, 0x10, - 0x55, 0x7e, 0xf3, 0xc5, 0xff, 0xf6, 0x86, 0xd1, 0xdc, 0xb2, 0x4f, 0xf3, - 0x4f, 0x68, 0xa6, 0x3e, - 0x2c, 0x60, 0xe1, 0x5b, 0x74, 0xfe, 0xd3, 0x27, 0xde, 0xb1, 0x1d, 0xe1, - 0x1d, 0xc4, 0xcd, 0x5c, - 0x12, 0xf4, 0x42, 0x6b, 0x36, 0x65, 0xf3, 0xf7, 0x88, 0xcc, 0xec, 0x42, - 0xec, 0x7e, 0x50, 0x71, - 0x8e, 0xd7, 0xa1, 0x9f, 0x51, 0xe5, 0xea, 0x4c, 0xa8, 0xfc, 0x85, 0xa1, - 0x85, 0x2c, 0x2f, 0x9e, - 0xd5, 0x44, 0x6c, 0xc2, 0xbc, 0x30, 0x3d, 0x71, 0x0c, 0x0a, 0x2f, 0x6c, - 0x2f, 0x6e, 0xb9, 0x8f, - 0x3d, 0xc7, 0x6f, 0xdb, 0x47, 0x71, 0x92, 0xa3, 0x8d, 0x2a, 0x61, 0x6f, - 0x61, 0xb3, 0x52, 0x84, - 0xd2, 0xd3, 0x73, 0x8e, 0xb5, 0xc0, 0xf4, 0x07, 0x30, 0x28, 0xbc, 0x73, - 0xbc, 0x7b, 0xa1, 0x79, - 0x76, 0xc2, 0x68, 0x5f, 0x9a, 0xcc, 0x6a, 0x8a, 0x33, 0xcb, 0xc7, 0x68, - 0xc7, 0x81, 0x1e, 0x2a, - 0x18, 0xdd, 0xaf, 0x54, 0x28, 0x5c, 0xd9, 0x1e, 0x17, 0xfd, 0x0a, 0xaf, - 0x0a, 0x48, 0xb7, 0x01, - 0x35, 0x8c, 0x0a, 0x56, 0x5f, 0x45, 0x64, 0xa9, 0x80, 0xc0, 0x67, 0x0a, - 0x67, 0x8b, 0x3f, 0x3a, - 0x07, 0x97, 0x1f, 0x4c, 0x09, 0xf0, 0xc9, 0x76, 0x3c, 0x22, 0x93, 0x1f, - 0x93, 0x15, 0x18, 0xf6, - 0xc0, 0x27, 0x31, 0xe5, 0x83, 0xa5, 0x07, 0xf0, 0xb8, 0xe4, 0x50, 0x31, - 0x50, 0x05, 0xf1, 0x08, - 0xf7, 0xc9, 0xb3, 0x01, 0xda, 0xed, 0xbf, 0xba, 0xaa, 0xff, 0xd7, 0xb3, - 0xd7, 0x80, 0x44, 0xfc, - 0xb8, 0x08, 0x67, 0x22, 0x0b, 0x4a, 0x3c, 0x96, 0xf3, 0x6b, 0x72, 0x67, - 0x72, 0xae, 0xdf, 0x0d, - 0x72, 0x06, 0xbb, 0xf8, 0x96, 0xd6, 0x11, 0x8f, 0xd4, 0xbe, 0xc4, 0xbb, - 0xc4, 0x9d, 0xc9, 0x75, - 0x11, 0xa7, 0x8e, 0x80, 0x33, 0x8f, 0x41, 0x84, 0x53, 0x9b, 0x7c, 0x8e, - 0x7c, 0x77, 0x9f, 0xd8, - 0xb4, 0x87, 0xd1, 0x08, 0x1f, 0x64, 0xb1, 0x99, 0x19, 0xf4, 0x77, 0xd1, - 0x77, 0x8a, 0x65, 0xec, - 0xff, 0x82, 0xd6, 0x8c, 0xc2, 0xd9, 0x49, 0xb0, 0xa7, 0x15, 0xd1, 0xd6, - 0xd1, 0xb8, 0x29, 0x42, - 0x1a, 0xbf, 0x27, 0xe6, 0x2e, 0x51, 0x05, 0xfd, 0x85, 0x26, 0xea, 0x27, - 0xea, 0x46, 0x3d, 0xcf, - 0x48, 0x56, 0xcb, 0x6f, 0xd8, 0x57, 0x4a, 0x5a, 0x65, 0xb6, 0x36, 0xcb, - 0x36, 0x3b, 0x83, 0x07, - 0xaa, 0xfc, 0x25, 0x49, 0x3d, 0x2f, 0xcf, 0x61, 0x7b, 0xa7, 0x9e, 0x25, - 0x9e, 0xd0, 0x8f, 0x7c, - 0x58, 0xc0, 0x01, 0xb6, 0xe8, 0x3f, 0x65, 0x4e, 0x7f, 0xa1, 0x3a, 0x01, - 0x3a, 0x4b, 0x59, 0xb8, - 0x93, 0xff, 0x99, 0x35, 0x76, 0x44, 0x26, 0xc7, 0x11, 0xf8, 0xfc, 0x99, - 0xfc, 0x7f, 0x0a, 0xa7, - 0x21, 0xde, 0x13, 0x28, 0x63, 0x37, 0x30, 0xb8, 0x7d, 0xa2, 0x68, 0x13, - 0x68, 0xe7, 0x32, 0xda, - 0xdd, 0x0f, 0x09, 0x4f, 0xa4, 0x04, 0xcb, 0x7b, 0x01, 0xe0, 0x29, 0x09, - 0x29, 0x56, 0xd4, 0x31, - 0x60, 0xf2, 0xf9, 0x93, 0xa0, 0xb3, 0xe2, 0x78, 0x5c, 0x72, 0x28, 0xf9, - 0x28, 0xe3, 0x99, 0x04, - 0x0c, 0x8f, 0xb6, 0x2a, 0x14, 0x2e, 0x8d, 0x0f, 0xea, 0x9f, 0x05, 0xb6, - 0x05, 0x24, 0xba, 0xe1, - 0xc4, 0xe3, 0xe2, 0x42, 0x8f, 0xbf, 0x7c, 0xf5, 0x5f, 0x91, 0x53, 0xe2, - 0x53, 0x19, 0x26, 0x57, - 0x9a, 0x85, 0xb8, 0xe1, 0x6d, 0x97, 0xbe, 0x5d, 0x55, 0x9e, 0x8a, 0xb8, - 0x8a, 0x40, 0x22, 0x7e, - 0x5c, 0x04, 0xd2, 0x11, 0xe4, 0x25, 0x1e, 0x4b, 0x98, 0xd4, 0x39, 0xd2, - 0x39, 0x57, 0x8e, 0xe7, - 0x53, 0xd8, 0xa8, 0xd0, 0xf5, 0xe1, 0x21, 0x37, 0xa9, 0x1c, 0xac, 0xa8, - 0xac, 0x7a, 0xfb, 0xaf, - 0xcd, 0x99, 0xc3, 0x96, 0x94, 0x6c, 0xe4, 0x6f, 0x1b, 0xf7, 0x25, 0xc3, - 0x25, 0x26, 0x0e, 0x8e, - 0x32, 0x1b, 0x15, 0x1a, 0x56, 0xb5, 0xad, 0xdf, 0xbc, 0xe2, 0xf4, 0x15, - 0xf4, 0x9e, 0x27, 0xcc, - 0x1b, 0x8e, 0x63, 0xbf, 0x2d, 0xb6, 0x6b, 0x6d, 0xcc, 0xaa, 0x9a, 0x63, - 0x9a, 0x41, 0x78, 0xa8, - 0x5a, 0xa2, 0x89, 0x04, 0xee, 0x32, 0xb9, 0xad, 0xed, 0x7a, 0xda, 0x89, - 0xda, 0x45, 0xd3, 0x76, - 0xa1, 0xe4, 0x8c, 0x2f, 0x20, 0xf1, 0x8b, 0x18, 0xad, 0x1a, 0x08, 0x8c, - 0x08, 0xe1, 0x2d, 0x6b, - 0xe5, 0x3d, 0xf1, 0x6a, 0xec, 0x88, 0x4c, 0x4d, 0x22, 0x33, 0x3b, 0xf1, - 0x3b, 0xfe, 0x14, 0x8d, - 0x3c, 0xf6, 0x2b, 0x82, 0x44, 0x96, 0xfc, 0x33, 0xc4, 0xa6, 0x11, 0x2b, - 0x11, 0xb4, 0x17, 0xe3, - 0x97, 0x3b, 0x4a, 0x92, 0x7a, 0x5e, 0x5d, 0xc2, 0xf6, 0x8d, 0xff, 0x4a, - 0xff, 0x63, 0xdd, 0xf8, - 0xce, 0xca, 0x0f, 0x7d, 0x91, 0x86, 0x56, 0x1c, 0xc0, 0xa0, 0xb5, 0x0f, - 0xb5, 0x2f, 0xc1, 0x27, - 0x6d, 0x4c, 0x0b, 0xe0, 0xb7, 0x7a, 0x01, 0xe7, 0xff, 0x61, 0x5d, 0x0b, - 0x5d, 0xc0, 0x66, 0x82, - 0x62, 0x90, 0x71, 0x21, 0xa6, 0xbe, 0x3e, 0x9b, 0xce, 0xa9, 0xc8, 0x71, - 0xc8, 0xed, 0x13, 0xca, - 0xf5, 0xab, 0x3b, 0xb3, 0xdc, 0xe0, 0x63, 0x59, 0x38, 0x24, 0x37, 0x3b, - 0x37, 0x8e, 0xce, 0x32, - 0xb7, 0xd4, 0x1d, 0xe3, 0x1a, 0x8e, 0x03, 0xea, 0xc2, 0xa3, 0xe7, 0x1d, - 0xe7, 0x83, 0xaa, 0x45, - 0xe2, 0xaa, 0xee, 0x26, 0xe5, 0x78, 0x85, 0x3b, 0x1e, 0x11, 0xa8, 0xee, - 0xa8, 0xeb, 0x0c, 0x7b, - 0x41, 0x2c, 0xea, 0xbb, 0xc3, 0x84, 0xd2, 0xc0, 0x21, 0xd0, 0x40, 0xea, - 0x40, 0x04, 0xab, 0xde, - 0x71, 0x55, 0x77, 0x13, 0x93, 0x3c, 0xa3, 0xfc, 0x0f, 0xe9, 0x54, 0x77, - 0x54, 0x94, 0x06, 0xdc, - 0xf9, 0x24, 0x8d, 0x99, 0xc8, 0xce, 0xee, 0x56, 0xd2, 0xbb, 0x32, 0x8d, - 0x32, 0xaa, 0x74, 0xd3, - 0xea, 0xe1, 0x8b, 0xab, 0xfd, 0x4c, 0x73, 0x31, 0x13, 0xfb, 0xae, 0x8b, - 0xae, 0xd3, 0x61, 0xc5, - 0xae, 0x38, 0xf6, 0xee, 0x31, 0x35, 0xb4, 0x64, 0x9c, 0xd2, 0x9d, 0xf6, - 0x9d, 0xcc, 0x58, 0x23, - 0xe4, 0x0c, 0xb5, 0x33, 0xef, 0x6f, 0x22, 0xdd, 0x6b, 0xbf, 0x4b, 0xb5, - 0x4b, 0xf9, 0x51, 0xea, - 0x0b, 0x18, 0xa9, 0x66, 0x1d, 0xde, 0x44, 0x79, 0xd6, 0xbd, 0x96, 0xa9, - 0x96, 0x31, 0xa2, 0x17, - 0xde, 0x5c, 0xc5, 0xa4, 0xa1, 0xee, 0x79, 0x08, 0xda, 0xb7, 0xb9, 0xc5, - 0xb9, 0x5f, 0x1b, 0x98, - 0xf0, 0x5e, 0xac, 0x4d, 0xd3, 0x1d, 0x76, 0xcc, 0x96, 0xdd, 0x44, 0xac, - 0x44, 0x95, 0x5c, 0x0a, - 0xd4, 0x75, 0x28, 0x9b, 0xbf, 0xd7, 0x53, 0xe1, 0x45, 0x86, 0x5f, 0x28, - 0x5f, 0x69, 0xfc, 0xe8, - 0xb5, 0xb6, 0x95, 0x51, 0x1c, 0x83, 0xdf, 0x09, 0x50, 0x78, 0x07, 0x95, - 0x07, 0x8d, 0x20, 0x8b, - 0xa4, 0x11, 0x1b, 0xd1, 0x2f, 0x0c, 0x9e, 0x8d, 0x03, 0xe3, 0x7b, 0x1b, - 0x7b, 0xfa, 0xbf, 0x53, - 0xba, 0x6a, 0xef, 0x90, 0x0d, 0x47, 0xe0, 0x75, 0x61, 0xb0, 0x92, 0xef, - 0x92, 0xa0, 0x55, 0xc3, - 0xe8, 0x83, 0x03, 0x19, 0xfb, 0x41, 0xaf, 0xd2, 0x81, 0x20, 0x4e, 0x03, - 0x4e, 0xdd, 0xeb, 0x0b, - 0x0e, 0xed, 0x3e, 0x98, 0x12, 0x23, 0x51, 0xec, 0x78, 0x44, 0xe5, 0x3e, - 0xe5, 0x2a, 0x30, 0x2f, - 0x9c, 0x23, 0xe3, 0xf4, 0x67, 0x80, 0x19, 0xbb, 0x20, 0x30, 0x69, 0xe3, - 0x69, 0x52, 0x7f, 0xef, - 0x31, 0x48, 0xd9, 0xf1, 0x53, 0x5f, 0x1f, 0xac, 0x67, 0xb5, 0x64, 0xd9, - 0x64, 0x97, 0xe8, 0x65, - 0x79, 0x1e, 0x12, 0x9e, 0x8b, 0x08, 0x55, 0xf6, 0x02, 0x03, 0x52, 0x12, - 0x52, 0xac, 0x6b, 0x62, - 0xfc, 0xd1, 0x1a, 0x67, 0xc7, 0x33, 0xfb, 0xc3, 0x7c, 0x42, 0x41, 0x1a, - 0x41, 0xb1, 0xe6, 0xeb, - 0x4d, 0xa3, 0x5c, 0x91, 0xd7, 0xaa, 0x5f, 0xcf, 0xcb, 0x4f, 0x45, 0x5c, - 0x45, 0x20, 0x11, 0x3f, - 0xdb, 0xa9, 0x52, 0x5a, 0xae, 0x13, 0x6c, 0x9d, 0x74, 0x4e, 0xca, 0x52, - 0xca, 0x44, 0x89, 0xa0, - 0x75, 0x91, 0xa4, 0xb4, 0x9f, 0x26, 0xd8, 0xf9, 0xe8, 0x9c, 0x57, 0xa4, - 0x57, 0x88, 0xd1, 0x83, - 0x68, 0xb9, 0x9c, 0x1e, 0xb8, 0x87, 0x14, 0x72, 0x51, 0x98, 0x2e, 0x9c, - 0x2e, 0xdb, 0xf4, 0xba, - 0x15, 0x63, 0x5d, 0x27, 0x3f, 0x95, 0x3a, 0x81, 0xb4, 0xee, 0x7f, 0x5d, - 0x7f, 0x6b, 0x48, 0x87, - 0xa9, 0xaf, 0xe9, 0xa2, 0x38, 0xc5, 0x7d, 0x12, 0xa0, 0xf0, 0x0e, 0xe9, - 0x0e, 0xd9, 0x40, 0xd5, - 0x01, 0x31, 0x44, 0x59, 0x03, 0xe7, 0x6e, 0x90, 0x49, 0x8c, 0x70, 0x44, - 0x70, 0x07, 0x45, 0x67, - 0x23, 0xbc, 0x9b, 0x9a, 0x65, 0x3a, 0xec, 0x5b, 0xef, 0x79, 0x88, 0x9b, - 0x88, 0xe9, 0xb8, 0x14, - 0xb2, 0x21, 0x8a, 0x1d, 0x15, 0x73, 0x16, 0x7f, 0x6c, 0x5a, 0x94, 0x8a, - 0x94, 0x98, 0x38, 0x7d, - 0x6e, 0x1f, 0xc7, 0x0b, 0xb2, 0x90, 0xb3, 0x94, 0x24, 0x36, 0xcd, 0xc7, - 0xcd, 0xc9, 0xa9, 0x2b, - 0xf2, 0x3c, 0x24, 0xff, 0xd5, 0x10, 0xaa, 0x2f, 0x04, 0x06, 0xa4, 0x24, - 0xa4, 0x9b, 0xd6, 0xc4, - 0x3b, 0x61, 0x34, 0xce, 0x4d, 0x66, 0x35, 0x45, 0xf8, 0x84, 0x82, 0x34, - 0x82, 0xa1, 0x0f, 0x15, - 0x52, 0xe9, 0xec, 0x89, 0xf6, 0x06, 0x4f, 0xa7, 0xe0, 0x90, 0xdc, 0xec, - 0xdc, 0x7d, 0xbe, 0xc8, - 0x65, 0x07, 0x6e, 0x6d, 0xaf, 0x4e, 0xf7, 0xed, 0xf2, 0x8b, 0x5b, 0x6e, - 0x5b, 0xf8, 0x0b, 0x3c, - 0x4b, 0x05, 0x07, 0x84, 0xdd, 0xbd, 0xf8, 0x29, 0xbe, 0xe1, 0xa6, 0x07, - 0xa6, 0x32, 0x4c, 0xae, - 0x38, 0x32, 0xf8, 0x25, 0x48, 0x8c, 0x87, 0x36, 0x23, 0xd3, 0x12, 0xf8, - 0x12, 0xa8, 0xc0, 0xbc, - 0x2a, 0xc6, 0xba, 0x4e, 0x7e, 0xe9, 0x74, 0xc1, 0xab, 0x1f, 0xfe, 0xba, - 0xfe, 0xd6, 0x90, 0xcd, - 0x91, 0x9d, 0x11, 0x87, 0x70, 0x49, 0xfa, 0x24, 0x83, 0x23, 0x1c, 0x11, - 0x1c, 0x71, 0x80, 0x69, - 0xd6, 0x17, 0xa0, 0x29, 0xb9, 0xda, 0x8f, 0x02, 0xd7, 0x5d, 0xbf, 0xa0, - 0xbf, 0x67, 0x76, 0x26, - 0xfd, 0xe0, 0x5e, 0x3e, 0xc4, 0xd4, 0x95, 0x53, 0x35, 0xce, 0x31, 0x5e, - 0x31, 0xb6, 0xa3, 0x8c, - 0xf8, 0x15, 0xc9, 0xc0, 0xcb, 0x29, 0x80, 0xc6, 0x9b, 0x37, 0x42, 0xc9, - 0x42, 0xad, 0x31, 0xb4, - 0x8c, 0xb5, 0x29, 0x2d, 0x57, 0xe8, 0x36, 0xaf, 0x3a, 0x27, 0x65, 0x29, - 0x65, 0x22, 0xa5, 0x50, - 0x50, 0x8b, 0x64, 0x3b, 0xf0, 0x0b, 0x93, 0x44, 0x72, 0x4b, 0x3c, 0x64, - 0x3c, 0x73, 0x34, 0x06, - 0x7f, 0xb8, 0x49, 0x8b, 0x81, 0x1f, 0xf2, 0x10, 0x77, 0xad, 0xb1, 0x49, - 0xb1, 0xbe, 0x36, 0xf3, - 0x59, 0xf1, 0x45, 0xef, 0xeb, 0xd8, 0x0b, 0xde, 0x36, 0x2d, 0x4a, 0x45, - 0x4a, 0x4c, 0x1c, 0xdf, - 0x08, 0x4b, 0x65, 0x8d, 0x18, 0x34, 0xf6, 0x0a, 0x0d, 0xea, 0x06, 0x65, - 0x06, 0x38, 0x6d, 0xbe, - 0xd9, 0xcb, 0xda, 0xe8, 0xa8, 0x1e, 0xb0, 0x7e, 0xe6, 0x95, 0x2a, 0xda, - 0x2a, 0x4a, 0x03, 0x6e, - 0xa2, 0xb7, 0x40, 0xc4, 0x25, 0x1b, 0x39, 0x6b, 0x76, 0x4d, 0x98, 0x40, - 0x98, 0xe8, 0xe2, 0xc2, - 0xfb, 0x46, 0x05, 0x2b, 0xce, 0xc3, 0x32, 0xb5, 0x40, 0x60, 0xd2, 0x05, - 0xd2, 0xa4, 0xfe, 0x1d, - 0x1c, 0x19, 0x7c, 0xf3, 0x24, 0x46, 0xa2, 0x1b, 0xf0, 0x88, 0x09, 0x7c, - 0x09, 0x54, 0x60, 0x5e, - 0x29, 0x95, 0x76, 0xa5, 0x7b, 0x03, 0xc6, 0xb2, 0x70, 0x48, 0x6e, 0x76, - 0x6e, 0xdf, 0x5f, 0x64, - 0xd3, 0xe2, 0x37, 0xd7, 0xb6, 0x27, 0x9a, 0x97, 0x79, 0xa4, 0xcc, 0x37, - 0xcc, 0x7c, 0xe4, 0x1e, - 0x6f, 0x2e, 0x83, 0x52, 0xb1, 0x77, 0xdd, 0x04, 0x6d, 0xba, 0xbd, 0x83, - 0xbd, 0xce, 0xec, 0x4c, - 0x47, 0x8a, 0xb1, 0xae, 0xc9, 0x93, 0x75, 0x26, 0x54, 0x7e, 0xa3, 0xb1, - 0xa3, 0x16, 0xf6, 0x4f, - 0x54, 0x4f, 0xb7, 0x9c, 0xfc, 0x11, 0xe8, 0x41, 0x95, 0x3e, 0x3f, 0xb7, - 0x3f, 0x6f, 0xe3, 0x59, - 0x9f, 0x70, 0x2f, 0x1f, 0x62, 0x6a, 0xab, 0xc8, 0xfb, 0x67, 0xf9, 0x2f, - 0xf9, 0x5b, 0xb0, 0x46, - 0x17, 0x01, 0xd5, 0x95, 0x39, 0x98, 0xe6, 0x62, 0x26, 0x35, 0x9f, 0xd5, - 0x9f, 0x65, 0xc2, 0x49, - 0xe1, 0xf9, 0x22, 0xcd, 0xe0, 0x92, 0x37, 0x48, 0xc5, 0x46, 0x38, 0x22, - 0x38, 0xe2, 0xc3, 0xd2, - 0x7c, 0xeb, 0x85, 0x60, 0x84, 0xf5, 0x40, 0x63, 0xac, 0xfa, 0x21, 0x85, - 0x21, 0xb7, 0xf9, 0x5a, - 0x46, 0xbb, 0xf5, 0xf7, 0xca, 0x74, 0x1b, 0xb6, 0x1d, 0xf2, 0xd3, 0xf5, - 0xd3, 0x11, 0xb3, 0x28, - 0xbc, 0xcc, 0xb4, 0x85, 0x07, 0x50, 0x47, 0x93, 0x14, 0x1e, 0x71, 0xb4, - 0x71, 0xb2, 0x08, 0x52, - 0xc5, 0xd2, 0xa6, 0x1b, 0x8c, 0x58, 0x12, 0x65, 0x16, 0x1d, 0x23, 0xa6, - 0x23, 0x1e, 0x63, 0x30, - 0x22, 0x8d, 0xdf, 0xc3, 0x66, 0xdd, 0x82, 0xcb, 0xa6, 0xf5, 0xf8, 0xdf, - 0xf8, 0xee, 0xfd, 0x73, - 0xbe, 0xae, 0x3c, 0x37, 0x01, 0x5d, 0x9b, 0x70, 0x86, 0xc5, 0x91, 0x3c, - 0x91, 0xbc, 0x82, 0x9c, - 0x96, 0x0a, 0x0e, 0xcb, 0x79, 0xb9, 0x33, 0x52, 0xbf, 0x01, 0x8f, 0x0e, - 0x8f, 0x64, 0x98, 0x9f, - 0x7e, 0x89, 0x0d, 0xd2, 0x82, 0xf8, 0x9c, 0x80, 0x3e, 0x21, 0xc1, 0x0d, - 0xc1, 0xb9, 0x73, 0x94, - 0x1d, 0x28, 0x38, 0xaa, 0x27, 0xa1, 0xcc, 0x8b, 0xb9, 0x04, 0x79, 0x38, - 0x79, 0x53, 0x25, 0x39, - 0xb9, 0x39, 0x23, 0x7b, 0x08, 0xad, 0x52, 0x06, 0xba, 0xe7, 0x02, 0x23, - 0x02, 0xa9, 0x9a, 0x6a, - 0x9d, 0x12, 0xa7, 0xad, 0x64, 0x67, 0x77, 0x2b, 0x69, 0xbc, 0x19, 0xa7, - 0x19, 0x55, 0x3a, 0x88, - 0xad, 0x6b, 0x3a, 0x05, 0x34, 0xdf, 0x06, 0x17, 0x47, 0x85, 0x0d, 0x3a, - 0x0d, 0xc5, 0x97, 0x8a, - 0x6c, 0x7d, 0x4f, 0xb9, 0xb4, 0x9d, 0x6f, 0x77, 0xb6, 0xed, 0x2d, 0x4f, - 0x2d, 0xc7, 0x23, 0xe5, - 0x85, 0xcf, 0x08, 0xf9, 0x4c, 0x3b, 0xae, 0x35, 0x7e, 0x41, 0x13, 0x08, - 0x13, 0x1d, 0x8d, 0x89, - 0xd1, 0x80, 0xbf, 0x65, 0xb0, 0x2a, 0x46, 0x74, 0xeb, 0x7f, 0x2c, 0xbf, - 0x2c, 0x72, 0x6e, 0xd0, - 0x1e, 0x7b, 0xf4, 0x41, 0x22, 0x4b, 0x7e, 0xf8, 0x62, 0x53, 0xe9, 0xf4, - 0xe9, 0x5a, 0xea, 0x90, - 0xa5, 0x20, 0x5f, 0x88, 0x2c, 0xeb, 0xf0, 0x1d, 0x4a, 0x6f, 0x0b, 0x5f, - 0x0b, 0xfd, 0xfa, 0x34, - 0xe6, 0x6e, 0x3d, 0x81, 0xe9, 0x62, 0xfe, 0x3e, 0xf9, 0x64, 0xab, 0x3d, - 0xab, 0xf7, 0xdb, 0x24, - 0x2e, 0x02, 0x69, 0xe9, 0x72, 0xf3, 0x0f, 0xc4, 0x4c, 0x6a, 0xfd, 0x69, - 0xfd, 0xca, 0x47, 0x92, - 0x5f, 0x57, 0x1e, 0xfa, 0xe1, 0xcf, 0xac, 0x38, 0x43, 0x83, 0xa9, 0x1e, - 0xa9, 0x5e, 0x41, 0x4e, - 0x61, 0xc3, 0xbd, 0xca, 0xa3, 0x54, 0x8c, 0xe8, 0x15, 0xfe, 0x58, 0xbd, - 0x58, 0xe4, 0xdc, 0x63, - 0x83, 0x69, 0x53, 0xec, 0x46, 0x2c, 0x09, 0xd3, 0x0b, 0xef, 0xf0, 0x53, - 0xf0, 0x0f, 0xd0, 0x18, - 0x44, 0xd9, 0x7d, 0x45, 0xcc, 0x79, 0xc7, 0x55, 0x8f, 0x29, 0x33, 0x7d, - 0x33, 0x1f, 0x39, 0xe6, - 0xb1, 0x72, 0x46, 0xf6, 0x10, 0x99, 0xa4, 0x0c, 0xb7, 0x0d, 0x04, 0x46, - 0x04, 0x91, 0xf7, 0xd4, - 0xef, 0x14, 0x1c, 0x55, 0xf2, 0xb1, 0x66, 0xa4, 0xbd, 0x02, 0xdd, 0x1c, - 0xdd, 0xc8, 0xf3, 0xfd, - 0x82, 0x58, 0x17, 0xb5, 0x45, 0xcb, 0x67, 0x43, 0x42, 0x63, 0x80, 0x17, - 0x80, 0x08, 0x95, 0x7f, - 0x36, 0xdf, 0xc6, 0xbd, 0x5a, 0xaf, 0xd6, 0xda, 0x5b, 0x97, 0xf7, 0xc6, - 0xf7, 0x82, 0xf0, 0x93, - 0xa3, 0x86, 0x04, 0x9d, 0x26, 0xfc, 0x57, 0xfb, 0x3f, 0xc1, 0xe8, 0x04, - 0xe8, 0xef, 0xa7, 0xa5, - 0xaf, 0x09, 0xb2, 0xb7, 0x32, 0xd2, 0xda, 0xf4, 0xd5, 0x5e, 0xed, 0xb2, - 0xed, 0xcb, 0x1d, 0x44, - 0x88, 0x71, 0xfa, 0x8a, 0x5b, 0xf2, 0x4d, 0xaa, 0xdd, 0x52, 0x66, 0xfa, - 0x66, 0x3e, 0x72, 0x0f, - 0x89, 0x40, 0xbe, 0xd3, 0x58, 0x15, 0x23, 0x3a, 0x94, 0xde, 0x16, 0xbe, - 0x16, 0x39, 0x37, 0x68, - 0x0f, 0xdc, 0x7a, 0xc1, 0x11, 0xc4, 0x3f, 0x7c, 0x31, 0xc8, 0x95, 0x7a, - 0x95, 0x2d, 0x75, 0x48, - 0x1f, 0x4a, 0xb0, 0x18, 0x21, 0xac, 0x10, 0x68, 0x2b, 0xdf, 0x99, 0xb0, - 0x99, 0x5d, 0xaf, 0xf7, - 0x42, 0x7f, 0x26, 0x50, 0xc6, 0x6e, 0x60, 0xb3, 0xfa, 0x87, 0xd0, 0x26, - 0xd0, 0x0d, 0x64, 0x77, - 0xf6, 0xf8, 0xf7, 0x58, 0xd9, 0x0a, 0xd1, 0x2a, 0xe3, 0x73, 0xa7, 0xf7, - 0xa7, 0x87, 0x01, 0x9b, - 0xdf, 0x6d, 0x81, 0xfd, 0xa2, 0x09, 0x17, 0x98, 0x93, 0x3b, 0xc9, 0x81, - 0xc9, 0x58, 0x5e, 0xff, - 0x3a, 0x50, 0x70, 0x97, 0x4e, 0x81, 0x5b, 0xd5, 0xb1, 0x08, 0xf2, 0x70, - 0xf2, 0xa6, 0x4a, 0x72, - 0xc1, 0x16, 0x75, 0xbc, 0x80, 0x42, 0x69, 0x60, 0xf1, 0x68, 0x20, 0x75, - 0x20, 0x02, 0xb4, 0x6f, - 0x28, 0xa4, 0x32, 0xfc, 0x78, 0xe4, 0xa8, 0x22, 0x39, 0xc4, 0x1e, 0x32, - 0x1e, 0xd8, 0x1a, 0x03, - 0xf1, 0x6f, 0xe8, 0x14, 0xd0, 0xfa, 0x18, 0x5c, 0xdf, 0x51, 0x34, 0xe8, - 0x34, 0x92, 0x19, 0x6d, - 0xcb, 0x3f, 0x98, 0x83, 0x9e, 0x7b, 0x43, 0x89, 0x6e, 0x59, 0xc6, 0x98, - 0xc6, 0x34, 0x53, 0x1f, - 0x92, 0xce, 0xdd, 0x6c, 0x75, 0xa3, 0x48, 0x57, 0x58, 0x74, 0x8c, 0xdd, - 0x8c, 0x78, 0x4f, 0xc0, - 0x87, 0xad, 0x80, 0x4b, 0x4a, 0x36, 0x72, 0xd6, 0xec, 0x9a, 0xf3, 0x80, - 0xf3, 0x13, 0x07, 0x47, - 0xe7, 0x5f, 0x79, 0xd8, 0xea, 0x85, 0x90, 0xae, 0xb0, 0xe8, 0xdb, 0x79, - 0xdb, 0xf0, 0x9e, 0x43, - 0x3e, 0x94, 0xa3, 0x30, 0x42, 0x9b, 0x20, 0xd0, 0x56, 0x7d, 0xf1, 0xa3, - 0xf1, 0xba, 0x9d, 0x2d, - 0xfa, 0x77, 0x41, 0x72, 0xcd, 0x24, 0x5c, 0x25, 0x09, 0xec, 0xa2, 0x41, - 0xa2, 0xa3, 0xbb, 0x7a, - 0x0d, 0xbe, 0xf2, 0x73, 0x17, 0xc9, 0xe3, 0x9f, 0xa3, 0x13, 0x75, 0xf2, - 0x75, 0x23, 0xff, 0x86, - 0x51, 0xba, 0x20, 0x62, 0xf3, 0xec, 0xfd, 0xd4, 0x3b, 0xc7, 0x4c, 0x20, - 0x4c, 0x74, 0x71, 0x61, - 0xb6, 0xe5, 0x59, 0xba, 0x19, 0x69, 0x6d, 0x7a, 0x8b, 0x2f, 0x97, 0x59, - 0x97, 0x84, 0xef, 0x22, - 0x7b, 0x7c, 0x9a, 0x2c, 0x8d, 0x05, 0x89, 0x15, 0x90, 0xd8, 0xb2, 0x9a, - 0xb2, 0xa2, 0xe1, 0xac, - 0x74, 0xa0, 0xe0, 0xed, 0x9c, 0xc1, 0xb6, 0x69, 0xa1, 0x10, 0x27, 0xe0, - 0x27, 0x8f, 0x94, 0xe4, - 0x3f, 0xa5, 0xe7, 0x69, 0x41, 0x7c, 0x4e, 0x40, 0x1f, 0xf1, 0x81, 0xe7, - 0x81, 0xbd, 0xd8, 0x4a, - 0x2f, 0x33, 0x2d, 0xb0, 0x71, 0x14, 0x61, 0x54, 0x05, 0xe6, 0x8d, 0x2d, - 0x8d, 0xcd, 0x02, 0xf5, - 0x7d, 0xda, 0xc1, 0x39, 0x87, 0x12, 0x2e, 0xf3, 0xe5, 0x76, 0x51, 0xc1, - 0x51, 0xb0, 0xbc, 0x3d, - 0xbb, 0x5b, 0xab, 0xc9, 0x0e, 0xa0, 0x8e, 0xe5, 0x28, 0x3c, 0xe2, 0xab, - 0xe2, 0xa7, 0x10, 0xa4, - 0x49, 0x67, 0x8f, 0x36, 0xdb, 0xb0, 0x24, 0xca, 0x2c, 0x3a, 0x46, 0x8f, - 0x46, 0x3c, 0xc6, 0x60, - 0x2b, 0xf7, 0xfe, 0x17, 0x7d, 0x0e, 0x1a, 0x51, 0xe2, 0x93, 0x8e, 0xfe, - 0x8e, 0xd1, 0xd5, 0xaa, - 0x99, 0xd6, 0x74, 0x0a, 0x68, 0x7d, 0x0c, 0x2e, 0x8e, 0xc9, 0x1a, 0x74, - 0x1a, 0x49, 0xed, 0xd7, - 0x02, 0x62, 0x88, 0xb2, 0x06, 0x0d, 0xdc, 0xe3, 0x92, 0xdb, 0xe0, 0x88, - 0xe0, 0x0e, 0x8a, 0xce, - 0x37, 0xee, 0x82, 0xe4, 0x59, 0x48, 0xb8, 0x4a, 0x12, 0x1b, 0x87, 0x82, - 0x87, 0x85, 0xb5, 0xf4, - 0xb3, 0x10, 0xce, 0x44, 0x16, 0x94, 0x78, 0xef, 0x25, 0xd6, 0xe4, 0xce, - 0xe4, 0x9f, 0x7d, 0x1a, - 0x73, 0x37, 0xff, 0xa1, 0x95, 0x31, 0x7f, 0x1f, 0x9d, 0x32, 0xb4, 0xff, - 0xb4, 0x9a, 0x8c, 0x12, - 0x64, 0x36, 0x2a, 0x34, 0xac, 0xa9, 0x99, 0x7d, 0xbb, 0x07, 0x2b, 0x2a, - 0x2b, 0xff, 0x4e, 0x5b, - 0xdc, 0x3e, 0x4d, 0x16, 0xa7, 0xe3, 0xa5, 0xeb, 0x48, 0x6c, 0x59, 0x4d, - 0x59, 0x51, 0x91, 0x56, - 0xd8, 0xfa, 0x9e, 0xb1, 0xab, 0xf9, 0xde, 0xee, 0xaf, 0x19, 0x5a, 0x9e, - 0x5a, 0x4d, 0x46, 0x09, - 0xc9, 0x5d, 0x10, 0x31, 0x98, 0x76, 0x9f, 0x6a, 0xfc, 0x82, 0x26, 0x10, - 0x26, 0x3a, 0xd9, 0xd1, - 0xab, 0xcd, 0x61, 0x10, 0x3e, 0xc8, 0xa1, 0xf1, 0x32, 0x2b, 0xee, 0x61, - 0xee, 0xd7, 0xca, 0x1b, - 0x33, 0x2a, 0x51, 0x43, 0x55, 0x52, 0xc3, 0x4f, 0xf5, 0x6e, 0x84, 0x51, - 0x84, 0x99, 0x62, 0xab, - 0x6b, 0xea, 0x50, 0xf5, 0xbd, 0x6d, 0xa6, 0x01, 0x8a, 0xcf, 0xbe, 0x50, - 0xbe, 0xd2, 0x3b, 0x13, - 0xcc, 0xa8, 0x87, 0xcf, 0x97, 0x8b, 0x8a, 0xff, 0x52, 0x7b, 0x55, 0x87, - 0x55, 0x21, 0x4b, 0xe9, - 0x90, 0xac, 0x55, 0xde, 0x73, 0xae, 0x94, 0xb4, 0xca, 0xaf, 0x6c, 0x55, - 0x6c, 0x76, 0xc5, 0x0e, - 0xd0, 0xb1, 0xfb, 0x3c, 0xb3, 0xcd, 0x28, 0xe4, 0xa2, 0xf3, 0x5c, 0xfb, - 0x5c, 0x75, 0x2b, 0xb7, - 0xac, 0x5a, 0x7e, 0x5c, 0x37, 0x38, 0x68, 0x87, 0x0e, 0x09, 0x7d, 0x7e, - 0x7d, 0xc2, 0xd2, 0xed, - 0xbf, 0x9f, 0x78, 0x6e, 0x02, 0xba, 0xf5, 0xe0, 0xcf, 0x49, 0xe1, 0x78, - 0xe1, 0xbb, 0xc7, 0xfb, - 0xda, 0x98, 0x16, 0x03, 0xad, 0xf4, 0x02, 0x0d, 0x3d, 0xc2, 0xba, 0x16, - 0xba, 0x43, 0xcc, 0xc7, - 0xa7, 0x42, 0xd7, 0x3a, 0x2a, 0xe6, 0x2c, 0xfe, 0xd8, 0xb4, 0xeb, 0xd7, - 0xeb, 0xf3, 0x70, 0xfa, - 0x5e, 0x66, 0x5a, 0xa3, 0xe2, 0x28, 0xc2, 0xa8, 0x0a, 0x0f, 0xd9, 0x5a, - 0xd9, 0x59, 0x04, 0x29, - 0x98, 0xe7, 0x30, 0x53, 0x6b, 0x9a, 0x62, 0xbe, 0xc7, 0x45, 0x6a, 0x30, - 0x6a, 0x4e, 0xa8, 0xb0, - 0x7a, 0x4d, 0xde, 0x75, 0x8e, 0xe2, 0xe7, 0x85, 0xd9, 0x54, 0xc2, 0xde, - 0xc2, 0xa5, 0xa4, 0xcb, - 0x13, 0xc5, 0x06, 0x32, 0x35, 0x82, 0x9d, 0x67, 0xc1, 0x40, 0x9c, 0x06, - 0x9c, 0x79, 0x15, 0x16, - 0x6a, 0xdb, 0x14, 0xac, 0xbe, 0x8a, 0xc8, 0x91, 0xc3, 0x43, 0xce, 0x14, - 0xce, 0xd5, 0x7e, 0x74, - 0x40, 0x1d, 0xae, 0xe2, 0xc0, 0x63, 0xbc, 0x50, 0x68, 0x5c, 0x30, 0xae, - 0x30, 0x03, 0xee, 0xb9, - 0xa8, 0x9e, 0xad, 0xfb, 0x3b, 0x22, 0x13, 0x82, 0xe9, 0x7c, 0x7e, 0xad, - 0x7e, 0xde, 0x05, 0xb2, - 0x5b, 0x93, 0xcd, 0x5d, 0xed, 0xd5, 0xd7, 0x3d, 0xa4, 0xf6, 0xaa, 0xcd, - 0xaa, 0x42, 0x96, 0x11, - 0xeb, 0xd0, 0xcf, 0xf2, 0xfe, 0xab, 0x1d, 0xa1, 0x5a, 0x77, 0xde, 0xcf, - 0xde, 0xd4, 0x24, 0xa2, - 0x66, 0x54, 0xa2, 0x86, 0xaa, 0xa4, 0x45, 0x9e, 0x29, 0xdc, 0xcb, 0xa2, - 0xcb, 0xf1, 0xc4, 0x95, - 0x56, 0x2d, 0x3f, 0x2e, 0xfa, 0x1c, 0x34, 0xa2, 0x07, 0xe5, 0xdf, 0x3f, - 0xdf, 0x61, 0x69, 0x97, - 0x81, 0x0b, 0xdb, 0x5e, 0x40, 0x21, 0xd5, 0x30, 0x99, 0x34, 0x10, 0xdb, - 0x10, 0x01, 0x5a, 0xd6, - 0x77, 0xf3, 0x2c, 0x06, 0x99, 0x2b, 0x04, 0x1a, 0x7a, 0x47, 0xb7, 0x2c, - 0xb7, 0x86, 0x5b, 0x4d, - 0x57, 0x1c, 0x7b, 0x77, 0xf9, 0xfb, 0x5a, 0x32, 0x4e, 0x69, 0xaf, 0x7b, - 0xaf, 0x66, 0x2c, 0xf0, - 0x4e, 0xf0, 0x90, 0x7a, 0xd2, 0x40, 0xed, 0xbc, 0x10, 0x18, 0xd5, 0x90, - 0xd5, 0x29, 0xde, 0x96, - 0x8d, 0x84, 0x6d, 0x74, 0x54, 0x0f, 0x58, 0x3f, 0x73, 0xab, 0x15, 0x6d, - 0x15, 0x25, 0xe0, 0x37, - 0xb0, 0x43, 0x02, 0xaf, 0x13, 0x7e, 0xca, 0x9c, 0xfe, 0x81, 0x74, 0x02, - 0x74, 0x96, 0xb2, 0xb3, - 0xf3, 0x0d, 0x60, 0xa6, 0xd6, 0xf7, 0xc4, 0xbf, 0x4d, 0x8a, 0xd4, 0x60, - 0xd4, 0x9c, 0x93, 0xa3, - 0x94, 0x68, 0x86, 0x79, 0x7f, 0xb4, 0xef, 0xb1, 0x2d, 0xda, 0x6f, 0x86, - 0x6f, 0x6a, 0x12, 0x51, - 0x20, 0xef, 0x57, 0x71, 0x60, 0xd0, 0x5e, 0x28, 0x34, 0x2e, 0x18, 0x57, - 0x18, 0xe0, 0x77, 0xbd, - 0x24, 0x2b, 0x84, 0xd6, 0x6c, 0xca, 0x25, 0x2d, 0xd3, 0x5b, 0x1b, 0x84, - 0x1b, 0xfc, 0xa0, 0xe2, - 0xd7, 0x26, 0xe4, 0x70, 0xba, 0x3d, 0xe1, 0x92, 0x9e, 0xd1, 0xcf, 0xe4, - 0xcf, 0x60, 0x33, 0x41, - 0x14, 0x52, 0x19, 0x7e, 0x3c, 0x72, 0x54, 0x11, 0xfd, 0x62, 0x0f, 0x19, - 0x0f, 0x6c, 0x0d, 0xe0, - 0x9e, 0x41, 0x6b, 0x46, 0x61, 0x8d, 0xc5, 0x58, 0xb2, 0xeb, 0x89, 0x6b, - 0x89, 0x5c, 0xf5, 0x21, - 0x05, 0xf5, 0x97, 0xfe, 0x0f, 0xfd, 0x15, 0x95, 0xae, 0xf9, 0x73, 0x97, - 0x73, 0x1b, 0x92, 0x38, - 0xc6, 0x81, 0x6a, 0xf0, 0x89, 0xb2, 0xa0, 0x16, 0xcd, 0x4a, 0xb3, 0x6a, - 0xb3, 0x17, 0xac, 0x99, - 0xed, 0x76, 0x94, 0xe7, 0xf4, 0xbc, 0xba, 0x47, 0x2f, 0xd9, 0x3d, 0x94, - 0x3d, 0xc6, 0x79, 0x33, - 0xc8, 0x6c, 0x54, 0x68, 0x9b, 0x91, 0xf1, 0xfa, 0xb5, 0x0e, 0x56, 0x54, - 0x56, 0x3d, 0x9c, 0xb6, - 0x9b, 0xb4, 0xfc, 0xb8, 0x6e, 0x70, 0xd0, 0xcd, 0x1c, 0x12, 0xfa, 0xfc, - 0xfa, 0x47, 0x67, 0x19, - 0xbd, 0xfd, 0xf0, 0xdc, 0x04, 0xb7, 0x29, 0x03, 0x5d, 0x92, 0x01, 0xf0, - 0x01, 0xb5, 0x4d, 0x35, - 0x84, 0xfe, 0x4c, 0xa0, 0x4f, 0xdc, 0xc0, 0xa5, 0x37, 0xcd, 0x63, 0x4c, - 0x63, 0x1a, 0xc8, 0xee, - 0xc3, 0x74, 0xfd, 0x0e, 0x86, 0x4f, 0xb5, 0x83, 0x63, 0xb3, 0xc0, 0xfd, - 0xc0, 0x0c, 0x3e, 0xa1, - 0xca, 0x0e, 0xdc, 0xda, 0x9d, 0x9c, 0x2d, 0x19, 0x27, 0xd5, 0xb6, 0xdc, - 0xb6, 0x33, 0x16, 0x78, - 0x8a, 0x13, 0x72, 0x38, 0x5d, 0xff, 0x91, 0x49, 0x4f, 0x89, 0x86, 0x72, - 0x86, 0x30, 0xf8, 0xc1, - 0x34, 0xbd, 0x4e, 0x0f, 0x5c, 0xa2, 0x0a, 0x39, 0xc9, 0x4c, 0x17, 0x4e, - 0x17, 0x8c, 0x7a, 0x5d, - 0x26, 0x49, 0x0c, 0x64, 0x6a, 0xc7, 0xf9, 0xce, 0x41, 0x80, 0xfb, 0x0c, - 0xfb, 0xf2, 0x2a, 0x2c, - 0x10, 0x96, 0xca, 0xd9, 0x30, 0x68, 0x2f, 0x14, 0x1a, 0x17, 0x0c, 0xca, - 0x0c, 0x70, 0xda, 0xbf, - 0x25, 0x1a, 0xc0, 0x8f, 0x6f, 0x2d, 0x4b, 0xbd, 0x9a, 0xd7, 0x6b, 0xc0, - 0x6b, 0xfb, 0xe5, 0x85, - 0xe3, 0x9b, 0xaa, 0x7f, 0xe6, 0x9f, 0xeb, 0xab, 0x57, 0x9d, 0xd8, 0xaa, - 0xd8, 0xec, 0x49, 0x1c, - 0x63, 0xa1, 0x35, 0x78, 0xa5, 0x59, 0x50, 0x0b, 0x87, 0x25, 0xb8, 0x35, - 0xb8, 0xea, 0x56, 0xad, - 0x0a, 0x29, 0xed, 0x3f, 0x1e, 0x39, 0x2a, 0xe9, 0x9f, 0x31, 0xe6, 0xed, - 0xe6, 0x36, 0xe7, 0x70, - 0x4f, 0xc1, 0xd4, 0x23, 0xd1, 0xa7, 0x83, 0x2c, 0x59, 0x94, 0xa5, 0xd4, - 0xa5, 0x2e, 0x9b, 0xf1, - 0x8b, 0x22, 0x36, 0x61, 0x5e, 0x18, 0xff, 0xd9, 0x06, 0x05, 0xf6, 0x36, - 0xf6, 0x37, 0xbd, 0xa6, - 0xc7, 0xb0, 0x2e, 0xa9, 0x8a, 0x55, 0xce, 0x86, 0x84, 0xc6, 0xc3, 0x2e, - 0xc3, 0x10, 0xe9, 0xfe, - 0x67, 0x65, 0xe6, 0xdf, 0xa9, 0x43, 0x2b, 0x0e, 0x60, 0x50, 0xbb, 0xe6, - 0xbb, 0xf6, 0x81, 0xf2, - 0x2d, 0x51, 0xa5, 0x02, 0x77, 0x19, 0xbd, 0xb7, 0x97, 0x3d, 0x6d, 0xa5, - 0x6d, 0xc3, 0x88, 0x3b, - 0xfe, 0xb3, 0x92, 0xd5, 0xc1, 0x3e, 0x27, 0x20, 0xee, 0x99, 0xa1, 0x92, - 0xa1, 0xbf, 0x6c, 0x25, - 0x45, 0xe8, 0x39, 0x1c, 0xcf, 0x9e, 0xa9, 0xc5, 0xc6, 0xa5, 0x43, 0x39, - 0x43, 0x18, 0x7c, 0x81, - 0xa0, 0xd5, 0xc8, 0x76, 0x23, 0x16, 0xe5, 0x88, 0xe4, 0x96, 0x78, 0xc8, - 0x78, 0xe6, 0x68, 0x0c, - 0x80, 0x3a, 0x9f, 0x07, 0x43, 0xc6, 0xbb, 0xa0, 0xd0, 0xb8, 0x60, 0x9f, - 0x60, 0x06, 0x1f, 0xb1, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x4a, 0x34, 0x43, 0xdd, 0xde, 0x5a, 0x96, 0xb9, 0xf7, 0x6d, 0xd6, 0x43, - 0xd6, 0x35, 0x09, 0xc9, - 0xee, 0x25, 0x58, 0x0c, 0xf1, 0x56, 0x08, 0x34, 0xf4, 0x8e, 0xad, 0x58, - 0xad, 0xcf, 0xb6, 0x9a, - 0x4c, 0x92, 0x18, 0xc8, 0xd4, 0x4d, 0x31, 0x5f, 0x82, 0xc3, 0x35, 0x18, - 0x35, 0x27, 0x54, 0x58, - }, - { /* 13 */ - 0xab, 0xda, 0x7f, 0x93, 0x75, 0x63, 0x3b, 0x22, 0xb7, 0x40, 0xa6, 0x84, - 0xc2, 0x22, 0x09, 0xda, - 0xbb, 0xd9, 0xf4, 0xa6, 0xc1, 0x1b, 0xf5, 0xe1, 0x54, 0xa2, 0xc5, 0x24, - 0x95, 0xe1, 0xdd, 0xd9, - 0x83, 0x3c, 0x0e, 0x02, 0x84, 0xaf, 0x03, 0xe7, 0x22, 0x36, 0xb0, 0x57, - 0xa6, 0xe7, 0x08, 0x3c, - 0x0d, 0x8c, 0x03, 0x40, 0xed, 0xc4, 0x60, 0xd0, 0xca, 0x0f, 0xa2, 0x72, - 0x27, 0xd0, 0xc3, 0x8c, - 0x3a, 0xdd, 0xd3, 0xea, 0xb2, 0xbb, 0x9f, 0x26, 0x52, 0x19, 0x41, 0x67, - 0xe0, 0x26, 0x2e, 0xdd, - 0x4a, 0xd4, 0xe4, 0x61, 0x38, 0x10, 0xb0, 0x2a, 0xbe, 0xf2, 0xab, 0x81, - 0x86, 0x2a, 0x47, 0xd4, - 0xe8, 0xf2, 0xca, 0x2e, 0x8d, 0xa9, 0x39, 0x98, 0x8b, 0x64, 0xc7, 0x5f, - 0x06, 0x98, 0xb8, 0xf2, - 0xeb, 0xd6, 0x16, 0x47, 0xe0, 0x40, 0x85, 0xa8, 0xbd, 0x4e, 0xe9, 0x41, - 0x5d, 0xa8, 0xdf, 0xd6, - 0x8f, 0xac, 0xf8, 0x65, 0xf3, 0x8d, 0xb6, 0x27, 0xfa, 0x9e, 0x08, 0x2f, - 0x09, 0x27, 0x57, 0xac, - 0xbe, 0xb5, 0x53, 0x1d, 0x76, 0xe3, 0xf2, 0xb1, 0x0e, 0xdc, 0xb7, 0x06, - 0x78, 0xb1, 0x74, 0xb5, - 0x0f, 0xb4, 0x2a, 0x0e, 0x1a, 0xcb, 0x09, 0xf0, 0xee, 0x82, 0x96, 0x66, - 0xf4, 0xf0, 0x38, 0xb4, - 0x6d, 0x86, 0xbf, 0xfe, 0xd3, 0x17, 0x81, 0x1f, 0xc5, 0x06, 0x2b, 0x34, - 0x16, 0x1f, 0x7e, 0x86, - 0x0a, 0xd8, 0x8d, 0xb5, 0xad, 0x33, 0x0e, 0xa0, 0xb4, 0xfc, 0xe4, 0x44, - 0x19, 0xa0, 0x91, 0xd8, - 0x29, 0xfa, 0x84, 0xb6, 0x6b, 0x2a, 0xed, 0xd5, 0x87, 0xd1, 0x0c, 0xd9, - 0xec, 0xd5, 0x9d, 0xfa, - 0x17, 0x57, 0x05, 0xc0, 0xf4, 0x8f, 0xa0, 0xb3, 0x9d, 0x11, 0x25, 0x96, - 0x69, 0xb3, 0x86, 0x57, - 0xb0, 0x1d, 0x8c, 0x34, 0xf6, 0xce, 0x2e, 0x51, 0xf2, 0xf9, 0x3b, 0x6a, - 0x04, 0x51, 0xd0, 0x1d, - 0xc5, 0x78, 0x1c, 0x04, 0xcb, 0x9d, 0x06, 0x0d, 0x44, 0x6c, 0xa3, 0xae, - 0x8f, 0x0d, 0x10, 0x78, - 0x4c, 0x9c, 0x9f, 0xb3, 0xe2, 0x01, 0x0b, 0x4a, 0xd2, 0xa6, 0xf7, 0xbd, - 0x30, 0x4a, 0x89, 0x9c, - 0xc3, 0x30, 0x67, 0xd6, 0x11, 0x8c, 0xbd, 0x6d, 0x28, 0x38, 0xff, 0x92, - 0x39, 0x6d, 0xde, 0x30, - 0xb5, 0x71, 0x2b, 0x8f, 0x41, 0x36, 0x29, 0x01, 0xa8, 0x87, 0x49, 0x48, - 0xe9, 0x01, 0x79, 0x71, - 0x74, 0x79, 0x65, 0x17, 0xa7, 0xb5, 0xfd, 0x4c, 0xa4, 0x32, 0x82, 0xce, - 0x03, 0x4c, 0x5c, 0x79, - 0x94, 0x6b, 0x0b, 0xc2, 0x70, 0x20, 0xa3, 0x54, 0xbf, 0x27, 0x95, 0xc1, - 0xcf, 0x54, 0x8e, 0x6b, - 0x1d, 0x8f, 0x88, 0x75, 0x59, 0xbc, 0xae, 0x13, 0x29, 0xed, 0xc1, 0xd2, - 0x70, 0x13, 0x17, 0x8f, - 0x25, 0x6a, 0x72, 0xd1, 0x1c, 0x08, 0x58, 0x15, 0x5f, 0x79, 0xb4, 0xa1, - 0x43, 0x15, 0xc2, 0x6a, - 0x48, 0xec, 0xcd, 0x2f, 0xcf, 0x1f, 0xd9, 0x0a, 0x9a, 0x7f, 0x9f, 0x95, - 0x55, 0x0a, 0xbc, 0xec, - 0xda, 0xcf, 0xbd, 0x3f, 0x65, 0x2e, 0xc1, 0x3e, 0x49, 0x0c, 0x56, 0x68, - 0x2c, 0x3e, 0xfc, 0xcf, - 0xdd, 0x9b, 0x33, 0xca, 0x25, 0xd9, 0xaf, 0x4e, 0x37, 0xff, 0x10, 0x5e, - 0x12, 0x4e, 0xae, 0x9b, - 0xe9, 0xee, 0x3f, 0x09, 0x17, 0x4f, 0xec, 0x88, 0x99, 0xc3, 0xdd, 0x55, - 0x8e, 0x88, 0x24, 0xee, - 0xea, 0xca, 0xe3, 0x60, 0x7a, 0xa6, 0x50, 0xb8, 0xaf, 0xe9, 0xf3, 0x4b, - 0xd5, 0xb8, 0x43, 0xca, - 0x73, 0x2d, 0xeb, 0xe2, 0xe7, 0x42, 0x93, 0x3c, 0xda, 0xc1, 0xc4, 0xf8, - 0x3d, 0x3c, 0x0e, 0x2d, - 0x2e, 0xae, 0x0a, 0x43, 0x2b, 0xdd, 0x83, 0xa5, 0xf9, 0x22, 0x4a, 0xef, - 0xd2, 0xa5, 0xcf, 0xae, - 0xf5, 0x7d, 0x42, 0x5b, 0xd4, 0x15, 0x97, 0x8b, 0xa2, 0x89, 0x06, 0x8d, - 0x76, 0x8b, 0xaf, 0x7d, - 0x26, 0x4e, 0xae, 0xb8, 0x71, 0xe1, 0xe4, 0x25, 0x69, 0x53, 0x9a, 0xbf, - 0x18, 0x25, 0xa5, 0x4e, - 0xd0, 0x17, 0x30, 0x8a, 0xc8, 0x1d, 0xcf, 0x9e, 0xfd, 0xf0, 0xb2, 0x2c, - 0x35, 0x9e, 0x6d, 0x17, - 0xc4, 0x64, 0xe9, 0x23, 0x51, 0x7b, 0xd3, 0x1d, 0x56, 0xcb, 0xb9, 0xa4, - 0x07, 0x1d, 0x8c, 0x64, - 0xf3, 0x35, 0x39, 0x89, 0x0e, 0x04, 0x2c, 0xeb, 0xce, 0xdd, 0x5a, 0xb1, - 0xc0, 0xeb, 0x61, 0x35, - 0x7b, 0xcd, 0x4f, 0x19, 0xbd, 0x7e, 0xf4, 0xbc, 0x4a, 0xb0, 0x14, 0xa8, - 0xf7, 0xbc, 0x64, 0xcd, - 0x4d, 0x80, 0x6a, 0x94, 0x78, 0xe7, 0xde, 0x5a, 0xc0, 0x01, 0xed, 0xb7, - 0xb8, 0x5a, 0x15, 0x80, - 0x45, 0x60, 0xce, 0x6f, 0x22, 0xdb, 0xb9, 0xda, 0x50, 0x70, 0x3d, 0xe7, - 0x72, 0xda, 0x7f, 0x60, - 0xa9, 0xe2, 0x56, 0xdd, 0x82, 0x6c, 0x52, 0x02, 0x93, 0xcd, 0x92, 0x90, - 0x11, 0x02, 0xf2, 0xe2, - 0x5e, 0xa7, 0x3d, 0xc8, 0xa1, 0x76, 0xac, 0xa9, 0x15, 0xc9, 0xa0, 0x09, - 0xb4, 0xa9, 0xa6, 0xa7, - 0xd8, 0xf7, 0x94, 0x71, 0x92, 0x21, 0xa8, 0x1e, 0x6d, 0x81, 0x62, 0x7c, - 0xff, 0x1e, 0x07, 0xf7, - 0x7e, 0xa1, 0xe8, 0xa2, 0x0a, 0x86, 0xf3, 0xec, 0x10, 0xce, 0x66, 0x8a, - 0x1a, 0xec, 0xcd, 0xa1, - 0xf2, 0x29, 0xcc, 0xae, 0x94, 0xe2, 0xf9, 0xfb, 0xdc, 0x7a, 0x40, 0xbb, - 0x48, 0xfb, 0xfd, 0x29, - 0x90, 0x1b, 0x59, 0x5e, 0x5d, 0x3e, 0x71, 0x14, 0xf7, 0xfe, 0xfd, 0xe9, - 0xaa, 0x14, 0xbb, 0x1b, - 0x77, 0x5d, 0xb9, 0x7e, 0xca, 0x5c, 0x41, 0x7c, 0x92, 0x18, 0xac, 0xd0, - 0x58, 0x7c, 0x3b, 0x5d, - 0x53, 0x2b, 0x3e, 0x88, 0x4c, 0xb2, 0xcc, 0x79, 0xdf, 0xc6, 0x02, 0x7b, - 0x93, 0x79, 0x65, 0x2b, - 0xe5, 0x7e, 0xc9, 0x6e, 0x60, 0x6d, 0x59, 0x48, 0x41, 0x6b, 0x65, 0x2d, - 0x21, 0x48, 0x7b, 0x7e, - 0x49, 0xf0, 0x38, 0x08, 0x55, 0xf9, 0x0c, 0x1a, 0x88, 0xd8, 0x85, 0x9f, - 0xdd, 0x1a, 0x20, 0xf0, - 0x98, 0xfb, 0xfd, 0xa5, 0x07, 0x02, 0x16, 0x94, 0x67, 0x8f, 0x2d, 0xb9, - 0x60, 0x94, 0xd1, 0xfb, - 0x13, 0x27, 0x57, 0x5c, 0xd9, 0x91, 0x72, 0xf3, 0xd5, 0xc8, 0x4d, 0xbe, - 0x0c, 0xf3, 0xb3, 0x27, - 0x43, 0x28, 0xb5, 0xbd, 0xf8, 0xca, 0x02, 0xba, 0x3c, 0x24, 0x61, 0xdb, - 0xc4, 0xba, 0xb1, 0x28, - 0xdc, 0x87, 0xc6, 0xed, 0xbf, 0x3f, 0x7a, 0x5e, 0x25, 0x58, 0x0a, 0x54, - 0x9a, 0x5e, 0x32, 0x87, - 0xc7, 0x40, 0x35, 0x4a, 0x3c, 0x92, 0x6f, 0x2d, 0x60, 0xe1, 0x97, 0xba, - 0x5c, 0x2d, 0xeb, 0x40, - 0xa0, 0x1e, 0x07, 0x01, 0x42, 0xb6, 0xe0, 0x92, 0x11, 0x1b, 0x58, 0xca, - 0x53, 0x92, 0x04, 0x1e, - 0xcc, 0x84, 0x4d, 0xd8, 0x0b, 0x47, 0xb4, 0x9d, 0xc6, 0xba, 0x69, 0xf4, - 0xcd, 0x9d, 0xe6, 0x84, - 0x14, 0x73, 0xd9, 0xa9, 0x99, 0x66, 0x1c, 0x83, 0xab, 0x3b, 0x0b, 0x88, - 0x32, 0x83, 0xe1, 0x73, - 0x52, 0x37, 0xcb, 0xaf, 0xd6, 0x54, 0x19, 0x69, 0xcd, 0x61, 0x18, 0x71, - 0x1b, 0x69, 0xf9, 0x37, - 0x2f, 0xb2, 0xff, 0x64, 0xb1, 0x3b, 0x56, 0xb5, 0xeb, 0x85, 0x50, 0xe5, - 0x5a, 0xb5, 0x53, 0xb2, - 0x47, 0x58, 0xe7, 0x21, 0xd5, 0xd4, 0xd0, 0xfa, 0x74, 0xfd, 0x09, 0xf3, - 0xa1, 0xfa, 0x84, 0x58, - 0xa6, 0x56, 0x7c, 0xd3, 0x98, 0xa7, 0x5b, 0xf2, 0x7d, 0x4f, 0x04, 0xf6, - 0xe5, 0xf2, 0xca, 0x56, - 0x5f, 0xbb, 0xc8, 0xef, 0x3b, 0x90, 0x79, 0xb9, 0x07, 0x6e, 0xba, 0x03, - 0x3c, 0xb9, 0x3a, 0xbb, - 0xe3, 0x36, 0xb2, 0xbc, 0xba, 0x7c, 0xe2, 0x28, 0x2d, 0x3f, 0x39, 0x11, - 0x97, 0x28, 0xb5, 0x36, - 0xb8, 0xfd, 0x28, 0xcf, 0xac, 0xf2, 0x49, 0xd1, 0x62, 0x88, 0xeb, 0x3a, - 0xce, 0xd1, 0xba, 0xfd, - 0xa7, 0x4a, 0x89, 0xf4, 0x02, 0x41, 0x8e, 0xe2, 0x6f, 0xe8, 0x1e, 0xfc, - 0x6d, 0xe2, 0x56, 0x4a, - 0xc0, 0x14, 0xbb, 0xbf, 0x7c, 0x65, 0x01, 0x5d, 0x1e, 0x12, 0xd1, 0x8c, - 0x62, 0x5d, 0xb9, 0x14, - 0x23, 0x22, 0x09, 0x03, 0xc6, 0x19, 0xe3, 0x75, 0x33, 0x2d, 0xe8, 0x9d, - 0xf5, 0x75, 0x0c, 0x22, - 0x2a, 0xde, 0x58, 0xdf, 0x06, 0xc3, 0x51, 0xe5, 0xb1, 0xfb, 0x22, 0xc7, - 0xb7, 0xe5, 0xfa, 0xde, - 0x62, 0x32, 0x95, 0xf0, 0xc9, 0xdc, 0x88, 0xef, 0x2b, 0x84, 0xbd, 0x52, - 0xe2, 0xef, 0x46, 0x32, - 0x7d, 0x85, 0x34, 0xcb, 0x67, 0x6f, 0x4f, 0xdc, 0x26, 0xe4, 0x48, 0x94, - 0x41, 0xdc, 0xaa, 0x85, - 0x31, 0x19, 0xab, 0x78, 0x85, 0x6e, 0x44, 0x96, 0xf4, 0x42, 0xbf, 0x29, - 0x71, 0x96, 0x23, 0x19, - 0x30, 0x05, 0x5e, 0x5f, 0x1f, 0x88, 0x91, 0x86, 0xe6, 0xe5, 0xa5, 0x23, - 0xf9, 0x86, 0xbf, 0x05, - 0xc1, 0x08, 0x4e, 0x98, 0xe6, 0x83, 0xd4, 0x4d, 0x0c, 0xb5, 0xcb, 0x86, - 0xea, 0x4d, 0x25, 0x08, - 0x20, 0x06, 0xd5, 0x6a, 0xab, 0xf0, 0x5f, 0x45, 0x05, 0x07, 0xc6, 0x83, - 0xae, 0x45, 0x6b, 0x06, - 0x8a, 0xc0, 0x5f, 0xde, 0x44, 0x75, 0xb1, 0x77, 0xa0, 0xe0, 0x7a, 0x0d, - 0xe4, 0x77, 0xfe, 0xc0, - 0xd7, 0x43, 0xbe, 0x7f, 0x88, 0xea, 0xa1, 0xee, 0x83, 0x03, 0xf4, 0x1a, - 0x0b, 0xee, 0x3f, 0x43, - 0x3d, 0x89, 0x5d, 0x1f, 0xf2, 0x4c, 0xf1, 0x56, 0x2c, 0xea, 0x07, 0x51, - 0xde, 0x56, 0x7c, 0x89, - 0xbf, 0xa9, 0xa6, 0x3a, 0xec, 0x05, 0x27, 0xa1, 0x1c, 0x7b, 0xad, 0x0c, - 0xf0, 0xa1, 0xe8, 0xa9, - 0xc6, 0x5c, 0xc0, 0x6d, 0xa6, 0x74, 0xba, 0x3d, 0x72, 0x46, 0x8d, 0xb0, - 0xd4, 0x3d, 0x77, 0x5c, - 0x72, 0x31, 0x1e, 0xc5, 0x7d, 0xa4, 0x46, 0x2c, 0xc8, 0x66, 0xde, 0xf2, - 0xb5, 0x2c, 0x92, 0x31, - 0xdb, 0xd3, 0x48, 0x18, 0xff, 0xc8, 0x14, 0x2e, 0x5b, 0xab, 0x4c, 0x62, - 0xa4, 0x2e, 0x60, 0xd3, - 0x15, 0x6f, 0x2c, 0x8e, 0x03, 0x80, 0xc9, 0x93, 0xb9, 0x9c, 0x11, 0x82, - 0xba, 0x93, 0x7d, 0x6f, - 0x99, 0xe7, 0x08, 0x82, 0x9d, 0xe4, 0xc3, 0x84, 0x75, 0x28, 0x37, 0xb3, - 0xe8, 0x84, 0x4d, 0xe7, - 0x4b, 0xc8, 0x11, 0x46, 0xa2, 0xf6, 0x65, 0x3a, 0xac, 0x55, 0xb1, 0x8b, - 0x0e, 0x3a, 0xdb, 0xc8, - 0x34, 0x75, 0x0c, 0xc3, 0x32, 0x96, 0x43, 0xc6, 0xae, 0x3c, 0xcd, 0x0b, - 0x9c, 0xc6, 0x8a, 0x75, - 0x60, 0x0a, 0xbc, 0xbe, 0x3e, 0xd3, 0xe1, 0xcf, 0x0f, 0x09, 0x89, 0x46, - 0x31, 0xcf, 0xbd, 0x0a, - 0x92, 0x23, 0x70, 0x10, 0xaa, 0x31, 0x18, 0x34, 0xd3, 0x73, 0xc9, 0xfd, - 0x79, 0x34, 0x40, 0x23, - 0xac, 0x8e, 0xf1, 0x66, 0x35, 0x94, 0x55, 0x52, 0xc9, 0xb3, 0xe0, 0xb2, - 0xfc, 0x52, 0x5b, 0x8e, - 0x6e, 0xa2, 0x63, 0x97, 0xbe, 0xfe, 0x3d, 0x2f, 0xf3, 0x2c, 0x05, 0x2a, - 0x4d, 0x2f, 0x19, 0xa2, - 0xa1, 0x02, 0xf2, 0x26, 0xd8, 0x50, 0x35, 0x82, 0x03, 0xbc, 0x42, 0xc0, - 0xdb, 0x82, 0x98, 0x02, - 0x81, 0x04, 0x27, 0x4c, 0x73, 0xa0, 0x6a, 0xc7, 0x06, 0xbb, 0x84, 0x43, - 0x75, 0xc7, 0xf3, 0x04, - 0x3b, 0xc1, 0x26, 0xcd, 0x28, 0x5d, 0x4a, 0x36, 0x40, 0xbe, 0x5b, 0x6d, - 0x68, 0x36, 0xb2, 0xc1, - 0x19, 0xff, 0xda, 0xe9, 0x74, 0xa2, 0x7c, 0x53, 0x61, 0x34, 0xa9, 0xfa, - 0x15, 0x53, 0x22, 0xff, - 0xe4, 0x62, 0x3c, 0x49, 0xfa, 0x8b, 0x8c, 0x58, 0x53, 0xcc, 0x7f, 0x27, - 0xa9, 0x58, 0xe7, 0x62, - 0x2c, 0x96, 0x23, 0x0d, 0xdc, 0xd2, 0xea, 0x85, 0xdd, 0xaf, 0x7e, 0xfb, - 0x01, 0x85, 0x34, 0x96, - 0xbd, 0x91, 0x8f, 0x74, 0x1b, 0x0a, 0x4e, 0x81, 0x38, 0xf6, 0x99, 0x18, - 0x23, 0x81, 0x13, 0x91, - 0xb6, 0x55, 0xf7, 0xe6, 0x2c, 0xdf, 0x95, 0x31, 0x9e, 0xad, 0x67, 0x56, - 0xb2, 0x31, 0x1e, 0x55, - 0xd3, 0x33, 0xec, 0xe3, 0xa5, 0xf4, 0x73, 0xae, 0xcb, 0xda, 0x9c, 0x32, - 0x6e, 0xae, 0x0a, 0x33, - 0xe7, 0x46, 0xe0, 0x20, 0x97, 0x62, 0x30, 0x68, 0x65, 0xe6, 0x51, 0x39, - 0xf2, 0x68, 0x80, 0x46, - 0x9b, 0xdf, 0x21, 0xcc, 0x6a, 0xeb, 0xaa, 0xa4, 0x51, 0xa5, 0x03, 0xa7, - 0x3b, 0xa4, 0xb6, 0xdf, - 0x8c, 0x88, 0x24, 0x0c, 0x9e, 0x64, 0x0a, 0x17, 0xcc, 0xb4, 0x26, 0x31, - 0x52, 0x17, 0x30, 0x88, - 0x04, 0x70, 0x52, 0x9c, 0x2d, 0x1e, 0xd2, 0x40, 0x48, 0xd9, 0x68, 0x28, - 0x65, 0x40, 0x35, 0x70, - 0x86, 0x50, 0xa9, 0xb9, 0x33, 0x57, 0x04, 0xb7, 0x78, 0x48, 0xc2, 0x75, - 0x4b, 0xb7, 0xa1, 0x50, - 0xef, 0xa6, 0x44, 0xdb, 0xcd, 0x5e, 0x57, 0xe8, 0xf5, 0x97, 0x81, 0x69, - 0x38, 0xe8, 0xea, 0xa6, - 0x32, 0x3d, 0x77, 0x11, 0xe8, 0x87, 0xf8, 0xa6, 0xc2, 0x68, 0x91, 0x37, - 0x2a, 0xa6, 0x44, 0x3d, - 0x0b, 0xc4, 0x78, 0x92, 0x37, 0xd5, 0xdb, 0xb0, 0xa6, 0x5b, 0xfe, 0x4e, - 0x91, 0xb0, 0x0d, 0xc4, - 0x9e, 0xb3, 0x86, 0x77, 0xdd, 0x13, 0xad, 0xf4, 0x0b, 0xdb, 0x71, 0x85, - 0xd6, 0xf4, 0x1f, 0xb3, - 0x80, 0x18, 0xd2, 0x6b, 0xe9, 0x46, 0xbf, 0xd7, 0x14, 0x1c, 0x9e, 0x49, - 0xfd, 0xd7, 0x6f, 0x18, - 0x1c, 0x93, 0x7d, 0x52, 0xc3, 0x5a, 0x7b, 0x03, 0x3b, 0x4a, 0xdb, 0xd8, - 0xf8, 0x03, 0x8b, 0x93, - 0xb1, 0x01, 0x79, 0x13, 0x6c, 0x28, 0xfb, 0x41, 0xe0, 0x5e, 0x21, 0x60, - 0x8c, 0x41, 0x4c, 0x01, - 0xd4, 0x67, 0x62, 0x16, 0xe5, 0x03, 0x1d, 0xde, 0xb5, 0x29, 0xda, 0x04, - 0x50, 0xde, 0x58, 0x67, - 0x7a, 0xd1, 0xba, 0x3e, 0x27, 0x98, 0x21, 0xac, 0x58, 0x17, 0x0e, 0xa2, - 0x7f, 0xac, 0xf8, 0xd1, - 0x5b, 0xcb, 0x9a, 0x73, 0x16, 0x8e, 0xab, 0xf9, 0x4f, 0xb7, 0xd2, 0x2b, - 0x59, 0xf9, 0x0f, 0xcb, - 0xa3, 0x3a, 0xdb, 0x68, 0x2f, 0x5f, 0x5c, 0xa2, 0x27, 0x31, 0x76, 0xd4, - 0x08, 0xa2, 0x63, 0x3a, - 0xf9, 0xed, 0xb4, 0x3c, 0xa3, 0x37, 0x22, 0x4b, 0x7a, 0x21, 0xbe, 0xf5, - 0xd9, 0x4b, 0xf0, 0xed, - 0x33, 0x21, 0x82, 0x36, 0x72, 0x61, 0x2d, 0xb6, 0xd0, 0xcf, 0x8b, 0x3d, - 0xa2, 0xb6, 0xd8, 0x21, - 0x68, 0xea, 0x18, 0x45, 0x64, 0xef, 0x86, 0x4f, 0x9f, 0x78, 0x59, 0x16, - 0xfb, 0x4f, 0xd7, 0xea, - 0x96, 0x53, 0x22, 0x8c, 0x87, 0x2f, 0xca, 0x74, 0x9b, 0xaa, 0xa1, 0xd5, - 0x1c, 0x74, 0x75, 0x53, - 0x46, 0x44, 0x12, 0x06, 0x4f, 0x32, 0x05, 0xea, 0x66, 0x5a, 0x13, 0xf9, - 0x29, 0xea, 0x18, 0x44, - 0x02, 0x38, 0x29, 0x4e, 0xf7, 0x0f, 0x69, 0x20, 0x24, 0x8d, 0x34, 0x14, - 0xd3, 0x20, 0xfb, 0x38, - 0xff, 0xa5, 0xcf, 0xee, 0x79, 0x26, 0x99, 0x2b, 0x16, 0x75, 0xe2, 0xc9, - 0x6f, 0x2b, 0x3e, 0xa5, - 0x95, 0x77, 0xfe, 0xe5, 0xea, 0xc6, 0x76, 0x44, 0xad, 0x80, 0x8f, 0xcb, - 0x47, 0x44, 0x12, 0x77, - 0x64, 0x7a, 0xee, 0x22, 0x13, 0xcd, 0x33, 0x8f, 0x47, 0xd0, 0xe1, 0x6e, - 0x54, 0x8f, 0x88, 0x7a, - 0x40, 0x0c, 0x69, 0xd4, 0x95, 0x23, 0xbe, 0x8a, 0x0a, 0x0e, 0x4f, 0xc5, - 0x9f, 0x8a, 0xd6, 0x0c, - 0x41, 0x10, 0x9c, 0xf3, 0x0f, 0xc5, 0x6b, 0x9a, 0x18, 0xa9, 0x55, 0xcf, - 0x17, 0x9a, 0x4a, 0x10, - 0x16, 0x4b, 0xf0, 0xe7, 0x6e, 0x69, 0x75, 0xa3, 0x8f, 0xb6, 0x3f, 0x9c, - 0xe1, 0xa3, 0x1a, 0x4b, - 0x0e, 0xa8, 0xdf, 0x29, 0x80, 0x2d, 0xdc, 0xe0, 0xfc, 0x25, 0x8c, 0x6c, - 0x7c, 0xe0, 0xa4, 0xa8, - 0xb9, 0xe1, 0xdd, 0xe8, 0x36, 0x14, 0x9c, 0xc1, 0x70, 0x2f, 0xf1, 0x30, - 0x46, 0xc1, 0x26, 0xe1, - 0xfd, 0x9d, 0xe6, 0xa0, 0x8e, 0x29, 0xf0, 0x0b, 0x32, 0xf8, 0xd6, 0xdd, - 0xbc, 0x0b, 0xc5, 0x9d, - 0x6f, 0xbe, 0x96, 0xb0, 0x24, 0x18, 0xe8, 0x3f, 0xe1, 0x8b, 0x1f, 0x20, - 0xc5, 0x3f, 0x85, 0xbe, - 0x91, 0x07, 0xac, 0x79, 0xc7, 0xd8, 0xa4, 0x04, 0xe5, 0x59, 0xe7, 0xe3, - 0x22, 0x04, 0x27, 0x07, - 0xa5, 0x72, 0xa0, 0xba, 0xf5, 0x4e, 0xe7, 0xc2, 0x4b, 0x65, 0x2a, 0xe8, - 0xbe, 0xc2, 0xad, 0x72, - 0xcf, 0xa0, 0x91, 0xb1, 0x66, 0xae, 0x08, 0xad, 0xf0, 0x90, 0x47, 0xea, - 0x96, 0xad, 0x81, 0xa0, - 0x56, 0x47, 0x99, 0x33, 0xfb, 0x4a, 0xcb, 0x29, 0x85, 0xb8, 0x70, 0x59, - 0x7e, 0x29, 0xcc, 0x47, - 0xba, 0xc5, 0x01, 0x81, 0x5b, 0xfd, 0x20, 0xf1, 0x46, 0x05, 0xdf, 0x2e, - 0x1d, 0xf1, 0x41, 0xc5, - 0x61, 0x16, 0x49, 0x99, 0xa4, 0x35, 0x34, 0xdf, 0x1d, 0xae, 0x93, 0x4c, - 0xb9, 0xdf, 0x21, 0x16, - 0x18, 0xe3, 0x2f, 0xce, 0xee, 0x44, 0xa9, 0x43, 0x73, 0x93, 0xb3, 0xf0, - 0x9d, 0x43, 0xbe, 0xe3, - 0x54, 0x7f, 0xb0, 0x7d, 0x0c, 0x45, 0xa2, 0x09, 0xa1, 0x35, 0x44, 0x4d, - 0xad, 0x09, 0x37, 0x7f, - 0x8b, 0xdc, 0xaa, 0xf9, 0xde, 0x93, 0x64, 0x67, 0xb2, 0x47, 0x60, 0x07, - 0x6c, 0x67, 0x62, 0xdc, - 0x3e, 0xad, 0x81, 0x76, 0x9f, 0xa5, 0x4d, 0x66, 0x1a, 0xc0, 0x29, 0x4f, - 0x85, 0x66, 0x1b, 0xad, - 0x5a, 0xd7, 0x6f, 0x54, 0x8c, 0x68, 0x7e, 0xe9, 0x5d, 0x10, 0xc8, 0x21, - 0xd1, 0xe9, 0x93, 0xd7, - 0xce, 0xbc, 0x64, 0x96, 0xfc, 0x48, 0xdd, 0xbd, 0xe2, 0x37, 0x5d, 0xe0, - 0x1e, 0xbd, 0x1d, 0xbc, - 0xf7, 0x45, 0x6b, 0x15, 0x23, 0x1a, 0xfe, 0xab, 0x86, 0x04, 0x32, 0x99, - 0xa5, 0xab, 0x54, 0x45, - 0xd2, 0x2f, 0x19, 0xc4, 0x3f, 0x12, 0xa6, 0xbe, 0xd9, 0x7d, 0x86, 0x38, - 0xe6, 0xbe, 0x96, 0x2f, - 0x82, 0x20, 0xfb, 0x25, 0x1e, 0x49, 0xd6, 0xf7, 0x30, 0x91, 0xaa, 0x5d, - 0x2e, 0xf7, 0x94, 0x20, - 0xb3, 0x39, 0x50, 0x5d, 0x9b, 0x27, 0x92, 0x61, 0xc4, 0xd3, 0x15, 0x74, - 0x5f, 0x61, 0xb7, 0x39, - 0xb4, 0x6d, 0xde, 0xa8, 0xdb, 0xd0, 0xfc, 0x11, 0xba, 0x20, 0x53, 0x42, - 0x61, 0x11, 0xe5, 0x6d, - 0xd6, 0x5f, 0x4b, 0x58, 0x12, 0x0c, 0x74, 0xfe, 0x91, 0xa4, 0xee, 0x10, - 0x83, 0xfe, 0xa3, 0x5f, - 0xe1, 0x0e, 0x9b, 0xf2, 0x4d, 0x73, 0x8b, 0x08, 0x09, 0xb2, 0x0d, 0x05, - 0x44, 0x08, 0x4e, 0x0e, - 0xc2, 0x2c, 0x92, 0xf1, 0x8b, 0x6a, 0x68, 0x7d, 0x3a, 0x9f, 0xe5, 0x98, - 0xb1, 0x7d, 0x42, 0x2c, - 0x5d, 0x83, 0xe1, 0xa1, 0xcc, 0x9f, 0x10, 0x99, 0x23, 0xe3, 0x8e, 0x17, - 0xef, 0x99, 0xc1, 0x83, - 0xfa, 0xc9, 0x68, 0x55, 0xce, 0xde, 0x9e, 0x7b, 0x4c, 0x0b, 0x90, 0xeb, - 0x82, 0x7b, 0x97, 0xc9, - 0xa4, 0x6e, 0x55, 0x9d, 0x6f, 0xa8, 0x32, 0xd2, 0x59, 0xc2, 0x30, 0xe2, - 0x36, 0xd2, 0x31, 0x6e, - 0x1f, 0xb7, 0xa1, 0x3b, 0xae, 0xb3, 0xc7, 0x33, 0x0d, 0x60, 0xf5, 0xc6, - 0xa3, 0x33, 0xec, 0xb7, - 0x0c, 0x90, 0xf6, 0x67, 0x77, 0x22, 0xb5, 0xc0, 0xd8, 0xa8, 0xb8, 0x78, - 0xaf, 0xc0, 0x5f, 0x90, - 0x01, 0x1c, 0xf5, 0x27, 0x9a, 0xe6, 0xd5, 0x10, 0x12, 0xa7, 0x1a, 0x0a, - 0x88, 0x10, 0x9c, 0x1c, - 0x2d, 0x8a, 0xd6, 0x2a, 0x46, 0x34, 0x3f, 0x95, 0xcf, 0x08, 0x64, 0xf1, - 0x89, 0x95, 0xa8, 0x8a, - 0x67, 0x5e, 0x32, 0x4b, 0x7e, 0x24, 0x8f, 0xbf, 0x71, 0xfa, 0xcf, 0x70, - 0x0f, 0xbf, 0xef, 0x5e, - 0xe2, 0x2a, 0x47, 0x9b, 0x20, 0x9a, 0x37, 0x38, 0x3f, 0x98, 0x23, 0x1b, - 0x1f, 0x38, 0x29, 0x2a, - 0x09, 0xfc, 0x51, 0xdc, 0xc0, 0xda, 0xb2, 0x90, 0x82, 0xd6, 0xca, 0x5a, - 0x42, 0x90, 0xf6, 0xfc, - 0x57, 0x5b, 0x6c, 0x14, 0x61, 0xac, 0x1e, 0x39, 0x97, 0x1f, 0x6a, 0x53, - 0xf6, 0x39, 0x50, 0x5b, - 0x11, 0x1f, 0x7e, 0x12, 0x2e, 0x9e, 0x1b, 0xd3, 0xf1, 0x45, 0x79, 0xaa, - 0xdf, 0xd3, 0x48, 0x1f, - 0xb7, 0x49, 0x02, 0xc1, 0xb6, 0x39, 0x40, 0x21, 0x8c, 0x0a, 0x7d, 0x5c, - 0x3a, 0x21, 0x82, 0x49, - 0xdf, 0xa3, 0x1a, 0x84, 0xd2, 0xd6, 0xc6, 0x6e, 0x13, 0x72, 0x24, 0x4a, - 0xc1, 0x6e, 0x55, 0xa3, - 0x6a, 0xd2, 0x31, 0x0b, 0x93, 0xe0, 0xef, 0x6f, 0xbb, 0xf5, 0x6d, 0x02, - 0x28, 0x6f, 0x2c, 0xd2, - 0x93, 0x3f, 0x85, 0x37, 0x30, 0xd7, 0xcd, 0x24, 0xc1, 0xd4, 0xd3, 0xf7, - 0xf1, 0x24, 0xdc, 0x3f, - 0x24, 0x76, 0x87, 0xf6, 0x86, 0xee, 0x8d, 0x05, 0x4d, 0xde, 0xae, 0xab, - 0xcb, 0x05, 0x5e, 0x76, - 0x7f, 0xbd, 0x1d, 0x85, 0x90, 0x60, 0x26, 0xfc, 0x02, 0x69, 0x7c, 0x80, - 0x92, 0xfc, 0x51, 0xbd, - 0x66, 0x42, 0xc7, 0x6c, 0xe4, 0xc2, 0x5a, 0xaf, 0x63, 0x5d, 0xd5, 0x7a, - 0x87, 0xaf, 0x73, 0x42, - 0xfe, 0xb9, 0x3a, 0xc9, 0xe3, 0xc0, 0x4c, 0x3b, 0x04, 0xd2, 0xf8, 0xc3, - 0xe7, 0x3b, 0xa2, 0xb9, - 0x07, 0x54, 0x8e, 0xf5, 0x40, 0xf7, 0x6e, 0x70, 0x7e, 0xf3, 0x46, 0x36, - 0x3e, 0x70, 0x52, 0x54, - 0x44, 0x7c, 0x3b, 0x48, 0xb8, 0x3d, 0x6c, 0xca, 0x42, 0xd7, 0x27, 0xed, - 0xfa, 0xca, 0xe3, 0x7c, - 0x3f, 0xb1, 0x74, 0x51, 0x05, 0x43, 0x98, 0x76, 0x08, 0x67, 0x33, 0x45, - 0x0d, 0x76, 0x87, 0xb1, - 0xf8, 0xf1, 0x41, 0x1b, 0x39, 0xd1, 0xf7, 0x5b, 0x68, 0x86, 0xa4, 0xff, - 0x51, 0x5b, 0x6c, 0xf1, - 0x06, 0x48, 0x7b, 0xd2, 0xda, 0x11, 0xbb, 0x60, 0x6c, 0x54, 0x5c, 0x3c, - 0xb6, 0x60, 0xce, 0x48, - 0xca, 0xcc, 0x36, 0x0a, 0xd1, 0x56, 0x0f, 0xfd, 0xaa, 0xee, 0x35, 0xc8, - 0x7b, 0xfd, 0x28, 0xcc, - 0xad, 0x92, 0x04, 0x41, 0xaf, 0x72, 0x80, 0x42, 0xdb, 0x14, 0xfa, 0xb8, - 0x74, 0x42, 0xc7, 0x92, - 0x2b, 0xc2, 0xad, 0xf8, 0x9c, 0x25, 0x84, 0xf5, 0xa3, 0x5c, 0x38, 0xcd, - 0x3f, 0xf5, 0x66, 0xc2, - 0xae, 0xb6, 0xd8, 0x28, 0xc2, 0x9b, 0x3c, 0x72, 0xed, 0x3e, 0xd4, 0xa6, - 0x2f, 0x72, 0xa0, 0xb6, - 0x22, 0x3e, 0xfc, 0x24, 0x5c, 0xff, 0x36, 0x65, 0x21, 0x8a, 0xf2, 0x97, - 0x7d, 0x65, 0x90, 0x3e, - 0x39, 0xf9, 0x0f, 0x83, 0xdf, 0x52, 0x23, 0x16, 0x64, 0x33, 0x6f, 0x79, - 0xbb, 0x16, 0x49, 0xf9, - 0xde, 0xbf, 0xef, 0xa3, 0x48, 0x30, 0x13, 0x7e, 0x01, 0xd5, 0x3e, 0x40, - 0x49, 0x7e, 0xc9, 0xbf, - 0x1e, 0xab, 0x54, 0x1c, 0x34, 0x55, 0x12, 0x23, 0x1f, 0xc7, 0xef, 0xcc, - 0x2b, 0x23, 0x70, 0xab, - 0xa8, 0xfe, 0xa3, 0xfa, 0x18, 0x8a, 0x87, 0x12, 0x81, 0x6a, 0x88, 0x9a, - 0x99, 0x12, 0x6e, 0xfe, - 0x58, 0xef, 0x46, 0x1a, 0x7b, 0x67, 0x17, 0xc9, 0x79, 0x9d, 0xfc, 0x35, - 0x02, 0xc9, 0x68, 0xef, - 0x88, 0xf8, 0x76, 0x90, 0xb3, 0x7a, 0xd8, 0x57, 0x84, 0x6d, 0x4e, 0x19, - 0x37, 0x57, 0x05, 0xf8, - 0x9a, 0xc3, 0xd4, 0xeb, 0xf0, 0x0d, 0x7f, 0xb4, 0x43, 0x02, 0x19, 0xad, - 0xb3, 0xb4, 0x2a, 0xc3, - 0x69, 0xf6, 0xed, 0x62, 0xfe, 0x09, 0x53, 0x5f, 0x8d, 0xdf, 0x43, 0x1c, - 0x73, 0x5f, 0x4b, 0xf6, - 0x28, 0xe6, 0x71, 0x91, 0xf1, 0xcc, 0x38, 0xc5, 0x95, 0x76, 0x16, 0xd3, - 0x64, 0xc5, 0x01, 0xe6, - 0x65, 0x66, 0x1b, 0x05, 0x89, 0x2b, 0xe6, 0x9f, 0x55, 0x77, 0xfb, 0x64, - 0xdc, 0x9f, 0x14, 0x66, - 0xd5, 0x7b, 0x97, 0x31, 0x7f, 0xe5, 0xc8, 0xce, 0xa7, 0x8e, 0xc0, 0x0e, - 0xd8, 0xce, 0xc4, 0x7b, - 0x7c, 0x99, 0xc1, 0xec, 0xfd, 0x89, 0x9a, 0xcc, 0x34, 0x43, 0x52, 0x9e, - 0xc9, 0xcc, 0x36, 0x99, - 0xbc, 0x8d, 0x7a, 0x53, 0x81, 0xec, 0x9b, 0x91, 0x2a, 0x51, 0x83, 0x12, - 0xab, 0x91, 0x8f, 0x8d, - 0x38, 0xe5, 0xfa, 0xa4, 0x45, 0xb4, 0xf6, 0x06, 0x76, 0x94, 0x75, 0x73, - 0x33, 0x06, 0xd5, 0xe5, - 0x4f, 0xb8, 0x43, 0xda, 0x8f, 0xe8, 0xb7, 0x7a, 0xe4, 0x8c, 0xd9, 0xa3, - 0x6b, 0x7a, 0xee, 0xb8, - 0xe0, 0x12, 0x6e, 0xd5, 0xd7, 0x95, 0x5e, 0x18, 0x1b, 0x15, 0x17, 0x0f, - 0xcc, 0x18, 0xd2, 0x12, - 0x27, 0x52, 0x5b, 0x9f, 0xeb, 0x07, 0x31, 0x35, 0x7b, 0xf4, 0x80, 0xb5, - 0x90, 0x35, 0x39, 0x52, - 0x76, 0x41, 0x4c, 0x59, 0x50, 0xba, 0x94, 0x6c, 0x80, 0xbf, 0xb6, 0xda, - 0xd0, 0x6c, 0xa7, 0x41, - 0x78, 0xe9, 0x93, 0x70, 0xd0, 0x97, 0x48, 0x8c, 0x7c, 0x9a, 0x3a, 0xb6, - 0xac, 0x8c, 0x03, 0xe9, - 0x89, 0xe4, 0x83, 0xb7, 0x29, 0x9c, 0x0d, 0x47, 0x96, 0xca, 0x54, 0x13, - 0xbf, 0x47, 0x99, 0xe4, - 0x8d, 0x94, 0xd1, 0x2b, 0x04, 0x82, 0xdf, 0x07, 0xde, 0x13, 0x3c, 0x3b, - 0xda, 0x07, 0xac, 0x94, - 0xaf, 0xaa, 0x2d, 0x0f, 0x58, 0x7d, 0xe9, 0x62, 0xff, 0x99, 0xce, 0xac, - 0xa7, 0x62, 0x3c, 0xaa, - 0x9f, 0xaf, 0x73, 0x50, 0x47, 0xf5, 0x78, 0xe4, 0x19, 0x7c, 0x6b, 0x8f, - 0x5e, 0xe4, 0x83, 0xaf, - 0x84, 0x68, 0x80, 0xf7, 0xc4, 0x58, 0x6d, 0x97, 0x5c, 0xc5, 0xf6, 0x61, - 0x98, 0x97, 0x5a, 0x68, - 0xe6, 0x5a, 0x15, 0x07, 0x0d, 0x84, 0xe5, 0x78, 0x77, 0x41, 0x4b, 0x33, - 0x7a, 0x78, 0x1c, 0x5a, - 0xf1, 0x0d, 0x10, 0xc7, 0xf9, 0x0b, 0x45, 0xcb, 0xea, 0x50, 0x6e, 0xa5, - 0x13, 0xcb, 0x9a, 0x0d, - 0x63, 0x2e, 0x60, 0xd7, 0x53, 0x3a, 0x5d, 0xff, 0x39, 0x23, 0xa7, 0x58, - 0x6a, 0xff, 0xda, 0x2e, - 0x51, 0x13, 0x17, 0xc6, 0xbb, 0xbd, 0xa5, 0x59, 0xfb, 0x4b, 0x36, 0x6f, - 0x40, 0x59, 0x9e, 0x13, - 0xc8, 0xf4, 0x1f, 0x44, 0x26, 0x59, 0x66, 0xdd, 0x8e, 0x63, 0x01, 0xdc, - 0xa8, 0xdd, 0xd3, 0xf4, - 0x03, 0x24, 0xdc, 0x69, 0x6d, 0xe9, 0xbc, 0x30, 0x36, 0x2a, 0x2e, 0x1e, - 0x5b, 0x30, 0x67, 0x24, - 0xed, 0x9e, 0x6d, 0x95, 0x3a, 0x51, 0x3e, 0xc8, 0xd1, 0x1a, 0xb5, 0x7d, - 0xeb, 0xc8, 0x11, 0x9e, - 0x70, 0x09, 0x37, 0x8b, 0x8a, 0xab, 0x2f, 0x0c, 0xec, 0xeb, 0xea, 0xe6, - 0x66, 0x0c, 0x69, 0x09, - 0x3c, 0x95, 0xa8, 0x38, 0x68, 0xaa, 0x24, 0x46, 0x3e, 0x4d, 0x1d, 0x5b, - 0x56, 0x46, 0xe0, 0x95, - 0x8e, 0xb0, 0x0d, 0x42, 0x69, 0x6b, 0x63, 0x37, 0xe8, 0x39, 0x12, 0x25, - 0x81, 0x37, 0xcb, 0xb0, - 0xd9, 0xeb, 0x61, 0x56, 0x08, 0xc7, 0x7d, 0x0e, 0x7f, 0x26, 0x78, 0x76, - 0x77, 0x0e, 0x9b, 0xeb, - 0x10, 0x03, 0x8b, 0x35, 0xb4, 0x78, 0xce, 0xc3, 0xe3, 0xe2, 0x63, 0xa0, - 0x57, 0xc3, 0xd4, 0x03, - 0x1a, 0xdb, 0x06, 0x80, 0x19, 0x4b, 0xc0, 0x63, 0x57, 0x1e, 0x87, 0xe4, - 0x4e, 0x63, 0x45, 0xdb, - 0x9d, 0x97, 0x5a, 0x1e, 0xb0, 0xfa, 0x11, 0xc4, 0x3d, 0xf1, 0x5f, 0x9b, - 0x8d, 0xc4, 0x78, 0x97, - 0xee, 0xba, 0xb1, 0xfc, 0x57, 0xb8, 0x82, 0xf8, 0xe7, 0x30, 0x9b, 0x63, - 0xb0, 0xf8, 0x76, 0xba, - 0xcb, 0xd0, 0xc3, 0x2d, 0x4b, 0xb0, 0xda, 0xed, 0xb8, 0x49, 0x2f, 0xc2, - 0xf3, 0xed, 0xb4, 0xd0, - 0x97, 0x4f, 0xd7, 0xab, 0x1d, 0xc9, 0x1f, 0x64, 0x89, 0x0d, 0xbb, 0xdf, - 0x94, 0x64, 0xe9, 0x4f, - 0xc9, 0xe8, 0xea, 0x63, 0xbc, 0xbf, 0xb3, 0xcd, 0x9c, 0xc4, 0x1b, 0xd6, - 0x20, 0xcd, 0x4f, 0xe8, - 0x79, 0xf5, 0x66, 0x57, 0x4a, 0x71, 0x9d, 0x9c, 0x6e, 0x3d, 0x20, 0xbc, - 0x24, 0x9c, 0x9f, 0xf5, - 0xb2, 0x25, 0xa5, 0x7a, 0x01, 0xc1, 0x47, 0x71, 0xd6, 0x74, 0x0f, 0x7e, - 0xd7, 0x71, 0x2b, 0x25, - 0x35, 0x69, 0xf9, 0xe4, 0xa8, 0x70, 0x96, 0xd6, 0xbc, 0x9b, 0xd7, 0x01, - 0x14, 0xd6, 0x16, 0x69, - 0x6c, 0x9a, 0x4a, 0xd9, 0x49, 0xf1, 0x54, 0x0f, 0xd7, 0xa1, 0x31, 0x3e, - 0x9e, 0x0f, 0xe2, 0x9a, - 0x9c, 0x8b, 0xaf, 0x39, 0x2a, 0x1c, 0xc4, 0xd4, 0x2f, 0x56, 0x45, 0x91, - 0x05, 0xd4, 0xe4, 0x8b, - 0x1b, 0xc7, 0xf3, 0xa7, 0x83, 0xad, 0x15, 0x73, 0x45, 0xb9, 0x9d, 0xee, - 0xc6, 0x73, 0xd9, 0xc7, - 0x05, 0x6c, 0xa7, 0xbb, 0xb7, 0xf8, 0x07, 0x50, 0x5a, 0x7e, 0x72, 0x22, - 0xed, 0x50, 0xa9, 0x6c, - 0x50, 0x0f, 0xe2, 0xe1, 0x21, 0x5b, 0x70, 0x49, 0xe9, 0xec, 0x2c, 0x65, - 0xc8, 0x49, 0x02, 0x0f, - 0xf0, 0x11, 0xe5, 0xe0, 0x63, 0xed, 0x90, 0xdb, 0xf8, 0xf7, 0x74, 0xaf, - 0x9b, 0xdb, 0x06, 0x11, - 0xd1, 0x0b, 0xc5, 0xad, 0x52, 0xfb, 0x1a, 0x8e, 0xef, 0x57, 0xa8, 0x26, - 0xbd, 0x8e, 0xf1, 0x0b, - 0x12, 0x3b, 0xa2, 0x7b, 0x43, 0x77, 0xa7, 0xe3, 0xc7, 0x6f, 0x57, 0xb4, - 0x84, 0xe3, 0x2f, 0x3b, - 0x87, 0x4c, 0x5c, 0x9e, 0xa9, 0xb1, 0xd1, 0xa7, 0x6a, 0xef, 0xd8, 0x7f, - 0xc3, 0xa7, 0x3d, 0x4c, - 0x08, 0xe0, 0xa4, 0xfb, 0x5a, 0x3c, 0x67, 0x80, 0x90, 0x71, 0xd0, 0x50, - 0xca, 0x80, 0x6a, 0xe0, - 0x59, 0xf3, 0xb3, 0x3d, 0xe1, 0x81, 0xc2, 0xd9, 0x6b, 0x3a, 0xe6, 0x3f, - 0x8a, 0xd9, 0xf4, 0xf3, - 0xfc, 0x81, 0x13, 0x87, 0x14, 0xcf, 0x25, 0x1b, 0x20, 0x5f, 0xcc, 0xd7, - 0x34, 0x1b, 0x59, 0x81, - 0x21, 0x1a, 0x20, 0x4d, 0x31, 0x16, 0x8a, 0x55, 0x17, 0xa0, 0xdc, 0x89, - 0x26, 0x55, 0xf7, 0x1a, - 0x85, 0x74, 0x75, 0xd0, 0x5e, 0xbe, 0xb8, 0x87, 0x4e, 0x62, 0xec, 0x6b, - 0x10, 0x87, 0xc6, 0x74, - 0x55, 0x63, 0x45, 0x5a, 0x96, 0xa3, 0x77, 0x19, 0xb3, 0x92, 0x5e, 0x47, - 0x25, 0x19, 0xab, 0x63, - 0x4e, 0xa4, 0xb6, 0xfd, 0x15, 0x0e, 0x62, 0x6a, 0xf6, 0x2b, 0xc3, 0xa9, - 0xe3, 0x6a, 0x72, 0xa4, - 0xec, 0x82, 0x98, 0xb2, 0xa0, 0xb7, 0xeb, 0xd8, 0xc3, 0xbd, 0xaf, 0x77, - 0x63, 0xd8, 0x8d, 0x82, - 0xfb, 0xd5, 0x9d, 0x72, 0x54, 0x38, 0x4b, 0x6b, 0x5e, 0xac, 0x8a, 0xe1, - 0x0a, 0x6b, 0x0b, 0xd5, - 0x36, 0x4d, 0x25, 0x8d, 0xc5, 0x99, 0x2a, 0xe6, 0x8a, 0xb1, 0xf9, 0x1f, - 0x4f, 0xe6, 0x71, 0x4d, - 0x75, 0x65, 0x90, 0x30, 0x3d, 0x53, 0x28, 0x5c, 0xb6, 0x95, 0x98, 0xc4, - 0x8b, 0x5c, 0xc0, 0x65, - 0x37, 0x51, 0xd0, 0xaa, 0x5f, 0x7f, 0xff, 0xf6, 0x98, 0x16, 0xe3, 0x15, - 0xc7, 0xf6, 0xed, 0x51, - 0x5c, 0x9f, 0x14, 0x86, 0x56, 0x79, 0xc5, 0x89, 0x31, 0x44, 0x94, 0x1d, - 0x67, 0x89, 0x5d, 0x9f, - 0xf6, 0x59, 0x9e, 0x32, 0xb9, 0xfc, 0x2b, 0xbb, 0x94, 0xa3, 0x28, 0x93, - 0x2d, 0xbb, 0xc8, 0x59, - 0xf4, 0x61, 0xb7, 0x7c, 0x4e, 0xf3, 0x42, 0x9b, 0xb0, 0x2e, 0x1c, 0x87, - 0xfe, 0x9b, 0x33, 0x61, - 0xcd, 0x98, 0xb8, 0xff, 0x91, 0xa1, 0x61, 0x8d, 0xd4, 0x1d, 0x73, 0xfe, - 0x45, 0x8d, 0x7a, 0x98, - 0x6b, 0xce, 0xc4, 0x2c, 0x09, 0x06, 0x3a, 0x7f, 0xa9, 0x52, 0x77, 0x08, - 0xa0, 0x7f, 0xb0, 0xce, - 0xa2, 0x26, 0x2e, 0x4f, 0xb5, 0xb9, 0x89, 0xb2, 0x35, 0x96, 0x6c, 0xde, - 0x80, 0xb2, 0xff, 0x26, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xc6, 0x8a, 0xb4, 0xef, 0x85, 0xee, 0x32, 0xa5, 0xe7, 0xbc, 0x8e, - 0x4a, 0x32, 0x95, 0xc6, - 0x71, 0x15, 0xc2, 0xac, 0x10, 0x4d, 0xfa, 0x1c, 0xfe, 0x4c, 0xf0, 0xec, - 0xee, 0x1c, 0xf5, 0x15, - 0x42, 0x34, 0x40, 0x9a, 0x62, 0x2c, 0xd7, 0xaa, 0x2e, 0x83, 0x7b, 0xd1, - 0x4c, 0xaa, 0x2d, 0x34, - }, - { /* 14 */ - 0x47, 0x52, 0xd9, 0xd2, 0x69, 0x81, 0x42, 0x4a, 0x4e, 0xe7, 0x53, 0x5d, - 0xa9, 0x30, 0x47, 0x7c, - 0xe9, 0xdb, 0x31, 0x5c, 0x2e, 0xdf, 0x12, 0x97, 0x34, 0x3f, 0x83, 0x15, - 0x0b, 0x98, 0xe9, 0x1c, - 0x8f, 0x26, 0xbe, 0x4a, 0x25, 0x12, 0xca, 0xbc, 0x87, 0xf8, 0x58, 0xe9, - 0x7f, 0xf7, 0x8f, 0x8c, - 0x4e, 0x4a, 0xa1, 0x54, 0x2a, 0x05, 0x39, 0xe1, 0x8d, 0xb6, 0x51, 0xd3, - 0x3b, 0x95, 0x4e, 0x2e, - 0x03, 0x45, 0x92, 0x77, 0xda, 0xb6, 0xd2, 0x78, 0x2d, 0xdc, 0xc1, 0xf5, - 0xf1, 0x7a, 0x03, 0x9c, - 0xcf, 0x7c, 0x4f, 0x5b, 0xcc, 0xef, 0xa1, 0x2e, 0x88, 0x91, 0xb4, 0xce, - 0x19, 0xa4, 0xcf, 0x7f, - 0x0c, 0xd7, 0x0d, 0x1f, 0xee, 0x9d, 0xce, 0x23, 0xb4, 0xf6, 0x82, 0x52, - 0x42, 0x2b, 0x0c, 0x35, - 0xba, 0x33, 0xff, 0xaf, 0xb6, 0x3a, 0xc1, 0xb8, 0x65, 0x01, 0x95, 0xbe, - 0x64, 0xd5, 0xba, 0x3f, - 0x12, 0x30, 0xf0, 0xcf, 0x86, 0xcb, 0xf6, 0x95, 0x45, 0xa2, 0x04, 0xdf, - 0xe7, 0x89, 0x12, 0xa4, - 0xf0, 0x34, 0xe4, 0x4f, 0xc6, 0xf5, 0x03, 0xf9, 0x84, 0xe5, 0xba, 0xe2, - 0x61, 0x59, 0xf0, 0x02, - 0x2b, 0xf2, 0xbc, 0x35, 0xfb, 0x7e, 0x33, 0xb2, 0x13, 0xad, 0x4b, 0xda, - 0xbe, 0x80, 0x2b, 0x22, - 0x2c, 0xfa, 0x94, 0xf6, 0x7b, 0x02, 0x1a, 0x6a, 0x52, 0x23, 0xf4, 0xa0, - 0x71, 0xe3, 0x2c, 0xad, - 0x32, 0x1d, 0x69, 0x26, 0x13, 0x54, 0x22, 0xdc, 0xa3, 0x77, 0x72, 0x2d, - 0xd4, 0x41, 0x32, 0x3c, - 0x1b, 0x28, 0x88, 0x49, 0xc5, 0x4f, 0x8d, 0x3e, 0x86, 0xf3, 0x06, 0x51, - 0x75, 0x2c, 0x1b, 0xf6, - 0xd2, 0xde, 0x20, 0xfc, 0x7e, 0x0f, 0x4b, 0xe0, 0x54, 0x19, 0xf3, 0xb6, - 0x4d, 0x7c, 0xd2, 0x72, - 0x08, 0x9a, 0xb7, 0xab, 0xb4, 0x57, 0x35, 0x83, 0xd8, 0xa4, 0xfc, 0xdd, - 0x7c, 0x32, 0x08, 0x26, - 0xdd, 0x4c, 0xbf, 0x94, 0x4a, 0x24, 0x57, 0xbb, 0xcd, 0x33, 0xb0, 0x11, - 0xfe, 0x2d, 0xdd, 0xdb, - 0x60, 0x77, 0x68, 0xf8, 0x7c, 0x62, 0xbf, 0xdb, 0xe9, 0xbc, 0x9a, 0xd5, - 0x55, 0x9b, 0x60, 0x6b, - 0x72, 0x47, 0x98, 0x37, 0xfa, 0xa9, 0x49, 0x4e, 0xac, 0x1e, 0x9e, 0x0a, - 0xb2, 0x12, 0x72, 0xcf, - 0x11, 0x75, 0x62, 0xb8, 0x5c, 0x7d, 0x24, 0xed, 0x68, 0x7e, 0xc5, 0x2a, - 0x16, 0xf3, 0x11, 0x38, - 0x06, 0x8a, 0xe7, 0xee, 0x77, 0xaf, 0x67, 0xf0, 0x5a, 0x7b, 0x41, 0x29, - 0x21, 0xf4, 0x06, 0xfb, - 0x5d, 0xf8, 0x9e, 0xb6, 0x5b, 0x1d, 0x81, 0x5c, 0xd3, 0xe1, 0xab, 0x5f, - 0x32, 0x8b, 0x5d, 0xfe, - 0xe0, 0xc3, 0x49, 0xda, 0x6d, 0x5b, 0x69, 0x3c, 0xf7, 0x6e, 0x81, 0x9b, - 0x99, 0x3d, 0xe0, 0x4e, - 0x86, 0x3e, 0xc6, 0xcc, 0x66, 0x96, 0xb1, 0x17, 0x44, 0xa9, 0x5a, 0x67, - 0xed, 0x52, 0x86, 0xde, - 0xaa, 0xc4, 0x52, 0x3a, 0x1d, 0x94, 0xab, 0x7d, 0x16, 0x8a, 0xae, 0xc7, - 0x9c, 0xb1, 0xaa, 0x73, - 0x58, 0x37, 0xeb, 0x2f, 0xf6, 0x04, 0x34, 0xd4, 0xa4, 0x46, 0x2b, 0x83, - 0xe2, 0x05, 0x58, 0x99, - 0x24, 0x60, 0x23, 0x5d, 0xcf, 0x55, 0x2f, 0xe9, 0x8a, 0x87, 0x08, 0x7d, - 0x0d, 0xd1, 0x24, 0x8b, - 0xdf, 0x8b, 0xe2, 0xce, 0x67, 0x41, 0xcb, 0xeb, 0xfb, 0x1a, 0x8f, 0xb7, - 0xe1, 0xc0, 0xdf, 0x33, - 0x69, 0x6f, 0x10, 0x7e, 0x3f, 0xe6, 0xc4, 0x70, 0x2a, 0xed, 0x98, 0x5b, - 0xc7, 0x3e, 0x69, 0x39, - 0x7a, 0xdd, 0x2f, 0x9c, 0x4e, 0xfe, 0x7c, 0xcd, 0x74, 0xba, 0x62, 0xd7, - 0xce, 0x20, 0x7a, 0xe9, - 0x67, 0x7f, 0x40, 0x3b, 0xfc, 0x1e, 0x96, 0x03, 0xa8, 0x32, 0x25, 0xaf, - 0x9a, 0xf8, 0x67, 0xe4, - 0xec, 0x14, 0x44, 0xc5, 0x83, 0xc6, 0xa7, 0x1f, 0x43, 0x98, 0x03, 0xc9, - 0xdb, 0x16, 0xec, 0x7b, - 0x30, 0xda, 0x34, 0x7c, 0x3e, 0x31, 0xbe, 0x8c, 0x95, 0x5e, 0x4d, 0x8b, - 0xcb, 0xac, 0x30, 0xd4, - 0x6a, 0x2a, 0x82, 0x09, 0xe5, 0x50, 0x16, 0x08, 0x07, 0x31, 0x59, 0xae, - 0x36, 0x44, 0x6a, 0xa5, - 0x0e, 0x10, 0x50, 0x45, 0xc3, 0xf8, 0x52, 0x73, 0x82, 0xdf, 0xbd, 0xf4, - 0x5d, 0xc6, 0x0e, 0xdd, - 0x43, 0x1f, 0x63, 0x66, 0x33, 0x4b, 0xb9, 0xea, 0x22, 0xb5, 0x2d, 0xd2, - 0x97, 0x29, 0x43, 0x6f, - 0x2d, 0x78, 0x5b, 0xdb, 0x8c, 0xd1, 0x54, 0x42, 0x49, 0xd6, 0x0a, 0xf3, - 0x9f, 0x74, 0x2d, 0xd9, - 0xb3, 0x2b, 0x87, 0x29, 0xf5, 0xbe, 0xba, 0x13, 0xa6, 0x50, 0x97, 0x30, - 0xf6, 0x70, 0xb3, 0x6d, - 0xe4, 0x8e, 0xf3, 0x6e, 0x37, 0x91, 0x92, 0x9c, 0x9b, 0x3c, 0xff, 0x14, - 0xa7, 0x24, 0xe4, 0x5d, - 0x22, 0xea, 0xc4, 0xb3, 0xb8, 0xfa, 0x48, 0x19, 0xd0, 0xfc, 0x49, 0x54, - 0x2c, 0x25, 0x22, 0x70, - 0xab, 0x46, 0x9d, 0x17, 0xea, 0x47, 0xe5, 0x55, 0x0d, 0x7f, 0x50, 0x94, - 0x72, 0x26, 0xab, 0x07, - 0x3d, 0x8f, 0xf6, 0x4e, 0x27, 0x7f, 0x3e, 0x87, 0x3a, 0x5d, 0x31, 0x8a, - 0x67, 0x10, 0x3d, 0x95, - 0x34, 0x97, 0x8e, 0xc8, 0x64, 0xfb, 0x45, 0x2c, 0xf9, 0x0c, 0x33, 0x04, - 0xf5, 0xb5, 0x34, 0xc7, - 0x90, 0x43, 0x8c, 0xb7, 0xba, 0x97, 0xbc, 0x22, 0x6d, 0x59, 0x20, 0x37, - 0x34, 0xc2, 0x90, 0x69, - 0x97, 0x4b, 0xa4, 0x74, 0x3a, 0xeb, 0x95, 0xfa, 0x2c, 0xd7, 0x9f, 0x4d, - 0xfb, 0xa1, 0x97, 0xe6, - 0xb0, 0x6e, 0x15, 0x5e, 0x2f, 0x08, 0x68, 0x6b, 0x8b, 0x8c, 0x56, 0xc5, - 0x07, 0x0a, 0xb0, 0xf1, - 0xe5, 0x0c, 0x3c, 0x43, 0xc0, 0x42, 0xdc, 0xb4, 0x80, 0xc9, 0x01, 0x47, - 0x49, 0xb3, 0xe5, 0x29, - 0x42, 0x9d, 0xac, 0x4b, 0xc4, 0x98, 0xf7, 0xc2, 0x39, 0x40, 0xd3, 0x81, - 0x79, 0xbe, 0x42, 0x1b, - 0x79, 0x98, 0xbd, 0xeb, 0x94, 0x48, 0xae, 0xb5, 0x59, 0x66, 0xa3, 0x22, - 0x3f, 0x5a, 0x79, 0x75, - 0xc0, 0xee, 0xd0, 0x33, 0xf8, 0xc4, 0xbd, 0x75, 0x11, 0xbb, 0xf7, 0x69, - 0xaa, 0xf5, 0xc0, 0xd6, - 0x18, 0x6d, 0x1a, 0x3e, 0x1f, 0xf9, 0x5f, 0x46, 0xab, 0x2f, 0xc7, 0xa4, - 0x84, 0x56, 0x18, 0x6a, - 0x4b, 0x85, 0xd4, 0xcd, 0x87, 0x1c, 0x8c, 0x69, 0xfa, 0x11, 0xd1, 0x0f, - 0xeb, 0x1b, 0x4b, 0x49, - 0xf7, 0x3c, 0xcc, 0x8c, 0x46, 0x89, 0x2a, 0x21, 0xc5, 0x6b, 0x05, 0x98, - 0xae, 0x3a, 0xf7, 0x8d, - 0xb8, 0xf4, 0xa2, 0xf5, 0x9b, 0x5f, 0x5d, 0xe8, 0x53, 0x28, 0xaa, 0x18, - 0x7b, 0x38, 0xb8, 0xd7, - 0xa6, 0x13, 0x5f, 0x25, 0xf3, 0x09, 0x65, 0x5e, 0xa2, 0x7c, 0x2c, 0x95, - 0xde, 0x9a, 0xa6, 0x46, - 0x59, 0xb5, 0x24, 0x02, 0x01, 0xd7, 0x7a, 0xfc, 0xbf, 0xb3, 0xd5, 0xd0, - 0x0c, 0x92, 0x59, 0xed, - 0x64, 0x3a, 0xd2, 0x4c, 0x26, 0xa8, 0x44, 0x7b, 0x85, 0xee, 0xe4, 0x5a, - 0x6b, 0x82, 0x64, 0x78, - 0x36, 0x50, 0xd3, 0x92, 0x49, 0x9e, 0xd9, 0x7c, 0xcf, 0x25, 0x0c, 0xa2, - 0xea, 0x58, 0x36, 0x2f, - 0xb4, 0x23, 0xaf, 0xea, 0x75, 0xc2, 0x93, 0xcb, 0xe7, 0xde, 0x28, 0x4a, - 0x39, 0x13, 0xb4, 0xe2, - 0x81, 0x36, 0xee, 0x0f, 0xe6, 0xea, 0x98, 0xcf, 0x05, 0x27, 0xe5, 0x1d, - 0x22, 0x31, 0x81, 0x51, - 0x09, 0x18, 0x78, 0x86, 0x43, 0x84, 0x7b, 0xab, 0xc3, 0x51, 0x02, 0x8e, - 0x92, 0xa5, 0x09, 0x52, - 0x78, 0x1a, 0x72, 0xc6, 0x63, 0x9b, 0xe0, 0x9d, 0x42, 0x93, 0x5d, 0x71, - 0xd1, 0xcd, 0x78, 0x01, - 0xed, 0x96, 0x8b, 0xe8, 0x74, 0x15, 0xe9, 0x37, 0x58, 0x6d, 0xfd, 0x9a, - 0x35, 0x81, 0xed, 0x0f, - 0x5f, 0x3f, 0xc3, 0xec, 0x76, 0x78, 0x1d, 0x0c, 0xe5, 0xc8, 0x94, 0xf9, - 0x2d, 0x66, 0x5f, 0x16, - 0xda, 0x44, 0x97, 0x57, 0xca, 0x58, 0x7e, 0x63, 0x8c, 0xbd, 0x0f, 0x6b, - 0x31, 0x4e, 0xda, 0x54, - 0xc4, 0xa3, 0x6a, 0x87, 0xa2, 0x0e, 0x46, 0xd5, 0x7d, 0xe9, 0x89, 0xe6, - 0x94, 0xec, 0xc4, 0xc5, - 0x29, 0x35, 0xe1, 0x6f, 0xd6, 0x1b, 0xaf, 0xe2, 0x25, 0x84, 0x74, 0x7c, - 0xa1, 0x6d, 0x29, 0xca, - 0xad, 0xcc, 0x7a, 0xf9, 0x9d, 0xe8, 0x82, 0xa5, 0x57, 0x04, 0x11, 0xbd, - 0x53, 0xd2, 0xad, 0xfc, - 0x07, 0x08, 0x28, 0xc3, 0x80, 0x7c, 0x29, 0xd8, 0x41, 0x8e, 0xbf, 0x7a, - 0xcf, 0x63, 0x07, 0x8f, - 0x82, 0x73, 0x7c, 0x78, 0x3c, 0x5c, 0x4a, 0xb7, 0x28, 0xfb, 0x24, 0xe8, - 0xd3, 0x4b, 0x82, 0xcd, - 0xe2, 0x04, 0x14, 0x80, 0x40, 0x3e, 0xf5, 0x6c, 0xc1, 0x47, 0xbe, 0x3d, - 0x86, 0xd0, 0xe2, 0xa6, - 0x31, 0x58, 0xfb, 0x51, 0xc9, 0xe2, 0xf0, 0xa4, 0x8e, 0xab, 0xb3, 0xd8, - 0x25, 0x3b, 0x31, 0xa0, - 0x17, 0xff, 0x85, 0x56, 0x2b, 0xd2, 0x43, 0x1d, 0x32, 0x05, 0x84, 0x03, - 0x37, 0x07, 0x17, 0xc3, - 0x9f, 0xd1, 0x13, 0xdf, 0x8e, 0xbc, 0xa0, 0x79, 0xf4, 0x73, 0x63, 0x90, - 0x87, 0x93, 0x9f, 0xc0, - 0x0b, 0xdf, 0x25, 0xdc, 0x6e, 0xe1, 0xe7, 0xfb, 0xf5, 0x78, 0x3d, 0x28, - 0x8d, 0x48, 0x0b, 0xba, - 0x16, 0x7d, 0x4a, 0x7b, 0xdc, 0x01, 0x0d, 0x35, 0x29, 0xf0, 0x7a, 0x50, - 0xd9, 0x90, 0x16, 0xb7, - 0x7f, 0x12, 0x5a, 0x05, 0xe3, 0xe7, 0xc9, 0x45, 0x03, 0x1d, 0xe2, 0x0b, - 0x1e, 0xae, 0x7f, 0x8e, - 0x23, 0x68, 0x0b, 0x9e, 0x4f, 0x29, 0x06, 0x31, 0xcb, 0x09, 0xb7, 0x07, - 0xc2, 0xb2, 0x23, 0x04, - 0x6b, 0xa8, 0x4d, 0x24, 0x12, 0x83, 0x58, 0x20, 0x1c, 0xc4, 0xa7, 0xfd, - 0xd8, 0xd3, 0x6b, 0xd1, - 0xa9, 0x81, 0xc0, 0x4d, 0xc7, 0x22, 0x79, 0x05, 0x3b, 0x56, 0x6f, 0x32, - 0x6d, 0xcb, 0xa9, 0xef, - 0x8b, 0x6b, 0x04, 0xfe, 0x7f, 0xd8, 0x31, 0x1c, 0xeb, 0xaa, 0x26, 0x66, - 0x41, 0xee, 0x8b, 0x9f, - 0xb7, 0x66, 0x3d, 0x9d, 0xaf, 0x74, 0x41, 0xb3, 0xca, 0x02, 0xe9, 0xbf, - 0xc8, 0x69, 0xb7, 0x7e, - 0x13, 0xb2, 0x3f, 0xe2, 0x71, 0x18, 0xb8, 0xbd, 0x5e, 0x57, 0xfa, 0x8c, - 0x09, 0x1e, 0x13, 0xd0, - 0x1c, 0x20, 0xa0, 0x8a, 0x45, 0x33, 0xa4, 0xe6, 0xc7, 0x7d, 0xb9, 0x2b, - 0xba, 0x4f, 0x1c, 0x79, - 0xfb, 0xeb, 0xc1, 0x93, 0xa8, 0x14, 0xe4, 0x02, 0x71, 0x9d, 0x87, 0xca, - 0xec, 0x11, 0xfb, 0xb8, - 0x62, 0xb0, 0x35, 0xa2, 0x51, 0x07, 0x23, 0x8b, 0xdf, 0x95, 0xa5, 0x73, - 0x4a, 0x76, 0x62, 0x83, - 0xf2, 0xf3, 0xb9, 0x15, 0xeb, 0x90, 0x9f, 0xa9, 0xb2, 0xcc, 0x85, 0x44, - 0x7e, 0xb4, 0xf2, 0xea, - 0x3b, 0x05, 0x11, 0xa0, 0x50, 0xd0, 0x59, 0x77, 0x60, 0x26, 0x70, 0xa3, - 0x46, 0xe4, 0x3b, 0x6e, - 0x9a, 0x1e, 0x66, 0x46, 0x23, 0xa5, 0x15, 0xf1, 0x83, 0xd4, 0xe3, 0x4c, - 0x57, 0x1d, 0x9a, 0xa7, - 0x75, 0x4f, 0xb0, 0xf4, 0x7a, 0xd5, 0x60, 0x96, 0xed, 0x90, 0x21, 0x70, - 0x7d, 0x71, 0x75, 0x40, - 0xea, 0x9e, 0xa3, 0x2b, 0xf4, 0x69, 0xc0, 0xef, 0x19, 0xe3, 0x42, 0xe0, - 0xfa, 0xe2, 0xea, 0x80, - 0xd0, 0x19, 0x7d, 0xa6, 0x53, 0x6a, 0xd7, 0xb0, 0x62, 0x30, 0xcc, 0x10, - 0x52, 0x91, 0xd0, 0x9a, - 0x2a, 0x70, 0x73, 0x18, 0x0c, 0xad, 0x7d, 0x9a, 0x08, 0x58, 0xb5, 0x89, - 0x50, 0x17, 0x2a, 0x56, - 0x91, 0xc1, 0x43, 0x9a, 0x4d, 0x44, 0xf2, 0x0a, 0x76, 0xac, 0xde, 0x64, - 0xda, 0x55, 0x91, 0x1d, - 0x02, 0xc7, 0x5d, 0x5a, 0x2d, 0x65, 0x9c, 0x50, 0x36, 0x29, 0x3f, 0xa6, - 0x1f, 0xed, 0x02, 0xe8, - 0x46, 0xd0, 0x16, 0xff, 0x9e, 0x52, 0x0c, 0x62, 0x55, 0x12, 0xad, 0x0e, - 0x47, 0xa7, 0x46, 0x08, - 0xa7, 0x91, 0x90, 0x08, 0x04, 0xda, 0x2b, 0x76, 0xb9, 0x89, 0xd2, 0xc6, - 0x30, 0x0d, 0xa7, 0x32, - 0xdc, 0xce, 0x70, 0xb9, 0xbd, 0xf7, 0x19, 0x93, 0xd6, 0xc6, 0x4e, 0x42, - 0x10, 0xba, 0xdc, 0xaf, - 0x27, 0x25, 0xb1, 0x2a, 0x15, 0xe3, 0xfd, 0x91, 0xa7, 0x5b, 0xc9, 0x88, - 0xfc, 0xab, 0x27, 0x17, - 0x76, 0x0a, 0x22, 0x83, 0xa0, 0x63, 0xb2, 0xee, 0xc0, 0x4c, 0xe0, 0x85, - 0x8c, 0x0b, 0x76, 0xdc, - 0xa4, 0xd4, 0x02, 0x7f, 0xde, 0x6c, 0xf9, 0x0e, 0x94, 0x55, 0x13, 0x33, - 0xc1, 0x77, 0xa4, 0xae, - 0xca, 0xb3, 0x3a, 0xc2, 0x61, 0xf6, 0x14, 0xa6, 0xff, 0x36, 0x34, 0x12, - 0xc9, 0x2a, 0xca, 0x18, - 0x96, 0xc9, 0x6b, 0x59, 0xcd, 0x38, 0xdb, 0xd2, 0x37, 0x22, 0x61, 0x1e, - 0x15, 0x36, 0x96, 0x92, - 0x70, 0x80, 0xc5, 0x6d, 0xd7, 0xcc, 0xd5, 0x1e, 0x9a, 0x37, 0xa1, 0xac, - 0xad, 0xff, 0x70, 0x27, - 0x54, 0xe0, 0xe6, 0x30, 0x18, 0x99, 0xfa, 0xf7, 0x10, 0xb0, 0xa9, 0xd1, - 0xa0, 0x2e, 0x54, 0xac, - 0xe1, 0x41, 0x86, 0xf7, 0x9a, 0x88, 0x27, 0x14, 0xec, 0x9b, 0x7f, 0xc8, - 0x77, 0xaa, 0xe1, 0x3a, - 0x6f, 0xe5, 0xf7, 0x90, 0x48, 0x49, 0xa3, 0x80, 0x70, 0x96, 0xd9, 0x72, - 0xe6, 0xca, 0x6f, 0xc2, - 0x39, 0xc2, 0x4c, 0xfa, 0x7d, 0xb5, 0xc5, 0x27, 0x56, 0x0f, 0x4f, 0x05, - 0x59, 0x09, 0x39, 0x86, - 0x33, 0x9f, 0xa6, 0x0b, 0xe4, 0x87, 0x6c, 0xf4, 0xb8, 0x82, 0x8c, 0x7e, - 0x3a, 0xd6, 0x33, 0x48, - 0xdb, 0xc6, 0x58, 0x7a, 0x3d, 0x8b, 0x30, 0x4b, 0x97, 0x48, 0xf1, 0x38, - 0xdf, 0xd9, 0xdb, 0x20, - 0xa0, 0x99, 0xb8, 0xcb, 0x84, 0xa6, 0x02, 0xae, 0xf8, 0x07, 0x6d, 0xbc, - 0xff, 0x6e, 0xa0, 0xbd, - 0xfe, 0x24, 0xb4, 0x0a, 0x05, 0x0d, 0x51, 0x8a, 0x06, 0x3a, 0x07, 0x16, - 0x3c, 0x9f, 0xfe, 0xdf, - 0xb2, 0xa9, 0x48, 0x04, 0x02, 0x6d, 0xf4, 0x3b, 0xbd, 0xa5, 0x69, 0x63, - 0x18, 0xe7, 0xb2, 0x19, - 0x10, 0xf7, 0xad, 0x95, 0xab, 0xae, 0x6a, 0xc5, 0x73, 0x8b, 0x3b, 0x79, - 0xf8, 0x64, 0x10, 0x4c, - 0x71, 0x02, 0x0a, 0x40, 0x20, 0x1f, 0x9b, 0x36, 0x81, 0xc2, 0x5f, 0xff, - 0x43, 0x68, 0x71, 0x53, - 0x87, 0xbc, 0x09, 0xe1, 0x91, 0x45, 0xff, 0x3f, 0x5f, 0x5c, 0xa4, 0x34, - 0x03, 0xc5, 0x87, 0xaa, - 0x35, 0x15, 0x41, 0xe5, 0x93, 0x28, 0x0b, 0x04, 0xe2, 0xf9, 0xcd, 0x57, - 0x1b, 0x22, 0x35, 0xb3, - 0x38, 0x40, 0x83, 0xd7, 0x8a, 0x66, 0x8b, 0x0f, 0x4d, 0xfa, 0xb1, 0x56, - 0xb7, 0x9e, 0x38, 0xf2, - 0x52, 0x6a, 0x01, 0xde, 0x6f, 0x36, 0x9d, 0x07, 0x4a, 0xcb, 0xe8, 0xf8, - 0x81, 0xda, 0x52, 0x57, - 0x65, 0xb8, 0x1d, 0x61, 0xd1, 0x7b, 0x0a, 0x53, 0x9e, 0x1b, 0x1a, 0x09, - 0x85, 0x15, 0x65, 0x0c, - 0xde, 0x09, 0x2d, 0xe3, 0x90, 0x92, 0x85, 0xc3, 0xe0, 0xef, 0x71, 0xe4, - 0x0f, 0x57, 0xde, 0x47, - 0x8e, 0xa4, 0x71, 0x67, 0xd2, 0xc1, 0x84, 0x94, 0x9c, 0x0d, 0xa6, 0xba, - 0x91, 0x60, 0x8e, 0xf8, - 0xa8, 0x03, 0x0f, 0x60, 0x30, 0xf1, 0x37, 0x2d, 0x20, 0xa3, 0x91, 0x61, - 0x83, 0x5c, 0xa8, 0x9b, - 0xfd, 0x61, 0x26, 0x7d, 0xdf, 0xbb, 0x83, 0xf2, 0x2b, 0xe6, 0xc6, 0xe3, - 0xcd, 0xe5, 0xfd, 0x43, - 0x2e, 0x3d, 0xc9, 0xac, 0x56, 0x67, 0x86, 0x3a, 0x64, 0x0a, 0xcb, 0x06, - 0x6e, 0x0e, 0x2e, 0x45, - 0x01, 0x82, 0xcf, 0x2d, 0xf7, 0xd3, 0x4e, 0x28, 0x1b, 0xf5, 0xfe, 0x53, - 0xee, 0x97, 0x01, 0x74, - 0xf8, 0xae, 0x53, 0xe4, 0x72, 0xa2, 0x36, 0x7a, 0x5c, 0x41, 0x46, 0x3f, - 0x1d, 0x6b, 0xf8, 0x24, - 0x8c, 0x63, 0x2c, 0x3d, 0xff, 0xa4, 0x18, 0xc4, 0xaa, 0x24, 0x99, 0x1c, - 0x8e, 0x8d, 0x8c, 0x10, - 0xbb, 0xb1, 0x30, 0x82, 0x41, 0xe9, 0x8f, 0x90, 0x7e, 0xf4, 0x6b, 0xed, - 0x8a, 0x42, 0xbb, 0x4b, - 0x49, 0x42, 0x89, 0x97, 0xaa, 0x79, 0x10, 0x39, 0xcc, 0x38, 0xee, 0xa9, - 0xf4, 0xf6, 0x49, 0xa1, - 0x44, 0x17, 0x4b, 0xa5, 0xb3, 0x37, 0x90, 0x32, 0x63, 0x3b, 0x92, 0xa8, - 0x58, 0x4a, 0x44, 0xe0, - 0xbf, 0xfc, 0x8a, 0x36, 0x1b, 0x23, 0x74, 0x30, 0x12, 0xa6, 0x15, 0x62, - 0xb4, 0x5b, 0xbf, 0x58, - 0xef, 0x51, 0xd6, 0xb2, 0x59, 0x70, 0x75, 0x67, 0x6e, 0x44, 0xc2, 0x3c, - 0x2a, 0x6c, 0xef, 0xe7, - 0xfc, 0xe3, 0xe9, 0x50, 0x28, 0x68, 0xcd, 0xda, 0x30, 0x13, 0x38, 0xb0, - 0x23, 0x72, 0xfc, 0x37, - 0x3a, 0x87, 0xde, 0x8d, 0xa7, 0x03, 0x17, 0x5f, 0x7b, 0xd3, 0x8e, 0xf0, - 0xa8, 0x73, 0x3a, 0x1a, - 0xb1, 0xec, 0xda, 0x73, 0xd8, 0xdb, 0x26, 0x43, 0x90, 0x79, 0xa8, 0x96, - 0xe9, 0x9d, 0xb1, 0x85, - 0xf9, 0x2c, 0x9c, 0xc9, 0x85, 0x71, 0x78, 0x52, 0x47, 0xb4, 0xb8, 0x6c, - 0xf3, 0xfc, 0xf9, 0x50, - 0x99, 0x5b, 0xf4, 0x31, 0xf9, 0x13, 0xc7, 0x89, 0xae, 0x08, 0x22, 0xb9, - 0xa6, 0x67, 0x99, 0x3b, - 0xd8, 0x83, 0xca, 0x0d, 0xe7, 0x3d, 0xe2, 0x33, 0xba, 0x94, 0x30, 0xcd, - 0x2e, 0xa3, 0xd8, 0xbc, - 0xc9, 0xf6, 0xa8, 0xb5, 0xbb, 0x40, 0xc6, 0xde, 0xd2, 0xea, 0xf5, 0xe7, - 0x38, 0x50, 0xc9, 0x84, - 0x61, 0xf5, 0xa7, 0xd5, 0x8b, 0xb1, 0xf1, 0xf3, 0xf2, 0x49, 0x64, 0x86, - 0xbb, 0x0c, 0x61, 0x1f, - 0x3c, 0x0d, 0x39, 0x63, 0xd0, 0xac, 0x70, 0xaf, 0x21, 0xa8, 0xcf, 0xd9, - 0x89, 0x87, 0x3c, 0xe1, - 0x89, 0xac, 0x59, 0xa4, 0x52, 0xbd, 0xad, 0x4c, 0xdd, 0x83, 0x19, 0xc0, - 0x5e, 0x03, 0x89, 0x77, - 0x0f, 0x92, 0x9f, 0x68, 0x34, 0x2b, 0x1c, 0x5b, 0x99, 0x2a, 0x43, 0xa7, - 0xb3, 0x51, 0x0f, 0xa9, - 0x5c, 0x7a, 0x51, 0x9b, 0xac, 0xce, 0xcf, 0x74, 0xc8, 0x14, 0x55, 0x0c, - 0xdc, 0x1c, 0x5c, 0x8a, - 0xbe, 0x7e, 0x45, 0x1b, 0xec, 0xf0, 0x3a, 0x18, 0x09, 0x53, 0xeb, 0x31, - 0x5a, 0xcc, 0xbe, 0x2c, - 0xc2, 0x29, 0x8d, 0x69, 0xd5, 0xa1, 0x21, 0x25, 0x27, 0x92, 0xc8, 0xcf, - 0xb5, 0x18, 0xc2, 0x3e, - 0xc5, 0x21, 0xa5, 0xaa, 0x55, 0xdd, 0x08, 0xfd, 0x66, 0x1c, 0x77, 0xb5, - 0x7a, 0x7b, 0xc5, 0xb1, - 0x88, 0x2e, 0x96, 0x89, 0xa5, 0x6e, 0xe3, 0x64, 0xc6, 0x76, 0xe7, 0x93, - 0xb0, 0x94, 0x88, 0x03, - 0xa1, 0x1b, 0x77, 0xe6, 0x73, 0x75, 0x4c, 0x86, 0xe3, 0xf2, 0x93, 0xef, - 0x11, 0xf9, 0xa1, 0xc9, - 0x1d, 0xa2, 0x6f, 0xa7, 0xb2, 0xe0, 0xea, 0xce, 0xdc, 0x88, 0x47, 0x78, - 0x54, 0xd8, 0x1d, 0x0d, - 0xc7, 0xe6, 0xf8, 0xf0, 0x78, 0xb8, 0x94, 0xad, 0x50, 0x35, 0x48, 0x13, - 0x65, 0x96, 0xc7, 0x59, - 0x6c, 0xa0, 0x65, 0xe7, 0x92, 0xff, 0x71, 0xf8, 0x5d, 0x4a, 0x18, 0x87, - 0x17, 0xb0, 0x6c, 0x5e, - 0x85, 0x7b, 0x54, 0xbb, 0xbc, 0x20, 0x63, 0x6f, 0x69, 0x75, 0x9b, 0x92, - 0x1c, 0x28, 0x85, 0x42, - 0x9d, 0x16, 0x4e, 0x85, 0xa3, 0xd9, 0x3c, 0x29, 0xc2, 0x5a, 0x5c, 0x36, - 0x98, 0x7e, 0x9d, 0x28, - 0xd3, 0x5c, 0xef, 0xd1, 0x89, 0xdc, 0x05, 0xc8, 0x4f, 0xec, 0x0d, 0xe5, - 0xa3, 0xeb, 0xd3, 0x06, - 0xd1, 0x9b, 0xb2, 0x8b, 0xa4, 0xb9, 0x99, 0x98, 0x79, 0xc5, 0x32, 0x43, - 0xbc, 0x06, 0xd1, 0xee, - 0x1e, 0xe7, 0xfd, 0xd0, 0x68, 0x56, 0x38, 0xb6, 0xf1, 0x54, 0x86, 0x8d, - 0xa5, 0xa2, 0x1e, 0x91, - 0x3e, 0xca, 0x64, 0x39, 0xfd, 0xc9, 0xec, 0xff, 0x17, 0x81, 0xf0, 0x7f, - 0x96, 0x6a, 0x3e, 0x09, - 0x84, 0xf9, 0x9b, 0x96, 0x4b, 0xf3, 0x2d, 0x47, 0x72, 0x80, 0x65, 0xc1, - 0xf2, 0xbf, 0x84, 0x36, - 0x2f, 0xbf, 0x06, 0x81, 0xa1, 0xb4, 0xc8, 0x12, 0x7f, 0xff, 0x35, 0x55, - 0x80, 0x99, 0x2f, 0x31, - 0x7d, 0xd5, 0x07, 0x5f, 0xce, 0x82, 0x55, 0x15, 0x35, 0x34, 0xdd, 0xad, - 0x01, 0x43, 0x7d, 0x66, - 0x74, 0xcd, 0x7f, 0xd9, 0x8d, 0x06, 0x2e, 0xbe, 0xf6, 0x65, 0xdf, 0x23, - 0x93, 0xe6, 0x74, 0x34, - 0x41, 0xd8, 0x3e, 0x3c, 0x1e, 0x2e, 0x25, 0xba, 0x14, 0x9c, 0x12, 0x74, - 0x88, 0xc4, 0x41, 0x87, - 0x50, 0xad, 0x5c, 0x84, 0x42, 0x53, 0x01, 0x57, 0x7c, 0xe2, 0xd7, 0x5e, - 0x9e, 0x37, 0x50, 0xbf, - 0x21, 0xaf, 0x56, 0xc4, 0x62, 0x4c, 0x9a, 0x61, 0xfd, 0x20, 0x88, 0xa1, - 0xdd, 0x5f, 0x21, 0xec, - 0x55, 0x62, 0x29, 0x1d, 0xef, 0x4a, 0xb4, 0xdf, 0x0b, 0x45, 0x57, 0x82, - 0x4e, 0xb9, 0x55, 0xd8, - 0xe7, 0xcb, 0x61, 0x19, 0xed, 0x27, 0x40, 0xe4, 0xb6, 0xe0, 0x3e, 0xe1, - 0x56, 0x5e, 0xe7, 0xc1, - 0xcd, 0xbb, 0x12, 0x01, 0xe1, 0x8a, 0x3d, 0x7e, 0xbe, 0xb8, 0x8b, 0x68, - 0x06, 0x49, 0xcd, 0x97, - 0x0d, 0x55, 0xc2, 0x32, 0x19, 0x4e, 0x80, 0x0b, 0xaf, 0x03, 0x7c, 0x01, - 0xac, 0xbc, 0x0d, 0x41, - 0x7c, 0x57, 0xc8, 0x72, 0x39, 0x51, 0x1b, 0x3d, 0x2e, 0xc1, 0x23, 0xfe, - 0xef, 0xd4, 0x7c, 0x12, - 0x37, 0xd2, 0x1c, 0xbf, 0xbe, 0x4d, 0x97, 0x54, 0xd4, 0xd0, 0xf2, 0xf1, - 0x04, 0xcf, 0x37, 0x5b, - 0x1a, 0xaa, 0x47, 0x64, 0x32, 0x9c, 0xc3, 0x16, 0x9d, 0x06, 0xf8, 0x02, - 0x9b, 0xbb, 0x1a, 0x82, - 0xa2, 0x5e, 0xe5, 0x91, 0xa9, 0xc3, 0x9e, 0xfe, 0xce, 0x2e, 0x52, 0x1a, - 0xe0, 0x83, 0xa2, 0x55, - 0xaf, 0x0b, 0x27, 0xa3, 0xb0, 0x8d, 0x1e, 0xf5, 0x61, 0x2d, 0x2e, 0x1b, - 0x4c, 0x3f, 0xaf, 0x14, - 0xf6, 0xbe, 0x03, 0xa1, 0xb1, 0x5a, 0x64, 0x09, 0xde, 0x9e, 0xfb, 0xcb, - 0x40, 0xad, 0xf6, 0xf9, - 0xe8, 0x59, 0xfe, 0x71, 0xd9, 0x0c, 0x5c, 0xbf, 0x2f, 0xca, 0x7d, 0x46, - 0xe5, 0x0f, 0xe8, 0x68, - 0x7e, 0x90, 0x95, 0x28, 0x14, 0x34, 0x87, 0x6d, 0x18, 0xe8, 0x1c, 0x58, - 0xf0, 0x39, 0x7e, 0xfa, - 0x5e, 0xbd, 0x0c, 0xc1, 0x81, 0xab, 0x53, 0x24, 0xfe, 0x3d, 0x6a, 0xaa, - 0xc3, 0xf1, 0x5e, 0x62, - 0xfa, 0x69, 0x0e, 0xbe, 0x5f, 0xc7, 0xaa, 0x2a, 0x6a, 0x68, 0x79, 0x99, - 0x02, 0x86, 0xfa, 0xcc, - 0xb5, 0xa1, 0x60, 0xc7, 0x82, 0x11, 0xdd, 0xe3, 0xfc, 0x2b, 0xd6, 0x19, - 0xd7, 0x84, 0xb5, 0x96, - 0x92, 0x84, 0xd1, 0xed, 0x97, 0xf2, 0x20, 0x72, 0x5b, 0x70, 0x1f, 0x91, - 0x2b, 0x2f, 0x92, 0x81, - 0x56, 0x27, 0xbb, 0x6a, 0x35, 0xfc, 0x66, 0xa7, 0x26, 0x99, 0x96, 0x77, - 0xbf, 0xc3, 0x56, 0x44, - 0xf1, 0xb6, 0x2b, 0x62, 0x31, 0x26, 0x4d, 0xd1, 0x9f, 0x10, 0x44, 0xb1, - 0x8f, 0xce, 0xf1, 0x76, - 0x04, 0x4d, 0xba, 0xb4, 0x5a, 0xca, 0xfb, 0xa0, 0x6c, 0x52, 0x7e, 0x8f, - 0x3e, 0x19, 0x04, 0x13, - 0x6e, 0x67, 0x38, 0xbd, 0xbf, 0x9a, 0xed, 0xa8, 0x6b, 0x63, 0x27, 0x21, - 0x08, 0x5d, 0x6e, 0xb6, - 0xa5, 0x56, 0xcd, 0x52, 0x29, 0xbf, 0xb7, 0x26, 0x8f, 0xa0, 0xed, 0x60, - 0x2f, 0xe0, 0xa5, 0xda, - 0xe6, 0x49, 0xae, 0x34, 0x1a, 0xf4, 0x0e, 0xcc, 0xad, 0x15, 0xc0, 0xb2, - 0xb8, 0xc9, 0xe6, 0xb5, - 0xc8, 0x74, 0x67, 0x98, 0x4c, 0x93, 0x88, 0xf6, 0xc9, 0x1f, 0x0b, 0xb4, - 0xd6, 0xc7, 0xc8, 0xf0, - 0x7b, 0x5f, 0xe0, 0xb1, 0xb9, 0x2d, 0x32, 0xe5, 0x6f, 0x4f, 0x9c, 0x84, - 0x20, 0xb7, 0x7b, 0x9d, - 0x73, 0xc5, 0x57, 0x1a, 0x0d, 0x7a, 0x07, 0x66, 0xb7, 0xeb, 0x60, 0x59, - 0x5c, 0x85, 0x73, 0xbb, - 0x51, 0x2f, 0x93, 0xa9, 0xb5, 0x80, 0x4f, 0x7f, 0x67, 0x17, 0x29, 0x0d, - 0x70, 0xa0, 0x51, 0xcb, - 0x95, 0x8c, 0xf9, 0x2e, 0x17, 0x8e, 0x09, 0xaa, 0x1a, 0xfe, 0xa0, 0xeb, - 0xe4, 0x4c, 0x95, 0x0e, - 0x66, 0xfd, 0x8f, 0x16, 0x0b, 0xcd, 0xd8, 0x2b, 0xb3, 0xc7, 0xdb, 0xfc, - 0x74, 0x6f, 0x66, 0x90, - 0xd6, 0x93, 0x9a, 0x48, 0x24, 0xc5, 0xb0, 0x40, 0x38, 0x4b, 0x8d, 0x39, - 0x73, 0x65, 0xd6, 0x61, - 0x5b, 0x72, 0x79, 0x58, 0x2c, 0xb2, 0xe6, 0xac, 0x89, 0x9a, 0xea, 0x76, - 0x13, 0x7f, 0x5b, 0x05, - 0xe3, 0x86, 0xdb, 0xad, 0xb7, 0xed, 0xbb, 0x44, 0xda, 0xb2, 0x40, 0x6e, - 0x68, 0x47, 0xe3, 0xd2, - 0x63, 0x32, 0xfa, 0x8f, 0xa6, 0xd4, 0x6d, 0xa3, 0xc4, 0x60, 0x5b, 0x20, - 0xa4, 0xe1, 0x63, 0xf7, - 0x9b, 0x9c, 0xa9, 0x6b, 0xd4, 0x76, 0x5b, 0xd9, 0x98, 0x21, 0x1d, 0x1f, - 0xb9, 0x8a, 0x9b, 0xd3, - 0xbd, 0x3b, 0xd7, 0x6c, 0x36, 0x46, 0xe8, 0x60, 0x24, 0x8f, 0x2a, 0xc4, - 0xab, 0xb6, 0xbd, 0xb0, - 0x77, 0x88, 0xed, 0xae, 0x57, 0xb0, 0xfc, 0xc6, 0xdb, 0xb9, 0x1e, 0xd6, - 0x62, 0x9c, 0x77, 0xa8, - 0x8d, 0xe1, 0xe3, 0x10, 0x08, 0x77, 0x56, 0xec, 0xb1, 0xd1, 0x67, 0x4f, - 0x60, 0x1a, 0x8d, 0x64, - 0xbc, 0xb9, 0x18, 0x41, 0xc1, 0x95, 0xa6, 0x48, 0x3f, 0x7a, 0xd4, 0x97, - 0x45, 0x21, 0xbc, 0xc4, - 0xf3, 0x71, 0x76, 0x38, 0x1c, 0x43, 0xd1, 0x81, 0xa9, 0x39, 0x7b, 0x17, - 0x90, 0x23, 0xf3, 0x9e, - 0xf4, 0x79, 0x5e, 0xfb, 0x9c, 0x3f, 0xf8, 0x59, 0xe8, 0xb7, 0xc4, 0x6d, - 0x5f, 0x40, 0xf4, 0x11, - 0x26, 0xa7, 0x7e, 0x07, 0xe2, 0x30, 0xb3, 0xb9, 0xbc, 0xae, 0x37, 0xdb, - 0x12, 0x3c, 0x26, 0x63, - 0xd4, 0x54, 0xc7, 0x12, 0x09, 0xa0, 0x2c, 0x10, 0x0e, 0x62, 0xb2, 0x9f, - 0x6c, 0x88, 0xd4, 0x89, - 0x80, 0xb4, 0x21, 0x22, 0x11, 0x39, 0xd6, 0xe7, 0x1e, 0xd2, 0x1b, 0x4e, - 0xcc, 0xa6, 0x80, 0x25, - 0x93, 0x06, 0x1e, 0xc0, 0x60, 0x21, 0x6e, 0x5a, 0x40, 0x85, 0xe1, 0xc2, - 0xc5, 0xb8, 0x93, 0xf5, - 0xb6, 0xe4, 0xf2, 0xb0, 0x58, 0xa7, 0x0f, 0x9b, 0xd1, 0xf7, 0x17, 0xec, - 0x26, 0xfe, 0xb6, 0x0a, - 0x15, 0x38, 0xd8, 0x0c, 0x06, 0xb7, 0xdf, 0x4d, 0x04, 0x2c, 0xbb, 0xa5, - 0x28, 0xea, 0x15, 0x2b, - 0xcc, 0x39, 0xdd, 0x2c, 0x16, 0x59, 0x73, 0x56, 0xa5, 0x4d, 0x75, 0x3b, - 0xe8, 0xde, 0xcc, 0xe3, - 0xac, 0x4e, 0xb5, 0xd4, 0x6a, 0x3b, 0xcc, 0x8d, 0x4c, 0xf1, 0xef, 0xee, - 0xbd, 0x45, 0xac, 0x88, - 0xc1, 0x6c, 0x1f, 0x1e, 0x0f, 0x17, 0xf3, 0x5d, 0x0a, 0x4e, 0x09, 0x3a, - 0x44, 0x62, 0xc1, 0xa2, - 0xee, 0xd3, 0x19, 0x9f, 0xae, 0xa3, 0x3b, 0x4f, 0x75, 0xb1, 0x3c, 0x6f, - 0xc4, 0xfb, 0xee, 0x93, - 0xae, 0x89, 0xe8, 0x8e, 0x47, 0x5e, 0x50, 0xdd, 0x7a, 0xd8, 0xd0, 0x48, - 0xa2, 0xa8, 0xae, 0x60, - 0x9c, 0x94, 0x81, 0xa8, 0x54, 0x0a, 0x72, 0x01, 0xd9, 0xaf, 0xa2, 0x65, - 0x76, 0xe9, 0x9c, 0x5c, - 0xd9, 0x01, 0x05, 0x20, 0x10, 0xee, 0xac, 0x1b, 0xa1, 0x61, 0xce, 0x9e, - 0xc0, 0x34, 0xd9, 0xc8, - 0xa3, 0xdc, 0x2a, 0xbc, 0x5e, 0x10, 0xd0, 0xd6, 0xd5, 0xdb, 0xac, 0x49, - 0x0e, 0x14, 0xa3, 0x21, - 0x25, 0xe2, 0xec, 0x70, 0x38, 0x86, 0x61, 0xc1, 0x91, 0x72, 0xf6, 0x2e, - 0xe3, 0x46, 0x25, 0xff, - 0xeb, 0x1c, 0x6c, 0x06, 0x03, 0xba, 0x8e, 0xc7, 0x02, 0x16, 0xbc, 0xb3, - 0x14, 0x75, 0xeb, 0xf4, - 0x40, 0x5a, 0xf1, 0x11, 0xe9, 0xfd, 0x6b, 0x92, 0x0f, 0x69, 0xec, 0x27, - 0x66, 0x53, 0x40, 0xf3, - 0x48, 0xc0, 0x46, 0xba, 0x5d, 0xaa, 0x5e, 0x11, 0xd7, 0xcd, 0x10, 0xfa, - 0x1a, 0x61, 0x48, 0xd5, - 0x6d, 0x22, 0xaa, 0xca, 0x65, 0x2c, 0x3f, 0xd0, 0x46, 0xbf, 0xe6, 0xd4, - 0xf9, 0x27, 0x6d, 0x2a, - 0x28, 0xb7, 0x2e, 0x42, 0x21, 0xc8, 0xe1, 0xca, 0x3e, 0x71, 0x8a, 0x2f, - 0x4f, 0xfa, 0x28, 0xbe, - 0xff, 0xa6, 0x7b, 0x27, 0xf2, 0xde, 0x1f, 0xa2, 0x1d, 0xcf, 0xf9, 0x45, - 0xd2, 0x08, 0xff, 0xab, - 0x0a, 0x5d, 0xea, 0xf1, 0x99, 0x32, 0xa9, 0xd3, 0xee, 0x8d, 0xc3, 0x7b, - 0x63, 0xdf, 0x0a, 0xce, - 0x4f, 0xc8, 0x6e, 0x79, 0xdd, 0xd6, 0x77, 0xc9, 0x96, 0x43, 0xaf, 0x80, - 0xd5, 0x02, 0x4f, 0x5a, - 0x19, 0xef, 0xd5, 0x13, 0xe8, 0x2a, 0x11, 0x6e, 0xb0, 0xda, 0x39, 0xf7, - 0x6a, 0xc1, 0x19, 0x1e, - 0x53, 0xe8, 0xce, 0xf3, 0x98, 0xe5, 0xd3, 0x2f, 0x51, 0x3e, 0x16, 0xab, - 0x6f, 0x4d, 0x53, 0x23, - 0xf5, 0xfb, 0x91, 0xd6, 0x6b, 0xec, 0xb6, 0x71, 0xf3, 0x42, 0x3a, 0x3e, - 0xb1, 0xd7, 0xf5, 0x65, - 0xb9, 0x76, 0x6d, 0xd8, 0x6c, 0x8c, 0x13, 0xc0, 0x48, 0xdd, 0x54, 0x4b, - 0x95, 0xaf, 0xb9, 0xa3, - 0xcb, 0x31, 0xf5, 0xef, 0x96, 0x25, 0x5a, 0x8e, 0xe4, 0xc3, 0xca, 0x41, - 0x27, 0xbd, 0xcb, 0x6c, - 0x45, 0x95, 0x84, 0x88, 0x44, 0xe4, 0xde, 0x1a, 0x78, 0xce, 0x6c, 0xfb, - 0xb6, 0xdd, 0x45, 0x94, - 0x57, 0xa5, 0x74, 0x47, 0xc2, 0x2f, 0x28, 0x8f, 0x3d, 0x6c, 0x68, 0x24, - 0x51, 0x54, 0x57, 0x30, - 0xd7, 0x11, 0x55, 0x65, 0xd3, 0x16, 0xfe, 0x68, 0x23, 0xbe, 0x73, 0x6a, - 0x9d, 0xf2, 0xd7, 0x15, - 0x68, 0xed, 0xdf, 0x53, 0xc8, 0x35, 0x8a, 0x58, 0x31, 0x18, 0x66, 0x08, - 0x29, 0xa9, 0x68, 0x4d, - 0x4c, 0x8d, 0xfc, 0x0e, 0x07, 0x60, 0xa5, 0xb1, 0xbb, 0x9f, 0x6e, 0x75, - 0x24, 0x78, 0x4c, 0xc6, - 0x20, 0x2d, 0x99, 0xe9, 0x95, 0x9f, 0xd4, 0x49, 0xe6, 0xd5, 0x76, 0xf2, - 0x33, 0xc8, 0x20, 0x98, - 0x4a, 0x07, 0x1b, 0xe0, 0x70, 0xcf, 0xc2, 0x41, 0xe1, 0xe4, 0x2f, 0x5c, - 0x05, 0x8c, 0x4a, 0x3d, - 0x05, 0xcf, 0x75, 0x99, 0xad, 0x19, 0xb5, 0x88, 0x77, 0xa7, 0x80, 0xdc, - 0xd0, 0x8e, 0x05, 0x67, - 0xc6, 0x64, 0x37, 0xdd, 0x8f, 0x6b, 0xda, 0x85, 0x4b, 0xc0, 0xb6, 0x40, - 0x8b, 0x01, 0xc6, 0x2d, - 0x14, 0xba, 0x17, 0x21, 0xf1, 0x64, 0x91, 0x65, 0x1f, 0xd9, 0x45, 0xf6, - 0xc6, 0x7d, 0x14, 0x5f, - 0x9e, 0x53, 0xdc, 0xf2, 0x79, 0x6f, 0xee, 0x51, 0xef, 0x86, 0x9d, 0xc3, - 0x69, 0x04, 0x9e, 0xb4, - 0xd5, 0xd6, 0x08, 0x3f, 0xfe, 0x73, 0x62, 0x38, 0x15, 0x97, 0x4c, 0xcc, - 0x82, 0x1f, 0xd5, 0xfd, - 0x4d, 0x0f, 0x33, 0x23, 0xf0, 0xb3, 0xeb, 0x99, 0xa0, 0x6a, 0x90, 0x26, - 0xca, 0xef, 0x4d, 0xb2, - 0xce, 0xfe, 0x80, 0x76, 0x3b, 0x3c, 0xef, 0x06, 0x93, 0x64, 0x4a, 0x9d, - 0xf7, 0x33, 0xce, 0x0b, - 0x5a, 0xf0, 0xb6, 0x75, 0xdb, 0x61, 0xa8, 0x84, 0x92, 0x6f, 0x14, 0x25, - 0xfd, 0xe8, 0x5a, 0x71, - 0x3f, 0x48, 0xab, 0x14, 0x0a, 0x1a, 0xa2, 0xd7, 0x0c, 0x74, 0x0e, 0x2c, - 0x78, 0xfd, 0x3f, 0x7d, - 0x8a, 0xe9, 0xcb, 0xd3, 0x88, 0x0b, 0x7f, 0x34, 0xf0, 0x5f, 0xd8, 0x35, - 0xaf, 0x79, 0x8a, 0xeb, - 0x83, 0xf1, 0xb3, 0x55, 0xcb, 0x8f, 0x04, 0x9f, 0x33, 0x0e, 0xda, 0xbb, - 0x3d, 0xdc, 0x83, 0xb9, - 0xc3, 0xab, 0x42, 0x44, 0x22, 0x72, 0x6f, 0x0d, 0x3c, 0x67, 0x36, 0x9c, - 0x5b, 0x8f, 0xc3, 0x4a, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x94, 0x0e, 0x36, 0x03, 0xe0, 0x5d, 0x47, 0x82, 0x01, 0x0b, 0x5e, 0xb8, - 0x0a, 0xdb, 0x94, 0x7a, - 0x1f, 0x65, 0x32, 0xfd, 0x9f, 0x85, 0x76, 0x9e, 0xea, 0xa1, 0x78, 0xde, - 0x4b, 0x35, 0x1f, 0xe5, - 0x98, 0xd9, 0x3b, 0x1c, 0x0e, 0xc0, 0x89, 0xa1, 0xb5, 0xfd, 0xdc, 0xea, - 0x48, 0xf0, 0x98, 0x4f, - }, - { /* 15 */ - 0xcc, 0x0e, 0x86, 0xc2, 0x4f, 0xba, 0x59, 0x3b, 0xe3, 0xef, 0x79, 0x82, - 0x53, 0x11, 0xf0, 0xcd, - 0x03, 0x96, 0x94, 0x95, 0x6c, 0x2a, 0xb6, 0xf5, 0x9c, 0xba, 0xe7, 0x37, - 0x83, 0x91, 0xbd, 0x5b, - 0x17, 0xb1, 0xab, 0xa6, 0xf9, 0x11, 0xd2, 0x03, 0xc3, 0x8e, 0xc9, 0x90, - 0x58, 0x92, 0xad, 0x69, - 0xa5, 0x82, 0x44, 0x27, 0x96, 0x65, 0xbf, 0x60, 0xda, 0x6e, 0x59, 0x28, - 0x51, 0x68, 0x84, 0xbe, - 0xd4, 0x34, 0xac, 0xe0, 0xa9, 0x29, 0xa0, 0x9f, 0x89, 0x76, 0x4d, 0xf9, - 0xc1, 0x13, 0x51, 0x50, - 0xfc, 0x7a, 0xd2, 0x86, 0x40, 0x5f, 0x68, 0xb0, 0x37, 0x1e, 0x11, 0x74, - 0xb4, 0x15, 0x71, 0x34, - 0xd6, 0xd0, 0xf5, 0x06, 0xe1, 0xa4, 0xc5, 0x39, 0x61, 0x1b, 0xf7, 0x62, - 0x82, 0x4c, 0x87, 0x83, - 0x76, 0x2b, 0xce, 0x5d, 0xc3, 0xbf, 0x63, 0x85, 0xdc, 0x78, 0x44, 0x13, - 0x95, 0x54, 0x07, 0xd0, - 0xd2, 0xdb, 0x47, 0x09, 0x71, 0x7d, 0x0f, 0xb6, 0x72, 0xc1, 0x40, 0x97, - 0x04, 0xf2, 0xe8, 0xe6, - 0x20, 0x58, 0xd9, 0x78, 0x0a, 0x07, 0x9f, 0xf2, 0x98, 0x1f, 0xf1, 0xa4, - 0xba, 0xb9, 0xfe, 0xae, - 0x65, 0x91, 0xd7, 0xf4, 0xaa, 0x77, 0x7b, 0x09, 0x0c, 0x2c, 0x3a, 0x76, - 0x4b, 0x78, 0xc5, 0xdc, - 0x42, 0x54, 0x28, 0x16, 0x5c, 0x83, 0x98, 0x81, 0x1b, 0x53, 0x9b, 0x10, - 0xf4, 0xee, 0xe9, 0x4c, - 0x46, 0x5f, 0x9a, 0x19, 0xcc, 0x5a, 0x52, 0x0e, 0x08, 0x89, 0x2c, 0xe5, - 0x72, 0x50, 0x86, 0x29, - 0xbb, 0x57, 0x85, 0xec, 0xa8, 0xa2, 0xe9, 0xed, 0x4b, 0x40, 0x60, 0x3d, - 0x06, 0x8b, 0x9c, 0x95, - 0x2c, 0x45, 0xcc, 0x69, 0x79, 0xaf, 0x02, 0xa0, 0xad, 0xb2, 0xeb, 0x78, - 0xf3, 0xb8, 0x4f, 0x01, - 0x25, 0x21, 0xa6, 0x04, 0xbe, 0x79, 0x86, 0x2e, 0xff, 0x12, 0x1b, 0xfd, - 0xfc, 0xc9, 0xfa, 0x43, - 0x2e, 0xa1, 0x95, 0x8f, 0x31, 0x22, 0x67, 0x06, 0x45, 0xdf, 0x51, 0xe3, - 0xb0, 0xe7, 0x99, 0xd2, - 0x7f, 0x4f, 0xa4, 0x30, 0x04, 0x69, 0xe7, 0x0b, 0x8e, 0xd8, 0xb4, 0x96, - 0x9a, 0x25, 0xb2, 0x92, - 0xad, 0x94, 0xe3, 0x39, 0x75, 0x14, 0xe8, 0xbd, 0xfc, 0x19, 0xf4, 0x01, - 0x9e, 0xd7, 0x5a, 0x74, - 0x06, 0xef, 0xeb, 0xe9, 0xd8, 0x54, 0xaf, 0x29, 0xfb, 0xb7, 0x0d, 0x6e, - 0xc5, 0xe1, 0xb9, 0xb6, - 0x6b, 0x68, 0x9b, 0x03, 0x91, 0x52, 0x83, 0xfd, 0xd1, 0xec, 0x9a, 0x31, - 0x41, 0x26, 0xa2, 0xa0, - 0x3b, 0xf4, 0x67, 0xcf, 0x80, 0xbe, 0xd0, 0xa3, 0x6e, 0x3c, 0x22, 0xe8, - 0xab, 0x2a, 0xe2, 0x68, - 0x6a, 0x1a, 0x56, 0x70, 0xb5, 0xf5, 0x50, 0xae, 0xa5, 0x3b, 0xc7, 0x9d, - 0x81, 0xe8, 0xc9, 0x28, - 0x7e, 0x3d, 0x69, 0x43, 0x20, 0xce, 0x34, 0x58, 0xfa, 0x0f, 0xe9, 0x3a, - 0x5a, 0xeb, 0xd9, 0x1a, - 0x3c, 0x69, 0x41, 0x55, 0x7c, 0x4d, 0xac, 0xd9, 0xe1, 0x5c, 0x72, 0x2a, - 0xae, 0x05, 0x30, 0x56, - 0x84, 0xa8, 0x50, 0x2c, 0xb8, 0xc5, 0xf3, 0xc1, 0x36, 0xa6, 0xf5, 0x20, - 0x2b, 0x1f, 0x11, 0x98, - 0x67, 0x75, 0x8e, 0x12, 0xe2, 0xfa, 0x1e, 0xaf, 0xe4, 0x41, 0x80, 0xed, - 0x08, 0x27, 0x13, 0x0f, - 0xb6, 0x38, 0x5d, 0x8e, 0xff, 0xad, 0xa7, 0xec, 0x0a, 0x3a, 0x27, 0x4d, - 0x8f, 0x44, 0x46, 0xb2, - 0x16, 0xc3, 0x66, 0xd5, 0xdd, 0xb6, 0x01, 0x50, 0xb7, 0x59, 0x94, 0x3c, - 0x98, 0x5c, 0xc6, 0xe1, - 0x88, 0xb5, 0x45, 0x3d, 0xcb, 0x6d, 0x6e, 0x93, 0x03, 0x0b, 0xef, 0xfc, - 0x62, 0x1e, 0xa0, 0x37, - 0x58, 0x8a, 0x5b, 0xd2, 0xf2, 0x9d, 0x04, 0x83, 0x99, 0xa7, 0x15, 0xf0, - 0x25, 0xb3, 0x9e, 0x02, - 0xbc, 0xca, 0xa3, 0x76, 0x54, 0x51, 0x95, 0x97, 0xc4, 0x20, 0x30, 0xff, - 0x03, 0xa4, 0x4e, 0xab, - 0xde, 0xc6, 0x52, 0x18, 0x02, 0xd5, 0x92, 0xe4, 0x47, 0x6c, 0x5a, 0x4b, - 0x4d, 0xf3, 0x59, 0x49, - 0xc2, 0xf7, 0xca, 0x35, 0x74, 0x9f, 0xa1, 0xcf, 0x3e, 0x2f, 0xd9, 0xc5, - 0x59, 0x4f, 0x97, 0xb1, - 0x4e, 0x49, 0x3d, 0x07, 0x2f, 0x2b, 0x05, 0xd3, 0x2e, 0xfe, 0x81, 0xcc, - 0xbd, 0xef, 0x58, 0xe3, - 0x3f, 0xff, 0xd5, 0xc0, 0x10, 0x67, 0x1a, 0x2c, 0x7d, 0xe6, 0x95, 0x1d, - 0x2d, 0x94, 0x8d, 0x0d, - 0x0e, 0xf9, 0x4c, 0xf7, 0x3b, 0x25, 0xf8, 0xf4, 0xdd, 0xc0, 0xa0, 0x47, - 0x0a, 0x5e, 0x67, 0x7c, - 0x1f, 0xa7, 0x0c, 0xb8, 0x1a, 0x60, 0x85, 0xde, 0xe5, 0xf9, 0x64, 0xb9, - 0x97, 0x2d, 0x73, 0xa3, - 0x99, 0xeb, 0x05, 0x72, 0xea, 0x28, 0x13, 0xb9, 0x3b, 0x32, 0x2b, 0x02, - 0xff, 0x6d, 0xb4, 0xe8, - 0x0c, 0x1d, 0x15, 0x11, 0x73, 0xa8, 0x9d, 0x52, 0x35, 0xad, 0x1a, 0xdc, - 0x49, 0x01, 0xb1, 0xaf, - 0x70, 0xc4, 0x25, 0xb4, 0x1b, 0xeb, 0xcc, 0xac, 0x27, 0xcf, 0x49, 0x7d, - 0x50, 0xb5, 0xbe, 0x66, - 0x44, 0xbb, 0xc3, 0xff, 0x84, 0xd7, 0x37, 0xa8, 0xe0, 0xe4, 0x96, 0x7e, - 0x31, 0x0f, 0x50, 0xfa, - 0x2d, 0x37, 0x01, 0x1a, 0x5d, 0x08, 0xd1, 0xf3, 0xd9, 0x65, 0xb6, 0xd4, - 0x33, 0x76, 0x24, 0x89, - 0x5f, 0x17, 0x7d, 0x48, 0x0e, 0x6e, 0x78, 0xf9, 0x16, 0xc7, 0x45, 0x32, - 0x20, 0x9c, 0x4c, 0x3c, - 0x78, 0xd2, 0x82, 0xaa, 0xf8, 0x9a, 0x9b, 0x71, 0x01, 0xb8, 0xe4, 0x54, - 0x9f, 0x0a, 0x60, 0xac, - 0xcb, 0x93, 0xa0, 0x58, 0xb3, 0x49, 0x25, 0x41, 0x6c, 0x8f, 0x29, 0x40, - 0x56, 0x3e, 0x22, 0xf3, - 0xd5, 0x46, 0x61, 0x93, 0x8d, 0x8e, 0x73, 0xcc, 0xfd, 0xa1, 0x10, 0x55, - 0x01, 0xdd, 0x3a, 0xd8, - 0x73, 0x52, 0xb1, 0x21, 0x77, 0xc1, 0x7a, 0x59, 0xbb, 0x75, 0xae, 0x4a, - 0xd3, 0x24, 0x03, 0x3d, - 0x5c, 0x81, 0xe9, 0xdd, 0x62, 0x44, 0xce, 0x0c, 0x8a, 0x7d, 0xa2, 0x05, - 0xa3, 0x0d, 0xf1, 0x67, - 0xfe, 0x9e, 0x8b, 0x60, 0x08, 0xd2, 0x0d, 0x16, 0xdf, 0x73, 0xab, 0xef, - 0xf7, 0x4a, 0xa7, 0xe7, - 0x6f, 0x63, 0x29, 0x0c, 0x01, 0x8b, 0x49, 0x72, 0xc2, 0x36, 0x2d, 0xc4, - 0xc7, 0x98, 0xcd, 0xc5, - 0x1a, 0xde, 0x73, 0xc4, 0xae, 0x1e, 0x9c, 0x02, 0x82, 0xf4, 0x8e, 0xe0, - 0xd1, 0x5d, 0x77, 0x4e, - 0x07, 0x9d, 0x26, 0x9a, 0xfc, 0xf3, 0x7c, 0x7a, 0x8f, 0x60, 0x50, 0xc2, - 0x05, 0x2f, 0xd2, 0x3e, - 0xee, 0xb2, 0x06, 0x5c, 0x0d, 0x30, 0xa3, 0x6f, 0x93, 0x9d, 0x32, 0xbd, - 0xaa, 0xf7, 0xd8, 0xb0, - 0xea, 0xb9, 0xb4, 0x53, 0x9d, 0xe9, 0x69, 0xe0, 0x80, 0x47, 0x85, 0x48, - 0x2c, 0x49, 0xb7, 0xd5, - 0xc8, 0x05, 0x34, 0xcd, 0xdf, 0x63, 0x93, 0xb4, 0xf0, 0x35, 0xce, 0x77, - 0xd5, 0xaf, 0x9f, 0xa8, - 0x8c, 0xbe, 0xf7, 0x32, 0x5b, 0xb4, 0xa4, 0x1c, 0x10, 0xd1, 0x58, 0x09, - 0xe4, 0xa0, 0xcf, 0x52, - 0xb5, 0xae, 0xc9, 0x1b, 0x93, 0x87, 0x11, 0x19, 0x96, 0x80, 0xc0, 0x7a, - 0x0c, 0xd5, 0xfb, 0xe9, - 0x38, 0x62, 0xf3, 0x5a, 0xec, 0x94, 0x66, 0x56, 0xf2, 0x86, 0xc5, 0xdf, - 0x28, 0xbb, 0x5f, 0x33, - 0x59, 0xf8, 0x96, 0xa1, 0xd6, 0x3a, 0xd7, 0xd0, 0xed, 0x70, 0x48, 0x5c, - 0xe5, 0x7d, 0xf5, 0x8a, - 0x69, 0x8c, 0xc2, 0xe5, 0xd9, 0xdf, 0xe6, 0x5b, 0x39, 0x81, 0x20, 0xaa, - 0x02, 0x79, 0x74, 0x73, - 0x10, 0x2c, 0x8d, 0x3c, 0x05, 0xe2, 0xae, 0x79, 0x4c, 0xee, 0x99, 0x52, - 0x5d, 0xbd, 0x7f, 0x57, - 0xf0, 0x67, 0xc7, 0x97, 0x33, 0xf7, 0xf5, 0xe2, 0x02, 0xb3, 0x0b, 0xa8, - 0xfd, 0x14, 0xc0, 0x9b, - 0xa3, 0x6d, 0xaf, 0xce, 0x4e, 0x31, 0x10, 0x49, 0x21, 0xd9, 0x54, 0x46, - 0x94, 0x89, 0x3d, 0x08, - 0x09, 0x64, 0x6a, 0x6d, 0xc7, 0xd6, 0x84, 0x8e, 0x52, 0xa0, 0xf0, 0x85, - 0x0f, 0x71, 0xb5, 0x42, - 0x0d, 0x6f, 0xd8, 0x62, 0x57, 0x0f, 0x4e, 0x01, 0x41, 0x7a, 0x47, 0x70, - 0x89, 0xcf, 0xda, 0x27, - 0xfd, 0x08, 0x1f, 0xf5, 0x64, 0xf8, 0xbb, 0xe3, 0x43, 0xc9, 0x4c, 0xd8, - 0x74, 0xdb, 0x1a, 0xbc, - 0x1b, 0xac, 0xbe, 0xb7, 0x8a, 0xb9, 0x4f, 0x51, 0xf6, 0x23, 0xd3, 0x4c, - 0x11, 0x93, 0x1c, 0xc6, - 0x27, 0xc5, 0xff, 0xe2, 0xf6, 0xf4, 0xe3, 0x88, 0x17, 0x7f, 0xa1, 0x66, - 0xbf, 0x96, 0x2c, 0x90, - 0x8d, 0xcc, 0x3a, 0x41, 0x7f, 0x13, 0x77, 0x4f, 0x64, 0x06, 0x05, 0xa5, - 0x24, 0x6e, 0xa4, 0xda, - 0xf2, 0x83, 0x9e, 0x71, 0x7b, 0x7a, 0x90, 0x44, 0xea, 0xde, 0xb1, 0x33, - 0xbe, 0x4b, 0x16, 0x48, - 0x92, 0x6b, 0x36, 0xf9, 0x65, 0x73, 0xf2, 0x91, 0x81, 0xff, 0x61, 0x1c, - 0xb3, 0x43, 0xd7, 0x79, - 0x6d, 0x87, 0x70, 0xea, 0x49, 0x06, 0x2c, 0xd4, 0x2a, 0x5b, 0x97, 0x5f, - 0x84, 0xc7, 0x1b, 0x16, - 0x5d, 0xf3, 0x24, 0xae, 0x46, 0xe3, 0x1d, 0x5f, 0xfe, 0xaa, 0xff, 0xa9, - 0x63, 0xc3, 0x9a, 0xef, - 0xf1, 0x15, 0x0a, 0xe4, 0x17, 0x50, 0x26, 0xb1, 0x76, 0x64, 0x56, 0x04, - 0x3d, 0xda, 0xab, 0x13, - 0x21, 0x2a, 0x14, 0x0b, 0x2e, 0xa0, 0x4c, 0xa1, 0xec, 0xc8, 0xac, 0x08, - 0x7a, 0x77, 0x95, 0x26, - 0x37, 0xe9, 0x72, 0xde, 0xf3, 0x16, 0x4d, 0xf1, 0x5b, 0x91, 0x38, 0x34, - 0xe2, 0x2b, 0x53, 0xc7, - 0x40, 0xb0, 0x71, 0xf0, 0x14, 0x0e, 0xfd, 0x27, 0xf3, 0x3e, 0x21, 0x8b, - 0xb7, 0xb1, 0x3f, 0x9f, - 0x8e, 0x5a, 0xae, 0xd4, 0x13, 0x39, 0xc1, 0xba, 0xf8, 0xbc, 0xe2, 0x92, - 0xa7, 0xff, 0x19, 0x81, - 0xe8, 0x5d, 0xed, 0xb5, 0xd5, 0x64, 0x0c, 0x46, 0x68, 0x2a, 0x3f, 0xd3, - 0x6f, 0x16, 0x61, 0x06, - 0xe4, 0x40, 0xf8, 0xa4, 0xa6, 0xcc, 0x91, 0x14, 0x5d, 0x87, 0x25, 0x0f, - 0x26, 0x17, 0xd0, 0xa9, - 0xec, 0x56, 0x5f, 0xba, 0x45, 0xbd, 0xc6, 0xc9, 0x7b, 0xf0, 0x88, 0x26, - 0xe9, 0xa8, 0x0e, 0x63, - 0x9e, 0x76, 0x23, 0xe8, 0x16, 0xdb, 0x6f, 0xc3, 0xb4, 0x52, 0x7b, 0xc0, - 0xfa, 0x42, 0x66, 0xd6, - 0x9c, 0x92, 0x7a, 0x0e, 0x5e, 0x56, 0x0a, 0x65, 0x5c, 0x3f, 0xc1, 0x5b, - 0xb9, 0x1d, 0xb0, 0x05, - 0xd1, 0x4d, 0xd3, 0x9c, 0x1d, 0x57, 0xb9, 0x43, 0xee, 0x7b, 0xa7, 0xa0, - 0x87, 0x63, 0x55, 0xbd, - 0xe7, 0xd6, 0x6c, 0x31, 0xca, 0xe6, 0x27, 0xe1, 0xc1, 0x3d, 0xc2, 0x38, - 0xa5, 0x86, 0x6d, 0xf2, - 0xb8, 0xc1, 0x11, 0x79, 0xc4, 0x88, 0x5f, 0x18, 0xd7, 0xfa, 0x87, 0x0a, - 0x85, 0x1a, 0x21, 0xce, - 0x2f, 0xd3, 0x58, 0xfc, 0x15, 0x85, 0xb4, 0x55, 0x31, 0x08, 0x0c, 0x4f, - 0x70, 0x29, 0xf2, 0x5a, - 0xe2, 0xaf, 0x13, 0x4d, 0x7e, 0x98, 0x3e, 0x3d, 0xa6, 0x30, 0x28, 0x61, - 0xe3, 0xf6, 0x69, 0x1f, - 0x8a, 0x51, 0x1c, 0xdb, 0x83, 0xe0, 0x0b, 0x35, 0xeb, 0x66, 0x55, 0x67, - 0x21, 0x41, 0x76, 0xe4, - 0xd7, 0xa2, 0x38, 0x75, 0xc5, 0x03, 0x16, 0x6a, 0x15, 0xcc, 0xaa, 0xce, - 0x42, 0x82, 0xec, 0x0b, - 0xb4, 0xdc, 0x04, 0x68, 0xb7, 0x20, 0xc2, 0x4a, 0xe2, 0x57, 0x9d, 0xd6, - 0xcc, 0x1b, 0x90, 0x61, - 0x29, 0x3c, 0xb3, 0x15, 0xcd, 0xd1, 0x1b, 0x7c, 0xca, 0xbf, 0x01, 0x21, - 0xb5, 0xc8, 0x4b, 0xec, - 0x13, 0xba, 0x19, 0xa9, 0x69, 0xc8, 0x18, 0x8c, 0xd0, 0x54, 0x7e, 0x65, - 0xde, 0x2c, 0xc2, 0x0c, - 0x98, 0x99, 0xc8, 0x01, 0xce, 0x8f, 0xc0, 0xea, 0x4f, 0xe5, 0x76, 0xae, - 0x3f, 0xa3, 0xdf, 0x60, - 0x80, 0xa3, 0xe2, 0x23, 0x28, 0x1c, 0x39, 0x4e, 0x25, 0x7c, 0x42, 0xd5, - 0xad, 0xa1, 0x7e, 0xfd, - 0xa6, 0x14, 0xd0, 0xb2, 0xfa, 0x4f, 0x09, 0x95, 0x46, 0xd4, 0xbe, 0x1f, - 0xd2, 0xf9, 0x39, 0xe5, - 0x62, 0x0c, 0xf1, 0x6e, 0x56, 0x84, 0x07, 0x73, 0x83, 0x4c, 0x6a, 0xb4, - 0x4e, 0x57, 0x17, 0xe2, - 0xb3, 0x41, 0x22, 0xf2, 0x4b, 0xd3, 0xbe, 0x30, 0x6d, 0x37, 0xcd, 0x14, - 0xc9, 0x34, 0x42, 0x5f, - 0x5e, 0x65, 0xb0, 0x3b, 0x2a, 0xc9, 0xab, 0xaa, 0x62, 0x10, 0x18, 0x9e, - 0xe0, 0x52, 0x27, 0xb4, - 0x72, 0x20, 0x7c, 0x52, 0x53, 0x66, 0xa9, 0x0a, 0xcf, 0xa2, 0xf3, 0xe6, - 0x13, 0xea, 0x68, 0xb5, - 0x43, 0x26, 0xe5, 0x65, 0x78, 0x24, 0x4b, 0xd2, 0x6f, 0x84, 0xc6, 0xbc, - 0x34, 0x20, 0x82, 0xc4, - 0x34, 0x7f, 0xe6, 0x4b, 0x9f, 0x3c, 0xfb, 0x04, 0xc7, 0x2b, 0xdf, 0x03, - 0x61, 0xba, 0xee, 0x9c, - 0x35, 0x0d, 0x2b, 0x38, 0xbb, 0x9b, 0x28, 0x57, 0xb3, 0xfc, 0x82, 0xaf, - 0xa1, 0x74, 0x85, 0x14, - 0x52, 0x78, 0xa5, 0x2a, 0x59, 0x61, 0x36, 0xf8, 0x57, 0xbd, 0x02, 0x42, - 0xa9, 0x53, 0x96, 0x1b, - 0x26, 0xb7, 0x32, 0x91, 0xd2, 0x53, 0x30, 0xdb, 0x63, 0xa8, 0xfc, 0xca, - 0x7f, 0x58, 0x47, 0x18, - 0x7d, 0xab, 0xfd, 0xd6, 0x4c, 0xe4, 0x82, 0xad, 0x66, 0xb5, 0x0e, 0x0d, - 0xd9, 0x7a, 0x64, 0x41, - 0xb7, 0x4a, 0x90, 0xfd, 0xdb, 0x0a, 0x74, 0xbf, 0x7e, 0xed, 0x7a, 0xe1, - 0x4f, 0x8a, 0x2d, 0x3a, - 0x0a, 0xf2, 0xfe, 0xf8, 0xab, 0xfc, 0x32, 0x7b, 0xce, 0x1a, 0x17, 0xb2, - 0x8c, 0xe0, 0x08, 0x19, - 0x45, 0xc9, 0x0e, 0x8c, 0xa0, 0x70, 0xe4, 0xfb, 0x94, 0x33, 0xcb, 0xd2, - 0xf1, 0xc1, 0x3b, 0x72, - 0x81, 0xd1, 0x2f, 0x50, 0x0c, 0xbb, 0xea, 0x1d, 0x51, 0xab, 0x1f, 0x79, - 0x6d, 0x6f, 0x15, 0x75, - 0x6e, 0x11, 0xe4, 0x7f, 0x25, 0x2c, 0x9a, 0x21, 0xb6, 0xe1, 0x70, 0x68, - 0x07, 0x56, 0xa6, 0x4d, - 0x53, 0x0a, 0x68, 0x59, 0x7d, 0xc6, 0xe5, 0xab, 0x23, 0x6a, 0x5f, 0xee, - 0x69, 0x9d, 0xfd, 0x93, - 0x4a, 0x42, 0x8f, 0x08, 0xbf, 0xf2, 0xcf, 0x5c, 0x3d, 0x24, 0x36, 0x39, - 0x3b, 0x51, 0x37, 0x86, - 0x79, 0xa0, 0x4f, 0xd9, 0xdc, 0x3d, 0x48, 0x22, 0x75, 0x6f, 0xb9, 0xf8, - 0x5f, 0xc4, 0x0b, 0x24, - 0x32, 0x90, 0x0d, 0xa2, 0x47, 0x68, 0x54, 0x2d, 0x3c, 0x9c, 0xd2, 0x6d, - 0xa4, 0x5b, 0x57, 0x2a, - 0x61, 0x9a, 0x65, 0xfb, 0x3a, 0xae, 0xb1, 0x86, 0x1f, 0xf6, 0x8d, 0x83, - 0xcd, 0xc6, 0xaa, 0xb9, - 0xfb, 0xe7, 0xf4, 0x1c, 0xbc, 0xac, 0x14, 0xca, 0xb8, 0x7e, 0x41, 0xb6, - 0xb1, 0x3a, 0xa3, 0x0a, - 0x39, 0x10, 0x3e, 0x29, 0xc8, 0x33, 0xb5, 0x05, 0x86, 0x51, 0x98, 0x73, - 0xe8, 0x75, 0x34, 0xbb, - 0xc0, 0x13, 0x93, 0xd3, 0x3c, 0x12, 0xc4, 0x69, 0xd6, 0x42, 0x63, 0x5e, - 0x1a, 0x10, 0x41, 0x62, - 0xfa, 0x95, 0x39, 0x6f, 0x98, 0x0b, 0xc7, 0x99, 0xcc, 0xa9, 0x1c, 0x1a, - 0x71, 0xf4, 0xc8, 0x82, - 0x5b, 0x1c, 0xcf, 0x47, 0x9e, 0xb7, 0xb2, 0x76, 0x05, 0x1d, 0xf2, 0xc7, - 0xa6, 0x22, 0x23, 0x59, - 0xa4, 0xf0, 0x89, 0x54, 0xb2, 0xc2, 0x6c, 0x33, 0xae, 0xb9, 0x04, 0x84, - 0x91, 0xa6, 0xef, 0x36, - 0xba, 0x25, 0x48, 0x9f, 0x8c, 0x05, 0x3a, 0xbe, 0x3f, 0x97, 0x3d, 0x91, - 0xc6, 0x45, 0xf7, 0x1d, - 0xda, 0xcd, 0xe0, 0x17, 0x92, 0x0c, 0x58, 0x6b, 0x54, 0xb6, 0xed, 0xbe, - 0xcb, 0x4d, 0x36, 0x2c, - 0x4c, 0xad, 0x64, 0xe1, 0x67, 0xa6, 0x60, 0x75, 0xc6, 0x93, 0x3b, 0x57, - 0xfe, 0xb0, 0x8e, 0x30, - 0x05, 0x79, 0x7f, 0x7c, 0xb4, 0x7e, 0x19, 0xdc, 0x67, 0x0d, 0xea, 0x59, - 0x46, 0x70, 0x04, 0xed, - 0xc3, 0x85, 0x07, 0x46, 0x50, 0x38, 0x72, 0x9c, 0x4a, 0xf8, 0x84, 0x69, - 0x99, 0x81, 0xfc, 0x39, - 0x3a, 0x86, 0xaa, 0xbc, 0xa4, 0x19, 0x03, 0xf0, 0x1a, 0xeb, 0x7f, 0x44, - 0x6b, 0xe4, 0x89, 0xe0, - 0x82, 0x47, 0xbb, 0xc5, 0x60, 0x91, 0x5c, 0xe8, 0xcd, 0x11, 0xf8, 0x4e, - 0xee, 0xfe, 0xa8, 0x2e, - 0x18, 0x3a, 0x2a, 0x22, 0xe6, 0x93, 0xf9, 0xa4, 0x6a, 0x99, 0x34, 0x7b, - 0x92, 0x02, 0xa1, 0x9d, - 0xc9, 0x77, 0xf9, 0xbe, 0xfb, 0xc4, 0x40, 0xe7, 0x84, 0xe2, 0x93, 0xdb, - 0x15, 0x61, 0xf4, 0x20, - 0x68, 0xfe, 0x0f, 0x96, 0xfd, 0x78, 0x35, 0x08, 0x4d, 0x56, 0x7d, 0x06, - 0xc2, 0xb7, 0x1f, 0xfb, - 0xf6, 0x88, 0x2c, 0x7e, 0xeb, 0xa3, 0x5a, 0xcb, 0xf9, 0x04, 0x06, 0xc6, - 0x38, 0xf5, 0x79, 0x2d, - 0x63, 0x7e, 0x3c, 0x1d, 0x72, 0x23, 0xd4, 0x20, 0xf7, 0x9b, 0x37, 0x18, - 0x8e, 0x99, 0x7c, 0x6a, - 0x87, 0x3e, 0xc4, 0xb9, 0xd4, 0xef, 0x45, 0x34, 0xaa, 0x1c, 0x12, 0x17, - 0xa8, 0x8e, 0xac, 0xc3, - 0x49, 0xd4, 0x1b, 0x9d, 0xd3, 0xd8, 0x79, 0xa9, 0xa1, 0x9e, 0xd1, 0x0e, - 0xb8, 0xc0, 0x8a, 0xdd, - 0x36, 0x9b, 0xbf, 0xad, 0xd7, 0xb1, 0x9e, 0xa2, 0x2f, 0x46, 0x65, 0x98, - 0x22, 0xe5, 0x38, 0x4f, - 0x91, 0xfd, 0xa2, 0x6c, 0x09, 0x59, 0x44, 0x64, 0x1d, 0x45, 0x86, 0x2b, - 0x30, 0xd2, 0x6a, 0x22, - 0x97, 0x12, 0x49, 0x85, 0xd1, 0x0d, 0xeb, 0x4d, 0xe6, 0xf2, 0x8b, 0x45, - 0xf5, 0x33, 0xd3, 0x94, - 0x33, 0xe2, 0xc0, 0xd1, 0x63, 0xcf, 0x87, 0x7e, 0x48, 0x4b, 0x8f, 0xc1, - 0x64, 0x95, 0x3c, 0xa2, - 0x08, 0x16, 0xa7, 0x1e, 0xe3, 0x71, 0x57, 0xdd, 0x26, 0x77, 0xad, 0x29, - 0xcf, 0xbf, 0xde, 0xca, - 0x7c, 0xd9, 0x30, 0xa5, 0x68, 0x43, 0x51, 0xfe, 0x12, 0x62, 0x53, 0xa1, - 0x19, 0xb4, 0x0f, 0xc9, - 0x02, 0xe4, 0x59, 0xe6, 0x48, 0x8d, 0x65, 0xa6, 0xe8, 0x6d, 0xba, 0x9b, - 0x43, 0x5f, 0xd6, 0xd3, - 0x77, 0x59, 0x03, 0x2e, 0xe7, 0x18, 0xb0, 0xd6, 0xa8, 0xaf, 0x19, 0xbf, - 0x55, 0x9a, 0x6c, 0x58, - 0x85, 0xda, 0x9d, 0x5f, 0x9c, 0x62, 0x20, 0x92, 0x42, 0x71, 0xa8, 0x8c, - 0xeb, 0xd1, 0x7a, 0x10, - 0x66, 0x07, 0x43, 0x61, 0xc6, 0x5d, 0xcd, 0xfc, 0x90, 0x96, 0xdd, 0x41, - 0xc8, 0xe9, 0x78, 0x87, - 0x41, 0xc2, 0xbc, 0x83, 0x30, 0xa9, 0x2e, 0x74, 0x87, 0xe9, 0x7c, 0x27, - 0x77, 0x7f, 0x54, 0x17, - 0x30, 0x74, 0x54, 0x44, 0x0f, 0xe5, 0x31, 0x8b, 0xd4, 0xf1, 0x68, 0xf6, - 0xe7, 0x04, 0x81, 0xf9, - 0xcd, 0x7c, 0x4b, 0xb1, 0x6b, 0x1d, 0x8a, 0x68, 0x97, 0x38, 0x24, 0x2e, - 0x93, 0xdf, 0x9b, 0x45, - 0xd0, 0x3f, 0x1e, 0xef, 0x39, 0xf0, 0x6a, 0x10, 0x9a, 0xac, 0xfa, 0x0c, - 0x47, 0xad, 0x3e, 0x35, - 0xd9, 0x5b, 0x74, 0x82, 0xfe, 0x26, 0xee, 0x9e, 0xc8, 0x0c, 0x0a, 0x89, - 0x48, 0xdc, 0x8b, 0x77, - 0xa9, 0x9f, 0x51, 0x36, 0xe5, 0xcd, 0x22, 0x32, 0xef, 0xc3, 0x43, 0xf4, - 0x18, 0x69, 0x35, 0x11, - 0xaa, 0x09, 0xc5, 0xa3, 0x89, 0xe7, 0x94, 0xc7, 0x73, 0x79, 0xa4, 0xc3, - 0x9b, 0xf8, 0x88, 0x4a, - 0xc5, 0x6a, 0xec, 0xaf, 0x88, 0x6c, 0xdd, 0xb5, 0xb1, 0x4f, 0x89, 0x07, - 0x5c, 0x60, 0x45, 0x8f, - 0x60, 0xe8, 0xa8, 0x88, 0x1e, 0x09, 0x62, 0xd5, 0x6b, 0x21, 0xd0, 0x2f, - 0x0d, 0x08, 0xc1, 0x31, - 0xf8, 0x71, 0x60, 0x89, 0xd0, 0x86, 0xa2, 0x3f, 0x24, 0xc4, 0xa6, 0x81, - 0x32, 0xab, 0x1e, 0x51, - 0x04, 0x0b, 0xb2, 0x0f, 0x90, 0xd9, 0xca, 0x8f, 0x13, 0xda, 0xb7, 0xf5, - 0x86, 0xbe, 0x6f, 0x65, - 0x90, 0x8f, 0x6f, 0x1f, 0x2d, 0xfe, 0x97, 0x37, 0x69, 0x92, 0xdb, 0x87, - 0xf0, 0x1c, 0x01, 0xaa, - 0xe6, 0xa4, 0xa1, 0x42, 0xee, 0x41, 0xf4, 0xb2, 0xb5, 0xea, 0x9f, 0x94, - 0x65, 0x48, 0x06, 0x7a, - 0x96, 0x60, 0x84, 0xf6, 0xf5, 0xaa, 0x38, 0x1e, 0x92, 0x25, 0xd6, 0xe9, - 0x35, 0xfd, 0xb8, 0x1c, - 0xaf, 0x70, 0xba, 0xdf, 0x3d, 0x99, 0x8d, 0x1b, 0x14, 0x74, 0x4e, 0x9a, - 0xdd, 0x88, 0x8c, 0xa7, - 0xc6, 0xfc, 0x78, 0x3a, 0xe4, 0x46, 0x6b, 0x40, 0x2d, 0xf5, 0x6e, 0x30, - 0xdf, 0xf1, 0xf8, 0xd4, - 0xa7, 0x66, 0x1d, 0xc1, 0xde, 0xe8, 0xda, 0xc6, 0x32, 0x03, 0xe3, 0xb3, - 0x12, 0x37, 0x52, 0x6d, - 0xa1, 0x89, 0xf6, 0x28, 0x06, 0xbc, 0x75, 0xef, 0xc9, 0xb4, 0xee, 0xdd, - 0xd7, 0xd6, 0xeb, 0xdb, - 0xd8, 0x29, 0xb9, 0xf1, 0xda, 0x81, 0x3d, 0xcd, 0xbc, 0xdb, 0x57, 0x25, - 0x88, 0x12, 0xe0, 0xff, - 0x1e, 0xd5, 0xc1, 0xcb, 0x3e, 0xc7, 0x56, 0x8d, 0x91, 0x2e, 0x39, 0x15, - 0x57, 0xe3, 0x18, 0x2b, - 0x4d, 0xdf, 0xa9, 0x92, 0x43, 0x01, 0xb3, 0x26, 0xb2, 0x44, 0x66, 0xfb, - 0x3e, 0x7e, 0xe5, 0xb8, - 0x64, 0xe3, 0x1a, 0x87, 0x8e, 0xd0, 0xa8, 0x5a, 0x78, 0xfb, 0x67, 0xda, - 0x8b, 0xb6, 0xae, 0x54, - 0x9a, 0x7d, 0x91, 0xe7, 0x86, 0x02, 0xa5, 0x4c, 0xa7, 0x88, 0xcc, 0x35, - 0x7c, 0xfc, 0x09, 0xb3, - 0xe3, 0xdd, 0xde, 0x3e, 0x5a, 0x3f, 0xed, 0x6e, 0xd2, 0xe7, 0x75, 0xcd, - 0x23, 0x38, 0x02, 0x97, - 0xf9, 0x03, 0xad, 0xfa, 0xf4, 0x21, 0x71, 0x6c, 0x50, 0x13, 0xfb, 0x2d, - 0xf2, 0x65, 0x75, 0xd9, - 0xf7, 0xfa, 0xe1, 0x0d, 0xcf, 0x04, 0x89, 0x98, 0x8d, 0xd3, 0x5b, 0x6a, - 0xf8, 0x3b, 0x12, 0xa5, - 0x19, 0x48, 0xe7, 0x51, 0xc2, 0x34, 0x2a, 0xf7, 0x1e, 0x4e, 0x69, 0xd7, - 0x52, 0xcc, 0xca, 0x15, - 0x83, 0x35, 0x76, 0xb6, 0x44, 0x36, 0x8f, 0xbb, 0xb9, 0xc6, 0xa5, 0xe2, - 0x2e, 0x30, 0xc3, 0xa6, - 0x4b, 0x30, 0x42, 0x7b, 0x9b, 0x55, 0x1c, 0x0f, 0x49, 0xf3, 0x6b, 0x95, - 0xfb, 0x9f, 0x5c, 0x0e, - 0x4f, 0x3b, 0xf0, 0x74, 0x0b, 0x8c, 0xd6, 0x80, 0x5a, 0x29, 0xdc, 0x60, - 0x7d, 0x21, 0x33, 0x6b, - 0x7b, 0x44, 0x16, 0x3f, 0x94, 0xb0, 0x2d, 0x84, 0x9d, 0x02, 0x03, 0x63, - 0x1c, 0x9b, 0xdd, 0xf7, - 0xef, 0xc0, 0xcb, 0x2f, 0x29, 0x97, 0x70, 0x3c, 0xe7, 0x4a, 0x6f, 0x11, - 0x6a, 0x39, 0xb3, 0x38, - 0x9d, 0xe0, 0xb7, 0x7d, 0x7a, 0xf1, 0xd9, 0x36, 0x28, 0xe8, 0x9c, 0xf7, - 0x79, 0xd3, 0xdb, 0x8d, - 0x74, 0xcf, 0x97, 0xbb, 0x8b, 0x32, 0x06, 0x23, 0x34, 0x15, 0xfe, 0x88, - 0xd6, 0x0b, 0xd1, 0x03, - 0xc7, 0x8e, 0xb5, 0x49, 0xc0, 0xe1, 0xb8, 0x13, 0x59, 0x22, 0x33, 0x9c, - 0x1f, 0x3f, 0x93, 0x5c, - 0xca, 0xe1, 0x6d, 0x2b, 0x97, 0xee, 0xf6, 0x12, 0x18, 0x58, 0x74, 0xec, - 0x96, 0xf0, 0x49, 0x7b, - 0x6c, 0xf5, 0xbd, 0x99, 0x6d, 0xa1, 0xff, 0x87, 0x5e, 0x8c, 0xca, 0xf3, - 0x44, 0x09, 0x70, 0x9e, - 0xf3, 0xf1, 0x53, 0x02, 0x5f, 0xdd, 0x43, 0x17, 0x9e, 0x09, 0xec, 0x9f, - 0x7e, 0x85, 0x7d, 0xc0, - 0x31, 0x06, 0x99, 0x37, 0x2b, 0x42, 0xe2, 0xd8, 0xa0, 0x26, 0x35, 0x5a, - 0x27, 0xca, 0xea, 0x71, - 0x3e, 0x8d, 0x18, 0xb3, 0x34, 0xc0, 0xc9, 0x7f, 0x09, 0x31, 0xc8, 0xb1, - 0xed, 0x5a, 0xe6, 0x85, - 0x01, 0x72, 0xcd, 0x73, 0x24, 0xa7, 0xd3, 0x53, 0x74, 0xd7, 0x5d, 0xac, - 0xc0, 0xce, 0x6b, 0x88, - 0xdb, 0xbf, 0x2d, 0x64, 0xb6, 0xab, 0x8b, 0x38, 0x20, 0x61, 0xb0, 0x12, - 0x0b, 0x83, 0x5d, 0xa4, - 0xc4, 0x18, 0x21, 0xdc, 0xac, 0xcb, 0x0e, 0xe6, 0xc5, 0x98, 0xd4, 0xab, - 0x9c, 0xae, 0x2e, 0x07, - 0xe1, 0x39, 0x87, 0xd8, 0x12, 0xb2, 0x88, 0xc8, 0x3a, 0x8a, 0xcf, 0x56, - 0x60, 0x67, 0xd4, 0x44, - 0xed, 0x24, 0x92, 0xc9, 0x61, 0x1a, 0x15, 0x9a, 0x0f, 0x27, 0xd5, 0x8a, - 0x29, 0x66, 0x65, 0xeb, - 0xe0, 0x4b, 0x4a, 0xab, 0x36, 0x15, 0x5b, 0x9b, 0x4e, 0x5d, 0x92, 0xfa, - 0xa0, 0xa9, 0xbf, 0xcc, - 0x14, 0x27, 0x3f, 0x33, 0x95, 0x3b, 0x64, 0xf6, 0x5f, 0x34, 0x2e, 0xa7, - 0xdb, 0x03, 0x10, 0x32, - 0xdf, 0xb4, 0x9f, 0x6b, 0x26, 0x72, 0x41, 0xb7, 0x33, 0xbb, 0x07, 0xe7, - 0x8d, 0x3d, 0x32, 0xc1, - 0x50, 0x9c, 0xfc, 0xcc, 0x11, 0xec, 0x53, 0x5e, 0xbf, 0xd0, 0xb8, 0xd9, - 0xea, 0x0c, 0x40, 0xc8, - 0xbe, 0x2e, 0xfa, 0x90, 0x1c, 0xdc, 0xf0, 0x31, 0x2c, 0x4d, 0x8a, 0x64, - 0x40, 0xfb, 0x98, 0x78, - 0xab, 0x7b, 0x08, 0xd0, 0xad, 0x40, 0x47, 0x94, 0x07, 0xae, 0xf9, 0x6f, - 0x5b, 0x36, 0xe3, 0xc2, - 0xae, 0x02, 0x77, 0xac, 0x19, 0x3e, 0x5e, 0x48, 0x60, 0xa3, 0x13, 0x36, - 0x1d, 0x46, 0xe7, 0x2f, - 0x51, 0xee, 0x31, 0xbf, 0x35, 0x4b, 0x80, 0x0d, 0xcb, 0x07, 0xe5, 0x75, - 0x2a, 0xc2, 0x2b, 0x40, - 0x12, 0xc8, 0xd4, 0xda, 0x4d, 0x6f, 0xcb, 0xdf, 0xa4, 0x83, 0x23, 0xc9, - 0x1e, 0xe2, 0xa9, 0x84, - 0x8f, 0x28, 0x63, 0xa7, 0x37, 0x9e, 0x12, 0xe9, 0x8c, 0x6b, 0xbf, 0x3e, - 0x67, 0x31, 0x72, 0x09, - 0x1d, 0x43, 0x55, 0x5e, 0x52, 0xed, 0xe0, 0x78, 0x0d, 0x94, 0xde, 0x22, - 0xd4, 0x72, 0xa5, 0x70, - 0xf4, 0x6c, 0x75, 0x98, 0xa3, 0x2e, 0x3f, 0x6d, 0x11, 0x69, 0xbc, 0x5d, - 0x7b, 0xaa, 0xaf, 0xfe, - 0xd3, 0xa9, 0x8a, 0x7a, 0x55, 0xda, 0xdc, 0xe5, 0x06, 0x16, 0x1d, 0x3b, - 0xc4, 0x3c, 0x83, 0x6e, - 0xff, 0xec, 0x46, 0x13, 0x2c, 0x75, 0xde, 0x45, 0xab, 0xa4, 0xf6, 0x43, - 0x37, 0x84, 0xcc, 0x6f, - 0x47, 0x2d, 0x57, 0x6a, 0xe8, 0xfd, 0x81, 0x5d, 0x7c, 0x5e, 0x71, 0x49, - 0xb2, 0x9e, 0xed, 0xa1, - 0x15, 0x55, 0xf2, 0x40, 0xb1, 0x9c, 0xb7, 0xa5, 0x2b, 0xe3, 0x73, 0x0b, - 0x1b, 0xcd, 0x7b, 0xba, - 0x8b, 0x23, 0xd1, 0xa8, 0xa7, 0x47, 0xd8, 0x66, 0x9f, 0xb1, 0x08, 0xcb, - 0xe1, 0x8f, 0x1d, 0x6c, - 0xa0, 0xfb, 0x3b, 0x5b, 0x22, 0x1b, 0xa6, 0xbc, 0xbd, 0x63, 0xb3, 0x71, - 0x17, 0x18, 0x80, 0x53, - 0xf5, 0x1e, 0xb8, 0xeb, 0x87, 0x89, 0xec, 0x3e, 0x65, 0xbe, 0xe1, 0xf1, - 0xbb, 0x64, 0xc4, 0x76, - 0x28, 0x4e, 0x7e, 0x66, 0xe9, 0x76, 0xc8, 0x2f, 0xbe, 0x68, 0x5c, 0x8d, - 0x75, 0x06, 0x20, 0x64, - 0x57, 0x01, 0xda, 0x56, 0xed, 0x1f, 0x2f, 0x24, 0x30, 0xb0, 0xe8, 0x1b, - 0xef, 0x23, 0x92, 0xf6, - 0xb2, 0x33, 0xef, 0x81, 0x6f, 0x74, 0x6d, 0x63, 0x19, 0xe0, 0x90, 0xb8, - 0x09, 0xfa, 0x29, 0xd7, - 0x24, 0x53, 0x6b, 0x77, 0x9a, 0xde, 0x55, 0x7d, 0x8b, 0xc5, 0x46, 0x51, - 0x3c, 0x07, 0x91, 0xcb, - 0xcf, 0x98, 0x12, 0x57, 0x23, 0x90, 0xef, 0xce, 0x7f, 0x55, 0x9e, 0xb5, - 0xd0, 0x80, 0x4d, 0x96, - 0x89, 0xc7, 0x88, 0x4e, 0xef, 0xca, 0xbd, 0xc0, 0x77, 0xdc, 0xb2, 0x50, - 0xa2, 0xd0, 0xcb, 0xbf, - 0xdd, 0x50, 0xc6, 0x8d, 0x6e, 0xff, 0x24, 0x11, 0xdb, 0xd6, 0xbd, 0x7c, - 0xce, 0x62, 0xe4, 0x12, - 0x55, 0xe5, 0x83, 0xb0, 0xa5, 0x92, 0x4a, 0x82, 0xd8, 0xdd, 0x52, 0x80, - 0xac, 0x7c, 0x44, 0x25, - 0x2b, 0xd8, 0xea, 0xf3, 0x85, 0x5c, 0x7e, 0xda, 0x22, 0xd2, 0xbb, 0xba, - 0xf6, 0x97, 0x9d, 0x3f, - 0x9b, 0x0f, 0x5c, 0x94, 0xa2, 0xa5, 0x76, 0x1f, 0xd3, 0x5f, 0x91, 0x99, - 0xbc, 0x32, 0x62, 0x3b, - 0xeb, 0xcb, 0x79, 0x20, 0xb9, 0x4e, 0xba, 0xb3, 0xf4, 0x90, 0xd8, 0xe4, - 0xec, 0x87, 0xdc, 0x5d, - 0xce, 0xea, 0xdf, 0x24, 0x07, 0x37, 0x3c, 0x9d, 0x0b, 0x82, 0xc3, 0x19, - 0x10, 0x4e, 0x26, 0x1e, - 0xe5, 0x32, 0x35, 0xd7, 0x82, 0x6b, 0x42, 0x47, 0x29, 0x50, 0x78, 0xa3, - 0xe6, 0xd9, 0xbb, 0x21, - 0xb1, 0xa5, 0x7b, 0x14, 0x03, 0x5e, 0xdb, 0x96, 0x85, 0x5a, 0x77, 0x8f, - 0x8a, 0x6b, 0x94, 0x8c, - 0x22, 0xbc, 0x80, 0x9e, 0x42, 0x8a, 0xfa, 0x54, 0x70, 0x72, 0x4b, 0x3f, - 0xf9, 0xe6, 0x28, 0x7d, - 0xbd, 0xb8, 0x6e, 0x05, 0x70, 0xf6, 0x46, 0xc4, 0xb0, 0xf7, 0x6d, 0x53, - 0xc3, 0x6a, 0x25, 0x23, - 0xe9, 0x2f, 0x20, 0xc6, 0xf1, 0xc3, 0xdf, 0x15, 0x1c, 0xfd, 0x62, 0x7f, - 0xaf, 0xd8, 0x0a, 0x8e, - 0x23, 0xce, 0x4d, 0xed, 0x66, 0x2d, 0x29, 0x07, 0x04, 0xa5, 0x16, 0x93, - 0x39, 0x28, 0x43, 0xf5, - 0x75, 0xbd, 0x5a, 0xc8, 0xaf, 0x95, 0xd5, 0x70, 0x40, 0xc2, 0xa3, 0x24, - 0x16, 0xc5, 0xba, 0x8b, - 0x9f, 0x04, 0xee, 0x9b, 0x32, 0x7c, 0xbc, 0x90, 0xc0, 0x85, 0x26, 0x6c, - 0x3a, 0x8c, 0x0d, 0x5e, - 0xa2, 0x1f, 0x62, 0xbd, 0x6a, 0x96, 0xc3, 0x1a, 0x55, 0x0e, 0x09, 0xea, - 0x54, 0x47, 0x56, 0x80, - 0x0f, 0x8b, 0x81, 0x84, 0x1f, 0x82, 0x2b, 0xa7, 0xa9, 0x17, 0xfd, 0xeb, - 0xca, 0x90, 0x0c, 0xf4, - 0x54, 0x97, 0x4e, 0xc3, 0x81, 0x35, 0x99, 0xd1, 0xac, 0x0a, 0x0f, 0x2c, - 0x6c, 0xb2, 0x2f, 0xad, - 0x86, 0x4c, 0x09, 0xca, 0xf0, 0x48, 0x96, 0x67, 0xde, 0xcb, 0x4f, 0xbb, - 0x68, 0x40, 0xc7, 0x4b, - 0x93, 0x19, 0xfb, 0x8a, 0x41, 0xd4, 0x21, 0xc2, 0xf5, 0x28, 0x3c, 0xb0, - 0x73, 0x8d, 0xbc, 0xf1, - 0x5a, 0x6e, 0x02, 0x34, 0xba, 0x10, 0x61, 0x25, 0x71, 0xca, 0xaf, 0x6b, - 0x66, 0xec, 0x48, 0xd1, - 0x3d, 0x1b, 0x8c, 0x26, 0x58, 0xea, 0x7f, 0x8a, 0x95, 0x8b, 0x2f, 0x86, - 0x6e, 0xcb, 0x5b, 0xde, - 0x94, 0x84, 0xdd, 0x10, 0xbd, 0x27, 0x5d, 0xb8, 0x7a, 0x48, 0x6c, 0x72, - 0x76, 0xa2, 0x6e, 0xcf, - 0x56, 0x73, 0x17, 0x25, 0xc9, 0xb8, 0xfc, 0x77, 0x44, 0x67, 0xb5, 0xb7, - 0x2f, 0xed, 0xf9, 0x7e, - 0xbf, 0x5c, 0x37, 0xe3, 0x38, 0x7b, 0x23, 0x62, 0x58, 0x9a, 0xd7, 0xc8, - 0x80, 0x35, 0xf3, 0xf0, - 0x95, 0xf6, 0x10, 0x63, 0x99, 0x80, 0x8e, 0xeb, 0x0e, 0x9f, 0x31, 0xde, - 0xb6, 0x6c, 0x05, 0x47, - 0xb9, 0xb3, 0xdc, 0x0a, 0xe0, 0x2f, 0x8c, 0x4b, 0xa3, 0x2d, 0xda, 0xa6, - 0x45, 0xd4, 0x4a, 0x46, - 0x11, 0x5e, 0x40, 0x4f, 0x21, 0x45, 0x7d, 0x2a, 0x38, 0x39, 0xc4, 0xfe, - 0x9d, 0x73, 0x14, 0xdf, - 0x0b, 0x80, 0x33, 0x8b, 0x8f, 0x5b, 0xe1, 0x28, 0xba, 0xcd, 0x4a, 0x1e, - 0x4c, 0x2e, 0x63, 0x91, - 0x71, 0xb6, 0xe8, 0xc7, 0x3f, 0x4c, 0x1f, 0xff, 0x53, 0x18, 0x14, 0xd1, - 0x90, 0x7b, 0xd5, 0xee, - 0xb0, 0xd7, 0xb6, 0x67, 0x27, 0xf9, 0x08, 0xc5, 0xf1, 0x8d, 0x2a, 0x23, - 0x4a, 0xa5, 0xff, 0x04, - 0x1c, 0x31, 0x98, 0x2d, 0x76, 0x4a, 0x33, 0x2b, 0x79, 0x43, 0x83, 0x8e, - 0x14, 0xbc, 0xce, 0xf8, - 0xdc, 0x22, 0x0b, 0xfe, 0x4a, 0x58, 0xf7, 0x42, 0xaf, 0x01, 0xe0, 0xd0, - 0x0e, 0xac, 0x8f, 0x9a, - 0xa8, 0xed, 0x9c, 0x45, 0xc1, 0x6a, 0xf1, 0x61, 0x9b, 0x14, 0x1e, 0x58, - 0xd8, 0xa7, 0x5e, 0x99, - 0xc1, 0x61, 0x5e, 0xa0, 0x18, 0xb5, 0x17, 0x3a, 0xa2, 0x95, 0x3e, 0xf2, - 0xda, 0xde, 0x2a, 0xea, - 0x2a, 0xaa, 0x27, 0x80, 0xa1, 0xfb, 0xad, 0x89, 0x56, 0x05, 0xe6, 0x16, - 0x36, 0x59, 0xf6, 0xb7, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0xac, 0xe6, 0x2e, 0x4a, 0x51, 0xb3, 0x3b, 0xee, 0x88, 0xce, 0xa9, 0xad, - 0x5e, 0x19, 0x31, 0xfc, - 0x48, 0xa6, 0xd6, 0xee, 0xf7, 0x7f, 0xaa, 0xfa, 0xd5, 0x49, 0x8c, 0xa2, - 0x78, 0x0e, 0xe1, 0x55, - 0x7a, 0x36, 0xdb, 0x4c, 0xb0, 0x17, 0xfe, 0xd7, 0xe9, 0xd5, 0x5e, 0xcf, - 0xdc, 0x55, 0xb6, 0x7f, - }, + { + /* 0 */ + 0xa5, 0xcc, 0x0e, 0x86, 0xc2, 0x4f, 0xba, 0x59, 0x3b, 0xe3, + 0xef, 0x79, 0x82, 0x53, 0x11, 0xf0, 0x2d, 0x03, 0x96, 0x94, + 0x95, 0x6c, 0x2a, 0xb6, 0xf5, 0x9c, 0xba, 0xe7, 0x37, 0x83, + 0x91, 0xbd, 0x32, 0x17, 0xb1, 0xab, 0xa6, 0xf9, 0x11, 0xd2, + 0x03, 0xc3, 0x8e, 0xc9, 0x90, 0x58, 0x92, 0xad, 0x8f, 0xa5, + 0x82, 0x44, 0x27, 0x96, 0x65, 0xbf, 0x60, 0xda, 0x6e, 0x59, + 0x28, 0x51, 0x68, 0x84, 0x0e, 0xd4, 0x34, 0xac, 0xe0, 0xa9, + 0x29, 0xa0, 0x9f, 0x89, 0x76, 0x4d, 0xf9, 0xc1, 0x13, 0x51, + 0x30, 0xfc, 0x7a, 0xd2, 0x86, 0x40, 0x5f, 0x68, 0xb0, 0x37, + 0x1e, 0x11, 0x74, 0xb4, 0x15, 0x71, 0x38, 0xd6, 0xd0, 0xf5, + 0x06, 0xe1, 0xa4, 0xc5, 0x39, 0x61, 0x1b, 0xf7, 0x62, 0x82, + 0x4c, 0x87, 0xc0, 0x76, 0x2b, 0xce, 0x5d, 0xc3, 0xbf, 0x63, + 0x85, 0xdc, 0x78, 0x44, 0x13, 0x95, 0x54, 0x07, 0x54, 0xd2, + 0xdb, 0x47, 0x09, 0x71, 0x7d, 0x0f, 0xb6, 0x72, 0xc1, 0x40, + 0x97, 0x04, 0xf2, 0xe8, 0xe6, 0x20, 0x58, 0xd9, 0x78, 0x0a, + 0x07, 0x9f, 0xf2, 0x98, 0x1f, 0xf1, 0xa4, 0xba, 0xb9, 0xfe, + 0x9e, 0x65, 0x91, 0xd7, 0xf4, 0xaa, 0x77, 0x7b, 0x09, 0x0c, + 0x2c, 0x3a, 0x76, 0x4b, 0x78, 0xc5, 0x39, 0x42, 0x54, 0x28, + 0x16, 0x5c, 0x83, 0x98, 0x81, 0x1b, 0x53, 0x9b, 0x10, 0xf4, + 0xee, 0xe9, 0x55, 0x46, 0x5f, 0x9a, 0x19, 0xcc, 0x5a, 0x52, + 0x0e, 0x08, 0x89, 0x2c, 0xe5, 0x72, 0x50, 0x86, 0x7e, 0xbb, + 0x57, 0x85, 0xec, 0xa8, 0xa2, 0xe9, 0xed, 0x4b, 0x40, 0x60, + 0x3d, 0x06, 0x8b, 0x9c, 0x52, 0x2c, 0x45, 0xcc, 0x69, 0x79, + 0xaf, 0x02, 0xa0, 0xad, 0xb2, 0xeb, 0x78, 0xf3, 0xb8, 0x4f, + 0x91, 0x25, 0x21, 0xa6, 0x04, 0xbe, 0x79, 0x86, 0x2e, 0xff, + 0x12, 0x1b, 0xfd, 0xfc, 0xc9, 0xfa, 0x64, 0x2e, 0xa1, 0x95, + 0x8f, 0x31, 0x22, 0x67, 0x06, 0x45, 0xdf, 0x51, 0xe3, 0xb0, + 0xe7, 0x99, 0x03, 0x7f, 0x4f, 0xa4, 0x30, 0x04, 0x69, 0xe7, + 0x0b, 0x8e, 0xd8, 0xb4, 0x96, 0x9a, 0x25, 0xb2, 0x57, 0xad, + 0x94, 0xe3, 0x39, 0x75, 0x14, 0xe8, 0xbd, 0xfc, 0x19, 0xf4, + 0x01, 0x9e, 0xd7, 0x5a, 0x5a, 0x06, 0xef, 0xeb, 0xe9, 0xd8, + 0x54, 0xaf, 0x29, 0xfb, 0xb7, 0x0d, 0x6e, 0xc5, 0xe1, 0xb9, + 0x1c, 0x6b, 0x68, 0x9b, 0x03, 0x91, 0x52, 0x83, 0xfd, 0xd1, + 0xec, 0x9a, 0x31, 0x41, 0x26, 0xa2, 0x60, 0x3b, 0xf4, 0x67, + 0xcf, 0x80, 0xbe, 0xd0, 0xa3, 0x6e, 0x3c, 0x22, 0xe8, 0xab, + 0x2a, 0xe2, 0x07, 0x6a, 0x1a, 0x56, 0x70, 0xb5, 0xf5, 0x50, + 0xae, 0xa5, 0x3b, 0xc7, 0x9d, 0x81, 0xe8, 0xc9, 0x18, 0x7e, + 0x3d, 0x69, 0x43, 0x20, 0xce, 0x34, 0x58, 0xfa, 0x0f, 0xe9, + 0x3a, 0x5a, 0xeb, 0xd9, 0x21, 0x3c, 0x69, 0x41, 0x55, 0x7c, + 0x4d, 0xac, 0xd9, 0xe1, 0x5c, 0x72, 0x2a, 0xae, 0x05, 0x30, + 0x72, 0x84, 0xa8, 0x50, 0x2c, 0xb8, 0xc5, 0xf3, 0xc1, 0x36, + 0xa6, 0xf5, 0x20, 0x2b, 0x1f, 0x11, 0xa8, 0x67, 0x75, 0x8e, + 0x12, 0xe2, 0xfa, 0x1e, 0xaf, 0xe4, 0x41, 0x80, 0xed, 0x08, + 0x27, 0x13, 0xd1, 0xb6, 0x38, 0x5d, 0x8e, 0xff, 0xad, 0xa7, + 0xec, 0x0a, 0x3a, 0x27, 0x4d, 0x8f, 0x44, 0x46, 0x29, 0x16, + 0xc3, 0x66, 0xd5, 0xdd, 0xb6, 0x01, 0x50, 0xb7, 0x59, 0x94, + 0x3c, 0x98, 0x5c, 0xc6, 0xc6, 0x88, 0xb5, 0x45, 0x3d, 0xcb, + 0x6d, 0x6e, 0x93, 0x03, 0x0b, 0xef, 0xfc, 0x62, 0x1e, 0xa0, + 0xa4, 0x58, 0x8a, 0x5b, 0xd2, 0xf2, 0x9d, 0x04, 0x83, 0x99, + 0xa7, 0x15, 0xf0, 0x25, 0xb3, 0x9e, 0x3f, 0xbc, 0xca, 0xa3, + 0x76, 0x54, 0x51, 0x95, 0x97, 0xc4, 0x20, 0x30, 0xff, 0x03, + 0xa4, 0x4e, 0xe0, 0xde, 0xc6, 0x52, 0x18, 0x02, 0xd5, 0x92, + 0xe4, 0x47, 0x6c, 0x5a, 0x4b, 0x4d, 0xf3, 0x59, 0x27, 0xc2, + 0xf7, 0xca, 0x35, 0x74, 0x9f, 0xa1, 0xcf, 0x3e, 0x2f, 0xd9, + 0xc5, 0x59, 0x4f, 0x97, 0x8d, 0x4e, 0x49, 0x3d, 0x07, 0x2f, + 0x2b, 0x05, 0xd3, 0x2e, 0xfe, 0x81, 0xcc, 0xbd, 0xef, 0x58, + 0x0c, 0x3f, 0xff, 0xd5, 0xc0, 0x10, 0x67, 0x1a, 0x2c, 0x7d, + 0xe6, 0x95, 0x1d, 0x2d, 0x94, 0x8d, 0x82, 0x0e, 0xf9, 0x4c, + 0xf7, 0x3b, 0x25, 0xf8, 0xf4, 0xdd, 0xc0, 0xa0, 0x47, 0x0a, + 0x5e, 0x67, 0xea, 0x1f, 0xa7, 0x0c, 0xb8, 0x1a, 0x60, 0x85, + 0xde, 0xe5, 0xf9, 0x64, 0xb9, 0x97, 0x2d, 0x73, 0xae, 0x99, + 0xeb, 0x05, 0x72, 0xea, 0x28, 0x13, 0xb9, 0x3b, 0x32, 0x2b, + 0x02, 0xff, 0x6d, 0xb4, 0xb4, 0x0c, 0x1d, 0x15, 0x11, 0x73, + 0xa8, 0x9d, 0x52, 0x35, 0xad, 0x1a, 0xdc, 0x49, 0x01, 0xb1, + 0x9a, 0x70, 0xc4, 0x25, 0xb4, 0x1b, 0xeb, 0xcc, 0xac, 0x27, + 0xcf, 0x49, 0x7d, 0x50, 0xb5, 0xbe, 0x63, 0x44, 0xbb, 0xc3, + 0xff, 0x84, 0xd7, 0x37, 0xa8, 0xe0, 0xe4, 0x96, 0x7e, 0x31, + 0x0f, 0x50, 0x49, 0x2d, 0x37, 0x01, 0x1a, 0x5d, 0x08, 0xd1, + 0xf3, 0xd9, 0x65, 0xb6, 0xd4, 0x33, 0x76, 0x24, 0xe5, 0x5f, + 0x17, 0x7d, 0x48, 0x0e, 0x6e, 0x78, 0xf9, 0x16, 0xc7, 0x45, + 0x32, 0x20, 0x9c, 0x4c, 0x42, 0x78, 0xd2, 0x82, 0xaa, 0xf8, + 0x9a, 0x9b, 0x71, 0x01, 0xb8, 0xe4, 0x54, 0x9f, 0x0a, 0x60, + 0xe4, 0xcb, 0x93, 0xa0, 0x58, 0xb3, 0x49, 0x25, 0x41, 0x6c, + 0x8f, 0x29, 0x40, 0x56, 0x3e, 0x22, 0x15, 0xd5, 0x46, 0x61, + 0x93, 0x8d, 0x8e, 0x73, 0xcc, 0xfd, 0xa1, 0x10, 0x55, 0x01, + 0xdd, 0x3a, 0xb7, 0x73, 0x52, 0xb1, 0x21, 0x77, 0xc1, 0x7a, + 0x59, 0xbb, 0x75, 0xae, 0x4a, 0xd3, 0x24, 0x03, 0xc8, 0x5c, + 0x81, 0xe9, 0xdd, 0x62, 0x44, 0xce, 0x0c, 0x8a, 0x7d, 0xa2, + 0x05, 0xa3, 0x0d, 0xf1, 0x06, 0xfe, 0x9e, 0x8b, 0x60, 0x08, + 0xd2, 0x0d, 0x16, 0xdf, 0x73, 0xab, 0xef, 0xf7, 0x4a, 0xa7, + 0x70, 0x6f, 0x63, 0x29, 0x0c, 0x01, 0x8b, 0x49, 0x72, 0xc2, + 0x36, 0x2d, 0xc4, 0xc7, 0x98, 0xcd, 0x9d, 0x1a, 0xde, 0x73, + 0xc4, 0xae, 0x1e, 0x9c, 0x02, 0x82, 0xf4, 0x8e, 0xe0, 0xd1, + 0x5d, 0x77, 0x41, 0x07, 0x9d, 0x26, 0x9a, 0xfc, 0xf3, 0x7c, + 0x7a, 0x8f, 0x60, 0x50, 0xc2, 0x05, 0x2f, 0xd2, 0x75, 0xee, + 0xb2, 0x06, 0x5c, 0x0d, 0x30, 0xa3, 0x6f, 0x93, 0x9d, 0x32, + 0xbd, 0xaa, 0xf7, 0xd8, 0x19, 0xea, 0xb9, 0xb4, 0x53, 0x9d, + 0xe9, 0x69, 0xe0, 0x80, 0x47, 0x85, 0x48, 0x2c, 0x49, 0xb7, + 0xc9, 0xc8, 0x05, 0x34, 0xcd, 0xdf, 0x63, 0x93, 0xb4, 0xf0, + 0x35, 0xce, 0x77, 0xd5, 0xaf, 0x9f, 0xaa, 0x8c, 0xbe, 0xf7, + 0x32, 0x5b, 0xb4, 0xa4, 0x1c, 0x10, 0xd1, 0x58, 0x09, 0xe4, + 0xa0, 0xcf, 0xfc, 0xb5, 0xae, 0xc9, 0x1b, 0x93, 0x87, 0x11, + 0x19, 0x96, 0x80, 0xc0, 0x7a, 0x0c, 0xd5, 0xfb, 0x4d, 0x38, + 0x62, 0xf3, 0x5a, 0xec, 0x94, 0x66, 0x56, 0xf2, 0x86, 0xc5, + 0xdf, 0x28, 0xbb, 0x5f, 0xbf, 0x59, 0xf8, 0x96, 0xa1, 0xd6, + 0x3a, 0xd7, 0xd0, 0xed, 0x70, 0x48, 0x5c, 0xe5, 0x7d, 0xf5, + 0x2a, 0x69, 0x8c, 0xc2, 0xe5, 0xd9, 0xdf, 0xe6, 0x5b, 0x39, + 0x81, 0x20, 0xaa, 0x02, 0x79, 0x74, 0x73, 0x10, 0x2c, 0x8d, + 0x3c, 0x05, 0xe2, 0xae, 0x79, 0x4c, 0xee, 0x99, 0x52, 0x5d, + 0xbd, 0x7f, 0x84, 0xf0, 0x67, 0xc7, 0x97, 0x33, 0xf7, 0xf5, + 0xe2, 0x02, 0xb3, 0x0b, 0xa8, 0xfd, 0x14, 0xc0, 0xd5, 0xa3, + 0x6d, 0xaf, 0xce, 0x4e, 0x31, 0x10, 0x49, 0x21, 0xd9, 0x54, + 0x46, 0x94, 0x89, 0x3d, 0xc3, 0x09, 0x64, 0x6a, 0x6d, 0xc7, + 0xd6, 0x84, 0x8e, 0x52, 0xa0, 0xf0, 0x85, 0x0f, 0x71, 0xb5, + 0xaf, 0x0d, 0x6f, 0xd8, 0x62, 0x57, 0x0f, 0x4e, 0x01, 0x41, + 0x7a, 0x47, 0x70, 0x89, 0xcf, 0xda, 0x2b, 0xfd, 0x08, 0x1f, + 0xf5, 0x64, 0xf8, 0xbb, 0xe3, 0x43, 0xc9, 0x4c, 0xd8, 0x74, + 0xdb, 0x1a, 0x86, 0x1b, 0xac, 0xbe, 0xb7, 0x8a, 0xb9, 0x4f, + 0x51, 0xf6, 0x23, 0xd3, 0x4c, 0x11, 0x93, 0x1c, 0xa7, 0x27, + 0xc5, 0xff, 0xe2, 0xf6, 0xf4, 0xe3, 0x88, 0x17, 0x7f, 0xa1, + 0x66, 0xbf, 0x96, 0x2c, 0xb1, 0x8d, 0xcc, 0x3a, 0x41, 0x7f, + 0x13, 0x77, 0x4f, 0x64, 0x06, 0x05, 0xa5, 0x24, 0x6e, 0xa4, + 0xb2, 0xf2, 0x83, 0x9e, 0x71, 0x7b, 0x7a, 0x90, 0x44, 0xea, + 0xde, 0xb1, 0x33, 0xbe, 0x4b, 0x16, 0x5b, 0x92, 0x6b, 0x36, + 0xf9, 0x65, 0x73, 0xf2, 0x91, 0x81, 0xff, 0x61, 0x1c, 0xb3, + 0x43, 0xd7, 0x46, 0x6d, 0x87, 0x70, 0xea, 0x49, 0x06, 0x2c, + 0xd4, 0x2a, 0x5b, 0x97, 0x5f, 0x84, 0xc7, 0x1b, 0xd3, 0x5d, + 0xf3, 0x24, 0xae, 0x46, 0xe3, 0x1d, 0x5f, 0xfe, 0xaa, 0xff, + 0xa9, 0x63, 0xc3, 0x9a, 0x9f, 0xf1, 0x15, 0x0a, 0xe4, 0x17, + 0x50, 0x26, 0xb1, 0x76, 0x64, 0x56, 0x04, 0x3d, 0xda, 0xab, + 0xfd, 0x21, 0x2a, 0x14, 0x0b, 0x2e, 0xa0, 0x4c, 0xa1, 0xec, + 0xc8, 0xac, 0x08, 0x7a, 0x77, 0x95, 0xd4, 0x37, 0xe9, 0x72, + 0xde, 0xf3, 0x16, 0x4d, 0xf1, 0x5b, 0x91, 0x38, 0x34, 0xe2, + 0x2b, 0x53, 0x0f, 0x40, 0xb0, 0x71, 0xf0, 0x14, 0x0e, 0xfd, + 0x27, 0xf3, 0x3e, 0x21, 0x8b, 0xb7, 0xb1, 0x3f, 0x9c, 0x8e, + 0x5a, 0xae, 0xd4, 0x13, 0x39, 0xc1, 0xba, 0xf8, 0xbc, 0xe2, + 0x92, 0xa7, 0xff, 0x19, 0x2f, 0xe8, 0x5d, 0xed, 0xb5, 0xd5, + 0x64, 0x0c, 0x46, 0x68, 0x2a, 0x3f, 0xd3, 0x6f, 0x16, 0x61, + 0x9b, 0xe4, 0x40, 0xf8, 0xa4, 0xa6, 0xcc, 0x91, 0x14, 0x5d, + 0x87, 0x25, 0x0f, 0x26, 0x17, 0xd0, 0x43, 0xec, 0x56, 0x5f, + 0xba, 0x45, 0xbd, 0xc6, 0xc9, 0x7b, 0xf0, 0x88, 0x26, 0xe9, + 0xa8, 0x0e, 0xef, 0x9e, 0x76, 0x23, 0xe8, 0x16, 0xdb, 0x6f, + 0xc3, 0xb4, 0x52, 0x7b, 0xc0, 0xfa, 0x42, 0x66, 0xd9, 0x9c, + 0x92, 0x7a, 0x0e, 0x5e, 0x56, 0x0a, 0x65, 0x5c, 0x3f, 0xc1, + 0x5b, 0xb9, 0x1d, 0xb0, 0x79, 0xd1, 0x4d, 0xd3, 0x9c, 0x1d, + 0x57, 0xb9, 0x43, 0xee, 0x7b, 0xa7, 0xa0, 0x87, 0x63, 0x55, + 0xb6, 0xe7, 0xd6, 0x6c, 0x31, 0xca, 0xe6, 0x27, 0xe1, 0xc1, + 0x3d, 0xc2, 0x38, 0xa5, 0x86, 0x6d, 0x53, 0xb8, 0xc1, 0x11, + 0x79, 0xc4, 0x88, 0x5f, 0x18, 0xd7, 0xfa, 0x87, 0x0a, 0x85, + 0x1a, 0x21, 0x7f, 0x2f, 0xd3, 0x58, 0xfc, 0x15, 0x85, 0xb4, + 0x55, 0x31, 0x08, 0x0c, 0x4f, 0x70, 0x29, 0xf2, 0xc1, 0xe2, + 0xaf, 0x13, 0x4d, 0x7e, 0x98, 0x3e, 0x3d, 0xa6, 0x30, 0x28, + 0x61, 0xe3, 0xf6, 0x69, 0xf0, 0x8a, 0x51, 0x1c, 0xdb, 0x83, + 0xe0, 0x0b, 0x35, 0xeb, 0x66, 0x55, 0x67, 0x21, 0x41, 0x76, + 0x23, 0xd7, 0xa2, 0x38, 0x75, 0xc5, 0x03, 0x16, 0x6a, 0x15, + 0xcc, 0xaa, 0xce, 0x42, 0x82, 0xec, 0xe7, 0xb4, 0xdc, 0x04, + 0x68, 0xb7, 0x20, 0xc2, 0x4a, 0xe2, 0x57, 0x9d, 0xd6, 0xcc, + 0x1b, 0x90, 0x25, 0x29, 0x3c, 0xb3, 0x15, 0xcd, 0xd1, 0x1b, + 0x7c, 0xca, 0xbf, 0x01, 0x21, 0xb5, 0xc8, 0x4b, 0x5e, 0x13, + 0xba, 0x19, 0xa9, 0x69, 0xc8, 0x18, 0x8c, 0xd0, 0x54, 0x7e, + 0x65, 0xde, 0x2c, 0xc2, 0xb5, 0x98, 0x99, 0xc8, 0x01, 0xce, + 0x8f, 0xc0, 0xea, 0x4f, 0xe5, 0x76, 0xae, 0x3f, 0xa3, 0xdf, + 0x1e, 0x80, 0xa3, 0xe2, 0x23, 0x28, 0x1c, 0x39, 0x4e, 0x25, + 0x7c, 0x42, 0xd5, 0xad, 0xa1, 0x7e, 0xa2, 0xa6, 0x14, 0xd0, + 0xb2, 0xfa, 0x4f, 0x09, 0x95, 0x46, 0xd4, 0xbe, 0x1f, 0xd2, + 0xf9, 0x39, 0xdf, 0x62, 0x0c, 0xf1, 0x6e, 0x56, 0x84, 0x07, + 0x73, 0x83, 0x4c, 0x6a, 0xb4, 0x4e, 0x57, 0x17, 0xa6, 0xb3, + 0x41, 0x22, 0xf2, 0x4b, 0xd3, 0xbe, 0x30, 0x6d, 0x37, 0xcd, + 0x14, 0xc9, 0x34, 0x42, 0xfe, 0x5e, 0x65, 0xb0, 0x3b, 0x2a, + 0xc9, 0xab, 0xaa, 0x62, 0x10, 0x18, 0x9e, 0xe0, 0x52, 0x27, + 0xac, 0x72, 0x20, 0x7c, 0x52, 0x53, 0x66, 0xa9, 0x0a, 0xcf, + 0xa2, 0xf3, 0xe6, 0x13, 0xea, 0x68, 0x22, 0x43, 0x26, 0xe5, + 0x65, 0x78, 0x24, 0x4b, 0xd2, 0x6f, 0x84, 0xc6, 0xbc, 0x34, + 0x20, 0x82, 0xf9, 0x34, 0x7f, 0xe6, 0x4b, 0x9f, 0x3c, 0xfb, + 0x04, 0xc7, 0x2b, 0xdf, 0x03, 0x61, 0xba, 0xee, 0xe2, 0x35, + 0x0d, 0x2b, 0x38, 0xbb, 0x9b, 0x28, 0x57, 0xb3, 0xfc, 0x82, + 0xaf, 0xa1, 0x74, 0x85, 0x4a, 0x52, 0x78, 0xa5, 0x2a, 0x59, + 0x61, 0x36, 0xf8, 0x57, 0xbd, 0x02, 0x42, 0xa9, 0x53, 0x96, + 0xbc, 0x26, 0xb7, 0x32, 0x91, 0xd2, 0x53, 0x30, 0xdb, 0x63, + 0xa8, 0xfc, 0xca, 0x7f, 0x58, 0x47, 0x35, 0x7d, 0xab, 0xfd, + 0xd6, 0x4c, 0xe4, 0x82, 0xad, 0x66, 0xb5, 0x0e, 0x0d, 0xd9, + 0x7a, 0x64, 0xca, 0xb7, 0x4a, 0x90, 0xfd, 0xdb, 0x0a, 0x74, + 0xbf, 0x7e, 0xed, 0x7a, 0xe1, 0x4f, 0x8a, 0x2d, 0xee, 0x0a, + 0xf2, 0xfe, 0xf8, 0xab, 0xfc, 0x32, 0x7b, 0xce, 0x1a, 0x17, + 0xb2, 0x8c, 0xe0, 0x08, 0x78, 0x45, 0xc9, 0x0e, 0x8c, 0xa0, + 0x70, 0xe4, 0xfb, 0x94, 0x33, 0xcb, 0xd2, 0xf1, 0xc1, 0x3b, + 0x05, 0x81, 0xd1, 0x2f, 0x50, 0x0c, 0xbb, 0xea, 0x1d, 0x51, + 0xab, 0x1f, 0x79, 0x6d, 0x6f, 0x15, 0x6b, 0x6e, 0x11, 0xe4, + 0x7f, 0x25, 0x2c, 0x9a, 0x21, 0xb6, 0xe1, 0x70, 0x68, 0x07, + 0x56, 0xa6, 0x51, 0x53, 0x0a, 0x68, 0x59, 0x7d, 0xc6, 0xe5, + 0xab, 0x23, 0x6a, 0x5f, 0xee, 0x69, 0x9d, 0xfd, 0xe1, 0x4a, + 0x42, 0x8f, 0x08, 0xbf, 0xf2, 0xcf, 0x5c, 0x3d, 0x24, 0x36, + 0x39, 0x3b, 0x51, 0x37, 0x59, 0x79, 0xa0, 0x4f, 0xd9, 0xdc, + 0x3d, 0x48, 0x22, 0x75, 0x6f, 0xb9, 0xf8, 0x5f, 0xc4, 0x0b, + 0xa3, 0x32, 0x90, 0x0d, 0xa2, 0x47, 0x68, 0x54, 0x2d, 0x3c, + 0x9c, 0xd2, 0x6d, 0xa4, 0x5b, 0x57, 0xf2, 0x61, 0x9a, 0x65, + 0xfb, 0x3a, 0xae, 0xb1, 0x86, 0x1f, 0xf6, 0x8d, 0x83, 0xcd, + 0xc6, 0xaa, 0x71, 0xfb, 0xe7, 0xf4, 0x1c, 0xbc, 0xac, 0x14, + 0xca, 0xb8, 0x7e, 0x41, 0xb6, 0xb1, 0x3a, 0xa3, 0x56, 0x39, + 0x10, 0x3e, 0x29, 0xc8, 0x33, 0xb5, 0x05, 0x86, 0x51, 0x98, + 0x73, 0xe8, 0x75, 0x34, 0x11, 0xc0, 0x13, 0x93, 0xd3, 0x3c, + 0x12, 0xc4, 0x69, 0xd6, 0x42, 0x63, 0x5e, 0x1a, 0x10, 0x41, + 0x6a, 0xfa, 0x95, 0x39, 0x6f, 0x98, 0x0b, 0xc7, 0x99, 0xcc, + 0xa9, 0x1c, 0x1a, 0x71, 0xf4, 0xc8, 0x89, 0x5b, 0x1c, 0xcf, + 0x47, 0x9e, 0xb7, 0xb2, 0x76, 0x05, 0x1d, 0xf2, 0xc7, 0xa6, + 0x22, 0x23, 0x94, 0xa4, 0xf0, 0x89, 0x54, 0xb2, 0xc2, 0x6c, + 0x33, 0xae, 0xb9, 0x04, 0x84, 0x91, 0xa6, 0xef, 0x65, 0xba, + 0x25, 0x48, 0x9f, 0x8c, 0x05, 0x3a, 0xbe, 0x3f, 0x97, 0x3d, + 0x91, 0xc6, 0x45, 0xf7, 0x8c, 0xda, 0xcd, 0xe0, 0x17, 0x92, + 0x0c, 0x58, 0x6b, 0x54, 0xb6, 0xed, 0xbe, 0xcb, 0x4d, 0x36, + 0xbb, 0x4c, 0xad, 0x64, 0xe1, 0x67, 0xa6, 0x60, 0x75, 0xc6, + 0x93, 0x3b, 0x57, 0xfe, 0xb0, 0x8e, 0x77, 0x05, 0x79, 0x7f, + 0x7c, 0xb4, 0x7e, 0x19, 0xdc, 0x67, 0x0d, 0xea, 0x59, 0x46, + 0x70, 0x04, 0x3c, 0xc3, 0x85, 0x07, 0x46, 0x50, 0x38, 0x72, + 0x9c, 0x4a, 0xf8, 0x84, 0x69, 0x99, 0x81, 0xfc, 0x7b, 0x3a, + 0x86, 0xaa, 0xbc, 0xa4, 0x19, 0x03, 0xf0, 0x1a, 0xeb, 0x7f, + 0x44, 0x6b, 0xe4, 0x89, 0x28, 0x82, 0x47, 0xbb, 0xc5, 0x60, + 0x91, 0x5c, 0xe8, 0xcd, 0x11, 0xf8, 0x4e, 0xee, 0xfe, 0xa8, + 0xab, 0x18, 0x3a, 0x2a, 0x22, 0xe6, 0x93, 0xf9, 0xa4, 0x6a, + 0x99, 0x34, 0x7b, 0x92, 0x02, 0xa1, 0xd2, 0xc9, 0x77, 0xf9, + 0xbe, 0xfb, 0xc4, 0x40, 0xe7, 0x84, 0xe2, 0x93, 0xdb, 0x15, + 0x61, 0xf4, 0x31, 0x68, 0xfe, 0x0f, 0x96, 0xfd, 0x78, 0x35, + 0x08, 0x4d, 0x56, 0x7d, 0x06, 0xc2, 0xb7, 0x1f, 0xde, 0xf6, + 0x88, 0x2c, 0x7e, 0xeb, 0xa3, 0x5a, 0xcb, 0xf9, 0x04, 0x06, + 0xc6, 0x38, 0xf5, 0x79, 0xc4, 0x63, 0x7e, 0x3c, 0x1d, 0x72, + 0x23, 0xd4, 0x20, 0xf7, 0x9b, 0x37, 0x18, 0x8e, 0x99, 0x7c, + 0x5f, 0x87, 0x3e, 0xc4, 0xb9, 0xd4, 0xef, 0x45, 0x34, 0xaa, + 0x1c, 0x12, 0x17, 0xa8, 0x8e, 0xac, 0xcc, 0x49, 0xd4, 0x1b, + 0x9d, 0xd3, 0xd8, 0x79, 0xa9, 0xa1, 0x9e, 0xd1, 0x0e, 0xb8, + 0xc0, 0x8a, 0xcf, 0x36, 0x9b, 0xbf, 0xad, 0xd7, 0xb1, 0x9e, + 0xa2, 0x2f, 0x46, 0x65, 0x98, 0x22, 0xe5, 0x38, 0x76, 0x91, + 0xfd, 0xa2, 0x6c, 0x09, 0x59, 0x44, 0x64, 0x1d, 0x45, 0x86, + 0x2b, 0x30, 0xd2, 0x6a, 0x2c, 0x97, 0x12, 0x49, 0x85, 0xd1, + 0x0d, 0xeb, 0x4d, 0xe6, 0xf2, 0x8b, 0x45, 0xf5, 0x33, 0xd3, + 0xb8, 0x33, 0xe2, 0xc0, 0xd1, 0x63, 0xcf, 0x87, 0x7e, 0x48, + 0x4b, 0x8f, 0xc1, 0x64, 0x95, 0x3c, 0xd8, 0x08, 0x16, 0xa7, + 0x1e, 0xe3, 0x71, 0x57, 0xdd, 0x26, 0x77, 0xad, 0x29, 0xcf, + 0xbf, 0xde, 0x2e, 0x7c, 0xd9, 0x30, 0xa5, 0x68, 0x43, 0x51, + 0xfe, 0x12, 0x62, 0x53, 0xa1, 0x19, 0xb4, 0x0f, 0x36, 0x02, + 0xe4, 0x59, 0xe6, 0x48, 0x8d, 0x65, 0xa6, 0xe8, 0x6d, 0xba, + 0x9b, 0x43, 0x5f, 0xd6, 0xdb, 0x77, 0x59, 0x03, 0x2e, 0xe7, + 0x18, 0xb0, 0xd6, 0xa8, 0xaf, 0x19, 0xbf, 0x55, 0x9a, 0x6c, + 0x69, 0x85, 0xda, 0x9d, 0x5f, 0x9c, 0x62, 0x20, 0x92, 0x42, + 0x71, 0xa8, 0x8c, 0xeb, 0xd1, 0x7a, 0xb3, 0x66, 0x07, 0x43, + 0x61, 0xc6, 0x5d, 0xcd, 0xfc, 0x90, 0x96, 0xdd, 0x41, 0xc8, + 0xe9, 0x78, 0x14, 0x41, 0xc2, 0xbc, 0x83, 0x30, 0xa9, 0x2e, + 0x74, 0x87, 0xe9, 0x7c, 0x27, 0x77, 0x7f, 0x54, 0x95, 0x30, + 0x74, 0x54, 0x44, 0x0f, 0xe5, 0x31, 0x8b, 0xd4, 0xf1, 0x68, + 0xf6, 0xe7, 0x04, 0x81, 0xbe, 0xcd, 0x7c, 0x4b, 0xb1, 0x6b, + 0x1d, 0x8a, 0x68, 0x97, 0x38, 0x24, 0x2e, 0x93, 0xdf, 0x9b, + 0x62, 0xd0, 0x3f, 0x1e, 0xef, 0x39, 0xf0, 0x6a, 0x10, 0x9a, + 0xac, 0xfa, 0x0c, 0x47, 0xad, 0x3e, 0xa1, 0xd9, 0x5b, 0x74, + 0x82, 0xfe, 0x26, 0xee, 0x9e, 0xc8, 0x0c, 0x0a, 0x89, 0x48, + 0xdc, 0x8b, 0x3b, 0xa9, 0x9f, 0x51, 0x36, 0xe5, 0xcd, 0x22, + 0x32, 0xef, 0xc3, 0x43, 0xf4, 0x18, 0x69, 0x35, 0x16, 0xaa, + 0x09, 0xc5, 0xa3, 0x89, 0xe7, 0x94, 0xc7, 0x73, 0x79, 0xa4, + 0xc3, 0x9b, 0xf8, 0x88, 0x66, 0xc5, 0x6a, 0xec, 0xaf, 0x88, + 0x6c, 0xdd, 0xb5, 0xb1, 0x4f, 0x89, 0x07, 0x5c, 0x60, 0x45, + 0xe9, 0x60, 0xe8, 0xa8, 0x88, 0x1e, 0x09, 0x62, 0xd5, 0x6b, + 0x21, 0xd0, 0x2f, 0x0d, 0x08, 0xc1, 0x5c, 0xf8, 0x71, 0x60, + 0x89, 0xd0, 0x86, 0xa2, 0x3f, 0x24, 0xc4, 0xa6, 0x81, 0x32, + 0xab, 0x1e, 0x6c, 0x04, 0x0b, 0xb2, 0x0f, 0x90, 0xd9, 0xca, + 0x8f, 0x13, 0xda, 0xb7, 0xf5, 0x86, 0xbe, 0x6f, 0x6d, 0x90, + 0x8f, 0x6f, 0x1f, 0x2d, 0xfe, 0x97, 0x37, 0x69, 0x92, 0xdb, + 0x87, 0xf0, 0x1c, 0x01, 0xad, 0xe6, 0xa4, 0xa1, 0x42, 0xee, + 0x41, 0xf4, 0xb2, 0xb5, 0xea, 0x9f, 0x94, 0x65, 0x48, 0x06, + 0x37, 0x96, 0x60, 0x84, 0xf6, 0xf5, 0xaa, 0x38, 0x1e, 0x92, + 0x25, 0xd6, 0xe9, 0x35, 0xfd, 0xb8, 0x61, 0xaf, 0x70, 0xba, + 0xdf, 0x3d, 0x99, 0x8d, 0x1b, 0x14, 0x74, 0x4e, 0x9a, 0xdd, + 0x88, 0x8c, 0x4b, 0xc6, 0xfc, 0x78, 0x3a, 0xe4, 0x46, 0x6b, + 0x40, 0x2d, 0xf5, 0x6e, 0x30, 0xdf, 0xf1, 0xf8, 0xb9, 0xa7, + 0x66, 0x1d, 0xc1, 0xde, 0xe8, 0xda, 0xc6, 0x32, 0x03, 0xe3, + 0xb3, 0x12, 0x37, 0x52, 0xe3, 0xa1, 0x89, 0xf6, 0x28, 0x06, + 0xbc, 0x75, 0xef, 0xc9, 0xb4, 0xee, 0xdd, 0xd7, 0xd6, 0xeb, + 0xba, 0xd8, 0x29, 0xb9, 0xf1, 0xda, 0x81, 0x3d, 0xcd, 0xbc, + 0xdb, 0x57, 0x25, 0x88, 0x12, 0xe0, 0xf1, 0x1e, 0xd5, 0xc1, + 0xcb, 0x3e, 0xc7, 0x56, 0x8d, 0x91, 0x2e, 0x39, 0x15, 0x57, + 0xe3, 0x18, 0xa0, 0x4d, 0xdf, 0xa9, 0x92, 0x43, 0x01, 0xb3, + 0x26, 0xb2, 0x44, 0x66, 0xfb, 0x3e, 0x7e, 0xe5, 0x85, 0x64, + 0xe3, 0x1a, 0x87, 0x8e, 0xd0, 0xa8, 0x5a, 0x78, 0xfb, 0x67, + 0xda, 0x8b, 0xb6, 0xae, 0x83, 0x9a, 0x7d, 0x91, 0xe7, 0x86, + 0x02, 0xa5, 0x4c, 0xa7, 0x88, 0xcc, 0x35, 0x7c, 0xfc, 0x09, + 0xda, 0xe3, 0xdd, 0xde, 0x3e, 0x5a, 0x3f, 0xed, 0x6e, 0xd2, + 0xe7, 0x75, 0xcd, 0x23, 0x38, 0x02, 0x47, 0xf9, 0x03, 0xad, + 0xfa, 0xf4, 0x21, 0x71, 0x6c, 0x50, 0x13, 0xfb, 0x2d, 0xf2, + 0x65, 0x75, 0xc5, 0xf7, 0xfa, 0xe1, 0x0d, 0xcf, 0x04, 0x89, + 0x98, 0x8d, 0xd3, 0x5b, 0x6a, 0xf8, 0x3b, 0x12, 0xb0, 0x19, + 0x48, 0xe7, 0x51, 0xc2, 0x34, 0x2a, 0xf7, 0x1e, 0x4e, 0x69, + 0xd7, 0x52, 0xcc, 0xca, 0x33, 0x83, 0x35, 0x76, 0xb6, 0x44, + 0x36, 0x8f, 0xbb, 0xb9, 0xc6, 0xa5, 0xe2, 0x2e, 0x30, 0xc3, + 0xfa, 0x4b, 0x30, 0x42, 0x7b, 0x9b, 0x55, 0x1c, 0x0f, 0x49, + 0xf3, 0x6b, 0x95, 0xfb, 0x9f, 0x5c, 0x96, 0x4f, 0x3b, 0xf0, + 0x74, 0x0b, 0x8c, 0xd6, 0x80, 0x5a, 0x29, 0xdc, 0x60, 0x7d, + 0x21, 0x33, 0x6f, 0x7b, 0x44, 0x16, 0x3f, 0x94, 0xb0, 0x2d, + 0x84, 0x9d, 0x02, 0x03, 0x63, 0x1c, 0x9b, 0xdd, 0x6e, 0xef, + 0xc0, 0xcb, 0x2f, 0x29, 0x97, 0x70, 0x3c, 0xe7, 0x4a, 0x6f, + 0x11, 0x6a, 0x39, 0xb3, 0xc2, 0x9d, 0xe0, 0xb7, 0x7d, 0x7a, + 0xf1, 0xd9, 0x36, 0x28, 0xe8, 0x9c, 0xf7, 0x79, 0xd3, 0xdb, + 0xf6, 0x74, 0xcf, 0x97, 0xbb, 0x8b, 0x32, 0x06, 0x23, 0x34, + 0x15, 0xfe, 0x88, 0xd6, 0x0b, 0xd1, 0x50, 0xc7, 0x8e, 0xb5, + 0x49, 0xc0, 0xe1, 0xb8, 0x13, 0x59, 0x22, 0x33, 0x9c, 0x1f, + 0x3f, 0x93, 0xff, 0xca, 0xe1, 0x6d, 0x2b, 0x97, 0xee, 0xf6, + 0x12, 0x18, 0x58, 0x74, 0xec, 0x96, 0xf0, 0x49, 0x5d, 0x6c, + 0xf5, 0xbd, 0x99, 0x6d, 0xa1, 0xff, 0x87, 0x5e, 0x8c, 0xca, + 0xf3, 0x44, 0x09, 0x70, 0xa9, 0xf3, 0xf1, 0x53, 0x02, 0x5f, + 0xdd, 0x43, 0x17, 0x9e, 0x09, 0xec, 0x9f, 0x7e, 0x85, 0x7d, + 0x8e, 0x31, 0x06, 0x99, 0x37, 0x2b, 0x42, 0xe2, 0xd8, 0xa0, + 0x26, 0x35, 0x5a, 0x27, 0xca, 0xea, 0x17, 0x3e, 0x8d, 0x18, + 0xb3, 0x34, 0xc0, 0xc9, 0x7f, 0x09, 0x31, 0xc8, 0xb1, 0xed, + 0x5a, 0xe6, 0x1b, 0x01, 0x72, 0xcd, 0x73, 0x24, 0xa7, 0xd3, + 0x53, 0x74, 0xd7, 0x5d, 0xac, 0xc0, 0xce, 0x6b, 0x97, 0xdb, + 0xbf, 0x2d, 0x64, 0xb6, 0xab, 0x8b, 0x38, 0x20, 0x61, 0xb0, + 0x12, 0x0b, 0x83, 0x5d, 0x7d, 0xc4, 0x18, 0x21, 0xdc, 0xac, + 0xcb, 0x0e, 0xe6, 0xc5, 0x98, 0xd4, 0xab, 0x9c, 0xae, 0x2e, + 0xec, 0xe1, 0x39, 0x87, 0xd8, 0x12, 0xb2, 0x88, 0xc8, 0x3a, + 0x8a, 0xcf, 0x56, 0x60, 0x67, 0xd4, 0x58, 0xed, 0x24, 0x92, + 0xc9, 0x61, 0x1a, 0x15, 0x9a, 0x0f, 0x27, 0xd5, 0x8a, 0x29, + 0x66, 0x65, 0xf7, 0xe0, 0x4b, 0x4a, 0xab, 0x36, 0x15, 0x5b, + 0x9b, 0x4e, 0x5d, 0x92, 0xfa, 0xa0, 0xa9, 0xbf, 0x1f, 0x14, + 0x27, 0x3f, 0x33, 0x95, 0x3b, 0x64, 0xf6, 0x5f, 0x34, 0x2e, + 0xa7, 0xdb, 0x03, 0x10, 0xfb, 0xdf, 0xb4, 0x9f, 0x6b, 0x26, + 0x72, 0x41, 0xb7, 0x33, 0xbb, 0x07, 0xe7, 0x8d, 0x3d, 0x32, + 0x7c, 0x50, 0x9c, 0xfc, 0xcc, 0x11, 0xec, 0x53, 0x5e, 0xbf, + 0xd0, 0xb8, 0xd9, 0xea, 0x0c, 0x40, 0x09, 0xbe, 0x2e, 0xfa, + 0x90, 0x1c, 0xdc, 0xf0, 0x31, 0x2c, 0x4d, 0x8a, 0x64, 0x40, + 0xfb, 0x98, 0x0d, 0xab, 0x7b, 0x08, 0xd0, 0xad, 0x40, 0x47, + 0x94, 0x07, 0xae, 0xf9, 0x6f, 0x5b, 0x36, 0xe3, 0x7a, 0xae, + 0x02, 0x77, 0xac, 0x19, 0x3e, 0x5e, 0x48, 0x60, 0xa3, 0x13, + 0x36, 0x1d, 0x46, 0xe7, 0x67, 0x51, 0xee, 0x31, 0xbf, 0x35, + 0x4b, 0x80, 0x0d, 0xcb, 0x07, 0xe5, 0x75, 0x2a, 0xc2, 0x2b, + 0x45, 0x12, 0xc8, 0xd4, 0xda, 0x4d, 0x6f, 0xcb, 0xdf, 0xa4, + 0x83, 0x23, 0xc9, 0x1e, 0xe2, 0xa9, 0x87, 0x8f, 0x28, 0x63, + 0xa7, 0x37, 0x9e, 0x12, 0xe9, 0x8c, 0x6b, 0xbf, 0x3e, 0x67, + 0x31, 0x72, 0xdc, 0x1d, 0x43, 0x55, 0x5e, 0x52, 0xed, 0xe0, + 0x78, 0x0d, 0x94, 0xde, 0x22, 0xd4, 0x72, 0xa5, 0xe8, 0xf4, + 0x6c, 0x75, 0x98, 0xa3, 0x2e, 0x3f, 0x6d, 0x11, 0x69, 0xbc, + 0x5d, 0x7b, 0xaa, 0xaf, 0x4f, 0xd3, 0xa9, 0x8a, 0x7a, 0x55, + 0xda, 0xdc, 0xe5, 0x06, 0x16, 0x1d, 0x3b, 0xc4, 0x3c, 0x83, + 0x1d, 0xff, 0xec, 0x46, 0x13, 0x2c, 0x75, 0xde, 0x45, 0xab, + 0xa4, 0xf6, 0x43, 0x37, 0x84, 0xcc, 0x4e, 0x47, 0x2d, 0x57, + 0x6a, 0xe8, 0xfd, 0x81, 0x5d, 0x7c, 0x5e, 0x71, 0x49, 0xb2, + 0x9e, 0xed, 0x04, 0x15, 0x55, 0xf2, 0x40, 0xb1, 0x9c, 0xb7, + 0xa5, 0x2b, 0xe3, 0x73, 0x0b, 0x1b, 0xcd, 0x7b, 0xeb, 0x8b, + 0x23, 0xd1, 0xa8, 0xa7, 0x47, 0xd8, 0x66, 0x9f, 0xb1, 0x08, + 0xcb, 0xe1, 0x8f, 0x1d, 0xf8, 0xa0, 0xfb, 0x3b, 0x5b, 0x22, + 0x1b, 0xa6, 0xbc, 0xbd, 0x63, 0xb3, 0x71, 0x17, 0x18, 0x80, + 0xf3, 0xf5, 0x1e, 0xb8, 0xeb, 0x87, 0x89, 0xec, 0x3e, 0x65, + 0xbe, 0xe1, 0xf1, 0xbb, 0x64, 0xc4, 0x3e, 0x28, 0x4e, 0x7e, + 0x66, 0xe9, 0x76, 0xc8, 0x2f, 0xbe, 0x68, 0x5c, 0x8d, 0x75, + 0x06, 0x20, 0x3d, 0x57, 0x01, 0xda, 0x56, 0xed, 0x1f, 0x2f, + 0x24, 0x30, 0xb0, 0xe8, 0x1b, 0xef, 0x23, 0x92, 0xbd, 0xb2, + 0x33, 0xef, 0x81, 0x6f, 0x74, 0x6d, 0x63, 0x19, 0xe0, 0x90, + 0xb8, 0x09, 0xfa, 0x29, 0x8a, 0x24, 0x53, 0x6b, 0x77, 0x9a, + 0xde, 0x55, 0x7d, 0x8b, 0xc5, 0x46, 0x51, 0x3c, 0x07, 0x91, + 0x88, 0xcf, 0x98, 0x12, 0x57, 0x23, 0x90, 0xef, 0xce, 0x7f, + 0x55, 0x9e, 0xb5, 0xd0, 0x80, 0x4d, 0xdd, 0x89, 0xc7, 0x88, + 0x4e, 0xef, 0xca, 0xbd, 0xc0, 0x77, 0xdc, 0xb2, 0x50, 0xa2, + 0xd0, 0xcb, 0xcd, 0xdd, 0x50, 0xc6, 0x8d, 0x6e, 0xff, 0x24, + 0x11, 0xdb, 0xd6, 0xbd, 0x7c, 0xce, 0x62, 0xe4, 0x0b, 0x55, + 0xe5, 0x83, 0xb0, 0xa5, 0x92, 0x4a, 0x82, 0xd8, 0xdd, 0x52, + 0x80, 0xac, 0x7c, 0x44, 0x13, 0x2b, 0xd8, 0xea, 0xf3, 0x85, + 0x5c, 0x7e, 0xda, 0x22, 0xd2, 0xbb, 0xba, 0xf6, 0x97, 0x9d, + 0x98, 0x9b, 0x0f, 0x5c, 0x94, 0xa2, 0xa5, 0x76, 0x1f, 0xd3, + 0x5f, 0x91, 0x99, 0xbc, 0x32, 0x62, 0x02, 0xeb, 0xcb, 0x79, + 0x20, 0xb9, 0x4e, 0xba, 0xb3, 0xf4, 0x90, 0xd8, 0xe4, 0xec, + 0x87, 0xdc, 0x93, 0xce, 0xea, 0xdf, 0x24, 0x07, 0x37, 0x3c, + 0x9d, 0x0b, 0x82, 0xc3, 0x19, 0x10, 0x4e, 0x26, 0x80, 0xe5, + 0x32, 0x35, 0xd7, 0x82, 0x6b, 0x42, 0x47, 0x29, 0x50, 0x78, + 0xa3, 0xe6, 0xd9, 0xbb, 0x90, 0xb1, 0xa5, 0x7b, 0x14, 0x03, + 0x5e, 0xdb, 0x96, 0x85, 0x5a, 0x77, 0x8f, 0x8a, 0x6b, 0x94, + 0xd0, 0x22, 0xbc, 0x80, 0x9e, 0x42, 0x8a, 0xfa, 0x54, 0x70, + 0x72, 0x4b, 0x3f, 0xf9, 0xe6, 0x28, 0x24, 0xbd, 0xb8, 0x6e, + 0x05, 0x70, 0xf6, 0x46, 0xc4, 0xb0, 0xf7, 0x6d, 0x53, 0xc3, + 0x6a, 0x25, 0x34, 0xe9, 0x2f, 0x20, 0xc6, 0xf1, 0xc3, 0xdf, + 0x15, 0x1c, 0xfd, 0x62, 0x7f, 0xaf, 0xd8, 0x0a, 0xcb, 0x23, + 0xce, 0x4d, 0xed, 0x66, 0x2d, 0x29, 0x07, 0x04, 0xa5, 0x16, + 0x93, 0x39, 0x28, 0x43, 0xed, 0x75, 0xbd, 0x5a, 0xc8, 0xaf, + 0x95, 0xd5, 0x70, 0x40, 0xc2, 0xa3, 0x24, 0x16, 0xc5, 0xba, + 0xf4, 0x9f, 0x04, 0xee, 0x9b, 0x32, 0x7c, 0xbc, 0x90, 0xc0, + 0x85, 0x26, 0x6c, 0x3a, 0x8c, 0x0d, 0xce, 0xa2, 0x1f, 0x62, + 0xbd, 0x6a, 0x96, 0xc3, 0x1a, 0x55, 0x0e, 0x09, 0xea, 0x54, + 0x47, 0x56, 0x99, 0x0f, 0x8b, 0x81, 0x84, 0x1f, 0x82, 0x2b, + 0xa7, 0xa9, 0x17, 0xfd, 0xeb, 0xca, 0x90, 0x0c, 0x10, 0x54, + 0x97, 0x4e, 0xc3, 0x81, 0x35, 0x99, 0xd1, 0xac, 0x0a, 0x0f, + 0x2c, 0x6c, 0xb2, 0x2f, 0x44, 0x86, 0x4c, 0x09, 0xca, 0xf0, + 0x48, 0x96, 0x67, 0xde, 0xcb, 0x4f, 0xbb, 0x68, 0x40, 0xc7, + 0x40, 0x93, 0x19, 0xfb, 0x8a, 0x41, 0xd4, 0x21, 0xc2, 0xf5, + 0x28, 0x3c, 0xb0, 0x73, 0x8d, 0xbc, 0x92, 0x5a, 0x6e, 0x02, + 0x34, 0xba, 0x10, 0x61, 0x25, 0x71, 0xca, 0xaf, 0x6b, 0x66, + 0xec, 0x48, 0x3a, 0x3d, 0x1b, 0x8c, 0x26, 0x58, 0xea, 0x7f, + 0x8a, 0x95, 0x8b, 0x2f, 0x86, 0x6e, 0xcb, 0x5b, 0x01, 0x94, + 0x84, 0xdd, 0x10, 0xbd, 0x27, 0x5d, 0xb8, 0x7a, 0x48, 0x6c, + 0x72, 0x76, 0xa2, 0x6e, 0x26, 0x56, 0x73, 0x17, 0x25, 0xc9, + 0xb8, 0xfc, 0x77, 0x44, 0x67, 0xb5, 0xb7, 0x2f, 0xed, 0xf9, + 0x12, 0xbf, 0x5c, 0x37, 0xe3, 0x38, 0x7b, 0x23, 0x62, 0x58, + 0x9a, 0xd7, 0xc8, 0x80, 0x35, 0xf3, 0x1a, 0x95, 0xf6, 0x10, + 0x63, 0x99, 0x80, 0x8e, 0xeb, 0x0e, 0x9f, 0x31, 0xde, 0xb6, + 0x6c, 0x05, 0x48, 0xb9, 0xb3, 0xdc, 0x0a, 0xe0, 0x2f, 0x8c, + 0x4b, 0xa3, 0x2d, 0xda, 0xa6, 0x45, 0xd4, 0x4a, 0x68, 0x11, + 0x5e, 0x40, 0x4f, 0x21, 0x45, 0x7d, 0x2a, 0x38, 0x39, 0xc4, + 0xfe, 0x9d, 0x73, 0x14, 0xf5, 0x0b, 0x80, 0x33, 0x8b, 0x8f, + 0x5b, 0xe1, 0x28, 0xba, 0xcd, 0x4a, 0x1e, 0x4c, 0x2e, 0x63, + 0x81, 0x71, 0xb6, 0xe8, 0xc7, 0x3f, 0x4c, 0x1f, 0xff, 0x53, + 0x18, 0x14, 0xd1, 0x90, 0x7b, 0xd5, 0x8b, 0xb0, 0xd7, 0xb6, + 0x67, 0x27, 0xf9, 0x08, 0xc5, 0xf1, 0x8d, 0x2a, 0x23, 0x4a, + 0xa5, 0xff, 0xc7, 0x1c, 0x31, 0x98, 0x2d, 0x76, 0x4a, 0x33, + 0x2b, 0x79, 0x43, 0x83, 0x8e, 0x14, 0xbc, 0xce, 0xd6, 0xdc, + 0x22, 0x0b, 0xfe, 0x4a, 0x58, 0xf7, 0x42, 0xaf, 0x01, 0xe0, + 0xd0, 0x0e, 0xac, 0x8f, 0x20, 0xa8, 0xed, 0x9c, 0x45, 0xc1, + 0x6a, 0xf1, 0x61, 0x9b, 0x14, 0x1e, 0x58, 0xd8, 0xa7, 0x5e, + 0x0a, 0xc1, 0x61, 0x5e, 0xa0, 0x18, 0xb5, 0x17, 0x3a, 0xa2, + 0x95, 0x3e, 0xf2, 0xda, 0xde, 0x2a, 0x08, 0x2a, 0xaa, 0x27, + 0x80, 0xa1, 0xfb, 0xad, 0x89, 0x56, 0x05, 0xe6, 0x16, 0x36, + 0x59, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xac, + 0xe6, 0x2e, 0x4a, 0x51, 0xb3, 0x3b, 0xee, 0x88, 0xce, 0xa9, + 0xad, 0x5e, 0x19, 0x31, 0xd7, 0x48, 0xa6, 0xd6, 0xee, 0xf7, + 0x7f, 0xaa, 0xfa, 0xd5, 0x49, 0x8c, 0xa2, 0x78, 0x0e, 0xe1, + 0x74, 0x7a, 0x36, 0xdb, 0x4c, 0xb0, 0x17, 0xfe, 0xd7, 0xe9, + 0xd5, 0x5e, 0xcf, 0xdc, 0x55, 0xb6, + }, + { + /* 1 */ + 0xcc, 0xec, 0x18, 0x15, 0x1b, 0x11, 0x97, 0xc3, 0xf0, 0x9a, + 0x7d, 0x3e, 0x77, 0x3a, 0x93, 0x9b, 0x03, 0x52, 0x4c, 0x32, + 0xa4, 0x91, 0x05, 0xcd, 0xbd, 0x7b, 0x44, 0x0e, 0x71, 0xad, + 0xa6, 0x23, 0x17, 0x0c, 0x9a, 0xa9, 0x18, 0x92, 0x39, 0xd8, + 0xad, 0x0a, 0xf2, 0x46, 0x78, 0x7d, 0x02, 0x74, 0xa5, 0x43, + 0xab, 0x04, 0x86, 0x68, 0x2c, 0x3c, 0x84, 0x83, 0x35, 0x17, + 0xdb, 0x7b, 0x40, 0x98, 0xd4, 0x39, 0x3d, 0x46, 0x72, 0x13, + 0xbf, 0x64, 0x51, 0xc4, 0x18, 0x4e, 0x79, 0x1b, 0xea, 0x40, + 0xfc, 0x85, 0x52, 0xb3, 0xc9, 0x15, 0xc7, 0x4e, 0x71, 0x26, + 0xb7, 0xde, 0x6b, 0x78, 0x61, 0xee, 0xd6, 0xe4, 0xf4, 0xdb, + 0x0b, 0x4c, 0xb9, 0x53, 0x87, 0x96, 0x60, 0xfb, 0x27, 0x6c, + 0x2e, 0xc3, 0x76, 0x51, 0x8b, 0x89, 0xa2, 0x54, 0x9a, 0xfb, + 0x07, 0x98, 0x99, 0xfe, 0x6f, 0x23, 0x47, 0x3e, 0xd2, 0x9d, + 0xa5, 0x22, 0xf9, 0xf2, 0xb5, 0x3d, 0xe8, 0x32, 0x90, 0x52, + 0x9b, 0x82, 0x65, 0x06, 0x20, 0x4e, 0xcd, 0xc4, 0x9c, 0xb9, + 0x60, 0xf6, 0xfe, 0x69, 0x8c, 0x01, 0xa9, 0x7c, 0x1d, 0xe7, + 0x65, 0x24, 0x40, 0xd9, 0x48, 0x78, 0xaf, 0x4d, 0xc5, 0x36, + 0x9b, 0x11, 0xab, 0xb0, 0x0e, 0x8f, 0x42, 0x41, 0x90, 0xd6, + 0x82, 0xee, 0xc6, 0x18, 0xe9, 0x80, 0xa3, 0xb7, 0xcf, 0x8f, + 0xfe, 0x8e, 0x46, 0x38, 0xc1, 0x2f, 0x70, 0x50, 0xca, 0x76, + 0x86, 0x24, 0x53, 0x1e, 0x73, 0x61, 0xb5, 0x4b, 0xbb, 0x32, + 0x16, 0x33, 0x64, 0x8b, 0x0e, 0xc2, 0x9c, 0x2b, 0xd8, 0x7b, + 0x37, 0xc3, 0xb6, 0x05, 0x2c, 0xc5, 0x3e, 0x0c, 0x49, 0xb8, + 0x74, 0x44, 0x4f, 0x46, 0x5f, 0x39, 0xae, 0x8d, 0xc0, 0x6b, + 0x25, 0xb8, 0x19, 0x92, 0xb3, 0xc9, 0x6f, 0x62, 0xfa, 0xe4, + 0x40, 0x13, 0x3a, 0x48, 0x34, 0x82, 0x2e, 0x18, 0xf7, 0x91, + 0x30, 0xe7, 0x72, 0x73, 0x99, 0x14, 0x27, 0x8c, 0xf0, 0xfa, + 0x04, 0xe8, 0x7f, 0x2c, 0xac, 0x17, 0x58, 0x25, 0x81, 0xdd, + 0xb2, 0x3a, 0x86, 0xd4, 0xfb, 0xe6, 0xb3, 0xd7, 0xad, 0xb1, + 0x09, 0x35, 0xa1, 0xd7, 0x34, 0xe0, 0x5a, 0x08, 0x16, 0x86, + 0x60, 0x64, 0xd6, 0xd1, 0x06, 0xa4, 0x98, 0x64, 0x8b, 0xe1, + 0x0a, 0x59, 0xb9, 0xf6, 0x88, 0x1c, 0xe2, 0x99, 0x8f, 0x46, + 0x6b, 0x72, 0x7a, 0x8c, 0xe4, 0x26, 0xbd, 0xc8, 0xa2, 0x4b, + 0x30, 0x9c, 0xf2, 0x36, 0x17, 0x80, 0x3b, 0xc9, 0xa4, 0xa5, + 0x51, 0x2a, 0x4d, 0x9c, 0xe2, 0x4c, 0xad, 0x7f, 0xd6, 0xf0, + 0xc2, 0x1f, 0x6a, 0xfd, 0xff, 0x23, 0x39, 0xe8, 0xbe, 0x32, + 0xc9, 0x62, 0x0c, 0x27, 0xdd, 0xec, 0x75, 0x20, 0x7e, 0xa3, + 0x29, 0xb8, 0x85, 0xeb, 0x82, 0x27, 0xd9, 0x13, 0xba, 0x6f, + 0xd4, 0x3c, 0xd1, 0x77, 0x3c, 0xe2, 0xb9, 0x6e, 0x07, 0x05, + 0x44, 0x3f, 0x30, 0x93, 0x19, 0xd8, 0x1b, 0xb3, 0x2f, 0xf9, + 0x84, 0x82, 0xe3, 0x6f, 0xc7, 0x1f, 0x4f, 0x30, 0x11, 0xc3, + 0x85, 0xad, 0x5d, 0xdd, 0x3f, 0xdf, 0x67, 0xf9, 0x89, 0x44, + 0x31, 0x27, 0xa9, 0x7a, 0x13, 0x64, 0xe3, 0xa4, 0xf5, 0xc7, + 0xca, 0x0c, 0xb6, 0x36, 0x60, 0x54, 0x6c, 0x44, 0x19, 0x8a, + 0x46, 0x2d, 0x37, 0xf8, 0x1f, 0xe8, 0x09, 0x29, 0x16, 0x83, + 0x1f, 0x06, 0xc5, 0x5c, 0x3a, 0x22, 0xc6, 0x23, 0xce, 0xfd, + 0x57, 0xa7, 0x60, 0xd4, 0x88, 0x09, 0x10, 0xa7, 0x12, 0x1e, + 0x5b, 0x82, 0xa0, 0xec, 0x56, 0x95, 0x5a, 0x2c, 0xe2, 0x53, + 0x58, 0x49, 0x7c, 0x18, 0x92, 0xb3, 0xe8, 0x88, 0x9e, 0x8c, + 0xbe, 0x72, 0x9f, 0xd9, 0x43, 0xd6, 0xbc, 0x19, 0x0b, 0xf8, + 0x32, 0xa4, 0x07, 0x61, 0x4e, 0xf4, 0x6c, 0xdc, 0xfa, 0x80, + 0x5b, 0xe3, 0xde, 0x16, 0x56, 0xea, 0x2c, 0xf3, 0xa1, 0x8f, + 0x59, 0x1d, 0x43, 0x6a, 0x9c, 0x73, 0xb8, 0x8a, 0xc2, 0xba, + 0x22, 0x40, 0xb7, 0x4f, 0x85, 0x46, 0x97, 0xe7, 0xd6, 0xb3, + 0x2e, 0xbc, 0x8a, 0x94, 0x4e, 0xca, 0x63, 0x1e, 0x57, 0xef, + 0xd2, 0xaa, 0x58, 0xaf, 0x70, 0x8f, 0xc8, 0x7e, 0x23, 0x02, + 0x3f, 0xb0, 0xf5, 0x5c, 0xa3, 0x94, 0x41, 0xf2, 0x8d, 0xe8, + 0x5d, 0xd6, 0x6a, 0x1e, 0x89, 0xda, 0x0e, 0x56, 0x3a, 0x55, + 0xac, 0x5e, 0x12, 0x85, 0x67, 0x7d, 0xab, 0x8d, 0x59, 0x86, + 0x19, 0x0f, 0x1f, 0xfe, 0x38, 0x98, 0x3f, 0x2d, 0x21, 0x04, + 0x73, 0x81, 0xd1, 0xd7, 0xc3, 0x62, 0x94, 0x3d, 0x99, 0xa1, + 0x12, 0x6a, 0x81, 0x6d, 0x68, 0x03, 0xb4, 0x10, 0x2c, 0xcf, + 0xc0, 0xc8, 0x6f, 0x61, 0x0c, 0x8b, 0xf3, 0xc8, 0xd5, 0x01, + 0x14, 0xb2, 0xb1, 0x2f, 0xd3, 0x38, 0x07, 0xf1, 0xdd, 0x8c, + 0x70, 0xf5, 0x13, 0xed, 0x29, 0xb5, 0x90, 0xa2, 0xbe, 0x6e, + 0x11, 0xe2, 0x8d, 0xba, 0xc8, 0x78, 0x44, 0xe5, 0x08, 0xb2, + 0x09, 0x0f, 0xcc, 0x41, 0x50, 0x76, 0x2b, 0xab, 0x2d, 0x16, + 0x71, 0xc8, 0x2d, 0x4a, 0xbb, 0xa3, 0x94, 0x76, 0x77, 0xbe, + 0x24, 0x6f, 0x63, 0x82, 0x81, 0x57, 0xa2, 0xcb, 0x5f, 0x62, + 0x61, 0xd3, 0xc4, 0x9c, 0xe1, 0x2b, 0x4c, 0x53, 0x0a, 0xd5, + 0x52, 0x9a, 0xae, 0x30, 0x78, 0x07, 0xb1, 0xdc, 0x0e, 0x0a, + 0x88, 0x7e, 0x60, 0xe5, 0x32, 0x73, 0x36, 0xa5, 0x5e, 0x31, + 0xcb, 0xc7, 0x05, 0xde, 0x4d, 0x3e, 0x9e, 0x60, 0x22, 0x45, + 0xc9, 0x99, 0xba, 0x79, 0x7e, 0x7d, 0xd5, 0xb6, 0xb8, 0xe9, + 0xaf, 0xdd, 0xbc, 0x9e, 0x3a, 0xed, 0x24, 0xf5, 0x56, 0xc1, + 0x88, 0xe0, 0x73, 0xa7, 0x5f, 0xdf, 0x8d, 0x24, 0x95, 0x6f, + 0x03, 0x15, 0x55, 0xec, 0xfc, 0x17, 0x6e, 0x5b, 0x5c, 0x30, + 0x2d, 0xe1, 0x60, 0x0d, 0xe4, 0xe6, 0xf1, 0x28, 0x4e, 0xdb, + 0x23, 0x37, 0x08, 0x13, 0xfe, 0x58, 0x9b, 0x2e, 0xb0, 0x4a, + 0xc1, 0x79, 0xa7, 0x74, 0xcf, 0x6b, 0x35, 0x0f, 0xa5, 0x6d, + 0x6f, 0x0b, 0x2b, 0x75, 0x16, 0x98, 0xb1, 0xa6, 0xcd, 0xef, + 0xc0, 0x35, 0x4e, 0xd8, 0x5c, 0x45, 0x1a, 0x08, 0xec, 0xce, + 0x10, 0x5d, 0x2e, 0x90, 0x77, 0x0c, 0x1d, 0xc5, 0x50, 0x56, + 0xbd, 0x58, 0x07, 0x2b, 0x1d, 0xcb, 0x56, 0x2f, 0x09, 0xa3, + 0xd2, 0xdf, 0xb4, 0xa7, 0xcd, 0x43, 0xed, 0xe6, 0xee, 0x7f, + 0x1c, 0x4c, 0xfe, 0xf7, 0xf1, 0x02, 0xd8, 0xa1, 0x89, 0x8a, + 0x80, 0x31, 0x4a, 0xff, 0xea, 0x06, 0x4d, 0xb5, 0x0c, 0x49, + 0xfd, 0x6c, 0xb7, 0x05, 0x79, 0x23, 0x3c, 0xdf, 0x01, 0x3a, + 0xc8, 0x95, 0x49, 0xec, 0xe9, 0xaf, 0x9b, 0xad, 0x9f, 0x3e, + 0x8d, 0x97, 0xcb, 0xd4, 0xd8, 0x5e, 0x8c, 0x70, 0x41, 0x5e, + 0xe0, 0xa0, 0x57, 0xec, 0xcf, 0x48, 0xa6, 0x3c, 0xe6, 0xc2, + 0xa9, 0x96, 0xb5, 0x64, 0x2c, 0x66, 0xc8, 0xd5, 0x1c, 0x47, + 0xfb, 0x56, 0x73, 0xf6, 0x6e, 0x45, 0xaf, 0x0a, 0x38, 0x9b, + 0xe8, 0x97, 0xf5, 0xbb, 0x48, 0x51, 0x5f, 0x37, 0xe9, 0x71, + 0xa7, 0x5d, 0x64, 0x3c, 0x59, 0xc6, 0xf9, 0xb7, 0x4f, 0x7d, + 0xeb, 0x72, 0xf5, 0xa5, 0x82, 0xc9, 0xb0, 0x03, 0x21, 0x76, + 0x69, 0xaf, 0xb3, 0x11, 0x9d, 0x79, 0xbb, 0xff, 0x74, 0x19, + 0x48, 0x29, 0xac, 0x41, 0xd3, 0x03, 0x10, 0x27, 0x87, 0x62, + 0x4e, 0xbd, 0x30, 0x7b, 0x7f, 0xd5, 0x46, 0xe1, 0xb5, 0x3e, + 0xef, 0x92, 0xf0, 0x0e, 0xa1, 0x7b, 0x1c, 0x14, 0xd3, 0xfc, + 0xc0, 0x09, 0x64, 0xe6, 0x6c, 0x89, 0xbc, 0x62, 0xa3, 0xe7, + 0x33, 0x60, 0x0d, 0x89, 0x26, 0x65, 0x3d, 0x75, 0xbd, 0x0b, + 0x39, 0xe2, 0xcf, 0xde, 0x09, 0x7d, 0x27, 0x9e, 0xfa, 0x71, + 0x1b, 0x26, 0xb5, 0xa2, 0x1f, 0x2a, 0x94, 0xc5, 0xf4, 0xe9, + 0x0d, 0x04, 0x76, 0x67, 0x08, 0xcf, 0x17, 0x48, 0xda, 0x06, + 0xef, 0x83, 0x28, 0x2b, 0xbf, 0x2c, 0xfd, 0x0a, 0xd7, 0x1c, + 0x14, 0xdb, 0xc4, 0xb4, 0x1a, 0x0f, 0x8b, 0x65, 0x44, 0xa2, + 0x03, 0x4e, 0x1b, 0x87, 0x69, 0x61, 0xcd, 0x93, 0x2d, 0x6a, + 0x1c, 0x25, 0x21, 0x7e, 0x7f, 0x8c, 0xdf, 0xf8, 0x27, 0x65, + 0xd0, 0x0f, 0xca, 0x96, 0x69, 0x55, 0x2c, 0xb6, 0x38, 0xa6, + 0x64, 0x3f, 0xf0, 0x01, 0x8d, 0xff, 0xc4, 0xf1, 0x3d, 0x6e, + 0x54, 0x16, 0xa4, 0x61, 0x9a, 0x87, 0xc9, 0x18, 0xcb, 0x36, + 0xf2, 0xd3, 0x68, 0xe6, 0x65, 0x4b, 0xd5, 0xcb, 0x16, 0x5b, + 0x1c, 0x53, 0x32, 0xfe, 0x78, 0xe1, 0x92, 0x01, 0xfc, 0x69, + 0x02, 0x43, 0x75, 0x12, 0xd7, 0xe0, 0x4b, 0x50, 0x0a, 0x7a, + 0x5f, 0x0b, 0x6d, 0xd6, 0xe2, 0xe8, 0x6f, 0xc7, 0xb7, 0x91, + 0x1b, 0xbd, 0xb8, 0x80, 0x10, 0xaf, 0x98, 0xc6, 0x5d, 0xbf, + 0xa8, 0x4e, 0xbd, 0xc3, 0xe7, 0x1c, 0x9a, 0x01, 0x72, 0x60, + 0x0c, 0xed, 0x6a, 0xb3, 0xf1, 0x81, 0x24, 0xd4, 0xc1, 0xda, + 0xd0, 0x06, 0xab, 0x20, 0x58, 0x5d, 0x43, 0x53, 0xde, 0xc2, + 0x21, 0xc1, 0x48, 0x6b, 0x41, 0x77, 0x63, 0x0c, 0x95, 0x40, + 0xb0, 0xba, 0x86, 0xa6, 0x7f, 0x47, 0x37, 0x42, 0x57, 0x6d, + 0x84, 0x2b, 0x59, 0x2e, 0x53, 0x63, 0x7e, 0x47, 0xd1, 0x01, + 0x1f, 0x93, 0x40, 0x9c, 0x59, 0x4b, 0xfb, 0xb1, 0xc0, 0x2f, + 0x3f, 0xd2, 0xdb, 0x02, 0x91, 0xf8, 0x3a, 0x0d, 0x8e, 0xad, + 0x88, 0xc3, 0x99, 0xff, 0x51, 0xdb, 0x19, 0x1a, 0xde, 0x89, + 0xb8, 0xb5, 0x6d, 0x15, 0xe8, 0xdb, 0x84, 0x28, 0x75, 0x16, + 0xfb, 0x5b, 0x61, 0x57, 0x01, 0x96, 0x62, 0xa8, 0xc5, 0xb9, + 0xe4, 0x50, 0x77, 0xe0, 0xa0, 0x17, 0xef, 0xe9, 0xd0, 0x78, + 0xd2, 0xae, 0x65, 0x59, 0x18, 0x35, 0xec, 0xa2, 0xd5, 0xd1, + 0x87, 0xa8, 0xf7, 0x35, 0x0e, 0xf3, 0xf1, 0x3f, 0xde, 0x46, + 0x8e, 0x7c, 0x9e, 0x8a, 0x0f, 0xa1, 0xd7, 0x42, 0x61, 0xa0, + 0x66, 0xcf, 0x98, 0x68, 0x0d, 0x8b, 0x82, 0x87, 0x9c, 0x57, + 0xc6, 0x3c, 0xae, 0x1d, 0x67, 0x97, 0xb0, 0x9d, 0xe0, 0xdd, + 0x53, 0xfc, 0x46, 0x04, 0xd1, 0xcf, 0xe9, 0x10, 0x5d, 0x63, + 0xb0, 0xf0, 0x55, 0x49, 0xd4, 0x5c, 0xea, 0x2f, 0xc3, 0x25, + 0xe7, 0x02, 0x3b, 0xd2, 0x04, 0x86, 0xea, 0x24, 0x6d, 0x03, + 0x96, 0xa0, 0x14, 0xf4, 0xbe, 0x16, 0xb8, 0x60, 0x5a, 0x01, + 0xc0, 0x1a, 0x0b, 0x0f, 0x21, 0x50, 0x9c, 0x75, 0x46, 0x6e, + 0x10, 0x26, 0x2f, 0x97, 0x72, 0x3e, 0xed, 0x29, 0x71, 0x89, + 0xf2, 0x3d, 0x1b, 0x37, 0xdf, 0x20, 0x66, 0x48, 0xe2, 0xf4, + 0xef, 0x84, 0x2b, 0xf6, 0xe5, 0xb0, 0x69, 0x8e, 0x5a, 0xb2, + 0x87, 0xc0, 0x97, 0x73, 0x8a, 0xd4, 0xd9, 0x3a, 0x6b, 0x41, + 0x5d, 0xb5, 0x76, 0xbe, 0x2e, 0x20, 0x04, 0x5b, 0x26, 0xd0, + 0xd7, 0x6b, 0x71, 0x74, 0xd6, 0x82, 0xba, 0xa9, 0xec, 0xbf, + 0x5c, 0x40, 0x08, 0xb6, 0x4c, 0x63, 0xb4, 0xeb, 0xa9, 0xc9, + 0x15, 0x1b, 0x1f, 0xbd, 0x90, 0x7f, 0x4f, 0x4d, 0x41, 0x9f, + 0xcd, 0xaa, 0x29, 0x33, 0xea, 0x5a, 0x66, 0xc8, 0x7b, 0xd0, + 0x4b, 0xcb, 0x93, 0x2b, 0x3d, 0xb9, 0xe9, 0x0e, 0x13, 0x75, + 0xcb, 0x50, 0xea, 0x2c, 0x35, 0xb6, 0xc2, 0xae, 0x02, 0xef, + 0xc4, 0x93, 0x49, 0xb1, 0x98, 0x2e, 0x97, 0xc5, 0x5c, 0xa3, + 0x6b, 0xf9, 0xdf, 0x39, 0x10, 0x74, 0xef, 0x12, 0x0d, 0xc1, + 0x80, 0xfb, 0xb2, 0x96, 0x35, 0xa1, 0x43, 0x5e, 0x7e, 0x67, + 0x75, 0x04, 0xe1, 0x33, 0x74, 0x1a, 0xa6, 0x11, 0xe7, 0x36, + 0x22, 0xf9, 0x29, 0xf1, 0x39, 0xf8, 0x71, 0x19, 0xaa, 0xd6, + 0xe6, 0xbb, 0x62, 0x0f, 0x5d, 0x12, 0x1e, 0x57, 0xa6, 0xee, + 0x17, 0xe9, 0x2f, 0xb6, 0x66, 0xf3, 0xe3, 0x69, 0xb3, 0xc0, + 0xb4, 0x02, 0x43, 0x34, 0x16, 0x1e, 0x42, 0xa0, 0xfb, 0xea, + 0x8c, 0xdc, 0x20, 0x4c, 0x5e, 0xed, 0xe4, 0x7c, 0x19, 0x52, + 0xe2, 0xd1, 0x27, 0x7a, 0x36, 0x6e, 0x7d, 0x40, 0xcc, 0x90, + 0x72, 0x28, 0xda, 0x70, 0x50, 0xea, 0x96, 0x95, 0x68, 0x3c, + 0x69, 0x57, 0xd3, 0xcd, 0x0c, 0xfb, 0x43, 0xce, 0x15, 0x79, + 0x5f, 0x20, 0xc5, 0xe2, 0x82, 0xa9, 0x9f, 0x0c, 0xe0, 0x55, + 0x9c, 0x2e, 0x34, 0x10, 0x1b, 0x5f, 0x20, 0xba, 0x5c, 0xe3, + 0xee, 0x18, 0x3a, 0x49, 0xa0, 0xac, 0xb9, 0xb0, 0x35, 0x9f, + 0x9e, 0xf0, 0xfd, 0x74, 0x5f, 0x19, 0x85, 0x31, 0x06, 0xf2, + 0x8f, 0x76, 0xdb, 0x10, 0x52, 0x66, 0x17, 0xb4, 0xcc, 0x53, + 0xf6, 0x63, 0x96, 0x55, 0xe5, 0x56, 0x7a, 0xb1, 0x11, 0x1c, + 0x26, 0xea, 0x55, 0xa0, 0x17, 0x58, 0x6a, 0xaf, 0x47, 0x9f, + 0x04, 0x1d, 0x4b, 0xe5, 0x92, 0xa1, 0x7d, 0xf1, 0x65, 0x8a, + 0x21, 0x7a, 0x87, 0xea, 0x64, 0x68, 0xfe, 0x61, 0xa5, 0x91, + 0x77, 0x54, 0xb7, 0xb9, 0xe5, 0xfb, 0xb1, 0x8a, 0x1a, 0x70, + 0x2d, 0x04, 0x0b, 0x43, 0x30, 0x32, 0x6b, 0x89, 0x0a, 0x2f, + 0x6b, 0xac, 0x5e, 0xe0, 0x1e, 0xeb, 0x08, 0xd9, 0x5b, 0x24, + 0xe5, 0x68, 0x52, 0xca, 0x45, 0x6a, 0x8d, 0x1d, 0xd4, 0xc1, + 0xcf, 0xbb, 0x3b, 0x5f, 0x17, 0x10, 0x02, 0xcc, 0x13, 0x68, + 0x81, 0x74, 0x37, 0x39, 0xe8, 0x6f, 0x40, 0xa4, 0x15, 0x4e, + 0x49, 0xbf, 0xce, 0xe9, 0x16, 0xba, 0x6e, 0x84, 0xae, 0xda, + 0xcb, 0x56, 0xb2, 0x5c, 0xa6, 0xc6, 0xfc, 0x8e, 0x61, 0x02, + 0x3e, 0xe5, 0x53, 0xe9, 0x92, 0x1b, 0x11, 0x9d, 0xf5, 0x99, + 0xfd, 0x7c, 0xd9, 0xed, 0x55, 0x6b, 0x73, 0xbc, 0x4a, 0xb3, + 0x32, 0xe7, 0xa5, 0x51, 0xde, 0xc4, 0x37, 0x0b, 0x80, 0x26, + 0x74, 0x90, 0x68, 0xc7, 0x79, 0x88, 0x34, 0x73, 0xd3, 0xc4, + 0x8b, 0x84, 0x0b, 0xcc, 0x0e, 0xc8, 0x19, 0x7f, 0x3c, 0x91, + 0x32, 0xb4, 0x83, 0x3b, 0xab, 0x5b, 0x56, 0xba, 0x57, 0xee, + 0xb2, 0x55, 0x42, 0x35, 0x36, 0xf6, 0x61, 0x5d, 0x11, 0x20, + 0xba, 0xc6, 0xa3, 0x23, 0xaa, 0x92, 0x6b, 0xb8, 0x17, 0x5e, + 0x45, 0x4a, 0xfb, 0xae, 0x4f, 0x78, 0x9f, 0x3a, 0xce, 0xed, + 0xa3, 0xf9, 0x03, 0x79, 0xa6, 0x3b, 0x8c, 0x08, 0x39, 0x14, + 0x6d, 0x38, 0x28, 0x75, 0x4b, 0xab, 0x34, 0x1e, 0xd5, 0xca, + 0x88, 0x87, 0x06, 0x9c, 0xc0, 0x67, 0xeb, 0xdd, 0xce, 0x10, + 0x83, 0x71, 0x41, 0xb5, 0xae, 0x06, 0x70, 0xcb, 0x4e, 0x17, + 0xfa, 0x21, 0xca, 0xd7, 0x42, 0xf4, 0xcd, 0x17, 0xc8, 0xd0, + 0x3f, 0xc2, 0x89, 0xe1, 0xee, 0xa8, 0x5b, 0x1b, 0x30, 0x2a, + 0x36, 0x22, 0xed, 0x45, 0x23, 0xf7, 0xfa, 0x7c, 0xee, 0x74, + 0xe5, 0xf5, 0xa4, 0xcc, 0x2e, 0xab, 0x5b, 0xa6, 0x2f, 0xc6, + 0xef, 0xaa, 0x09, 0xac, 0xf4, 0xa1, 0x22, 0x38, 0xba, 0xbd, + 0x93, 0x9c, 0xb9, 0x45, 0x0d, 0x38, 0xf7, 0x02, 0xe4, 0xc0, + 0x18, 0x19, 0xd4, 0xa5, 0xda, 0x6f, 0x07, 0x13, 0xde, 0x4d, + 0xad, 0xe1, 0x36, 0xb9, 0xb3, 0xc3, 0x20, 0x9d, 0xf3, 0x4f, + 0x4c, 0x17, 0xaa, 0x83, 0x2e, 0xb0, 0xd4, 0x9d, 0x8e, 0xfd, + 0x08, 0x3a, 0x96, 0x09, 0xe7, 0x81, 0x05, 0xf6, 0xd4, 0x56, + 0x2f, 0x70, 0x0f, 0x94, 0x04, 0x8d, 0xcc, 0x12, 0x93, 0x34, + 0x29, 0x65, 0xc3, 0x35, 0xa7, 0xef, 0x6a, 0x81, 0x86, 0xbc, + 0xfc, 0xce, 0xea, 0x08, 0x01, 0x66, 0xe8, 0x34, 0x3a, 0x46, + 0x21, 0x0a, 0x8c, 0xe4, 0x4e, 0x66, 0x89, 0x65, 0x91, 0xc4, + 0xf9, 0x2a, 0xa0, 0xbf, 0x82, 0x26, 0x7b, 0x0b, 0x4c, 0xfe, + 0x45, 0x69, 0xa8, 0x35, 0x0d, 0xb1, 0xbf, 0x44, 0xb0, 0x99, + 0x18, 0xd5, 0x25, 0x53, 0x69, 0x02, 0x28, 0xa7, 0xa1, 0x5e, + 0x65, 0x70, 0x0e, 0x21, 0x79, 0xdb, 0xc9, 0x1a, 0xcc, 0x43, + 0x34, 0x61, 0x98, 0x57, 0xf4, 0x17, 0xb1, 0x2c, 0xe4, 0x0e, + 0xba, 0xfe, 0x68, 0x20, 0x36, 0xbe, 0x40, 0xb7, 0xb8, 0x05, + 0x1f, 0x30, 0x74, 0x92, 0x83, 0x9b, 0xb1, 0xa3, 0xf6, 0xaa, + 0x39, 0x1f, 0x97, 0xf5, 0xd9, 0xa5, 0x79, 0xff, 0xec, 0xfa, + 0x8e, 0x10, 0x33, 0x24, 0x63, 0x80, 0xd8, 0xbd, 0xc3, 0x99, + 0xa5, 0x14, 0x7c, 0xc0, 0x13, 0x0d, 0x49, 0x29, 0x81, 0xc9, + 0x87, 0xd0, 0xaf, 0x5d, 0x63, 0x8e, 0x4a, 0xfd, 0xac, 0xb8, + 0xc1, 0xa3, 0x2c, 0x70, 0x99, 0xfc, 0x49, 0xe1, 0x7e, 0xd5, + 0x01, 0xc0, 0xdb, 0x09, 0x8a, 0x70, 0xc4, 0x28, 0x05, 0x3d, + 0xce, 0xe4, 0x36, 0xcd, 0xd2, 0xc2, 0x59, 0xe5, 0x5a, 0xd4, + 0x38, 0x4a, 0x42, 0xfc, 0xfe, 0xdb, 0x7d, 0x33, 0x91, 0x53, + 0xb0, 0x5b, 0xa6, 0xd2, 0x70, 0xdf, 0x6a, 0x9b, 0x0f, 0x5e, + 0x7b, 0xd7, 0xf9, 0x28, 0x97, 0xf7, 0x28, 0x3f, 0x2d, 0x33, + 0x7a, 0x86, 0xd3, 0x6d, 0x87, 0x42, 0x99, 0x4e, 0x76, 0x6e, + 0x33, 0x3b, 0x06, 0x94, 0x76, 0x95, 0x55, 0x40, 0x3c, 0xc7, + 0x8e, 0xee, 0x6d, 0xef, 0x54, 0x56, 0x08, 0xf2, 0xa2, 0x31, + 0x27, 0xbf, 0x18, 0xdc, 0xde, 0x8b, 0x23, 0x91, 0xbb, 0x1f, + 0x96, 0x49, 0x7c, 0x7e, 0xe0, 0x25, 0xfc, 0xb4, 0x84, 0x10, + 0x0f, 0x41, 0xc2, 0xda, 0x8a, 0x4b, 0x15, 0xf4, 0x02, 0xdd, + 0xc9, 0x9d, 0x79, 0x5f, 0x06, 0x37, 0xd6, 0x52, 0x78, 0xb5, + 0x5e, 0x77, 0xc4, 0x83, 0x77, 0xde, 0x0e, 0x26, 0x7f, 0x9a, + 0x99, 0x01, 0x6c, 0xb1, 0xa5, 0x45, 0x40, 0xf9, 0x25, 0x9e, + 0x85, 0x0d, 0x66, 0xc0, 0x1a, 0xd1, 0x4c, 0xca, 0x7a, 0xea, + 0xb9, 0x16, 0x72, 0x07, 0x5d, 0x7f, 0x66, 0x76, 0x0c, 0xeb, + 0xec, 0xe9, 0xaa, 0x80, 0x78, 0x4d, 0xdf, 0x1f, 0xda, 0x1d, + 0xa8, 0xac, 0x41, 0x13, 0xdc, 0xe4, 0x26, 0x7f, 0xc3, 0xd5, + 0x54, 0xfb, 0xe7, 0xb9, 0xbe, 0x22, 0x58, 0xad, 0x30, 0x69, + 0x4a, 0xa6, 0xd2, 0x04, 0x50, 0x8d, 0x81, 0xbc, 0xca, 0xe0, + 0x1c, 0x42, 0xf2, 0x75, 0xcd, 0x63, 0x9d, 0xba, 0xc6, 0xdf, + 0x94, 0x39, 0x9b, 0xb3, 0x41, 0x85, 0x58, 0xe0, 0xf1, 0x3b, + 0xd0, 0x40, 0x6c, 0xbf, 0x80, 0xad, 0xb3, 0x0a, 0x3e, 0x60, + 0xe8, 0xe7, 0xc5, 0xf5, 0xa1, 0x85, 0xd9, 0x3d, 0x4b, 0x21, + 0x7a, 0xdc, 0xa8, 0x2c, 0x8b, 0xc2, 0xf7, 0xcd, 0x51, 0x30, + 0x55, 0x6c, 0xa9, 0xc8, 0x58, 0xcc, 0x53, 0x69, 0x38, 0x8e, + 0x35, 0xac, 0xe6, 0x2f, 0xdc, 0x8a, 0x9d, 0x14, 0xaa, 0x9a, + 0x14, 0xfe, 0xf7, 0xf8, 0x3d, 0x43, 0x88, 0xd7, 0xa2, 0x21, + 0xad, 0x27, 0x3b, 0x37, 0xc5, 0x91, 0x3f, 0x8b, 0xe1, 0x60, + 0x8c, 0xe5, 0x45, 0x38, 0x62, 0x14, 0xe3, 0xff, 0x67, 0x72, + 0x60, 0xd2, 0x94, 0x8f, 0x67, 0x08, 0xa0, 0xd9, 0xc1, 0xbb, + 0x57, 0x03, 0x38, 0x84, 0x27, 0xea, 0xf8, 0xfc, 0x03, 0x4a, + 0x3b, 0xab, 0xcb, 0x20, 0x1e, 0x82, 0x47, 0x77, 0xd7, 0x96, + 0x2a, 0x2b, 0x04, 0x79, 0x51, 0xf9, 0xf2, 0xbe, 0x0c, 0x6e, + 0x6f, 0xa4, 0xf0, 0xa9, 0xbc, 0xee, 0x4b, 0xc5, 0x90, 0xdc, + 0x35, 0xf4, 0x7b, 0x1c, 0x73, 0x25, 0x01, 0xb2, 0x33, 0xe5, + 0x54, 0x0d, 0x9b, 0x88, 0xe6, 0x8d, 0xbe, 0x7d, 0xd9, 0x48, + 0xe9, 0xde, 0x06, 0x2a, 0xaa, 0x1b, 0x3b, 0x2e, 0xdc, 0xb6, + 0x96, 0x78, 0xad, 0x90, 0xf0, 0xfd, 0x79, 0x7c, 0xb8, 0x44, + 0xbb, 0xf9, 0xb6, 0x94, 0x14, 0xce, 0xaf, 0x6c, 0xc0, 0xa8, + 0xd8, 0x88, 0x32, 0xd7, 0x8c, 0x5a, 0x6e, 0x33, 0x3e, 0x13, + 0x12, 0x52, 0xc6, 0xc3, 0x73, 0xb9, 0x45, 0xf1, 0x89, 0x28, + 0xf8, 0x43, 0x26, 0x1a, 0x92, 0x52, 0xc1, 0x51, 0xa7, 0x9e, + 0x62, 0x99, 0xff, 0x37, 0x2a, 0x0b, 0x52, 0xd1, 0x4d, 0xa2, + 0x85, 0x0c, 0x84, 0x1b, 0xa1, 0x3a, 0xfa, 0xfd, 0x74, 0xd6, + 0x20, 0x52, 0xeb, 0x27, 0xc5, 0xbe, 0x67, 0x95, 0x0b, 0x5d, + 0xd8, 0xb2, 0xce, 0x8e, 0xa7, 0x12, 0xab, 0xd6, 0xe0, 0xeb, + 0xcb, 0x76, 0x7e, 0xea, 0x37, 0xcc, 0x1e, 0x71, 0xbd, 0x37, + 0xe2, 0xe3, 0x22, 0xfe, 0x18, 0xa8, 0xed, 0x6c, 0xec, 0xb8, + 0xf6, 0x9d, 0x4d, 0x98, 0x2f, 0x2c, 0xf3, 0x7e, 0xd7, 0x67, + 0xe5, 0xd4, 0x34, 0x81, 0xb9, 0xd3, 0x85, 0x21, 0x64, 0xab, + 0xc5, 0x76, 0x95, 0xb6, 0xac, 0xb7, 0xae, 0x1f, 0xa7, 0xaa, + 0x84, 0x6a, 0x6c, 0x2f, 0x9a, 0xf3, 0x5e, 0x58, 0x25, 0xfc, + 0x6d, 0xce, 0x09, 0x6b, 0x68, 0xc1, 0xb1, 0x65, 0xc9, 0x42, + 0xe3, 0x7b, 0x6a, 0x2b, 0xf6, 0x38, 0xe6, 0x4a, 0x02, 0xa7, + 0x66, 0x09, 0xa8, 0x1a, 0xf5, 0xd3, 0xf9, 0x73, 0x86, 0xe5, + 0xe6, 0x65, 0xc8, 0xda, 0x75, 0xab, 0x7b, 0xcc, 0xf8, 0x4c, + 0x48, 0x8b, 0xf7, 0x25, 0xbc, 0xb0, 0x4a, 0x3b, 0xda, 0x5f, + 0x12, 0xd6, 0xd0, 0x41, 0xa1, 0xca, 0x51, 0x84, 0x19, 0x5a, + 0xa0, 0xfc, 0xb4, 0xcc, 0x2b, 0x5d, 0xca, 0x77, 0x59, 0xcb, + 0x21, 0xfb, 0x1b, 0x7b, 0x83, 0xa9, 0xfe, 0xa4, 0x91, 0x30, + 0x46, 0x93, 0xc3, 0x1c, 0x31, 0x0a, 0x90, 0x9e, 0xd2, 0x39, + 0x4b, 0x3c, 0xb7, 0x48, 0x78, 0x9f, 0xdd, 0x3e, 0x5c, 0x22, + 0xbc, 0x9d, 0x5b, 0x4a, 0x0a, 0x67, 0x4f, 0x45, 0xe6, 0xb1, + 0x8a, 0x21, 0xd1, 0x50, 0x33, 0x86, 0x4c, 0x34, 0xe7, 0xa4, + 0x41, 0xa2, 0x7b, 0x55, 0xfd, 0xee, 0xaa, 0x9b, 0x8d, 0xb3, + 0xdd, 0x9e, 0x76, 0x7d, 0x47, 0x08, 0xf8, 0x12, 0xef, 0xf0, + 0x99, 0xe3, 0x23, 0x39, 0xf2, 0xf8, 0xb3, 0x88, 0xb5, 0x31, + 0xaf, 0xeb, 0x28, 0x5f, 0x9d, 0xd8, 0x43, 0x93, 0x73, 0xd3, + 0x64, 0x6d, 0xdb, 0xb4, 0xdc, 0x66, 0x7c, 0x26, 0x24, 0xa4, + 0x74, 0x8c, 0x42, 0x14, 0xdb, 0x0b, 0x9c, 0xcc, 0xd1, 0xca, + 0xe1, 0x4b, 0x31, 0x54, 0x83, 0xbd, 0xc7, 0x4c, 0xf6, 0x16, + 0x98, 0x3f, 0x8a, 0xd2, 0x93, 0x6a, 0x1a, 0xa1, 0xbd, 0x88, + 0xa3, 0xf1, 0xca, 0x48, 0x80, 0x71, 0x90, 0xf0, 0x9d, 0x9a, + 0x49, 0x6c, 0xf5, 0x22, 0x95, 0xa3, 0x1c, 0xdd, 0x6c, 0x59, + 0x67, 0x47, 0xb2, 0x09, 0xb4, 0x6b, 0x70, 0x94, 0x84, 0x3b, + 0x3f, 0x75, 0xfa, 0x66, 0xf3, 0x5c, 0xed, 0x49, 0xb8, 0x85, + 0xd6, 0x31, 0x7d, 0x72, 0x20, 0xe8, 0x1d, 0x24, 0x1a, 0x41, + 0x31, 0xe6, 0xcf, 0x09, 0x0f, 0xca, 0x53, 0x77, 0xea, 0x95, + 0xf6, 0x5b, 0x33, 0x98, 0x90, 0xd5, 0x3e, 0x3f, 0x70, 0xf3, + 0x7e, 0x5a, 0x42, 0x08, 0xe6, 0xc1, 0x61, 0x6d, 0x45, 0xc4, + 0xeb, 0x7a, 0x01, 0x8f, 0x85, 0xaf, 0xdd, 0xce, 0x03, 0xfa, + 0x6b, 0x29, 0x3c, 0xbb, 0x2f, 0xda, 0x62, 0xa0, 0xdb, 0xe0, + 0x82, 0xbc, 0x03, 0x83, 0xae, 0x1b, 0x5d, 0x90, 0x8f, 0x78, + 0x0f, 0x47, 0x91, 0xef, 0xc4, 0x1e, 0xba, 0x24, 0x3c, 0xae, + 0x8f, 0x1f, 0x2e, 0x11, 0x5e, 0xaf, 0xcc, 0x25, 0x05, 0xd2, + 0xe1, 0xa6, 0xa3, 0xb6, 0x8f, 0x67, 0xe0, 0x7d, 0xd4, 0xf5, + 0x1e, 0xbc, 0xf6, 0x6d, 0x31, 0x50, 0xed, 0x2d, 0x50, 0x7e, + 0x5a, 0x66, 0xf4, 0xcf, 0x65, 0xda, 0xcd, 0x84, 0xf1, 0x9c, + 0xec, 0xdc, 0xe0, 0x29, 0x26, 0x19, 0x52, 0xa9, 0xe3, 0x87, + 0xbf, 0xdc, 0x22, 0x07, 0xd9, 0xb7, 0x53, 0xf0, 0x14, 0x5e, + 0xd6, 0x9b, 0xbc, 0x03, 0x3c, 0x15, 0x10, 0x71, 0xb6, 0x48, + 0x09, 0xd0, 0xa4, 0x57, 0xdf, 0x99, 0xd3, 0x45, 0xf1, 0x3d, + 0xa2, 0x75, 0x32, 0x34, 0x7f, 0xd1, 0xb3, 0xa9, 0xda, 0x2a, + 0x50, 0xbb, 0xde, 0x29, 0xb5, 0x0c, 0xf0, 0x54, 0x40, 0x07, + 0x9d, 0xe3, 0x24, 0xc6, 0xd5, 0x9f, 0xbe, 0xc4, 0xc2, 0x65, + 0x4b, 0xfb, 0x01, 0x56, 0x98, 0xa6, 0x14, 0x69, 0xa4, 0xf7, + 0x9f, 0x60, 0xab, 0x15, 0x91, 0x51, 0x2a, 0x36, 0x3e, 0xb9, + 0xe3, 0xfe, 0x9e, 0x9a, 0x82, 0xfd, 0x59, 0x97, 0xae, 0xe3, + 0x45, 0x07, 0x05, 0x46, 0x31, 0x2d, 0xe7, 0x73, 0x52, 0x88, + 0x11, 0xc9, 0x70, 0xf2, 0x51, 0x34, 0x5b, 0x86, 0x68, 0xc2, + 0xf3, 0xae, 0x2b, 0x2e, 0xa1, 0x58, 0x0b, 0x1c, 0xb7, 0x3f, + 0x12, 0xfa, 0x4e, 0xff, 0x37, 0xe2, 0x36, 0x4c, 0xa9, 0x87, + 0x3e, 0x54, 0xeb, 0x49, 0x2b, 0x11, 0x8f, 0x22, 0x0d, 0x6c, + 0x44, 0x31, 0x52, 0x21, 0x72, 0x33, 0xe2, 0x32, 0x97, 0x6f, + 0x0f, 0xb5, 0x1d, 0x23, 0xf1, 0x05, 0x46, 0x72, 0x27, 0x33, + 0xa5, 0xd3, 0xa9, 0x62, 0x9d, 0x15, 0x50, 0xbe, 0xf4, 0x77, + 0xf0, 0x82, 0xee, 0xaa, 0xdf, 0x92, 0xaf, 0xad, 0x94, 0x4f, + 0xd0, 0x67, 0xf7, 0xa7, 0xd3, 0x12, 0x20, 0x8d, 0x24, 0x3c, + 0xb6, 0xc7, 0x83, 0x1b, 0xac, 0xe9, 0xb4, 0x58, 0x07, 0xa6, + 0xff, 0xd7, 0x1e, 0x81, 0x6d, 0x84, 0xc2, 0x83, 0xcc, 0x5d, + 0xf3, 0xd0, 0x1a, 0xd5, 0xc7, 0xcd, 0x47, 0xb7, 0x44, 0x80, + 0xad, 0x9e, 0xc9, 0x8c, 0xed, 0x0d, 0x6f, 0xa5, 0x5c, 0xbb, + 0xd7, 0xeb, 0x15, 0xd1, 0x53, 0x34, 0x61, 0xcd, 0x3f, 0xef, + 0x7b, 0x58, 0x8a, 0xf3, 0x26, 0x0a, 0xc6, 0xf7, 0x8b, 0x5b, + 0x5c, 0x95, 0xb6, 0x8f, 0x5e, 0x4f, 0x1d, 0x97, 0x12, 0x9b, + 0x2b, 0x81, 0x44, 0x70, 0xa0, 0xb5, 0x7f, 0x52, 0xa9, 0x18, + 0x23, 0xa8, 0x80, 0x0e, 0xf9, 0x05, 0x48, 0x4f, 0x69, 0xfd, + 0xf5, 0xf8, 0x75, 0x2d, 0x33, 0x64, 0xdc, 0x68, 0xc4, 0x84, + 0xa8, 0xf4, 0xff, 0xbd, 0x95, 0x07, 0x28, 0xbc, 0x6f, 0xf5, + 0xbb, 0x06, 0x78, 0x2a, 0x20, 0xe2, 0xaf, 0x90, 0x12, 0x63, + 0x8b, 0xae, 0x57, 0x90, 0xc3, 0xe2, 0xe3, 0x23, 0xf9, 0xf7, + 0x92, 0xd8, 0x29, 0x44, 0xe9, 0x85, 0x38, 0x79, 0xb2, 0x4f, + 0x31, 0xad, 0x9e, 0xfa, 0x15, 0xe4, 0x29, 0x89, 0xc7, 0x51, + 0xa3, 0x06, 0x42, 0xec, 0x24, 0x37, 0x9c, 0x3d, 0x6e, 0x07, + 0x6c, 0x98, 0x91, 0xcd, 0x7c, 0xa8, 0x15, 0x92, 0x56, 0x22, + 0xcf, 0xbe, 0x54, 0x27, 0xbf, 0x80, 0x92, 0x0e, 0x4d, 0xe1, + 0x39, 0x30, 0x06, 0x97, 0x35, 0xb8, 0x89, 0x86, 0x95, 0x08, + 0xcf, 0xd0, 0x58, 0x78, 0xcb, 0xc5, 0x6a, 0x2e, 0x75, 0xf6, + 0x80, 0xf3, 0xdd, 0x44, 0x1a, 0xd8, 0x88, 0x62, 0xa4, 0x42, + 0xe4, 0x66, 0x07, 0x64, 0xed, 0xde, 0x1e, 0xa9, 0x55, 0x4d, + 0x0a, 0x7f, 0x9a, 0x7c, 0xff, 0xc0, 0x44, 0x8a, 0x51, 0xf1, + 0xb7, 0xf2, 0xfc, 0xfa, 0x2b, 0xee, 0x23, 0xc7, 0x1f, 0x97, + 0x7d, 0xe7, 0x9d, 0x99, 0xeb, 0x9e, 0x63, 0xce, 0x2d, 0x8d, + 0x9b, 0x7c, 0xdb, 0xf7, 0xf8, 0x32, 0x6e, 0x34, 0x62, 0x42, + 0x54, 0x7a, 0x9e, 0xbf, 0xab, 0xe2, 0xeb, 0x89, 0xc8, 0x1a, + 0xd1, 0x87, 0xfe, 0x96, 0xdc, 0x2c, 0x45, 0x98, 0x13, 0x05, + 0x63, 0x9a, 0xce, 0x31, 0xd1, 0x88, 0x62, 0x4e, 0x91, 0xf4, + 0x26, 0xc8, 0x05, 0x8b, 0x29, 0x4d, 0x57, 0x18, 0xe5, 0xdf, + 0xf2, 0x4f, 0x7d, 0xd9, 0xec, 0x13, 0xbb, 0x51, 0xee, 0x15, + 0x4a, 0x83, 0x7a, 0x95, 0xb1, 0x1d, 0x7d, 0x9f, 0x3a, 0x6b, + 0x10, 0x29, 0x94, 0xf2, 0x83, 0x5f, 0xd2, 0xab, 0xe4, 0xcf, + 0x22, 0x93, 0x04, 0x59, 0xe5, 0xe6, 0x66, 0xc1, 0x28, 0x3b, + 0xf4, 0xb4, 0xf7, 0x0b, 0xd9, 0x64, 0xbd, 0x96, 0x8e, 0x57, + 0xef, 0x6a, 0x04, 0x9b, 0x25, 0xdd, 0x50, 0x67, 0xd5, 0x5a, + 0x39, 0x43, 0xe9, 0x54, 0x01, 0x87, 0xa8, 0xd8, 0xf8, 0xa1, + 0x0a, 0x7e, 0x3d, 0x2d, 0x4d, 0x72, 0xa7, 0x19, 0x23, 0x1c, + 0x81, 0xf6, 0x38, 0x28, 0x65, 0x3b, 0x43, 0x12, 0xc8, 0x0f, + 0xd8, 0xd1, 0xbb, 0xc4, 0x75, 0x03, 0xc7, 0xbb, 0x06, 0xc5, + 0x9f, 0x36, 0xba, 0xe3, 0xdd, 0xf0, 0x1e, 0x8e, 0xe1, 0x1d, + 0x9f, 0x05, 0x8a, 0x0e, 0x0a, 0x8c, 0x62, 0x5a, 0x0d, 0xe6, + 0xa4, 0xd3, 0x22, 0x51, 0xe0, 0x27, 0xa2, 0x68, 0xb6, 0xcf, + 0xd0, 0x47, 0x25, 0x9f, 0x56, 0x5c, 0x81, 0xb0, 0x16, 0x38, + 0xad, 0x7e, 0x0f, 0xd9, 0xbf, 0xfa, 0x71, 0x90, 0x11, 0x7f, + 0x0c, 0x54, 0x97, 0x36, 0x76, 0x5c, 0x7b, 0xaf, 0x54, 0xc2, + 0x8f, 0xd0, 0x47, 0xb2, 0xfc, 0x3a, 0x2f, 0xa3, 0x6d, 0x4a, + 0x98, 0x28, 0x9e, 0x5a, 0x86, 0x5f, 0x2a, 0xf2, 0xbe, 0x40, + 0x49, 0x07, 0xc7, 0x91, 0xfd, 0x18, 0x03, 0xaa, 0xfb, 0x5c, + 0x93, 0x8e, 0x79, 0xc6, 0xdf, 0x8d, 0x76, 0xe8, 0xbc, 0xc9, + 0x77, 0xeb, 0x25, 0xa0, 0x3d, 0xab, 0x5a, 0x94, 0xb5, 0x85, + 0xeb, 0xec, 0xee, 0xbf, 0x48, 0xde, 0xc6, 0xc7, 0xc1, 0xae, + 0x87, 0x55, 0x3d, 0x6d, 0x3c, 0xc1, 0xda, 0xcb, 0x47, 0xc5, + 0x5b, 0xba, 0x25, 0x63, 0x34, 0x69, 0x4d, 0x59, 0x94, 0xa5, + 0x64, 0x0d, 0x89, 0xa2, 0x7f, 0x4b, 0x6e, 0x16, 0xc3, 0x4c, + 0xe8, 0xe3, 0xd0, 0x4d, 0x56, 0x1f, 0x46, 0x4d, 0x3e, 0xed, + 0xfa, 0x0d, 0xf9, 0xf1, 0x15, 0xff, 0xc6, 0x5f, 0x5a, 0xd9, + 0xbf, 0x4b, 0x47, 0xca, 0x96, 0x35, 0x02, 0xac, 0xf3, 0x8f, + 0x28, 0xd2, 0x8b, 0x2d, 0xfd, 0xc0, 0x95, 0x2a, 0xe1, 0xa2, + 0x54, 0x6c, 0x7c, 0xb1, 0x05, 0x3f, 0xff, 0xf7, 0xc7, 0x39, + 0xb2, 0xed, 0xb9, 0xef, 0xdf, 0xae, 0x1d, 0xd4, 0x08, 0xf5, + 0x4a, 0x79, 0xa0, 0xce, 0x69, 0xb4, 0x72, 0x86, 0x11, 0xa8, + 0x02, 0xcd, 0x93, 0x73, 0x33, 0x81, 0x14, 0xfc, 0x7a, 0x5a, + 0x9a, 0xe4, 0x8d, 0x32, 0x0b, 0xa0, 0xee, 0x03, 0x83, 0x2e, + 0x1d, 0x11, 0x63, 0xf0, 0x67, 0x9f, 0xca, 0xb2, 0x30, 0x6a, + 0x71, 0x7a, 0x96, 0x42, 0xf4, 0x7b, 0x93, 0x58, 0xd5, 0x47, + 0x2d, 0x59, 0xa2, 0x60, 0xaa, 0xd8, 0xb0, 0x92, 0xf8, 0x30, + 0xe7, 0xa5, 0x13, 0xd3, 0xff, 0xdb, 0xbf, 0xe4, 0xfd, 0x71, + 0x86, 0x6f, 0x1c, 0xac, 0x74, 0xaa, 0x9b, 0xbc, 0x24, 0xc9, + 0xce, 0xfa, 0x95, 0xd9, 0xb2, 0xcf, 0x32, 0x1e, 0xdc, 0xcb, + 0x9f, 0x77, 0x55, 0xac, 0xa7, 0xb8, 0x8f, 0x4f, 0x3b, 0xdf, + 0xc2, 0x04, 0x7c, 0x09, 0xa8, 0x47, 0xdd, 0x63, 0x8e, 0xa7, + 0x3b, 0x74, 0x5e, 0x85, 0xda, 0x94, 0xf3, 0x50, 0xff, 0xb4, + 0xc1, 0xe8, 0x6e, 0x72, 0x13, 0xde, 0x80, 0x8b, 0x2a, 0x9c, + 0x92, 0xbd, 0x5f, 0x11, 0x2c, 0xb7, 0x2a, 0x61, 0xa6, 0x68, + 0xc2, 0x59, 0x7e, 0x1d, 0xf6, 0xb0, 0xd7, 0x25, 0x4c, 0x14, + 0x4f, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x3e, + 0x8c, 0x9a, 0x7c, 0x19, 0x37, 0x1a, 0x31, 0x21, 0x2a, 0x3d, + 0x4f, 0xbe, 0xb4, 0x71, 0x48, 0x6e, 0xfb, 0x7a, 0xdc, 0x0e, + 0xd8, 0xf3, 0xe1, 0x59, 0xf8, 0x93, 0x2a, 0xe7, 0xac, 0x44, + 0x7a, 0xda, 0x78, 0x41, 0x77, 0x55, 0x8e, 0x49, 0xb6, 0xb7, + 0x4a, 0xc6, 0x68, 0xd2, 0x9a, 0xb2, + }, + { + /* 2 */ + 0x47, 0x35, 0xef, 0xb5, 0xef, 0xef, 0x30, 0xe6, 0xaf, 0xa0, + 0x89, 0x86, 0x13, 0x85, 0x5f, 0xe6, 0xe9, 0x63, 0xba, 0xe4, + 0xba, 0xba, 0x98, 0x67, 0x18, 0xd6, 0x5a, 0x94, 0x21, 0x7c, + 0xa5, 0x67, 0x8f, 0xb2, 0x8e, 0xde, 0x8e, 0x8e, 0xf7, 0x86, + 0xb8, 0x77, 0x64, 0xab, 0x6e, 0x29, 0x15, 0x86, 0x4e, 0xe2, + 0x6e, 0xfc, 0x6e, 0x6e, 0x95, 0xad, 0x61, 0xf8, 0xdd, 0x44, + 0x5e, 0x69, 0xe5, 0xad, 0x03, 0xab, 0x76, 0x99, 0x76, 0x76, + 0x7a, 0x58, 0x6f, 0xdf, 0x1c, 0xac, 0xd8, 0xe3, 0x3e, 0x58, + 0xcf, 0xca, 0x1e, 0xed, 0x1e, 0x1e, 0xa4, 0x59, 0xec, 0x5e, + 0x60, 0xd2, 0x46, 0x49, 0x9d, 0x59, 0x0c, 0xe9, 0x1b, 0x21, + 0x1b, 0x1b, 0x2b, 0xa3, 0x7f, 0xfa, 0x70, 0xf5, 0xe6, 0x0a, + 0xf8, 0xa3, 0xba, 0xae, 0x78, 0x32, 0x78, 0x78, 0xd5, 0xa7, + 0x36, 0xbb, 0x43, 0xce, 0xdb, 0xe7, 0x31, 0xa7, 0x12, 0x6d, + 0xc1, 0x92, 0xc1, 0xc1, 0x89, 0x96, 0x5f, 0xb0, 0xa8, 0x47, + 0x9a, 0x1b, 0xb7, 0x96, 0xf0, 0xaa, 0x1f, 0xd1, 0x1f, 0x1f, + 0x59, 0x6b, 0xc3, 0x15, 0x0f, 0xd9, 0x66, 0x88, 0x3d, 0x6b, + 0x2b, 0x98, 0x2c, 0x5f, 0x2c, 0x2c, 0x80, 0x14, 0xae, 0x86, + 0xff, 0xd7, 0xc9, 0xdf, 0x6b, 0x14, 0x2c, 0xd5, 0x53, 0xd9, + 0x53, 0x53, 0xe3, 0x2d, 0x55, 0x0f, 0x72, 0x28, 0xf2, 0x3a, + 0xbc, 0x2d, 0x32, 0x51, 0x89, 0x6a, 0x89, 0x89, 0x41, 0x18, + 0x75, 0x45, 0xaa, 0x9a, 0x8e, 0x2b, 0xf3, 0x18, 0x1b, 0xba, + 0x40, 0xdb, 0x40, 0x40, 0x2c, 0xdd, 0x91, 0xe8, 0xfc, 0x85, + 0xd7, 0xf7, 0x0d, 0xdd, 0xd2, 0xe5, 0xb2, 0xc7, 0xb2, 0xb2, + 0x7c, 0x34, 0xa3, 0xcb, 0xa4, 0xcc, 0xe2, 0xbb, 0xec, 0x34, + 0x08, 0x0f, 0x12, 0x3e, 0x12, 0x12, 0x32, 0xc2, 0xeb, 0xac, + 0xe1, 0xa6, 0x05, 0x0c, 0x11, 0xc2, 0xdd, 0xa7, 0xdf, 0x7f, + 0xdf, 0xdf, 0x2d, 0xcf, 0xb3, 0xee, 0xc8, 0x95, 0xdc, 0x52, + 0x2a, 0xcf, 0x60, 0x44, 0xd8, 0xcb, 0xd8, 0xd8, 0x9b, 0x51, + 0x7e, 0xdc, 0x06, 0xa4, 0x3c, 0x50, 0xcc, 0x51, 0x72, 0x29, + 0x19, 0x59, 0x19, 0x19, 0x12, 0xc7, 0x21, 0x6c, 0xae, 0xe3, + 0xa6, 0x4b, 0x7b, 0xc7, 0x11, 0xc6, 0xb7, 0x0b, 0xb7, 0xb7, + 0xf3, 0xce, 0x30, 0x6f, 0xb4, 0xeb, 0x42, 0xf8, 0x89, 0xce, + 0x06, 0x95, 0xec, 0xf1, 0xec, 0xec, 0xf4, 0xb0, 0xde, 0x7d, + 0x38, 0x9b, 0x73, 0x05, 0x7c, 0xb0, 0x5d, 0x57, 0x3c, 0x19, + 0x3c, 0x3c, 0x8b, 0xb2, 0x1b, 0xbc, 0xc0, 0x67, 0x8c, 0x92, + 0xf9, 0xb2, 0xe0, 0xb4, 0x3b, 0xad, 0x3b, 0x3b, 0x3d, 0x2c, + 0xd6, 0x8e, 0x0e, 0x56, 0x6c, 0x90, 0x1f, 0x2c, 0x86, 0x65, + 0x0f, 0x97, 0x0f, 0x0f, 0x52, 0xcd, 0x76, 0x2f, 0x30, 0x69, + 0x23, 0xc5, 0xaf, 0xcd, 0xaa, 0xb0, 0x5c, 0x4e, 0x5c, 0x5c, + 0xb1, 0xe0, 0x23, 0x20, 0x42, 0x41, 0xd1, 0xff, 0x13, 0xe0, + 0x58, 0x69, 0xa6, 0x71, 0xa6, 0xa6, 0x05, 0x5a, 0xaa, 0x1e, + 0xe4, 0x50, 0x27, 0x74, 0xbb, 0x5a, 0x24, 0xda, 0x41, 0xe7, + 0x41, 0x41, 0xd1, 0xef, 0xbe, 0xa3, 0x93, 0x8e, 0xf7, 0x36, + 0xad, 0xef, 0xdf, 0xd4, 0x3a, 0x91, 0x3a, 0x3a, 0xc0, 0x1e, + 0xf9, 0xc5, 0x61, 0x5d, 0x4c, 0x51, 0xbf, 0x1e, 0x69, 0x93, + 0x59, 0x82, 0x59, 0x59, 0x3e, 0x1a, 0xb0, 0x84, 0x52, 0x66, + 0x71, 0xbc, 0x76, 0x1a, 0x7a, 0x26, 0x0b, 0x67, 0x0b, 0x0b, + 0x20, 0x05, 0xca, 0xc0, 0x4f, 0x45, 0xa3, 0x47, 0x6a, 0x05, + 0x67, 0x09, 0xa7, 0x4d, 0xa7, 0xa7, 0xf8, 0x68, 0x85, 0x55, + 0x8b, 0x5b, 0x07, 0xb5, 0x1b, 0x68, 0xec, 0x5d, 0x20, 0x8c, + 0x20, 0x20, 0x16, 0x8f, 0xa9, 0x74, 0x7e, 0xa3, 0x8a, 0x9a, + 0xe7, 0x8f, 0x30, 0x22, 0x6c, 0x84, 0x6c, 0x6c, 0xac, 0xc9, + 0x3f, 0x6e, 0x03, 0x52, 0x1e, 0x28, 0x66, 0xc9, 0x6a, 0x38, + 0x2f, 0x1b, 0x2f, 0x2f, 0x44, 0x42, 0xdf, 0x5b, 0x4e, 0xca, + 0xa9, 0x5f, 0x48, 0x42, 0x0e, 0x9a, 0xfe, 0xcf, 0xfe, 0xfe, + 0xc6, 0x72, 0x35, 0xd1, 0xd9, 0x3d, 0x76, 0x09, 0x6d, 0x72, + 0x43, 0xd3, 0xe6, 0xaa, 0xe6, 0xe6, 0x29, 0x87, 0x3b, 0xf6, + 0x18, 0xd5, 0xf0, 0x83, 0xb6, 0x87, 0x2d, 0x0d, 0xc0, 0xae, + 0xc0, 0xc0, 0x74, 0xa4, 0x70, 0xfb, 0xc7, 0x4c, 0xba, 0xda, + 0x17, 0xa4, 0xb3, 0x79, 0xf9, 0x7b, 0xf9, 0xf9, 0x70, 0xec, + 0xf8, 0xe3, 0x17, 0x0c, 0x96, 0x0b, 0x8b, 0xec, 0xe4, 0x52, + 0x32, 0xb2, 0x32, 0x32, 0x24, 0x4d, 0x42, 0xd8, 0x9f, 0x05, + 0x8f, 0x96, 0xf6, 0x4d, 0x22, 0x4f, 0xad, 0x16, 0xad, 0xad, + 0x25, 0x5f, 0x60, 0xde, 0xab, 0x15, 0x84, 0x33, 0xd1, 0x5f, + 0xab, 0x68, 0xcf, 0x39, 0xcf, 0xcf, 0x26, 0x69, 0x06, 0xd4, + 0xf7, 0x25, 0x99, 0x1f, 0xb8, 0x69, 0x3d, 0x13, 0xe4, 0xd2, + 0xe4, 0xe4, 0x10, 0xe3, 0x65, 0x60, 0xc6, 0xc3, 0xb0, 0xc2, + 0x35, 0xe3, 0x34, 0xc4, 0x65, 0x9b, 0x65, 0x65, 0xb5, 0xa8, + 0xab, 0x38, 0x92, 0x01, 0xfd, 0x2e, 0x8f, 0xa8, 0x90, 0xee, + 0xc7, 0x1a, 0xc7, 0xc7, 0xc2, 0x3a, 0xbd, 0xc9, 0x09, 0x7d, + 0x5a, 0xd8, 0xf1, 0x3a, 0x97, 0xa3, 0xb8, 0x9c, 0xb8, 0xb8, + 0xa1, 0x03, 0x46, 0x40, 0x84, 0x82, 0x61, 0x3d, 0x26, 0x03, + 0xb0, 0xd2, 0x8f, 0xe2, 0x8f, 0x8f, 0x0a, 0xb4, 0x97, 0x3c, + 0x0b, 0xa0, 0x4e, 0xe8, 0xb5, 0xb4, 0xe5, 0x8a, 0xa1, 0xc5, + 0xa1, 0xa1, 0xb3, 0xc4, 0x67, 0x2c, 0x2a, 0x61, 0xc7, 0x76, + 0x5d, 0xc4, 0x42, 0x0b, 0x75, 0xdd, 0x75, 0x75, 0xbe, 0x0e, + 0x1e, 0x02, 0xad, 0xb1, 0xb8, 0x63, 0x1d, 0x0e, 0x79, 0x8d, + 0x7d, 0xfe, 0x7d, 0x7d, 0x5a, 0x5d, 0xa5, 0x1f, 0x53, 0xe9, + 0x7b, 0xa4, 0x54, 0x5d, 0xc0, 0x88, 0x73, 0x55, 0x73, 0x73, + 0xf5, 0xa2, 0xfc, 0x7b, 0x0c, 0x8b, 0x78, 0xa0, 0x5b, 0xa2, + 0x18, 0x11, 0x36, 0x42, 0x36, 0x36, 0x56, 0x85, 0xfe, 0x37, + 0xe0, 0x29, 0x0f, 0x14, 0x33, 0x85, 0x4b, 0xdc, 0xf4, 0x94, + 0xf4, 0xf4, 0x1b, 0x45, 0xd0, 0x5a, 0xf9, 0x73, 0xf5, 0x8f, + 0xa7, 0x45, 0xf7, 0xe7, 0x60, 0x57, 0x60, 0x60, 0x3a, 0x52, + 0x38, 0x9c, 0x82, 0x26, 0x5d, 0x6d, 0xea, 0x52, 0xb8, 0xdd, + 0x9d, 0xdc, 0x9d, 0x9d, 0x38, 0x76, 0x7c, 0x90, 0xea, 0x06, + 0x4b, 0xe4, 0xa4, 0x76, 0xa6, 0x59, 0x47, 0x6f, 0x47, 0x47, + 0x9a, 0x43, 0x5c, 0xda, 0x32, 0xb4, 0x37, 0xf5, 0xeb, 0x43, + 0x59, 0xb1, 0x35, 0x06, 0x35, 0x35, 0x92, 0xd3, 0x8f, 0xea, + 0x51, 0x34, 0x6f, 0x94, 0x10, 0xd3, 0x64, 0xa2, 0xd1, 0xd4, + 0xd1, 0xd1, 0x82, 0x30, 0xea, 0x8a, 0x97, 0xf7, 0xdf, 0x56, + 0x25, 0x30, 0x36, 0xb7, 0x80, 0x75, 0x80, 0x80, 0x58, 0x79, + 0xe1, 0x13, 0x3b, 0xc9, 0x6d, 0x2d, 0x1a, 0x79, 0xb4, 0x34, + 0x86, 0xfd, 0x86, 0x86, 0x13, 0xd5, 0x03, 0x6a, 0x9a, 0xf3, + 0xad, 0xee, 0x5c, 0xd5, 0x81, 0x28, 0x70, 0x11, 0x70, 0x70, + 0x31, 0xf4, 0x8d, 0xa6, 0xbd, 0x96, 0x18, 0x20, 0x78, 0xf4, + 0x09, 0xd7, 0x81, 0x49, 0x81, 0x81, 0xa5, 0x4b, 0xce, 0x58, + 0x54, 0xc2, 0x4d, 0xec, 0xba, 0x4b, 0x78, 0x55, 0xee, 0x89, + 0xee, 0xee, 0xcd, 0xd4, 0x80, 0xeb, 0xe6, 0x8d, 0x33, 0x44, + 0xff, 0xd4, 0xed, 0x85, 0xb3, 0xfb, 0xb3, 0xb3, 0x81, 0x06, + 0x8c, 0x80, 0xcb, 0xc7, 0xc2, 0x7a, 0x4c, 0x06, 0x5f, 0x24, + 0xd9, 0xf7, 0xd9, 0xd9, 0x66, 0x63, 0x51, 0x97, 0x69, 0xaf, + 0x1c, 0x91, 0x6c, 0x63, 0xda, 0xea, 0xa0, 0xf9, 0xa0, 0xa0, + 0x4e, 0xf6, 0x48, 0x67, 0x45, 0x6a, 0xe7, 0xb7, 0xfd, 0xf6, + 0xc4, 0x6e, 0x7a, 0x4a, 0x7a, 0x7a, 0xec, 0xc3, 0x68, 0x2d, + 0x9d, 0xd8, 0x9b, 0xa6, 0xb2, 0xc3, 0x29, 0xeb, 0xc9, 0xb1, + 0xc9, 0xc9, 0x6d, 0xc5, 0xe4, 0xad, 0x56, 0x1f, 0x59, 0xdc, + 0xfe, 0xc5, 0xad, 0xfd, 0x23, 0xc8, 0x23, 0x23, 0xd2, 0xd9, + 0xd8, 0xa9, 0xcf, 0xbe, 0xea, 0x1a, 0xc4, 0xd9, 0x07, 0x4d, + 0x7f, 0x86, 0x7f, 0x7f, 0x63, 0x39, 0xfb, 0x89, 0x8d, 0xff, + 0x3b, 0xe5, 0xd7, 0x39, 0x82, 0x83, 0x06, 0x88, 0x06, 0x06, + 0x4b, 0xac, 0xe2, 0x79, 0xa1, 0x3a, 0xc0, 0xc3, 0x46, 0xac, + 0xe2, 0xc7, 0xde, 0x43, 0xde, 0xde, 0xd0, 0xfd, 0x9c, 0xa5, + 0xa7, 0x9e, 0xfc, 0x93, 0x8a, 0xfd, 0x31, 0xfa, 0xff, 0xf3, + 0xff, 0xff, 0x3b, 0x40, 0x1a, 0x9a, 0xb6, 0x36, 0x56, 0xc8, + 0xcd, 0x40, 0x17, 0x53, 0x5b, 0xfa, 0x5b, 0x5b, 0x07, 0x7e, + 0xee, 0x12, 0x8c, 0x70, 0x31, 0xfd, 0xf5, 0x7e, 0x9f, 0xac, + 0xaa, 0xa2, 0xaa, 0xaa, 0x93, 0xc1, 0xad, 0xec, 0x65, 0x24, + 0x64, 0x31, 0x37, 0xc1, 0x0b, 0xa4, 0x64, 0xa7, 0x64, 0x64, + 0x48, 0x9a, 0x84, 0x73, 0xfd, 0x0a, 0xdd, 0xef, 0x2f, 0x9a, + 0x16, 0x8b, 0xc8, 0x8d, 0xc8, 0xc8, 0x90, 0xf7, 0xcb, 0xe6, + 0x39, 0x14, 0x79, 0x1d, 0x5e, 0xf7, 0x7f, 0x18, 0x91, 0x0f, + 0x91, 0x91, 0xae, 0xed, 0x7b, 0x62, 0x6b, 0x72, 0x08, 0xa1, + 0x28, 0xed, 0x23, 0x97, 0x3e, 0x61, 0x3e, 0x3e, 0xb2, 0xd6, + 0x45, 0x2a, 0x1e, 0x71, 0xcc, 0xd3, 0x7a, 0xd6, 0x6b, 0xe0, + 0xbc, 0x6c, 0xbc, 0xbc, 0xd3, 0xcb, 0xfa, 0xaf, 0xfb, 0xae, + 0xe1, 0xbf, 0xe3, 0xcb, 0xa9, 0x1b, 0x2a, 0xd7, 0x2a, 0x2a, + 0xcb, 0xb8, 0x4c, 0xff, 0x5e, 0xed, 0x09, 0x1c, 0x2d, 0xb8, + 0x8b, 0x54, 0x87, 0xc1, 0x87, 0x87, 0xee, 0xe7, 0x2c, 0x21, + 0xf5, 0xf8, 0x8d, 0x2f, 0xfc, 0xe7, 0xb7, 0x9f, 0xf0, 0x64, + 0xf0, 0xf0, 0x69, 0x8d, 0x6c, 0xb5, 0x86, 0x5f, 0x75, 0x0d, + 0x62, 0x8d, 0x13, 0xb5, 0x52, 0xe5, 0x52, 0x52, 0x1e, 0x1f, + 0x7a, 0x44, 0x1d, 0x23, 0xd2, 0xfb, 0x1c, 0x1f, 0x1c, 0xf7, + 0x3f, 0x5d, 0x3f, 0x3f, 0x4f, 0xe4, 0x6a, 0x61, 0x71, 0x7a, + 0xec, 0x12, 0xda, 0xe4, 0xfb, 0x0e, 0x7b, 0x76, 0x7b, 0x7b, + 0x11, 0xf1, 0x47, 0x66, 0xf2, 0xd3, 0xbb, 0x67, 0x12, 0xf1, + 0x62, 0x37, 0x3d, 0x25, 0x3d, 0x3d, 0x76, 0x80, 0x34, 0xf7, + 0xaf, 0x6c, 0xac, 0x53, 0x59, 0x80, 0xf2, 0xd9, 0xfa, 0x3f, + 0xfa, 0xfa, 0xb4, 0xba, 0x89, 0x3e, 0xa6, 0x11, 0xf6, 0x8b, + 0xa8, 0xba, 0x3b, 0x86, 0x08, 0x23, 0x08, 0x08, 0xe4, 0x53, + 0xbb, 0x1d, 0xfe, 0x58, 0xc3, 0xc7, 0x49, 0x53, 0x9a, 0x92, + 0x30, 0xca, 0x30, 0x30, 0x1d, 0x29, 0x1c, 0x4e, 0x41, 0x13, + 0xcf, 0xd7, 0x75, 0x29, 0x75, 0x64, 0x66, 0xdf, 0x66, 0x66, + 0x71, 0xfe, 0xda, 0xe5, 0x23, 0x1c, 0x9d, 0xae, 0xac, 0xfe, + 0xea, 0xc8, 0xcc, 0x7d, 0xcc, 0xcc, 0xe2, 0x3f, 0x77, 0x09, + 0x46, 0x38, 0xf9, 0x9f, 0x9b, 0x3f, 0xd0, 0x96, 0x57, 0x29, + 0x57, 0x57, 0x91, 0xe5, 0xe9, 0xe0, 0x0d, 0x04, 0x72, 0xb8, + 0x79, 0xe5, 0x2a, 0x40, 0xbf, 0x28, 0xbf, 0xbf, 0x17, 0x9d, + 0x8b, 0x72, 0x4a, 0xb3, 0x81, 0x3f, 0xc0, 0x9d, 0x91, 0x36, + 0x54, 0x6d, 0x54, 0x54, 0x55, 0xb3, 0x98, 0x3d, 0xbc, 0x19, + 0x12, 0x38, 0x5a, 0xb3, 0x02, 0x73, 0xe5, 0xee, 0xe5, 0xe5, + 0xed, 0xd1, 0x4a, 0x2b, 0xa9, 0xc8, 0x90, 0x03, 0x95, 0xd1, + 0x46, 0xed, 0x7c, 0xc2, 0x7c, 0x7c, 0xa7, 0x6f, 0x8a, 0x54, + 0x3c, 0xe2, 0x5b, 0x65, 0xf4, 0x6f, 0xa7, 0x81, 0xd4, 0x18, + 0xd4, 0xd4, 0x0d, 0xca, 0x79, 0x2e, 0x87, 0xd0, 0x7f, 0x15, + 0x40, 0xca, 0xdc, 0x7f, 0x4c, 0x08, 0x4c, 0x4c, 0xba, 0x46, + 0x96, 0x1a, 0x7d, 0xf1, 0x94, 0xb2, 0x81, 0x46, 0x27, 0x71, + 0x37, 0x7e, 0x37, 0x37, 0xab, 0xb7, 0xd1, 0x7c, 0x8f, 0x22, + 0x2f, 0xd5, 0x93, 0xb7, 0x76, 0xcf, 0x10, 0x46, 0x10, 0x10, + 0x0b, 0xa6, 0xb5, 0x3a, 0x3f, 0xb0, 0x45, 0x4d, 0x92, 0xa6, + 0xa4, 0x2a, 0xa2, 0x81, 0xa2, 0xa2, 0x77, 0x92, 0x16, 0xf1, + 0x9b, 0x7c, 0xa7, 0xf6, 0x7e, 0x92, 0xca, 0xf4, 0x84, 0x85, + 0x84, 0x84, 0x2a, 0xb1, 0x5d, 0xfc, 0x44, 0xe5, 0xed, 0xaf, + 0xdf, 0xb1, 0x96, 0x7b, 0x2b, 0xeb, 0x2b, 0x2b, 0x36, 0x8a, + 0x63, 0xb4, 0x31, 0xe6, 0x29, 0xdd, 0x8d, 0x8a, 0x70, 0x5a, + 0xfc, 0xb7, 0xfc, 0xfc, 0xff, 0x16, 0x6b, 0x47, 0x07, 0x2b, + 0x36, 0x48, 0xee, 0x16, 0x54, 0x80, 0xbd, 0x50, 0xbd, 0xbd, + 0x2e, 0xf9, 0xd5, 0xe4, 0x94, 0xa5, 0xc1, 0x7e, 0x43, 0xf9, + 0xe1, 0x6c, 0xa8, 0xda, 0xa8, 0xa8, 0xaa, 0xa5, 0xf3, 0x7a, + 0xbb, 0x32, 0x24, 0x70, 0xb4, 0xa5, 0x6f, 0x06, 0xb5, 0x73, + 0xb5, 0xb5, 0xca, 0xaa, 0x6e, 0xf9, 0x6a, 0xfd, 0x02, 0xb9, + 0x0a, 0xaa, 0x39, 0xf5, 0xed, 0xcd, 0xed, 0xed, 0x09, 0x82, + 0xf1, 0x36, 0x57, 0x90, 0x53, 0xc4, 0xdc, 0x82, 0x33, 0x89, + 0x1a, 0x1d, 0x1a, 0x1a, 0xd6, 0x91, 0x50, 0xb1, 0x1f, 0xfe, + 0xc6, 0xcb, 0x58, 0x91, 0xdb, 0x32, 0x33, 0x8e, 0x33, 0x33, + 0xd9, 0x7f, 0x6d, 0x93, 0xf0, 0x0e, 0xaf, 0x57, 0x56, 0x7f, + 0xa0, 0xcc, 0xab, 0x9e, 0xab, 0xab, 0x6e, 0xf3, 0x82, 0xa7, + 0x0a, 0x2f, 0x44, 0xf0, 0x97, 0xf3, 0xfe, 0x30, 0xe1, 0x1e, + 0xe1, 0xe1, 0x9f, 0x19, 0xf6, 0xc4, 0xd6, 0xe4, 0x10, 0x81, + 0x50, 0x19, 0xb2, 0xa1, 0x6a, 0x0c, 0x6a, 0x6a, 0xe7, 0x65, + 0xdd, 0x17, 0xa2, 0x68, 0xde, 0xeb, 0x20, 0x65, 0x10, 0x1e, + 0x24, 0x7c, 0x24, 0x24, 0x64, 0x47, 0x15, 0x9b, 0x01, 0x8f, + 0x0a, 0x18, 0x22, 0x47, 0x71, 0x82, 0x6f, 0xc0, 0x6f, 0x6f, + 0x68, 0x9f, 0x4e, 0xb3, 0xb2, 0x4f, 0x7e, 0xa8, 0x45, 0x9f, + 0x87, 0xbd, 0x9c, 0xe0, 0x9c, 0x9c, 0xc5, 0x44, 0x53, 0xdb, + 0x85, 0x0d, 0x6b, 0x25, 0x04, 0x44, 0x35, 0x1c, 0xf6, 0xec, + 0xf6, 0xf6, 0x22, 0x21, 0x8e, 0xcc, 0x27, 0x65, 0xb5, 0xce, + 0x24, 0x21, 0x38, 0x2d, 0x7e, 0xba, 0x7e, 0x7e, 0x9e, 0x0b, + 0xd4, 0xc2, 0xe2, 0xf4, 0x1b, 0x24, 0x77, 0x0b, 0x52, 0x15, + 0x51, 0xa1, 0x51, 0x51, 0xda, 0x49, 0x0b, 0x99, 0xac, 0x3e, + 0xb2, 0x7b, 0x3f, 0x49, 0x65, 0x7a, 0x42, 0xa3, 0x42, 0x42, + 0x15, 0xb9, 0xcf, 0x7e, 0x22, 0x93, 0x97, 0xb6, 0x8e, 0xb9, + 0xde, 0x0c, 0xa9, 0xe6, 0xa9, 0xa9, 0x57, 0x97, 0xdc, 0x31, + 0xd4, 0x39, 0x04, 0xb1, 0x14, 0x97, 0x8e, 0x6a, 0x1d, 0xa9, + 0x1d, 0x1d, 0x60, 0x0f, 0x9d, 0x83, 0xd1, 0xcf, 0x26, 0xc9, + 0xbe, 0x0f, 0xa8, 0xc3, 0xb9, 0xa0, 0xb9, 0xb9, 0x5c, 0x31, + 0x69, 0x0b, 0xeb, 0x89, 0x41, 0xfc, 0x86, 0x31, 0xfd, 0x9b, + 0x97, 0x87, 0x97, 0x97, 0xe5, 0x41, 0x99, 0x1b, 0xca, 0x48, + 0xc8, 0x62, 0x6e, 0x41, 0x2e, 0xa6, 0xb6, 0x37, 0xb6, 0xb6, + 0x0e, 0xfc, 0x1f, 0x24, 0xdb, 0xe0, 0x62, 0x39, 0x29, 0xfc, + 0x01, 0xd8, 0x93, 0x77, 0x93, 0x93, 0x97, 0x89, 0x25, 0xf4, + 0xb5, 0x64, 0x48, 0xe0, 0xab, 0x89, 0xf8, 0xa5, 0x0d, 0xef, + 0x0d, 0x0d, 0x6b, 0xa9, 0x28, 0xb9, 0xee, 0x7f, 0x63, 0x84, + 0x2c, 0xa9, 0x8c, 0x19, 0xf8, 0x47, 0xf8, 0xf8, 0x8d, 0xde, + 0xd7, 0xa8, 0x78, 0x07, 0xb6, 0xca, 0x2b, 0xde, 0xbb, 0x76, + 0xeb, 0x45, 0xeb, 0xeb, 0x42, 0x2e, 0x13, 0x4f, 0xf6, 0xaa, + 0x93, 0x07, 0x9a, 0x2e, 0x49, 0xaf, 0x11, 0x7a, 0x11, 0x11, + 0xf6, 0x94, 0x9a, 0x71, 0x50, 0xbb, 0x65, 0x8c, 0x32, 0x94, + 0x44, 0x9e, 0x99, 0x2c, 0x99, 0x99, 0x4a, 0xbe, 0xc0, 0x7f, + 0x95, 0x2a, 0xcb, 0x66, 0x61, 0xbe, 0xbf, 0x90, 0xe2, 0x5a, + 0xe2, 0xe2, 0x5b, 0x4f, 0x87, 0x19, 0x67, 0xf9, 0x70, 0x01, + 0x73, 0x4f, 0xef, 0xf6, 0x56, 0x15, 0x56, 0x56, 0x6c, 0xd7, + 0xc6, 0xab, 0x62, 0x0f, 0x52, 0x79, 0xd9, 0xd7, 0xfc, 0x43, + 0x04, 0xf0, 0x04, 0x04, 0x72, 0xc8, 0xbc, 0xef, 0x7f, 0x2c, + 0x80, 0x82, 0xc5, 0xc8, 0x3a, 0x5e, 0x9b, 0x54, 0x9b, 0x9b, + 0x73, 0xda, 0x9e, 0xe9, 0x4b, 0x3c, 0x8b, 0x27, 0xe2, 0xda, + 0xb1, 0x0a, 0x1c, 0x95, 0x1c, 0x1c, 0x9d, 0x3d, 0xb2, 0xc8, + 0xbe, 0xc4, 0x06, 0x08, 0x1e, 0x3d, 0xf9, 0x7d, 0x9e, 0x98, + 0x9e, 0x9e, 0xfc, 0x20, 0x0d, 0x4d, 0x5b, 0x1b, 0x2b, 0x64, + 0x87, 0x20, 0x99, 0x39, 0x46, 0x53, 0x46, 0x46, 0x67, 0x71, + 0x73, 0x91, 0x5d, 0xbf, 0x17, 0x34, 0x4b, 0x71, 0xd8, 0x99, + 0x45, 0x17, 0x45, 0x45, 0xa3, 0x27, 0x02, 0x4c, 0xec, 0xa2, + 0x77, 0xb4, 0x68, 0x27, 0xc9, 0x5f, 0xf2, 0x1c, 0xf2, 0xf2, + 0x50, 0xe9, 0x32, 0x23, 0x58, 0x49, 0x35, 0x4c, 0xe1, 0xe9, + 0x61, 0x9c, 0x4b, 0xbc, 0x4b, 0x4b, 0x0c, 0xd8, 0x5b, 0x28, + 0xb3, 0xc0, 0x74, 0xb0, 0x67, 0xd8, 0x3c, 0xcb, 0x77, 0xa5, + 0x77, 0x77, 0x87, 0x6a, 0x40, 0x94, 0x73, 0xa7, 0xf8, 0x22, + 0x9e, 0x6a, 0x89, 0x27, 0x62, 0x2f, 0x62, 0x62, 0x03, 0x36, + 0x66, 0x0a, 0x5c, 0x30, 0x1d, 0x2c, 0x69, 0x36, 0x0f, 0x42, + 0x6d, 0xb8, 0x6d, 0x6d, 0x51, 0xfb, 0x10, 0x25, 0x6c, 0x59, + 0x3e, 0xe9, 0xc6, 0xfb, 0x5c, 0x8f, 0xaf, 0x6e, 0xaf, 0xaf, + 0x1c, 0x3b, 0x3e, 0x48, 0x75, 0x03, 0xc4, 0x72, 0x52, 0x3b, + 0xbe, 0x48, 0x71, 0x2d, 0x71, 0x71, 0xcc, 0xc6, 0xa2, 0xed, + 0xd2, 0x9d, 0x38, 0xe1, 0xd8, 0xc6, 0xc2, 0xfb, 0x96, 0xbb, + 0x96, 0x96, 0x18, 0x73, 0xb6, 0x50, 0xa5, 0x43, 0xe8, 0xa3, + 0xce, 0x73, 0xc5, 0xb6, 0xe9, 0x3d, 0xe9, 0xe9, 0x7b, 0x4a, + 0x4d, 0xd9, 0x28, 0xbc, 0xd3, 0x46, 0x19, 0x4a, 0x88, 0xff, + 0xf1, 0x58, 0xf1, 0xf1, 0x94, 0xbf, 0x43, 0xfe, 0xe9, 0x54, + 0x55, 0xcc, 0xc2, 0xbf, 0xa1, 0x14, 0x38, 0xe9, 0x38, 0x38, + 0xf9, 0x7a, 0xa7, 0x53, 0xbf, 0x4b, 0x0c, 0x10, 0x3c, 0x7a, + 0x1d, 0x2f, 0xac, 0x2a, 0xac, 0xac, 0xd8, 0x6d, 0x4f, 0x95, + 0xc4, 0x1e, 0xa4, 0xf2, 0x71, 0x6d, 0xc7, 0xc5, 0x0c, 0xd3, + 0x0c, 0x0c, 0x96, 0x9b, 0x07, 0xf2, 0x81, 0x74, 0x43, 0x45, + 0x8c, 0x9b, 0x6c, 0xad, 0xc3, 0xea, 0xc3, 0xc3, 0xb0, 0xf2, + 0x01, 0x26, 0x76, 0x51, 0xda, 0x5a, 0x34, 0xf2, 0x85, 0xce, + 0x79, 0x0e, 0x79, 0x79, 0x28, 0x95, 0x19, 0xf0, 0x2c, 0xc5, + 0xfb, 0x26, 0x91, 0x95, 0x9d, 0xdf, 0x4f, 0x4c, 0x4f, 0x4f, + 0x7e, 0x10, 0xe7, 0xc7, 0xcc, 0xec, 0xf4, 0x32, 0xa2, 0x10, + 0xd3, 0x3d, 0x21, 0xb0, 0x21, 0x21, 0xeb, 0xbd, 0x86, 0x3f, + 0x11, 0xa8, 0xaa, 0x5b, 0x47, 0xbd, 0xd1, 0x4e, 0xc4, 0x5e, + 0xc4, 0xc4, 0x06, 0x6c, 0xcc, 0x14, 0xb8, 0x60, 0x3a, 0x58, + 0xd2, 0x6c, 0x1e, 0x84, 0xda, 0xb3, 0xda, 0xda, 0xa2, 0x35, + 0x20, 0x4a, 0xd8, 0xb2, 0x7c, 0x11, 0x4f, 0x35, 0x3e, 0xb8, + 0x92, 0x4b, 0x92, 0x92, 0x6a, 0xbb, 0x0a, 0xbf, 0xda, 0x6f, + 0x68, 0x21, 0x0b, 0xbb, 0x84, 0x16, 0xea, 0x79, 0xea, 0xea, + 0xbf, 0x1c, 0x3c, 0x04, 0x99, 0xa1, 0xb3, 0xc6, 0x3a, 0x1c, + 0x2f, 0x7e, 0x25, 0x40, 0x25, 0x25, 0x99, 0x75, 0x3a, 0xd0, + 0x6e, 0x84, 0x2a, 0xd9, 0x82, 0x75, 0x7d, 0x6b, 0x74, 0xe1, + 0x74, 0x74, 0x43, 0x3c, 0x31, 0x49, 0xc2, 0xba, 0x98, 0xa2, + 0xbd, 0x3c, 0x74, 0xbc, 0xf5, 0xa8, 0xf5, 0xf5, 0xe6, 0x77, + 0xff, 0x11, 0x96, 0x78, 0xd5, 0x4e, 0x07, 0x77, 0x41, 0xa0, + 0x03, 0x44, 0x03, 0x03, 0xc4, 0x56, 0x71, 0xdd, 0xb1, 0x1d, + 0x60, 0x80, 0x23, 0x56, 0x50, 0x66, 0xb4, 0x4f, 0xb4, 0xb4, + 0x37, 0x98, 0x41, 0xb2, 0x05, 0xf6, 0x22, 0x78, 0xaa, 0x98, + 0x21, 0xe4, 0xdb, 0x8f, 0xdb, 0xdb, 0x5f, 0x07, 0x0f, 0x01, + 0xb7, 0xb9, 0x5c, 0xd0, 0xef, 0x07, 0x55, 0x58, 0x2e, 0x27, + 0x2e, 0x2e, 0xb9, 0x70, 0xf0, 0x10, 0x21, 0xc1, 0x89, 0x9e, + 0xe8, 0x70, 0xe7, 0xf9, 0x44, 0x2b, 0x44, 0x44, 0x5e, 0x15, + 0x2d, 0x07, 0x83, 0xa9, 0x57, 0x75, 0xc8, 0x15, 0xcd, 0xb9, + 0xfb, 0x03, 0xfb, 0xfb, 0x49, 0x88, 0xa6, 0x75, 0xc9, 0x1a, + 0xd6, 0x4a, 0x08, 0x88, 0x0d, 0x31, 0x88, 0x56, 0x88, 0x88, + 0xbc, 0x2a, 0x5a, 0x0e, 0xc5, 0x91, 0xae, 0xea, 0x53, 0x2a, + 0x7c, 0xb3, 0xe7, 0x96, 0xe7, 0xe7, 0xd4, 0xb5, 0x14, 0xbd, + 0x77, 0xde, 0xd0, 0x42, 0x16, 0xb5, 0x37, 0x6f, 0x13, 0x02, + 0x13, 0x13, 0xcf, 0xf0, 0xc4, 0xe7, 0x8e, 0xad, 0x25, 0xcd, + 0xb1, 0xf0, 0x1a, 0x62, 0xd3, 0xac, 0xd3, 0xd3, 0xbb, 0x54, + 0xb4, 0x1c, 0x49, 0xe1, 0x9f, 0x17, 0xa6, 0x54, 0xa2, 0xbf, + 0x4e, 0x70, 0x4e, 0x4e, 0x83, 0x22, 0xc8, 0x8c, 0xa3, 0xe7, + 0xd4, 0xf3, 0x02, 0x22, 0xaf, 0x8e, 0xc6, 0x26, 0xc6, 0xc6, + 0x3f, 0x08, 0x92, 0x82, 0x66, 0x76, 0x7a, 0x19, 0x51, 0x08, + 0xf6, 0x3f, 0xf3, 0x20, 0xf3, 0xf3, 0xad, 0xdb, 0x1d, 0x68, + 0x37, 0x42, 0x15, 0x8d, 0x41, 0xdb, 0xe8, 0xbb, 0x29, 0x93, + 0x29, 0x29, 0x0f, 0xee, 0x3d, 0x22, 0xef, 0xf0, 0x69, 0x9c, + 0x0e, 0xee, 0x7e, 0xc0, 0x02, 0x78, 0x02, 0x02, 0x39, 0x64, + 0x5e, 0x96, 0xde, 0x16, 0x40, 0x41, 0x83, 0x64, 0x5e, 0xfc, + 0x4a, 0x80, 0x4a, 0x4a, 0xf1, 0xea, 0x74, 0x63, 0xdc, 0xcb, + 0x54, 0x71, 0xc7, 0xea, 0xfa, 0xd6, 0xe8, 0x01, 0xe8, 0xe8, + 0x86, 0x78, 0x62, 0x92, 0x47, 0xb7, 0xf3, 0x87, 0xb9, 0x78, + 0xb5, 0xec, 0x15, 0x8a, 0x15, 0x15, 0x84, 0x5c, 0x26, 0x9e, + 0x2f, 0x97, 0xe5, 0x0e, 0xf7, 0x5c, 0x92, 0x9d, 0x22, 0xf4, + 0x22, 0x22, 0x2f, 0xeb, 0xf7, 0xe2, 0xa0, 0xb5, 0xca, 0xdb, + 0x64, 0xeb, 0x56, 0xf3, 0x58, 0xbe, 0x58, 0x58, 0xc3, 0x28, + 0x9f, 0xcf, 0x3d, 0x6d, 0x51, 0x7d, 0xd6, 0x28, 0xf1, 0x72, + 0x8c, 0xa6, 0x8c, 0x8c, 0xce, 0xe2, 0xe6, 0xe1, 0xba, 0xbd, + 0x2e, 0x68, 0x96, 0xe2, 0x04, 0xe6, 0x09, 0x1f, 0x09, 0x09, + 0x19, 0x61, 0x94, 0x56, 0x91, 0x53, 0xe3, 0x06, 0xe9, 0x61, + 0x6e, 0xde, 0x26, 0x04, 0x26, 0x26, 0x5d, 0x23, 0x4b, 0x0d, + 0xdf, 0x99, 0x4a, 0x59, 0xa1, 0x23, 0xa5, 0xf2, 0x31, 0xf6, + 0x31, 0x31, 0xe0, 0x1b, 0x33, 0x05, 0x2e, 0x18, 0xef, 0x16, + 0xd5, 0x1b, 0xe6, 0x21, 0xd7, 0x5c, 0xd7, 0xd7, 0xc9, 0x9c, + 0x08, 0xf3, 0x36, 0xcd, 0x1f, 0x95, 0x63, 0x9c, 0xc8, 0x87, + 0x61, 0x6b, 0x61, 0x61, 0xc7, 0x60, 0x17, 0xd7, 0xed, 0x2d, + 0x7d, 0xac, 0x4a, 0x60, 0x7b, 0xfe, 0x98, 0x10, 0x98, 0x98, + 0xb7, 0x8c, 0xef, 0x34, 0xfa, 0x21, 0xeb, 0xa7, 0xc1, 0x8c, + 0x73, 0xf1, 0x8a, 0x2e, 0x8a, 0x8a, 0x85, 0x4e, 0x04, 0x98, + 0x1b, 0x87, 0xee, 0xab, 0xd0, 0x4e, 0x51, 0xbe, 0x27, 0x38, + 0x27, 0x27, 0xa0, 0x11, 0x64, 0x46, 0xb0, 0x92, 0x6a, 0x98, + 0x01, 0x11, 0x95, 0xd0, 0x5d, 0x72, 0x5d, 0x5d, 0x4c, 0xd2, + 0x0c, 0x6b, 0x2d, 0x4a, 0xf1, 0x3e, 0xb3, 0xd2, 0x66, 0xd1, + 0x34, 0x3a, 0x34, 0x34, 0x6f, 0xe1, 0xa0, 0xa1, 0x3e, 0x3f, + 0x4f, 0x55, 0xb0, 0xe1, 0xd6, 0x03, 0xbb, 0xd8, 0xbb, 0xbb, + 0x65, 0x55, 0x37, 0x9d, 0x35, 0x9f, 0x01, 0xbd, 0x05, 0x55, + 0x5b, 0xc2, 0xd0, 0xe8, 0xd0, 0xd0, 0x7f, 0x02, 0xc5, 0xc1, + 0xf8, 0xfc, 0xff, 0x97, 0x85, 0x02, 0xe3, 0x1f, 0x4d, 0x34, + 0x4d, 0x4d, 0x47, 0x74, 0xb9, 0x51, 0x12, 0xfa, 0xb4, 0x73, + 0x21, 0x74, 0x63, 0xef, 0xae, 0x52, 0xae, 0xae, 0xe1, 0x09, + 0x11, 0x03, 0x1a, 0x08, 0xe4, 0xb3, 0xf2, 0x09, 0x9b, 0x4a, + 0xa3, 0xbd, 0xa3, 0xa3, 0x8a, 0xa0, 0x39, 0xba, 0xf4, 0x77, + 0x87, 0x37, 0xde, 0xa0, 0xbd, 0xe3, 0x07, 0xb4, 0x07, 0x07, + 0xb6, 0x9e, 0xcd, 0x32, 0xce, 0x31, 0xe0, 0x02, 0xe6, 0x9e, + 0x77, 0x17, 0x83, 0x31, 0x83, 0x83, 0x9c, 0x2f, 0x90, 0xce, + 0x8a, 0xd4, 0x0d, 0xad, 0x39, 0x2f, 0x8d, 0xc1, 0x6b, 0x30, + 0x6b, 0x6b, 0x1a, 0x57, 0xf2, 0x5c, 0xcd, 0x63, 0xfe, 0x2a, + 0x80, 0x57, 0xbc, 0x3b, 0x94, 0xc3, 0x94, 0x94, 0x21, 0x17, + 0xe8, 0xc6, 0x7b, 0x55, 0xa8, 0xe2, 0x4d, 0x17, 0xf3, 0x01, + 0x69, 0x48, 0x69, 0x69, 0x23, 0x33, 0xac, 0xca, 0x13, 0x75, + 0xbe, 0x6b, 0x03, 0x33, 0xf4, 0x4c, 0x16, 0xce, 0x16, 0x16, + 0x40, 0x0a, 0x57, 0x43, 0x9e, 0x8a, 0x85, 0x8e, 0xd4, 0x0a, + 0x26, 0xa9, 0xa4, 0x09, 0xa4, 0xa4, 0x3c, 0x3e, 0xf4, 0x88, + 0x3a, 0x46, 0x67, 0x35, 0x38, 0x3e, 0xd4, 0x70, 0x5e, 0x36, + 0x5e, 0x5e, 0x88, 0x84, 0x7d, 0xb6, 0x9c, 0x57, 0x91, 0xbe, + 0x90, 0x84, 0x80, 0xf0, 0xe3, 0x66, 0xe3, 0xe3, 0xa6, 0x7d, + 0xa8, 0x52, 0x08, 0xf2, 0x50, 0xc0, 0xd3, 0x7d, 0x93, 0x45, + 0xb1, 0x83, 0xb1, 0xb1, 0xb8, 0x62, 0xd2, 0x16, 0x15, 0xd1, + 0x82, 0x3b, 0xcf, 0x62, 0xb6, 0x47, 0x63, 0x13, 0x63, 0x63, + 0xfe, 0x04, 0x49, 0x41, 0x33, 0x3b, 0x3d, 0xed, 0xc9, 0x04, + 0x15, 0x20, 0xbe, 0x14, 0xbe, 0xbe, 0xea, 0xaf, 0xa4, 0x39, + 0x25, 0xb8, 0xa1, 0xfe, 0x60, 0xaf, 0xcc, 0x61, 0x68, 0x74, + 0x68, 0x68, 0xde, 0x01, 0x83, 0x81, 0x7c, 0x7e, 0x9e, 0xaa, + 0xa3, 0x01, 0xac, 0x25, 0xb0, 0xbf, 0xb0, 0xb0, 0x45, 0x50, + 0xfd, 0x5d, 0x7a, 0xda, 0xa2, 0xfa, 0x6f, 0x50, 0xc1, 0x50, + 0xe0, 0x22, 0xe0, 0xe0, 0x62, 0x2b, 0xd9, 0x8f, 0xb9, 0xef, + 0x30, 0x40, 0xf0, 0x2b, 0xee, 0x2e, 0xc5, 0x62, 0xc5, 0xc5, + 0xfb, 0x5e, 0xe3, 0x5f, 0xd7, 0x6b, 0x1a, 0x99, 0x72, 0x5e, + 0xae, 0x56, 0x55, 0x51, 0x55, 0x55, 0xa8, 0x81, 0xb7, 0x76, + 0xd3, 0x12, 0x32, 0xf9, 0xfa, 0x81, 0x9c, 0x07, 0xdc, 0x3b, + 0xdc, 0xdc, 0xe9, 0x99, 0xc2, 0x33, 0x79, 0x88, 0xbc, 0xd2, + 0x09, 0x99, 0xd9, 0x41, 0xd6, 0x60, 0xd6, 0xd6, 0x34, 0xae, + 0x27, 0xb8, 0x59, 0xc6, 0x3f, 0x54, 0xc3, 0xae, 0xa3, 0x67, + 0xdd, 0x07, 0xdd, 0xdd, 0x14, 0xab, 0xed, 0x78, 0x16, 0x83, + 0x9c, 0x13, 0xa9, 0xab, 0x25, 0x02, 0xd2, 0x90, 0xd2, 0xd2, + 0x46, 0x66, 0x9b, 0x57, 0x26, 0xea, 0xbf, 0xd6, 0x06, 0x66, + 0xeb, 0x10, 0x5f, 0x0a, 0x5f, 0x5f, 0x75, 0xb6, 0x52, 0xfd, + 0xf3, 0x5c, 0xb1, 0x7f, 0x30, 0xb6, 0x40, 0x78, 0x90, 0x33, + 0x90, 0x90, 0x53, 0xdf, 0x54, 0x29, 0x04, 0x79, 0x28, 0x60, + 0x88, 0xdf, 0x48, 0x77, 0x82, 0x0d, 0x82, 0x82, 0x61, 0x1d, + 0xbf, 0x85, 0xe5, 0xdf, 0x2d, 0x6c, 0x99, 0x1d, 0x6d, 0x75, + 0x50, 0x9d, 0x50, 0x50, 0x27, 0x7b, 0x24, 0xd2, 0xc3, 0x35, + 0x92, 0xba, 0x9f, 0x7b, 0x28, 0x33, 0x5a, 0xc6, 0x5a, 0x5a, + 0xfa, 0x4c, 0xc1, 0x59, 0xe3, 0x7b, 0x11, 0x3c, 0x55, 0x4c, + 0xff, 0xe8, 0x72, 0x69, 0x72, 0x72, 0x08, 0x90, 0xd3, 0x30, + 0x63, 0x80, 0x58, 0x61, 0xfb, 0x90, 0x0a, 0x7c, 0xf7, 0xd0, + 0xf7, 0xf7, 0xdf, 0x13, 0xa1, 0x87, 0x48, 0x6e, 0x95, 0x0f, + 0x84, 0x13, 0x4f, 0x3a, 0xfd, 0x8b, 0xfd, 0xfd, 0x02, 0x24, + 0x44, 0x0c, 0x68, 0x20, 0x16, 0x89, 0x4e, 0x24, 0x19, 0xc9, + 0xa5, 0x35, 0xa5, 0xa5, 0xc1, 0x0c, 0xdb, 0xc3, 0x55, 0x4d, + 0x47, 0xf4, 0x98, 0x0c, 0x53, 0xcd, 0xc2, 0xd6, 0xc2, 0xc2, + 0x4d, 0xc0, 0x2e, 0x6d, 0x19, 0x5a, 0xfa, 0x9b, 0x94, 0xc0, + 0xf5, 0x94, 0x85, 0xb9, 0x85, 0x85, 0xd7, 0x83, 0x72, 0xb7, + 0x2b, 0xee, 0xcd, 0x6e, 0x7f, 0x83, 0xb9, 0x05, 0x0e, 0xab, + 0x0e, 0x0e, 0xaf, 0xff, 0x59, 0x64, 0x5f, 0x62, 0x03, 0x04, + 0x0f, 0xff, 0xcb, 0x2c, 0x17, 0xf2, 0x17, 0x17, 0xbd, 0x38, + 0x78, 0x08, 0xf1, 0x81, 0xa5, 0x4f, 0x74, 0x38, 0x45, 0x46, + 0x0a, 0x5b, 0x0a, 0x0a, 0xdd, 0x37, 0xe5, 0x8b, 0x20, 0x4e, + 0x83, 0x86, 0xca, 0x37, 0x57, 0x2b, 0xcb, 0xc9, 0xcb, 0xcb, + 0x54, 0xa1, 0xba, 0x3b, 0x88, 0x09, 0x19, 0x9d, 0x7d, 0xa1, + 0xd7, 0xdb, 0x28, 0xaf, 0x28, 0x28, 0xf2, 0xdc, 0x12, 0x69, + 0x80, 0xfb, 0x49, 0x5d, 0xae, 0xdc, 0x68, 0x4b, 0xca, 0xf5, + 0xca, 0xca, 0xa9, 0x93, 0x95, 0x70, 0xe7, 0x02, 0x39, 0x5c, + 0xdd, 0x93, 0x4c, 0x91, 0x8b, 0x12, 0x8b, 0x8b, 0x78, 0x7c, + 0x2b, 0xd3, 0x74, 0x8c, 0xce, 0x6a, 0x70, 0x7c, 0x20, 0x3c, + 0x48, 0xf8, 0x48, 0x48, 0xc8, 0x8e, 0x2a, 0xf5, 0x02, 0xdd, + 0x14, 0x30, 0x44, 0x8e, 0x4a, 0x04, 0x67, 0xe3, 0x67, 0x67, + 0x8c, 0xcc, 0xf5, 0xae, 0x4c, 0x17, 0xbd, 0x6f, 0x0c, 0xcc, + 0x05, 0x3e, 0x9a, 0x68, 0x9a, 0x9a, 0x8e, 0xe8, 0xb1, 0xa2, + 0x24, 0x37, 0xab, 0xe6, 0x42, 0xe8, 0xc6, 0x1d, 0x9f, 0xa4, + 0x9f, 0x9f, 0x01, 0x12, 0x22, 0x06, 0x34, 0x10, 0x0b, 0xa5, + 0x27, 0x12, 0x14, 0xf8, 0x2d, 0x63, 0x2d, 0x2d, 0x7d, 0x26, + 0x81, 0xcd, 0x90, 0xdc, 0xe9, 0x1e, 0xcb, 0x26, 0x9e, 0x74, + 0x39, 0xd5, 0x39, 0x39, 0x04, 0x48, 0x88, 0x18, 0xd0, 0x40, + 0x2c, 0xd1, 0x9c, 0x48, 0xd5, 0xa8, 0xcd, 0x41, 0xcd, 0xcd, + 0x1f, 0x0d, 0x58, 0x42, 0x29, 0x33, 0xd9, 0x5e, 0x3b, 0x0d, + 0x4d, 0x49, 0x18, 0x65, 0x18, 0x18, 0xef, 0xf5, 0x0e, 0x27, + 0xc1, 0xe8, 0x86, 0x8a, 0xdb, 0xf5, 0xce, 0x12, 0x8d, 0x9a, + 0x8d, 0x8d, 0x33, 0xd0, 0xc9, 0xaa, 0xd5, 0xb6, 0x0e, 0xa9, + 0x36, 0xd0, 0x5a, 0x1a, 0x43, 0x9f, 0x43, 0x43, 0xe8, 0x8b, + 0xe0, 0x35, 0x4d, 0x98, 0xb7, 0x77, 0x2e, 0x8b, 0x3f, 0x60, + 0x01, 0x3c, 0x01, 0x01, 0xfd, 0x32, 0x2f, 0x4b, 0x6f, 0x0b, + 0x20, 0xc1, 0xa0, 0x32, 0x8a, 0x8c, 0x14, 0xb6, 0x14, 0x14, + 0x79, 0x6e, 0x09, 0xd5, 0x40, 0x9c, 0xc5, 0xcf, 0x57, 0x6e, + 0x83, 0x5b, 0x95, 0xff, 0x95, 0x95, 0xdc, 0x25, 0xc7, 0x8d, + 0x14, 0x5e, 0x88, 0x23, 0xed, 0x25, 0xc3, 0x23, 0x05, 0xcc, + 0x05, 0x05, 0x8f, 0xfa, 0x93, 0xa4, 0x10, 0x27, 0xa0, 0x43, + 0x65, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x08, + 0xce, 0x05, 0xce, 0xce, 0xdb, 0x5b, 0x29, 0x9f, 0x98, 0x2e, + 0xb9, 0xde, 0x18, 0x5b, 0x1f, 0x5c, 0x49, 0xc4, 0x49, 0x49, + 0x35, 0xbc, 0x05, 0xbe, 0x6d, 0xd6, 0x34, 0xf1, 0xe4, 0xbc, + 0x98, 0xe1, 0xd5, 0x24, 0xd5, 0xd5, 0xf0, 0xf8, 0x56, 0x65, + 0xe8, 0xdb, 0x5f, 0xd4, 0xe0, 0xf8, + }, + { + /* 3 */ + 0xab, 0x5f, 0x0f, 0xc5, 0x97, 0x09, 0x7c, 0xc9, 0x42, 0xc5, + 0x39, 0xbd, 0xfd, 0x81, 0x87, 0xfe, 0xbb, 0xa5, 0xce, 0xde, + 0x05, 0xdd, 0x1c, 0xf8, 0x12, 0xde, 0x45, 0x61, 0xc3, 0xdf, + 0xcc, 0x2b, 0x83, 0x15, 0xcf, 0x1f, 0x39, 0x08, 0x8c, 0x52, + 0xca, 0x1f, 0xff, 0xa8, 0x9e, 0x12, 0xd5, 0x1c, 0x0d, 0xe5, + 0x99, 0x66, 0x2c, 0xc3, 0x2e, 0xd2, 0x39, 0x66, 0x56, 0x24, + 0x2b, 0x05, 0x5f, 0x06, 0x3a, 0x3e, 0xb0, 0xfa, 0xbf, 0x2e, + 0x9c, 0x05, 0xd2, 0xfa, 0x54, 0x33, 0x2a, 0xb6, 0x28, 0x65, + 0x4a, 0x9d, 0xb2, 0xbb, 0xc7, 0x47, 0x7f, 0x92, 0xa1, 0xbb, + 0xe3, 0x62, 0x90, 0xef, 0x1a, 0x0b, 0xe8, 0xf8, 0x85, 0x6e, + 0xb9, 0xb8, 0x35, 0x14, 0xce, 0x6e, 0x93, 0xcc, 0xa8, 0x9d, + 0xa0, 0x57, 0xeb, 0x31, 0x8d, 0xa9, 0x9a, 0xdf, 0x3f, 0x0d, + 0xc1, 0xa9, 0x0a, 0x4b, 0x05, 0x3a, 0x68, 0x2c, 0x8f, 0xb7, + 0xef, 0x85, 0xb5, 0x57, 0xa4, 0x36, 0xf6, 0x85, 0xde, 0xf1, + 0x6f, 0xcb, 0x73, 0x33, 0xbe, 0x3d, 0xd6, 0x54, 0x60, 0x74, + 0x02, 0xd3, 0x03, 0x54, 0x2d, 0x2b, 0xf7, 0xf5, 0x57, 0xa6, + 0x0f, 0x6b, 0x28, 0x5d, 0xaf, 0x38, 0x22, 0x7d, 0x33, 0x5d, + 0xb8, 0xde, 0x5c, 0x7e, 0x6e, 0x54, 0x6d, 0xbc, 0x5a, 0x3c, + 0xc6, 0x7e, 0xad, 0x74, 0x1a, 0x3c, 0x9d, 0xa9, 0xaf, 0x02, + 0x26, 0xbd, 0x0a, 0xf3, 0x30, 0xd7, 0xca, 0x91, 0x3c, 0x56, + 0x22, 0xd7, 0xd0, 0x94, 0x68, 0x54, 0xf5, 0xd9, 0x29, 0x0d, + 0x79, 0x26, 0x0e, 0x9d, 0xf6, 0x2d, 0x8d, 0x26, 0xb1, 0x68, + 0xb9, 0x4f, 0xab, 0xcb, 0x17, 0xec, 0x68, 0xaa, 0x74, 0x86, + 0x72, 0xb5, 0x4b, 0xaa, 0xfa, 0x6c, 0x7d, 0x0f, 0xe1, 0x0a, + 0xb0, 0x11, 0x47, 0xf5, 0x6f, 0xd0, 0x26, 0x18, 0x35, 0xf5, + 0xe2, 0x88, 0x71, 0x57, 0xc0, 0xdb, 0xc5, 0x2a, 0x5d, 0x3e, + 0x72, 0x10, 0xdb, 0xa4, 0x57, 0x3e, 0x3d, 0x93, 0xff, 0x24, + 0x69, 0x38, 0x4c, 0xcc, 0xa2, 0xf6, 0x81, 0x89, 0x6b, 0xa0, + 0xbf, 0xf6, 0x12, 0xaf, 0x09, 0x62, 0x49, 0xfd, 0xc3, 0x7b, + 0x4d, 0x73, 0x34, 0xde, 0xcf, 0x96, 0x49, 0x73, 0xcc, 0x5e, + 0x66, 0xa9, 0x3a, 0xce, 0xb5, 0x89, 0x5f, 0x7f, 0x0a, 0x79, + 0x38, 0x33, 0x24, 0x7f, 0x8a, 0xc2, 0x45, 0x7d, 0x5b, 0x56, + 0x74, 0x7c, 0xa3, 0x37, 0xbd, 0x5c, 0xfb, 0x0a, 0x67, 0x37, + 0xa8, 0x66, 0x54, 0xaf, 0x50, 0xca, 0x94, 0xf9, 0xa7, 0xb5, + 0x4d, 0x8e, 0xfe, 0xe7, 0x81, 0xb5, 0x05, 0xc4, 0xe3, 0x1d, + 0x34, 0x16, 0x1d, 0x1f, 0x58, 0x7d, 0xbe, 0x17, 0x4e, 0xe3, + 0x69, 0x7d, 0x2a, 0xf8, 0x15, 0x5b, 0x14, 0xd3, 0x25, 0xaf, + 0x59, 0xbc, 0x82, 0xc2, 0xde, 0x49, 0xb1, 0xbc, 0x90, 0x31, + 0x48, 0x96, 0x0d, 0xe4, 0x48, 0x13, 0x03, 0x80, 0x44, 0xbc, + 0x73, 0x3d, 0xab, 0x80, 0x0d, 0x98, 0xe7, 0x94, 0x2b, 0x59, + 0xda, 0xbb, 0xb4, 0x78, 0x4f, 0xfc, 0x99, 0xe8, 0x34, 0x78, + 0xf9, 0x91, 0x9d, 0x04, 0x4c, 0xb9, 0xdd, 0xad, 0x1d, 0xc9, + 0xa9, 0xae, 0x8b, 0x6c, 0x2f, 0xc9, 0x7f, 0x21, 0xde, 0x55, + 0xe6, 0x66, 0xe9, 0xbf, 0x3c, 0x92, 0x19, 0x24, 0x33, 0xa2, + 0xcb, 0x92, 0xe4, 0xb1, 0x72, 0x41, 0x59, 0x7e, 0xea, 0x76, + 0x34, 0x55, 0x3a, 0x43, 0x39, 0xbb, 0xc4, 0x55, 0x7d, 0x36, + 0xdf, 0xe6, 0x91, 0x05, 0x73, 0x6a, 0x0a, 0x86, 0x5b, 0x0e, + 0xe9, 0x8e, 0x7c, 0x86, 0x2e, 0xd6, 0x17, 0xfe, 0xfa, 0x15, + 0x2e, 0x1b, 0xd0, 0x97, 0xe8, 0xcf, 0xe4, 0xa9, 0x96, 0x97, + 0x37, 0xd8, 0xfa, 0x1e, 0x01, 0x14, 0xf5, 0xe7, 0xdd, 0x13, + 0x07, 0xaf, 0x7b, 0xf7, 0xa7, 0x13, 0xb9, 0x34, 0xbd, 0xc6, + 0xb4, 0x84, 0x26, 0x66, 0x51, 0x7b, 0xa1, 0xa5, 0xd4, 0x50, + 0xbe, 0x7b, 0x09, 0xb6, 0xe5, 0x31, 0xc5, 0x9f, 0xd0, 0x48, + 0x84, 0xaf, 0x85, 0x6d, 0xa5, 0xbe, 0x16, 0xaf, 0x29, 0x05, + 0xf5, 0x50, 0xb9, 0x60, 0xc4, 0x6d, 0xe4, 0xc2, 0xd2, 0x8c, + 0xdd, 0x12, 0x52, 0xc2, 0x4a, 0xee, 0x25, 0xf8, 0x90, 0x11, + 0xf3, 0xb6, 0xcd, 0x5e, 0x41, 0x61, 0x6f, 0xc5, 0xb9, 0x5e, + 0x48, 0xf9, 0x24, 0x4b, 0xe7, 0x72, 0x7b, 0x17, 0x8b, 0x6a, + 0x12, 0x64, 0xd9, 0x77, 0x54, 0x6a, 0x10, 0xb8, 0x08, 0xd1, + 0x3e, 0x9e, 0x4d, 0x8b, 0x1b, 0x0a, 0x21, 0x15, 0x6d, 0x16, + 0xba, 0x0a, 0x65, 0xd2, 0xd3, 0xbe, 0xb0, 0xd4, 0x45, 0xf6, + 0x9a, 0xe6, 0x68, 0x7f, 0x5d, 0xef, 0x92, 0xe6, 0x5b, 0xbc, + 0xcc, 0x91, 0x74, 0x5f, 0xa9, 0xd1, 0xbe, 0xfe, 0x14, 0xf2, + 0x70, 0x66, 0x48, 0xfe, 0xd7, 0x47, 0x8a, 0xfa, 0xb6, 0xac, + 0x5e, 0xb8, 0xd2, 0xd6, 0x90, 0xa6, 0x07, 0x3e, 0xe5, 0xd6, + 0x80, 0x89, 0x40, 0x47, 0x33, 0x7a, 0xd8, 0x35, 0x05, 0x43, + 0xcc, 0x07, 0x95, 0x47, 0x3e, 0x43, 0x17, 0x6b, 0xea, 0x7f, + 0x7d, 0xeb, 0x7e, 0x8f, 0x93, 0xe0, 0x77, 0xcd, 0xc7, 0x5c, + 0x45, 0xe0, 0x78, 0xf2, 0x3c, 0xfb, 0xa5, 0x13, 0xf2, 0xf1, + 0x74, 0xa2, 0xe1, 0xfd, 0x69, 0x73, 0xbc, 0xa2, 0x3f, 0x84, + 0xfe, 0x97, 0x1e, 0x5b, 0x90, 0x26, 0x06, 0xc3, 0x88, 0xbb, + 0xe6, 0x7a, 0x95, 0xc3, 0x1a, 0xf3, 0x0d, 0xeb, 0x56, 0xb2, + 0x77, 0xb5, 0xab, 0xf0, 0x9e, 0x3b, 0xf1, 0x13, 0x68, 0xf0, + 0x31, 0xe1, 0xf9, 0x08, 0x98, 0xb1, 0x53, 0x5d, 0x4b, 0xb0, + 0xbc, 0x65, 0x29, 0xec, 0xdc, 0xb0, 0xd6, 0xad, 0x6b, 0x42, + 0x6c, 0x7c, 0xe5, 0x1d, 0x1c, 0x08, 0x95, 0x7b, 0x1b, 0xc6, + 0xf7, 0x08, 0xc5, 0xe8, 0x83, 0x98, 0xff, 0x51, 0x49, 0x54, + 0xba, 0x7c, 0xe4, 0x20, 0x75, 0x8b, 0xae, 0x7c, 0x7a, 0xe5, + 0x3d, 0x48, 0xd2, 0x70, 0x98, 0x5b, 0x87, 0x2f, 0xc1, 0xd1, + 0xd6, 0x83, 0xbd, 0x2f, 0x24, 0x9d, 0x12, 0xc4, 0x92, 0x39, + 0x13, 0x33, 0xc9, 0xdc, 0xb1, 0xb3, 0x6a, 0x28, 0x5f, 0xdc, + 0xe5, 0x5b, 0x93, 0xf9, 0x83, 0xae, 0x43, 0xa7, 0x8a, 0xab, + 0x2e, 0xb1, 0x49, 0xdd, 0x8c, 0xab, 0xaa, 0x71, 0x55, 0x1c, + 0x27, 0xa9, 0xdc, 0xea, 0xa4, 0x35, 0x09, 0x32, 0x8d, 0xda, + 0x2a, 0x35, 0x08, 0x5c, 0x04, 0x89, 0x1f, 0x4f, 0xc7, 0xa4, + 0xec, 0x05, 0xf1, 0xeb, 0xd7, 0x0b, 0x5d, 0x05, 0xd3, 0x69, + 0x88, 0x5f, 0x58, 0x6a, 0xa0, 0xeb, 0x86, 0xee, 0xfd, 0x04, + 0x46, 0x29, 0x65, 0xee, 0x9e, 0x54, 0x4f, 0x09, 0x8b, 0x0e, + 0xcc, 0x10, 0x65, 0x2e, 0x9b, 0xe6, 0xed, 0xeb, 0x7a, 0x2e, + 0x74, 0x80, 0x3a, 0xd7, 0x54, 0x9a, 0x14, 0x25, 0x60, 0x6d, + 0x57, 0xe1, 0x78, 0xac, 0x44, 0x6d, 0x63, 0xeb, 0xd0, 0xa8, + 0x29, 0x71, 0x52, 0x1a, 0xf2, 0x4c, 0x1c, 0xf9, 0x2f, 0x5a, + 0xd9, 0x4c, 0xa1, 0xd0, 0xb1, 0x9e, 0x95, 0x55, 0x2f, 0x5c, + 0x69, 0x6b, 0x48, 0x53, 0xe2, 0x1f, 0x93, 0x6b, 0x40, 0xa5, + 0x20, 0xc2, 0xf8, 0x3d, 0x47, 0x78, 0x2b, 0xdd, 0xeb, 0x84, + 0x51, 0x40, 0x98, 0xdd, 0xb5, 0x46, 0xbb, 0xea, 0x45, 0x0d, + 0xa6, 0xba, 0x96, 0xa3, 0xbb, 0xca, 0x52, 0x1b, 0x7b, 0xa3, + 0x6f, 0x99, 0xd6, 0x84, 0xd8, 0xf8, 0x5f, 0xff, 0x6b, 0x2a, + 0x30, 0x3a, 0x01, 0x88, 0xe0, 0x2a, 0xf7, 0xf4, 0x9a, 0x9b, + 0xca, 0x53, 0xe3, 0x4c, 0x0c, 0x45, 0xd3, 0xb5, 0x0f, 0xf4, + 0xe9, 0x45, 0x34, 0x25, 0x1a, 0x15, 0xac, 0xa7, 0xb8, 0x6c, + 0xc6, 0x19, 0x26, 0xba, 0x16, 0xe1, 0x1d, 0x19, 0xdc, 0xe6, + 0x6e, 0x78, 0x04, 0x50, 0xa7, 0xfd, 0x2f, 0x5f, 0x1b, 0x56, + 0x54, 0xad, 0x7e, 0x5f, 0x18, 0xe4, 0x0c, 0x58, 0x21, 0xd1, + 0xc0, 0xb2, 0x45, 0xb4, 0x17, 0xb9, 0xc5, 0x8f, 0x46, 0xb4, + 0x55, 0xd9, 0xcb, 0x0e, 0xf2, 0xb5, 0x23, 0xfe, 0x49, 0xf1, + 0xc4, 0x0c, 0xca, 0x7b, 0xaf, 0xf1, 0x61, 0xfc, 0xd1, 0x1b, + 0x5e, 0x12, 0x2a, 0xc4, 0x71, 0xe1, 0x2d, 0xfa, 0xfc, 0x34, + 0x82, 0xe1, 0x28, 0xef, 0x14, 0xe8, 0x63, 0xb0, 0x62, 0xd7, + 0x72, 0x61, 0x69, 0x46, 0x8f, 0x09, 0x29, 0x61, 0x25, 0x77, + 0xf3, 0x7c, 0x48, 0xe9, 0x7d, 0x46, 0x9b, 0x27, 0x54, 0xaa, + 0xcd, 0x45, 0x4a, 0x27, 0xe1, 0x75, 0x91, 0x5c, 0x6d, 0x68, + 0x31, 0x8a, 0x39, 0xd1, 0xd5, 0x23, 0xa6, 0xe5, 0xf5, 0xd1, + 0xf3, 0xda, 0x98, 0x3e, 0x24, 0x95, 0x30, 0xcd, 0x80, 0x2d, + 0x75, 0xbf, 0xa0, 0x53, 0xf0, 0x2d, 0x84, 0xa7, 0x42, 0xe2, + 0xdd, 0xbc, 0xc1, 0xf5, 0xfc, 0x48, 0xb7, 0x25, 0xc3, 0x39, + 0x43, 0x48, 0x22, 0xa4, 0x11, 0xd2, 0x0b, 0x9c, 0x20, 0x37, + 0x41, 0x36, 0xe7, 0x6b, 0xc0, 0x62, 0xa0, 0x36, 0xf8, 0x7b, + 0x7c, 0xbc, 0x96, 0x69, 0x8a, 0x2f, 0xf7, 0x0f, 0xd0, 0xfe, + 0xba, 0x1d, 0xe7, 0x0f, 0xb6, 0xbb, 0x5b, 0xe1, 0xe8, 0xbe, + 0xd7, 0x5e, 0x2d, 0x1e, 0x63, 0x3f, 0xb7, 0x3a, 0x0d, 0x1e, + 0xaf, 0xb5, 0xb6, 0x01, 0x13, 0xbf, 0x3d, 0x28, 0x19, 0x4b, + 0x59, 0x7c, 0x8e, 0x81, 0xc9, 0x4b, 0xd2, 0x83, 0x69, 0xe7, + 0x82, 0xba, 0xbf, 0x7a, 0x6f, 0xa8, 0xc0, 0xe8, 0x04, 0x65, + 0x06, 0xa8, 0x5a, 0x56, 0x2d, 0x29, 0xae, 0x8f, 0xc6, 0xe3, + 0x55, 0xf9, 0x51, 0x77, 0xd1, 0xbd, 0x58, 0xf9, 0xa4, 0x14, + 0x52, 0x83, 0xa1, 0x43, 0x72, 0x2d, 0xb3, 0x7a, 0xfb, 0x92, + 0xef, 0x38, 0x79, 0x7a, 0x59, 0xab, 0xcd, 0x22, 0x03, 0x3c, + 0xdb, 0xfc, 0x0d, 0x84, 0xef, 0x60, 0x9f, 0x5e, 0x31, 0x84, + 0x8e, 0xec, 0x47, 0xd8, 0xb5, 0x90, 0x15, 0x62, 0xd9, 0x91, + 0xf7, 0x7d, 0x7e, 0x1a, 0x41, 0x91, 0x14, 0x96, 0x0a, 0x74, + 0xd0, 0x58, 0x99, 0x1c, 0x3e, 0xd3, 0x61, 0x4d, 0xd0, 0x35, + 0xb8, 0xd3, 0x53, 0xe0, 0xc8, 0x18, 0x6b, 0x10, 0x4b, 0xda, + 0x0b, 0x47, 0x67, 0xdb, 0x79, 0x24, 0xa4, 0x47, 0x94, 0x1f, + 0x4a, 0x33, 0xe3, 0x22, 0x34, 0x12, 0x21, 0x5b, 0xb0, 0x8a, + 0xb8, 0xce, 0xe4, 0x5b, 0x9b, 0x90, 0xac, 0x14, 0xbf, 0x18, + 0x60, 0x59, 0xc3, 0x5a, 0xea, 0xbd, 0x83, 0xa6, 0x23, 0x5a, + 0xcb, 0x8d, 0x84, 0x07, 0x79, 0xbb, 0x92, 0xa8, 0xb7, 0xf8, + 0x0b, 0x40, 0xea, 0xd5, 0x9f, 0xf8, 0xf4, 0x09, 0x7a, 0x90, + 0x67, 0xe0, 0xac, 0x49, 0xa6, 0x74, 0x71, 0x5b, 0x6e, 0x4d, + 0x59, 0x74, 0xbf, 0x0d, 0xbe, 0xd0, 0x2d, 0x21, 0x6e, 0x75, + 0x52, 0xfb, 0xe5, 0x19, 0xa7, 0x6d, 0x15, 0xfb, 0x04, 0x2e, + 0x02, 0xa5, 0xee, 0xc6, 0xa1, 0xac, 0x3f, 0x12, 0x5d, 0x98, + 0x40, 0x9f, 0x60, 0x12, 0xe9, 0x29, 0x95, 0xd5, 0x72, 0x27, + 0x81, 0x9b, 0x7e, 0x24, 0xba, 0xf3, 0x80, 0xfd, 0xc0, 0x24, + 0x11, 0x52, 0xe9, 0x69, 0xe4, 0x4e, 0x3b, 0x79, 0x09, 0x06, + 0x1f, 0xb2, 0x9a, 0xb3, 0xd7, 0x06, 0x23, 0x4e, 0xf0, 0x6a, + 0xd1, 0x4c, 0x19, 0xc0, 0xf9, 0x0b, 0x7b, 0x22, 0x56, 0x7e, + 0x7d, 0x0b, 0x35, 0xcf, 0xfb, 0xad, 0x76, 0x77, 0xe4, 0x5a, + 0xa5, 0xf4, 0x35, 0xe7, 0x1d, 0x70, 0xf2, 0xf4, 0xb2, 0x95, + 0x59, 0x44, 0x06, 0x78, 0x2c, 0x95, 0x61, 0xac, 0x6b, 0x34, + 0xe8, 0x06, 0x9c, 0xac, 0xd9, 0x22, 0x8d, 0x65, 0x30, 0x46, + 0xbd, 0xf4, 0xde, 0x93, 0x43, 0x13, 0x08, 0xca, 0x0c, 0x93, + 0xb4, 0xac, 0x5a, 0x52, 0x9f, 0xdd, 0xb6, 0x40, 0x57, 0xb8, + 0x29, 0x1e, 0x32, 0x2a, 0x2b, 0xb8, 0x13, 0x45, 0xe8, 0xda, + 0x93, 0x2d, 0xd3, 0x81, 0x8c, 0x68, 0xa6, 0x0a, 0xaf, 0xa7, + 0x19, 0x68, 0xb0, 0x82, 0x58, 0xf7, 0x71, 0x1b, 0xe7, 0x93, + 0xad, 0x33, 0x16, 0x80, 0x17, 0x69, 0xfd, 0x33, 0x2b, 0x12, + 0xf4, 0xe3, 0xce, 0x03, 0x9b, 0x92, 0x8f, 0xe8, 0xe2, 0xb6, + 0xdc, 0x9a, 0xb2, 0xe8, 0xbd, 0x1a, 0xbf, 0x63, 0x5a, 0x42, + 0x8c, 0x7e, 0xe7, 0x42, 0x96, 0x30, 0xae, 0x2f, 0xf9, 0x42, + 0x47, 0x76, 0xc2, 0x6c, 0xbb, 0x48, 0x04, 0xdf, 0xa1, 0x76, + 0xc5, 0x35, 0x18, 0x9d, 0x14, 0x76, 0x1f, 0x37, 0xee, 0xf6, + 0x62, 0xa4, 0x86, 0x8d, 0xd7, 0x95, 0x5c, 0xa1, 0x92, 0x79, + 0xdb, 0x95, 0x97, 0xe2, 0xaa, 0x38, 0x4e, 0x91, 0xef, 0xee, + 0x2c, 0xdf, 0x5f, 0xea, 0x27, 0x90, 0xd5, 0xdf, 0x15, 0x7c, + 0xeb, 0xcc, 0x0a, 0x88, 0x32, 0x43, 0x31, 0x16, 0xf6, 0x44, + 0xac, 0xfc, 0xfa, 0x16, 0x6a, 0x5d, 0x35, 0x99, 0xec, 0xee, + 0x0b, 0xb4, 0x89, 0x2b, 0x6a, 0x0d, 0x3a, 0xe0, 0x27, 0x2b, + 0xa7, 0xe9, 0xb2, 0x88, 0x0c, 0xf0, 0x9e, 0x0a, 0x97, 0x62, + 0x87, 0x1f, 0xc2, 0xb1, 0xa3, 0x62, 0xd5, 0x50, 0x8b, 0x49, + 0xc1, 0xcf, 0x80, 0xdc, 0xc7, 0xd8, 0x1a, 0x6f, 0x86, 0x4b, + 0xc5, 0xd8, 0x66, 0x2f, 0x33, 0xb5, 0x1d, 0x67, 0x1c, 0x58, + 0xe1, 0x81, 0x1e, 0x8b, 0x48, 0x55, 0x6c, 0x81, 0x5d, 0x85, + 0xcf, 0x87, 0xed, 0xfa, 0xb1, 0x56, 0xfe, 0x09, 0xcf, 0x4c, + 0x20, 0xae, 0x30, 0x09, 0x95, 0xf5, 0xab, 0x8b, 0x39, 0xf2, + 0xd4, 0x97, 0x25, 0xd9, 0x40, 0x58, 0xbd, 0x23, 0x02, 0xd9, + 0x36, 0x32, 0x1b, 0xa6, 0xdb, 0xc4, 0x7a, 0x50, 0x32, 0x96, + 0xb2, 0xf8, 0xdf, 0xc1, 0x51, 0x96, 0x67, 0xc5, 0xd2, 0x0d, + 0xc7, 0xb7, 0x5b, 0x20, 0xca, 0x5c, 0xf5, 0x0f, 0x19, 0x15, + 0xf4, 0x5c, 0xe8, 0xc3, 0x74, 0x6d, 0xa8, 0xf7, 0xa3, 0x22, + 0x8e, 0x29, 0xde, 0x63, 0x4c, 0x30, 0x6a, 0x29, 0x07, 0xd3, + 0xe2, 0xae, 0x43, 0x75, 0xf9, 0x45, 0xfd, 0x89, 0x8b, 0xf0, + 0x53, 0x93, 0x9b, 0x89, 0x98, 0x6d, 0x4c, 0x1f, 0x12, 0xab, + 0x33, 0x04, 0x88, 0xea, 0x56, 0xd8, 0xaa, 0x4a, 0xff, 0xea, + 0x1d, 0x20, 0xef, 0x45, 0x15, 0xc7, 0x68, 0x24, 0x42, 0xb6, + 0xa3, 0xd7, 0xb3, 0x5f, 0x0b, 0xb6, 0xf5, 0xe3, 0x9b, 0x28, + 0xbd, 0x30, 0x96, 0x77, 0x16, 0x8e, 0xce, 0x75, 0xf2, 0x48, + 0x8b, 0x8e, 0xeb, 0x3e, 0x94, 0x66, 0x05, 0x44, 0x46, 0x3f, + 0x92, 0x21, 0x4b, 0x18, 0x57, 0xf6, 0x9d, 0x21, 0xc2, 0x3b, + 0x61, 0x36, 0xbc, 0x24, 0x02, 0x8e, 0xb1, 0x3b, 0x83, 0xfb, + 0x0c, 0xaf, 0x0a, 0x3b, 0xee, 0xfa, 0x77, 0x7b, 0x31, 0x52, + 0xff, 0x14, 0xed, 0xc4, 0xcd, 0x3e, 0x47, 0xa1, 0x85, 0xc4, + 0x69, 0xa0, 0xd5, 0x92, 0x41, 0x5d, 0x95, 0xbe, 0x1e, 0x49, + 0xed, 0x12, 0xf8, 0x51, 0x84, 0x49, 0x72, 0xb9, 0x39, 0xc1, + 0xcd, 0x3f, 0x64, 0x86, 0x62, 0x2c, 0x2f, 0x88, 0x9b, 0x3b, + 0x37, 0x2c, 0xd4, 0xba, 0x6a, 0xf1, 0x1b, 0x1f, 0x40, 0x6e, + 0x82, 0x6c, 0x0d, 0xd6, 0x43, 0xc4, 0x83, 0x6c, 0x33, 0xf6, + 0xf8, 0xbb, 0xef, 0xd2, 0x41, 0x29, 0x3b, 0x90, 0xad, 0x4a, + 0x45, 0x72, 0x86, 0x90, 0x44, 0x8b, 0x22, 0x67, 0x16, 0xfb, + 0x16, 0xab, 0xd1, 0x56, 0xd4, 0x1a, 0x74, 0x03, 0x4e, 0x56, + 0x8d, 0x11, 0xa7, 0xd3, 0x18, 0x23, 0x0e, 0x2c, 0x91, 0xa1, + 0x0f, 0xa4, 0x24, 0xcb, 0x36, 0xa1, 0xcf, 0xa3, 0x86, 0xa2, + 0x97, 0x7d, 0xb9, 0x2b, 0x7f, 0xe5, 0x86, 0x26, 0x10, 0x57, + 0x18, 0xe5, 0xab, 0x9b, 0xb4, 0xa4, 0xfd, 0x79, 0xfd, 0x9a, + 0x5c, 0xff, 0x4e, 0xc5, 0x4b, 0x0e, 0x8f, 0xff, 0x87, 0x5a, + 0xa2, 0xe9, 0x70, 0x0f, 0x6f, 0x32, 0xeb, 0x07, 0x45, 0x85, + 0xa1, 0xdb, 0x10, 0x07, 0x73, 0x53, 0xd8, 0x79, 0x17, 0xef, + 0x91, 0x61, 0xbf, 0x3f, 0x28, 0x27, 0xe0, 0xcc, 0x90, 0x3f, + 0x6d, 0x8e, 0xd7, 0x37, 0xaf, 0x9b, 0xa5, 0x73, 0x9e, 0x64, + 0x98, 0xad, 0x58, 0x02, 0x74, 0x64, 0xf6, 0x1e, 0x7b, 0x23, + 0x10, 0x83, 0xcf, 0xd9, 0x6d, 0xe9, 0xb8, 0x81, 0xe7, 0xf2, + 0x75, 0xe9, 0xed, 0x07, 0x97, 0x70, 0x9c, 0xe1, 0x56, 0xc5, + 0x53, 0x3a, 0xd9, 0xcc, 0x37, 0xc7, 0xcd, 0x3a, 0xbe, 0xe7, + 0x5f, 0x68, 0xf7, 0xf1, 0xba, 0xe2, 0x77, 0x22, 0xa5, 0x41, + 0x1a, 0x4e, 0x17, 0x22, 0x32, 0x1c, 0x19, 0x03, 0x35, 0x02, + 0x61, 0x1e, 0x7a, 0xa6, 0x4a, 0x21, 0x85, 0x10, 0x26, 0xa6, + 0xbc, 0xf0, 0x5e, 0xdb, 0x80, 0x92, 0x18, 0x87, 0x40, 0xf7, + 0xdb, 0xbe, 0x50, 0xc8, 0x78, 0xf7, 0x42, 0xb2, 0x21, 0x71, + 0x8f, 0x5e, 0x54, 0x4b, 0xe2, 0x01, 0x5a, 0x37, 0x3b, 0x68, + 0xc7, 0x01, 0x50, 0x1d, 0x28, 0x13, 0xc6, 0xa3, 0x8b, 0x68, + 0x4e, 0xf3, 0x70, 0x62, 0xbc, 0xab, 0xe2, 0xf3, 0xc1, 0xc6, + 0x81, 0x3d, 0x11, 0x97, 0x3e, 0xe1, 0x11, 0x8c, 0x7a, 0x1b, + 0x84, 0x98, 0xc6, 0x8c, 0x4b, 0x04, 0xc4, 0x40, 0x4a, 0xc1, + 0x5a, 0x67, 0x73, 0xa0, 0x55, 0x93, 0x1f, 0xa3, 0xf1, 0xa0, + 0x9f, 0xbe, 0xae, 0xb1, 0x51, 0xde, 0xce, 0x9e, 0xd4, 0x15, + 0x18, 0x1d, 0xe1, 0x44, 0x70, 0x15, 0x9a, 0x7a, 0x4d, 0xac, + 0x65, 0xc8, 0xf7, 0x69, 0x6c, 0x28, 0x84, 0x54, 0x77, 0x58, + 0xad, 0x28, 0x57, 0xce, 0xca, 0xbd, 0x85, 0xd6, 0xd2, 0xc6, + 0x35, 0x94, 0x06, 0x96, 0xa9, 0x11, 0x1c, 0x94, 0xc7, 0xff, + 0x82, 0x2b, 0x88, 0x32, 0x82, 0x52, 0x76, 0xe3, 0x99, 0x94, + 0x8a, 0xe4, 0xcf, 0xe3, 0x88, 0xd5, 0x44, 0xce, 0x2c, 0x35, + 0xb3, 0xd8, 0x4f, 0x32, 0x4c, 0xb7, 0x2c, 0x01, 0x3a, 0x32, + 0x7b, 0x0f, 0xdc, 0xf0, 0x08, 0xa0, 0xb4, 0xce, 0xe6, 0x83, + 0xaa, 0xe5, 0x3e, 0x85, 0x21, 0x83, 0xfd, 0xbf, 0x9f, 0xa1, + 0xa2, 0x7f, 0xd6, 0x19, 0x94, 0xe2, 0xc3, 0xa3, 0xb1, 0x8c, + 0x08, 0xe2, 0xd8, 0xc8, 0x6c, 0xdd, 0xea, 0x96, 0xe1, 0xc2, + 0xbd, 0x7e, 0x50, 0x4e, 0x03, 0x5b, 0xe3, 0x7e, 0xda, 0xdf, + 0x6d, 0x6e, 0x9d, 0xf5, 0xc2, 0x3c, 0xf4, 0x8f, 0x94, 0x42, + 0xc9, 0x20, 0x4c, 0x8f, 0xbb, 0x23, 0xbc, 0x75, 0xc3, 0xe7, + 0x5d, 0x71, 0xda, 0x11, 0xb3, 0xc1, 0x0d, 0x27, 0xea, 0x11, + 0x19, 0x0e, 0xed, 0xe0, 0xfb, 0x01, 0xfa, 0x8c, 0xf5, 0x4e, + 0xa8, 0x97, 0x59, 0x8a, 0x94, 0x4e, 0x01, 0xea, 0xe1, 0xb8, + 0xda, 0xd0, 0xa4, 0x34, 0x27, 0x98, 0x38, 0x31, 0x5e, 0xb4, + 0x71, 0x98, 0x81, 0x63, 0xa1, 0xff, 0xe9, 0xaa, 0x1f, 0x91, + 0xe9, 0x46, 0x3d, 0xec, 0x42, 0x4c, 0x63, 0x46, 0xc4, 0x02, + 0x62, 0x20, 0x25, 0x81, 0x0c, 0xa2, 0x20, 0x9a, 0x8c, 0x5f, + 0x28, 0x64, 0x3c, 0x9a, 0x21, 0x59, 0xf1, 0xd9, 0xa6, 0x2f, + 0x01, 0x47, 0xb9, 0xfc, 0xa0, 0x9c, 0x06, 0xb6, 0x05, 0xfc, + 0x77, 0x7d, 0xda, 0xdc, 0xf9, 0x29, 0x2d, 0xd2, 0xd8, 0x50, + 0xcb, 0xa8, 0xee, 0xb0, 0x99, 0x50, 0xae, 0x5f, 0x57, 0xb9, + 0xc9, 0x6f, 0x67, 0x4f, 0x6a, 0xeb, 0x0c, 0xef, 0x91, 0x22, + 0x38, 0xeb, 0x4d, 0x3d, 0xc7, 0x56, 0xd3, 0x64, 0xe2, 0x0b, + 0xb5, 0xb9, 0x73, 0x29, 0x09, 0x42, 0xec, 0xb9, 0x43, 0x58, + 0xc0, 0xc9, 0x55, 0x8e, 0x09, 0x3a, 0x38, 0x10, 0xe9, 0xf6, + 0x36, 0x4f, 0x2d, 0x10, 0x49, 0x13, 0xc5, 0xf3, 0x3d, 0xa2, + 0x57, 0x82, 0xea, 0xc6, 0x79, 0x50, 0x31, 0x71, 0xc8, 0xc6, + 0xc9, 0x9a, 0x85, 0xb4, 0x0e, 0xd8, 0x11, 0xbd, 0x78, 0xe7, + 0x32, 0x48, 0x66, 0x87, 0x55, 0xe7, 0x0b, 0xa1, 0xe4, 0x82, + 0xb2, 0xfc, 0xb7, 0x07, 0xee, 0x44, 0x89, 0x82, 0x34, 0x9c, + 0x2e, 0x44, 0x64, 0x38, 0x32, 0x06, 0x6a, 0x04, 0xdf, 0x23, + 0xac, 0xf2, 0x2a, 0x55, 0x87, 0xc3, 0x25, 0xf2, 0x91, 0xdb, + 0xa9, 0x2e, 0xd7, 0x34, 0x6a, 0xaa, 0xf3, 0x8d, 0x20, 0x2c, + 0xbf, 0xf0, 0x01, 0x8d, 0x1b, 0x19, 0xec, 0x53, 0x8c, 0x62, + 0x93, 0xef, 0x0e, 0x04, 0xab, 0xdc, 0xec, 0x63, 0x9a, 0x04, + 0x83, 0x74, 0xa0, 0x4c, 0x9e, 0xc9, 0x24, 0xe8, 0xe0, 0x40, + 0x22, 0x5e, 0xd8, 0xff, 0xb4, 0x40, 0xe7, 0x4c, 0x92, 0x4a, + 0xf4, 0xcd, 0x7f, 0xc8, 0x2a, 0x1c, 0xd7, 0x51, 0xc1, 0xea, + 0x40, 0x1c, 0x0f, 0x8f, 0xe6, 0x27, 0x5c, 0x3a, 0x66, 0x08, + 0xd3, 0x17, 0xac, 0x73, 0x97, 0x94, 0x3d, 0x17, 0x3a, 0x40, + 0x1d, 0x8a, 0x2a, 0x4d, 0xfe, 0x53, 0x54, 0x38, 0x6d, 0xa2, + 0x41, 0x17, 0x80, 0x38, 0x1e, 0xdd, 0x0f, 0x4e, 0xb8, 0x74, + 0x07, 0x16, 0xa9, 0xb1, 0xe6, 0x52, 0x12, 0x84, 0x1b, 0xb1, + 0x86, 0xb0, 0x43, 0x51, 0xaa, 0xdf, 0x44, 0xb1, 0x23, 0x1a, + 0xc8, 0xe3, 0x5b, 0x59, 0x97, 0x1a, 0x2c, 0xc1, 0x16, 0x4d, + 0x8d, 0x76, 0x3f, 0xa6, 0xa8, 0x70, 0xda, 0x87, 0x82, 0x2e, + 0xc3, 0x70, 0x3c, 0x79, 0x1e, 0x9c, 0xb3, 0xe8, 0xf8, 0x02, + 0x44, 0x75, 0x2b, 0x6c, 0x55, 0x25, 0x9e, 0x75, 0xef, 0x10, + 0x96, 0xc3, 0xeb, 0x82, 0x06, 0x51, 0x10, 0x4d, 0x46, 0xce, + 0x14, 0x32, 0x1e, 0x4d, 0xf1, 0xcd, 0x99, 0x8d, 0x53, 0xf6, + 0xca, 0x41, 0x75, 0x63, 0xdd, 0x28, 0xf9, 0xd9, 0x64, 0x63, + 0x85, 0x4d, 0xa3, 0x5a, 0x07, 0x6c, 0xad, 0x0e, 0x1f, 0x88, + 0xd1, 0xc7, 0x68, 0xfb, 0x5c, 0x88, 0xc8, 0x70, 0x64, 0x0c, + 0xd4, 0x08, 0x2b, 0x83, 0xc8, 0x1d, 0x8d, 0x66, 0xfa, 0x82, + 0x87, 0x1d, 0x5f, 0x92, 0xce, 0x34, 0x9a, 0x99, 0xae, 0xc7, + 0x17, 0x4f, 0xf2, 0xa0, 0x62, 0xe2, 0x53, 0x4f, 0x51, 0xf7, + 0xc9, 0xab, 0x1c, 0x73, 0x22, 0xb9, 0xf0, 0x0d, 0x64, 0x90, + 0xcc, 0xcd, 0xaa, 0x0d, 0x16, 0x81, 0x0b, 0xc7, 0xa7, 0x3b, + 0x39, 0xf7, 0xb8, 0x3d, 0x9c, 0x49, 0x96, 0x1c, 0xdd, 0x3d, + 0xcd, 0xb4, 0x87, 0x11, 0xe0, 0x1e, 0xde, 0x64, 0x15, 0x0e, + 0x8a, 0xc9, 0x81, 0x75, 0x20, 0x0e, 0xe6, 0xa6, 0x73, 0xf2, + 0x2e, 0x1d, 0x1e, 0xd6, 0x50, 0xba, 0x9d, 0x70, 0x44, 0xfa, + 0x66, 0xba, 0xb3, 0x7f, 0xb8, 0xfc, 0xdc, 0xa8, 0xa8, 0x96, + 0x07, 0x02, 0xb4, 0x6e, 0x76, 0xd0, 0x4d, 0x02, 0xa0, 0x3a, + 0x50, 0x26, 0x4f, 0x85, 0x58, 0xe9, 0xc2, 0x9b, 0xd6, 0x68, + 0x13, 0x0c, 0xfb, 0x9b, 0x71, 0x44, 0xd9, 0xca, 0x60, 0x8c, + 0x88, 0xa1, 0x46, 0x34, 0x53, 0x05, 0xb6, 0xb2, 0xed, 0x34, + 0x58, 0x41, 0x2c, 0x9a, 0xd9, 0xec, 0x9a, 0xd5, 0x36, 0x14, + 0x42, 0x2a, 0xda, 0x2c, 0xb7, 0x14, 0xca, 0x67, 0x65, 0xbf, + 0xa3, 0x6b, 0x69, 0x63, 0xfb, 0x4a, 0x03, 0x4b, 0xb5, 0xe9, + 0x0e, 0x4a, 0x82, 0x9e, 0x41, 0xf4, 0x44, 0x19, 0x28, 0x4a, + 0xc0, 0xda, 0xae, 0x01, 0xf0, 0x9b, 0x88, 0xda, 0xc6, 0x15, + 0x63, 0x93, 0x52, 0xe2, 0x65, 0xc1, 0xdb, 0xd0, 0x8f, 0x14, + 0x9d, 0x8d, 0x32, 0xd0, 0xa3, 0xc7, 0xb0, 0x2d, 0xe2, 0x36, + 0xd5, 0xd0, 0x9c, 0x25, 0xe0, 0xc4, 0xbb, 0x95, 0x07, 0x25, + 0x41, 0x4f, 0xc1, 0x7a, 0x22, 0xed, 0x7c, 0x01, 0x22, 0xdb, + 0xf4, 0x36, 0xcb, 0xf3, 0x4f, 0xdb, 0x96, 0x08, 0x4b, 0x80, + 0x94, 0x41, 0xbc, 0xb3, 0x67, 0x6f, 0xe3, 0x8f, 0x0e, 0x7c, + 0x09, 0x6f, 0xc3, 0xd1, 0x80, 0x8e, 0x66, 0xf4, 0x38, 0xb0, + 0x01, 0xc1, 0x3c, 0xd5, 0x90, 0xaa, 0xd8, 0xc1, 0xba, 0xc9, + 0x5d, 0xcd, 0x19, 0x37, 0x4f, 0x05, 0xaa, 0x31, 0xa2, 0xee, + 0x61, 0xb9, 0xb0, 0x31, 0x8b, 0x28, 0xa4, 0xc5, 0x81, 0x86, + 0xe0, 0x85, 0x04, 0x82, 0xf0, 0xd2, 0x05, 0xed, 0xe6, 0x82, + 0xad, 0xa2, 0xb7, 0xb2, 0x64, 0xdc, 0x27, 0x21, 0xe8, 0x87, + 0x01, 0x39, 0xd2, 0xe6, 0xbb, 0x87, 0x7e, 0xcb, 0x3f, 0xed, + 0x3c, 0xb6, 0x76, 0xf2, 0x12, 0x0c, 0x3e, 0xa7, 0xf7, 0xa5, + 0x6d, 0x0c, 0x46, 0x9c, 0x23, 0xd4, 0x61, 0x98, 0x78, 0xde, + 0x83, 0xad, 0x31, 0x03, 0xd3, 0x6e, 0x5b, 0xad, 0x89, 0x3f, + 0xa5, 0x76, 0xf6, 0xe5, 0x89, 0xe6, 0xff, 0xc8, 0xf3, 0x99, + 0xb0, 0x04, 0xe8, 0xc8, 0x2f, 0x3c, 0xf6, 0x46, 0x20, 0xc5, + 0x8d, 0x39, 0x5e, 0xbe, 0x36, 0xac, 0xa8, 0x99, 0xfc, 0xbe, + 0x30, 0x0b, 0x18, 0xb0, 0x42, 0x61, 0xaf, 0x80, 0xae, 0xb3, + 0x52, 0x3c, 0x64, 0x54, 0x56, 0xb3, 0x26, 0x8a, 0x13, 0x77, + 0xe5, 0x5a, 0x9f, 0x4d, 0x2e, 0x9e, 0x27, 0x83, 0xc4, 0x07, + 0xa6, 0x9e, 0xa2, 0x2d, 0x51, 0x95, 0x38, 0xe6, 0x84, 0x03, + 0x66, 0xae, 0xdf, 0x5a, 0x9e, 0xd6, 0xd1, 0xae, 0x79, 0x18, + 0xdd, 0x43, 0x7f, 0xc3, 0xe6, 0xd4, 0x14, 0xcf, 0xb6, 0x1c, + 0x11, 0xdf, 0xf8, 0xcf, 0x5c, 0x6f, 0x2e, 0x3f, 0x37, 0x2a, + 0xf1, 0x38, 0x7c, 0x65, 0xc2, 0x9a, 0x63, 0x6a, 0xb3, 0x65, + 0xa6, 0x03, 0x53, 0x30, 0xd6, 0x20, 0x63, 0x90, 0xcb, 0x9d, + 0xc9, 0xda, 0x89, 0xbf, 0x2c, 0x9d, 0x52, 0x0a, 0x29, 0xa0, + 0xb1, 0xc0, 0x51, 0xd3, 0xfa, 0x8b, 0x3f, 0x9e, 0x25, 0x43, + 0xd6, 0x8b, 0x38, 0x57, 0x1c, 0x39, 0x5d, 0x2e, 0xc8, 0xcf, + 0xc4, 0x58, 0x5e, 0xd3, 0xf5, 0x76, 0x6e, 0x58, 0x6b, 0xb7, + 0xd4, 0x21, 0x36, 0x3e, 0x03, 0xc9, 0x08, 0xc7, 0x23, 0x67, + 0x0a, 0x19, 0x0f, 0xc7, 0x99, 0x87, 0xad, 0xa7, 0xc8, 0x7b, + 0xed, 0x60, 0x9d, 0xe4, 0xdc, 0x11, 0x2b, 0x3f, 0xdf, 0xe4, + 0xfb, 0x86, 0x9c, 0xb7, 0x3b, 0xda, 0x70, 0xa3, 0x02, 0x41, + 0x78, 0x69, 0xe3, 0x97, 0x73, 0x41, 0xb7, 0x51, 0xba, 0x59, + 0x32, 0x6e, 0x3c, 0x6f, 0xa0, 0xb7, 0xf9, 0xe0, 0x88, 0x37, + 0xcc, 0xb7, 0xa5, 0xfe, 0xb3, 0x3b, 0x7b, 0x93, 0x8e, 0xf0, + 0x56, 0x79, 0x15, 0xcb, 0xa2, 0x80, 0xf3, 0x79, 0xa9, 0x8c, + 0xb5, 0x17, 0x8a, 0x1a, 0xd9, 0x72, 0xbc, 0xbf, 0x6c, 0x9b, + 0x93, 0xf1, 0x3b, 0xbf, 0x60, 0x16, 0x30, 0xa3, 0x84, 0xc2, + 0x10, 0xfa, 0xc1, 0x1b, 0x92, 0xd4, 0x60, 0x31, 0x50, 0x1b, + 0x7c, 0xdc, 0x3e, 0x5e, 0x4b, 0xd5, 0x1a, 0x09, 0xf1, 0xcc, + 0x58, 0x45, 0x5c, 0x67, 0x72, 0xcc, 0xac, 0x48, 0x56, 0x0a, + 0xbe, 0x0c, 0x9d, 0xc3, 0x9f, 0xa5, 0xa4, 0x78, 0xc8, 0xa8, + 0xac, 0xa5, 0x4c, 0xd7, 0x26, 0xee, 0x09, 0xb4, 0xee, 0xa9, + 0x95, 0x23, 0xff, 0x76, 0x21, 0x26, 0xd0, 0x23, 0x62, 0x01, + 0x31, 0x10, 0xf3, 0xa1, 0xcb, 0x06, 0xcc, 0x9f, 0x7d, 0xb4, + 0xff, 0x6f, 0x61, 0x9f, 0xf2, 0x30, 0x79, 0x86, 0xfe, 0x45, + 0x97, 0x30, 0xaf, 0x72, 0x6e, 0xe9, 0xf4, 0xfe, 0x8e, 0x72, + 0x9c, 0x43, 0x4e, 0xba, 0xfc, 0x6d, 0xc9, 0x88, 0x7d, 0xa4, + 0xfe, 0x4f, 0xf3, 0xc0, 0x6b, 0xa4, 0x1c, 0xca, 0x0e, 0xfd, + 0xcf, 0x17, 0x79, 0x99, 0x3a, 0x51, 0x91, 0x9f, 0xd5, 0xd8, + 0x5e, 0x51, 0xfe, 0x42, 0x7f, 0xaa, 0x0f, 0xcc, 0xb2, 0x9f, + 0xf6, 0xce, 0xec, 0x2b, 0x2a, 0xb7, 0x3f, 0xce, 0x0c, 0x72, + 0x06, 0x2c, 0xf1, 0x89, 0x35, 0x55, 0x98, 0xa7, 0x10, 0x16, + 0xbe, 0x78, 0xe1, 0xa7, 0xec, 0xed, 0x76, 0xc8, 0x46, 0x31, + 0x6c, 0xfb, 0xe3, 0xc0, 0x66, 0xe2, 0xab, 0xc2, 0x1f, 0xc0, + 0xea, 0xd4, 0x75, 0xde, 0xdf, 0x94, 0x9c, 0x84, 0x26, 0x59, + 0x04, 0xe4, 0xce, 0x1e, 0xa9, 0x59, 0x3b, 0xaa, 0xfc, 0x32, + 0xf0, 0x9d, 0x1b, 0x4e, 0x48, 0x30, 0xf8, 0xd9, 0x5a, 0xd1, + 0x77, 0x30, 0xdb, 0x35, 0x8c, 0xd6, 0x47, 0x25, 0x05, 0x98, + 0x18, 0x8a, 0x65, 0xa9, 0x1e, 0x2b, 0x11, 0x8a, 0x68, 0x4a, + 0x34, 0x2a, 0x9b, 0x8d, 0x50, 0x94, 0x43, 0x77, 0x9f, 0x02, + 0x23, 0xf5, 0xd3, 0x77, 0x4f, 0x2a, 0xc6, 0xe5, 0xa4, 0x07, + 0xf0, 0x7f, 0xc5, 0x99, 0x62, 0x06, 0x65, 0xdc, 0xb6, 0x99, + 0xd1, 0x7e, 0x89, 0xec, 0x2f, 0x09, 0xd1, 0x0f, 0x3d, 0x53, + 0x25, 0xf1, 0xa3, 0x08, 0x13, 0x53, 0x5e, 0x78, 0x2f, 0x8c, + 0x40, 0x49, 0x12, 0x74, 0x70, 0x20, 0x11, 0x2f, 0x6c, 0x9e, + 0x5a, 0x20, 0x92, 0x26, 0x49, 0x25, 0x7a, 0x87, 0x87, 0xca, + 0x6e, 0x69, 0xfc, 0x3d, 0x94, 0xcf, 0xde, 0x69, 0xe0, 0x9f, + 0x70, 0xe4, 0xb7, 0xb8, 0x08, 0x7d, 0x81, 0xec, 0x49, 0x6a, + 0x30, 0xf9, 0x28, 0xec, 0x3e, 0x6e, 0x1f, 0x2f, 0xc4, 0x8b, + 0x59, 0xae, 0x7b, 0x67, 0x76, 0xf4, 0x15, 0xba, 0xfe, 0x67, + 0x06, 0x39, 0x03, 0x16, 0x99, 0xa5, 0xfc, 0xdd, 0xe5, 0x03, + 0xee, 0x59, 0x4d, 0xb8, 0x8a, 0x03, 0xf0, 0x27, 0x78, 0x35, + 0x89, 0x26, 0x21, 0x70, 0xf8, 0xca, 0x47, 0xf7, 0xc6, 0xd4, + 0xa5, 0xca, 0x8f, 0x06, 0xa6, 0x60, 0x6f, 0x40, 0x85, 0x44, + 0xdf, 0x52, 0x7f, 0xc6, 0x98, 0x60, 0xd4, 0x52, 0x0e, 0x65, + 0x07, 0x9f, 0x86, 0xea, 0x55, 0x0c, 0x5b, 0xfd, 0xfa, 0xab, + 0x3d, 0xde, 0xc2, 0xfd, 0x27, 0x60, 0xf2, 0xcf, 0x3f, 0x8a, + 0x4e, 0x42, 0x13, 0xcd, 0x02, 0x72, 0x67, 0x0f, 0xb5, 0xcd, + 0xfc, 0x55, 0x7e, 0x19, 0x78, 0xaf, 0xec, 0x27, 0x24, 0x18, + 0x7c, 0x8d, 0x2d, 0x89, 0xda, 0x18, 0x8c, 0xfb, 0x46, 0x6b, + 0xc2, 0xf3, 0xfb, 0xcb, 0x4c, 0xb2, 0x08, 0x0b, 0x5f, 0x3c, + 0x91, 0xb2, 0x76, 0x97, 0x3b, 0x64, 0x23, 0xf9, 0x36, 0x9c, + 0x90, 0x60, 0x33, 0x71, 0xb4, 0x61, 0xee, 0x60, 0x75, 0x6a, + 0xdb, 0x6f, 0x8e, 0x4a, 0x75, 0x3b, 0x1a, 0xcb, 0x1d, 0xc0, + 0xfd, 0xbc, 0x62, 0xcb, 0xdf, 0x1b, 0x8e, 0x73, 0xa9, 0xe3, + 0x37, 0xdb, 0x29, 0x9c, 0x93, 0xed, 0xb2, 0xd7, 0xeb, 0x9c, + 0x02, 0x17, 0x01, 0xb3, 0x77, 0x63, 0x5c, 0x36, 0x63, 0xed, + 0x13, 0x5d, 0x0b, 0x91, 0xef, 0xed, 0x6e, 0x73, 0x37, 0x3c, + 0x02, 0x28, 0xf6, 0x2e, 0xd5, 0xd4, 0x24, 0xc8, 0x71, 0xee, + 0xa8, 0xd4, 0x20, 0xb3, 0x10, 0x61, 0x7c, 0xff, 0xf4, 0xa0, + 0x64, 0xef, 0xa7, 0x33, 0x7d, 0x41, 0xa2, 0xef, 0xce, 0x49, + 0x67, 0x1a, 0x4d, 0xad, 0xcd, 0x57, 0xdc, 0xd2, 0x3b, 0x7a, + 0xeb, 0x5d, 0x7f, 0xd2, 0x03, 0xfd, 0xe0, 0x0b, 0xad, 0xb3, + 0x6b, 0xed, 0x4a, 0x71, 0x80, 0xb0, 0xb9, 0x46, 0x04, 0x71, + 0x6c, 0x64, 0x36, 0x8f, 0x75, 0x4b, 0xa2, 0x65, 0x37, 0xd5, + 0x7e, 0xff, 0x4a, 0x86, 0x6f, 0xd5, 0x70, 0xae, 0x38, 0x72, + 0xba, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x18, + 0xb6, 0x39, 0x37, 0x95, 0x7a, 0x7f, 0x47, 0x39, 0x4e, 0xc0, + 0x27, 0x5d, 0x7e, 0xd7, 0x71, 0xe4, 0xbb, 0xbd, 0xd8, 0xf5, + 0xe5, 0x21, 0x76, 0xbd, 0xc0, 0x2c, 0x60, 0x85, 0xcb, 0x47, + 0x42, 0xe0, 0x33, 0x57, 0x8e, 0x2d, 0x4f, 0x6b, 0x89, 0x57, + 0xdd, 0x0c, 0x8f, 0xc0, 0xde, 0x80, + }, + { + /* 4 */ + 0xc2, 0x36, 0xbf, 0xb8, 0xb8, 0xed, 0xf8, 0xa5, 0xff, 0x6a, + 0x2d, 0xa5, 0x4a, 0x84, 0x52, 0x5c, 0x95, 0x8b, 0xd1, 0x9a, + 0x9a, 0x0a, 0x38, 0x2d, 0x73, 0xc6, 0x2f, 0x2d, 0x97, 0x24, + 0xdb, 0x4d, 0xa6, 0x30, 0x54, 0xed, 0xed, 0x72, 0xdb, 0x32, + 0x62, 0xa7, 0x28, 0x32, 0xbc, 0x57, 0x26, 0x97, 0x27, 0xcf, + 0x12, 0x53, 0x53, 0x58, 0x5c, 0x8f, 0x1d, 0x07, 0x49, 0x8f, + 0xe1, 0x72, 0x4a, 0xc8, 0xe0, 0xe4, 0xf8, 0xe2, 0xe2, 0xbd, + 0xfb, 0x0e, 0xe1, 0x95, 0x96, 0x0e, 0x78, 0x67, 0x45, 0x71, + 0x86, 0x51, 0x31, 0x0c, 0x0c, 0x4d, 0xfe, 0x30, 0xc3, 0x57, + 0x98, 0x30, 0x2e, 0x81, 0x7c, 0x06, 0x06, 0x16, 0x66, 0x0e, + 0x0e, 0xb1, 0x6a, 0x38, 0x02, 0x11, 0x1d, 0x38, 0x23, 0x5f, + 0xd7, 0x07, 0x5d, 0x87, 0xc4, 0x30, 0x30, 0xf7, 0x7e, 0xc0, + 0x8a, 0x9f, 0x25, 0xc0, 0xb8, 0x41, 0x33, 0x18, 0x09, 0x31, + 0x99, 0x15, 0x15, 0xa9, 0x8b, 0x54, 0x07, 0xda, 0xc8, 0x54, + 0x95, 0x2f, 0x30, 0xeb, 0x78, 0xfb, 0xf4, 0xd8, 0xd8, 0xc0, + 0x04, 0xe6, 0x28, 0x97, 0x67, 0xe6, 0xf9, 0x06, 0x34, 0x6c, + 0xf4, 0x90, 0x6f, 0xc6, 0xc6, 0x9d, 0x44, 0x9e, 0xed, 0xf3, + 0xd8, 0x9e, 0xb2, 0x66, 0xf2, 0x63, 0x16, 0xc7, 0xb5, 0x9f, + 0x9f, 0x4f, 0x99, 0x39, 0xb3, 0x69, 0x45, 0x39, 0x6a, 0x34, + 0xfa, 0xae, 0x19, 0xe0, 0x4a, 0x84, 0x84, 0x57, 0x78, 0x55, + 0xb6, 0xa2, 0x90, 0x55, 0xdc, 0x44, 0x1d, 0x42, 0xec, 0xc8, + 0x34, 0xfe, 0xfe, 0x1c, 0x2f, 0x7e, 0xe5, 0xb7, 0xac, 0x7e, + 0x3e, 0xd9, 0x28, 0x7f, 0x69, 0x92, 0x36, 0xf5, 0xf5, 0xe8, + 0xe4, 0x52, 0x27, 0x09, 0xdb, 0x52, 0xe0, 0x96, 0xde, 0x9b, + 0x04, 0xa5, 0x44, 0xb5, 0xb5, 0xde, 0x4c, 0x91, 0xbd, 0x1e, + 0x16, 0x91, 0x83, 0x6a, 0x9a, 0xbb, 0x8f, 0x60, 0xa8, 0x19, + 0x19, 0xe4, 0x75, 0x64, 0xc4, 0x8d, 0x50, 0x64, 0xbb, 0xae, + 0x4c, 0xed, 0x30, 0xb0, 0xb6, 0x70, 0x70, 0xc1, 0xd6, 0x03, + 0x10, 0x88, 0xe8, 0x03, 0xdb, 0xbd, 0x77, 0x38, 0x39, 0x81, + 0x2f, 0x65, 0x65, 0x68, 0x5d, 0x57, 0x17, 0x52, 0x20, 0x57, + 0x4e, 0x92, 0x47, 0xd3, 0xe9, 0xd5, 0x61, 0xf7, 0xf7, 0x14, + 0x70, 0x5a, 0xe6, 0x4f, 0x5e, 0x5a, 0xed, 0x48, 0x75, 0x9a, + 0x03, 0x0b, 0x33, 0x07, 0x07, 0xb9, 0x35, 0x1c, 0x01, 0xe9, + 0xef, 0x1c, 0xf0, 0xce, 0x8a, 0xe2, 0xcf, 0xa2, 0x62, 0x18, + 0x18, 0x9a, 0x3f, 0x60, 0x45, 0xae, 0xf3, 0x60, 0x5c, 0xc1, + 0xf8, 0x0c, 0x70, 0x72, 0x7c, 0x71, 0x71, 0xbf, 0x9c, 0x07, + 0x91, 0xab, 0x4b, 0x07, 0x3c, 0xd2, 0xc3, 0xd9, 0x43, 0xc9, + 0xf9, 0x06, 0x06, 0xc7, 0x7f, 0x18, 0x80, 0xca, 0x4c, 0x18, + 0x17, 0xa1, 0x3e, 0x03, 0x55, 0x0e, 0x4c, 0x99, 0x99, 0x88, + 0xe6, 0x21, 0x33, 0xa3, 0x09, 0x21, 0x7d, 0x95, 0xc4, 0xad, + 0x2c, 0x4d, 0xa9, 0xfd, 0xfd, 0x9e, 0xf1, 0x72, 0xa5, 0xd2, + 0x8a, 0x72, 0xd4, 0x68, 0x37, 0x9f, 0x12, 0x62, 0xf1, 0x2a, + 0x2a, 0x91, 0xd5, 0xa8, 0x0e, 0x77, 0x53, 0xa8, 0xe9, 0x5e, + 0x60, 0x15, 0x8e, 0xd8, 0xb9, 0xa5, 0xa5, 0x32, 0x66, 0xd1, + 0x7a, 0x6b, 0xb4, 0xd1, 0xeb, 0x55, 0x8b, 0xb3, 0xd5, 0x49, + 0x1b, 0x9b, 0x9b, 0x74, 0x72, 0x29, 0xf2, 0xe5, 0x8c, 0x29, + 0x70, 0x4b, 0x6f, 0xac, 0x3d, 0x24, 0x6b, 0xd0, 0xd0, 0xb6, + 0x11, 0xc6, 0xaa, 0x4c, 0x36, 0xc6, 0xcd, 0xf8, 0xdd, 0x68, + 0xd2, 0xe7, 0x6c, 0x29, 0x29, 0x13, 0x0b, 0xa4, 0x4e, 0x12, + 0x75, 0xa4, 0x03, 0xef, 0x7f, 0xf5, 0x76, 0x64, 0x1a, 0x7f, + 0x7f, 0x0e, 0xf6, 0x3f, 0x93, 0xba, 0x56, 0x3f, 0x1f, 0x8d, + 0x14, 0xde, 0x18, 0x58, 0x5b, 0x38, 0x38, 0x81, 0x6b, 0xe0, + 0x08, 0x44, 0x74, 0xe0, 0x8c, 0xbf, 0xda, 0x1c, 0x35, 0xad, + 0xe3, 0x79, 0x79, 0xc9, 0x89, 0x27, 0x13, 0x70, 0x1a, 0x27, + 0x08, 0x2c, 0x2a, 0xdd, 0x07, 0xae, 0x77, 0xb2, 0xb2, 0x67, + 0x79, 0x8d, 0xbc, 0xf7, 0xf9, 0x8d, 0x73, 0xa4, 0x10, 0x59, + 0xc0, 0x85, 0x9d, 0x03, 0x03, 0x82, 0xde, 0x0c, 0x40, 0x65, + 0x26, 0x0c, 0xea, 0xb1, 0x1f, 0xe0, 0xf7, 0x9b, 0x5c, 0xc1, + 0xc1, 0x24, 0x71, 0x82, 0xec, 0x1a, 0x37, 0x82, 0x42, 0xa8, + 0x78, 0x81, 0xb8, 0x7e, 0x69, 0xdb, 0xdb, 0x42, 0xda, 0xea, + 0x68, 0xf2, 0x41, 0xea, 0x13, 0xb7, 0x2b, 0x8c, 0x72, 0xc1, + 0x5e, 0xca, 0xca, 0xd0, 0xba, 0xae, 0x2e, 0xa4, 0x40, 0xae, + 0x9c, 0xe7, 0x8e, 0x65, 0x11, 0x69, 0xc2, 0x2d, 0x2d, 0x28, + 0xe0, 0xb4, 0x0f, 0x9e, 0xbc, 0xb4, 0x19, 0x90, 0xea, 0xf7, + 0xb4, 0x52, 0xa5, 0xc7, 0xc7, 0xe3, 0x0e, 0x9a, 0x6c, 0xd0, + 0x7b, 0x9a, 0x55, 0x09, 0x46, 0x82, 0xff, 0x12, 0xd4, 0x68, + 0x68, 0x5b, 0xe9, 0x63, 0x55, 0x26, 0x1b, 0x63, 0x87, 0x7c, + 0x8f, 0x34, 0x1a, 0xeb, 0x79, 0x83, 0x83, 0xee, 0x4d, 0x49, + 0xb7, 0x4b, 0x7f, 0x49, 0x2c, 0x8a, 0x97, 0xa0, 0x48, 0x4b, + 0x42, 0xa8, 0xa8, 0x01, 0xd2, 0xe5, 0x38, 0x1f, 0x8f, 0xe5, + 0x22, 0xbb, 0x43, 0x54, 0xaa, 0x1c, 0x98, 0xf1, 0xf1, 0xd3, + 0x0f, 0x42, 0x66, 0x85, 0x12, 0x42, 0xfa, 0xe9, 0x4b, 0x99, + 0x58, 0x9a, 0x91, 0x39, 0x39, 0xff, 0x21, 0xe4, 0x89, 0x67, + 0xd7, 0xe4, 0x6b, 0xd0, 0x6e, 0xfd, 0x93, 0x9d, 0xb7, 0x94, + 0x94, 0xbb, 0x52, 0x15, 0x71, 0xd7, 0x32, 0x15, 0xb4, 0x7b, + 0x0c, 0x4a, 0x21, 0xd9, 0x74, 0x5d, 0x5d, 0xe9, 0x36, 0xb7, + 0x1f, 0x16, 0x54, 0xb7, 0xc2, 0x2d, 0x9d, 0xcf, 0xdd, 0xc0, + 0x93, 0x32, 0x32, 0x0b, 0xea, 0xc8, 0x4b, 0xd9, 0xa0, 0xc8, + 0xb5, 0x9f, 0x98, 0x19, 0x60, 0xa3, 0xaf, 0xe0, 0xe0, 0x41, + 0x6f, 0x06, 0x20, 0xd3, 0x13, 0x06, 0x75, 0xb9, 0xee, 0x70, + 0x0c, 0x2c, 0xcc, 0x1c, 0x1c, 0xa1, 0xd4, 0x70, 0x04, 0x22, + 0x3a, 0x70, 0x46, 0xbe, 0x6d, 0x0e, 0xc4, 0x20, 0xd9, 0xb6, + 0xb6, 0x5c, 0x92, 0x9d, 0xfd, 0x7b, 0x30, 0x9d, 0x69, 0xdb, + 0x85, 0x5b, 0x9a, 0xac, 0x2e, 0x81, 0x81, 0x12, 0xd9, 0x41, + 0x76, 0x0d, 0xfa, 0x41, 0x21, 0x54, 0x3c, 0xa1, 0x5c, 0x3f, + 0xd5, 0x8c, 0x8c, 0x21, 0x6d, 0x75, 0x34, 0x79, 0xc1, 0x75, + 0xe8, 0xba, 0xf4, 0x46, 0x53, 0x18, 0x2a, 0x97, 0x97, 0x39, + 0x8c, 0x19, 0x31, 0xb2, 0x14, 0x19, 0x5e, 0xca, 0x13, 0xaa, + 0xcd, 0x11, 0x40, 0xa3, 0xa3, 0xf5, 0x19, 0xc9, 0xfa, 0xa1, + 0xf8, 0xc9, 0xfc, 0xf4, 0xb5, 0xb0, 0x32, 0x03, 0x94, 0xcb, + 0xcb, 0xae, 0xf0, 0xaa, 0xaf, 0x87, 0xe3, 0xaa, 0x7b, 0x88, + 0x3a, 0x84, 0x1b, 0x53, 0x68, 0x3f, 0x3f, 0x38, 0x5e, 0xfc, + 0x09, 0xad, 0x9b, 0xfc, 0x7c, 0x71, 0x50, 0xfe, 0x5a, 0x29, + 0xb3, 0x82, 0x82, 0x90, 0x07, 0x4d, 0x36, 0x68, 0xdc, 0x4d, + 0xcb, 0xe5, 0x23, 0x41, 0xa1, 0x9e, 0x23, 0x5f, 0x5f, 0x15, + 0xa2, 0xbf, 0xde, 0x50, 0xd1, 0xbf, 0xcf, 0xf3, 0x36, 0xce, + 0xe5, 0xf9, 0xad, 0xeb, 0xeb, 0xb5, 0xa4, 0x2a, 0xe2, 0x6d, + 0x64, 0x2a, 0xab, 0xf6, 0x18, 0x94, 0x3c, 0x9c, 0x7a, 0x6c, + 0x6c, 0x60, 0x02, 0x73, 0x14, 0xaa, 0xd2, 0x73, 0x9d, 0x03, + 0x1a, 0x36, 0x97, 0x38, 0xf3, 0x21, 0x21, 0x65, 0x1e, 0x84, + 0xcc, 0xc9, 0x24, 0x84, 0x37, 0x11, 0x96, 0xf1, 0xce, 0x1a, + 0x73, 0xa4, 0xa4, 0x4c, 0x2c, 0xd5, 0xfb, 0x48, 0x17, 0xd5, + 0x0c, 0x3a, 0x3f, 0x52, 0x6d, 0x37, 0x72, 0x40, 0x40, 0x36, + 0xa8, 0xc3, 0x9a, 0x17, 0xcd, 0xc3, 0x63, 0xfc, 0x44, 0x20, + 0x62, 0x10, 0x8d, 0x5b, 0x5b, 0x2e, 0x49, 0xaf, 0x9f, 0xdc, + 0x18, 0xaf, 0xd5, 0x8c, 0xa3, 0xcc, 0xf5, 0x28, 0x7e, 0x7a, + 0x7a, 0x4b, 0x57, 0x2b, 0x53, 0x15, 0x3c, 0x2b, 0xe2, 0x9d, + 0x35, 0x3d, 0xb7, 0x59, 0x96, 0xc0, 0xc0, 0x5a, 0x3b, 0x86, + 0x6d, 0x39, 0x94, 0x86, 0xa5, 0xc7, 0xcc, 0x60, 0xe2, 0x57, + 0xda, 0x59, 0x59, 0xd2, 0xdd, 0xa7, 0x5e, 0x9a, 0x9d, 0xa7, + 0xd8, 0x52, 0x08, 0xcd, 0x41, 0x7a, 0xdb, 0xbd, 0xbd, 0xa8, + 0x59, 0xb1, 0x3f, 0xc5, 0x47, 0xb1, 0xb7, 0x94, 0x73, 0xbf, + 0x71, 0xca, 0x6d, 0xcd, 0xcd, 0x69, 0x8f, 0xb2, 0x2f, 0x4d, + 0xaf, 0xb2, 0x6c, 0x29, 0x04, 0x87, 0xf9, 0x04, 0xb2, 0x66, + 0x66, 0xea, 0x83, 0x5b, 0x57, 0x37, 0x06, 0x5b, 0xa4, 0x23, + 0x58, 0x33, 0xea, 0xde, 0x52, 0xf0, 0xf0, 0xad, 0x45, 0x46, + 0xe7, 0xa6, 0xb1, 0x46, 0x1d, 0x86, 0xff, 0x78, 0xae, 0xb9, + 0xdc, 0x44, 0x44, 0x0d, 0x43, 0xd3, 0xdb, 0x9b, 0x04, 0xd3, + 0x79, 0x83, 0xd1, 0x22, 0xe4, 0x41, 0xbc, 0x57, 0x57, 0x63, + 0xb7, 0x9f, 0x5c, 0x8b, 0x80, 0x9f, 0xfb, 0x0d, 0xdf, 0xca, + 0x0b, 0x82, 0xbb, 0xae, 0xae, 0xc6, 0xad, 0xfd, 0xb8, 0xd5, + 0xc3, 0xfd, 0x35, 0x1a, 0x7d, 0x57, 0xde, 0xcb, 0xa0, 0x35, + 0x35, 0xb2, 0xdf, 0xd4, 0x4a, 0x30, 0x4f, 0xd4, 0x45, 0x51, + 0x12, 0xfb, 0xf0, 0x35, 0x2b, 0x73, 0x73, 0x43, 0x08, 0x0f, + 0x50, 0xed, 0xce, 0x0f, 0x31, 0x0c, 0x68, 0xd8, 0xd4, 0xf1, + 0x0a, 0x27, 0x27, 0xa2, 0x61, 0x9c, 0x4c, 0x03, 0x68, 0x9c, + 0x20, 0xb0, 0xa8, 0xf2, 0xb5, 0xea, 0xb4, 0x7b, 0x7b, 0x35, + 0x1d, 0x2f, 0xd2, 0x36, 0x9f, 0x2f, 0x05, 0xf2, 0x81, 0xdc, + 0xa4, 0x83, 0x76, 0x56, 0x56, 0x1d, 0xfd, 0x9b, 0xdd, 0xa8, + 0x23, 0x9b, 0x1c, 0x62, 0x6b, 0x2b, 0xba, 0xcd, 0x4b, 0x60, + 0x60, 0x2d, 0xfc, 0x43, 0xd7, 0xfd, 0x4a, 0x43, 0xb3, 0x82, + 0x66, 0x30, 0xe8, 0x6d, 0x70, 0x4b, 0x4b, 0xc2, 0x63, 0xef, + 0x58, 0xa9, 0xba, 0xef, 0xbd, 0xb3, 0xb2, 0xc4, 0x0e, 0x9f, + 0xee, 0xa7, 0xa7, 0xce, 0xf2, 0xd9, 0xbb, 0x2d, 0x31, 0xd9, + 0xe6, 0x8b, 0x20, 0xb2, 0x9c, 0xba, 0x48, 0x8f, 0x8f, 0xa3, + 0xb3, 0x79, 0x74, 0x1c, 0xe7, 0x79, 0x02, 0x0b, 0xeb, 0xa6, + 0x31, 0x08, 0xa7, 0xcc, 0xcc, 0x17, 0xc5, 0xb6, 0xae, 0x6e, + 0x0c, 0xb6, 0x8b, 0x46, 0xb0, 0x66, 0x79, 0x43, 0xe5, 0x64, + 0x64, 0x16, 0x17, 0x53, 0x96, 0x71, 0x83, 0x53, 0xa9, 0xfd, + 0xf3, 0x32, 0xfc, 0x19, 0xe7, 0x6f, 0x6f, 0xe2, 0xdc, 0x7f, + 0x54, 0xcf, 0xf4, 0x7f, 0x77, 0xb2, 0x05, 0xd6, 0x4d, 0x56, + 0x17, 0xa1, 0xa1, 0x09, 0x8d, 0xc1, 0x3b, 0xe7, 0x7d, 0xc1, + 0xf1, 0x2a, 0x1e, 0xb1, 0xdb, 0xd6, 0xf5, 0x3c, 0x3c, 0xba, + 0x80, 0xf0, 0x49, 0xc8, 0xbd, 0xf0, 0x96, 0xc0, 0x4f, 0x1e, + 0x75, 0x6f, 0x29, 0x78, 0x78, 0xb7, 0xc3, 0x23, 0x92, 0x53, + 0xb9, 0x23, 0xef, 0x43, 0x9e, 0x3c, 0x68, 0x2a, 0x27, 0x49, + 0x49, 0x3e, 0xf7, 0xe7, 0x99, 0xef, 0x3f, 0xe7, 0xb0, 0x6d, + 0x19, 0xc5, 0x15, 0xcc, 0x86, 0x98, 0x98, 0xf6, 0xac, 0x25, + 0xb2, 0x80, 0xaa, 0x25, 0x9a, 0xfa, 0x70, 0x4c, 0xa9, 0x17, + 0xab, 0xf6, 0xf6, 0x6a, 0x3a, 0x5e, 0x67, 0x6c, 0xfd, 0x5e, + 0x0a, 0x27, 0xc1, 0x7b, 0x01, 0xb8, 0x11, 0xbc, 0xbc, 0xd6, + 0x13, 0xb5, 0xbe, 0xe6, 0xe4, 0xb5, 0x50, 0xfb, 0xc7, 0x5e, + 0x23, 0x6a, 0x56, 0xe6, 0xe6, 0x86, 0x10, 0x1e, 0xa0, 0x19, + 0x5f, 0x1e, 0x62, 0x18, 0xd0, 0x73, 0xb2, 0x44, 0xc3, 0xc9, + 0xc9, 0x52, 0x64, 0xa2, 0x6e, 0xc1, 0x66, 0xa2, 0x76, 0x56, + 0x91, 0x85, 0x6e, 0x3c, 0x41, 0x47, 0x47, 0x8f, 0x9d, 0xdf, + 0x9b, 0xfe, 0x22, 0xdf, 0x93, 0x32, 0xce, 0xc2, 0xf2, 0x86, + 0x09, 0xc8, 0xc8, 0x2c, 0x2e, 0xa6, 0xef, 0xe2, 0xc5, 0xa6, + 0x91, 0x39, 0x25, 0x64, 0x3b, 0x32, 0x0d, 0xde, 0xde, 0x07, + 0x7b, 0xfe, 0xa8, 0x5d, 0x2b, 0xfe, 0xee, 0xa7, 0x0a, 0x6f, + 0x52, 0xa0, 0x3b, 0x2b, 0x2b, 0xef, 0x9f, 0xac, 0x8f, 0x54, + 0xf0, 0xac, 0x0e, 0x31, 0xd4, 0xf4, 0x65, 0xbe, 0xfa, 0xe9, + 0xe9, 0x49, 0x30, 0x22, 0x23, 0x2b, 0xe1, 0x22, 0xa6, 0x28, + 0xb3, 0x95, 0x4b, 0x40, 0x71, 0xaf, 0xaf, 0xb8, 0xe7, 0xf9, + 0x39, 0xf6, 0x60, 0xf9, 0xd2, 0x75, 0xc9, 0xb6, 0x38, 0x39, + 0x3e, 0xd9, 0xd9, 0xbe, 0x4e, 0xe2, 0xa9, 0xb4, 0xc4, 0xe2, + 0x1e, 0x69, 0x80, 0x8d, 0x2a, 0x5b, 0xcf, 0xf3, 0xf3, 0x2f, + 0x9b, 0x4a, 0xa7, 0xc3, 0x97, 0x4a, 0xf7, 0x37, 0xe0, 0x98, + 0x91, 0x2e, 0x95, 0x2f, 0x2f, 0xd4, 0x74, 0xbc, 0xce, 0xd8, + 0x39, 0xbc, 0x14, 0x4e, 0x41, 0xf6, 0xd6, 0x42, 0x28, 0x9c, + 0x9c, 0xcd, 0x47, 0x35, 0xf3, 0x0c, 0x63, 0x35, 0x80, 0x85, + 0xe5, 0x4e, 0xfd, 0xa1, 0xf6, 0xd3, 0xd3, 0x34, 0xcf, 0xca, + 0xea, 0x29, 0x10, 0xca, 0x27, 0x49, 0xc2, 0x88, 0xf8, 0xbc, + 0xa3, 0xda, 0xda, 0x3c, 0x90, 0xee, 0xe9, 0xd1, 0xe2, 0xee, + 0xf4, 0xd8, 0x9f, 0x6d, 0x8c, 0x6b, 0x9b, 0x1e, 0x1e, 0x5d, + 0x40, 0x78, 0xc5, 0x64, 0xbf, 0x78, 0x4b, 0x60, 0xc6, 0x0f, + 0x50, 0x13, 0x19, 0x90, 0x90, 0x80, 0xb9, 0x05, 0x30, 0x5b, + 0xfb, 0x05, 0xae, 0x04, 0x99, 0x48, 0x7f, 0x55, 0x83, 0x6a, + 0x6a, 0xa7, 0x7d, 0x6b, 0x94, 0x60, 0x9e, 0x6b, 0x8a, 0xa2, + 0x24, 0x35, 0x59, 0x22, 0x80, 0x85, 0x85, 0x29, 0x32, 0x51, + 0x37, 0x81, 0x33, 0x51, 0x3b, 0x2b, 0xa9, 0xa3, 0x08, 0x89, + 0x88, 0xa9, 0xa9, 0x7f, 0x98, 0xe1, 0xb9, 0x3c, 0x2c, 0xe1, + 0xc5, 0xd4, 0xf7, 0xb5, 0xd9, 0x65, 0xd7, 0x87, 0x87, 0xd5, + 0xa6, 0x59, 0xf6, 0xc7, 0xb6, 0x59, 0x36, 0xf5, 0x02, 0xa2, + 0xa2, 0x95, 0x10, 0x58, 0x58, 0xac, 0x97, 0xa3, 0xdf, 0xb9, + 0x3e, 0xa3, 0x3f, 0x3d, 0xbc, 0x2c, 0xfb, 0xb7, 0x90, 0xdd, + 0xdd, 0x85, 0xa5, 0xf2, 0xe8, 0x38, 0x0d, 0xf2, 0x04, 0x16, + 0x15, 0x8f, 0x1c, 0xfd, 0x1f, 0x8d, 0x8d, 0x5f, 0x27, 0x71, + 0xb5, 0x5a, 0x62, 0x71, 0x0f, 0xd5, 0x40, 0xa7, 0x29, 0x50, + 0xfc, 0xf4, 0xf4, 0x96, 0xae, 0x56, 0xa6, 0x2a, 0x78, 0x56, + 0x07, 0xf9, 0x6a, 0x7a, 0xd3, 0x5f, 0x7d, 0x95, 0x95, 0xc5, + 0x18, 0x11, 0xf0, 0xf4, 0x91, 0x11, 0x53, 0x14, 0xb8, 0xab, + 0x6f, 0x84, 0x50, 0xfb, 0xfb, 0x59, 0x8e, 0x6a, 0x25, 0x18, + 0xc6, 0x6a, 0xc3, 0xc9, 0x09, 0x9c, 0x47, 0x6c, 0xbd, 0xb3, + 0xb3, 0x19, 0x33, 0x89, 0x3d, 0xd4, 0x5a, 0x89, 0x94, 0xcb, + 0xa4, 0xb8, 0x54, 0xb6, 0x5d, 0x25, 0x25, 0x5e, 0xf5, 0x94, + 0x8d, 0x45, 0xed, 0x94, 0x2d, 0x6e, 0x03, 0xf3, 0x9f, 0xb1, + 0x7b, 0x88, 0x88, 0x1a, 0x86, 0x65, 0x75, 0xf5, 0x08, 0x65, + 0xf2, 0xc5, 0x61, 0x44, 0x17, 0x7f, 0xa4, 0x23, 0x23, 0x99, + 0x8a, 0x8c, 0x0d, 0x8f, 0xa1, 0x8c, 0x3a, 0xcf, 0x3d, 0xf0, + 0xe1, 0x5c, 0xe9, 0x5e, 0x5e, 0x6b, 0xe8, 0xbb, 0x5f, 0x73, + 0x72, 0xbb, 0x28, 0x9c, 0x82, 0x2f, 0x7c, 0x5e, 0xb0, 0x6d, + 0x6d, 0x1e, 0x48, 0x77, 0x95, 0x89, 0x71, 0x77, 0x7a, 0x6c, + 0xae, 0xd7, 0x46, 0xd4, 0xac, 0x0f, 0x0f, 0xcf, 0x20, 0x3c, + 0x83, 0x32, 0xbe, 0x3c, 0xc4, 0x30, 0x63, 0xe6, 0xbc, 0xdb, + 0x2d, 0x6e, 0x6e, 0x9c, 0x96, 0x7b, 0xd5, 0xec, 0x57, 0x7b, + 0x90, 0xdd, 0xb1, 0x37, 0xc5, 0x98, 0xc8, 0x0a, 0x0a, 0x8a, + 0x81, 0x28, 0x43, 0x9d, 0xd4, 0x28, 0x39, 0x20, 0x42, 0x05, + 0x22, 0xd2, 0x47, 0x5a, 0x5a, 0x50, 0x03, 0xab, 0x1e, 0xff, + 0xbb, 0xab, 0x32, 0xe3, 0x17, 0x2d, 0xbe, 0x68, 0x0f, 0xd5, + 0xd5, 0xf3, 0xb0, 0xd2, 0x6a, 0xe3, 0x5c, 0xd2, 0x30, 0xe8, + 0xfc, 0x8b, 0x96, 0x80, 0xe2, 0x9d, 0x9d, 0xb3, 0x0d, 0x31, + 0x72, 0x2f, 0xc0, 0x31, 0x67, 0xea, 0x51, 0xaf, 0x7e, 0xed, + 0x92, 0xd6, 0xd6, 0x71, 0x6e, 0xde, 0x2a, 0x86, 0x7a, 0xde, + 0xda, 0x59, 0xe3, 0x6b, 0x1d, 0x45, 0x0e, 0x31, 0x31, 0x89, + 0x34, 0xc4, 0x0b, 0xbc, 0x86, 0xc4, 0x5f, 0x2e, 0x87, 0xf9, + 0xb9, 0xc6, 0x78, 0x67, 0x67, 0x94, 0xc9, 0x5f, 0xd6, 0x14, + 0xa5, 0x5f, 0x43, 0x4c, 0xec, 0xd2, 0x9d, 0x02, 0x59, 0x33, + 0x33, 0x75, 0xa0, 0xcc, 0xca, 0xfa, 0x03, 0xcc, 0x52, 0xf0, + 0x2c, 0xf8, 0xad, 0xb2, 0xef, 0x43, 0x43, 0xb4, 0x76, 0xcf, + 0xda, 0x72, 0xeb, 0xcf, 0x89, 0x4d, 0x5b, 0xc0, 0x6c, 0x8f, + 0x63, 0xfc, 0xfc, 0xe0, 0xbb, 0x76, 0x24, 0xf1, 0x29, 0x76, + 0x33, 0x07, 0x83, 0x7e, 0x85, 0x5a, 0x02, 0x0b, 0x0b, 0xf4, + 0xcb, 0x2c, 0xc2, 0xbe, 0x77, 0x2c, 0xde, 0x4f, 0xf6, 0xe4, + 0xd1, 0xec, 0x5f, 0x2e, 0x2e, 0xaa, 0x3e, 0xb8, 0x4f, 0xfb, + 0x9a, 0xb8, 0xf3, 0x21, 0xf5, 0x17, 0x1e, 0x4e, 0x3d, 0x36, + 0x36, 0x30, 0x01, 0xd8, 0x0a, 0x55, 0x69, 0xd8, 0xaf, 0xe0, + 0x0d, 0x1b, 0xa5, 0x3b, 0x67, 0xea, 0xea, 0xcb, 0xee, 0x2e, + 0x63, 0x4e, 0xc7, 0x2e, 0x4c, 0x99, 0xac, 0x75, 0xe6, 0xf2, + 0x9e, 0xec, 0xec, 0x0c, 0x91, 0x36, 0xe3, 0x84, 0x8b, 0x36, + 0x5b, 0x38, 0x92, 0x76, 0x2e, 0xfe, 0x8b, 0x46, 0x46, 0xf1, + 0xd7, 0xdb, 0x1a, 0xdd, 0x81, 0xdb, 0x74, 0x5d, 0x7a, 0x23, + 0x5f, 0x34, 0xe6, 0x8b, 0x8b, 0x98, 0x58, 0x69, 0x35, 0x90, + 0x2e, 0x69, 0x18, 0x74, 0x7e, 0xa4, 0x61, 0x1b, 0xbe, 0x5c, + 0x5c, 0x97, 0x7c, 0xb3, 0x9e, 0x35, 0xf7, 0xb3, 0x25, 0x42, + 0x29, 0x2e, 0x83, 0x4c, 0x64, 0x05, 0x05, 0x45, 0xa1, 0x14, + 0xc0, 0xaf, 0x6a, 0x14, 0xfd, 0x10, 0x21, 0xe3, 0x44, 0x67, + 0x8e, 0xb4, 0xb4, 0xa0, 0x06, 0x95, 0x3c, 0x3d, 0xb5, 0x95, + 0x64, 0x05, 0x2e, 0x5a, 0xb1, 0x4f, 0xf0, 0xce, 0xce, 0xeb, + 0x51, 0xbe, 0x6f, 0x28, 0x89, 0xbe, 0x86, 0x98, 0x1b, 0x67, + 0xef, 0xc3, 0x07, 0xf9, 0xf9, 0xa5, 0x1a, 0x62, 0xe4, 0x5e, + 0x43, 0x62, 0xce, 0x17, 0xa2, 0x9d, 0x82, 0xf4, 0x75, 0xb9, + 0xb9, 0x93, 0xb2, 0xa1, 0x7e, 0x49, 0x8e, 0xa1, 0xad, 0xeb, + 0xe6, 0xbd, 0x36, 0xa6, 0xd0, 0x7e, 0x7e, 0x70, 0xbc, 0x3b, + 0x12, 0x99, 0xf5, 0x3b, 0xf8, 0xe2, 0xa0, 0x3f, 0xa3, 0x2d, + 0x01, 0xe4, 0xe4, 0x7a, 0x84, 0x16, 0x61, 0x5f, 0xda, 0x16, + 0x6f, 0xc6, 0x7b, 0x72, 0xaf, 0x01, 0xcd, 0xf8, 0xf8, 0xdb, + 0x50, 0x66, 0x65, 0x7d, 0xe0, 0x66, 0x29, 0x78, 0x16, 0x7c, + 0x88, 0xce, 0xdf, 0xab, 0xab, 0x83, 0x0c, 0xe9, 0x78, 0x7a, + 0xa9, 0xe9, 0xc8, 0x0a, 0x5c, 0xb4, 0x89, 0x76, 0xce, 0x17, + 0x17, 0x55, 0x1f, 0x5c, 0xc6, 0x9c, 0x4d, 0x5c, 0x98, 0xf1, + 0x9b, 0xea, 0x0f, 0x27, 0xff, 0x1b, 0x1b, 0x18, 0xe1, 0x6c, + 0x05, 0xcb, 0xd5, 0x6c, 0xb6, 0x70, 0xe7, 0xec, 0x1f, 0xf6, + 0x2c, 0x8a, 0x8a, 0xe6, 0x12, 0x6d, 0xb4, 0xb3, 0x8d, 0x6d, + 0xff, 0x1b, 0xca, 0x45, 0x42, 0x71, 0xe8, 0xba, 0xba, 0x11, + 0x6c, 0xad, 0x3e, 0x2c, 0xa8, 0xad, 0x47, 0x5a, 0xf9, 0x5d, + 0xf6, 0x23, 0x4d, 0x7d, 0x7d, 0xf2, 0x62, 0x37, 0x52, 0xfc, + 0xd3, 0x37, 0x12, 0x53, 0xbf, 0xdf, 0xdf, 0x73, 0xb1, 0x89, + 0x89, 0x64, 0xcc, 0x61, 0xf4, 0xd6, 0xab, 0x61, 0x15, 0xaa, + 0xd5, 0xa5, 0x3a, 0x8a, 0x1c, 0x62, 0x62, 0xd1, 0x68, 0x4b, + 0x16, 0xbb, 0xcf, 0x4b, 0xbe, 0x5c, 0xcd, 0x31, 0xc1, 0x3d, + 0x8c, 0xbf, 0xbf, 0x54, 0xcd, 0xb9, 0xfe, 0x83, 0xc2, 0xb9, + 0xba, 0x4a, 0xd8, 0xbe, 0x28, 0xe8, 0xed, 0x48, 0x48, 0x40, + 0xbd, 0xe3, 0x18, 0xcc, 0x9c, 0xe3, 0x57, 0x02, 0xad, 0x24, + 0xf1, 0x8d, 0x3a, 0xcf, 0xcf, 0x95, 0x1b, 0xba, 0xee, 0x0b, + 0x2a, 0xba, 0x61, 0xf7, 0xaf, 0x86, 0xcb, 0x07, 0x26, 0xad, + 0xad, 0x44, 0x73, 0xf1, 0xf8, 0xb0, 0xe5, 0xf1, 0xdf, 0xab, + 0x62, 0xb7, 0x92, 0x25, 0xa6, 0x28, 0x28, 0x6d, 0x41, 0xa0, + 0xcf, 0x31, 0xd6, 0xa0, 0xe4, 0x80, 0xcb, 0x14, 0x87, 0xe9, + 0x20, 0xb0, 0xb0, 0x9b, 0xed, 0x85, 0x7d, 0xb1, 0x7c, 0x85, + 0x7e, 0x7a, 0xbb, 0x58, 0xe7, 0x4a, 0x8f, 0x50, 0x50, 0xda, + 0x82, 0x83, 0x5d, 0x62, 0x6f, 0x83, 0x0b, 0xc3, 0x55, 0x28, + 0x3e, 0x2f, 0x58, 0xd7, 0xd7, 0x0f, 0x24, 0xda, 0xab, 0xa5, + 0xd9, 0xda, 0x3d, 0x36, 0x57, 0x8a, 0xfa, 0x0f, 0x81, 0x61, + 0x61, 0x53, 0xb6, 0x47, 0x56, 0xde, 0xe9, 0x47, 0x54, 0xed, + 0xd2, 0xd1, 0x0d, 0x94, 0xdd, 0xa0, 0xa0, 0x77, 0xc7, 0xc5, + 0xba, 0xc4, 0xde, 0xc5, 0x16, 0x45, 0xaa, 0x50, 0x51, 0xab, + 0x08, 0x2c, 0x2c, 0x56, 0xaa, 0xb0, 0x8e, 0xbd, 0x1f, 0xb0, + 0xfe, 0xff, 0x5e, 0x16, 0xb6, 0xe1, 0x87, 0x7c, 0x7c, 0x8c, + 0x28, 0x33, 0xd3, 0xdf, 0x70, 0x33, 0xf5, 0x3c, 0x0b, 0x3e, + 0x7b, 0xf0, 0xc7, 0xdf, 0xdf, 0x79, 0x31, 0xfa, 0x29, 0x7e, + 0x88, 0xfa, 0x09, 0xc8, 0xbe, 0x8e, 0x74, 0xd7, 0x38, 0xc4, + 0xc4, 0x61, 0xd0, 0x96, 0x2c, 0xb5, 0x5d, 0x96, 0xbf, 0xb8, + 0x59, 0x62, 0x3f, 0x97, 0x49, 0x6b, 0x6b, 0xd9, 0x37, 0x6f, + 0x15, 0x43, 0x3d, 0x6f, 0x6d, 0xcd, 0x90, 0xd4, 0x2f, 0x46, + 0x9a, 0xfa, 0xfa, 0x27, 0xc4, 0x6e, 0xa4, 0x3b, 0x65, 0x6e, + 0x24, 0xa6, 0xbd, 0x7d, 0x7d, 0xe6, 0xa1, 0xd1, 0xd1, 0xc8, + 0x5b, 0xc2, 0x2b, 0x6f, 0x95, 0xc2, 0x2a, 0x97, 0x69, 0x89, + 0xbb, 0x75, 0x5a, 0xdc, 0xdc, 0xfb, 0xef, 0xf6, 0x69, 0x1b, + 0xae, 0xf6, 0xe3, 0x79, 0xa1, 0x6e, 0x49, 0xf3, 0x53, 0x14, + 0x14, 0xd7, 0xc1, 0x50, 0x86, 0xf9, 0x6b, 0x50, 0x72, 0x40, + 0x84, 0x0a, 0x2b, 0xe3, 0xde, 0x4f, 0x4f, 0xf9, 0x88, 0xff, + 0x19, 0x25, 0x73, 0xff, 0xa7, 0xcc, 0x27, 0xc6, 0x99, 0xa7, + 0x1d, 0x86, 0x86, 0xab, 0xec, 0x5d, 0x77, 0xe4, 0x15, 0x5d, + 0xd1, 0x9a, 0xb6, 0x43, 0x02, 0xb3, 0x22, 0xbb, 0xbb, 0x6f, + 0x26, 0xa9, 0xbf, 0x0f, 0x0b, 0xa9, 0xa0, 0x35, 0x4d, 0xbc, + 0x37, 0x1e, 0xc1, 0xc2, 0xc2, 0xa6, 0xaf, 0x8e, 0xac, 0x7f, + 0x11, 0x8e, 0xa8, 0x19, 0x67, 0x61, 0xb3, 0xfc, 0xd2, 0x75, + 0x75, 0x84, 0x77, 0x17, 0xd0, 0x27, 0x82, 0x17, 0x26, 0xad, + 0x56, 0xdb, 0x73, 0x79, 0x4f, 0x76, 0x76, 0x06, 0xa9, 0x1b, + 0x90, 0x42, 0xa4, 0x1b, 0xcc, 0x1c, 0x49, 0x3b, 0x64, 0x06, + 0xeb, 0x55, 0x55, 0x9f, 0x23, 0x97, 0x9d, 0xcd, 0x05, 0x97, + 0xf6, 0xd3, 0x74, 0xcb, 0xdc, 0x78, 0x82, 0x8e, 0x8e, 0xdd, + 0xf9, 0x7d, 0xf5, 0x3f, 0x44, 0x7d, 0xe5, 0x64, 0x5f, 0x47, + 0xd8, 0xdd, 0xc6, 0x3b, 0x3b, 0x03, 0xb5, 0xec, 0x48, 0x21, + 0x52, 0xec, 0x66, 0x0e, 0xc5, 0xfc, 0xc9, 0xb4, 0x04, 0x16, + 0x16, 0x2b, 0x55, 0x58, 0x47, 0xbf, 0xee, 0x58, 0x7f, 0x9e, + 0x2f, 0x0b, 0xab, 0xa4, 0x89, 0x4d, 0x4d, 0x05, 0x1c, 0xf7, + 0xd8, 0x63, 0xf6, 0xf7, 0xaa, 0x12, 0x8c, 0xc7, 0x33, 0xbb, + 0x85, 0x77, 0x77, 0x78, 0xe3, 0x1f, 0x11, 0x61, 0x07, 0x1f, + 0x2b, 0x73, 0xfd, 0xda, 0x6b, 0x21, 0x14, 0x4e, 0x4e, 0x87, + 0xc2, 0xfb, 0x98, 0x06, 0xd0, 0xfb, 0x40, 0xa3, 0x93, 0x27, + 0xcc, 0xa9, 0x51, 0x1f, 0x1f, 0x23, 0x0a, 0x7c, 0x44, 0x47, + 0x1c, 0x7c, 0xac, 0x0f, 0x72, 0xee, 0x90, 0x96, 0x84, 0x93, + 0x93, 0x02, 0x67, 0x09, 0x70, 0x3e, 0xdd, 0x09, 0x44, 0xb5, + 0x86, 0xa8, 0xd0, 0x54, 0x4e, 0x92, 0x92, 0x7c, 0x2d, 0x0d, + 0xf1, 0x1d, 0x7e, 0x0d, 0xa3, 0xda, 0x32, 0x49, 0xac, 0x0a, + 0xfe, 0xff, 0xff, 0x62, 0x65, 0x7a, 0x64, 0x94, 0x0f, 0x7a, + 0xd9, 0xb6, 0x9c, 0x9e, 0xbf, 0xd0, 0x1e, 0x69, 0x69, 0x25, + 0xa3, 0x67, 0xd4, 0x05, 0xb8, 0x67, 0x60, 0x13, 0x3b, 0xd5, + 0xda, 0x6e, 0xe4, 0x80, 0x80, 0x6c, 0x93, 0x45, 0xf7, 0x2e, + 0x59, 0x45, 0xc6, 0x3b, 0x88, 0x40, 0xa7, 0x88, 0x45, 0x51, + 0x51, 0xa4, 0xc8, 0x87, 0xdc, 0x41, 0xcc, 0x87, 0xec, 0xac, + 0xe1, 0xc9, 0x5e, 0x8c, 0xf7, 0x37, 0x37, 0x4e, 0x4b, 0xdc, + 0x8b, 0x76, 0xca, 0xdc, 0x48, 0x8f, 0xb9, 0xfa, 0x98, 0x1f, + 0x0c, 0x3a, 0x3a, 0x7d, 0xff, 0xe8, 0xc9, 0x02, 0xf1, 0xe8, + 0x81, 0x61, 0x71, 0x1d, 0x7a, 0x48, 0xd6, 0x63, 0x63, 0xaf, + 0x22, 0x4f, 0x97, 0x98, 0x6c, 0x4f, 0x59, 0x33, 0x79, 0xd0, + 0x13, 0xda, 0xe0, 0x96, 0x96, 0x47, 0xc6, 0x1d, 0xb0, 0x91, + 0xb7, 0x1d, 0xb9, 0xa5, 0xa7, 0x4b, 0x6a, 0x99, 0x05, 0xf2, + 0xf2, 0x51, 0xd1, 0x4e, 0x26, 0xe0, 0x34, 0x4e, 0x10, 0x58, + 0x54, 0x79, 0x40, 0xc2, 0xca, 0x01, 0x01, 0x7e, 0x4a, 0x04, + 0x81, 0x23, 0xa3, 0x04, 0xe7, 0x6f, 0xb4, 0xe1, 0xa8, 0xaf, + 0xba, 0x4a, 0x4a, 0xbc, 0x29, 0xeb, 0xd9, 0x8a, 0x19, 0xeb, + 0x5a, 0xdc, 0x06, 0x25, 0x5b, 0x91, 0xa2, 0x3e, 0x3e, 0x46, + 0x14, 0xf8, 0x88, 0x8e, 0x38, 0xf8, 0x9b, 0x1e, 0xe4, 0x1f, + 0xeb, 0x66, 0x43, 0x4c, 0x4c, 0x7b, 0x56, 0xf3, 0x59, 0x40, + 0x55, 0xf3, 0x4d, 0x7d, 0x38, 0x26, 0x66, 0xb5, 0xc9, 0xee, + 0xee, 0xf0, 0x05, 0x3e, 0x22, 0xc2, 0x0e, 0x3e, 0x56, 0xe6, + 0x39, 0x77, 0x56, 0x05, 0x7f, 0x9e, 0x9e, 0x31, 0xd3, 0x3d, + 0x32, 0x4a, 0xe6, 0x3d, 0x8d, 0x5b, 0x4e, 0x4f, 0x81, 0xff, + 0x46, 0xbe, 0xbe, 0x2a, 0x87, 0xbd, 0x7f, 0xa0, 0x61, 0xbd, + 0x5d, 0x25, 0x6c, 0x5f, 0x77, 0xdc, 0x0b, 0xc3, 0xc3, 0xd8, + 0xe5, 0x8a, 0x2d, 0x5c, 0xb2, 0x8a, 0x4f, 0x76, 0xd3, 0x80, + 0x57, 0xbd, 0x6e, 0x22, 0x22, 0xe7, 0xc0, 0x88, 0x8c, 0xac, + 0x02, 0x88, 0xdd, 0xa0, 0x89, 0x11, 0x4e, 0x5d, 0x24, 0xa6, + 0xa6, 0xb0, 0xb8, 0xdd, 0x3a, 0x0e, 0x92, 0xdd, 0x01, 0xe4, + 0x94, 0x53, 0x8d, 0xd3, 0x8a, 0xa2, 0xa2, 0x8b, 0x53, 0xcd, + 0x7b, 0x82, 0x5b, 0xcd, 0x1b, 0x9b, 0x01, 0x51, 0xb0, 0xf7, + 0xe1, 0x72, 0x72, 0x3d, 0x42, 0x0b, 0xd1, 0xce, 0x6d, 0x0b, + 0xd6, 0x63, 0xdc, 0x39, 0xf3, 0x3e, 0x18, 0x74, 0x74, 0xfa, + 0x3d, 0x13, 0x51, 0x04, 0x21, 0x13, 0xc1, 0xc2, 0xe2, 0x3a, + 0x94, 0x33, 0xc0, 0x26, 0x26, 0xdc, 0x2b, 0x98, 0xcd, 0x20, + 0xcb, 0x98, 0xc7, 0xdf, 0x1c, 0x13, 0x20, 0x61, 0x65, 0xe1, + 0xe1, 0x3f, 0x25, 0x02, 0xa1, 0xf0, 0xb0, 0x02, 0x92, 0xd6, + 0x5a, 0x91, 0x24, 0xc4, 0x21, 0x54, 0x54, 0xe1, 0x69, 0x93, + 0x1c, 0xee, 0xa6, 0x93, 0x11, 0xbc, 0xc0, 0x2a, 0xd7, 0xfa, + 0x39, 0x20, 0x20, 0x1b, 0x54, 0x80, 0x4d, 0xea, 0x87, 0x80, + 0xd0, 0x7e, 0x22, 0x10, 0x14, 0x74, 0x97, 0x24, 0x24, 0x20, + 0xbf, 0x90, 0x0c, 0x66, 0x4e, 0x90, 0xca, 0x01, 0xb7, 0x12, + 0x9e, 0x09, 0x6a, 0x34, 0x34, 0xcc, 0x95, 0xd0, 0xcb, 0x13, + 0xec, 0xd0, 0xa2, 0x3e, 0xa6, 0x1a, 0x05, 0x1d, 0x55, 0x09, + 0x09, 0x08, 0x5f, 0x24, 0x03, 0xf8, 0xf2, 0x24, 0xd3, 0x91, + 0x5d, 0xe5, 0xc6, 0x93, 0xfb, 0x0d, 0x0d, 0x33, 0xb4, 0x34, + 0x42, 0x74, 0x3b, 0x34, 0xc9, 0xee, 0xc8, 0xe7, 0xed, 0x70, + 0x25, 0x42, 0x42, 0xca, 0x3c, 0xcb, 0x5b, 0x51, 0x48, 0xcb, + 0x6e, 0x22, 0xef, 0x21, 0xc8, 0x0c, 0x15, 0xaa, 0xaa, 0xfd, + 0x46, 0xed, 0xf9, 0x59, 0x0a, 0xed, 0x2f, 0x65, 0xe8, 0x55, + 0x9b, 0x14, 0x3f, 0x3d, 0x3d, 0xc4, 0xca, 0xf4, 0xc8, 0xeb, + 0x1e, 0xf4, 0x71, 0xaf, 0xfb, 0xff, 0xbd, 0x63, 0x3c, 0xd2, + 0xd2, 0x4a, 0x85, 0xce, 0x6b, 0x0a, 0xb3, 0xce, 0xc0, 0x26, + 0x76, 0x69, 0x84, 0xe2, 0x13, 0xb7, 0xb7, 0x22, 0xd8, 0x99, + 0x7c, 0x58, 0x93, 0x99, 0x8e, 0xb4, 0x31, 0xba, 0xc3, 0x8e, + 0xae, 0x04, 0x04, 0x3b, 0xeb, 0x10, 0x41, 0x8c, 0xc9, 0x10, + 0x1a, 0x7f, 0x95, 0x02, 0xca, 0xbf, 0x37, 0x11, 0x11, 0x92, + 0x60, 0x44, 0x46, 0x56, 0x01, 0x44, 0x8f, 0x50, 0xa5, 0xe9, + 0x8a, 0x7d, 0xfd, 0x10, 0x10, 0xec, 0x2a, 0x40, 0xc7, 0x75, + 0xa2, 0x40, 0x68, 0x3f, 0x11, 0x08, 0x34, 0x15, 0xf2, 0xc5, + 0xc5, 0x1f, 0x9a, 0x92, 0xad, 0x96, 0xfe, 0x92, 0x58, 0xd7, + 0xed, 0x83, 0x26, 0x77, 0x03, 0xef, 0xef, 0x8e, 0x4f, 0x3a, + 0xa3, 0xe1, 0xad, 0x3a, 0xb1, 0x89, 0x8d, 0x96, 0x10, 0xd1, + 0xd3, 0x91, 0x91, 0xfe, 0xf3, 0x01, 0xb1, 0x78, 0x58, 0x01, + 0x49, 0x6b, 0x2d, 0xa9, 0x25, 0x7c, 0x30, 0xe8, 0xe8, 0x37, + 0x7a, 0x26, 0xa2, 0x08, 0x42, 0x26, 0x41, 0x47, 0x07, 0x74, + 0xe3, 0xef, 0xcb, 0xe5, 0xe5, 0x04, 0xce, 0x12, 0xe0, 0x7c, + 0x79, 0x12, 0x88, 0xa9, 0xcf, 0x93, 0x63, 0xa8, 0x9c, 0xe7, + 0xe7, 0xf8, 0x5a, 0x1a, 0x21, 0x3a, 0xfc, 0x1a, 0x85, 0x77, + 0x64, 0x92, 0x0a, 0x3a, 0xaa, 0x12, 0x12, 0x10, 0xbe, 0x48, + 0x06, 0x33, 0x27, 0x48, 0x65, 0xe1, 0xba, 0x09, 0x4f, 0xe5, + 0x35, 0x1a, 0x1a, 0x66, 0xab, 0x68, 0x84, 0xe8, 0x76, 0x68, + 0x51, 0x1f, 0x53, 0x0d, 0x8b, 0xc5, 0xec, 0xac, 0xac, 0x3a, + 0x39, 0xf5, 0x79, 0x93, 0x46, 0xf5, 0x38, 0xc4, 0xd6, 0x56, + 0xc7, 0x2b, 0xea, 0xb1, 0xb1, 0xe5, 0xa7, 0x81, 0xfc, 0x92, + 0xdf, 0x81, 0x99, 0x15, 0x0f, 0xb9, 0x67, 0x0d, 0xd8, 0x52, + 0x52, 0x26, 0x16, 0x8b, 0x9c, 0x24, 0xea, 0x8b, 0x06, 0x1d, + 0xfe, 0x29, 0x2d, 0xf5, 0xb8, 0x41, 0x41, 0x48, 0xe2, 0xc7, + 0x1b, 0x34, 0x6e, 0xc7, 0x84, 0x93, 0xf0, 0xc1, 0xfe, 0xaa, + 0xc5, 0xd4, 0xd4, 0x8d, 0xfa, 0xd6, 0xeb, 0xc0, 0xff, 0xd6, + 0xd7, 0x87, 0x48, 0x6a, 0x45, 0xdf, 0x9f, 0x08, 0x08, 0x76, + 0x15, 0x20, 0x82, 0xdb, 0x51, 0x20, 0x34, 0xfe, 0xe9, 0x04, + 0xa0, 0x26, 0x32, 0xe3, 0xe3, 0xc3, 0xb1, 0x0a, 0x60, 0xb6, + 0x35, 0x0a, 0x9f, 0x08, 0xf1, 0x90, 0x80, 0x47, 0x57, 0x02, + 0x02, 0xfc, 0x94, 0x08, 0xc1, 0x46, 0x85, 0x08, 0x0d, 0xde, + 0xab, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xf8, + 0x60, 0x13, 0x13, 0x6e, 0xf4, 0x4c, 0x87, 0x10, 0x84, 0x4c, + 0x82, 0x8e, 0x0e, 0xe8, 0xee, 0x7b, 0x16, 0x45, 0x45, 0x73, + 0x09, 0xd7, 0x5a, 0xb8, 0xa7, 0xd7, 0x9e, 0xec, 0x65, 0xc3, + 0x4c, 0xee, 0x06, 0x1d, 0x1d, 0xdf, 0x9e, 0x74, 0x85, 0x01, + 0x99, 0x74, 0xa1, 0xd1, 0xd9, 0xef, + }, + { + /* 5 */ + 0xd8, 0xca, 0x20, 0x18, 0xa6, 0x5b, 0x9c, 0xaf, 0x78, 0xd9, + 0x1d, 0x80, 0x8c, 0x85, 0x3b, 0x8c, 0x69, 0x10, 0x51, 0x4c, + 0xc5, 0x06, 0x68, 0x18, 0xbf, 0x31, 0xb7, 0x87, 0xa1, 0x7c, + 0xf5, 0xa1, 0xc0, 0xd0, 0x1b, 0x9a, 0xb0, 0x2e, 0xcd, 0xb8, + 0xb7, 0xbe, 0xdf, 0x6c, 0x21, 0x29, 0x03, 0x21, 0xba, 0xff, + 0xe6, 0xab, 0xa2, 0x89, 0xd9, 0x61, 0x42, 0xa1, 0xdc, 0x1e, + 0xaa, 0x69, 0x60, 0xaa, 0x16, 0x4a, 0xed, 0x3d, 0x41, 0x6b, + 0x5a, 0x6f, 0xc9, 0x92, 0xec, 0x32, 0xcd, 0xe3, 0x9f, 0xcd, + 0x87, 0x09, 0x79, 0x52, 0xab, 0x3b, 0xd3, 0xec, 0xd9, 0x4f, + 0x3c, 0x27, 0x0e, 0x49, 0xb0, 0x0e, 0x58, 0xeb, 0x32, 0xf4, + 0xc7, 0x6f, 0xab, 0x7f, 0xa2, 0x0d, 0x36, 0xc8, 0xb2, 0x0a, + 0x39, 0xb2, 0x59, 0x24, 0x27, 0x8b, 0xe9, 0xec, 0xca, 0x36, + 0xe2, 0xff, 0xf0, 0x9c, 0x38, 0xe7, 0x85, 0x38, 0xc4, 0x6a, + 0x4f, 0xa5, 0x08, 0x67, 0x8a, 0x5f, 0x74, 0xf0, 0x41, 0xff, + 0x4c, 0x1b, 0xb6, 0x4c, 0x6a, 0x82, 0x6e, 0xcd, 0xb7, 0x40, + 0xcb, 0xc3, 0x7f, 0xe4, 0x3e, 0x7b, 0xfc, 0x88, 0xf2, 0xfc, + 0x05, 0x75, 0x41, 0x40, 0x96, 0xca, 0x26, 0xae, 0x83, 0xbc, + 0x58, 0xc7, 0xe7, 0xdf, 0x09, 0xe7, 0x9a, 0x66, 0x03, 0x90, + 0x2b, 0x84, 0xa4, 0x55, 0x95, 0x94, 0xa6, 0x0c, 0x44, 0x3a, + 0x81, 0x44, 0x06, 0xe7, 0x7e, 0xc1, 0xe4, 0x8c, 0x85, 0x75, + 0x43, 0x69, 0xd1, 0x3b, 0xba, 0x2b, 0x0e, 0xba, 0xa6, 0x5f, + 0x89, 0x16, 0x0c, 0xb5, 0xcf, 0x91, 0x4e, 0x88, 0x80, 0x61, + 0x6a, 0xf7, 0xed, 0x6a, 0x0d, 0xc2, 0xe9, 0x3e, 0x25, 0x58, + 0xa8, 0xa3, 0xc6, 0x20, 0xa7, 0x22, 0x3d, 0xbb, 0xa0, 0x3d, + 0xd1, 0xb2, 0x9d, 0x19, 0x3b, 0x4a, 0x73, 0xeb, 0x7d, 0xb7, + 0x24, 0x31, 0xdc, 0x0c, 0x2e, 0xdc, 0x43, 0x63, 0x36, 0xf7, + 0xa3, 0x5c, 0x59, 0xb3, 0xad, 0xbf, 0x7d, 0xd8, 0x42, 0x52, + 0x06, 0x42, 0x85, 0x54, 0x53, 0xac, 0xf7, 0xfe, 0x11, 0x7e, + 0x59, 0x68, 0x73, 0x8f, 0xd9, 0x50, 0x0b, 0xd9, 0x41, 0x3e, + 0x1c, 0x09, 0xff, 0x99, 0x9b, 0x21, 0x2d, 0x98, 0x32, 0x70, + 0x95, 0x4b, 0xbd, 0x95, 0xd2, 0x20, 0xa2, 0x98, 0x49, 0x0c, + 0xd0, 0x30, 0xbd, 0x62, 0xad, 0xcd, 0x81, 0xf8, 0x29, 0x81, + 0x2c, 0x94, 0x19, 0x7a, 0x82, 0xd6, 0xb4, 0xde, 0x51, 0xe7, + 0x1b, 0x64, 0x59, 0x05, 0xfd, 0x59, 0xcd, 0x12, 0xf2, 0xa4, + 0x95, 0x76, 0x65, 0x1b, 0x71, 0x9e, 0x78, 0x4e, 0x1c, 0x92, + 0xa3, 0x1c, 0x0b, 0x25, 0x97, 0xff, 0xc1, 0xd4, 0x2d, 0xd6, + 0x85, 0x49, 0x76, 0x19, 0x87, 0x90, 0xae, 0x87, 0xa2, 0xe5, + 0xdd, 0x29, 0xb4, 0xfc, 0x88, 0x76, 0x8d, 0xc6, 0x1e, 0xf2, + 0x07, 0xc5, 0x58, 0x07, 0x38, 0x83, 0xde, 0xb9, 0x9f, 0x78, + 0x2c, 0x23, 0x18, 0x52, 0xb8, 0xfe, 0x43, 0xff, 0xd9, 0x43, + 0xf7, 0xcc, 0x06, 0xe3, 0x56, 0xcb, 0x8b, 0xaa, 0xe9, 0xeb, + 0x8f, 0x18, 0x88, 0x74, 0xc1, 0x88, 0x4b, 0xd4, 0x9e, 0x89, + 0x10, 0xce, 0xd7, 0xbe, 0xe8, 0x23, 0x82, 0x3d, 0x98, 0x36, + 0xaf, 0x98, 0xe6, 0xae, 0x80, 0x60, 0xdd, 0xaf, 0x35, 0xf9, + 0x23, 0xe2, 0x74, 0x45, 0x75, 0x51, 0xec, 0x75, 0xe7, 0x61, + 0x95, 0x1f, 0xf3, 0x2c, 0x54, 0xb0, 0x63, 0x10, 0xb2, 0x11, + 0xff, 0xbc, 0x50, 0xff, 0x90, 0x8c, 0x81, 0x10, 0xc4, 0xd3, + 0xe8, 0xca, 0x50, 0x2f, 0x16, 0x41, 0x49, 0x47, 0x93, 0x49, + 0x1a, 0x47, 0x11, 0x7c, 0x4a, 0xb0, 0x93, 0x85, 0x4f, 0x40, + 0x8d, 0x44, 0x7a, 0xb5, 0x83, 0x7a, 0x53, 0xce, 0xa5, 0x0b, + 0x06, 0xbb, 0x86, 0xa9, 0x27, 0x44, 0x40, 0xd1, 0x35, 0x9a, + 0x97, 0x35, 0xa3, 0x2a, 0xc8, 0x56, 0x9a, 0x7f, 0xe9, 0x3f, + 0xcd, 0x34, 0xd8, 0xa6, 0x8d, 0x28, 0xe4, 0x8d, 0xf1, 0x2b, + 0x78, 0x22, 0xb2, 0x47, 0x0e, 0xdf, 0xaa, 0x82, 0x5e, 0x23, + 0x32, 0x5f, 0xcf, 0x32, 0xfd, 0x26, 0x84, 0x63, 0xb9, 0x9c, + 0xc7, 0x35, 0x2c, 0x50, 0x3f, 0x55, 0x85, 0x09, 0xd3, 0x85, + 0x51, 0x93, 0x8f, 0xf5, 0x5a, 0x7e, 0x44, 0x3b, 0xa7, 0x63, + 0x0f, 0x79, 0xe2, 0x83, 0x2c, 0xe2, 0x29, 0xe1, 0x58, 0x3a, + 0x14, 0x1c, 0x92, 0x70, 0xd2, 0x5b, 0x43, 0xa3, 0xbe, 0xda, + 0xf4, 0xbe, 0x3b, 0x11, 0xe1, 0x38, 0xed, 0x3e, 0x8f, 0xf8, + 0xd8, 0x87, 0x31, 0x02, 0x1e, 0x0b, 0xde, 0x1e, 0x82, 0x7c, + 0x38, 0x12, 0x3d, 0xf1, 0xf5, 0x42, 0x5a, 0xf3, 0x64, 0xe0, + 0xe9, 0x96, 0xb9, 0xe9, 0x67, 0x40, 0x87, 0xf3, 0x92, 0x18, + 0x63, 0x60, 0xb9, 0xc4, 0x99, 0x59, 0xc1, 0x33, 0x52, 0xc1, + 0x8b, 0x04, 0x85, 0x13, 0xa0, 0xe0, 0x1a, 0x06, 0x5f, 0x9d, + 0x5d, 0x51, 0xb9, 0x1f, 0xac, 0xb9, 0x48, 0x46, 0xa1, 0x08, + 0x62, 0x88, 0x74, 0x65, 0x28, 0xf6, 0x0b, 0xc1, 0xc5, 0xc2, + 0xa8, 0xc5, 0x2a, 0x73, 0x67, 0xbb, 0x66, 0x5a, 0x31, 0xab, + 0x12, 0x8e, 0xca, 0x5f, 0xe3, 0x2e, 0xf3, 0xe3, 0xef, 0xd6, + 0x3d, 0x61, 0x40, 0xbe, 0xda, 0xbd, 0x26, 0x8c, 0x4d, 0xf4, + 0x25, 0xd8, 0xf9, 0x25, 0x70, 0xc5, 0x7f, 0xb1, 0xfd, 0xf0, + 0x58, 0x46, 0x30, 0xa4, 0xb3, 0x3f, 0x86, 0x3d, 0x71, 0x86, + 0x2d, 0x5b, 0x0c, 0x05, 0xac, 0x55, 0xd5, 0x97, 0x11, 0x15, + 0xdd, 0x30, 0xd3, 0xe8, 0x41, 0xd3, 0x31, 0xfb, 0x63, 0xb8, + 0x02, 0x69, 0xc3, 0x67, 0x1d, 0x3c, 0x81, 0x4f, 0x13, 0x76, + 0xcc, 0x13, 0xe2, 0x14, 0xd4, 0x5f, 0x65, 0xe6, 0x72, 0x1e, + 0xe0, 0xac, 0xea, 0xd6, 0x18, 0x63, 0x59, 0x18, 0x86, 0xc6, + 0x6c, 0x2d, 0x85, 0xb8, 0xb2, 0xa5, 0x99, 0xbd, 0xfa, 0x73, + 0x84, 0xa4, 0x0c, 0x84, 0xc9, 0xa8, 0xa6, 0x9b, 0x2d, 0x3f, + 0x22, 0xfc, 0xb2, 0xd0, 0xe6, 0xdd, 0x71, 0xa0, 0x16, 0x71, + 0xb0, 0x15, 0x64, 0x2b, 0x4d, 0xde, 0x95, 0xfe, 0x87, 0x1a, + 0x6c, 0x53, 0xa7, 0x14, 0x72, 0xa7, 0x80, 0x21, 0x12, 0xec, + 0x61, 0x34, 0x37, 0xd0, 0xda, 0xd4, 0x2b, 0x48, 0x3e, 0x8f, + 0x02, 0x3e, 0xf5, 0x91, 0x2c, 0x1d, 0x0a, 0x0e, 0x49, 0x38, + 0x69, 0xcc, 0xc0, 0xb0, 0x5f, 0x6d, 0x7a, 0x5f, 0xfc, 0xe9, + 0x91, 0x1c, 0x97, 0x1f, 0xa6, 0x7c, 0x6c, 0xa2, 0xf9, 0x01, + 0x0f, 0xe4, 0x6f, 0x0f, 0x60, 0x68, 0xec, 0x4d, 0x58, 0x17, + 0x87, 0x5c, 0xba, 0x5f, 0x8e, 0x36, 0xf1, 0xf5, 0xe0, 0xf1, + 0x44, 0x4b, 0x5d, 0x49, 0x69, 0x53, 0xbd, 0x8f, 0xae, 0x24, + 0x6a, 0xb7, 0x72, 0x94, 0xb4, 0x72, 0x0c, 0x0d, 0xfc, 0x41, + 0x0b, 0xdb, 0xc9, 0xea, 0x86, 0xd2, 0x61, 0x76, 0xb7, 0x56, + 0x1c, 0xb7, 0x8f, 0xbe, 0xd1, 0x2c, 0x18, 0xa9, 0x5d, 0xe1, + 0x9c, 0xd3, 0xc3, 0xc2, 0xd4, 0x2d, 0x19, 0xd4, 0xa4, 0x02, + 0xa3, 0xe8, 0x50, 0x70, 0x0d, 0x03, 0xce, 0xaf, 0xcf, 0xc9, + 0xbd, 0xee, 0x56, 0xbd, 0x3d, 0xf6, 0x9f, 0xf9, 0x09, 0xb2, + 0x0a, 0x8d, 0x9b, 0xee, 0xe0, 0x39, 0xa4, 0x20, 0xd0, 0xa4, + 0x62, 0x35, 0xc6, 0xb3, 0x04, 0xd2, 0x45, 0xce, 0x3a, 0x78, + 0xc1, 0x9e, 0x26, 0xec, 0x5b, 0x26, 0x35, 0x41, 0x37, 0x87, + 0xba, 0x20, 0x84, 0x80, 0xde, 0x72, 0x1f, 0xdc, 0x7e, 0x44, + 0x79, 0x7e, 0xe0, 0x49, 0xfe, 0xa1, 0x39, 0x23, 0xb0, 0x8c, + 0x60, 0x8b, 0xa5, 0x7e, 0xcf, 0x7a, 0xe2, 0xcf, 0x68, 0xdf, + 0x44, 0x33, 0xeb, 0x85, 0x09, 0x51, 0xff, 0xc3, 0x71, 0xd3, + 0x2b, 0x91, 0x49, 0x2b, 0xdc, 0x70, 0x74, 0x27, 0x1e, 0x12, + 0xdb, 0x48, 0xbb, 0x97, 0x83, 0x13, 0xe1, 0xb7, 0x8e, 0xe1, + 0x40, 0xf1, 0x09, 0x76, 0xd1, 0x1a, 0xfa, 0x68, 0x6d, 0x6a, + 0xf4, 0x24, 0x1f, 0xa6, 0x01, 0x1f, 0xa0, 0xb8, 0xf7, 0xd7, + 0xe8, 0x39, 0x4a, 0xe4, 0x0d, 0xe1, 0x51, 0x5a, 0xd0, 0xdc, + 0xe3, 0xd0, 0xa7, 0x90, 0x9c, 0x69, 0x22, 0x36, 0xae, 0xd8, + 0x0e, 0x7a, 0x46, 0x35, 0xe0, 0x1a, 0x51, 0xe0, 0x9f, 0x13, + 0x42, 0xd0, 0xbd, 0x4e, 0x82, 0xfb, 0x16, 0x28, 0xfe, 0xcb, + 0xa3, 0xe5, 0x88, 0xa3, 0x2b, 0xbc, 0x72, 0xc4, 0x48, 0xd9, + 0x50, 0xe2, 0x52, 0x7c, 0x0c, 0x0b, 0x69, 0xc3, 0x4f, 0x69, + 0xae, 0xe8, 0x21, 0x68, 0xbf, 0x27, 0x41, 0x9c, 0x0b, 0x14, + 0x7f, 0x84, 0xb0, 0x93, 0x44, 0xb0, 0x10, 0xad, 0x93, 0xfc, + 0xa5, 0xe7, 0xdf, 0x1a, 0x8a, 0xfb, 0x3d, 0x09, 0x77, 0xc8, + 0x91, 0x77, 0xfe, 0xb4, 0xbb, 0xe2, 0xcb, 0xda, 0x64, 0xee, + 0xec, 0x85, 0xb6, 0xa9, 0xd8, 0xfd, 0xd4, 0xd8, 0xa1, 0x77, + 0xe2, 0xa8, 0xc6, 0xba, 0x2b, 0xad, 0x4d, 0x13, 0x97, 0x0e, + 0x5a, 0x31, 0x5f, 0x5a, 0xc7, 0xf8, 0x70, 0x24, 0x7a, 0x21, + 0x29, 0x84, 0xb4, 0x25, 0xc8, 0x03, 0x11, 0xef, 0xb1, 0x11, + 0x4d, 0x33, 0xe0, 0x48, 0xf4, 0x42, 0x52, 0xcb, 0xab, 0x4a, + 0x53, 0x06, 0x22, 0x1d, 0xa1, 0x22, 0xaa, 0x52, 0x75, 0x57, + 0x07, 0x6e, 0x06, 0x7b, 0xc8, 0x5a, 0xe1, 0x17, 0xdd, 0xa1, + 0xf1, 0xdd, 0xd4, 0xc7, 0xdc, 0x59, 0xad, 0x80, 0x55, 0x45, + 0xfe, 0x0b, 0x7c, 0xf6, 0x3b, 0xd3, 0x27, 0x3b, 0x42, 0xac, + 0x23, 0x88, 0x8d, 0xdf, 0x38, 0xfa, 0xed, 0x4d, 0xbb, 0x8c, + 0xc8, 0xbf, 0xba, 0xc8, 0x2e, 0xc9, 0x33, 0x84, 0xde, 0x13, + 0x76, 0x4c, 0xd1, 0xc0, 0x54, 0xcc, 0x8e, 0x1c, 0x46, 0x8e, + 0x49, 0x89, 0xb4, 0x77, 0x4c, 0x0b, 0x15, 0x2c, 0x68, 0x04, + 0xcd, 0x95, 0x4f, 0x2f, 0x14, 0x4f, 0xb2, 0x48, 0x4e, 0xd5, + 0x11, 0x1b, 0x57, 0x6c, 0x07, 0x3d, 0x23, 0xfb, 0x70, 0x0d, + 0xc9, 0x70, 0x77, 0xed, 0x14, 0x0f, 0x37, 0xff, 0xbc, 0x7a, + 0x33, 0x3f, 0xa4, 0x50, 0xb6, 0xfb, 0xc3, 0xb6, 0x39, 0x4c, + 0xcb, 0xc6, 0xb1, 0xfb, 0x4d, 0x6a, 0x58, 0xa0, 0x7e, 0xaa, + 0xc9, 0x12, 0x65, 0xc9, 0xad, 0x7a, 0x1e, 0xe9, 0xcd, 0x61, + 0xe2, 0x47, 0xcb, 0xc1, 0xf6, 0x78, 0xed, 0x67, 0x43, 0xed, + 0x20, 0x99, 0xe5, 0x3b, 0x89, 0x0d, 0x7d, 0x34, 0xd7, 0x35, + 0x7a, 0x12, 0xee, 0x53, 0xe1, 0xee, 0xcf, 0x4f, 0xd8, 0x5a, + 0xc9, 0xb3, 0xa7, 0x89, 0xf1, 0xb9, 0x37, 0xe6, 0xcb, 0x8b, + 0x18, 0xcb, 0x64, 0xd2, 0xb8, 0x72, 0xe0, 0x5e, 0xc0, 0xbb, + 0x79, 0x11, 0x10, 0xa5, 0x9c, 0xc7, 0x55, 0x9c, 0x9b, 0xa9, + 0x16, 0xef, 0x05, 0x07, 0xc5, 0x1c, 0xd5, 0x66, 0x60, 0x58, + 0xce, 0xd7, 0x3d, 0xce, 0xde, 0x2d, 0x5e, 0xd9, 0x42, 0xd7, + 0x19, 0xda, 0x3b, 0xb0, 0xcc, 0xbb, 0x36, 0xae, 0x35, 0x36, + 0x7f, 0x5a, 0xbc, 0x71, 0x84, 0x6d, 0x32, 0x77, 0x76, 0xa3, + 0x5b, 0xb5, 0x6c, 0x9f, 0x6a, 0x6c, 0xa8, 0x0f, 0x5f, 0xa9, + 0x5b, 0xab, 0xc4, 0xe9, 0x48, 0x7d, 0xae, 0xbf, 0x0a, 0xb8, + 0x4a, 0x0a, 0xb6, 0xf2, 0x1a, 0xea, 0xa9, 0x52, 0x10, 0x8b, + 0xc4, 0x73, 0xbd, 0x68, 0x1d, 0x3f, 0x7c, 0x1d, 0x5c, 0x51, + 0x66, 0xcb, 0x7f, 0x26, 0xec, 0x98, 0x61, 0x43, 0xa8, 0x5b, + 0xdf, 0x38, 0x8c, 0xdf, 0xa5, 0xcd, 0xb6, 0x97, 0x7e, 0xf3, + 0x6c, 0x4a, 0x8e, 0x5d, 0x09, 0x9d, 0x37, 0x03, 0xea, 0x37, + 0x6b, 0x4d, 0x7b, 0xb2, 0x99, 0xc3, 0xaa, 0x8a, 0x3f, 0x16, + 0xf8, 0x2f, 0x76, 0x65, 0x4e, 0x76, 0xd3, 0xef, 0xb7, 0xe7, + 0x67, 0x8f, 0xb1, 0x79, 0xfd, 0x90, 0x6b, 0x99, 0x0b, 0x15, + 0x95, 0x0b, 0xf0, 0xe4, 0x6d, 0x5d, 0x9c, 0xc4, 0x6f, 0x96, + 0xea, 0x70, 0x98, 0x77, 0xb8, 0xb2, 0x73, 0xb8, 0x5d, 0x9e, + 0x73, 0xb4, 0x51, 0xa5, 0x8d, 0xd1, 0x21, 0xb1, 0x6e, 0x0f, + 0x55, 0xd5, 0x30, 0x55, 0xc8, 0x67, 0xb3, 0xe4, 0x03, 0xbc, + 0x43, 0xb5, 0xf2, 0x22, 0x20, 0x89, 0xfb, 0x4d, 0xaa, 0xfb, + 0xc5, 0xa5, 0x5a, 0xda, 0x26, 0xe4, 0xeb, 0x16, 0x34, 0x02, + 0x87, 0xab, 0xc6, 0xf6, 0x0a, 0xc6, 0xbd, 0xd7, 0x8d, 0x15, + 0x68, 0x86, 0x3d, 0x5d, 0x41, 0x3a, 0xcb, 0x71, 0x9a, 0xaf, + 0xd2, 0x9a, 0xc3, 0x42, 0x24, 0x1b, 0xc2, 0x68, 0x6e, 0x63, + 0x77, 0x6b, 0x56, 0x90, 0x7c, 0xdd, 0x04, 0x7c, 0xe4, 0xf3, + 0xaa, 0x9e, 0x81, 0x6a, 0xf7, 0x6b, 0xa3, 0xc5, 0x3b, 0xed, + 0xa2, 0x48, 0x57, 0xa2, 0xaf, 0x27, 0x34, 0x17, 0x91, 0xa4, + 0x20, 0xd5, 0x4b, 0xe6, 0xb9, 0xd0, 0x3a, 0x7e, 0xf8, 0x3a, + 0xb8, 0xa2, 0xcc, 0x55, 0xfe, 0x4c, 0x1b, 0xf3, 0xc2, 0x86, + 0x93, 0xb6, 0x7d, 0x70, 0xdb, 0x7d, 0xcb, 0xf5, 0x8c, 0x65, + 0x71, 0xfa, 0xe0, 0x6e, 0x32, 0xf7, 0xa9, 0x75, 0xa6, 0xb9, + 0xad, 0xa6, 0xc1, 0x1f, 0x0e, 0xe5, 0x9e, 0xad, 0xac, 0xf1, + 0xf7, 0x4c, 0x19, 0x38, 0xab, 0xc4, 0xbf, 0xab, 0xb5, 0x60, + 0x25, 0x6b, 0xdb, 0x14, 0xb3, 0x50, 0x04, 0xa6, 0x34, 0x94, + 0x40, 0xcb, 0x7b, 0x40, 0x6f, 0xf7, 0x2f, 0x8d, 0x21, 0x8a, + 0xed, 0x6d, 0xfc, 0x58, 0x66, 0xbc, 0x1b, 0x57, 0xfb, 0x1b, + 0x4c, 0xfc, 0xf5, 0x37, 0xda, 0xc1, 0x33, 0x82, 0xeb, 0xb8, + 0x95, 0x52, 0xa8, 0xf0, 0x1d, 0xa8, 0x97, 0xa4, 0xea, 0xae, + 0x0e, 0xdc, 0x0c, 0xf6, 0x53, 0xb4, 0x01, 0x2e, 0x79, 0x81, + 0x21, 0x79, 0x88, 0x96, 0xba, 0x92, 0xd2, 0xa6, 0xb9, 0xdd, + 0x9f, 0x48, 0xd4, 0xad, 0xe4, 0xeb, 0xab, 0xe4, 0x61, 0xa7, + 0xf9, 0x32, 0x76, 0x94, 0xe6, 0x15, 0xfa, 0xad, 0x48, 0x62, + 0x7b, 0x18, 0x5c, 0x7b, 0x57, 0x74, 0xf1, 0x34, 0xbe, 0xf2, + 0xc1, 0x4e, 0xe4, 0x0a, 0xde, 0x42, 0x58, 0xa8, 0x22, 0x58, + 0x11, 0x62, 0x86, 0x83, 0x8b, 0x64, 0xbe, 0x53, 0xca, 0x09, + 0xfb, 0x5d, 0xfd, 0x25, 0x2d, 0xfd, 0x99, 0xf4, 0x3c, 0x11, + 0x59, 0xc2, 0x07, 0x8e, 0x55, 0x41, 0x2f, 0xf0, 0x19, 0xce, + 0x86, 0x19, 0x72, 0x98, 0x55, 0x4f, 0xa1, 0x35, 0x9a, 0xd4, + 0xb0, 0x83, 0xfc, 0x97, 0x51, 0x24, 0xca, 0x51, 0x83, 0xb3, + 0x2d, 0x6d, 0x13, 0x72, 0x94, 0x0b, 0x1a, 0x01, 0xa2, 0xb4, + 0x63, 0x7b, 0x05, 0x63, 0xbf, 0x8a, 0xa7, 0xeb, 0x34, 0x43, + 0xff, 0xcf, 0xc1, 0x1d, 0x84, 0xd9, 0x4d, 0xb6, 0x69, 0x4d, + 0x55, 0x29, 0xdb, 0xca, 0xe2, 0x37, 0x03, 0xdc, 0x64, 0x2d, + 0x91, 0xea, 0x8f, 0xb1, 0x99, 0x8f, 0x73, 0x57, 0x40, 0x30, + 0x8f, 0xb6, 0xfb, 0x9d, 0xf0, 0x71, 0x3a, 0xc3, 0xdb, 0xc9, + 0x76, 0xdb, 0x9d, 0x4e, 0x68, 0x2e, 0xe1, 0x8b, 0x40, 0x69, + 0x96, 0x0f, 0xb1, 0x63, 0x74, 0xfc, 0x33, 0x74, 0x81, 0xee, + 0x07, 0x93, 0x4f, 0xb7, 0x56, 0x99, 0x9a, 0x26, 0xed, 0x1c, + 0xb4, 0x62, 0xbe, 0xb4, 0x3f, 0xab, 0xb5, 0x07, 0x55, 0x77, + 0xc8, 0x1f, 0x1b, 0xc9, 0xaf, 0x91, 0x73, 0x39, 0x6b, 0x73, + 0xb3, 0x87, 0x5b, 0xaa, 0x3f, 0x98, 0x36, 0x25, 0x47, 0xcf, + 0xe5, 0xaf, 0xfa, 0xe0, 0x75, 0xfa, 0xbb, 0x30, 0xf3, 0xd4, + 0x8c, 0x0a, 0xb8, 0x28, 0x02, 0x53, 0x1a, 0x4a, 0x20, 0x84, + 0xdc, 0x20, 0xd6, 0x9a, 0xf6, 0xa7, 0xf1, 0x45, 0x97, 0xd7, + 0x7e, 0x2c, 0x33, 0x5e, 0xec, 0xca, 0x9c, 0xec, 0xea, 0xa3, + 0x7c, 0x21, 0xd6, 0x74, 0xfc, 0x13, 0xa5, 0x30, 0x15, 0x33, + 0xc2, 0x07, 0xf0, 0xc2, 0x25, 0xec, 0xa4, 0x7b, 0x1f, 0xc7, + 0x5b, 0x9a, 0x54, 0x89, 0x22, 0xd5, 0x09, 0x8c, 0xe8, 0x09, + 0xce, 0x80, 0xcd, 0x25, 0xe7, 0x30, 0xc6, 0xc0, 0xb1, 0x4b, + 0xf1, 0xb2, 0x41, 0x66, 0xa4, 0x41, 0x63, 0xfa, 0xd3, 0xcc, + 0x2a, 0x51, 0x24, 0x87, 0x7a, 0x8a, 0x07, 0xca, 0xac, 0x01, + 0xe7, 0xac, 0x45, 0x84, 0x48, 0x36, 0x47, 0xd0, 0xdc, 0xc6, + 0xee, 0xd6, 0xac, 0xe3, 0xf8, 0x79, 0x08, 0xf8, 0x32, 0x69, + 0x5c, 0x39, 0x70, 0x2f, 0x60, 0xbc, 0xdd, 0xe9, 0x08, 0xb3, + 0x4e, 0x82, 0xcb, 0x4e, 0xd7, 0x55, 0xe3, 0xd8, 0xdf, 0xc6, + 0xf6, 0x9e, 0x3e, 0xde, 0xf5, 0x0a, 0x66, 0x27, 0x20, 0x66, + 0x9e, 0xdc, 0x57, 0xaf, 0x93, 0xcd, 0xe3, 0xb2, 0x56, 0xda, + 0x38, 0x9f, 0x29, 0x08, 0x34, 0x29, 0x08, 0xb7, 0xa8, 0x7e, + 0xb3, 0x92, 0x8e, 0x0d, 0x45, 0x9c, 0xff, 0xe5, 0xda, 0x64, + 0xa9, 0xda, 0x8d, 0xe3, 0xfb, 0xd2, 0x44, 0x6c, 0x9f, 0x73, + 0x1c, 0xf4, 0x8c, 0x6a, 0x03, 0x34, 0xa2, 0x03, 0x79, 0xbd, + 0xc2, 0xb0, 0x60, 0xe1, 0xb7, 0x02, 0x35, 0xca, 0x8a, 0x8e, + 0xd6, 0xb4, 0x64, 0xd6, 0xab, 0x9d, 0x60, 0x28, 0x29, 0xed, + 0x67, 0x32, 0x88, 0xa8, 0x27, 0x43, 0x57, 0x4c, 0x4d, 0x57, + 0x36, 0xd3, 0x08, 0x06, 0xc8, 0x66, 0x27, 0x5b, 0x1e, 0xa7, + 0x96, 0x20, 0x23, 0xb0, 0x7e, 0x23, 0xfb, 0xc1, 0xfa, 0xa2, + 0x5d, 0x10, 0x42, 0x40, 0x6f, 0x39, 0xee, 0x6e, 0x3f, 0x22, + 0xdd, 0x3f, 0xec, 0x44, 0x02, 0xe0, 0x32, 0xf8, 0x79, 0x66, + 0xe6, 0x59, 0xc4, 0x08, 0x78, 0x2c, 0xfe, 0x78, 0x4e, 0xa1, + 0xdf, 0xc9, 0x86, 0x04, 0xf1, 0x10, 0x6b, 0x9f, 0xda, 0xfa, + 0x7f, 0xe9, 0xa6, 0x7f, 0x7e, 0x95, 0xa9, 0x0e, 0xaa, 0xee, + 0x53, 0x3e, 0x36, 0x51, 0x9d, 0xe1, 0xe6, 0x72, 0xd6, 0xe6, + 0xd0, 0x7d, 0x88, 0x66, 0x15, 0xc9, 0x12, 0xa2, 0x3d, 0x45, + 0xe2, 0x65, 0x56, 0xe1, 0x92, 0x56, 0x6c, 0x65, 0x10, 0x0c, + 0x53, 0xcc, 0x4e, 0xb6, 0x3c, 0x8d, 0xef, 0x40, 0x46, 0xa3, + 0xfc, 0x46, 0xf3, 0x76, 0x52, 0xdc, 0xee, 0x82, 0xcc, 0x4d, + 0x2a, 0xa5, 0x11, 0x8b, 0xe5, 0x46, 0x74, 0xe5, 0x5f, 0xc3, + 0x59, 0x4a, 0x0d, 0x60, 0x4f, 0x43, 0xa1, 0x96, 0x21, 0xa7, + 0x82, 0xcc, 0x8b, 0x82, 0xff, 0x7b, 0xae, 0x9d, 0xe5, 0x59, + 0x05, 0xa7, 0xac, 0x77, 0x70, 0xfd, 0x52, 0x10, 0x68, 0x52, + 0x8a, 0xcb, 0x90, 0x6c, 0x8e, 0x63, 0x7b, 0x4f, 0x1f, 0x6f, + 0x9b, 0x05, 0x33, 0xf2, 0x10, 0x33, 0x56, 0xbb, 0xe4, 0x4b, + 0x90, 0x71, 0xa0, 0x07, 0xa4, 0xf8, 0x18, 0x16, 0xd2, 0x45, + 0x9e, 0xd2, 0xdd, 0xbf, 0x61, 0x58, 0x30, 0x91, 0xba, 0x01, + 0xfb, 0x65, 0x45, 0x47, 0x6b, 0x5a, 0x32, 0x6b, 0xb4, 0xaf, + 0x30, 0x14, 0xf5, 0x97, 0xd2, 0x19, 0x44, 0x54, 0xf2, 0xc0, + 0xca, 0x26, 0xc7, 0xca, 0x04, 0xba, 0x54, 0x3f, 0xb8, 0x49, + 0x47, 0xe7, 0xc3, 0x4e, 0x9e, 0x93, 0x6d, 0x32, 0xb5, 0x6d, + 0xbe, 0x45, 0xb2, 0x94, 0x1a, 0xc0, 0x9e, 0x86, 0x81, 0xef, + 0x42, 0x8d, 0xc7, 0x5b, 0xd5, 0xc7, 0x1b, 0x88, 0x04, 0x03, + 0x64, 0x33, 0xf2, 0xcc, 0x0f, 0xb2, 0x4b, 0x10, 0xf0, 0x58, + 0x3f, 0xf0, 0x9c, 0x81, 0x7d, 0x51, 0xcf, 0x08, 0x21, 0x20, + 0xd6, 0xfd, 0x77, 0x37, 0xfe, 0x11, 0x8f, 0xfe, 0x5e, 0x0c, + 0x4c, 0x35, 0x23, 0xe3, 0x2e, 0x0a, 0xe1, 0x64, 0xe7, 0xf3, + 0x08, 0x21, 0x37, 0x08, 0x07, 0x28, 0x6b, 0xbe, 0xca, 0x0f, + 0xe4, 0x3c, 0x03, 0x9b, 0x17, 0x6f, 0x30, 0xc6, 0xb2, 0x30, + 0x8c, 0x2c, 0xee, 0xad, 0x6a, 0xef, 0xfe, 0x3a, 0x5c, 0x06, + 0x4a, 0x3e, 0x89, 0xd9, 0x1e, 0x89, 0x0f, 0x9f, 0xc3, 0xc0, + 0x79, 0x9d, 0x6a, 0x31, 0x46, 0x07, 0xe8, 0x8a, 0xea, 0xa2, + 0x1b, 0xea, 0x6d, 0xaa, 0x05, 0x73, 0x7d, 0x4f, 0x2f, 0xff, + 0x7c, 0x7f, 0x29, 0x14, 0xcc, 0x4e, 0x40, 0xcc, 0xf4, 0x5e, + 0x39, 0x62, 0x24, 0x8d, 0x28, 0x71, 0x29, 0x3e, 0x06, 0xe4, + 0xd5, 0x80, 0xc6, 0xd5, 0x26, 0x7e, 0x9b, 0xfa, 0x6d, 0x81, + 0xf8, 0x41, 0x94, 0x5c, 0xab, 0x29, 0x54, 0x78, 0xef, 0x54, + 0x71, 0x0a, 0x6a, 0xce, 0xd3, 0x73, 0x39, 0x0f, 0x70, 0x56, + 0x75, 0x6b, 0x0c, 0xd0, 0xcd, 0x0c, 0x1c, 0xa0, 0x6f, 0xbd, + 0xae, 0x3c, 0x16, 0xf0, 0x0c, 0x29, 0x5c, 0x7f, 0xc0, 0x9e, + 0x8d, 0xc0, 0x94, 0x36, 0xd5, 0x2f, 0x7c, 0x9a, 0xaf, 0x2d, + 0x93, 0x61, 0x88, 0xd2, 0x24, 0x75, 0x26, 0x24, 0x22, 0xc4, + 0xcf, 0xc5, 0xd5, 0xc8, 0xbf, 0xa6, 0x57, 0x12, 0x35, 0xba, + 0x39, 0x4a, 0x5a, 0x39, 0xeb, 0x6c, 0x69, 0x5e, 0xf8, 0xf7, + 0x9d, 0x5a, 0xe5, 0xc2, 0xd3, 0x67, 0x48, 0xea, 0x4c, 0x48, + 0xbc, 0x18, 0x98, 0x6a, 0x46, 0x05, 0x5c, 0x14, 0x01, 0xc8, + 0x0d, 0x25, 0x10, 0x42, 0x6e, 0x10, 0x3c, 0x39, 0x8a, 0x86, + 0x27, 0x31, 0x6b, 0xc4, 0xdb, 0x1c, 0x26, 0x6d, 0x2e, 0xcd, + 0x6c, 0x2e, 0x15, 0xd8, 0xd2, 0xbc, 0x33, 0x2d, 0xf9, 0xb4, + 0x09, 0x47, 0x65, 0xce, 0x90, 0x17, 0x98, 0x90, 0xe9, 0x31, + 0x43, 0xa0, 0xa4, 0x32, 0x5f, 0xc8, 0x65, 0xe5, 0x9c, 0xcf, + 0x9f, 0xf3, 0xf7, 0x9f, 0x02, 0x5d, 0x2a, 0xfe, 0x5c, 0xc5, + 0xc2, 0x92, 0x80, 0x27, 0x4f, 0xa8, 0xd7, 0x19, 0xbb, 0xd7, + 0x46, 0x16, 0x77, 0xb7, 0x35, 0x96, 0x7f, 0x1d, 0x2e, 0x03, + 0x25, 0x1f, 0xa5, 0x8d, 0x0f, 0xa5, 0xda, 0x97, 0x0a, 0xe6, + 0xfa, 0x9e, 0x5e, 0x3d, 0xf8, 0xfe, 0x52, 0x28, 0x5b, 0x9c, + 0x80, 0x5b, 0x19, 0xd5, 0x2e, 0xfd, 0x38, 0xf6, 0x30, 0x5e, + 0x8f, 0x95, 0x04, 0xb8, 0x27, 0x41, 0x84, 0x27, 0xdb, 0x58, + 0x1f, 0x99, 0xd4, 0x1d, 0x3f, 0x74, 0xb8, 0x0c, 0x94, 0x7c, + 0xd1, 0x71, 0x3c, 0xd1, 0x1e, 0xfd, 0x45, 0x43, 0xf2, 0xf9, + 0xd4, 0x62, 0x8c, 0x0e, 0x13, 0xd7, 0x17, 0x87, 0x36, 0x17, + 0x17, 0x85, 0xf8, 0x42, 0x6f, 0xe8, 0x3b, 0x26, 0x89, 0x60, + 0x2a, 0x66, 0x47, 0x0e, 0x23, 0x47, 0x4a, 0x1b, 0x8b, 0xf6, + 0x3e, 0x4d, 0xb6, 0xf7, 0xa8, 0xd1, 0x44, 0x69, 0x12, 0xdb, + 0x13, 0x12, 0x0a, 0xea, 0x82, 0x80, 0xef, 0x57, 0x4c, 0x9f, + 0xc5, 0xbb, 0xb0, 0x4d, 0x0d, 0x7d, 0x12, 0x0d, 0xd9, 0x05, + 0x35, 0x67, 0x88, 0xd8, 0xfd, 0xe6, 0x38, 0x2b, 0xdb, 0xd4, + 0x06, 0x68, 0x87, 0x06, 0x89, 0x59, 0xaf, 0xed, 0xfc, 0x25, + 0xd8, 0x94, 0xdf, 0xba, 0x12, 0xf9, 0x6e, 0x06, 0x17, 0x6e, + 0x78, 0x72, 0xd7, 0xcf, 0x4e, 0x62, 0xd6, 0x4b, 0x75, 0x38, + 0x4c, 0xda, 0x5c, 0x59, 0xd8, 0x5c, 0x76, 0x22, 0x01, 0x70, + 0x19, 0x7c, 0xdd, 0x33, 0x73, 0xcd, 0x62, 0x04, 0x3c, 0x16, + 0x7f, 0x3c, 0x27, 0xb1, 0x8e, 0x85, 0x43, 0x02, 0x99, 0x08, + 0xd4, 0xae, 0x6d, 0x7d, 0xde, 0x95, 0x53, 0xde, 0x18, 0x1a, + 0x3b, 0x82, 0x16, 0x75, 0x51, 0x17, 0xcf, 0x67, 0xc2, 0xec, + 0xad, 0xac, 0x38, 0xad, 0x23, 0x0b, 0xda, 0xba, 0xfb, 0x4b, + 0xde, 0xef, 0x17, 0xe0, 0xf3, 0xee, 0xb3, 0xa7, 0xe6, 0xb3, + 0xf2, 0xb9, 0x47, 0xa3, 0xc0, 0x01, 0xad, 0x04, 0x6a, 0x57, + 0xd7, 0xdf, 0x6f, 0xab, 0xc8, 0x6f, 0x95, 0xf9, 0xc0, 0x50, + 0x52, 0x19, 0xce, 0x64, 0xd3, 0x93, 0x4e, 0x86, 0xae, 0x98, + 0x9a, 0xae, 0xd5, 0x08, 0xc9, 0x26, 0x83, 0x03, 0x34, 0x0c, + 0xbe, 0xf9, 0xba, 0xa2, 0xb1, 0x3e, 0x9b, 0xb1, 0xa9, 0xc0, + 0x4a, 0xd6, 0x75, 0x28, 0xa5, 0xa0, 0x08, 0x8f, 0x68, 0xeb, + 0x80, 0x55, 0xf6, 0x80, 0x84, 0x9b, 0x46, 0xd3, 0xd9, 0x7d, + 0x70, 0x37, 0x19, 0x9a, 0xb5, 0xdb, 0x53, 0xbd, 0xb7, 0x53, + 0xe1, 0x86, 0xeb, 0xde, 0x17, 0xa0, 0xd1, 0xc5, 0x20, 0x79, + 0x63, 0x2a, 0x45, 0x97, 0x5e, 0x45, 0x1d, 0x6f, 0x7a, 0xc2, + 0x80, 0xbf, 0x77, 0xb9, 0x4c, 0xdb, 0x9a, 0x2b, 0x4a, 0x73, + 0x31, 0x4a, 0x93, 0x1e, 0xbe, 0x91, 0xb6, 0x95, 0x4b, 0x11, + 0x90, 0xfa, 0x9f, 0xbd, 0x14, 0xb3, 0x94, 0x14, 0x28, 0x2e, + 0x4d, 0x45, 0x3a, 0x9f, 0xf3, 0x39, 0x92, 0xa9, 0x85, 0xf7, + 0x34, 0x37, 0x48, 0x34, 0xc6, 0x37, 0x65, 0x5b, 0x54, 0xa2, + 0x48, 0xcd, 0xf4, 0xd7, 0x0e, 0x57, 0x9b, 0x02, 0x0d, 0x9b, + 0x7b, 0xe0, 0xe8, 0x4e, 0x3c, 0x24, 0x75, 0x90, 0xb5, 0xed, + 0xc5, 0x26, 0x01, 0xad, 0xdf, 0x01, 0x65, 0x1d, 0xad, 0x0d, + 0xce, 0xdd, 0xa1, 0xf2, 0x39, 0xe3, 0xd6, 0xf1, 0x16, 0x2a, + 0xe9, 0x16, 0x75, 0xb0, 0x3e, 0xf1, 0x6b, 0x3a, 0x7e, 0xe8, + 0xb3, 0x18, 0xeb, 0xf8, 0x61, 0xe2, 0x78, 0x61, 0x7c, 0xc8, + 0x83, 0xf0, 0xf6, 0x2b, 0x91, 0xac, 0xb6, 0x76, 0xd2, 0x49, + 0x31, 0x6b, 0x6d, 0x31, 0xe3, 0xdb, 0xc1, 0x20, 0x4b, 0x65, + 0x13, 0x57, 0xa0, 0x5e, 0x2c, 0x82, 0x92, 0x8e, 0xe5, 0x92, + 0xee, 0x19, 0x28, 0x1e, 0x6e, 0x3d, 0xbb, 0xf4, 0x66, 0x7e, + 0x8b, 0xa0, 0xaf, 0x35, 0x45, 0xaf, 0x21, 0x56, 0xf0, 0x44, + 0xa7, 0x8e, 0x1c, 0x7d, 0x97, 0xc7, 0xbc, 0x46, 0x64, 0xbe, + 0x5d, 0x64, 0x8e, 0x71, 0xc4, 0x53, 0x36, 0x2a, 0x3c, 0xa8, + 0xdc, 0x21, 0x05, 0x96, 0x5e, 0xc0, 0xa5, 0x5e, 0xf9, 0x9c, + 0xd0, 0x5c, 0x01, 0xd5, 0x80, 0xd2, 0xef, 0x1e, 0xa1, 0xc6, + 0xe8, 0x3b, 0x66, 0xe8, 0x01, 0xcf, 0x15, 0x7f, 0x2e, 0x83, + 0x61, 0x49, 0x40, 0xf2, 0xc6, 0x54, 0x8a, 0xed, 0xbc, 0x8a, + 0x5b, 0x79, 0x0d, 0x75, 0xb5, 0x29, 0x08, 0xa4, 0x62, 0xd8, + 0xbf, 0x34, 0xef, 0xfe, 0x3e, 0xef, 0x91, 0x43, 0x94, 0x6f, + 0xea, 0x50, 0x89, 0x83, 0x10, 0xdd, 0xd0, 0x15, 0xc3, 0xaa, + 0x2f, 0xc3, 0x14, 0x17, 0xc7, 0xc3, 0x1d, 0xae, 0x98, 0xfd, + 0x49, 0xb5, 0xa3, 0x9a, 0x1a, 0xfa, 0x24, 0x1a, 0x7a, 0x2f, + 0xfd, 0x31, 0x12, 0xa7, 0x14, 0xd9, 0xf5, 0x1f, 0x03, 0x72, + 0x8b, 0x40, 0x63, 0x8b, 0xf6, 0x03, 0x13, 0x9c, 0x78, 0x48, + 0xea, 0xe3, 0xa9, 0x19, 0x49, 0x4c, 0x02, 0x99, 0x7d, 0x02, + 0xb1, 0xda, 0x71, 0x54, 0x63, 0x5d, 0xf4, 0xb7, 0xc7, 0xe8, + 0xaa, 0x07, 0x2d, 0xf9, 0xce, 0x2d, 0xb7, 0x3d, 0x0f, 0x95, + 0x87, 0xd1, 0x71, 0xc2, 0x84, 0x81, 0x7b, 0x3c, 0x97, 0xd2, + 0xc0, 0x97, 0xca, 0x3a, 0x99, 0x1a, 0x5f, 0x79, 0x81, 0x27, + 0x72, 0x05, 0x6f, 0x21, 0x2c, 0x54, 0x11, 0x2c, 0x5a, 0xb6, + 0x18, 0x0a, 0x9b, 0xaa, 0x69, 0xed, 0x22, 0x2a, 0x79, 0x60, + 0x65, 0x13, 0x82, 0x65, 0xf8, 0x53, 0xc5, 0x23, 0x2f, 0x56, + 0xe1, 0x9b, 0xaf, 0xec, 0x67, 0x92, 0x62, 0xd6, 0xda, 0x62, + 0xcc, 0xdd, 0xe7, 0xdb, 0xbb, 0xf5, 0x04, 0x52, 0x31, 0x6c, + 0xbe, 0x1a, 0x96, 0x7f, 0x1f, 0x96, 0x47, 0xd9, 0x62, 0xc8, + 0x1b, 0x15, 0x1e, 0x54, 0x6e, 0xf1, 0xe3, 0x4b, 0x2f, 0x60, + 0xb3, 0x2f, 0x96, 0x6b, 0xff, 0xd1, 0x20, 0x5f, 0x6d, 0xbf, + 0x13, 0x46, 0xc7, 0x7a, 0xf3, 0x6c, 0x9d, 0xf3, 0x6e, 0x38, + 0x3a, 0xf2, 0x0f, 0x09, 0x8c, 0x24, 0xbc, 0xaa, 0xa0, 0xe8, + 0x91, 0xba, 0x47, 0x91, 0x13, 0x3f, 0xac, 0x7d, 0xd7, 0xa1, + 0x7c, 0xc1, 0x4a, 0x2e, 0xb4, 0xf5, 0x2a, 0x3c, 0x96, 0x2a, + 0x24, 0x23, 0xb1, 0x04, 0x31, 0x44, 0x3a, 0xd3, 0x14, 0x7b, + 0xe4, 0x81, 0x83, 0x61, 0x54, 0x83, 0x74, 0x7f, 0x2b, 0x8e, + 0x45, 0xb9, 0x1f, 0xa1, 0xf3, 0xea, 0x2d, 0xac, 0xeb, 0x0f, + 0xc4, 0xeb, 0x09, 0x78, 0xbd, 0x01, 0x9d, 0x11, 0xef, 0x44, + 0x05, 0x6e, 0x39, 0xb1, 0x50, 0x89, 0x15, 0x50, 0x03, 0x92, + 0x3f, 0x81, 0x72, 0x46, 0xa3, 0xdb, 0xc0, 0xd5, 0x89, 0xfc, + 0x5d, 0xf4, 0x07, 0x5d, 0x30, 0x34, 0x76, 0xc7, 0x2c, 0xea, + 0xa2, 0x2e, 0x5d, 0xce, 0x47, 0x1b, 0x99, 0x9b, 0x70, 0x99, + 0x50, 0x5c, 0x9a, 0x8a, 0x74, 0xfd, 0x25, 0x72, 0xe7, 0x91, + 0xc9, 0x2d, 0x68, 0x6e, 0x90, 0x68, 0x4f, 0x6e, 0xca, 0xb6, + 0xa8, 0x87, 0x90, 0x59, 0x2b, 0x6d, 0x1c, 0xae, 0xf5, 0x04, + 0x1a, 0xf5, 0x0e, 0x50, 0xd6, 0xbf, 0x57, 0x1e, 0x0b, 0x78, + 0x06, 0xf5, 0x2e, 0xde, 0x60, 0x4f, 0xa7, 0x60, 0x7d, 0x07, + 0x96, 0x8f, 0xd8, 0xa8, 0xf0, 0xe5, 0xf6, 0x84, 0x14, 0x1d, + 0xbb, 0x86, 0xd1, 0xbb, 0xb9, 0x6d, 0xd9, 0x2a, 0xd0, 0xcf, + 0x7a, 0xba, 0x82, 0x74, 0x55, 0xe2, 0xf7, 0x9d, 0x67, 0xf7, + 0x37, 0x1c, 0x1d, 0x79, 0xe6, 0xe5, 0x46, 0x12, 0x5e, 0x55, + 0x50, 0x74, 0xa9, 0x5d, 0xc2, 0xa9, 0x54, 0xe6, 0xce, 0xb5, + 0xcc, 0xb4, 0x62, 0x95, 0x24, 0xdf, 0x57, 0xbe, 0x05, 0x5c, + 0x25, 0x05, 0x1f, 0x32, 0x50, 0x3c, 0xdc, 0x7a, 0xb5, 0x2b, + 0xcc, 0xfc, 0xd5, 0x83, 0x9d, 0x6a, 0x8a, 0x9d, 0xc2, 0x8d, + 0x31, 0x64, 0xec, 0xeb, 0x0f, 0x2a, 0x37, 0x99, 0x90, 0xc4, + 0xf6, 0x30, 0xb8, 0xf6, 0x33, 0xa6, 0x49, 0x46, 0x5e, 0xac, + 0x01, 0xf5, 0x9d, 0x1b, 0xce, 0xe7, 0xc4, 0x6f, 0x77, 0xc4, + 0x3a, 0xde, 0xf4, 0x47, 0xc3, 0xbd, 0xee, 0xb1, 0x98, 0x75, + 0xf7, 0x56, 0x94, 0xe6, 0x62, 0x94, 0xe5, 0x3c, 0xbf, 0xe1, + 0xaf, 0xe9, 0x96, 0x22, 0xe3, 0x37, 0xfd, 0xb9, 0x28, 0xa5, + 0xeb, 0x28, 0xe8, 0xfe, 0x56, 0xdf, 0x8a, 0xb1, 0x3e, 0x81, + 0x25, 0x17, 0x5a, 0x9b, 0x15, 0x1e, 0x4b, 0x15, 0x12, 0xf0, + 0xb9, 0x02, 0xf9, 0x22, 0x1d, 0x88, 0x0a, 0xdc, 0x72, 0xa1, + 0xa0, 0xd1, 0x2a, 0xa0, 0x92, 0xd1, 0xab, 0xee, 0x98, 0x16, + 0x2a, 0x58, 0xd0, 0x08, 0x59, 0xe9, 0x9e, 0x5e, 0x28, 0x9e, + 0xac, 0xb5, 0x0b, 0x96, 0xe3, 0xe2, 0x83, 0x0e, 0x8b, 0x33, + 0x30, 0x2c, 0x67, 0x8a, 0xff, 0x67, 0x34, 0x8e, 0x22, 0xf8, + 0x94, 0xa3, 0xe5, 0xc9, 0x9e, 0x80, 0xd9, 0x88, 0xf4, 0xa9, + 0xc5, 0xf4, 0x52, 0x01, 0xb0, 0x74, 0x28, 0x38, 0xe7, 0xe0, + 0x67, 0xb6, 0x86, 0x85, 0xbf, 0x77, 0x2b, 0xbf, 0xed, 0x8b, + 0x17, 0x9f, 0x1c, 0x7b, 0x18, 0x2f, 0xa6, 0xab, 0x02, 0x5c, + 0xf2, 0xc1, 0x42, 0xf2, 0xfa, 0x0e, 0xef, 0xdd, 0x73, 0x93, + 0x23, 0x09, 0x2f, 0xcb, 0x28, 0x3a, 0xb5, 0xcf, 0x61, 0xb5, + 0x98, 0x3b, 0x29, 0x6e, 0x77, 0x41, 0x66, 0xc7, 0x15, 0xb3, + 0xe9, 0xa4, 0x93, 0x23, 0x3a, 0x93, 0xdf, 0xe2, 0x4b, 0xa6, + 0x6c, 0x54, 0x78, 0x93, 0x7b, 0x42, 0x0a, 0xef, 0xbc, 0x43, + 0x89, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x8f, + 0x92, 0x8c, 0xbc, 0x9b, 0x02, 0x29, 0xf9, 0x36, 0x5f, 0x0d, + 0x4b, 0xde, 0xee, 0x4b, 0x2f, 0x06, 0x26, 0xfb, 0xf0, 0x90, + 0x17, 0x05, 0x91, 0x32, 0x92, 0x98, 0x04, 0xf1, 0xfa, 0x04, + 0x3e, 0x64, 0xa0, 0x78, 0x7b, 0xf4, 0xa9, 0x56, 0x5b, 0x3b, + 0x69, 0xc5, 0xf9, 0xd4, 0xd7, 0xf9, + }, + { + /* 6 */ + 0x51, 0x8b, 0xc0, 0x48, 0x41, 0xdb, 0x9d, 0x79, 0x04, 0x5b, + 0xb3, 0x42, 0x6e, 0xe5, 0x18, 0xc6, 0x33, 0xea, 0x25, 0x27, + 0xfa, 0x81, 0x30, 0xe7, 0xa3, 0x06, 0xf7, 0x12, 0x65, 0x8f, + 0x4c, 0x36, 0xa4, 0x98, 0x5a, 0x40, 0x48, 0x42, 0xb3, 0xc9, + 0x3b, 0x2e, 0x19, 0xca, 0x9c, 0x04, 0x9a, 0x9d, 0x67, 0xeb, + 0x11, 0xd7, 0x14, 0x97, 0xc2, 0x59, 0x6c, 0x89, 0xa6, 0x39, + 0x6b, 0x80, 0xab, 0x4b, 0x0a, 0xd7, 0x2b, 0xb3, 0x9d, 0x59, + 0xde, 0x4d, 0x55, 0x6b, 0x07, 0xd2, 0xc0, 0x17, 0x3d, 0xb5, + 0xe7, 0x33, 0xd5, 0x7d, 0x3a, 0x1c, 0x1b, 0x11, 0xa6, 0x3b, + 0x18, 0xa1, 0xf1, 0xc2, 0x52, 0x20, 0x28, 0xda, 0xac, 0x89, + 0x31, 0xa7, 0xfe, 0xf7, 0x97, 0x6f, 0x1c, 0xce, 0x86, 0x5c, + 0xf4, 0x91, 0x1a, 0xcc, 0xd2, 0x37, 0xe8, 0x70, 0x6c, 0x44, + 0xdd, 0xec, 0x60, 0xc1, 0x42, 0x8e, 0x8b, 0x80, 0x6c, 0xc0, + 0x61, 0xfd, 0xaa, 0x98, 0xbe, 0x40, 0xd0, 0x67, 0x2a, 0xf6, + 0x0a, 0xca, 0xa5, 0xd9, 0x65, 0xd0, 0xa7, 0x26, 0x52, 0x3b, + 0x45, 0xf1, 0x7d, 0x40, 0x73, 0x03, 0xea, 0x3a, 0xcd, 0x05, + 0xfa, 0x4e, 0x45, 0x03, 0x3b, 0x0d, 0x9f, 0x3a, 0xa1, 0xca, + 0x4f, 0x33, 0x52, 0x1c, 0x40, 0x55, 0xe8, 0x6e, 0x0a, 0x76, + 0x08, 0x88, 0xaa, 0x9b, 0x38, 0x84, 0xfd, 0x1a, 0x51, 0x3f, + 0x90, 0x2e, 0xac, 0x74, 0xc7, 0x02, 0x93, 0xb7, 0xea, 0x2c, + 0x7f, 0x8c, 0xcb, 0x22, 0xdd, 0xa9, 0xc1, 0x66, 0x5a, 0xa0, + 0xb0, 0x62, 0xff, 0xd4, 0xe1, 0x60, 0xb8, 0xb5, 0x3f, 0x8d, + 0x0f, 0xaf, 0x16, 0x54, 0xa9, 0xfe, 0x33, 0xba, 0x3c, 0x7a, + 0x85, 0xeb, 0xb4, 0x58, 0x29, 0x4b, 0xbd, 0x43, 0x3e, 0xdd, + 0x30, 0x2d, 0xc8, 0x4f, 0x9f, 0x7b, 0x15, 0x1b, 0x5b, 0x4a, + 0xa9, 0x35, 0x45, 0x68, 0x19, 0x5f, 0x8b, 0xf3, 0xb4, 0x80, + 0x90, 0x84, 0xa5, 0x51, 0x76, 0x5c, 0x32, 0x57, 0xfb, 0x08, + 0xf7, 0xf9, 0x83, 0x1f, 0x29, 0xc2, 0x4b, 0x71, 0xfc, 0xb4, + 0x32, 0xfe, 0xe0, 0xbf, 0xba, 0xa5, 0xac, 0x02, 0xef, 0xdf, + 0x48, 0x3f, 0xe1, 0xe9, 0x42, 0xf4, 0xe2, 0x99, 0xca, 0x49, + 0xb0, 0x6f, 0x09, 0xdb, 0x66, 0x17, 0x4a, 0x4e, 0x37, 0xc1, + 0x60, 0x0d, 0x85, 0x0c, 0x2d, 0x24, 0xca, 0xdd, 0x98, 0x6c, + 0x14, 0x6d, 0x56, 0xa5, 0xf9, 0xb2, 0x7f, 0x9a, 0xaa, 0xd6, + 0x0e, 0x67, 0x43, 0x2e, 0x7a, 0xa9, 0x0d, 0x66, 0x69, 0xfa, + 0x74, 0x38, 0x36, 0x22, 0x8f, 0x76, 0x30, 0x81, 0x21, 0x47, + 0xa4, 0x40, 0x05, 0x8a, 0xf4, 0xb8, 0xaf, 0xcd, 0x6f, 0xc7, + 0xcb, 0xd4, 0xe2, 0x69, 0x60, 0xea, 0xff, 0xbb, 0x92, 0xf8, + 0x8b, 0xdf, 0x1d, 0x0e, 0xec, 0xe9, 0x53, 0xfc, 0x0c, 0xb1, + 0x99, 0x61, 0x29, 0x10, 0x7a, 0x96, 0x81, 0xa9, 0x15, 0x86, + 0x46, 0x72, 0x6b, 0x78, 0xf1, 0xab, 0xc8, 0x5e, 0xb9, 0x3e, + 0x13, 0xdc, 0x14, 0xec, 0x10, 0xd3, 0x97, 0xf5, 0x70, 0xcb, + 0x39, 0x34, 0xa2, 0x7e, 0xe3, 0x5c, 0xd8, 0x43, 0xc2, 0x39, + 0x97, 0xf3, 0xbf, 0x80, 0x63, 0xce, 0x54, 0x2f, 0x14, 0x57, + 0x89, 0x71, 0x87, 0x69, 0x86, 0xe3, 0xc7, 0xea, 0x31, 0x27, + 0x10, 0xaf, 0x89, 0xcb, 0x7b, 0x12, 0x60, 0x9e, 0xb5, 0x7f, + 0xf8, 0x5d, 0x1e, 0x3d, 0xa3, 0x94, 0x5a, 0x2c, 0xf5, 0xc4, + 0xbf, 0xc0, 0x1f, 0x8f, 0xdf, 0xf2, 0x80, 0x70, 0x7e, 0x92, + 0x57, 0xef, 0xb9, 0xd3, 0x63, 0x7c, 0xf5, 0x07, 0x10, 0x84, + 0x91, 0x3f, 0x66, 0xb7, 0x78, 0xf4, 0xc9, 0x15, 0xab, 0xb0, + 0x52, 0x96, 0xb9, 0x86, 0x7c, 0x79, 0x2d, 0x50, 0x58, 0x31, + 0x9e, 0x6a, 0x91, 0x30, 0x5c, 0xbb, 0xfe, 0xa7, 0xe6, 0xb6, + 0x0b, 0x2a, 0xa0, 0xee, 0xf5, 0x61, 0xc4, 0xd9, 0x7e, 0x5a, + 0x19, 0x7f, 0x70, 0xbe, 0x5d, 0xb3, 0x56, 0x01, 0xbf, 0xa8, + 0xd3, 0xee, 0x83, 0x64, 0x7d, 0xd9, 0x0f, 0x47, 0xf2, 0x16, + 0x7f, 0xd7, 0x22, 0x3a, 0x24, 0x40, 0x9e, 0xea, 0x66, 0xc9, + 0x6a, 0x81, 0xf1, 0x9c, 0xa7, 0x52, 0x06, 0x46, 0x63, 0xf6, + 0x49, 0x7c, 0xa4, 0x8e, 0xef, 0x07, 0x76, 0x95, 0xc8, 0x7e, + 0x06, 0xb9, 0xad, 0xd1, 0xf5, 0x08, 0xee, 0x23, 0x13, 0xa6, + 0xc2, 0xbf, 0xe0, 0xa0, 0x0b, 0x1c, 0x41, 0x54, 0x11, 0x32, + 0x3a, 0xfc, 0x2c, 0xac, 0x03, 0xa8, 0xbd, 0x3c, 0x33, 0x64, + 0xb5, 0x3e, 0x75, 0xba, 0x47, 0xeb, 0x38, 0x0d, 0x1d, 0x7d, + 0x90, 0x7e, 0x01, 0x11, 0x84, 0x2b, 0x07, 0xf1, 0x57, 0x92, + 0xa3, 0xde, 0x12, 0x75, 0xcc, 0x2e, 0x94, 0x9c, 0x6e, 0x41, + 0xc0, 0x1a, 0xc9, 0x18, 0x5a, 0x48, 0x57, 0x79, 0xf3, 0xd8, + 0x7c, 0xdb, 0x98, 0x79, 0xdf, 0xb1, 0x0c, 0x49, 0x58, 0xe0, + 0x4d, 0xe5, 0x88, 0x53, 0x13, 0xec, 0x8e, 0x79, 0x40, 0x38, + 0x3f, 0x49, 0xca, 0x96, 0xbd, 0x88, 0xd0, 0x3e, 0x9b, 0xe2, + 0x08, 0x42, 0xb8, 0x19, 0x91, 0xa7, 0x6a, 0x05, 0x95, 0xb6, + 0xd5, 0x5a, 0xc5, 0x45, 0x9e, 0x87, 0xbb, 0xcf, 0xe6, 0xcf, + 0x8e, 0xe4, 0x19, 0x4a, 0xb9, 0x45, 0x4f, 0xbe, 0x93, 0xbc, + 0x50, 0x9f, 0x61, 0x07, 0xf4, 0xef, 0xc1, 0x91, 0x2a, 0xcf, + 0x8c, 0xe4, 0xd6, 0xf0, 0x21, 0x95, 0x53, 0xbc, 0xb1, 0x7c, + 0x26, 0x7b, 0x28, 0x1b, 0x20, 0x65, 0xed, 0x29, 0xe0, 0x55, + 0x72, 0x68, 0x87, 0xfc, 0x05, 0xb8, 0x1b, 0x30, 0x89, 0xae, + 0xcb, 0x26, 0xce, 0x10, 0x34, 0x69, 0xeb, 0xdc, 0xe3, 0xd3, + 0xb8, 0xa7, 0x4f, 0x31, 0xbd, 0x5e, 0x25, 0x30, 0x3c, 0xae, + 0xfb, 0xe6, 0xba, 0xf7, 0xed, 0xdc, 0x5f, 0xda, 0xd5, 0x25, + 0xab, 0xc3, 0xe3, 0xcb, 0x89, 0xa2, 0xec, 0xb8, 0x64, 0xae, + 0x35, 0x10, 0x2d, 0x31, 0xc5, 0x3e, 0x52, 0x47, 0x96, 0xe2, + 0x3b, 0xab, 0x64, 0x3f, 0x03, 0xbd, 0xb7, 0x89, 0x9b, 0x04, + 0x50, 0x77, 0x9b, 0xd1, 0x62, 0x8d, 0x3f, 0x2d, 0xed, 0xde, + 0x38, 0x5f, 0xcf, 0xb8, 0x2b, 0xe1, 0x79, 0x51, 0x6c, 0xc1, + 0x70, 0x7c, 0x63, 0x8e, 0x93, 0x34, 0xaf, 0x8c, 0xe8, 0xb9, + 0xec, 0x57, 0x77, 0xf0, 0xe8, 0x53, 0x61, 0xbe, 0x70, 0x50, + 0xe4, 0x0e, 0xc1, 0x2a, 0xe9, 0x19, 0x1d, 0x7e, 0x16, 0x56, + 0xe0, 0x54, 0xbf, 0x1e, 0xf8, 0x32, 0xbb, 0x1f, 0xdb, 0x5d, + 0xc2, 0x94, 0x1c, 0xe7, 0x52, 0x4c, 0x2d, 0x20, 0x24, 0x21, + 0xb8, 0x85, 0xfc, 0x17, 0xed, 0x65, 0x4e, 0x02, 0x4d, 0xaf, + 0x15, 0x91, 0x0d, 0x3c, 0xda, 0xe4, 0xdd, 0xce, 0x43, 0x53, + 0x85, 0x7a, 0xe2, 0x73, 0x49, 0x8e, 0x9b, 0xe8, 0x4d, 0x04, + 0xe5, 0xad, 0x17, 0x58, 0xfe, 0xdb, 0x55, 0x44, 0x79, 0x91, + 0x41, 0xcc, 0xb4, 0x83, 0xa3, 0xc4, 0x3d, 0x6b, 0x01, 0xc0, + 0xb3, 0xa9, 0x7e, 0xd9, 0x1e, 0x9d, 0x2c, 0xa8, 0x3e, 0x8c, + 0x4c, 0xdd, 0x8e, 0xb9, 0x06, 0xc5, 0x2c, 0x70, 0xc7, 0x93, + 0x44, 0xc8, 0xe8, 0x76, 0x80, 0xd8, 0xc4, 0xaa, 0x2e, 0x8b, + 0xd9, 0x48, 0xca, 0xb2, 0xbe, 0x98, 0x9a, 0x42, 0xf9, 0x6b, + 0x36, 0x60, 0xd1, 0x9f, 0x55, 0x4c, 0x5f, 0x20, 0x68, 0xd2, + 0x15, 0x7b, 0x05, 0x65, 0xb3, 0x8d, 0xd3, 0x68, 0xb2, 0x13, + 0x29, 0xfc, 0xc3, 0x99, 0xdf, 0x20, 0xd8, 0xe0, 0x75, 0x1d, + 0x87, 0xe3, 0x2b, 0x1d, 0x41, 0xe1, 0x54, 0x5d, 0xdb, 0x0b, + 0x6f, 0x23, 0x42, 0xe9, 0xa6, 0xbb, 0xa1, 0xf8, 0x01, 0xfc, + 0x5b, 0x99, 0x23, 0x56, 0xa2, 0x54, 0xe9, 0x85, 0x8b, 0x1d, + 0xa1, 0x5d, 0x33, 0x27, 0x99, 0xd3, 0xfb, 0xf5, 0xa3, 0x01, + 0x90, 0xf0, 0xef, 0x12, 0x80, 0x7e, 0xf8, 0x2b, 0x27, 0x82, + 0xdd, 0xc9, 0x36, 0x81, 0x38, 0x3e, 0xd0, 0x47, 0xa8, 0x1a, + 0xb6, 0x46, 0x74, 0xbd, 0x76, 0xca, 0xf6, 0xd4, 0x77, 0x60, + 0x6c, 0x63, 0x0b, 0x4c, 0xc7, 0x39, 0xf4, 0xaf, 0xd2, 0x06, + 0xd7, 0x32, 0x68, 0xb6, 0xce, 0xdc, 0x26, 0x03, 0x73, 0xd3, + 0xf2, 0x36, 0x43, 0x82, 0xcb, 0x7d, 0x69, 0x45, 0x12, 0x20, + 0x4f, 0x75, 0x33, 0x85, 0x35, 0xa1, 0x99, 0x4e, 0xb2, 0x29, + 0x03, 0x23, 0xd0, 0x7b, 0x8a, 0x0f, 0xef, 0x19, 0xb3, 0xd2, + 0x07, 0x05, 0x9f, 0xd9, 0xb9, 0x4a, 0x5a, 0x55, 0xc4, 0xde, + 0x09, 0x10, 0xc6, 0xdb, 0xf8, 0xa3, 0xfb, 0xb1, 0xad, 0x27, + 0x59, 0xf5, 0xe0, 0xf0, 0x68, 0xdc, 0xa6, 0xa3, 0xec, 0xb1, + 0x0e, 0xee, 0x34, 0x61, 0x2a, 0xe7, 0xcc, 0xf0, 0x1d, 0xbe, + 0xfc, 0xd3, 0x72, 0x7a, 0x1c, 0xeb, 0xce, 0x73, 0x1f, 0x97, + 0x2f, 0xda, 0x23, 0x43, 0x89, 0xf3, 0xe2, 0xc5, 0xc4, 0xc2, + 0x09, 0xde, 0xb5, 0xb4, 0x99, 0xff, 0x8d, 0xba, 0x88, 0xa0, + 0x16, 0xd4, 0xa8, 0x23, 0x3a, 0xfa, 0xe3, 0xfc, 0x02, 0x22, + 0xcb, 0x56, 0x0e, 0x21, 0xae, 0xe7, 0x85, 0x7f, 0x24, 0xea, + 0x74, 0x37, 0x05, 0x3b, 0x04, 0x44, 0x55, 0xac, 0x1c, 0x42, + 0x9f, 0x0d, 0xc9, 0xfe, 0x48, 0x17, 0xc1, 0x48, 0xfd, 0x66, + 0x1a, 0x79, 0xf6, 0x38, 0x46, 0x6e, 0x6a, 0xc9, 0x76, 0x3e, + 0x57, 0x98, 0xca, 0x63, 0x8d, 0x4c, 0xa4, 0x76, 0x8a, 0x21, + 0xfa, 0x80, 0xe6, 0x06, 0x17, 0x74, 0x59, 0x0a, 0xb9, 0xe5, + 0xca, 0x3e, 0x49, 0x53, 0x37, 0xe2, 0x3c, 0xdf, 0x4e, 0x58, + 0x3f, 0xda, 0x88, 0xe8, 0x70, 0x41, 0xaa, 0x1a, 0x88, 0xdf, + 0x98, 0x3f, 0x3e, 0x13, 0xf6, 0x79, 0x08, 0x49, 0x84, 0x8b, + 0xbc, 0x6f, 0x3e, 0x86, 0xe6, 0x9e, 0x58, 0x25, 0xf7, 0x0b, + 0xac, 0x31, 0x5f, 0x30, 0x77, 0x53, 0x34, 0x5b, 0x67, 0x6e, + 0x13, 0xe0, 0xd8, 0x88, 0x79, 0x1b, 0xc0, 0x41, 0x84, 0xdf, + 0xd5, 0xc3, 0x6a, 0x8d, 0x78, 0x2d, 0x60, 0xaf, 0xf4, 0x7b, + 0xe3, 0xff, 0x96, 0xb8, 0x4a, 0xc7, 0x0f, 0x0b, 0x48, 0x80, + 0xff, 0x17, 0xcc, 0x51, 0xd4, 0xc1, 0x21, 0xfb, 0x8d, 0xa4, + 0x0c, 0x8c, 0xc6, 0x2f, 0x5f, 0x2a, 0x44, 0xda, 0x50, 0x19, + 0x8e, 0xa7, 0x73, 0x61, 0xdd, 0xe4, 0x6f, 0x45, 0xe9, 0xef, + 0x8f, 0x85, 0x1b, 0xa1, 0x1c, 0x1f, 0x68, 0xc2, 0x54, 0x0d, + 0x5b, 0x23, 0x3a, 0xbf, 0x3b, 0x65, 0x69, 0x4a, 0x95, 0x45, + 0x05, 0x55, 0xd1, 0x87, 0x1b, 0xb3, 0xc8, 0x9f, 0x6a, 0x20, + 0x5a, 0x62, 0x9a, 0x14, 0x16, 0x9d, 0xc6, 0xfb, 0xb5, 0x0c, + 0x17, 0x5e, 0xde, 0x59, 0xd8, 0xcc, 0x72, 0xeb, 0xda, 0x78, + 0x74, 0xc8, 0xd1, 0x5f, 0x38, 0x28, 0x72, 0x07, 0x81, 0x15, + 0x95, 0xed, 0xef, 0x3f, 0xfd, 0xff, 0x07, 0x4a, 0xd2, 0x6c, + 0x77, 0x55, 0x7b, 0xd7, 0x78, 0x60, 0xb3, 0x4c, 0xd9, 0xa0, + 0x39, 0x3d, 0x0e, 0x94, 0x67, 0xd8, 0xee, 0xaa, 0xf6, 0x6d, + 0xf0, 0xc0, 0xa5, 0x98, 0x71, 0x83, 0xa5, 0x64, 0x01, 0xd9, + 0x6b, 0x14, 0x11, 0x9d, 0xd2, 0xab, 0x92, 0xd7, 0x3d, 0x59, + 0xa9, 0xba, 0xfc, 0x03, 0x5c, 0xd3, 0xf1, 0x3a, 0xd5, 0x01, + 0x92, 0x52, 0xf3, 0x7d, 0x12, 0x11, 0xea, 0x87, 0xe0, 0x82, + 0x97, 0x34, 0xd3, 0x7d, 0xf3, 0x7e, 0x7c, 0x26, 0x2f, 0xf2, + 0x10, 0x92, 0xcb, 0xd5, 0x0c, 0x9a, 0x32, 0x63, 0x57, 0x6e, + 0x94, 0x76, 0x66, 0xf3, 0xbb, 0x9c, 0x80, 0x1a, 0x97, 0x67, + 0x57, 0xc6, 0xd9, 0x98, 0x8b, 0xec, 0xd7, 0x42, 0x37, 0xc3, + 0x0f, 0x0c, 0x2e, 0xe8, 0xb2, 0x14, 0x54, 0x01, 0x34, 0xf0, + 0xee, 0x16, 0xf2, 0xbe, 0xcf, 0x8f, 0x51, 0x2b, 0x0e, 0x0f, + 0xe7, 0x7d, 0x8d, 0xbe, 0xad, 0x50, 0x5a, 0xb3, 0xef, 0x6a, + 0x45, 0xc4, 0x8e, 0x19, 0xbb, 0x05, 0x5d, 0x2b, 0xd2, 0x94, + 0xe9, 0x8a, 0x0a, 0xaa, 0x61, 0xcd, 0x36, 0xa5, 0x53, 0xfd, + 0xd4, 0x40, 0xb4, 0xc4, 0xf7, 0x28, 0x2c, 0xf9, 0x4f, 0x35, + 0xa9, 0x18, 0x2e, 0xbc, 0x7f, 0xb2, 0x73, 0x5b, 0xe4, 0x15, + 0x5e, 0xd6, 0x1f, 0x43, 0x73, 0x4f, 0x2c, 0xf3, 0x9a, 0xe4, + 0x56, 0xf9, 0xce, 0x18, 0xda, 0xc8, 0xf9, 0x89, 0xa8, 0x6b, + 0x5e, 0xf7, 0xba, 0xc6, 0x59, 0x86, 0x11, 0x14, 0x72, 0xfb, + 0x15, 0x3c, 0xf2, 0xa2, 0xd8, 0x41, 0xe0, 0xf8, 0xc6, 0xdf, + 0xe5, 0x68, 0x9d, 0xdb, 0x13, 0xb1, 0x1b, 0xae, 0xe3, 0x45, + 0x7a, 0x5c, 0xb6, 0x87, 0xd6, 0x82, 0x84, 0x6a, 0x71, 0xd5, + 0x30, 0x75, 0x9e, 0xbc, 0x3b, 0x06, 0xb8, 0x65, 0x21, 0x74, + 0x69, 0x02, 0xe7, 0xa4, 0x25, 0xfa, 0x24, 0x22, 0x17, 0xcd, + 0x03, 0xc7, 0xed, 0x68, 0x65, 0xfa, 0x25, 0xfc, 0xf8, 0x4c, + 0x5e, 0x27, 0x20, 0xe7, 0x55, 0x69, 0xa1, 0x12, 0xae, 0xf8, + 0xe7, 0x8f, 0xdc, 0x0e, 0xf0, 0xfa, 0xfb, 0xa3, 0xfc, 0xee, + 0x65, 0x26, 0x96, 0x8e, 0x24, 0xfe, 0x91, 0x95, 0x21, 0x7a, + 0x71, 0xad, 0x65, 0xc5, 0x58, 0xd6, 0xe5, 0x8c, 0xaa, 0x39, + 0xde, 0xd2, 0x59, 0x80, 0xa0, 0x17, 0x4c, 0x14, 0x77, 0x6c, + 0x9d, 0xa4, 0x6b, 0xb4, 0x9f, 0x9e, 0xe2, 0x25, 0x69, 0x36, + 0xda, 0xcb, 0xdc, 0x8a, 0x3c, 0x30, 0xb8, 0x26, 0x8d, 0x50, + 0x46, 0x21, 0x7b, 0x85, 0xdd, 0x93, 0xc7, 0x1f, 0x56, 0xc1, + 0xe3, 0x02, 0x0d, 0x2c, 0x37, 0x06, 0x41, 0x90, 0x39, 0xcc, + 0x34, 0xf2, 0x2f, 0x70, 0x8c, 0xdc, 0xd4, 0x51, 0xec, 0x7c, + 0xae, 0xf3, 0x2a, 0xe1, 0x1a, 0x78, 0x77, 0x0b, 0x79, 0x5f, + 0x86, 0xa6, 0xc9, 0xf4, 0x07, 0xe6, 0x92, 0xdf, 0x60, 0x5a, + 0x53, 0x9e, 0xfd, 0xf6, 0x2a, 0x36, 0xb6, 0x94, 0x91, 0x6a, + 0x8a, 0xd0, 0x32, 0xbe, 0xe5, 0x08, 0x63, 0x8c, 0x7c, 0xb0, + 0x9c, 0xb9, 0xb7, 0xf2, 0xcd, 0x9b, 0x70, 0x78, 0x34, 0x6e, + 0x94, 0xb5, 0x92, 0x0f, 0xd7, 0x39, 0xa6, 0xd2, 0x60, 0x64, + 0xb0, 0xff, 0xd9, 0x6c, 0x83, 0xc2, 0xbe, 0x54, 0x88, 0x77, + 0xa0, 0x32, 0xdf, 0x8d, 0xe6, 0xc2, 0x79, 0x0b, 0xde, 0x8a, + 0x11, 0x1d, 0x90, 0xc3, 0x3d, 0x2e, 0x5b, 0xa2, 0x6b, 0x41, + 0x42, 0x35, 0xd9, 0x8b, 0x18, 0xdb, 0x4f, 0x5e, 0x2f, 0x6b, + 0xee, 0xc0, 0xd8, 0xc6, 0x16, 0x98, 0x4d, 0x72, 0x2b, 0x9d, + 0x67, 0x0c, 0x6d, 0x64, 0x9d, 0xa5, 0x54, 0xd4, 0x2f, 0x9a, + 0x5d, 0x63, 0xcd, 0x43, 0xe9, 0x0a, 0x39, 0x9c, 0xeb, 0x1e, + 0x81, 0x24, 0x9f, 0x33, 0x0d, 0xdd, 0x7b, 0x1c, 0x23, 0x37, + 0x35, 0x85, 0x3b, 0x1f, 0xca, 0x4c, 0xa2, 0xd5, 0x43, 0x90, + 0x82, 0x75, 0xf9, 0xf2, 0x08, 0xb6, 0xa5, 0x84, 0xdc, 0x09, + 0x30, 0x4f, 0x76, 0x0c, 0xb3, 0xca, 0x42, 0xe8, 0xd2, 0x04, + 0x0d, 0x8b, 0x4a, 0x37, 0x48, 0x44, 0x2e, 0x59, 0x4b, 0x47, + 0x12, 0x7f, 0xa9, 0xab, 0xf1, 0x3d, 0xd9, 0xb7, 0xd3, 0x83, + 0x2c, 0x6b, 0x93, 0x46, 0xe4, 0xf4, 0x38, 0x15, 0x5f, 0xe6, + 0x3e, 0xed, 0x5e, 0x77, 0x46, 0x86, 0xd1, 0x25, 0x07, 0x49, + 0x06, 0x4d, 0x19, 0xd0, 0xca, 0x37, 0x4a, 0x3b, 0x33, 0x98, + 0xbc, 0x4e, 0x40, 0x0d, 0xaa, 0xd2, 0x55, 0xfd, 0x6f, 0x69, + 0xcd, 0x40, 0x50, 0xea, 0x26, 0x0a, 0xda, 0x36, 0xaf, 0x52, + 0xd4, 0x5a, 0xae, 0x4f, 0x71, 0xf3, 0xd5, 0x1b, 0x6d, 0x84, + 0x6e, 0x45, 0x1e, 0x18, 0x5c, 0x13, 0xa7, 0x28, 0x1c, 0x81, + 0xcb, 0xe7, 0x22, 0x47, 0x26, 0x7f, 0xee, 0x74, 0xdc, 0x8f, + 0x02, 0x83, 0x21, 0x52, 0x75, 0xcb, 0x5e, 0xa2, 0x27, 0x12, + 0xf7, 0xf8, 0xf5, 0xc7, 0x14, 0x10, 0x68, 0xa3, 0x7b, 0x30, + 0x5b, 0x5c, 0xeb, 0xfb, 0xdc, 0x82, 0x43, 0x34, 0x51, 0x30, + 0xb4, 0x90, 0xae, 0xf2, 0x25, 0x73, 0x04, 0x76, 0xaf, 0x21, + 0x8c, 0x9b, 0xcd, 0x93, 0x22, 0x51, 0x69, 0x74, 0xc1, 0xb7, + 0xcc, 0x9c, 0x27, 0x87, 0x73, 0x82, 0x03, 0x33, 0x4f, 0x7d, + 0x09, 0xd0, 0xf9, 0x75, 0x26, 0xa1, 0x36, 0x9f, 0x4d, 0x0a, + 0x0b, 0xaf, 0x63, 0x9c, 0xbb, 0x06, 0xea, 0x2f, 0x6f, 0xcd, + 0x6c, 0x66, 0x39, 0x94, 0x9c, 0x59, 0x0f, 0x4d, 0x0c, 0xcc, + 0xff, 0x37, 0x24, 0xc6, 0x62, 0x17, 0x98, 0xc1, 0xd8, 0x39, + 0x20, 0x36, 0x31, 0xcb, 0xea, 0x52, 0xa7, 0x12, 0xd3, 0xcd, + 0xce, 0x26, 0xc7, 0xf1, 0xaf, 0x6a, 0x53, 0xb0, 0x76, 0xb9, + 0x07, 0x77, 0x1a, 0xd1, 0x15, 0x92, 0x66, 0x78, 0xef, 0x5f, + 0x7e, 0x88, 0xd0, 0xaf, 0x5f, 0x7b, 0x4c, 0x06, 0xe6, 0x65, + 0x27, 0x6c, 0x86, 0xc7, 0x55, 0xfa, 0xd2, 0x8a, 0x95, 0x49, + 0xc9, 0x96, 0xf4, 0x6f, 0x04, 0x86, 0x89, 0xe1, 0x3b, 0xe2, + 0x78, 0x31, 0xb0, 0xe5, 0xf3, 0x5e, 0x83, 0xd8, 0xc3, 0xae, + 0x64, 0x8b, 0x0c, 0xed, 0x16, 0xc6, 0xb2, 0xec, 0x28, 0x89, + 0x85, 0x52, 0x30, 0x12, 0x81, 0x46, 0xb6, 0x8f, 0x01, 0x66, + 0x5c, 0xf1, 0xfa, 0xa8, 0x06, 0xd0, 0x88, 0x34, 0x59, 0xe8, + 0xf5, 0x7e, 0x80, 0xad, 0x8e, 0x10, 0x6c, 0x70, 0xdb, 0xef, + 0xa2, 0x90, 0xb0, 0xf5, 0x0c, 0xe5, 0xb1, 0xf0, 0xcc, 0x53, + 0x91, 0xf8, 0x17, 0xad, 0xdf, 0x2a, 0xe0, 0x34, 0x22, 0x0d, + 0x87, 0x3a, 0xac, 0xfe, 0x20, 0xba, 0xc2, 0x04, 0x1b, 0x1c, + 0x46, 0x4b, 0xc9, 0x24, 0x0b, 0x2b, 0x70, 0x2a, 0xbe, 0x0f, + 0x7c, 0x19, 0xbc, 0xee, 0x8c, 0xcf, 0x61, 0x4a, 0x0e, 0x92, + 0x02, 0x3b, 0xb6, 0xf1, 0x46, 0xac, 0x87, 0xa8, 0x11, 0xc9, + 0xd5, 0x3a, 0x81, 0xba, 0x66, 0x4e, 0xc9, 0xa4, 0x60, 0x24, + 0xc1, 0x8c, 0xaf, 0xdd, 0x02, 0xcc, 0xb8, 0x21, 0x37, 0x93, + 0x0c, 0x63, 0xdb, 0x84, 0x2f, 0x51, 0xf2, 0x09, 0x9a, 0x7c, + 0x9b, 0x82, 0x0a, 0x08, 0x34, 0xb0, 0xdc, 0x18, 0xb6, 0xb8, + 0x15, 0x35, 0x7b, 0xc7, 0x86, 0x68, 0xa2, 0x60, 0xab, 0xe3, + 0x9f, 0x27, 0x4a, 0xe6, 0x40, 0x6c, 0x62, 0x55, 0x17, 0xa4, + 0x8d, 0x24, 0x65, 0x59, 0x5f, 0x4c, 0x4d, 0x21, 0x9d, 0xd4, + 0x4e, 0xcd, 0xe6, 0xc7, 0x06, 0x66, 0x9e, 0xfa, 0x12, 0x63, + 0x31, 0xea, 0x4c, 0x81, 0x6c, 0xfd, 0xd7, 0x1e, 0x1d, 0x32, + 0xa5, 0x67, 0x0e, 0x0a, 0xfd, 0x71, 0xb1, 0x94, 0xb4, 0xaa, + 0x4b, 0x7f, 0xab, 0xc5, 0x85, 0x4b, 0x7a, 0xd6, 0x02, 0x43, + 0xa5, 0x91, 0xfc, 0x71, 0x3c, 0xf9, 0x58, 0x93, 0x98, 0x2f, + 0xa0, 0x6c, 0x80, 0x57, 0x32, 0xa4, 0x06, 0x97, 0x0b, 0x63, + 0x59, 0x76, 0x14, 0xa5, 0xc8, 0x58, 0x3b, 0xbd, 0xe2, 0xda, + 0x0d, 0x89, 0xeb, 0x49, 0x33, 0x3c, 0x96, 0xce, 0x3f, 0x44, + 0xaf, 0xb3, 0x2a, 0x6a, 0xf6, 0x4d, 0xcf, 0xd0, 0x87, 0xc0, + 0x95, 0x05, 0xfd, 0x4e, 0x94, 0x0f, 0xa3, 0x29, 0x18, 0x09, + 0xa1, 0x23, 0x5b, 0xa6, 0xe1, 0x33, 0x2e, 0x99, 0x7d, 0x54, + 0x03, 0x68, 0x44, 0x1a, 0xcd, 0x74, 0x9b, 0x3f, 0x40, 0xb7, + 0x47, 0x08, 0x36, 0x38, 0x8c, 0x96, 0x51, 0x48, 0x84, 0xae, + 0x6b, 0x8b, 0xa2, 0x10, 0x14, 0xdb, 0xe8, 0xe3, 0xd7, 0xec, + 0x5b, 0xf5, 0x35, 0xf7, 0x9e, 0x62, 0xb9, 0xbc, 0x4a, 0x60, + 0x78, 0x9f, 0x35, 0x0f, 0xb7, 0x2d, 0x19, 0x7b, 0xbe, 0x77, + 0xe2, 0xb9, 0x21, 0xc5, 0x95, 0xd1, 0x74, 0xd6, 0x6d, 0xef, + 0xfa, 0xc8, 0x91, 0x28, 0xad, 0x9b, 0xcd, 0xd2, 0xcf, 0x05, + 0x4d, 0x17, 0x62, 0x4e, 0x20, 0x9d, 0xd1, 0x55, 0xf6, 0x24, + 0xc0, 0xff, 0xfb, 0xb2, 0x1e, 0x9a, 0x18, 0x5b, 0x3d, 0x6e, + 0x48, 0x4f, 0xc4, 0x2e, 0xf3, 0x41, 0x73, 0x72, 0x45, 0xe6, + 0x96, 0xed, 0xb8, 0x69, 0xe2, 0xe3, 0xae, 0x8d, 0xbd, 0x25, + 0x2d, 0xcb, 0x62, 0x6f, 0x23, 0xf1, 0xdc, 0xa3, 0x8f, 0xa8, + 0x82, 0xee, 0x2b, 0x81, 0x90, 0x01, 0xe7, 0x16, 0xfa, 0x03, + 0xc6, 0xf9, 0xbf, 0x2f, 0xf3, 0x18, 0x1e, 0x57, 0x9c, 0x73, + 0x5d, 0x9a, 0x97, 0x6e, 0xce, 0x6d, 0x3d, 0x4b, 0xa1, 0xb5, + 0xeb, 0x43, 0x23, 0x39, 0xd4, 0x3c, 0x99, 0xb4, 0x64, 0x2f, + 0xbd, 0x1f, 0x17, 0xaa, 0xbb, 0xcd, 0x9c, 0x48, 0x5a, 0x66, + 0x52, 0x9a, 0x50, 0x40, 0x63, 0xc9, 0x2f, 0xc0, 0xeb, 0xa9, + 0xe7, 0x1e, 0x6d, 0x72, 0x8f, 0x67, 0xc0, 0xc8, 0xa3, 0x3d, + 0x71, 0xd8, 0xc5, 0x47, 0x2e, 0x97, 0xb5, 0x59, 0xfb, 0x90, + 0xb4, 0xcc, 0xa4, 0xf7, 0xa0, 0x80, 0xc6, 0x51, 0x5e, 0x43, + 0xcb, 0x9f, 0xd6, 0xd5, 0x87, 0x20, 0x28, 0x75, 0x13, 0x05, + 0x6d, 0x1b, 0xb6, 0x29, 0x6a, 0x2d, 0xb2, 0xce, 0xba, 0x14, + 0xf7, 0x5c, 0x4b, 0xfb, 0x80, 0x31, 0xc2, 0x97, 0x5e, 0x90, + 0x86, 0x7a, 0x5c, 0xed, 0xa9, 0xb2, 0x35, 0xe3, 0xab, 0x5b, + 0x8b, 0x2d, 0x83, 0xc3, 0x4f, 0xa2, 0xbc, 0x86, 0x4a, 0xbb, + 0x49, 0xe6, 0x8a, 0xfd, 0x53, 0x69, 0x30, 0x32, 0x58, 0x9e, + 0x8d, 0x36, 0xa0, 0x61, 0x64, 0x2c, 0xfc, 0xbf, 0x71, 0x6d, + 0xe7, 0xa5, 0x94, 0xc5, 0xf8, 0x1e, 0x4b, 0x67, 0xfe, 0x22, + 0x71, 0xbd, 0xf1, 0x83, 0xab, 0x89, 0x3a, 0x6b, 0xd7, 0x96, + 0x7d, 0x64, 0xa9, 0x14, 0xb7, 0xac, 0x35, 0xa7, 0x3c, 0xf7, + 0x30, 0xb6, 0x7a, 0xdc, 0x90, 0x9e, 0x4b, 0x5c, 0x25, 0x82, + 0xe6, 0xe4, 0xc7, 0x05, 0xe4, 0xb6, 0xd0, 0x4e, 0xbc, 0x03, + 0x75, 0xf6, 0xd6, 0x87, 0x36, 0x33, 0xfd, 0x4a, 0x07, 0xb1, + 0x42, 0x49, 0xe9, 0x61, 0xe8, 0x6f, 0xda, 0x1d, 0x37, 0x53, + 0xe1, 0x50, 0x99, 0xf5, 0x59, 0x67, 0x5d, 0x0a, 0x9a, 0x2e, + 0xc4, 0x9c, 0x40, 0xf9, 0x61, 0xaa, 0x2f, 0x48, 0x43, 0x3d, + 0x38, 0xc1, 0x55, 0x0d, 0x44, 0x8e, 0x4c, 0xfe, 0x1f, 0xe8, + 0x7b, 0xdd, 0x04, 0xc5, 0x42, 0xa4, 0xea, 0x55, 0xbc, 0x87, + 0x4e, 0x24, 0x2d, 0x33, 0x29, 0x4d, 0x28, 0x20, 0xd0, 0x85, + 0xf6, 0x60, 0x37, 0x9c, 0x8a, 0x06, 0x76, 0x1a, 0xfd, 0x74, + 0x81, 0x57, 0x9e, 0x66, 0xa4, 0x38, 0x80, 0xaa, 0x63, 0x9d, + 0xbe, 0xf6, 0x98, 0x0c, 0x0f, 0xca, 0x4e, 0xd8, 0xcf, 0x4d, + 0xaa, 0x37, 0x67, 0xd7, 0x18, 0xf7, 0x64, 0xc6, 0xae, 0xdc, + 0xeb, 0xec, 0xcc, 0x25, 0xb5, 0xfb, 0xc3, 0x34, 0xed, 0xce, + 0xa7, 0x5f, 0xb7, 0x28, 0x2d, 0xb8, 0x96, 0x35, 0xc3, 0x62, + 0x47, 0xed, 0xbc, 0xe3, 0xcf, 0xf4, 0x58, 0x9b, 0x06, 0x93, + 0xb9, 0x78, 0x66, 0xc8, 0xa9, 0x7c, 0xea, 0xb7, 0x8e, 0x15, + 0x70, 0x1a, 0x11, 0xe7, 0xa2, 0x1d, 0x56, 0x7f, 0x10, 0x5d, + 0x61, 0x02, 0xec, 0x0e, 0x23, 0xc4, 0x85, 0x12, 0xf5, 0x13, + 0x9a, 0x08, 0x09, 0x99, 0x2e, 0xb0, 0x3f, 0x75, 0xaa, 0x88, + 0xf2, 0xe1, 0x82, 0x5b, 0xd9, 0xbf, 0x99, 0xa0, 0xb4, 0xa5, + 0x1d, 0xd4, 0x8a, 0x4b, 0xdf, 0x32, 0xb5, 0x0a, 0xba, 0x56, + 0xe9, 0x92, 0x51, 0xef, 0x2b, 0xde, 0x08, 0xcf, 0xd1, 0x01, + 0x76, 0x07, 0xf0, 0x62, 0xa3, 0x09, 0x25, 0xbc, 0xc5, 0x73, + 0x45, 0x9f, 0xc8, 0xd5, 0x18, 0x19, 0x2c, 0x4f, 0xa7, 0x1b, + 0x50, 0xd1, 0xf8, 0x75, 0xf3, 0xf2, 0x7d, 0xa1, 0x18, 0x92, + 0xb0, 0x03, 0x9a, 0x09, 0xd3, 0xa6, 0x26, 0x1b, 0x97, 0x72, + 0x7f, 0x67, 0xb2, 0xc3, 0x83, 0x2e, 0x98, 0x28, 0xee, 0xd8, + 0xf9, 0x8b, 0xd6, 0xab, 0xb1, 0x09, 0x57, 0x7c, 0x92, 0xa6, + 0x6e, 0x07, 0x78, 0x7d, 0x9c, 0xb0, 0x7e, 0x77, 0xd3, 0x13, + 0x19, 0x0b, 0x3f, 0x5f, 0x8d, 0x8a, 0x49, 0xb8, 0x25, 0xa0, + 0x3e, 0xe6, 0x62, 0x69, 0xde, 0xe9, 0x0f, 0x5d, 0xdf, 0x0b, + 0x32, 0x94, 0xb1, 0x8a, 0x9e, 0xbf, 0xe5, 0xbb, 0xa0, 0xfd, + 0xc2, 0x0e, 0x89, 0xc8, 0x02, 0x71, 0xd6, 0x28, 0x22, 0xf9, + 0x67, 0x95, 0xe7, 0x6d, 0x7a, 0xb2, 0x91, 0xb7, 0xdc, 0x35, + 0x6d, 0x18, 0x1b, 0x68, 0x72, 0x13, 0x41, 0x9f, 0x3d, 0x5b, + 0xd5, 0xe0, 0x45, 0xed, 0x08, 0xec, 0x9d, 0x42, 0xdb, 0xf5, + 0x59, 0xe5, 0x44, 0xa2, 0xd2, 0xe8, 0x41, 0xad, 0x5b, 0xfb, + 0xf1, 0x65, 0x35, 0x29, 0x85, 0x02, 0xe3, 0x23, 0x1d, 0x24, + 0xc3, 0xfc, 0x33, 0x56, 0x4e, 0xc7, 0xa8, 0x02, 0x68, 0x23, + 0x1f, 0x2c, 0x27, 0xbf, 0x5d, 0xdd, 0xa2, 0x56, 0x1c, 0x1e, + 0x0d, 0xfa, 0x0e, 0xa1, 0x84, 0x92, 0x11, 0xc2, 0x13, 0xde, + 0x77, 0x3a, 0x6e, 0xa6, 0x01, 0xa0, 0xf1, 0x29, 0x6f, 0x07, + 0x8c, 0x95, 0xcf, 0x62, 0x9b, 0xbc, 0x28, 0x2b, 0x74, 0xd1, + 0x2a, 0x2d, 0xf0, 0xb0, 0x7d, 0x27, 0xc3, 0xe0, 0xfc, 0xe7, + 0xae, 0x1d, 0xb1, 0x65, 0xc6, 0xf8, 0x29, 0x0e, 0x20, 0xcb, + 0xd4, 0xd9, 0xf0, 0x5a, 0xc0, 0x9d, 0x2b, 0xf6, 0x05, 0x3d, + 0xef, 0xb3, 0x94, 0x4d, 0x1e, 0x16, 0xbd, 0x93, 0x65, 0x1f, + 0xc5, 0xc8, 0xfa, 0x71, 0x1e, 0x8e, 0x27, 0x2c, 0xfe, 0x6d, + 0x44, 0x74, 0x86, 0x95, 0xdd, 0x7a, 0xe4, 0xbc, 0x93, 0x73, + 0xf9, 0x2a, 0x02, 0xd6, 0xda, 0x4f, 0x53, 0xb9, 0xec, 0x18, + 0xa5, 0x57, 0x84, 0x13, 0x67, 0x08, 0x1a, 0xd5, 0x94, 0x6e, + 0x90, 0x88, 0x5c, 0xb2, 0x32, 0x16, 0x7e, 0xbe, 0xd9, 0xd7, + 0x92, 0xb3, 0x4a, 0x83, 0x7c, 0x0f, 0xc4, 0xd2, 0x7f, 0x11, + 0x7e, 0xe0, 0x2e, 0x88, 0x99, 0x1d, 0x8b, 0xe1, 0x49, 0x29, + 0x98, 0xdf, 0x09, 0xe9, 0x75, 0xa2, 0xed, 0xe4, 0xfe, 0xce, + 0xa7, 0x45, 0xc5, 0x5c, 0xf3, 0x50, 0x1f, 0x73, 0x31, 0xd5, + 0x6f, 0x95, 0x6e, 0xfb, 0xd7, 0x0c, 0xec, 0x34, 0x39, 0xe8, + 0xc1, 0xae, 0xff, 0xcc, 0x8b, 0x70, 0xc3, 0x97, 0xc3, 0x73, + 0x4b, 0x97, 0x5c, 0xd5, 0x71, 0x90, 0x57, 0xa7, 0xbf, 0xf3, + 0xf7, 0x84, 0x31, 0xd6, 0x21, 0xca, 0x6a, 0x52, 0xc9, 0x04, + 0x05, 0x46, 0x3a, 0x48, 0x45, 0x3b, 0x66, 0xac, 0x9c, 0x4d, + 0x62, 0x61, 0xe5, 0x6f, 0xbb, 0x5a, 0xad, 0x9e, 0xa7, 0x5d, + 0x44, 0x50, 0x0b, 0x6a, 0x54, 0xf0, 0xce, 0x15, 0x22, 0x6d, + 0x28, 0xed, 0x47, 0xb2, 0xd8, 0xd1, 0x8f, 0x72, 0xd6, 0xc3, + 0x95, 0x96, 0x93, 0x04, 0xd0, 0x46, 0x3e, 0x58, 0x4e, 0xbd, + 0xba, 0x79, 0x87, 0xac, 0x38, 0x3c, 0x1a, 0x37, 0x4c, 0xf6, + 0x50, 0x36, 0x40, 0xca, 0x19, 0x52, 0x03, 0xaa, 0xe4, 0xd0, + 0xcd, 0x3b, 0x0a, 0xb3, 0xde, 0x0e, 0xdb, 0xe9, 0x5d, 0xc4, + 0xf5, 0xbb, 0x50, 0x56, 0xe8, 0x61, 0x54, 0x5a, 0x23, 0xa3, + 0x3f, 0x70, 0x17, 0x44, 0xad, 0xef, 0xa4, 0x91, 0xc5, 0xf5, + 0x4c, 0x8e, 0xe5, 0x95, 0xdb, 0x51, 0x43, 0xab, 0x8f, 0x3d, + 0x72, 0x5e, 0xa8, 0xd8, 0x9d, 0x15, 0x01, 0x6b, 0x6d, 0xc6, + 0xc8, 0xbd, 0x73, 0x86, 0x47, 0x72, 0xed, 0x25, 0xbd, 0xc3, + 0xc6, 0x5f, 0xa8, 0x5e, 0x28, 0xae, 0xd1, 0xe2, 0xad, 0x88, + 0x9c, 0x9b, 0xb0, 0xe1, 0x48, 0x78, 0x96, 0x09, 0x40, 0x3f, + 0x7c, 0xf4, 0xf2, 0x41, 0xf0, 0x99, 0x6e, 0xb0, 0xa6, 0x54, + 0x41, 0x77, 0xf4, 0xa1, 0x48, 0xe1, 0x92, 0x0b, 0x7d, 0xe0, + 0x47, 0xdd, 0x20, 0x1c, 0xfe, 0xc5, 0x65, 0x4b, 0xbf, 0x44, + 0x68, 0x1f, 0xac, 0x71, 0x04, 0x21, 0x3c, 0xb7, 0xfa, 0x2c, + 0xc8, 0x15, 0x81, 0x6d, 0x3d, 0xb9, 0x12, 0xa9, 0xc5, 0x72, + 0x8e, 0x38, 0x61, 0xa6, 0x08, 0x07, 0xde, 0xa0, 0x88, 0x62, + 0x5f, 0x11, 0x1a, 0x77, 0x2b, 0x8d, 0x01, 0x99, 0x56, 0x3a, + 0x82, 0x01, 0xa8, 0xba, 0x75, 0x16, 0xde, 0x46, 0x84, 0x11, + 0x8f, 0xb5, 0x81, 0x33, 0x29, 0x26, 0xf7, 0x10, 0x12, 0xf1, + 0x5c, 0xa3, 0x7e, 0xea, 0x97, 0xd3, 0x27, 0x01, 0xc7, 0xb6, + 0x7b, 0x6a, 0xda, 0x30, 0x36, 0xd0, 0xe4, 0x26, 0x82, 0xfd, + 0x7a, 0xb6, 0x69, 0x03, 0x8a, 0x19, 0x10, 0x1b, 0xf9, 0x84, + 0x75, 0x29, 0xb2, 0x09, 0x88, 0x87, 0x67, 0x13, 0x82, 0x99, + 0xb6, 0x35, 0xff, 0xc4, 0xb1, 0xbb, 0x94, 0xc0, 0xf0, 0xfd, + 0x6a, 0x1e, 0xad, 0x5a, 0x32, 0xf6, 0xbf, 0xee, 0x5d, 0x11, + 0xf2, 0x2b, 0x16, 0xb5, 0x09, 0x0f, 0x62, 0xa8, 0x08, 0xde, + 0xee, 0xff, 0x8f, 0xa1, 0x31, 0xd1, 0x93, 0xd6, 0xbc, 0x2d, + 0xb7, 0x4f, 0xb2, 0xcf, 0x22, 0x28, 0xe4, 0x35, 0x2a, 0x78, + 0xb7, 0x44, 0x4e, 0xac, 0x58, 0x91, 0x24, 0x3c, 0x4b, 0xe5, + 0x20, 0xfe, 0x3e, 0x7a, 0x79, 0xc1, 0xb3, 0x32, 0xe1, 0x8d, + 0xd4, 0x0a, 0xe9, 0xaf, 0x69, 0xb4, 0x49, 0x8a, 0xff, 0xcd, + 0xb5, 0x5d, 0x6b, 0x71, 0x23, 0xb4, 0x43, 0xf9, 0x56, 0x2f, + 0x0a, 0x7a, 0x1d, 0xa5, 0xeb, 0x9a, 0x3c, 0x2c, 0xc0, 0xb4, + 0xa6, 0xff, 0x39, 0x2f, 0x54, 0x6c, 0xaf, 0xeb, 0xe1, 0xd4, + 0xd7, 0x63, 0x64, 0xbf, 0x7f, 0x1c, 0x75, 0x11, 0xba, 0x4b, + 0x29, 0xb5, 0xa0, 0xac, 0x13, 0xc2, 0xa8, 0xb4, 0x46, 0x85, + 0x1e, 0xba, 0x7d, 0x16, 0x64, 0xeb, 0xa1, 0xd7, 0xff, 0xbd, + 0x09, 0xb5, 0x83, 0x39, 0x47, 0x1c, 0xd1, 0x53, 0x04, 0xe2, + 0x6f, 0x50, 0x44, 0x31, 0xce, 0xe9, 0x0d, 0xda, 0xf4, 0xa7, + 0xe1, 0xad, 0x78, 0xad, 0x37, 0x58, 0x53, 0x2a, 0xc1, 0xda, + 0x7a, 0xb1, 0x24, 0x91, 0x49, 0xe4, 0xdf, 0x70, 0xc2, 0x8f, + 0x10, 0x0e, 0x7f, 0x83, 0xd3, 0xc4, 0xbe, 0x22, 0x34, 0xee, + 0x56, 0xd9, 0x02, 0xf1, 0xbb, 0xde, 0x7c, 0xcf, 0x0f, 0xff, + 0xb0, 0x4a, 0x2d, 0x16, 0x9b, 0x62, 0xbe, 0x60, 0xee, 0xa6, + 0x6d, 0x3c, 0x3a, 0x64, 0x89, 0xce, 0x1c, 0x14, 0x39, 0xe2, + 0xa1, 0xeb, 0xab, 0x97, 0x96, 0xfe, 0xe1, 0x7e, 0xcc, 0xad, + 0xf0, 0x2b, 0x51, 0x2a, 0x95, 0xa3, 0xa4, 0xef, 0xb1, 0xcf, + 0xf8, 0xf2, 0x1f, 0x46, 0x26, 0x8f, 0x47, 0xbd, 0x03, 0x83, + 0x16, 0x38, 0x82, 0xa8, 0x22, 0x64, 0x74, 0x3b, 0x82, 0xe3, + 0x72, 0x5b, 0x68, 0x27, 0x5e, 0xe0, 0xdb, 0x7b, 0x6b, 0xa2, + 0x1b, 0xf8, 0x9f, 0x25, 0xba, 0x22, 0x27, 0x56, 0x2c, 0xa9, + 0x12, 0x1e, 0xc4, 0x93, 0x10, 0x7f, 0x1f, 0x3d, 0xdd, 0x81, + 0x8c, 0x42, 0xf6, 0xc9, 0x79, 0xe5, 0x4d, 0x3e, 0xac, 0x41, + 0x05, 0x04, 0x1a, 0x58, 0x6e, 0x0c, 0xcf, 0xe9, 0x79, 0xf4, + 0x0b, 0xbb, 0xe5, 0xe6, 0x31, 0x54, 0x04, 0x6f, 0x77, 0x9e, + 0xa6, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x38, + 0xea, 0x22, 0xb7, 0x96, 0x52, 0xa9, 0x83, 0x9b, 0x26, 0x47, + 0x93, 0xab, 0x8c, 0xc9, 0x42, 0x57, 0xd4, 0xa4, 0x51, 0x08, + 0x0a, 0x8c, 0x74, 0x90, 0x8a, 0x76, 0xcc, 0x9b, 0xfb, 0x9a, + 0xd6, 0xe2, 0x46, 0xab, 0x86, 0x31, 0xac, 0x5e, 0x14, 0xf4, + 0x3a, 0x89, 0x15, 0xf7, 0x78, 0x58, + }, + { + /* 7 */ + 0xa5, 0x9d, 0x85, 0x46, 0x8a, 0x0e, 0x61, 0xc4, 0x42, 0xe7, + 0xb4, 0xca, 0xc0, 0x3d, 0xf4, 0xe8, 0x2d, 0x30, 0x7c, 0xb1, + 0xb2, 0x96, 0xab, 0x86, 0x12, 0x3f, 0xbc, 0x10, 0x25, 0xe6, + 0x1e, 0xf1, 0x32, 0xb3, 0x29, 0xf1, 0xe6, 0xb1, 0x53, 0x61, + 0xca, 0xf8, 0xa0, 0xd0, 0x5a, 0xc4, 0x96, 0x37, 0x8f, 0xc2, + 0x69, 0x55, 0xf0, 0x82, 0xf2, 0x7d, 0x39, 0xb6, 0xe7, 0xff, + 0x11, 0x3a, 0xe8, 0x2f, 0x0e, 0xde, 0xe3, 0x87, 0x53, 0x34, + 0x70, 0x7e, 0xd2, 0xdc, 0x1d, 0x4a, 0x2b, 0x01, 0x04, 0x6c, + 0x30, 0x1b, 0x49, 0x07, 0xfb, 0x7a, 0x43, 0x73, 0xa1, 0x91, + 0x25, 0x09, 0xd5, 0x45, 0xd7, 0x23, 0x38, 0xfe, 0x0a, 0x59, + 0x8f, 0xd0, 0x03, 0x3b, 0xce, 0xf6, 0x74, 0xeb, 0xac, 0x04, + 0x10, 0x73, 0xc0, 0x6c, 0xe7, 0x1c, 0x6a, 0x2b, 0xcf, 0x0f, + 0xc1, 0x01, 0x94, 0x24, 0xd2, 0xd7, 0xda, 0x8c, 0x54, 0xbe, + 0x1b, 0x26, 0xf4, 0xdb, 0xe5, 0xb1, 0xf6, 0xa2, 0xa6, 0x6a, + 0x61, 0x0e, 0x38, 0x4d, 0xe6, 0x45, 0x88, 0x7e, 0x5e, 0x58, + 0x3c, 0xda, 0x03, 0xe5, 0x5f, 0x82, 0xa7, 0x50, 0x83, 0x33, + 0x9e, 0x9f, 0xdf, 0x92, 0xf7, 0x91, 0x7a, 0xe4, 0x33, 0xad, + 0xe6, 0x75, 0x45, 0x19, 0x64, 0x85, 0x39, 0xaa, 0x3a, 0x22, + 0x60, 0x54, 0x0b, 0x32, 0x1a, 0x23, 0xd7, 0x66, 0x0a, 0xa5, + 0xd1, 0x79, 0x55, 0xea, 0x2b, 0x5d, 0x1b, 0x5f, 0xed, 0xb8, + 0x22, 0x77, 0x05, 0xe7, 0xc7, 0xaf, 0xf9, 0x47, 0x7e, 0xe1, + 0xf7, 0x35, 0x8e, 0x57, 0x76, 0x08, 0x8d, 0xf3, 0xf5, 0x5f, + 0xb0, 0x09, 0x24, 0x8a, 0x52, 0x85, 0xbb, 0xff, 0xd3, 0x45, + 0xd5, 0x87, 0x4b, 0x19, 0xea, 0xc2, 0x33, 0x4e, 0xfb, 0x71, + 0x91, 0x15, 0x0c, 0x6e, 0x4b, 0x21, 0x02, 0x93, 0x35, 0xa4, + 0x58, 0xb2, 0xc8, 0xb9, 0xa1, 0xe3, 0x64, 0xa5, 0x52, 0x21, + 0x0f, 0xa1, 0xa6, 0xc2, 0x57, 0x33, 0x83, 0x63, 0xb4, 0x4b, + 0xef, 0x6e, 0x03, 0xfc, 0x50, 0x8d, 0xf2, 0x4f, 0x18, 0x1b, + 0xbf, 0xbc, 0x26, 0x54, 0x29, 0x20, 0x80, 0x1e, 0x57, 0x42, + 0x4b, 0xab, 0x06, 0x94, 0xfd, 0xaa, 0x49, 0x1e, 0x80, 0x3e, + 0x48, 0x2e, 0xb8, 0x53, 0x5a, 0x60, 0xf8, 0xa1, 0xa7, 0xef, + 0x95, 0xcf, 0x24, 0x7e, 0xbb, 0x20, 0x4a, 0x0f, 0x3c, 0x21, + 0x1c, 0x7f, 0x05, 0xcd, 0xa6, 0x68, 0xe0, 0xfc, 0x67, 0x7b, + 0x3a, 0x94, 0x56, 0x02, 0x08, 0xd8, 0x60, 0x36, 0x92, 0x0e, + 0x35, 0xf4, 0x86, 0xe6, 0x81, 0xe1, 0x4a, 0x12, 0x69, 0x8a, + 0x6d, 0x46, 0x07, 0x6f, 0x90, 0xa2, 0xc8, 0x1a, 0x38, 0x3f, + 0x69, 0x6e, 0xef, 0x25, 0xf4, 0xe1, 0x02, 0x36, 0x18, 0xec, + 0xc5, 0xe2, 0x9c, 0x3d, 0xc0, 0xd8, 0xb1, 0xa9, 0xf3, 0xe5, + 0x8b, 0xc3, 0x8a, 0xf0, 0x21, 0x46, 0xff, 0xc0, 0xfc, 0x69, + 0xcb, 0xea, 0xab, 0x8a, 0x24, 0x83, 0x81, 0x66, 0x5b, 0x89, + 0x72, 0x97, 0x74, 0x44, 0xc0, 0xa8, 0x16, 0x64, 0x34, 0x46, + 0x6d, 0xcc, 0x14, 0x89, 0x61, 0xf2, 0xa8, 0xbf, 0x36, 0x4c, + 0x2b, 0x75, 0x09, 0xa1, 0x2f, 0x87, 0x8f, 0xd4, 0xc2, 0x1c, + 0x70, 0x9a, 0xd1, 0x31, 0x51, 0xdb, 0x6d, 0x38, 0x47, 0x96, + 0xcb, 0x1a, 0x95, 0xae, 0x86, 0xf4, 0x56, 0x26, 0x29, 0xa3, + 0xbc, 0x9e, 0x88, 0xc3, 0x8b, 0xa2, 0xc4, 0xed, 0x75, 0x61, + 0xf8, 0x27, 0x9c, 0xd9, 0xc6, 0x57, 0x47, 0xc5, 0x4d, 0xb5, + 0xff, 0x39, 0x7c, 0xba, 0xd8, 0x8c, 0x80, 0x97, 0x19, 0xb0, + 0xa4, 0xc9, 0xb5, 0x3d, 0x65, 0x8a, 0x69, 0xcd, 0x96, 0x32, + 0x17, 0x47, 0x66, 0x9c, 0x35, 0xe2, 0x3f, 0x91, 0x9a, 0xfb, + 0x47, 0xca, 0x3b, 0x04, 0xa7, 0x98, 0x9b, 0xce, 0x58, 0xe5, + 0x12, 0x45, 0xe0, 0x7e, 0x28, 0xa7, 0x79, 0xc6, 0x0c, 0xec, + 0xbe, 0x5e, 0x13, 0x2a, 0xf5, 0x10, 0x40, 0x0f, 0x27, 0x7d, + 0x5f, 0x19, 0xdb, 0xf7, 0xfb, 0xdc, 0x16, 0x31, 0x68, 0x2b, + 0xd3, 0x26, 0x98, 0xb5, 0x8d, 0x6a, 0x09, 0xa3, 0xed, 0x49, + 0xe2, 0x6f, 0x52, 0xdf, 0x62, 0x26, 0x9e, 0xbb, 0xa9, 0x3b, + 0x0c, 0x76, 0x83, 0x71, 0x4e, 0xff, 0x60, 0x6c, 0xb9, 0xb5, + 0x98, 0x93, 0xa4, 0x80, 0x45, 0x78, 0x82, 0xe0, 0xda, 0x5f, + 0x51, 0xf9, 0x9a, 0x18, 0x54, 0xd6, 0xdc, 0xe1, 0x13, 0x1b, + 0x6c, 0x5d, 0xea, 0x33, 0x0b, 0x0f, 0x10, 0xa7, 0x5c, 0xb6, + 0xba, 0x50, 0xc7, 0x11, 0x03, 0xd0, 0xc6, 0x4b, 0xae, 0x84, + 0x96, 0x95, 0x0c, 0xeb, 0x39, 0x97, 0x92, 0x3c, 0xc3, 0x7c, + 0x90, 0x5c, 0xb3, 0xa6, 0xb4, 0xc0, 0x33, 0x81, 0x8d, 0x1d, + 0xe9, 0x5d, 0x48, 0xfc, 0xb5, 0x40, 0x94, 0x1e, 0x78, 0x42, + 0x9a, 0x0c, 0x1f, 0xbd, 0xcd, 0xc4, 0x5a, 0xc0, 0xe5, 0x7f, + 0x2f, 0x04, 0x98, 0xd8, 0xe6, 0xad, 0x63, 0xca, 0xc2, 0x83, + 0xc7, 0xbb, 0x9e, 0xfd, 0x3e, 0x5d, 0x6c, 0x46, 0x40, 0xaa, + 0xed, 0x58, 0x49, 0x95, 0x2e, 0x90, 0xbd, 0x37, 0x0d, 0x44, + 0x45, 0x0c, 0x3f, 0x73, 0x91, 0xad, 0xf1, 0x9f, 0xe5, 0xb9, + 0xd8, 0xf3, 0xac, 0x17, 0x24, 0xc1, 0xbc, 0x59, 0x79, 0xd6, + 0x8e, 0x70, 0x03, 0x2d, 0x42, 0x8c, 0x3d, 0x43, 0x3b, 0xd2, + 0x55, 0x17, 0x95, 0xd7, 0x48, 0xc5, 0xc1, 0xcc, 0xb6, 0xd1, + 0xe4, 0xed, 0xe8, 0x88, 0x43, 0x93, 0x2c, 0xc8, 0x68, 0x8c, + 0xda, 0x5b, 0x28, 0xd1, 0xc2, 0x27, 0x15, 0xce, 0x76, 0xe8, + 0x3d, 0x46, 0xa8, 0xbd, 0xdc, 0xc9, 0xc8, 0xfb, 0x89, 0xe2, + 0x0e, 0x82, 0xb7, 0x3c, 0x63, 0x0c, 0x7f, 0x52, 0xf1, 0x46, + 0xf7, 0x40, 0x93, 0x14, 0xbd, 0x3e, 0xf8, 0x5c, 0xc8, 0x89, + 0xa4, 0x42, 0x1e, 0x81, 0x8f, 0x47, 0xae, 0x66, 0xc5, 0xc6, + 0xab, 0x96, 0x1d, 0xdc, 0x06, 0x3b, 0xa0, 0xd9, 0x27, 0x9e, + 0x30, 0x36, 0xbd, 0xbb, 0x4c, 0xa8, 0x52, 0x40, 0xc3, 0x3c, + 0x70, 0x3f, 0x14, 0xb2, 0xdd, 0x63, 0x06, 0x76, 0x5f, 0x2f, + 0xe8, 0x15, 0x9b, 0x08, 0x20, 0xe6, 0x9d, 0x63, 0x8f, 0x1f, + 0x05, 0xde, 0x62, 0xff, 0x8c, 0x11, 0xc0, 0x21, 0x6c, 0x39, + 0xe4, 0x9b, 0x41, 0x70, 0x6d, 0xce, 0xc9, 0x9d, 0x4d, 0x0c, + 0x2a, 0x6b, 0x6e, 0x91, 0xe8, 0xec, 0x36, 0xcf, 0x75, 0xf8, + 0xe4, 0xe6, 0x08, 0xb2, 0x2e, 0x5b, 0x5d, 0x28, 0x82, 0xe9, + 0xe0, 0x68, 0x63, 0xc4, 0x19, 0xb8, 0xf5, 0x99, 0x73, 0xb9, + 0xc8, 0xd1, 0x65, 0x7c, 0x50, 0x68, 0x2d, 0x62, 0x4b, 0xfa, + 0xc9, 0xdd, 0x94, 0x39, 0xf1, 0x05, 0x87, 0x4e, 0x7a, 0xb3, + 0x66, 0x4b, 0x0d, 0x37, 0xdc, 0xd6, 0xaa, 0x17, 0x56, 0xba, + 0x36, 0xbe, 0x19, 0xb3, 0x44, 0xee, 0x0a, 0x0d, 0x4d, 0x9d, + 0x31, 0x8e, 0xfc, 0x01, 0x2d, 0x6a, 0xdf, 0xae, 0xec, 0x10, + 0xd9, 0x25, 0x29, 0xbe, 0xa3, 0x12, 0x48, 0xd7, 0x4d, 0x06, + 0xee, 0xbf, 0x87, 0x62, 0x2d, 0x60, 0x93, 0xde, 0xf6, 0x02, + 0x4c, 0x6c, 0x73, 0xb7, 0xbf, 0xd9, 0x20, 0x52, 0x0b, 0xf8, + 0xb1, 0x0e, 0x98, 0x27, 0xc2, 0xf6, 0xc4, 0x7f, 0x3f, 0x0c, + 0x2a, 0x5f, 0xec, 0x13, 0x7a, 0x8c, 0x93, 0xb9, 0x7b, 0x51, + 0x53, 0x35, 0xd1, 0x07, 0x1c, 0xc7, 0x73, 0xc3, 0x44, 0x3f, + 0x2f, 0x2c, 0x1e, 0x6d, 0xe0, 0x93, 0xce, 0x41, 0xb2, 0x28, + 0xa0, 0xf8, 0x84, 0xdb, 0x7a, 0x86, 0x76, 0x67, 0xaa, 0x2e, + 0xe9, 0x6d, 0x90, 0x49, 0x41, 0x5b, 0xaf, 0x61, 0xd5, 0xa2, + 0x91, 0xf4, 0x57, 0x6d, 0x67, 0xb2, 0x1d, 0xc8, 0x5c, 0xdf, + 0x5b, 0x35, 0xd4, 0x0e, 0xc3, 0x90, 0xb7, 0x91, 0x98, 0x64, + 0xd7, 0x14, 0x7e, 0xbd, 0xb2, 0x70, 0xfb, 0xf7, 0x5a, 0x92, + 0xaf, 0xd0, 0xa6, 0xee, 0xe3, 0x6f, 0x31, 0x9e, 0x46, 0xe9, + 0x60, 0xf1, 0x36, 0xfd, 0x72, 0xac, 0x2b, 0x0b, 0xdc, 0x68, + 0x95, 0x08, 0x9b, 0xb0, 0xaf, 0x84, 0xf0, 0xb8, 0x77, 0xa6, + 0xdd, 0xcd, 0x86, 0x73, 0x1a, 0x70, 0x6b, 0xac, 0xba, 0x3c, + 0x82, 0x04, 0x15, 0x90, 0xce, 0xda, 0xee, 0x75, 0xa7, 0x35, + 0xe5, 0xb0, 0x97, 0xc5, 0x71, 0xd6, 0x29, 0x8e, 0x31, 0x13, + 0x4f, 0xbc, 0xb5, 0xfc, 0xb1, 0x07, 0xc3, 0xd5, 0x58, 0xcc, + 0xc1, 0x70, 0x4a, 0xfb, 0xdf, 0xbc, 0xef, 0x7e, 0x3b, 0x60, + 0xb2, 0xfb, 0x93, 0x58, 0xaa, 0x83, 0xd9, 0x6b, 0xf5, 0x47, + 0xf9, 0xe8, 0xc6, 0x5e, 0xbb, 0x7e, 0x5b, 0x34, 0xc8, 0xda, + 0x48, 0x6b, 0x9d, 0xc6, 0xf0, 0xab, 0x18, 0xad, 0xec, 0xae, + 0xfd, 0x2b, 0x46, 0x1f, 0xfd, 0x6c, 0x01, 0x87, 0x75, 0x33, + 0x43, 0x05, 0x81, 0xb4, 0x1c, 0x0d, 0x34, 0xf9, 0xd3, 0x99, + 0x31, 0x2d, 0x70, 0xf3, 0x57, 0x84, 0xa0, 0x73, 0x10, 0x77, + 0x09, 0x75, 0x17, 0x32, 0x9f, 0xcb, 0xef, 0xe9, 0x18, 0x15, + 0x72, 0xed, 0xe7, 0x78, 0x45, 0xf8, 0xe3, 0xb8, 0xa5, 0x8f, + 0xfd, 0x55, 0x1d, 0x11, 0x30, 0x2a, 0xe4, 0x19, 0x0d, 0xf0, + 0x8a, 0x33, 0x05, 0xb3, 0x89, 0xdd, 0xd4, 0xf6, 0xa1, 0x8f, + 0xb8, 0xe9, 0x6f, 0xbb, 0xc9, 0x1d, 0xff, 0x52, 0xfd, 0x94, + 0x15, 0x04, 0x0f, 0x8a, 0xd3, 0xfc, 0xbc, 0xb0, 0x78, 0x77, + 0x06, 0x09, 0xbe, 0xc7, 0x8d, 0xa0, 0xc5, 0x66, 0x9c, 0x37, + 0xbf, 0x64, 0xea, 0x5a, 0x6a, 0xf6, 0x58, 0xc4, 0x63, 0xac, + 0xca, 0x98, 0x25, 0x91, 0x2f, 0x98, 0x1c, 0x47, 0xaf, 0x5d, + 0xbb, 0x94, 0x79, 0x56, 0x39, 0xc9, 0xaa, 0x67, 0x5f, 0xe5, + 0x9b, 0x58, 0x2f, 0xc6, 0x22, 0x40, 0x52, 0xc9, 0x31, 0xaa, + 0x8c, 0x89, 0x3e, 0x79, 0x27, 0xa7, 0x43, 0xd8, 0x0d, 0x38, + 0xd4, 0x56, 0x5d, 0x1e, 0x41, 0x02, 0xeb, 0x48, 0x67, 0x6d, + 0x77, 0xdb, 0xef, 0xf4, 0xfb, 0x5b, 0xc5, 0x76, 0x74, 0x9b, + 0xb8, 0x57, 0xad, 0xed, 0x78, 0xb0, 0x85, 0x69, 0xd9, 0xd4, + 0x12, 0x85, 0x19, 0x92, 0x07, 0xde, 0xa4, 0x7d, 0xc4, 0x4c, + 0xff, 0xb5, 0x91, 0x76, 0x79, 0x8e, 0x67, 0x97, 0x46, 0x4d, + 0x4e, 0x37, 0xe4, 0x9d, 0x1a, 0x7a, 0x44, 0xe8, 0x26, 0xbc, + 0xb6, 0x68, 0x53, 0x77, 0x90, 0xd6, 0xf9, 0x4f, 0x23, 0x95, + 0x30, 0x99, 0x1b, 0x9f, 0x39, 0x56, 0x53, 0xd1, 0x8b, 0x84, + 0x3c, 0xc1, 0xdd, 0x8e, 0x9f, 0xcc, 0x49, 0x4f, 0x95, 0xef, + 0x3a, 0x7b, 0x7f, 0xb5, 0xc7, 0x4e, 0x61, 0xd3, 0x7e, 0x01, + 0x59, 0x26, 0x56, 0xd2, 0x16, 0xa8, 0xe5, 0x80, 0xc1, 0x38, + 0xd7, 0x67, 0x85, 0xaf, 0xc7, 0x06, 0x15, 0xd4, 0x37, 0xa9, + 0x74, 0x76, 0x1b, 0x86, 0xf0, 0x77, 0xae, 0x1b, 0x91, 0x51, + 0x8c, 0x7c, 0x60, 0x90, 0xb1, 0x2d, 0x07, 0x92, 0x0d, 0xaf, + 0x23, 0xee, 0x9f, 0x36, 0xe1, 0xa2, 0xdb, 0xf8, 0xc0, 0xe3, + 0xa1, 0x5a, 0x0e, 0xe7, 0x1a, 0x9d, 0xe7, 0x11, 0xb8, 0x05, + 0xb1, 0xdc, 0x34, 0xd3, 0xd7, 0x30, 0xfc, 0x0f, 0x01, 0xf1, + 0x42, 0x39, 0x25, 0xd5, 0x3f, 0xef, 0xc6, 0x3c, 0xeb, 0xce, + 0x7d, 0x58, 0xed, 0xf2, 0x5c, 0xa7, 0xd9, 0xa1, 0x5e, 0xf3, + 0x38, 0x8e, 0x9d, 0xba, 0xb5, 0xeb, 0xf2, 0xac, 0x72, 0x51, + 0x97, 0xce, 0xbe, 0x09, 0xb5, 0x94, 0x03, 0xfa, 0x62, 0x99, + 0xe1, 0x54, 0x9c, 0x29, 0x16, 0xcd, 0x32, 0xbf, 0xb9, 0x48, + 0x1e, 0xd7, 0x65, 0x3b, 0xbb, 0xa3, 0xf0, 0xee, 0x0c, 0x12, + 0xbf, 0x4d, 0xd9, 0x83, 0x49, 0xcc, 0xa2, 0xf2, 0x15, 0xe4, + 0x42, 0x14, 0x59, 0xfb, 0x2b, 0x89, 0x5b, 0xef, 0x34, 0xdc, + 0xf6, 0xde, 0xdf, 0xef, 0xb2, 0x5c, 0x3e, 0x0c, 0x37, 0xe8, + 0x19, 0xc6, 0x88, 0xe4, 0xad, 0xf5, 0x52, 0x4a, 0xa6, 0x61, + 0xd5, 0xcb, 0x78, 0x41, 0x79, 0xdf, 0xfd, 0x5b, 0x92, 0x9e, + 0xe9, 0x1d, 0x74, 0xf6, 0xfe, 0xa9, 0x4d, 0x9c, 0xc2, 0x65, + 0xfc, 0x02, 0xb2, 0x4c, 0xac, 0x67, 0x2c, 0x93, 0x09, 0xc3, + 0xac, 0x2c, 0xf6, 0x63, 0x11, 0x20, 0x29, 0x85, 0xf9, 0x55, + 0x46, 0xa5, 0x1f, 0xdd, 0xf2, 0xb2, 0x22, 0xba, 0xaf, 0x4d, + 0x0e, 0x26, 0xd3, 0xf1, 0x14, 0x36, 0x02, 0xd7, 0xa8, 0x46, + 0xdb, 0x97, 0xf9, 0xc6, 0xdd, 0x3e, 0x0a, 0x7f, 0xc4, 0x3d, + 0xdb, 0x22, 0x43, 0x42, 0xd8, 0x72, 0x0b, 0xf5, 0xe2, 0xd6, + 0x48, 0x51, 0x64, 0x0d, 0x1c, 0xfe, 0xd5, 0x37, 0x96, 0xf3, + 0x7a, 0x91, 0x01, 0x1b, 0x4a, 0x69, 0x7e, 0x1d, 0x4f, 0x78, + 0x15, 0x5f, 0xfa, 0xb0, 0x19, 0x27, 0xb8, 0x8d, 0x71, 0x81, + 0xbc, 0x25, 0x70, 0xdf, 0xf9, 0xb7, 0xa9, 0x15, 0x27, 0x9b, + 0xe4, 0xa2, 0xed, 0x5f, 0xbf, 0x12, 0x35, 0xdc, 0xb9, 0x53, + 0x2e, 0xab, 0x6b, 0x5e, 0xa3, 0x96, 0x4f, 0xf5, 0xae, 0x25, + 0x94, 0x01, 0xca, 0x21, 0xc4, 0xb4, 0x03, 0x4a, 0x9f, 0x55, + 0xc5, 0x0f, 0x40, 0x1f, 0x24, 0x17, 0x5c, 0xc8, 0xee, 0xa0, + 0xcb, 0x20, 0x2a, 0xf2, 0x7c, 0x92, 0x6c, 0x82, 0x0e, 0x60, + 0xde, 0x11, 0x44, 0x63, 0x78, 0xda, 0x57, 0xec, 0xa9, 0xc9, + 0x46, 0x3e, 0x30, 0x48, 0xb9, 0xf7, 0xe2, 0x49, 0xe7, 0xb6, + 0x05, 0xc7, 0xf0, 0x54, 0xd5, 0xd1, 0x28, 0x2d, 0x02, 0x07, + 0x6a, 0xfc, 0x7b, 0x60, 0x43, 0x22, 0x6b, 0x2f, 0x81, 0xdd, + 0xb3, 0x11, 0xde, 0xb5, 0x51, 0x3a, 0x3d, 0xa4, 0x39, 0xeb, + 0x2a, 0x08, 0x51, 0x79, 0xeb, 0x72, 0x21, 0x0a, 0xcd, 0x9c, + 0xf4, 0xa5, 0xcc, 0x96, 0x1a, 0x6e, 0x7b, 0x6f, 0xe1, 0x2a, + 0x18, 0xdc, 0x96, 0x42, 0x04, 0xe5, 0x6a, 0x8b, 0xb0, 0xa7, + 0x53, 0xb1, 0x81, 0x05, 0x59, 0x9c, 0xa8, 0x2c, 0x55, 0xa0, + 0x8d, 0xd4, 0x9b, 0xc2, 0x9d, 0x74, 0x63, 0x2f, 0xbc, 0x3f, + 0xa3, 0xa6, 0x25, 0x9f, 0xad, 0x90, 0x51, 0xf2, 0xff, 0x5c, + 0xf8, 0x62, 0x92, 0x7d, 0x37, 0xd4, 0xf2, 0xdf, 0xce, 0xed, + 0x8c, 0x9a, 0x9c, 0x6e, 0x0b, 0xf9, 0x34, 0xf4, 0x88, 0x13, + 0x4c, 0xbb, 0x71, 0x6b, 0x24, 0xc9, 0x32, 0xe7, 0x0e, 0x7f, + 0x8b, 0xfa, 0x4b, 0x98, 0x3d, 0xa9, 0xe1, 0xec, 0x56, 0x16, + 0x7b, 0xd0, 0xe9, 0x10, 0xf5, 0xa3, 0x9d, 0xcb, 0x23, 0xb3, + 0xee, 0x8f, 0x79, 0x59, 0x11, 0x5d, 0xb6, 0xc7, 0x07, 0x13, + 0x88, 0x99, 0x0a, 0x1b, 0x01, 0x8a, 0x54, 0x23, 0x8c, 0xaa, + 0x6a, 0x7b, 0xb1, 0xa6, 0x5c, 0x95, 0xd6, 0xbc, 0x85, 0xef, + 0x9e, 0x29, 0x9f, 0x4a, 0xeb, 0x02, 0x89, 0xf9, 0xc9, 0x8c, + 0xd7, 0x1c, 0xc2, 0x4b, 0x84, 0x0d, 0xab, 0x57, 0x43, 0x7a, + 0x2b, 0x13, 0x94, 0xd2, 0xfc, 0x3a, 0x9e, 0xf0, 0x2a, 0xbe, + 0x37, 0xa3, 0x32, 0x4e, 0xb3, 0xd9, 0xe2, 0xc1, 0x65, 0xf1, + 0x62, 0x5a, 0xe0, 0x25, 0xae, 0xcb, 0x83, 0xe6, 0x20, 0xee, + 0x12, 0xea, 0x2e, 0x64, 0x8c, 0x3e, 0x39, 0xd8, 0x02, 0xcd, + 0xea, 0x66, 0x86, 0x0a, 0xc1, 0xab, 0x38, 0x1a, 0x68, 0x31, + 0xbb, 0x4a, 0xe0, 0x7d, 0x31, 0xad, 0x91, 0x2a, 0x4e, 0xf5, + 0x0b, 0x87, 0x19, 0xbe, 0xbd, 0x24, 0x77, 0x50, 0x84, 0x10, + 0x15, 0x79, 0x3e, 0x49, 0x36, 0x41, 0x07, 0x30, 0x6f, 0xe9, + 0x22, 0xd0, 0x3c, 0x6d, 0xca, 0x76, 0xb5, 0x85, 0x23, 0x1f, + 0x18, 0x24, 0xbd, 0x9a, 0x71, 0xc5, 0x92, 0x5b, 0x7b, 0x26, + 0x07, 0x61, 0x5b, 0x86, 0x5e, 0x25, 0x8f, 0xf4, 0x9f, 0xa3, + 0xcb, 0x69, 0x67, 0xa8, 0x28, 0xf7, 0x8c, 0xe5, 0x67, 0x47, + 0x83, 0xab, 0x10, 0x38, 0xd6, 0xec, 0x5e, 0x86, 0x5d, 0xd3, + 0xab, 0x43, 0x66, 0xc1, 0xd9, 0x3a, 0x11, 0xba, 0x90, 0x3b, + 0xa9, 0x80, 0xeb, 0x3c, 0xf0, 0x84, 0xd2, 0xcd, 0x01, 0x56, + 0x9f, 0x77, 0x5f, 0x8d, 0x74, 0xa6, 0xb3, 0xfa, 0xaf, 0xd4, + 0xd6, 0x38, 0x31, 0x4f, 0x79, 0x7c, 0x14, 0xfe, 0x4b, 0x7a, + 0x75, 0x44, 0x86, 0x84, 0x73, 0xe4, 0x16, 0x29, 0xde, 0xbb, + 0x82, 0x27, 0xd1, 0x88, 0x3f, 0xe1, 0xcd, 0x13, 0x2b, 0x69, + 0x0b, 0x54, 0x93, 0x40, 0xc4, 0xff, 0x27, 0x33, 0x50, 0x7e, + 0xef, 0x2b, 0x17, 0xd3, 0x5d, 0x55, 0x0f, 0x16, 0x58, 0xa4, + 0x5f, 0xa7, 0x08, 0xf5, 0x72, 0x3e, 0xbd, 0xe2, 0x26, 0x79, + 0xd1, 0xdc, 0x31, 0x6f, 0x7f, 0x03, 0xcc, 0x1a, 0x64, 0x6d, + 0x24, 0xd4, 0xaf, 0x63, 0x78, 0xb4, 0x0c, 0xb7, 0x76, 0x57, + 0x9f, 0xf4, 0xcf, 0xe6, 0x34, 0xe0, 0xd6, 0x9b, 0xb7, 0x78, + 0xc7, 0x08, 0x2a, 0xe3, 0x5f, 0x77, 0x1f, 0xea, 0x76, 0x04, + 0xb4, 0x6b, 0xfa, 0xfd, 0x36, 0x40, 0xe2, 0x94, 0xa4, 0xbd, + 0xc9, 0x48, 0xe3, 0xda, 0x2c, 0x64, 0x4c, 0xca, 0x5d, 0x12, + 0xa3, 0x8f, 0xc6, 0xea, 0x1f, 0x9d, 0x83, 0x47, 0xdf, 0xfb, + 0xb8, 0xb6, 0xb0, 0xf0, 0xc3, 0xe2, 0x89, 0x31, 0xf1, 0x49, + 0x2d, 0xd3, 0x30, 0x9e, 0x3d, 0x3a, 0xd8, 0x80, 0x22, 0xfe, + 0xf6, 0x16, 0x0f, 0xd7, 0x70, 0xa8, 0x67, 0xc1, 0x59, 0x14, + 0x50, 0x7c, 0x2e, 0xcc, 0x2c, 0x3c, 0x40, 0xd9, 0xb3, 0x9d, + 0xad, 0x83, 0x9a, 0x44, 0x0c, 0xc6, 0x9e, 0xef, 0x36, 0x20, + 0xe9, 0xde, 0xdc, 0xe4, 0x73, 0x45, 0x1c, 0x2a, 0x69, 0xa1, + 0x87, 0x05, 0x14, 0x1f, 0xdb, 0x7c, 0x72, 0x73, 0x04, 0x59, + 0x17, 0xcc, 0xcf, 0x14, 0x41, 0x95, 0x70, 0x34, 0xd0, 0x62, + 0x69, 0x87, 0xe1, 0x2b, 0xae, 0xda, 0xce, 0xa7, 0x3a, 0x53, + 0xb8, 0x7d, 0xb6, 0x6a, 0x6b, 0x1c, 0xb3, 0xaf, 0xa3, 0x23, + 0x45, 0x07, 0xd1, 0x62, 0x21, 0x92, 0x5a, 0x65, 0x60, 0xff, + 0x7a, 0x74, 0x14, 0x9a, 0x46, 0x93, 0xd2, 0xc2, 0xa0, 0xb4, + 0x08, 0x1c, 0x6b, 0x76, 0x2f, 0x43, 0xcf, 0x88, 0x95, 0x86, + 0xcc, 0x41, 0x71, 0x74, 0x22, 0xb7, 0xe3, 0x76, 0x91, 0xc3, + 0x15, 0x78, 0x23, 0xcb, 0xbe, 0x8d, 0x10, 0x29, 0xe4, 0x7c, + 0xb9, 0x07, 0x4c, 0xf2, 0x61, 0x7b, 0x62, 0xde, 0xfe, 0x06, + 0x62, 0x9e, 0xf2, 0xf8, 0x28, 0x3f, 0x96, 0xf4, 0xea, 0x88, + 0xcf, 0xcb, 0xe6, 0x0b, 0x2c, 0x52, 0xa1, 0x0e, 0x45, 0x69, + 0xb0, 0x5b, 0x41, 0xe0, 0x94, 0x35, 0x7d, 0xbb, 0x1d, 0xfc, + 0x76, 0xc0, 0x3b, 0x02, 0x5a, 0xd4, 0x7d, 0x9f, 0x1b, 0x20, + 0x71, 0x4a, 0x52, 0xbf, 0x85, 0x24, 0x90, 0x6d, 0x16, 0x32, + 0x26, 0x65, 0xcf, 0x09, 0xb0, 0xa6, 0x63, 0x75, 0xee, 0xaf, + 0xa0, 0xc2, 0x8e, 0x9c, 0x66, 0x0d, 0x32, 0xd7, 0x12, 0x6a, + 0xb6, 0xd0, 0x3c, 0x5a, 0x06, 0xba, 0x3b, 0xca, 0xae, 0x7a, + 0xe9, 0xcf, 0x5b, 0x82, 0xe2, 0xe8, 0x44, 0xad, 0x05, 0xec, + 0xe1, 0x45, 0x2a, 0xf0, 0x46, 0x55, 0x5c, 0x5b, 0x58, 0x78, + 0x80, 0x71, 0xa5, 0xf9, 0x99, 0xc5, 0xf7, 0x88, 0x18, 0x4f, + 0xff, 0x1d, 0x6c, 0x40, 0x11, 0x7f, 0x7b, 0x0b, 0xe6, 0x8a, + 0x38, 0x54, 0xd2, 0x81, 0xcd, 0x0a, 0x28, 0x3e, 0x6d, 0x14, + 0x21, 0x04, 0x94, 0x8f, 0xee, 0x83, 0xec, 0x81, 0x71, 0x0c, + 0x6b, 0xab, 0xe9, 0x34, 0xad, 0x78, 0xc6, 0x18, 0xfe, 0xa4, + 0x21, 0x8c, 0x2d, 0x80, 0xe5, 0x28, 0xb9, 0x7c, 0x33, 0xb8, + 0x37, 0x74, 0xd9, 0xa5, 0x33, 0x60, 0x7b, 0x4c, 0xc8, 0xff, + 0xca, 0x2c, 0x21, 0xa4, 0xd5, 0x15, 0x61, 0x62, 0xa2, 0x75, + 0xda, 0x70, 0x8e, 0xef, 0x55, 0x34, 0xe9, 0x9f, 0xcf, 0x2b, + 0xac, 0x4c, 0x4b, 0x3d, 0x4e, 0x66, 0xa0, 0xfc, 0x1d, 0x56, + 0x2e, 0x65, 0xba, 0xaa, 0x1e, 0x2c, 0xb0, 0x8b, 0xb9, 0xe2, + 0x80, 0x8b, 0x2c, 0x66, 0x81, 0x38, 0x25, 0x9c, 0x8e, 0x5e, + 0x96, 0x3f, 0xfc, 0x30, 0xe3, 0x82, 0x78, 0x2a, 0x8b, 0x89, + 0x14, 0xf7, 0x01, 0xe2, 0x35, 0x7e, 0xdc, 0x30, 0xc0, 0x11, + 0xba, 0x1e, 0xd0, 0x06, 0xde, 0x29, 0x99, 0x23, 0x9a, 0x20, + 0xa8, 0x0a, 0xbf, 0x1f, 0x7c, 0x2e, 0xf1, 0x23, 0x9e, 0x60, + 0x7e, 0xd5, 0x84, 0x75, 0xb4, 0x45, 0x12, 0xa0, 0xa1, 0x33, + 0xcc, 0xa5, 0xa0, 0x5a, 0x75, 0x12, 0x5f, 0xdf, 0x49, 0xe9, + 0x40, 0xe0, 0xde, 0x36, 0xbb, 0x5d, 0xb7, 0xca, 0x85, 0x8f, + 0x4a, 0xfd, 0x99, 0xe3, 0xa2, 0x27, 0x3d, 0xb8, 0x33, 0xc4, + 0xe7, 0xfa, 0x6e, 0x6b, 0x83, 0xb4, 0xea, 0x24, 0xbe, 0x7d, + 0x92, 0x11, 0x80, 0x03, 0x7f, 0x6c, 0xb5, 0xba, 0xad, 0x57, + 0xda, 0x28, 0x42, 0x08, 0xeb, 0xdd, 0x1f, 0xc5, 0x1b, 0xc1, + 0xe2, 0x18, 0xd6, 0x95, 0x11, 0x68, 0x47, 0x4b, 0xcd, 0x17, + 0xee, 0x03, 0x7d, 0x3a, 0x97, 0xd0, 0x22, 0x39, 0xba, 0xac, + 0xf5, 0xf3, 0xc5, 0xab, 0x17, 0x48, 0xbf, 0xfa, 0xe7, 0x22, + 0xc3, 0x06, 0xfe, 0xd8, 0xa9, 0xb7, 0x99, 0xae, 0xb0, 0x53, + 0xf3, 0xae, 0xb7, 0x48, 0xc9, 0x79, 0x9e, 0x2e, 0x7c, 0x31, + 0x49, 0xdf, 0xfa, 0x6a, 0x33, 0xe7, 0x19, 0x8a, 0x09, 0x35, + 0x5b, 0x68, 0x1e, 0x2d, 0x03, 0x5d, 0xfc, 0x65, 0x57, 0x3d, + 0xfa, 0x3a, 0x8d, 0xb3, 0xf8, 0x30, 0xdc, 0x26, 0x64, 0x9e, + 0x65, 0x16, 0xf1, 0x52, 0x8b, 0xeb, 0x96, 0x7a, 0x9c, 0xcc, + 0x83, 0x3b, 0x3a, 0xac, 0x5c, 0xca, 0xb7, 0x97, 0x3c, 0x58, + 0xa3, 0xd5, 0x6f, 0xbc, 0x41, 0xf2, 0x89, 0x44, 0xfe, 0x91, + 0x87, 0xe8, 0xf4, 0xd5, 0xe4, 0x2a, 0xa8, 0x20, 0x6e, 0xe8, + 0x71, 0x89, 0x66, 0xc0, 0xf6, 0x98, 0x53, 0x3d, 0x57, 0x58, + 0x42, 0x8b, 0x69, 0x2a, 0xc2, 0xc4, 0x87, 0xea, 0x77, 0xe0, + 0xdf, 0x1d, 0xaa, 0x68, 0x11, 0xfd, 0x5d, 0x56, 0x9b, 0x98, + 0xf6, 0x4c, 0x0e, 0xc2, 0xb6, 0xcf, 0xbc, 0x4a, 0xdd, 0x2b, + 0xfd, 0x85, 0x55, 0xd2, 0xce, 0x93, 0x50, 0x2d, 0xdb, 0x09, + 0xce, 0x8e, 0xc5, 0x95, 0x20, 0x70, 0x6f, 0x1b, 0xbc, 0xcf, + 0xba, 0x65, 0xff, 0xfd, 0x7d, 0xe7, 0x2d, 0xe1, 0xf4, 0x0b, + 0x66, 0x99, 0x0f, 0xea, 0x8a, 0x32, 0xc8, 0xc9, 0x5d, 0x0f, + 0x68, 0x03, 0x6f, 0xf5, 0xad, 0xf0, 0x4d, 0x10, 0x54, 0x05, + 0xbe, 0xee, 0x3e, 0x17, 0xa9, 0xeb, 0x06, 0x37, 0xc4, 0xf1, + 0x01, 0xa8, 0xfb, 0x52, 0x2c, 0x59, 0x64, 0xbd, 0xb1, 0x90, + 0x8e, 0x96, 0x59, 0x2e, 0x1f, 0x06, 0xfa, 0x74, 0xed, 0x63, + 0x44, 0x72, 0xb7, 0x9b, 0x29, 0x25, 0x17, 0x66, 0x16, 0x1e, + 0x20, 0x8d, 0xb8, 0xaf, 0xb7, 0xa0, 0x4d, 0x22, 0x06, 0x63, + 0x4f, 0x96, 0x1b, 0x10, 0x95, 0x6f, 0x6e, 0x72, 0xd8, 0xc3, + 0x0e, 0x15, 0xd5, 0xb1, 0xa2, 0xe3, 0x0a, 0xee, 0x97, 0x2e, + 0xac, 0xb7, 0x6c, 0xbf, 0x32, 0xa5, 0x88, 0x1f, 0x14, 0x1a, + 0x9a, 0xf9, 0x62, 0xdf, 0x7d, 0x1d, 0xa7, 0xb8, 0x7c, 0x18, + 0x6e, 0x13, 0x32, 0x4f, 0xd3, 0x0b, 0x99, 0x29, 0xa4, 0x94, + 0xec, 0x08, 0xab, 0xd6, 0x37, 0x39, 0x6c, 0x80, 0x07, 0xeb, + 0x8b, 0xb9, 0x51, 0x90, 0x05, 0x77, 0x58, 0xc8, 0x98, 0x57, + 0xba, 0x24, 0x85, 0xdd, 0x4f, 0x17, 0x3e, 0xf9, 0xc5, 0x8e, + 0x7d, 0x35, 0xf7, 0x18, 0x3e, 0xb9, 0x59, 0x4b, 0xb4, 0x43, + 0x09, 0xfe, 0x5e, 0x08, 0xf3, 0x73, 0x0f, 0x99, 0x1f, 0x83, + 0x55, 0x40, 0x54, 0x27, 0xf8, 0xe7, 0xd8, 0xc7, 0x1c, 0xc0, + 0x7f, 0x22, 0x88, 0xc6, 0xfb, 0x6e, 0xbd, 0xc8, 0x17, 0xb4, + 0xd4, 0x2f, 0xb0, 0x4b, 0xc6, 0x9b, 0x57, 0xf3, 0x4a, 0xe1, + 0x7c, 0x49, 0x97, 0xc3, 0x93, 0x9c, 0x66, 0x1a, 0xe6, 0x9a, + 0x70, 0x86, 0x3f, 0x88, 0x65, 0x9e, 0x09, 0xb1, 0x73, 0x25, + 0x9b, 0x2e, 0x48, 0x41, 0xbb, 0xb2, 0xf2, 0x6f, 0xdf, 0xe0, + 0x06, 0x5a, 0x0d, 0x22, 0xb3, 0x0a, 0xa1, 0x7b, 0x68, 0x65, + 0x6d, 0x60, 0x3b, 0x1e, 0x02, 0x21, 0x84, 0x72, 0x7a, 0x72, + 0x37, 0x1a, 0xb4, 0x02, 0x56, 0x2c, 0x5b, 0x21, 0x3c, 0x2e, + 0x6d, 0xc8, 0xa6, 0xa2, 0x67, 0x59, 0x02, 0xac, 0xfd, 0xee, + 0xbe, 0xd9, 0xe8, 0x8f, 0xa5, 0x37, 0x9d, 0x6b, 0x6f, 0x70, + 0x45, 0xe3, 0xad, 0xe1, 0xf3, 0xc8, 0x6d, 0x28, 0xfc, 0xb9, + 0xa7, 0xe0, 0x35, 0x2d, 0xb4, 0xe7, 0x87, 0x27, 0x2a, 0x0b, + 0x84, 0x28, 0xb2, 0x35, 0x56, 0xd1, 0xb6, 0x1d, 0x68, 0x7b, + 0x2f, 0x7f, 0xdc, 0x13, 0xe2, 0xd1, 0xcc, 0x43, 0x2f, 0xf3, + 0xa6, 0x7a, 0xae, 0xb0, 0x84, 0xd5, 0xd2, 0x54, 0xe8, 0x9b, + 0x6b, 0xf9, 0x0d, 0x6c, 0x4c, 0xa4, 0xd1, 0x39, 0x42, 0xc8, + 0x8c, 0x51, 0x87, 0x5f, 0x4f, 0xae, 0x8e, 0x49, 0x9a, 0xa9, + 0x3d, 0x72, 0xf8, 0xb7, 0x73, 0xdb, 0xc3, 0xed, 0x32, 0xa3, + 0x1d, 0x2b, 0x35, 0xb6, 0x49, 0xec, 0xe8, 0xf5, 0xb3, 0xae, + 0x99, 0x19, 0xf0, 0xa3, 0xc9, 0xd2, 0x4e, 0xfa, 0xbe, 0x32, + 0x75, 0x2d, 0x35, 0x7b, 0x2c, 0x62, 0xd0, 0x56, 0x65, 0x4c, + 0xf3, 0xa9, 0x04, 0x93, 0xc0, 0x2f, 0x3a, 0x55, 0x20, 0x24, + 0xd6, 0xd2, 0xc9, 0x71, 0xdd, 0xc1, 0x82, 0x28, 0xeb, 0x67, + 0x3b, 0x74, 0xff, 0x23, 0x54, 0xbf, 0x6e, 0x85, 0x64, 0x9c, + 0xa5, 0x71, 0x07, 0x41, 0xf8, 0x92, 0xed, 0x45, 0xe5, 0xfb, + 0xcc, 0x34, 0x0f, 0xf7, 0xe0, 0xcf, 0x7e, 0xd3, 0xca, 0xff, + 0xf3, 0x8b, 0xfe, 0x96, 0x63, 0x1e, 0x94, 0x67, 0xdf, 0x2c, + 0x97, 0x79, 0x2e, 0xb2, 0x8d, 0xb1, 0x3e, 0xc5, 0xaa, 0x80, + 0xa8, 0x4e, 0x33, 0x0d, 0x73, 0x4d, 0x38, 0x43, 0xfe, 0x44, + 0xd3, 0x4f, 0x3d, 0x39, 0xfa, 0x0d, 0x5a, 0x01, 0x2b, 0x16, + 0xcc, 0xf1, 0x1e, 0x17, 0xd7, 0x64, 0x53, 0x51, 0xbd, 0x71, + 0x40, 0xa4, 0x16, 0x33, 0xa1, 0x1c, 0xf3, 0x4e, 0x47, 0x2f, + 0x4b, 0xfe, 0x7e, 0x18, 0x8a, 0x05, 0x99, 0x01, 0x25, 0x53, + 0xda, 0x50, 0x3b, 0xb1, 0x8d, 0x03, 0x6a, 0x5a, 0xab, 0x0d, + 0x88, 0xad, 0xf9, 0xf7, 0x38, 0x98, 0xca, 0x42, 0x50, 0xd8, + 0x08, 0xda, 0xe5, 0xdb, 0xea, 0x19, 0xdd, 0x47, 0xd2, 0xaa, + 0x23, 0xc7, 0x27, 0xfa, 0x72, 0xaf, 0x0d, 0x3d, 0x22, 0x74, + 0x13, 0x5e, 0xcd, 0x4e, 0x54, 0x16, 0xcb, 0x50, 0xa7, 0x6a, + 0xac, 0x61, 0xaf, 0x3a, 0xd0, 0xf6, 0x5e, 0xfe, 0x0b, 0x19, + 0x13, 0xd3, 0x86, 0xe5, 0x58, 0x53, 0xd0, 0xdb, 0x77, 0xb6, + 0x50, 0x61, 0x47, 0x4e, 0x13, 0xf5, 0xd6, 0x31, 0x1a, 0xd8, + 0x98, 0x8b, 0x61, 0x72, 0x84, 0x53, 0xdb, 0xa2, 0xcd, 0xbe, + 0x98, 0xa4, 0x7f, 0x4b, 0xd0, 0x0f, 0x4a, 0xd2, 0x8e, 0x16, + 0xaa, 0xdd, 0x17, 0x59, 0xa7, 0xb9, 0x02, 0xa8, 0x60, 0xf6, + 0x1d, 0xcb, 0x10, 0x12, 0x6b, 0x69, 0x85, 0xd9, 0x8f, 0x81, + 0x41, 0x14, 0x93, 0xbd, 0x6c, 0x98, 0x56, 0xea, 0x12, 0x81, + 0x5e, 0xcd, 0xdd, 0x6b, 0x47, 0x38, 0xe0, 0xf7, 0x80, 0x48, + 0xba, 0xa9, 0x4c, 0x32, 0x8a, 0x0a, 0x3f, 0xbf, 0x59, 0x38, + 0x9c, 0x9a, 0x2d, 0x49, 0x90, 0x41, 0x3c, 0x15, 0xa4, 0xa5, + 0x0a, 0x9a, 0xe1, 0x71, 0xfb, 0x3f, 0x6e, 0x18, 0x60, 0xe9, + 0xd0, 0x65, 0x61, 0xa0, 0x82, 0xbc, 0x4f, 0x9f, 0x1f, 0xcf, + 0x36, 0x23, 0x20, 0x55, 0x97, 0x2c, 0x24, 0x81, 0x0f, 0x94, + 0x29, 0xb8, 0xe3, 0xc7, 0xa9, 0x8d, 0x4e, 0x7f, 0xfa, 0x06, + 0x18, 0xab, 0x34, 0x88, 0x89, 0x28, 0xc1, 0x2f, 0x63, 0x57, + 0x77, 0x43, 0xec, 0x78, 0x08, 0x84, 0x55, 0x0b, 0xcb, 0x75, + 0xf4, 0xcf, 0xec, 0xce, 0x97, 0x5c, 0x11, 0xda, 0xe3, 0x92, + 0x82, 0xb6, 0x9d, 0xc2, 0xed, 0x5c, 0x9b, 0xad, 0xd8, 0xbd, + 0x64, 0x89, 0xd3, 0x3e, 0x28, 0x34, 0xf7, 0x31, 0xc4, 0x7d, + 0xf4, 0xe4, 0x6e, 0x34, 0xab, 0x04, 0xac, 0x58, 0xb6, 0x42, + 0x78, 0x5c, 0xda, 0x53, 0x8f, 0x87, 0xce, 0xb2, 0x04, 0x9b, + 0x39, 0x1f, 0xbf, 0x71, 0x13, 0xdd, 0x89, 0x6e, 0xf9, 0xd6, + 0xde, 0xe0, 0x99, 0xf0, 0x4f, 0x30, 0x3f, 0x8b, 0x42, 0xdb, + 0x5a, 0xc3, 0x09, 0x50, 0xb1, 0xf8, 0x66, 0xb3, 0x10, 0x09, + 0x86, 0xbc, 0xe8, 0x97, 0x80, 0x90, 0xde, 0xce, 0xa2, 0x07, + 0xf2, 0x82, 0x4d, 0xa0, 0x44, 0xb7, 0x9d, 0x9a, 0x1c, 0x4c, + 0x65, 0x21, 0x28, 0x6c, 0x04, 0x6d, 0x93, 0x8c, 0x75, 0xed, + 0x40, 0x24, 0x5d, 0xb5, 0x26, 0x19, 0x45, 0x05, 0xfe, 0xbe, + 0xcd, 0x1c, 0x4e, 0x4d, 0xf7, 0xc5, 0x92, 0xe9, 0x5c, 0xe3, + 0xb9, 0x6e, 0x1a, 0x88, 0x8a, 0x18, 0x7e, 0xe6, 0xe1, 0x99, + 0x21, 0xfd, 0x3a, 0x56, 0x6a, 0xaf, 0x92, 0x1b, 0x13, 0x29, + 0xa5, 0x9f, 0xf1, 0x32, 0x23, 0x85, 0x51, 0x67, 0x01, 0x54, + 0x30, 0x7b, 0xef, 0x84, 0x08, 0x09, 0xd4, 0xd5, 0xa3, 0x8d, + 0xa6, 0xa1, 0xc1, 0x0a, 0x26, 0x29, 0x6f, 0x62, 0x34, 0x73, + 0xf3, 0xd5, 0xc2, 0xe4, 0xcb, 0xa6, 0x75, 0x87, 0x59, 0xbf, + 0x12, 0xa1, 0xe6, 0x4a, 0xf5, 0x5c, 0x90, 0x82, 0xb5, 0xa7, + 0x27, 0xde, 0x7d, 0x03, 0x0c, 0xb4, 0x1a, 0x44, 0xa5, 0x14, + 0x81, 0xf6, 0xd0, 0xca, 0xda, 0xc0, 0x76, 0x3c, 0x04, 0x42, + 0xcb, 0xe4, 0x48, 0xc1, 0x1e, 0xeb, 0x52, 0xb3, 0x05, 0x4d, + 0x91, 0xd9, 0x9c, 0xfe, 0x37, 0x0c, 0x30, 0x95, 0x68, 0xd3, + 0xd1, 0x50, 0x41, 0x5e, 0xc6, 0xae, 0xee, 0x86, 0x1b, 0xf0, + 0x10, 0xcb, 0xaa, 0x16, 0xf5, 0xb0, 0x5e, 0x4f, 0x44, 0x80, + 0xa4, 0x51, 0x62, 0x97, 0xdb, 0xd1, 0x7c, 0xf2, 0x4e, 0x8d, + 0x81, 0x1c, 0x8a, 0xd2, 0xa3, 0xb6, 0x82, 0x03, 0xeb, 0x6a, + 0xfa, 0xb5, 0x3a, 0x3b, 0xec, 0x43, 0x8b, 0x51, 0xa9, 0x7a, + 0xca, 0xd7, 0xd2, 0x59, 0xef, 0x64, 0x2e, 0x8e, 0xcc, 0xfb, + 0x6a, 0x07, 0xc7, 0x03, 0x77, 0xbe, 0xa2, 0x31, 0xf7, 0x30, + 0xa8, 0x6f, 0x7b, 0x01, 0x26, 0x36, 0xd8, 0xba, 0xd6, 0x5e, + 0xc1, 0x79, 0xa5, 0x22, 0x7f, 0xa9, 0xa2, 0x74, 0x7a, 0x8b, + 0x72, 0x15, 0x54, 0x10, 0x20, 0x12, 0xcf, 0xbb, 0x13, 0xed, + 0xc3, 0xe3, 0x7f, 0x5f, 0x87, 0x0e, 0x27, 0xc7, 0x9a, 0x83, + 0x0a, 0x4d, 0x23, 0xa8, 0x69, 0x61, 0x50, 0x5a, 0x04, 0x0e, + 0xd4, 0x3b, 0xf6, 0xc0, 0x86, 0x44, 0x08, 0xe5, 0x43, 0x5e, + 0x74, 0xaa, 0x40, 0x48, 0x6f, 0x67, 0x51, 0xe2, 0x79, 0x41, + 0xc7, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x52, + 0xde, 0xc4, 0x68, 0xe6, 0x25, 0x69, 0x47, 0x0b, 0x55, 0x8f, + 0xea, 0xcd, 0xb2, 0xbd, 0xd7, 0x0a, 0xf1, 0x02, 0x4a, 0xa6, + 0x77, 0xa0, 0x76, 0xa1, 0xd9, 0x06, 0xd4, 0xb4, 0x95, 0x1a, + 0x74, 0xac, 0xd4, 0x9d, 0xe7, 0x36, 0x26, 0x52, 0x89, 0xfd, + 0x21, 0x64, 0x46, 0xc9, 0xa2, 0xce, + }, + { + /* 8 */ + 0x99, 0xaa, 0x16, 0x04, 0xc2, 0x95, 0x8c, 0x4a, 0x63, 0xeb, + 0xf0, 0x49, 0x21, 0x0a, 0xad, 0xf8, 0x93, 0xe3, 0xda, 0xa3, + 0x95, 0xb5, 0xa1, 0x97, 0x1b, 0x19, 0xbd, 0x7f, 0x09, 0x35, + 0xa8, 0x38, 0x88, 0xfd, 0x2b, 0x3b, 0xa6, 0xc5, 0x21, 0xbc, + 0xaf, 0xb5, 0xad, 0x3e, 0x65, 0x8a, 0x44, 0xdb, 0xae, 0x16, + 0x29, 0x6c, 0x27, 0x1a, 0xaa, 0xe1, 0xc4, 0x02, 0x84, 0xcc, + 0xfd, 0xee, 0x57, 0x5c, 0x8b, 0xbe, 0x09, 0x55, 0xe0, 0x74, + 0xcd, 0x78, 0xbb, 0x23, 0x51, 0x37, 0x69, 0x61, 0xa4, 0xfb, + 0xbd, 0x82, 0x28, 0xa6, 0x86, 0x94, 0x0e, 0x2e, 0x10, 0xb8, + 0x71, 0xb5, 0xb1, 0xdc, 0xbf, 0xfe, 0x69, 0xbd, 0x24, 0x97, + 0x06, 0x13, 0xb2, 0x23, 0xa9, 0x8c, 0x87, 0xdc, 0x67, 0x47, + 0xd5, 0x6a, 0xb1, 0x4d, 0xa0, 0xdd, 0x5d, 0x15, 0x38, 0xb8, + 0x40, 0xa5, 0x07, 0x91, 0x81, 0xf6, 0xb9, 0x7e, 0x6e, 0xbb, + 0x7e, 0xd0, 0x09, 0xdd, 0x4c, 0x95, 0x8d, 0x11, 0xe8, 0xc9, + 0x7b, 0x0b, 0x37, 0x8b, 0x38, 0x30, 0x95, 0x7d, 0x78, 0xbf, + 0xfc, 0xf9, 0xe3, 0x62, 0xfe, 0xa8, 0xe0, 0x25, 0x1c, 0x04, + 0x3e, 0xb6, 0xd1, 0xa1, 0xf4, 0x1e, 0xe7, 0xb2, 0xcb, 0x8d, + 0xc5, 0xba, 0xf8, 0x30, 0x1f, 0x44, 0x92, 0x63, 0xc4, 0x38, + 0x16, 0xda, 0x44, 0x6a, 0x17, 0x6b, 0xe9, 0x78, 0x0d, 0x6c, + 0x49, 0x99, 0x95, 0x65, 0x9e, 0x7f, 0x19, 0x14, 0xba, 0xdc, + 0x33, 0xf6, 0x86, 0x6d, 0x11, 0x20, 0xab, 0x78, 0x59, 0x07, + 0x41, 0xb8, 0xec, 0x52, 0x6a, 0x3e, 0x2a, 0xf8, 0x9c, 0x4c, + 0xa7, 0xef, 0xcd, 0x2f, 0x31, 0x3a, 0x7b, 0xb4, 0x69, 0x2e, + 0x3d, 0xe0, 0x8f, 0x06, 0x4f, 0x97, 0xc4, 0xf1, 0xf9, 0xe4, + 0x4e, 0xd6, 0x38, 0x5b, 0x04, 0xa3, 0xdc, 0x83, 0xce, 0x49, + 0xfa, 0x29, 0xfb, 0x7a, 0x27, 0x4c, 0xd3, 0x39, 0x56, 0x76, + 0x8f, 0x49, 0x42, 0xbb, 0x9d, 0xa9, 0x99, 0x7c, 0xca, 0xd7, + 0x88, 0x75, 0xce, 0xa1, 0xe3, 0x32, 0x30, 0x98, 0xd9, 0xdb, + 0x01, 0xea, 0xb2, 0x2f, 0xbe, 0x7d, 0x67, 0xd6, 0xa0, 0x1a, + 0x9d, 0xe2, 0x39, 0x45, 0x95, 0x4e, 0x8c, 0xfb, 0x5a, 0xe6, + 0xc5, 0x76, 0x50, 0x5d, 0xe5, 0x05, 0x77, 0x85, 0xe9, 0xa9, + 0x81, 0xed, 0x36, 0x32, 0xb9, 0xfe, 0x12, 0x6a, 0x93, 0x70, + 0xd5, 0xbf, 0x12, 0xaa, 0x03, 0xe8, 0x59, 0xf0, 0xb5, 0x46, + 0xa2, 0x6e, 0xd2, 0xc2, 0x8b, 0x35, 0xb9, 0xc7, 0x50, 0x8f, + 0xcf, 0xeb, 0x1c, 0x5c, 0x20, 0xb3, 0xe2, 0xa9, 0xa1, 0x7b, + 0xbd, 0x3f, 0xa4, 0x5f, 0xe5, 0xcb, 0x70, 0x3a, 0x87, 0x3c, + 0xbc, 0xf0, 0xc9, 0xfa, 0xd5, 0xd1, 0x52, 0x9c, 0xbf, 0x41, + 0x14, 0x53, 0x43, 0x4a, 0x07, 0x17, 0x08, 0x5c, 0xd9, 0xbb, + 0xb9, 0x6e, 0xbe, 0x7f, 0x2d, 0x22, 0xd0, 0x6b, 0x55, 0x90, + 0x43, 0x7d, 0x1f, 0x37, 0x30, 0xc3, 0xb4, 0x02, 0xf7, 0xe6, + 0xe7, 0xc6, 0x4b, 0x70, 0x2c, 0x77, 0x88, 0xd4, 0x2e, 0xd6, + 0x11, 0xf0, 0x1a, 0xd8, 0x92, 0xf1, 0xdc, 0xb5, 0xfc, 0x63, + 0x12, 0x79, 0x98, 0xe9, 0xd9, 0x22, 0x13, 0x51, 0xf6, 0x16, + 0x6e, 0xd5, 0x21, 0xed, 0x58, 0x10, 0x8e, 0x11, 0x75, 0xeb, + 0x4f, 0x2a, 0x46, 0xe7, 0x84, 0x28, 0xf1, 0x66, 0xf9, 0x1d, + 0xdc, 0x5a, 0xd5, 0x17, 0xff, 0x70, 0xa6, 0x03, 0xc6, 0xaa, + 0x62, 0x99, 0x9d, 0x72, 0xee, 0xcc, 0xa5, 0xb9, 0x3d, 0xe6, + 0x49, 0xcd, 0x42, 0xb2, 0xa0, 0xcf, 0x3e, 0x0c, 0x77, 0x11, + 0x62, 0x74, 0xf6, 0xab, 0xd2, 0x5c, 0x7a, 0x03, 0xdd, 0x0c, + 0x9e, 0xed, 0x4b, 0x21, 0x31, 0x0b, 0xcd, 0xe2, 0xc1, 0x5c, + 0x76, 0x29, 0x35, 0x1f, 0x15, 0x7c, 0x4e, 0x26, 0xb2, 0x96, + 0x87, 0xf6, 0x67, 0xb1, 0x90, 0x19, 0x18, 0x4c, 0x8d, 0x8c, + 0xe1, 0x75, 0x59, 0xf6, 0x5f, 0xdf, 0xd2, 0x6b, 0x72, 0xa3, + 0xd5, 0x0f, 0x35, 0x63, 0x32, 0x08, 0x1d, 0x20, 0x97, 0x9d, + 0x0b, 0xf8, 0x39, 0x89, 0x9b, 0x69, 0x2a, 0xf1, 0x07, 0x4b, + 0x85, 0x73, 0x7b, 0x0f, 0x58, 0x47, 0x29, 0xb8, 0xac, 0x79, + 0xbe, 0xc1, 0x0a, 0xc8, 0xc0, 0x25, 0xe2, 0xea, 0x04, 0x2e, + 0x8d, 0xbc, 0xbd, 0x37, 0x5f, 0xde, 0xeb, 0x09, 0xc3, 0x0b, + 0xf7, 0xf6, 0xbe, 0x42, 0x7e, 0xcb, 0x67, 0xd4, 0x2a, 0xf2, + 0x94, 0x71, 0x86, 0xf1, 0x9f, 0xb5, 0xb8, 0x9a, 0x1e, 0x13, + 0xe7, 0x4c, 0x73, 0x14, 0x5d, 0x12, 0x43, 0xda, 0x83, 0x34, + 0xf9, 0x07, 0x72, 0x8a, 0xe9, 0x9c, 0xdb, 0x35, 0xb4, 0x0f, + 0x49, 0xec, 0xa0, 0xba, 0x09, 0x0a, 0xee, 0xc9, 0x11, 0x91, + 0xc1, 0x19, 0x6c, 0x64, 0xb1, 0x3f, 0x24, 0xd4, 0xe5, 0xe0, + 0x54, 0x48, 0xd7, 0x58, 0xb4, 0xbc, 0xb9, 0x55, 0x76, 0x97, + 0xbe, 0x6f, 0x93, 0x9c, 0x2a, 0x0e, 0x77, 0x66, 0xb3, 0xbd, + 0xff, 0x73, 0xc5, 0x87, 0x21, 0x59, 0x50, 0x86, 0x1f, 0x06, + 0xda, 0xe9, 0x40, 0xda, 0x8c, 0xd5, 0x1a, 0xfc, 0xe3, 0x2c, + 0x86, 0xb0, 0x24, 0x03, 0xc3, 0xe2, 0x20, 0x4d, 0xf6, 0x91, + 0x76, 0x4f, 0x48, 0x27, 0x25, 0x22, 0xe2, 0x88, 0x4c, 0x87, + 0x5e, 0x58, 0x7b, 0xd2, 0x5a, 0x44, 0x63, 0xd6, 0xaa, 0xe3, + 0x86, 0xfa, 0x3e, 0x6e, 0x60, 0x45, 0xab, 0x04, 0x2d, 0x0f, + 0x0d, 0x4f, 0x96, 0xe0, 0x58, 0xee, 0xd3, 0x6b, 0x5c, 0x6f, + 0x22, 0x23, 0x34, 0x73, 0xe7, 0x21, 0xfa, 0x5e, 0xfe, 0x34, + 0x93, 0xa6, 0x13, 0xb4, 0xb2, 0x95, 0x3a, 0xa3, 0x6e, 0x72, + 0x7d, 0x52, 0xc7, 0xab, 0x0d, 0xfb, 0x21, 0x09, 0x18, 0xc2, + 0x6d, 0x8e, 0x03, 0x10, 0x9a, 0xa9, 0x82, 0x36, 0x65, 0x72, + 0xac, 0xec, 0xdd, 0x92, 0x84, 0xb5, 0xf9, 0x91, 0xf1, 0xf8, + 0x57, 0x6d, 0xd3, 0xea, 0x5f, 0x81, 0x05, 0x64, 0x60, 0xf3, + 0x71, 0x75, 0x02, 0x17, 0xa7, 0x5e, 0xbf, 0xfa, 0xce, 0x6f, + 0xd2, 0xb9, 0x48, 0xed, 0x0c, 0x26, 0xa7, 0x46, 0x91, 0xdb, + 0xcd, 0x7b, 0xce, 0x8e, 0x69, 0xd4, 0xf0, 0x17, 0x32, 0x93, + 0xc4, 0x86, 0x3e, 0x69, 0xca, 0x67, 0x77, 0x95, 0x46, 0x4d, + 0x78, 0x92, 0x94, 0xe5, 0x80, 0xe4, 0x9a, 0x7b, 0x5f, 0x21, + 0x3f, 0x84, 0xd2, 0x6a, 0x15, 0x79, 0x4a, 0xd9, 0x43, 0x99, + 0xae, 0xbb, 0x5c, 0x4d, 0x0f, 0xe8, 0x92, 0x26, 0xd8, 0x0a, + 0xcf, 0x09, 0xc0, 0x6d, 0x44, 0x9f, 0xf4, 0xfc, 0x53, 0x83, + 0xf1, 0x5e, 0xb6, 0xbb, 0xb7, 0x1f, 0xd3, 0x45, 0x22, 0x8c, + 0x9e, 0xac, 0x4c, 0x43, 0xcd, 0x5b, 0x72, 0xfc, 0x47, 0x76, + 0x9f, 0x5c, 0x3d, 0x46, 0x4f, 0x19, 0xe9, 0xca, 0xff, 0xfe, + 0x32, 0x28, 0xb7, 0x7b, 0x66, 0x2f, 0xcf, 0xda, 0x22, 0x40, + 0x95, 0xf0, 0xb2, 0x0e, 0x82, 0xb3, 0x1b, 0xa4, 0xd4, 0x7c, + 0x54, 0x33, 0xfb, 0x98, 0x8d, 0x1d, 0x59, 0x5e, 0x2a, 0x24, + 0x8a, 0x2c, 0x5a, 0x5e, 0xbd, 0xcb, 0x3b, 0xaa, 0x5f, 0xd6, + 0xa8, 0x4e, 0x15, 0x07, 0x13, 0x94, 0x01, 0xca, 0xa1, 0x8e, + 0xa4, 0xcf, 0xd4, 0xba, 0xf5, 0x79, 0x4c, 0x32, 0xe8, 0xa2, + 0x37, 0xbc, 0x3f, 0x68, 0xe5, 0x8f, 0x26, 0xab, 0xa7, 0xe9, + 0x74, 0x85, 0xdc, 0xe4, 0xfa, 0xa4, 0x1c, 0x18, 0xab, 0xdf, + 0x3c, 0xbe, 0x7e, 0x9d, 0x90, 0x31, 0x7f, 0x54, 0x70, 0xf3, + 0x0e, 0x02, 0xb4, 0x88, 0xc6, 0x6f, 0x97, 0x05, 0xcf, 0x37, + 0x7c, 0xdc, 0xc0, 0x8a, 0x95, 0x08, 0x5a, 0x1e, 0x4b, 0x13, + 0x5e, 0xe9, 0xce, 0xb3, 0x2b, 0x0c, 0xf2, 0x30, 0x3d, 0x32, + 0xef, 0x84, 0xc4, 0x2c, 0x7f, 0xec, 0x43, 0xef, 0x6d, 0x8d, + 0xe1, 0x63, 0x41, 0x4f, 0xb5, 0xbe, 0x3f, 0x8b, 0xde, 0xa8, + 0x78, 0xea, 0x19, 0xa8, 0x62, 0x43, 0x1f, 0xd5, 0x65, 0xd2, + 0xda, 0xab, 0x23, 0xc7, 0x3c, 0x49, 0xcc, 0x62, 0xdf, 0xc7, + 0xf5, 0x46, 0xd0, 0xe2, 0x19, 0x0e, 0x1a, 0x21, 0xb6, 0xcf, + 0x66, 0x57, 0x81, 0xf7, 0xc5, 0xf2, 0xb7, 0x54, 0xe0, 0xa5, + 0xc3, 0xd1, 0x1c, 0x01, 0x41, 0x5e, 0xa1, 0x3b, 0xac, 0xd5, + 0x15, 0x99, 0xe2, 0xc4, 0xa3, 0xd8, 0xdc, 0xe6, 0x2c, 0xc2, + 0xf5, 0x5c, 0x56, 0xdd, 0x98, 0x2a, 0x08, 0x9f, 0x41, 0xfa, + 0x69, 0xb7, 0x6f, 0x99, 0xa4, 0x4e, 0x25, 0x53, 0x4c, 0x59, + 0x56, 0x8b, 0xeb, 0xad, 0x71, 0x62, 0xb0, 0x6c, 0x6e, 0x73, + 0x16, 0x61, 0x9b, 0x2e, 0x2b, 0x8f, 0x1e, 0xdb, 0x97, 0x2a, + 0xf9, 0x60, 0x77, 0xa4, 0x88, 0xd5, 0xd7, 0x5a, 0x78, 0x41, + 0x0f, 0x83, 0x30, 0xba, 0x65, 0x2f, 0xea, 0x41, 0xd8, 0x1d, + 0x83, 0x74, 0x1b, 0x90, 0xc0, 0xa8, 0x18, 0x45, 0x14, 0x92, + 0x5b, 0x8d, 0xae, 0x40, 0x5a, 0x79, 0xf0, 0x27, 0x9a, 0x6c, + 0x50, 0x7e, 0x0a, 0x43, 0xc5, 0x68, 0x31, 0x0e, 0xe4, 0xd7, + 0x11, 0xfb, 0x75, 0x6a, 0xab, 0x1e, 0x92, 0x1b, 0x83, 0xb7, + 0x49, 0xd0, 0x62, 0x1c, 0x0b, 0x6d, 0x22, 0x35, 0xea, 0xd4, + 0x95, 0x3c, 0xe7, 0x36, 0xc5, 0xad, 0xb0, 0xcd, 0xbe, 0x46, + 0xde, 0x7a, 0xdd, 0x45, 0x4c, 0xd7, 0x53, 0x96, 0x85, 0xaf, + 0x58, 0xdf, 0x70, 0x60, 0xe9, 0xfa, 0xf0, 0xbd, 0x3b, 0x31, + 0x05, 0xc4, 0x3f, 0x93, 0x03, 0x4a, 0x38, 0x08, 0x0b, 0xc9, + 0xd2, 0x3c, 0xd4, 0x4f, 0xc8, 0x20, 0x74, 0x80, 0x19, 0x31, + 0x2c, 0x66, 0xe4, 0x61, 0xa6, 0x9c, 0xd9, 0x3e, 0xb5, 0xe4, + 0x8e, 0x05, 0xa4, 0x14, 0x61, 0xf4, 0xdd, 0x63, 0x53, 0x1d, + 0xaf, 0x96, 0x37, 0xf7, 0xa4, 0x75, 0x4f, 0x1c, 0xc8, 0x70, + 0xd0, 0xcb, 0xf9, 0xb7, 0xb6, 0xfd, 0xa1, 0x9a, 0x83, 0x79, + 0xba, 0x2a, 0x70, 0xb3, 0x80, 0x89, 0x0e, 0xe1, 0xc1, 0x2f, + 0xb1, 0xfc, 0x17, 0xd1, 0x79, 0xe3, 0xe8, 0xf1, 0xb6, 0xbd, + 0xe4, 0xb1, 0x66, 0x65, 0x5c, 0x95, 0xea, 0x63, 0xf5, 0xd2, + 0x54, 0x21, 0x0e, 0x96, 0xc9, 0xe6, 0xf6, 0x1e, 0xb0, 0x8e, + 0x52, 0xb3, 0x9b, 0xf2, 0xfd, 0x58, 0xa4, 0x73, 0x9c, 0x68, + 0xed, 0x02, 0x96, 0x08, 0x55, 0xb6, 0x72, 0x3e, 0x9f, 0xb3, + 0x3c, 0x75, 0xed, 0x54, 0x31, 0xc0, 0xee, 0x8b, 0xd3, 0x69, + 0x6d, 0xb4, 0xf0, 0x82, 0x1e, 0xc5, 0xca, 0xe4, 0x9b, 0x1b, + 0x79, 0xe7, 0xcb, 0xa9, 0x31, 0xe1, 0x21, 0x33, 0xae, 0xda, + 0x65, 0x17, 0xa2, 0xd9, 0xa1, 0x17, 0xfc, 0x9b, 0x9c, 0x77, + 0x94, 0x1f, 0xf2, 0xe8, 0xcd, 0xc4, 0x51, 0xdc, 0x4a, 0x93, + 0x40, 0x72, 0x4d, 0xdc, 0xce, 0xf1, 0xfe, 0x42, 0x69, 0x35, + 0xeb, 0xdd, 0x25, 0x8d, 0x0c, 0xcf, 0x88, 0x7b, 0xdb, 0x81, + 0x36, 0x96, 0x50, 0x1d, 0x76, 0x24, 0x30, 0x2a, 0x06, 0x80, + 0x18, 0x5d, 0xd3, 0xf6, 0x75, 0xc1, 0x6c, 0xef, 0xa0, 0x3a, + 0xec, 0x48, 0x60, 0x54, 0x0c, 0xc3, 0xc3, 0xee, 0x75, 0xd2, + 0x68, 0x76, 0x0a, 0xb0, 0x5d, 0x85, 0x90, 0x0c, 0x8a, 0x0e, + 0x80, 0xf7, 0x47, 0xdc, 0xd6, 0x92, 0x15, 0x32, 0x1d, 0x9a, + 0xa2, 0x2d, 0x4b, 0x16, 0xdf, 0xae, 0xc2, 0xac, 0x8f, 0xfb, + 0x71, 0x7c, 0xa9, 0x0b, 0xdf, 0x0a, 0x8b, 0x28, 0xc2, 0x2b, + 0x79, 0xc6, 0xa6, 0x3a, 0xf2, 0xd4, 0x0e, 0x66, 0x01, 0x58, + 0x37, 0x50, 0xd2, 0x83, 0xdf, 0x9b, 0x4e, 0xff, 0x79, 0x13, + 0xe0, 0xc0, 0x11, 0x37, 0x23, 0xb9, 0x76, 0x62, 0x0a, 0x4b, + 0x7e, 0xe5, 0x06, 0x94, 0x70, 0x10, 0x3d, 0xf5, 0xf3, 0xcf, + 0xb2, 0xaf, 0x0b, 0x76, 0xdf, 0x1b, 0x39, 0xb3, 0xf4, 0xdb, + 0xff, 0x64, 0xaa, 0x53, 0x51, 0x45, 0x6e, 0x65, 0xb8, 0x93, + 0xf4, 0x09, 0x17, 0xd0, 0xed, 0x49, 0x55, 0x9d, 0x57, 0x0b, + 0xf5, 0x36, 0xf2, 0x0d, 0x55, 0x91, 0x62, 0x01, 0x42, 0x66, + 0x9f, 0x77, 0xca, 0x2e, 0x87, 0x71, 0x81, 0x2e, 0x3b, 0xf5, + 0xfb, 0xee, 0xeb, 0x3e, 0x27, 0x13, 0x59, 0x4b, 0xa2, 0x7b, + 0xb6, 0x4b, 0xfa, 0x9a, 0x52, 0xdb, 0xc6, 0x0e, 0x64, 0x38, + 0x68, 0x84, 0x9d, 0xba, 0x5b, 0x9f, 0xe3, 0x83, 0x33, 0x59, + 0x65, 0x08, 0x9a, 0xa6, 0x1e, 0xdd, 0x82, 0xec, 0x0a, 0x7f, + 0x90, 0x30, 0x23, 0x2e, 0x64, 0xe5, 0x4b, 0xcf, 0x7c, 0xd2, + 0x57, 0xce, 0xee, 0xe9, 0x8c, 0x9a, 0xf0, 0xe7, 0x52, 0xce, + 0x93, 0x84, 0x38, 0x1d, 0xa2, 0x1e, 0x5e, 0x78, 0x85, 0x7d, + 0x8b, 0x89, 0x29, 0x4e, 0x8e, 0x7b, 0x6f, 0xe7, 0x2a, 0x64, + 0x3a, 0xf7, 0x87, 0x5a, 0x96, 0x2c, 0x7d, 0x9f, 0x47, 0x9b, + 0xdd, 0x35, 0xe2, 0xf8, 0x91, 0x16, 0x7d, 0x14, 0xd5, 0x50, + 0x47, 0x56, 0xf2, 0x4f, 0x8f, 0x74, 0x2c, 0xa2, 0xce, 0xf0, + 0xd6, 0xff, 0xa6, 0x80, 0x13, 0x45, 0x64, 0xc4, 0xb0, 0x5b, + 0x16, 0x47, 0x50, 0x0d, 0xaf, 0x71, 0xfd, 0xc3, 0xab, 0x27, + 0x46, 0x9c, 0x2d, 0x73, 0x83, 0x3b, 0x28, 0xcf, 0xec, 0x0f, + 0x99, 0x4c, 0xf8, 0x38, 0x40, 0xf4, 0x5a, 0x56, 0x08, 0xc1, + 0x36, 0xbe, 0x76, 0x90, 0x06, 0x86, 0x44, 0xdc, 0x8c, 0xa1, + 0x1b, 0x4b, 0x28, 0xef, 0x3b, 0x12, 0x18, 0x15, 0x03, 0x40, + 0x91, 0x20, 0xe6, 0x56, 0x50, 0x6b, 0xa8, 0xae, 0x03, 0xfd, + 0x15, 0x71, 0x01, 0x87, 0xa9, 0xb9, 0xa3, 0x59, 0xbf, 0x8c, + 0x7f, 0xf4, 0x79, 0x8a, 0x98, 0x6d, 0xa6, 0xef, 0xc9, 0x9d, + 0xb0, 0x7d, 0xff, 0x9b, 0x98, 0x86, 0x59, 0xb6, 0xe4, 0x3b, + 0x8e, 0xec, 0xfd, 0xb8, 0x7a, 0x8c, 0x9e, 0x32, 0x9c, 0x6f, + 0x70, 0xb6, 0x08, 0x85, 0x7b, 0xc5, 0x5f, 0x92, 0x37, 0x52, + 0x35, 0xf4, 0x4e, 0x98, 0x2b, 0xa4, 0x94, 0xb7, 0xd9, 0x31, + 0x58, 0x36, 0x37, 0xd8, 0x0b, 0xd1, 0xac, 0x17, 0xf4, 0xa6, + 0xc6, 0x2b, 0x13, 0x60, 0xa2, 0x66, 0xfd, 0x3f, 0x61, 0xfc, + 0x57, 0x17, 0x9e, 0xf0, 0x63, 0x97, 0x39, 0xb0, 0x8b, 0xe6, + 0xfb, 0xd0, 0x19, 0x04, 0xef, 0x10, 0xaa, 0xaf, 0xe4, 0x7c, + 0xfd, 0xa5, 0x29, 0x67, 0xa8, 0x42, 0x1c, 0xef, 0x51, 0x0f, + 0x2f, 0x3c, 0xa3, 0xdf, 0xa4, 0xa5, 0xf5, 0x27, 0x5b, 0xc4, + 0x7d, 0x4d, 0x29, 0x8c, 0x63, 0x07, 0x32, 0x1c, 0x34, 0x42, + 0xaf, 0x5d, 0xcc, 0xae, 0x90, 0xa0, 0xf8, 0xcd, 0xd3, 0x04, + 0x4d, 0x53, 0x0f, 0x8f, 0x41, 0x76, 0x05, 0xde, 0x48, 0x18, + 0x58, 0x87, 0x5f, 0x23, 0x6f, 0x3d, 0x8f, 0xc3, 0x26, 0x8a, + 0xc8, 0x4b, 0xa3, 0xb6, 0x2c, 0x8e, 0xf1, 0x97, 0x2c, 0x08, + 0x47, 0xe9, 0xdb, 0x94, 0xc6, 0x15, 0x23, 0x92, 0x42, 0x14, + 0x99, 0x33, 0xdf, 0xf6, 0xde, 0x0d, 0x54, 0xc8, 0x74, 0x2d, + 0xcd, 0xb4, 0xef, 0x58, 0xfa, 0xfd, 0x8e, 0xf5, 0x28, 0xe7, + 0xb6, 0xd9, 0x9f, 0x80, 0xb4, 0xf2, 0x23, 0x4e, 0xf7, 0xd8, + 0xa0, 0xfc, 0x14, 0x86, 0x60, 0xb7, 0xca, 0x5e, 0x17, 0x82, + 0x73, 0x3a, 0xc5, 0xe8, 0x36, 0xe3, 0x43, 0x93, 0x30, 0x8a, + 0x79, 0x6a, 0x07, 0x33, 0xe1, 0x2c, 0xfa, 0x28, 0x69, 0xa0, + 0x8e, 0xac, 0x27, 0x9e, 0xdd, 0xe8, 0x76, 0xe6, 0xad, 0x26, + 0x7c, 0x1c, 0x20, 0x7a, 0x2d, 0x2b, 0x04, 0x81, 0x1b, 0x5f, + 0x3b, 0x48, 0x03, 0x43, 0x22, 0x6e, 0x46, 0xb1, 0xec, 0xc4, + 0x14, 0x96, 0xfc, 0x09, 0x0c, 0xeb, 0xe0, 0x20, 0xc8, 0x27, + 0xa7, 0xee, 0xbc, 0x39, 0xc2, 0x90, 0x29, 0x05, 0x89, 0x3d, + 0xa6, 0x68, 0x64, 0x96, 0x02, 0xc3, 0x3c, 0xf5, 0xc5, 0xde, + 0x09, 0x39, 0x18, 0xe4, 0xa8, 0x0e, 0x08, 0xb2, 0x01, 0x81, + 0x12, 0x14, 0x1f, 0x51, 0x22, 0xe1, 0x41, 0x32, 0xd8, 0xc8, + 0xa1, 0x7e, 0x48, 0x6b, 0x09, 0x03, 0xef, 0x4c, 0xbb, 0x22, + 0xbe, 0x89, 0xac, 0x30, 0x4e, 0xc0, 0xf4, 0xc8, 0x3a, 0x55, + 0x96, 0xb0, 0x46, 0x5c, 0xc8, 0x09, 0x96, 0x5d, 0xf8, 0x67, + 0xae, 0x5f, 0x1f, 0x11, 0xdb, 0xf7, 0x23, 0x0d, 0x51, 0x8d, + 0xb1, 0xea, 0x7e, 0xac, 0x4e, 0xda, 0x4a, 0xee, 0x79, 0x74, + 0x87, 0x62, 0xc9, 0x6e, 0xdb, 0xb3, 0xa6, 0x24, 0x1d, 0xb7, + 0x66, 0x5f, 0xfd, 0xbf, 0x7c, 0x44, 0xea, 0x5a, 0x8c, 0x34, + 0x74, 0x25, 0x91, 0xd3, 0xb9, 0xc2, 0x29, 0x43, 0x35, 0xcf, + 0xac, 0x8f, 0x13, 0xed, 0x3a, 0xc9, 0x0f, 0x8c, 0xaa, 0x15, + 0x9d, 0x30, 0xda, 0x52, 0x44, 0x8b, 0x8a, 0x2d, 0x3c, 0xc1, + 0xe6, 0xa0, 0xc1, 0x2d, 0x49, 0x27, 0xad, 0xa8, 0x03, 0x89, + 0x45, 0x61, 0x38, 0x02, 0x82, 0xbc, 0x81, 0x76, 0x8d, 0x38, + 0x4d, 0x89, 0x6c, 0xd5, 0xd6, 0x33, 0x93, 0xcc, 0x6a, 0x25, + 0x71, 0x74, 0xa7, 0xbb, 0x68, 0x3d, 0x3a, 0x0c, 0x85, 0x7c, + 0x57, 0xde, 0xa5, 0xfe, 0xd3, 0xdb, 0x63, 0x1e, 0x34, 0xcb, + 0xb7, 0xcb, 0xe4, 0x01, 0xd1, 0xb4, 0x23, 0xf3, 0x68, 0x4a, + 0x3c, 0x83, 0x99, 0xe3, 0xba, 0x3e, 0x0e, 0x0c, 0xb4, 0x8e, + 0x1e, 0x5f, 0x3f, 0xaf, 0x48, 0xf9, 0xde, 0x2a, 0x38, 0x98, + 0x07, 0x01, 0x5d, 0x42, 0x39, 0x91, 0xa5, 0x2d, 0x78, 0x4c, + 0x1a, 0xf3, 0x0f, 0x50, 0xb7, 0x48, 0xcf, 0xee, 0xe2, 0x03, + 0x2d, 0xc2, 0xe6, 0x67, 0x7f, 0x5b, 0x12, 0xaf, 0xd6, 0xeb, + 0x0e, 0x26, 0x71, 0x91, 0xc0, 0xad, 0x57, 0xbc, 0x2e, 0xc7, + 0xe6, 0x74, 0x49, 0x13, 0x6c, 0x05, 0x86, 0xe5, 0x60, 0xd7, + 0x96, 0x26, 0xbc, 0x11, 0x5f, 0xa5, 0x56, 0x18, 0x27, 0x60, + 0x7a, 0x64, 0x1d, 0xcb, 0x4b, 0x58, 0xad, 0x55, 0x0b, 0x02, + 0x61, 0xab, 0x46, 0x25, 0xd0, 0x94, 0x78, 0xc5, 0xf1, 0x05, + 0xb7, 0x7c, 0x01, 0x80, 0x1e, 0x9b, 0x83, 0x6f, 0xe5, 0xfd, + 0x0c, 0x72, 0x54, 0x07, 0x04, 0x59, 0xe1, 0xa1, 0x24, 0x28, + 0x3e, 0xa2, 0x44, 0x01, 0x82, 0x64, 0x73, 0x53, 0x81, 0xfc, + 0x90, 0xd6, 0x12, 0x06, 0xe8, 0x4a, 0xe1, 0x65, 0xb1, 0x47, + 0x52, 0x86, 0x6a, 0x5d, 0x9b, 0xdd, 0x26, 0x19, 0x74, 0x51, + 0x8c, 0xb8, 0x53, 0x12, 0xef, 0xba, 0x33, 0xce, 0x9f, 0xbe, + 0x3e, 0x22, 0x75, 0x2d, 0x46, 0x1a, 0xf3, 0x54, 0x10, 0xfd, + 0x82, 0x37, 0xd2, 0xad, 0xde, 0xf1, 0x8b, 0x9c, 0x4a, 0xa6, + 0x98, 0xb2, 0xa7, 0x1c, 0xc7, 0xa5, 0x36, 0x8b, 0x6b, 0xf8, + 0xa8, 0x66, 0x35, 0xf3, 0xd9, 0x3a, 0xb2, 0xbc, 0x34, 0xff, + 0x1d, 0x06, 0xa3, 0x3e, 0xca, 0x6f, 0xb3, 0x7f, 0x88, 0x8c, + 0xd0, 0x0f, 0x1a, 0x84, 0xe6, 0x46, 0x55, 0xeb, 0xaf, 0x18, + 0x6d, 0x29, 0x22, 0xa4, 0x45, 0xf7, 0x1e, 0x81, 0x73, 0x50, + 0x48, 0x50, 0x7c, 0x87, 0x88, 0x02, 0xc7, 0xc8, 0xe6, 0xa6, + 0xc1, 0x3b, 0xe3, 0x6f, 0x24, 0x0c, 0xba, 0x84, 0x72, 0xe1, + 0x89, 0x5a, 0xf0, 0x98, 0x34, 0x25, 0x1e, 0xa0, 0xad, 0x90, + 0x5d, 0x1f, 0x07, 0x06, 0x5a, 0x47, 0x0f, 0xce, 0xfe, 0xb6, + 0x24, 0x9d, 0x6f, 0x15, 0x1c, 0x4c, 0xe2, 0xe1, 0xfc, 0xd8, + 0xba, 0xe8, 0x1f, 0x07, 0x08, 0xff, 0x9a, 0x7a, 0x01, 0xb1, + 0x76, 0x67, 0x7e, 0x12, 0x4d, 0x95, 0x1a, 0x35, 0x42, 0x12, + 0x30, 0x47, 0xda, 0xdf, 0x06, 0x20, 0xf7, 0x91, 0xc7, 0x6c, + 0x19, 0xdd, 0xcd, 0x6d, 0xf6, 0xae, 0x89, 0x12, 0xac, 0x48, + 0xb8, 0x4f, 0x64, 0x0d, 0xed, 0x62, 0x42, 0x19, 0xb0, 0x20, + 0xdf, 0x22, 0xea, 0x15, 0x9e, 0x54, 0x8c, 0x0d, 0xcb, 0x50, + 0x21, 0xcc, 0x75, 0xa5, 0x8f, 0x48, 0x3a, 0xad, 0xcc, 0xbe, + 0x39, 0xbd, 0xf8, 0x88, 0x17, 0xb4, 0xdb, 0x68, 0x4c, 0x15, + 0x04, 0xae, 0xc1, 0x7d, 0xd5, 0xba, 0xd6, 0xad, 0x52, 0x27, + 0xf3, 0xc8, 0x26, 0xcd, 0xa9, 0x10, 0x73, 0x2b, 0x28, 0xd4, + 0x54, 0x57, 0xe0, 0x9f, 0xeb, 0xd9, 0xe1, 0xa2, 0xb5, 0xbd, + 0x82, 0xb4, 0xe7, 0x9c, 0xf1, 0xe5, 0x0c, 0x61, 0xd7, 0x47, + 0xe0, 0x08, 0x4d, 0xb5, 0x41, 0x1b, 0xf7, 0x11, 0x68, 0xd4, + 0xcb, 0x48, 0xc0, 0xdf, 0xee, 0xfa, 0x18, 0x80, 0x5a, 0x01, + 0x9a, 0x73, 0x08, 0x8a, 0xf0, 0x52, 0x92, 0xfe, 0x24, 0xe4, + 0x60, 0x16, 0xe5, 0x38, 0x20, 0x8d, 0x04, 0x41, 0x4f, 0x56, + 0x26, 0xc0, 0x87, 0xcc, 0x39, 0x7e, 0xc2, 0x3b, 0xae, 0x2e, + 0xff, 0x23, 0xc6, 0xed, 0x10, 0xd7, 0x23, 0xa4, 0xe7, 0x3f, + 0x48, 0x0b, 0xc0, 0x2c, 0x09, 0x70, 0x40, 0xd9, 0x08, 0x82, + 0x3b, 0x73, 0xb7, 0x13, 0x3e, 0x0e, 0x10, 0x3d, 0xf7, 0xf4, + 0x02, 0xa1, 0xec, 0xce, 0xfc, 0x24, 0xcb, 0x64, 0x85, 0x80, + 0xfa, 0x88, 0x2e, 0x54, 0x3d, 0x93, 0x75, 0x34, 0xaa, 0x83, + 0x84, 0xb6, 0x20, 0x6d, 0x46, 0x8b, 0x0d, 0x7e, 0x90, 0x16, + 0x43, 0x58, 0x12, 0xe0, 0x80, 0x71, 0x10, 0xc7, 0x63, 0xf4, + 0xe8, 0x30, 0x51, 0x33, 0x9f, 0xfe, 0xd1, 0x7e, 0xca, 0xea, + 0x4f, 0x78, 0xd0, 0xaa, 0x73, 0x23, 0xcb, 0x94, 0xb6, 0x0c, + 0xd7, 0xf5, 0x11, 0x52, 0xc3, 0x9a, 0x0f, 0xa1, 0xd8, 0x28, + 0xed, 0x8f, 0x87, 0xd7, 0x7b, 0x57, 0xa5, 0x09, 0x56, 0x24, + 0x5c, 0xc6, 0x32, 0xe7, 0x97, 0x31, 0xea, 0x89, 0xdd, 0x90, + 0x74, 0x99, 0x5b, 0xbf, 0x72, 0xb9, 0x33, 0xd3, 0x2e, 0xab, + 0x75, 0xd0, 0xc9, 0xa7, 0xb9, 0x75, 0x3f, 0x56, 0x27, 0x6d, + 0x25, 0x77, 0xdd, 0x3a, 0xa2, 0x31, 0x85, 0x37, 0x32, 0x79, + 0x59, 0xda, 0x2f, 0x9f, 0xd1, 0x24, 0x9b, 0x90, 0xb3, 0x9e, + 0xc8, 0x1a, 0x19, 0xc4, 0x84, 0x32, 0xa3, 0x40, 0x7d, 0x44, + 0x17, 0x2a, 0xff, 0xa8, 0xdb, 0x1a, 0x55, 0xa0, 0x42, 0x5b, + 0x53, 0x4e, 0x8d, 0x1f, 0xbb, 0x72, 0x47, 0xe3, 0x52, 0x0a, + 0xd1, 0x7a, 0x8f, 0xd0, 0xc8, 0xef, 0x04, 0x45, 0x78, 0x29, + 0x49, 0x7f, 0x12, 0x72, 0x30, 0x0b, 0x93, 0x1c, 0x10, 0xa7, + 0x02, 0xc1, 0x7c, 0xaf, 0x61, 0x81, 0x2b, 0x3c, 0x0d, 0xa7, + 0x55, 0xd9, 0x49, 0xb7, 0x33, 0x60, 0x3e, 0x88, 0x41, 0x5a, + 0x92, 0x4e, 0x99, 0x93, 0x06, 0xd1, 0x8a, 0xc2, 0x70, 0x04, + 0xc7, 0xbb, 0xc1, 0xec, 0x27, 0x6b, 0x1c, 0xcc, 0x02, 0xb0, + 0x6e, 0xa0, 0x67, 0xc5, 0x7d, 0xf5, 0x9c, 0x3d, 0xf2, 0x26, + 0x55, 0xc8, 0xc9, 0xc3, 0x37, 0xd3, 0x5c, 0xa8, 0x7a, 0xe5, + 0xea, 0x68, 0x97, 0xc5, 0xcb, 0xaf, 0xcf, 0x21, 0xfd, 0xa9, + 0xb3, 0xf7, 0x3c, 0x26, 0x0d, 0x98, 0xe6, 0x28, 0xba, 0x24, + 0x86, 0x77, 0x71, 0xe0, 0xf7, 0x61, 0x73, 0xd2, 0xde, 0xcc, + 0x09, 0xb6, 0x6b, 0x94, 0x07, 0x13, 0xd9, 0xa9, 0x11, 0x57, + 0x3d, 0x3f, 0x64, 0x50, 0xad, 0xf6, 0xcc, 0x5e, 0x5d, 0x77, + 0x44, 0x80, 0xe9, 0x23, 0x97, 0xa6, 0xa2, 0x8a, 0xdc, 0xca, + 0xb3, 0xe5, 0x2b, 0x12, 0x2e, 0x63, 0x19, 0x92, 0xaa, 0xf9, + 0xd9, 0x70, 0x9a, 0xd1, 0xd8, 0x69, 0x6f, 0x66, 0xe5, 0x5b, + 0xd4, 0x4a, 0xe2, 0xe8, 0x8d, 0xb5, 0xd0, 0x7a, 0x74, 0x18, + 0xc9, 0xf8, 0xae, 0x7f, 0x89, 0x3f, 0x65, 0x75, 0xc6, 0x3c, + 0x68, 0x55, 0xa8, 0x90, 0x6d, 0xb0, 0xab, 0xbb, 0xb1, 0xaa, + 0xec, 0xed, 0xbf, 0xde, 0xe5, 0xfb, 0x54, 0x1c, 0x1b, 0x1e, + 0xf1, 0x98, 0x33, 0x70, 0x80, 0x2b, 0xb4, 0xac, 0x10, 0x41, + 0x6c, 0xbf, 0xec, 0xe3, 0x16, 0x51, 0x67, 0x78, 0x6b, 0x9e, + 0x53, 0x40, 0xe8, 0xc3, 0x32, 0x62, 0x58, 0xcc, 0x0b, 0xc2, + 0x6c, 0x78, 0x42, 0x25, 0xcc, 0x03, 0x45, 0xac, 0x95, 0xf5, + 0x40, 0xc7, 0x73, 0xb9, 0x36, 0x0a, 0x2f, 0xe1, 0xec, 0x9e, + 0x90, 0x4e, 0x4a, 0x44, 0x07, 0xd3, 0x98, 0xcd, 0xbc, 0xb0, + 0xf6, 0x67, 0x45, 0x1f, 0xea, 0x67, 0xd0, 0xec, 0x14, 0xa3, + 0xba, 0xc9, 0xe3, 0x18, 0xd7, 0x1c, 0xc3, 0x2d, 0x33, 0xf9, + 0x47, 0x41, 0xac, 0xf0, 0x34, 0xd9, 0x97, 0xe2, 0xe7, 0x99, + 0xcc, 0x43, 0xf8, 0x65, 0x1d, 0x98, 0xb5, 0x44, 0xbf, 0xd1, + 0x9b, 0x60, 0x9c, 0x43, 0x2b, 0x53, 0x74, 0xaa, 0xef, 0xa3, + 0xfe, 0x1b, 0x86, 0x1d, 0xda, 0xd9, 0x01, 0xc6, 0x82, 0x9e, + 0xa9, 0xbf, 0x7e, 0xd5, 0x7f, 0x93, 0x7a, 0x29, 0x25, 0x5d, + 0xa7, 0x9d, 0x16, 0xec, 0x7d, 0x36, 0x72, 0xa5, 0x2b, 0x75, + 0x3d, 0xc8, 0x64, 0xf2, 0xb2, 0x77, 0x5e, 0xfd, 0x61, 0x48, + 0xf5, 0xe3, 0xa5, 0xff, 0x53, 0x34, 0x32, 0x4b, 0xb3, 0x8e, + 0x9c, 0x28, 0x98, 0xcb, 0x31, 0x81, 0x58, 0x41, 0xaf, 0x9f, + 0x89, 0x44, 0xb8, 0xff, 0x1f, 0x5b, 0x89, 0xb1, 0x7a, 0x0f, + 0x92, 0x59, 0x84, 0xa7, 0x83, 0x5d, 0x7c, 0x18, 0xee, 0x22, + 0x2e, 0x61, 0xf2, 0x05, 0x13, 0x21, 0xaf, 0xb9, 0x0b, 0xa1, + 0xcc, 0xca, 0xb8, 0xe9, 0x17, 0xc6, 0xe4, 0x85, 0x69, 0x1e, + 0x6a, 0xc6, 0x64, 0x10, 0x3a, 0x40, 0xed, 0xf9, 0x16, 0x33, + 0x72, 0xd1, 0x6a, 0xfe, 0x06, 0xf9, 0x40, 0xa2, 0x5e, 0xe7, + 0xbd, 0x1a, 0x7b, 0xd5, 0x6b, 0xac, 0x35, 0x4a, 0x7d, 0x2f, + 0x7f, 0x1a, 0xa8, 0x53, 0xe8, 0x5a, 0x59, 0xab, 0x1d, 0xb0, + 0x37, 0x39, 0xdf, 0x29, 0xd8, 0xf0, 0x84, 0x4a, 0x5b, 0x06, + 0x8a, 0x9b, 0xe9, 0x29, 0x80, 0x4d, 0xe6, 0xb1, 0x6c, 0x14, + 0xc2, 0x6e, 0x6b, 0x49, 0xeb, 0x19, 0xef, 0x4d, 0x51, 0xf7, + 0xc4, 0x0b, 0x8e, 0x57, 0x61, 0x56, 0x36, 0x3c, 0x21, 0xf3, + 0x66, 0xe0, 0xc3, 0x56, 0xab, 0x9b, 0x20, 0x82, 0xd8, 0xbd, + 0x1b, 0x05, 0xf8, 0x9d, 0xc2, 0xc1, 0x56, 0x78, 0x1a, 0x8d, + 0xaa, 0x71, 0x92, 0xad, 0x66, 0xc0, 0x7c, 0xd3, 0x26, 0xeb, + 0x02, 0x57, 0x81, 0xdf, 0x8b, 0x5d, 0x6b, 0xb7, 0x29, 0xf2, + 0x98, 0x64, 0x13, 0x87, 0x3f, 0x36, 0xcf, 0x3a, 0x77, 0x71, + 0x02, 0x4f, 0xc7, 0xff, 0x91, 0xbd, 0xfc, 0x69, 0xfe, 0xe5, + 0x0a, 0x49, 0xcc, 0xa7, 0x57, 0x20, 0x2d, 0xdd, 0x78, 0xf2, + 0x4d, 0x36, 0x28, 0x3f, 0x05, 0xc0, 0x9f, 0x2c, 0x52, 0xd8, + 0x4e, 0x34, 0x97, 0x01, 0x4b, 0x04, 0xcb, 0x5b, 0x39, 0x1f, + 0xae, 0xb8, 0xf4, 0x52, 0x4a, 0xba, 0x8d, 0xf9, 0x2c, 0x1b, + 0xfa, 0x6c, 0xe4, 0x89, 0x56, 0xea, 0x7a, 0x53, 0x1a, 0x9e, + 0xef, 0x03, 0xb0, 0x1f, 0x65, 0xd6, 0xb8, 0xde, 0x44, 0x46, + 0x68, 0xe6, 0x0d, 0x42, 0xa5, 0xdf, 0xfb, 0x50, 0xf3, 0x55, + 0x62, 0xc1, 0xb0, 0x82, 0x9d, 0xfd, 0xd1, 0x88, 0xb3, 0x3d, + 0x61, 0x37, 0xd4, 0xc5, 0x94, 0xed, 0x96, 0xc7, 0xc9, 0x9a, + 0x62, 0xe4, 0x47, 0xca, 0xd1, 0x2b, 0x35, 0x7f, 0x03, 0x9d, + 0x20, 0x51, 0x2f, 0x92, 0xbf, 0x0d, 0xdc, 0x8b, 0xd4, 0x56, + 0xfb, 0x25, 0x7b, 0xa9, 0x3b, 0xc6, 0x24, 0xf2, 0xf3, 0x11, + 0x71, 0x44, 0x26, 0xa2, 0x2f, 0x2c, 0xdc, 0x69, 0xde, 0x76, + 0xc0, 0x96, 0xd7, 0xa7, 0x91, 0xd0, 0xc1, 0xc6, 0xbb, 0x5f, + 0xfe, 0xa4, 0x6f, 0x54, 0xb5, 0x08, 0xd8, 0xf4, 0x14, 0x6a, + 0x2a, 0xca, 0x70, 0xae, 0x94, 0x8d, 0x91, 0x51, 0xbb, 0xbf, + 0xda, 0x33, 0xb8, 0xbf, 0x9e, 0xd8, 0x83, 0xa2, 0xf1, 0xcd, + 0x28, 0x43, 0xee, 0x03, 0x6d, 0x95, 0xbc, 0x02, 0x36, 0x3d, + 0x05, 0xfb, 0xeb, 0xd3, 0x1c, 0xca, 0x25, 0xb2, 0xb5, 0x85, + 0x5e, 0x5f, 0xd7, 0x7c, 0x2e, 0x5f, 0xc6, 0x36, 0x50, 0xc9, + 0xad, 0xa2, 0x0a, 0x60, 0xda, 0x70, 0x8a, 0xb4, 0xab, 0xd3, + 0x4f, 0xde, 0xed, 0x0a, 0x5d, 0x6e, 0xf8, 0x7b, 0x43, 0xd7, + 0xe9, 0x10, 0xb4, 0x3c, 0x22, 0xae, 0x7a, 0x7e, 0xc8, 0xa0, + 0x99, 0x2f, 0x5b, 0xbc, 0xba, 0xee, 0x88, 0xc3, 0x11, 0x46, + 0x66, 0x31, 0x8e, 0x82, 0x9b, 0x23, 0x68, 0x71, 0xed, 0x07, + 0x0d, 0xf1, 0x5b, 0x86, 0x33, 0xca, 0x3a, 0xf3, 0xa9, 0x88, + 0xbd, 0x61, 0xf5, 0xc0, 0xfb, 0x86, 0x56, 0xa6, 0xe8, 0x97, + 0x1d, 0x85, 0x9a, 0xe9, 0x34, 0x6a, 0x84, 0x24, 0x60, 0x8e, + 0x77, 0x7d, 0x0c, 0x40, 0x2d, 0xe1, 0x4d, 0xd8, 0x6b, 0x7e, + 0x18, 0x62, 0xc3, 0xcd, 0xbb, 0x1a, 0xb1, 0x68, 0x2f, 0xd2, + 0x6f, 0xf5, 0xd4, 0xeb, 0x05, 0xc5, 0x66, 0xb2, 0xca, 0x10, + 0xf7, 0x8f, 0x3c, 0x79, 0xc7, 0x1b, 0x14, 0xfe, 0xe3, 0x60, + 0x6f, 0x3b, 0x60, 0x4b, 0x8a, 0xb2, 0xa9, 0x68, 0x81, 0x63, + 0xbc, 0xce, 0x7f, 0x52, 0xd6, 0x2a, 0x80, 0x77, 0xdb, 0x69, + 0x34, 0x3b, 0x05, 0x58, 0xcf, 0xa3, 0x48, 0x06, 0x45, 0x07, + 0x40, 0x9a, 0x5c, 0xc2, 0x27, 0x0a, 0x26, 0x42, 0x9d, 0xb1, + 0x16, 0x81, 0x5b, 0x57, 0xb3, 0x11, 0x2e, 0x4f, 0xfb, 0xde, + 0xe0, 0xaf, 0x10, 0xc9, 0xf6, 0x49, 0xbe, 0xe7, 0x6e, 0xa4, + 0x6a, 0x2b, 0x9c, 0xf3, 0x89, 0x7d, 0x35, 0xa0, 0x25, 0xaa, + 0xc4, 0x41, 0xa3, 0xc7, 0xf9, 0x39, 0x61, 0xd3, 0xa5, 0x7a, + 0x5e, 0x01, 0x1b, 0xff, 0xe3, 0x9c, 0x94, 0x88, 0x0e, 0x65, + 0xf3, 0x59, 0xbb, 0xa3, 0x2f, 0xce, 0x8a, 0x3e, 0x17, 0xce, + 0x63, 0x1b, 0x28, 0x85, 0xb7, 0x51, 0x05, 0x30, 0x6d, 0x38, + 0x45, 0x5a, 0xbb, 0x04, 0x6c, 0x7a, 0x0a, 0x35, 0x15, 0x65, + 0x38, 0x57, 0x4a, 0xa7, 0xa9, 0xc9, 0xbc, 0xbe, 0x6d, 0xf8, + 0x5c, 0xbe, 0x4f, 0x6c, 0xa0, 0x51, 0x99, 0x87, 0x14, 0xc0, + 0x77, 0xe0, 0xd7, 0xab, 0x9d, 0xef, 0x6e, 0x2d, 0x8b, 0xea, + 0x9e, 0x38, 0x53, 0xe0, 0x63, 0x55, 0x31, 0xad, 0xaf, 0x39, + 0x25, 0xa8, 0x20, 0x39, 0xc7, 0x6e, 0x67, 0x99, 0x7f, 0x21, + 0xd5, 0xfb, 0x94, 0x8f, 0xf3, 0xa7, 0xc4, 0xe8, 0x2f, 0x95, + 0x67, 0xb8, 0xf4, 0x06, 0x79, 0x18, 0xff, 0x19, 0x96, 0x42, + 0x62, 0x16, 0x15, 0x12, 0x45, 0x16, 0x2d, 0x2f, 0xbf, 0x84, + 0xfc, 0x55, 0xce, 0x6b, 0x54, 0x27, 0xeb, 0xe2, 0x85, 0xb2, + 0xbd, 0xdb, 0xfe, 0x2b, 0xf2, 0xd7, 0xf3, 0xda, 0x8f, 0x1d, + 0x51, 0xf9, 0xa3, 0xfa, 0xd6, 0xfc, 0x30, 0xc4, 0x45, 0x59, + 0xb5, 0x34, 0xa1, 0xd0, 0x5e, 0x67, 0xde, 0x29, 0x6b, 0x15, + 0xe1, 0x40, 0x0f, 0xac, 0xa0, 0xd6, 0x93, 0x9f, 0x06, 0x39, + 0x2a, 0xe2, 0x02, 0xcd, 0x91, 0xb1, 0xd4, 0x3f, 0x0c, 0x31, + 0x80, 0x87, 0xbc, 0x0d, 0xb9, 0x34, 0xf6, 0x69, 0xd6, 0x9b, + 0x6a, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xfa, + 0x6a, 0x83, 0x4a, 0x97, 0x4b, 0x82, 0x85, 0x4d, 0x31, 0x72, + 0xc2, 0x65, 0x89, 0xf4, 0x7e, 0x6c, 0x5d, 0x74, 0xee, 0xe2, + 0x04, 0x9e, 0x4d, 0x3d, 0xe1, 0xb9, 0x3b, 0xd2, 0x3f, 0x09, + 0xb8, 0x47, 0x4e, 0x14, 0x4c, 0x84, 0xf9, 0xa1, 0x2c, 0xc1, + 0xb6, 0xae, 0xa5, 0x22, 0x5c, 0x9e, + }, + { + /* 9 */ + 0xa5, 0x55, 0xa4, 0x90, 0xc6, 0x8d, 0x2f, 0xd5, 0x71, 0x80, + 0x04, 0x89, 0xcb, 0x72, 0x1b, 0x5d, 0x2d, 0x90, 0x75, 0x4e, + 0x36, 0xf9, 0x9f, 0x17, 0x62, 0x87, 0xa3, 0x5a, 0x48, 0x8a, + 0xa4, 0x15, 0x32, 0x9f, 0x4c, 0x80, 0x9d, 0x5f, 0xd4, 0xf3, + 0xbf, 0x6c, 0x3b, 0x64, 0xae, 0x3d, 0x18, 0xe9, 0x8f, 0x0b, + 0x94, 0x6d, 0x4b, 0xb1, 0x7f, 0x15, 0x81, 0x1e, 0x6c, 0xdd, + 0xe4, 0xac, 0x86, 0xd3, 0x0e, 0x5f, 0x8a, 0xa5, 0xb5, 0x49, + 0x5d, 0x6d, 0xe7, 0x32, 0x55, 0x1c, 0xce, 0xa8, 0x72, 0xf5, + 0x30, 0x41, 0xf8, 0xfa, 0x20, 0xc6, 0xcb, 0x66, 0x9e, 0x27, + 0xa6, 0x60, 0xc1, 0x05, 0xc9, 0xce, 0x38, 0xbf, 0x6d, 0xd1, + 0x91, 0xe7, 0xb7, 0x77, 0x1a, 0xc8, 0x97, 0x70, 0xbe, 0xe5, + 0x0b, 0x52, 0xc0, 0xc7, 0x66, 0x6e, 0x80, 0x9e, 0xaa, 0x5b, + 0x3d, 0x9c, 0xdd, 0x43, 0x82, 0x14, 0xa2, 0xbe, 0x54, 0xbc, + 0x60, 0x39, 0xd9, 0x78, 0xa0, 0x43, 0x23, 0xff, 0xd0, 0xa8, + 0x5e, 0x7f, 0xf9, 0xdf, 0xe6, 0x18, 0x68, 0x4c, 0x05, 0x72, + 0xb8, 0x63, 0x0b, 0x7b, 0x7d, 0x0f, 0x0c, 0x5a, 0x9c, 0xe2, + 0x9e, 0x5b, 0x27, 0x06, 0x55, 0x5e, 0x69, 0x9c, 0xbb, 0xc7, + 0xa1, 0xff, 0xcc, 0xb3, 0x48, 0xda, 0x39, 0xd0, 0x37, 0xec, + 0x2e, 0x4a, 0x59, 0xdc, 0xeb, 0x0c, 0x38, 0x72, 0x68, 0xf9, + 0x82, 0xa0, 0x55, 0xd3, 0x3a, 0x04, 0x66, 0xd5, 0x4e, 0xe8, + 0xd2, 0x3b, 0x7f, 0xaa, 0x88, 0x63, 0x70, 0x2d, 0x7e, 0xe2, + 0x50, 0xc4, 0x54, 0x44, 0xf0, 0x83, 0xd3, 0x61, 0xb8, 0xfc, + 0x71, 0xa1, 0x64, 0x51, 0x52, 0x1d, 0x7f, 0xb7, 0xdd, 0x10, + 0x81, 0x3f, 0x40, 0x22, 0xb4, 0xa4, 0xef, 0x37, 0x49, 0xb6, + 0x91, 0x6b, 0xf7, 0x9e, 0x5f, 0xba, 0xda, 0x5a, 0xad, 0x31, + 0x5b, 0xe1, 0xd4, 0x07, 0xb3, 0xdd, 0x64, 0xfd, 0x98, 0xc3, + 0xf9, 0xbe, 0x6b, 0x25, 0xbd, 0xd8, 0x76, 0xc8, 0x9f, 0x7a, + 0x30, 0x11, 0x03, 0xb1, 0xee, 0x47, 0x02, 0x34, 0xf1, 0x3e, + 0xd0, 0x8f, 0x32, 0x06, 0xb9, 0x24, 0x58, 0xd5, 0x57, 0x0d, + 0x8e, 0x7e, 0xdb, 0x4c, 0x51, 0x7d, 0xf3, 0x70, 0xe2, 0xae, + 0xe7, 0x5b, 0xa1, 0x0a, 0x5a, 0xe3, 0xea, 0x9c, 0x6c, 0x31, + 0xfd, 0x2e, 0xc4, 0xcd, 0x85, 0xb4, 0x90, 0xd7, 0x8b, 0x2a, + 0x1c, 0xbe, 0xd7, 0x89, 0xa9, 0x92, 0xba, 0xda, 0x0d, 0x64, + 0xaa, 0x38, 0x5f, 0x93, 0xe4, 0x29, 0x60, 0x82, 0x33, 0x37, + 0x40, 0x4f, 0x55, 0xcc, 0xff, 0x4e, 0x8f, 0xc0, 0x41, 0x0a, + 0x51, 0x5f, 0x07, 0xce, 0x45, 0xb3, 0xbb, 0xc5, 0xcf, 0xd7, + 0x92, 0x19, 0xcb, 0x0e, 0x67, 0x54, 0x39, 0x9b, 0x18, 0xc1, + 0x7c, 0x7d, 0x10, 0x63, 0x84, 0x33, 0x4f, 0xf2, 0x53, 0x30, + 0x81, 0xe3, 0x85, 0x67, 0x21, 0x11, 0x4b, 0x91, 0x3e, 0x29, + 0xdd, 0xef, 0xa4, 0xfe, 0x6b, 0x42, 0xe9, 0x1a, 0x07, 0xc7, + 0x72, 0x63, 0x6e, 0x1b, 0x5c, 0x94, 0xb2, 0x7b, 0x15, 0x18, + 0x70, 0xe4, 0xd0, 0x31, 0xc7, 0x83, 0xa8, 0xbb, 0xc0, 0x72, + 0x71, 0xf0, 0x83, 0x86, 0x46, 0x3d, 0x63, 0x93, 0xbc, 0xfe, + 0x31, 0x7d, 0xd1, 0x97, 0xd5, 0x05, 0x9e, 0x71, 0xbc, 0xd2, + 0x07, 0x45, 0x10, 0x61, 0xaa, 0x0b, 0x6c, 0xb7, 0x29, 0xef, + 0xde, 0xba, 0x8f, 0x08, 0xa1, 0xfe, 0x20, 0x11, 0x5a, 0x52, + 0x96, 0xfa, 0xc5, 0x5b, 0xc6, 0x66, 0x79, 0xe0, 0x84, 0xf6, + 0x8b, 0x27, 0x5e, 0x41, 0xb9, 0x4f, 0x33, 0x5c, 0x12, 0xd7, + 0xa4, 0x3a, 0xfe, 0xad, 0x79, 0x20, 0xc1, 0x7e, 0x80, 0x44, + 0xab, 0x8b, 0x1d, 0x6e, 0x92, 0xaf, 0x3f, 0x71, 0x28, 0x62, + 0x2a, 0x22, 0x78, 0xa0, 0x88, 0xd1, 0x5c, 0x7e, 0xd9, 0xb1, + 0x32, 0xc9, 0xe0, 0xb9, 0x77, 0xc2, 0x01, 0x1a, 0x99, 0x1f, + 0x68, 0xa6, 0x19, 0x03, 0xbd, 0x12, 0x2c, 0x8b, 0x27, 0xb0, + 0x54, 0x1f, 0x3a, 0x41, 0xfc, 0x93, 0xc7, 0x23, 0x0f, 0x4e, + 0x58, 0x52, 0xb7, 0xae, 0x8d, 0xd5, 0x20, 0x17, 0xf6, 0x28, + 0x60, 0x80, 0xa0, 0x55, 0xf1, 0xd9, 0x8b, 0x94, 0x57, 0xf4, + 0x0c, 0x81, 0x3e, 0xdf, 0x08, 0xd0, 0x42, 0xf8, 0xc6, 0x79, + 0xc8, 0x18, 0xa1, 0x90, 0xa3, 0xd2, 0x82, 0xe5, 0xf0, 0x8f, + 0xfc, 0xcc, 0xd3, 0x46, 0xb6, 0xa3, 0x0b, 0xc7, 0x93, 0x20, + 0xac, 0xf3, 0xea, 0x99, 0x56, 0x93, 0x0d, 0xa2, 0xfa, 0x9b, + 0xcd, 0x02, 0xb5, 0x17, 0xad, 0xca, 0x3f, 0x30, 0xae, 0x1a, + 0xdf, 0xfc, 0x75, 0x98, 0xa2, 0xfa, 0x25, 0xe0, 0x07, 0x9f, + 0x0d, 0xb6, 0x81, 0x14, 0xb4, 0x05, 0x17, 0xfb, 0xd8, 0x62, + 0x39, 0x5c, 0x4b, 0x59, 0xc9, 0xab, 0xe3, 0x6d, 0xd5, 0x54, + 0x9a, 0x24, 0x8c, 0xf2, 0xec, 0xaf, 0x57, 0x75, 0xf9, 0x51, + 0x58, 0xf7, 0x12, 0xc3, 0x29, 0x94, 0x63, 0x33, 0xdd, 0x70, + 0x42, 0x7b, 0xa4, 0xf2, 0x2f, 0xc1, 0xbd, 0xc6, 0xf8, 0x2e, + 0x09, 0x8a, 0x49, 0x6d, 0xed, 0x8d, 0xcf, 0x47, 0xf4, 0x32, + 0xdf, 0x5f, 0xd5, 0x92, 0xd7, 0xf0, 0x94, 0x04, 0xe5, 0xa9, + 0x86, 0x0b, 0x07, 0x46, 0x49, 0x5d, 0xdb, 0xf4, 0x4f, 0x09, + 0xb5, 0x7e, 0xc4, 0x37, 0x42, 0x22, 0x96, 0xe1, 0x7c, 0x52, + 0x79, 0x1d, 0x8b, 0x3f, 0xd6, 0x84, 0x11, 0x34, 0x0e, 0x4d, + 0xe4, 0xc6, 0xdc, 0x36, 0xb8, 0xeb, 0xa7, 0xf6, 0x2a, 0x30, + 0xe0, 0x0b, 0x63, 0x62, 0x4d, 0xc5, 0x15, 0x2f, 0x18, 0x9f, + 0xa7, 0x1e, 0x28, 0x60, 0x78, 0x4f, 0x34, 0x2a, 0xf6, 0x6f, + 0xaf, 0x47, 0xb7, 0xb4, 0xf9, 0xbc, 0xda, 0x56, 0xc8, 0x62, + 0x9b, 0xd6, 0xfb, 0xad, 0x5a, 0x49, 0x8d, 0x81, 0xc8, 0x39, + 0xf3, 0x45, 0x31, 0xbf, 0xd6, 0x4a, 0xb9, 0x73, 0xec, 0x53, + 0xfd, 0xf4, 0x60, 0x22, 0x06, 0xa1, 0x1f, 0x8e, 0x04, 0x68, + 0x21, 0x7c, 0x63, 0xdd, 0x64, 0x0c, 0xb1, 0x48, 0xb0, 0x69, + 0x70, 0xbd, 0xda, 0x61, 0xe1, 0x0d, 0xad, 0xee, 0x34, 0x53, + 0xed, 0xe0, 0xbf, 0x09, 0x16, 0xa4, 0x9d, 0xea, 0xc9, 0x41, + 0x57, 0x6a, 0x98, 0xa2, 0x6b, 0x48, 0x93, 0xf9, 0x75, 0x97, + 0x10, 0x0f, 0x41, 0x93, 0x78, 0xa6, 0x7e, 0x66, 0x88, 0x23, + 0x5b, 0xb0, 0xe4, 0x82, 0xa8, 0x10, 0x56, 0x98, 0x75, 0xad, + 0x2b, 0xa8, 0xe7, 0x51, 0x7d, 0xac, 0x87, 0x01, 0xbb, 0xea, + 0xb7, 0x65, 0xfe, 0x18, 0x19, 0xae, 0x26, 0x40, 0xaf, 0xce, + 0x6a, 0x98, 0xbe, 0x36, 0xfc, 0x32, 0x57, 0xff, 0x0c, 0x95, + 0xc9, 0x56, 0xa9, 0x78, 0x8e, 0x12, 0x38, 0xe1, 0x48, 0xb7, + 0x43, 0x51, 0x2b, 0xe8, 0xe9, 0xd0, 0xaa, 0x65, 0x74, 0x08, + 0xcc, 0x69, 0x9c, 0x13, 0x67, 0x76, 0xfe, 0x97, 0xd3, 0xc6, + 0xe0, 0x5a, 0xfc, 0x07, 0xa0, 0x4b, 0xa8, 0x88, 0x23, 0xc5, + 0x65, 0xc2, 0xb3, 0x3b, 0xe2, 0x81, 0xc8, 0xa2, 0x4d, 0x12, + 0x46, 0x79, 0x76, 0xb6, 0xca, 0xdb, 0x9d, 0xc9, 0x2c, 0x9a, + 0x09, 0x80, 0xf5, 0x4a, 0xbf, 0x4a, 0x6c, 0x97, 0x6b, 0x77, + 0xb4, 0x73, 0x1f, 0x39, 0xca, 0xbd, 0x25, 0xa9, 0x4f, 0x1d, + 0x2a, 0x5e, 0x30, 0xfd, 0x8d, 0x3c, 0x50, 0xc0, 0xf0, 0x9e, + 0x68, 0x54, 0x2f, 0xde, 0x9d, 0x8e, 0x73, 0x0c, 0x34, 0x26, + 0xe3, 0x39, 0x5c, 0xd0, 0xe4, 0xdc, 0xdf, 0xe6, 0x06, 0x2d, + 0x4e, 0x71, 0x84, 0x44, 0xef, 0x01, 0xf8, 0xa4, 0xf2, 0x3a, + 0xd5, 0x7e, 0x6f, 0xcb, 0x22, 0x68, 0x1c, 0x9a, 0xd5, 0xe8, + 0x7e, 0xf1, 0x27, 0x80, 0x82, 0x3b, 0x45, 0xd3, 0xe9, 0x69, + 0x74, 0x7b, 0x0d, 0xf9, 0xc3, 0x76, 0x88, 0x29, 0x82, 0xaa, + 0x5b, 0x65, 0xed, 0x13, 0xef, 0x45, 0x3b, 0x30, 0xfa, 0x6b, + 0xaf, 0x75, 0x85, 0xc1, 0xca, 0x35, 0x4c, 0x51, 0xd4, 0x24, + 0xa8, 0x9d, 0xdb, 0xaa, 0x08, 0xe6, 0x2b, 0x31, 0x6a, 0xc0, + 0x32, 0x91, 0xbe, 0x6b, 0x01, 0x5a, 0xc7, 0x56, 0xf9, 0xc2, + 0x14, 0x7c, 0x86, 0x9a, 0x5b, 0x7b, 0x45, 0x3d, 0xed, 0xaf, + 0xf4, 0x35, 0xf2, 0xcf, 0x4d, 0x50, 0xcd, 0xbd, 0xa7, 0x8b, + 0x10, 0xea, 0x7b, 0x14, 0x30, 0x40, 0x50, 0xcb, 0x99, 0x8d, + 0xa4, 0x4a, 0xca, 0x7a, 0xb1, 0x15, 0xe6, 0x32, 0xde, 0x3e, + 0xe9, 0x1e, 0xf8, 0x0b, 0x9f, 0xa1, 0xeb, 0x01, 0x3d, 0xe8, + 0xb2, 0xa4, 0x08, 0x75, 0xdc, 0x0a, 0x18, 0x20, 0x28, 0x84, + 0xad, 0xa7, 0x52, 0x25, 0x65, 0x3d, 0x5b, 0x8c, 0xb0, 0xa1, + 0xd3, 0x9c, 0x13, 0x85, 0x35, 0x09, 0x2a, 0xb6, 0x46, 0xcb, + 0x02, 0xd8, 0x46, 0x5d, 0x3d, 0x15, 0xc5, 0xa3, 0x47, 0xf4, + 0xc9, 0xa9, 0x2f, 0x8c, 0xcf, 0x44, 0x6f, 0x03, 0xd3, 0x49, + 0x61, 0x7f, 0x23, 0xe8, 0xa3, 0x47, 0x26, 0x0e, 0x8d, 0x65, + 0xc5, 0x33, 0xbd, 0x90, 0x9f, 0x34, 0x7d, 0x3b, 0xea, 0xf3, + 0x87, 0x37, 0x4a, 0x03, 0x0e, 0xfd, 0x1a, 0xaf, 0xc1, 0x28, + 0xfd, 0x68, 0xfa, 0x76, 0x17, 0x25, 0xcd, 0x6e, 0x94, 0x06, + 0x1c, 0x39, 0x34, 0x9d, 0x41, 0x50, 0xd4, 0x87, 0x24, 0xcc, + 0x98, 0x2d, 0x6c, 0x90, 0xb4, 0x17, 0x46, 0x6b, 0xa2, 0x67, + 0x84, 0x0b, 0x0f, 0x30, 0xd0, 0x98, 0x0a, 0xe4, 0xb3, 0xc6, + 0x16, 0xf6, 0xfa, 0x1e, 0x18, 0xb4, 0xfb, 0x07, 0x9c, 0x85, + 0x93, 0x7c, 0xe8, 0xc7, 0x76, 0x09, 0x9a, 0x8c, 0x3c, 0xfb, + 0xa3, 0x8b, 0x99, 0xfd, 0x2f, 0x4e, 0xc1, 0x34, 0x8b, 0x60, + 0x80, 0x82, 0x43, 0xcc, 0x3e, 0x5e, 0x27, 0xb2, 0x75, 0x32, + 0x9b, 0x4b, 0xd6, 0xcf, 0x53, 0x02, 0xb9, 0xde, 0x08, 0x95, + 0xf7, 0xf5, 0xc4, 0xdf, 0xa0, 0x66, 0x43, 0x4d, 0xcc, 0xdc, + 0xc3, 0xff, 0x97, 0xb6, 0x7a, 0xfb, 0x79, 0x86, 0xc7, 0x28, + 0x87, 0xbf, 0xef, 0x89, 0xa7, 0x5a, 0x0b, 0xfe, 0x2a, 0xd9, + 0x7e, 0x50, 0xe3, 0x1d, 0xa5, 0xa6, 0xd7, 0x8c, 0xd9, 0x69, + 0x40, 0x2e, 0x2f, 0x50, 0xc0, 0xc3, 0x83, 0xaa, 0x21, 0x71, + 0xd5, 0xeb, 0xae, 0x2b, 0x79, 0x2c, 0x15, 0x77, 0xef, 0x81, + 0x3f, 0x54, 0x41, 0x78, 0x73, 0xf2, 0x16, 0xf5, 0x5d, 0xca, + 0xb6, 0xdb, 0xa3, 0x81, 0x65, 0xfb, 0x26, 0xc9, 0x6a, 0x12, + 0x54, 0xaf, 0x8c, 0x55, 0x04, 0x73, 0x53, 0x72, 0x25, 0x8a, + 0x62, 0xbd, 0x6f, 0x94, 0xb1, 0xe6, 0x1b, 0xa6, 0x39, 0x2b, + 0xc0, 0x44, 0x7f, 0x8d, 0x0a, 0xf9, 0xeb, 0xe9, 0x1e, 0x28, + 0x22, 0xa5, 0x17, 0xfe, 0xa7, 0xbd, 0xed, 0xa3, 0xc1, 0xa8, + 0x3c, 0x53, 0x3f, 0x33, 0x44, 0xf0, 0xcc, 0x58, 0x72, 0x41, + 0x54, 0x08, 0x2b, 0x4c, 0xf0, 0x86, 0x9e, 0x94, 0xa0, 0x58, + 0x61, 0x3d, 0xa3, 0xbb, 0x7b, 0x23, 0x43, 0x11, 0x6b, 0x70, + 0x23, 0xcf, 0xff, 0xeb, 0x83, 0xb0, 0xc2, 0x7a, 0x85, 0xb5, + 0xf6, 0x46, 0x86, 0x22, 0xd6, 0xe0, 0xe7, 0x77, 0x32, 0x71, + 0xba, 0xdf, 0x56, 0xc8, 0xfa, 0xbf, 0xd2, 0x0d, 0xda, 0x46, + 0x15, 0x10, 0x25, 0x6e, 0xe0, 0x65, 0x87, 0xd8, 0xe3, 0x06, + 0xe6, 0x68, 0x92, 0x4a, 0x37, 0x6a, 0x66, 0x89, 0x5e, 0x9c, + 0x41, 0x68, 0xd5, 0xc0, 0xc3, 0xc7, 0x86, 0x5b, 0x7c, 0xbc, + 0x4e, 0xa7, 0xea, 0x64, 0xb5, 0x6a, 0x4d, 0xc6, 0x67, 0xcf, + 0xd7, 0xf7, 0xba, 0x9d, 0x66, 0xa9, 0x35, 0x71, 0x5c, 0xa6, + 0x1e, 0x60, 0x63, 0xf3, 0x14, 0x0b, 0xa5, 0x4f, 0x2c, 0x2f, + 0x37, 0x3c, 0x30, 0xab, 0x35, 0x0e, 0xa2, 0x9b, 0xe1, 0x23, + 0x7d, 0x48, 0xe0, 0x02, 0xe3, 0x99, 0xcf, 0x87, 0xac, 0x26, + 0x22, 0xc6, 0xdf, 0xc8, 0x5f, 0xa0, 0x2b, 0x38, 0xe1, 0xbf, + 0xe0, 0x77, 0x45, 0x7d, 0x64, 0xa3, 0x1e, 0x42, 0xa6, 0xe4, + 0x4a, 0xd7, 0xc4, 0xb9, 0xde, 0xeb, 0xa1, 0x0f, 0x36, 0x8f, + 0x72, 0x56, 0x43, 0x88, 0xfe, 0xd9, 0x14, 0x31, 0x15, 0x11, + 0x3c, 0x50, 0x44, 0x89, 0x2e, 0x3f, 0x8d, 0xb9, 0x19, 0x85, + 0xac, 0xc4, 0x6b, 0x86, 0xc8, 0x01, 0xbd, 0x6f, 0x04, 0xab, + 0x9a, 0x9b, 0x62, 0x8e, 0x50, 0x33, 0x22, 0xa0, 0xa5, 0xd6, + 0x3c, 0x1d, 0x2c, 0xd1, 0x74, 0x71, 0x59, 0x44, 0x50, 0x3e, + 0x5f, 0x12, 0xf9, 0x17, 0x51, 0x82, 0xae, 0xd4, 0xf3, 0x87, + 0xd6, 0x90, 0xe5, 0x31, 0xea, 0xed, 0x20, 0x1e, 0xe2, 0x67, + 0xc3, 0xb8, 0xbc, 0x83, 0x86, 0x8a, 0x49, 0xed, 0x84, 0x07, + 0xd2, 0x2a, 0xfd, 0xac, 0x4a, 0xdc, 0x03, 0xca, 0xcd, 0x73, + 0x05, 0x0c, 0x0f, 0xd0, 0xe7, 0x94, 0x6e, 0xd4, 0xcc, 0xd1, + 0xbc, 0xfb, 0x82, 0xd0, 0x69, 0x43, 0x45, 0x4d, 0xcf, 0xb6, + 0xf8, 0xbb, 0x9c, 0x8d, 0x17, 0xc8, 0x35, 0x51, 0x09, 0x33, + 0x26, 0x9a, 0x1b, 0x24, 0x2d, 0x75, 0xf0, 0x6a, 0xc9, 0x69, + 0x21, 0x72, 0xca, 0xe7, 0x47, 0x3f, 0x8c, 0x26, 0xc9, 0xdf, + 0x98, 0x38, 0x71, 0x57, 0x92, 0xcc, 0xb1, 0x05, 0xee, 0xe6, + 0xfd, 0x67, 0xb4, 0x53, 0xc4, 0x72, 0x8f, 0x94, 0x4c, 0x1f, + 0x73, 0xba, 0x5e, 0x7e, 0x78, 0x43, 0x4f, 0x4a, 0x50, 0x2c, + 0xd1, 0xff, 0xb0, 0xbc, 0xdc, 0xf0, 0xc0, 0xe9, 0xd4, 0x38, + 0x05, 0x10, 0xf1, 0xc9, 0x06, 0x5c, 0xd0, 0x42, 0xb3, 0x52, + 0x56, 0x0a, 0x08, 0x6c, 0xe8, 0xbc, 0x6b, 0xcd, 0x48, 0x5b, + 0xf3, 0x5a, 0xd8, 0xe3, 0xab, 0x2e, 0x8c, 0xd6, 0x87, 0xce, + 0xcb, 0x16, 0x51, 0xac, 0x91, 0xf0, 0xdf, 0x24, 0x70, 0x01, + 0x90, 0xad, 0x86, 0xa2, 0x56, 0x13, 0x11, 0x63, 0xe1, 0xd6, + 0x2d, 0xff, 0xbe, 0xb7, 0x77, 0xb4, 0x99, 0x62, 0xb6, 0x01, + 0x6b, 0x0e, 0xa5, 0x79, 0x59, 0x52, 0x04, 0xdb, 0x6e, 0x05, + 0x0c, 0x10, 0x14, 0x42, 0xb7, 0xb2, 0x29, 0xf3, 0xd3, 0xff, + 0xa3, 0xf4, 0xbb, 0x1e, 0xc2, 0xe5, 0x0e, 0xa9, 0x12, 0x5d, + 0x60, 0x85, 0x7a, 0x3a, 0xab, 0x34, 0xf2, 0x58, 0x2a, 0xee, + 0x1d, 0xc1, 0x7e, 0xa8, 0x82, 0xf0, 0xe6, 0x27, 0x2c, 0x29, + 0xba, 0x57, 0x71, 0xd2, 0x80, 0x5c, 0x5e, 0xa0, 0x43, 0x45, + 0xc5, 0x97, 0x42, 0xe2, 0x69, 0x15, 0x9f, 0x56, 0x56, 0x62, + 0xd4, 0x43, 0x64, 0xe1, 0xbf, 0xd6, 0x02, 0xb4, 0x4d, 0xac, + 0x31, 0x47, 0x28, 0xf8, 0x11, 0x50, 0xb3, 0x6b, 0x1e, 0xef, + 0x16, 0x89, 0x3a, 0xd9, 0xcd, 0x22, 0x28, 0x1f, 0xce, 0x09, + 0x6a, 0xa2, 0x12, 0x66, 0x4c, 0xf7, 0x36, 0x48, 0x5a, 0xea, + 0x23, 0xd4, 0x51, 0xd2, 0x42, 0xe4, 0x89, 0xaa, 0x8b, 0xe3, + 0x4f, 0xd9, 0x5e, 0x69, 0xe2, 0xc3, 0x08, 0xd1, 0x55, 0xe4, + 0x36, 0xba, 0x94, 0x7b, 0x06, 0x57, 0x59, 0xe6, 0x0a, 0x18, + 0x1e, 0x63, 0x0d, 0xeb, 0xdc, 0x6b, 0x5b, 0x61, 0x65, 0x92, + 0xc2, 0xfe, 0x46, 0x13, 0x85, 0x8e, 0x4c, 0x1c, 0xd9, 0xca, + 0x49, 0x66, 0xb9, 0xe3, 0x8c, 0xba, 0x7a, 0x2a, 0x49, 0x85, + 0x8e, 0x2b, 0x51, 0x91, 0x5e, 0xdb, 0x5d, 0x88, 0xde, 0x06, + 0xbb, 0x35, 0xc7, 0x63, 0xd2, 0x86, 0x8a, 0x9a, 0x5d, 0xaf, + 0x33, 0xb5, 0xfb, 0xd9, 0x2e, 0x53, 0x77, 0x73, 0x9f, 0xd2, + 0x5a, 0xc8, 0x62, 0x39, 0xa6, 0x4a, 0x26, 0xee, 0xd8, 0x5d, + 0x2f, 0x3f, 0x3c, 0xc0, 0xc6, 0x25, 0x28, 0x16, 0x89, 0x9e, + 0x58, 0x5e, 0x6e, 0x78, 0x60, 0x95, 0x6a, 0x1c, 0x7b, 0xf2, + 0xa1, 0x0d, 0x52, 0x18, 0x20, 0xc1, 0x60, 0x33, 0xee, 0xf6, + 0x79, 0xcd, 0x8c, 0xed, 0x28, 0x80, 0x84, 0x87, 0x30, 0xa5, + 0x4f, 0x55, 0xd1, 0xd5, 0xf5, 0x50, 0x40, 0xe6, 0x4c, 0xa9, + 0xab, 0x0a, 0x2e, 0x35, 0x73, 0xc4, 0x72, 0xb8, 0x96, 0xb2, + 0x51, 0x95, 0x05, 0xda, 0x69, 0xa8, 0xd2, 0x26, 0x3b, 0x42, + 0x9c, 0x45, 0x4d, 0xec, 0xd7, 0xca, 0x22, 0x67, 0x13, 0x2f, + 0x34, 0x62, 0x31, 0x2e, 0xa2, 0xc7, 0x9f, 0x6b, 0x25, 0xcd, + 0x6f, 0xe3, 0x09, 0x62, 0x17, 0x19, 0x40, 0x3c, 0xde, 0xa7, + 0x05, 0x9d, 0x94, 0x95, 0x0f, 0x14, 0x11, 0xb3, 0xea, 0x7f, + 0xb2, 0xbf, 0x97, 0xb0, 0xc4, 0xb8, 0xcd, 0x9a, 0x39, 0x6f, + 0x94, 0xb2, 0x7f, 0x0a, 0x24, 0x4b, 0x5c, 0x64, 0xc3, 0xf0, + 0x5f, 0xf3, 0x1b, 0x55, 0x6a, 0x6d, 0x2d, 0x6c, 0x77, 0x9f, + 0xd3, 0xbe, 0x98, 0xbb, 0x63, 0x96, 0xcc, 0x46, 0x58, 0xb1, + 0x88, 0x4e, 0xe8, 0xa3, 0xfb, 0xe5, 0x15, 0x5b, 0x23, 0x84, + 0x01, 0x6c, 0xcf, 0xf7, 0xb6, 0xf6, 0x8a, 0x7a, 0x19, 0x9d, + 0x2b, 0x6a, 0x27, 0x5d, 0x9a, 0xa0, 0x59, 0xb9, 0x76, 0x1c, + 0xc5, 0xef, 0xe5, 0x65, 0x8c, 0x92, 0x57, 0x8e, 0x89, 0xec, + 0x0e, 0x41, 0xa6, 0xcd, 0x2c, 0xff, 0x2f, 0x73, 0x89, 0x54, + 0x71, 0xbc, 0x93, 0x43, 0x0c, 0x58, 0x9e, 0x96, 0x2d, 0xe7, + 0xb8, 0x84, 0x29, 0x24, 0xd0, 0xb2, 0x7b, 0xa4, 0x8d, 0x20, + 0x01, 0xb3, 0x42, 0xfd, 0x76, 0x86, 0xd8, 0x06, 0x1a, 0x13, + 0x90, 0xfd, 0x2e, 0x68, 0x72, 0x6e, 0x8e, 0x73, 0x03, 0xf7, + 0x27, 0xd9, 0x2e, 0x21, 0x9b, 0x09, 0x34, 0xcd, 0x6e, 0x29, + 0xb2, 0x08, 0x91, 0x5c, 0xf1, 0xae, 0xfc, 0xc0, 0x36, 0xe0, + 0xe7, 0x74, 0x24, 0xae, 0xea, 0x1a, 0xfd, 0xfa, 0xc2, 0x6c, + 0x70, 0x4d, 0x79, 0xa7, 0xdb, 0xb7, 0xf4, 0x54, 0x92, 0xc9, + 0xdf, 0x56, 0xa2, 0xe1, 0xbc, 0x75, 0xba, 0xd3, 0x7f, 0x0c, + 0x69, 0x13, 0xfc, 0x21, 0x4e, 0xc3, 0xc7, 0x76, 0x8a, 0x65, + 0x11, 0xd2, 0xe8, 0xf6, 0x1a, 0x31, 0xb3, 0xcb, 0x52, 0x48, + 0x63, 0xa7, 0xf6, 0x8b, 0xd9, 0x40, 0x02, 0xa5, 0x84, 0x39, + 0xec, 0xcf, 0x14, 0x40, 0x42, 0xa2, 0x18, 0xb3, 0xc6, 0xcb, + 0x89, 0x8b, 0x9b, 0x28, 0x20, 0x73, 0x26, 0xb5, 0x95, 0x14, + 0x5c, 0x6a, 0xe6, 0x4b, 0xe4, 0xb3, 0xef, 0xa7, 0xa2, 0xe9, + 0x0a, 0x77, 0xd2, 0x93, 0xbe, 0x25, 0x36, 0xaa, 0xd4, 0xda, + 0x5a, 0xd8, 0xee, 0xfd, 0x65, 0xbf, 0xf3, 0xb5, 0xc6, 0xef, + 0x62, 0x5c, 0x87, 0x4d, 0xfd, 0xd6, 0x4a, 0x59, 0xde, 0x05, + 0x12, 0xc4, 0x2e, 0x32, 0x80, 0x78, 0xa1, 0x2a, 0x0f, 0x64, + 0x7f, 0x7c, 0x11, 0x3c, 0x33, 0x16, 0xfd, 0x81, 0x15, 0x02, + 0x7a, 0x13, 0x3b, 0x0e, 0x83, 0x96, 0x93, 0xd3, 0x46, 0x49, + 0xca, 0x47, 0xa5, 0x76, 0x07, 0xc1, 0x53, 0x87, 0x16, 0x9e, + 0xf6, 0xd8, 0xa5, 0x2a, 0xd9, 0x5e, 0xa8, 0xc0, 0x06, 0x2c, + 0x4f, 0x4b, 0xf7, 0x92, 0x66, 0x23, 0x2c, 0xb9, 0x44, 0x27, + 0x74, 0xb0, 0x9c, 0x93, 0xeb, 0xcc, 0xf0, 0x42, 0xe1, 0x36, + 0xe9, 0x28, 0xb8, 0xd4, 0x0f, 0x96, 0x0b, 0xa5, 0x1d, 0x8d, + 0x87, 0x11, 0x14, 0xee, 0x67, 0xe5, 0x5c, 0x42, 0xf5, 0x12, + 0x68, 0x59, 0xdc, 0x52, 0xa7, 0x10, 0xe1, 0xb8, 0x21, 0x9f, + 0x3b, 0x43, 0x6c, 0x03, 0x0d, 0xe8, 0x48, 0x9f, 0x17, 0x34, + 0x39, 0x37, 0x47, 0xd8, 0xe0, 0x9a, 0xf2, 0x8d, 0x6d, 0x6c, + 0x57, 0xd5, 0xf7, 0x32, 0xf9, 0x9f, 0xc8, 0xf3, 0xe8, 0xda, + 0x36, 0x86, 0x7b, 0x7f, 0xad, 0xab, 0x31, 0xbb, 0x77, 0xac, + 0x53, 0xc4, 0xf5, 0x6f, 0x35, 0x99, 0xb4, 0x92, 0xd9, 0xc1, + 0x37, 0x8f, 0xbd, 0x49, 0x9b, 0x03, 0x04, 0xb1, 0x0c, 0x3e, + 0x6d, 0x6e, 0xa6, 0x51, 0xf0, 0x55, 0x61, 0xed, 0x69, 0x0a, + 0xff, 0xe2, 0xbb, 0x67, 0x0e, 0x8a, 0x20, 0xc2, 0x97, 0x16, + 0xd8, 0xad, 0x4b, 0xb3, 0x59, 0xf7, 0x72, 0xde, 0xeb, 0xa7, + 0xfe, 0x14, 0x48, 0x96, 0xb8, 0xc8, 0x45, 0x23, 0xb9, 0xeb, + 0x73, 0x19, 0x6f, 0x1f, 0x95, 0x0f, 0x7c, 0xe4, 0xae, 0xb1, + 0x94, 0xe1, 0xff, 0x74, 0xe3, 0x08, 0x99, 0x85, 0x03, 0x2e, + 0x68, 0x21, 0xb8, 0x29, 0x2b, 0x05, 0x04, 0x36, 0x74, 0x5e, + 0xba, 0x5a, 0x9d, 0x5e, 0x6d, 0x2b, 0x64, 0x31, 0xac, 0x6b, + 0x9c, 0xb7, 0x2d, 0xc5, 0xa7, 0xa1, 0xf1, 0xe9, 0xc4, 0xa9, + 0x1f, 0xf5, 0x8f, 0x96, 0x52, 0x7f, 0xd4, 0x21, 0x95, 0x0d, + 0xe2, 0x82, 0xa0, 0x45, 0x55, 0x59, 0xc0, 0xd1, 0xff, 0x97, + 0xc2, 0xd2, 0x52, 0x83, 0xc3, 0x1e, 0xf3, 0xe1, 0x85, 0x2b, + 0xb5, 0x3c, 0x47, 0x09, 0x1c, 0x91, 0x24, 0xba, 0xc0, 0xc9, + 0xf4, 0x74, 0x95, 0x68, 0x83, 0x8a, 0xaa, 0xb2, 0x43, 0x61, + 0x3d, 0xed, 0x47, 0x67, 0xa4, 0xc5, 0x45, 0x3c, 0x25, 0x01, + 0xda, 0xd8, 0xae, 0x69, 0x2d, 0x64, 0x31, 0xfd, 0x53, 0x25, + 0x13, 0x77, 0x6c, 0xcf, 0xf6, 0xfe, 0x47, 0x32, 0x67, 0x28, + 0x7a, 0x0e, 0xa9, 0x5f, 0x38, 0x6d, 0x80, 0x8e, 0x19, 0x58, + 0xe6, 0xf1, 0xc5, 0xd7, 0x97, 0xa7, 0x86, 0xc2, 0x7a, 0x19, + 0x8e, 0xce, 0x8b, 0x49, 0x8a, 0x78, 0x4a, 0x02, 0xb0, 0x7a, + 0xbc, 0x0f, 0x61, 0x93, 0x07, 0xb5, 0x09, 0xcf, 0x30, 0xa3, + 0x3d, 0x1d, 0xb4, 0x1a, 0x33, 0xf0, 0x16, 0xbd, 0x22, 0xf2, + 0x3a, 0x58, 0x4e, 0xa8, 0x94, 0x66, 0x78, 0x21, 0x91, 0x1b, + 0xfa, 0xa6, 0xbf, 0xc5, 0xac, 0xe0, 0x02, 0xb9, 0x06, 0x1f, + 0xd7, 0x37, 0x53, 0xc9, 0x78, 0xcb, 0x96, 0xa5, 0xb2, 0x2d, + 0xe4, 0x7f, 0x15, 0x8d, 0x3f, 0x28, 0x90, 0xef, 0xb3, 0x53, + 0x8a, 0x46, 0x6f, 0xb2, 0xe3, 0xaf, 0x4a, 0xab, 0xe6, 0x0a, + 0xe9, 0xb8, 0x75, 0xde, 0x59, 0xbe, 0xaa, 0x58, 0x6e, 0xdd, + 0xb9, 0x92, 0xf5, 0x06, 0x08, 0xa1, 0x18, 0x7c, 0xda, 0xdc, + 0x8f, 0xa2, 0x23, 0xaa, 0xc2, 0x19, 0xd2, 0x14, 0x3d, 0x07, + 0xb5, 0xce, 0x1c, 0xd7, 0x40, 0x47, 0xed, 0x2c, 0x73, 0x99, + 0xf6, 0x27, 0x81, 0x1a, 0xa4, 0x30, 0x40, 0x41, 0xc0, 0x66, + 0x1f, 0x2f, 0xf2, 0x59, 0xdb, 0x19, 0x50, 0xc3, 0xcb, 0xcd, + 0x60, 0x89, 0x9e, 0xaa, 0x61, 0x69, 0x29, 0xa0, 0x80, 0x0f, + 0x98, 0x91, 0xff, 0xb6, 0x4e, 0x0c, 0xaa, 0xbc, 0xd2, 0xfb, + 0xb5, 0x4d, 0x81, 0x3d, 0x5b, 0xa5, 0x90, 0x77, 0x5d, 0x2d, + 0xaf, 0x2f, 0xd7, 0xf4, 0x32, 0xf9, 0x56, 0xd4, 0x4e, 0xba, + 0xf7, 0x83, 0xb2, 0xb1, 0xa9, 0xd4, 0x9a, 0x4f, 0xce, 0x5d, + 0x6d, 0x2d, 0xb7, 0xf9, 0xcc, 0x91, 0x6a, 0xe2, 0xb8, 0x8f, + 0x8e, 0x64, 0xce, 0x50, 0xf4, 0x1c, 0x91, 0xbe, 0x70, 0xda, + 0xc3, 0xdf, 0x32, 0xb0, 0x0f, 0x21, 0x17, 0xf1, 0xac, 0xe5, + 0x1a, 0x87, 0x37, 0xf5, 0x59, 0x04, 0xa9, 0x2e, 0x99, 0x57, + 0x7e, 0x60, 0x1b, 0x70, 0x92, 0x3a, 0x12, 0x57, 0x75, 0x0d, + 0x9f, 0x7d, 0x61, 0x36, 0x38, 0xc7, 0xdd, 0xb2, 0x97, 0xca, + 0xe8, 0x10, 0x5b, 0xd2, 0xfb, 0x26, 0xce, 0xec, 0x3f, 0xed, + 0x65, 0x4f, 0x03, 0xb4, 0x7d, 0x53, 0xbe, 0x83, 0x56, 0x70, + 0x01, 0xbd, 0x03, 0xee, 0x8a, 0xfa, 0xc8, 0x85, 0x3c, 0x84, + 0xec, 0x38, 0x49, 0x1d, 0x09, 0xca, 0xdb, 0xe7, 0xae, 0xdf, + 0xd1, 0x1b, 0x1c, 0x82, 0x8f, 0x59, 0x58, 0x3d, 0x5e, 0xe6, + 0xd1, 0xa8, 0xe2, 0xbb, 0xe5, 0x86, 0x18, 0xb0, 0xff, 0xef, + 0x5a, 0x0d, 0xf7, 0x48, 0xdb, 0x27, 0x1b, 0x9d, 0xae, 0xea, + 0x31, 0xa2, 0xb0, 0x2d, 0x24, 0x45, 0x52, 0xeb, 0x1f, 0x0f, + 0x39, 0xce, 0xab, 0xa6, 0x4b, 0xe4, 0xdd, 0xeb, 0x98, 0x3e, + 0xe6, 0xb7, 0xbc, 0xfc, 0xfb, 0xc9, 0xe5, 0xf8, 0x13, 0x4d, + 0xec, 0x12, 0xf7, 0xdb, 0x78, 0x35, 0x85, 0xd5, 0xf1, 0x39, + 0x7c, 0x3c, 0xe4, 0xbe, 0xe9, 0xdd, 0xef, 0x16, 0xf2, 0x2a, + 0x25, 0xf8, 0x1e, 0x99, 0xb5, 0x76, 0x09, 0x91, 0xcf, 0x16, + 0x0e, 0x8c, 0x92, 0xba, 0x75, 0x2b, 0x9e, 0x12, 0xa9, 0xfc, + 0x4b, 0x6e, 0x0d, 0xee, 0x64, 0xe2, 0xb7, 0x7d, 0xac, 0x53, + 0x37, 0xbd, 0x67, 0x1a, 0x77, 0x8c, 0x2a, 0x20, 0x7a, 0x9d, + 0xfb, 0x30, 0xed, 0xb5, 0xce, 0x6a, 0x91, 0xf7, 0x41, 0xf4, + 0xaf, 0xd1, 0x05, 0x1f, 0x67, 0x4c, 0x76, 0x84, 0xfb, 0x8a, + 0x9a, 0x1b, 0x6d, 0x57, 0x44, 0xce, 0x26, 0x5e, 0x68, 0xc4, + 0x45, 0xec, 0xd3, 0x52, 0xc7, 0x97, 0xb6, 0xca, 0x19, 0x26, + 0x1d, 0x8a, 0x76, 0x60, 0x37, 0xd6, 0x87, 0xf5, 0x01, 0x46, + 0xfa, 0x90, 0x03, 0x04, 0x05, 0xf1, 0x5d, 0xcd, 0x9b, 0x4c, + 0x44, 0x4f, 0xdc, 0x79, 0xb1, 0xe7, 0x29, 0x0c, 0x10, 0x81, + 0x30, 0xf8, 0x77, 0x7b, 0xdd, 0x87, 0x46, 0x97, 0xe8, 0x47, + 0xe2, 0xe9, 0xb0, 0x3b, 0xe5, 0x0e, 0xec, 0x49, 0x28, 0x13, + 0xc2, 0xf2, 0xee, 0x17, 0x4f, 0xcc, 0xf2, 0x03, 0xcb, 0x2f, + 0xd5, 0x4e, 0xbc, 0x82, 0xb1, 0x9e, 0x66, 0xb8, 0x24, 0x6d, + 0x1d, 0xd1, 0x8d, 0xb4, 0x16, 0x3f, 0x54, 0x71, 0xfc, 0xa0, + 0x05, 0x3a, 0x89, 0x8f, 0x6d, 0xdb, 0x4e, 0xa3, 0xa8, 0x3e, + 0x74, 0x82, 0x3b, 0xe5, 0x4d, 0x46, 0x1e, 0x9c, 0xb0, 0xa4, + 0xad, 0x9f, 0x04, 0x7f, 0xab, 0xf4, 0xb9, 0xf1, 0x3e, 0xe9, + 0x42, 0x96, 0xf9, 0x08, 0xde, 0x70, 0x61, 0x4e, 0xeb, 0xf6, + 0x0c, 0xae, 0xb2, 0x0f, 0x14, 0x30, 0x3c, 0xc6, 0x1a, 0x15, + 0x7b, 0xd6, 0xb6, 0xc2, 0xf8, 0x78, 0x0b, 0xbf, 0x11, 0x79, + 0x1d, 0x2c, 0x27, 0x54, 0x4a, 0x33, 0x3c, 0xf1, 0xa9, 0xec, + 0xf3, 0x37, 0x70, 0xd3, 0xa2, 0x6c, 0x90, 0x03, 0x73, 0x34, + 0x49, 0x25, 0xfa, 0x35, 0x33, 0xa5, 0x3e, 0x1e, 0x72, 0x5f, + 0x95, 0x8f, 0x96, 0x0b, 0x79, 0x15, 0xf3, 0x7c, 0x0f, 0xad, + 0xbb, 0x3b, 0x3d, 0xaf, 0x9c, 0x18, 0x97, 0xbb, 0x67, 0x35, + 0xa9, 0x9a, 0xc1, 0x7a, 0xb6, 0x89, 0xe3, 0xee, 0xbd, 0x94, + 0xd8, 0xed, 0xd6, 0xee, 0xab, 0xe6, 0x3e, 0x72, 0x57, 0xb9, + 0x4a, 0x91, 0x9e, 0x3a, 0x8a, 0x1b, 0x65, 0xa4, 0x4d, 0xed, + 0xaf, 0x57, 0x32, 0x4c, 0x3a, 0xd7, 0xec, 0xc0, 0x6e, 0x6f, + 0x88, 0xc5, 0xd1, 0xde, 0xf0, 0x74, 0xb0, 0xc2, 0x13, 0x07, + 0xa7, 0xd3, 0x83, 0xf8, 0xbf, 0x48, 0xdd, 0x16, 0xeb, 0xda, + 0x96, 0xa1, 0xfe, 0x2a, 0xc1, 0x3c, 0xd8, 0x79, 0x0b, 0x9b, + 0xcf, 0x65, 0xcd, 0x29, 0x02, 0x8c, 0x37, 0xe3, 0x06, 0x08, + 0x0a, 0x21, 0xba, 0x59, 0xf5, 0x98, 0x88, 0x9e, 0x0b, 0x4f, + 0x7b, 0x6c, 0xb3, 0x15, 0x8d, 0x2f, 0x54, 0x60, 0x03, 0x16, + 0xc6, 0xc4, 0x9a, 0x49, 0x13, 0x8e, 0x07, 0x11, 0xa3, 0x76, + 0x09, 0x1c, 0x1b, 0x92, 0x50, 0x26, 0x47, 0x27, 0x1f, 0x2e, + 0x98, 0xfa, 0x38, 0x88, 0x51, 0x36, 0x48, 0xe0, 0xd8, 0x1a, + 0xc5, 0xf3, 0x7d, 0xfb, 0xf8, 0xb3, 0x02, 0xde, 0xb4, 0x7a, + 0xbd, 0x99, 0x1f, 0x95, 0x21, 0x4b, 0x9d, 0x04, 0x6f, 0x38, + 0xd1, 0x27, 0x93, 0xb5, 0x43, 0xe4, 0xe2, 0x23, 0xc5, 0xcf, + 0x8c, 0x7a, 0xc6, 0xe5, 0xbb, 0x3f, 0x62, 0xfa, 0x80, 0x3b, + 0x44, 0xf5, 0x41, 0x55, 0xcc, 0xd3, 0x97, 0xe8, 0x96, 0xc3, + 0xfc, 0x18, 0x7d, 0xd4, 0x90, 0x04, 0xad, 0xa3, 0xe0, 0x17, + 0x34, 0xf1, 0x5c, 0xf5, 0xf4, 0xe3, 0x02, 0x1b, 0x3a, 0x2f, + 0xd0, 0xf8, 0x8f, 0x38, 0x21, 0xdc, 0x52, 0x79, 0xf6, 0x81, + 0xbf, 0x63, 0x7c, 0x17, 0xe5, 0x45, 0x24, 0x01, 0xba, 0x58, + 0x38, 0x75, 0x0d, 0xad, 0x17, 0xac, 0x3d, 0x48, 0xe1, 0x76, + 0xef, 0x7b, 0x34, 0x3e, 0x53, 0x0e, 0x99, 0x37, 0xf5, 0x8f, + 0xdc, 0xb1, 0x5f, 0x68, 0x1f, 0x75, 0xa8, 0x80, 0xcb, 0x88, + 0x1d, 0x02, 0x33, 0x8b, 0x27, 0x74, 0x69, 0xfc, 0xde, 0x55, + 0x44, 0xd0, 0x38, 0xf7, 0xed, 0x57, 0x13, 0x20, 0xb6, 0x67, + 0x35, 0x4c, 0x5f, 0x1b, 0x7e, 0x19, 0xca, 0x9e, 0x06, 0xab, + 0xf4, 0xf9, 0x35, 0x60, 0x19, 0xa9, 0x5f, 0xd4, 0xe1, 0x2d, + 0x82, 0x2b, 0x9d, 0x61, 0x0a, 0x3e, 0xce, 0x98, 0xec, 0xcb, + 0x35, 0xd7, 0xf7, 0x36, 0xda, 0xae, 0x88, 0x5f, 0x4c, 0xbc, + 0xd0, 0x4b, 0x99, 0x95, 0x62, 0xb5, 0xee, 0x9b, 0xa6, 0x4b, + 0x29, 0xde, 0x6a, 0xf1, 0xab, 0xe7, 0x71, 0x41, 0x10, 0x3f, + 0xe9, 0x56, 0xa1, 0x42, 0xf8, 0x22, 0xcb, 0x1d, 0x62, 0x20, + 0xfe, 0x03, 0x47, 0xfb, 0x44, 0x83, 0x89, 0x6f, 0x78, 0x3a, + 0x58, 0x61, 0xe8, 0xe2, 0xb2, 0x88, 0xa0, 0x7c, 0xbe, 0x24, + 0x40, 0xfc, 0x22, 0x9b, 0xc1, 0xcb, 0x66, 0x88, 0xaa, 0x74, + 0x4b, 0x80, 0x7e, 0x0c, 0xdf, 0x6a, 0x92, 0xda, 0x19, 0xd9, + 0x5d, 0x8e, 0x2b, 0x64, 0x7d, 0xbe, 0x69, 0xe7, 0x6d, 0x23, + 0xeb, 0x08, 0x3a, 0x61, 0xd9, 0xab, 0x2c, 0x7e, 0xa8, 0xe2, + 0x3b, 0x83, 0x0a, 0x74, 0xd1, 0xdd, 0xda, 0x75, 0x01, 0x6f, + 0x5a, 0x3d, 0xbf, 0xad, 0xee, 0xab, 0xf1, 0xc4, 0xaf, 0x02, + 0xd6, 0x1c, 0x89, 0xf2, 0x26, 0xdf, 0x0e, 0x22, 0x85, 0xec, + 0x12, 0x38, 0x36, 0xe7, 0xa0, 0x4c, 0x8e, 0x4e, 0x3e, 0x5c, + 0x12, 0xe1, 0x5d, 0x2c, 0x1c, 0xdb, 0xe7, 0xb7, 0xea, 0x56, + 0xff, 0x24, 0x91, 0x3b, 0x96, 0xdc, 0x1a, 0x1f, 0xc8, 0x07, + 0xad, 0xfa, 0x9b, 0xa6, 0x6e, 0xb9, 0xce, 0x34, 0xee, 0xdb, + 0x54, 0x40, 0x48, 0x02, 0xb7, 0xb0, 0x70, 0xea, 0x1a, 0x99, + 0x2e, 0x9b, 0x7a, 0x90, 0x01, 0xec, 0x1d, 0xf6, 0x68, 0x7c, + 0xa6, 0x1c, 0xf1, 0x6e, 0x29, 0xdd, 0x7b, 0xa1, 0xbe, 0xd0, + 0x3e, 0xea, 0x93, 0xc3, 0xf5, 0x96, 0x6f, 0x5d, 0xa6, 0x04, + 0xb1, 0x7f, 0x10, 0xe9, 0x2d, 0x29, 0x4b, 0x7d, 0x83, 0xcc, + 0x81, 0x54, 0x1e, 0xc8, 0xfe, 0xf8, 0x22, 0x78, 0x66, 0x2c, + 0x39, 0xc1, 0x2a, 0x04, 0xf4, 0x26, 0x8b, 0x74, 0x3f, 0x99, + 0xf2, 0x40, 0x41, 0xfc, 0xc3, 0x88, 0x95, 0xd5, 0x3a, 0xdc, + 0xe7, 0x9d, 0xc7, 0x09, 0x23, 0xdd, 0x3b, 0x5b, 0x65, 0x8c, + 0xaf, 0x85, 0x16, 0x4d, 0xe5, 0x40, 0x9b, 0x25, 0xd6, 0x59, + 0x90, 0xb6, 0x25, 0xb4, 0x73, 0x05, 0x95, 0x5c, 0xdb, 0x6f, + 0xcd, 0x5f, 0x55, 0x2c, 0x20, 0x7e, 0x11, 0xac, 0x81, 0x84, + 0x33, 0x44, 0x55, 0x3a, 0xc4, 0x40, 0x3f, 0x06, 0x8e, 0x35, + 0x0a, 0x20, 0x21, 0x51, 0x0c, 0xb8, 0x63, 0x84, 0xa5, 0xa4, + 0xac, 0x14, 0x10, 0xd8, 0x13, 0xbb, 0x08, 0xfe, 0x95, 0x2b, + 0xb1, 0x21, 0x7c, 0x11, 0x84, 0xef, 0x31, 0x10, 0x7f, 0xe0, + 0xc2, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x7d, + 0x1c, 0x44, 0xc9, 0x1b, 0x24, 0x70, 0x6c, 0x0d, 0x83, 0x98, + 0xdf, 0x9c, 0x7c, 0xb8, 0xd7, 0x36, 0xca, 0x8b, 0x9a, 0x19, + 0x9d, 0xae, 0x64, 0x98, 0x74, 0x6d, 0x1b, 0x43, 0xdc, 0xde, + 0x74, 0xc2, 0x71, 0x95, 0x58, 0xfc, 0x93, 0x07, 0x76, 0xc5, + 0x14, 0xe8, 0x61, 0x79, 0x77, 0xea, + }, + { + /* 10 */ + 0x51, 0xf6, 0x5f, 0xcc, 0xc9, 0xbb, 0x4b, 0xca, 0x7e, 0x52, + 0xea, 0x5b, 0x67, 0xa2, 0xef, 0xe6, 0x33, 0xae, 0xa5, 0x03, + 0xf8, 0x72, 0xcf, 0x10, 0xac, 0xdb, 0x41, 0x06, 0xb8, 0x66, + 0xba, 0x67, 0xa4, 0x6a, 0x15, 0x17, 0x52, 0x6f, 0xc2, 0xd0, + 0x70, 0x26, 0xcb, 0x2e, 0x94, 0x8b, 0x8e, 0x86, 0x67, 0xde, + 0xe5, 0xa5, 0xd2, 0x7e, 0xfa, 0xff, 0x18, 0x4a, 0x19, 0x89, + 0xa8, 0xce, 0x6e, 0xad, 0x0a, 0xcf, 0x3e, 0xd4, 0x05, 0xad, + 0xfc, 0x4a, 0x57, 0x45, 0xa7, 0x6b, 0xee, 0x14, 0x76, 0x58, + 0xe7, 0x84, 0x9d, 0xfc, 0x92, 0x97, 0xe6, 0x09, 0x2c, 0x7c, + 0x70, 0x3b, 0xb6, 0x0d, 0x1e, 0x59, 0x28, 0xba, 0xf8, 0xd6, + 0x14, 0xf1, 0x76, 0xeb, 0x9f, 0xd7, 0xd9, 0x6f, 0x3e, 0x50, + 0x1b, 0xa3, 0x1a, 0x55, 0x31, 0x76, 0x0d, 0x19, 0x1e, 0x24, + 0xb0, 0x33, 0x03, 0xec, 0x9d, 0x34, 0x78, 0xa7, 0x6c, 0x50, + 0xb7, 0xd2, 0x36, 0x49, 0xa1, 0x6a, 0xcc, 0x30, 0x25, 0x67, + 0x5d, 0xd8, 0xc1, 0x96, 0x65, 0x5c, 0x3d, 0x20, 0xd3, 0x89, + 0x77, 0x82, 0xdd, 0x34, 0xec, 0x40, 0x9e, 0xca, 0x1f, 0x6b, + 0xfa, 0xd5, 0x6b, 0x65, 0x7d, 0xce, 0x0b, 0x75, 0x93, 0xf2, + 0x34, 0xca, 0x6a, 0x37, 0x2c, 0x14, 0xe8, 0xcd, 0xbc, 0x42, + 0x74, 0x8d, 0x64, 0x66, 0xb1, 0xfa, 0x65, 0x84, 0x2f, 0x13, + 0x53, 0x2d, 0xac, 0x27, 0xf3, 0x46, 0x56, 0x35, 0xb3, 0xe7, + 0xe2, 0x1d, 0x99, 0x8c, 0x4c, 0x9b, 0x89, 0x18, 0x5a, 0x78, + 0x0d, 0xbb, 0x2d, 0x8c, 0x10, 0x5f, 0xaa, 0x28, 0xd6, 0xb5, + 0x92, 0xb4, 0x40, 0xdd, 0xa9, 0xa1, 0xec, 0x2c, 0xb5, 0x82, + 0xcd, 0xc2, 0x28, 0xde, 0x2b, 0x58, 0x3b, 0x91, 0xb2, 0x34, + 0x30, 0x6d, 0x11, 0x25, 0x18, 0x1f, 0xe5, 0xb2, 0xea, 0x9a, + 0x2f, 0x4a, 0x95, 0x60, 0x12, 0xc2, 0x8b, 0xd4, 0x2a, 0x2e, + 0xa4, 0xde, 0x47, 0x63, 0xe0, 0x4c, 0x55, 0x5c, 0xeb, 0xd5, + 0xdf, 0xcf, 0x83, 0x99, 0xcc, 0x7f, 0xa0, 0x84, 0x36, 0x54, + 0x72, 0x77, 0x07, 0xfe, 0x33, 0xc5, 0xd8, 0x51, 0xef, 0xc9, + 0x7b, 0xad, 0x96, 0xcd, 0x97, 0x3e, 0xbe, 0x47, 0x22, 0x99, + 0x6e, 0x1d, 0x19, 0xc7, 0x66, 0x9f, 0x89, 0x06, 0x33, 0xe4, + 0x5d, 0x20, 0x9b, 0x75, 0x82, 0x0c, 0xb3, 0xcc, 0xb7, 0xce, + 0x14, 0x5d, 0x7c, 0x6b, 0x0a, 0x99, 0x3b, 0x94, 0xae, 0x8a, + 0x8d, 0xd6, 0x1f, 0x28, 0xec, 0xb0, 0x0d, 0xcb, 0xf9, 0x3b, + 0xe7, 0xed, 0x0f, 0x12, 0x58, 0xf8, 0xe0, 0x76, 0xaf, 0x1a, + 0x3c, 0xb2, 0x05, 0x86, 0x1f, 0x6a, 0xe3, 0xb7, 0x7e, 0x25, + 0xca, 0xc3, 0xb2, 0xd4, 0x77, 0x0a, 0x3b, 0x2c, 0x92, 0x42, + 0xaf, 0x7e, 0x49, 0xaa, 0x73, 0xe5, 0x16, 0x3e, 0x38, 0xfc, + 0x5b, 0xe7, 0x0f, 0xcd, 0x7a, 0x8f, 0x13, 0x3c, 0x3d, 0x27, + 0x17, 0x83, 0xa7, 0xc4, 0x5d, 0x78, 0x74, 0xf4, 0x5c, 0xe0, + 0x13, 0x59, 0xbb, 0x84, 0xe8, 0xd9, 0xc8, 0xcc, 0xa1, 0x37, + 0xca, 0xcb, 0x5e, 0x26, 0xa6, 0x5a, 0xd8, 0xa0, 0xad, 0x67, + 0x6c, 0x92, 0x81, 0xd4, 0x5b, 0x60, 0x4a, 0xce, 0xba, 0x73, + 0x41, 0xef, 0x87, 0x5e, 0xbf, 0xb6, 0xa2, 0xa9, 0xef, 0xae, + 0x3b, 0x8b, 0x2e, 0xaf, 0x5f, 0xcd, 0x3a, 0x1e, 0xb5, 0xb1, + 0x76, 0x16, 0xbb, 0x41, 0x87, 0x61, 0x14, 0x6f, 0xf4, 0x2c, + 0xfc, 0xa9, 0x59, 0x1a, 0xdf, 0xa4, 0x6a, 0x88, 0x8e, 0xd2, + 0x72, 0x8c, 0x54, 0xdd, 0x0d, 0xd3, 0xfb, 0x7d, 0x0b, 0x05, + 0x91, 0x81, 0x1b, 0x58, 0xa9, 0xc7, 0x59, 0x47, 0x50, 0x7f, + 0x56, 0xb0, 0x76, 0xe1, 0xa7, 0x68, 0x2d, 0x3c, 0xe7, 0xbc, + 0xf7, 0x46, 0x08, 0xce, 0x55, 0x14, 0x6b, 0xbb, 0x49, 0x5a, + 0x20, 0x8f, 0xa0, 0xad, 0x66, 0xde, 0x50, 0x42, 0x1b, 0x2a, + 0x39, 0xda, 0xe2, 0x7f, 0xf8, 0x83, 0x6c, 0xc9, 0xbf, 0x7e, + 0x48, 0xc2, 0xbe, 0xec, 0x7b, 0x2b, 0x43, 0x2a, 0x53, 0x47, + 0x12, 0xbd, 0x2f, 0x42, 0x24, 0x30, 0x6d, 0x4e, 0x12, 0x86, + 0xde, 0x26, 0x44, 0x10, 0xa2, 0x9c, 0x8a, 0x48, 0xfe, 0x72, + 0x49, 0x21, 0xb6, 0x3f, 0xc5, 0x55, 0xd8, 0x93, 0x0b, 0x1f, + 0x1c, 0x7e, 0xcc, 0x92, 0xe6, 0x87, 0xee, 0x88, 0x17, 0x0e, + 0x77, 0x57, 0x30, 0xe1, 0x3d, 0x78, 0xb9, 0x1c, 0x75, 0x1f, + 0xc0, 0xa4, 0x2c, 0x7d, 0x8b, 0x1f, 0x16, 0xdc, 0xaf, 0x11, + 0xd6, 0x2b, 0xf0, 0x3e, 0x52, 0x58, 0xf9, 0xec, 0x1d, 0x51, + 0xf6, 0x99, 0xef, 0x59, 0xed, 0x7c, 0xbf, 0x8e, 0x44, 0xf1, + 0xdc, 0x3a, 0x32, 0x4d, 0xcc, 0xfd, 0xd1, 0x0c, 0x66, 0x0b, + 0xba, 0x40, 0xf5, 0xea, 0xc7, 0x18, 0xa5, 0x5b, 0xad, 0x5f, + 0x7c, 0xca, 0xb8, 0x70, 0x3e, 0xfd, 0x43, 0x04, 0x2b, 0x46, + 0x81, 0xe0, 0x2e, 0xf8, 0xcf, 0x69, 0x8e, 0x52, 0x35, 0x44, + 0x47, 0x69, 0x39, 0x46, 0x2a, 0x8f, 0xe7, 0x88, 0x9c, 0xdf, + 0xe4, 0xe3, 0xb8, 0x7a, 0x8f, 0x2d, 0x5c, 0xac, 0x88, 0x73, + 0x4c, 0x97, 0x14, 0x5a, 0x53, 0xb3, 0x65, 0xa8, 0xe6, 0xc5, + 0xf1, 0x5f, 0x73, 0x0d, 0x41, 0xd6, 0xaf, 0x43, 0xeb, 0xbe, + 0xad, 0x0f, 0xc7, 0x3a, 0xf4, 0xdd, 0x26, 0x78, 0x7a, 0x4e, + 0x2e, 0xc5, 0x8d, 0x4b, 0xba, 0xf0, 0xe8, 0x2b, 0xb8, 0x03, + 0x26, 0xb2, 0xb5, 0xcb, 0x13, 0x71, 0x53, 0x5b, 0x81, 0x6e, + 0x57, 0x55, 0xbc, 0x4c, 0x8f, 0xb4, 0x1b, 0x14, 0x5d, 0xd5, + 0xec, 0x83, 0xb9, 0xfb, 0x33, 0x0c, 0x98, 0x69, 0x86, 0x36, + 0xa1, 0xc4, 0x4f, 0x64, 0x1d, 0x73, 0xc6, 0x8f, 0x8c, 0x14, + 0x87, 0x9d, 0xc0, 0xe6, 0x96, 0x9e, 0x75, 0x0e, 0xd5, 0x6b, + 0x54, 0x5c, 0x8b, 0x7f, 0x8e, 0xc6, 0x03, 0x98, 0xaa, 0xb8, + 0x15, 0x69, 0x7d, 0x5d, 0xc5, 0xf1, 0x5b, 0xfe, 0x83, 0xcb, + 0x6c, 0xa8, 0xe4, 0xee, 0x0e, 0x3f, 0x66, 0x49, 0x73, 0xa2, + 0x50, 0xb7, 0x33, 0x6f, 0x28, 0x21, 0xec, 0x15, 0xfd, 0x6d, + 0x71, 0xde, 0x7c, 0xa0, 0x36, 0x85, 0x79, 0x4c, 0xa7, 0x1a, + 0xdd, 0x4a, 0x3d, 0x21, 0xe1, 0x85, 0x33, 0x34, 0x59, 0xf2, + 0xf4, 0x45, 0x77, 0x44, 0xea, 0x07, 0xda, 0xca, 0x18, 0x91, + 0xff, 0x3c, 0xbd, 0x0e, 0xdb, 0xee, 0x60, 0x52, 0x16, 0xdf, + 0xa4, 0xee, 0x0b, 0x6e, 0xb6, 0xe9, 0x6b, 0xf4, 0x78, 0x1f, + 0x29, 0x2c, 0x9d, 0x76, 0x52, 0x35, 0xeb, 0xea, 0x29, 0xd6, + 0x61, 0x68, 0x38, 0x13, 0x84, 0x17, 0x4a, 0xa4, 0x47, 0x43, + 0x15, 0x1c, 0x10, 0xc8, 0xeb, 0x03, 0x9c, 0x4b, 0x2d, 0xb5, + 0x16, 0x53, 0x04, 0x2a, 0x35, 0xd3, 0x9b, 0x4e, 0x25, 0x8c, + 0xac, 0x6a, 0xa5, 0x0d, 0x07, 0x3a, 0xf1, 0xdb, 0x98, 0xf5, + 0xd1, 0x30, 0xb4, 0xf0, 0x1a, 0xb5, 0x5a, 0xdb, 0x20, 0xbe, + 0x97, 0x50, 0x6f, 0xa9, 0xe7, 0xab, 0x80, 0x79, 0x3e, 0x65, + 0x5c, 0x38, 0x1f, 0x9f, 0xc0, 0x02, 0xf4, 0x23, 0xa1, 0x70, + 0x17, 0x7c, 0x86, 0xd5, 0x80, 0x5a, 0x78, 0x59, 0x40, 0xe9, + 0x1c, 0xf6, 0x34, 0x36, 0x69, 0xb2, 0x1e, 0xc3, 0x70, 0xf4, + 0x36, 0x28, 0xba, 0x69, 0x1b, 0xc5, 0xb1, 0x35, 0x66, 0x18, + 0xf3, 0xd2, 0xcf, 0x6c, 0x81, 0x4b, 0xd3, 0x2e, 0xff, 0x10, + 0x88, 0xa5, 0xda, 0x41, 0x8f, 0x1a, 0x76, 0x20, 0x4f, 0x65, + 0xee, 0xd4, 0x2b, 0x79, 0x4c, 0xf0, 0xf4, 0x9c, 0x5c, 0x49, + 0xd9, 0x96, 0xb7, 0x23, 0x13, 0x56, 0xb3, 0x06, 0x01, 0x41, + 0x6c, 0xa3, 0xe1, 0x9a, 0xa7, 0xdf, 0x83, 0x3f, 0x9b, 0x85, + 0x1b, 0x02, 0xd9, 0x63, 0x99, 0xcc, 0xfd, 0x09, 0xad, 0x9d, + 0x28, 0x70, 0xc2, 0x44, 0x04, 0x12, 0xae, 0xf1, 0xa0, 0xf6, + 0xdd, 0x26, 0xb2, 0x0d, 0x8f, 0x25, 0xff, 0xf1, 0x91, 0xa3, + 0xf8, 0x1a, 0xcd, 0x79, 0x7a, 0xc3, 0xf6, 0x5f, 0xfe, 0xfd, + 0x7b, 0xb9, 0xa3, 0xb8, 0x48, 0x35, 0x4f, 0x39, 0xde, 0x2f, + 0xc9, 0xc5, 0x68, 0x97, 0xc4, 0x1b, 0x34, 0x64, 0x78, 0x90, + 0x85, 0xcc, 0x0c, 0x36, 0x31, 0xd0, 0x23, 0xd9, 0x12, 0x18, + 0xd7, 0x27, 0x09, 0x43, 0x6f, 0x13, 0x22, 0x08, 0x51, 0x4e, + 0x45, 0x24, 0x7f, 0x39, 0x8a, 0x95, 0x46, 0x8d, 0x45, 0x44, + 0xe0, 0xbc, 0x63, 0x73, 0xce, 0xd9, 0xf0, 0xd7, 0x06, 0xac, + 0x09, 0x0c, 0x8a, 0xf2, 0xe5, 0xc0, 0xd6, 0xe8, 0x11, 0x04, + 0xc9, 0x27, 0xc3, 0x12, 0xde, 0xfd, 0xa6, 0xe8, 0xcd, 0x92, + 0x53, 0x98, 0x4f, 0xad, 0xb5, 0x58, 0x3e, 0xe7, 0xa2, 0x8f, + 0xff, 0x40, 0x72, 0xc2, 0xf5, 0x6d, 0x39, 0x7d, 0x66, 0xb4, + 0x35, 0xff, 0x0f, 0xda, 0xac, 0xe4, 0x5b, 0x7e, 0xc4, 0xb0, + 0x37, 0x5d, 0x62, 0x51, 0xcb, 0x77, 0x67, 0xd1, 0x95, 0xba, + 0x7d, 0x4b, 0xaa, 0xc1, 0x3a, 0xa2, 0x2f, 0xf1, 0x1d, 0xb2, + 0x19, 0xf8, 0xbd, 0xdf, 0x88, 0x21, 0x7b, 0x74, 0x64, 0x9a, + 0x74, 0x87, 0x5e, 0x21, 0x3a, 0xa7, 0x32, 0x33, 0xb9, 0x7d, + 0xd3, 0x42, 0xf6, 0xe8, 0xc8, 0xf7, 0xc1, 0x36, 0x28, 0x37, + 0x81, 0xe6, 0xb5, 0x52, 0xad, 0x12, 0x27, 0x6e, 0x0a, 0x41, + 0x91, 0xed, 0xca, 0xb8, 0x7a, 0x40, 0x65, 0xd1, 0xee, 0xc7, + 0x79, 0x68, 0x1b, 0x80, 0xff, 0x57, 0x3e, 0xd6, 0xb9, 0x3b, + 0xe3, 0x8e, 0xbd, 0x36, 0x2f, 0xac, 0xcf, 0xa8, 0x8f, 0xdf, + 0x48, 0xb1, 0xbc, 0xcb, 0x70, 0x40, 0x2d, 0xe8, 0x38, 0x8a, + 0xeb, 0xc9, 0xf0, 0x81, 0xfa, 0x13, 0x9a, 0xe0, 0x2a, 0xb8, + 0xbc, 0xbd, 0xfc, 0xe4, 0x5e, 0x81, 0x51, 0x89, 0x05, 0x6b, + 0x3d, 0x0b, 0x3f, 0xbb, 0x87, 0xe7, 0x34, 0xaa, 0x62, 0xec, + 0x1a, 0x32, 0x3c, 0x48, 0xa3, 0x66, 0x06, 0x1b, 0xf9, 0x68, + 0xf0, 0x8d, 0x6a, 0x15, 0x1c, 0x9e, 0x35, 0x93, 0xf5, 0xed, + 0x40, 0xb2, 0xf9, 0xff, 0x07, 0xd4, 0x52, 0x1f, 0x48, 0x60, + 0xda, 0x9c, 0x24, 0xcf, 0x7f, 0x4c, 0x88, 0x20, 0x87, 0xfb, + 0xd7, 0x90, 0x3f, 0xe4, 0x5f, 0xfe, 0x12, 0xd1, 0xce, 0x3b, + 0x6e, 0x7a, 0x60, 0xeb, 0x64, 0x61, 0xe5, 0xbe, 0x7b, 0xf1, + 0x8f, 0x13, 0x59, 0xe7, 0xa6, 0xf3, 0x9e, 0x99, 0xa9, 0xb0, + 0x7c, 0x0d, 0x87, 0xdd, 0x3d, 0x80, 0x69, 0xd6, 0xa8, 0xb8, + 0xd5, 0xfe, 0xdf, 0x4f, 0x06, 0xf3, 0x97, 0xb3, 0x2a, 0xd2, + 0xfa, 0xba, 0x9a, 0x0f, 0x49, 0x2f, 0x4d, 0xf0, 0x02, 0xd2, + 0x84, 0x05, 0x6a, 0x5e, 0x83, 0xf7, 0x08, 0x53, 0xda, 0x22, + 0x75, 0xe2, 0x6d, 0x65, 0x0c, 0xa9, 0x9e, 0x1e, 0xbf, 0x07, + 0x8c, 0x77, 0x30, 0x29, 0xfd, 0xd1, 0xac, 0x8a, 0x9f, 0x8e, + 0xf8, 0x2d, 0x9c, 0x4f, 0x73, 0xd7, 0x2b, 0x39, 0x66, 0xfe, + 0x39, 0x61, 0x9b, 0xd7, 0xfd, 0xdf, 0x33, 0x5a, 0xfb, 0x9e, + 0xe6, 0x6d, 0x56, 0x72, 0xcc, 0x3f, 0xa5, 0x2b, 0x79, 0xb4, + 0xb3, 0xf5, 0x65, 0x0f, 0xf3, 0x19, 0x50, 0xab, 0x8f, 0x89, + 0x57, 0xe5, 0xfc, 0x90, 0xc0, 0x29, 0x7e, 0x14, 0x5f, 0xf2, + 0x1f, 0x70, 0xe8, 0x52, 0x30, 0x3b, 0xbf, 0x9d, 0xe0, 0x80, + 0x5a, 0x13, 0x70, 0xd7, 0x15, 0x51, 0x23, 0xc1, 0x37, 0x26, + 0xf7, 0x03, 0x54, 0xb3, 0x0c, 0x8a, 0x95, 0x98, 0x06, 0x77, + 0xa8, 0xcd, 0xdb, 0xc7, 0x7b, 0xf3, 0xb4, 0x18, 0xe5, 0xd1, + 0x57, 0xb3, 0xf4, 0x80, 0xca, 0x61, 0x1f, 0x4d, 0xf2, 0xd0, + 0x36, 0xc3, 0x3d, 0xae, 0x7c, 0x6f, 0x54, 0x70, 0x40, 0xa6, + 0x2a, 0x0c, 0x35, 0xef, 0xb4, 0x91, 0x58, 0x8f, 0x10, 0xa8, + 0xd4, 0xca, 0x8d, 0x91, 0x81, 0x62, 0xa7, 0x04, 0x13, 0xe4, + 0x6c, 0xce, 0x89, 0xc4, 0xb1, 0xd9, 0x4c, 0x46, 0xd2, 0x6f, + 0x93, 0xb3, 0x69, 0x3f, 0x7d, 0x9e, 0x0c, 0x25, 0xed, 0xa5, + 0x54, 0x67, 0x37, 0xb7, 0xf7, 0x1e, 0x92, 0x5e, 0x9a, 0x23, + 0x04, 0x67, 0xcb, 0x0a, 0xd4, 0xbc, 0xc5, 0x2d, 0x10, 0xa6, + 0x5e, 0xbf, 0x7e, 0x72, 0x2f, 0xa1, 0xc9, 0xa5, 0xe3, 0xd4, + 0xff, 0xe4, 0xfe, 0xbc, 0xa2, 0x92, 0xf9, 0x16, 0xdf, 0x43, + 0x9d, 0xa3, 0x21, 0xd7, 0xd5, 0xb3, 0x5a, 0x86, 0x47, 0x31, + 0x84, 0xb1, 0xf2, 0x98, 0x8d, 0x34, 0x79, 0x94, 0x7a, 0x42, + 0x01, 0xc9, 0x66, 0x68, 0xb2, 0x27, 0x2b, 0x8a, 0xe3, 0x43, + 0xee, 0x35, 0x90, 0xba, 0x3f, 0xf3, 0x65, 0x80, 0x59, 0x6a, + 0xda, 0x05, 0xfc, 0x16, 0x3b, 0xe3, 0x43, 0x52, 0xfc, 0x28, + 0xbe, 0x27, 0x3e, 0xe0, 0x13, 0xa4, 0x60, 0x76, 0xbd, 0xf9, + 0x03, 0xc3, 0xb4, 0x26, 0xe0, 0x6d, 0x2a, 0xa2, 0x46, 0x41, + 0x6e, 0x4c, 0x2d, 0x06, 0xa8, 0xa5, 0xa1, 0xec, 0x0a, 0x7d, + 0xb1, 0xd8, 0xbc, 0xf5, 0xba, 0xe5, 0x79, 0xfa, 0xe3, 0x81, + 0xb5, 0xaa, 0x96, 0x85, 0xdc, 0xb7, 0x4b, 0x87, 0xaa, 0x1f, + 0x5f, 0xc2, 0x11, 0xad, 0x37, 0xef, 0xed, 0x82, 0xaa, 0x62, + 0x58, 0x0a, 0x55, 0xef, 0xe7, 0x60, 0x6e, 0x9f, 0x45, 0x14, + 0x16, 0x97, 0x1a, 0x91, 0x9f, 0x89, 0x56, 0x45, 0xae, 0x47, + 0x7c, 0xf7, 0x4e, 0xc6, 0xd8, 0x8a, 0xf4, 0xfd, 0x33, 0x7f, + 0x46, 0x68, 0x97, 0x81, 0x23, 0x4f, 0x5a, 0xfc, 0x96, 0x99, + 0x09, 0xc1, 0x55, 0x8c, 0xab, 0xf3, 0x41, 0x6c, 0x50, 0x6e, + 0xc1, 0x0f, 0xa9, 0xa4, 0x99, 0x24, 0x4e, 0xdc, 0x14, 0x82, + 0xe1, 0x19, 0x2a, 0x38, 0x20, 0x53, 0x15, 0x06, 0xfb, 0x96, + 0x5a, 0xa9, 0x2c, 0xa6, 0x08, 0x54, 0x6a, 0x65, 0x60, 0xda, + 0x22, 0x4a, 0x30, 0x3e, 0x09, 0xa7, 0x17, 0xf7, 0x5e, 0x94, + 0xe9, 0xc0, 0x24, 0x47, 0xe5, 0x06, 0x45, 0x79, 0x93, 0x60, + 0x6b, 0x74, 0xe9, 0x02, 0x85, 0xf2, 0x80, 0x09, 0x6f, 0x9f, + 0x94, 0x07, 0x04, 0x32, 0x4a, 0x70, 0x27, 0x62, 0x9a, 0xbc, + 0xe4, 0x64, 0x01, 0xeb, 0x9c, 0x44, 0xbe, 0x3f, 0x24, 0x61, + 0x5f, 0x76, 0xdc, 0xf4, 0xc0, 0x15, 0xc8, 0xc2, 0x09, 0xbf, + 0xf6, 0x21, 0x90, 0xc0, 0x77, 0xfb, 0x48, 0x5d, 0xfe, 0x98, + 0xd3, 0x40, 0xcd, 0x35, 0x6d, 0xe3, 0x7e, 0x0b, 0x2f, 0xbe, + 0x3f, 0x39, 0xf6, 0xb1, 0x85, 0xb3, 0x90, 0x6a, 0x9e, 0x72, + 0x7f, 0x5e, 0x51, 0x49, 0x9d, 0x0b, 0x8e, 0xc0, 0xaf, 0xb0, + 0xf1, 0x8a, 0x8b, 0xb8, 0x2d, 0x43, 0xc2, 0xf9, 0x42, 0xb9, + 0x81, 0x1b, 0x14, 0xfa, 0xa1, 0x73, 0xbb, 0x29, 0xb7, 0x09, + 0xf2, 0x37, 0x05, 0xc1, 0xa9, 0x97, 0xa2, 0x2f, 0xbe, 0x5b, + 0x51, 0xb5, 0x96, 0x57, 0xfc, 0xa4, 0x17, 0xb6, 0xce, 0x87, + 0x1d, 0x0f, 0x76, 0x05, 0x86, 0xa4, 0x3b, 0x50, 0xbf, 0x4e, + 0x7c, 0x03, 0x26, 0x8b, 0xc0, 0xec, 0xb9, 0x31, 0x4b, 0xa3, + 0x6e, 0xba, 0xc4, 0xa2, 0x55, 0xee, 0xce, 0x61, 0xe9, 0xb7, + 0xfa, 0x96, 0x97, 0x41, 0xe4, 0x47, 0x29, 0xda, 0x72, 0xfa, + 0xcc, 0xab, 0x6a, 0x3d, 0x1e, 0x77, 0x9b, 0x0b, 0xb6, 0xfc, + 0x06, 0x45, 0xab, 0x4c, 0x03, 0xda, 0x54, 0x87, 0x8c, 0x82, + 0xdc, 0x98, 0x5a, 0x0c, 0x93, 0x89, 0x55, 0x31, 0x2c, 0x05, + 0xcb, 0x96, 0x92, 0x30, 0x37, 0xae, 0xc3, 0x0a, 0x0b, 0xaa, + 0x0d, 0xa9, 0xae, 0xa5, 0x2b, 0xc3, 0x57, 0xc2, 0x3e, 0x9a, + 0x27, 0x63, 0x6c, 0x45, 0x7a, 0x9f, 0xf8, 0xde, 0x1c, 0x10, + 0x9a, 0x3a, 0x0e, 0xc3, 0x4a, 0xa3, 0x3c, 0xb1, 0xdf, 0x74, + 0xc7, 0x38, 0xeb, 0x2e, 0x75, 0xc6, 0x32, 0x82, 0xdb, 0x3d, + 0x95, 0xec, 0x3a, 0x42, 0x48, 0xc7, 0xed, 0xea, 0x11, 0x94, + 0x5b, 0x39, 0x61, 0x18, 0xcc, 0x16, 0xb7, 0x80, 0x29, 0x17, + 0x4d, 0x30, 0x89, 0xb6, 0x99, 0xbe, 0x04, 0xc7, 0x73, 0xc9, + 0x02, 0x2d, 0xd9, 0xfa, 0x49, 0xfc, 0x29, 0x51, 0x6c, 0x08, + 0xe2, 0x4f, 0x27, 0xf3, 0xd9, 0x68, 0xf2, 0xeb, 0xf4, 0x84, + 0x02, 0x51, 0xcc, 0xd0, 0xa7, 0x4e, 0x56, 0xd7, 0x4d, 0xe6, + 0xc5, 0xf6, 0xc7, 0x78, 0x01, 0x69, 0x42, 0xe3, 0x35, 0x2f, + 0xa0, 0x9a, 0x04, 0xc8, 0x9c, 0x4a, 0xe2, 0x63, 0x4e, 0x2a, + 0x56, 0x55, 0x08, 0x87, 0xb6, 0xc6, 0xd9, 0xfb, 0x9b, 0xda, + 0x20, 0xf7, 0x1e, 0x87, 0x10, 0xab, 0x07, 0xdc, 0x0d, 0xec, + 0x8b, 0xcd, 0xe6, 0x40, 0x1c, 0x3d, 0x53, 0x74, 0x87, 0x49, + 0xc8, 0x4c, 0xc6, 0xb7, 0xbb, 0x2c, 0x1f, 0x92, 0x51, 0xa6, + 0x9e, 0x20, 0xd0, 0xed, 0x4b, 0x36, 0x68, 0xc8, 0xf0, 0xe3, + 0xc9, 0x5b, 0x18, 0x6c, 0x62, 0x63, 0x46, 0x71, 0x95, 0x46, + 0x68, 0x91, 0xab, 0xea, 0x80, 0xbd, 0x19, 0x83, 0x7f, 0xe1, + 0x1a, 0xe9, 0x45, 0x27, 0xf3, 0xd9, 0xe1, 0x97, 0x98, 0x0e, + 0xdd, 0x9d, 0x82, 0xf6, 0xfd, 0xed, 0xa9, 0x25, 0xf2, 0xe9, + 0x85, 0xdc, 0x67, 0x33, 0xa3, 0x5e, 0x62, 0xd3, 0xfe, 0xf5, + 0xdb, 0x66, 0x69, 0xc9, 0x4b, 0xd8, 0x88, 0x17, 0x9e, 0x08, + 0x44, 0xb3, 0x6d, 0xc1, 0xa6, 0x0d, 0x3b, 0x10, 0xc6, 0xd3, + 0x77, 0x6a, 0xb0, 0x37, 0x69, 0x7c, 0x58, 0xf6, 0xf9, 0x44, + 0xde, 0xac, 0x46, 0xf8, 0x8b, 0xa3, 0x62, 0x36, 0x22, 0x75, + 0xc6, 0x02, 0x11, 0x5c, 0x8a, 0xa1, 0xc8, 0x92, 0x7e, 0x04, + 0xd0, 0x44, 0x6d, 0xfb, 0x0b, 0x8e, 0x52, 0x77, 0xe4, 0x37, + 0x5b, 0x95, 0xd4, 0x7a, 0x3c, 0xee, 0xf5, 0x16, 0xaf, 0x3b, + 0x02, 0x82, 0xd8, 0x85, 0x01, 0xf7, 0x8d, 0x7d, 0xc5, 0x7e, + 0xf5, 0xc9, 0x36, 0x04, 0x71, 0xc6, 0xc9, 0x7b, 0xce, 0x66, + 0x85, 0xbc, 0xc4, 0x65, 0x3f, 0x29, 0x75, 0xcc, 0xd2, 0x51, + 0x96, 0x73, 0xdb, 0x63, 0x19, 0x41, 0x8c, 0xff, 0xab, 0x76, + 0x1d, 0x21, 0x24, 0x82, 0x97, 0x75, 0xe9, 0x4a, 0xb6, 0x72, + 0xc2, 0x30, 0x5b, 0x2c, 0xad, 0xc3, 0x52, 0x2e, 0x9a, 0x60, + 0xd1, 0xaf, 0xf1, 0xbf, 0x40, 0x2d, 0x3c, 0xcd, 0x20, 0x95, + 0x0e, 0x7b, 0x1a, 0x1b, 0xd5, 0x59, 0x0f, 0x80, 0x38, 0x7a, + 0x4e, 0x25, 0x71, 0xd0, 0x27, 0x15, 0x2b, 0xcb, 0x04, 0xa2, + 0x5b, 0x63, 0x8d, 0x9c, 0xac, 0x6d, 0xd7, 0xe9, 0x8c, 0xd9, + 0x8a, 0x88, 0x03, 0xbb, 0xc6, 0xe6, 0x5f, 0x71, 0x23, 0x6d, + 0x0c, 0x9b, 0xab, 0x23, 0x34, 0xa9, 0xb4, 0x75, 0x40, 0xbf, + 0xed, 0xa0, 0xde, 0x91, 0x0d, 0x95, 0xc3, 0xf2, 0x98, 0x8d, + 0x91, 0xaa, 0x4c, 0x07, 0x8f, 0xaf, 0x41, 0x7b, 0x9f, 0x97, + 0xb5, 0xf3, 0x79, 0x95, 0xc8, 0x3a, 0xa2, 0xc5, 0x64, 0x26, + 0x63, 0xba, 0xbc, 0x16, 0xee, 0x49, 0xc9, 0x53, 0x4f, 0x10, + 0xaf, 0xe4, 0x47, 0x60, 0xb6, 0x58, 0x99, 0x45, 0xa4, 0x5c, + 0xf7, 0xc0, 0x61, 0x9d, 0x21, 0xbd, 0xa3, 0x6e, 0xd2, 0xf8, + 0xb0, 0x2f, 0x31, 0x88, 0x7f, 0x9b, 0x8c, 0x33, 0xd5, 0x85, + 0xc4, 0x6c, 0x44, 0xea, 0x4f, 0x04, 0x22, 0xb8, 0xd7, 0x81, + 0x53, 0xe7, 0xfc, 0x08, 0x63, 0x88, 0xda, 0x35, 0x84, 0x9d, + 0x0b, 0x90, 0x42, 0xc4, 0xc5, 0x0c, 0x7d, 0xca, 0x40, 0xe3, + 0x72, 0xcb, 0x92, 0xbb, 0x9e, 0xc8, 0x3a, 0xe6, 0x4f, 0xdd, + 0xdb, 0x28, 0xcd, 0xf9, 0x43, 0x0f, 0xef, 0xff, 0xea, 0x1c, + 0xe2, 0x02, 0x82, 0x96, 0x71, 0x20, 0x98, 0x2c, 0xe6, 0xbf, + 0xc2, 0xef, 0xc1, 0x07, 0x25, 0x75, 0xcd, 0xbc, 0xbd, 0xaf, + 0x87, 0x91, 0x1d, 0x9f, 0x76, 0xd5, 0x5c, 0x9d, 0xbe, 0x59, + 0x74, 0x3c, 0xfb, 0x94, 0x07, 0xc6, 0x9c, 0x54, 0xac, 0xaa, + 0x10, 0xcd, 0xaf, 0x4f, 0x71, 0x35, 0xf5, 0x77, 0x45, 0xab, + 0x23, 0xa7, 0xc3, 0x22, 0x70, 0x5e, 0xd0, 0xd8, 0x67, 0x8d, + 0x78, 0x8a, 0x03, 0x56, 0x23, 0x34, 0xaa, 0xa1, 0xf0, 0xc6, + 0x2d, 0x7e, 0x4b, 0xad, 0xe5, 0x81, 0xcb, 0x46, 0xb4, 0x98, + 0xc6, 0x32, 0xef, 0xd8, 0x63, 0xa6, 0x46, 0x0a, 0xa2, 0xaf, + 0x60, 0x73, 0x4b, 0x4f, 0xdb, 0x07, 0x3d, 0xa6, 0xe8, 0x1e, + 0xff, 0xf2, 0xea, 0xa0, 0xb2, 0x62, 0xcf, 0x3c, 0x3a, 0x7a, + 0x2e, 0x70, 0x17, 0x9e, 0xc8, 0x4d, 0xea, 0xf4, 0x11, 0x36, + 0xe8, 0xcb, 0xe3, 0x9a, 0x32, 0x2e, 0x44, 0x15, 0xeb, 0x0e, + 0x08, 0x64, 0x94, 0xe0, 0x4e, 0xc4, 0xf7, 0xbb, 0x0b, 0xc8, + 0x02, 0x15, 0xfb, 0x88, 0x2e, 0xff, 0x53, 0x9a, 0x17, 0x2b, + 0x22, 0x6c, 0x13, 0x55, 0x05, 0xf7, 0x64, 0x5c, 0x88, 0x2a, + 0xcb, 0xf9, 0x16, 0xe3, 0x84, 0x4b, 0x49, 0x18, 0xfa, 0x57, + 0x80, 0x05, 0xe4, 0x55, 0xe7, 0xb5, 0xb2, 0xb5, 0xb1, 0xf9, + 0x59, 0x01, 0x74, 0x39, 0x1b, 0xd2, 0xb3, 0x31, 0xbd, 0xa7, + 0x13, 0xf0, 0x5c, 0x3d, 0xa6, 0xf7, 0x2e, 0x56, 0x44, 0xd8, + 0x26, 0xaa, 0x0a, 0x2d, 0xc8, 0xb8, 0xd3, 0x54, 0x4a, 0xe2, + 0x02, 0x19, 0x25, 0x38, 0xf2, 0x31, 0x4d, 0x5e, 0x72, 0x32, + 0xe1, 0x94, 0x4e, 0x22, 0x64, 0x1d, 0x51, 0x83, 0x32, 0x13, + 0xd0, 0x5d, 0x5e, 0x0b, 0x77, 0xc5, 0x85, 0xc8, 0xc6, 0x08, + 0x71, 0x01, 0x41, 0x4b, 0xd9, 0x10, 0x4c, 0x16, 0x73, 0xbe, + 0x61, 0x96, 0x81, 0xe2, 0xf3, 0xdb, 0x35, 0xeb, 0x0e, 0x4f, + 0xfb, 0xa8, 0x9b, 0x97, 0x20, 0x59, 0x9d, 0x9e, 0xe2, 0x6a, + 0x29, 0xee, 0xc7, 0x73, 0x83, 0x7b, 0x82, 0x3c, 0xe1, 0xd5, + 0x21, 0x90, 0xfb, 0xf6, 0x50, 0x4d, 0x02, 0x64, 0x07, 0x04, + 0xc7, 0xef, 0xe2, 0x40, 0xf3, 0x58, 0x0f, 0xbd, 0x47, 0x1d, + 0x41, 0x0e, 0x4a, 0xea, 0x59, 0xbb, 0xb9, 0x9d, 0xcd, 0xe1, + 0x3a, 0xfd, 0xec, 0x69, 0xb8, 0xf9, 0xbf, 0xb2, 0xe8, 0x78, + 0x38, 0x20, 0xf7, 0x74, 0x1c, 0x45, 0x94, 0x85, 0x78, 0xa1, + 0x7d, 0xe8, 0x4d, 0x70, 0x15, 0x5c, 0xea, 0x4f, 0x64, 0xc7, + 0x75, 0x7a, 0xe9, 0x1b, 0x74, 0x84, 0x90, 0x4d, 0x19, 0x17, + 0x22, 0xeb, 0x37, 0x69, 0xd6, 0xca, 0xfa, 0x5f, 0x16, 0xea, + 0xe5, 0x27, 0x68, 0x57, 0xd4, 0x6e, 0x58, 0x28, 0x63, 0x19, + 0x96, 0x6c, 0xd0, 0x53, 0x23, 0x05, 0x51, 0xb6, 0x30, 0xd8, + 0xc4, 0xc6, 0x8c, 0xe2, 0x18, 0xd7, 0xe9, 0xf3, 0x0c, 0xee, + 0x93, 0x59, 0x75, 0x4d, 0xf6, 0x25, 0xab, 0x30, 0x09, 0x61, + 0xa7, 0xa9, 0xa1, 0x31, 0xb2, 0x02, 0xe8, 0x72, 0x36, 0x67, + 0xa5, 0x62, 0xb9, 0x8d, 0x26, 0x23, 0x58, 0xfa, 0xd5, 0x3e, + 0x2c, 0x7b, 0x9d, 0x22, 0x6f, 0x56, 0x23, 0x7c, 0xa4, 0xb0, + 0x31, 0x1b, 0x11, 0xdb, 0x63, 0x01, 0xe9, 0x2e, 0x45, 0xb1, + 0x64, 0x49, 0x3f, 0x02, 0x68, 0x22, 0xd7, 0x9c, 0xf5, 0x9c, + 0x4a, 0xdb, 0x9b, 0xd4, 0x89, 0x1a, 0x0e, 0x74, 0x21, 0x75, + 0xf3, 0x29, 0x61, 0x60, 0xd9, 0xe1, 0xc1, 0xc4, 0x8d, 0x08, + 0x26, 0x0b, 0xd8, 0x5f, 0xd1, 0x4b, 0xa1, 0x71, 0x98, 0x8c, + 0xe9, 0x8c, 0xd0, 0xe1, 0x95, 0x17, 0xc3, 0xb9, 0x32, 0xc5, + 0xfe, 0x01, 0x34, 0x11, 0x8a, 0x4e, 0x25, 0x71, 0x01, 0xed, + 0xf3, 0x1c, 0x79, 0xf9, 0xc7, 0x2f, 0x39, 0x19, 0x91, 0x4a, + 0x27, 0x11, 0xf8, 0x57, 0xb3, 0xe0, 0x7c, 0x39, 0x86, 0x08, + 0x56, 0x8c, 0xc1, 0x03, 0x5c, 0x33, 0x5d, 0xd2, 0x97, 0xc4, + 0xb0, 0x14, 0xaa, 0x1d, 0x0d, 0xc0, 0xdc, 0xfd, 0x8a, 0x28, + 0x2c, 0xed, 0x34, 0xe1, 0xb1, 0x76, 0x05, 0xdf, 0xb9, 0x6c, + 0x5e, 0x9b, 0x5d, 0x93, 0xdd, 0x7d, 0x90, 0xa1, 0xbb, 0x55, + 0x19, 0x96, 0x85, 0x50, 0xed, 0x74, 0x34, 0x86, 0xf6, 0x72, + 0x6d, 0xa0, 0xb0, 0x32, 0xd0, 0x02, 0x0f, 0x49, 0x21, 0xbe, + 0xe6, 0x1a, 0x82, 0x6f, 0x9d, 0x86, 0x15, 0xbf, 0x99, 0x1e, + 0x4d, 0x74, 0x89, 0x56, 0xf2, 0xab, 0xa5, 0x29, 0xca, 0x1e, + 0x25, 0x32, 0xa0, 0x95, 0xdd, 0xd1, 0xae, 0x09, 0xdc, 0x67, + 0xde, 0xae, 0x6e, 0xbf, 0x58, 0x2e, 0x12, 0x9c, 0x63, 0x9f, + 0xd6, 0x7b, 0xa3, 0xa0, 0x08, 0x4d, 0xe6, 0x51, 0x04, 0x5a, + 0x71, 0x37, 0x92, 0x3b, 0x52, 0xa2, 0xd8, 0x10, 0x07, 0x9e, + 0xf1, 0x5b, 0x39, 0x12, 0x99, 0xf9, 0x50, 0xe0, 0x47, 0x88, + 0x08, 0x24, 0x9f, 0x21, 0x83, 0x2f, 0xa8, 0xe0, 0x80, 0x8f, + 0x54, 0x18, 0x6a, 0x1d, 0xab, 0xe1, 0xb0, 0xdd, 0x20, 0x93, + 0x6b, 0x57, 0x0e, 0x08, 0x4d, 0x1d, 0x07, 0x80, 0x25, 0xb0, + 0x1e, 0xb9, 0x8e, 0x3a, 0x82, 0x1c, 0x94, 0x17, 0x6f, 0x93, + 0x03, 0xf4, 0xd6, 0x24, 0x8b, 0xc8, 0x8a, 0x71, 0x4b, 0x2b, + 0x70, 0xde, 0x69, 0x33, 0x7d, 0x8b, 0xd4, 0xd3, 0xdf, 0x67, + 0xe4, 0xdb, 0xa8, 0x79, 0x1a, 0x65, 0x35, 0xfa, 0x16, 0x0a, + 0xd4, 0x2a, 0x38, 0xff, 0x6a, 0xe5, 0x29, 0x19, 0x80, 0xa7, + 0x31, 0x3d, 0x0e, 0x6b, 0xa4, 0x3e, 0xbd, 0xfc, 0x90, 0x47, + 0xbf, 0x1b, 0xf6, 0x56, 0x86, 0x54, 0xa6, 0x8e, 0x24, 0xb9, + 0x5e, 0x84, 0x86, 0x1f, 0xd3, 0x15, 0x43, 0x33, 0x48, 0x71, + 0xb8, 0xb4, 0xb5, 0x2a, 0x44, 0xcf, 0xe3, 0x7d, 0xec, 0x0a, + 0xcf, 0x8b, 0x76, 0xa0, 0xbd, 0x9c, 0xf8, 0x06, 0x4c, 0xd5, + 0x43, 0x1b, 0xb1, 0x62, 0x32, 0xef, 0xc9, 0xa0, 0x19, 0xe8, + 0x68, 0xcf, 0x2f, 0xe4, 0xda, 0x83, 0xa3, 0x64, 0x63, 0x04, + 0x7e, 0x48, 0x60, 0xf5, 0x3f, 0x0a, 0xce, 0x79, 0xee, 0x38, + 0x74, 0x29, 0x18, 0xfc, 0xbe, 0xaf, 0xed, 0x4b, 0xa3, 0x28, + 0x97, 0x3a, 0x1a, 0x43, 0x7b, 0x39, 0xd7, 0x50, 0x58, 0x19, + 0x68, 0x01, 0x6e, 0xd2, 0x6f, 0x57, 0x37, 0xbe, 0x2c, 0x17, + 0x09, 0x4e, 0xd0, 0xae, 0x6b, 0xdc, 0xb0, 0x50, 0xc3, 0xb4, + 0xf0, 0xb2, 0x80, 0x11, 0x38, 0x2f, 0x68, 0x6c, 0xd2, 0xa7, + 0x3c, 0x45, 0xe0, 0x2b, 0x21, 0xb6, 0x72, 0x24, 0xf1, 0x31, + 0xa0, 0x03, 0x8e, 0xd3, 0x10, 0x48, 0xfd, 0x42, 0xc5, 0x5e, + 0x62, 0x58, 0xfa, 0xcf, 0x31, 0xc9, 0x84, 0xda, 0xd2, 0x89, + 0xab, 0x5d, 0xdf, 0xc4, 0x55, 0x81, 0xce, 0x7f, 0x09, 0x89, + 0x67, 0xfc, 0x37, 0x3d, 0x30, 0x94, 0x32, 0xd1, 0x93, 0x5f, + 0xdc, 0x99, 0x93, 0x03, 0xc3, 0xdd, 0xa8, 0x30, 0xd4, 0x3a, + 0x95, 0x01, 0xa3, 0x79, 0x40, 0xe5, 0xd6, 0xae, 0x4c, 0xa7, + 0xa9, 0x55, 0x26, 0xe2, 0xa6, 0xb6, 0xc1, 0xdc, 0xae, 0xaa, + 0xbb, 0x98, 0xdd, 0xab, 0xde, 0xe5, 0x06, 0x2b, 0x6f, 0x48, + 0xd5, 0x53, 0xd7, 0xe2, 0x96, 0x56, 0xe0, 0x7f, 0xd2, 0x66, + 0x3f, 0x24, 0x30, 0x9b, 0xfe, 0x05, 0x67, 0xdd, 0x77, 0x1c, + 0x3a, 0xf5, 0x0c, 0x7e, 0x5f, 0xb6, 0x43, 0xee, 0x88, 0xeb, + 0xc0, 0xf8, 0x24, 0xd9, 0x5c, 0x5a, 0xbb, 0x15, 0x22, 0x86, + 0x90, 0xdf, 0x73, 0x83, 0x99, 0xce, 0xd8, 0xe7, 0xc1, 0x6b, + 0xb6, 0xc0, 0x94, 0x5f, 0xb7, 0xe6, 0x82, 0x1d, 0xad, 0x66, + 0x9f, 0xe5, 0xb7, 0xaf, 0x14, 0x38, 0x61, 0x22, 0x02, 0x09, + 0x57, 0x99, 0x50, 0x7b, 0xf0, 0x1a, 0x55, 0xb1, 0x78, 0x63, + 0xf7, 0x3f, 0xc4, 0xb7, 0x93, 0xa1, 0x84, 0x23, 0x5a, 0x4c, + 0x47, 0x29, 0xfb, 0x22, 0xc2, 0xd5, 0xfd, 0x23, 0x15, 0xa6, + 0x92, 0x44, 0x4e, 0x8e, 0x72, 0x90, 0x3c, 0xe7, 0x84, 0xbd, + 0x1e, 0x68, 0x4d, 0x7f, 0x31, 0x5d, 0x54, 0xb9, 0x21, 0x78, + 0xf7, 0x13, 0x61, 0x9b, 0x4e, 0xe9, 0xd1, 0xa4, 0xae, 0x78, + 0x94, 0xc8, 0xc5, 0x11, 0xf2, 0xc2, 0xfd, 0x24, 0x56, 0xf2, + 0x98, 0x23, 0x2b, 0xfb, 0xb8, 0x92, 0x71, 0xef, 0xad, 0x46, + 0x26, 0xac, 0xa5, 0x0c, 0x29, 0xfb, 0x94, 0x75, 0xf5, 0x6b, + 0xd1, 0x34, 0x1c, 0xe8, 0x42, 0xea, 0x25, 0x52, 0xc2, 0xc0, + 0x7b, 0xce, 0x7f, 0x9f, 0xdc, 0xbd, 0xb0, 0x5c, 0x24, 0xfb, + 0xc6, 0xfd, 0x6f, 0xf6, 0x85, 0x83, 0x10, 0x9a, 0x0f, 0xa2, + 0x08, 0xb4, 0xe2, 0x6e, 0xe7, 0x76, 0xa4, 0x87, 0x73, 0x20, + 0x0e, 0xff, 0xff, 0x53, 0x74, 0x0f, 0x9e, 0x79, 0x75, 0x50, + 0x59, 0x31, 0x86, 0x1e, 0x1d, 0x3d, 0x17, 0x38, 0x5d, 0x7c, + 0xca, 0x54, 0xcf, 0xcc, 0xe3, 0x07, 0xa5, 0x95, 0x91, 0xa8, + 0xd3, 0xba, 0x0a, 0x37, 0x31, 0x2c, 0x7d, 0x86, 0xf9, 0x85, + 0x42, 0x6d, 0x69, 0xa5, 0xb4, 0xcf, 0x8e, 0x62, 0xcb, 0xa1, + 0xb7, 0x33, 0xae, 0x93, 0xba, 0xb6, 0x0a, 0x1c, 0xd1, 0x11, + 0x01, 0xe5, 0xca, 0xad, 0x28, 0xdc, 0xb3, 0xf4, 0xdd, 0x5a, + 0xb8, 0x9b, 0xd3, 0xe6, 0x98, 0xed, 0x28, 0xb4, 0xa6, 0xa5, + 0xca, 0x93, 0x6b, 0x54, 0x70, 0x3d, 0xd4, 0x09, 0x52, 0x32, + 0xc3, 0x8d, 0x62, 0x7a, 0x1c, 0xd6, 0x8b, 0x7c, 0xc0, 0x77, + 0x44, 0x94, 0x60, 0x7c, 0x12, 0x8d, 0x2e, 0x2d, 0xbc, 0xeb, + 0x11, 0x43, 0x48, 0x8e, 0x7f, 0x09, 0x0c, 0x56, 0xde, 0x90, + 0x69, 0xa6, 0x6d, 0x07, 0xef, 0xac, 0x03, 0xfe, 0x67, 0xcc, + 0x1e, 0x92, 0x42, 0xbf, 0x0f, 0x34, 0xc7, 0xde, 0xf9, 0xcf, + 0x2a, 0xbd, 0xf1, 0x3c, 0x9a, 0xe8, 0xd1, 0xac, 0x27, 0x95, + 0x89, 0x52, 0x57, 0x3c, 0x4a, 0x64, 0x83, 0xe9, 0x79, 0x61, + 0x9f, 0x12, 0x78, 0x0d, 0xcb, 0xb9, 0x3c, 0xd0, 0x9a, 0xfe, + 0x62, 0xba, 0xa8, 0xb1, 0x42, 0xf0, 0x2d, 0x26, 0xc2, 0xf5, + 0x9c, 0x11, 0x61, 0x8b, 0x9f, 0xf0, 0xeb, 0x53, 0x49, 0x22, + 0x27, 0x47, 0x39, 0x48, 0xbb, 0xb9, 0x3b, 0x0b, 0xbc, 0xc1, + 0xa2, 0xd1, 0x0a, 0xd6, 0x7a, 0x16, 0x7e, 0xb5, 0xcd, 0x0d, + 0x6d, 0x11, 0xdb, 0x71, 0xd7, 0xd3, 0x06, 0xb5, 0x4f, 0x0f, + 0xbe, 0xe2, 0x46, 0xda, 0x18, 0xf5, 0xe1, 0xc1, 0x36, 0xb0, + 0x91, 0x4d, 0xb2, 0x8e, 0xa0, 0xfe, 0xac, 0xa3, 0xec, 0x01, + 0x8d, 0xd0, 0x1f, 0xd3, 0x2e, 0x1c, 0xee, 0xae, 0x60, 0x01, + 0x7a, 0xf0, 0xb1, 0x38, 0xea, 0x3e, 0x43, 0x8b, 0x82, 0xd8, + 0xa0, 0xdc, 0x41, 0x1e, 0x91, 0x8b, 0xf1, 0x48, 0x9c, 0x7b, + 0x28, 0xc7, 0x01, 0x32, 0xba, 0xf8, 0x57, 0xa8, 0x5d, 0x5b, + 0x05, 0x0e, 0x89, 0xe9, 0xe1, 0x93, 0x65, 0xb7, 0x14, 0x6e, + 0x8c, 0xd0, 0xed, 0xc1, 0x46, 0x9e, 0xb4, 0x3b, 0xef, 0xf1, + 0x12, 0x41, 0xaa, 0xdb, 0x95, 0x25, 0xcf, 0x3e, 0x65, 0x2a, + 0x86, 0x66, 0x90, 0xe2, 0xb3, 0xab, 0xa9, 0x54, 0x88, 0x5d, + 0x05, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x12, + 0x18, 0xac, 0x7f, 0xe3, 0xd2, 0x8f, 0xda, 0x0e, 0x1d, 0x9b, + 0x06, 0x3f, 0xce, 0x5b, 0x42, 0xaf, 0xe4, 0x48, 0x21, 0x62, + 0x83, 0x06, 0xdf, 0x65, 0x20, 0x90, 0x39, 0x84, 0x49, 0xbc, + 0xd6, 0xa8, 0xe0, 0x7a, 0x6b, 0x12, 0xa4, 0x64, 0x45, 0xd9, + 0xc4, 0xf4, 0x38, 0x6f, 0xd5, 0xf8, + }, + { + /* 11 */ + 0xd8, 0x59, 0xe0, 0xf8, 0xd2, 0x2a, 0xca, 0x1c, 0x17, 0x58, + 0x25, 0x47, 0x72, 0xa8, 0x1d, 0x31, 0x69, 0xb6, 0x74, 0x38, + 0x5c, 0x64, 0x10, 0xef, 0x82, 0xee, 0xaa, 0xe9, 0x8a, 0x53, + 0xb7, 0xc0, 0xc0, 0xd2, 0x41, 0xdb, 0x4a, 0x91, 0xd0, 0xa1, + 0x55, 0xac, 0x5e, 0x8f, 0x3d, 0x01, 0xdf, 0x89, 0xba, 0xbf, + 0xf7, 0x5c, 0x54, 0x08, 0xff, 0xc7, 0x32, 0xa4, 0x91, 0x4e, + 0xac, 0x20, 0xdc, 0x8e, 0x16, 0xa0, 0xc6, 0xfb, 0x77, 0x8c, + 0x4a, 0x68, 0x8d, 0x24, 0x3c, 0x03, 0xa8, 0x75, 0xec, 0xfe, + 0x87, 0x68, 0xac, 0xfe, 0x5b, 0xa5, 0x09, 0xf4, 0xe0, 0xa0, + 0x17, 0xcf, 0x05, 0xd1, 0x3c, 0x6c, 0x58, 0xc5, 0x9e, 0x6a, + 0x1f, 0x75, 0xeb, 0x63, 0x71, 0x90, 0xf0, 0x0c, 0xe5, 0x17, + 0x36, 0x7e, 0x59, 0x63, 0xf5, 0x7e, 0xaf, 0xd1, 0x24, 0x56, + 0x06, 0xc5, 0x5c, 0xba, 0x14, 0xc2, 0xf0, 0x73, 0xc4, 0x0f, + 0x2e, 0x8b, 0xcf, 0x44, 0x6a, 0x75, 0x4a, 0x3b, 0xab, 0x12, + 0x7f, 0xd3, 0x41, 0xbd, 0x6a, 0x9f, 0xc9, 0x04, 0x4f, 0x4b, + 0x82, 0xb0, 0x1b, 0x11, 0x9d, 0xf0, 0x5a, 0xef, 0x3e, 0xd7, + 0x05, 0x7b, 0x04, 0x44, 0x35, 0x71, 0x75, 0xe1, 0x68, 0xc2, + 0x59, 0x2b, 0xb3, 0x07, 0x58, 0x39, 0x9a, 0x98, 0x09, 0x99, + 0xf6, 0x6f, 0x66, 0xa8, 0xca, 0x96, 0x35, 0x2c, 0xf9, 0x7f, + 0xa6, 0xed, 0x06, 0x52, 0xb9, 0x78, 0x26, 0x5e, 0xe7, 0xbe, + 0xf1, 0x3d, 0x6e, 0x32, 0x63, 0xbb, 0xd1, 0x2e, 0xa6, 0xe9, + 0x39, 0x2f, 0x49, 0x66, 0x5f, 0xae, 0x6f, 0xc7, 0x1f, 0x1b, + 0xa1, 0x5b, 0x80, 0x02, 0x0d, 0x02, 0xda, 0xe4, 0xfc, 0x18, + 0xc2, 0x8a, 0x56, 0x2f, 0x70, 0xd2, 0x37, 0x60, 0xa7, 0x51, + 0xd1, 0x86, 0x55, 0x4c, 0xab, 0xe7, 0xb2, 0x42, 0x5e, 0xe0, + 0xa0, 0x08, 0x07, 0x1a, 0x24, 0x54, 0x43, 0x67, 0x82, 0x75, + 0x94, 0xe1, 0x63, 0x81, 0xaa, 0x9b, 0xbc, 0xdd, 0x7a, 0x02, + 0x7d, 0xd1, 0x85, 0xe7, 0x7a, 0xd6, 0xf8, 0x2e, 0x54, 0x9e, + 0x0e, 0x0a, 0x8c, 0x60, 0x24, 0xb8, 0x73, 0x76, 0x41, 0xe8, + 0x54, 0x5d, 0x37, 0x6a, 0x3e, 0xeb, 0x44, 0x31, 0x27, 0x72, + 0x5b, 0x6b, 0x32, 0xcb, 0xd2, 0xaf, 0xe8, 0x70, 0xb8, 0xc8, + 0x20, 0x1d, 0xc7, 0x1f, 0x97, 0x11, 0xd7, 0xa6, 0xad, 0x43, + 0x2c, 0x83, 0x4f, 0x35, 0xee, 0xdb, 0x94, 0xd0, 0xd9, 0x48, + 0x78, 0x06, 0x93, 0xea, 0x1b, 0x3f, 0xcd, 0xd0, 0x9b, 0x3f, + 0xb6, 0x89, 0x12, 0x2b, 0x03, 0x83, 0x2e, 0x5d, 0x0a, 0x61, + 0x78, 0xd8, 0x0b, 0x50, 0x63, 0x9c, 0xda, 0x46, 0x25, 0x34, + 0xa7, 0x12, 0x1e, 0xe0, 0x54, 0xdb, 0x76, 0x7f, 0xa2, 0x34, + 0x56, 0x7f, 0xcc, 0xb3, 0xe5, 0x7a, 0x70, 0x50, 0xea, 0x86, + 0xe3, 0x89, 0x1e, 0x36, 0x38, 0xac, 0x5f, 0xe6, 0x3a, 0xdc, + 0x83, 0xd2, 0xba, 0xc6, 0xdf, 0xaa, 0x1a, 0xf6, 0xb8, 0xdb, + 0xf7, 0xf3, 0x12, 0xf1, 0x2f, 0xde, 0xcc, 0x93, 0x57, 0xef, + 0x6a, 0x58, 0x31, 0xfe, 0x8f, 0x19, 0x4b, 0x1e, 0x5c, 0xd5, + 0x5d, 0x88, 0xd4, 0xea, 0x94, 0x76, 0x95, 0x24, 0xfe, 0x65, + 0x82, 0xb9, 0xe6, 0xa7, 0x06, 0x66, 0xce, 0xa8, 0xae, 0x70, + 0x5c, 0xa3, 0x94, 0xdf, 0x0b, 0xe5, 0x74, 0xc4, 0xe7, 0x01, + 0x6d, 0x72, 0x7e, 0x0c, 0x61, 0x45, 0x2b, 0xf6, 0x38, 0x69, + 0xfa, 0x30, 0xb2, 0xc9, 0x90, 0x6e, 0x01, 0x11, 0x9c, 0x8d, + 0x8c, 0xa9, 0x1a, 0xd1, 0x87, 0x7a, 0x5c, 0x71, 0x16, 0x9f, + 0x1a, 0x04, 0x77, 0x0b, 0x3b, 0x30, 0x47, 0xd7, 0xac, 0x5e, + 0xe0, 0x67, 0x6e, 0xc0, 0x8d, 0xa2, 0x53, 0x95, 0xfd, 0xf6, + 0xc5, 0x33, 0xce, 0x57, 0xd6, 0x82, 0xee, 0xec, 0xb1, 0xcc, + 0x40, 0x01, 0xa3, 0x92, 0x3d, 0x6b, 0x7c, 0x17, 0x2a, 0x4f, + 0x07, 0x05, 0x46, 0x30, 0x12, 0x5c, 0xd8, 0x3b, 0xf1, 0xa1, + 0xab, 0x89, 0x09, 0x80, 0x2b, 0x2d, 0xa6, 0xd2, 0x04, 0x6a, + 0x52, 0x45, 0x5e, 0x37, 0xfd, 0x05, 0x1a, 0x79, 0x45, 0x3c, + 0x26, 0x92, 0x87, 0xa8, 0xd8, 0x0e, 0x94, 0xf0, 0x3f, 0x6b, + 0x51, 0x1a, 0x2b, 0xde, 0x66, 0xb8, 0x93, 0x3d, 0x38, 0x28, + 0x75, 0x43, 0x90, 0xa5, 0x0f, 0x1b, 0x29, 0xf8, 0x4b, 0x71, + 0xdb, 0xaa, 0xe1, 0x31, 0xb1, 0x8a, 0x21, 0x2d, 0x20, 0xed, + 0x43, 0x06, 0x3b, 0x85, 0xe2, 0xda, 0x29, 0xf3, 0x11, 0x8d, + 0x23, 0x39, 0xe8, 0xb3, 0xca, 0x4a, 0x31, 0xcc, 0x82, 0x13, + 0xa8, 0xba, 0x6e, 0xd4, 0x7c, 0x15, 0x88, 0x62, 0x4e, 0xe4, + 0xb6, 0xd6, 0x64, 0x55, 0x67, 0x9d, 0x13, 0xe0, 0xb3, 0x53, + 0x40, 0x3a, 0x4d, 0x3e, 0xed, 0x22, 0x6d, 0x8f, 0x99, 0x86, + 0x8b, 0xcc, 0x1d, 0x0e, 0x17, 0x19, 0x04, 0x4b, 0xc1, 0xda, + 0xcb, 0xab, 0xc3, 0x64, 0x5d, 0x30, 0x48, 0x37, 0xe1, 0xe9, + 0x4e, 0xa7, 0x46, 0xb5, 0x0d, 0x89, 0xa2, 0x3d, 0x2e, 0xd9, + 0x0b, 0xae, 0x2a, 0xd1, 0xf6, 0x4d, 0xc8, 0x85, 0x73, 0x6e, + 0x28, 0x75, 0x16, 0x34, 0xf0, 0x51, 0xca, 0x11, 0xef, 0x78, + 0xb3, 0xd2, 0xb7, 0x65, 0xd6, 0x2e, 0x15, 0x1b, 0x11, 0x90, + 0x7e, 0x57, 0x4d, 0xa1, 0x70, 0x9b, 0xbe, 0x0f, 0x74, 0x7b, + 0xc5, 0x67, 0xb7, 0x4f, 0x7d, 0x97, 0x34, 0x2f, 0xb3, 0x75, + 0x2d, 0x25, 0x24, 0x21, 0x5e, 0x7f, 0x5b, 0xe5, 0xae, 0x1d, + 0xd4, 0xb0, 0x62, 0x3f, 0xdd, 0x32, 0x31, 0x73, 0xea, 0x52, + 0x43, 0x11, 0xfb, 0x8c, 0xf3, 0x7e, 0x5a, 0xe5, 0x6f, 0x44, + 0x81, 0xbe, 0xe2, 0x7a, 0x69, 0x36, 0x4b, 0x7d, 0x14, 0xa4, + 0x43, 0x34, 0x61, 0x42, 0x49, 0x37, 0xea, 0xf0, 0x86, 0xce, + 0xc7, 0xea, 0xeb, 0x01, 0xc6, 0xc1, 0x97, 0xf5, 0xbb, 0x79, + 0xf4, 0x04, 0xfa, 0x61, 0xc9, 0x0d, 0xf4, 0x6f, 0x33, 0x5c, + 0xa8, 0xff, 0x1c, 0x14, 0xdb, 0xc0, 0x48, 0xb3, 0xe6, 0xec, + 0xb0, 0x49, 0xff, 0xd4, 0x3e, 0xea, 0x15, 0xc6, 0xe2, 0xe3, + 0x23, 0x18, 0x09, 0x2e, 0x6c, 0xfc, 0x80, 0x9c, 0x7e, 0x92, + 0xcd, 0x5f, 0x21, 0x7f, 0x66, 0xc8, 0xd5, 0x4b, 0x97, 0xbf, + 0x2b, 0x4f, 0xf5, 0x7c, 0xc4, 0xd9, 0x8c, 0x55, 0x91, 0xf9, + 0xb9, 0x45, 0xf1, 0xf7, 0x10, 0x97, 0xc0, 0x03, 0xfc, 0xa3, + 0x71, 0x6d, 0xf5, 0x98, 0xe9, 0xa7, 0xf0, 0xfd, 0x74, 0xb8, + 0x65, 0x25, 0xf9, 0x66, 0x60, 0x69, 0xc1, 0x8c, 0x25, 0xa9, + 0x68, 0xb1, 0xcb, 0x56, 0x2f, 0xa6, 0xff, 0xe1, 0x8e, 0xa5, + 0x44, 0x93, 0x50, 0x19, 0x02, 0x1b, 0x4b, 0x0a, 0x2c, 0xf3, + 0x7e, 0x59, 0xe8, 0x6c, 0x6a, 0xf2, 0x0c, 0xa4, 0xb1, 0xf0, + 0x4c, 0xbc, 0x0d, 0xbf, 0x21, 0x7a, 0xdc, 0x64, 0xc6, 0xb5, + 0x61, 0x5c, 0x8f, 0x11, 0x72, 0x5e, 0x92, 0xcc, 0xbe, 0x9f, + 0xde, 0x4d, 0x3e, 0x36, 0x81, 0xb6, 0xc3, 0x04, 0xa4, 0x66, + 0xef, 0x07, 0xea, 0xed, 0x02, 0xc4, 0x81, 0x6d, 0x84, 0xb4, + 0x80, 0x32, 0xcf, 0x18, 0x3d, 0xd7, 0x5b, 0xa2, 0x0f, 0xad, + 0xf6, 0x33, 0xd2, 0x04, 0x86, 0x81, 0xa9, 0xf1, 0xe0, 0xe2, + 0x62, 0xe6, 0x17, 0xa4, 0x86, 0x22, 0x35, 0xdb, 0x25, 0xfc, + 0xb4, 0x09, 0xde, 0x88, 0xc1, 0xbf, 0x35, 0xae, 0x85, 0x02, + 0xc6, 0xc4, 0x41, 0x58, 0xec, 0xe9, 0xaf, 0x78, 0x2d, 0x96, + 0x1f, 0x8a, 0xe0, 0xf5, 0xbf, 0x1e, 0xe8, 0xf6, 0x49, 0xce, + 0xad, 0x9e, 0xfa, 0xed, 0x68, 0x5e, 0xa5, 0xea, 0x68, 0x10, + 0x1f, 0x2c, 0xec, 0xc0, 0xdf, 0xda, 0xf5, 0xbb, 0x06, 0x5f, + 0x7b, 0x86, 0x71, 0xcd, 0xdc, 0x84, 0x8f, 0xa8, 0x57, 0xff, + 0x70, 0xc8, 0x08, 0xcf, 0xd0, 0xda, 0x30, 0x7a, 0x83, 0x05, + 0x40, 0x4e, 0x3f, 0x49, 0x87, 0xce, 0xf1, 0xde, 0x33, 0x64, + 0x8b, 0xc4, 0xaa, 0xbe, 0xf4, 0xc6, 0xa0, 0xbb, 0x80, 0x57, + 0x6f, 0x38, 0xb8, 0x10, 0x9e, 0xfa, 0x71, 0x29, 0xc2, 0xe0, + 0x51, 0x2c, 0xa7, 0x4f, 0x52, 0x3b, 0xf9, 0xc2, 0x90, 0x9b, + 0x18, 0x92, 0xb3, 0xad, 0x50, 0x8e, 0x46, 0x0f, 0x9f, 0xe3, + 0x0d, 0xdd, 0xc3, 0x1e, 0x13, 0x49, 0xa2, 0x54, 0x6c, 0x07, + 0x4a, 0x78, 0xfe, 0xd4, 0x2b, 0x77, 0x9d, 0x59, 0x78, 0x21, + 0xbc, 0x5b, 0x5f, 0x20, 0xba, 0x82, 0x01, 0x84, 0x0c, 0x1c, + 0xae, 0x90, 0xe7, 0x8f, 0x80, 0x0f, 0xe8, 0xc5, 0x51, 0x2a, + 0x36, 0xe2, 0x25, 0x3c, 0x7f, 0x6a, 0x10, 0xf2, 0x7f, 0x83, + 0x51, 0xd2, 0xad, 0xd6, 0x7c, 0x19, 0x52, 0x31, 0xcb, 0xce, + 0x3d, 0xd0, 0xfe, 0x2c, 0xa7, 0x45, 0x56, 0x13, 0xb4, 0xcd, + 0x1e, 0x57, 0xef, 0x17, 0x44, 0x4c, 0xb6, 0x7c, 0xa1, 0x1d, + 0xeb, 0x43, 0xdf, 0x9c, 0x77, 0x25, 0xe9, 0xaf, 0xdd, 0x9f, + 0x33, 0x35, 0x97, 0x21, 0xc7, 0x26, 0x93, 0xb7, 0xdc, 0x6b, + 0xf8, 0x2a, 0xd3, 0xc4, 0x9c, 0x0b, 0xaf, 0x6f, 0xc8, 0xaa, + 0x4d, 0x4c, 0xe5, 0xad, 0x7b, 0xd6, 0x33, 0x54, 0x65, 0x4b, + 0xfb, 0x16, 0x9d, 0xde, 0x53, 0x97, 0xaa, 0x4d, 0x88, 0xdf, + 0x05, 0xda, 0x52, 0x11, 0x4e, 0xbd, 0xc3, 0x7f, 0x67, 0xee, + 0xe1, 0x5e, 0xd4, 0xfd, 0x51, 0x08, 0x9e, 0x96, 0xc7, 0xa3, + 0x36, 0x22, 0xf9, 0x23, 0xb4, 0x1d, 0x7c, 0x6d, 0x42, 0xc1, + 0xe9, 0x61, 0x24, 0x45, 0xac, 0xb4, 0xdd, 0xce, 0x10, 0x6b, + 0x8b, 0xd7, 0xbb, 0xdc, 0x2e, 0x0c, 0x99, 0x1d, 0x4d, 0x50, + 0xc9, 0xba, 0x37, 0xe2, 0xe3, 0xa9, 0xb2, 0x83, 0x54, 0x25, + 0x49, 0x91, 0x8a, 0xfd, 0xfe, 0x03, 0x89, 0x80, 0x7a, 0xdc, + 0x0e, 0x8b, 0xdf, 0x0c, 0xcd, 0xa3, 0xb2, 0xc6, 0x29, 0xfc, + 0x9d, 0x61, 0x48, 0xac, 0x0c, 0x49, 0xb8, 0xb7, 0x28, 0x47, + 0x23, 0xe6, 0x77, 0x6f, 0x6c, 0x63, 0xe2, 0x81, 0xed, 0xec, + 0x31, 0x27, 0xbf, 0x13, 0xa6, 0x41, 0xa4, 0x56, 0x39, 0x0a, + 0x34, 0xf2, 0x8a, 0x78, 0x4c, 0xe7, 0xcd, 0x93, 0x73, 0x1c, + 0xeb, 0x23, 0x7e, 0xd6, 0xad, 0xb9, 0x5a, 0xb3, 0x93, 0x20, + 0x7a, 0x9a, 0xc8, 0xd5, 0x01, 0xfb, 0xf5, 0x80, 0xf6, 0x7d, + 0x20, 0x27, 0xfe, 0xc5, 0xa2, 0x67, 0x99, 0x6f, 0xf8, 0x32, + 0xa4, 0x62, 0x55, 0x5f, 0x7a, 0x63, 0xcf, 0x5f, 0x4d, 0x17, + 0x15, 0x02, 0x4f, 0x41, 0xed, 0x29, 0xb5, 0xf2, 0x2b, 0x08, + 0x37, 0xc2, 0x64, 0xb4, 0xae, 0xdc, 0xa0, 0x7c, 0xd2, 0x65, + 0xd4, 0xc1, 0xda, 0x3b, 0xbd, 0x33, 0x10, 0x91, 0x9b, 0x3e, + 0x62, 0x8d, 0x46, 0xcb, 0xa9, 0x9d, 0xbd, 0xc3, 0x99, 0x9a, + 0x08, 0xaa, 0x60, 0xe0, 0xde, 0x0b, 0x59, 0x80, 0xf4, 0x74, + 0x2d, 0xa2, 0xe6, 0x65, 0x4b, 0x75, 0x11, 0x13, 0xcc, 0x1f, + 0x7f, 0x16, 0xb2, 0xc3, 0x2b, 0xe8, 0x5a, 0x87, 0x0f, 0xca, + 0x96, 0xea, 0x22, 0x26, 0x5b, 0x3e, 0xa8, 0xc2, 0x5e, 0xf7, + 0xa6, 0x51, 0x0f, 0x7b, 0xa0, 0x17, 0x58, 0xd0, 0x46, 0x87, + 0xae, 0x44, 0xb6, 0x1b, 0x46, 0xac, 0x18, 0xb4, 0xf2, 0x78, + 0x13, 0xde, 0x4d, 0x2a, 0x6a, 0x95, 0xbd, 0xd2, 0x5c, 0x18, + 0xf1, 0x3a, 0x9a, 0xa0, 0x51, 0xb7, 0x6e, 0x07, 0x05, 0x91, + 0xa7, 0xc5, 0xa8, 0x4a, 0xa5, 0xc0, 0x84, 0x13, 0x5a, 0x49, + 0xcd, 0xf1, 0xf6, 0x38, 0x28, 0x02, 0x71, 0xe7, 0x09, 0x15, + 0x6b, 0x39, 0xa2, 0x10, 0xff, 0xef, 0x4d, 0x85, 0x6c, 0x44, + 0x31, 0x46, 0xab, 0x3a, 0xf8, 0xda, 0xd3, 0x09, 0x83, 0x64, + 0x08, 0x6c, 0xef, 0x28, 0xb0, 0x4a, 0x3b, 0xa7, 0x26, 0x73, + 0x6b, 0x4e, 0xf0, 0x07, 0xc0, 0x9d, 0xb9, 0x24, 0xe4, 0x18, + 0xd1, 0x87, 0xa8, 0xdc, 0xa3, 0x90, 0x98, 0x3a, 0x5d, 0xbe, + 0x9a, 0x2e, 0x2a, 0x04, 0x9e, 0x82, 0x19, 0x52, 0xa9, 0x27, + 0x56, 0x10, 0x6e, 0x47, 0xc8, 0xab, 0x9f, 0x7b, 0x83, 0xf8, + 0x67, 0xca, 0x6b, 0x41, 0x77, 0x76, 0xb9, 0x66, 0x20, 0xe1, + 0xc5, 0xa9, 0x45, 0x9f, 0x7f, 0xe0, 0xa5, 0x40, 0x3d, 0x6e, + 0x07, 0xa4, 0x8e, 0x06, 0x87, 0xb0, 0xbd, 0x4b, 0x25, 0x30, + 0xc2, 0xf2, 0xd7, 0x4c, 0xb4, 0xcc, 0x53, 0xca, 0x3e, 0x4e, + 0xcb, 0xad, 0xc3, 0xfb, 0xfc, 0xe7, 0x59, 0xbe, 0x42, 0xfe, + 0xcc, 0x53, 0x69, 0x96, 0xed, 0xbd, 0x56, 0x9e, 0xe4, 0x28, + 0xd0, 0x4e, 0x6d, 0x23, 0xf3, 0x1a, 0xb2, 0x09, 0x0f, 0x70, + 0x2a, 0x8c, 0x3b, 0xde, 0xaf, 0x36, 0x8c, 0x9b, 0x30, 0xab, + 0x27, 0xf0, 0x26, 0x7f, 0x9a, 0x54, 0xd4, 0xe9, 0xb9, 0x67, + 0xb8, 0x30, 0x21, 0x74, 0xf7, 0x83, 0xa2, 0xad, 0xdc, 0x0e, + 0x0a, 0xe1, 0x8d, 0x49, 0x93, 0x94, 0xcb, 0x82, 0x22, 0x47, + 0x90, 0xd7, 0xf5, 0x95, 0xf2, 0xbe, 0x40, 0x6f, 0x69, 0xda, + 0xa9, 0xf6, 0xc1, 0x74, 0x2a, 0xcf, 0xfa, 0x35, 0x1f, 0x94, + 0x22, 0xf9, 0xf2, 0x39, 0xcc, 0xd4, 0x19, 0x84, 0xb5, 0x32, + 0xfb, 0x90, 0x0b, 0x9b, 0x60, 0x27, 0x8a, 0x21, 0x7a, 0x33, + 0xba, 0x29, 0x34, 0xc5, 0x6f, 0xe4, 0xcd, 0x40, 0x7a, 0x3a, + 0xf7, 0x51, 0x73, 0xd3, 0xc4, 0xdb, 0xe9, 0xe8, 0x66, 0xee, + 0x4c, 0xea, 0x8e, 0xb9, 0xcb, 0x72, 0xfc, 0x61, 0x12, 0x1e, + 0x57, 0xa0, 0x6c, 0x0b, 0x95, 0x9a, 0x97, 0x9a, 0xd3, 0x7d, + 0x0a, 0x77, 0xa4, 0x22, 0x9c, 0xb9, 0x45, 0xfe, 0xce, 0x1f, + 0x01, 0xbc, 0x88, 0xe5, 0xa0, 0x32, 0x04, 0x36, 0x96, 0x14, + 0x58, 0x25, 0xfc, 0xb2, 0x13, 0xd8, 0xd4, 0x27, 0x61, 0xcf, + 0xaa, 0x98, 0x95, 0x0d, 0xa7, 0x84, 0xbc, 0x03, 0x83, 0x10, + 0x0e, 0x34, 0x48, 0xa8, 0x57, 0x48, 0x92, 0xa6, 0x40, 0xe6, + 0x74, 0x83, 0xc9, 0x15, 0x1b, 0x71, 0xf3, 0x1e, 0xde, 0x35, + 0x11, 0x54, 0x14, 0x97, 0xe1, 0x76, 0x62, 0xe3, 0x0b, 0x4c, + 0xfe, 0x87, 0x3a, 0x1b, 0xfb, 0xdd, 0x99, 0xb1, 0xb4, 0xa5, + 0xe5, 0x40, 0xf4, 0xf7, 0x53, 0x69, 0x02, 0x35, 0x29, 0xc3, + 0x2f, 0xfa, 0x72, 0x14, 0x68, 0x27, 0xd7, 0xf0, 0x98, 0x0d, + 0x59, 0xe5, 0xe6, 0x38, 0x15, 0x46, 0xfc, 0x6f, 0x83, 0xb5, + 0xc3, 0xae, 0xde, 0x70, 0xb3, 0x20, 0xff, 0x37, 0xe2, 0x52, + 0x47, 0x03, 0xa2, 0x58, 0xbf, 0xc4, 0xf3, 0x18, 0x61, 0x79, + 0x8a, 0x26, 0x5a, 0x66, 0xc8, 0x65, 0x1f, 0x27, 0x84, 0xb7, + 0x55, 0xc7, 0x44, 0x8e, 0xe3, 0x6d, 0x29, 0xe9, 0x27, 0xbf, + 0x80, 0xde, 0xd2, 0x77, 0x91, 0x2f, 0x73, 0xb2, 0x03, 0x33, + 0x67, 0x54, 0x57, 0x38, 0x2e, 0xb0, 0x4a, 0x8e, 0xe4, 0x93, + 0x3a, 0x62, 0x9d, 0x6c, 0xdb, 0xf5, 0x60, 0x95, 0x4e, 0x23, + 0x4c, 0xfe, 0xf7, 0xa8, 0x6b, 0x11, 0xb1, 0xce, 0x81, 0x3a, + 0x15, 0x86, 0x7d, 0xfb, 0xee, 0x4a, 0x11, 0x9d, 0x79, 0xfd, + 0x66, 0x6a, 0xed, 0x42, 0x3f, 0x58, 0x8d, 0x8a, 0xac, 0x26, + 0xab, 0x59, 0x3c, 0xae, 0x1d, 0x2e, 0x88, 0x98, 0xaf, 0xf8, + 0xb3, 0x60, 0x42, 0xe8, 0x2d, 0xc5, 0x87, 0x99, 0x7b, 0x1c, + 0x14, 0x01, 0xd9, 0x92, 0xe5, 0xeb, 0xbb, 0x19, 0x9c, 0x48, + 0xe4, 0xac, 0x30, 0xf2, 0x45, 0xf1, 0x3d, 0xf8, 0x5d, 0xf5, + 0x1a, 0x83, 0xd6, 0x72, 0x87, 0x20, 0x3d, 0x1d, 0x9a, 0xc9, + 0xd8, 0x88, 0x62, 0x8c, 0x95, 0x74, 0x33, 0x77, 0xea, 0x03, + 0xb7, 0x96, 0x82, 0x14, 0xa3, 0xcf, 0x7d, 0xd9, 0x48, 0xbb, + 0xcd, 0x50, 0x15, 0x98, 0x25, 0x5c, 0xfa, 0x81, 0x97, 0x16, + 0xec, 0x8e, 0x90, 0xf0, 0xfd, 0x49, 0xe6, 0x58, 0x22, 0x5a, + 0xce, 0xf9, 0x26, 0x03, 0xa5, 0xa6, 0x80, 0x74, 0x9a, 0x7c, + 0x19, 0x44, 0xda, 0xdd, 0xf1, 0xcf, 0x63, 0x40, 0x7c, 0xb0, + 0x36, 0x86, 0xfa, 0xee, 0x52, 0xa9, 0x18, 0xbf, 0x2f, 0x5d, + 0x07, 0xb2, 0x45, 0x35, 0x3b, 0x0d, 0xb2, 0xbf, 0x84, 0x3f, + 0x5b, 0xa6, 0xd2, 0xef, 0x19, 0xb9, 0xac, 0xff, 0x32, 0x5a, + 0x57, 0x6e, 0x50, 0x3e, 0x69, 0xd3, 0x6a, 0x81, 0x6d, 0xfc, + 0xbf, 0xf8, 0x08, 0xa9, 0xd7, 0xd4, 0xec, 0x34, 0x8d, 0xb9, + 0x55, 0xfc, 0xaf, 0xdd, 0xce, 0x3a, 0x64, 0xa1, 0xf5, 0x7a, + 0x9e, 0x45, 0x66, 0xc9, 0x73, 0xba, 0xdc, 0x7c, 0xd5, 0x01, + 0xc0, 0xb1, 0xbb, 0xad, 0x38, 0xd9, 0x08, 0x79, 0xde, 0xa0, + 0xc9, 0x69, 0xb7, 0x6b, 0x3e, 0xed, 0x29, 0xf9, 0x84, 0x67, + 0xff, 0x68, 0x8d, 0x9e, 0xa4, 0x76, 0x31, 0x47, 0xe3, 0xf5, + 0x30, 0xe7, 0xa5, 0x99, 0xa0, 0xdf, 0x8c, 0x1e, 0x79, 0x44, + 0x0b, 0xbb, 0x0d, 0xb6, 0xbd, 0x39, 0xfe, 0xf7, 0xf8, 0xd8, + 0x41, 0x9d, 0x8a, 0x10, 0xab, 0xeb, 0xe3, 0xcb, 0xb5, 0x7e, + 0x9d, 0x24, 0x39, 0xe8, 0x6f, 0xc9, 0x96, 0x3b, 0x27, 0x53, + 0x36, 0x87, 0x38, 0x3e, 0xd5, 0xeb, 0xd3, 0x07, 0x75, 0x16, + 0x98, 0x61, 0xfd, 0x2a, 0x96, 0x9d, 0xfb, 0x57, 0xa3, 0x01, + 0x63, 0x62, 0xc1, 0x2c, 0x76, 0x95, 0xb6, 0x3c, 0xf7, 0x4b, + 0xee, 0x45, 0xec, 0x51, 0x0e, 0xee, 0xa4, 0x4a, 0x44, 0x71, + 0x8c, 0xe4, 0x26, 0x89, 0xae, 0xeb, 0xc4, 0xb6, 0x4e, 0x65, + 0x58, 0x91, 0x68, 0xf9, 0xa1, 0x0b, 0xfc, 0xb4, 0xcc, 0x0f, + 0x4d, 0x62, 0xda, 0x80, 0x7e, 0xb0, 0xd9, 0xd7, 0x9b, 0x4c, + 0x95, 0xb2, 0x78, 0x9f, 0x3a, 0x5c, 0xd3, 0xf3, 0x9d, 0x33, + 0xd0, 0x20, 0x3e, 0x58, 0x1b, 0x43, 0x7d, 0x77, 0x29, 0xb5, + 0x0c, 0xbe, 0xf6, 0xcf, 0xe2, 0x59, 0x6c, 0xcd, 0x70, 0x7c, + 0x69, 0x15, 0x65, 0x0e, 0xea, 0x2c, 0xf3, 0xc2, 0x39, 0x54, + 0xef, 0xf9, 0xf3, 0x2e, 0x7d, 0xa1, 0xaa, 0x0b, 0x76, 0x47, + 0x48, 0x78, 0x9f, 0xc5, 0x73, 0x2c, 0x11, 0x2d, 0x5f, 0x31, + 0x4c, 0x06, 0x89, 0x8f, 0xc3, 0xe8, 0xf7, 0xf8, 0x32, 0x88, + 0x77, 0x79, 0x21, 0x5d, 0xff, 0x8a, 0xcc, 0x51, 0xe6, 0xb7, + 0x7b, 0xf8, 0x69, 0x02, 0x43, 0xa1, 0xb5, 0x99, 0x70, 0x71, + 0x8a, 0x6a, 0x76, 0x1a, 0xa7, 0xbd, 0xcb, 0x7e, 0xb6, 0x8f, + 0x67, 0x1d, 0x32, 0xb1, 0x9b, 0x3d, 0x56, 0xee, 0xf9, 0xb2, + 0xf0, 0x42, 0xbb, 0xb6, 0xbe, 0x40, 0xb7, 0xc7, 0x02, 0xcb, + 0x18, 0x38, 0xdd, 0x22, 0xe4, 0xbc, 0xe7, 0x5b, 0xbf, 0xfd, + 0x7f, 0x9a, 0x7c, 0x6c, 0xc1, 0xaf, 0x45, 0x08, 0xb4, 0x94, + 0x90, 0x84, 0xbb, 0x3f, 0xaf, 0x12, 0xfd, 0x74, 0xd6, 0x85, + 0x4b, 0xfc, 0xf2, 0xc8, 0x04, 0xdd, 0x6f, 0x50, 0x85, 0xd5, + 0xba, 0xd4, 0x1f, 0x97, 0xf5, 0x9d, 0x42, 0xd2, 0x9e, 0x34, + 0xbe, 0x62, 0x98, 0x0c, 0xd1, 0xdd, 0x45, 0x13, 0x2d, 0x33, + 0x64, 0xd3, 0xee, 0xf2, 0x42, 0xba, 0x1b, 0xa2, 0x1c, 0x1f, + 0x8b, 0x94, 0x88, 0xe2, 0xdb, 0x0b, 0x4c, 0xd1, 0x9f, 0x15, + 0x4b, 0xaf, 0x9c, 0xca, 0xb0, 0xe1, 0xd0, 0x31, 0x81, 0x16, + 0x3b, 0xab, 0x5b, 0x1e, 0x9a, 0xc4, 0x77, 0xc3, 0x5e, 0x97, + 0x27, 0x12, 0x39, 0x2b, 0x0c, 0xdd, 0x80, 0xad, 0x9e, 0x3e, + 0x86, 0xac, 0xe7, 0x50, 0x07, 0xf4, 0xd2, 0x6c, 0x96, 0xfa, + 0x28, 0x8b, 0x86, 0x68, 0xc2, 0x84, 0x92, 0x6e, 0x17, 0x23, + 0x8c, 0x38, 0xcf, 0x62, 0x81, 0xe3, 0x2c, 0xc0, 0x47, 0xb2, + 0x09, 0x2f, 0x51, 0x0a, 0x4a, 0x13, 0x0f, 0x8d, 0x0c, 0xcc, + 0x5f, 0x93, 0x9f, 0xe0, 0xb8, 0x85, 0xeb, 0x7d, 0x16, 0x09, + 0xe8, 0x4b, 0x6d, 0x6b, 0x1b, 0x68, 0xd9, 0xb1, 0xaa, 0x3b, + 0x9d, 0x79, 0x5f, 0x74, 0xc8, 0x81, 0x29, 0xf4, 0xf4, 0xda, + 0xaf, 0xcd, 0x3c, 0xf1, 0x5e, 0xcc, 0xce, 0x10, 0x5d, 0x41, + 0xe1, 0x42, 0x06, 0x0e, 0x26, 0x75, 0x47, 0xbd, 0x84, 0x39, + 0x7e, 0xd1, 0x09, 0x0f, 0xca, 0x50, 0x36, 0xe4, 0xab, 0x4d, + 0x71, 0x3d, 0xd5, 0x1b, 0xc4, 0xdf, 0x0a, 0x52, 0xc0, 0x1a, + 0xd1, 0x21, 0xc5, 0xfa, 0x75, 0x78, 0x1c, 0x56, 0xce, 0x73, + 0x1d, 0x6e, 0xa0, 0x69, 0x5d, 0x63, 0x8e, 0x55, 0x0d, 0x7b, + 0x5c, 0x8c, 0x94, 0xb3, 0x6e, 0x41, 0x19, 0x58, 0x36, 0x7d, + 0x05, 0x46, 0x72, 0xe7, 0x1e, 0xa3, 0x88, 0xab, 0x22, 0xa8, + 0x28, 0xed, 0x01, 0xec, 0xc4, 0x05, 0x16, 0x98, 0x3f, 0xcd, + 0x74, 0x36, 0x35, 0x79, 0xeb, 0xa5, 0xdc, 0x82, 0x32, 0xb0, + 0x6c, 0xfa, 0x0a, 0x8c, 0xe4, 0x0d, 0x3c, 0x85, 0xd3, 0x95, + 0xbc, 0xed, 0x4e, 0x24, 0x72, 0x56, 0x18, 0x79, 0xc3, 0x99, + 0xff, 0x7c, 0xcf, 0x9b, 0x0d, 0xa0, 0x3c, 0x71, 0x30, 0xb6, + 0xbf, 0x09, 0x39, 0x06, 0xa5, 0x51, 0x2a, 0x37, 0x58, 0x24, + 0x26, 0xef, 0x15, 0x89, 0x7b, 0xc7, 0x64, 0xa3, 0xd8, 0x37, + 0x14, 0xdb, 0x0b, 0x1a, 0x78, 0xc9, 0x65, 0xe9, 0xe9, 0x2a, + 0x0a, 0xaa, 0x91, 0x3b, 0x31, 0x90, 0xe4, 0x26, 0x7f, 0xa2, + 0x1d, 0xec, 0x9c, 0x8f, 0x02, 0x8f, 0xd6, 0x28, 0xa3, 0x8b, + 0x5d, 0x6a, 0xee, 0xaa, 0x9b, 0xaf, 0x21, 0x69, 0x4f, 0x1a, + 0x46, 0x1c, 0x86, 0x31, 0xa1, 0x90, 0x16, 0x60, 0xc2, 0x59, + 0xe5, 0xf6, 0xc9, 0x05, 0x25, 0xe8, 0xda, 0xd6, 0x36, 0xd0, + 0x71, 0xa1, 0x97, 0x76, 0xf9, 0xf2, 0xbe, 0xe8, 0x53, 0xc1, + 0x52, 0x2b, 0x19, 0x2d, 0xca, 0x37, 0x28, 0x1f, 0xd5, 0x88, + 0x35, 0xa1, 0xd7, 0x7e, 0xbe, 0x7c, 0x04, 0xb5, 0xdb, 0x70, + 0x5d, 0xc4, 0xc1, 0x05, 0x58, 0x43, 0x8e, 0xa7, 0x12, 0x5e, + 0xa2, 0x14, 0x94, 0x26, 0x1e, 0xd9, 0x18, 0x5b, 0xbe, 0xe5, + 0xfd, 0x03, 0xb3, 0xc9, 0x15, 0xfa, 0x2c, 0x12, 0x13, 0x96, + 0x17, 0x06, 0xad, 0xef, 0xc7, 0x28, 0x85, 0x5d, 0xfa, 0x71, + 0x90, 0xb5, 0x59, 0xa0, 0x2a, 0xf3, 0x4a, 0xb8, 0x37, 0xc1, + 0xed, 0x2c, 0x1b, 0xdf, 0xe3, 0x23, 0x39, 0x92, 0x0f, 0xb0, + 0x44, 0xb4, 0x0a, 0xf6, 0x08, 0x88, 0x6a, 0xe2, 0xea, 0x01, + 0xd0, 0x47, 0xb2, 0x56, 0xa5, 0x0e, 0xb0, 0x72, 0xd9, 0xff, + 0x8b, 0xec, 0x62, 0x8e, 0x05, 0x29, 0x60, 0x0d, 0x89, 0xf1, + 0x83, 0x7d, 0xdb, 0x3c, 0x89, 0x43, 0xcb, 0x26, 0xb4, 0x92, + 0x59, 0x21, 0x2f, 0x70, 0x50, 0x04, 0xe2, 0x0d, 0x12, 0x2a, + 0x78, 0xe2, 0x60, 0xaf, 0xbd, 0x12, 0x72, 0x0c, 0x89, 0xa2, + 0x54, 0x6e, 0xb0, 0x48, 0x4c, 0x1d, 0x76, 0xc9, 0x07, 0x77, + 0x52, 0x25, 0x22, 0xd9, 0x46, 0x72, 0x13, 0xa5, 0x57, 0x94, + 0x62, 0x5b, 0x27, 0xd3, 0x2c, 0xa9, 0x34, 0x9d, 0xb1, 0xe4, + 0x7e, 0x5a, 0x66, 0xe6, 0xc7, 0x31, 0x6d, 0x40, 0x18, 0x8b, + 0xa1, 0x23, 0x98, 0xbb, 0x1a, 0xbd, 0x42, 0xf4, 0x7b, 0xc8, + 0x4f, 0xa9, 0xc2, 0xb8, 0x23, 0x0e, 0x43, 0xf9, 0xb1, 0x48, + 0x0b, 0x30, 0x61, 0xcd, 0x93, 0x7b, 0x85, 0xe3, 0xf3, 0x74, + 0xf2, 0x88, 0x16, 0xb5, 0x1a, 0xaf, 0xb9, 0x72, 0x3f, 0x2d, + 0x33, 0x73, 0x82, 0xf9, 0xd7, 0x20, 0x95, 0x15, 0x05, 0x55, + 0xa9, 0xfc, 0xf9, 0x48, 0x72, 0x13, 0xde, 0x51, 0xef, 0x76, + 0x4e, 0xa6, 0xd5, 0x5b, 0x3a, 0x1c, 0x2e, 0x32, 0x08, 0x96, + 0x41, 0x77, 0x55, 0x95, 0x45, 0xc8, 0xba, 0x60, 0xa9, 0x64, + 0x35, 0xe3, 0x16, 0xf5, 0xc0, 0x4e, 0xd7, 0x42, 0xf4, 0x66, + 0xb7, 0x52, 0x68, 0x49, 0x84, 0x41, 0x11, 0xc2, 0x48, 0x8a, + 0x9b, 0xab, 0x79, 0x5f, 0x20, 0xd6, 0xd5, 0x6d, 0xb5, 0x7b, + 0xe1, 0x53, 0xd4, 0x0a, 0x58, 0x52, 0x86, 0xfb, 0xda, 0xcb, + 0x56, 0x5b, 0x99, 0x8b, 0x63, 0xe7, 0x1d, 0xf0, 0xa5, 0x67, + 0xad, 0xca, 0x6f, 0x5c, 0x2a, 0x36, 0x22, 0xe3, 0xfc, 0xae, + 0x9a, 0x81, 0x93, 0x47, 0xbc, 0x2d, 0x8f, 0xa2, 0x1e, 0xf6, + 0x83, 0x2e, 0xb0, 0x63, 0x8c, 0xcd, 0x9f, 0x88, 0x28, 0x5e, + 0x20, 0x65, 0x6b, 0x0e, 0x2e, 0x04, 0xc6, 0xdf, 0x8d, 0x9b, + 0xd1, 0x38, 0x85, 0x0b, 0xc6, 0x80, 0xf8, 0xa3, 0x6c, 0xcf, + 0x37, 0x1f, 0xa4, 0x91, 0x30, 0xbd, 0x5e, 0xba, 0x0e, 0xa7, + 0x7b, 0xcb, 0xdd, 0x93, 0xae, 0x3d, 0xe0, 0x53, 0x10, 0x5d, + 0x63, 0x77, 0x60, 0xf4, 0xc5, 0x0a, 0x65, 0x12, 0xc5, 0xc8, + 0x10, 0xd8, 0x1d, 0x50, 0xa3, 0x94, 0x76, 0x8d, 0x4c, 0xe6, + 0xd6, 0x9c, 0x75, 0xe0, 0xba, 0x4b, 0x41, 0x0a, 0xb0, 0x86, + 0xdf, 0x8d, 0x24, 0xbc, 0x87, 0x28, 0xeb, 0x4c, 0x7c, 0x3f, + 0x0f, 0xff, 0x38, 0xc7, 0xc8, 0xd8, 0x96, 0x35, 0xa1, 0xf3, + 0xf2, 0x9a, 0xd2, 0x29, 0xe3, 0xdc, 0x02, 0x22, 0xfb, 0xd9, + 0xdb, 0x91, 0x34, 0x61, 0xcd, 0xf4, 0xb8, 0xe2, 0x2c, 0xfd, + 0xee, 0xde, 0xd8, 0xc6, 0x07, 0xc1, 0x19, 0x1b, 0x62, 0x4e, + 0xbd, 0x26, 0x8f, 0x82, 0x8b, 0xac, 0x21, 0x81, 0x95, 0xd1, + 0x12, 0xc3, 0x56, 0x5a, 0x8f, 0x67, 0x08, 0xd4, 0xa4, 0x8a, + 0xbc, 0x6e, 0x8e, 0xb7, 0x19, 0x4a, 0x22, 0x68, 0x71, 0xaa, + 0xa9, 0x18, 0x92, 0x80, 0x70, 0x63, 0x05, 0x09, 0xf9, 0xd8, + 0x75, 0x29, 0xc0, 0xe9, 0x9c, 0x46, 0x98, 0x3f, 0x2d, 0x93, + 0xd6, 0x22, 0xa1, 0x5f, 0x01, 0xa6, 0x6b, 0x14, 0xb0, 0xa4, + 0xcf, 0x35, 0x77, 0x55, 0xac, 0xb6, 0xf1, 0xd5, 0xc6, 0x0d, + 0x5b, 0xec, 0x23, 0x56, 0x0c, 0x5a, 0x79, 0x3c, 0xe8, 0x6f, + 0xc7, 0x15, 0x35, 0xab, 0xbf, 0x69, 0x91, 0xc8, 0x6a, 0x05, + 0x2c, 0x29, 0x43, 0x9c, 0x6d, 0x84, 0x2b, 0xcc, 0xad, 0xa4, + 0xd0, 0x92, 0x14, 0x2f, 0x10, 0xd3, 0xd4, 0x07, 0x17, 0x02, + 0x63, 0x8e, 0xa7, 0xac, 0x89, 0x1c, 0xa3, 0xe4, 0x7a, 0x6d, + 0xb6, 0x87, 0x1e, 0x99, 0x2f, 0x66, 0x67, 0x08, 0xcf, 0xc1, + 0x91, 0x21, 0x03, 0x07, 0xf6, 0x55, 0x79, 0xe5, 0x9f, 0x7a, + 0x03, 0xa6, 0x20, 0xba, 0xc6, 0xee, 0xc0, 0x2b, 0x49, 0x14, + 0xb1, 0xef, 0x94, 0xc0, 0x8e, 0x4e, 0xda, 0xf3, 0x95, 0xb6, + 0x8f, 0xae, 0xf8, 0xfb, 0xaa, 0xf1, 0xb7, 0xbd, 0x2d, 0xb8, + 0xa8, 0x10, 0x3d, 0x4d, 0x64, 0x8b, 0xe1, 0x9c, 0x9b, 0x40, + 0x7b, 0xdf, 0xca, 0x24, 0x49, 0x53, 0x20, 0x73, 0x3a, 0xa0, + 0x85, 0xeb, 0xec, 0xd9, 0x98, 0x0f, 0x6f, 0xfb, 0x5a, 0x4a, + 0x48, 0x42, 0xbc, 0xfe, 0xb6, 0x09, 0x9f, 0x3a, 0x6b, 0xa3, + 0xc4, 0x7e, 0x79, 0x64, 0xf8, 0x7e, 0x1e, 0x3d, 0x70, 0x4d, + 0x53, 0x73, 0xef, 0x6a, 0x81, 0x25, 0x27, 0xf7, 0x67, 0x52, + 0xcc, 0x76, 0xf0, 0x2b, 0x06, 0x2d, 0xdd, 0x1e, 0x74, 0xd6, + 0x82, 0xeb, 0xfb, 0xb4, 0xbe, 0xd5, 0x47, 0xba, 0xed, 0x25, + 0x11, 0x34, 0xd9, 0x55, 0xb5, 0x0c, 0x49, 0x40, 0x38, 0xd0, + 0xe3, 0xe5, 0x96, 0x3c, 0xb8, 0x69, 0xba, 0xd3, 0x6b, 0x17, + 0xeb, 0xec, 0xe9, 0x48, 0x3f, 0xca, 0xc7, 0xb1, 0x6e, 0x42, + 0xa6, 0x54, 0xca, 0x9e, 0x38, 0x64, 0x04, 0x86, 0x68, 0x6d, + 0x18, 0x3d, 0xa0, 0xe3, 0x13, 0xdb, 0xc2, 0xbf, 0x42, 0xfd, + 0x3f, 0x89, 0xe5, 0xe6, 0x65, 0x28, 0x1b, 0x72, 0xb4, 0xc7, + 0x24, 0xfa, 0x91, 0x95, 0x27, 0xb2, 0x23, 0xbb, 0xe7, 0xa5, + 0x51, 0xff, 0x17, 0x8d, 0xe4, 0x57, 0x74, 0x46, 0xd1, 0x5f, + 0xf1, 0xae, 0x7f, 0xb3, 0xa8, 0xd8, 0x88, 0x0a, 0x76, 0xfd, + 0x2d, 0x41, 0x09, 0xdf, 0xb5, 0xb4, 0x79, 0xcd, 0x78, 0x5e, + 0x49, 0xb8, 0x85, 0x4f, 0x75, 0xb2, 0x39, 0x65, 0x03, 0x29, + 0xbd, 0x3c, 0x13, 0x2f, 0x92, 0x5f, 0x99, 0xff, 0x37, 0x19, + 0xd0, 0xbc, 0x89, 0x17, 0x30, 0xd5, 0x81, 0x46, 0xf3, 0xb5, + 0x34, 0xb9, 0x84, 0x2b, 0xf6, 0x53, 0x9e, 0x91, 0x47, 0xb3, + 0x50, 0xbc, 0x40, 0xca, 0xd6, 0x1c, 0x5c, 0x08, 0x4f, 0x7d, + 0xd9, 0xf5, 0x61, 0x70, 0xc9, 0x16, 0x4f, 0xc3, 0x33, 0x85, + 0xd8, 0x5d, 0x6e, 0x3e, 0x8b, 0xe1, 0x60, 0xb9, 0xbc, 0xb7, + 0x1c, 0x8d, 0x0e, 0x2b, 0x67, 0xd8, 0xef, 0x37, 0x50, 0xd5, + 0xcf, 0xd0, 0x47, 0xcb, 0xe7, 0xdc, 0x2e, 0x46, 0x7d, 0x99, + 0x64, 0xeb, 0x88, 0x63, 0x07, 0xed, 0xe1, 0x60, 0x0d, 0x45, + 0x03, 0x4f, 0x14, 0x24, 0xb9, 0x96, 0x4a, 0x60, 0x47, 0x27, + 0x6d, 0x98, 0xab, 0x5b, 0xa6, 0x57, 0x7c, 0x9c, 0x55, 0x99, + 0x37, 0x21, 0x53, 0x2a, 0x65, 0x4f, 0x1c, 0x32, 0x02, 0x43, + 0x34, 0xd7, 0x0c, 0xff, 0x50, 0x90, 0x54, 0x61, 0x2f, 0x9a, + 0x53, 0xc9, 0xe6, 0xdc, 0x50, 0xea, 0x2c, 0x68, 0x23, 0xa2, + 0x57, 0x22, 0x1f, 0x7f, 0x73, 0x4f, 0x0e, 0x41, 0x32, 0x36, + 0xc4, 0x9c, 0xb9, 0x4c, 0xdd, 0xc7, 0xd5, 0x9b, 0xc2, 0x5d, + 0x97, 0xf3, 0xe9, 0x1a, 0x8d, 0xcb, 0xbb, 0x06, 0xc5, 0x20, + 0x1c, 0x68, 0x90, 0x93, 0x33, 0xfc, 0x3c, 0x7a, 0xe0, 0x9a, + 0xa6, 0xe6, 0x1d, 0xd4, 0xc1, 0x4a, 0x4e, 0x2d, 0xce, 0xa4, + 0x3a, 0x23, 0x89, 0xce, 0x99, 0x57, 0xde, 0xb8, 0x54, 0x6c, + 0x44, 0x05, 0x3b, 0x9f, 0xf7, 0xc1, 0xe5, 0x8e, 0xbb, 0x5a, + 0xdd, 0x87, 0x3c, 0x2f, 0xc5, 0x5c, 0xa3, 0xc6, 0xdb, 0x59, + 0xfd, 0xd3, 0xe8, 0x8c, 0x61, 0xbe, 0x21, 0x9f, 0xfe, 0xa5, + 0x93, 0x73, 0xd3, 0x14, 0xec, 0x39, 0x5a, 0x82, 0x12, 0x7d, + 0xa9, 0xab, 0xf2, 0x59, 0xf0, 0xbc, 0x92, 0xb3, 0xc9, 0x9e, + 0xea, 0xa7, 0x72, 0xca, 0x92, 0xe1, 0xd7, 0x39, 0x3f, 0x06, + 0xd1, 0xc3, 0xf4, 0x7b, 0x1c, 0xd5, 0x7d, 0x18, 0x59, 0x85, + 0xac, 0x1f, 0x31, 0xa7, 0x23, 0x84, 0xb5, 0xaf, 0xbf, 0x80, + 0xad, 0x4d, 0x04, 0x55, 0x30, 0x70, 0x34, 0x08, 0xee, 0x16, + 0x76, 0x60, 0x8e, 0x6d, 0x9b, 0xbc, 0x03, 0xce, 0xdc, 0x43, + 0xd9, 0x87, 0x52, 0x33, 0x96, 0xe2, 0x75, 0x97, 0x01, 0x62, + 0xa1, 0xd7, 0x42, 0x5a, 0x40, 0x19, 0x86, 0x0c, 0xed, 0xf7, + 0x65, 0xfa, 0x14, 0xee, 0x8b, 0x44, 0xfb, 0xb1, 0x8a, 0x3f, + 0x5f, 0x3e, 0x02, 0xbb, 0xfa, 0xf1, 0xc8, 0x15, 0xd3, 0xc6, + 0x0e, 0x19, 0x01, 0xc0, 0x1a, 0x8a, 0x06, 0x9e, 0x28, 0x48, + 0x98, 0x17, 0xdf, 0xb1, 0x55, 0xe4, 0x3b, 0xc2, 0x24, 0x3c, + 0xae, 0x83, 0xd8, 0x16, 0xe9, 0xf7, 0xdf, 0xad, 0x32, 0x94, + 0x44, 0xd0, 0xe2, 0x97, 0x91, 0x30, 0xe7, 0xc3, 0xe0, 0xc6, + 0x0a, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3b, + 0x78, 0xf4, 0x03, 0xf7, 0x8f, 0x0f, 0x3a, 0x6b, 0x41, 0x94, + 0x9c, 0x5a, 0x5f, 0x8b, 0x2f, 0xaa, 0xf2, 0x09, 0xfd, 0xf4, + 0x06, 0x8f, 0x40, 0xb7, 0x4f, 0x1f, 0x43, 0x56, 0x92, 0x28, + 0x3e, 0xfe, 0xe6, 0x9e, 0x1c, 0x82, 0x64, 0x6c, 0x4b, 0xfb, + 0xb1, 0x98, 0x79, 0x4d, 0x69, 0xf5, + }, + { + /* 12 */ + 0xc2, 0x45, 0xb9, 0x57, 0x85, 0xa8, 0xdb, 0x13, 0x2a, 0x3f, + 0xb0, 0xb9, 0xb0, 0x0b, 0x7b, 0xc6, 0x95, 0x59, 0xc2, 0x20, + 0x7c, 0x53, 0x81, 0x21, 0x64, 0x56, 0x1f, 0xc2, 0x1f, 0x6d, + 0x57, 0x36, 0xa6, 0x73, 0x93, 0x63, 0x29, 0x01, 0x42, 0x6e, + 0x91, 0x38, 0x9b, 0x93, 0x9b, 0xf4, 0x35, 0x9d, 0x27, 0x78, + 0x48, 0x3d, 0x69, 0x20, 0x97, 0x5e, 0x08, 0x0c, 0x8b, 0x48, + 0x8b, 0xf5, 0x6f, 0x4b, 0xe0, 0xc8, 0x66, 0x94, 0xe3, 0x75, + 0x59, 0xd8, 0x8c, 0xca, 0x48, 0x66, 0x48, 0xe5, 0x86, 0xb5, + 0x86, 0x9c, 0xc4, 0x12, 0x49, 0xd1, 0x1c, 0x46, 0xa5, 0x16, + 0x83, 0xc4, 0x83, 0x14, 0x42, 0x20, 0x06, 0xa6, 0x5b, 0x15, + 0x0a, 0x17, 0xa7, 0xe6, 0x75, 0xae, 0xe3, 0x5b, 0xe3, 0x12, + 0x5d, 0x91, 0x5d, 0x35, 0x96, 0x48, 0xe7, 0xc2, 0x70, 0xdb, + 0xd1, 0x58, 0x49, 0x96, 0x49, 0x50, 0xcb, 0x80, 0x09, 0x7a, + 0x21, 0xd4, 0x1b, 0xd3, 0x98, 0x9a, 0x44, 0x66, 0x76, 0x21, + 0x76, 0x3f, 0x28, 0xd9, 0x78, 0x2f, 0x56, 0xc7, 0x88, 0xef, + 0x3b, 0x66, 0x4b, 0x8f, 0x22, 0x56, 0x22, 0xab, 0x2e, 0x05, + 0xf4, 0x9a, 0x7f, 0xea, 0xdf, 0x07, 0x0d, 0xc9, 0x71, 0xa8, + 0x47, 0x7f, 0x47, 0x89, 0x8b, 0x55, 0x16, 0x30, 0x91, 0xcc, + 0x3a, 0x7f, 0x88, 0xf2, 0x6f, 0xb9, 0xef, 0x91, 0xef, 0x62, + 0x87, 0x2e, 0x19, 0xec, 0xeb, 0x0d, 0x2b, 0xbb, 0xb7, 0x8e, + 0x5e, 0x71, 0x7a, 0xeb, 0x7a, 0x4f, 0xf2, 0x66, 0xec, 0x47, + 0xd0, 0xbe, 0xf7, 0x5b, 0xd4, 0xd7, 0x66, 0x55, 0x4d, 0xd0, + 0x4d, 0xc1, 0x3c, 0x54, 0x69, 0x88, 0xd8, 0x47, 0xbb, 0x60, + 0x7a, 0xe2, 0x18, 0x14, 0x5e, 0xd8, 0x5e, 0xdc, 0xb1, 0xdd, + 0x04, 0xc4, 0xd3, 0xa7, 0x0c, 0x1a, 0x7b, 0x05, 0xe7, 0x75, + 0x03, 0xd3, 0x03, 0x1c, 0xd7, 0x5f, 0x8f, 0xe6, 0xe5, 0xc6, + 0x52, 0x02, 0x84, 0xdc, 0xe1, 0x70, 0xf5, 0xe5, 0xf5, 0x2b, + 0x6a, 0xf9, 0x30, 0x79, 0x9d, 0xa8, 0x50, 0xb8, 0x71, 0x3c, + 0x2e, 0x39, 0x14, 0x9d, 0x14, 0x90, 0xad, 0x02, 0x39, 0x03, + 0xbc, 0x7c, 0x4b, 0x6b, 0xe9, 0xa6, 0x6a, 0x5f, 0x62, 0xbc, + 0x62, 0xaf, 0x85, 0xdb, 0xe9, 0xb2, 0x47, 0x40, 0xf8, 0xa6, + 0xc1, 0x42, 0xc8, 0xac, 0x3e, 0x47, 0x3e, 0xda, 0xae, 0x6c, + 0x03, 0x53, 0xcc, 0xeb, 0x05, 0xea, 0xb2, 0x73, 0xdb, 0x57, + 0x90, 0xcc, 0x90, 0x09, 0xcf, 0xa9, 0xcf, 0xfb, 0x4b, 0x24, + 0x92, 0x61, 0x38, 0x8c, 0x89, 0x2c, 0xc5, 0x4b, 0xc5, 0x28, + 0x84, 0x40, 0x70, 0x64, 0x33, 0x4a, 0x90, 0xdb, 0xcd, 0x6c, + 0x46, 0x65, 0x24, 0x33, 0x24, 0x93, 0x43, 0xbb, 0x43, 0x4e, + 0x62, 0x09, 0xc5, 0x89, 0x0e, 0x23, 0xb3, 0x0b, 0xa0, 0x62, + 0xa0, 0x0a, 0x21, 0x10, 0x55, 0x7e, 0xf3, 0xc5, 0xff, 0xf6, + 0x86, 0xd1, 0xdc, 0xb2, 0x4f, 0xf3, 0x4f, 0x68, 0xa6, 0x3e, + 0x2c, 0x60, 0xe1, 0x5b, 0x74, 0xfe, 0xd3, 0x27, 0xde, 0xb1, + 0x1d, 0xe1, 0x1d, 0xc4, 0xcd, 0x5c, 0x12, 0xf4, 0x42, 0x6b, + 0x36, 0x65, 0xf3, 0xf7, 0x88, 0xcc, 0xec, 0x42, 0xec, 0x7e, + 0x50, 0x71, 0x8e, 0xd7, 0xa1, 0x9f, 0x51, 0xe5, 0xea, 0x4c, + 0xa8, 0xfc, 0x85, 0xa1, 0x85, 0x2c, 0x2f, 0x9e, 0xd5, 0x44, + 0x6c, 0xc2, 0xbc, 0x30, 0x3d, 0x71, 0x0c, 0x0a, 0x2f, 0x6c, + 0x2f, 0x6e, 0xb9, 0x8f, 0x3d, 0xc7, 0x6f, 0xdb, 0x47, 0x71, + 0x92, 0xa3, 0x8d, 0x2a, 0x61, 0x6f, 0x61, 0xb3, 0x52, 0x84, + 0xd2, 0xd3, 0x73, 0x8e, 0xb5, 0xc0, 0xf4, 0x07, 0x30, 0x28, + 0xbc, 0x73, 0xbc, 0x7b, 0xa1, 0x79, 0x76, 0xc2, 0x68, 0x5f, + 0x9a, 0xcc, 0x6a, 0x8a, 0x33, 0xcb, 0xc7, 0x68, 0xc7, 0x81, + 0x1e, 0x2a, 0x18, 0xdd, 0xaf, 0x54, 0x28, 0x5c, 0xd9, 0x1e, + 0x17, 0xfd, 0x0a, 0xaf, 0x0a, 0x48, 0xb7, 0x01, 0x35, 0x8c, + 0x0a, 0x56, 0x5f, 0x45, 0x64, 0xa9, 0x80, 0xc0, 0x67, 0x0a, + 0x67, 0x8b, 0x3f, 0x3a, 0x07, 0x97, 0x1f, 0x4c, 0x09, 0xf0, + 0xc9, 0x76, 0x3c, 0x22, 0x93, 0x1f, 0x93, 0x15, 0x18, 0xf6, + 0xc0, 0x27, 0x31, 0xe5, 0x83, 0xa5, 0x07, 0xf0, 0xb8, 0xe4, + 0x50, 0x31, 0x50, 0x05, 0xf1, 0x08, 0xf7, 0xc9, 0xb3, 0x01, + 0xda, 0xed, 0xbf, 0xba, 0xaa, 0xff, 0xd7, 0xb3, 0xd7, 0x80, + 0x44, 0xfc, 0xb8, 0x08, 0x67, 0x22, 0x0b, 0x4a, 0x3c, 0x96, + 0xf3, 0x6b, 0x72, 0x67, 0x72, 0xae, 0xdf, 0x0d, 0x72, 0x06, + 0xbb, 0xf8, 0x96, 0xd6, 0x11, 0x8f, 0xd4, 0xbe, 0xc4, 0xbb, + 0xc4, 0x9d, 0xc9, 0x75, 0x11, 0xa7, 0x8e, 0x80, 0x33, 0x8f, + 0x41, 0x84, 0x53, 0x9b, 0x7c, 0x8e, 0x7c, 0x77, 0x9f, 0xd8, + 0xb4, 0x87, 0xd1, 0x08, 0x1f, 0x64, 0xb1, 0x99, 0x19, 0xf4, + 0x77, 0xd1, 0x77, 0x8a, 0x65, 0xec, 0xff, 0x82, 0xd6, 0x8c, + 0xc2, 0xd9, 0x49, 0xb0, 0xa7, 0x15, 0xd1, 0xd6, 0xd1, 0xb8, + 0x29, 0x42, 0x1a, 0xbf, 0x27, 0xe6, 0x2e, 0x51, 0x05, 0xfd, + 0x85, 0x26, 0xea, 0x27, 0xea, 0x46, 0x3d, 0xcf, 0x48, 0x56, + 0xcb, 0x6f, 0xd8, 0x57, 0x4a, 0x5a, 0x65, 0xb6, 0x36, 0xcb, + 0x36, 0x3b, 0x83, 0x07, 0xaa, 0xfc, 0x25, 0x49, 0x3d, 0x2f, + 0xcf, 0x61, 0x7b, 0xa7, 0x9e, 0x25, 0x9e, 0xd0, 0x8f, 0x7c, + 0x58, 0xc0, 0x01, 0xb6, 0xe8, 0x3f, 0x65, 0x4e, 0x7f, 0xa1, + 0x3a, 0x01, 0x3a, 0x4b, 0x59, 0xb8, 0x93, 0xff, 0x99, 0x35, + 0x76, 0x44, 0x26, 0xc7, 0x11, 0xf8, 0xfc, 0x99, 0xfc, 0x7f, + 0x0a, 0xa7, 0x21, 0xde, 0x13, 0x28, 0x63, 0x37, 0x30, 0xb8, + 0x7d, 0xa2, 0x68, 0x13, 0x68, 0xe7, 0x32, 0xda, 0xdd, 0x0f, + 0x09, 0x4f, 0xa4, 0x04, 0xcb, 0x7b, 0x01, 0xe0, 0x29, 0x09, + 0x29, 0x56, 0xd4, 0x31, 0x60, 0xf2, 0xf9, 0x93, 0xa0, 0xb3, + 0xe2, 0x78, 0x5c, 0x72, 0x28, 0xf9, 0x28, 0xe3, 0x99, 0x04, + 0x0c, 0x8f, 0xb6, 0x2a, 0x14, 0x2e, 0x8d, 0x0f, 0xea, 0x9f, + 0x05, 0xb6, 0x05, 0x24, 0xba, 0xe1, 0xc4, 0xe3, 0xe2, 0x42, + 0x8f, 0xbf, 0x7c, 0xf5, 0x5f, 0x91, 0x53, 0xe2, 0x53, 0x19, + 0x26, 0x57, 0x9a, 0x85, 0xb8, 0xe1, 0x6d, 0x97, 0xbe, 0x5d, + 0x55, 0x9e, 0x8a, 0xb8, 0x8a, 0x40, 0x22, 0x7e, 0x5c, 0x04, + 0xd2, 0x11, 0xe4, 0x25, 0x1e, 0x4b, 0x98, 0xd4, 0x39, 0xd2, + 0x39, 0x57, 0x8e, 0xe7, 0x53, 0xd8, 0xa8, 0xd0, 0xf5, 0xe1, + 0x21, 0x37, 0xa9, 0x1c, 0xac, 0xa8, 0xac, 0x7a, 0xfb, 0xaf, + 0xcd, 0x99, 0xc3, 0x96, 0x94, 0x6c, 0xe4, 0x6f, 0x1b, 0xf7, + 0x25, 0xc3, 0x25, 0x26, 0x0e, 0x8e, 0x32, 0x1b, 0x15, 0x1a, + 0x56, 0xb5, 0xad, 0xdf, 0xbc, 0xe2, 0xf4, 0x15, 0xf4, 0x9e, + 0x27, 0xcc, 0x1b, 0x8e, 0x63, 0xbf, 0x2d, 0xb6, 0x6b, 0x6d, + 0xcc, 0xaa, 0x9a, 0x63, 0x9a, 0x41, 0x78, 0xa8, 0x5a, 0xa2, + 0x89, 0x04, 0xee, 0x32, 0xb9, 0xad, 0xed, 0x7a, 0xda, 0x89, + 0xda, 0x45, 0xd3, 0x76, 0xa1, 0xe4, 0x8c, 0x2f, 0x20, 0xf1, + 0x8b, 0x18, 0xad, 0x1a, 0x08, 0x8c, 0x08, 0xe1, 0x2d, 0x6b, + 0xe5, 0x3d, 0xf1, 0x6a, 0xec, 0x88, 0x4c, 0x4d, 0x22, 0x33, + 0x3b, 0xf1, 0x3b, 0xfe, 0x14, 0x8d, 0x3c, 0xf6, 0x2b, 0x82, + 0x44, 0x96, 0xfc, 0x33, 0xc4, 0xa6, 0x11, 0x2b, 0x11, 0xb4, + 0x17, 0xe3, 0x97, 0x3b, 0x4a, 0x92, 0x7a, 0x5e, 0x5d, 0xc2, + 0xf6, 0x8d, 0xff, 0x4a, 0xff, 0x63, 0xdd, 0xf8, 0xce, 0xca, + 0x0f, 0x7d, 0x91, 0x86, 0x56, 0x1c, 0xc0, 0xa0, 0xb5, 0x0f, + 0xb5, 0x2f, 0xc1, 0x27, 0x6d, 0x4c, 0x0b, 0xe0, 0xb7, 0x7a, + 0x01, 0xe7, 0xff, 0x61, 0x5d, 0x0b, 0x5d, 0xc0, 0x66, 0x82, + 0x62, 0x90, 0x71, 0x21, 0xa6, 0xbe, 0x3e, 0x9b, 0xce, 0xa9, + 0xc8, 0x71, 0xc8, 0xed, 0x13, 0xca, 0xf5, 0xab, 0x3b, 0xb3, + 0xdc, 0xe0, 0x63, 0x59, 0x38, 0x24, 0x37, 0x3b, 0x37, 0x8e, + 0xce, 0x32, 0xb7, 0xd4, 0x1d, 0xe3, 0x1a, 0x8e, 0x03, 0xea, + 0xc2, 0xa3, 0xe7, 0x1d, 0xe7, 0x83, 0xaa, 0x45, 0xe2, 0xaa, + 0xee, 0x26, 0xe5, 0x78, 0x85, 0x3b, 0x1e, 0x11, 0xa8, 0xee, + 0xa8, 0xeb, 0x0c, 0x7b, 0x41, 0x2c, 0xea, 0xbb, 0xc3, 0x84, + 0xd2, 0xc0, 0x21, 0xd0, 0x40, 0xea, 0x40, 0x04, 0xab, 0xde, + 0x71, 0x55, 0x77, 0x13, 0x93, 0x3c, 0xa3, 0xfc, 0x0f, 0xe9, + 0x54, 0x77, 0x54, 0x94, 0x06, 0xdc, 0xf9, 0x24, 0x8d, 0x99, + 0xc8, 0xce, 0xee, 0x56, 0xd2, 0xbb, 0x32, 0x8d, 0x32, 0xaa, + 0x74, 0xd3, 0xea, 0xe1, 0x8b, 0xab, 0xfd, 0x4c, 0x73, 0x31, + 0x13, 0xfb, 0xae, 0x8b, 0xae, 0xd3, 0x61, 0xc5, 0xae, 0x38, + 0xf6, 0xee, 0x31, 0x35, 0xb4, 0x64, 0x9c, 0xd2, 0x9d, 0xf6, + 0x9d, 0xcc, 0x58, 0x23, 0xe4, 0x0c, 0xb5, 0x33, 0xef, 0x6f, + 0x22, 0xdd, 0x6b, 0xbf, 0x4b, 0xb5, 0x4b, 0xf9, 0x51, 0xea, + 0x0b, 0x18, 0xa9, 0x66, 0x1d, 0xde, 0x44, 0x79, 0xd6, 0xbd, + 0x96, 0xa9, 0x96, 0x31, 0xa2, 0x17, 0xde, 0x5c, 0xc5, 0xa4, + 0xa1, 0xee, 0x79, 0x08, 0xda, 0xb7, 0xb9, 0xc5, 0xb9, 0x5f, + 0x1b, 0x98, 0xf0, 0x5e, 0xac, 0x4d, 0xd3, 0x1d, 0x76, 0xcc, + 0x96, 0xdd, 0x44, 0xac, 0x44, 0x95, 0x5c, 0x0a, 0xd4, 0x75, + 0x28, 0x9b, 0xbf, 0xd7, 0x53, 0xe1, 0x45, 0x86, 0x5f, 0x28, + 0x5f, 0x69, 0xfc, 0xe8, 0xb5, 0xb6, 0x95, 0x51, 0x1c, 0x83, + 0xdf, 0x09, 0x50, 0x78, 0x07, 0x95, 0x07, 0x8d, 0x20, 0x8b, + 0xa4, 0x11, 0x1b, 0xd1, 0x2f, 0x0c, 0x9e, 0x8d, 0x03, 0xe3, + 0x7b, 0x1b, 0x7b, 0xfa, 0xbf, 0x53, 0xba, 0x6a, 0xef, 0x90, + 0x0d, 0x47, 0xe0, 0x75, 0x61, 0xb0, 0x92, 0xef, 0x92, 0xa0, + 0x55, 0xc3, 0xe8, 0x83, 0x03, 0x19, 0xfb, 0x41, 0xaf, 0xd2, + 0x81, 0x20, 0x4e, 0x03, 0x4e, 0xdd, 0xeb, 0x0b, 0x0e, 0xed, + 0x3e, 0x98, 0x12, 0x23, 0x51, 0xec, 0x78, 0x44, 0xe5, 0x3e, + 0xe5, 0x2a, 0x30, 0x2f, 0x9c, 0x23, 0xe3, 0xf4, 0x67, 0x80, + 0x19, 0xbb, 0x20, 0x30, 0x69, 0xe3, 0x69, 0x52, 0x7f, 0xef, + 0x31, 0x48, 0xd9, 0xf1, 0x53, 0x5f, 0x1f, 0xac, 0x67, 0xb5, + 0x64, 0xd9, 0x64, 0x97, 0xe8, 0x65, 0x79, 0x1e, 0x12, 0x9e, + 0x8b, 0x08, 0x55, 0xf6, 0x02, 0x03, 0x52, 0x12, 0x52, 0xac, + 0x6b, 0x62, 0xfc, 0xd1, 0x1a, 0x67, 0xc7, 0x33, 0xfb, 0xc3, + 0x7c, 0x42, 0x41, 0x1a, 0x41, 0xb1, 0xe6, 0xeb, 0x4d, 0xa3, + 0x5c, 0x91, 0xd7, 0xaa, 0x5f, 0xcf, 0xcb, 0x4f, 0x45, 0x5c, + 0x45, 0x20, 0x11, 0x3f, 0xdb, 0xa9, 0x52, 0x5a, 0xae, 0x13, + 0x6c, 0x9d, 0x74, 0x4e, 0xca, 0x52, 0xca, 0x44, 0x89, 0xa0, + 0x75, 0x91, 0xa4, 0xb4, 0x9f, 0x26, 0xd8, 0xf9, 0xe8, 0x9c, + 0x57, 0xa4, 0x57, 0x88, 0xd1, 0x83, 0x68, 0xb9, 0x9c, 0x1e, + 0xb8, 0x87, 0x14, 0x72, 0x51, 0x98, 0x2e, 0x9c, 0x2e, 0xdb, + 0xf4, 0xba, 0x15, 0x63, 0x5d, 0x27, 0x3f, 0x95, 0x3a, 0x81, + 0xb4, 0xee, 0x7f, 0x5d, 0x7f, 0x6b, 0x48, 0x87, 0xa9, 0xaf, + 0xe9, 0xa2, 0x38, 0xc5, 0x7d, 0x12, 0xa0, 0xf0, 0x0e, 0xe9, + 0x0e, 0xd9, 0x40, 0xd5, 0x01, 0x31, 0x44, 0x59, 0x03, 0xe7, + 0x6e, 0x90, 0x49, 0x8c, 0x70, 0x44, 0x70, 0x07, 0x45, 0x67, + 0x23, 0xbc, 0x9b, 0x9a, 0x65, 0x3a, 0xec, 0x5b, 0xef, 0x79, + 0x88, 0x9b, 0x88, 0xe9, 0xb8, 0x14, 0xb2, 0x21, 0x8a, 0x1d, + 0x15, 0x73, 0x16, 0x7f, 0x6c, 0x5a, 0x94, 0x8a, 0x94, 0x98, + 0x38, 0x7d, 0x6e, 0x1f, 0xc7, 0x0b, 0xb2, 0x90, 0xb3, 0x94, + 0x24, 0x36, 0xcd, 0xc7, 0xcd, 0xc9, 0xa9, 0x2b, 0xf2, 0x3c, + 0x24, 0xff, 0xd5, 0x10, 0xaa, 0x2f, 0x04, 0x06, 0xa4, 0x24, + 0xa4, 0x9b, 0xd6, 0xc4, 0x3b, 0x61, 0x34, 0xce, 0x4d, 0x66, + 0x35, 0x45, 0xf8, 0x84, 0x82, 0x34, 0x82, 0xa1, 0x0f, 0x15, + 0x52, 0xe9, 0xec, 0x89, 0xf6, 0x06, 0x4f, 0xa7, 0xe0, 0x90, + 0xdc, 0xec, 0xdc, 0x7d, 0xbe, 0xc8, 0x65, 0x07, 0x6e, 0x6d, + 0xaf, 0x4e, 0xf7, 0xed, 0xf2, 0x8b, 0x5b, 0x6e, 0x5b, 0xf8, + 0x0b, 0x3c, 0x4b, 0x05, 0x07, 0x84, 0xdd, 0xbd, 0xf8, 0x29, + 0xbe, 0xe1, 0xa6, 0x07, 0xa6, 0x32, 0x4c, 0xae, 0x38, 0x32, + 0xf8, 0x25, 0x48, 0x8c, 0x87, 0x36, 0x23, 0xd3, 0x12, 0xf8, + 0x12, 0xa8, 0xc0, 0xbc, 0x2a, 0xc6, 0xba, 0x4e, 0x7e, 0xe9, + 0x74, 0xc1, 0xab, 0x1f, 0xfe, 0xba, 0xfe, 0xd6, 0x90, 0xcd, + 0x91, 0x9d, 0x11, 0x87, 0x70, 0x49, 0xfa, 0x24, 0x83, 0x23, + 0x1c, 0x11, 0x1c, 0x71, 0x80, 0x69, 0xd6, 0x17, 0xa0, 0x29, + 0xb9, 0xda, 0x8f, 0x02, 0xd7, 0x5d, 0xbf, 0xa0, 0xbf, 0x67, + 0x76, 0x26, 0xfd, 0xe0, 0x5e, 0x3e, 0xc4, 0xd4, 0x95, 0x53, + 0x35, 0xce, 0x31, 0x5e, 0x31, 0xb6, 0xa3, 0x8c, 0xf8, 0x15, + 0xc9, 0xc0, 0xcb, 0x29, 0x80, 0xc6, 0x9b, 0x37, 0x42, 0xc9, + 0x42, 0xad, 0x31, 0xb4, 0x8c, 0xb5, 0x29, 0x2d, 0x57, 0xe8, + 0x36, 0xaf, 0x3a, 0x27, 0x65, 0x29, 0x65, 0x22, 0xa5, 0x50, + 0x50, 0x8b, 0x64, 0x3b, 0xf0, 0x0b, 0x93, 0x44, 0x72, 0x4b, + 0x3c, 0x64, 0x3c, 0x73, 0x34, 0x06, 0x7f, 0xb8, 0x49, 0x8b, + 0x81, 0x1f, 0xf2, 0x10, 0x77, 0xad, 0xb1, 0x49, 0xb1, 0xbe, + 0x36, 0xf3, 0x59, 0xf1, 0x45, 0xef, 0xeb, 0xd8, 0x0b, 0xde, + 0x36, 0x2d, 0x4a, 0x45, 0x4a, 0x4c, 0x1c, 0xdf, 0x08, 0x4b, + 0x65, 0x8d, 0x18, 0x34, 0xf6, 0x0a, 0x0d, 0xea, 0x06, 0x65, + 0x06, 0x38, 0x6d, 0xbe, 0xd9, 0xcb, 0xda, 0xe8, 0xa8, 0x1e, + 0xb0, 0x7e, 0xe6, 0x95, 0x2a, 0xda, 0x2a, 0x4a, 0x03, 0x6e, + 0xa2, 0xb7, 0x40, 0xc4, 0x25, 0x1b, 0x39, 0x6b, 0x76, 0x4d, + 0x98, 0x40, 0x98, 0xe8, 0xe2, 0xc2, 0xfb, 0x46, 0x05, 0x2b, + 0xce, 0xc3, 0x32, 0xb5, 0x40, 0x60, 0xd2, 0x05, 0xd2, 0xa4, + 0xfe, 0x1d, 0x1c, 0x19, 0x7c, 0xf3, 0x24, 0x46, 0xa2, 0x1b, + 0xf0, 0x88, 0x09, 0x7c, 0x09, 0x54, 0x60, 0x5e, 0x29, 0x95, + 0x76, 0xa5, 0x7b, 0x03, 0xc6, 0xb2, 0x70, 0x48, 0x6e, 0x76, + 0x6e, 0xdf, 0x5f, 0x64, 0xd3, 0xe2, 0x37, 0xd7, 0xb6, 0x27, + 0x9a, 0x97, 0x79, 0xa4, 0xcc, 0x37, 0xcc, 0x7c, 0xe4, 0x1e, + 0x6f, 0x2e, 0x83, 0x52, 0xb1, 0x77, 0xdd, 0x04, 0x6d, 0xba, + 0xbd, 0x83, 0xbd, 0xce, 0xec, 0x4c, 0x47, 0x8a, 0xb1, 0xae, + 0xc9, 0x93, 0x75, 0x26, 0x54, 0x7e, 0xa3, 0xb1, 0xa3, 0x16, + 0xf6, 0x4f, 0x54, 0x4f, 0xb7, 0x9c, 0xfc, 0x11, 0xe8, 0x41, + 0x95, 0x3e, 0x3f, 0xb7, 0x3f, 0x6f, 0xe3, 0x59, 0x9f, 0x70, + 0x2f, 0x1f, 0x62, 0x6a, 0xab, 0xc8, 0xfb, 0x67, 0xf9, 0x2f, + 0xf9, 0x5b, 0xb0, 0x46, 0x17, 0x01, 0xd5, 0x95, 0x39, 0x98, + 0xe6, 0x62, 0x26, 0x35, 0x9f, 0xd5, 0x9f, 0x65, 0xc2, 0x49, + 0xe1, 0xf9, 0x22, 0xcd, 0xe0, 0x92, 0x37, 0x48, 0xc5, 0x46, + 0x38, 0x22, 0x38, 0xe2, 0xc3, 0xd2, 0x7c, 0xeb, 0x85, 0x60, + 0x84, 0xf5, 0x40, 0x63, 0xac, 0xfa, 0x21, 0x85, 0x21, 0xb7, + 0xf9, 0x5a, 0x46, 0xbb, 0xf5, 0xf7, 0xca, 0x74, 0x1b, 0xb6, + 0x1d, 0xf2, 0xd3, 0xf5, 0xd3, 0x11, 0xb3, 0x28, 0xbc, 0xcc, + 0xb4, 0x85, 0x07, 0x50, 0x47, 0x93, 0x14, 0x1e, 0x71, 0xb4, + 0x71, 0xb2, 0x08, 0x52, 0xc5, 0xd2, 0xa6, 0x1b, 0x8c, 0x58, + 0x12, 0x65, 0x16, 0x1d, 0x23, 0xa6, 0x23, 0x1e, 0x63, 0x30, + 0x22, 0x8d, 0xdf, 0xc3, 0x66, 0xdd, 0x82, 0xcb, 0xa6, 0xf5, + 0xf8, 0xdf, 0xf8, 0xee, 0xfd, 0x73, 0xbe, 0xae, 0x3c, 0x37, + 0x01, 0x5d, 0x9b, 0x70, 0x86, 0xc5, 0x91, 0x3c, 0x91, 0xbc, + 0x82, 0x9c, 0x96, 0x0a, 0x0e, 0xcb, 0x79, 0xb9, 0x33, 0x52, + 0xbf, 0x01, 0x8f, 0x0e, 0x8f, 0x64, 0x98, 0x9f, 0x7e, 0x89, + 0x0d, 0xd2, 0x82, 0xf8, 0x9c, 0x80, 0x3e, 0x21, 0xc1, 0x0d, + 0xc1, 0xb9, 0x73, 0x94, 0x1d, 0x28, 0x38, 0xaa, 0x27, 0xa1, + 0xcc, 0x8b, 0xb9, 0x04, 0x79, 0x38, 0x79, 0x53, 0x25, 0x39, + 0xb9, 0x39, 0x23, 0x7b, 0x08, 0xad, 0x52, 0x06, 0xba, 0xe7, + 0x02, 0x23, 0x02, 0xa9, 0x9a, 0x6a, 0x9d, 0x12, 0xa7, 0xad, + 0x64, 0x67, 0x77, 0x2b, 0x69, 0xbc, 0x19, 0xa7, 0x19, 0x55, + 0x3a, 0x88, 0xad, 0x6b, 0x3a, 0x05, 0x34, 0xdf, 0x06, 0x17, + 0x47, 0x85, 0x0d, 0x3a, 0x0d, 0xc5, 0x97, 0x8a, 0x6c, 0x7d, + 0x4f, 0xb9, 0xb4, 0x9d, 0x6f, 0x77, 0xb6, 0xed, 0x2d, 0x4f, + 0x2d, 0xc7, 0x23, 0xe5, 0x85, 0xcf, 0x08, 0xf9, 0x4c, 0x3b, + 0xae, 0x35, 0x7e, 0x41, 0x13, 0x08, 0x13, 0x1d, 0x8d, 0x89, + 0xd1, 0x80, 0xbf, 0x65, 0xb0, 0x2a, 0x46, 0x74, 0xeb, 0x7f, + 0x2c, 0xbf, 0x2c, 0x72, 0x6e, 0xd0, 0x1e, 0x7b, 0xf4, 0x41, + 0x22, 0x4b, 0x7e, 0xf8, 0x62, 0x53, 0xe9, 0xf4, 0xe9, 0x5a, + 0xea, 0x90, 0xa5, 0x20, 0x5f, 0x88, 0x2c, 0xeb, 0xf0, 0x1d, + 0x4a, 0x6f, 0x0b, 0x5f, 0x0b, 0xfd, 0xfa, 0x34, 0xe6, 0x6e, + 0x3d, 0x81, 0xe9, 0x62, 0xfe, 0x3e, 0xf9, 0x64, 0xab, 0x3d, + 0xab, 0xf7, 0xdb, 0x24, 0x2e, 0x02, 0x69, 0xe9, 0x72, 0xf3, + 0x0f, 0xc4, 0x4c, 0x6a, 0xfd, 0x69, 0xfd, 0xca, 0x47, 0x92, + 0x5f, 0x57, 0x1e, 0xfa, 0xe1, 0xcf, 0xac, 0x38, 0x43, 0x83, + 0xa9, 0x1e, 0xa9, 0x5e, 0x41, 0x4e, 0x61, 0xc3, 0xbd, 0xca, + 0xa3, 0x54, 0x8c, 0xe8, 0x15, 0xfe, 0x58, 0xbd, 0x58, 0xe4, + 0xdc, 0x63, 0x83, 0x69, 0x53, 0xec, 0x46, 0x2c, 0x09, 0xd3, + 0x0b, 0xef, 0xf0, 0x53, 0xf0, 0x0f, 0xd0, 0x18, 0x44, 0xd9, + 0x7d, 0x45, 0xcc, 0x79, 0xc7, 0x55, 0x8f, 0x29, 0x33, 0x7d, + 0x33, 0x1f, 0x39, 0xe6, 0xb1, 0x72, 0x46, 0xf6, 0x10, 0x99, + 0xa4, 0x0c, 0xb7, 0x0d, 0x04, 0x46, 0x04, 0x91, 0xf7, 0xd4, + 0xef, 0x14, 0x1c, 0x55, 0xf2, 0xb1, 0x66, 0xa4, 0xbd, 0x02, + 0xdd, 0x1c, 0xdd, 0xc8, 0xf3, 0xfd, 0x82, 0x58, 0x17, 0xb5, + 0x45, 0xcb, 0x67, 0x43, 0x42, 0x63, 0x80, 0x17, 0x80, 0x08, + 0x95, 0x7f, 0x36, 0xdf, 0xc6, 0xbd, 0x5a, 0xaf, 0xd6, 0xda, + 0x5b, 0x97, 0xf7, 0xc6, 0xf7, 0x82, 0xf0, 0x93, 0xa3, 0x86, + 0x04, 0x9d, 0x26, 0xfc, 0x57, 0xfb, 0x3f, 0xc1, 0xe8, 0x04, + 0xe8, 0xef, 0xa7, 0xa5, 0xaf, 0x09, 0xb2, 0xb7, 0x32, 0xd2, + 0xda, 0xf4, 0xd5, 0x5e, 0xed, 0xb2, 0xed, 0xcb, 0x1d, 0x44, + 0x88, 0x71, 0xfa, 0x8a, 0x5b, 0xf2, 0x4d, 0xaa, 0xdd, 0x52, + 0x66, 0xfa, 0x66, 0x3e, 0x72, 0x0f, 0x89, 0x40, 0xbe, 0xd3, + 0x58, 0x15, 0x23, 0x3a, 0x94, 0xde, 0x16, 0xbe, 0x16, 0x39, + 0x37, 0x68, 0x0f, 0xdc, 0x7a, 0xc1, 0x11, 0xc4, 0x3f, 0x7c, + 0x31, 0xc8, 0x95, 0x7a, 0x95, 0x2d, 0x75, 0x48, 0x1f, 0x4a, + 0xb0, 0x18, 0x21, 0xac, 0x10, 0x68, 0x2b, 0xdf, 0x99, 0xb0, + 0x99, 0x5d, 0xaf, 0xf7, 0x42, 0x7f, 0x26, 0x50, 0xc6, 0x6e, + 0x60, 0xb3, 0xfa, 0x87, 0xd0, 0x26, 0xd0, 0x0d, 0x64, 0x77, + 0xf6, 0xf8, 0xf7, 0x58, 0xd9, 0x0a, 0xd1, 0x2a, 0xe3, 0x73, + 0xa7, 0xf7, 0xa7, 0x87, 0x01, 0x9b, 0xdf, 0x6d, 0x81, 0xfd, + 0xa2, 0x09, 0x17, 0x98, 0x93, 0x3b, 0xc9, 0x81, 0xc9, 0x58, + 0x5e, 0xff, 0x3a, 0x50, 0x70, 0x97, 0x4e, 0x81, 0x5b, 0xd5, + 0xb1, 0x08, 0xf2, 0x70, 0xf2, 0xa6, 0x4a, 0x72, 0xc1, 0x16, + 0x75, 0xbc, 0x80, 0x42, 0x69, 0x60, 0xf1, 0x68, 0x20, 0x75, + 0x20, 0x02, 0xb4, 0x6f, 0x28, 0xa4, 0x32, 0xfc, 0x78, 0xe4, + 0xa8, 0x22, 0x39, 0xc4, 0x1e, 0x32, 0x1e, 0xd8, 0x1a, 0x03, + 0xf1, 0x6f, 0xe8, 0x14, 0xd0, 0xfa, 0x18, 0x5c, 0xdf, 0x51, + 0x34, 0xe8, 0x34, 0x92, 0x19, 0x6d, 0xcb, 0x3f, 0x98, 0x83, + 0x9e, 0x7b, 0x43, 0x89, 0x6e, 0x59, 0xc6, 0x98, 0xc6, 0x34, + 0x53, 0x1f, 0x92, 0xce, 0xdd, 0x6c, 0x75, 0xa3, 0x48, 0x57, + 0x58, 0x74, 0x8c, 0xdd, 0x8c, 0x78, 0x4f, 0xc0, 0x87, 0xad, + 0x80, 0x4b, 0x4a, 0x36, 0x72, 0xd6, 0xec, 0x9a, 0xf3, 0x80, + 0xf3, 0x13, 0x07, 0x47, 0xe7, 0x5f, 0x79, 0xd8, 0xea, 0x85, + 0x90, 0xae, 0xb0, 0xe8, 0xdb, 0x79, 0xdb, 0xf0, 0x9e, 0x43, + 0x3e, 0x94, 0xa3, 0x30, 0x42, 0x9b, 0x20, 0xd0, 0x56, 0x7d, + 0xf1, 0xa3, 0xf1, 0xba, 0x9d, 0x2d, 0xfa, 0x77, 0x41, 0x72, + 0xcd, 0x24, 0x5c, 0x25, 0x09, 0xec, 0xa2, 0x41, 0xa2, 0xa3, + 0xbb, 0x7a, 0x0d, 0xbe, 0xf2, 0x73, 0x17, 0xc9, 0xe3, 0x9f, + 0xa3, 0x13, 0x75, 0xf2, 0x75, 0x23, 0xff, 0x86, 0x51, 0xba, + 0x20, 0x62, 0xf3, 0xec, 0xfd, 0xd4, 0x3b, 0xc7, 0x4c, 0x20, + 0x4c, 0x74, 0x71, 0x61, 0xb6, 0xe5, 0x59, 0xba, 0x19, 0x69, + 0x6d, 0x7a, 0x8b, 0x2f, 0x97, 0x59, 0x97, 0x84, 0xef, 0x22, + 0x7b, 0x7c, 0x9a, 0x2c, 0x8d, 0x05, 0x89, 0x15, 0x90, 0xd8, + 0xb2, 0x9a, 0xb2, 0xa2, 0xe1, 0xac, 0x74, 0xa0, 0xe0, 0xed, + 0x9c, 0xc1, 0xb6, 0x69, 0xa1, 0x10, 0x27, 0xe0, 0x27, 0x8f, + 0x94, 0xe4, 0x3f, 0xa5, 0xe7, 0x69, 0x41, 0x7c, 0x4e, 0x40, + 0x1f, 0xf1, 0x81, 0xe7, 0x81, 0xbd, 0xd8, 0x4a, 0x2f, 0x33, + 0x2d, 0xb0, 0x71, 0x14, 0x61, 0x54, 0x05, 0xe6, 0x8d, 0x2d, + 0x8d, 0xcd, 0x02, 0xf5, 0x7d, 0xda, 0xc1, 0x39, 0x87, 0x12, + 0x2e, 0xf3, 0xe5, 0x76, 0x51, 0xc1, 0x51, 0xb0, 0xbc, 0x3d, + 0xbb, 0x5b, 0xab, 0xc9, 0x0e, 0xa0, 0x8e, 0xe5, 0x28, 0x3c, + 0xe2, 0xab, 0xe2, 0xa7, 0x10, 0xa4, 0x49, 0x67, 0x8f, 0x36, + 0xdb, 0xb0, 0x24, 0xca, 0x2c, 0x3a, 0x46, 0x8f, 0x46, 0x3c, + 0xc6, 0x60, 0x2b, 0xf7, 0xfe, 0x17, 0x7d, 0x0e, 0x1a, 0x51, + 0xe2, 0x93, 0x8e, 0xfe, 0x8e, 0xd1, 0xd5, 0xaa, 0x99, 0xd6, + 0x74, 0x0a, 0x68, 0x7d, 0x0c, 0x2e, 0x8e, 0xc9, 0x1a, 0x74, + 0x1a, 0x49, 0xed, 0xd7, 0x02, 0x62, 0x88, 0xb2, 0x06, 0x0d, + 0xdc, 0xe3, 0x92, 0xdb, 0xe0, 0x88, 0xe0, 0x0e, 0x8a, 0xce, + 0x37, 0xee, 0x82, 0xe4, 0x59, 0x48, 0xb8, 0x4a, 0x12, 0x1b, + 0x87, 0x82, 0x87, 0x85, 0xb5, 0xf4, 0xb3, 0x10, 0xce, 0x44, + 0x16, 0x94, 0x78, 0xef, 0x25, 0xd6, 0xe4, 0xce, 0xe4, 0x9f, + 0x7d, 0x1a, 0x73, 0x37, 0xff, 0xa1, 0x95, 0x31, 0x7f, 0x1f, + 0x9d, 0x32, 0xb4, 0xff, 0xb4, 0x9a, 0x8c, 0x12, 0x64, 0x36, + 0x2a, 0x34, 0xac, 0xa9, 0x99, 0x7d, 0xbb, 0x07, 0x2b, 0x2a, + 0x2b, 0xff, 0x4e, 0x5b, 0xdc, 0x3e, 0x4d, 0x16, 0xa7, 0xe3, + 0xa5, 0xeb, 0x48, 0x6c, 0x59, 0x4d, 0x59, 0x51, 0x91, 0x56, + 0xd8, 0xfa, 0x9e, 0xb1, 0xab, 0xf9, 0xde, 0xee, 0xaf, 0x19, + 0x5a, 0x9e, 0x5a, 0x4d, 0x46, 0x09, 0xc9, 0x5d, 0x10, 0x31, + 0x98, 0x76, 0x9f, 0x6a, 0xfc, 0x82, 0x26, 0x10, 0x26, 0x3a, + 0xd9, 0xd1, 0xab, 0xcd, 0x61, 0x10, 0x3e, 0xc8, 0xa1, 0xf1, + 0x32, 0x2b, 0xee, 0x61, 0xee, 0xd7, 0xca, 0x1b, 0x33, 0x2a, + 0x51, 0x43, 0x55, 0x52, 0xc3, 0x4f, 0xf5, 0x6e, 0x84, 0x51, + 0x84, 0x99, 0x62, 0xab, 0x6b, 0xea, 0x50, 0xf5, 0xbd, 0x6d, + 0xa6, 0x01, 0x8a, 0xcf, 0xbe, 0x50, 0xbe, 0xd2, 0x3b, 0x13, + 0xcc, 0xa8, 0x87, 0xcf, 0x97, 0x8b, 0x8a, 0xff, 0x52, 0x7b, + 0x55, 0x87, 0x55, 0x21, 0x4b, 0xe9, 0x90, 0xac, 0x55, 0xde, + 0x73, 0xae, 0x94, 0xb4, 0xca, 0xaf, 0x6c, 0x55, 0x6c, 0x76, + 0xc5, 0x0e, 0xd0, 0xb1, 0xfb, 0x3c, 0xb3, 0xcd, 0x28, 0xe4, + 0xa2, 0xf3, 0x5c, 0xfb, 0x5c, 0x75, 0x2b, 0xb7, 0xac, 0x5a, + 0x7e, 0x5c, 0x37, 0x38, 0x68, 0x87, 0x0e, 0x09, 0x7d, 0x7e, + 0x7d, 0xc2, 0xd2, 0xed, 0xbf, 0x9f, 0x78, 0x6e, 0x02, 0xba, + 0xf5, 0xe0, 0xcf, 0x49, 0xe1, 0x78, 0xe1, 0xbb, 0xc7, 0xfb, + 0xda, 0x98, 0x16, 0x03, 0xad, 0xf4, 0x02, 0x0d, 0x3d, 0xc2, + 0xba, 0x16, 0xba, 0x43, 0xcc, 0xc7, 0xa7, 0x42, 0xd7, 0x3a, + 0x2a, 0xe6, 0x2c, 0xfe, 0xd8, 0xb4, 0xeb, 0xd7, 0xeb, 0xf3, + 0x70, 0xfa, 0x5e, 0x66, 0x5a, 0xa3, 0xe2, 0x28, 0xc2, 0xa8, + 0x0a, 0x0f, 0xd9, 0x5a, 0xd9, 0x59, 0x04, 0x29, 0x98, 0xe7, + 0x30, 0x53, 0x6b, 0x9a, 0x62, 0xbe, 0xc7, 0x45, 0x6a, 0x30, + 0x6a, 0x4e, 0xa8, 0xb0, 0x7a, 0x4d, 0xde, 0x75, 0x8e, 0xe2, + 0xe7, 0x85, 0xd9, 0x54, 0xc2, 0xde, 0xc2, 0xa5, 0xa4, 0xcb, + 0x13, 0xc5, 0x06, 0x32, 0x35, 0x82, 0x9d, 0x67, 0xc1, 0x40, + 0x9c, 0x06, 0x9c, 0x79, 0x15, 0x16, 0x6a, 0xdb, 0x14, 0xac, + 0xbe, 0x8a, 0xc8, 0x91, 0xc3, 0x43, 0xce, 0x14, 0xce, 0xd5, + 0x7e, 0x74, 0x40, 0x1d, 0xae, 0xe2, 0xc0, 0x63, 0xbc, 0x50, + 0x68, 0x5c, 0x30, 0xae, 0x30, 0x03, 0xee, 0xb9, 0xa8, 0x9e, + 0xad, 0xfb, 0x3b, 0x22, 0x13, 0x82, 0xe9, 0x7c, 0x7e, 0xad, + 0x7e, 0xde, 0x05, 0xb2, 0x5b, 0x93, 0xcd, 0x5d, 0xed, 0xd5, + 0xd7, 0x3d, 0xa4, 0xf6, 0xaa, 0xcd, 0xaa, 0x42, 0x96, 0x11, + 0xeb, 0xd0, 0xcf, 0xf2, 0xfe, 0xab, 0x1d, 0xa1, 0x5a, 0x77, + 0xde, 0xcf, 0xde, 0xd4, 0x24, 0xa2, 0x66, 0x54, 0xa2, 0x86, + 0xaa, 0xa4, 0x45, 0x9e, 0x29, 0xdc, 0xcb, 0xa2, 0xcb, 0xf1, + 0xc4, 0x95, 0x56, 0x2d, 0x3f, 0x2e, 0xfa, 0x1c, 0x34, 0xa2, + 0x07, 0xe5, 0xdf, 0x3f, 0xdf, 0x61, 0x69, 0x97, 0x81, 0x0b, + 0xdb, 0x5e, 0x40, 0x21, 0xd5, 0x30, 0x99, 0x34, 0x10, 0xdb, + 0x10, 0x01, 0x5a, 0xd6, 0x77, 0xf3, 0x2c, 0x06, 0x99, 0x2b, + 0x04, 0x1a, 0x7a, 0x47, 0xb7, 0x2c, 0xb7, 0x86, 0x5b, 0x4d, + 0x57, 0x1c, 0x7b, 0x77, 0xf9, 0xfb, 0x5a, 0x32, 0x4e, 0x69, + 0xaf, 0x7b, 0xaf, 0x66, 0x2c, 0xf0, 0x4e, 0xf0, 0x90, 0x7a, + 0xd2, 0x40, 0xed, 0xbc, 0x10, 0x18, 0xd5, 0x90, 0xd5, 0x29, + 0xde, 0x96, 0x8d, 0x84, 0x6d, 0x74, 0x54, 0x0f, 0x58, 0x3f, + 0x73, 0xab, 0x15, 0x6d, 0x15, 0x25, 0xe0, 0x37, 0xb0, 0x43, + 0x02, 0xaf, 0x13, 0x7e, 0xca, 0x9c, 0xfe, 0x81, 0x74, 0x02, + 0x74, 0x96, 0xb2, 0xb3, 0xf3, 0x0d, 0x60, 0xa6, 0xd6, 0xf7, + 0xc4, 0xbf, 0x4d, 0x8a, 0xd4, 0x60, 0xd4, 0x9c, 0x93, 0xa3, + 0x94, 0x68, 0x86, 0x79, 0x7f, 0xb4, 0xef, 0xb1, 0x2d, 0xda, + 0x6f, 0x86, 0x6f, 0x6a, 0x12, 0x51, 0x20, 0xef, 0x57, 0x71, + 0x60, 0xd0, 0x5e, 0x28, 0x34, 0x2e, 0x18, 0x57, 0x18, 0xe0, + 0x77, 0xbd, 0x24, 0x2b, 0x84, 0xd6, 0x6c, 0xca, 0x25, 0x2d, + 0xd3, 0x5b, 0x1b, 0x84, 0x1b, 0xfc, 0xa0, 0xe2, 0xd7, 0x26, + 0xe4, 0x70, 0xba, 0x3d, 0xe1, 0x92, 0x9e, 0xd1, 0xcf, 0xe4, + 0xcf, 0x60, 0x33, 0x41, 0x14, 0x52, 0x19, 0x7e, 0x3c, 0x72, + 0x54, 0x11, 0xfd, 0x62, 0x0f, 0x19, 0x0f, 0x6c, 0x0d, 0xe0, + 0x9e, 0x41, 0x6b, 0x46, 0x61, 0x8d, 0xc5, 0x58, 0xb2, 0xeb, + 0x89, 0x6b, 0x89, 0x5c, 0xf5, 0x21, 0x05, 0xf5, 0x97, 0xfe, + 0x0f, 0xfd, 0x15, 0x95, 0xae, 0xf9, 0x73, 0x97, 0x73, 0x1b, + 0x92, 0x38, 0xc6, 0x81, 0x6a, 0xf0, 0x89, 0xb2, 0xa0, 0x16, + 0xcd, 0x4a, 0xb3, 0x6a, 0xb3, 0x17, 0xac, 0x99, 0xed, 0x76, + 0x94, 0xe7, 0xf4, 0xbc, 0xba, 0x47, 0x2f, 0xd9, 0x3d, 0x94, + 0x3d, 0xc6, 0x79, 0x33, 0xc8, 0x6c, 0x54, 0x68, 0x9b, 0x91, + 0xf1, 0xfa, 0xb5, 0x0e, 0x56, 0x54, 0x56, 0x3d, 0x9c, 0xb6, + 0x9b, 0xb4, 0xfc, 0xb8, 0x6e, 0x70, 0xd0, 0xcd, 0x1c, 0x12, + 0xfa, 0xfc, 0xfa, 0x47, 0x67, 0x19, 0xbd, 0xfd, 0xf0, 0xdc, + 0x04, 0xb7, 0x29, 0x03, 0x5d, 0x92, 0x01, 0xf0, 0x01, 0xb5, + 0x4d, 0x35, 0x84, 0xfe, 0x4c, 0xa0, 0x4f, 0xdc, 0xc0, 0xa5, + 0x37, 0xcd, 0x63, 0x4c, 0x63, 0x1a, 0xc8, 0xee, 0xc3, 0x74, + 0xfd, 0x0e, 0x86, 0x4f, 0xb5, 0x83, 0x63, 0xb3, 0xc0, 0xfd, + 0xc0, 0x0c, 0x3e, 0xa1, 0xca, 0x0e, 0xdc, 0xda, 0x9d, 0x9c, + 0x2d, 0x19, 0x27, 0xd5, 0xb6, 0xdc, 0xb6, 0x33, 0x16, 0x78, + 0x8a, 0x13, 0x72, 0x38, 0x5d, 0xff, 0x91, 0x49, 0x4f, 0x89, + 0x86, 0x72, 0x86, 0x30, 0xf8, 0xc1, 0x34, 0xbd, 0x4e, 0x0f, + 0x5c, 0xa2, 0x0a, 0x39, 0xc9, 0x4c, 0x17, 0x4e, 0x17, 0x8c, + 0x7a, 0x5d, 0x26, 0x49, 0x0c, 0x64, 0x6a, 0xc7, 0xf9, 0xce, + 0x41, 0x80, 0xfb, 0x0c, 0xfb, 0xf2, 0x2a, 0x2c, 0x10, 0x96, + 0xca, 0xd9, 0x30, 0x68, 0x2f, 0x14, 0x1a, 0x17, 0x0c, 0xca, + 0x0c, 0x70, 0xda, 0xbf, 0x25, 0x1a, 0xc0, 0x8f, 0x6f, 0x2d, + 0x4b, 0xbd, 0x9a, 0xd7, 0x6b, 0xc0, 0x6b, 0xfb, 0xe5, 0x85, + 0xe3, 0x9b, 0xaa, 0x7f, 0xe6, 0x9f, 0xeb, 0xab, 0x57, 0x9d, + 0xd8, 0xaa, 0xd8, 0xec, 0x49, 0x1c, 0x63, 0xa1, 0x35, 0x78, + 0xa5, 0x59, 0x50, 0x0b, 0x87, 0x25, 0xb8, 0x35, 0xb8, 0xea, + 0x56, 0xad, 0x0a, 0x29, 0xed, 0x3f, 0x1e, 0x39, 0x2a, 0xe9, + 0x9f, 0x31, 0xe6, 0xed, 0xe6, 0x36, 0xe7, 0x70, 0x4f, 0xc1, + 0xd4, 0x23, 0xd1, 0xa7, 0x83, 0x2c, 0x59, 0x94, 0xa5, 0xd4, + 0xa5, 0x2e, 0x9b, 0xf1, 0x8b, 0x22, 0x36, 0x61, 0x5e, 0x18, + 0xff, 0xd9, 0x06, 0x05, 0xf6, 0x36, 0xf6, 0x37, 0xbd, 0xa6, + 0xc7, 0xb0, 0x2e, 0xa9, 0x8a, 0x55, 0xce, 0x86, 0x84, 0xc6, + 0xc3, 0x2e, 0xc3, 0x10, 0xe9, 0xfe, 0x67, 0x65, 0xe6, 0xdf, + 0xa9, 0x43, 0x2b, 0x0e, 0x60, 0x50, 0xbb, 0xe6, 0xbb, 0xf6, + 0x81, 0xf2, 0x2d, 0x51, 0xa5, 0x02, 0x77, 0x19, 0xbd, 0xb7, + 0x97, 0x3d, 0x6d, 0xa5, 0x6d, 0xc3, 0x88, 0x3b, 0xfe, 0xb3, + 0x92, 0xd5, 0xc1, 0x3e, 0x27, 0x20, 0xee, 0x99, 0xa1, 0x92, + 0xa1, 0xbf, 0x6c, 0x25, 0x45, 0xe8, 0x39, 0x1c, 0xcf, 0x9e, + 0xa9, 0xc5, 0xc6, 0xa5, 0x43, 0x39, 0x43, 0x18, 0x7c, 0x81, + 0xa0, 0xd5, 0xc8, 0x76, 0x23, 0x16, 0xe5, 0x88, 0xe4, 0x96, + 0x78, 0xc8, 0x78, 0xe6, 0x68, 0x0c, 0x80, 0x3a, 0x9f, 0x07, + 0x43, 0xc6, 0xbb, 0xa0, 0xd0, 0xb8, 0x60, 0x9f, 0x60, 0x06, + 0x1f, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x34, + 0x43, 0xdd, 0xde, 0x5a, 0x96, 0xb9, 0xf7, 0x6d, 0xd6, 0x43, + 0xd6, 0x35, 0x09, 0xc9, 0xee, 0x25, 0x58, 0x0c, 0xf1, 0x56, + 0x08, 0x34, 0xf4, 0x8e, 0xad, 0x58, 0xad, 0xcf, 0xb6, 0x9a, + 0x4c, 0x92, 0x18, 0xc8, 0xd4, 0x4d, 0x31, 0x5f, 0x82, 0xc3, + 0x35, 0x18, 0x35, 0x27, 0x54, 0x58, + }, + { + /* 13 */ + 0xab, 0xda, 0x7f, 0x93, 0x75, 0x63, 0x3b, 0x22, 0xb7, 0x40, + 0xa6, 0x84, 0xc2, 0x22, 0x09, 0xda, 0xbb, 0xd9, 0xf4, 0xa6, + 0xc1, 0x1b, 0xf5, 0xe1, 0x54, 0xa2, 0xc5, 0x24, 0x95, 0xe1, + 0xdd, 0xd9, 0x83, 0x3c, 0x0e, 0x02, 0x84, 0xaf, 0x03, 0xe7, + 0x22, 0x36, 0xb0, 0x57, 0xa6, 0xe7, 0x08, 0x3c, 0x0d, 0x8c, + 0x03, 0x40, 0xed, 0xc4, 0x60, 0xd0, 0xca, 0x0f, 0xa2, 0x72, + 0x27, 0xd0, 0xc3, 0x8c, 0x3a, 0xdd, 0xd3, 0xea, 0xb2, 0xbb, + 0x9f, 0x26, 0x52, 0x19, 0x41, 0x67, 0xe0, 0x26, 0x2e, 0xdd, + 0x4a, 0xd4, 0xe4, 0x61, 0x38, 0x10, 0xb0, 0x2a, 0xbe, 0xf2, + 0xab, 0x81, 0x86, 0x2a, 0x47, 0xd4, 0xe8, 0xf2, 0xca, 0x2e, + 0x8d, 0xa9, 0x39, 0x98, 0x8b, 0x64, 0xc7, 0x5f, 0x06, 0x98, + 0xb8, 0xf2, 0xeb, 0xd6, 0x16, 0x47, 0xe0, 0x40, 0x85, 0xa8, + 0xbd, 0x4e, 0xe9, 0x41, 0x5d, 0xa8, 0xdf, 0xd6, 0x8f, 0xac, + 0xf8, 0x65, 0xf3, 0x8d, 0xb6, 0x27, 0xfa, 0x9e, 0x08, 0x2f, + 0x09, 0x27, 0x57, 0xac, 0xbe, 0xb5, 0x53, 0x1d, 0x76, 0xe3, + 0xf2, 0xb1, 0x0e, 0xdc, 0xb7, 0x06, 0x78, 0xb1, 0x74, 0xb5, + 0x0f, 0xb4, 0x2a, 0x0e, 0x1a, 0xcb, 0x09, 0xf0, 0xee, 0x82, + 0x96, 0x66, 0xf4, 0xf0, 0x38, 0xb4, 0x6d, 0x86, 0xbf, 0xfe, + 0xd3, 0x17, 0x81, 0x1f, 0xc5, 0x06, 0x2b, 0x34, 0x16, 0x1f, + 0x7e, 0x86, 0x0a, 0xd8, 0x8d, 0xb5, 0xad, 0x33, 0x0e, 0xa0, + 0xb4, 0xfc, 0xe4, 0x44, 0x19, 0xa0, 0x91, 0xd8, 0x29, 0xfa, + 0x84, 0xb6, 0x6b, 0x2a, 0xed, 0xd5, 0x87, 0xd1, 0x0c, 0xd9, + 0xec, 0xd5, 0x9d, 0xfa, 0x17, 0x57, 0x05, 0xc0, 0xf4, 0x8f, + 0xa0, 0xb3, 0x9d, 0x11, 0x25, 0x96, 0x69, 0xb3, 0x86, 0x57, + 0xb0, 0x1d, 0x8c, 0x34, 0xf6, 0xce, 0x2e, 0x51, 0xf2, 0xf9, + 0x3b, 0x6a, 0x04, 0x51, 0xd0, 0x1d, 0xc5, 0x78, 0x1c, 0x04, + 0xcb, 0x9d, 0x06, 0x0d, 0x44, 0x6c, 0xa3, 0xae, 0x8f, 0x0d, + 0x10, 0x78, 0x4c, 0x9c, 0x9f, 0xb3, 0xe2, 0x01, 0x0b, 0x4a, + 0xd2, 0xa6, 0xf7, 0xbd, 0x30, 0x4a, 0x89, 0x9c, 0xc3, 0x30, + 0x67, 0xd6, 0x11, 0x8c, 0xbd, 0x6d, 0x28, 0x38, 0xff, 0x92, + 0x39, 0x6d, 0xde, 0x30, 0xb5, 0x71, 0x2b, 0x8f, 0x41, 0x36, + 0x29, 0x01, 0xa8, 0x87, 0x49, 0x48, 0xe9, 0x01, 0x79, 0x71, + 0x74, 0x79, 0x65, 0x17, 0xa7, 0xb5, 0xfd, 0x4c, 0xa4, 0x32, + 0x82, 0xce, 0x03, 0x4c, 0x5c, 0x79, 0x94, 0x6b, 0x0b, 0xc2, + 0x70, 0x20, 0xa3, 0x54, 0xbf, 0x27, 0x95, 0xc1, 0xcf, 0x54, + 0x8e, 0x6b, 0x1d, 0x8f, 0x88, 0x75, 0x59, 0xbc, 0xae, 0x13, + 0x29, 0xed, 0xc1, 0xd2, 0x70, 0x13, 0x17, 0x8f, 0x25, 0x6a, + 0x72, 0xd1, 0x1c, 0x08, 0x58, 0x15, 0x5f, 0x79, 0xb4, 0xa1, + 0x43, 0x15, 0xc2, 0x6a, 0x48, 0xec, 0xcd, 0x2f, 0xcf, 0x1f, + 0xd9, 0x0a, 0x9a, 0x7f, 0x9f, 0x95, 0x55, 0x0a, 0xbc, 0xec, + 0xda, 0xcf, 0xbd, 0x3f, 0x65, 0x2e, 0xc1, 0x3e, 0x49, 0x0c, + 0x56, 0x68, 0x2c, 0x3e, 0xfc, 0xcf, 0xdd, 0x9b, 0x33, 0xca, + 0x25, 0xd9, 0xaf, 0x4e, 0x37, 0xff, 0x10, 0x5e, 0x12, 0x4e, + 0xae, 0x9b, 0xe9, 0xee, 0x3f, 0x09, 0x17, 0x4f, 0xec, 0x88, + 0x99, 0xc3, 0xdd, 0x55, 0x8e, 0x88, 0x24, 0xee, 0xea, 0xca, + 0xe3, 0x60, 0x7a, 0xa6, 0x50, 0xb8, 0xaf, 0xe9, 0xf3, 0x4b, + 0xd5, 0xb8, 0x43, 0xca, 0x73, 0x2d, 0xeb, 0xe2, 0xe7, 0x42, + 0x93, 0x3c, 0xda, 0xc1, 0xc4, 0xf8, 0x3d, 0x3c, 0x0e, 0x2d, + 0x2e, 0xae, 0x0a, 0x43, 0x2b, 0xdd, 0x83, 0xa5, 0xf9, 0x22, + 0x4a, 0xef, 0xd2, 0xa5, 0xcf, 0xae, 0xf5, 0x7d, 0x42, 0x5b, + 0xd4, 0x15, 0x97, 0x8b, 0xa2, 0x89, 0x06, 0x8d, 0x76, 0x8b, + 0xaf, 0x7d, 0x26, 0x4e, 0xae, 0xb8, 0x71, 0xe1, 0xe4, 0x25, + 0x69, 0x53, 0x9a, 0xbf, 0x18, 0x25, 0xa5, 0x4e, 0xd0, 0x17, + 0x30, 0x8a, 0xc8, 0x1d, 0xcf, 0x9e, 0xfd, 0xf0, 0xb2, 0x2c, + 0x35, 0x9e, 0x6d, 0x17, 0xc4, 0x64, 0xe9, 0x23, 0x51, 0x7b, + 0xd3, 0x1d, 0x56, 0xcb, 0xb9, 0xa4, 0x07, 0x1d, 0x8c, 0x64, + 0xf3, 0x35, 0x39, 0x89, 0x0e, 0x04, 0x2c, 0xeb, 0xce, 0xdd, + 0x5a, 0xb1, 0xc0, 0xeb, 0x61, 0x35, 0x7b, 0xcd, 0x4f, 0x19, + 0xbd, 0x7e, 0xf4, 0xbc, 0x4a, 0xb0, 0x14, 0xa8, 0xf7, 0xbc, + 0x64, 0xcd, 0x4d, 0x80, 0x6a, 0x94, 0x78, 0xe7, 0xde, 0x5a, + 0xc0, 0x01, 0xed, 0xb7, 0xb8, 0x5a, 0x15, 0x80, 0x45, 0x60, + 0xce, 0x6f, 0x22, 0xdb, 0xb9, 0xda, 0x50, 0x70, 0x3d, 0xe7, + 0x72, 0xda, 0x7f, 0x60, 0xa9, 0xe2, 0x56, 0xdd, 0x82, 0x6c, + 0x52, 0x02, 0x93, 0xcd, 0x92, 0x90, 0x11, 0x02, 0xf2, 0xe2, + 0x5e, 0xa7, 0x3d, 0xc8, 0xa1, 0x76, 0xac, 0xa9, 0x15, 0xc9, + 0xa0, 0x09, 0xb4, 0xa9, 0xa6, 0xa7, 0xd8, 0xf7, 0x94, 0x71, + 0x92, 0x21, 0xa8, 0x1e, 0x6d, 0x81, 0x62, 0x7c, 0xff, 0x1e, + 0x07, 0xf7, 0x7e, 0xa1, 0xe8, 0xa2, 0x0a, 0x86, 0xf3, 0xec, + 0x10, 0xce, 0x66, 0x8a, 0x1a, 0xec, 0xcd, 0xa1, 0xf2, 0x29, + 0xcc, 0xae, 0x94, 0xe2, 0xf9, 0xfb, 0xdc, 0x7a, 0x40, 0xbb, + 0x48, 0xfb, 0xfd, 0x29, 0x90, 0x1b, 0x59, 0x5e, 0x5d, 0x3e, + 0x71, 0x14, 0xf7, 0xfe, 0xfd, 0xe9, 0xaa, 0x14, 0xbb, 0x1b, + 0x77, 0x5d, 0xb9, 0x7e, 0xca, 0x5c, 0x41, 0x7c, 0x92, 0x18, + 0xac, 0xd0, 0x58, 0x7c, 0x3b, 0x5d, 0x53, 0x2b, 0x3e, 0x88, + 0x4c, 0xb2, 0xcc, 0x79, 0xdf, 0xc6, 0x02, 0x7b, 0x93, 0x79, + 0x65, 0x2b, 0xe5, 0x7e, 0xc9, 0x6e, 0x60, 0x6d, 0x59, 0x48, + 0x41, 0x6b, 0x65, 0x2d, 0x21, 0x48, 0x7b, 0x7e, 0x49, 0xf0, + 0x38, 0x08, 0x55, 0xf9, 0x0c, 0x1a, 0x88, 0xd8, 0x85, 0x9f, + 0xdd, 0x1a, 0x20, 0xf0, 0x98, 0xfb, 0xfd, 0xa5, 0x07, 0x02, + 0x16, 0x94, 0x67, 0x8f, 0x2d, 0xb9, 0x60, 0x94, 0xd1, 0xfb, + 0x13, 0x27, 0x57, 0x5c, 0xd9, 0x91, 0x72, 0xf3, 0xd5, 0xc8, + 0x4d, 0xbe, 0x0c, 0xf3, 0xb3, 0x27, 0x43, 0x28, 0xb5, 0xbd, + 0xf8, 0xca, 0x02, 0xba, 0x3c, 0x24, 0x61, 0xdb, 0xc4, 0xba, + 0xb1, 0x28, 0xdc, 0x87, 0xc6, 0xed, 0xbf, 0x3f, 0x7a, 0x5e, + 0x25, 0x58, 0x0a, 0x54, 0x9a, 0x5e, 0x32, 0x87, 0xc7, 0x40, + 0x35, 0x4a, 0x3c, 0x92, 0x6f, 0x2d, 0x60, 0xe1, 0x97, 0xba, + 0x5c, 0x2d, 0xeb, 0x40, 0xa0, 0x1e, 0x07, 0x01, 0x42, 0xb6, + 0xe0, 0x92, 0x11, 0x1b, 0x58, 0xca, 0x53, 0x92, 0x04, 0x1e, + 0xcc, 0x84, 0x4d, 0xd8, 0x0b, 0x47, 0xb4, 0x9d, 0xc6, 0xba, + 0x69, 0xf4, 0xcd, 0x9d, 0xe6, 0x84, 0x14, 0x73, 0xd9, 0xa9, + 0x99, 0x66, 0x1c, 0x83, 0xab, 0x3b, 0x0b, 0x88, 0x32, 0x83, + 0xe1, 0x73, 0x52, 0x37, 0xcb, 0xaf, 0xd6, 0x54, 0x19, 0x69, + 0xcd, 0x61, 0x18, 0x71, 0x1b, 0x69, 0xf9, 0x37, 0x2f, 0xb2, + 0xff, 0x64, 0xb1, 0x3b, 0x56, 0xb5, 0xeb, 0x85, 0x50, 0xe5, + 0x5a, 0xb5, 0x53, 0xb2, 0x47, 0x58, 0xe7, 0x21, 0xd5, 0xd4, + 0xd0, 0xfa, 0x74, 0xfd, 0x09, 0xf3, 0xa1, 0xfa, 0x84, 0x58, + 0xa6, 0x56, 0x7c, 0xd3, 0x98, 0xa7, 0x5b, 0xf2, 0x7d, 0x4f, + 0x04, 0xf6, 0xe5, 0xf2, 0xca, 0x56, 0x5f, 0xbb, 0xc8, 0xef, + 0x3b, 0x90, 0x79, 0xb9, 0x07, 0x6e, 0xba, 0x03, 0x3c, 0xb9, + 0x3a, 0xbb, 0xe3, 0x36, 0xb2, 0xbc, 0xba, 0x7c, 0xe2, 0x28, + 0x2d, 0x3f, 0x39, 0x11, 0x97, 0x28, 0xb5, 0x36, 0xb8, 0xfd, + 0x28, 0xcf, 0xac, 0xf2, 0x49, 0xd1, 0x62, 0x88, 0xeb, 0x3a, + 0xce, 0xd1, 0xba, 0xfd, 0xa7, 0x4a, 0x89, 0xf4, 0x02, 0x41, + 0x8e, 0xe2, 0x6f, 0xe8, 0x1e, 0xfc, 0x6d, 0xe2, 0x56, 0x4a, + 0xc0, 0x14, 0xbb, 0xbf, 0x7c, 0x65, 0x01, 0x5d, 0x1e, 0x12, + 0xd1, 0x8c, 0x62, 0x5d, 0xb9, 0x14, 0x23, 0x22, 0x09, 0x03, + 0xc6, 0x19, 0xe3, 0x75, 0x33, 0x2d, 0xe8, 0x9d, 0xf5, 0x75, + 0x0c, 0x22, 0x2a, 0xde, 0x58, 0xdf, 0x06, 0xc3, 0x51, 0xe5, + 0xb1, 0xfb, 0x22, 0xc7, 0xb7, 0xe5, 0xfa, 0xde, 0x62, 0x32, + 0x95, 0xf0, 0xc9, 0xdc, 0x88, 0xef, 0x2b, 0x84, 0xbd, 0x52, + 0xe2, 0xef, 0x46, 0x32, 0x7d, 0x85, 0x34, 0xcb, 0x67, 0x6f, + 0x4f, 0xdc, 0x26, 0xe4, 0x48, 0x94, 0x41, 0xdc, 0xaa, 0x85, + 0x31, 0x19, 0xab, 0x78, 0x85, 0x6e, 0x44, 0x96, 0xf4, 0x42, + 0xbf, 0x29, 0x71, 0x96, 0x23, 0x19, 0x30, 0x05, 0x5e, 0x5f, + 0x1f, 0x88, 0x91, 0x86, 0xe6, 0xe5, 0xa5, 0x23, 0xf9, 0x86, + 0xbf, 0x05, 0xc1, 0x08, 0x4e, 0x98, 0xe6, 0x83, 0xd4, 0x4d, + 0x0c, 0xb5, 0xcb, 0x86, 0xea, 0x4d, 0x25, 0x08, 0x20, 0x06, + 0xd5, 0x6a, 0xab, 0xf0, 0x5f, 0x45, 0x05, 0x07, 0xc6, 0x83, + 0xae, 0x45, 0x6b, 0x06, 0x8a, 0xc0, 0x5f, 0xde, 0x44, 0x75, + 0xb1, 0x77, 0xa0, 0xe0, 0x7a, 0x0d, 0xe4, 0x77, 0xfe, 0xc0, + 0xd7, 0x43, 0xbe, 0x7f, 0x88, 0xea, 0xa1, 0xee, 0x83, 0x03, + 0xf4, 0x1a, 0x0b, 0xee, 0x3f, 0x43, 0x3d, 0x89, 0x5d, 0x1f, + 0xf2, 0x4c, 0xf1, 0x56, 0x2c, 0xea, 0x07, 0x51, 0xde, 0x56, + 0x7c, 0x89, 0xbf, 0xa9, 0xa6, 0x3a, 0xec, 0x05, 0x27, 0xa1, + 0x1c, 0x7b, 0xad, 0x0c, 0xf0, 0xa1, 0xe8, 0xa9, 0xc6, 0x5c, + 0xc0, 0x6d, 0xa6, 0x74, 0xba, 0x3d, 0x72, 0x46, 0x8d, 0xb0, + 0xd4, 0x3d, 0x77, 0x5c, 0x72, 0x31, 0x1e, 0xc5, 0x7d, 0xa4, + 0x46, 0x2c, 0xc8, 0x66, 0xde, 0xf2, 0xb5, 0x2c, 0x92, 0x31, + 0xdb, 0xd3, 0x48, 0x18, 0xff, 0xc8, 0x14, 0x2e, 0x5b, 0xab, + 0x4c, 0x62, 0xa4, 0x2e, 0x60, 0xd3, 0x15, 0x6f, 0x2c, 0x8e, + 0x03, 0x80, 0xc9, 0x93, 0xb9, 0x9c, 0x11, 0x82, 0xba, 0x93, + 0x7d, 0x6f, 0x99, 0xe7, 0x08, 0x82, 0x9d, 0xe4, 0xc3, 0x84, + 0x75, 0x28, 0x37, 0xb3, 0xe8, 0x84, 0x4d, 0xe7, 0x4b, 0xc8, + 0x11, 0x46, 0xa2, 0xf6, 0x65, 0x3a, 0xac, 0x55, 0xb1, 0x8b, + 0x0e, 0x3a, 0xdb, 0xc8, 0x34, 0x75, 0x0c, 0xc3, 0x32, 0x96, + 0x43, 0xc6, 0xae, 0x3c, 0xcd, 0x0b, 0x9c, 0xc6, 0x8a, 0x75, + 0x60, 0x0a, 0xbc, 0xbe, 0x3e, 0xd3, 0xe1, 0xcf, 0x0f, 0x09, + 0x89, 0x46, 0x31, 0xcf, 0xbd, 0x0a, 0x92, 0x23, 0x70, 0x10, + 0xaa, 0x31, 0x18, 0x34, 0xd3, 0x73, 0xc9, 0xfd, 0x79, 0x34, + 0x40, 0x23, 0xac, 0x8e, 0xf1, 0x66, 0x35, 0x94, 0x55, 0x52, + 0xc9, 0xb3, 0xe0, 0xb2, 0xfc, 0x52, 0x5b, 0x8e, 0x6e, 0xa2, + 0x63, 0x97, 0xbe, 0xfe, 0x3d, 0x2f, 0xf3, 0x2c, 0x05, 0x2a, + 0x4d, 0x2f, 0x19, 0xa2, 0xa1, 0x02, 0xf2, 0x26, 0xd8, 0x50, + 0x35, 0x82, 0x03, 0xbc, 0x42, 0xc0, 0xdb, 0x82, 0x98, 0x02, + 0x81, 0x04, 0x27, 0x4c, 0x73, 0xa0, 0x6a, 0xc7, 0x06, 0xbb, + 0x84, 0x43, 0x75, 0xc7, 0xf3, 0x04, 0x3b, 0xc1, 0x26, 0xcd, + 0x28, 0x5d, 0x4a, 0x36, 0x40, 0xbe, 0x5b, 0x6d, 0x68, 0x36, + 0xb2, 0xc1, 0x19, 0xff, 0xda, 0xe9, 0x74, 0xa2, 0x7c, 0x53, + 0x61, 0x34, 0xa9, 0xfa, 0x15, 0x53, 0x22, 0xff, 0xe4, 0x62, + 0x3c, 0x49, 0xfa, 0x8b, 0x8c, 0x58, 0x53, 0xcc, 0x7f, 0x27, + 0xa9, 0x58, 0xe7, 0x62, 0x2c, 0x96, 0x23, 0x0d, 0xdc, 0xd2, + 0xea, 0x85, 0xdd, 0xaf, 0x7e, 0xfb, 0x01, 0x85, 0x34, 0x96, + 0xbd, 0x91, 0x8f, 0x74, 0x1b, 0x0a, 0x4e, 0x81, 0x38, 0xf6, + 0x99, 0x18, 0x23, 0x81, 0x13, 0x91, 0xb6, 0x55, 0xf7, 0xe6, + 0x2c, 0xdf, 0x95, 0x31, 0x9e, 0xad, 0x67, 0x56, 0xb2, 0x31, + 0x1e, 0x55, 0xd3, 0x33, 0xec, 0xe3, 0xa5, 0xf4, 0x73, 0xae, + 0xcb, 0xda, 0x9c, 0x32, 0x6e, 0xae, 0x0a, 0x33, 0xe7, 0x46, + 0xe0, 0x20, 0x97, 0x62, 0x30, 0x68, 0x65, 0xe6, 0x51, 0x39, + 0xf2, 0x68, 0x80, 0x46, 0x9b, 0xdf, 0x21, 0xcc, 0x6a, 0xeb, + 0xaa, 0xa4, 0x51, 0xa5, 0x03, 0xa7, 0x3b, 0xa4, 0xb6, 0xdf, + 0x8c, 0x88, 0x24, 0x0c, 0x9e, 0x64, 0x0a, 0x17, 0xcc, 0xb4, + 0x26, 0x31, 0x52, 0x17, 0x30, 0x88, 0x04, 0x70, 0x52, 0x9c, + 0x2d, 0x1e, 0xd2, 0x40, 0x48, 0xd9, 0x68, 0x28, 0x65, 0x40, + 0x35, 0x70, 0x86, 0x50, 0xa9, 0xb9, 0x33, 0x57, 0x04, 0xb7, + 0x78, 0x48, 0xc2, 0x75, 0x4b, 0xb7, 0xa1, 0x50, 0xef, 0xa6, + 0x44, 0xdb, 0xcd, 0x5e, 0x57, 0xe8, 0xf5, 0x97, 0x81, 0x69, + 0x38, 0xe8, 0xea, 0xa6, 0x32, 0x3d, 0x77, 0x11, 0xe8, 0x87, + 0xf8, 0xa6, 0xc2, 0x68, 0x91, 0x37, 0x2a, 0xa6, 0x44, 0x3d, + 0x0b, 0xc4, 0x78, 0x92, 0x37, 0xd5, 0xdb, 0xb0, 0xa6, 0x5b, + 0xfe, 0x4e, 0x91, 0xb0, 0x0d, 0xc4, 0x9e, 0xb3, 0x86, 0x77, + 0xdd, 0x13, 0xad, 0xf4, 0x0b, 0xdb, 0x71, 0x85, 0xd6, 0xf4, + 0x1f, 0xb3, 0x80, 0x18, 0xd2, 0x6b, 0xe9, 0x46, 0xbf, 0xd7, + 0x14, 0x1c, 0x9e, 0x49, 0xfd, 0xd7, 0x6f, 0x18, 0x1c, 0x93, + 0x7d, 0x52, 0xc3, 0x5a, 0x7b, 0x03, 0x3b, 0x4a, 0xdb, 0xd8, + 0xf8, 0x03, 0x8b, 0x93, 0xb1, 0x01, 0x79, 0x13, 0x6c, 0x28, + 0xfb, 0x41, 0xe0, 0x5e, 0x21, 0x60, 0x8c, 0x41, 0x4c, 0x01, + 0xd4, 0x67, 0x62, 0x16, 0xe5, 0x03, 0x1d, 0xde, 0xb5, 0x29, + 0xda, 0x04, 0x50, 0xde, 0x58, 0x67, 0x7a, 0xd1, 0xba, 0x3e, + 0x27, 0x98, 0x21, 0xac, 0x58, 0x17, 0x0e, 0xa2, 0x7f, 0xac, + 0xf8, 0xd1, 0x5b, 0xcb, 0x9a, 0x73, 0x16, 0x8e, 0xab, 0xf9, + 0x4f, 0xb7, 0xd2, 0x2b, 0x59, 0xf9, 0x0f, 0xcb, 0xa3, 0x3a, + 0xdb, 0x68, 0x2f, 0x5f, 0x5c, 0xa2, 0x27, 0x31, 0x76, 0xd4, + 0x08, 0xa2, 0x63, 0x3a, 0xf9, 0xed, 0xb4, 0x3c, 0xa3, 0x37, + 0x22, 0x4b, 0x7a, 0x21, 0xbe, 0xf5, 0xd9, 0x4b, 0xf0, 0xed, + 0x33, 0x21, 0x82, 0x36, 0x72, 0x61, 0x2d, 0xb6, 0xd0, 0xcf, + 0x8b, 0x3d, 0xa2, 0xb6, 0xd8, 0x21, 0x68, 0xea, 0x18, 0x45, + 0x64, 0xef, 0x86, 0x4f, 0x9f, 0x78, 0x59, 0x16, 0xfb, 0x4f, + 0xd7, 0xea, 0x96, 0x53, 0x22, 0x8c, 0x87, 0x2f, 0xca, 0x74, + 0x9b, 0xaa, 0xa1, 0xd5, 0x1c, 0x74, 0x75, 0x53, 0x46, 0x44, + 0x12, 0x06, 0x4f, 0x32, 0x05, 0xea, 0x66, 0x5a, 0x13, 0xf9, + 0x29, 0xea, 0x18, 0x44, 0x02, 0x38, 0x29, 0x4e, 0xf7, 0x0f, + 0x69, 0x20, 0x24, 0x8d, 0x34, 0x14, 0xd3, 0x20, 0xfb, 0x38, + 0xff, 0xa5, 0xcf, 0xee, 0x79, 0x26, 0x99, 0x2b, 0x16, 0x75, + 0xe2, 0xc9, 0x6f, 0x2b, 0x3e, 0xa5, 0x95, 0x77, 0xfe, 0xe5, + 0xea, 0xc6, 0x76, 0x44, 0xad, 0x80, 0x8f, 0xcb, 0x47, 0x44, + 0x12, 0x77, 0x64, 0x7a, 0xee, 0x22, 0x13, 0xcd, 0x33, 0x8f, + 0x47, 0xd0, 0xe1, 0x6e, 0x54, 0x8f, 0x88, 0x7a, 0x40, 0x0c, + 0x69, 0xd4, 0x95, 0x23, 0xbe, 0x8a, 0x0a, 0x0e, 0x4f, 0xc5, + 0x9f, 0x8a, 0xd6, 0x0c, 0x41, 0x10, 0x9c, 0xf3, 0x0f, 0xc5, + 0x6b, 0x9a, 0x18, 0xa9, 0x55, 0xcf, 0x17, 0x9a, 0x4a, 0x10, + 0x16, 0x4b, 0xf0, 0xe7, 0x6e, 0x69, 0x75, 0xa3, 0x8f, 0xb6, + 0x3f, 0x9c, 0xe1, 0xa3, 0x1a, 0x4b, 0x0e, 0xa8, 0xdf, 0x29, + 0x80, 0x2d, 0xdc, 0xe0, 0xfc, 0x25, 0x8c, 0x6c, 0x7c, 0xe0, + 0xa4, 0xa8, 0xb9, 0xe1, 0xdd, 0xe8, 0x36, 0x14, 0x9c, 0xc1, + 0x70, 0x2f, 0xf1, 0x30, 0x46, 0xc1, 0x26, 0xe1, 0xfd, 0x9d, + 0xe6, 0xa0, 0x8e, 0x29, 0xf0, 0x0b, 0x32, 0xf8, 0xd6, 0xdd, + 0xbc, 0x0b, 0xc5, 0x9d, 0x6f, 0xbe, 0x96, 0xb0, 0x24, 0x18, + 0xe8, 0x3f, 0xe1, 0x8b, 0x1f, 0x20, 0xc5, 0x3f, 0x85, 0xbe, + 0x91, 0x07, 0xac, 0x79, 0xc7, 0xd8, 0xa4, 0x04, 0xe5, 0x59, + 0xe7, 0xe3, 0x22, 0x04, 0x27, 0x07, 0xa5, 0x72, 0xa0, 0xba, + 0xf5, 0x4e, 0xe7, 0xc2, 0x4b, 0x65, 0x2a, 0xe8, 0xbe, 0xc2, + 0xad, 0x72, 0xcf, 0xa0, 0x91, 0xb1, 0x66, 0xae, 0x08, 0xad, + 0xf0, 0x90, 0x47, 0xea, 0x96, 0xad, 0x81, 0xa0, 0x56, 0x47, + 0x99, 0x33, 0xfb, 0x4a, 0xcb, 0x29, 0x85, 0xb8, 0x70, 0x59, + 0x7e, 0x29, 0xcc, 0x47, 0xba, 0xc5, 0x01, 0x81, 0x5b, 0xfd, + 0x20, 0xf1, 0x46, 0x05, 0xdf, 0x2e, 0x1d, 0xf1, 0x41, 0xc5, + 0x61, 0x16, 0x49, 0x99, 0xa4, 0x35, 0x34, 0xdf, 0x1d, 0xae, + 0x93, 0x4c, 0xb9, 0xdf, 0x21, 0x16, 0x18, 0xe3, 0x2f, 0xce, + 0xee, 0x44, 0xa9, 0x43, 0x73, 0x93, 0xb3, 0xf0, 0x9d, 0x43, + 0xbe, 0xe3, 0x54, 0x7f, 0xb0, 0x7d, 0x0c, 0x45, 0xa2, 0x09, + 0xa1, 0x35, 0x44, 0x4d, 0xad, 0x09, 0x37, 0x7f, 0x8b, 0xdc, + 0xaa, 0xf9, 0xde, 0x93, 0x64, 0x67, 0xb2, 0x47, 0x60, 0x07, + 0x6c, 0x67, 0x62, 0xdc, 0x3e, 0xad, 0x81, 0x76, 0x9f, 0xa5, + 0x4d, 0x66, 0x1a, 0xc0, 0x29, 0x4f, 0x85, 0x66, 0x1b, 0xad, + 0x5a, 0xd7, 0x6f, 0x54, 0x8c, 0x68, 0x7e, 0xe9, 0x5d, 0x10, + 0xc8, 0x21, 0xd1, 0xe9, 0x93, 0xd7, 0xce, 0xbc, 0x64, 0x96, + 0xfc, 0x48, 0xdd, 0xbd, 0xe2, 0x37, 0x5d, 0xe0, 0x1e, 0xbd, + 0x1d, 0xbc, 0xf7, 0x45, 0x6b, 0x15, 0x23, 0x1a, 0xfe, 0xab, + 0x86, 0x04, 0x32, 0x99, 0xa5, 0xab, 0x54, 0x45, 0xd2, 0x2f, + 0x19, 0xc4, 0x3f, 0x12, 0xa6, 0xbe, 0xd9, 0x7d, 0x86, 0x38, + 0xe6, 0xbe, 0x96, 0x2f, 0x82, 0x20, 0xfb, 0x25, 0x1e, 0x49, + 0xd6, 0xf7, 0x30, 0x91, 0xaa, 0x5d, 0x2e, 0xf7, 0x94, 0x20, + 0xb3, 0x39, 0x50, 0x5d, 0x9b, 0x27, 0x92, 0x61, 0xc4, 0xd3, + 0x15, 0x74, 0x5f, 0x61, 0xb7, 0x39, 0xb4, 0x6d, 0xde, 0xa8, + 0xdb, 0xd0, 0xfc, 0x11, 0xba, 0x20, 0x53, 0x42, 0x61, 0x11, + 0xe5, 0x6d, 0xd6, 0x5f, 0x4b, 0x58, 0x12, 0x0c, 0x74, 0xfe, + 0x91, 0xa4, 0xee, 0x10, 0x83, 0xfe, 0xa3, 0x5f, 0xe1, 0x0e, + 0x9b, 0xf2, 0x4d, 0x73, 0x8b, 0x08, 0x09, 0xb2, 0x0d, 0x05, + 0x44, 0x08, 0x4e, 0x0e, 0xc2, 0x2c, 0x92, 0xf1, 0x8b, 0x6a, + 0x68, 0x7d, 0x3a, 0x9f, 0xe5, 0x98, 0xb1, 0x7d, 0x42, 0x2c, + 0x5d, 0x83, 0xe1, 0xa1, 0xcc, 0x9f, 0x10, 0x99, 0x23, 0xe3, + 0x8e, 0x17, 0xef, 0x99, 0xc1, 0x83, 0xfa, 0xc9, 0x68, 0x55, + 0xce, 0xde, 0x9e, 0x7b, 0x4c, 0x0b, 0x90, 0xeb, 0x82, 0x7b, + 0x97, 0xc9, 0xa4, 0x6e, 0x55, 0x9d, 0x6f, 0xa8, 0x32, 0xd2, + 0x59, 0xc2, 0x30, 0xe2, 0x36, 0xd2, 0x31, 0x6e, 0x1f, 0xb7, + 0xa1, 0x3b, 0xae, 0xb3, 0xc7, 0x33, 0x0d, 0x60, 0xf5, 0xc6, + 0xa3, 0x33, 0xec, 0xb7, 0x0c, 0x90, 0xf6, 0x67, 0x77, 0x22, + 0xb5, 0xc0, 0xd8, 0xa8, 0xb8, 0x78, 0xaf, 0xc0, 0x5f, 0x90, + 0x01, 0x1c, 0xf5, 0x27, 0x9a, 0xe6, 0xd5, 0x10, 0x12, 0xa7, + 0x1a, 0x0a, 0x88, 0x10, 0x9c, 0x1c, 0x2d, 0x8a, 0xd6, 0x2a, + 0x46, 0x34, 0x3f, 0x95, 0xcf, 0x08, 0x64, 0xf1, 0x89, 0x95, + 0xa8, 0x8a, 0x67, 0x5e, 0x32, 0x4b, 0x7e, 0x24, 0x8f, 0xbf, + 0x71, 0xfa, 0xcf, 0x70, 0x0f, 0xbf, 0xef, 0x5e, 0xe2, 0x2a, + 0x47, 0x9b, 0x20, 0x9a, 0x37, 0x38, 0x3f, 0x98, 0x23, 0x1b, + 0x1f, 0x38, 0x29, 0x2a, 0x09, 0xfc, 0x51, 0xdc, 0xc0, 0xda, + 0xb2, 0x90, 0x82, 0xd6, 0xca, 0x5a, 0x42, 0x90, 0xf6, 0xfc, + 0x57, 0x5b, 0x6c, 0x14, 0x61, 0xac, 0x1e, 0x39, 0x97, 0x1f, + 0x6a, 0x53, 0xf6, 0x39, 0x50, 0x5b, 0x11, 0x1f, 0x7e, 0x12, + 0x2e, 0x9e, 0x1b, 0xd3, 0xf1, 0x45, 0x79, 0xaa, 0xdf, 0xd3, + 0x48, 0x1f, 0xb7, 0x49, 0x02, 0xc1, 0xb6, 0x39, 0x40, 0x21, + 0x8c, 0x0a, 0x7d, 0x5c, 0x3a, 0x21, 0x82, 0x49, 0xdf, 0xa3, + 0x1a, 0x84, 0xd2, 0xd6, 0xc6, 0x6e, 0x13, 0x72, 0x24, 0x4a, + 0xc1, 0x6e, 0x55, 0xa3, 0x6a, 0xd2, 0x31, 0x0b, 0x93, 0xe0, + 0xef, 0x6f, 0xbb, 0xf5, 0x6d, 0x02, 0x28, 0x6f, 0x2c, 0xd2, + 0x93, 0x3f, 0x85, 0x37, 0x30, 0xd7, 0xcd, 0x24, 0xc1, 0xd4, + 0xd3, 0xf7, 0xf1, 0x24, 0xdc, 0x3f, 0x24, 0x76, 0x87, 0xf6, + 0x86, 0xee, 0x8d, 0x05, 0x4d, 0xde, 0xae, 0xab, 0xcb, 0x05, + 0x5e, 0x76, 0x7f, 0xbd, 0x1d, 0x85, 0x90, 0x60, 0x26, 0xfc, + 0x02, 0x69, 0x7c, 0x80, 0x92, 0xfc, 0x51, 0xbd, 0x66, 0x42, + 0xc7, 0x6c, 0xe4, 0xc2, 0x5a, 0xaf, 0x63, 0x5d, 0xd5, 0x7a, + 0x87, 0xaf, 0x73, 0x42, 0xfe, 0xb9, 0x3a, 0xc9, 0xe3, 0xc0, + 0x4c, 0x3b, 0x04, 0xd2, 0xf8, 0xc3, 0xe7, 0x3b, 0xa2, 0xb9, + 0x07, 0x54, 0x8e, 0xf5, 0x40, 0xf7, 0x6e, 0x70, 0x7e, 0xf3, + 0x46, 0x36, 0x3e, 0x70, 0x52, 0x54, 0x44, 0x7c, 0x3b, 0x48, + 0xb8, 0x3d, 0x6c, 0xca, 0x42, 0xd7, 0x27, 0xed, 0xfa, 0xca, + 0xe3, 0x7c, 0x3f, 0xb1, 0x74, 0x51, 0x05, 0x43, 0x98, 0x76, + 0x08, 0x67, 0x33, 0x45, 0x0d, 0x76, 0x87, 0xb1, 0xf8, 0xf1, + 0x41, 0x1b, 0x39, 0xd1, 0xf7, 0x5b, 0x68, 0x86, 0xa4, 0xff, + 0x51, 0x5b, 0x6c, 0xf1, 0x06, 0x48, 0x7b, 0xd2, 0xda, 0x11, + 0xbb, 0x60, 0x6c, 0x54, 0x5c, 0x3c, 0xb6, 0x60, 0xce, 0x48, + 0xca, 0xcc, 0x36, 0x0a, 0xd1, 0x56, 0x0f, 0xfd, 0xaa, 0xee, + 0x35, 0xc8, 0x7b, 0xfd, 0x28, 0xcc, 0xad, 0x92, 0x04, 0x41, + 0xaf, 0x72, 0x80, 0x42, 0xdb, 0x14, 0xfa, 0xb8, 0x74, 0x42, + 0xc7, 0x92, 0x2b, 0xc2, 0xad, 0xf8, 0x9c, 0x25, 0x84, 0xf5, + 0xa3, 0x5c, 0x38, 0xcd, 0x3f, 0xf5, 0x66, 0xc2, 0xae, 0xb6, + 0xd8, 0x28, 0xc2, 0x9b, 0x3c, 0x72, 0xed, 0x3e, 0xd4, 0xa6, + 0x2f, 0x72, 0xa0, 0xb6, 0x22, 0x3e, 0xfc, 0x24, 0x5c, 0xff, + 0x36, 0x65, 0x21, 0x8a, 0xf2, 0x97, 0x7d, 0x65, 0x90, 0x3e, + 0x39, 0xf9, 0x0f, 0x83, 0xdf, 0x52, 0x23, 0x16, 0x64, 0x33, + 0x6f, 0x79, 0xbb, 0x16, 0x49, 0xf9, 0xde, 0xbf, 0xef, 0xa3, + 0x48, 0x30, 0x13, 0x7e, 0x01, 0xd5, 0x3e, 0x40, 0x49, 0x7e, + 0xc9, 0xbf, 0x1e, 0xab, 0x54, 0x1c, 0x34, 0x55, 0x12, 0x23, + 0x1f, 0xc7, 0xef, 0xcc, 0x2b, 0x23, 0x70, 0xab, 0xa8, 0xfe, + 0xa3, 0xfa, 0x18, 0x8a, 0x87, 0x12, 0x81, 0x6a, 0x88, 0x9a, + 0x99, 0x12, 0x6e, 0xfe, 0x58, 0xef, 0x46, 0x1a, 0x7b, 0x67, + 0x17, 0xc9, 0x79, 0x9d, 0xfc, 0x35, 0x02, 0xc9, 0x68, 0xef, + 0x88, 0xf8, 0x76, 0x90, 0xb3, 0x7a, 0xd8, 0x57, 0x84, 0x6d, + 0x4e, 0x19, 0x37, 0x57, 0x05, 0xf8, 0x9a, 0xc3, 0xd4, 0xeb, + 0xf0, 0x0d, 0x7f, 0xb4, 0x43, 0x02, 0x19, 0xad, 0xb3, 0xb4, + 0x2a, 0xc3, 0x69, 0xf6, 0xed, 0x62, 0xfe, 0x09, 0x53, 0x5f, + 0x8d, 0xdf, 0x43, 0x1c, 0x73, 0x5f, 0x4b, 0xf6, 0x28, 0xe6, + 0x71, 0x91, 0xf1, 0xcc, 0x38, 0xc5, 0x95, 0x76, 0x16, 0xd3, + 0x64, 0xc5, 0x01, 0xe6, 0x65, 0x66, 0x1b, 0x05, 0x89, 0x2b, + 0xe6, 0x9f, 0x55, 0x77, 0xfb, 0x64, 0xdc, 0x9f, 0x14, 0x66, + 0xd5, 0x7b, 0x97, 0x31, 0x7f, 0xe5, 0xc8, 0xce, 0xa7, 0x8e, + 0xc0, 0x0e, 0xd8, 0xce, 0xc4, 0x7b, 0x7c, 0x99, 0xc1, 0xec, + 0xfd, 0x89, 0x9a, 0xcc, 0x34, 0x43, 0x52, 0x9e, 0xc9, 0xcc, + 0x36, 0x99, 0xbc, 0x8d, 0x7a, 0x53, 0x81, 0xec, 0x9b, 0x91, + 0x2a, 0x51, 0x83, 0x12, 0xab, 0x91, 0x8f, 0x8d, 0x38, 0xe5, + 0xfa, 0xa4, 0x45, 0xb4, 0xf6, 0x06, 0x76, 0x94, 0x75, 0x73, + 0x33, 0x06, 0xd5, 0xe5, 0x4f, 0xb8, 0x43, 0xda, 0x8f, 0xe8, + 0xb7, 0x7a, 0xe4, 0x8c, 0xd9, 0xa3, 0x6b, 0x7a, 0xee, 0xb8, + 0xe0, 0x12, 0x6e, 0xd5, 0xd7, 0x95, 0x5e, 0x18, 0x1b, 0x15, + 0x17, 0x0f, 0xcc, 0x18, 0xd2, 0x12, 0x27, 0x52, 0x5b, 0x9f, + 0xeb, 0x07, 0x31, 0x35, 0x7b, 0xf4, 0x80, 0xb5, 0x90, 0x35, + 0x39, 0x52, 0x76, 0x41, 0x4c, 0x59, 0x50, 0xba, 0x94, 0x6c, + 0x80, 0xbf, 0xb6, 0xda, 0xd0, 0x6c, 0xa7, 0x41, 0x78, 0xe9, + 0x93, 0x70, 0xd0, 0x97, 0x48, 0x8c, 0x7c, 0x9a, 0x3a, 0xb6, + 0xac, 0x8c, 0x03, 0xe9, 0x89, 0xe4, 0x83, 0xb7, 0x29, 0x9c, + 0x0d, 0x47, 0x96, 0xca, 0x54, 0x13, 0xbf, 0x47, 0x99, 0xe4, + 0x8d, 0x94, 0xd1, 0x2b, 0x04, 0x82, 0xdf, 0x07, 0xde, 0x13, + 0x3c, 0x3b, 0xda, 0x07, 0xac, 0x94, 0xaf, 0xaa, 0x2d, 0x0f, + 0x58, 0x7d, 0xe9, 0x62, 0xff, 0x99, 0xce, 0xac, 0xa7, 0x62, + 0x3c, 0xaa, 0x9f, 0xaf, 0x73, 0x50, 0x47, 0xf5, 0x78, 0xe4, + 0x19, 0x7c, 0x6b, 0x8f, 0x5e, 0xe4, 0x83, 0xaf, 0x84, 0x68, + 0x80, 0xf7, 0xc4, 0x58, 0x6d, 0x97, 0x5c, 0xc5, 0xf6, 0x61, + 0x98, 0x97, 0x5a, 0x68, 0xe6, 0x5a, 0x15, 0x07, 0x0d, 0x84, + 0xe5, 0x78, 0x77, 0x41, 0x4b, 0x33, 0x7a, 0x78, 0x1c, 0x5a, + 0xf1, 0x0d, 0x10, 0xc7, 0xf9, 0x0b, 0x45, 0xcb, 0xea, 0x50, + 0x6e, 0xa5, 0x13, 0xcb, 0x9a, 0x0d, 0x63, 0x2e, 0x60, 0xd7, + 0x53, 0x3a, 0x5d, 0xff, 0x39, 0x23, 0xa7, 0x58, 0x6a, 0xff, + 0xda, 0x2e, 0x51, 0x13, 0x17, 0xc6, 0xbb, 0xbd, 0xa5, 0x59, + 0xfb, 0x4b, 0x36, 0x6f, 0x40, 0x59, 0x9e, 0x13, 0xc8, 0xf4, + 0x1f, 0x44, 0x26, 0x59, 0x66, 0xdd, 0x8e, 0x63, 0x01, 0xdc, + 0xa8, 0xdd, 0xd3, 0xf4, 0x03, 0x24, 0xdc, 0x69, 0x6d, 0xe9, + 0xbc, 0x30, 0x36, 0x2a, 0x2e, 0x1e, 0x5b, 0x30, 0x67, 0x24, + 0xed, 0x9e, 0x6d, 0x95, 0x3a, 0x51, 0x3e, 0xc8, 0xd1, 0x1a, + 0xb5, 0x7d, 0xeb, 0xc8, 0x11, 0x9e, 0x70, 0x09, 0x37, 0x8b, + 0x8a, 0xab, 0x2f, 0x0c, 0xec, 0xeb, 0xea, 0xe6, 0x66, 0x0c, + 0x69, 0x09, 0x3c, 0x95, 0xa8, 0x38, 0x68, 0xaa, 0x24, 0x46, + 0x3e, 0x4d, 0x1d, 0x5b, 0x56, 0x46, 0xe0, 0x95, 0x8e, 0xb0, + 0x0d, 0x42, 0x69, 0x6b, 0x63, 0x37, 0xe8, 0x39, 0x12, 0x25, + 0x81, 0x37, 0xcb, 0xb0, 0xd9, 0xeb, 0x61, 0x56, 0x08, 0xc7, + 0x7d, 0x0e, 0x7f, 0x26, 0x78, 0x76, 0x77, 0x0e, 0x9b, 0xeb, + 0x10, 0x03, 0x8b, 0x35, 0xb4, 0x78, 0xce, 0xc3, 0xe3, 0xe2, + 0x63, 0xa0, 0x57, 0xc3, 0xd4, 0x03, 0x1a, 0xdb, 0x06, 0x80, + 0x19, 0x4b, 0xc0, 0x63, 0x57, 0x1e, 0x87, 0xe4, 0x4e, 0x63, + 0x45, 0xdb, 0x9d, 0x97, 0x5a, 0x1e, 0xb0, 0xfa, 0x11, 0xc4, + 0x3d, 0xf1, 0x5f, 0x9b, 0x8d, 0xc4, 0x78, 0x97, 0xee, 0xba, + 0xb1, 0xfc, 0x57, 0xb8, 0x82, 0xf8, 0xe7, 0x30, 0x9b, 0x63, + 0xb0, 0xf8, 0x76, 0xba, 0xcb, 0xd0, 0xc3, 0x2d, 0x4b, 0xb0, + 0xda, 0xed, 0xb8, 0x49, 0x2f, 0xc2, 0xf3, 0xed, 0xb4, 0xd0, + 0x97, 0x4f, 0xd7, 0xab, 0x1d, 0xc9, 0x1f, 0x64, 0x89, 0x0d, + 0xbb, 0xdf, 0x94, 0x64, 0xe9, 0x4f, 0xc9, 0xe8, 0xea, 0x63, + 0xbc, 0xbf, 0xb3, 0xcd, 0x9c, 0xc4, 0x1b, 0xd6, 0x20, 0xcd, + 0x4f, 0xe8, 0x79, 0xf5, 0x66, 0x57, 0x4a, 0x71, 0x9d, 0x9c, + 0x6e, 0x3d, 0x20, 0xbc, 0x24, 0x9c, 0x9f, 0xf5, 0xb2, 0x25, + 0xa5, 0x7a, 0x01, 0xc1, 0x47, 0x71, 0xd6, 0x74, 0x0f, 0x7e, + 0xd7, 0x71, 0x2b, 0x25, 0x35, 0x69, 0xf9, 0xe4, 0xa8, 0x70, + 0x96, 0xd6, 0xbc, 0x9b, 0xd7, 0x01, 0x14, 0xd6, 0x16, 0x69, + 0x6c, 0x9a, 0x4a, 0xd9, 0x49, 0xf1, 0x54, 0x0f, 0xd7, 0xa1, + 0x31, 0x3e, 0x9e, 0x0f, 0xe2, 0x9a, 0x9c, 0x8b, 0xaf, 0x39, + 0x2a, 0x1c, 0xc4, 0xd4, 0x2f, 0x56, 0x45, 0x91, 0x05, 0xd4, + 0xe4, 0x8b, 0x1b, 0xc7, 0xf3, 0xa7, 0x83, 0xad, 0x15, 0x73, + 0x45, 0xb9, 0x9d, 0xee, 0xc6, 0x73, 0xd9, 0xc7, 0x05, 0x6c, + 0xa7, 0xbb, 0xb7, 0xf8, 0x07, 0x50, 0x5a, 0x7e, 0x72, 0x22, + 0xed, 0x50, 0xa9, 0x6c, 0x50, 0x0f, 0xe2, 0xe1, 0x21, 0x5b, + 0x70, 0x49, 0xe9, 0xec, 0x2c, 0x65, 0xc8, 0x49, 0x02, 0x0f, + 0xf0, 0x11, 0xe5, 0xe0, 0x63, 0xed, 0x90, 0xdb, 0xf8, 0xf7, + 0x74, 0xaf, 0x9b, 0xdb, 0x06, 0x11, 0xd1, 0x0b, 0xc5, 0xad, + 0x52, 0xfb, 0x1a, 0x8e, 0xef, 0x57, 0xa8, 0x26, 0xbd, 0x8e, + 0xf1, 0x0b, 0x12, 0x3b, 0xa2, 0x7b, 0x43, 0x77, 0xa7, 0xe3, + 0xc7, 0x6f, 0x57, 0xb4, 0x84, 0xe3, 0x2f, 0x3b, 0x87, 0x4c, + 0x5c, 0x9e, 0xa9, 0xb1, 0xd1, 0xa7, 0x6a, 0xef, 0xd8, 0x7f, + 0xc3, 0xa7, 0x3d, 0x4c, 0x08, 0xe0, 0xa4, 0xfb, 0x5a, 0x3c, + 0x67, 0x80, 0x90, 0x71, 0xd0, 0x50, 0xca, 0x80, 0x6a, 0xe0, + 0x59, 0xf3, 0xb3, 0x3d, 0xe1, 0x81, 0xc2, 0xd9, 0x6b, 0x3a, + 0xe6, 0x3f, 0x8a, 0xd9, 0xf4, 0xf3, 0xfc, 0x81, 0x13, 0x87, + 0x14, 0xcf, 0x25, 0x1b, 0x20, 0x5f, 0xcc, 0xd7, 0x34, 0x1b, + 0x59, 0x81, 0x21, 0x1a, 0x20, 0x4d, 0x31, 0x16, 0x8a, 0x55, + 0x17, 0xa0, 0xdc, 0x89, 0x26, 0x55, 0xf7, 0x1a, 0x85, 0x74, + 0x75, 0xd0, 0x5e, 0xbe, 0xb8, 0x87, 0x4e, 0x62, 0xec, 0x6b, + 0x10, 0x87, 0xc6, 0x74, 0x55, 0x63, 0x45, 0x5a, 0x96, 0xa3, + 0x77, 0x19, 0xb3, 0x92, 0x5e, 0x47, 0x25, 0x19, 0xab, 0x63, + 0x4e, 0xa4, 0xb6, 0xfd, 0x15, 0x0e, 0x62, 0x6a, 0xf6, 0x2b, + 0xc3, 0xa9, 0xe3, 0x6a, 0x72, 0xa4, 0xec, 0x82, 0x98, 0xb2, + 0xa0, 0xb7, 0xeb, 0xd8, 0xc3, 0xbd, 0xaf, 0x77, 0x63, 0xd8, + 0x8d, 0x82, 0xfb, 0xd5, 0x9d, 0x72, 0x54, 0x38, 0x4b, 0x6b, + 0x5e, 0xac, 0x8a, 0xe1, 0x0a, 0x6b, 0x0b, 0xd5, 0x36, 0x4d, + 0x25, 0x8d, 0xc5, 0x99, 0x2a, 0xe6, 0x8a, 0xb1, 0xf9, 0x1f, + 0x4f, 0xe6, 0x71, 0x4d, 0x75, 0x65, 0x90, 0x30, 0x3d, 0x53, + 0x28, 0x5c, 0xb6, 0x95, 0x98, 0xc4, 0x8b, 0x5c, 0xc0, 0x65, + 0x37, 0x51, 0xd0, 0xaa, 0x5f, 0x7f, 0xff, 0xf6, 0x98, 0x16, + 0xe3, 0x15, 0xc7, 0xf6, 0xed, 0x51, 0x5c, 0x9f, 0x14, 0x86, + 0x56, 0x79, 0xc5, 0x89, 0x31, 0x44, 0x94, 0x1d, 0x67, 0x89, + 0x5d, 0x9f, 0xf6, 0x59, 0x9e, 0x32, 0xb9, 0xfc, 0x2b, 0xbb, + 0x94, 0xa3, 0x28, 0x93, 0x2d, 0xbb, 0xc8, 0x59, 0xf4, 0x61, + 0xb7, 0x7c, 0x4e, 0xf3, 0x42, 0x9b, 0xb0, 0x2e, 0x1c, 0x87, + 0xfe, 0x9b, 0x33, 0x61, 0xcd, 0x98, 0xb8, 0xff, 0x91, 0xa1, + 0x61, 0x8d, 0xd4, 0x1d, 0x73, 0xfe, 0x45, 0x8d, 0x7a, 0x98, + 0x6b, 0xce, 0xc4, 0x2c, 0x09, 0x06, 0x3a, 0x7f, 0xa9, 0x52, + 0x77, 0x08, 0xa0, 0x7f, 0xb0, 0xce, 0xa2, 0x26, 0x2e, 0x4f, + 0xb5, 0xb9, 0x89, 0xb2, 0x35, 0x96, 0x6c, 0xde, 0x80, 0xb2, + 0xff, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xc6, + 0x8a, 0xb4, 0xef, 0x85, 0xee, 0x32, 0xa5, 0xe7, 0xbc, 0x8e, + 0x4a, 0x32, 0x95, 0xc6, 0x71, 0x15, 0xc2, 0xac, 0x10, 0x4d, + 0xfa, 0x1c, 0xfe, 0x4c, 0xf0, 0xec, 0xee, 0x1c, 0xf5, 0x15, + 0x42, 0x34, 0x40, 0x9a, 0x62, 0x2c, 0xd7, 0xaa, 0x2e, 0x83, + 0x7b, 0xd1, 0x4c, 0xaa, 0x2d, 0x34, + }, + { + /* 14 */ + 0x47, 0x52, 0xd9, 0xd2, 0x69, 0x81, 0x42, 0x4a, 0x4e, 0xe7, + 0x53, 0x5d, 0xa9, 0x30, 0x47, 0x7c, 0xe9, 0xdb, 0x31, 0x5c, + 0x2e, 0xdf, 0x12, 0x97, 0x34, 0x3f, 0x83, 0x15, 0x0b, 0x98, + 0xe9, 0x1c, 0x8f, 0x26, 0xbe, 0x4a, 0x25, 0x12, 0xca, 0xbc, + 0x87, 0xf8, 0x58, 0xe9, 0x7f, 0xf7, 0x8f, 0x8c, 0x4e, 0x4a, + 0xa1, 0x54, 0x2a, 0x05, 0x39, 0xe1, 0x8d, 0xb6, 0x51, 0xd3, + 0x3b, 0x95, 0x4e, 0x2e, 0x03, 0x45, 0x92, 0x77, 0xda, 0xb6, + 0xd2, 0x78, 0x2d, 0xdc, 0xc1, 0xf5, 0xf1, 0x7a, 0x03, 0x9c, + 0xcf, 0x7c, 0x4f, 0x5b, 0xcc, 0xef, 0xa1, 0x2e, 0x88, 0x91, + 0xb4, 0xce, 0x19, 0xa4, 0xcf, 0x7f, 0x0c, 0xd7, 0x0d, 0x1f, + 0xee, 0x9d, 0xce, 0x23, 0xb4, 0xf6, 0x82, 0x52, 0x42, 0x2b, + 0x0c, 0x35, 0xba, 0x33, 0xff, 0xaf, 0xb6, 0x3a, 0xc1, 0xb8, + 0x65, 0x01, 0x95, 0xbe, 0x64, 0xd5, 0xba, 0x3f, 0x12, 0x30, + 0xf0, 0xcf, 0x86, 0xcb, 0xf6, 0x95, 0x45, 0xa2, 0x04, 0xdf, + 0xe7, 0x89, 0x12, 0xa4, 0xf0, 0x34, 0xe4, 0x4f, 0xc6, 0xf5, + 0x03, 0xf9, 0x84, 0xe5, 0xba, 0xe2, 0x61, 0x59, 0xf0, 0x02, + 0x2b, 0xf2, 0xbc, 0x35, 0xfb, 0x7e, 0x33, 0xb2, 0x13, 0xad, + 0x4b, 0xda, 0xbe, 0x80, 0x2b, 0x22, 0x2c, 0xfa, 0x94, 0xf6, + 0x7b, 0x02, 0x1a, 0x6a, 0x52, 0x23, 0xf4, 0xa0, 0x71, 0xe3, + 0x2c, 0xad, 0x32, 0x1d, 0x69, 0x26, 0x13, 0x54, 0x22, 0xdc, + 0xa3, 0x77, 0x72, 0x2d, 0xd4, 0x41, 0x32, 0x3c, 0x1b, 0x28, + 0x88, 0x49, 0xc5, 0x4f, 0x8d, 0x3e, 0x86, 0xf3, 0x06, 0x51, + 0x75, 0x2c, 0x1b, 0xf6, 0xd2, 0xde, 0x20, 0xfc, 0x7e, 0x0f, + 0x4b, 0xe0, 0x54, 0x19, 0xf3, 0xb6, 0x4d, 0x7c, 0xd2, 0x72, + 0x08, 0x9a, 0xb7, 0xab, 0xb4, 0x57, 0x35, 0x83, 0xd8, 0xa4, + 0xfc, 0xdd, 0x7c, 0x32, 0x08, 0x26, 0xdd, 0x4c, 0xbf, 0x94, + 0x4a, 0x24, 0x57, 0xbb, 0xcd, 0x33, 0xb0, 0x11, 0xfe, 0x2d, + 0xdd, 0xdb, 0x60, 0x77, 0x68, 0xf8, 0x7c, 0x62, 0xbf, 0xdb, + 0xe9, 0xbc, 0x9a, 0xd5, 0x55, 0x9b, 0x60, 0x6b, 0x72, 0x47, + 0x98, 0x37, 0xfa, 0xa9, 0x49, 0x4e, 0xac, 0x1e, 0x9e, 0x0a, + 0xb2, 0x12, 0x72, 0xcf, 0x11, 0x75, 0x62, 0xb8, 0x5c, 0x7d, + 0x24, 0xed, 0x68, 0x7e, 0xc5, 0x2a, 0x16, 0xf3, 0x11, 0x38, + 0x06, 0x8a, 0xe7, 0xee, 0x77, 0xaf, 0x67, 0xf0, 0x5a, 0x7b, + 0x41, 0x29, 0x21, 0xf4, 0x06, 0xfb, 0x5d, 0xf8, 0x9e, 0xb6, + 0x5b, 0x1d, 0x81, 0x5c, 0xd3, 0xe1, 0xab, 0x5f, 0x32, 0x8b, + 0x5d, 0xfe, 0xe0, 0xc3, 0x49, 0xda, 0x6d, 0x5b, 0x69, 0x3c, + 0xf7, 0x6e, 0x81, 0x9b, 0x99, 0x3d, 0xe0, 0x4e, 0x86, 0x3e, + 0xc6, 0xcc, 0x66, 0x96, 0xb1, 0x17, 0x44, 0xa9, 0x5a, 0x67, + 0xed, 0x52, 0x86, 0xde, 0xaa, 0xc4, 0x52, 0x3a, 0x1d, 0x94, + 0xab, 0x7d, 0x16, 0x8a, 0xae, 0xc7, 0x9c, 0xb1, 0xaa, 0x73, + 0x58, 0x37, 0xeb, 0x2f, 0xf6, 0x04, 0x34, 0xd4, 0xa4, 0x46, + 0x2b, 0x83, 0xe2, 0x05, 0x58, 0x99, 0x24, 0x60, 0x23, 0x5d, + 0xcf, 0x55, 0x2f, 0xe9, 0x8a, 0x87, 0x08, 0x7d, 0x0d, 0xd1, + 0x24, 0x8b, 0xdf, 0x8b, 0xe2, 0xce, 0x67, 0x41, 0xcb, 0xeb, + 0xfb, 0x1a, 0x8f, 0xb7, 0xe1, 0xc0, 0xdf, 0x33, 0x69, 0x6f, + 0x10, 0x7e, 0x3f, 0xe6, 0xc4, 0x70, 0x2a, 0xed, 0x98, 0x5b, + 0xc7, 0x3e, 0x69, 0x39, 0x7a, 0xdd, 0x2f, 0x9c, 0x4e, 0xfe, + 0x7c, 0xcd, 0x74, 0xba, 0x62, 0xd7, 0xce, 0x20, 0x7a, 0xe9, + 0x67, 0x7f, 0x40, 0x3b, 0xfc, 0x1e, 0x96, 0x03, 0xa8, 0x32, + 0x25, 0xaf, 0x9a, 0xf8, 0x67, 0xe4, 0xec, 0x14, 0x44, 0xc5, + 0x83, 0xc6, 0xa7, 0x1f, 0x43, 0x98, 0x03, 0xc9, 0xdb, 0x16, + 0xec, 0x7b, 0x30, 0xda, 0x34, 0x7c, 0x3e, 0x31, 0xbe, 0x8c, + 0x95, 0x5e, 0x4d, 0x8b, 0xcb, 0xac, 0x30, 0xd4, 0x6a, 0x2a, + 0x82, 0x09, 0xe5, 0x50, 0x16, 0x08, 0x07, 0x31, 0x59, 0xae, + 0x36, 0x44, 0x6a, 0xa5, 0x0e, 0x10, 0x50, 0x45, 0xc3, 0xf8, + 0x52, 0x73, 0x82, 0xdf, 0xbd, 0xf4, 0x5d, 0xc6, 0x0e, 0xdd, + 0x43, 0x1f, 0x63, 0x66, 0x33, 0x4b, 0xb9, 0xea, 0x22, 0xb5, + 0x2d, 0xd2, 0x97, 0x29, 0x43, 0x6f, 0x2d, 0x78, 0x5b, 0xdb, + 0x8c, 0xd1, 0x54, 0x42, 0x49, 0xd6, 0x0a, 0xf3, 0x9f, 0x74, + 0x2d, 0xd9, 0xb3, 0x2b, 0x87, 0x29, 0xf5, 0xbe, 0xba, 0x13, + 0xa6, 0x50, 0x97, 0x30, 0xf6, 0x70, 0xb3, 0x6d, 0xe4, 0x8e, + 0xf3, 0x6e, 0x37, 0x91, 0x92, 0x9c, 0x9b, 0x3c, 0xff, 0x14, + 0xa7, 0x24, 0xe4, 0x5d, 0x22, 0xea, 0xc4, 0xb3, 0xb8, 0xfa, + 0x48, 0x19, 0xd0, 0xfc, 0x49, 0x54, 0x2c, 0x25, 0x22, 0x70, + 0xab, 0x46, 0x9d, 0x17, 0xea, 0x47, 0xe5, 0x55, 0x0d, 0x7f, + 0x50, 0x94, 0x72, 0x26, 0xab, 0x07, 0x3d, 0x8f, 0xf6, 0x4e, + 0x27, 0x7f, 0x3e, 0x87, 0x3a, 0x5d, 0x31, 0x8a, 0x67, 0x10, + 0x3d, 0x95, 0x34, 0x97, 0x8e, 0xc8, 0x64, 0xfb, 0x45, 0x2c, + 0xf9, 0x0c, 0x33, 0x04, 0xf5, 0xb5, 0x34, 0xc7, 0x90, 0x43, + 0x8c, 0xb7, 0xba, 0x97, 0xbc, 0x22, 0x6d, 0x59, 0x20, 0x37, + 0x34, 0xc2, 0x90, 0x69, 0x97, 0x4b, 0xa4, 0x74, 0x3a, 0xeb, + 0x95, 0xfa, 0x2c, 0xd7, 0x9f, 0x4d, 0xfb, 0xa1, 0x97, 0xe6, + 0xb0, 0x6e, 0x15, 0x5e, 0x2f, 0x08, 0x68, 0x6b, 0x8b, 0x8c, + 0x56, 0xc5, 0x07, 0x0a, 0xb0, 0xf1, 0xe5, 0x0c, 0x3c, 0x43, + 0xc0, 0x42, 0xdc, 0xb4, 0x80, 0xc9, 0x01, 0x47, 0x49, 0xb3, + 0xe5, 0x29, 0x42, 0x9d, 0xac, 0x4b, 0xc4, 0x98, 0xf7, 0xc2, + 0x39, 0x40, 0xd3, 0x81, 0x79, 0xbe, 0x42, 0x1b, 0x79, 0x98, + 0xbd, 0xeb, 0x94, 0x48, 0xae, 0xb5, 0x59, 0x66, 0xa3, 0x22, + 0x3f, 0x5a, 0x79, 0x75, 0xc0, 0xee, 0xd0, 0x33, 0xf8, 0xc4, + 0xbd, 0x75, 0x11, 0xbb, 0xf7, 0x69, 0xaa, 0xf5, 0xc0, 0xd6, + 0x18, 0x6d, 0x1a, 0x3e, 0x1f, 0xf9, 0x5f, 0x46, 0xab, 0x2f, + 0xc7, 0xa4, 0x84, 0x56, 0x18, 0x6a, 0x4b, 0x85, 0xd4, 0xcd, + 0x87, 0x1c, 0x8c, 0x69, 0xfa, 0x11, 0xd1, 0x0f, 0xeb, 0x1b, + 0x4b, 0x49, 0xf7, 0x3c, 0xcc, 0x8c, 0x46, 0x89, 0x2a, 0x21, + 0xc5, 0x6b, 0x05, 0x98, 0xae, 0x3a, 0xf7, 0x8d, 0xb8, 0xf4, + 0xa2, 0xf5, 0x9b, 0x5f, 0x5d, 0xe8, 0x53, 0x28, 0xaa, 0x18, + 0x7b, 0x38, 0xb8, 0xd7, 0xa6, 0x13, 0x5f, 0x25, 0xf3, 0x09, + 0x65, 0x5e, 0xa2, 0x7c, 0x2c, 0x95, 0xde, 0x9a, 0xa6, 0x46, + 0x59, 0xb5, 0x24, 0x02, 0x01, 0xd7, 0x7a, 0xfc, 0xbf, 0xb3, + 0xd5, 0xd0, 0x0c, 0x92, 0x59, 0xed, 0x64, 0x3a, 0xd2, 0x4c, + 0x26, 0xa8, 0x44, 0x7b, 0x85, 0xee, 0xe4, 0x5a, 0x6b, 0x82, + 0x64, 0x78, 0x36, 0x50, 0xd3, 0x92, 0x49, 0x9e, 0xd9, 0x7c, + 0xcf, 0x25, 0x0c, 0xa2, 0xea, 0x58, 0x36, 0x2f, 0xb4, 0x23, + 0xaf, 0xea, 0x75, 0xc2, 0x93, 0xcb, 0xe7, 0xde, 0x28, 0x4a, + 0x39, 0x13, 0xb4, 0xe2, 0x81, 0x36, 0xee, 0x0f, 0xe6, 0xea, + 0x98, 0xcf, 0x05, 0x27, 0xe5, 0x1d, 0x22, 0x31, 0x81, 0x51, + 0x09, 0x18, 0x78, 0x86, 0x43, 0x84, 0x7b, 0xab, 0xc3, 0x51, + 0x02, 0x8e, 0x92, 0xa5, 0x09, 0x52, 0x78, 0x1a, 0x72, 0xc6, + 0x63, 0x9b, 0xe0, 0x9d, 0x42, 0x93, 0x5d, 0x71, 0xd1, 0xcd, + 0x78, 0x01, 0xed, 0x96, 0x8b, 0xe8, 0x74, 0x15, 0xe9, 0x37, + 0x58, 0x6d, 0xfd, 0x9a, 0x35, 0x81, 0xed, 0x0f, 0x5f, 0x3f, + 0xc3, 0xec, 0x76, 0x78, 0x1d, 0x0c, 0xe5, 0xc8, 0x94, 0xf9, + 0x2d, 0x66, 0x5f, 0x16, 0xda, 0x44, 0x97, 0x57, 0xca, 0x58, + 0x7e, 0x63, 0x8c, 0xbd, 0x0f, 0x6b, 0x31, 0x4e, 0xda, 0x54, + 0xc4, 0xa3, 0x6a, 0x87, 0xa2, 0x0e, 0x46, 0xd5, 0x7d, 0xe9, + 0x89, 0xe6, 0x94, 0xec, 0xc4, 0xc5, 0x29, 0x35, 0xe1, 0x6f, + 0xd6, 0x1b, 0xaf, 0xe2, 0x25, 0x84, 0x74, 0x7c, 0xa1, 0x6d, + 0x29, 0xca, 0xad, 0xcc, 0x7a, 0xf9, 0x9d, 0xe8, 0x82, 0xa5, + 0x57, 0x04, 0x11, 0xbd, 0x53, 0xd2, 0xad, 0xfc, 0x07, 0x08, + 0x28, 0xc3, 0x80, 0x7c, 0x29, 0xd8, 0x41, 0x8e, 0xbf, 0x7a, + 0xcf, 0x63, 0x07, 0x8f, 0x82, 0x73, 0x7c, 0x78, 0x3c, 0x5c, + 0x4a, 0xb7, 0x28, 0xfb, 0x24, 0xe8, 0xd3, 0x4b, 0x82, 0xcd, + 0xe2, 0x04, 0x14, 0x80, 0x40, 0x3e, 0xf5, 0x6c, 0xc1, 0x47, + 0xbe, 0x3d, 0x86, 0xd0, 0xe2, 0xa6, 0x31, 0x58, 0xfb, 0x51, + 0xc9, 0xe2, 0xf0, 0xa4, 0x8e, 0xab, 0xb3, 0xd8, 0x25, 0x3b, + 0x31, 0xa0, 0x17, 0xff, 0x85, 0x56, 0x2b, 0xd2, 0x43, 0x1d, + 0x32, 0x05, 0x84, 0x03, 0x37, 0x07, 0x17, 0xc3, 0x9f, 0xd1, + 0x13, 0xdf, 0x8e, 0xbc, 0xa0, 0x79, 0xf4, 0x73, 0x63, 0x90, + 0x87, 0x93, 0x9f, 0xc0, 0x0b, 0xdf, 0x25, 0xdc, 0x6e, 0xe1, + 0xe7, 0xfb, 0xf5, 0x78, 0x3d, 0x28, 0x8d, 0x48, 0x0b, 0xba, + 0x16, 0x7d, 0x4a, 0x7b, 0xdc, 0x01, 0x0d, 0x35, 0x29, 0xf0, + 0x7a, 0x50, 0xd9, 0x90, 0x16, 0xb7, 0x7f, 0x12, 0x5a, 0x05, + 0xe3, 0xe7, 0xc9, 0x45, 0x03, 0x1d, 0xe2, 0x0b, 0x1e, 0xae, + 0x7f, 0x8e, 0x23, 0x68, 0x0b, 0x9e, 0x4f, 0x29, 0x06, 0x31, + 0xcb, 0x09, 0xb7, 0x07, 0xc2, 0xb2, 0x23, 0x04, 0x6b, 0xa8, + 0x4d, 0x24, 0x12, 0x83, 0x58, 0x20, 0x1c, 0xc4, 0xa7, 0xfd, + 0xd8, 0xd3, 0x6b, 0xd1, 0xa9, 0x81, 0xc0, 0x4d, 0xc7, 0x22, + 0x79, 0x05, 0x3b, 0x56, 0x6f, 0x32, 0x6d, 0xcb, 0xa9, 0xef, + 0x8b, 0x6b, 0x04, 0xfe, 0x7f, 0xd8, 0x31, 0x1c, 0xeb, 0xaa, + 0x26, 0x66, 0x41, 0xee, 0x8b, 0x9f, 0xb7, 0x66, 0x3d, 0x9d, + 0xaf, 0x74, 0x41, 0xb3, 0xca, 0x02, 0xe9, 0xbf, 0xc8, 0x69, + 0xb7, 0x7e, 0x13, 0xb2, 0x3f, 0xe2, 0x71, 0x18, 0xb8, 0xbd, + 0x5e, 0x57, 0xfa, 0x8c, 0x09, 0x1e, 0x13, 0xd0, 0x1c, 0x20, + 0xa0, 0x8a, 0x45, 0x33, 0xa4, 0xe6, 0xc7, 0x7d, 0xb9, 0x2b, + 0xba, 0x4f, 0x1c, 0x79, 0xfb, 0xeb, 0xc1, 0x93, 0xa8, 0x14, + 0xe4, 0x02, 0x71, 0x9d, 0x87, 0xca, 0xec, 0x11, 0xfb, 0xb8, + 0x62, 0xb0, 0x35, 0xa2, 0x51, 0x07, 0x23, 0x8b, 0xdf, 0x95, + 0xa5, 0x73, 0x4a, 0x76, 0x62, 0x83, 0xf2, 0xf3, 0xb9, 0x15, + 0xeb, 0x90, 0x9f, 0xa9, 0xb2, 0xcc, 0x85, 0x44, 0x7e, 0xb4, + 0xf2, 0xea, 0x3b, 0x05, 0x11, 0xa0, 0x50, 0xd0, 0x59, 0x77, + 0x60, 0x26, 0x70, 0xa3, 0x46, 0xe4, 0x3b, 0x6e, 0x9a, 0x1e, + 0x66, 0x46, 0x23, 0xa5, 0x15, 0xf1, 0x83, 0xd4, 0xe3, 0x4c, + 0x57, 0x1d, 0x9a, 0xa7, 0x75, 0x4f, 0xb0, 0xf4, 0x7a, 0xd5, + 0x60, 0x96, 0xed, 0x90, 0x21, 0x70, 0x7d, 0x71, 0x75, 0x40, + 0xea, 0x9e, 0xa3, 0x2b, 0xf4, 0x69, 0xc0, 0xef, 0x19, 0xe3, + 0x42, 0xe0, 0xfa, 0xe2, 0xea, 0x80, 0xd0, 0x19, 0x7d, 0xa6, + 0x53, 0x6a, 0xd7, 0xb0, 0x62, 0x30, 0xcc, 0x10, 0x52, 0x91, + 0xd0, 0x9a, 0x2a, 0x70, 0x73, 0x18, 0x0c, 0xad, 0x7d, 0x9a, + 0x08, 0x58, 0xb5, 0x89, 0x50, 0x17, 0x2a, 0x56, 0x91, 0xc1, + 0x43, 0x9a, 0x4d, 0x44, 0xf2, 0x0a, 0x76, 0xac, 0xde, 0x64, + 0xda, 0x55, 0x91, 0x1d, 0x02, 0xc7, 0x5d, 0x5a, 0x2d, 0x65, + 0x9c, 0x50, 0x36, 0x29, 0x3f, 0xa6, 0x1f, 0xed, 0x02, 0xe8, + 0x46, 0xd0, 0x16, 0xff, 0x9e, 0x52, 0x0c, 0x62, 0x55, 0x12, + 0xad, 0x0e, 0x47, 0xa7, 0x46, 0x08, 0xa7, 0x91, 0x90, 0x08, + 0x04, 0xda, 0x2b, 0x76, 0xb9, 0x89, 0xd2, 0xc6, 0x30, 0x0d, + 0xa7, 0x32, 0xdc, 0xce, 0x70, 0xb9, 0xbd, 0xf7, 0x19, 0x93, + 0xd6, 0xc6, 0x4e, 0x42, 0x10, 0xba, 0xdc, 0xaf, 0x27, 0x25, + 0xb1, 0x2a, 0x15, 0xe3, 0xfd, 0x91, 0xa7, 0x5b, 0xc9, 0x88, + 0xfc, 0xab, 0x27, 0x17, 0x76, 0x0a, 0x22, 0x83, 0xa0, 0x63, + 0xb2, 0xee, 0xc0, 0x4c, 0xe0, 0x85, 0x8c, 0x0b, 0x76, 0xdc, + 0xa4, 0xd4, 0x02, 0x7f, 0xde, 0x6c, 0xf9, 0x0e, 0x94, 0x55, + 0x13, 0x33, 0xc1, 0x77, 0xa4, 0xae, 0xca, 0xb3, 0x3a, 0xc2, + 0x61, 0xf6, 0x14, 0xa6, 0xff, 0x36, 0x34, 0x12, 0xc9, 0x2a, + 0xca, 0x18, 0x96, 0xc9, 0x6b, 0x59, 0xcd, 0x38, 0xdb, 0xd2, + 0x37, 0x22, 0x61, 0x1e, 0x15, 0x36, 0x96, 0x92, 0x70, 0x80, + 0xc5, 0x6d, 0xd7, 0xcc, 0xd5, 0x1e, 0x9a, 0x37, 0xa1, 0xac, + 0xad, 0xff, 0x70, 0x27, 0x54, 0xe0, 0xe6, 0x30, 0x18, 0x99, + 0xfa, 0xf7, 0x10, 0xb0, 0xa9, 0xd1, 0xa0, 0x2e, 0x54, 0xac, + 0xe1, 0x41, 0x86, 0xf7, 0x9a, 0x88, 0x27, 0x14, 0xec, 0x9b, + 0x7f, 0xc8, 0x77, 0xaa, 0xe1, 0x3a, 0x6f, 0xe5, 0xf7, 0x90, + 0x48, 0x49, 0xa3, 0x80, 0x70, 0x96, 0xd9, 0x72, 0xe6, 0xca, + 0x6f, 0xc2, 0x39, 0xc2, 0x4c, 0xfa, 0x7d, 0xb5, 0xc5, 0x27, + 0x56, 0x0f, 0x4f, 0x05, 0x59, 0x09, 0x39, 0x86, 0x33, 0x9f, + 0xa6, 0x0b, 0xe4, 0x87, 0x6c, 0xf4, 0xb8, 0x82, 0x8c, 0x7e, + 0x3a, 0xd6, 0x33, 0x48, 0xdb, 0xc6, 0x58, 0x7a, 0x3d, 0x8b, + 0x30, 0x4b, 0x97, 0x48, 0xf1, 0x38, 0xdf, 0xd9, 0xdb, 0x20, + 0xa0, 0x99, 0xb8, 0xcb, 0x84, 0xa6, 0x02, 0xae, 0xf8, 0x07, + 0x6d, 0xbc, 0xff, 0x6e, 0xa0, 0xbd, 0xfe, 0x24, 0xb4, 0x0a, + 0x05, 0x0d, 0x51, 0x8a, 0x06, 0x3a, 0x07, 0x16, 0x3c, 0x9f, + 0xfe, 0xdf, 0xb2, 0xa9, 0x48, 0x04, 0x02, 0x6d, 0xf4, 0x3b, + 0xbd, 0xa5, 0x69, 0x63, 0x18, 0xe7, 0xb2, 0x19, 0x10, 0xf7, + 0xad, 0x95, 0xab, 0xae, 0x6a, 0xc5, 0x73, 0x8b, 0x3b, 0x79, + 0xf8, 0x64, 0x10, 0x4c, 0x71, 0x02, 0x0a, 0x40, 0x20, 0x1f, + 0x9b, 0x36, 0x81, 0xc2, 0x5f, 0xff, 0x43, 0x68, 0x71, 0x53, + 0x87, 0xbc, 0x09, 0xe1, 0x91, 0x45, 0xff, 0x3f, 0x5f, 0x5c, + 0xa4, 0x34, 0x03, 0xc5, 0x87, 0xaa, 0x35, 0x15, 0x41, 0xe5, + 0x93, 0x28, 0x0b, 0x04, 0xe2, 0xf9, 0xcd, 0x57, 0x1b, 0x22, + 0x35, 0xb3, 0x38, 0x40, 0x83, 0xd7, 0x8a, 0x66, 0x8b, 0x0f, + 0x4d, 0xfa, 0xb1, 0x56, 0xb7, 0x9e, 0x38, 0xf2, 0x52, 0x6a, + 0x01, 0xde, 0x6f, 0x36, 0x9d, 0x07, 0x4a, 0xcb, 0xe8, 0xf8, + 0x81, 0xda, 0x52, 0x57, 0x65, 0xb8, 0x1d, 0x61, 0xd1, 0x7b, + 0x0a, 0x53, 0x9e, 0x1b, 0x1a, 0x09, 0x85, 0x15, 0x65, 0x0c, + 0xde, 0x09, 0x2d, 0xe3, 0x90, 0x92, 0x85, 0xc3, 0xe0, 0xef, + 0x71, 0xe4, 0x0f, 0x57, 0xde, 0x47, 0x8e, 0xa4, 0x71, 0x67, + 0xd2, 0xc1, 0x84, 0x94, 0x9c, 0x0d, 0xa6, 0xba, 0x91, 0x60, + 0x8e, 0xf8, 0xa8, 0x03, 0x0f, 0x60, 0x30, 0xf1, 0x37, 0x2d, + 0x20, 0xa3, 0x91, 0x61, 0x83, 0x5c, 0xa8, 0x9b, 0xfd, 0x61, + 0x26, 0x7d, 0xdf, 0xbb, 0x83, 0xf2, 0x2b, 0xe6, 0xc6, 0xe3, + 0xcd, 0xe5, 0xfd, 0x43, 0x2e, 0x3d, 0xc9, 0xac, 0x56, 0x67, + 0x86, 0x3a, 0x64, 0x0a, 0xcb, 0x06, 0x6e, 0x0e, 0x2e, 0x45, + 0x01, 0x82, 0xcf, 0x2d, 0xf7, 0xd3, 0x4e, 0x28, 0x1b, 0xf5, + 0xfe, 0x53, 0xee, 0x97, 0x01, 0x74, 0xf8, 0xae, 0x53, 0xe4, + 0x72, 0xa2, 0x36, 0x7a, 0x5c, 0x41, 0x46, 0x3f, 0x1d, 0x6b, + 0xf8, 0x24, 0x8c, 0x63, 0x2c, 0x3d, 0xff, 0xa4, 0x18, 0xc4, + 0xaa, 0x24, 0x99, 0x1c, 0x8e, 0x8d, 0x8c, 0x10, 0xbb, 0xb1, + 0x30, 0x82, 0x41, 0xe9, 0x8f, 0x90, 0x7e, 0xf4, 0x6b, 0xed, + 0x8a, 0x42, 0xbb, 0x4b, 0x49, 0x42, 0x89, 0x97, 0xaa, 0x79, + 0x10, 0x39, 0xcc, 0x38, 0xee, 0xa9, 0xf4, 0xf6, 0x49, 0xa1, + 0x44, 0x17, 0x4b, 0xa5, 0xb3, 0x37, 0x90, 0x32, 0x63, 0x3b, + 0x92, 0xa8, 0x58, 0x4a, 0x44, 0xe0, 0xbf, 0xfc, 0x8a, 0x36, + 0x1b, 0x23, 0x74, 0x30, 0x12, 0xa6, 0x15, 0x62, 0xb4, 0x5b, + 0xbf, 0x58, 0xef, 0x51, 0xd6, 0xb2, 0x59, 0x70, 0x75, 0x67, + 0x6e, 0x44, 0xc2, 0x3c, 0x2a, 0x6c, 0xef, 0xe7, 0xfc, 0xe3, + 0xe9, 0x50, 0x28, 0x68, 0xcd, 0xda, 0x30, 0x13, 0x38, 0xb0, + 0x23, 0x72, 0xfc, 0x37, 0x3a, 0x87, 0xde, 0x8d, 0xa7, 0x03, + 0x17, 0x5f, 0x7b, 0xd3, 0x8e, 0xf0, 0xa8, 0x73, 0x3a, 0x1a, + 0xb1, 0xec, 0xda, 0x73, 0xd8, 0xdb, 0x26, 0x43, 0x90, 0x79, + 0xa8, 0x96, 0xe9, 0x9d, 0xb1, 0x85, 0xf9, 0x2c, 0x9c, 0xc9, + 0x85, 0x71, 0x78, 0x52, 0x47, 0xb4, 0xb8, 0x6c, 0xf3, 0xfc, + 0xf9, 0x50, 0x99, 0x5b, 0xf4, 0x31, 0xf9, 0x13, 0xc7, 0x89, + 0xae, 0x08, 0x22, 0xb9, 0xa6, 0x67, 0x99, 0x3b, 0xd8, 0x83, + 0xca, 0x0d, 0xe7, 0x3d, 0xe2, 0x33, 0xba, 0x94, 0x30, 0xcd, + 0x2e, 0xa3, 0xd8, 0xbc, 0xc9, 0xf6, 0xa8, 0xb5, 0xbb, 0x40, + 0xc6, 0xde, 0xd2, 0xea, 0xf5, 0xe7, 0x38, 0x50, 0xc9, 0x84, + 0x61, 0xf5, 0xa7, 0xd5, 0x8b, 0xb1, 0xf1, 0xf3, 0xf2, 0x49, + 0x64, 0x86, 0xbb, 0x0c, 0x61, 0x1f, 0x3c, 0x0d, 0x39, 0x63, + 0xd0, 0xac, 0x70, 0xaf, 0x21, 0xa8, 0xcf, 0xd9, 0x89, 0x87, + 0x3c, 0xe1, 0x89, 0xac, 0x59, 0xa4, 0x52, 0xbd, 0xad, 0x4c, + 0xdd, 0x83, 0x19, 0xc0, 0x5e, 0x03, 0x89, 0x77, 0x0f, 0x92, + 0x9f, 0x68, 0x34, 0x2b, 0x1c, 0x5b, 0x99, 0x2a, 0x43, 0xa7, + 0xb3, 0x51, 0x0f, 0xa9, 0x5c, 0x7a, 0x51, 0x9b, 0xac, 0xce, + 0xcf, 0x74, 0xc8, 0x14, 0x55, 0x0c, 0xdc, 0x1c, 0x5c, 0x8a, + 0xbe, 0x7e, 0x45, 0x1b, 0xec, 0xf0, 0x3a, 0x18, 0x09, 0x53, + 0xeb, 0x31, 0x5a, 0xcc, 0xbe, 0x2c, 0xc2, 0x29, 0x8d, 0x69, + 0xd5, 0xa1, 0x21, 0x25, 0x27, 0x92, 0xc8, 0xcf, 0xb5, 0x18, + 0xc2, 0x3e, 0xc5, 0x21, 0xa5, 0xaa, 0x55, 0xdd, 0x08, 0xfd, + 0x66, 0x1c, 0x77, 0xb5, 0x7a, 0x7b, 0xc5, 0xb1, 0x88, 0x2e, + 0x96, 0x89, 0xa5, 0x6e, 0xe3, 0x64, 0xc6, 0x76, 0xe7, 0x93, + 0xb0, 0x94, 0x88, 0x03, 0xa1, 0x1b, 0x77, 0xe6, 0x73, 0x75, + 0x4c, 0x86, 0xe3, 0xf2, 0x93, 0xef, 0x11, 0xf9, 0xa1, 0xc9, + 0x1d, 0xa2, 0x6f, 0xa7, 0xb2, 0xe0, 0xea, 0xce, 0xdc, 0x88, + 0x47, 0x78, 0x54, 0xd8, 0x1d, 0x0d, 0xc7, 0xe6, 0xf8, 0xf0, + 0x78, 0xb8, 0x94, 0xad, 0x50, 0x35, 0x48, 0x13, 0x65, 0x96, + 0xc7, 0x59, 0x6c, 0xa0, 0x65, 0xe7, 0x92, 0xff, 0x71, 0xf8, + 0x5d, 0x4a, 0x18, 0x87, 0x17, 0xb0, 0x6c, 0x5e, 0x85, 0x7b, + 0x54, 0xbb, 0xbc, 0x20, 0x63, 0x6f, 0x69, 0x75, 0x9b, 0x92, + 0x1c, 0x28, 0x85, 0x42, 0x9d, 0x16, 0x4e, 0x85, 0xa3, 0xd9, + 0x3c, 0x29, 0xc2, 0x5a, 0x5c, 0x36, 0x98, 0x7e, 0x9d, 0x28, + 0xd3, 0x5c, 0xef, 0xd1, 0x89, 0xdc, 0x05, 0xc8, 0x4f, 0xec, + 0x0d, 0xe5, 0xa3, 0xeb, 0xd3, 0x06, 0xd1, 0x9b, 0xb2, 0x8b, + 0xa4, 0xb9, 0x99, 0x98, 0x79, 0xc5, 0x32, 0x43, 0xbc, 0x06, + 0xd1, 0xee, 0x1e, 0xe7, 0xfd, 0xd0, 0x68, 0x56, 0x38, 0xb6, + 0xf1, 0x54, 0x86, 0x8d, 0xa5, 0xa2, 0x1e, 0x91, 0x3e, 0xca, + 0x64, 0x39, 0xfd, 0xc9, 0xec, 0xff, 0x17, 0x81, 0xf0, 0x7f, + 0x96, 0x6a, 0x3e, 0x09, 0x84, 0xf9, 0x9b, 0x96, 0x4b, 0xf3, + 0x2d, 0x47, 0x72, 0x80, 0x65, 0xc1, 0xf2, 0xbf, 0x84, 0x36, + 0x2f, 0xbf, 0x06, 0x81, 0xa1, 0xb4, 0xc8, 0x12, 0x7f, 0xff, + 0x35, 0x55, 0x80, 0x99, 0x2f, 0x31, 0x7d, 0xd5, 0x07, 0x5f, + 0xce, 0x82, 0x55, 0x15, 0x35, 0x34, 0xdd, 0xad, 0x01, 0x43, + 0x7d, 0x66, 0x74, 0xcd, 0x7f, 0xd9, 0x8d, 0x06, 0x2e, 0xbe, + 0xf6, 0x65, 0xdf, 0x23, 0x93, 0xe6, 0x74, 0x34, 0x41, 0xd8, + 0x3e, 0x3c, 0x1e, 0x2e, 0x25, 0xba, 0x14, 0x9c, 0x12, 0x74, + 0x88, 0xc4, 0x41, 0x87, 0x50, 0xad, 0x5c, 0x84, 0x42, 0x53, + 0x01, 0x57, 0x7c, 0xe2, 0xd7, 0x5e, 0x9e, 0x37, 0x50, 0xbf, + 0x21, 0xaf, 0x56, 0xc4, 0x62, 0x4c, 0x9a, 0x61, 0xfd, 0x20, + 0x88, 0xa1, 0xdd, 0x5f, 0x21, 0xec, 0x55, 0x62, 0x29, 0x1d, + 0xef, 0x4a, 0xb4, 0xdf, 0x0b, 0x45, 0x57, 0x82, 0x4e, 0xb9, + 0x55, 0xd8, 0xe7, 0xcb, 0x61, 0x19, 0xed, 0x27, 0x40, 0xe4, + 0xb6, 0xe0, 0x3e, 0xe1, 0x56, 0x5e, 0xe7, 0xc1, 0xcd, 0xbb, + 0x12, 0x01, 0xe1, 0x8a, 0x3d, 0x7e, 0xbe, 0xb8, 0x8b, 0x68, + 0x06, 0x49, 0xcd, 0x97, 0x0d, 0x55, 0xc2, 0x32, 0x19, 0x4e, + 0x80, 0x0b, 0xaf, 0x03, 0x7c, 0x01, 0xac, 0xbc, 0x0d, 0x41, + 0x7c, 0x57, 0xc8, 0x72, 0x39, 0x51, 0x1b, 0x3d, 0x2e, 0xc1, + 0x23, 0xfe, 0xef, 0xd4, 0x7c, 0x12, 0x37, 0xd2, 0x1c, 0xbf, + 0xbe, 0x4d, 0x97, 0x54, 0xd4, 0xd0, 0xf2, 0xf1, 0x04, 0xcf, + 0x37, 0x5b, 0x1a, 0xaa, 0x47, 0x64, 0x32, 0x9c, 0xc3, 0x16, + 0x9d, 0x06, 0xf8, 0x02, 0x9b, 0xbb, 0x1a, 0x82, 0xa2, 0x5e, + 0xe5, 0x91, 0xa9, 0xc3, 0x9e, 0xfe, 0xce, 0x2e, 0x52, 0x1a, + 0xe0, 0x83, 0xa2, 0x55, 0xaf, 0x0b, 0x27, 0xa3, 0xb0, 0x8d, + 0x1e, 0xf5, 0x61, 0x2d, 0x2e, 0x1b, 0x4c, 0x3f, 0xaf, 0x14, + 0xf6, 0xbe, 0x03, 0xa1, 0xb1, 0x5a, 0x64, 0x09, 0xde, 0x9e, + 0xfb, 0xcb, 0x40, 0xad, 0xf6, 0xf9, 0xe8, 0x59, 0xfe, 0x71, + 0xd9, 0x0c, 0x5c, 0xbf, 0x2f, 0xca, 0x7d, 0x46, 0xe5, 0x0f, + 0xe8, 0x68, 0x7e, 0x90, 0x95, 0x28, 0x14, 0x34, 0x87, 0x6d, + 0x18, 0xe8, 0x1c, 0x58, 0xf0, 0x39, 0x7e, 0xfa, 0x5e, 0xbd, + 0x0c, 0xc1, 0x81, 0xab, 0x53, 0x24, 0xfe, 0x3d, 0x6a, 0xaa, + 0xc3, 0xf1, 0x5e, 0x62, 0xfa, 0x69, 0x0e, 0xbe, 0x5f, 0xc7, + 0xaa, 0x2a, 0x6a, 0x68, 0x79, 0x99, 0x02, 0x86, 0xfa, 0xcc, + 0xb5, 0xa1, 0x60, 0xc7, 0x82, 0x11, 0xdd, 0xe3, 0xfc, 0x2b, + 0xd6, 0x19, 0xd7, 0x84, 0xb5, 0x96, 0x92, 0x84, 0xd1, 0xed, + 0x97, 0xf2, 0x20, 0x72, 0x5b, 0x70, 0x1f, 0x91, 0x2b, 0x2f, + 0x92, 0x81, 0x56, 0x27, 0xbb, 0x6a, 0x35, 0xfc, 0x66, 0xa7, + 0x26, 0x99, 0x96, 0x77, 0xbf, 0xc3, 0x56, 0x44, 0xf1, 0xb6, + 0x2b, 0x62, 0x31, 0x26, 0x4d, 0xd1, 0x9f, 0x10, 0x44, 0xb1, + 0x8f, 0xce, 0xf1, 0x76, 0x04, 0x4d, 0xba, 0xb4, 0x5a, 0xca, + 0xfb, 0xa0, 0x6c, 0x52, 0x7e, 0x8f, 0x3e, 0x19, 0x04, 0x13, + 0x6e, 0x67, 0x38, 0xbd, 0xbf, 0x9a, 0xed, 0xa8, 0x6b, 0x63, + 0x27, 0x21, 0x08, 0x5d, 0x6e, 0xb6, 0xa5, 0x56, 0xcd, 0x52, + 0x29, 0xbf, 0xb7, 0x26, 0x8f, 0xa0, 0xed, 0x60, 0x2f, 0xe0, + 0xa5, 0xda, 0xe6, 0x49, 0xae, 0x34, 0x1a, 0xf4, 0x0e, 0xcc, + 0xad, 0x15, 0xc0, 0xb2, 0xb8, 0xc9, 0xe6, 0xb5, 0xc8, 0x74, + 0x67, 0x98, 0x4c, 0x93, 0x88, 0xf6, 0xc9, 0x1f, 0x0b, 0xb4, + 0xd6, 0xc7, 0xc8, 0xf0, 0x7b, 0x5f, 0xe0, 0xb1, 0xb9, 0x2d, + 0x32, 0xe5, 0x6f, 0x4f, 0x9c, 0x84, 0x20, 0xb7, 0x7b, 0x9d, + 0x73, 0xc5, 0x57, 0x1a, 0x0d, 0x7a, 0x07, 0x66, 0xb7, 0xeb, + 0x60, 0x59, 0x5c, 0x85, 0x73, 0xbb, 0x51, 0x2f, 0x93, 0xa9, + 0xb5, 0x80, 0x4f, 0x7f, 0x67, 0x17, 0x29, 0x0d, 0x70, 0xa0, + 0x51, 0xcb, 0x95, 0x8c, 0xf9, 0x2e, 0x17, 0x8e, 0x09, 0xaa, + 0x1a, 0xfe, 0xa0, 0xeb, 0xe4, 0x4c, 0x95, 0x0e, 0x66, 0xfd, + 0x8f, 0x16, 0x0b, 0xcd, 0xd8, 0x2b, 0xb3, 0xc7, 0xdb, 0xfc, + 0x74, 0x6f, 0x66, 0x90, 0xd6, 0x93, 0x9a, 0x48, 0x24, 0xc5, + 0xb0, 0x40, 0x38, 0x4b, 0x8d, 0x39, 0x73, 0x65, 0xd6, 0x61, + 0x5b, 0x72, 0x79, 0x58, 0x2c, 0xb2, 0xe6, 0xac, 0x89, 0x9a, + 0xea, 0x76, 0x13, 0x7f, 0x5b, 0x05, 0xe3, 0x86, 0xdb, 0xad, + 0xb7, 0xed, 0xbb, 0x44, 0xda, 0xb2, 0x40, 0x6e, 0x68, 0x47, + 0xe3, 0xd2, 0x63, 0x32, 0xfa, 0x8f, 0xa6, 0xd4, 0x6d, 0xa3, + 0xc4, 0x60, 0x5b, 0x20, 0xa4, 0xe1, 0x63, 0xf7, 0x9b, 0x9c, + 0xa9, 0x6b, 0xd4, 0x76, 0x5b, 0xd9, 0x98, 0x21, 0x1d, 0x1f, + 0xb9, 0x8a, 0x9b, 0xd3, 0xbd, 0x3b, 0xd7, 0x6c, 0x36, 0x46, + 0xe8, 0x60, 0x24, 0x8f, 0x2a, 0xc4, 0xab, 0xb6, 0xbd, 0xb0, + 0x77, 0x88, 0xed, 0xae, 0x57, 0xb0, 0xfc, 0xc6, 0xdb, 0xb9, + 0x1e, 0xd6, 0x62, 0x9c, 0x77, 0xa8, 0x8d, 0xe1, 0xe3, 0x10, + 0x08, 0x77, 0x56, 0xec, 0xb1, 0xd1, 0x67, 0x4f, 0x60, 0x1a, + 0x8d, 0x64, 0xbc, 0xb9, 0x18, 0x41, 0xc1, 0x95, 0xa6, 0x48, + 0x3f, 0x7a, 0xd4, 0x97, 0x45, 0x21, 0xbc, 0xc4, 0xf3, 0x71, + 0x76, 0x38, 0x1c, 0x43, 0xd1, 0x81, 0xa9, 0x39, 0x7b, 0x17, + 0x90, 0x23, 0xf3, 0x9e, 0xf4, 0x79, 0x5e, 0xfb, 0x9c, 0x3f, + 0xf8, 0x59, 0xe8, 0xb7, 0xc4, 0x6d, 0x5f, 0x40, 0xf4, 0x11, + 0x26, 0xa7, 0x7e, 0x07, 0xe2, 0x30, 0xb3, 0xb9, 0xbc, 0xae, + 0x37, 0xdb, 0x12, 0x3c, 0x26, 0x63, 0xd4, 0x54, 0xc7, 0x12, + 0x09, 0xa0, 0x2c, 0x10, 0x0e, 0x62, 0xb2, 0x9f, 0x6c, 0x88, + 0xd4, 0x89, 0x80, 0xb4, 0x21, 0x22, 0x11, 0x39, 0xd6, 0xe7, + 0x1e, 0xd2, 0x1b, 0x4e, 0xcc, 0xa6, 0x80, 0x25, 0x93, 0x06, + 0x1e, 0xc0, 0x60, 0x21, 0x6e, 0x5a, 0x40, 0x85, 0xe1, 0xc2, + 0xc5, 0xb8, 0x93, 0xf5, 0xb6, 0xe4, 0xf2, 0xb0, 0x58, 0xa7, + 0x0f, 0x9b, 0xd1, 0xf7, 0x17, 0xec, 0x26, 0xfe, 0xb6, 0x0a, + 0x15, 0x38, 0xd8, 0x0c, 0x06, 0xb7, 0xdf, 0x4d, 0x04, 0x2c, + 0xbb, 0xa5, 0x28, 0xea, 0x15, 0x2b, 0xcc, 0x39, 0xdd, 0x2c, + 0x16, 0x59, 0x73, 0x56, 0xa5, 0x4d, 0x75, 0x3b, 0xe8, 0xde, + 0xcc, 0xe3, 0xac, 0x4e, 0xb5, 0xd4, 0x6a, 0x3b, 0xcc, 0x8d, + 0x4c, 0xf1, 0xef, 0xee, 0xbd, 0x45, 0xac, 0x88, 0xc1, 0x6c, + 0x1f, 0x1e, 0x0f, 0x17, 0xf3, 0x5d, 0x0a, 0x4e, 0x09, 0x3a, + 0x44, 0x62, 0xc1, 0xa2, 0xee, 0xd3, 0x19, 0x9f, 0xae, 0xa3, + 0x3b, 0x4f, 0x75, 0xb1, 0x3c, 0x6f, 0xc4, 0xfb, 0xee, 0x93, + 0xae, 0x89, 0xe8, 0x8e, 0x47, 0x5e, 0x50, 0xdd, 0x7a, 0xd8, + 0xd0, 0x48, 0xa2, 0xa8, 0xae, 0x60, 0x9c, 0x94, 0x81, 0xa8, + 0x54, 0x0a, 0x72, 0x01, 0xd9, 0xaf, 0xa2, 0x65, 0x76, 0xe9, + 0x9c, 0x5c, 0xd9, 0x01, 0x05, 0x20, 0x10, 0xee, 0xac, 0x1b, + 0xa1, 0x61, 0xce, 0x9e, 0xc0, 0x34, 0xd9, 0xc8, 0xa3, 0xdc, + 0x2a, 0xbc, 0x5e, 0x10, 0xd0, 0xd6, 0xd5, 0xdb, 0xac, 0x49, + 0x0e, 0x14, 0xa3, 0x21, 0x25, 0xe2, 0xec, 0x70, 0x38, 0x86, + 0x61, 0xc1, 0x91, 0x72, 0xf6, 0x2e, 0xe3, 0x46, 0x25, 0xff, + 0xeb, 0x1c, 0x6c, 0x06, 0x03, 0xba, 0x8e, 0xc7, 0x02, 0x16, + 0xbc, 0xb3, 0x14, 0x75, 0xeb, 0xf4, 0x40, 0x5a, 0xf1, 0x11, + 0xe9, 0xfd, 0x6b, 0x92, 0x0f, 0x69, 0xec, 0x27, 0x66, 0x53, + 0x40, 0xf3, 0x48, 0xc0, 0x46, 0xba, 0x5d, 0xaa, 0x5e, 0x11, + 0xd7, 0xcd, 0x10, 0xfa, 0x1a, 0x61, 0x48, 0xd5, 0x6d, 0x22, + 0xaa, 0xca, 0x65, 0x2c, 0x3f, 0xd0, 0x46, 0xbf, 0xe6, 0xd4, + 0xf9, 0x27, 0x6d, 0x2a, 0x28, 0xb7, 0x2e, 0x42, 0x21, 0xc8, + 0xe1, 0xca, 0x3e, 0x71, 0x8a, 0x2f, 0x4f, 0xfa, 0x28, 0xbe, + 0xff, 0xa6, 0x7b, 0x27, 0xf2, 0xde, 0x1f, 0xa2, 0x1d, 0xcf, + 0xf9, 0x45, 0xd2, 0x08, 0xff, 0xab, 0x0a, 0x5d, 0xea, 0xf1, + 0x99, 0x32, 0xa9, 0xd3, 0xee, 0x8d, 0xc3, 0x7b, 0x63, 0xdf, + 0x0a, 0xce, 0x4f, 0xc8, 0x6e, 0x79, 0xdd, 0xd6, 0x77, 0xc9, + 0x96, 0x43, 0xaf, 0x80, 0xd5, 0x02, 0x4f, 0x5a, 0x19, 0xef, + 0xd5, 0x13, 0xe8, 0x2a, 0x11, 0x6e, 0xb0, 0xda, 0x39, 0xf7, + 0x6a, 0xc1, 0x19, 0x1e, 0x53, 0xe8, 0xce, 0xf3, 0x98, 0xe5, + 0xd3, 0x2f, 0x51, 0x3e, 0x16, 0xab, 0x6f, 0x4d, 0x53, 0x23, + 0xf5, 0xfb, 0x91, 0xd6, 0x6b, 0xec, 0xb6, 0x71, 0xf3, 0x42, + 0x3a, 0x3e, 0xb1, 0xd7, 0xf5, 0x65, 0xb9, 0x76, 0x6d, 0xd8, + 0x6c, 0x8c, 0x13, 0xc0, 0x48, 0xdd, 0x54, 0x4b, 0x95, 0xaf, + 0xb9, 0xa3, 0xcb, 0x31, 0xf5, 0xef, 0x96, 0x25, 0x5a, 0x8e, + 0xe4, 0xc3, 0xca, 0x41, 0x27, 0xbd, 0xcb, 0x6c, 0x45, 0x95, + 0x84, 0x88, 0x44, 0xe4, 0xde, 0x1a, 0x78, 0xce, 0x6c, 0xfb, + 0xb6, 0xdd, 0x45, 0x94, 0x57, 0xa5, 0x74, 0x47, 0xc2, 0x2f, + 0x28, 0x8f, 0x3d, 0x6c, 0x68, 0x24, 0x51, 0x54, 0x57, 0x30, + 0xd7, 0x11, 0x55, 0x65, 0xd3, 0x16, 0xfe, 0x68, 0x23, 0xbe, + 0x73, 0x6a, 0x9d, 0xf2, 0xd7, 0x15, 0x68, 0xed, 0xdf, 0x53, + 0xc8, 0x35, 0x8a, 0x58, 0x31, 0x18, 0x66, 0x08, 0x29, 0xa9, + 0x68, 0x4d, 0x4c, 0x8d, 0xfc, 0x0e, 0x07, 0x60, 0xa5, 0xb1, + 0xbb, 0x9f, 0x6e, 0x75, 0x24, 0x78, 0x4c, 0xc6, 0x20, 0x2d, + 0x99, 0xe9, 0x95, 0x9f, 0xd4, 0x49, 0xe6, 0xd5, 0x76, 0xf2, + 0x33, 0xc8, 0x20, 0x98, 0x4a, 0x07, 0x1b, 0xe0, 0x70, 0xcf, + 0xc2, 0x41, 0xe1, 0xe4, 0x2f, 0x5c, 0x05, 0x8c, 0x4a, 0x3d, + 0x05, 0xcf, 0x75, 0x99, 0xad, 0x19, 0xb5, 0x88, 0x77, 0xa7, + 0x80, 0xdc, 0xd0, 0x8e, 0x05, 0x67, 0xc6, 0x64, 0x37, 0xdd, + 0x8f, 0x6b, 0xda, 0x85, 0x4b, 0xc0, 0xb6, 0x40, 0x8b, 0x01, + 0xc6, 0x2d, 0x14, 0xba, 0x17, 0x21, 0xf1, 0x64, 0x91, 0x65, + 0x1f, 0xd9, 0x45, 0xf6, 0xc6, 0x7d, 0x14, 0x5f, 0x9e, 0x53, + 0xdc, 0xf2, 0x79, 0x6f, 0xee, 0x51, 0xef, 0x86, 0x9d, 0xc3, + 0x69, 0x04, 0x9e, 0xb4, 0xd5, 0xd6, 0x08, 0x3f, 0xfe, 0x73, + 0x62, 0x38, 0x15, 0x97, 0x4c, 0xcc, 0x82, 0x1f, 0xd5, 0xfd, + 0x4d, 0x0f, 0x33, 0x23, 0xf0, 0xb3, 0xeb, 0x99, 0xa0, 0x6a, + 0x90, 0x26, 0xca, 0xef, 0x4d, 0xb2, 0xce, 0xfe, 0x80, 0x76, + 0x3b, 0x3c, 0xef, 0x06, 0x93, 0x64, 0x4a, 0x9d, 0xf7, 0x33, + 0xce, 0x0b, 0x5a, 0xf0, 0xb6, 0x75, 0xdb, 0x61, 0xa8, 0x84, + 0x92, 0x6f, 0x14, 0x25, 0xfd, 0xe8, 0x5a, 0x71, 0x3f, 0x48, + 0xab, 0x14, 0x0a, 0x1a, 0xa2, 0xd7, 0x0c, 0x74, 0x0e, 0x2c, + 0x78, 0xfd, 0x3f, 0x7d, 0x8a, 0xe9, 0xcb, 0xd3, 0x88, 0x0b, + 0x7f, 0x34, 0xf0, 0x5f, 0xd8, 0x35, 0xaf, 0x79, 0x8a, 0xeb, + 0x83, 0xf1, 0xb3, 0x55, 0xcb, 0x8f, 0x04, 0x9f, 0x33, 0x0e, + 0xda, 0xbb, 0x3d, 0xdc, 0x83, 0xb9, 0xc3, 0xab, 0x42, 0x44, + 0x22, 0x72, 0x6f, 0x0d, 0x3c, 0x67, 0x36, 0x9c, 0x5b, 0x8f, + 0xc3, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x0e, + 0x36, 0x03, 0xe0, 0x5d, 0x47, 0x82, 0x01, 0x0b, 0x5e, 0xb8, + 0x0a, 0xdb, 0x94, 0x7a, 0x1f, 0x65, 0x32, 0xfd, 0x9f, 0x85, + 0x76, 0x9e, 0xea, 0xa1, 0x78, 0xde, 0x4b, 0x35, 0x1f, 0xe5, + 0x98, 0xd9, 0x3b, 0x1c, 0x0e, 0xc0, 0x89, 0xa1, 0xb5, 0xfd, + 0xdc, 0xea, 0x48, 0xf0, 0x98, 0x4f, + }, + { + /* 15 */ + 0xcc, 0x0e, 0x86, 0xc2, 0x4f, 0xba, 0x59, 0x3b, 0xe3, 0xef, + 0x79, 0x82, 0x53, 0x11, 0xf0, 0xcd, 0x03, 0x96, 0x94, 0x95, + 0x6c, 0x2a, 0xb6, 0xf5, 0x9c, 0xba, 0xe7, 0x37, 0x83, 0x91, + 0xbd, 0x5b, 0x17, 0xb1, 0xab, 0xa6, 0xf9, 0x11, 0xd2, 0x03, + 0xc3, 0x8e, 0xc9, 0x90, 0x58, 0x92, 0xad, 0x69, 0xa5, 0x82, + 0x44, 0x27, 0x96, 0x65, 0xbf, 0x60, 0xda, 0x6e, 0x59, 0x28, + 0x51, 0x68, 0x84, 0xbe, 0xd4, 0x34, 0xac, 0xe0, 0xa9, 0x29, + 0xa0, 0x9f, 0x89, 0x76, 0x4d, 0xf9, 0xc1, 0x13, 0x51, 0x50, + 0xfc, 0x7a, 0xd2, 0x86, 0x40, 0x5f, 0x68, 0xb0, 0x37, 0x1e, + 0x11, 0x74, 0xb4, 0x15, 0x71, 0x34, 0xd6, 0xd0, 0xf5, 0x06, + 0xe1, 0xa4, 0xc5, 0x39, 0x61, 0x1b, 0xf7, 0x62, 0x82, 0x4c, + 0x87, 0x83, 0x76, 0x2b, 0xce, 0x5d, 0xc3, 0xbf, 0x63, 0x85, + 0xdc, 0x78, 0x44, 0x13, 0x95, 0x54, 0x07, 0xd0, 0xd2, 0xdb, + 0x47, 0x09, 0x71, 0x7d, 0x0f, 0xb6, 0x72, 0xc1, 0x40, 0x97, + 0x04, 0xf2, 0xe8, 0xe6, 0x20, 0x58, 0xd9, 0x78, 0x0a, 0x07, + 0x9f, 0xf2, 0x98, 0x1f, 0xf1, 0xa4, 0xba, 0xb9, 0xfe, 0xae, + 0x65, 0x91, 0xd7, 0xf4, 0xaa, 0x77, 0x7b, 0x09, 0x0c, 0x2c, + 0x3a, 0x76, 0x4b, 0x78, 0xc5, 0xdc, 0x42, 0x54, 0x28, 0x16, + 0x5c, 0x83, 0x98, 0x81, 0x1b, 0x53, 0x9b, 0x10, 0xf4, 0xee, + 0xe9, 0x4c, 0x46, 0x5f, 0x9a, 0x19, 0xcc, 0x5a, 0x52, 0x0e, + 0x08, 0x89, 0x2c, 0xe5, 0x72, 0x50, 0x86, 0x29, 0xbb, 0x57, + 0x85, 0xec, 0xa8, 0xa2, 0xe9, 0xed, 0x4b, 0x40, 0x60, 0x3d, + 0x06, 0x8b, 0x9c, 0x95, 0x2c, 0x45, 0xcc, 0x69, 0x79, 0xaf, + 0x02, 0xa0, 0xad, 0xb2, 0xeb, 0x78, 0xf3, 0xb8, 0x4f, 0x01, + 0x25, 0x21, 0xa6, 0x04, 0xbe, 0x79, 0x86, 0x2e, 0xff, 0x12, + 0x1b, 0xfd, 0xfc, 0xc9, 0xfa, 0x43, 0x2e, 0xa1, 0x95, 0x8f, + 0x31, 0x22, 0x67, 0x06, 0x45, 0xdf, 0x51, 0xe3, 0xb0, 0xe7, + 0x99, 0xd2, 0x7f, 0x4f, 0xa4, 0x30, 0x04, 0x69, 0xe7, 0x0b, + 0x8e, 0xd8, 0xb4, 0x96, 0x9a, 0x25, 0xb2, 0x92, 0xad, 0x94, + 0xe3, 0x39, 0x75, 0x14, 0xe8, 0xbd, 0xfc, 0x19, 0xf4, 0x01, + 0x9e, 0xd7, 0x5a, 0x74, 0x06, 0xef, 0xeb, 0xe9, 0xd8, 0x54, + 0xaf, 0x29, 0xfb, 0xb7, 0x0d, 0x6e, 0xc5, 0xe1, 0xb9, 0xb6, + 0x6b, 0x68, 0x9b, 0x03, 0x91, 0x52, 0x83, 0xfd, 0xd1, 0xec, + 0x9a, 0x31, 0x41, 0x26, 0xa2, 0xa0, 0x3b, 0xf4, 0x67, 0xcf, + 0x80, 0xbe, 0xd0, 0xa3, 0x6e, 0x3c, 0x22, 0xe8, 0xab, 0x2a, + 0xe2, 0x68, 0x6a, 0x1a, 0x56, 0x70, 0xb5, 0xf5, 0x50, 0xae, + 0xa5, 0x3b, 0xc7, 0x9d, 0x81, 0xe8, 0xc9, 0x28, 0x7e, 0x3d, + 0x69, 0x43, 0x20, 0xce, 0x34, 0x58, 0xfa, 0x0f, 0xe9, 0x3a, + 0x5a, 0xeb, 0xd9, 0x1a, 0x3c, 0x69, 0x41, 0x55, 0x7c, 0x4d, + 0xac, 0xd9, 0xe1, 0x5c, 0x72, 0x2a, 0xae, 0x05, 0x30, 0x56, + 0x84, 0xa8, 0x50, 0x2c, 0xb8, 0xc5, 0xf3, 0xc1, 0x36, 0xa6, + 0xf5, 0x20, 0x2b, 0x1f, 0x11, 0x98, 0x67, 0x75, 0x8e, 0x12, + 0xe2, 0xfa, 0x1e, 0xaf, 0xe4, 0x41, 0x80, 0xed, 0x08, 0x27, + 0x13, 0x0f, 0xb6, 0x38, 0x5d, 0x8e, 0xff, 0xad, 0xa7, 0xec, + 0x0a, 0x3a, 0x27, 0x4d, 0x8f, 0x44, 0x46, 0xb2, 0x16, 0xc3, + 0x66, 0xd5, 0xdd, 0xb6, 0x01, 0x50, 0xb7, 0x59, 0x94, 0x3c, + 0x98, 0x5c, 0xc6, 0xe1, 0x88, 0xb5, 0x45, 0x3d, 0xcb, 0x6d, + 0x6e, 0x93, 0x03, 0x0b, 0xef, 0xfc, 0x62, 0x1e, 0xa0, 0x37, + 0x58, 0x8a, 0x5b, 0xd2, 0xf2, 0x9d, 0x04, 0x83, 0x99, 0xa7, + 0x15, 0xf0, 0x25, 0xb3, 0x9e, 0x02, 0xbc, 0xca, 0xa3, 0x76, + 0x54, 0x51, 0x95, 0x97, 0xc4, 0x20, 0x30, 0xff, 0x03, 0xa4, + 0x4e, 0xab, 0xde, 0xc6, 0x52, 0x18, 0x02, 0xd5, 0x92, 0xe4, + 0x47, 0x6c, 0x5a, 0x4b, 0x4d, 0xf3, 0x59, 0x49, 0xc2, 0xf7, + 0xca, 0x35, 0x74, 0x9f, 0xa1, 0xcf, 0x3e, 0x2f, 0xd9, 0xc5, + 0x59, 0x4f, 0x97, 0xb1, 0x4e, 0x49, 0x3d, 0x07, 0x2f, 0x2b, + 0x05, 0xd3, 0x2e, 0xfe, 0x81, 0xcc, 0xbd, 0xef, 0x58, 0xe3, + 0x3f, 0xff, 0xd5, 0xc0, 0x10, 0x67, 0x1a, 0x2c, 0x7d, 0xe6, + 0x95, 0x1d, 0x2d, 0x94, 0x8d, 0x0d, 0x0e, 0xf9, 0x4c, 0xf7, + 0x3b, 0x25, 0xf8, 0xf4, 0xdd, 0xc0, 0xa0, 0x47, 0x0a, 0x5e, + 0x67, 0x7c, 0x1f, 0xa7, 0x0c, 0xb8, 0x1a, 0x60, 0x85, 0xde, + 0xe5, 0xf9, 0x64, 0xb9, 0x97, 0x2d, 0x73, 0xa3, 0x99, 0xeb, + 0x05, 0x72, 0xea, 0x28, 0x13, 0xb9, 0x3b, 0x32, 0x2b, 0x02, + 0xff, 0x6d, 0xb4, 0xe8, 0x0c, 0x1d, 0x15, 0x11, 0x73, 0xa8, + 0x9d, 0x52, 0x35, 0xad, 0x1a, 0xdc, 0x49, 0x01, 0xb1, 0xaf, + 0x70, 0xc4, 0x25, 0xb4, 0x1b, 0xeb, 0xcc, 0xac, 0x27, 0xcf, + 0x49, 0x7d, 0x50, 0xb5, 0xbe, 0x66, 0x44, 0xbb, 0xc3, 0xff, + 0x84, 0xd7, 0x37, 0xa8, 0xe0, 0xe4, 0x96, 0x7e, 0x31, 0x0f, + 0x50, 0xfa, 0x2d, 0x37, 0x01, 0x1a, 0x5d, 0x08, 0xd1, 0xf3, + 0xd9, 0x65, 0xb6, 0xd4, 0x33, 0x76, 0x24, 0x89, 0x5f, 0x17, + 0x7d, 0x48, 0x0e, 0x6e, 0x78, 0xf9, 0x16, 0xc7, 0x45, 0x32, + 0x20, 0x9c, 0x4c, 0x3c, 0x78, 0xd2, 0x82, 0xaa, 0xf8, 0x9a, + 0x9b, 0x71, 0x01, 0xb8, 0xe4, 0x54, 0x9f, 0x0a, 0x60, 0xac, + 0xcb, 0x93, 0xa0, 0x58, 0xb3, 0x49, 0x25, 0x41, 0x6c, 0x8f, + 0x29, 0x40, 0x56, 0x3e, 0x22, 0xf3, 0xd5, 0x46, 0x61, 0x93, + 0x8d, 0x8e, 0x73, 0xcc, 0xfd, 0xa1, 0x10, 0x55, 0x01, 0xdd, + 0x3a, 0xd8, 0x73, 0x52, 0xb1, 0x21, 0x77, 0xc1, 0x7a, 0x59, + 0xbb, 0x75, 0xae, 0x4a, 0xd3, 0x24, 0x03, 0x3d, 0x5c, 0x81, + 0xe9, 0xdd, 0x62, 0x44, 0xce, 0x0c, 0x8a, 0x7d, 0xa2, 0x05, + 0xa3, 0x0d, 0xf1, 0x67, 0xfe, 0x9e, 0x8b, 0x60, 0x08, 0xd2, + 0x0d, 0x16, 0xdf, 0x73, 0xab, 0xef, 0xf7, 0x4a, 0xa7, 0xe7, + 0x6f, 0x63, 0x29, 0x0c, 0x01, 0x8b, 0x49, 0x72, 0xc2, 0x36, + 0x2d, 0xc4, 0xc7, 0x98, 0xcd, 0xc5, 0x1a, 0xde, 0x73, 0xc4, + 0xae, 0x1e, 0x9c, 0x02, 0x82, 0xf4, 0x8e, 0xe0, 0xd1, 0x5d, + 0x77, 0x4e, 0x07, 0x9d, 0x26, 0x9a, 0xfc, 0xf3, 0x7c, 0x7a, + 0x8f, 0x60, 0x50, 0xc2, 0x05, 0x2f, 0xd2, 0x3e, 0xee, 0xb2, + 0x06, 0x5c, 0x0d, 0x30, 0xa3, 0x6f, 0x93, 0x9d, 0x32, 0xbd, + 0xaa, 0xf7, 0xd8, 0xb0, 0xea, 0xb9, 0xb4, 0x53, 0x9d, 0xe9, + 0x69, 0xe0, 0x80, 0x47, 0x85, 0x48, 0x2c, 0x49, 0xb7, 0xd5, + 0xc8, 0x05, 0x34, 0xcd, 0xdf, 0x63, 0x93, 0xb4, 0xf0, 0x35, + 0xce, 0x77, 0xd5, 0xaf, 0x9f, 0xa8, 0x8c, 0xbe, 0xf7, 0x32, + 0x5b, 0xb4, 0xa4, 0x1c, 0x10, 0xd1, 0x58, 0x09, 0xe4, 0xa0, + 0xcf, 0x52, 0xb5, 0xae, 0xc9, 0x1b, 0x93, 0x87, 0x11, 0x19, + 0x96, 0x80, 0xc0, 0x7a, 0x0c, 0xd5, 0xfb, 0xe9, 0x38, 0x62, + 0xf3, 0x5a, 0xec, 0x94, 0x66, 0x56, 0xf2, 0x86, 0xc5, 0xdf, + 0x28, 0xbb, 0x5f, 0x33, 0x59, 0xf8, 0x96, 0xa1, 0xd6, 0x3a, + 0xd7, 0xd0, 0xed, 0x70, 0x48, 0x5c, 0xe5, 0x7d, 0xf5, 0x8a, + 0x69, 0x8c, 0xc2, 0xe5, 0xd9, 0xdf, 0xe6, 0x5b, 0x39, 0x81, + 0x20, 0xaa, 0x02, 0x79, 0x74, 0x73, 0x10, 0x2c, 0x8d, 0x3c, + 0x05, 0xe2, 0xae, 0x79, 0x4c, 0xee, 0x99, 0x52, 0x5d, 0xbd, + 0x7f, 0x57, 0xf0, 0x67, 0xc7, 0x97, 0x33, 0xf7, 0xf5, 0xe2, + 0x02, 0xb3, 0x0b, 0xa8, 0xfd, 0x14, 0xc0, 0x9b, 0xa3, 0x6d, + 0xaf, 0xce, 0x4e, 0x31, 0x10, 0x49, 0x21, 0xd9, 0x54, 0x46, + 0x94, 0x89, 0x3d, 0x08, 0x09, 0x64, 0x6a, 0x6d, 0xc7, 0xd6, + 0x84, 0x8e, 0x52, 0xa0, 0xf0, 0x85, 0x0f, 0x71, 0xb5, 0x42, + 0x0d, 0x6f, 0xd8, 0x62, 0x57, 0x0f, 0x4e, 0x01, 0x41, 0x7a, + 0x47, 0x70, 0x89, 0xcf, 0xda, 0x27, 0xfd, 0x08, 0x1f, 0xf5, + 0x64, 0xf8, 0xbb, 0xe3, 0x43, 0xc9, 0x4c, 0xd8, 0x74, 0xdb, + 0x1a, 0xbc, 0x1b, 0xac, 0xbe, 0xb7, 0x8a, 0xb9, 0x4f, 0x51, + 0xf6, 0x23, 0xd3, 0x4c, 0x11, 0x93, 0x1c, 0xc6, 0x27, 0xc5, + 0xff, 0xe2, 0xf6, 0xf4, 0xe3, 0x88, 0x17, 0x7f, 0xa1, 0x66, + 0xbf, 0x96, 0x2c, 0x90, 0x8d, 0xcc, 0x3a, 0x41, 0x7f, 0x13, + 0x77, 0x4f, 0x64, 0x06, 0x05, 0xa5, 0x24, 0x6e, 0xa4, 0xda, + 0xf2, 0x83, 0x9e, 0x71, 0x7b, 0x7a, 0x90, 0x44, 0xea, 0xde, + 0xb1, 0x33, 0xbe, 0x4b, 0x16, 0x48, 0x92, 0x6b, 0x36, 0xf9, + 0x65, 0x73, 0xf2, 0x91, 0x81, 0xff, 0x61, 0x1c, 0xb3, 0x43, + 0xd7, 0x79, 0x6d, 0x87, 0x70, 0xea, 0x49, 0x06, 0x2c, 0xd4, + 0x2a, 0x5b, 0x97, 0x5f, 0x84, 0xc7, 0x1b, 0x16, 0x5d, 0xf3, + 0x24, 0xae, 0x46, 0xe3, 0x1d, 0x5f, 0xfe, 0xaa, 0xff, 0xa9, + 0x63, 0xc3, 0x9a, 0xef, 0xf1, 0x15, 0x0a, 0xe4, 0x17, 0x50, + 0x26, 0xb1, 0x76, 0x64, 0x56, 0x04, 0x3d, 0xda, 0xab, 0x13, + 0x21, 0x2a, 0x14, 0x0b, 0x2e, 0xa0, 0x4c, 0xa1, 0xec, 0xc8, + 0xac, 0x08, 0x7a, 0x77, 0x95, 0x26, 0x37, 0xe9, 0x72, 0xde, + 0xf3, 0x16, 0x4d, 0xf1, 0x5b, 0x91, 0x38, 0x34, 0xe2, 0x2b, + 0x53, 0xc7, 0x40, 0xb0, 0x71, 0xf0, 0x14, 0x0e, 0xfd, 0x27, + 0xf3, 0x3e, 0x21, 0x8b, 0xb7, 0xb1, 0x3f, 0x9f, 0x8e, 0x5a, + 0xae, 0xd4, 0x13, 0x39, 0xc1, 0xba, 0xf8, 0xbc, 0xe2, 0x92, + 0xa7, 0xff, 0x19, 0x81, 0xe8, 0x5d, 0xed, 0xb5, 0xd5, 0x64, + 0x0c, 0x46, 0x68, 0x2a, 0x3f, 0xd3, 0x6f, 0x16, 0x61, 0x06, + 0xe4, 0x40, 0xf8, 0xa4, 0xa6, 0xcc, 0x91, 0x14, 0x5d, 0x87, + 0x25, 0x0f, 0x26, 0x17, 0xd0, 0xa9, 0xec, 0x56, 0x5f, 0xba, + 0x45, 0xbd, 0xc6, 0xc9, 0x7b, 0xf0, 0x88, 0x26, 0xe9, 0xa8, + 0x0e, 0x63, 0x9e, 0x76, 0x23, 0xe8, 0x16, 0xdb, 0x6f, 0xc3, + 0xb4, 0x52, 0x7b, 0xc0, 0xfa, 0x42, 0x66, 0xd6, 0x9c, 0x92, + 0x7a, 0x0e, 0x5e, 0x56, 0x0a, 0x65, 0x5c, 0x3f, 0xc1, 0x5b, + 0xb9, 0x1d, 0xb0, 0x05, 0xd1, 0x4d, 0xd3, 0x9c, 0x1d, 0x57, + 0xb9, 0x43, 0xee, 0x7b, 0xa7, 0xa0, 0x87, 0x63, 0x55, 0xbd, + 0xe7, 0xd6, 0x6c, 0x31, 0xca, 0xe6, 0x27, 0xe1, 0xc1, 0x3d, + 0xc2, 0x38, 0xa5, 0x86, 0x6d, 0xf2, 0xb8, 0xc1, 0x11, 0x79, + 0xc4, 0x88, 0x5f, 0x18, 0xd7, 0xfa, 0x87, 0x0a, 0x85, 0x1a, + 0x21, 0xce, 0x2f, 0xd3, 0x58, 0xfc, 0x15, 0x85, 0xb4, 0x55, + 0x31, 0x08, 0x0c, 0x4f, 0x70, 0x29, 0xf2, 0x5a, 0xe2, 0xaf, + 0x13, 0x4d, 0x7e, 0x98, 0x3e, 0x3d, 0xa6, 0x30, 0x28, 0x61, + 0xe3, 0xf6, 0x69, 0x1f, 0x8a, 0x51, 0x1c, 0xdb, 0x83, 0xe0, + 0x0b, 0x35, 0xeb, 0x66, 0x55, 0x67, 0x21, 0x41, 0x76, 0xe4, + 0xd7, 0xa2, 0x38, 0x75, 0xc5, 0x03, 0x16, 0x6a, 0x15, 0xcc, + 0xaa, 0xce, 0x42, 0x82, 0xec, 0x0b, 0xb4, 0xdc, 0x04, 0x68, + 0xb7, 0x20, 0xc2, 0x4a, 0xe2, 0x57, 0x9d, 0xd6, 0xcc, 0x1b, + 0x90, 0x61, 0x29, 0x3c, 0xb3, 0x15, 0xcd, 0xd1, 0x1b, 0x7c, + 0xca, 0xbf, 0x01, 0x21, 0xb5, 0xc8, 0x4b, 0xec, 0x13, 0xba, + 0x19, 0xa9, 0x69, 0xc8, 0x18, 0x8c, 0xd0, 0x54, 0x7e, 0x65, + 0xde, 0x2c, 0xc2, 0x0c, 0x98, 0x99, 0xc8, 0x01, 0xce, 0x8f, + 0xc0, 0xea, 0x4f, 0xe5, 0x76, 0xae, 0x3f, 0xa3, 0xdf, 0x60, + 0x80, 0xa3, 0xe2, 0x23, 0x28, 0x1c, 0x39, 0x4e, 0x25, 0x7c, + 0x42, 0xd5, 0xad, 0xa1, 0x7e, 0xfd, 0xa6, 0x14, 0xd0, 0xb2, + 0xfa, 0x4f, 0x09, 0x95, 0x46, 0xd4, 0xbe, 0x1f, 0xd2, 0xf9, + 0x39, 0xe5, 0x62, 0x0c, 0xf1, 0x6e, 0x56, 0x84, 0x07, 0x73, + 0x83, 0x4c, 0x6a, 0xb4, 0x4e, 0x57, 0x17, 0xe2, 0xb3, 0x41, + 0x22, 0xf2, 0x4b, 0xd3, 0xbe, 0x30, 0x6d, 0x37, 0xcd, 0x14, + 0xc9, 0x34, 0x42, 0x5f, 0x5e, 0x65, 0xb0, 0x3b, 0x2a, 0xc9, + 0xab, 0xaa, 0x62, 0x10, 0x18, 0x9e, 0xe0, 0x52, 0x27, 0xb4, + 0x72, 0x20, 0x7c, 0x52, 0x53, 0x66, 0xa9, 0x0a, 0xcf, 0xa2, + 0xf3, 0xe6, 0x13, 0xea, 0x68, 0xb5, 0x43, 0x26, 0xe5, 0x65, + 0x78, 0x24, 0x4b, 0xd2, 0x6f, 0x84, 0xc6, 0xbc, 0x34, 0x20, + 0x82, 0xc4, 0x34, 0x7f, 0xe6, 0x4b, 0x9f, 0x3c, 0xfb, 0x04, + 0xc7, 0x2b, 0xdf, 0x03, 0x61, 0xba, 0xee, 0x9c, 0x35, 0x0d, + 0x2b, 0x38, 0xbb, 0x9b, 0x28, 0x57, 0xb3, 0xfc, 0x82, 0xaf, + 0xa1, 0x74, 0x85, 0x14, 0x52, 0x78, 0xa5, 0x2a, 0x59, 0x61, + 0x36, 0xf8, 0x57, 0xbd, 0x02, 0x42, 0xa9, 0x53, 0x96, 0x1b, + 0x26, 0xb7, 0x32, 0x91, 0xd2, 0x53, 0x30, 0xdb, 0x63, 0xa8, + 0xfc, 0xca, 0x7f, 0x58, 0x47, 0x18, 0x7d, 0xab, 0xfd, 0xd6, + 0x4c, 0xe4, 0x82, 0xad, 0x66, 0xb5, 0x0e, 0x0d, 0xd9, 0x7a, + 0x64, 0x41, 0xb7, 0x4a, 0x90, 0xfd, 0xdb, 0x0a, 0x74, 0xbf, + 0x7e, 0xed, 0x7a, 0xe1, 0x4f, 0x8a, 0x2d, 0x3a, 0x0a, 0xf2, + 0xfe, 0xf8, 0xab, 0xfc, 0x32, 0x7b, 0xce, 0x1a, 0x17, 0xb2, + 0x8c, 0xe0, 0x08, 0x19, 0x45, 0xc9, 0x0e, 0x8c, 0xa0, 0x70, + 0xe4, 0xfb, 0x94, 0x33, 0xcb, 0xd2, 0xf1, 0xc1, 0x3b, 0x72, + 0x81, 0xd1, 0x2f, 0x50, 0x0c, 0xbb, 0xea, 0x1d, 0x51, 0xab, + 0x1f, 0x79, 0x6d, 0x6f, 0x15, 0x75, 0x6e, 0x11, 0xe4, 0x7f, + 0x25, 0x2c, 0x9a, 0x21, 0xb6, 0xe1, 0x70, 0x68, 0x07, 0x56, + 0xa6, 0x4d, 0x53, 0x0a, 0x68, 0x59, 0x7d, 0xc6, 0xe5, 0xab, + 0x23, 0x6a, 0x5f, 0xee, 0x69, 0x9d, 0xfd, 0x93, 0x4a, 0x42, + 0x8f, 0x08, 0xbf, 0xf2, 0xcf, 0x5c, 0x3d, 0x24, 0x36, 0x39, + 0x3b, 0x51, 0x37, 0x86, 0x79, 0xa0, 0x4f, 0xd9, 0xdc, 0x3d, + 0x48, 0x22, 0x75, 0x6f, 0xb9, 0xf8, 0x5f, 0xc4, 0x0b, 0x24, + 0x32, 0x90, 0x0d, 0xa2, 0x47, 0x68, 0x54, 0x2d, 0x3c, 0x9c, + 0xd2, 0x6d, 0xa4, 0x5b, 0x57, 0x2a, 0x61, 0x9a, 0x65, 0xfb, + 0x3a, 0xae, 0xb1, 0x86, 0x1f, 0xf6, 0x8d, 0x83, 0xcd, 0xc6, + 0xaa, 0xb9, 0xfb, 0xe7, 0xf4, 0x1c, 0xbc, 0xac, 0x14, 0xca, + 0xb8, 0x7e, 0x41, 0xb6, 0xb1, 0x3a, 0xa3, 0x0a, 0x39, 0x10, + 0x3e, 0x29, 0xc8, 0x33, 0xb5, 0x05, 0x86, 0x51, 0x98, 0x73, + 0xe8, 0x75, 0x34, 0xbb, 0xc0, 0x13, 0x93, 0xd3, 0x3c, 0x12, + 0xc4, 0x69, 0xd6, 0x42, 0x63, 0x5e, 0x1a, 0x10, 0x41, 0x62, + 0xfa, 0x95, 0x39, 0x6f, 0x98, 0x0b, 0xc7, 0x99, 0xcc, 0xa9, + 0x1c, 0x1a, 0x71, 0xf4, 0xc8, 0x82, 0x5b, 0x1c, 0xcf, 0x47, + 0x9e, 0xb7, 0xb2, 0x76, 0x05, 0x1d, 0xf2, 0xc7, 0xa6, 0x22, + 0x23, 0x59, 0xa4, 0xf0, 0x89, 0x54, 0xb2, 0xc2, 0x6c, 0x33, + 0xae, 0xb9, 0x04, 0x84, 0x91, 0xa6, 0xef, 0x36, 0xba, 0x25, + 0x48, 0x9f, 0x8c, 0x05, 0x3a, 0xbe, 0x3f, 0x97, 0x3d, 0x91, + 0xc6, 0x45, 0xf7, 0x1d, 0xda, 0xcd, 0xe0, 0x17, 0x92, 0x0c, + 0x58, 0x6b, 0x54, 0xb6, 0xed, 0xbe, 0xcb, 0x4d, 0x36, 0x2c, + 0x4c, 0xad, 0x64, 0xe1, 0x67, 0xa6, 0x60, 0x75, 0xc6, 0x93, + 0x3b, 0x57, 0xfe, 0xb0, 0x8e, 0x30, 0x05, 0x79, 0x7f, 0x7c, + 0xb4, 0x7e, 0x19, 0xdc, 0x67, 0x0d, 0xea, 0x59, 0x46, 0x70, + 0x04, 0xed, 0xc3, 0x85, 0x07, 0x46, 0x50, 0x38, 0x72, 0x9c, + 0x4a, 0xf8, 0x84, 0x69, 0x99, 0x81, 0xfc, 0x39, 0x3a, 0x86, + 0xaa, 0xbc, 0xa4, 0x19, 0x03, 0xf0, 0x1a, 0xeb, 0x7f, 0x44, + 0x6b, 0xe4, 0x89, 0xe0, 0x82, 0x47, 0xbb, 0xc5, 0x60, 0x91, + 0x5c, 0xe8, 0xcd, 0x11, 0xf8, 0x4e, 0xee, 0xfe, 0xa8, 0x2e, + 0x18, 0x3a, 0x2a, 0x22, 0xe6, 0x93, 0xf9, 0xa4, 0x6a, 0x99, + 0x34, 0x7b, 0x92, 0x02, 0xa1, 0x9d, 0xc9, 0x77, 0xf9, 0xbe, + 0xfb, 0xc4, 0x40, 0xe7, 0x84, 0xe2, 0x93, 0xdb, 0x15, 0x61, + 0xf4, 0x20, 0x68, 0xfe, 0x0f, 0x96, 0xfd, 0x78, 0x35, 0x08, + 0x4d, 0x56, 0x7d, 0x06, 0xc2, 0xb7, 0x1f, 0xfb, 0xf6, 0x88, + 0x2c, 0x7e, 0xeb, 0xa3, 0x5a, 0xcb, 0xf9, 0x04, 0x06, 0xc6, + 0x38, 0xf5, 0x79, 0x2d, 0x63, 0x7e, 0x3c, 0x1d, 0x72, 0x23, + 0xd4, 0x20, 0xf7, 0x9b, 0x37, 0x18, 0x8e, 0x99, 0x7c, 0x6a, + 0x87, 0x3e, 0xc4, 0xb9, 0xd4, 0xef, 0x45, 0x34, 0xaa, 0x1c, + 0x12, 0x17, 0xa8, 0x8e, 0xac, 0xc3, 0x49, 0xd4, 0x1b, 0x9d, + 0xd3, 0xd8, 0x79, 0xa9, 0xa1, 0x9e, 0xd1, 0x0e, 0xb8, 0xc0, + 0x8a, 0xdd, 0x36, 0x9b, 0xbf, 0xad, 0xd7, 0xb1, 0x9e, 0xa2, + 0x2f, 0x46, 0x65, 0x98, 0x22, 0xe5, 0x38, 0x4f, 0x91, 0xfd, + 0xa2, 0x6c, 0x09, 0x59, 0x44, 0x64, 0x1d, 0x45, 0x86, 0x2b, + 0x30, 0xd2, 0x6a, 0x22, 0x97, 0x12, 0x49, 0x85, 0xd1, 0x0d, + 0xeb, 0x4d, 0xe6, 0xf2, 0x8b, 0x45, 0xf5, 0x33, 0xd3, 0x94, + 0x33, 0xe2, 0xc0, 0xd1, 0x63, 0xcf, 0x87, 0x7e, 0x48, 0x4b, + 0x8f, 0xc1, 0x64, 0x95, 0x3c, 0xa2, 0x08, 0x16, 0xa7, 0x1e, + 0xe3, 0x71, 0x57, 0xdd, 0x26, 0x77, 0xad, 0x29, 0xcf, 0xbf, + 0xde, 0xca, 0x7c, 0xd9, 0x30, 0xa5, 0x68, 0x43, 0x51, 0xfe, + 0x12, 0x62, 0x53, 0xa1, 0x19, 0xb4, 0x0f, 0xc9, 0x02, 0xe4, + 0x59, 0xe6, 0x48, 0x8d, 0x65, 0xa6, 0xe8, 0x6d, 0xba, 0x9b, + 0x43, 0x5f, 0xd6, 0xd3, 0x77, 0x59, 0x03, 0x2e, 0xe7, 0x18, + 0xb0, 0xd6, 0xa8, 0xaf, 0x19, 0xbf, 0x55, 0x9a, 0x6c, 0x58, + 0x85, 0xda, 0x9d, 0x5f, 0x9c, 0x62, 0x20, 0x92, 0x42, 0x71, + 0xa8, 0x8c, 0xeb, 0xd1, 0x7a, 0x10, 0x66, 0x07, 0x43, 0x61, + 0xc6, 0x5d, 0xcd, 0xfc, 0x90, 0x96, 0xdd, 0x41, 0xc8, 0xe9, + 0x78, 0x87, 0x41, 0xc2, 0xbc, 0x83, 0x30, 0xa9, 0x2e, 0x74, + 0x87, 0xe9, 0x7c, 0x27, 0x77, 0x7f, 0x54, 0x17, 0x30, 0x74, + 0x54, 0x44, 0x0f, 0xe5, 0x31, 0x8b, 0xd4, 0xf1, 0x68, 0xf6, + 0xe7, 0x04, 0x81, 0xf9, 0xcd, 0x7c, 0x4b, 0xb1, 0x6b, 0x1d, + 0x8a, 0x68, 0x97, 0x38, 0x24, 0x2e, 0x93, 0xdf, 0x9b, 0x45, + 0xd0, 0x3f, 0x1e, 0xef, 0x39, 0xf0, 0x6a, 0x10, 0x9a, 0xac, + 0xfa, 0x0c, 0x47, 0xad, 0x3e, 0x35, 0xd9, 0x5b, 0x74, 0x82, + 0xfe, 0x26, 0xee, 0x9e, 0xc8, 0x0c, 0x0a, 0x89, 0x48, 0xdc, + 0x8b, 0x77, 0xa9, 0x9f, 0x51, 0x36, 0xe5, 0xcd, 0x22, 0x32, + 0xef, 0xc3, 0x43, 0xf4, 0x18, 0x69, 0x35, 0x11, 0xaa, 0x09, + 0xc5, 0xa3, 0x89, 0xe7, 0x94, 0xc7, 0x73, 0x79, 0xa4, 0xc3, + 0x9b, 0xf8, 0x88, 0x4a, 0xc5, 0x6a, 0xec, 0xaf, 0x88, 0x6c, + 0xdd, 0xb5, 0xb1, 0x4f, 0x89, 0x07, 0x5c, 0x60, 0x45, 0x8f, + 0x60, 0xe8, 0xa8, 0x88, 0x1e, 0x09, 0x62, 0xd5, 0x6b, 0x21, + 0xd0, 0x2f, 0x0d, 0x08, 0xc1, 0x31, 0xf8, 0x71, 0x60, 0x89, + 0xd0, 0x86, 0xa2, 0x3f, 0x24, 0xc4, 0xa6, 0x81, 0x32, 0xab, + 0x1e, 0x51, 0x04, 0x0b, 0xb2, 0x0f, 0x90, 0xd9, 0xca, 0x8f, + 0x13, 0xda, 0xb7, 0xf5, 0x86, 0xbe, 0x6f, 0x65, 0x90, 0x8f, + 0x6f, 0x1f, 0x2d, 0xfe, 0x97, 0x37, 0x69, 0x92, 0xdb, 0x87, + 0xf0, 0x1c, 0x01, 0xaa, 0xe6, 0xa4, 0xa1, 0x42, 0xee, 0x41, + 0xf4, 0xb2, 0xb5, 0xea, 0x9f, 0x94, 0x65, 0x48, 0x06, 0x7a, + 0x96, 0x60, 0x84, 0xf6, 0xf5, 0xaa, 0x38, 0x1e, 0x92, 0x25, + 0xd6, 0xe9, 0x35, 0xfd, 0xb8, 0x1c, 0xaf, 0x70, 0xba, 0xdf, + 0x3d, 0x99, 0x8d, 0x1b, 0x14, 0x74, 0x4e, 0x9a, 0xdd, 0x88, + 0x8c, 0xa7, 0xc6, 0xfc, 0x78, 0x3a, 0xe4, 0x46, 0x6b, 0x40, + 0x2d, 0xf5, 0x6e, 0x30, 0xdf, 0xf1, 0xf8, 0xd4, 0xa7, 0x66, + 0x1d, 0xc1, 0xde, 0xe8, 0xda, 0xc6, 0x32, 0x03, 0xe3, 0xb3, + 0x12, 0x37, 0x52, 0x6d, 0xa1, 0x89, 0xf6, 0x28, 0x06, 0xbc, + 0x75, 0xef, 0xc9, 0xb4, 0xee, 0xdd, 0xd7, 0xd6, 0xeb, 0xdb, + 0xd8, 0x29, 0xb9, 0xf1, 0xda, 0x81, 0x3d, 0xcd, 0xbc, 0xdb, + 0x57, 0x25, 0x88, 0x12, 0xe0, 0xff, 0x1e, 0xd5, 0xc1, 0xcb, + 0x3e, 0xc7, 0x56, 0x8d, 0x91, 0x2e, 0x39, 0x15, 0x57, 0xe3, + 0x18, 0x2b, 0x4d, 0xdf, 0xa9, 0x92, 0x43, 0x01, 0xb3, 0x26, + 0xb2, 0x44, 0x66, 0xfb, 0x3e, 0x7e, 0xe5, 0xb8, 0x64, 0xe3, + 0x1a, 0x87, 0x8e, 0xd0, 0xa8, 0x5a, 0x78, 0xfb, 0x67, 0xda, + 0x8b, 0xb6, 0xae, 0x54, 0x9a, 0x7d, 0x91, 0xe7, 0x86, 0x02, + 0xa5, 0x4c, 0xa7, 0x88, 0xcc, 0x35, 0x7c, 0xfc, 0x09, 0xb3, + 0xe3, 0xdd, 0xde, 0x3e, 0x5a, 0x3f, 0xed, 0x6e, 0xd2, 0xe7, + 0x75, 0xcd, 0x23, 0x38, 0x02, 0x97, 0xf9, 0x03, 0xad, 0xfa, + 0xf4, 0x21, 0x71, 0x6c, 0x50, 0x13, 0xfb, 0x2d, 0xf2, 0x65, + 0x75, 0xd9, 0xf7, 0xfa, 0xe1, 0x0d, 0xcf, 0x04, 0x89, 0x98, + 0x8d, 0xd3, 0x5b, 0x6a, 0xf8, 0x3b, 0x12, 0xa5, 0x19, 0x48, + 0xe7, 0x51, 0xc2, 0x34, 0x2a, 0xf7, 0x1e, 0x4e, 0x69, 0xd7, + 0x52, 0xcc, 0xca, 0x15, 0x83, 0x35, 0x76, 0xb6, 0x44, 0x36, + 0x8f, 0xbb, 0xb9, 0xc6, 0xa5, 0xe2, 0x2e, 0x30, 0xc3, 0xa6, + 0x4b, 0x30, 0x42, 0x7b, 0x9b, 0x55, 0x1c, 0x0f, 0x49, 0xf3, + 0x6b, 0x95, 0xfb, 0x9f, 0x5c, 0x0e, 0x4f, 0x3b, 0xf0, 0x74, + 0x0b, 0x8c, 0xd6, 0x80, 0x5a, 0x29, 0xdc, 0x60, 0x7d, 0x21, + 0x33, 0x6b, 0x7b, 0x44, 0x16, 0x3f, 0x94, 0xb0, 0x2d, 0x84, + 0x9d, 0x02, 0x03, 0x63, 0x1c, 0x9b, 0xdd, 0xf7, 0xef, 0xc0, + 0xcb, 0x2f, 0x29, 0x97, 0x70, 0x3c, 0xe7, 0x4a, 0x6f, 0x11, + 0x6a, 0x39, 0xb3, 0x38, 0x9d, 0xe0, 0xb7, 0x7d, 0x7a, 0xf1, + 0xd9, 0x36, 0x28, 0xe8, 0x9c, 0xf7, 0x79, 0xd3, 0xdb, 0x8d, + 0x74, 0xcf, 0x97, 0xbb, 0x8b, 0x32, 0x06, 0x23, 0x34, 0x15, + 0xfe, 0x88, 0xd6, 0x0b, 0xd1, 0x03, 0xc7, 0x8e, 0xb5, 0x49, + 0xc0, 0xe1, 0xb8, 0x13, 0x59, 0x22, 0x33, 0x9c, 0x1f, 0x3f, + 0x93, 0x5c, 0xca, 0xe1, 0x6d, 0x2b, 0x97, 0xee, 0xf6, 0x12, + 0x18, 0x58, 0x74, 0xec, 0x96, 0xf0, 0x49, 0x7b, 0x6c, 0xf5, + 0xbd, 0x99, 0x6d, 0xa1, 0xff, 0x87, 0x5e, 0x8c, 0xca, 0xf3, + 0x44, 0x09, 0x70, 0x9e, 0xf3, 0xf1, 0x53, 0x02, 0x5f, 0xdd, + 0x43, 0x17, 0x9e, 0x09, 0xec, 0x9f, 0x7e, 0x85, 0x7d, 0xc0, + 0x31, 0x06, 0x99, 0x37, 0x2b, 0x42, 0xe2, 0xd8, 0xa0, 0x26, + 0x35, 0x5a, 0x27, 0xca, 0xea, 0x71, 0x3e, 0x8d, 0x18, 0xb3, + 0x34, 0xc0, 0xc9, 0x7f, 0x09, 0x31, 0xc8, 0xb1, 0xed, 0x5a, + 0xe6, 0x85, 0x01, 0x72, 0xcd, 0x73, 0x24, 0xa7, 0xd3, 0x53, + 0x74, 0xd7, 0x5d, 0xac, 0xc0, 0xce, 0x6b, 0x88, 0xdb, 0xbf, + 0x2d, 0x64, 0xb6, 0xab, 0x8b, 0x38, 0x20, 0x61, 0xb0, 0x12, + 0x0b, 0x83, 0x5d, 0xa4, 0xc4, 0x18, 0x21, 0xdc, 0xac, 0xcb, + 0x0e, 0xe6, 0xc5, 0x98, 0xd4, 0xab, 0x9c, 0xae, 0x2e, 0x07, + 0xe1, 0x39, 0x87, 0xd8, 0x12, 0xb2, 0x88, 0xc8, 0x3a, 0x8a, + 0xcf, 0x56, 0x60, 0x67, 0xd4, 0x44, 0xed, 0x24, 0x92, 0xc9, + 0x61, 0x1a, 0x15, 0x9a, 0x0f, 0x27, 0xd5, 0x8a, 0x29, 0x66, + 0x65, 0xeb, 0xe0, 0x4b, 0x4a, 0xab, 0x36, 0x15, 0x5b, 0x9b, + 0x4e, 0x5d, 0x92, 0xfa, 0xa0, 0xa9, 0xbf, 0xcc, 0x14, 0x27, + 0x3f, 0x33, 0x95, 0x3b, 0x64, 0xf6, 0x5f, 0x34, 0x2e, 0xa7, + 0xdb, 0x03, 0x10, 0x32, 0xdf, 0xb4, 0x9f, 0x6b, 0x26, 0x72, + 0x41, 0xb7, 0x33, 0xbb, 0x07, 0xe7, 0x8d, 0x3d, 0x32, 0xc1, + 0x50, 0x9c, 0xfc, 0xcc, 0x11, 0xec, 0x53, 0x5e, 0xbf, 0xd0, + 0xb8, 0xd9, 0xea, 0x0c, 0x40, 0xc8, 0xbe, 0x2e, 0xfa, 0x90, + 0x1c, 0xdc, 0xf0, 0x31, 0x2c, 0x4d, 0x8a, 0x64, 0x40, 0xfb, + 0x98, 0x78, 0xab, 0x7b, 0x08, 0xd0, 0xad, 0x40, 0x47, 0x94, + 0x07, 0xae, 0xf9, 0x6f, 0x5b, 0x36, 0xe3, 0xc2, 0xae, 0x02, + 0x77, 0xac, 0x19, 0x3e, 0x5e, 0x48, 0x60, 0xa3, 0x13, 0x36, + 0x1d, 0x46, 0xe7, 0x2f, 0x51, 0xee, 0x31, 0xbf, 0x35, 0x4b, + 0x80, 0x0d, 0xcb, 0x07, 0xe5, 0x75, 0x2a, 0xc2, 0x2b, 0x40, + 0x12, 0xc8, 0xd4, 0xda, 0x4d, 0x6f, 0xcb, 0xdf, 0xa4, 0x83, + 0x23, 0xc9, 0x1e, 0xe2, 0xa9, 0x84, 0x8f, 0x28, 0x63, 0xa7, + 0x37, 0x9e, 0x12, 0xe9, 0x8c, 0x6b, 0xbf, 0x3e, 0x67, 0x31, + 0x72, 0x09, 0x1d, 0x43, 0x55, 0x5e, 0x52, 0xed, 0xe0, 0x78, + 0x0d, 0x94, 0xde, 0x22, 0xd4, 0x72, 0xa5, 0x70, 0xf4, 0x6c, + 0x75, 0x98, 0xa3, 0x2e, 0x3f, 0x6d, 0x11, 0x69, 0xbc, 0x5d, + 0x7b, 0xaa, 0xaf, 0xfe, 0xd3, 0xa9, 0x8a, 0x7a, 0x55, 0xda, + 0xdc, 0xe5, 0x06, 0x16, 0x1d, 0x3b, 0xc4, 0x3c, 0x83, 0x6e, + 0xff, 0xec, 0x46, 0x13, 0x2c, 0x75, 0xde, 0x45, 0xab, 0xa4, + 0xf6, 0x43, 0x37, 0x84, 0xcc, 0x6f, 0x47, 0x2d, 0x57, 0x6a, + 0xe8, 0xfd, 0x81, 0x5d, 0x7c, 0x5e, 0x71, 0x49, 0xb2, 0x9e, + 0xed, 0xa1, 0x15, 0x55, 0xf2, 0x40, 0xb1, 0x9c, 0xb7, 0xa5, + 0x2b, 0xe3, 0x73, 0x0b, 0x1b, 0xcd, 0x7b, 0xba, 0x8b, 0x23, + 0xd1, 0xa8, 0xa7, 0x47, 0xd8, 0x66, 0x9f, 0xb1, 0x08, 0xcb, + 0xe1, 0x8f, 0x1d, 0x6c, 0xa0, 0xfb, 0x3b, 0x5b, 0x22, 0x1b, + 0xa6, 0xbc, 0xbd, 0x63, 0xb3, 0x71, 0x17, 0x18, 0x80, 0x53, + 0xf5, 0x1e, 0xb8, 0xeb, 0x87, 0x89, 0xec, 0x3e, 0x65, 0xbe, + 0xe1, 0xf1, 0xbb, 0x64, 0xc4, 0x76, 0x28, 0x4e, 0x7e, 0x66, + 0xe9, 0x76, 0xc8, 0x2f, 0xbe, 0x68, 0x5c, 0x8d, 0x75, 0x06, + 0x20, 0x64, 0x57, 0x01, 0xda, 0x56, 0xed, 0x1f, 0x2f, 0x24, + 0x30, 0xb0, 0xe8, 0x1b, 0xef, 0x23, 0x92, 0xf6, 0xb2, 0x33, + 0xef, 0x81, 0x6f, 0x74, 0x6d, 0x63, 0x19, 0xe0, 0x90, 0xb8, + 0x09, 0xfa, 0x29, 0xd7, 0x24, 0x53, 0x6b, 0x77, 0x9a, 0xde, + 0x55, 0x7d, 0x8b, 0xc5, 0x46, 0x51, 0x3c, 0x07, 0x91, 0xcb, + 0xcf, 0x98, 0x12, 0x57, 0x23, 0x90, 0xef, 0xce, 0x7f, 0x55, + 0x9e, 0xb5, 0xd0, 0x80, 0x4d, 0x96, 0x89, 0xc7, 0x88, 0x4e, + 0xef, 0xca, 0xbd, 0xc0, 0x77, 0xdc, 0xb2, 0x50, 0xa2, 0xd0, + 0xcb, 0xbf, 0xdd, 0x50, 0xc6, 0x8d, 0x6e, 0xff, 0x24, 0x11, + 0xdb, 0xd6, 0xbd, 0x7c, 0xce, 0x62, 0xe4, 0x12, 0x55, 0xe5, + 0x83, 0xb0, 0xa5, 0x92, 0x4a, 0x82, 0xd8, 0xdd, 0x52, 0x80, + 0xac, 0x7c, 0x44, 0x25, 0x2b, 0xd8, 0xea, 0xf3, 0x85, 0x5c, + 0x7e, 0xda, 0x22, 0xd2, 0xbb, 0xba, 0xf6, 0x97, 0x9d, 0x3f, + 0x9b, 0x0f, 0x5c, 0x94, 0xa2, 0xa5, 0x76, 0x1f, 0xd3, 0x5f, + 0x91, 0x99, 0xbc, 0x32, 0x62, 0x3b, 0xeb, 0xcb, 0x79, 0x20, + 0xb9, 0x4e, 0xba, 0xb3, 0xf4, 0x90, 0xd8, 0xe4, 0xec, 0x87, + 0xdc, 0x5d, 0xce, 0xea, 0xdf, 0x24, 0x07, 0x37, 0x3c, 0x9d, + 0x0b, 0x82, 0xc3, 0x19, 0x10, 0x4e, 0x26, 0x1e, 0xe5, 0x32, + 0x35, 0xd7, 0x82, 0x6b, 0x42, 0x47, 0x29, 0x50, 0x78, 0xa3, + 0xe6, 0xd9, 0xbb, 0x21, 0xb1, 0xa5, 0x7b, 0x14, 0x03, 0x5e, + 0xdb, 0x96, 0x85, 0x5a, 0x77, 0x8f, 0x8a, 0x6b, 0x94, 0x8c, + 0x22, 0xbc, 0x80, 0x9e, 0x42, 0x8a, 0xfa, 0x54, 0x70, 0x72, + 0x4b, 0x3f, 0xf9, 0xe6, 0x28, 0x7d, 0xbd, 0xb8, 0x6e, 0x05, + 0x70, 0xf6, 0x46, 0xc4, 0xb0, 0xf7, 0x6d, 0x53, 0xc3, 0x6a, + 0x25, 0x23, 0xe9, 0x2f, 0x20, 0xc6, 0xf1, 0xc3, 0xdf, 0x15, + 0x1c, 0xfd, 0x62, 0x7f, 0xaf, 0xd8, 0x0a, 0x8e, 0x23, 0xce, + 0x4d, 0xed, 0x66, 0x2d, 0x29, 0x07, 0x04, 0xa5, 0x16, 0x93, + 0x39, 0x28, 0x43, 0xf5, 0x75, 0xbd, 0x5a, 0xc8, 0xaf, 0x95, + 0xd5, 0x70, 0x40, 0xc2, 0xa3, 0x24, 0x16, 0xc5, 0xba, 0x8b, + 0x9f, 0x04, 0xee, 0x9b, 0x32, 0x7c, 0xbc, 0x90, 0xc0, 0x85, + 0x26, 0x6c, 0x3a, 0x8c, 0x0d, 0x5e, 0xa2, 0x1f, 0x62, 0xbd, + 0x6a, 0x96, 0xc3, 0x1a, 0x55, 0x0e, 0x09, 0xea, 0x54, 0x47, + 0x56, 0x80, 0x0f, 0x8b, 0x81, 0x84, 0x1f, 0x82, 0x2b, 0xa7, + 0xa9, 0x17, 0xfd, 0xeb, 0xca, 0x90, 0x0c, 0xf4, 0x54, 0x97, + 0x4e, 0xc3, 0x81, 0x35, 0x99, 0xd1, 0xac, 0x0a, 0x0f, 0x2c, + 0x6c, 0xb2, 0x2f, 0xad, 0x86, 0x4c, 0x09, 0xca, 0xf0, 0x48, + 0x96, 0x67, 0xde, 0xcb, 0x4f, 0xbb, 0x68, 0x40, 0xc7, 0x4b, + 0x93, 0x19, 0xfb, 0x8a, 0x41, 0xd4, 0x21, 0xc2, 0xf5, 0x28, + 0x3c, 0xb0, 0x73, 0x8d, 0xbc, 0xf1, 0x5a, 0x6e, 0x02, 0x34, + 0xba, 0x10, 0x61, 0x25, 0x71, 0xca, 0xaf, 0x6b, 0x66, 0xec, + 0x48, 0xd1, 0x3d, 0x1b, 0x8c, 0x26, 0x58, 0xea, 0x7f, 0x8a, + 0x95, 0x8b, 0x2f, 0x86, 0x6e, 0xcb, 0x5b, 0xde, 0x94, 0x84, + 0xdd, 0x10, 0xbd, 0x27, 0x5d, 0xb8, 0x7a, 0x48, 0x6c, 0x72, + 0x76, 0xa2, 0x6e, 0xcf, 0x56, 0x73, 0x17, 0x25, 0xc9, 0xb8, + 0xfc, 0x77, 0x44, 0x67, 0xb5, 0xb7, 0x2f, 0xed, 0xf9, 0x7e, + 0xbf, 0x5c, 0x37, 0xe3, 0x38, 0x7b, 0x23, 0x62, 0x58, 0x9a, + 0xd7, 0xc8, 0x80, 0x35, 0xf3, 0xf0, 0x95, 0xf6, 0x10, 0x63, + 0x99, 0x80, 0x8e, 0xeb, 0x0e, 0x9f, 0x31, 0xde, 0xb6, 0x6c, + 0x05, 0x47, 0xb9, 0xb3, 0xdc, 0x0a, 0xe0, 0x2f, 0x8c, 0x4b, + 0xa3, 0x2d, 0xda, 0xa6, 0x45, 0xd4, 0x4a, 0x46, 0x11, 0x5e, + 0x40, 0x4f, 0x21, 0x45, 0x7d, 0x2a, 0x38, 0x39, 0xc4, 0xfe, + 0x9d, 0x73, 0x14, 0xdf, 0x0b, 0x80, 0x33, 0x8b, 0x8f, 0x5b, + 0xe1, 0x28, 0xba, 0xcd, 0x4a, 0x1e, 0x4c, 0x2e, 0x63, 0x91, + 0x71, 0xb6, 0xe8, 0xc7, 0x3f, 0x4c, 0x1f, 0xff, 0x53, 0x18, + 0x14, 0xd1, 0x90, 0x7b, 0xd5, 0xee, 0xb0, 0xd7, 0xb6, 0x67, + 0x27, 0xf9, 0x08, 0xc5, 0xf1, 0x8d, 0x2a, 0x23, 0x4a, 0xa5, + 0xff, 0x04, 0x1c, 0x31, 0x98, 0x2d, 0x76, 0x4a, 0x33, 0x2b, + 0x79, 0x43, 0x83, 0x8e, 0x14, 0xbc, 0xce, 0xf8, 0xdc, 0x22, + 0x0b, 0xfe, 0x4a, 0x58, 0xf7, 0x42, 0xaf, 0x01, 0xe0, 0xd0, + 0x0e, 0xac, 0x8f, 0x9a, 0xa8, 0xed, 0x9c, 0x45, 0xc1, 0x6a, + 0xf1, 0x61, 0x9b, 0x14, 0x1e, 0x58, 0xd8, 0xa7, 0x5e, 0x99, + 0xc1, 0x61, 0x5e, 0xa0, 0x18, 0xb5, 0x17, 0x3a, 0xa2, 0x95, + 0x3e, 0xf2, 0xda, 0xde, 0x2a, 0xea, 0x2a, 0xaa, 0x27, 0x80, + 0xa1, 0xfb, 0xad, 0x89, 0x56, 0x05, 0xe6, 0x16, 0x36, 0x59, + 0xf6, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xe6, + 0x2e, 0x4a, 0x51, 0xb3, 0x3b, 0xee, 0x88, 0xce, 0xa9, 0xad, + 0x5e, 0x19, 0x31, 0xfc, 0x48, 0xa6, 0xd6, 0xee, 0xf7, 0x7f, + 0xaa, 0xfa, 0xd5, 0x49, 0x8c, 0xa2, 0x78, 0x0e, 0xe1, 0x55, + 0x7a, 0x36, 0xdb, 0x4c, 0xb0, 0x17, 0xfe, 0xd7, 0xe9, 0xd5, + 0x5e, 0xcf, 0xdc, 0x55, 0xb6, 0x7f, + }, }; diff --git a/lib/nettle/gost/magma.c b/lib/nettle/gost/magma.c index ffbb394018..05341ffd98 100644 --- a/lib/nettle/gost/magma.c +++ b/lib/nettle/gost/magma.c @@ -23,23 +23,23 @@ */ #if HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #ifndef HAVE_NETTLE_MAGMA_SET_KEY -# include +#include -# include -# include "nettle-write.h" -# include "magma.h" -# ifndef HAVE_NETTLE_GOST28147_SET_KEY -# include "gost28147.h" -# else -# include -# endif +#include +#include "nettle-write.h" +#include "magma.h" +#ifndef HAVE_NETTLE_GOST28147_SET_KEY +#include "gost28147.h" +#else +#include +#endif -void magma_set_key(struct magma_ctx *ctx, const uint8_t * key) +void magma_set_key(struct magma_ctx *ctx, const uint8_t *key) { unsigned i; @@ -47,9 +47,8 @@ void magma_set_key(struct magma_ctx *ctx, const uint8_t * key) ctx->key[i] = READ_UINT32(key); } -void -magma_encrypt(const struct magma_ctx *ctx, - size_t length, uint8_t * dst, const uint8_t * src) +void magma_encrypt(const struct magma_ctx *ctx, size_t length, uint8_t *dst, + const uint8_t *src) { uint32_t block[2]; @@ -70,9 +69,8 @@ magma_encrypt(const struct magma_ctx *ctx, } } -void -magma_decrypt(const struct magma_ctx *ctx, - size_t length, uint8_t * dst, const uint8_t * src) +void magma_decrypt(const struct magma_ctx *ctx, size_t length, uint8_t *dst, + const uint8_t *src) { uint32_t block[2]; @@ -92,4 +90,4 @@ magma_decrypt(const struct magma_ctx *ctx, length -= MAGMA_BLOCK_SIZE; } } -#endif /* HAVE_NETTLE_MAGMA_SET_KEY */ +#endif /* HAVE_NETTLE_MAGMA_SET_KEY */ diff --git a/lib/nettle/gost/magma.h b/lib/nettle/gost/magma.h index bef8716db8..111f924bde 100644 --- a/lib/nettle/gost/magma.h +++ b/lib/nettle/gost/magma.h @@ -32,42 +32,39 @@ */ #ifndef GNUTLS_LIB_NETTLE_MAGMA_H_INCLUDED -# define GNUTLS_LIB_NETTLE_MAGMA_H_INCLUDED +#define GNUTLS_LIB_NETTLE_MAGMA_H_INCLUDED -# include "config.h" +#include "config.h" -# ifndef HAVE_NETTLE_MAGMA_SET_KEY +#ifndef HAVE_NETTLE_MAGMA_SET_KEY -# include +#include -# ifdef __cplusplus +#ifdef __cplusplus extern "C" { -# endif +#endif -# define magma_set_key _gnutls_magma_set_key -# define magma_set_param _gnutls_magma_set_param -# define magma_encrypt _gnutls_magma_encrypt -# define magma_decrypt _gnutls_magma_decrypt +#define magma_set_key _gnutls_magma_set_key +#define magma_set_param _gnutls_magma_set_param +#define magma_encrypt _gnutls_magma_encrypt +#define magma_decrypt _gnutls_magma_decrypt -# define MAGMA_KEY_SIZE 32 -# define MAGMA_BLOCK_SIZE 8 +#define MAGMA_KEY_SIZE 32 +#define MAGMA_BLOCK_SIZE 8 - struct magma_ctx { - uint32_t key[MAGMA_KEY_SIZE / 4]; - }; +struct magma_ctx { + uint32_t key[MAGMA_KEY_SIZE / 4]; +}; - void - magma_set_key(struct magma_ctx *ctx, const uint8_t * key); +void magma_set_key(struct magma_ctx *ctx, const uint8_t *key); - void - magma_encrypt(const struct magma_ctx *ctx, - size_t length, uint8_t * dst, const uint8_t * src); - void - magma_decrypt(const struct magma_ctx *ctx, - size_t length, uint8_t * dst, const uint8_t * src); +void magma_encrypt(const struct magma_ctx *ctx, size_t length, uint8_t *dst, + const uint8_t *src); +void magma_decrypt(const struct magma_ctx *ctx, size_t length, uint8_t *dst, + const uint8_t *src); -# ifdef __cplusplus +#ifdef __cplusplus } -# endif -# endif -#endif /* GNUTLS_LIB_NETTLE_MAGMA_H_INCLUDED */ +#endif +#endif +#endif /* GNUTLS_LIB_NETTLE_MAGMA_H_INCLUDED */ diff --git a/lib/nettle/gost/nettle-write.h b/lib/nettle/gost/nettle-write.h index e97e6434b2..c35ff915f5 100644 --- a/lib/nettle/gost/nettle-write.h +++ b/lib/nettle/gost/nettle-write.h @@ -32,12 +32,12 @@ */ #ifndef GNUTLS_LIB_NETTLE_GOST_NETTLE_WRITE_H -# define GNUTLS_LIB_NETTLE_GOST_NETTLE_WRITE_H +#define GNUTLS_LIB_NETTLE_GOST_NETTLE_WRITE_H /* For size_t */ -# include +#include -# include +#include /* Write the word array at SRC to the byte array at DST, using little endian (le) or big endian (be) byte order, and truncating the @@ -45,14 +45,14 @@ /* FIXME: Use a macro shortcut to memcpy for native endianness. */ void -# define _nettle_write_be32 _gnutls_nettle_ecc_write_be32 +#define _nettle_write_be32 _gnutls_nettle_ecc_write_be32 _nettle_write_be32(size_t length, uint8_t * dst, const uint32_t * src); void -# define _nettle_write_le32 _gnutls_nettle_ecc_write_le32 +#define _nettle_write_le32 _gnutls_nettle_ecc_write_le32 _nettle_write_le32(size_t length, uint8_t * dst, const uint32_t * src); void -# define _nettle_write_le64 _gnutls_nettle_ecc_write_le64 +#define _nettle_write_le64 _gnutls_nettle_ecc_write_le64 _nettle_write_le64(size_t length, uint8_t * dst, const uint64_t * src); -#endif /* GNUTLS_LIB_NETTLE_GOST_NETTLE_WRITE_H */ +#endif /* GNUTLS_LIB_NETTLE_GOST_NETTLE_WRITE_H */ diff --git a/lib/nettle/gost/streebog-meta.c b/lib/nettle/gost/streebog-meta.c index 3b36f2f447..0b81345b95 100644 --- a/lib/nettle/gost/streebog-meta.c +++ b/lib/nettle/gost/streebog-meta.c @@ -30,19 +30,19 @@ */ #if HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #ifndef HAVE_NETTLE_STREEBOG512_UPDATE -# include +#include -# include +#include -# include "streebog.h" +#include "streebog.h" -const struct nettle_hash nettle_streebog512 - = _NETTLE_HASH(streebog512, STREEBOG512); +const struct nettle_hash nettle_streebog512 = + _NETTLE_HASH(streebog512, STREEBOG512); -const struct nettle_hash nettle_streebog256 - = _NETTLE_HASH(streebog256, STREEBOG256); +const struct nettle_hash nettle_streebog256 = + _NETTLE_HASH(streebog256, STREEBOG256); #endif diff --git a/lib/nettle/gost/streebog.c b/lib/nettle/gost/streebog.c index bb849c672f..ce5b8b8fae 100644 --- a/lib/nettle/gost/streebog.c +++ b/lib/nettle/gost/streebog.c @@ -32,1121 +32,775 @@ */ #if HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #ifndef HAVE_NETTLE_STREEBOG512_UPDATE -# include +#include -# include -# include +#include +#include -# include "streebog.h" +#include "streebog.h" -# include -# include "nettle-write.h" +#include +#include "nettle-write.h" /* Pre-computed results of multiplication of bytes on A and reordered with Pi[]. */ static const uint64_t streebog_table[8][256] = { /* 0 */ - {0xd01f715b5c7ef8e6ULL, 0x16fa240980778325ULL, - 0xa8a42e857ee049c8ULL, 0x6ac1068fa186465bULL, - 0x6e417bd7a2e9320bULL, 0x665c8167a437daabULL, - 0x7666681aa89617f6ULL, 0x4b959163700bdcf5ULL, - 0xf14be6b78df36248ULL, 0xc585bd689a625cffULL, - 0x9557d7fca67d82cbULL, 0x89f0b969af6dd366ULL, - 0xb0833d48749f6c35ULL, 0xa1998c23b1ecbc7cULL, - 0x8d70c431ac02a736ULL, 0xd6dfbc2fd0a8b69eULL, - 0x37aeb3e551fa198bULL, 0x0b7d128a40b5cf9cULL, - 0x5a8f2008b5780cbcULL, 0xedec882284e333e5ULL, - 0xd25fc177d3c7c2ceULL, 0x5e0f5d50b61778ecULL, - 0x1d873683c0c24cb9ULL, 0xad040bcbb45d208cULL, - 0x2f89a0285b853c76ULL, 0x5732fff6791b8d58ULL, - 0x3e9311439ef6ec3fULL, 0xc9183a809fd3c00fULL, - 0x83adf3f5260a01eeULL, 0xa6791941f4e8ef10ULL, - 0x103ae97d0ca1cd5dULL, 0x2ce948121dee1b4aULL, - 0x39738421dbf2bf53ULL, 0x093da2a6cf0cf5b4ULL, - 0xcd9847d89cbcb45fULL, 0xf9561c078b2d8ae8ULL, - 0x9c6a755a6971777fULL, 0xbc1ebaa0712ef0c5ULL, - 0x72e61542abf963a6ULL, 0x78bb5fde229eb12eULL, - 0x14ba94250fceb90dULL, 0x844d6697630e5282ULL, - 0x98ea08026a1e032fULL, 0xf06bbea144217f5cULL, - 0xdb6263d11ccb377aULL, 0x641c314b2b8ee083ULL, - 0x320e96ab9b4770cfULL, 0x1ee7deb986a96b85ULL, - 0xe96cf57a878c47b5ULL, 0xfdd6615f8842feb8ULL, - 0xc83862965601dd1bULL, 0x2ea9f83e92572162ULL, - 0xf876441142ff97fcULL, 0xeb2c455608357d9dULL, - 0x5612a7e0b0c9904cULL, 0x6c01cbfb2d500823ULL, - 0x4548a6a7fa037a2dULL, 0xabc4c6bf388b6ef4ULL, - 0xbade77d4fdf8bebdULL, 0x799b07c8eb4cac3aULL, - 0x0c9d87e805b19cf0ULL, 0xcb588aac106afa27ULL, - 0xea0c1d40c1e76089ULL, 0x2869354a1e816f1aULL, - 0xff96d17307fbc490ULL, 0x9f0a9d602f1a5043ULL, - 0x96373fc6e016a5f7ULL, 0x5292dab8b3a6e41cULL, - 0x9b8ae0382c752413ULL, 0x4f15ec3b7364a8a5ULL, - 0x3fb349555724f12bULL, 0xc7c50d4415db66d7ULL, - 0x92b7429ee379d1a7ULL, 0xd37f99611a15dfdaULL, - 0x231427c05e34a086ULL, 0xa439a96d7b51d538ULL, - 0xb403401077f01865ULL, 0xdda2aea5901d7902ULL, - 0x0a5d4a9c8967d288ULL, 0xc265280adf660f93ULL, - 0x8bb0094520d4e94eULL, 0x2a29856691385532ULL, - 0x42a833c5bf072941ULL, 0x73c64d54622b7eb2ULL, - 0x07e095624504536cULL, 0x8a905153e906f45aULL, - 0x6f6123c16b3b2f1fULL, 0xc6e55552dc097bc3ULL, - 0x4468feb133d16739ULL, 0xe211e7f0c7398829ULL, - 0xa2f96419f7879b40ULL, 0x19074bdbc3ad38e9ULL, - 0xf4ebc3f9474e0b0cULL, 0x43886bd376d53455ULL, - 0xd8028beb5aa01046ULL, 0x51f23282f5cdc320ULL, - 0xe7b1c2be0d84e16dULL, 0x081dfab006dee8a0ULL, - 0x3b33340d544b857bULL, 0x7f5bcabc679ae242ULL, - 0x0edd37c48a08a6d8ULL, 0x81ed43d9a9b33bc6ULL, - 0xb1a3655ebd4d7121ULL, 0x69a1eeb5e7ed6167ULL, - 0xf6ab73d5c8f73124ULL, 0x1a67a3e185c61fd5ULL, - 0x2dc91004d43c065eULL, 0x0240b02c8fb93a28ULL, - 0x90f7f2b26cc0eb8fULL, 0x3cd3a16f114fd617ULL, - 0xaae49ea9f15973e0ULL, 0x06c0cd748cd64e78ULL, - 0xda423bc7d5192a6eULL, 0xc345701c16b41287ULL, - 0x6d2193ede4821537ULL, 0xfcf639494190e3acULL, - 0x7c3b228621f1c57eULL, 0xfb16ac2b0494b0c0ULL, - 0xbf7e529a3745d7f9ULL, 0x6881b6a32e3f7c73ULL, - 0xca78d2bad9b8e733ULL, 0xbbfe2fc2342aa3a9ULL, - 0x0dbddffecc6381e4ULL, 0x70a6a56e2440598eULL, - 0xe4d12a844befc651ULL, 0x8c509c2765d0ba22ULL, - 0xee8c6018c28814d9ULL, 0x17da7c1f49a59e31ULL, - 0x609c4c1328e194d3ULL, 0xb3e3d57232f44b09ULL, - 0x91d7aaa4a512f69bULL, 0x0ffd6fd243dabbccULL, - 0x50d26a943c1fde34ULL, 0x6be15e9968545b4fULL, - 0x94778fea6faf9fdfULL, 0x2b09dd7058ea4826ULL, - 0x677cd9716de5c7bfULL, 0x49d5214fffb2e6ddULL, - 0x0360e83a466b273cULL, 0x1fc786af4f7b7691ULL, - 0xa0b9d435783ea168ULL, 0xd49f0c035f118cb6ULL, - 0x01205816c9d21d14ULL, 0xac2453dd7d8f3d98ULL, - 0x545217cc3f70aa64ULL, 0x26b4028e9489c9c2ULL, - 0xdec2469fd6765e3eULL, 0x04807d58036f7450ULL, - 0xe5f17292823ddb45ULL, 0xf30b569b024a5860ULL, - 0x62dcfc3fa758aefbULL, 0xe84cad6c4e5e5aa1ULL, - 0xccb81fce556ea94bULL, 0x53b282ae7a74f908ULL, - 0x1b47fbf74c1402c1ULL, 0x368eebf39828049fULL, - 0x7afbeff2ad278b06ULL, 0xbe5e0a8cfe97caedULL, - 0xcfd8f7f413058e77ULL, 0xf78b2bc301252c30ULL, - 0x4d555c17fcdd928dULL, 0x5f2f05467fc565f8ULL, - 0x24f4b2a21b30f3eaULL, 0x860dd6bbecb768aaULL, - 0x4c750401350f8f99ULL, 0x0000000000000000ULL, - 0xecccd0344d312ef1ULL, 0xb5231806be220571ULL, - 0xc105c030990d28afULL, 0x653c695de25cfd97ULL, - 0x159acc33c61ca419ULL, 0xb89ec7f872418495ULL, - 0xa9847693b73254dcULL, 0x58cf90243ac13694ULL, - 0x59efc832f3132b80ULL, 0x5c4fed7c39ae42c4ULL, - 0x828dabe3efd81cfaULL, 0xd13f294d95ace5f2ULL, - 0x7d1b7a90e823d86aULL, 0xb643f03cf849224dULL, - 0x3df3f979d89dcb03ULL, 0x7426d836272f2ddeULL, - 0xdfe21e891fa4432aULL, 0x3a136c1b9d99986fULL, - 0xfa36f43dcd46add4ULL, 0xc025982650df35bbULL, - 0x856d3e81aadc4f96ULL, 0xc4a5e57e53b041ebULL, - 0x4708168b75ba4005ULL, 0xaf44bbe73be41aa4ULL, - 0x971767d029c4b8e3ULL, 0xb9be9feebb939981ULL, - 0x215497ecd18d9aaeULL, 0x316e7e91dd2c57f3ULL, - 0xcef8afe2dad79363ULL, 0x3853dc371220a247ULL, - 0x35ee03c9de4323a3ULL, 0xe6919aa8c456fc79ULL, - 0xe05157dc4880b201ULL, 0x7bdbb7e464f59612ULL, - 0x127a59518318f775ULL, 0x332ecebd52956ddbULL, - 0x8f30741d23bb9d1eULL, 0xd922d3fd93720d52ULL, - 0x7746300c61440ae2ULL, 0x25d4eab4d2e2eefeULL, - 0x75068020eefd30caULL, 0x135a01474acaea61ULL, - 0x304e268714fe4ae7ULL, 0xa519f17bb283c82cULL, - 0xdc82f6b359cf6416ULL, 0x5baf781e7caa11a8ULL, - 0xb2c38d64fb26561dULL, 0x34ce5bdf17913eb7ULL, - 0x5d6fb56af07c5fd0ULL, 0x182713cd0a7f25fdULL, - 0x9e2ac576e6c84d57ULL, 0x9aaab82ee5a73907ULL, - 0xa3d93c0f3e558654ULL, 0x7e7b92aaae48ff56ULL, - 0x872d8ead256575beULL, 0x41c8dbfff96c0e7dULL, - 0x99ca5014a3cc1e3bULL, 0x40e883e930be1369ULL, - 0x1ca76e95091051adULL, 0x4e35b42dbab6b5b1ULL, - 0x05a0254ecabd6944ULL, 0xe1710fca8152af15ULL, - 0xf22b0e8dcb984574ULL, 0xb763a82a319b3f59ULL, - 0x63fca4296e8ab3efULL, 0x9d4a2d4ca0a36a6bULL, - 0xe331bfe60eeb953dULL, 0xd5bf541596c391a2ULL, - 0xf5cb9bef8e9c1618ULL, 0x46284e9dbc685d11ULL, - 0x2074cffa185f87baULL, 0xbd3ee2b6b8fcedd1ULL, - 0xae64e3f1f23607b0ULL, 0xfeb68965ce29d984ULL, - 0x55724fdaf6a2b770ULL, 0x29496d5cd753720eULL, - 0xa75941573d3af204ULL, 0x8e102c0bea69800aULL, - 0x111ab16bc573d049ULL, 0xd7ffe439197aab8aULL, - 0xefac380e0b5a09cdULL, 0x48f579593660fbc9ULL, - 0x22347fd697e6bd92ULL, 0x61bc1405e13389c7ULL, - 0x4ab5c975b9d9c1e1ULL, 0x80cd1bcf606126d2ULL, - 0x7186fd78ed92449aULL, 0x93971a882aabccb3ULL, - 0x88d0e17f66bfce72ULL, 0x27945a985d5bd4d6ULL}, + { 0xd01f715b5c7ef8e6ULL, 0x16fa240980778325ULL, 0xa8a42e857ee049c8ULL, + 0x6ac1068fa186465bULL, 0x6e417bd7a2e9320bULL, 0x665c8167a437daabULL, + 0x7666681aa89617f6ULL, 0x4b959163700bdcf5ULL, 0xf14be6b78df36248ULL, + 0xc585bd689a625cffULL, 0x9557d7fca67d82cbULL, 0x89f0b969af6dd366ULL, + 0xb0833d48749f6c35ULL, 0xa1998c23b1ecbc7cULL, 0x8d70c431ac02a736ULL, + 0xd6dfbc2fd0a8b69eULL, 0x37aeb3e551fa198bULL, 0x0b7d128a40b5cf9cULL, + 0x5a8f2008b5780cbcULL, 0xedec882284e333e5ULL, 0xd25fc177d3c7c2ceULL, + 0x5e0f5d50b61778ecULL, 0x1d873683c0c24cb9ULL, 0xad040bcbb45d208cULL, + 0x2f89a0285b853c76ULL, 0x5732fff6791b8d58ULL, 0x3e9311439ef6ec3fULL, + 0xc9183a809fd3c00fULL, 0x83adf3f5260a01eeULL, 0xa6791941f4e8ef10ULL, + 0x103ae97d0ca1cd5dULL, 0x2ce948121dee1b4aULL, 0x39738421dbf2bf53ULL, + 0x093da2a6cf0cf5b4ULL, 0xcd9847d89cbcb45fULL, 0xf9561c078b2d8ae8ULL, + 0x9c6a755a6971777fULL, 0xbc1ebaa0712ef0c5ULL, 0x72e61542abf963a6ULL, + 0x78bb5fde229eb12eULL, 0x14ba94250fceb90dULL, 0x844d6697630e5282ULL, + 0x98ea08026a1e032fULL, 0xf06bbea144217f5cULL, 0xdb6263d11ccb377aULL, + 0x641c314b2b8ee083ULL, 0x320e96ab9b4770cfULL, 0x1ee7deb986a96b85ULL, + 0xe96cf57a878c47b5ULL, 0xfdd6615f8842feb8ULL, 0xc83862965601dd1bULL, + 0x2ea9f83e92572162ULL, 0xf876441142ff97fcULL, 0xeb2c455608357d9dULL, + 0x5612a7e0b0c9904cULL, 0x6c01cbfb2d500823ULL, 0x4548a6a7fa037a2dULL, + 0xabc4c6bf388b6ef4ULL, 0xbade77d4fdf8bebdULL, 0x799b07c8eb4cac3aULL, + 0x0c9d87e805b19cf0ULL, 0xcb588aac106afa27ULL, 0xea0c1d40c1e76089ULL, + 0x2869354a1e816f1aULL, 0xff96d17307fbc490ULL, 0x9f0a9d602f1a5043ULL, + 0x96373fc6e016a5f7ULL, 0x5292dab8b3a6e41cULL, 0x9b8ae0382c752413ULL, + 0x4f15ec3b7364a8a5ULL, 0x3fb349555724f12bULL, 0xc7c50d4415db66d7ULL, + 0x92b7429ee379d1a7ULL, 0xd37f99611a15dfdaULL, 0x231427c05e34a086ULL, + 0xa439a96d7b51d538ULL, 0xb403401077f01865ULL, 0xdda2aea5901d7902ULL, + 0x0a5d4a9c8967d288ULL, 0xc265280adf660f93ULL, 0x8bb0094520d4e94eULL, + 0x2a29856691385532ULL, 0x42a833c5bf072941ULL, 0x73c64d54622b7eb2ULL, + 0x07e095624504536cULL, 0x8a905153e906f45aULL, 0x6f6123c16b3b2f1fULL, + 0xc6e55552dc097bc3ULL, 0x4468feb133d16739ULL, 0xe211e7f0c7398829ULL, + 0xa2f96419f7879b40ULL, 0x19074bdbc3ad38e9ULL, 0xf4ebc3f9474e0b0cULL, + 0x43886bd376d53455ULL, 0xd8028beb5aa01046ULL, 0x51f23282f5cdc320ULL, + 0xe7b1c2be0d84e16dULL, 0x081dfab006dee8a0ULL, 0x3b33340d544b857bULL, + 0x7f5bcabc679ae242ULL, 0x0edd37c48a08a6d8ULL, 0x81ed43d9a9b33bc6ULL, + 0xb1a3655ebd4d7121ULL, 0x69a1eeb5e7ed6167ULL, 0xf6ab73d5c8f73124ULL, + 0x1a67a3e185c61fd5ULL, 0x2dc91004d43c065eULL, 0x0240b02c8fb93a28ULL, + 0x90f7f2b26cc0eb8fULL, 0x3cd3a16f114fd617ULL, 0xaae49ea9f15973e0ULL, + 0x06c0cd748cd64e78ULL, 0xda423bc7d5192a6eULL, 0xc345701c16b41287ULL, + 0x6d2193ede4821537ULL, 0xfcf639494190e3acULL, 0x7c3b228621f1c57eULL, + 0xfb16ac2b0494b0c0ULL, 0xbf7e529a3745d7f9ULL, 0x6881b6a32e3f7c73ULL, + 0xca78d2bad9b8e733ULL, 0xbbfe2fc2342aa3a9ULL, 0x0dbddffecc6381e4ULL, + 0x70a6a56e2440598eULL, 0xe4d12a844befc651ULL, 0x8c509c2765d0ba22ULL, + 0xee8c6018c28814d9ULL, 0x17da7c1f49a59e31ULL, 0x609c4c1328e194d3ULL, + 0xb3e3d57232f44b09ULL, 0x91d7aaa4a512f69bULL, 0x0ffd6fd243dabbccULL, + 0x50d26a943c1fde34ULL, 0x6be15e9968545b4fULL, 0x94778fea6faf9fdfULL, + 0x2b09dd7058ea4826ULL, 0x677cd9716de5c7bfULL, 0x49d5214fffb2e6ddULL, + 0x0360e83a466b273cULL, 0x1fc786af4f7b7691ULL, 0xa0b9d435783ea168ULL, + 0xd49f0c035f118cb6ULL, 0x01205816c9d21d14ULL, 0xac2453dd7d8f3d98ULL, + 0x545217cc3f70aa64ULL, 0x26b4028e9489c9c2ULL, 0xdec2469fd6765e3eULL, + 0x04807d58036f7450ULL, 0xe5f17292823ddb45ULL, 0xf30b569b024a5860ULL, + 0x62dcfc3fa758aefbULL, 0xe84cad6c4e5e5aa1ULL, 0xccb81fce556ea94bULL, + 0x53b282ae7a74f908ULL, 0x1b47fbf74c1402c1ULL, 0x368eebf39828049fULL, + 0x7afbeff2ad278b06ULL, 0xbe5e0a8cfe97caedULL, 0xcfd8f7f413058e77ULL, + 0xf78b2bc301252c30ULL, 0x4d555c17fcdd928dULL, 0x5f2f05467fc565f8ULL, + 0x24f4b2a21b30f3eaULL, 0x860dd6bbecb768aaULL, 0x4c750401350f8f99ULL, + 0x0000000000000000ULL, 0xecccd0344d312ef1ULL, 0xb5231806be220571ULL, + 0xc105c030990d28afULL, 0x653c695de25cfd97ULL, 0x159acc33c61ca419ULL, + 0xb89ec7f872418495ULL, 0xa9847693b73254dcULL, 0x58cf90243ac13694ULL, + 0x59efc832f3132b80ULL, 0x5c4fed7c39ae42c4ULL, 0x828dabe3efd81cfaULL, + 0xd13f294d95ace5f2ULL, 0x7d1b7a90e823d86aULL, 0xb643f03cf849224dULL, + 0x3df3f979d89dcb03ULL, 0x7426d836272f2ddeULL, 0xdfe21e891fa4432aULL, + 0x3a136c1b9d99986fULL, 0xfa36f43dcd46add4ULL, 0xc025982650df35bbULL, + 0x856d3e81aadc4f96ULL, 0xc4a5e57e53b041ebULL, 0x4708168b75ba4005ULL, + 0xaf44bbe73be41aa4ULL, 0x971767d029c4b8e3ULL, 0xb9be9feebb939981ULL, + 0x215497ecd18d9aaeULL, 0x316e7e91dd2c57f3ULL, 0xcef8afe2dad79363ULL, + 0x3853dc371220a247ULL, 0x35ee03c9de4323a3ULL, 0xe6919aa8c456fc79ULL, + 0xe05157dc4880b201ULL, 0x7bdbb7e464f59612ULL, 0x127a59518318f775ULL, + 0x332ecebd52956ddbULL, 0x8f30741d23bb9d1eULL, 0xd922d3fd93720d52ULL, + 0x7746300c61440ae2ULL, 0x25d4eab4d2e2eefeULL, 0x75068020eefd30caULL, + 0x135a01474acaea61ULL, 0x304e268714fe4ae7ULL, 0xa519f17bb283c82cULL, + 0xdc82f6b359cf6416ULL, 0x5baf781e7caa11a8ULL, 0xb2c38d64fb26561dULL, + 0x34ce5bdf17913eb7ULL, 0x5d6fb56af07c5fd0ULL, 0x182713cd0a7f25fdULL, + 0x9e2ac576e6c84d57ULL, 0x9aaab82ee5a73907ULL, 0xa3d93c0f3e558654ULL, + 0x7e7b92aaae48ff56ULL, 0x872d8ead256575beULL, 0x41c8dbfff96c0e7dULL, + 0x99ca5014a3cc1e3bULL, 0x40e883e930be1369ULL, 0x1ca76e95091051adULL, + 0x4e35b42dbab6b5b1ULL, 0x05a0254ecabd6944ULL, 0xe1710fca8152af15ULL, + 0xf22b0e8dcb984574ULL, 0xb763a82a319b3f59ULL, 0x63fca4296e8ab3efULL, + 0x9d4a2d4ca0a36a6bULL, 0xe331bfe60eeb953dULL, 0xd5bf541596c391a2ULL, + 0xf5cb9bef8e9c1618ULL, 0x46284e9dbc685d11ULL, 0x2074cffa185f87baULL, + 0xbd3ee2b6b8fcedd1ULL, 0xae64e3f1f23607b0ULL, 0xfeb68965ce29d984ULL, + 0x55724fdaf6a2b770ULL, 0x29496d5cd753720eULL, 0xa75941573d3af204ULL, + 0x8e102c0bea69800aULL, 0x111ab16bc573d049ULL, 0xd7ffe439197aab8aULL, + 0xefac380e0b5a09cdULL, 0x48f579593660fbc9ULL, 0x22347fd697e6bd92ULL, + 0x61bc1405e13389c7ULL, 0x4ab5c975b9d9c1e1ULL, 0x80cd1bcf606126d2ULL, + 0x7186fd78ed92449aULL, 0x93971a882aabccb3ULL, 0x88d0e17f66bfce72ULL, + 0x27945a985d5bd4d6ULL }, /* 1 */ - {0xde553f8c05a811c8ULL, 0x1906b59631b4f565ULL, - 0x436e70d6b1964ff7ULL, 0x36d343cb8b1e9d85ULL, - 0x843dfacc858aab5aULL, 0xfdfc95c299bfc7f9ULL, - 0x0f634bdea1d51fa2ULL, 0x6d458b3b76efb3cdULL, - 0x85c3f77cf8593f80ULL, 0x3c91315fbe737cb2ULL, - 0x2148b03366ace398ULL, 0x18f8b8264c6761bfULL, - 0xc830c1c495c9fb0fULL, 0x981a76102086a0aaULL, - 0xaa16012142f35760ULL, 0x35cc54060c763cf6ULL, - 0x42907d66cc45db2dULL, 0x8203d44b965af4bcULL, - 0x3d6f3cefc3a0e868ULL, 0xbc73ff69d292bda7ULL, - 0x8722ed0102e20a29ULL, 0x8f8185e8cd34deb7ULL, - 0x9b0561dda7ee01d9ULL, 0x5335a0193227fad6ULL, - 0xc9cecc74e81a6fd5ULL, 0x54f5832e5c2431eaULL, - 0x99e47ba05d553470ULL, 0xf7bee756acd226ceULL, - 0x384e05a5571816fdULL, 0xd1367452a47d0e6aULL, - 0xf29fde1c386ad85bULL, 0x320c77316275f7caULL, - 0xd0c879e2d9ae9ab0ULL, 0xdb7406c69110ef5dULL, - 0x45505e51a2461011ULL, 0xfc029872e46c5323ULL, - 0xfa3cb6f5f7bc0cc5ULL, 0x031f17cd8768a173ULL, - 0xbd8df2d9af41297dULL, 0x9d3b4f5ab43e5e3fULL, - 0x4071671b36feee84ULL, 0x716207e7d3e3b83dULL, - 0x48d20ff2f9283a1aULL, 0x27769eb4757cbc7eULL, - 0x5c56ebc793f2e574ULL, 0xa48b474f9ef5dc18ULL, - 0x52cbada94ff46e0cULL, 0x60c7da982d8199c6ULL, - 0x0e9d466edc068b78ULL, 0x4eec2175eaf865fcULL, - 0x550b8e9e21f7a530ULL, 0x6b7ba5bc653fec2bULL, - 0x5eb7f1ba6949d0ddULL, 0x57ea94e3db4c9099ULL, - 0xf640eae6d101b214ULL, 0xdd4a284182c0b0bbULL, - 0xff1d8fbf6304f250ULL, 0xb8accb933bf9d7e8ULL, - 0xe8867c478eb68c4dULL, 0x3f8e2692391bddc1ULL, - 0xcb2fd60912a15a7cULL, 0xaec935dbab983d2fULL, - 0xf55ffd2b56691367ULL, 0x80e2ce366ce1c115ULL, - 0x179bf3f8edb27e1dULL, 0x01fe0db07dd394daULL, - 0xda8a0b76ecc37b87ULL, 0x44ae53e1df9584cbULL, - 0xb310b4b77347a205ULL, 0xdfab323c787b8512ULL, - 0x3b511268d070b78eULL, 0x65e6e3d2b9396753ULL, - 0x6864b271e2574d58ULL, 0x259784c98fc789d7ULL, - 0x02e11a7dfabb35a9ULL, 0x8841a6dfa337158bULL, - 0x7ade78c39b5dcdd0ULL, 0xb7cf804d9a2cc84aULL, - 0x20b6bd831b7f7742ULL, 0x75bd331d3a88d272ULL, - 0x418f6aab4b2d7a5eULL, 0xd9951cbb6babdaf4ULL, - 0xb6318dfde7ff5c90ULL, 0x1f389b112264aa83ULL, - 0x492c024284fbaec0ULL, 0xe33a0363c608f9a0ULL, - 0x2688930408af28a4ULL, 0xc7538a1a341ce4adULL, - 0x5da8e677ee2171aeULL, 0x8c9e92254a5c7fc4ULL, - 0x63d8cd55aae938b5ULL, 0x29ebd8daa97a3706ULL, - 0x959827b37be88aa1ULL, 0x1484e4356adadf6eULL, - 0xa7945082199d7d6bULL, 0xbf6ce8a455fa1cd4ULL, - 0x9cc542eac9edcae5ULL, 0x79c16f0e1c356ca3ULL, - 0x89bfab6fdee48151ULL, 0xd4174d1830c5f0ffULL, - 0x9258048415eb419dULL, 0x6139d72850520d1cULL, - 0x6a85a80c18ec78f1ULL, 0xcd11f88e0171059aULL, - 0xcceff53e7ca29140ULL, 0xd229639f2315af19ULL, - 0x90b91ef9ef507434ULL, 0x5977d28d074a1be1ULL, - 0x311360fce51d56b9ULL, 0xc093a92d5a1f2f91ULL, - 0x1a19a25bb6dc5416ULL, 0xeb996b8a09de2d3eULL, - 0xfee3820f1ed7668aULL, 0xd7085ad5b7ad518cULL, - 0x7fff41890fe53345ULL, 0xec5948bd67dde602ULL, - 0x2fd5f65dbaaa68e0ULL, 0xa5754affe32648c2ULL, - 0xf8ddac880d07396cULL, 0x6fa491468c548664ULL, - 0x0c7c5c1326bdbed1ULL, 0x4a33158f03930fb3ULL, - 0x699abfc19f84d982ULL, 0xe4fa2054a80b329cULL, - 0x6707f9af438252faULL, 0x08a368e9cfd6d49eULL, - 0x47b1442c58fd25b8ULL, 0xbbb3dc5ebc91769bULL, - 0x1665fe489061eac7ULL, 0x33f27a811fa66310ULL, - 0x93a609346838d547ULL, 0x30ed6d4c98cec263ULL, - 0x1dd9816cd8df9f2aULL, 0x94662a03063b1e7bULL, - 0x83fdd9fbeb896066ULL, 0x7b207573e68e590aULL, - 0x5f49fc0a149a4407ULL, 0x343259b671a5a82cULL, - 0xfbc2bb458a6f981fULL, 0xc272b350a0a41a38ULL, - 0x3aaf1fd8ada32354ULL, 0x6cbb868b0b3c2717ULL, - 0xa2b569c88d2583feULL, 0xf180c9d1bf027928ULL, - 0xaf37386bd64ba9f5ULL, 0x12bacab2790a8088ULL, - 0x4c0d3b0810435055ULL, 0xb2eeb9070e9436dfULL, - 0xc5b29067cea7d104ULL, 0xdcb425f1ff132461ULL, - 0x4f122cc5972bf126ULL, 0xac282fa651230886ULL, - 0xe7e537992f6393efULL, 0xe61b3a2952b00735ULL, - 0x709c0a57ae302ce7ULL, 0xe02514ae416058d3ULL, - 0xc44c9dd7b37445deULL, 0x5a68c5408022ba92ULL, - 0x1c278cdca50c0bf0ULL, 0x6e5a9cf6f18712beULL, - 0x86dce0b17f319ef3ULL, 0x2d34ec2040115d49ULL, - 0x4bcd183f7e409b69ULL, 0x2815d56ad4a9a3dcULL, - 0x24698979f2141d0dULL, 0x0000000000000000ULL, - 0x1ec696a15fb73e59ULL, 0xd86b110b16784e2eULL, - 0x8e7f8858b0e74a6dULL, 0x063e2e8713d05fe6ULL, - 0xe2c40ed3bbdb6d7aULL, 0xb1f1aeca89fc97acULL, - 0xe1db191e3cb3cc09ULL, 0x6418ee62c4eaf389ULL, - 0xc6ad87aa49cf7077ULL, 0xd6f65765ca7ec556ULL, - 0x9afb6c6dda3d9503ULL, 0x7ce05644888d9236ULL, - 0x8d609f95378feb1eULL, 0x23a9aa4e9c17d631ULL, - 0x6226c0e5d73aac6fULL, 0x56149953a69f0443ULL, - 0xeeb852c09d66d3abULL, 0x2b0ac2a753c102afULL, - 0x07c023376e03cb3cULL, 0x2ccae1903dc2c993ULL, - 0xd3d76e2f5ec63bc3ULL, 0x9e2458973356ff4cULL, - 0xa66a5d32644ee9b1ULL, 0x0a427294356de137ULL, - 0x783f62be61e6f879ULL, 0x1344c70204d91452ULL, - 0x5b96c8f0fdf12e48ULL, 0xa90916ecc59bf613ULL, - 0xbe92e5142829880eULL, 0x727d102a548b194eULL, - 0x1be7afebcb0fc0ccULL, 0x3e702b2244c8491bULL, - 0xd5e940a84d166425ULL, 0x66f9f41f3e51c620ULL, - 0xabe80c913f20c3baULL, 0xf07ec461c2d1edf2ULL, - 0xf361d3ac45b94c81ULL, 0x0521394a94b8fe95ULL, - 0xadd622162cf09c5cULL, 0xe97871f7f3651897ULL, - 0xf4a1f09b2bba87bdULL, 0x095d6559b2054044ULL, - 0x0bbc7f2448be75edULL, 0x2af4cf172e129675ULL, - 0x157ae98517094bb4ULL, 0x9fda55274e856b96ULL, - 0x914713499283e0eeULL, 0xb952c623462a4332ULL, - 0x74433ead475b46a8ULL, 0x8b5eb112245fb4f8ULL, - 0xa34b6478f0f61724ULL, 0x11a5dd7ffe6221fbULL, - 0xc16da49d27ccbb4bULL, 0x76a224d0bde07301ULL, - 0x8aa0bca2598c2022ULL, 0x4df336b86d90c48fULL, - 0xea67663a740db9e4ULL, 0xef465f70e0b54771ULL, - 0x39b008152acb8227ULL, 0x7d1e5bf4f55e06ecULL, - 0x105bd0cf83b1b521ULL, 0x775c2960c033e7dbULL, - 0x7e014c397236a79fULL, 0x811cc386113255cfULL, - 0xeda7450d1a0e72d8ULL, 0x5889df3d7a998f3bULL, - 0x2e2bfbedc779fc3aULL, 0xce0eef438619a4e9ULL, - 0x372d4e7bf6cd095fULL, 0x04df34fae96b6a4fULL, - 0xf923a13870d4adb6ULL, 0xa1aa7e050a4d228dULL, - 0xa8f71b5cb84862c9ULL, 0xb52e9a306097fde3ULL, - 0x0d8251a35b6e2a0bULL, 0x2257a7fee1c442ebULL, - 0x73831d9a29588d94ULL, 0x51d4ba64c89ccf7fULL, - 0x502ab7d4b54f5ba5ULL, 0x97793dce8153bf08ULL, - 0xe5042de4d5d8a646ULL, 0x9687307efc802bd2ULL, - 0xa05473b5779eb657ULL, 0xb4d097801d446939ULL, - 0xcff0e2f3fbca3033ULL, 0xc38cbee0dd778ee2ULL, - 0x464f499c252eb162ULL, 0xcad1dbb96f72cea6ULL, - 0xba4dd1eec142e241ULL, 0xb00fa37af42f0376ULL}, + { 0xde553f8c05a811c8ULL, 0x1906b59631b4f565ULL, 0x436e70d6b1964ff7ULL, + 0x36d343cb8b1e9d85ULL, 0x843dfacc858aab5aULL, 0xfdfc95c299bfc7f9ULL, + 0x0f634bdea1d51fa2ULL, 0x6d458b3b76efb3cdULL, 0x85c3f77cf8593f80ULL, + 0x3c91315fbe737cb2ULL, 0x2148b03366ace398ULL, 0x18f8b8264c6761bfULL, + 0xc830c1c495c9fb0fULL, 0x981a76102086a0aaULL, 0xaa16012142f35760ULL, + 0x35cc54060c763cf6ULL, 0x42907d66cc45db2dULL, 0x8203d44b965af4bcULL, + 0x3d6f3cefc3a0e868ULL, 0xbc73ff69d292bda7ULL, 0x8722ed0102e20a29ULL, + 0x8f8185e8cd34deb7ULL, 0x9b0561dda7ee01d9ULL, 0x5335a0193227fad6ULL, + 0xc9cecc74e81a6fd5ULL, 0x54f5832e5c2431eaULL, 0x99e47ba05d553470ULL, + 0xf7bee756acd226ceULL, 0x384e05a5571816fdULL, 0xd1367452a47d0e6aULL, + 0xf29fde1c386ad85bULL, 0x320c77316275f7caULL, 0xd0c879e2d9ae9ab0ULL, + 0xdb7406c69110ef5dULL, 0x45505e51a2461011ULL, 0xfc029872e46c5323ULL, + 0xfa3cb6f5f7bc0cc5ULL, 0x031f17cd8768a173ULL, 0xbd8df2d9af41297dULL, + 0x9d3b4f5ab43e5e3fULL, 0x4071671b36feee84ULL, 0x716207e7d3e3b83dULL, + 0x48d20ff2f9283a1aULL, 0x27769eb4757cbc7eULL, 0x5c56ebc793f2e574ULL, + 0xa48b474f9ef5dc18ULL, 0x52cbada94ff46e0cULL, 0x60c7da982d8199c6ULL, + 0x0e9d466edc068b78ULL, 0x4eec2175eaf865fcULL, 0x550b8e9e21f7a530ULL, + 0x6b7ba5bc653fec2bULL, 0x5eb7f1ba6949d0ddULL, 0x57ea94e3db4c9099ULL, + 0xf640eae6d101b214ULL, 0xdd4a284182c0b0bbULL, 0xff1d8fbf6304f250ULL, + 0xb8accb933bf9d7e8ULL, 0xe8867c478eb68c4dULL, 0x3f8e2692391bddc1ULL, + 0xcb2fd60912a15a7cULL, 0xaec935dbab983d2fULL, 0xf55ffd2b56691367ULL, + 0x80e2ce366ce1c115ULL, 0x179bf3f8edb27e1dULL, 0x01fe0db07dd394daULL, + 0xda8a0b76ecc37b87ULL, 0x44ae53e1df9584cbULL, 0xb310b4b77347a205ULL, + 0xdfab323c787b8512ULL, 0x3b511268d070b78eULL, 0x65e6e3d2b9396753ULL, + 0x6864b271e2574d58ULL, 0x259784c98fc789d7ULL, 0x02e11a7dfabb35a9ULL, + 0x8841a6dfa337158bULL, 0x7ade78c39b5dcdd0ULL, 0xb7cf804d9a2cc84aULL, + 0x20b6bd831b7f7742ULL, 0x75bd331d3a88d272ULL, 0x418f6aab4b2d7a5eULL, + 0xd9951cbb6babdaf4ULL, 0xb6318dfde7ff5c90ULL, 0x1f389b112264aa83ULL, + 0x492c024284fbaec0ULL, 0xe33a0363c608f9a0ULL, 0x2688930408af28a4ULL, + 0xc7538a1a341ce4adULL, 0x5da8e677ee2171aeULL, 0x8c9e92254a5c7fc4ULL, + 0x63d8cd55aae938b5ULL, 0x29ebd8daa97a3706ULL, 0x959827b37be88aa1ULL, + 0x1484e4356adadf6eULL, 0xa7945082199d7d6bULL, 0xbf6ce8a455fa1cd4ULL, + 0x9cc542eac9edcae5ULL, 0x79c16f0e1c356ca3ULL, 0x89bfab6fdee48151ULL, + 0xd4174d1830c5f0ffULL, 0x9258048415eb419dULL, 0x6139d72850520d1cULL, + 0x6a85a80c18ec78f1ULL, 0xcd11f88e0171059aULL, 0xcceff53e7ca29140ULL, + 0xd229639f2315af19ULL, 0x90b91ef9ef507434ULL, 0x5977d28d074a1be1ULL, + 0x311360fce51d56b9ULL, 0xc093a92d5a1f2f91ULL, 0x1a19a25bb6dc5416ULL, + 0xeb996b8a09de2d3eULL, 0xfee3820f1ed7668aULL, 0xd7085ad5b7ad518cULL, + 0x7fff41890fe53345ULL, 0xec5948bd67dde602ULL, 0x2fd5f65dbaaa68e0ULL, + 0xa5754affe32648c2ULL, 0xf8ddac880d07396cULL, 0x6fa491468c548664ULL, + 0x0c7c5c1326bdbed1ULL, 0x4a33158f03930fb3ULL, 0x699abfc19f84d982ULL, + 0xe4fa2054a80b329cULL, 0x6707f9af438252faULL, 0x08a368e9cfd6d49eULL, + 0x47b1442c58fd25b8ULL, 0xbbb3dc5ebc91769bULL, 0x1665fe489061eac7ULL, + 0x33f27a811fa66310ULL, 0x93a609346838d547ULL, 0x30ed6d4c98cec263ULL, + 0x1dd9816cd8df9f2aULL, 0x94662a03063b1e7bULL, 0x83fdd9fbeb896066ULL, + 0x7b207573e68e590aULL, 0x5f49fc0a149a4407ULL, 0x343259b671a5a82cULL, + 0xfbc2bb458a6f981fULL, 0xc272b350a0a41a38ULL, 0x3aaf1fd8ada32354ULL, + 0x6cbb868b0b3c2717ULL, 0xa2b569c88d2583feULL, 0xf180c9d1bf027928ULL, + 0xaf37386bd64ba9f5ULL, 0x12bacab2790a8088ULL, 0x4c0d3b0810435055ULL, + 0xb2eeb9070e9436dfULL, 0xc5b29067cea7d104ULL, 0xdcb425f1ff132461ULL, + 0x4f122cc5972bf126ULL, 0xac282fa651230886ULL, 0xe7e537992f6393efULL, + 0xe61b3a2952b00735ULL, 0x709c0a57ae302ce7ULL, 0xe02514ae416058d3ULL, + 0xc44c9dd7b37445deULL, 0x5a68c5408022ba92ULL, 0x1c278cdca50c0bf0ULL, + 0x6e5a9cf6f18712beULL, 0x86dce0b17f319ef3ULL, 0x2d34ec2040115d49ULL, + 0x4bcd183f7e409b69ULL, 0x2815d56ad4a9a3dcULL, 0x24698979f2141d0dULL, + 0x0000000000000000ULL, 0x1ec696a15fb73e59ULL, 0xd86b110b16784e2eULL, + 0x8e7f8858b0e74a6dULL, 0x063e2e8713d05fe6ULL, 0xe2c40ed3bbdb6d7aULL, + 0xb1f1aeca89fc97acULL, 0xe1db191e3cb3cc09ULL, 0x6418ee62c4eaf389ULL, + 0xc6ad87aa49cf7077ULL, 0xd6f65765ca7ec556ULL, 0x9afb6c6dda3d9503ULL, + 0x7ce05644888d9236ULL, 0x8d609f95378feb1eULL, 0x23a9aa4e9c17d631ULL, + 0x6226c0e5d73aac6fULL, 0x56149953a69f0443ULL, 0xeeb852c09d66d3abULL, + 0x2b0ac2a753c102afULL, 0x07c023376e03cb3cULL, 0x2ccae1903dc2c993ULL, + 0xd3d76e2f5ec63bc3ULL, 0x9e2458973356ff4cULL, 0xa66a5d32644ee9b1ULL, + 0x0a427294356de137ULL, 0x783f62be61e6f879ULL, 0x1344c70204d91452ULL, + 0x5b96c8f0fdf12e48ULL, 0xa90916ecc59bf613ULL, 0xbe92e5142829880eULL, + 0x727d102a548b194eULL, 0x1be7afebcb0fc0ccULL, 0x3e702b2244c8491bULL, + 0xd5e940a84d166425ULL, 0x66f9f41f3e51c620ULL, 0xabe80c913f20c3baULL, + 0xf07ec461c2d1edf2ULL, 0xf361d3ac45b94c81ULL, 0x0521394a94b8fe95ULL, + 0xadd622162cf09c5cULL, 0xe97871f7f3651897ULL, 0xf4a1f09b2bba87bdULL, + 0x095d6559b2054044ULL, 0x0bbc7f2448be75edULL, 0x2af4cf172e129675ULL, + 0x157ae98517094bb4ULL, 0x9fda55274e856b96ULL, 0x914713499283e0eeULL, + 0xb952c623462a4332ULL, 0x74433ead475b46a8ULL, 0x8b5eb112245fb4f8ULL, + 0xa34b6478f0f61724ULL, 0x11a5dd7ffe6221fbULL, 0xc16da49d27ccbb4bULL, + 0x76a224d0bde07301ULL, 0x8aa0bca2598c2022ULL, 0x4df336b86d90c48fULL, + 0xea67663a740db9e4ULL, 0xef465f70e0b54771ULL, 0x39b008152acb8227ULL, + 0x7d1e5bf4f55e06ecULL, 0x105bd0cf83b1b521ULL, 0x775c2960c033e7dbULL, + 0x7e014c397236a79fULL, 0x811cc386113255cfULL, 0xeda7450d1a0e72d8ULL, + 0x5889df3d7a998f3bULL, 0x2e2bfbedc779fc3aULL, 0xce0eef438619a4e9ULL, + 0x372d4e7bf6cd095fULL, 0x04df34fae96b6a4fULL, 0xf923a13870d4adb6ULL, + 0xa1aa7e050a4d228dULL, 0xa8f71b5cb84862c9ULL, 0xb52e9a306097fde3ULL, + 0x0d8251a35b6e2a0bULL, 0x2257a7fee1c442ebULL, 0x73831d9a29588d94ULL, + 0x51d4ba64c89ccf7fULL, 0x502ab7d4b54f5ba5ULL, 0x97793dce8153bf08ULL, + 0xe5042de4d5d8a646ULL, 0x9687307efc802bd2ULL, 0xa05473b5779eb657ULL, + 0xb4d097801d446939ULL, 0xcff0e2f3fbca3033ULL, 0xc38cbee0dd778ee2ULL, + 0x464f499c252eb162ULL, 0xcad1dbb96f72cea6ULL, 0xba4dd1eec142e241ULL, + 0xb00fa37af42f0376ULL }, /* 2 */ - {0xcce4cd3aa968b245ULL, 0x089d5484e80b7fafULL, - 0x638246c1b3548304ULL, 0xd2fe0ec8c2355492ULL, - 0xa7fbdf7ff2374eeeULL, 0x4df1600c92337a16ULL, - 0x84e503ea523b12fbULL, 0x0790bbfd53ab0c4aULL, - 0x198a780f38f6ea9dULL, 0x2ab30c8f55ec48cbULL, - 0xe0f7fed6b2c49db5ULL, 0xb6ecf3f422cadbdcULL, - 0x409c9a541358df11ULL, 0xd3ce8a56dfde3fe3ULL, - 0xc3e9224312c8c1a0ULL, 0x0d6dfa58816ba507ULL, - 0xddf3e1b179952777ULL, 0x04c02a42748bb1d9ULL, - 0x94c2abff9f2decb8ULL, 0x4f91752da8f8acf4ULL, - 0x78682befb169bf7bULL, 0xe1c77a48af2ff6c4ULL, - 0x0c5d7ec69c80ce76ULL, 0x4cc1e4928fd81167ULL, - 0xfeed3d24d9997b62ULL, 0x518bb6dfc3a54a23ULL, - 0x6dbf2d26151f9b90ULL, 0xb5bc624b05ea664fULL, - 0xe86aaa525acfe21aULL, 0x4801ced0fb53a0beULL, - 0xc91463e6c00868edULL, 0x1027a815cd16fe43ULL, - 0xf67069a0319204cdULL, 0xb04ccc976c8abce7ULL, - 0xc0b9b3fc35e87c33ULL, 0xf380c77c58f2de65ULL, - 0x50bb3241de4e2152ULL, 0xdf93f490435ef195ULL, - 0xf1e0d25d62390887ULL, 0xaf668bfb1a3c3141ULL, - 0xbc11b251f00a7291ULL, 0x73a5eed47e427d47ULL, - 0x25bee3f6ee4c3b2eULL, 0x43cc0beb34786282ULL, - 0xc824e778dde3039cULL, 0xf97d86d98a327728ULL, - 0xf2b043e24519b514ULL, 0xe297ebf7880f4b57ULL, - 0x3a94a49a98fab688ULL, 0x868516cb68f0c419ULL, - 0xeffa11af0964ee50ULL, 0xa4ab4ec0d517f37dULL, - 0xa9c6b498547c567aULL, 0x8e18424f80fbbbb6ULL, - 0x0bcdc53bcf2bc23cULL, 0x137739aaea3643d0ULL, - 0x2c1333ec1bac2ff0ULL, 0x8d48d3f0a7db0625ULL, - 0x1e1ac3f26b5de6d7ULL, 0xf520f81f16b2b95eULL, - 0x9f0f6ec450062e84ULL, 0x0130849e1deb6b71ULL, - 0xd45e31ab8c7533a9ULL, 0x652279a2fd14e43fULL, - 0x3209f01e70f1c927ULL, 0xbe71a770cac1a473ULL, - 0x0e3d6be7a64b1894ULL, 0x7ec8148cff29d840ULL, - 0xcb7476c7fac3be0fULL, 0x72956a4a63a91636ULL, - 0x37f95ec21991138fULL, 0x9e3fea5a4ded45f5ULL, - 0x7b38ba50964902e8ULL, 0x222e580bbde73764ULL, - 0x61e253e0899f55e6ULL, 0xfc8d2805e352ad80ULL, - 0x35994be3235ac56dULL, 0x09add01af5e014deULL, - 0x5e8659a6780539c6ULL, 0xb17c48097161d796ULL, - 0x026015213acbd6e2ULL, 0xd1ae9f77e515e901ULL, - 0xb7dc776a3f21b0adULL, 0xaba6a1b96eb78098ULL, - 0x9bcf4486248d9f5dULL, 0x582666c536455efdULL, - 0xfdbdac9bfeb9c6f1ULL, 0xc47999be4163cdeaULL, - 0x765540081722a7efULL, 0x3e548ed8ec710751ULL, - 0x3d041f67cb51bac2ULL, 0x7958af71ac82d40aULL, - 0x36c9da5c047a78feULL, 0xed9a048e33af38b2ULL, - 0x26ee7249c96c86bdULL, 0x900281bdeba65d61ULL, - 0x11172c8bd0fd9532ULL, 0xea0abf73600434f8ULL, - 0x42fc8f75299309f3ULL, 0x34a9cf7d3eb1ae1cULL, - 0x2b838811480723baULL, 0x5ce64c8742ceef24ULL, - 0x1adae9b01fd6570eULL, 0x3c349bf9d6bad1b3ULL, - 0x82453c891c7b75c0ULL, 0x97923a40b80d512bULL, - 0x4a61dbf1c198765cULL, 0xb48ce6d518010d3eULL, - 0xcfb45c858e480fd6ULL, 0xd933cbf30d1e96aeULL, - 0xd70ea014ab558e3aULL, 0xc189376228031742ULL, - 0x9262949cd16d8b83ULL, 0xeb3a3bed7def5f89ULL, - 0x49314a4ee6b8cbcfULL, 0xdcc3652f647e4c06ULL, - 0xda635a4c2a3e2b3dULL, 0x470c21a940f3d35bULL, - 0x315961a157d174b4ULL, 0x6672e81dda3459acULL, - 0x5b76f77a1165e36eULL, 0x445cb01667d36ec8ULL, - 0xc5491d205c88a69bULL, 0x456c34887a3805b9ULL, - 0xffddb9bac4721013ULL, 0x99af51a71e4649bfULL, - 0xa15be01cbc7729d5ULL, 0x52db2760e485f7b0ULL, - 0x8c78576eba306d54ULL, 0xae560f6507d75a30ULL, - 0x95f22f6182c687c9ULL, 0x71c5fbf54489aba5ULL, - 0xca44f259e728d57eULL, 0x88b87d2ccebbdc8dULL, - 0xbab18d32be4a15aaULL, 0x8be8ec93e99b611eULL, - 0x17b713e89ebdf209ULL, 0xb31c5d284baa0174ULL, - 0xeeca9531148f8521ULL, 0xb8d198138481c348ULL, - 0x8988f9b2d350b7fcULL, 0xb9e11c8d996aa839ULL, - 0x5a4673e40c8e881fULL, 0x1687977683569978ULL, - 0xbf4123eed72acf02ULL, 0x4ea1f1b3b513c785ULL, - 0xe767452be16f91ffULL, 0x7505d1b730021a7cULL, - 0xa59bca5ec8fc980cULL, 0xad069eda20f7e7a3ULL, - 0x38f4b1bba231606aULL, 0x60d2d77e94743e97ULL, - 0x9affc0183966f42cULL, 0x248e6768f3a7505fULL, - 0xcdd449a4b483d934ULL, 0x87b59255751baf68ULL, - 0x1bea6d2e023d3c7fULL, 0x6b1f12455b5ffcabULL, - 0x743555292de9710dULL, 0xd8034f6d10f5fddfULL, - 0xc6198c9f7ba81b08ULL, 0xbb8109aca3a17edbULL, - 0xfa2d1766ad12cabbULL, 0xc729080166437079ULL, - 0x9c5fff7b77269317ULL, 0x0000000000000000ULL, - 0x15d706c9a47624ebULL, 0x6fdf38072fd44d72ULL, - 0x5fb6dd3865ee52b7ULL, 0xa33bf53d86bcff37ULL, - 0xe657c1b5fc84fa8eULL, 0xaa962527735cebe9ULL, - 0x39c43525bfda0b1bULL, 0x204e4d2a872ce186ULL, - 0x7a083ece8ba26999ULL, 0x554b9c9db72efbfaULL, - 0xb22cd9b656416a05ULL, 0x96a2bedea5e63a5aULL, - 0x802529a826b0a322ULL, 0x8115ad363b5bc853ULL, - 0x8375b81701901eb1ULL, 0x3069e53f4a3a1fc5ULL, - 0xbd2136cfede119e0ULL, 0x18bafc91251d81ecULL, - 0x1d4a524d4c7d5b44ULL, 0x05f0aedc6960daa8ULL, - 0x29e39d3072ccf558ULL, 0x70f57f6b5962c0d4ULL, - 0x989fd53903ad22ceULL, 0xf84d024797d91c59ULL, - 0x547b1803aac5908bULL, 0xf0d056c37fd263f6ULL, - 0xd56eb535919e58d8ULL, 0x1c7ad6d351963035ULL, - 0x2e7326cd2167f912ULL, 0xac361a443d1c8cd2ULL, - 0x697f076461942a49ULL, 0x4b515f6fdc731d2dULL, - 0x8ad8680df4700a6fULL, 0x41ac1eca0eb3b460ULL, - 0x7d988533d80965d3ULL, 0xa8f6300649973d0bULL, - 0x7765c4960ac9cc9eULL, 0x7ca801adc5e20ea2ULL, - 0xdea3700e5eb59ae4ULL, 0xa06b6482a19c42a4ULL, - 0x6a2f96db46b497daULL, 0x27def6d7d487edccULL, - 0x463ca5375d18b82aULL, 0xa6cb5be1efdc259fULL, - 0x53eba3fef96e9cc1ULL, 0xce84d81b93a364a7ULL, - 0xf4107c810b59d22fULL, 0x333974806d1aa256ULL, - 0x0f0def79bba073e5ULL, 0x231edc95a00c5c15ULL, - 0xe437d494c64f2c6cULL, 0x91320523f64d3610ULL, - 0x67426c83c7df32ddULL, 0x6eefbc99323f2603ULL, - 0x9d6f7be56acdf866ULL, 0x5916e25b2bae358cULL, - 0x7ff89012e2c2b331ULL, 0x035091bf2720bd93ULL, - 0x561b0d22900e4669ULL, 0x28d319ae6f279e29ULL, - 0x2f43a2533c8c9263ULL, 0xd09e1be9f8fe8270ULL, - 0xf740ed3e2c796fbcULL, 0xdb53ded237d5404cULL, - 0x62b2c25faebfe875ULL, 0x0afd41a5d2c0a94dULL, - 0x6412fd3ce0ff8f4eULL, 0xe3a76f6995e42026ULL, - 0x6c8fa9b808f4f0e1ULL, 0xc2d9a6dd0f23aad1ULL, - 0x8f28c6d19d10d0c7ULL, 0x85d587744fd0798aULL, - 0xa20b71a39b579446ULL, 0x684f83fa7c7f4138ULL, - 0xe507500adba4471dULL, 0x3f640a46f19a6c20ULL, - 0x1247bd34f7dd28a1ULL, 0x2d23b77206474481ULL, - 0x93521002cc86e0f2ULL, 0x572b89bc8de52d18ULL, - 0xfb1d93f8b0f9a1caULL, 0xe95a2ecc4724896bULL, - 0x3ba420048511ddf9ULL, 0xd63e248ab6bee54bULL, - 0x5dd6c8195f258455ULL, 0x06a03f634e40673bULL, - 0x1f2a476c76b68da6ULL, 0x217ec9b49ac78af7ULL, - 0xecaa80102e4453c3ULL, 0x14e78257b99d4f9aULL}, + { 0xcce4cd3aa968b245ULL, 0x089d5484e80b7fafULL, 0x638246c1b3548304ULL, + 0xd2fe0ec8c2355492ULL, 0xa7fbdf7ff2374eeeULL, 0x4df1600c92337a16ULL, + 0x84e503ea523b12fbULL, 0x0790bbfd53ab0c4aULL, 0x198a780f38f6ea9dULL, + 0x2ab30c8f55ec48cbULL, 0xe0f7fed6b2c49db5ULL, 0xb6ecf3f422cadbdcULL, + 0x409c9a541358df11ULL, 0xd3ce8a56dfde3fe3ULL, 0xc3e9224312c8c1a0ULL, + 0x0d6dfa58816ba507ULL, 0xddf3e1b179952777ULL, 0x04c02a42748bb1d9ULL, + 0x94c2abff9f2decb8ULL, 0x4f91752da8f8acf4ULL, 0x78682befb169bf7bULL, + 0xe1c77a48af2ff6c4ULL, 0x0c5d7ec69c80ce76ULL, 0x4cc1e4928fd81167ULL, + 0xfeed3d24d9997b62ULL, 0x518bb6dfc3a54a23ULL, 0x6dbf2d26151f9b90ULL, + 0xb5bc624b05ea664fULL, 0xe86aaa525acfe21aULL, 0x4801ced0fb53a0beULL, + 0xc91463e6c00868edULL, 0x1027a815cd16fe43ULL, 0xf67069a0319204cdULL, + 0xb04ccc976c8abce7ULL, 0xc0b9b3fc35e87c33ULL, 0xf380c77c58f2de65ULL, + 0x50bb3241de4e2152ULL, 0xdf93f490435ef195ULL, 0xf1e0d25d62390887ULL, + 0xaf668bfb1a3c3141ULL, 0xbc11b251f00a7291ULL, 0x73a5eed47e427d47ULL, + 0x25bee3f6ee4c3b2eULL, 0x43cc0beb34786282ULL, 0xc824e778dde3039cULL, + 0xf97d86d98a327728ULL, 0xf2b043e24519b514ULL, 0xe297ebf7880f4b57ULL, + 0x3a94a49a98fab688ULL, 0x868516cb68f0c419ULL, 0xeffa11af0964ee50ULL, + 0xa4ab4ec0d517f37dULL, 0xa9c6b498547c567aULL, 0x8e18424f80fbbbb6ULL, + 0x0bcdc53bcf2bc23cULL, 0x137739aaea3643d0ULL, 0x2c1333ec1bac2ff0ULL, + 0x8d48d3f0a7db0625ULL, 0x1e1ac3f26b5de6d7ULL, 0xf520f81f16b2b95eULL, + 0x9f0f6ec450062e84ULL, 0x0130849e1deb6b71ULL, 0xd45e31ab8c7533a9ULL, + 0x652279a2fd14e43fULL, 0x3209f01e70f1c927ULL, 0xbe71a770cac1a473ULL, + 0x0e3d6be7a64b1894ULL, 0x7ec8148cff29d840ULL, 0xcb7476c7fac3be0fULL, + 0x72956a4a63a91636ULL, 0x37f95ec21991138fULL, 0x9e3fea5a4ded45f5ULL, + 0x7b38ba50964902e8ULL, 0x222e580bbde73764ULL, 0x61e253e0899f55e6ULL, + 0xfc8d2805e352ad80ULL, 0x35994be3235ac56dULL, 0x09add01af5e014deULL, + 0x5e8659a6780539c6ULL, 0xb17c48097161d796ULL, 0x026015213acbd6e2ULL, + 0xd1ae9f77e515e901ULL, 0xb7dc776a3f21b0adULL, 0xaba6a1b96eb78098ULL, + 0x9bcf4486248d9f5dULL, 0x582666c536455efdULL, 0xfdbdac9bfeb9c6f1ULL, + 0xc47999be4163cdeaULL, 0x765540081722a7efULL, 0x3e548ed8ec710751ULL, + 0x3d041f67cb51bac2ULL, 0x7958af71ac82d40aULL, 0x36c9da5c047a78feULL, + 0xed9a048e33af38b2ULL, 0x26ee7249c96c86bdULL, 0x900281bdeba65d61ULL, + 0x11172c8bd0fd9532ULL, 0xea0abf73600434f8ULL, 0x42fc8f75299309f3ULL, + 0x34a9cf7d3eb1ae1cULL, 0x2b838811480723baULL, 0x5ce64c8742ceef24ULL, + 0x1adae9b01fd6570eULL, 0x3c349bf9d6bad1b3ULL, 0x82453c891c7b75c0ULL, + 0x97923a40b80d512bULL, 0x4a61dbf1c198765cULL, 0xb48ce6d518010d3eULL, + 0xcfb45c858e480fd6ULL, 0xd933cbf30d1e96aeULL, 0xd70ea014ab558e3aULL, + 0xc189376228031742ULL, 0x9262949cd16d8b83ULL, 0xeb3a3bed7def5f89ULL, + 0x49314a4ee6b8cbcfULL, 0xdcc3652f647e4c06ULL, 0xda635a4c2a3e2b3dULL, + 0x470c21a940f3d35bULL, 0x315961a157d174b4ULL, 0x6672e81dda3459acULL, + 0x5b76f77a1165e36eULL, 0x445cb01667d36ec8ULL, 0xc5491d205c88a69bULL, + 0x456c34887a3805b9ULL, 0xffddb9bac4721013ULL, 0x99af51a71e4649bfULL, + 0xa15be01cbc7729d5ULL, 0x52db2760e485f7b0ULL, 0x8c78576eba306d54ULL, + 0xae560f6507d75a30ULL, 0x95f22f6182c687c9ULL, 0x71c5fbf54489aba5ULL, + 0xca44f259e728d57eULL, 0x88b87d2ccebbdc8dULL, 0xbab18d32be4a15aaULL, + 0x8be8ec93e99b611eULL, 0x17b713e89ebdf209ULL, 0xb31c5d284baa0174ULL, + 0xeeca9531148f8521ULL, 0xb8d198138481c348ULL, 0x8988f9b2d350b7fcULL, + 0xb9e11c8d996aa839ULL, 0x5a4673e40c8e881fULL, 0x1687977683569978ULL, + 0xbf4123eed72acf02ULL, 0x4ea1f1b3b513c785ULL, 0xe767452be16f91ffULL, + 0x7505d1b730021a7cULL, 0xa59bca5ec8fc980cULL, 0xad069eda20f7e7a3ULL, + 0x38f4b1bba231606aULL, 0x60d2d77e94743e97ULL, 0x9affc0183966f42cULL, + 0x248e6768f3a7505fULL, 0xcdd449a4b483d934ULL, 0x87b59255751baf68ULL, + 0x1bea6d2e023d3c7fULL, 0x6b1f12455b5ffcabULL, 0x743555292de9710dULL, + 0xd8034f6d10f5fddfULL, 0xc6198c9f7ba81b08ULL, 0xbb8109aca3a17edbULL, + 0xfa2d1766ad12cabbULL, 0xc729080166437079ULL, 0x9c5fff7b77269317ULL, + 0x0000000000000000ULL, 0x15d706c9a47624ebULL, 0x6fdf38072fd44d72ULL, + 0x5fb6dd3865ee52b7ULL, 0xa33bf53d86bcff37ULL, 0xe657c1b5fc84fa8eULL, + 0xaa962527735cebe9ULL, 0x39c43525bfda0b1bULL, 0x204e4d2a872ce186ULL, + 0x7a083ece8ba26999ULL, 0x554b9c9db72efbfaULL, 0xb22cd9b656416a05ULL, + 0x96a2bedea5e63a5aULL, 0x802529a826b0a322ULL, 0x8115ad363b5bc853ULL, + 0x8375b81701901eb1ULL, 0x3069e53f4a3a1fc5ULL, 0xbd2136cfede119e0ULL, + 0x18bafc91251d81ecULL, 0x1d4a524d4c7d5b44ULL, 0x05f0aedc6960daa8ULL, + 0x29e39d3072ccf558ULL, 0x70f57f6b5962c0d4ULL, 0x989fd53903ad22ceULL, + 0xf84d024797d91c59ULL, 0x547b1803aac5908bULL, 0xf0d056c37fd263f6ULL, + 0xd56eb535919e58d8ULL, 0x1c7ad6d351963035ULL, 0x2e7326cd2167f912ULL, + 0xac361a443d1c8cd2ULL, 0x697f076461942a49ULL, 0x4b515f6fdc731d2dULL, + 0x8ad8680df4700a6fULL, 0x41ac1eca0eb3b460ULL, 0x7d988533d80965d3ULL, + 0xa8f6300649973d0bULL, 0x7765c4960ac9cc9eULL, 0x7ca801adc5e20ea2ULL, + 0xdea3700e5eb59ae4ULL, 0xa06b6482a19c42a4ULL, 0x6a2f96db46b497daULL, + 0x27def6d7d487edccULL, 0x463ca5375d18b82aULL, 0xa6cb5be1efdc259fULL, + 0x53eba3fef96e9cc1ULL, 0xce84d81b93a364a7ULL, 0xf4107c810b59d22fULL, + 0x333974806d1aa256ULL, 0x0f0def79bba073e5ULL, 0x231edc95a00c5c15ULL, + 0xe437d494c64f2c6cULL, 0x91320523f64d3610ULL, 0x67426c83c7df32ddULL, + 0x6eefbc99323f2603ULL, 0x9d6f7be56acdf866ULL, 0x5916e25b2bae358cULL, + 0x7ff89012e2c2b331ULL, 0x035091bf2720bd93ULL, 0x561b0d22900e4669ULL, + 0x28d319ae6f279e29ULL, 0x2f43a2533c8c9263ULL, 0xd09e1be9f8fe8270ULL, + 0xf740ed3e2c796fbcULL, 0xdb53ded237d5404cULL, 0x62b2c25faebfe875ULL, + 0x0afd41a5d2c0a94dULL, 0x6412fd3ce0ff8f4eULL, 0xe3a76f6995e42026ULL, + 0x6c8fa9b808f4f0e1ULL, 0xc2d9a6dd0f23aad1ULL, 0x8f28c6d19d10d0c7ULL, + 0x85d587744fd0798aULL, 0xa20b71a39b579446ULL, 0x684f83fa7c7f4138ULL, + 0xe507500adba4471dULL, 0x3f640a46f19a6c20ULL, 0x1247bd34f7dd28a1ULL, + 0x2d23b77206474481ULL, 0x93521002cc86e0f2ULL, 0x572b89bc8de52d18ULL, + 0xfb1d93f8b0f9a1caULL, 0xe95a2ecc4724896bULL, 0x3ba420048511ddf9ULL, + 0xd63e248ab6bee54bULL, 0x5dd6c8195f258455ULL, 0x06a03f634e40673bULL, + 0x1f2a476c76b68da6ULL, 0x217ec9b49ac78af7ULL, 0xecaa80102e4453c3ULL, + 0x14e78257b99d4f9aULL }, /* 3 */ - {0x20329b2cc87bba05ULL, 0x4f5eb6f86546a531ULL, - 0xd4f44775f751b6b1ULL, 0x8266a47b850dfa8bULL, - 0xbb986aa15a6ca985ULL, 0xc979eb08f9ae0f99ULL, - 0x2da6f447a2375ea1ULL, 0x1e74275dcd7d8576ULL, - 0xbc20180a800bc5f8ULL, 0xb4a2f701b2dc65beULL, - 0xe726946f981b6d66ULL, 0x48e6c453bf21c94cULL, - 0x42cad9930f0a4195ULL, 0xefa47b64aacccd20ULL, - 0x71180a8960409a42ULL, 0x8bb3329bf6a44e0cULL, - 0xd34c35de2d36daccULL, 0xa92f5b7cbc23dc96ULL, - 0xb31a85aa68bb09c3ULL, 0x13e04836a73161d2ULL, - 0xb24dfc4129c51d02ULL, 0x8ae44b70b7da5acdULL, - 0xe671ed84d96579a7ULL, 0xa4bb3417d66f3832ULL, - 0x4572ab38d56d2de8ULL, 0xb1b47761ea47215cULL, - 0xe81c09cf70aba15dULL, 0xffbdb872ce7f90acULL, - 0xa8782297fd5dc857ULL, 0x0d946f6b6a4ce4a4ULL, - 0xe4df1f4f5b995138ULL, 0x9ebc71edca8c5762ULL, - 0x0a2c1dc0b02b88d9ULL, 0x3b503c115d9d7b91ULL, - 0xc64376a8111ec3a2ULL, 0xcec199a323c963e4ULL, - 0xdc76a87ec58616f7ULL, 0x09d596e073a9b487ULL, - 0x14583a9d7d560dafULL, 0xf4c6dc593f2a0cb4ULL, - 0xdd21d19584f80236ULL, 0x4a4836983ddde1d3ULL, - 0xe58866a41ae745f9ULL, 0xf591a5b27e541875ULL, - 0x891dc05074586693ULL, 0x5b068c651810a89eULL, - 0xa30346bc0c08544fULL, 0x3dbf3751c684032dULL, - 0x2a1e86ec785032dcULL, 0xf73f5779fca830eaULL, - 0xb60c05ca30204d21ULL, 0x0cc316802b32f065ULL, - 0x8770241bdd96be69ULL, 0xb861e18199ee95dbULL, - 0xf805cad91418fcd1ULL, 0x29e70dccbbd20e82ULL, - 0xc7140f435060d763ULL, 0x0f3a9da0e8b0cc3bULL, - 0xa2543f574d76408eULL, 0xbd7761e1c175d139ULL, - 0x4b1f4f737ca3f512ULL, 0x6dc2df1f2fc137abULL, - 0xf1d05c3967b14856ULL, 0xa742bf3715ed046cULL, - 0x654030141d1697edULL, 0x07b872abda676c7dULL, - 0x3ce84eba87fa17ecULL, 0xc1fb0403cb79afdfULL, - 0x3e46bc7105063f73ULL, 0x278ae987121cd678ULL, - 0xa1adb4778ef47cd0ULL, 0x26dd906c5362c2b9ULL, - 0x05168060589b44e2ULL, 0xfbfc41f9d79ac08fULL, - 0x0e6de44ba9ced8faULL, 0x9feb08068bf243a3ULL, - 0x7b341749d06b129bULL, 0x229c69e74a87929aULL, - 0xe09ee6c4427c011bULL, 0x5692e30e725c4c3aULL, - 0xda99a33e5e9f6e4bULL, 0x353dd85af453a36bULL, - 0x25241b4c90e0fee7ULL, 0x5de987258309d022ULL, - 0xe230140fc0802984ULL, 0x93281e86a0c0b3c6ULL, - 0xf229d719a4337408ULL, 0x6f6c2dd4ad3d1f34ULL, - 0x8ea5b2fbae3f0aeeULL, 0x8331dd90c473ee4aULL, - 0x346aa1b1b52db7aaULL, 0xdf8f235e06042aa9ULL, - 0xcc6f6b68a1354b7bULL, 0x6c95a6f46ebf236aULL, - 0x52d31a856bb91c19ULL, 0x1a35ded6d498d555ULL, - 0xf37eaef2e54d60c9ULL, 0x72e181a9a3c2a61cULL, - 0x98537aad51952fdeULL, 0x16f6c856ffaa2530ULL, - 0xd960281e9d1d5215ULL, 0x3a0745fa1ce36f50ULL, - 0x0b7b642bf1559c18ULL, 0x59a87eae9aec8001ULL, - 0x5e100c05408bec7cULL, 0x0441f98b19e55023ULL, - 0xd70dcc5534d38aefULL, 0x927f676de1bea707ULL, - 0x9769e70db925e3e5ULL, 0x7a636ea29115065aULL, - 0x468b201816ef11b6ULL, 0xab81a9b73edff409ULL, - 0xc0ac7de88a07bb1eULL, 0x1f235eb68c0391b7ULL, - 0x6056b074458dd30fULL, 0xbe8eeac102f7ed67ULL, - 0xcd381283e04b5fbaULL, 0x5cbefecec277c4e3ULL, - 0xd21b4c356c48ce0dULL, 0x1019c31664b35d8cULL, - 0x247362a7d19eea26ULL, 0xebe582efb3299d03ULL, - 0x02aef2cb82fc289fULL, 0x86275df09ce8aaa8ULL, - 0x28b07427faac1a43ULL, 0x38a9b7319e1f47cfULL, - 0xc82e92e3b8d01b58ULL, 0x06ef0b409b1978bcULL, - 0x62f842bfc771fb90ULL, 0x9904034610eb3b1fULL, - 0xded85ab5477a3e68ULL, 0x90d195a663428f98ULL, - 0x5384636e2ac708d8ULL, 0xcbd719c37b522706ULL, - 0xae9729d76644b0ebULL, 0x7c8c65e20a0c7ee6ULL, - 0x80c856b007f1d214ULL, 0x8c0b40302cc32271ULL, - 0xdbcedad51fe17a8aULL, 0x740e8ae938dbdea0ULL, - 0xa615c6dc549310adULL, 0x19cc55f6171ae90bULL, - 0x49b1bdb8fe5fdd8dULL, 0xed0a89af2830e5bfULL, - 0x6a7aadb4f5a65bd6ULL, 0x7e22972988f05679ULL, - 0xf952b3325566e810ULL, 0x39fecedadf61530eULL, - 0x6101c99f04f3c7ceULL, 0x2e5f7f6761b562ffULL, - 0xf08725d226cf5c97ULL, 0x63af3b54860fef51ULL, - 0x8ff2cb10ef411e2fULL, 0x884ab9bb35267252ULL, - 0x4df04433e7ba8daeULL, 0x9afd8866d3690741ULL, - 0x66b9bb34de94abb3ULL, 0x9baaf18d92171380ULL, - 0x543c11c5f0a064a5ULL, 0x17a1b1bdbed431f1ULL, - 0xb5f58eeaf3a2717fULL, 0xc355f6c849858740ULL, - 0xec5df044694ef17eULL, 0xd83751f5dc6346d4ULL, - 0xfc4433520dfdacf2ULL, 0x0000000000000000ULL, - 0x5a51f58e596ebc5fULL, 0x3285aaf12e34cf16ULL, - 0x8d5c39db6dbd36b0ULL, 0x12b731dde64f7513ULL, - 0x94906c2d7aa7dfbbULL, 0x302b583aacc8e789ULL, - 0x9d45facd090e6b3cULL, 0x2165e2c78905aec4ULL, - 0x68d45f7f775a7349ULL, 0x189b2c1d5664fdcaULL, - 0xe1c99f2f030215daULL, 0x6983269436246788ULL, - 0x8489af3b1e148237ULL, 0xe94b702431d5b59cULL, - 0x33d2d31a6f4adbd7ULL, 0xbfd9932a4389f9a6ULL, - 0xb0e30e8aab39359dULL, 0xd1e2c715afcaf253ULL, - 0x150f43763c28196eULL, 0xc4ed846393e2eb3dULL, - 0x03f98b20c3823c5eULL, 0xfd134ab94c83b833ULL, - 0x556b682eb1de7064ULL, 0x36c4537a37d19f35ULL, - 0x7559f30279a5ca61ULL, 0x799ae58252973a04ULL, - 0x9c12832648707ffdULL, 0x78cd9c6913e92ec5ULL, - 0x1d8dac7d0effb928ULL, 0x439da0784e745554ULL, - 0x413352b3cc887dcbULL, 0xbacf134a1b12bd44ULL, - 0x114ebafd25cd494dULL, 0x2f08068c20cb763eULL, - 0x76a07822ba27f63fULL, 0xeab2fb04f25789c2ULL, - 0xe3676de481fe3d45ULL, 0x1b62a73d95e6c194ULL, - 0x641749ff5c68832cULL, 0xa5ec4dfc97112cf3ULL, - 0xf6682e92bdd6242bULL, 0x3f11c59a44782bb2ULL, - 0x317c21d1edb6f348ULL, 0xd65ab5be75ad9e2eULL, - 0x6b2dd45fb4d84f17ULL, 0xfaab381296e4d44eULL, - 0xd0b5befeeeb4e692ULL, 0x0882ef0b32d7a046ULL, - 0x512a91a5a83b2047ULL, 0x963e9ee6f85bf724ULL, - 0x4e09cf132438b1f0ULL, 0x77f701c9fb59e2feULL, - 0x7ddb1c094b726a27ULL, 0x5f4775ee01f5f8bdULL, - 0x9186ec4d223c9b59ULL, 0xfeeac1998f01846dULL, - 0xac39db1ce4b89874ULL, 0xb75b7c21715e59e0ULL, - 0xafc0503c273aa42aULL, 0x6e3b543fec430bf5ULL, - 0x704f7362213e8e83ULL, 0x58ff0745db9294c0ULL, - 0x67eec2df9feabf72ULL, 0xa0facd9ccf8a6811ULL, - 0xb936986ad890811aULL, 0x95c715c63bd9cb7aULL, - 0xca8060283a2c33c7ULL, 0x507de84ee9453486ULL, - 0x85ded6d05f6a96f6ULL, 0x1cdad5964f81ade9ULL, - 0xd5a33e9eb62fa270ULL, 0x40642b588df6690aULL, - 0x7f75eec2c98e42b8ULL, 0x2cf18dace3494a60ULL, - 0x23cb100c0bf9865bULL, 0xeef3028febb2d9e1ULL, - 0x4425d2d394133929ULL, 0xaad6d05c7fa1e0c8ULL, - 0xad6ea2f7a5c68cb5ULL, 0xc2028f2308fb9381ULL, - 0x819f2f5b468fc6d5ULL, 0xc5bafd88d29cfffcULL, - 0x47dc59f357910577ULL, 0x2b49ff07392e261dULL, - 0x57c59ae5332258fbULL, 0x73b6f842e2bcb2ddULL, - 0xcf96e04862b77725ULL, 0x4ca73dd8a6c4996fULL, - 0x015779eb417e14c1ULL, 0x37932a9176af8bf4ULL}, + { 0x20329b2cc87bba05ULL, 0x4f5eb6f86546a531ULL, 0xd4f44775f751b6b1ULL, + 0x8266a47b850dfa8bULL, 0xbb986aa15a6ca985ULL, 0xc979eb08f9ae0f99ULL, + 0x2da6f447a2375ea1ULL, 0x1e74275dcd7d8576ULL, 0xbc20180a800bc5f8ULL, + 0xb4a2f701b2dc65beULL, 0xe726946f981b6d66ULL, 0x48e6c453bf21c94cULL, + 0x42cad9930f0a4195ULL, 0xefa47b64aacccd20ULL, 0x71180a8960409a42ULL, + 0x8bb3329bf6a44e0cULL, 0xd34c35de2d36daccULL, 0xa92f5b7cbc23dc96ULL, + 0xb31a85aa68bb09c3ULL, 0x13e04836a73161d2ULL, 0xb24dfc4129c51d02ULL, + 0x8ae44b70b7da5acdULL, 0xe671ed84d96579a7ULL, 0xa4bb3417d66f3832ULL, + 0x4572ab38d56d2de8ULL, 0xb1b47761ea47215cULL, 0xe81c09cf70aba15dULL, + 0xffbdb872ce7f90acULL, 0xa8782297fd5dc857ULL, 0x0d946f6b6a4ce4a4ULL, + 0xe4df1f4f5b995138ULL, 0x9ebc71edca8c5762ULL, 0x0a2c1dc0b02b88d9ULL, + 0x3b503c115d9d7b91ULL, 0xc64376a8111ec3a2ULL, 0xcec199a323c963e4ULL, + 0xdc76a87ec58616f7ULL, 0x09d596e073a9b487ULL, 0x14583a9d7d560dafULL, + 0xf4c6dc593f2a0cb4ULL, 0xdd21d19584f80236ULL, 0x4a4836983ddde1d3ULL, + 0xe58866a41ae745f9ULL, 0xf591a5b27e541875ULL, 0x891dc05074586693ULL, + 0x5b068c651810a89eULL, 0xa30346bc0c08544fULL, 0x3dbf3751c684032dULL, + 0x2a1e86ec785032dcULL, 0xf73f5779fca830eaULL, 0xb60c05ca30204d21ULL, + 0x0cc316802b32f065ULL, 0x8770241bdd96be69ULL, 0xb861e18199ee95dbULL, + 0xf805cad91418fcd1ULL, 0x29e70dccbbd20e82ULL, 0xc7140f435060d763ULL, + 0x0f3a9da0e8b0cc3bULL, 0xa2543f574d76408eULL, 0xbd7761e1c175d139ULL, + 0x4b1f4f737ca3f512ULL, 0x6dc2df1f2fc137abULL, 0xf1d05c3967b14856ULL, + 0xa742bf3715ed046cULL, 0x654030141d1697edULL, 0x07b872abda676c7dULL, + 0x3ce84eba87fa17ecULL, 0xc1fb0403cb79afdfULL, 0x3e46bc7105063f73ULL, + 0x278ae987121cd678ULL, 0xa1adb4778ef47cd0ULL, 0x26dd906c5362c2b9ULL, + 0x05168060589b44e2ULL, 0xfbfc41f9d79ac08fULL, 0x0e6de44ba9ced8faULL, + 0x9feb08068bf243a3ULL, 0x7b341749d06b129bULL, 0x229c69e74a87929aULL, + 0xe09ee6c4427c011bULL, 0x5692e30e725c4c3aULL, 0xda99a33e5e9f6e4bULL, + 0x353dd85af453a36bULL, 0x25241b4c90e0fee7ULL, 0x5de987258309d022ULL, + 0xe230140fc0802984ULL, 0x93281e86a0c0b3c6ULL, 0xf229d719a4337408ULL, + 0x6f6c2dd4ad3d1f34ULL, 0x8ea5b2fbae3f0aeeULL, 0x8331dd90c473ee4aULL, + 0x346aa1b1b52db7aaULL, 0xdf8f235e06042aa9ULL, 0xcc6f6b68a1354b7bULL, + 0x6c95a6f46ebf236aULL, 0x52d31a856bb91c19ULL, 0x1a35ded6d498d555ULL, + 0xf37eaef2e54d60c9ULL, 0x72e181a9a3c2a61cULL, 0x98537aad51952fdeULL, + 0x16f6c856ffaa2530ULL, 0xd960281e9d1d5215ULL, 0x3a0745fa1ce36f50ULL, + 0x0b7b642bf1559c18ULL, 0x59a87eae9aec8001ULL, 0x5e100c05408bec7cULL, + 0x0441f98b19e55023ULL, 0xd70dcc5534d38aefULL, 0x927f676de1bea707ULL, + 0x9769e70db925e3e5ULL, 0x7a636ea29115065aULL, 0x468b201816ef11b6ULL, + 0xab81a9b73edff409ULL, 0xc0ac7de88a07bb1eULL, 0x1f235eb68c0391b7ULL, + 0x6056b074458dd30fULL, 0xbe8eeac102f7ed67ULL, 0xcd381283e04b5fbaULL, + 0x5cbefecec277c4e3ULL, 0xd21b4c356c48ce0dULL, 0x1019c31664b35d8cULL, + 0x247362a7d19eea26ULL, 0xebe582efb3299d03ULL, 0x02aef2cb82fc289fULL, + 0x86275df09ce8aaa8ULL, 0x28b07427faac1a43ULL, 0x38a9b7319e1f47cfULL, + 0xc82e92e3b8d01b58ULL, 0x06ef0b409b1978bcULL, 0x62f842bfc771fb90ULL, + 0x9904034610eb3b1fULL, 0xded85ab5477a3e68ULL, 0x90d195a663428f98ULL, + 0x5384636e2ac708d8ULL, 0xcbd719c37b522706ULL, 0xae9729d76644b0ebULL, + 0x7c8c65e20a0c7ee6ULL, 0x80c856b007f1d214ULL, 0x8c0b40302cc32271ULL, + 0xdbcedad51fe17a8aULL, 0x740e8ae938dbdea0ULL, 0xa615c6dc549310adULL, + 0x19cc55f6171ae90bULL, 0x49b1bdb8fe5fdd8dULL, 0xed0a89af2830e5bfULL, + 0x6a7aadb4f5a65bd6ULL, 0x7e22972988f05679ULL, 0xf952b3325566e810ULL, + 0x39fecedadf61530eULL, 0x6101c99f04f3c7ceULL, 0x2e5f7f6761b562ffULL, + 0xf08725d226cf5c97ULL, 0x63af3b54860fef51ULL, 0x8ff2cb10ef411e2fULL, + 0x884ab9bb35267252ULL, 0x4df04433e7ba8daeULL, 0x9afd8866d3690741ULL, + 0x66b9bb34de94abb3ULL, 0x9baaf18d92171380ULL, 0x543c11c5f0a064a5ULL, + 0x17a1b1bdbed431f1ULL, 0xb5f58eeaf3a2717fULL, 0xc355f6c849858740ULL, + 0xec5df044694ef17eULL, 0xd83751f5dc6346d4ULL, 0xfc4433520dfdacf2ULL, + 0x0000000000000000ULL, 0x5a51f58e596ebc5fULL, 0x3285aaf12e34cf16ULL, + 0x8d5c39db6dbd36b0ULL, 0x12b731dde64f7513ULL, 0x94906c2d7aa7dfbbULL, + 0x302b583aacc8e789ULL, 0x9d45facd090e6b3cULL, 0x2165e2c78905aec4ULL, + 0x68d45f7f775a7349ULL, 0x189b2c1d5664fdcaULL, 0xe1c99f2f030215daULL, + 0x6983269436246788ULL, 0x8489af3b1e148237ULL, 0xe94b702431d5b59cULL, + 0x33d2d31a6f4adbd7ULL, 0xbfd9932a4389f9a6ULL, 0xb0e30e8aab39359dULL, + 0xd1e2c715afcaf253ULL, 0x150f43763c28196eULL, 0xc4ed846393e2eb3dULL, + 0x03f98b20c3823c5eULL, 0xfd134ab94c83b833ULL, 0x556b682eb1de7064ULL, + 0x36c4537a37d19f35ULL, 0x7559f30279a5ca61ULL, 0x799ae58252973a04ULL, + 0x9c12832648707ffdULL, 0x78cd9c6913e92ec5ULL, 0x1d8dac7d0effb928ULL, + 0x439da0784e745554ULL, 0x413352b3cc887dcbULL, 0xbacf134a1b12bd44ULL, + 0x114ebafd25cd494dULL, 0x2f08068c20cb763eULL, 0x76a07822ba27f63fULL, + 0xeab2fb04f25789c2ULL, 0xe3676de481fe3d45ULL, 0x1b62a73d95e6c194ULL, + 0x641749ff5c68832cULL, 0xa5ec4dfc97112cf3ULL, 0xf6682e92bdd6242bULL, + 0x3f11c59a44782bb2ULL, 0x317c21d1edb6f348ULL, 0xd65ab5be75ad9e2eULL, + 0x6b2dd45fb4d84f17ULL, 0xfaab381296e4d44eULL, 0xd0b5befeeeb4e692ULL, + 0x0882ef0b32d7a046ULL, 0x512a91a5a83b2047ULL, 0x963e9ee6f85bf724ULL, + 0x4e09cf132438b1f0ULL, 0x77f701c9fb59e2feULL, 0x7ddb1c094b726a27ULL, + 0x5f4775ee01f5f8bdULL, 0x9186ec4d223c9b59ULL, 0xfeeac1998f01846dULL, + 0xac39db1ce4b89874ULL, 0xb75b7c21715e59e0ULL, 0xafc0503c273aa42aULL, + 0x6e3b543fec430bf5ULL, 0x704f7362213e8e83ULL, 0x58ff0745db9294c0ULL, + 0x67eec2df9feabf72ULL, 0xa0facd9ccf8a6811ULL, 0xb936986ad890811aULL, + 0x95c715c63bd9cb7aULL, 0xca8060283a2c33c7ULL, 0x507de84ee9453486ULL, + 0x85ded6d05f6a96f6ULL, 0x1cdad5964f81ade9ULL, 0xd5a33e9eb62fa270ULL, + 0x40642b588df6690aULL, 0x7f75eec2c98e42b8ULL, 0x2cf18dace3494a60ULL, + 0x23cb100c0bf9865bULL, 0xeef3028febb2d9e1ULL, 0x4425d2d394133929ULL, + 0xaad6d05c7fa1e0c8ULL, 0xad6ea2f7a5c68cb5ULL, 0xc2028f2308fb9381ULL, + 0x819f2f5b468fc6d5ULL, 0xc5bafd88d29cfffcULL, 0x47dc59f357910577ULL, + 0x2b49ff07392e261dULL, 0x57c59ae5332258fbULL, 0x73b6f842e2bcb2ddULL, + 0xcf96e04862b77725ULL, 0x4ca73dd8a6c4996fULL, 0x015779eb417e14c1ULL, + 0x37932a9176af8bf4ULL }, /* 4 */ - {0x190a2c9b249df23eULL, 0x2f62f8b62263e1e9ULL, - 0x7a7f754740993655ULL, 0x330b7ba4d5564d9fULL, - 0x4c17a16a46672582ULL, 0xb22f08eb7d05f5b8ULL, - 0x535f47f40bc148ccULL, 0x3aec5d27d4883037ULL, - 0x10ed0a1825438f96ULL, 0x516101f72c233d17ULL, - 0x13cc6f949fd04eaeULL, 0x739853c441474bfdULL, - 0x653793d90d3f5b1bULL, 0x5240647b96b0fc2fULL, - 0x0c84890ad27623e0ULL, 0xd7189b32703aaea3ULL, - 0x2685de3523bd9c41ULL, 0x99317c5b11bffefaULL, - 0x0d9baa854f079703ULL, 0x70b93648fbd48ac5ULL, - 0xa80441fce30bc6beULL, 0x7287704bdc36ff1eULL, - 0xb65384ed33dc1f13ULL, 0xd36417343ee34408ULL, - 0x39cd38ab6e1bf10fULL, 0x5ab861770a1f3564ULL, - 0x0ebacf09f594563bULL, 0xd04572b884708530ULL, - 0x3cae9722bdb3af47ULL, 0x4a556b6f2f5cbaf2ULL, - 0xe1704f1f76c4bd74ULL, 0x5ec4ed7144c6dfcfULL, - 0x16afc01d4c7810e6ULL, 0x283f113cd629ca7aULL, - 0xaf59a8761741ed2dULL, 0xeed5a3991e215facULL, - 0x3bf37ea849f984d4ULL, 0xe413e096a56ce33cULL, - 0x2c439d3a98f020d1ULL, 0x637559dc6404c46bULL, - 0x9e6c95d1e5f5d569ULL, 0x24bb9836045fe99aULL, - 0x44efa466dac8ecc9ULL, 0xc6eab2a5c80895d6ULL, - 0x803b50c035220cc4ULL, 0x0321658cba93c138ULL, - 0x8f9ebc465dc7ee1cULL, 0xd15a5137190131d3ULL, - 0x0fa5ec8668e5e2d8ULL, 0x91c979578d1037b1ULL, - 0x0642ca05693b9f70ULL, 0xefca80168350eb4fULL, - 0x38d21b24f36a45ecULL, 0xbeab81e1af73d658ULL, - 0x8cbfd9cae7542f24ULL, 0xfd19cc0d81f11102ULL, - 0x0ac6430fbb4dbc90ULL, 0x1d76a09d6a441895ULL, - 0x2a01573ff1cbbfa1ULL, 0xb572e161894fde2bULL, - 0x8124734fa853b827ULL, 0x614b1fdf43e6b1b0ULL, - 0x68ac395c4238cc18ULL, 0x21d837bfd7f7b7d2ULL, - 0x20c714304a860331ULL, 0x5cfaab726324aa14ULL, - 0x74c5ba4eb50d606eULL, 0xf3a3030474654739ULL, - 0x23e671bcf015c209ULL, 0x45f087e947b9582aULL, - 0xd8bd77b418df4c7bULL, 0xe06f6c90ebb50997ULL, - 0x0bd96080263c0873ULL, 0x7e03f9410e40dcfeULL, - 0xb8e94be4c6484928ULL, 0xfb5b0608e8ca8e72ULL, - 0x1a2b49179e0e3306ULL, 0x4e29e76961855059ULL, - 0x4f36c4e6fcf4e4baULL, 0x49740ee395cf7bcaULL, - 0xc2963ea386d17f7dULL, 0x90d65ad810618352ULL, - 0x12d34c1b02a1fa4dULL, 0xfa44258775bb3a91ULL, - 0x18150f14b9ec46ddULL, 0x1491861e6b9a653dULL, - 0x9a1019d7ab2c3fc2ULL, 0x3668d42d06fe13d7ULL, - 0xdcc1fbb25606a6d0ULL, 0x969490dd795a1c22ULL, - 0x3549b1a1bc6dd2efULL, 0xc94f5e23a0ed770eULL, - 0xb9f6686b5b39fdcbULL, 0xc4d4f4a6efeae00dULL, - 0xe732851a1fff2204ULL, 0x94aad6de5eb869f9ULL, - 0x3f8ff2ae07206e7fULL, 0xfe38a9813b62d03aULL, - 0xa7a1ad7a8bee2466ULL, 0x7b6056c8dde882b6ULL, - 0x302a1e286fc58ca7ULL, 0x8da0fa457a259bc7ULL, - 0xb3302b64e074415bULL, 0x5402ae7eff8b635fULL, - 0x08f8050c9cafc94bULL, 0xae468bf98a3059ceULL, - 0x88c355cca98dc58fULL, 0xb10e6d67c7963480ULL, - 0xbad70de7e1aa3cf3ULL, 0xbfb4a26e320262bbULL, - 0xcb711820870f02d5ULL, 0xce12b7a954a75c9dULL, - 0x563ce87dd8691684ULL, 0x9f73b65e7884618aULL, - 0x2b1e74b06cba0b42ULL, 0x47cec1ea605b2df1ULL, - 0x1c698312f735ac76ULL, 0x5fdbcefed9b76b2cULL, - 0x831a354c8fb1cdfcULL, 0x820516c312c0791fULL, - 0xb74ca762aeadabf0ULL, 0xfc06ef821c80a5e1ULL, - 0x5723cbf24518a267ULL, 0x9d4df05d5f661451ULL, - 0x588627742dfd40bfULL, 0xda8331b73f3d39a0ULL, - 0x17b0e392d109a405ULL, 0xf965400bcf28fba9ULL, - 0x7c3dbf4229a2a925ULL, 0x023e460327e275dbULL, - 0x6cd0b55a0ce126b3ULL, 0xe62da695828e96e7ULL, - 0x42ad6e63b3f373b9ULL, 0xe50cc319381d57dfULL, - 0xc5cbd729729b54eeULL, 0x46d1e265fd2a9912ULL, - 0x6428b056904eeff8ULL, 0x8be23040131e04b7ULL, - 0x6709d5da2add2ec0ULL, 0x075de98af44a2b93ULL, - 0x8447dcc67bfbe66fULL, 0x6616f655b7ac9a23ULL, - 0xd607b8bded4b1a40ULL, 0x0563af89d3a85e48ULL, - 0x3db1b4ad20c21ba4ULL, 0x11f22997b8323b75ULL, - 0x292032b34b587e99ULL, 0x7f1cdace9331681dULL, - 0x8e819fc9c0b65affULL, 0xa1e3677fe2d5bb16ULL, - 0xcd33d225ee349da5ULL, 0xd9a2543b85aef898ULL, - 0x795e10cbfa0af76dULL, 0x25a4bbb9992e5d79ULL, - 0x78413344677b438eULL, 0xf0826688cef68601ULL, - 0xd27b34bba392f0ebULL, 0x551d8df162fad7bcULL, - 0x1e57c511d0d7d9adULL, 0xdeffbdb171e4d30bULL, - 0xf4feea8e802f6caaULL, 0xa480c8f6317de55eULL, - 0xa0fc44f07fa40ff5ULL, 0x95b5f551c3c9dd1aULL, - 0x22f952336d6476eaULL, 0x0000000000000000ULL, - 0xa6be8ef5169f9085ULL, 0xcc2cf1aa73452946ULL, - 0x2e7ddb39bf12550aULL, 0xd526dd3157d8db78ULL, - 0x486b2d6c08becf29ULL, 0x9b0f3a58365d8b21ULL, - 0xac78cdfaadd22c15ULL, 0xbc95c7e28891a383ULL, - 0x6a927f5f65dab9c3ULL, 0xc3891d2c1ba0cb9eULL, - 0xeaa92f9f50f8b507ULL, 0xcf0d9426c9d6e87eULL, - 0xca6e3baf1a7eb636ULL, 0xab25247059980786ULL, - 0x69b31ad3df4978fbULL, 0xe2512a93cc577c4cULL, - 0xff278a0ea61364d9ULL, 0x71a615c766a53e26ULL, - 0x89dc764334fc716cULL, 0xf87a638452594f4aULL, - 0xf2bc208be914f3daULL, 0x8766b94ac1682757ULL, - 0xbbc82e687cdb8810ULL, 0x626a7a53f9757088ULL, - 0xa2c202f358467a2eULL, 0x4d0882e5db169161ULL, - 0x09e7268301de7da8ULL, 0xe897699c771ac0dcULL, - 0xc8507dac3d9cc3edULL, 0xc0a878a0a1330aa6ULL, - 0x978bb352e42ba8c1ULL, 0xe9884a13ea6b743fULL, - 0x279afdbabecc28a2ULL, 0x047c8c064ed9eaabULL, - 0x507e2278b15289f4ULL, 0x599904fbb08cf45cULL, - 0xbd8ae46d15e01760ULL, 0x31353da7f2b43844ULL, - 0x8558ff49e68a528cULL, 0x76fbfc4d92ef15b5ULL, - 0x3456922e211c660cULL, 0x86799ac55c1993b4ULL, - 0x3e90d1219a51da9cULL, 0x2d5cbeb505819432ULL, - 0x982e5fd48cce4a19ULL, 0xdb9c1238a24c8d43ULL, - 0xd439febecaa96f9bULL, 0x418c0bef0960b281ULL, - 0x158ea591f6ebd1deULL, 0x1f48e69e4da66d4eULL, - 0x8afd13cf8e6fb054ULL, 0xf5e1c9011d5ed849ULL, - 0xe34e091c5126c8afULL, 0xad67ee7530a398f6ULL, - 0x43b24dec2e82c75aULL, 0x75da99c1287cd48dULL, - 0x92e81cdb3783f689ULL, 0xa3dd217cc537cecdULL, - 0x60543c50de970553ULL, 0x93f73f54aaf2426aULL, - 0xa91b62737e7a725dULL, 0xf19d4507538732e2ULL, - 0x77e4dfc20f9ea156ULL, 0x7d229ccdb4d31dc6ULL, - 0x1b346a98037f87e5ULL, 0xedf4c615a4b29e94ULL, - 0x4093286094110662ULL, 0xb0114ee85ae78063ULL, - 0x6ff1d0d6b672e78bULL, 0x6dcf96d591909250ULL, - 0xdfe09e3eec9567e8ULL, 0x3214582b4827f97cULL, - 0xb46dc2ee143e6ac8ULL, 0xf6c0ac8da7cd1971ULL, - 0xebb60c10cd8901e4ULL, 0xf7df8f023abcad92ULL, - 0x9c52d3d2c217a0b2ULL, 0x6b8d5cd0f8ab0d20ULL, - 0x3777f7a29b8fa734ULL, 0x011f238f9d71b4e3ULL, - 0xc1b75b2f3c42be45ULL, 0x5de588fdfe551ef7ULL, - 0x6eeef3592b035368ULL, 0xaa3a07ffc4e9b365ULL, - 0xecebe59a39c32a77ULL, 0x5ba742f8976e8187ULL, - 0x4b4a48e0b22d0e11ULL, 0xddded83dcb771233ULL, - 0xa59feb79ac0c51bdULL, 0xc7f5912a55792135ULL}, + { 0x190a2c9b249df23eULL, 0x2f62f8b62263e1e9ULL, 0x7a7f754740993655ULL, + 0x330b7ba4d5564d9fULL, 0x4c17a16a46672582ULL, 0xb22f08eb7d05f5b8ULL, + 0x535f47f40bc148ccULL, 0x3aec5d27d4883037ULL, 0x10ed0a1825438f96ULL, + 0x516101f72c233d17ULL, 0x13cc6f949fd04eaeULL, 0x739853c441474bfdULL, + 0x653793d90d3f5b1bULL, 0x5240647b96b0fc2fULL, 0x0c84890ad27623e0ULL, + 0xd7189b32703aaea3ULL, 0x2685de3523bd9c41ULL, 0x99317c5b11bffefaULL, + 0x0d9baa854f079703ULL, 0x70b93648fbd48ac5ULL, 0xa80441fce30bc6beULL, + 0x7287704bdc36ff1eULL, 0xb65384ed33dc1f13ULL, 0xd36417343ee34408ULL, + 0x39cd38ab6e1bf10fULL, 0x5ab861770a1f3564ULL, 0x0ebacf09f594563bULL, + 0xd04572b884708530ULL, 0x3cae9722bdb3af47ULL, 0x4a556b6f2f5cbaf2ULL, + 0xe1704f1f76c4bd74ULL, 0x5ec4ed7144c6dfcfULL, 0x16afc01d4c7810e6ULL, + 0x283f113cd629ca7aULL, 0xaf59a8761741ed2dULL, 0xeed5a3991e215facULL, + 0x3bf37ea849f984d4ULL, 0xe413e096a56ce33cULL, 0x2c439d3a98f020d1ULL, + 0x637559dc6404c46bULL, 0x9e6c95d1e5f5d569ULL, 0x24bb9836045fe99aULL, + 0x44efa466dac8ecc9ULL, 0xc6eab2a5c80895d6ULL, 0x803b50c035220cc4ULL, + 0x0321658cba93c138ULL, 0x8f9ebc465dc7ee1cULL, 0xd15a5137190131d3ULL, + 0x0fa5ec8668e5e2d8ULL, 0x91c979578d1037b1ULL, 0x0642ca05693b9f70ULL, + 0xefca80168350eb4fULL, 0x38d21b24f36a45ecULL, 0xbeab81e1af73d658ULL, + 0x8cbfd9cae7542f24ULL, 0xfd19cc0d81f11102ULL, 0x0ac6430fbb4dbc90ULL, + 0x1d76a09d6a441895ULL, 0x2a01573ff1cbbfa1ULL, 0xb572e161894fde2bULL, + 0x8124734fa853b827ULL, 0x614b1fdf43e6b1b0ULL, 0x68ac395c4238cc18ULL, + 0x21d837bfd7f7b7d2ULL, 0x20c714304a860331ULL, 0x5cfaab726324aa14ULL, + 0x74c5ba4eb50d606eULL, 0xf3a3030474654739ULL, 0x23e671bcf015c209ULL, + 0x45f087e947b9582aULL, 0xd8bd77b418df4c7bULL, 0xe06f6c90ebb50997ULL, + 0x0bd96080263c0873ULL, 0x7e03f9410e40dcfeULL, 0xb8e94be4c6484928ULL, + 0xfb5b0608e8ca8e72ULL, 0x1a2b49179e0e3306ULL, 0x4e29e76961855059ULL, + 0x4f36c4e6fcf4e4baULL, 0x49740ee395cf7bcaULL, 0xc2963ea386d17f7dULL, + 0x90d65ad810618352ULL, 0x12d34c1b02a1fa4dULL, 0xfa44258775bb3a91ULL, + 0x18150f14b9ec46ddULL, 0x1491861e6b9a653dULL, 0x9a1019d7ab2c3fc2ULL, + 0x3668d42d06fe13d7ULL, 0xdcc1fbb25606a6d0ULL, 0x969490dd795a1c22ULL, + 0x3549b1a1bc6dd2efULL, 0xc94f5e23a0ed770eULL, 0xb9f6686b5b39fdcbULL, + 0xc4d4f4a6efeae00dULL, 0xe732851a1fff2204ULL, 0x94aad6de5eb869f9ULL, + 0x3f8ff2ae07206e7fULL, 0xfe38a9813b62d03aULL, 0xa7a1ad7a8bee2466ULL, + 0x7b6056c8dde882b6ULL, 0x302a1e286fc58ca7ULL, 0x8da0fa457a259bc7ULL, + 0xb3302b64e074415bULL, 0x5402ae7eff8b635fULL, 0x08f8050c9cafc94bULL, + 0xae468bf98a3059ceULL, 0x88c355cca98dc58fULL, 0xb10e6d67c7963480ULL, + 0xbad70de7e1aa3cf3ULL, 0xbfb4a26e320262bbULL, 0xcb711820870f02d5ULL, + 0xce12b7a954a75c9dULL, 0x563ce87dd8691684ULL, 0x9f73b65e7884618aULL, + 0x2b1e74b06cba0b42ULL, 0x47cec1ea605b2df1ULL, 0x1c698312f735ac76ULL, + 0x5fdbcefed9b76b2cULL, 0x831a354c8fb1cdfcULL, 0x820516c312c0791fULL, + 0xb74ca762aeadabf0ULL, 0xfc06ef821c80a5e1ULL, 0x5723cbf24518a267ULL, + 0x9d4df05d5f661451ULL, 0x588627742dfd40bfULL, 0xda8331b73f3d39a0ULL, + 0x17b0e392d109a405ULL, 0xf965400bcf28fba9ULL, 0x7c3dbf4229a2a925ULL, + 0x023e460327e275dbULL, 0x6cd0b55a0ce126b3ULL, 0xe62da695828e96e7ULL, + 0x42ad6e63b3f373b9ULL, 0xe50cc319381d57dfULL, 0xc5cbd729729b54eeULL, + 0x46d1e265fd2a9912ULL, 0x6428b056904eeff8ULL, 0x8be23040131e04b7ULL, + 0x6709d5da2add2ec0ULL, 0x075de98af44a2b93ULL, 0x8447dcc67bfbe66fULL, + 0x6616f655b7ac9a23ULL, 0xd607b8bded4b1a40ULL, 0x0563af89d3a85e48ULL, + 0x3db1b4ad20c21ba4ULL, 0x11f22997b8323b75ULL, 0x292032b34b587e99ULL, + 0x7f1cdace9331681dULL, 0x8e819fc9c0b65affULL, 0xa1e3677fe2d5bb16ULL, + 0xcd33d225ee349da5ULL, 0xd9a2543b85aef898ULL, 0x795e10cbfa0af76dULL, + 0x25a4bbb9992e5d79ULL, 0x78413344677b438eULL, 0xf0826688cef68601ULL, + 0xd27b34bba392f0ebULL, 0x551d8df162fad7bcULL, 0x1e57c511d0d7d9adULL, + 0xdeffbdb171e4d30bULL, 0xf4feea8e802f6caaULL, 0xa480c8f6317de55eULL, + 0xa0fc44f07fa40ff5ULL, 0x95b5f551c3c9dd1aULL, 0x22f952336d6476eaULL, + 0x0000000000000000ULL, 0xa6be8ef5169f9085ULL, 0xcc2cf1aa73452946ULL, + 0x2e7ddb39bf12550aULL, 0xd526dd3157d8db78ULL, 0x486b2d6c08becf29ULL, + 0x9b0f3a58365d8b21ULL, 0xac78cdfaadd22c15ULL, 0xbc95c7e28891a383ULL, + 0x6a927f5f65dab9c3ULL, 0xc3891d2c1ba0cb9eULL, 0xeaa92f9f50f8b507ULL, + 0xcf0d9426c9d6e87eULL, 0xca6e3baf1a7eb636ULL, 0xab25247059980786ULL, + 0x69b31ad3df4978fbULL, 0xe2512a93cc577c4cULL, 0xff278a0ea61364d9ULL, + 0x71a615c766a53e26ULL, 0x89dc764334fc716cULL, 0xf87a638452594f4aULL, + 0xf2bc208be914f3daULL, 0x8766b94ac1682757ULL, 0xbbc82e687cdb8810ULL, + 0x626a7a53f9757088ULL, 0xa2c202f358467a2eULL, 0x4d0882e5db169161ULL, + 0x09e7268301de7da8ULL, 0xe897699c771ac0dcULL, 0xc8507dac3d9cc3edULL, + 0xc0a878a0a1330aa6ULL, 0x978bb352e42ba8c1ULL, 0xe9884a13ea6b743fULL, + 0x279afdbabecc28a2ULL, 0x047c8c064ed9eaabULL, 0x507e2278b15289f4ULL, + 0x599904fbb08cf45cULL, 0xbd8ae46d15e01760ULL, 0x31353da7f2b43844ULL, + 0x8558ff49e68a528cULL, 0x76fbfc4d92ef15b5ULL, 0x3456922e211c660cULL, + 0x86799ac55c1993b4ULL, 0x3e90d1219a51da9cULL, 0x2d5cbeb505819432ULL, + 0x982e5fd48cce4a19ULL, 0xdb9c1238a24c8d43ULL, 0xd439febecaa96f9bULL, + 0x418c0bef0960b281ULL, 0x158ea591f6ebd1deULL, 0x1f48e69e4da66d4eULL, + 0x8afd13cf8e6fb054ULL, 0xf5e1c9011d5ed849ULL, 0xe34e091c5126c8afULL, + 0xad67ee7530a398f6ULL, 0x43b24dec2e82c75aULL, 0x75da99c1287cd48dULL, + 0x92e81cdb3783f689ULL, 0xa3dd217cc537cecdULL, 0x60543c50de970553ULL, + 0x93f73f54aaf2426aULL, 0xa91b62737e7a725dULL, 0xf19d4507538732e2ULL, + 0x77e4dfc20f9ea156ULL, 0x7d229ccdb4d31dc6ULL, 0x1b346a98037f87e5ULL, + 0xedf4c615a4b29e94ULL, 0x4093286094110662ULL, 0xb0114ee85ae78063ULL, + 0x6ff1d0d6b672e78bULL, 0x6dcf96d591909250ULL, 0xdfe09e3eec9567e8ULL, + 0x3214582b4827f97cULL, 0xb46dc2ee143e6ac8ULL, 0xf6c0ac8da7cd1971ULL, + 0xebb60c10cd8901e4ULL, 0xf7df8f023abcad92ULL, 0x9c52d3d2c217a0b2ULL, + 0x6b8d5cd0f8ab0d20ULL, 0x3777f7a29b8fa734ULL, 0x011f238f9d71b4e3ULL, + 0xc1b75b2f3c42be45ULL, 0x5de588fdfe551ef7ULL, 0x6eeef3592b035368ULL, + 0xaa3a07ffc4e9b365ULL, 0xecebe59a39c32a77ULL, 0x5ba742f8976e8187ULL, + 0x4b4a48e0b22d0e11ULL, 0xddded83dcb771233ULL, 0xa59feb79ac0c51bdULL, + 0xc7f5912a55792135ULL }, /* 5 */ - {0x6d6ae04668a9b08aULL, 0x3ab3f04b0be8c743ULL, - 0xe51e166b54b3c908ULL, 0xbe90a9eb35c2f139ULL, - 0xb2c7066637f2bec1ULL, 0xaa6945613392202cULL, - 0x9a28c36f3b5201ebULL, 0xddce5a93ab536994ULL, - 0x0e34133ef6382827ULL, 0x52a02ba1ec55048bULL, - 0xa2f88f97c4b2a177ULL, 0x8640e513ca2251a5ULL, - 0xcdf1d36258137622ULL, 0xfe6cb708dedf8ddbULL, - 0x8a174a9ec8121e5dULL, 0x679896036b81560eULL, - 0x59ed033395795feeULL, 0x1dd778ab8b74edafULL, - 0xee533ef92d9f926dULL, 0x2a8c79baf8a8d8f5ULL, - 0x6bcf398e69b119f6ULL, 0xe20491742fafdd95ULL, - 0x276488e0809c2aecULL, 0xea955b82d88f5cceULL, - 0x7102c63a99d9e0c4ULL, 0xf9763017a5c39946ULL, - 0x429fa2501f151b3dULL, 0x4659c72bea05d59eULL, - 0x984b7fdccf5a6634ULL, 0xf742232953fbb161ULL, - 0x3041860e08c021c7ULL, 0x747bfd9616cd9386ULL, - 0x4bb1367192312787ULL, 0x1b72a1638a6c44d3ULL, - 0x4a0e68a6e8359a66ULL, 0x169a5039f258b6caULL, - 0xb98a2ef44edee5a4ULL, 0xd9083fe85e43a737ULL, - 0x967f6ce239624e13ULL, 0x8874f62d3c1a7982ULL, - 0x3c1629830af06e3fULL, 0x9165ebfd427e5a8eULL, - 0xb5dd81794ceeaa5cULL, 0x0de8f15a7834f219ULL, - 0x70bd98ede3dd5d25ULL, 0xaccc9ca9328a8950ULL, - 0x56664eda1945ca28ULL, 0x221db34c0f8859aeULL, - 0x26dbd637fa98970dULL, 0x1acdffb4f068f932ULL, - 0x4585254f64090fa0ULL, 0x72de245e17d53afaULL, - 0x1546b25d7c546cf4ULL, 0x207e0ffffb803e71ULL, - 0xfaaad2732bcf4378ULL, 0xb462dfae36ea17bdULL, - 0xcf926fd1ac1b11fdULL, 0xe0672dc7dba7ba4aULL, - 0xd3fa49ad5d6b41b3ULL, 0x8ba81449b216a3bcULL, - 0x14f9ec8a0650d115ULL, 0x40fc1ee3eb1d7ce2ULL, - 0x23a2ed9b758ce44fULL, 0x782c521b14fddc7eULL, - 0x1c68267cf170504eULL, 0xbcf31558c1ca96e6ULL, - 0xa781b43b4ba6d235ULL, 0xf6fd7dfe29ff0c80ULL, - 0xb0a4bad5c3fad91eULL, 0xd199f51ea963266cULL, - 0x414340349119c103ULL, 0x5405f269ed4dadf7ULL, - 0xabd61bb649969dcdULL, 0x6813dbeae7bdc3c8ULL, - 0x65fb2ab09f8931d1ULL, 0xf1e7fae152e3181dULL, - 0xc1a67cef5a2339daULL, 0x7a4feea8e0f5bba1ULL, - 0x1e0b9acf05783791ULL, 0x5b8ebf8061713831ULL, - 0x80e53cdbcb3af8d9ULL, 0x7e898bd315e57502ULL, - 0xc6bcfbf0213f2d47ULL, 0x95a38e86b76e942dULL, - 0x092e94218d243cbaULL, 0x8339debf453622e7ULL, - 0xb11be402b9fe64ffULL, 0x57d9100d634177c9ULL, - 0xcc4e8db52217cbc3ULL, 0x3b0cae9c71ec7aa2ULL, - 0xfb158ca451cbfe99ULL, 0x2b33276d82ac6514ULL, - 0x01bf5ed77a04bde1ULL, 0xc5601994af33f779ULL, - 0x75c4a3416cc92e67ULL, 0xf3844652a6eb7fc2ULL, - 0x3487e375fdd0ef64ULL, 0x18ae430704609eedULL, - 0x4d14efb993298efbULL, 0x815a620cb13e4538ULL, - 0x125c354207487869ULL, 0x9eeea614ce42cf48ULL, - 0xce2d3106d61fac1cULL, 0xbbe99247bad6827bULL, - 0x071a871f7b1c149dULL, 0x2e4a1cc10db81656ULL, - 0x77a71ff298c149b8ULL, 0x06a5d9c80118a97cULL, - 0xad73c27e488e34b1ULL, 0x443a7b981e0db241ULL, - 0xe3bbcfa355ab6074ULL, 0x0af276450328e684ULL, - 0x73617a896dd1871bULL, 0x58525de4ef7de20fULL, - 0xb7be3dcab8e6cd83ULL, 0x19111dd07e64230cULL, - 0x842359a03e2a367aULL, 0x103f89f1f3401fb6ULL, - 0xdc710444d157d475ULL, 0xb835702334da5845ULL, - 0x4320fc876511a6dcULL, 0xd026abc9d3679b8dULL, - 0x17250eee885c0b2bULL, 0x90dab52a387ae76fULL, - 0x31fed8d972c49c26ULL, 0x89cba8fa461ec463ULL, - 0x2ff5421677bcabb7ULL, 0x396f122f85e41d7dULL, - 0xa09b332430bac6a8ULL, 0xc888e8ced7070560ULL, - 0xaeaf201ac682ee8fULL, 0x1180d7268944a257ULL, - 0xf058a43628e7a5fcULL, 0xbd4c4b8fbbce2b07ULL, - 0xa1246df34abe7b49ULL, 0x7d5569b79be9af3cULL, - 0xa9b5a705bd9efa12ULL, 0xdb6b835baa4bc0e8ULL, - 0x05793bac8f147342ULL, 0x21c1512881848390ULL, - 0xfdb0556c50d357e5ULL, 0x613d4fcb6a99ff72ULL, - 0x03dce2648e0cda3eULL, 0xe949b9e6568386f0ULL, - 0xfc0f0bbb2ad7ea04ULL, 0x6a70675913b5a417ULL, - 0x7f36d5046fe1c8e3ULL, 0x0c57af8d02304ff8ULL, - 0x32223abdfcc84618ULL, 0x0891caf6f720815bULL, - 0xa63eeaec31a26fd4ULL, 0x2507345374944d33ULL, - 0x49d28ac266394058ULL, 0xf5219f9aa7f3d6beULL, - 0x2d96fea583b4cc68ULL, 0x5a31e1571b7585d0ULL, - 0x8ed12fe53d02d0feULL, 0xdfade6205f5b0e4bULL, - 0x4cabb16ee92d331aULL, 0x04c6657bf510cea3ULL, - 0xd73c2cd6a87b8f10ULL, 0xe1d87310a1a307abULL, - 0x6cd5be9112ad0d6bULL, 0x97c032354366f3f2ULL, - 0xd4e0ceb22677552eULL, 0x0000000000000000ULL, - 0x29509bde76a402cbULL, 0xc27a9e8bd42fe3e4ULL, - 0x5ef7842cee654b73ULL, 0xaf107ecdbc86536eULL, - 0x3fcacbe784fcb401ULL, 0xd55f90655c73e8cfULL, - 0xe6c2f40fdabf1336ULL, 0xe8f6e7312c873b11ULL, - 0xeb2a0555a28be12fULL, 0xe4a148bc2eb774e9ULL, - 0x9b979db84156bc0aULL, 0x6eb60222e6a56ab4ULL, - 0x87ffbbc4b026ec44ULL, 0xc703a5275b3b90a6ULL, - 0x47e699fc9001687fULL, 0x9c8d1aa73a4aa897ULL, - 0x7cea3760e1ed12ddULL, 0x4ec80ddd1d2554c5ULL, - 0x13e36b957d4cc588ULL, 0x5d2b66486069914dULL, - 0x92b90999cc7280b0ULL, 0x517cc9c56259deb5ULL, - 0xc937b619ad03b881ULL, 0xec30824ad997f5b2ULL, - 0xa45d565fc5aa080bULL, 0xd6837201d27f32f1ULL, - 0x635ef3789e9198adULL, 0x531f75769651b96aULL, - 0x4f77530a6721e924ULL, 0x486dd4151c3dfdb9ULL, - 0x5f48dafb9461f692ULL, 0x375b011173dc355aULL, - 0x3da9775470f4d3deULL, 0x8d0dcd81b30e0ac0ULL, - 0x36e45fc609d888bbULL, 0x55baacbe97491016ULL, - 0x8cb29356c90ab721ULL, 0x76184125e2c5f459ULL, - 0x99f4210bb55edbd5ULL, 0x6f095cf59ca1d755ULL, - 0x9f51f8c3b44672a9ULL, 0x3538bda287d45285ULL, - 0x50c39712185d6354ULL, 0xf23b1885dcefc223ULL, - 0x79930ccc6ef9619fULL, 0xed8fdc9da3934853ULL, - 0xcb540aaa590bdf5eULL, 0x5c94389f1a6d2cacULL, - 0xe77daad8a0bbaed7ULL, 0x28efc5090ca0bf2aULL, - 0xbf2ff73c4fc64cd8ULL, 0xb37858b14df60320ULL, - 0xf8c96ec0dfc724a7ULL, 0x828680683f329f06ULL, - 0x941cd051cd6a29ccULL, 0xc3c5c05cae2b5e05ULL, - 0xb601631dc2e27062ULL, 0xc01922382027843bULL, - 0x24b86a840e90f0d2ULL, 0xd245177a276ffc52ULL, - 0x0f8b4de98c3c95c6ULL, 0x3e759530fef809e0ULL, - 0x0b4d2892792c5b65ULL, 0xc4df4743d5374a98ULL, - 0xa5e20888bfaeb5eaULL, 0xba56cc90c0d23f9aULL, - 0x38d04cf8ffe0a09cULL, 0x62e1adafe495254cULL, - 0x0263bcb3f40867dfULL, 0xcaeb547d230f62bfULL, - 0x6082111c109d4293ULL, 0xdad4dd8cd04f7d09ULL, - 0xefec602e579b2f8cULL, 0x1fb4c4187f7c8a70ULL, - 0xffd3e9dfa4db303aULL, 0x7bf0b07f9af10640ULL, - 0xf49ec14dddf76b5fULL, 0x8f6e713247066d1fULL, - 0x339d646a86ccfbf9ULL, 0x64447467e58d8c30ULL, - 0x2c29a072f9b07189ULL, 0xd8b7613f24471ad6ULL, - 0x6627c8d41185ebefULL, 0xa347d140beb61c96ULL, - 0xde12b8f7255fb3aaULL, 0x9d324470404e1576ULL, - 0x9306574eb6763d51ULL, 0xa80af9d2c79a47f3ULL, - 0x859c0777442e8b9bULL, 0x69ac853d9db97e29ULL}, + { 0x6d6ae04668a9b08aULL, 0x3ab3f04b0be8c743ULL, 0xe51e166b54b3c908ULL, + 0xbe90a9eb35c2f139ULL, 0xb2c7066637f2bec1ULL, 0xaa6945613392202cULL, + 0x9a28c36f3b5201ebULL, 0xddce5a93ab536994ULL, 0x0e34133ef6382827ULL, + 0x52a02ba1ec55048bULL, 0xa2f88f97c4b2a177ULL, 0x8640e513ca2251a5ULL, + 0xcdf1d36258137622ULL, 0xfe6cb708dedf8ddbULL, 0x8a174a9ec8121e5dULL, + 0x679896036b81560eULL, 0x59ed033395795feeULL, 0x1dd778ab8b74edafULL, + 0xee533ef92d9f926dULL, 0x2a8c79baf8a8d8f5ULL, 0x6bcf398e69b119f6ULL, + 0xe20491742fafdd95ULL, 0x276488e0809c2aecULL, 0xea955b82d88f5cceULL, + 0x7102c63a99d9e0c4ULL, 0xf9763017a5c39946ULL, 0x429fa2501f151b3dULL, + 0x4659c72bea05d59eULL, 0x984b7fdccf5a6634ULL, 0xf742232953fbb161ULL, + 0x3041860e08c021c7ULL, 0x747bfd9616cd9386ULL, 0x4bb1367192312787ULL, + 0x1b72a1638a6c44d3ULL, 0x4a0e68a6e8359a66ULL, 0x169a5039f258b6caULL, + 0xb98a2ef44edee5a4ULL, 0xd9083fe85e43a737ULL, 0x967f6ce239624e13ULL, + 0x8874f62d3c1a7982ULL, 0x3c1629830af06e3fULL, 0x9165ebfd427e5a8eULL, + 0xb5dd81794ceeaa5cULL, 0x0de8f15a7834f219ULL, 0x70bd98ede3dd5d25ULL, + 0xaccc9ca9328a8950ULL, 0x56664eda1945ca28ULL, 0x221db34c0f8859aeULL, + 0x26dbd637fa98970dULL, 0x1acdffb4f068f932ULL, 0x4585254f64090fa0ULL, + 0x72de245e17d53afaULL, 0x1546b25d7c546cf4ULL, 0x207e0ffffb803e71ULL, + 0xfaaad2732bcf4378ULL, 0xb462dfae36ea17bdULL, 0xcf926fd1ac1b11fdULL, + 0xe0672dc7dba7ba4aULL, 0xd3fa49ad5d6b41b3ULL, 0x8ba81449b216a3bcULL, + 0x14f9ec8a0650d115ULL, 0x40fc1ee3eb1d7ce2ULL, 0x23a2ed9b758ce44fULL, + 0x782c521b14fddc7eULL, 0x1c68267cf170504eULL, 0xbcf31558c1ca96e6ULL, + 0xa781b43b4ba6d235ULL, 0xf6fd7dfe29ff0c80ULL, 0xb0a4bad5c3fad91eULL, + 0xd199f51ea963266cULL, 0x414340349119c103ULL, 0x5405f269ed4dadf7ULL, + 0xabd61bb649969dcdULL, 0x6813dbeae7bdc3c8ULL, 0x65fb2ab09f8931d1ULL, + 0xf1e7fae152e3181dULL, 0xc1a67cef5a2339daULL, 0x7a4feea8e0f5bba1ULL, + 0x1e0b9acf05783791ULL, 0x5b8ebf8061713831ULL, 0x80e53cdbcb3af8d9ULL, + 0x7e898bd315e57502ULL, 0xc6bcfbf0213f2d47ULL, 0x95a38e86b76e942dULL, + 0x092e94218d243cbaULL, 0x8339debf453622e7ULL, 0xb11be402b9fe64ffULL, + 0x57d9100d634177c9ULL, 0xcc4e8db52217cbc3ULL, 0x3b0cae9c71ec7aa2ULL, + 0xfb158ca451cbfe99ULL, 0x2b33276d82ac6514ULL, 0x01bf5ed77a04bde1ULL, + 0xc5601994af33f779ULL, 0x75c4a3416cc92e67ULL, 0xf3844652a6eb7fc2ULL, + 0x3487e375fdd0ef64ULL, 0x18ae430704609eedULL, 0x4d14efb993298efbULL, + 0x815a620cb13e4538ULL, 0x125c354207487869ULL, 0x9eeea614ce42cf48ULL, + 0xce2d3106d61fac1cULL, 0xbbe99247bad6827bULL, 0x071a871f7b1c149dULL, + 0x2e4a1cc10db81656ULL, 0x77a71ff298c149b8ULL, 0x06a5d9c80118a97cULL, + 0xad73c27e488e34b1ULL, 0x443a7b981e0db241ULL, 0xe3bbcfa355ab6074ULL, + 0x0af276450328e684ULL, 0x73617a896dd1871bULL, 0x58525de4ef7de20fULL, + 0xb7be3dcab8e6cd83ULL, 0x19111dd07e64230cULL, 0x842359a03e2a367aULL, + 0x103f89f1f3401fb6ULL, 0xdc710444d157d475ULL, 0xb835702334da5845ULL, + 0x4320fc876511a6dcULL, 0xd026abc9d3679b8dULL, 0x17250eee885c0b2bULL, + 0x90dab52a387ae76fULL, 0x31fed8d972c49c26ULL, 0x89cba8fa461ec463ULL, + 0x2ff5421677bcabb7ULL, 0x396f122f85e41d7dULL, 0xa09b332430bac6a8ULL, + 0xc888e8ced7070560ULL, 0xaeaf201ac682ee8fULL, 0x1180d7268944a257ULL, + 0xf058a43628e7a5fcULL, 0xbd4c4b8fbbce2b07ULL, 0xa1246df34abe7b49ULL, + 0x7d5569b79be9af3cULL, 0xa9b5a705bd9efa12ULL, 0xdb6b835baa4bc0e8ULL, + 0x05793bac8f147342ULL, 0x21c1512881848390ULL, 0xfdb0556c50d357e5ULL, + 0x613d4fcb6a99ff72ULL, 0x03dce2648e0cda3eULL, 0xe949b9e6568386f0ULL, + 0xfc0f0bbb2ad7ea04ULL, 0x6a70675913b5a417ULL, 0x7f36d5046fe1c8e3ULL, + 0x0c57af8d02304ff8ULL, 0x32223abdfcc84618ULL, 0x0891caf6f720815bULL, + 0xa63eeaec31a26fd4ULL, 0x2507345374944d33ULL, 0x49d28ac266394058ULL, + 0xf5219f9aa7f3d6beULL, 0x2d96fea583b4cc68ULL, 0x5a31e1571b7585d0ULL, + 0x8ed12fe53d02d0feULL, 0xdfade6205f5b0e4bULL, 0x4cabb16ee92d331aULL, + 0x04c6657bf510cea3ULL, 0xd73c2cd6a87b8f10ULL, 0xe1d87310a1a307abULL, + 0x6cd5be9112ad0d6bULL, 0x97c032354366f3f2ULL, 0xd4e0ceb22677552eULL, + 0x0000000000000000ULL, 0x29509bde76a402cbULL, 0xc27a9e8bd42fe3e4ULL, + 0x5ef7842cee654b73ULL, 0xaf107ecdbc86536eULL, 0x3fcacbe784fcb401ULL, + 0xd55f90655c73e8cfULL, 0xe6c2f40fdabf1336ULL, 0xe8f6e7312c873b11ULL, + 0xeb2a0555a28be12fULL, 0xe4a148bc2eb774e9ULL, 0x9b979db84156bc0aULL, + 0x6eb60222e6a56ab4ULL, 0x87ffbbc4b026ec44ULL, 0xc703a5275b3b90a6ULL, + 0x47e699fc9001687fULL, 0x9c8d1aa73a4aa897ULL, 0x7cea3760e1ed12ddULL, + 0x4ec80ddd1d2554c5ULL, 0x13e36b957d4cc588ULL, 0x5d2b66486069914dULL, + 0x92b90999cc7280b0ULL, 0x517cc9c56259deb5ULL, 0xc937b619ad03b881ULL, + 0xec30824ad997f5b2ULL, 0xa45d565fc5aa080bULL, 0xd6837201d27f32f1ULL, + 0x635ef3789e9198adULL, 0x531f75769651b96aULL, 0x4f77530a6721e924ULL, + 0x486dd4151c3dfdb9ULL, 0x5f48dafb9461f692ULL, 0x375b011173dc355aULL, + 0x3da9775470f4d3deULL, 0x8d0dcd81b30e0ac0ULL, 0x36e45fc609d888bbULL, + 0x55baacbe97491016ULL, 0x8cb29356c90ab721ULL, 0x76184125e2c5f459ULL, + 0x99f4210bb55edbd5ULL, 0x6f095cf59ca1d755ULL, 0x9f51f8c3b44672a9ULL, + 0x3538bda287d45285ULL, 0x50c39712185d6354ULL, 0xf23b1885dcefc223ULL, + 0x79930ccc6ef9619fULL, 0xed8fdc9da3934853ULL, 0xcb540aaa590bdf5eULL, + 0x5c94389f1a6d2cacULL, 0xe77daad8a0bbaed7ULL, 0x28efc5090ca0bf2aULL, + 0xbf2ff73c4fc64cd8ULL, 0xb37858b14df60320ULL, 0xf8c96ec0dfc724a7ULL, + 0x828680683f329f06ULL, 0x941cd051cd6a29ccULL, 0xc3c5c05cae2b5e05ULL, + 0xb601631dc2e27062ULL, 0xc01922382027843bULL, 0x24b86a840e90f0d2ULL, + 0xd245177a276ffc52ULL, 0x0f8b4de98c3c95c6ULL, 0x3e759530fef809e0ULL, + 0x0b4d2892792c5b65ULL, 0xc4df4743d5374a98ULL, 0xa5e20888bfaeb5eaULL, + 0xba56cc90c0d23f9aULL, 0x38d04cf8ffe0a09cULL, 0x62e1adafe495254cULL, + 0x0263bcb3f40867dfULL, 0xcaeb547d230f62bfULL, 0x6082111c109d4293ULL, + 0xdad4dd8cd04f7d09ULL, 0xefec602e579b2f8cULL, 0x1fb4c4187f7c8a70ULL, + 0xffd3e9dfa4db303aULL, 0x7bf0b07f9af10640ULL, 0xf49ec14dddf76b5fULL, + 0x8f6e713247066d1fULL, 0x339d646a86ccfbf9ULL, 0x64447467e58d8c30ULL, + 0x2c29a072f9b07189ULL, 0xd8b7613f24471ad6ULL, 0x6627c8d41185ebefULL, + 0xa347d140beb61c96ULL, 0xde12b8f7255fb3aaULL, 0x9d324470404e1576ULL, + 0x9306574eb6763d51ULL, 0xa80af9d2c79a47f3ULL, 0x859c0777442e8b9bULL, + 0x69ac853d9db97e29ULL }, /* 6 */ - {0xc3407dfc2de6377eULL, 0x5b9e93eea4256f77ULL, - 0xadb58fdd50c845e0ULL, 0x5219ff11a75bed86ULL, - 0x356b61cfd90b1de9ULL, 0xfb8f406e25abe037ULL, - 0x7a5a0231c0f60796ULL, 0x9d3cd216e1f5020bULL, - 0x0c6550fb6b48d8f3ULL, 0xf57508c427ff1c62ULL, - 0x4ad35ffa71cb407dULL, 0x6290a2da1666aa6dULL, - 0xe284ec2349355f9fULL, 0xb3c307c53d7c84ecULL, - 0x05e23c0468365a02ULL, 0x190bac4d6c9ebfa8ULL, - 0x94bbbee9e28b80faULL, 0xa34fc777529cb9b5ULL, - 0xcc7b39f095bcd978ULL, 0x2426addb0ce532e3ULL, - 0x7e79329312ce4fc7ULL, 0xab09a72eebec2917ULL, - 0xf8d15499f6b9d6c2ULL, 0x1a55b8babf8c895dULL, - 0xdb8add17fb769a85ULL, 0xb57f2f368658e81bULL, - 0x8acd36f18f3f41f6ULL, 0x5ce3b7bba50f11d3ULL, - 0x114dcc14d5ee2f0aULL, 0xb91a7fcded1030e8ULL, - 0x81d5425fe55de7a1ULL, 0xb6213bc1554adeeeULL, - 0x80144ef95f53f5f2ULL, 0x1e7688186db4c10cULL, - 0x3b912965db5fe1bcULL, 0xc281715a97e8252dULL, - 0x54a5d7e21c7f8171ULL, 0x4b12535ccbc5522eULL, - 0x1d289cefbea6f7f9ULL, 0x6ef5f2217d2e729eULL, - 0xe6a7dc819b0d17ceULL, 0x1b94b41c05829b0eULL, - 0x33d7493c622f711eULL, 0xdcf7f942fa5ce421ULL, - 0x600fba8b7f7a8ecbULL, 0x46b60f011a83988eULL, - 0x235b898e0dcf4c47ULL, 0x957ab24f588592a9ULL, - 0x4354330572b5c28cULL, 0xa5f3ef84e9b8d542ULL, - 0x8c711e02341b2d01ULL, 0x0b1874ae6a62a657ULL, - 0x1213d8e306fc19ffULL, 0xfe6d7c6a4d9dba35ULL, - 0x65ed868f174cd4c9ULL, 0x88522ea0e6236550ULL, - 0x899322065c2d7703ULL, 0xc01e690bfef4018bULL, - 0x915982ed8abddaf8ULL, 0xbe675b98ec3a4e4cULL, - 0xa996bf7f82f00db1ULL, 0xe1daf8d49a27696aULL, - 0x2effd5d3dc8986e7ULL, 0xd153a51f2b1a2e81ULL, - 0x18caa0ebd690adfbULL, 0x390e3134b243c51aULL, - 0x2778b92cdff70416ULL, 0x029f1851691c24a6ULL, - 0x5e7cafeacc133575ULL, 0xfa4e4cc89fa5f264ULL, - 0x5a5f9f481e2b7d24ULL, 0x484c47ab18d764dbULL, - 0x400a27f2a1a7f479ULL, 0xaeeb9b2a83da7315ULL, - 0x721c626879869734ULL, 0x042330a2d2384851ULL, - 0x85f672fd3765aff0ULL, 0xba446b3a3e02061dULL, - 0x73dd6ecec3888567ULL, 0xffac70ccf793a866ULL, - 0xdfa9edb5294ed2d4ULL, 0x6c6aea7014325638ULL, - 0x834a5a0e8c41c307ULL, 0xcdba35562fb2cb2bULL, - 0x0ad97808d06cb404ULL, 0x0f3b440cb85aee06ULL, - 0xe5f9c876481f213bULL, 0x98deee1289c35809ULL, - 0x59018bbfcd394bd1ULL, 0xe01bf47220297b39ULL, - 0xde68e1139340c087ULL, 0x9fa3ca4788e926adULL, - 0xbb85679c840c144eULL, 0x53d8f3b71d55ffd5ULL, - 0x0da45c5dd146caa0ULL, 0x6f34fe87c72060cdULL, - 0x57fbc315cf6db784ULL, 0xcee421a1fca0fddeULL, - 0x3d2d0196607b8d4bULL, 0x642c8a29ad42c69aULL, - 0x14aff010bdd87508ULL, 0xac74837beac657b3ULL, - 0x3216459ad821634dULL, 0x3fb219c70967a9edULL, - 0x06bc28f3bb246cf7ULL, 0xf2082c9126d562c6ULL, - 0x66b39278c45ee23cULL, 0xbd394f6f3f2878b9ULL, - 0xfd33689d9e8f8cc0ULL, 0x37f4799eb017394fULL, - 0x108cc0b26fe03d59ULL, 0xda4bd1b1417888d6ULL, - 0xb09d1332ee6eb219ULL, 0x2f3ed975668794b4ULL, - 0x58c0871977375982ULL, 0x7561463d78ace990ULL, - 0x09876cff037e82f1ULL, 0x7fb83e35a8c05d94ULL, - 0x26b9b58a65f91645ULL, 0xef20b07e9873953fULL, - 0x3148516d0b3355b8ULL, 0x41cb2b541ba9e62aULL, - 0x790416c613e43163ULL, 0xa011d380818e8f40ULL, - 0x3a5025c36151f3efULL, 0xd57095bdf92266d0ULL, - 0x498d4b0da2d97688ULL, 0x8b0c3a57353153a5ULL, - 0x21c491df64d368e1ULL, 0x8f2f0af5e7091bf4ULL, - 0x2da1c1240f9bb012ULL, 0xc43d59a92ccc49daULL, - 0xbfa6573e56345c1fULL, 0x828b56a8364fd154ULL, - 0x9a41f643e0df7cafULL, 0xbcf843c985266aeaULL, - 0x2b1de9d7b4bfdce5ULL, 0x20059d79dedd7ab2ULL, - 0x6dabe6d6ae3c446bULL, 0x45e81bf6c991ae7bULL, - 0x6351ae7cac68b83eULL, 0xa432e32253b6c711ULL, - 0xd092a9b991143cd2ULL, 0xcac711032e98b58fULL, - 0xd8d4c9e02864ac70ULL, 0xc5fc550f96c25b89ULL, - 0xd7ef8dec903e4276ULL, 0x67729ede7e50f06fULL, - 0xeac28c7af045cf3dULL, 0xb15c1f945460a04aULL, - 0x9cfddeb05bfb1058ULL, 0x93c69abce3a1fe5eULL, - 0xeb0380dc4a4bdd6eULL, 0xd20db1e8f8081874ULL, - 0x229a8528b7c15e14ULL, 0x44291750739fbc28ULL, - 0xd3ccbd4e42060a27ULL, 0xf62b1c33f4ed2a97ULL, - 0x86a8660ae4779905ULL, 0xd62e814a2a305025ULL, - 0x477703a7a08d8addULL, 0x7b9b0e977af815c5ULL, - 0x78c51a60a9ea2330ULL, 0xa6adfb733aaae3b7ULL, - 0x97e5aa1e3199b60fULL, 0x0000000000000000ULL, - 0xf4b404629df10e31ULL, 0x5564db44a6719322ULL, - 0x9207961a59afec0dULL, 0x9624a6b88b97a45cULL, - 0x363575380a192b1cULL, 0x2c60cd82b595a241ULL, - 0x7d272664c1dc7932ULL, 0x7142769faa94a1c1ULL, - 0xa1d0df263b809d13ULL, 0x1630e841d4c451aeULL, - 0xc1df65ad44fa13d8ULL, 0x13d2d445bcf20bacULL, - 0xd915c546926abe23ULL, 0x38cf3d92084dd749ULL, - 0xe766d0272103059dULL, 0xc7634d5effde7f2fULL, - 0x077d2455012a7ea4ULL, 0xedbfa82ff16fb199ULL, - 0xaf2a978c39d46146ULL, 0x42953fa3c8bbd0dfULL, - 0xcb061da59496a7dcULL, 0x25e7a17db6eb20b0ULL, - 0x34aa6d6963050fbaULL, 0xa76cf7d580a4f1e4ULL, - 0xf7ea10954ee338c4ULL, 0xfcf2643b24819e93ULL, - 0xcf252d0746aeef8dULL, 0x4ef06f58a3f3082cULL, - 0x563acfb37563a5d7ULL, 0x5086e740ce47c920ULL, - 0x2982f186dda3f843ULL, 0x87696aac5e798b56ULL, - 0x5d22bb1d1f010380ULL, 0x035e14f7d31236f5ULL, - 0x3cec0d30da759f18ULL, 0xf3c920379cdb7095ULL, - 0xb8db736b571e22bbULL, 0xdd36f5e44052f672ULL, - 0xaac8ab8851e23b44ULL, 0xa857b3d938fe1fe2ULL, - 0x17f1e4e76eca43fdULL, 0xec7ea4894b61a3caULL, - 0x9e62c6e132e734feULL, 0xd4b1991b432c7483ULL, - 0x6ad6c283af163acfULL, 0x1ce9904904a8e5aaULL, - 0x5fbda34c761d2726ULL, 0xf910583f4cb7c491ULL, - 0xc6a241f845d06d7cULL, 0x4f3163fe19fd1a7fULL, - 0xe99c988d2357f9c8ULL, 0x8eee06535d0709a7ULL, - 0x0efa48aa0254fc55ULL, 0xb4be23903c56fa48ULL, - 0x763f52caabbedf65ULL, 0xeee1bcd8227d876cULL, - 0xe345e085f33b4dccULL, 0x3e731561b369bbbeULL, - 0x2843fd2067adea10ULL, 0x2adce5710eb1ceb6ULL, - 0xb7e03767ef44ccbdULL, 0x8db012a48e153f52ULL, - 0x61ceb62dc5749c98ULL, 0xe85d942b9959eb9bULL, - 0x4c6f7709caef2c8aULL, 0x84377e5b8d6bbda3ULL, - 0x30895dcbb13d47ebULL, 0x74a04a9bc2a2fbc3ULL, - 0x6b17ce251518289cULL, 0xe438c4d0f2113368ULL, - 0x1fb784bed7bad35fULL, 0x9b80fae55ad16efcULL, - 0x77fe5e6c11b0cd36ULL, 0xc858095247849129ULL, - 0x08466059b97090a2ULL, 0x01c10ca6ba0e1253ULL, - 0x6988d6747c040c3aULL, 0x6849dad2c60a1e69ULL, - 0x5147ebe67449db73ULL, 0xc99905f4fd8a837aULL, - 0x991fe2b433cd4a5aULL, 0xf09734c04fc94660ULL, - 0xa28ecbd1e892abe6ULL, 0xf1563866f5c75433ULL, - 0x4dae7baf70e13ed9ULL, 0x7ce62ac27bd26b61ULL, - 0x70837a39109ab392ULL, 0x90988e4b30b3c8abULL, - 0xb2020b63877296bfULL, 0x156efcb607d6675bULL}, + { 0xc3407dfc2de6377eULL, 0x5b9e93eea4256f77ULL, 0xadb58fdd50c845e0ULL, + 0x5219ff11a75bed86ULL, 0x356b61cfd90b1de9ULL, 0xfb8f406e25abe037ULL, + 0x7a5a0231c0f60796ULL, 0x9d3cd216e1f5020bULL, 0x0c6550fb6b48d8f3ULL, + 0xf57508c427ff1c62ULL, 0x4ad35ffa71cb407dULL, 0x6290a2da1666aa6dULL, + 0xe284ec2349355f9fULL, 0xb3c307c53d7c84ecULL, 0x05e23c0468365a02ULL, + 0x190bac4d6c9ebfa8ULL, 0x94bbbee9e28b80faULL, 0xa34fc777529cb9b5ULL, + 0xcc7b39f095bcd978ULL, 0x2426addb0ce532e3ULL, 0x7e79329312ce4fc7ULL, + 0xab09a72eebec2917ULL, 0xf8d15499f6b9d6c2ULL, 0x1a55b8babf8c895dULL, + 0xdb8add17fb769a85ULL, 0xb57f2f368658e81bULL, 0x8acd36f18f3f41f6ULL, + 0x5ce3b7bba50f11d3ULL, 0x114dcc14d5ee2f0aULL, 0xb91a7fcded1030e8ULL, + 0x81d5425fe55de7a1ULL, 0xb6213bc1554adeeeULL, 0x80144ef95f53f5f2ULL, + 0x1e7688186db4c10cULL, 0x3b912965db5fe1bcULL, 0xc281715a97e8252dULL, + 0x54a5d7e21c7f8171ULL, 0x4b12535ccbc5522eULL, 0x1d289cefbea6f7f9ULL, + 0x6ef5f2217d2e729eULL, 0xe6a7dc819b0d17ceULL, 0x1b94b41c05829b0eULL, + 0x33d7493c622f711eULL, 0xdcf7f942fa5ce421ULL, 0x600fba8b7f7a8ecbULL, + 0x46b60f011a83988eULL, 0x235b898e0dcf4c47ULL, 0x957ab24f588592a9ULL, + 0x4354330572b5c28cULL, 0xa5f3ef84e9b8d542ULL, 0x8c711e02341b2d01ULL, + 0x0b1874ae6a62a657ULL, 0x1213d8e306fc19ffULL, 0xfe6d7c6a4d9dba35ULL, + 0x65ed868f174cd4c9ULL, 0x88522ea0e6236550ULL, 0x899322065c2d7703ULL, + 0xc01e690bfef4018bULL, 0x915982ed8abddaf8ULL, 0xbe675b98ec3a4e4cULL, + 0xa996bf7f82f00db1ULL, 0xe1daf8d49a27696aULL, 0x2effd5d3dc8986e7ULL, + 0xd153a51f2b1a2e81ULL, 0x18caa0ebd690adfbULL, 0x390e3134b243c51aULL, + 0x2778b92cdff70416ULL, 0x029f1851691c24a6ULL, 0x5e7cafeacc133575ULL, + 0xfa4e4cc89fa5f264ULL, 0x5a5f9f481e2b7d24ULL, 0x484c47ab18d764dbULL, + 0x400a27f2a1a7f479ULL, 0xaeeb9b2a83da7315ULL, 0x721c626879869734ULL, + 0x042330a2d2384851ULL, 0x85f672fd3765aff0ULL, 0xba446b3a3e02061dULL, + 0x73dd6ecec3888567ULL, 0xffac70ccf793a866ULL, 0xdfa9edb5294ed2d4ULL, + 0x6c6aea7014325638ULL, 0x834a5a0e8c41c307ULL, 0xcdba35562fb2cb2bULL, + 0x0ad97808d06cb404ULL, 0x0f3b440cb85aee06ULL, 0xe5f9c876481f213bULL, + 0x98deee1289c35809ULL, 0x59018bbfcd394bd1ULL, 0xe01bf47220297b39ULL, + 0xde68e1139340c087ULL, 0x9fa3ca4788e926adULL, 0xbb85679c840c144eULL, + 0x53d8f3b71d55ffd5ULL, 0x0da45c5dd146caa0ULL, 0x6f34fe87c72060cdULL, + 0x57fbc315cf6db784ULL, 0xcee421a1fca0fddeULL, 0x3d2d0196607b8d4bULL, + 0x642c8a29ad42c69aULL, 0x14aff010bdd87508ULL, 0xac74837beac657b3ULL, + 0x3216459ad821634dULL, 0x3fb219c70967a9edULL, 0x06bc28f3bb246cf7ULL, + 0xf2082c9126d562c6ULL, 0x66b39278c45ee23cULL, 0xbd394f6f3f2878b9ULL, + 0xfd33689d9e8f8cc0ULL, 0x37f4799eb017394fULL, 0x108cc0b26fe03d59ULL, + 0xda4bd1b1417888d6ULL, 0xb09d1332ee6eb219ULL, 0x2f3ed975668794b4ULL, + 0x58c0871977375982ULL, 0x7561463d78ace990ULL, 0x09876cff037e82f1ULL, + 0x7fb83e35a8c05d94ULL, 0x26b9b58a65f91645ULL, 0xef20b07e9873953fULL, + 0x3148516d0b3355b8ULL, 0x41cb2b541ba9e62aULL, 0x790416c613e43163ULL, + 0xa011d380818e8f40ULL, 0x3a5025c36151f3efULL, 0xd57095bdf92266d0ULL, + 0x498d4b0da2d97688ULL, 0x8b0c3a57353153a5ULL, 0x21c491df64d368e1ULL, + 0x8f2f0af5e7091bf4ULL, 0x2da1c1240f9bb012ULL, 0xc43d59a92ccc49daULL, + 0xbfa6573e56345c1fULL, 0x828b56a8364fd154ULL, 0x9a41f643e0df7cafULL, + 0xbcf843c985266aeaULL, 0x2b1de9d7b4bfdce5ULL, 0x20059d79dedd7ab2ULL, + 0x6dabe6d6ae3c446bULL, 0x45e81bf6c991ae7bULL, 0x6351ae7cac68b83eULL, + 0xa432e32253b6c711ULL, 0xd092a9b991143cd2ULL, 0xcac711032e98b58fULL, + 0xd8d4c9e02864ac70ULL, 0xc5fc550f96c25b89ULL, 0xd7ef8dec903e4276ULL, + 0x67729ede7e50f06fULL, 0xeac28c7af045cf3dULL, 0xb15c1f945460a04aULL, + 0x9cfddeb05bfb1058ULL, 0x93c69abce3a1fe5eULL, 0xeb0380dc4a4bdd6eULL, + 0xd20db1e8f8081874ULL, 0x229a8528b7c15e14ULL, 0x44291750739fbc28ULL, + 0xd3ccbd4e42060a27ULL, 0xf62b1c33f4ed2a97ULL, 0x86a8660ae4779905ULL, + 0xd62e814a2a305025ULL, 0x477703a7a08d8addULL, 0x7b9b0e977af815c5ULL, + 0x78c51a60a9ea2330ULL, 0xa6adfb733aaae3b7ULL, 0x97e5aa1e3199b60fULL, + 0x0000000000000000ULL, 0xf4b404629df10e31ULL, 0x5564db44a6719322ULL, + 0x9207961a59afec0dULL, 0x9624a6b88b97a45cULL, 0x363575380a192b1cULL, + 0x2c60cd82b595a241ULL, 0x7d272664c1dc7932ULL, 0x7142769faa94a1c1ULL, + 0xa1d0df263b809d13ULL, 0x1630e841d4c451aeULL, 0xc1df65ad44fa13d8ULL, + 0x13d2d445bcf20bacULL, 0xd915c546926abe23ULL, 0x38cf3d92084dd749ULL, + 0xe766d0272103059dULL, 0xc7634d5effde7f2fULL, 0x077d2455012a7ea4ULL, + 0xedbfa82ff16fb199ULL, 0xaf2a978c39d46146ULL, 0x42953fa3c8bbd0dfULL, + 0xcb061da59496a7dcULL, 0x25e7a17db6eb20b0ULL, 0x34aa6d6963050fbaULL, + 0xa76cf7d580a4f1e4ULL, 0xf7ea10954ee338c4ULL, 0xfcf2643b24819e93ULL, + 0xcf252d0746aeef8dULL, 0x4ef06f58a3f3082cULL, 0x563acfb37563a5d7ULL, + 0x5086e740ce47c920ULL, 0x2982f186dda3f843ULL, 0x87696aac5e798b56ULL, + 0x5d22bb1d1f010380ULL, 0x035e14f7d31236f5ULL, 0x3cec0d30da759f18ULL, + 0xf3c920379cdb7095ULL, 0xb8db736b571e22bbULL, 0xdd36f5e44052f672ULL, + 0xaac8ab8851e23b44ULL, 0xa857b3d938fe1fe2ULL, 0x17f1e4e76eca43fdULL, + 0xec7ea4894b61a3caULL, 0x9e62c6e132e734feULL, 0xd4b1991b432c7483ULL, + 0x6ad6c283af163acfULL, 0x1ce9904904a8e5aaULL, 0x5fbda34c761d2726ULL, + 0xf910583f4cb7c491ULL, 0xc6a241f845d06d7cULL, 0x4f3163fe19fd1a7fULL, + 0xe99c988d2357f9c8ULL, 0x8eee06535d0709a7ULL, 0x0efa48aa0254fc55ULL, + 0xb4be23903c56fa48ULL, 0x763f52caabbedf65ULL, 0xeee1bcd8227d876cULL, + 0xe345e085f33b4dccULL, 0x3e731561b369bbbeULL, 0x2843fd2067adea10ULL, + 0x2adce5710eb1ceb6ULL, 0xb7e03767ef44ccbdULL, 0x8db012a48e153f52ULL, + 0x61ceb62dc5749c98ULL, 0xe85d942b9959eb9bULL, 0x4c6f7709caef2c8aULL, + 0x84377e5b8d6bbda3ULL, 0x30895dcbb13d47ebULL, 0x74a04a9bc2a2fbc3ULL, + 0x6b17ce251518289cULL, 0xe438c4d0f2113368ULL, 0x1fb784bed7bad35fULL, + 0x9b80fae55ad16efcULL, 0x77fe5e6c11b0cd36ULL, 0xc858095247849129ULL, + 0x08466059b97090a2ULL, 0x01c10ca6ba0e1253ULL, 0x6988d6747c040c3aULL, + 0x6849dad2c60a1e69ULL, 0x5147ebe67449db73ULL, 0xc99905f4fd8a837aULL, + 0x991fe2b433cd4a5aULL, 0xf09734c04fc94660ULL, 0xa28ecbd1e892abe6ULL, + 0xf1563866f5c75433ULL, 0x4dae7baf70e13ed9ULL, 0x7ce62ac27bd26b61ULL, + 0x70837a39109ab392ULL, 0x90988e4b30b3c8abULL, 0xb2020b63877296bfULL, + 0x156efcb607d6675bULL }, /* 7 */ - {0xe63f55ce97c331d0ULL, 0x25b506b0015bba16ULL, - 0xc8706e29e6ad9ba8ULL, 0x5b43d3775d521f6aULL, - 0x0bfa3d577035106eULL, 0xab95fc172afb0e66ULL, - 0xf64b63979e7a3276ULL, 0xf58b4562649dad4bULL, - 0x48f7c3dbae0c83f1ULL, 0xff31916642f5c8c5ULL, - 0xcbb048dc1c4a0495ULL, 0x66b8f83cdf622989ULL, - 0x35c130e908e2b9b0ULL, 0x7c761a61f0b34fa1ULL, - 0x3601161cf205268dULL, 0x9e54ccfe2219b7d6ULL, - 0x8b7d90a538940837ULL, 0x9cd403588ea35d0bULL, - 0xbc3c6fea9ccc5b5aULL, 0xe5ff733b6d24aeedULL, - 0xceed22de0f7eb8d2ULL, 0xec8581cab1ab545eULL, - 0xb96105e88ff8e71dULL, 0x8ca03501871a5eadULL, - 0x76ccce65d6db2a2fULL, 0x5883f582a7b58057ULL, - 0x3f7be4ed2e8adc3eULL, 0x0fe7be06355cd9c9ULL, - 0xee054e6c1d11be83ULL, 0x1074365909b903a6ULL, - 0x5dde9f80b4813c10ULL, 0x4a770c7d02b6692cULL, - 0x5379c8d5d7809039ULL, 0xb4067448161ed409ULL, - 0x5f5e5026183bd6cdULL, 0xe898029bf4c29df9ULL, - 0x7fb63c940a54d09cULL, 0xc5171f897f4ba8bcULL, - 0xa6f28db7b31d3d72ULL, 0x2e4f3be7716eaa78ULL, - 0x0d6771a099e63314ULL, 0x82076254e41bf284ULL, - 0x2f0fd2b42733df98ULL, 0x5c9e76d3e2dc49f0ULL, - 0x7aeb569619606cdbULL, 0x83478b07b2468764ULL, - 0xcfadcb8d5923cd32ULL, 0x85dac7f05b95a41eULL, - 0xb5469d1b4043a1e9ULL, 0xb821ecbbd9a592fdULL, - 0x1b8e0b0e798c13c8ULL, 0x62a57b6d9a0be02eULL, - 0xfcf1b793b81257f8ULL, 0x9d94ea0bd8fe28ebULL, - 0x4cea408aeb654a56ULL, 0x23284a47e888996cULL, - 0x2d8f1d128b893545ULL, 0xf4cbac3132c0d8abULL, - 0xbd7c86b9ca912ebaULL, 0x3a268eef3dbe6079ULL, - 0xf0d62f6077a9110cULL, 0x2735c916ade150cbULL, - 0x89fd5f03942ee2eaULL, 0x1acee25d2fd16628ULL, - 0x90f39bab41181bffULL, 0x430dfe8cde39939fULL, - 0xf70b8ac4c8274796ULL, 0x1c53aeaac6024552ULL, - 0x13b410acf35e9c9bULL, 0xa532ab4249faa24fULL, - 0x2b1251e5625a163fULL, 0xd7e3e676da4841c7ULL, - 0xa7b264e4e5404892ULL, 0xda8497d643ae72d3ULL, - 0x861ae105a1723b23ULL, 0x38a6414991048aa4ULL, - 0x6578dec92585b6b4ULL, 0x0280cfa6acbaeaddULL, - 0x88bdb650c273970aULL, 0x9333bd5ebbff84c2ULL, - 0x4e6a8f2c47dfa08bULL, 0x321c954db76cef2aULL, - 0x418d312a72837942ULL, 0xb29b38bfffcdf773ULL, - 0x6c022c38f90a4c07ULL, 0x5a033a240b0f6a8aULL, - 0x1f93885f3ce5da6fULL, 0xc38a537e96988bc6ULL, - 0x39e6a81ac759ff44ULL, 0x29929e43cee0fce2ULL, - 0x40cdd87924de0ca2ULL, 0xe9d8ebc8a29fe819ULL, - 0x0c2798f3cfbb46f4ULL, 0x55e484223e53b343ULL, - 0x4650948ecd0d2fd8ULL, 0x20e86cb2126f0651ULL, - 0x6d42c56baf5739e7ULL, 0xa06fc1405ace1e08ULL, - 0x7babbfc54f3d193bULL, 0x424d17df8864e67fULL, - 0xd8045870ef14980eULL, 0xc6d7397c85ac3781ULL, - 0x21a885e1443273b1ULL, 0x67f8116f893f5c69ULL, - 0x24f5efe35706cff6ULL, 0xd56329d076f2ab1aULL, - 0x5e1eb9754e66a32dULL, 0x28d2771098bd8902ULL, - 0x8f6013f47dfdc190ULL, 0x17a993fdb637553cULL, - 0xe0a219397e1012aaULL, 0x786b9930b5da8606ULL, - 0x6e82e39e55b0a6daULL, 0x875a0856f72f4ec3ULL, - 0x3741ff4fa458536dULL, 0xac4859b3957558fcULL, - 0x7ef6d5c75c09a57cULL, 0xc04a758b6c7f14fbULL, - 0xf9acdd91ab26ebbfULL, 0x7391a467c5ef9668ULL, - 0x335c7c1ee1319acaULL, 0xa91533b18641e4bbULL, - 0xe4bf9a683b79db0dULL, 0x8e20faa72ba0b470ULL, - 0x51f907737b3a7ae4ULL, 0x2268a314bed5ec8cULL, - 0xd944b123b949edeeULL, 0x31dcb3b84d8b7017ULL, - 0xd3fe65279f218860ULL, 0x097af2f1dc8ffab3ULL, - 0x9b09a6fc312d0b91ULL, 0xcc6ded78a3c4520fULL, - 0x3481d9ba5ebfcc50ULL, 0x4f2a667f1182d56bULL, - 0xdfd9fdd4509ace94ULL, 0x26752045fbbc252bULL, - 0xbffc491f662bc467ULL, 0xdd593272fc202449ULL, - 0x3cbbc218d46d4303ULL, 0x91b372f817456e1fULL, - 0x681faf69bc6385a0ULL, 0xb686bbeebaa43ed4ULL, - 0x1469b5084cd0ca01ULL, 0x98c98009cbca94acULL, - 0x6438379a73d8c354ULL, 0xc2caba2dc0c5fe26ULL, - 0x3e3b0dbe78d7a9deULL, 0x50b9ee202d670f04ULL, - 0x4590b27b37eab0e5ULL, 0x6025b4cb36b10af3ULL, - 0xfb2c1237079c0162ULL, 0xa12f28130c936be8ULL, - 0x4b37e52e54eb1cccULL, 0x083a1ba28ad28f53ULL, - 0xc10a9cd83a22611bULL, 0x9f1425ad7444c236ULL, - 0x069d4cf7e9d3237aULL, 0xedc56899e7f621beULL, - 0x778c273680865fcfULL, 0x309c5aeb1bd605f7ULL, - 0x8de0dc52d1472b4dULL, 0xf8ec34c2fd7b9e5fULL, - 0xea18cd3d58787724ULL, 0xaad515447ca67b86ULL, - 0x9989695a9d97e14cULL, 0x0000000000000000ULL, - 0xf196c63321f464ecULL, 0x71116bc169557cb5ULL, - 0xaf887f466f92c7c1ULL, 0x972e3e0ffe964d65ULL, - 0x190ec4a8d536f915ULL, 0x95aef1a9522ca7b8ULL, - 0xdc19db21aa7d51a9ULL, 0x94ee18fa0471d258ULL, - 0x8087adf248a11859ULL, 0xc457f6da2916dd5cULL, - 0xfa6cfb6451c17482ULL, 0xf256e0c6db13fbd1ULL, - 0x6a9f60cf10d96f7dULL, 0x4daaa9d9bd383fb6ULL, - 0x03c026f5fae79f3dULL, 0xde99148706c7bb74ULL, - 0x2a52b8b6340763dfULL, 0x6fc20acd03edd33aULL, - 0xd423c08320afdefaULL, 0xbbe1ca4e23420dc0ULL, - 0x966ed75ca8cb3885ULL, 0xeb58246e0e2502c4ULL, - 0x055d6a021334bc47ULL, 0xa47242111fa7d7afULL, - 0xe3623fcc84f78d97ULL, 0x81c744a11efc6db9ULL, - 0xaec8961539cfb221ULL, 0xf31609958d4e8e31ULL, - 0x63e5923ecc5695ceULL, 0x47107ddd9b505a38ULL, - 0xa3afe7b5a0298135ULL, 0x792b7063e387f3e6ULL, - 0x0140e953565d75e0ULL, 0x12f4f9ffa503e97bULL, - 0x750ce8902c3cb512ULL, 0xdbc47e8515f30733ULL, - 0x1ed3610c6ab8af8fULL, 0x5239218681dde5d9ULL, - 0xe222d69fd2aaf877ULL, 0xfe71783514a8bd25ULL, - 0xcaf0a18f4a177175ULL, 0x61655d9860ec7f13ULL, - 0xe77fbc9dc19e4430ULL, 0x2ccff441ddd440a5ULL, - 0x16e97aaee06a20dcULL, 0xa855dae2d01c915bULL, - 0x1d1347f9905f30b2ULL, 0xb7c652bdecf94b34ULL, - 0xd03e43d265c6175dULL, 0xfdb15ec0ee4f2218ULL, - 0x57644b8492e9599eULL, 0x07dda5a4bf8e569aULL, - 0x54a46d71680ec6a3ULL, 0x5624a2d7c4b42c7eULL, - 0xbebca04c3076b187ULL, 0x7d36f332a6ee3a41ULL, - 0x3b6667bc6be31599ULL, 0x695f463aea3ef040ULL, - 0xad08b0e0c3282d1cULL, 0xb15b1e4a052a684eULL, - 0x44d05b2861b7c505ULL, 0x15295c5b1a8dbfe1ULL, - 0x744c01c37a61c0f2ULL, 0x59c31cd1f1e8f5b7ULL, - 0xef45a73f4b4ccb63ULL, 0x6bdf899c46841a9dULL, - 0x3dfb2b4b823036e3ULL, 0xa2ef0ee6f674f4d5ULL, - 0x184e2dfb836b8cf5ULL, 0x1134df0a5fe47646ULL, - 0xbaa1231d751f7820ULL, 0xd17eaa81339b62bdULL, - 0xb01bf71953771daeULL, 0x849a2ea30dc8d1feULL, - 0x705182923f080955ULL, 0x0ea757556301ac29ULL, - 0x041d83514569c9a7ULL, 0x0abad4042668658eULL, - 0x49b72a88f851f611ULL, 0x8a3d79f66ec97dd7ULL, - 0xcd2d042bf59927efULL, 0xc930877ab0f0ee48ULL, - 0x9273540deda2f122ULL, 0xc797d02fd3f14261ULL, - 0xe1e2f06a284d674aULL, 0xd2be8c74c97cfd80ULL, - 0x9a494faf67707e71ULL, 0xb3dbd1eca9908293ULL, - 0x72d14d3493b2e388ULL, 0xd6a30f258c153427ULL}, + { 0xe63f55ce97c331d0ULL, 0x25b506b0015bba16ULL, 0xc8706e29e6ad9ba8ULL, + 0x5b43d3775d521f6aULL, 0x0bfa3d577035106eULL, 0xab95fc172afb0e66ULL, + 0xf64b63979e7a3276ULL, 0xf58b4562649dad4bULL, 0x48f7c3dbae0c83f1ULL, + 0xff31916642f5c8c5ULL, 0xcbb048dc1c4a0495ULL, 0x66b8f83cdf622989ULL, + 0x35c130e908e2b9b0ULL, 0x7c761a61f0b34fa1ULL, 0x3601161cf205268dULL, + 0x9e54ccfe2219b7d6ULL, 0x8b7d90a538940837ULL, 0x9cd403588ea35d0bULL, + 0xbc3c6fea9ccc5b5aULL, 0xe5ff733b6d24aeedULL, 0xceed22de0f7eb8d2ULL, + 0xec8581cab1ab545eULL, 0xb96105e88ff8e71dULL, 0x8ca03501871a5eadULL, + 0x76ccce65d6db2a2fULL, 0x5883f582a7b58057ULL, 0x3f7be4ed2e8adc3eULL, + 0x0fe7be06355cd9c9ULL, 0xee054e6c1d11be83ULL, 0x1074365909b903a6ULL, + 0x5dde9f80b4813c10ULL, 0x4a770c7d02b6692cULL, 0x5379c8d5d7809039ULL, + 0xb4067448161ed409ULL, 0x5f5e5026183bd6cdULL, 0xe898029bf4c29df9ULL, + 0x7fb63c940a54d09cULL, 0xc5171f897f4ba8bcULL, 0xa6f28db7b31d3d72ULL, + 0x2e4f3be7716eaa78ULL, 0x0d6771a099e63314ULL, 0x82076254e41bf284ULL, + 0x2f0fd2b42733df98ULL, 0x5c9e76d3e2dc49f0ULL, 0x7aeb569619606cdbULL, + 0x83478b07b2468764ULL, 0xcfadcb8d5923cd32ULL, 0x85dac7f05b95a41eULL, + 0xb5469d1b4043a1e9ULL, 0xb821ecbbd9a592fdULL, 0x1b8e0b0e798c13c8ULL, + 0x62a57b6d9a0be02eULL, 0xfcf1b793b81257f8ULL, 0x9d94ea0bd8fe28ebULL, + 0x4cea408aeb654a56ULL, 0x23284a47e888996cULL, 0x2d8f1d128b893545ULL, + 0xf4cbac3132c0d8abULL, 0xbd7c86b9ca912ebaULL, 0x3a268eef3dbe6079ULL, + 0xf0d62f6077a9110cULL, 0x2735c916ade150cbULL, 0x89fd5f03942ee2eaULL, + 0x1acee25d2fd16628ULL, 0x90f39bab41181bffULL, 0x430dfe8cde39939fULL, + 0xf70b8ac4c8274796ULL, 0x1c53aeaac6024552ULL, 0x13b410acf35e9c9bULL, + 0xa532ab4249faa24fULL, 0x2b1251e5625a163fULL, 0xd7e3e676da4841c7ULL, + 0xa7b264e4e5404892ULL, 0xda8497d643ae72d3ULL, 0x861ae105a1723b23ULL, + 0x38a6414991048aa4ULL, 0x6578dec92585b6b4ULL, 0x0280cfa6acbaeaddULL, + 0x88bdb650c273970aULL, 0x9333bd5ebbff84c2ULL, 0x4e6a8f2c47dfa08bULL, + 0x321c954db76cef2aULL, 0x418d312a72837942ULL, 0xb29b38bfffcdf773ULL, + 0x6c022c38f90a4c07ULL, 0x5a033a240b0f6a8aULL, 0x1f93885f3ce5da6fULL, + 0xc38a537e96988bc6ULL, 0x39e6a81ac759ff44ULL, 0x29929e43cee0fce2ULL, + 0x40cdd87924de0ca2ULL, 0xe9d8ebc8a29fe819ULL, 0x0c2798f3cfbb46f4ULL, + 0x55e484223e53b343ULL, 0x4650948ecd0d2fd8ULL, 0x20e86cb2126f0651ULL, + 0x6d42c56baf5739e7ULL, 0xa06fc1405ace1e08ULL, 0x7babbfc54f3d193bULL, + 0x424d17df8864e67fULL, 0xd8045870ef14980eULL, 0xc6d7397c85ac3781ULL, + 0x21a885e1443273b1ULL, 0x67f8116f893f5c69ULL, 0x24f5efe35706cff6ULL, + 0xd56329d076f2ab1aULL, 0x5e1eb9754e66a32dULL, 0x28d2771098bd8902ULL, + 0x8f6013f47dfdc190ULL, 0x17a993fdb637553cULL, 0xe0a219397e1012aaULL, + 0x786b9930b5da8606ULL, 0x6e82e39e55b0a6daULL, 0x875a0856f72f4ec3ULL, + 0x3741ff4fa458536dULL, 0xac4859b3957558fcULL, 0x7ef6d5c75c09a57cULL, + 0xc04a758b6c7f14fbULL, 0xf9acdd91ab26ebbfULL, 0x7391a467c5ef9668ULL, + 0x335c7c1ee1319acaULL, 0xa91533b18641e4bbULL, 0xe4bf9a683b79db0dULL, + 0x8e20faa72ba0b470ULL, 0x51f907737b3a7ae4ULL, 0x2268a314bed5ec8cULL, + 0xd944b123b949edeeULL, 0x31dcb3b84d8b7017ULL, 0xd3fe65279f218860ULL, + 0x097af2f1dc8ffab3ULL, 0x9b09a6fc312d0b91ULL, 0xcc6ded78a3c4520fULL, + 0x3481d9ba5ebfcc50ULL, 0x4f2a667f1182d56bULL, 0xdfd9fdd4509ace94ULL, + 0x26752045fbbc252bULL, 0xbffc491f662bc467ULL, 0xdd593272fc202449ULL, + 0x3cbbc218d46d4303ULL, 0x91b372f817456e1fULL, 0x681faf69bc6385a0ULL, + 0xb686bbeebaa43ed4ULL, 0x1469b5084cd0ca01ULL, 0x98c98009cbca94acULL, + 0x6438379a73d8c354ULL, 0xc2caba2dc0c5fe26ULL, 0x3e3b0dbe78d7a9deULL, + 0x50b9ee202d670f04ULL, 0x4590b27b37eab0e5ULL, 0x6025b4cb36b10af3ULL, + 0xfb2c1237079c0162ULL, 0xa12f28130c936be8ULL, 0x4b37e52e54eb1cccULL, + 0x083a1ba28ad28f53ULL, 0xc10a9cd83a22611bULL, 0x9f1425ad7444c236ULL, + 0x069d4cf7e9d3237aULL, 0xedc56899e7f621beULL, 0x778c273680865fcfULL, + 0x309c5aeb1bd605f7ULL, 0x8de0dc52d1472b4dULL, 0xf8ec34c2fd7b9e5fULL, + 0xea18cd3d58787724ULL, 0xaad515447ca67b86ULL, 0x9989695a9d97e14cULL, + 0x0000000000000000ULL, 0xf196c63321f464ecULL, 0x71116bc169557cb5ULL, + 0xaf887f466f92c7c1ULL, 0x972e3e0ffe964d65ULL, 0x190ec4a8d536f915ULL, + 0x95aef1a9522ca7b8ULL, 0xdc19db21aa7d51a9ULL, 0x94ee18fa0471d258ULL, + 0x8087adf248a11859ULL, 0xc457f6da2916dd5cULL, 0xfa6cfb6451c17482ULL, + 0xf256e0c6db13fbd1ULL, 0x6a9f60cf10d96f7dULL, 0x4daaa9d9bd383fb6ULL, + 0x03c026f5fae79f3dULL, 0xde99148706c7bb74ULL, 0x2a52b8b6340763dfULL, + 0x6fc20acd03edd33aULL, 0xd423c08320afdefaULL, 0xbbe1ca4e23420dc0ULL, + 0x966ed75ca8cb3885ULL, 0xeb58246e0e2502c4ULL, 0x055d6a021334bc47ULL, + 0xa47242111fa7d7afULL, 0xe3623fcc84f78d97ULL, 0x81c744a11efc6db9ULL, + 0xaec8961539cfb221ULL, 0xf31609958d4e8e31ULL, 0x63e5923ecc5695ceULL, + 0x47107ddd9b505a38ULL, 0xa3afe7b5a0298135ULL, 0x792b7063e387f3e6ULL, + 0x0140e953565d75e0ULL, 0x12f4f9ffa503e97bULL, 0x750ce8902c3cb512ULL, + 0xdbc47e8515f30733ULL, 0x1ed3610c6ab8af8fULL, 0x5239218681dde5d9ULL, + 0xe222d69fd2aaf877ULL, 0xfe71783514a8bd25ULL, 0xcaf0a18f4a177175ULL, + 0x61655d9860ec7f13ULL, 0xe77fbc9dc19e4430ULL, 0x2ccff441ddd440a5ULL, + 0x16e97aaee06a20dcULL, 0xa855dae2d01c915bULL, 0x1d1347f9905f30b2ULL, + 0xb7c652bdecf94b34ULL, 0xd03e43d265c6175dULL, 0xfdb15ec0ee4f2218ULL, + 0x57644b8492e9599eULL, 0x07dda5a4bf8e569aULL, 0x54a46d71680ec6a3ULL, + 0x5624a2d7c4b42c7eULL, 0xbebca04c3076b187ULL, 0x7d36f332a6ee3a41ULL, + 0x3b6667bc6be31599ULL, 0x695f463aea3ef040ULL, 0xad08b0e0c3282d1cULL, + 0xb15b1e4a052a684eULL, 0x44d05b2861b7c505ULL, 0x15295c5b1a8dbfe1ULL, + 0x744c01c37a61c0f2ULL, 0x59c31cd1f1e8f5b7ULL, 0xef45a73f4b4ccb63ULL, + 0x6bdf899c46841a9dULL, 0x3dfb2b4b823036e3ULL, 0xa2ef0ee6f674f4d5ULL, + 0x184e2dfb836b8cf5ULL, 0x1134df0a5fe47646ULL, 0xbaa1231d751f7820ULL, + 0xd17eaa81339b62bdULL, 0xb01bf71953771daeULL, 0x849a2ea30dc8d1feULL, + 0x705182923f080955ULL, 0x0ea757556301ac29ULL, 0x041d83514569c9a7ULL, + 0x0abad4042668658eULL, 0x49b72a88f851f611ULL, 0x8a3d79f66ec97dd7ULL, + 0xcd2d042bf59927efULL, 0xc930877ab0f0ee48ULL, 0x9273540deda2f122ULL, + 0xc797d02fd3f14261ULL, 0xe1e2f06a284d674aULL, 0xd2be8c74c97cfd80ULL, + 0x9a494faf67707e71ULL, 0xb3dbd1eca9908293ULL, 0x72d14d3493b2e388ULL, + 0xd6a30f258c153427ULL }, }; static const uint64_t C16[12][8] = { - {0xdd806559f2a64507ULL, 0x05767436cc744d23ULL, - 0xa2422a08a460d315ULL, 0x4b7ce09192676901ULL, - 0x714eb88d7585c4fcULL, 0x2f6a76432e45d016ULL, - 0xebcb2f81c0657c1fULL, 0xb1085bda1ecadae9ULL}, - {0xe679047021b19bb7ULL, 0x55dda21bd7cbcd56ULL, - 0x5cb561c2db0aa7caULL, 0x9ab5176b12d69958ULL, - 0x61d55e0f16b50131ULL, 0xf3feea720a232b98ULL, - 0x4fe39d460f70b5d7ULL, 0x6fa3b58aa99d2f1aULL}, - {0x991e96f50aba0ab2ULL, 0xc2b6f443867adb31ULL, - 0xc1c93a376062db09ULL, 0xd3e20fe490359eb1ULL, - 0xf2ea7514b1297b7bULL, 0x06f15e5f529c1f8bULL, - 0x0a39fc286a3d8435ULL, 0xf574dcac2bce2fc7ULL}, - {0x220cbebc84e3d12eULL, 0x3453eaa193e837f1ULL, - 0xd8b71333935203beULL, 0xa9d72c82ed03d675ULL, - 0x9d721cad685e353fULL, 0x488e857e335c3c7dULL, - 0xf948e1a05d71e4ddULL, 0xef1fdfb3e81566d2ULL}, - {0x601758fd7c6cfe57ULL, 0x7a56a27ea9ea63f5ULL, - 0xdfff00b723271a16ULL, 0xbfcd1747253af5a3ULL, - 0x359e35d7800fffbdULL, 0x7f151c1f1686104aULL, - 0x9a3f410c6ca92363ULL, 0x4bea6bacad474799ULL}, - {0xfa68407a46647d6eULL, 0xbf71c57236904f35ULL, - 0x0af21f66c2bec6b6ULL, 0xcffaa6b71c9ab7b4ULL, - 0x187f9ab49af08ec6ULL, 0x2d66c4f95142a46cULL, - 0x6fa4c33b7a3039c0ULL, 0xae4faeae1d3ad3d9ULL}, - {0x8886564d3a14d493ULL, 0x3517454ca23c4af3ULL, - 0x06476983284a0504ULL, 0x0992abc52d822c37ULL, - 0xd3473e33197a93c9ULL, 0x399ec6c7e6bf87c9ULL, - 0x51ac86febf240954ULL, 0xf4c70e16eeaac5ecULL}, - {0xa47f0dd4bf02e71eULL, 0x36acc2355951a8d9ULL, - 0x69d18d2bd1a5c42fULL, 0xf4892bcb929b0690ULL, - 0x89b4443b4ddbc49aULL, 0x4eb7f8719c36de1eULL, - 0x03e7aa020c6e4141ULL, 0x9b1f5b424d93c9a7ULL}, - {0x7261445183235adbULL, 0x0e38dc92cb1f2a60ULL, - 0x7b2b8a9aa6079c54ULL, 0x800a440bdbb2ceb1ULL, - 0x3cd955b7e00d0984ULL, 0x3a7d3a1b25894224ULL, - 0x944c9ad8ec165fdeULL, 0x378f5a541631229bULL}, - {0x74b4c7fb98459cedULL, 0x3698fad1153bb6c3ULL, - 0x7a1e6c303b7652f4ULL, 0x9fe76702af69334bULL, - 0x1fffe18a1b336103ULL, 0x8941e71cff8a78dbULL, - 0x382ae548b2e4f3f3ULL, 0xabbedea680056f52ULL}, - {0x6bcaa4cd81f32d1bULL, 0xdea2594ac06fd85dULL, - 0xefbacd1d7d476e98ULL, 0x8a1d71efea48b9caULL, - 0x2001802114846679ULL, 0xd8fa6bbbebab0761ULL, - 0x3002c6cd635afe94ULL, 0x7bcd9ed0efc889fbULL}, - {0x48bc924af11bd720ULL, 0xfaf417d5d9b21b99ULL, - 0xe71da4aa88e12852ULL, 0x5d80ef9d1891cc86ULL, - 0xf82012d430219f9bULL, 0xcda43c32bcdf1d77ULL, - 0xd21380b00449b17aULL, 0x378ee767f11631baULL}, + { 0xdd806559f2a64507ULL, 0x05767436cc744d23ULL, 0xa2422a08a460d315ULL, + 0x4b7ce09192676901ULL, 0x714eb88d7585c4fcULL, 0x2f6a76432e45d016ULL, + 0xebcb2f81c0657c1fULL, 0xb1085bda1ecadae9ULL }, + { 0xe679047021b19bb7ULL, 0x55dda21bd7cbcd56ULL, 0x5cb561c2db0aa7caULL, + 0x9ab5176b12d69958ULL, 0x61d55e0f16b50131ULL, 0xf3feea720a232b98ULL, + 0x4fe39d460f70b5d7ULL, 0x6fa3b58aa99d2f1aULL }, + { 0x991e96f50aba0ab2ULL, 0xc2b6f443867adb31ULL, 0xc1c93a376062db09ULL, + 0xd3e20fe490359eb1ULL, 0xf2ea7514b1297b7bULL, 0x06f15e5f529c1f8bULL, + 0x0a39fc286a3d8435ULL, 0xf574dcac2bce2fc7ULL }, + { 0x220cbebc84e3d12eULL, 0x3453eaa193e837f1ULL, 0xd8b71333935203beULL, + 0xa9d72c82ed03d675ULL, 0x9d721cad685e353fULL, 0x488e857e335c3c7dULL, + 0xf948e1a05d71e4ddULL, 0xef1fdfb3e81566d2ULL }, + { 0x601758fd7c6cfe57ULL, 0x7a56a27ea9ea63f5ULL, 0xdfff00b723271a16ULL, + 0xbfcd1747253af5a3ULL, 0x359e35d7800fffbdULL, 0x7f151c1f1686104aULL, + 0x9a3f410c6ca92363ULL, 0x4bea6bacad474799ULL }, + { 0xfa68407a46647d6eULL, 0xbf71c57236904f35ULL, 0x0af21f66c2bec6b6ULL, + 0xcffaa6b71c9ab7b4ULL, 0x187f9ab49af08ec6ULL, 0x2d66c4f95142a46cULL, + 0x6fa4c33b7a3039c0ULL, 0xae4faeae1d3ad3d9ULL }, + { 0x8886564d3a14d493ULL, 0x3517454ca23c4af3ULL, 0x06476983284a0504ULL, + 0x0992abc52d822c37ULL, 0xd3473e33197a93c9ULL, 0x399ec6c7e6bf87c9ULL, + 0x51ac86febf240954ULL, 0xf4c70e16eeaac5ecULL }, + { 0xa47f0dd4bf02e71eULL, 0x36acc2355951a8d9ULL, 0x69d18d2bd1a5c42fULL, + 0xf4892bcb929b0690ULL, 0x89b4443b4ddbc49aULL, 0x4eb7f8719c36de1eULL, + 0x03e7aa020c6e4141ULL, 0x9b1f5b424d93c9a7ULL }, + { 0x7261445183235adbULL, 0x0e38dc92cb1f2a60ULL, 0x7b2b8a9aa6079c54ULL, + 0x800a440bdbb2ceb1ULL, 0x3cd955b7e00d0984ULL, 0x3a7d3a1b25894224ULL, + 0x944c9ad8ec165fdeULL, 0x378f5a541631229bULL }, + { 0x74b4c7fb98459cedULL, 0x3698fad1153bb6c3ULL, 0x7a1e6c303b7652f4ULL, + 0x9fe76702af69334bULL, 0x1fffe18a1b336103ULL, 0x8941e71cff8a78dbULL, + 0x382ae548b2e4f3f3ULL, 0xabbedea680056f52ULL }, + { 0x6bcaa4cd81f32d1bULL, 0xdea2594ac06fd85dULL, 0xefbacd1d7d476e98ULL, + 0x8a1d71efea48b9caULL, 0x2001802114846679ULL, 0xd8fa6bbbebab0761ULL, + 0x3002c6cd635afe94ULL, 0x7bcd9ed0efc889fbULL }, + { 0x48bc924af11bd720ULL, 0xfaf417d5d9b21b99ULL, 0xe71da4aa88e12852ULL, + 0x5d80ef9d1891cc86ULL, 0xf82012d430219f9bULL, 0xcda43c32bcdf1d77ULL, + 0xd21380b00449b17aULL, 0x378ee767f11631baULL }, }; -# define strido(out, temp, i) do { \ - uint64_t t; \ - t = streebog_table[0][(temp[0] >> (i * 8)) & 0xff]; \ - t ^= streebog_table[1][(temp[1] >> (i * 8)) & 0xff]; \ - t ^= streebog_table[2][(temp[2] >> (i * 8)) & 0xff]; \ - t ^= streebog_table[3][(temp[3] >> (i * 8)) & 0xff]; \ - t ^= streebog_table[4][(temp[4] >> (i * 8)) & 0xff]; \ - t ^= streebog_table[5][(temp[5] >> (i * 8)) & 0xff]; \ - t ^= streebog_table[6][(temp[6] >> (i * 8)) & 0xff]; \ - t ^= streebog_table[7][(temp[7] >> (i * 8)) & 0xff]; \ - out[i] = t; } while(0) - -static void LPSX(uint64_t * out, const uint64_t * a, const uint64_t * b) +#define strido(out, temp, i) \ + do { \ + uint64_t t; \ + t = streebog_table[0][(temp[0] >> (i * 8)) & 0xff]; \ + t ^= streebog_table[1][(temp[1] >> (i * 8)) & 0xff]; \ + t ^= streebog_table[2][(temp[2] >> (i * 8)) & 0xff]; \ + t ^= streebog_table[3][(temp[3] >> (i * 8)) & 0xff]; \ + t ^= streebog_table[4][(temp[4] >> (i * 8)) & 0xff]; \ + t ^= streebog_table[5][(temp[5] >> (i * 8)) & 0xff]; \ + t ^= streebog_table[6][(temp[6] >> (i * 8)) & 0xff]; \ + t ^= streebog_table[7][(temp[7] >> (i * 8)) & 0xff]; \ + out[i] = t; \ + } while (0) + +static void LPSX(uint64_t *out, const uint64_t *a, const uint64_t *b) { uint64_t temp[8]; temp[0] = a[0] ^ b[0]; @@ -1167,7 +821,7 @@ static void LPSX(uint64_t * out, const uint64_t * a, const uint64_t * b) strido(out, temp, 7); } -static inline void g(uint64_t * h, uint64_t * m, uint64_t * N) +static inline void g(uint64_t *h, uint64_t *m, uint64_t *N) { uint64_t K[8]; uint64_t T[8]; @@ -1192,9 +846,8 @@ static inline void g(uint64_t * h, uint64_t * m, uint64_t * N) h[7] ^= T[7] ^ K[7] ^ m[7]; } -static void -streebog512_compress(struct streebog512_ctx *ctx, const uint8_t * input, - size_t count) +static void streebog512_compress(struct streebog512_ctx *ctx, + const uint8_t *input, size_t count) { uint64_t M[8]; uint64_t l, cf; @@ -1206,7 +859,7 @@ streebog512_compress(struct streebog512_ctx *ctx, const uint8_t * input, g(ctx->state, M, ctx->count); l = ctx->count[0]; ctx->count[0] += count; - if (ctx->count[0] < l) { /* overflow */ + if (ctx->count[0] < l) { /* overflow */ for (i = 1; i < 8; i++) { ctx->count[i]++; if (ctx->count[i] != 0) @@ -1225,7 +878,7 @@ streebog512_compress(struct streebog512_ctx *ctx, const uint8_t * input, static void streebog_final(struct streebog512_ctx *ctx) { - uint64_t Z[8] = { }; + uint64_t Z[8] = {}; unsigned int i; /* PAD. It does not count towards message length */ @@ -1240,7 +893,7 @@ static void streebog_final(struct streebog512_ctx *ctx) g(ctx->state, ctx->sigma, Z); } -# define COMPRESS(ctx, data) (streebog512_compress((ctx), (data), 64 * 8)) +#define COMPRESS(ctx, data) (streebog512_compress((ctx), (data), 64 * 8)) void streebog512_init(struct streebog512_ctx *ctx) { @@ -1252,16 +905,14 @@ void streebog512_init(struct streebog512_ctx *ctx) ctx->index = 0; } -void -streebog512_update(struct streebog512_ctx *ctx, - size_t length, const uint8_t * data) +void streebog512_update(struct streebog512_ctx *ctx, size_t length, + const uint8_t *data) { MD_UPDATE(ctx, length, data, COMPRESS, (void)0); } -static void -streebog512_write_digest(struct streebog512_ctx *ctx, - size_t offset, size_t length, uint8_t * digest) +static void streebog512_write_digest(struct streebog512_ctx *ctx, size_t offset, + size_t length, uint8_t *digest) { unsigned i; unsigned words; @@ -1288,8 +939,8 @@ streebog512_write_digest(struct streebog512_ctx *ctx, } } -void -streebog512_digest(struct streebog512_ctx *ctx, size_t length, uint8_t * digest) +void streebog512_digest(struct streebog512_ctx *ctx, size_t length, + uint8_t *digest) { assert(length <= STREEBOG512_DIGEST_SIZE); @@ -1307,8 +958,8 @@ void streebog256_init(struct streebog256_ctx *ctx) ctx->index = 0; } -void -streebog256_digest(struct streebog256_ctx *ctx, size_t length, uint8_t * digest) +void streebog256_digest(struct streebog256_ctx *ctx, size_t length, + uint8_t *digest) { assert(length <= STREEBOG256_DIGEST_SIZE); diff --git a/lib/nettle/gost/streebog.h b/lib/nettle/gost/streebog.h index 046cb022e5..0949d0c7b7 100644 --- a/lib/nettle/gost/streebog.h +++ b/lib/nettle/gost/streebog.h @@ -32,72 +32,67 @@ */ #ifndef GNUTLS_LIB_NETTLE_GOST_STREEBOG_H -# define GNUTLS_LIB_NETTLE_GOST_STREEBOG_H +#define GNUTLS_LIB_NETTLE_GOST_STREEBOG_H -# include "config.h" +#include "config.h" -# include -# include +#include +#include -# ifdef __cplusplus +#ifdef __cplusplus extern "C" { -# endif +#endif -# ifndef HAVE_NETTLE_STREEBOG512_UPDATE +#ifndef HAVE_NETTLE_STREEBOG512_UPDATE /* Name mangling */ -# define streebog256_init _gnutls_streebog256_init -# define streebog256_digest _gnutls_streebog256_digest -# define streebog512_init _gnutls_streebog512_init -# define streebog512_update _gnutls_streebog512_update -# define streebog512_digest _gnutls_streebog512_digest +#define streebog256_init _gnutls_streebog256_init +#define streebog256_digest _gnutls_streebog256_digest +#define streebog512_init _gnutls_streebog512_init +#define streebog512_update _gnutls_streebog512_update +#define streebog512_digest _gnutls_streebog512_digest /* STREEBOG512 */ -# define STREEBOG512_DIGEST_SIZE 64 -# define STREEBOG512_BLOCK_SIZE 64 +#define STREEBOG512_DIGEST_SIZE 64 +#define STREEBOG512_BLOCK_SIZE 64 /* Digest is kept internally as 8 64-bit words. */ -# define _STREEBOG512_DIGEST_LENGTH 8 +#define _STREEBOG512_DIGEST_LENGTH 8 - struct streebog512_ctx { - uint64_t state[_STREEBOG512_DIGEST_LENGTH]; /* State variables */ - uint64_t count[_STREEBOG512_DIGEST_LENGTH]; - uint64_t sigma[_STREEBOG512_DIGEST_LENGTH]; - uint8_t block[STREEBOG512_BLOCK_SIZE]; /* STREEBOG512 data buffer */ - unsigned int index; /* index into buffer */ - }; +struct streebog512_ctx { + uint64_t state[_STREEBOG512_DIGEST_LENGTH]; /* State variables */ + uint64_t count[_STREEBOG512_DIGEST_LENGTH]; + uint64_t sigma[_STREEBOG512_DIGEST_LENGTH]; + uint8_t block[STREEBOG512_BLOCK_SIZE]; /* STREEBOG512 data buffer */ + unsigned int index; /* index into buffer */ +}; - void - streebog512_init(struct streebog512_ctx *ctx); +void streebog512_init(struct streebog512_ctx *ctx); - void - streebog512_update(struct streebog512_ctx *ctx, - size_t length, const uint8_t * data); +void streebog512_update(struct streebog512_ctx *ctx, size_t length, + const uint8_t *data); - void - streebog512_digest(struct streebog512_ctx *ctx, - size_t length, uint8_t * digest); +void streebog512_digest(struct streebog512_ctx *ctx, size_t length, + uint8_t *digest); -# define STREEBOG256_DIGEST_SIZE 32 -# define STREEBOG256_BLOCK_SIZE STREEBOG512_BLOCK_SIZE -# define streebog256_ctx streebog512_ctx +#define STREEBOG256_DIGEST_SIZE 32 +#define STREEBOG256_BLOCK_SIZE STREEBOG512_BLOCK_SIZE +#define streebog256_ctx streebog512_ctx - void - streebog256_init(struct streebog256_ctx *ctx); +void streebog256_init(struct streebog256_ctx *ctx); -# define streebog256_update _gnutls_streebog512_update +#define streebog256_update _gnutls_streebog512_update - void - streebog256_digest(struct streebog256_ctx *ctx, - size_t length, uint8_t * digest); +void streebog256_digest(struct streebog256_ctx *ctx, size_t length, + uint8_t *digest); -# define nettle_streebog256 _gnutls_streebog256 -# define nettle_streebog512 _gnutls_streebog512 - extern const struct nettle_hash _gnutls_streebog256; - extern const struct nettle_hash _gnutls_streebog512; -# endif +#define nettle_streebog256 _gnutls_streebog256 +#define nettle_streebog512 _gnutls_streebog512 +extern const struct nettle_hash _gnutls_streebog256; +extern const struct nettle_hash _gnutls_streebog512; +#endif -# ifdef __cplusplus +#ifdef __cplusplus } -# endif -#endif /* GNUTLS_LIB_NETTLE_GOST_STREEBOG_H */ +#endif +#endif /* GNUTLS_LIB_NETTLE_GOST_STREEBOG_H */ diff --git a/lib/nettle/gost/write-le32.c b/lib/nettle/gost/write-le32.c index 53af496564..74c542cb03 100644 --- a/lib/nettle/gost/write-le32.c +++ b/lib/nettle/gost/write-le32.c @@ -30,7 +30,7 @@ */ #if HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include @@ -39,7 +39,7 @@ #include -void _nettle_write_le32(size_t length, uint8_t * dst, const uint32_t * src) +void _nettle_write_le32(size_t length, uint8_t *dst, const uint32_t *src) { size_t i; size_t words; @@ -59,7 +59,6 @@ void _nettle_write_le32(size_t length, uint8_t * dst, const uint32_t * src) do { *dst++ = word & 0xff; word >>= 8; - } - while (--leftover); + } while (--leftover); } } diff --git a/lib/nettle/gost_keywrap.c b/lib/nettle/gost_keywrap.c index 600e76b072..5b4875d6d3 100644 --- a/lib/nettle/gost_keywrap.c +++ b/lib/nettle/gost_keywrap.c @@ -21,8 +21,8 @@ #include "gnutls_int.h" #include "gost/gost28147.h" -static const struct gost28147_param -*_gnutls_gost_get_param(gnutls_gost_paramset_t param) +static const struct gost28147_param * +_gnutls_gost_get_param(gnutls_gost_paramset_t param) { if (param == GNUTLS_GOST_PARAMSET_TC26_Z) return &gost28147_param_TC26_Z; @@ -41,10 +41,9 @@ static const struct gost28147_param } int _gnutls_gost_key_wrap(gnutls_gost_paramset_t gost_params, - const gnutls_datum_t * kek, - const gnutls_datum_t * ukm, - const gnutls_datum_t * cek, - gnutls_datum_t * enc, gnutls_datum_t * imit) + const gnutls_datum_t *kek, const gnutls_datum_t *ukm, + const gnutls_datum_t *cek, gnutls_datum_t *enc, + gnutls_datum_t *imit) { const struct gost28147_param *gp; @@ -79,10 +78,10 @@ int _gnutls_gost_key_wrap(gnutls_gost_paramset_t gost_params, } int _gnutls_gost_key_unwrap(gnutls_gost_paramset_t gost_params, - const gnutls_datum_t * kek, - const gnutls_datum_t * ukm, - const gnutls_datum_t * enc, - const gnutls_datum_t * imit, gnutls_datum_t * cek) + const gnutls_datum_t *kek, + const gnutls_datum_t *ukm, + const gnutls_datum_t *enc, + const gnutls_datum_t *imit, gnutls_datum_t *cek) { const struct gost28147_param *gp; int ret; @@ -105,9 +104,9 @@ int _gnutls_gost_key_unwrap(gnutls_gost_paramset_t gost_params, return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); } - ret = gost28147_key_unwrap_cryptopro(gp, kek->data, - ukm->data, ukm->size, - enc->data, imit->data, cek->data); + ret = gost28147_key_unwrap_cryptopro(gp, kek->data, ukm->data, + ukm->size, enc->data, imit->data, + cek->data); if (ret == 0) { gnutls_assert(); _gnutls_free_temp_key_datum(cek); diff --git a/lib/nettle/init.c b/lib/nettle/init.c index b85b1c1794..ae639aac97 100644 --- a/lib/nettle/init.c +++ b/lib/nettle/init.c @@ -25,7 +25,7 @@ #include "errors.h" #include #include -#include /* includes gmp.h */ +#include /* includes gmp.h */ static void gnutls_free_zero(void *data, size_t size); static void *gnutls_realloc_zero(void *data, size_t old_size, size_t new_size); diff --git a/lib/nettle/int/block8.h b/lib/nettle/int/block8.h index 381adf32b9..609a160ac7 100644 --- a/lib/nettle/int/block8.h +++ b/lib/nettle/int/block8.h @@ -30,11 +30,11 @@ */ #ifndef GNUTLS_LIB_NETTLE_BLOCK8_H -# define GNUTLS_LIB_NETTLE_BLOCK8_H +#define GNUTLS_LIB_NETTLE_BLOCK8_H -# include "config.h" +#include "config.h" -# ifndef HAVE_UNION_NETTLE_BLOCK8 +#ifndef HAVE_UNION_NETTLE_BLOCK8 /* An aligned 16-byte block. */ union gnutls_nettle_backport_nettle_block16 { @@ -48,12 +48,12 @@ union gnutls_nettle_backport_nettle_block8 { uint64_t u64; }; -# undef nettle_block16 -# undef nettle_block8 +#undef nettle_block16 +#undef nettle_block8 -# define nettle_block16 gnutls_nettle_backport_nettle_block16 -# define nettle_block8 gnutls_nettle_backport_nettle_block8 +#define nettle_block16 gnutls_nettle_backport_nettle_block16 +#define nettle_block8 gnutls_nettle_backport_nettle_block8 -# endif +#endif -#endif /* GNUTLS_LIB_NETTLE_BLOCK8_H */ +#endif /* GNUTLS_LIB_NETTLE_BLOCK8_H */ diff --git a/lib/nettle/int/drbg-aes-self-test.c b/lib/nettle/int/drbg-aes-self-test.c index d0842a2e3b..55941b1081 100644 --- a/lib/nettle/int/drbg-aes-self-test.c +++ b/lib/nettle/int/drbg-aes-self-test.c @@ -99,9 +99,8 @@ int drbg_aes_self_test(void) priv.ctx = &test_ctx; /* Test the error handling of drbg_aes_init */ - ret = - drbg_aes_init(&test_ctx, DRBG_AES_SEED_SIZE, tv[0].entropy, - DRBG_AES_SEED_SIZE * 2, (void *)tv); + ret = drbg_aes_init(&test_ctx, DRBG_AES_SEED_SIZE, tv[0].entropy, + DRBG_AES_SEED_SIZE * 2, (void *)tv); if (ret != 0) { gnutls_assert(); return 0; @@ -115,9 +114,9 @@ int drbg_aes_self_test(void) for (i = 0; i < sizeof(tv) / sizeof(tv[0]); i++) { /* CAVP test step 1: initialization with perso string */ - ret = drbg_aes_init(&test_ctx, - sizeof(tv[i].entropy), tv[i].entropy, - sizeof(tv[i].pstring), tv[i].pstring); + ret = drbg_aes_init(&test_ctx, sizeof(tv[i].entropy), + tv[i].entropy, sizeof(tv[i].pstring), + tv[i].pstring); if (ret == 0) goto fail; @@ -125,9 +124,9 @@ int drbg_aes_self_test(void) goto fail; /* CAVP test step 2: reseed with addtl information */ - ret = drbg_aes_reseed(&test_ctx, - sizeof(tv[i].reseed), tv[i].reseed, - sizeof(tv[i].addtl[0]), tv[i].addtl[0]); + ret = drbg_aes_reseed(&test_ctx, sizeof(tv[i].reseed), + tv[i].reseed, sizeof(tv[i].addtl[0]), + tv[i].addtl[0]); if (ret == 0) goto fail; @@ -156,49 +155,46 @@ int drbg_aes_self_test(void) } test_ctx.reseed_counter = saved; - ret = - drbg_aes_random(&test_ctx, MAX_DRBG_AES_GENERATE_SIZE + 1, - tmp); + ret = drbg_aes_random(&test_ctx, MAX_DRBG_AES_GENERATE_SIZE + 1, + tmp); if (ret == 0) { gnutls_assert(); goto fail; } /* test the low-level function */ - ret = - drbg_aes_generate(&test_ctx, MAX_DRBG_AES_GENERATE_SIZE + 1, - tmp, 0, NULL); + ret = drbg_aes_generate(&test_ctx, + MAX_DRBG_AES_GENERATE_SIZE + 1, tmp, 0, + NULL); if (ret != 0) { gnutls_assert(); goto fail; } /* Test of the reseed function for error handling */ - ret = - drbg_aes_reseed(&test_ctx, DRBG_AES_SEED_SIZE * 2, - (uint8_t *) tv, 0, NULL); + ret = drbg_aes_reseed(&test_ctx, DRBG_AES_SEED_SIZE * 2, + (uint8_t *)tv, 0, NULL); if (ret != 0) goto fail; - ret = - drbg_aes_reseed(&test_ctx, DRBG_AES_SEED_SIZE, - tv[i].entropy, DRBG_AES_SEED_SIZE * 2, - (uint8_t *) tv); + ret = drbg_aes_reseed(&test_ctx, DRBG_AES_SEED_SIZE, + tv[i].entropy, DRBG_AES_SEED_SIZE * 2, + (uint8_t *)tv); if (ret != 0) goto fail; /* check whether reseed detection works */ if (i == 0) { - ret = - drbg_aes_reseed(&test_ctx, DRBG_AES_SEED_SIZE, - tv[i].entropy, 0, NULL); + ret = drbg_aes_reseed(&test_ctx, DRBG_AES_SEED_SIZE, + tv[i].entropy, 0, NULL); if (ret == 0) goto fail; saved = test_ctx.reseed_counter; test_ctx.reseed_counter = DRBG_AES_RESEED_TIME - 4; for (j = 0; j < 5; j++) { - if (drbg_aes_random(&test_ctx, 1, result) == 0) { + if (drbg_aes_random(&test_ctx, 1, result) == + 0) { gnutls_assert(); goto fail; } @@ -218,12 +214,11 @@ int drbg_aes_self_test(void) gnutls_assert(); goto fail; } - } gnutls_free(tmp); return 1; - fail: +fail: free(tmp); return 0; } diff --git a/lib/nettle/int/drbg-aes.c b/lib/nettle/int/drbg-aes.c index 587c5b03f7..4969d1d3bc 100644 --- a/lib/nettle/int/drbg-aes.c +++ b/lib/nettle/int/drbg-aes.c @@ -28,10 +28,9 @@ #include #include -int -drbg_aes_init(struct drbg_aes_ctx *ctx, - unsigned entropy_size, const uint8_t * entropy, - unsigned pstring_size, const uint8_t * pstring) +int drbg_aes_init(struct drbg_aes_ctx *ctx, unsigned entropy_size, + const uint8_t *entropy, unsigned pstring_size, + const uint8_t *pstring) { uint8_t tmp[AES256_KEY_SIZE]; @@ -41,14 +40,13 @@ drbg_aes_init(struct drbg_aes_ctx *ctx, aes256_set_encrypt_key(&ctx->key, tmp); - return drbg_aes_reseed(ctx, entropy_size, entropy, - pstring_size, pstring); + return drbg_aes_reseed(ctx, entropy_size, entropy, pstring_size, + pstring); } /* Sets V and key based on pdata */ -static void -drbg_aes_update(struct drbg_aes_ctx *ctx, - const uint8_t pdata[DRBG_AES_SEED_SIZE]) +static void drbg_aes_update(struct drbg_aes_ctx *ctx, + const uint8_t pdata[DRBG_AES_SEED_SIZE]) { unsigned len = 0; uint8_t tmp[DRBG_AES_SEED_SIZE]; @@ -70,10 +68,9 @@ drbg_aes_update(struct drbg_aes_ctx *ctx, ctx->seeded = 1; } -int -drbg_aes_reseed(struct drbg_aes_ctx *ctx, - unsigned entropy_size, const uint8_t * entropy, - unsigned add_size, const uint8_t * add) +int drbg_aes_reseed(struct drbg_aes_ctx *ctx, unsigned entropy_size, + const uint8_t *entropy, unsigned add_size, + const uint8_t *add) { uint8_t tmp[DRBG_AES_SEED_SIZE]; unsigned len = 0; @@ -97,7 +94,7 @@ drbg_aes_reseed(struct drbg_aes_ctx *ctx, return 1; } -int drbg_aes_random(struct drbg_aes_ctx *ctx, unsigned length, uint8_t * dst) +int drbg_aes_random(struct drbg_aes_ctx *ctx, unsigned length, uint8_t *dst) { unsigned p_len; int left = length; @@ -118,8 +115,8 @@ int drbg_aes_random(struct drbg_aes_ctx *ctx, unsigned length, uint8_t * dst) } /* we don't use additional input */ -int drbg_aes_generate(struct drbg_aes_ctx *ctx, unsigned length, uint8_t * dst, - unsigned add_size, const uint8_t * add) +int drbg_aes_generate(struct drbg_aes_ctx *ctx, unsigned length, uint8_t *dst, + unsigned add_size, const uint8_t *add) { uint8_t tmp[AES_BLOCK_SIZE]; uint8_t seed[DRBG_AES_SEED_SIZE]; @@ -151,7 +148,7 @@ int drbg_aes_generate(struct drbg_aes_ctx *ctx, unsigned length, uint8_t * dst, aes256_encrypt(&ctx->key, AES_BLOCK_SIZE, dst, ctx->v); } - if (left > 0) { /* partial fill */ + if (left > 0) { /* partial fill */ INCREMENT(sizeof(ctx->v), ctx->v); aes256_encrypt(&ctx->key, AES_BLOCK_SIZE, tmp, ctx->v); memcpy(dst, tmp, left); diff --git a/lib/nettle/int/drbg-aes.h b/lib/nettle/int/drbg-aes.h index f147706523..845a89db6c 100644 --- a/lib/nettle/int/drbg-aes.h +++ b/lib/nettle/int/drbg-aes.h @@ -20,24 +20,23 @@ */ #ifndef GNUTLS_LIB_NETTLE_INT_DRBG_AES_H -# define GNUTLS_LIB_NETTLE_INT_DRBG_AES_H +#define GNUTLS_LIB_NETTLE_INT_DRBG_AES_H -# include -# include +#include +#include /* This is nettle's increment macro */ /* Requires that size > 0 */ -# define INCREMENT(size, ctr) \ - do { \ - unsigned increment_i = (size) - 1; \ - if (++(ctr)[increment_i] == 0) \ - while (increment_i > 0 \ - && ++(ctr)[--increment_i] == 0 ) \ - ; \ - } while (0) - -# define DRBG_AES_KEY_SIZE AES256_KEY_SIZE -# define DRBG_AES_SEED_SIZE (AES_BLOCK_SIZE+DRBG_AES_KEY_SIZE) +#define INCREMENT(size, ctr) \ + do { \ + unsigned increment_i = (size)-1; \ + if (++(ctr)[increment_i] == 0) \ + while (increment_i > 0 && ++(ctr)[--increment_i] == 0) \ + ; \ + } while (0) + +#define DRBG_AES_KEY_SIZE AES256_KEY_SIZE +#define DRBG_AES_SEED_SIZE (AES_BLOCK_SIZE + DRBG_AES_KEY_SIZE) /* This is the CTR-AES-256-based random-number generator from SP800-90A. */ @@ -52,33 +51,30 @@ struct drbg_aes_ctx { }; /* max_number_of_bits_per_request */ -# define MAX_DRBG_AES_GENERATE_SIZE 65536 /* 2^19 */ +#define MAX_DRBG_AES_GENERATE_SIZE 65536 /* 2^19 */ /* This DRBG should be reseeded if reseed_counter exceeds * that number. Otherwise drbg_aes_random() will fail. */ -# define DRBG_AES_RESEED_TIME 16777216 +#define DRBG_AES_RESEED_TIME 16777216 /* The entropy provided in these functions should be of * size DRBG_AES_SEED_SIZE. Additional data and pers. * string may be <= DRBG_AES_SEED_SIZE. */ -int -drbg_aes_init(struct drbg_aes_ctx *ctx, - unsigned entropy_size, const uint8_t * entropy, - unsigned pstring_size, const uint8_t * pstring); +int drbg_aes_init(struct drbg_aes_ctx *ctx, unsigned entropy_size, + const uint8_t *entropy, unsigned pstring_size, + const uint8_t *pstring); -int -drbg_aes_reseed(struct drbg_aes_ctx *ctx, - unsigned entropy_size, const uint8_t * entropy, - unsigned add_size, const uint8_t * add); +int drbg_aes_reseed(struct drbg_aes_ctx *ctx, unsigned entropy_size, + const uint8_t *entropy, unsigned add_size, + const uint8_t *add); /* our wrapper for the low-level drbg_aes_generate */ -int drbg_aes_random(struct drbg_aes_ctx *ctx, unsigned length, uint8_t * dst); +int drbg_aes_random(struct drbg_aes_ctx *ctx, unsigned length, uint8_t *dst); -int -drbg_aes_generate(struct drbg_aes_ctx *ctx, unsigned length, - uint8_t * dst, unsigned add_size, const uint8_t * add); +int drbg_aes_generate(struct drbg_aes_ctx *ctx, unsigned length, uint8_t *dst, + unsigned add_size, const uint8_t *add); /* For deinitialization use zeroize_key() on the context */ @@ -86,4 +82,4 @@ int drbg_aes_is_seeded(struct drbg_aes_ctx *ctx); int drbg_aes_self_test(void); -#endif /* GNUTLS_LIB_NETTLE_INT_DRBG_AES_H */ +#endif /* GNUTLS_LIB_NETTLE_INT_DRBG_AES_H */ diff --git a/lib/nettle/int/dsa-compute-k.c b/lib/nettle/int/dsa-compute-k.c index 44d9f9acb1..8ff5739c2b 100644 --- a/lib/nettle/int/dsa-compute-k.c +++ b/lib/nettle/int/dsa-compute-k.c @@ -21,7 +21,7 @@ */ #if HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include "dsa-compute-k.h" @@ -43,12 +43,9 @@ #define MAX_HASH_BITS (MAX_HASH_SIZE * 8) #define MAX_HASH_LIMBS BITS_TO_LIMBS(MAX_HASH_BITS) -int -_gnutls_dsa_compute_k(mpz_t k, - const mpz_t q, - const mpz_t x, - gnutls_mac_algorithm_t mac, - const uint8_t * digest, size_t length) +int _gnutls_dsa_compute_k(mpz_t k, const mpz_t q, const mpz_t x, + gnutls_mac_algorithm_t mac, const uint8_t *digest, + size_t length) { uint8_t V[MAX_HASH_SIZE]; uint8_t K[MAX_HASH_SIZE]; @@ -177,7 +174,8 @@ _gnutls_dsa_compute_k(mpz_t k, if (tlen * 8 > q_bits) mpn_rshift(h, h, qn, tlen * 8 - q_bits); /* Check if k is in [1,q-1] */ - if (!mpn_zero_p(h, qn) && mpn_cmp(h, mpz_limbs_read(q), qn) < 0) { + if (!mpn_zero_p(h, qn) && + mpn_cmp(h, mpz_limbs_read(q), qn) < 0) { mpn_copyi(mpz_limbs_write(k, qn), h, qn); mpz_limbs_finish(k, qn); break; @@ -199,7 +197,7 @@ _gnutls_dsa_compute_k(mpz_t k, goto out; } - out: +out: zeroize_key(xp, sizeof(xp)); zeroize_key(tp, sizeof(tp)); diff --git a/lib/nettle/int/dsa-compute-k.h b/lib/nettle/int/dsa-compute-k.h index 1e9ec824da..49d243acb4 100644 --- a/lib/nettle/int/dsa-compute-k.h +++ b/lib/nettle/int/dsa-compute-k.h @@ -21,16 +21,13 @@ */ #ifndef GNUTLS_LIB_NETTLE_INT_DSA_COMPUTE_K_H -# define GNUTLS_LIB_NETTLE_INT_DSA_COMPUTE_K_H +#define GNUTLS_LIB_NETTLE_INT_DSA_COMPUTE_K_H -# include -# include /* includes gmp.h */ +#include +#include /* includes gmp.h */ -int -_gnutls_dsa_compute_k(mpz_t k, - const mpz_t q, - const mpz_t x, - gnutls_mac_algorithm_t mac, - const uint8_t * digest, size_t length); +int _gnutls_dsa_compute_k(mpz_t k, const mpz_t q, const mpz_t x, + gnutls_mac_algorithm_t mac, const uint8_t *digest, + size_t length); -#endif /* GNUTLS_LIB_NETTLE_INT_DSA_COMPUTE_K_H */ +#endif /* GNUTLS_LIB_NETTLE_INT_DSA_COMPUTE_K_H */ diff --git a/lib/nettle/int/dsa-fips.h b/lib/nettle/int/dsa-fips.h index 1dd6e19a99..e27cd119f4 100644 --- a/lib/nettle/int/dsa-fips.h +++ b/lib/nettle/int/dsa-fips.h @@ -20,17 +20,17 @@ */ #ifndef GNUTLS_LIB_NETTLE_INT_DSA_FIPS_H -# define GNUTLS_LIB_NETTLE_INT_DSA_FIPS_H +#define GNUTLS_LIB_NETTLE_INT_DSA_FIPS_H -# include /* includes gmp.h */ -# include -# include -# include +#include /* includes gmp.h */ +#include +#include +#include -# define div_ceil(x,y) ((x+(y)-1)/(y)) +#define div_ceil(x, y) ((x + (y)-1) / (y)) struct dss_params_validation_seeds { - unsigned seed_length; /* first seed */ + unsigned seed_length; /* first seed */ uint8_t seed[MAX_PVP_SEED_SIZE + 1]; unsigned pseed_length; @@ -41,76 +41,60 @@ struct dss_params_validation_seeds { unsigned qgen_counter; }; -int -st_provable_prime(mpz_t p, - unsigned *prime_seed_length, void *prime_seed, - unsigned *prime_gen_counter, - unsigned bits, - unsigned seed_length, const void *seed, - void *progress_ctx, nettle_progress_func * progress); - -int -dsa_generate_dss_pqg(struct dsa_params *params, - struct dss_params_validation_seeds *cert, - unsigned index, - void *random_ctx, nettle_random_func * random, - void *progress_ctx, nettle_progress_func * progress, - unsigned p_bits /* = L */ , unsigned q_bits /* = N */ ); - -int -_dsa_generate_dss_pqg(struct dsa_params *params, - struct dss_params_validation_seeds *cert, - unsigned index, - unsigned seed_size, void *seed, - void *progress_ctx, nettle_progress_func * progress, - unsigned p_bits /* = L */ , unsigned q_bits /* = N */ ); - -int -dsa_generate_dss_keypair(struct dsa_params *params, - mpz_t y, - mpz_t x, - void *random_ctx, nettle_random_func * random, - void *progress_ctx, nettle_progress_func * progress); - -int -dsa_validate_dss_pqg(struct dsa_params *pub, - struct dss_params_validation_seeds *cert, unsigned index); - -int -_dsa_validate_dss_pq(struct dsa_params *pub, - struct dss_params_validation_seeds *cert); - -int -_dsa_validate_dss_g(struct dsa_params *pub, - unsigned domain_seed_size, const uint8_t * domain_seed, - unsigned index); +int st_provable_prime(mpz_t p, unsigned *prime_seed_length, void *prime_seed, + unsigned *prime_gen_counter, unsigned bits, + unsigned seed_length, const void *seed, + void *progress_ctx, nettle_progress_func *progress); + +int dsa_generate_dss_pqg(struct dsa_params *params, + struct dss_params_validation_seeds *cert, + unsigned index, void *random_ctx, + nettle_random_func *random, void *progress_ctx, + nettle_progress_func *progress, + unsigned p_bits /* = L */, unsigned q_bits /* = N */); + +int _dsa_generate_dss_pqg(struct dsa_params *params, + struct dss_params_validation_seeds *cert, + unsigned index, unsigned seed_size, void *seed, + void *progress_ctx, nettle_progress_func *progress, + unsigned p_bits /* = L */, unsigned q_bits /* = N */); + +int dsa_generate_dss_keypair(struct dsa_params *params, mpz_t y, mpz_t x, + void *random_ctx, nettle_random_func *random, + void *progress_ctx, + nettle_progress_func *progress); + +int dsa_validate_dss_pqg(struct dsa_params *pub, + struct dss_params_validation_seeds *cert, + unsigned index); + +int _dsa_validate_dss_pq(struct dsa_params *pub, + struct dss_params_validation_seeds *cert); + +int _dsa_validate_dss_g(struct dsa_params *pub, unsigned domain_seed_size, + const uint8_t *domain_seed, unsigned index); unsigned _dsa_check_qp_sizes(unsigned q_bits, unsigned p_bits, unsigned generate); /* The following low-level functions can be used for DH key exchange as well */ -int -_dsa_generate_dss_pq(struct dsa_params *pub, - struct dss_params_validation_seeds *cert, - unsigned seed_length, void *seed, - void *progress_ctx, nettle_progress_func * progress, - unsigned p_bits, unsigned q_bits); - -int -_dsa_generate_dss_g(struct dsa_params *pub, - unsigned domain_seed_size, const uint8_t * domain_seed, - void *progress_ctx, nettle_progress_func * progress, - unsigned index); - -void -_dsa_generate_dss_xy(struct dsa_params *pub, - mpz_t y, - mpz_t x, void *random_ctx, nettle_random_func * random); - -# define DIGEST_SIZE SHA384_DIGEST_SIZE -inline static void -hash(uint8_t digest[DIGEST_SIZE], unsigned length, void *data) +int _dsa_generate_dss_pq(struct dsa_params *pub, + struct dss_params_validation_seeds *cert, + unsigned seed_length, void *seed, void *progress_ctx, + nettle_progress_func *progress, unsigned p_bits, + unsigned q_bits); + +int _dsa_generate_dss_g(struct dsa_params *pub, unsigned domain_seed_size, + const uint8_t *domain_seed, void *progress_ctx, + nettle_progress_func *progress, unsigned index); + +void _dsa_generate_dss_xy(struct dsa_params *pub, mpz_t y, mpz_t x, + void *random_ctx, nettle_random_func *random); + +#define DIGEST_SIZE SHA384_DIGEST_SIZE +inline static void hash(uint8_t digest[DIGEST_SIZE], unsigned length, + void *data) { struct sha384_ctx ctx; @@ -123,4 +107,4 @@ hash(uint8_t digest[DIGEST_SIZE], unsigned length, void *data) unsigned mpz_seed_sizeinbase_256_u(mpz_t s, unsigned nominal); -#endif /* GNUTLS_LIB_NETTLE_INT_DSA_FIPS_H */ +#endif /* GNUTLS_LIB_NETTLE_INT_DSA_FIPS_H */ diff --git a/lib/nettle/int/dsa-keygen-fips186.c b/lib/nettle/int/dsa-keygen-fips186.c index 29993962b2..fa0bebe3df 100644 --- a/lib/nettle/int/dsa-keygen-fips186.c +++ b/lib/nettle/int/dsa-keygen-fips186.c @@ -22,7 +22,7 @@ */ #if HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include @@ -61,12 +61,11 @@ unsigned _dsa_check_qp_sizes(unsigned q_bits, unsigned p_bits, * * The hash function used is SHA384. */ -int -_dsa_generate_dss_pq(struct dsa_params *params, - struct dss_params_validation_seeds *cert, - unsigned seed_length, void *seed, - void *progress_ctx, nettle_progress_func * progress, - unsigned p_bits /* = L */ , unsigned q_bits /* = N */ ) +int _dsa_generate_dss_pq(struct dsa_params *params, + struct dss_params_validation_seeds *cert, + unsigned seed_length, void *seed, void *progress_ctx, + nettle_progress_func *progress, + unsigned p_bits /* = L */, unsigned q_bits /* = N */) { mpz_t r, p0, t, z, s, tmp, dp0; int ret; @@ -80,9 +79,9 @@ _dsa_generate_dss_pq(struct dsa_params *params, } if (seed_length < q_bits / 8) { - _gnutls_debug_log - ("Seed length must be larger than %d bytes (it is %d)\n", - q_bits / 8, seed_length); + _gnutls_debug_log( + "Seed length must be larger than %d bytes (it is %d)\n", + q_bits / 8, seed_length); return 0; } @@ -106,11 +105,9 @@ _dsa_generate_dss_pq(struct dsa_params *params, cert->qseed_length = sizeof(cert->qseed); cert->pseed_length = sizeof(cert->pseed); - ret = st_provable_prime(params->q, - &cert->qseed_length, cert->qseed, - &cert->qgen_counter, - q_bits, - seed_length, seed, progress_ctx, progress); + ret = st_provable_prime(params->q, &cert->qseed_length, cert->qseed, + &cert->qgen_counter, q_bits, seed_length, seed, + progress_ctx, progress); if (ret == 0) { goto fail; } @@ -118,12 +115,10 @@ _dsa_generate_dss_pq(struct dsa_params *params, if (progress) progress(progress_ctx, 'q'); - ret = st_provable_prime(p0, - &cert->pseed_length, cert->pseed, - &cert->pgen_counter, - 1 + div_ceil(p_bits, 2), - cert->qseed_length, cert->qseed, - progress_ctx, progress); + ret = st_provable_prime(p0, &cert->pseed_length, cert->pseed, + &cert->pgen_counter, 1 + div_ceil(p_bits, 2), + cert->qseed_length, cert->qseed, progress_ctx, + progress); if (ret == 0) { goto fail; } @@ -162,12 +157,12 @@ _dsa_generate_dss_pq(struct dsa_params *params, /* Generate candidate prime p in [2^(bits-1), 2^bits] */ /* t = u[x/2c0] */ - mpz_mul_2exp(dp0, p0, 1); /* dp0 = 2*p0 */ - mpz_mul(dp0, dp0, params->q); /* dp0 = 2*p0*q */ + mpz_mul_2exp(dp0, p0, 1); /* dp0 = 2*p0 */ + mpz_mul(dp0, dp0, params->q); /* dp0 = 2*p0*q */ mpz_cdiv_q(t, tmp, dp0); - retry: +retry: /* c = 2p0*q*t + 1 */ mpz_mul(params->p, dp0, t); mpz_add_ui(params->p, params->p, 1); @@ -206,13 +201,14 @@ _dsa_generate_dss_pq(struct dsa_params *params, nettle_mpz_get_str_256(cert->pseed_length, cert->pseed, s); /* a = 2 + (a mod (p-3)) */ - mpz_sub_ui(tmp, params->p, 3); /* c is too large to worry about negatives */ + mpz_sub_ui(tmp, params->p, + 3); /* c is too large to worry about negatives */ mpz_mod(r, r, tmp); mpz_add_ui(r, r, 2); /* z = a^(2tq) mod p */ - mpz_mul_2exp(tmp, t, 1); /* tmp = 2t */ - mpz_mul(tmp, tmp, params->q); /* tmp = 2tq */ + mpz_mul_2exp(tmp, t, 1); /* tmp = 2t */ + mpz_mul(tmp, tmp, params->q); /* tmp = 2tq */ mpz_powm(z, r, tmp, params->p); mpz_sub_ui(tmp, z, 1); @@ -234,17 +230,17 @@ _dsa_generate_dss_pq(struct dsa_params *params, mpz_add_ui(t, t, 1); goto retry; - success: +success: if (progress) progress(progress_ctx, 'p'); ret = 1; goto finish; - fail: +fail: ret = 0; - finish: +finish: mpz_clear(dp0); mpz_clear(p0); mpz_clear(tmp); @@ -256,11 +252,9 @@ _dsa_generate_dss_pq(struct dsa_params *params, return ret; } -int -_dsa_generate_dss_g(struct dsa_params *params, - unsigned domain_seed_size, const uint8_t * domain_seed, - void *progress_ctx, nettle_progress_func * progress, - unsigned index) +int _dsa_generate_dss_g(struct dsa_params *params, unsigned domain_seed_size, + const uint8_t *domain_seed, void *progress_ctx, + nettle_progress_func *progress, unsigned index) { mpz_t e, w; uint16_t count; @@ -287,7 +281,7 @@ _dsa_generate_dss_g(struct dsa_params *params, memcpy(dseed + pos, "\x67\x67\x65\x6e", 4); pos += 4; - *(dseed + pos) = (uint8_t) index; + *(dseed + pos) = (uint8_t)index; pos += 1; mpz_sub_ui(e, params->p, 1); @@ -317,26 +311,23 @@ _dsa_generate_dss_g(struct dsa_params *params, ret = 0; goto finish; - success: +success: if (progress) progress(progress_ctx, 'g'); ret = 1; - finish: +finish: free(dseed); mpz_clear(e); mpz_clear(w); return ret; - } /* Generates the public and private DSA (or DH) keys */ -void -_dsa_generate_dss_xy(struct dsa_params *params, - mpz_t y, mpz_t x, - void *random_ctx, nettle_random_func * random) +void _dsa_generate_dss_xy(struct dsa_params *params, mpz_t y, mpz_t x, + void *random_ctx, nettle_random_func *random) { mpz_t r; @@ -365,13 +356,12 @@ _dsa_generate_dss_xy(struct dsa_params *params, * q_bits: The requested size of q * */ -int -dsa_generate_dss_pqg(struct dsa_params *params, - struct dss_params_validation_seeds *cert, - unsigned index, - void *random_ctx, nettle_random_func * random, - void *progress_ctx, nettle_progress_func * progress, - unsigned p_bits /* = L */ , unsigned q_bits /* = N */ ) +int dsa_generate_dss_pqg(struct dsa_params *params, + struct dss_params_validation_seeds *cert, + unsigned index, void *random_ctx, + nettle_random_func *random, void *progress_ctx, + nettle_progress_func *progress, + unsigned p_bits /* = L */, unsigned q_bits /* = N */) { int ret; uint8_t domain_seed[MAX_PVP_SEED_SIZE * 3]; @@ -394,28 +384,25 @@ dsa_generate_dss_pqg(struct dsa_params *params, return 0; domain_seed_size = - cert->seed_length + cert->qseed_length + cert->pseed_length; + cert->seed_length + cert->qseed_length + cert->pseed_length; memcpy(domain_seed, cert->seed, cert->seed_length); memcpy(&domain_seed[cert->seed_length], cert->pseed, cert->pseed_length); memcpy(&domain_seed[cert->seed_length + cert->pseed_length], cert->qseed, cert->qseed_length); - ret = - _dsa_generate_dss_g(params, domain_seed_size, domain_seed, - progress_ctx, progress, index); + ret = _dsa_generate_dss_g(params, domain_seed_size, domain_seed, + progress_ctx, progress, index); if (ret == 0) return 0; return 1; } -int -_dsa_generate_dss_pqg(struct dsa_params *params, - struct dss_params_validation_seeds *cert, - unsigned index, - unsigned seed_size, void *seed, - void *progress_ctx, nettle_progress_func * progress, - unsigned p_bits /* = L */ , unsigned q_bits /* = N */ ) +int _dsa_generate_dss_pqg(struct dsa_params *params, + struct dss_params_validation_seeds *cert, + unsigned index, unsigned seed_size, void *seed, + void *progress_ctx, nettle_progress_func *progress, + unsigned p_bits /* = L */, unsigned q_bits /* = N */) { int ret; uint8_t domain_seed[MAX_PVP_SEED_SIZE * 3]; @@ -446,27 +433,23 @@ _dsa_generate_dss_pqg(struct dsa_params *params, return 0; domain_seed_size = - cert->seed_length + cert->qseed_length + cert->pseed_length; + cert->seed_length + cert->qseed_length + cert->pseed_length; memcpy(domain_seed, cert->seed, cert->seed_length); memcpy(&domain_seed[cert->seed_length], cert->pseed, cert->pseed_length); memcpy(&domain_seed[cert->seed_length + cert->pseed_length], cert->qseed, cert->qseed_length); - ret = - _dsa_generate_dss_g(params, domain_seed_size, domain_seed, - progress_ctx, progress, index); + ret = _dsa_generate_dss_g(params, domain_seed_size, domain_seed, + progress_ctx, progress, index); if (ret == 0) return 0; return 1; } -int -dsa_generate_dss_keypair(struct dsa_params *params, - mpz_t y, - mpz_t x, - void *random_ctx, nettle_random_func * random, - void *progress_ctx, nettle_progress_func * progress) +int dsa_generate_dss_keypair(struct dsa_params *params, mpz_t y, mpz_t x, + void *random_ctx, nettle_random_func *random, + void *progress_ctx, nettle_progress_func *progress) { _dsa_generate_dss_xy(params, y, x, random_ctx, random); @@ -474,5 +457,4 @@ dsa_generate_dss_keypair(struct dsa_params *params, progress(progress_ctx, '\n'); return 1; - } diff --git a/lib/nettle/int/dsa-validate.c b/lib/nettle/int/dsa-validate.c index 8443b6ad08..45b63380be 100644 --- a/lib/nettle/int/dsa-validate.c +++ b/lib/nettle/int/dsa-validate.c @@ -22,7 +22,7 @@ */ #if HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include @@ -44,9 +44,9 @@ * index: 1 for digital signatures (DSA), 2 for key establishment (DH) * */ -int -dsa_validate_dss_pqg(struct dsa_params *pub, - struct dss_params_validation_seeds *cert, unsigned index) +int dsa_validate_dss_pqg(struct dsa_params *pub, + struct dss_params_validation_seeds *cert, + unsigned index) { int ret; uint8_t domain_seed[MAX_PVP_SEED_SIZE * 3]; @@ -57,7 +57,7 @@ dsa_validate_dss_pqg(struct dsa_params *pub, return 0; domain_seed_size = - cert->seed_length + cert->qseed_length + cert->pseed_length; + cert->seed_length + cert->qseed_length + cert->pseed_length; memcpy(domain_seed, cert->seed, cert->seed_length); memcpy(&domain_seed[cert->seed_length], cert->pseed, cert->pseed_length); @@ -71,10 +71,8 @@ dsa_validate_dss_pqg(struct dsa_params *pub, return 1; } -int -_dsa_validate_dss_g(struct dsa_params *pub, - unsigned domain_seed_size, const uint8_t * domain_seed, - unsigned index) +int _dsa_validate_dss_g(struct dsa_params *pub, unsigned domain_seed_size, + const uint8_t *domain_seed, unsigned index) { int ret; unsigned p_bits, q_bits; @@ -114,9 +112,8 @@ _dsa_validate_dss_g(struct dsa_params *pub, } /* repeat g generation */ - ret = _dsa_generate_dss_g(&pub2, - domain_seed_size, domain_seed, - NULL, NULL, index); + ret = _dsa_generate_dss_g(&pub2, domain_seed_size, domain_seed, NULL, + NULL, index); if (ret == 0) { goto fail; } @@ -129,19 +126,18 @@ _dsa_validate_dss_g(struct dsa_params *pub, ret = 1; goto finish; - fail: +fail: ret = 0; - finish: +finish: dsa_params_clear(&pub2); mpz_clear(r); return ret; } -int -_dsa_validate_dss_pq(struct dsa_params *pub, - struct dss_params_validation_seeds *cert) +int _dsa_validate_dss_pq(struct dsa_params *pub, + struct dss_params_validation_seeds *cert) { int ret; unsigned p_bits, q_bits; @@ -203,17 +199,18 @@ _dsa_validate_dss_pq(struct dsa_params *pub, goto fail; } - if ((cert->pseed_length > 0 && cert->pseed_length != cert2.pseed_length) - || (cert->qseed_length > 0 - && cert->qseed_length != cert2.qseed_length) - || (cert->pgen_counter > 0 - && cert->pgen_counter != cert2.pgen_counter) - || (cert->qgen_counter > 0 - && cert->qgen_counter != cert2.qgen_counter) - || (cert->qseed_length > 0 - && memcmp(cert->qseed, cert2.qseed, cert2.qseed_length) != 0) - || (cert->pseed_length > 0 - && memcmp(cert->pseed, cert2.pseed, cert2.pseed_length) != 0)) { + if ((cert->pseed_length > 0 && + cert->pseed_length != cert2.pseed_length) || + (cert->qseed_length > 0 && + cert->qseed_length != cert2.qseed_length) || + (cert->pgen_counter > 0 && + cert->pgen_counter != cert2.pgen_counter) || + (cert->qgen_counter > 0 && + cert->qgen_counter != cert2.qgen_counter) || + (cert->qseed_length > 0 && + memcmp(cert->qseed, cert2.qseed, cert2.qseed_length) != 0) || + (cert->pseed_length > 0 && + memcmp(cert->pseed, cert2.pseed, cert2.pseed_length) != 0)) { goto fail; } @@ -232,10 +229,10 @@ _dsa_validate_dss_pq(struct dsa_params *pub, ret = 1; goto finish; - fail: +fail: ret = 0; - finish: +finish: dsa_params_clear(&pub2); mpz_clear(r); mpz_clear(s); diff --git a/lib/nettle/int/ecdsa-compute-k.c b/lib/nettle/int/ecdsa-compute-k.c index 9c1344e12a..3b7f886160 100644 --- a/lib/nettle/int/ecdsa-compute-k.c +++ b/lib/nettle/int/ecdsa-compute-k.c @@ -21,7 +21,7 @@ */ #if HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include "ecdsa-compute-k.h" @@ -29,52 +29,54 @@ #include "dsa-compute-k.h" #include "gnutls_int.h" -static inline int -_gnutls_ecc_curve_to_dsa_q(mpz_t * q, gnutls_ecc_curve_t curve) +static inline int _gnutls_ecc_curve_to_dsa_q(mpz_t *q, gnutls_ecc_curve_t curve) { switch (curve) { #ifdef ENABLE_NON_SUITEB_CURVES case GNUTLS_ECC_CURVE_SECP192R1: mpz_init_set_str(*q, "FFFFFFFFFFFFFFFFFFFFFFFF99DEF836" - "146BC9B1B4D22831", 16); + "146BC9B1B4D22831", + 16); return 0; case GNUTLS_ECC_CURVE_SECP224R1: mpz_init_set_str(*q, "FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2" - "E0B8F03E13DD29455C5C2A3D", 16); + "E0B8F03E13DD29455C5C2A3D", + 16); return 0; #endif case GNUTLS_ECC_CURVE_SECP256R1: mpz_init_set_str(*q, "FFFFFFFF00000000FFFFFFFFFFFFFFFF" - "BCE6FAADA7179E84F3B9CAC2FC632551", 16); + "BCE6FAADA7179E84F3B9CAC2FC632551", + 16); return 0; case GNUTLS_ECC_CURVE_SECP384R1: mpz_init_set_str(*q, "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" "FFFFFFFFFFFFFFFFC7634D81F4372DDF" - "581A0DB248B0A77AECEC196ACCC52973", 16); + "581A0DB248B0A77AECEC196ACCC52973", + 16); return 0; case GNUTLS_ECC_CURVE_SECP521R1: mpz_init_set_str(*q, "1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" "FFA51868783BF2F966B7FCC0148F709A" - "5D03BB5C9B8899C47AEBB6FB71E91386" "409", 16); + "5D03BB5C9B8899C47AEBB6FB71E91386" + "409", + 16); return 0; default: - return - gnutls_assert_val(GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM); + return gnutls_assert_val( + GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM); } } -int -_gnutls_ecdsa_compute_k(mpz_t k, - gnutls_ecc_curve_t curve, - const mpz_t x, - gnutls_mac_algorithm_t mac, - const uint8_t * digest, size_t length) +int _gnutls_ecdsa_compute_k(mpz_t k, gnutls_ecc_curve_t curve, const mpz_t x, + gnutls_mac_algorithm_t mac, const uint8_t *digest, + size_t length) { mpz_t q; int ret; diff --git a/lib/nettle/int/ecdsa-compute-k.h b/lib/nettle/int/ecdsa-compute-k.h index 0607e7c8eb..be8beddb5d 100644 --- a/lib/nettle/int/ecdsa-compute-k.h +++ b/lib/nettle/int/ecdsa-compute-k.h @@ -21,16 +21,13 @@ */ #ifndef GNUTLS_LIB_NETTLE_INT_ECDSA_COMPUTE_K_H -# define GNUTLS_LIB_NETTLE_INT_ECDSA_COMPUTE_K_H +#define GNUTLS_LIB_NETTLE_INT_ECDSA_COMPUTE_K_H -# include -# include /* includes gmp.h */ +#include +#include /* includes gmp.h */ -int -_gnutls_ecdsa_compute_k(mpz_t k, - gnutls_ecc_curve_t curve, - const mpz_t x, - gnutls_mac_algorithm_t mac, - const uint8_t * digest, size_t length); +int _gnutls_ecdsa_compute_k(mpz_t k, gnutls_ecc_curve_t curve, const mpz_t x, + gnutls_mac_algorithm_t mac, const uint8_t *digest, + size_t length); -#endif /* GNUTLS_LIB_NETTLE_INT_ECDSA_COMPUTE_K_H */ +#endif /* GNUTLS_LIB_NETTLE_INT_ECDSA_COMPUTE_K_H */ diff --git a/lib/nettle/int/mpn-base256.c b/lib/nettle/int/mpn-base256.c index 428cb1628a..3f224d5f8d 100644 --- a/lib/nettle/int/mpn-base256.c +++ b/lib/nettle/int/mpn-base256.c @@ -31,13 +31,12 @@ */ #if HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include "mpn-base256.h" -void -mpn_set_base256(mp_limb_t * rp, mp_size_t rn, const uint8_t * xp, size_t xn) +void mpn_set_base256(mp_limb_t *rp, mp_size_t rn, const uint8_t *xp, size_t xn) { size_t xi; mp_limb_t out; @@ -61,8 +60,7 @@ mpn_set_base256(mp_limb_t * rp, mp_size_t rn, const uint8_t * xp, size_t xn) } } -void -mpn_get_base256(uint8_t * rp, size_t rn, const mp_limb_t * xp, mp_size_t xn) +void mpn_get_base256(uint8_t *rp, size_t rn, const mp_limb_t *xp, mp_size_t xn) { unsigned bits; mp_limb_t in; diff --git a/lib/nettle/int/mpn-base256.h b/lib/nettle/int/mpn-base256.h index 016b4ef1e3..afa1014c70 100644 --- a/lib/nettle/int/mpn-base256.h +++ b/lib/nettle/int/mpn-base256.h @@ -31,16 +31,14 @@ */ #ifndef NETTLE_GMP_GLUE_H_INCLUDED -# define NETTLE_GMP_GLUE_H_INCLUDED +#define NETTLE_GMP_GLUE_H_INCLUDED -# include +#include /* Like mpn_set_str, but always writes rn limbs. If input is larger, higher bits are ignored. */ -void -mpn_set_base256(mp_limb_t * rp, mp_size_t rn, const uint8_t * xp, size_t xn); +void mpn_set_base256(mp_limb_t *rp, mp_size_t rn, const uint8_t *xp, size_t xn); -void -mpn_get_base256(uint8_t * rp, size_t rn, const mp_limb_t * xp, mp_size_t xn); +void mpn_get_base256(uint8_t *rp, size_t rn, const mp_limb_t *xp, mp_size_t xn); -#endif /* NETTLE_GMP_GLUE_H_INCLUDED */ +#endif /* NETTLE_GMP_GLUE_H_INCLUDED */ diff --git a/lib/nettle/int/provable-prime.c b/lib/nettle/int/provable-prime.c index 00b278db72..d313b1a4cb 100644 --- a/lib/nettle/int/provable-prime.c +++ b/lib/nettle/int/provable-prime.c @@ -20,7 +20,7 @@ */ #if HAVE_CONFIG_H -# include +#include #endif #include @@ -32,941 +32,661 @@ #include static const uint16_t primes[] = { - 3, 5, 7, 11, 13, 17, 19, - 23, 29, 31, 37, 41, 43, 47, - 53, 59, 61, 67, 71, 73, 79, - 83, 89, 97, 101, 103, 107, 109, - 113, 127, 131, 137, 139, 149, 151, - 157, 163, 167, 173, 179, 181, 191, - 193, 197, 199, 211, 223, 227, 229, - 233, 239, 241, 251, 257, 263, 269, - 271, 277, 281, 283, 293, 307, 311, - 313, 317, 331, 337, 347, 349, 353, - 359, 367, 373, 379, 383, 389, 397, - 401, 409, 419, 421, 431, 433, 439, - 443, 449, 457, 461, 463, 467, 479, - 487, 491, 499, 503, 509, 521, 523, - 541, 547, 557, 563, 569, 571, 577, - 587, 593, 599, 601, 607, 613, 617, - 619, 631, 641, 643, 647, 653, 659, - 661, 673, 677, 683, 691, 701, 709, - 719, 727, 733, 739, 743, 751, 757, - 761, 769, 773, 787, 797, 809, 811, - 821, 823, 827, 829, 839, 853, 857, - 859, 863, 877, 881, 883, 887, 907, - 911, 919, 929, 937, 941, 947, 953, - 967, 971, 977, 983, 991, 997, 1009, - 1013, 1019, 1021, 1031, 1033, 1039, 1049, - 1051, 1061, 1063, 1069, 1087, 1091, 1093, - 1097, 1103, 1109, 1117, 1123, 1129, 1151, - 1153, 1163, 1171, 1181, 1187, 1193, 1201, - 1213, 1217, 1223, 1229, 1231, 1237, 1249, - 1259, 1277, 1279, 1283, 1289, 1291, 1297, - 1301, 1303, 1307, 1319, 1321, 1327, 1361, - 1367, 1373, 1381, 1399, 1409, 1423, 1427, - 1429, 1433, 1439, 1447, 1451, 1453, 1459, - 1471, 1481, 1483, 1487, 1489, 1493, 1499, - 1511, 1523, 1531, 1543, 1549, 1553, 1559, - 1567, 1571, 1579, 1583, 1597, 1601, 1607, - 1609, 1613, 1619, 1621, 1627, 1637, 1657, - 1663, 1667, 1669, 1693, 1697, 1699, 1709, - 1721, 1723, 1733, 1741, 1747, 1753, 1759, - 1777, 1783, 1787, 1789, 1801, 1811, 1823, - 1831, 1847, 1861, 1867, 1871, 1873, 1877, - 1879, 1889, 1901, 1907, 1913, 1931, 1933, - 1949, 1951, 1973, 1979, 1987, 1993, 1997, - 1999, 2003, 2011, 2017, 2027, 2029, 2039, - 2053, 2063, 2069, 2081, 2083, 2087, 2089, - 2099, 2111, 2113, 2129, 2131, 2137, 2141, - 2143, 2153, 2161, 2179, 2203, 2207, 2213, - 2221, 2237, 2239, 2243, 2251, 2267, 2269, - 2273, 2281, 2287, 2293, 2297, 2309, 2311, - 2333, 2339, 2341, 2347, 2351, 2357, 2371, - 2377, 2381, 2383, 2389, 2393, 2399, 2411, - 2417, 2423, 2437, 2441, 2447, 2459, 2467, - 2473, 2477, 2503, 2521, 2531, 2539, 2543, - 2549, 2551, 2557, 2579, 2591, 2593, 2609, - 2617, 2621, 2633, 2647, 2657, 2659, 2663, - 2671, 2677, 2683, 2687, 2689, 2693, 2699, - 2707, 2711, 2713, 2719, 2729, 2731, 2741, - 2749, 2753, 2767, 2777, 2789, 2791, 2797, - 2801, 2803, 2819, 2833, 2837, 2843, 2851, - 2857, 2861, 2879, 2887, 2897, 2903, 2909, - 2917, 2927, 2939, 2953, 2957, 2963, 2969, - 2971, 2999, 3001, 3011, 3019, 3023, 3037, - 3041, 3049, 3061, 3067, 3079, 3083, 3089, - 3109, 3119, 3121, 3137, 3163, 3167, 3169, - 3181, 3187, 3191, 3203, 3209, 3217, 3221, - 3229, 3251, 3253, 3257, 3259, 3271, 3299, - 3301, 3307, 3313, 3319, 3323, 3329, 3331, - 3343, 3347, 3359, 3361, 3371, 3373, 3389, - 3391, 3407, 3413, 3433, 3449, 3457, 3461, - 3463, 3467, 3469, 3491, 3499, 3511, 3517, - 3527, 3529, 3533, 3539, 3541, 3547, 3557, - 3559, 3571, 3581, 3583, 3593, 3607, 3613, - 3617, 3623, 3631, 3637, 3643, 3659, 3671, - 3673, 3677, 3691, 3697, 3701, 3709, 3719, - 3727, 3733, 3739, 3761, 3767, 3769, 3779, - 3793, 3797, 3803, 3821, 3823, 3833, 3847, - 3851, 3853, 3863, 3877, 3881, 3889, 3907, - 3911, 3917, 3919, 3923, 3929, 3931, 3943, - 3947, 3967, 3989, 4001, 4003, 4007, 4013, - 4019, 4021, 4027, 4049, 4051, 4057, 4073, - 4079, 4091, 4093, 4099, 4111, 4127, 4129, - 4133, 4139, 4153, 4157, 4159, 4177, 4201, - 4211, 4217, 4219, 4229, 4231, 4241, 4243, - 4253, 4259, 4261, 4271, 4273, 4283, 4289, - 4297, 4327, 4337, 4339, 4349, 4357, 4363, - 4373, 4391, 4397, 4409, 4421, 4423, 4441, - 4447, 4451, 4457, 4463, 4481, 4483, 4493, - 4507, 4513, 4517, 4519, 4523, 4547, 4549, - 4561, 4567, 4583, 4591, 4597, 4603, 4621, - 4637, 4639, 4643, 4649, 4651, 4657, 4663, - 4673, 4679, 4691, 4703, 4721, 4723, 4729, - 4733, 4751, 4759, 4783, 4787, 4789, 4793, - 4799, 4801, 4813, 4817, 4831, 4861, 4871, - 4877, 4889, 4903, 4909, 4919, 4931, 4933, - 4937, 4943, 4951, 4957, 4967, 4969, 4973, - 4987, 4993, 4999, 5003, 5009, 5011, 5021, - 5023, 5039, 5051, 5059, 5077, 5081, 5087, - 5099, 5101, 5107, 5113, 5119, 5147, 5153, - 5167, 5171, 5179, 5189, 5197, 5209, 5227, - 5231, 5233, 5237, 5261, 5273, 5279, 5281, - 5297, 5303, 5309, 5323, 5333, 5347, 5351, - 5381, 5387, 5393, 5399, 5407, 5413, 5417, - 5419, 5431, 5437, 5441, 5443, 5449, 5471, - 5477, 5479, 5483, 5501, 5503, 5507, 5519, - 5521, 5527, 5531, 5557, 5563, 5569, 5573, - 5581, 5591, 5623, 5639, 5641, 5647, 5651, - 5653, 5657, 5659, 5669, 5683, 5689, 5693, - 5701, 5711, 5717, 5737, 5741, 5743, 5749, - 5779, 5783, 5791, 5801, 5807, 5813, 5821, - 5827, 5839, 5843, 5849, 5851, 5857, 5861, - 5867, 5869, 5879, 5881, 5897, 5903, 5923, - 5927, 5939, 5953, 5981, 5987, 6007, 6011, - 6029, 6037, 6043, 6047, 6053, 6067, 6073, - 6079, 6089, 6091, 6101, 6113, 6121, 6131, - 6133, 6143, 6151, 6163, 6173, 6197, 6199, - 6203, 6211, 6217, 6221, 6229, 6247, 6257, - 6263, 6269, 6271, 6277, 6287, 6299, 6301, - 6311, 6317, 6323, 6329, 6337, 6343, 6353, - 6359, 6361, 6367, 6373, 6379, 6389, 6397, - 6421, 6427, 6449, 6451, 6469, 6473, 6481, - 6491, 6521, 6529, 6547, 6551, 6553, 6563, - 6569, 6571, 6577, 6581, 6599, 6607, 6619, - 6637, 6653, 6659, 6661, 6673, 6679, 6689, - 6691, 6701, 6703, 6709, 6719, 6733, 6737, - 6761, 6763, 6779, 6781, 6791, 6793, 6803, - 6823, 6827, 6829, 6833, 6841, 6857, 6863, - 6869, 6871, 6883, 6899, 6907, 6911, 6917, - 6947, 6949, 6959, 6961, 6967, 6971, 6977, - 6983, 6991, 6997, 7001, 7013, 7019, 7027, - 7039, 7043, 7057, 7069, 7079, 7103, 7109, - 7121, 7127, 7129, 7151, 7159, 7177, 7187, - 7193, 7207, 7211, 7213, 7219, 7229, 7237, - 7243, 7247, 7253, 7283, 7297, 7307, 7309, - 7321, 7331, 7333, 7349, 7351, 7369, 7393, - 7411, 7417, 7433, 7451, 7457, 7459, 7477, - 7481, 7487, 7489, 7499, 7507, 7517, 7523, - 7529, 7537, 7541, 7547, 7549, 7559, 7561, - 7573, 7577, 7583, 7589, 7591, 7603, 7607, - 7621, 7639, 7643, 7649, 7669, 7673, 7681, - 7687, 7691, 7699, 7703, 7717, 7723, 7727, - 7741, 7753, 7757, 7759, 7789, 7793, 7817, - 7823, 7829, 7841, 7853, 7867, 7873, 7877, - 7879, 7883, 7901, 7907, 7919, 7927, 7933, - 7937, 7949, 7951, 7963, 7993, 8009, 8011, - 8017, 8039, 8053, 8059, 8069, 8081, 8087, - 8089, 8093, 8101, 8111, 8117, 8123, 8147, - 8161, 8167, 8171, 8179, 8191, 8209, 8219, - 8221, 8231, 8233, 8237, 8243, 8263, 8269, - 8273, 8287, 8291, 8293, 8297, 8311, 8317, - 8329, 8353, 8363, 8369, 8377, 8387, 8389, - 8419, 8423, 8429, 8431, 8443, 8447, 8461, - 8467, 8501, 8513, 8521, 8527, 8537, 8539, - 8543, 8563, 8573, 8581, 8597, 8599, 8609, - 8623, 8627, 8629, 8641, 8647, 8663, 8669, - 8677, 8681, 8689, 8693, 8699, 8707, 8713, - 8719, 8731, 8737, 8741, 8747, 8753, 8761, - 8779, 8783, 8803, 8807, 8819, 8821, 8831, - 8837, 8839, 8849, 8861, 8863, 8867, 8887, - 8893, 8923, 8929, 8933, 8941, 8951, 8963, - 8969, 8971, 8999, 9001, 9007, 9011, 9013, - 9029, 9041, 9043, 9049, 9059, 9067, 9091, - 9103, 9109, 9127, 9133, 9137, 9151, 9157, - 9161, 9173, 9181, 9187, 9199, 9203, 9209, - 9221, 9227, 9239, 9241, 9257, 9277, 9281, - 9283, 9293, 9311, 9319, 9323, 9337, 9341, - 9343, 9349, 9371, 9377, 9391, 9397, 9403, - 9413, 9419, 9421, 9431, 9433, 9437, 9439, - 9461, 9463, 9467, 9473, 9479, 9491, 9497, - 9511, 9521, 9533, 9539, 9547, 9551, 9587, - 9601, 9613, 9619, 9623, 9629, 9631, 9643, - 9649, 9661, 9677, 9679, 9689, 9697, 9719, - 9721, 9733, 9739, 9743, 9749, 9767, 9769, - 9781, 9787, 9791, 9803, 9811, 9817, 9829, - 9833, 9839, 9851, 9857, 9859, 9871, 9883, - 9887, 9901, 9907, 9923, 9929, 9931, 9941, - 9949, 9967, 9973, 10007, 10009, 10037, 10039, - 10061, 10067, 10069, 10079, 10091, 10093, 10099, - 10103, 10111, 10133, 10139, 10141, 10151, 10159, - 10163, 10169, 10177, 10181, 10193, 10211, 10223, - 10243, 10247, 10253, 10259, 10267, 10271, 10273, - 10289, 10301, 10303, 10313, 10321, 10331, 10333, - 10337, 10343, 10357, 10369, 10391, 10399, 10427, - 10429, 10433, 10453, 10457, 10459, 10463, 10477, - 10487, 10499, 10501, 10513, 10529, 10531, 10559, - 10567, 10589, 10597, 10601, 10607, 10613, 10627, - 10631, 10639, 10651, 10657, 10663, 10667, 10687, - 10691, 10709, 10711, 10723, 10729, 10733, 10739, - 10753, 10771, 10781, 10789, 10799, 10831, 10837, - 10847, 10853, 10859, 10861, 10867, 10883, 10889, - 10891, 10903, 10909, 10937, 10939, 10949, 10957, - 10973, 10979, 10987, 10993, 11003, 11027, 11047, - 11057, 11059, 11069, 11071, 11083, 11087, 11093, - 11113, 11117, 11119, 11131, 11149, 11159, 11161, - 11171, 11173, 11177, 11197, 11213, 11239, 11243, - 11251, 11257, 11261, 11273, 11279, 11287, 11299, - 11311, 11317, 11321, 11329, 11351, 11353, 11369, - 11383, 11393, 11399, 11411, 11423, 11437, 11443, - 11447, 11467, 11471, 11483, 11489, 11491, 11497, - 11503, 11519, 11527, 11549, 11551, 11579, 11587, - 11593, 11597, 11617, 11621, 11633, 11657, 11677, - 11681, 11689, 11699, 11701, 11717, 11719, 11731, - 11743, 11777, 11779, 11783, 11789, 11801, 11807, - 11813, 11821, 11827, 11831, 11833, 11839, 11863, - 11867, 11887, 11897, 11903, 11909, 11923, 11927, - 11933, 11939, 11941, 11953, 11959, 11969, 11971, - 11981, 11987, 12007, 12011, 12037, 12041, 12043, - 12049, 12071, 12073, 12097, 12101, 12107, 12109, - 12113, 12119, 12143, 12149, 12157, 12161, 12163, - 12197, 12203, 12211, 12227, 12239, 12241, 12251, - 12253, 12263, 12269, 12277, 12281, 12289, 12301, - 12323, 12329, 12343, 12347, 12373, 12377, 12379, - 12391, 12401, 12409, 12413, 12421, 12433, 12437, - 12451, 12457, 12473, 12479, 12487, 12491, 12497, - 12503, 12511, 12517, 12527, 12539, 12541, 12547, - 12553, 12569, 12577, 12583, 12589, 12601, 12611, - 12613, 12619, 12637, 12641, 12647, 12653, 12659, - 12671, 12689, 12697, 12703, 12713, 12721, 12739, - 12743, 12757, 12763, 12781, 12791, 12799, 12809, - 12821, 12823, 12829, 12841, 12853, 12889, 12893, - 12899, 12907, 12911, 12917, 12919, 12923, 12941, - 12953, 12959, 12967, 12973, 12979, 12983, 13001, - 13003, 13007, 13009, 13033, 13037, 13043, 13049, - 13063, 13093, 13099, 13103, 13109, 13121, 13127, - 13147, 13151, 13159, 13163, 13171, 13177, 13183, - 13187, 13217, 13219, 13229, 13241, 13249, 13259, - 13267, 13291, 13297, 13309, 13313, 13327, 13331, - 13337, 13339, 13367, 13381, 13397, 13399, 13411, - 13417, 13421, 13441, 13451, 13457, 13463, 13469, - 13477, 13487, 13499, 13513, 13523, 13537, 13553, - 13567, 13577, 13591, 13597, 13613, 13619, 13627, - 13633, 13649, 13669, 13679, 13681, 13687, 13691, - 13693, 13697, 13709, 13711, 13721, 13723, 13729, - 13751, 13757, 13759, 13763, 13781, 13789, 13799, - 13807, 13829, 13831, 13841, 13859, 13873, 13877, - 13879, 13883, 13901, 13903, 13907, 13913, 13921, - 13931, 13933, 13963, 13967, 13997, 13999, 14009, - 14011, 14029, 14033, 14051, 14057, 14071, 14081, - 14083, 14087, 14107, 14143, 14149, 14153, 14159, - 14173, 14177, 14197, 14207, 14221, 14243, 14249, - 14251, 14281, 14293, 14303, 14321, 14323, 14327, - 14341, 14347, 14369, 14387, 14389, 14401, 14407, - 14411, 14419, 14423, 14431, 14437, 14447, 14449, - 14461, 14479, 14489, 14503, 14519, 14533, 14537, - 14543, 14549, 14551, 14557, 14561, 14563, 14591, - 14593, 14621, 14627, 14629, 14633, 14639, 14653, - 14657, 14669, 14683, 14699, 14713, 14717, 14723, - 14731, 14737, 14741, 14747, 14753, 14759, 14767, - 14771, 14779, 14783, 14797, 14813, 14821, 14827, - 14831, 14843, 14851, 14867, 14869, 14879, 14887, - 14891, 14897, 14923, 14929, 14939, 14947, 14951, - 14957, 14969, 14983, 15013, 15017, 15031, 15053, - 15061, 15073, 15077, 15083, 15091, 15101, 15107, - 15121, 15131, 15137, 15139, 15149, 15161, 15173, - 15187, 15193, 15199, 15217, 15227, 15233, 15241, - 15259, 15263, 15269, 15271, 15277, 15287, 15289, - 15299, 15307, 15313, 15319, 15329, 15331, 15349, - 15359, 15361, 15373, 15377, 15383, 15391, 15401, - 15413, 15427, 15439, 15443, 15451, 15461, 15467, - 15473, 15493, 15497, 15511, 15527, 15541, 15551, - 15559, 15569, 15581, 15583, 15601, 15607, 15619, - 15629, 15641, 15643, 15647, 15649, 15661, 15667, - 15671, 15679, 15683, 15727, 15731, 15733, 15737, - 15739, 15749, 15761, 15767, 15773, 15787, 15791, - 15797, 15803, 15809, 15817, 15823, 15859, 15877, - 15881, 15887, 15889, 15901, 15907, 15913, 15919, - 15923, 15937, 15959, 15971, 15973, 15991, 16001, - 16007, 16033, 16057, 16061, 16063, 16067, 16069, - 16073, 16087, 16091, 16097, 16103, 16111, 16127, - 16139, 16141, 16183, 16187, 16189, 16193, 16217, - 16223, 16229, 16231, 16249, 16253, 16267, 16273, - 16301, 16319, 16333, 16339, 16349, 16361, 16363, - 16369, 16381, 16411, 16417, 16421, 16427, 16433, - 16447, 16451, 16453, 16477, 16481, 16487, 16493, - 16519, 16529, 16547, 16553, 16561, 16567, 16573, - 16603, 16607, 16619, 16631, 16633, 16649, 16651, - 16657, 16661, 16673, 16691, 16693, 16699, 16703, - 16729, 16741, 16747, 16759, 16763, 16787, 16811, - 16823, 16829, 16831, 16843, 16871, 16879, 16883, - 16889, 16901, 16903, 16921, 16927, 16931, 16937, - 16943, 16963, 16979, 16981, 16987, 16993, 17011, - 17021, 17027, 17029, 17033, 17041, 17047, 17053, - 17077, 17093, 17099, 17107, 17117, 17123, 17137, - 17159, 17167, 17183, 17189, 17191, 17203, 17207, - 17209, 17231, 17239, 17257, 17291, 17293, 17299, - 17317, 17321, 17327, 17333, 17341, 17351, 17359, - 17377, 17383, 17387, 17389, 17393, 17401, 17417, - 17419, 17431, 17443, 17449, 17467, 17471, 17477, - 17483, 17489, 17491, 17497, 17509, 17519, 17539, - 17551, 17569, 17573, 17579, 17581, 17597, 17599, - 17609, 17623, 17627, 17657, 17659, 17669, 17681, - 17683, 17707, 17713, 17729, 17737, 17747, 17749, - 17761, 17783, 17789, 17791, 17807, 17827, 17837, - 17839, 17851, 17863, 17881, 17891, 17903, 17909, - 17911, 17921, 17923, 17929, 17939, 17957, 17959, - 17971, 17977, 17981, 17987, 17989, 18013, 18041, - 18043, 18047, 18049, 18059, 18061, 18077, 18089, - 18097, 18119, 18121, 18127, 18131, 18133, 18143, - 18149, 18169, 18181, 18191, 18199, 18211, 18217, - 18223, 18229, 18233, 18251, 18253, 18257, 18269, - 18287, 18289, 18301, 18307, 18311, 18313, 18329, - 18341, 18353, 18367, 18371, 18379, 18397, 18401, - 18413, 18427, 18433, 18439, 18443, 18451, 18457, - 18461, 18481, 18493, 18503, 18517, 18521, 18523, - 18539, 18541, 18553, 18583, 18587, 18593, 18617, - 18637, 18661, 18671, 18679, 18691, 18701, 18713, - 18719, 18731, 18743, 18749, 18757, 18773, 18787, - 18793, 18797, 18803, 18839, 18859, 18869, 18899, - 18911, 18913, 18917, 18919, 18947, 18959, 18973, - 18979, 19001, 19009, 19013, 19031, 19037, 19051, - 19069, 19073, 19079, 19081, 19087, 19121, 19139, - 19141, 19157, 19163, 19181, 19183, 19207, 19211, - 19213, 19219, 19231, 19237, 19249, 19259, 19267, - 19273, 19289, 19301, 19309, 19319, 19333, 19373, - 19379, 19381, 19387, 19391, 19403, 19417, 19421, - 19423, 19427, 19429, 19433, 19441, 19447, 19457, - 19463, 19469, 19471, 19477, 19483, 19489, 19501, - 19507, 19531, 19541, 19543, 19553, 19559, 19571, - 19577, 19583, 19597, 19603, 19609, 19661, 19681, - 19687, 19697, 19699, 19709, 19717, 19727, 19739, - 19751, 19753, 19759, 19763, 19777, 19793, 19801, - 19813, 19819, 19841, 19843, 19853, 19861, 19867, - 19889, 19891, 19913, 19919, 19927, 19937, 19949, - 19961, 19963, 19973, 19979, 19991, 19993, 19997, - 20011, 20021, 20023, 20029, 20047, 20051, 20063, - 20071, 20089, 20101, 20107, 20113, 20117, 20123, - 20129, 20143, 20147, 20149, 20161, 20173, 20177, - 20183, 20201, 20219, 20231, 20233, 20249, 20261, - 20269, 20287, 20297, 20323, 20327, 20333, 20341, - 20347, 20353, 20357, 20359, 20369, 20389, 20393, - 20399, 20407, 20411, 20431, 20441, 20443, 20477, - 20479, 20483, 20507, 20509, 20521, 20533, 20543, - 20549, 20551, 20563, 20593, 20599, 20611, 20627, - 20639, 20641, 20663, 20681, 20693, 20707, 20717, - 20719, 20731, 20743, 20747, 20749, 20753, 20759, - 20771, 20773, 20789, 20807, 20809, 20849, 20857, - 20873, 20879, 20887, 20897, 20899, 20903, 20921, - 20929, 20939, 20947, 20959, 20963, 20981, 20983, - 21001, 21011, 21013, 21017, 21019, 21023, 21031, - 21059, 21061, 21067, 21089, 21101, 21107, 21121, - 21139, 21143, 21149, 21157, 21163, 21169, 21179, - 21187, 21191, 21193, 21211, 21221, 21227, 21247, - 21269, 21277, 21283, 21313, 21317, 21319, 21323, - 21341, 21347, 21377, 21379, 21383, 21391, 21397, - 21401, 21407, 21419, 21433, 21467, 21481, 21487, - 21491, 21493, 21499, 21503, 21517, 21521, 21523, - 21529, 21557, 21559, 21563, 21569, 21577, 21587, - 21589, 21599, 21601, 21611, 21613, 21617, 21647, - 21649, 21661, 21673, 21683, 21701, 21713, 21727, - 21737, 21739, 21751, 21757, 21767, 21773, 21787, - 21799, 21803, 21817, 21821, 21839, 21841, 21851, - 21859, 21863, 21871, 21881, 21893, 21911, 21929, - 21937, 21943, 21961, 21977, 21991, 21997, 22003, - 22013, 22027, 22031, 22037, 22039, 22051, 22063, - 22067, 22073, 22079, 22091, 22093, 22109, 22111, - 22123, 22129, 22133, 22147, 22153, 22157, 22159, - 22171, 22189, 22193, 22229, 22247, 22259, 22271, - 22273, 22277, 22279, 22283, 22291, 22303, 22307, - 22343, 22349, 22367, 22369, 22381, 22391, 22397, - 22409, 22433, 22441, 22447, 22453, 22469, 22481, - 22483, 22501, 22511, 22531, 22541, 22543, 22549, - 22567, 22571, 22573, 22613, 22619, 22621, 22637, - 22639, 22643, 22651, 22669, 22679, 22691, 22697, - 22699, 22709, 22717, 22721, 22727, 22739, 22741, - 22751, 22769, 22777, 22783, 22787, 22807, 22811, - 22817, 22853, 22859, 22861, 22871, 22877, 22901, - 22907, 22921, 22937, 22943, 22961, 22963, 22973, - 22993, 23003, 23011, 23017, 23021, 23027, 23029, - 23039, 23041, 23053, 23057, 23059, 23063, 23071, - 23081, 23087, 23099, 23117, 23131, 23143, 23159, - 23167, 23173, 23189, 23197, 23201, 23203, 23209, - 23227, 23251, 23269, 23279, 23291, 23293, 23297, - 23311, 23321, 23327, 23333, 23339, 23357, 23369, - 23371, 23399, 23417, 23431, 23447, 23459, 23473, - 23497, 23509, 23531, 23537, 23539, 23549, 23557, - 23561, 23563, 23567, 23581, 23593, 23599, 23603, - 23609, 23623, 23627, 23629, 23633, 23663, 23669, - 23671, 23677, 23687, 23689, 23719, 23741, 23743, - 23747, 23753, 23761, 23767, 23773, 23789, 23801, - 23813, 23819, 23827, 23831, 23833, 23857, 23869, - 23873, 23879, 23887, 23893, 23899, 23909, 23911, - 23917, 23929, 23957, 23971, 23977, 23981, 23993, - 24001, 24007, 24019, 24023, 24029, 24043, 24049, - 24061, 24071, 24077, 24083, 24091, 24097, 24103, - 24107, 24109, 24113, 24121, 24133, 24137, 24151, - 24169, 24179, 24181, 24197, 24203, 24223, 24229, - 24239, 24247, 24251, 24281, 24317, 24329, 24337, - 24359, 24371, 24373, 24379, 24391, 24407, 24413, - 24419, 24421, 24439, 24443, 24469, 24473, 24481, - 24499, 24509, 24517, 24527, 24533, 24547, 24551, - 24571, 24593, 24611, 24623, 24631, 24659, 24671, - 24677, 24683, 24691, 24697, 24709, 24733, 24749, - 24763, 24767, 24781, 24793, 24799, 24809, 24821, - 24841, 24847, 24851, 24859, 24877, 24889, 24907, - 24917, 24919, 24923, 24943, 24953, 24967, 24971, - 24977, 24979, 24989, 25013, 25031, 25033, 25037, - 25057, 25073, 25087, 25097, 25111, 25117, 25121, - 25127, 25147, 25153, 25163, 25169, 25171, 25183, - 25189, 25219, 25229, 25237, 25243, 25247, 25253, - 25261, 25301, 25303, 25307, 25309, 25321, 25339, - 25343, 25349, 25357, 25367, 25373, 25391, 25409, - 25411, 25423, 25439, 25447, 25453, 25457, 25463, - 25469, 25471, 25523, 25537, 25541, 25561, 25577, - 25579, 25583, 25589, 25601, 25603, 25609, 25621, - 25633, 25639, 25643, 25657, 25667, 25673, 25679, - 25693, 25703, 25717, 25733, 25741, 25747, 25759, - 25763, 25771, 25793, 25799, 25801, 25819, 25841, - 25847, 25849, 25867, 25873, 25889, 25903, 25913, - 25919, 25931, 25933, 25939, 25943, 25951, 25969, - 25981, 25997, 25999, 26003, 26017, 26021, 26029, - 26041, 26053, 26083, 26099, 26107, 26111, 26113, - 26119, 26141, 26153, 26161, 26171, 26177, 26183, - 26189, 26203, 26209, 26227, 26237, 26249, 26251, - 26261, 26263, 26267, 26293, 26297, 26309, 26317, - 26321, 26339, 26347, 26357, 26371, 26387, 26393, - 26399, 26407, 26417, 26423, 26431, 26437, 26449, - 26459, 26479, 26489, 26497, 26501, 26513, 26539, - 26557, 26561, 26573, 26591, 26597, 26627, 26633, - 26641, 26647, 26669, 26681, 26683, 26687, 26693, - 26699, 26701, 26711, 26713, 26717, 26723, 26729, - 26731, 26737, 26759, 26777, 26783, 26801, 26813, - 26821, 26833, 26839, 26849, 26861, 26863, 26879, - 26881, 26891, 26893, 26903, 26921, 26927, 26947, - 26951, 26953, 26959, 26981, 26987, 26993, 27011, - 27017, 27031, 27043, 27059, 27061, 27067, 27073, - 27077, 27091, 27103, 27107, 27109, 27127, 27143, - 27179, 27191, 27197, 27211, 27239, 27241, 27253, - 27259, 27271, 27277, 27281, 27283, 27299, 27329, - 27337, 27361, 27367, 27397, 27407, 27409, 27427, - 27431, 27437, 27449, 27457, 27479, 27481, 27487, - 27509, 27527, 27529, 27539, 27541, 27551, 27581, - 27583, 27611, 27617, 27631, 27647, 27653, 27673, - 27689, 27691, 27697, 27701, 27733, 27737, 27739, - 27743, 27749, 27751, 27763, 27767, 27773, 27779, - 27791, 27793, 27799, 27803, 27809, 27817, 27823, - 27827, 27847, 27851, 27883, 27893, 27901, 27917, - 27919, 27941, 27943, 27947, 27953, 27961, 27967, - 27983, 27997, 28001, 28019, 28027, 28031, 28051, - 28057, 28069, 28081, 28087, 28097, 28099, 28109, - 28111, 28123, 28151, 28163, 28181, 28183, 28201, - 28211, 28219, 28229, 28277, 28279, 28283, 28289, - 28297, 28307, 28309, 28319, 28349, 28351, 28387, - 28393, 28403, 28409, 28411, 28429, 28433, 28439, - 28447, 28463, 28477, 28493, 28499, 28513, 28517, - 28537, 28541, 28547, 28549, 28559, 28571, 28573, - 28579, 28591, 28597, 28603, 28607, 28619, 28621, - 28627, 28631, 28643, 28649, 28657, 28661, 28663, - 28669, 28687, 28697, 28703, 28711, 28723, 28729, - 28751, 28753, 28759, 28771, 28789, 28793, 28807, - 28813, 28817, 28837, 28843, 28859, 28867, 28871, - 28879, 28901, 28909, 28921, 28927, 28933, 28949, - 28961, 28979, 29009, 29017, 29021, 29023, 29027, - 29033, 29059, 29063, 29077, 29101, 29123, 29129, - 29131, 29137, 29147, 29153, 29167, 29173, 29179, - 29191, 29201, 29207, 29209, 29221, 29231, 29243, - 29251, 29269, 29287, 29297, 29303, 29311, 29327, - 29333, 29339, 29347, 29363, 29383, 29387, 29389, - 29399, 29401, 29411, 29423, 29429, 29437, 29443, - 29453, 29473, 29483, 29501, 29527, 29531, 29537, - 29567, 29569, 29573, 29581, 29587, 29599, 29611, - 29629, 29633, 29641, 29663, 29669, 29671, 29683, - 29717, 29723, 29741, 29753, 29759, 29761, 29789, - 29803, 29819, 29833, 29837, 29851, 29863, 29867, - 29873, 29879, 29881, 29917, 29921, 29927, 29947, - 29959, 29983, 29989, 30011, 30013, 30029, 30047, - 30059, 30071, 30089, 30091, 30097, 30103, 30109, - 30113, 30119, 30133, 30137, 30139, 30161, 30169, - 30181, 30187, 30197, 30203, 30211, 30223, 30241, - 30253, 30259, 30269, 30271, 30293, 30307, 30313, - 30319, 30323, 30341, 30347, 30367, 30389, 30391, - 30403, 30427, 30431, 30449, 30467, 30469, 30491, - 30493, 30497, 30509, 30517, 30529, 30539, 30553, - 30557, 30559, 30577, 30593, 30631, 30637, 30643, - 30649, 30661, 30671, 30677, 30689, 30697, 30703, - 30707, 30713, 30727, 30757, 30763, 30773, 30781, - 30803, 30809, 30817, 30829, 30839, 30841, 30851, - 30853, 30859, 30869, 30871, 30881, 30893, 30911, - 30931, 30937, 30941, 30949, 30971, 30977, 30983, - 31013, 31019, 31033, 31039, 31051, 31063, 31069, - 31079, 31081, 31091, 31121, 31123, 31139, 31147, - 31151, 31153, 31159, 31177, 31181, 31183, 31189, - 31193, 31219, 31223, 31231, 31237, 31247, 31249, - 31253, 31259, 31267, 31271, 31277, 31307, 31319, - 31321, 31327, 31333, 31337, 31357, 31379, 31387, - 31391, 31393, 31397, 31469, 31477, 31481, 31489, - 31511, 31513, 31517, 31531, 31541, 31543, 31547, - 31567, 31573, 31583, 31601, 31607, 31627, 31643, - 31649, 31657, 31663, 31667, 31687, 31699, 31721, - 31723, 31727, 31729, 31741, 31751, 31769, 31771, - 31793, 31799, 31817, 31847, 31849, 31859, 31873, - 31883, 31891, 31907, 31957, 31963, 31973, 31981, - 31991, 32003, 32009, 32027, 32029, 32051, 32057, - 32059, 32063, 32069, 32077, 32083, 32089, 32099, - 32117, 32119, 32141, 32143, 32159, 32173, 32183, - 32189, 32191, 32203, 32213, 32233, 32237, 32251, - 32257, 32261, 32297, 32299, 32303, 32309, 32321, - 32323, 32327, 32341, 32353, 32359, 32363, 32369, - 32371, 32377, 32381, 32401, 32411, 32413, 32423, - 32429, 32441, 32443, 32467, 32479, 32491, 32497, - 32503, 32507, 32531, 32533, 32537, 32561, 32563, - 32569, 32573, 32579, 32587, 32603, 32609, 32611, - 32621, 32633, 32647, 32653, 32687, 32693, 32707, - 32713, 32717, 32719, 32749, 32771, 32779, 32783, - 32789, 32797, 32801, 32803, 32831, 32833, 32839, - 32843, 32869, 32887, 32909, 32911, 32917, 32933, - 32939, 32941, 32957, 32969, 32971, 32983, 32987, - 32993, 32999, 33013, 33023, 33029, 33037, 33049, - 33053, 33071, 33073, 33083, 33091, 33107, 33113, - 33119, 33149, 33151, 33161, 33179, 33181, 33191, - 33199, 33203, 33211, 33223, 33247, 33287, 33289, - 33301, 33311, 33317, 33329, 33331, 33343, 33347, - 33349, 33353, 33359, 33377, 33391, 33403, 33409, - 33413, 33427, 33457, 33461, 33469, 33479, 33487, - 33493, 33503, 33521, 33529, 33533, 33547, 33563, - 33569, 33577, 33581, 33587, 33589, 33599, 33601, - 33613, 33617, 33619, 33623, 33629, 33637, 33641, - 33647, 33679, 33703, 33713, 33721, 33739, 33749, - 33751, 33757, 33767, 33769, 33773, 33791, 33797, - 33809, 33811, 33827, 33829, 33851, 33857, 33863, - 33871, 33889, 33893, 33911, 33923, 33931, 33937, - 33941, 33961, 33967, 33997, 34019, 34031, 34033, - 34039, 34057, 34061, 34123, 34127, 34129, 34141, - 34147, 34157, 34159, 34171, 34183, 34211, 34213, - 34217, 34231, 34253, 34259, 34261, 34267, 34273, - 34283, 34297, 34301, 34303, 34313, 34319, 34327, - 34337, 34351, 34361, 34367, 34369, 34381, 34403, - 34421, 34429, 34439, 34457, 34469, 34471, 34483, - 34487, 34499, 34501, 34511, 34513, 34519, 34537, - 34543, 34549, 34583, 34589, 34591, 34603, 34607, - 34613, 34631, 34649, 34651, 34667, 34673, 34679, - 34687, 34693, 34703, 34721, 34729, 34739, 34747, - 34757, 34759, 34763, 34781, 34807, 34819, 34841, - 34843, 34847, 34849, 34871, 34877, 34883, 34897, - 34913, 34919, 34939, 34949, 34961, 34963, 34981, - 35023, 35027, 35051, 35053, 35059, 35069, 35081, - 35083, 35089, 35099, 35107, 35111, 35117, 35129, - 35141, 35149, 35153, 35159, 35171, 35201, 35221, - 35227, 35251, 35257, 35267, 35279, 35281, 35291, - 35311, 35317, 35323, 35327, 35339, 35353, 35363, - 35381, 35393, 35401, 35407, 35419, 35423, 35437, - 35447, 35449, 35461, 35491, 35507, 35509, 35521, - 35527, 35531, 35533, 35537, 35543, 35569, 35573, - 35591, 35593, 35597, 35603, 35617, 35671, 35677, - 35729, 35731, 35747, 35753, 35759, 35771, 35797, - 35801, 35803, 35809, 35831, 35837, 35839, 35851, - 35863, 35869, 35879, 35897, 35899, 35911, 35923, - 35933, 35951, 35963, 35969, 35977, 35983, 35993, - 35999, 36007, 36011, 36013, 36017, 36037, 36061, - 36067, 36073, 36083, 36097, 36107, 36109, 36131, - 36137, 36151, 36161, 36187, 36191, 36209, 36217, - 36229, 36241, 36251, 36263, 36269, 36277, 36293, - 36299, 36307, 36313, 36319, 36341, 36343, 36353, - 36373, 36383, 36389, 36433, 36451, 36457, 36467, - 36469, 36473, 36479, 36493, 36497, 36523, 36527, - 36529, 36541, 36551, 36559, 36563, 36571, 36583, - 36587, 36599, 36607, 36629, 36637, 36643, 36653, - 36671, 36677, 36683, 36691, 36697, 36709, 36713, - 36721, 36739, 36749, 36761, 36767, 36779, 36781, - 36787, 36791, 36793, 36809, 36821, 36833, 36847, - 36857, 36871, 36877, 36887, 36899, 36901, 36913, - 36919, 36923, 36929, 36931, 36943, 36947, 36973, - 36979, 36997, 37003, 37013, 37019, 37021, 37039, - 37049, 37057, 37061, 37087, 37097, 37117, 37123, - 37139, 37159, 37171, 37181, 37189, 37199, 37201, - 37217, 37223, 37243, 37253, 37273, 37277, 37307, - 37309, 37313, 37321, 37337, 37339, 37357, 37361, - 37363, 37369, 37379, 37397, 37409, 37423, 37441, - 37447, 37463, 37483, 37489, 37493, 37501, 37507, - 37511, 37517, 37529, 37537, 37547, 37549, 37561, - 37567, 37571, 37573, 37579, 37589, 37591, 37607, - 37619, 37633, 37643, 37649, 37657, 37663, 37691, - 37693, 37699, 37717, 37747, 37781, 37783, 37799, - 37811, 37813, 37831, 37847, 37853, 37861, 37871, - 37879, 37889, 37897, 37907, 37951, 37957, 37963, - 37967, 37987, 37991, 37993, 37997, 38011, 38039, - 38047, 38053, 38069, 38083, 38113, 38119, 38149, - 38153, 38167, 38177, 38183, 38189, 38197, 38201, - 38219, 38231, 38237, 38239, 38261, 38273, 38281, - 38287, 38299, 38303, 38317, 38321, 38327, 38329, - 38333, 38351, 38371, 38377, 38393, 38431, 38447, - 38449, 38453, 38459, 38461, 38501, 38543, 38557, - 38561, 38567, 38569, 38593, 38603, 38609, 38611, - 38629, 38639, 38651, 38653, 38669, 38671, 38677, - 38693, 38699, 38707, 38711, 38713, 38723, 38729, - 38737, 38747, 38749, 38767, 38783, 38791, 38803, - 38821, 38833, 38839, 38851, 38861, 38867, 38873, - 38891, 38903, 38917, 38921, 38923, 38933, 38953, - 38959, 38971, 38977, 38993, 39019, 39023, 39041, - 39043, 39047, 39079, 39089, 39097, 39103, 39107, - 39113, 39119, 39133, 39139, 39157, 39161, 39163, - 39181, 39191, 39199, 39209, 39217, 39227, 39229, - 39233, 39239, 39241, 39251, 39293, 39301, 39313, - 39317, 39323, 39341, 39343, 39359, 39367, 39371, - 39373, 39383, 39397, 39409, 39419, 39439, 39443, - 39451, 39461, 39499, 39503, 39509, 39511, 39521, - 39541, 39551, 39563, 39569, 39581, 39607, 39619, - 39623, 39631, 39659, 39667, 39671, 39679, 39703, - 39709, 39719, 39727, 39733, 39749, 39761, 39769, - 39779, 39791, 39799, 39821, 39827, 39829, 39839, - 39841, 39847, 39857, 39863, 39869, 39877, 39883, - 39887, 39901, 39929, 39937, 39953, 39971, 39979, - 39983, 39989, 40009, 40013, 40031, 40037, 40039, - 40063, 40087, 40093, 40099, 40111, 40123, 40127, - 40129, 40151, 40153, 40163, 40169, 40177, 40189, - 40193, 40213, 40231, 40237, 40241, 40253, 40277, - 40283, 40289, 40343, 40351, 40357, 40361, 40387, - 40423, 40427, 40429, 40433, 40459, 40471, 40483, - 40487, 40493, 40499, 40507, 40519, 40529, 40531, - 40543, 40559, 40577, 40583, 40591, 40597, 40609, - 40627, 40637, 40639, 40693, 40697, 40699, 40709, - 40739, 40751, 40759, 40763, 40771, 40787, 40801, - 40813, 40819, 40823, 40829, 40841, 40847, 40849, - 40853, 40867, 40879, 40883, 40897, 40903, 40927, - 40933, 40939, 40949, 40961, 40973, 40993, 41011, - 41017, 41023, 41039, 41047, 41051, 41057, 41077, - 41081, 41113, 41117, 41131, 41141, 41143, 41149, - 41161, 41177, 41179, 41183, 41189, 41201, 41203, - 41213, 41221, 41227, 41231, 41233, 41243, 41257, - 41263, 41269, 41281, 41299, 41333, 41341, 41351, - 41357, 41381, 41387, 41389, 41399, 41411, 41413, - 41443, 41453, 41467, 41479, 41491, 41507, 41513, - 41519, 41521, 41539, 41543, 41549, 41579, 41593, - 41597, 41603, 41609, 41611, 41617, 41621, 41627, - 41641, 41647, 41651, 41659, 41669, 41681, 41687, - 41719, 41729, 41737, 41759, 41761, 41771, 41777, - 41801, 41809, 41813, 41843, 41849, 41851, 41863, - 41879, 41887, 41893, 41897, 41903, 41911, 41927, - 41941, 41947, 41953, 41957, 41959, 41969, 41981, - 41983, 41999, 42013, 42017, 42019, 42023, 42043, - 42061, 42071, 42073, 42083, 42089, 42101, 42131, - 42139, 42157, 42169, 42179, 42181, 42187, 42193, - 42197, 42209, 42221, 42223, 42227, 42239, 42257, - 42281, 42283, 42293, 42299, 42307, 42323, 42331, - 42337, 42349, 42359, 42373, 42379, 42391, 42397, - 42403, 42407, 42409, 42433, 42437, 42443, 42451, - 42457, 42461, 42463, 42467, 42473, 42487, 42491, - 42499, 42509, 42533, 42557, 42569, 42571, 42577, - 42589, 42611, 42641, 42643, 42649, 42667, 42677, - 42683, 42689, 42697, 42701, 42703, 42709, 42719, - 42727, 42737, 42743, 42751, 42767, 42773, 42787, - 42793, 42797, 42821, 42829, 42839, 42841, 42853, - 42859, 42863, 42899, 42901, 42923, 42929, 42937, - 42943, 42953, 42961, 42967, 42979, 42989, 43003, - 43013, 43019, 43037, 43049, 43051, 43063, 43067, - 43093, 43103, 43117, 43133, 43151, 43159, 43177, - 43189, 43201, 43207, 43223, 43237, 43261, 43271, - 43283, 43291, 43313, 43319, 43321, 43331, 43391, - 43397, 43399, 43403, 43411, 43427, 43441, 43451, - 43457, 43481, 43487, 43499, 43517, 43541, 43543, - 43573, 43577, 43579, 43591, 43597, 43607, 43609, - 43613, 43627, 43633, 43649, 43651, 43661, 43669, - 43691, 43711, 43717, 43721, 43753, 43759, 43777, - 43781, 43783, 43787, 43789, 43793, 43801, 43853, - 43867, 43889, 43891, 43913, 43933, 43943, 43951, - 43961, 43963, 43969, 43973, 43987, 43991, 43997, - 44017, 44021, 44027, 44029, 44041, 44053, 44059, - 44071, 44087, 44089, 44101, 44111, 44119, 44123, - 44129, 44131, 44159, 44171, 44179, 44189, 44201, - 44203, 44207, 44221, 44249, 44257, 44263, 44267, - 44269, 44273, 44279, 44281, 44293, 44351, 44357, - 44371, 44381, 44383, 44389, 44417, 44449, 44453, - 44483, 44491, 44497, 44501, 44507, 44519, 44531, - 44533, 44537, 44543, 44549, 44563, 44579, 44587, - 44617, 44621, 44623, 44633, 44641, 44647, 44651, - 44657, 44683, 44687, 44699, 44701, 44711, 44729, - 44741, 44753, 44771, 44773, 44777, 44789, 44797, - 44809, 44819, 44839, 44843, 44851, 44867, 44879, - 44887, 44893, 44909, 44917, 44927, 44939, 44953, - 44959, 44963, 44971, 44983, 44987, 45007, 45013, - 45053, 45061, 45077, 45083, 45119, 45121, 45127, - 45131, 45137, 45139, 45161, 45179, 45181, 45191, - 45197, 45233, 45247, 45259, 45263, 45281, 45289, - 45293, 45307, 45317, 45319, 45329, 45337, 45341, - 45343, 45361, 45377, 45389, 45403, 45413, 45427, - 45433, 45439, 45481, 45491, 45497, 45503, 45523, - 45533, 45541, 45553, 45557, 45569, 45587, 45589, - 45599, 45613, 45631, 45641, 45659, 45667, 45673, - 45677, 45691, 45697, 45707, 45737, 45751, 45757, - 45763, 45767, 45779, 45817, 45821, 45823, 45827, - 45833, 45841, 45853, 45863, 45869, 45887, 45893, - 45943, 45949, 45953, 45959, 45971, 45979, 45989, - 46021, 46027, 46049, 46051, 46061, 46073, 46091, - 46093, 46099, 46103, 46133, 46141, 46147, 46153, - 46171, 46181, 46183, 46187, 46199, 46219, 46229, - 46237, 46261, 46271, 46273, 46279, 46301, 46307, - 46309, 46327, 46337, 46349, 46351, 46381, 46399, - 46411, 46439, 46441, 46447, 46451, 46457, 46471, - 46477, 46489, 46499, 46507, 46511, 46523, 46549, - 46559, 46567, 46573, 46589, 46591, 46601, 46619, - 46633, 46639, 46643, 46649, 46663, 46679, 46681, - 46687, 46691, 46703, 46723, 46727, 46747, 46751, - 46757, 46769, 46771, 46807, 46811, 46817, 46819, - 46829, 46831, 46853, 46861, 46867, 46877, 46889, - 46901, 46919, 46933, 46957, 46993, 46997, 47017, - 47041, 47051, 47057, 47059, 47087, 47093, 47111, - 47119, 47123, 47129, 47137, 47143, 47147, 47149, - 47161, 47189, 47207, 47221, 47237, 47251, 47269, - 47279, 47287, 47293, 47297, 47303, 47309, 47317, - 47339, 47351, 47353, 47363, 47381, 47387, 47389, - 47407, 47417, 47419, 47431, 47441, 47459, 47491, - 47497, 47501, 47507, 47513, 47521, 47527, 47533, - 47543, 47563, 47569, 47581, 47591, 47599, 47609, - 47623, 47629, 47639, 47653, 47657, 47659, 47681, - 47699, 47701, 47711, 47713, 47717, 47737, 47741, - 47743, 47777, 47779, 47791, 47797, 47807, 47809, - 47819, 47837, 47843, 47857, 47869, 47881, 47903, - 47911, 47917, 47933, 47939, 47947, 47951, 47963, - 47969, 47977, 47981, 48017, 48023, 48029, 48049, - 48073, 48079, 48091, 48109, 48119, 48121, 48131, - 48157, 48163, 48179, 48187, 48193, 48197, 48221, - 48239, 48247, 48259, 48271, 48281, 48299, 48311, - 48313, 48337, 48341, 48353, 48371, 48383, 48397, - 48407, 48409, 48413, 48437, 48449, 48463, 48473, - 48479, 48481, 48487, 48491, 48497, 48523, 48527, - 48533, 48539, 48541, 48563, 48571, 48589, 48593, - 48611, 48619, 48623, 48647, 48649, 48661, 48673, - 48677, 48679, 48731, 48733, 48751, 48757, 48761, - 48767, 48779, 48781, 48787, 48799, 48809, 48817, - 48821, 48823, 48847, 48857, 48859, 48869, 48871, - 48883, 48889, 48907, 48947, 48953, 48973, 48989, - 48991, 49003, 49009, 49019, 49031, 49033, 49037, - 49043, 49057, 49069, 49081, 49103, 49109, 49117, - 49121, 49123, 49139, 49157, 49169, 49171, 49177, - 49193, 49199, 49201, 49207, 49211, 49223, 49253, - 49261, 49277, 49279, 49297, 49307, 49331, 49333, - 49339, 49363, 49367, 49369, 49391, 49393, 49409, - 49411, 49417, 49429, 49433, 49451, 49459, 49463, - 49477, 49481, 49499, 49523, 49529, 49531, 49537, - 49547, 49549, 49559, 49597, 49603, 49613, 49627, - 49633, 49639, 49663, 49667, 49669, 49681, 49697, - 49711, 49727, 49739, 49741, 49747, 49757, 49783, - 49787, 49789, 49801, 49807, 49811, 49823, 49831, - 49843, 49853, 49871, 49877, 49891, 49919, 49921, - 49927, 49937, 49939, 49943, 49957, 49991, 49993, - 49999, 50021, 50023, 50033, 50047, 50051, 50053, - 50069, 50077, 50087, 50093, 50101, 50111, 50119, - 50123, 50129, 50131, 50147, 50153, 50159, 50177, - 50207, 50221, 50227, 50231, 50261, 50263, 50273, - 50287, 50291, 50311, 50321, 50329, 50333, 50341, - 50359, 50363, 50377, 50383, 50387, 50411, 50417, - 50423, 50441, 50459, 50461, 50497, 50503, 50513, - 50527, 50539, 50543, 50549, 50551, 50581, 50587, - 50591, 50593, 50599, 50627, 50647, 50651, 50671, - 50683, 50707, 50723, 50741, 50753, 50767, 50773, - 50777, 50789, 50821, 50833, 50839, 50849, 50857, - 50867, 50873, 50891, 50893, 50909, 50923, 50929, - 50951, 50957, 50969, 50971, 50989, 50993, 51001, - 51031, 51043, 51047, 51059, 51061, 51071, 51109, - 51131, 51133, 51137, 51151, 51157, 51169, 51193, - 51197, 51199, 51203, 51217, 51229, 51239, 51241, - 51257, 51263, 51283, 51287, 51307, 51329, 51341, - 51343, 51347, 51349, 51361, 51383, 51407, 51413, - 51419, 51421, 51427, 51431, 51437, 51439, 51449, - 51461, 51473, 51479, 51481, 51487, 51503, 51511, - 51517, 51521, 51539, 51551, 51563, 51577, 51581, - 51593, 51599, 51607, 51613, 51631, 51637, 51647, - 51659, 51673, 51679, 51683, 51691, 51713, 51719, - 51721, 51749, 51767, 51769, 51787, 51797, 51803, - 51817, 51827, 51829, 51839, 51853, 51859, 51869, - 51871, 51893, 51899, 51907, 51913, 51929, 51941, - 51949, 51971, 51973, 51977, 51991, 52009, 52021, - 52027, 52051, 52057, 52067, 52069, 52081, 52103, - 52121, 52127, 52147, 52153, 52163, 52177, 52181, - 52183, 52189, 52201, 52223, 52237, 52249, 52253, - 52259, 52267, 52289, 52291, 52301, 52313, 52321, - 52361, 52363, 52369, 52379, 52387, 52391, 52433, - 52453, 52457, 52489, 52501, 52511, 52517, 52529, - 52541, 52543, 52553, 52561, 52567, 52571, 52579, - 52583, 52609, 52627, 52631, 52639, 52667, 52673, - 52691, 52697, 52709, 52711, 52721, 52727, 52733, - 52747, 52757, 52769, 52783, 52807, 52813, 52817, - 52837, 52859, 52861, 52879, 52883, 52889, 52901, - 52903, 52919, 52937, 52951, 52957, 52963, 52967, - 52973, 52981, 52999, 53003, 53017, 53047, 53051, - 53069, 53077, 53087, 53089, 53093, 53101, 53113, - 53117, 53129, 53147, 53149, 53161, 53171, 53173, - 53189, 53197, 53201, 53231, 53233, 53239, 53267, - 53269, 53279, 53281, 53299, 53309, 53323, 53327, - 53353, 53359, 53377, 53381, 53401, 53407, 53411, - 53419, 53437, 53441, 53453, 53479, 53503, 53507, - 53527, 53549, 53551, 53569, 53591, 53593, 53597, - 53609, 53611, 53617, 53623, 53629, 53633, 53639, - 53653, 53657, 53681, 53693, 53699, 53717, 53719, - 53731, 53759, 53773, 53777, 53783, 53791, 53813, - 53819, 53831, 53849, 53857, 53861, 53881, 53887, - 53891, 53897, 53899, 53917, 53923, 53927, 53939, - 53951, 53959, 53987, 53993, 54001, 54011, 54013, - 54037, 54049, 54059, 54083, 54091, 54101, 54121, - 54133, 54139, 54151, 54163, 54167, 54181, 54193, - 54217, 54251, 54269, 54277, 54287, 54293, 54311, - 54319, 54323, 54331, 54347, 54361, 54367, 54371, - 54377, 54401, 54403, 54409, 54413, 54419, 54421, - 54437, 54443, 54449, 54469, 54493, 54497, 54499, - 54503, 54517, 54521, 54539, 54541, 54547, 54559, - 54563, 54577, 54581, 54583, 54601, 54617, 54623, - 54629, 54631, 54647, 54667, 54673, 54679, 54709, - 54713, 54721, 54727, 54751, 54767, 54773, 54779, - 54787, 54799, 54829, 54833, 54851, 54869, 54877, - 54881, 54907, 54917, 54919, 54941, 54949, 54959, - 54973, 54979, 54983, 55001, 55009, 55021, 55049, - 55051, 55057, 55061, 55073, 55079, 55103, 55109, - 55117, 55127, 55147, 55163, 55171, 55201, 55207, - 55213, 55217, 55219, 55229, 55243, 55249, 55259, - 55291, 55313, 55331, 55333, 55337, 55339, 55343, - 55351, 55373, 55381, 55399, 55411, 55439, 55441, - 55457, 55469, 55487, 55501, 55511, 55529, 55541, - 55547, 55579, 55589, 55603, 55609, 55619, 55621, - 55631, 55633, 55639, 55661, 55663, 55667, 55673, - 55681, 55691, 55697, 55711, 55717, 55721, 55733, - 55763, 55787, 55793, 55799, 55807, 55813, 55817, - 55819, 55823, 55829, 55837, 55843, 55849, 55871, - 55889, 55897, 55901, 55903, 55921, 55927, 55931, - 55933, 55949, 55967, 55987, 55997, 56003, 56009, - 56039, 56041, 56053, 56081, 56087, 56093, 56099, - 56101, 56113, 56123, 56131, 56149, 56167, 56171, - 56179, 56197, 56207, 56209, 56237, 56239, 56249, - 56263, 56267, 56269, 56299, 56311, 56333, 56359, - 56369, 56377, 56383, 56393, 56401, 56417, 56431, - 56437, 56443, 56453, 56467, 56473, 56477, 56479, - 56489, 56501, 56503, 56509, 56519, 56527, 56531, - 56533, 56543, 56569, 56591, 56597, 56599, 56611, - 56629, 56633, 56659, 56663, 56671, 56681, 56687, - 56701, 56711, 56713, 56731, 56737, 56747, 56767, - 56773, 56779, 56783, 56807, 56809, 56813, 56821, - 56827, 56843, 56857, 56873, 56891, 56893, 56897, - 56909, 56911, 56921, 56923, 56929, 56941, 56951, - 56957, 56963, 56983, 56989, 56993, 56999, 57037, - 57041, 57047, 57059, 57073, 57077, 57089, 57097, - 57107, 57119, 57131, 57139, 57143, 57149, 57163, - 57173, 57179, 57191, 57193, 57203, 57221, 57223, - 57241, 57251, 57259, 57269, 57271, 57283, 57287, - 57301, 57329, 57331, 57347, 57349, 57367, 57373, - 57383, 57389, 57397, 57413, 57427, 57457, 57467, - 57487, 57493, 57503, 57527, 57529, 57557, 57559, - 57571, 57587, 57593, 57601, 57637, 57641, 57649, - 57653, 57667, 57679, 57689, 57697, 57709, 57713, - 57719, 57727, 57731, 57737, 57751, 57773, 57781, - 57787, 57791, 57793, 57803, 57809, 57829, 57839, - 57847, 57853, 57859, 57881, 57899, 57901, 57917, - 57923, 57943, 57947, 57973, 57977, 57991, 58013, - 58027, 58031, 58043, 58049, 58057, 58061, 58067, - 58073, 58099, 58109, 58111, 58129, 58147, 58151, - 58153, 58169, 58171, 58189, 58193, 58199, 58207, - 58211, 58217, 58229, 58231, 58237, 58243, 58271, - 58309, 58313, 58321, 58337, 58363, 58367, 58369, - 58379, 58391, 58393, 58403, 58411, 58417, 58427, - 58439, 58441, 58451, 58453, 58477, 58481, 58511, - 58537, 58543, 58549, 58567, 58573, 58579, 58601, - 58603, 58613, 58631, 58657, 58661, 58679, 58687, - 58693, 58699, 58711, 58727, 58733, 58741, 58757, - 58763, 58771, 58787, 58789, 58831, 58889, 58897, - 58901, 58907, 58909, 58913, 58921, 58937, 58943, - 58963, 58967, 58979, 58991, 58997, 59009, 59011, - 59021, 59023, 59029, 59051, 59053, 59063, 59069, - 59077, 59083, 59093, 59107, 59113, 59119, 59123, - 59141, 59149, 59159, 59167, 59183, 59197, 59207, - 59209, 59219, 59221, 59233, 59239, 59243, 59263, - 59273, 59281, 59333, 59341, 59351, 59357, 59359, - 59369, 59377, 59387, 59393, 59399, 59407, 59417, - 59419, 59441, 59443, 59447, 59453, 59467, 59471, - 59473, 59497, 59509, 59513, 59539, 59557, 59561, - 59567, 59581, 59611, 59617, 59621, 59627, 59629, - 59651, 59659, 59663, 59669, 59671, 59693, 59699, - 59707, 59723, 59729, 59743, 59747, 59753, 59771, - 59779, 59791, 59797, 59809, 59833, 59863, 59879, - 59887, 59921, 59929, 59951, 59957, 59971, 59981, - 59999, 60013, 60017, 60029, 60037, 60041, 60077, - 60083, 60089, 60091, 60101, 60103, 60107, 60127, - 60133, 60139, 60149, 60161, 60167, 60169, 60209, - 60217, 60223, 60251, 60257, 60259, 60271, 60289, - 60293, 60317, 60331, 60337, 60343, 60353, 60373, - 60383, 60397, 60413, 60427, 60443, 60449, 60457, - 60493, 60497, 60509, 60521, 60527, 60539, 60589, - 60601, 60607, 60611, 60617, 60623, 60631, 60637, - 60647, 60649, 60659, 60661, 60679, 60689, 60703, - 60719, 60727, 60733, 60737, 60757, 60761, 60763, - 60773, 60779, 60793, 60811, 60821, 60859, 60869, - 60887, 60889, 60899, 60901, 60913, 60917, 60919, - 60923, 60937, 60943, 60953, 60961, 61001, 61007, - 61027, 61031, 61043, 61051, 61057, 61091, 61099, - 61121, 61129, 61141, 61151, 61153, 61169, 61211, - 61223, 61231, 61253, 61261, 61283, 61291, 61297, - 61331, 61333, 61339, 61343, 61357, 61363, 61379, - 61381, 61403, 61409, 61417, 61441, 61463, 61469, - 61471, 61483, 61487, 61493, 61507, 61511, 61519, - 61543, 61547, 61553, 61559, 61561, 61583, 61603, - 61609, 61613, 61627, 61631, 61637, 61643, 61651, - 61657, 61667, 61673, 61681, 61687, 61703, 61717, - 61723, 61729, 61751, 61757, 61781, 61813, 61819, - 61837, 61843, 61861, 61871, 61879, 61909, 61927, - 61933, 61949, 61961, 61967, 61979, 61981, 61987, - 61991, 62003, 62011, 62017, 62039, 62047, 62053, - 62057, 62071, 62081, 62099, 62119, 62129, 62131, - 62137, 62141, 62143, 62171, 62189, 62191, 62201, - 62207, 62213, 62219, 62233, 62273, 62297, 62299, - 62303, 62311, 62323, 62327, 62347, 62351, 62383, - 62401, 62417, 62423, 62459, 62467, 62473, 62477, - 62483, 62497, 62501, 62507, 62533, 62539, 62549, - 62563, 62581, 62591, 62597, 62603, 62617, 62627, - 62633, 62639, 62653, 62659, 62683, 62687, 62701, - 62723, 62731, 62743, 62753, 62761, 62773, 62791, - 62801, 62819, 62827, 62851, 62861, 62869, 62873, - 62897, 62903, 62921, 62927, 62929, 62939, 62969, - 62971, 62981, 62983, 62987, 62989, 63029, 63031, - 63059, 63067, 63073, 63079, 63097, 63103, 63113, - 63127, 63131, 63149, 63179, 63197, 63199, 63211, - 63241, 63247, 63277, 63281, 63299, 63311, 63313, - 63317, 63331, 63337, 63347, 63353, 63361, 63367, - 63377, 63389, 63391, 63397, 63409, 63419, 63421, - 63439, 63443, 63463, 63467, 63473, 63487, 63493, - 63499, 63521, 63527, 63533, 63541, 63559, 63577, - 63587, 63589, 63599, 63601, 63607, 63611, 63617, - 63629, 63647, 63649, 63659, 63667, 63671, 63689, - 63691, 63697, 63703, 63709, 63719, 63727, 63737, - 63743, 63761, 63773, 63781, 63793, 63799, 63803, - 63809, 63823, 63839, 63841, 63853, 63857, 63863, - 63901, 63907, 63913, 63929, 63949, 63977, 63997, - 64007, 64013, 64019, 64033, 64037, 64063, 64067, - 64081, 64091, 64109, 64123, 64151, 64153, 64157, - 64171, 64187, 64189, 64217, 64223, 64231, 64237, - 64271, 64279, 64283, 64301, 64303, 64319, 64327, - 64333, 64373, 64381, 64399, 64403, 64433, 64439, - 64451, 64453, 64483, 64489, 64499, 64513, 64553, - 64567, 64577, 64579, 64591, 64601, 64609, 64613, - 64621, 64627, 64633, 64661, 64663, 64667, 64679, - 64693, 64709, 64717, 64747, 64763, 64781, 64783, - 64793, 64811, 64817, 64849, 64853, 64871, 64877, - 64879, 64891, 64901, 64919, 64921, 64927, 64937, - 64951, 64969, 64997, 65003, 65011, 65027, 65029, - 65033, 65053, 65063, 65071, 65089, 65099, 65101, - 65111, 65119, 65123, 65129, 65141, 65147, 65167, - 65171, 65173, 65179, 65183, 65203, 65213, 65239, - 65257, 65267, 65269, 65287, 65293, 65309, 65323, - 65327, 65353, 65357, 65371, 65381, 65393, 65407, - 65413, 65419, 65423, 65437, 65447, 65449, 65479, - 65497, 65519, 65521, 0 + 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, + 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, + 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, + 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, + 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, + 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, + 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, + 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, + 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, + 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, + 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, + 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, + 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, + 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, + 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, + 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, + 953, 967, 971, 977, 983, 991, 997, 1009, 1013, 1019, + 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087, + 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, 1153, + 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223, 1229, + 1231, 1237, 1249, 1259, 1277, 1279, 1283, 1289, 1291, 1297, + 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373, 1381, + 1399, 1409, 1423, 1427, 1429, 1433, 1439, 1447, 1451, 1453, + 1459, 1471, 1481, 1483, 1487, 1489, 1493, 1499, 1511, 1523, + 1531, 1543, 1549, 1553, 1559, 1567, 1571, 1579, 1583, 1597, + 1601, 1607, 1609, 1613, 1619, 1621, 1627, 1637, 1657, 1663, + 1667, 1669, 1693, 1697, 1699, 1709, 1721, 1723, 1733, 1741, + 1747, 1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811, 1823, + 1831, 1847, 1861, 1867, 1871, 1873, 1877, 1879, 1889, 1901, + 1907, 1913, 1931, 1933, 1949, 1951, 1973, 1979, 1987, 1993, + 1997, 1999, 2003, 2011, 2017, 2027, 2029, 2039, 2053, 2063, + 2069, 2081, 2083, 2087, 2089, 2099, 2111, 2113, 2129, 2131, + 2137, 2141, 2143, 2153, 2161, 2179, 2203, 2207, 2213, 2221, + 2237, 2239, 2243, 2251, 2267, 2269, 2273, 2281, 2287, 2293, + 2297, 2309, 2311, 2333, 2339, 2341, 2347, 2351, 2357, 2371, + 2377, 2381, 2383, 2389, 2393, 2399, 2411, 2417, 2423, 2437, + 2441, 2447, 2459, 2467, 2473, 2477, 2503, 2521, 2531, 2539, + 2543, 2549, 2551, 2557, 2579, 2591, 2593, 2609, 2617, 2621, + 2633, 2647, 2657, 2659, 2663, 2671, 2677, 2683, 2687, 2689, + 2693, 2699, 2707, 2711, 2713, 2719, 2729, 2731, 2741, 2749, + 2753, 2767, 2777, 2789, 2791, 2797, 2801, 2803, 2819, 2833, + 2837, 2843, 2851, 2857, 2861, 2879, 2887, 2897, 2903, 2909, + 2917, 2927, 2939, 2953, 2957, 2963, 2969, 2971, 2999, 3001, + 3011, 3019, 3023, 3037, 3041, 3049, 3061, 3067, 3079, 3083, + 3089, 3109, 3119, 3121, 3137, 3163, 3167, 3169, 3181, 3187, + 3191, 3203, 3209, 3217, 3221, 3229, 3251, 3253, 3257, 3259, + 3271, 3299, 3301, 3307, 3313, 3319, 3323, 3329, 3331, 3343, + 3347, 3359, 3361, 3371, 3373, 3389, 3391, 3407, 3413, 3433, + 3449, 3457, 3461, 3463, 3467, 3469, 3491, 3499, 3511, 3517, + 3527, 3529, 3533, 3539, 3541, 3547, 3557, 3559, 3571, 3581, + 3583, 3593, 3607, 3613, 3617, 3623, 3631, 3637, 3643, 3659, + 3671, 3673, 3677, 3691, 3697, 3701, 3709, 3719, 3727, 3733, + 3739, 3761, 3767, 3769, 3779, 3793, 3797, 3803, 3821, 3823, + 3833, 3847, 3851, 3853, 3863, 3877, 3881, 3889, 3907, 3911, + 3917, 3919, 3923, 3929, 3931, 3943, 3947, 3967, 3989, 4001, + 4003, 4007, 4013, 4019, 4021, 4027, 4049, 4051, 4057, 4073, + 4079, 4091, 4093, 4099, 4111, 4127, 4129, 4133, 4139, 4153, + 4157, 4159, 4177, 4201, 4211, 4217, 4219, 4229, 4231, 4241, + 4243, 4253, 4259, 4261, 4271, 4273, 4283, 4289, 4297, 4327, + 4337, 4339, 4349, 4357, 4363, 4373, 4391, 4397, 4409, 4421, + 4423, 4441, 4447, 4451, 4457, 4463, 4481, 4483, 4493, 4507, + 4513, 4517, 4519, 4523, 4547, 4549, 4561, 4567, 4583, 4591, + 4597, 4603, 4621, 4637, 4639, 4643, 4649, 4651, 4657, 4663, + 4673, 4679, 4691, 4703, 4721, 4723, 4729, 4733, 4751, 4759, + 4783, 4787, 4789, 4793, 4799, 4801, 4813, 4817, 4831, 4861, + 4871, 4877, 4889, 4903, 4909, 4919, 4931, 4933, 4937, 4943, + 4951, 4957, 4967, 4969, 4973, 4987, 4993, 4999, 5003, 5009, + 5011, 5021, 5023, 5039, 5051, 5059, 5077, 5081, 5087, 5099, + 5101, 5107, 5113, 5119, 5147, 5153, 5167, 5171, 5179, 5189, + 5197, 5209, 5227, 5231, 5233, 5237, 5261, 5273, 5279, 5281, + 5297, 5303, 5309, 5323, 5333, 5347, 5351, 5381, 5387, 5393, + 5399, 5407, 5413, 5417, 5419, 5431, 5437, 5441, 5443, 5449, + 5471, 5477, 5479, 5483, 5501, 5503, 5507, 5519, 5521, 5527, + 5531, 5557, 5563, 5569, 5573, 5581, 5591, 5623, 5639, 5641, + 5647, 5651, 5653, 5657, 5659, 5669, 5683, 5689, 5693, 5701, + 5711, 5717, 5737, 5741, 5743, 5749, 5779, 5783, 5791, 5801, + 5807, 5813, 5821, 5827, 5839, 5843, 5849, 5851, 5857, 5861, + 5867, 5869, 5879, 5881, 5897, 5903, 5923, 5927, 5939, 5953, + 5981, 5987, 6007, 6011, 6029, 6037, 6043, 6047, 6053, 6067, + 6073, 6079, 6089, 6091, 6101, 6113, 6121, 6131, 6133, 6143, + 6151, 6163, 6173, 6197, 6199, 6203, 6211, 6217, 6221, 6229, + 6247, 6257, 6263, 6269, 6271, 6277, 6287, 6299, 6301, 6311, + 6317, 6323, 6329, 6337, 6343, 6353, 6359, 6361, 6367, 6373, + 6379, 6389, 6397, 6421, 6427, 6449, 6451, 6469, 6473, 6481, + 6491, 6521, 6529, 6547, 6551, 6553, 6563, 6569, 6571, 6577, + 6581, 6599, 6607, 6619, 6637, 6653, 6659, 6661, 6673, 6679, + 6689, 6691, 6701, 6703, 6709, 6719, 6733, 6737, 6761, 6763, + 6779, 6781, 6791, 6793, 6803, 6823, 6827, 6829, 6833, 6841, + 6857, 6863, 6869, 6871, 6883, 6899, 6907, 6911, 6917, 6947, + 6949, 6959, 6961, 6967, 6971, 6977, 6983, 6991, 6997, 7001, + 7013, 7019, 7027, 7039, 7043, 7057, 7069, 7079, 7103, 7109, + 7121, 7127, 7129, 7151, 7159, 7177, 7187, 7193, 7207, 7211, + 7213, 7219, 7229, 7237, 7243, 7247, 7253, 7283, 7297, 7307, + 7309, 7321, 7331, 7333, 7349, 7351, 7369, 7393, 7411, 7417, + 7433, 7451, 7457, 7459, 7477, 7481, 7487, 7489, 7499, 7507, + 7517, 7523, 7529, 7537, 7541, 7547, 7549, 7559, 7561, 7573, + 7577, 7583, 7589, 7591, 7603, 7607, 7621, 7639, 7643, 7649, + 7669, 7673, 7681, 7687, 7691, 7699, 7703, 7717, 7723, 7727, + 7741, 7753, 7757, 7759, 7789, 7793, 7817, 7823, 7829, 7841, + 7853, 7867, 7873, 7877, 7879, 7883, 7901, 7907, 7919, 7927, + 7933, 7937, 7949, 7951, 7963, 7993, 8009, 8011, 8017, 8039, + 8053, 8059, 8069, 8081, 8087, 8089, 8093, 8101, 8111, 8117, + 8123, 8147, 8161, 8167, 8171, 8179, 8191, 8209, 8219, 8221, + 8231, 8233, 8237, 8243, 8263, 8269, 8273, 8287, 8291, 8293, + 8297, 8311, 8317, 8329, 8353, 8363, 8369, 8377, 8387, 8389, + 8419, 8423, 8429, 8431, 8443, 8447, 8461, 8467, 8501, 8513, + 8521, 8527, 8537, 8539, 8543, 8563, 8573, 8581, 8597, 8599, + 8609, 8623, 8627, 8629, 8641, 8647, 8663, 8669, 8677, 8681, + 8689, 8693, 8699, 8707, 8713, 8719, 8731, 8737, 8741, 8747, + 8753, 8761, 8779, 8783, 8803, 8807, 8819, 8821, 8831, 8837, + 8839, 8849, 8861, 8863, 8867, 8887, 8893, 8923, 8929, 8933, + 8941, 8951, 8963, 8969, 8971, 8999, 9001, 9007, 9011, 9013, + 9029, 9041, 9043, 9049, 9059, 9067, 9091, 9103, 9109, 9127, + 9133, 9137, 9151, 9157, 9161, 9173, 9181, 9187, 9199, 9203, + 9209, 9221, 9227, 9239, 9241, 9257, 9277, 9281, 9283, 9293, + 9311, 9319, 9323, 9337, 9341, 9343, 9349, 9371, 9377, 9391, + 9397, 9403, 9413, 9419, 9421, 9431, 9433, 9437, 9439, 9461, + 9463, 9467, 9473, 9479, 9491, 9497, 9511, 9521, 9533, 9539, + 9547, 9551, 9587, 9601, 9613, 9619, 9623, 9629, 9631, 9643, + 9649, 9661, 9677, 9679, 9689, 9697, 9719, 9721, 9733, 9739, + 9743, 9749, 9767, 9769, 9781, 9787, 9791, 9803, 9811, 9817, + 9829, 9833, 9839, 9851, 9857, 9859, 9871, 9883, 9887, 9901, + 9907, 9923, 9929, 9931, 9941, 9949, 9967, 9973, 10007, 10009, + 10037, 10039, 10061, 10067, 10069, 10079, 10091, 10093, 10099, 10103, + 10111, 10133, 10139, 10141, 10151, 10159, 10163, 10169, 10177, 10181, + 10193, 10211, 10223, 10243, 10247, 10253, 10259, 10267, 10271, 10273, + 10289, 10301, 10303, 10313, 10321, 10331, 10333, 10337, 10343, 10357, + 10369, 10391, 10399, 10427, 10429, 10433, 10453, 10457, 10459, 10463, + 10477, 10487, 10499, 10501, 10513, 10529, 10531, 10559, 10567, 10589, + 10597, 10601, 10607, 10613, 10627, 10631, 10639, 10651, 10657, 10663, + 10667, 10687, 10691, 10709, 10711, 10723, 10729, 10733, 10739, 10753, + 10771, 10781, 10789, 10799, 10831, 10837, 10847, 10853, 10859, 10861, + 10867, 10883, 10889, 10891, 10903, 10909, 10937, 10939, 10949, 10957, + 10973, 10979, 10987, 10993, 11003, 11027, 11047, 11057, 11059, 11069, + 11071, 11083, 11087, 11093, 11113, 11117, 11119, 11131, 11149, 11159, + 11161, 11171, 11173, 11177, 11197, 11213, 11239, 11243, 11251, 11257, + 11261, 11273, 11279, 11287, 11299, 11311, 11317, 11321, 11329, 11351, + 11353, 11369, 11383, 11393, 11399, 11411, 11423, 11437, 11443, 11447, + 11467, 11471, 11483, 11489, 11491, 11497, 11503, 11519, 11527, 11549, + 11551, 11579, 11587, 11593, 11597, 11617, 11621, 11633, 11657, 11677, + 11681, 11689, 11699, 11701, 11717, 11719, 11731, 11743, 11777, 11779, + 11783, 11789, 11801, 11807, 11813, 11821, 11827, 11831, 11833, 11839, + 11863, 11867, 11887, 11897, 11903, 11909, 11923, 11927, 11933, 11939, + 11941, 11953, 11959, 11969, 11971, 11981, 11987, 12007, 12011, 12037, + 12041, 12043, 12049, 12071, 12073, 12097, 12101, 12107, 12109, 12113, + 12119, 12143, 12149, 12157, 12161, 12163, 12197, 12203, 12211, 12227, + 12239, 12241, 12251, 12253, 12263, 12269, 12277, 12281, 12289, 12301, + 12323, 12329, 12343, 12347, 12373, 12377, 12379, 12391, 12401, 12409, + 12413, 12421, 12433, 12437, 12451, 12457, 12473, 12479, 12487, 12491, + 12497, 12503, 12511, 12517, 12527, 12539, 12541, 12547, 12553, 12569, + 12577, 12583, 12589, 12601, 12611, 12613, 12619, 12637, 12641, 12647, + 12653, 12659, 12671, 12689, 12697, 12703, 12713, 12721, 12739, 12743, + 12757, 12763, 12781, 12791, 12799, 12809, 12821, 12823, 12829, 12841, + 12853, 12889, 12893, 12899, 12907, 12911, 12917, 12919, 12923, 12941, + 12953, 12959, 12967, 12973, 12979, 12983, 13001, 13003, 13007, 13009, + 13033, 13037, 13043, 13049, 13063, 13093, 13099, 13103, 13109, 13121, + 13127, 13147, 13151, 13159, 13163, 13171, 13177, 13183, 13187, 13217, + 13219, 13229, 13241, 13249, 13259, 13267, 13291, 13297, 13309, 13313, + 13327, 13331, 13337, 13339, 13367, 13381, 13397, 13399, 13411, 13417, + 13421, 13441, 13451, 13457, 13463, 13469, 13477, 13487, 13499, 13513, + 13523, 13537, 13553, 13567, 13577, 13591, 13597, 13613, 13619, 13627, + 13633, 13649, 13669, 13679, 13681, 13687, 13691, 13693, 13697, 13709, + 13711, 13721, 13723, 13729, 13751, 13757, 13759, 13763, 13781, 13789, + 13799, 13807, 13829, 13831, 13841, 13859, 13873, 13877, 13879, 13883, + 13901, 13903, 13907, 13913, 13921, 13931, 13933, 13963, 13967, 13997, + 13999, 14009, 14011, 14029, 14033, 14051, 14057, 14071, 14081, 14083, + 14087, 14107, 14143, 14149, 14153, 14159, 14173, 14177, 14197, 14207, + 14221, 14243, 14249, 14251, 14281, 14293, 14303, 14321, 14323, 14327, + 14341, 14347, 14369, 14387, 14389, 14401, 14407, 14411, 14419, 14423, + 14431, 14437, 14447, 14449, 14461, 14479, 14489, 14503, 14519, 14533, + 14537, 14543, 14549, 14551, 14557, 14561, 14563, 14591, 14593, 14621, + 14627, 14629, 14633, 14639, 14653, 14657, 14669, 14683, 14699, 14713, + 14717, 14723, 14731, 14737, 14741, 14747, 14753, 14759, 14767, 14771, + 14779, 14783, 14797, 14813, 14821, 14827, 14831, 14843, 14851, 14867, + 14869, 14879, 14887, 14891, 14897, 14923, 14929, 14939, 14947, 14951, + 14957, 14969, 14983, 15013, 15017, 15031, 15053, 15061, 15073, 15077, + 15083, 15091, 15101, 15107, 15121, 15131, 15137, 15139, 15149, 15161, + 15173, 15187, 15193, 15199, 15217, 15227, 15233, 15241, 15259, 15263, + 15269, 15271, 15277, 15287, 15289, 15299, 15307, 15313, 15319, 15329, + 15331, 15349, 15359, 15361, 15373, 15377, 15383, 15391, 15401, 15413, + 15427, 15439, 15443, 15451, 15461, 15467, 15473, 15493, 15497, 15511, + 15527, 15541, 15551, 15559, 15569, 15581, 15583, 15601, 15607, 15619, + 15629, 15641, 15643, 15647, 15649, 15661, 15667, 15671, 15679, 15683, + 15727, 15731, 15733, 15737, 15739, 15749, 15761, 15767, 15773, 15787, + 15791, 15797, 15803, 15809, 15817, 15823, 15859, 15877, 15881, 15887, + 15889, 15901, 15907, 15913, 15919, 15923, 15937, 15959, 15971, 15973, + 15991, 16001, 16007, 16033, 16057, 16061, 16063, 16067, 16069, 16073, + 16087, 16091, 16097, 16103, 16111, 16127, 16139, 16141, 16183, 16187, + 16189, 16193, 16217, 16223, 16229, 16231, 16249, 16253, 16267, 16273, + 16301, 16319, 16333, 16339, 16349, 16361, 16363, 16369, 16381, 16411, + 16417, 16421, 16427, 16433, 16447, 16451, 16453, 16477, 16481, 16487, + 16493, 16519, 16529, 16547, 16553, 16561, 16567, 16573, 16603, 16607, + 16619, 16631, 16633, 16649, 16651, 16657, 16661, 16673, 16691, 16693, + 16699, 16703, 16729, 16741, 16747, 16759, 16763, 16787, 16811, 16823, + 16829, 16831, 16843, 16871, 16879, 16883, 16889, 16901, 16903, 16921, + 16927, 16931, 16937, 16943, 16963, 16979, 16981, 16987, 16993, 17011, + 17021, 17027, 17029, 17033, 17041, 17047, 17053, 17077, 17093, 17099, + 17107, 17117, 17123, 17137, 17159, 17167, 17183, 17189, 17191, 17203, + 17207, 17209, 17231, 17239, 17257, 17291, 17293, 17299, 17317, 17321, + 17327, 17333, 17341, 17351, 17359, 17377, 17383, 17387, 17389, 17393, + 17401, 17417, 17419, 17431, 17443, 17449, 17467, 17471, 17477, 17483, + 17489, 17491, 17497, 17509, 17519, 17539, 17551, 17569, 17573, 17579, + 17581, 17597, 17599, 17609, 17623, 17627, 17657, 17659, 17669, 17681, + 17683, 17707, 17713, 17729, 17737, 17747, 17749, 17761, 17783, 17789, + 17791, 17807, 17827, 17837, 17839, 17851, 17863, 17881, 17891, 17903, + 17909, 17911, 17921, 17923, 17929, 17939, 17957, 17959, 17971, 17977, + 17981, 17987, 17989, 18013, 18041, 18043, 18047, 18049, 18059, 18061, + 18077, 18089, 18097, 18119, 18121, 18127, 18131, 18133, 18143, 18149, + 18169, 18181, 18191, 18199, 18211, 18217, 18223, 18229, 18233, 18251, + 18253, 18257, 18269, 18287, 18289, 18301, 18307, 18311, 18313, 18329, + 18341, 18353, 18367, 18371, 18379, 18397, 18401, 18413, 18427, 18433, + 18439, 18443, 18451, 18457, 18461, 18481, 18493, 18503, 18517, 18521, + 18523, 18539, 18541, 18553, 18583, 18587, 18593, 18617, 18637, 18661, + 18671, 18679, 18691, 18701, 18713, 18719, 18731, 18743, 18749, 18757, + 18773, 18787, 18793, 18797, 18803, 18839, 18859, 18869, 18899, 18911, + 18913, 18917, 18919, 18947, 18959, 18973, 18979, 19001, 19009, 19013, + 19031, 19037, 19051, 19069, 19073, 19079, 19081, 19087, 19121, 19139, + 19141, 19157, 19163, 19181, 19183, 19207, 19211, 19213, 19219, 19231, + 19237, 19249, 19259, 19267, 19273, 19289, 19301, 19309, 19319, 19333, + 19373, 19379, 19381, 19387, 19391, 19403, 19417, 19421, 19423, 19427, + 19429, 19433, 19441, 19447, 19457, 19463, 19469, 19471, 19477, 19483, + 19489, 19501, 19507, 19531, 19541, 19543, 19553, 19559, 19571, 19577, + 19583, 19597, 19603, 19609, 19661, 19681, 19687, 19697, 19699, 19709, + 19717, 19727, 19739, 19751, 19753, 19759, 19763, 19777, 19793, 19801, + 19813, 19819, 19841, 19843, 19853, 19861, 19867, 19889, 19891, 19913, + 19919, 19927, 19937, 19949, 19961, 19963, 19973, 19979, 19991, 19993, + 19997, 20011, 20021, 20023, 20029, 20047, 20051, 20063, 20071, 20089, + 20101, 20107, 20113, 20117, 20123, 20129, 20143, 20147, 20149, 20161, + 20173, 20177, 20183, 20201, 20219, 20231, 20233, 20249, 20261, 20269, + 20287, 20297, 20323, 20327, 20333, 20341, 20347, 20353, 20357, 20359, + 20369, 20389, 20393, 20399, 20407, 20411, 20431, 20441, 20443, 20477, + 20479, 20483, 20507, 20509, 20521, 20533, 20543, 20549, 20551, 20563, + 20593, 20599, 20611, 20627, 20639, 20641, 20663, 20681, 20693, 20707, + 20717, 20719, 20731, 20743, 20747, 20749, 20753, 20759, 20771, 20773, + 20789, 20807, 20809, 20849, 20857, 20873, 20879, 20887, 20897, 20899, + 20903, 20921, 20929, 20939, 20947, 20959, 20963, 20981, 20983, 21001, + 21011, 21013, 21017, 21019, 21023, 21031, 21059, 21061, 21067, 21089, + 21101, 21107, 21121, 21139, 21143, 21149, 21157, 21163, 21169, 21179, + 21187, 21191, 21193, 21211, 21221, 21227, 21247, 21269, 21277, 21283, + 21313, 21317, 21319, 21323, 21341, 21347, 21377, 21379, 21383, 21391, + 21397, 21401, 21407, 21419, 21433, 21467, 21481, 21487, 21491, 21493, + 21499, 21503, 21517, 21521, 21523, 21529, 21557, 21559, 21563, 21569, + 21577, 21587, 21589, 21599, 21601, 21611, 21613, 21617, 21647, 21649, + 21661, 21673, 21683, 21701, 21713, 21727, 21737, 21739, 21751, 21757, + 21767, 21773, 21787, 21799, 21803, 21817, 21821, 21839, 21841, 21851, + 21859, 21863, 21871, 21881, 21893, 21911, 21929, 21937, 21943, 21961, + 21977, 21991, 21997, 22003, 22013, 22027, 22031, 22037, 22039, 22051, + 22063, 22067, 22073, 22079, 22091, 22093, 22109, 22111, 22123, 22129, + 22133, 22147, 22153, 22157, 22159, 22171, 22189, 22193, 22229, 22247, + 22259, 22271, 22273, 22277, 22279, 22283, 22291, 22303, 22307, 22343, + 22349, 22367, 22369, 22381, 22391, 22397, 22409, 22433, 22441, 22447, + 22453, 22469, 22481, 22483, 22501, 22511, 22531, 22541, 22543, 22549, + 22567, 22571, 22573, 22613, 22619, 22621, 22637, 22639, 22643, 22651, + 22669, 22679, 22691, 22697, 22699, 22709, 22717, 22721, 22727, 22739, + 22741, 22751, 22769, 22777, 22783, 22787, 22807, 22811, 22817, 22853, + 22859, 22861, 22871, 22877, 22901, 22907, 22921, 22937, 22943, 22961, + 22963, 22973, 22993, 23003, 23011, 23017, 23021, 23027, 23029, 23039, + 23041, 23053, 23057, 23059, 23063, 23071, 23081, 23087, 23099, 23117, + 23131, 23143, 23159, 23167, 23173, 23189, 23197, 23201, 23203, 23209, + 23227, 23251, 23269, 23279, 23291, 23293, 23297, 23311, 23321, 23327, + 23333, 23339, 23357, 23369, 23371, 23399, 23417, 23431, 23447, 23459, + 23473, 23497, 23509, 23531, 23537, 23539, 23549, 23557, 23561, 23563, + 23567, 23581, 23593, 23599, 23603, 23609, 23623, 23627, 23629, 23633, + 23663, 23669, 23671, 23677, 23687, 23689, 23719, 23741, 23743, 23747, + 23753, 23761, 23767, 23773, 23789, 23801, 23813, 23819, 23827, 23831, + 23833, 23857, 23869, 23873, 23879, 23887, 23893, 23899, 23909, 23911, + 23917, 23929, 23957, 23971, 23977, 23981, 23993, 24001, 24007, 24019, + 24023, 24029, 24043, 24049, 24061, 24071, 24077, 24083, 24091, 24097, + 24103, 24107, 24109, 24113, 24121, 24133, 24137, 24151, 24169, 24179, + 24181, 24197, 24203, 24223, 24229, 24239, 24247, 24251, 24281, 24317, + 24329, 24337, 24359, 24371, 24373, 24379, 24391, 24407, 24413, 24419, + 24421, 24439, 24443, 24469, 24473, 24481, 24499, 24509, 24517, 24527, + 24533, 24547, 24551, 24571, 24593, 24611, 24623, 24631, 24659, 24671, + 24677, 24683, 24691, 24697, 24709, 24733, 24749, 24763, 24767, 24781, + 24793, 24799, 24809, 24821, 24841, 24847, 24851, 24859, 24877, 24889, + 24907, 24917, 24919, 24923, 24943, 24953, 24967, 24971, 24977, 24979, + 24989, 25013, 25031, 25033, 25037, 25057, 25073, 25087, 25097, 25111, + 25117, 25121, 25127, 25147, 25153, 25163, 25169, 25171, 25183, 25189, + 25219, 25229, 25237, 25243, 25247, 25253, 25261, 25301, 25303, 25307, + 25309, 25321, 25339, 25343, 25349, 25357, 25367, 25373, 25391, 25409, + 25411, 25423, 25439, 25447, 25453, 25457, 25463, 25469, 25471, 25523, + 25537, 25541, 25561, 25577, 25579, 25583, 25589, 25601, 25603, 25609, + 25621, 25633, 25639, 25643, 25657, 25667, 25673, 25679, 25693, 25703, + 25717, 25733, 25741, 25747, 25759, 25763, 25771, 25793, 25799, 25801, + 25819, 25841, 25847, 25849, 25867, 25873, 25889, 25903, 25913, 25919, + 25931, 25933, 25939, 25943, 25951, 25969, 25981, 25997, 25999, 26003, + 26017, 26021, 26029, 26041, 26053, 26083, 26099, 26107, 26111, 26113, + 26119, 26141, 26153, 26161, 26171, 26177, 26183, 26189, 26203, 26209, + 26227, 26237, 26249, 26251, 26261, 26263, 26267, 26293, 26297, 26309, + 26317, 26321, 26339, 26347, 26357, 26371, 26387, 26393, 26399, 26407, + 26417, 26423, 26431, 26437, 26449, 26459, 26479, 26489, 26497, 26501, + 26513, 26539, 26557, 26561, 26573, 26591, 26597, 26627, 26633, 26641, + 26647, 26669, 26681, 26683, 26687, 26693, 26699, 26701, 26711, 26713, + 26717, 26723, 26729, 26731, 26737, 26759, 26777, 26783, 26801, 26813, + 26821, 26833, 26839, 26849, 26861, 26863, 26879, 26881, 26891, 26893, + 26903, 26921, 26927, 26947, 26951, 26953, 26959, 26981, 26987, 26993, + 27011, 27017, 27031, 27043, 27059, 27061, 27067, 27073, 27077, 27091, + 27103, 27107, 27109, 27127, 27143, 27179, 27191, 27197, 27211, 27239, + 27241, 27253, 27259, 27271, 27277, 27281, 27283, 27299, 27329, 27337, + 27361, 27367, 27397, 27407, 27409, 27427, 27431, 27437, 27449, 27457, + 27479, 27481, 27487, 27509, 27527, 27529, 27539, 27541, 27551, 27581, + 27583, 27611, 27617, 27631, 27647, 27653, 27673, 27689, 27691, 27697, + 27701, 27733, 27737, 27739, 27743, 27749, 27751, 27763, 27767, 27773, + 27779, 27791, 27793, 27799, 27803, 27809, 27817, 27823, 27827, 27847, + 27851, 27883, 27893, 27901, 27917, 27919, 27941, 27943, 27947, 27953, + 27961, 27967, 27983, 27997, 28001, 28019, 28027, 28031, 28051, 28057, + 28069, 28081, 28087, 28097, 28099, 28109, 28111, 28123, 28151, 28163, + 28181, 28183, 28201, 28211, 28219, 28229, 28277, 28279, 28283, 28289, + 28297, 28307, 28309, 28319, 28349, 28351, 28387, 28393, 28403, 28409, + 28411, 28429, 28433, 28439, 28447, 28463, 28477, 28493, 28499, 28513, + 28517, 28537, 28541, 28547, 28549, 28559, 28571, 28573, 28579, 28591, + 28597, 28603, 28607, 28619, 28621, 28627, 28631, 28643, 28649, 28657, + 28661, 28663, 28669, 28687, 28697, 28703, 28711, 28723, 28729, 28751, + 28753, 28759, 28771, 28789, 28793, 28807, 28813, 28817, 28837, 28843, + 28859, 28867, 28871, 28879, 28901, 28909, 28921, 28927, 28933, 28949, + 28961, 28979, 29009, 29017, 29021, 29023, 29027, 29033, 29059, 29063, + 29077, 29101, 29123, 29129, 29131, 29137, 29147, 29153, 29167, 29173, + 29179, 29191, 29201, 29207, 29209, 29221, 29231, 29243, 29251, 29269, + 29287, 29297, 29303, 29311, 29327, 29333, 29339, 29347, 29363, 29383, + 29387, 29389, 29399, 29401, 29411, 29423, 29429, 29437, 29443, 29453, + 29473, 29483, 29501, 29527, 29531, 29537, 29567, 29569, 29573, 29581, + 29587, 29599, 29611, 29629, 29633, 29641, 29663, 29669, 29671, 29683, + 29717, 29723, 29741, 29753, 29759, 29761, 29789, 29803, 29819, 29833, + 29837, 29851, 29863, 29867, 29873, 29879, 29881, 29917, 29921, 29927, + 29947, 29959, 29983, 29989, 30011, 30013, 30029, 30047, 30059, 30071, + 30089, 30091, 30097, 30103, 30109, 30113, 30119, 30133, 30137, 30139, + 30161, 30169, 30181, 30187, 30197, 30203, 30211, 30223, 30241, 30253, + 30259, 30269, 30271, 30293, 30307, 30313, 30319, 30323, 30341, 30347, + 30367, 30389, 30391, 30403, 30427, 30431, 30449, 30467, 30469, 30491, + 30493, 30497, 30509, 30517, 30529, 30539, 30553, 30557, 30559, 30577, + 30593, 30631, 30637, 30643, 30649, 30661, 30671, 30677, 30689, 30697, + 30703, 30707, 30713, 30727, 30757, 30763, 30773, 30781, 30803, 30809, + 30817, 30829, 30839, 30841, 30851, 30853, 30859, 30869, 30871, 30881, + 30893, 30911, 30931, 30937, 30941, 30949, 30971, 30977, 30983, 31013, + 31019, 31033, 31039, 31051, 31063, 31069, 31079, 31081, 31091, 31121, + 31123, 31139, 31147, 31151, 31153, 31159, 31177, 31181, 31183, 31189, + 31193, 31219, 31223, 31231, 31237, 31247, 31249, 31253, 31259, 31267, + 31271, 31277, 31307, 31319, 31321, 31327, 31333, 31337, 31357, 31379, + 31387, 31391, 31393, 31397, 31469, 31477, 31481, 31489, 31511, 31513, + 31517, 31531, 31541, 31543, 31547, 31567, 31573, 31583, 31601, 31607, + 31627, 31643, 31649, 31657, 31663, 31667, 31687, 31699, 31721, 31723, + 31727, 31729, 31741, 31751, 31769, 31771, 31793, 31799, 31817, 31847, + 31849, 31859, 31873, 31883, 31891, 31907, 31957, 31963, 31973, 31981, + 31991, 32003, 32009, 32027, 32029, 32051, 32057, 32059, 32063, 32069, + 32077, 32083, 32089, 32099, 32117, 32119, 32141, 32143, 32159, 32173, + 32183, 32189, 32191, 32203, 32213, 32233, 32237, 32251, 32257, 32261, + 32297, 32299, 32303, 32309, 32321, 32323, 32327, 32341, 32353, 32359, + 32363, 32369, 32371, 32377, 32381, 32401, 32411, 32413, 32423, 32429, + 32441, 32443, 32467, 32479, 32491, 32497, 32503, 32507, 32531, 32533, + 32537, 32561, 32563, 32569, 32573, 32579, 32587, 32603, 32609, 32611, + 32621, 32633, 32647, 32653, 32687, 32693, 32707, 32713, 32717, 32719, + 32749, 32771, 32779, 32783, 32789, 32797, 32801, 32803, 32831, 32833, + 32839, 32843, 32869, 32887, 32909, 32911, 32917, 32933, 32939, 32941, + 32957, 32969, 32971, 32983, 32987, 32993, 32999, 33013, 33023, 33029, + 33037, 33049, 33053, 33071, 33073, 33083, 33091, 33107, 33113, 33119, + 33149, 33151, 33161, 33179, 33181, 33191, 33199, 33203, 33211, 33223, + 33247, 33287, 33289, 33301, 33311, 33317, 33329, 33331, 33343, 33347, + 33349, 33353, 33359, 33377, 33391, 33403, 33409, 33413, 33427, 33457, + 33461, 33469, 33479, 33487, 33493, 33503, 33521, 33529, 33533, 33547, + 33563, 33569, 33577, 33581, 33587, 33589, 33599, 33601, 33613, 33617, + 33619, 33623, 33629, 33637, 33641, 33647, 33679, 33703, 33713, 33721, + 33739, 33749, 33751, 33757, 33767, 33769, 33773, 33791, 33797, 33809, + 33811, 33827, 33829, 33851, 33857, 33863, 33871, 33889, 33893, 33911, + 33923, 33931, 33937, 33941, 33961, 33967, 33997, 34019, 34031, 34033, + 34039, 34057, 34061, 34123, 34127, 34129, 34141, 34147, 34157, 34159, + 34171, 34183, 34211, 34213, 34217, 34231, 34253, 34259, 34261, 34267, + 34273, 34283, 34297, 34301, 34303, 34313, 34319, 34327, 34337, 34351, + 34361, 34367, 34369, 34381, 34403, 34421, 34429, 34439, 34457, 34469, + 34471, 34483, 34487, 34499, 34501, 34511, 34513, 34519, 34537, 34543, + 34549, 34583, 34589, 34591, 34603, 34607, 34613, 34631, 34649, 34651, + 34667, 34673, 34679, 34687, 34693, 34703, 34721, 34729, 34739, 34747, + 34757, 34759, 34763, 34781, 34807, 34819, 34841, 34843, 34847, 34849, + 34871, 34877, 34883, 34897, 34913, 34919, 34939, 34949, 34961, 34963, + 34981, 35023, 35027, 35051, 35053, 35059, 35069, 35081, 35083, 35089, + 35099, 35107, 35111, 35117, 35129, 35141, 35149, 35153, 35159, 35171, + 35201, 35221, 35227, 35251, 35257, 35267, 35279, 35281, 35291, 35311, + 35317, 35323, 35327, 35339, 35353, 35363, 35381, 35393, 35401, 35407, + 35419, 35423, 35437, 35447, 35449, 35461, 35491, 35507, 35509, 35521, + 35527, 35531, 35533, 35537, 35543, 35569, 35573, 35591, 35593, 35597, + 35603, 35617, 35671, 35677, 35729, 35731, 35747, 35753, 35759, 35771, + 35797, 35801, 35803, 35809, 35831, 35837, 35839, 35851, 35863, 35869, + 35879, 35897, 35899, 35911, 35923, 35933, 35951, 35963, 35969, 35977, + 35983, 35993, 35999, 36007, 36011, 36013, 36017, 36037, 36061, 36067, + 36073, 36083, 36097, 36107, 36109, 36131, 36137, 36151, 36161, 36187, + 36191, 36209, 36217, 36229, 36241, 36251, 36263, 36269, 36277, 36293, + 36299, 36307, 36313, 36319, 36341, 36343, 36353, 36373, 36383, 36389, + 36433, 36451, 36457, 36467, 36469, 36473, 36479, 36493, 36497, 36523, + 36527, 36529, 36541, 36551, 36559, 36563, 36571, 36583, 36587, 36599, + 36607, 36629, 36637, 36643, 36653, 36671, 36677, 36683, 36691, 36697, + 36709, 36713, 36721, 36739, 36749, 36761, 36767, 36779, 36781, 36787, + 36791, 36793, 36809, 36821, 36833, 36847, 36857, 36871, 36877, 36887, + 36899, 36901, 36913, 36919, 36923, 36929, 36931, 36943, 36947, 36973, + 36979, 36997, 37003, 37013, 37019, 37021, 37039, 37049, 37057, 37061, + 37087, 37097, 37117, 37123, 37139, 37159, 37171, 37181, 37189, 37199, + 37201, 37217, 37223, 37243, 37253, 37273, 37277, 37307, 37309, 37313, + 37321, 37337, 37339, 37357, 37361, 37363, 37369, 37379, 37397, 37409, + 37423, 37441, 37447, 37463, 37483, 37489, 37493, 37501, 37507, 37511, + 37517, 37529, 37537, 37547, 37549, 37561, 37567, 37571, 37573, 37579, + 37589, 37591, 37607, 37619, 37633, 37643, 37649, 37657, 37663, 37691, + 37693, 37699, 37717, 37747, 37781, 37783, 37799, 37811, 37813, 37831, + 37847, 37853, 37861, 37871, 37879, 37889, 37897, 37907, 37951, 37957, + 37963, 37967, 37987, 37991, 37993, 37997, 38011, 38039, 38047, 38053, + 38069, 38083, 38113, 38119, 38149, 38153, 38167, 38177, 38183, 38189, + 38197, 38201, 38219, 38231, 38237, 38239, 38261, 38273, 38281, 38287, + 38299, 38303, 38317, 38321, 38327, 38329, 38333, 38351, 38371, 38377, + 38393, 38431, 38447, 38449, 38453, 38459, 38461, 38501, 38543, 38557, + 38561, 38567, 38569, 38593, 38603, 38609, 38611, 38629, 38639, 38651, + 38653, 38669, 38671, 38677, 38693, 38699, 38707, 38711, 38713, 38723, + 38729, 38737, 38747, 38749, 38767, 38783, 38791, 38803, 38821, 38833, + 38839, 38851, 38861, 38867, 38873, 38891, 38903, 38917, 38921, 38923, + 38933, 38953, 38959, 38971, 38977, 38993, 39019, 39023, 39041, 39043, + 39047, 39079, 39089, 39097, 39103, 39107, 39113, 39119, 39133, 39139, + 39157, 39161, 39163, 39181, 39191, 39199, 39209, 39217, 39227, 39229, + 39233, 39239, 39241, 39251, 39293, 39301, 39313, 39317, 39323, 39341, + 39343, 39359, 39367, 39371, 39373, 39383, 39397, 39409, 39419, 39439, + 39443, 39451, 39461, 39499, 39503, 39509, 39511, 39521, 39541, 39551, + 39563, 39569, 39581, 39607, 39619, 39623, 39631, 39659, 39667, 39671, + 39679, 39703, 39709, 39719, 39727, 39733, 39749, 39761, 39769, 39779, + 39791, 39799, 39821, 39827, 39829, 39839, 39841, 39847, 39857, 39863, + 39869, 39877, 39883, 39887, 39901, 39929, 39937, 39953, 39971, 39979, + 39983, 39989, 40009, 40013, 40031, 40037, 40039, 40063, 40087, 40093, + 40099, 40111, 40123, 40127, 40129, 40151, 40153, 40163, 40169, 40177, + 40189, 40193, 40213, 40231, 40237, 40241, 40253, 40277, 40283, 40289, + 40343, 40351, 40357, 40361, 40387, 40423, 40427, 40429, 40433, 40459, + 40471, 40483, 40487, 40493, 40499, 40507, 40519, 40529, 40531, 40543, + 40559, 40577, 40583, 40591, 40597, 40609, 40627, 40637, 40639, 40693, + 40697, 40699, 40709, 40739, 40751, 40759, 40763, 40771, 40787, 40801, + 40813, 40819, 40823, 40829, 40841, 40847, 40849, 40853, 40867, 40879, + 40883, 40897, 40903, 40927, 40933, 40939, 40949, 40961, 40973, 40993, + 41011, 41017, 41023, 41039, 41047, 41051, 41057, 41077, 41081, 41113, + 41117, 41131, 41141, 41143, 41149, 41161, 41177, 41179, 41183, 41189, + 41201, 41203, 41213, 41221, 41227, 41231, 41233, 41243, 41257, 41263, + 41269, 41281, 41299, 41333, 41341, 41351, 41357, 41381, 41387, 41389, + 41399, 41411, 41413, 41443, 41453, 41467, 41479, 41491, 41507, 41513, + 41519, 41521, 41539, 41543, 41549, 41579, 41593, 41597, 41603, 41609, + 41611, 41617, 41621, 41627, 41641, 41647, 41651, 41659, 41669, 41681, + 41687, 41719, 41729, 41737, 41759, 41761, 41771, 41777, 41801, 41809, + 41813, 41843, 41849, 41851, 41863, 41879, 41887, 41893, 41897, 41903, + 41911, 41927, 41941, 41947, 41953, 41957, 41959, 41969, 41981, 41983, + 41999, 42013, 42017, 42019, 42023, 42043, 42061, 42071, 42073, 42083, + 42089, 42101, 42131, 42139, 42157, 42169, 42179, 42181, 42187, 42193, + 42197, 42209, 42221, 42223, 42227, 42239, 42257, 42281, 42283, 42293, + 42299, 42307, 42323, 42331, 42337, 42349, 42359, 42373, 42379, 42391, + 42397, 42403, 42407, 42409, 42433, 42437, 42443, 42451, 42457, 42461, + 42463, 42467, 42473, 42487, 42491, 42499, 42509, 42533, 42557, 42569, + 42571, 42577, 42589, 42611, 42641, 42643, 42649, 42667, 42677, 42683, + 42689, 42697, 42701, 42703, 42709, 42719, 42727, 42737, 42743, 42751, + 42767, 42773, 42787, 42793, 42797, 42821, 42829, 42839, 42841, 42853, + 42859, 42863, 42899, 42901, 42923, 42929, 42937, 42943, 42953, 42961, + 42967, 42979, 42989, 43003, 43013, 43019, 43037, 43049, 43051, 43063, + 43067, 43093, 43103, 43117, 43133, 43151, 43159, 43177, 43189, 43201, + 43207, 43223, 43237, 43261, 43271, 43283, 43291, 43313, 43319, 43321, + 43331, 43391, 43397, 43399, 43403, 43411, 43427, 43441, 43451, 43457, + 43481, 43487, 43499, 43517, 43541, 43543, 43573, 43577, 43579, 43591, + 43597, 43607, 43609, 43613, 43627, 43633, 43649, 43651, 43661, 43669, + 43691, 43711, 43717, 43721, 43753, 43759, 43777, 43781, 43783, 43787, + 43789, 43793, 43801, 43853, 43867, 43889, 43891, 43913, 43933, 43943, + 43951, 43961, 43963, 43969, 43973, 43987, 43991, 43997, 44017, 44021, + 44027, 44029, 44041, 44053, 44059, 44071, 44087, 44089, 44101, 44111, + 44119, 44123, 44129, 44131, 44159, 44171, 44179, 44189, 44201, 44203, + 44207, 44221, 44249, 44257, 44263, 44267, 44269, 44273, 44279, 44281, + 44293, 44351, 44357, 44371, 44381, 44383, 44389, 44417, 44449, 44453, + 44483, 44491, 44497, 44501, 44507, 44519, 44531, 44533, 44537, 44543, + 44549, 44563, 44579, 44587, 44617, 44621, 44623, 44633, 44641, 44647, + 44651, 44657, 44683, 44687, 44699, 44701, 44711, 44729, 44741, 44753, + 44771, 44773, 44777, 44789, 44797, 44809, 44819, 44839, 44843, 44851, + 44867, 44879, 44887, 44893, 44909, 44917, 44927, 44939, 44953, 44959, + 44963, 44971, 44983, 44987, 45007, 45013, 45053, 45061, 45077, 45083, + 45119, 45121, 45127, 45131, 45137, 45139, 45161, 45179, 45181, 45191, + 45197, 45233, 45247, 45259, 45263, 45281, 45289, 45293, 45307, 45317, + 45319, 45329, 45337, 45341, 45343, 45361, 45377, 45389, 45403, 45413, + 45427, 45433, 45439, 45481, 45491, 45497, 45503, 45523, 45533, 45541, + 45553, 45557, 45569, 45587, 45589, 45599, 45613, 45631, 45641, 45659, + 45667, 45673, 45677, 45691, 45697, 45707, 45737, 45751, 45757, 45763, + 45767, 45779, 45817, 45821, 45823, 45827, 45833, 45841, 45853, 45863, + 45869, 45887, 45893, 45943, 45949, 45953, 45959, 45971, 45979, 45989, + 46021, 46027, 46049, 46051, 46061, 46073, 46091, 46093, 46099, 46103, + 46133, 46141, 46147, 46153, 46171, 46181, 46183, 46187, 46199, 46219, + 46229, 46237, 46261, 46271, 46273, 46279, 46301, 46307, 46309, 46327, + 46337, 46349, 46351, 46381, 46399, 46411, 46439, 46441, 46447, 46451, + 46457, 46471, 46477, 46489, 46499, 46507, 46511, 46523, 46549, 46559, + 46567, 46573, 46589, 46591, 46601, 46619, 46633, 46639, 46643, 46649, + 46663, 46679, 46681, 46687, 46691, 46703, 46723, 46727, 46747, 46751, + 46757, 46769, 46771, 46807, 46811, 46817, 46819, 46829, 46831, 46853, + 46861, 46867, 46877, 46889, 46901, 46919, 46933, 46957, 46993, 46997, + 47017, 47041, 47051, 47057, 47059, 47087, 47093, 47111, 47119, 47123, + 47129, 47137, 47143, 47147, 47149, 47161, 47189, 47207, 47221, 47237, + 47251, 47269, 47279, 47287, 47293, 47297, 47303, 47309, 47317, 47339, + 47351, 47353, 47363, 47381, 47387, 47389, 47407, 47417, 47419, 47431, + 47441, 47459, 47491, 47497, 47501, 47507, 47513, 47521, 47527, 47533, + 47543, 47563, 47569, 47581, 47591, 47599, 47609, 47623, 47629, 47639, + 47653, 47657, 47659, 47681, 47699, 47701, 47711, 47713, 47717, 47737, + 47741, 47743, 47777, 47779, 47791, 47797, 47807, 47809, 47819, 47837, + 47843, 47857, 47869, 47881, 47903, 47911, 47917, 47933, 47939, 47947, + 47951, 47963, 47969, 47977, 47981, 48017, 48023, 48029, 48049, 48073, + 48079, 48091, 48109, 48119, 48121, 48131, 48157, 48163, 48179, 48187, + 48193, 48197, 48221, 48239, 48247, 48259, 48271, 48281, 48299, 48311, + 48313, 48337, 48341, 48353, 48371, 48383, 48397, 48407, 48409, 48413, + 48437, 48449, 48463, 48473, 48479, 48481, 48487, 48491, 48497, 48523, + 48527, 48533, 48539, 48541, 48563, 48571, 48589, 48593, 48611, 48619, + 48623, 48647, 48649, 48661, 48673, 48677, 48679, 48731, 48733, 48751, + 48757, 48761, 48767, 48779, 48781, 48787, 48799, 48809, 48817, 48821, + 48823, 48847, 48857, 48859, 48869, 48871, 48883, 48889, 48907, 48947, + 48953, 48973, 48989, 48991, 49003, 49009, 49019, 49031, 49033, 49037, + 49043, 49057, 49069, 49081, 49103, 49109, 49117, 49121, 49123, 49139, + 49157, 49169, 49171, 49177, 49193, 49199, 49201, 49207, 49211, 49223, + 49253, 49261, 49277, 49279, 49297, 49307, 49331, 49333, 49339, 49363, + 49367, 49369, 49391, 49393, 49409, 49411, 49417, 49429, 49433, 49451, + 49459, 49463, 49477, 49481, 49499, 49523, 49529, 49531, 49537, 49547, + 49549, 49559, 49597, 49603, 49613, 49627, 49633, 49639, 49663, 49667, + 49669, 49681, 49697, 49711, 49727, 49739, 49741, 49747, 49757, 49783, + 49787, 49789, 49801, 49807, 49811, 49823, 49831, 49843, 49853, 49871, + 49877, 49891, 49919, 49921, 49927, 49937, 49939, 49943, 49957, 49991, + 49993, 49999, 50021, 50023, 50033, 50047, 50051, 50053, 50069, 50077, + 50087, 50093, 50101, 50111, 50119, 50123, 50129, 50131, 50147, 50153, + 50159, 50177, 50207, 50221, 50227, 50231, 50261, 50263, 50273, 50287, + 50291, 50311, 50321, 50329, 50333, 50341, 50359, 50363, 50377, 50383, + 50387, 50411, 50417, 50423, 50441, 50459, 50461, 50497, 50503, 50513, + 50527, 50539, 50543, 50549, 50551, 50581, 50587, 50591, 50593, 50599, + 50627, 50647, 50651, 50671, 50683, 50707, 50723, 50741, 50753, 50767, + 50773, 50777, 50789, 50821, 50833, 50839, 50849, 50857, 50867, 50873, + 50891, 50893, 50909, 50923, 50929, 50951, 50957, 50969, 50971, 50989, + 50993, 51001, 51031, 51043, 51047, 51059, 51061, 51071, 51109, 51131, + 51133, 51137, 51151, 51157, 51169, 51193, 51197, 51199, 51203, 51217, + 51229, 51239, 51241, 51257, 51263, 51283, 51287, 51307, 51329, 51341, + 51343, 51347, 51349, 51361, 51383, 51407, 51413, 51419, 51421, 51427, + 51431, 51437, 51439, 51449, 51461, 51473, 51479, 51481, 51487, 51503, + 51511, 51517, 51521, 51539, 51551, 51563, 51577, 51581, 51593, 51599, + 51607, 51613, 51631, 51637, 51647, 51659, 51673, 51679, 51683, 51691, + 51713, 51719, 51721, 51749, 51767, 51769, 51787, 51797, 51803, 51817, + 51827, 51829, 51839, 51853, 51859, 51869, 51871, 51893, 51899, 51907, + 51913, 51929, 51941, 51949, 51971, 51973, 51977, 51991, 52009, 52021, + 52027, 52051, 52057, 52067, 52069, 52081, 52103, 52121, 52127, 52147, + 52153, 52163, 52177, 52181, 52183, 52189, 52201, 52223, 52237, 52249, + 52253, 52259, 52267, 52289, 52291, 52301, 52313, 52321, 52361, 52363, + 52369, 52379, 52387, 52391, 52433, 52453, 52457, 52489, 52501, 52511, + 52517, 52529, 52541, 52543, 52553, 52561, 52567, 52571, 52579, 52583, + 52609, 52627, 52631, 52639, 52667, 52673, 52691, 52697, 52709, 52711, + 52721, 52727, 52733, 52747, 52757, 52769, 52783, 52807, 52813, 52817, + 52837, 52859, 52861, 52879, 52883, 52889, 52901, 52903, 52919, 52937, + 52951, 52957, 52963, 52967, 52973, 52981, 52999, 53003, 53017, 53047, + 53051, 53069, 53077, 53087, 53089, 53093, 53101, 53113, 53117, 53129, + 53147, 53149, 53161, 53171, 53173, 53189, 53197, 53201, 53231, 53233, + 53239, 53267, 53269, 53279, 53281, 53299, 53309, 53323, 53327, 53353, + 53359, 53377, 53381, 53401, 53407, 53411, 53419, 53437, 53441, 53453, + 53479, 53503, 53507, 53527, 53549, 53551, 53569, 53591, 53593, 53597, + 53609, 53611, 53617, 53623, 53629, 53633, 53639, 53653, 53657, 53681, + 53693, 53699, 53717, 53719, 53731, 53759, 53773, 53777, 53783, 53791, + 53813, 53819, 53831, 53849, 53857, 53861, 53881, 53887, 53891, 53897, + 53899, 53917, 53923, 53927, 53939, 53951, 53959, 53987, 53993, 54001, + 54011, 54013, 54037, 54049, 54059, 54083, 54091, 54101, 54121, 54133, + 54139, 54151, 54163, 54167, 54181, 54193, 54217, 54251, 54269, 54277, + 54287, 54293, 54311, 54319, 54323, 54331, 54347, 54361, 54367, 54371, + 54377, 54401, 54403, 54409, 54413, 54419, 54421, 54437, 54443, 54449, + 54469, 54493, 54497, 54499, 54503, 54517, 54521, 54539, 54541, 54547, + 54559, 54563, 54577, 54581, 54583, 54601, 54617, 54623, 54629, 54631, + 54647, 54667, 54673, 54679, 54709, 54713, 54721, 54727, 54751, 54767, + 54773, 54779, 54787, 54799, 54829, 54833, 54851, 54869, 54877, 54881, + 54907, 54917, 54919, 54941, 54949, 54959, 54973, 54979, 54983, 55001, + 55009, 55021, 55049, 55051, 55057, 55061, 55073, 55079, 55103, 55109, + 55117, 55127, 55147, 55163, 55171, 55201, 55207, 55213, 55217, 55219, + 55229, 55243, 55249, 55259, 55291, 55313, 55331, 55333, 55337, 55339, + 55343, 55351, 55373, 55381, 55399, 55411, 55439, 55441, 55457, 55469, + 55487, 55501, 55511, 55529, 55541, 55547, 55579, 55589, 55603, 55609, + 55619, 55621, 55631, 55633, 55639, 55661, 55663, 55667, 55673, 55681, + 55691, 55697, 55711, 55717, 55721, 55733, 55763, 55787, 55793, 55799, + 55807, 55813, 55817, 55819, 55823, 55829, 55837, 55843, 55849, 55871, + 55889, 55897, 55901, 55903, 55921, 55927, 55931, 55933, 55949, 55967, + 55987, 55997, 56003, 56009, 56039, 56041, 56053, 56081, 56087, 56093, + 56099, 56101, 56113, 56123, 56131, 56149, 56167, 56171, 56179, 56197, + 56207, 56209, 56237, 56239, 56249, 56263, 56267, 56269, 56299, 56311, + 56333, 56359, 56369, 56377, 56383, 56393, 56401, 56417, 56431, 56437, + 56443, 56453, 56467, 56473, 56477, 56479, 56489, 56501, 56503, 56509, + 56519, 56527, 56531, 56533, 56543, 56569, 56591, 56597, 56599, 56611, + 56629, 56633, 56659, 56663, 56671, 56681, 56687, 56701, 56711, 56713, + 56731, 56737, 56747, 56767, 56773, 56779, 56783, 56807, 56809, 56813, + 56821, 56827, 56843, 56857, 56873, 56891, 56893, 56897, 56909, 56911, + 56921, 56923, 56929, 56941, 56951, 56957, 56963, 56983, 56989, 56993, + 56999, 57037, 57041, 57047, 57059, 57073, 57077, 57089, 57097, 57107, + 57119, 57131, 57139, 57143, 57149, 57163, 57173, 57179, 57191, 57193, + 57203, 57221, 57223, 57241, 57251, 57259, 57269, 57271, 57283, 57287, + 57301, 57329, 57331, 57347, 57349, 57367, 57373, 57383, 57389, 57397, + 57413, 57427, 57457, 57467, 57487, 57493, 57503, 57527, 57529, 57557, + 57559, 57571, 57587, 57593, 57601, 57637, 57641, 57649, 57653, 57667, + 57679, 57689, 57697, 57709, 57713, 57719, 57727, 57731, 57737, 57751, + 57773, 57781, 57787, 57791, 57793, 57803, 57809, 57829, 57839, 57847, + 57853, 57859, 57881, 57899, 57901, 57917, 57923, 57943, 57947, 57973, + 57977, 57991, 58013, 58027, 58031, 58043, 58049, 58057, 58061, 58067, + 58073, 58099, 58109, 58111, 58129, 58147, 58151, 58153, 58169, 58171, + 58189, 58193, 58199, 58207, 58211, 58217, 58229, 58231, 58237, 58243, + 58271, 58309, 58313, 58321, 58337, 58363, 58367, 58369, 58379, 58391, + 58393, 58403, 58411, 58417, 58427, 58439, 58441, 58451, 58453, 58477, + 58481, 58511, 58537, 58543, 58549, 58567, 58573, 58579, 58601, 58603, + 58613, 58631, 58657, 58661, 58679, 58687, 58693, 58699, 58711, 58727, + 58733, 58741, 58757, 58763, 58771, 58787, 58789, 58831, 58889, 58897, + 58901, 58907, 58909, 58913, 58921, 58937, 58943, 58963, 58967, 58979, + 58991, 58997, 59009, 59011, 59021, 59023, 59029, 59051, 59053, 59063, + 59069, 59077, 59083, 59093, 59107, 59113, 59119, 59123, 59141, 59149, + 59159, 59167, 59183, 59197, 59207, 59209, 59219, 59221, 59233, 59239, + 59243, 59263, 59273, 59281, 59333, 59341, 59351, 59357, 59359, 59369, + 59377, 59387, 59393, 59399, 59407, 59417, 59419, 59441, 59443, 59447, + 59453, 59467, 59471, 59473, 59497, 59509, 59513, 59539, 59557, 59561, + 59567, 59581, 59611, 59617, 59621, 59627, 59629, 59651, 59659, 59663, + 59669, 59671, 59693, 59699, 59707, 59723, 59729, 59743, 59747, 59753, + 59771, 59779, 59791, 59797, 59809, 59833, 59863, 59879, 59887, 59921, + 59929, 59951, 59957, 59971, 59981, 59999, 60013, 60017, 60029, 60037, + 60041, 60077, 60083, 60089, 60091, 60101, 60103, 60107, 60127, 60133, + 60139, 60149, 60161, 60167, 60169, 60209, 60217, 60223, 60251, 60257, + 60259, 60271, 60289, 60293, 60317, 60331, 60337, 60343, 60353, 60373, + 60383, 60397, 60413, 60427, 60443, 60449, 60457, 60493, 60497, 60509, + 60521, 60527, 60539, 60589, 60601, 60607, 60611, 60617, 60623, 60631, + 60637, 60647, 60649, 60659, 60661, 60679, 60689, 60703, 60719, 60727, + 60733, 60737, 60757, 60761, 60763, 60773, 60779, 60793, 60811, 60821, + 60859, 60869, 60887, 60889, 60899, 60901, 60913, 60917, 60919, 60923, + 60937, 60943, 60953, 60961, 61001, 61007, 61027, 61031, 61043, 61051, + 61057, 61091, 61099, 61121, 61129, 61141, 61151, 61153, 61169, 61211, + 61223, 61231, 61253, 61261, 61283, 61291, 61297, 61331, 61333, 61339, + 61343, 61357, 61363, 61379, 61381, 61403, 61409, 61417, 61441, 61463, + 61469, 61471, 61483, 61487, 61493, 61507, 61511, 61519, 61543, 61547, + 61553, 61559, 61561, 61583, 61603, 61609, 61613, 61627, 61631, 61637, + 61643, 61651, 61657, 61667, 61673, 61681, 61687, 61703, 61717, 61723, + 61729, 61751, 61757, 61781, 61813, 61819, 61837, 61843, 61861, 61871, + 61879, 61909, 61927, 61933, 61949, 61961, 61967, 61979, 61981, 61987, + 61991, 62003, 62011, 62017, 62039, 62047, 62053, 62057, 62071, 62081, + 62099, 62119, 62129, 62131, 62137, 62141, 62143, 62171, 62189, 62191, + 62201, 62207, 62213, 62219, 62233, 62273, 62297, 62299, 62303, 62311, + 62323, 62327, 62347, 62351, 62383, 62401, 62417, 62423, 62459, 62467, + 62473, 62477, 62483, 62497, 62501, 62507, 62533, 62539, 62549, 62563, + 62581, 62591, 62597, 62603, 62617, 62627, 62633, 62639, 62653, 62659, + 62683, 62687, 62701, 62723, 62731, 62743, 62753, 62761, 62773, 62791, + 62801, 62819, 62827, 62851, 62861, 62869, 62873, 62897, 62903, 62921, + 62927, 62929, 62939, 62969, 62971, 62981, 62983, 62987, 62989, 63029, + 63031, 63059, 63067, 63073, 63079, 63097, 63103, 63113, 63127, 63131, + 63149, 63179, 63197, 63199, 63211, 63241, 63247, 63277, 63281, 63299, + 63311, 63313, 63317, 63331, 63337, 63347, 63353, 63361, 63367, 63377, + 63389, 63391, 63397, 63409, 63419, 63421, 63439, 63443, 63463, 63467, + 63473, 63487, 63493, 63499, 63521, 63527, 63533, 63541, 63559, 63577, + 63587, 63589, 63599, 63601, 63607, 63611, 63617, 63629, 63647, 63649, + 63659, 63667, 63671, 63689, 63691, 63697, 63703, 63709, 63719, 63727, + 63737, 63743, 63761, 63773, 63781, 63793, 63799, 63803, 63809, 63823, + 63839, 63841, 63853, 63857, 63863, 63901, 63907, 63913, 63929, 63949, + 63977, 63997, 64007, 64013, 64019, 64033, 64037, 64063, 64067, 64081, + 64091, 64109, 64123, 64151, 64153, 64157, 64171, 64187, 64189, 64217, + 64223, 64231, 64237, 64271, 64279, 64283, 64301, 64303, 64319, 64327, + 64333, 64373, 64381, 64399, 64403, 64433, 64439, 64451, 64453, 64483, + 64489, 64499, 64513, 64553, 64567, 64577, 64579, 64591, 64601, 64609, + 64613, 64621, 64627, 64633, 64661, 64663, 64667, 64679, 64693, 64709, + 64717, 64747, 64763, 64781, 64783, 64793, 64811, 64817, 64849, 64853, + 64871, 64877, 64879, 64891, 64901, 64919, 64921, 64927, 64937, 64951, + 64969, 64997, 65003, 65011, 65027, 65029, 65033, 65053, 65063, 65071, + 65089, 65099, 65101, 65111, 65119, 65123, 65129, 65141, 65147, 65167, + 65171, 65173, 65179, 65183, 65203, 65213, 65239, 65257, 65267, 65269, + 65287, 65293, 65309, 65323, 65327, 65353, 65357, 65371, 65381, 65393, + 65407, 65413, 65419, 65423, 65437, 65447, 65449, 65479, 65497, 65519, + 65521, 0 }; /* Tests if the (small) number provided is a prime. @@ -1002,13 +722,12 @@ unsigned mpz_seed_sizeinbase_256_u(mpz_t s, unsigned nominal) return ret; } -static int st_provable_prime_small(mpz_t p, - unsigned *prime_seed_length, +static int st_provable_prime_small(mpz_t p, unsigned *prime_seed_length, void *prime_seed, unsigned *prime_gen_counter, unsigned bits, unsigned seed_length, const void *seed, void *progress_ctx, - nettle_progress_func * progress) + nettle_progress_func *progress) { unsigned gen_counter = 0; unsigned tseed_length; @@ -1027,7 +746,7 @@ static int st_provable_prime_small(mpz_t p, * for the few (unlikely) cases where seed overflows. */ nettle_mpz_set_str_256_u(s, seed_length, seed); - retry: +retry: tseed_length = mpz_seed_sizeinbase_256_u(s, seed_length); if (tseed_length > sizeof(tseed)) { goto fail; @@ -1069,7 +788,7 @@ static int st_provable_prime_small(mpz_t p, if (small_prime_check(c) == 0) { /* not a prime */ if (gen_counter >= 4 * bits) - goto fail; /* failed */ + goto fail; /* failed */ if (progress) progress(progress_ctx, 'x'); @@ -1095,7 +814,7 @@ static int st_provable_prime_small(mpz_t p, mpz_clear(s); return 1; - fail: +fail: mpz_clear(s); return 0; } @@ -1114,13 +833,10 @@ static int st_provable_prime_small(mpz_t p, * * Returns non zero on success. */ -int -st_provable_prime(mpz_t p, - unsigned *prime_seed_length, void *prime_seed, - unsigned *prime_gen_counter, - unsigned bits, - unsigned seed_length, const void *seed, - void *progress_ctx, nettle_progress_func * progress) +int st_provable_prime(mpz_t p, unsigned *prime_seed_length, void *prime_seed, + unsigned *prime_gen_counter, unsigned bits, + unsigned seed_length, const void *seed, + void *progress_ctx, nettle_progress_func *progress) { unsigned gen_counter; unsigned tseed_length; @@ -1167,7 +883,7 @@ st_provable_prime(mpz_t p, iterations = div_ceil(bits, DIGEST_SIZE * 8); old_counter = gen_counter; - mpz_set_ui(tmp, 0); /* x = 0 */ + mpz_set_ui(tmp, 0); /* x = 0 */ if (iterations > 0) { storage_length = iterations * DIGEST_SIZE; @@ -1177,13 +893,12 @@ st_provable_prime(mpz_t p, for (i = 0; i < iterations; i++) { tseed_length = - mpz_seed_sizeinbase_256_u(s, pseed_length); + mpz_seed_sizeinbase_256_u(s, pseed_length); if (tseed_length > sizeof(tseed)) goto fail; nettle_mpz_get_str_256(tseed_length, tseed, s); - hash(&storage - [(iterations - i - 1) * DIGEST_SIZE], + hash(&storage[(iterations - i - 1) * DIGEST_SIZE], tseed_length, tseed); mpz_add_ui(s, s, 1); } @@ -1193,30 +908,30 @@ st_provable_prime(mpz_t p, /* tmp = 2^(bits-1) + (tmp mod 2^(bits-1)) */ mpz_set_ui(r, 1); - mpz_mul_2exp(r, r, bits - 1); /* r = 2^(bits-1) */ + mpz_mul_2exp(r, r, bits - 1); /* r = 2^(bits-1) */ mpz_fdiv_r_2exp(tmp, tmp, bits - 1); - mpz_add(tmp, tmp, r); /* tmp = x */ + mpz_add(tmp, tmp, r); /* tmp = x */ /* Generate candidate prime c in [2^(bits-1), 2^bits] */ /* t = u[x/2c0] */ - mpz_mul_2exp(dc0, c0, 1); /* dc0 = 2*c0 */ + mpz_mul_2exp(dc0, c0, 1); /* dc0 = 2*c0 */ mpz_cdiv_q(t, tmp, dc0); - retry: +retry: /* c = t*(2c0) + 1 */ mpz_mul(c, dc0, t); mpz_add_ui(c, c, 1); mpz_set_ui(r, 1); - mpz_mul_2exp(r, r, bits); /* r = 2^(bits) */ + mpz_mul_2exp(r, r, bits); /* r = 2^(bits) */ /* if 2tc0+1 > 2^bits */ if (mpz_cmp(c, r) > 0) { /* t = 2^(bits-1)/2c0 */ - mpz_fdiv_q_2exp(r, r, 1); /* r = 2^(bits-1) */ + mpz_fdiv_q_2exp(r, r, 1); /* r = 2^(bits-1) */ mpz_cdiv_q(t, r, dc0); /* c = t* 2c0 + 1 */ @@ -1226,18 +941,17 @@ st_provable_prime(mpz_t p, gen_counter++; - mpz_set_ui(r, 0); /* a = 0 */ + mpz_set_ui(r, 0); /* a = 0 */ if (iterations > 0) { for (i = 0; i < iterations; i++) { tseed_length = - mpz_seed_sizeinbase_256_u(s, pseed_length); + mpz_seed_sizeinbase_256_u(s, pseed_length); if (tseed_length > sizeof(tseed)) goto fail; nettle_mpz_get_str_256(tseed_length, tseed, s); - hash(&storage - [(iterations - i - 1) * DIGEST_SIZE], + hash(&storage[(iterations - i - 1) * DIGEST_SIZE], tseed_length, tseed); mpz_add_ui(s, s, 1); } @@ -1247,12 +961,12 @@ st_provable_prime(mpz_t p, } /* a = 2 + (a mod (c-3)) */ - mpz_sub_ui(tmp, c, 3); /* c is too large to worry about negatives */ + mpz_sub_ui(tmp, c, 3); /* c is too large to worry about negatives */ mpz_mod(r, r, tmp); mpz_add_ui(r, r, 2); /* z = a^(2t) mod c */ - mpz_mul_2exp(tmp, t, 1); /* tmp = 2t */ + mpz_mul_2exp(tmp, t, 1); /* tmp = 2t */ mpz_powm(z, r, tmp, c); mpz_sub_ui(tmp, z, 1); @@ -1265,13 +979,13 @@ st_provable_prime(mpz_t p, mpz_set(p, c); if (prime_seed != NULL) { - tseed_length = - mpz_seed_sizeinbase_256_u(s, pseed_length); + tseed_length = mpz_seed_sizeinbase_256_u( + s, pseed_length); if (*prime_seed_length < tseed_length) goto fail; - nettle_mpz_get_str_256(tseed_length, - prime_seed, s); + nettle_mpz_get_str_256(tseed_length, prime_seed, + s); *prime_seed_length = tseed_length; } @@ -1292,14 +1006,14 @@ st_provable_prime(mpz_t p, mpz_add_ui(t, t, 1); goto retry; - success: +success: ret = 1; goto finish; - fail: +fail: ret = 0; - finish: +finish: mpz_clear(c0); mpz_clear(dc0); mpz_clear(r); diff --git a/lib/nettle/int/rsa-fips.h b/lib/nettle/int/rsa-fips.h index e39656c352..2faebb739c 100644 --- a/lib/nettle/int/rsa-fips.h +++ b/lib/nettle/int/rsa-fips.h @@ -20,27 +20,25 @@ */ #ifndef GNUTLS_LIB_NETTLE_INT_RSA_FIPS_H -# define GNUTLS_LIB_NETTLE_INT_RSA_FIPS_H +#define GNUTLS_LIB_NETTLE_INT_RSA_FIPS_H -# include +#include -int -_rsa_generate_fips186_4_keypair(struct rsa_public_key *pub, - struct rsa_private_key *key, - unsigned seed_length, uint8_t * seed, - void *progress_ctx, - nettle_progress_func * progress, - /* Desired size of modulo, in bits */ - unsigned n_size); +int _rsa_generate_fips186_4_keypair(struct rsa_public_key *pub, + struct rsa_private_key *key, + unsigned seed_length, uint8_t *seed, + void *progress_ctx, + nettle_progress_func *progress, + /* Desired size of modulo, in bits */ + unsigned n_size); -int -rsa_generate_fips186_4_keypair(struct rsa_public_key *pub, - struct rsa_private_key *key, - void *random_ctx, nettle_random_func * random, - void *progress_ctx, - nettle_progress_func * progress, - unsigned *rseed_size, void *rseed, - /* Desired size of modulo, in bits */ - unsigned n_size); +int rsa_generate_fips186_4_keypair(struct rsa_public_key *pub, + struct rsa_private_key *key, + void *random_ctx, nettle_random_func *random, + void *progress_ctx, + nettle_progress_func *progress, + unsigned *rseed_size, void *rseed, + /* Desired size of modulo, in bits */ + unsigned n_size); -#endif /* GNUTLS_LIB_NETTLE_INT_RSA_FIPS_H */ +#endif /* GNUTLS_LIB_NETTLE_INT_RSA_FIPS_H */ diff --git a/lib/nettle/int/rsa-keygen-fips186.c b/lib/nettle/int/rsa-keygen-fips186.c index d392ca81e6..b8cf84a624 100644 --- a/lib/nettle/int/rsa-keygen-fips186.c +++ b/lib/nettle/int/rsa-keygen-fips186.c @@ -22,7 +22,7 @@ */ #if HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include @@ -36,12 +36,11 @@ #include -static int -rsa_provable_prime(mpz_t p, - unsigned *prime_seed_length, void *prime_seed, - unsigned bits, - unsigned seed_length, const void *seed, - mpz_t e, void *progress_ctx, nettle_progress_func * progress) +static int rsa_provable_prime(mpz_t p, unsigned *prime_seed_length, + void *prime_seed, unsigned bits, + unsigned seed_length, const void *seed, mpz_t e, + void *progress_ctx, + nettle_progress_func *progress) { mpz_t x, t, s, r1, r2, p0, sq; int ret; @@ -63,9 +62,9 @@ rsa_provable_prime(mpz_t p, /* p1 = p2 = 1 */ - ret = st_provable_prime(p0, &pseed_length, pseed, - NULL, 1 + div_ceil(bits, 2), seed_length, - seed, progress_ctx, progress); + ret = st_provable_prime(p0, &pseed_length, pseed, NULL, + 1 + div_ceil(bits, 2), seed_length, seed, + progress_ctx, progress); if (ret == 0) { goto cleanup; } @@ -83,7 +82,7 @@ rsa_provable_prime(mpz_t p, nettle_mpz_set_str_256_u(s, pseed_length, pseed); for (i = 0; i < iterations; i++) { tseed_length = - mpz_seed_sizeinbase_256_u(s, pseed_length); + mpz_seed_sizeinbase_256_u(s, pseed_length); if (tseed_length > sizeof(pseed)) goto fail; nettle_mpz_get_str_256(tseed_length, pseed, s); @@ -126,7 +125,7 @@ rsa_provable_prime(mpz_t p, /* t = ((2 y p0 p1) + x) / (2 p0 p1 p2) */ mpz_cdiv_q(t, r1, r2); - retry: +retry: /* p = t p2 - y = t - 1 */ mpz_sub_ui(p, t, 1); @@ -167,17 +166,17 @@ rsa_provable_prime(mpz_t p, mpz_gcd(r1, e, r2); if (mpz_cmp_ui(r1, 1) == 0) { - mpz_set_ui(x, 0); /* a = 0 */ + mpz_set_ui(x, 0); /* a = 0 */ if (iterations > 0) { for (i = 0; i < iterations; i++) { - tseed_length = - mpz_seed_sizeinbase_256_u(s, pseed_length); + tseed_length = mpz_seed_sizeinbase_256_u( + s, pseed_length); if (tseed_length > sizeof(pseed)) goto fail; nettle_mpz_get_str_256(tseed_length, pseed, s); - hash(&storage - [(iterations - i - 1) * DIGEST_SIZE], + hash(&storage[(iterations - i - 1) * + DIGEST_SIZE], tseed_length, pseed); mpz_add_ui(s, s, 1); } @@ -186,7 +185,8 @@ rsa_provable_prime(mpz_t p, } /* a = 2 + a mod p-3 */ - mpz_sub_ui(r1, p, 3); /* p is too large to worry about negatives */ + mpz_sub_ui(r1, p, + 3); /* p is too large to worry about negatives */ mpz_mod(x, x, r1); mpz_add_ui(x, x, 2); @@ -208,8 +208,8 @@ rsa_provable_prime(mpz_t p, if (mpz_cmp_ui(r1, 1) == 0) { if (prime_seed_length != NULL) { tseed_length = - mpz_seed_sizeinbase_256_u(s, - pseed_length); + mpz_seed_sizeinbase_256_u( + s, pseed_length); if (tseed_length > sizeof(pseed)) goto fail; @@ -218,7 +218,7 @@ rsa_provable_prime(mpz_t p, if (*prime_seed_length < tseed_length) { *prime_seed_length = - tseed_length; + tseed_length; goto fail; } *prime_seed_length = tseed_length; @@ -239,9 +239,9 @@ rsa_provable_prime(mpz_t p, mpz_add_ui(t, t, 1); goto retry; - fail: +fail: ret = 0; - cleanup: +cleanup: free(storage); mpz_clear(p0); mpz_clear(sq); @@ -260,24 +260,23 @@ rsa_provable_prime(mpz_t p, static inline unsigned seed_length_for_modulus_size(unsigned modulus_size) { switch (modulus_size) { - case 2048: /* SP 800-56B rev 2 Appendix D and FIPS 140-2 IG 7.5 */ + case 2048: /* SP 800-56B rev 2 Appendix D and FIPS 140-2 IG 7.5 */ return 14 * 2; - case 3072: /* SP 800-56B rev 2 Appendix D and FIPS 140-2 IG 7.5 */ + case 3072: /* SP 800-56B rev 2 Appendix D and FIPS 140-2 IG 7.5 */ return 16 * 2; - case 4096: /* SP 800-56B rev 2 Appendix D */ + case 4096: /* SP 800-56B rev 2 Appendix D */ return 19 * 2; - case 6144: /* SP 800-56B rev 2 Appendix D */ + case 6144: /* SP 800-56B rev 2 Appendix D */ return 22 * 2; - case 7680: /* FIPS 140-2 IG 7.5 */ + case 7680: /* FIPS 140-2 IG 7.5 */ return 24 * 2; - case 8192: /* SP 800-56B rev 2 Appendix D */ + case 8192: /* SP 800-56B rev 2 Appendix D */ return 25 * 2; - case 15360: /* FIPS 140-2 IG 7.5 */ + case 15360: /* FIPS 140-2 IG 7.5 */ return 32 * 2; default: return 0; } - } /* This generates p,q params using the B.3.2.2 algorithm in FIPS 186-4. @@ -285,14 +284,13 @@ static inline unsigned seed_length_for_modulus_size(unsigned modulus_size) * The hash function used is SHA384. * The exponent e used is the value in pub->e. */ -int -_rsa_generate_fips186_4_keypair(struct rsa_public_key *pub, - struct rsa_private_key *key, - unsigned seed_length, uint8_t * seed, - void *progress_ctx, - nettle_progress_func * progress, - /* Desired size of modulo, in bits */ - unsigned n_size) +int _rsa_generate_fips186_4_keypair(struct rsa_public_key *pub, + struct rsa_private_key *key, + unsigned seed_length, uint8_t *seed, + void *progress_ctx, + nettle_progress_func *progress, + /* Desired size of modulo, in bits */ + unsigned n_size) { mpz_t t, r, p1, q1, lcm; int ret; @@ -331,15 +329,15 @@ _rsa_generate_fips186_4_keypair(struct rsa_public_key *pub, } cert.pseed_length = sizeof(cert.pseed); - ret = rsa_provable_prime(key->p, &cert.pseed_length, cert.pseed, - l, seed_length, - seed, pub->e, progress_ctx, progress); + ret = rsa_provable_prime(key->p, &cert.pseed_length, cert.pseed, l, + seed_length, seed, pub->e, progress_ctx, + progress); if (ret == 0) { goto cleanup; } mpz_set_ui(r, 1); - mpz_mul_2exp(r, r, (l) - 100); + mpz_mul_2exp(r, r, (l)-100); do { cert.qseed_length = sizeof(cert.qseed); @@ -406,7 +404,7 @@ _rsa_generate_fips186_4_keypair(struct rsa_public_key *pub, } ret = 1; - cleanup: +cleanup: mpz_clear(p1); mpz_clear(q1); mpz_clear(lcm); @@ -420,15 +418,14 @@ _rsa_generate_fips186_4_keypair(struct rsa_public_key *pub, * The hash function used is SHA384. * The exponent e used is the value in pub->e. */ -int -rsa_generate_fips186_4_keypair(struct rsa_public_key *pub, - struct rsa_private_key *key, - void *random_ctx, nettle_random_func * random, - void *progress_ctx, - nettle_progress_func * progress, - unsigned *rseed_size, void *rseed, - /* Desired size of modulo, in bits */ - unsigned n_size) +int rsa_generate_fips186_4_keypair(struct rsa_public_key *pub, + struct rsa_private_key *key, + void *random_ctx, nettle_random_func *random, + void *progress_ctx, + nettle_progress_func *progress, + unsigned *rseed_size, void *rseed, + /* Desired size of modulo, in bits */ + unsigned n_size) { uint8_t seed[128]; unsigned seed_length; diff --git a/lib/nettle/int/rsa-pad.c b/lib/nettle/int/rsa-pad.c index fda2e304ed..d8716d0cb9 100644 --- a/lib/nettle/int/rsa-pad.c +++ b/lib/nettle/int/rsa-pad.c @@ -21,7 +21,7 @@ */ #if HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include "gnutls_int.h" @@ -35,10 +35,8 @@ * use with TLS (such as TPM2); not recommended for general usage. */ -int -_gnutls_rsa_pkcs1_sign_pad(size_t key_bits, - const gnutls_datum_t * data, - unsigned char *buffer, size_t buffer_size) +int _gnutls_rsa_pkcs1_sign_pad(size_t key_bits, const gnutls_datum_t *data, + unsigned char *buffer, size_t buffer_size) { size_t key_size = (key_bits + 7) / 8; size_t size; @@ -58,16 +56,14 @@ _gnutls_rsa_pkcs1_sign_pad(size_t key_bits, } nettle_mpz_get_str_256(buffer_size, buffer, m); - out: +out: mpz_clear(m); return ret; } -int -_gnutls_rsa_pss_sign_pad(gnutls_x509_spki_st * params, - size_t key_bits, - const gnutls_datum_t * data, - unsigned char *buffer, size_t buffer_size) +int _gnutls_rsa_pss_sign_pad(gnutls_x509_spki_st *params, size_t key_bits, + const gnutls_datum_t *data, unsigned char *buffer, + size_t buffer_size) { mpz_t m; int ret = 0; @@ -117,7 +113,7 @@ _gnutls_rsa_pss_sign_pad(gnutls_x509_spki_st * params, } nettle_mpz_get_str_256(buffer_size, buffer, m); - out: +out: mpz_clear(m); return ret; } diff --git a/lib/nettle/int/tls1-prf.c b/lib/nettle/int/tls1-prf.c index 241d6505a5..bc021a1658 100644 --- a/lib/nettle/int/tls1-prf.c +++ b/lib/nettle/int/tls1-prf.c @@ -24,7 +24,7 @@ */ #if HAVE_CONFIG_H -# include +#include #endif #include @@ -41,13 +41,10 @@ /* The RFC2246 P_hash() function. The mac_ctx is expected to * be initialized and key set to be the secret key. */ -static void -P_hash(void *mac_ctx, - nettle_hash_update_func * update, - nettle_hash_digest_func * digest, - size_t digest_size, - size_t seed_size, const uint8_t * seed, - size_t label_size, const char *label, size_t dst_length, uint8_t * dst) +static void P_hash(void *mac_ctx, nettle_hash_update_func *update, + nettle_hash_digest_func *digest, size_t digest_size, + size_t seed_size, const uint8_t *seed, size_t label_size, + const char *label, size_t dst_length, uint8_t *dst) { uint8_t Atmp[MAX_HASH_SIZE]; ssize_t left; @@ -57,20 +54,22 @@ P_hash(void *mac_ctx, left = dst_length; while (left > 0) { - if (started == 0) { /* A(0) */ - update(mac_ctx, label_size, (const uint8_t *)label); /* hash label */ + if (started == 0) { /* A(0) */ + update(mac_ctx, label_size, + (const uint8_t *)label); /* hash label */ update(mac_ctx, seed_size, seed); started = 1; } else { update(mac_ctx, digest_size, Atmp); } - digest(mac_ctx, digest_size, Atmp); /* store A(i) */ + digest(mac_ctx, digest_size, Atmp); /* store A(i) */ - update(mac_ctx, digest_size, Atmp); /* hash A(i) */ - update(mac_ctx, label_size, (const uint8_t *)label); /* hash label */ - update(mac_ctx, seed_size, seed); /* hash seed */ + update(mac_ctx, digest_size, Atmp); /* hash A(i) */ + update(mac_ctx, label_size, + (const uint8_t *)label); /* hash label */ + update(mac_ctx, seed_size, seed); /* hash seed */ - if (left < (ssize_t) digest_size) + if (left < (ssize_t)digest_size) digest_size = left; digest(mac_ctx, digest_size, dst); @@ -82,10 +81,9 @@ P_hash(void *mac_ctx, return; } -int -tls10_prf(size_t secret_size, const uint8_t * secret, - size_t label_size, const char *label, - size_t seed_size, const uint8_t * seed, size_t length, uint8_t * dst) +int tls10_prf(size_t secret_size, const uint8_t *secret, size_t label_size, + const char *label, size_t seed_size, const uint8_t *seed, + size_t length, uint8_t *dst) { int l_s; const uint8_t *s1, *s2; @@ -105,15 +103,14 @@ tls10_prf(size_t secret_size, const uint8_t * secret, hmac_md5_set_key(&md5_ctx, l_s, s1); - P_hash(&md5_ctx, (nettle_hash_update_func *) hmac_md5_update, - (nettle_hash_digest_func *) hmac_md5_digest, - MD5_DIGEST_SIZE, seed_size, seed, label_size, label, length, o1); + P_hash(&md5_ctx, (nettle_hash_update_func *)hmac_md5_update, + (nettle_hash_digest_func *)hmac_md5_digest, MD5_DIGEST_SIZE, + seed_size, seed, label_size, label, length, o1); hmac_sha1_set_key(&sha1_ctx, l_s, s2); - P_hash(&sha1_ctx, (nettle_hash_update_func *) hmac_sha1_update, - (nettle_hash_digest_func *) hmac_sha1_digest, - SHA1_DIGEST_SIZE, + P_hash(&sha1_ctx, (nettle_hash_update_func *)hmac_sha1_update, + (nettle_hash_digest_func *)hmac_sha1_digest, SHA1_DIGEST_SIZE, seed_size, seed, label_size, label, length, dst); memxor(dst, o1, length); @@ -138,16 +135,13 @@ tls10_prf(size_t secret_size, const uint8_t * secret, * * Returns: zero on failure, non zero on success. -*/ -int -tls12_prf(void *mac_ctx, - nettle_hash_update_func * update, - nettle_hash_digest_func * digest, - size_t digest_size, - size_t label_size, const char *label, - size_t seed_size, const uint8_t * seed, size_t length, uint8_t * dst) +int tls12_prf(void *mac_ctx, nettle_hash_update_func *update, + nettle_hash_digest_func *digest, size_t digest_size, + size_t label_size, const char *label, size_t seed_size, + const uint8_t *seed, size_t length, uint8_t *dst) { - P_hash(mac_ctx, update, digest, digest_size, - seed_size, seed, label_size, label, length, dst); + P_hash(mac_ctx, update, digest, digest_size, seed_size, seed, + label_size, label, length, dst); return 1; } diff --git a/lib/nettle/int/tls1-prf.h b/lib/nettle/int/tls1-prf.h index 9b2586e0a3..d575495fc4 100644 --- a/lib/nettle/int/tls1-prf.h +++ b/lib/nettle/int/tls1-prf.h @@ -21,27 +21,23 @@ */ #ifndef GNUTLS_LIB_NETTLE_INT_TLS1_PRF_H -# define GNUTLS_LIB_NETTLE_INT_TLS1_PRF_H +#define GNUTLS_LIB_NETTLE_INT_TLS1_PRF_H -# include +#include -# define MAX_PRF_BYTES 200 +#define MAX_PRF_BYTES 200 /* Namespace mangling */ -# define tls10_prf nettle_tls10_prf -# define tls12_prf nettle_tls12_prf +#define tls10_prf nettle_tls10_prf +#define tls12_prf nettle_tls12_prf -int -tls10_prf(size_t secret_size, const uint8_t * secret, - size_t label_size, const char *label, - size_t seed_size, const uint8_t * seed, size_t length, uint8_t * dst); +int tls10_prf(size_t secret_size, const uint8_t *secret, size_t label_size, + const char *label, size_t seed_size, const uint8_t *seed, + size_t length, uint8_t *dst); -int -tls12_prf(void *mac_ctx, - nettle_hash_update_func * update, - nettle_hash_digest_func * digest, - size_t digest_size, - size_t label_size, const char *label, - size_t seed_size, const uint8_t * seed, size_t length, uint8_t * dst); +int tls12_prf(void *mac_ctx, nettle_hash_update_func *update, + nettle_hash_digest_func *digest, size_t digest_size, + size_t label_size, const char *label, size_t seed_size, + const uint8_t *seed, size_t length, uint8_t *dst); -#endif /* GNUTLS_LIB_NETTLE_INT_TLS1_PRF_H */ +#endif /* GNUTLS_LIB_NETTLE_INT_TLS1_PRF_H */ diff --git a/lib/nettle/mac.c b/lib/nettle/mac.c index 5435f2e31f..a9294df33f 100644 --- a/lib/nettle/mac.c +++ b/lib/nettle/mac.c @@ -36,11 +36,11 @@ #include #include #if ENABLE_GOST -# include "gost/hmac-gost.h" -# ifndef HAVE_NETTLE_GOST28147_SET_KEY -# include "gost/gost28147.h" -# endif -# include "gost/cmac.h" +#include "gost/hmac-gost.h" +#ifndef HAVE_NETTLE_GOST28147_SET_KEY +#include "gost/gost28147.h" +#endif +#include "gost/cmac.h" #endif #include @@ -129,55 +129,55 @@ struct nettle_mac_ctx { }; #if ENABLE_GOST -static void -_wrap_gost28147_imit_set_key_tc26z(void *ctx, size_t len, const uint8_t * key) +static void _wrap_gost28147_imit_set_key_tc26z(void *ctx, size_t len, + const uint8_t *key) { gost28147_imit_set_param(ctx, &gost28147_param_TC26_Z); gost28147_imit_set_key(ctx, len, key); } -static void _wrap_cmac_magma_set_key(void *ctx, size_t len, const uint8_t * key) +static void _wrap_cmac_magma_set_key(void *ctx, size_t len, const uint8_t *key) { cmac_magma_set_key(ctx, key); } -static void -_wrap_cmac_kuznyechik_set_key(void *ctx, size_t len, const uint8_t * key) +static void _wrap_cmac_kuznyechik_set_key(void *ctx, size_t len, + const uint8_t *key) { cmac_kuznyechik_set_key(ctx, key); } #endif -static void _wrap_umac96_set_key(void *ctx, size_t len, const uint8_t * key) +static void _wrap_umac96_set_key(void *ctx, size_t len, const uint8_t *key) { if (unlikely(len != 16)) abort(); umac96_set_key(ctx, key); } -static void _wrap_umac128_set_key(void *ctx, size_t len, const uint8_t * key) +static void _wrap_umac128_set_key(void *ctx, size_t len, const uint8_t *key) { if (unlikely(len != 16)) abort(); umac128_set_key(ctx, key); } -static void _wrap_cmac128_set_key(void *ctx, size_t len, const uint8_t * key) +static void _wrap_cmac128_set_key(void *ctx, size_t len, const uint8_t *key) { if (unlikely(len != 16)) abort(); cmac_aes128_set_key(ctx, key); } -static void _wrap_cmac256_set_key(void *ctx, size_t len, const uint8_t * key) +static void _wrap_cmac256_set_key(void *ctx, size_t len, const uint8_t *key) { if (unlikely(len != 32)) abort(); cmac_aes256_set_key(ctx, key); } -static void -_wrap_gmac_aes128_set_key(void *_ctx, size_t len, const uint8_t * key) +static void _wrap_gmac_aes128_set_key(void *_ctx, size_t len, + const uint8_t *key) { struct gmac_ctx *ctx = _ctx; @@ -188,8 +188,8 @@ _wrap_gmac_aes128_set_key(void *_ctx, size_t len, const uint8_t * key) ctx->pos = 0; } -static void -_wrap_gmac_aes192_set_key(void *_ctx, size_t len, const uint8_t * key) +static void _wrap_gmac_aes192_set_key(void *_ctx, size_t len, + const uint8_t *key) { struct gmac_ctx *ctx = _ctx; @@ -200,8 +200,8 @@ _wrap_gmac_aes192_set_key(void *_ctx, size_t len, const uint8_t * key) ctx->pos = 0; } -static void -_wrap_gmac_aes256_set_key(void *_ctx, size_t len, const uint8_t * key) +static void _wrap_gmac_aes256_set_key(void *_ctx, size_t len, + const uint8_t *key) { struct gmac_ctx *ctx = _ctx; @@ -213,14 +213,14 @@ _wrap_gmac_aes256_set_key(void *_ctx, size_t len, const uint8_t * key) } static void _wrap_gmac_set_nonce(void *_ctx, size_t nonce_length, - const uint8_t * nonce) + const uint8_t *nonce) { struct gmac_ctx *ctx = _ctx; gcm_set_iv(&ctx->ctx, &ctx->key, nonce_length, nonce); } -static void _wrap_gmac_update(void *_ctx, size_t length, const uint8_t * data) +static void _wrap_gmac_update(void *_ctx, size_t length, const uint8_t *data) { struct gmac_ctx *ctx = _ctx; @@ -248,7 +248,7 @@ static void _wrap_gmac_update(void *_ctx, size_t length, const uint8_t * data) ctx->pos = length; } -static void _wrap_gmac_digest(void *_ctx, size_t length, uint8_t * digest) +static void _wrap_gmac_digest(void *_ctx, size_t length, uint8_t *digest) { struct gmac_ctx *ctx = _ctx; @@ -268,117 +268,117 @@ static int _mac_ctx_init(gnutls_mac_algorithm_t algo, ctx->set_nonce = NULL; switch (algo) { case GNUTLS_MAC_MD5: - ctx->update = (update_func) hmac_md5_update; - ctx->digest = (digest_func) hmac_md5_digest; - ctx->set_key = (set_key_func) hmac_md5_set_key; + ctx->update = (update_func)hmac_md5_update; + ctx->digest = (digest_func)hmac_md5_digest; + ctx->set_key = (set_key_func)hmac_md5_set_key; ctx->ctx_ptr = &ctx->ctx.md5; ctx->length = MD5_DIGEST_SIZE; break; case GNUTLS_MAC_SHA1: - ctx->update = (update_func) hmac_sha1_update; - ctx->digest = (digest_func) hmac_sha1_digest; - ctx->set_key = (set_key_func) hmac_sha1_set_key; + ctx->update = (update_func)hmac_sha1_update; + ctx->digest = (digest_func)hmac_sha1_digest; + ctx->set_key = (set_key_func)hmac_sha1_set_key; ctx->ctx_ptr = &ctx->ctx.sha1; ctx->length = SHA1_DIGEST_SIZE; break; case GNUTLS_MAC_SHA224: - ctx->update = (update_func) hmac_sha224_update; - ctx->digest = (digest_func) hmac_sha224_digest; - ctx->set_key = (set_key_func) hmac_sha224_set_key; + ctx->update = (update_func)hmac_sha224_update; + ctx->digest = (digest_func)hmac_sha224_digest; + ctx->set_key = (set_key_func)hmac_sha224_set_key; ctx->ctx_ptr = &ctx->ctx.sha224; ctx->length = SHA224_DIGEST_SIZE; break; case GNUTLS_MAC_SHA256: - ctx->update = (update_func) hmac_sha256_update; - ctx->digest = (digest_func) hmac_sha256_digest; - ctx->set_key = (set_key_func) hmac_sha256_set_key; + ctx->update = (update_func)hmac_sha256_update; + ctx->digest = (digest_func)hmac_sha256_digest; + ctx->set_key = (set_key_func)hmac_sha256_set_key; ctx->ctx_ptr = &ctx->ctx.sha256; ctx->length = SHA256_DIGEST_SIZE; break; case GNUTLS_MAC_SHA384: - ctx->update = (update_func) hmac_sha384_update; - ctx->digest = (digest_func) hmac_sha384_digest; - ctx->set_key = (set_key_func) hmac_sha384_set_key; + ctx->update = (update_func)hmac_sha384_update; + ctx->digest = (digest_func)hmac_sha384_digest; + ctx->set_key = (set_key_func)hmac_sha384_set_key; ctx->ctx_ptr = &ctx->ctx.sha384; ctx->length = SHA384_DIGEST_SIZE; break; case GNUTLS_MAC_SHA512: - ctx->update = (update_func) hmac_sha512_update; - ctx->digest = (digest_func) hmac_sha512_digest; - ctx->set_key = (set_key_func) hmac_sha512_set_key; + ctx->update = (update_func)hmac_sha512_update; + ctx->digest = (digest_func)hmac_sha512_digest; + ctx->set_key = (set_key_func)hmac_sha512_set_key; ctx->ctx_ptr = &ctx->ctx.sha512; ctx->length = SHA512_DIGEST_SIZE; break; #if ENABLE_GOST case GNUTLS_MAC_GOSTR_94: - ctx->update = (update_func) hmac_gosthash94cp_update; - ctx->digest = (digest_func) hmac_gosthash94cp_digest; - ctx->set_key = (set_key_func) hmac_gosthash94cp_set_key; + ctx->update = (update_func)hmac_gosthash94cp_update; + ctx->digest = (digest_func)hmac_gosthash94cp_digest; + ctx->set_key = (set_key_func)hmac_gosthash94cp_set_key; ctx->ctx_ptr = &ctx->ctx.gosthash94cp; ctx->length = GOSTHASH94CP_DIGEST_SIZE; break; case GNUTLS_MAC_STREEBOG_256: - ctx->update = (update_func) hmac_streebog256_update; - ctx->digest = (digest_func) hmac_streebog256_digest; - ctx->set_key = (set_key_func) hmac_streebog256_set_key; + ctx->update = (update_func)hmac_streebog256_update; + ctx->digest = (digest_func)hmac_streebog256_digest; + ctx->set_key = (set_key_func)hmac_streebog256_set_key; ctx->ctx_ptr = &ctx->ctx.streebog256; ctx->length = STREEBOG256_DIGEST_SIZE; break; case GNUTLS_MAC_STREEBOG_512: - ctx->update = (update_func) hmac_streebog512_update; - ctx->digest = (digest_func) hmac_streebog512_digest; - ctx->set_key = (set_key_func) hmac_streebog512_set_key; + ctx->update = (update_func)hmac_streebog512_update; + ctx->digest = (digest_func)hmac_streebog512_digest; + ctx->set_key = (set_key_func)hmac_streebog512_set_key; ctx->ctx_ptr = &ctx->ctx.streebog512; ctx->length = STREEBOG512_DIGEST_SIZE; break; case GNUTLS_MAC_GOST28147_TC26Z_IMIT: - ctx->update = (update_func) gost28147_imit_update; - ctx->digest = (digest_func) gost28147_imit_digest; + ctx->update = (update_func)gost28147_imit_update; + ctx->digest = (digest_func)gost28147_imit_digest; ctx->set_key = _wrap_gost28147_imit_set_key_tc26z; ctx->ctx_ptr = &ctx->ctx.gost28147_imit; ctx->length = GOST28147_IMIT_DIGEST_SIZE; break; case GNUTLS_MAC_MAGMA_OMAC: - ctx->update = (update_func) cmac_magma_update; - ctx->digest = (digest_func) cmac_magma_digest; + ctx->update = (update_func)cmac_magma_update; + ctx->digest = (digest_func)cmac_magma_digest; ctx->set_key = _wrap_cmac_magma_set_key; ctx->ctx_ptr = &ctx->ctx.magma; ctx->length = CMAC64_DIGEST_SIZE; break; case GNUTLS_MAC_KUZNYECHIK_OMAC: - ctx->update = (update_func) cmac_kuznyechik_update; - ctx->digest = (digest_func) cmac_kuznyechik_digest; + ctx->update = (update_func)cmac_kuznyechik_update; + ctx->digest = (digest_func)cmac_kuznyechik_digest; ctx->set_key = _wrap_cmac_kuznyechik_set_key; ctx->ctx_ptr = &ctx->ctx.kuznyechik; ctx->length = CMAC128_DIGEST_SIZE; break; #endif case GNUTLS_MAC_UMAC_96: - ctx->update = (update_func) umac96_update; - ctx->digest = (digest_func) umac96_digest; + ctx->update = (update_func)umac96_update; + ctx->digest = (digest_func)umac96_digest; ctx->set_key = _wrap_umac96_set_key; - ctx->set_nonce = (set_nonce_func) umac96_set_nonce; + ctx->set_nonce = (set_nonce_func)umac96_set_nonce; ctx->ctx_ptr = &ctx->ctx.umac96; ctx->length = 12; break; case GNUTLS_MAC_UMAC_128: - ctx->update = (update_func) umac128_update; - ctx->digest = (digest_func) umac128_digest; + ctx->update = (update_func)umac128_update; + ctx->digest = (digest_func)umac128_digest; ctx->set_key = _wrap_umac128_set_key; - ctx->set_nonce = (set_nonce_func) umac128_set_nonce; + ctx->set_nonce = (set_nonce_func)umac128_set_nonce; ctx->ctx_ptr = &ctx->ctx.umac128; ctx->length = 16; break; case GNUTLS_MAC_AES_CMAC_128: - ctx->update = (update_func) cmac_aes128_update; - ctx->digest = (digest_func) cmac_aes128_digest; + ctx->update = (update_func)cmac_aes128_update; + ctx->digest = (digest_func)cmac_aes128_digest; ctx->set_key = _wrap_cmac128_set_key; ctx->ctx_ptr = &ctx->ctx.cmac128; ctx->length = CMAC128_DIGEST_SIZE; break; case GNUTLS_MAC_AES_CMAC_256: - ctx->update = (update_func) cmac_aes256_update; - ctx->digest = (digest_func) cmac_aes256_digest; + ctx->update = (update_func)cmac_aes256_update; + ctx->digest = (digest_func)cmac_aes256_digest; ctx->set_key = _wrap_cmac256_set_key; ctx->ctx_ptr = &ctx->ctx.cmac256; ctx->length = CMAC128_DIGEST_SIZE; @@ -390,7 +390,7 @@ static int _mac_ctx_init(gnutls_mac_algorithm_t algo, ctx->digest = _wrap_gmac_digest; ctx->ctx_ptr = &ctx->ctx.gmac; ctx->length = GCM_DIGEST_SIZE; - ctx->ctx.gmac.encrypt = (nettle_cipher_func *) aes128_encrypt; + ctx->ctx.gmac.encrypt = (nettle_cipher_func *)aes128_encrypt; break; case GNUTLS_MAC_AES_GMAC_192: ctx->set_key = _wrap_gmac_aes192_set_key; @@ -399,7 +399,7 @@ static int _mac_ctx_init(gnutls_mac_algorithm_t algo, ctx->digest = _wrap_gmac_digest; ctx->ctx_ptr = &ctx->ctx.gmac; ctx->length = GCM_DIGEST_SIZE; - ctx->ctx.gmac.encrypt = (nettle_cipher_func *) aes192_encrypt; + ctx->ctx.gmac.encrypt = (nettle_cipher_func *)aes192_encrypt; break; case GNUTLS_MAC_AES_GMAC_256: ctx->set_key = _wrap_gmac_aes256_set_key; @@ -408,7 +408,7 @@ static int _mac_ctx_init(gnutls_mac_algorithm_t algo, ctx->digest = _wrap_gmac_digest; ctx->ctx_ptr = &ctx->ctx.gmac; ctx->length = GCM_DIGEST_SIZE; - ctx->ctx.gmac.encrypt = (nettle_cipher_func *) aes256_encrypt; + ctx->ctx.gmac.encrypt = (nettle_cipher_func *)aes256_encrypt; break; default: gnutls_assert(); @@ -418,11 +418,10 @@ static int _mac_ctx_init(gnutls_mac_algorithm_t algo, return 0; } -static int wrap_nettle_mac_fast(gnutls_mac_algorithm_t algo, - const void *nonce, size_t nonce_size, - const void *key, size_t key_size, - const void *text, size_t text_size, - void *digest) +static int wrap_nettle_mac_fast(gnutls_mac_algorithm_t algo, const void *nonce, + size_t nonce_size, const void *key, + size_t key_size, const void *text, + size_t text_size, void *digest) { struct nettle_mac_ctx ctx; int ret; @@ -504,14 +503,14 @@ static void *wrap_nettle_mac_copy(const void *_ctx) { const struct nettle_mac_ctx *ctx = _ctx; struct nettle_mac_ctx *new_ctx; - ptrdiff_t off = (uint8_t *) ctx->ctx_ptr - (uint8_t *) (&ctx->ctx); + ptrdiff_t off = (uint8_t *)ctx->ctx_ptr - (uint8_t *)(&ctx->ctx); new_ctx = gnutls_calloc(1, sizeof(struct nettle_mac_ctx)); if (new_ctx == NULL) return NULL; memcpy(new_ctx, ctx, sizeof(*ctx)); - new_ctx->ctx_ptr = (uint8_t *) & new_ctx->ctx + off; + new_ctx->ctx_ptr = (uint8_t *)&new_ctx->ctx + off; return new_ctx; } @@ -524,8 +523,8 @@ static int wrap_nettle_mac_set_key(void *_ctx, const void *key, size_t keylen) return 0; } -static int -wrap_nettle_mac_set_nonce(void *_ctx, const void *nonce, size_t noncelen) +static int wrap_nettle_mac_set_nonce(void *_ctx, const void *nonce, + size_t noncelen) { struct nettle_mac_ctx *ctx = _ctx; @@ -549,8 +548,8 @@ static int wrap_nettle_mac_update(void *_ctx, const void *text, size_t textsize) return GNUTLS_E_SUCCESS; } -static int -wrap_nettle_mac_output(void *src_ctx, void *digest, size_t digestsize) +static int wrap_nettle_mac_output(void *src_ctx, void *digest, + size_t digestsize) { struct nettle_mac_ctx *ctx; ctx = src_ctx; @@ -575,8 +574,8 @@ static void wrap_nettle_mac_deinit(void *hd) /* Hash functions */ -static int -wrap_nettle_hash_update(void *_ctx, const void *text, size_t textsize) +static int wrap_nettle_hash_update(void *_ctx, const void *text, + size_t textsize) { struct nettle_hash_ctx *ctx = _ctx; @@ -626,7 +625,7 @@ static int wrap_nettle_hash_exists(gnutls_digest_algorithm_t algo) } } -static void _md5_sha1_update(void *_ctx, size_t len, const uint8_t * data) +static void _md5_sha1_update(void *_ctx, size_t len, const uint8_t *data) { struct md5_sha1_ctx *ctx = _ctx; @@ -634,7 +633,7 @@ static void _md5_sha1_update(void *_ctx, size_t len, const uint8_t * data) sha1_update(&ctx->sha1, len, data); } -static void _md5_sha1_digest(void *_ctx, size_t len, uint8_t * digest) +static void _md5_sha1_digest(void *_ctx, size_t len, uint8_t *digest) { struct md5_sha1_ctx *ctx = _ctx; @@ -654,110 +653,110 @@ static int _ctx_init(gnutls_digest_algorithm_t algo, switch (algo) { case GNUTLS_DIG_MD5: md5_init(&ctx->ctx.md5); - ctx->update = (update_func) md5_update; - ctx->digest = (digest_func) md5_digest; + ctx->update = (update_func)md5_update; + ctx->digest = (digest_func)md5_digest; ctx->ctx_ptr = &ctx->ctx.md5; ctx->length = MD5_DIGEST_SIZE; break; case GNUTLS_DIG_SHA1: sha1_init(&ctx->ctx.sha1); - ctx->update = (update_func) sha1_update; - ctx->digest = (digest_func) sha1_digest; + ctx->update = (update_func)sha1_update; + ctx->digest = (digest_func)sha1_digest; ctx->ctx_ptr = &ctx->ctx.sha1; ctx->length = SHA1_DIGEST_SIZE; break; case GNUTLS_DIG_MD5_SHA1: md5_init(&ctx->ctx.md5_sha1.md5); sha1_init(&ctx->ctx.md5_sha1.sha1); - ctx->update = (update_func) _md5_sha1_update; - ctx->digest = (digest_func) _md5_sha1_digest; + ctx->update = (update_func)_md5_sha1_update; + ctx->digest = (digest_func)_md5_sha1_digest; ctx->ctx_ptr = &ctx->ctx.md5_sha1; ctx->length = MD5_DIGEST_SIZE + SHA1_DIGEST_SIZE; break; case GNUTLS_DIG_SHA224: sha224_init(&ctx->ctx.sha224); - ctx->update = (update_func) sha224_update; - ctx->digest = (digest_func) sha224_digest; + ctx->update = (update_func)sha224_update; + ctx->digest = (digest_func)sha224_digest; ctx->ctx_ptr = &ctx->ctx.sha224; ctx->length = SHA224_DIGEST_SIZE; break; case GNUTLS_DIG_SHA256: sha256_init(&ctx->ctx.sha256); - ctx->update = (update_func) sha256_update; - ctx->digest = (digest_func) sha256_digest; + ctx->update = (update_func)sha256_update; + ctx->digest = (digest_func)sha256_digest; ctx->ctx_ptr = &ctx->ctx.sha256; ctx->length = SHA256_DIGEST_SIZE; break; case GNUTLS_DIG_SHA384: sha384_init(&ctx->ctx.sha384); - ctx->update = (update_func) sha384_update; - ctx->digest = (digest_func) sha384_digest; + ctx->update = (update_func)sha384_update; + ctx->digest = (digest_func)sha384_digest; ctx->ctx_ptr = &ctx->ctx.sha384; ctx->length = SHA384_DIGEST_SIZE; break; case GNUTLS_DIG_SHA512: sha512_init(&ctx->ctx.sha512); - ctx->update = (update_func) sha512_update; - ctx->digest = (digest_func) sha512_digest; + ctx->update = (update_func)sha512_update; + ctx->digest = (digest_func)sha512_digest; ctx->ctx_ptr = &ctx->ctx.sha512; ctx->length = SHA512_DIGEST_SIZE; break; #ifdef NETTLE_SHA3_FIPS202 case GNUTLS_DIG_SHA3_224: sha3_224_init(&ctx->ctx.sha3_224); - ctx->update = (update_func) sha3_224_update; - ctx->digest = (digest_func) sha3_224_digest; + ctx->update = (update_func)sha3_224_update; + ctx->digest = (digest_func)sha3_224_digest; ctx->ctx_ptr = &ctx->ctx.sha3_224; ctx->length = SHA3_224_DIGEST_SIZE; break; case GNUTLS_DIG_SHA3_256: sha3_256_init(&ctx->ctx.sha3_256); - ctx->update = (update_func) sha3_256_update; - ctx->digest = (digest_func) sha3_256_digest; + ctx->update = (update_func)sha3_256_update; + ctx->digest = (digest_func)sha3_256_digest; ctx->ctx_ptr = &ctx->ctx.sha3_256; ctx->length = SHA3_256_DIGEST_SIZE; break; case GNUTLS_DIG_SHA3_384: sha3_384_init(&ctx->ctx.sha3_384); - ctx->update = (update_func) sha3_384_update; - ctx->digest = (digest_func) sha3_384_digest; + ctx->update = (update_func)sha3_384_update; + ctx->digest = (digest_func)sha3_384_digest; ctx->ctx_ptr = &ctx->ctx.sha3_384; ctx->length = SHA3_384_DIGEST_SIZE; break; case GNUTLS_DIG_SHA3_512: sha3_512_init(&ctx->ctx.sha3_512); - ctx->update = (update_func) sha3_512_update; - ctx->digest = (digest_func) sha3_512_digest; + ctx->update = (update_func)sha3_512_update; + ctx->digest = (digest_func)sha3_512_digest; ctx->ctx_ptr = &ctx->ctx.sha3_512; ctx->length = SHA3_512_DIGEST_SIZE; break; #endif case GNUTLS_DIG_MD2: md2_init(&ctx->ctx.md2); - ctx->update = (update_func) md2_update; - ctx->digest = (digest_func) md2_digest; + ctx->update = (update_func)md2_update; + ctx->digest = (digest_func)md2_digest; ctx->ctx_ptr = &ctx->ctx.md2; ctx->length = MD2_DIGEST_SIZE; break; #if ENABLE_GOST case GNUTLS_DIG_GOSTR_94: gosthash94cp_init(&ctx->ctx.gosthash94cp); - ctx->update = (update_func) gosthash94cp_update; - ctx->digest = (digest_func) gosthash94cp_digest; + ctx->update = (update_func)gosthash94cp_update; + ctx->digest = (digest_func)gosthash94cp_digest; ctx->ctx_ptr = &ctx->ctx.gosthash94cp; ctx->length = GOSTHASH94_DIGEST_SIZE; break; case GNUTLS_DIG_STREEBOG_256: streebog256_init(&ctx->ctx.streebog256); - ctx->update = (update_func) streebog256_update; - ctx->digest = (digest_func) streebog256_digest; + ctx->update = (update_func)streebog256_update; + ctx->digest = (digest_func)streebog256_digest; ctx->ctx_ptr = &ctx->ctx.streebog256; ctx->length = STREEBOG256_DIGEST_SIZE; break; case GNUTLS_DIG_STREEBOG_512: streebog512_init(&ctx->ctx.streebog512); - ctx->update = (update_func) streebog512_update; - ctx->digest = (digest_func) streebog512_digest; + ctx->update = (update_func)streebog512_update; + ctx->digest = (digest_func)streebog512_digest; ctx->ctx_ptr = &ctx->ctx.streebog512; ctx->length = STREEBOG512_DIGEST_SIZE; break; @@ -818,20 +817,20 @@ static void *wrap_nettle_hash_copy(const void *_ctx) { const struct nettle_hash_ctx *ctx = _ctx; struct nettle_hash_ctx *new_ctx; - ptrdiff_t off = (uint8_t *) ctx->ctx_ptr - (uint8_t *) (&ctx->ctx); + ptrdiff_t off = (uint8_t *)ctx->ctx_ptr - (uint8_t *)(&ctx->ctx); new_ctx = gnutls_calloc(1, sizeof(struct nettle_hash_ctx)); if (new_ctx == NULL) return NULL; memcpy(new_ctx, ctx, sizeof(*ctx)); - new_ctx->ctx_ptr = (uint8_t *) & new_ctx->ctx + off; + new_ctx->ctx_ptr = (uint8_t *)&new_ctx->ctx + off; return new_ctx; } -static int -wrap_nettle_hash_output(void *src_ctx, void *digest, size_t digestsize) +static int wrap_nettle_hash_output(void *src_ctx, void *digest, + size_t digestsize) { struct nettle_hash_ctx *ctx; ctx = src_ctx; @@ -848,10 +847,9 @@ wrap_nettle_hash_output(void *src_ctx, void *digest, size_t digestsize) /* KDF functions based on MAC */ -static int -wrap_nettle_hkdf_extract(gnutls_mac_algorithm_t mac, - const void *key, size_t keysize, - const void *salt, size_t saltsize, void *output) +static int wrap_nettle_hkdf_extract(gnutls_mac_algorithm_t mac, const void *key, + size_t keysize, const void *salt, + size_t saltsize, void *output) { struct nettle_mac_ctx ctx; int ret; @@ -861,18 +859,16 @@ wrap_nettle_hkdf_extract(gnutls_mac_algorithm_t mac, return gnutls_assert_val(ret); ctx.set_key(&ctx, saltsize, salt); - hkdf_extract(&ctx.ctx, ctx.update, ctx.digest, ctx.length, - keysize, key, output); + hkdf_extract(&ctx.ctx, ctx.update, ctx.digest, ctx.length, keysize, key, + output); zeroize_temp_key(&ctx, sizeof(ctx)); return 0; } -static int -wrap_nettle_hkdf_expand(gnutls_mac_algorithm_t mac, - const void *key, size_t keysize, - const void *info, size_t infosize, - void *output, size_t length) +static int wrap_nettle_hkdf_expand(gnutls_mac_algorithm_t mac, const void *key, + size_t keysize, const void *info, + size_t infosize, void *output, size_t length) { struct nettle_mac_ctx ctx; int ret; @@ -887,18 +883,16 @@ wrap_nettle_hkdf_expand(gnutls_mac_algorithm_t mac, } ctx.set_key(&ctx, keysize, key); - hkdf_expand(&ctx.ctx, ctx.update, ctx.digest, ctx.length, - infosize, info, length, output); + hkdf_expand(&ctx.ctx, ctx.update, ctx.digest, ctx.length, infosize, + info, length, output); zeroize_temp_key(&ctx, sizeof(ctx)); return 0; } -static int -wrap_nettle_pbkdf2(gnutls_mac_algorithm_t mac, - const void *key, size_t keysize, - const void *salt, size_t saltsize, - unsigned iter_count, void *output, size_t length) +static int wrap_nettle_pbkdf2(gnutls_mac_algorithm_t mac, const void *key, + size_t keysize, const void *salt, size_t saltsize, + unsigned iter_count, void *output, size_t length) { struct nettle_mac_ctx ctx; int ret; @@ -908,8 +902,8 @@ wrap_nettle_pbkdf2(gnutls_mac_algorithm_t mac, return gnutls_assert_val(ret); ctx.set_key(&ctx, keysize, key); - pbkdf2(&ctx.ctx, ctx.update, ctx.digest, ctx.length, - iter_count, saltsize, salt, length, output); + pbkdf2(&ctx.ctx, ctx.update, ctx.digest, ctx.length, iter_count, + saltsize, salt, length, output); zeroize_temp_key(&ctx, sizeof(ctx)); return 0; diff --git a/lib/nettle/mpi.c b/lib/nettle/mpi.c index 94e9f517ab..3e85543292 100644 --- a/lib/nettle/mpi.c +++ b/lib/nettle/mpi.c @@ -28,16 +28,15 @@ #include #include #include -#include /* includes gmp.h */ +#include /* includes gmp.h */ #if ENABLE_GOST -# include "gost/bignum-le.h" +#include "gost/bignum-le.h" #endif #include #include -static int -wrap_nettle_mpi_print(const bigint_t a, void *buffer, size_t *nbytes, - gnutls_bigint_format_t format) +static int wrap_nettle_mpi_print(const bigint_t a, void *buffer, size_t *nbytes, + gnutls_bigint_format_t format) { unsigned int size; mpz_t *p = (void *)a; @@ -72,7 +71,7 @@ wrap_nettle_mpi_print(const bigint_t a, void *buffer, size_t *nbytes, return 0; } -static int wrap_nettle_mpi_init(bigint_t * w) +static int wrap_nettle_mpi_init(bigint_t *w) { bigint_t r; @@ -88,7 +87,7 @@ static int wrap_nettle_mpi_init(bigint_t * w) return 0; } -static int wrap_nettle_mpi_init_multi(bigint_t * w, ...) +static int wrap_nettle_mpi_init_multi(bigint_t *w, ...) { va_list args; bigint_t *next; @@ -119,7 +118,7 @@ static int wrap_nettle_mpi_init_multi(bigint_t * w, ...) va_end(args); return 0; - fail: +fail: mpz_clear(TOMPZ(*w)); gnutls_free(*w); @@ -138,9 +137,8 @@ static int wrap_nettle_mpi_init_multi(bigint_t * w, ...) return GNUTLS_E_MEMORY_ERROR; } -static int -wrap_nettle_mpi_scan(bigint_t r, const void *buffer, size_t nbytes, - gnutls_bigint_format_t format) +static int wrap_nettle_mpi_scan(bigint_t r, const void *buffer, size_t nbytes, + gnutls_bigint_format_t format) { if (format == GNUTLS_MPI_FORMAT_USG) { nettle_mpz_set_str_256_u(TOMPZ(r), nbytes, buffer); @@ -156,7 +154,7 @@ wrap_nettle_mpi_scan(bigint_t r, const void *buffer, size_t nbytes, } return 0; - fail: +fail: return GNUTLS_E_MPI_SCAN_FAILED; } @@ -229,18 +227,16 @@ static int wrap_nettle_mpi_modm(bigint_t r, const bigint_t a, const bigint_t b) return 0; } -static int -wrap_nettle_mpi_powm(bigint_t w, const bigint_t b, const bigint_t e, - const bigint_t m) +static int wrap_nettle_mpi_powm(bigint_t w, const bigint_t b, const bigint_t e, + const bigint_t m) { mpz_powm(TOMPZ(w), TOMPZ(b), TOMPZ(e), TOMPZ(m)); return 0; } -static int -wrap_nettle_mpi_addm(bigint_t w, const bigint_t a, const bigint_t b, - const bigint_t m) +static int wrap_nettle_mpi_addm(bigint_t w, const bigint_t a, const bigint_t b, + const bigint_t m) { mpz_add(TOMPZ(w), TOMPZ(b), TOMPZ(a)); mpz_fdiv_r(TOMPZ(w), TOMPZ(w), TOMPZ(m)); @@ -248,9 +244,8 @@ wrap_nettle_mpi_addm(bigint_t w, const bigint_t a, const bigint_t b, return 0; } -static int -wrap_nettle_mpi_subm(bigint_t w, const bigint_t a, const bigint_t b, - const bigint_t m) +static int wrap_nettle_mpi_subm(bigint_t w, const bigint_t a, const bigint_t b, + const bigint_t m) { mpz_sub(TOMPZ(w), TOMPZ(a), TOMPZ(b)); mpz_fdiv_r(TOMPZ(w), TOMPZ(w), TOMPZ(m)); @@ -258,9 +253,8 @@ wrap_nettle_mpi_subm(bigint_t w, const bigint_t a, const bigint_t b, return 0; } -static int -wrap_nettle_mpi_mulm(bigint_t w, const bigint_t a, const bigint_t b, - const bigint_t m) +static int wrap_nettle_mpi_mulm(bigint_t w, const bigint_t a, const bigint_t b, + const bigint_t m) { mpz_mul(TOMPZ(w), TOMPZ(a), TOMPZ(b)); mpz_fdiv_r(TOMPZ(w), TOMPZ(w), TOMPZ(m)); @@ -327,7 +321,7 @@ static int wrap_nettle_prime_check(bigint_t pp) return 0; } - return GNUTLS_E_INTERNAL_ERROR; /* ignored */ + return GNUTLS_E_INTERNAL_ERROR; /* ignored */ } int crypto_bigint_prio = INT_MAX; diff --git a/lib/nettle/nettle-alloca.h b/lib/nettle/nettle-alloca.h index a8750a8943..96cf026760 100644 --- a/lib/nettle/nettle-alloca.h +++ b/lib/nettle/nettle-alloca.h @@ -33,25 +33,28 @@ */ #ifndef GNUTLS_LIB_NETTLE_GOST_NETTLE_INTERNAL_H -# define GNUTLS_LIB_NETTLE_GOST_NETTLE_INTERNAL_H +#define GNUTLS_LIB_NETTLE_GOST_NETTLE_INTERNAL_H -# ifdef HAVE_CONFIG_H -# include -# endif +#ifdef HAVE_CONFIG_H +#include +#endif /* Temporary allocation, for systems that don't support alloca. Note * that the allocation requests should always be reasonably small, so * that they can fit on the stack. For non-alloca systems, we use a * fix maximum size, and abort if we ever need anything larger. */ -# if HAVE_ALLOCA -# include -# define TMP_DECL(name, type, max) type *name -# define TMP_ALLOC(name, size) (name = alloca(sizeof (*name) * (size))) -# else /* !HAVE_ALLOCA */ -# define TMP_DECL(name, type, max) type name[max] -# define TMP_ALLOC(name, size) \ - do { if ((size) > (sizeof(name) / sizeof(name[0]))) abort(); } while (0) -# endif - -#endif /* GNUTLS_LIB_NETTLE_GOST_NETTLE_INTERNAL_H */ +#if HAVE_ALLOCA +#include +#define TMP_DECL(name, type, max) type *name +#define TMP_ALLOC(name, size) (name = alloca(sizeof(*name) * (size))) +#else /* !HAVE_ALLOCA */ +#define TMP_DECL(name, type, max) type name[max] +#define TMP_ALLOC(name, size) \ + do { \ + if ((size) > (sizeof(name) / sizeof(name[0]))) \ + abort(); \ + } while (0) +#endif + +#endif /* GNUTLS_LIB_NETTLE_GOST_NETTLE_INTERNAL_H */ diff --git a/lib/nettle/pk.c b/lib/nettle/pk.c index bd9c1b4c74..9cf63f7c12 100644 --- a/lib/nettle/pk.c +++ b/lib/nettle/pk.c @@ -52,15 +52,15 @@ #include #include #if ENABLE_GOST -# if NEED_INT_ECC -# include "ecc/gostdsa.h" -# include "ecc-gost-curve.h" -# else -# include -# define gost_point_mul_g ecc_point_mul_g -# define gost_point_set ecc_point_set -# endif -# include "gost/gostdsa2.h" +#if NEED_INT_ECC +#include "ecc/gostdsa.h" +#include "ecc-gost-curve.h" +#else +#include +#define gost_point_mul_g ecc_point_mul_g +#define gost_point_set ecc_point_set +#endif +#include "gost/gostdsa2.h" #endif #include "int/ecdsa-compute-k.h" #include "int/dsa-compute-k.h" @@ -79,34 +79,34 @@ static inline const char *get_supported_nist_curve_modulus(int curve); * is complete. If the macro is true, the operation is to be considered * failed (meaning the random generation failed). */ -static void rnd_key_func(void *_ctx, size_t length, uint8_t * data) +static void rnd_key_func(void *_ctx, size_t length, uint8_t *data) { if (gnutls_rnd(GNUTLS_RND_KEY, data, length) < 0) { _gnutls_switch_lib_state(LIB_STATE_ERROR); } } -static void rnd_tmpkey_func(void *_ctx, size_t length, uint8_t * data) +static void rnd_tmpkey_func(void *_ctx, size_t length, uint8_t *data) { if (gnutls_rnd(GNUTLS_RND_RANDOM, data, length) < 0) { _gnutls_switch_lib_state(LIB_STATE_ERROR); } } -static void rnd_nonce_func(void *_ctx, size_t length, uint8_t * data) +static void rnd_nonce_func(void *_ctx, size_t length, uint8_t *data) { if (gnutls_rnd(GNUTLS_RND_NONCE, data, length) < 0) { _gnutls_switch_lib_state(LIB_STATE_ERROR); } } -static void rnd_mpz_func(void *_ctx, size_t length, uint8_t * data) +static void rnd_mpz_func(void *_ctx, size_t length, uint8_t *data) { mpz_t *k = _ctx; nettle_mpz_get_str_256(length, data, *k); } -static void rnd_nonce_func_fallback(void *_ctx, size_t length, uint8_t * data) +static void rnd_nonce_func_fallback(void *_ctx, size_t length, uint8_t *data) { if (unlikely(_gnutls_get_lib_state() != LIB_STATE_SELFTEST)) { _gnutls_switch_lib_state(LIB_STATE_ERROR); @@ -127,8 +127,8 @@ static void ecc_point_zclear(struct ecc_point *p) ecc_point_clear(p); } -static void -_dsa_params_get(const gnutls_pk_params_st * pk_params, struct dsa_params *pub) +static void _dsa_params_get(const gnutls_pk_params_st *pk_params, + struct dsa_params *pub) { memcpy(pub->p, pk_params->params[DSA_P], SIZEOF_MPZT); @@ -137,9 +137,8 @@ _dsa_params_get(const gnutls_pk_params_st * pk_params, struct dsa_params *pub) memcpy(pub->g, pk_params->params[DSA_G], SIZEOF_MPZT); } -static void -_rsa_params_to_privkey(const gnutls_pk_params_st * pk_params, - struct rsa_private_key *priv) +static void _rsa_params_to_privkey(const gnutls_pk_params_st *pk_params, + struct rsa_private_key *priv) { memcpy(priv->d, pk_params->params[RSA_PRIV], SIZEOF_MPZT); memcpy(priv->p, pk_params->params[RSA_PRIME1], SIZEOF_MPZT); @@ -149,14 +148,13 @@ _rsa_params_to_privkey(const gnutls_pk_params_st * pk_params, memcpy(priv->b, pk_params->params[RSA_E2], SIZEOF_MPZT); /* we do not rsa_private_key_prepare() because it involves a multiplication. * we call it once when we import the parameters */ - priv->size = - nettle_mpz_sizeinbase_256_u(TOMPZ(pk_params->params[RSA_MODULUS])); + priv->size = nettle_mpz_sizeinbase_256_u( + TOMPZ(pk_params->params[RSA_MODULUS])); } /* returns a negative value on invalid pubkey */ -static int -_rsa_params_to_pubkey(const gnutls_pk_params_st * pk_params, - struct rsa_public_key *pub) +static int _rsa_params_to_pubkey(const gnutls_pk_params_st *pk_params, + struct rsa_public_key *pub) { memcpy(pub->n, pk_params->params[RSA_MODULUS], SIZEOF_MPZT); memcpy(pub->e, pk_params->params[RSA_PUB], SIZEOF_MPZT); @@ -166,9 +164,9 @@ _rsa_params_to_pubkey(const gnutls_pk_params_st * pk_params, return 0; } -static int -_ecc_params_to_privkey(const gnutls_pk_params_st * pk_params, - struct ecc_scalar *priv, const struct ecc_curve *curve) +static int _ecc_params_to_privkey(const gnutls_pk_params_st *pk_params, + struct ecc_scalar *priv, + const struct ecc_curve *curve) { ecc_scalar_init(priv, curve); if (ecc_scalar_set(priv, pk_params->params[ECC_K]) == 0) { @@ -179,13 +177,13 @@ _ecc_params_to_privkey(const gnutls_pk_params_st * pk_params, return 0; } -static int -_ecc_params_to_pubkey(const gnutls_pk_params_st * pk_params, - struct ecc_point *pub, const struct ecc_curve *curve) +static int _ecc_params_to_pubkey(const gnutls_pk_params_st *pk_params, + struct ecc_point *pub, + const struct ecc_curve *curve) { ecc_point_init(pub, curve); - if (ecc_point_set - (pub, pk_params->params[ECC_X], pk_params->params[ECC_Y]) == 0) { + if (ecc_point_set(pub, pk_params->params[ECC_X], + pk_params->params[ECC_Y]) == 0) { ecc_point_clear(pub); return gnutls_assert_val(GNUTLS_E_PK_INVALID_PUBKEY); } @@ -194,9 +192,9 @@ _ecc_params_to_pubkey(const gnutls_pk_params_st * pk_params, } #if ENABLE_GOST -static int -_gost_params_to_privkey(const gnutls_pk_params_st * pk_params, - struct ecc_scalar *priv, const struct ecc_curve *curve) +static int _gost_params_to_privkey(const gnutls_pk_params_st *pk_params, + struct ecc_scalar *priv, + const struct ecc_curve *curve) { ecc_scalar_init(priv, curve); if (ecc_scalar_set(priv, pk_params->params[GOST_K]) == 0) { @@ -207,13 +205,13 @@ _gost_params_to_privkey(const gnutls_pk_params_st * pk_params, return 0; } -static int -_gost_params_to_pubkey(const gnutls_pk_params_st * pk_params, - struct ecc_point *pub, const struct ecc_curve *curve) +static int _gost_params_to_pubkey(const gnutls_pk_params_st *pk_params, + struct ecc_point *pub, + const struct ecc_curve *curve) { ecc_point_init(pub, curve); - if (gost_point_set - (pub, pk_params->params[GOST_X], pk_params->params[GOST_Y]) == 0) { + if (gost_point_set(pub, pk_params->params[GOST_X], + pk_params->params[GOST_Y]) == 0) { ecc_point_clear(pub); return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); } @@ -222,9 +220,9 @@ _gost_params_to_pubkey(const gnutls_pk_params_st * pk_params, } #endif -static int -ecc_shared_secret(struct ecc_scalar *private_key, - struct ecc_point *public_key, void *out, unsigned size) +static int ecc_shared_secret(struct ecc_scalar *private_key, + struct ecc_point *public_key, void *out, + unsigned size) { struct ecc_point r; mpz_t x, y; @@ -248,7 +246,7 @@ ecc_shared_secret(struct ecc_scalar *private_key, nettle_mpz_get_str_256(size, out, x); - cleanup: +cleanup: mpz_clear(x); mpz_clear(y); ecc_point_clear(&r); @@ -261,11 +259,10 @@ ecc_shared_secret(struct ecc_scalar *private_key, * of p-1 used by the peer. It is still a conservative * choice, but small than what we've been using before. */ -#define DH_EXPONENT_SIZE(p_size) (2*_gnutls_pk_bits_to_subgroup_bits(p_size)) +#define DH_EXPONENT_SIZE(p_size) (2 * _gnutls_pk_bits_to_subgroup_bits(p_size)) -static inline int -edwards_curve_mul(gnutls_pk_algorithm_t algo, - uint8_t * q, const uint8_t * n, const uint8_t * p) +static inline int edwards_curve_mul(gnutls_pk_algorithm_t algo, uint8_t *q, + const uint8_t *n, const uint8_t *p) { switch (algo) { case GNUTLS_PK_ECDH_X25519: @@ -283,226 +280,215 @@ edwards_curve_mul(gnutls_pk_algorithm_t algo, * it is given the peers Y and our x, and calculates Y^x */ static int _wrap_nettle_pk_derive(gnutls_pk_algorithm_t algo, - gnutls_datum_t * out, - const gnutls_pk_params_st * priv, - const gnutls_pk_params_st * pub, - const gnutls_datum_t * nonce, + gnutls_datum_t *out, + const gnutls_pk_params_st *priv, + const gnutls_pk_params_st *pub, + const gnutls_datum_t *nonce, unsigned int flags) { int ret; bool not_approved = false; switch (algo) { - case GNUTLS_PK_DH:{ - bigint_t f, x, q, prime; - bigint_t k = NULL, primesub1 = NULL, r = NULL; - unsigned int bits; - - if (nonce != NULL) { - ret = - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - goto cleanup; - } + case GNUTLS_PK_DH: { + bigint_t f, x, q, prime; + bigint_t k = NULL, primesub1 = NULL, r = NULL; + unsigned int bits; - f = pub->params[DH_Y]; - x = priv->params[DH_X]; - q = priv->params[DH_Q]; - prime = priv->params[DH_P]; + if (nonce != NULL) { + ret = gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + goto cleanup; + } - ret = _gnutls_mpi_init_multi(&k, &primesub1, &r, NULL); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } + f = pub->params[DH_Y]; + x = priv->params[DH_X]; + q = priv->params[DH_Q]; + prime = priv->params[DH_P]; + + ret = _gnutls_mpi_init_multi(&k, &primesub1, &r, NULL); + if (ret < 0) { + gnutls_assert(); + goto cleanup; + } + + ret = _gnutls_mpi_sub_ui(primesub1, prime, 1); + if (ret < 0) { + gnutls_assert(); + goto dh_cleanup; + } - ret = _gnutls_mpi_sub_ui(primesub1, prime, 1); + /* check if f==0,1, or f >= p-1 */ + if ((_gnutls_mpi_cmp_ui(f, 1) == 0) || + (_gnutls_mpi_cmp_ui(f, 0) == 0) || + (_gnutls_mpi_cmp(f, primesub1) >= 0)) { + gnutls_assert(); + ret = GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER; + goto dh_cleanup; + } + + /* if we have Q check that y ^ q mod p == 1 */ + if (q != NULL) { + ret = _gnutls_mpi_powm(r, f, q, prime); if (ret < 0) { gnutls_assert(); goto dh_cleanup; } - - /* check if f==0,1, or f >= p-1 */ - if ((_gnutls_mpi_cmp_ui(f, 1) == 0) - || (_gnutls_mpi_cmp_ui(f, 0) == 0) - || (_gnutls_mpi_cmp(f, primesub1) >= 0)) { + ret = _gnutls_mpi_cmp_ui(r, 1); + if (ret != 0) { gnutls_assert(); ret = GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER; goto dh_cleanup; } + } else if ((flags & PK_DERIVE_TLS13) && + _gnutls_fips_mode_enabled()) { + /* Mandatory in FIPS mode for TLS 1.3 */ + ret = gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + goto dh_cleanup; + } - /* if we have Q check that y ^ q mod p == 1 */ - if (q != NULL) { - ret = _gnutls_mpi_powm(r, f, q, prime); - if (ret < 0) { - gnutls_assert(); - goto dh_cleanup; - } - ret = _gnutls_mpi_cmp_ui(r, 1); - if (ret != 0) { - gnutls_assert(); - ret = - GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER; - goto dh_cleanup; - } - } else if ((flags & PK_DERIVE_TLS13) && - _gnutls_fips_mode_enabled()) { - /* Mandatory in FIPS mode for TLS 1.3 */ - ret = - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); - goto dh_cleanup; - } - - /* prevent denial of service */ - bits = _gnutls_mpi_get_nbits(prime); - if (bits == 0 || bits > MAX_DH_BITS) { - gnutls_assert(); - ret = GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER; - goto dh_cleanup; - } + /* prevent denial of service */ + bits = _gnutls_mpi_get_nbits(prime); + if (bits == 0 || bits > MAX_DH_BITS) { + gnutls_assert(); + ret = GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER; + goto dh_cleanup; + } - if (bits < 2048) { - not_approved = true; - } + if (bits < 2048) { + not_approved = true; + } - ret = _gnutls_mpi_powm(k, f, x, prime); - if (ret < 0) { - gnutls_assert(); - goto dh_cleanup; - } + ret = _gnutls_mpi_powm(k, f, x, prime); + if (ret < 0) { + gnutls_assert(); + goto dh_cleanup; + } - /* check if k==0,1, or k = p-1 */ - if ((_gnutls_mpi_cmp_ui(k, 1) == 0) - || (_gnutls_mpi_cmp_ui(k, 0) == 0) - || (_gnutls_mpi_cmp(k, primesub1) == 0)) { - ret = - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); - goto dh_cleanup; - } + /* check if k==0,1, or k = p-1 */ + if ((_gnutls_mpi_cmp_ui(k, 1) == 0) || + (_gnutls_mpi_cmp_ui(k, 0) == 0) || + (_gnutls_mpi_cmp(k, primesub1) == 0)) { + ret = gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + goto dh_cleanup; + } - if (flags & PK_DERIVE_TLS13) { - ret = - _gnutls_mpi_dprint_size(k, out, - (bits + 7) / 8); - } else { - ret = _gnutls_mpi_dprint(k, out); - } + if (flags & PK_DERIVE_TLS13) { + ret = _gnutls_mpi_dprint_size(k, out, (bits + 7) / 8); + } else { + ret = _gnutls_mpi_dprint(k, out); + } - if (ret < 0) { - gnutls_assert(); - goto dh_cleanup; - } + if (ret < 0) { + gnutls_assert(); + goto dh_cleanup; + } - ret = 0; - dh_cleanup: - _gnutls_mpi_release(&r); - _gnutls_mpi_release(&primesub1); - zrelease_temp_mpi_key(&k); - if (ret < 0) - goto cleanup; + ret = 0; + dh_cleanup: + _gnutls_mpi_release(&r); + _gnutls_mpi_release(&primesub1); + zrelease_temp_mpi_key(&k); + if (ret < 0) + goto cleanup; - break; - } - case GNUTLS_PK_EC: - { - struct ecc_scalar ecc_priv; - struct ecc_point ecc_pub; - const struct ecc_curve *curve; - struct ecc_scalar n; - struct ecc_scalar m; - struct ecc_point r; - mpz_t x, y, xx, yy, nn, mm; + break; + } + case GNUTLS_PK_EC: { + struct ecc_scalar ecc_priv; + struct ecc_point ecc_pub; + const struct ecc_curve *curve; + struct ecc_scalar n; + struct ecc_scalar m; + struct ecc_point r; + mpz_t x, y, xx, yy, nn, mm; - out->data = NULL; + out->data = NULL; - if (nonce != NULL) { - ret = - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - goto cleanup; - } + if (nonce != NULL) { + ret = gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + goto cleanup; + } - curve = get_supported_nist_curve(priv->curve); - if (curve == NULL) { - ret = - gnutls_assert_val - (GNUTLS_E_ECC_UNSUPPORTED_CURVE); - goto cleanup; - } + curve = get_supported_nist_curve(priv->curve); + if (curve == NULL) { + ret = gnutls_assert_val(GNUTLS_E_ECC_UNSUPPORTED_CURVE); + goto cleanup; + } - /* P-192 is not supported in FIPS 140-3 */ - if (priv->curve == GNUTLS_ECC_CURVE_SECP192R1) { - not_approved = true; - } + /* P-192 is not supported in FIPS 140-3 */ + if (priv->curve == GNUTLS_ECC_CURVE_SECP192R1) { + not_approved = true; + } - mpz_init(x); - mpz_init(y); - mpz_init(xx); - mpz_init(yy); - mpz_init(nn); - mpz_init(mm); + mpz_init(x); + mpz_init(y); + mpz_init(xx); + mpz_init(yy); + mpz_init(nn); + mpz_init(mm); - ecc_scalar_init(&n, curve); - ecc_scalar_init(&m, curve); - ecc_point_init(&r, curve); + ecc_scalar_init(&n, curve); + ecc_scalar_init(&m, curve); + ecc_point_init(&r, curve); - ret = _ecc_params_to_pubkey(pub, &ecc_pub, curve); - if (ret < 0) { - gnutls_assert(); - goto ecc_fail_cleanup; - } + ret = _ecc_params_to_pubkey(pub, &ecc_pub, curve); + if (ret < 0) { + gnutls_assert(); + goto ecc_fail_cleanup; + } - ret = _ecc_params_to_privkey(priv, &ecc_priv, curve); - if (ret < 0) { - ecc_point_clear(&ecc_pub); - gnutls_assert(); - goto ecc_fail_cleanup; - } + ret = _ecc_params_to_privkey(priv, &ecc_priv, curve); + if (ret < 0) { + ecc_point_clear(&ecc_pub); + gnutls_assert(); + goto ecc_fail_cleanup; + } - out->size = gnutls_ecc_curve_get_size(priv->curve); - /*ecc_size(curve)*sizeof(mp_limb_t); */ - out->data = gnutls_malloc(out->size); - if (out->data == NULL) { - ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - goto ecc_cleanup; - } + out->size = gnutls_ecc_curve_get_size(priv->curve); + /*ecc_size(curve)*sizeof(mp_limb_t); */ + out->data = gnutls_malloc(out->size); + if (out->data == NULL) { + ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); + goto ecc_cleanup; + } - /* Perform ECC Full Public-Key Validation Routine + /* Perform ECC Full Public-Key Validation Routine * according to SP800-56A (revision 3), 5.6.2.3.3. */ - /* Step 1: verify that Q is not an identity + /* Step 1: verify that Q is not an identity * element (an infinity point). Note that this * cannot happen in the nettle implementation, * because it cannot represent an infinity point * on curves. */ - ret = ecc_shared_secret(&ecc_priv, &ecc_pub, out->data, - out->size); - if (ret < 0) { - gnutls_free(out->data); - goto ecc_cleanup; - } + ret = ecc_shared_secret(&ecc_priv, &ecc_pub, out->data, + out->size); + if (ret < 0) { + gnutls_free(out->data); + goto ecc_cleanup; + } #ifdef ENABLE_FIPS140 - if (_gnutls_fips_mode_enabled()) { - const char *order, *modulus; + if (_gnutls_fips_mode_enabled()) { + const char *order, *modulus; - ecc_point_mul(&r, &ecc_priv, &ecc_pub); - ecc_point_get(&r, x, y); + ecc_point_mul(&r, &ecc_priv, &ecc_pub); + ecc_point_get(&r, x, y); - /* Step 2: verify that both coordinates of Q are + /* Step 2: verify that both coordinates of Q are * in the range [0, p - 1]. * * Step 3: verify that Q lie on the curve * * Both checks are performed in nettle. */ - if (!ecc_point_set(&r, x, y)) { - ret = - gnutls_assert_val - (GNUTLS_E_ILLEGAL_PARAMETER); - goto ecc_cleanup; - } + if (!ecc_point_set(&r, x, y)) { + ret = gnutls_assert_val( + GNUTLS_E_ILLEGAL_PARAMETER); + goto ecc_cleanup; + } - /* Step 4: verify that n * Q, where n is the + /* Step 4: verify that n * Q, where n is the * curve order, result in an identity element * * Since nettle internally cannot represent an @@ -513,178 +499,164 @@ static int _wrap_nettle_pk_derive(gnutls_pk_algorithm_t algo, * * That effectively means: n * Q = -Q + Q = O */ - order = - get_supported_nist_curve_order(priv->curve); - if (unlikely(order == NULL)) { - ret = - gnutls_assert_val - (GNUTLS_E_INTERNAL_ERROR); - goto ecc_cleanup; - } + order = get_supported_nist_curve_order(priv->curve); + if (unlikely(order == NULL)) { + ret = gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); + goto ecc_cleanup; + } - ret = mpz_set_str(nn, order, 16); - if (unlikely(ret < 0)) { - ret = - gnutls_assert_val - (GNUTLS_E_MPI_SCAN_FAILED); - goto ecc_cleanup; - } + ret = mpz_set_str(nn, order, 16); + if (unlikely(ret < 0)) { + ret = gnutls_assert_val( + GNUTLS_E_MPI_SCAN_FAILED); + goto ecc_cleanup; + } - modulus = - get_supported_nist_curve_modulus - (priv->curve); - if (unlikely(modulus == NULL)) { - ret = - gnutls_assert_val - (GNUTLS_E_INTERNAL_ERROR); - goto ecc_cleanup; - } + modulus = get_supported_nist_curve_modulus(priv->curve); + if (unlikely(modulus == NULL)) { + ret = gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); + goto ecc_cleanup; + } - ret = mpz_set_str(mm, modulus, 16); - if (unlikely(ret < 0)) { - ret = - gnutls_assert_val - (GNUTLS_E_MPI_SCAN_FAILED); - goto ecc_cleanup; - } + ret = mpz_set_str(mm, modulus, 16); + if (unlikely(ret < 0)) { + ret = gnutls_assert_val( + GNUTLS_E_MPI_SCAN_FAILED); + goto ecc_cleanup; + } - /* (n - 1) * Q = -Q */ - mpz_sub_ui(nn, nn, 1); - ecc_scalar_set(&n, nn); - ecc_point_mul(&r, &n, &r); - ecc_point_get(&r, xx, yy); - mpz_sub(mm, mm, y); + /* (n - 1) * Q = -Q */ + mpz_sub_ui(nn, nn, 1); + ecc_scalar_set(&n, nn); + ecc_point_mul(&r, &n, &r); + ecc_point_get(&r, xx, yy); + mpz_sub(mm, mm, y); - if (mpz_cmp(xx, x) != 0 || mpz_cmp(yy, mm) != 0) { - ret = - gnutls_assert_val - (GNUTLS_E_ILLEGAL_PARAMETER); - goto ecc_cleanup; - } - } else { - not_approved = true; + if (mpz_cmp(xx, x) != 0 || mpz_cmp(yy, mm) != 0) { + ret = gnutls_assert_val( + GNUTLS_E_ILLEGAL_PARAMETER); + goto ecc_cleanup; } + } else { + not_approved = true; + } #endif - ecc_cleanup: - ecc_point_clear(&ecc_pub); - ecc_scalar_zclear(&ecc_priv); - ecc_fail_cleanup: - mpz_clear(x); - mpz_clear(y); - mpz_clear(xx); - mpz_clear(yy); - mpz_clear(nn); - mpz_clear(mm); - ecc_point_clear(&r); - ecc_scalar_clear(&n); - ecc_scalar_clear(&m); - if (ret < 0) - goto cleanup; - break; - } + ecc_cleanup: + ecc_point_clear(&ecc_pub); + ecc_scalar_zclear(&ecc_priv); + ecc_fail_cleanup: + mpz_clear(x); + mpz_clear(y); + mpz_clear(xx); + mpz_clear(yy); + mpz_clear(nn); + mpz_clear(mm); + ecc_point_clear(&r); + ecc_scalar_clear(&n); + ecc_scalar_clear(&m); + if (ret < 0) + goto cleanup; + break; + } case GNUTLS_PK_ECDH_X25519: - case GNUTLS_PK_ECDH_X448: - { - unsigned size = gnutls_ecc_curve_get_size(priv->curve); + case GNUTLS_PK_ECDH_X448: { + unsigned size = gnutls_ecc_curve_get_size(priv->curve); - /* Edwards curves are not approved */ - not_approved = true; + /* Edwards curves are not approved */ + not_approved = true; - if (nonce != NULL) { - ret = - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - goto cleanup; - } + if (nonce != NULL) { + ret = gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + goto cleanup; + } - /* The point is in pub, while the private part (scalar) in priv. */ + /* The point is in pub, while the private part (scalar) in priv. */ - if (size == 0 || priv->raw_priv.size != size) { - ret = - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - goto cleanup; - } + if (size == 0 || priv->raw_priv.size != size) { + ret = gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + goto cleanup; + } - out->data = gnutls_malloc(size); - if (out->data == NULL) { - ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - goto cleanup; - } + out->data = gnutls_malloc(size); + if (out->data == NULL) { + ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); + goto cleanup; + } - out->size = size; + out->size = size; - ret = - edwards_curve_mul(algo, out->data, - priv->raw_priv.data, - pub->raw_pub.data); - if (ret < 0) - goto cleanup; + ret = edwards_curve_mul(algo, out->data, priv->raw_priv.data, + pub->raw_pub.data); + if (ret < 0) + goto cleanup; - if (_gnutls_mem_is_zero(out->data, out->size)) { - gnutls_free(out->data); - gnutls_assert(); - ret = GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER; - goto cleanup; - } - break; + if (_gnutls_mem_is_zero(out->data, out->size)) { + gnutls_free(out->data); + gnutls_assert(); + ret = GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER; + goto cleanup; } + break; + } #if ENABLE_GOST case GNUTLS_PK_GOST_01: case GNUTLS_PK_GOST_12_256: - case GNUTLS_PK_GOST_12_512: - { - struct ecc_scalar ecc_priv; - struct ecc_point ecc_pub; - const struct ecc_curve *curve; + case GNUTLS_PK_GOST_12_512: { + struct ecc_scalar ecc_priv; + struct ecc_point ecc_pub; + const struct ecc_curve *curve; - /* GOST curves are not approved */ - not_approved = true; + /* GOST curves are not approved */ + not_approved = true; - out->data = NULL; + out->data = NULL; - curve = get_supported_gost_curve(priv->curve); - if (curve == NULL) { - gnutls_assert(); - ret = GNUTLS_E_ECC_UNSUPPORTED_CURVE; - goto cleanup; - } + curve = get_supported_gost_curve(priv->curve); + if (curve == NULL) { + gnutls_assert(); + ret = GNUTLS_E_ECC_UNSUPPORTED_CURVE; + goto cleanup; + } - if (nonce == NULL) { - gnutls_assert(); - ret = GNUTLS_E_INVALID_REQUEST; - goto cleanup; - } + if (nonce == NULL) { + gnutls_assert(); + ret = GNUTLS_E_INVALID_REQUEST; + goto cleanup; + } - ret = _gost_params_to_pubkey(pub, &ecc_pub, curve); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } + ret = _gost_params_to_pubkey(pub, &ecc_pub, curve); + if (ret < 0) { + gnutls_assert(); + goto cleanup; + } - ret = _gost_params_to_privkey(priv, &ecc_priv, curve); - if (ret < 0) { - ecc_point_clear(&ecc_pub); - gnutls_assert(); - goto cleanup; - } + ret = _gost_params_to_privkey(priv, &ecc_priv, curve); + if (ret < 0) { + ecc_point_clear(&ecc_pub); + gnutls_assert(); + goto cleanup; + } - out->size = 2 * gnutls_ecc_curve_get_size(priv->curve); - out->data = gnutls_malloc(out->size); - if (out->data == NULL) { - ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - goto gost_cleanup; - } + out->size = 2 * gnutls_ecc_curve_get_size(priv->curve); + out->data = gnutls_malloc(out->size); + if (out->data == NULL) { + ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); + goto gost_cleanup; + } - gostdsa_vko(&ecc_priv, &ecc_pub, - nonce->size, nonce->data, out->data); + gostdsa_vko(&ecc_priv, &ecc_pub, nonce->size, nonce->data, + out->data); - gost_cleanup: - ecc_point_clear(&ecc_pub); - ecc_scalar_zclear(&ecc_priv); - if (ret < 0) - goto cleanup; - break; - } + gost_cleanup: + ecc_point_clear(&ecc_pub); + ecc_scalar_zclear(&ecc_priv); + if (ret < 0) + goto cleanup; + break; + } #endif default: gnutls_assert(); @@ -694,7 +666,7 @@ static int _wrap_nettle_pk_derive(gnutls_pk_algorithm_t algo, ret = 0; - cleanup: +cleanup: if (ret < 0) { _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); } else if (not_approved) { @@ -706,11 +678,10 @@ static int _wrap_nettle_pk_derive(gnutls_pk_algorithm_t algo, return ret; } -static int -_wrap_nettle_pk_encrypt(gnutls_pk_algorithm_t algo, - gnutls_datum_t * ciphertext, - const gnutls_datum_t * plaintext, - const gnutls_pk_params_st * pk_params) +static int _wrap_nettle_pk_encrypt(gnutls_pk_algorithm_t algo, + gnutls_datum_t *ciphertext, + const gnutls_datum_t *plaintext, + const gnutls_pk_params_st *pk_params) { int ret; mpz_t p; @@ -720,39 +691,35 @@ _wrap_nettle_pk_encrypt(gnutls_pk_algorithm_t algo, mpz_init(p); switch (algo) { - case GNUTLS_PK_RSA: - { - struct rsa_public_key pub; - nettle_random_func *random_func; - - ret = _rsa_params_to_pubkey(pk_params, &pub); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } + case GNUTLS_PK_RSA: { + struct rsa_public_key pub; + nettle_random_func *random_func; - if (_gnutls_get_lib_state() == LIB_STATE_SELFTEST) - random_func = rnd_nonce_func_fallback; - else - random_func = rnd_nonce_func; - ret = - rsa_encrypt(&pub, NULL, random_func, - plaintext->size, plaintext->data, p); - if (ret == 0 || HAVE_LIB_ERROR()) { - ret = - gnutls_assert_val - (GNUTLS_E_ENCRYPTION_FAILED); - goto cleanup; - } + ret = _rsa_params_to_pubkey(pk_params, &pub); + if (ret < 0) { + gnutls_assert(); + goto cleanup; + } - ret = _gnutls_mpi_dprint_size(p, ciphertext, pub.size); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } + if (_gnutls_get_lib_state() == LIB_STATE_SELFTEST) + random_func = rnd_nonce_func_fallback; + else + random_func = rnd_nonce_func; + ret = rsa_encrypt(&pub, NULL, random_func, plaintext->size, + plaintext->data, p); + if (ret == 0 || HAVE_LIB_ERROR()) { + ret = gnutls_assert_val(GNUTLS_E_ENCRYPTION_FAILED); + goto cleanup; + } - break; + ret = _gnutls_mpi_dprint_size(p, ciphertext, pub.size); + if (ret < 0) { + gnutls_assert(); + goto cleanup; } + + break; + } default: gnutls_assert(); ret = GNUTLS_E_INVALID_REQUEST; @@ -761,7 +728,7 @@ _wrap_nettle_pk_encrypt(gnutls_pk_algorithm_t algo, ret = 0; - cleanup: +cleanup: if (ret < 0) { _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); } else { @@ -774,11 +741,10 @@ _wrap_nettle_pk_encrypt(gnutls_pk_algorithm_t algo, return ret; } -static int -_wrap_nettle_pk_decrypt(gnutls_pk_algorithm_t algo, - gnutls_datum_t * plaintext, - const gnutls_datum_t * ciphertext, - const gnutls_pk_params_st * pk_params) +static int _wrap_nettle_pk_decrypt(gnutls_pk_algorithm_t algo, + gnutls_datum_t *plaintext, + const gnutls_datum_t *ciphertext, + const gnutls_pk_params_st *pk_params) { int ret; @@ -788,61 +754,54 @@ _wrap_nettle_pk_decrypt(gnutls_pk_algorithm_t algo, /* make a sexp from pkey */ switch (algo) { - case GNUTLS_PK_RSA: - { - struct rsa_private_key priv; - struct rsa_public_key pub; - size_t length; - bigint_t c; - nettle_random_func *random_func; - - _rsa_params_to_privkey(pk_params, &priv); - ret = _rsa_params_to_pubkey(pk_params, &pub); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } + case GNUTLS_PK_RSA: { + struct rsa_private_key priv; + struct rsa_public_key pub; + size_t length; + bigint_t c; + nettle_random_func *random_func; - if (ciphertext->size != pub.size) { - ret = - gnutls_assert_val - (GNUTLS_E_DECRYPTION_FAILED); - goto cleanup; - } + _rsa_params_to_privkey(pk_params, &priv); + ret = _rsa_params_to_pubkey(pk_params, &pub); + if (ret < 0) { + gnutls_assert(); + goto cleanup; + } - if (_gnutls_mpi_init_scan_nz - (&c, ciphertext->data, ciphertext->size) != 0) { - ret = - gnutls_assert_val(GNUTLS_E_MPI_SCAN_FAILED); - goto cleanup; - } + if (ciphertext->size != pub.size) { + ret = gnutls_assert_val(GNUTLS_E_DECRYPTION_FAILED); + goto cleanup; + } - length = pub.size; - plaintext->data = gnutls_malloc(length); - if (plaintext->data == NULL) { - ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - goto cleanup; - } + if (_gnutls_mpi_init_scan_nz(&c, ciphertext->data, + ciphertext->size) != 0) { + ret = gnutls_assert_val(GNUTLS_E_MPI_SCAN_FAILED); + goto cleanup; + } - if (_gnutls_get_lib_state() == LIB_STATE_SELFTEST) - random_func = rnd_nonce_func_fallback; - else - random_func = rnd_nonce_func; - ret = - rsa_decrypt_tr(&pub, &priv, NULL, random_func, - &length, plaintext->data, TOMPZ(c)); - _gnutls_mpi_release(&c); - plaintext->size = length; - - if (ret == 0 || HAVE_LIB_ERROR()) { - ret = - gnutls_assert_val - (GNUTLS_E_DECRYPTION_FAILED); - goto cleanup; - } + length = pub.size; + plaintext->data = gnutls_malloc(length); + if (plaintext->data == NULL) { + ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); + goto cleanup; + } - break; + if (_gnutls_get_lib_state() == LIB_STATE_SELFTEST) + random_func = rnd_nonce_func_fallback; + else + random_func = rnd_nonce_func; + ret = rsa_decrypt_tr(&pub, &priv, NULL, random_func, &length, + plaintext->data, TOMPZ(c)); + _gnutls_mpi_release(&c); + plaintext->size = length; + + if (ret == 0 || HAVE_LIB_ERROR()) { + ret = gnutls_assert_val(GNUTLS_E_DECRYPTION_FAILED); + goto cleanup; } + + break; + } default: gnutls_assert(); ret = GNUTLS_E_INTERNAL_ERROR; @@ -851,7 +810,7 @@ _wrap_nettle_pk_decrypt(gnutls_pk_algorithm_t algo, ret = 0; - cleanup: +cleanup: if (ret < 0) { gnutls_free(plaintext->data); _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); @@ -866,12 +825,11 @@ _wrap_nettle_pk_decrypt(gnutls_pk_algorithm_t algo, /* Note: we do not allocate in this function to avoid asymettric * unallocation (which creates a side channel) in case of failure * */ -static int -_wrap_nettle_pk_decrypt2(gnutls_pk_algorithm_t algo, - const gnutls_datum_t * ciphertext, - unsigned char *plaintext, - size_t plaintext_size, - const gnutls_pk_params_st * pk_params) +static int _wrap_nettle_pk_decrypt2(gnutls_pk_algorithm_t algo, + const gnutls_datum_t *ciphertext, + unsigned char *plaintext, + size_t plaintext_size, + const gnutls_pk_params_st *pk_params) { struct rsa_private_key priv; struct rsa_public_key pub; @@ -899,8 +857,8 @@ _wrap_nettle_pk_decrypt2(gnutls_pk_algorithm_t algo, goto fail; } - if (_gnutls_mpi_init_scan_nz(&c, ciphertext->data, - ciphertext->size) != 0) { + if (_gnutls_mpi_init_scan_nz(&c, ciphertext->data, ciphertext->size) != + 0) { ret = gnutls_assert_val(GNUTLS_E_MPI_SCAN_FAILED); goto fail; } @@ -909,8 +867,8 @@ _wrap_nettle_pk_decrypt2(gnutls_pk_algorithm_t algo, random_func = rnd_nonce_func_fallback; else random_func = rnd_nonce_func; - ret = rsa_sec_decrypt(&pub, &priv, NULL, random_func, - plaintext_size, plaintext, TOMPZ(c)); + ret = rsa_sec_decrypt(&pub, &priv, NULL, random_func, plaintext_size, + plaintext, TOMPZ(c)); /* The decrypt operation is infallible; treat the approved * operation as complete at this point, regardless of any @@ -932,27 +890,27 @@ _wrap_nettle_pk_decrypt2(gnutls_pk_algorithm_t algo, /* then return GNUTLS_E_DECRYPTION_FAILED */ return (int)((is_err * UINT_MAX) & GNUTLS_E_DECRYPTION_FAILED); - fail: +fail: _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); return ret; } #define CHECK_INVALID_RSA_PSS_PARAMS(dig_size, salt_size, pub_size, err) \ - if (unlikely(dig_size + salt_size + 2 > pub_size)) \ - return gnutls_assert_val(err) - -static int -_rsa_pss_sign_digest_tr(gnutls_digest_algorithm_t dig, - const struct rsa_public_key *pub, - const struct rsa_private_key *priv, - void *rnd_ctx, nettle_random_func * rnd_func, - size_t salt_size, const uint8_t * digest, mpz_t s) + if (unlikely(dig_size + salt_size + 2 > pub_size)) \ + return gnutls_assert_val(err) + +static int _rsa_pss_sign_digest_tr(gnutls_digest_algorithm_t dig, + const struct rsa_public_key *pub, + const struct rsa_private_key *priv, + void *rnd_ctx, nettle_random_func *rnd_func, + size_t salt_size, const uint8_t *digest, + mpz_t s) { int (*sign_func)(const struct rsa_public_key *, - const struct rsa_private_key *, - void *, nettle_random_func *, - size_t, const uint8_t *, const uint8_t *, mpz_t); + const struct rsa_private_key *, void *, + nettle_random_func *, size_t, const uint8_t *, + const uint8_t *, mpz_t); uint8_t *salt = NULL; size_t hash_size; int ret; @@ -991,15 +949,15 @@ _rsa_pss_sign_digest_tr(gnutls_digest_algorithm_t dig, } } - ret = sign_func(pub, priv, rnd_ctx, rnd_func, salt_size, salt, - digest, s); + ret = sign_func(pub, priv, rnd_ctx, rnd_func, salt_size, salt, digest, + s); if (ret == 0) { gnutls_assert(); ret = GNUTLS_E_PK_SIGN_FAILED; } else ret = 0; - cleanup: +cleanup: gnutls_free(salt); return ret; } @@ -1028,11 +986,9 @@ static inline gnutls_ecc_curve_t get_ecdh_curve(gnutls_pk_algorithm_t algo) } } -static inline int -eddsa_sign(gnutls_pk_algorithm_t algo, - const uint8_t * pub, - const uint8_t * priv, - size_t length, const uint8_t * msg, uint8_t * signature) +static inline int eddsa_sign(gnutls_pk_algorithm_t algo, const uint8_t *pub, + const uint8_t *priv, size_t length, + const uint8_t *msg, uint8_t *signature) { switch (algo) { case GNUTLS_PK_EDDSA_ED25519: @@ -1042,8 +998,8 @@ eddsa_sign(gnutls_pk_algorithm_t algo, ed448_shake256_sign(pub, priv, length, msg, signature); return 0; default: - return - gnutls_assert_val(GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM); + return gnutls_assert_val( + GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM); } } @@ -1055,12 +1011,11 @@ eddsa_sign(gnutls_pk_algorithm_t algo, * * in case of EC/DSA, signed data are encoded into r,s values */ -static int -_wrap_nettle_pk_sign(gnutls_pk_algorithm_t algo, - gnutls_datum_t * signature, - const gnutls_datum_t * vdata, - const gnutls_pk_params_st * pk_params, - const gnutls_x509_spki_st * sign_params) +static int _wrap_nettle_pk_sign(gnutls_pk_algorithm_t algo, + gnutls_datum_t *signature, + const gnutls_datum_t *vdata, + const gnutls_pk_params_st *pk_params, + const gnutls_x509_spki_st *sign_params) { int ret; unsigned int hash_len; @@ -1086,390 +1041,358 @@ _wrap_nettle_pk_sign(gnutls_pk_algorithm_t algo, } switch (algo) { - case GNUTLS_PK_EDDSA_ED25519: /* we do EdDSA */ - case GNUTLS_PK_EDDSA_ED448: - { - const gnutls_ecc_curve_entry_st *e; + case GNUTLS_PK_EDDSA_ED25519: /* we do EdDSA */ + case GNUTLS_PK_EDDSA_ED448: { + const gnutls_ecc_curve_entry_st *e; - /* EdDSA is not approved yet */ - not_approved = true; + /* EdDSA is not approved yet */ + not_approved = true; - if (unlikely(get_eddsa_curve(algo) != pk_params->curve)) { - ret = - gnutls_assert_val - (GNUTLS_E_ECC_UNSUPPORTED_CURVE); - goto cleanup; - } + if (unlikely(get_eddsa_curve(algo) != pk_params->curve)) { + ret = gnutls_assert_val(GNUTLS_E_ECC_UNSUPPORTED_CURVE); + goto cleanup; + } - e = _gnutls_ecc_curve_get_params(pk_params->curve); - if (e == NULL) { - ret = - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - goto cleanup; - } + e = _gnutls_ecc_curve_get_params(pk_params->curve); + if (e == NULL) { + ret = gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + goto cleanup; + } - signature->data = gnutls_malloc(e->sig_size); - if (signature->data == NULL) { - ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - goto cleanup; - } + signature->data = gnutls_malloc(e->sig_size); + if (signature->data == NULL) { + ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); + goto cleanup; + } - signature->size = e->sig_size; + signature->size = e->sig_size; - if (pk_params->raw_pub.size != e->size - || pk_params->raw_priv.size != e->size) { - ret = - gnutls_assert_val(GNUTLS_E_PK_SIGN_FAILED); - goto cleanup; - } + if (pk_params->raw_pub.size != e->size || + pk_params->raw_priv.size != e->size) { + ret = gnutls_assert_val(GNUTLS_E_PK_SIGN_FAILED); + goto cleanup; + } - ret = eddsa_sign(algo, - pk_params->raw_pub.data, - pk_params->raw_priv.data, - vdata->size, vdata->data, - signature->data); - if (ret < 0) - goto cleanup; + ret = eddsa_sign(algo, pk_params->raw_pub.data, + pk_params->raw_priv.data, vdata->size, + vdata->data, signature->data); + if (ret < 0) + goto cleanup; - break; - } + break; + } #if ENABLE_GOST case GNUTLS_PK_GOST_01: case GNUTLS_PK_GOST_12_256: - case GNUTLS_PK_GOST_12_512: - { - struct ecc_scalar priv; - struct dsa_signature sig; - const struct ecc_curve *curve; + case GNUTLS_PK_GOST_12_512: { + struct ecc_scalar priv; + struct dsa_signature sig; + const struct ecc_curve *curve; - /* GOSTDSA is not approved */ - not_approved = true; + /* GOSTDSA is not approved */ + not_approved = true; - curve = get_supported_gost_curve(pk_params->curve); - if (curve == NULL) { - ret = - gnutls_assert_val - (GNUTLS_E_ECC_UNSUPPORTED_CURVE); - goto cleanup; - } + curve = get_supported_gost_curve(pk_params->curve); + if (curve == NULL) { + ret = gnutls_assert_val(GNUTLS_E_ECC_UNSUPPORTED_CURVE); + goto cleanup; + } - ret = _ecc_params_to_privkey(pk_params, &priv, curve); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } + ret = _ecc_params_to_privkey(pk_params, &priv, curve); + if (ret < 0) { + gnutls_assert(); + goto cleanup; + } - /* This call will return a valid MAC entry and + /* This call will return a valid MAC entry and * getters will check that is not null anyway. */ - me = hash_to_entry(_gnutls_gost_digest - (pk_params->algo)); - if (_gnutls_mac_get_algo_len(me) != vdata->size) { - _gnutls_debug_log - ("Security level of algorithm requires hash %s(%zd)\n", - _gnutls_mac_get_name(me), - _gnutls_mac_get_algo_len(me)); - ret = - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - goto cleanup; - } + me = hash_to_entry(_gnutls_gost_digest(pk_params->algo)); + if (_gnutls_mac_get_algo_len(me) != vdata->size) { + _gnutls_debug_log( + "Security level of algorithm requires hash %s(%zd)\n", + _gnutls_mac_get_name(me), + _gnutls_mac_get_algo_len(me)); + ret = gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + goto cleanup; + } - dsa_signature_init(&sig); + dsa_signature_init(&sig); - gostdsa_sign(&priv, NULL, rnd_tmpkey_func, - vdata->size, vdata->data, &sig); + gostdsa_sign(&priv, NULL, rnd_tmpkey_func, vdata->size, + vdata->data, &sig); - ret = - _gnutls_encode_gost_rs(signature, &sig.r, &sig.s, - (ecc_bit_size(curve) + - 7) / 8); + ret = _gnutls_encode_gost_rs(signature, &sig.r, &sig.s, + (ecc_bit_size(curve) + 7) / 8); - dsa_signature_clear(&sig); - ecc_scalar_zclear(&priv); + dsa_signature_clear(&sig); + ecc_scalar_zclear(&priv); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } - break; + if (ret < 0) { + gnutls_assert(); + goto cleanup; } + break; + } #endif - case GNUTLS_PK_ECDSA: /* we do ECDSA */ - { - struct ecc_scalar priv; - struct dsa_signature sig; - int curve_id = pk_params->curve; - const struct ecc_curve *curve; - mpz_t k; - void *random_ctx; - nettle_random_func *random_func; - - curve = get_supported_nist_curve(curve_id); - if (curve == NULL) { - ret = - gnutls_assert_val - (GNUTLS_E_ECC_UNSUPPORTED_CURVE); - goto cleanup; - } + case GNUTLS_PK_ECDSA: /* we do ECDSA */ + { + struct ecc_scalar priv; + struct dsa_signature sig; + int curve_id = pk_params->curve; + const struct ecc_curve *curve; + mpz_t k; + void *random_ctx; + nettle_random_func *random_func; - /* P-192 is not supported in FIPS 140-3 */ - if (curve_id == GNUTLS_ECC_CURVE_SECP192R1) { - not_approved = true; - } + curve = get_supported_nist_curve(curve_id); + if (curve == NULL) { + ret = gnutls_assert_val(GNUTLS_E_ECC_UNSUPPORTED_CURVE); + goto cleanup; + } - ret = _ecc_params_to_privkey(pk_params, &priv, curve); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } + /* P-192 is not supported in FIPS 140-3 */ + if (curve_id == GNUTLS_ECC_CURVE_SECP192R1) { + not_approved = true; + } - dsa_signature_init(&sig); + ret = _ecc_params_to_privkey(pk_params, &priv, curve); + if (ret < 0) { + gnutls_assert(); + goto cleanup; + } - me = _gnutls_dsa_q_to_hash(pk_params, &hash_len); + dsa_signature_init(&sig); - if (hash_len > vdata->size) { - gnutls_assert(); - _gnutls_debug_log - ("Security level of algorithm requires hash %s(%d) or better\n", - _gnutls_mac_get_name(me), hash_len); - hash_len = vdata->size; - } + me = _gnutls_dsa_q_to_hash(pk_params, &hash_len); - /* Only SHA-2 is allowed in FIPS 140-3 */ - switch (DIG_TO_MAC(sign_params->dsa_dig)) { - case GNUTLS_MAC_SHA256: - case GNUTLS_MAC_SHA384: - case GNUTLS_MAC_SHA512: - case GNUTLS_MAC_SHA224: - break; - default: - not_approved = true; - } + if (hash_len > vdata->size) { + gnutls_assert(); + _gnutls_debug_log( + "Security level of algorithm requires hash %s(%d) or better\n", + _gnutls_mac_get_name(me), hash_len); + hash_len = vdata->size; + } - mpz_init(k); - if (_gnutls_get_lib_state() == LIB_STATE_SELFTEST || - (sign_params->flags & GNUTLS_PK_FLAG_REPRODUCIBLE)) - { - ret = - _gnutls_ecdsa_compute_k(k, curve_id, - pk_params->params - [ECC_K], - DIG_TO_MAC - (sign_params->dsa_dig), - vdata->data, - vdata->size); - if (ret < 0) - goto ecdsa_cleanup; - random_ctx = &k; - random_func = rnd_mpz_func; - } else { - random_ctx = NULL; - random_func = rnd_nonce_func; - } - ecdsa_sign(&priv, random_ctx, random_func, hash_len, - vdata->data, &sig); + /* Only SHA-2 is allowed in FIPS 140-3 */ + switch (DIG_TO_MAC(sign_params->dsa_dig)) { + case GNUTLS_MAC_SHA256: + case GNUTLS_MAC_SHA384: + case GNUTLS_MAC_SHA512: + case GNUTLS_MAC_SHA224: + break; + default: + not_approved = true; + } - /* prevent memory leaks */ - if (HAVE_LIB_ERROR()) { - ret = GNUTLS_E_LIB_IN_ERROR_STATE; + mpz_init(k); + if (_gnutls_get_lib_state() == LIB_STATE_SELFTEST || + (sign_params->flags & GNUTLS_PK_FLAG_REPRODUCIBLE)) { + ret = _gnutls_ecdsa_compute_k( + k, curve_id, pk_params->params[ECC_K], + DIG_TO_MAC(sign_params->dsa_dig), vdata->data, + vdata->size); + if (ret < 0) goto ecdsa_cleanup; - } + random_ctx = &k; + random_func = rnd_mpz_func; + } else { + random_ctx = NULL; + random_func = rnd_nonce_func; + } + ecdsa_sign(&priv, random_ctx, random_func, hash_len, + vdata->data, &sig); - ret = _gnutls_encode_ber_rs(signature, &sig.r, &sig.s); + /* prevent memory leaks */ + if (HAVE_LIB_ERROR()) { + ret = GNUTLS_E_LIB_IN_ERROR_STATE; + goto ecdsa_cleanup; + } - ecdsa_cleanup: - dsa_signature_clear(&sig); - ecc_scalar_zclear(&priv); - mpz_clear(k); + ret = _gnutls_encode_ber_rs(signature, &sig.r, &sig.s); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } - break; + ecdsa_cleanup: + dsa_signature_clear(&sig); + ecc_scalar_zclear(&priv); + mpz_clear(k); + + if (ret < 0) { + gnutls_assert(); + goto cleanup; } - case GNUTLS_PK_DSA: - { - struct dsa_params pub; - bigint_t priv; - struct dsa_signature sig; - mpz_t k; - void *random_ctx; - nettle_random_func *random_func; + break; + } + case GNUTLS_PK_DSA: { + struct dsa_params pub; + bigint_t priv; + struct dsa_signature sig; + mpz_t k; + void *random_ctx; + nettle_random_func *random_func; - /* DSA is currently being defined as sunset with the + /* DSA is currently being defined as sunset with the * current draft of FIPS 186-5 */ - not_approved = true; + not_approved = true; - memset(&priv, 0, sizeof(priv)); - memset(&pub, 0, sizeof(pub)); - _dsa_params_get(pk_params, &pub); + memset(&priv, 0, sizeof(priv)); + memset(&pub, 0, sizeof(pub)); + _dsa_params_get(pk_params, &pub); - priv = pk_params->params[DSA_X]; + priv = pk_params->params[DSA_X]; - dsa_signature_init(&sig); + dsa_signature_init(&sig); - me = _gnutls_dsa_q_to_hash(pk_params, &hash_len); + me = _gnutls_dsa_q_to_hash(pk_params, &hash_len); - if (hash_len > vdata->size) { - gnutls_assert(); - _gnutls_debug_log - ("Security level of algorithm requires hash %s(%d) or better (have: %d)\n", - _gnutls_mac_get_name(me), hash_len, - (int)vdata->size); - hash_len = vdata->size; - } + if (hash_len > vdata->size) { + gnutls_assert(); + _gnutls_debug_log( + "Security level of algorithm requires hash %s(%d) or better (have: %d)\n", + _gnutls_mac_get_name(me), hash_len, + (int)vdata->size); + hash_len = vdata->size; + } - mpz_init(k); - if (_gnutls_get_lib_state() == LIB_STATE_SELFTEST || - (sign_params->flags & GNUTLS_PK_FLAG_REPRODUCIBLE)) - { - ret = - _gnutls_dsa_compute_k(k, pub.q, TOMPZ(priv), - DIG_TO_MAC - (sign_params->dsa_dig), - vdata->data, - vdata->size); - if (ret < 0) - goto dsa_fail; - /* cancel-out dsa_sign's addition of 1 to random data */ - mpz_sub_ui(k, k, 1); - random_ctx = &k; - random_func = rnd_mpz_func; - } else { - random_ctx = NULL; - random_func = rnd_nonce_func; - } - ret = - dsa_sign(&pub, TOMPZ(priv), random_ctx, random_func, - hash_len, vdata->data, &sig); - if (ret == 0 || HAVE_LIB_ERROR()) { - gnutls_assert(); - ret = GNUTLS_E_PK_SIGN_FAILED; + mpz_init(k); + if (_gnutls_get_lib_state() == LIB_STATE_SELFTEST || + (sign_params->flags & GNUTLS_PK_FLAG_REPRODUCIBLE)) { + ret = _gnutls_dsa_compute_k( + k, pub.q, TOMPZ(priv), + DIG_TO_MAC(sign_params->dsa_dig), vdata->data, + vdata->size); + if (ret < 0) goto dsa_fail; - } + /* cancel-out dsa_sign's addition of 1 to random data */ + mpz_sub_ui(k, k, 1); + random_ctx = &k; + random_func = rnd_mpz_func; + } else { + random_ctx = NULL; + random_func = rnd_nonce_func; + } + ret = dsa_sign(&pub, TOMPZ(priv), random_ctx, random_func, + hash_len, vdata->data, &sig); + if (ret == 0 || HAVE_LIB_ERROR()) { + gnutls_assert(); + ret = GNUTLS_E_PK_SIGN_FAILED; + goto dsa_fail; + } - ret = _gnutls_encode_ber_rs(signature, &sig.r, &sig.s); + ret = _gnutls_encode_ber_rs(signature, &sig.r, &sig.s); - dsa_fail: - dsa_signature_clear(&sig); - mpz_clear(k); + dsa_fail: + dsa_signature_clear(&sig); + mpz_clear(k); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } - break; + if (ret < 0) { + gnutls_assert(); + goto cleanup; } - case GNUTLS_PK_RSA: - { - struct rsa_private_key priv; - struct rsa_public_key pub; - nettle_random_func *random_func; - mpz_t s; + break; + } + case GNUTLS_PK_RSA: { + struct rsa_private_key priv; + struct rsa_public_key pub; + nettle_random_func *random_func; + mpz_t s; - _rsa_params_to_privkey(pk_params, &priv); + _rsa_params_to_privkey(pk_params, &priv); - ret = _rsa_params_to_pubkey(pk_params, &pub); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } + ret = _rsa_params_to_pubkey(pk_params, &pub); + if (ret < 0) { + gnutls_assert(); + goto cleanup; + } - /* RSA modulus size should be 2048-bit or larger in FIPS + /* RSA modulus size should be 2048-bit or larger in FIPS * 140-3. In addition to this, only SHA-2 is allowed * for SigGen; it is checked in pk_prepare_hash lib/pk.c */ - if (unlikely(mpz_sizeinbase(pub.n, 2) < 2048)) { - not_approved = true; - } - - mpz_init(s); + if (unlikely(mpz_sizeinbase(pub.n, 2) < 2048)) { + not_approved = true; + } - if (_gnutls_get_lib_state() == LIB_STATE_SELFTEST) - random_func = rnd_nonce_func_fallback; - else - random_func = rnd_nonce_func; - ret = - rsa_pkcs1_sign_tr(&pub, &priv, NULL, random_func, - vdata->size, vdata->data, s); - if (ret == 0 || HAVE_LIB_ERROR()) { - gnutls_assert(); - ret = GNUTLS_E_PK_SIGN_FAILED; - goto rsa_fail; - } + mpz_init(s); - ret = _gnutls_mpi_dprint_size(s, signature, pub.size); + if (_gnutls_get_lib_state() == LIB_STATE_SELFTEST) + random_func = rnd_nonce_func_fallback; + else + random_func = rnd_nonce_func; + ret = rsa_pkcs1_sign_tr(&pub, &priv, NULL, random_func, + vdata->size, vdata->data, s); + if (ret == 0 || HAVE_LIB_ERROR()) { + gnutls_assert(); + ret = GNUTLS_E_PK_SIGN_FAILED; + goto rsa_fail; + } - rsa_fail: - mpz_clear(s); + ret = _gnutls_mpi_dprint_size(s, signature, pub.size); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } + rsa_fail: + mpz_clear(s); - break; + if (ret < 0) { + gnutls_assert(); + goto cleanup; } - case GNUTLS_PK_RSA_PSS: - { - struct rsa_private_key priv; - struct rsa_public_key pub; - mpz_t s; - _rsa_params_to_privkey(pk_params, &priv); + break; + } + case GNUTLS_PK_RSA_PSS: { + struct rsa_private_key priv; + struct rsa_public_key pub; + mpz_t s; - ret = _rsa_params_to_pubkey(pk_params, &pub); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } + _rsa_params_to_privkey(pk_params, &priv); - /* RSA modulus size should be 2048-bit or larger in FIPS + ret = _rsa_params_to_pubkey(pk_params, &pub); + if (ret < 0) { + gnutls_assert(); + goto cleanup; + } + + /* RSA modulus size should be 2048-bit or larger in FIPS * 140-3. In addition to this, only SHA-2 is allowed * for SigGen; however, Nettle only support SHA256, * SHA384, and SHA512 for RSA-PSS (see * _rsa_pss_sign_digest_tr in this file for details). */ - if (unlikely(mpz_sizeinbase(pub.n, 2) < 2048)) { - not_approved = true; - } + if (unlikely(mpz_sizeinbase(pub.n, 2) < 2048)) { + not_approved = true; + } - mpz_init(s); + mpz_init(s); - me = hash_to_entry(sign_params->rsa_pss_dig); + me = hash_to_entry(sign_params->rsa_pss_dig); - /* According to FIPS 186-5 5.4, the salt length must be + /* According to FIPS 186-5 5.4, the salt length must be * in the range between 0 and the hash length inclusive. */ - if (sign_params->salt_size > - _gnutls_mac_get_algo_len(me)) { - not_approved = true; - } - - ret = - _rsa_pss_sign_digest_tr(sign_params->rsa_pss_dig, - &pub, &priv, - NULL, rnd_nonce_func, - sign_params->salt_size, - vdata->data, s); - if (ret < 0) { - gnutls_assert(); - ret = GNUTLS_E_PK_SIGN_FAILED; - goto rsa_pss_fail; - } + if (sign_params->salt_size > _gnutls_mac_get_algo_len(me)) { + not_approved = true; + } - ret = _gnutls_mpi_dprint_size(s, signature, pub.size); + ret = _rsa_pss_sign_digest_tr(sign_params->rsa_pss_dig, &pub, + &priv, NULL, rnd_nonce_func, + sign_params->salt_size, + vdata->data, s); + if (ret < 0) { + gnutls_assert(); + ret = GNUTLS_E_PK_SIGN_FAILED; + goto rsa_pss_fail; + } - rsa_pss_fail: - mpz_clear(s); + ret = _gnutls_mpi_dprint_size(s, signature, pub.size); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } + rsa_pss_fail: + mpz_clear(s); - break; + if (ret < 0) { + gnutls_assert(); + goto cleanup; } + + break; + } default: gnutls_assert(); ret = GNUTLS_E_INTERNAL_ERROR; @@ -1478,7 +1401,7 @@ _wrap_nettle_pk_sign(gnutls_pk_algorithm_t algo, ret = 0; - cleanup: +cleanup: if (ret < 0) { _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); } else if (not_approved) { @@ -1491,15 +1414,13 @@ _wrap_nettle_pk_sign(gnutls_pk_algorithm_t algo, return ret; } -static int -_rsa_pss_verify_digest(gnutls_digest_algorithm_t dig, - const struct rsa_public_key *pub, - size_t salt_size, - const uint8_t * digest, - size_t digest_size, const mpz_t s) +static int _rsa_pss_verify_digest(gnutls_digest_algorithm_t dig, + const struct rsa_public_key *pub, + size_t salt_size, const uint8_t *digest, + size_t digest_size, const mpz_t s) { - int (*verify_func)(const struct rsa_public_key *, - size_t, const uint8_t *, const mpz_t); + int (*verify_func)(const struct rsa_public_key *, size_t, + const uint8_t *, const mpz_t); size_t hash_size; switch (dig) { @@ -1528,10 +1449,9 @@ _rsa_pss_verify_digest(gnutls_digest_algorithm_t dig, return verify_func(pub, salt_size, digest, s); } -static inline int -eddsa_verify(gnutls_pk_algorithm_t algo, - const uint8_t * pub, - size_t length, const uint8_t * msg, const uint8_t * signature) +static inline int eddsa_verify(gnutls_pk_algorithm_t algo, const uint8_t *pub, + size_t length, const uint8_t *msg, + const uint8_t *signature) { int ret; @@ -1547,17 +1467,16 @@ eddsa_verify(gnutls_pk_algorithm_t algo, return gnutls_assert_val(GNUTLS_E_PK_SIG_VERIFY_FAILED); return 0; default: - return - gnutls_assert_val(GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM); + return gnutls_assert_val( + GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM); } } -static int -_wrap_nettle_pk_verify(gnutls_pk_algorithm_t algo, - const gnutls_datum_t * vdata, - const gnutls_datum_t * signature, - const gnutls_pk_params_st * pk_params, - const gnutls_x509_spki_st * sign_params) +static int _wrap_nettle_pk_verify(gnutls_pk_algorithm_t algo, + const gnutls_datum_t *vdata, + const gnutls_datum_t *signature, + const gnutls_pk_params_st *pk_params, + const gnutls_x509_spki_st *sign_params) { int ret; unsigned int hash_len; @@ -1573,221 +1492,194 @@ _wrap_nettle_pk_verify(gnutls_pk_algorithm_t algo, } switch (algo) { - case GNUTLS_PK_EDDSA_ED25519: /* we do EdDSA */ - case GNUTLS_PK_EDDSA_ED448: - { - const gnutls_ecc_curve_entry_st *e; - - /* EdDSA is not approved yet */ - not_approved = true; + case GNUTLS_PK_EDDSA_ED25519: /* we do EdDSA */ + case GNUTLS_PK_EDDSA_ED448: { + const gnutls_ecc_curve_entry_st *e; - if (unlikely(get_eddsa_curve(algo) != pk_params->curve)) { - ret = - gnutls_assert_val - (GNUTLS_E_ECC_UNSUPPORTED_CURVE); - goto cleanup; - } + /* EdDSA is not approved yet */ + not_approved = true; - e = _gnutls_ecc_curve_get_params(pk_params->curve); - if (e == NULL) { - ret = - gnutls_assert_val - (GNUTLS_E_ECC_UNSUPPORTED_CURVE); - goto cleanup; - } + if (unlikely(get_eddsa_curve(algo) != pk_params->curve)) { + ret = gnutls_assert_val(GNUTLS_E_ECC_UNSUPPORTED_CURVE); + goto cleanup; + } - if (signature->size != e->sig_size) { - ret = - gnutls_assert_val - (GNUTLS_E_PK_SIG_VERIFY_FAILED); - goto cleanup; - } + e = _gnutls_ecc_curve_get_params(pk_params->curve); + if (e == NULL) { + ret = gnutls_assert_val(GNUTLS_E_ECC_UNSUPPORTED_CURVE); + goto cleanup; + } - if (pk_params->raw_pub.size != e->size) { - ret = - gnutls_assert_val(GNUTLS_E_PK_SIGN_FAILED); - goto cleanup; - } + if (signature->size != e->sig_size) { + ret = gnutls_assert_val(GNUTLS_E_PK_SIG_VERIFY_FAILED); + goto cleanup; + } - ret = eddsa_verify(algo, - pk_params->raw_pub.data, - vdata->size, vdata->data, - signature->data); - break; + if (pk_params->raw_pub.size != e->size) { + ret = gnutls_assert_val(GNUTLS_E_PK_SIGN_FAILED); + goto cleanup; } + + ret = eddsa_verify(algo, pk_params->raw_pub.data, vdata->size, + vdata->data, signature->data); + break; + } #if ENABLE_GOST case GNUTLS_PK_GOST_01: case GNUTLS_PK_GOST_12_256: - case GNUTLS_PK_GOST_12_512: - { - struct ecc_point pub; - struct dsa_signature sig; - const struct ecc_curve *curve; - const mac_entry_st *me; + case GNUTLS_PK_GOST_12_512: { + struct ecc_point pub; + struct dsa_signature sig; + const struct ecc_curve *curve; + const mac_entry_st *me; - /* GOSTDSA is not approved */ - not_approved = true; + /* GOSTDSA is not approved */ + not_approved = true; - curve = get_supported_gost_curve(pk_params->curve); - if (curve == NULL) { - ret = - gnutls_assert_val - (GNUTLS_E_ECC_UNSUPPORTED_CURVE); - goto cleanup; - } + curve = get_supported_gost_curve(pk_params->curve); + if (curve == NULL) { + ret = gnutls_assert_val(GNUTLS_E_ECC_UNSUPPORTED_CURVE); + goto cleanup; + } - /* This call will return a valid MAC entry and + /* This call will return a valid MAC entry and * getters will check that is not null anyway. */ - me = hash_to_entry(_gnutls_gost_digest - (pk_params->algo)); - if (_gnutls_mac_get_algo_len(me) != vdata->size) { - ret = - gnutls_assert_val - (GNUTLS_E_PK_SIG_VERIFY_FAILED); - goto cleanup; - } + me = hash_to_entry(_gnutls_gost_digest(pk_params->algo)); + if (_gnutls_mac_get_algo_len(me) != vdata->size) { + ret = gnutls_assert_val(GNUTLS_E_PK_SIG_VERIFY_FAILED); + goto cleanup; + } - ret = - _gnutls_decode_gost_rs(signature, &tmp[0], &tmp[1]); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } + ret = _gnutls_decode_gost_rs(signature, &tmp[0], &tmp[1]); + if (ret < 0) { + gnutls_assert(); + goto cleanup; + } - ret = _gost_params_to_pubkey(pk_params, &pub, curve); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } + ret = _gost_params_to_pubkey(pk_params, &pub, curve); + if (ret < 0) { + gnutls_assert(); + goto cleanup; + } - memcpy(sig.r, tmp[0], SIZEOF_MPZT); - memcpy(sig.s, tmp[1], SIZEOF_MPZT); + memcpy(sig.r, tmp[0], SIZEOF_MPZT); + memcpy(sig.s, tmp[1], SIZEOF_MPZT); - ret = - gostdsa_verify(&pub, vdata->size, vdata->data, - &sig); - if (ret == 0) { - gnutls_assert(); - ret = GNUTLS_E_PK_SIG_VERIFY_FAILED; - } else - ret = 0; + ret = gostdsa_verify(&pub, vdata->size, vdata->data, &sig); + if (ret == 0) { + gnutls_assert(); + ret = GNUTLS_E_PK_SIG_VERIFY_FAILED; + } else + ret = 0; - ecc_point_clear(&pub); - break; - } + ecc_point_clear(&pub); + break; + } #endif - case GNUTLS_PK_ECDSA: /* ECDSA */ - { - struct ecc_point pub; - struct dsa_signature sig; - int curve_id = pk_params->curve; - const struct ecc_curve *curve; + case GNUTLS_PK_ECDSA: /* ECDSA */ + { + struct ecc_point pub; + struct dsa_signature sig; + int curve_id = pk_params->curve; + const struct ecc_curve *curve; - curve = get_supported_nist_curve(curve_id); - if (curve == NULL) { - ret = - gnutls_assert_val - (GNUTLS_E_ECC_UNSUPPORTED_CURVE); - goto cleanup; - } + curve = get_supported_nist_curve(curve_id); + if (curve == NULL) { + ret = gnutls_assert_val(GNUTLS_E_ECC_UNSUPPORTED_CURVE); + goto cleanup; + } - ret = - _gnutls_decode_ber_rs(signature, &tmp[0], &tmp[1]); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } + ret = _gnutls_decode_ber_rs(signature, &tmp[0], &tmp[1]); + if (ret < 0) { + gnutls_assert(); + goto cleanup; + } - ret = _ecc_params_to_pubkey(pk_params, &pub, curve); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } + ret = _ecc_params_to_pubkey(pk_params, &pub, curve); + if (ret < 0) { + gnutls_assert(); + goto cleanup; + } - memcpy(sig.r, tmp[0], SIZEOF_MPZT); - memcpy(sig.s, tmp[1], SIZEOF_MPZT); + memcpy(sig.r, tmp[0], SIZEOF_MPZT); + memcpy(sig.s, tmp[1], SIZEOF_MPZT); - (void)_gnutls_dsa_q_to_hash(pk_params, &hash_len); + (void)_gnutls_dsa_q_to_hash(pk_params, &hash_len); - if (hash_len > vdata->size) - hash_len = vdata->size; + if (hash_len > vdata->size) + hash_len = vdata->size; - /* SHA-1 is allowed for SigVer in FIPS 140-3 in legacy + /* SHA-1 is allowed for SigVer in FIPS 140-3 in legacy * mode */ - switch (DIG_TO_MAC(sign_params->dsa_dig)) { - case GNUTLS_MAC_SHA1: - case GNUTLS_MAC_SHA256: - case GNUTLS_MAC_SHA384: - case GNUTLS_MAC_SHA512: - case GNUTLS_MAC_SHA224: - break; - default: - not_approved = true; - } - - ret = ecdsa_verify(&pub, hash_len, vdata->data, &sig); - if (ret == 0) { - gnutls_assert(); - ret = GNUTLS_E_PK_SIG_VERIFY_FAILED; - } else - ret = 0; - - ecc_point_clear(&pub); + switch (DIG_TO_MAC(sign_params->dsa_dig)) { + case GNUTLS_MAC_SHA1: + case GNUTLS_MAC_SHA256: + case GNUTLS_MAC_SHA384: + case GNUTLS_MAC_SHA512: + case GNUTLS_MAC_SHA224: break; + default: + not_approved = true; } - case GNUTLS_PK_DSA: - { - struct dsa_params pub; - struct dsa_signature sig; - bigint_t y; - /* DSA is currently being defined as sunset with the + ret = ecdsa_verify(&pub, hash_len, vdata->data, &sig); + if (ret == 0) { + gnutls_assert(); + ret = GNUTLS_E_PK_SIG_VERIFY_FAILED; + } else + ret = 0; + + ecc_point_clear(&pub); + break; + } + case GNUTLS_PK_DSA: { + struct dsa_params pub; + struct dsa_signature sig; + bigint_t y; + + /* DSA is currently being defined as sunset with the * current draft of FIPS 186-5 */ - not_approved = true; + not_approved = true; + + ret = _gnutls_decode_ber_rs(signature, &tmp[0], &tmp[1]); + if (ret < 0) { + gnutls_assert(); + goto cleanup; + } + memset(&pub, 0, sizeof(pub)); + _dsa_params_get(pk_params, &pub); + y = pk_params->params[DSA_Y]; - ret = - _gnutls_decode_ber_rs(signature, &tmp[0], &tmp[1]); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } - memset(&pub, 0, sizeof(pub)); - _dsa_params_get(pk_params, &pub); - y = pk_params->params[DSA_Y]; + memcpy(sig.r, tmp[0], SIZEOF_MPZT); + memcpy(sig.s, tmp[1], SIZEOF_MPZT); - memcpy(sig.r, tmp[0], SIZEOF_MPZT); - memcpy(sig.s, tmp[1], SIZEOF_MPZT); + _gnutls_dsa_q_to_hash(pk_params, &hash_len); - _gnutls_dsa_q_to_hash(pk_params, &hash_len); + if (hash_len > vdata->size) + hash_len = vdata->size; - if (hash_len > vdata->size) - hash_len = vdata->size; + ret = dsa_verify(&pub, TOMPZ(y), hash_len, vdata->data, &sig); + if (ret == 0) { + gnutls_assert(); + ret = GNUTLS_E_PK_SIG_VERIFY_FAILED; + } else + ret = 0; - ret = - dsa_verify(&pub, TOMPZ(y), hash_len, vdata->data, - &sig); - if (ret == 0) { - gnutls_assert(); - ret = GNUTLS_E_PK_SIG_VERIFY_FAILED; - } else - ret = 0; + break; + } + case GNUTLS_PK_RSA: { + struct rsa_public_key pub; + size_t bits; - break; + ret = _rsa_params_to_pubkey(pk_params, &pub); + if (ret < 0) { + gnutls_assert(); + goto cleanup; } - case GNUTLS_PK_RSA: - { - struct rsa_public_key pub; - size_t bits; - ret = _rsa_params_to_pubkey(pk_params, &pub); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } + bits = mpz_sizeinbase(pub.n, 2); - bits = mpz_sizeinbase(pub.n, 2); - - /* In FIPS 140-3, RSA key size should be larger than + /* In FIPS 140-3, RSA key size should be larger than * 2048-bit or one of the known lengths (1024, 1280, * 1536, 1792; i.e., multiple of 256-bits). * @@ -1795,104 +1687,88 @@ _wrap_nettle_pk_verify(gnutls_pk_algorithm_t algo, * for SigVer; it is checked in _pkcs1_rsa_verify_sig in * lib/pubkey.c. */ - if (unlikely(bits < 2048 && - bits != 1024 && bits != 1280 && - bits != 1536 && bits != 1792)) { - not_approved = true; - } + if (unlikely(bits < 2048 && bits != 1024 && bits != 1280 && + bits != 1536 && bits != 1792)) { + not_approved = true; + } - if (signature->size != pub.size) { - ret = - gnutls_assert_val - (GNUTLS_E_PK_SIG_VERIFY_FAILED); - goto cleanup; - } + if (signature->size != pub.size) { + ret = gnutls_assert_val(GNUTLS_E_PK_SIG_VERIFY_FAILED); + goto cleanup; + } - ret = - _gnutls_mpi_init_scan_nz(&tmp[0], signature->data, - signature->size); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } + ret = _gnutls_mpi_init_scan_nz(&tmp[0], signature->data, + signature->size); + if (ret < 0) { + gnutls_assert(); + goto cleanup; + } - ret = - rsa_pkcs1_verify(&pub, vdata->size, - vdata->data, TOMPZ(tmp[0])); - if (ret == 0) - ret = - gnutls_assert_val - (GNUTLS_E_PK_SIG_VERIFY_FAILED); - else - ret = 0; + ret = rsa_pkcs1_verify(&pub, vdata->size, vdata->data, + TOMPZ(tmp[0])); + if (ret == 0) + ret = gnutls_assert_val(GNUTLS_E_PK_SIG_VERIFY_FAILED); + else + ret = 0; - break; + break; + } + case GNUTLS_PK_RSA_PSS: { + struct rsa_public_key pub; + + if ((sign_params->flags & + GNUTLS_PK_FLAG_RSA_PSS_FIXED_SALT_LENGTH) && + sign_params->salt_size != vdata->size) { + ret = gnutls_assert_val(GNUTLS_E_PK_SIG_VERIFY_FAILED); + goto cleanup; } - case GNUTLS_PK_RSA_PSS: - { - struct rsa_public_key pub; - - if ((sign_params->flags & - GNUTLS_PK_FLAG_RSA_PSS_FIXED_SALT_LENGTH) && - sign_params->salt_size != vdata->size) { - ret = - gnutls_assert_val - (GNUTLS_E_PK_SIG_VERIFY_FAILED); - goto cleanup; - } - ret = _rsa_params_to_pubkey(pk_params, &pub); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } + ret = _rsa_params_to_pubkey(pk_params, &pub); + if (ret < 0) { + gnutls_assert(); + goto cleanup; + } - /* RSA modulus size should be 2048-bit or larger in FIPS + /* RSA modulus size should be 2048-bit or larger in FIPS * 140-3. In addition to this, only SHA-1 and SHA-2 are * allowed for SigVer, while Nettle only supports * SHA256, SHA384, and SHA512 for RSA-PSS (see * _rsa_pss_verify_digest in this file for the details). */ - if (unlikely(mpz_sizeinbase(pub.n, 2) < 2048)) { - not_approved = true; - } + if (unlikely(mpz_sizeinbase(pub.n, 2) < 2048)) { + not_approved = true; + } - if (signature->size != pub.size) { - ret = - gnutls_assert_val - (GNUTLS_E_PK_SIG_VERIFY_FAILED); - goto cleanup; - } + if (signature->size != pub.size) { + ret = gnutls_assert_val(GNUTLS_E_PK_SIG_VERIFY_FAILED); + goto cleanup; + } - ret = - _gnutls_mpi_init_scan_nz(&tmp[0], signature->data, - signature->size); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } + ret = _gnutls_mpi_init_scan_nz(&tmp[0], signature->data, + signature->size); + if (ret < 0) { + gnutls_assert(); + goto cleanup; + } - ret = _rsa_pss_verify_digest(sign_params->rsa_pss_dig, - &pub, - sign_params->salt_size, - vdata->data, vdata->size, - TOMPZ(tmp[0])); - if (ret == 0) - ret = - gnutls_assert_val - (GNUTLS_E_PK_SIG_VERIFY_FAILED); - else - ret = 0; + ret = _rsa_pss_verify_digest(sign_params->rsa_pss_dig, &pub, + sign_params->salt_size, + vdata->data, vdata->size, + TOMPZ(tmp[0])); + if (ret == 0) + ret = gnutls_assert_val(GNUTLS_E_PK_SIG_VERIFY_FAILED); + else + ret = 0; - break; - } + break; + } default: gnutls_assert(); ret = GNUTLS_E_INTERNAL_ERROR; goto cleanup; } - cleanup: +cleanup: if (ret < 0) { _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); } else if (not_approved) { @@ -1934,23 +1810,23 @@ static inline const char *get_supported_nist_curve_order(int curve) const char *order; } orders[] = { #ifdef ENABLE_NON_SUITEB_CURVES - {GNUTLS_ECC_CURVE_SECP192R1, - "ffffffffffffffffffffffff99def836" "146bc9b1b4d22831"}, - {GNUTLS_ECC_CURVE_SECP224R1, - "ffffffffffffffffffffffffffff16a2" "e0b8f03e13dd29455c5c2a3d"}, + { GNUTLS_ECC_CURVE_SECP192R1, "ffffffffffffffffffffffff99def836" + "146bc9b1b4d22831" }, + { GNUTLS_ECC_CURVE_SECP224R1, "ffffffffffffffffffffffffffff16a2" + "e0b8f03e13dd29455c5c2a3d" }, #endif - {GNUTLS_ECC_CURVE_SECP256R1, - "ffffffff00000000ffffffffffffffff" - "bce6faada7179e84f3b9cac2fc632551"}, - {GNUTLS_ECC_CURVE_SECP384R1, - "ffffffffffffffffffffffffffffffff" - "ffffffffffffffffc7634d81f4372ddf" - "581a0db248b0a77aecec196accc52973"}, - {GNUTLS_ECC_CURVE_SECP521R1, - "1fffffffffffffffffffffffffffffff" - "ffffffffffffffffffffffffffffffff" - "ffa51868783bf2f966b7fcc0148f709a" - "5d03bb5c9b8899c47aebb6fb71e91386" "409"}, + { GNUTLS_ECC_CURVE_SECP256R1, + "ffffffff00000000ffffffffffffffff" + "bce6faada7179e84f3b9cac2fc632551" }, + { GNUTLS_ECC_CURVE_SECP384R1, + "ffffffffffffffffffffffffffffffff" + "ffffffffffffffffc7634d81f4372ddf" + "581a0db248b0a77aecec196accc52973" }, + { GNUTLS_ECC_CURVE_SECP521R1, "1fffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffff" + "ffa51868783bf2f966b7fcc0148f709a" + "5d03bb5c9b8899c47aebb6fb71e91386" + "409" }, }; size_t i; @@ -1968,24 +1844,24 @@ static inline const char *get_supported_nist_curve_modulus(int curve) const char *order; } orders[] = { #ifdef ENABLE_NON_SUITEB_CURVES - {GNUTLS_ECC_CURVE_SECP192R1, - "fffffffffffffffffffffffffffffffe" "ffffffffffffffff"}, - {GNUTLS_ECC_CURVE_SECP224R1, - "ffffffffffffffffffffffffffffffff" "000000000000000000000001"}, + { GNUTLS_ECC_CURVE_SECP192R1, "fffffffffffffffffffffffffffffffe" + "ffffffffffffffff" }, + { GNUTLS_ECC_CURVE_SECP224R1, "ffffffffffffffffffffffffffffffff" + "000000000000000000000001" }, #endif - {GNUTLS_ECC_CURVE_SECP256R1, - "ffffffff000000010000000000000000" - "00000000ffffffffffffffffffffffff"}, - {GNUTLS_ECC_CURVE_SECP384R1, - "ffffffffffffffffffffffffffffffff" - "fffffffffffffffffffffffffffffffe" - "ffffffff0000000000000000ffffffff"}, - {GNUTLS_ECC_CURVE_SECP521R1, - "1ff" - "ffffffffffffffffffffffffffffffff" - "ffffffffffffffffffffffffffffffff" - "ffffffffffffffffffffffffffffffff" - "ffffffffffffffffffffffffffffffff"}, + { GNUTLS_ECC_CURVE_SECP256R1, + "ffffffff000000010000000000000000" + "00000000ffffffffffffffffffffffff" }, + { GNUTLS_ECC_CURVE_SECP384R1, + "ffffffffffffffffffffffffffffffff" + "fffffffffffffffffffffffffffffffe" + "ffffffff0000000000000000ffffffff" }, + { GNUTLS_ECC_CURVE_SECP521R1, + "1ff" + "ffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffff" + "ffffffffffffffffffffffffffffffff" }, }; size_t i; @@ -2022,7 +1898,9 @@ static int _wrap_nettle_pk_curve_exists(gnutls_ecc_curve_t curve) return 1; default: return ((get_supported_nist_curve(curve) != NULL || - get_supported_gost_curve(curve) != NULL) ? 1 : 0); + get_supported_gost_curve(curve) != NULL) ? + 1 : + 0); } } @@ -2115,10 +1993,9 @@ static int _wrap_nettle_pk_sign_exists(gnutls_sign_algorithm_t sign) * For RSA: nothing * For ECDSA/EDDSA: nothing */ -static int -wrap_nettle_pk_generate_params(gnutls_pk_algorithm_t algo, - unsigned int level /*bits or curve */ , - gnutls_pk_params_st * params) +static int wrap_nettle_pk_generate_params(gnutls_pk_algorithm_t algo, + unsigned int level /*bits or curve */, + gnutls_pk_params_st *params) { int ret; unsigned int i, q_bits; @@ -2129,122 +2006,109 @@ wrap_nettle_pk_generate_params(gnutls_pk_algorithm_t algo, switch (algo) { case GNUTLS_PK_DSA: - case GNUTLS_PK_DH: - { - struct dsa_params pub; - struct dss_params_validation_seeds cert; - unsigned index; - - dsa_params_init(&pub); + case GNUTLS_PK_DH: { + struct dsa_params pub; + struct dss_params_validation_seeds cert; + unsigned index; + + dsa_params_init(&pub); + + if (GNUTLS_BITS_HAVE_SUBGROUP(level)) { + q_bits = GNUTLS_BITS_TO_SUBGROUP(level); + level = GNUTLS_BITS_TO_GROUP(level); + } else { + q_bits = _gnutls_pk_bits_to_subgroup_bits(level); + } - if (GNUTLS_BITS_HAVE_SUBGROUP(level)) { - q_bits = GNUTLS_BITS_TO_SUBGROUP(level); - level = GNUTLS_BITS_TO_GROUP(level); - } else { - q_bits = - _gnutls_pk_bits_to_subgroup_bits(level); - } + if (q_bits == 0) + return gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER); - if (q_bits == 0) - return - gnutls_assert_val - (GNUTLS_E_ILLEGAL_PARAMETER); - - if (_gnutls_fips_mode_enabled() != 0 - || params->pkflags & GNUTLS_PK_FLAG_PROVABLE) { - if (algo == GNUTLS_PK_DSA) - index = 1; - else - index = 2; - - if (params->palgo != 0 - && params->palgo != GNUTLS_DIG_SHA384) { - ret = GNUTLS_E_INVALID_REQUEST; - goto dsa_fail; - } + if (_gnutls_fips_mode_enabled() != 0 || + params->pkflags & GNUTLS_PK_FLAG_PROVABLE) { + if (algo == GNUTLS_PK_DSA) + index = 1; + else + index = 2; - params->palgo = GNUTLS_DIG_SHA384; - - if (params->seed_size) { - ret = - _dsa_generate_dss_pqg(&pub, &cert, - index, - params->seed_size, - params->seed, - NULL, NULL, - level, - q_bits); - } else { - ret = - dsa_generate_dss_pqg(&pub, &cert, - index, NULL, - rnd_tmpkey_func, - NULL, NULL, - level, q_bits); - } - if (ret != 1 || HAVE_LIB_ERROR()) { - gnutls_assert(); - ret = GNUTLS_E_PK_GENERATION_ERROR; - goto dsa_fail; - } + if (params->palgo != 0 && + params->palgo != GNUTLS_DIG_SHA384) { + ret = GNUTLS_E_INVALID_REQUEST; + goto dsa_fail; + } - if (cert.seed_length - && cert.seed_length < - sizeof(params->seed)) { - params->seed_size = cert.seed_length; - memcpy(params->seed, cert.seed, - cert.seed_length); - } + params->palgo = GNUTLS_DIG_SHA384; - /* verify the generated parameters */ - ret = dsa_validate_dss_pqg(&pub, &cert, index); - if (ret != 1) { - gnutls_assert(); - ret = GNUTLS_E_PK_GENERATION_ERROR; - goto dsa_fail; - } + if (params->seed_size) { + ret = _dsa_generate_dss_pqg(&pub, &cert, index, + params->seed_size, + params->seed, NULL, + NULL, level, + q_bits); } else { - if (q_bits < 160) - q_bits = 160; - - ret = - dsa_generate_params(&pub, NULL, - rnd_tmpkey_func, NULL, - NULL, level, q_bits); - if (ret != 1 || HAVE_LIB_ERROR()) { - gnutls_assert(); - ret = GNUTLS_E_PK_GENERATION_ERROR; - goto dsa_fail; - } + ret = dsa_generate_dss_pqg(&pub, &cert, index, + NULL, + rnd_tmpkey_func, + NULL, NULL, level, + q_bits); + } + if (ret != 1 || HAVE_LIB_ERROR()) { + gnutls_assert(); + ret = GNUTLS_E_PK_GENERATION_ERROR; + goto dsa_fail; + } + + if (cert.seed_length && + cert.seed_length < sizeof(params->seed)) { + params->seed_size = cert.seed_length; + memcpy(params->seed, cert.seed, + cert.seed_length); } - params->params_nr = 0; + /* verify the generated parameters */ + ret = dsa_validate_dss_pqg(&pub, &cert, index); + if (ret != 1) { + gnutls_assert(); + ret = GNUTLS_E_PK_GENERATION_ERROR; + goto dsa_fail; + } + } else { + if (q_bits < 160) + q_bits = 160; - ret = - _gnutls_mpi_init_multi(¶ms->params[DSA_P], - ¶ms->params[DSA_Q], - ¶ms->params[DSA_G], - NULL); - if (ret < 0) { + ret = dsa_generate_params(&pub, NULL, rnd_tmpkey_func, + NULL, NULL, level, q_bits); + if (ret != 1 || HAVE_LIB_ERROR()) { gnutls_assert(); + ret = GNUTLS_E_PK_GENERATION_ERROR; goto dsa_fail; } - params->params_nr = 3; + } - mpz_set(TOMPZ(params->params[DSA_P]), pub.p); - mpz_set(TOMPZ(params->params[DSA_Q]), pub.q); - mpz_set(TOMPZ(params->params[DSA_G]), pub.g); + params->params_nr = 0; - ret = 0; + ret = _gnutls_mpi_init_multi(¶ms->params[DSA_P], + ¶ms->params[DSA_Q], + ¶ms->params[DSA_G], NULL); + if (ret < 0) { + gnutls_assert(); + goto dsa_fail; + } + params->params_nr = 3; - dsa_fail: - dsa_params_clear(&pub); + mpz_set(TOMPZ(params->params[DSA_P]), pub.p); + mpz_set(TOMPZ(params->params[DSA_Q]), pub.q); + mpz_set(TOMPZ(params->params[DSA_G]), pub.g); - if (ret < 0) - goto fail; + ret = 0; - break; - } + dsa_fail: + dsa_params_clear(&pub); + + if (ret < 0) + goto fail; + + break; + } case GNUTLS_PK_RSA_PSS: case GNUTLS_PK_RSA: case GNUTLS_PK_ECDSA: @@ -2266,7 +2130,7 @@ wrap_nettle_pk_generate_params(gnutls_pk_algorithm_t algo, FAIL_IF_LIB_ERROR; return 0; - fail: +fail: for (i = 0; i < params->params_nr; i++) { _gnutls_mpi_release(¶ms->params[i]); @@ -2279,26 +2143,23 @@ wrap_nettle_pk_generate_params(gnutls_pk_algorithm_t algo, #ifdef ENABLE_FIPS140 int _gnutls_dh_generate_key(gnutls_dh_params_t dh_params, - gnutls_datum_t * priv_key, - gnutls_datum_t * pub_key); + gnutls_datum_t *priv_key, gnutls_datum_t *pub_key); int _gnutls_dh_compute_key(gnutls_dh_params_t dh_params, - const gnutls_datum_t * priv_key, - const gnutls_datum_t * pub_key, - const gnutls_datum_t * peer_key, gnutls_datum_t * Z); + const gnutls_datum_t *priv_key, + const gnutls_datum_t *pub_key, + const gnutls_datum_t *peer_key, gnutls_datum_t *Z); -int _gnutls_ecdh_compute_key(gnutls_ecc_curve_t curve, - const gnutls_datum_t * x, const gnutls_datum_t * y, - const gnutls_datum_t * k, - const gnutls_datum_t * peer_x, - const gnutls_datum_t * peer_y, gnutls_datum_t * Z); +int _gnutls_ecdh_compute_key(gnutls_ecc_curve_t curve, const gnutls_datum_t *x, + const gnutls_datum_t *y, const gnutls_datum_t *k, + const gnutls_datum_t *peer_x, + const gnutls_datum_t *peer_y, gnutls_datum_t *Z); -int _gnutls_ecdh_generate_key(gnutls_ecc_curve_t curve, - gnutls_datum_t * x, gnutls_datum_t * y, - gnutls_datum_t * k); +int _gnutls_ecdh_generate_key(gnutls_ecc_curve_t curve, gnutls_datum_t *x, + gnutls_datum_t *y, gnutls_datum_t *k); int _gnutls_dh_generate_key(gnutls_dh_params_t dh_params, - gnutls_datum_t * priv_key, gnutls_datum_t * pub_key) + gnutls_datum_t *priv_key, gnutls_datum_t *pub_key) { gnutls_pk_params_st params; int ret; @@ -2313,9 +2174,8 @@ int _gnutls_dh_generate_key(gnutls_dh_params_t dh_params, priv_key->data = NULL; pub_key->data = NULL; - ret = - _gnutls_pk_generate_keys(GNUTLS_PK_DH, dh_params->q_bits, ¶ms, - 0); + ret = _gnutls_pk_generate_keys(GNUTLS_PK_DH, dh_params->q_bits, ¶ms, + 0); if (ret < 0) { return gnutls_assert_val(ret); } @@ -2334,10 +2194,10 @@ int _gnutls_dh_generate_key(gnutls_dh_params_t dh_params, ret = 0; goto cleanup; - fail: +fail: gnutls_free(pub_key->data); gnutls_free(priv_key->data); - cleanup: +cleanup: gnutls_pk_params_clear(¶ms); gnutls_pk_params_release(¶ms); return ret; @@ -2346,9 +2206,9 @@ int _gnutls_dh_generate_key(gnutls_dh_params_t dh_params, /* Note that the value of Z will have the leading bytes stripped if they are zero - * which follows the TLS approach. */ int _gnutls_dh_compute_key(gnutls_dh_params_t dh_params, - const gnutls_datum_t * priv_key, - const gnutls_datum_t * pub_key, - const gnutls_datum_t * peer_key, gnutls_datum_t * Z) + const gnutls_datum_t *priv_key, + const gnutls_datum_t *pub_key, + const gnutls_datum_t *peer_key, gnutls_datum_t *Z) { gnutls_pk_params_st pub, priv; int ret; @@ -2361,8 +2221,8 @@ int _gnutls_dh_compute_key(gnutls_dh_params_t dh_params, priv.params_nr = 5; priv.algo = GNUTLS_PK_DH; - if (_gnutls_mpi_init_scan_nz - (&pub.params[DH_Y], peer_key->data, peer_key->size) != 0) { + if (_gnutls_mpi_init_scan_nz(&pub.params[DH_Y], peer_key->data, + peer_key->size) != 0) { ret = gnutls_assert_val(GNUTLS_E_MPI_SCAN_FAILED); goto cleanup; } @@ -2372,8 +2232,8 @@ int _gnutls_dh_compute_key(gnutls_dh_params_t dh_params, if (dh_params->params[2]) priv.params[DH_Q] = _gnutls_mpi_copy(dh_params->params[2]); - if (_gnutls_mpi_init_scan_nz - (&priv.params[DH_X], priv_key->data, priv_key->size) != 0) { + if (_gnutls_mpi_init_scan_nz(&priv.params[DH_X], priv_key->data, + priv_key->size) != 0) { ret = gnutls_assert_val(GNUTLS_E_MPI_SCAN_FAILED); goto cleanup; } @@ -2387,7 +2247,7 @@ int _gnutls_dh_compute_key(gnutls_dh_params_t dh_params, } ret = 0; - cleanup: +cleanup: gnutls_pk_params_clear(&pub); gnutls_pk_params_release(&pub); gnutls_pk_params_clear(&priv); @@ -2395,9 +2255,8 @@ int _gnutls_dh_compute_key(gnutls_dh_params_t dh_params, return ret; } -int _gnutls_ecdh_generate_key(gnutls_ecc_curve_t curve, - gnutls_datum_t * x, gnutls_datum_t * y, - gnutls_datum_t * k) +int _gnutls_ecdh_generate_key(gnutls_ecc_curve_t curve, gnutls_datum_t *x, + gnutls_datum_t *y, gnutls_datum_t *k) { gnutls_pk_params_st params; int ret; @@ -2436,21 +2295,20 @@ int _gnutls_ecdh_generate_key(gnutls_ecc_curve_t curve, ret = 0; goto cleanup; - fail: +fail: gnutls_free(y->data); gnutls_free(x->data); gnutls_free(k->data); - cleanup: +cleanup: gnutls_pk_params_clear(¶ms); gnutls_pk_params_release(¶ms); return ret; } -int _gnutls_ecdh_compute_key(gnutls_ecc_curve_t curve, - const gnutls_datum_t * x, const gnutls_datum_t * y, - const gnutls_datum_t * k, - const gnutls_datum_t * peer_x, - const gnutls_datum_t * peer_y, gnutls_datum_t * Z) +int _gnutls_ecdh_compute_key(gnutls_ecc_curve_t curve, const gnutls_datum_t *x, + const gnutls_datum_t *y, const gnutls_datum_t *k, + const gnutls_datum_t *peer_x, + const gnutls_datum_t *peer_y, gnutls_datum_t *Z) { gnutls_pk_params_st pub, priv; int ret; @@ -2465,32 +2323,32 @@ int _gnutls_ecdh_compute_key(gnutls_ecc_curve_t curve, priv.algo = GNUTLS_PK_ECDSA; priv.curve = curve; - if (_gnutls_mpi_init_scan_nz - (&pub.params[ECC_Y], peer_y->data, peer_y->size) != 0) { + if (_gnutls_mpi_init_scan_nz(&pub.params[ECC_Y], peer_y->data, + peer_y->size) != 0) { ret = gnutls_assert_val(GNUTLS_E_MPI_SCAN_FAILED); goto cleanup; } - if (_gnutls_mpi_init_scan_nz - (&pub.params[ECC_X], peer_x->data, peer_x->size) != 0) { + if (_gnutls_mpi_init_scan_nz(&pub.params[ECC_X], peer_x->data, + peer_x->size) != 0) { ret = gnutls_assert_val(GNUTLS_E_MPI_SCAN_FAILED); goto cleanup; } - if (_gnutls_mpi_init_scan_nz - (&priv.params[ECC_Y], y->data, y->size) != 0) { + if (_gnutls_mpi_init_scan_nz(&priv.params[ECC_Y], y->data, y->size) != + 0) { ret = gnutls_assert_val(GNUTLS_E_MPI_SCAN_FAILED); goto cleanup; } - if (_gnutls_mpi_init_scan_nz - (&priv.params[ECC_X], x->data, x->size) != 0) { + if (_gnutls_mpi_init_scan_nz(&priv.params[ECC_X], x->data, x->size) != + 0) { ret = gnutls_assert_val(GNUTLS_E_MPI_SCAN_FAILED); goto cleanup; } - if (_gnutls_mpi_init_scan_nz - (&priv.params[ECC_K], k->data, k->size) != 0) { + if (_gnutls_mpi_init_scan_nz(&priv.params[ECC_K], k->data, k->size) != + 0) { ret = gnutls_assert_val(GNUTLS_E_MPI_SCAN_FAILED); goto cleanup; } @@ -2504,7 +2362,7 @@ int _gnutls_ecdh_compute_key(gnutls_ecc_curve_t curve, } ret = 0; - cleanup: +cleanup: gnutls_pk_params_clear(&pub); gnutls_pk_params_release(&pub); gnutls_pk_params_clear(&priv); @@ -2513,16 +2371,16 @@ int _gnutls_ecdh_compute_key(gnutls_ecc_curve_t curve, } static int pct_test(gnutls_pk_algorithm_t algo, - const gnutls_pk_params_st * params) + const gnutls_pk_params_st *params) { int ret; gnutls_datum_t sig = { NULL, 0 }; const char const_data[20] = "onetwothreefourfive"; const char const_data_sha256[32] = "onetwothreefourfivesixseveneight"; const char const_data_sha384[48] = - "onetwothreefourfivesixseveneightnineteneleventwe"; + "onetwothreefourfivesixseveneightnineteneleventwe"; const char const_data_sha512[64] = - "onetwothreefourfivesixseveneightnineteneleventwelvethirteenfourt"; + "onetwothreefourfivesixseveneightnineteneleventwelvethirteenfourt"; gnutls_datum_t ddata, tmp = { NULL, 0 }; char *gen_data = NULL; gnutls_x509_spki_st spki; @@ -2592,8 +2450,7 @@ static int pct_test(gnutls_pk_algorithm_t algo, if (ret < 0) { ret = gnutls_assert_val(GNUTLS_E_PK_GENERATION_ERROR); } - if (ret == 0 && - ddata.size == sig.size && + if (ret == 0 && ddata.size == sig.size && memcmp(ddata.data, sig.data, sig.size) == 0) { ret = gnutls_assert_val(GNUTLS_E_PK_GENERATION_ERROR); } @@ -2620,7 +2477,7 @@ static int pct_test(gnutls_pk_algorithm_t algo, sig.data = NULL; FALLTHROUGH; - case GNUTLS_PK_EC: /* we only do keys for ECDSA */ + case GNUTLS_PK_EC: /* we only do keys for ECDSA */ case GNUTLS_PK_EDDSA_ED25519: case GNUTLS_PK_EDDSA_ED448: case GNUTLS_PK_DSA: @@ -2641,11 +2498,10 @@ static int pct_test(gnutls_pk_algorithm_t algo, goto cleanup; } break; - case GNUTLS_PK_DH: - { - mpz_t y; + case GNUTLS_PK_DH: { + mpz_t y; - /* Perform SP800 56A (rev 3) 5.6.2.1.4 Owner Assurance + /* Perform SP800 56A (rev 3) 5.6.2.1.4 Owner Assurance * of Pair-wise Consistency check, even if we only * support ephemeral DH, as it is required by FIPS * 140-3 IG 10.3.A. @@ -2655,22 +2511,18 @@ static int pct_test(gnutls_pk_algorithm_t algo, * parameters associated with the key pair to compute * g^x mod p. Compare the result to the public key, y. */ - mpz_init(y); - mpz_powm(y, - TOMPZ(params->params[DSA_G]), - TOMPZ(params->params[DSA_X]), - TOMPZ(params->params[DSA_P])); - if (unlikely - (mpz_cmp(y, TOMPZ(params->params[DSA_Y])) != 0)) { - ret = - gnutls_assert_val - (GNUTLS_E_PK_GENERATION_ERROR); - mpz_clear(y); - goto cleanup; - } + mpz_init(y); + mpz_powm(y, TOMPZ(params->params[DSA_G]), + TOMPZ(params->params[DSA_X]), + TOMPZ(params->params[DSA_P])); + if (unlikely(mpz_cmp(y, TOMPZ(params->params[DSA_Y])) != 0)) { + ret = gnutls_assert_val(GNUTLS_E_PK_GENERATION_ERROR); mpz_clear(y); - break; + goto cleanup; } + mpz_clear(y); + break; + } case GNUTLS_PK_ECDH_X25519: case GNUTLS_PK_ECDH_X448: ret = 0; @@ -2681,7 +2533,7 @@ static int pct_test(gnutls_pk_algorithm_t algo, } ret = 0; - cleanup: +cleanup: if (ret == GNUTLS_E_PK_GENERATION_ERROR) { _gnutls_switch_lib_state(LIB_STATE_ERROR); } @@ -2692,9 +2544,8 @@ static int pct_test(gnutls_pk_algorithm_t algo, } #endif -static inline int -eddsa_public_key(gnutls_pk_algorithm_t algo, - uint8_t * pub, const uint8_t * priv) +static inline int eddsa_public_key(gnutls_pk_algorithm_t algo, uint8_t *pub, + const uint8_t *priv) { switch (algo) { case GNUTLS_PK_EDDSA_ED25519: @@ -2704,13 +2555,13 @@ eddsa_public_key(gnutls_pk_algorithm_t algo, ed448_shake256_public_key(pub, priv); return 0; default: - return - gnutls_assert_val(GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM); + return gnutls_assert_val( + GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM); } } -static inline int -edwards_curve_mul_g(gnutls_pk_algorithm_t algo, uint8_t * q, const uint8_t * n) +static inline int edwards_curve_mul_g(gnutls_pk_algorithm_t algo, uint8_t *q, + const uint8_t *n) { switch (algo) { case GNUTLS_PK_ECDH_X25519: @@ -2724,7 +2575,7 @@ edwards_curve_mul_g(gnutls_pk_algorithm_t algo, uint8_t * q, const uint8_t * n) } } -static inline int dh_find_q(const gnutls_pk_params_st * pk_params, mpz_t q) +static inline int dh_find_q(const gnutls_pk_params_st *pk_params, mpz_t q) { gnutls_datum_t prime = { NULL, 0 }; gnutls_datum_t generator = { NULL, 0 }; @@ -2745,11 +2596,9 @@ static inline int dh_find_q(const gnutls_pk_params_st * pk_params, mpz_t q) goto cleanup; } - if (!_gnutls_dh_prime_match_fips_approved(prime.data, - prime.size, - generator.data, - generator.size, - &data_q, &n_q)) { + if (!_gnutls_dh_prime_match_fips_approved( + prime.data, prime.size, generator.data, generator.size, + &data_q, &n_q)) { ret = gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); goto cleanup; } @@ -2762,7 +2611,7 @@ static inline int dh_find_q(const gnutls_pk_params_st * pk_params, mpz_t q) mpz_set(q, TOMPZ(_q)); _gnutls_mpi_release(&_q); - cleanup: +cleanup: gnutls_free(prime.data); gnutls_free(generator.data); @@ -2774,9 +2623,9 @@ static inline int dh_find_q(const gnutls_pk_params_st * pk_params, mpz_t q) */ static int wrap_nettle_pk_generate_keys(gnutls_pk_algorithm_t algo, - unsigned int level /*bits or curve */ , - gnutls_pk_params_st * params, unsigned ephemeral - /*non-zero if they are ephemeral keys */ ) + unsigned int level /*bits or curve */, + gnutls_pk_params_st *params, unsigned ephemeral + /*non-zero if they are ephemeral keys */) { int ret; unsigned int i; @@ -2812,8 +2661,8 @@ wrap_nettle_pk_generate_keys(gnutls_pk_algorithm_t algo, not_approved = true; if (params->params[DSA_Q] == NULL) { - ret = - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + ret = gnutls_assert_val( + GNUTLS_E_INVALID_REQUEST); goto cleanup; } @@ -2822,20 +2671,17 @@ wrap_nettle_pk_generate_keys(gnutls_pk_algorithm_t algo, mpz_init(x); mpz_init(y); - ret = - dsa_generate_dss_keypair(&pub, y, x, - NULL, rnd_func, - NULL, NULL); + ret = dsa_generate_dss_keypair(&pub, y, x, NULL, + rnd_func, NULL, NULL); if (ret != 1 || HAVE_LIB_ERROR()) { gnutls_assert(); ret = GNUTLS_E_PK_GENERATION_ERROR; goto dsa_fail; } - ret = - _gnutls_mpi_init_multi(¶ms->params[DSA_Y], - ¶ms->params[DSA_X], - NULL); + ret = _gnutls_mpi_init_multi(¶ms->params[DSA_Y], + ¶ms->params[DSA_X], + NULL); if (ret < 0) { gnutls_assert(); goto dsa_fail; @@ -2845,7 +2691,7 @@ wrap_nettle_pk_generate_keys(gnutls_pk_algorithm_t algo, mpz_set(TOMPZ(params->params[DSA_X]), x); params->params_nr += 2; - dsa_fail: + dsa_fail: mpz_clear(x); mpz_clear(y); @@ -2856,297 +2702,273 @@ wrap_nettle_pk_generate_keys(gnutls_pk_algorithm_t algo, } #endif FALLTHROUGH; - case GNUTLS_PK_DH: - { - struct dsa_params pub; - mpz_t r; - mpz_t x, y; - int max_tries; - unsigned have_q = 0; - mpz_t q; - mpz_t primesub1; - mpz_t ypowq; - - if (algo != params->algo) { - ret = - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - goto cleanup; - } + case GNUTLS_PK_DH: { + struct dsa_params pub; + mpz_t r; + mpz_t x, y; + int max_tries; + unsigned have_q = 0; + mpz_t q; + mpz_t primesub1; + mpz_t ypowq; + + if (algo != params->algo) { + ret = gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + goto cleanup; + } - _dsa_params_get(params, &pub); + _dsa_params_get(params, &pub); - if (params->params[DSA_Q] != NULL) - have_q = 1; + if (params->params[DSA_Q] != NULL) + have_q = 1; - /* This check is for the case !ENABLE_FIPS140 */ - if (algo == GNUTLS_PK_DSA && have_q == 0) { - ret = - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - goto cleanup; - } + /* This check is for the case !ENABLE_FIPS140 */ + if (algo == GNUTLS_PK_DSA && have_q == 0) { + ret = gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + goto cleanup; + } - mpz_init(r); - mpz_init(x); - mpz_init(y); + mpz_init(r); + mpz_init(x); + mpz_init(y); + + mpz_init(q); + mpz_init(primesub1); + mpz_init(ypowq); + + max_tries = 3; + do { + if (have_q) { + mpz_set(r, pub.q); + mpz_sub_ui(r, r, 2); + nettle_mpz_random(x, NULL, rnd_func, r); + mpz_add_ui(x, x, 1); + } else { + unsigned size = mpz_sizeinbase(pub.p, 2); + if (level == 0) + level = MIN(size, + DH_EXPONENT_SIZE(size)); + nettle_mpz_random_size(x, NULL, rnd_func, + level); - mpz_init(q); - mpz_init(primesub1); - mpz_init(ypowq); - - max_tries = 3; - do { - if (have_q) { - mpz_set(r, pub.q); - mpz_sub_ui(r, r, 2); - nettle_mpz_random(x, NULL, rnd_func, r); - mpz_add_ui(x, x, 1); - } else { - unsigned size = - mpz_sizeinbase(pub.p, 2); - if (level == 0) - level = - MIN(size, - DH_EXPONENT_SIZE(size)); - nettle_mpz_random_size(x, NULL, - rnd_func, level); - - if (level >= size) - mpz_mod(x, x, pub.p); - } + if (level >= size) + mpz_mod(x, x, pub.p); + } - mpz_powm(y, pub.g, x, pub.p); + mpz_powm(y, pub.g, x, pub.p); - max_tries--; - if (max_tries <= 0) { - gnutls_assert(); - ret = GNUTLS_E_RANDOM_FAILED; - goto dh_fail; - } + max_tries--; + if (max_tries <= 0) { + gnutls_assert(); + ret = GNUTLS_E_RANDOM_FAILED; + goto dh_fail; + } - if (HAVE_LIB_ERROR()) { - gnutls_assert(); - ret = GNUTLS_E_LIB_IN_ERROR_STATE; - goto dh_fail; - } + if (HAVE_LIB_ERROR()) { + gnutls_assert(); + ret = GNUTLS_E_LIB_IN_ERROR_STATE; + goto dh_fail; + } - } while (mpz_cmp_ui(y, 1) == 0); + } while (mpz_cmp_ui(y, 1) == 0); #ifdef ENABLE_FIPS140 - if (_gnutls_fips_mode_enabled()) { - /* Perform FFC full public key validation checks + if (_gnutls_fips_mode_enabled()) { + /* Perform FFC full public key validation checks * according to SP800-56A (revision 3), 5.6.2.3.1. */ - /* Step 1: 2 <= y <= p - 2 */ - mpz_sub_ui(primesub1, pub.p, 1); - - if (mpz_cmp_ui(y, 2) < 0 - || mpz_cmp(y, primesub1) >= 0) { - ret = - gnutls_assert_val - (GNUTLS_E_RANDOM_FAILED); - goto dh_fail; - } + /* Step 1: 2 <= y <= p - 2 */ + mpz_sub_ui(primesub1, pub.p, 1); - /* Step 2: 1 = y^q mod p */ - if (have_q) - mpz_set(q, pub.q); - else { - ret = dh_find_q(params, q); - if (ret < 0) - goto dh_fail; - } + if (mpz_cmp_ui(y, 2) < 0 || + mpz_cmp(y, primesub1) >= 0) { + ret = gnutls_assert_val(GNUTLS_E_RANDOM_FAILED); + goto dh_fail; + } - mpz_powm(ypowq, y, q, pub.p); - if (mpz_cmp_ui(ypowq, 1) != 0) { - ret = - gnutls_assert_val - (GNUTLS_E_RANDOM_FAILED); + /* Step 2: 1 = y^q mod p */ + if (have_q) + mpz_set(q, pub.q); + else { + ret = dh_find_q(params, q); + if (ret < 0) goto dh_fail; - } } -#endif - ret = - _gnutls_mpi_init_multi(¶ms->params[DSA_Y], - ¶ms->params[DSA_X], - NULL); - if (ret < 0) { - gnutls_assert(); + mpz_powm(ypowq, y, q, pub.p); + if (mpz_cmp_ui(ypowq, 1) != 0) { + ret = gnutls_assert_val(GNUTLS_E_RANDOM_FAILED); goto dh_fail; } + } +#endif - mpz_set(TOMPZ(params->params[DSA_Y]), y); - mpz_set(TOMPZ(params->params[DSA_X]), x); - params->params_nr += 2; + ret = _gnutls_mpi_init_multi(¶ms->params[DSA_Y], + ¶ms->params[DSA_X], NULL); + if (ret < 0) { + gnutls_assert(); + goto dh_fail; + } - ret = 0; + mpz_set(TOMPZ(params->params[DSA_Y]), y); + mpz_set(TOMPZ(params->params[DSA_X]), x); + params->params_nr += 2; - dh_fail: - mpz_clear(r); - mpz_clear(x); - mpz_clear(y); - mpz_clear(q); - mpz_clear(primesub1); - mpz_clear(ypowq); + ret = 0; - if (ret < 0) - goto cleanup; + dh_fail: + mpz_clear(r); + mpz_clear(x); + mpz_clear(y); + mpz_clear(q); + mpz_clear(primesub1); + mpz_clear(ypowq); - break; - } + if (ret < 0) + goto cleanup; + + break; + } case GNUTLS_PK_RSA_PSS: - case GNUTLS_PK_RSA: - { - struct rsa_public_key pub; - struct rsa_private_key priv; + case GNUTLS_PK_RSA: { + struct rsa_public_key pub; + struct rsa_private_key priv; - rsa_public_key_init(&pub); - rsa_private_key_init(&priv); + rsa_public_key_init(&pub); + rsa_private_key_init(&priv); - mpz_set_ui(pub.e, 65537); + mpz_set_ui(pub.e, 65537); - if ((params->pkflags & GNUTLS_PK_FLAG_PROVABLE) - || _gnutls_fips_mode_enabled() != 0) { - params->pkflags |= GNUTLS_PK_FLAG_PROVABLE; - if (params->palgo != 0 - && params->palgo != GNUTLS_DIG_SHA384) { - ret = GNUTLS_E_INVALID_REQUEST; - goto rsa_fail; - } + if ((params->pkflags & GNUTLS_PK_FLAG_PROVABLE) || + _gnutls_fips_mode_enabled() != 0) { + params->pkflags |= GNUTLS_PK_FLAG_PROVABLE; + if (params->palgo != 0 && + params->palgo != GNUTLS_DIG_SHA384) { + ret = GNUTLS_E_INVALID_REQUEST; + goto rsa_fail; + } - params->palgo = GNUTLS_DIG_SHA384; + params->palgo = GNUTLS_DIG_SHA384; - if (params->seed_size) { - ret = - _rsa_generate_fips186_4_keypair - (&pub, &priv, params->seed_size, - params->seed, NULL, NULL, level); - } else { - unsigned retries = 0; - /* The provable RSA key generation process is deterministic + if (params->seed_size) { + ret = _rsa_generate_fips186_4_keypair( + &pub, &priv, params->seed_size, + params->seed, NULL, NULL, level); + } else { + unsigned retries = 0; + /* The provable RSA key generation process is deterministic * but has an internal maximum iteration counter and when * exceed will fail for certain random seeds. This is a very * rare condition, but it nevertheless happens and even CI builds fail * occasionally. When we generate the random seed internally, remediate * by retrying a different seed on failure. */ - do { - params->seed_size = - sizeof(params->seed); - ret = - rsa_generate_fips186_4_keypair - (&pub, &priv, NULL, - rnd_func, NULL, NULL, - ¶ms->seed_size, - params->seed, level); - } while (ret != 1 && ++retries < 3); - } - } else { - not_approved = true; + do { + params->seed_size = + sizeof(params->seed); + ret = rsa_generate_fips186_4_keypair( + &pub, &priv, NULL, rnd_func, + NULL, NULL, ¶ms->seed_size, + params->seed, level); + } while (ret != 1 && ++retries < 3); + } + } else { + not_approved = true; - ret = - rsa_generate_keypair(&pub, &priv, NULL, - rnd_func, NULL, NULL, - level, 0); - } - if (ret != 1 || HAVE_LIB_ERROR()) { + ret = rsa_generate_keypair(&pub, &priv, NULL, rnd_func, + NULL, NULL, level, 0); + } + if (ret != 1 || HAVE_LIB_ERROR()) { + gnutls_assert(); + ret = GNUTLS_E_PK_GENERATION_ERROR; + goto rsa_fail; + } + + params->params_nr = 0; + for (i = 0; i < RSA_PRIVATE_PARAMS; i++) { + ret = _gnutls_mpi_init(¶ms->params[i]); + if (ret < 0) { gnutls_assert(); - ret = GNUTLS_E_PK_GENERATION_ERROR; goto rsa_fail; } + params->params_nr++; + } - params->params_nr = 0; - for (i = 0; i < RSA_PRIVATE_PARAMS; i++) { - ret = _gnutls_mpi_init(¶ms->params[i]); - if (ret < 0) { - gnutls_assert(); - goto rsa_fail; - } - params->params_nr++; - } - - /* In FIPS 140-3, pub.n should be 2048-bit or larger; it + /* In FIPS 140-3, pub.n should be 2048-bit or larger; it * is assured in rsa_generate_fips186_4_keypair in * lib/nettle/int/rsa-keygen-fips186.c. */ - mpz_set(TOMPZ(params->params[RSA_MODULUS]), pub.n); - mpz_set(TOMPZ(params->params[RSA_PUB]), pub.e); - mpz_set(TOMPZ(params->params[RSA_PRIV]), priv.d); - mpz_set(TOMPZ(params->params[RSA_PRIME1]), priv.p); - mpz_set(TOMPZ(params->params[RSA_PRIME2]), priv.q); - mpz_set(TOMPZ(params->params[RSA_COEF]), priv.c); - mpz_set(TOMPZ(params->params[RSA_E1]), priv.a); - mpz_set(TOMPZ(params->params[RSA_E2]), priv.b); + mpz_set(TOMPZ(params->params[RSA_MODULUS]), pub.n); + mpz_set(TOMPZ(params->params[RSA_PUB]), pub.e); + mpz_set(TOMPZ(params->params[RSA_PRIV]), priv.d); + mpz_set(TOMPZ(params->params[RSA_PRIME1]), priv.p); + mpz_set(TOMPZ(params->params[RSA_PRIME2]), priv.q); + mpz_set(TOMPZ(params->params[RSA_COEF]), priv.c); + mpz_set(TOMPZ(params->params[RSA_E1]), priv.a); + mpz_set(TOMPZ(params->params[RSA_E2]), priv.b); - ret = 0; + ret = 0; - rsa_fail: - rsa_private_key_clear(&priv); - rsa_public_key_clear(&pub); + rsa_fail: + rsa_private_key_clear(&priv); + rsa_public_key_clear(&pub); - if (ret < 0) - goto cleanup; + if (ret < 0) + goto cleanup; - break; - } + break; + } case GNUTLS_PK_EDDSA_ED25519: - case GNUTLS_PK_EDDSA_ED448: - { - unsigned size = gnutls_ecc_curve_get_size(level); - - /* EdDSA is not approved yet */ - not_approved = true; - - if (params->pkflags & GNUTLS_PK_FLAG_PROVABLE) { - ret = - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - goto cleanup; - } + case GNUTLS_PK_EDDSA_ED448: { + unsigned size = gnutls_ecc_curve_get_size(level); - if (unlikely(get_eddsa_curve(algo) != level)) { - ret = - gnutls_assert_val - (GNUTLS_E_ECC_UNSUPPORTED_CURVE); - goto cleanup; - } + /* EdDSA is not approved yet */ + not_approved = true; - if (size == 0) { - ret = - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - goto cleanup; - } + if (params->pkflags & GNUTLS_PK_FLAG_PROVABLE) { + ret = gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + goto cleanup; + } - params->curve = level; + if (unlikely(get_eddsa_curve(algo) != level)) { + ret = gnutls_assert_val(GNUTLS_E_ECC_UNSUPPORTED_CURVE); + goto cleanup; + } - params->raw_priv.data = gnutls_malloc(size); - if (params->raw_priv.data == NULL) { - ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - goto cleanup; - } + if (size == 0) { + ret = gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + goto cleanup; + } - params->raw_pub.data = gnutls_malloc(size); - if (params->raw_pub.data == NULL) { - ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - goto cleanup; - } + params->curve = level; - ret = - gnutls_rnd(rnd_level, params->raw_priv.data, size); - if (ret < 0) { - ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - goto cleanup; - } - params->raw_pub.size = size; - params->raw_priv.size = size; + params->raw_priv.data = gnutls_malloc(size); + if (params->raw_priv.data == NULL) { + ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); + goto cleanup; + } - ret = eddsa_public_key(algo, - params->raw_pub.data, - params->raw_priv.data); - if (ret < 0) - goto cleanup; + params->raw_pub.data = gnutls_malloc(size); + if (params->raw_pub.data == NULL) { + ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); + goto cleanup; + } - break; + ret = gnutls_rnd(rnd_level, params->raw_priv.data, size); + if (ret < 0) { + ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); + goto cleanup; } + params->raw_pub.size = size; + params->raw_priv.size = size; + + ret = eddsa_public_key(algo, params->raw_pub.data, + params->raw_priv.data); + if (ret < 0) + goto cleanup; + + break; + } case GNUTLS_PK_ECDSA: if (params->pkflags & GNUTLS_PK_FLAG_PROVABLE) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); @@ -3162,9 +2984,8 @@ wrap_nettle_pk_generate_keys(gnutls_pk_algorithm_t algo, curve = get_supported_nist_curve(level); if (curve == NULL) { - ret = - gnutls_assert_val - (GNUTLS_E_ECC_UNSUPPORTED_CURVE); + ret = gnutls_assert_val( + GNUTLS_E_ECC_UNSUPPORTED_CURVE); goto cleanup; } @@ -3188,17 +3009,15 @@ wrap_nettle_pk_generate_keys(gnutls_pk_algorithm_t algo, ecdsa_generate_keypair(&pub, &key, NULL, rnd_func); if (HAVE_LIB_ERROR()) { - ret = - gnutls_assert_val - (GNUTLS_E_LIB_IN_ERROR_STATE); + ret = gnutls_assert_val( + GNUTLS_E_LIB_IN_ERROR_STATE); goto ecc_fail; } - ret = - _gnutls_mpi_init_multi(¶ms->params[ECC_X], - ¶ms->params[ECC_Y], - ¶ms->params[ECC_K], - NULL); + ret = _gnutls_mpi_init_multi(¶ms->params[ECC_X], + ¶ms->params[ECC_Y], + ¶ms->params[ECC_K], + NULL); if (ret < 0) { gnutls_assert(); goto ecc_fail; @@ -3222,11 +3041,10 @@ wrap_nettle_pk_generate_keys(gnutls_pk_algorithm_t algo, * cannot happen in the nettle implementation, * because it cannot represent an infinity point * on curves. */ - if (mpz_cmp_ui(x, 0) == 0 - && mpz_cmp_ui(y, 0) == 0) { - ret = - gnutls_assert_val - (GNUTLS_E_ILLEGAL_PARAMETER); + if (mpz_cmp_ui(x, 0) == 0 && + mpz_cmp_ui(y, 0) == 0) { + ret = gnutls_assert_val( + GNUTLS_E_ILLEGAL_PARAMETER); goto ecc_fail; } @@ -3237,9 +3055,8 @@ wrap_nettle_pk_generate_keys(gnutls_pk_algorithm_t algo, * * Both checks are performed in nettle. */ if (!ecc_point_set(&r, x, y)) { - ret = - gnutls_assert_val - (GNUTLS_E_ILLEGAL_PARAMETER); + ret = gnutls_assert_val( + GNUTLS_E_ILLEGAL_PARAMETER); goto ecc_fail; } @@ -3256,34 +3073,30 @@ wrap_nettle_pk_generate_keys(gnutls_pk_algorithm_t algo, */ order = get_supported_nist_curve_order(level); if (unlikely(order == NULL)) { - ret = - gnutls_assert_val - (GNUTLS_E_INTERNAL_ERROR); + ret = gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); goto ecc_fail; } ret = mpz_set_str(nn, order, 16); if (unlikely(ret < 0)) { - ret = - gnutls_assert_val - (GNUTLS_E_MPI_SCAN_FAILED); + ret = gnutls_assert_val( + GNUTLS_E_MPI_SCAN_FAILED); goto ecc_fail; } modulus = - get_supported_nist_curve_modulus(level); + get_supported_nist_curve_modulus(level); if (unlikely(modulus == NULL)) { - ret = - gnutls_assert_val - (GNUTLS_E_INTERNAL_ERROR); + ret = gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); goto ecc_fail; } ret = mpz_set_str(mm, modulus, 16); if (unlikely(ret < 0)) { - ret = - gnutls_assert_val - (GNUTLS_E_MPI_SCAN_FAILED); + ret = gnutls_assert_val( + GNUTLS_E_MPI_SCAN_FAILED); goto ecc_fail; } @@ -3294,10 +3107,10 @@ wrap_nettle_pk_generate_keys(gnutls_pk_algorithm_t algo, ecc_point_get(&r, xx, yy); mpz_sub(mm, mm, y); - if (mpz_cmp(xx, x) != 0 || mpz_cmp(yy, mm) != 0) { - ret = - gnutls_assert_val - (GNUTLS_E_ILLEGAL_PARAMETER); + if (mpz_cmp(xx, x) != 0 || + mpz_cmp(yy, mm) != 0) { + ret = gnutls_assert_val( + GNUTLS_E_ILLEGAL_PARAMETER); goto ecc_fail; } } else { @@ -3312,7 +3125,7 @@ wrap_nettle_pk_generate_keys(gnutls_pk_algorithm_t algo, ret = 0; - ecc_fail: + ecc_fail: mpz_clear(x); mpz_clear(y); mpz_clear(xx); @@ -3348,16 +3161,15 @@ wrap_nettle_pk_generate_keys(gnutls_pk_algorithm_t algo, curve = get_supported_gost_curve(level); if (curve == NULL) { - ret = - gnutls_assert_val - (GNUTLS_E_ECC_UNSUPPORTED_CURVE); + ret = gnutls_assert_val( + GNUTLS_E_ECC_UNSUPPORTED_CURVE); goto cleanup; } me = hash_to_entry(_gnutls_gost_digest(algo)); if (!me || me->output_size * 8 != ecc_bit_size(curve)) { - ret = - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + ret = gnutls_assert_val( + GNUTLS_E_INVALID_REQUEST); goto cleanup; } @@ -3367,17 +3179,15 @@ wrap_nettle_pk_generate_keys(gnutls_pk_algorithm_t algo, gostdsa_generate_keypair(&pub, &key, NULL, rnd_key_func); if (HAVE_LIB_ERROR()) { - ret = - gnutls_assert_val - (GNUTLS_E_LIB_IN_ERROR_STATE); + ret = gnutls_assert_val( + GNUTLS_E_LIB_IN_ERROR_STATE); goto ecc_fail; } - ret = - _gnutls_mpi_init_multi(¶ms->params[GOST_X], - ¶ms->params[GOST_Y], - ¶ms->params[GOST_K], - NULL); + ret = _gnutls_mpi_init_multi(¶ms->params[GOST_X], + ¶ms->params[GOST_Y], + ¶ms->params[GOST_K], + NULL); if (ret < 0) { gnutls_assert(); goto gost_fail; @@ -3392,7 +3202,7 @@ wrap_nettle_pk_generate_keys(gnutls_pk_algorithm_t algo, ret = 0; - gost_fail: + gost_fail: ecc_point_clear(&pub); ecc_scalar_clear(&key); @@ -3403,48 +3213,44 @@ wrap_nettle_pk_generate_keys(gnutls_pk_algorithm_t algo, } #endif case GNUTLS_PK_ECDH_X25519: - case GNUTLS_PK_ECDH_X448: - { - unsigned size = gnutls_ecc_curve_get_size(level); - - not_approved = true; + case GNUTLS_PK_ECDH_X448: { + unsigned size = gnutls_ecc_curve_get_size(level); - if (size == 0) { - ret = - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - goto cleanup; - } + not_approved = true; - params->curve = level; + if (size == 0) { + ret = gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + goto cleanup; + } - params->raw_priv.data = gnutls_malloc(size); - if (params->raw_priv.data == NULL) { - ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - goto cleanup; - } + params->curve = level; - params->raw_pub.data = gnutls_malloc(size); - if (params->raw_pub.data == NULL) { - ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - goto cleanup; - } + params->raw_priv.data = gnutls_malloc(size); + if (params->raw_priv.data == NULL) { + ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); + goto cleanup; + } - ret = - gnutls_rnd(rnd_level, params->raw_priv.data, size); - if (ret < 0) { - ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - goto cleanup; - } - params->raw_pub.size = size; - params->raw_priv.size = size; + params->raw_pub.data = gnutls_malloc(size); + if (params->raw_pub.data == NULL) { + ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); + goto cleanup; + } - ret = - edwards_curve_mul_g(algo, params->raw_pub.data, - params->raw_priv.data); - if (ret < 0) - goto cleanup; - break; + ret = gnutls_rnd(rnd_level, params->raw_priv.data, size); + if (ret < 0) { + ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); + goto cleanup; } + params->raw_pub.size = size; + params->raw_priv.size = size; + + ret = edwards_curve_mul_g(algo, params->raw_pub.data, + params->raw_priv.data); + if (ret < 0) + goto cleanup; + break; + } default: gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; @@ -3460,7 +3266,7 @@ wrap_nettle_pk_generate_keys(gnutls_pk_algorithm_t algo, } #endif - cleanup: +cleanup: if (ret < 0) { _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); for (i = 0; i < params->params_nr; i++) { @@ -3479,337 +3285,287 @@ wrap_nettle_pk_generate_keys(gnutls_pk_algorithm_t algo, return ret; } -static int -wrap_nettle_pk_verify_priv_params(gnutls_pk_algorithm_t algo, - const gnutls_pk_params_st * params) +static int wrap_nettle_pk_verify_priv_params(gnutls_pk_algorithm_t algo, + const gnutls_pk_params_st *params) { int ret; switch (algo) { case GNUTLS_PK_RSA: - case GNUTLS_PK_RSA_PSS: - { - bigint_t t1 = NULL, t2 = NULL; - - if (params->params_nr != RSA_PRIVATE_PARAMS) - return - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - - ret = _gnutls_mpi_init_multi(&t1, &t2, NULL); - if (ret < 0) - return gnutls_assert_val(ret); + case GNUTLS_PK_RSA_PSS: { + bigint_t t1 = NULL, t2 = NULL; - _gnutls_mpi_mulm(t1, params->params[RSA_PRIME1], - params->params[RSA_PRIME2], - params->params[RSA_MODULUS]); - if (_gnutls_mpi_cmp_ui(t1, 0) != 0) { - ret = - gnutls_assert_val - (GNUTLS_E_ILLEGAL_PARAMETER); - goto rsa_cleanup; - } + if (params->params_nr != RSA_PRIVATE_PARAMS) + return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - mpz_invert(TOMPZ(t1), - TOMPZ(params->params[RSA_PRIME2]), - TOMPZ(params->params[RSA_PRIME1])); - if (_gnutls_mpi_cmp(t1, params->params[RSA_COEF]) - != 0) { - ret = - gnutls_assert_val - (GNUTLS_E_ILLEGAL_PARAMETER); - goto rsa_cleanup; - } + ret = _gnutls_mpi_init_multi(&t1, &t2, NULL); + if (ret < 0) + return gnutls_assert_val(ret); - /* [RSA_PRIME1] = d % p-1, [RSA_PRIME2] = d % q-1 */ - _gnutls_mpi_sub_ui(t1, params->params[RSA_PRIME1], 1); - ret = - _gnutls_mpi_modm(t2, params->params[RSA_PRIV], t1); - if (ret < 0) { - ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - goto rsa_cleanup; - } + _gnutls_mpi_mulm(t1, params->params[RSA_PRIME1], + params->params[RSA_PRIME2], + params->params[RSA_MODULUS]); + if (_gnutls_mpi_cmp_ui(t1, 0) != 0) { + ret = gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER); + goto rsa_cleanup; + } - if (_gnutls_mpi_cmp(params->params[RSA_E1], t2) != 0) { - ret = - gnutls_assert_val - (GNUTLS_E_ILLEGAL_PARAMETER); - goto rsa_cleanup; - } + mpz_invert(TOMPZ(t1), TOMPZ(params->params[RSA_PRIME2]), + TOMPZ(params->params[RSA_PRIME1])); + if (_gnutls_mpi_cmp(t1, params->params[RSA_COEF]) != 0) { + ret = gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER); + goto rsa_cleanup; + } - _gnutls_mpi_sub_ui(t1, params->params[RSA_PRIME2], 1); + /* [RSA_PRIME1] = d % p-1, [RSA_PRIME2] = d % q-1 */ + _gnutls_mpi_sub_ui(t1, params->params[RSA_PRIME1], 1); + ret = _gnutls_mpi_modm(t2, params->params[RSA_PRIV], t1); + if (ret < 0) { + ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); + goto rsa_cleanup; + } - ret = - _gnutls_mpi_modm(t2, params->params[RSA_PRIV], t1); - if (ret < 0) { - ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - goto rsa_cleanup; - } + if (_gnutls_mpi_cmp(params->params[RSA_E1], t2) != 0) { + ret = gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER); + goto rsa_cleanup; + } - if (_gnutls_mpi_cmp(params->params[RSA_E2], t2) != 0) { - ret = - gnutls_assert_val - (GNUTLS_E_ILLEGAL_PARAMETER); - goto rsa_cleanup; - } + _gnutls_mpi_sub_ui(t1, params->params[RSA_PRIME2], 1); - ret = 0; + ret = _gnutls_mpi_modm(t2, params->params[RSA_PRIV], t1); + if (ret < 0) { + ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); + goto rsa_cleanup; + } - rsa_cleanup: - zrelease_mpi_key(&t1); - zrelease_mpi_key(&t2); + if (_gnutls_mpi_cmp(params->params[RSA_E2], t2) != 0) { + ret = gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER); + goto rsa_cleanup; } - break; - case GNUTLS_PK_DSA: - { - bigint_t t1 = NULL; + ret = 0; - if (params->params_nr != DSA_PRIVATE_PARAMS) - return - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + rsa_cleanup: + zrelease_mpi_key(&t1); + zrelease_mpi_key(&t2); + } - ret = _gnutls_mpi_init(&t1); - if (ret < 0) - return gnutls_assert_val(ret); + break; + case GNUTLS_PK_DSA: { + bigint_t t1 = NULL; - ret = _gnutls_mpi_powm(t1, params->params[DSA_G], - params->params[DSA_X], - params->params[DSA_P]); - if (ret < 0) { - gnutls_assert(); - goto dsa_cleanup; - } + if (params->params_nr != DSA_PRIVATE_PARAMS) + return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - if (_gnutls_mpi_cmp(t1, params->params[DSA_Y]) != 0) { - ret = - gnutls_assert_val - (GNUTLS_E_ILLEGAL_PARAMETER); - goto dsa_cleanup; - } + ret = _gnutls_mpi_init(&t1); + if (ret < 0) + return gnutls_assert_val(ret); - ret = 0; + ret = _gnutls_mpi_powm(t1, params->params[DSA_G], + params->params[DSA_X], + params->params[DSA_P]); + if (ret < 0) { + gnutls_assert(); + goto dsa_cleanup; + } - dsa_cleanup: - zrelease_mpi_key(&t1); + if (_gnutls_mpi_cmp(t1, params->params[DSA_Y]) != 0) { + ret = gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER); + goto dsa_cleanup; } - break; - case GNUTLS_PK_ECDSA: - { - struct ecc_point r, pub; - struct ecc_scalar priv; - mpz_t x1, y1, x2, y2; - const struct ecc_curve *curve; + ret = 0; - if (params->params_nr != ECC_PRIVATE_PARAMS) - return - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + dsa_cleanup: + zrelease_mpi_key(&t1); + } - curve = get_supported_nist_curve(params->curve); - if (curve == NULL) - return - gnutls_assert_val - (GNUTLS_E_ECC_UNSUPPORTED_CURVE); + break; + case GNUTLS_PK_ECDSA: { + struct ecc_point r, pub; + struct ecc_scalar priv; + mpz_t x1, y1, x2, y2; + const struct ecc_curve *curve; - ret = _ecc_params_to_pubkey(params, &pub, curve); - if (ret < 0) - return gnutls_assert_val(ret); + if (params->params_nr != ECC_PRIVATE_PARAMS) + return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - ret = _ecc_params_to_privkey(params, &priv, curve); - if (ret < 0) { - ecc_point_clear(&pub); - return gnutls_assert_val(ret); - } + curve = get_supported_nist_curve(params->curve); + if (curve == NULL) + return gnutls_assert_val( + GNUTLS_E_ECC_UNSUPPORTED_CURVE); - ecc_point_init(&r, curve); - /* verify that x,y lie on the curve */ - ret = - ecc_point_set(&r, TOMPZ(params->params[ECC_X]), - TOMPZ(params->params[ECC_Y])); - if (ret == 0) { - ret = - gnutls_assert_val - (GNUTLS_E_ILLEGAL_PARAMETER); - goto ecc_cleanup; - } - ecc_point_clear(&r); + ret = _ecc_params_to_pubkey(params, &pub, curve); + if (ret < 0) + return gnutls_assert_val(ret); - ecc_point_init(&r, curve); - ecc_point_mul_g(&r, &priv); - - mpz_init(x1); - mpz_init(y1); - ecc_point_get(&r, x1, y1); - ecc_point_zclear(&r); - - mpz_init(x2); - mpz_init(y2); - ecc_point_get(&pub, x2, y2); - - /* verify that k*(Gx,Gy)=(x,y) */ - if (mpz_cmp(x1, x2) != 0 || mpz_cmp(y1, y2) != 0) { - ret = - gnutls_assert_val - (GNUTLS_E_ILLEGAL_PARAMETER); - goto ecc_cleanup; - } + ret = _ecc_params_to_privkey(params, &priv, curve); + if (ret < 0) { + ecc_point_clear(&pub); + return gnutls_assert_val(ret); + } - ret = 0; + ecc_point_init(&r, curve); + /* verify that x,y lie on the curve */ + ret = ecc_point_set(&r, TOMPZ(params->params[ECC_X]), + TOMPZ(params->params[ECC_Y])); + if (ret == 0) { + ret = gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER); + goto ecc_cleanup; + } + ecc_point_clear(&r); - ecc_cleanup: - ecc_scalar_zclear(&priv); - ecc_point_clear(&pub); + ecc_point_init(&r, curve); + ecc_point_mul_g(&r, &priv); + + mpz_init(x1); + mpz_init(y1); + ecc_point_get(&r, x1, y1); + ecc_point_zclear(&r); + + mpz_init(x2); + mpz_init(y2); + ecc_point_get(&pub, x2, y2); - mpz_clear(x1); - mpz_clear(y1); - mpz_clear(x2); - mpz_clear(y2); + /* verify that k*(Gx,Gy)=(x,y) */ + if (mpz_cmp(x1, x2) != 0 || mpz_cmp(y1, y2) != 0) { + ret = gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER); + goto ecc_cleanup; } - break; - case GNUTLS_PK_EDDSA_ED25519: - case GNUTLS_PK_EDDSA_ED448:{ - gnutls_ecc_curve_t curve; - const gnutls_ecc_curve_entry_st *e; - uint8_t pub[57]; /* can accommodate both curves */ - - curve = get_eddsa_curve(algo); - e = _gnutls_ecc_curve_get_params(curve); - if (e == NULL) - return - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - - if (params->raw_pub.data == NULL) { - return 0; /* nothing to verify */ - } - if (params->raw_pub.size != e->size) - return - gnutls_assert_val - (GNUTLS_E_ILLEGAL_PARAMETER); + ret = 0; - ret = - eddsa_public_key(algo, pub, params->raw_priv.data); - if (ret < 0) - return ret; + ecc_cleanup: + ecc_scalar_zclear(&priv); + ecc_point_clear(&pub); - if (memcmp(params->raw_pub.data, pub, e->size) != 0) - return - gnutls_assert_val - (GNUTLS_E_ILLEGAL_PARAMETER); + mpz_clear(x1); + mpz_clear(y1); + mpz_clear(x2); + mpz_clear(y2); + } break; + case GNUTLS_PK_EDDSA_ED25519: + case GNUTLS_PK_EDDSA_ED448: { + gnutls_ecc_curve_t curve; + const gnutls_ecc_curve_entry_st *e; + uint8_t pub[57]; /* can accommodate both curves */ + + curve = get_eddsa_curve(algo); + e = _gnutls_ecc_curve_get_params(curve); + if (e == NULL) + return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - ret = 0; - break; + if (params->raw_pub.data == NULL) { + return 0; /* nothing to verify */ } - case GNUTLS_PK_ECDH_X25519: - case GNUTLS_PK_ECDH_X448:{ - gnutls_ecc_curve_t curve; - const gnutls_ecc_curve_entry_st *e; - uint8_t pub[57]; /* can accommodate both curves */ - - curve = get_ecdh_curve(algo); - e = _gnutls_ecc_curve_get_params(curve); - if (e == NULL) - return - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - - if (params->raw_pub.data == NULL) { - return 0; /* nothing to verify */ - } - if (params->raw_pub.size != e->size) - return - gnutls_assert_val - (GNUTLS_E_ILLEGAL_PARAMETER); + if (params->raw_pub.size != e->size) + return gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER); - ret = - edwards_curve_mul_g(algo, pub, - params->raw_priv.data); - if (ret < 0) - return ret; + ret = eddsa_public_key(algo, pub, params->raw_priv.data); + if (ret < 0) + return ret; - if (memcmp(params->raw_pub.data, pub, e->size) != 0) - return - gnutls_assert_val - (GNUTLS_E_ILLEGAL_PARAMETER); + if (memcmp(params->raw_pub.data, pub, e->size) != 0) + return gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER); - ret = 0; - break; + ret = 0; + break; + } + case GNUTLS_PK_ECDH_X25519: + case GNUTLS_PK_ECDH_X448: { + gnutls_ecc_curve_t curve; + const gnutls_ecc_curve_entry_st *e; + uint8_t pub[57]; /* can accommodate both curves */ + + curve = get_ecdh_curve(algo); + e = _gnutls_ecc_curve_get_params(curve); + if (e == NULL) + return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + + if (params->raw_pub.data == NULL) { + return 0; /* nothing to verify */ } + + if (params->raw_pub.size != e->size) + return gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER); + + ret = edwards_curve_mul_g(algo, pub, params->raw_priv.data); + if (ret < 0) + return ret; + + if (memcmp(params->raw_pub.data, pub, e->size) != 0) + return gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER); + + ret = 0; + break; + } #if ENABLE_GOST case GNUTLS_PK_GOST_01: case GNUTLS_PK_GOST_12_256: - case GNUTLS_PK_GOST_12_512: - { - struct ecc_point r, pub; - struct ecc_scalar priv; - mpz_t x1, y1, x2, y2; - const struct ecc_curve *curve; + case GNUTLS_PK_GOST_12_512: { + struct ecc_point r, pub; + struct ecc_scalar priv; + mpz_t x1, y1, x2, y2; + const struct ecc_curve *curve; - if (params->params_nr != GOST_PRIVATE_PARAMS) - return - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + if (params->params_nr != GOST_PRIVATE_PARAMS) + return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - curve = get_supported_gost_curve(params->curve); - if (curve == NULL) - return - gnutls_assert_val - (GNUTLS_E_ECC_UNSUPPORTED_CURVE); + curve = get_supported_gost_curve(params->curve); + if (curve == NULL) + return gnutls_assert_val( + GNUTLS_E_ECC_UNSUPPORTED_CURVE); - ret = _gost_params_to_pubkey(params, &pub, curve); - if (ret < 0) - return gnutls_assert_val(ret); + ret = _gost_params_to_pubkey(params, &pub, curve); + if (ret < 0) + return gnutls_assert_val(ret); - ret = _gost_params_to_privkey(params, &priv, curve); - if (ret < 0) { - ecc_point_clear(&pub); - return gnutls_assert_val(ret); - } + ret = _gost_params_to_privkey(params, &priv, curve); + if (ret < 0) { + ecc_point_clear(&pub); + return gnutls_assert_val(ret); + } - ecc_point_init(&r, curve); - /* verify that x,y lie on the curve */ - ret = - gost_point_set(&r, TOMPZ(params->params[GOST_X]), - TOMPZ(params->params[GOST_Y])); - if (ret == 0) { - ret = - gnutls_assert_val - (GNUTLS_E_ILLEGAL_PARAMETER); - goto gost_cleanup; - } - ecc_point_clear(&r); + ecc_point_init(&r, curve); + /* verify that x,y lie on the curve */ + ret = gost_point_set(&r, TOMPZ(params->params[GOST_X]), + TOMPZ(params->params[GOST_Y])); + if (ret == 0) { + ret = gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER); + goto gost_cleanup; + } + ecc_point_clear(&r); - ecc_point_init(&r, curve); - gost_point_mul_g(&r, &priv); - - mpz_init(x1); - mpz_init(y1); - ecc_point_get(&r, x1, y1); - ecc_point_zclear(&r); - - mpz_init(x2); - mpz_init(y2); - ecc_point_get(&pub, x2, y2); - - /* verify that k*(Gx,Gy)=(x,y) */ - if (mpz_cmp(x1, x2) != 0 || mpz_cmp(y1, y2) != 0) { - ret = - gnutls_assert_val - (GNUTLS_E_ILLEGAL_PARAMETER); - goto gost_cleanup; - } + ecc_point_init(&r, curve); + gost_point_mul_g(&r, &priv); - ret = 0; + mpz_init(x1); + mpz_init(y1); + ecc_point_get(&r, x1, y1); + ecc_point_zclear(&r); - gost_cleanup: - ecc_scalar_zclear(&priv); - ecc_point_clear(&pub); + mpz_init(x2); + mpz_init(y2); + ecc_point_get(&pub, x2, y2); - mpz_clear(x1); - mpz_clear(y1); - mpz_clear(x2); - mpz_clear(y2); + /* verify that k*(Gx,Gy)=(x,y) */ + if (mpz_cmp(x1, x2) != 0 || mpz_cmp(y1, y2) != 0) { + ret = gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER); + goto gost_cleanup; } - break; + + ret = 0; + + gost_cleanup: + ecc_scalar_zclear(&priv); + ecc_point_clear(&pub); + + mpz_clear(x1); + mpz_clear(y1); + mpz_clear(x2); + mpz_clear(y2); + } break; #endif default: ret = gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); @@ -3818,9 +3574,8 @@ wrap_nettle_pk_verify_priv_params(gnutls_pk_algorithm_t algo, return ret; } -static int -wrap_nettle_pk_verify_pub_params(gnutls_pk_algorithm_t algo, - const gnutls_pk_params_st * params) +static int wrap_nettle_pk_verify_pub_params(gnutls_pk_algorithm_t algo, + const gnutls_pk_params_st *params) { int ret; @@ -3831,87 +3586,73 @@ wrap_nettle_pk_verify_pub_params(gnutls_pk_algorithm_t algo, case GNUTLS_PK_EDDSA_ED25519: case GNUTLS_PK_EDDSA_ED448: return 0; - case GNUTLS_PK_ECDSA: - { - /* just verify that x and y lie on the curve */ - struct ecc_point r, pub; - const struct ecc_curve *curve; + case GNUTLS_PK_ECDSA: { + /* just verify that x and y lie on the curve */ + struct ecc_point r, pub; + const struct ecc_curve *curve; - if (params->params_nr != ECC_PUBLIC_PARAMS) - return - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + if (params->params_nr != ECC_PUBLIC_PARAMS) + return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - curve = get_supported_nist_curve(params->curve); - if (curve == NULL) - return - gnutls_assert_val - (GNUTLS_E_ECC_UNSUPPORTED_CURVE); + curve = get_supported_nist_curve(params->curve); + if (curve == NULL) + return gnutls_assert_val( + GNUTLS_E_ECC_UNSUPPORTED_CURVE); - ret = _ecc_params_to_pubkey(params, &pub, curve); - if (ret < 0) - return gnutls_assert_val(ret); + ret = _ecc_params_to_pubkey(params, &pub, curve); + if (ret < 0) + return gnutls_assert_val(ret); - ecc_point_init(&r, curve); - /* verify that x,y lie on the curve */ - ret = - ecc_point_set(&r, TOMPZ(params->params[ECC_X]), - TOMPZ(params->params[ECC_Y])); - if (ret == 0) { - ret = - gnutls_assert_val - (GNUTLS_E_ILLEGAL_PARAMETER); - goto ecc_cleanup; - } - ecc_point_clear(&r); + ecc_point_init(&r, curve); + /* verify that x,y lie on the curve */ + ret = ecc_point_set(&r, TOMPZ(params->params[ECC_X]), + TOMPZ(params->params[ECC_Y])); + if (ret == 0) { + ret = gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER); + goto ecc_cleanup; + } + ecc_point_clear(&r); - ret = 0; + ret = 0; - ecc_cleanup: - ecc_point_clear(&pub); - } - break; + ecc_cleanup: + ecc_point_clear(&pub); + } break; #if ENABLE_GOST case GNUTLS_PK_GOST_01: case GNUTLS_PK_GOST_12_256: - case GNUTLS_PK_GOST_12_512: - { - /* just verify that x and y lie on the curve */ - struct ecc_point r, pub; - const struct ecc_curve *curve; + case GNUTLS_PK_GOST_12_512: { + /* just verify that x and y lie on the curve */ + struct ecc_point r, pub; + const struct ecc_curve *curve; - if (params->params_nr != GOST_PUBLIC_PARAMS) - return - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + if (params->params_nr != GOST_PUBLIC_PARAMS) + return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - curve = get_supported_gost_curve(params->curve); - if (curve == NULL) - return - gnutls_assert_val - (GNUTLS_E_ECC_UNSUPPORTED_CURVE); + curve = get_supported_gost_curve(params->curve); + if (curve == NULL) + return gnutls_assert_val( + GNUTLS_E_ECC_UNSUPPORTED_CURVE); - ret = _gost_params_to_pubkey(params, &pub, curve); - if (ret < 0) - return gnutls_assert_val(ret); + ret = _gost_params_to_pubkey(params, &pub, curve); + if (ret < 0) + return gnutls_assert_val(ret); - ecc_point_init(&r, curve); - /* verify that x,y lie on the curve */ - ret = - ecc_point_set(&r, TOMPZ(params->params[GOST_X]), - TOMPZ(params->params[GOST_Y])); - if (ret == 0) { - ret = - gnutls_assert_val - (GNUTLS_E_ILLEGAL_PARAMETER); - goto gost_cleanup; - } - ecc_point_clear(&r); + ecc_point_init(&r, curve); + /* verify that x,y lie on the curve */ + ret = ecc_point_set(&r, TOMPZ(params->params[GOST_X]), + TOMPZ(params->params[GOST_Y])); + if (ret == 0) { + ret = gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER); + goto gost_cleanup; + } + ecc_point_clear(&r); - ret = 0; + ret = 0; - gost_cleanup: - ecc_point_clear(&pub); - } - break; + gost_cleanup: + ecc_point_clear(&pub); + } break; #endif default: ret = gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); @@ -3920,7 +3661,7 @@ wrap_nettle_pk_verify_pub_params(gnutls_pk_algorithm_t algo, return ret; } -static int calc_rsa_exp(gnutls_pk_params_st * params) +static int calc_rsa_exp(gnutls_pk_params_st *params) { bigint_t tmp; int ret; @@ -3932,24 +3673,21 @@ static int calc_rsa_exp(gnutls_pk_params_st * params) params->params[RSA_E1] = params->params[RSA_E2] = NULL; - ret = - _gnutls_mpi_init_multi(&tmp, ¶ms->params[RSA_E1], - ¶ms->params[RSA_E2], NULL); + ret = _gnutls_mpi_init_multi(&tmp, ¶ms->params[RSA_E1], + ¶ms->params[RSA_E2], NULL); if (ret < 0) return gnutls_assert_val(ret); /* [6] = d % p-1, [7] = d % q-1 */ _gnutls_mpi_sub_ui(tmp, params->params[RSA_PRIME1], 1); - ret = - _gnutls_mpi_modm(params->params[RSA_E1], - params->params[RSA_PRIV] /*d */ , tmp); + ret = _gnutls_mpi_modm(params->params[RSA_E1], + params->params[RSA_PRIV] /*d */, tmp); if (ret < 0) goto fail; _gnutls_mpi_sub_ui(tmp, params->params[RSA_PRIME2], 1); - ret = - _gnutls_mpi_modm(params->params[RSA_E2], - params->params[RSA_PRIV] /*d */ , tmp); + ret = _gnutls_mpi_modm(params->params[RSA_E2], + params->params[RSA_PRIV] /*d */, tmp); if (ret < 0) goto fail; @@ -3957,7 +3695,7 @@ static int calc_rsa_exp(gnutls_pk_params_st * params) return 0; - fail: +fail: zrelease_mpi_key(&tmp); zrelease_mpi_key(¶ms->params[RSA_E1]); zrelease_mpi_key(¶ms->params[RSA_E2]); @@ -3965,16 +3703,15 @@ static int calc_rsa_exp(gnutls_pk_params_st * params) return ret; } -static int calc_rsa_priv(gnutls_pk_params_st * params) +static int calc_rsa_priv(gnutls_pk_params_st *params) { bigint_t lcm, p1, q1; int ret; params->params[RSA_PRIV] = NULL; - ret = - _gnutls_mpi_init_multi(¶ms->params[RSA_PRIV], &lcm, &p1, &q1, - NULL); + ret = _gnutls_mpi_init_multi(¶ms->params[RSA_PRIV], &lcm, &p1, &q1, + NULL); if (ret < 0) return gnutls_assert_val(ret); @@ -3987,8 +3724,8 @@ static int calc_rsa_priv(gnutls_pk_params_st * params) zrelease_mpi_key(&q1); /* d = e^{-1} (mod lcm) */ - ret = - mpz_invert(params->params[RSA_PRIV], params->params[RSA_PUB], lcm); + ret = mpz_invert(params->params[RSA_PRIV], params->params[RSA_PUB], + lcm); zrelease_mpi_key(&lcm); @@ -4000,7 +3737,7 @@ static int calc_rsa_priv(gnutls_pk_params_st * params) return 0; } -static int calc_dsa_pub(gnutls_pk_params_st * params) +static int calc_dsa_pub(gnutls_pk_params_st *params) { int ret; @@ -4021,9 +3758,9 @@ static int calc_dsa_pub(gnutls_pk_params_st * params) return 0; } -static int -wrap_nettle_pk_fixup(gnutls_pk_algorithm_t algo, - gnutls_direction_t direction, gnutls_pk_params_st * params) +static int wrap_nettle_pk_fixup(gnutls_pk_algorithm_t algo, + gnutls_direction_t direction, + gnutls_pk_params_st *params) { int ret; @@ -4083,22 +3820,21 @@ wrap_nettle_pk_fixup(gnutls_pk_algorithm_t algo, } else if (algo == GNUTLS_PK_EDDSA_ED25519 || algo == GNUTLS_PK_EDDSA_ED448) { if (unlikely(get_eddsa_curve(algo) != params->curve)) - return - gnutls_assert_val(GNUTLS_E_ECC_UNSUPPORTED_CURVE); + return gnutls_assert_val( + GNUTLS_E_ECC_UNSUPPORTED_CURVE); if (params->raw_priv.data == NULL) return gnutls_assert_val(GNUTLS_E_PK_INVALID_PRIVKEY); if (params->raw_pub.data == NULL) { params->raw_pub.data = - gnutls_malloc(params->raw_priv.size); + gnutls_malloc(params->raw_priv.size); } if (params->raw_pub.data == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - ret = eddsa_public_key(algo, - params->raw_pub.data, + ret = eddsa_public_key(algo, params->raw_pub.data, params->raw_priv.data); if (ret < 0) { gnutls_free(params->raw_pub.data); @@ -4106,24 +3842,24 @@ wrap_nettle_pk_fixup(gnutls_pk_algorithm_t algo, } params->raw_pub.size = params->raw_priv.size; - } else if (algo == GNUTLS_PK_ECDH_X25519 || algo == GNUTLS_PK_ECDH_X448) { + } else if (algo == GNUTLS_PK_ECDH_X25519 || + algo == GNUTLS_PK_ECDH_X448) { if (unlikely(get_ecdh_curve(algo) != params->curve)) - return - gnutls_assert_val(GNUTLS_E_ECC_UNSUPPORTED_CURVE); + return gnutls_assert_val( + GNUTLS_E_ECC_UNSUPPORTED_CURVE); if (params->raw_priv.data == NULL) return gnutls_assert_val(GNUTLS_E_PK_INVALID_PRIVKEY); if (params->raw_pub.data == NULL) { params->raw_pub.data = - gnutls_malloc(params->raw_priv.size); + gnutls_malloc(params->raw_priv.size); } if (params->raw_pub.data == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - ret = edwards_curve_mul_g(algo, - params->raw_pub.data, + ret = edwards_curve_mul_g(algo, params->raw_pub.data, params->raw_priv.data); if (ret < 0) { gnutls_free(params->raw_pub.data); @@ -4136,16 +3872,13 @@ wrap_nettle_pk_fixup(gnutls_pk_algorithm_t algo, return gnutls_assert_val(GNUTLS_E_PK_INVALID_PRIVKEY); if (params->spki.rsa_pss_dig != 0) { - unsigned pub_size = - nettle_mpz_sizeinbase_256_u(TOMPZ - (params->params - [RSA_MODULUS])); + unsigned pub_size = nettle_mpz_sizeinbase_256_u( + TOMPZ(params->params[RSA_MODULUS])); /* sanity check for private key */ - CHECK_INVALID_RSA_PSS_PARAMS(gnutls_hash_get_len - (params->spki.rsa_pss_dig), - params->spki.salt_size, - pub_size, - GNUTLS_E_PK_INVALID_PUBKEY_PARAMS); + CHECK_INVALID_RSA_PSS_PARAMS( + gnutls_hash_get_len(params->spki.rsa_pss_dig), + params->spki.salt_size, pub_size, + GNUTLS_E_PK_INVALID_PUBKEY_PARAMS); } } else if (algo == GNUTLS_PK_DSA) { if (params->params[DSA_Y] == NULL) { @@ -4156,8 +3889,7 @@ wrap_nettle_pk_fixup(gnutls_pk_algorithm_t algo, } } #if ENABLE_GOST - else if (algo == GNUTLS_PK_GOST_01 || - algo == GNUTLS_PK_GOST_12_256 || + else if (algo == GNUTLS_PK_GOST_01 || algo == GNUTLS_PK_GOST_12_256 || algo == GNUTLS_PK_GOST_12_512) { struct ecc_point r; struct ecc_scalar priv; @@ -4168,8 +3900,8 @@ wrap_nettle_pk_fixup(gnutls_pk_algorithm_t algo, curve = get_supported_gost_curve(params->curve); if (curve == NULL) - return gnutls_assert_val - (GNUTLS_E_ECC_UNSUPPORTED_CURVE); + return gnutls_assert_val( + GNUTLS_E_ECC_UNSUPPORTED_CURVE); if (ecc_bit_size(curve) < _gnutls_mpi_get_nbits(params->params[GOST_K])) diff --git a/lib/nettle/prf.c b/lib/nettle/prf.c index 02c5eae7a5..1d0a3ea797 100644 --- a/lib/nettle/prf.c +++ b/lib/nettle/prf.c @@ -24,7 +24,7 @@ #include "int/tls1-prf.h" #include #if ENABLE_GOST -# include "gost/hmac-gost.h" +#include "gost/hmac-gost.h" #endif /*- @@ -44,95 +44,83 @@ * * Returns: %GNUTLS_E_SUCCESS on success, or an error code. -*/ -int -_gnutls_prf_raw(gnutls_mac_algorithm_t mac, - size_t master_size, const void *master, - size_t label_size, const char *label, - size_t seed_size, const uint8_t * seed, size_t outsize, - char *out) +int _gnutls_prf_raw(gnutls_mac_algorithm_t mac, size_t master_size, + const void *master, size_t label_size, const char *label, + size_t seed_size, const uint8_t *seed, size_t outsize, + char *out) { int ret; switch (mac) { case GNUTLS_MAC_MD5_SHA1: - tls10_prf(master_size, (uint8_t *) master, label_size, label, - seed_size, seed, outsize, (uint8_t *) out); + tls10_prf(master_size, (uint8_t *)master, label_size, label, + seed_size, seed, outsize, (uint8_t *)out); return 0; - case GNUTLS_MAC_SHA256:{ - struct hmac_sha256_ctx ctx; - hmac_sha256_set_key(&ctx, master_size, - (uint8_t *) master); + case GNUTLS_MAC_SHA256: { + struct hmac_sha256_ctx ctx; + hmac_sha256_set_key(&ctx, master_size, (uint8_t *)master); - ret = tls12_prf(&ctx, (nettle_hash_update_func *) - hmac_sha256_update, - (nettle_hash_digest_func *) - hmac_sha256_digest, SHA256_DIGEST_SIZE, - label_size, label, seed_size, - seed, outsize, (uint8_t *) out); + ret = tls12_prf(&ctx, + (nettle_hash_update_func *)hmac_sha256_update, + (nettle_hash_digest_func *)hmac_sha256_digest, + SHA256_DIGEST_SIZE, label_size, label, + seed_size, seed, outsize, (uint8_t *)out); - if (unlikely(ret != 1)) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - break; - } - case GNUTLS_MAC_SHA384:{ - struct hmac_sha384_ctx ctx; - hmac_sha384_set_key(&ctx, master_size, master); + if (unlikely(ret != 1)) + return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + break; + } + case GNUTLS_MAC_SHA384: { + struct hmac_sha384_ctx ctx; + hmac_sha384_set_key(&ctx, master_size, master); - ret = tls12_prf(&ctx, (nettle_hash_update_func *) - hmac_sha384_update, - (nettle_hash_digest_func *) - hmac_sha384_digest, SHA384_DIGEST_SIZE, - label_size, label, seed_size, - seed, outsize, (uint8_t *) out); + ret = tls12_prf(&ctx, + (nettle_hash_update_func *)hmac_sha384_update, + (nettle_hash_digest_func *)hmac_sha384_digest, + SHA384_DIGEST_SIZE, label_size, label, + seed_size, seed, outsize, (uint8_t *)out); - if (unlikely(ret != 1)) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - break; - } + if (unlikely(ret != 1)) + return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + break; + } #if ENABLE_GOST - case GNUTLS_MAC_STREEBOG_256:{ - struct hmac_streebog256_ctx ctx; - hmac_streebog256_set_key(&ctx, master_size, master); + case GNUTLS_MAC_STREEBOG_256: { + struct hmac_streebog256_ctx ctx; + hmac_streebog256_set_key(&ctx, master_size, master); - ret = tls12_prf(&ctx, (nettle_hash_update_func *) - hmac_streebog256_update, - (nettle_hash_digest_func *) - hmac_streebog256_digest, - STREEBOG256_DIGEST_SIZE, label_size, - label, seed_size, seed, outsize, - (uint8_t *) out); + ret = tls12_prf( + &ctx, + (nettle_hash_update_func *)hmac_streebog256_update, + (nettle_hash_digest_func *)hmac_streebog256_digest, + STREEBOG256_DIGEST_SIZE, label_size, label, seed_size, + seed, outsize, (uint8_t *)out); - if (unlikely(ret != 1)) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - break; - } - case GNUTLS_MAC_STREEBOG_512:{ - struct hmac_streebog512_ctx ctx; - hmac_streebog512_set_key(&ctx, master_size, master); + if (unlikely(ret != 1)) + return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + break; + } + case GNUTLS_MAC_STREEBOG_512: { + struct hmac_streebog512_ctx ctx; + hmac_streebog512_set_key(&ctx, master_size, master); - ret = tls12_prf(&ctx, (nettle_hash_update_func *) - hmac_streebog512_update, - (nettle_hash_digest_func *) - hmac_streebog512_digest, - STREEBOG512_DIGEST_SIZE, label_size, - label, seed_size, seed, outsize, - (uint8_t *) out); + ret = tls12_prf( + &ctx, + (nettle_hash_update_func *)hmac_streebog512_update, + (nettle_hash_digest_func *)hmac_streebog512_digest, + STREEBOG512_DIGEST_SIZE, label_size, label, seed_size, + seed, outsize, (uint8_t *)out); - if (unlikely(ret != 1)) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - break; - } + if (unlikely(ret != 1)) + return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + break; + } #endif default: gnutls_assert(); _gnutls_debug_log("unhandled PRF %s\n", gnutls_mac_get_name(mac)); return GNUTLS_E_INVALID_REQUEST; - } return 0; diff --git a/lib/nettle/rnd-common.h b/lib/nettle/rnd-common.h index 32c63700ae..e744e31945 100644 --- a/lib/nettle/rnd-common.h +++ b/lib/nettle/rnd-common.h @@ -22,17 +22,17 @@ */ #ifndef GNUTLS_LIB_NETTLE_RND_COMMON_H -# define GNUTLS_LIB_NETTLE_RND_COMMON_H +#define GNUTLS_LIB_NETTLE_RND_COMMON_H -# include "gnutls_int.h" -# ifdef HAVE_GETPID -# include /* getpid */ -# endif -# ifdef HAVE_GETRUSAGE -# include -# endif +#include "gnutls_int.h" +#ifdef HAVE_GETPID +#include /* getpid */ +#endif +#ifdef HAVE_GETRUSAGE +#include +#endif -# include +#include int _rnd_system_entropy_init(void); void _rnd_system_entropy_deinit(void); @@ -41,4 +41,4 @@ typedef int (*get_entropy_func)(void *rnd, size_t size); extern get_entropy_func _rnd_get_system_entropy; -#endif /* GNUTLS_LIB_NETTLE_RND_COMMON_H */ +#endif /* GNUTLS_LIB_NETTLE_RND_COMMON_H */ diff --git a/lib/nettle/rnd-fips.c b/lib/nettle/rnd-fips.c index 591911e3b3..199de721be 100644 --- a/lib/nettle/rnd-fips.c +++ b/lib/nettle/rnd-fips.c @@ -48,7 +48,7 @@ struct fips_ctx { static int _rngfips_ctx_reinit(struct fips_ctx *fctx); static int _rngfips_ctx_init(struct fips_ctx *fctx); static int drbg_reseed(struct fips_ctx *fctx, struct drbg_aes_ctx *ctx); -static int get_entropy(struct fips_ctx *fctx, uint8_t * buffer, size_t length); +static int get_entropy(struct fips_ctx *fctx, uint8_t *buffer, size_t length); static int get_random(struct drbg_aes_ctx *ctx, struct fips_ctx *fctx, void *buffer, size_t length) @@ -81,7 +81,7 @@ static int get_random(struct drbg_aes_ctx *ctx, struct fips_ctx *fctx, return 0; } -static int get_entropy(struct fips_ctx *fctx, uint8_t * buffer, size_t length) +static int get_entropy(struct fips_ctx *fctx, uint8_t *buffer, size_t length) { int ret; uint8_t block[ENTROPY_BLOCK_SIZE]; @@ -123,7 +123,7 @@ static int get_entropy(struct fips_ctx *fctx, uint8_t * buffer, size_t length) } #define PSTRING "gnutls-rng" -#define PSTRING_SIZE (sizeof(PSTRING)-1) +#define PSTRING_SIZE (sizeof(PSTRING) - 1) static int drbg_init(struct fips_ctx *fctx, struct drbg_aes_ctx *ctx) { uint8_t buffer[DRBG_AES_SEED_SIZE]; @@ -135,8 +135,8 @@ static int drbg_init(struct fips_ctx *fctx, struct drbg_aes_ctx *ctx) return gnutls_assert_val(ret); } - ret = drbg_aes_init(ctx, sizeof(buffer), buffer, - PSTRING_SIZE, (void *)PSTRING); + ret = drbg_aes_init(ctx, sizeof(buffer), buffer, PSTRING_SIZE, + (void *)PSTRING); zeroize_key(buffer, sizeof(buffer)); if (ret == 0) { _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); @@ -228,7 +228,7 @@ static int _rngfips_ctx_reinit(struct fips_ctx *fctx) /* Initialize this random subsystem. */ static int _rngfips_init(void **_ctx) { -/* Basic initialization is required to + /* Basic initialization is required to do a few checks on the implementation. */ struct fips_ctx *ctx; int ret; diff --git a/lib/nettle/rnd-fuzzer.c b/lib/nettle/rnd-fuzzer.c index 687ab9faa5..99df435358 100644 --- a/lib/nettle/rnd-fuzzer.c +++ b/lib/nettle/rnd-fuzzer.c @@ -36,17 +36,17 @@ #ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION struct r48_rand_data { - unsigned short int __x[3]; /* Current state. */ - unsigned short int __old_x[3]; /* Old state. */ - unsigned short int __c; /* Additive const. in congruential formula. */ - unsigned short int __init; /* Flag for initializing. */ - __extension__ unsigned long long int __a; /* Factor in congruential + unsigned short int __x[3]; /* Current state. */ + unsigned short int __old_x[3]; /* Old state. */ + unsigned short int __c; /* Additive const. in congruential formula. */ + unsigned short int __init; /* Flag for initializing. */ + __extension__ unsigned long long int __a; /* Factor in congruential formula. */ }; -# ifdef __clang__ +#ifdef __clang__ __attribute__((no_sanitize("integer"))) -# endif +#endif static int __r48_rand_iterate(unsigned short int xsubi[3], struct r48_rand_data *buffer) { @@ -64,7 +64,7 @@ __r48_rand_iterate(unsigned short int xsubi[3], struct r48_rand_data *buffer) 48 bits. Because we compute the modulus it does not care how many bits really are computed. */ - X = (uint64_t) xsubi[2] << 32 | (uint32_t) xsubi[1] << 16 | xsubi[0]; + X = (uint64_t)xsubi[2] << 32 | (uint32_t)xsubi[1] << 16 | xsubi[0]; result = X * buffer->__a + buffer->__c; @@ -75,11 +75,11 @@ __r48_rand_iterate(unsigned short int xsubi[3], struct r48_rand_data *buffer) return 0; } -# ifdef __clang__ +#ifdef __clang__ __attribute__((no_sanitize("integer"))) -# elif defined __GNUC__ +#elif defined __GNUC__ __attribute__((no_sanitize("shift-base"))) -# endif +#endif static int r48_r(unsigned short int xsubi[3], struct r48_rand_data *buffer, long int *result) @@ -89,7 +89,7 @@ r48_r(unsigned short int xsubi[3], struct r48_rand_data *buffer, return -1; /* Store the result. */ - *result = (int32_t) ((xsubi[2] << 16) | xsubi[1]); + *result = (int32_t)((xsubi[2] << 16) | xsubi[1]); return 0; } @@ -147,4 +147,4 @@ gnutls_crypto_rnd_st _gnutls_fuzz_rnd_ops = { .self_test = NULL, }; -#endif /* FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION */ +#endif /* FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION */ diff --git a/lib/nettle/rnd.c b/lib/nettle/rnd.c index a7fe09db75..a24f8a9d6d 100644 --- a/lib/nettle/rnd.c +++ b/lib/nettle/rnd.c @@ -49,15 +49,20 @@ /* after this number of bytes PRNG will rekey using the system RNG */ static const unsigned prng_reseed_limits[] = { - [GNUTLS_RND_NONCE] = 16 * 1024 * 1024, /* 16 MB - we re-seed using the GNUTLS_RND_RANDOM output */ - [GNUTLS_RND_RANDOM] = 2 * 1024 * 1024, /* 2MB - we re-seed by time as well */ - [GNUTLS_RND_KEY] = 2 * 1024 * 1024 /* same as GNUTLS_RND_RANDOM - but we re-key on every operation */ + [GNUTLS_RND_NONCE] = + 16 * 1024 * + 1024, /* 16 MB - we re-seed using the GNUTLS_RND_RANDOM output */ + [GNUTLS_RND_RANDOM] = + 2 * 1024 * 1024, /* 2MB - we re-seed by time as well */ + [GNUTLS_RND_KEY] = + 2 * 1024 * + 1024 /* same as GNUTLS_RND_RANDOM - but we re-key on every operation */ }; static const time_t prng_reseed_time[] = { - [GNUTLS_RND_NONCE] = 14400, /* 4 hours */ - [GNUTLS_RND_RANDOM] = 7200, /* 2 hours */ - [GNUTLS_RND_KEY] = 7200 /* same as RANDOM */ + [GNUTLS_RND_NONCE] = 14400, /* 4 hours */ + [GNUTLS_RND_RANDOM] = 7200, /* 2 hours */ + [GNUTLS_RND_KEY] = 7200 /* same as RANDOM */ }; struct prng_ctx_st { @@ -68,8 +73,8 @@ struct prng_ctx_st { }; struct generators_ctx_st { - struct prng_ctx_st nonce; /* GNUTLS_RND_NONCE */ - struct prng_ctx_st normal; /* GNUTLS_RND_RANDOM, GNUTLS_RND_KEY */ + struct prng_ctx_st nonce; /* GNUTLS_RND_NONCE */ + struct prng_ctx_st normal; /* GNUTLS_RND_RANDOM, GNUTLS_RND_KEY */ }; static void wrap_nettle_rnd_deinit(void *_ctx) @@ -90,7 +95,7 @@ static int single_prng_init(struct prng_ctx_st *ctx, { uint8_t nonce[CHACHA_NONCE_SIZE]; - memset(nonce, 0, sizeof(nonce)); /* to prevent valgrind from whinning */ + memset(nonce, 0, sizeof(nonce)); /* to prevent valgrind from whinning */ if (init == 0) { /* use the previous key to generate IV as well */ @@ -100,7 +105,7 @@ static int single_prng_init(struct prng_ctx_st *ctx, * from the old key */ chacha_crypt(&ctx->ctx, new_key_size, new_key, new_key); } else { - struct timespec now; /* current time */ + struct timespec now; /* current time */ ctx->forkid = _gnutls_get_forkid(); @@ -145,9 +150,8 @@ static int wrap_nettle_rnd_init(void **_ctx) } /* initialize the random/key RNG */ - ret = - single_prng_init(&ctx->normal, new_key + PRNG_KEY_SIZE, - PRNG_KEY_SIZE, 1); + ret = single_prng_init(&ctx->normal, new_key + PRNG_KEY_SIZE, + PRNG_KEY_SIZE, 1); if (ret < 0) { gnutls_assert(); goto fail; @@ -156,7 +160,7 @@ static int wrap_nettle_rnd_init(void **_ctx) *_ctx = ctx; return 0; - fail: +fail: gnutls_free(ctx); return ret; } @@ -198,11 +202,9 @@ static int wrap_nettle_rnd(void *_ctx, int level, void *data, size_t datasize) if (reseed != 0 || prng_ctx->counter > prng_reseed_limits[level]) { if (level == GNUTLS_RND_NONCE) { - ret = - wrap_nettle_rnd(_ctx, GNUTLS_RND_RANDOM, new_key, - sizeof(new_key)); + ret = wrap_nettle_rnd(_ctx, GNUTLS_RND_RANDOM, new_key, + sizeof(new_key)); } else { - /* we also use the system entropy to reduce the impact * of a temporal state compromise for these two levels. */ ret = _rnd_get_system_entropy(new_key, sizeof(new_key)); @@ -228,10 +230,9 @@ static int wrap_nettle_rnd(void *_ctx, int level, void *data, size_t datasize) chacha_crypt(&prng_ctx->ctx, datasize, data, data); prng_ctx->counter += datasize; - if (level == GNUTLS_RND_KEY) { /* prevent backtracking */ - ret = - wrap_nettle_rnd(_ctx, GNUTLS_RND_RANDOM, new_key, - sizeof(new_key)); + if (level == GNUTLS_RND_KEY) { /* prevent backtracking */ + ret = wrap_nettle_rnd(_ctx, GNUTLS_RND_RANDOM, new_key, + sizeof(new_key)); if (ret < 0) { gnutls_assert(); _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); @@ -249,7 +250,7 @@ static int wrap_nettle_rnd(void *_ctx, int level, void *data, size_t datasize) ret = 0; _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_NOT_APPROVED); - cleanup: +cleanup: return ret; } diff --git a/lib/nettle/sysrng-bcrypt.c b/lib/nettle/sysrng-bcrypt.c index 5547b7becf..cbdb566bb0 100644 --- a/lib/nettle/sysrng-bcrypt.c +++ b/lib/nettle/sysrng-bcrypt.c @@ -52,8 +52,7 @@ get_entropy_func _rnd_get_system_entropy = NULL; static BCRYPT_ALG_HANDLE device_fd = 0; -static -int _rnd_get_system_entropy_win32(void *rnd, size_t size) +static int _rnd_get_system_entropy_win32(void *rnd, size_t size) { NTSTATUS err = BCryptGenRandom(device_fd, rnd, size, 0); if (!BCRYPT_SUCCESS(err)) { @@ -66,8 +65,8 @@ int _rnd_get_system_entropy_win32(void *rnd, size_t size) int _rnd_system_entropy_init(void) { - NTSTATUS err = BCryptOpenAlgorithmProvider - (&device_fd, BCRYPT_RNG_ALGORITHM, NULL, 0); + NTSTATUS err = BCryptOpenAlgorithmProvider( + &device_fd, BCRYPT_RNG_ALGORITHM, NULL, 0); if (!BCRYPT_SUCCESS(err)) { _gnutls_debug_log("error in BCryptOpenAlgorithmProvider!\n"); return GNUTLS_E_RANDOM_DEVICE_ERROR; diff --git a/lib/nettle/sysrng-getentropy.c b/lib/nettle/sysrng-getentropy.c index 0f0f3e11f7..7934f9af4b 100644 --- a/lib/nettle/sysrng-getentropy.c +++ b/lib/nettle/sysrng-getentropy.c @@ -35,7 +35,7 @@ #include #include #ifdef __APPLE__ -# include +#include #endif /* gnulib wants to claim strerror even if it cannot provide it. WTF */ @@ -57,8 +57,8 @@ static int _rnd_get_system_entropy_simple(void *_rnd, size_t size) if (getentropy(_rnd, size) < 0) { int e = errno; gnutls_assert(); - _gnutls_debug_log - ("Failed to use getentropy: %s\n", strerror(e)); + _gnutls_debug_log("Failed to use getentropy: %s\n", + strerror(e)); return GNUTLS_E_RANDOM_DEVICE_ERROR; } return 0; diff --git a/lib/nettle/sysrng-linux.c b/lib/nettle/sysrng-linux.c index e24709affe..241dd0a26e 100644 --- a/lib/nettle/sysrng-linux.c +++ b/lib/nettle/sysrng-linux.c @@ -26,11 +26,11 @@ */ #ifndef RND_NO_INCLUDES -# include "gnutls_int.h" -# include "errors.h" -# include -# include -# include +#include "gnutls_int.h" +#include "errors.h" +#include +#include +#include #endif #include @@ -49,29 +49,30 @@ get_entropy_func _rnd_get_system_entropy = NULL; #if defined(__linux__) -# ifdef HAVE_GETRANDOM -# include -# else -# include -# undef getrandom -# if defined(SYS_getrandom) -# define getrandom(dst,s,flags) syscall(SYS_getrandom, (void*)dst, (size_t)s, (unsigned int)flags) -# else +#ifdef HAVE_GETRANDOM +#include +#else +#include +#undef getrandom +#if defined(SYS_getrandom) +#define getrandom(dst, s, flags) \ + syscall(SYS_getrandom, (void *)dst, (size_t)s, (unsigned int)flags) +#else static ssize_t _getrandom0(void *buf, size_t buflen, unsigned int flags) { errno = ENOSYS; return -1; } -# define getrandom(dst,s,flags) _getrandom0(dst,s,flags) -# endif -# endif +#define getrandom(dst, s, flags) _getrandom0(dst, s, flags) +#endif +#endif static unsigned have_getrandom(void) { char c; int ret; - ret = getrandom(&c, 1, 1 /*GRND_NONBLOCK */ ); + ret = getrandom(&c, 1, 1 /*GRND_NONBLOCK */); if (ret == 1 || (ret == -1 && errno == EAGAIN)) return 1; return 0; @@ -113,8 +114,8 @@ static int _rnd_get_system_entropy_getrandom(void *_rnd, size_t size) return 0; } -#else /* not linux */ -# define have_getrandom() 0 +#else /* not linux */ +#define have_getrandom() 0 #endif static int _rnd_get_system_entropy_urandom(void *_rnd, size_t size) @@ -138,12 +139,12 @@ static int _rnd_get_system_entropy_urandom(void *_rnd, size_t size) if (res <= 0) { int e = errno; if (res < 0) { - _gnutls_debug_log - ("Failed to read /dev/urandom: %s\n", - strerror(e)); + _gnutls_debug_log( + "Failed to read /dev/urandom: %s\n", + strerror(e)); } else { - _gnutls_debug_log - ("Failed to read /dev/urandom: end of file\n"); + _gnutls_debug_log( + "Failed to read /dev/urandom: end of file\n"); } close(urandom_fd); @@ -177,8 +178,8 @@ int _rnd_system_entropy_init(void) /* Check that we can open it */ urandom_fd = open("/dev/urandom", O_RDONLY); if (urandom_fd < 0) { - _gnutls_debug_log - ("Cannot open /dev/urandom during initialization!\n"); + _gnutls_debug_log( + "Cannot open /dev/urandom during initialization!\n"); return gnutls_assert_val(GNUTLS_E_RANDOM_DEVICE_ERROR); } close(urandom_fd); diff --git a/lib/nettle/sysrng-netbsd.c b/lib/nettle/sysrng-netbsd.c index 15bce72438..1fa1e33b50 100644 --- a/lib/nettle/sysrng-netbsd.c +++ b/lib/nettle/sysrng-netbsd.c @@ -35,7 +35,7 @@ #include -#define ARRAY_SIZE(A) (sizeof(A)/sizeof((A)[0])) +#define ARRAY_SIZE(A) (sizeof(A) / sizeof((A)[0])) get_entropy_func _rnd_get_system_entropy = NULL; @@ -55,7 +55,7 @@ static int _rnd_get_system_entropy_sysctl(void *_rnd, size_t size) } if (count != req) { - return GNUTLS_E_RANDOM_DEVICE_ERROR; /* Can't happen. */ + return GNUTLS_E_RANDOM_DEVICE_ERROR; /* Can't happen. */ } p += count; diff --git a/lib/nettle/sysrng-windows.c b/lib/nettle/sysrng-windows.c index 9694dd6ed7..af11e437a1 100644 --- a/lib/nettle/sysrng-windows.c +++ b/lib/nettle/sysrng-windows.c @@ -52,10 +52,9 @@ get_entropy_func _rnd_get_system_entropy = NULL; static HCRYPTPROV device_fd = 0; -static -int _rnd_get_system_entropy_win32(void *rnd, size_t size) +static int _rnd_get_system_entropy_win32(void *rnd, size_t size) { - if (!CryptGenRandom(device_fd, (DWORD) size, rnd)) { + if (!CryptGenRandom(device_fd, (DWORD)size, rnd)) { _gnutls_debug_log("Error in CryptGenRandom: %d\n", (int)GetLastError()); return GNUTLS_E_RANDOM_DEVICE_ERROR; @@ -66,9 +65,8 @@ int _rnd_get_system_entropy_win32(void *rnd, size_t size) int _rnd_system_entropy_init(void) { - if (!CryptAcquireContext - (&device_fd, NULL, NULL, PROV_RSA_FULL, - CRYPT_SILENT | CRYPT_VERIFYCONTEXT)) { + if (!CryptAcquireContext(&device_fd, NULL, NULL, PROV_RSA_FULL, + CRYPT_SILENT | CRYPT_VERIFYCONTEXT)) { _gnutls_debug_log("error in CryptAcquireContext!\n"); return GNUTLS_E_RANDOM_DEVICE_ERROR; } diff --git a/lib/num.h b/lib/num.h index b74f5a4f60..26fd4d04c9 100644 --- a/lib/num.h +++ b/lib/num.h @@ -21,100 +21,98 @@ */ #ifndef GNUTLS_LIB_NUM_H -# define GNUTLS_LIB_NUM_H +#define GNUTLS_LIB_NUM_H -# include "gnutls_int.h" +#include "gnutls_int.h" -# include -# include +#include +#include /* data should be at least 3 bytes */ -inline static uint32_t _gnutls_read_uint24(const uint8_t * data) +inline static uint32_t _gnutls_read_uint24(const uint8_t *data) { return (data[0] << 16) | (data[1] << 8) | (data[2]); } -inline static uint64_t _gnutls_read_uint64(const uint8_t * data) +inline static uint64_t _gnutls_read_uint64(const uint8_t *data) { uint64_t res; memcpy(&res, data, sizeof(uint64_t)); -# ifndef WORDS_BIGENDIAN +#ifndef WORDS_BIGENDIAN res = bswap_64(res); -# endif +#endif return res; } -inline static void _gnutls_write_uint64(uint64_t num, uint8_t * data) +inline static void _gnutls_write_uint64(uint64_t num, uint8_t *data) { -# ifndef WORDS_BIGENDIAN +#ifndef WORDS_BIGENDIAN num = bswap_64(num); -# endif +#endif memcpy(data, &num, 8); } -inline static void _gnutls_write_uint24(uint32_t num, uint8_t * data) +inline static void _gnutls_write_uint24(uint32_t num, uint8_t *data) { data[0] = num >> 16; data[1] = num >> 8; data[2] = num; } -inline static uint32_t _gnutls_read_uint32(const uint8_t * data) +inline static uint32_t _gnutls_read_uint32(const uint8_t *data) { uint32_t res; memcpy(&res, data, sizeof(uint32_t)); -# ifndef WORDS_BIGENDIAN +#ifndef WORDS_BIGENDIAN res = bswap_32(res); -# endif +#endif return res; } -inline static void _gnutls_write_uint32(uint32_t num, uint8_t * data) +inline static void _gnutls_write_uint32(uint32_t num, uint8_t *data) { - -# ifndef WORDS_BIGENDIAN +#ifndef WORDS_BIGENDIAN num = bswap_32(num); -# endif +#endif memcpy(data, &num, sizeof(uint32_t)); } -inline static uint16_t _gnutls_read_uint16(const uint8_t * data) +inline static uint16_t _gnutls_read_uint16(const uint8_t *data) { uint16_t res; memcpy(&res, data, sizeof(uint16_t)); -# ifndef WORDS_BIGENDIAN +#ifndef WORDS_BIGENDIAN res = bswap_16(res); -# endif +#endif return res; } -inline static void _gnutls_write_uint16(uint16_t num, uint8_t * data) +inline static void _gnutls_write_uint16(uint16_t num, uint8_t *data) { - -# ifndef WORDS_BIGENDIAN +#ifndef WORDS_BIGENDIAN num = bswap_16(num); -# endif +#endif memcpy(data, &num, sizeof(uint16_t)); } inline static uint32_t _gnutls_conv_uint32(uint32_t data) { -# ifndef WORDS_BIGENDIAN +#ifndef WORDS_BIGENDIAN return bswap_32(data); -# else +#else return data; -# endif +#endif } inline static uint16_t _gnutls_conv_uint16(uint16_t data) { -# ifndef WORDS_BIGENDIAN +#ifndef WORDS_BIGENDIAN return bswap_16(data); -# else +#else return data; -# endif +#endif } -#endif /* GNUTLS_LIB_NUM_H */ +#endif /* GNUTLS_LIB_NUM_H */ diff --git a/lib/ocsp-api.c b/lib/ocsp-api.c index 59e8973f94..d8e04912ae 100644 --- a/lib/ocsp-api.c +++ b/lib/ocsp-api.c @@ -34,8 +34,8 @@ #ifdef ENABLE_OCSP -# include -# include "x509/ocsp.h" +#include +#include "x509/ocsp.h" /** * gnutls_ocsp_status_request_get: @@ -52,9 +52,8 @@ * * Since: 3.1.3 **/ -int -gnutls_ocsp_status_request_get(gnutls_session_t session, - gnutls_datum_t * response) +int gnutls_ocsp_status_request_get(gnutls_session_t session, + gnutls_datum_t *response) { return gnutls_ocsp_status_request_get2(session, 0, response); } @@ -81,20 +80,19 @@ gnutls_ocsp_status_request_get(gnutls_session_t session, * * Since: 3.6.3 **/ -int -gnutls_ocsp_status_request_get2(gnutls_session_t session, - unsigned idx, gnutls_datum_t * response) +int gnutls_ocsp_status_request_get2(gnutls_session_t session, unsigned idx, + gnutls_datum_t *response) { const version_entry_st *ver = get_version(session); cert_auth_info_t info = - _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE); + _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE); - if (!ver->tls13_sem - && session->security_parameters.entity == GNUTLS_SERVER) + if (!ver->tls13_sem && + session->security_parameters.entity == GNUTLS_SERVER) return gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); - if (info == NULL || info->raw_ocsp_list == NULL || - info->nocsp <= idx || info->raw_ocsp_list[idx].size == 0) + if (info == NULL || info->raw_ocsp_list == NULL || info->nocsp <= idx || + info->raw_ocsp_list[idx].size == 0) return gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); response->data = info->raw_ocsp_list[idx].data; @@ -129,11 +127,10 @@ gnutls_ocsp_status_request_get2(gnutls_session_t session, * * Since: 3.1.3 **/ -void - gnutls_certificate_set_ocsp_status_request_function - (gnutls_certificate_credentials_t sc, - gnutls_status_request_ocsp_func ocsp_func, void *ptr) { - +void gnutls_certificate_set_ocsp_status_request_function( + gnutls_certificate_credentials_t sc, + gnutls_status_request_ocsp_func ocsp_func, void *ptr) +{ sc->glob_ocsp_func = ocsp_func; sc->glob_ocsp_func_ptr = ptr; } @@ -173,10 +170,10 @@ void * * Since: 3.5.5 **/ -int - gnutls_certificate_set_ocsp_status_request_function2 - (gnutls_certificate_credentials_t sc, unsigned idx, - gnutls_status_request_ocsp_func ocsp_func, void *ptr) { +int gnutls_certificate_set_ocsp_status_request_function2( + gnutls_certificate_credentials_t sc, unsigned idx, + gnutls_status_request_ocsp_func ocsp_func, void *ptr) +{ if (idx >= sc->ncerts) return gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); @@ -186,9 +183,8 @@ int return 0; } -static -unsigned resp_matches_pcert(gnutls_ocsp_resp_t resp, - const gnutls_pcert_st * cert) +static unsigned resp_matches_pcert(gnutls_ocsp_resp_t resp, + const gnutls_pcert_st *cert) { gnutls_x509_crt_t crt; int ret; @@ -211,7 +207,7 @@ unsigned resp_matches_pcert(gnutls_ocsp_resp_t resp, else retval = 0; - cleanup: +cleanup: gnutls_x509_crt_deinit(crt); return retval; } @@ -250,17 +246,14 @@ unsigned resp_matches_pcert(gnutls_ocsp_resp_t resp, * * Since: 3.1.3 **/ -int -gnutls_certificate_set_ocsp_status_request_file(gnutls_certificate_credentials_t - sc, const char *response_file, - unsigned idx) +int gnutls_certificate_set_ocsp_status_request_file( + gnutls_certificate_credentials_t sc, const char *response_file, + unsigned idx) { int ret; - ret = - gnutls_certificate_set_ocsp_status_request_file2(sc, response_file, - idx, - GNUTLS_X509_FMT_DER); + ret = gnutls_certificate_set_ocsp_status_request_file2( + sc, response_file, idx, GNUTLS_X509_FMT_DER); if (ret >= 0) return 0; else @@ -268,14 +261,14 @@ gnutls_certificate_set_ocsp_status_request_file(gnutls_certificate_credentials_t } static int append_response(gnutls_certificate_credentials_t sc, unsigned idx, - gnutls_ocsp_resp_t resp, const gnutls_datum_t * der) + gnutls_ocsp_resp_t resp, const gnutls_datum_t *der) { int ret; unsigned i, found = 0; unsigned try_already_set = 0; time_t t; - retry: +retry: /* iterate through all certificates in chain, and add the response * to the certificate that it matches with. @@ -283,8 +276,8 @@ static int append_response(gnutls_certificate_credentials_t sc, unsigned idx, for (i = 0; i < MIN(sc->certs[idx].cert_list_length, MAX_OCSP_RESPONSES); i++) { - if (!try_already_set - && sc->certs[idx].ocsp_data[i].response.data) + if (!try_already_set && + sc->certs[idx].ocsp_data[i].response.data) continue; if (!resp_matches_pcert(resp, &sc->certs[idx].cert_list[i])) @@ -292,15 +285,15 @@ static int append_response(gnutls_certificate_credentials_t sc, unsigned idx, t = _gnutls_ocsp_get_validity(resp); /* if already invalid */ - if (t == (time_t) - 1) { - _gnutls_debug_log - ("the OCSP response associated with chain %d on pos %d, is invalid/expired\n", - idx, i); + if (t == (time_t)-1) { + _gnutls_debug_log( + "the OCSP response associated with chain %d on pos %d, is invalid/expired\n", + idx, i); return GNUTLS_E_EXPIRED; - } else if (t == (time_t) - 2) { - _gnutls_debug_log - ("the OCSP response associated with chain %d on pos %d, is too old (ignoring)\n", - idx, i); + } else if (t == (time_t)-2) { + _gnutls_debug_log( + "the OCSP response associated with chain %d on pos %d, is too old (ignoring)\n", + idx, i); return 0; } @@ -309,9 +302,9 @@ static int append_response(gnutls_certificate_credentials_t sc, unsigned idx, else sc->certs[idx].ocsp_data[i].exptime = 0; - _gnutls_debug_log - ("associating OCSP response with chain %d on pos %d\n", idx, - i); + _gnutls_debug_log( + "associating OCSP response with chain %d on pos %d\n", + idx, i); gnutls_free(sc->certs[idx].ocsp_data[i].response.data); @@ -375,9 +368,10 @@ static int append_response(gnutls_certificate_credentials_t sc, unsigned idx, * * Since: 3.1.3 **/ -int gnutls_certificate_set_ocsp_status_request_file2 - (gnutls_certificate_credentials_t sc, const char *response_file, - unsigned idx, gnutls_x509_crt_fmt_t fmt) { +int gnutls_certificate_set_ocsp_status_request_file2( + gnutls_certificate_credentials_t sc, const char *response_file, + unsigned idx, gnutls_x509_crt_fmt_t fmt) +{ gnutls_datum_t raw = { NULL, 0 }; int ret; @@ -388,14 +382,14 @@ int gnutls_certificate_set_ocsp_status_request_file2 if (ret < 0) return gnutls_assert_val(GNUTLS_E_FILE_ERROR); - ret = - gnutls_certificate_set_ocsp_status_request_mem(sc, &raw, idx, fmt); + ret = gnutls_certificate_set_ocsp_status_request_mem(sc, &raw, idx, + fmt); gnutls_free(raw.data); return ret; } -# define PEM_OCSP_RESPONSE "OCSP RESPONSE" -# define FULL_PEM_OCSP_RESPONSE "-----BEGIN OCSP RESPONSE" +#define PEM_OCSP_RESPONSE "OCSP RESPONSE" +#define FULL_PEM_OCSP_RESPONSE "-----BEGIN OCSP RESPONSE" /** * gnutls_certificate_set_ocsp_status_request_mem: @@ -430,12 +424,9 @@ int gnutls_certificate_set_ocsp_status_request_file2 * * Since: 3.6.3 **/ -int -gnutls_certificate_set_ocsp_status_request_mem(gnutls_certificate_credentials_t - sc, - const gnutls_datum_t * resp_data, - unsigned idx, - gnutls_x509_crt_fmt_t fmt) +int gnutls_certificate_set_ocsp_status_request_mem( + gnutls_certificate_credentials_t sc, const gnutls_datum_t *resp_data, + unsigned idx, gnutls_x509_crt_fmt_t fmt) { gnutls_datum_t der = { NULL, 0 }; gnutls_ocsp_resp_t resp = NULL; @@ -454,34 +445,28 @@ gnutls_certificate_set_ocsp_status_request_mem(gnutls_certificate_credentials_t p.data = memmem(p.data, p.size, FULL_PEM_OCSP_RESPONSE, sizeof(FULL_PEM_OCSP_RESPONSE) - 1); if (p.data == NULL) { - ret = - gnutls_assert_val - (GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); + ret = gnutls_assert_val( + GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); goto cleanup; } p.size -= p.data - resp_data->data; if (p.size <= 0) { - ret = - gnutls_assert_val - (GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); + ret = gnutls_assert_val( + GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); goto cleanup; } do { - ret = - gnutls_pem_base64_decode2(PEM_OCSP_RESPONSE, &p, - &der); + ret = gnutls_pem_base64_decode2(PEM_OCSP_RESPONSE, &p, + &der); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - gnutls_certificate_set_ocsp_status_request_mem(sc, - &der, - idx, - GNUTLS_X509_FMT_DER); + ret = gnutls_certificate_set_ocsp_status_request_mem( + sc, &der, idx, GNUTLS_X509_FMT_DER); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -504,12 +489,11 @@ gnutls_certificate_set_ocsp_status_request_mem(gnutls_certificate_credentials_t } else { /* DER: load a single response */ if (sc->flags & GNUTLS_CERTIFICATE_SKIP_OCSP_RESPONSE_CHECK) { - ret = - gnutls_ocsp_resp_import2(resp, resp_data, - GNUTLS_X509_FMT_DER); + ret = gnutls_ocsp_resp_import2(resp, resp_data, + GNUTLS_X509_FMT_DER); if (ret >= 0) { sc->certs[idx].ocsp_data[0].exptime = - _gnutls_ocsp_get_validity(resp); + _gnutls_ocsp_get_validity(resp); if (sc->certs[idx].ocsp_data[0].exptime <= 0) sc->certs[idx].ocsp_data[0].exptime = 0; } @@ -517,10 +501,9 @@ gnutls_certificate_set_ocsp_status_request_mem(gnutls_certificate_credentials_t /* quick load of first response */ gnutls_free(sc->certs[idx].ocsp_data[0].response.data); - ret = - _gnutls_set_datum(&sc->certs[idx]. - ocsp_data[0].response, - resp_data->data, resp_data->size); + ret = _gnutls_set_datum( + &sc->certs[idx].ocsp_data[0].response, + resp_data->data, resp_data->size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -530,9 +513,8 @@ gnutls_certificate_set_ocsp_status_request_mem(gnutls_certificate_credentials_t goto cleanup; } - ret = - gnutls_ocsp_resp_import2(resp, resp_data, - GNUTLS_X509_FMT_DER); + ret = gnutls_ocsp_resp_import2(resp, resp_data, + GNUTLS_X509_FMT_DER); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -546,7 +528,7 @@ gnutls_certificate_set_ocsp_status_request_mem(gnutls_certificate_credentials_t ret = 1; } - cleanup: +cleanup: gnutls_free(der.data); if (resp) gnutls_ocsp_resp_deinit(resp); @@ -585,14 +567,14 @@ gnutls_certificate_get_ocsp_expiration(gnutls_certificate_credentials_t sc, unsigned j; if (idx >= sc->ncerts) - return (time_t) - 2; + return (time_t)-2; if (oidx == -1) { time_t min = 0; - for (j = 0; - j < MIN(sc->certs[idx].cert_list_length, - MAX_OCSP_RESPONSES); j++) { + for (j = 0; j < MIN(sc->certs[idx].cert_list_length, + MAX_OCSP_RESPONSES); + j++) { if (min <= 0) min = sc->certs[idx].ocsp_data[j].exptime; else if (sc->certs[idx].ocsp_data[j].exptime > 0 && @@ -602,12 +584,12 @@ gnutls_certificate_get_ocsp_expiration(gnutls_certificate_credentials_t sc, return min; } - if (oidx >= MAX_OCSP_RESPONSES - || (unsigned)oidx >= sc->certs[idx].cert_list_length) - return (time_t) - 2; + if (oidx >= MAX_OCSP_RESPONSES || + (unsigned)oidx >= sc->certs[idx].cert_list_length) + return (time_t)-2; if (sc->certs[idx].ocsp_data[oidx].response.data == NULL) - return (time_t) - 1; + return (time_t)-1; return sc->certs[idx].ocsp_data[oidx].exptime; } @@ -640,9 +622,8 @@ gnutls_certificate_get_ocsp_expiration(gnutls_certificate_credentials_t sc, * * Since: 3.1.4 **/ -unsigned -gnutls_ocsp_status_request_is_checked(gnutls_session_t session, - unsigned int flags) +unsigned gnutls_ocsp_status_request_is_checked(gnutls_session_t session, + unsigned int flags) { int ret; gnutls_datum_t data; diff --git a/lib/openpgp_compat.c b/lib/openpgp_compat.c index 6371daba97..82e547ba55 100644 --- a/lib/openpgp_compat.c +++ b/lib/openpgp_compat.c @@ -28,7 +28,7 @@ #include #include -int gnutls_openpgp_crt_init(gnutls_openpgp_crt_t * key) +int gnutls_openpgp_crt_init(gnutls_openpgp_crt_t *key) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } @@ -39,7 +39,7 @@ void gnutls_openpgp_crt_deinit(gnutls_openpgp_crt_t key) } int gnutls_openpgp_crt_import(gnutls_openpgp_crt_t key, - const gnutls_datum_t * data, + const gnutls_datum_t *data, gnutls_openpgp_crt_fmt_t format) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; @@ -54,14 +54,14 @@ int gnutls_openpgp_crt_export(gnutls_openpgp_crt_t key, int gnutls_openpgp_crt_export2(gnutls_openpgp_crt_t key, gnutls_openpgp_crt_fmt_t format, - gnutls_datum_t * out) + gnutls_datum_t *out) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } int gnutls_openpgp_crt_print(gnutls_openpgp_crt_t cert, - gnutls_certificate_print_formats_t - format, gnutls_datum_t * out) + gnutls_certificate_print_formats_t format, + gnutls_datum_t *out) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } @@ -72,22 +72,21 @@ int gnutls_openpgp_crt_get_key_usage(gnutls_openpgp_crt_t key, return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int gnutls_openpgp_crt_get_fingerprint(gnutls_openpgp_crt_t key, - void *fpr, size_t *fprlen) +int gnutls_openpgp_crt_get_fingerprint(gnutls_openpgp_crt_t key, void *fpr, + size_t *fprlen) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int gnutls_openpgp_crt_get_subkey_fingerprint(gnutls_openpgp_crt_t - key, - unsigned int idx, - void *fpr, size_t *fprlen) +int gnutls_openpgp_crt_get_subkey_fingerprint(gnutls_openpgp_crt_t key, + unsigned int idx, void *fpr, + size_t *fprlen) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int gnutls_openpgp_crt_get_name(gnutls_openpgp_crt_t key, - int idx, char *buf, size_t *sizeof_buf) +int gnutls_openpgp_crt_get_name(gnutls_openpgp_crt_t key, int idx, char *buf, + size_t *sizeof_buf) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } @@ -106,12 +105,12 @@ int gnutls_openpgp_crt_get_version(gnutls_openpgp_crt_t key) time_t gnutls_openpgp_crt_get_creation_time(gnutls_openpgp_crt_t key) { - return (time_t) - 1; + return (time_t)-1; } time_t gnutls_openpgp_crt_get_expiration_time(gnutls_openpgp_crt_t key) { - return (time_t) - 1; + return (time_t)-1; } int gnutls_openpgp_crt_get_key_id(gnutls_openpgp_crt_t key, @@ -132,9 +131,8 @@ int gnutls_openpgp_crt_check_hostname2(gnutls_openpgp_crt_t key, return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int -gnutls_openpgp_crt_check_email(gnutls_openpgp_crt_t key, const char *email, - unsigned flags) +int gnutls_openpgp_crt_check_email(gnutls_openpgp_crt_t key, const char *email, + unsigned flags) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } @@ -155,33 +153,32 @@ int gnutls_openpgp_crt_get_subkey_idx(gnutls_openpgp_crt_t key, return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int gnutls_openpgp_crt_get_subkey_revoked_status - (gnutls_openpgp_crt_t key, unsigned int idx) { +int gnutls_openpgp_crt_get_subkey_revoked_status(gnutls_openpgp_crt_t key, + unsigned int idx) +{ return GNUTLS_E_UNIMPLEMENTED_FEATURE; } gnutls_pk_algorithm_t -gnutls_openpgp_crt_get_subkey_pk_algorithm(gnutls_openpgp_crt_t - key, +gnutls_openpgp_crt_get_subkey_pk_algorithm(gnutls_openpgp_crt_t key, unsigned int idx, unsigned int *bits) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -time_t - gnutls_openpgp_crt_get_subkey_creation_time - (gnutls_openpgp_crt_t key, unsigned int idx) { - return (time_t) - 1; +time_t gnutls_openpgp_crt_get_subkey_creation_time(gnutls_openpgp_crt_t key, + unsigned int idx) +{ + return (time_t)-1; } -time_t - gnutls_openpgp_crt_get_subkey_expiration_time - (gnutls_openpgp_crt_t key, unsigned int idx) { - return (time_t) - 1; +time_t gnutls_openpgp_crt_get_subkey_expiration_time(gnutls_openpgp_crt_t key, + unsigned int idx) +{ + return (time_t)-1; } -int gnutls_openpgp_crt_get_subkey_id(gnutls_openpgp_crt_t key, - unsigned int idx, +int gnutls_openpgp_crt_get_subkey_id(gnutls_openpgp_crt_t key, unsigned int idx, gnutls_openpgp_keyid_t keyid) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; @@ -194,54 +191,49 @@ int gnutls_openpgp_crt_get_subkey_usage(gnutls_openpgp_crt_t key, return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int gnutls_openpgp_crt_get_subkey_pk_dsa_raw(gnutls_openpgp_crt_t - crt, unsigned int idx, - gnutls_datum_t * p, - gnutls_datum_t * q, - gnutls_datum_t * g, - gnutls_datum_t * y) +int gnutls_openpgp_crt_get_subkey_pk_dsa_raw( + gnutls_openpgp_crt_t crt, unsigned int idx, gnutls_datum_t *p, + gnutls_datum_t *q, gnutls_datum_t *g, gnutls_datum_t *y) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int gnutls_openpgp_crt_get_subkey_pk_rsa_raw(gnutls_openpgp_crt_t - crt, unsigned int idx, - gnutls_datum_t * m, - gnutls_datum_t * e) +int gnutls_openpgp_crt_get_subkey_pk_rsa_raw(gnutls_openpgp_crt_t crt, + unsigned int idx, + gnutls_datum_t *m, + gnutls_datum_t *e) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } int gnutls_openpgp_crt_get_pk_dsa_raw(gnutls_openpgp_crt_t crt, - gnutls_datum_t * p, - gnutls_datum_t * q, - gnutls_datum_t * g, gnutls_datum_t * y) + gnutls_datum_t *p, gnutls_datum_t *q, + gnutls_datum_t *g, gnutls_datum_t *y) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } int gnutls_openpgp_crt_get_pk_rsa_raw(gnutls_openpgp_crt_t crt, - gnutls_datum_t * m, gnutls_datum_t * e) + gnutls_datum_t *m, gnutls_datum_t *e) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int gnutls_openpgp_crt_get_preferred_key_id(gnutls_openpgp_crt_t - key, gnutls_openpgp_keyid_t keyid) +int gnutls_openpgp_crt_get_preferred_key_id(gnutls_openpgp_crt_t key, + gnutls_openpgp_keyid_t keyid) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int -gnutls_openpgp_crt_set_preferred_key_id(gnutls_openpgp_crt_t key, - const gnutls_openpgp_keyid_t keyid) +int gnutls_openpgp_crt_set_preferred_key_id(gnutls_openpgp_crt_t key, + const gnutls_openpgp_keyid_t keyid) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } /* privkey stuff. */ -int gnutls_openpgp_privkey_init(gnutls_openpgp_privkey_t * key) +int gnutls_openpgp_privkey_init(gnutls_openpgp_privkey_t *key) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } @@ -252,8 +244,9 @@ void gnutls_openpgp_privkey_deinit(gnutls_openpgp_privkey_t key) } gnutls_pk_algorithm_t - gnutls_openpgp_privkey_get_pk_algorithm - (gnutls_openpgp_privkey_t key, unsigned int *bits) { +gnutls_openpgp_privkey_get_pk_algorithm(gnutls_openpgp_privkey_t key, + unsigned int *bits) +{ return GNUTLS_PK_UNKNOWN; } @@ -264,22 +257,23 @@ gnutls_openpgp_privkey_sec_param(gnutls_openpgp_privkey_t key) } int gnutls_openpgp_privkey_import(gnutls_openpgp_privkey_t key, - const gnutls_datum_t * data, + const gnutls_datum_t *data, gnutls_openpgp_crt_fmt_t format, const char *password, unsigned int flags) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int gnutls_openpgp_privkey_get_fingerprint(gnutls_openpgp_privkey_t - key, void *fpr, size_t *fprlen) +int gnutls_openpgp_privkey_get_fingerprint(gnutls_openpgp_privkey_t key, + void *fpr, size_t *fprlen) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int gnutls_openpgp_privkey_get_subkey_fingerprint - (gnutls_openpgp_privkey_t key, unsigned int idx, void *fpr, - size_t *fprlen) { +int gnutls_openpgp_privkey_get_subkey_fingerprint(gnutls_openpgp_privkey_t key, + unsigned int idx, void *fpr, + size_t *fprlen) +{ return GNUTLS_E_UNIMPLEMENTED_FEATURE; } @@ -294,15 +288,15 @@ int gnutls_openpgp_privkey_get_subkey_count(gnutls_openpgp_privkey_t key) return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int gnutls_openpgp_privkey_get_subkey_idx(gnutls_openpgp_privkey_t - key, +int gnutls_openpgp_privkey_get_subkey_idx(gnutls_openpgp_privkey_t key, const gnutls_openpgp_keyid_t keyid) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int gnutls_openpgp_privkey_get_subkey_revoked_status - (gnutls_openpgp_privkey_t key, unsigned int idx) { +int gnutls_openpgp_privkey_get_subkey_revoked_status( + gnutls_openpgp_privkey_t key, unsigned int idx) +{ return GNUTLS_E_UNIMPLEMENTED_FEATURE; } @@ -311,70 +305,68 @@ int gnutls_openpgp_privkey_get_revoked_status(gnutls_openpgp_privkey_t key) return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -gnutls_pk_algorithm_t - gnutls_openpgp_privkey_get_subkey_pk_algorithm - (gnutls_openpgp_privkey_t key, unsigned int idx, unsigned int *bits) { +gnutls_pk_algorithm_t gnutls_openpgp_privkey_get_subkey_pk_algorithm( + gnutls_openpgp_privkey_t key, unsigned int idx, unsigned int *bits) +{ return GNUTLS_PK_UNKNOWN; } time_t - gnutls_openpgp_privkey_get_subkey_expiration_time - (gnutls_openpgp_privkey_t key, unsigned int idx) { - return (time_t) - 1; +gnutls_openpgp_privkey_get_subkey_expiration_time(gnutls_openpgp_privkey_t key, + unsigned int idx) +{ + return (time_t)-1; } -int gnutls_openpgp_privkey_get_subkey_id(gnutls_openpgp_privkey_t - key, unsigned int idx, +int gnutls_openpgp_privkey_get_subkey_id(gnutls_openpgp_privkey_t key, + unsigned int idx, gnutls_openpgp_keyid_t keyid) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } time_t - gnutls_openpgp_privkey_get_subkey_creation_time - (gnutls_openpgp_privkey_t key, unsigned int idx) { - return (time_t) - 1; +gnutls_openpgp_privkey_get_subkey_creation_time(gnutls_openpgp_privkey_t key, + unsigned int idx) +{ + return (time_t)-1; } -int gnutls_openpgp_privkey_export_subkey_dsa_raw - (gnutls_openpgp_privkey_t pkey, unsigned int idx, - gnutls_datum_t * p, gnutls_datum_t * q, gnutls_datum_t * g, - gnutls_datum_t * y, gnutls_datum_t * x) { +int gnutls_openpgp_privkey_export_subkey_dsa_raw( + gnutls_openpgp_privkey_t pkey, unsigned int idx, gnutls_datum_t *p, + gnutls_datum_t *q, gnutls_datum_t *g, gnutls_datum_t *y, + gnutls_datum_t *x) +{ return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int gnutls_openpgp_privkey_export_subkey_rsa_raw - (gnutls_openpgp_privkey_t pkey, unsigned int idx, - gnutls_datum_t * m, gnutls_datum_t * e, gnutls_datum_t * d, - gnutls_datum_t * p, gnutls_datum_t * q, gnutls_datum_t * u) { +int gnutls_openpgp_privkey_export_subkey_rsa_raw( + gnutls_openpgp_privkey_t pkey, unsigned int idx, gnutls_datum_t *m, + gnutls_datum_t *e, gnutls_datum_t *d, gnutls_datum_t *p, + gnutls_datum_t *q, gnutls_datum_t *u) +{ return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int gnutls_openpgp_privkey_export_dsa_raw(gnutls_openpgp_privkey_t - pkey, gnutls_datum_t * p, - gnutls_datum_t * q, - gnutls_datum_t * g, - gnutls_datum_t * y, - gnutls_datum_t * x) +int gnutls_openpgp_privkey_export_dsa_raw(gnutls_openpgp_privkey_t pkey, + gnutls_datum_t *p, gnutls_datum_t *q, + gnutls_datum_t *g, gnutls_datum_t *y, + gnutls_datum_t *x) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int gnutls_openpgp_privkey_export_rsa_raw(gnutls_openpgp_privkey_t - pkey, gnutls_datum_t * m, - gnutls_datum_t * e, - gnutls_datum_t * d, - gnutls_datum_t * p, - gnutls_datum_t * q, - gnutls_datum_t * u) +int gnutls_openpgp_privkey_export_rsa_raw(gnutls_openpgp_privkey_t pkey, + gnutls_datum_t *m, gnutls_datum_t *e, + gnutls_datum_t *d, gnutls_datum_t *p, + gnutls_datum_t *q, gnutls_datum_t *u) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } int gnutls_openpgp_privkey_export(gnutls_openpgp_privkey_t key, gnutls_openpgp_crt_fmt_t format, - const char *password, - unsigned int flags, + const char *password, unsigned int flags, void *output_data, size_t *output_data_size) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; @@ -382,25 +374,27 @@ int gnutls_openpgp_privkey_export(gnutls_openpgp_privkey_t key, int gnutls_openpgp_privkey_export2(gnutls_openpgp_privkey_t key, gnutls_openpgp_crt_fmt_t format, - const char *password, - unsigned int flags, gnutls_datum_t * out) + const char *password, unsigned int flags, + gnutls_datum_t *out) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int gnutls_openpgp_privkey_set_preferred_key_id - (gnutls_openpgp_privkey_t key, const gnutls_openpgp_keyid_t keyid) { +int gnutls_openpgp_privkey_set_preferred_key_id( + gnutls_openpgp_privkey_t key, const gnutls_openpgp_keyid_t keyid) +{ return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int gnutls_openpgp_privkey_get_preferred_key_id - (gnutls_openpgp_privkey_t key, gnutls_openpgp_keyid_t keyid) { +int gnutls_openpgp_privkey_get_preferred_key_id(gnutls_openpgp_privkey_t key, + gnutls_openpgp_keyid_t keyid) +{ return GNUTLS_E_UNIMPLEMENTED_FEATURE; } int gnutls_openpgp_crt_get_auth_subkey(gnutls_openpgp_crt_t crt, - gnutls_openpgp_keyid_t - keyid, unsigned int flag) + gnutls_openpgp_keyid_t keyid, + unsigned int flag) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } @@ -408,7 +402,7 @@ int gnutls_openpgp_crt_get_auth_subkey(gnutls_openpgp_crt_t crt, /* Keyring stuff. */ -int gnutls_openpgp_keyring_init(gnutls_openpgp_keyring_t * keyring) +int gnutls_openpgp_keyring_init(gnutls_openpgp_keyring_t *keyring) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } @@ -419,38 +413,36 @@ void gnutls_openpgp_keyring_deinit(gnutls_openpgp_keyring_t keyring) } int gnutls_openpgp_keyring_import(gnutls_openpgp_keyring_t keyring, - const gnutls_datum_t * data, + const gnutls_datum_t *data, gnutls_openpgp_crt_fmt_t format) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } int gnutls_openpgp_keyring_check_id(gnutls_openpgp_keyring_t ring, - const gnutls_openpgp_keyid_t - keyid, unsigned int flags) + const gnutls_openpgp_keyid_t keyid, + unsigned int flags) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } int gnutls_openpgp_crt_verify_ring(gnutls_openpgp_crt_t key, - gnutls_openpgp_keyring_t - keyring, unsigned int flags, - unsigned int *verify + gnutls_openpgp_keyring_t keyring, + unsigned int flags, unsigned int *verify /* the output of the verification */ - ) +) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int gnutls_openpgp_crt_verify_self(gnutls_openpgp_crt_t key, - unsigned int flags, unsigned int *verify) +int gnutls_openpgp_crt_verify_self(gnutls_openpgp_crt_t key, unsigned int flags, + unsigned int *verify) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } int gnutls_openpgp_keyring_get_crt(gnutls_openpgp_keyring_t ring, - unsigned int idx, - gnutls_openpgp_crt_t * cert) + unsigned int idx, gnutls_openpgp_crt_t *cert) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } @@ -460,75 +452,76 @@ int gnutls_openpgp_keyring_get_crt_count(gnutls_openpgp_keyring_t ring) return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -void -gnutls_openpgp_set_recv_key_function(gnutls_session_t session, - gnutls_openpgp_recv_key_func func) +void gnutls_openpgp_set_recv_key_function(gnutls_session_t session, + gnutls_openpgp_recv_key_func func) { return; } -int gnutls_certificate_set_openpgp_key - (gnutls_certificate_credentials_t res, - gnutls_openpgp_crt_t crt, gnutls_openpgp_privkey_t pkey) { +int gnutls_certificate_set_openpgp_key(gnutls_certificate_credentials_t res, + gnutls_openpgp_crt_t crt, + gnutls_openpgp_privkey_t pkey) +{ return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int -gnutls_certificate_get_openpgp_key(gnutls_certificate_credentials_t res, - unsigned index, - gnutls_openpgp_privkey_t * key) +int gnutls_certificate_get_openpgp_key(gnutls_certificate_credentials_t res, + unsigned index, + gnutls_openpgp_privkey_t *key) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int -gnutls_certificate_get_openpgp_crt(gnutls_certificate_credentials_t res, - unsigned index, - gnutls_openpgp_crt_t ** crt_list, - unsigned *crt_list_size) +int gnutls_certificate_get_openpgp_crt(gnutls_certificate_credentials_t res, + unsigned index, + gnutls_openpgp_crt_t **crt_list, + unsigned *crt_list_size) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int - gnutls_certificate_set_openpgp_key_file - (gnutls_certificate_credentials_t res, const char *certfile, - const char *keyfile, gnutls_openpgp_crt_fmt_t format) { +int gnutls_certificate_set_openpgp_key_file( + gnutls_certificate_credentials_t res, const char *certfile, + const char *keyfile, gnutls_openpgp_crt_fmt_t format) +{ return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int gnutls_certificate_set_openpgp_key_mem - (gnutls_certificate_credentials_t res, - const gnutls_datum_t * cert, const gnutls_datum_t * key, - gnutls_openpgp_crt_fmt_t format) { +int gnutls_certificate_set_openpgp_key_mem(gnutls_certificate_credentials_t res, + const gnutls_datum_t *cert, + const gnutls_datum_t *key, + gnutls_openpgp_crt_fmt_t format) +{ return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int - gnutls_certificate_set_openpgp_key_file2 - (gnutls_certificate_credentials_t res, const char *certfile, - const char *keyfile, const char *subkey_id, - gnutls_openpgp_crt_fmt_t format) { +int gnutls_certificate_set_openpgp_key_file2( + gnutls_certificate_credentials_t res, const char *certfile, + const char *keyfile, const char *subkey_id, + gnutls_openpgp_crt_fmt_t format) +{ return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int - gnutls_certificate_set_openpgp_key_mem2 - (gnutls_certificate_credentials_t res, - const gnutls_datum_t * cert, const gnutls_datum_t * key, - const char *subkey_id, gnutls_openpgp_crt_fmt_t format) { +int gnutls_certificate_set_openpgp_key_mem2( + gnutls_certificate_credentials_t res, const gnutls_datum_t *cert, + const gnutls_datum_t *key, const char *subkey_id, + gnutls_openpgp_crt_fmt_t format) +{ return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int gnutls_certificate_set_openpgp_keyring_mem - (gnutls_certificate_credentials_t c, const unsigned char *data, - size_t dlen, gnutls_openpgp_crt_fmt_t format) { +int gnutls_certificate_set_openpgp_keyring_mem( + gnutls_certificate_credentials_t c, const unsigned char *data, + size_t dlen, gnutls_openpgp_crt_fmt_t format) +{ return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int gnutls_certificate_set_openpgp_keyring_file - (gnutls_certificate_credentials_t c, const char *file, - gnutls_openpgp_crt_fmt_t format) { +int gnutls_certificate_set_openpgp_keyring_file( + gnutls_certificate_credentials_t c, const char *file, + gnutls_openpgp_crt_fmt_t format) +{ return GNUTLS_E_UNIMPLEMENTED_FEATURE; } @@ -544,8 +537,8 @@ int gnutls_certificate_set_openpgp_keyring_file * * Since: 2.12.0 **/ -int gnutls_pubkey_import_openpgp(gnutls_pubkey_t key, - gnutls_openpgp_crt_t crt, unsigned int flags) +int gnutls_pubkey_import_openpgp(gnutls_pubkey_t key, gnutls_openpgp_crt_t crt, + unsigned int flags) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } @@ -565,11 +558,10 @@ int gnutls_pubkey_import_openpgp(gnutls_pubkey_t key, * Since: 3.1.3 **/ int gnutls_pubkey_import_openpgp_raw(gnutls_pubkey_t pkey, - const gnutls_datum_t * data, - gnutls_openpgp_crt_fmt_t - format, - const gnutls_openpgp_keyid_t - keyid, unsigned int flags) + const gnutls_datum_t *data, + gnutls_openpgp_crt_fmt_t format, + const gnutls_openpgp_keyid_t keyid, + unsigned int flags) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } @@ -589,11 +581,10 @@ int gnutls_pubkey_import_openpgp_raw(gnutls_pubkey_t pkey, * * Since: 2.12.0 **/ -int -gnutls_pubkey_get_openpgp_key_id(gnutls_pubkey_t key, - unsigned int flags, - unsigned char *output_data, - size_t *output_data_size, unsigned int *subkey) +int gnutls_pubkey_get_openpgp_key_id(gnutls_pubkey_t key, unsigned int flags, + unsigned char *output_data, + size_t *output_data_size, + unsigned int *subkey) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } @@ -629,7 +620,7 @@ int gnutls_privkey_import_openpgp(gnutls_privkey_t pkey, * Since: 3.4.0 */ int gnutls_privkey_export_openpgp(gnutls_privkey_t pkey, - gnutls_openpgp_privkey_t * key) + gnutls_openpgp_privkey_t *key) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } @@ -649,11 +640,10 @@ int gnutls_privkey_export_openpgp(gnutls_privkey_t pkey, * Since: 3.1.0 **/ int gnutls_privkey_import_openpgp_raw(gnutls_privkey_t pkey, - const gnutls_datum_t * data, - gnutls_openpgp_crt_fmt_t - format, - const gnutls_openpgp_keyid_t - keyid, const char *password) + const gnutls_datum_t *data, + gnutls_openpgp_crt_fmt_t format, + const gnutls_openpgp_keyid_t keyid, + const char *password) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } @@ -672,10 +662,9 @@ int gnutls_privkey_import_openpgp_raw(gnutls_privkey_t pkey, * * Since: 3.0 **/ -int gnutls_pcert_import_openpgp_raw(gnutls_pcert_st * pcert, - const gnutls_datum_t * cert, - gnutls_openpgp_crt_fmt_t - format, +int gnutls_pcert_import_openpgp_raw(gnutls_pcert_st *pcert, + const gnutls_datum_t *cert, + gnutls_openpgp_crt_fmt_t format, gnutls_openpgp_keyid_t keyid, unsigned int flags) { @@ -694,7 +683,7 @@ int gnutls_pcert_import_openpgp_raw(gnutls_pcert_st * pcert, * * Since: 3.0 **/ -int gnutls_pcert_import_openpgp(gnutls_pcert_st * pcert, +int gnutls_pcert_import_openpgp(gnutls_pcert_st *pcert, gnutls_openpgp_crt_t crt, unsigned int flags) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; @@ -711,8 +700,8 @@ int gnutls_pcert_import_openpgp(gnutls_pcert_st * pcert, * * Since: 3.4.0 */ -int gnutls_pcert_export_openpgp(gnutls_pcert_st * pcert, - gnutls_openpgp_crt_t * crt) +int gnutls_pcert_export_openpgp(gnutls_pcert_st *pcert, + gnutls_openpgp_crt_t *crt) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } @@ -726,9 +715,8 @@ int gnutls_pcert_export_openpgp(gnutls_pcert_st * pcert, * * Returns: %GNUTLS_E_UNIMPLEMENTED_FEATURE. */ -void -gnutls_openpgp_send_cert(gnutls_session_t session, - gnutls_openpgp_crt_status_t status) +void gnutls_openpgp_send_cert(gnutls_session_t session, + gnutls_openpgp_crt_status_t status) { return; } @@ -745,7 +733,7 @@ gnutls_openpgp_send_cert(gnutls_session_t session, * Since: 3.1.3 **/ int gnutls_certificate_get_peers_subkey_id(gnutls_session_t session, - gnutls_datum_t * id) + gnutls_datum_t *id) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } @@ -760,10 +748,9 @@ int gnutls_certificate_get_peers_subkey_id(gnutls_session_t session, * * Returns: %GNUTLS_E_UNIMPLEMENTED_FEATURE. */ -int -gnutls_openpgp_privkey_sign_hash(gnutls_openpgp_privkey_t key, - const gnutls_datum_t * hash, - gnutls_datum_t * signature) +int gnutls_openpgp_privkey_sign_hash(gnutls_openpgp_privkey_t key, + const gnutls_datum_t *hash, + gnutls_datum_t *signature) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } diff --git a/lib/pathbuf.c b/lib/pathbuf.c index 88a39e284b..a016efc185 100644 --- a/lib/pathbuf.c +++ b/lib/pathbuf.c @@ -91,8 +91,8 @@ int _gnutls_pathbuf_init(struct gnutls_pathbuf_st *buffer, const char *base) return 0; } -int -_gnutls_pathbuf_append(struct gnutls_pathbuf_st *buffer, const char *component) +int _gnutls_pathbuf_append(struct gnutls_pathbuf_st *buffer, + const char *component) { size_t len; char *p; diff --git a/lib/pathbuf.h b/lib/pathbuf.h index b2e90c6136..394f1cd2d5 100644 --- a/lib/pathbuf.h +++ b/lib/pathbuf.h @@ -22,16 +22,16 @@ */ #ifndef GNUTLS_LIB_PATHBUF_H -# define GNUTLS_LIB_PATHBUF_H +#define GNUTLS_LIB_PATHBUF_H -# include "pathmax.h" -# define GNUTLS_PATH_MAX PATH_MAX +#include "pathmax.h" +#define GNUTLS_PATH_MAX PATH_MAX struct gnutls_pathbuf_st { char base[GNUTLS_PATH_MAX + 1]; - char *ptr; /* API */ - size_t len; /* API: NOT including NUL */ - size_t cap; /* including NUL */ + char *ptr; /* API */ + size_t len; /* API: NOT including NUL */ + size_t cap; /* including NUL */ }; /* Initialize BUFFER with the content BASE. */ @@ -47,4 +47,4 @@ int _gnutls_pathbuf_truncate(struct gnutls_pathbuf_st *buffer, size_t len); /* Deinitialize BUFFER. */ void _gnutls_pathbuf_deinit(struct gnutls_pathbuf_st *buffer); -#endif /* GNUTLS_LIB_PATHBUF_H */ +#endif /* GNUTLS_LIB_PATHBUF_H */ diff --git a/lib/pcert.c b/lib/pcert.c index 84da6d2fd7..d50f664df6 100644 --- a/lib/pcert.c +++ b/lib/pcert.c @@ -44,8 +44,8 @@ * * Since: 3.0 **/ -int gnutls_pcert_import_x509(gnutls_pcert_st * pcert, - gnutls_x509_crt_t crt, unsigned int flags) +int gnutls_pcert_import_x509(gnutls_pcert_st *pcert, gnutls_x509_crt_t crt, + unsigned int flags) { int ret; @@ -76,7 +76,7 @@ int gnutls_pcert_import_x509(gnutls_pcert_st * pcert, return 0; - cleanup: +cleanup: _gnutls_free_datum(&pcert->cert); return ret; @@ -104,8 +104,8 @@ int gnutls_pcert_import_x509(gnutls_pcert_st * pcert, * * Since: 3.4.0 **/ -int gnutls_pcert_import_x509_list(gnutls_pcert_st * pcert_list, - gnutls_x509_crt_t * crt, unsigned *ncrt, +int gnutls_pcert_import_x509_list(gnutls_pcert_st *pcert_list, + gnutls_x509_crt_t *crt, unsigned *ncrt, unsigned int flags) { int ret; @@ -142,12 +142,11 @@ int gnutls_pcert_import_x509_list(gnutls_pcert_st * pcert_list, return 0; - cleanup: +cleanup: for (i = 0; i < current; i++) { gnutls_pcert_deinit(&pcert_list[i]); } return ret; - } /** @@ -172,12 +171,11 @@ int gnutls_pcert_import_x509_list(gnutls_pcert_st * pcert_list, * * Since: 3.0 **/ -int -gnutls_pcert_list_import_x509_raw(gnutls_pcert_st * pcert_list, - unsigned int *pcert_list_size, - const gnutls_datum_t * data, - gnutls_x509_crt_fmt_t format, - unsigned int flags) +int gnutls_pcert_list_import_x509_raw(gnutls_pcert_st *pcert_list, + unsigned int *pcert_list_size, + const gnutls_datum_t *data, + gnutls_x509_crt_fmt_t format, + unsigned int flags) { int ret; unsigned int i = 0, j; @@ -189,9 +187,8 @@ gnutls_pcert_list_import_x509_raw(gnutls_pcert_st * pcert_list, if (crt == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - ret = - gnutls_x509_crt_list_import(crt, pcert_list_size, data, format, - flags); + ret = gnutls_x509_crt_list_import(crt, pcert_list_size, data, format, + flags); if (ret < 0) { ret = gnutls_assert_val(ret); goto cleanup_crt; @@ -208,18 +205,17 @@ gnutls_pcert_list_import_x509_raw(gnutls_pcert_st * pcert_list, ret = 0; goto cleanup; - cleanup_pcert: +cleanup_pcert: for (j = 0; j < i; j++) gnutls_pcert_deinit(&pcert_list[j]); - cleanup: +cleanup: for (i = 0; i < *pcert_list_size; i++) gnutls_x509_crt_deinit(crt[i]); - cleanup_crt: +cleanup_crt: gnutls_free(crt); return ret; - } /** @@ -244,13 +240,10 @@ gnutls_pcert_list_import_x509_raw(gnutls_pcert_st * pcert_list, * * Since: 3.6.3 **/ -int gnutls_pcert_list_import_x509_file(gnutls_pcert_st * pcert_list, - unsigned *pcert_list_size, - const char *file, - gnutls_x509_crt_fmt_t format, - gnutls_pin_callback_t pin_fn, - void *pin_fn_userdata, - unsigned int flags) +int gnutls_pcert_list_import_x509_file( + gnutls_pcert_st *pcert_list, unsigned *pcert_list_size, + const char *file, gnutls_x509_crt_fmt_t format, + gnutls_pin_callback_t pin_fn, void *pin_fn_userdata, unsigned int flags) { int ret, ret2; unsigned i; @@ -259,15 +252,12 @@ int gnutls_pcert_list_import_x509_file(gnutls_pcert_st * pcert_list, gnutls_datum_t data = { NULL, 0 }; if (gnutls_url_is_supported(file) != 0) { - ret = - gnutls_x509_crt_list_import_url(&crts, &crts_size, file, - pin_fn, pin_fn_userdata, 0); + ret = gnutls_x509_crt_list_import_url( + &crts, &crts_size, file, pin_fn, pin_fn_userdata, 0); if (ret < 0) { - ret2 = - gnutls_x509_crt_list_import_url(&crts, &crts_size, - file, pin_fn, - pin_fn_userdata, - GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + ret2 = gnutls_x509_crt_list_import_url( + &crts, &crts_size, file, pin_fn, + pin_fn_userdata, GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret2 >= 0) ret = ret2; } @@ -277,16 +267,14 @@ int gnutls_pcert_list_import_x509_file(gnutls_pcert_st * pcert_list, goto cleanup; } - } else { /* file */ + } else { /* file */ ret = gnutls_load_file(file, &data); if (ret < 0) return gnutls_assert_val(ret); - ret = - gnutls_x509_crt_list_import2(&crts, &crts_size, &data, - format, - flags | - GNUTLS_X509_CRT_LIST_SORT); + ret = gnutls_x509_crt_list_import2( + &crts, &crts_size, &data, format, + flags | GNUTLS_X509_CRT_LIST_SORT); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -299,8 +287,8 @@ int gnutls_pcert_list_import_x509_file(gnutls_pcert_st * pcert_list, goto cleanup; } - ret = - gnutls_pcert_import_x509_list(pcert_list, crts, &crts_size, flags); + ret = gnutls_pcert_import_x509_list(pcert_list, crts, &crts_size, + flags); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -308,7 +296,7 @@ int gnutls_pcert_list_import_x509_file(gnutls_pcert_st * pcert_list, *pcert_list_size = crts_size; ret = 0; - cleanup: +cleanup: for (i = 0; i < crts_size; i++) gnutls_x509_crt_deinit(crts[i]); gnutls_free(crts); @@ -332,8 +320,8 @@ int gnutls_pcert_list_import_x509_file(gnutls_pcert_st * pcert_list, * * Since: 3.0 **/ -int gnutls_pcert_import_x509_raw(gnutls_pcert_st * pcert, - const gnutls_datum_t * cert, +int gnutls_pcert_import_x509_raw(gnutls_pcert_st *pcert, + const gnutls_datum_t *cert, gnutls_x509_crt_fmt_t format, unsigned int flags) { @@ -360,7 +348,7 @@ int gnutls_pcert_import_x509_raw(gnutls_pcert_st * pcert, ret = 0; - cleanup: +cleanup: gnutls_x509_crt_deinit(crt); return ret; @@ -383,8 +371,8 @@ int gnutls_pcert_import_x509_raw(gnutls_pcert_st * pcert, * * Since: 3.6.6 **/ -int gnutls_pcert_import_rawpk(gnutls_pcert_st * pcert, - gnutls_pubkey_t pubkey, unsigned int flags) +int gnutls_pcert_import_rawpk(gnutls_pcert_st *pcert, gnutls_pubkey_t pubkey, + unsigned int flags) { int ret; @@ -435,8 +423,8 @@ int gnutls_pcert_import_rawpk(gnutls_pcert_st * pcert, * * Since: 3.6.6 **/ -int gnutls_pcert_import_rawpk_raw(gnutls_pcert_st * pcert, - const gnutls_datum_t * rawpubkey, +int gnutls_pcert_import_rawpk_raw(gnutls_pcert_st *pcert, + const gnutls_datum_t *rawpubkey, gnutls_x509_crt_fmt_t format, unsigned int key_usage, unsigned int flags) { @@ -467,9 +455,8 @@ int gnutls_pcert_import_rawpk_raw(gnutls_pcert_st * pcert, * convert if necessary. */ if (format == GNUTLS_X509_FMT_PEM) { - ret = _gnutls_fbase64_decode(PEM_PK, - rawpubkey->data, rawpubkey->size, - &pcert->cert); + ret = _gnutls_fbase64_decode(PEM_PK, rawpubkey->data, + rawpubkey->size, &pcert->cert); if (ret < 0) { gnutls_pubkey_deinit(pcert->pubkey); @@ -478,9 +465,8 @@ int gnutls_pcert_import_rawpk_raw(gnutls_pcert_st * pcert, } } else { // Directly copy the raw DER data to our pcert - ret = - _gnutls_set_datum(&pcert->cert, rawpubkey->data, - rawpubkey->size); + ret = _gnutls_set_datum(&pcert->cert, rawpubkey->data, + rawpubkey->size); if (ret < 0) { gnutls_pubkey_deinit(pcert->pubkey); @@ -509,7 +495,7 @@ int gnutls_pcert_import_rawpk_raw(gnutls_pcert_st * pcert, * * Since: 3.4.0 */ -int gnutls_pcert_export_x509(gnutls_pcert_st * pcert, gnutls_x509_crt_t * crt) +int gnutls_pcert_export_x509(gnutls_pcert_st *pcert, gnutls_x509_crt_t *crt) { int ret; @@ -541,7 +527,7 @@ int gnutls_pcert_export_x509(gnutls_pcert_st * pcert, gnutls_x509_crt_t * crt) * * Since: 3.0 **/ -void gnutls_pcert_deinit(gnutls_pcert_st * pcert) +void gnutls_pcert_deinit(gnutls_pcert_st *pcert) { if (pcert->pubkey) gnutls_pubkey_deinit(pcert->pubkey); @@ -552,22 +538,19 @@ void gnutls_pcert_deinit(gnutls_pcert_st * pcert) /* Converts the first certificate for the cert_auth_info structure * to a pcert. */ -int -_gnutls_get_auth_info_pcert(gnutls_pcert_st * pcert, - gnutls_certificate_type_t type, - cert_auth_info_t info) +int _gnutls_get_auth_info_pcert(gnutls_pcert_st *pcert, + gnutls_certificate_type_t type, + cert_auth_info_t info) { switch (type) { case GNUTLS_CRT_X509: - return gnutls_pcert_import_x509_raw(pcert, - &info->raw_certificate_list - [0], GNUTLS_X509_FMT_DER, - 0); + return gnutls_pcert_import_x509_raw( + pcert, &info->raw_certificate_list[0], + GNUTLS_X509_FMT_DER, 0); case GNUTLS_CRT_RAWPK: - return gnutls_pcert_import_rawpk_raw(pcert, - &info->raw_certificate_list - [0], GNUTLS_X509_FMT_DER, - 0, 0); + return gnutls_pcert_import_rawpk_raw( + pcert, &info->raw_certificate_list[0], + GNUTLS_X509_FMT_DER, 0, 0); default: return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); } diff --git a/lib/pin.c b/lib/pin.c index 427e8ac27d..728b546a47 100644 --- a/lib/pin.c +++ b/lib/pin.c @@ -63,21 +63,18 @@ gnutls_pin_callback_t gnutls_pkcs11_get_pin_function(void **userdata) return NULL; } -int -_gnutls_retrieve_pin(struct pin_info_st *pin_info, const char *url, - const char *label, unsigned flags, char *pin, - unsigned pin_size) +int _gnutls_retrieve_pin(struct pin_info_st *pin_info, const char *url, + const char *label, unsigned flags, char *pin, + unsigned pin_size) { int ret; if (pin_info && pin_info->cb) - ret = - pin_info->cb(pin_info->data, 0, - (char *)url, label, flags, pin, pin_size); + ret = pin_info->cb(pin_info->data, 0, (char *)url, label, flags, + pin, pin_size); else if (_gnutls_pin_func) - ret = - _gnutls_pin_func(_gnutls_pin_data, 0, - (char *)url, label, flags, pin, pin_size); + ret = _gnutls_pin_func(_gnutls_pin_data, 0, (char *)url, label, + flags, pin, pin_size); else ret = gnutls_assert_val(GNUTLS_E_PKCS11_PIN_ERROR); diff --git a/lib/pin.h b/lib/pin.h index 81d05c969f..a625ef4ca7 100644 --- a/lib/pin.h +++ b/lib/pin.h @@ -1,12 +1,11 @@ #ifndef GNUTLS_LIB_PIN_H -# define GNUTLS_LIB_PIN_H +#define GNUTLS_LIB_PIN_H extern gnutls_pin_callback_t _gnutls_pin_func; extern void *_gnutls_pin_data; -int -_gnutls_retrieve_pin(struct pin_info_st *pin_info, const char *url, - const char *label, unsigned pin_flags, char *pin, - unsigned pin_size); +int _gnutls_retrieve_pin(struct pin_info_st *pin_info, const char *url, + const char *label, unsigned pin_flags, char *pin, + unsigned pin_size); -#endif /* GNUTLS_LIB_PIN_H */ +#endif /* GNUTLS_LIB_PIN_H */ diff --git a/lib/pk.c b/lib/pk.c index 400d499892..c38c12985b 100644 --- a/lib/pk.c +++ b/lib/pk.c @@ -56,9 +56,8 @@ * Since: 3.6.0 * **/ -int -gnutls_encode_rs_value(gnutls_datum_t * sig_value, - const gnutls_datum_t * r, const gnutls_datum_t * s) +int gnutls_encode_rs_value(gnutls_datum_t *sig_value, const gnutls_datum_t *r, + const gnutls_datum_t *s) { return _gnutls_encode_ber_rs_raw(sig_value, r, s); } @@ -66,18 +65,16 @@ gnutls_encode_rs_value(gnutls_datum_t * sig_value, /* same as gnutls_encode_rs_value(), but kept since it used * to be exported for FIPS140 CAVS testing. */ -int -_gnutls_encode_ber_rs_raw(gnutls_datum_t * sig_value, - const gnutls_datum_t * r, const gnutls_datum_t * s) +int _gnutls_encode_ber_rs_raw(gnutls_datum_t *sig_value, + const gnutls_datum_t *r, const gnutls_datum_t *s) { asn1_node sig; int result, ret; uint8_t *tmp = NULL; - if ((result = - asn1_create_element(_gnutls_get_gnutls_asn(), - "GNUTLS.DSASignatureValue", - &sig)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.DSASignatureValue", &sig)) != + ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -127,21 +124,20 @@ _gnutls_encode_ber_rs_raw(gnutls_datum_t * sig_value, } ret = 0; - cleanup: +cleanup: gnutls_free(tmp); asn1_delete_structure(&sig); return ret; } -int _gnutls_encode_ber_rs(gnutls_datum_t * sig_value, bigint_t r, bigint_t s) +int _gnutls_encode_ber_rs(gnutls_datum_t *sig_value, bigint_t r, bigint_t s) { asn1_node sig; int result; - if ((result = - asn1_create_element(_gnutls_get_gnutls_asn(), - "GNUTLS.DSASignatureValue", - &sig)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.DSASignatureValue", &sig)) != + ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -171,17 +167,15 @@ int _gnutls_encode_ber_rs(gnutls_datum_t * sig_value, bigint_t r, bigint_t s) /* decodes the Dss-Sig-Value structure */ -int -_gnutls_decode_ber_rs(const gnutls_datum_t * sig_value, bigint_t * r, - bigint_t * s) +int _gnutls_decode_ber_rs(const gnutls_datum_t *sig_value, bigint_t *r, + bigint_t *s) { asn1_node sig; int result; - if ((result = - asn1_create_element(_gnutls_get_gnutls_asn(), - "GNUTLS.DSASignatureValue", - &sig)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.DSASignatureValue", &sig)) != + ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -189,7 +183,7 @@ _gnutls_decode_ber_rs(const gnutls_datum_t * sig_value, bigint_t * r, /* rfc3279 doesn't specify whether Dss-Sig-Value is encoded * as DER or BER. As such we do not restrict to the DER subset. */ result = - asn1_der_decoding(&sig, sig_value->data, sig_value->size, NULL); + asn1_der_decoding(&sig, sig_value->data, sig_value->size, NULL); if (result != ASN1_SUCCESS) { gnutls_assert(); asn1_delete_structure(&sig); @@ -236,8 +230,8 @@ _gnutls_decode_ber_rs(const gnutls_datum_t * sig_value, bigint_t * r, * Since: 3.6.0 * **/ -int gnutls_decode_rs_value(const gnutls_datum_t * sig_value, gnutls_datum_t * r, - gnutls_datum_t * s) +int gnutls_decode_rs_value(const gnutls_datum_t *sig_value, gnutls_datum_t *r, + gnutls_datum_t *s) { return _gnutls_decode_ber_rs_raw(sig_value, r, s); } @@ -245,17 +239,15 @@ int gnutls_decode_rs_value(const gnutls_datum_t * sig_value, gnutls_datum_t * r, /* same as gnutls_decode_rs_value(), but kept since it used * to be exported for FIPS140 CAVS testing. */ -int -_gnutls_decode_ber_rs_raw(const gnutls_datum_t * sig_value, gnutls_datum_t * r, - gnutls_datum_t * s) +int _gnutls_decode_ber_rs_raw(const gnutls_datum_t *sig_value, + gnutls_datum_t *r, gnutls_datum_t *s) { asn1_node sig; int result; - if ((result = - asn1_create_element(_gnutls_get_gnutls_asn(), - "GNUTLS.DSASignatureValue", - &sig)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.DSASignatureValue", &sig)) != + ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -263,7 +255,7 @@ _gnutls_decode_ber_rs_raw(const gnutls_datum_t * sig_value, gnutls_datum_t * r, /* rfc3279 doesn't specify whether Dss-Sig-Value is encoded * as DER or BER. As such we do not restrict to the DER subset. */ result = - asn1_der_decoding(&sig, sig_value->data, sig_value->size, NULL); + asn1_der_decoding(&sig, sig_value->data, sig_value->size, NULL); if (result != ASN1_SUCCESS) { gnutls_assert(); asn1_delete_structure(&sig); @@ -290,9 +282,8 @@ _gnutls_decode_ber_rs_raw(const gnutls_datum_t * sig_value, gnutls_datum_t * r, return 0; } -int -_gnutls_encode_gost_rs(gnutls_datum_t * sig_value, bigint_t r, bigint_t s, - size_t intsize) +int _gnutls_encode_gost_rs(gnutls_datum_t *sig_value, bigint_t r, bigint_t s, + size_t intsize) { uint8_t *data; int result; @@ -309,7 +300,8 @@ _gnutls_encode_gost_rs(gnutls_datum_t * sig_value, bigint_t r, bigint_t s, return result; } - if ((result = _gnutls_mpi_bprint_size(r, data + intsize, intsize)) < 0) { + if ((result = _gnutls_mpi_bprint_size(r, data + intsize, intsize)) < + 0) { gnutls_assert(); gnutls_free(data); return result; @@ -321,9 +313,8 @@ _gnutls_encode_gost_rs(gnutls_datum_t * sig_value, bigint_t r, bigint_t s, return 0; } -int -_gnutls_decode_gost_rs(const gnutls_datum_t * sig_value, bigint_t * r, - bigint_t * s) +int _gnutls_decode_gost_rs(const gnutls_datum_t *sig_value, bigint_t *r, + bigint_t *s) { int ret; unsigned halfsize = sig_value->size >> 1; @@ -362,9 +353,9 @@ _gnutls_decode_gost_rs(const gnutls_datum_t * sig_value, bigint_t * r, * * Since: 3.6.0 */ -int gnutls_encode_gost_rs_value(gnutls_datum_t * sig_value, - const gnutls_datum_t * r, - const gnutls_datum_t * s) +int gnutls_encode_gost_rs_value(gnutls_datum_t *sig_value, + const gnutls_datum_t *r, + const gnutls_datum_t *s) { uint8_t *data; size_t intsize = r->size; @@ -407,8 +398,8 @@ int gnutls_encode_gost_rs_value(gnutls_datum_t * sig_value, * * Since: 3.6.0 */ -int gnutls_decode_gost_rs_value(const gnutls_datum_t * sig_value, - gnutls_datum_t * r, gnutls_datum_t * s) +int gnutls_decode_gost_rs_value(const gnutls_datum_t *sig_value, + gnutls_datum_t *r, gnutls_datum_t *s) { int ret; unsigned halfsize = sig_value->size >> 1; @@ -469,8 +460,8 @@ gnutls_gost_paramset_t _gnutls_gost_paramset_default(gnutls_pk_algorithm_t pk) /* some generic pk functions */ -int _gnutls_pk_params_copy(gnutls_pk_params_st * dst, - const gnutls_pk_params_st * src) +int _gnutls_pk_params_copy(gnutls_pk_params_st *dst, + const gnutls_pk_params_st *src) { unsigned int i, j; dst->params_nr = 0; @@ -495,14 +486,14 @@ int _gnutls_pk_params_copy(gnutls_pk_params_st * dst, dst->params_nr++; } - if (_gnutls_set_datum - (&dst->raw_priv, src->raw_priv.data, src->raw_priv.size) < 0) { + if (_gnutls_set_datum(&dst->raw_priv, src->raw_priv.data, + src->raw_priv.size) < 0) { gnutls_assert(); goto fail; } - if (_gnutls_set_datum - (&dst->raw_pub, src->raw_pub.data, src->raw_pub.size) < 0) { + if (_gnutls_set_datum(&dst->raw_pub, src->raw_pub.data, + src->raw_pub.size) < 0) { gnutls_assert(); goto fail; } @@ -517,18 +508,18 @@ int _gnutls_pk_params_copy(gnutls_pk_params_st * dst, return 0; - fail: +fail: for (j = 0; j < i; j++) _gnutls_mpi_release(&dst->params[j]); return GNUTLS_E_MEMORY_ERROR; } -void gnutls_pk_params_init(gnutls_pk_params_st * p) +void gnutls_pk_params_init(gnutls_pk_params_st *p) { memset(p, 0, sizeof(gnutls_pk_params_st)); } -void gnutls_pk_params_release(gnutls_pk_params_st * p) +void gnutls_pk_params_release(gnutls_pk_params_st *p) { unsigned int i; for (i = 0; i < p->params_nr; i++) { @@ -540,7 +531,7 @@ void gnutls_pk_params_release(gnutls_pk_params_st * p) p->params_nr = 0; } -void gnutls_pk_params_clear(gnutls_pk_params_st * p) +void gnutls_pk_params_clear(gnutls_pk_params_st *p) { unsigned int i; for (i = 0; i < p->params_nr; i++) { @@ -555,9 +546,8 @@ void gnutls_pk_params_clear(gnutls_pk_params_st * p) } } -int -_gnutls_find_rsa_pss_salt_size(unsigned bits, const mac_entry_st * me, - unsigned salt_size) +int _gnutls_find_rsa_pss_salt_size(unsigned bits, const mac_entry_st *me, + unsigned salt_size) { unsigned digest_size; int max_salt_size; @@ -586,9 +576,8 @@ _gnutls_find_rsa_pss_salt_size(unsigned bits, const mac_entry_st * me, /* Writes the digest information and the digest in a DER encoded * structure. The digest info is allocated and stored into the info structure. */ -int -encode_ber_digest_info(const mac_entry_st * e, - const gnutls_datum_t * digest, gnutls_datum_t * output) +int encode_ber_digest_info(const mac_entry_st *e, const gnutls_datum_t *digest, + gnutls_datum_t *output) { asn1_node dinfo = NULL; int result; @@ -612,8 +601,8 @@ encode_ber_digest_info(const mac_entry_st * e, } if ((result = asn1_create_element(_gnutls_get_gnutls_asn(), - "GNUTLS.DigestInfo", - &dinfo)) != ASN1_SUCCESS) { + "GNUTLS.DigestInfo", &dinfo)) != + ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -691,10 +680,9 @@ encode_ber_digest_info(const mac_entry_st * e, * Since: 3.5.0 * **/ -int -gnutls_encode_ber_digest_info(gnutls_digest_algorithm_t hash, - const gnutls_datum_t * digest, - gnutls_datum_t * output) +int gnutls_encode_ber_digest_info(gnutls_digest_algorithm_t hash, + const gnutls_datum_t *digest, + gnutls_datum_t *output) { const mac_entry_st *e = hash_to_entry(hash); if (unlikely(e == NULL)) @@ -719,10 +707,10 @@ gnutls_encode_ber_digest_info(gnutls_digest_algorithm_t hash, * Since: 3.5.0 * **/ -int -gnutls_decode_ber_digest_info(const gnutls_datum_t * info, - gnutls_digest_algorithm_t * hash, - unsigned char *digest, unsigned int *digest_size) +int gnutls_decode_ber_digest_info(const gnutls_datum_t *info, + gnutls_digest_algorithm_t *hash, + unsigned char *digest, + unsigned int *digest_size) { asn1_node dinfo = NULL; int result; @@ -730,8 +718,8 @@ gnutls_decode_ber_digest_info(const gnutls_datum_t * info, int len; if ((result = asn1_create_element(_gnutls_get_gnutls_asn(), - "GNUTLS.DigestInfo", - &dinfo)) != ASN1_SUCCESS) { + "GNUTLS.DigestInfo", &dinfo)) != + ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -756,7 +744,6 @@ gnutls_decode_ber_digest_info(const gnutls_datum_t * info, *hash = gnutls_oid_to_digest(str); if (*hash == GNUTLS_DIG_UNKNOWN) { - _gnutls_debug_log("verify.c: HASH OID: %s\n", str); gnutls_assert(); @@ -766,7 +753,7 @@ gnutls_decode_ber_digest_info(const gnutls_datum_t * info, len = sizeof(str) - 1; result = - asn1_read_value(dinfo, "digestAlgorithm.parameters", str, &len); + asn1_read_value(dinfo, "digestAlgorithm.parameters", str, &len); /* To avoid permitting garbage in the parameters field, either the parameters field is not present, or it contains 0x05 0x00. */ if (!(result == ASN1_ELEMENT_NOT_FOUND || @@ -793,13 +780,12 @@ gnutls_decode_ber_digest_info(const gnutls_datum_t * info, return 0; } -int -_gnutls_params_get_rsa_raw(const gnutls_pk_params_st * params, - gnutls_datum_t * m, gnutls_datum_t * e, - gnutls_datum_t * d, gnutls_datum_t * p, - gnutls_datum_t * q, gnutls_datum_t * u, - gnutls_datum_t * e1, - gnutls_datum_t * e2, unsigned int flags) +int _gnutls_params_get_rsa_raw(const gnutls_pk_params_st *params, + gnutls_datum_t *m, gnutls_datum_t *e, + gnutls_datum_t *d, gnutls_datum_t *p, + gnutls_datum_t *q, gnutls_datum_t *u, + gnutls_datum_t *e1, gnutls_datum_t *e2, + unsigned int flags) { int ret; mpi_dprint_func dprint = _gnutls_mpi_dprint_lz; @@ -908,7 +894,7 @@ _gnutls_params_get_rsa_raw(const gnutls_pk_params_st * params, return 0; - error: +error: _gnutls_free_datum(m); _gnutls_free_datum(d); _gnutls_free_datum(e); @@ -920,11 +906,10 @@ _gnutls_params_get_rsa_raw(const gnutls_pk_params_st * params, return ret; } -int -_gnutls_params_get_dsa_raw(const gnutls_pk_params_st * params, - gnutls_datum_t * p, gnutls_datum_t * q, - gnutls_datum_t * g, gnutls_datum_t * y, - gnutls_datum_t * x, unsigned int flags) +int _gnutls_params_get_dsa_raw(const gnutls_pk_params_st *params, + gnutls_datum_t *p, gnutls_datum_t *q, + gnutls_datum_t *g, gnutls_datum_t *y, + gnutls_datum_t *x, unsigned int flags) { int ret; mpi_dprint_func dprint = _gnutls_mpi_dprint_lz; @@ -1000,11 +985,10 @@ _gnutls_params_get_dsa_raw(const gnutls_pk_params_st * params, return 0; } -int _gnutls_params_get_ecc_raw(const gnutls_pk_params_st * params, - gnutls_ecc_curve_t * curve, - gnutls_datum_t * x, - gnutls_datum_t * y, - gnutls_datum_t * k, unsigned int flags) +int _gnutls_params_get_ecc_raw(const gnutls_pk_params_st *params, + gnutls_ecc_curve_t *curve, gnutls_datum_t *x, + gnutls_datum_t *y, gnutls_datum_t *k, + unsigned int flags) { int ret; mpi_dprint_func dprint = _gnutls_mpi_dprint_lz; @@ -1025,9 +1009,8 @@ int _gnutls_params_get_ecc_raw(const gnutls_pk_params_st * params, if (_curve_is_eddsa(e) || _curve_is_modern_ecdh(e)) { if (x) { - ret = - _gnutls_set_datum(x, params->raw_pub.data, - params->raw_pub.size); + ret = _gnutls_set_datum(x, params->raw_pub.data, + params->raw_pub.size); if (ret < 0) { return gnutls_assert_val(ret); } @@ -1039,9 +1022,8 @@ int _gnutls_params_get_ecc_raw(const gnutls_pk_params_st * params, } if (k) { - ret = - _gnutls_set_datum(k, params->raw_priv.data, - params->raw_priv.size); + ret = _gnutls_set_datum(k, params->raw_priv.data, + params->raw_priv.size); if (ret < 0) { _gnutls_free_datum(x); return gnutls_assert_val(ret); @@ -1085,16 +1067,14 @@ int _gnutls_params_get_ecc_raw(const gnutls_pk_params_st * params, } return 0; - } -int _gnutls_params_get_gost_raw(const gnutls_pk_params_st * params, - gnutls_ecc_curve_t * curve, - gnutls_digest_algorithm_t * digest, - gnutls_gost_paramset_t * paramset, - gnutls_datum_t * x, - gnutls_datum_t * y, - gnutls_datum_t * k, unsigned int flags) +int _gnutls_params_get_gost_raw(const gnutls_pk_params_st *params, + gnutls_ecc_curve_t *curve, + gnutls_digest_algorithm_t *digest, + gnutls_gost_paramset_t *paramset, + gnutls_datum_t *x, gnutls_datum_t *y, + gnutls_datum_t *k, unsigned int flags) { int ret; mpi_dprint_func dprint = _gnutls_mpi_dprint_le; @@ -1144,13 +1124,11 @@ int _gnutls_params_get_gost_raw(const gnutls_pk_params_st * params, } return 0; - } -int -pk_hash_data(gnutls_pk_algorithm_t pk, const mac_entry_st * hash, - gnutls_pk_params_st * params, - const gnutls_datum_t * data, gnutls_datum_t * digest) +int pk_hash_data(gnutls_pk_algorithm_t pk, const mac_entry_st *hash, + gnutls_pk_params_st *params, const gnutls_datum_t *data, + gnutls_datum_t *digest) { int ret; @@ -1161,9 +1139,8 @@ pk_hash_data(gnutls_pk_algorithm_t pk, const mac_entry_st * hash, return GNUTLS_E_MEMORY_ERROR; } - ret = - _gnutls_hash_fast((gnutls_digest_algorithm_t) hash->id, data->data, - data->size, digest->data); + ret = _gnutls_hash_fast((gnutls_digest_algorithm_t)hash->id, data->data, + data->size, digest->data); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -1171,7 +1148,7 @@ pk_hash_data(gnutls_pk_algorithm_t pk, const mac_entry_st * hash, return 0; - cleanup: +cleanup: gnutls_free(digest->data); return ret; } @@ -1181,9 +1158,8 @@ pk_hash_data(gnutls_pk_algorithm_t pk, const mac_entry_st * hash, * on the given digest. The given digest must be allocated * and will be freed if replacement is required. */ -int -pk_prepare_hash(gnutls_pk_algorithm_t pk, - const mac_entry_st * hash, gnutls_datum_t * digest) +int pk_prepare_hash(gnutls_pk_algorithm_t pk, const mac_entry_st *hash, + gnutls_datum_t *digest) { int ret; gnutls_datum_t old_digest = { digest->data, digest->size }; @@ -1201,14 +1177,14 @@ pk_prepare_hash(gnutls_pk_algorithm_t pk, case GNUTLS_MAC_SHA224: break; default: - _gnutls_switch_fips_state - (GNUTLS_FIPS140_OP_NOT_APPROVED); + _gnutls_switch_fips_state( + GNUTLS_FIPS140_OP_NOT_APPROVED); } /* Encode the digest as a DigestInfo */ - if ((ret = - encode_ber_digest_info(hash, &old_digest, digest)) != 0) { + if ((ret = encode_ber_digest_info(hash, &old_digest, digest)) != + 0) { gnutls_assert(); return ret; } diff --git a/lib/pk.h b/lib/pk.h index bc3a0950be..20fe314f94 100644 --- a/lib/pk.h +++ b/lib/pk.h @@ -21,109 +21,111 @@ */ #ifndef GNUTLS_LIB_PK_H -# define GNUTLS_LIB_PK_H +#define GNUTLS_LIB_PK_H extern int crypto_pk_prio; extern gnutls_crypto_pk_st _gnutls_pk_ops; -# define _gnutls_pk_encrypt( algo, ciphertext, plaintext, params) _gnutls_pk_ops.encrypt( algo, ciphertext, plaintext, params) -# define _gnutls_pk_decrypt( algo, ciphertext, plaintext, params) _gnutls_pk_ops.decrypt( algo, ciphertext, plaintext, params) -# define _gnutls_pk_decrypt2( algo, ciphertext, plaintext, size, params) _gnutls_pk_ops.decrypt2( algo, ciphertext, plaintext, size, params) -# define _gnutls_pk_sign( algo, sig, data, params, sign_params) _gnutls_pk_ops.sign( algo, sig, data, params, sign_params) -# define _gnutls_pk_verify( algo, data, sig, params, sign_params) _gnutls_pk_ops.verify( algo, data, sig, params, sign_params) -# define _gnutls_pk_verify_priv_params( algo, params) _gnutls_pk_ops.verify_priv_params( algo, params) -# define _gnutls_pk_verify_pub_params( algo, params) _gnutls_pk_ops.verify_pub_params( algo, params) -# define _gnutls_pk_derive( algo, out, pub, priv) _gnutls_pk_ops.derive( algo, out, pub, priv, NULL, 0) -# define _gnutls_pk_derive_nonce( algo, out, pub, priv, nonce) _gnutls_pk_ops.derive( algo, out, pub, priv, nonce, 0) -# define _gnutls_pk_derive_tls13( algo, out, pub, priv) _gnutls_pk_ops.derive( algo, out, pub, priv, NULL, PK_DERIVE_TLS13) -# define _gnutls_pk_generate_keys( algo, bits, params, temporal) _gnutls_pk_ops.generate_keys( algo, bits, params, temporal) -# define _gnutls_pk_generate_params( algo, bits, priv) _gnutls_pk_ops.generate_params( algo, bits, priv) -# define _gnutls_pk_hash_algorithm( pk, sig, params, hash) _gnutls_pk_ops.hash_algorithm(pk, sig, params, hash) -# define _gnutls_pk_curve_exists( curve) _gnutls_pk_ops.curve_exists(curve) -# define _gnutls_pk_exists(algo) _gnutls_pk_ops.pk_exists(algo) -# define _gnutls_pk_sign_exists(algo) _gnutls_pk_ops.sign_exists(algo) - -inline static int -_gnutls_pk_fixup(gnutls_pk_algorithm_t algo, gnutls_direction_t direction, - gnutls_pk_params_st * params) +#define _gnutls_pk_encrypt(algo, ciphertext, plaintext, params) \ + _gnutls_pk_ops.encrypt(algo, ciphertext, plaintext, params) +#define _gnutls_pk_decrypt(algo, ciphertext, plaintext, params) \ + _gnutls_pk_ops.decrypt(algo, ciphertext, plaintext, params) +#define _gnutls_pk_decrypt2(algo, ciphertext, plaintext, size, params) \ + _gnutls_pk_ops.decrypt2(algo, ciphertext, plaintext, size, params) +#define _gnutls_pk_sign(algo, sig, data, params, sign_params) \ + _gnutls_pk_ops.sign(algo, sig, data, params, sign_params) +#define _gnutls_pk_verify(algo, data, sig, params, sign_params) \ + _gnutls_pk_ops.verify(algo, data, sig, params, sign_params) +#define _gnutls_pk_verify_priv_params(algo, params) \ + _gnutls_pk_ops.verify_priv_params(algo, params) +#define _gnutls_pk_verify_pub_params(algo, params) \ + _gnutls_pk_ops.verify_pub_params(algo, params) +#define _gnutls_pk_derive(algo, out, pub, priv) \ + _gnutls_pk_ops.derive(algo, out, pub, priv, NULL, 0) +#define _gnutls_pk_derive_nonce(algo, out, pub, priv, nonce) \ + _gnutls_pk_ops.derive(algo, out, pub, priv, nonce, 0) +#define _gnutls_pk_derive_tls13(algo, out, pub, priv) \ + _gnutls_pk_ops.derive(algo, out, pub, priv, NULL, PK_DERIVE_TLS13) +#define _gnutls_pk_generate_keys(algo, bits, params, temporal) \ + _gnutls_pk_ops.generate_keys(algo, bits, params, temporal) +#define _gnutls_pk_generate_params(algo, bits, priv) \ + _gnutls_pk_ops.generate_params(algo, bits, priv) +#define _gnutls_pk_hash_algorithm(pk, sig, params, hash) \ + _gnutls_pk_ops.hash_algorithm(pk, sig, params, hash) +#define _gnutls_pk_curve_exists(curve) _gnutls_pk_ops.curve_exists(curve) +#define _gnutls_pk_exists(algo) _gnutls_pk_ops.pk_exists(algo) +#define _gnutls_pk_sign_exists(algo) _gnutls_pk_ops.sign_exists(algo) + +inline static int _gnutls_pk_fixup(gnutls_pk_algorithm_t algo, + gnutls_direction_t direction, + gnutls_pk_params_st *params) { if (_gnutls_pk_ops.pk_fixup_private_params) - return _gnutls_pk_ops.pk_fixup_private_params(algo, - direction, + return _gnutls_pk_ops.pk_fixup_private_params(algo, direction, params); return 0; } -int _gnutls_pk_params_copy(gnutls_pk_params_st * dst, - const gnutls_pk_params_st * src); +int _gnutls_pk_params_copy(gnutls_pk_params_st *dst, + const gnutls_pk_params_st *src); /* The internal PK interface */ -int _gnutls_encode_ber_rs(gnutls_datum_t * sig_value, bigint_t r, bigint_t s); -int -_gnutls_encode_ber_rs_raw(gnutls_datum_t * sig_value, - const gnutls_datum_t * r, const gnutls_datum_t * s); +int _gnutls_encode_ber_rs(gnutls_datum_t *sig_value, bigint_t r, bigint_t s); +int _gnutls_encode_ber_rs_raw(gnutls_datum_t *sig_value, + const gnutls_datum_t *r, const gnutls_datum_t *s); -int -_gnutls_decode_ber_rs(const gnutls_datum_t * sig_value, bigint_t * r, - bigint_t * s); +int _gnutls_decode_ber_rs(const gnutls_datum_t *sig_value, bigint_t *r, + bigint_t *s); -int -_gnutls_decode_ber_rs_raw(const gnutls_datum_t * sig_value, gnutls_datum_t * r, - gnutls_datum_t * s); +int _gnutls_decode_ber_rs_raw(const gnutls_datum_t *sig_value, + gnutls_datum_t *r, gnutls_datum_t *s); -int -_gnutls_encode_gost_rs(gnutls_datum_t * sig_value, bigint_t r, bigint_t s, - size_t intsize); +int _gnutls_encode_gost_rs(gnutls_datum_t *sig_value, bigint_t r, bigint_t s, + size_t intsize); -int -_gnutls_decode_gost_rs(const gnutls_datum_t * sig_value, bigint_t * r, - bigint_t * s); +int _gnutls_decode_gost_rs(const gnutls_datum_t *sig_value, bigint_t *r, + bigint_t *s); gnutls_digest_algorithm_t _gnutls_gost_digest(gnutls_pk_algorithm_t pk); gnutls_pk_algorithm_t _gnutls_digest_gost(gnutls_digest_algorithm_t digest); gnutls_gost_paramset_t _gnutls_gost_paramset_default(gnutls_pk_algorithm_t pk); -int -encode_ber_digest_info(const mac_entry_st * e, - const gnutls_datum_t * digest, gnutls_datum_t * output); - -# define decode_ber_digest_info gnutls_decode_ber_digest_info - -int -_gnutls_params_get_rsa_raw(const gnutls_pk_params_st * params, - gnutls_datum_t * m, gnutls_datum_t * e, - gnutls_datum_t * d, gnutls_datum_t * p, - gnutls_datum_t * q, gnutls_datum_t * u, - gnutls_datum_t * e1, - gnutls_datum_t * e2, unsigned int flags); - -int -_gnutls_params_get_dsa_raw(const gnutls_pk_params_st * params, - gnutls_datum_t * p, gnutls_datum_t * q, - gnutls_datum_t * g, gnutls_datum_t * y, - gnutls_datum_t * x, unsigned int flags); - -int _gnutls_params_get_ecc_raw(const gnutls_pk_params_st * params, - gnutls_ecc_curve_t * curve, - gnutls_datum_t * x, - gnutls_datum_t * y, - gnutls_datum_t * k, unsigned int flags); - -int _gnutls_params_get_gost_raw(const gnutls_pk_params_st * params, - gnutls_ecc_curve_t * curve, - gnutls_digest_algorithm_t * digest, - gnutls_gost_paramset_t * paramset, - gnutls_datum_t * x, - gnutls_datum_t * y, - gnutls_datum_t * k, unsigned int flags); - -int pk_prepare_hash(gnutls_pk_algorithm_t pk, const mac_entry_st * hash, - gnutls_datum_t * output); -int pk_hash_data(gnutls_pk_algorithm_t pk, const mac_entry_st * hash, - gnutls_pk_params_st * params, const gnutls_datum_t * data, - gnutls_datum_t * digest); - -int _gnutls_find_rsa_pss_salt_size(unsigned bits, const mac_entry_st * me, +int encode_ber_digest_info(const mac_entry_st *e, const gnutls_datum_t *digest, + gnutls_datum_t *output); + +#define decode_ber_digest_info gnutls_decode_ber_digest_info + +int _gnutls_params_get_rsa_raw(const gnutls_pk_params_st *params, + gnutls_datum_t *m, gnutls_datum_t *e, + gnutls_datum_t *d, gnutls_datum_t *p, + gnutls_datum_t *q, gnutls_datum_t *u, + gnutls_datum_t *e1, gnutls_datum_t *e2, + unsigned int flags); + +int _gnutls_params_get_dsa_raw(const gnutls_pk_params_st *params, + gnutls_datum_t *p, gnutls_datum_t *q, + gnutls_datum_t *g, gnutls_datum_t *y, + gnutls_datum_t *x, unsigned int flags); + +int _gnutls_params_get_ecc_raw(const gnutls_pk_params_st *params, + gnutls_ecc_curve_t *curve, gnutls_datum_t *x, + gnutls_datum_t *y, gnutls_datum_t *k, + unsigned int flags); + +int _gnutls_params_get_gost_raw(const gnutls_pk_params_st *params, + gnutls_ecc_curve_t *curve, + gnutls_digest_algorithm_t *digest, + gnutls_gost_paramset_t *paramset, + gnutls_datum_t *x, gnutls_datum_t *y, + gnutls_datum_t *k, unsigned int flags); + +int pk_prepare_hash(gnutls_pk_algorithm_t pk, const mac_entry_st *hash, + gnutls_datum_t *output); +int pk_hash_data(gnutls_pk_algorithm_t pk, const mac_entry_st *hash, + gnutls_pk_params_st *params, const gnutls_datum_t *data, + gnutls_datum_t *digest); + +int _gnutls_find_rsa_pss_salt_size(unsigned bits, const mac_entry_st *me, unsigned salt_size); -#endif /* GNUTLS_LIB_PK_H */ +#endif /* GNUTLS_LIB_PK_H */ diff --git a/lib/pkcs11.c b/lib/pkcs11.c index 1db41ad9f6..96c4fe164f 100644 --- a/lib/pkcs11.c +++ b/lib/pkcs11.c @@ -47,11 +47,11 @@ #define MAX_SLOTS 48 #ifndef CKA_NSS_SERVER_DISTRUST_AFTER -# define CKA_NSS_SERVER_DISTRUST_AFTER 0xce534373UL +#define CKA_NSS_SERVER_DISTRUST_AFTER 0xce534373UL #endif #ifndef CKA_NSS_EMAIL_DISTRUST_AFTER -# define CKA_NSS_EMAIL_DISTRUST_AFTER 0xce534374UL +#define CKA_NSS_EMAIL_DISTRUST_AFTER 0xce534374UL #endif GNUTLS_STATIC_MUTEX(pkcs11_mutex); @@ -60,21 +60,21 @@ struct gnutls_pkcs11_provider_st { struct ck_function_list *module; unsigned active; unsigned custom_init; - unsigned trusted; /* in the sense of p11-kit trusted: + unsigned trusted; /* in the sense of p11-kit trusted: * it can be used for verification */ struct ck_info info; }; struct find_flags_data_st { struct p11_kit_uri *info; - unsigned int slot_flags; /* Slot Information Flags */ - unsigned int token_flags; /* Token Information Flags */ + unsigned int slot_flags; /* Slot Information Flags */ + unsigned int token_flags; /* Token Information Flags */ unsigned int trusted; }; struct find_single_obj_st { gnutls_pkcs11_obj_t obj; - bool overwrite_exts; /* only valid if looking for a certificate */ + bool overwrite_exts; /* only valid if looking for a certificate */ }; struct find_obj_session_st { @@ -90,13 +90,13 @@ struct find_multi_obj_st { unsigned int current; unsigned int flags; struct p11_kit_uri *info; - bool overwrite_exts; /* only valid if looking for a certificate */ + bool overwrite_exts; /* only valid if looking for a certificate */ }; struct find_token_num { struct p11_kit_uri *info; - unsigned int seq; /* which one we are looking for */ - unsigned int current; /* which one are we now */ + unsigned int seq; /* which one we are looking for */ + unsigned int current; /* which one are we now */ }; struct find_token_modname { @@ -125,7 +125,7 @@ struct find_cert_st { unsigned need_import; gnutls_pkcs11_obj_t obj; - gnutls_x509_crt_t crt; /* used when compare flag is specified */ + gnutls_x509_crt_t crt; /* used when compare flag is specified */ enum distrust_purpose distrust_purpose; time_t distrust_after; unsigned flags; @@ -229,8 +229,8 @@ int pkcs11_rv_to_err(ck_rv_t rv) } } -static int scan_slots(struct gnutls_pkcs11_provider_st *p, - ck_slot_id_t * slots, unsigned long *nslots) +static int scan_slots(struct gnutls_pkcs11_provider_st *p, ck_slot_id_t *slots, + unsigned long *nslots) { ck_rv_t rv; @@ -242,9 +242,8 @@ static int scan_slots(struct gnutls_pkcs11_provider_st *p, return 0; } -static int -pkcs11_add_module(const char *name, struct ck_function_list *module, - unsigned custom_init, const char *params) +static int pkcs11_add_module(const char *name, struct ck_function_list *module, + unsigned custom_init, const char *params) { unsigned int i; struct ck_info info; @@ -336,8 +335,8 @@ int _gnutls_pkcs11_check_init(init_level_t req_level, void *priv, case PROV_INIT_TRUSTED: case PROV_INIT_MANUAL_TRUSTED: if (providers_initialized < PROV_INIT_MANUAL_TRUSTED) { - _gnutls_debug_log - ("Initializing needed PKCS #11 modules\n"); + _gnutls_debug_log( + "Initializing needed PKCS #11 modules\n"); ret = auto_load(1); if (ret < 0) { gnutls_assert(); @@ -345,7 +344,7 @@ int _gnutls_pkcs11_check_init(init_level_t req_level, void *priv, if (providers_initialized == PROV_INIT_MANUAL) providers_initialized = - PROV_INIT_MANUAL_TRUSTED; + PROV_INIT_MANUAL_TRUSTED; else providers_initialized = PROV_INIT_TRUSTED; @@ -355,8 +354,8 @@ int _gnutls_pkcs11_check_init(init_level_t req_level, void *priv, case PROV_INIT_ALL: if (providers_initialized == PROV_INIT_TRUSTED || providers_initialized == PROV_UNINITIALIZED) { - _gnutls_debug_log - ("Initializing all PKCS #11 modules\n"); + _gnutls_debug_log( + "Initializing all PKCS #11 modules\n"); ret = gnutls_pkcs11_init(GNUTLS_PKCS11_FLAG_AUTO, NULL); if (ret < 0) { gnutls_assert(); @@ -370,7 +369,7 @@ int _gnutls_pkcs11_check_init(init_level_t req_level, void *priv, ret = sret; - cleanup: +cleanup: (void)gnutls_static_mutex_unlock(&pkcs11_mutex); return ret; @@ -449,10 +448,9 @@ int gnutls_pkcs11_add_provider(const char *name, const char *params) return ret; } -static -int add_obj_attrs(struct p11_kit_uri *info, struct ck_attribute a[4], - unsigned *a_vals, ck_object_class_t * class, - ck_certificate_type_t * type) +static int add_obj_attrs(struct p11_kit_uri *info, struct ck_attribute a[4], + unsigned *a_vals, ck_object_class_t *class, + ck_certificate_type_t *type) { struct ck_attribute *attr; @@ -489,7 +487,7 @@ int add_obj_attrs(struct p11_kit_uri *info, struct ck_attribute a[4], (*a_vals)++; } - if (*type != (ck_certificate_type_t) - 1) { + if (*type != (ck_certificate_type_t)-1) { a[(*a_vals)].type = CKA_CERTIFICATE_TYPE; a[(*a_vals)].value = type; a[(*a_vals)].value_len = sizeof *type; @@ -515,10 +513,9 @@ int add_obj_attrs(struct p11_kit_uri *info, struct ck_attribute a[4], * * Since: 3.4.0 **/ -int -gnutls_pkcs11_obj_set_info(gnutls_pkcs11_obj_t obj, - gnutls_pkcs11_obj_info_t itype, - const void *data, size_t data_size, unsigned flags) +int gnutls_pkcs11_obj_set_info(gnutls_pkcs11_obj_t obj, + gnutls_pkcs11_obj_info_t itype, const void *data, + size_t data_size, unsigned flags) { struct p11_kit_uri *info = obj->info; struct pkcs11_session_info sinfo; @@ -535,9 +532,9 @@ gnutls_pkcs11_obj_set_info(gnutls_pkcs11_obj_t obj, PKCS11_CHECK_INIT; - ret = - pkcs11_open_session(&sinfo, NULL, info, - SESSION_WRITE | pkcs11_obj_flags_to_int(flags)); + ret = pkcs11_open_session(&sinfo, NULL, info, + SESSION_WRITE | + pkcs11_obj_flags_to_int(flags)); if (ret < 0) { gnutls_assert(); return ret; @@ -568,9 +565,9 @@ gnutls_pkcs11_obj_set_info(gnutls_pkcs11_obj_t obj, if (count > 1 || count == 0) { gnutls_assert(); if (count > 1) - _gnutls_debug_log - ("p11: More than one objects match (%d)\n", - (int)count); + _gnutls_debug_log( + "p11: More than one objects match (%d)\n", + (int)count); ret = GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; goto cleanup; } @@ -578,7 +575,7 @@ gnutls_pkcs11_obj_set_info(gnutls_pkcs11_obj_t obj, switch (itype) { case GNUTLS_PKCS11_OBJ_ID_HEX: size = sizeof(tmp); - ret = _gnutls_hex2bin(data, data_size, (uint8_t *) tmp, &size); + ret = _gnutls_hex2bin(data, data_size, (uint8_t *)tmp, &size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -624,7 +621,7 @@ gnutls_pkcs11_obj_set_info(gnutls_pkcs11_obj_t obj, } ret = 0; - cleanup: +cleanup: pkcs11_close_session(&sinfo); return ret; } @@ -653,19 +650,17 @@ gnutls_pkcs11_obj_set_info(gnutls_pkcs11_obj_t obj, * * Since: 2.12.0 **/ -int -gnutls_pkcs11_obj_get_info(gnutls_pkcs11_obj_t obj, - gnutls_pkcs11_obj_info_t itype, - void *output, size_t *output_size) +int gnutls_pkcs11_obj_get_info(gnutls_pkcs11_obj_t obj, + gnutls_pkcs11_obj_info_t itype, void *output, + size_t *output_size) { return pkcs11_get_info(obj->info, itype, output, output_size); } -static int -find_obj_session_cb(struct ck_function_list *module, - struct pkcs11_session_info *sinfo, - struct ck_token_info *tinfo, struct ck_info *lib_info, - void *input) +static int find_obj_session_cb(struct ck_function_list *module, + struct pkcs11_session_info *sinfo, + struct ck_token_info *tinfo, + struct ck_info *lib_info, void *input) { struct find_obj_session_st *find_data = input; struct ck_attribute a[4]; @@ -677,7 +672,7 @@ find_obj_session_cb(struct ck_function_list *module, ck_object_class_t class; int found = 0, ret; - if (tinfo == NULL) { /* we don't support multiple calls */ + if (tinfo == NULL) { /* we don't support multiple calls */ gnutls_assert(); return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; } @@ -703,7 +698,8 @@ find_obj_session_cb(struct ck_function_list *module, } if (pkcs11_find_objects(sinfo->module, sinfo->pks, &ctx, 1, &count) == - CKR_OK && count == 1) { + CKR_OK && + count == 1) { find_data->ptr = sinfo->module; find_data->pks = sinfo->pks; find_data->slot_id = sinfo->sid; @@ -722,7 +718,7 @@ find_obj_session_cb(struct ck_function_list *module, ret = 0; } - cleanup: +cleanup: pkcs11_find_objects_final(sinfo); return ret; @@ -746,10 +742,9 @@ find_obj_session_cb(struct ck_function_list *module, * * Since: 3.6.3 **/ -int -gnutls_pkcs11_obj_get_ptr(gnutls_pkcs11_obj_t obj, void **ptr, - void **session, void **ohandle, - unsigned long *slot_id, unsigned int flags) +int gnutls_pkcs11_obj_get_ptr(gnutls_pkcs11_obj_t obj, void **ptr, + void **session, void **ohandle, + unsigned long *slot_id, unsigned int flags) { int ret; struct find_obj_session_st find_data; @@ -759,11 +754,9 @@ gnutls_pkcs11_obj_get_ptr(gnutls_pkcs11_obj_t obj, void **ptr, find_data.obj = obj; - ret = - _pkcs11_traverse_tokens(find_obj_session_cb, &find_data, obj->info, - &obj->pin, - SESSION_NO_CLOSE | - pkcs11_obj_flags_to_int(flags)); + ret = _pkcs11_traverse_tokens( + find_obj_session_cb, &find_data, obj->info, &obj->pin, + SESSION_NO_CLOSE | pkcs11_obj_flags_to_int(flags)); if (ret < 0) { gnutls_assert(); return ret; @@ -781,10 +774,8 @@ gnutls_pkcs11_obj_get_ptr(gnutls_pkcs11_obj_t obj, void **ptr, return 0; } -int -pkcs11_get_info(struct p11_kit_uri *info, - gnutls_pkcs11_obj_info_t itype, void *output, - size_t *output_size) +int pkcs11_get_info(struct p11_kit_uri *info, gnutls_pkcs11_obj_info_t itype, + void *output, size_t *output_size) { struct ck_attribute *attr = NULL; struct ck_version *version = NULL; @@ -855,14 +846,13 @@ pkcs11_get_info(struct p11_kit_uri *info, terminate = 1; } else if (version != NULL) { data = buf; - length = - snprintf(buf, sizeof(buf), "%d.%d", - (int)version->major, (int)version->minor); + length = snprintf(buf, sizeof(buf), "%d.%d", + (int)version->major, (int)version->minor); terminate = 1; } else { *output_size = 0; if (output) - ((uint8_t *) output)[0] = 0; + ((uint8_t *)output)[0] = 0; return 0; } @@ -929,8 +919,8 @@ static void compat_load(const char *configfile) ret = gnutls_pkcs11_add_provider(library, NULL); if (ret < 0) { gnutls_assert(); - _gnutls_debug_log - ("Cannot load provider: %s\n", library); + _gnutls_debug_log("Cannot load provider: %s\n", + library); continue; } } @@ -946,14 +936,12 @@ static int auto_load(unsigned trusted) int i, ret; char *name; - modules = - p11_kit_modules_load_and_initialize(trusted ? P11_KIT_MODULE_TRUSTED - : 0); + modules = p11_kit_modules_load_and_initialize( + trusted ? P11_KIT_MODULE_TRUSTED : 0); if (modules == NULL) { gnutls_assert(); - _gnutls_debug_log - ("Cannot initialize registered modules: %s\n", - p11_kit_message()); + _gnutls_debug_log("Cannot initialize registered modules: %s\n", + p11_kit_message()); return GNUTLS_E_PKCS11_LOAD_ERROR; } @@ -964,8 +952,8 @@ static int auto_load(unsigned trusted) ret = pkcs11_add_module(name, modules[i], 0, NULL); if (ret < 0) { gnutls_assert(); - _gnutls_debug_log - ("Cannot load PKCS #11 module: %s\n", name); + _gnutls_debug_log("Cannot load PKCS #11 module: %s\n", + name); } free(name); } @@ -1044,16 +1032,16 @@ static int _gnutls_pkcs11_reinit(void) for (i = 0; i < active_providers; i++) { if (providers[i].module != NULL) { rv = p11_kit_module_initialize(providers[i].module); - if (rv == CKR_OK - || rv == CKR_CRYPTOKI_ALREADY_INITIALIZED) { + if (rv == CKR_OK || + rv == CKR_CRYPTOKI_ALREADY_INITIALIZED) { providers[i].active = 1; } else { providers[i].active = 0; - _gnutls_debug_log - ("Cannot re-initialize registered module '%.*s': %s\n", - (int)32, - providers[i].info.library_description, - p11_kit_strerror(rv)); + _gnutls_debug_log( + "Cannot re-initialize registered module '%.*s': %s\n", + (int)32, + providers[i].info.library_description, + p11_kit_strerror(rv)); } } } @@ -1113,7 +1101,6 @@ void gnutls_pkcs11_deinit(void) for (i = 0; i < active_providers; i++) { if (providers[i].active) { - if (!providers[i].custom_init) p11_kit_module_finalize(providers[i].module); else @@ -1140,9 +1127,8 @@ void gnutls_pkcs11_deinit(void) * * Since: 2.12.0 **/ -void -gnutls_pkcs11_set_token_function(gnutls_pkcs11_token_callback_t fn, - void *userdata) +void gnutls_pkcs11_set_token_function(gnutls_pkcs11_token_callback_t fn, + void *userdata) { _gnutls_token_func = fn; _gnutls_token_data = userdata; @@ -1172,8 +1158,8 @@ int pkcs11_url_to_info(const char *url, struct p11_kit_uri **info, *info = NULL; } gnutls_assert(); - return ret == P11_KIT_URI_NO_MEMORY ? - GNUTLS_E_MEMORY_ERROR : GNUTLS_E_PARSING_ERROR; + return ret == P11_KIT_URI_NO_MEMORY ? GNUTLS_E_MEMORY_ERROR : + GNUTLS_E_PARSING_ERROR; } /* check for incomplete/invalid URIs */ @@ -1200,9 +1186,8 @@ int pkcs11_url_to_info(const char *url, struct p11_kit_uri **info, return 0; } -int -pkcs11_info_to_url(struct p11_kit_uri *info, - gnutls_pkcs11_url_type_t detailed, char **url) +int pkcs11_info_to_url(struct p11_kit_uri *info, + gnutls_pkcs11_url_type_t detailed, char **url) { p11_kit_uri_type_t type = 0; int ret; @@ -1215,17 +1200,16 @@ pkcs11_info_to_url(struct p11_kit_uri *info, type = P11_KIT_URI_FOR_OBJECT_ON_TOKEN_AND_MODULE; break; case GNUTLS_PKCS11_URL_LIB_VERSION: - type = - P11_KIT_URI_FOR_OBJECT_ON_TOKEN_AND_MODULE | - P11_KIT_URI_FOR_MODULE_WITH_VERSION; + type = P11_KIT_URI_FOR_OBJECT_ON_TOKEN_AND_MODULE | + P11_KIT_URI_FOR_MODULE_WITH_VERSION; break; } ret = p11_kit_uri_format(info, type, url); if (ret < 0) { gnutls_assert(); - return ret == P11_KIT_URI_NO_MEMORY ? - GNUTLS_E_MEMORY_ERROR : GNUTLS_E_INTERNAL_ERROR; + return ret == P11_KIT_URI_NO_MEMORY ? GNUTLS_E_MEMORY_ERROR : + GNUTLS_E_INTERNAL_ERROR; } return 0; @@ -1242,7 +1226,7 @@ pkcs11_info_to_url(struct p11_kit_uri *info, * * Since: 2.12.0 **/ -int gnutls_pkcs11_obj_init(gnutls_pkcs11_obj_t * obj) +int gnutls_pkcs11_obj_init(gnutls_pkcs11_obj_t *obj) { *obj = gnutls_calloc(1, sizeof(struct gnutls_pkcs11_obj_st)); if (*obj == NULL) { @@ -1272,9 +1256,9 @@ int gnutls_pkcs11_obj_init(gnutls_pkcs11_obj_t * obj) * * Since: 3.1.0 **/ -void -gnutls_pkcs11_obj_set_pin_function(gnutls_pkcs11_obj_t obj, - gnutls_pin_callback_t fn, void *userdata) +void gnutls_pkcs11_obj_set_pin_function(gnutls_pkcs11_obj_t obj, + gnutls_pin_callback_t fn, + void *userdata) { obj->pin.cb = fn; obj->pin.data = userdata; @@ -1318,9 +1302,8 @@ void gnutls_pkcs11_obj_deinit(gnutls_pkcs11_obj_t obj) * * Since: 2.12.0 **/ -int -gnutls_pkcs11_obj_export(gnutls_pkcs11_obj_t obj, - void *output_data, size_t *output_data_size) +int gnutls_pkcs11_obj_export(gnutls_pkcs11_obj_t obj, void *output_data, + size_t *output_data_size) { if (obj == NULL || obj->raw.data == NULL) { gnutls_assert(); @@ -1354,7 +1337,7 @@ gnutls_pkcs11_obj_export(gnutls_pkcs11_obj_t obj, * * Since: 3.1.3 **/ -int gnutls_pkcs11_obj_export2(gnutls_pkcs11_obj_t obj, gnutls_datum_t * out) +int gnutls_pkcs11_obj_export2(gnutls_pkcs11_obj_t obj, gnutls_datum_t *out) { return gnutls_pkcs11_obj_export3(obj, GNUTLS_X509_FMT_DER, out); } @@ -1376,9 +1359,8 @@ int gnutls_pkcs11_obj_export2(gnutls_pkcs11_obj_t obj, gnutls_datum_t * out) * * Since: 3.2.7 **/ -int -gnutls_pkcs11_obj_export3(gnutls_pkcs11_obj_t obj, - gnutls_x509_crt_fmt_t fmt, gnutls_datum_t * out) +int gnutls_pkcs11_obj_export3(gnutls_pkcs11_obj_t obj, + gnutls_x509_crt_fmt_t fmt, gnutls_datum_t *out) { int ret; @@ -1390,48 +1372,45 @@ gnutls_pkcs11_obj_export3(gnutls_pkcs11_obj_t obj, switch (obj->type) { case GNUTLS_PKCS11_OBJ_X509_CRT: if (obj->raw.data == NULL) - return - gnutls_assert_val - (GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); + return gnutls_assert_val( + GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); if (fmt == GNUTLS_X509_FMT_PEM) { - return - gnutls_pem_base64_encode2(PEM_X509_CERT2, - &obj->raw, out); + return gnutls_pem_base64_encode2(PEM_X509_CERT2, + &obj->raw, out); } else { return _gnutls_set_datum(out, obj->raw.data, obj->raw.size); } - case GNUTLS_PKCS11_OBJ_PUBKEY:{ - /* that approach allows to return a public key even if + case GNUTLS_PKCS11_OBJ_PUBKEY: { + /* that approach allows to return a public key even if * CKA_VALUE is not set */ - gnutls_pubkey_t pubkey; + gnutls_pubkey_t pubkey; - ret = gnutls_pubkey_init(&pubkey); - if (ret < 0) - return gnutls_assert_val(ret); + ret = gnutls_pubkey_init(&pubkey); + if (ret < 0) + return gnutls_assert_val(ret); - ret = gnutls_pubkey_import_pkcs11(pubkey, obj, 0); - if (ret < 0) { - gnutls_assert(); - goto pcleanup; - } + ret = gnutls_pubkey_import_pkcs11(pubkey, obj, 0); + if (ret < 0) { + gnutls_assert(); + goto pcleanup; + } - ret = gnutls_pubkey_export2(pubkey, fmt, out); + ret = gnutls_pubkey_export2(pubkey, fmt, out); - pcleanup: - gnutls_pubkey_deinit(pubkey); - return ret; - } + pcleanup: + gnutls_pubkey_deinit(pubkey); + return ret; + } default: if (obj->raw.data == NULL) - return - gnutls_assert_val - (GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); + return gnutls_assert_val( + GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); if (fmt == GNUTLS_X509_FMT_PEM) { - return gnutls_pem_base64_encode2("DATA", - &obj->raw, out); + return gnutls_pem_base64_encode2("DATA", &obj->raw, + out); } else { return _gnutls_set_datum(out, obj->raw.data, obj->raw.size); @@ -1439,11 +1418,9 @@ gnutls_pkcs11_obj_export3(gnutls_pkcs11_obj_t obj, } } -int -pkcs11_find_slot(struct ck_function_list **module, ck_slot_id_t * slot, - struct p11_kit_uri *info, - struct ck_token_info *_tinfo, - struct ck_slot_info *_slot_info, unsigned int *trusted) +int pkcs11_find_slot(struct ck_function_list **module, ck_slot_id_t *slot, + struct p11_kit_uri *info, struct ck_token_info *_tinfo, + struct ck_slot_info *_slot_info, unsigned int *trusted) { unsigned int x, z; int ret; @@ -1469,8 +1446,8 @@ pkcs11_find_slot(struct ck_function_list **module, ck_slot_id_t * slot, struct ck_token_info tinfo; struct ck_slot_info sinfo; - if (pkcs11_get_token_info - (providers[x].module, slots[z], &tinfo) != CKR_OK) { + if (pkcs11_get_token_info(providers[x].module, slots[z], + &tinfo) != CKR_OK) { continue; } @@ -1478,8 +1455,8 @@ pkcs11_find_slot(struct ck_function_list **module, ck_slot_id_t * slot, continue; } - if (pkcs11_get_slot_info - (providers[x].module, slots[z], &sinfo) != CKR_OK) { + if (pkcs11_get_slot_info(providers[x].module, slots[z], + &sinfo) != CKR_OK) { continue; } @@ -1504,10 +1481,9 @@ pkcs11_find_slot(struct ck_function_list **module, ck_slot_id_t * slot, return GNUTLS_E_PKCS11_REQUESTED_OBJECT_NOT_AVAILBLE; } -int -pkcs11_open_session(struct pkcs11_session_info *sinfo, - struct pin_info_st *pin_info, - struct p11_kit_uri *info, unsigned int flags) +int pkcs11_open_session(struct pkcs11_session_info *sinfo, + struct pin_info_st *pin_info, struct p11_kit_uri *info, + unsigned int flags) { ck_rv_t rv; int ret; @@ -1518,16 +1494,18 @@ pkcs11_open_session(struct pkcs11_session_info *sinfo, memset(sinfo, 0, sizeof(*sinfo)); - ret = pkcs11_find_slot(&module, &slot, info, &tinfo, - &sinfo->slot_info, &sinfo->trusted); + ret = pkcs11_find_slot(&module, &slot, info, &tinfo, &sinfo->slot_info, + &sinfo->trusted); if (ret < 0) { gnutls_assert(); return ret; } - rv = (module)->C_OpenSession(slot, ((flags & SESSION_WRITE) - ? CKF_RW_SESSION : 0) | - CKF_SERIAL_SESSION, NULL, NULL, &pks); + rv = (module)->C_OpenSession(slot, + ((flags & SESSION_WRITE) ? CKF_RW_SESSION : + 0) | + CKF_SERIAL_SESSION, + NULL, NULL, &pks); if (rv != CKR_OK) { gnutls_assert(); return pkcs11_rv_to_err(rv); @@ -1550,10 +1528,9 @@ pkcs11_open_session(struct pkcs11_session_info *sinfo, return 0; } -int -_pkcs11_traverse_tokens(find_func_t find_func, void *input, - struct p11_kit_uri *info, - struct pin_info_st *pin_info, unsigned int flags) +int _pkcs11_traverse_tokens(find_func_t find_func, void *input, + struct p11_kit_uri *info, + struct pin_info_st *pin_info, unsigned int flags) { ck_rv_t rv; unsigned int found = 0, x, z; @@ -1571,9 +1548,8 @@ _pkcs11_traverse_tokens(find_func_t find_func, void *input, if (flags & SESSION_TRUSTED && providers[x].trusted == 0) continue; - if (info - && !p11_kit_uri_match_module_info(info, - &providers[x].info)) { + if (info && + !p11_kit_uri_match_module_info(info, &providers[x].info)) { continue; } @@ -1589,26 +1565,26 @@ _pkcs11_traverse_tokens(find_func_t find_func, void *input, struct ck_token_info l_tinfo; struct ck_slot_info l_sinfo; - if (pkcs11_get_token_info(module, slots[z], - &l_tinfo) != CKR_OK) { + if (pkcs11_get_token_info(module, slots[z], &l_tinfo) != + CKR_OK) { continue; } - if (info - && !p11_kit_uri_match_token_info(info, &l_tinfo)) { + if (info && + !p11_kit_uri_match_token_info(info, &l_tinfo)) { continue; } - if (pkcs11_get_slot_info(module, slots[z], - &l_sinfo) != CKR_OK) { + if (pkcs11_get_slot_info(module, slots[z], &l_sinfo) != + CKR_OK) { continue; } - rv = (module)->C_OpenSession(slots[z], - ((flags & SESSION_WRITE) ? - CKF_RW_SESSION : 0) - | CKF_SERIAL_SESSION, NULL, - NULL, &pks); + rv = (module)->C_OpenSession( + slots[z], + ((flags & SESSION_WRITE) ? CKF_RW_SESSION : 0) | + CKF_SERIAL_SESSION, + NULL, NULL, &pks); if (rv != CKR_OK) { continue; } @@ -1635,9 +1611,8 @@ _pkcs11_traverse_tokens(find_func_t find_func, void *input, continue; } - ret = - find_func(providers[x].module, &sinfo, &l_tinfo, - &providers[x].info, input); + ret = find_func(providers[x].module, &sinfo, &l_tinfo, + &providers[x].info, input); if (ret == 0) { found = 1; @@ -1649,20 +1624,18 @@ _pkcs11_traverse_tokens(find_func_t find_func, void *input, } } - finish: +finish: /* final call */ if (found == 0) { if (module) { sinfo.module = module; sinfo.pks = pks; - ret = - find_func(providers[x].module, &sinfo, NULL, NULL, - input); + ret = find_func(providers[x].module, &sinfo, NULL, NULL, + input); } else - ret = - gnutls_assert_val - (GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); + ret = gnutls_assert_val( + GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); } else { ret = 0; } @@ -1719,12 +1692,12 @@ static gnutls_pkcs11_obj_type_t pkcs11_class_to_type(ck_object_class_t class) /* imports an object from a token to a pkcs11_obj_t type. */ -static int -pkcs11_obj_import(ck_object_class_t class, gnutls_pkcs11_obj_t obj, - const gnutls_datum_t * data, - const gnutls_datum_t * id, - const gnutls_datum_t * label, - struct ck_token_info *tinfo, struct ck_info *lib_info) +static int pkcs11_obj_import(ck_object_class_t class, gnutls_pkcs11_obj_t obj, + const gnutls_datum_t *data, + const gnutls_datum_t *id, + const gnutls_datum_t *label, + struct ck_token_info *tinfo, + struct ck_info *lib_info) { struct ck_attribute attr; int ret; @@ -1779,9 +1752,9 @@ pkcs11_obj_import(ck_object_class_t class, gnutls_pkcs11_obj_t obj, return 0; } -int pkcs11_read_pubkey(struct ck_function_list *module, - ck_session_handle_t pks, ck_object_handle_t ctx, - ck_key_type_t key_type, gnutls_pkcs11_obj_t pobj) +int pkcs11_read_pubkey(struct ck_function_list *module, ck_session_handle_t pks, + ck_object_handle_t ctx, ck_key_type_t key_type, + gnutls_pkcs11_obj_t pobj) { struct ck_attribute a[4]; uint8_t *tmp1; @@ -1812,7 +1785,6 @@ int pkcs11_read_pubkey(struct ck_function_list *module, if (pkcs11_get_attribute_value(module, pks, ctx, a, 2) == CKR_OK) { - pobj->pubkey[0].data = a[0].value; pobj->pubkey[0].size = a[0].value_len; @@ -1836,15 +1808,13 @@ int pkcs11_read_pubkey(struct ck_function_list *module, if ((rv = pkcs11_get_attribute_value(module, pks, ctx, a, 2)) == CKR_OK) { - ret = - _gnutls_set_datum(&pobj->pubkey[0], a[0].value, - a[0].value_len); + ret = _gnutls_set_datum(&pobj->pubkey[0], a[0].value, + a[0].value_len); if (ret >= 0) - ret = - _gnutls_set_datum(&pobj->pubkey - [1], a[1].value, - a[1].value_len); + ret = _gnutls_set_datum(&pobj->pubkey[1], + a[1].value, + a[1].value_len); if (ret < 0) { gnutls_assert(); @@ -1894,7 +1864,6 @@ int pkcs11_read_pubkey(struct ck_function_list *module, if ((rv = pkcs11_get_attribute_value(module, pks, ctx, a, 2)) == CKR_OK) { - pobj->pubkey[0].data = a[0].value; pobj->pubkey[0].size = a[0].value_len; @@ -1922,7 +1891,6 @@ int pkcs11_read_pubkey(struct ck_function_list *module, if ((rv = pkcs11_get_attribute_value(module, pks, ctx, a, 2)) == CKR_OK) { - pobj->pubkey[0].data = a[0].value; pobj->pubkey[0].size = a[0].value_len; @@ -1940,16 +1908,16 @@ int pkcs11_read_pubkey(struct ck_function_list *module, break; #endif default: - _gnutls_debug_log - ("requested reading public key of unsupported type %u\n", - (unsigned)key_type); + _gnutls_debug_log( + "requested reading public key of unsupported type %u\n", + (unsigned)key_type); ret = gnutls_assert_val(GNUTLS_E_UNIMPLEMENTED_FEATURE); goto cleanup; } return 0; - cleanup: +cleanup: gnutls_free(tmp1); gnutls_free(tmp2); @@ -1958,12 +1926,9 @@ int pkcs11_read_pubkey(struct ck_function_list *module, static int pkcs11_obj_import_pubkey(struct ck_function_list *module, - ck_session_handle_t pks, - ck_object_handle_t ctx, - gnutls_pkcs11_obj_t pobj, - gnutls_datum_t * data, - const gnutls_datum_t * id, - const gnutls_datum_t * label, + ck_session_handle_t pks, ck_object_handle_t ctx, + gnutls_pkcs11_obj_t pobj, gnutls_datum_t *data, + const gnutls_datum_t *id, const gnutls_datum_t *label, struct ck_token_info *tinfo, struct ck_info *lib_info) { struct ck_attribute a[4]; @@ -2001,8 +1966,9 @@ pkcs11_obj_import_pubkey(struct ck_function_list *module, if (pkcs11_get_attribute_value(module, pks, ctx, a, 1) == CKR_OK) { if (tval != 0) { pobj->key_usage |= GNUTLS_KEY_DIGITAL_SIGNATURE | - GNUTLS_KEY_KEY_CERT_SIGN | GNUTLS_KEY_CRL_SIGN - | GNUTLS_KEY_NON_REPUDIATION; + GNUTLS_KEY_KEY_CERT_SIGN | + GNUTLS_KEY_CRL_SIGN | + GNUTLS_KEY_NON_REPUDIATION; } } @@ -2013,8 +1979,9 @@ pkcs11_obj_import_pubkey(struct ck_function_list *module, if (pkcs11_get_attribute_value(module, pks, ctx, a, 1) == CKR_OK) { if (tval != 0) { pobj->key_usage |= GNUTLS_KEY_DIGITAL_SIGNATURE | - GNUTLS_KEY_KEY_CERT_SIGN | GNUTLS_KEY_CRL_SIGN - | GNUTLS_KEY_NON_REPUDIATION; + GNUTLS_KEY_KEY_CERT_SIGN | + GNUTLS_KEY_CRL_SIGN | + GNUTLS_KEY_NON_REPUDIATION; } } @@ -2038,16 +2005,16 @@ pkcs11_obj_import_pubkey(struct ck_function_list *module, } } - ret = pkcs11_obj_import(CKO_PUBLIC_KEY, pobj, data, id, label, - tinfo, lib_info); + ret = pkcs11_obj_import(CKO_PUBLIC_KEY, pobj, data, id, label, tinfo, + lib_info); return ret; } -static int -pkcs11_import_object(ck_object_handle_t ctx, ck_object_class_t class, - struct pkcs11_session_info *sinfo, - struct ck_token_info *tinfo, struct ck_info *lib_info, - gnutls_pkcs11_obj_t pobj) +static int pkcs11_import_object(ck_object_handle_t ctx, ck_object_class_t class, + struct pkcs11_session_info *sinfo, + struct ck_token_info *tinfo, + struct ck_info *lib_info, + gnutls_pkcs11_obj_t pobj) { ck_bool_t b; int rv, ret; @@ -2091,7 +2058,7 @@ pkcs11_import_object(ck_object_handle_t ctx, ck_object_class_t class, if (rv == CKR_OK && b != 0) pobj->flags |= GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED; - if (sinfo->trusted) { /* only p11-kit "trusted" modules support this flag */ + if (sinfo->trusted) { /* only p11-kit "trusted" modules support this flag */ a[0].type = CKA_X_DISTRUSTED; a[0].value = &b; a[0].value_len = sizeof(b); @@ -2112,7 +2079,7 @@ pkcs11_import_object(ck_object_handle_t ctx, ck_object_class_t class, pobj->flags |= GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE; else pobj->flags |= - GNUTLS_PKCS11_OBJ_FLAG_MARK_NOT_SENSITIVE; + GNUTLS_PKCS11_OBJ_FLAG_MARK_NOT_SENSITIVE; } a[0].type = CKA_EXTRACTABLE; @@ -2177,26 +2144,20 @@ pkcs11_import_object(ck_object_handle_t ctx, ck_object_class_t class, if (label.data == NULL && id.data == NULL) return gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); - rv = pkcs11_get_attribute_avalue - (sinfo->module, sinfo->pks, ctx, CKA_VALUE, &data); + rv = pkcs11_get_attribute_avalue(sinfo->module, sinfo->pks, ctx, + CKA_VALUE, &data); if (rv != CKR_OK) { gnutls_assert(); /* data will be null */ } if (class == CKO_PUBLIC_KEY) { - ret = - pkcs11_obj_import_pubkey(sinfo->module, - sinfo->pks, - ctx, - pobj, - &data, - &id, &label, tinfo, lib_info); + ret = pkcs11_obj_import_pubkey(sinfo->module, sinfo->pks, ctx, + pobj, &data, &id, &label, tinfo, + lib_info); } else { - ret = - pkcs11_obj_import(class, - pobj, - &data, &id, &label, tinfo, lib_info); + ret = pkcs11_obj_import(class, pobj, &data, &id, &label, tinfo, + lib_info); } if (ret < 0) { gnutls_assert(); @@ -2204,16 +2165,15 @@ pkcs11_import_object(ck_object_handle_t ctx, ck_object_class_t class, } ret = 0; - cleanup: +cleanup: gnutls_free(data.data); return ret; } -static int -find_single_obj_cb(struct ck_function_list *module, - struct pkcs11_session_info *sinfo, - struct ck_token_info *tinfo, struct ck_info *lib_info, - void *input) +static int find_single_obj_cb(struct ck_function_list *module, + struct pkcs11_session_info *sinfo, + struct ck_token_info *tinfo, + struct ck_info *lib_info, void *input) { struct find_single_obj_st *find_data = input; struct ck_attribute a[4]; @@ -2225,15 +2185,15 @@ find_single_obj_cb(struct ck_function_list *module, unsigned a_vals; int found = 0, ret; - if (tinfo == NULL) { /* we don't support multiple calls */ + if (tinfo == NULL) { /* we don't support multiple calls */ gnutls_assert(); return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; } /* do not bother reading the token if basic fields do not match */ - if (!p11_kit_uri_match_token_info(find_data->obj->info, tinfo) - || !p11_kit_uri_match_module_info(find_data->obj->info, lib_info)) { + if (!p11_kit_uri_match_token_info(find_data->obj->info, tinfo) || + !p11_kit_uri_match_module_info(find_data->obj->info, lib_info)) { gnutls_assert(); return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; } @@ -2251,10 +2211,10 @@ find_single_obj_cb(struct ck_function_list *module, } if (pkcs11_find_objects(sinfo->module, sinfo->pks, &ctx, 1, &count) == - CKR_OK && count == 1) { - ret = - pkcs11_import_object(ctx, class, sinfo, tinfo, lib_info, - find_data->obj); + CKR_OK && + count == 1) { + ret = pkcs11_import_object(ctx, class, sinfo, tinfo, lib_info, + find_data->obj); if (ret >= 0) { found = 1; } @@ -2269,18 +2229,17 @@ find_single_obj_cb(struct ck_function_list *module, ret = 0; } - cleanup: +cleanup: pkcs11_find_objects_final(sinfo); - if (ret == 0 && find_data->overwrite_exts - && find_data->obj->raw.size > 0 && ctx != CK_INVALID_HANDLE) { + if (ret == 0 && find_data->overwrite_exts && + find_data->obj->raw.size > 0 && ctx != CK_INVALID_HANDLE) { gnutls_datum_t spki; rv = pkcs11_get_attribute_avalue(sinfo->module, sinfo->pks, ctx, CKA_PUBLIC_KEY_INFO, &spki); if (rv == CKR_OK) { - ret = - pkcs11_override_cert_exts(sinfo, &spki, - &find_data->obj->raw); + ret = pkcs11_override_cert_exts(sinfo, &spki, + &find_data->obj->raw); gnutls_free(spki.data); if (ret < 0) { gnutls_assert(); @@ -2300,9 +2259,8 @@ unsigned int pkcs11_obj_flags_to_int(unsigned int flags) ret_flags |= SESSION_LOGIN | SESSION_FORCE_LOGIN; if (flags & GNUTLS_PKCS11_OBJ_FLAG_LOGIN_SO) - ret_flags |= - SESSION_LOGIN | SESSION_SO | SESSION_FORCE_LOGIN | - SESSION_WRITE; + ret_flags |= SESSION_LOGIN | SESSION_SO | SESSION_FORCE_LOGIN | + SESSION_WRITE; if (flags & GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE) ret_flags |= SESSION_TRUSTED; @@ -2330,9 +2288,8 @@ unsigned int pkcs11_obj_flags_to_int(unsigned int flags) * * Since: 2.12.0 **/ -int -gnutls_pkcs11_obj_import_url(gnutls_pkcs11_obj_t obj, const char *url, - unsigned int flags) +int gnutls_pkcs11_obj_import_url(gnutls_pkcs11_obj_t obj, const char *url, + unsigned int flags) { int ret; struct find_single_obj_st find_data; @@ -2353,9 +2310,9 @@ gnutls_pkcs11_obj_import_url(gnutls_pkcs11_obj_t obj, const char *url, find_data.overwrite_exts = 1; } - ret = - _pkcs11_traverse_tokens(find_single_obj_cb, &find_data, obj->info, - &obj->pin, pkcs11_obj_flags_to_int(flags)); + ret = _pkcs11_traverse_tokens(find_single_obj_cb, &find_data, obj->info, + &obj->pin, + pkcs11_obj_flags_to_int(flags)); if (ret < 0) { gnutls_assert(); return ret; @@ -2364,48 +2321,46 @@ gnutls_pkcs11_obj_import_url(gnutls_pkcs11_obj_t obj, const char *url, return 0; } -static int -find_token_num_cb(struct ck_function_list *module, - struct pkcs11_session_info *sinfo, - struct ck_token_info *tinfo, struct ck_info *lib_info, - void *input) +static int find_token_num_cb(struct ck_function_list *module, + struct pkcs11_session_info *sinfo, + struct ck_token_info *tinfo, + struct ck_info *lib_info, void *input) { struct find_token_num *find_data = input; - if (tinfo == NULL) { /* we don't support multiple calls */ + if (tinfo == NULL) { /* we don't support multiple calls */ gnutls_assert(); return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; } if (find_data->current == find_data->seq) { - memcpy(p11_kit_uri_get_token_info(find_data->info), - tinfo, sizeof(struct ck_token_info)); - memcpy(p11_kit_uri_get_module_info(find_data->info), - lib_info, sizeof(struct ck_info)); + memcpy(p11_kit_uri_get_token_info(find_data->info), tinfo, + sizeof(struct ck_token_info)); + memcpy(p11_kit_uri_get_module_info(find_data->info), lib_info, + sizeof(struct ck_info)); return 0; } find_data->current++; /* search the token for the id */ - return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; /* non zero is enough */ + return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; /* non zero is enough */ } -static int -find_token_modname_cb(struct ck_function_list *module, - struct pkcs11_session_info *sinfo, - struct ck_token_info *tinfo, struct ck_info *lib_info, - void *input) +static int find_token_modname_cb(struct ck_function_list *module, + struct pkcs11_session_info *sinfo, + struct ck_token_info *tinfo, + struct ck_info *lib_info, void *input) { struct find_token_modname *find_data = input; - if (tinfo == NULL) { /* we don't support multiple calls */ + if (tinfo == NULL) { /* we don't support multiple calls */ gnutls_assert(); return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; } - if (!p11_kit_uri_match_token_info(find_data->info, tinfo) - || !p11_kit_uri_match_module_info(find_data->info, lib_info)) { + if (!p11_kit_uri_match_token_info(find_data->info, tinfo) || + !p11_kit_uri_match_module_info(find_data->info, lib_info)) { gnutls_assert(); return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; } @@ -2417,10 +2372,9 @@ find_token_modname_cb(struct ck_function_list *module, } /* Internal symbol used by tests */ -int -_gnutls_pkcs11_token_get_url(unsigned int seq, - gnutls_pkcs11_url_type_t detailed, char **url, - unsigned flags); +int _gnutls_pkcs11_token_get_url(unsigned int seq, + gnutls_pkcs11_url_type_t detailed, char **url, + unsigned flags); /** * _gnutls_pkcs11_token_get_url: @@ -2437,10 +2391,9 @@ _gnutls_pkcs11_token_get_url(unsigned int seq, * exceeds the available tokens, otherwise a negative error value. * **/ -int -_gnutls_pkcs11_token_get_url(unsigned int seq, - gnutls_pkcs11_url_type_t detailed, char **url, - unsigned flags) +int _gnutls_pkcs11_token_get_url(unsigned int seq, + gnutls_pkcs11_url_type_t detailed, char **url, + unsigned flags) { int ret; struct find_token_num tn; @@ -2486,9 +2439,8 @@ _gnutls_pkcs11_token_get_url(unsigned int seq, * * Since: 2.12.0 **/ -int -gnutls_pkcs11_token_get_url(unsigned int seq, - gnutls_pkcs11_url_type_t detailed, char **url) +int gnutls_pkcs11_token_get_url(unsigned int seq, + gnutls_pkcs11_url_type_t detailed, char **url) { return _gnutls_pkcs11_token_get_url(seq, detailed, url, 0); } @@ -2514,10 +2466,9 @@ gnutls_pkcs11_token_get_url(unsigned int seq, * * Since: 2.12.0 **/ -int -gnutls_pkcs11_token_get_info(const char *url, - gnutls_pkcs11_token_info_t ttype, - void *output, size_t *output_size) +int gnutls_pkcs11_token_get_info(const char *url, + gnutls_pkcs11_token_info_t ttype, void *output, + size_t *output_size) { struct p11_kit_uri *info = NULL; const uint8_t *str; @@ -2550,30 +2501,29 @@ gnutls_pkcs11_token_get_info(const char *url, str = p11_kit_uri_get_token_info(info)->model; len = p11_kit_space_strlen(str, 16); break; - case GNUTLS_PKCS11_TOKEN_MODNAME:{ - struct find_token_modname tn; + case GNUTLS_PKCS11_TOKEN_MODNAME: { + struct find_token_modname tn; - memset(&tn, 0, sizeof(tn)); - tn.info = info; + memset(&tn, 0, sizeof(tn)); + tn.info = info; - ret = - _pkcs11_traverse_tokens(find_token_modname_cb, &tn, - NULL, NULL, 0); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } + ret = _pkcs11_traverse_tokens(find_token_modname_cb, &tn, NULL, + NULL, 0); + if (ret < 0) { + gnutls_assert(); + goto cleanup; + } - temp_str = tn.modname; - if (temp_str) { - str = (uint8_t *) temp_str; - len = strlen(temp_str); - } else { - gnutls_assert(); - len = 0; - } - break; + temp_str = tn.modname; + if (temp_str) { + str = (uint8_t *)temp_str; + len = strlen(temp_str); + } else { + gnutls_assert(); + len = 0; } + break; + } default: gnutls_assert(); ret = GNUTLS_E_INVALID_REQUEST; @@ -2591,7 +2541,7 @@ gnutls_pkcs11_token_get_info(const char *url, ret = GNUTLS_E_SHORT_MEMORY_BUFFER; } - cleanup: +cleanup: free(temp_str); p11_kit_uri_free(info); return ret; @@ -2613,9 +2563,8 @@ gnutls_pkcs11_token_get_info(const char *url, * * Since: 3.6.3 **/ -int -gnutls_pkcs11_token_get_ptr(const char *url, void **ptr, unsigned long *slot_id, - unsigned int flags) +int gnutls_pkcs11_token_get_ptr(const char *url, void **ptr, + unsigned long *slot_id, unsigned int flags) { struct p11_kit_uri *info = NULL; int ret; @@ -2632,8 +2581,8 @@ gnutls_pkcs11_token_get_ptr(const char *url, void **ptr, unsigned long *slot_id, memset(&tn, 0, sizeof(tn)); tn.info = info; - ret = - _pkcs11_traverse_tokens(find_token_modname_cb, &tn, NULL, NULL, 0); + ret = _pkcs11_traverse_tokens(find_token_modname_cb, &tn, NULL, NULL, + 0); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -2646,7 +2595,7 @@ gnutls_pkcs11_token_get_ptr(const char *url, void **ptr, unsigned long *slot_id, ret = 0; - cleanup: +cleanup: free(tn.modname); p11_kit_uri_free(info); return ret; @@ -2665,9 +2614,8 @@ gnutls_pkcs11_token_get_ptr(const char *url, void **ptr, unsigned long *slot_id, * * Since: 2.12.0 **/ -int -gnutls_pkcs11_obj_export_url(gnutls_pkcs11_obj_t obj, - gnutls_pkcs11_url_type_t detailed, char **url) +int gnutls_pkcs11_obj_export_url(gnutls_pkcs11_obj_t obj, + gnutls_pkcs11_url_type_t detailed, char **url) { int ret; @@ -2696,18 +2644,18 @@ gnutls_pkcs11_obj_type_t gnutls_pkcs11_obj_get_type(gnutls_pkcs11_obj_t obj) return obj->type; } -static int -retrieve_pin_from_source(const char *pinfile, - struct ck_token_info *token_info, int attempts, - ck_user_type_t user_type, struct p11_kit_pin **pin) +static int retrieve_pin_from_source(const char *pinfile, + struct ck_token_info *token_info, + int attempts, ck_user_type_t user_type, + struct p11_kit_pin **pin) { unsigned int flags = 0; struct p11_kit_uri *token_uri; struct p11_kit_pin *result; char *label; - label = - p11_kit_space_strdup(token_info->label, sizeof(token_info->label)); + label = p11_kit_space_strdup(token_info->label, + sizeof(token_info->label)); if (label == NULL) { gnutls_assert(); return GNUTLS_E_MEMORY_ERROR; @@ -2754,11 +2702,10 @@ retrieve_pin_from_source(const char *pinfile, return 0; } -static int -retrieve_pin_from_callback(const struct pin_info_st *pin_info, - struct ck_token_info *token_info, - int attempts, ck_user_type_t user_type, - struct p11_kit_pin **pin) +static int retrieve_pin_from_callback(const struct pin_info_st *pin_info, + struct ck_token_info *token_info, + int attempts, ck_user_type_t user_type, + struct p11_kit_pin **pin) { char pin_value[GNUTLS_PKCS11_MAX_PIN_LEN]; unsigned int flags = 0; @@ -2767,8 +2714,8 @@ retrieve_pin_from_callback(const struct pin_info_st *pin_info, struct p11_kit_uri *token_uri; int ret = 0; - label = - p11_kit_space_strdup(token_info->label, sizeof(token_info->label)); + label = p11_kit_space_strdup(token_info->label, + sizeof(token_info->label)); if (label == NULL) { gnutls_assert(); return GNUTLS_E_MEMORY_ERROR; @@ -2813,15 +2760,13 @@ retrieve_pin_from_callback(const struct pin_info_st *pin_info, flags |= GNUTLS_PIN_WRONG; if (pin_info && pin_info->cb) - ret = - pin_info->cb(pin_info->data, attempts, - (char *)token_str, label, flags, - pin_value, GNUTLS_PKCS11_MAX_PIN_LEN); + ret = pin_info->cb(pin_info->data, attempts, (char *)token_str, + label, flags, pin_value, + GNUTLS_PKCS11_MAX_PIN_LEN); else if (_gnutls_pin_func) - ret = - _gnutls_pin_func(_gnutls_pin_data, attempts, - (char *)token_str, label, flags, - pin_value, GNUTLS_PKCS11_MAX_PIN_LEN); + ret = _gnutls_pin_func(_gnutls_pin_data, attempts, + (char *)token_str, label, flags, + pin_value, GNUTLS_PKCS11_MAX_PIN_LEN); else ret = gnutls_assert_val(GNUTLS_E_PKCS11_PIN_ERROR); @@ -2839,10 +2784,9 @@ retrieve_pin_from_callback(const struct pin_info_st *pin_info, return 0; } -int -pkcs11_retrieve_pin(struct pin_info_st *pin_info, struct p11_kit_uri *info, - struct ck_token_info *token_info, int attempts, - ck_user_type_t user_type, struct p11_kit_pin **pin) +int pkcs11_retrieve_pin(struct pin_info_st *pin_info, struct p11_kit_uri *info, + struct ck_token_info *token_info, int attempts, + ck_user_type_t user_type, struct p11_kit_pin **pin) { const char *pinfile; int ret = GNUTLS_E_PKCS11_PIN_ERROR; @@ -2853,8 +2797,8 @@ pkcs11_retrieve_pin(struct pin_info_st *pin_info, struct p11_kit_uri *info, pinfile = p11_kit_uri_get_pin_value(info); if (pinfile != NULL) { if (attempts > 0) { - _gnutls_debug_log - ("p11: refusing more than a single attempts with pin-value\n"); + _gnutls_debug_log( + "p11: refusing more than a single attempts with pin-value\n"); return gnutls_assert_val(GNUTLS_E_PKCS11_PIN_ERROR); } @@ -2862,48 +2806,44 @@ pkcs11_retrieve_pin(struct pin_info_st *pin_info, struct p11_kit_uri *info, *pin = p11_kit_pin_new_for_string(pinfile); if (*pin != NULL) ret = 0; - } else { /* try pin-source */ + } else { /* try pin-source */ /* Check if a pinfile is specified, and use that if possible */ pinfile = p11_kit_uri_get_pin_source(info); if (pinfile != NULL) { if (attempts > 0) { - _gnutls_debug_log - ("p11: refusing more than a single attempts with pin-source\n"); - return - gnutls_assert_val - (GNUTLS_E_PKCS11_PIN_ERROR); + _gnutls_debug_log( + "p11: refusing more than a single attempts with pin-source\n"); + return gnutls_assert_val( + GNUTLS_E_PKCS11_PIN_ERROR); } - _gnutls_debug_log - ("p11: Using pin-source to retrieve PIN\n"); - ret = - retrieve_pin_from_source(pinfile, token_info, - attempts, user_type, pin); + _gnutls_debug_log( + "p11: Using pin-source to retrieve PIN\n"); + ret = retrieve_pin_from_source( + pinfile, token_info, attempts, user_type, pin); } } /* The global gnutls pin callback */ if (ret < 0) - ret = - retrieve_pin_from_callback(pin_info, token_info, - attempts, user_type, pin); + ret = retrieve_pin_from_callback(pin_info, token_info, attempts, + user_type, pin); /* Otherwise, PIN entry is necessary for login, so fail if there's * no callback. */ if (ret < 0) { gnutls_assert(); - _gnutls_debug_log - ("p11: No suitable pin callback but login required.\n"); + _gnutls_debug_log( + "p11: No suitable pin callback but login required.\n"); } return ret; } -int -pkcs11_login(struct pkcs11_session_info *sinfo, - struct pin_info_st *pin_info, - struct p11_kit_uri *info, unsigned flags) +int pkcs11_login(struct pkcs11_session_info *sinfo, + struct pin_info_st *pin_info, struct p11_kit_uri *info, + unsigned flags) { struct ck_session_info session_info; int attempt = 0, ret; @@ -2953,24 +2893,25 @@ pkcs11_login(struct pkcs11_session_info *sinfo, if (!(flags & SESSION_CONTEXT_SPECIFIC)) { /* Check whether the session is already logged in, and if so, just skip */ - rv = (sinfo->module)->C_GetSessionInfo(sinfo->pks, - &session_info); + rv = (sinfo->module) + ->C_GetSessionInfo(sinfo->pks, + &session_info); if (rv == CKR_OK) { if (flags & SESSION_SO) { if (session_info.state == CKS_RW_SO_FUNCTIONS) { ret = 0; - _gnutls_debug_log - ("p11: Already logged in as SO\n"); + _gnutls_debug_log( + "p11: Already logged in as SO\n"); goto cleanup; } } else if (session_info.state == - CKS_RO_USER_FUNCTIONS - || session_info.state == - CKS_RW_USER_FUNCTIONS) { + CKS_RO_USER_FUNCTIONS || + session_info.state == + CKS_RW_USER_FUNCTIONS) { ret = 0; - _gnutls_debug_log - ("p11: Already logged in as user\n"); + _gnutls_debug_log( + "p11: Already logged in as user\n"); goto cleanup; } } @@ -2990,31 +2931,30 @@ pkcs11_login(struct pkcs11_session_info *sinfo, } } - ret = - pkcs11_retrieve_pin(pin_info, info, &tinfo, attempt++, - user_type, &pin); + ret = pkcs11_retrieve_pin(pin_info, info, &tinfo, attempt++, + user_type, &pin); if (ret < 0) { gnutls_assert(); goto cleanup; } - rv = (sinfo->module)->C_Login(sinfo->pks, user_type, - (unsigned char *) - p11_kit_pin_get_value(pin, - NULL), - p11_kit_pin_get_length(pin)); + rv = (sinfo->module) + ->C_Login(sinfo->pks, user_type, + (unsigned char *)p11_kit_pin_get_value( + pin, NULL), + p11_kit_pin_get_length(pin)); p11_kit_pin_unref(pin); - } - while (rv == CKR_PIN_INCORRECT); + } while (rv == CKR_PIN_INCORRECT); _gnutls_debug_log("p11: Login result = %s (%lu)\n", (rv == 0) ? "ok" : p11_kit_strerror(rv), rv); - ret = (rv == CKR_OK || rv == - CKR_USER_ALREADY_LOGGED_IN) ? 0 : pkcs11_rv_to_err(rv); + ret = (rv == CKR_OK || rv == CKR_USER_ALREADY_LOGGED_IN) ? + 0 : + pkcs11_rv_to_err(rv); - cleanup: +cleanup: return ret; } @@ -3026,15 +2966,15 @@ int pkcs11_call_token_func(struct p11_kit_uri *info, const unsigned retry) tinfo = p11_kit_uri_get_token_info(info); label = p11_kit_space_strdup(tinfo->label, sizeof(tinfo->label)); - ret = (_gnutls_token_func) (_gnutls_token_data, label, retry); + ret = (_gnutls_token_func)(_gnutls_token_data, label, retry); free(label); return ret; } -static int -find_privkeys(struct pkcs11_session_info *sinfo, - struct ck_token_info *tinfo, struct find_pkey_list_st *list) +static int find_privkeys(struct pkcs11_session_info *sinfo, + struct ck_token_info *tinfo, + struct find_pkey_list_st *list) { struct ck_attribute a[3]; ck_object_class_t class; @@ -3059,9 +2999,9 @@ find_privkeys(struct pkcs11_session_info *sinfo, } list->key_ids_size = 0; - while (pkcs11_find_objects - (sinfo->module, sinfo->pks, &ctx, 1, &count) == CKR_OK - && count == 1) { + while (pkcs11_find_objects(sinfo->module, sinfo->pks, &ctx, 1, + &count) == CKR_OK && + count == 1) { list->key_ids_size++; } @@ -3091,22 +3031,20 @@ find_privkeys(struct pkcs11_session_info *sinfo, } current = 0; - while (pkcs11_find_objects - (sinfo->module, sinfo->pks, &ctx, 1, &count) == CKR_OK - && count == 1 && current < list->key_ids_size) { - + while (pkcs11_find_objects(sinfo->module, sinfo->pks, &ctx, 1, + &count) == CKR_OK && + count == 1 && current < list->key_ids_size) { a[0].type = CKA_ID; a[0].value = certid_tmp; a[0].value_len = sizeof(certid_tmp); _gnutls_buffer_init(&list->key_ids[current]); - if (pkcs11_get_attribute_value - (sinfo->module, sinfo->pks, ctx, a, 1) == CKR_OK) { - ret = - _gnutls_buffer_append_data(&list->key_ids[current], - a[0].value, - a[0].value_len); + if (pkcs11_get_attribute_value(sinfo->module, sinfo->pks, ctx, + a, 1) == CKR_OK) { + ret = _gnutls_buffer_append_data( + &list->key_ids[current], a[0].value, + a[0].value_len); if (ret < 0) return gnutls_assert_val(ret); current++; @@ -3122,19 +3060,18 @@ find_privkeys(struct pkcs11_session_info *sinfo, /* Recover certificate list from tokens */ -#define OBJECTS_A_TIME 8*1024 +#define OBJECTS_A_TIME 8 * 1024 -static int -find_multi_objs_cb(struct ck_function_list *module, - struct pkcs11_session_info *sinfo, - struct ck_token_info *tinfo, struct ck_info *lib_info, - void *input) +static int find_multi_objs_cb(struct ck_function_list *module, + struct pkcs11_session_info *sinfo, + struct ck_token_info *tinfo, + struct ck_info *lib_info, void *input) { struct find_multi_obj_st *find_data = input; struct ck_attribute a[16]; struct ck_attribute *attr; - ck_object_class_t class = (ck_object_class_t) - 1; - ck_certificate_type_t type = (ck_certificate_type_t) - 1; + ck_object_class_t class = (ck_object_class_t)-1; + ck_certificate_type_t type = (ck_certificate_type_t)-1; ck_bool_t trusted; unsigned long category; ck_rv_t rv; @@ -3142,7 +3079,7 @@ find_multi_objs_cb(struct ck_function_list *module, unsigned long count; char certid_tmp[PKCS11_ID_SIZE]; int ret; - struct find_pkey_list_st plist; /* private key holder */ + struct find_pkey_list_st plist; /* private key holder */ unsigned int i, tot_values = 0, class_set = 0; unsigned start_elem; @@ -3178,7 +3115,7 @@ find_multi_objs_cb(struct ck_function_list *module, attr = p11_kit_uri_get_attribute(find_data->info, CKA_CLASS); if (attr) { if (attr->value && attr->value_len == sizeof(ck_object_class_t)) - class = *((ck_object_class_t *) attr->value); + class = *((ck_object_class_t *)attr->value); if (class == CKO_CERTIFICATE) type = CKC_X_509; } @@ -3197,8 +3134,8 @@ find_multi_objs_cb(struct ck_function_list *module, a[tot_values].value = &type; a[tot_values].value_len = sizeof type; tot_values++; - _gnutls_assert_log - ("p11 attrs: CKA_CLASS (CERT), CKA_CERTIFICATE_TYPE\n"); + _gnutls_assert_log( + "p11 attrs: CKA_CLASS (CERT), CKA_CERTIFICATE_TYPE\n"); } if (find_data->flags & GNUTLS_PKCS11_OBJ_FLAG_PUBKEY) { @@ -3233,7 +3170,7 @@ find_multi_objs_cb(struct ck_function_list *module, } if (find_data->flags & GNUTLS_PKCS11_OBJ_FLAG_MARK_DISTRUSTED) { - if (!sinfo->trusted) { /* only p11-kit trust modules support this */ + if (!sinfo->trusted) { /* only p11-kit trust modules support this */ gnutls_assert(); return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; } @@ -3255,7 +3192,7 @@ find_multi_objs_cb(struct ck_function_list *module, _gnutls_assert_log("p11 attrs: CKA_CERTIFICATE_CATEGORY=CA\n"); } - if (class_set == 0 && class != (ck_object_class_t) - 1) { + if (class_set == 0 && class != (ck_object_class_t)-1) { a[tot_values].type = CKA_CLASS; a[tot_values].value = &class; a[tot_values].value_len = sizeof class; @@ -3297,9 +3234,9 @@ find_multi_objs_cb(struct ck_function_list *module, start_elem = find_data->current; - while (pkcs11_find_objects - (sinfo->module, sinfo->pks, ctx, OBJECTS_A_TIME, - &count) == CKR_OK && count > 0) { + while (pkcs11_find_objects(sinfo->module, sinfo->pks, ctx, + OBJECTS_A_TIME, &count) == CKR_OK && + count > 0) { unsigned j; gnutls_datum_t id; @@ -3308,10 +3245,9 @@ find_multi_objs_cb(struct ck_function_list *module, goto fail; } - find_data->p_list = - _gnutls_reallocarray_fast(find_data->p_list, - find_data->current + count, - sizeof(find_data->p_list[0])); + find_data->p_list = _gnutls_reallocarray_fast( + find_data->p_list, find_data->current + count, + sizeof(find_data->p_list[0])); if (find_data->p_list == NULL) { ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); goto fail; @@ -3322,9 +3258,9 @@ find_multi_objs_cb(struct ck_function_list *module, a[0].value = certid_tmp; a[0].value_len = sizeof certid_tmp; - if (pkcs11_get_attribute_value - (sinfo->module, sinfo->pks, ctx[j], a, - 1) == CKR_OK) { + if (pkcs11_get_attribute_value(sinfo->module, + sinfo->pks, ctx[j], a, + 1) == CKR_OK) { id.data = a[0].value; id.size = a[0].value_len; } else { @@ -3349,27 +3285,25 @@ find_multi_objs_cb(struct ck_function_list *module, GNUTLS_PKCS11_OBJ_FLAG_WITH_PRIVKEY) { for (i = 0; i < plist.key_ids_size; i++) { if (plist.key_ids[i].length != - id.size - || memcmp(plist.key_ids[i].data, - id.data, id.size) != 0) { + id.size || + memcmp(plist.key_ids[i].data, + id.data, id.size) != 0) { /* not found */ continue; } } } - ret = - gnutls_pkcs11_obj_init(&find_data->p_list - [find_data->current]); + ret = gnutls_pkcs11_obj_init( + &find_data->p_list[find_data->current]); if (ret < 0) { gnutls_assert(); goto fail; } - ret = pkcs11_import_object(ctx[j], class, sinfo, - tinfo, lib_info, - find_data-> - p_list[find_data->current]); + ret = pkcs11_import_object( + ctx[j], class, sinfo, tinfo, lib_info, + find_data->p_list[find_data->current]); if (ret < 0) { gnutls_assert(); /* skip the failed object */ @@ -3388,17 +3322,13 @@ find_multi_objs_cb(struct ck_function_list *module, for (i = start_elem; i < find_data->current; i++) { if (find_data->p_list[i]->raw.size > 0) { gnutls_datum_t spki; - rv = pkcs11_get_attribute_avalue(sinfo->module, - sinfo->pks, - ctx[i], - CKA_PUBLIC_KEY_INFO, - &spki); + rv = pkcs11_get_attribute_avalue( + sinfo->module, sinfo->pks, ctx[i], + CKA_PUBLIC_KEY_INFO, &spki); if (rv == CKR_OK) { - ret = - pkcs11_override_cert_exts(sinfo, - &spki, - &find_data->p_list - [i]->raw); + ret = pkcs11_override_cert_exts( + sinfo, &spki, + &find_data->p_list[i]->raw); gnutls_free(spki.data); if (ret < 0) { gnutls_assert(); @@ -3410,9 +3340,9 @@ find_multi_objs_cb(struct ck_function_list *module, } gnutls_free(ctx); - return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; /* continue until all tokens have been checked */ + return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; /* continue until all tokens have been checked */ - fail: +fail: gnutls_free(ctx); pkcs11_find_objects_final(sinfo); if (plist.key_ids != NULL) { @@ -3466,10 +3396,9 @@ find_multi_objs_cb(struct ck_function_list *module, * * Since: 3.4.0 **/ -int -gnutls_pkcs11_obj_list_import_url3(gnutls_pkcs11_obj_t * p_list, - unsigned int *n_list, - const char *url, unsigned int flags) +int gnutls_pkcs11_obj_list_import_url3(gnutls_pkcs11_obj_t *p_list, + unsigned int *n_list, const char *url, + unsigned int flags) { gnutls_pkcs11_obj_t *list1 = NULL; unsigned int n_list1, i; @@ -3525,10 +3454,9 @@ gnutls_pkcs11_obj_list_import_url3(gnutls_pkcs11_obj_t * p_list, * * Since: 3.4.0 **/ -int -gnutls_pkcs11_obj_list_import_url4(gnutls_pkcs11_obj_t ** p_list, - unsigned int *n_list, - const char *url, unsigned int flags) +int gnutls_pkcs11_obj_list_import_url4(gnutls_pkcs11_obj_t **p_list, + unsigned int *n_list, const char *url, + unsigned int flags) { int ret; struct find_multi_obj_st priv; @@ -3554,9 +3482,8 @@ gnutls_pkcs11_obj_list_import_url4(gnutls_pkcs11_obj_t ** p_list, priv.overwrite_exts = 1; } - ret = - _pkcs11_traverse_tokens(find_multi_objs_cb, &priv, priv.info, - NULL, pkcs11_obj_flags_to_int(flags)); + ret = _pkcs11_traverse_tokens(find_multi_objs_cb, &priv, priv.info, + NULL, pkcs11_obj_flags_to_int(flags)); p11_kit_uri_free(priv.info); if (ret < 0) { @@ -3588,9 +3515,8 @@ gnutls_pkcs11_obj_list_import_url4(gnutls_pkcs11_obj_t ** p_list, * * Since: 2.12.0 **/ -int -gnutls_x509_crt_import_pkcs11(gnutls_x509_crt_t crt, - gnutls_pkcs11_obj_t pkcs11_crt) +int gnutls_x509_crt_import_pkcs11(gnutls_x509_crt_t crt, + gnutls_pkcs11_obj_t pkcs11_crt) { return gnutls_x509_crt_import(crt, &pkcs11_crt->raw, GNUTLS_X509_FMT_DER); @@ -3611,9 +3537,8 @@ gnutls_x509_crt_import_pkcs11(gnutls_x509_crt_t crt, * * Since: 2.12.0 -*/ -int -_gnutls_x509_crt_import_pkcs11_url(gnutls_x509_crt_t crt, - const char *url, unsigned int flags) +int _gnutls_x509_crt_import_pkcs11_url(gnutls_x509_crt_t crt, const char *url, + unsigned int flags) { gnutls_pkcs11_obj_t pcrt; int ret; @@ -3628,10 +3553,8 @@ _gnutls_x509_crt_import_pkcs11_url(gnutls_x509_crt_t crt, gnutls_pkcs11_obj_set_pin_function(pcrt, crt->pin.cb, crt->pin.data); - ret = - gnutls_pkcs11_obj_import_url(pcrt, url, - flags | - GNUTLS_PKCS11_OBJ_FLAG_EXPECT_CERT); + ret = gnutls_pkcs11_obj_import_url( + pcrt, url, flags | GNUTLS_PKCS11_OBJ_FLAG_EXPECT_CERT); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -3644,7 +3567,7 @@ _gnutls_x509_crt_import_pkcs11_url(gnutls_x509_crt_t crt, } ret = 0; - cleanup: +cleanup: gnutls_pkcs11_obj_deinit(pcrt); return ret; @@ -3665,11 +3588,10 @@ _gnutls_x509_crt_import_pkcs11_url(gnutls_x509_crt_t crt, * * Since: 2.12.0 **/ -int -gnutls_x509_crt_list_import_pkcs11(gnutls_x509_crt_t * certs, - unsigned int cert_max, - gnutls_pkcs11_obj_t * const objs, - unsigned int flags) +int gnutls_x509_crt_list_import_pkcs11(gnutls_x509_crt_t *certs, + unsigned int cert_max, + gnutls_pkcs11_obj_t *const objs, + unsigned int flags) { unsigned int i, j; int ret; @@ -3690,7 +3612,7 @@ gnutls_x509_crt_list_import_pkcs11(gnutls_x509_crt_t * certs, return 0; - cleanup: +cleanup: for (j = 0; j < i; j++) { gnutls_x509_crt_deinit(certs[j]); } @@ -3698,14 +3620,14 @@ gnutls_x509_crt_list_import_pkcs11(gnutls_x509_crt_t * certs, return ret; } -static int -find_flags_cb(struct ck_function_list *module, - struct pkcs11_session_info *sinfo, struct ck_token_info *tinfo, - struct ck_info *lib_info, void *input) +static int find_flags_cb(struct ck_function_list *module, + struct pkcs11_session_info *sinfo, + struct ck_token_info *tinfo, struct ck_info *lib_info, + void *input) { struct find_flags_data_st *find_data = input; - if (tinfo == NULL) { /* we don't support multiple calls */ + if (tinfo == NULL) { /* we don't support multiple calls */ gnutls_assert(); return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; } @@ -3756,9 +3678,8 @@ int gnutls_pkcs11_token_get_flags(const char *url, unsigned int *flags) return ret; } - ret = - _pkcs11_traverse_tokens(find_flags_cb, &find_data, find_data.info, - NULL, 0); + ret = _pkcs11_traverse_tokens(find_flags_cb, &find_data, find_data.info, + NULL, 0); p11_kit_uri_free(find_data.info); if (ret < 0) { @@ -3816,7 +3737,6 @@ int gnutls_pkcs11_token_get_flags(const char *url, unsigned int *flags) *flags |= GNUTLS_PKCS11_TOKEN_TRUSTED; return 0; - } /** @@ -3833,9 +3753,8 @@ int gnutls_pkcs11_token_get_flags(const char *url, unsigned int *flags) * * Since: 2.12.0 **/ -int -gnutls_pkcs11_token_get_mechanism(const char *url, unsigned int idx, - unsigned long *mechanism) +int gnutls_pkcs11_token_get_mechanism(const char *url, unsigned int idx, + unsigned long *mechanism) { int ret; ck_rv_t rv; @@ -3895,10 +3814,9 @@ gnutls_pkcs11_token_get_mechanism(const char *url, unsigned int idx, * * Since: 3.6.0 **/ -unsigned -gnutls_pkcs11_token_check_mechanism(const char *url, - unsigned long mechanism, - void *ptr, unsigned psize, unsigned flags) +unsigned gnutls_pkcs11_token_check_mechanism(const char *url, + unsigned long mechanism, void *ptr, + unsigned psize, unsigned flags) { int ret; ck_rv_t rv; @@ -3975,11 +3893,9 @@ const char *gnutls_pkcs11_type_get_name(gnutls_pkcs11_obj_type_t type) } } -static -int check_found_cert(struct find_cert_st *priv, - ck_object_handle_t ctx, - gnutls_datum_t * data, - time_t now, ck_object_handle_t * cand_ctx) +static int check_found_cert(struct find_cert_st *priv, ck_object_handle_t ctx, + gnutls_datum_t *data, time_t now, + ck_object_handle_t *cand_ctx) { gnutls_x509_crt_t tcrt = NULL; unsigned has_ski; @@ -4006,8 +3922,8 @@ int check_found_cert(struct find_cert_st *priv, if (gnutls_x509_crt_equals(priv->crt, tcrt) == 0) { /* doesn't match */ - _gnutls_debug_log - ("check_found_cert: cert doesn't match the expected\n"); + _gnutls_debug_log( + "check_found_cert: cert doesn't match the expected\n"); ret = -1; goto cleanup; } @@ -4022,8 +3938,8 @@ int check_found_cert(struct find_cert_st *priv, if (_gnutls_check_if_same_key(priv->crt, tcrt, 1) == 0) { /* doesn't match */ - _gnutls_debug_log - ("check_found_cert: cert key doesn't match the expected key\n"); + _gnutls_debug_log( + "check_found_cert: cert key doesn't match the expected key\n"); ret = -1; goto cleanup; } @@ -4033,8 +3949,8 @@ int check_found_cert(struct find_cert_st *priv, !_gnutls_check_valid_key_id(&priv->key_id, tcrt, now, &has_ski)) { gnutls_assert(); if (has_ski) { - _gnutls_debug_log - ("check_found_cert: cert has invalid key ID\n"); + _gnutls_debug_log( + "check_found_cert: cert has invalid key ID\n"); ret = -1; } else { /* That's a possible match; there can be CA certificates without @@ -4045,17 +3961,17 @@ int check_found_cert(struct find_cert_st *priv, } ret = 0; - cleanup: +cleanup: if (tcrt != NULL) gnutls_x509_crt_deinit(tcrt); return ret; } static int get_data_and_attrs(struct pkcs11_session_info *sinfo, - ck_object_handle_t object, gnutls_datum_t * data, - char *label, size_t label_size, - uint8_t * id, size_t id_size, - gnutls_datum_t * o_label, gnutls_datum_t * o_id) + ck_object_handle_t object, gnutls_datum_t *data, + char *label, size_t label_size, uint8_t *id, + size_t id_size, gnutls_datum_t *o_label, + gnutls_datum_t *o_id) { ck_rv_t rv; struct ck_attribute a[2]; @@ -4072,8 +3988,8 @@ static int get_data_and_attrs(struct pkcs11_session_info *sinfo, a[1].value = id; a[1].value_len = id_size; - if (pkcs11_get_attribute_value - (sinfo->module, sinfo->pks, object, a, 2) == CKR_OK) { + if (pkcs11_get_attribute_value(sinfo->module, sinfo->pks, + object, a, 2) == CKR_OK) { o_label->data = a[0].value; o_label->size = a[0].value_len; o_id->data = a[1].value; @@ -4082,8 +3998,8 @@ static int get_data_and_attrs(struct pkcs11_session_info *sinfo, return 0; } else { _gnutls_free_datum(data); - _gnutls_debug_log - ("p11: Skipped cert, missing attrs.\n"); + _gnutls_debug_log( + "p11: Skipped cert, missing attrs.\n"); } } @@ -4096,8 +4012,8 @@ static enum distrust_purpose distrust_purpose_from_oid(const char *oid) const char *oid; enum distrust_purpose purpose; } map[] = { - {GNUTLS_KP_TLS_WWW_SERVER, PKCS11_DISTRUST_AFTER_SERVER}, - {GNUTLS_KP_EMAIL_PROTECTION, PKCS11_DISTRUST_AFTER_EMAIL}, + { GNUTLS_KP_TLS_WWW_SERVER, PKCS11_DISTRUST_AFTER_SERVER }, + { GNUTLS_KP_EMAIL_PROTECTION, PKCS11_DISTRUST_AFTER_EMAIL }, }; size_t i; @@ -4110,9 +4026,9 @@ static enum distrust_purpose distrust_purpose_from_oid(const char *oid) return PKCS11_DISTRUST_AFTER_NONE; } -static time_t -get_distrust_after(struct pkcs11_session_info *sinfo, - ck_object_handle_t object, enum distrust_purpose purpose) +static time_t get_distrust_after(struct pkcs11_session_info *sinfo, + ck_object_handle_t object, + enum distrust_purpose purpose) { /* the attribute is in a fixed format: utcTime with seconds */ char buf[14]; @@ -4127,7 +4043,7 @@ get_distrust_after(struct pkcs11_session_info *sinfo, break; default: gnutls_assert(); - return (time_t) (-1); + return (time_t)(-1); } a[0].value = buf; @@ -4135,20 +4051,21 @@ get_distrust_after(struct pkcs11_session_info *sinfo, if (pkcs11_get_attribute_value(sinfo->module, sinfo->pks, object, a, 1) != CKR_OK) { - return (time_t) (-1); + return (time_t)(-1); } buf[a[0].value_len] = '\0'; return _gnutls_utcTime2gtime(buf); } -static int -find_cert_cb(struct ck_function_list *module, struct pkcs11_session_info *sinfo, - struct ck_token_info *tinfo, struct ck_info *lib_info, void *input) +static int find_cert_cb(struct ck_function_list *module, + struct pkcs11_session_info *sinfo, + struct ck_token_info *tinfo, struct ck_info *lib_info, + void *input) { struct ck_attribute a[10]; ck_object_class_t class = -1; - ck_certificate_type_t type = (ck_certificate_type_t) - 1; + ck_certificate_type_t type = (ck_certificate_type_t)-1; ck_rv_t rv; ck_object_handle_t ctx, cand_ctx = CK_INVALID_HANDLE; unsigned long count, a_vals; @@ -4176,8 +4093,8 @@ find_cert_cb(struct ck_function_list *module, struct pkcs11_session_info *sinfo, } } - if (priv->dn.size == 0 && priv->key_id.size == 0 - && priv->issuer_dn.size == 0 && priv->serial.size == 0) + if (priv->dn.size == 0 && priv->key_id.size == 0 && + priv->issuer_dn.size == 0 && priv->serial.size == 0) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); /* Find objects with given class and type */ @@ -4189,7 +4106,6 @@ find_cert_cb(struct ck_function_list *module, struct pkcs11_session_info *sinfo, now = gnutls_time(0); for (i = 0; i < tries; i++) { - a_vals = 0; class = CKO_CERTIFICATE; a[a_vals].type = CKA_CLASS; @@ -4205,10 +4121,9 @@ find_cert_cb(struct ck_function_list *module, struct pkcs11_session_info *sinfo, } if (priv->flags & GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_DISTRUSTED) { - if (!sinfo->trusted) /* only p11-kit "trusted" modules support this flag */ - return - gnutls_assert_val - (GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); + if (!sinfo->trusted) /* only p11-kit "trusted" modules support this flag */ + return gnutls_assert_val( + GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); a[a_vals].type = CKA_X_DISTRUSTED; a[a_vals].value = &trusted; @@ -4265,27 +4180,25 @@ find_cert_cb(struct ck_function_list *module, struct pkcs11_session_info *sinfo, goto cleanup; } - while (pkcs11_find_objects - (sinfo->module, sinfo->pks, &ctx, 1, - &count) == CKR_OK && count == 1) { - - if (priv->need_import == 0 - && !(priv->flags & GNUTLS_PKCS11_OBJ_FLAG_COMPARE) - && !(priv->flags & - GNUTLS_PKCS11_OBJ_FLAG_COMPARE_KEY)) { + while (pkcs11_find_objects(sinfo->module, sinfo->pks, &ctx, 1, + &count) == CKR_OK && + count == 1) { + if (priv->need_import == 0 && + !(priv->flags & GNUTLS_PKCS11_OBJ_FLAG_COMPARE) && + !(priv->flags & + GNUTLS_PKCS11_OBJ_FLAG_COMPARE_KEY)) { found = 1; break; } - ret = get_data_and_attrs(sinfo, ctx, &data, - label_tmp, sizeof(label_tmp), - id_tmp, sizeof(id_tmp), - &label, &id); + ret = get_data_and_attrs(sinfo, ctx, &data, label_tmp, + sizeof(label_tmp), id_tmp, + sizeof(id_tmp), &label, &id); if (ret < 0) continue; - ret = - check_found_cert(priv, ctx, &data, now, &cand_ctx); + ret = check_found_cert(priv, ctx, &data, now, + &cand_ctx); if (ret < 0) { _gnutls_free_datum(&data); continue; @@ -4300,8 +4213,8 @@ find_cert_cb(struct ck_function_list *module, struct pkcs11_session_info *sinfo, * failing */ ret = get_data_and_attrs(sinfo, cand_ctx, &data, label_tmp, sizeof(label_tmp), - id_tmp, sizeof(id_tmp), - &label, &id); + id_tmp, sizeof(id_tmp), &label, + &id); if (ret >= 0) found = 1; @@ -4314,22 +4227,18 @@ find_cert_cb(struct ck_function_list *module, struct pkcs11_session_info *sinfo, finalized = 1; if (found != 0) { - if (! + if (!(priv->flags & + GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_DISTRUSTED) && (priv->flags & - GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_DISTRUSTED) -&& (priv->flags & GNUTLS_PKCS11_OBJ_FLAG_OVERWRITE_TRUSTMOD_EXT) -&& data.size > 0) { + GNUTLS_PKCS11_OBJ_FLAG_OVERWRITE_TRUSTMOD_EXT) && + data.size > 0) { gnutls_datum_t spki; - rv = pkcs11_get_attribute_avalue(sinfo->module, - sinfo->pks, - ctx, - CKA_PUBLIC_KEY_INFO, - &spki); + rv = pkcs11_get_attribute_avalue( + sinfo->module, sinfo->pks, ctx, + CKA_PUBLIC_KEY_INFO, &spki); if (rv == CKR_OK) { - ret = - pkcs11_override_cert_exts(sinfo, - &spki, - &data); + ret = pkcs11_override_cert_exts( + sinfo, &spki, &data); gnutls_free(spki.data); if (ret < 0) { gnutls_assert(); @@ -4339,20 +4248,18 @@ find_cert_cb(struct ck_function_list *module, struct pkcs11_session_info *sinfo, } if ((priv->flags & - GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED) - && priv->distrust_purpose != - PKCS11_DISTRUST_AFTER_NONE) { - priv->distrust_after = - get_distrust_after(sinfo, ctx, - priv->distrust_purpose); + GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED) && + priv->distrust_purpose != + PKCS11_DISTRUST_AFTER_NONE) { + priv->distrust_after = get_distrust_after( + sinfo, ctx, priv->distrust_purpose); continue; } if (priv->need_import != 0) { - ret = - pkcs11_obj_import(class, priv->obj, - &data, &id, &label, - tinfo, lib_info); + ret = pkcs11_obj_import(class, priv->obj, &data, + &id, &label, tinfo, + lib_info); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -4369,7 +4276,7 @@ find_cert_cb(struct ck_function_list *module, struct pkcs11_session_info *sinfo, ret = 0; } - cleanup: +cleanup: gnutls_free(data.data); if (finalized == 0) pkcs11_find_objects_final(sinfo); @@ -4396,7 +4303,7 @@ find_cert_cb(struct ck_function_list *module, struct pkcs11_session_info *sinfo, * Since: 3.2.7 **/ int gnutls_pkcs11_get_raw_issuer(const char *url, gnutls_x509_crt_t cert, - gnutls_datum_t * issuer, + gnutls_datum_t *issuer, gnutls_x509_crt_fmt_t fmt, unsigned int flags) { int ret; @@ -4445,17 +4352,15 @@ int gnutls_pkcs11_get_raw_issuer(const char *url, gnutls_x509_crt_t cert, priv.need_import = 1; - ret = - _pkcs11_traverse_tokens(find_cert_cb, &priv, info, - &cert->pin, pkcs11_obj_flags_to_int(flags)); + ret = _pkcs11_traverse_tokens(find_cert_cb, &priv, info, &cert->pin, + pkcs11_obj_flags_to_int(flags)); if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { /* we have failed retrieving the right certificate; if there * was a close match return that one. */ priv.flags |= GNUTLS_PKCS11_OBJ_FLAG_FIRST_CLOSE_MATCH; - ret = - _pkcs11_traverse_tokens(find_cert_cb, &priv, info, - &cert->pin, - pkcs11_obj_flags_to_int(flags)); + ret = _pkcs11_traverse_tokens(find_cert_cb, &priv, info, + &cert->pin, + pkcs11_obj_flags_to_int(flags)); } if (ret < 0) { @@ -4471,7 +4376,7 @@ int gnutls_pkcs11_get_raw_issuer(const char *url, gnutls_x509_crt_t cert, ret = 0; - cleanup: +cleanup: if (priv.obj) gnutls_pkcs11_obj_deinit(priv.obj); if (info) @@ -4502,8 +4407,8 @@ int gnutls_pkcs11_get_raw_issuer(const char *url, gnutls_x509_crt_t cert, * Since: 3.4.0 **/ int gnutls_pkcs11_get_raw_issuer_by_dn(const char *url, - const gnutls_datum_t * dn, - gnutls_datum_t * issuer, + const gnutls_datum_t *dn, + gnutls_datum_t *issuer, gnutls_x509_crt_fmt_t fmt, unsigned int flags) { @@ -4540,9 +4445,8 @@ int gnutls_pkcs11_get_raw_issuer_by_dn(const char *url, } priv.need_import = 1; - ret = - _pkcs11_traverse_tokens(find_cert_cb, &priv, info, - NULL, pkcs11_obj_flags_to_int(flags)); + ret = _pkcs11_traverse_tokens(find_cert_cb, &priv, info, NULL, + pkcs11_obj_flags_to_int(flags)); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -4556,7 +4460,7 @@ int gnutls_pkcs11_get_raw_issuer_by_dn(const char *url, ret = 0; - cleanup: +cleanup: if (priv.obj) gnutls_pkcs11_obj_deinit(priv.obj); if (info) @@ -4587,12 +4491,9 @@ int gnutls_pkcs11_get_raw_issuer_by_dn(const char *url, * * Since: 3.4.2 **/ -int gnutls_pkcs11_get_raw_issuer_by_subject_key_id(const char *url, - const gnutls_datum_t * dn, - const gnutls_datum_t * spki, - gnutls_datum_t * issuer, - gnutls_x509_crt_fmt_t fmt, - unsigned int flags) +int gnutls_pkcs11_get_raw_issuer_by_subject_key_id( + const char *url, const gnutls_datum_t *dn, const gnutls_datum_t *spki, + gnutls_datum_t *issuer, gnutls_x509_crt_fmt_t fmt, unsigned int flags) { int ret; struct find_cert_st priv; @@ -4632,9 +4533,8 @@ int gnutls_pkcs11_get_raw_issuer_by_subject_key_id(const char *url, } priv.need_import = 1; - ret = - _pkcs11_traverse_tokens(find_cert_cb, &priv, info, - NULL, pkcs11_obj_flags_to_int(flags)); + ret = _pkcs11_traverse_tokens(find_cert_cb, &priv, info, NULL, + pkcs11_obj_flags_to_int(flags)); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -4648,7 +4548,7 @@ int gnutls_pkcs11_get_raw_issuer_by_subject_key_id(const char *url, ret = 0; - cleanup: +cleanup: if (priv.obj) gnutls_pkcs11_obj_deinit(priv.obj); if (info) @@ -4657,10 +4557,9 @@ int gnutls_pkcs11_get_raw_issuer_by_subject_key_id(const char *url, return ret; } -unsigned -_gnutls_pkcs11_crt_is_known(const char *url, gnutls_x509_crt_t cert, - unsigned int flags, - gnutls_x509_crt_t * trusted_cert) +unsigned _gnutls_pkcs11_crt_is_known(const char *url, gnutls_x509_crt_t cert, + unsigned int flags, + gnutls_x509_crt_t *trusted_cert) { int ret; struct find_cert_st priv; @@ -4713,19 +4612,18 @@ _gnutls_pkcs11_crt_is_known(const char *url, gnutls_x509_crt_t cert, priv.issuer_dn.size = cert->raw_issuer_dn.size; /* assume PKCS11_OBJ_FLAG_COMPARE everywhere but DISTRUST info */ - if (!(flags & GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_DISTRUSTED) - && !(flags & GNUTLS_PKCS11_OBJ_FLAG_COMPARE_KEY)) { + if (!(flags & GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_DISTRUSTED) && + !(flags & GNUTLS_PKCS11_OBJ_FLAG_COMPARE_KEY)) { flags |= GNUTLS_PKCS11_OBJ_FLAG_COMPARE; } priv.flags = flags; - ret = - _pkcs11_traverse_tokens(find_cert_cb, &priv, info, - NULL, pkcs11_obj_flags_to_int(flags)); + ret = _pkcs11_traverse_tokens(find_cert_cb, &priv, info, NULL, + pkcs11_obj_flags_to_int(flags)); if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { - _gnutls_debug_log - ("crt_is_known: did not find cert, using issuer DN + serial, using DN only\n"); + _gnutls_debug_log( + "crt_is_known: did not find cert, using issuer DN + serial, using DN only\n"); /* attempt searching with the subject DN only */ gnutls_assert(); if (priv.obj) @@ -4745,10 +4643,8 @@ _gnutls_pkcs11_crt_is_known(const char *url, gnutls_x509_crt_t cert, priv.dn.data = cert->raw_dn.data; priv.dn.size = cert->raw_dn.size; - ret = - _pkcs11_traverse_tokens(find_cert_cb, &priv, info, - NULL, - pkcs11_obj_flags_to_int(flags)); + ret = _pkcs11_traverse_tokens(find_cert_cb, &priv, info, NULL, + pkcs11_obj_flags_to_int(flags)); } if (ret < 0) { gnutls_assert(); @@ -4774,7 +4670,7 @@ _gnutls_pkcs11_crt_is_known(const char *url, gnutls_x509_crt_t cert, } ret = 1; - cleanup: +cleanup: if (priv.obj) gnutls_pkcs11_obj_deinit(priv.obj); if (info) @@ -4892,14 +4788,14 @@ char *gnutls_pkcs11_obj_flags_get_str(unsigned int flags) } return (char *)out.data; - fail: +fail: return NULL; - } -time_t -_gnutls_pkcs11_get_distrust_after(const char *url, gnutls_x509_crt_t cert, - const char *purpose, unsigned int flags) +time_t _gnutls_pkcs11_get_distrust_after(const char *url, + gnutls_x509_crt_t cert, + const char *purpose, + unsigned int flags) { int ret; struct find_cert_st priv; @@ -4910,7 +4806,7 @@ _gnutls_pkcs11_get_distrust_after(const char *url, gnutls_x509_crt_t cert, distrust_purpose = distrust_purpose_from_oid(purpose); if (distrust_purpose == PKCS11_DISTRUST_AFTER_NONE) { - return (time_t) (-1); + return (time_t)(-1); } PKCS11_CHECK_INIT_FLAGS_RET(flags, 0); @@ -4924,7 +4820,7 @@ _gnutls_pkcs11_get_distrust_after(const char *url, gnutls_x509_crt_t cert, ret = pkcs11_url_to_info(url, &info, 0); if (ret < 0) { gnutls_assert(); - return (time_t) (-1); + return (time_t)(-1); } /* Attempt searching using the issuer DN + serial number */ @@ -4932,14 +4828,14 @@ _gnutls_pkcs11_get_distrust_after(const char *url, gnutls_x509_crt_t cert, ret = gnutls_x509_crt_get_serial(cert, serial, &serial_size); if (ret < 0) { gnutls_assert(); - ret = (time_t) (-1); + ret = (time_t)(-1); goto cleanup; } ret = _gnutls_x509_ext_gen_number(serial, serial_size, &priv.serial); if (ret < 0) { gnutls_assert(); - ret = (time_t) (-1); + ret = (time_t)(-1); goto cleanup; } @@ -4949,20 +4845,19 @@ _gnutls_pkcs11_get_distrust_after(const char *url, gnutls_x509_crt_t cert, priv.issuer_dn.size = cert->raw_issuer_dn.size; /* assume PKCS11_OBJ_FLAG_COMPARE everywhere but DISTRUST info */ - if (!(flags & GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_DISTRUSTED) - && !(flags & GNUTLS_PKCS11_OBJ_FLAG_COMPARE_KEY)) { + if (!(flags & GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_DISTRUSTED) && + !(flags & GNUTLS_PKCS11_OBJ_FLAG_COMPARE_KEY)) { flags |= GNUTLS_PKCS11_OBJ_FLAG_COMPARE; } priv.flags = flags; priv.distrust_purpose = distrust_purpose; - ret = - _pkcs11_traverse_tokens(find_cert_cb, &priv, info, - NULL, pkcs11_obj_flags_to_int(flags)); + ret = _pkcs11_traverse_tokens(find_cert_cb, &priv, info, NULL, + pkcs11_obj_flags_to_int(flags)); if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { - _gnutls_debug_log - ("get_distrust_after: did not find cert, using issuer DN + serial, using DN only\n"); + _gnutls_debug_log( + "get_distrust_after: did not find cert, using issuer DN + serial, using DN only\n"); /* attempt searching with the subject DN only */ gnutls_assert(); if (priv.obj) @@ -4975,22 +4870,20 @@ _gnutls_pkcs11_get_distrust_after(const char *url, gnutls_x509_crt_t cert, priv.dn.data = cert->raw_dn.data; priv.dn.size = cert->raw_dn.size; - ret = - _pkcs11_traverse_tokens(find_cert_cb, &priv, info, - NULL, - pkcs11_obj_flags_to_int(flags)); + ret = _pkcs11_traverse_tokens(find_cert_cb, &priv, info, NULL, + pkcs11_obj_flags_to_int(flags)); } if (ret < 0) { gnutls_assert(); - _gnutls_debug_log - ("get_distrust_after: did not find any cert\n"); - ret = (time_t) (-1); + _gnutls_debug_log( + "get_distrust_after: did not find any cert\n"); + ret = (time_t)(-1); goto cleanup; } ret = priv.distrust_after; - cleanup: +cleanup: if (priv.obj) gnutls_pkcs11_obj_deinit(priv.obj); if (info) diff --git a/lib/pkcs11_int.c b/lib/pkcs11_int.c index 76136a5d42..dacabb02ae 100644 --- a/lib/pkcs11_int.c +++ b/lib/pkcs11_int.c @@ -36,47 +36,44 @@ #include #include -ck_rv_t -pkcs11_get_slot_list(struct ck_function_list *module, - unsigned char token_present, ck_slot_id_t * slot_list, - unsigned long *count) +ck_rv_t pkcs11_get_slot_list(struct ck_function_list *module, + unsigned char token_present, + ck_slot_id_t *slot_list, unsigned long *count) { return (module)->C_GetSlotList(token_present, slot_list, count); } -ck_rv_t -pkcs11_get_module_info(struct ck_function_list *module, struct ck_info *info) +ck_rv_t pkcs11_get_module_info(struct ck_function_list *module, + struct ck_info *info) { return (module)->C_GetInfo(info); } -ck_rv_t -pkcs11_get_slot_info(struct ck_function_list *module, - ck_slot_id_t slot_id, struct ck_slot_info *info) +ck_rv_t pkcs11_get_slot_info(struct ck_function_list *module, + ck_slot_id_t slot_id, struct ck_slot_info *info) { return (module)->C_GetSlotInfo(slot_id, info); } -ck_rv_t -pkcs11_get_token_info(struct ck_function_list *module, - ck_slot_id_t slot_id, struct ck_token_info *info) +ck_rv_t pkcs11_get_token_info(struct ck_function_list *module, + ck_slot_id_t slot_id, struct ck_token_info *info) { return (module)->C_GetTokenInfo(slot_id, info); } -ck_rv_t -pkcs11_find_objects_init(struct ck_function_list *module, - ck_session_handle_t sess, - struct ck_attribute *templ, unsigned long count) +ck_rv_t pkcs11_find_objects_init(struct ck_function_list *module, + ck_session_handle_t sess, + struct ck_attribute *templ, + unsigned long count) { return (module)->C_FindObjectsInit(sess, templ, count); } -ck_rv_t -pkcs11_find_objects(struct ck_function_list *module, - ck_session_handle_t sess, - ck_object_handle_t * objects, - unsigned long max_object_count, unsigned long *object_count) +ck_rv_t pkcs11_find_objects(struct ck_function_list *module, + ck_session_handle_t sess, + ck_object_handle_t *objects, + unsigned long max_object_count, + unsigned long *object_count) { return (module)->C_FindObjects(sess, objects, max_object_count, object_count); @@ -93,20 +90,20 @@ ck_rv_t pkcs11_close_session(struct pkcs11_session_info *sinfo) return (sinfo->module)->C_CloseSession(sinfo->pks); } -ck_rv_t -pkcs11_set_attribute_value(struct ck_function_list *module, - ck_session_handle_t sess, - ck_object_handle_t object, - struct ck_attribute *templ, unsigned long count) +ck_rv_t pkcs11_set_attribute_value(struct ck_function_list *module, + ck_session_handle_t sess, + ck_object_handle_t object, + struct ck_attribute *templ, + unsigned long count) { return (module)->C_SetAttributeValue(sess, object, templ, count); } -ck_rv_t -pkcs11_get_attribute_value(struct ck_function_list *module, - ck_session_handle_t sess, - ck_object_handle_t object, - struct ck_attribute *templ, unsigned long count) +ck_rv_t pkcs11_get_attribute_value(struct ck_function_list *module, + ck_session_handle_t sess, + ck_object_handle_t object, + struct ck_attribute *templ, + unsigned long count) { return (module)->C_GetAttributeValue(sess, object, templ, count); } @@ -114,11 +111,11 @@ pkcs11_get_attribute_value(struct ck_function_list *module, /* Returns only a single attribute value, but allocates its data * Only the type needs to be set. */ -ck_rv_t -pkcs11_get_attribute_avalue(struct ck_function_list *module, - ck_session_handle_t sess, - ck_object_handle_t object, - ck_attribute_type_t type, gnutls_datum_t * res) +ck_rv_t pkcs11_get_attribute_avalue(struct ck_function_list *module, + ck_session_handle_t sess, + ck_object_handle_t object, + ck_attribute_type_t type, + gnutls_datum_t *res) { ck_rv_t rv; struct ck_attribute templ; @@ -157,133 +154,114 @@ pkcs11_get_attribute_avalue(struct ck_function_list *module, return rv; } -ck_rv_t -pkcs11_get_mechanism_list(struct ck_function_list *module, - ck_slot_id_t slot_id, - ck_mechanism_type_t * mechanism_list, - unsigned long *count) +ck_rv_t pkcs11_get_mechanism_list(struct ck_function_list *module, + ck_slot_id_t slot_id, + ck_mechanism_type_t *mechanism_list, + unsigned long *count) { return (module)->C_GetMechanismList(slot_id, mechanism_list, count); } -ck_rv_t -pkcs11_get_mechanism_info(struct ck_function_list *module, - ck_slot_id_t slot_id, - ck_mechanism_type_t mechanism, - struct ck_mechanism_info *ptr) +ck_rv_t pkcs11_get_mechanism_info(struct ck_function_list *module, + ck_slot_id_t slot_id, + ck_mechanism_type_t mechanism, + struct ck_mechanism_info *ptr) { return (module)->C_GetMechanismInfo(slot_id, mechanism, ptr); } -ck_rv_t -pkcs11_sign_init(struct ck_function_list *module, - ck_session_handle_t sess, - struct ck_mechanism *mechanism, ck_object_handle_t key) +ck_rv_t pkcs11_sign_init(struct ck_function_list *module, + ck_session_handle_t sess, + struct ck_mechanism *mechanism, ck_object_handle_t key) { return (module)->C_SignInit(sess, mechanism, key); } -ck_rv_t -pkcs11_sign(struct ck_function_list *module, - ck_session_handle_t sess, - unsigned char *data, - unsigned long data_len, - unsigned char *signature, unsigned long *signature_len) +ck_rv_t pkcs11_sign(struct ck_function_list *module, ck_session_handle_t sess, + unsigned char *data, unsigned long data_len, + unsigned char *signature, unsigned long *signature_len) { return (module)->C_Sign(sess, data, data_len, signature, signature_len); } -ck_rv_t -pkcs11_generate_key(struct ck_function_list *module, - ck_session_handle_t sess, - struct ck_mechanism *mechanism, - struct ck_attribute *templ, - unsigned long count, ck_object_handle_t * key) +ck_rv_t pkcs11_generate_key(struct ck_function_list *module, + ck_session_handle_t sess, + struct ck_mechanism *mechanism, + struct ck_attribute *templ, unsigned long count, + ck_object_handle_t *key) { return (module)->C_GenerateKey(sess, mechanism, templ, count, key); } -ck_rv_t -pkcs11_generate_key_pair(struct ck_function_list *module, - ck_session_handle_t sess, - struct ck_mechanism *mechanism, - struct ck_attribute *pub_templ, - unsigned long pub_templ_count, - struct ck_attribute *priv_templ, - unsigned long priv_templ_count, - ck_object_handle_t * pub_ctx, - ck_object_handle_t * priv_ctx) +ck_rv_t pkcs11_generate_key_pair( + struct ck_function_list *module, ck_session_handle_t sess, + struct ck_mechanism *mechanism, struct ck_attribute *pub_templ, + unsigned long pub_templ_count, struct ck_attribute *priv_templ, + unsigned long priv_templ_count, ck_object_handle_t *pub_ctx, + ck_object_handle_t *priv_ctx) { return (module)->C_GenerateKeyPair(sess, mechanism, pub_templ, pub_templ_count, priv_templ, priv_templ_count, pub_ctx, priv_ctx); } -ck_rv_t -pkcs11_decrypt_init(struct ck_function_list *module, - ck_session_handle_t sess, - struct ck_mechanism *mechanism, ck_object_handle_t key_ctx) +ck_rv_t pkcs11_decrypt_init(struct ck_function_list *module, + ck_session_handle_t sess, + struct ck_mechanism *mechanism, + ck_object_handle_t key_ctx) { return (module)->C_DecryptInit(sess, mechanism, key_ctx); } -ck_rv_t -pkcs11_decrypt(struct ck_function_list *module, - ck_session_handle_t sess, - unsigned char *encrypted_data, - unsigned long encrypted_data_len, - unsigned char *data, unsigned long *data_len) +ck_rv_t pkcs11_decrypt(struct ck_function_list *module, + ck_session_handle_t sess, unsigned char *encrypted_data, + unsigned long encrypted_data_len, unsigned char *data, + unsigned long *data_len) { - return (module)->C_Decrypt(sess, encrypted_data, - encrypted_data_len, data, data_len); + return (module)->C_Decrypt(sess, encrypted_data, encrypted_data_len, + data, data_len); } -ck_rv_t -pkcs11_create_object(struct ck_function_list *module, - ck_session_handle_t sess, - struct ck_attribute *templ, - unsigned long count, ck_object_handle_t * ctx) +ck_rv_t pkcs11_create_object(struct ck_function_list *module, + ck_session_handle_t sess, + struct ck_attribute *templ, unsigned long count, + ck_object_handle_t *ctx) { return (module)->C_CreateObject(sess, templ, count, ctx); } -ck_rv_t -pkcs11_destroy_object(struct ck_function_list *module, - ck_session_handle_t sess, ck_object_handle_t ctx) +ck_rv_t pkcs11_destroy_object(struct ck_function_list *module, + ck_session_handle_t sess, ck_object_handle_t ctx) { return (module)->C_DestroyObject(sess, ctx); } -ck_rv_t -pkcs11_init_token(struct ck_function_list *module, - ck_slot_id_t slot_id, unsigned char *pin, - unsigned long pin_len, unsigned char *label) +ck_rv_t pkcs11_init_token(struct ck_function_list *module, ck_slot_id_t slot_id, + unsigned char *pin, unsigned long pin_len, + unsigned char *label) { return (module)->C_InitToken(slot_id, pin, pin_len, label); } -ck_rv_t -pkcs11_init_pin(struct ck_function_list *module, - ck_session_handle_t sess, - unsigned char *pin, unsigned long pin_len) +ck_rv_t pkcs11_init_pin(struct ck_function_list *module, + ck_session_handle_t sess, unsigned char *pin, + unsigned long pin_len) { return (module)->C_InitPIN(sess, pin, pin_len); } -ck_rv_t -pkcs11_set_pin(struct ck_function_list *module, - ck_session_handle_t sess, - const char *old_pin, - unsigned long old_len, - const char *new_pin, unsigned long new_len) +ck_rv_t pkcs11_set_pin(struct ck_function_list *module, + ck_session_handle_t sess, const char *old_pin, + unsigned long old_len, const char *new_pin, + unsigned long new_len) { - return (module)->C_SetPIN(sess, (uint8_t *) old_pin, old_len, - (uint8_t *) new_pin, new_len); + return (module)->C_SetPIN(sess, (uint8_t *)old_pin, old_len, + (uint8_t *)new_pin, new_len); } -ck_rv_t -_gnutls_pkcs11_get_random(struct ck_function_list *module, - ck_session_handle_t sess, void *data, size_t len) +ck_rv_t _gnutls_pkcs11_get_random(struct ck_function_list *module, + ck_session_handle_t sess, void *data, + size_t len) { return (module)->C_GenerateRandom(sess, data, len); } diff --git a/lib/pkcs11_int.h b/lib/pkcs11_int.h index 5a26a5f5ca..d29617ab11 100644 --- a/lib/pkcs11_int.h +++ b/lib/pkcs11_int.h @@ -19,26 +19,26 @@ */ #ifndef GNUTLS_LIB_PKCS11_INT_H -# define GNUTLS_LIB_PKCS11_INT_H +#define GNUTLS_LIB_PKCS11_INT_H -# ifdef ENABLE_PKCS11 +#ifdef ENABLE_PKCS11 -# define CRYPTOKI_GNU -# include -# include -# include +#define CRYPTOKI_GNU +#include +#include +#include /* Part of PKCS#11 3.0 interface, which was added in p11-kit 0.23.14 */ -# ifdef CKM_EDDSA -# define HAVE_CKM_EDDSA -# endif +#ifdef CKM_EDDSA +#define HAVE_CKM_EDDSA +#endif -# define PKCS11_ID_SIZE 128 -# define PKCS11_LABEL_SIZE 128 +#define PKCS11_ID_SIZE 128 +#define PKCS11_LABEL_SIZE 128 -# include -# include -# include +#include +#include +#include typedef unsigned char ck_bool_t; struct pkcs11_session_info { @@ -48,7 +48,7 @@ struct pkcs11_session_info { ck_session_handle_t pks; ck_slot_id_t sid; unsigned int init; - unsigned int trusted; /* whether module is marked as trusted */ + unsigned int trusted; /* whether module is marked as trusted */ }; struct gnutls_pkcs11_obj_st { @@ -70,7 +70,7 @@ struct gnutls_pkcs11_obj_st { struct gnutls_pkcs11_privkey_st { gnutls_pk_algorithm_t pk_algorithm; - unsigned int rsa_pss_ok; /* if it is an RSA key, it can do RSA-PSS */ + unsigned int rsa_pss_ok; /* if it is an RSA key, it can do RSA-PSS */ unsigned int bits; unsigned int flags; @@ -78,10 +78,10 @@ struct gnutls_pkcs11_privkey_st { char *url; struct pkcs11_session_info sinfo; - ck_object_handle_t ref; /* the key in the session */ - unsigned reauth; /* whether we need to login on each operation */ + ck_object_handle_t ref; /* the key in the session */ + unsigned reauth; /* whether we need to login on each operation */ - void *mutex; /* lock for operations requiring co-ordination */ + void *mutex; /* lock for operations requiring co-ordination */ struct pin_info_st pin; }; @@ -105,33 +105,42 @@ typedef enum init_level_t { int _gnutls_pkcs11_check_init(init_level_t req_level, void *priv, pkcs11_reinit_function cb); -# define FIX_KEY_USAGE(pk, usage) \ - if (usage == 0) { \ - if (pk == GNUTLS_PK_RSA) \ - usage = GNUTLS_KEY_DECIPHER_ONLY|GNUTLS_KEY_DIGITAL_SIGNATURE; \ - else \ +#define FIX_KEY_USAGE(pk, usage) \ + if (usage == 0) { \ + if (pk == GNUTLS_PK_RSA) \ + usage = GNUTLS_KEY_DECIPHER_ONLY | \ + GNUTLS_KEY_DIGITAL_SIGNATURE; \ + else \ usage = GNUTLS_KEY_DIGITAL_SIGNATURE; \ } -# define PKCS11_CHECK_INIT \ +#define PKCS11_CHECK_INIT \ ret = _gnutls_pkcs11_check_init(PROV_INIT_ALL, NULL, NULL); \ - if (ret < 0) \ - return gnutls_assert_val(ret) + if (ret < 0) \ + return gnutls_assert_val(ret) -# define PKCS11_CHECK_INIT_RET(x) \ +#define PKCS11_CHECK_INIT_RET(x) \ ret = _gnutls_pkcs11_check_init(PROV_INIT_ALL, NULL, NULL); \ - if (ret < 0) \ - return gnutls_assert_val(x) - -# define PKCS11_CHECK_INIT_FLAGS(f) \ - ret = _gnutls_pkcs11_check_init((f & GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE)?PROV_INIT_TRUSTED:PROV_INIT_ALL, NULL, NULL); \ - if (ret < 0) \ - return gnutls_assert_val(ret) - -# define PKCS11_CHECK_INIT_FLAGS_RET(f, x) \ - ret = _gnutls_pkcs11_check_init((f & GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE)?PROV_INIT_TRUSTED:PROV_INIT_ALL, NULL, NULL); \ - if (ret < 0) \ - return gnutls_assert_val(x) + if (ret < 0) \ + return gnutls_assert_val(x) + +#define PKCS11_CHECK_INIT_FLAGS(f) \ + ret = _gnutls_pkcs11_check_init( \ + (f & GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE) ? \ + PROV_INIT_TRUSTED : \ + PROV_INIT_ALL, \ + NULL, NULL); \ + if (ret < 0) \ + return gnutls_assert_val(ret) + +#define PKCS11_CHECK_INIT_FLAGS_RET(f, x) \ + ret = _gnutls_pkcs11_check_init( \ + (f & GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE) ? \ + PROV_INIT_TRUSTED : \ + PROV_INIT_ALL, \ + NULL, NULL); \ + if (ret < 0) \ + return gnutls_assert_val(x) /* thus function is called for every token in the traverse_tokens * function. Once everything is traversed it is called with NULL tinfo. @@ -139,29 +148,28 @@ int _gnutls_pkcs11_check_init(init_level_t req_level, void *priv, */ typedef int (*find_func_t)(struct ck_function_list *, struct pkcs11_session_info *, - struct ck_token_info * tinfo, struct ck_info *, + struct ck_token_info *tinfo, struct ck_info *, void *input); int pkcs11_rv_to_err(ck_rv_t rv); int pkcs11_url_to_info(const char *url, struct p11_kit_uri **info, unsigned flags); -int pkcs11_find_slot(struct ck_function_list **module, ck_slot_id_t * slot, +int pkcs11_find_slot(struct ck_function_list **module, ck_slot_id_t *slot, struct p11_kit_uri *info, struct ck_token_info *_tinfo, struct ck_slot_info *_slot_info, unsigned int *trusted); -int pkcs11_read_pubkey(struct ck_function_list *module, - ck_session_handle_t pks, ck_object_handle_t obj, - ck_key_type_t key_type, gnutls_pkcs11_obj_t pobj); +int pkcs11_read_pubkey(struct ck_function_list *module, ck_session_handle_t pks, + ck_object_handle_t obj, ck_key_type_t key_type, + gnutls_pkcs11_obj_t pobj); int pkcs11_override_cert_exts(struct pkcs11_session_info *sinfo, - gnutls_datum_t * spki, gnutls_datum_t * der); + gnutls_datum_t *spki, gnutls_datum_t *der); -int pkcs11_get_info(struct p11_kit_uri *info, - gnutls_pkcs11_obj_info_t itype, void *output, - size_t *output_size); +int pkcs11_get_info(struct p11_kit_uri *info, gnutls_pkcs11_obj_info_t itype, + void *output, size_t *output_size); int pkcs11_login(struct pkcs11_session_info *sinfo, - struct pin_info_st *pin_info, - struct p11_kit_uri *info, unsigned flags); + struct pin_info_st *pin_info, struct p11_kit_uri *info, + unsigned flags); int pkcs11_call_token_func(struct p11_kit_uri *info, const unsigned retry); @@ -172,22 +180,23 @@ void pkcs11_rescan_slots(void); int pkcs11_info_to_url(struct p11_kit_uri *info, gnutls_pkcs11_url_type_t detailed, char **url); -int -_gnutls_x509_crt_import_pkcs11_url(gnutls_x509_crt_t crt, - const char *url, unsigned int flags); +int _gnutls_x509_crt_import_pkcs11_url(gnutls_x509_crt_t crt, const char *url, + unsigned int flags); -# define SESSION_WRITE (1<<0) -# define SESSION_LOGIN (1<<1) -# define SESSION_SO (1<<2) /* security officer session */ -# define SESSION_TRUSTED (1<<3)/* session on a marked as trusted (p11-kit) module */ -# define SESSION_FORCE_LOGIN (1<<4) /* force login even when CFK_LOGIN_REQUIRED is not set */ -# define SESSION_CONTEXT_SPECIFIC (1<<5) -# define SESSION_NO_CLOSE (1<<6) - /* don't close session on success */ +#define SESSION_WRITE (1 << 0) +#define SESSION_LOGIN (1 << 1) +#define SESSION_SO (1 << 2) /* security officer session */ +#define SESSION_TRUSTED \ + (1 << 3) /* session on a marked as trusted (p11-kit) module */ +#define SESSION_FORCE_LOGIN \ + (1 << 4) /* force login even when CFK_LOGIN_REQUIRED is not set */ +#define SESSION_CONTEXT_SPECIFIC (1 << 5) +#define SESSION_NO_CLOSE (1 << 6) +/* don't close session on success */ int pkcs11_open_session(struct pkcs11_session_info *sinfo, - struct pin_info_st *pin_info, - struct p11_kit_uri *info, unsigned int flags); + struct pin_info_st *pin_info, struct p11_kit_uri *info, + unsigned int flags); int _pkcs11_traverse_tokens(find_func_t find_func, void *input, struct p11_kit_uri *info, struct pin_info_st *pin_info, unsigned int flags); @@ -196,10 +205,10 @@ ck_object_class_t pkcs11_strtype_to_class(const char *type); /* Additional internal flags for gnutls_pkcs11_obj_flags */ /* @GNUTLS_PKCS11_OBJ_FLAG_EXPECT_CERT: When importing an object, provide a hint on the type, to allow incomplete URLs * @GNUTLS_PKCS11_OBJ_FLAG_EXPECT_PRIVKEY: Hint for private key */ -# define GNUTLS_PKCS11_OBJ_FLAG_FIRST_CLOSE_MATCH ((unsigned int)1<<28) -# define GNUTLS_PKCS11_OBJ_FLAG_EXPECT_CERT (1<<29) -# define GNUTLS_PKCS11_OBJ_FLAG_EXPECT_PRIVKEY (1<<30) -# define GNUTLS_PKCS11_OBJ_FLAG_EXPECT_PUBKEY ((unsigned int)1<<31) +#define GNUTLS_PKCS11_OBJ_FLAG_FIRST_CLOSE_MATCH ((unsigned int)1 << 28) +#define GNUTLS_PKCS11_OBJ_FLAG_EXPECT_CERT (1 << 29) +#define GNUTLS_PKCS11_OBJ_FLAG_EXPECT_PRIVKEY (1 << 30) +#define GNUTLS_PKCS11_OBJ_FLAG_EXPECT_PUBKEY ((unsigned int)1 << 31) int pkcs11_token_matches_info(struct p11_kit_uri *info, struct ck_token_info *tinfo, @@ -207,29 +216,25 @@ int pkcs11_token_matches_info(struct p11_kit_uri *info, unsigned int pkcs11_obj_flags_to_int(unsigned int flags); -int -_gnutls_pkcs11_privkey_sign(gnutls_pkcs11_privkey_t key, - const gnutls_sign_entry_st * se, - const gnutls_datum_t * hash, - gnutls_datum_t * signature, - gnutls_x509_spki_st * spki_params); - -int -_gnutls_pkcs11_privkey_decrypt_data(gnutls_pkcs11_privkey_t key, - unsigned int flags, - const gnutls_datum_t * ciphertext, - gnutls_datum_t * plaintext); - -int -_gnutls_pkcs11_privkey_decrypt_data2(gnutls_pkcs11_privkey_t key, - unsigned int flags, - const gnutls_datum_t * ciphertext, - unsigned char *plaintext, - size_t plaintext_size); +int _gnutls_pkcs11_privkey_sign(gnutls_pkcs11_privkey_t key, + const gnutls_sign_entry_st *se, + const gnutls_datum_t *hash, + gnutls_datum_t *signature, + gnutls_x509_spki_st *spki_params); + +int _gnutls_pkcs11_privkey_decrypt_data(gnutls_pkcs11_privkey_t key, + unsigned int flags, + const gnutls_datum_t *ciphertext, + gnutls_datum_t *plaintext); -int -_pkcs11_privkey_get_pubkey(gnutls_pkcs11_privkey_t pkey, gnutls_pubkey_t * pub, - unsigned flags); +int _gnutls_pkcs11_privkey_decrypt_data2(gnutls_pkcs11_privkey_t key, + unsigned int flags, + const gnutls_datum_t *ciphertext, + unsigned char *plaintext, + size_t plaintext_size); + +int _pkcs11_privkey_get_pubkey(gnutls_pkcs11_privkey_t pkey, + gnutls_pubkey_t *pub, unsigned flags); static inline int pk_to_mech(gnutls_pk_algorithm_t pk) { @@ -241,10 +246,10 @@ static inline int pk_to_mech(gnutls_pk_algorithm_t pk) return CKM_RSA_PKCS; else if (pk == GNUTLS_PK_RSA_PSS) return CKM_RSA_PKCS_PSS; -# ifdef HAVE_CKM_EDDSA +#ifdef HAVE_CKM_EDDSA else if (pk == GNUTLS_PK_EDDSA_ED25519) return CKM_EDDSA; -# endif +#endif else return -1; } @@ -257,10 +262,10 @@ static inline int pk_to_key_type(gnutls_pk_algorithm_t pk) return CKK_ECDSA; else if (pk == GNUTLS_PK_RSA_PSS || pk == GNUTLS_PK_RSA) return CKK_RSA; -# ifdef HAVE_CKM_EDDSA +#ifdef HAVE_CKM_EDDSA else if (pk == GNUTLS_PK_EDDSA_ED25519) return CKK_EC_EDWARDS; -# endif +#endif else return -1; } @@ -273,15 +278,15 @@ static inline gnutls_pk_algorithm_t key_type_to_pk(ck_key_type_t m) return GNUTLS_PK_DSA; else if (m == CKK_ECDSA) return GNUTLS_PK_EC; -# ifdef HAVE_CKM_EDDSA +#ifdef HAVE_CKM_EDDSA else if (m == CKK_EC_EDWARDS) return GNUTLS_PK_EDDSA_ED25519; -# endif +#endif else return GNUTLS_PK_UNKNOWN; } -static inline int pk_to_genmech(gnutls_pk_algorithm_t pk, ck_key_type_t * type) +static inline int pk_to_genmech(gnutls_pk_algorithm_t pk, ck_key_type_t *type) { if (pk == GNUTLS_PK_DSA) { *type = CKK_DSA; @@ -292,157 +297,136 @@ static inline int pk_to_genmech(gnutls_pk_algorithm_t pk, ck_key_type_t * type) } else if (pk == GNUTLS_PK_RSA_PSS || pk == GNUTLS_PK_RSA) { *type = CKK_RSA; return CKM_RSA_PKCS_KEY_PAIR_GEN; -# ifdef HAVE_CKM_EDDSA +#ifdef HAVE_CKM_EDDSA } else if (pk == GNUTLS_PK_EDDSA_ED25519) { *type = CKK_EC_EDWARDS; return CKM_EDDSA; -# endif +#endif } else { *type = -1; return -1; } } -int -pkcs11_retrieve_pin(struct pin_info_st *pin_info, struct p11_kit_uri *info, - struct ck_token_info *token_info, int attempts, - ck_user_type_t user_type, struct p11_kit_pin **pin); +int pkcs11_retrieve_pin(struct pin_info_st *pin_info, struct p11_kit_uri *info, + struct ck_token_info *token_info, int attempts, + ck_user_type_t user_type, struct p11_kit_pin **pin); ck_object_class_t pkcs11_type_to_class(gnutls_pkcs11_obj_type_t type); -ck_rv_t -pkcs11_generate_key(struct ck_function_list *module, - ck_session_handle_t sess, - struct ck_mechanism *mechanism, - struct ck_attribute *templ, - unsigned long count, ck_object_handle_t * key); +ck_rv_t pkcs11_generate_key(struct ck_function_list *module, + ck_session_handle_t sess, + struct ck_mechanism *mechanism, + struct ck_attribute *templ, unsigned long count, + ck_object_handle_t *key); -ck_rv_t -pkcs11_generate_key_pair(struct ck_function_list *module, - ck_session_handle_t sess, - struct ck_mechanism *mechanism, - struct ck_attribute *pub_templ, - unsigned long pub_templ_count, - struct ck_attribute *priv_templ, - unsigned long priv_templ_count, - ck_object_handle_t * pub, ck_object_handle_t * priv); - -ck_rv_t -pkcs11_get_slot_list(struct ck_function_list *module, - unsigned char token_present, - ck_slot_id_t * slot_list, unsigned long *count); - -ck_rv_t -pkcs11_get_module_info(struct ck_function_list *module, struct ck_info *info); - -ck_rv_t -pkcs11_get_slot_info(struct ck_function_list *module, - ck_slot_id_t slot_id, struct ck_slot_info *info); - -ck_rv_t -pkcs11_get_token_info(struct ck_function_list *module, - ck_slot_id_t slot_id, struct ck_token_info *info); - -ck_rv_t -pkcs11_find_objects_init(struct ck_function_list *module, - ck_session_handle_t sess, - struct ck_attribute *templ, unsigned long count); +ck_rv_t pkcs11_generate_key_pair( + struct ck_function_list *module, ck_session_handle_t sess, + struct ck_mechanism *mechanism, struct ck_attribute *pub_templ, + unsigned long pub_templ_count, struct ck_attribute *priv_templ, + unsigned long priv_templ_count, ck_object_handle_t *pub, + ck_object_handle_t *priv); + +ck_rv_t pkcs11_get_slot_list(struct ck_function_list *module, + unsigned char token_present, + ck_slot_id_t *slot_list, unsigned long *count); + +ck_rv_t pkcs11_get_module_info(struct ck_function_list *module, + struct ck_info *info); + +ck_rv_t pkcs11_get_slot_info(struct ck_function_list *module, + ck_slot_id_t slot_id, struct ck_slot_info *info); + +ck_rv_t pkcs11_get_token_info(struct ck_function_list *module, + ck_slot_id_t slot_id, struct ck_token_info *info); -ck_rv_t -pkcs11_find_objects(struct ck_function_list *module, - ck_session_handle_t sess, - ck_object_handle_t * objects, - unsigned long max_object_count, - unsigned long *object_count); +ck_rv_t pkcs11_find_objects_init(struct ck_function_list *module, + ck_session_handle_t sess, + struct ck_attribute *templ, + unsigned long count); + +ck_rv_t pkcs11_find_objects(struct ck_function_list *module, + ck_session_handle_t sess, + ck_object_handle_t *objects, + unsigned long max_object_count, + unsigned long *object_count); ck_rv_t pkcs11_find_objects_final(struct pkcs11_session_info *); ck_rv_t pkcs11_close_session(struct pkcs11_session_info *); -ck_rv_t -pkcs11_set_attribute_value(struct ck_function_list *module, - ck_session_handle_t sess, - ck_object_handle_t object, - struct ck_attribute *templ, unsigned long count); +ck_rv_t pkcs11_set_attribute_value(struct ck_function_list *module, + ck_session_handle_t sess, + ck_object_handle_t object, + struct ck_attribute *templ, + unsigned long count); + +ck_rv_t pkcs11_get_attribute_value(struct ck_function_list *module, + ck_session_handle_t sess, + ck_object_handle_t object, + struct ck_attribute *templ, + unsigned long count); + +ck_rv_t pkcs11_get_attribute_avalue(struct ck_function_list *module, + ck_session_handle_t sess, + ck_object_handle_t object, + ck_attribute_type_t type, + gnutls_datum_t *res); + +ck_rv_t pkcs11_get_mechanism_list(struct ck_function_list *module, + ck_slot_id_t slot_id, + ck_mechanism_type_t *mechanism_list, + unsigned long *count); + +ck_rv_t pkcs11_get_mechanism_info(struct ck_function_list *module, + ck_slot_id_t slot_id, + ck_mechanism_type_t mechanism, + struct ck_mechanism_info *ptr); + +ck_rv_t pkcs11_sign_init(struct ck_function_list *module, + ck_session_handle_t sess, + struct ck_mechanism *mechanism, + ck_object_handle_t key); -ck_rv_t -pkcs11_get_attribute_value(struct ck_function_list *module, - ck_session_handle_t sess, - ck_object_handle_t object, - struct ck_attribute *templ, unsigned long count); +ck_rv_t pkcs11_sign(struct ck_function_list *module, ck_session_handle_t sess, + unsigned char *data, unsigned long data_len, + unsigned char *signature, unsigned long *signature_len); -ck_rv_t -pkcs11_get_attribute_avalue(struct ck_function_list *module, +ck_rv_t pkcs11_decrypt_init(struct ck_function_list *module, ck_session_handle_t sess, - ck_object_handle_t object, - ck_attribute_type_t type, gnutls_datum_t * res); - -ck_rv_t -pkcs11_get_mechanism_list(struct ck_function_list *module, - ck_slot_id_t slot_id, - ck_mechanism_type_t * mechanism_list, - unsigned long *count); - -ck_rv_t -pkcs11_get_mechanism_info(struct ck_function_list *module, - ck_slot_id_t slot_id, - ck_mechanism_type_t mechanism, - struct ck_mechanism_info *ptr); - -ck_rv_t -pkcs11_sign_init(struct ck_function_list *module, - ck_session_handle_t sess, - struct ck_mechanism *mechanism, ck_object_handle_t key); - -ck_rv_t -pkcs11_sign(struct ck_function_list *module, - ck_session_handle_t sess, - unsigned char *data, - unsigned long data_len, - unsigned char *signature, unsigned long *signature_len); - -ck_rv_t -pkcs11_decrypt_init(struct ck_function_list *module, - ck_session_handle_t sess, - struct ck_mechanism *mechanism, ck_object_handle_t key); - -ck_rv_t -pkcs11_decrypt(struct ck_function_list *module, - ck_session_handle_t sess, - unsigned char *encrypted_data, - unsigned long encrypted_data_len, - unsigned char *data, unsigned long *data_len); - -ck_rv_t -pkcs11_create_object(struct ck_function_list *module, - ck_session_handle_t sess, - struct ck_attribute *templ, - unsigned long count, ck_object_handle_t * object); - -ck_rv_t -pkcs11_destroy_object(struct ck_function_list *module, - ck_session_handle_t sess, ck_object_handle_t object); - -ck_rv_t -pkcs11_init_token(struct ck_function_list *module, - ck_slot_id_t slot_id, unsigned char *pin, - unsigned long pin_len, unsigned char *label); - -ck_rv_t -pkcs11_init_pin(struct ck_function_list *module, - ck_session_handle_t sess, - unsigned char *pin, unsigned long pin_len); - -ck_rv_t -pkcs11_set_pin(struct ck_function_list *module, - ck_session_handle_t sess, - const char *old_pin, - unsigned long old_len, - const char *new_pin, unsigned long new_len); - -ck_rv_t -_gnutls_pkcs11_get_random(struct ck_function_list *module, - ck_session_handle_t sess, void *data, size_t len); + struct ck_mechanism *mechanism, + ck_object_handle_t key); + +ck_rv_t pkcs11_decrypt(struct ck_function_list *module, + ck_session_handle_t sess, unsigned char *encrypted_data, + unsigned long encrypted_data_len, unsigned char *data, + unsigned long *data_len); + +ck_rv_t pkcs11_create_object(struct ck_function_list *module, + ck_session_handle_t sess, + struct ck_attribute *templ, unsigned long count, + ck_object_handle_t *object); + +ck_rv_t pkcs11_destroy_object(struct ck_function_list *module, + ck_session_handle_t sess, + ck_object_handle_t object); + +ck_rv_t pkcs11_init_token(struct ck_function_list *module, ck_slot_id_t slot_id, + unsigned char *pin, unsigned long pin_len, + unsigned char *label); + +ck_rv_t pkcs11_init_pin(struct ck_function_list *module, + ck_session_handle_t sess, unsigned char *pin, + unsigned long pin_len); + +ck_rv_t pkcs11_set_pin(struct ck_function_list *module, + ck_session_handle_t sess, const char *old_pin, + unsigned long old_len, const char *new_pin, + unsigned long new_len); + +ck_rv_t _gnutls_pkcs11_get_random(struct ck_function_list *module, + ck_session_handle_t sess, void *data, + size_t len); const char *pkcs11_strerror(ck_rv_t rv); @@ -455,15 +439,15 @@ inline static bool is_pkcs11_url_object(const char *url) return 0; } -unsigned -_gnutls_pkcs11_crt_is_known(const char *url, gnutls_x509_crt_t cert, - unsigned int flags, - gnutls_x509_crt_t * trusted_cert); +unsigned _gnutls_pkcs11_crt_is_known(const char *url, gnutls_x509_crt_t cert, + unsigned int flags, + gnutls_x509_crt_t *trusted_cert); -time_t -_gnutls_pkcs11_get_distrust_after(const char *url, gnutls_x509_crt_t cert, - const char *purpose, unsigned int flags); +time_t _gnutls_pkcs11_get_distrust_after(const char *url, + gnutls_x509_crt_t cert, + const char *purpose, + unsigned int flags); -# endif /* ENABLE_PKCS11 */ +#endif /* ENABLE_PKCS11 */ -#endif /* GNUTLS_LIB_PKCS11_INT_H */ +#endif /* GNUTLS_LIB_PKCS11_INT_H */ diff --git a/lib/pkcs11_privkey.c b/lib/pkcs11_privkey.c index 330b6d3897..163ca1f8a6 100644 --- a/lib/pkcs11_privkey.c +++ b/lib/pkcs11_privkey.c @@ -35,28 +35,30 @@ /* In case of a fork, it will invalidate the open session * in the privkey and start another */ -#define PKCS11_CHECK_INIT_PRIVKEY(k) \ - ret = _gnutls_pkcs11_check_init(PROV_INIT_ALL, k, reopen_privkey_session); \ - if (ret < 0) \ - return gnutls_assert_val(ret) - -#define FIND_OBJECT(key) \ - do { \ - int retries = 0; \ - int rret; \ - ret = find_object (&key->sinfo, &key->pin, &key->ref, key->uinfo, \ - SESSION_LOGIN); \ - if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { \ - if (_gnutls_token_func) \ - { \ - rret = pkcs11_call_token_func (key->uinfo, retries++); \ - if (rret == 0) continue; \ - } \ - return gnutls_assert_val(ret); \ - } else if (ret < 0) { \ - return gnutls_assert_val(ret); \ - } \ - break; \ +#define PKCS11_CHECK_INIT_PRIVKEY(k) \ + ret = _gnutls_pkcs11_check_init(PROV_INIT_ALL, k, \ + reopen_privkey_session); \ + if (ret < 0) \ + return gnutls_assert_val(ret) + +#define FIND_OBJECT(key) \ + do { \ + int retries = 0; \ + int rret; \ + ret = find_object(&key->sinfo, &key->pin, &key->ref, \ + key->uinfo, SESSION_LOGIN); \ + if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { \ + if (_gnutls_token_func) { \ + rret = pkcs11_call_token_func(key->uinfo, \ + retries++); \ + if (rret == 0) \ + continue; \ + } \ + return gnutls_assert_val(ret); \ + } else if (ret < 0) { \ + return gnutls_assert_val(ret); \ + } \ + break; \ } while (1); /** @@ -74,7 +76,7 @@ * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int gnutls_pkcs11_privkey_init(gnutls_pkcs11_privkey_t * key) +int gnutls_pkcs11_privkey_init(gnutls_pkcs11_privkey_t *key) { int ret; *key = NULL; @@ -117,9 +119,8 @@ int gnutls_pkcs11_privkey_init(gnutls_pkcs11_privkey_t * key) * * Since: 3.4.0 **/ -int -gnutls_pkcs11_privkey_cpy(gnutls_pkcs11_privkey_t dst, - gnutls_pkcs11_privkey_t src) +int gnutls_pkcs11_privkey_cpy(gnutls_pkcs11_privkey_t dst, + gnutls_pkcs11_privkey_t src) { return gnutls_pkcs11_privkey_import_url(dst, src->url, src->flags); } @@ -151,9 +152,8 @@ void gnutls_pkcs11_privkey_deinit(gnutls_pkcs11_privkey_t key) * Returns: a member of the #gnutls_pk_algorithm_t enumeration on * success, or a negative error code on error. **/ -int -gnutls_pkcs11_privkey_get_pk_algorithm(gnutls_pkcs11_privkey_t key, - unsigned int *bits) +int gnutls_pkcs11_privkey_get_pk_algorithm(gnutls_pkcs11_privkey_t key, + unsigned int *bits) { if (bits) *bits = key->bits; @@ -174,19 +174,16 @@ gnutls_pkcs11_privkey_get_pk_algorithm(gnutls_pkcs11_privkey_t key, * * Returns: %GNUTLS_E_SUCCESS (0) on success or a negative error code on error. **/ -int -gnutls_pkcs11_privkey_get_info(gnutls_pkcs11_privkey_t pkey, - gnutls_pkcs11_obj_info_t itype, - void *output, size_t *output_size) +int gnutls_pkcs11_privkey_get_info(gnutls_pkcs11_privkey_t pkey, + gnutls_pkcs11_obj_info_t itype, void *output, + size_t *output_size) { return pkcs11_get_info(pkey->uinfo, itype, output, output_size); } -static int -find_object(struct pkcs11_session_info *sinfo, - struct pin_info_st *pin_info, - ck_object_handle_t * _ctx, - struct p11_kit_uri *info, unsigned int flags) +static int find_object(struct pkcs11_session_info *sinfo, + struct pin_info_st *pin_info, ck_object_handle_t *_ctx, + struct p11_kit_uri *info, unsigned int flags) { int ret; ck_object_handle_t ctx; @@ -211,8 +208,9 @@ find_object(struct pkcs11_session_info *sinfo, goto fail; } - if (pkcs11_find_objects(sinfo->module, sinfo->pks, &ctx, 1, &count) - == CKR_OK && count == 1) { + if (pkcs11_find_objects(sinfo->module, sinfo->pks, &ctx, 1, &count) == + CKR_OK && + count == 1) { *_ctx = ctx; pkcs11_find_objects_final(sinfo); return 0; @@ -220,7 +218,7 @@ find_object(struct pkcs11_session_info *sinfo, ret = GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; pkcs11_find_objects_final(sinfo); - fail: +fail: pkcs11_close_session(sinfo); return ret; @@ -242,25 +240,25 @@ static int reopen_privkey_session(void *_privkey) return 0; } -#define REPEAT_ON_INVALID_HANDLE(expr) \ - if ((expr) == CKR_SESSION_HANDLE_INVALID) { \ - ret = reopen_privkey_session(key); \ - if (ret < 0) \ +#define REPEAT_ON_INVALID_HANDLE(expr) \ + if ((expr) == CKR_SESSION_HANDLE_INVALID) { \ + ret = reopen_privkey_session(key); \ + if (ret < 0) \ return gnutls_assert_val(ret); \ - expr; \ + expr; \ } struct hash_mappings_st { gnutls_digest_algorithm_t id; - unsigned long phash; /* pkcs11 hash ID */ + unsigned long phash; /* pkcs11 hash ID */ unsigned long mgf_id; }; #ifndef CKG_MGF1_SHA224 -# define CKG_MGF1_SHA224 0x00000005UL -# define CKG_MGF1_SHA256 0x00000002UL -# define CKG_MGF1_SHA384 0x00000003UL -# define CKG_MGF1_SHA512 0x00000004UL +#define CKG_MGF1_SHA224 0x00000005UL +#define CKG_MGF1_SHA256 0x00000002UL +#define CKG_MGF1_SHA384 0x00000003UL +#define CKG_MGF1_SHA512 0x00000004UL struct ck_rsa_pkcs_pss_params { ck_mechanism_type_t hash_alg; @@ -271,22 +269,22 @@ struct ck_rsa_pkcs_pss_params { #endif static const struct hash_mappings_st hash_mappings[] = { - {.id = GNUTLS_DIG_SHA224, - .phash = CKM_SHA224, - .mgf_id = CKG_MGF1_SHA224}, - {.id = GNUTLS_DIG_SHA256, - .phash = CKM_SHA256, - .mgf_id = CKG_MGF1_SHA256}, - {.id = GNUTLS_DIG_SHA384, - .phash = CKM_SHA384, - .mgf_id = CKG_MGF1_SHA384}, - {.id = GNUTLS_DIG_SHA512, - .phash = CKM_SHA512, - .mgf_id = CKG_MGF1_SHA512} + { .id = GNUTLS_DIG_SHA224, + .phash = CKM_SHA224, + .mgf_id = CKG_MGF1_SHA224 }, + { .id = GNUTLS_DIG_SHA256, + .phash = CKM_SHA256, + .mgf_id = CKG_MGF1_SHA256 }, + { .id = GNUTLS_DIG_SHA384, + .phash = CKM_SHA384, + .mgf_id = CKG_MGF1_SHA384 }, + { .id = GNUTLS_DIG_SHA512, + .phash = CKM_SHA512, + .mgf_id = CKG_MGF1_SHA512 } }; -static const struct hash_mappings_st *hash_to_map(gnutls_digest_algorithm_t - hash) +static const struct hash_mappings_st * +hash_to_map(gnutls_digest_algorithm_t hash) { unsigned i; for (i = 0; i < sizeof(hash_mappings) / sizeof(hash_mappings[0]); i++) { @@ -310,12 +308,11 @@ static const struct hash_mappings_st *hash_to_map(gnutls_digest_algorithm_t * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. -*/ -int -_gnutls_pkcs11_privkey_sign(gnutls_pkcs11_privkey_t key, - const gnutls_sign_entry_st * se, - const gnutls_datum_t * hash, - gnutls_datum_t * signature, - gnutls_x509_spki_st * spki_params) +int _gnutls_pkcs11_privkey_sign(gnutls_pkcs11_privkey_t key, + const gnutls_sign_entry_st *se, + const gnutls_datum_t *hash, + gnutls_datum_t *signature, + gnutls_x509_spki_st *spki_params) { ck_rv_t rv; int ret; @@ -338,9 +335,8 @@ _gnutls_pkcs11_privkey_sign(gnutls_pkcs11_privkey_t key, return gnutls_assert_val(GNUTLS_E_UNKNOWN_PK_ALGORITHM); if (unlikely(!key->rsa_pss_ok)) - return - gnutls_assert_val - (GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM); + return gnutls_assert_val( + GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM); rsa_pss_params.hash_alg = map->phash; rsa_pss_params.mgf = map->mgf_id; @@ -366,9 +362,9 @@ _gnutls_pkcs11_privkey_sign(gnutls_pkcs11_privkey_t key, /* Initialize signing operation; using the private key discovered * earlier. */ - REPEAT_ON_INVALID_HANDLE(rv = - pkcs11_sign_init(sinfo->module, sinfo->pks, - &mech, key->ref)); + REPEAT_ON_INVALID_HANDLE(rv = pkcs11_sign_init(sinfo->module, + sinfo->pks, &mech, + key->ref)); if (rv != CKR_OK) { _gnutls_debug_log("p11: %s\n", pkcs11_strerror(rv)); gnutls_assert(); @@ -376,17 +372,16 @@ _gnutls_pkcs11_privkey_sign(gnutls_pkcs11_privkey_t key, goto cleanup; } - retry_login: +retry_login: if (key->reauth || req_login) { if (req_login) login_flags = SESSION_FORCE_LOGIN | SESSION_LOGIN; - ret = - pkcs11_login(&key->sinfo, &key->pin, - key->uinfo, login_flags); + ret = pkcs11_login(&key->sinfo, &key->pin, key->uinfo, + login_flags); if (ret < 0) { gnutls_assert(); - _gnutls_debug_log - ("PKCS #11 login failed, trying operation anyway\n"); + _gnutls_debug_log( + "PKCS #11 login failed, trying operation anyway\n"); /* let's try the operation anyway */ } } @@ -416,8 +411,8 @@ _gnutls_pkcs11_privkey_sign(gnutls_pkcs11_privkey_t key, goto cleanup; } - if (key->pk_algorithm == GNUTLS_PK_ECDSA - || key->pk_algorithm == GNUTLS_PK_DSA) { + if (key->pk_algorithm == GNUTLS_PK_ECDSA || + key->pk_algorithm == GNUTLS_PK_DSA) { unsigned int hlen = siglen / 2; gnutls_datum_t r, s; @@ -447,7 +442,7 @@ _gnutls_pkcs11_privkey_sign(gnutls_pkcs11_privkey_t key, ret = 0; - cleanup: +cleanup: gnutls_mutex_unlock(&key->mutex); if (sinfo != &key->sinfo) pkcs11_close_session(sinfo); @@ -477,17 +472,16 @@ unsigned gnutls_pkcs11_privkey_status(gnutls_pkcs11_privkey_t key) PKCS11_CHECK_INIT_PRIVKEY(key); - REPEAT_ON_INVALID_HANDLE(rv = - (key->sinfo.module)-> - C_GetSessionInfo(key->sinfo.pks, - &session_info)); + REPEAT_ON_INVALID_HANDLE( + rv = (key->sinfo.module) + ->C_GetSessionInfo(key->sinfo.pks, &session_info)); if (rv != CKR_OK) { ret = 0; goto cleanup; } ret = 1; - cleanup: +cleanup: return ret; } @@ -506,9 +500,8 @@ unsigned gnutls_pkcs11_privkey_status(gnutls_pkcs11_privkey_t key) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_pkcs11_privkey_import_url(gnutls_pkcs11_privkey_t pkey, - const char *url, unsigned int flags) +int gnutls_pkcs11_privkey_import_url(gnutls_pkcs11_privkey_t pkey, + const char *url, unsigned int flags) { int ret; struct ck_attribute *attr; @@ -533,9 +526,8 @@ gnutls_pkcs11_privkey_import_url(gnutls_pkcs11_privkey_t pkey, if (pkey->url == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - ret = - pkcs11_url_to_info(pkey->url, &pkey->uinfo, - flags | GNUTLS_PKCS11_OBJ_FLAG_EXPECT_PRIVKEY); + ret = pkcs11_url_to_info(pkey->url, &pkey->uinfo, + flags | GNUTLS_PKCS11_OBJ_FLAG_EXPECT_PRIVKEY); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -545,7 +537,7 @@ gnutls_pkcs11_privkey_import_url(gnutls_pkcs11_privkey_t pkey, attr = p11_kit_uri_get_attribute(pkey->uinfo, CKA_CLASS); if (!attr || attr->value_len != sizeof(ck_object_class_t) || - *(ck_object_class_t *) attr->value != CKO_PRIVATE_KEY) { + *(ck_object_class_t *)attr->value != CKO_PRIVATE_KEY) { gnutls_assert(); ret = GNUTLS_E_INVALID_REQUEST; goto cleanup; @@ -567,9 +559,8 @@ gnutls_pkcs11_privkey_import_url(gnutls_pkcs11_privkey_t pkey, a[0].type = CKA_KEY_TYPE; a[0].value = &key_type; a[0].value_len = sizeof(key_type); - if (pkcs11_get_attribute_value - (pkey->sinfo.module, pkey->sinfo.pks, pkey->ref, a, 1) - == CKR_OK) { + if (pkcs11_get_attribute_value(pkey->sinfo.module, pkey->sinfo.pks, + pkey->ref, a, 1) == CKR_OK) { pkey->pk_algorithm = key_type_to_pk(key_type); } @@ -579,7 +570,8 @@ gnutls_pkcs11_privkey_import_url(gnutls_pkcs11_privkey_t pkey, goto cleanup; } - if (pkey->pk_algorithm == GNUTLS_PK_RSA) { /* determine whether it can do rsa-pss */ + if (pkey->pk_algorithm == + GNUTLS_PK_RSA) { /* determine whether it can do rsa-pss */ tval = 0; a[0].type = CKA_MODULUS; a[0].value = NULL; @@ -587,21 +579,20 @@ gnutls_pkcs11_privkey_import_url(gnutls_pkcs11_privkey_t pkey, a[1].type = CKA_SIGN; a[1].value = &tval; a[1].value_len = sizeof(tval); - if (pkcs11_get_attribute_value - (pkey->sinfo.module, pkey->sinfo.pks, pkey->ref, a, 2) - == CKR_OK) { + if (pkcs11_get_attribute_value(pkey->sinfo.module, + pkey->sinfo.pks, pkey->ref, a, + 2) == CKR_OK) { pkey->bits = a[0].value_len * 8; } - ret = - gnutls_pkcs11_token_check_mechanism(url, CKM_RSA_PKCS_PSS, - NULL, 0, 0); + ret = gnutls_pkcs11_token_check_mechanism(url, CKM_RSA_PKCS_PSS, + NULL, 0, 0); if (ret != 0 && tval) { pkey->rsa_pss_ok = 1; } else { - _gnutls_debug_log - ("Detected incompatible with TLS1.3 RSA key! (%s)\n", - url); + _gnutls_debug_log( + "Detected incompatible with TLS1.3 RSA key! (%s)\n", + url); } } @@ -609,9 +600,8 @@ gnutls_pkcs11_privkey_import_url(gnutls_pkcs11_privkey_t pkey, a[0].value = &reauth; a[0].value_len = sizeof(reauth); - if (pkcs11_get_attribute_value - (pkey->sinfo.module, pkey->sinfo.pks, pkey->ref, a, 1) - == CKR_OK) { + if (pkcs11_get_attribute_value(pkey->sinfo.module, pkey->sinfo.pks, + pkey->ref, a, 1) == CKR_OK) { pkey->reauth = reauth; } @@ -619,7 +609,7 @@ gnutls_pkcs11_privkey_import_url(gnutls_pkcs11_privkey_t pkey, return ret; - cleanup: +cleanup: if (pkey->uinfo != NULL) { p11_kit_uri_free(pkey->uinfo); pkey->uinfo = NULL; @@ -642,11 +632,10 @@ gnutls_pkcs11_privkey_import_url(gnutls_pkcs11_privkey_t pkey, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. -*/ -int -_gnutls_pkcs11_privkey_decrypt_data(gnutls_pkcs11_privkey_t key, - unsigned int flags, - const gnutls_datum_t * ciphertext, - gnutls_datum_t * plaintext) +int _gnutls_pkcs11_privkey_decrypt_data(gnutls_pkcs11_privkey_t key, + unsigned int flags, + const gnutls_datum_t *ciphertext, + gnutls_datum_t *plaintext) { ck_rv_t rv; int ret; @@ -670,27 +659,25 @@ _gnutls_pkcs11_privkey_decrypt_data(gnutls_pkcs11_privkey_t key, /* Initialize signing operation; using the private key discovered * earlier. */ - REPEAT_ON_INVALID_HANDLE(rv = - pkcs11_decrypt_init(key->sinfo.module, - key->sinfo.pks, &mech, - key->ref)); + REPEAT_ON_INVALID_HANDLE(rv = pkcs11_decrypt_init(key->sinfo.module, + key->sinfo.pks, &mech, + key->ref)); if (rv != CKR_OK) { gnutls_assert(); ret = pkcs11_rv_to_err(rv); goto cleanup; } - retry_login: +retry_login: if (key->reauth || req_login) { if (req_login) login_flags = SESSION_FORCE_LOGIN | SESSION_LOGIN; - ret = - pkcs11_login(&key->sinfo, &key->pin, - key->uinfo, login_flags); + ret = pkcs11_login(&key->sinfo, &key->pin, key->uinfo, + login_flags); if (ret < 0) { gnutls_assert(); - _gnutls_debug_log - ("PKCS #11 login failed, trying operation anyway\n"); + _gnutls_debug_log( + "PKCS #11 login failed, trying operation anyway\n"); /* let's try the operation anyway */ } } @@ -725,7 +712,7 @@ _gnutls_pkcs11_privkey_decrypt_data(gnutls_pkcs11_privkey_t key, ret = 0; - cleanup: +cleanup: gnutls_mutex_unlock(&key->mutex); return ret; } @@ -750,12 +737,11 @@ _gnutls_pkcs11_privkey_decrypt_data(gnutls_pkcs11_privkey_t key, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. -*/ -int -_gnutls_pkcs11_privkey_decrypt_data2(gnutls_pkcs11_privkey_t key, - unsigned int flags, - const gnutls_datum_t * ciphertext, - unsigned char *plaintext, - size_t plaintext_size) +int _gnutls_pkcs11_privkey_decrypt_data2(gnutls_pkcs11_privkey_t key, + unsigned int flags, + const gnutls_datum_t *ciphertext, + unsigned char *plaintext, + size_t plaintext_size) { ck_rv_t rv; int ret; @@ -788,37 +774,33 @@ _gnutls_pkcs11_privkey_decrypt_data2(gnutls_pkcs11_privkey_t key, /* Initialize signing operation; using the private key discovered * earlier. */ - REPEAT_ON_INVALID_HANDLE(rv = - pkcs11_decrypt_init(key->sinfo.module, - key->sinfo.pks, &mech, - key->ref) - ); + REPEAT_ON_INVALID_HANDLE(rv = pkcs11_decrypt_init(key->sinfo.module, + key->sinfo.pks, &mech, + key->ref)); if (rv != CKR_OK) { gnutls_assert(); ret = pkcs11_rv_to_err(rv); goto cleanup; } - retry_login: +retry_login: if (key->reauth || req_login) { if (req_login) login_flags = SESSION_FORCE_LOGIN | SESSION_LOGIN; - ret = - pkcs11_login(&key->sinfo, &key->pin, - key->uinfo, login_flags); + ret = pkcs11_login(&key->sinfo, &key->pin, key->uinfo, + login_flags); if (ret < 0) { gnutls_assert(); - _gnutls_debug_log - ("PKCS #11 login failed, trying operation anyway\n"); + _gnutls_debug_log( + "PKCS #11 login failed, trying operation anyway\n"); /* let's try the operation anyway */ } } ret = 0; siglen = ciphertext->size; - rv = pkcs11_decrypt(key->sinfo.module, key->sinfo.pks, - ciphertext->data, ciphertext->size, - buffer, &siglen); + rv = pkcs11_decrypt(key->sinfo.module, key->sinfo.pks, ciphertext->data, + ciphertext->size, buffer, &siglen); if (unlikely(rv == CKR_USER_NOT_LOGGED_IN && req_login == 0)) { req_login = 1; goto retry_login; @@ -835,13 +817,13 @@ _gnutls_pkcs11_privkey_decrypt_data2(gnutls_pkcs11_privkey_t key, /* conditionally copy buffer in a side-channel silent way */ /* on success mask is 0xFF, on failure it is 0 */ - mask = ((uint32_t) ret >> 31) - 1U; + mask = ((uint32_t)ret >> 31) - 1U; for (size_t i = 0; i < plaintext_size; i++) { value = (buffer[i] & mask) + (plaintext[i] & ~mask); plaintext[i] = value; } - cleanup: +cleanup: gnutls_mutex_unlock(&key->mutex); gnutls_free(buffer); return ret; @@ -858,9 +840,9 @@ _gnutls_pkcs11_privkey_decrypt_data2(gnutls_pkcs11_privkey_t key, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_pkcs11_privkey_export_url(gnutls_pkcs11_privkey_t key, - gnutls_pkcs11_url_type_t detailed, char **url) +int gnutls_pkcs11_privkey_export_url(gnutls_pkcs11_privkey_t key, + gnutls_pkcs11_url_type_t detailed, + char **url) { int ret; @@ -934,7 +916,7 @@ gnutls_pkcs11_privkey_generate2(const char *url, gnutls_pk_algorithm_t pk, } #endif -static const char def_rsa_pub_exp[3] = { 1, 0, 1 }; // 65537 = 0x10001 +static const char def_rsa_pub_exp[3] = { 1, 0, 1 }; // 65537 = 0x10001 struct dsa_params { /* FIPS 186-3 maximal size for L and N length pair is (3072,256). */ @@ -943,11 +925,10 @@ struct dsa_params { uint8_t generator[384]; }; -static int -_dsa_params_generate(struct ck_function_list *module, - ck_session_handle_t session, unsigned long bits, - struct dsa_params *params, struct ck_attribute *a, - int *a_val) +static int _dsa_params_generate(struct ck_function_list *module, + ck_session_handle_t session, unsigned long bits, + struct dsa_params *params, + struct ck_attribute *a, int *a_val) { struct ck_mechanism mech = { CKM_DSA_PARAMETER_GEN }; struct ck_attribute attr = { CKA_PRIME_BITS, &bits, sizeof(bits) }; @@ -1019,13 +1000,12 @@ _dsa_params_generate(struct ck_function_list *module, * * Since: 3.4.0 **/ -int -gnutls_pkcs11_privkey_generate3(const char *url, gnutls_pk_algorithm_t pk, - unsigned int bits, const char *label, - const gnutls_datum_t * cid, - gnutls_x509_crt_fmt_t fmt, - gnutls_datum_t * pubkey, - unsigned int key_usage, unsigned int flags) +int gnutls_pkcs11_privkey_generate3(const char *url, gnutls_pk_algorithm_t pk, + unsigned int bits, const char *label, + const gnutls_datum_t *cid, + gnutls_x509_crt_fmt_t fmt, + gnutls_datum_t *pubkey, + unsigned int key_usage, unsigned int flags) { int ret; const ck_bool_t tval = 1; @@ -1056,9 +1036,9 @@ gnutls_pkcs11_privkey_generate3(const char *url, gnutls_pk_algorithm_t pk, return ret; } - ret = - pkcs11_open_session(&sinfo, NULL, info, - SESSION_WRITE | pkcs11_obj_flags_to_int(flags)); + ret = pkcs11_open_session(&sinfo, NULL, info, + SESSION_WRITE | + pkcs11_obj_flags_to_int(flags)); p11_kit_uri_free(info); if (ret < 0) { @@ -1218,9 +1198,8 @@ gnutls_pkcs11_privkey_generate3(const char *url, gnutls_pk_algorithm_t pk, a[a_val].value_len = sizeof(tval); a_val++; - ret = - _gnutls_x509_write_ecc_params(GNUTLS_ECC_CURVE_ED25519, - &der); + ret = _gnutls_x509_write_ecc_params(GNUTLS_ECC_CURVE_ED25519, + &der); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -1294,8 +1273,8 @@ gnutls_pkcs11_privkey_generate3(const char *url, gnutls_pk_algorithm_t pk, p_val++; } - rv = pkcs11_generate_key_pair(sinfo.module, sinfo.pks, &mech, a, - a_val, p, p_val, &pub_ctx, &priv_ctx); + rv = pkcs11_generate_key_pair(sinfo.module, sinfo.pks, &mech, a, a_val, + p, p_val, &pub_ctx, &priv_ctx); if (rv != CKR_OK) { gnutls_assert(); _gnutls_debug_log("p11: %s\n", pkcs11_strerror(rv)); @@ -1305,7 +1284,6 @@ gnutls_pkcs11_privkey_generate3(const char *url, gnutls_pk_algorithm_t pk, /* extract the public key */ if (pubkey) { - ret = gnutls_pubkey_init(&pkey); if (ret < 0) { gnutls_assert(); @@ -1320,9 +1298,8 @@ gnutls_pkcs11_privkey_generate3(const char *url, gnutls_pk_algorithm_t pk, obj->pk_algorithm = pk; obj->type = GNUTLS_PKCS11_OBJ_PUBKEY; - ret = - pkcs11_read_pubkey(sinfo.module, sinfo.pks, pub_ctx, - key_type, obj); + ret = pkcs11_read_pubkey(sinfo.module, sinfo.pks, pub_ctx, + key_type, obj); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -1341,7 +1318,7 @@ gnutls_pkcs11_privkey_generate3(const char *url, gnutls_pk_algorithm_t pk, } } - cleanup: +cleanup: if (obj != NULL) gnutls_pkcs11_obj_deinit(obj); if (pkey != NULL) @@ -1385,14 +1362,13 @@ static int load_pubkey_obj(gnutls_pkcs11_privkey_t pkey, gnutls_pubkey_t pub) ret = gnutls_pubkey_import_x509(pub, crt, 0); - cleanup: +cleanup: gnutls_x509_crt_deinit(crt); return ret; } -int -_pkcs11_privkey_get_pubkey(gnutls_pkcs11_privkey_t pkey, gnutls_pubkey_t * pub, - unsigned flags) +int _pkcs11_privkey_get_pubkey(gnutls_pkcs11_privkey_t pkey, + gnutls_pubkey_t *pub, unsigned flags) { gnutls_pubkey_t pubkey = NULL; gnutls_pkcs11_obj_t obj = NULL; @@ -1433,9 +1409,8 @@ _pkcs11_privkey_get_pubkey(gnutls_pkcs11_privkey_t pkey, gnutls_pubkey_t * pub, goto cleanup; } } else { - ret = - pkcs11_read_pubkey(pkey->sinfo.module, pkey->sinfo.pks, - pkey->ref, key_type, obj); + ret = pkcs11_read_pubkey(pkey->sinfo.module, pkey->sinfo.pks, + pkey->ref, key_type, obj); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -1453,7 +1428,7 @@ _pkcs11_privkey_get_pubkey(gnutls_pkcs11_privkey_t pkey, gnutls_pubkey_t * pub, pubkey = NULL; ret = 0; - cleanup: +cleanup: if (obj != NULL) gnutls_pkcs11_obj_deinit(obj); if (pubkey != NULL) @@ -1479,10 +1454,10 @@ _pkcs11_privkey_get_pubkey(gnutls_pkcs11_privkey_t pkey, gnutls_pubkey_t * pub, * * Since: 3.3.7 **/ -int -gnutls_pkcs11_privkey_export_pubkey(gnutls_pkcs11_privkey_t pkey, - gnutls_x509_crt_fmt_t fmt, - gnutls_datum_t * data, unsigned int flags) +int gnutls_pkcs11_privkey_export_pubkey(gnutls_pkcs11_privkey_t pkey, + gnutls_x509_crt_fmt_t fmt, + gnutls_datum_t *data, + unsigned int flags) { int ret; gnutls_pubkey_t pubkey = NULL; @@ -1499,7 +1474,7 @@ gnutls_pkcs11_privkey_export_pubkey(gnutls_pkcs11_privkey_t pkey, ret = 0; - cleanup: +cleanup: if (pubkey != NULL) gnutls_pubkey_deinit(pubkey); @@ -1519,9 +1494,9 @@ gnutls_pkcs11_privkey_export_pubkey(gnutls_pkcs11_privkey_t pkey, * Since: 3.1.0 * **/ -void -gnutls_pkcs11_privkey_set_pin_function(gnutls_pkcs11_privkey_t key, - gnutls_pin_callback_t fn, void *userdata) +void gnutls_pkcs11_privkey_set_pin_function(gnutls_pkcs11_privkey_t key, + gnutls_pin_callback_t fn, + void *userdata) { key->pin.cb = fn; key->pin.data = userdata; diff --git a/lib/pkcs11_secret.c b/lib/pkcs11_secret.c index 1b7521f39d..eb145adc44 100644 --- a/lib/pkcs11_secret.c +++ b/lib/pkcs11_secret.c @@ -43,11 +43,10 @@ * * Since: 2.12.0 **/ -int -gnutls_pkcs11_copy_secret_key(const char *token_url, gnutls_datum_t * key, - const char *label, - unsigned int key_usage, unsigned int flags - /* GNUTLS_PKCS11_OBJ_FLAG_* */ ) +int gnutls_pkcs11_copy_secret_key(const char *token_url, gnutls_datum_t *key, + const char *label, unsigned int key_usage, + unsigned int flags + /* GNUTLS_PKCS11_OBJ_FLAG_* */) { int ret; struct p11_kit_uri *info = NULL; @@ -78,9 +77,9 @@ gnutls_pkcs11_copy_secret_key(const char *token_url, gnutls_datum_t * key, return ret; } - ret = - pkcs11_open_session(&sinfo, NULL, info, - SESSION_WRITE | pkcs11_obj_flags_to_int(flags)); + ret = pkcs11_open_session(&sinfo, NULL, info, + SESSION_WRITE | + pkcs11_obj_flags_to_int(flags)); p11_kit_uri_free(info); if (ret < 0) { @@ -141,9 +140,8 @@ gnutls_pkcs11_copy_secret_key(const char *token_url, gnutls_datum_t * key, ret = 0; - cleanup: +cleanup: pkcs11_close_session(&sinfo); return ret; - } diff --git a/lib/pkcs11_write.c b/lib/pkcs11_write.c index 0ca2130af3..f37b2400ea 100644 --- a/lib/pkcs11_write.c +++ b/lib/pkcs11_write.c @@ -53,8 +53,8 @@ static void mark_flags(unsigned flags, struct ck_attribute *a, unsigned *a_val, a[*a_val].value_len = sizeof(tval); (*a_val)++; } else { - _gnutls_debug_log - ("p11: ignoring the distrusted flag as it is not valid on non-p11-kit-trust modules\n"); + _gnutls_debug_log( + "p11: ignoring the distrusted flag as it is not valid on non-p11-kit-trust modules\n"); } } @@ -101,10 +101,9 @@ static void mark_flags(unsigned flags, struct ck_attribute *a, unsigned *a_val, * * Since: 3.4.0 **/ -int -gnutls_pkcs11_copy_x509_crt2(const char *token_url, - gnutls_x509_crt_t crt, const char *label, - const gnutls_datum_t * cid, unsigned int flags) +int gnutls_pkcs11_copy_x509_crt2(const char *token_url, gnutls_x509_crt_t crt, + const char *label, const gnutls_datum_t *cid, + unsigned int flags) { int ret; struct p11_kit_uri *info = NULL; @@ -129,9 +128,9 @@ gnutls_pkcs11_copy_x509_crt2(const char *token_url, return ret; } - ret = - pkcs11_open_session(&sinfo, NULL, info, - SESSION_WRITE | pkcs11_obj_flags_to_int(flags)); + ret = pkcs11_open_session(&sinfo, NULL, info, + SESSION_WRITE | + pkcs11_obj_flags_to_int(flags)); p11_kit_uri_free(info); if (ret < 0) { @@ -166,8 +165,8 @@ gnutls_pkcs11_copy_x509_crt2(const char *token_url, a[1].type = CKA_ID; if (cid == NULL || cid->size == 0) { id_size = sizeof(id); - ret = - gnutls_x509_crt_get_subject_key_id(crt, id, &id_size, NULL); + ret = gnutls_x509_crt_get_subject_key_id(crt, id, &id_size, + NULL); if (ret < 0) { id_size = sizeof(id); ret = gnutls_x509_crt_get_key_id(crt, 0, id, &id_size); @@ -212,9 +211,8 @@ gnutls_pkcs11_copy_x509_crt2(const char *token_url, serial_size = sizeof(serial); if (gnutls_x509_crt_get_serial(crt, serial, &serial_size) >= 0) { - ret = - _gnutls_x509_ext_gen_number(serial, serial_size, - &serial_der); + ret = _gnutls_x509_ext_gen_number(serial, serial_size, + &serial_der); if (ret >= 0) { a[a_val].type = CKA_SERIAL_NUMBER; a[a_val].value = (void *)serial_der.data; @@ -245,12 +243,11 @@ gnutls_pkcs11_copy_x509_crt2(const char *token_url, ret = 0; - cleanup: +cleanup: gnutls_free(der); gnutls_free(serial_der.data); pkcs11_close_session(&sinfo); return ret; - } static void clean_pubkey(struct ck_attribute *a, unsigned a_val) @@ -283,124 +280,116 @@ static int add_pubkey(gnutls_pubkey_t pubkey, struct ck_attribute *a, switch (pk) { case GNUTLS_PK_RSA_PSS: - case GNUTLS_PK_RSA:{ - gnutls_datum_t m, e; + case GNUTLS_PK_RSA: { + gnutls_datum_t m, e; - /* PKCS#11 defines integers as unsigned having most significant byte + /* PKCS#11 defines integers as unsigned having most significant byte * first, e.g., 32768 = 0x80 0x00. This is interpreted literraly by * some HSMs which do not accept an integer with a leading zero */ - ret = - gnutls_pubkey_export_rsa_raw2(pubkey, &m, &e, - GNUTLS_EXPORT_FLAG_NO_LZ); - if (ret < 0) { - gnutls_assert(); - return ret; - } + ret = gnutls_pubkey_export_rsa_raw2(pubkey, &m, &e, + GNUTLS_EXPORT_FLAG_NO_LZ); + if (ret < 0) { + gnutls_assert(); + return ret; + } - a[*a_val].type = CKA_MODULUS; - a[*a_val].value = m.data; - a[*a_val].value_len = m.size; - (*a_val)++; + a[*a_val].type = CKA_MODULUS; + a[*a_val].value = m.data; + a[*a_val].value_len = m.size; + (*a_val)++; - a[*a_val].type = CKA_PUBLIC_EXPONENT; - a[*a_val].value = e.data; - a[*a_val].value_len = e.size; - (*a_val)++; - break; + a[*a_val].type = CKA_PUBLIC_EXPONENT; + a[*a_val].value = e.data; + a[*a_val].value_len = e.size; + (*a_val)++; + break; + } + case GNUTLS_PK_DSA: { + gnutls_datum_t p, q, g, y; + + ret = gnutls_pubkey_export_dsa_raw2(pubkey, &p, &q, &g, &y, + GNUTLS_EXPORT_FLAG_NO_LZ); + if (ret < 0) { + gnutls_assert(); + return ret; } - case GNUTLS_PK_DSA:{ - gnutls_datum_t p, q, g, y; - ret = - gnutls_pubkey_export_dsa_raw2(pubkey, &p, &q, &g, - &y, - GNUTLS_EXPORT_FLAG_NO_LZ); - if (ret < 0) { - gnutls_assert(); - return ret; - } + a[*a_val].type = CKA_PRIME; + a[*a_val].value = p.data; + a[*a_val].value_len = p.size; + (*a_val)++; - a[*a_val].type = CKA_PRIME; - a[*a_val].value = p.data; - a[*a_val].value_len = p.size; - (*a_val)++; + a[*a_val].type = CKA_SUBPRIME; + a[*a_val].value = q.data; + a[*a_val].value_len = q.size; + (*a_val)++; - a[*a_val].type = CKA_SUBPRIME; - a[*a_val].value = q.data; - a[*a_val].value_len = q.size; - (*a_val)++; + a[*a_val].type = CKA_BASE; + a[*a_val].value = g.data; + a[*a_val].value_len = g.size; + (*a_val)++; - a[*a_val].type = CKA_BASE; - a[*a_val].value = g.data; - a[*a_val].value_len = g.size; - (*a_val)++; + a[*a_val].type = CKA_VALUE; + a[*a_val].value = y.data; + a[*a_val].value_len = y.size; + (*a_val)++; + break; + } + case GNUTLS_PK_EC: { + gnutls_datum_t params, point; - a[*a_val].type = CKA_VALUE; - a[*a_val].value = y.data; - a[*a_val].value_len = y.size; - (*a_val)++; - break; + ret = gnutls_pubkey_export_ecc_x962(pubkey, ¶ms, &point); + if (ret < 0) { + gnutls_assert(); + return ret; } - case GNUTLS_PK_EC:{ - gnutls_datum_t params, point; - ret = - gnutls_pubkey_export_ecc_x962(pubkey, ¶ms, - &point); - if (ret < 0) { - gnutls_assert(); - return ret; - } + a[*a_val].type = CKA_EC_PARAMS; + a[*a_val].value = params.data; + a[*a_val].value_len = params.size; + (*a_val)++; - a[*a_val].type = CKA_EC_PARAMS; - a[*a_val].value = params.data; - a[*a_val].value_len = params.size; - (*a_val)++; + a[*a_val].type = CKA_EC_POINT; + a[*a_val].value = point.data; + a[*a_val].value_len = point.size; + (*a_val)++; + break; + } + case GNUTLS_PK_EDDSA_ED25519: { + gnutls_datum_t params, ecpoint; - a[*a_val].type = CKA_EC_POINT; - a[*a_val].value = point.data; - a[*a_val].value_len = point.size; - (*a_val)++; - break; + ret = _gnutls_x509_write_ecc_params(pubkey->params.curve, + ¶ms); + if (ret < 0) { + gnutls_assert(); + return ret; } - case GNUTLS_PK_EDDSA_ED25519:{ - gnutls_datum_t params, ecpoint; - - ret = - _gnutls_x509_write_ecc_params(pubkey->params.curve, - ¶ms); - if (ret < 0) { - gnutls_assert(); - return ret; - } - - a[*a_val].type = CKA_EC_PARAMS; - a[*a_val].value = params.data; - a[*a_val].value_len = params.size; - (*a_val)++; - ret = - _gnutls_x509_encode_string(ASN1_ETYPE_OCTET_STRING, - pubkey->params. - raw_pub.data, - pubkey->params. - raw_pub.size, &ecpoint); - if (ret < 0) { - gnutls_assert(); - return ret; - } + a[*a_val].type = CKA_EC_PARAMS; + a[*a_val].value = params.data; + a[*a_val].value_len = params.size; + (*a_val)++; - a[*a_val].type = CKA_EC_POINT; - a[*a_val].value = ecpoint.data; - a[*a_val].value_len = ecpoint.size; - (*a_val)++; - break; + ret = _gnutls_x509_encode_string(ASN1_ETYPE_OCTET_STRING, + pubkey->params.raw_pub.data, + pubkey->params.raw_pub.size, + &ecpoint); + if (ret < 0) { + gnutls_assert(); + return ret; } + a[*a_val].type = CKA_EC_POINT; + a[*a_val].value = ecpoint.data; + a[*a_val].value_len = ecpoint.size; + (*a_val)++; + break; + } + default: - _gnutls_debug_log - ("requested writing public key of unsupported type %u\n", - (unsigned)pk); + _gnutls_debug_log( + "requested writing public key of unsupported type %u\n", + (unsigned)pk); return gnutls_assert_val(GNUTLS_E_UNIMPLEMENTED_FEATURE); } @@ -426,11 +415,9 @@ static int add_pubkey(gnutls_pubkey_t pubkey, struct ck_attribute *a, * * Since: 3.4.6 **/ -int -gnutls_pkcs11_copy_pubkey(const char *token_url, - gnutls_pubkey_t pubkey, const char *label, - const gnutls_datum_t * cid, - unsigned int key_usage, unsigned int flags) +int gnutls_pkcs11_copy_pubkey(const char *token_url, gnutls_pubkey_t pubkey, + const char *label, const gnutls_datum_t *cid, + unsigned int key_usage, unsigned int flags) { int ret; struct p11_kit_uri *info = NULL; @@ -453,9 +440,9 @@ gnutls_pkcs11_copy_pubkey(const char *token_url, return ret; } - ret = - pkcs11_open_session(&sinfo, NULL, info, - SESSION_WRITE | pkcs11_obj_flags_to_int(flags)); + ret = pkcs11_open_session(&sinfo, NULL, info, + SESSION_WRITE | + pkcs11_obj_flags_to_int(flags)); p11_kit_uri_free(info); if (ret < 0) { @@ -550,11 +537,10 @@ gnutls_pkcs11_copy_pubkey(const char *token_url, ret = 0; - cleanup: +cleanup: clean_pubkey(a, a_val); pkcs11_close_session(&sinfo); return ret; - } /** @@ -575,11 +561,10 @@ gnutls_pkcs11_copy_pubkey(const char *token_url, * * Since: 3.3.8 **/ -int -gnutls_pkcs11_copy_attached_extension(const char *token_url, - gnutls_x509_crt_t crt, - gnutls_datum_t * data, - const char *label, unsigned int flags) +int gnutls_pkcs11_copy_attached_extension(const char *token_url, + gnutls_x509_crt_t crt, + gnutls_datum_t *data, + const char *label, unsigned int flags) { int ret; struct p11_kit_uri *info = NULL; @@ -599,9 +584,9 @@ gnutls_pkcs11_copy_attached_extension(const char *token_url, return ret; } - ret = - pkcs11_open_session(&sinfo, NULL, info, - SESSION_WRITE | pkcs11_obj_flags_to_int(flags)); + ret = pkcs11_open_session(&sinfo, NULL, info, + SESSION_WRITE | + pkcs11_obj_flags_to_int(flags)); p11_kit_uri_free(info); if (ret < 0) { @@ -649,11 +634,10 @@ gnutls_pkcs11_copy_attached_extension(const char *token_url, ret = 0; - cleanup: +cleanup: pkcs11_close_session(&sinfo); gnutls_free(spki.data); return ret; - } /** @@ -676,12 +660,11 @@ gnutls_pkcs11_copy_attached_extension(const char *token_url, * * Since: 3.4.0 **/ -int -gnutls_pkcs11_copy_x509_privkey2(const char *token_url, - gnutls_x509_privkey_t key, - const char *label, - const gnutls_datum_t * cid, - unsigned int key_usage, unsigned int flags) +int gnutls_pkcs11_copy_x509_privkey2(const char *token_url, + gnutls_x509_privkey_t key, + const char *label, + const gnutls_datum_t *cid, + unsigned int key_usage, unsigned int flags) { int ret; struct p11_kit_uri *info = NULL; @@ -718,9 +701,9 @@ gnutls_pkcs11_copy_x509_privkey2(const char *token_url, return ret; } - ret = - pkcs11_open_session(&sinfo, NULL, info, - SESSION_WRITE | pkcs11_obj_flags_to_int(flags)); + ret = pkcs11_open_session(&sinfo, NULL, info, + SESSION_WRITE | + pkcs11_obj_flags_to_int(flags)); p11_kit_uri_free(info); if (ret < 0) { @@ -768,8 +751,8 @@ gnutls_pkcs11_copy_x509_privkey2(const char *token_url, if (pk == GNUTLS_PK_RSA) { a[a_val].type = CKA_DECRYPT; if ((key_usage & - (GNUTLS_KEY_ENCIPHER_ONLY | GNUTLS_KEY_DECIPHER_ONLY)) - || (key_usage & GNUTLS_KEY_KEY_ENCIPHERMENT)) { + (GNUTLS_KEY_ENCIPHER_ONLY | GNUTLS_KEY_DECIPHER_ONLY)) || + (key_usage & GNUTLS_KEY_KEY_ENCIPHERMENT)) { a[a_val].value = (void *)&tval; a[a_val].value_len = sizeof(tval); } else { @@ -839,152 +822,140 @@ gnutls_pkcs11_copy_x509_privkey2(const char *token_url, switch (pk) { case GNUTLS_PK_RSA: - case GNUTLS_PK_RSA_PSS: - { - - ret = - _gnutls_params_get_rsa_raw(&key->params, &m, &e, &d, - &p, &q, &u, &exp1, &exp2, - GNUTLS_EXPORT_FLAG_NO_LZ); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } + case GNUTLS_PK_RSA_PSS: { + ret = _gnutls_params_get_rsa_raw(&key->params, &m, &e, &d, &p, + &q, &u, &exp1, &exp2, + GNUTLS_EXPORT_FLAG_NO_LZ); + if (ret < 0) { + gnutls_assert(); + goto cleanup; + } - type = CKK_RSA; + type = CKK_RSA; - a[a_val].type = CKA_MODULUS; - a[a_val].value = m.data; - a[a_val].value_len = m.size; - a_val++; + a[a_val].type = CKA_MODULUS; + a[a_val].value = m.data; + a[a_val].value_len = m.size; + a_val++; - a[a_val].type = CKA_PUBLIC_EXPONENT; - a[a_val].value = e.data; - a[a_val].value_len = e.size; - a_val++; + a[a_val].type = CKA_PUBLIC_EXPONENT; + a[a_val].value = e.data; + a[a_val].value_len = e.size; + a_val++; - a[a_val].type = CKA_PRIVATE_EXPONENT; - a[a_val].value = d.data; - a[a_val].value_len = d.size; - a_val++; + a[a_val].type = CKA_PRIVATE_EXPONENT; + a[a_val].value = d.data; + a[a_val].value_len = d.size; + a_val++; - a[a_val].type = CKA_PRIME_1; - a[a_val].value = p.data; - a[a_val].value_len = p.size; - a_val++; + a[a_val].type = CKA_PRIME_1; + a[a_val].value = p.data; + a[a_val].value_len = p.size; + a_val++; - a[a_val].type = CKA_PRIME_2; - a[a_val].value = q.data; - a[a_val].value_len = q.size; - a_val++; + a[a_val].type = CKA_PRIME_2; + a[a_val].value = q.data; + a[a_val].value_len = q.size; + a_val++; - a[a_val].type = CKA_COEFFICIENT; - a[a_val].value = u.data; - a[a_val].value_len = u.size; - a_val++; + a[a_val].type = CKA_COEFFICIENT; + a[a_val].value = u.data; + a[a_val].value_len = u.size; + a_val++; - a[a_val].type = CKA_EXPONENT_1; - a[a_val].value = exp1.data; - a[a_val].value_len = exp1.size; - a_val++; + a[a_val].type = CKA_EXPONENT_1; + a[a_val].value = exp1.data; + a[a_val].value_len = exp1.size; + a_val++; - a[a_val].type = CKA_EXPONENT_2; - a[a_val].value = exp2.data; - a[a_val].value_len = exp2.size; - a_val++; + a[a_val].type = CKA_EXPONENT_2; + a[a_val].value = exp2.data; + a[a_val].value_len = exp2.size; + a_val++; - break; + break; + } + case GNUTLS_PK_DSA: { + ret = _gnutls_params_get_dsa_raw(&key->params, &p, &q, &g, &y, + &x, GNUTLS_EXPORT_FLAG_NO_LZ); + if (ret < 0) { + gnutls_assert(); + goto cleanup; } - case GNUTLS_PK_DSA: - { - ret = - _gnutls_params_get_dsa_raw(&key->params, &p, &q, &g, - &y, &x, - GNUTLS_EXPORT_FLAG_NO_LZ); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } - type = CKK_DSA; + type = CKK_DSA; - a[a_val].type = CKA_PRIME; - a[a_val].value = p.data; - a[a_val].value_len = p.size; - a_val++; + a[a_val].type = CKA_PRIME; + a[a_val].value = p.data; + a[a_val].value_len = p.size; + a_val++; - a[a_val].type = CKA_SUBPRIME; - a[a_val].value = q.data; - a[a_val].value_len = q.size; - a_val++; + a[a_val].type = CKA_SUBPRIME; + a[a_val].value = q.data; + a[a_val].value_len = q.size; + a_val++; - a[a_val].type = CKA_BASE; - a[a_val].value = g.data; - a[a_val].value_len = g.size; - a_val++; + a[a_val].type = CKA_BASE; + a[a_val].value = g.data; + a[a_val].value_len = g.size; + a_val++; - a[a_val].type = CKA_VALUE; - a[a_val].value = x.data; - a[a_val].value_len = x.size; - a_val++; + a[a_val].type = CKA_VALUE; + a[a_val].value = x.data; + a[a_val].value_len = x.size; + a_val++; - break; + break; + } + case GNUTLS_PK_EC: { + ret = _gnutls_x509_write_ecc_params(key->params.curve, &p); + if (ret < 0) { + gnutls_assert(); + goto cleanup; } - case GNUTLS_PK_EC: - { - ret = - _gnutls_x509_write_ecc_params(key->params.curve, - &p); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } - ret = _gnutls_mpi_dprint(key->params.params[ECC_K], &x); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } + ret = _gnutls_mpi_dprint(key->params.params[ECC_K], &x); + if (ret < 0) { + gnutls_assert(); + goto cleanup; + } - type = CKK_ECDSA; + type = CKK_ECDSA; - a[a_val].type = CKA_EC_PARAMS; - a[a_val].value = p.data; - a[a_val].value_len = p.size; - a_val++; + a[a_val].type = CKA_EC_PARAMS; + a[a_val].value = p.data; + a[a_val].value_len = p.size; + a_val++; - a[a_val].type = CKA_VALUE; - a[a_val].value = x.data; - a[a_val].value_len = x.size; - a_val++; + a[a_val].type = CKA_VALUE; + a[a_val].value = x.data; + a[a_val].value_len = x.size; + a_val++; - break; - } + break; + } #ifdef HAVE_CKM_EDDSA - case GNUTLS_PK_EDDSA_ED25519: - { - ret = - _gnutls_x509_write_ecc_params(key->params.curve, - &p); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } + case GNUTLS_PK_EDDSA_ED25519: { + ret = _gnutls_x509_write_ecc_params(key->params.curve, &p); + if (ret < 0) { + gnutls_assert(); + goto cleanup; + } - type = CKK_EC_EDWARDS; + type = CKK_EC_EDWARDS; - a[a_val].type = CKA_EC_PARAMS; - a[a_val].value = p.data; - a[a_val].value_len = p.size; - a_val++; + a[a_val].type = CKA_EC_PARAMS; + a[a_val].value = p.data; + a[a_val].value_len = p.size; + a_val++; - a[a_val].type = CKA_VALUE; - a[a_val].value = key->params.raw_priv.data; - a[a_val].value_len = key->params.raw_priv.size; - a_val++; + a[a_val].type = CKA_VALUE; + a[a_val].value = key->params.raw_priv.data; + a[a_val].value_len = key->params.raw_priv.size; + a_val++; - break; - } + break; + } #endif default: gnutls_assert(); @@ -1007,37 +978,34 @@ gnutls_pkcs11_copy_x509_privkey2(const char *token_url, ret = 0; - cleanup: +cleanup: switch (pk) { case GNUTLS_PK_RSA_PSS: - case GNUTLS_PK_RSA: - { - gnutls_free(m.data); - gnutls_free(e.data); - gnutls_free(d.data); - gnutls_free(p.data); - gnutls_free(q.data); - gnutls_free(u.data); - gnutls_free(exp1.data); - gnutls_free(exp2.data); - break; - } - case GNUTLS_PK_DSA: - { - gnutls_free(p.data); - gnutls_free(q.data); - gnutls_free(g.data); - gnutls_free(y.data); - gnutls_free(x.data); - break; - } + case GNUTLS_PK_RSA: { + gnutls_free(m.data); + gnutls_free(e.data); + gnutls_free(d.data); + gnutls_free(p.data); + gnutls_free(q.data); + gnutls_free(u.data); + gnutls_free(exp1.data); + gnutls_free(exp2.data); + break; + } + case GNUTLS_PK_DSA: { + gnutls_free(p.data); + gnutls_free(q.data); + gnutls_free(g.data); + gnutls_free(y.data); + gnutls_free(x.data); + break; + } case GNUTLS_PK_EC: - case GNUTLS_PK_EDDSA_ED25519: - { - gnutls_free(p.data); - gnutls_free(x.data); - break; - } + case GNUTLS_PK_EDDSA_ED25519: { + gnutls_free(p.data); + gnutls_free(x.data); + break; + } default: gnutls_assert(); ret = GNUTLS_E_INVALID_REQUEST; @@ -1048,31 +1016,29 @@ gnutls_pkcs11_copy_x509_privkey2(const char *token_url, pkcs11_close_session(&sinfo); return ret; - } struct delete_data_st { struct p11_kit_uri *info; - unsigned int deleted; /* how many */ + unsigned int deleted; /* how many */ }; -static int -delete_obj_url_cb(struct ck_function_list *module, - struct pkcs11_session_info *sinfo, - struct ck_token_info *tinfo, struct ck_info *lib_info, - void *input) +static int delete_obj_url_cb(struct ck_function_list *module, + struct pkcs11_session_info *sinfo, + struct ck_token_info *tinfo, + struct ck_info *lib_info, void *input) { struct delete_data_st *find_data = input; struct ck_attribute a[4]; struct ck_attribute *attr; ck_object_class_t class; - ck_certificate_type_t type = (ck_certificate_type_t) - 1; + ck_certificate_type_t type = (ck_certificate_type_t)-1; ck_rv_t rv; ck_object_handle_t ctx; unsigned long count, a_vals; int found = 0, ret; - if (tinfo == NULL) { /* we don't support multiple calls */ + if (tinfo == NULL) { /* we don't support multiple calls */ gnutls_assert(); return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; } @@ -1086,13 +1052,13 @@ delete_obj_url_cb(struct ck_function_list *module, } /* Find objects with given class and type */ - class = CKO_CERTIFICATE; /* default */ + class = CKO_CERTIFICATE; /* default */ a_vals = 0; attr = p11_kit_uri_get_attribute(find_data->info, CKA_CLASS); if (attr != NULL) { if (attr->value && attr->value_len == sizeof(ck_object_class_t)) - class = *((ck_object_class_t *) attr->value); + class = *((ck_object_class_t *)attr->value); if (class == CKO_CERTIFICATE) type = CKC_X_509; @@ -1108,7 +1074,7 @@ delete_obj_url_cb(struct ck_function_list *module, a_vals++; } - if (type != (ck_certificate_type_t) - 1) { + if (type != (ck_certificate_type_t)-1) { a[a_vals].type = CKA_CERTIFICATE_TYPE; a[a_vals].value = &type; a[a_vals].value_len = sizeof type; @@ -1129,14 +1095,13 @@ delete_obj_url_cb(struct ck_function_list *module, goto cleanup; } - while (pkcs11_find_objects - (sinfo->module, sinfo->pks, &ctx, 1, &count) == CKR_OK - && count == 1) { + while (pkcs11_find_objects(sinfo->module, sinfo->pks, &ctx, 1, + &count) == CKR_OK && + count == 1) { rv = pkcs11_destroy_object(sinfo->module, sinfo->pks, ctx); if (rv != CKR_OK) { - _gnutls_debug_log - ("p11: Cannot destroy object: %s\n", - pkcs11_strerror(rv)); + _gnutls_debug_log("p11: Cannot destroy object: %s\n", + pkcs11_strerror(rv)); } else { find_data->deleted++; } @@ -1151,7 +1116,7 @@ delete_obj_url_cb(struct ck_function_list *module, ret = 0; } - cleanup: +cleanup: pkcs11_find_objects_final(sinfo); return ret; @@ -1185,11 +1150,9 @@ int gnutls_pkcs11_delete_url(const char *object_url, unsigned int flags) return ret; } - ret = - _pkcs11_traverse_tokens(delete_obj_url_cb, &find_data, - find_data.info, NULL, - SESSION_WRITE | - pkcs11_obj_flags_to_int(flags)); + ret = _pkcs11_traverse_tokens( + delete_obj_url_cb, &find_data, find_data.info, NULL, + SESSION_WRITE | pkcs11_obj_flags_to_int(flags)); p11_kit_uri_free(find_data.info); if (ret < 0) { @@ -1198,7 +1161,6 @@ int gnutls_pkcs11_delete_url(const char *object_url, unsigned int flags) } return find_data.deleted; - } /** @@ -1214,9 +1176,8 @@ int gnutls_pkcs11_delete_url(const char *object_url, unsigned int flags) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_pkcs11_token_init(const char *token_url, - const char *so_pin, const char *label) +int gnutls_pkcs11_token_init(const char *token_url, const char *so_pin, + const char *label) { int ret; struct p11_kit_uri *info = NULL; @@ -1246,8 +1207,8 @@ gnutls_pkcs11_token_init(const char *token_url, if (label != NULL) memcpy(flabel, label, strlen(label)); - rv = pkcs11_init_token(module, slot, (uint8_t *) so_pin, - strlen(so_pin), (uint8_t *) flabel); + rv = pkcs11_init_token(module, slot, (uint8_t *)so_pin, strlen(so_pin), + (uint8_t *)flabel); if (rv != CKR_OK) { gnutls_assert(); _gnutls_debug_log("p11: %s\n", pkcs11_strerror(rv)); @@ -1255,10 +1216,9 @@ gnutls_pkcs11_token_init(const char *token_url, } return 0; - } -#define L(x) ((x==NULL)?0:strlen(x)) +#define L(x) ((x == NULL) ? 0 : strlen(x)) /** * gnutls_pkcs11_token_set_pin: @@ -1276,10 +1236,8 @@ gnutls_pkcs11_token_init(const char *token_url, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_pkcs11_token_set_pin(const char *token_url, - const char *oldpin, - const char *newpin, unsigned int flags) +int gnutls_pkcs11_token_set_pin(const char *token_url, const char *oldpin, + const char *newpin, unsigned int flags) { int ret; struct p11_kit_uri *info = NULL; @@ -1311,8 +1269,8 @@ gnutls_pkcs11_token_set_pin(const char *token_url, if (oldpin == NULL && !(flags & GNUTLS_PIN_SO)) { /* This changes only the user PIN */ - rv = pkcs11_init_pin(sinfo.module, sinfo.pks, - (uint8_t *) newpin, strlen(newpin)); + rv = pkcs11_init_pin(sinfo.module, sinfo.pks, (uint8_t *)newpin, + strlen(newpin)); if (rv != CKR_OK) { gnutls_assert(); _gnutls_debug_log("p11: %s\n", pkcs11_strerror(rv)); @@ -1327,30 +1285,28 @@ gnutls_pkcs11_token_set_pin(const char *token_url, if (!(sinfo.tinfo.flags & CKF_PROTECTED_AUTHENTICATION_PATH)) { if (newpin == NULL) - return - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + return gnutls_assert_val( + GNUTLS_E_INVALID_REQUEST); if (oldpin == NULL) { struct pin_info_st pin_info; memset(&pin_info, 0, sizeof(pin_info)); - ret = - pkcs11_retrieve_pin(&pin_info, info, - &sinfo.tinfo, 0, CKU_SO, - &pin); + ret = pkcs11_retrieve_pin(&pin_info, info, + &sinfo.tinfo, 0, + CKU_SO, &pin); if (ret < 0) { gnutls_assert(); goto finish; } - oldpin = - (const char *)p11_kit_pin_get_value(pin, - NULL); + oldpin = (const char *)p11_kit_pin_get_value( + pin, NULL); oldpin_size = p11_kit_pin_get_length(pin); } } - rv = pkcs11_set_pin(sinfo.module, sinfo.pks, - oldpin, oldpin_size, newpin, L(newpin)); + rv = pkcs11_set_pin(sinfo.module, sinfo.pks, oldpin, + oldpin_size, newpin, L(newpin)); if (rv != CKR_OK) { gnutls_assert(); _gnutls_debug_log("p11: %s\n", pkcs11_strerror(rv)); @@ -1361,10 +1317,9 @@ gnutls_pkcs11_token_set_pin(const char *token_url, ret = 0; - finish: +finish: pkcs11_close_session(&sinfo); return ret; - } /** @@ -1380,8 +1335,8 @@ gnutls_pkcs11_token_set_pin(const char *token_url, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_pkcs11_token_get_random(const char *token_url, void *rnddata, size_t len) +int gnutls_pkcs11_token_get_random(const char *token_url, void *rnddata, + size_t len) { int ret; struct p11_kit_uri *info = NULL; @@ -1414,10 +1369,9 @@ gnutls_pkcs11_token_get_random(const char *token_url, void *rnddata, size_t len) ret = 0; - finish: +finish: pkcs11_close_session(&sinfo); return ret; - } #if 0 diff --git a/lib/pkcs11x.c b/lib/pkcs11x.c index 01aac1ddd4..71c75cf74d 100644 --- a/lib/pkcs11x.c +++ b/lib/pkcs11x.c @@ -40,7 +40,7 @@ struct find_ext_data_st { unsigned int exts_size; }; -static int override_ext(gnutls_x509_crt_t crt, gnutls_datum_t * ext) +static int override_ext(gnutls_x509_crt_t crt, gnutls_datum_t *ext) { gnutls_x509_ext_st parsed; int ret; @@ -50,16 +50,15 @@ static int override_ext(gnutls_x509_crt_t crt, gnutls_datum_t * ext) return gnutls_assert_val(ret); /* set the new extension */ - ret = - _gnutls_x509_crt_set_extension(crt, parsed.oid, &parsed.data, - parsed.critical); + ret = _gnutls_x509_crt_set_extension(crt, parsed.oid, &parsed.data, + parsed.critical); if (ret < 0) { gnutls_assert(); goto cleanup; } ret = 0; - cleanup: +cleanup: gnutls_x509_ext_deinit(&parsed); return ret; } @@ -68,7 +67,7 @@ static int override_ext(gnutls_x509_crt_t crt, gnutls_datum_t * ext) * That assumes that the certificate is not in the distrusted list. */ int pkcs11_override_cert_exts(struct pkcs11_session_info *sinfo, - gnutls_datum_t * spki, gnutls_datum_t * der) + gnutls_datum_t *spki, gnutls_datum_t *der) { int ret; gnutls_datum_t new_der = { NULL, 0 }; @@ -84,8 +83,8 @@ int pkcs11_override_cert_exts(struct pkcs11_session_info *sinfo, ck_object_handle_t obj; if (sinfo->trusted == 0) { - _gnutls_debug_log - ("p11: cannot override extensions on a non-p11-kit trust module\n"); + _gnutls_debug_log( + "p11: cannot override extensions on a non-p11-kit trust module\n"); return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); } @@ -102,8 +101,8 @@ int pkcs11_override_cert_exts(struct pkcs11_session_info *sinfo, rv = pkcs11_find_objects_init(sinfo->module, sinfo->pks, a, 2); if (rv != CKR_OK) { gnutls_assert(); - _gnutls_debug_log - ("p11: FindObjectsInit failed for cert extensions.\n"); + _gnutls_debug_log( + "p11: FindObjectsInit failed for cert extensions.\n"); ret = pkcs11_rv_to_err(rv); goto cleanup; } @@ -131,15 +130,15 @@ int pkcs11_override_cert_exts(struct pkcs11_session_info *sinfo, } do { - b[0].type = CKA_VALUE; b[0].value = ext_data; b[0].value_len = ext_data_size; - if (pkcs11_get_attribute_value - (sinfo->module, sinfo->pks, obj, b, 1) == CKR_OK) { - gnutls_datum_t data = - { b[0].value, b[0].value_len }; + if (pkcs11_get_attribute_value(sinfo->module, + sinfo->pks, obj, b, + 1) == CKR_OK) { + gnutls_datum_t data = { b[0].value, + b[0].value_len }; ret = override_ext(crt, &data); if (ret < 0) { @@ -147,13 +146,13 @@ int pkcs11_override_cert_exts(struct pkcs11_session_info *sinfo, goto cleanup; } } - } while (pkcs11_find_objects - (sinfo->module, sinfo->pks, &obj, 1, &count) == CKR_OK - && count == 1); + } while (pkcs11_find_objects(sinfo->module, sinfo->pks, &obj, 1, + &count) == CKR_OK && + count == 1); /* overwrite the old certificate with the new */ - ret = - gnutls_x509_crt_export2(crt, GNUTLS_X509_FMT_DER, &new_der); + ret = gnutls_x509_crt_export2(crt, GNUTLS_X509_FMT_DER, + &new_der); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -165,19 +164,19 @@ int pkcs11_override_cert_exts(struct pkcs11_session_info *sinfo, } ret = 0; - cleanup: +cleanup: if (crt != NULL) gnutls_x509_crt_deinit(crt); if (finalize != 0) pkcs11_find_objects_final(sinfo); gnutls_free(ext_data); return ret; - } -static int -find_ext_cb(struct ck_function_list *module, struct pkcs11_session_info *sinfo, - struct ck_token_info *tinfo, struct ck_info *lib_info, void *input) +static int find_ext_cb(struct ck_function_list *module, + struct pkcs11_session_info *sinfo, + struct ck_token_info *tinfo, struct ck_info *lib_info, + void *input) { struct find_ext_data_st *find_data = input; struct ck_attribute a[4]; @@ -188,15 +187,15 @@ find_ext_cb(struct ck_function_list *module, struct pkcs11_session_info *sinfo, int ret; gnutls_datum_t ext; - if (tinfo == NULL) { /* we don't support multiple calls */ + if (tinfo == NULL) { /* we don't support multiple calls */ gnutls_assert(); return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; } /* do not bother reading the token if basic fields do not match */ - if (!p11_kit_uri_match_token_info(find_data->obj->info, tinfo) - || !p11_kit_uri_match_module_info(find_data->obj->info, lib_info)) { + if (!p11_kit_uri_match_token_info(find_data->obj->info, tinfo) || + !p11_kit_uri_match_module_info(find_data->obj->info, lib_info)) { gnutls_assert(); return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; } @@ -214,35 +213,35 @@ find_ext_cb(struct ck_function_list *module, struct pkcs11_session_info *sinfo, rv = pkcs11_find_objects_init(sinfo->module, sinfo->pks, a, 2); if (rv != CKR_OK) { gnutls_assert(); - _gnutls_debug_log - ("p11: FindObjectsInit failed for cert extensions.\n"); + _gnutls_debug_log( + "p11: FindObjectsInit failed for cert extensions.\n"); return pkcs11_rv_to_err(rv); } - while (pkcs11_find_objects(sinfo->module, sinfo->pks, &obj, 1, &count) - == CKR_OK && count == 1) { + while (pkcs11_find_objects(sinfo->module, sinfo->pks, &obj, 1, + &count) == CKR_OK && + count == 1) { rv = pkcs11_get_attribute_avalue(sinfo->module, sinfo->pks, obj, CKA_VALUE, &ext); if (rv == CKR_OK) { - - if (unlikely(INT_ADD_OVERFLOW(find_data->exts_size, 1))) { + if (unlikely(INT_ADD_OVERFLOW(find_data->exts_size, + 1))) { ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); goto cleanup; } - find_data->exts = - _gnutls_reallocarray_fast(find_data->exts, - find_data->exts_size + 1, - sizeof(find_data->exts - [0])); + find_data->exts = _gnutls_reallocarray_fast( + find_data->exts, find_data->exts_size + 1, + sizeof(find_data->exts[0])); if (find_data->exts == NULL) { ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); goto cleanup; } - if (_gnutls_x509_decode_ext - (&ext, - &find_data->exts[find_data->exts_size]) == 0) { + if (_gnutls_x509_decode_ext( + &ext, + &find_data->exts[find_data->exts_size]) == + 0) { find_data->exts_size++; } gnutls_free(ext.data); @@ -250,7 +249,7 @@ find_ext_cb(struct ck_function_list *module, struct pkcs11_session_info *sinfo, } ret = 0; - cleanup: +cleanup: pkcs11_find_objects_final(sinfo); return ret; } @@ -273,10 +272,9 @@ find_ext_cb(struct ck_function_list *module, struct pkcs11_session_info *sinfo, * * Since: 3.3.8 **/ -int -gnutls_pkcs11_obj_get_exts(gnutls_pkcs11_obj_t obj, - gnutls_x509_ext_st ** exts, unsigned int *exts_size, - unsigned int flags) +int gnutls_pkcs11_obj_get_exts(gnutls_pkcs11_obj_t obj, + gnutls_x509_ext_st **exts, + unsigned int *exts_size, unsigned int flags) { int ret; gnutls_datum_t spki = { NULL, 0 }; @@ -288,8 +286,8 @@ gnutls_pkcs11_obj_get_exts(gnutls_pkcs11_obj_t obj, *exts_size = 0; - if (obj->type != GNUTLS_PKCS11_OBJ_X509_CRT - && obj->type != GNUTLS_PKCS11_OBJ_PUBKEY) + if (obj->type != GNUTLS_PKCS11_OBJ_X509_CRT && + obj->type != GNUTLS_PKCS11_OBJ_PUBKEY) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); if (obj->type == GNUTLS_PKCS11_OBJ_PUBKEY) { @@ -305,9 +303,9 @@ gnutls_pkcs11_obj_get_exts(gnutls_pkcs11_obj_t obj, find_data.spki.data = spki.data; find_data.spki.size = spki.size; find_data.obj = obj; - ret = - _pkcs11_traverse_tokens(find_ext_cb, &find_data, obj->info, - &obj->pin, pkcs11_obj_flags_to_int(flags)); + ret = _pkcs11_traverse_tokens(find_ext_cb, &find_data, obj->info, + &obj->pin, + pkcs11_obj_flags_to_int(flags)); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -317,7 +315,7 @@ gnutls_pkcs11_obj_get_exts(gnutls_pkcs11_obj_t obj, *exts_size = find_data.exts_size; ret = 0; - cleanup: +cleanup: if (deinit_spki) gnutls_free(spki.data); return ret; diff --git a/lib/pkcs11x.h b/lib/pkcs11x.h index 30e3b2a0fd..6fb10cb4cf 100644 --- a/lib/pkcs11x.h +++ b/lib/pkcs11x.h @@ -19,8 +19,8 @@ */ #ifndef GNUTLS_LIB_PKCS11X_H -# define GNUTLS_LIB_PKCS11X_H +#define GNUTLS_LIB_PKCS11X_H -# include +#include -#endif /* GNUTLS_LIB_PKCS11X_H */ +#endif /* GNUTLS_LIB_PKCS11X_H */ diff --git a/lib/prf.c b/lib/prf.c index 644dfaefb5..0c0dbf7715 100644 --- a/lib/prf.c +++ b/lib/prf.c @@ -67,11 +67,9 @@ * * Returns: %GNUTLS_E_SUCCESS on success, or an error code. **/ -int -gnutls_prf_raw(gnutls_session_t session, - size_t label_size, - const char *label, - size_t seed_size, const char *seed, size_t outsize, char *out) +int gnutls_prf_raw(gnutls_session_t session, size_t label_size, + const char *label, size_t seed_size, const char *seed, + size_t outsize, char *out) { int ret; const version_entry_st *vers = get_version(session); @@ -85,18 +83,17 @@ gnutls_prf_raw(gnutls_session_t session, ret = _gnutls_prf_raw(session->security_parameters.prf->id, GNUTLS_MASTER_SIZE, session->security_parameters.master_secret, - label_size, label, seed_size, (uint8_t *) seed, + label_size, label, seed_size, (uint8_t *)seed, outsize, out); return ret; } -static int -_tls13_derive_exporter(const mac_entry_st * prf, - gnutls_session_t session, - size_t label_size, const char *label, - size_t context_size, const char *context, - size_t outsize, char *out, bool early) +static int _tls13_derive_exporter(const mac_entry_st *prf, + gnutls_session_t session, size_t label_size, + const char *label, size_t context_size, + const char *context, size_t outsize, + char *out, bool early) { uint8_t secret[MAX_HASH_SIZE]; uint8_t digest[MAX_HASH_SIZE]; @@ -108,14 +105,14 @@ _tls13_derive_exporter(const mac_entry_st * prf, if (ret < 0) return gnutls_assert_val(ret); - ret = gnutls_hash_fast((gnutls_digest_algorithm_t) prf->id, - context, context_size, digest); + ret = gnutls_hash_fast((gnutls_digest_algorithm_t)prf->id, context, + context_size, digest); if (ret < 0) return gnutls_assert_val(ret); - return _tls13_expand_secret2(prf, - EXPORTER_LABEL, sizeof(EXPORTER_LABEL) - 1, - digest, digest_size, secret, outsize, out); + return _tls13_expand_secret2(prf, EXPORTER_LABEL, + sizeof(EXPORTER_LABEL) - 1, digest, + digest_size, secret, outsize, out); } /** @@ -155,11 +152,9 @@ _tls13_derive_exporter(const mac_entry_st * prf, * * Since: 3.4.4 **/ -int -gnutls_prf_rfc5705(gnutls_session_t session, - size_t label_size, const char *label, - size_t context_size, const char *context, - size_t outsize, char *out) +int gnutls_prf_rfc5705(gnutls_session_t session, size_t label_size, + const char *label, size_t context_size, + const char *context, size_t outsize, char *out) { const version_entry_st *vers = get_version(session); int ret; @@ -169,10 +164,9 @@ gnutls_prf_rfc5705(gnutls_session_t session, if (vers && vers->tls13_sem) { ret = _tls13_derive_exporter(session->security_parameters.prf, - session, - label_size, label, - context_size, context, - outsize, out, 0); + session, label_size, label, + context_size, context, outsize, + out, 0); } else { char *pctx = NULL; @@ -193,8 +187,8 @@ gnutls_prf_rfc5705(gnutls_session_t session, context_size += 2; } - ret = gnutls_prf(session, label_size, label, 0, - context_size, pctx, outsize, out); + ret = gnutls_prf(session, label_size, label, 0, context_size, + pctx, outsize, out); gnutls_free(pctx); } @@ -237,19 +231,17 @@ gnutls_prf_rfc5705(gnutls_session_t session, * * Since: 3.6.8 **/ -int -gnutls_prf_early(gnutls_session_t session, - size_t label_size, const char *label, - size_t context_size, const char *context, - size_t outsize, char *out) +int gnutls_prf_early(gnutls_session_t session, size_t label_size, + const char *label, size_t context_size, + const char *context, size_t outsize, char *out) { if (session->internals.initial_negotiation_completed || session->key.binders[0].prf == NULL) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); return _tls13_derive_exporter(session->key.binders[0].prf, session, - label_size, label, - context_size, context, outsize, out, 1); + label_size, label, context_size, context, + outsize, out, 1); } /** @@ -287,12 +279,9 @@ gnutls_prf_early(gnutls_session_t session, * * Returns: %GNUTLS_E_SUCCESS on success, or an error code. **/ -int -gnutls_prf(gnutls_session_t session, - size_t label_size, - const char *label, - int server_random_first, - size_t extra_size, const char *extra, size_t outsize, char *out) +int gnutls_prf(gnutls_session_t session, size_t label_size, const char *label, + int server_random_first, size_t extra_size, const char *extra, + size_t outsize, char *out) { int ret; uint8_t *seed; @@ -317,23 +306,25 @@ gnutls_prf(gnutls_session_t session, return GNUTLS_E_MEMORY_ERROR; } - memcpy(seed, server_random_first ? - session->security_parameters.server_random : - session->security_parameters.client_random, GNUTLS_RANDOM_SIZE); + memcpy(seed, + server_random_first ? + session->security_parameters.server_random : + session->security_parameters.client_random, + GNUTLS_RANDOM_SIZE); memcpy(seed + GNUTLS_RANDOM_SIZE, - server_random_first ? session->security_parameters. - client_random : session->security_parameters.server_random, + server_random_first ? + session->security_parameters.client_random : + session->security_parameters.server_random, GNUTLS_RANDOM_SIZE); if (extra && extra_size) { memcpy(seed + 2 * GNUTLS_RANDOM_SIZE, extra, extra_size); } - ret = - _gnutls_prf_raw(session->security_parameters.prf->id, - GNUTLS_MASTER_SIZE, - session->security_parameters.master_secret, - label_size, label, seedsize, seed, outsize, out); + ret = _gnutls_prf_raw(session->security_parameters.prf->id, + GNUTLS_MASTER_SIZE, + session->security_parameters.master_secret, + label_size, label, seedsize, seed, outsize, out); gnutls_free(seed); diff --git a/lib/priority.c b/lib/priority.c index 0455b87ee8..f5ac656e57 100644 --- a/lib/priority.c +++ b/lib/priority.c @@ -45,11 +45,13 @@ #define MAX_ELEMENTS GNUTLS_MAX_ALGORITHM_NUM -#define ENABLE_PROFILE(c, profile) do { \ - c->additional_verify_flags &= 0x00ffffff; \ - c->additional_verify_flags |= GNUTLS_PROFILE_TO_VFLAGS(profile); \ - c->level = _gnutls_profile_to_sec_level(profile); \ - } while(0) +#define ENABLE_PROFILE(c, profile) \ + do { \ + c->additional_verify_flags &= 0x00ffffff; \ + c->additional_verify_flags |= \ + GNUTLS_PROFILE_TO_VFLAGS(profile); \ + c->level = _gnutls_profile_to_sec_level(profile); \ + } while (0) /* This function is used by the test suite */ char *_gnutls_resolve_priorities(const char *priorities); @@ -62,13 +64,13 @@ char *_gnutls_resolve_priorities(const char *priorities); */ const char *_gnutls_default_priority_string = DEFAULT_PRIORITY_STRING; -static void prio_remove(priority_st * priority_list, unsigned int algo); -static void prio_add(priority_st * priority_list, unsigned int algo); +static void prio_remove(priority_st *priority_list, unsigned int algo); +static void prio_add(priority_st *priority_list, unsigned int algo); static void break_list(char *etag, char *broken_etag[MAX_ELEMENTS], int *size); -typedef void (bulk_rmadd_func) (priority_st * priority_list, const int *); +typedef void(bulk_rmadd_func)(priority_st *priority_list, const int *); -inline static void _set_priority(priority_st * st, const int *list) +inline static void _set_priority(priority_st *st, const int *list) { int num = 0, i; @@ -85,7 +87,7 @@ inline static void _set_priority(priority_st * st, const int *list) return; } -inline static void _add_priority(priority_st * st, const int *list) +inline static void _add_priority(priority_st *st, const int *list) { int num, i, j, init; @@ -111,12 +113,12 @@ inline static void _add_priority(priority_st * st, const int *list) return; } -static void _clear_priorities(priority_st * st, const int *list) +static void _clear_priorities(priority_st *st, const int *list) { memset(st, 0, sizeof(*st)); } -static void _clear_given_priorities(priority_st * st, const int *list) +static void _clear_given_priorities(priority_st *st, const int *list) { unsigned i; @@ -126,22 +128,16 @@ static void _clear_given_priorities(priority_st * st, const int *list) } static const int _supported_groups_dh[] = { - GNUTLS_GROUP_FFDHE2048, - GNUTLS_GROUP_FFDHE3072, - GNUTLS_GROUP_FFDHE4096, - GNUTLS_GROUP_FFDHE6144, - GNUTLS_GROUP_FFDHE8192, - 0 + GNUTLS_GROUP_FFDHE2048, GNUTLS_GROUP_FFDHE3072, GNUTLS_GROUP_FFDHE4096, + GNUTLS_GROUP_FFDHE6144, GNUTLS_GROUP_FFDHE8192, 0 }; -static const int _supported_groups_ecdh[] = { - GNUTLS_GROUP_SECP256R1, - GNUTLS_GROUP_SECP384R1, - GNUTLS_GROUP_SECP521R1, - GNUTLS_GROUP_X25519, /* RFC 8422 */ - GNUTLS_GROUP_X448, /* RFC 8422 */ - 0 -}; +static const int _supported_groups_ecdh[] = { GNUTLS_GROUP_SECP256R1, + GNUTLS_GROUP_SECP384R1, + GNUTLS_GROUP_SECP521R1, + GNUTLS_GROUP_X25519, /* RFC 8422 */ + GNUTLS_GROUP_X448, /* RFC 8422 */ + 0 }; static const int _supported_groups_gost[] = { #ifdef ENABLE_GOST @@ -157,126 +153,86 @@ static const int _supported_groups_gost[] = { }; static const int _supported_groups_normal[] = { - GNUTLS_GROUP_SECP256R1, - GNUTLS_GROUP_SECP384R1, - GNUTLS_GROUP_SECP521R1, - GNUTLS_GROUP_X25519, /* RFC 8422 */ - GNUTLS_GROUP_X448, /* RFC 8422 */ + GNUTLS_GROUP_SECP256R1, GNUTLS_GROUP_SECP384R1, GNUTLS_GROUP_SECP521R1, + GNUTLS_GROUP_X25519, /* RFC 8422 */ + GNUTLS_GROUP_X448, /* RFC 8422 */ /* These should stay last as our default behavior * is to send key shares for two top types (GNUTLS_KEY_SHARE_TOP2) * and we wouldn't want to have these sent by all clients * by default as they are quite expensive CPU-wise. */ - GNUTLS_GROUP_FFDHE2048, - GNUTLS_GROUP_FFDHE3072, - GNUTLS_GROUP_FFDHE4096, - GNUTLS_GROUP_FFDHE6144, - GNUTLS_GROUP_FFDHE8192, - 0 + GNUTLS_GROUP_FFDHE2048, GNUTLS_GROUP_FFDHE3072, GNUTLS_GROUP_FFDHE4096, + GNUTLS_GROUP_FFDHE6144, GNUTLS_GROUP_FFDHE8192, 0 }; static const int *supported_groups_normal = _supported_groups_normal; static const int _supported_groups_secure128[] = { - GNUTLS_GROUP_SECP256R1, - GNUTLS_GROUP_SECP384R1, - GNUTLS_GROUP_SECP521R1, - GNUTLS_GROUP_X25519, /* RFC 8422 */ - GNUTLS_GROUP_X448, /* RFC 8422 */ - GNUTLS_GROUP_FFDHE2048, - GNUTLS_GROUP_FFDHE3072, - GNUTLS_GROUP_FFDHE4096, - GNUTLS_GROUP_FFDHE6144, - GNUTLS_GROUP_FFDHE8192, - 0 + GNUTLS_GROUP_SECP256R1, GNUTLS_GROUP_SECP384R1, GNUTLS_GROUP_SECP521R1, + GNUTLS_GROUP_X25519, /* RFC 8422 */ + GNUTLS_GROUP_X448, /* RFC 8422 */ + GNUTLS_GROUP_FFDHE2048, GNUTLS_GROUP_FFDHE3072, GNUTLS_GROUP_FFDHE4096, + GNUTLS_GROUP_FFDHE6144, GNUTLS_GROUP_FFDHE8192, 0 }; static const int *supported_groups_secure128 = _supported_groups_secure128; -static const int _supported_groups_suiteb128[] = { - GNUTLS_GROUP_SECP256R1, - GNUTLS_GROUP_SECP384R1, - 0 -}; +static const int _supported_groups_suiteb128[] = { GNUTLS_GROUP_SECP256R1, + GNUTLS_GROUP_SECP384R1, 0 }; static const int *supported_groups_suiteb128 = _supported_groups_suiteb128; -static const int _supported_groups_suiteb192[] = { - GNUTLS_GROUP_SECP384R1, - 0 -}; +static const int _supported_groups_suiteb192[] = { GNUTLS_GROUP_SECP384R1, 0 }; static const int *supported_groups_suiteb192 = _supported_groups_suiteb192; -static const int _supported_groups_secure192[] = { - GNUTLS_GROUP_SECP384R1, - GNUTLS_GROUP_SECP521R1, - GNUTLS_GROUP_FFDHE8192, - 0 -}; +static const int _supported_groups_secure192[] = { GNUTLS_GROUP_SECP384R1, + GNUTLS_GROUP_SECP521R1, + GNUTLS_GROUP_FFDHE8192, 0 }; static const int *supported_groups_secure192 = _supported_groups_secure192; -static const int protocol_priority[] = { - GNUTLS_TLS1_3, - GNUTLS_TLS1_2, - GNUTLS_TLS1_1, - GNUTLS_TLS1_0, - GNUTLS_DTLS1_2, - GNUTLS_DTLS1_0, - 0 -}; +static const int protocol_priority[] = { GNUTLS_TLS1_3, + GNUTLS_TLS1_2, + GNUTLS_TLS1_1, + GNUTLS_TLS1_0, + GNUTLS_DTLS1_2, + GNUTLS_DTLS1_0, + 0 }; /* contains all the supported TLS protocols, intended to be used for eliminating them */ -static const int stream_protocol_priority[] = { - GNUTLS_TLS1_3, - GNUTLS_TLS1_2, - GNUTLS_TLS1_1, - GNUTLS_TLS1_0, - 0 -}; +static const int stream_protocol_priority[] = { GNUTLS_TLS1_3, GNUTLS_TLS1_2, + GNUTLS_TLS1_1, GNUTLS_TLS1_0, + 0 }; /* contains all the supported DTLS protocols, intended to be used for eliminating them */ -static const int dgram_protocol_priority[] = { - GNUTLS_DTLS1_2, - GNUTLS_DTLS1_0, - GNUTLS_DTLS0_9, - 0 -}; +static const int dgram_protocol_priority[] = { GNUTLS_DTLS1_2, GNUTLS_DTLS1_0, + GNUTLS_DTLS0_9, 0 }; -static const int dtls_protocol_priority[] = { - GNUTLS_DTLS1_2, - GNUTLS_DTLS1_0, - 0 -}; +static const int dtls_protocol_priority[] = { GNUTLS_DTLS1_2, GNUTLS_DTLS1_0, + 0 }; -static const int _protocol_priority_suiteb[] = { - GNUTLS_TLS1_2, - 0 -}; +static const int _protocol_priority_suiteb[] = { GNUTLS_TLS1_2, 0 }; static const int *protocol_priority_suiteb = _protocol_priority_suiteb; -static const int _kx_priority_performance[] = { - GNUTLS_KX_RSA, +static const int _kx_priority_performance[] = { GNUTLS_KX_RSA, #ifdef ENABLE_ECDHE - GNUTLS_KX_ECDHE_ECDSA, - GNUTLS_KX_ECDHE_RSA, + GNUTLS_KX_ECDHE_ECDSA, + GNUTLS_KX_ECDHE_RSA, #endif #ifdef ENABLE_DHE - GNUTLS_KX_DHE_RSA, + GNUTLS_KX_DHE_RSA, #endif - 0 -}; + 0 }; static const int *kx_priority_performance = _kx_priority_performance; static const int _kx_priority_pfs[] = { #ifdef ENABLE_ECDHE - GNUTLS_KX_ECDHE_ECDSA, - GNUTLS_KX_ECDHE_RSA, + GNUTLS_KX_ECDHE_ECDSA, GNUTLS_KX_ECDHE_RSA, #endif #ifdef ENABLE_DHE GNUTLS_KX_DHE_RSA, @@ -286,23 +242,19 @@ static const int _kx_priority_pfs[] = { static const int *kx_priority_pfs = _kx_priority_pfs; -static const int _kx_priority_suiteb[] = { - GNUTLS_KX_ECDHE_ECDSA, - 0 -}; +static const int _kx_priority_suiteb[] = { GNUTLS_KX_ECDHE_ECDSA, 0 }; static const int *kx_priority_suiteb = _kx_priority_suiteb; static const int _kx_priority_secure[] = { - /* The ciphersuites that offer forward secrecy take +/* The ciphersuites that offer forward secrecy take * precedence */ #ifdef ENABLE_ECDHE - GNUTLS_KX_ECDHE_ECDSA, - GNUTLS_KX_ECDHE_RSA, + GNUTLS_KX_ECDHE_ECDSA, GNUTLS_KX_ECDHE_RSA, #endif GNUTLS_KX_RSA, - /* KX-RSA is now ahead of DHE-RSA and DHE-DSS due to the compatibility +/* KX-RSA is now ahead of DHE-RSA and DHE-DSS due to the compatibility * issues the DHE ciphersuites have. That is, one cannot enforce a specific * security level without dropping the connection. */ @@ -326,25 +278,17 @@ static const int _kx_priority_gost[] = { static const int *kx_priority_gost = _kx_priority_gost; static const int _cipher_priority_performance_default[] = { - GNUTLS_CIPHER_AES_128_GCM, - GNUTLS_CIPHER_AES_256_GCM, - GNUTLS_CIPHER_CHACHA20_POLY1305, - GNUTLS_CIPHER_AES_128_CCM, - GNUTLS_CIPHER_AES_256_CCM, - GNUTLS_CIPHER_AES_128_CBC, - GNUTLS_CIPHER_AES_256_CBC, - 0 + GNUTLS_CIPHER_AES_128_GCM, GNUTLS_CIPHER_AES_256_GCM, + GNUTLS_CIPHER_CHACHA20_POLY1305, GNUTLS_CIPHER_AES_128_CCM, + GNUTLS_CIPHER_AES_256_CCM, GNUTLS_CIPHER_AES_128_CBC, + GNUTLS_CIPHER_AES_256_CBC, 0 }; static const int _cipher_priority_performance_no_aesni[] = { - GNUTLS_CIPHER_CHACHA20_POLY1305, - GNUTLS_CIPHER_AES_128_GCM, - GNUTLS_CIPHER_AES_256_GCM, - GNUTLS_CIPHER_AES_128_CCM, - GNUTLS_CIPHER_AES_256_CCM, - GNUTLS_CIPHER_AES_128_CBC, - GNUTLS_CIPHER_AES_256_CBC, - 0 + GNUTLS_CIPHER_CHACHA20_POLY1305, GNUTLS_CIPHER_AES_128_GCM, + GNUTLS_CIPHER_AES_256_GCM, GNUTLS_CIPHER_AES_128_CCM, + GNUTLS_CIPHER_AES_256_CCM, GNUTLS_CIPHER_AES_128_CBC, + GNUTLS_CIPHER_AES_256_CBC, 0 }; /* If GCM and AES acceleration is available then prefer @@ -353,17 +297,14 @@ static const int _cipher_priority_performance_no_aesni[] = { * proof). */ static const int _cipher_priority_normal_default[] = { - GNUTLS_CIPHER_AES_256_GCM, - GNUTLS_CIPHER_CHACHA20_POLY1305, + GNUTLS_CIPHER_AES_256_GCM, GNUTLS_CIPHER_CHACHA20_POLY1305, GNUTLS_CIPHER_AES_256_CCM, GNUTLS_CIPHER_AES_256_CBC, - GNUTLS_CIPHER_AES_128_GCM, - GNUTLS_CIPHER_AES_128_CCM, + GNUTLS_CIPHER_AES_128_GCM, GNUTLS_CIPHER_AES_128_CCM, - GNUTLS_CIPHER_AES_128_CBC, - 0 + GNUTLS_CIPHER_AES_128_CBC, 0 }; static const int cipher_priority_performance_fips[] = { @@ -378,51 +319,37 @@ static const int cipher_priority_performance_fips[] = { }; static const int cipher_priority_normal_fips[] = { - GNUTLS_CIPHER_AES_256_GCM, - GNUTLS_CIPHER_AES_256_CCM, + GNUTLS_CIPHER_AES_256_GCM, GNUTLS_CIPHER_AES_256_CCM, GNUTLS_CIPHER_AES_256_CBC, - GNUTLS_CIPHER_AES_128_GCM, - GNUTLS_CIPHER_AES_128_CBC, - GNUTLS_CIPHER_AES_128_CCM, - 0 + GNUTLS_CIPHER_AES_128_GCM, GNUTLS_CIPHER_AES_128_CBC, + GNUTLS_CIPHER_AES_128_CCM, 0 }; -static const int _cipher_priority_suiteb128[] = { - GNUTLS_CIPHER_AES_256_GCM, - GNUTLS_CIPHER_AES_128_GCM, - 0 -}; +static const int _cipher_priority_suiteb128[] = { GNUTLS_CIPHER_AES_256_GCM, + GNUTLS_CIPHER_AES_128_GCM, + 0 }; static const int *cipher_priority_suiteb128 = _cipher_priority_suiteb128; -static const int _cipher_priority_suiteb192[] = { - GNUTLS_CIPHER_AES_256_GCM, - 0 -}; +static const int _cipher_priority_suiteb192[] = { GNUTLS_CIPHER_AES_256_GCM, + 0 }; static const int *cipher_priority_suiteb192 = _cipher_priority_suiteb192; static const int _cipher_priority_secure128[] = { - GNUTLS_CIPHER_AES_256_GCM, - GNUTLS_CIPHER_CHACHA20_POLY1305, - GNUTLS_CIPHER_AES_256_CBC, - GNUTLS_CIPHER_AES_256_CCM, + GNUTLS_CIPHER_AES_256_GCM, GNUTLS_CIPHER_CHACHA20_POLY1305, + GNUTLS_CIPHER_AES_256_CBC, GNUTLS_CIPHER_AES_256_CCM, - GNUTLS_CIPHER_AES_128_GCM, - GNUTLS_CIPHER_AES_128_CBC, - GNUTLS_CIPHER_AES_128_CCM, - 0 + GNUTLS_CIPHER_AES_128_GCM, GNUTLS_CIPHER_AES_128_CBC, + GNUTLS_CIPHER_AES_128_CCM, 0 }; static const int *cipher_priority_secure128 = _cipher_priority_secure128; static const int _cipher_priority_secure192[] = { - GNUTLS_CIPHER_AES_256_GCM, - GNUTLS_CIPHER_CHACHA20_POLY1305, - GNUTLS_CIPHER_AES_256_CBC, - GNUTLS_CIPHER_AES_256_CCM, - 0 + GNUTLS_CIPHER_AES_256_GCM, GNUTLS_CIPHER_CHACHA20_POLY1305, + GNUTLS_CIPHER_AES_256_CBC, GNUTLS_CIPHER_AES_256_CCM, 0 }; static const int *cipher_priority_secure192 = _cipher_priority_secure192; @@ -460,19 +387,14 @@ static const int _sign_priority_default[] = { static const int *sign_priority_default = _sign_priority_default; static const int _sign_priority_suiteb128[] = { - GNUTLS_SIGN_ECDSA_SHA256, - GNUTLS_SIGN_ECDSA_SECP256R1_SHA256, - GNUTLS_SIGN_ECDSA_SHA384, - GNUTLS_SIGN_ECDSA_SECP384R1_SHA384, - 0 + GNUTLS_SIGN_ECDSA_SHA256, GNUTLS_SIGN_ECDSA_SECP256R1_SHA256, + GNUTLS_SIGN_ECDSA_SHA384, GNUTLS_SIGN_ECDSA_SECP384R1_SHA384, 0 }; static const int *sign_priority_suiteb128 = _sign_priority_suiteb128; static const int _sign_priority_suiteb192[] = { - GNUTLS_SIGN_ECDSA_SHA384, - GNUTLS_SIGN_ECDSA_SECP384R1_SHA384, - 0 + GNUTLS_SIGN_ECDSA_SHA384, GNUTLS_SIGN_ECDSA_SECP384R1_SHA384, 0 }; static const int *sign_priority_suiteb192 = _sign_priority_suiteb192; @@ -525,28 +447,21 @@ static const int *sign_priority_secure192 = _sign_priority_secure192; static const int _sign_priority_gost[] = { #ifdef ENABLE_GOST - GNUTLS_SIGN_GOST_256, - GNUTLS_SIGN_GOST_512, + GNUTLS_SIGN_GOST_256, GNUTLS_SIGN_GOST_512, #endif 0 }; static const int *sign_priority_gost = _sign_priority_gost; -static const int mac_priority_normal_default[] = { - GNUTLS_MAC_SHA1, - GNUTLS_MAC_AEAD, - 0 -}; +static const int mac_priority_normal_default[] = { GNUTLS_MAC_SHA1, + GNUTLS_MAC_AEAD, 0 }; -static const int mac_priority_normal_fips[] = { - GNUTLS_MAC_SHA1, - GNUTLS_MAC_AEAD, - 0 -}; +static const int mac_priority_normal_fips[] = { GNUTLS_MAC_SHA1, + GNUTLS_MAC_AEAD, 0 }; static const int *cipher_priority_performance = - _cipher_priority_performance_default; + _cipher_priority_performance_default; static const int *cipher_priority_normal = _cipher_priority_normal_default; static const int *mac_priority_normal = mac_priority_normal_default; @@ -582,46 +497,31 @@ void _gnutls_priority_update_non_aesni(void) * prefer fast stream ciphers */ if (_gnutls_fips_mode_enabled() == 0) { cipher_priority_performance = - _cipher_priority_performance_no_aesni; + _cipher_priority_performance_no_aesni; } } -static const int _mac_priority_suiteb[] = { - GNUTLS_MAC_AEAD, - 0 -}; +static const int _mac_priority_suiteb[] = { GNUTLS_MAC_AEAD, 0 }; static const int *mac_priority_suiteb = _mac_priority_suiteb; -static const int _mac_priority_secure128[] = { - GNUTLS_MAC_SHA1, - GNUTLS_MAC_AEAD, - 0 -}; +static const int _mac_priority_secure128[] = { GNUTLS_MAC_SHA1, GNUTLS_MAC_AEAD, + 0 }; static const int *mac_priority_secure128 = _mac_priority_secure128; -static const int _mac_priority_secure192[] = { - GNUTLS_MAC_AEAD, - 0 -}; +static const int _mac_priority_secure192[] = { GNUTLS_MAC_AEAD, 0 }; static const int *mac_priority_secure192 = _mac_priority_secure192; -static const int cert_type_priority_default[] = { - GNUTLS_CRT_X509, - 0 -}; +static const int cert_type_priority_default[] = { GNUTLS_CRT_X509, 0 }; -static const int cert_type_priority_all[] = { - GNUTLS_CRT_X509, - GNUTLS_CRT_RAWPK, - 0 -}; +static const int cert_type_priority_all[] = { GNUTLS_CRT_X509, GNUTLS_CRT_RAWPK, + 0 }; -typedef void (rmadd_func) (priority_st * priority_list, unsigned int alg); +typedef void(rmadd_func)(priority_st *priority_list, unsigned int alg); -static void prio_remove(priority_st * priority_list, unsigned int algo) +static void prio_remove(priority_st *priority_list, unsigned int algo) { unsigned int i; @@ -632,10 +532,10 @@ static void prio_remove(priority_st * priority_list, unsigned int algo) memmove(&priority_list->priorities[i], &priority_list->priorities[i + 1], (priority_list->num_priorities - - i) * - sizeof(priority_list->priorities[0])); - priority_list->priorities[priority_list-> - num_priorities] = 0; + i) * sizeof(priority_list + ->priorities[0])); + priority_list + ->priorities[priority_list->num_priorities] = 0; break; } } @@ -643,16 +543,16 @@ static void prio_remove(priority_st * priority_list, unsigned int algo) return; } -static void prio_add(priority_st * priority_list, unsigned int algo) +static void prio_add(priority_st *priority_list, unsigned int algo) { unsigned int i, l = priority_list->num_priorities; if (l >= MAX_ALGOS) - return; /* can't add it anyway */ + return; /* can't add it anyway */ for (i = 0; i < l; ++i) { if (algo == priority_list->priorities[i]) - return; /* if it exists */ + return; /* if it exists */ } priority_list->priorities[l] = algo; @@ -688,9 +588,8 @@ int gnutls_priority_set(gnutls_session_t session, gnutls_priority_t priority) * negotiated version. */ if (!session->internals.handshake_in_progress && !session->internals.initial_negotiation_completed) { - ret = _gnutls_set_current_version(session, - priority-> - protocol.priorities[0]); + ret = _gnutls_set_current_version( + session, priority->protocol.priorities[0]); if (ret < 0) return gnutls_assert_val(ret); } @@ -760,95 +659,99 @@ struct priority_groups_st { }; static const struct priority_groups_st pgroups[] = { - {.name = LEVEL_NORMAL, - .cipher_list = &cipher_priority_normal, - .mac_list = &mac_priority_normal, - .kx_list = &kx_priority_secure, - .sign_list = &sign_priority_default, - .group_list = &supported_groups_normal, - .profile = GNUTLS_PROFILE_LOW, - .sec_param = GNUTLS_SEC_PARAM_WEAK}, - {.name = LEVEL_PFS, - .cipher_list = &cipher_priority_normal, - .mac_list = &mac_priority_secure128, - .kx_list = &kx_priority_pfs, - .sign_list = &sign_priority_default, - .group_list = &supported_groups_normal, - .profile = GNUTLS_PROFILE_LOW, - .sec_param = GNUTLS_SEC_PARAM_WEAK, - .no_tickets_tls12 = 1}, - {.name = LEVEL_SECURE128, - .alias = "SECURE", - .cipher_list = &cipher_priority_secure128, - .mac_list = &mac_priority_secure128, - .kx_list = &kx_priority_secure, - .sign_list = &sign_priority_secure128, - .group_list = &supported_groups_secure128, - /* The profile should have been HIGH but if we don't allow + { .name = LEVEL_NORMAL, + .cipher_list = &cipher_priority_normal, + .mac_list = &mac_priority_normal, + .kx_list = &kx_priority_secure, + .sign_list = &sign_priority_default, + .group_list = &supported_groups_normal, + .profile = GNUTLS_PROFILE_LOW, + .sec_param = GNUTLS_SEC_PARAM_WEAK }, + { .name = LEVEL_PFS, + .cipher_list = &cipher_priority_normal, + .mac_list = &mac_priority_secure128, + .kx_list = &kx_priority_pfs, + .sign_list = &sign_priority_default, + .group_list = &supported_groups_normal, + .profile = GNUTLS_PROFILE_LOW, + .sec_param = GNUTLS_SEC_PARAM_WEAK, + .no_tickets_tls12 = 1 }, + { .name = LEVEL_SECURE128, + .alias = "SECURE", + .cipher_list = &cipher_priority_secure128, + .mac_list = &mac_priority_secure128, + .kx_list = &kx_priority_secure, + .sign_list = &sign_priority_secure128, + .group_list = &supported_groups_secure128, + /* The profile should have been HIGH but if we don't allow * SHA-1 (80-bits) as signature algorithm we are not able * to connect anywhere with this level */ - .profile = GNUTLS_PROFILE_LOW, - .sec_param = GNUTLS_SEC_PARAM_LOW}, - {.name = LEVEL_SECURE192, - .alias = LEVEL_SECURE256, - .cipher_list = &cipher_priority_secure192, - .mac_list = &mac_priority_secure192, - .kx_list = &kx_priority_secure, - .sign_list = &sign_priority_secure192, - .group_list = &supported_groups_secure192, - .profile = GNUTLS_PROFILE_HIGH, - .sec_param = GNUTLS_SEC_PARAM_HIGH}, - {.name = LEVEL_SUITEB128, - .proto_list = &protocol_priority_suiteb, - .cipher_list = &cipher_priority_suiteb128, - .mac_list = &mac_priority_suiteb, - .kx_list = &kx_priority_suiteb, - .sign_list = &sign_priority_suiteb128, - .group_list = &supported_groups_suiteb128, - .profile = GNUTLS_PROFILE_SUITEB128, - .sec_param = GNUTLS_SEC_PARAM_HIGH}, - {.name = LEVEL_SUITEB192, - .proto_list = &protocol_priority_suiteb, - .cipher_list = &cipher_priority_suiteb192, - .mac_list = &mac_priority_suiteb, - .kx_list = &kx_priority_suiteb, - .sign_list = &sign_priority_suiteb192, - .group_list = &supported_groups_suiteb192, - .profile = GNUTLS_PROFILE_SUITEB192, - .sec_param = GNUTLS_SEC_PARAM_ULTRA}, - {.name = LEVEL_LEGACY, - .cipher_list = &cipher_priority_normal, - .mac_list = &mac_priority_normal, - .kx_list = &kx_priority_secure, - .sign_list = &sign_priority_default, - .group_list = &supported_groups_normal, - .sec_param = GNUTLS_SEC_PARAM_VERY_WEAK}, - {.name = LEVEL_PERFORMANCE, - .cipher_list = &cipher_priority_performance, - .mac_list = &mac_priority_normal, - .kx_list = &kx_priority_performance, - .sign_list = &sign_priority_default, - .group_list = &supported_groups_normal, - .profile = GNUTLS_PROFILE_LOW, - .sec_param = GNUTLS_SEC_PARAM_WEAK}, + .profile = GNUTLS_PROFILE_LOW, + .sec_param = GNUTLS_SEC_PARAM_LOW }, + { .name = LEVEL_SECURE192, + .alias = LEVEL_SECURE256, + .cipher_list = &cipher_priority_secure192, + .mac_list = &mac_priority_secure192, + .kx_list = &kx_priority_secure, + .sign_list = &sign_priority_secure192, + .group_list = &supported_groups_secure192, + .profile = GNUTLS_PROFILE_HIGH, + .sec_param = GNUTLS_SEC_PARAM_HIGH }, + { .name = LEVEL_SUITEB128, + .proto_list = &protocol_priority_suiteb, + .cipher_list = &cipher_priority_suiteb128, + .mac_list = &mac_priority_suiteb, + .kx_list = &kx_priority_suiteb, + .sign_list = &sign_priority_suiteb128, + .group_list = &supported_groups_suiteb128, + .profile = GNUTLS_PROFILE_SUITEB128, + .sec_param = GNUTLS_SEC_PARAM_HIGH }, + { .name = LEVEL_SUITEB192, + .proto_list = &protocol_priority_suiteb, + .cipher_list = &cipher_priority_suiteb192, + .mac_list = &mac_priority_suiteb, + .kx_list = &kx_priority_suiteb, + .sign_list = &sign_priority_suiteb192, + .group_list = &supported_groups_suiteb192, + .profile = GNUTLS_PROFILE_SUITEB192, + .sec_param = GNUTLS_SEC_PARAM_ULTRA }, + { .name = LEVEL_LEGACY, + .cipher_list = &cipher_priority_normal, + .mac_list = &mac_priority_normal, + .kx_list = &kx_priority_secure, + .sign_list = &sign_priority_default, + .group_list = &supported_groups_normal, + .sec_param = GNUTLS_SEC_PARAM_VERY_WEAK }, + { .name = LEVEL_PERFORMANCE, + .cipher_list = &cipher_priority_performance, + .mac_list = &mac_priority_normal, + .kx_list = &kx_priority_performance, + .sign_list = &sign_priority_default, + .group_list = &supported_groups_normal, + .profile = GNUTLS_PROFILE_LOW, + .sec_param = GNUTLS_SEC_PARAM_WEAK }, { - .name = NULL, - } + .name = NULL, + } }; -#define SET_PROFILE(to_set) \ - profile = GNUTLS_VFLAGS_TO_PROFILE(priority_cache->additional_verify_flags); \ - if (profile == 0 || profile > to_set) { \ - priority_cache->additional_verify_flags &= ~GNUTLS_VFLAGS_PROFILE_MASK; \ - priority_cache->additional_verify_flags |= GNUTLS_PROFILE_TO_VFLAGS(to_set); \ +#define SET_PROFILE(to_set) \ + profile = GNUTLS_VFLAGS_TO_PROFILE( \ + priority_cache->additional_verify_flags); \ + if (profile == 0 || profile > to_set) { \ + priority_cache->additional_verify_flags &= \ + ~GNUTLS_VFLAGS_PROFILE_MASK; \ + priority_cache->additional_verify_flags |= \ + GNUTLS_PROFILE_TO_VFLAGS(to_set); \ } -#define SET_LEVEL(to_set) \ - if (priority_cache->level == 0 || (unsigned)priority_cache->level > (unsigned)to_set) \ - priority_cache->level = to_set +#define SET_LEVEL(to_set) \ + if (priority_cache->level == 0 || \ + (unsigned)priority_cache->level > (unsigned)to_set) \ + priority_cache->level = to_set -static -int check_level(const char *level, gnutls_priority_t priority_cache, int add) +static int check_level(const char *level, gnutls_priority_t priority_cache, + int add) { bulk_rmadd_func *func; unsigned profile = 0; @@ -866,8 +769,8 @@ int check_level(const char *level, gnutls_priority_t priority_cache, int add) return 0; if (c_strcasecmp(level, pgroups[i].name) == 0 || - (pgroups[i].alias != NULL - && c_strcasecmp(level, pgroups[i].alias) == 0)) { + (pgroups[i].alias != NULL && + c_strcasecmp(level, pgroups[i].alias) == 0)) { if (pgroups[i].proto_list != NULL) func(&priority_cache->protocol, *pgroups[i].proto_list); @@ -880,21 +783,21 @@ int check_level(const char *level, gnutls_priority_t priority_cache, int add) *pgroups[i].group_list); if (pgroups[i].profile != 0) { - SET_PROFILE(pgroups[i].profile); /* set certificate level */ + SET_PROFILE( + pgroups[i].profile); /* set certificate level */ } - SET_LEVEL(pgroups[i].sec_param); /* set DH params level */ + SET_LEVEL( + pgroups[i].sec_param); /* set DH params level */ priority_cache->no_tickets = pgroups[i].no_tickets; priority_cache->no_tickets_tls12 = - pgroups[i].no_tickets_tls12; + pgroups[i].no_tickets_tls12; if (priority_cache->have_cbc == 0) { for (j = 0; (*pgroups[i].cipher_list)[j] != 0; j++) { - centry = - cipher_to_entry((*pgroups - [i].cipher_list) - [j]); - if (centry != NULL - && centry->type == CIPHER_BLOCK) { + centry = cipher_to_entry( + (*pgroups[i].cipher_list)[j]); + if (centry != NULL && + centry->type == CIPHER_BLOCK) { priority_cache->have_cbc = 1; break; } @@ -1018,7 +921,6 @@ static void enable_profile_suiteb192(gnutls_priority_t c) static void enable_safe_renegotiation(gnutls_priority_t c) { c->sr = SR_SAFE; - } static void enable_unsafe_renegotiation(gnutls_priority_t c) @@ -1257,8 +1159,8 @@ static inline int /* allowlisting-only */ _cfg_sigs_remark(struct cfg *cfg) } } for (i = 0; cfg->sigs_for_cert[i] != 0; i++) { - int ret = _gnutls_sign_set_secure(cfg->sigs_for_cert[i], - _SECURE); + int ret = + _gnutls_sign_set_secure(cfg->sigs_for_cert[i], _SECURE); if (unlikely(ret < 0)) { return gnutls_assert_val(ret); } @@ -1281,8 +1183,8 @@ static inline int /* allowlisting-only */ _cfg_versions_remark(struct cfg *cfg) } /* global side-effect! modifies `supported` in `ecc_curves[]` */ -static inline int /* allowlisting-only */ _cfg_ecc_curves_remark(struct cfg - *cfg) +static inline int /* allowlisting-only */ +_cfg_ecc_curves_remark(struct cfg *cfg) { size_t i; _gnutls_ecc_curve_mark_disabled_all(); @@ -1299,29 +1201,24 @@ static inline int /* allowlisting-only */ _cfg_ecc_curves_remark(struct cfg * setting arrays of struct cfg: from other arrays */ -static inline int /* allowlisting-only */ cfg_hashes_set_array(struct cfg *cfg, - gnutls_digest_algorithm_t - * src, - size_t len) +static inline int /* allowlisting-only */ +cfg_hashes_set_array(struct cfg *cfg, gnutls_digest_algorithm_t *src, + size_t len) { if (unlikely(len >= MAX_ALGOS)) { return gnutls_assert_val(GNUTLS_A_INTERNAL_ERROR); } if (len) { - memcpy(cfg->hashes, - src, sizeof(gnutls_digest_algorithm_t) * len); + memcpy(cfg->hashes, src, + sizeof(gnutls_digest_algorithm_t) * len); } cfg->hashes[len] = 0; return _cfg_hashes_remark(cfg); } -static inline int /* allowlisting-only */ cfg_sigs_set_arrays(struct cfg *cfg, - gnutls_sign_algorithm_t - * src, size_t len, - gnutls_sign_algorithm_t - * src_for_cert, - size_t - len_for_cert) +static inline int /* allowlisting-only */ +cfg_sigs_set_arrays(struct cfg *cfg, gnutls_sign_algorithm_t *src, size_t len, + gnutls_sign_algorithm_t *src_for_cert, size_t len_for_cert) { if (unlikely(len >= MAX_ALGOS)) { return gnutls_assert_val(GNUTLS_A_INTERNAL_ERROR); @@ -1341,11 +1238,8 @@ static inline int /* allowlisting-only */ cfg_sigs_set_arrays(struct cfg *cfg, return _cfg_sigs_remark(cfg); } -static inline int /* allowlisting-only */ cfg_versions_set_array(struct cfg - *cfg, - gnutls_protocol_t - * src, - size_t len) +static inline int /* allowlisting-only */ +cfg_versions_set_array(struct cfg *cfg, gnutls_protocol_t *src, size_t len) { if (unlikely(len >= MAX_ALGOS)) { return gnutls_assert_val(GNUTLS_A_INTERNAL_ERROR); @@ -1357,11 +1251,8 @@ static inline int /* allowlisting-only */ cfg_versions_set_array(struct cfg return _cfg_versions_remark(cfg); } -static inline int /* allowlisting-only */ cfg_ecc_curves_set_array(struct cfg - *cfg, - gnutls_ecc_curve_t - * src, - size_t len) +static inline int /* allowlisting-only */ +cfg_ecc_curves_set_array(struct cfg *cfg, gnutls_ecc_curve_t *src, size_t len) { if (unlikely(len >= MAX_ALGOS)) { return gnutls_assert_val(GNUTLS_A_INTERNAL_ERROR); @@ -1383,24 +1274,23 @@ static inline int /* allowlisting-only */ cfg_ecc_curves_set_array(struct cfg * (hacky, every call is +4 lines, needs a portable static assert) * 3. macro whole functions, not just this operation (harder to find/read) */ -#define APPEND_TO_NULL_TERMINATED_ARRAY(dst, element) \ - do { \ - size_t i; \ - for (i = 0; dst[i] != 0; i++) { \ - if (dst[i] == element) { \ - return 0; \ - } \ - } \ - if (unlikely(i >= MAX_ALGOS)) { \ +#define APPEND_TO_NULL_TERMINATED_ARRAY(dst, element) \ + do { \ + size_t i; \ + for (i = 0; dst[i] != 0; i++) { \ + if (dst[i] == element) { \ + return 0; \ + } \ + } \ + if (unlikely(i >= MAX_ALGOS)) { \ return gnutls_assert_val(GNUTLS_A_INTERNAL_ERROR); \ - } \ - dst[i] = element; \ - dst[i + 1] = 0; \ + } \ + dst[i] = element; \ + dst[i + 1] = 0; \ } while (0) -static inline int /* allowlisting-only */ cfg_hashes_add(struct cfg *cfg, - gnutls_digest_algorithm_t - dig) +static inline int /* allowlisting-only */ +cfg_hashes_add(struct cfg *cfg, gnutls_digest_algorithm_t dig) { _gnutls_debug_log("cfg: enabling digest algorithm %s\n", gnutls_digest_get_name(dig)); @@ -1408,31 +1298,30 @@ static inline int /* allowlisting-only */ cfg_hashes_add(struct cfg *cfg, return _cfg_hashes_remark(cfg); } -static inline int /* allowlisting-only */ cfg_sigs_add(struct cfg *cfg, - gnutls_sign_algorithm_t - sig) +static inline int /* allowlisting-only */ +cfg_sigs_add(struct cfg *cfg, gnutls_sign_algorithm_t sig) { _gnutls_debug_log("cfg: enabling signature algorithm " "(for non-certificate usage) " - "%s\n", gnutls_sign_get_name(sig)); + "%s\n", + gnutls_sign_get_name(sig)); APPEND_TO_NULL_TERMINATED_ARRAY(cfg->sigs, sig); return _cfg_sigs_remark(cfg); } -static inline int /* allowlisting-only */ cfg_sigs_for_cert_add(struct cfg *cfg, - gnutls_sign_algorithm_t - sig) +static inline int /* allowlisting-only */ +cfg_sigs_for_cert_add(struct cfg *cfg, gnutls_sign_algorithm_t sig) { _gnutls_debug_log("cfg: enabling signature algorithm" "(for certificate usage) " - "%s\n", gnutls_sign_get_name(sig)); + "%s\n", + gnutls_sign_get_name(sig)); APPEND_TO_NULL_TERMINATED_ARRAY(cfg->sigs_for_cert, sig); return _cfg_sigs_remark(cfg); } -static inline int /* allowlisting-only */ cfg_versions_add(struct cfg *cfg, - gnutls_protocol_t - prot) +static inline int /* allowlisting-only */ +cfg_versions_add(struct cfg *cfg, gnutls_protocol_t prot) { _gnutls_debug_log("cfg: enabling version %s\n", gnutls_protocol_get_name(prot)); @@ -1440,9 +1329,8 @@ static inline int /* allowlisting-only */ cfg_versions_add(struct cfg *cfg, return _cfg_versions_remark(cfg); } -static inline int /* allowlisting-only */ cfg_ecc_curves_add(struct cfg *cfg, - gnutls_ecc_curve_t - curve) +static inline int /* allowlisting-only */ +cfg_ecc_curves_add(struct cfg *cfg, gnutls_ecc_curve_t curve) { _gnutls_debug_log("cfg: enabling curve %s\n", gnutls_ecc_curve_get_name(curve)); @@ -1457,21 +1345,20 @@ static inline int /* allowlisting-only */ cfg_ecc_curves_add(struct cfg *cfg, */ /* polymorphic way to DRY this removal, see APPEND_TO_NULL_TERMINATED_ARRAY */ -#define REMOVE_FROM_NULL_TERMINATED_ARRAY(dst, element) \ - do { \ - size_t i, j; \ - for (i = 0; dst[i] != 0; i++) { \ - if (dst[i] == element) { \ +#define REMOVE_FROM_NULL_TERMINATED_ARRAY(dst, element) \ + do { \ + size_t i, j; \ + for (i = 0; dst[i] != 0; i++) { \ + if (dst[i] == element) { \ for (j = i; dst[j] != 0; j++) { \ - dst[j] = dst[j + 1]; \ - } \ - } \ - } \ + dst[j] = dst[j + 1]; \ + } \ + } \ + } \ } while (0) -static inline int /* allowlisting-only */ cfg_hashes_remove(struct cfg *cfg, - gnutls_digest_algorithm_t - dig) +static inline int /* allowlisting-only */ +cfg_hashes_remove(struct cfg *cfg, gnutls_digest_algorithm_t dig) { _gnutls_debug_log("cfg: disabling digest algorithm %s\n", gnutls_digest_get_name(dig)); @@ -1479,32 +1366,30 @@ static inline int /* allowlisting-only */ cfg_hashes_remove(struct cfg *cfg, return _cfg_hashes_remark(cfg); } -static inline int /* allowlisting-only */ cfg_sigs_remove(struct cfg *cfg, - gnutls_sign_algorithm_t - sig) +static inline int /* allowlisting-only */ +cfg_sigs_remove(struct cfg *cfg, gnutls_sign_algorithm_t sig) { _gnutls_debug_log("cfg: disabling signature algorithm " "(for non-certificate usage) " - "%s\n", gnutls_sign_get_name(sig)); + "%s\n", + gnutls_sign_get_name(sig)); REMOVE_FROM_NULL_TERMINATED_ARRAY(cfg->sigs, sig); return _cfg_sigs_remark(cfg); } -static inline int /* allowlisting-only */ cfg_sigs_for_cert_remove(struct cfg - *cfg, - gnutls_sign_algorithm_t - sig) +static inline int /* allowlisting-only */ +cfg_sigs_for_cert_remove(struct cfg *cfg, gnutls_sign_algorithm_t sig) { _gnutls_debug_log("cfg: disabling signature algorithm" "(for certificate usage) " - "%s\n", gnutls_sign_get_name(sig)); + "%s\n", + gnutls_sign_get_name(sig)); REMOVE_FROM_NULL_TERMINATED_ARRAY(cfg->sigs_for_cert, sig); return _cfg_sigs_remark(cfg); } -static inline int /* allowlisting-only */ cfg_versions_remove(struct cfg *cfg, - gnutls_protocol_t - prot) +static inline int /* allowlisting-only */ +cfg_versions_remove(struct cfg *cfg, gnutls_protocol_t prot) { _gnutls_debug_log("cfg: disabling version %s\n", gnutls_protocol_get_name(prot)); @@ -1512,9 +1397,8 @@ static inline int /* allowlisting-only */ cfg_versions_remove(struct cfg *cfg, return _cfg_versions_remark(cfg); } -static inline int /* allowlisting-only */ cfg_ecc_curves_remove(struct cfg *cfg, - gnutls_ecc_curve_t - curve) +static inline int /* allowlisting-only */ +cfg_ecc_curves_remove(struct cfg *cfg, gnutls_ecc_curve_t curve) { _gnutls_debug_log("cfg: disabling curve %s\n", gnutls_ecc_curve_get_name(curve)); @@ -1547,14 +1431,14 @@ static inline int cfg_apply(struct cfg *cfg, struct ini_ctx *ctx) return gnutls_assert_val(ret); } /* also updates `supported` field of global `sup_versions[]` */ - ret = cfg_versions_set_array(cfg, - ctx->versions, ctx->versions_size); + ret = cfg_versions_set_array(cfg, ctx->versions, + ctx->versions_size); if (unlikely(ret < 0)) { return gnutls_assert_val(ret); } /* also updates `supported` field of global `ecc_curves[]` */ - ret = cfg_ecc_curves_set_array(cfg, - ctx->curves, ctx->curves_size); + ret = cfg_ecc_curves_set_array(cfg, ctx->curves, + ctx->curves_size); if (unlikely(ret < 0)) { return gnutls_assert_val(ret); } @@ -1576,9 +1460,8 @@ static inline int cfg_apply(struct cfg *cfg, struct ini_ctx *ctx) } } for (i = 0; i < ctx->sigs_for_cert_size; i++) { - ret = - _gnutls_sign_mark_insecure(ctx->sigs_for_cert[i], - _INSECURE_FOR_CERTS); + ret = _gnutls_sign_mark_insecure(ctx->sigs_for_cert[i], + _INSECURE_FOR_CERTS); if (unlikely(ret < 0)) { return ret; } @@ -1617,8 +1500,8 @@ static int global_ini_handler(void *ctx, const char *section, const char *name, } else if (c_strcasecmp(p, "blocklist") == 0) { cfg->allowlisting = false; } else { - _gnutls_debug_log - ("cfg: unknown override mode %s\n", p); + _gnutls_debug_log( + "cfg: unknown override mode %s\n", p); if (fail_on_invalid_config) return 0; } @@ -1649,24 +1532,21 @@ static bool override_allowed(bool allowlisting, const char *name) static const struct { const char *allowlist_name; const char *blocklist_name; - } names[] = { - {"secure-hash", "insecure-hash"}, - {"secure-sig", "insecure-sig"}, - {"secure-sig-for-cert", "insecure-sig-for-cert"}, - {"enabled-version", "disabled-version"}, - {"enabled-curve", "disabled-curve"}, - {"tls-enabled-cipher", "tls-disabled-cipher"}, - {"tls-enabled-group", "tls-disabled-group"}, - {"tls-enabled-kx", "tls-disabled-kx"}, - {"tls-enabled-mac", "tls-disabled-mac"} - }; + } names[] = { { "secure-hash", "insecure-hash" }, + { "secure-sig", "insecure-sig" }, + { "secure-sig-for-cert", "insecure-sig-for-cert" }, + { "enabled-version", "disabled-version" }, + { "enabled-curve", "disabled-curve" }, + { "tls-enabled-cipher", "tls-disabled-cipher" }, + { "tls-enabled-group", "tls-disabled-group" }, + { "tls-enabled-kx", "tls-disabled-kx" }, + { "tls-enabled-mac", "tls-disabled-mac" } }; size_t i; for (i = 0; i < sizeof(names) / sizeof(names[0]); i++) { - if (c_strcasecmp(name, - allowlisting ? - names[i].blocklist_name : - names[i].allowlist_name) == 0) + if (c_strcasecmp(name, allowlisting ? + names[i].blocklist_name : + names[i].allowlist_name) == 0) return false; } @@ -1690,19 +1570,19 @@ static int cfg_ini_handler(void *_ctx, const char *section, const char *name, * not use that value after we handle it. */ /* Parse sections */ - if (section == NULL || section[0] == 0 - || c_strcasecmp(section, CUSTOM_PRIORITY_SECTION) == 0) { + if (section == NULL || section[0] == 0 || + c_strcasecmp(section, CUSTOM_PRIORITY_SECTION) == 0) { _gnutls_debug_log("cfg: adding priority: %s -> %s\n", name, value); - ret = - _name_val_array_append(&cfg->priority_strings, name, value); + ret = _name_val_array_append(&cfg->priority_strings, name, + value); if (ret < 0) return 0; } else if (c_strcasecmp(section, OVERRIDES_SECTION) == 0) { if (!override_allowed(cfg->allowlisting, name)) { - _gnutls_debug_log - ("cfg: %s is not allowed in this mode\n", name); + _gnutls_debug_log( + "cfg: %s is not allowed in this mode\n", name); if (fail_on_invalid_config) return 0; } else if (c_strcasecmp(name, "default-priority-string") == 0) { @@ -1711,18 +1591,19 @@ static int cfg_ini_handler(void *_ctx, const char *section, const char *name, cfg->default_priority_string = NULL; } p = clear_spaces(value, str); - _gnutls_debug_log - ("cfg: setting default-priority-string to %s\n", p); + _gnutls_debug_log( + "cfg: setting default-priority-string to %s\n", + p); if (strlen(p) > 0) { cfg->default_priority_string = gnutls_strdup(p); if (!cfg->default_priority_string) { - _gnutls_debug_log - ("cfg: failed setting default-priority-string\n"); + _gnutls_debug_log( + "cfg: failed setting default-priority-string\n"); return 0; } } else { - _gnutls_debug_log - ("cfg: empty default-priority-string, using default\n"); + _gnutls_debug_log( + "cfg: empty default-priority-string, using default\n"); if (fail_on_invalid_config) return 0; } @@ -1733,35 +1614,35 @@ static int cfg_ini_handler(void *_ctx, const char *section, const char *name, p = clear_spaces(value, str); if (cfg->allowlisting) { - _gnutls_debug_log - ("cfg: marking hash %s as secure\n", p); + _gnutls_debug_log( + "cfg: marking hash %s as secure\n", p); } else { - _gnutls_debug_log - ("cfg: marking hash %s as insecure\n", p); + _gnutls_debug_log( + "cfg: marking hash %s as insecure\n", + p); } dig = gnutls_digest_get_id(p); if (dig == GNUTLS_DIG_UNKNOWN) { - _gnutls_debug_log - ("cfg: found unknown hash %s in %s\n", p, - name); + _gnutls_debug_log( + "cfg: found unknown hash %s in %s\n", p, + name); if (fail_on_invalid_config) return 0; goto exit; } - tmp = _gnutls_reallocarray(ctx->hashes, - ctx->hashes_size + 1, - sizeof - (gnutls_digest_algorithm_t)); + tmp = _gnutls_reallocarray( + ctx->hashes, ctx->hashes_size + 1, + sizeof(gnutls_digest_algorithm_t)); if (!tmp) { if (cfg->allowlisting) { - _gnutls_debug_log - ("cfg: failed marking hash %s as secure\n", - p); + _gnutls_debug_log( + "cfg: failed marking hash %s as secure\n", + p); } else { - _gnutls_debug_log - ("cfg: failed marking hash %s as insecure\n", - p); + _gnutls_debug_log( + "cfg: failed marking hash %s as insecure\n", + p); } if (fail_on_invalid_config) return 0; @@ -1778,37 +1659,36 @@ static int cfg_ini_handler(void *_ctx, const char *section, const char *name, p = clear_spaces(value, str); if (cfg->allowlisting) { - _gnutls_debug_log - ("cfg: marking signature %s as secure\n", - p); + _gnutls_debug_log( + "cfg: marking signature %s as secure\n", + p); } else { - _gnutls_debug_log - ("cfg: marking signature %s as insecure\n", - p); + _gnutls_debug_log( + "cfg: marking signature %s as insecure\n", + p); } sig = gnutls_sign_get_id(p); if (sig == GNUTLS_SIGN_UNKNOWN) { - _gnutls_debug_log - ("cfg: found unknown signature algorithm %s in %s\n", - p, name); + _gnutls_debug_log( + "cfg: found unknown signature algorithm %s in %s\n", + p, name); if (fail_on_invalid_config) return 0; goto exit; } - tmp = _gnutls_reallocarray(ctx->sigs, - ctx->sigs_size + 1, - sizeof - (gnutls_sign_algorithm_t)); + tmp = _gnutls_reallocarray( + ctx->sigs, ctx->sigs_size + 1, + sizeof(gnutls_sign_algorithm_t)); if (!tmp) { if (cfg->allowlisting) { - _gnutls_debug_log - ("cfg: failed marking signature %s as secure\n", - p); + _gnutls_debug_log( + "cfg: failed marking signature %s as secure\n", + p); } else { - _gnutls_debug_log - ("cfg: failed marking signature %s as insecure\n", - p); + _gnutls_debug_log( + "cfg: failed marking signature %s as insecure\n", + p); } if (fail_on_invalid_config) return 0; @@ -1825,37 +1705,36 @@ static int cfg_ini_handler(void *_ctx, const char *section, const char *name, p = clear_spaces(value, str); if (cfg->allowlisting) { - _gnutls_debug_log - ("cfg: marking signature %s as secure for certs\n", - p); + _gnutls_debug_log( + "cfg: marking signature %s as secure for certs\n", + p); } else { - _gnutls_debug_log - ("cfg: marking signature %s as insecure for certs\n", - p); + _gnutls_debug_log( + "cfg: marking signature %s as insecure for certs\n", + p); } sig = gnutls_sign_get_id(p); if (sig == GNUTLS_SIGN_UNKNOWN) { - _gnutls_debug_log - ("cfg: found unknown signature algorithm %s in %s\n", - p, name); + _gnutls_debug_log( + "cfg: found unknown signature algorithm %s in %s\n", + p, name); if (fail_on_invalid_config) return 0; goto exit; } - tmp = _gnutls_reallocarray(ctx->sigs_for_cert, - ctx->sigs_for_cert_size + 1, - sizeof - (gnutls_sign_algorithm_t)); + tmp = _gnutls_reallocarray( + ctx->sigs_for_cert, ctx->sigs_for_cert_size + 1, + sizeof(gnutls_sign_algorithm_t)); if (!tmp) { if (cfg->allowlisting) { - _gnutls_debug_log - ("cfg: failed marking signature %s as secure for certs\n", - p); + _gnutls_debug_log( + "cfg: failed marking signature %s as secure for certs\n", + p); } else { - _gnutls_debug_log - ("cfg: failed marking signature %s as insecure for certs\n", - p); + _gnutls_debug_log( + "cfg: failed marking signature %s as insecure for certs\n", + p); } if (fail_on_invalid_config) return 0; @@ -1881,9 +1760,9 @@ static int cfg_ini_handler(void *_ctx, const char *section, const char *name, prot = gnutls_protocol_get_id(p); if (prot == GNUTLS_VERSION_UNKNOWN) { - _gnutls_debug_log - ("cfg: found unknown version %s in %s\n", p, - name); + _gnutls_debug_log( + "cfg: found unknown version %s in %s\n", + p, name); if (fail_on_invalid_config) return 0; goto exit; @@ -1893,13 +1772,13 @@ static int cfg_ini_handler(void *_ctx, const char *section, const char *name, sizeof(gnutls_protocol_t)); if (!tmp) { if (cfg->allowlisting) { - _gnutls_debug_log - ("cfg: failed enabling version %s\n", - p); + _gnutls_debug_log( + "cfg: failed enabling version %s\n", + p); } else { - _gnutls_debug_log - ("cfg: failed disabling version %s\n", - p); + _gnutls_debug_log( + "cfg: failed disabling version %s\n", + p); } if (fail_on_invalid_config) return 0; @@ -1925,9 +1804,9 @@ static int cfg_ini_handler(void *_ctx, const char *section, const char *name, curve = gnutls_ecc_curve_get_id(p); if (curve == GNUTLS_ECC_CURVE_INVALID) { - _gnutls_debug_log - ("cfg: found unknown curve %s in %s\n", p, - name); + _gnutls_debug_log( + "cfg: found unknown curve %s in %s\n", + p, name); if (fail_on_invalid_config) return 0; goto exit; @@ -1937,13 +1816,13 @@ static int cfg_ini_handler(void *_ctx, const char *section, const char *name, sizeof(gnutls_ecc_curve_t)); if (!tmp) { if (cfg->allowlisting) { - _gnutls_debug_log - ("cfg: failed enabling curve %s\n", - p); + _gnutls_debug_log( + "cfg: failed enabling curve %s\n", + p); } else { - _gnutls_debug_log - ("cfg: failed disabling curve %s\n", - p); + _gnutls_debug_log( + "cfg: failed disabling curve %s\n", + p); } if (fail_on_invalid_config) return 0; @@ -1953,16 +1832,17 @@ static int cfg_ini_handler(void *_ctx, const char *section, const char *name, ctx->curves = tmp; ctx->curves[ctx->curves_size] = curve; ctx->curves_size++; - } else if (c_strcasecmp(name, "min-verification-profile") == 0) { + } else if (c_strcasecmp(name, "min-verification-profile") == + 0) { gnutls_certificate_verification_profiles_t profile; profile = - gnutls_certificate_verification_profile_get_id - (value); + gnutls_certificate_verification_profile_get_id( + value); if (profile == GNUTLS_PROFILE_UNKNOWN) { - _gnutls_debug_log - ("cfg: found unknown profile %s in %s\n", - value, name); + _gnutls_debug_log( + "cfg: found unknown profile %s in %s\n", + value, name); if (fail_on_invalid_config) return 0; goto exit; @@ -1976,18 +1856,19 @@ static int cfg_ini_handler(void *_ctx, const char *section, const char *name, p = clear_spaces(value, str); if (cfg->allowlisting) { - _gnutls_debug_log - ("cfg: enabling cipher %s for TLS\n", p); + _gnutls_debug_log( + "cfg: enabling cipher %s for TLS\n", p); } else { - _gnutls_debug_log - ("cfg: disabling cipher %s for TLS\n", p); + _gnutls_debug_log( + "cfg: disabling cipher %s for TLS\n", + p); } algo = gnutls_cipher_get_id(p); if (algo == GNUTLS_CIPHER_UNKNOWN) { - _gnutls_debug_log - ("cfg: unknown algorithm %s listed at %s\n", - p, name); + _gnutls_debug_log( + "cfg: unknown algorithm %s listed at %s\n", + p, name); if (fail_on_invalid_config) return 0; goto exit; @@ -1999,13 +1880,13 @@ static int cfg_ini_handler(void *_ctx, const char *section, const char *name, if (i > MAX_ALGOS - 1) { if (cfg->allowlisting) { - _gnutls_debug_log - ("cfg: too many (%d) enabled ciphers from %s\n", - i, name); + _gnutls_debug_log( + "cfg: too many (%d) enabled ciphers from %s\n", + i, name); } else { - _gnutls_debug_log - ("cfg: too many (%d) disabled ciphers from %s\n", - i, name); + _gnutls_debug_log( + "cfg: too many (%d) disabled ciphers from %s\n", + i, name); } if (fail_on_invalid_config) return 0; @@ -2021,18 +1902,18 @@ static int cfg_ini_handler(void *_ctx, const char *section, const char *name, p = clear_spaces(value, str); if (cfg->allowlisting) { - _gnutls_debug_log - ("cfg: enabling MAC %s for TLS\n", p); + _gnutls_debug_log( + "cfg: enabling MAC %s for TLS\n", p); } else { - _gnutls_debug_log - ("cfg: disabling MAC %s for TLS\n", p); + _gnutls_debug_log( + "cfg: disabling MAC %s for TLS\n", p); } algo = gnutls_mac_get_id(p); if (algo == 0) { - _gnutls_debug_log - ("cfg: unknown algorithm %s listed at %s\n", - p, name); + _gnutls_debug_log( + "cfg: unknown algorithm %s listed at %s\n", + p, name); if (fail_on_invalid_config) return 0; goto exit; @@ -2044,13 +1925,13 @@ static int cfg_ini_handler(void *_ctx, const char *section, const char *name, if (i > MAX_ALGOS - 1) { if (cfg->allowlisting) { - _gnutls_debug_log - ("cfg: too many (%d) enabled MACs from %s\n", - i, name); + _gnutls_debug_log( + "cfg: too many (%d) enabled MACs from %s\n", + i, name); } else { - _gnutls_debug_log - ("cfg: too many (%d) disabled MACs from %s\n", - i, name); + _gnutls_debug_log( + "cfg: too many (%d) disabled MACs from %s\n", + i, name); } if (fail_on_invalid_config) return 0; @@ -2068,18 +1949,18 @@ static int cfg_ini_handler(void *_ctx, const char *section, const char *name, p += 6; if (cfg->allowlisting) { - _gnutls_debug_log - ("cfg: enabling group %s for TLS\n", p); + _gnutls_debug_log( + "cfg: enabling group %s for TLS\n", p); } else { - _gnutls_debug_log - ("cfg: disabling group %s for TLS\n", p); + _gnutls_debug_log( + "cfg: disabling group %s for TLS\n", p); } algo = _gnutls_group_get_id(p); if (algo == 0) { - _gnutls_debug_log - ("cfg: unknown group %s listed at %s\n", p, - name); + _gnutls_debug_log( + "cfg: unknown group %s listed at %s\n", + p, name); if (fail_on_invalid_config) return 0; goto exit; @@ -2091,13 +1972,13 @@ static int cfg_ini_handler(void *_ctx, const char *section, const char *name, if (i > MAX_ALGOS - 1) { if (cfg->allowlisting) { - _gnutls_debug_log - ("cfg: too many (%d) enabled groups from %s\n", - i, name); + _gnutls_debug_log( + "cfg: too many (%d) enabled groups from %s\n", + i, name); } else { - _gnutls_debug_log - ("cfg: too many (%d) disabled groups from %s\n", - i, name); + _gnutls_debug_log( + "cfg: too many (%d) disabled groups from %s\n", + i, name); } if (fail_on_invalid_config) return 0; @@ -2112,20 +1993,20 @@ static int cfg_ini_handler(void *_ctx, const char *section, const char *name, p = clear_spaces(value, str); if (cfg->allowlisting) { - _gnutls_debug_log - ("cfg: enabling key exchange %s for TLS\n", - p); + _gnutls_debug_log( + "cfg: enabling key exchange %s for TLS\n", + p); } else { - _gnutls_debug_log - ("cfg: disabling key exchange %s for TLS\n", - p); + _gnutls_debug_log( + "cfg: disabling key exchange %s for TLS\n", + p); } algo = gnutls_kx_get_id(p); if (algo == 0) { - _gnutls_debug_log - ("cfg: unknown key exchange %s listed at %s\n", - p, name); + _gnutls_debug_log( + "cfg: unknown key exchange %s listed at %s\n", + p, name); if (fail_on_invalid_config) return 0; goto exit; @@ -2137,13 +2018,13 @@ static int cfg_ini_handler(void *_ctx, const char *section, const char *name, if (i > MAX_ALGOS - 1) { if (cfg->allowlisting) { - _gnutls_debug_log - ("cfg: too many (%d) enabled key exchanges from %s\n", - i, name); + _gnutls_debug_log( + "cfg: too many (%d) enabled key exchanges from %s\n", + i, name); } else { - _gnutls_debug_log - ("cfg: too many (%d) disabled key exchanges from %s\n", - i, name); + _gnutls_debug_log( + "cfg: too many (%d) disabled key exchanges from %s\n", + i, name); } if (fail_on_invalid_config) return 0; @@ -2162,12 +2043,12 @@ static int cfg_ini_handler(void *_ctx, const char *section, const char *name, return 0; } - exit: +exit: return 1; } static int /* not locking system_wide_config */ -construct_system_wide_priority_string(gnutls_buffer_st * buf) +construct_system_wide_priority_string(gnutls_buffer_st *buf) { int ret; size_t i; @@ -2187,9 +2068,8 @@ construct_system_wide_priority_string(gnutls_buffer_st * buf) return ret; } - ret = _gnutls_buffer_append_str(buf, - gnutls_kx_get_name - (system_wide_config.kxs[i])); + ret = _gnutls_buffer_append_str( + buf, gnutls_kx_get_name(system_wide_config.kxs[i])); if (ret < 0) { _gnutls_buffer_clear(buf); return ret; @@ -2203,9 +2083,9 @@ construct_system_wide_priority_string(gnutls_buffer_st * buf) return ret; } - ret = _gnutls_buffer_append_str(buf, - gnutls_group_get_name - (system_wide_config.groups[i])); + ret = _gnutls_buffer_append_str( + buf, + gnutls_group_get_name(system_wide_config.groups[i])); if (ret < 0) { _gnutls_buffer_clear(buf); return ret; @@ -2219,10 +2099,9 @@ construct_system_wide_priority_string(gnutls_buffer_st * buf) return ret; } - ret = _gnutls_buffer_append_str(buf, - gnutls_cipher_get_name - (system_wide_config.ciphers - [i])); + ret = _gnutls_buffer_append_str( + buf, + gnutls_cipher_get_name(system_wide_config.ciphers[i])); if (ret < 0) { _gnutls_buffer_clear(buf); return ret; @@ -2236,9 +2115,8 @@ construct_system_wide_priority_string(gnutls_buffer_st * buf) return ret; } - ret = _gnutls_buffer_append_str(buf, - gnutls_mac_get_name - (system_wide_config.macs[i])); + ret = _gnutls_buffer_append_str( + buf, gnutls_mac_get_name(system_wide_config.macs[i])); if (ret < 0) { _gnutls_buffer_clear(buf); return ret; @@ -2252,9 +2130,8 @@ construct_system_wide_priority_string(gnutls_buffer_st * buf) return ret; } - ret = _gnutls_buffer_append_str(buf, - gnutls_sign_get_name - (system_wide_config.sigs[i])); + ret = _gnutls_buffer_append_str( + buf, gnutls_sign_get_name(system_wide_config.sigs[i])); if (ret < 0) { _gnutls_buffer_clear(buf); return ret; @@ -2268,10 +2145,9 @@ construct_system_wide_priority_string(gnutls_buffer_st * buf) return ret; } - ret = _gnutls_buffer_append_str(buf, - gnutls_protocol_get_name - (system_wide_config.versions - [i])); + ret = _gnutls_buffer_append_str( + buf, gnutls_protocol_get_name( + system_wide_config.versions[i])); if (ret < 0) { _gnutls_buffer_clear(buf); return ret; @@ -2327,7 +2203,7 @@ static int _gnutls_update_system_priorities(bool defer_system_wide) _gnutls_debug_log("cfg: system priority %s has not changed\n", system_priority_file); if (system_wide_config.priority_string) { - goto out; /* nothing to do */ + goto out; /* nothing to do */ } } @@ -2343,7 +2219,7 @@ static int _gnutls_update_system_priorities(bool defer_system_wide) */ if (system_priority_file_loaded) { system_priority_file_loaded = - (system_priority_last_mod == sb.st_mtime); + (system_priority_last_mod == sb.st_mtime); } if (!system_priority_file_loaded) { @@ -2386,7 +2262,6 @@ static int _gnutls_update_system_priorities(bool defer_system_wide) _gnutls_debug_log("cfg: loaded system config %s mtime %lld\n", system_priority_file, (unsigned long long)sb.st_mtime); - } if (system_wide_config.allowlisting) { @@ -2404,9 +2279,9 @@ static int _gnutls_update_system_priorities(bool defer_system_wide) "system-wide priority string\n"); } if (ret < 0) { - _gnutls_debug_log - ("cfg: unable to build priority string: %s\n", - gnutls_strerror(ret)); + _gnutls_debug_log( + "cfg: unable to build priority string: %s\n", + gnutls_strerror(ret)); if (fail_on_invalid_config) exit(1); goto out; @@ -2416,7 +2291,7 @@ static int _gnutls_update_system_priorities(bool defer_system_wide) system_priority_file_loaded = 1; system_priority_last_mod = sb.st_mtime; - out: +out: (void)gnutls_rwlock_unlock(&system_wide_config_rwlock); if (err && fail_on_invalid_config) { @@ -2439,7 +2314,7 @@ void _gnutls_prepare_to_load_system_priorities(void) if (p != NULL && p[0] == '1' && p[1] == 0) fail_on_invalid_config = 1; - ret = _gnutls_update_system_priorities(true /* defer_system_wide */ ); + ret = _gnutls_update_system_priorities(true /* defer_system_wide */); if (ret < 0) { _gnutls_debug_log("failed to update system priorities: %s\n", gnutls_strerror(ret)); @@ -2469,7 +2344,7 @@ const char *gnutls_get_system_config_file(void) return system_priority_file; } -#define S(str) ((str!=NULL)?str:"") +#define S(str) ((str != NULL) ? str : "") /* Returns the new priorities if a priority string prefixed * with '@' is provided, or just a copy of the provided @@ -2506,7 +2381,7 @@ char *_gnutls_resolve_priorities(const char *priorities) /* Always try to refresh the cached data, to allow it to be * updated without restarting all applications. */ - ret = _gnutls_update_system_priorities(false /* defer_system_wide */ ); + ret = _gnutls_update_system_priorities(false /* defer_system_wide */); if (ret < 0) { _gnutls_debug_log("failed to update system priorities: %s\n", gnutls_strerror(ret)); @@ -2535,9 +2410,9 @@ char *_gnutls_resolve_priorities(const char *priorities) ret = gnutls_rwlock_rdlock(&system_wide_config_rwlock); if (ret < 0) { - _gnutls_debug_log - ("cannot read system priority strings: %s\n", - gnutls_strerror(ret)); + _gnutls_debug_log( + "cannot read system priority strings: %s\n", + gnutls_strerror(ret)); break; } if (system_wide_config.allowlisting && @@ -2545,8 +2420,9 @@ char *_gnutls_resolve_priorities(const char *priorities) strncmp(LEVEL_SYSTEM, ss, ss_len) == 0) { p = system_wide_config.priority_string; } else { - p = _name_val_array_value - (system_wide_config.priority_strings, ss, ss_len); + p = _name_val_array_value( + system_wide_config.priority_strings, ss, + ss_len); } _gnutls_debug_log("resolved '%.*s' to '%s', next '%.*s'\n", @@ -2592,17 +2468,17 @@ static void add_ec(gnutls_priority_t priority_cache) unsigned i; for (i = 0; i < priority_cache->_supported_ecc.num_priorities; i++) { - ge = _gnutls_id_to_group(priority_cache-> - _supported_ecc.priorities[i]); - if (ge != NULL - && priority_cache->groups.size < - sizeof(priority_cache->groups.entry) / - sizeof(priority_cache->groups.entry[0])) { + ge = _gnutls_id_to_group( + priority_cache->_supported_ecc.priorities[i]); + if (ge != NULL && + priority_cache->groups.size < + sizeof(priority_cache->groups.entry) / + sizeof(priority_cache->groups.entry[0])) { /* do not add groups which do not correspond to enabled ciphersuites */ if (!ge->curve) continue; - priority_cache->groups.entry[priority_cache-> - groups.size++] = ge; + priority_cache->groups + .entry[priority_cache->groups.size++] = ge; } } } @@ -2613,17 +2489,17 @@ static void add_dh(gnutls_priority_t priority_cache) unsigned i; for (i = 0; i < priority_cache->_supported_ecc.num_priorities; i++) { - ge = _gnutls_id_to_group(priority_cache-> - _supported_ecc.priorities[i]); - if (ge != NULL - && priority_cache->groups.size < - sizeof(priority_cache->groups.entry) / - sizeof(priority_cache->groups.entry[0])) { + ge = _gnutls_id_to_group( + priority_cache->_supported_ecc.priorities[i]); + if (ge != NULL && + priority_cache->groups.size < + sizeof(priority_cache->groups.entry) / + sizeof(priority_cache->groups.entry[0])) { /* do not add groups which do not correspond to enabled ciphersuites */ if (!ge->prime) continue; - priority_cache->groups.entry[priority_cache-> - groups.size++] = ge; + priority_cache->groups + .entry[priority_cache->groups.size++] = ge; priority_cache->groups.have_ffdhe = 1; } } @@ -2677,7 +2553,8 @@ static int set_ciphersuite_list(gnutls_priority_t priority_cache) if (priority_cache->_kx.priorities[i] != system_wide_config.kxs[z]) priority_cache->_kx.priorities[j++] = - priority_cache->_kx.priorities[i]; + priority_cache->_kx + .priorities[i]; } priority_cache->_kx.num_priorities = j; z++; @@ -2689,13 +2566,13 @@ static int set_ciphersuite_list(gnutls_priority_t priority_cache) for (i = j = 0; i < priority_cache->_supported_ecc.num_priorities; i++) { - if (priority_cache-> - _supported_ecc.priorities[i] != + if (priority_cache->_supported_ecc + .priorities[i] != system_wide_config.groups[z]) - priority_cache-> - _supported_ecc.priorities[j++] = - priority_cache-> - _supported_ecc.priorities[i]; + priority_cache->_supported_ecc + .priorities[j++] = + priority_cache->_supported_ecc + .priorities[i]; } priority_cache->_supported_ecc.num_priorities = j; z++; @@ -2708,10 +2585,9 @@ static int set_ciphersuite_list(gnutls_priority_t priority_cache) i < priority_cache->_cipher.num_priorities; i++) { if (priority_cache->_cipher.priorities[i] != system_wide_config.ciphers[z]) - priority_cache-> - _cipher.priorities[j++] = - priority_cache-> - _cipher.priorities[i]; + priority_cache->_cipher.priorities[j++] = + priority_cache->_cipher + .priorities[i]; } priority_cache->_cipher.num_priorities = j; z++; @@ -2725,7 +2601,8 @@ static int set_ciphersuite_list(gnutls_priority_t priority_cache) if (priority_cache->_mac.priorities[i] != system_wide_config.macs[z]) priority_cache->_mac.priorities[j++] = - priority_cache->_mac.priorities[i]; + priority_cache->_mac + .priorities[i]; } priority_cache->_mac.num_priorities = j; z++; @@ -2733,7 +2610,8 @@ static int set_ciphersuite_list(gnutls_priority_t priority_cache) } for (j = 0; j < priority_cache->_cipher.num_priorities; j++) { - if (priority_cache->_cipher.priorities[j] == GNUTLS_CIPHER_NULL) { + if (priority_cache->_cipher.priorities[j] == + GNUTLS_CIPHER_NULL) { have_null = 1; break; } @@ -2742,7 +2620,8 @@ static int set_ciphersuite_list(gnutls_priority_t priority_cache) for (i = 0; i < priority_cache->_kx.num_priorities; i++) { if (IS_SRP_KX(priority_cache->_kx.priorities[i])) { have_srp = 1; - } else if (_gnutls_kx_is_psk(priority_cache->_kx.priorities[i])) { + } else if (_gnutls_kx_is_psk( + priority_cache->_kx.priorities[i])) { if (priority_cache->_kx.priorities[i] == GNUTLS_KX_RSA_PSK) have_rsa_psk = 1; @@ -2758,22 +2637,21 @@ static int set_ciphersuite_list(gnutls_priority_t priority_cache) (system_wide_config.allowlisting && vers->supported_revertible)) priority_cache->protocol.priorities[j++] = - priority_cache->protocol.priorities[i]; + priority_cache->protocol.priorities[i]; } priority_cache->protocol.num_priorities = j; /* if we have NULL ciphersuites, SRP, or RSA-PSK enabled remove TLS1.3+ * protocol versions; they cannot be negotiated under TLS1.3. */ - if (have_null || have_srp || have_rsa_psk - || priority_cache->no_extensions) { + if (have_null || have_srp || have_rsa_psk || + priority_cache->no_extensions) { for (i = j = 0; i < priority_cache->protocol.num_priorities; i++) { - vers = - version_to_entry(priority_cache-> - protocol.priorities[i]); + vers = version_to_entry( + priority_cache->protocol.priorities[i]); if (!vers || !vers->tls13_sem) priority_cache->protocol.priorities[j++] = - priority_cache->protocol.priorities[i]; + priority_cache->protocol.priorities[i]; } priority_cache->protocol.num_priorities = j; } @@ -2783,7 +2661,7 @@ static int set_ciphersuite_list(gnutls_priority_t priority_cache) if (!vers) continue; - if (vers->transport == GNUTLS_STREAM) { /* TLS */ + if (vers->transport == GNUTLS_STREAM) { /* TLS */ tls_sig_sem |= vers->tls_sig_sem; if (vers->tls13_sem) have_tls13 = 1; @@ -2797,7 +2675,7 @@ static int set_ciphersuite_list(gnutls_priority_t priority_cache) tlsmax = vers; if (tlsmin == NULL || vers->age < tlsmin->age) tlsmin = vers; - } else { /* dtls */ + } else { /* dtls */ tls_sig_sem |= vers->tls_sig_sem; /* we need to introduce similar handling to above @@ -2828,11 +2706,9 @@ static int set_ciphersuite_list(gnutls_priority_t priority_cache) /* Add TLS 1.3 ciphersuites (no KX) */ for (j = 0; j < priority_cache->_cipher.num_priorities; j++) { for (z = 0; z < priority_cache->_mac.num_priorities; z++) { - ce = cipher_suite_get(0, - priority_cache-> - _cipher.priorities[j], - priority_cache-> - _mac.priorities[z]); + ce = cipher_suite_get( + 0, priority_cache->_cipher.priorities[j], + priority_cache->_mac.priorities[z]); if (ce == NULL) continue; @@ -2843,8 +2719,8 @@ static int set_ciphersuite_list(gnutls_priority_t priority_cache) continue; if (priority_cache->cs.size < MAX_CIPHERSUITE_SIZE) - priority_cache->cs.entry[priority_cache-> - cs.size++] = ce; + priority_cache->cs + .entry[priority_cache->cs.size++] = ce; } } @@ -2852,12 +2728,10 @@ static int set_ciphersuite_list(gnutls_priority_t priority_cache) for (j = 0; j < priority_cache->_cipher.num_priorities; j++) { for (z = 0; z < priority_cache->_mac.num_priorities; z++) { - ce = cipher_suite_get(priority_cache-> - _kx.priorities[i], - priority_cache-> - _cipher.priorities[j], - priority_cache-> - _mac.priorities[z]); + ce = cipher_suite_get( + priority_cache->_kx.priorities[i], + priority_cache->_cipher.priorities[j], + priority_cache->_mac.priorities[z]); if (ce == NULL) continue; @@ -2870,18 +2744,16 @@ static int set_ciphersuite_list(gnutls_priority_t priority_cache) if (priority_cache->cs.size == MAX_CIPHERSUITE_SIZE) continue; - priority_cache->cs.entry[priority_cache-> - cs.size++] = ce; - if (!have_ec - && (_gnutls_kx_is_ecc(ce->kx_algorithm) - || - _gnutls_kx_is_vko_gost - (ce->kx_algorithm))) { + priority_cache->cs + .entry[priority_cache->cs.size++] = ce; + if (!have_ec && + (_gnutls_kx_is_ecc(ce->kx_algorithm) || + _gnutls_kx_is_vko_gost(ce->kx_algorithm))) { have_ec = 1; add_ec(priority_cache); } - if (!have_dh - && _gnutls_kx_is_dhe(ce->kx_algorithm)) { + if (!have_dh && + _gnutls_kx_is_dhe(ce->kx_algorithm)) { have_dh = 1; add_dh(priority_cache); } @@ -2894,8 +2766,8 @@ static int set_ciphersuite_list(gnutls_priority_t priority_cache) for (i = 0; i < priority_cache->_supported_ecc.num_priorities; i++) { const gnutls_group_entry_st *ge; - ge = _gnutls_id_to_group(priority_cache-> - _supported_ecc.priorities[i]); + ge = _gnutls_id_to_group( + priority_cache->_supported_ecc.priorities[i]); if (ge) { if (ge->curve && !have_ec) { add_ec(priority_cache); @@ -2909,36 +2781,36 @@ static int set_ciphersuite_list(gnutls_priority_t priority_cache) break; } } - } for (i = 0; i < priority_cache->_sign_algo.num_priorities; i++) { - se = _gnutls_sign_to_entry(priority_cache-> - _sign_algo.priorities[i]); - if (se != NULL - && priority_cache->sigalg.size < - sizeof(priority_cache->sigalg.entry) / - sizeof(priority_cache->sigalg.entry[0])) { + se = _gnutls_sign_to_entry( + priority_cache->_sign_algo.priorities[i]); + if (se != NULL && + priority_cache->sigalg.size < + sizeof(priority_cache->sigalg.entry) / + sizeof(priority_cache->sigalg.entry[0])) { /* if the signature algorithm semantics is not * compatible with the protocol's, or the algorithm is * marked as insecure, then skip. */ if ((se->aid.tls_sem & tls_sig_sem) == 0 || - !_gnutls_sign_is_secure2(se, - system_wide_config.allowlisting - ? - GNUTLS_SIGN_FLAG_ALLOW_INSECURE_REVERTIBLE - : 0)) { + !_gnutls_sign_is_secure2( + se, + system_wide_config.allowlisting ? + GNUTLS_SIGN_FLAG_ALLOW_INSECURE_REVERTIBLE : + 0)) { continue; } - priority_cache->sigalg.entry[priority_cache-> - sigalg.size++] = se; + priority_cache->sigalg + .entry[priority_cache->sigalg.size++] = se; } } - _gnutls_debug_log - ("added %d protocols, %d ciphersuites, %d sig algos and %d groups into priority list\n", - priority_cache->protocol.num_priorities, priority_cache->cs.size, - priority_cache->sigalg.size, priority_cache->groups.size); + _gnutls_debug_log( + "added %d protocols, %d ciphersuites, %d sig algos and %d groups into priority list\n", + priority_cache->protocol.num_priorities, + priority_cache->cs.size, priority_cache->sigalg.size, + priority_cache->groups.size); if (priority_cache->sigalg.size == 0) { /* no signature algorithms; eliminate TLS 1.2 or DTLS 1.2 and later */ @@ -2950,13 +2822,13 @@ static int set_ciphersuite_list(gnutls_priority_t priority_cache) if (priority_cache->protocol.priorities[i] < GNUTLS_TLS1_2) { newp.priorities[newp.num_priorities++] = - priority_cache->protocol.priorities[i]; + priority_cache->protocol.priorities[i]; } else if (priority_cache->protocol.priorities[i] >= - GNUTLS_DTLS_VERSION_MIN - && priority_cache->protocol.priorities[i] < - GNUTLS_DTLS1_2) { + GNUTLS_DTLS_VERSION_MIN && + priority_cache->protocol.priorities[i] < + GNUTLS_DTLS1_2) { newp.priorities[newp.num_priorities++] = - priority_cache->protocol.priorities[i]; + priority_cache->protocol.priorities[i]; } } memcpy(&priority_cache->protocol, &newp, sizeof(newp)); @@ -2967,9 +2839,9 @@ static int set_ciphersuite_list(gnutls_priority_t priority_cache) goto out; } #ifndef ENABLE_SSL3 - else if (unlikely - (priority_cache->protocol.num_priorities == 1 - && priority_cache->protocol.priorities[0] == GNUTLS_SSL3)) { + else if (unlikely(priority_cache->protocol.num_priorities == 1 && + priority_cache->protocol.priorities[0] == + GNUTLS_SSL3)) { ret = gnutls_assert_val(GNUTLS_E_NO_PRIORITIES_WERE_SET); goto out; } @@ -2984,20 +2856,17 @@ static int set_ciphersuite_list(gnutls_priority_t priority_cache) * we require TLS1.2 to be enabled if TLS1.3 is asked for, and * a pre-TLS1.2 protocol is there; that is because servers which * do not support TLS1.3 will negotiate TLS1.2 if seen a TLS1.3 handshake */ - if (unlikely - ((!have_psk && tlsmax && tlsmax->id >= GNUTLS_TLS1_3 - && priority_cache->groups.size == 0)) || (!have_tls12 - && have_pre_tls12 - && have_tls13)) { + if (unlikely((!have_psk && tlsmax && tlsmax->id >= GNUTLS_TLS1_3 && + priority_cache->groups.size == 0)) || + (!have_tls12 && have_pre_tls12 && have_tls13)) { for (i = j = 0; i < priority_cache->protocol.num_priorities; i++) { - vers = - version_to_entry(priority_cache-> - protocol.priorities[i]); - if (!vers || vers->transport != GNUTLS_STREAM - || !vers->tls13_sem) + vers = version_to_entry( + priority_cache->protocol.priorities[i]); + if (!vers || vers->transport != GNUTLS_STREAM || + !vers->tls13_sem) priority_cache->protocol.priorities[j++] = - priority_cache->protocol.priorities[i]; + priority_cache->protocol.priorities[i]; } priority_cache->protocol.num_priorities = j; } @@ -3006,8 +2875,8 @@ static int set_ciphersuite_list(gnutls_priority_t priority_cache) if (system_wide_config.verification_profile) { gnutls_sec_param_t level = priority_cache->level; gnutls_sec_param_t system_wide_level = - _gnutls_profile_to_sec_level - (system_wide_config.verification_profile); + _gnutls_profile_to_sec_level( + system_wide_config.verification_profile); if (level < system_wide_level) { ENABLE_PROFILE(priority_cache, @@ -3015,7 +2884,7 @@ static int set_ciphersuite_list(gnutls_priority_t priority_cache) } } - out: +out: (void)gnutls_rwlock_unlock(&system_wide_config_rwlock); return ret; } @@ -3121,10 +2990,9 @@ static int set_ciphersuite_list(gnutls_priority_t priority_cache) * * Since: 3.6.3 **/ -int -gnutls_priority_init2(gnutls_priority_t * priority_cache, - const char *priorities, const char **err_pos, - unsigned flags) +int gnutls_priority_init2(gnutls_priority_t *priority_cache, + const char *priorities, const char **err_pos, + unsigned flags) { gnutls_buffer_st buf; const char *ep; @@ -3140,9 +3008,8 @@ gnutls_priority_init2(gnutls_priority_t * priority_cache, _gnutls_buffer_init(&buf); - ret = - _gnutls_buffer_append_str(&buf, - _gnutls_default_priority_string); + ret = _gnutls_buffer_append_str( + &buf, _gnutls_default_priority_string); if (ret < 0) { _gnutls_buffer_clear(&buf); return gnutls_assert_val(ret); @@ -3160,13 +3027,12 @@ gnutls_priority_init2(gnutls_priority_t * priority_cache, return gnutls_assert_val(ret); } - ret = - gnutls_priority_init(priority_cache, (const char *)buf.data, - &ep); + ret = gnutls_priority_init(priority_cache, + (const char *)buf.data, &ep); if (ret < 0 && ep != (const char *)buf.data && ep != NULL) { ptrdiff_t diff = (ptrdiff_t)ep - (ptrdiff_t)buf.data; unsigned hlen = - strlen(_gnutls_default_priority_string) + 1; + strlen(_gnutls_default_priority_string) + 1; if (err_pos && diff > hlen) { *err_pos = priorities + diff - hlen; @@ -3180,7 +3046,8 @@ gnutls_priority_init2(gnutls_priority_t * priority_cache, } } -#define PRIO_MATCH(name) c_strncasecmp(&broken_list[i][1], name, sizeof(name) - 1) +#define PRIO_MATCH(name) \ + c_strncasecmp(&broken_list[i][1], name, sizeof(name) - 1) /** * gnutls_priority_init: @@ -3202,9 +3069,8 @@ gnutls_priority_init2(gnutls_priority_t * priority_cache, * Returns: On syntax error %GNUTLS_E_INVALID_REQUEST is returned, * %GNUTLS_E_SUCCESS on success, or an error code. **/ -int -gnutls_priority_init(gnutls_priority_t * priority_cache, - const char *priorities, const char **err_pos) +int gnutls_priority_init(gnutls_priority_t *priority_cache, + const char *priorities, const char **err_pos) { char *broken_list[MAX_ELEMENTS]; int broken_list_size = 0, i = 0, j; @@ -3280,13 +3146,13 @@ gnutls_priority_init(gnutls_priority_t * priority_cache, } for (; i < broken_list_size; i++) { - if (check_level(broken_list[i], *priority_cache, ikeyword_set) - != 0) { + if (check_level(broken_list[i], *priority_cache, + ikeyword_set) != 0) { ikeyword_set = 1; continue; - } else if (broken_list[i][0] == '!' - || broken_list[i][0] == '+' - || broken_list[i][0] == '-') { + } else if (broken_list[i][0] == '!' || + broken_list[i][0] == '+' || + broken_list[i][0] == '-') { if (broken_list[i][0] == '+') { fn = prio_add; bulk_fn = _add_priority; @@ -3297,108 +3163,95 @@ gnutls_priority_init(gnutls_priority_t * priority_cache, bulk_given_fn = _clear_given_priorities; } - if (broken_list[i][0] == '+' - && check_level(&broken_list[i][1], - *priority_cache, 1) != 0) { + if (broken_list[i][0] == '+' && + check_level(&broken_list[i][1], *priority_cache, + 1) != 0) { continue; - } else if ((algo = - gnutls_mac_get_id(&broken_list[i][1])) - != GNUTLS_MAC_UNKNOWN) { + } else if ((algo = gnutls_mac_get_id( + &broken_list[i][1])) != + GNUTLS_MAC_UNKNOWN) { fn(&(*priority_cache)->_mac, algo); - } else - if ((centry = - cipher_name_to_entry(&broken_list[i][1])) != - NULL) { + } else if ((centry = cipher_name_to_entry( + &broken_list[i][1])) != NULL) { if (_gnutls_cipher_exists(centry->id)) { fn(&(*priority_cache)->_cipher, centry->id); if (centry->type == CIPHER_BLOCK) (*priority_cache)->have_cbc = 1; } - } else if ((algo = - _gnutls_kx_get_id(&broken_list[i][1])) != + } else if ((algo = _gnutls_kx_get_id( + &broken_list[i][1])) != GNUTLS_KX_UNKNOWN) { if (algo != GNUTLS_KX_INVALID) fn(&(*priority_cache)->_kx, algo); } else if (PRIO_MATCH("VERS-") == 0) { if (PRIO_MATCH("VERS-TLS-ALL") == 0) { - bulk_given_fn(& - (*priority_cache)-> - protocol, - stream_protocol_priority); + bulk_given_fn( + &(*priority_cache)->protocol, + stream_protocol_priority); } else if (PRIO_MATCH("VERS-DTLS-ALL") == 0) { - bulk_given_fn(& - (*priority_cache)-> - protocol, - (bulk_given_fn == - _add_priority) ? - dtls_protocol_priority : - dgram_protocol_priority); + bulk_given_fn( + &(*priority_cache)->protocol, + (bulk_given_fn == + _add_priority) ? + dtls_protocol_priority : + dgram_protocol_priority); } else if (PRIO_MATCH("VERS-ALL") == 0) { bulk_fn(&(*priority_cache)->protocol, protocol_priority); } else { - if ((algo = - gnutls_protocol_get_id - (&broken_list[i][6])) != + if ((algo = gnutls_protocol_get_id( + &broken_list[i][6])) != GNUTLS_VERSION_UNKNOWN) { fn(&(*priority_cache)->protocol, algo); } else goto error; - } - } /* now check if the element is something like -ALGO */ + } /* now check if the element is something like -ALGO */ else if (PRIO_MATCH("COMP-") == 0) { /* ignore all compression methods */ continue; - } /* now check if the element is something like -ALGO */ + } /* now check if the element is something like -ALGO */ else if (PRIO_MATCH("CURVE-") == 0) { if (PRIO_MATCH("CURVE-ALL") == 0) { - bulk_fn(& - (*priority_cache)-> - _supported_ecc, + bulk_fn(&(*priority_cache) + ->_supported_ecc, supported_groups_normal); } else { - if ((algo = - gnutls_ecc_curve_get_id - (&broken_list[i][7])) != + if ((algo = gnutls_ecc_curve_get_id( + &broken_list[i][7])) != GNUTLS_ECC_CURVE_INVALID) - fn(& - (*priority_cache)-> - _supported_ecc, algo); + fn(&(*priority_cache) + ->_supported_ecc, + algo); else goto error; } } else if (PRIO_MATCH("GROUP-") == 0) { if (PRIO_MATCH("GROUP-ALL") == 0) { - bulk_fn(& - (*priority_cache)-> - _supported_ecc, + bulk_fn(&(*priority_cache) + ->_supported_ecc, supported_groups_normal); } else if (PRIO_MATCH("GROUP-DH-ALL") == 0) { - bulk_given_fn(& - (*priority_cache)-> - _supported_ecc, + bulk_given_fn(&(*priority_cache) + ->_supported_ecc, _supported_groups_dh); } else if (PRIO_MATCH("GROUP-EC-ALL") == 0) { - bulk_given_fn(& - (*priority_cache)-> - _supported_ecc, + bulk_given_fn(&(*priority_cache) + ->_supported_ecc, _supported_groups_ecdh); } else if (PRIO_MATCH("GROUP-GOST-ALL") == 0) { - bulk_given_fn(& - (*priority_cache)-> - _supported_ecc, + bulk_given_fn(&(*priority_cache) + ->_supported_ecc, _supported_groups_gost); } else { - if ((algo = - _gnutls_group_get_id - (&broken_list[i][7])) != + if ((algo = _gnutls_group_get_id( + &broken_list[i][7])) != GNUTLS_GROUP_INVALID) - fn(& - (*priority_cache)-> - _supported_ecc, algo); + fn(&(*priority_cache) + ->_supported_ecc, + algo); else goto error; } @@ -3406,27 +3259,24 @@ gnutls_priority_init(gnutls_priority_t * priority_cache, // Certificate types if (PRIO_MATCH("CTYPE-ALL") == 0) { // Symmetric cert types, all types allowed - bulk_fn(& - (*priority_cache)->client_ctype, + bulk_fn(&(*priority_cache)->client_ctype, cert_type_priority_all); - bulk_fn(& - (*priority_cache)->server_ctype, + bulk_fn(&(*priority_cache)->server_ctype, cert_type_priority_all); } else if (PRIO_MATCH("CTYPE-CLI-") == 0) { // Client certificate types if (PRIO_MATCH("CTYPE-CLI-ALL") == 0) { // All client cert types allowed - bulk_fn(& - (*priority_cache)->client_ctype, + bulk_fn(&(*priority_cache) + ->client_ctype, cert_type_priority_all); - } else - if ((algo = - gnutls_certificate_type_get_id - (&broken_list[i][11])) != - GNUTLS_CRT_UNKNOWN) { + } else if ((algo = gnutls_certificate_type_get_id( + &broken_list[i] + [11])) != + GNUTLS_CRT_UNKNOWN) { // Specific client cert type allowed - fn(& - (*priority_cache)->client_ctype, + fn(&(*priority_cache) + ->client_ctype, algo); } else goto error; @@ -3434,33 +3284,32 @@ gnutls_priority_init(gnutls_priority_t * priority_cache, // Server certificate types if (PRIO_MATCH("CTYPE-SRV-ALL") == 0) { // All server cert types allowed - bulk_fn(& - (*priority_cache)->server_ctype, + bulk_fn(&(*priority_cache) + ->server_ctype, cert_type_priority_all); - } else - if ((algo = - gnutls_certificate_type_get_id - (&broken_list[i][11])) != - GNUTLS_CRT_UNKNOWN) { + } else if ((algo = gnutls_certificate_type_get_id( + &broken_list[i] + [11])) != + GNUTLS_CRT_UNKNOWN) { // Specific server cert type allowed - fn(& - (*priority_cache)->server_ctype, + fn(&(*priority_cache) + ->server_ctype, algo); } else goto error; - } else { // Symmetric certificate type - if ((algo = - gnutls_certificate_type_get_id - (&broken_list[i][7])) != + } else { // Symmetric certificate type + if ((algo = gnutls_certificate_type_get_id( + &broken_list[i][7])) != GNUTLS_CRT_UNKNOWN) { - fn(& - (*priority_cache)->client_ctype, + fn(&(*priority_cache) + ->client_ctype, algo); - fn(& - (*priority_cache)->server_ctype, + fn(&(*priority_cache) + ->server_ctype, algo); - } else if (PRIO_MATCH("CTYPE-OPENPGP") - == 0) { + } else if (PRIO_MATCH( + "CTYPE-OPENPGP") == + 0) { /* legacy openpgp option - ignore */ continue; } else @@ -3474,13 +3323,12 @@ gnutls_priority_init(gnutls_priority_t * priority_cache, bulk_fn(&(*priority_cache)->_sign_algo, sign_priority_gost); } else { - if ((algo = - gnutls_sign_get_id - (&broken_list[i][6])) != + if ((algo = gnutls_sign_get_id( + &broken_list[i][6])) != GNUTLS_SIGN_UNKNOWN) - fn(& - (*priority_cache)-> - _sign_algo, algo); + fn(&(*priority_cache) + ->_sign_algo, + algo); else goto error; } @@ -3509,9 +3357,9 @@ gnutls_priority_init(gnutls_priority_t * priority_cache, kx_priority_gost); } } else if (PRIO_MATCH("GOST") == 0) { - bulk_given_fn(& - (*priority_cache)->_supported_ecc, - _supported_groups_gost); + bulk_given_fn( + &(*priority_cache)->_supported_ecc, + _supported_groups_gost); bulk_fn(&(*priority_cache)->_sign_algo, sign_priority_gost); bulk_fn(&(*priority_cache)->_mac, @@ -3547,7 +3395,7 @@ gnutls_priority_init(gnutls_priority_t * priority_cache, return 0; - error: +error: if (err_pos != NULL && i < broken_list_size && resolved_match) { *err_pos = priorities; for (j = 0; j < i; j++) { @@ -3556,7 +3404,7 @@ gnutls_priority_init(gnutls_priority_t * priority_cache, } ret = GNUTLS_E_INVALID_REQUEST; - error_cleanup: +error_cleanup: gnutls_free(darg); gnutls_priority_deinit(*priority_cache); *priority_cache = NULL; @@ -3609,9 +3457,8 @@ void gnutls_priority_deinit(gnutls_priority_t priority_cache) * Returns: On syntax error %GNUTLS_E_INVALID_REQUEST is returned, * %GNUTLS_E_SUCCESS on success, or an error code. **/ -int -gnutls_priority_set_direct(gnutls_session_t session, - const char *priorities, const char **err_pos) +int gnutls_priority_set_direct(gnutls_session_t session, const char *priorities, + const char **err_pos) { gnutls_priority_t prio; int ret; @@ -3651,14 +3498,13 @@ static void break_list(char *list, char *broken_list[MAX_ELEMENTS], int *size) p = strchr(p, ':'); if (p) { *p = 0; - p++; /* move to next entry and skip white + p++; /* move to next entry and skip white * space. */ while (*p == ' ') p++; } - } - while (p != NULL && *size < MAX_ELEMENTS); + } while (p != NULL && *size < MAX_ELEMENTS); } /** @@ -3723,9 +3569,8 @@ int gnutls_set_default_priority_append(gnutls_session_t session, gnutls_priority_t prio; int ret; - ret = - gnutls_priority_init2(&prio, add_prio, err_pos, - GNUTLS_PRIORITY_INIT_DEF_APPEND); + ret = gnutls_priority_init2(&prio, add_prio, err_pos, + GNUTLS_PRIORITY_INIT_DEF_APPEND); if (ret < 0) { gnutls_assert(); return ret; @@ -3758,9 +3603,8 @@ int gnutls_set_default_priority_append(gnutls_session_t session, * * Since: 3.0 **/ -int -gnutls_priority_ecc_curve_list(gnutls_priority_t pcache, - const unsigned int **list) +int gnutls_priority_ecc_curve_list(gnutls_priority_t pcache, + const unsigned int **list) { unsigned i; @@ -3790,8 +3634,8 @@ gnutls_priority_ecc_curve_list(gnutls_priority_t pcache, * * Since: 3.6.0 **/ -int -gnutls_priority_group_list(gnutls_priority_t pcache, const unsigned int **list) +int gnutls_priority_group_list(gnutls_priority_t pcache, + const unsigned int **list) { if (pcache->_supported_ecc.num_priorities == 0) return 0; @@ -3831,8 +3675,8 @@ int gnutls_priority_kx_list(gnutls_priority_t pcache, const unsigned int **list) * Returns: the number of items, or an error code. * Since: 3.2.3 **/ -int -gnutls_priority_cipher_list(gnutls_priority_t pcache, const unsigned int **list) +int gnutls_priority_cipher_list(gnutls_priority_t pcache, + const unsigned int **list) { if (pcache->_cipher.num_priorities == 0) return 0; @@ -3852,8 +3696,8 @@ gnutls_priority_cipher_list(gnutls_priority_t pcache, const unsigned int **list) * Returns: the number of items, or an error code. * Since: 3.2.3 **/ -int -gnutls_priority_mac_list(gnutls_priority_t pcache, const unsigned int **list) +int gnutls_priority_mac_list(gnutls_priority_t pcache, + const unsigned int **list) { if (pcache->_mac.num_priorities == 0) return 0; @@ -3873,9 +3717,8 @@ gnutls_priority_mac_list(gnutls_priority_t pcache, const unsigned int **list) * Returns: the number of methods, or an error code. * Since: 3.0 **/ -int -gnutls_priority_compression_list(gnutls_priority_t pcache, - const unsigned int **list) +int gnutls_priority_compression_list(gnutls_priority_t pcache, + const unsigned int **list) { static const unsigned int priority[1] = { GNUTLS_COMP_NULL }; @@ -3894,9 +3737,8 @@ gnutls_priority_compression_list(gnutls_priority_t pcache, * Returns: the number of protocols, or an error code. * Since: 3.0 **/ -int -gnutls_priority_protocol_list(gnutls_priority_t pcache, - const unsigned int **list) +int gnutls_priority_protocol_list(gnutls_priority_t pcache, + const unsigned int **list) { if (pcache->protocol.num_priorities == 0) return 0; @@ -3916,8 +3758,8 @@ gnutls_priority_protocol_list(gnutls_priority_t pcache, * Returns: the number of algorithms, or an error code. * Since: 3.0 **/ -int -gnutls_priority_sign_list(gnutls_priority_t pcache, const unsigned int **list) +int gnutls_priority_sign_list(gnutls_priority_t pcache, + const unsigned int **list) { if (pcache->_sign_algo.num_priorities == 0) return 0; @@ -3943,13 +3785,12 @@ gnutls_priority_sign_list(gnutls_priority_t pcache, const unsigned int **list) * Returns: the number of certificate types, or an error code. * Since: 3.0 **/ -int -gnutls_priority_certificate_type_list(gnutls_priority_t pcache, - const unsigned int **list) +int gnutls_priority_certificate_type_list(gnutls_priority_t pcache, + const unsigned int **list) { - gnutls_ctype_target_t target = - pcache->server_precedence ? GNUTLS_CTYPE_SERVER : - GNUTLS_CTYPE_CLIENT; + gnutls_ctype_target_t target = pcache->server_precedence ? + GNUTLS_CTYPE_SERVER : + GNUTLS_CTYPE_CLIENT; return gnutls_priority_certificate_type_list2(pcache, list, target); } @@ -3968,10 +3809,9 @@ gnutls_priority_certificate_type_list(gnutls_priority_t pcache, * * Since: 3.6.4 **/ -int -gnutls_priority_certificate_type_list2(gnutls_priority_t pcache, - const unsigned int **list, - gnutls_ctype_target_t target) +int gnutls_priority_certificate_type_list2(gnutls_priority_t pcache, + const unsigned int **list, + gnutls_ctype_target_t target) { switch (target) { case GNUTLS_CTYPE_CLIENT: @@ -4040,7 +3880,7 @@ system_wide_config_is_malleable(void) } if (system_wide_config.priority_string) { _gnutls_audit_log(NULL, "priority strings have already been " - "initialized!\n"); + "initialized!\n"); return false; } return true; @@ -4173,9 +4013,8 @@ int gnutls_sign_set_secure(gnutls_sign_algorithm_t sign, unsigned int secure) * * Since: 3.7.3 */ -int -gnutls_sign_set_secure_for_certs(gnutls_sign_algorithm_t sign, - unsigned int secure) +int gnutls_sign_set_secure_for_certs(gnutls_sign_algorithm_t sign, + unsigned int secure) { #ifndef DISABLE_SYSTEM_CONFIG int ret; @@ -4231,9 +4070,9 @@ gnutls_sign_set_secure_for_certs(gnutls_sign_algorithm_t sign, * * Since: 3.7.3 */ -int /* allowlisting-only */ - /* not thread-safe */ gnutls_protocol_set_enabled(gnutls_protocol_t version, - unsigned int enabled) +int /* allowlisting-only */ +/* not thread-safe */ +gnutls_protocol_set_enabled(gnutls_protocol_t version, unsigned int enabled) { #ifndef DISABLE_SYSTEM_CONFIG int ret; diff --git a/lib/privkey.c b/lib/privkey.c index 7a5a38a58d..78774a1c17 100644 --- a/lib/privkey.c +++ b/lib/privkey.c @@ -39,12 +39,11 @@ #include "pkcs11_int.h" #include -static int -privkey_sign_prehashed(gnutls_privkey_t signer, - const gnutls_sign_entry_st * se, - const gnutls_datum_t * hash_data, - gnutls_datum_t * signature, - gnutls_x509_spki_st * params); +static int privkey_sign_prehashed(gnutls_privkey_t signer, + const gnutls_sign_entry_st *se, + const gnutls_datum_t *hash_data, + gnutls_datum_t *signature, + gnutls_x509_spki_st *params); /** * gnutls_privkey_get_type: @@ -80,7 +79,7 @@ gnutls_privkey_type_t gnutls_privkey_get_type(gnutls_privkey_t key) * Since: 3.5.0 **/ int gnutls_privkey_get_seed(gnutls_privkey_t key, - gnutls_digest_algorithm_t * digest, void *seed, + gnutls_digest_algorithm_t *digest, void *seed, size_t *seed_size) { if (key->type != GNUTLS_PRIVKEY_X509) @@ -151,12 +150,11 @@ int gnutls_privkey_get_pk_algorithm(gnutls_privkey_t key, unsigned int *bits) gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; } - } -static int -privkey_to_pubkey(gnutls_pk_algorithm_t pk, - const gnutls_pk_params_st * priv, gnutls_pk_params_st * pub) +static int privkey_to_pubkey(gnutls_pk_algorithm_t pk, + const gnutls_pk_params_st *priv, + gnutls_pk_params_st *pub) { int ret; @@ -215,9 +213,8 @@ privkey_to_pubkey(gnutls_pk_algorithm_t pk, case GNUTLS_PK_EDDSA_ED448: case GNUTLS_PK_ECDH_X25519: case GNUTLS_PK_ECDH_X448: - ret = - _gnutls_set_datum(&pub->raw_pub, priv->raw_pub.data, - priv->raw_pub.size); + ret = _gnutls_set_datum(&pub->raw_pub, priv->raw_pub.data, + priv->raw_pub.size); if (ret < 0) return gnutls_assert_val(ret); @@ -230,7 +227,8 @@ privkey_to_pubkey(gnutls_pk_algorithm_t pk, pub->params_nr = GOST_PUBLIC_PARAMS; - if (pub->params[GOST_X] == NULL || pub->params[GOST_Y] == NULL) { + if (pub->params[GOST_X] == NULL || + pub->params[GOST_Y] == NULL) { gnutls_assert(); ret = GNUTLS_E_MEMORY_ERROR; goto cleanup; @@ -243,14 +241,14 @@ privkey_to_pubkey(gnutls_pk_algorithm_t pk, } return 0; - cleanup: +cleanup: gnutls_pk_params_release(pub); return ret; } /* Returns the public key of the private key (if possible) */ -int _gnutls_privkey_get_mpis(gnutls_privkey_t key, gnutls_pk_params_st * params) +int _gnutls_privkey_get_mpis(gnutls_privkey_t key, gnutls_pk_params_st *params) { int ret; @@ -259,26 +257,23 @@ int _gnutls_privkey_get_mpis(gnutls_privkey_t key, gnutls_pk_params_st * params) ret = _gnutls_pk_params_copy(params, &key->key.x509->params); break; #ifdef ENABLE_PKCS11 - case GNUTLS_PRIVKEY_PKCS11:{ - gnutls_pubkey_t pubkey; + case GNUTLS_PRIVKEY_PKCS11: { + gnutls_pubkey_t pubkey; - ret = - _pkcs11_privkey_get_pubkey(key->key.pkcs11, &pubkey, - 0); - if (ret < 0) - return gnutls_assert_val(ret); + ret = _pkcs11_privkey_get_pubkey(key->key.pkcs11, &pubkey, 0); + if (ret < 0) + return gnutls_assert_val(ret); - ret = _gnutls_pubkey_get_mpis(pubkey, params); - gnutls_pubkey_deinit(pubkey); + ret = _gnutls_pubkey_get_mpis(pubkey, params); + gnutls_pubkey_deinit(pubkey); - break; - } + break; + } #endif default: if (key->key.ext.pk_params_func) { - ret = key->key.ext.pk_params_func(key, - key->key.ext.userdata, - params); + ret = key->key.ext.pk_params_func( + key, key->key.ext.userdata, params); if (ret < 0) return gnutls_assert_val(ret); return ret; @@ -290,9 +285,8 @@ int _gnutls_privkey_get_mpis(gnutls_privkey_t key, gnutls_pk_params_st * params) return ret; } -int -_gnutls_privkey_get_public_mpis(gnutls_privkey_t key, - gnutls_pk_params_st * params) +int _gnutls_privkey_get_public_mpis(gnutls_privkey_t key, + gnutls_pk_params_st *params) { int ret; gnutls_pk_params_st tmp1; @@ -314,9 +308,8 @@ _gnutls_privkey_get_public_mpis(gnutls_privkey_t key, } /* This function retrieves default sign parameters from KEY. */ -int -_gnutls_privkey_get_spki_params(gnutls_privkey_t key, - gnutls_x509_spki_st * params) +int _gnutls_privkey_get_spki_params(gnutls_privkey_t key, + gnutls_x509_spki_st *params) { switch (key->type) { #ifdef ENABLE_PKCS11 @@ -345,11 +338,11 @@ _gnutls_privkey_get_spki_params(gnutls_privkey_t key, * After calling this function the params structure will * be initialized even if the original SubjectPublicKeyInfo was empty. */ -int -_gnutls_privkey_update_spki_params(gnutls_privkey_t key, - gnutls_pk_algorithm_t pk, - gnutls_digest_algorithm_t dig, - unsigned flags, gnutls_x509_spki_st * params) +int _gnutls_privkey_update_spki_params(gnutls_privkey_t key, + gnutls_pk_algorithm_t pk, + gnutls_digest_algorithm_t dig, + unsigned flags, + gnutls_x509_spki_st *params) { unsigned salt_size = 0; unsigned bits = 0; @@ -379,11 +372,10 @@ _gnutls_privkey_update_spki_params(gnutls_privkey_t key, if (params->pk == GNUTLS_PK_RSA) salt_size = 0; else if (params->pk == GNUTLS_PK_RSA_PSS) { - if (params->rsa_pss_dig != GNUTLS_DIG_UNKNOWN - && dig != params->rsa_pss_dig) { - return - gnutls_assert_val - (GNUTLS_E_CONSTRAINT_ERROR); + if (params->rsa_pss_dig != GNUTLS_DIG_UNKNOWN && + dig != params->rsa_pss_dig) { + return gnutls_assert_val( + GNUTLS_E_CONSTRAINT_ERROR); } salt_size = params->salt_size; @@ -392,16 +384,14 @@ _gnutls_privkey_update_spki_params(gnutls_privkey_t key, if (flags & GNUTLS_PRIVKEY_FLAG_REPRODUCIBLE) params->salt_size = 0; else { - ret = - _gnutls_find_rsa_pss_salt_size(bits, me, salt_size); + ret = _gnutls_find_rsa_pss_salt_size(bits, me, + salt_size); if (ret < 0) return gnutls_assert_val(ret); - if (flags & - GNUTLS_PRIVKEY_FLAG_RSA_PSS_FIXED_SALT_LENGTH - && (size_t)ret != _gnutls_hash_get_algo_len(me)) { - return - gnutls_assert_val - (GNUTLS_E_CONSTRAINT_ERROR); + if (flags & GNUTLS_PRIVKEY_FLAG_RSA_PSS_FIXED_SALT_LENGTH && + (size_t)ret != _gnutls_hash_get_algo_len(me)) { + return gnutls_assert_val( + GNUTLS_E_CONSTRAINT_ERROR); } params->salt_size = ret; } @@ -433,7 +423,7 @@ _gnutls_privkey_update_spki_params(gnutls_privkey_t key, * * Since: 2.12.0 **/ -int gnutls_privkey_init(gnutls_privkey_t * key) +int gnutls_privkey_init(gnutls_privkey_t *key) { *key = NULL; FAIL_IF_LIB_ERROR; @@ -460,8 +450,8 @@ void gnutls_privkey_deinit(gnutls_privkey_t key) if (key == NULL) return; - if (key->flags & GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE - || key->flags & GNUTLS_PRIVKEY_IMPORT_COPY) + if (key->flags & GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE || + key->flags & GNUTLS_PRIVKEY_IMPORT_COPY) switch (key->type) { #ifdef ENABLE_PKCS11 case GNUTLS_PRIVKEY_PKCS11: @@ -523,9 +513,9 @@ static int check_if_clean(gnutls_privkey_t key) * * Since: 2.12.0 **/ -int -gnutls_privkey_import_pkcs11(gnutls_privkey_t pkey, - gnutls_pkcs11_privkey_t key, unsigned int flags) +int gnutls_privkey_import_pkcs11(gnutls_privkey_t pkey, + gnutls_pkcs11_privkey_t key, + unsigned int flags) { int ret; @@ -550,7 +540,7 @@ gnutls_privkey_import_pkcs11(gnutls_privkey_t pkey, return 0; } -# if 0 +#if 0 /** * gnutls_privkey_import_pkcs11_url: * @key: A key of type #gnutls_pubkey_t @@ -569,11 +559,10 @@ int gnutls_privkey_import_pkcs11_url(gnutls_privkey_t key, const char *url) { int x; } -# endif +#endif -static -int _gnutls_privkey_import_pkcs11_url(gnutls_privkey_t key, const char *url, - unsigned flags) +static int _gnutls_privkey_import_pkcs11_url(gnutls_privkey_t key, + const char *url, unsigned flags) { gnutls_pkcs11_privkey_t pkey; int ret; @@ -594,9 +583,8 @@ int _gnutls_privkey_import_pkcs11_url(gnutls_privkey_t key, const char *url, goto cleanup; } - ret = - gnutls_privkey_import_pkcs11(key, pkey, - GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE); + ret = gnutls_privkey_import_pkcs11(key, pkey, + GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -604,7 +592,7 @@ int _gnutls_privkey_import_pkcs11_url(gnutls_privkey_t key, const char *url, return 0; - cleanup: +cleanup: gnutls_pkcs11_privkey_deinit(pkey); return ret; @@ -625,9 +613,8 @@ int _gnutls_privkey_import_pkcs11_url(gnutls_privkey_t key, const char *url, * * Since: 3.4.0 */ -int -gnutls_privkey_export_pkcs11(gnutls_privkey_t pkey, - gnutls_pkcs11_privkey_t * key) +int gnutls_privkey_export_pkcs11(gnutls_privkey_t pkey, + gnutls_pkcs11_privkey_t *key) { int ret; @@ -651,7 +638,7 @@ gnutls_privkey_export_pkcs11(gnutls_privkey_t pkey, return 0; } -#endif /* ENABLE_PKCS11 */ +#endif /* ENABLE_PKCS11 */ /** * gnutls_privkey_import_ext: @@ -678,20 +665,19 @@ gnutls_privkey_export_pkcs11(gnutls_privkey_t pkey, * * Since: 3.0 **/ -int -gnutls_privkey_import_ext(gnutls_privkey_t pkey, - gnutls_pk_algorithm_t pk, - void *userdata, - gnutls_privkey_sign_func sign_func, - gnutls_privkey_decrypt_func decrypt_func, - unsigned int flags) +int gnutls_privkey_import_ext(gnutls_privkey_t pkey, gnutls_pk_algorithm_t pk, + void *userdata, + gnutls_privkey_sign_func sign_func, + gnutls_privkey_decrypt_func decrypt_func, + unsigned int flags) { return gnutls_privkey_import_ext2(pkey, pk, userdata, sign_func, decrypt_func, NULL, flags); } -#define PK_IS_OK_FOR_EXT2(pk) \ - ((pk == GNUTLS_PK_RSA) || (pk == GNUTLS_PK_ECDSA) || (pk == GNUTLS_PK_DSA)) +#define PK_IS_OK_FOR_EXT2(pk) \ + ((pk == GNUTLS_PK_RSA) || (pk == GNUTLS_PK_ECDSA) || \ + (pk == GNUTLS_PK_DSA)) /** * gnutls_privkey_import_ext2: @@ -720,14 +706,11 @@ gnutls_privkey_import_ext(gnutls_privkey_t pkey, * * Since: 3.1 **/ -int -gnutls_privkey_import_ext2(gnutls_privkey_t pkey, - gnutls_pk_algorithm_t pk, - void *userdata, - gnutls_privkey_sign_func sign_fn, - gnutls_privkey_decrypt_func decrypt_fn, - gnutls_privkey_deinit_func deinit_fn, - unsigned int flags) +int gnutls_privkey_import_ext2(gnutls_privkey_t pkey, gnutls_pk_algorithm_t pk, + void *userdata, gnutls_privkey_sign_func sign_fn, + gnutls_privkey_decrypt_func decrypt_fn, + gnutls_privkey_deinit_func deinit_fn, + unsigned int flags) { int ret; @@ -787,13 +770,12 @@ gnutls_privkey_import_ext2(gnutls_privkey_t pkey, * * Since: 3.4.0 **/ -int -gnutls_privkey_import_ext3(gnutls_privkey_t pkey, - void *userdata, - gnutls_privkey_sign_func sign_fn, - gnutls_privkey_decrypt_func decrypt_fn, - gnutls_privkey_deinit_func deinit_fn, - gnutls_privkey_info_func info_fn, unsigned int flags) +int gnutls_privkey_import_ext3(gnutls_privkey_t pkey, void *userdata, + gnutls_privkey_sign_func sign_fn, + gnutls_privkey_decrypt_func decrypt_fn, + gnutls_privkey_deinit_func deinit_fn, + gnutls_privkey_info_func info_fn, + unsigned int flags) { int ret; @@ -817,9 +799,8 @@ gnutls_privkey_import_ext3(gnutls_privkey_t pkey, pkey->type = GNUTLS_PRIVKEY_EXT; pkey->flags = flags; - pkey->pk_algorithm = - pkey->key.ext.info_func(pkey, GNUTLS_PRIVKEY_INFO_PK_ALGO, - pkey->key.ext.userdata); + pkey->pk_algorithm = pkey->key.ext.info_func( + pkey, GNUTLS_PRIVKEY_INFO_PK_ALGO, pkey->key.ext.userdata); if (!PK_IS_OK_FOR_EXT2(pkey->pk_algorithm)) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); @@ -877,14 +858,13 @@ gnutls_privkey_import_ext3(gnutls_privkey_t pkey, * * Since: 3.6.0 **/ -int -gnutls_privkey_import_ext4(gnutls_privkey_t pkey, - void *userdata, - gnutls_privkey_sign_data_func sign_data_fn, - gnutls_privkey_sign_hash_func sign_hash_fn, - gnutls_privkey_decrypt_func decrypt_fn, - gnutls_privkey_deinit_func deinit_fn, - gnutls_privkey_info_func info_fn, unsigned int flags) +int gnutls_privkey_import_ext4(gnutls_privkey_t pkey, void *userdata, + gnutls_privkey_sign_data_func sign_data_fn, + gnutls_privkey_sign_hash_func sign_hash_fn, + gnutls_privkey_decrypt_func decrypt_fn, + gnutls_privkey_deinit_func deinit_fn, + gnutls_privkey_info_func info_fn, + unsigned int flags) { int ret; @@ -909,13 +889,11 @@ gnutls_privkey_import_ext4(gnutls_privkey_t pkey, pkey->type = GNUTLS_PRIVKEY_EXT; pkey->flags = flags; - pkey->pk_algorithm = - pkey->key.ext.info_func(pkey, GNUTLS_PRIVKEY_INFO_PK_ALGO, - pkey->key.ext.userdata); + pkey->pk_algorithm = pkey->key.ext.info_func( + pkey, GNUTLS_PRIVKEY_INFO_PK_ALGO, pkey->key.ext.userdata); - ret = - pkey->key.ext.info_func(pkey, GNUTLS_PRIVKEY_INFO_PK_ALGO_BITS, - pkey->key.ext.userdata); + ret = pkey->key.ext.info_func(pkey, GNUTLS_PRIVKEY_INFO_PK_ALGO_BITS, + pkey->key.ext.userdata); if (ret >= 0) pkey->key.ext.bits = ret; @@ -946,9 +924,8 @@ gnutls_privkey_import_ext4(gnutls_privkey_t pkey, * * Since: 2.12.0 **/ -int -gnutls_privkey_import_x509(gnutls_privkey_t pkey, - gnutls_x509_privkey_t key, unsigned int flags) +int gnutls_privkey_import_x509(gnutls_privkey_t pkey, gnutls_x509_privkey_t key, + unsigned int flags) { int ret; @@ -993,8 +970,8 @@ gnutls_privkey_import_x509(gnutls_privkey_t pkey, * * Since: 3.4.0 */ -int -gnutls_privkey_export_x509(gnutls_privkey_t pkey, gnutls_x509_privkey_t * key) +int gnutls_privkey_export_x509(gnutls_privkey_t pkey, + gnutls_x509_privkey_t *key) { int ret; @@ -1052,10 +1029,8 @@ gnutls_privkey_export_x509(gnutls_privkey_t pkey, gnutls_x509_privkey_t * key) * * Since: 3.3.0 **/ -int -gnutls_privkey_generate(gnutls_privkey_t pkey, - gnutls_pk_algorithm_t algo, unsigned int bits, - unsigned int flags) +int gnutls_privkey_generate(gnutls_privkey_t pkey, gnutls_pk_algorithm_t algo, + unsigned int bits, unsigned int flags) { return gnutls_privkey_generate2(pkey, algo, bits, flags, NULL, 0); } @@ -1100,11 +1075,10 @@ gnutls_privkey_generate(gnutls_privkey_t pkey, * * Since: 3.5.0 **/ -int -gnutls_privkey_generate2(gnutls_privkey_t pkey, - gnutls_pk_algorithm_t algo, unsigned int bits, - unsigned int flags, const gnutls_keygen_data_st * data, - unsigned data_size) +int gnutls_privkey_generate2(gnutls_privkey_t pkey, gnutls_pk_algorithm_t algo, + unsigned int bits, unsigned int flags, + const gnutls_keygen_data_st *data, + unsigned data_size) { int ret; @@ -1112,9 +1086,8 @@ gnutls_privkey_generate2(gnutls_privkey_t pkey, if (ret < 0) return gnutls_assert_val(ret); - ret = - gnutls_x509_privkey_generate2(pkey->key.x509, algo, bits, flags, - data, data_size); + ret = gnutls_x509_privkey_generate2(pkey->key.x509, algo, bits, flags, + data, data_size); if (ret < 0) { gnutls_x509_privkey_deinit(pkey->key.x509); pkey->key.x509 = NULL; @@ -1149,12 +1122,10 @@ gnutls_privkey_generate2(gnutls_privkey_t pkey, * * Since: 2.12.0 **/ -int -gnutls_privkey_sign_data(gnutls_privkey_t signer, - gnutls_digest_algorithm_t hash, - unsigned int flags, - const gnutls_datum_t * data, - gnutls_datum_t * signature) +int gnutls_privkey_sign_data(gnutls_privkey_t signer, + gnutls_digest_algorithm_t hash, unsigned int flags, + const gnutls_datum_t *data, + gnutls_datum_t *signature) { int ret; gnutls_x509_spki_st params; @@ -1177,10 +1148,9 @@ gnutls_privkey_sign_data(gnutls_privkey_t signer, FIX_SIGN_PARAMS(params, flags, hash); - return privkey_sign_and_hash_data(signer, - _gnutls_pk_to_sign_entry(params.pk, - hash), data, - signature, ¶ms); + return privkey_sign_and_hash_data( + signer, _gnutls_pk_to_sign_entry(params.pk, hash), data, + signature, ¶ms); } /** @@ -1201,12 +1171,10 @@ gnutls_privkey_sign_data(gnutls_privkey_t signer, * * Since: 3.6.0 **/ -int -gnutls_privkey_sign_data2(gnutls_privkey_t signer, - gnutls_sign_algorithm_t algo, - unsigned int flags, - const gnutls_datum_t * data, - gnutls_datum_t * signature) +int gnutls_privkey_sign_data2(gnutls_privkey_t signer, + gnutls_sign_algorithm_t algo, unsigned int flags, + const gnutls_datum_t *data, + gnutls_datum_t *signature) { int ret; gnutls_x509_spki_st params; @@ -1262,12 +1230,10 @@ gnutls_privkey_sign_data2(gnutls_privkey_t signer, * * Since: 3.6.0 **/ -int -gnutls_privkey_sign_hash2(gnutls_privkey_t signer, - gnutls_sign_algorithm_t algo, - unsigned int flags, - const gnutls_datum_t * hash_data, - gnutls_datum_t * signature) +int gnutls_privkey_sign_hash2(gnutls_privkey_t signer, + gnutls_sign_algorithm_t algo, unsigned int flags, + const gnutls_datum_t *hash_data, + gnutls_datum_t *signature) { int ret; gnutls_x509_spki_st params; @@ -1302,7 +1268,7 @@ gnutls_privkey_sign_hash2(gnutls_privkey_t signer, ret = privkey_sign_prehashed(signer, se, hash_data, signature, ¶ms); - cleanup: +cleanup: if (ret < 0) { _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); } else { @@ -1311,12 +1277,11 @@ gnutls_privkey_sign_hash2(gnutls_privkey_t signer, return ret; } -int -privkey_sign_and_hash_data(gnutls_privkey_t signer, - const gnutls_sign_entry_st * se, - const gnutls_datum_t * data, - gnutls_datum_t * signature, - gnutls_x509_spki_st * params) +int privkey_sign_and_hash_data(gnutls_privkey_t signer, + const gnutls_sign_entry_st *se, + const gnutls_datum_t *data, + gnutls_datum_t *signature, + gnutls_x509_spki_st *params) { int ret; gnutls_datum_t digest; @@ -1356,7 +1321,7 @@ privkey_sign_and_hash_data(gnutls_privkey_t signer, return 0; - cleanup: +cleanup: _gnutls_free_datum(&digest); return ret; } @@ -1389,12 +1354,11 @@ privkey_sign_and_hash_data(gnutls_privkey_t signer, * * Since: 2.12.0 **/ -int -gnutls_privkey_sign_hash(gnutls_privkey_t signer, - gnutls_digest_algorithm_t hash_algo, - unsigned int flags, - const gnutls_datum_t * hash_data, - gnutls_datum_t * signature) +int gnutls_privkey_sign_hash(gnutls_privkey_t signer, + gnutls_digest_algorithm_t hash_algo, + unsigned int flags, + const gnutls_datum_t *hash_data, + gnutls_datum_t *signature) { int ret; gnutls_x509_spki_st params; @@ -1416,13 +1380,13 @@ gnutls_privkey_sign_hash(gnutls_privkey_t signer, /* legacy callers of this API could use a hash algorithm of 0 (unknown) * to indicate raw hashing. As we now always want to know the signing * algorithm involved, we try discovering the hash algorithm. */ - if (hash_algo == 0 - && (params.pk == GNUTLS_PK_DSA || params.pk == GNUTLS_PK_ECDSA)) { + if (hash_algo == 0 && + (params.pk == GNUTLS_PK_DSA || params.pk == GNUTLS_PK_ECDSA)) { hash_algo = _gnutls_hash_size_to_sha_hash(hash_data->size); } - if (params.pk == GNUTLS_PK_RSA - && (flags & GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA)) { + if (params.pk == GNUTLS_PK_RSA && + (flags & GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA)) { /* the corresponding signature algorithm is SIGN_RSA_RAW, * irrespective of hash algorithm. */ se = _gnutls_sign_to_entry(GNUTLS_SIGN_RSA_RAW); @@ -1438,7 +1402,7 @@ gnutls_privkey_sign_hash(gnutls_privkey_t signer, FIX_SIGN_PARAMS(params, flags, hash_algo); ret = privkey_sign_prehashed(signer, se, hash_data, signature, ¶ms); - cleanup: +cleanup: if (ret < 0) { _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); } else { @@ -1447,11 +1411,11 @@ gnutls_privkey_sign_hash(gnutls_privkey_t signer, return ret; } -static int -privkey_sign_prehashed(gnutls_privkey_t signer, - const gnutls_sign_entry_st * se, - const gnutls_datum_t * hash_data, - gnutls_datum_t * signature, gnutls_x509_spki_st * params) +static int privkey_sign_prehashed(gnutls_privkey_t signer, + const gnutls_sign_entry_st *se, + const gnutls_datum_t *hash_data, + gnutls_datum_t *signature, + gnutls_x509_spki_st *params) { int ret; gnutls_datum_t digest; @@ -1460,8 +1424,8 @@ privkey_sign_prehashed(gnutls_privkey_t signer, return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); if (se->id == GNUTLS_SIGN_RSA_RAW) { - return privkey_sign_raw_data(signer, - se, hash_data, signature, params); + return privkey_sign_raw_data(signer, se, hash_data, signature, + params); } if (_gnutls_pk_is_not_prehashed(signer->pk_algorithm)) { @@ -1490,7 +1454,7 @@ privkey_sign_prehashed(gnutls_privkey_t signer, ret = 0; - cleanup: +cleanup: _gnutls_free_datum(&digest); return ret; } @@ -1517,11 +1481,9 @@ privkey_sign_prehashed(gnutls_privkey_t signer, * * Since: 3.1.10 -*/ -int -privkey_sign_raw_data(gnutls_privkey_t key, - const gnutls_sign_entry_st * se, - const gnutls_datum_t * data, - gnutls_datum_t * signature, gnutls_x509_spki_st * params) +int privkey_sign_raw_data(gnutls_privkey_t key, const gnutls_sign_entry_st *se, + const gnutls_datum_t *data, gnutls_datum_t *signature, + gnutls_x509_spki_st *params) { if (unlikely(se == NULL)) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); @@ -1529,8 +1491,8 @@ privkey_sign_raw_data(gnutls_privkey_t key, switch (key->type) { #ifdef ENABLE_PKCS11 case GNUTLS_PRIVKEY_PKCS11: - return _gnutls_pkcs11_privkey_sign(key->key.pkcs11, se, - data, signature, params); + return _gnutls_pkcs11_privkey_sign(key->key.pkcs11, se, data, + signature, params); #endif case GNUTLS_PRIVKEY_X509: return _gnutls_pk_sign(se->pk, signature, data, @@ -1543,13 +1505,12 @@ privkey_sign_raw_data(gnutls_privkey_t key, if (_gnutls_pk_is_not_prehashed(se->pk)) { if (!key->key.ext.sign_data_func) - return - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + return gnutls_assert_val( + GNUTLS_E_INVALID_REQUEST); - return key->key.ext.sign_data_func(key, se->id, - key->key. - ext.userdata, 0, - data, signature); + return key->key.ext.sign_data_func( + key, se->id, key->key.ext.userdata, 0, data, + signature); } else if (key->key.ext.sign_hash_func) { if (se->pk == GNUTLS_PK_RSA) { se = _gnutls_sign_to_entry(GNUTLS_SIGN_RSA_RAW); @@ -1557,18 +1518,16 @@ privkey_sign_raw_data(gnutls_privkey_t key, } /* se may not be set here if we are doing legacy RSA */ - return key->key.ext.sign_hash_func(key, se->id, - key->key. - ext.userdata, 0, - data, signature); + return key->key.ext.sign_hash_func( + key, se->id, key->key.ext.userdata, 0, data, + signature); } else { if (!PK_IS_OK_FOR_EXT2(se->pk)) - return - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + return gnutls_assert_val( + GNUTLS_E_INVALID_REQUEST); - return key->key.ext.sign_func(key, - key->key.ext.userdata, - data, signature); + return key->key.ext.sign_func( + key, key->key.ext.userdata, data, signature); } default: gnutls_assert(); @@ -1591,11 +1550,9 @@ privkey_sign_raw_data(gnutls_privkey_t key, * * Since: 2.12.0 **/ -int -gnutls_privkey_decrypt_data(gnutls_privkey_t key, - unsigned int flags, - const gnutls_datum_t * ciphertext, - gnutls_datum_t * plaintext) +int gnutls_privkey_decrypt_data(gnutls_privkey_t key, unsigned int flags, + const gnutls_datum_t *ciphertext, + gnutls_datum_t *plaintext) { switch (key->type) { case GNUTLS_PRIVKEY_X509: @@ -1603,17 +1560,14 @@ gnutls_privkey_decrypt_data(gnutls_privkey_t key, ciphertext, &key->key.x509->params); #ifdef ENABLE_PKCS11 case GNUTLS_PRIVKEY_PKCS11: - return _gnutls_pkcs11_privkey_decrypt_data(key->key.pkcs11, - flags, - ciphertext, - plaintext); + return _gnutls_pkcs11_privkey_decrypt_data( + key->key.pkcs11, flags, ciphertext, plaintext); #endif case GNUTLS_PRIVKEY_EXT: if (key->key.ext.decrypt_func == NULL) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - return key->key.ext.decrypt_func(key, - key->key.ext.userdata, + return key->key.ext.decrypt_func(key, key->key.ext.userdata, ciphertext, plaintext); default: gnutls_assert(); @@ -1639,11 +1593,10 @@ gnutls_privkey_decrypt_data(gnutls_privkey_t key, * Since: 3.6.5 **/ -int -gnutls_privkey_decrypt_data2(gnutls_privkey_t key, - unsigned int flags, - const gnutls_datum_t * ciphertext, - unsigned char *plaintext, size_t plaintext_size) +int gnutls_privkey_decrypt_data2(gnutls_privkey_t key, unsigned int flags, + const gnutls_datum_t *ciphertext, + unsigned char *plaintext, + size_t plaintext_size) { /* Note: except for the backwards compatibility function, no * conditional code should be called after the decryption @@ -1656,8 +1609,7 @@ gnutls_privkey_decrypt_data2(gnutls_privkey_t key, key->key.ext.decrypt_func != NULL) { gnutls_datum_t plain; int ret; - ret = key->key.ext.decrypt_func(key, - key->key.ext.userdata, + ret = key->key.ext.decrypt_func(key, key->key.ext.userdata, ciphertext, &plain); if (plain.size != plaintext_size) { ret = gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); @@ -1676,8 +1628,7 @@ gnutls_privkey_decrypt_data2(gnutls_privkey_t key, #ifdef ENABLE_PKCS11 case GNUTLS_PRIVKEY_PKCS11: return _gnutls_pkcs11_privkey_decrypt_data2(key->key.pkcs11, - flags, - ciphertext, + flags, ciphertext, plaintext, plaintext_size); #endif @@ -1685,8 +1636,7 @@ gnutls_privkey_decrypt_data2(gnutls_privkey_t key, if (key->key.ext.decrypt_func2 == NULL) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - return key->key.ext.decrypt_func2(key, - key->key.ext.userdata, + return key->key.ext.decrypt_func2(key, key->key.ext.userdata, ciphertext, plaintext, plaintext_size); default: @@ -1715,7 +1665,7 @@ gnutls_privkey_decrypt_data2(gnutls_privkey_t key, * Since: 3.1.0 **/ int gnutls_privkey_import_x509_raw(gnutls_privkey_t pkey, - const gnutls_datum_t * data, + const gnutls_datum_t *data, gnutls_x509_crt_fmt_t format, const char *password, unsigned int flags) { @@ -1748,9 +1698,8 @@ int gnutls_privkey_import_x509_raw(gnutls_privkey_t pkey, goto cleanup; } - ret = - gnutls_privkey_import_x509(pkey, xpriv, - GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE); + ret = gnutls_privkey_import_x509(pkey, xpriv, + GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -1758,7 +1707,7 @@ int gnutls_privkey_import_x509_raw(gnutls_privkey_t pkey, return 0; - cleanup: +cleanup: gnutls_x509_privkey_deinit(xpriv); return ret; @@ -1779,21 +1728,18 @@ int gnutls_privkey_import_x509_raw(gnutls_privkey_t pkey, * * Since: 3.1.0 **/ -int -gnutls_privkey_import_url(gnutls_privkey_t key, const char *url, - unsigned int flags) +int gnutls_privkey_import_url(gnutls_privkey_t key, const char *url, + unsigned int flags) { unsigned i; int ret; for (i = 0; i < _gnutls_custom_urls_size; i++) { - if (strncmp - (url, _gnutls_custom_urls[i].name, - _gnutls_custom_urls[i].name_size) == 0) { + if (strncmp(url, _gnutls_custom_urls[i].name, + _gnutls_custom_urls[i].name_size) == 0) { if (_gnutls_custom_urls[i].import_key) { - ret = - _gnutls_custom_urls[i].import_key(key, url, - flags); + ret = _gnutls_custom_urls[i].import_key( + key, url, flags); goto cleanup; } break; @@ -1824,7 +1770,7 @@ gnutls_privkey_import_url(gnutls_privkey_t key, const char *url, } ret = gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - cleanup: +cleanup: return ret; } @@ -1945,9 +1891,8 @@ int gnutls_privkey_verify_params(gnutls_privkey_t key) * * Since: 3.6.0 **/ -int -gnutls_privkey_get_spki(gnutls_privkey_t privkey, gnutls_x509_spki_t spki, - unsigned int flags) +int gnutls_privkey_get_spki(gnutls_privkey_t privkey, gnutls_x509_spki_t spki, + unsigned int flags) { gnutls_x509_spki_t p = &privkey->key.x509->params.spki; @@ -1978,9 +1923,8 @@ gnutls_privkey_get_spki(gnutls_privkey_t privkey, gnutls_x509_spki_t spki, * * Since: 3.6.0 **/ -int -gnutls_privkey_set_spki(gnutls_privkey_t privkey, const gnutls_x509_spki_t spki, - unsigned int flags) +int gnutls_privkey_set_spki(gnutls_privkey_t privkey, + const gnutls_x509_spki_t spki, unsigned int flags) { if (privkey == NULL || privkey->type != GNUTLS_PRIVKEY_X509) { gnutls_assert(); @@ -2011,12 +1955,14 @@ unsigned _gnutls_privkey_compatible_with_sig(gnutls_privkey_t privkey, * negotiating RSA-PSS sig. */ - if (se->pk != privkey->pk_algorithm) { /* if the PK algorithm of the signature differs to the one on the pubkey */ - if (!sign_supports_priv_pk_algorithm(se, privkey->pk_algorithm)) { - _gnutls_handshake_log - ("cannot use privkey of %s with %s\n", - gnutls_pk_get_name(privkey->pk_algorithm), - se->name); + if (se->pk != + privkey->pk_algorithm) { /* if the PK algorithm of the signature differs to the one on the pubkey */ + if (!sign_supports_priv_pk_algorithm(se, + privkey->pk_algorithm)) { + _gnutls_handshake_log( + "cannot use privkey of %s with %s\n", + gnutls_pk_get_name(privkey->pk_algorithm), + se->name); return 0; } } @@ -2025,21 +1971,18 @@ unsigned _gnutls_privkey_compatible_with_sig(gnutls_privkey_t privkey, if (privkey->key.ext.info_func) { int ret; - ret = privkey->key.ext.info_func(privkey, - GNUTLS_SIGN_ALGO_TO_FLAGS - (sign) | - GNUTLS_PRIVKEY_INFO_HAVE_SIGN_ALGO, - privkey->key. - ext.userdata); + ret = privkey->key.ext.info_func( + privkey, + GNUTLS_SIGN_ALGO_TO_FLAGS(sign) | + GNUTLS_PRIVKEY_INFO_HAVE_SIGN_ALGO, + privkey->key.ext.userdata); if (ret != -1) return ret; /* use the old flag */ - ret = - privkey->key.ext.info_func(privkey, - GNUTLS_PRIVKEY_INFO_SIGN_ALGO, - privkey->key. - ext.userdata); + ret = privkey->key.ext.info_func( + privkey, GNUTLS_PRIVKEY_INFO_SIGN_ALGO, + privkey->key.ext.userdata); if (ret == (int)sign) return 1; } @@ -2050,8 +1993,8 @@ unsigned _gnutls_privkey_compatible_with_sig(gnutls_privkey_t privkey, } #ifdef ENABLE_PKCS11 else if (privkey->type == GNUTLS_PRIVKEY_PKCS11) { - if (privkey->pk_algorithm == GNUTLS_PK_RSA - && se->pk == GNUTLS_PK_RSA_PSS) { + if (privkey->pk_algorithm == GNUTLS_PK_RSA && + se->pk == GNUTLS_PK_RSA_PSS) { if (!privkey->key.pkcs11->rsa_pss_ok) return 0; } diff --git a/lib/privkey_raw.c b/lib/privkey_raw.c index 695dc2fcdd..e9ea8ad881 100644 --- a/lib/privkey_raw.c +++ b/lib/privkey_raw.c @@ -53,12 +53,11 @@ * * Since: 3.3.0 **/ -int -gnutls_privkey_export_rsa_raw(gnutls_privkey_t key, - gnutls_datum_t * m, gnutls_datum_t * e, - gnutls_datum_t * d, gnutls_datum_t * p, - gnutls_datum_t * q, gnutls_datum_t * u, - gnutls_datum_t * e1, gnutls_datum_t * e2) +int gnutls_privkey_export_rsa_raw(gnutls_privkey_t key, gnutls_datum_t *m, + gnutls_datum_t *e, gnutls_datum_t *d, + gnutls_datum_t *p, gnutls_datum_t *q, + gnutls_datum_t *u, gnutls_datum_t *e1, + gnutls_datum_t *e2) { return gnutls_privkey_export_rsa_raw2(key, m, e, d, p, q, u, e1, e2, 0); } @@ -84,13 +83,11 @@ gnutls_privkey_export_rsa_raw(gnutls_privkey_t key, * * Since: 3.6.0 **/ -int -gnutls_privkey_export_rsa_raw2(gnutls_privkey_t key, - gnutls_datum_t * m, gnutls_datum_t * e, - gnutls_datum_t * d, gnutls_datum_t * p, - gnutls_datum_t * q, gnutls_datum_t * u, - gnutls_datum_t * e1, - gnutls_datum_t * e2, unsigned int flags) +int gnutls_privkey_export_rsa_raw2(gnutls_privkey_t key, gnutls_datum_t *m, + gnutls_datum_t *e, gnutls_datum_t *d, + gnutls_datum_t *p, gnutls_datum_t *q, + gnutls_datum_t *u, gnutls_datum_t *e1, + gnutls_datum_t *e2, unsigned int flags) { gnutls_pk_params_st params; int ret; @@ -106,9 +103,8 @@ gnutls_privkey_export_rsa_raw2(gnutls_privkey_t key, if (ret < 0) return gnutls_assert_val(ret); - ret = - _gnutls_params_get_rsa_raw(¶ms, m, e, d, p, q, u, e1, e2, - flags); + ret = _gnutls_params_get_rsa_raw(¶ms, m, e, d, p, q, u, e1, e2, + flags); gnutls_pk_params_release(¶ms); @@ -132,11 +128,9 @@ gnutls_privkey_export_rsa_raw2(gnutls_privkey_t key, * * Since: 3.3.0 **/ -int -gnutls_privkey_export_dsa_raw(gnutls_privkey_t key, - gnutls_datum_t * p, gnutls_datum_t * q, - gnutls_datum_t * g, gnutls_datum_t * y, - gnutls_datum_t * x) +int gnutls_privkey_export_dsa_raw(gnutls_privkey_t key, gnutls_datum_t *p, + gnutls_datum_t *q, gnutls_datum_t *g, + gnutls_datum_t *y, gnutls_datum_t *x) { return gnutls_privkey_export_dsa_raw2(key, p, q, g, y, x, 0); } @@ -159,11 +153,10 @@ gnutls_privkey_export_dsa_raw(gnutls_privkey_t key, * * Since: 3.6.0 **/ -int -gnutls_privkey_export_dsa_raw2(gnutls_privkey_t key, - gnutls_datum_t * p, gnutls_datum_t * q, - gnutls_datum_t * g, gnutls_datum_t * y, - gnutls_datum_t * x, unsigned int flags) +int gnutls_privkey_export_dsa_raw2(gnutls_privkey_t key, gnutls_datum_t *p, + gnutls_datum_t *q, gnutls_datum_t *g, + gnutls_datum_t *y, gnutls_datum_t *x, + unsigned int flags) { gnutls_pk_params_st params; int ret; @@ -205,11 +198,9 @@ gnutls_privkey_export_dsa_raw2(gnutls_privkey_t key, * * Since: 3.3.0 **/ -int -gnutls_privkey_export_ecc_raw(gnutls_privkey_t key, - gnutls_ecc_curve_t * curve, - gnutls_datum_t * x, - gnutls_datum_t * y, gnutls_datum_t * k) +int gnutls_privkey_export_ecc_raw(gnutls_privkey_t key, + gnutls_ecc_curve_t *curve, gnutls_datum_t *x, + gnutls_datum_t *y, gnutls_datum_t *k) { return gnutls_privkey_export_ecc_raw2(key, curve, x, y, k, 0); } @@ -234,12 +225,10 @@ gnutls_privkey_export_ecc_raw(gnutls_privkey_t key, * * Since: 3.6.0 **/ -int -gnutls_privkey_export_ecc_raw2(gnutls_privkey_t key, - gnutls_ecc_curve_t * curve, - gnutls_datum_t * x, - gnutls_datum_t * y, - gnutls_datum_t * k, unsigned int flags) +int gnutls_privkey_export_ecc_raw2(gnutls_privkey_t key, + gnutls_ecc_curve_t *curve, gnutls_datum_t *x, + gnutls_datum_t *y, gnutls_datum_t *k, + unsigned int flags) { gnutls_pk_params_st params; int ret; @@ -284,14 +273,12 @@ gnutls_privkey_export_ecc_raw2(gnutls_privkey_t key, * * Since: 3.6.3 **/ -int -gnutls_privkey_export_gost_raw2(gnutls_privkey_t key, - gnutls_ecc_curve_t * curve, - gnutls_digest_algorithm_t * digest, - gnutls_gost_paramset_t * paramset, - gnutls_datum_t * x, - gnutls_datum_t * y, - gnutls_datum_t * k, unsigned int flags) +int gnutls_privkey_export_gost_raw2(gnutls_privkey_t key, + gnutls_ecc_curve_t *curve, + gnutls_digest_algorithm_t *digest, + gnutls_gost_paramset_t *paramset, + gnutls_datum_t *x, gnutls_datum_t *y, + gnutls_datum_t *k, unsigned int flags) { gnutls_pk_params_st params; int ret; @@ -307,8 +294,8 @@ gnutls_privkey_export_gost_raw2(gnutls_privkey_t key, if (ret < 0) return gnutls_assert_val(ret); - ret = _gnutls_params_get_gost_raw(¶ms, curve, digest, paramset, - x, y, k, flags); + ret = _gnutls_params_get_gost_raw(¶ms, curve, digest, paramset, x, + y, k, flags); gnutls_pk_params_release(¶ms); @@ -334,16 +321,11 @@ gnutls_privkey_export_gost_raw2(gnutls_privkey_t key, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_privkey_import_rsa_raw(gnutls_privkey_t key, - const gnutls_datum_t * m, - const gnutls_datum_t * e, - const gnutls_datum_t * d, - const gnutls_datum_t * p, - const gnutls_datum_t * q, - const gnutls_datum_t * u, - const gnutls_datum_t * e1, - const gnutls_datum_t * e2) +int gnutls_privkey_import_rsa_raw( + gnutls_privkey_t key, const gnutls_datum_t *m, const gnutls_datum_t *e, + const gnutls_datum_t *d, const gnutls_datum_t *p, + const gnutls_datum_t *q, const gnutls_datum_t *u, + const gnutls_datum_t *e1, const gnutls_datum_t *e2) { int ret; gnutls_x509_privkey_t xkey; @@ -352,16 +334,15 @@ gnutls_privkey_import_rsa_raw(gnutls_privkey_t key, if (ret < 0) return gnutls_assert_val(ret); - ret = - gnutls_x509_privkey_import_rsa_raw2(xkey, m, e, d, p, q, u, e1, e1); + ret = gnutls_x509_privkey_import_rsa_raw2(xkey, m, e, d, p, q, u, e1, + e1); if (ret < 0) { gnutls_assert(); goto error; } - ret = - gnutls_privkey_import_x509(key, xkey, - GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE); + ret = gnutls_privkey_import_x509(key, xkey, + GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE); if (ret < 0) { gnutls_assert(); goto error; @@ -369,7 +350,7 @@ gnutls_privkey_import_rsa_raw(gnutls_privkey_t key, return 0; - error: +error: gnutls_x509_privkey_deinit(xkey); return ret; } @@ -390,13 +371,11 @@ gnutls_privkey_import_rsa_raw(gnutls_privkey_t key, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_privkey_import_dsa_raw(gnutls_privkey_t key, - const gnutls_datum_t * p, - const gnutls_datum_t * q, - const gnutls_datum_t * g, - const gnutls_datum_t * y, - const gnutls_datum_t * x) +int gnutls_privkey_import_dsa_raw(gnutls_privkey_t key, const gnutls_datum_t *p, + const gnutls_datum_t *q, + const gnutls_datum_t *g, + const gnutls_datum_t *y, + const gnutls_datum_t *x) { int ret; gnutls_x509_privkey_t xkey; @@ -411,9 +390,8 @@ gnutls_privkey_import_dsa_raw(gnutls_privkey_t key, goto error; } - ret = - gnutls_privkey_import_x509(key, xkey, - GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE); + ret = gnutls_privkey_import_x509(key, xkey, + GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE); if (ret < 0) { gnutls_assert(); goto error; @@ -421,7 +399,7 @@ gnutls_privkey_import_dsa_raw(gnutls_privkey_t key, return 0; - error: +error: gnutls_x509_privkey_deinit(xkey); return ret; } @@ -446,12 +424,11 @@ gnutls_privkey_import_dsa_raw(gnutls_privkey_t key, * * Since: 3.0 **/ -int -gnutls_privkey_import_ecc_raw(gnutls_privkey_t key, - gnutls_ecc_curve_t curve, - const gnutls_datum_t * x, - const gnutls_datum_t * y, - const gnutls_datum_t * k) +int gnutls_privkey_import_ecc_raw(gnutls_privkey_t key, + gnutls_ecc_curve_t curve, + const gnutls_datum_t *x, + const gnutls_datum_t *y, + const gnutls_datum_t *k) { int ret; gnutls_x509_privkey_t xkey; @@ -466,9 +443,8 @@ gnutls_privkey_import_ecc_raw(gnutls_privkey_t key, goto error; } - ret = - gnutls_privkey_import_x509(key, xkey, - GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE); + ret = gnutls_privkey_import_x509(key, xkey, + GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE); if (ret < 0) { gnutls_assert(); goto error; @@ -476,7 +452,7 @@ gnutls_privkey_import_ecc_raw(gnutls_privkey_t key, return 0; - error: +error: gnutls_x509_privkey_deinit(xkey); return ret; } @@ -506,14 +482,13 @@ gnutls_privkey_import_ecc_raw(gnutls_privkey_t key, * * Since: 3.6.3 **/ -int -gnutls_privkey_import_gost_raw(gnutls_privkey_t key, - gnutls_ecc_curve_t curve, - gnutls_digest_algorithm_t digest, - gnutls_gost_paramset_t paramset, - const gnutls_datum_t * x, - const gnutls_datum_t * y, - const gnutls_datum_t * k) +int gnutls_privkey_import_gost_raw(gnutls_privkey_t key, + gnutls_ecc_curve_t curve, + gnutls_digest_algorithm_t digest, + gnutls_gost_paramset_t paramset, + const gnutls_datum_t *x, + const gnutls_datum_t *y, + const gnutls_datum_t *k) { int ret; gnutls_x509_privkey_t xkey; @@ -522,17 +497,15 @@ gnutls_privkey_import_gost_raw(gnutls_privkey_t key, if (ret < 0) return gnutls_assert_val(ret); - ret = - gnutls_x509_privkey_import_gost_raw(xkey, curve, digest, paramset, - x, y, k); + ret = gnutls_x509_privkey_import_gost_raw(xkey, curve, digest, paramset, + x, y, k); if (ret < 0) { gnutls_assert(); goto error; } - ret = - gnutls_privkey_import_x509(key, xkey, - GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE); + ret = gnutls_privkey_import_x509(key, xkey, + GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE); if (ret < 0) { gnutls_assert(); goto error; @@ -540,7 +513,7 @@ gnutls_privkey_import_gost_raw(gnutls_privkey_t key, return 0; - error: +error: gnutls_x509_privkey_deinit(xkey); return ret; } diff --git a/lib/profiles.c b/lib/profiles.c index 199020345b..459d7a662c 100644 --- a/lib/profiles.c +++ b/lib/profiles.c @@ -34,16 +34,16 @@ typedef struct { } gnutls_profile_entry; static const gnutls_profile_entry profiles[] = { - {"Very weak", GNUTLS_PROFILE_VERY_WEAK, GNUTLS_SEC_PARAM_VERY_WEAK}, - {"Low", GNUTLS_PROFILE_LOW, GNUTLS_SEC_PARAM_LOW}, - {"Legacy", GNUTLS_PROFILE_LEGACY, GNUTLS_SEC_PARAM_LEGACY}, - {"Medium", GNUTLS_PROFILE_MEDIUM, GNUTLS_SEC_PARAM_MEDIUM}, - {"High", GNUTLS_PROFILE_HIGH, GNUTLS_SEC_PARAM_HIGH}, - {"Ultra", GNUTLS_PROFILE_ULTRA, GNUTLS_SEC_PARAM_ULTRA}, - {"Future", GNUTLS_PROFILE_FUTURE, GNUTLS_SEC_PARAM_FUTURE}, - {"SuiteB128", GNUTLS_PROFILE_SUITEB128, GNUTLS_SEC_PARAM_HIGH}, - {"SuiteB192", GNUTLS_PROFILE_SUITEB192, GNUTLS_SEC_PARAM_ULTRA}, - {NULL, 0, 0} + { "Very weak", GNUTLS_PROFILE_VERY_WEAK, GNUTLS_SEC_PARAM_VERY_WEAK }, + { "Low", GNUTLS_PROFILE_LOW, GNUTLS_SEC_PARAM_LOW }, + { "Legacy", GNUTLS_PROFILE_LEGACY, GNUTLS_SEC_PARAM_LEGACY }, + { "Medium", GNUTLS_PROFILE_MEDIUM, GNUTLS_SEC_PARAM_MEDIUM }, + { "High", GNUTLS_PROFILE_HIGH, GNUTLS_SEC_PARAM_HIGH }, + { "Ultra", GNUTLS_PROFILE_ULTRA, GNUTLS_SEC_PARAM_ULTRA }, + { "Future", GNUTLS_PROFILE_FUTURE, GNUTLS_SEC_PARAM_FUTURE }, + { "SuiteB128", GNUTLS_PROFILE_SUITEB128, GNUTLS_SEC_PARAM_HIGH }, + { "SuiteB192", GNUTLS_PROFILE_SUITEB192, GNUTLS_SEC_PARAM_ULTRA }, + { NULL, 0, 0 } }; gnutls_sec_param_t @@ -93,9 +93,9 @@ gnutls_certificate_verification_profile_get_id(const char *name) * * Returns: a string that contains the name of the specified profile or %NULL. **/ -const char -*gnutls_certificate_verification_profile_get_name - (gnutls_certificate_verification_profiles_t id) { +const char *gnutls_certificate_verification_profile_get_name( + gnutls_certificate_verification_profiles_t id) +{ const gnutls_profile_entry *p; for (p = profiles; p->name != NULL; p++) { diff --git a/lib/profiles.h b/lib/profiles.h index b5c0ca6182..0a7920dc75 100644 --- a/lib/profiles.h +++ b/lib/profiles.h @@ -21,16 +21,15 @@ */ #ifndef GNUTLS_LIB_PROFILES_H -# define GNUTLS_LIB_PROFILES_H +#define GNUTLS_LIB_PROFILES_H -# include -# include +#include +#include -gnutls_sec_param_t -_gnutls_profile_to_sec_level(gnutls_certificate_verification_profiles_t profile) -__GNUTLS_PURE__; +gnutls_sec_param_t _gnutls_profile_to_sec_level( + gnutls_certificate_verification_profiles_t profile) __GNUTLS_PURE__; gnutls_certificate_verification_profiles_t _gnutls_get_system_wide_verification_profile(void); -#endif /* GNUTLS_LIB_PROFILES_H */ +#endif /* GNUTLS_LIB_PROFILES_H */ diff --git a/lib/psk.c b/lib/psk.c index 2524a8ecb2..ac8c7751ce 100644 --- a/lib/psk.c +++ b/lib/psk.c @@ -30,12 +30,12 @@ #ifdef ENABLE_PSK -# include -# include -# include -# include -# include "debug.h" -# include "dh.h" +#include +#include +#include +#include +#include "debug.h" +#include "dh.h" /** * gnutls_psk_free_client_credentials: @@ -59,7 +59,7 @@ void gnutls_psk_free_client_credentials(gnutls_psk_client_credentials_t sc) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise * an error code is returned. **/ -int gnutls_psk_allocate_client_credentials(gnutls_psk_client_credentials_t * sc) +int gnutls_psk_allocate_client_credentials(gnutls_psk_client_credentials_t *sc) { *sc = gnutls_calloc(1, sizeof(psk_client_credentials_st)); @@ -89,11 +89,10 @@ int gnutls_psk_allocate_client_credentials(gnutls_psk_client_credentials_t * sc) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise * an error code is returned. **/ -int -gnutls_psk_set_client_credentials(gnutls_psk_client_credentials_t res, - const char *username, - const gnutls_datum_t * key, - gnutls_psk_key_flags flags) +int gnutls_psk_set_client_credentials(gnutls_psk_client_credentials_t res, + const char *username, + const gnutls_datum_t *key, + gnutls_psk_key_flags flags) { gnutls_datum_t dat; @@ -120,16 +119,15 @@ gnutls_psk_set_client_credentials(gnutls_psk_client_credentials_t res, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise * an error code is returned. */ -int -gnutls_psk_set_client_credentials2(gnutls_psk_client_credentials_t res, - const gnutls_datum_t * username, - const gnutls_datum_t * key, - gnutls_psk_key_flags flags) +int gnutls_psk_set_client_credentials2(gnutls_psk_client_credentials_t res, + const gnutls_datum_t *username, + const gnutls_datum_t *key, + gnutls_psk_key_flags flags) { int ret; - if (username == NULL || username->data == NULL || key == NULL - || key->data == NULL) { + if (username == NULL || username->data == NULL || key == NULL || + key->data == NULL) { gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; } @@ -144,7 +142,7 @@ gnutls_psk_set_client_credentials2(gnutls_psk_client_credentials_t res, ret = GNUTLS_E_MEMORY_ERROR; goto error; } - } else { /* HEX key */ + } else { /* HEX key */ size_t size; size = res->key.size = key->size / 2; res->key.data = gnutls_malloc(size); @@ -157,7 +155,6 @@ gnutls_psk_set_client_credentials2(gnutls_psk_client_credentials_t res, ret = gnutls_hex_decode(key, (char *)res->key.data, &size); res->key.size = (unsigned int)size; if (ret < 0) { - gnutls_assert(); goto error; } @@ -171,7 +168,7 @@ gnutls_psk_set_client_credentials2(gnutls_psk_client_credentials_t res, return 0; - error: +error: _gnutls_free_datum(&res->username); _gnutls_free_datum(&res->key); @@ -204,7 +201,7 @@ void gnutls_psk_free_server_credentials(gnutls_psk_server_credentials_t sc) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise * an error code is returned. **/ -int gnutls_psk_allocate_server_credentials(gnutls_psk_server_credentials_t * sc) +int gnutls_psk_allocate_server_credentials(gnutls_psk_server_credentials_t *sc) { *sc = gnutls_calloc(1, sizeof(psk_server_cred_st)); @@ -233,11 +230,9 @@ int gnutls_psk_allocate_server_credentials(gnutls_psk_server_credentials_t * sc) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise * an error code is returned. **/ -int -gnutls_psk_set_server_credentials_file(gnutls_psk_server_credentials_t - res, const char *password_file) +int gnutls_psk_set_server_credentials_file(gnutls_psk_server_credentials_t res, + const char *password_file) { - if (password_file == NULL) { gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; @@ -273,9 +268,8 @@ gnutls_psk_set_server_credentials_file(gnutls_psk_server_credentials_t * * Since: 2.4.0 **/ -int -gnutls_psk_set_server_credentials_hint(gnutls_psk_server_credentials_t res, - const char *hint) +int gnutls_psk_set_server_credentials_hint(gnutls_psk_server_credentials_t res, + const char *hint) { res->hint = gnutls_strdup(hint); if (res->hint == NULL) { @@ -287,11 +281,12 @@ gnutls_psk_set_server_credentials_hint(gnutls_psk_server_credentials_t res, } static int call_server_callback_legacy(gnutls_session_t session, - const gnutls_datum_t * username, - gnutls_datum_t * key) + const gnutls_datum_t *username, + gnutls_datum_t *key) { - gnutls_psk_server_credentials_t cred = (gnutls_psk_server_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_PSK); + gnutls_psk_server_credentials_t cred = + (gnutls_psk_server_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_PSK); if (unlikely(cred == NULL)) return gnutls_assert_val(-1); @@ -319,11 +314,9 @@ static int call_server_callback_legacy(gnutls_session_t session, * callback function should return 0 on success, while -1 indicates * an error. **/ -void -gnutls_psk_set_server_credentials_function(gnutls_psk_server_credentials_t - cred, - gnutls_psk_server_credentials_function - * func) +void gnutls_psk_set_server_credentials_function( + gnutls_psk_server_credentials_t cred, + gnutls_psk_server_credentials_function *func) { cred->pwd_callback_legacy = func; cred->pwd_callback = call_server_callback_legacy; @@ -352,24 +345,23 @@ gnutls_psk_set_server_credentials_function(gnutls_psk_server_credentials_t * callback function should return 0 on success, while -1 indicates * an error. **/ -void -gnutls_psk_set_server_credentials_function2(gnutls_psk_server_credentials_t - cred, - gnutls_psk_server_credentials_function2 - func) +void gnutls_psk_set_server_credentials_function2( + gnutls_psk_server_credentials_t cred, + gnutls_psk_server_credentials_function2 func) { cred->pwd_callback = func; cred->pwd_callback_legacy = NULL; } static int call_client_callback_legacy(gnutls_session_t session, - gnutls_datum_t * username, - gnutls_datum_t * key) + gnutls_datum_t *username, + gnutls_datum_t *key) { int ret; char *user_p; - gnutls_psk_client_credentials_t cred = (gnutls_psk_client_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_PSK); + gnutls_psk_client_credentials_t cred = + (gnutls_psk_client_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_PSK); if (unlikely(cred == NULL)) return gnutls_assert_val(-1); @@ -378,10 +370,10 @@ static int call_client_callback_legacy(gnutls_session_t session, if (ret) goto end; - username->data = (uint8_t *) user_p; + username->data = (uint8_t *)user_p; username->size = strlen(user_p); - end: +end: return ret; } @@ -406,11 +398,9 @@ static int call_client_callback_legacy(gnutls_session_t session, * The callback function should return 0 on success. * -1 indicates an error. **/ -void -gnutls_psk_set_client_credentials_function(gnutls_psk_client_credentials_t - cred, - gnutls_psk_client_credentials_function - * func) +void gnutls_psk_set_client_credentials_function( + gnutls_psk_client_credentials_t cred, + gnutls_psk_client_credentials_function *func) { cred->get_function = call_client_callback_legacy; cred->get_function_legacy = func; @@ -440,11 +430,9 @@ gnutls_psk_set_client_credentials_function(gnutls_psk_client_credentials_t * The callback function should return 0 on success. * -1 indicates an error. **/ -void -gnutls_psk_set_client_credentials_function2(gnutls_psk_client_credentials_t - cred, - gnutls_psk_client_credentials_function2 - * func) +void gnutls_psk_set_client_credentials_function2( + gnutls_psk_client_credentials_t cred, + gnutls_psk_client_credentials_function2 *func) { cred->get_function = func; cred->get_function_legacy = NULL; @@ -499,7 +487,7 @@ const char *gnutls_psk_server_get_username(gnutls_session_t session) * Returns: %GNUTLS_E_SUCCESS, or a negative value in case of an error. **/ int gnutls_psk_server_get_username2(gnutls_session_t session, - gnutls_datum_t * username) + gnutls_datum_t *username) { psk_auth_info_t info; @@ -557,9 +545,8 @@ const char *gnutls_psk_client_get_hint(gnutls_session_t session) * following RFC7919. * **/ -void -gnutls_psk_set_server_dh_params(gnutls_psk_server_credentials_t res, - gnutls_dh_params_t dh_params) +void gnutls_psk_set_server_dh_params(gnutls_psk_server_credentials_t res, + gnutls_dh_params_t dh_params) { if (res->deinit_dh_params) { res->deinit_dh_params = 0; @@ -568,10 +555,8 @@ gnutls_psk_set_server_dh_params(gnutls_psk_server_credentials_t res, } res->dh_params = dh_params; - res->dh_sec_param = - gnutls_pk_bits_to_sec_param(GNUTLS_PK_DH, - _gnutls_mpi_get_nbits(dh_params->params - [0])); + res->dh_sec_param = gnutls_pk_bits_to_sec_param( + GNUTLS_PK_DH, _gnutls_mpi_get_nbits(dh_params->params[0])); } /** @@ -593,9 +578,8 @@ gnutls_psk_set_server_dh_params(gnutls_psk_server_credentials_t res, * * Since: 3.5.6 **/ -int -gnutls_psk_set_server_known_dh_params(gnutls_psk_server_credentials_t res, - gnutls_sec_param_t sec_param) +int gnutls_psk_set_server_known_dh_params(gnutls_psk_server_credentials_t res, + gnutls_sec_param_t sec_param) { res->dh_sec_param = sec_param; @@ -616,9 +600,8 @@ gnutls_psk_set_server_known_dh_params(gnutls_psk_server_credentials_t res, * following RFC7919. * **/ -void -gnutls_psk_set_server_params_function(gnutls_psk_server_credentials_t res, - gnutls_params_function * func) +void gnutls_psk_set_server_params_function(gnutls_psk_server_credentials_t res, + gnutls_params_function *func) { res->params_func = func; } @@ -637,11 +620,10 @@ gnutls_psk_set_server_params_function(gnutls_psk_server_credentials_t res, * following RFC7919. * **/ -void -gnutls_psk_set_params_function(gnutls_psk_server_credentials_t res, - gnutls_params_function * func) +void gnutls_psk_set_params_function(gnutls_psk_server_credentials_t res, + gnutls_params_function *func) { res->params_func = func; } -#endif /* ENABLE_PSK */ +#endif /* ENABLE_PSK */ diff --git a/lib/pubkey.c b/lib/pubkey.c index a396e56f26..a783371b16 100644 --- a/lib/pubkey.c +++ b/lib/pubkey.c @@ -38,19 +38,18 @@ #include "urls.h" #include -static int -pubkey_verify_hashed_data(const gnutls_sign_entry_st * se, - const mac_entry_st * me, - const gnutls_datum_t * hash, - const gnutls_datum_t * signature, - gnutls_pk_params_st * params, - gnutls_x509_spki_st * sign_params, unsigned flags); - -static -int pubkey_supports_sig(gnutls_pubkey_t pubkey, - const gnutls_sign_entry_st * se); - -unsigned pubkey_to_bits(const gnutls_pk_params_st * params) +static int pubkey_verify_hashed_data(const gnutls_sign_entry_st *se, + const mac_entry_st *me, + const gnutls_datum_t *hash, + const gnutls_datum_t *signature, + gnutls_pk_params_st *params, + gnutls_x509_spki_st *sign_params, + unsigned flags); + +static int pubkey_supports_sig(gnutls_pubkey_t pubkey, + const gnutls_sign_entry_st *se); + +unsigned pubkey_to_bits(const gnutls_pk_params_st *params) { switch (params->algo) { case GNUTLS_PK_RSA: @@ -125,7 +124,7 @@ int gnutls_pubkey_get_key_usage(gnutls_pubkey_t key, unsigned int *usage) * * Since: 2.12.0 **/ -int gnutls_pubkey_init(gnutls_pubkey_t * key) +int gnutls_pubkey_init(gnutls_pubkey_t *key) { *key = NULL; FAIL_IF_LIB_ERROR; @@ -169,9 +168,8 @@ void gnutls_pubkey_deinit(gnutls_pubkey_t key) * * Since: 2.12.0 **/ -int -gnutls_pubkey_import_x509(gnutls_pubkey_t key, gnutls_x509_crt_t crt, - unsigned int flags) +int gnutls_pubkey_import_x509(gnutls_pubkey_t key, gnutls_x509_crt_t crt, + unsigned int flags) { int ret; @@ -211,9 +209,8 @@ gnutls_pubkey_import_x509(gnutls_pubkey_t key, gnutls_x509_crt_t crt, * * Since: 3.1.5 **/ -int -gnutls_pubkey_import_x509_crq(gnutls_pubkey_t key, gnutls_x509_crq_t crq, - unsigned int flags) +int gnutls_pubkey_import_x509_crq(gnutls_pubkey_t key, gnutls_x509_crq_t crq, + unsigned int flags) { int ret; @@ -253,9 +250,8 @@ gnutls_pubkey_import_x509_crq(gnutls_pubkey_t key, gnutls_x509_crq_t crq, * * Since: 2.12.0 **/ -int -gnutls_pubkey_import_privkey(gnutls_pubkey_t key, gnutls_privkey_t pkey, - unsigned int usage, unsigned int flags) +int gnutls_pubkey_import_privkey(gnutls_pubkey_t key, gnutls_privkey_t pkey, + unsigned int usage, unsigned int flags) { gnutls_pk_params_release(&key->params); gnutls_pk_params_init(&key->params); @@ -284,10 +280,9 @@ gnutls_pubkey_import_privkey(gnutls_pubkey_t key, gnutls_privkey_t pkey, * * Since: 2.12.0 **/ -int -gnutls_pubkey_get_preferred_hash_algorithm(gnutls_pubkey_t key, - gnutls_digest_algorithm_t * - hash, unsigned int *mand) +int gnutls_pubkey_get_preferred_hash_algorithm(gnutls_pubkey_t key, + gnutls_digest_algorithm_t *hash, + unsigned int *mand) { int ret; const mac_entry_st *me; @@ -309,7 +304,7 @@ gnutls_pubkey_get_preferred_hash_algorithm(gnutls_pubkey_t key, me = _gnutls_dsa_q_to_hash(&key->params, NULL); if (hash) - *hash = (gnutls_digest_algorithm_t) me->id; + *hash = (gnutls_digest_algorithm_t)me->id; ret = 0; break; @@ -343,18 +338,16 @@ gnutls_pubkey_get_preferred_hash_algorithm(gnutls_pubkey_t key, if (key->params.spki.rsa_pss_dig) { *hash = key->params.spki.rsa_pss_dig; } else { - *hash = - _gnutls_pk_bits_to_sha_hash(pubkey_to_bits - (&key->params)); + *hash = _gnutls_pk_bits_to_sha_hash( + pubkey_to_bits(&key->params)); } } ret = 0; break; case GNUTLS_PK_RSA: if (hash) - *hash = - _gnutls_pk_bits_to_sha_hash(pubkey_to_bits - (&key->params)); + *hash = _gnutls_pk_bits_to_sha_hash( + pubkey_to_bits(&key->params)); ret = 0; break; @@ -371,8 +364,8 @@ gnutls_pubkey_get_preferred_hash_algorithm(gnutls_pubkey_t key, /* The EC_PARAMS attribute can contain either printable string with curve name * or OID defined in RFC 8410 */ static int -gnutls_pubkey_parse_ecc_eddsa_params(const gnutls_datum_t * parameters, - gnutls_ecc_curve_t * outcurve) +gnutls_pubkey_parse_ecc_eddsa_params(const gnutls_datum_t *parameters, + gnutls_ecc_curve_t *outcurve) { gnutls_ecc_curve_t curve = GNUTLS_ECC_CURVE_INVALID; asn1_node asn1 = NULL; @@ -427,8 +420,8 @@ gnutls_pubkey_parse_ecc_eddsa_params(const gnutls_datum_t * parameters, curve = gnutls_oid_to_ecc_curve(str); if (curve != GNUTLS_ECC_CURVE_ED25519 && curve != GNUTLS_ECC_CURVE_ED448) { - _gnutls_debug_log - ("Curve %s is not supported for EdDSA\n", str); + _gnutls_debug_log( + "Curve %s is not supported for EdDSA\n", str); gnutls_assert(); curve = GNUTLS_ECC_CURVE_INVALID; ret = GNUTLS_E_ECC_UNSUPPORTED_CURVE; @@ -467,16 +460,15 @@ gnutls_pubkey_parse_ecc_eddsa_params(const gnutls_datum_t * parameters, break; } - cleanup: +cleanup: asn1_delete_structure(&asn1); *outcurve = curve; return ret; } -static int -gnutls_pubkey_import_ecc_eddsa(gnutls_pubkey_t key, - const gnutls_datum_t * parameters, - const gnutls_datum_t * ecpoint) +static int gnutls_pubkey_import_ecc_eddsa(gnutls_pubkey_t key, + const gnutls_datum_t *parameters, + const gnutls_datum_t *ecpoint) { int ret; @@ -488,9 +480,8 @@ gnutls_pubkey_import_ecc_eddsa(gnutls_pubkey_t key, return gnutls_assert_val(ret); } - ret = _gnutls_x509_decode_string(ASN1_ETYPE_OCTET_STRING, - ecpoint->data, ecpoint->size, - &raw_point, 0); + ret = _gnutls_x509_decode_string(ASN1_ETYPE_OCTET_STRING, ecpoint->data, + ecpoint->size, &raw_point, 0); if (ret < 0) { gnutls_assert(); gnutls_free(raw_point.data); @@ -503,9 +494,8 @@ gnutls_pubkey_import_ecc_eddsa(gnutls_pubkey_t key, } /* Same as above, but for Edwards key agreement */ -static int -gnutls_pubkey_parse_ecc_ecdh_params(const gnutls_datum_t * parameters, - gnutls_ecc_curve_t * outcurve) +static int gnutls_pubkey_parse_ecc_ecdh_params(const gnutls_datum_t *parameters, + gnutls_ecc_curve_t *outcurve) { gnutls_ecc_curve_t curve = GNUTLS_ECC_CURVE_INVALID; asn1_node asn1 = NULL; @@ -560,9 +550,9 @@ gnutls_pubkey_parse_ecc_ecdh_params(const gnutls_datum_t * parameters, curve = gnutls_oid_to_ecc_curve(str); if (curve != GNUTLS_ECC_CURVE_X25519 && curve != GNUTLS_ECC_CURVE_X448) { - _gnutls_debug_log - ("Curve %s is not supported for Edwards-based key agreement\n", - str); + _gnutls_debug_log( + "Curve %s is not supported for Edwards-based key agreement\n", + str); gnutls_assert(); curve = GNUTLS_ECC_CURVE_INVALID; ret = GNUTLS_E_ECC_UNSUPPORTED_CURVE; @@ -601,16 +591,15 @@ gnutls_pubkey_parse_ecc_ecdh_params(const gnutls_datum_t * parameters, break; } - cleanup: +cleanup: asn1_delete_structure(&asn1); *outcurve = curve; return ret; } -static int -gnutls_pubkey_import_ecc_ecdh(gnutls_pubkey_t key, - const gnutls_datum_t * parameters, - const gnutls_datum_t * ecpoint) +static int gnutls_pubkey_import_ecc_ecdh(gnutls_pubkey_t key, + const gnutls_datum_t *parameters, + const gnutls_datum_t *ecpoint) { int ret; @@ -622,9 +611,8 @@ gnutls_pubkey_import_ecc_ecdh(gnutls_pubkey_t key, return gnutls_assert_val(ret); } - ret = _gnutls_x509_decode_string(ASN1_ETYPE_OCTET_STRING, - ecpoint->data, ecpoint->size, - &raw_point, 0); + ret = _gnutls_x509_decode_string(ASN1_ETYPE_OCTET_STRING, ecpoint->data, + ecpoint->size, &raw_point, 0); if (ret < 0) { gnutls_assert(); gnutls_free(raw_point.data); @@ -650,15 +638,14 @@ gnutls_pubkey_import_ecc_ecdh(gnutls_pubkey_t key, * * Since: 2.12.0 **/ -int -gnutls_pubkey_import_pkcs11(gnutls_pubkey_t key, - gnutls_pkcs11_obj_t obj, unsigned int flags) +int gnutls_pubkey_import_pkcs11(gnutls_pubkey_t key, gnutls_pkcs11_obj_t obj, + unsigned int flags) { int ret, type; type = gnutls_pkcs11_obj_get_type(obj); - if (type != GNUTLS_PKCS11_OBJ_PUBKEY - && type != GNUTLS_PKCS11_OBJ_X509_CRT) { + if (type != GNUTLS_PKCS11_OBJ_PUBKEY && + type != GNUTLS_PKCS11_OBJ_X509_CRT) { gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; } @@ -668,8 +655,7 @@ gnutls_pubkey_import_pkcs11(gnutls_pubkey_t key, ret = gnutls_x509_crt_init(&xcrt); if (ret < 0) { - gnutls_assert() - return ret; + gnutls_assert() return ret; } ret = gnutls_x509_crt_import_pkcs11(xcrt, obj); @@ -684,13 +670,13 @@ gnutls_pubkey_import_pkcs11(gnutls_pubkey_t key, goto cleanup_crt; } - ret = - gnutls_x509_crt_get_key_usage(xcrt, &key->key_usage, NULL); + ret = gnutls_x509_crt_get_key_usage(xcrt, &key->key_usage, + NULL); if (ret < 0) key->key_usage = 0; ret = 0; - cleanup_crt: + cleanup_crt: gnutls_x509_crt_deinit(xcrt); return ret; } @@ -734,7 +720,7 @@ gnutls_pubkey_import_pkcs11(gnutls_pubkey_t key, return 0; } -#endif /* ENABLE_PKCS11 */ +#endif /* ENABLE_PKCS11 */ /** * gnutls_pubkey_export: @@ -760,10 +746,8 @@ gnutls_pubkey_import_pkcs11(gnutls_pubkey_t key, * * Since: 2.12.0 **/ -int -gnutls_pubkey_export(gnutls_pubkey_t key, - gnutls_x509_crt_fmt_t format, void *output_data, - size_t *output_data_size) +int gnutls_pubkey_export(gnutls_pubkey_t key, gnutls_x509_crt_fmt_t format, + void *output_data, size_t *output_data_size) { int result; asn1_node spk = NULL; @@ -773,9 +757,9 @@ gnutls_pubkey_export(gnutls_pubkey_t key, return GNUTLS_E_INVALID_REQUEST; } - if ((result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.SubjectPublicKeyInfo", &spk)) - != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.SubjectPublicKeyInfo", + &spk)) != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -786,8 +770,7 @@ gnutls_pubkey_export(gnutls_pubkey_t key, goto cleanup; } - result = _gnutls_x509_export_int_named(spk, "", - format, PEM_PK, + result = _gnutls_x509_export_int_named(spk, "", format, PEM_PK, output_data, output_data_size); if (result < 0) { gnutls_assert(); @@ -796,7 +779,7 @@ gnutls_pubkey_export(gnutls_pubkey_t key, result = 0; - cleanup: +cleanup: asn1_delete_structure(&spk); return result; @@ -822,9 +805,8 @@ gnutls_pubkey_export(gnutls_pubkey_t key, * * Since: 3.1.3 **/ -int -gnutls_pubkey_export2(gnutls_pubkey_t key, - gnutls_x509_crt_fmt_t format, gnutls_datum_t * out) +int gnutls_pubkey_export2(gnutls_pubkey_t key, gnutls_x509_crt_fmt_t format, + gnutls_datum_t *out) { int result; asn1_node spk = NULL; @@ -834,9 +816,9 @@ gnutls_pubkey_export2(gnutls_pubkey_t key, return GNUTLS_E_INVALID_REQUEST; } - if ((result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.SubjectPublicKeyInfo", &spk)) - != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.SubjectPublicKeyInfo", + &spk)) != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -855,7 +837,7 @@ gnutls_pubkey_export2(gnutls_pubkey_t key, result = 0; - cleanup: +cleanup: asn1_delete_structure(&spk); return result; @@ -883,9 +865,9 @@ gnutls_pubkey_export2(gnutls_pubkey_t key, * * Since: 2.12.0 **/ -int -gnutls_pubkey_get_key_id(gnutls_pubkey_t key, unsigned int flags, - unsigned char *output_data, size_t *output_data_size) +int gnutls_pubkey_get_key_id(gnutls_pubkey_t key, unsigned int flags, + unsigned char *output_data, + size_t *output_data_size) { int ret = 0; @@ -894,9 +876,8 @@ gnutls_pubkey_get_key_id(gnutls_pubkey_t key, unsigned int flags, return GNUTLS_E_INVALID_REQUEST; } - ret = - _gnutls_get_key_id(&key->params, - output_data, output_data_size, flags); + ret = _gnutls_get_key_id(&key->params, output_data, output_data_size, + flags); if (ret < 0) { gnutls_assert(); return ret; @@ -922,10 +903,8 @@ gnutls_pubkey_get_key_id(gnutls_pubkey_t key, unsigned int flags, * * Since: 3.6.0 **/ -int -gnutls_pubkey_export_rsa_raw2(gnutls_pubkey_t key, - gnutls_datum_t * m, gnutls_datum_t * e, - unsigned flags) +int gnutls_pubkey_export_rsa_raw2(gnutls_pubkey_t key, gnutls_datum_t *m, + gnutls_datum_t *e, unsigned flags) { int ret; mpi_dprint_func dprint = _gnutls_mpi_dprint_lz; @@ -979,9 +958,8 @@ gnutls_pubkey_export_rsa_raw2(gnutls_pubkey_t key, * * Since: 3.3.0 **/ -int -gnutls_pubkey_export_rsa_raw(gnutls_pubkey_t key, - gnutls_datum_t * m, gnutls_datum_t * e) +int gnutls_pubkey_export_rsa_raw(gnutls_pubkey_t key, gnutls_datum_t *m, + gnutls_datum_t *e) { return gnutls_pubkey_export_rsa_raw2(key, m, e, 0); } @@ -1004,10 +982,9 @@ gnutls_pubkey_export_rsa_raw(gnutls_pubkey_t key, * * Since: 3.3.0 **/ -int -gnutls_pubkey_export_dsa_raw(gnutls_pubkey_t key, - gnutls_datum_t * p, gnutls_datum_t * q, - gnutls_datum_t * g, gnutls_datum_t * y) +int gnutls_pubkey_export_dsa_raw(gnutls_pubkey_t key, gnutls_datum_t *p, + gnutls_datum_t *q, gnutls_datum_t *g, + gnutls_datum_t *y) { return gnutls_pubkey_export_dsa_raw2(key, p, q, g, y, 0); } @@ -1031,11 +1008,9 @@ gnutls_pubkey_export_dsa_raw(gnutls_pubkey_t key, * * Since: 3.6.0 **/ -int -gnutls_pubkey_export_dsa_raw2(gnutls_pubkey_t key, - gnutls_datum_t * p, gnutls_datum_t * q, - gnutls_datum_t * g, gnutls_datum_t * y, - unsigned flags) +int gnutls_pubkey_export_dsa_raw2(gnutls_pubkey_t key, gnutls_datum_t *p, + gnutls_datum_t *q, gnutls_datum_t *g, + gnutls_datum_t *y, unsigned flags) { int ret; mpi_dprint_func dprint = _gnutls_mpi_dprint_lz; @@ -1118,10 +1093,8 @@ gnutls_pubkey_export_dsa_raw2(gnutls_pubkey_t key, * * Since: 3.0 **/ -int -gnutls_pubkey_export_ecc_raw(gnutls_pubkey_t key, - gnutls_ecc_curve_t * curve, - gnutls_datum_t * x, gnutls_datum_t * y) +int gnutls_pubkey_export_ecc_raw(gnutls_pubkey_t key, gnutls_ecc_curve_t *curve, + gnutls_datum_t *x, gnutls_datum_t *y) { return gnutls_pubkey_export_ecc_raw2(key, curve, x, y, 0); } @@ -1147,11 +1120,9 @@ gnutls_pubkey_export_ecc_raw(gnutls_pubkey_t key, * * Since: 3.6.0 **/ -int -gnutls_pubkey_export_ecc_raw2(gnutls_pubkey_t key, - gnutls_ecc_curve_t * curve, - gnutls_datum_t * x, gnutls_datum_t * y, - unsigned int flags) +int gnutls_pubkey_export_ecc_raw2(gnutls_pubkey_t key, + gnutls_ecc_curve_t *curve, gnutls_datum_t *x, + gnutls_datum_t *y, unsigned int flags) { int ret; mpi_dprint_func dprint = _gnutls_mpi_dprint_lz; @@ -1177,9 +1148,8 @@ gnutls_pubkey_export_ecc_raw2(gnutls_pubkey_t key, key->params.algo == GNUTLS_PK_ECDH_X25519 || key->params.algo == GNUTLS_PK_ECDH_X448) { if (x) { - ret = - _gnutls_set_datum(x, key->params.raw_pub.data, - key->params.raw_pub.size); + ret = _gnutls_set_datum(x, key->params.raw_pub.data, + key->params.raw_pub.size); if (ret < 0) return gnutls_assert_val(ret); } @@ -1229,8 +1199,8 @@ gnutls_pubkey_export_ecc_raw2(gnutls_pubkey_t key, * Since: 3.3.0 **/ int gnutls_pubkey_export_ecc_x962(gnutls_pubkey_t key, - gnutls_datum_t * parameters, - gnutls_datum_t * ecpoint) + gnutls_datum_t *parameters, + gnutls_datum_t *ecpoint) { int ret; gnutls_datum_t raw_point = { NULL, 0 }; @@ -1258,7 +1228,7 @@ int gnutls_pubkey_export_ecc_x962(gnutls_pubkey_t key, } ret = 0; - cleanup: +cleanup: gnutls_free(raw_point.data); return ret; } @@ -1284,13 +1254,12 @@ int gnutls_pubkey_export_ecc_x962(gnutls_pubkey_t key, * * Since: 3.6.3 **/ -int -gnutls_pubkey_export_gost_raw2(gnutls_pubkey_t key, - gnutls_ecc_curve_t * curve, - gnutls_digest_algorithm_t * digest, - gnutls_gost_paramset_t * paramset, - gnutls_datum_t * x, gnutls_datum_t * y, - unsigned int flags) +int gnutls_pubkey_export_gost_raw2(gnutls_pubkey_t key, + gnutls_ecc_curve_t *curve, + gnutls_digest_algorithm_t *digest, + gnutls_gost_paramset_t *paramset, + gnutls_datum_t *x, gnutls_datum_t *y, + unsigned int flags) { int ret; @@ -1356,9 +1325,8 @@ gnutls_pubkey_export_gost_raw2(gnutls_pubkey_t key, * * Since: 2.12.0 **/ -int -gnutls_pubkey_import(gnutls_pubkey_t key, - const gnutls_datum_t * data, gnutls_x509_crt_fmt_t format) +int gnutls_pubkey_import(gnutls_pubkey_t key, const gnutls_datum_t *data, + gnutls_x509_crt_fmt_t format) { int result = 0, need_free = 0; gnutls_datum_t _data; @@ -1376,9 +1344,8 @@ gnutls_pubkey_import(gnutls_pubkey_t key, */ if (format == GNUTLS_X509_FMT_PEM) { /* Try the first header */ - result = - _gnutls_fbase64_decode(PEM_PK, data->data, - data->size, &_data); + result = _gnutls_fbase64_decode(PEM_PK, data->data, data->size, + &_data); if (result < 0) { gnutls_assert(); @@ -1388,9 +1355,9 @@ gnutls_pubkey_import(gnutls_pubkey_t key, need_free = 1; } - if ((result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.SubjectPublicKeyInfo", &spk)) - != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.SubjectPublicKeyInfo", + &spk)) != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; @@ -1412,7 +1379,7 @@ gnutls_pubkey_import(gnutls_pubkey_t key, key->bits = pubkey_to_bits(&key->params); result = 0; - cleanup: +cleanup: asn1_delete_structure(&spk); if (need_free) @@ -1442,9 +1409,8 @@ int gnutls_x509_crt_set_pubkey(gnutls_x509_crt_t crt, gnutls_pubkey_t key) return GNUTLS_E_INVALID_REQUEST; } - result = _gnutls_x509_encode_and_copy_PKI_params(crt->cert, - "tbsCertificate.subjectPublicKeyInfo", - &key->params); + result = _gnutls_x509_encode_and_copy_PKI_params( + crt->cert, "tbsCertificate.subjectPublicKeyInfo", &key->params); if (result < 0) { gnutls_assert(); @@ -1479,8 +1445,9 @@ int gnutls_x509_crq_set_pubkey(gnutls_x509_crq_t crq, gnutls_pubkey_t key) return GNUTLS_E_INVALID_REQUEST; } - result = _gnutls_x509_encode_and_copy_PKI_params - (crq->crq, "certificationRequestInfo.subjectPKInfo", &key->params); + result = _gnutls_x509_encode_and_copy_PKI_params( + crq->crq, "certificationRequestInfo.subjectPKInfo", + &key->params); if (result < 0) { gnutls_assert(); @@ -1516,7 +1483,7 @@ int gnutls_pubkey_set_key_usage(gnutls_pubkey_t key, unsigned int usage) #ifdef ENABLE_PKCS11 -# if 0 +#if 0 /** * gnutls_pubkey_import_pkcs11_url: * @key: A key of type #gnutls_pubkey_t @@ -1537,11 +1504,10 @@ gnutls_pubkey_import_pkcs11_url(gnutls_pubkey_t key, const char *url, { int x; } -# endif +#endif -static int -_gnutls_pubkey_import_pkcs11_url(gnutls_pubkey_t key, const char *url, - unsigned int flags) +static int _gnutls_pubkey_import_pkcs11_url(gnutls_pubkey_t key, + const char *url, unsigned int flags) { gnutls_pkcs11_obj_t pcrt; int ret; @@ -1556,10 +1522,8 @@ _gnutls_pubkey_import_pkcs11_url(gnutls_pubkey_t key, const char *url, gnutls_pkcs11_obj_set_pin_function(pcrt, key->pin.cb, key->pin.data); - ret = - gnutls_pkcs11_obj_import_url(pcrt, url, - flags | - GNUTLS_PKCS11_OBJ_FLAG_EXPECT_PUBKEY); + ret = gnutls_pkcs11_obj_import_url( + pcrt, url, flags | GNUTLS_PKCS11_OBJ_FLAG_EXPECT_PUBKEY); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -1572,14 +1536,14 @@ _gnutls_pubkey_import_pkcs11_url(gnutls_pubkey_t key, const char *url, } ret = 0; - cleanup: +cleanup: gnutls_pkcs11_obj_deinit(pcrt); return ret; } -#endif /* ENABLE_PKCS11 */ +#endif /* ENABLE_PKCS11 */ /** * gnutls_pubkey_import_url: @@ -1594,20 +1558,17 @@ _gnutls_pubkey_import_pkcs11_url(gnutls_pubkey_t key, const char *url, * * Since: 3.1.0 **/ -int -gnutls_pubkey_import_url(gnutls_pubkey_t key, const char *url, - unsigned int flags) +int gnutls_pubkey_import_url(gnutls_pubkey_t key, const char *url, + unsigned int flags) { unsigned i; for (i = 0; i < _gnutls_custom_urls_size; i++) { - if (strncmp - (url, _gnutls_custom_urls[i].name, - _gnutls_custom_urls[i].name_size) == 0) { + if (strncmp(url, _gnutls_custom_urls[i].name, + _gnutls_custom_urls[i].name_size) == 0) { if (_gnutls_custom_urls[i].import_pubkey) - return _gnutls_custom_urls[i].import_pubkey(key, - url, - flags); + return _gnutls_custom_urls[i].import_pubkey( + key, url, flags); } } @@ -1642,9 +1603,8 @@ gnutls_pubkey_import_url(gnutls_pubkey_t key, const char *url, * * Since: 2.12.0 **/ -int -gnutls_pubkey_import_rsa_raw(gnutls_pubkey_t key, - const gnutls_datum_t * m, const gnutls_datum_t * e) +int gnutls_pubkey_import_rsa_raw(gnutls_pubkey_t key, const gnutls_datum_t *m, + const gnutls_datum_t *e) { if (key == NULL) { gnutls_assert(); @@ -1654,12 +1614,14 @@ gnutls_pubkey_import_rsa_raw(gnutls_pubkey_t key, gnutls_pk_params_release(&key->params); gnutls_pk_params_init(&key->params); - if (_gnutls_mpi_init_scan_nz(&key->params.params[0], m->data, m->size)) { + if (_gnutls_mpi_init_scan_nz(&key->params.params[0], m->data, + m->size)) { gnutls_assert(); return GNUTLS_E_MPI_SCAN_FAILED; } - if (_gnutls_mpi_init_scan_nz(&key->params.params[1], e->data, e->size)) { + if (_gnutls_mpi_init_scan_nz(&key->params.params[1], e->data, + e->size)) { gnutls_assert(); _gnutls_mpi_release(&key->params.params[0]); return GNUTLS_E_MPI_SCAN_FAILED; @@ -1690,10 +1652,9 @@ gnutls_pubkey_import_rsa_raw(gnutls_pubkey_t key, * * Since: 3.0 **/ -int -gnutls_pubkey_import_ecc_raw(gnutls_pubkey_t key, - gnutls_ecc_curve_t curve, - const gnutls_datum_t * x, const gnutls_datum_t * y) +int gnutls_pubkey_import_ecc_raw(gnutls_pubkey_t key, gnutls_ecc_curve_t curve, + const gnutls_datum_t *x, + const gnutls_datum_t *y) { int ret; @@ -1742,16 +1703,16 @@ gnutls_pubkey_import_ecc_raw(gnutls_pubkey_t key, key->params.curve = curve; - if (_gnutls_mpi_init_scan_nz - (&key->params.params[ECC_X], x->data, x->size)) { + if (_gnutls_mpi_init_scan_nz(&key->params.params[ECC_X], x->data, + x->size)) { gnutls_assert(); ret = GNUTLS_E_MPI_SCAN_FAILED; goto cleanup; } key->params.params_nr++; - if (_gnutls_mpi_init_scan_nz - (&key->params.params[ECC_Y], y->data, y->size)) { + if (_gnutls_mpi_init_scan_nz(&key->params.params[ECC_Y], y->data, + y->size)) { gnutls_assert(); ret = GNUTLS_E_MPI_SCAN_FAILED; goto cleanup; @@ -1762,7 +1723,7 @@ gnutls_pubkey_import_ecc_raw(gnutls_pubkey_t key, return 0; - cleanup: +cleanup: gnutls_pk_params_release(&key->params); return ret; } @@ -1781,10 +1742,9 @@ gnutls_pubkey_import_ecc_raw(gnutls_pubkey_t key, * * Since: 3.0 **/ -int -gnutls_pubkey_import_ecc_x962(gnutls_pubkey_t key, - const gnutls_datum_t * parameters, - const gnutls_datum_t * ecpoint) +int gnutls_pubkey_import_ecc_x962(gnutls_pubkey_t key, + const gnutls_datum_t *parameters, + const gnutls_datum_t *ecpoint) { int ret; gnutls_datum_t raw_point = { NULL, 0 }; @@ -1799,17 +1759,15 @@ gnutls_pubkey_import_ecc_x962(gnutls_pubkey_t key, key->params.params_nr = 0; - ret = - _gnutls_x509_read_ecc_params(parameters->data, - parameters->size, &key->params.curve); + ret = _gnutls_x509_read_ecc_params(parameters->data, parameters->size, + &key->params.curve); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = _gnutls_x509_decode_string(ASN1_ETYPE_OCTET_STRING, - ecpoint->data, ecpoint->size, - &raw_point, 0); + ret = _gnutls_x509_decode_string(ASN1_ETYPE_OCTET_STRING, ecpoint->data, + ecpoint->size, &raw_point, 0); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -1828,7 +1786,7 @@ gnutls_pubkey_import_ecc_x962(gnutls_pubkey_t key, gnutls_free(raw_point.data); return 0; - cleanup: +cleanup: gnutls_pk_params_release(&key->params); gnutls_free(raw_point.data); return ret; @@ -1857,13 +1815,11 @@ gnutls_pubkey_import_ecc_x962(gnutls_pubkey_t key, * * Since: 3.6.3 **/ -int -gnutls_pubkey_import_gost_raw(gnutls_pubkey_t key, - gnutls_ecc_curve_t curve, - gnutls_digest_algorithm_t digest, - gnutls_gost_paramset_t paramset, - const gnutls_datum_t * x, - const gnutls_datum_t * y) +int gnutls_pubkey_import_gost_raw(gnutls_pubkey_t key, gnutls_ecc_curve_t curve, + gnutls_digest_algorithm_t digest, + gnutls_gost_paramset_t paramset, + const gnutls_datum_t *x, + const gnutls_datum_t *y) { int ret; gnutls_pk_algorithm_t pk_algo; @@ -1886,16 +1842,16 @@ gnutls_pubkey_import_gost_raw(gnutls_pubkey_t key, key->params.curve = curve; key->params.gost_params = paramset; - if (_gnutls_mpi_init_scan_le - (&key->params.params[GOST_X], x->data, x->size)) { + if (_gnutls_mpi_init_scan_le(&key->params.params[GOST_X], x->data, + x->size)) { gnutls_assert(); ret = GNUTLS_E_MPI_SCAN_FAILED; goto cleanup; } key->params.params_nr++; - if (_gnutls_mpi_init_scan_le - (&key->params.params[GOST_Y], y->data, y->size)) { + if (_gnutls_mpi_init_scan_le(&key->params.params[GOST_Y], y->data, + y->size)) { gnutls_assert(); ret = GNUTLS_E_MPI_SCAN_FAILED; goto cleanup; @@ -1905,7 +1861,7 @@ gnutls_pubkey_import_gost_raw(gnutls_pubkey_t key, return 0; - cleanup: +cleanup: gnutls_pk_params_release(&key->params); return ret; } @@ -1927,11 +1883,10 @@ gnutls_pubkey_import_gost_raw(gnutls_pubkey_t key, * * Since: 2.12.0 **/ -int -gnutls_pubkey_import_dsa_raw(gnutls_pubkey_t key, - const gnutls_datum_t * p, - const gnutls_datum_t * q, - const gnutls_datum_t * g, const gnutls_datum_t * y) +int gnutls_pubkey_import_dsa_raw(gnutls_pubkey_t key, const gnutls_datum_t *p, + const gnutls_datum_t *q, + const gnutls_datum_t *g, + const gnutls_datum_t *y) { size_t siz = 0; @@ -1978,16 +1933,15 @@ gnutls_pubkey_import_dsa_raw(gnutls_pubkey_t key, key->bits = pubkey_to_bits(&key->params); return 0; - } /* Updates the gnutls_x509_spki_st parameters based on the signature * information, and reports any incompatibilities between the existing * parameters (if any) with the signature algorithm */ -static -int fixup_spki_params(const gnutls_pk_params_st * key_params, - const gnutls_sign_entry_st * se, const mac_entry_st * me, - gnutls_x509_spki_st * params) +static int fixup_spki_params(const gnutls_pk_params_st *key_params, + const gnutls_sign_entry_st *se, + const mac_entry_st *me, + gnutls_x509_spki_st *params) { unsigned bits; @@ -2008,8 +1962,8 @@ int fixup_spki_params(const gnutls_pk_params_st * key_params, /* The requested sign algorithm is RSA-PSS, while the * pubkey doesn't include parameter information. Fill * it with the same way as gnutls_privkey_sign*. */ - if (key_params->algo == GNUTLS_PK_RSA - || params->rsa_pss_dig == 0) { + if (key_params->algo == GNUTLS_PK_RSA || + params->rsa_pss_dig == 0) { bits = pubkey_to_bits(key_params); params->rsa_pss_dig = se->hash; ret = _gnutls_find_rsa_pss_salt_size(bits, me, 0); @@ -2021,7 +1975,8 @@ int fixup_spki_params(const gnutls_pk_params_st * key_params, if (params->rsa_pss_dig != se->hash) return gnutls_assert_val(GNUTLS_E_CONSTRAINT_ERROR); - } else if (params->pk == GNUTLS_PK_DSA || params->pk == GNUTLS_PK_ECDSA) { + } else if (params->pk == GNUTLS_PK_DSA || + params->pk == GNUTLS_PK_ECDSA) { params->dsa_dig = se->hash; } @@ -2046,12 +2001,10 @@ int fixup_spki_params(const gnutls_pk_params_st * key_params, * * Since: 3.0 **/ -int -gnutls_pubkey_verify_data2(gnutls_pubkey_t pubkey, - gnutls_sign_algorithm_t algo, - unsigned int flags, - const gnutls_datum_t * data, - const gnutls_datum_t * signature) +int gnutls_pubkey_verify_data2(gnutls_pubkey_t pubkey, + gnutls_sign_algorithm_t algo, unsigned int flags, + const gnutls_datum_t *data, + const gnutls_datum_t *signature) { int ret; const mac_entry_st *me; @@ -2115,12 +2068,10 @@ gnutls_pubkey_verify_data2(gnutls_pubkey_t pubkey, * * Since: 3.0 **/ -int -gnutls_pubkey_verify_hash2(gnutls_pubkey_t key, - gnutls_sign_algorithm_t algo, - unsigned int flags, - const gnutls_datum_t * hash, - const gnutls_datum_t * signature) +int gnutls_pubkey_verify_hash2(gnutls_pubkey_t key, + gnutls_sign_algorithm_t algo, unsigned int flags, + const gnutls_datum_t *hash, + const gnutls_datum_t *signature) { const mac_entry_st *me; gnutls_x509_spki_st params; @@ -2140,9 +2091,8 @@ gnutls_pubkey_verify_hash2(gnutls_pubkey_t key, if (flags & GNUTLS_VERIFY_USE_TLS1_RSA) { if (!GNUTLS_PK_IS_RSA(key->params.algo)) - return - gnutls_assert_val - (GNUTLS_E_INCOMPATIBLE_SIG_WITH_KEY); + return gnutls_assert_val( + GNUTLS_E_INCOMPATIBLE_SIG_WITH_KEY); params.pk = GNUTLS_PK_RSA; /* we do not check for insecure algorithms with this flag */ return _gnutls_pk_verify(params.pk, hash, signature, @@ -2188,46 +2138,45 @@ gnutls_pubkey_verify_hash2(gnutls_pubkey_t key, * * Since: 3.0 **/ -int -gnutls_pubkey_encrypt_data(gnutls_pubkey_t key, unsigned int flags, - const gnutls_datum_t * plaintext, - gnutls_datum_t * ciphertext) +int gnutls_pubkey_encrypt_data(gnutls_pubkey_t key, unsigned int flags, + const gnutls_datum_t *plaintext, + gnutls_datum_t *ciphertext) { if (key == NULL) { gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; } - return _gnutls_pk_encrypt(key->params.algo, ciphertext, - plaintext, &key->params); + return _gnutls_pk_encrypt(key->params.algo, ciphertext, plaintext, + &key->params); } -static -int pubkey_supports_sig(gnutls_pubkey_t pubkey, const gnutls_sign_entry_st * se) +static int pubkey_supports_sig(gnutls_pubkey_t pubkey, + const gnutls_sign_entry_st *se) { if (pubkey->params.algo == GNUTLS_PK_ECDSA && se->curve) { gnutls_ecc_curve_t curve = pubkey->params.curve; if (curve != se->curve) { - _gnutls_handshake_log - ("have key: ECDSA with %s/%d, with sign %s/%d\n", - gnutls_ecc_curve_get_name(curve), (int)curve, - se->name, se->id); - return - gnutls_assert_val - (GNUTLS_E_INCOMPATIBLE_SIG_WITH_KEY); + _gnutls_handshake_log( + "have key: ECDSA with %s/%d, with sign %s/%d\n", + gnutls_ecc_curve_get_name(curve), (int)curve, + se->name, se->id); + return gnutls_assert_val( + GNUTLS_E_INCOMPATIBLE_SIG_WITH_KEY); } } - if (se->pk != pubkey->params.algo) { /* if the PK algorithm of the signature differs to the one on the pubkey */ + if (se->pk != + pubkey->params + .algo) { /* if the PK algorithm of the signature differs to the one on the pubkey */ if (!sign_supports_priv_pk_algorithm(se, pubkey->params.algo)) { - _gnutls_handshake_log - ("have key: %s/%d, with sign %s/%d\n", - gnutls_pk_get_name(pubkey->params.algo), - pubkey->params.algo, se->name, se->id); - return - gnutls_assert_val - (GNUTLS_E_INCOMPATIBLE_SIG_WITH_KEY); + _gnutls_handshake_log( + "have key: %s/%d, with sign %s/%d\n", + gnutls_pk_get_name(pubkey->params.algo), + pubkey->params.algo, se->name, se->id); + return gnutls_assert_val( + GNUTLS_E_INCOMPATIBLE_SIG_WITH_KEY); } } @@ -2240,7 +2189,7 @@ int pubkey_supports_sig(gnutls_pubkey_t pubkey, const gnutls_sign_entry_st * se) */ int _gnutls_pubkey_compatible_with_sig(gnutls_session_t session, gnutls_pubkey_t pubkey, - const version_entry_st * ver, + const version_entry_st *ver, gnutls_sign_algorithm_t sign) { unsigned int hash_size = 0; @@ -2264,22 +2213,21 @@ int _gnutls_pubkey_compatible_with_sig(gnutls_session_t session, /* DSA keys over 1024 bits cannot be used with TLS 1.x, x<2 */ if (!_gnutls_version_has_selectable_sighash(ver)) { if (me->id != GNUTLS_MAC_SHA1) - return - gnutls_assert_val - (GNUTLS_E_INCOMPAT_DSA_KEY_WITH_TLS_PROTOCOL); + return gnutls_assert_val( + GNUTLS_E_INCOMPAT_DSA_KEY_WITH_TLS_PROTOCOL); } else if (se != NULL) { me = hash_to_entry(se->hash); sig_hash_size = _gnutls_hash_get_algo_len(me); if (sig_hash_size < hash_size) - _gnutls_audit_log(session, - "The hash size used in signature (%u) is less than the expected (%u)\n", - sig_hash_size, hash_size); + _gnutls_audit_log( + session, + "The hash size used in signature (%u) is less than the expected (%u)\n", + sig_hash_size, hash_size); } } else if (pubkey->params.algo == GNUTLS_PK_ECDSA) { - if (_gnutls_version_has_selectable_sighash(ver) - && se != NULL) { + if (_gnutls_version_has_selectable_sighash(ver) && se != NULL) { _gnutls_dsa_q_to_hash(&pubkey->params, &hash_size); me = hash_to_entry(se->hash); @@ -2287,26 +2235,26 @@ int _gnutls_pubkey_compatible_with_sig(gnutls_session_t session, sig_hash_size = _gnutls_hash_get_algo_len(me); if (sig_hash_size < hash_size) - _gnutls_audit_log(session, - "The hash size used in signature (%u) is less than the expected (%u)\n", - sig_hash_size, hash_size); + _gnutls_audit_log( + session, + "The hash size used in signature (%u) is less than the expected (%u)\n", + sig_hash_size, hash_size); } } else if (pubkey->params.algo == GNUTLS_PK_GOST_01 || pubkey->params.algo == GNUTLS_PK_GOST_12_256 || pubkey->params.algo == GNUTLS_PK_GOST_12_512) { - if (_gnutls_version_has_selectable_sighash(ver) - && se != NULL) { + if (_gnutls_version_has_selectable_sighash(ver) && se != NULL) { if (_gnutls_gost_digest(pubkey->params.algo) != se->hash) { - _gnutls_audit_log(session, - "The hash algo used in signature (%u) is not expected (%u)\n", - se->hash, - _gnutls_gost_digest - (pubkey->params.algo)); - return - gnutls_assert_val - (GNUTLS_E_CONSTRAINT_ERROR); + _gnutls_audit_log( + session, + "The hash algo used in signature (%u) is not expected (%u)\n", + se->hash, + _gnutls_gost_digest( + pubkey->params.algo)); + return gnutls_assert_val( + GNUTLS_E_CONSTRAINT_ERROR); } } @@ -2317,8 +2265,8 @@ int _gnutls_pubkey_compatible_with_sig(gnutls_session_t session, /* RSA PSS public keys are restricted to a single digest, i.e., signature */ - if (pubkey->params.spki.rsa_pss_dig - && pubkey->params.spki.rsa_pss_dig != se->hash) { + if (pubkey->params.spki.rsa_pss_dig && + pubkey->params.spki.rsa_pss_dig != se->hash) { return gnutls_assert_val(GNUTLS_E_CONSTRAINT_ERROR); } } @@ -2328,7 +2276,7 @@ int _gnutls_pubkey_compatible_with_sig(gnutls_session_t session, /* Returns the public key. */ -int _gnutls_pubkey_get_mpis(gnutls_pubkey_t key, gnutls_pk_params_st * params) +int _gnutls_pubkey_get_mpis(gnutls_pubkey_t key, gnutls_pk_params_st *params) { return _gnutls_pk_params_copy(params, &key->params); } @@ -2338,14 +2286,13 @@ int _gnutls_pubkey_get_mpis(gnutls_pubkey_t key, gnutls_pk_params_st * params) * params[0] is modulus * params[1] is public key */ -static int -_pkcs1_rsa_verify_sig(gnutls_pk_algorithm_t pk, - const mac_entry_st * me, - const gnutls_datum_t * text, - const gnutls_datum_t * prehash, - const gnutls_datum_t * signature, - gnutls_pk_params_st * params, - gnutls_x509_spki_st * sign_params) +static int _pkcs1_rsa_verify_sig(gnutls_pk_algorithm_t pk, + const mac_entry_st *me, + const gnutls_datum_t *text, + const gnutls_datum_t *prehash, + const gnutls_datum_t *signature, + gnutls_pk_params_st *params, + gnutls_x509_spki_st *sign_params) { int ret; uint8_t md[MAX_HASH_SIZE], *cmp; @@ -2367,7 +2314,7 @@ _pkcs1_rsa_verify_sig(gnutls_pk_algorithm_t pk, return GNUTLS_E_INVALID_REQUEST; } - ret = _gnutls_hash_fast((gnutls_digest_algorithm_t) me->id, + ret = _gnutls_hash_fast((gnutls_digest_algorithm_t)me->id, text->data, text->size, md); if (ret < 0) { gnutls_assert(); @@ -2391,8 +2338,8 @@ _pkcs1_rsa_verify_sig(gnutls_pk_algorithm_t pk, case GNUTLS_MAC_SHA224: break; default: - _gnutls_switch_fips_state - (GNUTLS_FIPS140_OP_NOT_APPROVED); + _gnutls_switch_fips_state( + GNUTLS_FIPS140_OP_NOT_APPROVED); } /* decrypted is a BER encoded data of type DigestInfo @@ -2413,13 +2360,12 @@ _pkcs1_rsa_verify_sig(gnutls_pk_algorithm_t pk, /* Hashes input data and verifies a signature. */ -static int -dsa_verify_hashed_data(gnutls_pk_algorithm_t pk, - const mac_entry_st * algo, - const gnutls_datum_t * hash, - const gnutls_datum_t * signature, - gnutls_pk_params_st * params, - gnutls_x509_spki_st * sign_params) +static int dsa_verify_hashed_data(gnutls_pk_algorithm_t pk, + const mac_entry_st *algo, + const gnutls_datum_t *hash, + const gnutls_datum_t *signature, + gnutls_pk_params_st *params, + gnutls_x509_spki_st *sign_params) { gnutls_datum_t digest; unsigned int hash_len; @@ -2432,11 +2378,11 @@ dsa_verify_hashed_data(gnutls_pk_algorithm_t pk, /* SHA1 or better allowed */ if (!hash->data || hash->size < hash_len) { gnutls_assert(); - _gnutls_debug_log - ("Hash size (%d) does not correspond to hash %s(%d) or better.\n", - (int)hash->size, _gnutls_mac_get_name(algo), hash_len); + _gnutls_debug_log( + "Hash size (%d) does not correspond to hash %s(%d) or better.\n", + (int)hash->size, _gnutls_mac_get_name(algo), hash_len); - if (hash->size != 20) /* SHA1 is allowed */ + if (hash->size != 20) /* SHA1 is allowed */ return gnutls_assert_val(GNUTLS_E_PK_SIG_VERIFY_FAILED); } @@ -2446,12 +2392,11 @@ dsa_verify_hashed_data(gnutls_pk_algorithm_t pk, return _gnutls_pk_verify(pk, &digest, signature, params, sign_params); } -static int -dsa_verify_data(gnutls_pk_algorithm_t pk, - const mac_entry_st * algo, - const gnutls_datum_t * data, - const gnutls_datum_t * signature, - gnutls_pk_params_st * params, gnutls_x509_spki_st * sign_params) +static int dsa_verify_data(gnutls_pk_algorithm_t pk, const mac_entry_st *algo, + const gnutls_datum_t *data, + const gnutls_datum_t *signature, + gnutls_pk_params_st *params, + gnutls_x509_spki_st *sign_params) { int ret; uint8_t _digest[MAX_HASH_SIZE]; @@ -2460,8 +2405,8 @@ dsa_verify_data(gnutls_pk_algorithm_t pk, if (algo == NULL) algo = _gnutls_dsa_q_to_hash(params, NULL); - ret = _gnutls_hash_fast((gnutls_digest_algorithm_t) algo->id, - data->data, data->size, _digest); + ret = _gnutls_hash_fast((gnutls_digest_algorithm_t)algo->id, data->data, + data->size, _digest); if (ret < 0) return gnutls_assert_val(ret); @@ -2474,13 +2419,13 @@ dsa_verify_data(gnutls_pk_algorithm_t pk, /* Verifies the signature data, and returns GNUTLS_E_PK_SIG_VERIFY_FAILED if * not verified, or 1 otherwise. */ -static int -pubkey_verify_hashed_data(const gnutls_sign_entry_st * se, - const mac_entry_st * me, - const gnutls_datum_t * hash, - const gnutls_datum_t * signature, - gnutls_pk_params_st * params, - gnutls_x509_spki_st * sign_params, unsigned flags) +static int pubkey_verify_hashed_data(const gnutls_sign_entry_st *se, + const mac_entry_st *me, + const gnutls_datum_t *hash, + const gnutls_datum_t *signature, + gnutls_pk_params_st *params, + gnutls_x509_spki_st *sign_params, + unsigned flags) { int ret; @@ -2495,9 +2440,8 @@ pubkey_verify_hashed_data(const gnutls_sign_entry_st * se, case GNUTLS_PK_RSA: case GNUTLS_PK_RSA_PSS: - if (_pkcs1_rsa_verify_sig - (se->pk, me, NULL, hash, signature, params, - sign_params) != 0) { + if (_pkcs1_rsa_verify_sig(se->pk, me, NULL, hash, signature, + params, sign_params) != 0) { gnutls_assert(); return GNUTLS_E_PK_SIG_VERIFY_FAILED; } @@ -2509,8 +2453,8 @@ pubkey_verify_hashed_data(const gnutls_sign_entry_st * se, case GNUTLS_PK_GOST_12_256: case GNUTLS_PK_GOST_12_512: case GNUTLS_PK_DSA: - if (dsa_verify_hashed_data - (se->pk, me, hash, signature, params, sign_params) != 0) { + if (dsa_verify_hashed_data(se->pk, me, hash, signature, params, + sign_params) != 0) { gnutls_assert(); return GNUTLS_E_PK_SIG_VERIFY_FAILED; } @@ -2519,11 +2463,10 @@ pubkey_verify_hashed_data(const gnutls_sign_entry_st * se, default: gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; - } - if (_gnutls_sign_is_secure2(se, 0) == 0 - && _gnutls_is_broken_sig_allowed(se, flags) == 0) { + if (_gnutls_sign_is_secure2(se, 0) == 0 && + _gnutls_is_broken_sig_allowed(se, flags) == 0) { return gnutls_assert_val(GNUTLS_E_INSUFFICIENT_SECURITY); } @@ -2533,13 +2476,11 @@ pubkey_verify_hashed_data(const gnutls_sign_entry_st * se, /* Verifies the signature data, and returns GNUTLS_E_PK_SIG_VERIFY_FAILED if * not verified, or 1 otherwise. */ -int -pubkey_verify_data(const gnutls_sign_entry_st * se, - const mac_entry_st * me, - const gnutls_datum_t * data, - const gnutls_datum_t * signature, - gnutls_pk_params_st * params, - gnutls_x509_spki_st * sign_params, unsigned flags) +int pubkey_verify_data(const gnutls_sign_entry_st *se, const mac_entry_st *me, + const gnutls_datum_t *data, + const gnutls_datum_t *signature, + gnutls_pk_params_st *params, + gnutls_x509_spki_st *sign_params, unsigned flags) { int ret; @@ -2553,9 +2494,8 @@ pubkey_verify_data(const gnutls_sign_entry_st * se, switch (se->pk) { case GNUTLS_PK_RSA: case GNUTLS_PK_RSA_PSS: - if (_pkcs1_rsa_verify_sig - (se->pk, me, data, NULL, signature, params, - sign_params) != 0) { + if (_pkcs1_rsa_verify_sig(se->pk, me, data, NULL, signature, + params, sign_params) != 0) { gnutls_assert(); return GNUTLS_E_PK_SIG_VERIFY_FAILED; } @@ -2564,8 +2504,8 @@ pubkey_verify_data(const gnutls_sign_entry_st * se, case GNUTLS_PK_EDDSA_ED25519: case GNUTLS_PK_EDDSA_ED448: - if (_gnutls_pk_verify - (se->pk, data, signature, params, sign_params) != 0) { + if (_gnutls_pk_verify(se->pk, data, signature, params, + sign_params) != 0) { gnutls_assert(); return GNUTLS_E_PK_SIG_VERIFY_FAILED; } @@ -2577,8 +2517,8 @@ pubkey_verify_data(const gnutls_sign_entry_st * se, case GNUTLS_PK_GOST_01: case GNUTLS_PK_GOST_12_256: case GNUTLS_PK_GOST_12_512: - if (dsa_verify_data - (se->pk, me, data, signature, params, sign_params) != 0) { + if (dsa_verify_data(se->pk, me, data, signature, params, + sign_params) != 0) { gnutls_assert(); return GNUTLS_E_PK_SIG_VERIFY_FAILED; } @@ -2587,19 +2527,18 @@ pubkey_verify_data(const gnutls_sign_entry_st * se, default: gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; - } - if (_gnutls_sign_is_secure2(se, 0) == 0 - && _gnutls_is_broken_sig_allowed(se, flags) == 0) { + if (_gnutls_sign_is_secure2(se, 0) == 0 && + _gnutls_is_broken_sig_allowed(se, flags) == 0) { return gnutls_assert_val(GNUTLS_E_INSUFFICIENT_SECURITY); } return 1; } -const mac_entry_st *_gnutls_dsa_q_to_hash(const gnutls_pk_params_st * - params, unsigned int *hash_len) +const mac_entry_st *_gnutls_dsa_q_to_hash(const gnutls_pk_params_st *params, + unsigned int *hash_len) { int bits = 0; int ret; @@ -2677,7 +2616,7 @@ void gnutls_pubkey_set_pin_function(gnutls_pubkey_t key, * Since: 3.1.3 **/ int gnutls_pubkey_import_x509_raw(gnutls_pubkey_t pkey, - const gnutls_datum_t * data, + const gnutls_datum_t *data, gnutls_x509_crt_fmt_t format, unsigned int flags) { @@ -2702,7 +2641,7 @@ int gnutls_pubkey_import_x509_raw(gnutls_pubkey_t pkey, ret = 0; - cleanup: +cleanup: gnutls_x509_crt_deinit(xpriv); return ret; @@ -2746,9 +2685,8 @@ int gnutls_pubkey_verify_params(gnutls_pubkey_t key) * * Since: 3.6.0 **/ -int -gnutls_pubkey_get_spki(gnutls_pubkey_t pubkey, gnutls_x509_spki_t spki, - unsigned int flags) +int gnutls_pubkey_get_spki(gnutls_pubkey_t pubkey, gnutls_x509_spki_t spki, + unsigned int flags) { gnutls_x509_spki_t p = &pubkey->params.spki; @@ -2779,9 +2717,8 @@ gnutls_pubkey_get_spki(gnutls_pubkey_t pubkey, gnutls_x509_spki_t spki, * * Since: 3.6.0 **/ -int -gnutls_pubkey_set_spki(gnutls_pubkey_t pubkey, const gnutls_x509_spki_t spki, - unsigned int flags) +int gnutls_pubkey_set_spki(gnutls_pubkey_t pubkey, + const gnutls_x509_spki_t spki, unsigned int flags) { if (pubkey == NULL) { gnutls_assert(); diff --git a/lib/random.c b/lib/random.c index 9cd1ba4223..8038bda730 100644 --- a/lib/random.c +++ b/lib/random.c @@ -107,7 +107,7 @@ int _gnutls_rnd_preinit(void) int ret; #if defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION) -# warning Insecure PRNG is enabled +#warning Insecure PRNG is enabled ret = gnutls_crypto_rnd_register(100, &_gnutls_fuzz_rnd_ops); if (ret < 0) return ret; @@ -131,9 +131,8 @@ int _gnutls_rnd_preinit(void) if (ret) return gnutls_assert_val(GNUTLS_E_RANDOM_FAILED); - list = - gl_list_nx_create_empty(GL_LINKEDHASH_LIST, NULL, NULL, free_ctx, - false); + list = gl_list_nx_create_empty(GL_LINKEDHASH_LIST, NULL, NULL, free_ctx, + false); if (list == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); diff --git a/lib/random.h b/lib/random.h index 7e63a3ab43..0d76738971 100644 --- a/lib/random.h +++ b/lib/random.h @@ -21,11 +21,11 @@ */ #ifndef GNUTLS_LIB_RANDOM_H -# define GNUTLS_LIB_RANDOM_H +#define GNUTLS_LIB_RANDOM_H -# include -# include -# include "nettle/rnd-common.h" +#include +#include +#include "nettle/rnd-common.h" extern int crypto_rnd_prio; extern gnutls_crypto_rnd_st _gnutls_rnd_ops; @@ -33,4 +33,4 @@ extern gnutls_crypto_rnd_st _gnutls_rnd_ops; void _gnutls_rnd_deinit(void); int _gnutls_rnd_preinit(void); -#endif /* GNUTLS_LIB_RANDOM_H */ +#endif /* GNUTLS_LIB_RANDOM_H */ diff --git a/lib/randomart.c b/lib/randomart.c index d9efdaa997..a5ef2d4287 100644 --- a/lib/randomart.c +++ b/lib/randomart.c @@ -41,16 +41,15 @@ * an error code is returned. * **/ -int gnutls_random_art(gnutls_random_art_t type, - const char *key_type, unsigned int key_size, - void *fpr, size_t fpr_size, gnutls_datum_t * art) +int gnutls_random_art(gnutls_random_art_t type, const char *key_type, + unsigned int key_size, void *fpr, size_t fpr_size, + gnutls_datum_t *art) { if (type != GNUTLS_RANDOM_ART_OPENSSH) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - art->data = - (void *)_gnutls_key_fingerprint_randomart(fpr, fpr_size, - key_type, key_size, NULL); + art->data = (void *)_gnutls_key_fingerprint_randomart( + fpr, fpr_size, key_type, key_size, NULL); if (art->data == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); diff --git a/lib/range.c b/lib/range.c index 7f967758de..64a90db881 100644 --- a/lib/range.c +++ b/lib/range.c @@ -26,8 +26,8 @@ #include "constate.h" #include "record.h" -static void -_gnutls_set_range(gnutls_range_st * dst, const size_t low, const size_t high) +static void _gnutls_set_range(gnutls_range_st *dst, const size_t low, + const size_t high) { dst->low = low; dst->high = high; @@ -38,9 +38,8 @@ _gnutls_set_range(gnutls_range_st * dst, const size_t low, const size_t high) * Returns how much LH pad we can put in this fragment, given we'll * put at least data_length bytes of user data. */ -static ssize_t -_gnutls_range_max_lh_pad(gnutls_session_t session, ssize_t data_length, - ssize_t max_frag) +static ssize_t _gnutls_range_max_lh_pad(gnutls_session_t session, + ssize_t data_length, ssize_t max_frag) { int ret; ssize_t max_pad; @@ -59,7 +58,8 @@ _gnutls_range_max_lh_pad(gnutls_session_t session, ssize_t data_length, return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); } - if (!vers->tls13_sem && record_params->write.is_aead) /* not yet ready */ + if (!vers->tls13_sem && + record_params->write.is_aead) /* not yet ready */ return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); if (vers->tls13_sem) { @@ -80,9 +80,8 @@ _gnutls_range_max_lh_pad(gnutls_session_t session, ssize_t data_length, return this_pad; case CIPHER_BLOCK: - overflow = - (data_length + this_pad + tag_size + - fixed_pad) % block_size; + overflow = (data_length + this_pad + tag_size + fixed_pad) % + block_size; if (overflow > this_pad) { return this_pad; } else { @@ -158,15 +157,13 @@ unsigned gnutls_record_can_use_length_hiding(gnutls_session_t session) * Note that @orig is not changed, while the values of @next * and @remainder are modified to store the resulting values. */ -int -gnutls_range_split(gnutls_session_t session, - const gnutls_range_st * orig, - gnutls_range_st * next, gnutls_range_st * remainder) +int gnutls_range_split(gnutls_session_t session, const gnutls_range_st *orig, + gnutls_range_st *next, gnutls_range_st *remainder) { int ret; ssize_t max_frag; - ssize_t orig_low = (ssize_t) orig->low; - ssize_t orig_high = (ssize_t) orig->high; + ssize_t orig_low = (ssize_t)orig->low; + ssize_t orig_high = (ssize_t)orig->high; record_parameters_st *record_params; ret = _gnutls_epoch_get(session, EPOCH_WRITE_CURRENT, &record_params); @@ -188,9 +185,8 @@ gnutls_range_split(gnutls_session_t session, _gnutls_set_range(remainder, orig_low - max_frag, orig_high - max_frag); } else { - ret = - _gnutls_range_max_lh_pad(session, orig_low, - max_frag); + ret = _gnutls_range_max_lh_pad(session, orig_low, + max_frag); if (ret < 0) return gnutls_assert_val(ret); @@ -205,9 +201,8 @@ gnutls_range_split(gnutls_session_t session, } } -static size_t -_gnutls_range_fragment(size_t data_size, gnutls_range_st cur, - gnutls_range_st next) +static size_t _gnutls_range_fragment(size_t data_size, gnutls_range_st cur, + gnutls_range_st next) { return MIN(cur.high, data_size - next.low); } @@ -233,9 +228,8 @@ _gnutls_range_fragment(size_t data_size, gnutls_range_st cur, * Returns: The number of bytes sent (that is data_size in a successful invocation), * or a negative error code. **/ -ssize_t -gnutls_record_send_range(gnutls_session_t session, const void *data, - size_t data_size, const gnutls_range_st * range) +ssize_t gnutls_record_send_range(gnutls_session_t session, const void *data, + size_t data_size, const gnutls_range_st *range) { size_t sent = 0; size_t next_fragment_length; @@ -243,8 +237,8 @@ gnutls_record_send_range(gnutls_session_t session, const void *data, gnutls_range_st cur_range, next_range; /* sanity check on range and data size */ - if (range->low > range->high || - data_size < range->low || data_size > range->high) { + if (range->low > range->high || data_size < range->low || + data_size > range->high) { return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); } @@ -254,50 +248,46 @@ gnutls_record_send_range(gnutls_session_t session, const void *data, _gnutls_set_range(&cur_range, range->low, range->high); - _gnutls_record_log - ("RANGE: Preparing message with size %d, range (%d,%d)\n", - (int)data_size, (int)range->low, (int)range->high); + _gnutls_record_log( + "RANGE: Preparing message with size %d, range (%d,%d)\n", + (int)data_size, (int)range->low, (int)range->high); while (cur_range.high != 0) { - ret = - gnutls_range_split(session, &cur_range, &cur_range, - &next_range); + ret = gnutls_range_split(session, &cur_range, &cur_range, + &next_range); if (ret < 0) { - return ret; /* already gnutls_assert_val'd */ + return ret; /* already gnutls_assert_val'd */ } - next_fragment_length = - _gnutls_range_fragment(data_size, cur_range, next_range); + next_fragment_length = _gnutls_range_fragment( + data_size, cur_range, next_range); - _gnutls_record_log - ("RANGE: Next fragment size: %d (%d,%d); remaining range: (%d,%d)\n", - (int)next_fragment_length, (int)cur_range.low, - (int)cur_range.high, (int)next_range.low, - (int)next_range.high); + _gnutls_record_log( + "RANGE: Next fragment size: %d (%d,%d); remaining range: (%d,%d)\n", + (int)next_fragment_length, (int)cur_range.low, + (int)cur_range.high, (int)next_range.low, + (int)next_range.high); - ret = - _gnutls_send_tlen_int(session, GNUTLS_APPLICATION_DATA, - -1, EPOCH_WRITE_CURRENT, - &(((char *)data)[sent]), - next_fragment_length, - cur_range.high - - next_fragment_length, MBUFFER_FLUSH); + ret = _gnutls_send_tlen_int( + session, GNUTLS_APPLICATION_DATA, -1, + EPOCH_WRITE_CURRENT, &(((char *)data)[sent]), + next_fragment_length, + cur_range.high - next_fragment_length, MBUFFER_FLUSH); while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED) { - ret = - _gnutls_send_tlen_int(session, - GNUTLS_APPLICATION_DATA, - -1, EPOCH_WRITE_CURRENT, - NULL, 0, 0, MBUFFER_FLUSH); + ret = _gnutls_send_tlen_int(session, + GNUTLS_APPLICATION_DATA, -1, + EPOCH_WRITE_CURRENT, NULL, + 0, 0, MBUFFER_FLUSH); } if (ret < 0) { return gnutls_assert_val(ret); } - if (ret != (ssize_t) next_fragment_length) { - _gnutls_record_log - ("RANGE: ERROR: ret = %d; next_fragment_length = %d\n", - (int)ret, (int)next_fragment_length); + if (ret != (ssize_t)next_fragment_length) { + _gnutls_record_log( + "RANGE: ERROR: ret = %d; next_fragment_length = %d\n", + (int)ret, (int)next_fragment_length); return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); } sent += next_fragment_length; diff --git a/lib/record.c b/lib/record.c index bcec9c0e28..344247a392 100644 --- a/lib/record.c +++ b/lib/record.c @@ -60,13 +60,13 @@ struct tls_record_st { uint16_t header_size; uint8_t version[2]; - uint64_t sequence; /* DTLS */ + uint64_t sequence; /* DTLS */ uint16_t length; - uint16_t packet_size; /* header_size + length */ + uint16_t packet_size; /* header_size + length */ content_type_t type; - uint16_t epoch; /* valid in DTLS only */ + uint16_t epoch; /* valid in DTLS only */ #ifdef ENABLE_SSL2 - unsigned v2:1; /* whether an SSLv2 client hello */ + unsigned v2 : 1; /* whether an SSLv2 client hello */ #endif /* the data */ }; @@ -99,8 +99,8 @@ void gnutls_record_disable_padding(gnutls_session_t session) * connection descriptor. * **/ -void -gnutls_transport_set_ptr(gnutls_session_t session, gnutls_transport_ptr_t ptr) +void gnutls_transport_set_ptr(gnutls_session_t session, + gnutls_transport_ptr_t ptr) { session->internals.transport_recv_ptr = ptr; session->internals.transport_send_ptr = ptr; @@ -117,10 +117,9 @@ gnutls_transport_set_ptr(gnutls_session_t session, gnutls_transport_ptr_t ptr) * connection descriptor. With this function you can use two different * pointers for receiving and sending. **/ -void -gnutls_transport_set_ptr2(gnutls_session_t session, - gnutls_transport_ptr_t recv_ptr, - gnutls_transport_ptr_t send_ptr) +void gnutls_transport_set_ptr2(gnutls_session_t session, + gnutls_transport_ptr_t recv_ptr, + gnutls_transport_ptr_t send_ptr) { session->internals.transport_send_ptr = send_ptr; session->internals.transport_recv_ptr = recv_ptr; @@ -142,13 +141,13 @@ gnutls_transport_set_ptr2(gnutls_session_t session, * * Since: 3.1.9 **/ -void -gnutls_transport_set_int2(gnutls_session_t session, int recv_fd, int send_fd) +void gnutls_transport_set_int2(gnutls_session_t session, int recv_fd, + int send_fd) { session->internals.transport_send_ptr = - (gnutls_transport_ptr_t) (long)send_fd; + (gnutls_transport_ptr_t)(long)send_fd; session->internals.transport_recv_ptr = - (gnutls_transport_ptr_t) (long)recv_fd; + (gnutls_transport_ptr_t)(long)recv_fd; } #if 0 @@ -202,12 +201,10 @@ gnutls_transport_ptr_t gnutls_transport_get_ptr(gnutls_session_t session) * and PULL). These should have been set using * gnutls_transport_set_ptr2(). **/ -void -gnutls_transport_get_ptr2(gnutls_session_t session, - gnutls_transport_ptr_t * recv_ptr, - gnutls_transport_ptr_t * send_ptr) +void gnutls_transport_get_ptr2(gnutls_session_t session, + gnutls_transport_ptr_t *recv_ptr, + gnutls_transport_ptr_t *send_ptr) { - *recv_ptr = session->internals.transport_recv_ptr; *send_ptr = session->internals.transport_send_ptr; } @@ -224,11 +221,9 @@ gnutls_transport_get_ptr2(gnutls_session_t session, * * Since: 3.1.9 **/ -void -gnutls_transport_get_int2(gnutls_session_t session, - int *recv_int, int *send_int) +void gnutls_transport_get_int2(gnutls_session_t session, int *recv_int, + int *send_int) { - *recv_int = (long)session->internals.transport_recv_ptr; *send_int = (long)session->internals.transport_send_ptr; } @@ -310,21 +305,17 @@ int gnutls_bye(gnutls_session_t session, gnutls_close_request_t how) if (how == GNUTLS_SHUT_RDWR) { if (IS_KTLS_ENABLED(session, GNUTLS_KTLS_SEND)) { do { - ret = _gnutls_ktls_recv_int(session, - GNUTLS_ALERT, - NULL, 0); - } - while (ret == GNUTLS_E_GOT_APPLICATION_DATA); + ret = _gnutls_ktls_recv_int( + session, GNUTLS_ALERT, NULL, 0); + } while (ret == GNUTLS_E_GOT_APPLICATION_DATA); } else { do { - ret = - _gnutls_recv_int(session, - GNUTLS_ALERT, NULL, - 0, NULL, - session->internals. - record_timeout_ms); - } - while (ret == GNUTLS_E_GOT_APPLICATION_DATA); + ret = _gnutls_recv_int( + session, GNUTLS_ALERT, NULL, 0, + NULL, + session->internals + .record_timeout_ms); + } while (ret == GNUTLS_E_GOT_APPLICATION_DATA); } if (ret >= 0) @@ -367,9 +358,9 @@ inline static int session_is_valid(gnutls_session_t session) /* Copies the record version into the headers. The * version must have 2 bytes at least. */ -inline static int -copy_record_version(gnutls_session_t session, - gnutls_handshake_description_t htype, uint8_t version[2]) +inline static int copy_record_version(gnutls_session_t session, + gnutls_handshake_description_t htype, + uint8_t version[2]) { const version_entry_st *lver; @@ -378,7 +369,6 @@ copy_record_version(gnutls_session_t session, htype != GNUTLS_HANDSHAKE_CLIENT_HELLO || (session->internals.hsk_flags & HSK_HRR_RECEIVED) || session->internals.default_record_version[0] == 0) { - if (unlikely(lver == NULL)) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); @@ -399,7 +389,7 @@ copy_record_version(gnutls_session_t session, /* Increments the sequence value */ -inline static int sequence_increment(gnutls_session_t session, uint64_t * value) +inline static int sequence_increment(gnutls_session_t session, uint64_t *value) { uint64_t snmax = UINT64_C(0xffffffffffffffff); @@ -445,11 +435,11 @@ inline static int sequence_increment(gnutls_session_t session, uint64_t * value) * and only if the previous send was interrupted for some reason. * */ -ssize_t -_gnutls_send_tlen_int(gnutls_session_t session, content_type_t type, - gnutls_handshake_description_t htype, - unsigned int epoch_rel, const void *_data, - size_t data_size, size_t min_pad, unsigned int mflags) +ssize_t _gnutls_send_tlen_int(gnutls_session_t session, content_type_t type, + gnutls_handshake_description_t htype, + unsigned int epoch_rel, const void *_data, + size_t data_size, size_t min_pad, + unsigned int mflags) { mbuffer_st *bufel; ssize_t cipher_size; @@ -483,9 +473,9 @@ _gnutls_send_tlen_int(gnutls_session_t session, content_type_t type, return GNUTLS_E_INVALID_REQUEST; } - if (type != GNUTLS_ALERT) /* alert messages are sent anyway */ - if (session_is_valid(session) - || session->internals.may_not_write != 0) { + if (type != GNUTLS_ALERT) /* alert messages are sent anyway */ + if (session_is_valid(session) || + session->internals.may_not_write != 0) { gnutls_assert(); return GNUTLS_E_INVALID_SESSION; } @@ -503,8 +493,8 @@ _gnutls_send_tlen_int(gnutls_session_t session, content_type_t type, /* Only encrypt if we don't have data to send * from the previous run. - probably interrupted. */ - if (mflags != 0 - && session->internals.record_send_buffer.byte_length > 0) { + if (mflags != 0 && + session->internals.record_send_buffer.byte_length > 0) { ret = _gnutls_io_write_flush(session); if (ret > 0) cipher_size = ret; @@ -519,17 +509,17 @@ _gnutls_send_tlen_int(gnutls_session_t session, content_type_t type, /* now proceed to packet encryption */ cipher_size = max_record_send_size(session) + - MAX_RECORD_SEND_OVERHEAD(session); + MAX_RECORD_SEND_OVERHEAD(session); - bufel = _mbuffer_alloc_align16(cipher_size + CIPHER_SLACK_SIZE, - get_total_headers2(session, - record_params)); + bufel = _mbuffer_alloc_align16( + cipher_size + CIPHER_SLACK_SIZE, + get_total_headers2(session, record_params)); if (bufel == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); headers = _mbuffer_get_uhead_ptr(bufel); - if (vers->tls13_sem - && record_params->cipher->id != GNUTLS_CIPHER_NULL) + if (vers->tls13_sem && + record_params->cipher->id != GNUTLS_CIPHER_NULL) headers[0] = GNUTLS_APPLICATION_DATA; else headers[0] = type; @@ -545,36 +535,34 @@ _gnutls_send_tlen_int(gnutls_session_t session, content_type_t type, _gnutls_write_uint64(record_state->sequence_number, &headers[3]); - _gnutls_record_log - ("REC[%p]: Preparing Packet %s(%d) with length: %d and min pad: %d\n", - session, _gnutls_packet2str(type), type, - (int)data_size, (int)min_pad); + _gnutls_record_log( + "REC[%p]: Preparing Packet %s(%d) with length: %d and min pad: %d\n", + session, _gnutls_packet2str(type), type, (int)data_size, + (int)min_pad); header_size = RECORD_HEADER_SIZE(session); _mbuffer_set_udata_size(bufel, cipher_size); _mbuffer_set_uhead_size(bufel, header_size); - ret = - _gnutls_encrypt(session, - data, send_data_size, min_pad, - bufel, type, record_params); + ret = _gnutls_encrypt(session, data, send_data_size, min_pad, + bufel, type, record_params); if (ret <= 0) { gnutls_assert(); if (ret == 0) ret = GNUTLS_E_ENCRYPTION_FAILED; gnutls_free(bufel); - return ret; /* error */ + return ret; /* error */ } cipher_size = _mbuffer_get_udata_size(bufel); retval = send_data_size; session->internals.record_send_buffer_user_size = - send_data_size; + send_data_size; /* increase sequence number */ - if (sequence_increment - (session, &record_state->sequence_number) != 0) { + if (sequence_increment(session, + &record_state->sequence_number) != 0) { session_invalidate(session); gnutls_free(bufel); return gnutls_assert_val(GNUTLS_E_RECORD_LIMIT_REACHED); @@ -600,30 +588,29 @@ _gnutls_send_tlen_int(gnutls_session_t session, content_type_t type, session->internals.record_send_buffer_user_size = 0; - _gnutls_record_log - ("REC[%p]: Sent Packet[%ld] %s(%d) in epoch %d and length: %d\n", - session, (unsigned long)(record_state->sequence_number), - _gnutls_packet2str(type), type, (int)record_params->epoch, - (int)cipher_size); - - if (vers->tls13_sem - && !(session->internals.flags & GNUTLS_NO_AUTO_REKEY) - && !(record_params->cipher->flags & GNUTLS_CIPHER_FLAG_NO_REKEY)) { - if (unlikely - ((record_state->sequence_number & UINT64_C(0xffffff)) == - UINT64_C(0xfffffd))) { + _gnutls_record_log( + "REC[%p]: Sent Packet[%ld] %s(%d) in epoch %d and length: %d\n", + session, (unsigned long)(record_state->sequence_number), + _gnutls_packet2str(type), type, (int)record_params->epoch, + (int)cipher_size); + + if (vers->tls13_sem && + !(session->internals.flags & GNUTLS_NO_AUTO_REKEY) && + !(record_params->cipher->flags & GNUTLS_CIPHER_FLAG_NO_REKEY)) { + if (unlikely((record_state->sequence_number & + UINT64_C(0xffffff)) == UINT64_C(0xfffffd))) { /* After we have sent 2^24 messages, mark the session * as needing a key update. */ session->internals.rsend_state = - RECORD_SEND_KEY_UPDATE_1; + RECORD_SEND_KEY_UPDATE_1; } } return retval; } -inline static int -check_recv_type(gnutls_session_t session, content_type_t recv_type) +inline static int check_recv_type(gnutls_session_t session, + content_type_t recv_type) { switch (recv_type) { case GNUTLS_CHANGE_CIPHER_SPEC: @@ -639,23 +626,20 @@ check_recv_type(gnutls_session_t session, content_type_t recv_type) (unsigned int)recv_type); return GNUTLS_E_UNEXPECTED_PACKET; } - } /* Checks if there are pending data in the record buffers. If there are * then it copies the data. */ -static int -get_data_from_buffers(gnutls_session_t session, content_type_t type, - uint8_t * data, int data_size, void *seq) +static int get_data_from_buffers(gnutls_session_t session, content_type_t type, + uint8_t *data, int data_size, void *seq) { - if ((type == GNUTLS_APPLICATION_DATA || - type == GNUTLS_HANDSHAKE || type == GNUTLS_CHANGE_CIPHER_SPEC) - && _gnutls_record_buffer_get_size(session) > 0) { + if ((type == GNUTLS_APPLICATION_DATA || type == GNUTLS_HANDSHAKE || + type == GNUTLS_CHANGE_CIPHER_SPEC) && + _gnutls_record_buffer_get_size(session) > 0) { int ret; - ret = - _gnutls_record_buffer_get(type, session, data, - data_size, seq); + ret = _gnutls_record_buffer_get(type, session, data, data_size, + seq); if (ret < 0) { if (IS_DTLS(session)) { if (ret == GNUTLS_E_UNEXPECTED_PACKET) { @@ -674,9 +658,8 @@ get_data_from_buffers(gnutls_session_t session, content_type_t type, /* Checks and retrieves any pending data in the application data record buffers. */ -static int -get_packet_from_buffers(gnutls_session_t session, content_type_t type, - gnutls_packet_t * packet) +static int get_packet_from_buffers(gnutls_session_t session, + content_type_t type, gnutls_packet_t *packet) { if (_gnutls_record_buffer_get_size(session) > 0) { int ret; @@ -701,9 +684,9 @@ get_packet_from_buffers(gnutls_session_t session, content_type_t type, /* Here we check if the advertized version is the one we * negotiated in the handshake. */ -inline static int -record_check_version(gnutls_session_t session, - gnutls_handshake_description_t htype, uint8_t version[2]) +inline static int record_check_version(gnutls_session_t session, + gnutls_handshake_description_t htype, + uint8_t version[2]) { const version_entry_st *vers = get_version(session); int diff = 0; @@ -723,9 +706,9 @@ record_check_version(gnutls_session_t session, htype == GNUTLS_HANDSHAKE_SERVER_HELLO) { if (version[0] != 3) { gnutls_assert(); - _gnutls_record_log - ("REC[%p]: INVALID VERSION PACKET: (%d) %d.%d\n", - session, htype, version[0], version[1]); + _gnutls_record_log( + "REC[%p]: INVALID VERSION PACKET: (%d) %d.%d\n", + session, htype, version[0], version[1]); return GNUTLS_E_UNSUPPORTED_VERSION_PACKET; } } else if (diff != 0) { @@ -734,41 +717,41 @@ record_check_version(gnutls_session_t session, * mac. I don't really think that this check serves any purpose. */ gnutls_assert(); - _gnutls_record_log - ("REC[%p]: INVALID VERSION PACKET: (%d) %d.%d\n", - session, htype, version[0], version[1]); + _gnutls_record_log( + "REC[%p]: INVALID VERSION PACKET: (%d) %d.%d\n", + session, htype, version[0], version[1]); return GNUTLS_E_UNSUPPORTED_VERSION_PACKET; } - } else { /* DTLS */ + } else { /* DTLS */ /* In DTLS the only information we have here is whether we * expect a handshake message or not. */ - if (htype == (gnutls_handshake_description_t) - 1) { + if (htype == (gnutls_handshake_description_t)-1) { if (diff) { /* Reject record packets that have a different version than the * one negotiated. Note that this version is not protected by any * mac. I don't really think that this check serves any purpose. */ gnutls_assert(); - _gnutls_record_log - ("REC[%p]: INVALID VERSION PACKET: (%d) %d.%d\n", - session, htype, version[0], version[1]); + _gnutls_record_log( + "REC[%p]: INVALID VERSION PACKET: (%d) %d.%d\n", + session, htype, version[0], version[1]); return GNUTLS_E_UNSUPPORTED_VERSION_PACKET; } } else if (vers->id > GNUTLS_DTLS1_0 && version[0] > 254) { gnutls_assert(); - _gnutls_record_log - ("REC[%p]: INVALID DTLS VERSION PACKET: (%d) %d.%d\n", - session, htype, version[0], version[1]); + _gnutls_record_log( + "REC[%p]: INVALID DTLS VERSION PACKET: (%d) %d.%d\n", + session, htype, version[0], version[1]); return GNUTLS_E_UNSUPPORTED_VERSION_PACKET; } else if (vers->id == GNUTLS_DTLS0_9 && version[0] > 1) { gnutls_assert(); - _gnutls_record_log - ("REC[%p]: INVALID DTLS VERSION PACKET: (%d) %d.%d\n", - session, htype, version[0], version[1]); + _gnutls_record_log( + "REC[%p]: INVALID DTLS VERSION PACKET: (%d) %d.%d\n", + session, htype, version[0], version[1]); return GNUTLS_E_UNSUPPORTED_VERSION_PACKET; } } @@ -776,8 +759,8 @@ record_check_version(gnutls_session_t session, return 0; } -static int -recv_hello_request(gnutls_session_t session, void *data, uint32_t data_size) +static int recv_hello_request(gnutls_session_t session, void *data, + uint32_t data_size) { uint8_t type; @@ -790,7 +773,7 @@ recv_hello_request(gnutls_session_t session, void *data, uint32_t data_size) if (session->internals.handshake_in_progress) return gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET); - type = ((uint8_t *) data)[0]; + type = ((uint8_t *)data)[0]; if (type == GNUTLS_HANDSHAKE_HELLO_REQUEST) { if (IS_DTLS(session)) session->internals.dtls.hsk_read_seq++; @@ -811,20 +794,18 @@ recv_hello_request(gnutls_session_t session, void *data, uint32_t data_size) * buffer. The bufel will be deinitialized after calling * this function, even if it fails. */ -static int -record_add_to_buffers(gnutls_session_t session, - struct tls_record_st *recv, content_type_t type, - gnutls_handshake_description_t htype, - uint64_t seq, mbuffer_st * bufel) +static int record_add_to_buffers(gnutls_session_t session, + struct tls_record_st *recv, + content_type_t type, + gnutls_handshake_description_t htype, + uint64_t seq, mbuffer_st *bufel) { - int ret; const version_entry_st *ver = get_version(session); - if ((recv->type == type) - && (type == GNUTLS_APPLICATION_DATA || - type == GNUTLS_CHANGE_CIPHER_SPEC || - type == GNUTLS_HANDSHAKE)) { + if ((recv->type == type) && + (type == GNUTLS_APPLICATION_DATA || + type == GNUTLS_CHANGE_CIPHER_SPEC || type == GNUTLS_HANDSHAKE)) { if (bufel->msg.size == 0) { if (type == GNUTLS_APPLICATION_DATA) { /* this is needed to distinguish an empty @@ -832,9 +813,8 @@ record_add_to_buffers(gnutls_session_t session, ret = GNUTLS_E_AGAIN; goto cleanup; } else { - ret = - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET); + ret = gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET); goto unexpected_packet; } } @@ -844,7 +824,7 @@ record_add_to_buffers(gnutls_session_t session, if (type == GNUTLS_APPLICATION_DATA && (session->internals.handshake_recv_buffer_size != 0 || session->internals.handshake_header_recv_buffer.length != - 0)) { + 0)) { ret = gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET); goto unexpected_packet; } @@ -870,22 +850,21 @@ record_add_to_buffers(gnutls_session_t session, switch (recv->type) { case GNUTLS_ALERT: if (bufel->msg.size < 2) { - ret = - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET); + ret = gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET); goto unexpected_packet; } - _gnutls_record_log - ("REC[%p]: Alert[%d|%d] - %s - was received\n", - session, bufel->msg.data[0], - bufel->msg.data[1], - gnutls_alert_get_name((int)bufel->msg.data[1])); + _gnutls_record_log( + "REC[%p]: Alert[%d|%d] - %s - was received\n", + session, bufel->msg.data[0], bufel->msg.data[1], + gnutls_alert_get_name((int)bufel->msg.data[1])); - if (!session->internals.initial_negotiation_completed && session->internals.handshake_in_progress && STATE == STATE0) { /* handshake hasn't started */ - ret = - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET); + if (!session->internals.initial_negotiation_completed && + session->internals.handshake_in_progress && + STATE == STATE0) { /* handshake hasn't started */ + ret = gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET); goto unexpected_packet; } @@ -894,8 +873,8 @@ record_add_to_buffers(gnutls_session_t session, /* if close notify is received and * the alert is not fatal */ - if (bufel->msg.data[1] == GNUTLS_A_CLOSE_NOTIFY - && bufel->msg.data[0] != GNUTLS_AL_FATAL) { + if (bufel->msg.data[1] == GNUTLS_A_CLOSE_NOTIFY && + bufel->msg.data[0] != GNUTLS_AL_FATAL) { /* If we have been expecting for an alert do */ session->internals.read_eof = 1; @@ -907,13 +886,12 @@ record_add_to_buffers(gnutls_session_t session, */ gnutls_assert(); ret = GNUTLS_E_WARNING_ALERT_RECEIVED; - if ((ver && ver->tls13_sem) - || bufel->msg.data[0] == GNUTLS_AL_FATAL) { + if ((ver && ver->tls13_sem) || + bufel->msg.data[0] == GNUTLS_AL_FATAL) { session_unresumable(session); session_invalidate(session); - ret = - gnutls_assert_val - (GNUTLS_E_FATAL_ALERT_RECEIVED); + ret = gnutls_assert_val( + GNUTLS_E_FATAL_ALERT_RECEIVED); } goto cleanup; } @@ -921,9 +899,8 @@ record_add_to_buffers(gnutls_session_t session, case GNUTLS_CHANGE_CIPHER_SPEC: if (!(IS_DTLS(session))) { - ret = - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET); + ret = gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET); goto cleanup; } @@ -932,9 +909,8 @@ record_add_to_buffers(gnutls_session_t session, * includes a sequence number */ if (!(ver && ver->id == GNUTLS_DTLS0_9) && (bufel->msg.size != 1 || bufel->msg.data[0] != 1)) { - ret = - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET); + ret = gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET); goto unexpected_packet; } @@ -952,44 +928,40 @@ record_add_to_buffers(gnutls_session_t session, case GNUTLS_APPLICATION_DATA: if (session->internals.initial_negotiation_completed == 0) { - ret = - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET); + ret = gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET); goto unexpected_packet; } /* In TLS1.3 post-handshake authentication allow application * data error code. */ - if ((ver && ver->tls13_sem) && type == GNUTLS_HANDSHAKE - && htype == GNUTLS_HANDSHAKE_CERTIFICATE_PKT - && session-> - internals.initial_negotiation_completed) { + if ((ver && ver->tls13_sem) && + type == GNUTLS_HANDSHAKE && + htype == GNUTLS_HANDSHAKE_CERTIFICATE_PKT && + session->internals.initial_negotiation_completed) { _gnutls_record_buffer_put(session, recv->type, seq, bufel); - return - gnutls_assert_val - (GNUTLS_E_GOT_APPLICATION_DATA); + return gnutls_assert_val( + GNUTLS_E_GOT_APPLICATION_DATA); } /* The got_application data is only returned * if expecting client hello (for rehandshake * reasons). Otherwise it is an unexpected packet */ - if (type == GNUTLS_ALERT - || ((htype == GNUTLS_HANDSHAKE_SERVER_HELLO || - htype == GNUTLS_HANDSHAKE_CLIENT_HELLO || - htype == GNUTLS_HANDSHAKE_HELLO_RETRY_REQUEST) - && type == GNUTLS_HANDSHAKE)) { + if (type == GNUTLS_ALERT || + ((htype == GNUTLS_HANDSHAKE_SERVER_HELLO || + htype == GNUTLS_HANDSHAKE_CLIENT_HELLO || + htype == GNUTLS_HANDSHAKE_HELLO_RETRY_REQUEST) && + type == GNUTLS_HANDSHAKE)) { /* even if data is unexpected put it into the buffer */ _gnutls_record_buffer_put(session, recv->type, seq, bufel); - return - gnutls_assert_val - (GNUTLS_E_GOT_APPLICATION_DATA); + return gnutls_assert_val( + GNUTLS_E_GOT_APPLICATION_DATA); } else { - ret = - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET); + ret = gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET); goto unexpected_packet; } @@ -1001,32 +973,30 @@ record_add_to_buffers(gnutls_session_t session, */ if (IS_DTLS(session)) { if (type == GNUTLS_CHANGE_CIPHER_SPEC) { - ret = - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET); + ret = gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET); goto unexpected_packet; } - if (_dtls_is_async(session) - && _dtls_async_timer_active(session)) { - if (session->security_parameters. - entity == GNUTLS_SERVER - && bufel->htype == - GNUTLS_HANDSHAKE_CLIENT_HELLO) { + if (_dtls_is_async(session) && + _dtls_async_timer_active(session)) { + if (session->security_parameters.entity == + GNUTLS_SERVER && + bufel->htype == + GNUTLS_HANDSHAKE_CLIENT_HELLO) { /* client requested rehandshake. Delete the timer */ - _dtls_async_timer_delete - (session); + _dtls_async_timer_delete( + session); } else { session->internals.recv_state = - RECV_STATE_DTLS_RETRANSMIT; + RECV_STATE_DTLS_RETRANSMIT; ret = _dtls_retransmit(session); if (ret == 0) { - session->internals. - recv_state = - RECV_STATE_0; - ret = - gnutls_assert_val - (GNUTLS_E_AGAIN); + session->internals + .recv_state = + RECV_STATE_0; + ret = gnutls_assert_val( + GNUTLS_E_AGAIN); goto unexpected_packet; } goto cleanup; @@ -1051,12 +1021,11 @@ record_add_to_buffers(gnutls_session_t session, * If we are a server, a client may initiate a renegotiation at any time. */ if (session->security_parameters.entity == - GNUTLS_SERVER - && session->internals.handshake_in_progress == 0 - && bufel->htype == GNUTLS_HANDSHAKE_CLIENT_HELLO) { + GNUTLS_SERVER && + session->internals.handshake_in_progress == 0 && + bufel->htype == GNUTLS_HANDSHAKE_CLIENT_HELLO) { gnutls_assert(); - _gnutls_record_buffer_put(session, - recv->type, + _gnutls_record_buffer_put(session, recv->type, seq, bufel); return GNUTLS_E_REHANDSHAKE; } @@ -1068,18 +1037,16 @@ record_add_to_buffers(gnutls_session_t session, /* So we accept it, if it is a Hello. If not, this will * fail and trigger flight retransmissions after some time. */ - ret = - recv_hello_request(session, - bufel->msg.data, - bufel->msg.size); + ret = recv_hello_request(session, bufel->msg.data, + bufel->msg.size); goto unexpected_packet; default: - _gnutls_record_log - ("REC[%p]: Received unexpected packet %d (%s) expecting %d (%s)\n", - session, recv->type, - _gnutls_packet2str(recv->type), type, - _gnutls_packet2str(type)); + _gnutls_record_log( + "REC[%p]: Received unexpected packet %d (%s) expecting %d (%s)\n", + session, recv->type, + _gnutls_packet2str(recv->type), type, + _gnutls_packet2str(type)); gnutls_assert(); ret = GNUTLS_E_UNEXPECTED_PACKET; @@ -1089,50 +1056,47 @@ record_add_to_buffers(gnutls_session_t session, return 0; - unexpected_packet: +unexpected_packet: if (IS_DTLS(session) && ret != GNUTLS_E_REHANDSHAKE) { _mbuffer_xfree(&bufel); RETURN_DTLS_EAGAIN_OR_TIMEOUT(session, ret); } - cleanup: +cleanup: _mbuffer_xfree(&bufel); return ret; - } /* Checks the record headers and returns the length, version and * content type. */ -static void -record_read_headers(gnutls_session_t session, - uint8_t headers[MAX_RECORD_HEADER_SIZE], - content_type_t type, - gnutls_handshake_description_t htype, - struct tls_record_st *record) +static void record_read_headers(gnutls_session_t session, + uint8_t headers[MAX_RECORD_HEADER_SIZE], + content_type_t type, + gnutls_handshake_description_t htype, + struct tls_record_st *record) { - /* Read the first two bytes to determine if this is a * version 2 message */ #ifdef ENABLE_SSL2 - if (htype == GNUTLS_HANDSHAKE_CLIENT_HELLO - && type == GNUTLS_HANDSHAKE && headers[0] > 127 - && !(IS_DTLS(session))) { - + if (htype == GNUTLS_HANDSHAKE_CLIENT_HELLO && + type == GNUTLS_HANDSHAKE && headers[0] > 127 && + !(IS_DTLS(session))) { /* if msb set and expecting handshake message * it should be SSL 2 hello */ - record->version[0] = 3; /* assume SSL 3.0 */ + record->version[0] = 3; /* assume SSL 3.0 */ record->version[1] = 0; record->length = (((headers[0] & 0x7f) << 8)) | headers[1]; /* SSL 2.0 headers */ record->header_size = record->packet_size = 2; - record->type = GNUTLS_HANDSHAKE; /* we accept only v2 client hello + record->type = + GNUTLS_HANDSHAKE; /* we accept only v2 client hello */ /* in order to assist the handshake protocol. @@ -1142,9 +1106,10 @@ record_read_headers(gnutls_session_t session, record->epoch = 0; memset(&record->sequence, 0, sizeof(record->sequence)); - _gnutls_record_log - ("REC[%p]: SSL 2.0 %s packet received. Length: %d\n", - session, _gnutls_packet2str(record->type), record->length); + _gnutls_record_log( + "REC[%p]: SSL 2.0 %s packet received. Length: %d\n", + session, _gnutls_packet2str(record->type), + record->length); } else #endif @@ -1168,26 +1133,25 @@ record_read_headers(gnutls_session_t session, record->epoch = session->security_parameters.epoch_read; } - _gnutls_record_log - ("REC[%p]: SSL %d.%d %s packet received. Epoch %d, length: %d\n", - session, (int)record->version[0], - (int)record->version[1], - _gnutls_packet2str(record->type), (int)record->epoch, - record->length); - + _gnutls_record_log( + "REC[%p]: SSL %d.%d %s packet received. Epoch %d, length: %d\n", + session, (int)record->version[0], + (int)record->version[1], + _gnutls_packet2str(record->type), (int)record->epoch, + record->length); } record->packet_size += record->length; } static int recv_headers(gnutls_session_t session, - record_parameters_st * record_params, + record_parameters_st *record_params, content_type_t type, gnutls_handshake_description_t htype, struct tls_record_st *record, unsigned int *ms) { int ret; - gnutls_datum_t raw; /* raw headers */ + gnutls_datum_t raw; /* raw headers */ /* Read the headers. */ record->header_size = record->packet_size = RECORD_HEADER_SIZE(session); @@ -1220,11 +1184,11 @@ static int recv_headers(gnutls_session_t session, /* Check if the DTLS epoch is valid */ if (IS_DTLS(session)) { if (_gnutls_epoch_is_valid(session, record->epoch) == 0) { - _gnutls_audit_log(session, - "Discarded message[%lu] with invalid epoch %u.\n", - (unsigned long)record->sequence, - (unsigned int)(record->sequence >> - 48)); + _gnutls_audit_log( + session, + "Discarded message[%lu] with invalid epoch %u.\n", + (unsigned long)record->sequence, + (unsigned int)(record->sequence >> 48)); gnutls_assert(); /* doesn't matter, just a fatal error */ return GNUTLS_E_UNEXPECTED_PACKET_LENGTH; @@ -1243,31 +1207,30 @@ static int recv_headers(gnutls_session_t session, if ((ret = record_check_version(session, htype, record->version)) < 0) return gnutls_assert_val(ret); - if (record->length == 0 - || record->length > max_record_recv_size(session)) { - _gnutls_audit_log(session, - "Received packet with illegal length: %u (max: %u)\n", - (unsigned int)record->length, - (unsigned)max_record_recv_size(session)); + if (record->length == 0 || + record->length > max_record_recv_size(session)) { + _gnutls_audit_log( + session, + "Received packet with illegal length: %u (max: %u)\n", + (unsigned int)record->length, + (unsigned)max_record_recv_size(session)); if (record->length == 0) { /* Empty, unencrypted records are always unexpected. */ if (record_params->cipher->id == GNUTLS_CIPHER_NULL) - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET); return gnutls_assert_val(GNUTLS_E_DECRYPTION_FAILED); } return gnutls_assert_val(GNUTLS_E_RECORD_OVERFLOW); } - _gnutls_record_log - ("REC[%p]: Expected Packet %s(%d)\n", session, - _gnutls_packet2str(type), type); - _gnutls_record_log - ("REC[%p]: Received Packet %s(%d) with length: %d\n", session, - _gnutls_packet2str(record->type), record->type, record->length); + _gnutls_record_log("REC[%p]: Expected Packet %s(%d)\n", session, + _gnutls_packet2str(type), type); + _gnutls_record_log("REC[%p]: Received Packet %s(%d) with length: %d\n", + session, _gnutls_packet2str(record->type), + record->type, record->length); return 0; } @@ -1280,9 +1243,9 @@ static int recv_headers(gnutls_session_t session, * If the htype is not -1 then handshake timeouts * will be enforced. */ -ssize_t -_gnutls_recv_in_buffers(gnutls_session_t session, content_type_t type, - gnutls_handshake_description_t htype, unsigned int ms) +ssize_t _gnutls_recv_in_buffers(gnutls_session_t session, content_type_t type, + gnutls_handshake_description_t htype, + unsigned int ms) { uint64_t packet_sequence; gnutls_datum_t ciphertext; @@ -1295,7 +1258,7 @@ _gnutls_recv_in_buffers(gnutls_session_t session, content_type_t type, struct tls_record_st record; const version_entry_st *vers = get_version(session); - begin: +begin: if (n_retries > DEFAULT_MAX_EMPTY_RECORDS) { gnutls_assert(); @@ -1306,8 +1269,8 @@ _gnutls_recv_in_buffers(gnutls_session_t session, content_type_t type, /* if we have already read an EOF */ return 0; - } else if (session_is_valid(session) != 0 - || session->internals.may_not_read != 0) + } else if (session_is_valid(session) != 0 || + session->internals.may_not_read != 0) return gnutls_assert_val(GNUTLS_E_INVALID_SESSION); /* get the record state parameters */ @@ -1322,10 +1285,9 @@ _gnutls_recv_in_buffers(gnutls_session_t session, content_type_t type, record_state = &record_params->read; /* receive headers */ - ret = - recv_headers(session, record_params, type, htype, &record, - (!(session-> - internals.flags & GNUTLS_NONBLOCK)) ? &ms : 0); + ret = recv_headers( + session, record_params, type, htype, &record, + (!(session->internals.flags & GNUTLS_NONBLOCK)) ? &ms : 0); if (ret < 0) { ret = gnutls_assert_val_fatal(ret); goto recv_error; @@ -1338,12 +1300,9 @@ _gnutls_recv_in_buffers(gnutls_session_t session, content_type_t type, /* Read the packet data and insert it to record_recv_buffer. */ - ret = - _gnutls_io_read_buffered(session, record.packet_size, - record.type, - (!(session-> - internals.flags & GNUTLS_NONBLOCK)) ? - &ms : 0); + ret = _gnutls_io_read_buffered( + session, record.packet_size, record.type, + (!(session->internals.flags & GNUTLS_NONBLOCK)) ? &ms : 0); if (ret != record.packet_size) { gnutls_assert(); goto recv_error; @@ -1358,14 +1317,14 @@ _gnutls_recv_in_buffers(gnutls_session_t session, content_type_t type, if (ret < 0) return gnutls_assert_val(ret); - bufel = - _mbuffer_head_get_first(&session->internals.record_recv_buffer, - NULL); + bufel = _mbuffer_head_get_first(&session->internals.record_recv_buffer, + NULL); if (bufel == NULL) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); /* ignore CCS if TLS 1.3 is negotiated */ - if (record.type == GNUTLS_CHANGE_CIPHER_SPEC && vers && vers->tls13_sem) { + if (record.type == GNUTLS_CHANGE_CIPHER_SPEC && vers && + vers->tls13_sem) { /* if the CCS has arrived after Finished, abort the * connection */ if (!session->internals.handshake_in_progress) { @@ -1374,9 +1333,8 @@ _gnutls_recv_in_buffers(gnutls_session_t session, content_type_t type, _gnutls_read_log("discarding change cipher spec in TLS1.3\n"); /* we use the same mechanism to retry as when * receiving multiple empty TLS packets */ - bufel = - _mbuffer_head_pop_first(&session->internals. - record_recv_buffer); + bufel = _mbuffer_head_pop_first( + &session->internals.record_recv_buffer); _mbuffer_xfree(&bufel); n_retries++; goto begin; @@ -1393,16 +1351,15 @@ _gnutls_recv_in_buffers(gnutls_session_t session, content_type_t type, _mbuffer_set_udata_size(decrypted, ret); ciphertext.data = - (uint8_t *) _mbuffer_get_udata_ptr(bufel) + record.header_size; + (uint8_t *)_mbuffer_get_udata_ptr(bufel) + record.header_size; ciphertext.size = record.length; /* decrypt the data we got. */ t.data = _mbuffer_get_udata_ptr(decrypted); t.size = _mbuffer_get_udata_size(decrypted); - ret = - _gnutls_decrypt(session, &ciphertext, &t, - &record.type, record_params, packet_sequence); + ret = _gnutls_decrypt(session, &ciphertext, &t, &record.type, + record_params, packet_sequence); if (ret >= 0) _mbuffer_set_udata_size(decrypted, ret); @@ -1416,43 +1373,45 @@ _gnutls_recv_in_buffers(gnutls_session_t session, content_type_t type, /* early data must always be encrypted, treat it * as decryption failure if otherwise */ record_params->cipher->id == GNUTLS_CIPHER_NULL) { - _gnutls_record_log - ("REC[%p]: failed to decrypt early data, in epoch %d\n", - session, record_params->epoch); + _gnutls_record_log( + "REC[%p]: failed to decrypt early data, in epoch %d\n", + session, record_params->epoch); ret = GNUTLS_E_DECRYPTION_FAILED; goto sanity_check_error; } else if (record.type == GNUTLS_APPLICATION_DATA) { size_t decrypted_length = - _mbuffer_get_udata_size(decrypted); - _gnutls_record_log - ("REC[%p]: decrypted early data with length: %d, in epoch %d\n", - session, - (int)decrypted_length, - record_params->epoch); + _mbuffer_get_udata_size(decrypted); + _gnutls_record_log( + "REC[%p]: decrypted early data with length: %d, in epoch %d\n", + session, (int)decrypted_length, + record_params->epoch); if (decrypted_length > - session-> - security_parameters.max_early_data_size - - session->internals.early_data_received) { - _gnutls_record_log - ("REC[%p]: max_early_data_size exceeded\n", - session); + session->security_parameters + .max_early_data_size - + session->internals + .early_data_received) { + _gnutls_record_log( + "REC[%p]: max_early_data_size exceeded\n", + session); ret = GNUTLS_E_UNEXPECTED_PACKET; goto sanity_check_error; } - _mbuffer_enqueue(&session-> - internals.early_data_recv_buffer, - decrypted); + _mbuffer_enqueue( + &session->internals + .early_data_recv_buffer, + decrypted); session->internals.early_data_received += - decrypted_length; + decrypted_length; /* Increase sequence number. We do both for TLS and DTLS, since in * DTLS we also rely on that number (roughly) since it may get reported * to application via gnutls_record_get_state(). */ - if (sequence_increment - (session, - &record_state->sequence_number) != 0) { + if (sequence_increment( + session, + &record_state->sequence_number) != + 0) { session_invalidate(session); gnutls_assert(); ret = GNUTLS_E_RECORD_LIMIT_REACHED; @@ -1474,38 +1433,39 @@ _gnutls_recv_in_buffers(gnutls_session_t session, content_type_t type, * as decryption failure if otherwise */ record_params->cipher->id == GNUTLS_CIPHER_NULL)) { if (record.length > - session-> - security_parameters.max_early_data_size - - session->internals.early_data_received) { - _gnutls_record_log - ("REC[%p]: max_early_data_size exceeded\n", - session); + session->security_parameters + .max_early_data_size - + session->internals + .early_data_received) { + _gnutls_record_log( + "REC[%p]: max_early_data_size exceeded\n", + session); ret = GNUTLS_E_UNEXPECTED_PACKET; goto sanity_check_error; } - _gnutls_record_log - ("REC[%p]: Discarded early data[%lu] due to invalid decryption, length: %u\n", - session, (unsigned long)packet_sequence, - (unsigned int) - record.length); + _gnutls_record_log( + "REC[%p]: Discarded early data[%lu] due to invalid decryption, length: %u\n", + session, (unsigned long)packet_sequence, + (unsigned int)record.length); session->internals.early_data_received += - record.length; + record.length; /* silently discard received data */ _mbuffer_xfree(&decrypted); return gnutls_assert_val(GNUTLS_E_AGAIN); } else { session->internals.hsk_flags &= - ~HSK_EARLY_DATA_IN_FLIGHT; + ~HSK_EARLY_DATA_IN_FLIGHT; } } } if (ret < 0) { gnutls_assert(); - _gnutls_audit_log(session, - "Discarded message[%lu] due to invalid decryption\n", - (unsigned long)packet_sequence); + _gnutls_audit_log( + session, + "Discarded message[%lu] due to invalid decryption\n", + (unsigned long)packet_sequence); goto sanity_check_error; } @@ -1513,41 +1473,37 @@ _gnutls_recv_in_buffers(gnutls_session_t session, content_type_t type, /* check for duplicates. We check after the message * is processed and authenticated to avoid someone * messing with our windows. */ - if (likely - (!(session-> - internals.flags & GNUTLS_NO_REPLAY_PROTECTION))) { - ret = - _dtls_record_check(record_params, packet_sequence); + if (likely(!(session->internals.flags & + GNUTLS_NO_REPLAY_PROTECTION))) { + ret = _dtls_record_check(record_params, + packet_sequence); if (ret < 0) { - _gnutls_record_log - ("REC[%p]: Discarded duplicate message[%u.%lu]: %s\n", - session, - (unsigned int)(record.sequence >> 48), - (unsigned long)(packet_sequence), - _gnutls_packet2str(record.type)); + _gnutls_record_log( + "REC[%p]: Discarded duplicate message[%u.%lu]: %s\n", + session, + (unsigned int)(record.sequence >> 48), + (unsigned long)(packet_sequence), + _gnutls_packet2str(record.type)); goto sanity_check_error; } } - _gnutls_record_log - ("REC[%p]: Decrypted Packet[%u.%lu] %s(%d) with length: %d\n", - session, - (unsigned int)(record.sequence >> 48), - (unsigned long)packet_sequence, - _gnutls_packet2str(record.type), record.type, - (int)_mbuffer_get_udata_size(decrypted)); + _gnutls_record_log( + "REC[%p]: Decrypted Packet[%u.%lu] %s(%d) with length: %d\n", + session, (unsigned int)(record.sequence >> 48), + (unsigned long)packet_sequence, + _gnutls_packet2str(record.type), record.type, + (int)_mbuffer_get_udata_size(decrypted)); /* store the last valid sequence number. We don't use that internally but * callers of gnutls_record_get_state() could take advantage of it. */ record_state->sequence_number = record.sequence; } else { - _gnutls_record_log - ("REC[%p]: Decrypted Packet[%lu] %s(%d) with length: %d\n", - session, - (unsigned long)packet_sequence, - _gnutls_packet2str(record.type), record.type, - (int)_mbuffer_get_udata_size(decrypted)); - + _gnutls_record_log( + "REC[%p]: Decrypted Packet[%lu] %s(%d) with length: %d\n", + session, (unsigned long)packet_sequence, + _gnutls_packet2str(record.type), record.type, + (int)_mbuffer_get_udata_size(decrypted)); } /* Increase sequence number. We do both for TLS and DTLS, since in @@ -1582,9 +1538,9 @@ _gnutls_recv_in_buffers(gnutls_session_t session, content_type_t type, } if (_mbuffer_get_udata_size(decrypted) > max_decrypted_size(session)) { - _gnutls_audit_log - (session, "Received packet with illegal length: %u\n", - (unsigned int)ret); + _gnutls_audit_log(session, + "Received packet with illegal length: %u\n", + (unsigned int)ret); ret = gnutls_assert_val(GNUTLS_E_RECORD_OVERFLOW); goto sanity_check_error; @@ -1600,9 +1556,8 @@ _gnutls_recv_in_buffers(gnutls_session_t session, content_type_t type, decrypted->htype = p[0]; } - ret = - record_add_to_buffers(session, &record, type, htype, - packet_sequence, decrypted); + ret = record_add_to_buffers(session, &record, type, htype, + packet_sequence, decrypted); /* decrypted is now either deinitialized or buffered somewhere else */ @@ -1611,7 +1566,7 @@ _gnutls_recv_in_buffers(gnutls_session_t session, content_type_t type, return ret; - discard: +discard: session->internals.dtls.packets_dropped++; /* discard the whole received fragment. */ @@ -1619,7 +1574,7 @@ _gnutls_recv_in_buffers(gnutls_session_t session, content_type_t type, _mbuffer_xfree(&bufel); return gnutls_assert_val(GNUTLS_E_AGAIN); - sanity_check_error: +sanity_check_error: if (IS_DTLS(session)) { session->internals.dtls.packets_dropped++; ret = gnutls_assert_val(GNUTLS_E_AGAIN); @@ -1629,16 +1584,16 @@ _gnutls_recv_in_buffers(gnutls_session_t session, content_type_t type, session_unresumable(session); session_invalidate(session); - cleanup: +cleanup: _mbuffer_xfree(&decrypted); return ret; - recv_error: - if (ret < 0 - && (gnutls_error_is_fatal(ret) == 0 || ret == GNUTLS_E_TIMEDOUT)) +recv_error: + if (ret < 0 && + (gnutls_error_is_fatal(ret) == 0 || ret == GNUTLS_E_TIMEDOUT)) return ret; - if (type == GNUTLS_ALERT) { /* we were expecting close notify */ + if (type == GNUTLS_ALERT) { /* we were expecting close notify */ session_invalidate(session); gnutls_assert(); return 0; @@ -1673,8 +1628,8 @@ static ssize_t check_session_status(gnutls_session_t session, unsigned ms) /* if we have already read an EOF */ return 0; - } else if (session_is_valid(session) != 0 - || session->internals.may_not_read != 0) { + } else if (session_is_valid(session) != 0 || + session->internals.may_not_read != 0) { gnutls_assert(); return GNUTLS_E_INVALID_SESSION; } @@ -1705,8 +1660,8 @@ static ssize_t check_session_status(gnutls_session_t session, unsigned ms) return 1; case RECV_STATE_ASYNC_HANDSHAKE: - ret = - _gnutls_recv_in_buffers(session, GNUTLS_HANDSHAKE, -1, ms); + ret = _gnutls_recv_in_buffers(session, GNUTLS_HANDSHAKE, -1, + ms); if (ret < 0 && ret != GNUTLS_E_SESSION_EOF) return gnutls_assert_val(ret); @@ -1778,14 +1733,14 @@ static ssize_t check_session_status(gnutls_session_t session, unsigned ms) * receive (if called by the user the Content is Userdata only) * It is intended to receive data, under the current session. */ -ssize_t -_gnutls_recv_int(gnutls_session_t session, content_type_t type, - uint8_t * data, size_t data_size, void *seq, unsigned int ms) +ssize_t _gnutls_recv_int(gnutls_session_t session, content_type_t type, + uint8_t *data, size_t data_size, void *seq, + unsigned int ms) { int ret; - if ((type != GNUTLS_ALERT && type != GNUTLS_HEARTBEAT) - && (data_size == 0 || data == NULL)) + if ((type != GNUTLS_ALERT && type != GNUTLS_HEARTBEAT) && + (data_size == 0 || data == NULL)) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); ret = check_session_status(session, ms); @@ -1818,7 +1773,7 @@ _gnutls_recv_int(gnutls_session_t session, content_type_t type, * Since: 3.3.5 **/ -void gnutls_packet_get(gnutls_packet_t packet, gnutls_datum_t * data, +void gnutls_packet_get(gnutls_packet_t packet, gnutls_datum_t *data, unsigned char *sequence) { if (unlikely(packet == NULL)) { @@ -1897,16 +1852,16 @@ size_t gnutls_record_discard_queued(gnutls_session_t session) * * Since: 3.3.5 **/ -ssize_t -gnutls_record_recv_packet(gnutls_session_t session, gnutls_packet_t * packet) +ssize_t gnutls_record_recv_packet(gnutls_session_t session, + gnutls_packet_t *packet) { int ret; if (packet == NULL) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - ret = - check_session_status(session, session->internals.record_timeout_ms); + ret = check_session_status(session, + session->internals.record_timeout_ms); if (ret <= 0) return ret; @@ -1923,23 +1878,21 @@ gnutls_record_recv_packet(gnutls_session_t session, gnutls_packet_t * packet) packet); } -static -ssize_t append_data_to_corked(gnutls_session_t session, const void *data, - size_t data_size) +static ssize_t append_data_to_corked(gnutls_session_t session, const void *data, + size_t data_size) { int ret; if (IS_DTLS(session)) { if (data_size + - session->internals.record_presend_buffer.length > + session->internals.record_presend_buffer.length > gnutls_dtls_get_data_mtu(session)) { return gnutls_assert_val(GNUTLS_E_LARGE_PACKET); } } - ret = - _gnutls_buffer_append_data(&session->internals. - record_presend_buffer, data, data_size); + ret = _gnutls_buffer_append_data( + &session->internals.record_presend_buffer, data, data_size); if (ret < 0) return gnutls_assert_val(ret); @@ -1985,8 +1938,8 @@ ssize_t append_data_to_corked(gnutls_session_t session, const void *data, * number of bytes this function can send in a single call depends * on the negotiated maximum record size. **/ -ssize_t -gnutls_record_send(gnutls_session_t session, const void *data, size_t data_size) +ssize_t gnutls_record_send(gnutls_session_t session, const void *data, + size_t data_size) { return gnutls_record_send2(session, data, data_size, 0, 0); } @@ -2015,9 +1968,8 @@ gnutls_record_send(gnutls_session_t session, const void *data, size_t data_size) * * Since: 3.6.3 **/ -ssize_t -gnutls_record_send2(gnutls_session_t session, const void *data, - size_t data_size, size_t pad, unsigned flags) +ssize_t gnutls_record_send2(gnutls_session_t session, const void *data, + size_t data_size, size_t pad, unsigned flags) { const version_entry_st *vers = get_version(session); size_t max_pad = 0; @@ -2034,18 +1986,16 @@ gnutls_record_send2(gnutls_session_t session, const void *data, if (!session->internals.initial_negotiation_completed && session->internals.recv_state != RECV_STATE_FALSE_START && session->internals.recv_state != - RECV_STATE_FALSE_START_HANDLING - && session->internals.recv_state != RECV_STATE_EARLY_START - && session->internals.recv_state != - RECV_STATE_EARLY_START_HANDLING - && !(session-> - internals.hsk_flags & HSK_EARLY_DATA_IN_FLIGHT)) { - - gnutls_mutex_unlock(&session-> - internals.post_negotiation_lock); - return - gnutls_assert_val - (GNUTLS_E_UNAVAILABLE_DURING_HANDSHAKE); + RECV_STATE_FALSE_START_HANDLING && + session->internals.recv_state != RECV_STATE_EARLY_START && + session->internals.recv_state != + RECV_STATE_EARLY_START_HANDLING && + !(session->internals.hsk_flags & + HSK_EARLY_DATA_IN_FLIGHT)) { + gnutls_mutex_unlock( + &session->internals.post_negotiation_lock); + return gnutls_assert_val( + GNUTLS_E_UNAVAILABLE_DURING_HANDSHAKE); } gnutls_mutex_unlock(&session->internals.post_negotiation_lock); } @@ -2054,9 +2004,8 @@ gnutls_record_send2(gnutls_session_t session, const void *data, return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); if (vers->tls13_sem) - max_pad = - gnutls_record_get_max_size(session) - - gnutls_record_overhead_size(session); + max_pad = gnutls_record_get_max_size(session) - + gnutls_record_overhead_size(session); if (pad > max_pad) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); @@ -2076,13 +2025,12 @@ gnutls_record_send2(gnutls_session_t session, const void *data, case RECORD_SEND_CORKED_TO_KU: return append_data_to_corked(session, data, data_size); case RECORD_SEND_KEY_UPDATE_1: - _gnutls_buffer_reset(&session-> - internals.record_key_update_buffer); + _gnutls_buffer_reset( + &session->internals.record_key_update_buffer); - ret = - _gnutls_buffer_append_data(&session-> - internals.record_key_update_buffer, - data, data_size); + ret = _gnutls_buffer_append_data( + &session->internals.record_key_update_buffer, data, + data_size); if (ret < 0) return gnutls_assert_val(ret); @@ -2097,24 +2045,22 @@ gnutls_record_send2(gnutls_session_t session, const void *data, FALLTHROUGH; case RECORD_SEND_KEY_UPDATE_3: if (IS_KTLS_ENABLED(session, GNUTLS_KTLS_SEND)) { - return _gnutls_ktls_send(session, - session-> - internals.record_key_update_buffer. - data, - session-> - internals.record_key_update_buffer.length); + return _gnutls_ktls_send( + session, + session->internals.record_key_update_buffer.data, + session->internals.record_key_update_buffer + .length); } else { - ret = _gnutls_send_int(session, GNUTLS_APPLICATION_DATA, - -1, EPOCH_WRITE_CURRENT, - session-> - internals.record_key_update_buffer. - data, - session-> - internals.record_key_update_buffer. - length, MBUFFER_FLUSH); + ret = _gnutls_send_int( + session, GNUTLS_APPLICATION_DATA, -1, + EPOCH_WRITE_CURRENT, + session->internals.record_key_update_buffer.data, + session->internals.record_key_update_buffer + .length, + MBUFFER_FLUSH); } - _gnutls_buffer_clear(&session-> - internals.record_key_update_buffer); + _gnutls_buffer_clear( + &session->internals.record_key_update_buffer); session->internals.rsend_state = RECORD_SEND_NORMAL; if (ret < 0) gnutls_assert(); @@ -2164,10 +2110,8 @@ ssize_t gnutls_record_send_early_data(gnutls_session_t session, data_size) > session->security_parameters.max_early_data_size) return gnutls_assert_val(GNUTLS_E_RECORD_LIMIT_REACHED); - ret = - _gnutls_buffer_append_data(&session->internals. - early_data_presend_buffer, data, - data_size); + ret = _gnutls_buffer_append_data( + &session->internals.early_data_presend_buffer, data, data_size); if (ret < 0) return gnutls_assert_val(ret); @@ -2197,8 +2141,8 @@ ssize_t gnutls_record_send_early_data(gnutls_session_t session, * * Returns: The number of bytes sent, or a negative error code. **/ -ssize_t gnutls_record_send_file(gnutls_session_t session, int fd, - off_t * offset, size_t count) +ssize_t gnutls_record_send_file(gnutls_session_t session, int fd, off_t *offset, + size_t count) { ssize_t ret; size_t buf_len; @@ -2212,7 +2156,7 @@ ssize_t gnutls_record_send_file(gnutls_session_t session, int fd, if (offset != NULL) { saved_offset = lseek(fd, 0, SEEK_CUR); - if (saved_offset == (off_t) - 1) { + if (saved_offset == (off_t)-1) { return GNUTLS_E_FILE_ERROR; } if (lseek(fd, *offset, SEEK_CUR) == -1) { @@ -2256,7 +2200,7 @@ ssize_t gnutls_record_send_file(gnutls_session_t session, int fd, ret = sent; - end: +end: if (offset != NULL) { if (likely(!INT_ADD_OVERFLOW(*offset, sent))) { *offset += sent; @@ -2293,9 +2237,8 @@ ssize_t gnutls_record_send_file(gnutls_session_t session, int fd, * * Since: 3.6.5 **/ -ssize_t -gnutls_record_recv_early_data(gnutls_session_t session, void *data, - size_t data_size) +ssize_t gnutls_record_recv_early_data(gnutls_session_t session, void *data, + size_t data_size) { mbuffer_st *bufel; gnutls_datum_t msg; @@ -2304,9 +2247,8 @@ gnutls_record_recv_early_data(gnutls_session_t session, void *data, if (session->security_parameters.entity != GNUTLS_SERVER) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - bufel = - _mbuffer_head_get_first(&session->internals.early_data_recv_buffer, - &msg); + bufel = _mbuffer_head_get_first( + &session->internals.early_data_recv_buffer, &msg); if (bufel == NULL) return gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); @@ -2366,30 +2308,24 @@ int gnutls_record_uncork(gnutls_session_t session, unsigned int flags) else if (orig_state == RECORD_SEND_CORKED_TO_KU) session->internals.rsend_state = RECORD_SEND_KEY_UPDATE_1; else - return 0; /* nothing to be done */ + return 0; /* nothing to be done */ while (session->internals.record_presend_buffer.length > 0) { if (flags == GNUTLS_RECORD_WAIT) { do { - ret = - gnutls_record_send(session, - session->internals. - record_presend_buffer. - data, - session->internals. - record_presend_buffer. - length); - } - while (ret < 0 - && (ret == GNUTLS_E_AGAIN - || ret == GNUTLS_E_INTERRUPTED)); + ret = gnutls_record_send( + session, + session->internals.record_presend_buffer + .data, + session->internals.record_presend_buffer + .length); + } while (ret < 0 && (ret == GNUTLS_E_AGAIN || + ret == GNUTLS_E_INTERRUPTED)); } else { - ret = - gnutls_record_send(session, - session->internals. - record_presend_buffer.data, - session->internals. - record_presend_buffer.length); + ret = gnutls_record_send( + session, + session->internals.record_presend_buffer.data, + session->internals.record_presend_buffer.length); } if (ret < 0) goto fail; @@ -2401,7 +2337,7 @@ int gnutls_record_uncork(gnutls_session_t session, unsigned int flags) return total; - fail: +fail: session->internals.rsend_state = orig_state; return ret; } @@ -2432,8 +2368,8 @@ int gnutls_record_uncork(gnutls_session_t session, unsigned int flags) * connections). A negative error code is returned in case of an error. * The number of bytes received might be less than the requested @data_size. **/ -ssize_t -gnutls_record_recv(gnutls_session_t session, void *data, size_t data_size) +ssize_t gnutls_record_recv(gnutls_session_t session, void *data, + size_t data_size) { if (unlikely(!session->internals.initial_negotiation_completed)) { /* this is to protect buggy applications from sending unencrypted @@ -2441,16 +2377,15 @@ gnutls_record_recv(gnutls_session_t session, void *data, size_t data_size) * state. */ if (session->internals.recv_state != RECV_STATE_FALSE_START && session->internals.recv_state != RECV_STATE_EARLY_START) - return - gnutls_assert_val - (GNUTLS_E_UNAVAILABLE_DURING_HANDSHAKE); + return gnutls_assert_val( + GNUTLS_E_UNAVAILABLE_DURING_HANDSHAKE); } if (IS_KTLS_ENABLED(session, GNUTLS_KTLS_RECV)) { return _gnutls_ktls_recv(session, data, data_size); } else { - return _gnutls_recv_int(session, GNUTLS_APPLICATION_DATA, - data, data_size, NULL, + return _gnutls_recv_int(session, GNUTLS_APPLICATION_DATA, data, + data_size, NULL, session->internals.record_timeout_ms); } } @@ -2475,12 +2410,11 @@ gnutls_record_recv(gnutls_session_t session, void *data, size_t data_size) * * Since: 3.0 **/ -ssize_t -gnutls_record_recv_seq(gnutls_session_t session, void *data, - size_t data_size, unsigned char *seq) +ssize_t gnutls_record_recv_seq(gnutls_session_t session, void *data, + size_t data_size, unsigned char *seq) { - return _gnutls_recv_int(session, GNUTLS_APPLICATION_DATA, - data, data_size, seq, + return _gnutls_recv_int(session, GNUTLS_APPLICATION_DATA, data, + data_size, seq, session->internals.record_timeout_ms); } @@ -2518,10 +2452,9 @@ void gnutls_record_set_timeout(gnutls_session_t session, unsigned int ms) * * Since: 3.7.0 */ -int -gnutls_handshake_write(gnutls_session_t session, - gnutls_record_encryption_level_t level, - const void *data, size_t data_size) +int gnutls_handshake_write(gnutls_session_t session, + gnutls_record_encryption_level_t level, + const void *data, size_t data_size) { record_parameters_st *record_params; record_state_st *record_state; @@ -2542,8 +2475,8 @@ gnutls_handshake_write(gnutls_session_t session, * in GNUTLS_KTLS_RECV mode in which case the outgoing messages * are handled by GnuTLS. */ - if (!session->internals.h_read_func - && !IS_KTLS_ENABLED(session, GNUTLS_KTLS_RECV)) + if (!session->internals.h_read_func && + !IS_KTLS_ENABLED(session, GNUTLS_KTLS_RECV)) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); if (session->internals.initial_negotiation_completed) { diff --git a/lib/record.h b/lib/record.h index 6b08ed4129..5bea343257 100644 --- a/lib/record.h +++ b/lib/record.h @@ -21,14 +21,13 @@ */ #ifndef GNUTLS_LIB_RECORD_H -# define GNUTLS_LIB_RECORD_H +#define GNUTLS_LIB_RECORD_H -# include -# include -# include +#include +#include +#include -ssize_t _gnutls_send_tlen_int(gnutls_session_t session, - content_type_t type, +ssize_t _gnutls_send_tlen_int(gnutls_session_t session, content_type_t type, gnutls_handshake_description_t htype, unsigned int epoch_rel, const void *data, size_t sizeofdata, size_t min_pad, @@ -36,26 +35,24 @@ ssize_t _gnutls_send_tlen_int(gnutls_session_t session, inline static ssize_t _gnutls_send_int(gnutls_session_t session, content_type_t type, - gnutls_handshake_description_t htype, - unsigned int epoch_rel, const void *_data, - size_t data_size, unsigned int mflags) + gnutls_handshake_description_t htype, unsigned int epoch_rel, + const void *_data, size_t data_size, unsigned int mflags) { - return _gnutls_send_tlen_int(session, type, htype, epoch_rel, - _data, data_size, 0, mflags); + return _gnutls_send_tlen_int(session, type, htype, epoch_rel, _data, + data_size, 0, mflags); } ssize_t _gnutls_recv_int(gnutls_session_t session, content_type_t type, - uint8_t * data, - size_t sizeofdata, void *seq, unsigned int ms); + uint8_t *data, size_t sizeofdata, void *seq, + unsigned int ms); inline static unsigned max_record_recv_size(gnutls_session_t session) { unsigned size; if (session->internals.max_recv_size == 0) { - size = - session->security_parameters.max_record_recv_size + - RECORD_HEADER_SIZE(session); + size = session->security_parameters.max_record_recv_size + + RECORD_HEADER_SIZE(session); if (session->internals.allow_large_records != 0) size += EXTRA_COMP_SIZE; } else { @@ -79,8 +76,7 @@ inline static unsigned max_decrypted_size(gnutls_session_t session) /* Returns the headers + any IV that the ciphersuite * requires */ -inline static -unsigned int get_total_headers(gnutls_session_t session) +inline static unsigned int get_total_headers(gnutls_session_t session) { int ret; record_parameters_st *params; @@ -94,9 +90,8 @@ unsigned int get_total_headers(gnutls_session_t session) return total + _gnutls_cipher_get_explicit_iv_size(params->cipher); } -inline static -unsigned int get_total_headers2(gnutls_session_t session, - record_parameters_st * params) +inline static unsigned int get_total_headers2(gnutls_session_t session, + record_parameters_st *params) { unsigned total = RECORD_HEADER_SIZE(session); @@ -108,4 +103,4 @@ inline static void session_invalidate(gnutls_session_t session) session->internals.invalid_connection = 1; } -#endif /* GNUTLS_LIB_RECORD_H */ +#endif /* GNUTLS_LIB_RECORD_H */ diff --git a/lib/safe-memfuncs.c b/lib/safe-memfuncs.c index 72e0436b9e..a3485da02c 100644 --- a/lib/safe-memfuncs.c +++ b/lib/safe-memfuncs.c @@ -74,7 +74,6 @@ int main(void) gnutls_memset(x, 0, sizeof(x)); return 0; - } #endif diff --git a/lib/secrets.c b/lib/secrets.c index 8eea85172e..6a0c8b7bc6 100644 --- a/lib/secrets.c +++ b/lib/secrets.c @@ -30,19 +30,19 @@ #include "secrets.h" /* HKDF-Extract(0,0) or HKDF-Extract(0, PSK) */ -int _tls13_init_secret(gnutls_session_t session, const uint8_t * psk, +int _tls13_init_secret(gnutls_session_t session, const uint8_t *psk, size_t psk_size) { session->key.proto.tls13.temp_secret_size = - session->security_parameters.prf->output_size; + session->security_parameters.prf->output_size; - return _tls13_init_secret2(session->security_parameters.prf, - psk, psk_size, + return _tls13_init_secret2(session->security_parameters.prf, psk, + psk_size, session->key.proto.tls13.temp_secret); } -int _tls13_init_secret2(const mac_entry_st * prf, - const uint8_t * psk, size_t psk_size, void *out) +int _tls13_init_secret2(const mac_entry_st *prf, const uint8_t *psk, + size_t psk_size, void *out) { char buf[128]; @@ -56,14 +56,14 @@ int _tls13_init_secret2(const mac_entry_st * prf, return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); memset(buf, 0, psk_size); - psk = (uint8_t *) buf; + psk = (uint8_t *)buf; } return gnutls_hmac_fast(prf->id, "", 0, psk, psk_size, out); } /* HKDF-Extract(Prev-Secret, key) */ -int _tls13_update_secret(gnutls_session_t session, const uint8_t * key, +int _tls13_update_secret(gnutls_session_t session, const uint8_t *key, size_t key_size) { gnutls_datum_t _key; @@ -75,9 +75,8 @@ int _tls13_update_secret(gnutls_session_t session, const uint8_t * key, salt.data = (void *)session->key.proto.tls13.temp_secret; salt.size = session->key.proto.tls13.temp_secret_size; - ret = _gnutls_hkdf_extract(session->security_parameters.prf->id, - &_key, &salt, - session->key.proto.tls13.temp_secret); + ret = _gnutls_hkdf_extract(session->security_parameters.prf->id, &_key, + &salt, session->key.proto.tls13.temp_secret); if (ret < 0) _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); else @@ -87,10 +86,10 @@ int _tls13_update_secret(gnutls_session_t session, const uint8_t * key, } /* Derive-Secret(Secret, Label, Messages) */ -int _tls13_derive_secret2(const mac_entry_st * prf, - const char *label, unsigned label_size, - const uint8_t * tbh, size_t tbh_size, - const uint8_t secret[MAX_HASH_SIZE], void *out) +int _tls13_derive_secret2(const mac_entry_st *prf, const char *label, + unsigned label_size, const uint8_t *tbh, + size_t tbh_size, const uint8_t secret[MAX_HASH_SIZE], + void *out) { uint8_t digest[MAX_HASH_SIZE]; int ret; @@ -102,8 +101,8 @@ int _tls13_derive_secret2(const mac_entry_st * prf, return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); digest_size = prf->output_size; - ret = gnutls_hash_fast((gnutls_digest_algorithm_t) prf->id, - tbh, tbh_size, digest); + ret = gnutls_hash_fast((gnutls_digest_algorithm_t)prf->id, tbh, + tbh_size, digest); if (ret < 0) return gnutls_assert_val(ret); @@ -112,10 +111,10 @@ int _tls13_derive_secret2(const mac_entry_st * prf, } /* Derive-Secret(Secret, Label, Messages) */ -int _tls13_derive_secret(gnutls_session_t session, - const char *label, unsigned label_size, - const uint8_t * tbh, size_t tbh_size, - const uint8_t secret[MAX_HASH_SIZE], void *out) +int _tls13_derive_secret(gnutls_session_t session, const char *label, + unsigned label_size, const uint8_t *tbh, + size_t tbh_size, const uint8_t secret[MAX_HASH_SIZE], + void *out) { if (unlikely(session->security_parameters.prf == NULL)) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); @@ -125,10 +124,9 @@ int _tls13_derive_secret(gnutls_session_t session, } /* HKDF-Expand-Label(Secret, Label, HashValue, Length) */ -int _tls13_expand_secret2(const mac_entry_st * prf, - const char *label, unsigned label_size, - const uint8_t * msg, size_t msg_size, - const uint8_t secret[MAX_HASH_SIZE], +int _tls13_expand_secret2(const mac_entry_st *prf, const char *label, + unsigned label_size, const uint8_t *msg, + size_t msg_size, const uint8_t secret[MAX_HASH_SIZE], unsigned out_size, void *out) { uint8_t tmp[256] = "tls13 "; @@ -187,21 +185,20 @@ int _tls13_expand_secret2(const mac_entry_st * prf, #endif ret = 0; - cleanup: +cleanup: _gnutls_buffer_clear(&str); return ret; } -int _tls13_expand_secret(gnutls_session_t session, - const char *label, unsigned label_size, - const uint8_t * msg, size_t msg_size, - const uint8_t secret[MAX_HASH_SIZE], +int _tls13_expand_secret(gnutls_session_t session, const char *label, + unsigned label_size, const uint8_t *msg, + size_t msg_size, const uint8_t secret[MAX_HASH_SIZE], unsigned out_size, void *out) { if (unlikely(session->security_parameters.prf == NULL)) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - return _tls13_expand_secret2(session->security_parameters.prf, - label, label_size, - msg, msg_size, secret, out_size, out); + return _tls13_expand_secret2(session->security_parameters.prf, label, + label_size, msg, msg_size, secret, + out_size, out); } diff --git a/lib/secrets.h b/lib/secrets.h index bf47a2030c..17cb528f28 100644 --- a/lib/secrets.h +++ b/lib/secrets.h @@ -21,37 +21,34 @@ */ #ifndef GNUTLS_LIB_SECRETS_H -# define GNUTLS_LIB_SECRETS_H +#define GNUTLS_LIB_SECRETS_H -# include "gnutls_int.h" +#include "gnutls_int.h" -int _tls13_init_secret(gnutls_session_t session, const uint8_t * psk, +int _tls13_init_secret(gnutls_session_t session, const uint8_t *psk, size_t psk_size); -int _tls13_update_secret(gnutls_session_t session, const uint8_t * key, +int _tls13_update_secret(gnutls_session_t session, const uint8_t *key, size_t key_size); -int _tls13_init_secret2(const mac_entry_st * prf, - const uint8_t * psk, size_t psk_size, void *out); +int _tls13_init_secret2(const mac_entry_st *prf, const uint8_t *psk, + size_t psk_size, void *out); -int _tls13_derive_secret(gnutls_session_t session, - const char *label, unsigned label_size, - const uint8_t * msg, size_t msg_size, - const uint8_t secret[MAX_HASH_SIZE], - void *out /* of enough length to hold PRF MAC */ ); -int _tls13_derive_secret2(const mac_entry_st * prf, - const char *label, unsigned label_size, - const uint8_t * tbh, size_t tbh_size, - const uint8_t secret[MAX_HASH_SIZE], void *out); +int _tls13_derive_secret(gnutls_session_t session, const char *label, + unsigned label_size, const uint8_t *msg, + size_t msg_size, const uint8_t secret[MAX_HASH_SIZE], + void *out /* of enough length to hold PRF MAC */); +int _tls13_derive_secret2(const mac_entry_st *prf, const char *label, + unsigned label_size, const uint8_t *tbh, + size_t tbh_size, const uint8_t secret[MAX_HASH_SIZE], + void *out); -int _tls13_expand_secret(gnutls_session_t session, - const char *label, unsigned label_size, - const uint8_t * msg, size_t msg_size, - const uint8_t secret[MAX_HASH_SIZE], +int _tls13_expand_secret(gnutls_session_t session, const char *label, + unsigned label_size, const uint8_t *msg, + size_t msg_size, const uint8_t secret[MAX_HASH_SIZE], unsigned out_size, void *out); -int _tls13_expand_secret2(const mac_entry_st * prf, - const char *label, unsigned label_size, - const uint8_t * msg, size_t msg_size, - const uint8_t secret[MAX_HASH_SIZE], +int _tls13_expand_secret2(const mac_entry_st *prf, const char *label, + unsigned label_size, const uint8_t *msg, + size_t msg_size, const uint8_t secret[MAX_HASH_SIZE], unsigned out_size, void *out); -#endif /* GNUTLS_LIB_SECRETS_H */ +#endif /* GNUTLS_LIB_SECRETS_H */ diff --git a/lib/session.c b/lib/session.c index 6f4e98ed65..48e7aba84e 100644 --- a/lib/session.c +++ b/lib/session.c @@ -44,11 +44,9 @@ * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise * an error code is returned. **/ -int -gnutls_session_get_data(gnutls_session_t session, - void *session_data, size_t *session_data_size) +int gnutls_session_get_data(gnutls_session_t session, void *session_data, + size_t *session_data_size) { - gnutls_datum_t psession; int ret; @@ -70,7 +68,7 @@ gnutls_session_get_data(gnutls_session_t session, ret = 0; - error: +error: _gnutls_free_datum(&psession); return ret; } @@ -118,7 +116,7 @@ gnutls_session_get_data(gnutls_session_t session, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise * an error code is returned. **/ -int gnutls_session_get_data2(gnutls_session_t session, gnutls_datum_t * data) +int gnutls_session_get_data2(gnutls_session_t session, gnutls_datum_t *data) { const version_entry_st *vers = get_version(session); int ret; @@ -127,8 +125,8 @@ int gnutls_session_get_data2(gnutls_session_t session, gnutls_datum_t * data) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); } - if (vers->tls13_sem - && !(session->internals.hsk_flags & HSK_TICKET_RECEIVED)) { + if (vers->tls13_sem && + !(session->internals.hsk_flags & HSK_TICKET_RECEIVED)) { unsigned ertt = session->internals.ertt; /* use our estimation of round-trip + some time for the server to calculate * the value(s). */ @@ -136,27 +134,24 @@ int gnutls_session_get_data2(gnutls_session_t session, gnutls_datum_t * data) /* we cannot use a read with timeout if the caller has not set * a callback with gnutls_transport_set_pull_timeout_function() */ - if (NO_TIMEOUT_FUNC_SET(session) - || (session->internals.flags & GNUTLS_NONBLOCK)) { + if (NO_TIMEOUT_FUNC_SET(session) || + (session->internals.flags & GNUTLS_NONBLOCK)) { if (!(session->internals.flags & GNUTLS_NONBLOCK)) - _gnutls_debug_log - ("TLS1.3 works efficiently if a callback with gnutls_transport_set_pull_timeout_function() is set\n"); + _gnutls_debug_log( + "TLS1.3 works efficiently if a callback with gnutls_transport_set_pull_timeout_function() is set\n"); } else { /* wait for a message with timeout */ - ret = - _gnutls_recv_in_buffers(session, - GNUTLS_APPLICATION_DATA, -1, - ertt); - if (ret < 0 && (gnutls_error_is_fatal(ret) - && ret != GNUTLS_E_TIMEDOUT)) { + ret = _gnutls_recv_in_buffers( + session, GNUTLS_APPLICATION_DATA, -1, ertt); + if (ret < 0 && (gnutls_error_is_fatal(ret) && + ret != GNUTLS_E_TIMEDOUT)) { return gnutls_assert_val(ret); } } if (!(session->internals.hsk_flags & HSK_TICKET_RECEIVED)) { - ret = - _gnutls_set_datum(data, EMPTY_DATA, - EMPTY_DATA_SIZE); + ret = _gnutls_set_datum(data, EMPTY_DATA, + EMPTY_DATA_SIZE); if (ret < 0) return gnutls_assert_val(ret); @@ -165,14 +160,11 @@ int gnutls_session_get_data2(gnutls_session_t session, gnutls_datum_t * data) } else if (!vers->tls13_sem) { /* under TLS1.3 we want to pack the latest ticket, while that's * not the case in TLS1.2 or earlier. */ - if (gnutls_session_is_resumed(session) - && session->internals.resumption_data.data) { - ret = - _gnutls_set_datum(data, - session-> - internals.resumption_data.data, - session-> - internals.resumption_data.size); + if (gnutls_session_is_resumed(session) && + session->internals.resumption_data.data) { + ret = _gnutls_set_datum( + data, session->internals.resumption_data.data, + session->internals.resumption_data.size); if (ret < 0) return gnutls_assert_val(ret); @@ -219,9 +211,8 @@ int gnutls_session_get_data2(gnutls_session_t session, gnutls_datum_t * data) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise * an error code is returned. **/ -int -gnutls_session_get_id(gnutls_session_t session, - void *session_id, size_t *session_id_size) +int gnutls_session_get_id(gnutls_session_t session, void *session_id, + size_t *session_id_size) { size_t given_session_id_size = *session_id_size; @@ -271,8 +262,7 @@ gnutls_session_get_id(gnutls_session_t session, * * Since: 3.1.4 **/ -int -gnutls_session_get_id2(gnutls_session_t session, gnutls_datum_t * session_id) +int gnutls_session_get_id2(gnutls_session_t session, gnutls_datum_t *session_id) { session_id->size = session->security_parameters.session_id_size; session_id->data = session->security_parameters.session_id; @@ -298,14 +288,13 @@ gnutls_session_get_id2(gnutls_session_t session, gnutls_datum_t * session_id) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise * an error code is returned. **/ -int -gnutls_session_set_data(gnutls_session_t session, - const void *session_data, size_t session_data_size) +int gnutls_session_set_data(gnutls_session_t session, const void *session_data, + size_t session_data_size) { int ret; gnutls_datum_t psession; - psession.data = (uint8_t *) session_data; + psession.data = (uint8_t *)session_data; psession.size = session_data_size; if (session_data == NULL || session_data_size == 0) { @@ -330,9 +319,8 @@ gnutls_session_set_data(gnutls_session_t session, if (session->internals.resumption_data.data != NULL) gnutls_free(session->internals.resumption_data.data); - ret = - _gnutls_set_datum(&session->internals.resumption_data, session_data, - session_data_size); + ret = _gnutls_set_datum(&session->internals.resumption_data, + session_data, session_data_size); if (ret < 0) { gnutls_assert(); return ret; @@ -414,7 +402,7 @@ char *gnutls_session_get_desc(gnutls_session_t session) sign_algo = gnutls_sign_algorithm_get(session); sign_str = gnutls_sign_get_name(sign_algo); - if (kx == 0 && ver->tls13_sem) { /* TLS 1.3 */ + if (kx == 0 && ver->tls13_sem) { /* TLS 1.3 */ if (session->internals.hsk_flags & HSK_PSK_SELECTED) { if (group) { if (group->pk == GNUTLS_PK_DH) @@ -443,7 +431,8 @@ char *gnutls_session_get_desc(gnutls_session_t session) } if ((kx == GNUTLS_KX_ECDHE_ECDSA || kx == GNUTLS_KX_ECDHE_RSA || - kx == GNUTLS_KX_ECDHE_PSK) && group_name) { + kx == GNUTLS_KX_ECDHE_PSK) && + group_name) { if (sign_str) snprintf(kx_name, sizeof(kx_name), "(ECDHE-%s)-(%s)", group_name, @@ -451,9 +440,10 @@ char *gnutls_session_get_desc(gnutls_session_t session) else snprintf(kx_name, sizeof(kx_name), "(ECDHE-%s)", group_name); - } else - if ((kx == GNUTLS_KX_DHE_DSS || kx == GNUTLS_KX_DHE_RSA - || kx == GNUTLS_KX_DHE_PSK) && group_name) { + } else if ((kx == GNUTLS_KX_DHE_DSS || + kx == GNUTLS_KX_DHE_RSA || + kx == GNUTLS_KX_DHE_PSK) && + group_name) { if (sign_str) snprintf(kx_name, sizeof(kx_name), "(DHE-%s)-(%s)", group_name, sign_str); @@ -471,27 +461,27 @@ char *gnutls_session_get_desc(gnutls_session_t session) if (are_alternative_cert_types_allowed(session)) { // Get certificate types ctype_client = - get_certificate_type(session, GNUTLS_CTYPE_CLIENT); + get_certificate_type(session, GNUTLS_CTYPE_CLIENT); ctype_server = - get_certificate_type(session, GNUTLS_CTYPE_SERVER); + get_certificate_type(session, GNUTLS_CTYPE_SERVER); if (ctype_client == ctype_server) { // print proto version, client/server cert type - snprintf(proto_name, sizeof(proto_name), "%s-%s", - gnutls_protocol_get_name(get_num_version - (session)), - gnutls_certificate_type_get_name - (ctype_client)); + snprintf( + proto_name, sizeof(proto_name), "%s-%s", + gnutls_protocol_get_name( + get_num_version(session)), + gnutls_certificate_type_get_name(ctype_client)); } else { // print proto version, client cert type, server cert type - snprintf(proto_name, sizeof(proto_name), "%s-%s-%s", - gnutls_protocol_get_name(get_num_version - (session)), - gnutls_certificate_type_get_name(ctype_client), - gnutls_certificate_type_get_name - (ctype_server)); + snprintf( + proto_name, sizeof(proto_name), "%s-%s-%s", + gnutls_protocol_get_name( + get_num_version(session)), + gnutls_certificate_type_get_name(ctype_client), + gnutls_certificate_type_get_name(ctype_server)); } - } else { // Assumed default certificate type (X.509) + } else { // Assumed default certificate type (X.509) snprintf(proto_name, sizeof(proto_name), "%s", gnutls_protocol_get_name(get_num_version(session))); } @@ -501,16 +491,11 @@ char *gnutls_session_get_desc(gnutls_session_t session) return NULL; mac_id = gnutls_mac_get(session); - if (mac_id == GNUTLS_MAC_AEAD) { /* no need to print */ - snprintf(desc, DESC_SIZE, - "(%s)-%s-(%s)", - proto_name, - kx_name, + if (mac_id == GNUTLS_MAC_AEAD) { /* no need to print */ + snprintf(desc, DESC_SIZE, "(%s)-%s-(%s)", proto_name, kx_name, gnutls_cipher_get_name(gnutls_cipher_get(session))); } else { - snprintf(desc, DESC_SIZE, - "(%s)-%s-(%s)-(%s)", - proto_name, + snprintf(desc, DESC_SIZE, "(%s)-%s-(%s)-(%s)", proto_name, kx_name, gnutls_cipher_get_name(gnutls_cipher_get(session)), gnutls_mac_get_name(mac_id)); @@ -535,7 +520,7 @@ char *gnutls_session_get_desc(gnutls_session_t session) * * Since: 3.2.1 **/ -int gnutls_session_set_id(gnutls_session_t session, const gnutls_datum_t * sid) +int gnutls_session_set_id(gnutls_session_t session, const gnutls_datum_t *sid) { if (session->security_parameters.entity == GNUTLS_SERVER || sid->size > GNUTLS_MAX_SESSION_ID_SIZE) @@ -545,7 +530,7 @@ int gnutls_session_set_id(gnutls_session_t session, const gnutls_datum_t * sid) sizeof(session->internals.resumed_security_parameters)); session->internals.resumed_security_parameters.session_id_size = - sid->size; + sid->size; memcpy(session->internals.resumed_security_parameters.session_id, sid->data, sid->size); diff --git a/lib/session_pack.c b/lib/session_pack.c index 47ede0af4c..2844ed1dcc 100644 --- a/lib/session_pack.c +++ b/lib/session_pack.c @@ -27,10 +27,10 @@ #include "gnutls_int.h" #ifdef ENABLE_SRP -# include +#include #endif #ifdef ENABLE_PSK -# include +#include #endif #include #include @@ -47,35 +47,35 @@ #include "tls13/session_ticket.h" static int pack_certificate_auth_info(gnutls_session_t, - gnutls_buffer_st * packed_session); + gnutls_buffer_st *packed_session); static int unpack_certificate_auth_info(gnutls_session_t, - gnutls_buffer_st * packed_session); + gnutls_buffer_st *packed_session); #ifdef ENABLE_SRP static int unpack_srp_auth_info(gnutls_session_t session, - gnutls_buffer_st * packed_session); + gnutls_buffer_st *packed_session); static int pack_srp_auth_info(gnutls_session_t session, - gnutls_buffer_st * packed_session); + gnutls_buffer_st *packed_session); #endif static int unpack_psk_auth_info(gnutls_session_t session, - gnutls_buffer_st * packed_session); + gnutls_buffer_st *packed_session); static int pack_psk_auth_info(gnutls_session_t session, - gnutls_buffer_st * packed_session); + gnutls_buffer_st *packed_session); static int unpack_anon_auth_info(gnutls_session_t session, - gnutls_buffer_st * packed_session); + gnutls_buffer_st *packed_session); static int pack_anon_auth_info(gnutls_session_t session, - gnutls_buffer_st * packed_session); + gnutls_buffer_st *packed_session); static int unpack_security_parameters(gnutls_session_t session, - gnutls_buffer_st * packed_session); + gnutls_buffer_st *packed_session); static int pack_security_parameters(gnutls_session_t session, - gnutls_buffer_st * packed_session); + gnutls_buffer_st *packed_session); static int tls13_unpack_security_parameters(gnutls_session_t session, - gnutls_buffer_st * packed_session); + gnutls_buffer_st *packed_session); static int tls13_pack_security_parameters(gnutls_session_t session, - gnutls_buffer_st * packed_session); + gnutls_buffer_st *packed_session); /* Since auth_info structures contain malloced data, this function * is required in order to pack these structures in a vector in @@ -85,8 +85,8 @@ static int tls13_pack_security_parameters(gnutls_session_t session, * * The data will be in a platform independent format. */ -int -_gnutls_session_pack(gnutls_session_t session, gnutls_datum_t * packed_session) +int _gnutls_session_pack(gnutls_session_t session, + gnutls_datum_t *packed_session) { int ret; gnutls_buffer_st sb; @@ -144,7 +144,6 @@ _gnutls_session_pack(gnutls_session_t session, gnutls_datum_t * packed_session) default: ret = gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); goto fail; - } /* Auth_info structures copied. Now copy security_parameters_st. @@ -175,16 +174,15 @@ _gnutls_session_pack(gnutls_session_t session, gnutls_datum_t * packed_session) return _gnutls_buffer_to_datum(&sb, packed_session, 0); - fail: +fail: _gnutls_buffer_clear(&sb); return ret; } /* Load session data from a buffer. */ -int -_gnutls_session_unpack(gnutls_session_t session, - const gnutls_datum_t * packed_session) +int _gnutls_session_unpack(gnutls_session_t session, + const gnutls_datum_t *packed_session) { int ret; gnutls_buffer_st sb; @@ -199,9 +197,8 @@ _gnutls_session_unpack(gnutls_session_t session, return GNUTLS_E_INTERNAL_ERROR; } - ret = - _gnutls_buffer_append_data(&sb, packed_session->data, - packed_session->size); + ret = _gnutls_buffer_append_data(&sb, packed_session->data, + packed_session->size); if (ret < 0) { gnutls_assert(); return ret; @@ -217,9 +214,8 @@ _gnutls_session_unpack(gnutls_session_t session, goto error; } - BUFFER_POP_NUM(&sb, - session->internals.resumed_security_parameters. - timestamp); + BUFFER_POP_NUM( + &sb, session->internals.resumed_security_parameters.timestamp); BUFFER_POP_NUM(&sb, expire_time); (void)expire_time; BUFFER_POP(&sb, &id, 1); @@ -263,7 +259,6 @@ _gnutls_session_unpack(gnutls_session_t session, gnutls_assert(); ret = GNUTLS_E_INTERNAL_ERROR; goto error; - } /* Auth_info structures copied. Now copy security_parameters_st. @@ -294,7 +289,7 @@ _gnutls_session_unpack(gnutls_session_t session, ret = 0; - error: +error: _gnutls_buffer_clear(&sb); return ret; @@ -319,8 +314,8 @@ _gnutls_session_unpack(gnutls_session_t session, * If we didn't receive any NST then we cannot resume a TLS 1.3 session and hence * its nonsense to store all that info. */ -static int -tls13_pack_security_parameters(gnutls_session_t session, gnutls_buffer_st * ps) +static int tls13_pack_security_parameters(gnutls_session_t session, + gnutls_buffer_st *ps) { int ret = 0; uint32_t length = 0; @@ -337,18 +332,16 @@ tls13_pack_security_parameters(gnutls_session_t session, gnutls_buffer_st * ps) length += 4; BUFFER_APPEND_PFX1(ps, ticket->nonce, ticket->nonce_size); length += (1 + ticket->nonce_size); - BUFFER_APPEND_PFX4(ps, - ticket->ticket.data, ticket->ticket.size); + BUFFER_APPEND_PFX4(ps, ticket->ticket.data, + ticket->ticket.size); length += (4 + ticket->ticket.size); - BUFFER_APPEND_PFX1(ps, - ticket->resumption_master_secret, + BUFFER_APPEND_PFX1(ps, ticket->resumption_master_secret, ticket->prf->output_size); length += (1 + ticket->prf->output_size); BUFFER_APPEND_TS(ps, ticket->arrival_time); length += 12; - BUFFER_APPEND_NUM(ps, - session->security_parameters. - max_early_data_size); + BUFFER_APPEND_NUM( + ps, session->security_parameters.max_early_data_size); length += 4; /* Overwrite the length field */ @@ -358,9 +351,8 @@ tls13_pack_security_parameters(gnutls_session_t session, gnutls_buffer_st * ps) return ret; } -static int -tls13_unpack_security_parameters(gnutls_session_t session, - gnutls_buffer_st * ps) +static int tls13_unpack_security_parameters(gnutls_session_t session, + gnutls_buffer_st *ps) { uint32_t ttl_len; tls13_ticket_st *ticket = &session->internals.tls13_ticket; @@ -385,30 +377,29 @@ tls13_unpack_security_parameters(gnutls_session_t session, BUFFER_POP_DATUM(ps, &ticket->ticket); ret = _gnutls_buffer_pop_datum_prefix8(ps, &t); - if (ret < 0 - || t.size > sizeof(ticket->resumption_master_secret)) { + if (ret < 0 || + t.size > sizeof(ticket->resumption_master_secret)) { ret = GNUTLS_E_PARSING_ERROR; gnutls_assert(); goto error; } memcpy(ticket->resumption_master_secret, t.data, t.size); - if (unlikely - (session->internals.resumed_security_parameters.prf == NULL - || session->internals.resumed_security_parameters. - prf->output_size != t.size)) + if (unlikely(session->internals.resumed_security_parameters + .prf == NULL || + session->internals.resumed_security_parameters.prf + ->output_size != t.size)) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); ticket->prf = - session->internals.resumed_security_parameters.prf; + session->internals.resumed_security_parameters.prf; BUFFER_POP_TS(ps, ticket->arrival_time); - BUFFER_POP_NUM(ps, - session->security_parameters. - max_early_data_size); + BUFFER_POP_NUM( + ps, session->security_parameters.max_early_data_size); } - error: +error: return ret; } @@ -434,13 +425,13 @@ tls13_unpack_security_parameters(gnutls_session_t session, * x bytes the certificate * and so on... */ -static int -pack_certificate_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) +static int pack_certificate_auth_info(gnutls_session_t session, + gnutls_buffer_st *ps) { unsigned int i; int cur_size, ret; cert_auth_info_t info = - _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE); + _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE); int size_offset; size_offset = ps->length; @@ -448,7 +439,6 @@ pack_certificate_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) cur_size = ps->length; if (info) { - BUFFER_APPEND_NUM(ps, info->dh.secret_bits); BUFFER_APPEND_PFX4(ps, info->dh.prime.data, info->dh.prime.size); @@ -468,8 +458,7 @@ pack_certificate_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) BUFFER_APPEND_NUM(ps, info->nocsp); for (i = 0; i < info->nocsp; i++) { - BUFFER_APPEND_PFX4(ps, - info->raw_ocsp_list[i].data, + BUFFER_APPEND_PFX4(ps, info->raw_ocsp_list[i].data, info->raw_ocsp_list[i].size); } } @@ -482,8 +471,8 @@ pack_certificate_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) /* Upack certificate info. */ -static int -unpack_certificate_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) +static int unpack_certificate_auth_info(gnutls_session_t session, + gnutls_buffer_st *ps) { int ret; unsigned int i = 0, j = 0; @@ -495,13 +484,12 @@ unpack_certificate_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) BUFFER_POP_NUM(ps, pack_size); if (pack_size == 0) - return 0; /* nothing to be done */ + return 0; /* nothing to be done */ /* client and server have the same auth_info here */ - ret = - _gnutls_auth_info_init(session, GNUTLS_CRD_CERTIFICATE, - sizeof(cert_auth_info_st), 1); + ret = _gnutls_auth_info_init(session, GNUTLS_CRD_CERTIFICATE, + sizeof(cert_auth_info_st), 1); if (ret < 0) { gnutls_assert(); return ret; @@ -521,7 +509,7 @@ unpack_certificate_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) if (info->ncerts > 0) { info->raw_certificate_list = - gnutls_calloc(info->ncerts, sizeof(gnutls_datum_t)); + gnutls_calloc(info->ncerts, sizeof(gnutls_datum_t)); if (info->raw_certificate_list == NULL) { gnutls_assert(); ret = GNUTLS_E_MEMORY_ERROR; @@ -539,7 +527,7 @@ unpack_certificate_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) if (info->nocsp > 0) { info->raw_ocsp_list = - gnutls_calloc(info->nocsp, sizeof(gnutls_datum_t)); + gnutls_calloc(info->nocsp, sizeof(gnutls_datum_t)); if (info->raw_ocsp_list == NULL) { gnutls_assert(); ret = GNUTLS_E_MEMORY_ERROR; @@ -554,7 +542,7 @@ unpack_certificate_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) return 0; - error: +error: if (info) { _gnutls_free_datum(&info->dh.prime); _gnutls_free_datum(&info->dh.generator); @@ -571,7 +559,6 @@ unpack_certificate_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) } return ret; - } #ifdef ENABLE_SRP @@ -583,10 +570,10 @@ unpack_certificate_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) * 4 bytes the size of the SRP username (x) * x bytes the SRP username */ -static int pack_srp_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) +static int pack_srp_auth_info(gnutls_session_t session, gnutls_buffer_st *ps) { srp_server_auth_info_t info = - _gnutls_get_auth_info(session, GNUTLS_CRD_SRP); + _gnutls_get_auth_info(session, GNUTLS_CRD_SRP); int len, ret; int size_offset; size_t cur_size; @@ -595,7 +582,8 @@ static int pack_srp_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) if (info) { if (info->username) { username = info->username; - len = strlen(info->username) + 1; /* include the terminating null */ + len = strlen(info->username) + + 1; /* include the terminating null */ } else { username = "\0"; len = 1; @@ -615,7 +603,7 @@ static int pack_srp_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) return 0; } -static int unpack_srp_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) +static int unpack_srp_auth_info(gnutls_session_t session, gnutls_buffer_st *ps) { size_t username_size; int ret; @@ -646,7 +634,7 @@ static int unpack_srp_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) ret = 0; - error: +error: return ret; } #endif @@ -666,7 +654,7 @@ static int unpack_srp_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) * 4 bytes the size of the public key * x bytes the public key */ -static int pack_anon_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) +static int pack_anon_auth_info(gnutls_session_t session, gnutls_buffer_st *ps) { int cur_size, ret; anon_auth_info_t info = _gnutls_get_auth_info(session, GNUTLS_CRD_ANON); @@ -692,8 +680,7 @@ static int pack_anon_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) return 0; } -static int -unpack_anon_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) +static int unpack_anon_auth_info(gnutls_session_t session, gnutls_buffer_st *ps) { int ret; size_t pack_size; @@ -702,13 +689,12 @@ unpack_anon_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) BUFFER_POP_NUM(ps, pack_size); if (pack_size == 0) - return 0; /* nothing to be done */ + return 0; /* nothing to be done */ /* client and server have the same auth_info here */ - ret = - _gnutls_auth_info_init(session, GNUTLS_CRD_ANON, - sizeof(anon_auth_info_st), 1); + ret = _gnutls_auth_info_init(session, GNUTLS_CRD_ANON, + sizeof(anon_auth_info_st), 1); if (ret < 0) { gnutls_assert(); return ret; @@ -726,7 +712,7 @@ unpack_anon_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) return 0; - error: +error: if (info) { _gnutls_free_datum(&info->dh.prime); _gnutls_free_datum(&info->dh.generator); @@ -735,7 +721,7 @@ unpack_anon_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) return ret; } -#endif /* ANON */ +#endif /* ANON */ #ifdef ENABLE_PSK /* Packs the PSK session authentication data. @@ -755,7 +741,7 @@ unpack_anon_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) * 4 bytes the size of the public key * x bytes the public key */ -static int pack_psk_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) +static int pack_psk_auth_info(gnutls_session_t session, gnutls_buffer_st *ps) { psk_auth_info_t info; int username_len; @@ -768,7 +754,7 @@ static int pack_psk_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); username_len = info->username_len; - hint_len = info->hint_len + 1; /* include the terminating null */ + hint_len = info->hint_len + 1; /* include the terminating null */ size_offset = ps->length; BUFFER_APPEND_NUM(ps, 0); @@ -789,16 +775,15 @@ static int pack_psk_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) return 0; } -static int unpack_psk_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) +static int unpack_psk_auth_info(gnutls_session_t session, gnutls_buffer_st *ps) { size_t username_size, hint_size; int ret; psk_auth_info_t info; unsigned pack_size; - ret = - _gnutls_auth_info_init(session, GNUTLS_CRD_PSK, - sizeof(psk_auth_info_st), 1); + ret = _gnutls_auth_info_init(session, GNUTLS_CRD_PSK, + sizeof(psk_auth_info_st), 1); if (ret < 0) { gnutls_assert(); return ret; @@ -844,7 +829,7 @@ static int unpack_psk_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) ret = 0; - error: +error: _gnutls_free_datum(&info->dh.prime); _gnutls_free_datum(&info->dh.generator); _gnutls_free_datum(&info->dh.public_key); @@ -855,16 +840,15 @@ static int unpack_psk_auth_info(gnutls_session_t session, gnutls_buffer_st * ps) /* Packs the security parameters. */ -static int -pack_security_parameters(gnutls_session_t session, gnutls_buffer_st * ps) +static int pack_security_parameters(gnutls_session_t session, + gnutls_buffer_st *ps) { - int ret; int size_offset; size_t cur_size; - if (session->security_parameters.epoch_read - != session->security_parameters.epoch_write && + if (session->security_parameters.epoch_read != + session->security_parameters.epoch_write && !(session->internals.hsk_flags & HSK_EARLY_START_USED)) { gnutls_assert(); return GNUTLS_E_UNAVAILABLE_DURING_HANDSHAKE; @@ -914,21 +898,19 @@ pack_security_parameters(gnutls_session_t session, gnutls_buffer_st * ps) /* reset max_record_recv_size if it was negotiated * using the record_size_limit extension */ - if (session-> - internals.hsk_flags & HSK_RECORD_SIZE_LIMIT_NEGOTIATED) { + if (session->internals.hsk_flags & + HSK_RECORD_SIZE_LIMIT_NEGOTIATED) { BUFFER_APPEND_NUM(ps, - session->security_parameters. - max_user_record_send_size); + session->security_parameters + .max_user_record_send_size); BUFFER_APPEND_NUM(ps, - session->security_parameters. - max_user_record_recv_size); + session->security_parameters + .max_user_record_recv_size); } else { - BUFFER_APPEND_NUM(ps, - session->security_parameters. - max_record_recv_size); - BUFFER_APPEND_NUM(ps, - session->security_parameters. - max_record_send_size); + BUFFER_APPEND_NUM(ps, session->security_parameters + .max_record_recv_size); + BUFFER_APPEND_NUM(ps, session->security_parameters + .max_record_send_size); } if (session->security_parameters.grp) { @@ -938,15 +920,12 @@ pack_security_parameters(gnutls_session_t session, gnutls_buffer_st * ps) BUFFER_APPEND_NUM(ps, 0); } - BUFFER_APPEND_NUM(ps, - session-> - security_parameters.server_sign_algo); - BUFFER_APPEND_NUM(ps, - session-> - security_parameters.client_sign_algo); - BUFFER_APPEND_NUM(ps, - session-> - security_parameters.ext_master_secret); + BUFFER_APPEND_NUM( + ps, session->security_parameters.server_sign_algo); + BUFFER_APPEND_NUM( + ps, session->security_parameters.client_sign_algo); + BUFFER_APPEND_NUM( + ps, session->security_parameters.ext_master_secret); BUFFER_APPEND_NUM(ps, session->security_parameters.etm); } @@ -955,8 +934,8 @@ pack_security_parameters(gnutls_session_t session, gnutls_buffer_st * ps) return 0; } -static int -unpack_security_parameters(gnutls_session_t session, gnutls_buffer_st * ps) +static int unpack_security_parameters(gnutls_session_t session, + gnutls_buffer_st *ps) { size_t pack_size; int ret; @@ -980,42 +959,40 @@ unpack_security_parameters(gnutls_session_t session, gnutls_buffer_st * ps) BUFFER_POP_NUM(ps, version); session->internals.resumed_security_parameters.prf = - mac_to_entry(version); + mac_to_entry(version); if (session->internals.resumed_security_parameters.prf == NULL) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - BUFFER_POP_NUM(ps, - session->internals.resumed_security_parameters. - client_auth_type); - BUFFER_POP_NUM(ps, - session->internals.resumed_security_parameters. - server_auth_type); + BUFFER_POP_NUM(ps, session->internals.resumed_security_parameters + .client_auth_type); + BUFFER_POP_NUM(ps, session->internals.resumed_security_parameters + .server_auth_type); - BUFFER_POP(ps, - &session->internals.resumed_security_parameters. - session_id_size, 1); + BUFFER_POP( + ps, + &session->internals.resumed_security_parameters.session_id_size, + 1); - BUFFER_POP(ps, - session->internals.resumed_security_parameters.session_id, - session->internals.resumed_security_parameters. - session_id_size); + BUFFER_POP( + ps, session->internals.resumed_security_parameters.session_id, + session->internals.resumed_security_parameters.session_id_size); BUFFER_POP_NUM(ps, version); session->internals.resumed_security_parameters.pversion = - version_to_entry(version); + version_to_entry(version); if (session->internals.resumed_security_parameters.pversion == NULL) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - BUFFER_POP_NUM(ps, - session->internals.resumed_security_parameters. - client_ctype); - BUFFER_POP_NUM(ps, - session->internals.resumed_security_parameters. - server_ctype); + BUFFER_POP_NUM( + ps, + session->internals.resumed_security_parameters.client_ctype); + BUFFER_POP_NUM( + ps, + session->internals.resumed_security_parameters.server_ctype); BUFFER_POP(ps, cs, 2); session->internals.resumed_security_parameters.cs = - ciphersuite_to_entry(cs); + ciphersuite_to_entry(cs); if (session->internals.resumed_security_parameters.cs == NULL) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); @@ -1028,8 +1005,8 @@ unpack_security_parameters(gnutls_session_t session, gnutls_buffer_st * ps) goto error; } if (t.size == GNUTLS_MASTER_SIZE) - memcpy(session->internals. - resumed_security_parameters.master_secret, + memcpy(session->internals.resumed_security_parameters + .master_secret, t.data, t.size); /* client random */ @@ -1040,8 +1017,8 @@ unpack_security_parameters(gnutls_session_t session, gnutls_buffer_st * ps) goto error; } if (t.size == GNUTLS_RANDOM_SIZE) - memcpy(session->internals. - resumed_security_parameters.client_random, + memcpy(session->internals.resumed_security_parameters + .client_random, t.data, t.size); /* server random */ @@ -1052,46 +1029,45 @@ unpack_security_parameters(gnutls_session_t session, gnutls_buffer_st * ps) goto error; } if (t.size == GNUTLS_RANDOM_SIZE) - memcpy(session->internals. - resumed_security_parameters.server_random, + memcpy(session->internals.resumed_security_parameters + .server_random, t.data, t.size); BUFFER_POP_NUM(ps, - session->internals.resumed_security_parameters. - max_record_send_size); + session->internals.resumed_security_parameters + .max_record_send_size); BUFFER_POP_NUM(ps, - session->internals.resumed_security_parameters. - max_record_recv_size); + session->internals.resumed_security_parameters + .max_record_recv_size); BUFFER_POP_NUM(ps, ret); session->internals.resumed_security_parameters.grp = - _gnutls_id_to_group(ret); + _gnutls_id_to_group(ret); /* it can be null */ BUFFER_POP_NUM(ps, - session->internals.resumed_security_parameters. - server_sign_algo); - BUFFER_POP_NUM(ps, - session->internals.resumed_security_parameters. - client_sign_algo); + session->internals.resumed_security_parameters + .server_sign_algo); BUFFER_POP_NUM(ps, - session->internals.resumed_security_parameters. - ext_master_secret); + session->internals.resumed_security_parameters + .client_sign_algo); BUFFER_POP_NUM(ps, - session->internals.resumed_security_parameters. - etm); - - if (session->internals.resumed_security_parameters. - max_record_recv_size == 0 - || session->internals.resumed_security_parameters. - max_record_send_size == 0) { + session->internals.resumed_security_parameters + .ext_master_secret); + BUFFER_POP_NUM( + ps, session->internals.resumed_security_parameters.etm); + + if (session->internals.resumed_security_parameters + .max_record_recv_size == 0 || + session->internals.resumed_security_parameters + .max_record_send_size == 0) { return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); } } ret = 0; - error: +error: return ret; } @@ -1115,15 +1091,14 @@ unpack_security_parameters(gnutls_session_t session, gnutls_buffer_st * ps) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise * an error code is returned. **/ -int -gnutls_session_set_premaster(gnutls_session_t session, unsigned int entity, - gnutls_protocol_t version, - gnutls_kx_algorithm_t kx, - gnutls_cipher_algorithm_t cipher, - gnutls_mac_algorithm_t mac, - gnutls_compression_method_t comp, - const gnutls_datum_t * master, - const gnutls_datum_t * session_id) +int gnutls_session_set_premaster(gnutls_session_t session, unsigned int entity, + gnutls_protocol_t version, + gnutls_kx_algorithm_t kx, + gnutls_cipher_algorithm_t cipher, + gnutls_mac_algorithm_t mac, + gnutls_compression_method_t comp, + const gnutls_datum_t *master, + const gnutls_datum_t *session_id) { int ret; uint8_t cs[2]; @@ -1138,27 +1113,27 @@ gnutls_session_set_premaster(gnutls_session_t session, unsigned int entity, return gnutls_assert_val(ret); session->internals.resumed_security_parameters.cs = - ciphersuite_to_entry(cs); + ciphersuite_to_entry(cs); if (session->internals.resumed_security_parameters.cs == NULL) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); session->internals.resumed_security_parameters.client_ctype = - DEFAULT_CERT_TYPE; + DEFAULT_CERT_TYPE; session->internals.resumed_security_parameters.server_ctype = - DEFAULT_CERT_TYPE; + DEFAULT_CERT_TYPE; session->internals.resumed_security_parameters.pversion = - version_to_entry(version); + version_to_entry(version); if (session->internals.resumed_security_parameters.pversion == NULL) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - if (session->internals.resumed_security_parameters. - pversion->selectable_prf) - session->internals.resumed_security_parameters.prf = - mac_to_entry(session->internals. - resumed_security_parameters.cs->prf); + if (session->internals.resumed_security_parameters.pversion + ->selectable_prf) + session->internals.resumed_security_parameters + .prf = mac_to_entry( + session->internals.resumed_security_parameters.cs->prf); else session->internals.resumed_security_parameters.prf = - mac_to_entry(GNUTLS_MAC_MD5_SHA1); + mac_to_entry(GNUTLS_MAC_MD5_SHA1); if (session->internals.resumed_security_parameters.prf == NULL) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); @@ -1172,16 +1147,16 @@ gnutls_session_set_premaster(gnutls_session_t session, unsigned int entity, return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); session->internals.resumed_security_parameters.session_id_size = - session_id->size; + session_id->size; memcpy(session->internals.resumed_security_parameters.session_id, session_id->data, session_id->size); session->internals.resumed_security_parameters.max_record_send_size = - session->internals.resumed_security_parameters. - max_record_recv_size = DEFAULT_MAX_RECORD_SIZE; + session->internals.resumed_security_parameters + .max_record_recv_size = DEFAULT_MAX_RECORD_SIZE; session->internals.resumed_security_parameters.timestamp = - gnutls_time(0); + gnutls_time(0); session->internals.resumed_security_parameters.grp = 0; diff --git a/lib/session_pack.h b/lib/session_pack.h index 8a8de00688..0ad31ac509 100644 --- a/lib/session_pack.h +++ b/lib/session_pack.h @@ -21,11 +21,11 @@ */ #ifndef GNUTLS_LIB_SESSION_PACK_H -# define GNUTLS_LIB_SESSION_PACK_H +#define GNUTLS_LIB_SESSION_PACK_H int _gnutls_session_pack(gnutls_session_t session, - gnutls_datum_t * packed_session); + gnutls_datum_t *packed_session); int _gnutls_session_unpack(gnutls_session_t session, - const gnutls_datum_t * packed_session); + const gnutls_datum_t *packed_session); -#endif /* GNUTLS_LIB_SESSION_PACK_H */ +#endif /* GNUTLS_LIB_SESSION_PACK_H */ diff --git a/lib/srp.c b/lib/srp.c index ae2024cd06..7a33b459ae 100644 --- a/lib/srp.c +++ b/lib/srp.c @@ -28,23 +28,22 @@ #ifdef ENABLE_SRP -# include "srp.h" -# include -# include -# include -# include -# include -# include +#include "srp.h" +#include +#include +#include +#include +#include +#include -# include "debug.h" -# include "attribute.h" +#include "debug.h" +#include "attribute.h" /* Here functions for SRP (like g^x mod n) are defined */ -static int -_gnutls_srp_gx(uint8_t * text, size_t textsize, uint8_t ** result, - bigint_t g, bigint_t prime) +static int _gnutls_srp_gx(uint8_t *text, size_t textsize, uint8_t **result, + bigint_t g, bigint_t prime) { bigint_t x, e = NULL; size_t result_size; @@ -82,12 +81,11 @@ _gnutls_srp_gx(uint8_t * text, size_t textsize, uint8_t ** result, ret = GNUTLS_E_MPI_PRINT_FAILED; } - cleanup: +cleanup: _gnutls_mpi_release(&e); _gnutls_mpi_release(&x); return ret; - } /**************** @@ -95,8 +93,7 @@ _gnutls_srp_gx(uint8_t * text, size_t textsize, uint8_t ** result, * where k == SHA1(N|g) * Return: B and if ret_b is not NULL b. */ -bigint_t -_gnutls_calc_srp_B(bigint_t * ret_b, bigint_t g, bigint_t n, bigint_t v) +bigint_t _gnutls_calc_srp_B(bigint_t *ret_b, bigint_t g, bigint_t n, bigint_t v) { bigint_t tmpB = NULL, tmpV = NULL; bigint_t b = NULL, B = NULL, k = NULL; @@ -145,14 +142,13 @@ _gnutls_calc_srp_B(bigint_t * ret_b, bigint_t g, bigint_t n, bigint_t v) return B; - error: +error: _gnutls_mpi_release(&b); _gnutls_mpi_release(&B); _gnutls_mpi_release(&k); _gnutls_mpi_release(&tmpB); _gnutls_mpi_release(&tmpV); return NULL; - } /* This calculates the SHA1(A | B) @@ -174,7 +170,7 @@ bigint_t _gnutls_calc_srp_u(bigint_t A, bigint_t B, bigint_t n) if (a_size > n_size || b_size > n_size) { gnutls_assert(); - return NULL; /* internal error */ + return NULL; /* internal error */ } holder_size = n_size + n_size; @@ -195,7 +191,7 @@ bigint_t _gnutls_calc_srp_u(bigint_t A, bigint_t B, bigint_t n) /* convert the bytes of hd to integer */ - hash_size = 20; /* SHA */ + hash_size = 20; /* SHA */ ret = _gnutls_mpi_init_scan_nz(&res, hd, hash_size); gnutls_free(holder); @@ -210,8 +206,8 @@ bigint_t _gnutls_calc_srp_u(bigint_t A, bigint_t B, bigint_t n) /* S = (A * v^u) ^ b % N * this is our shared key (server premaster secret) */ -bigint_t -_gnutls_calc_srp_S1(bigint_t A, bigint_t b, bigint_t u, bigint_t v, bigint_t n) +bigint_t _gnutls_calc_srp_S1(bigint_t A, bigint_t b, bigint_t u, bigint_t v, + bigint_t n) { bigint_t tmp1 = NULL, tmp2 = NULL; bigint_t S = NULL; @@ -240,7 +236,7 @@ _gnutls_calc_srp_S1(bigint_t A, bigint_t b, bigint_t u, bigint_t v, bigint_t n) return S; - error: +error: _gnutls_mpi_release(&S); _gnutls_mpi_release(&tmp1); _gnutls_mpi_release(&tmp2); @@ -250,7 +246,7 @@ _gnutls_calc_srp_S1(bigint_t A, bigint_t b, bigint_t u, bigint_t v, bigint_t n) /* A = g^a % N * returns A and a (which is random) */ -bigint_t _gnutls_calc_srp_A(bigint_t * a, bigint_t g, bigint_t n) +bigint_t _gnutls_calc_srp_A(bigint_t *a, bigint_t g, bigint_t n) { bigint_t tmpa; bigint_t A; @@ -274,7 +270,7 @@ bigint_t _gnutls_calc_srp_A(bigint_t * a, bigint_t g, bigint_t n) _gnutls_mpi_release(&tmpa); return A; - error: +error: _gnutls_mpi_release(&tmpa); _gnutls_mpi_release(&A); return NULL; @@ -283,10 +279,9 @@ bigint_t _gnutls_calc_srp_A(bigint_t * a, bigint_t g, bigint_t n) /* generate x = SHA(s | SHA(U | ":" | p)) * The output is exactly 20 bytes */ -static int -_gnutls_calc_srp_sha(const char *username, const char *_password, - uint8_t * salt, int salt_size, size_t *size, - void *digest, unsigned allow_invalid_pass) +static int _gnutls_calc_srp_sha(const char *username, const char *_password, + uint8_t *salt, int salt_size, size_t *size, + void *digest, unsigned allow_invalid_pass) { digest_hd_st td; uint8_t res[MAX_HASH_SIZE]; @@ -297,9 +292,8 @@ _gnutls_calc_srp_sha(const char *username, const char *_password, *size = 20; - ret = - _gnutls_utf8_password_normalize(_password, strlen(_password), &pout, - allow_invalid_pass); + ret = _gnutls_utf8_password_normalize(_password, strlen(_password), + &pout, allow_invalid_pass); if (ret < 0) return gnutls_assert_val(ret); password = (char *)pout.data; @@ -322,31 +316,28 @@ _gnutls_calc_srp_sha(const char *username, const char *_password, } _gnutls_hash(&td, salt, salt_size); - _gnutls_hash(&td, res, 20); /* 20 bytes is the output of sha1 */ + _gnutls_hash(&td, res, 20); /* 20 bytes is the output of sha1 */ _gnutls_hash_deinit(&td, digest); ret = 0; - cleanup: +cleanup: gnutls_free(password); return ret; } -int -_gnutls_calc_srp_x(char *username, char *password, uint8_t * salt, - size_t salt_size, size_t *size, void *digest) +int _gnutls_calc_srp_x(char *username, char *password, uint8_t *salt, + size_t salt_size, size_t *size, void *digest) { - - return _gnutls_calc_srp_sha(username, password, salt, - salt_size, size, digest, 1); + return _gnutls_calc_srp_sha(username, password, salt, salt_size, size, + digest, 1); } /* S = (B - k*g^x) ^ (a + u * x) % N * this is our shared key (client premaster secret) */ -bigint_t -_gnutls_calc_srp_S2(bigint_t B, bigint_t g, bigint_t x, bigint_t a, - bigint_t u, bigint_t n) +bigint_t _gnutls_calc_srp_S2(bigint_t B, bigint_t g, bigint_t x, bigint_t a, + bigint_t u, bigint_t n) { bigint_t S = NULL, tmp1 = NULL, tmp2 = NULL; bigint_t tmp4 = NULL, tmp3 = NULL, k = NULL; @@ -362,13 +353,13 @@ _gnutls_calc_srp_S2(bigint_t B, bigint_t g, bigint_t x, bigint_t a, goto freeall; } - ret = _gnutls_mpi_powm(tmp1, g, x, n); /* g^x */ + ret = _gnutls_mpi_powm(tmp1, g, x, n); /* g^x */ if (ret < 0) { gnutls_assert(); goto freeall; } - ret = _gnutls_mpi_mulm(tmp3, tmp1, k, n); /* k*g^x mod n */ + ret = _gnutls_mpi_mulm(tmp3, tmp1, k, n); /* k*g^x mod n */ if (ret < 0) { gnutls_assert(); goto freeall; @@ -406,7 +397,7 @@ _gnutls_calc_srp_S2(bigint_t B, bigint_t g, bigint_t x, bigint_t a, return S; - freeall: +freeall: _gnutls_mpi_release(&k); _gnutls_mpi_release(&tmp1); _gnutls_mpi_release(&tmp2); @@ -438,7 +429,7 @@ void gnutls_srp_free_client_credentials(gnutls_srp_client_credentials_t sc) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, or an * error code. **/ -int gnutls_srp_allocate_client_credentials(gnutls_srp_client_credentials_t * sc) +int gnutls_srp_allocate_client_credentials(gnutls_srp_client_credentials_t *sc) { *sc = gnutls_calloc(1, sizeof(srp_client_credentials_st)); @@ -464,11 +455,10 @@ int gnutls_srp_allocate_client_credentials(gnutls_srp_client_credentials_t * sc) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, or an * error code. **/ -int -gnutls_srp_set_client_credentials(gnutls_srp_client_credentials_t res, - const char *username, const char *password) +int gnutls_srp_set_client_credentials(gnutls_srp_client_credentials_t res, + const char *username, + const char *password) { - if (username == NULL || password == NULL) { gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; @@ -505,13 +495,13 @@ void gnutls_srp_free_server_credentials(gnutls_srp_server_credentials_t sc) * gnutls_srp_set_server_fake_salt_seed() is not called to set * a seed. */ -# define DEFAULT_FAKE_SALT_SEED_SIZE 20 +#define DEFAULT_FAKE_SALT_SEED_SIZE 20 /* Size of the fake salts generated if * gnutls_srp_set_server_fake_salt_seed() is not called to set * another size. */ -# define DEFAULT_FAKE_SALT_SIZE 16 +#define DEFAULT_FAKE_SALT_SIZE 16 /** * gnutls_srp_allocate_server_credentials: @@ -522,7 +512,7 @@ void gnutls_srp_free_server_credentials(gnutls_srp_server_credentials_t sc) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, or an * error code. **/ -int gnutls_srp_allocate_server_credentials(gnutls_srp_server_credentials_t * sc) +int gnutls_srp_allocate_server_credentials(gnutls_srp_server_credentials_t *sc) { int ret; *sc = gnutls_calloc(1, sizeof(srp_server_cred_st)); @@ -542,7 +532,7 @@ int gnutls_srp_allocate_server_credentials(gnutls_srp_server_credentials_t * sc) (*sc)->fake_salt_length = DEFAULT_FAKE_SALT_SIZE; return 0; - cleanup: +cleanup: gnutls_free(*sc); return ret; } @@ -561,12 +551,10 @@ int gnutls_srp_allocate_server_credentials(gnutls_srp_server_credentials_t * sc) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, or an * error code. **/ -int -gnutls_srp_set_server_credentials_file(gnutls_srp_server_credentials_t res, - const char *password_file, - const char *password_conf_file) +int gnutls_srp_set_server_credentials_file(gnutls_srp_server_credentials_t res, + const char *password_file, + const char *password_conf_file) { - if (password_file == NULL || password_conf_file == NULL) { gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; @@ -633,11 +621,9 @@ gnutls_srp_set_server_credentials_file(gnutls_srp_server_credentials_t res, * The callback function should return 0 on success, while * -1 indicates an error. **/ -void -gnutls_srp_set_server_credentials_function(gnutls_srp_server_credentials_t - cred, - gnutls_srp_server_credentials_function - * func) +void gnutls_srp_set_server_credentials_function( + gnutls_srp_server_credentials_t cred, + gnutls_srp_server_credentials_function *func) { cred->pwd_callback = func; } @@ -670,11 +656,9 @@ gnutls_srp_set_server_credentials_function(gnutls_srp_server_credentials_t * The callback function should return 0 on success. * -1 indicates an error. **/ -void -gnutls_srp_set_client_credentials_function(gnutls_srp_client_credentials_t - cred, - gnutls_srp_client_credentials_function - * func) +void gnutls_srp_set_client_credentials_function( + gnutls_srp_client_credentials_t cred, + gnutls_srp_client_credentials_function *func) { cred->get_function = func; } @@ -720,19 +704,18 @@ const char *gnutls_srp_server_get_username(gnutls_session_t session) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, or an * error code. **/ -int -gnutls_srp_verifier(const char *username, const char *password, - const gnutls_datum_t * salt, - const gnutls_datum_t * generator, - const gnutls_datum_t * prime, gnutls_datum_t * res) +int gnutls_srp_verifier(const char *username, const char *password, + const gnutls_datum_t *salt, + const gnutls_datum_t *generator, + const gnutls_datum_t *prime, gnutls_datum_t *res) { bigint_t _n, _g; int ret; size_t digest_size = 20, size; uint8_t digest[20]; - ret = _gnutls_calc_srp_sha(username, password, salt->data, - salt->size, &digest_size, digest, 0); + ret = _gnutls_calc_srp_sha(username, password, salt->data, salt->size, + &digest_size, digest, 0); if (ret < 0) { gnutls_assert(); return ret; @@ -818,10 +801,9 @@ void gnutls_srp_set_prime_bits(gnutls_session_t session, unsigned int bits) * * Since: 3.3.0 **/ -void -gnutls_srp_set_server_fake_salt_seed(gnutls_srp_server_credentials_t cred, - const gnutls_datum_t * seed, - unsigned int salt_length) +void gnutls_srp_set_server_fake_salt_seed(gnutls_srp_server_credentials_t cred, + const gnutls_datum_t *seed, + unsigned int salt_length) { unsigned seed_size = seed->size; const unsigned char *seed_data = seed->data; @@ -839,100 +821,86 @@ gnutls_srp_set_server_fake_salt_seed(gnutls_srp_server_credentials_t cred, const size_t mac_len = me->output_size; cred->fake_salt_length = - (salt_length < mac_len ? salt_length : mac_len); + (salt_length < mac_len ? salt_length : mac_len); } #else -void gnutls_srp_free_client_credentials(gnutls_srp_client_credentials_t sc - MAYBE_UNUSED) +void gnutls_srp_free_client_credentials( + gnutls_srp_client_credentials_t sc MAYBE_UNUSED) { } -int -gnutls_srp_allocate_client_credentials(gnutls_srp_client_credentials_t * - sc MAYBE_UNUSED) +int gnutls_srp_allocate_client_credentials( + gnutls_srp_client_credentials_t *sc MAYBE_UNUSED) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int -gnutls_srp_set_client_credentials(gnutls_srp_client_credentials_t res - MAYBE_UNUSED, - const char *username MAYBE_UNUSED, - const char *password MAYBE_UNUSED) +int gnutls_srp_set_client_credentials( + gnutls_srp_client_credentials_t res MAYBE_UNUSED, + const char *username MAYBE_UNUSED, const char *password MAYBE_UNUSED) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -void -gnutls_srp_free_server_credentials(gnutls_srp_server_credentials_t sc - MAYBE_UNUSED) +void gnutls_srp_free_server_credentials( + gnutls_srp_server_credentials_t sc MAYBE_UNUSED) { } -int -gnutls_srp_allocate_server_credentials(gnutls_srp_server_credentials_t * - sc MAYBE_UNUSED) +int gnutls_srp_allocate_server_credentials( + gnutls_srp_server_credentials_t *sc MAYBE_UNUSED) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int -gnutls_srp_set_server_credentials_file(gnutls_srp_server_credentials_t res - MAYBE_UNUSED, - const char *password_file MAYBE_UNUSED, - const char *password_conf_file - MAYBE_UNUSED) +int gnutls_srp_set_server_credentials_file( + gnutls_srp_server_credentials_t res MAYBE_UNUSED, + const char *password_file MAYBE_UNUSED, + const char *password_conf_file MAYBE_UNUSED) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -void -gnutls_srp_set_server_credentials_function(gnutls_srp_server_credentials_t cred - MAYBE_UNUSED, - gnutls_srp_server_credentials_function - * func MAYBE_UNUSED) +void gnutls_srp_set_server_credentials_function( + gnutls_srp_server_credentials_t cred MAYBE_UNUSED, + gnutls_srp_server_credentials_function *func MAYBE_UNUSED) { } -void -gnutls_srp_set_client_credentials_function(gnutls_srp_client_credentials_t cred - MAYBE_UNUSED, - gnutls_srp_client_credentials_function - * func MAYBE_UNUSED) +void gnutls_srp_set_client_credentials_function( + gnutls_srp_client_credentials_t cred MAYBE_UNUSED, + gnutls_srp_client_credentials_function *func MAYBE_UNUSED) { } -const char *gnutls_srp_server_get_username(gnutls_session_t session - MAYBE_UNUSED) +const char * +gnutls_srp_server_get_username(gnutls_session_t session MAYBE_UNUSED) { return NULL; } -int -gnutls_srp_verifier(const char *username MAYBE_UNUSED, - const char *password MAYBE_UNUSED, - const gnutls_datum_t * salt MAYBE_UNUSED, - const gnutls_datum_t * generator MAYBE_UNUSED, - const gnutls_datum_t * prime MAYBE_UNUSED, - gnutls_datum_t * res MAYBE_UNUSED) +int gnutls_srp_verifier(const char *username MAYBE_UNUSED, + const char *password MAYBE_UNUSED, + const gnutls_datum_t *salt MAYBE_UNUSED, + const gnutls_datum_t *generator MAYBE_UNUSED, + const gnutls_datum_t *prime MAYBE_UNUSED, + gnutls_datum_t *res MAYBE_UNUSED) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -void -gnutls_srp_set_prime_bits(gnutls_session_t session MAYBE_UNUSED, - unsigned int bits MAYBE_UNUSED) +void gnutls_srp_set_prime_bits(gnutls_session_t session MAYBE_UNUSED, + unsigned int bits MAYBE_UNUSED) { } -void -gnutls_srp_set_server_fake_salt_seed(gnutls_srp_server_credentials_t cred - MAYBE_UNUSED, - const gnutls_datum_t * seed MAYBE_UNUSED, - unsigned int salt_length MAYBE_UNUSED) +void gnutls_srp_set_server_fake_salt_seed( + gnutls_srp_server_credentials_t cred MAYBE_UNUSED, + const gnutls_datum_t *seed MAYBE_UNUSED, + unsigned int salt_length MAYBE_UNUSED) { } -#endif /* ENABLE_SRP */ +#endif /* ENABLE_SRP */ diff --git a/lib/srp.h b/lib/srp.h index 5a03e7bb0e..5a0a742c9d 100644 --- a/lib/srp.h +++ b/lib/srp.h @@ -21,27 +21,27 @@ */ #ifndef GNUTLS_LIB_SRP_H -# define GNUTLS_LIB_SRP_H +#define GNUTLS_LIB_SRP_H -# include +#include -# ifdef ENABLE_SRP +#ifdef ENABLE_SRP -bigint_t _gnutls_calc_srp_B(bigint_t * ret_b, bigint_t g, bigint_t n, +bigint_t _gnutls_calc_srp_B(bigint_t *ret_b, bigint_t g, bigint_t n, bigint_t v); bigint_t _gnutls_calc_srp_u(bigint_t A, bigint_t B, bigint_t N); -bigint_t _gnutls_calc_srp_S1(bigint_t A, bigint_t b, bigint_t u, - bigint_t v, bigint_t n); -bigint_t _gnutls_calc_srp_A(bigint_t * a, bigint_t g, bigint_t n); -bigint_t _gnutls_calc_srp_S2(bigint_t B, bigint_t g, bigint_t x, - bigint_t a, bigint_t u, bigint_t n); -int _gnutls_calc_srp_x(char *username, char *password, uint8_t * salt, +bigint_t _gnutls_calc_srp_S1(bigint_t A, bigint_t b, bigint_t u, bigint_t v, + bigint_t n); +bigint_t _gnutls_calc_srp_A(bigint_t *a, bigint_t g, bigint_t n); +bigint_t _gnutls_calc_srp_S2(bigint_t B, bigint_t g, bigint_t x, bigint_t a, + bigint_t u, bigint_t n); +int _gnutls_calc_srp_x(char *username, char *password, uint8_t *salt, size_t salt_size, size_t *size, void *digest); -int _gnutls_srp_gn(uint8_t ** ret_g, uint8_t ** ret_n, int bits); +int _gnutls_srp_gn(uint8_t **ret_g, uint8_t **ret_n, int bits); /* g is defined to be 2 */ -# define SRP_MAX_HASH_SIZE 24 +#define SRP_MAX_HASH_SIZE 24 -# endif +#endif -#endif /* GNUTLS_LIB_SRP_H */ +#endif /* GNUTLS_LIB_SRP_H */ diff --git a/lib/sslv2_compat.c b/lib/sslv2_compat.c index f80431e235..17a2d79e0a 100644 --- a/lib/sslv2_compat.c +++ b/lib/sslv2_compat.c @@ -42,17 +42,17 @@ #ifdef ENABLE_SSL2 /* This selects the best supported ciphersuite from the ones provided */ -static int -_gnutls_handshake_select_v2_suite(gnutls_session_t session, - uint8_t * data, unsigned int datalen) +static int _gnutls_handshake_select_v2_suite(gnutls_session_t session, + uint8_t *data, + unsigned int datalen) { unsigned int i, j; int ret; uint8_t *_data; int _datalen; - _gnutls_handshake_log - ("HSK[%p]: Parsing a version 2.0 client hello.\n", session); + _gnutls_handshake_log("HSK[%p]: Parsing a version 2.0 client hello.\n", + session); if (datalen % 3 != 0) { gnutls_assert(); @@ -78,15 +78,13 @@ _gnutls_handshake_select_v2_suite(gnutls_session_t session, gnutls_free(_data); return ret; - } /* Read a v2 client hello. Some browsers still use that beast! * However they set their version to 3.0 or 3.1. */ -int -_gnutls_read_client_hello_v2(gnutls_session_t session, uint8_t * data, - unsigned int len) +int _gnutls_read_client_hello_v2(gnutls_session_t session, uint8_t *data, + unsigned int len) { uint16_t session_id_len = 0; int pos = 0; @@ -100,9 +98,9 @@ _gnutls_read_client_hello_v2(gnutls_session_t session, uint8_t * data, DECR_LEN(len, 2); - _gnutls_handshake_log - ("HSK[%p]: SSL 2.0 Hello: Client's version: %d.%d\n", session, - data[pos], data[pos + 1]); + _gnutls_handshake_log( + "HSK[%p]: SSL 2.0 Hello: Client's version: %d.%d\n", session, + data[pos], data[pos + 1]); major = data[pos]; minor = data[pos + 1]; @@ -162,9 +160,8 @@ _gnutls_read_client_hello_v2(gnutls_session_t session, uint8_t * data, /* find an appropriate cipher suite */ DECR_LEN(len, sizeOfSuites); - ret = - _gnutls_handshake_select_v2_suite(session, &data[pos], - sizeOfSuites); + ret = _gnutls_handshake_select_v2_suite(session, &data[pos], + sizeOfSuites); pos += sizeOfSuites; if (ret < 0) { @@ -174,8 +171,9 @@ _gnutls_read_client_hello_v2(gnutls_session_t session, uint8_t * data, /* check if the credentials (username, public key etc.) are ok */ - if (_gnutls_get_kx_cred - (session, session->security_parameters.cs->kx_algorithm) == NULL) { + if (_gnutls_get_kx_cred( + session, session->security_parameters.cs->kx_algorithm) == + NULL) { gnutls_assert(); return GNUTLS_E_INSUFFICIENT_CREDENTIALS; } @@ -184,21 +182,19 @@ _gnutls_read_client_hello_v2(gnutls_session_t session, uint8_t * data, * according to the KX algorithm. This is needed since all the * handshake functions are read from there; */ - session->internals.auth_struct = - _gnutls_kx_auth_struct(session->security_parameters. - cs->kx_algorithm); + session->internals.auth_struct = _gnutls_kx_auth_struct( + session->security_parameters.cs->kx_algorithm); if (session->internals.auth_struct == NULL) { - - _gnutls_handshake_log - ("HSK[%p]: SSL 2.0 Hello: Cannot find the appropriate handler for the KX algorithm\n", - session); + _gnutls_handshake_log( + "HSK[%p]: SSL 2.0 Hello: Cannot find the appropriate handler for the KX algorithm\n", + session); gnutls_assert(); return GNUTLS_E_INTERNAL_ERROR; } /* read random new values -skip session id for now */ - DECR_LEN(len, session_id_len); /* skip session id for now */ + DECR_LEN(len, session_id_len); /* skip session id for now */ memcpy(session_id, &data[pos], session_id_len); pos += session_id_len; @@ -219,28 +215,26 @@ _gnutls_read_client_hello_v2(gnutls_session_t session, uint8_t * data, /* RESUME SESSION */ DECR_LEN(len, session_id_len); - ret = - _gnutls_server_restore_session(session, session_id, session_id_len); + ret = _gnutls_server_restore_session(session, session_id, + session_id_len); - if (ret == 0) { /* resumed! */ + if (ret == 0) { /* resumed! */ /* get the new random values */ - memcpy(session->internals.resumed_security_parameters. - server_random, + memcpy(session->internals.resumed_security_parameters + .server_random, session->security_parameters.server_random, GNUTLS_RANDOM_SIZE); - memcpy(session->internals.resumed_security_parameters. - client_random, + memcpy(session->internals.resumed_security_parameters + .client_random, session->security_parameters.client_random, GNUTLS_RANDOM_SIZE); session->internals.resumed = true; return 0; } else { - ret = - _gnutls_generate_session_id(session-> - security_parameters.session_id, - &session-> - security_parameters.session_id_size); + ret = _gnutls_generate_session_id( + session->security_parameters.session_id, + &session->security_parameters.session_id_size); if (ret < 0) return gnutls_assert_val(ret); diff --git a/lib/sslv2_compat.h b/lib/sslv2_compat.h index 15405febe4..f9821b4173 100644 --- a/lib/sslv2_compat.h +++ b/lib/sslv2_compat.h @@ -21,9 +21,9 @@ */ #ifndef GNUTLS_LIB_SSLV2_COMPAT_H -# define GNUTLS_LIB_SSLV2_COMPAT_H +#define GNUTLS_LIB_SSLV2_COMPAT_H -int _gnutls_read_client_hello_v2(gnutls_session_t session, uint8_t * data, +int _gnutls_read_client_hello_v2(gnutls_session_t session, uint8_t *data, unsigned int datalen); -#endif /* GNUTLS_LIB_SSLV2_COMPAT_H */ +#endif /* GNUTLS_LIB_SSLV2_COMPAT_H */ diff --git a/lib/state.c b/lib/state.c index 5d732b0f17..bc6e6bf99b 100644 --- a/lib/state.c +++ b/lib/state.c @@ -62,9 +62,8 @@ unsigned _gnutls_disable_tls13 = 0; /* These should really be static, but src/tests.c calls them. Make them public functions? */ -void -_gnutls_rsa_pms_set_version(gnutls_session_t session, - unsigned char major, unsigned char minor); +void _gnutls_rsa_pms_set_version(gnutls_session_t session, unsigned char major, + unsigned char minor); /** * gnutls_cipher_get: @@ -106,12 +105,13 @@ gnutls_cipher_algorithm_t gnutls_early_cipher_get(gnutls_session_t session) return gnutls_assert_val(GNUTLS_CIPHER_UNKNOWN); } - if (unlikely(session->internals.resumed_security_parameters.cs == NULL)) { + if (unlikely(session->internals.resumed_security_parameters.cs == + NULL)) { return gnutls_assert_val(GNUTLS_CIPHER_UNKNOWN); } - ce = cipher_to_entry(session->internals.resumed_security_parameters. - cs->block_algorithm); + ce = cipher_to_entry(session->internals.resumed_security_parameters.cs + ->block_algorithm); if (unlikely(ce == NULL)) { return gnutls_assert_val(GNUTLS_CIPHER_UNKNOWN); } @@ -197,7 +197,7 @@ gnutls_kx_algorithm_t gnutls_kx_get(gnutls_session_t session) if (session->security_parameters.cs == 0) return 0; - if (session->security_parameters.cs->kx_algorithm == 0) { /* TLS 1.3 */ + if (session->security_parameters.cs->kx_algorithm == 0) { /* TLS 1.3 */ const version_entry_st *ver = get_version(session); const gnutls_group_entry_st *group = get_group(session); @@ -280,7 +280,7 @@ gnutls_digest_algorithm_t gnutls_prf_hash_get(const gnutls_session_t session) if (session->security_parameters.prf->id >= GNUTLS_MAC_AEAD) return gnutls_assert_val(GNUTLS_DIG_UNKNOWN); - return (gnutls_digest_algorithm_t) session->security_parameters.prf->id; + return (gnutls_digest_algorithm_t)session->security_parameters.prf->id; } /** @@ -302,19 +302,18 @@ gnutls_early_prf_hash_get(const gnutls_session_t session) return gnutls_assert_val(GNUTLS_DIG_UNKNOWN); } - if (unlikely - (session->internals.resumed_security_parameters.prf == NULL)) { + if (unlikely(session->internals.resumed_security_parameters.prf == + NULL)) { return gnutls_assert_val(GNUTLS_DIG_UNKNOWN); } - if (unlikely - (session->internals.resumed_security_parameters.prf->id >= - GNUTLS_MAC_AEAD)) { + if (unlikely(session->internals.resumed_security_parameters.prf->id >= + GNUTLS_MAC_AEAD)) { return gnutls_assert_val(GNUTLS_DIG_UNKNOWN); } - return (gnutls_digest_algorithm_t) session->internals. - resumed_security_parameters.prf->id; + return (gnutls_digest_algorithm_t) + session->internals.resumed_security_parameters.prf->id; } /** @@ -365,8 +364,8 @@ static bool _gnutls_has_cert_credentials(gnutls_session_t session, /* First, check for certificate credentials. If we have no certificate * credentials set then we don't support certificates at all. */ - cred = (gnutls_certificate_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_CERTIFICATE); + cred = (gnutls_certificate_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_CERTIFICATE); if (cred == NULL) return false; @@ -389,7 +388,7 @@ static bool _gnutls_has_cert_credentials(gnutls_session_t session, } } - return true; // OK + return true; // OK } /* Check if the given certificate type is supported. @@ -397,11 +396,10 @@ static bool _gnutls_has_cert_credentials(gnutls_session_t session, * and in some cases a matching certificate exists. A check for * the latter can be toggled via the parameter @check_credentials. */ -bool -_gnutls_session_is_cert_type_supported(gnutls_session_t session, - gnutls_certificate_type_t cert_type, - bool check_credentials, - gnutls_ctype_target_t target) +bool _gnutls_session_is_cert_type_supported(gnutls_session_t session, + gnutls_certificate_type_t cert_type, + bool check_credentials, + gnutls_ctype_target_t target) { unsigned i; priority_st *ctype_priorities; @@ -413,9 +411,8 @@ _gnutls_session_is_cert_type_supported(gnutls_session_t session, // Perform a credentials check if requested if (check_credentials) { if (!_gnutls_has_cert_credentials(session, cert_type)) - return - gnutls_assert_val - (GNUTLS_E_UNSUPPORTED_CERTIFICATE_TYPE); + return gnutls_assert_val( + GNUTLS_E_UNSUPPORTED_CERTIFICATE_TYPE); } /* So far so good. We have the required credentials (if needed). @@ -426,19 +423,19 @@ _gnutls_session_is_cert_type_supported(gnutls_session_t session, switch (target) { case GNUTLS_CTYPE_CLIENT: ctype_priorities = - &(session->internals.priorities->client_ctype); + &(session->internals.priorities->client_ctype); break; case GNUTLS_CTYPE_SERVER: ctype_priorities = - &(session->internals.priorities->server_ctype); + &(session->internals.priorities->server_ctype); break; default: return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); } // No explicit priorities set, and default ctype is asked - if (ctype_priorities->num_priorities == 0 - && cert_type == DEFAULT_CERT_TYPE) + if (ctype_priorities->num_priorities == 0 && + cert_type == DEFAULT_CERT_TYPE) return 0; /* Now lets find out whether our cert type is in our priority @@ -570,7 +567,7 @@ void _gnutls_handshake_internal_state_clear(gnutls_session_t session) * * Returns: %GNUTLS_E_SUCCESS on success, or an error code. **/ -int gnutls_init(gnutls_session_t * session, unsigned int flags) +int gnutls_init(gnutls_session_t *session, unsigned int flags) { int ret; @@ -591,16 +588,16 @@ int gnutls_init(gnutls_session_t * session, unsigned int flags) ret = gnutls_mutex_init(&(*session)->internals.epoch_lock); if (ret < 0) { gnutls_assert(); - gnutls_mutex_deinit(&(*session)-> - internals.post_negotiation_lock); + gnutls_mutex_deinit( + &(*session)->internals.post_negotiation_lock); gnutls_free(*session); return ret; } ret = _gnutls_epoch_setup_next(*session, 1, NULL); if (ret < 0) { - gnutls_mutex_deinit(&(*session)-> - internals.post_negotiation_lock); + gnutls_mutex_deinit( + &(*session)->internals.post_negotiation_lock); gnutls_mutex_deinit(&(*session)->internals.epoch_lock); gnutls_free(*session); return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); @@ -608,7 +605,7 @@ int gnutls_init(gnutls_session_t * session, unsigned int flags) _gnutls_epoch_bump(*session); (*session)->security_parameters.entity = - (flags & GNUTLS_SERVER ? GNUTLS_SERVER : GNUTLS_CLIENT); + (flags & GNUTLS_SERVER ? GNUTLS_SERVER : GNUTLS_CLIENT); /* the default certificate type for TLS */ (*session)->security_parameters.client_ctype = DEFAULT_CERT_TYPE; @@ -642,28 +639,28 @@ int gnutls_init(gnutls_session_t * session, unsigned int flags) /* set the socket pointers to -1; */ - (*session)->internals.transport_recv_ptr = (gnutls_transport_ptr_t) - 1; - (*session)->internals.transport_send_ptr = (gnutls_transport_ptr_t) - 1; + (*session)->internals.transport_recv_ptr = (gnutls_transport_ptr_t)-1; + (*session)->internals.transport_send_ptr = (gnutls_transport_ptr_t)-1; /* set the default maximum record size for TLS */ (*session)->security_parameters.max_record_recv_size = - DEFAULT_MAX_RECORD_SIZE; + DEFAULT_MAX_RECORD_SIZE; (*session)->security_parameters.max_record_send_size = - DEFAULT_MAX_RECORD_SIZE; + DEFAULT_MAX_RECORD_SIZE; (*session)->security_parameters.max_user_record_recv_size = - DEFAULT_MAX_RECORD_SIZE; + DEFAULT_MAX_RECORD_SIZE; (*session)->security_parameters.max_user_record_send_size = - DEFAULT_MAX_RECORD_SIZE; + DEFAULT_MAX_RECORD_SIZE; /* set the default early data size for TLS */ if ((*session)->security_parameters.entity == GNUTLS_SERVER) { (*session)->security_parameters.max_early_data_size = - DEFAULT_MAX_EARLY_DATA_SIZE; + DEFAULT_MAX_EARLY_DATA_SIZE; } else { (*session)->security_parameters.max_early_data_size = - UINT32_MAX; + UINT32_MAX; } /* Everything else not initialized here is initialized as NULL @@ -672,15 +669,15 @@ int gnutls_init(gnutls_session_t * session, unsigned int flags) * runtime before being used. Mark such regions with a * valgrind client request as undefined. */ - _gnutls_memory_mark_undefined((*session)-> - security_parameters.master_secret, - GNUTLS_MASTER_SIZE); - _gnutls_memory_mark_undefined((*session)-> - security_parameters.client_random, - GNUTLS_RANDOM_SIZE); - _gnutls_memory_mark_undefined((*session)-> - security_parameters.server_random, - GNUTLS_RANDOM_SIZE); + _gnutls_memory_mark_undefined( + (*session)->security_parameters.master_secret, + GNUTLS_MASTER_SIZE); + _gnutls_memory_mark_undefined( + (*session)->security_parameters.client_random, + GNUTLS_RANDOM_SIZE); + _gnutls_memory_mark_undefined( + (*session)->security_parameters.server_random, + GNUTLS_RANDOM_SIZE); _gnutls_memory_mark_undefined((*session)->key.session_ticket_key, TICKET_MASTER_KEY_SIZE); _gnutls_memory_mark_undefined((*session)->key.previous_ticket_key, @@ -718,7 +715,8 @@ int gnutls_init(gnutls_session_t * session, unsigned int flags) } /* Enable useful extensions */ - if ((flags & GNUTLS_CLIENT) && !(flags & GNUTLS_NO_DEFAULT_EXTENSIONS)) { + if ((flags & GNUTLS_CLIENT) && + !(flags & GNUTLS_NO_DEFAULT_EXTENSIONS)) { #ifdef ENABLE_OCSP if (!(flags & GNUTLS_NO_STATUS_REQUEST)) gnutls_ocsp_status_request_enable_client(*session, NULL, @@ -841,42 +839,34 @@ int _gnutls_dh_set_peer_public(gnutls_session_t session, bigint_t public) int ret; switch (gnutls_auth_get_type(session)) { - case GNUTLS_CRD_ANON: - { - anon_auth_info_t info; - info = _gnutls_get_auth_info(session, GNUTLS_CRD_ANON); - if (info == NULL) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - - dh = &info->dh; - break; - } - case GNUTLS_CRD_PSK: - { - psk_auth_info_t info; - info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK); - if (info == NULL) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - - dh = &info->dh; - break; - } - case GNUTLS_CRD_CERTIFICATE: - { - cert_auth_info_t info; - - info = - _gnutls_get_auth_info(session, - GNUTLS_CRD_CERTIFICATE); - if (info == NULL) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - - dh = &info->dh; - break; - } + case GNUTLS_CRD_ANON: { + anon_auth_info_t info; + info = _gnutls_get_auth_info(session, GNUTLS_CRD_ANON); + if (info == NULL) + return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + + dh = &info->dh; + break; + } + case GNUTLS_CRD_PSK: { + psk_auth_info_t info; + info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK); + if (info == NULL) + return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + + dh = &info->dh; + break; + } + case GNUTLS_CRD_CERTIFICATE: { + cert_auth_info_t info; + + info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE); + if (info == NULL) + return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + + dh = &info->dh; + break; + } default: return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); } @@ -896,42 +886,34 @@ int _gnutls_dh_set_peer_public(gnutls_session_t session, bigint_t public) int _gnutls_dh_set_secret_bits(gnutls_session_t session, unsigned bits) { switch (gnutls_auth_get_type(session)) { - case GNUTLS_CRD_ANON: - { - anon_auth_info_t info; - info = _gnutls_get_auth_info(session, GNUTLS_CRD_ANON); - if (info == NULL) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - info->dh.secret_bits = bits; - break; - } - case GNUTLS_CRD_PSK: - { - psk_auth_info_t info; - info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK); - if (info == NULL) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - info->dh.secret_bits = bits; - break; - } - case GNUTLS_CRD_CERTIFICATE: - { - cert_auth_info_t info; - - info = - _gnutls_get_auth_info(session, - GNUTLS_CRD_CERTIFICATE); - if (info == NULL) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - - info->dh.secret_bits = bits; - break; - default: + case GNUTLS_CRD_ANON: { + anon_auth_info_t info; + info = _gnutls_get_auth_info(session, GNUTLS_CRD_ANON); + if (info == NULL) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - } + info->dh.secret_bits = bits; + break; + } + case GNUTLS_CRD_PSK: { + psk_auth_info_t info; + info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK); + if (info == NULL) + return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + info->dh.secret_bits = bits; + break; + } + case GNUTLS_CRD_CERTIFICATE: { + cert_auth_info_t info; + + info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE); + if (info == NULL) + return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + + info->dh.secret_bits = bits; + break; + default: + return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + } } return 0; @@ -939,49 +921,41 @@ int _gnutls_dh_set_secret_bits(gnutls_session_t session, unsigned bits) /* Sets the prime and the generator in the auth info structure. */ -int -_gnutls_dh_save_group(gnutls_session_t session, bigint_t gen, bigint_t prime) +int _gnutls_dh_save_group(gnutls_session_t session, bigint_t gen, + bigint_t prime) { dh_info_st *dh; int ret; switch (gnutls_auth_get_type(session)) { - case GNUTLS_CRD_ANON: - { - anon_auth_info_t info; - info = _gnutls_get_auth_info(session, GNUTLS_CRD_ANON); - if (info == NULL) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - - dh = &info->dh; - break; - } - case GNUTLS_CRD_PSK: - { - psk_auth_info_t info; - info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK); - if (info == NULL) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - - dh = &info->dh; - break; - } - case GNUTLS_CRD_CERTIFICATE: - { - cert_auth_info_t info; - - info = - _gnutls_get_auth_info(session, - GNUTLS_CRD_CERTIFICATE); - if (info == NULL) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - - dh = &info->dh; - break; - } + case GNUTLS_CRD_ANON: { + anon_auth_info_t info; + info = _gnutls_get_auth_info(session, GNUTLS_CRD_ANON); + if (info == NULL) + return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + + dh = &info->dh; + break; + } + case GNUTLS_CRD_PSK: { + psk_auth_info_t info; + info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK); + if (info == NULL) + return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + + dh = &info->dh; + break; + } + case GNUTLS_CRD_CERTIFICATE: { + cert_auth_info_t info; + + info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE); + if (info == NULL) + return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + + dh = &info->dh; + break; + } default: return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); } @@ -1026,8 +1000,8 @@ _gnutls_dh_save_group(gnutls_session_t session, bigint_t gen, bigint_t prime) * This function has no effect in clients, and in authentication * methods other than certificate with X.509 certificates. **/ -void -gnutls_certificate_send_x509_rdn_sequence(gnutls_session_t session, int status) +void gnutls_certificate_send_x509_rdn_sequence(gnutls_session_t session, + int status) { session->internals.ignore_rdn_sequence = status; } @@ -1042,9 +1016,9 @@ gnutls_certificate_send_x509_rdn_sequence(gnutls_session_t session, int status) * record packet (client hello). This function is only useful to people * that know TLS internals and want to debug other implementations. -*/ -void -_gnutls_record_set_default_version(gnutls_session_t session, - unsigned char major, unsigned char minor) +void _gnutls_record_set_default_version(gnutls_session_t session, + unsigned char major, + unsigned char minor) { session->internals.default_record_version[0] = major; session->internals.default_record_version[1] = minor; @@ -1060,9 +1034,8 @@ _gnutls_record_set_default_version(gnutls_session_t session, * record packet (client hello). This function is only useful to people * that know TLS internals and want to debug other implementations. -*/ -void -_gnutls_hello_set_default_version(gnutls_session_t session, - unsigned char major, unsigned char minor) +void _gnutls_hello_set_default_version(gnutls_session_t session, + unsigned char major, unsigned char minor) { session->internals.default_hello_version[0] = major; session->internals.default_hello_version[1] = minor; @@ -1083,8 +1056,8 @@ _gnutls_hello_set_default_version(gnutls_session_t session, * Enabling the private ciphersuites when talking to other than * gnutls servers and clients may cause interoperability problems. **/ -void -gnutls_handshake_set_private_extensions(gnutls_session_t session, int allow) +void gnutls_handshake_set_private_extensions(gnutls_session_t session, + int allow) { /* we have no private extensions */ return; @@ -1110,13 +1083,12 @@ int gnutls_session_is_resumed(gnutls_session_t session) if (session->security_parameters.session_id_size > 0 && session->security_parameters.session_id_size == - session->internals.resumed_security_parameters. - session_id_size - && memcmp(session->security_parameters.session_id, - session->internals.resumed_security_parameters. - session_id, - session->security_parameters.session_id_size) == - 0) + session->internals.resumed_security_parameters + .session_id_size && + memcmp(session->security_parameters.session_id, + session->internals.resumed_security_parameters + .session_id, + session->security_parameters.session_id_size) == 0) return 1; } else { if (session->internals.resumed) @@ -1156,8 +1128,8 @@ int _gnutls_session_is_psk(gnutls_session_t session) gnutls_kx_algorithm_t kx; kx = session->security_parameters.cs->kx_algorithm; - if (kx == GNUTLS_KX_PSK || kx == GNUTLS_KX_DHE_PSK - || kx == GNUTLS_KX_RSA_PSK) + if (kx == GNUTLS_KX_PSK || kx == GNUTLS_KX_DHE_PSK || + kx == GNUTLS_KX_RSA_PSK) return 1; return 0; @@ -1235,8 +1207,9 @@ void gnutls_session_set_ptr(gnutls_session_t session, void *ptr) * * Since: 3.4.6 **/ -void gnutls_session_set_verify_function - (gnutls_session_t session, gnutls_certificate_verify_function * func) { +void gnutls_session_set_verify_function( + gnutls_session_t session, gnutls_certificate_verify_function *func) +{ session->internals.verify_callback = func; } @@ -1274,9 +1247,8 @@ int gnutls_record_get_direction(gnutls_session_t session) * RSA PMS secret. This is only useful to clients, which want to * test server's capabilities. -*/ -void -_gnutls_rsa_pms_set_version(gnutls_session_t session, - unsigned char major, unsigned char minor) +void _gnutls_rsa_pms_set_version(gnutls_session_t session, unsigned char major, + unsigned char minor) { session->internals.rsa_pms_version[0] = major; session->internals.rsa_pms_version[1] = minor; @@ -1285,18 +1257,18 @@ _gnutls_rsa_pms_set_version(gnutls_session_t session, void _gnutls_session_client_cert_type_set(gnutls_session_t session, gnutls_certificate_type_t ct) { - _gnutls_handshake_log - ("HSK[%p]: Selected client certificate type %s (%d)\n", session, - gnutls_certificate_type_get_name(ct), ct); + _gnutls_handshake_log( + "HSK[%p]: Selected client certificate type %s (%d)\n", session, + gnutls_certificate_type_get_name(ct), ct); session->security_parameters.client_ctype = ct; } void _gnutls_session_server_cert_type_set(gnutls_session_t session, gnutls_certificate_type_t ct) { - _gnutls_handshake_log - ("HSK[%p]: Selected server certificate type %s (%d)\n", session, - gnutls_certificate_type_get_name(ct), ct); + _gnutls_handshake_log( + "HSK[%p]: Selected server certificate type %s (%d)\n", session, + gnutls_certificate_type_get_name(ct), ct); session->security_parameters.server_ctype = ct; } @@ -1326,10 +1298,8 @@ void _gnutls_session_server_cert_type_set(gnutls_session_t session, * doing. Before the handshake is finished there is no way to know if * there is a man-in-the-middle attack being performed. **/ -void -gnutls_handshake_set_post_client_hello_function(gnutls_session_t session, - gnutls_handshake_simple_hook_func - func) +void gnutls_handshake_set_post_client_hello_function( + gnutls_session_t session, gnutls_handshake_simple_hook_func func) { session->internals.user_hello_func = func; } @@ -1372,10 +1342,9 @@ void gnutls_session_enable_compatibility_mode(gnutls_session_t session) * * Since: 2.12.0 **/ -int -gnutls_session_channel_binding(gnutls_session_t session, - gnutls_channel_binding_t cbtype, - gnutls_datum_t * cb) +int gnutls_session_channel_binding(gnutls_session_t session, + gnutls_channel_binding_t cbtype, + gnutls_datum_t *cb) { if (!session->internals.initial_negotiation_completed) return GNUTLS_E_CHANNEL_BINDING_NOT_AVAILABLE; @@ -1409,8 +1378,8 @@ gnutls_session_channel_binding(gnutls_session_t session, return GNUTLS_E_UNIMPLEMENTED_FEATURE; if (session->security_parameters.entity == GNUTLS_CLIENT) - ders = - gnutls_certificate_get_peers(session, &num_certs); + ders = gnutls_certificate_get_peers(session, + &num_certs); else ders = gnutls_certificate_get_ours(session); @@ -1496,10 +1465,10 @@ gnutls_session_channel_binding(gnutls_session_t session, if (cb->data == NULL) return GNUTLS_E_MEMORY_ERROR; - return gnutls_prf_rfc5705(session, - RFC5705_LABEL_LEN, RFC5705_LABEL_DATA, - EXPORTER_CTX_LEN, EXPORTER_CTX_DATA, - cb->size, (char *)cb->data); + return gnutls_prf_rfc5705(session, RFC5705_LABEL_LEN, + RFC5705_LABEL_DATA, EXPORTER_CTX_LEN, + EXPORTER_CTX_DATA, cb->size, + (char *)cb->data); } return GNUTLS_E_UNIMPLEMENTED_FEATURE; @@ -1577,20 +1546,19 @@ gnutls_protocol_t gnutls_protocol_get_version(gnutls_session_t session) * * Since: 3.0 **/ -void -gnutls_session_get_random(gnutls_session_t session, - gnutls_datum_t * client, gnutls_datum_t * server) +void gnutls_session_get_random(gnutls_session_t session, gnutls_datum_t *client, + gnutls_datum_t *server) { if (client) { client->data = session->security_parameters.client_random; client->size = - sizeof(session->security_parameters.client_random); + sizeof(session->security_parameters.client_random); } if (server) { server->data = session->security_parameters.server_random; server->size = - sizeof(session->security_parameters.server_random); + sizeof(session->security_parameters.server_random); } } @@ -1606,9 +1574,8 @@ gnutls_session_get_random(gnutls_session_t session, * * Since: 3.5.0 **/ -void -gnutls_session_get_master_secret(gnutls_session_t session, - gnutls_datum_t * secret) +void gnutls_session_get_master_secret(gnutls_session_t session, + gnutls_datum_t *secret) { secret->data = session->security_parameters.master_secret; secret->size = sizeof(session->security_parameters.master_secret); @@ -1645,20 +1612,21 @@ unsigned int timespec_sub_ms(struct timespec *a, struct timespec *b) * * Since 3.1.9 **/ -int -gnutls_handshake_set_random(gnutls_session_t session, - const gnutls_datum_t * random) +int gnutls_handshake_set_random(gnutls_session_t session, + const gnutls_datum_t *random) { if (random->size != GNUTLS_RANDOM_SIZE) return GNUTLS_E_INVALID_REQUEST; session->internals.sc_random_set = 1; if (session->security_parameters.entity == GNUTLS_CLIENT) - memcpy(session->internals.resumed_security_parameters. - client_random, random->data, random->size); + memcpy(session->internals.resumed_security_parameters + .client_random, + random->data, random->size); else - memcpy(session->internals.resumed_security_parameters. - server_random, random->data, random->size); + memcpy(session->internals.resumed_security_parameters + .server_random, + random->data, random->size); return 0; } @@ -1688,10 +1656,9 @@ gnutls_handshake_set_random(gnutls_session_t session, * doing. Before the handshake is finished there is no way to know if * there is a man-in-the-middle attack being performed. **/ -void -gnutls_handshake_set_hook_function(gnutls_session_t session, - unsigned int htype, - int when, gnutls_handshake_hook_func func) +void gnutls_handshake_set_hook_function(gnutls_session_t session, + unsigned int htype, int when, + gnutls_handshake_hook_func func) { session->internals.h_hook = func; session->internals.h_type = htype; @@ -1708,9 +1675,8 @@ gnutls_handshake_set_hook_function(gnutls_session_t session, * * Since: 3.7.0 */ -void -gnutls_handshake_set_read_function(gnutls_session_t session, - gnutls_handshake_read_func func) +void gnutls_handshake_set_read_function(gnutls_session_t session, + gnutls_handshake_read_func func) { session->internals.h_read_func = func; } @@ -1725,9 +1691,8 @@ gnutls_handshake_set_read_function(gnutls_session_t session, * * Since: 3.7.0 */ -void -gnutls_alert_set_read_function(gnutls_session_t session, - gnutls_alert_read_func func) +void gnutls_alert_set_read_function(gnutls_session_t session, + gnutls_alert_read_func func) { session->internals.alert_read_func = func; } @@ -1752,13 +1717,10 @@ gnutls_alert_set_read_function(gnutls_session_t session, * * Since 3.4.0 **/ -int -gnutls_record_get_state(gnutls_session_t session, - unsigned read, - gnutls_datum_t * mac_key, - gnutls_datum_t * IV, - gnutls_datum_t * cipher_key, - unsigned char seq_number[8]) +int gnutls_record_get_state(gnutls_session_t session, unsigned read, + gnutls_datum_t *mac_key, gnutls_datum_t *IV, + gnutls_datum_t *cipher_key, + unsigned char seq_number[8]) { record_parameters_st *record_params; record_state_st *record_state; @@ -1816,9 +1778,8 @@ gnutls_record_get_state(gnutls_session_t session, * * Since 3.4.0 **/ -int -gnutls_record_set_state(gnutls_session_t session, - unsigned read, const unsigned char seq_number[8]) +int gnutls_record_set_state(gnutls_session_t session, unsigned read, + const unsigned char seq_number[8]) { record_parameters_st *record_params; record_state_st *record_state; diff --git a/lib/state.h b/lib/state.h index 15d5ad6384..dc086bcf0d 100644 --- a/lib/state.h +++ b/lib/state.h @@ -21,9 +21,9 @@ */ #ifndef GNUTLS_LIB_STATE_H -# define GNUTLS_LIB_STATE_H +#define GNUTLS_LIB_STATE_H -# include "gnutls_int.h" +#include "gnutls_int.h" void _gnutls_session_client_cert_type_set(gnutls_session_t session, gnutls_certificate_type_t); @@ -37,17 +37,16 @@ inline static const gnutls_group_entry_st *get_group(gnutls_session_t session) int _gnutls_session_is_ecc(gnutls_session_t session); -inline static void -_gnutls_session_group_set(gnutls_session_t session, - const gnutls_group_entry_st * e) +inline static void _gnutls_session_group_set(gnutls_session_t session, + const gnutls_group_entry_st *e) { - _gnutls_handshake_log("HSK[%p]: Selected group %s (%d)\n", - session, e->name, e->id); + _gnutls_handshake_log("HSK[%p]: Selected group %s (%d)\n", session, + e->name, e->id); session->security_parameters.grp = e; } -inline static -void set_default_version(gnutls_session_t session, const version_entry_st * ver) +inline static void set_default_version(gnutls_session_t session, + const version_entry_st *ver) { if (ver->tls13_sem) { session->internals.default_record_version[0] = 3; @@ -58,19 +57,20 @@ void set_default_version(gnutls_session_t session, const version_entry_st * ver) } } -void -_gnutls_record_set_default_version(gnutls_session_t session, - unsigned char major, unsigned char minor); +void _gnutls_record_set_default_version(gnutls_session_t session, + unsigned char major, + unsigned char minor); -void -_gnutls_hello_set_default_version(gnutls_session_t session, - unsigned char major, unsigned char minor); +void _gnutls_hello_set_default_version(gnutls_session_t session, + unsigned char major, + unsigned char minor); -# include +#include -# define CHECK_AUTH_TYPE(auth, ret) if (gnutls_auth_get_type(session) != auth) { \ - gnutls_assert(); \ - return ret; \ +#define CHECK_AUTH_TYPE(auth, ret) \ + if (gnutls_auth_get_type(session) != auth) { \ + gnutls_assert(); \ + return ret; \ } bool _gnutls_session_is_cert_type_supported(gnutls_session_t session, @@ -88,9 +88,8 @@ static inline int _gnutls_dh_get_min_prime_bits(gnutls_session_t session) if (session->internals.dh_prime_bits != 0) return session->internals.dh_prime_bits; else - return gnutls_sec_param_to_pk_bits(GNUTLS_PK_DH, - session->internals. - priorities->level); + return gnutls_sec_param_to_pk_bits( + GNUTLS_PK_DH, session->internals.priorities->level); } void _gnutls_handshake_internal_state_clear(gnutls_session_t); @@ -99,21 +98,19 @@ int _gnutls_session_is_psk(gnutls_session_t session); void reset_binders(gnutls_session_t session); -inline static int -_gnutls_PRF(gnutls_session_t session, - const uint8_t * secret, unsigned int secret_size, - const char *label, int label_size, const uint8_t * seed, - int seed_size, int total_bytes, void *ret) +inline static int _gnutls_PRF(gnutls_session_t session, const uint8_t *secret, + unsigned int secret_size, const char *label, + int label_size, const uint8_t *seed, + int seed_size, int total_bytes, void *ret) { return _gnutls_prf_raw(session->security_parameters.prf->id, - secret_size, secret, - label_size, label, + secret_size, secret, label_size, label, seed_size, seed, total_bytes, ret); } -# define DEFAULT_CERT_TYPE GNUTLS_CRT_X509 +#define DEFAULT_CERT_TYPE GNUTLS_CRT_X509 /* Keep backward compatibility */ -# define GNUTLS_NO_EXTENSIONS GNUTLS_NO_DEFAULT_EXTENSIONS +#define GNUTLS_NO_EXTENSIONS GNUTLS_NO_DEFAULT_EXTENSIONS -#endif /* GNUTLS_LIB_STATE_H */ +#endif /* GNUTLS_LIB_STATE_H */ diff --git a/lib/stek.c b/lib/stek.c index cf8971491e..a50258d923 100644 --- a/lib/stek.c +++ b/lib/stek.c @@ -24,11 +24,10 @@ #define NAME_POS (0) #define KEY_POS (TICKET_KEY_NAME_SIZE) -#define MAC_SECRET_POS (TICKET_KEY_NAME_SIZE+TICKET_CIPHER_KEY_SIZE) +#define MAC_SECRET_POS (TICKET_KEY_NAME_SIZE + TICKET_CIPHER_KEY_SIZE) -static int totp_sha3(gnutls_session_t session, - uint64_t t, - const gnutls_datum_t * secret, +static int totp_sha3(gnutls_session_t session, uint64_t t, + const gnutls_datum_t *secret, uint8_t out[TICKET_MASTER_KEY_SIZE]) { int retval; @@ -40,7 +39,7 @@ static int totp_sha3(gnutls_session_t session, */ const gnutls_digest_algorithm_t algo = GNUTLS_DIG_SHA3_512; #if TICKET_MASTER_KEY_SIZE != 64 -# error "TICKET_MASTER_KEY_SIZE must be 64 bytes" +#error "TICKET_MASTER_KEY_SIZE must be 64 bytes" #endif if (unlikely(secret == NULL)) @@ -64,7 +63,7 @@ static uint64_t T(gnutls_session_t session, time_t t) { uint64_t numeral = t; unsigned int x = - session->internals.expire_time * STEK_ROTATION_PERIOD_PRODUCT; + session->internals.expire_time * STEK_ROTATION_PERIOD_PRODUCT; if (numeral <= 0) return 0; @@ -78,7 +77,7 @@ static int64_t totp_next(gnutls_session_t session) uint64_t result; t = gnutls_time(NULL); - if (unlikely(t == (time_t) - 1)) + if (unlikely(t == (time_t)-1)) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); result = T(session, t); @@ -198,9 +197,9 @@ static int rotate_back_and_peek(gnutls_session_t session, * before returning it to the caller. */ int _gnutls_get_session_ticket_encryption_key(gnutls_session_t session, - gnutls_datum_t * key_name, - gnutls_datum_t * mac_key, - gnutls_datum_t * enc_key) + gnutls_datum_t *key_name, + gnutls_datum_t *mac_key, + gnutls_datum_t *enc_key) { int retval; @@ -223,7 +222,7 @@ int _gnutls_get_session_ticket_encryption_key(gnutls_session_t session, } if (mac_key) { mac_key->data = - &session->key.session_ticket_key[MAC_SECRET_POS]; + &session->key.session_ticket_key[MAC_SECRET_POS]; mac_key->size = TICKET_MAC_SECRET_SIZE; } if (enc_key) { @@ -252,18 +251,16 @@ int _gnutls_get_session_ticket_encryption_key(gnutls_session_t session, * %GNUTLS_E_REQUSTED_DATA_NOT_AVAILABLE if no key could be found for the supplied ticket. */ int _gnutls_get_session_ticket_decryption_key(gnutls_session_t session, - const gnutls_datum_t * - ticket_data, - gnutls_datum_t * key_name, - gnutls_datum_t * mac_key, - gnutls_datum_t * enc_key) + const gnutls_datum_t *ticket_data, + gnutls_datum_t *key_name, + gnutls_datum_t *mac_key, + gnutls_datum_t *enc_key) { int retval; uint8_t *key_data; - if (unlikely - (session == NULL || ticket_data == NULL - || ticket_data->data == NULL)) + if (unlikely(session == NULL || ticket_data == NULL || + ticket_data->data == NULL)) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); if (ticket_data->size < TICKET_KEY_NAME_SIZE) @@ -293,9 +290,8 @@ int _gnutls_get_session_ticket_decryption_key(gnutls_session_t session, */ _gnutls_memory_mark_defined(session->key.previous_ticket_key, TICKET_MASTER_KEY_SIZE); - if ((retval = - rotate_back_and_peek(session, - session->key.previous_ticket_key)) < 0) { + if ((retval = rotate_back_and_peek( + session, session->key.previous_ticket_key)) < 0) { _gnutls_memory_mark_undefined(session->key.previous_ticket_key, TICKET_MASTER_KEY_SIZE); return gnutls_assert_val(retval); @@ -310,7 +306,7 @@ int _gnutls_get_session_ticket_decryption_key(gnutls_session_t session, return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; - key_found: +key_found: if (key_name) { key_name->data = &key_data[NAME_POS]; key_name->size = TICKET_KEY_NAME_SIZE; @@ -340,7 +336,7 @@ int _gnutls_get_session_ticket_decryption_key(gnutls_session_t session, * Returns: %GNUTLS_E_SUCCESS (0) on success, or %GNUTLS_E_INVALID_REQUEST on error. */ int _gnutls_initialize_session_ticket_key_rotation(gnutls_session_t session, - const gnutls_datum_t * key) + const gnutls_datum_t *key) { if (unlikely(session == NULL || key == NULL)) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); @@ -368,9 +364,8 @@ int _gnutls_initialize_session_ticket_key_rotation(gnutls_session_t session, * step value that caused the key to rotate. * */ -void _gnutls_set_session_ticket_key_rotation_callback(gnutls_session_t session, - gnutls_stek_rotation_callback_t - cb) +void _gnutls_set_session_ticket_key_rotation_callback( + gnutls_session_t session, gnutls_stek_rotation_callback_t cb) { if (session) session->key.totp.cb = cb; diff --git a/lib/stek.h b/lib/stek.h index ce06fad53e..fd5ecba2b0 100644 --- a/lib/stek.h +++ b/lib/stek.h @@ -21,26 +21,24 @@ */ #ifndef GNUTLS_LIB_STEK_H -# define GNUTLS_LIB_STEK_H +#define GNUTLS_LIB_STEK_H -# include "gnutls_int.h" +#include "gnutls_int.h" int _gnutls_get_session_ticket_encryption_key(gnutls_session_t session, - gnutls_datum_t * key_name, - gnutls_datum_t * mac_key, - gnutls_datum_t * enc_key); + gnutls_datum_t *key_name, + gnutls_datum_t *mac_key, + gnutls_datum_t *enc_key); int _gnutls_get_session_ticket_decryption_key(gnutls_session_t session, - const gnutls_datum_t * - ticket_data, - gnutls_datum_t * key_name, - gnutls_datum_t * mac_key, - gnutls_datum_t * enc_key); + const gnutls_datum_t *ticket_data, + gnutls_datum_t *key_name, + gnutls_datum_t *mac_key, + gnutls_datum_t *enc_key); -void _gnutls_set_session_ticket_key_rotation_callback(gnutls_session_t session, - gnutls_stek_rotation_callback_t - cb); +void _gnutls_set_session_ticket_key_rotation_callback( + gnutls_session_t session, gnutls_stek_rotation_callback_t cb); int _gnutls_initialize_session_ticket_key_rotation(gnutls_session_t session, - const gnutls_datum_t * key); + const gnutls_datum_t *key); -#endif /* GNUTLS_LIB_STEK_H */ +#endif /* GNUTLS_LIB_STEK_H */ diff --git a/lib/str-iconv.c b/lib/str-iconv.c index 3a85aa3ece..72ffb30b23 100644 --- a/lib/str-iconv.c +++ b/lib/str-iconv.c @@ -34,7 +34,7 @@ #include #include "num.h" -static void change_u16_endianness(uint8_t * dst, const uint8_t * src, +static void change_u16_endianness(uint8_t *dst, const uint8_t *src, unsigned size, unsigned be) { unsigned convert = 0; @@ -62,8 +62,8 @@ static void change_u16_endianness(uint8_t * dst, const uint8_t * src, } } -int _gnutls_ucs2_to_utf8(const void *data, size_t size, - gnutls_datum_t * output, unsigned be) +int _gnutls_ucs2_to_utf8(const void *data, size_t size, gnutls_datum_t *output, + unsigned be) { int ret; size_t dstlen; @@ -71,8 +71,8 @@ int _gnutls_ucs2_to_utf8(const void *data, size_t size, uint8_t *tmp_dst = NULL; uint8_t *dst = NULL; - if (size > 2 && ((uint8_t *) data)[size - 1] == 0 - && ((uint8_t *) data)[size - 2] == 0) { + if (size > 2 && ((uint8_t *)data)[size - 1] == 0 && + ((uint8_t *)data)[size - 2] == 0) { size -= 2; } @@ -87,7 +87,7 @@ int _gnutls_ucs2_to_utf8(const void *data, size_t size, change_u16_endianness(src, data, size, be); dstlen = 0; - tmp_dst = u16_to_u8((uint16_t *) src, size / 2, NULL, &dstlen); + tmp_dst = u16_to_u8((uint16_t *)src, size / 2, NULL, &dstlen); if (tmp_dst == NULL) { ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); goto fail; @@ -109,18 +109,18 @@ int _gnutls_ucs2_to_utf8(const void *data, size_t size, ret = 0; goto cleanup; - fail: +fail: gnutls_free(dst); - cleanup: +cleanup: gnutls_free(src); free(tmp_dst); return ret; } -int _gnutls_utf8_to_ucs2(const void *data, size_t size, - gnutls_datum_t * output, unsigned be) +int _gnutls_utf8_to_ucs2(const void *data, size_t size, gnutls_datum_t *output, + unsigned be) { int ret; size_t dstlen, nrm_size = 0, tmp_size = 0; @@ -136,13 +136,13 @@ int _gnutls_utf8_to_ucs2(const void *data, size_t size, return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); nrm_dst = - u16_normalize(UNINORM_NFC, tmp_dst, tmp_size, NULL, &nrm_size); + u16_normalize(UNINORM_NFC, tmp_dst, tmp_size, NULL, &nrm_size); if (nrm_dst == NULL) { ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); goto fail; } - dstlen = nrm_size * 2; /* convert to bytes */ + dstlen = nrm_size * 2; /* convert to bytes */ dst = gnutls_malloc(dstlen + 2); if (dst == NULL) { @@ -152,7 +152,7 @@ int _gnutls_utf8_to_ucs2(const void *data, size_t size, } /* convert to BE */ - change_u16_endianness(dst, (uint8_t *) tmp_dst, dstlen, be); + change_u16_endianness(dst, (uint8_t *)tmp_dst, dstlen, be); dst[dstlen] = 0; dst[dstlen + 1] = 0; @@ -162,10 +162,10 @@ int _gnutls_utf8_to_ucs2(const void *data, size_t size, ret = 0; goto cleanup; - fail: +fail: gnutls_free(dst); - cleanup: +cleanup: free(tmp_dst); free(nrm_dst); diff --git a/lib/str-idna.c b/lib/str-idna.c index 288b3adc64..4462f143c7 100644 --- a/lib/str-idna.c +++ b/lib/str-idna.c @@ -28,9 +28,9 @@ #ifdef HAVE_LIBIDN2 -# include +#include -# define ICAST char +#define ICAST char /** * gnutls_idna_map: @@ -56,7 +56,7 @@ * * Since: 3.5.8 **/ -int gnutls_idna_map(const char *input, unsigned ilen, gnutls_datum_t * out, +int gnutls_idna_map(const char *input, unsigned ilen, gnutls_datum_t *out, unsigned flags) { char *idna = NULL; @@ -80,7 +80,7 @@ int gnutls_idna_map(const char *input, unsigned ilen, gnutls_datum_t * out, idn2_tflags |= IDN2_TRANSITIONAL | IDN2_USE_STD3_ASCII_RULES; if (ilen == 0) { - out->data = (uint8_t *) gnutls_strdup(""); + out->data = (uint8_t *)gnutls_strdup(""); out->size = 0; if (out->data == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); @@ -97,18 +97,17 @@ int gnutls_idna_map(const char *input, unsigned ilen, gnutls_datum_t * out, return ret; } - rc = idn2_to_ascii_8z((ICAST *) istr.data, (ICAST **) & idna, - idn2_flags); + rc = idn2_to_ascii_8z((ICAST *)istr.data, (ICAST **)&idna, idn2_flags); if (rc == IDN2_DISALLOWED && !(flags & GNUTLS_IDNA_FORCE_2008)) - rc = idn2_to_ascii_8z((ICAST *) istr.data, (ICAST **) & idna, + rc = idn2_to_ascii_8z((ICAST *)istr.data, (ICAST **)&idna, idn2_tflags); if (rc != IDN2_OK) { gnutls_assert(); - idna = NULL; /* in case idn2_lookup_u8 modifies &idna */ - _gnutls_debug_log - ("unable to convert name '%s' to IDNA format: %s\n", - istr.data, idn2_strerror(rc)); + idna = NULL; /* in case idn2_lookup_u8 modifies &idna */ + _gnutls_debug_log( + "unable to convert name '%s' to IDNA format: %s\n", + istr.data, idn2_strerror(rc)); ret = GNUTLS_E_INVALID_UTF8_STRING; goto fail; } @@ -122,7 +121,7 @@ int gnutls_idna_map(const char *input, unsigned ilen, gnutls_datum_t * out, ret = 0; } - fail: +fail: idn2_free(idna); gnutls_free(istr.data); return ret; @@ -148,14 +147,14 @@ int gnutls_idna_map(const char *input, unsigned ilen, gnutls_datum_t * out, * Since: 3.5.8 **/ int gnutls_idna_reverse_map(const char *input, unsigned ilen, - gnutls_datum_t * out, unsigned flags) + gnutls_datum_t *out, unsigned flags) { char *u8 = NULL; int rc, ret; gnutls_datum_t istr; if (ilen == 0) { - out->data = (uint8_t *) gnutls_strdup(""); + out->data = (uint8_t *)gnutls_strdup(""); out->size = 0; if (out->data == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); @@ -172,9 +171,9 @@ int gnutls_idna_reverse_map(const char *input, unsigned ilen, rc = idn2_to_unicode_8z8z((char *)istr.data, &u8, 0); if (rc != IDN2_OK) { gnutls_assert(); - _gnutls_debug_log - ("unable to convert ACE name '%s' to UTF-8 format: %s\n", - istr.data, idn2_strerror(rc)); + _gnutls_debug_log( + "unable to convert ACE name '%s' to UTF-8 format: %s\n", + istr.data, idn2_strerror(rc)); ret = GNUTLS_E_INVALID_UTF8_STRING; goto fail; } @@ -187,16 +186,16 @@ int gnutls_idna_reverse_map(const char *input, unsigned ilen, u8 = NULL; ret = 0; } - fail: +fail: idn2_free(u8); gnutls_free(istr.data); return ret; } -#else /* no HAVE_LIBIDN2 */ +#else /* no HAVE_LIBIDN2 */ -# undef gnutls_idna_map -int gnutls_idna_map(const char *input, unsigned ilen, gnutls_datum_t * out, +#undef gnutls_idna_map +int gnutls_idna_map(const char *input, unsigned ilen, gnutls_datum_t *out, unsigned flags) { if (!_gnutls_str_is_print(input, ilen)) { @@ -207,14 +206,14 @@ int gnutls_idna_map(const char *input, unsigned ilen, gnutls_datum_t * out, } int gnutls_idna_reverse_map(const char *input, unsigned ilen, - gnutls_datum_t * out, unsigned flags) + gnutls_datum_t *out, unsigned flags) { return gnutls_assert_val(GNUTLS_E_UNIMPLEMENTED_FEATURE); } -#endif /* HAVE_LIBIDN2 */ +#endif /* HAVE_LIBIDN2 */ int _gnutls_idna_email_map(const char *input, unsigned ilen, - gnutls_datum_t * output) + gnutls_datum_t *output) { const char *p = input; @@ -255,7 +254,7 @@ int _gnutls_idna_email_map(const char *input, unsigned ilen, } int _gnutls_idna_email_reverse_map(const char *input, unsigned ilen, - gnutls_datum_t * output) + gnutls_datum_t *output) { const char *p = input; @@ -270,9 +269,8 @@ int _gnutls_idna_email_reverse_map(const char *input, unsigned ilen, int ret; gnutls_datum_t domain; - ret = - gnutls_idna_reverse_map(p + 1, ilen - name_part - 1, - &domain, 0); + ret = gnutls_idna_reverse_map(p + 1, ilen - name_part - 1, + &domain, 0); if (ret < 0) return gnutls_assert_val(ret); diff --git a/lib/str-unicode.c b/lib/str-unicode.c index ad7c18a6d9..bb7d38a83f 100644 --- a/lib/str-unicode.c +++ b/lib/str-unicode.c @@ -67,22 +67,22 @@ inline static int is_allowed_exception(uint32_t ch) case 0x3034: case 0x3035: case 0x303B: - return 0; /* disallowed */ + return 0; /* disallowed */ case 0xDF: case 0x03C2: case 0x06FD: case 0x06FE: case 0x0F0B: case 0x3007: - return 1; /* allowed */ + return 1; /* allowed */ default: - return -1; /* not exception */ + return -1; /* not exception */ } } /* Checks whether the provided string is in the valid set of FreeFormClass (RFC7564 * as an RFC7613 requirement), and converts all spaces to the ASCII-space. */ -static int check_for_valid_freeformclass(uint32_t * ucs4, unsigned ucs4_size) +static int check_for_valid_freeformclass(uint32_t *ucs4, unsigned ucs4_size) { unsigned i; int rc; @@ -93,29 +93,32 @@ static int check_for_valid_freeformclass(uint32_t * ucs4, unsigned ucs4_size) unsigned is_invalid; /* make the union of Valid categories, excluding any invalid (i.e., control) */ - cat = uc_general_category_or(UC_CATEGORY_Ll, UC_CATEGORY_Lu); /* LetterDigits */ + cat = uc_general_category_or(UC_CATEGORY_Ll, + UC_CATEGORY_Lu); /* LetterDigits */ cat = uc_general_category_or(cat, UC_CATEGORY_Lo); cat = uc_general_category_or(cat, UC_CATEGORY_Nd); cat = uc_general_category_or(cat, UC_CATEGORY_Lm); cat = uc_general_category_or(cat, UC_CATEGORY_Mn); cat = uc_general_category_or(cat, UC_CATEGORY_Mc); - cat = uc_general_category_or(cat, UC_CATEGORY_Lt); /* OtherLetterDigits */ + cat = uc_general_category_or(cat, + UC_CATEGORY_Lt); /* OtherLetterDigits */ cat = uc_general_category_or(cat, UC_CATEGORY_Nl); cat = uc_general_category_or(cat, UC_CATEGORY_No); cat = uc_general_category_or(cat, UC_CATEGORY_Me); - cat = uc_general_category_or(cat, UC_CATEGORY_Sm); /* Symbols */ + cat = uc_general_category_or(cat, UC_CATEGORY_Sm); /* Symbols */ cat = uc_general_category_or(cat, UC_CATEGORY_Sc); cat = uc_general_category_or(cat, UC_CATEGORY_So); cat = uc_general_category_or(cat, UC_CATEGORY_Sk); - cat = uc_general_category_or(cat, UC_CATEGORY_Pc); /* Punctuation */ + cat = uc_general_category_or(cat, UC_CATEGORY_Pc); /* Punctuation */ cat = uc_general_category_or(cat, UC_CATEGORY_Pd); cat = uc_general_category_or(cat, UC_CATEGORY_Ps); cat = uc_general_category_or(cat, UC_CATEGORY_Pe); cat = uc_general_category_or(cat, UC_CATEGORY_Pi); cat = uc_general_category_or(cat, UC_CATEGORY_Pf); cat = uc_general_category_or(cat, UC_CATEGORY_Po); - cat = uc_general_category_or(cat, UC_CATEGORY_Zs); /* Spaces */ - cat = uc_general_category_and_not(cat, UC_CATEGORY_Cc); /* Not in Control */ + cat = uc_general_category_or(cat, UC_CATEGORY_Zs); /* Spaces */ + cat = uc_general_category_and_not(cat, + UC_CATEGORY_Cc); /* Not in Control */ /* check for being in the allowed sets in rfc7564#section-4.3 */ for (i = 0; i < ucs4_size; i++) { @@ -143,29 +146,28 @@ static int check_for_valid_freeformclass(uint32_t * ucs4, unsigned ucs4_size) if (rc == 0 || uc_is_property_join_control(ucs4[i])) return gnutls_assert_val(GNUTLS_E_INVALID_UTF8_STRING); - if (rc == 1) /* exceptionally allowed, continue */ + if (rc == 1) /* exceptionally allowed, continue */ continue; /* Replace all spaces; an RFC7613 requirement */ - if (uc_is_general_category(ucs4[i], UC_CATEGORY_Zs)) /* replace */ + if (uc_is_general_category(ucs4[i], + UC_CATEGORY_Zs)) /* replace */ ucs4[i] = 0x20; /* Valid */ - if ((ucs4[i] < 0x21 || ucs4[i] > 0x7E) - && !uc_is_general_category(ucs4[i], cat)) + if ((ucs4[i] < 0x21 || ucs4[i] > 0x7E) && + !uc_is_general_category(ucs4[i], cat)) is_invalid = 1; /* HasCompat */ if (is_invalid) { tmp_size = sizeof(tmp) / sizeof(tmp[0]); - nrm = - u32_normalize(UNINORM_NFKC, &ucs4[i], 1, tmp, - &tmp_size); + nrm = u32_normalize(UNINORM_NFKC, &ucs4[i], 1, tmp, + &tmp_size); if (nrm == NULL || (tmp_size == 1 && nrm[0] == ucs4[i])) - return - gnutls_assert_val - (GNUTLS_E_INVALID_UTF8_STRING); + return gnutls_assert_val( + GNUTLS_E_INVALID_UTF8_STRING); } } @@ -190,7 +192,7 @@ static int check_for_valid_freeformclass(uint32_t * ucs4, unsigned ucs4_size) * Since: 3.5.7 **/ int gnutls_utf8_password_normalize(const unsigned char *password, unsigned plen, - gnutls_datum_t * out, unsigned flags) + gnutls_datum_t *out, unsigned flags) { size_t ucs4_size = 0, nrm_size = 0; size_t final_size = 0; @@ -201,7 +203,7 @@ int gnutls_utf8_password_normalize(const unsigned char *password, unsigned plen, int ret; if (plen == 0) { - out->data = (uint8_t *) gnutls_strdup(""); + out->data = (uint8_t *)gnutls_strdup(""); out->size = 0; if (out->data == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); @@ -209,10 +211,10 @@ int gnutls_utf8_password_normalize(const unsigned char *password, unsigned plen, } /* check for invalid UTF-8 */ - if (u8_check((uint8_t *) password, plen) != NULL) { + if (u8_check((uint8_t *)password, plen) != NULL) { gnutls_assert(); if (flags & GNUTLS_UTF8_IGNORE_ERRS) { - raw_copy: + raw_copy: out->data = gnutls_malloc(plen + 1); if (out->data == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); @@ -226,7 +228,7 @@ int gnutls_utf8_password_normalize(const unsigned char *password, unsigned plen, } /* convert to UTF-32 */ - ucs4 = u8_to_u32((uint8_t *) password, plen, NULL, &ucs4_size); + ucs4 = u8_to_u32((uint8_t *)password, plen, NULL, &ucs4_size); if (ucs4 == NULL) { gnutls_assert(); ret = GNUTLS_E_PARSING_ERROR; @@ -282,7 +284,7 @@ int gnutls_utf8_password_normalize(const unsigned char *password, unsigned plen, return 0; - fail: +fail: gnutls_free(final); free(ucs4); free(nrm); diff --git a/lib/str.c b/lib/str.c index d7c4686703..5672ad1dfb 100644 --- a/lib/str.c +++ b/lib/str.c @@ -60,20 +60,20 @@ void _gnutls_str_cpy(char *dest, size_t dest_tot_size, const char *src) strcpy(dest, src); } else { if (dest_tot_size > 0) { - memcpy(dest, src, (dest_tot_size) - 1); + memcpy(dest, src, (dest_tot_size)-1); dest[dest_tot_size - 1] = 0; } } } -void _gnutls_buffer_init(gnutls_buffer_st * str) +void _gnutls_buffer_init(gnutls_buffer_st *str) { str->data = str->allocd = NULL; str->max_length = 0; str->length = 0; } -void _gnutls_buffer_clear(gnutls_buffer_st * str) +void _gnutls_buffer_clear(gnutls_buffer_st *str) { if (str == NULL || str->allocd == NULL) return; @@ -98,9 +98,8 @@ void _gnutls_buffer_clear(gnutls_buffer_st * str) * * Since: 3.4.0 **/ -int -gnutls_buffer_append_data(gnutls_buffer_t dest, const void *data, - size_t data_size) +int gnutls_buffer_append_data(gnutls_buffer_t dest, const void *data, + size_t data_size) { size_t const tot_len = data_size + dest->length; int ret; @@ -112,8 +111,8 @@ gnutls_buffer_append_data(gnutls_buffer_t dest, const void *data, return 0; if (unlikely(sizeof(size_t) == 4 && - INT_ADD_OVERFLOW(((ssize_t) MAX(data_size, MIN_CHUNK)), - ((ssize_t) dest->length)))) { + INT_ADD_OVERFLOW(((ssize_t)MAX(data_size, MIN_CHUNK)), + ((ssize_t)dest->length)))) { return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); } @@ -137,7 +136,7 @@ gnutls_buffer_append_data(gnutls_buffer_t dest, const void *data, * with _gnutls_buffer_pop_datum(). This helps hit more * issues when running under valgrind. */ -int _gnutls_buffer_resize(gnutls_buffer_st * dest, size_t new_size) +int _gnutls_buffer_resize(gnutls_buffer_st *dest, size_t new_size) { size_t unused; @@ -158,7 +157,7 @@ int _gnutls_buffer_resize(gnutls_buffer_st * dest, size_t new_size) #else -static void align_allocd_with_data(gnutls_buffer_st * dest) +static void align_allocd_with_data(gnutls_buffer_st *dest) { assert(dest->allocd != NULL); assert(dest->data != NULL); @@ -167,7 +166,7 @@ static void align_allocd_with_data(gnutls_buffer_st * dest) dest->data = dest->allocd; } -int _gnutls_buffer_resize(gnutls_buffer_st * dest, size_t new_size) +int _gnutls_buffer_resize(gnutls_buffer_st *dest, size_t new_size) { if (unlikely(dest->data != NULL && dest->allocd == NULL)) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); @@ -181,9 +180,8 @@ int _gnutls_buffer_resize(gnutls_buffer_st * dest, size_t new_size) return 0; } else { size_t unused = MEMSUB(dest->data, dest->allocd); - size_t alloc_len = - MAX(new_size, MIN_CHUNK) + MAX(dest->max_length, - MIN_CHUNK); + size_t alloc_len = MAX(new_size, MIN_CHUNK) + + MAX(dest->max_length, MIN_CHUNK); dest->allocd = gnutls_realloc_fast(dest->allocd, alloc_len); if (dest->allocd == NULL) { @@ -204,7 +202,7 @@ int _gnutls_buffer_resize(gnutls_buffer_st * dest, size_t new_size) /* Appends the provided string. The null termination byte is appended * but not included in length. */ -int _gnutls_buffer_append_str(gnutls_buffer_st * dest, const char *src) +int _gnutls_buffer_append_str(gnutls_buffer_st *dest, const char *src) { int ret; ret = _gnutls_buffer_append_data(dest, src, strlen(src) + 1); @@ -218,9 +216,8 @@ int _gnutls_buffer_append_str(gnutls_buffer_st * dest, const char *src) * The data will NOT be valid if buffer is released or * data are appended in the buffer. */ -void -_gnutls_buffer_pop_datum(gnutls_buffer_st * str, gnutls_datum_t * data, - size_t req_size) +void _gnutls_buffer_pop_datum(gnutls_buffer_st *str, gnutls_datum_t *data, + size_t req_size) { if (str->length == 0) { data->data = NULL; @@ -248,7 +245,7 @@ _gnutls_buffer_pop_datum(gnutls_buffer_st * str, gnutls_datum_t * data, /* converts the buffer to a datum if possible. After this call * (failed or not) the buffer should be considered deinitialized. */ -int _gnutls_buffer_to_datum(gnutls_buffer_st * str, gnutls_datum_t * data, +int _gnutls_buffer_to_datum(gnutls_buffer_st *str, gnutls_datum_t *data, unsigned is_str) { int ret; @@ -289,7 +286,7 @@ int _gnutls_buffer_to_datum(gnutls_buffer_st * str, gnutls_datum_t * data, } return 0; - fail: +fail: _gnutls_buffer_clear(str); return ret; } @@ -297,7 +294,7 @@ int _gnutls_buffer_to_datum(gnutls_buffer_st * str, gnutls_datum_t * data, /* returns data from a string in a constant buffer. Will * fail with GNUTLS_E_PARSING_ERROR, if the string has not enough data. */ -int _gnutls_buffer_pop_data(gnutls_buffer_st * str, void *data, size_t req_size) +int _gnutls_buffer_pop_data(gnutls_buffer_st *str, void *data, size_t req_size) { gnutls_datum_t tdata; @@ -311,7 +308,7 @@ int _gnutls_buffer_pop_data(gnutls_buffer_st * str, void *data, size_t req_size) return 0; } -int _gnutls_buffer_append_printf(gnutls_buffer_st * dest, const char *fmt, ...) +int _gnutls_buffer_append_printf(gnutls_buffer_st *dest, const char *fmt, ...) { va_list args; int len; @@ -331,14 +328,14 @@ int _gnutls_buffer_append_printf(gnutls_buffer_st * dest, const char *fmt, ...) return len; } -static int -_gnutls_buffer_insert_data(gnutls_buffer_st * dest, int pos, - const void *str, size_t str_size) +static int _gnutls_buffer_insert_data(gnutls_buffer_st *dest, int pos, + const void *str, size_t str_size) { size_t orig_length = dest->length; int ret; - ret = _gnutls_buffer_resize(dest, dest->length + str_size); /* resize to make space */ + ret = _gnutls_buffer_resize( + dest, dest->length + str_size); /* resize to make space */ if (ret < 0) return ret; @@ -353,8 +350,8 @@ _gnutls_buffer_insert_data(gnutls_buffer_st * dest, int pos, return 0; } -static void -_gnutls_buffer_delete_data(gnutls_buffer_st * dest, int pos, size_t str_size) +static void _gnutls_buffer_delete_data(gnutls_buffer_st *dest, int pos, + size_t str_size) { memmove(&dest->data[pos], &dest->data[pos + str_size], dest->length - pos - str_size); @@ -364,9 +361,8 @@ _gnutls_buffer_delete_data(gnutls_buffer_st * dest, int pos, size_t str_size) return; } -int -_gnutls_buffer_append_escape(gnutls_buffer_st * dest, const void *data, - size_t data_size, const char *invalid_chars) +int _gnutls_buffer_append_escape(gnutls_buffer_st *dest, const void *data, + size_t data_size, const char *invalid_chars) { int rv = -1; char t[5]; @@ -377,11 +373,9 @@ _gnutls_buffer_append_escape(gnutls_buffer_st * dest, const void *data, return gnutls_assert_val(rv); while (pos < dest->length) { - - if (dest->data[pos] == '\\' - || strchr(invalid_chars, dest->data[pos]) - || !c_isgraph(dest->data[pos])) { - + if (dest->data[pos] == '\\' || + strchr(invalid_chars, dest->data[pos]) || + !c_isgraph(dest->data[pos])) { snprintf(t, sizeof(t), "%%%.2X", (unsigned int)dest->data[pos]); @@ -398,24 +392,24 @@ _gnutls_buffer_append_escape(gnutls_buffer_st * dest, const void *data, rv = 0; - cleanup: +cleanup: return rv; } -int _gnutls_buffer_unescape(gnutls_buffer_st * dest) +int _gnutls_buffer_unescape(gnutls_buffer_st *dest) { int rv = -1; unsigned int pos = 0; while (pos < dest->length) { if (dest->data[pos] == '%') { - if (pos + 1 < dest->length - && dest->data[pos + 1] == '%') { + if (pos + 1 < dest->length && + dest->data[pos + 1] == '%') { // %% -> % _gnutls_buffer_delete_data(dest, pos, 1); - } else if (pos + 2 < dest->length - && c_isxdigit(dest->data[pos + 1]) - && c_isxdigit(dest->data[pos + 2])) { + } else if (pos + 2 < dest->length && + c_isxdigit(dest->data[pos + 1]) && + c_isxdigit(dest->data[pos + 2])) { unsigned char x; hex_decode((char *)dest->data + pos + 1, 2, &x, @@ -438,8 +432,8 @@ int _gnutls_buffer_unescape(gnutls_buffer_st * dest) * If the buffer does not have enough space to hold the string, a * truncated hex string is returned (always null terminated). */ -char *_gnutls_bin2hex(const void *_old, size_t oldlen, - char *buffer, size_t buffer_size, const char *separator) +char *_gnutls_bin2hex(const void *_old, size_t oldlen, char *buffer, + size_t buffer_size, const char *separator) { unsigned int i, j; const uint8_t *old = _old; @@ -486,16 +480,14 @@ char *_gnutls_bin2hex(const void *_old, size_t oldlen, * * Since: 2.4.0 **/ -int -gnutls_hex2bin(const char *hex_data, - size_t hex_size, void *bin_data, size_t *bin_size) +int gnutls_hex2bin(const char *hex_data, size_t hex_size, void *bin_data, + size_t *bin_size) { return _gnutls_hex2bin(hex_data, hex_size, (void *)bin_data, bin_size); } -int -_gnutls_hex2bin(const char *hex_data, size_t hex_size, uint8_t * bin_data, - size_t *bin_size) +int _gnutls_hex2bin(const char *hex_data, size_t hex_size, uint8_t *bin_data, + size_t *bin_size) { unsigned int i, j; uint8_t hex2_data[3]; @@ -504,7 +496,8 @@ _gnutls_hex2bin(const char *hex_data, size_t hex_size, uint8_t * bin_data, hex2_data[2] = 0; for (i = j = 0; i < hex_size;) { - if (!isxdigit(hex_data[i])) { /* skip non-hex such as the ':' in 00:FF */ + if (!isxdigit( + hex_data[i])) { /* skip non-hex such as the ':' in 00:FF */ i++; continue; } @@ -543,7 +536,7 @@ _gnutls_hex2bin(const char *hex_data, size_t hex_size, uint8_t * bin_data, * * Returns: %GNUTLS_E_PARSING_ERROR on invalid hex data, or 0 on success. **/ -int gnutls_hex_decode2(const gnutls_datum_t * hex_data, gnutls_datum_t * result) +int gnutls_hex_decode2(const gnutls_datum_t *hex_data, gnutls_datum_t *result) { int ret; int size = hex_data_size(hex_data->size); @@ -555,8 +548,8 @@ int gnutls_hex_decode2(const gnutls_datum_t * hex_data, gnutls_datum_t * result) } result->size = size; - ret = hex_decode((char *)hex_data->data, hex_data->size, - result->data, result->size); + ret = hex_decode((char *)hex_data->data, hex_data->size, result->data, + result->size); if (ret == 0) { gnutls_assert(); gnutls_free(result->data); @@ -581,9 +574,8 @@ int gnutls_hex_decode2(const gnutls_datum_t * hex_data, gnutls_datum_t * result) * Returns: %GNUTLS_E_SHORT_MEMORY_BUFFER if the buffer given is not * long enough, %GNUTLS_E_PARSING_ERROR on invalid hex data, or 0 on success. **/ -int -gnutls_hex_decode(const gnutls_datum_t * hex_data, void *result, - size_t *result_size) +int gnutls_hex_decode(const gnutls_datum_t *hex_data, void *result, + size_t *result_size) { int ret; size_t size = hex_data_size(hex_data->size); @@ -616,9 +608,8 @@ gnutls_hex_decode(const gnutls_datum_t * hex_data, void *result, * Returns: %GNUTLS_E_SHORT_MEMORY_BUFFER if the buffer given is not * long enough, or 0 on success. **/ -int -gnutls_hex_encode(const gnutls_datum_t * data, char *result, - size_t *result_size) +int gnutls_hex_encode(const gnutls_datum_t *data, char *result, + size_t *result_size) { int ret; size_t size = hex_str_size(data->size); @@ -650,7 +641,7 @@ gnutls_hex_encode(const gnutls_datum_t * data, char *result, * * Returns: %GNUTLS_E_SUCCESS on success, otherwise a negative error code. **/ -int gnutls_hex_encode2(const gnutls_datum_t * data, gnutls_datum_t * result) +int gnutls_hex_encode2(const gnutls_datum_t *data, gnutls_datum_t *result) { int ret; int size = hex_str_size(data->size); @@ -661,9 +652,8 @@ int gnutls_hex_encode2(const gnutls_datum_t * data, gnutls_datum_t * result) return GNUTLS_E_MEMORY_ERROR; } - ret = - hex_encode((char *)data->data, data->size, (char *)result->data, - size); + ret = hex_encode((char *)data->data, data->size, (char *)result->data, + size); if (ret == 0) { gnutls_free(result->data); return gnutls_assert_val(GNUTLS_E_PARSING_ERROR); @@ -674,24 +664,22 @@ int gnutls_hex_encode2(const gnutls_datum_t * data, gnutls_datum_t * result) return 0; } -static int -hostname_compare_raw(const char *certname, - size_t certnamesize, const char *hostname) +static int hostname_compare_raw(const char *certname, size_t certnamesize, + const char *hostname) { - if (certnamesize == strlen(hostname) - && memcmp(hostname, certname, certnamesize) == 0) + if (certnamesize == strlen(hostname) && + memcmp(hostname, certname, certnamesize) == 0) return 1; return 0; } -static int -hostname_compare_ascii(const char *certname, - size_t certnamesize, const char *hostname) +static int hostname_compare_ascii(const char *certname, size_t certnamesize, + const char *hostname) { - for (; - *certname && *hostname - && c_toupper(*certname) == c_toupper(*hostname); - certname++, hostname++, certnamesize--) ; + for (; *certname && *hostname && + c_toupper(*certname) == c_toupper(*hostname); + certname++, hostname++, certnamesize--) + ; /* the strings are the same */ if (certnamesize == 0 && *hostname == '\0') @@ -710,10 +698,8 @@ hostname_compare_ascii(const char *certname, * component, and if the string is ascii only (partial advice from rfc6125) * */ -int -_gnutls_hostname_compare(const char *certname, - size_t certnamesize, const char *hostname, - unsigned vflags) +int _gnutls_hostname_compare(const char *certname, size_t certnamesize, + const char *hostname, unsigned vflags) { char *p; unsigned i; @@ -724,8 +710,8 @@ _gnutls_hostname_compare(const char *certname, hostname); } - if (*certname == '*' - && !(vflags & GNUTLS_VERIFY_DO_NOT_ALLOW_WILDCARDS)) { + if (*certname == '*' && + !(vflags & GNUTLS_VERIFY_DO_NOT_ALLOW_WILDCARDS)) { /* a wildcard certificate */ /* ensure that we have at least two domain components after @@ -739,8 +725,8 @@ _gnutls_hostname_compare(const char *certname, certnamesize--; while (1) { - if (hostname_compare_ascii - (certname, certnamesize, hostname)) + if (hostname_compare_ascii(certname, certnamesize, + hostname)) return 1; /* wildcards are only allowed to match a single domain @@ -756,9 +742,8 @@ _gnutls_hostname_compare(const char *certname, } } -int -_gnutls_buffer_append_prefix(gnutls_buffer_st * buf, int pfx_size, - size_t data_size) +int _gnutls_buffer_append_prefix(gnutls_buffer_st *buf, int pfx_size, + size_t data_size) { uint8_t ss[4]; @@ -780,8 +765,7 @@ _gnutls_buffer_append_prefix(gnutls_buffer_st * buf, int pfx_size, return _gnutls_buffer_append_data(buf, ss, pfx_size); } -int _gnutls_buffer_pop_prefix8(gnutls_buffer_st * buf, uint8_t * data, - int check) +int _gnutls_buffer_pop_prefix8(gnutls_buffer_st *buf, uint8_t *data, int check) { if (buf->length < 1) { gnutls_assert(); @@ -801,9 +785,8 @@ int _gnutls_buffer_pop_prefix8(gnutls_buffer_st * buf, uint8_t * data, return 0; } -int -_gnutls_buffer_pop_prefix16(gnutls_buffer_st * buf, size_t *data_size, - int check) +int _gnutls_buffer_pop_prefix16(gnutls_buffer_st *buf, size_t *data_size, + int check) { size_t size; @@ -826,9 +809,8 @@ _gnutls_buffer_pop_prefix16(gnutls_buffer_st * buf, size_t *data_size, return 0; } -int -_gnutls_buffer_pop_prefix24(gnutls_buffer_st * buf, size_t *data_size, - int check) +int _gnutls_buffer_pop_prefix24(gnutls_buffer_st *buf, size_t *data_size, + int check) { size_t size; @@ -854,9 +836,8 @@ _gnutls_buffer_pop_prefix24(gnutls_buffer_st * buf, size_t *data_size, /* Reads an uint32 number from the buffer. If check is non zero it will also check whether * the number read, is less than the data in the buffer */ -int -_gnutls_buffer_pop_prefix32(gnutls_buffer_st * buf, size_t *data_size, - int check) +int _gnutls_buffer_pop_prefix32(gnutls_buffer_st *buf, size_t *data_size, + int check) { size_t size; @@ -879,8 +860,8 @@ _gnutls_buffer_pop_prefix32(gnutls_buffer_st * buf, size_t *data_size, return 0; } -int -_gnutls_buffer_pop_datum_prefix32(gnutls_buffer_st * buf, gnutls_datum_t * data) +int _gnutls_buffer_pop_datum_prefix32(gnutls_buffer_st *buf, + gnutls_datum_t *data) { size_t size; int ret; @@ -906,8 +887,8 @@ _gnutls_buffer_pop_datum_prefix32(gnutls_buffer_st * buf, gnutls_datum_t * data) return 0; } -int -_gnutls_buffer_pop_datum_prefix24(gnutls_buffer_st * buf, gnutls_datum_t * data) +int _gnutls_buffer_pop_datum_prefix24(gnutls_buffer_st *buf, + gnutls_datum_t *data) { size_t size; int ret; @@ -933,8 +914,8 @@ _gnutls_buffer_pop_datum_prefix24(gnutls_buffer_st * buf, gnutls_datum_t * data) return 0; } -int -_gnutls_buffer_pop_datum_prefix16(gnutls_buffer_st * buf, gnutls_datum_t * data) +int _gnutls_buffer_pop_datum_prefix16(gnutls_buffer_st *buf, + gnutls_datum_t *data) { size_t size; @@ -963,8 +944,8 @@ _gnutls_buffer_pop_datum_prefix16(gnutls_buffer_st * buf, gnutls_datum_t * data) return 0; } -int -_gnutls_buffer_pop_datum_prefix8(gnutls_buffer_st * buf, gnutls_datum_t * data) +int _gnutls_buffer_pop_datum_prefix8(gnutls_buffer_st *buf, + gnutls_datum_t *data) { size_t size; @@ -993,10 +974,8 @@ _gnutls_buffer_pop_datum_prefix8(gnutls_buffer_st * buf, gnutls_datum_t * data) return 0; } -int -_gnutls_buffer_append_data_prefix(gnutls_buffer_st * buf, - int pfx_size, const void *data, - size_t data_size) +int _gnutls_buffer_append_data_prefix(gnutls_buffer_st *buf, int pfx_size, + const void *data, size_t data_size) { int ret; @@ -1013,8 +992,8 @@ _gnutls_buffer_append_data_prefix(gnutls_buffer_st * buf, return 0; } -int _gnutls_buffer_append_mpi(gnutls_buffer_st * buf, int pfx_size, - bigint_t mpi, int lz) +int _gnutls_buffer_append_mpi(gnutls_buffer_st *buf, int pfx_size, bigint_t mpi, + int lz) { gnutls_datum_t dd; int ret; @@ -1027,8 +1006,8 @@ int _gnutls_buffer_append_mpi(gnutls_buffer_st * buf, int pfx_size, if (ret < 0) return gnutls_assert_val(ret); - ret = - _gnutls_buffer_append_data_prefix(buf, pfx_size, dd.data, dd.size); + ret = _gnutls_buffer_append_data_prefix(buf, pfx_size, dd.data, + dd.size); _gnutls_free_datum(&dd); @@ -1036,8 +1015,8 @@ int _gnutls_buffer_append_mpi(gnutls_buffer_st * buf, int pfx_size, } /* Appends an MPI of fixed-size in bytes left-padded with zeros if necessary */ -int _gnutls_buffer_append_fixed_mpi(gnutls_buffer_st * buf, - bigint_t mpi, unsigned size) +int _gnutls_buffer_append_fixed_mpi(gnutls_buffer_st *buf, bigint_t mpi, + unsigned size) { gnutls_datum_t dd; unsigned pad, i; @@ -1064,13 +1043,13 @@ int _gnutls_buffer_append_fixed_mpi(gnutls_buffer_st * buf, /* append the rest */ ret = _gnutls_buffer_append_data(buf, dd.data, dd.size); - cleanup: +cleanup: _gnutls_free_datum(&dd); return ret; } -void -_gnutls_buffer_hexprint(gnutls_buffer_st * str, const void *_data, size_t len) +void _gnutls_buffer_hexprint(gnutls_buffer_st *str, const void *_data, + size_t len) { size_t j; const unsigned char *data = _data; @@ -1084,9 +1063,8 @@ _gnutls_buffer_hexprint(gnutls_buffer_st * str, const void *_data, size_t len) } } -int -_gnutls_buffer_base64print(gnutls_buffer_st * str, - const void *_data, size_t len) +int _gnutls_buffer_base64print(gnutls_buffer_st *str, const void *_data, + size_t len) { const unsigned char *data = _data; unsigned b64len = BASE64_ENCODE_RAW_LENGTH(len); @@ -1104,9 +1082,8 @@ _gnutls_buffer_base64print(gnutls_buffer_st * str, return 0; } -void -_gnutls_buffer_hexdump(gnutls_buffer_st * str, const void *_data, - size_t len, const char *spc) +void _gnutls_buffer_hexdump(gnutls_buffer_st *str, const void *_data, + size_t len, const char *spc) { size_t j; const unsigned char *data = _data; @@ -1123,22 +1100,22 @@ _gnutls_buffer_hexdump(gnutls_buffer_st * str, const void *_data, _gnutls_buffer_append_printf(str, "%.2x", (unsigned)data[j]); else - _gnutls_buffer_append_printf(str, "%.2x:", - (unsigned)data[j]); + _gnutls_buffer_append_printf( + str, "%.2x:", (unsigned)data[j]); } if ((j % 16) != 0) _gnutls_buffer_append_str(str, "\n"); } -void -_gnutls_buffer_asciiprint(gnutls_buffer_st * str, const char *data, size_t len) +void _gnutls_buffer_asciiprint(gnutls_buffer_st *str, const char *data, + size_t len) { size_t j; for (j = 0; j < len; j++) if (c_isprint(data[j])) - _gnutls_buffer_append_printf(str, "%c", (unsigned char) - data[j]); + _gnutls_buffer_append_printf(str, "%c", + (unsigned char)data[j]); else _gnutls_buffer_append_printf(str, "."); } diff --git a/lib/str.h b/lib/str.h index 13b7fa1b37..4c360ee483 100644 --- a/lib/str.h +++ b/lib/str.h @@ -22,36 +22,37 @@ */ #ifndef GNUTLS_LIB_STR_H -# define GNUTLS_LIB_STR_H - -# include -# include "gnutls_int.h" -# include "errors.h" -# include -# include -# include "errors.h" - -# ifdef HAVE_DCGETTEXT -# include "gettext.h" -# define _(String) dgettext (PACKAGE, String) -# define N_(String) gettext_noop (String) -# else -# define _(String) String -# define N_(String) String -# endif - -int gnutls_utf8_password_normalize(const uint8_t * password, - unsigned password_len, gnutls_datum_t * out, +#define GNUTLS_LIB_STR_H + +#include +#include "gnutls_int.h" +#include "errors.h" +#include +#include +#include "errors.h" + +#ifdef HAVE_DCGETTEXT +#include "gettext.h" +#define _(String) dgettext(PACKAGE, String) +#define N_(String) gettext_noop(String) +#else +#define _(String) String +#define N_(String) String +#endif + +int gnutls_utf8_password_normalize(const uint8_t *password, + unsigned password_len, gnutls_datum_t *out, unsigned flags); -# define _gnutls_utf8_password_normalize(p, plen, out, ignore_errs) \ - gnutls_utf8_password_normalize((unsigned char*)p, plen, out, \ - ignore_errs?(GNUTLS_UTF8_IGNORE_ERRS):0) +#define _gnutls_utf8_password_normalize(p, plen, out, ignore_errs) \ + gnutls_utf8_password_normalize( \ + (unsigned char *)p, plen, out, \ + ignore_errs ? (GNUTLS_UTF8_IGNORE_ERRS) : 0) int _gnutls_idna_email_map(const char *input, unsigned ilen, - gnutls_datum_t * output); + gnutls_datum_t *output); int _gnutls_idna_email_reverse_map(const char *input, unsigned ilen, - gnutls_datum_t * output); + gnutls_datum_t *output); inline static unsigned _gnutls_str_is_print(const char *str, unsigned size) { @@ -77,10 +78,10 @@ void _gnutls_str_cpy(char *dest, size_t dest_tot_size, const char *src); void _gnutls_str_cat(char *dest, size_t dest_tot_size, const char *src); typedef struct gnutls_buffer_st { - uint8_t *allocd; /* pointer to allocated data */ - uint8_t *data; /* API: pointer to data to copy from */ + uint8_t *allocd; /* pointer to allocated data */ + uint8_t *data; /* API: pointer to data to copy from */ size_t max_length; - size_t length; /* API: current length */ + size_t length; /* API: current length */ } gnutls_buffer_st; /* Initialize a buffer */ @@ -90,7 +91,7 @@ void _gnutls_buffer_init(gnutls_buffer_st *); void _gnutls_buffer_clear(gnutls_buffer_st *); /* Set the buffer data to be of zero length */ -inline static void _gnutls_buffer_reset(gnutls_buffer_st * buf) +inline static void _gnutls_buffer_reset(gnutls_buffer_st *buf) { buf->data = buf->allocd; buf->length = 0; @@ -100,55 +101,55 @@ int _gnutls_buffer_resize(gnutls_buffer_st *, size_t new_size); int _gnutls_buffer_append_str(gnutls_buffer_st *, const char *str); -# define _gnutls_buffer_append_data gnutls_buffer_append_data +#define _gnutls_buffer_append_data gnutls_buffer_append_data -# include +#include -int _gnutls_buffer_append_prefix(gnutls_buffer_st * buf, int pfx_size, +int _gnutls_buffer_append_prefix(gnutls_buffer_st *buf, int pfx_size, size_t data_size); -int _gnutls_buffer_append_mpi(gnutls_buffer_st * buf, int pfx_size, - bigint_t, int lz); +int _gnutls_buffer_append_mpi(gnutls_buffer_st *buf, int pfx_size, bigint_t, + int lz); -int _gnutls_buffer_append_fixed_mpi(gnutls_buffer_st * buf, - bigint_t mpi, unsigned size); +int _gnutls_buffer_append_fixed_mpi(gnutls_buffer_st *buf, bigint_t mpi, + unsigned size); -int _gnutls_buffer_append_data_prefix(gnutls_buffer_st * buf, int pfx_size, +int _gnutls_buffer_append_data_prefix(gnutls_buffer_st *buf, int pfx_size, const void *data, size_t data_size); int _gnutls_buffer_pop_data(gnutls_buffer_st *, void *, size_t size); void _gnutls_buffer_pop_datum(gnutls_buffer_st *, gnutls_datum_t *, size_t max_size); /* 32-bit prefix */ -int _gnutls_buffer_pop_prefix32(gnutls_buffer_st * buf, size_t *data_size, +int _gnutls_buffer_pop_prefix32(gnutls_buffer_st *buf, size_t *data_size, int check); -int _gnutls_buffer_pop_prefix24(gnutls_buffer_st * buf, size_t *data_size, +int _gnutls_buffer_pop_prefix24(gnutls_buffer_st *buf, size_t *data_size, int check); -int _gnutls_buffer_pop_prefix16(gnutls_buffer_st * buf, size_t *data_size, +int _gnutls_buffer_pop_prefix16(gnutls_buffer_st *buf, size_t *data_size, int check); int _gnutls_buffer_pop_prefix8(gnutls_buffer_st *, uint8_t *, int check); /* 32-bit prefix */ -int _gnutls_buffer_pop_datum_prefix32(gnutls_buffer_st * buf, - gnutls_datum_t * data); +int _gnutls_buffer_pop_datum_prefix32(gnutls_buffer_st *buf, + gnutls_datum_t *data); /* 24-bit prefix */ -int _gnutls_buffer_pop_datum_prefix24(gnutls_buffer_st * buf, - gnutls_datum_t * data); +int _gnutls_buffer_pop_datum_prefix24(gnutls_buffer_st *buf, + gnutls_datum_t *data); /* 16-bit prefix */ -int _gnutls_buffer_pop_datum_prefix16(gnutls_buffer_st * buf, - gnutls_datum_t * data); +int _gnutls_buffer_pop_datum_prefix16(gnutls_buffer_st *buf, + gnutls_datum_t *data); /* 8-bit prefix */ -int _gnutls_buffer_pop_datum_prefix8(gnutls_buffer_st * buf, - gnutls_datum_t * data); +int _gnutls_buffer_pop_datum_prefix8(gnutls_buffer_st *buf, + gnutls_datum_t *data); -int _gnutls_buffer_to_datum(gnutls_buffer_st * str, gnutls_datum_t * data, +int _gnutls_buffer_to_datum(gnutls_buffer_st *str, gnutls_datum_t *data, unsigned is_str); -inline static -void _gnutls_ro_buffer_from_datum(gnutls_buffer_st * str, gnutls_datum_t * data) +inline static void _gnutls_ro_buffer_from_datum(gnutls_buffer_st *str, + gnutls_datum_t *data) { _gnutls_buffer_init(str); str->length = data->size; @@ -156,170 +157,183 @@ void _gnutls_ro_buffer_from_datum(gnutls_buffer_st * str, gnutls_datum_t * data) str->data = data->data; } -int -_gnutls_buffer_append_escape(gnutls_buffer_st * dest, const void *data, - size_t data_size, const char *invalid_chars); -int _gnutls_buffer_unescape(gnutls_buffer_st * dest); +int _gnutls_buffer_append_escape(gnutls_buffer_st *dest, const void *data, + size_t data_size, const char *invalid_chars); +int _gnutls_buffer_unescape(gnutls_buffer_st *dest); -# ifndef __attribute__ +#ifndef __attribute__ /* This feature is available in gcc versions 2.5 and later. */ -# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) -# define __attribute__(Spec) /* empty */ -# endif -# endif - -int _gnutls_buffer_append_printf(gnutls_buffer_st * dest, const char *fmt, ...) - __attribute__((format(printf, 2, 3))); - -void _gnutls_buffer_hexprint(gnutls_buffer_st * str, - const void *data, size_t len); -int _gnutls_buffer_base64print(gnutls_buffer_st * str, - const void *data, size_t len); -void _gnutls_buffer_hexdump(gnutls_buffer_st * str, const void *data, - size_t len, const char *spc); -void _gnutls_buffer_asciiprint(gnutls_buffer_st * str, - const char *data, size_t len); +#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) +#define __attribute__(Spec) /* empty */ +#endif +#endif + +int _gnutls_buffer_append_printf(gnutls_buffer_st *dest, const char *fmt, ...) + __attribute__((format(printf, 2, 3))); + +void _gnutls_buffer_hexprint(gnutls_buffer_st *str, const void *data, + size_t len); +int _gnutls_buffer_base64print(gnutls_buffer_st *str, const void *data, + size_t len); +void _gnutls_buffer_hexdump(gnutls_buffer_st *str, const void *data, size_t len, + const char *spc); +void _gnutls_buffer_asciiprint(gnutls_buffer_st *str, const char *data, + size_t len); char *_gnutls_bin2hex(const void *old, size_t oldlen, char *buffer, size_t buffer_size, const char *separator); -int _gnutls_hex2bin(const char *hex_data, size_t hex_size, - uint8_t * bin_data, size_t *bin_size); +int _gnutls_hex2bin(const char *hex_data, size_t hex_size, uint8_t *bin_data, + size_t *bin_size); int _gnutls_hostname_compare(const char *certname, size_t certnamesize, const char *hostname, unsigned vflags); -# define MAX_CN 256 -# define MAX_DN 1024 +#define MAX_CN 256 +#define MAX_DN 1024 -# define BUFFER_APPEND(b, x, s) { \ - ret = _gnutls_buffer_append_data(b, x, s); \ - if (ret < 0) { \ - gnutls_assert(); \ - return ret; \ - } \ - } +#define BUFFER_APPEND(b, x, s) \ + { \ + ret = _gnutls_buffer_append_data(b, x, s); \ + if (ret < 0) { \ + gnutls_assert(); \ + return ret; \ + } \ + } /* append data prefixed with 4-bytes length field*/ -# define BUFFER_APPEND_PFX4(b, x, s) { \ - ret = _gnutls_buffer_append_data_prefix(b, 32, x, s); \ - if (ret < 0) { \ - gnutls_assert(); \ - return ret; \ - } \ - } - -# define BUFFER_APPEND_PFX3(b, x, s) { \ - ret = _gnutls_buffer_append_data_prefix(b, 24, x, s); \ - if (ret < 0) { \ - gnutls_assert(); \ - return ret; \ - } \ - } - -# define BUFFER_APPEND_PFX2(b, x, s) { \ - ret = _gnutls_buffer_append_data_prefix(b, 16, x, s); \ - if (ret < 0) { \ - gnutls_assert(); \ - return ret; \ - } \ - } - -# define BUFFER_APPEND_PFX1(b, x, s) { \ - ret = _gnutls_buffer_append_data_prefix(b, 8, x, s); \ - if (ret < 0) { \ - gnutls_assert(); \ - return ret; \ - } \ - } - -# define BUFFER_APPEND_NUM(b, s) { \ - ret = _gnutls_buffer_append_prefix(b, 32, s); \ - if (ret < 0) { \ - gnutls_assert(); \ - return ret; \ - } \ - } - -# define BUFFER_APPEND_TS(b, s) { \ - ret = _gnutls_buffer_append_prefix(b, 32, (uint64_t) s.tv_sec >> 32); \ - if (ret < 0) { \ - gnutls_assert(); \ - return ret; \ - } \ - ret = _gnutls_buffer_append_prefix(b, 32, s.tv_sec & 0xFFFFFFFF); \ - if (ret < 0) { \ - gnutls_assert(); \ - return ret; \ - } \ - ret = _gnutls_buffer_append_prefix(b, 32, s.tv_nsec); \ - if (ret < 0) { \ - gnutls_assert(); \ - return ret; \ - } \ - } - -# define BUFFER_POP(b, x, s) { \ - ret = _gnutls_buffer_pop_data(b, x, s); \ - if (ret < 0) { \ - ret = GNUTLS_E_PARSING_ERROR; \ - gnutls_assert(); \ - goto error; \ - } \ - } - -# define BUFFER_POP_DATUM(b, o) { \ - gnutls_datum_t d; \ - ret = _gnutls_buffer_pop_datum_prefix32(b, &d); \ - if (ret >= 0) \ - ret = _gnutls_set_datum (o, d.data, d.size); \ - if (ret < 0) { \ - gnutls_assert(); \ - goto error; \ - } \ - } - -# define BUFFER_POP_NUM(b, o) { \ - size_t s; \ - ret = _gnutls_buffer_pop_prefix32(b, &s, 0); \ - if (ret < 0) { \ - gnutls_assert(); \ - goto error; \ - } \ - o = s; \ - } - -# define BUFFER_POP_CAST_NUM(b, o) { \ - size_t s; \ - ret = _gnutls_buffer_pop_prefix32(b, &s, 0); \ - if (ret < 0) { \ - gnutls_assert(); \ - goto error; \ - } \ - o = (void *) (intptr_t)(s); \ - } - -# define BUFFER_POP_TS(b, o) { \ - size_t s; \ - uint64_t v; \ - ret = _gnutls_buffer_pop_prefix32(b, &s, 0); \ - if (ret < 0) { \ - gnutls_assert(); \ - goto error; \ - } \ - v = s; \ - ret = _gnutls_buffer_pop_prefix32(b, &s, 0); \ - if (ret < 0) { \ - gnutls_assert(); \ - goto error; \ - } \ - v = (v << 32) | s; \ - ret = _gnutls_buffer_pop_prefix32(b, &s, 0); \ - if (ret < 0) { \ - gnutls_assert(); \ - goto error; \ - } \ - o.tv_sec = v; \ - o.tv_nsec = s; \ - } - -#endif /* GNUTLS_LIB_STR_H */ +#define BUFFER_APPEND_PFX4(b, x, s) \ + { \ + ret = _gnutls_buffer_append_data_prefix(b, 32, x, s); \ + if (ret < 0) { \ + gnutls_assert(); \ + return ret; \ + } \ + } + +#define BUFFER_APPEND_PFX3(b, x, s) \ + { \ + ret = _gnutls_buffer_append_data_prefix(b, 24, x, s); \ + if (ret < 0) { \ + gnutls_assert(); \ + return ret; \ + } \ + } + +#define BUFFER_APPEND_PFX2(b, x, s) \ + { \ + ret = _gnutls_buffer_append_data_prefix(b, 16, x, s); \ + if (ret < 0) { \ + gnutls_assert(); \ + return ret; \ + } \ + } + +#define BUFFER_APPEND_PFX1(b, x, s) \ + { \ + ret = _gnutls_buffer_append_data_prefix(b, 8, x, s); \ + if (ret < 0) { \ + gnutls_assert(); \ + return ret; \ + } \ + } + +#define BUFFER_APPEND_NUM(b, s) \ + { \ + ret = _gnutls_buffer_append_prefix(b, 32, s); \ + if (ret < 0) { \ + gnutls_assert(); \ + return ret; \ + } \ + } + +#define BUFFER_APPEND_TS(b, s) \ + { \ + ret = _gnutls_buffer_append_prefix(b, 32, \ + (uint64_t)s.tv_sec >> 32); \ + if (ret < 0) { \ + gnutls_assert(); \ + return ret; \ + } \ + ret = _gnutls_buffer_append_prefix(b, 32, \ + s.tv_sec & 0xFFFFFFFF); \ + if (ret < 0) { \ + gnutls_assert(); \ + return ret; \ + } \ + ret = _gnutls_buffer_append_prefix(b, 32, s.tv_nsec); \ + if (ret < 0) { \ + gnutls_assert(); \ + return ret; \ + } \ + } + +#define BUFFER_POP(b, x, s) \ + { \ + ret = _gnutls_buffer_pop_data(b, x, s); \ + if (ret < 0) { \ + ret = GNUTLS_E_PARSING_ERROR; \ + gnutls_assert(); \ + goto error; \ + } \ + } + +#define BUFFER_POP_DATUM(b, o) \ + { \ + gnutls_datum_t d; \ + ret = _gnutls_buffer_pop_datum_prefix32(b, &d); \ + if (ret >= 0) \ + ret = _gnutls_set_datum(o, d.data, d.size); \ + if (ret < 0) { \ + gnutls_assert(); \ + goto error; \ + } \ + } + +#define BUFFER_POP_NUM(b, o) \ + { \ + size_t s; \ + ret = _gnutls_buffer_pop_prefix32(b, &s, 0); \ + if (ret < 0) { \ + gnutls_assert(); \ + goto error; \ + } \ + o = s; \ + } + +#define BUFFER_POP_CAST_NUM(b, o) \ + { \ + size_t s; \ + ret = _gnutls_buffer_pop_prefix32(b, &s, 0); \ + if (ret < 0) { \ + gnutls_assert(); \ + goto error; \ + } \ + o = (void *)(intptr_t)(s); \ + } + +#define BUFFER_POP_TS(b, o) \ + { \ + size_t s; \ + uint64_t v; \ + ret = _gnutls_buffer_pop_prefix32(b, &s, 0); \ + if (ret < 0) { \ + gnutls_assert(); \ + goto error; \ + } \ + v = s; \ + ret = _gnutls_buffer_pop_prefix32(b, &s, 0); \ + if (ret < 0) { \ + gnutls_assert(); \ + goto error; \ + } \ + v = (v << 32) | s; \ + ret = _gnutls_buffer_pop_prefix32(b, &s, 0); \ + if (ret < 0) { \ + gnutls_assert(); \ + goto error; \ + } \ + o.tv_sec = v; \ + o.tv_nsec = s; \ + } + +#endif /* GNUTLS_LIB_STR_H */ diff --git a/lib/str_array.h b/lib/str_array.h index c7ce732d1b..8188c8dd0c 100644 --- a/lib/str_array.h +++ b/lib/str_array.h @@ -21,10 +21,10 @@ */ #ifndef GNUTLS_LIB_STR_ARRAY_H -# define GNUTLS_LIB_STR_ARRAY_H +#define GNUTLS_LIB_STR_ARRAY_H -# include "gnutls_int.h" -# include "errors.h" +#include "gnutls_int.h" +#include "errors.h" /* Functionality to allow an array of strings. Strings * are allowed to be added to the list and matched against it. @@ -36,12 +36,12 @@ typedef struct gnutls_str_array_st { struct gnutls_str_array_st *next; } *gnutls_str_array_t; -inline static void _gnutls_str_array_init(gnutls_str_array_t * head) +inline static void _gnutls_str_array_init(gnutls_str_array_t *head) { *head = NULL; } -inline static void _gnutls_str_array_clear(gnutls_str_array_t * head) +inline static void _gnutls_str_array_clear(gnutls_str_array_t *head) { gnutls_str_array_t prev, array = *head; @@ -76,13 +76,13 @@ inline static void append(gnutls_str_array_t array, const char *str, int len) array->next = NULL; } -inline static int _gnutls_str_array_append(gnutls_str_array_t * head, +inline static int _gnutls_str_array_append(gnutls_str_array_t *head, const char *str, int len) { gnutls_str_array_t prev, array; if (*head == NULL) { - *head = - gnutls_malloc(len + 1 + sizeof(struct gnutls_str_array_st)); + *head = gnutls_malloc(len + 1 + + sizeof(struct gnutls_str_array_st)); if (*head == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); @@ -95,8 +95,8 @@ inline static int _gnutls_str_array_append(gnutls_str_array_t * head, prev = array; array = prev->next; } - prev->next = - gnutls_malloc(len + 1 + sizeof(struct gnutls_str_array_st)); + prev->next = gnutls_malloc(len + 1 + + sizeof(struct gnutls_str_array_st)); array = prev->next; @@ -109,7 +109,7 @@ inline static int _gnutls_str_array_append(gnutls_str_array_t * head, return 0; } -inline static int _gnutls_str_array_append_idna(gnutls_str_array_t * head, +inline static int _gnutls_str_array_append_idna(gnutls_str_array_t *head, const char *name, size_t size) { int ret; @@ -118,8 +118,8 @@ inline static int _gnutls_str_array_append_idna(gnutls_str_array_t * head, /* convert the provided hostname to ACE-Labels domain. */ ret = gnutls_idna_map(name, size, &ahost, 0); if (ret < 0) { - _gnutls_debug_log - ("unable to convert hostname %s to IDNA format\n", name); + _gnutls_debug_log( + "unable to convert hostname %s to IDNA format\n", name); /* insert the raw name */ return _gnutls_str_array_append(head, name, size); } @@ -130,4 +130,4 @@ inline static int _gnutls_str_array_append_idna(gnutls_str_array_t * head, return ret; } -#endif /* GNUTLS_LIB_STR_ARRAY_H */ +#endif /* GNUTLS_LIB_STR_ARRAY_H */ diff --git a/lib/supplemental.c b/lib/supplemental.c index 8573b267df..cf412c7f5e 100644 --- a/lib/supplemental.c +++ b/lib/supplemental.c @@ -70,8 +70,8 @@ static gnutls_supplemental_entry_st *suppfunc = NULL; * Returns: a string that contains the name of the specified * supplemental data format type, or %NULL for unknown types. **/ -const char -*gnutls_supplemental_get_name(gnutls_supplemental_data_format_type_t type) +const char * +gnutls_supplemental_get_name(gnutls_supplemental_data_format_type_t type) { size_t i; @@ -116,8 +116,8 @@ get_supp_func_recv(gnutls_session_t session, } static int gen_supplemental(gnutls_session_t session, - const gnutls_supplemental_entry_st * supp, - gnutls_buffer_st * buf) + const gnutls_supplemental_entry_st *supp, + gnutls_buffer_st *buf) { int ret; gnutls_supp_send_func supp_send = supp->supp_send_func; @@ -140,8 +140,8 @@ static int gen_supplemental(gnutls_session_t session, if (buf->length > sizepos + 4) { buf->data[sizepos] = (supp->type >> 8) & 0xFF; buf->data[sizepos + 1] = supp->type & 0xFF; - buf->data[sizepos + 2] = - ((buf->length - sizepos - 4) >> 8) & 0xFF; + buf->data[sizepos + 2] = ((buf->length - sizepos - 4) >> 8) & + 0xFF; buf->data[sizepos + 3] = (buf->length - sizepos - 4) & 0xFF; } else buf->length -= 4; @@ -149,7 +149,7 @@ static int gen_supplemental(gnutls_session_t session, return 0; } -int _gnutls_gen_supplemental(gnutls_session_t session, gnutls_buffer_st * buf) +int _gnutls_gen_supplemental(gnutls_session_t session, gnutls_buffer_st *buf) { size_t i; int ret; @@ -163,8 +163,8 @@ int _gnutls_gen_supplemental(gnutls_session_t session, gnutls_buffer_st * buf) } for (i = 0; i < session->internals.rsup_size; i++) { - ret = - gen_supplemental(session, &session->internals.rsup[i], buf); + ret = gen_supplemental(session, &session->internals.rsup[i], + buf); if (ret < 0) return gnutls_assert_val(ret); } @@ -181,16 +181,14 @@ int _gnutls_gen_supplemental(gnutls_session_t session, gnutls_buffer_st * buf) buf->data[init_pos + 1] = (i >> 8) & 0xFF; buf->data[init_pos + 2] = i & 0xFF; - _gnutls_debug_log - ("EXT[%p]: Sending %d bytes of supplemental data\n", session, - (int)buf->length); + _gnutls_debug_log("EXT[%p]: Sending %d bytes of supplemental data\n", + session, (int)buf->length); return buf->length - init_pos; } -int -_gnutls_parse_supplemental(gnutls_session_t session, - const uint8_t * data, int datalen) +int _gnutls_parse_supplemental(gnutls_session_t session, const uint8_t *data, + int datalen) { const uint8_t *p = data; size_t dsize = datalen; @@ -218,9 +216,9 @@ _gnutls_parse_supplemental(gnutls_session_t session, supp_data_length = _gnutls_read_uint16(p); p += 2; - _gnutls_debug_log - ("EXT[%p]: Got supplemental type=%02x length=%d\n", - session, supp_data_type, supp_data_length); + _gnutls_debug_log( + "EXT[%p]: Got supplemental type=%02x length=%d\n", + session, supp_data_type, supp_data_length); recv_func = get_supp_func_recv(session, supp_data_type); if (recv_func) { @@ -236,13 +234,12 @@ _gnutls_parse_supplemental(gnutls_session_t session, DECR_LEN(dsize, supp_data_length); p += supp_data_length; - } - while (dsize > 0); + } while (dsize > 0); return 0; } -static int _gnutls_supplemental_register(gnutls_supplemental_entry_st * entry) +static int _gnutls_supplemental_register(gnutls_supplemental_entry_st *entry) { gnutls_supplemental_entry_st *p; unsigned i; @@ -293,11 +290,10 @@ static int _gnutls_supplemental_register(gnutls_supplemental_entry_st * entry) * * Since: 3.4.0 **/ -int -gnutls_supplemental_register(const char *name, - gnutls_supplemental_data_format_type_t type, - gnutls_supp_recv_func recv_func, - gnutls_supp_send_func send_func) +int gnutls_supplemental_register(const char *name, + gnutls_supplemental_data_format_type_t type, + gnutls_supp_recv_func recv_func, + gnutls_supp_send_func send_func) { gnutls_supplemental_entry_st tmp_entry; int ret; @@ -341,12 +337,11 @@ gnutls_supplemental_register(const char *name, * * Since: 3.5.5 **/ -int -gnutls_session_supplemental_register(gnutls_session_t session, const char *name, - gnutls_supplemental_data_format_type_t - type, gnutls_supp_recv_func recv_func, - gnutls_supp_send_func send_func, - unsigned flags) +int gnutls_session_supplemental_register( + gnutls_session_t session, const char *name, + gnutls_supplemental_data_format_type_t type, + gnutls_supp_recv_func recv_func, gnutls_supp_send_func send_func, + unsigned flags) { gnutls_supplemental_entry_st tmp_entry; gnutls_supplemental_entry_st *p; @@ -364,7 +359,7 @@ gnutls_session_supplemental_register(gnutls_session_t session, const char *name, p = gnutls_realloc(session->internals.rsup, sizeof(gnutls_supplemental_entry_st) * - (session->internals.rsup_size + 1)); + (session->internals.rsup_size + 1)); if (!p) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); @@ -390,12 +385,11 @@ gnutls_session_supplemental_register(gnutls_session_t session, const char *name, * * Since: 3.4.0 **/ -void -gnutls_supplemental_recv(gnutls_session_t session, - unsigned do_recv_supplemental) +void gnutls_supplemental_recv(gnutls_session_t session, + unsigned do_recv_supplemental) { session->security_parameters.do_recv_supplemental = - do_recv_supplemental; + do_recv_supplemental; } /** @@ -408,10 +402,9 @@ gnutls_supplemental_recv(gnutls_session_t session, * * Since: 3.4.0 **/ -void -gnutls_supplemental_send(gnutls_session_t session, - unsigned do_send_supplemental) +void gnutls_supplemental_send(gnutls_session_t session, + unsigned do_send_supplemental) { session->security_parameters.do_send_supplemental = - do_send_supplemental; + do_send_supplemental; } diff --git a/lib/supplemental.h b/lib/supplemental.h index 06b099192c..1962bd2bd8 100644 --- a/lib/supplemental.h +++ b/lib/supplemental.h @@ -21,14 +21,14 @@ */ #ifndef GNUTLS_LIB_SUPPLEMENTAL_H -# define GNUTLS_LIB_SUPPLEMENTAL_H +#define GNUTLS_LIB_SUPPLEMENTAL_H -# include "gnutls_int.h" +#include "gnutls_int.h" -int _gnutls_parse_supplemental(gnutls_session_t session, - const uint8_t * data, int data_size); -int _gnutls_gen_supplemental(gnutls_session_t session, gnutls_buffer_st * buf); +int _gnutls_parse_supplemental(gnutls_session_t session, const uint8_t *data, + int data_size); +int _gnutls_gen_supplemental(gnutls_session_t session, gnutls_buffer_st *buf); void _gnutls_supplemental_deinit(void); -#endif /* GNUTLS_LIB_SUPPLEMENTAL_H */ +#endif /* GNUTLS_LIB_SUPPLEMENTAL_H */ diff --git a/lib/system-keys.h b/lib/system-keys.h index 7687816553..1f809542bc 100644 --- a/lib/system-keys.h +++ b/lib/system-keys.h @@ -19,13 +19,13 @@ */ #ifndef GNUTLS_LIB_SYSTEM_KEYS_H -# define GNUTLS_LIB_SYSTEM_KEYS_H +#define GNUTLS_LIB_SYSTEM_KEYS_H -# ifdef _WIN32 -# define _gnutls_system_url_is_supported(x) 1 -# else -# define _gnutls_system_url_is_supported(x) 0 -# endif +#ifdef _WIN32 +#define _gnutls_system_url_is_supported(x) 1 +#else +#define _gnutls_system_url_is_supported(x) 0 +#endif int _gnutls_x509_crt_import_system_url(gnutls_x509_crt_t crt, const char *url); @@ -34,4 +34,4 @@ int _gnutls_privkey_import_system_url(gnutls_privkey_t pkey, const char *url); void _gnutls_system_key_deinit(void); int _gnutls_system_key_init(void); -#endif /* GNUTLS_LIB_SYSTEM_KEYS_H */ +#endif /* GNUTLS_LIB_SYSTEM_KEYS_H */ diff --git a/lib/system.c b/lib/system.c index a7b742d2eb..9d35db3154 100644 --- a/lib/system.c +++ b/lib/system.c @@ -33,12 +33,12 @@ #include #ifdef _WIN32 -# include -# include -# if defined(NEED_CERT_ENUM_CRLS) +#include +#include +#if defined(NEED_CERT_ENUM_CRLS) CertEnumCRLsInStoreFunc pCertEnumCRLsInStore; static HMODULE Crypt32_dll; -# endif +#endif #endif /* System specific function wrappers for certificate stores. @@ -75,9 +75,8 @@ int gnutls_system_global_init(void) if (crypto == NULL) return GNUTLS_E_CRYPTO_INIT_FAILED; - pCertEnumCRLsInStore = - (CertEnumCRLsInStoreFunc) GetProcAddress(crypto, - "CertEnumCRLsInStore"); + pCertEnumCRLsInStore = (CertEnumCRLsInStoreFunc)GetProcAddress( + crypto, "CertEnumCRLsInStore"); if (pCertEnumCRLsInStore == NULL) { FreeLibrary(crypto); return GNUTLS_E_CRYPTO_INIT_FAILED; diff --git a/lib/system.h b/lib/system.h index 329cf3a368..ba15987e02 100644 --- a/lib/system.h +++ b/lib/system.h @@ -22,52 +22,52 @@ */ #ifndef GNUTLS_LIB_SYSTEM_H -# define GNUTLS_LIB_SYSTEM_H - -# include "gnutls_int.h" -# include -# include - -# ifdef _WIN32 -# if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) && __MINGW32_MAJOR_VERSION <= 3 && __MINGW32_MINOR_VERSION <= 20 -# define NEED_CERT_ENUM_CRLS -typedef PCCRL_CONTEXT WINAPI(*CertEnumCRLsInStoreFunc) (HCERTSTORE - hCertStore, - PCCRL_CONTEXT - pPrevCrlContext); +#define GNUTLS_LIB_SYSTEM_H + +#include "gnutls_int.h" +#include +#include + +#ifdef _WIN32 +#if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) && \ + __MINGW32_MAJOR_VERSION <= 3 && __MINGW32_MINOR_VERSION <= 20 +#define NEED_CERT_ENUM_CRLS +typedef PCCRL_CONTEXT + WINAPI (*CertEnumCRLsInStoreFunc)(HCERTSTORE hCertStore, + PCCRL_CONTEXT pPrevCrlContext); extern CertEnumCRLsInStoreFunc pCertEnumCRLsInStore; -# else -# define pCertEnumCRLsInStore CertEnumCRLsInStore -# endif -# include /* for Sleep */ -# else -# include /* for writev */ -# endif +#else +#define pCertEnumCRLsInStore CertEnumCRLsInStore +#endif +#include /* for Sleep */ +#else +#include /* for writev */ +#endif -# include "pathbuf.h" +#include "pathbuf.h" int system_errno(gnutls_transport_ptr_t); ssize_t system_write(gnutls_transport_ptr_t ptr, const void *data, size_t data_size); -# define HAVE_WRITEV -ssize_t system_writev(gnutls_transport_ptr_t ptr, const giovec_t * iovec, +#define HAVE_WRITEV +ssize_t system_writev(gnutls_transport_ptr_t ptr, const giovec_t *iovec, int iovec_cnt); ssize_t system_writev_nosignal(gnutls_transport_ptr_t ptr, - const giovec_t * iovec, int iovec_cnt); -ssize_t system_writev_tfo(gnutls_session_t ptr, const giovec_t * iovec, + const giovec_t *iovec, int iovec_cnt); +ssize_t system_writev_tfo(gnutls_session_t ptr, const giovec_t *iovec, int iovec_cnt); -ssize_t system_writev_nosignal_tfo(gnutls_session_t ptr, const giovec_t * iovec, +ssize_t system_writev_nosignal_tfo(gnutls_session_t ptr, const giovec_t *iovec, int iovec_cnt); ssize_t system_read(gnutls_transport_ptr_t ptr, void *data, size_t data_size); -# if defined(_WIN32) -# define HAVE_WIN32_LOCKS -# elif defined(HAVE_LIBPTHREAD) || defined(HAVE_PTHREAD_MUTEX_LOCK) -# define HAVE_PTHREAD_LOCKS -# else -# define HAVE_NO_LOCKS -# endif +#if defined(_WIN32) +#define HAVE_WIN32_LOCKS +#elif defined(HAVE_LIBPTHREAD) || defined(HAVE_PTHREAD_MUTEX_LOCK) +#define HAVE_PTHREAD_LOCKS +#else +#define HAVE_NO_LOCKS +#endif typedef void (*gnutls_gettime_func)(struct timespec *); @@ -76,27 +76,27 @@ extern gnutls_gettime_func gnutls_gettime; static inline void millisleep(unsigned int ms) { -# ifdef _WIN32 +#ifdef _WIN32 Sleep(ms); -# else +#else struct timespec ts; ts.tv_sec = 0; ts.tv_nsec = ms * 1000 * 1000; nanosleep(&ts, NULL); -# endif +#endif } int _gnutls_find_config_path(char *path, size_t max_size); -int _gnutls_ucs2_to_utf8(const void *data, size_t size, - gnutls_datum_t * output, unsigned bigendian); -int _gnutls_utf8_to_ucs2(const void *data, size_t size, - gnutls_datum_t * output, unsigned be); +int _gnutls_ucs2_to_utf8(const void *data, size_t size, gnutls_datum_t *output, + unsigned bigendian); +int _gnutls_utf8_to_ucs2(const void *data, size_t size, gnutls_datum_t *output, + unsigned be); void _gnutls_global_set_gettime_function(gnutls_gettime_func gettime_func); int gnutls_system_global_init(void); void gnutls_system_global_deinit(void); -#endif /* GNUTLS_LIB_SYSTEM_H */ +#endif /* GNUTLS_LIB_SYSTEM_H */ diff --git a/lib/system/certs.c b/lib/system/certs.c index b7d9a0b312..4c649b2141 100644 --- a/lib/system/certs.c +++ b/lib/system/certs.c @@ -32,22 +32,22 @@ #include "system.h" #ifdef _WIN32 -# include -# include +#include +#include -#else /* !_WIN32 */ +#else /* !_WIN32 */ -# include +#include -# if defined(HAVE_GETPWUID_R) -# include -# endif +#if defined(HAVE_GETPWUID_R) +#include +#endif #endif #ifdef __APPLE__ -# include -# include -# include +#include +#include +#include #endif /* System specific function wrappers for certificate stores. @@ -103,59 +103,49 @@ int _gnutls_find_config_path(char *path, size_t max_size) return 0; } -#if defined(DEFAULT_TRUST_STORE_FILE) || (defined(DEFAULT_TRUST_STORE_PKCS11) && defined(ENABLE_PKCS11)) -static -int -add_system_trust(gnutls_x509_trust_list_t list, - unsigned int tl_flags, unsigned int tl_vflags) +#if defined(DEFAULT_TRUST_STORE_FILE) || \ + (defined(DEFAULT_TRUST_STORE_PKCS11) && defined(ENABLE_PKCS11)) +static int add_system_trust(gnutls_x509_trust_list_t list, + unsigned int tl_flags, unsigned int tl_vflags) { int ret, r = 0; const char *crl_file = -# ifdef DEFAULT_CRL_FILE - DEFAULT_CRL_FILE; -# else - NULL; -# endif - -# if defined(ENABLE_PKCS11) && defined(DEFAULT_TRUST_STORE_PKCS11) - ret = - gnutls_x509_trust_list_add_trust_file(list, - DEFAULT_TRUST_STORE_PKCS11, - crl_file, - GNUTLS_X509_FMT_DER, - tl_flags, tl_vflags); +#ifdef DEFAULT_CRL_FILE + DEFAULT_CRL_FILE; +#else + NULL; +#endif + +#if defined(ENABLE_PKCS11) && defined(DEFAULT_TRUST_STORE_PKCS11) + ret = gnutls_x509_trust_list_add_trust_file( + list, DEFAULT_TRUST_STORE_PKCS11, crl_file, GNUTLS_X509_FMT_DER, + tl_flags, tl_vflags); if (ret > 0) r += ret; -# endif - -# ifdef DEFAULT_TRUST_STORE_FILE - ret = - gnutls_x509_trust_list_add_trust_file(list, - DEFAULT_TRUST_STORE_FILE, - crl_file, - GNUTLS_X509_FMT_PEM, - tl_flags, tl_vflags); +#endif + +#ifdef DEFAULT_TRUST_STORE_FILE + ret = gnutls_x509_trust_list_add_trust_file( + list, DEFAULT_TRUST_STORE_FILE, crl_file, GNUTLS_X509_FMT_PEM, + tl_flags, tl_vflags); if (ret > 0) r += ret; -# endif +#endif -# ifdef DEFAULT_BLOCKLIST_FILE - ret = - gnutls_x509_trust_list_remove_trust_file(list, - DEFAULT_BLOCKLIST_FILE, - GNUTLS_X509_FMT_PEM); +#ifdef DEFAULT_BLOCKLIST_FILE + ret = gnutls_x509_trust_list_remove_trust_file( + list, DEFAULT_BLOCKLIST_FILE, GNUTLS_X509_FMT_PEM); if (ret < 0) { _gnutls_debug_log("Could not load blocklist file '%s'\n", DEFAULT_BLOCKLIST_FILE); } -# endif +#endif return r; } #elif defined(_WIN32) -static -int add_system_trust(gnutls_x509_trust_list_t list, unsigned int tl_flags, - unsigned int tl_vflags) +static int add_system_trust(gnutls_x509_trust_list_t list, + unsigned int tl_flags, unsigned int tl_vflags) { unsigned int i; int r = 0; @@ -167,15 +157,13 @@ int add_system_trust(gnutls_x509_trust_list_t list, unsigned int tl_flags, gnutls_datum_t data; if (i == 0) - store = - CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0, - CERT_SYSTEM_STORE_CURRENT_USER, - L"ROOT"); + store = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0, + CERT_SYSTEM_STORE_CURRENT_USER, + L"ROOT"); else - store = - CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0, - CERT_SYSTEM_STORE_CURRENT_USER, - L"CA"); + store = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0, + CERT_SYSTEM_STORE_CURRENT_USER, + L"CA"); if (store == NULL) return GNUTLS_E_FILE_ERROR; @@ -187,10 +175,10 @@ int add_system_trust(gnutls_x509_trust_list_t list, unsigned int tl_flags, if (cert->dwCertEncodingType == X509_ASN_ENCODING) { data.data = cert->pbCertEncoded; data.size = cert->cbCertEncoded; - if (gnutls_x509_trust_list_add_trust_mem - (list, &data, NULL, - GNUTLS_X509_FMT_DER, tl_flags, - tl_vflags) > 0) + if (gnutls_x509_trust_list_add_trust_mem( + list, &data, NULL, + GNUTLS_X509_FMT_DER, tl_flags, + tl_vflags) > 0) r++; } cert = CertEnumCertificatesInStore(store, cert); @@ -200,40 +188,36 @@ int add_system_trust(gnutls_x509_trust_list_t list, unsigned int tl_flags, if (crl->dwCertEncodingType == X509_ASN_ENCODING) { data.data = crl->pbCrlEncoded; data.size = crl->cbCrlEncoded; - gnutls_x509_trust_list_add_trust_mem(list, - NULL, - &data, - GNUTLS_X509_FMT_DER, - tl_flags, - tl_vflags); + gnutls_x509_trust_list_add_trust_mem( + list, NULL, &data, GNUTLS_X509_FMT_DER, + tl_flags, tl_vflags); } crl = pCertEnumCRLsInStore(store, crl); } CertCloseStore(store, 0); } -# ifdef DEFAULT_BLOCKLIST_FILE - ret = - gnutls_x509_trust_list_remove_trust_file(list, - DEFAULT_BLOCKLIST_FILE, - GNUTLS_X509_FMT_PEM); +#ifdef DEFAULT_BLOCKLIST_FILE + ret = gnutls_x509_trust_list_remove_trust_file( + list, DEFAULT_BLOCKLIST_FILE, GNUTLS_X509_FMT_PEM); if (ret < 0) { _gnutls_debug_log("Could not load blocklist file '%s'\n", DEFAULT_BLOCKLIST_FILE); } -# endif +#endif return r; } -#elif defined(ANDROID) || defined(__ANDROID__) || defined(DEFAULT_TRUST_STORE_DIR) +#elif defined(ANDROID) || defined(__ANDROID__) || \ + defined(DEFAULT_TRUST_STORE_DIR) -# include -# include +#include +#include -# if defined(ANDROID) || defined(__ANDROID__) -# define DEFAULT_TRUST_STORE_DIR "/system/etc/security/cacerts/" +#if defined(ANDROID) || defined(__ANDROID__) +#define DEFAULT_TRUST_STORE_DIR "/system/etc/security/cacerts/" -# define DEFAULT_REVOCATION_DIR "/data/misc/keychain/cacerts-removed" +#define DEFAULT_REVOCATION_DIR "/data/misc/keychain/cacerts-removed" static int load_revoked_certs(gnutls_x509_trust_list_t list, unsigned type) { @@ -261,8 +245,8 @@ static int load_revoked_certs(gnutls_x509_trust_list_t list, unsigned type) if (ret < 0) { continue; } - ret = gnutls_x509_trust_list_remove_trust_file - (list, pathbuf.ptr, type); + ret = gnutls_x509_trust_list_remove_trust_file( + list, pathbuf.ptr, type); if (ret >= 0) { r += ret; } @@ -274,42 +258,38 @@ static int load_revoked_certs(gnutls_x509_trust_list_t list, unsigned type) return r; } -# endif +#endif /* This works on android 4.x */ -static -int add_system_trust(gnutls_x509_trust_list_t list, unsigned int tl_flags, - unsigned int tl_vflags) +static int add_system_trust(gnutls_x509_trust_list_t list, + unsigned int tl_flags, unsigned int tl_vflags) { int r = 0, ret; - ret = - gnutls_x509_trust_list_add_trust_dir(list, DEFAULT_TRUST_STORE_DIR, - NULL, GNUTLS_X509_FMT_PEM, - tl_flags, tl_vflags); + ret = gnutls_x509_trust_list_add_trust_dir(list, + DEFAULT_TRUST_STORE_DIR, + NULL, GNUTLS_X509_FMT_PEM, + tl_flags, tl_vflags); if (ret >= 0) r += ret; -# if defined(ANDROID) || defined(__ANDROID__) +#if defined(ANDROID) || defined(__ANDROID__) ret = load_revoked_certs(list, GNUTLS_X509_FMT_DER); if (ret >= 0) r -= ret; - ret = - gnutls_x509_trust_list_add_trust_dir(list, - "/data/misc/keychain/cacerts-added/", - NULL, GNUTLS_X509_FMT_DER, - tl_flags, tl_vflags); + ret = gnutls_x509_trust_list_add_trust_dir( + list, "/data/misc/keychain/cacerts-added/", NULL, + GNUTLS_X509_FMT_DER, tl_flags, tl_vflags); if (ret >= 0) r += ret; -# endif +#endif return r; } #elif defined(__APPLE__) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070 -static -int osstatus_error(status) +static int osstatus_error(status) { CFStringRef err_str = SecCopyErrorMessageString(status, NULL); _gnutls_debug_log("Error loading system root certificates: %s\n", @@ -319,20 +299,18 @@ int osstatus_error(status) return GNUTLS_E_FILE_ERROR; } -static -int add_system_trust(gnutls_x509_trust_list_t list, unsigned int tl_flags, - unsigned int tl_vflags) +static int add_system_trust(gnutls_x509_trust_list_t list, + unsigned int tl_flags, unsigned int tl_vflags) { int r = 0; SecTrustSettingsDomain domain[] = { kSecTrustSettingsDomainUser, - kSecTrustSettingsDomainAdmin, - kSecTrustSettingsDomainSystem - }; + kSecTrustSettingsDomainAdmin, + kSecTrustSettingsDomainSystem }; for (size_t d = 0; d < sizeof(domain) / sizeof(*domain); d++) { CFArrayRef certs = NULL; - OSStatus status = SecTrustSettingsCopyCertificates(domain[d], - &certs); + OSStatus status = + SecTrustSettingsCopyCertificates(domain[d], &certs); if (status == errSecNoTrustSettings) continue; if (status != errSecSuccess) @@ -341,7 +319,7 @@ int add_system_trust(gnutls_x509_trust_list_t list, unsigned int tl_flags, int cert_count = CFArrayGetCount(certs); for (int i = 0; i < cert_count; i++) { SecCertificateRef cert = - (void *)CFArrayGetValueAtIndex(certs, i); + (void *)CFArrayGetValueAtIndex(certs, i); CFDataRef der; status = SecItemExport(cert, kSecFormatX509Cert, 0, NULL, &der); @@ -351,35 +329,35 @@ int add_system_trust(gnutls_x509_trust_list_t list, unsigned int tl_flags, return osstatus_error(status); } - if (gnutls_x509_trust_list_add_trust_mem(list, - & - (gnutls_datum_t) - { - .data = - (void *) - CFDataGetBytePtr(der),.size = CFDataGetLength(der),}, NULL, GNUTLS_X509_FMT_DER, tl_flags, tl_vflags) > 0) + if (gnutls_x509_trust_list_add_trust_mem( + list, + &(gnutls_datum_t){ + .data = (void *)CFDataGetBytePtr( + der), + .size = CFDataGetLength(der), + }, + NULL, GNUTLS_X509_FMT_DER, tl_flags, + tl_vflags) > 0) r++; CFRelease(der); } CFRelease(certs); } -# ifdef DEFAULT_BLOCKLIST_FILE - ret = - gnutls_x509_trust_list_remove_trust_file(list, - DEFAULT_BLOCKLIST_FILE, - GNUTLS_X509_FMT_PEM); +#ifdef DEFAULT_BLOCKLIST_FILE + ret = gnutls_x509_trust_list_remove_trust_file( + list, DEFAULT_BLOCKLIST_FILE, GNUTLS_X509_FMT_PEM); if (ret < 0) { _gnutls_debug_log("Could not load blocklist file '%s'\n", DEFAULT_BLOCKLIST_FILE); } -# endif +#endif return r; } #else -# define add_system_trust(x,y,z) GNUTLS_E_UNIMPLEMENTED_FEATURE +#define add_system_trust(x, y, z) GNUTLS_E_UNIMPLEMENTED_FEATURE #endif @@ -399,10 +377,9 @@ int add_system_trust(gnutls_x509_trust_list_t list, unsigned int tl_flags, * * Since: 3.1 **/ -int -gnutls_x509_trust_list_add_system_trust(gnutls_x509_trust_list_t list, - unsigned int tl_flags, - unsigned int tl_vflags) +int gnutls_x509_trust_list_add_system_trust(gnutls_x509_trust_list_t list, + unsigned int tl_flags, + unsigned int tl_vflags) { return add_system_trust(list, tl_flags | GNUTLS_TL_NO_DUPLICATES, tl_vflags); diff --git a/lib/system/fastopen.c b/lib/system/fastopen.c index e60abf4aa5..4369223144 100644 --- a/lib/system/fastopen.c +++ b/lib/system/fastopen.c @@ -26,23 +26,25 @@ #include "errors.h" #include -#include /* IPPROTO_TCP */ +#include /* IPPROTO_TCP */ #include #include #include /* Get TCP_FASTOPEN */ #ifdef HAVE_NETINET_TCP_H -# include +#include #endif /* TCP Fast Open on OSX behaves differently from Linux, so define these helpers */ -#if defined __APPLE__ && defined __MACH__ && defined CONNECT_DATA_IDEMPOTENT && defined CONNECT_RESUME_ON_READ_WRITE -# if defined __has_builtin && __has_builtin(__builtin_available) -# define TCP_FASTOPEN_OSX -# endif +#if defined __APPLE__ && defined __MACH__ && \ + defined CONNECT_DATA_IDEMPOTENT && \ + defined CONNECT_RESUME_ON_READ_WRITE +#if defined __has_builtin && __has_builtin(__builtin_available) +#define TCP_FASTOPEN_OSX +#endif #elif defined TCP_FASTOPEN && defined MSG_FASTOPEN -# define TCP_FASTOPEN_LINUX +#define TCP_FASTOPEN_LINUX #endif /* Do not use the gnulib functions for sending and receiving data. @@ -54,8 +56,8 @@ #undef connect #ifdef _WIN32 -static ssize_t -tfo_writev(gnutls_transport_ptr_t ptr, const giovec_t * iovec, int iovec_cnt) +static ssize_t tfo_writev(gnutls_transport_ptr_t ptr, const giovec_t *iovec, + int iovec_cnt) { tfo_st *p = ptr; int fd = p->fd; @@ -80,9 +82,9 @@ tfo_writev(gnutls_transport_ptr_t ptr, const giovec_t * iovec, int iovec_cnt) return system_writev(GNUTLS_INT_TO_POINTER(fd), iovec, iovec_cnt); } -#else /* sendmsg */ -static ssize_t -tfo_writev(gnutls_transport_ptr_t ptr, const giovec_t * iovec, int iovec_cnt) +#else /* sendmsg */ +static ssize_t tfo_writev(gnutls_transport_ptr_t ptr, const giovec_t *iovec, + int iovec_cnt) { tfo_st *p = ptr; int fd = p->fd; @@ -96,14 +98,14 @@ tfo_writev(gnutls_transport_ptr_t ptr, const giovec_t * iovec, int iovec_cnt) if (likely(!p->connect_addrlen)) return sendmsg(fd, &hdr, p->flags); -# if defined(TCP_FASTOPEN_LINUX) +#if defined(TCP_FASTOPEN_LINUX) if (!p->connect_only) { int on = 1; - if (setsockopt(fd, IPPROTO_TCP, TCP_FASTOPEN, &on, sizeof(on)) - == -1) - _gnutls_debug_log - ("Failed to set socket option FASTOPEN\n"); + if (setsockopt(fd, IPPROTO_TCP, TCP_FASTOPEN, &on, + sizeof(on)) == -1) + _gnutls_debug_log( + "Failed to set socket option FASTOPEN\n"); hdr.msg_name = &p->connect_addr; hdr.msg_namelen = p->connect_addrlen; @@ -113,20 +115,19 @@ tfo_writev(gnutls_transport_ptr_t ptr, const giovec_t * iovec, int iovec_cnt) if (ret < 0) { if (errno == EINPROGRESS) { gnutls_assert(); - errno = EAGAIN; // GnuTLS does not handle EINPROGRESS + errno = EAGAIN; // GnuTLS does not handle EINPROGRESS } else if (errno == EOPNOTSUPP) { // fallback from fastopen, e.g. when fastopen is disabled in system - _gnutls_debug_log - ("Fallback from TCP Fast Open... TFO is not enabled at system level\n"); + _gnutls_debug_log( + "Fallback from TCP Fast Open... TFO is not enabled at system level\n"); p->connect_only = 1; goto connect_only; } } } else { - connect_only: - ret = - connect(fd, (struct sockaddr *)&p->connect_addr, - p->connect_addrlen); + connect_only: + ret = connect(fd, (struct sockaddr *)&p->connect_addr, + p->connect_addrlen); if (errno == ENOTCONN || errno == EINPROGRESS) { gnutls_assert(); errno = EAGAIN; @@ -135,40 +136,37 @@ tfo_writev(gnutls_transport_ptr_t ptr, const giovec_t * iovec, int iovec_cnt) if (ret == 0) p->connect_only = 0; } -# elif defined(TCP_FASTOPEN_OSX) +#elif defined(TCP_FASTOPEN_OSX) { - if (__builtin_available - (macOS 10.11, iOS 9.0, tvOS 9.0, watchOS 2.0, *)) { - sa_endpoints_t endpoints = {.sae_dstaddr = - (struct sockaddr *)&p-> - connect_addr,.sae_dstaddrlen = - p->connect_addrlen + if (__builtin_available(macOS 10.11, iOS 9.0, tvOS 9.0, + watchOS 2.0, *)) { + sa_endpoints_t endpoints = { + .sae_dstaddr = + (struct sockaddr *)&p->connect_addr, + .sae_dstaddrlen = p->connect_addrlen }; - ret = - connectx(fd, &endpoints, SAE_ASSOCID_ANY, - CONNECT_RESUME_ON_READ_WRITE | - CONNECT_DATA_IDEMPOTENT, NULL, 0, NULL, - NULL); + ret = connectx(fd, &endpoints, SAE_ASSOCID_ANY, + CONNECT_RESUME_ON_READ_WRITE | + CONNECT_DATA_IDEMPOTENT, + NULL, 0, NULL, NULL); } else { - ret = - connect(fd, (struct sockaddr *)&p->connect_addr, - p->connect_addrlen); + ret = connect(fd, (struct sockaddr *)&p->connect_addr, + p->connect_addrlen); } if (errno == ENOTCONN || errno == EINPROGRESS) { gnutls_assert(); errno = EAGAIN; } } -# else - ret = - connect(fd, (struct sockaddr *)&p->connect_addr, - p->connect_addrlen); +#else + ret = connect(fd, (struct sockaddr *)&p->connect_addr, + p->connect_addrlen); if (errno == ENOTCONN || errno == EINPROGRESS) { gnutls_assert(); errno = EAGAIN; } -# endif +#endif if (ret == 0 || errno != EAGAIN) { /* This has to be called just once, connect info not needed any more */ @@ -177,19 +175,18 @@ tfo_writev(gnutls_transport_ptr_t ptr, const giovec_t * iovec, int iovec_cnt) return ret; } -#endif /* sendmsg */ +#endif /* sendmsg */ -static -int tfo_recv_timeout(gnutls_transport_ptr_t ptr, unsigned int ms) +static int tfo_recv_timeout(gnutls_transport_ptr_t ptr, unsigned int ms) { tfo_st *p = ptr; - return gnutls_system_recv_timeout((gnutls_transport_ptr_t) (long)p->fd, + return gnutls_system_recv_timeout((gnutls_transport_ptr_t)(long)p->fd, ms); } -static ssize_t -tfo_read(gnutls_transport_ptr_t ptr, void *data, size_t data_size) +static ssize_t tfo_read(gnutls_transport_ptr_t ptr, void *data, + size_t data_size) { tfo_st *p = ptr; @@ -228,13 +225,13 @@ tfo_read(gnutls_transport_ptr_t ptr, void *data, size_t data_size) * * Since: 3.5.3 **/ -void -gnutls_transport_set_fastopen(gnutls_session_t session, - int fd, struct sockaddr *connect_addr, - socklen_t connect_addrlen, unsigned int flags) +void gnutls_transport_set_fastopen(gnutls_session_t session, int fd, + struct sockaddr *connect_addr, + socklen_t connect_addrlen, + unsigned int flags) { if (connect_addrlen > - (socklen_t) sizeof(session->internals.tfo.connect_addr)) { + (socklen_t)sizeof(session->internals.tfo.connect_addr)) { gnutls_assert(); return; } diff --git a/lib/system/keys-dummy.c b/lib/system/keys-dummy.c index d2fb5910c4..750bee2b35 100644 --- a/lib/system/keys-dummy.c +++ b/lib/system/keys-dummy.c @@ -33,13 +33,10 @@ void gnutls_system_key_iter_deinit(gnutls_system_key_iter_t iter) return; } -int -gnutls_system_key_iter_get_info(gnutls_system_key_iter_t * iter, - unsigned cert_type, - char **cert_url, - char **key_url, - char **label, - gnutls_datum_t * der, unsigned int flags) +int gnutls_system_key_iter_get_info(gnutls_system_key_iter_t *iter, + unsigned cert_type, char **cert_url, + char **key_url, char **label, + gnutls_datum_t *der, unsigned int flags) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } diff --git a/lib/system/keys-win.c b/lib/system/keys-win.c index 27152558ef..3811b81b3b 100644 --- a/lib/system/keys-win.c +++ b/lib/system/keys-win.c @@ -22,8 +22,8 @@ // Before including any Windows header we need to set _WIN32_WINNT to Vista // (or higher) so that the NCRYPT stuff can be used. #if _WIN32_WINNT < 0x600 -# undef _WIN32_WINNT -# define _WIN32_WINNT 0x600 +#undef _WIN32_WINNT +#define _WIN32_WINNT 0x600 #endif #include @@ -39,7 +39,7 @@ #include #if !defined(_WIN32) -# error should not be included +#error should not be included #endif #include @@ -47,61 +47,60 @@ #include #ifdef __MINGW32__ -# include <_mingw.h> -# ifdef __MINGW64_VERSION_MAJOR +#include <_mingw.h> +#ifdef __MINGW64_VERSION_MAJOR /* MinGW64 */ -# include -# else +#include +#else /* mingw.org's MinGW */ -# include -# define BCRYPT_PAD_PKCS1 0x00000002 -# define BCRYPT_RSA_ALGORITHM L"RSA" -# define BCRYPT_DSA_ALGORITHM L"DSA" -# define BCRYPT_SHA1_ALGORITHM L"SHA1" -# define BCRYPT_SHA256_ALGORITHM L"SHA256" -# define BCRYPT_SHA384_ALGORITHM L"SHA384" -# define BCRYPT_SHA512_ALGORITHM L"SHA512" -# define BCRYPT_ECDSA_P256_ALGORITHM L"ECDSA_P256" -# define BCRYPT_ECDSA_P384_ALGORITHM L"ECDSA_P384" -# define BCRYPT_ECDSA_P521_ALGORITHM L"ECDSA_P521" +#include +#define BCRYPT_PAD_PKCS1 0x00000002 +#define BCRYPT_RSA_ALGORITHM L"RSA" +#define BCRYPT_DSA_ALGORITHM L"DSA" +#define BCRYPT_SHA1_ALGORITHM L"SHA1" +#define BCRYPT_SHA256_ALGORITHM L"SHA256" +#define BCRYPT_SHA384_ALGORITHM L"SHA384" +#define BCRYPT_SHA512_ALGORITHM L"SHA512" +#define BCRYPT_ECDSA_P256_ALGORITHM L"ECDSA_P256" +#define BCRYPT_ECDSA_P384_ALGORITHM L"ECDSA_P384" +#define BCRYPT_ECDSA_P521_ALGORITHM L"ECDSA_P521" typedef ULONG_PTR NCRYPT_HANDLE; typedef ULONG_PTR NCRYPT_PROV_HANDLE; typedef ULONG_PTR NCRYPT_KEY_HANDLE; typedef struct _BCRYPT_PKCS1_PADDING_INFO { LPCWSTR pszAlgId; } BCRYPT_PKCS1_PADDING_INFO; -# endif -#else /* non-mingw */ -# include +#endif +#else /* non-mingw */ +#include #endif // MinGW headers may not have these defines #ifndef NCRYPT_SHA1_ALGORITHM -# define NCRYPT_SHA1_ALGORITHM BCRYPT_SHA1_ALGORITHM +#define NCRYPT_SHA1_ALGORITHM BCRYPT_SHA1_ALGORITHM #endif #ifndef NCRYPT_SHA256_ALGORITHM -# define NCRYPT_SHA256_ALGORITHM BCRYPT_SHA256_ALGORITHM +#define NCRYPT_SHA256_ALGORITHM BCRYPT_SHA256_ALGORITHM #endif #ifndef NCRYPT_SHA384_ALGORITHM -# define NCRYPT_SHA384_ALGORITHM BCRYPT_SHA384_ALGORITHM +#define NCRYPT_SHA384_ALGORITHM BCRYPT_SHA384_ALGORITHM #endif #ifndef NCRYPT_SHA512_ALGORITHM -# define NCRYPT_SHA512_ALGORITHM BCRYPT_SHA512_ALGORITHM +#define NCRYPT_SHA512_ALGORITHM BCRYPT_SHA512_ALGORITHM #endif #ifndef NCRYPT_PAD_PKCS1_FLAG -# define NCRYPT_PAD_PKCS1_FLAG 2 +#define NCRYPT_PAD_PKCS1_FLAG 2 #endif #ifndef NCRYPT_ALGORITHM_PROPERTY -# define NCRYPT_ALGORITHM_PROPERTY L"Algorithm Name" +#define NCRYPT_ALGORITHM_PROPERTY L"Algorithm Name" #endif #ifndef CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID -# define CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID 99 +#define CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID 99 #endif #define MAX_WID_SIZE 48 -static -void *memrev(unsigned char *pvData, DWORD cbData); +static void *memrev(unsigned char *pvData, DWORD cbData); struct system_key_iter_st { HCERTSTORE store; @@ -109,57 +108,42 @@ struct system_key_iter_st { }; typedef struct priv_st { - DWORD dwKeySpec; /* CAPI key */ - HCRYPTPROV hCryptProv; /* CAPI keystore */ - NCRYPT_KEY_HANDLE nc; /* CNG Keystore */ + DWORD dwKeySpec; /* CAPI key */ + HCRYPTPROV hCryptProv; /* CAPI keystore */ + NCRYPT_KEY_HANDLE nc; /* CNG Keystore */ gnutls_pk_algorithm_t pk; gnutls_sign_algorithm_t sign_algo; } priv_st; -typedef SECURITY_STATUS(WINAPI * NCryptDeleteKeyFunc) (NCRYPT_KEY_HANDLE hKey, - DWORD dwFlags); - -typedef SECURITY_STATUS(WINAPI * - NCryptOpenStorageProviderFunc) (NCRYPT_PROV_HANDLE * - phProvider, - LPCWSTR pszProviderName, - DWORD dwFlags); - -typedef SECURITY_STATUS(WINAPI * - NCryptOpenKeyFunc) (NCRYPT_PROV_HANDLE hProvider, - NCRYPT_KEY_HANDLE * phKey, - LPCWSTR pszKeyName, - DWORD dwLegacyKeySpec, - DWORD dwFlags); - -typedef SECURITY_STATUS(WINAPI * NCryptGetPropertyFunc) (NCRYPT_HANDLE hObject, - LPCWSTR pszProperty, - PBYTE pbOutput, - DWORD cbOutput, - DWORD * pcbResult, - DWORD dwFlags); - -typedef SECURITY_STATUS(WINAPI * NCryptFreeObjectFunc) (NCRYPT_HANDLE hObject); - -typedef SECURITY_STATUS(WINAPI * NCryptDecryptFunc) (NCRYPT_KEY_HANDLE hKey, - PBYTE pbInput, - DWORD cbInput, - VOID * pPaddingInfo, - PBYTE pbOutput, - DWORD cbOutput, - DWORD * pcbResult, +typedef SECURITY_STATUS(WINAPI *NCryptDeleteKeyFunc)(NCRYPT_KEY_HANDLE hKey, DWORD dwFlags); -typedef SECURITY_STATUS(WINAPI * NCryptSignHashFunc) (NCRYPT_KEY_HANDLE hKey, - VOID * pPaddingInfo, - PBYTE pbHashValue, - DWORD cbHashValue, - PBYTE pbSignature, - DWORD cbSignature, - DWORD * pcbResult, - DWORD dwFlags); +typedef SECURITY_STATUS(WINAPI *NCryptOpenStorageProviderFunc)( + NCRYPT_PROV_HANDLE *phProvider, LPCWSTR pszProviderName, DWORD dwFlags); + +typedef SECURITY_STATUS(WINAPI *NCryptOpenKeyFunc)(NCRYPT_PROV_HANDLE hProvider, + NCRYPT_KEY_HANDLE *phKey, + LPCWSTR pszKeyName, + DWORD dwLegacyKeySpec, + DWORD dwFlags); + +typedef SECURITY_STATUS(WINAPI *NCryptGetPropertyFunc)( + NCRYPT_HANDLE hObject, LPCWSTR pszProperty, PBYTE pbOutput, + DWORD cbOutput, DWORD *pcbResult, DWORD dwFlags); + +typedef SECURITY_STATUS(WINAPI *NCryptFreeObjectFunc)(NCRYPT_HANDLE hObject); + +typedef SECURITY_STATUS(WINAPI *NCryptDecryptFunc)( + NCRYPT_KEY_HANDLE hKey, PBYTE pbInput, DWORD cbInput, + VOID *pPaddingInfo, PBYTE pbOutput, DWORD cbOutput, DWORD *pcbResult, + DWORD dwFlags); + +typedef SECURITY_STATUS(WINAPI *NCryptSignHashFunc)( + NCRYPT_KEY_HANDLE hKey, VOID *pPaddingInfo, PBYTE pbHashValue, + DWORD cbHashValue, PBYTE pbSignature, DWORD cbSignature, + DWORD *pcbResult, DWORD dwFlags); -static int StrCmpW(const WCHAR * str1, const WCHAR * str2) +static int StrCmpW(const WCHAR *str1, const WCHAR *str2) { while (*str1 && (*str1 == *str2)) { str1++; @@ -177,23 +161,23 @@ static NCryptFreeObjectFunc pNCryptFreeObject; static NCryptDecryptFunc pNCryptDecrypt; static NCryptSignHashFunc pNCryptSignHash; #else -# define pNCryptDeleteKey NCryptDeleteKey -# define pNCryptOpenStorageProvider NCryptOpenStorageProvider -# define pNCryptOpenKey NCryptOpenKey -# define pNCryptGetProperty NCryptGetProperty -# define pNCryptFreeObject NCryptFreeObject -# define pNCryptDecrypt NCryptDecrypt -# define pNCryptSignHash NCryptSignHash +#define pNCryptDeleteKey NCryptDeleteKey +#define pNCryptOpenStorageProvider NCryptOpenStorageProvider +#define pNCryptOpenKey NCryptOpenKey +#define pNCryptGetProperty NCryptGetProperty +#define pNCryptFreeObject NCryptFreeObject +#define pNCryptDecrypt NCryptDecrypt +#define pNCryptSignHash NCryptSignHash #endif static unsigned ncrypt_init = 0; static HMODULE ncrypt_lib; -#define WIN_URL SYSTEM_URL"win:" +#define WIN_URL SYSTEM_URL "win:" #define WIN_URL_SIZE 11 -static int -get_id(const char *url, uint8_t * bin, size_t *bin_size, unsigned cert) +static int get_id(const char *url, uint8_t *bin, size_t *bin_size, + unsigned cert) { int ret; unsigned url_size = strlen(url); @@ -201,12 +185,12 @@ get_id(const char *url, uint8_t * bin, size_t *bin_size, unsigned cert) gnutls_datum_t tmp; if (cert != 0) { - if (url_size < sizeof(WIN_URL) - || strncmp(url, WIN_URL, WIN_URL_SIZE) != 0) + if (url_size < sizeof(WIN_URL) || + strncmp(url, WIN_URL, WIN_URL_SIZE) != 0) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); } else { - if (url_size < sizeof(WIN_URL) - || strncmp(url, WIN_URL, WIN_URL_SIZE) != 0) + if (url_size < sizeof(WIN_URL) || + strncmp(url, WIN_URL, WIN_URL_SIZE) != 0) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); } @@ -234,8 +218,7 @@ get_id(const char *url, uint8_t * bin, size_t *bin_size, unsigned cert) } #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -static -void *memrev(unsigned char *pvData, DWORD cbData) +static void *memrev(unsigned char *pvData, DWORD cbData) { char t; DWORD i; @@ -248,11 +231,10 @@ void *memrev(unsigned char *pvData, DWORD cbData) return pvData; } -static -int capi_sign(gnutls_privkey_t key, void *userdata, - const gnutls_datum_t * raw_data, gnutls_datum_t * signature) +static int capi_sign(gnutls_privkey_t key, void *userdata, + const gnutls_datum_t *raw_data, gnutls_datum_t *signature) { - priv_st *priv = (priv_st *) userdata; + priv_st *priv = (priv_st *)userdata; ALG_ID Algid; HCRYPTHASH hHash = 0; uint8_t digest[MAX_HASH_SIZE]; @@ -290,9 +272,8 @@ int capi_sign(gnutls_privkey_t key, void *userdata, break; default: digest_size = sizeof(digest); - ret = - decode_ber_digest_info(raw_data, &algo, digest, - &digest_size); + ret = decode_ber_digest_info(raw_data, &algo, digest, + &digest_size); if (ret < 0) return gnutls_assert_val(ret); @@ -300,11 +281,11 @@ int capi_sign(gnutls_privkey_t key, void *userdata, case GNUTLS_DIG_SHA1: Algid = CALG_SHA1; break; -# ifdef NCRYPT_SHA224_ALGORITHM +#ifdef NCRYPT_SHA224_ALGORITHM case GNUTLS_DIG_SHA224: Algid = CALG_SHA_224; break; -# endif +#endif case GNUTLS_DIG_SHA256: Algid = CALG_SHA_256; break; @@ -315,8 +296,8 @@ int capi_sign(gnutls_privkey_t key, void *userdata, Algid = CALG_SHA_512; break; default: - return - gnutls_assert_val(GNUTLS_E_UNKNOWN_HASH_ALGORITHM); + return gnutls_assert_val( + GNUTLS_E_UNKNOWN_HASH_ALGORITHM); } } @@ -336,9 +317,9 @@ int capi_sign(gnutls_privkey_t key, void *userdata, goto fail; } - if (!CryptGetHashParam - (hHash, HP_HASHSIZE, (BYTE *) & size1, &sizesize, 0) - || digest_size != size1) { + if (!CryptGetHashParam(hHash, HP_HASHSIZE, (BYTE *)&size1, &sizesize, + 0) || + digest_size != size1) { gnutls_assert(); _gnutls_debug_log("error in hash size: %d\n", (int)size1); ret = GNUTLS_E_PK_SIGN_FAILED; @@ -359,8 +340,8 @@ int capi_sign(gnutls_privkey_t key, void *userdata, if (signature->data == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - if (!CryptSignHash - (hHash, priv->dwKeySpec, NULL, 0, signature->data, &ret_sig)) { + if (!CryptSignHash(hHash, priv->dwKeySpec, NULL, 0, signature->data, + &ret_sig)) { gnutls_assert(); _gnutls_debug_log("error in signing: %d\n", (int)GetLastError()); @@ -374,18 +355,18 @@ int capi_sign(gnutls_privkey_t key, void *userdata, signature->size = ret_sig; return 0; - fail: +fail: if (hHash != 0) CryptDestroyHash(hHash); gnutls_free(signature->data); return ret; } -static -int capi_decrypt(gnutls_privkey_t key, void *userdata, - const gnutls_datum_t * ciphertext, gnutls_datum_t * plaintext) +static int capi_decrypt(gnutls_privkey_t key, void *userdata, + const gnutls_datum_t *ciphertext, + gnutls_datum_t *plaintext) { - priv_st *priv = (priv_st *) userdata; + priv_st *priv = (priv_st *)userdata; DWORD size = 0; int ret; @@ -404,31 +385,29 @@ int capi_decrypt(gnutls_privkey_t key, void *userdata, } memcpy(plaintext->data, ciphertext->data, size); - if (0 == - CryptDecrypt(priv->hCryptProv, 0, true, 0, plaintext->data, - &size)) { + if (0 == CryptDecrypt(priv->hCryptProv, 0, true, 0, plaintext->data, + &size)) { gnutls_assert(); ret = GNUTLS_E_PK_DECRYPTION_FAILED; goto fail; } return 0; - fail: +fail: gnutls_free(plaintext->data); return ret; } -static -void capi_deinit(gnutls_privkey_t key, void *userdata) +static void capi_deinit(gnutls_privkey_t key, void *userdata) { - priv_st *priv = (priv_st *) userdata; + priv_st *priv = (priv_st *)userdata; CryptReleaseContext(priv->hCryptProv, 0); gnutls_free(priv); } static int capi_info(gnutls_privkey_t key, unsigned int flags, void *userdata) { - priv_st *priv = (priv_st *) userdata; + priv_st *priv = (priv_st *)userdata; if (flags & GNUTLS_PRIVKEY_INFO_PK_ALGO) return priv->pk; @@ -437,18 +416,16 @@ static int capi_info(gnutls_privkey_t key, unsigned int flags, void *userdata) return -1; } -static -int privkey_import_capi(gnutls_privkey_t pkey, const char *url, - priv_st * priv, CRYPT_KEY_PROV_INFO * kpi) +static int privkey_import_capi(gnutls_privkey_t pkey, const char *url, + priv_st *priv, CRYPT_KEY_PROV_INFO *kpi) { HCRYPTPROV hCryptProv = 0; int ret, enc_too = 0; DWORD i, dwErrCode = 0; - if (CryptAcquireContextW(&hCryptProv, - kpi->pwszContainerName, - kpi->pwszProvName, - kpi->dwProvType, kpi->dwFlags)) { + if (CryptAcquireContextW(&hCryptProv, kpi->pwszContainerName, + kpi->pwszProvName, kpi->dwProvType, + kpi->dwFlags)) { for (i = 0; i < kpi->cProvParam; i++) if (!CryptSetProvParam(hCryptProv, kpi->rgProvParam[i].dwParam, @@ -462,20 +439,19 @@ int privkey_import_capi(gnutls_privkey_t pkey, const char *url, } if (ERROR_SUCCESS != dwErrCode) { - _gnutls_debug_log - ("error in getting cryptprov: %d from %s\n", - (int)GetLastError(), url); + _gnutls_debug_log("error in getting cryptprov: %d from %s\n", + (int)GetLastError(), url); ret = gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); goto cleanup; } { BYTE buf[100 + sizeof(PROV_ENUMALGS_EX) * 2]; - PROV_ENUMALGS_EX *pAlgo = (PROV_ENUMALGS_EX *) buf; + PROV_ENUMALGS_EX *pAlgo = (PROV_ENUMALGS_EX *)buf; DWORD len = sizeof(buf); - if (CryptGetProvParam - (hCryptProv, PP_ENUMALGS_EX, buf, &len, CRYPT_FIRST)) { + if (CryptGetProvParam(hCryptProv, PP_ENUMALGS_EX, buf, &len, + CRYPT_FIRST)) { DWORD hash = 0; do { switch (pAlgo->aiAlgid) { @@ -484,10 +460,9 @@ int privkey_import_capi(gnutls_privkey_t pkey, const char *url, enc_too = 1; break; case CALG_DSS_SIGN: - priv->pk = - priv->pk == - GNUTLS_PK_RSA ? - GNUTLS_PK_RSA : GNUTLS_PK_DSA; + priv->pk = priv->pk == GNUTLS_PK_RSA ? + GNUTLS_PK_RSA : + GNUTLS_PK_DSA; break; case CALG_SHA1: hash = 1; @@ -499,18 +474,16 @@ int privkey_import_capi(gnutls_privkey_t pkey, const char *url, break; } - len = sizeof(buf); // reset the buffer size - } while (CryptGetProvParam - (hCryptProv, PP_ENUMALGS_EX, buf, &len, - CRYPT_NEXT)); + len = sizeof(buf); // reset the buffer size + } while (CryptGetProvParam(hCryptProv, PP_ENUMALGS_EX, + buf, &len, CRYPT_NEXT)); if (priv->pk == GNUTLS_PK_DSA) priv->sign_algo = GNUTLS_SIGN_DSA_SHA1; else priv->sign_algo = - (hash > - 1) ? GNUTLS_SIGN_RSA_SHA256 : - GNUTLS_SIGN_RSA_SHA1; + (hash > 1) ? GNUTLS_SIGN_RSA_SHA256 : + GNUTLS_SIGN_RSA_SHA1; } } @@ -518,21 +491,19 @@ int privkey_import_capi(gnutls_privkey_t pkey, const char *url, priv->dwKeySpec = kpi->dwKeySpec; ret = gnutls_privkey_import_ext3(pkey, priv, capi_sign, - (enc_too != - 0) ? capi_decrypt : NULL, + (enc_too != 0) ? capi_decrypt : NULL, capi_deinit, capi_info, 0); - cleanup: +cleanup: if (ret < 0) { if (hCryptProv != 0) CryptReleaseContext(hCryptProv, 0); } return ret; } -#endif /* WINAPI_PARTITION_DESKTOP */ +#endif /* WINAPI_PARTITION_DESKTOP */ -static -int cng_sign(gnutls_privkey_t key, void *userdata, - const gnutls_datum_t * raw_data, gnutls_datum_t * signature) +static int cng_sign(gnutls_privkey_t key, void *userdata, + const gnutls_datum_t *raw_data, gnutls_datum_t *signature) { priv_st *priv = userdata; BCRYPT_PKCS1_PADDING_INFO _info; @@ -550,17 +521,15 @@ int cng_sign(gnutls_privkey_t key, void *userdata, signature->size = 0; if (priv->pk == GNUTLS_PK_RSA) { - flags = BCRYPT_PAD_PKCS1; info = &_info; - if (raw_data->size == 36) { /* TLS 1.0 MD5+SHA1 */ + if (raw_data->size == 36) { /* TLS 1.0 MD5+SHA1 */ _info.pszAlgId = NULL; } else { digest_size = sizeof(digest); - ret = - decode_ber_digest_info(raw_data, &algo, digest, - &digest_size); + ret = decode_ber_digest_info(raw_data, &algo, digest, + &digest_size); if (ret < 0) return gnutls_assert_val(ret); @@ -583,17 +552,16 @@ int cng_sign(gnutls_privkey_t key, void *userdata, _info.pszAlgId = NCRYPT_SHA512_ALGORITHM; break; default: - return - gnutls_assert_val - (GNUTLS_E_UNKNOWN_HASH_ALGORITHM); + return gnutls_assert_val( + GNUTLS_E_UNKNOWN_HASH_ALGORITHM); } data.data = digest; data.size = digest_size; } } - r = pNCryptSignHash(priv->nc, info, data.data, data.size, - NULL, 0, &ret_sig, flags); + r = pNCryptSignHash(priv->nc, info, data.data, data.size, NULL, 0, + &ret_sig, flags); if (FAILED(r)) { gnutls_assert(); _gnutls_debug_log("error in pre-signing: %d\n", @@ -620,14 +588,14 @@ int cng_sign(gnutls_privkey_t key, void *userdata, signature->size = ret_sig; return 0; - fail: +fail: gnutls_free(signature->data); return ret; } -static -int cng_decrypt(gnutls_privkey_t key, void *userdata, - const gnutls_datum_t * ciphertext, gnutls_datum_t * plaintext) +static int cng_decrypt(gnutls_privkey_t key, void *userdata, + const gnutls_datum_t *ciphertext, + gnutls_datum_t *plaintext) { priv_st *priv = userdata; SECURITY_STATUS r; @@ -641,8 +609,8 @@ int cng_decrypt(gnutls_privkey_t key, void *userdata, return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); } - r = pNCryptDecrypt(priv->nc, ciphertext->data, ciphertext->size, - NULL, NULL, 0, &ret_dec, NCRYPT_PAD_PKCS1_FLAG); + r = pNCryptDecrypt(priv->nc, ciphertext->data, ciphertext->size, NULL, + NULL, 0, &ret_dec, NCRYPT_PAD_PKCS1_FLAG); if (FAILED(r)) { gnutls_assert(); return GNUTLS_E_PK_DECRYPTION_FAILED; @@ -655,9 +623,9 @@ int cng_decrypt(gnutls_privkey_t key, void *userdata, return GNUTLS_E_MEMORY_ERROR; } - r = pNCryptDecrypt(priv->nc, ciphertext->data, ciphertext->size, - NULL, plaintext->data, plaintext->size, - &ret_dec, NCRYPT_PAD_PKCS1_FLAG); + r = pNCryptDecrypt(priv->nc, ciphertext->data, ciphertext->size, NULL, + plaintext->data, plaintext->size, &ret_dec, + NCRYPT_PAD_PKCS1_FLAG); if (FAILED(r)) { gnutls_assert(); ret = GNUTLS_E_PK_DECRYPTION_FAILED; @@ -666,13 +634,12 @@ int cng_decrypt(gnutls_privkey_t key, void *userdata, plaintext->size = ret_dec; return 0; - fail: +fail: gnutls_free(plaintext->data); return ret; } -static -void cng_deinit(gnutls_privkey_t key, void *userdata) +static void cng_deinit(gnutls_privkey_t key, void *userdata) { priv_st *priv = userdata; pNCryptFreeObject(priv->nc); @@ -690,10 +657,9 @@ static int cng_info(gnutls_privkey_t key, unsigned int flags, void *userdata) return -1; } -static -int privkey_import_ncrypt(gnutls_privkey_t pkey, const char *url, - priv_st * priv, CRYPT_KEY_PROV_INFO * kpi, - NCRYPT_PROV_HANDLE * sctx) +static int privkey_import_ncrypt(gnutls_privkey_t pkey, const char *url, + priv_st *priv, CRYPT_KEY_PROV_INFO *kpi, + NCRYPT_PROV_HANDLE *sctx) { SECURITY_STATUS r; NCRYPT_KEY_HANDLE nc = 0; @@ -707,9 +673,8 @@ int privkey_import_ncrypt(gnutls_privkey_t pkey, const char *url, goto cleanup; } - r = pNCryptGetProperty(nc, NCRYPT_ALGORITHM_PROPERTY, - (BYTE *) algo_str, sizeof(algo_str), - &algo_str_size, 0); + r = pNCryptGetProperty(nc, NCRYPT_ALGORITHM_PROPERTY, (BYTE *)algo_str, + sizeof(algo_str), &algo_str_size, 0); if (FAILED(r)) { ret = gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); goto cleanup; @@ -739,10 +704,9 @@ int privkey_import_ncrypt(gnutls_privkey_t pkey, const char *url, priv->nc = nc; ret = gnutls_privkey_import_ext3(pkey, priv, cng_sign, - (enc_too != - 0) ? cng_decrypt : NULL, + (enc_too != 0) ? cng_decrypt : NULL, cng_deinit, cng_info, 0); - cleanup: +cleanup: if (ret < 0) { if (nc != 0) pNCryptFreeObject(nc); @@ -766,9 +730,10 @@ int privkey_import_ncrypt(gnutls_privkey_t pkey, const char *url, -*/ int _gnutls_privkey_import_system_url(gnutls_privkey_t pkey, const char *url) { -#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && _WIN32_WINNT < 0x0A00 /*win10 */ +#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && \ + _WIN32_WINNT < 0x0A00 /*win10 */ return gnutls_assert_val(GNUTLS_E_UNIMPLEMENTED_FEATURE); -#else /* WINAPI_PARTITION_DESKTOP || _WIN32_WINNT_WIN10 */ +#else /* WINAPI_PARTITION_DESKTOP || _WIN32_WINNT_WIN10 */ uint8_t id[MAX_WID_SIZE]; HCERTSTORE store = NULL; size_t id_size; @@ -799,26 +764,24 @@ int _gnutls_privkey_import_system_url(gnutls_privkey_t pkey, const char *url) blob.cbData = id_size; blob.pbData = id; - store = - CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0, - CERT_SYSTEM_STORE_CURRENT_USER, L"MY"); + store = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0, + CERT_SYSTEM_STORE_CURRENT_USER, L"MY"); if (store == NULL) { gnutls_assert(); ret = GNUTLS_E_FILE_ERROR; goto cleanup; } - cert = CertFindCertificateInStore(store, - X509_ASN_ENCODING, - 0, - CERT_FIND_KEY_IDENTIFIER, - &blob, NULL); + cert = CertFindCertificateInStore(store, X509_ASN_ENCODING, 0, + CERT_FIND_KEY_IDENTIFIER, &blob, + NULL); if (cert == NULL) { char buf[64]; _gnutls_debug_log("cannot find ID: %s from %s\n", - _gnutls_bin2hex(id, id_size, - buf, sizeof(buf), NULL), url); + _gnutls_bin2hex(id, id_size, buf, sizeof(buf), + NULL), + url); ret = gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); goto cleanup; } @@ -850,7 +813,7 @@ int _gnutls_privkey_import_system_url(gnutls_privkey_t pkey, const char *url) } r = pNCryptOpenStorageProvider(&sctx, kpi->pwszProvName, 0); - if (!FAILED(r)) { /* if this works carry on with CNG */ + if (!FAILED(r)) { /* if this works carry on with CNG */ ret = privkey_import_ncrypt(pkey, url, priv, kpi, &sctx); if (ret < 0) { @@ -858,24 +821,24 @@ int _gnutls_privkey_import_system_url(gnutls_privkey_t pkey, const char *url) goto cleanup; } } else { -# if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) +#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) /* CAPI is not supported in UWP */ return gnutls_assert_val(GNUTLS_E_UNIMPLEMENTED_FEATURE); -# else /* WINAPI_PARTITION_DESKTOP */ +#else /* WINAPI_PARTITION_DESKTOP */ /* this should be CAPI */ - _gnutls_debug_log - ("error in opening CNG keystore: %x from %ls\n", (int)r, - kpi->pwszProvName); + _gnutls_debug_log( + "error in opening CNG keystore: %x from %ls\n", (int)r, + kpi->pwszProvName); ret = privkey_import_capi(pkey, url, priv, kpi); if (ret < 0) { gnutls_assert(); goto cleanup; } -# endif /* WINAPI_PARTITION_DESKTOP */ +#endif /* WINAPI_PARTITION_DESKTOP */ } ret = 0; - cleanup: +cleanup: if (ret < 0) { gnutls_free(priv); } @@ -889,7 +852,7 @@ int _gnutls_privkey_import_system_url(gnutls_privkey_t pkey, const char *url) CertCloseStore(store, 0); return ret; -#endif /* WINAPI_PARTITION_DESKTOP || _WIN32_WINNT_WIN10 */ +#endif /* WINAPI_PARTITION_DESKTOP || _WIN32_WINNT_WIN10 */ } int _gnutls_x509_crt_import_system_url(gnutls_x509_crt_t crt, const char *url) @@ -913,26 +876,24 @@ int _gnutls_x509_crt_import_system_url(gnutls_x509_crt_t crt, const char *url) blob.cbData = id_size; blob.pbData = id; - store = - CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0, - CERT_SYSTEM_STORE_CURRENT_USER, L"MY"); + store = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0, + CERT_SYSTEM_STORE_CURRENT_USER, L"MY"); if (store == NULL) { gnutls_assert(); ret = GNUTLS_E_FILE_ERROR; goto cleanup; } - cert = CertFindCertificateInStore(store, - X509_ASN_ENCODING, - 0, - CERT_FIND_KEY_IDENTIFIER, - &blob, NULL); + cert = CertFindCertificateInStore(store, X509_ASN_ENCODING, 0, + CERT_FIND_KEY_IDENTIFIER, &blob, + NULL); if (cert == NULL) { char buf[64]; _gnutls_debug_log("cannot find ID: %s from %s\n", - _gnutls_bin2hex(id, id_size, - buf, sizeof(buf), NULL), url); + _gnutls_bin2hex(id, id_size, buf, sizeof(buf), + NULL), + url); ret = gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); goto cleanup; } @@ -947,7 +908,7 @@ int _gnutls_x509_crt_import_system_url(gnutls_x509_crt_t crt, const char *url) } ret = 0; - cleanup: +cleanup: if (cert != 0) CertFreeCertificateContext(cert); @@ -973,9 +934,8 @@ void gnutls_system_key_iter_deinit(gnutls_system_key_iter_t iter) gnutls_free(iter); } -static -int get_win_urls(const CERT_CONTEXT * cert, char **cert_url, char **key_url, - char **label, gnutls_datum_t * der) +static int get_win_urls(const CERT_CONTEXT *cert, char **cert_url, + char **key_url, char **label, gnutls_datum_t *der) { BOOL r; int ret; @@ -1013,9 +973,9 @@ int get_win_urls(const CERT_CONTEXT * cert, char **cert_url, char **key_url, tl_size = sizeof(name); r = CertGetCertificateContextProperty(cert, CERT_FRIENDLY_NAME_PROP_ID, name, &tl_size); - if (r != 0) { /* optional */ - ret = - _gnutls_ucs2_to_utf8(name, tl_size, &tmp_label, bigendian); + if (r != 0) { /* optional */ + ret = _gnutls_ucs2_to_utf8(name, tl_size, &tmp_label, + bigendian); if (ret < 0) { gnutls_assert(); goto fail; @@ -1038,8 +998,8 @@ int get_win_urls(const CERT_CONTEXT * cert, char **cert_url, char **key_url, goto fail; } - ret = - _gnutls_buffer_append_printf(&str, WIN_URL "id=%s;type=cert", hex); + ret = _gnutls_buffer_append_printf(&str, WIN_URL "id=%s;type=cert", + hex); if (ret < 0) { gnutls_assert(); goto fail; @@ -1052,9 +1012,8 @@ int get_win_urls(const CERT_CONTEXT * cert, char **cert_url, char **key_url, goto fail; } - ret = - _gnutls_buffer_append_escape(&str, tmp_label.data, - tmp_label.size, " "); + ret = _gnutls_buffer_append_escape(&str, tmp_label.data, + tmp_label.size, " "); if (ret < 0) { gnutls_assert(); goto fail; @@ -1071,9 +1030,8 @@ int get_win_urls(const CERT_CONTEXT * cert, char **cert_url, char **key_url, *cert_url = (char *)str.data; _gnutls_buffer_init(&str); - ret = - _gnutls_buffer_append_printf(&str, WIN_URL "id=%s;type=privkey", - hex); + ret = _gnutls_buffer_append_printf(&str, WIN_URL "id=%s;type=privkey", + hex); if (ret < 0) { gnutls_assert(); goto fail; @@ -1086,9 +1044,8 @@ int get_win_urls(const CERT_CONTEXT * cert, char **cert_url, char **key_url, goto fail; } - ret = - _gnutls_buffer_append_escape(&str, tmp_label.data, - tmp_label.size, " "); + ret = _gnutls_buffer_append_escape(&str, tmp_label.data, + tmp_label.size, " "); if (ret < 0) { gnutls_assert(); goto fail; @@ -1108,7 +1065,7 @@ int get_win_urls(const CERT_CONTEXT * cert, char **cert_url, char **key_url, ret = 0; goto cleanup; - fail: +fail: if (der) gnutls_free(der->data); if (cert_url) @@ -1117,7 +1074,7 @@ int get_win_urls(const CERT_CONTEXT * cert, char **cert_url, char **key_url, gnutls_free(*key_url); if (label) gnutls_free(*label); - cleanup: +cleanup: _gnutls_buffer_clear(&str); return ret; } @@ -1146,13 +1103,10 @@ int get_win_urls(const CERT_CONTEXT * cert, char **cert_url, char **key_url, * * Since: 3.4.0 **/ -int -gnutls_system_key_iter_get_info(gnutls_system_key_iter_t * iter, - unsigned cert_type, - char **cert_url, - char **key_url, - char **label, - gnutls_datum_t * der, unsigned int flags) +int gnutls_system_key_iter_get_info(gnutls_system_key_iter_t *iter, + unsigned cert_type, char **cert_url, + char **key_url, char **label, + gnutls_datum_t *der, unsigned int flags) { if (ncrypt_init == 0) return gnutls_assert_val(GNUTLS_E_UNIMPLEMENTED_FEATURE); @@ -1164,33 +1118,30 @@ gnutls_system_key_iter_get_info(gnutls_system_key_iter_t * iter, if (*iter == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - (*iter)->store = - CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0, - CERT_SYSTEM_STORE_CURRENT_USER, L"MY"); + (*iter)->store = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0, + CERT_SYSTEM_STORE_CURRENT_USER, + L"MY"); if ((*iter)->store == NULL) { gnutls_free(*iter); *iter = NULL; - return - gnutls_assert_val - (GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); + return gnutls_assert_val( + GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); } (*iter)->cert = - CertEnumCertificatesInStore((*iter)->store, NULL); + CertEnumCertificatesInStore((*iter)->store, NULL); return get_win_urls((*iter)->cert, cert_url, key_url, label, der); } else { if ((*iter)->cert == NULL) - return - gnutls_assert_val - (GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); + return gnutls_assert_val( + GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); - (*iter)->cert = - CertEnumCertificatesInStore((*iter)->store, (*iter)->cert); + (*iter)->cert = CertEnumCertificatesInStore((*iter)->store, + (*iter)->cert); return get_win_urls((*iter)->cert, cert_url, key_url, label, der); - } } @@ -1239,23 +1190,20 @@ int gnutls_system_key_delete(const char *cert_url, const char *key_url) blob.cbData = id_size; blob.pbData = id; - store = - CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0, - CERT_SYSTEM_STORE_CURRENT_USER, L"MY"); + store = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0, + CERT_SYSTEM_STORE_CURRENT_USER, L"MY"); if (store != NULL) { do { - cert = CertFindCertificateInStore(store, - X509_ASN_ENCODING, - 0, - CERT_FIND_KEY_IDENTIFIER, - &blob, cert); + cert = CertFindCertificateInStore( + store, X509_ASN_ENCODING, 0, + CERT_FIND_KEY_IDENTIFIER, &blob, cert); if (cert && key_url) { nc_size = sizeof(nc); - r = CertGetCertificateContextProperty(cert, - CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID, - &nc, - &nc_size); + r = CertGetCertificateContextProperty( + cert, + CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID, + &nc, &nc_size); if (r != 0) { pNCryptDeleteKey(nc, 0); pNCryptFreeObject(nc); @@ -1411,9 +1359,8 @@ int gnutls_system_key_add_x509(gnutls_x509_crt_t crt, goto cleanup; } - ret = - gnutls_hash_fast(GNUTLS_DIG_SHA1, data.data, data.size, - sha); + ret = gnutls_hash_fast(GNUTLS_DIG_SHA1, data.data, data.size, + sha); gnutls_free(data.data); if (ret < 0) { gnutls_assert(); @@ -1423,11 +1370,9 @@ int gnutls_system_key_add_x509(gnutls_x509_crt_t crt, blob.cbData = sizeof(sha); blob.pbData = sha; - cert = CertFindCertificateInStore(store, - X509_ASN_ENCODING, - 0, - CERT_FIND_SHA1_HASH, - &blob, NULL); + cert = CertFindCertificateInStore(store, X509_ASN_ENCODING, 0, + CERT_FIND_SHA1_HASH, &blob, + NULL); if (cert == NULL) { gnutls_assert(); @@ -1444,7 +1389,7 @@ int gnutls_system_key_add_x509(gnutls_x509_crt_t crt, ret = 0; - cleanup: +cleanup: if (p12 != NULL) gnutls_pkcs12_deinit(p12); if (bag1 != NULL) @@ -1467,53 +1412,51 @@ int _gnutls_system_key_init(void) return gnutls_assert_val(GNUTLS_E_CRYPTO_INIT_FAILED); } - pNCryptDeleteKey = - (NCryptDeleteKeyFunc) GetProcAddress(ncrypt_lib, "NCryptDeleteKey"); + pNCryptDeleteKey = (NCryptDeleteKeyFunc)GetProcAddress( + ncrypt_lib, "NCryptDeleteKey"); if (pNCryptDeleteKey == NULL) { ret = GNUTLS_E_CRYPTO_INIT_FAILED; goto fail; } pNCryptOpenStorageProvider = - (NCryptOpenStorageProviderFunc) GetProcAddress(ncrypt_lib, - "NCryptOpenStorageProvider"); + (NCryptOpenStorageProviderFunc)GetProcAddress( + ncrypt_lib, "NCryptOpenStorageProvider"); if (pNCryptOpenStorageProvider == NULL) { ret = GNUTLS_E_CRYPTO_INIT_FAILED; goto fail; } pNCryptOpenKey = - (NCryptOpenKeyFunc) GetProcAddress(ncrypt_lib, "NCryptOpenKey"); + (NCryptOpenKeyFunc)GetProcAddress(ncrypt_lib, "NCryptOpenKey"); if (pNCryptOpenKey == NULL) { ret = GNUTLS_E_CRYPTO_INIT_FAILED; goto fail; } - pNCryptGetProperty = - (NCryptGetPropertyFunc) GetProcAddress(ncrypt_lib, - "NCryptGetProperty"); + pNCryptGetProperty = (NCryptGetPropertyFunc)GetProcAddress( + ncrypt_lib, "NCryptGetProperty"); if (pNCryptGetProperty == NULL) { ret = GNUTLS_E_CRYPTO_INIT_FAILED; goto fail; } - pNCryptFreeObject = - (NCryptFreeObjectFunc) GetProcAddress(ncrypt_lib, - "NCryptFreeObject"); + pNCryptFreeObject = (NCryptFreeObjectFunc)GetProcAddress( + ncrypt_lib, "NCryptFreeObject"); if (pNCryptFreeObject == NULL) { ret = GNUTLS_E_CRYPTO_INIT_FAILED; goto fail; } pNCryptDecrypt = - (NCryptDecryptFunc) GetProcAddress(ncrypt_lib, "NCryptDecrypt"); + (NCryptDecryptFunc)GetProcAddress(ncrypt_lib, "NCryptDecrypt"); if (pNCryptDecrypt == NULL) { ret = GNUTLS_E_CRYPTO_INIT_FAILED; goto fail; } - pNCryptSignHash = - (NCryptSignHashFunc) GetProcAddress(ncrypt_lib, "NCryptSignHash"); + pNCryptSignHash = (NCryptSignHashFunc)GetProcAddress(ncrypt_lib, + "NCryptSignHash"); if (pNCryptSignHash == NULL) { ret = GNUTLS_E_CRYPTO_INIT_FAILED; goto fail; @@ -1521,7 +1464,7 @@ int _gnutls_system_key_init(void) ncrypt_init = 1; return 0; - fail: +fail: FreeLibrary(ncrypt_lib); return ret; #else diff --git a/lib/system/ktls.c b/lib/system/ktls.c index bb59fab7c0..060194bdf6 100644 --- a/lib/system/ktls.c +++ b/lib/system/ktls.c @@ -25,14 +25,14 @@ #ifdef ENABLE_KTLS -# include -# include -# include -# include -# include -# include -# include "ext/session_ticket.h" -# include +#include +#include +#include +#include +#include +#include +#include "ext/session_ticket.h" +#include /** * gnutls_transport_is_ktls_enabled: @@ -67,18 +67,18 @@ void _gnutls_ktls_enable(gnutls_session_t session) session->internals.ktls_enabled |= GNUTLS_KTLS_SEND; } } else { - _gnutls_record_log - ("Unable to set TCP_ULP for read socket: %d\n", errno); + _gnutls_record_log( + "Unable to set TCP_ULP for read socket: %d\n", errno); } if (sockin != sockout) { - if (setsockopt(sockout, SOL_TCP, TCP_ULP, "tls", sizeof("tls")) - == 0) { + if (setsockopt(sockout, SOL_TCP, TCP_ULP, "tls", + sizeof("tls")) == 0) { session->internals.ktls_enabled |= GNUTLS_KTLS_SEND; } else { - _gnutls_record_log - ("Unable to set TCP_ULP for write socket: %d\n", - errno); + _gnutls_record_log( + "Unable to set TCP_ULP for write socket: %d\n", + errno); } } } @@ -117,203 +117,170 @@ int _gnutls_ktls_set_keys(gnutls_session_t session, if (in & GNUTLS_KTLS_RECV) { switch (cipher) { - case GNUTLS_CIPHER_AES_128_GCM: - { - struct tls12_crypto_info_aes_gcm_128 - crypto_info; - memset(&crypto_info, 0, sizeof(crypto_info)); - - crypto_info.info.cipher_type = - TLS_CIPHER_AES_GCM_128; - assert(cipher_key.size == - TLS_CIPHER_AES_GCM_128_KEY_SIZE); - - /* for TLS 1.2 IV is generated in kernel */ - if (version == GNUTLS_TLS1_2) { - crypto_info.info.version = - TLS_1_2_VERSION; - memcpy(crypto_info.iv, seq_number, - TLS_CIPHER_AES_GCM_128_IV_SIZE); - } else { - crypto_info.info.version = - TLS_1_3_VERSION; - assert(iv.size == - TLS_CIPHER_AES_GCM_128_SALT_SIZE - + + case GNUTLS_CIPHER_AES_128_GCM: { + struct tls12_crypto_info_aes_gcm_128 crypto_info; + memset(&crypto_info, 0, sizeof(crypto_info)); + + crypto_info.info.cipher_type = TLS_CIPHER_AES_GCM_128; + assert(cipher_key.size == + TLS_CIPHER_AES_GCM_128_KEY_SIZE); + + /* for TLS 1.2 IV is generated in kernel */ + if (version == GNUTLS_TLS1_2) { + crypto_info.info.version = TLS_1_2_VERSION; + memcpy(crypto_info.iv, seq_number, + TLS_CIPHER_AES_GCM_128_IV_SIZE); + } else { + crypto_info.info.version = TLS_1_3_VERSION; + assert(iv.size == + TLS_CIPHER_AES_GCM_128_SALT_SIZE + TLS_CIPHER_AES_GCM_128_IV_SIZE); - memcpy(crypto_info.iv, iv.data + + memcpy(crypto_info.iv, + iv.data + TLS_CIPHER_AES_GCM_128_SALT_SIZE, - TLS_CIPHER_AES_GCM_128_IV_SIZE); - } + TLS_CIPHER_AES_GCM_128_IV_SIZE); + } - memcpy(crypto_info.salt, iv.data, - TLS_CIPHER_AES_GCM_128_SALT_SIZE); - memcpy(crypto_info.rec_seq, seq_number, - TLS_CIPHER_AES_GCM_128_REC_SEQ_SIZE); - memcpy(crypto_info.key, cipher_key.data, - TLS_CIPHER_AES_GCM_128_KEY_SIZE); - - if (setsockopt(sockin, SOL_TLS, TLS_RX, - &crypto_info, - sizeof(crypto_info))) { - session->internals.ktls_enabled &= - ~GNUTLS_KTLS_RECV; - return - gnutls_assert_val - (GNUTLS_E_INTERNAL_ERROR); - } + memcpy(crypto_info.salt, iv.data, + TLS_CIPHER_AES_GCM_128_SALT_SIZE); + memcpy(crypto_info.rec_seq, seq_number, + TLS_CIPHER_AES_GCM_128_REC_SEQ_SIZE); + memcpy(crypto_info.key, cipher_key.data, + TLS_CIPHER_AES_GCM_128_KEY_SIZE); + + if (setsockopt(sockin, SOL_TLS, TLS_RX, &crypto_info, + sizeof(crypto_info))) { + session->internals.ktls_enabled &= + ~GNUTLS_KTLS_RECV; + return gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); } - break; - case GNUTLS_CIPHER_AES_256_GCM: - { - struct tls12_crypto_info_aes_gcm_256 - crypto_info; - memset(&crypto_info, 0, sizeof(crypto_info)); - - crypto_info.info.cipher_type = - TLS_CIPHER_AES_GCM_256; - assert(cipher_key.size == - TLS_CIPHER_AES_GCM_256_KEY_SIZE); - - /* for TLS 1.2 IV is generated in kernel */ - if (version == GNUTLS_TLS1_2) { - crypto_info.info.version = - TLS_1_2_VERSION; - memcpy(crypto_info.iv, seq_number, - TLS_CIPHER_AES_GCM_256_IV_SIZE); - } else { - crypto_info.info.version = - TLS_1_3_VERSION; - assert(iv.size == - TLS_CIPHER_AES_GCM_256_SALT_SIZE - + + } break; + case GNUTLS_CIPHER_AES_256_GCM: { + struct tls12_crypto_info_aes_gcm_256 crypto_info; + memset(&crypto_info, 0, sizeof(crypto_info)); + + crypto_info.info.cipher_type = TLS_CIPHER_AES_GCM_256; + assert(cipher_key.size == + TLS_CIPHER_AES_GCM_256_KEY_SIZE); + + /* for TLS 1.2 IV is generated in kernel */ + if (version == GNUTLS_TLS1_2) { + crypto_info.info.version = TLS_1_2_VERSION; + memcpy(crypto_info.iv, seq_number, + TLS_CIPHER_AES_GCM_256_IV_SIZE); + } else { + crypto_info.info.version = TLS_1_3_VERSION; + assert(iv.size == + TLS_CIPHER_AES_GCM_256_SALT_SIZE + TLS_CIPHER_AES_GCM_256_IV_SIZE); - memcpy(crypto_info.iv, - iv.data + + memcpy(crypto_info.iv, + iv.data + TLS_CIPHER_AES_GCM_256_SALT_SIZE, - TLS_CIPHER_AES_GCM_256_IV_SIZE); - } + TLS_CIPHER_AES_GCM_256_IV_SIZE); + } - memcpy(crypto_info.salt, iv.data, - TLS_CIPHER_AES_GCM_256_SALT_SIZE); - memcpy(crypto_info.rec_seq, seq_number, - TLS_CIPHER_AES_GCM_256_REC_SEQ_SIZE); - memcpy(crypto_info.key, cipher_key.data, - TLS_CIPHER_AES_GCM_256_KEY_SIZE); - - if (setsockopt(sockin, SOL_TLS, TLS_RX, - &crypto_info, - sizeof(crypto_info))) { - session->internals.ktls_enabled &= - ~GNUTLS_KTLS_RECV; - return - gnutls_assert_val - (GNUTLS_E_INTERNAL_ERROR); - } + memcpy(crypto_info.salt, iv.data, + TLS_CIPHER_AES_GCM_256_SALT_SIZE); + memcpy(crypto_info.rec_seq, seq_number, + TLS_CIPHER_AES_GCM_256_REC_SEQ_SIZE); + memcpy(crypto_info.key, cipher_key.data, + TLS_CIPHER_AES_GCM_256_KEY_SIZE); + + if (setsockopt(sockin, SOL_TLS, TLS_RX, &crypto_info, + sizeof(crypto_info))) { + session->internals.ktls_enabled &= + ~GNUTLS_KTLS_RECV; + return gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); } - break; - case GNUTLS_CIPHER_AES_128_CCM: - { - struct tls12_crypto_info_aes_ccm_128 - crypto_info; - memset(&crypto_info, 0, sizeof(crypto_info)); - - crypto_info.info.cipher_type = - TLS_CIPHER_AES_CCM_128; - assert(cipher_key.size == - TLS_CIPHER_AES_CCM_128_KEY_SIZE); - - /* for TLS 1.2 IV is generated in kernel */ - if (version == GNUTLS_TLS1_2) { - crypto_info.info.version = - TLS_1_2_VERSION; - memcpy(crypto_info.iv, seq_number, - TLS_CIPHER_AES_CCM_128_IV_SIZE); - } else { - crypto_info.info.version = - TLS_1_3_VERSION; - assert(iv.size == - TLS_CIPHER_AES_CCM_128_SALT_SIZE - + + } break; + case GNUTLS_CIPHER_AES_128_CCM: { + struct tls12_crypto_info_aes_ccm_128 crypto_info; + memset(&crypto_info, 0, sizeof(crypto_info)); + + crypto_info.info.cipher_type = TLS_CIPHER_AES_CCM_128; + assert(cipher_key.size == + TLS_CIPHER_AES_CCM_128_KEY_SIZE); + + /* for TLS 1.2 IV is generated in kernel */ + if (version == GNUTLS_TLS1_2) { + crypto_info.info.version = TLS_1_2_VERSION; + memcpy(crypto_info.iv, seq_number, + TLS_CIPHER_AES_CCM_128_IV_SIZE); + } else { + crypto_info.info.version = TLS_1_3_VERSION; + assert(iv.size == + TLS_CIPHER_AES_CCM_128_SALT_SIZE + TLS_CIPHER_AES_CCM_128_IV_SIZE); - memcpy(crypto_info.iv, iv.data + + memcpy(crypto_info.iv, + iv.data + TLS_CIPHER_AES_CCM_128_SALT_SIZE, - TLS_CIPHER_AES_CCM_128_IV_SIZE); - } + TLS_CIPHER_AES_CCM_128_IV_SIZE); + } - memcpy(crypto_info.salt, iv.data, - TLS_CIPHER_AES_CCM_128_SALT_SIZE); - memcpy(crypto_info.rec_seq, seq_number, - TLS_CIPHER_AES_CCM_128_REC_SEQ_SIZE); - memcpy(crypto_info.key, cipher_key.data, - TLS_CIPHER_AES_CCM_128_KEY_SIZE); - - if (setsockopt(sockin, SOL_TLS, TLS_RX, - &crypto_info, - sizeof(crypto_info))) { - session->internals.ktls_enabled &= - ~GNUTLS_KTLS_RECV; - return - gnutls_assert_val - (GNUTLS_E_INTERNAL_ERROR); - } + memcpy(crypto_info.salt, iv.data, + TLS_CIPHER_AES_CCM_128_SALT_SIZE); + memcpy(crypto_info.rec_seq, seq_number, + TLS_CIPHER_AES_CCM_128_REC_SEQ_SIZE); + memcpy(crypto_info.key, cipher_key.data, + TLS_CIPHER_AES_CCM_128_KEY_SIZE); + + if (setsockopt(sockin, SOL_TLS, TLS_RX, &crypto_info, + sizeof(crypto_info))) { + session->internals.ktls_enabled &= + ~GNUTLS_KTLS_RECV; + return gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); } - break; - case GNUTLS_CIPHER_CHACHA20_POLY1305: - { - struct tls12_crypto_info_chacha20_poly1305 - crypto_info; - memset(&crypto_info, 0, sizeof(crypto_info)); - - crypto_info.info.cipher_type = - TLS_CIPHER_CHACHA20_POLY1305; - assert(cipher_key.size == - TLS_CIPHER_CHACHA20_POLY1305_KEY_SIZE); - - /* for TLS 1.2 IV is generated in kernel */ - if (version == GNUTLS_TLS1_2) { - crypto_info.info.version = - TLS_1_2_VERSION; - memcpy(crypto_info.iv, seq_number, - TLS_CIPHER_CHACHA20_POLY1305_IV_SIZE); - } else { - crypto_info.info.version = - TLS_1_3_VERSION; - assert(iv.size == - TLS_CIPHER_CHACHA20_POLY1305_SALT_SIZE - + + } break; + case GNUTLS_CIPHER_CHACHA20_POLY1305: { + struct tls12_crypto_info_chacha20_poly1305 crypto_info; + memset(&crypto_info, 0, sizeof(crypto_info)); + + crypto_info.info.cipher_type = + TLS_CIPHER_CHACHA20_POLY1305; + assert(cipher_key.size == + TLS_CIPHER_CHACHA20_POLY1305_KEY_SIZE); + + /* for TLS 1.2 IV is generated in kernel */ + if (version == GNUTLS_TLS1_2) { + crypto_info.info.version = TLS_1_2_VERSION; + memcpy(crypto_info.iv, seq_number, + TLS_CIPHER_CHACHA20_POLY1305_IV_SIZE); + } else { + crypto_info.info.version = TLS_1_3_VERSION; + assert(iv.size == + TLS_CIPHER_CHACHA20_POLY1305_SALT_SIZE + TLS_CIPHER_CHACHA20_POLY1305_IV_SIZE); - memcpy(crypto_info.iv, iv.data + + memcpy(crypto_info.iv, + iv.data + TLS_CIPHER_CHACHA20_POLY1305_SALT_SIZE, - TLS_CIPHER_CHACHA20_POLY1305_IV_SIZE); - } + TLS_CIPHER_CHACHA20_POLY1305_IV_SIZE); + } - memcpy(crypto_info.salt, iv.data, - TLS_CIPHER_CHACHA20_POLY1305_SALT_SIZE); - memcpy(crypto_info.rec_seq, seq_number, - TLS_CIPHER_CHACHA20_POLY1305_REC_SEQ_SIZE); - memcpy(crypto_info.key, cipher_key.data, - TLS_CIPHER_CHACHA20_POLY1305_KEY_SIZE); - - if (setsockopt(sockin, SOL_TLS, TLS_RX, - &crypto_info, - sizeof(crypto_info))) { - session->internals.ktls_enabled &= - ~GNUTLS_KTLS_RECV; - return - gnutls_assert_val - (GNUTLS_E_INTERNAL_ERROR); - } + memcpy(crypto_info.salt, iv.data, + TLS_CIPHER_CHACHA20_POLY1305_SALT_SIZE); + memcpy(crypto_info.rec_seq, seq_number, + TLS_CIPHER_CHACHA20_POLY1305_REC_SEQ_SIZE); + memcpy(crypto_info.key, cipher_key.data, + TLS_CIPHER_CHACHA20_POLY1305_KEY_SIZE); + + if (setsockopt(sockin, SOL_TLS, TLS_RX, &crypto_info, + sizeof(crypto_info))) { + session->internals.ktls_enabled &= + ~GNUTLS_KTLS_RECV; + return gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); } - break; + } break; default: assert(0); } - } ret = gnutls_record_get_state(session, 0, &mac_key, &iv, &cipher_key, @@ -324,210 +291,175 @@ int _gnutls_ktls_set_keys(gnutls_session_t session, if (in & GNUTLS_KTLS_SEND) { switch (cipher) { - case GNUTLS_CIPHER_AES_128_GCM: - { - struct tls12_crypto_info_aes_gcm_128 - crypto_info; - memset(&crypto_info, 0, sizeof(crypto_info)); - - crypto_info.info.cipher_type = - TLS_CIPHER_AES_GCM_128; - - assert(cipher_key.size == - TLS_CIPHER_AES_GCM_128_KEY_SIZE); - - /* for TLS 1.2 IV is generated in kernel */ - if (version == GNUTLS_TLS1_2) { - crypto_info.info.version = - TLS_1_2_VERSION; - memcpy(crypto_info.iv, seq_number, - TLS_CIPHER_AES_GCM_128_IV_SIZE); - } else { - crypto_info.info.version = - TLS_1_3_VERSION; - assert(iv.size == - TLS_CIPHER_AES_GCM_128_SALT_SIZE - + + case GNUTLS_CIPHER_AES_128_GCM: { + struct tls12_crypto_info_aes_gcm_128 crypto_info; + memset(&crypto_info, 0, sizeof(crypto_info)); + + crypto_info.info.cipher_type = TLS_CIPHER_AES_GCM_128; + + assert(cipher_key.size == + TLS_CIPHER_AES_GCM_128_KEY_SIZE); + + /* for TLS 1.2 IV is generated in kernel */ + if (version == GNUTLS_TLS1_2) { + crypto_info.info.version = TLS_1_2_VERSION; + memcpy(crypto_info.iv, seq_number, + TLS_CIPHER_AES_GCM_128_IV_SIZE); + } else { + crypto_info.info.version = TLS_1_3_VERSION; + assert(iv.size == + TLS_CIPHER_AES_GCM_128_SALT_SIZE + TLS_CIPHER_AES_GCM_128_IV_SIZE); - memcpy(crypto_info.iv, - iv.data + + memcpy(crypto_info.iv, + iv.data + TLS_CIPHER_AES_GCM_128_SALT_SIZE, - TLS_CIPHER_AES_GCM_128_IV_SIZE); - } + TLS_CIPHER_AES_GCM_128_IV_SIZE); + } - memcpy(crypto_info.salt, iv.data, - TLS_CIPHER_AES_GCM_128_SALT_SIZE); - memcpy(crypto_info.rec_seq, seq_number, - TLS_CIPHER_AES_GCM_128_REC_SEQ_SIZE); - memcpy(crypto_info.key, cipher_key.data, - TLS_CIPHER_AES_GCM_128_KEY_SIZE); - - if (setsockopt(sockout, SOL_TLS, TLS_TX, - &crypto_info, - sizeof(crypto_info))) { - session->internals.ktls_enabled &= - ~GNUTLS_KTLS_SEND; - return - gnutls_assert_val - (GNUTLS_E_INTERNAL_ERROR); - } + memcpy(crypto_info.salt, iv.data, + TLS_CIPHER_AES_GCM_128_SALT_SIZE); + memcpy(crypto_info.rec_seq, seq_number, + TLS_CIPHER_AES_GCM_128_REC_SEQ_SIZE); + memcpy(crypto_info.key, cipher_key.data, + TLS_CIPHER_AES_GCM_128_KEY_SIZE); + + if (setsockopt(sockout, SOL_TLS, TLS_TX, &crypto_info, + sizeof(crypto_info))) { + session->internals.ktls_enabled &= + ~GNUTLS_KTLS_SEND; + return gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); } - break; - case GNUTLS_CIPHER_AES_256_GCM: - { - struct tls12_crypto_info_aes_gcm_256 - crypto_info; - memset(&crypto_info, 0, sizeof(crypto_info)); - - crypto_info.info.cipher_type = - TLS_CIPHER_AES_GCM_256; - assert(cipher_key.size == - TLS_CIPHER_AES_GCM_256_KEY_SIZE); - - /* for TLS 1.2 IV is generated in kernel */ - if (version == GNUTLS_TLS1_2) { - crypto_info.info.version = - TLS_1_2_VERSION; - memcpy(crypto_info.iv, seq_number, - TLS_CIPHER_AES_GCM_256_IV_SIZE); - } else { - crypto_info.info.version = - TLS_1_3_VERSION; - assert(iv.size == - TLS_CIPHER_AES_GCM_256_SALT_SIZE - + + } break; + case GNUTLS_CIPHER_AES_256_GCM: { + struct tls12_crypto_info_aes_gcm_256 crypto_info; + memset(&crypto_info, 0, sizeof(crypto_info)); + + crypto_info.info.cipher_type = TLS_CIPHER_AES_GCM_256; + assert(cipher_key.size == + TLS_CIPHER_AES_GCM_256_KEY_SIZE); + + /* for TLS 1.2 IV is generated in kernel */ + if (version == GNUTLS_TLS1_2) { + crypto_info.info.version = TLS_1_2_VERSION; + memcpy(crypto_info.iv, seq_number, + TLS_CIPHER_AES_GCM_256_IV_SIZE); + } else { + crypto_info.info.version = TLS_1_3_VERSION; + assert(iv.size == + TLS_CIPHER_AES_GCM_256_SALT_SIZE + TLS_CIPHER_AES_GCM_256_IV_SIZE); - memcpy(crypto_info.iv, - iv.data + + memcpy(crypto_info.iv, + iv.data + TLS_CIPHER_AES_GCM_256_SALT_SIZE, - TLS_CIPHER_AES_GCM_256_IV_SIZE); - } + TLS_CIPHER_AES_GCM_256_IV_SIZE); + } - memcpy(crypto_info.salt, iv.data, - TLS_CIPHER_AES_GCM_256_SALT_SIZE); - memcpy(crypto_info.rec_seq, seq_number, - TLS_CIPHER_AES_GCM_256_REC_SEQ_SIZE); - memcpy(crypto_info.key, cipher_key.data, - TLS_CIPHER_AES_GCM_256_KEY_SIZE); - - if (setsockopt(sockout, SOL_TLS, TLS_TX, - &crypto_info, - sizeof(crypto_info))) { - session->internals.ktls_enabled &= - ~GNUTLS_KTLS_SEND; - return - gnutls_assert_val - (GNUTLS_E_INTERNAL_ERROR); - } + memcpy(crypto_info.salt, iv.data, + TLS_CIPHER_AES_GCM_256_SALT_SIZE); + memcpy(crypto_info.rec_seq, seq_number, + TLS_CIPHER_AES_GCM_256_REC_SEQ_SIZE); + memcpy(crypto_info.key, cipher_key.data, + TLS_CIPHER_AES_GCM_256_KEY_SIZE); + + if (setsockopt(sockout, SOL_TLS, TLS_TX, &crypto_info, + sizeof(crypto_info))) { + session->internals.ktls_enabled &= + ~GNUTLS_KTLS_SEND; + return gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); } - break; - case GNUTLS_CIPHER_AES_128_CCM: - { - struct tls12_crypto_info_aes_ccm_128 - crypto_info; - memset(&crypto_info, 0, sizeof(crypto_info)); - - crypto_info.info.cipher_type = - TLS_CIPHER_AES_CCM_128; - assert(cipher_key.size == - TLS_CIPHER_AES_CCM_128_KEY_SIZE); - - /* for TLS 1.2 IV is generated in kernel */ - if (version == GNUTLS_TLS1_2) { - crypto_info.info.version = - TLS_1_2_VERSION; - memcpy(crypto_info.iv, seq_number, - TLS_CIPHER_AES_CCM_128_IV_SIZE); - } else { - crypto_info.info.version = - TLS_1_3_VERSION; - assert(iv.size == - TLS_CIPHER_AES_CCM_128_SALT_SIZE - + + } break; + case GNUTLS_CIPHER_AES_128_CCM: { + struct tls12_crypto_info_aes_ccm_128 crypto_info; + memset(&crypto_info, 0, sizeof(crypto_info)); + + crypto_info.info.cipher_type = TLS_CIPHER_AES_CCM_128; + assert(cipher_key.size == + TLS_CIPHER_AES_CCM_128_KEY_SIZE); + + /* for TLS 1.2 IV is generated in kernel */ + if (version == GNUTLS_TLS1_2) { + crypto_info.info.version = TLS_1_2_VERSION; + memcpy(crypto_info.iv, seq_number, + TLS_CIPHER_AES_CCM_128_IV_SIZE); + } else { + crypto_info.info.version = TLS_1_3_VERSION; + assert(iv.size == + TLS_CIPHER_AES_CCM_128_SALT_SIZE + TLS_CIPHER_AES_CCM_128_IV_SIZE); - memcpy(crypto_info.iv, - iv.data + + memcpy(crypto_info.iv, + iv.data + TLS_CIPHER_AES_CCM_128_SALT_SIZE, - TLS_CIPHER_AES_CCM_128_IV_SIZE); - } + TLS_CIPHER_AES_CCM_128_IV_SIZE); + } - memcpy(crypto_info.salt, iv.data, - TLS_CIPHER_AES_CCM_128_SALT_SIZE); - memcpy(crypto_info.rec_seq, seq_number, - TLS_CIPHER_AES_CCM_128_REC_SEQ_SIZE); - memcpy(crypto_info.key, cipher_key.data, - TLS_CIPHER_AES_CCM_128_KEY_SIZE); - - if (setsockopt(sockout, SOL_TLS, TLS_TX, - &crypto_info, - sizeof(crypto_info))) { - session->internals.ktls_enabled &= - ~GNUTLS_KTLS_SEND; - return - gnutls_assert_val - (GNUTLS_E_INTERNAL_ERROR); - } + memcpy(crypto_info.salt, iv.data, + TLS_CIPHER_AES_CCM_128_SALT_SIZE); + memcpy(crypto_info.rec_seq, seq_number, + TLS_CIPHER_AES_CCM_128_REC_SEQ_SIZE); + memcpy(crypto_info.key, cipher_key.data, + TLS_CIPHER_AES_CCM_128_KEY_SIZE); + + if (setsockopt(sockout, SOL_TLS, TLS_TX, &crypto_info, + sizeof(crypto_info))) { + session->internals.ktls_enabled &= + ~GNUTLS_KTLS_SEND; + return gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); } - break; - case GNUTLS_CIPHER_CHACHA20_POLY1305: - { - struct tls12_crypto_info_chacha20_poly1305 - crypto_info; - memset(&crypto_info, 0, sizeof(crypto_info)); - - crypto_info.info.cipher_type = - TLS_CIPHER_CHACHA20_POLY1305; - assert(cipher_key.size == - TLS_CIPHER_CHACHA20_POLY1305_KEY_SIZE); - - /* for TLS 1.2 IV is generated in kernel */ - if (version == GNUTLS_TLS1_2) { - crypto_info.info.version = - TLS_1_2_VERSION; - memcpy(crypto_info.iv, seq_number, - TLS_CIPHER_CHACHA20_POLY1305_IV_SIZE); - } else { - crypto_info.info.version = - TLS_1_3_VERSION; - assert(iv.size == - TLS_CIPHER_CHACHA20_POLY1305_SALT_SIZE - + + } break; + case GNUTLS_CIPHER_CHACHA20_POLY1305: { + struct tls12_crypto_info_chacha20_poly1305 crypto_info; + memset(&crypto_info, 0, sizeof(crypto_info)); + + crypto_info.info.cipher_type = + TLS_CIPHER_CHACHA20_POLY1305; + assert(cipher_key.size == + TLS_CIPHER_CHACHA20_POLY1305_KEY_SIZE); + + /* for TLS 1.2 IV is generated in kernel */ + if (version == GNUTLS_TLS1_2) { + crypto_info.info.version = TLS_1_2_VERSION; + memcpy(crypto_info.iv, seq_number, + TLS_CIPHER_CHACHA20_POLY1305_IV_SIZE); + } else { + crypto_info.info.version = TLS_1_3_VERSION; + assert(iv.size == + TLS_CIPHER_CHACHA20_POLY1305_SALT_SIZE + TLS_CIPHER_CHACHA20_POLY1305_IV_SIZE); - memcpy(crypto_info.iv, - iv.data + + memcpy(crypto_info.iv, + iv.data + TLS_CIPHER_CHACHA20_POLY1305_SALT_SIZE, - TLS_CIPHER_CHACHA20_POLY1305_IV_SIZE); - } + TLS_CIPHER_CHACHA20_POLY1305_IV_SIZE); + } - memcpy(crypto_info.salt, iv.data, - TLS_CIPHER_CHACHA20_POLY1305_SALT_SIZE); - memcpy(crypto_info.rec_seq, seq_number, - TLS_CIPHER_CHACHA20_POLY1305_REC_SEQ_SIZE); - memcpy(crypto_info.key, cipher_key.data, - TLS_CIPHER_CHACHA20_POLY1305_KEY_SIZE); - - if (setsockopt(sockout, SOL_TLS, TLS_TX, - &crypto_info, - sizeof(crypto_info))) { - session->internals.ktls_enabled &= - ~GNUTLS_KTLS_SEND; - return - gnutls_assert_val - (GNUTLS_E_INTERNAL_ERROR); - } + memcpy(crypto_info.salt, iv.data, + TLS_CIPHER_CHACHA20_POLY1305_SALT_SIZE); + memcpy(crypto_info.rec_seq, seq_number, + TLS_CIPHER_CHACHA20_POLY1305_REC_SEQ_SIZE); + memcpy(crypto_info.key, cipher_key.data, + TLS_CIPHER_CHACHA20_POLY1305_KEY_SIZE); + + if (setsockopt(sockout, SOL_TLS, TLS_TX, &crypto_info, + sizeof(crypto_info))) { + session->internals.ktls_enabled &= + ~GNUTLS_KTLS_SEND; + return gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); } - break; + } break; default: assert(0); } // set callback for sending handshake messages - gnutls_handshake_set_read_function(session, - _gnutls_ktls_send_handshake_msg); + gnutls_handshake_set_read_function( + session, _gnutls_ktls_send_handshake_msg); // set callback for sending alert messages gnutls_alert_set_read_function(session, @@ -537,8 +469,8 @@ int _gnutls_ktls_set_keys(gnutls_session_t session, return in; } -ssize_t _gnutls_ktls_send_file(gnutls_session_t session, int fd, - off_t * offset, size_t count) +ssize_t _gnutls_ktls_send_file(gnutls_session_t session, int fd, off_t *offset, + size_t count) { ssize_t ret; int sockin, sockout; @@ -578,7 +510,7 @@ int _gnutls_ktls_send_control_msg(gnutls_session_t session, while (data_to_send > 0) { char cmsg[CMSG_SPACE(sizeof(unsigned char))]; struct msghdr msg = { 0 }; - struct iovec msg_iov; /* Vector of data to send/receive into. */ + struct iovec msg_iov; /* Vector of data to send/receive into. */ struct cmsghdr *hdr; msg.msg_control = cmsg; @@ -632,8 +564,8 @@ int _gnutls_ktls_send_handshake_msg(gnutls_session_t session, gnutls_handshake_description_t htype, const void *data, size_t data_size) { - return _gnutls_ktls_send_control_msg(session, GNUTLS_HANDSHAKE, - data, data_size); + return _gnutls_ktls_send_control_msg(session, GNUTLS_HANDSHAKE, data, + data_size); } int _gnutls_ktls_send_alert_msg(gnutls_session_t session, @@ -642,8 +574,8 @@ int _gnutls_ktls_send_alert_msg(gnutls_session_t session, gnutls_alert_description_t alert_desc) { uint8_t data[2]; - data[0] = (uint8_t) alert_level; - data[1] = (uint8_t) alert_desc; + data[0] = (uint8_t)alert_level; + data[1] = (uint8_t)alert_desc; return _gnutls_ktls_send_control_msg(session, GNUTLS_ALERT, data, 2); } @@ -720,23 +652,23 @@ int _gnutls_ktls_recv_int(gnutls_session_t session, content_type_t type, unsigned char record_type; int ret; - ret = _gnutls_ktls_recv_control_msg(session, - &record_type, data, data_size); + ret = _gnutls_ktls_recv_control_msg(session, &record_type, data, + data_size); if (ret > 0) { switch (record_type) { case GNUTLS_CHANGE_CIPHER_SPEC: - return - gnutls_assert_val(GNUTLS_E_UNIMPLEMENTED_FEATURE); + return gnutls_assert_val( + GNUTLS_E_UNIMPLEMENTED_FEATURE); break; case GNUTLS_ALERT: session_invalidate(session); ret = 0; break; case GNUTLS_HANDSHAKE: - ret = gnutls_handshake_write(session, - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - data, ret); + ret = gnutls_handshake_write( + session, GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + data, ret); if (ret < 0) return gnutls_assert_val(ret); @@ -758,7 +690,7 @@ int _gnutls_ktls_recv_int(gnutls_session_t session, content_type_t type, return ret; } -#else //ENABLE_KTLS +#else //ENABLE_KTLS gnutls_transport_ktls_enable_flags_t gnutls_transport_is_ktls_enabled(gnutls_session_t session) { @@ -775,8 +707,8 @@ int _gnutls_ktls_set_keys(gnutls_session_t sessioni, return gnutls_assert_val(GNUTLS_E_UNIMPLEMENTED_FEATURE); } -ssize_t _gnutls_ktls_send_file(gnutls_session_t session, int fd, - off_t * offset, size_t count) +ssize_t _gnutls_ktls_send_file(gnutls_session_t session, int fd, off_t *offset, + size_t count) { return gnutls_assert_val(GNUTLS_E_UNIMPLEMENTED_FEATURE); } @@ -803,4 +735,4 @@ int _gnutls_ktls_recv_int(gnutls_session_t session, content_type_t type, return gnutls_assert_val(GNUTLS_E_UNIMPLEMENTED_FEATURE); } -#endif //ENABLE_KTLS +#endif //ENABLE_KTLS diff --git a/lib/system/ktls.h b/lib/system/ktls.h index 186612e326..65c5cf149e 100644 --- a/lib/system/ktls.h +++ b/lib/system/ktls.h @@ -1,15 +1,15 @@ #ifndef GNUTLS_LIB_ACCELERATED_KTLS_H -# define GNUTLS_LIB_ACCELERATED_KTLS_H +#define GNUTLS_LIB_ACCELERATED_KTLS_H -# include "gnutls_int.h" +#include "gnutls_int.h" void _gnutls_ktls_enable(gnutls_session_t session); int _gnutls_ktls_set_keys(gnutls_session_t session, gnutls_transport_ktls_enable_flags_t in); -ssize_t _gnutls_ktls_send_file(gnutls_session_t session, int fd, - off_t * offset, size_t count); +ssize_t _gnutls_ktls_send_file(gnutls_session_t session, int fd, off_t *offset, + size_t count); int _gnutls_ktls_send_handshake_msg(gnutls_session_t session, gnutls_record_encryption_level_t level, @@ -24,7 +24,8 @@ int _gnutls_ktls_send_alert_msg(gnutls_session_t session, int _gnutls_ktls_send_control_msg(gnutls_session_t session, unsigned char record_type, const void *data, size_t data_size); -# define _gnutls_ktls_send(x, y, z) _gnutls_ktls_send_control_msg(x, GNUTLS_APPLICATION_DATA, y, z); +#define _gnutls_ktls_send(x, y, z) \ + _gnutls_ktls_send_control_msg(x, GNUTLS_APPLICATION_DATA, y, z); int _gnutls_ktls_recv_control_msg(gnutls_session_t session, unsigned char *record_type, void *data, @@ -32,6 +33,7 @@ int _gnutls_ktls_recv_control_msg(gnutls_session_t session, int _gnutls_ktls_recv_int(gnutls_session_t session, content_type_t type, void *data, size_t data_size); -# define _gnutls_ktls_recv(x, y, z) _gnutls_ktls_recv_int(x, GNUTLS_APPLICATION_DATA, y, z) +#define _gnutls_ktls_recv(x, y, z) \ + _gnutls_ktls_recv_int(x, GNUTLS_APPLICATION_DATA, y, z) -#endif /* GNUTLS_LIB_ACCELERATED_KTLS_H */ +#endif /* GNUTLS_LIB_ACCELERATED_KTLS_H */ diff --git a/lib/system/sockets.c b/lib/system/sockets.c index 6367114f30..f8eb62c2c6 100644 --- a/lib/system/sockets.c +++ b/lib/system/sockets.c @@ -32,9 +32,9 @@ #include #ifdef _WIN32 -# include -#else /* !_WIN32 */ -# include +#include +#else /* !_WIN32 */ +#include #endif /* System specific socket function wrappers. @@ -44,9 +44,9 @@ /* Do not use the gnulib functions for sending and receiving data. * Using them makes gnutls only working with gnulib applications. */ -# undef send -# undef recv -# undef select +#undef send +#undef recv +#undef select int system_errno(gnutls_transport_ptr p) { @@ -74,14 +74,14 @@ int system_errno(gnutls_transport_ptr p) return ret; } -ssize_t -system_write(gnutls_transport_ptr ptr, const void *data, size_t data_size) +ssize_t system_write(gnutls_transport_ptr ptr, const void *data, + size_t data_size) { return send(GNUTLS_POINTER_TO_INT(ptr), data, data_size, 0); } -ssize_t -system_writev(gnutls_transport_ptr_t ptr, const giovec_t * iovec, int iovec_cnt) +ssize_t system_writev(gnutls_transport_ptr_t ptr, const giovec_t *iovec, + int iovec_cnt) { WSABUF bufs[32]; DWORD bytes_sent; @@ -91,28 +91,30 @@ system_writev(gnutls_transport_ptr_t ptr, const giovec_t * iovec, int iovec_cnt) if ((size_t)iovec_cnt > sizeof(bufs) / sizeof(bufs[0])) iovec_cnt = sizeof(bufs) / sizeof(bufs[0]); - while (to_send_cnt < (DWORD) iovec_cnt && to_send_bytes < SSIZE_MAX) { + while (to_send_cnt < (DWORD)iovec_cnt && to_send_bytes < SSIZE_MAX) { bufs[to_send_cnt].buf = iovec[to_send_cnt].iov_base; if (to_send_bytes + iovec[to_send_cnt].iov_len > SSIZE_MAX) { /* Return value limit: successful result value cannot * exceed SSIZE_MAX */ size_t space_left = (size_t)SSIZE_MAX - to_send_bytes; - bufs[to_send_cnt].len = (unsigned long) - (space_left > ULONG_MAX ? ULONG_MAX : space_left); + bufs[to_send_cnt].len = + (unsigned long)(space_left > ULONG_MAX ? + ULONG_MAX : + space_left); to_send_cnt++; break; } -# ifdef _WIN64 +#ifdef _WIN64 if (iovec[to_send_cnt].iov_len > ULONG_MAX) { /* WSASend() limitation */ bufs[to_send_cnt].len = ULONG_MAX; to_send_cnt++; break; } -# endif +#endif bufs[to_send_cnt].len = - (unsigned long)iovec[to_send_cnt].iov_len; + (unsigned long)iovec[to_send_cnt].iov_len; to_send_bytes += iovec[to_send_cnt].iov_len; to_send_cnt++; } @@ -121,23 +123,22 @@ system_writev(gnutls_transport_ptr_t ptr, const giovec_t * iovec, int iovec_cnt) 0, NULL, NULL) != 0) return -1; - return (ssize_t) bytes_sent; + return (ssize_t)bytes_sent; } -#else /* POSIX */ +#else /* POSIX */ int system_errno(gnutls_transport_ptr_t ptr) { -# if defined(_AIX) || defined(AIX) +#if defined(_AIX) || defined(AIX) if (errno == 0) errno = EAGAIN; -# endif +#endif return errno; } -static ssize_t -_system_writev(gnutls_transport_ptr_t ptr, const giovec_t * iovec, - int iovec_cnt, int flags) +static ssize_t _system_writev(gnutls_transport_ptr_t ptr, const giovec_t *iovec, + int iovec_cnt, int flags) { struct msghdr hdr; @@ -148,18 +149,17 @@ _system_writev(gnutls_transport_ptr_t ptr, const giovec_t * iovec, return sendmsg(GNUTLS_POINTER_TO_INT(ptr), &hdr, flags); } -# ifdef MSG_NOSIGNAL -ssize_t -system_writev_nosignal(gnutls_transport_ptr_t ptr, const giovec_t * iovec, - int iovec_cnt) +#ifdef MSG_NOSIGNAL +ssize_t system_writev_nosignal(gnutls_transport_ptr_t ptr, + const giovec_t *iovec, int iovec_cnt) { return _system_writev(ptr, iovec, iovec_cnt, MSG_NOSIGNAL); } -# endif +#endif -ssize_t -system_writev(gnutls_transport_ptr_t ptr, const giovec_t * iovec, int iovec_cnt) +ssize_t system_writev(gnutls_transport_ptr_t ptr, const giovec_t *iovec, + int iovec_cnt) { return _system_writev(ptr, iovec, iovec_cnt, 0); } diff --git a/lib/system/threads.c b/lib/system/threads.c index a98cd968c3..bca790a21f 100644 --- a/lib/system/threads.c +++ b/lib/system/threads.c @@ -57,7 +57,7 @@ static int gnutls_system_mutex_init(void **priv) static int gnutls_system_mutex_deinit(void **priv) { - if (glthread_lock_destroy((gl_lock_t *) * priv)) { + if (glthread_lock_destroy((gl_lock_t *)*priv)) { return gnutls_assert_val(GNUTLS_E_LOCKING_ERROR); } free(*priv); @@ -66,7 +66,7 @@ static int gnutls_system_mutex_deinit(void **priv) static int gnutls_system_mutex_lock(void **priv) { - if (glthread_lock_lock((gl_lock_t *) * priv)) { + if (glthread_lock_lock((gl_lock_t *)*priv)) { return gnutls_assert_val(GNUTLS_E_LOCKING_ERROR); } return 0; @@ -74,7 +74,7 @@ static int gnutls_system_mutex_lock(void **priv) static int gnutls_system_mutex_unlock(void **priv) { - if (glthread_lock_unlock((gl_lock_t *) * priv)) { + if (glthread_lock_unlock((gl_lock_t *)*priv)) { return gnutls_assert_val(GNUTLS_E_LOCKING_ERROR); } return 0; diff --git a/lib/system_override.c b/lib/system_override.c index 53173309df..326c6adbef 100644 --- a/lib/system_override.c +++ b/lib/system_override.c @@ -36,7 +36,7 @@ #include #ifdef _WIN32 -# include +#include #endif /** @@ -78,9 +78,8 @@ void gnutls_transport_set_errno(gnutls_session_t session, int err) * @gnutls_pull_func is of the form, * ssize_t (*gnutls_pull_func)(gnutls_transport_ptr_t, void*, size_t); **/ -void -gnutls_transport_set_pull_function(gnutls_session_t session, - gnutls_pull_func pull_func) +void gnutls_transport_set_pull_function(gnutls_session_t session, + gnutls_pull_func pull_func) { session->internals.pull_func = pull_func; } @@ -119,9 +118,8 @@ gnutls_transport_set_pull_function(gnutls_session_t session, * * Since: 3.0 **/ -void -gnutls_transport_set_pull_timeout_function(gnutls_session_t session, - gnutls_pull_timeout_func func) +void gnutls_transport_set_pull_timeout_function(gnutls_session_t session, + gnutls_pull_timeout_func func) { session->internals.pull_timeout_func = func; } @@ -143,9 +141,8 @@ gnutls_transport_set_pull_timeout_function(gnutls_session_t session, * ssize_t (*gnutls_push_func)(gnutls_transport_ptr_t, const void*, size_t); * **/ -void -gnutls_transport_set_push_function(gnutls_session_t session, - gnutls_push_func push_func) +void gnutls_transport_set_push_function(gnutls_session_t session, + gnutls_push_func push_func) { session->internals.push_func = push_func; session->internals.vec_push_func = NULL; @@ -166,9 +163,8 @@ gnutls_transport_set_push_function(gnutls_session_t session, * * Since: 2.12.0 **/ -void -gnutls_transport_set_vec_push_function(gnutls_session_t session, - gnutls_vec_push_func vec_func) +void gnutls_transport_set_vec_push_function(gnutls_session_t session, + gnutls_vec_push_func vec_func) { session->internals.push_func = NULL; session->internals.vec_push_func = vec_func; @@ -188,9 +184,8 @@ gnutls_transport_set_vec_push_function(gnutls_session_t session, * * Since: 2.12.0 **/ -void -gnutls_transport_set_errno_function(gnutls_session_t session, - gnutls_errno_func errno_func) +void gnutls_transport_set_errno_function(gnutls_session_t session, + gnutls_errno_func errno_func) { session->internals.errno_func = errno_func; } diff --git a/lib/tls-sig.c b/lib/tls-sig.c index 45869fd802..91361c281e 100644 --- a/lib/tls-sig.c +++ b/lib/tls-sig.c @@ -49,26 +49,28 @@ int _gnutls_check_key_usage_for_sig(gnutls_session_t session, if (our_cert) { lstr = "Local"; allow_key_usage_violation = - session->internals. - priorities->allow_server_key_usage_violation; + session->internals.priorities + ->allow_server_key_usage_violation; } else { lstr = "Peer's"; allow_key_usage_violation = - session->internals.allow_key_usage_violation; + session->internals.allow_key_usage_violation; } if (key_usage != 0) { if (!(key_usage & GNUTLS_KEY_DIGITAL_SIGNATURE)) { gnutls_assert(); if (likely(allow_key_usage_violation == 0)) { - _gnutls_audit_log(session, - "%s certificate does not allow digital signatures. Key usage violation detected.\n", - lstr); + _gnutls_audit_log( + session, + "%s certificate does not allow digital signatures. Key usage violation detected.\n", + lstr); return GNUTLS_E_KEY_USAGE_VIOLATION; } else { - _gnutls_audit_log(session, - "%s certificate does not allow digital signatures. Key usage violation detected (ignored).\n", - lstr); + _gnutls_audit_log( + session, + "%s certificate does not allow digital signatures. Key usage violation detected (ignored).\n", + lstr); } } } @@ -78,23 +80,22 @@ int _gnutls_check_key_usage_for_sig(gnutls_session_t session, /* Generates a signature of all the random data and the parameters. * Used in *DHE_* ciphersuites for TLS 1.2. */ -static int -_gnutls_handshake_sign_data12(gnutls_session_t session, - gnutls_pcert_st * cert, gnutls_privkey_t pkey, - gnutls_datum_t * params, - gnutls_datum_t * signature, - gnutls_sign_algorithm_t sign_algo) +static int _gnutls_handshake_sign_data12(gnutls_session_t session, + gnutls_pcert_st *cert, + gnutls_privkey_t pkey, + gnutls_datum_t *params, + gnutls_datum_t *signature, + gnutls_sign_algorithm_t sign_algo) { gnutls_datum_t dconcat; int ret; - _gnutls_handshake_log - ("HSK[%p]: signing TLS 1.2 handshake data: using %s\n", session, - gnutls_sign_algorithm_get_name(sign_algo)); + _gnutls_handshake_log( + "HSK[%p]: signing TLS 1.2 handshake data: using %s\n", session, + gnutls_sign_algorithm_get_name(sign_algo)); - if (unlikely - (gnutls_sign_supports_pk_algorithm(sign_algo, pkey->pk_algorithm) == - 0)) + if (unlikely(gnutls_sign_supports_pk_algorithm( + sign_algo, pkey->pk_algorithm) == 0)) return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); dconcat.size = GNUTLS_RANDOM_SIZE * 2 + params->size; @@ -109,23 +110,22 @@ _gnutls_handshake_sign_data12(gnutls_session_t session, memcpy(dconcat.data + GNUTLS_RANDOM_SIZE * 2, params->data, params->size); - ret = gnutls_privkey_sign_data2(pkey, sign_algo, - 0, &dconcat, signature); + ret = gnutls_privkey_sign_data2(pkey, sign_algo, 0, &dconcat, + signature); if (ret < 0) { gnutls_assert(); } gnutls_free(dconcat.data); return ret; - } -static int -_gnutls_handshake_sign_data10(gnutls_session_t session, - gnutls_pcert_st * cert, gnutls_privkey_t pkey, - gnutls_datum_t * params, - gnutls_datum_t * signature, - gnutls_sign_algorithm_t sign_algo) +static int _gnutls_handshake_sign_data10(gnutls_session_t session, + gnutls_pcert_st *cert, + gnutls_privkey_t pkey, + gnutls_datum_t *params, + gnutls_datum_t *signature, + gnutls_sign_algorithm_t sign_algo) { gnutls_datum_t dconcat; int ret; @@ -142,17 +142,17 @@ _gnutls_handshake_sign_data10(gnutls_session_t session, if (me == NULL) return gnutls_assert_val(GNUTLS_E_UNKNOWN_HASH_ALGORITHM); - if (unlikely - (gnutls_sign_supports_pk_algorithm(sign_algo, pk_algo) == 0)) + if (unlikely(gnutls_sign_supports_pk_algorithm(sign_algo, pk_algo) == + 0)) return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); pk_algo = gnutls_sign_get_pk_algorithm(sign_algo); if (pk_algo == GNUTLS_PK_UNKNOWN) return gnutls_assert_val(GNUTLS_E_UNKNOWN_PK_ALGORITHM); - _gnutls_handshake_log - ("HSK[%p]: signing handshake data: using %s\n", session, - gnutls_sign_algorithm_get_name(sign_algo)); + _gnutls_handshake_log("HSK[%p]: signing handshake data: using %s\n", + session, + gnutls_sign_algorithm_get_name(sign_algo)); ret = _gnutls_hash_init(&td_sha, me); if (ret < 0) { @@ -171,10 +171,9 @@ _gnutls_handshake_sign_data10(gnutls_session_t session, dconcat.data = concat; dconcat.size = _gnutls_hash_get_algo_len(me); - ret = - gnutls_privkey_sign_hash(pkey, MAC_TO_DIG(me->id), - GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, - &dconcat, signature); + ret = gnutls_privkey_sign_hash(pkey, MAC_TO_DIG(me->id), + GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, + &dconcat, signature); if (ret < 0) { gnutls_assert(); } @@ -185,12 +184,10 @@ _gnutls_handshake_sign_data10(gnutls_session_t session, /* Generates a signature of all the random data and the parameters. * Used in DHE_* ciphersuites. */ -int -_gnutls_handshake_sign_data(gnutls_session_t session, - gnutls_pcert_st * cert, gnutls_privkey_t pkey, - gnutls_datum_t * params, - gnutls_datum_t * signature, - gnutls_sign_algorithm_t * sign_algo) +int _gnutls_handshake_sign_data(gnutls_session_t session, gnutls_pcert_st *cert, + gnutls_privkey_t pkey, gnutls_datum_t *params, + gnutls_datum_t *signature, + gnutls_sign_algorithm_t *sign_algo) { const version_entry_st *ver = get_version(session); unsigned key_usage = 0; @@ -209,25 +206,22 @@ _gnutls_handshake_sign_data(gnutls_session_t session, return gnutls_assert_val(ret); if (_gnutls_version_has_selectable_sighash(ver)) - return _gnutls_handshake_sign_data12(session, cert, pkey, - params, signature, - *sign_algo); + return _gnutls_handshake_sign_data12( + session, cert, pkey, params, signature, *sign_algo); else - return _gnutls_handshake_sign_data10(session, cert, pkey, - params, signature, - *sign_algo); + return _gnutls_handshake_sign_data10( + session, cert, pkey, params, signature, *sign_algo); } /* Generates a signature of all the random data and the parameters. * Used in DHE_* ciphersuites. */ -static int -_gnutls_handshake_verify_data10(gnutls_session_t session, - unsigned verify_flags, - gnutls_pcert_st * cert, - const gnutls_datum_t * params, - gnutls_datum_t * signature, - gnutls_sign_algorithm_t sign_algo) +static int _gnutls_handshake_verify_data10(gnutls_session_t session, + unsigned verify_flags, + gnutls_pcert_st *cert, + const gnutls_datum_t *params, + gnutls_datum_t *signature, + gnutls_sign_algorithm_t sign_algo) { gnutls_datum_t dconcat; int ret; @@ -269,43 +263,41 @@ _gnutls_handshake_verify_data10(gnutls_session_t session, ret = gnutls_pubkey_verify_hash2(cert->pubkey, sign_algo, GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1 | - verify_flags, &dconcat, signature); + verify_flags, + &dconcat, signature); if (ret < 0) return gnutls_assert_val(ret); return ret; } -static int -_gnutls_handshake_verify_data12(gnutls_session_t session, - unsigned verify_flags, - gnutls_pcert_st * cert, - const gnutls_datum_t * params, - gnutls_datum_t * signature, - gnutls_sign_algorithm_t sign_algo) +static int _gnutls_handshake_verify_data12(gnutls_session_t session, + unsigned verify_flags, + gnutls_pcert_st *cert, + const gnutls_datum_t *params, + gnutls_datum_t *signature, + gnutls_sign_algorithm_t sign_algo) { gnutls_datum_t dconcat; int ret; const version_entry_st *ver = get_version(session); const gnutls_sign_entry_st *se = _gnutls_sign_to_entry(sign_algo); - _gnutls_handshake_log - ("HSK[%p]: verify TLS 1.2 handshake data: using %s\n", session, - se->name); + _gnutls_handshake_log( + "HSK[%p]: verify TLS 1.2 handshake data: using %s\n", session, + se->name); - ret = - _gnutls_pubkey_compatible_with_sig(session, - cert->pubkey, ver, sign_algo); + ret = _gnutls_pubkey_compatible_with_sig(session, cert->pubkey, ver, + sign_algo); if (ret < 0) return gnutls_assert_val(ret); - if (unlikely - (sign_supports_cert_pk_algorithm(se, cert->pubkey->params.algo) == - 0)) { - _gnutls_handshake_log - ("HSK[%p]: certificate of %s cannot be combined with %s sig\n", - session, gnutls_pk_get_name(cert->pubkey->params.algo), - se->name); + if (unlikely(sign_supports_cert_pk_algorithm( + se, cert->pubkey->params.algo) == 0)) { + _gnutls_handshake_log( + "HSK[%p]: certificate of %s cannot be combined with %s sig\n", + session, gnutls_pk_get_name(cert->pubkey->params.algo), + se->name); return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); } @@ -335,13 +327,11 @@ _gnutls_handshake_verify_data12(gnutls_session_t session, return ret; } -int -_gnutls_handshake_verify_data(gnutls_session_t session, - unsigned verify_flags, - gnutls_pcert_st * cert, - const gnutls_datum_t * params, - gnutls_datum_t * signature, - gnutls_sign_algorithm_t sign_algo) +int _gnutls_handshake_verify_data(gnutls_session_t session, + unsigned verify_flags, gnutls_pcert_st *cert, + const gnutls_datum_t *params, + gnutls_datum_t *signature, + gnutls_sign_algorithm_t sign_algo) { unsigned key_usage; int ret; @@ -373,7 +363,7 @@ _gnutls_handshake_verify_data(gnutls_session_t session, /* Client certificate verify calculations */ -static void _gnutls_reverse_datum(gnutls_datum_t * d) +static void _gnutls_reverse_datum(gnutls_datum_t *d) { unsigned i; @@ -384,8 +374,8 @@ static void _gnutls_reverse_datum(gnutls_datum_t * d) } } -static int -_gnutls_create_reverse(const gnutls_datum_t * src, gnutls_datum_t * dst) +static int _gnutls_create_reverse(const gnutls_datum_t *src, + gnutls_datum_t *dst) { unsigned int i; @@ -402,12 +392,9 @@ _gnutls_create_reverse(const gnutls_datum_t * src, gnutls_datum_t * dst) /* this is _gnutls_handshake_verify_crt_vrfy for TLS 1.2 */ -static int -_gnutls_handshake_verify_crt_vrfy12(gnutls_session_t session, - unsigned verify_flags, - gnutls_pcert_st * cert, - gnutls_datum_t * signature, - gnutls_sign_algorithm_t sign_algo) +static int _gnutls_handshake_verify_crt_vrfy12( + gnutls_session_t session, unsigned verify_flags, gnutls_pcert_st *cert, + gnutls_datum_t *signature, gnutls_sign_algorithm_t sign_algo) { int ret; gnutls_datum_t dconcat; @@ -418,13 +405,12 @@ _gnutls_handshake_verify_crt_vrfy12(gnutls_session_t session, if (ret < 0) return gnutls_assert_val(ret); - if (unlikely - (sign_supports_cert_pk_algorithm(se, cert->pubkey->params.algo) == - 0)) { - _gnutls_handshake_log - ("HSK[%p]: certificate of %s cannot be combined with %s sig\n", - session, gnutls_pk_get_name(cert->pubkey->params.algo), - se->name); + if (unlikely(sign_supports_cert_pk_algorithm( + se, cert->pubkey->params.algo) == 0)) { + _gnutls_handshake_log( + "HSK[%p]: certificate of %s cannot be combined with %s sig\n", + session, gnutls_pk_get_name(cert->pubkey->params.algo), + se->name); return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); } @@ -440,36 +426,33 @@ _gnutls_handshake_verify_crt_vrfy12(gnutls_session_t session, /* Here we intentionally enable flag GNUTLS_VERIFY_ALLOW_BROKEN * because we have checked whether the currently used signature * algorithm is allowed in the session. */ - ret = - gnutls_pubkey_verify_data2(cert->pubkey, sign_algo, - verify_flags | - GNUTLS_VERIFY_ALLOW_BROKEN, &dconcat, - sig_rev.data ? &sig_rev : signature); + ret = gnutls_pubkey_verify_data2( + cert->pubkey, sign_algo, + verify_flags | GNUTLS_VERIFY_ALLOW_BROKEN, &dconcat, + sig_rev.data ? &sig_rev : signature); _gnutls_free_datum(&sig_rev); if (ret < 0) gnutls_assert(); return ret; - } /* Verifies a SSL 3.0 signature (like the one in the client certificate * verify message). */ #ifdef ENABLE_SSL3 -static int -_gnutls_handshake_verify_crt_vrfy3(gnutls_session_t session, - unsigned verify_flags, - gnutls_pcert_st * cert, - gnutls_datum_t * signature, - gnutls_sign_algorithm_t sign_algo) +static int _gnutls_handshake_verify_crt_vrfy3(gnutls_session_t session, + unsigned verify_flags, + gnutls_pcert_st *cert, + gnutls_datum_t *signature, + gnutls_sign_algorithm_t sign_algo) { int ret; uint8_t concat[MAX_SIG_SIZE]; digest_hd_st td_sha; gnutls_datum_t dconcat; gnutls_pk_algorithm_t pk = - gnutls_pubkey_get_pk_algorithm(cert->pubkey, NULL); + gnutls_pubkey_get_pk_algorithm(cert->pubkey, NULL); ret = _gnutls_generate_master(session, 1); if (ret < 0) { @@ -490,10 +473,10 @@ _gnutls_handshake_verify_crt_vrfy3(gnutls_session_t session, session->internals.handshake_hash_buffer.data, session->internals.handshake_hash_buffer_prev_len); - ret = _gnutls_mac_deinit_ssl3_handshake(&td_md5, concat, - session->security_parameters. - master_secret, - GNUTLS_MASTER_SIZE); + ret = _gnutls_mac_deinit_ssl3_handshake( + &td_md5, concat, + session->security_parameters.master_secret, + GNUTLS_MASTER_SIZE); if (ret < 0) return gnutls_assert_val(ret); @@ -507,16 +490,12 @@ _gnutls_handshake_verify_crt_vrfy3(gnutls_session_t session, return GNUTLS_E_HASH_FAILED; } - _gnutls_hash(&td_sha, - session->internals.handshake_hash_buffer.data, + _gnutls_hash(&td_sha, session->internals.handshake_hash_buffer.data, session->internals.handshake_hash_buffer_prev_len); - ret = - _gnutls_mac_deinit_ssl3_handshake(&td_sha, - dconcat.data + dconcat.size, - session->security_parameters. - master_secret, - GNUTLS_MASTER_SIZE); + ret = _gnutls_mac_deinit_ssl3_handshake( + &td_sha, dconcat.data + dconcat.size, + session->security_parameters.master_secret, GNUTLS_MASTER_SIZE); if (ret < 0) { return gnutls_assert_val(ret); } @@ -525,7 +504,8 @@ _gnutls_handshake_verify_crt_vrfy3(gnutls_session_t session, ret = gnutls_pubkey_verify_hash2(cert->pubkey, GNUTLS_SIGN_UNKNOWN, GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1 | - verify_flags, &dconcat, signature); + verify_flags, + &dconcat, signature); if (ret < 0) return gnutls_assert_val(ret); @@ -533,12 +513,9 @@ _gnutls_handshake_verify_crt_vrfy3(gnutls_session_t session, } #endif -static int -_gnutls_handshake_verify_crt_vrfy10(gnutls_session_t session, - unsigned verify_flags, - gnutls_pcert_st * cert, - gnutls_datum_t * signature, - gnutls_sign_algorithm_t sign_algo) +static int _gnutls_handshake_verify_crt_vrfy10( + gnutls_session_t session, unsigned verify_flags, gnutls_pcert_st *cert, + gnutls_datum_t *signature, gnutls_sign_algorithm_t sign_algo) { int ret; uint8_t concat[MAX_SIG_SIZE]; @@ -563,8 +540,7 @@ _gnutls_handshake_verify_crt_vrfy10(gnutls_session_t session, return ret; } - _gnutls_hash(&td_sha, - session->internals.handshake_hash_buffer.data, + _gnutls_hash(&td_sha, session->internals.handshake_hash_buffer.data, session->internals.handshake_hash_buffer_prev_len); _gnutls_hash_deinit(&td_sha, concat); @@ -574,7 +550,8 @@ _gnutls_handshake_verify_crt_vrfy10(gnutls_session_t session, ret = gnutls_pubkey_verify_hash2(cert->pubkey, sign_algo, GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1 | - verify_flags, &dconcat, signature); + verify_flags, + &dconcat, signature); if (ret < 0) gnutls_assert(); @@ -584,12 +561,11 @@ _gnutls_handshake_verify_crt_vrfy10(gnutls_session_t session, /* Verifies a TLS signature (like the one in the client certificate * verify message). */ -int -_gnutls_handshake_verify_crt_vrfy(gnutls_session_t session, - unsigned verify_flags, - gnutls_pcert_st * cert, - gnutls_datum_t * signature, - gnutls_sign_algorithm_t sign_algo) +int _gnutls_handshake_verify_crt_vrfy(gnutls_session_t session, + unsigned verify_flags, + gnutls_pcert_st *cert, + gnutls_datum_t *signature, + gnutls_sign_algorithm_t sign_algo) { int ret; const version_entry_st *ver = get_version(session); @@ -606,8 +582,7 @@ _gnutls_handshake_verify_crt_vrfy(gnutls_session_t session, if (ret < 0) return gnutls_assert_val(ret); - _gnutls_handshake_log("HSK[%p]: verify cert vrfy: using %s\n", - session, + _gnutls_handshake_log("HSK[%p]: verify cert vrfy: using %s\n", session, gnutls_sign_algorithm_get_name(sign_algo)); if (unlikely(ver == NULL)) @@ -617,42 +592,34 @@ _gnutls_handshake_verify_crt_vrfy(gnutls_session_t session, /* TLS 1.2 */ if (_gnutls_version_has_selectable_sighash(ver)) - return _gnutls_handshake_verify_crt_vrfy12(session, - verify_flags, - cert, - signature, - sign_algo); + return _gnutls_handshake_verify_crt_vrfy12( + session, verify_flags, cert, signature, sign_algo); #ifdef ENABLE_SSL3 if (ver->id == GNUTLS_SSL3) - return _gnutls_handshake_verify_crt_vrfy3(session, - verify_flags, - cert, - signature, sign_algo); + return _gnutls_handshake_verify_crt_vrfy3( + session, verify_flags, cert, signature, sign_algo); #endif /* TLS 1.0 and TLS 1.1 */ - return _gnutls_handshake_verify_crt_vrfy10(session, - verify_flags, - cert, signature, sign_algo); + return _gnutls_handshake_verify_crt_vrfy10(session, verify_flags, cert, + signature, sign_algo); } /* the same as _gnutls_handshake_sign_crt_vrfy except that it is made for TLS 1.2. * Returns the used signature algorithm, or a negative error code. */ -static int -_gnutls_handshake_sign_crt_vrfy12(gnutls_session_t session, - gnutls_pcert_st * cert, - gnutls_privkey_t pkey, - gnutls_datum_t * signature) +static int _gnutls_handshake_sign_crt_vrfy12(gnutls_session_t session, + gnutls_pcert_st *cert, + gnutls_privkey_t pkey, + gnutls_datum_t *signature) { gnutls_datum_t dconcat; gnutls_sign_algorithm_t sign_algo; const gnutls_sign_entry_st *se; int ret; - sign_algo = - _gnutls_session_get_sign_algo(session, cert, pkey, 1, - GNUTLS_KX_UNKNOWN); + sign_algo = _gnutls_session_get_sign_algo(session, cert, pkey, 1, + GNUTLS_KX_UNKNOWN); if (sign_algo == GNUTLS_SIGN_UNKNOWN) { gnutls_assert(); return GNUTLS_E_UNWANTED_ALGORITHM; @@ -664,9 +631,8 @@ _gnutls_handshake_sign_crt_vrfy12(gnutls_session_t session, gnutls_sign_algorithm_set_client(session, sign_algo); - if (unlikely - (gnutls_sign_supports_pk_algorithm(sign_algo, pkey->pk_algorithm) == - 0)) + if (unlikely(gnutls_sign_supports_pk_algorithm( + sign_algo, pkey->pk_algorithm) == 0)) return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); _gnutls_debug_log("sign handshake cert vrfy: picked %s\n", @@ -675,8 +641,8 @@ _gnutls_handshake_sign_crt_vrfy12(gnutls_session_t session, dconcat.data = session->internals.handshake_hash_buffer.data; dconcat.size = session->internals.handshake_hash_buffer.length; - ret = gnutls_privkey_sign_data2(pkey, sign_algo, - 0, &dconcat, signature); + ret = gnutls_privkey_sign_data2(pkey, sign_algo, 0, &dconcat, + signature); if (ret < 0) { gnutls_assert(); return ret; @@ -689,12 +655,11 @@ _gnutls_handshake_sign_crt_vrfy12(gnutls_session_t session, } #ifdef ENABLE_SSL3 -static int -_gnutls_handshake_sign_crt_vrfy3(gnutls_session_t session, - gnutls_pcert_st * cert, - const version_entry_st * ver, - gnutls_privkey_t pkey, - gnutls_datum_t * signature) +static int _gnutls_handshake_sign_crt_vrfy3(gnutls_session_t session, + gnutls_pcert_st *cert, + const version_entry_st *ver, + gnutls_privkey_t pkey, + gnutls_datum_t *signature) { gnutls_datum_t dconcat; int ret; @@ -703,9 +668,8 @@ _gnutls_handshake_sign_crt_vrfy3(gnutls_session_t session, gnutls_pk_algorithm_t pk = gnutls_privkey_get_pk_algorithm(pkey, NULL); /* ensure 1024 bit DSA keys are used */ - ret = - _gnutls_pubkey_compatible_with_sig(session, cert->pubkey, ver, - GNUTLS_SIGN_UNKNOWN); + ret = _gnutls_pubkey_compatible_with_sig(session, cert->pubkey, ver, + GNUTLS_SIGN_UNKNOWN); if (ret < 0) return gnutls_assert_val(ret); @@ -728,11 +692,10 @@ _gnutls_handshake_sign_crt_vrfy3(gnutls_session_t session, session->internals.handshake_hash_buffer.data, session->internals.handshake_hash_buffer.length); - ret = _gnutls_mac_deinit_ssl3_handshake(&td_md5, - dconcat.data, - session->security_parameters. - master_secret, - GNUTLS_MASTER_SIZE); + ret = _gnutls_mac_deinit_ssl3_handshake( + &td_md5, dconcat.data, + session->security_parameters.master_secret, + GNUTLS_MASTER_SIZE); if (ret < 0) return gnutls_assert_val(ret); @@ -745,15 +708,11 @@ _gnutls_handshake_sign_crt_vrfy3(gnutls_session_t session, return ret; } - _gnutls_hash(&td_sha, - session->internals.handshake_hash_buffer.data, + _gnutls_hash(&td_sha, session->internals.handshake_hash_buffer.data, session->internals.handshake_hash_buffer.length); - ret = - _gnutls_mac_deinit_ssl3_handshake(&td_sha, - dconcat.data + dconcat.size, - session->security_parameters. - master_secret, - GNUTLS_MASTER_SIZE); + ret = _gnutls_mac_deinit_ssl3_handshake( + &td_sha, dconcat.data + dconcat.size, + session->security_parameters.master_secret, GNUTLS_MASTER_SIZE); if (ret < 0) return gnutls_assert_val(ret); @@ -769,12 +728,11 @@ _gnutls_handshake_sign_crt_vrfy3(gnutls_session_t session, } #endif -static int -_gnutls_handshake_sign_crt_vrfy10(gnutls_session_t session, - gnutls_pcert_st * cert, - const version_entry_st * ver, - gnutls_privkey_t pkey, - gnutls_datum_t * signature) +static int _gnutls_handshake_sign_crt_vrfy10(gnutls_session_t session, + gnutls_pcert_st *cert, + const version_entry_st *ver, + gnutls_privkey_t pkey, + gnutls_datum_t *signature) { gnutls_datum_t dconcat; int ret; @@ -784,9 +742,8 @@ _gnutls_handshake_sign_crt_vrfy10(gnutls_session_t session, const mac_entry_st *me; /* ensure 1024 bit DSA keys are used */ - ret = - _gnutls_pubkey_compatible_with_sig(session, cert->pubkey, ver, - GNUTLS_SIGN_UNKNOWN); + ret = _gnutls_pubkey_compatible_with_sig(session, cert->pubkey, ver, + GNUTLS_SIGN_UNKNOWN); if (ret < 0) return gnutls_assert_val(ret); @@ -801,8 +758,7 @@ _gnutls_handshake_sign_crt_vrfy10(gnutls_session_t session, return ret; } - _gnutls_hash(&td_sha, - session->internals.handshake_hash_buffer.data, + _gnutls_hash(&td_sha, session->internals.handshake_hash_buffer.data, session->internals.handshake_hash_buffer.length); _gnutls_hash_deinit(&td_sha, concat); @@ -810,10 +766,9 @@ _gnutls_handshake_sign_crt_vrfy10(gnutls_session_t session, dconcat.data = concat; dconcat.size = _gnutls_hash_get_algo_len(me); - ret = - gnutls_privkey_sign_hash(pkey, MAC_TO_DIG(me->id), - GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, - &dconcat, signature); + ret = gnutls_privkey_sign_hash(pkey, MAC_TO_DIG(me->id), + GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, + &dconcat, signature); if (ret < 0) { gnutls_assert(); return ret; @@ -832,11 +787,10 @@ _gnutls_handshake_sign_crt_vrfy10(gnutls_session_t session, * * Returns the used signature algorithm, or a negative error code. */ -int -_gnutls_handshake_sign_crt_vrfy(gnutls_session_t session, - gnutls_pcert_st * cert, - gnutls_privkey_t pkey, - gnutls_datum_t * signature) +int _gnutls_handshake_sign_crt_vrfy(gnutls_session_t session, + gnutls_pcert_st *cert, + gnutls_privkey_t pkey, + gnutls_datum_t *signature) { int ret; const version_entry_st *ver = get_version(session); @@ -853,16 +807,16 @@ _gnutls_handshake_sign_crt_vrfy(gnutls_session_t session, /* TLS 1.2 */ if (_gnutls_version_has_selectable_sighash(ver)) - return _gnutls_handshake_sign_crt_vrfy12(session, cert, - pkey, signature); + return _gnutls_handshake_sign_crt_vrfy12(session, cert, pkey, + signature); - /* TLS 1.1 or earlier */ + /* TLS 1.1 or earlier */ #ifdef ENABLE_SSL3 if (ver->id == GNUTLS_SSL3) return _gnutls_handshake_sign_crt_vrfy3(session, cert, ver, pkey, signature); #endif - return _gnutls_handshake_sign_crt_vrfy10(session, cert, ver, - pkey, signature); + return _gnutls_handshake_sign_crt_vrfy10(session, cert, ver, pkey, + signature); } diff --git a/lib/tls-sig.h b/lib/tls-sig.h index a445088ddc..0b9ef41047 100644 --- a/lib/tls-sig.h +++ b/lib/tls-sig.h @@ -21,43 +21,40 @@ */ #ifndef GNUTLS_LIB_TLS_SIG_H -# define GNUTLS_LIB_TLS_SIG_H +#define GNUTLS_LIB_TLS_SIG_H -# include +#include /* While this is currently equal to the length of RSA/SHA512 * signature, it should also be sufficient for DSS signature and any * other RSA signatures including one with the old MD5/SHA1-combined * format. */ -# define MAX_SIG_SIZE (19 + MAX_HASH_SIZE) +#define MAX_SIG_SIZE (19 + MAX_HASH_SIZE) int _gnutls_check_key_usage_for_sig(gnutls_session_t session, unsigned key_usage, unsigned our_cert); int _gnutls_handshake_sign_crt_vrfy(gnutls_session_t session, - gnutls_pcert_st * cert, + gnutls_pcert_st *cert, gnutls_privkey_t pkey, - gnutls_datum_t * signature); + gnutls_datum_t *signature); -int _gnutls_handshake_sign_data(gnutls_session_t session, - gnutls_pcert_st * cert, - gnutls_privkey_t pkey, - gnutls_datum_t * params, - gnutls_datum_t * signature, - gnutls_sign_algorithm_t * algo); +int _gnutls_handshake_sign_data(gnutls_session_t session, gnutls_pcert_st *cert, + gnutls_privkey_t pkey, gnutls_datum_t *params, + gnutls_datum_t *signature, + gnutls_sign_algorithm_t *algo); int _gnutls_handshake_verify_crt_vrfy(gnutls_session_t session, unsigned verify_flags, - gnutls_pcert_st * cert, - gnutls_datum_t * signature, + gnutls_pcert_st *cert, + gnutls_datum_t *signature, gnutls_sign_algorithm_t); int _gnutls_handshake_verify_data(gnutls_session_t session, - unsigned verify_flags, - gnutls_pcert_st * cert, - const gnutls_datum_t * params, - gnutls_datum_t * signature, + unsigned verify_flags, gnutls_pcert_st *cert, + const gnutls_datum_t *params, + gnutls_datum_t *signature, gnutls_sign_algorithm_t algo); -#endif /* GNUTLS_LIB_TLS_SIG_H */ +#endif /* GNUTLS_LIB_TLS_SIG_H */ diff --git a/lib/tls13-sig.c b/lib/tls13-sig.c index c80b69e48e..c5e64e8ec7 100644 --- a/lib/tls13-sig.c +++ b/lib/tls13-sig.c @@ -34,16 +34,15 @@ #define PREFIX_SIZE 64 #if PREFIX_SIZE < MAX_HASH_SIZE /* we assume later that prefix is sufficient to store hash output */ -# error Need to modify code +#error Need to modify code #endif -int -_gnutls13_handshake_verify_data(gnutls_session_t session, - unsigned verify_flags, - gnutls_pcert_st * cert, - const gnutls_datum_t * context, - const gnutls_datum_t * signature, - const gnutls_sign_entry_st * se) +int _gnutls13_handshake_verify_data(gnutls_session_t session, + unsigned verify_flags, + gnutls_pcert_st *cert, + const gnutls_datum_t *context, + const gnutls_datum_t *signature, + const gnutls_sign_entry_st *se) { int ret; const version_entry_st *ver = get_version(session); @@ -52,23 +51,21 @@ _gnutls13_handshake_verify_data(gnutls_session_t session, unsigned key_usage = 0; gnutls_datum_t p; - _gnutls_handshake_log - ("HSK[%p]: verifying TLS 1.3 handshake data using %s\n", session, - se->name); + _gnutls_handshake_log( + "HSK[%p]: verifying TLS 1.3 handshake data using %s\n", session, + se->name); - ret = - _gnutls_pubkey_compatible_with_sig(session, - cert->pubkey, ver, se->id); + ret = _gnutls_pubkey_compatible_with_sig(session, cert->pubkey, ver, + se->id); if (ret < 0) return gnutls_assert_val(ret); - if (unlikely - (sign_supports_cert_pk_algorithm(se, cert->pubkey->params.algo) == - 0)) { - _gnutls_handshake_log - ("HSK[%p]: certificate of %s cannot be combined with %s sig\n", - session, gnutls_pk_get_name(cert->pubkey->params.algo), - se->name); + if (unlikely(sign_supports_cert_pk_algorithm( + se, cert->pubkey->params.algo) == 0)) { + _gnutls_handshake_log( + "HSK[%p]: certificate of %s cannot be combined with %s sig\n", + session, gnutls_pk_get_name(cert->pubkey->params.algo), + se->name); return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); } @@ -76,7 +73,8 @@ _gnutls13_handshake_verify_data(gnutls_session_t session, if (ret < 0) return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); - if ((se->flags & GNUTLS_SIGN_FLAG_TLS13_OK) == 0) /* explicitly prohibited */ + if ((se->flags & GNUTLS_SIGN_FLAG_TLS13_OK) == + 0) /* explicitly prohibited */ return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); gnutls_pubkey_get_key_usage(cert->pubkey, &key_usage); @@ -106,20 +104,17 @@ _gnutls13_handshake_verify_data(gnutls_session_t session, goto cleanup; } - ret = gnutls_hash_fast(MAC_TO_DIG(session->security_parameters.prf->id), - session->internals.handshake_hash_buffer.data, - session-> - internals.handshake_hash_buffer_prev_len, - prefix); + ret = gnutls_hash_fast( + MAC_TO_DIG(session->security_parameters.prf->id), + session->internals.handshake_hash_buffer.data, + session->internals.handshake_hash_buffer_prev_len, prefix); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _gnutls_buffer_append_data(&buf, prefix, - session->security_parameters. - prf->output_size); + ret = _gnutls_buffer_append_data( + &buf, prefix, session->security_parameters.prf->output_size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -137,36 +132,35 @@ _gnutls13_handshake_verify_data(gnutls_session_t session, } ret = 0; - cleanup: +cleanup: _gnutls_buffer_clear(&buf); return ret; } -int -_gnutls13_handshake_sign_data(gnutls_session_t session, - gnutls_pcert_st * cert, gnutls_privkey_t pkey, - const gnutls_datum_t * context, - gnutls_datum_t * signature, - const gnutls_sign_entry_st * se) +int _gnutls13_handshake_sign_data(gnutls_session_t session, + gnutls_pcert_st *cert, gnutls_privkey_t pkey, + const gnutls_datum_t *context, + gnutls_datum_t *signature, + const gnutls_sign_entry_st *se) { gnutls_datum_t p; int ret; gnutls_buffer_st buf; uint8_t tmp[MAX_HASH_SIZE]; - if (unlikely - (se == NULL || (se->flags & GNUTLS_SIGN_FLAG_TLS13_OK) == 0)) + if (unlikely(se == NULL || + (se->flags & GNUTLS_SIGN_FLAG_TLS13_OK) == 0)) return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); - if (unlikely - (sign_supports_priv_pk_algorithm(se, pkey->pk_algorithm) == 0)) + if (unlikely(sign_supports_priv_pk_algorithm(se, pkey->pk_algorithm) == + 0)) return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); /* when we reach here we know we have a signing certificate */ - _gnutls_handshake_log - ("HSK[%p]: signing TLS 1.3 handshake data: using %s and PRF: %s\n", - session, se->name, session->security_parameters.prf->name); + _gnutls_handshake_log( + "HSK[%p]: signing TLS 1.3 handshake data: using %s and PRF: %s\n", + session, se->name, session->security_parameters.prf->name); _gnutls_buffer_init(&buf); @@ -200,10 +194,8 @@ _gnutls13_handshake_sign_data(gnutls_session_t session, goto cleanup; } - ret = - _gnutls_buffer_append_data(&buf, tmp, - session->security_parameters. - prf->output_size); + ret = _gnutls_buffer_append_data( + &buf, tmp, session->security_parameters.prf->output_size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -212,18 +204,17 @@ _gnutls13_handshake_sign_data(gnutls_session_t session, p.data = buf.data; p.size = buf.length; - ret = gnutls_privkey_sign_data2(pkey, se->id, - GNUTLS_PRIVKEY_FLAG_RSA_PSS_FIXED_SALT_LENGTH, - &p, signature); + ret = gnutls_privkey_sign_data2( + pkey, se->id, GNUTLS_PRIVKEY_FLAG_RSA_PSS_FIXED_SALT_LENGTH, &p, + signature); if (ret < 0) { gnutls_assert(); goto cleanup; } ret = 0; - cleanup: +cleanup: _gnutls_buffer_clear(&buf); return ret; - } diff --git a/lib/tls13-sig.h b/lib/tls13-sig.h index c222403f60..aa680c729b 100644 --- a/lib/tls13-sig.h +++ b/lib/tls13-sig.h @@ -21,23 +21,21 @@ */ #ifndef GNUTLS_LIB_TLS13_SIG_H -# define GNUTLS_LIB_TLS13_SIG_H +#define GNUTLS_LIB_TLS13_SIG_H -# include "gnutls_int.h" +#include "gnutls_int.h" -int -_gnutls13_handshake_verify_data(gnutls_session_t session, - unsigned verify_flags, - gnutls_pcert_st * cert, - const gnutls_datum_t * context, - const gnutls_datum_t * signature, - const gnutls_sign_entry_st * se); +int _gnutls13_handshake_verify_data(gnutls_session_t session, + unsigned verify_flags, + gnutls_pcert_st *cert, + const gnutls_datum_t *context, + const gnutls_datum_t *signature, + const gnutls_sign_entry_st *se); -int -_gnutls13_handshake_sign_data(gnutls_session_t session, - gnutls_pcert_st * cert, gnutls_privkey_t pkey, - const gnutls_datum_t * context, - gnutls_datum_t * signature, - const gnutls_sign_entry_st * se); +int _gnutls13_handshake_sign_data(gnutls_session_t session, + gnutls_pcert_st *cert, gnutls_privkey_t pkey, + const gnutls_datum_t *context, + gnutls_datum_t *signature, + const gnutls_sign_entry_st *se); -#endif /* GNUTLS_LIB_TLS13_SIG_H */ +#endif /* GNUTLS_LIB_TLS13_SIG_H */ diff --git a/lib/tls13/anti_replay.c b/lib/tls13/anti_replay.c index 7b41c29241..2f041348eb 100644 --- a/lib/tls13/anti_replay.c +++ b/lib/tls13/anti_replay.c @@ -49,7 +49,7 @@ struct gnutls_anti_replay_st { * * Since: 3.6.5 **/ -int gnutls_anti_replay_init(gnutls_anti_replay_t * anti_replay) +int gnutls_anti_replay_init(gnutls_anti_replay_t *anti_replay) { *anti_replay = gnutls_calloc(1, sizeof(struct gnutls_anti_replay_st)); if (!*anti_replay) @@ -78,9 +78,8 @@ int gnutls_anti_replay_init(gnutls_anti_replay_t * anti_replay) * * Since: 3.6.5 */ -void -gnutls_anti_replay_set_window(gnutls_anti_replay_t anti_replay, - unsigned int window) +void gnutls_anti_replay_set_window(gnutls_anti_replay_t anti_replay, + unsigned int window) { anti_replay->window = window; } @@ -108,9 +107,8 @@ void gnutls_anti_replay_deinit(gnutls_anti_replay_t anti_replay) * * Since: 3.6.5 **/ -void -gnutls_anti_replay_enable(gnutls_session_t session, - gnutls_anti_replay_t anti_replay) +void gnutls_anti_replay_enable(gnutls_session_t session, + gnutls_anti_replay_t anti_replay) { if (unlikely(session->security_parameters.entity != GNUTLS_SERVER)) { gnutls_assert(); @@ -120,11 +118,10 @@ gnutls_anti_replay_enable(gnutls_session_t session, session->internals.anti_replay = anti_replay; } -int -_gnutls_anti_replay_check(gnutls_anti_replay_t anti_replay, - uint32_t client_ticket_age, - struct timespec *ticket_creation_time, - gnutls_datum_t * id) +int _gnutls_anti_replay_check(gnutls_anti_replay_t anti_replay, + uint32_t client_ticket_age, + struct timespec *ticket_creation_time, + gnutls_datum_t *id) { struct timespec now; time_t window; @@ -132,7 +129,7 @@ _gnutls_anti_replay_check(gnutls_anti_replay_t anti_replay, gnutls_datum_t key = { NULL, 0 }; gnutls_datum_t entry = { NULL, 0 }; unsigned char key_buffer[MAX_HASH_SIZE + 12]; - unsigned char entry_buffer[12]; /* magic + timestamp + expire_time */ + unsigned char entry_buffer[12]; /* magic + timestamp + expire_time */ unsigned char *p; int ret; @@ -153,8 +150,8 @@ _gnutls_anti_replay_check(gnutls_anti_replay_t anti_replay, */ if (_gnutls_timespec_cmp(ticket_creation_time, &anti_replay->start_time) < 0) { - _gnutls_handshake_log - ("anti_replay: ticket is created before recording has started\n"); + _gnutls_handshake_log( + "anti_replay: ticket is created before recording has started\n"); return gnutls_assert_val(GNUTLS_E_EARLY_DATA_REJECTED); } @@ -169,9 +166,9 @@ _gnutls_anti_replay_check(gnutls_anti_replay_t anti_replay, * data. */ if (server_ticket_age - client_ticket_age > anti_replay->window) { - _gnutls_handshake_log - ("anti_replay: server ticket age: %u, client ticket age: %u\n", - server_ticket_age, client_ticket_age); + _gnutls_handshake_log( + "anti_replay: server ticket age: %u, client ticket age: %u\n", + server_ticket_age, client_ticket_age); return gnutls_assert_val(GNUTLS_E_EARLY_DATA_REJECTED); } @@ -186,8 +183,7 @@ _gnutls_anti_replay_check(gnutls_anti_replay_t anti_replay, * the key becomes 44+ octets. */ p = key_buffer; - _gnutls_write_uint32((uint64_t) anti_replay->start_time.tv_sec >> 32, - p); + _gnutls_write_uint32((uint64_t)anti_replay->start_time.tv_sec >> 32, p); p += 4; _gnutls_write_uint32(anti_replay->start_time.tv_sec & 0xFFFFFFFF, p); p += 4; @@ -214,11 +210,11 @@ _gnutls_anti_replay_check(gnutls_anti_replay_t anti_replay, entry.size = p - entry_buffer; ret = anti_replay->db_add_func(anti_replay->db_ptr, - (uint64_t) now.tv_sec + - (uint64_t) window, &key, &entry); + (uint64_t)now.tv_sec + (uint64_t)window, + &key, &entry); if (ret < 0) { - _gnutls_handshake_log - ("anti_replay: duplicate ClientHello found\n"); + _gnutls_handshake_log( + "anti_replay: duplicate ClientHello found\n"); return gnutls_assert_val(GNUTLS_E_EARLY_DATA_REJECTED); } @@ -260,9 +256,8 @@ void gnutls_anti_replay_set_ptr(gnutls_anti_replay_t anti_replay, void *ptr) * * Since: 3.6.5 **/ -void -gnutls_anti_replay_set_add_function(gnutls_anti_replay_t anti_replay, - gnutls_db_add_func add_func) +void gnutls_anti_replay_set_add_function(gnutls_anti_replay_t anti_replay, + gnutls_db_add_func add_func) { anti_replay->db_add_func = add_func; } diff --git a/lib/tls13/anti_replay.h b/lib/tls13/anti_replay.h index e3ff48aa26..5ee91b08b0 100644 --- a/lib/tls13/anti_replay.h +++ b/lib/tls13/anti_replay.h @@ -21,11 +21,10 @@ */ #ifndef GNUTLS_LIB_TLS13_ANTI_REPLAY_H -# define GNUTLS_LIB_TLS13_ANTI_REPLAY_H +#define GNUTLS_LIB_TLS13_ANTI_REPLAY_H -int _gnutls_anti_replay_check(gnutls_anti_replay_t, - uint32_t client_ticket_age, +int _gnutls_anti_replay_check(gnutls_anti_replay_t, uint32_t client_ticket_age, struct timespec *ticket_creation_time, - gnutls_datum_t * id); + gnutls_datum_t *id); -#endif /* GNUTLS_LIB_TLS13_ANTI_REPLAY_H */ +#endif /* GNUTLS_LIB_TLS13_ANTI_REPLAY_H */ diff --git a/lib/tls13/certificate.c b/lib/tls13/certificate.c index e071a74aaa..d5fc847c51 100644 --- a/lib/tls13/certificate.c +++ b/lib/tls13/certificate.c @@ -31,14 +31,14 @@ #include "ext/compress_certificate.h" #include "ext/status_request.h" -static int parse_cert_extension(void *ctx, unsigned tls_id, - const uint8_t * data, unsigned data_size); -static int parse_cert_list(gnutls_session_t session, uint8_t * data, +static int parse_cert_extension(void *ctx, unsigned tls_id, const uint8_t *data, + unsigned data_size); +static int parse_cert_list(gnutls_session_t session, uint8_t *data, size_t data_size); -static int compress_certificate(gnutls_buffer_st * buf, unsigned cert_pos_mark, +static int compress_certificate(gnutls_buffer_st *buf, unsigned cert_pos_mark, gnutls_compression_method_t comp_method); static int decompress_certificate(gnutls_session_t session, - gnutls_buffer_st * buf); + gnutls_buffer_st *buf); int _gnutls13_recv_certificate(gnutls_session_t session) { @@ -59,31 +59,27 @@ int _gnutls13_recv_certificate(gnutls_session_t session) optional = 1; } - ret = - _gnutls_recv_handshake(session, GNUTLS_HANDSHAKE_CERTIFICATE_PKT, 0, - &buf); + ret = _gnutls_recv_handshake(session, GNUTLS_HANDSHAKE_CERTIFICATE_PKT, + 0, &buf); if (ret == GNUTLS_E_UNEXPECTED_HANDSHAKE_PACKET) { /* check if we received compressed certificate */ - err = - _gnutls_recv_handshake(session, - GNUTLS_HANDSHAKE_COMPRESSED_CERTIFICATE_PKT, - 0, &buf); + err = _gnutls_recv_handshake( + session, GNUTLS_HANDSHAKE_COMPRESSED_CERTIFICATE_PKT, 0, + &buf); if (err >= 0) { /* fail if we receive unsolicited compressed certificate */ - if (! - (session-> - internals.hsk_flags & HSK_COMP_CRT_REQ_SENT)) - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET); + if (!(session->internals.hsk_flags & + HSK_COMP_CRT_REQ_SENT)) + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET); decompress_cert = 1; ret = err; } } if (ret < 0) { - if (ret == GNUTLS_E_UNEXPECTED_HANDSHAKE_PACKET - && session->internals.send_cert_req) + if (ret == GNUTLS_E_UNEXPECTED_HANDSHAKE_PACKET && + session->internals.send_cert_req) return gnutls_assert_val(GNUTLS_E_NO_CERTIFICATE_FOUND); return gnutls_assert_val(ret); @@ -117,10 +113,10 @@ int _gnutls13_recv_certificate(gnutls_session_t session) } if (context.size != - session->internals.post_handshake_cr_context.size - || memcmp(context.data, - session->internals.post_handshake_cr_context.data, - context.size) != 0) { + session->internals.post_handshake_cr_context.size || + memcmp(context.data, + session->internals.post_handshake_cr_context.data, + context.size) != 0) { ret = GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER; gnutls_assert(); goto cleanup; @@ -157,7 +153,7 @@ int _gnutls13_recv_certificate(gnutls_session_t session) session->internals.hsk_flags |= HSK_CRT_VRFY_EXPECTED; ret = 0; - cleanup: +cleanup: _gnutls_buffer_clear(&buf); return ret; @@ -170,8 +166,7 @@ struct ocsp_req_ctx_st { gnutls_certificate_credentials_t cred; }; -static -int append_status_request(void *_ctx, gnutls_buffer_st * buf) +static int append_status_request(void *_ctx, gnutls_buffer_st *buf) { struct ocsp_req_ctx_st *ctx = _ctx; gnutls_session_t session = ctx->session; @@ -184,41 +179,39 @@ int append_status_request(void *_ctx, gnutls_buffer_st * buf) /* The global ocsp callback function can only be used to return * a single certificate request */ - if (session->internals.selected_ocsp_length == 1 - && ctx->cert_index != 0) + if (session->internals.selected_ocsp_length == 1 && + ctx->cert_index != 0) return 0; if (session->internals.selected_ocsp_length > 0) { if (ctx->cert_index < session->internals.selected_ocsp_length) { - if ((session->internals. - selected_ocsp[ctx->cert_index].exptime != 0 - && gnutls_time(0) >= - session->internals.selected_ocsp[ctx-> - cert_index].exptime) - || session->internals. - selected_ocsp[ctx->cert_index].response.data == - NULL) { + if ((session->internals.selected_ocsp[ctx->cert_index] + .exptime != 0 && + gnutls_time(0) >= + session->internals + .selected_ocsp[ctx->cert_index] + .exptime) || + session->internals.selected_ocsp[ctx->cert_index] + .response.data == NULL) { return 0; } - resp.data = - session->internals.selected_ocsp[ctx-> - cert_index].response. - data; - resp.size = - session->internals.selected_ocsp[ctx-> - cert_index].response. - size; + resp.data = session->internals + .selected_ocsp[ctx->cert_index] + .response.data; + resp.size = session->internals + .selected_ocsp[ctx->cert_index] + .response.size; ret = 0; } else { return 0; } } else if (session->internals.selected_ocsp_func) { if (ctx->cert_index == 0) { - ret = - session->internals.selected_ocsp_func(session, - session->internals.selected_ocsp_func_ptr, - &resp); + ret = session->internals.selected_ocsp_func( + session, + session->internals.selected_ocsp_func_ptr, + &resp); free_resp = 1; } else { return 0; @@ -245,7 +238,7 @@ int append_status_request(void *_ctx, gnutls_buffer_st * buf) } ret = 0; - cleanup: +cleanup: if (free_resp) gnutls_free(resp.data); return ret; @@ -268,8 +261,8 @@ int _gnutls13_send_certificate(gnutls_session_t session, unsigned again) comp_method = gnutls_compress_certificate_get_selected_method(session); compress_cert = comp_method != GNUTLS_COMP_UNKNOWN; - h_type = compress_cert ? GNUTLS_HANDSHAKE_COMPRESSED_CERTIFICATE_PKT - : GNUTLS_HANDSHAKE_CERTIFICATE_PKT; + h_type = compress_cert ? GNUTLS_HANDSHAKE_COMPRESSED_CERTIFICATE_PKT : + GNUTLS_HANDSHAKE_CERTIFICATE_PKT; if (again == 0) { if (!session->internals.initial_negotiation_completed && @@ -280,8 +273,8 @@ int _gnutls13_send_certificate(gnutls_session_t session, unsigned again) session->internals.resumed) return 0; - cred = (gnutls_certificate_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_CERTIFICATE); + cred = (gnutls_certificate_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_CERTIFICATE); if (cred == NULL) { gnutls_assert(); return GNUTLS_E_INSUFFICIENT_CREDENTIALS; @@ -305,9 +298,12 @@ int _gnutls13_send_certificate(gnutls_session_t session, unsigned again) cert_pos_mark = buf.length; if (session->security_parameters.entity == GNUTLS_CLIENT) { - ret = _gnutls_buffer_append_data_prefix(&buf, 8, - session->internals.post_handshake_cr_context.data, - session->internals.post_handshake_cr_context.size); + ret = _gnutls_buffer_append_data_prefix( + &buf, 8, + session->internals.post_handshake_cr_context + .data, + session->internals.post_handshake_cr_context + .size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -330,11 +326,9 @@ int _gnutls13_send_certificate(gnutls_session_t session, unsigned again) } for (i = 0; i < (unsigned)apr_cert_list_length; i++) { - ret = _gnutls_buffer_append_data_prefix(&buf, 24, - apr_cert_list - [i].cert.data, - apr_cert_list - [i].cert.size); + ret = _gnutls_buffer_append_data_prefix( + &buf, 24, apr_cert_list[i].cert.data, + apr_cert_list[i].cert.size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -342,13 +336,12 @@ int _gnutls13_send_certificate(gnutls_session_t session, unsigned again) #ifdef ENABLE_OCSP if ((session->internals.selected_ocsp_length > 0 || session->internals.selected_ocsp_func) && - (((session-> - internals.hsk_flags & HSK_OCSP_REQUESTED) - && IS_SERVER(session)) - || - ((session-> - internals.hsk_flags & HSK_CLIENT_OCSP_REQUESTED) - && !IS_SERVER(session)))) { + (((session->internals.hsk_flags & + HSK_OCSP_REQUESTED) && + IS_SERVER(session)) || + ((session->internals.hsk_flags & + HSK_CLIENT_OCSP_REQUESTED) && + !IS_SERVER(session)))) { /* append status response if available */ ret = _gnutls_extv_append_init(&buf); if (ret < 0) { @@ -361,19 +354,16 @@ int _gnutls13_send_certificate(gnutls_session_t session, unsigned again) ctx.cert_index = i; ctx.session = session; ctx.cred = cred; - ret = - _gnutls_extv_append(&buf, - STATUS_REQUEST_TLS_ID, - &ctx, - append_status_request); + ret = _gnutls_extv_append( + &buf, STATUS_REQUEST_TLS_ID, &ctx, + append_status_request); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _gnutls_extv_append_final(&buf, - ext_pos_mark, 0); + ret = _gnutls_extv_append_final( + &buf, ext_pos_mark, 0); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -393,9 +383,8 @@ int _gnutls13_send_certificate(gnutls_session_t session, unsigned again) &buf.data[pos_mark]); if (compress_cert) { - ret = - compress_certificate(&buf, cert_pos_mark, - comp_method); + ret = compress_certificate(&buf, cert_pos_mark, + comp_method); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -407,7 +396,7 @@ int _gnutls13_send_certificate(gnutls_session_t session, unsigned again) return _gnutls_send_handshake(session, bufel, h_type); - cleanup: +cleanup: _gnutls_buffer_clear(&buf); return ret; } @@ -419,7 +408,7 @@ typedef struct crt_cert_ctx_st { } crt_cert_ctx_st; static int parse_cert_extension(void *_ctx, unsigned tls_id, - const uint8_t * data, unsigned data_size) + const uint8_t *data, unsigned data_size) { crt_cert_ctx_st *ctx = _ctx; gnutls_session_t session = ctx->session; @@ -427,8 +416,8 @@ static int parse_cert_extension(void *_ctx, unsigned tls_id, if (tls_id == STATUS_REQUEST_TLS_ID) { #ifdef ENABLE_OCSP - if (!_gnutls_hello_ext_is_present - (session, ext_mod_status_request.gid)) { + if (!_gnutls_hello_ext_is_present(session, + ext_mod_status_request.gid)) { gnutls_assert(); goto unexpected; } @@ -436,9 +425,8 @@ static int parse_cert_extension(void *_ctx, unsigned tls_id, _gnutls_handshake_log("Found OCSP response on cert %d\n", ctx->idx); - ret = - _gnutls_parse_ocsp_response(session, data, data_size, - ctx->ocsp); + ret = _gnutls_parse_ocsp_response(session, data, data_size, + ctx->ocsp); if (ret < 0) return gnutls_assert_val(ret); #endif @@ -448,14 +436,14 @@ static int parse_cert_extension(void *_ctx, unsigned tls_id, return 0; - unexpected: +unexpected: _gnutls_debug_log("received unexpected certificate extension (%d)\n", (int)tls_id); return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION); } -static int -parse_cert_list(gnutls_session_t session, uint8_t * data, size_t data_size) +static int parse_cert_list(gnutls_session_t session, uint8_t *data, + size_t data_size) { int ret; size_t len; @@ -470,16 +458,15 @@ parse_cert_list(gnutls_session_t session, uint8_t * data, size_t data_size) gnutls_datum_t *peer_ocsp = NULL; unsigned nentries = 0; - cred = (gnutls_certificate_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_CERTIFICATE); + cred = (gnutls_certificate_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_CERTIFICATE); if (cred == NULL) { gnutls_assert(); return GNUTLS_E_INSUFFICIENT_CREDENTIALS; } - if ((ret = - _gnutls_auth_info_init(session, GNUTLS_CRD_CERTIFICATE, - sizeof(cert_auth_info_st), 1)) < 0) { + if ((ret = _gnutls_auth_info_init(session, GNUTLS_CRD_CERTIFICATE, + sizeof(cert_auth_info_st), 1)) < 0) { gnutls_assert(); return ret; } @@ -509,9 +496,8 @@ parse_cert_list(gnutls_session_t session, uint8_t * data, size_t data_size) DECR_LEN(data_size, 3); len = _gnutls_read_uint24(p); if (len == 0) - return - gnutls_assert_val - (GNUTLS_E_UNEXPECTED_PACKET_LENGTH); + return gnutls_assert_val( + GNUTLS_E_UNEXPECTED_PACKET_LENGTH); DECR_LEN(data_size, len); p += len + 3; @@ -579,8 +565,8 @@ parse_cert_list(gnutls_session_t session, uint8_t * data, size_t data_size) ctx.ocsp = &peer_ocsp[j]; ctx.idx = j; - ret = - _gnutls_extv_parse(&ctx, parse_cert_extension, p, len + 2); + ret = _gnutls_extv_parse(&ctx, parse_cert_extension, p, + len + 2); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -609,7 +595,7 @@ parse_cert_list(gnutls_session_t session, uint8_t * data, size_t data_size) return 0; - cleanup: +cleanup: for (j = 0; j < npeer_certs; j++) gnutls_free(peer_certs[j].data); @@ -618,12 +604,10 @@ parse_cert_list(gnutls_session_t session, uint8_t * data, size_t data_size) gnutls_free(peer_certs); gnutls_free(peer_ocsp); return ret; - } -static int -compress_certificate(gnutls_buffer_st * buf, unsigned cert_pos_mark, - gnutls_compression_method_t comp_method) +static int compress_certificate(gnutls_buffer_st *buf, unsigned cert_pos_mark, + gnutls_compression_method_t comp_method) { int ret, method_num; size_t comp_bound; @@ -642,9 +626,8 @@ compress_certificate(gnutls_buffer_st * buf, unsigned cert_pos_mark, comp.data = gnutls_malloc(comp_bound); if (comp.data == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - ret = - _gnutls_compress(comp_method, comp.data, comp_bound, plain.data, - plain.size); + ret = _gnutls_compress(comp_method, comp.data, comp_bound, plain.data, + plain.size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -668,13 +651,13 @@ compress_certificate(gnutls_buffer_st * buf, unsigned cert_pos_mark, goto cleanup; } - cleanup: +cleanup: gnutls_free(comp.data); return ret; } -static int -decompress_certificate(gnutls_session_t session, gnutls_buffer_st * buf) +static int decompress_certificate(gnutls_session_t session, + gnutls_buffer_st *buf) { int ret; size_t method_num, plain_exp_len; @@ -686,8 +669,8 @@ decompress_certificate(gnutls_session_t session, gnutls_buffer_st * buf) return gnutls_assert_val(ret); comp_method = _gnutls_compress_certificate_num2method(method_num); - if (!_gnutls_compress_certificate_is_method_enabled - (session, comp_method)) + if (!_gnutls_compress_certificate_is_method_enabled(session, + comp_method)) return gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER); ret = _gnutls_buffer_pop_prefix24(buf, &plain_exp_len, 0); @@ -701,9 +684,8 @@ decompress_certificate(gnutls_session_t session, gnutls_buffer_st * buf) plain.data = gnutls_malloc(plain_exp_len); if (plain.data == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); - ret = - _gnutls_decompress(comp_method, plain.data, plain_exp_len, - comp.data, comp.size); + ret = _gnutls_decompress(comp_method, plain.data, plain_exp_len, + comp.data, comp.size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -723,7 +705,7 @@ decompress_certificate(gnutls_session_t session, gnutls_buffer_st * buf) goto cleanup; } - cleanup: +cleanup: gnutls_free(plain.data); return ret; } diff --git a/lib/tls13/certificate.h b/lib/tls13/certificate.h index a0505d560b..6f46cc2dd6 100644 --- a/lib/tls13/certificate.h +++ b/lib/tls13/certificate.h @@ -21,9 +21,9 @@ */ #ifndef GNUTLS_LIB_TLS13_CERTIFICATE_H -# define GNUTLS_LIB_TLS13_CERTIFICATE_H +#define GNUTLS_LIB_TLS13_CERTIFICATE_H int _gnutls13_recv_certificate(gnutls_session_t session); int _gnutls13_send_certificate(gnutls_session_t session, unsigned again); -#endif /* GNUTLS_LIB_TLS13_CERTIFICATE_H */ +#endif /* GNUTLS_LIB_TLS13_CERTIFICATE_H */ diff --git a/lib/tls13/certificate_request.c b/lib/tls13/certificate_request.c index 1dd92628b5..8a8a1499af 100644 --- a/lib/tls13/certificate_request.c +++ b/lib/tls13/certificate_request.c @@ -42,13 +42,12 @@ typedef struct crt_req_ctx_st { unsigned got_sig_algo; gnutls_pk_algorithm_t pk_algos[MAX_ALGOS]; unsigned pk_algos_length; - const uint8_t *rdn; /* pointer inside the message buffer */ + const uint8_t *rdn; /* pointer inside the message buffer */ unsigned rdn_size; } crt_req_ctx_st; static unsigned is_algo_in_list(gnutls_pk_algorithm_t algo, - gnutls_pk_algorithm_t * list, - unsigned list_size) + gnutls_pk_algorithm_t *list, unsigned list_size) { unsigned j; @@ -59,9 +58,8 @@ static unsigned is_algo_in_list(gnutls_pk_algorithm_t algo, return 0; } -static -int parse_cert_extension(void *_ctx, unsigned tls_id, const uint8_t * data, - unsigned data_size) +static int parse_cert_extension(void *_ctx, unsigned tls_id, + const uint8_t *data, unsigned data_size) { crt_req_ctx_st *ctx = _ctx; gnutls_session_t session = ctx->session; @@ -78,28 +76,25 @@ int parse_cert_extension(void *_ctx, unsigned tls_id, const uint8_t * data, unsigned i; if (ctx->got_sig_algo) - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION); ctx->got_sig_algo = 1; if (data_size < 2) - return - gnutls_assert_val - (GNUTLS_E_TLS_PACKET_DECODING_ERROR); + return gnutls_assert_val( + GNUTLS_E_TLS_PACKET_DECODING_ERROR); v = _gnutls_read_uint16(data); if (v != data_size - 2) - return - gnutls_assert_val - (GNUTLS_E_TLS_PACKET_DECODING_ERROR); + return gnutls_assert_val( + GNUTLS_E_TLS_PACKET_DECODING_ERROR); data += 2; data_size -= 2; - ret = - _gnutls_sign_algorithm_parse_data(session, data, data_size); + ret = _gnutls_sign_algorithm_parse_data(session, data, + data_size); if (ret < 0) return gnutls_assert_val(ret); @@ -117,8 +112,8 @@ int parse_cert_extension(void *_ctx, unsigned tls_id, const uint8_t * data, sizeof(ctx->pk_algos) / sizeof(ctx->pk_algos[0])) break; - if (is_algo_in_list - (se->pk, ctx->pk_algos, ctx->pk_algos_length)) + if (is_algo_in_list(se->pk, ctx->pk_algos, + ctx->pk_algos_length)) continue; ctx->pk_algos[ctx->pk_algos_length++] = se->pk; @@ -126,31 +121,28 @@ int parse_cert_extension(void *_ctx, unsigned tls_id, const uint8_t * data, #ifdef ENABLE_OCSP } else if (tls_id == ext_mod_status_request.tls_id) { if (data_size != 0) - return - gnutls_assert_val - (GNUTLS_E_TLS_PACKET_DECODING_ERROR); + return gnutls_assert_val( + GNUTLS_E_TLS_PACKET_DECODING_ERROR); /* we are now allowed to send OCSP staples */ session->internals.hsk_flags |= HSK_CLIENT_OCSP_REQUESTED; #endif } else if (tls_id == EXTID_CERTIFICATE_AUTHORITIES) { if (data_size < 3) { - return - gnutls_assert_val - (GNUTLS_E_TLS_PACKET_DECODING_ERROR); + return gnutls_assert_val( + GNUTLS_E_TLS_PACKET_DECODING_ERROR); } v = _gnutls_read_uint16(data); if (v != data_size - 2) - return - gnutls_assert_val - (GNUTLS_E_TLS_PACKET_DECODING_ERROR); + return gnutls_assert_val( + GNUTLS_E_TLS_PACKET_DECODING_ERROR); ctx->rdn = data + 2; ctx->rdn_size = v; } else if (tls_id == ext_mod_compress_certificate.tls_id) { - ret = _gnutls_compress_certificate_recv_params(session, - data, data_size); + ret = _gnutls_compress_certificate_recv_params(session, data, + data_size); if (ret < 0) { return gnutls_assert_val(ret); } @@ -160,7 +152,7 @@ int parse_cert_extension(void *_ctx, unsigned tls_id, const uint8_t * data, } int _gnutls13_recv_certificate_request_int(gnutls_session_t session, - gnutls_buffer_st * buf) + gnutls_buffer_st *buf) { int ret; crt_req_ctx_st ctx; @@ -178,9 +170,8 @@ int _gnutls13_recv_certificate_request_int(gnutls_session_t session, if (!session->internals.initial_negotiation_completed) { if (buf->data[0] != 0) { /* The context field must be empty during handshake */ - return - gnutls_assert_val - (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); + return gnutls_assert_val( + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); } /* buf->length is positive */ @@ -194,10 +185,9 @@ int _gnutls13_recv_certificate_request_int(gnutls_session_t session, return gnutls_assert_val(ret); gnutls_free(session->internals.post_handshake_cr_context.data); - ret = - _gnutls_set_datum(&session-> - internals.post_handshake_cr_context, - context.data, context.size); + ret = _gnutls_set_datum( + &session->internals.post_handshake_cr_context, + context.data, context.size); if (ret < 0) return gnutls_assert_val(ret); } @@ -205,9 +195,8 @@ int _gnutls13_recv_certificate_request_int(gnutls_session_t session, memset(&ctx, 0, sizeof(ctx)); ctx.session = session; - ret = - _gnutls_extv_parse(&ctx, parse_cert_extension, buf->data, - buf->length); + ret = _gnutls_extv_parse(&ctx, parse_cert_extension, buf->data, + buf->length); if (ret < 0) return gnutls_assert_val(ret); @@ -230,14 +219,13 @@ int _gnutls13_recv_certificate_request_int(gnutls_session_t session, if (apr_cert_list_length > 0) { gnutls_sign_algorithm_t algo; - algo = - _gnutls_session_get_sign_algo(session, &apr_cert_list[0], - apr_pkey, 0, - GNUTLS_KX_UNKNOWN); + algo = _gnutls_session_get_sign_algo(session, &apr_cert_list[0], + apr_pkey, 0, + GNUTLS_KX_UNKNOWN); if (algo == GNUTLS_SIGN_UNKNOWN) { - _gnutls_handshake_log - ("HSK[%p]: rejecting client auth because of no suitable signature algorithm\n", - session); + _gnutls_handshake_log( + "HSK[%p]: rejecting client auth because of no suitable signature algorithm\n", + session); _gnutls_selected_certs_deinit(session); return gnutls_assert_val(0); } @@ -260,10 +248,8 @@ int _gnutls13_recv_certificate_request(gnutls_session_t session) if (unlikely(session->security_parameters.entity != GNUTLS_CLIENT)) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - ret = - _gnutls_recv_handshake(session, - GNUTLS_HANDSHAKE_CERTIFICATE_REQUEST, 1, - &buf); + ret = _gnutls_recv_handshake( + session, GNUTLS_HANDSHAKE_CERTIFICATE_REQUEST, 1, &buf); if (ret < 0) return gnutls_assert_val(ret); @@ -279,8 +265,7 @@ int _gnutls13_recv_certificate_request(gnutls_session_t session) return ret; } -static -int write_certificate_authorities(void *ctx, gnutls_buffer_st * buf) +static int write_certificate_authorities(void *ctx, gnutls_buffer_st *buf) { gnutls_session_t session = ctx; gnutls_certificate_credentials_t cred; @@ -288,8 +273,8 @@ int write_certificate_authorities(void *ctx, gnutls_buffer_st * buf) if (session->internals.ignore_rdn_sequence != 0) return 0; - cred = (gnutls_certificate_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_CERTIFICATE); + cred = (gnutls_certificate_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_CERTIFICATE); if (cred == NULL) { gnutls_assert(); return GNUTLS_E_INSUFFICIENT_CREDENTIALS; @@ -298,15 +283,12 @@ int write_certificate_authorities(void *ctx, gnutls_buffer_st * buf) if (cred->tlist->x509_rdn_sequence.size == 0) return 0; - return - _gnutls_buffer_append_data_prefix(buf, 16, - cred->tlist->x509_rdn_sequence. - data, - cred->tlist->x509_rdn_sequence. - size); + return _gnutls_buffer_append_data_prefix( + buf, 16, cred->tlist->x509_rdn_sequence.data, + cred->tlist->x509_rdn_sequence.size); } -static int append_empty_ext(void *ctx, gnutls_buffer_st * buf) +static int append_empty_ext(void *ctx, gnutls_buffer_st *buf) { return GNUTLS_E_INT_RET_0; } @@ -329,38 +311,40 @@ int _gnutls13_send_certificate_request(gnutls_session_t session, unsigned again) if (session->internals.send_cert_req == 0) return 0; - cred = (gnutls_certificate_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_CERTIFICATE); + cred = (gnutls_certificate_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_CERTIFICATE); if (cred == NULL) - return - gnutls_assert_val - (GNUTLS_E_INSUFFICIENT_CREDENTIALS); + return gnutls_assert_val( + GNUTLS_E_INSUFFICIENT_CREDENTIALS); ret = _gnutls_buffer_init_handshake_mbuffer(&buf); if (ret < 0) return gnutls_assert_val(ret); - if (session->internals.initial_negotiation_completed) { /* reauth */ + if (session->internals + .initial_negotiation_completed) { /* reauth */ ret = gnutls_rnd(GNUTLS_RND_NONCE, rnd, sizeof(rnd)); if (ret < 0) { gnutls_assert(); goto cleanup; } - gnutls_free(session-> - internals.post_handshake_cr_context.data); - ret = - _gnutls_set_datum(&session-> - internals.post_handshake_cr_context, - rnd, sizeof(rnd)); + gnutls_free(session->internals.post_handshake_cr_context + .data); + ret = _gnutls_set_datum( + &session->internals.post_handshake_cr_context, + rnd, sizeof(rnd)); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = _gnutls_buffer_append_data_prefix(&buf, 8, - session->internals.post_handshake_cr_context.data, - session->internals.post_handshake_cr_context.size); + ret = _gnutls_buffer_append_data_prefix( + &buf, 8, + session->internals.post_handshake_cr_context + .data, + session->internals.post_handshake_cr_context + .size); } else { ret = _gnutls_buffer_append_prefix(&buf, 8, 0); } @@ -377,26 +361,25 @@ int _gnutls13_send_certificate_request(gnutls_session_t session, unsigned again) } init_pos = ret; - ret = _gnutls_extv_append(&buf, ext_mod_sig.tls_id, session, - (extv_append_func) - _gnutls_sign_algorithm_write_params); + ret = _gnutls_extv_append( + &buf, ext_mod_sig.tls_id, session, + (extv_append_func)_gnutls_sign_algorithm_write_params); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _gnutls_extv_append(&buf, EXTID_CERTIFICATE_AUTHORITIES, - session, write_certificate_authorities); + ret = _gnutls_extv_append(&buf, EXTID_CERTIFICATE_AUTHORITIES, + session, + write_certificate_authorities); if (ret < 0) { gnutls_assert(); goto cleanup; } #ifdef ENABLE_OCSP /* We always advertise our support for OCSP stapling */ - ret = - _gnutls_extv_append(&buf, ext_mod_status_request.tls_id, - session, append_empty_ext); + ret = _gnutls_extv_append(&buf, ext_mod_status_request.tls_id, + session, append_empty_ext); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -404,11 +387,10 @@ int _gnutls13_send_certificate_request(gnutls_session_t session, unsigned again) session->internals.hsk_flags |= HSK_CLIENT_OCSP_REQUESTED; #endif - ret = - _gnutls_extv_append(&buf, - ext_mod_compress_certificate.tls_id, - session, (extv_append_func) - _gnutls_compress_certificate_send_params); + ret = _gnutls_extv_append( + &buf, ext_mod_compress_certificate.tls_id, session, + (extv_append_func) + _gnutls_compress_certificate_send_params); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -428,8 +410,7 @@ int _gnutls13_send_certificate_request(gnutls_session_t session, unsigned again) return _gnutls_send_handshake(session, bufel, GNUTLS_HANDSHAKE_CERTIFICATE_REQUEST); - cleanup: +cleanup: _gnutls_buffer_clear(&buf); return ret; - } diff --git a/lib/tls13/certificate_request.h b/lib/tls13/certificate_request.h index 3f0c9e29f0..226047d932 100644 --- a/lib/tls13/certificate_request.h +++ b/lib/tls13/certificate_request.h @@ -21,13 +21,13 @@ */ #ifndef GNUTLS_LIB_TLS13_CERTIFICATE_REQUEST_H -# define GNUTLS_LIB_TLS13_CERTIFICATE_REQUEST_H +#define GNUTLS_LIB_TLS13_CERTIFICATE_REQUEST_H int _gnutls13_recv_certificate_request(gnutls_session_t session); int _gnutls13_recv_certificate_request_int(gnutls_session_t session, - gnutls_buffer_st * buf); + gnutls_buffer_st *buf); int _gnutls13_send_certificate_request(gnutls_session_t session, unsigned again); -#endif /* GNUTLS_LIB_TLS13_CERTIFICATE_REQUEST_H */ +#endif /* GNUTLS_LIB_TLS13_CERTIFICATE_REQUEST_H */ diff --git a/lib/tls13/certificate_verify.c b/lib/tls13/certificate_verify.c index fdb9f6da0d..1cca457ec1 100644 --- a/lib/tls13/certificate_verify.c +++ b/lib/tls13/certificate_verify.c @@ -31,14 +31,10 @@ #include "tls13/certificate_verify.h" #define SRV_CTX "TLS 1.3, server CertificateVerify" -static const gnutls_datum_t srv_ctx = { - (void *)SRV_CTX, sizeof(SRV_CTX) - 1 -}; +static const gnutls_datum_t srv_ctx = { (void *)SRV_CTX, sizeof(SRV_CTX) - 1 }; #define CLI_CTX "TLS 1.3, client CertificateVerify" -static const gnutls_datum_t cli_ctx = { - (void *)CLI_CTX, sizeof(CLI_CTX) - 1 -}; +static const gnutls_datum_t cli_ctx = { (void *)CLI_CTX, sizeof(CLI_CTX) - 1 }; int _gnutls13_recv_certificate_verify(gnutls_session_t session) { @@ -50,7 +46,7 @@ int _gnutls13_recv_certificate_verify(gnutls_session_t session) unsigned vflags; gnutls_pcert_st peer_cert; cert_auth_info_t info = - _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE); + _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE); bool server = 0; gnutls_certificate_type_t cert_type; @@ -64,16 +60,15 @@ int _gnutls13_recv_certificate_verify(gnutls_session_t session) if (session->security_parameters.entity == GNUTLS_SERVER) server = 1; - cred = (gnutls_certificate_credentials_t) - _gnutls_get_cred(session, GNUTLS_CRD_CERTIFICATE); + cred = (gnutls_certificate_credentials_t)_gnutls_get_cred( + session, GNUTLS_CRD_CERTIFICATE); if (unlikely(cred == NULL)) return gnutls_assert_val(GNUTLS_E_INSUFFICIENT_CREDENTIALS); if (unlikely(info == NULL)) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - ret = - _gnutls_recv_handshake(session, GNUTLS_HANDSHAKE_CERTIFICATE_VERIFY, - 0, &buf); + ret = _gnutls_recv_handshake( + session, GNUTLS_HANDSHAKE_CERTIFICATE_VERIFY, 0, &buf); if (ret < 0) return gnutls_assert_val(ret); @@ -127,8 +122,8 @@ int _gnutls13_recv_certificate_verify(gnutls_session_t session) goto cleanup; } - vflags = - cred->verify_flags | session->internals.additional_verify_flags; + vflags = cred->verify_flags | + session->internals.additional_verify_flags; ret = _gnutls13_handshake_verify_data(session, vflags, &peer_cert, server ? (&cli_ctx) : (&srv_ctx), @@ -145,7 +140,7 @@ int _gnutls13_recv_certificate_verify(gnutls_session_t session) } ret = 0; - cleanup: +cleanup: gnutls_pcert_deinit(&peer_cert); _gnutls_buffer_clear(&buf); return ret; @@ -184,9 +179,8 @@ int _gnutls13_send_certificate_verify(gnutls_session_t session, unsigned again) if (apr_cert_list_length == 0) { if (server) { - return - gnutls_assert_val - (GNUTLS_E_INSUFFICIENT_CREDENTIALS); + return gnutls_assert_val( + GNUTLS_E_INSUFFICIENT_CREDENTIALS); } else { /* for client, this means either we * didn't get a cert request or we are @@ -197,15 +191,13 @@ int _gnutls13_send_certificate_verify(gnutls_session_t session, unsigned again) } if (server) { - algo = - _gnutls_session_get_sign_algo(session, - &apr_cert_list[0], - apr_pkey, 0, - GNUTLS_KX_UNKNOWN); + algo = _gnutls_session_get_sign_algo(session, + &apr_cert_list[0], + apr_pkey, 0, + GNUTLS_KX_UNKNOWN); if (algo == GNUTLS_SIGN_UNKNOWN) - return - gnutls_assert_val - (GNUTLS_E_INCOMPATIBLE_SIG_WITH_KEY); + return gnutls_assert_val( + GNUTLS_E_INCOMPATIBLE_SIG_WITH_KEY); gnutls_sign_algorithm_set_server(session, algo); } else { @@ -213,16 +205,15 @@ int _gnutls13_send_certificate_verify(gnutls_session_t session, unsigned again) * determined from Certificate Request */ algo = gnutls_sign_algorithm_get_client(session); if (unlikely(algo == GNUTLS_SIGN_UNKNOWN)) - return - gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); + return gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); } se = _gnutls_sign_to_entry(algo); - ret = - _gnutls13_handshake_sign_data(session, &apr_cert_list[0], - apr_pkey, server ? (&srv_ctx) - : (&cli_ctx), &sig, se); + ret = _gnutls13_handshake_sign_data( + session, &apr_cert_list[0], apr_pkey, + server ? (&srv_ctx) : (&cli_ctx), &sig, se); if (ret < 0) return gnutls_assert_val(ret); @@ -238,9 +229,8 @@ int _gnutls13_send_certificate_verify(gnutls_session_t session, unsigned again) goto cleanup; } - ret = - _gnutls_buffer_append_data_prefix(&buf, 16, sig.data, - sig.size); + ret = _gnutls_buffer_append_data_prefix(&buf, 16, sig.data, + sig.size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -254,7 +244,7 @@ int _gnutls13_send_certificate_verify(gnutls_session_t session, unsigned again) return _gnutls_send_handshake(session, bufel, GNUTLS_HANDSHAKE_CERTIFICATE_VERIFY); - cleanup: +cleanup: gnutls_free(sig.data); _gnutls_buffer_clear(&buf); return ret; diff --git a/lib/tls13/certificate_verify.h b/lib/tls13/certificate_verify.h index ece2df3f77..9d4ce3135f 100644 --- a/lib/tls13/certificate_verify.h +++ b/lib/tls13/certificate_verify.h @@ -21,9 +21,9 @@ */ #ifndef GNUTLS_LIB_TLS13_CERTIFICATE_VERIFY_H -# define GNUTLS_LIB_TLS13_CERTIFICATE_VERIFY_H +#define GNUTLS_LIB_TLS13_CERTIFICATE_VERIFY_H int _gnutls13_recv_certificate_verify(gnutls_session_t session); int _gnutls13_send_certificate_verify(gnutls_session_t session, unsigned again); -#endif /* GNUTLS_LIB_TLS13_CERTIFICATE_VERIFY_H */ +#endif /* GNUTLS_LIB_TLS13_CERTIFICATE_VERIFY_H */ diff --git a/lib/tls13/early_data.c b/lib/tls13/early_data.c index 5dc74c325e..4be998825c 100644 --- a/lib/tls13/early_data.c +++ b/lib/tls13/early_data.c @@ -33,12 +33,10 @@ int _gnutls13_send_early_data(gnutls_session_t session) return 0; while (session->internals.early_data_presend_buffer.length > 0) { - ret = - gnutls_record_send(session, - session->internals. - early_data_presend_buffer.data, - session->internals. - early_data_presend_buffer.length); + ret = gnutls_record_send( + session, + session->internals.early_data_presend_buffer.data, + session->internals.early_data_presend_buffer.length); if (ret < 0) return gnutls_assert_val(ret); @@ -85,10 +83,8 @@ int _gnutls13_recv_end_of_early_data(gnutls_session_t session) return 0; if (!(session->internals.flags & GNUTLS_NO_END_OF_EARLY_DATA)) { - ret = - _gnutls_recv_handshake(session, - GNUTLS_HANDSHAKE_END_OF_EARLY_DATA, - 0, &buf); + ret = _gnutls_recv_handshake( + session, GNUTLS_HANDSHAKE_END_OF_EARLY_DATA, 0, &buf); if (ret < 0) return gnutls_assert_val(ret); @@ -102,7 +98,7 @@ int _gnutls13_recv_end_of_early_data(gnutls_session_t session) session->internals.hsk_flags &= ~HSK_EARLY_DATA_IN_FLIGHT; ret = 0; - cleanup: +cleanup: _gnutls_buffer_clear(&buf); return ret; diff --git a/lib/tls13/early_data.h b/lib/tls13/early_data.h index 004365605f..6fef12c107 100644 --- a/lib/tls13/early_data.h +++ b/lib/tls13/early_data.h @@ -21,10 +21,10 @@ */ #ifndef GNUTLS_LIB_TLS13_EARLY_DATA_H -# define GNUTLS_LIB_TLS13_EARLY_DATA_H +#define GNUTLS_LIB_TLS13_EARLY_DATA_H int _gnutls13_send_end_of_early_data(gnutls_session_t session, unsigned again); int _gnutls13_recv_end_of_early_data(gnutls_session_t session); int _gnutls13_send_early_data(gnutls_session_t session); -#endif /* GNUTLS_LIB_TLS13_EARLY_DATA_H */ +#endif /* GNUTLS_LIB_TLS13_EARLY_DATA_H */ diff --git a/lib/tls13/encrypted_extensions.c b/lib/tls13/encrypted_extensions.c index 9821913fad..651f789123 100644 --- a/lib/tls13/encrypted_extensions.c +++ b/lib/tls13/encrypted_extensions.c @@ -32,19 +32,16 @@ int _gnutls13_recv_encrypted_extensions(gnutls_session_t session) int ret; gnutls_buffer_st buf; - ret = - _gnutls_recv_handshake(session, - GNUTLS_HANDSHAKE_ENCRYPTED_EXTENSIONS, 0, - &buf); + ret = _gnutls_recv_handshake( + session, GNUTLS_HANDSHAKE_ENCRYPTED_EXTENSIONS, 0, &buf); if (ret < 0) return gnutls_assert_val(ret); _gnutls_handshake_log("HSK[%p]: parsing encrypted extensions\n", session); - ret = - _gnutls_parse_hello_extensions(session, GNUTLS_EXT_FLAG_EE, - GNUTLS_EXT_ANY, buf.data, - buf.length); + ret = _gnutls_parse_hello_extensions(session, GNUTLS_EXT_FLAG_EE, + GNUTLS_EXT_ANY, buf.data, + buf.length); _gnutls_buffer_clear(&buf); if (ret < 0) @@ -65,10 +62,8 @@ int _gnutls13_send_encrypted_extensions(gnutls_session_t session, if (ret < 0) return gnutls_assert_val(ret); - ret = - _gnutls_gen_hello_extensions(session, &buf, - GNUTLS_EXT_FLAG_EE, - GNUTLS_EXT_ANY); + ret = _gnutls_gen_hello_extensions( + session, &buf, GNUTLS_EXT_FLAG_EE, GNUTLS_EXT_ANY); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -80,7 +75,7 @@ int _gnutls13_send_encrypted_extensions(gnutls_session_t session, return _gnutls_send_handshake(session, bufel, GNUTLS_HANDSHAKE_ENCRYPTED_EXTENSIONS); - cleanup: +cleanup: _gnutls_buffer_clear(&buf); return ret; } diff --git a/lib/tls13/encrypted_extensions.h b/lib/tls13/encrypted_extensions.h index 83b77672ca..8b0e6d5a88 100644 --- a/lib/tls13/encrypted_extensions.h +++ b/lib/tls13/encrypted_extensions.h @@ -21,10 +21,10 @@ */ #ifndef GNUTLS_LIB_TLS13_ENCRYPTED_EXTENSIONS_H -# define GNUTLS_LIB_TLS13_ENCRYPTED_EXTENSIONS_H +#define GNUTLS_LIB_TLS13_ENCRYPTED_EXTENSIONS_H int _gnutls13_recv_encrypted_extensions(gnutls_session_t session); int _gnutls13_send_encrypted_extensions(gnutls_session_t session, unsigned again); -#endif /* GNUTLS_LIB_TLS13_ENCRYPTED_EXTENSIONS_H */ +#endif /* GNUTLS_LIB_TLS13_ENCRYPTED_EXTENSIONS_H */ diff --git a/lib/tls13/finished.c b/lib/tls13/finished.c index e447e9e50e..91e940702d 100644 --- a/lib/tls13/finished.c +++ b/lib/tls13/finished.c @@ -28,30 +28,26 @@ #include "mbuffers.h" #include "secrets.h" -int _gnutls13_compute_finished(const mac_entry_st * prf, - const uint8_t * base_key, - gnutls_buffer_st * handshake_hash_buffer, +int _gnutls13_compute_finished(const mac_entry_st *prf, const uint8_t *base_key, + gnutls_buffer_st *handshake_hash_buffer, void *out) { int ret; uint8_t fkey[MAX_HASH_SIZE]; uint8_t ts_hash[MAX_HASH_SIZE]; - ret = _tls13_expand_secret2(prf, - "finished", 8, - NULL, 0, base_key, prf->output_size, fkey); + ret = _tls13_expand_secret2(prf, "finished", 8, NULL, 0, base_key, + prf->output_size, fkey); if (ret < 0) return gnutls_assert_val(ret); - ret = gnutls_hash_fast(MAC_TO_DIG(prf->id), - handshake_hash_buffer->data, + ret = gnutls_hash_fast(MAC_TO_DIG(prf->id), handshake_hash_buffer->data, handshake_hash_buffer->length, ts_hash); if (ret < 0) return gnutls_assert_val(ret); - ret = gnutls_hmac_fast(prf->id, - fkey, prf->output_size, - ts_hash, prf->output_size, out); + ret = gnutls_hmac_fast(prf->id, fkey, prf->output_size, ts_hash, + prf->output_size, out); if (ret < 0) return gnutls_assert_val(ret); @@ -83,18 +79,16 @@ int _gnutls13_recv_finished(gnutls_session_t session) base_key = session->key.proto.tls13.ap_ckey; } - ret = _gnutls13_compute_finished(session->security_parameters.prf, - base_key, - &session-> - internals.handshake_hash_buffer, - verifier); + ret = _gnutls13_compute_finished( + session->security_parameters.prf, base_key, + &session->internals.handshake_hash_buffer, verifier); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _gnutls_recv_handshake(session, GNUTLS_HANDSHAKE_FINISHED, 0, &buf); + ret = _gnutls_recv_handshake(session, GNUTLS_HANDSHAKE_FINISHED, 0, + &buf); if (ret < 0) return gnutls_assert_val(ret); @@ -106,7 +100,7 @@ int _gnutls13_recv_finished(gnutls_session_t session) goto cleanup; } #if defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION) -# warning This is unsafe for production builds +#warning This is unsafe for production builds #else if (gnutls_memcmp(verifier, buf.data, buf.length) != 0) { gnutls_assert(); @@ -116,7 +110,7 @@ int _gnutls13_recv_finished(gnutls_session_t session) #endif ret = 0; - cleanup: +cleanup: _gnutls_buffer_clear(&buf); return ret; @@ -150,12 +144,9 @@ int _gnutls13_send_finished(gnutls_session_t session, unsigned again) base_key = session->key.proto.tls13.ap_skey; } - ret = - _gnutls13_compute_finished(session->security_parameters.prf, - base_key, - &session-> - internals.handshake_hash_buffer, - verifier); + ret = _gnutls13_compute_finished( + session->security_parameters.prf, base_key, + &session->internals.handshake_hash_buffer, verifier); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -178,7 +169,7 @@ int _gnutls13_send_finished(gnutls_session_t session, unsigned again) return _gnutls_send_handshake(session, bufel, GNUTLS_HANDSHAKE_FINISHED); - cleanup: +cleanup: _mbuffer_xfree(&bufel); return ret; } diff --git a/lib/tls13/finished.h b/lib/tls13/finished.h index 3628d163e2..94a015f6f3 100644 --- a/lib/tls13/finished.h +++ b/lib/tls13/finished.h @@ -21,13 +21,12 @@ */ #ifndef GNUTLS_LIB_TLS13_FINISHED_H -# define GNUTLS_LIB_TLS13_FINISHED_H +#define GNUTLS_LIB_TLS13_FINISHED_H -int _gnutls13_compute_finished(const mac_entry_st * prf, - const uint8_t * base_key, - gnutls_buffer_st * handshake_hash_buffer, +int _gnutls13_compute_finished(const mac_entry_st *prf, const uint8_t *base_key, + gnutls_buffer_st *handshake_hash_buffer, void *out); int _gnutls13_recv_finished(gnutls_session_t session); int _gnutls13_send_finished(gnutls_session_t session, unsigned again); -#endif /* GNUTLS_LIB_TLS13_FINISHED_H */ +#endif /* GNUTLS_LIB_TLS13_FINISHED_H */ diff --git a/lib/tls13/hello_retry.c b/lib/tls13/hello_retry.c index 00a0360aff..b4b91c84fa 100644 --- a/lib/tls13/hello_retry.c +++ b/lib/tls13/hello_retry.c @@ -39,8 +39,8 @@ int _gnutls13_send_hello_retry_request(gnutls_session_t session, unsigned again) if (again == 0) { ver = get_version(session); - if (unlikely - (ver == NULL || session->security_parameters.cs == NULL)) + if (unlikely(ver == NULL || + session->security_parameters.cs == NULL)) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); ret = _gnutls_buffer_init_handshake_mbuffer(&buf); @@ -51,26 +51,23 @@ int _gnutls13_send_hello_retry_request(gnutls_session_t session, unsigned again) if (ret < 0) return gnutls_assert_val(ret); - ret = _gnutls_buffer_append_data(&buf, - HRR_RANDOM, + ret = _gnutls_buffer_append_data(&buf, HRR_RANDOM, GNUTLS_RANDOM_SIZE); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = _gnutls_buffer_append_data_prefix(&buf, 8, - session->security_parameters.session_id, - session->security_parameters.session_id_size); + ret = _gnutls_buffer_append_data_prefix( + &buf, 8, session->security_parameters.session_id, + session->security_parameters.session_id_size); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _gnutls_buffer_append_data(&buf, - session->security_parameters. - cs->id, 2); + ret = _gnutls_buffer_append_data( + &buf, session->security_parameters.cs->id, 2); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -83,9 +80,8 @@ int _gnutls13_send_hello_retry_request(gnutls_session_t session, unsigned again) goto cleanup; } - ret = _gnutls_gen_hello_extensions(session, &buf, - GNUTLS_EXT_FLAG_HRR, - GNUTLS_EXT_ANY); + ret = _gnutls_gen_hello_extensions( + session, &buf, GNUTLS_EXT_FLAG_HRR, GNUTLS_EXT_ANY); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -102,14 +98,13 @@ int _gnutls13_send_hello_retry_request(gnutls_session_t session, unsigned again) return _gnutls_send_handshake(session, bufel, GNUTLS_HANDSHAKE_HELLO_RETRY_REQUEST); - cleanup: +cleanup: _gnutls_buffer_clear(&buf); return ret; } -int -_gnutls13_recv_hello_retry_request(gnutls_session_t session, - gnutls_buffer_st * buf) +int _gnutls13_recv_hello_retry_request(gnutls_session_t session, + gnutls_buffer_st *buf) { int ret; uint8_t tmp[2]; @@ -182,18 +177,16 @@ _gnutls13_recv_hello_retry_request(gnutls_session_t session, } /* figure version first */ - ret = - _gnutls_parse_hello_extensions(session, GNUTLS_EXT_FLAG_HRR, - GNUTLS_EXT_VERSION_NEG, - buf->data, buf->length); + ret = _gnutls_parse_hello_extensions(session, GNUTLS_EXT_FLAG_HRR, + GNUTLS_EXT_VERSION_NEG, buf->data, + buf->length); if (ret < 0) return gnutls_assert_val(ret); /* parse the rest of extensions */ - ret = - _gnutls_parse_hello_extensions(session, GNUTLS_EXT_FLAG_HRR, - GNUTLS_EXT_ANY, buf->data, - buf->length); + ret = _gnutls_parse_hello_extensions(session, GNUTLS_EXT_FLAG_HRR, + GNUTLS_EXT_ANY, buf->data, + buf->length); if (ret < 0) return gnutls_assert_val(ret); diff --git a/lib/tls13/hello_retry.h b/lib/tls13/hello_retry.h index 95f0400358..aec3fe5271 100644 --- a/lib/tls13/hello_retry.h +++ b/lib/tls13/hello_retry.h @@ -21,9 +21,9 @@ */ #ifndef GNUTLS_LIB_TLS13_HELLO_RETRY_H -# define GNUTLS_LIB_TLS13_HELLO_RETRY_H +#define GNUTLS_LIB_TLS13_HELLO_RETRY_H int _gnutls13_send_hello_retry_request(gnutls_session_t session, unsigned again); -#endif /* GNUTLS_LIB_TLS13_HELLO_RETRY_H */ +#endif /* GNUTLS_LIB_TLS13_HELLO_RETRY_H */ diff --git a/lib/tls13/key_update.c b/lib/tls13/key_update.c index 7a1641e880..41243651b5 100644 --- a/lib/tls13/key_update.c +++ b/lib/tls13/key_update.c @@ -44,8 +44,9 @@ static inline int set_ktls_keys(gnutls_session_t session, session->internals.ktls_enabled = 0; session->internals.invalid_connection = true; session->internals.resumable = false; - _gnutls_audit_log(session, - "invalidating session: KTLS - couldn't update keys\n"); + _gnutls_audit_log( + session, + "invalidating session: KTLS - couldn't update keys\n"); return GNUTLS_E_INTERNAL_ERROR; } return 0; @@ -55,9 +56,9 @@ static int update_keys(gnutls_session_t session, hs_stage_t stage) { int ret; - ret = - _tls13_update_secret(session, session->key.proto.tls13.temp_secret, - session->key.proto.tls13.temp_secret_size); + ret = _tls13_update_secret(session, + session->key.proto.tls13.temp_secret, + session->key.proto.tls13.temp_secret_size); if (ret < 0) return gnutls_assert_val(ret); @@ -80,11 +81,11 @@ static int update_keys(gnutls_session_t session, hs_stage_t stage) if (ret < 0) return gnutls_assert_val(ret); - if (IS_KTLS_ENABLED(session, GNUTLS_KTLS_SEND) - && stage == STAGE_UPD_OURS) + if (IS_KTLS_ENABLED(session, GNUTLS_KTLS_SEND) && + stage == STAGE_UPD_OURS) ret = set_ktls_keys(session, GNUTLS_KTLS_SEND); - else if (IS_KTLS_ENABLED(session, GNUTLS_KTLS_RECV) - && stage == STAGE_UPD_PEERS) + else if (IS_KTLS_ENABLED(session, GNUTLS_KTLS_RECV) && + stage == STAGE_UPD_PEERS) ret = set_ktls_keys(session, GNUTLS_KTLS_RECV); } if (ret < 0) @@ -93,7 +94,7 @@ static int update_keys(gnutls_session_t session, hs_stage_t stage) return 0; } -int _gnutls13_recv_key_update(gnutls_session_t session, gnutls_buffer_st * buf) +int _gnutls13_recv_key_update(gnutls_session_t session, gnutls_buffer_st *buf) { int ret; struct timespec now; @@ -106,16 +107,16 @@ int _gnutls13_recv_key_update(gnutls_session_t session, gnutls_buffer_st * buf) /* Roll over the counter if the time window has elapsed */ if (session->internals.key_update_count == 0 || timespec_sub_ms(&now, &session->internals.last_key_update) > - KEY_UPDATES_WINDOW) { + KEY_UPDATES_WINDOW) { session->internals.last_key_update = now; session->internals.key_update_count = 0; } if (unlikely(++session->internals.key_update_count > KEY_UPDATES_PER_WINDOW)) { - _gnutls_debug_log - ("reached maximum number of key updates per %d milliseconds (%d)\n", - KEY_UPDATES_WINDOW, KEY_UPDATES_PER_WINDOW); + _gnutls_debug_log( + "reached maximum number of key updates per %d milliseconds (%d)\n", + KEY_UPDATES_WINDOW, KEY_UPDATES_PER_WINDOW); return gnutls_assert_val(GNUTLS_E_TOO_MANY_HANDSHAKE_PACKETS); } @@ -150,10 +151,10 @@ int _gnutls13_recv_key_update(gnutls_session_t session, gnutls_buffer_st * buf) */ if (session->internals.rsend_state == RECORD_SEND_NORMAL) session->internals.rsend_state = - RECORD_SEND_KEY_UPDATE_1; + RECORD_SEND_KEY_UPDATE_1; else if (session->internals.rsend_state == RECORD_SEND_CORKED) session->internals.rsend_state = - RECORD_SEND_CORKED_TO_KU; + RECORD_SEND_CORKED_TO_KU; break; default: @@ -166,7 +167,7 @@ int _gnutls13_recv_key_update(gnutls_session_t session, gnutls_buffer_st * buf) } int _gnutls13_send_key_update(gnutls_session_t session, unsigned again, - unsigned flags /* GNUTLS_KU_* */ ) + unsigned flags /* GNUTLS_KU_* */) { int ret; mbuffer_st *bufel = NULL; @@ -195,13 +196,12 @@ int _gnutls13_send_key_update(gnutls_session_t session, unsigned again, gnutls_assert(); goto cleanup; } - } return _gnutls_send_handshake(session, bufel, GNUTLS_HANDSHAKE_KEY_UPDATE); - cleanup: +cleanup: _mbuffer_xfree(&bufel); return ret; } diff --git a/lib/tls13/key_update.h b/lib/tls13/key_update.h index ad29c34b89..326af381bc 100644 --- a/lib/tls13/key_update.h +++ b/lib/tls13/key_update.h @@ -21,10 +21,10 @@ */ #ifndef GNUTLS_LIB_TLS13_KEY_UPDATE_H -# define GNUTLS_LIB_TLS13_KEY_UPDATE_H +#define GNUTLS_LIB_TLS13_KEY_UPDATE_H -int _gnutls13_recv_key_update(gnutls_session_t session, gnutls_buffer_st * buf); +int _gnutls13_recv_key_update(gnutls_session_t session, gnutls_buffer_st *buf); int _gnutls13_send_key_update(gnutls_session_t session, unsigned again, unsigned flags); -#endif /* GNUTLS_LIB_TLS13_KEY_UPDATE_H */ +#endif /* GNUTLS_LIB_TLS13_KEY_UPDATE_H */ diff --git a/lib/tls13/post_handshake.c b/lib/tls13/post_handshake.c index fa42b2c126..fa7768e6f8 100644 --- a/lib/tls13/post_handshake.c +++ b/lib/tls13/post_handshake.c @@ -52,14 +52,13 @@ #include "tls13/finished.h" #undef AGAIN -#define AGAIN(x) ((x)==(REAUTH_STATE)) +#define AGAIN(x) ((x) == (REAUTH_STATE)) /* * _gnutls13_reauth_client * This function performs the client side of the post-handshake authentication */ -static -int _gnutls13_reauth_client(gnutls_session_t session) +static int _gnutls13_reauth_client(gnutls_session_t session) { int ret = 0; size_t tmp; @@ -78,44 +77,35 @@ int _gnutls13_reauth_client(gnutls_session_t session) /* restore handshake transcript */ _gnutls_buffer_reset(&session->internals.handshake_hash_buffer); - ret = - gnutls_buffer_append_data(&session-> - internals.handshake_hash_buffer, - session-> - internals.post_handshake_hash_buffer. - data, - session-> - internals.post_handshake_hash_buffer.length); + ret = gnutls_buffer_append_data( + &session->internals.handshake_hash_buffer, + session->internals.post_handshake_hash_buffer.data, + session->internals.post_handshake_hash_buffer.length); if (ret < 0) return gnutls_assert_val(ret); /* append the previously received certificate request message, to the * transcript. */ - ret = - gnutls_buffer_append_data(&session-> - internals.handshake_hash_buffer, - session->internals. - reauth_buffer.data, - session->internals. - reauth_buffer.length); + ret = gnutls_buffer_append_data( + &session->internals.handshake_hash_buffer, + session->internals.reauth_buffer.data, + session->internals.reauth_buffer.length); if (ret < 0) return gnutls_assert_val(ret); session->internals.handshake_hash_buffer_prev_len = - session->internals.handshake_hash_buffer.length; + session->internals.handshake_hash_buffer.length; /* skip the reauth buffer handshake message headers */ - ret = - _gnutls_buffer_pop_prefix32(&session-> - internals.reauth_buffer, &tmp, - 0); + ret = _gnutls_buffer_pop_prefix32( + &session->internals.reauth_buffer, &tmp, 0); if (ret < 0) return gnutls_assert_val(ret); FALLTHROUGH; case REAUTH_STATE1: - ret = _gnutls13_recv_certificate_request_int(session, - &session->internals.reauth_buffer); + ret = _gnutls13_recv_certificate_request_int( + session, &session->internals.reauth_buffer); REAUTH_STATE = REAUTH_STATE1; IMED_RET("recv certificate request", ret, 0); FALLTHROUGH; @@ -125,9 +115,8 @@ int _gnutls13_reauth_client(gnutls_session_t session) IMED_RET("send certificate", ret, 0); FALLTHROUGH; case REAUTH_STATE3: - ret = - _gnutls13_send_certificate_verify(session, - AGAIN(REAUTH_STATE3)); + ret = _gnutls13_send_certificate_verify(session, + AGAIN(REAUTH_STATE3)); REAUTH_STATE = REAUTH_STATE3; IMED_RET("send certificate verify", ret, 0); FALLTHROUGH; @@ -151,8 +140,7 @@ int _gnutls13_reauth_client(gnutls_session_t session) * _gnutls13_reauth_server * This function does the server stuff of the post-handshake authentication. */ -static -int _gnutls13_reauth_server(gnutls_session_t session) +static int _gnutls13_reauth_server(gnutls_session_t session) { int ret = 0; @@ -161,8 +149,8 @@ int _gnutls13_reauth_server(gnutls_session_t session) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); if (session->internals.send_cert_req == 0) { - _gnutls_debug_log - ("You need to call gnutls_certificate_server_set_request to enable post handshake auth\n"); + _gnutls_debug_log( + "You need to call gnutls_certificate_server_set_request to enable post handshake auth\n"); return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); } @@ -170,25 +158,20 @@ int _gnutls13_reauth_server(gnutls_session_t session) case REAUTH_STATE0: /* restore handshake transcript */ _gnutls_buffer_reset(&session->internals.handshake_hash_buffer); - ret = - gnutls_buffer_append_data(&session-> - internals.handshake_hash_buffer, - session-> - internals.post_handshake_hash_buffer. - data, - session-> - internals.post_handshake_hash_buffer.length); + ret = gnutls_buffer_append_data( + &session->internals.handshake_hash_buffer, + session->internals.post_handshake_hash_buffer.data, + session->internals.post_handshake_hash_buffer.length); if (ret < 0) return gnutls_assert_val(ret); session->internals.handshake_hash_buffer_prev_len = - session->internals.handshake_hash_buffer.length; + session->internals.handshake_hash_buffer.length; FALLTHROUGH; case REAUTH_STATE1: - ret = - _gnutls13_send_certificate_request(session, - AGAIN(REAUTH_STATE1)); + ret = _gnutls13_send_certificate_request(session, + AGAIN(REAUTH_STATE1)); REAUTH_STATE = REAUTH_STATE1; IMED_RET("send certificate request", ret, 0); FALLTHROUGH; diff --git a/lib/tls13/psk_ext_parser.c b/lib/tls13/psk_ext_parser.c index 68ac0ea50b..4f6682b905 100644 --- a/lib/tls13/psk_ext_parser.c +++ b/lib/tls13/psk_ext_parser.c @@ -27,7 +27,7 @@ /* Returns GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE when no identities * are present, or 0, on success. */ -int _gnutls13_psk_ext_parser_init(psk_ext_parser_st * p, +int _gnutls13_psk_ext_parser_init(psk_ext_parser_st *p, const unsigned char *data, size_t len) { if (!p || !data || !len) @@ -62,7 +62,7 @@ int _gnutls13_psk_ext_parser_init(psk_ext_parser_st * p, * Returns GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE when no more identities * are present, or 0, on success. */ -int _gnutls13_psk_ext_iter_next_identity(psk_ext_iter_st * iter, +int _gnutls13_psk_ext_iter_next_identity(psk_ext_iter_st *iter, struct psk_st *psk) { if (iter->identities_len == 0) @@ -91,8 +91,8 @@ int _gnutls13_psk_ext_iter_next_identity(psk_ext_iter_st * iter, * Returns GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE when no more identities * are present, or 0, on success. */ -int _gnutls13_psk_ext_iter_next_binder(psk_ext_iter_st * iter, - gnutls_datum_t * binder) +int _gnutls13_psk_ext_iter_next_binder(psk_ext_iter_st *iter, + gnutls_datum_t *binder) { if (iter->binders_len == 0) return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; @@ -103,7 +103,7 @@ int _gnutls13_psk_ext_iter_next_binder(psk_ext_iter_st * iter, return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER); iter->binders_data++; - binder->data = (uint8_t *) iter->binders_data; + binder->data = (uint8_t *)iter->binders_data; DECR_LEN(iter->binders_len, binder->size); iter->binders_data += binder->size; diff --git a/lib/tls13/psk_ext_parser.h b/lib/tls13/psk_ext_parser.h index 65c617f43d..1a37757117 100644 --- a/lib/tls13/psk_ext_parser.h +++ b/lib/tls13/psk_ext_parser.h @@ -21,7 +21,7 @@ */ #ifndef GNUTLS_LIB_TLS13_PSK_EXT_PARSER_H -# define GNUTLS_LIB_TLS13_PSK_EXT_PARSER_H +#define GNUTLS_LIB_TLS13_PSK_EXT_PARSER_H struct psk_ext_parser_st { const unsigned char *identities_data; @@ -40,19 +40,18 @@ struct psk_st { uint32_t ob_ticket_age; }; -int _gnutls13_psk_ext_parser_init(psk_ext_parser_st * p, +int _gnutls13_psk_ext_parser_init(psk_ext_parser_st *p, const unsigned char *data, size_t len); -inline static -void _gnutls13_psk_ext_iter_init(psk_ext_iter_st * iter, - const psk_ext_parser_st * p) +inline static void _gnutls13_psk_ext_iter_init(psk_ext_iter_st *iter, + const psk_ext_parser_st *p) { memcpy(iter, p, sizeof(*p)); } -int _gnutls13_psk_ext_iter_next_identity(psk_ext_iter_st * iter, +int _gnutls13_psk_ext_iter_next_identity(psk_ext_iter_st *iter, struct psk_st *psk); -int _gnutls13_psk_ext_iter_next_binder(psk_ext_iter_st * iter, - gnutls_datum_t * binder); +int _gnutls13_psk_ext_iter_next_binder(psk_ext_iter_st *iter, + gnutls_datum_t *binder); -#endif /* GNUTLS_LIB_TLS13_PSK_EXT_PARSER_H */ +#endif /* GNUTLS_LIB_TLS13_PSK_EXT_PARSER_H */ diff --git a/lib/tls13/session_ticket.c b/lib/tls13/session_ticket.c index 546f90257a..b60822056f 100644 --- a/lib/tls13/session_ticket.c +++ b/lib/tls13/session_ticket.c @@ -33,9 +33,8 @@ #include "session_pack.h" #include "db.h" -static int -pack_ticket(gnutls_session_t session, tls13_ticket_st * ticket, - gnutls_datum_t * packed) +static int pack_ticket(gnutls_session_t session, tls13_ticket_st *ticket, + gnutls_datum_t *packed) { uint8_t *p; gnutls_datum_t state; @@ -45,9 +44,8 @@ pack_ticket(gnutls_session_t session, tls13_ticket_st * ticket, if (ret < 0) return gnutls_assert_val(ret); - packed->size = 2 + 4 + 4 + - 1 + ticket->prf->output_size + - 1 + ticket->nonce_size + 2 + state.size + 12; + packed->size = 2 + 4 + 4 + 1 + ticket->prf->output_size + 1 + + ticket->nonce_size + 2 + state.size + 12; packed->data = gnutls_malloc(packed->size); if (!packed->data) { @@ -80,7 +78,7 @@ pack_ticket(gnutls_session_t session, tls13_ticket_st * ticket, memcpy(p, state.data, state.size); p += state.size; - _gnutls_write_uint32((uint64_t) ticket->creation_time.tv_sec >> 32, p); + _gnutls_write_uint32((uint64_t)ticket->creation_time.tv_sec >> 32, p); p += 4; _gnutls_write_uint32(ticket->creation_time.tv_sec & 0xFFFFFFFF, p); p += 4; @@ -88,14 +86,13 @@ pack_ticket(gnutls_session_t session, tls13_ticket_st * ticket, ret = 0; - cleanup: +cleanup: gnutls_free(state.data); return ret; } -static int -unpack_ticket(gnutls_session_t session, gnutls_datum_t * packed, - tls13_ticket_st * data) +static int unpack_ticket(gnutls_session_t session, gnutls_datum_t *packed, + tls13_ticket_st *data) { uint32_t age_add, lifetime; struct timespec creation_time; @@ -194,8 +191,8 @@ unpack_ticket(gnutls_session_t session, gnutls_datum_t * packed, return 0; } -static int -generate_session_ticket(gnutls_session_t session, tls13_ticket_st * ticket) +static int generate_session_ticket(gnutls_session_t session, + tls13_ticket_st *ticket) { int ret; gnutls_datum_t packed = { NULL, 0 }; @@ -206,14 +203,13 @@ generate_session_ticket(gnutls_session_t session, tls13_ticket_st * ticket) if (session->internals.resumed) { /* If we are resuming ensure that we don't extend the lifetime * of the ticket past the original session expiration time */ - if (now.tv_sec >= - session->security_parameters.timestamp + - session->internals.expire_time) - return GNUTLS_E_INT_RET_0; /* don't send ticket */ + if (now.tv_sec >= session->security_parameters.timestamp + + session->internals.expire_time) + return GNUTLS_E_INT_RET_0; /* don't send ticket */ else ticket->lifetime = - session->security_parameters.timestamp + - session->internals.expire_time - now.tv_sec; + session->security_parameters.timestamp + + session->internals.expire_time - now.tv_sec; } else { /* Set ticket lifetime to the default expiration time */ ticket->lifetime = session->internals.expire_time; @@ -222,15 +218,14 @@ generate_session_ticket(gnutls_session_t session, tls13_ticket_st * ticket) /* Generate a random 32-bit ticket nonce */ ticket->nonce_size = 4; - if ((ret = gnutls_rnd(GNUTLS_RND_NONCE, - ticket->nonce, ticket->nonce_size)) < 0) + if ((ret = gnutls_rnd(GNUTLS_RND_NONCE, ticket->nonce, + ticket->nonce_size)) < 0) return gnutls_assert_val(ret); - if ((ret = - gnutls_rnd(GNUTLS_RND_NONCE, &ticket->age_add, - sizeof(uint32_t))) < 0) + if ((ret = gnutls_rnd(GNUTLS_RND_NONCE, &ticket->age_add, + sizeof(uint32_t))) < 0) return gnutls_assert_val(ret); - /* This is merely to produce the same binder value on + /* This is merely to produce the same binder value on * different endian architectures. */ #ifdef WORDS_BIGENDIAN ticket->age_add = bswap_32(ticket->age_add); @@ -260,7 +255,7 @@ generate_session_ticket(gnutls_session_t session, tls13_ticket_st * ticket) return 0; } -static int append_nst_extension(void *ctx, gnutls_buffer_st * buf) +static int append_nst_extension(void *ctx, gnutls_buffer_st *buf) { gnutls_session_t session = ctx; int ret; @@ -268,9 +263,8 @@ static int append_nst_extension(void *ctx, gnutls_buffer_st * buf) if (!(session->internals.flags & GNUTLS_ENABLE_EARLY_DATA)) return 0; - ret = _gnutls_buffer_append_prefix(buf, 32, - session->security_parameters. - max_early_data_size); + ret = _gnutls_buffer_append_prefix( + buf, 32, session->security_parameters.max_early_data_size); if (ret < 0) gnutls_assert(); @@ -321,39 +315,32 @@ int _gnutls13_send_session_ticket(gnutls_session_t session, unsigned nr, goto cleanup; } - ret = - _gnutls_buffer_append_prefix(&buf, 32, - ticket.lifetime); + ret = _gnutls_buffer_append_prefix(&buf, 32, + ticket.lifetime); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _gnutls_buffer_append_prefix(&buf, 32, - ticket.age_add); + ret = _gnutls_buffer_append_prefix(&buf, 32, + ticket.age_add); if (ret < 0) { gnutls_assert(); goto cleanup; } /* append ticket_nonce */ - ret = - _gnutls_buffer_append_data_prefix(&buf, 8, - ticket.nonce, - ticket.nonce_size); + ret = _gnutls_buffer_append_data_prefix( + &buf, 8, ticket.nonce, ticket.nonce_size); if (ret < 0) { gnutls_assert(); goto cleanup; } /* append ticket */ - ret = - _gnutls_buffer_append_data_prefix(&buf, 16, - ticket. - ticket.data, - ticket. - ticket.size); + ret = _gnutls_buffer_append_data_prefix( + &buf, 16, ticket.ticket.data, + ticket.ticket.size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -369,10 +356,9 @@ int _gnutls13_send_session_ticket(gnutls_session_t session, unsigned nr, } init_pos = ret; - ret = - _gnutls_extv_append(&buf, ext_mod_early_data.tls_id, - session, (extv_append_func) - append_nst_extension); + ret = _gnutls_extv_append( + &buf, ext_mod_early_data.tls_id, session, + (extv_append_func)append_nst_extension); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -386,9 +372,9 @@ int _gnutls13_send_session_ticket(gnutls_session_t session, unsigned nr, bufel = _gnutls_buffer_to_mbuffer(&buf); - ret = _gnutls_send_handshake2(session, bufel, - GNUTLS_HANDSHAKE_NEW_SESSION_TICKET, - 1); + ret = _gnutls_send_handshake2( + session, bufel, + GNUTLS_HANDSHAKE_NEW_SESSION_TICKET, 1); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -402,7 +388,7 @@ int _gnutls13_send_session_ticket(gnutls_session_t session, unsigned nr, return ret; - cleanup: +cleanup: _gnutls_free_datum(&ticket.ticket); _mbuffer_xfree(&bufel); _gnutls_buffer_clear(&buf); @@ -416,17 +402,16 @@ static int parse_nst_extension(void *ctx, unsigned tls_id, gnutls_session_t session = ctx; if (tls_id == ext_mod_early_data.tls_id) { if (data_size < 4) - return - gnutls_assert_val - (GNUTLS_E_TLS_PACKET_DECODING_ERROR); + return gnutls_assert_val( + GNUTLS_E_TLS_PACKET_DECODING_ERROR); session->security_parameters.max_early_data_size = - _gnutls_read_uint32(data); + _gnutls_read_uint32(data); } return 0; } int _gnutls13_recv_session_ticket(gnutls_session_t session, - gnutls_buffer_st * buf) + gnutls_buffer_st *buf) { int ret; uint8_t value; @@ -476,9 +461,8 @@ int _gnutls13_recv_session_ticket(gnutls_session_t session, return gnutls_assert_val(ret); /* Extensions */ - ret = - _gnutls_extv_parse(session, parse_nst_extension, buf->data, - buf->length); + ret = _gnutls_extv_parse(session, parse_nst_extension, buf->data, + buf->length); if (ret < 0) return gnutls_assert_val(ret); @@ -493,8 +477,8 @@ int _gnutls13_recv_session_ticket(gnutls_session_t session, * and the KDF ID associated to it. */ int _gnutls13_unpack_session_ticket(gnutls_session_t session, - gnutls_datum_t * data, - tls13_ticket_st * ticket_data) + gnutls_datum_t *data, + tls13_ticket_st *ticket_data) { int ret; gnutls_datum_t decrypted = { NULL, 0 }; diff --git a/lib/tls13/session_ticket.h b/lib/tls13/session_ticket.h index e28d77d7e7..1b14518b4e 100644 --- a/lib/tls13/session_ticket.h +++ b/lib/tls13/session_ticket.h @@ -21,25 +21,24 @@ */ #ifndef GNUTLS_LIB_TLS13_SESSION_TICKET_H -# define GNUTLS_LIB_TLS13_SESSION_TICKET_H +#define GNUTLS_LIB_TLS13_SESSION_TICKET_H int _gnutls13_recv_session_ticket(gnutls_session_t session, - gnutls_buffer_st * buf); + gnutls_buffer_st *buf); int _gnutls13_send_session_ticket(gnutls_session_t session, unsigned nr, unsigned again); static inline bool _gnutls13_can_send_session_ticket(gnutls_session_t session) { return session->key.stek_initialized && - !(session->internals.flags & GNUTLS_NO_TICKETS); + !(session->internals.flags & GNUTLS_NO_TICKETS); } int _gnutls13_unpack_session_ticket(gnutls_session_t session, - gnutls_datum_t * data, - tls13_ticket_st * ticket_data); + gnutls_datum_t *data, + tls13_ticket_st *ticket_data); -inline static -void tls13_ticket_deinit(tls13_ticket_st * ticket) +inline static void tls13_ticket_deinit(tls13_ticket_st *ticket) { zeroize_temp_key(&ticket->resumption_master_secret, sizeof(ticket->resumption_master_secret)); @@ -48,4 +47,4 @@ void tls13_ticket_deinit(tls13_ticket_st * ticket) memset(ticket, 0, sizeof(tls13_ticket_st)); } -#endif /* GNUTLS_LIB_TLS13_SESSION_TICKET_H */ +#endif /* GNUTLS_LIB_TLS13_SESSION_TICKET_H */ diff --git a/lib/tpm.c b/lib/tpm.c index 6b6c8d5a63..5b04c66d0a 100644 --- a/lib/tpm.c +++ b/lib/tpm.c @@ -36,66 +36,62 @@ #ifdef HAVE_TROUSERS -# include "errors.h" -# include -# include -# include -# include -# include -# include - -# include -# include -# include +#include "errors.h" +#include +#include +#include +#include +#include +#include + +#include +#include +#include typedef char *(*Trspi_Error_Layer_func)(TSS_RESULT); typedef char *(*Trspi_Error_String_func)(TSS_RESULT); -typedef TSS_RESULT(*Trspi_Error_Code_func) (TSS_RESULT); +typedef TSS_RESULT (*Trspi_Error_Code_func)(TSS_RESULT); -typedef TSS_RESULT(*Tspi_Context_CloseObject_func) (TSS_HCONTEXT, TSS_HOBJECT); -typedef TSS_RESULT(*Tspi_Context_Close_func) (TSS_HCONTEXT); -typedef TSS_RESULT(*Tspi_Context_CreateObject_func) (TSS_HCONTEXT, TSS_FLAG, +typedef TSS_RESULT (*Tspi_Context_CloseObject_func)(TSS_HCONTEXT, TSS_HOBJECT); +typedef TSS_RESULT (*Tspi_Context_Close_func)(TSS_HCONTEXT); +typedef TSS_RESULT (*Tspi_Context_CreateObject_func)(TSS_HCONTEXT, TSS_FLAG, TSS_FLAG, TSS_HOBJECT *); -typedef TSS_RESULT(*Tspi_Context_FreeMemory_func) (TSS_HCONTEXT, BYTE *); -typedef TSS_RESULT(*Tspi_Context_GetTpmObject_func) (TSS_HCONTEXT, TSS_HTPM *); -typedef TSS_RESULT(*Tspi_Context_LoadKeyByUUID_func) (TSS_HCONTEXT, TSS_FLAG, +typedef TSS_RESULT (*Tspi_Context_FreeMemory_func)(TSS_HCONTEXT, BYTE *); +typedef TSS_RESULT (*Tspi_Context_GetTpmObject_func)(TSS_HCONTEXT, TSS_HTPM *); +typedef TSS_RESULT (*Tspi_Context_LoadKeyByUUID_func)(TSS_HCONTEXT, TSS_FLAG, TSS_UUID, TSS_HKEY *); -typedef TSS_RESULT(*Tspi_Context_RegisterKey_func) (TSS_HCONTEXT, TSS_HKEY, +typedef TSS_RESULT (*Tspi_Context_RegisterKey_func)(TSS_HCONTEXT, TSS_HKEY, TSS_FLAG, TSS_UUID, TSS_FLAG, TSS_UUID); -typedef TSS_RESULT(*Tspi_Context_UnregisterKey_func) (TSS_HCONTEXT, TSS_FLAG, +typedef TSS_RESULT (*Tspi_Context_UnregisterKey_func)(TSS_HCONTEXT, TSS_FLAG, TSS_UUID, TSS_HKEY *); -typedef TSS_RESULT(*Tspi_Key_CreateKey_func) (TSS_HKEY, TSS_HKEY, TSS_HPCRS); -typedef TSS_RESULT(*Tspi_Hash_SetHashValue_func) (TSS_HHASH, UINT32, BYTE *); -typedef TSS_RESULT(*Tspi_Hash_Sign_func) (TSS_HHASH, TSS_HKEY, UINT32 *, +typedef TSS_RESULT (*Tspi_Key_CreateKey_func)(TSS_HKEY, TSS_HKEY, TSS_HPCRS); +typedef TSS_RESULT (*Tspi_Hash_SetHashValue_func)(TSS_HHASH, UINT32, BYTE *); +typedef TSS_RESULT (*Tspi_Hash_Sign_func)(TSS_HHASH, TSS_HKEY, UINT32 *, BYTE **); -typedef TSS_RESULT(*Tspi_Policy_SetSecret_func) (TSS_HPOLICY, TSS_FLAG, UINT32, +typedef TSS_RESULT (*Tspi_Policy_SetSecret_func)(TSS_HPOLICY, TSS_FLAG, UINT32, BYTE *); -typedef TSS_RESULT(*Tspi_Context_Create_func) (TSS_HCONTEXT *); -typedef TSS_RESULT(*Tspi_Context_Connect_func) (TSS_HCONTEXT, TSS_UNICODE *); -typedef TSS_RESULT(*Tspi_GetPolicyObject_func) (TSS_HOBJECT, TSS_FLAG, +typedef TSS_RESULT (*Tspi_Context_Create_func)(TSS_HCONTEXT *); +typedef TSS_RESULT (*Tspi_Context_Connect_func)(TSS_HCONTEXT, TSS_UNICODE *); +typedef TSS_RESULT (*Tspi_GetPolicyObject_func)(TSS_HOBJECT, TSS_FLAG, TSS_HPOLICY *); -typedef TSS_RESULT(*Tspi_DecodeBER_TssBlob_func) (UINT32, BYTE *, UINT32 *, +typedef TSS_RESULT (*Tspi_DecodeBER_TssBlob_func)(UINT32, BYTE *, UINT32 *, UINT32 *, BYTE *); -typedef TSS_RESULT(*Tspi_Context_LoadKeyByBlob_func) (TSS_HCONTEXT, TSS_HKEY, +typedef TSS_RESULT (*Tspi_Context_LoadKeyByBlob_func)(TSS_HCONTEXT, TSS_HKEY, UINT32, BYTE *, TSS_HKEY *); -typedef TSS_RESULT(*Tspi_Policy_AssignToObject_func) (TSS_HPOLICY, TSS_HOBJECT); -typedef TSS_RESULT(*Tspi_GetAttribData_func) (TSS_HOBJECT, TSS_FLAG, TSS_FLAG, +typedef TSS_RESULT (*Tspi_Policy_AssignToObject_func)(TSS_HPOLICY, TSS_HOBJECT); +typedef TSS_RESULT (*Tspi_GetAttribData_func)(TSS_HOBJECT, TSS_FLAG, TSS_FLAG, UINT32 *, BYTE **); -typedef TSS_RESULT(*Tspi_GetAttribUint32_func) (TSS_HOBJECT, TSS_FLAG, TSS_FLAG, +typedef TSS_RESULT (*Tspi_GetAttribUint32_func)(TSS_HOBJECT, TSS_FLAG, TSS_FLAG, UINT32 *); -typedef TSS_RESULT(*Tspi_TPM_StirRandom_func) (TSS_HTPM, UINT32, BYTE *); -typedef TSS_RESULT(*Tspi_SetAttribUint32_func) (TSS_HOBJECT, TSS_FLAG, TSS_FLAG, +typedef TSS_RESULT (*Tspi_TPM_StirRandom_func)(TSS_HTPM, UINT32, BYTE *); +typedef TSS_RESULT (*Tspi_SetAttribUint32_func)(TSS_HOBJECT, TSS_FLAG, TSS_FLAG, UINT32); -typedef TSS_RESULT(*Tspi_EncodeDER_TssBlob_func) (UINT32, BYTE *, UINT32, +typedef TSS_RESULT (*Tspi_EncodeDER_TssBlob_func)(UINT32, BYTE *, UINT32, UINT32 *, BYTE *); -typedef TSS_RESULT(*Tspi_Context_GetRegisteredKeysByUUID2_func) (TSS_HCONTEXT, - TSS_FLAG, - TSS_UUID *, - UINT32 *, - TSS_KM_KEYINFO2 - **); +typedef TSS_RESULT (*Tspi_Context_GetRegisteredKeysByUUID2_func)( + TSS_HCONTEXT, TSS_FLAG, TSS_UUID *, UINT32 *, TSS_KM_KEYINFO2 **); static Tspi_Context_CloseObject_func pTspi_Context_CloseObject; static Tspi_Context_Close_func pTspi_Context_Close; @@ -122,7 +118,7 @@ static Tspi_TPM_StirRandom_func pTspi_TPM_StirRandom; static Tspi_SetAttribUint32_func pTspi_SetAttribUint32; static Tspi_EncodeDER_TssBlob_func pTspi_EncodeDER_TssBlob; static Tspi_Context_GetRegisteredKeysByUUID2_func - pTspi_Context_GetRegisteredKeysByUUID2; + pTspi_Context_GetRegisteredKeysByUUID2; static Trspi_Error_Layer_func pTrspi_Error_Layer; static Trspi_Error_String_func pTrspi_Error_String; @@ -130,12 +126,12 @@ static Trspi_Error_Code_func pTrspi_Error_Code; static void *tpm_dl = NULL; -# define _DLSYM(dl, sym) \ +#define _DLSYM(dl, sym) \ p##sym = dlsym(dl, #sym); \ - if (p##sym == NULL) { \ - dlclose(dl); \ - dl = NULL; \ - return -1; \ + if (p##sym == NULL) { \ + dlclose(dl); \ + dl = NULL; \ + return -1; \ } static int check_init(void) @@ -181,11 +177,13 @@ static int check_init(void) return 0; } -# define CHECK_INIT \ - if (check_init() < 0) return gnutls_assert_val(GNUTLS_E_TPM_NO_LIB) +#define CHECK_INIT \ + if (check_init() < 0) \ + return gnutls_assert_val(GNUTLS_E_TPM_NO_LIB) -# define CHECK_INIT_VOID \ - if (check_init() < 0) return +#define CHECK_INIT_VOID \ + if (check_init() < 0) \ + return void _gnutls_tpm_global_deinit(void) { @@ -210,13 +208,11 @@ struct tpm_key_list_st { }; static void tpm_close_session(struct tpm_ctx_st *s); -static int import_tpm_key(gnutls_privkey_t pkey, - const gnutls_datum_t * fdata, - gnutls_tpmkey_fmt_t format, - TSS_UUID * uuid, - TSS_FLAG storage_type, - const char *srk_password, const char *key_password); -static int encode_tpmkey_url(char **url, const TSS_UUID * uuid, +static int import_tpm_key(gnutls_privkey_t pkey, const gnutls_datum_t *fdata, + gnutls_tpmkey_fmt_t format, TSS_UUID *uuid, + TSS_FLAG storage_type, const char *srk_password, + const char *key_password); +static int encode_tpmkey_url(char **url, const TSS_UUID *uuid, TSS_FLAG storage); /* TPM URL format: (draft-mavrogiannopoulos-tpmuri-01) @@ -229,8 +225,8 @@ static int encode_tpmkey_url(char **url, const TSS_UUID * uuid, static int tss_err_pwd(TSS_RESULT err, int pwd_error) { - _gnutls_debug_log("TPM (%s) error: %s (%x)\n", - pTrspi_Error_Layer(err), pTrspi_Error_String(err), + _gnutls_debug_log("TPM (%s) error: %s (%x)\n", pTrspi_Error_Layer(err), + pTrspi_Error_String(err), (unsigned int)pTrspi_Error_Code(err)); switch (ERROR_LAYER(err)) { @@ -261,8 +257,8 @@ static int tss_err_pwd(TSS_RESULT err, int pwd_error) } } -# define tss_err(x) tss_err_pwd(x, GNUTLS_E_TPM_SRK_PASSWORD_ERROR) -# define tss_err_key(x) tss_err_pwd(x, GNUTLS_E_TPM_KEY_PASSWORD_ERROR) +#define tss_err(x) tss_err_pwd(x, GNUTLS_E_TPM_SRK_PASSWORD_ERROR) +#define tss_err_key(x) tss_err_pwd(x, GNUTLS_E_TPM_KEY_PASSWORD_ERROR) static void tpm_deinit_fn(gnutls_privkey_t key, void *_s) { @@ -275,9 +271,8 @@ static void tpm_deinit_fn(gnutls_privkey_t key, void *_s) gnutls_free(s); } -static int -tpm_sign_fn(gnutls_privkey_t key, void *_s, - const gnutls_datum_t * data, gnutls_datum_t * sig) +static int tpm_sign_fn(gnutls_privkey_t key, void *_s, + const gnutls_datum_t *data, gnutls_datum_t *sig) { struct tpm_ctx_st *s = _s; TSS_HHASH hash; @@ -286,10 +281,8 @@ tpm_sign_fn(gnutls_privkey_t key, void *_s, _gnutls_debug_log("TPM sign function called for %u bytes.\n", data->size); - err = - pTspi_Context_CreateObject(s->tpm_ctx, - TSS_OBJECT_TYPE_HASH, TSS_HASH_OTHER, - &hash); + err = pTspi_Context_CreateObject(s->tpm_ctx, TSS_OBJECT_TYPE_HASH, + TSS_HASH_OTHER, &hash); if (err) { gnutls_assert(); _gnutls_debug_log("Failed to create TPM hash object: %s\n", @@ -299,9 +292,9 @@ tpm_sign_fn(gnutls_privkey_t key, void *_s, err = pTspi_Hash_SetHashValue(hash, data->size, data->data); if (err) { gnutls_assert(); - _gnutls_debug_log - ("Failed to set value in TPM hash object: %s\n", - pTrspi_Error_String(err)); + _gnutls_debug_log( + "Failed to set value in TPM hash object: %s\n", + pTrspi_Error_String(err)); pTspi_Context_CloseObject(s->tpm_ctx, hash); return GNUTLS_E_PK_SIGN_FAILED; } @@ -309,9 +302,8 @@ tpm_sign_fn(gnutls_privkey_t key, void *_s, pTspi_Context_CloseObject(s->tpm_ctx, hash); if (err) { if (s->tpm_key_policy || err != TPM_E_AUTHFAIL) - _gnutls_debug_log - ("TPM hash signature failed: %s\n", - pTrspi_Error_String(err)); + _gnutls_debug_log("TPM hash signature failed: %s\n", + pTrspi_Error_String(err)); if (err == TPM_E_AUTHFAIL) return GNUTLS_E_TPM_KEY_PASSWORD_ERROR; else @@ -325,7 +317,7 @@ static const gnutls_datum_t nulldata = { (void *)nullpass, 20 }; const TSS_UUID srk_uuid = TSS_UUID_SRK; -static int tpm_pin(struct pin_info_st *pin_info, const TSS_UUID * uuid, +static int tpm_pin(struct pin_info_st *pin_info, const TSS_UUID *uuid, TSS_FLAG storage, char *pin, unsigned int pin_size, unsigned int attempts) { @@ -361,30 +353,28 @@ static int tpm_pin(struct pin_info_st *pin_info, const TSS_UUID * uuid, } ret = 0; - cleanup: +cleanup: gnutls_free(url); return ret; } static TSS_RESULT myTspi_Policy_SetSecret(TSS_HPOLICY hPolicy, UINT32 ulSecretLength, - BYTE * rgbSecret) + BYTE *rgbSecret) { if (rgbSecret == NULL) { /* Well known NULL key */ - return pTspi_Policy_SetSecret(hPolicy, - TSS_SECRET_MODE_SHA1, + return pTspi_Policy_SetSecret(hPolicy, TSS_SECRET_MODE_SHA1, sizeof(nullpass), - (BYTE *) nullpass); - } else { /* key is given */ + (BYTE *)nullpass); + } else { /* key is given */ - return pTspi_Policy_SetSecret(hPolicy, - TSS_SECRET_MODE_PLAIN, + return pTspi_Policy_SetSecret(hPolicy, TSS_SECRET_MODE_PLAIN, ulSecretLength, rgbSecret); } } -# define SAFE_LEN(x) (x==NULL?0:strlen(x)) +#define SAFE_LEN(x) (x == NULL ? 0 : strlen(x)) static int tpm_open_session(struct tpm_ctx_st *s, const char *_srk_password, unsigned allow_invalid_pass) @@ -400,10 +390,10 @@ static int tpm_open_session(struct tpm_ctx_st *s, const char *_srk_password, if (_srk_password != NULL) { gnutls_datum_t pout; - ret = - _gnutls_utf8_password_normalize(_srk_password, - strlen(_srk_password), - &pout, allow_invalid_pass); + ret = _gnutls_utf8_password_normalize(_srk_password, + strlen(_srk_password), + &pout, + allow_invalid_pass); if (ret < 0) { gnutls_assert(); goto out_tspi_ctx; @@ -418,9 +408,8 @@ static int tpm_open_session(struct tpm_ctx_st *s, const char *_srk_password, goto out_tspi_ctx; } - err = - pTspi_Context_LoadKeyByUUID(s->tpm_ctx, TSS_PS_TYPE_SYSTEM, - srk_uuid, &s->srk); + err = pTspi_Context_LoadKeyByUUID(s->tpm_ctx, TSS_PS_TYPE_SYSTEM, + srk_uuid, &s->srk); if (err) { gnutls_assert(); ret = tss_err(err); @@ -434,8 +423,8 @@ static int tpm_open_session(struct tpm_ctx_st *s, const char *_srk_password, goto out_srk; } - err = myTspi_Policy_SetSecret(s->srk_policy, - SAFE_LEN(password), (BYTE *) password); + err = myTspi_Policy_SetSecret(s->srk_policy, SAFE_LEN(password), + (BYTE *)password); if (err) { gnutls_assert(); ret = tss_err(err); @@ -445,18 +434,17 @@ static int tpm_open_session(struct tpm_ctx_st *s, const char *_srk_password, return 0; - out_srkpol: +out_srkpol: pTspi_Context_CloseObject(s->tpm_ctx, s->srk_policy); s->srk_policy = 0; - out_srk: +out_srk: pTspi_Context_CloseObject(s->tpm_ctx, s->srk); s->srk = 0; - out_tspi_ctx: +out_tspi_ctx: pTspi_Context_Close(s->tpm_ctx); s->tpm_ctx = 0; gnutls_free(password); return ret; - } static void tpm_close_session(struct tpm_ctx_st *s) @@ -469,11 +457,10 @@ static void tpm_close_session(struct tpm_ctx_st *s) s->tpm_ctx = 0; } -static int -import_tpm_key_cb(gnutls_privkey_t pkey, const gnutls_datum_t * fdata, - gnutls_tpmkey_fmt_t format, TSS_UUID * uuid, - TSS_FLAG storage, const char *srk_password, - const char *key_password) +static int import_tpm_key_cb(gnutls_privkey_t pkey, const gnutls_datum_t *fdata, + gnutls_tpmkey_fmt_t format, TSS_UUID *uuid, + TSS_FLAG storage, const char *srk_password, + const char *key_password) { unsigned int attempts = 0; char pin1[GNUTLS_PKCS11_MAX_PIN_LEN]; @@ -481,17 +468,15 @@ import_tpm_key_cb(gnutls_privkey_t pkey, const gnutls_datum_t * fdata, int ret, ret2; do { - ret = - import_tpm_key(pkey, fdata, format, uuid, storage, - srk_password, key_password); + ret = import_tpm_key(pkey, fdata, format, uuid, storage, + srk_password, key_password); if (attempts > 3) break; if (ret == GNUTLS_E_TPM_SRK_PASSWORD_ERROR) { - ret2 = - tpm_pin(&pkey->pin, &srk_uuid, storage, pin1, - sizeof(pin1), attempts++); + ret2 = tpm_pin(&pkey->pin, &srk_uuid, storage, pin1, + sizeof(pin1), attempts++); if (ret2 < 0) { gnutls_assert(); return GNUTLS_E_TPM_SRK_PASSWORD_ERROR; @@ -500,18 +485,16 @@ import_tpm_key_cb(gnutls_privkey_t pkey, const gnutls_datum_t * fdata, } if (ret == GNUTLS_E_TPM_KEY_PASSWORD_ERROR) { - ret2 = - tpm_pin(&pkey->pin, uuid, storage, pin2, - sizeof(pin2), attempts++); + ret2 = tpm_pin(&pkey->pin, uuid, storage, pin2, + sizeof(pin2), attempts++); if (ret2 < 0) { gnutls_assert(); return GNUTLS_E_TPM_KEY_PASSWORD_ERROR; } key_password = pin2; } - } - while (ret == GNUTLS_E_TPM_KEY_PASSWORD_ERROR - || ret == GNUTLS_E_TPM_SRK_PASSWORD_ERROR); + } while (ret == GNUTLS_E_TPM_KEY_PASSWORD_ERROR || + ret == GNUTLS_E_TPM_SRK_PASSWORD_ERROR); if (ret < 0) gnutls_assert(); @@ -519,8 +502,8 @@ import_tpm_key_cb(gnutls_privkey_t pkey, const gnutls_datum_t * fdata, } static int load_key(TSS_HCONTEXT tpm_ctx, TSS_HKEY srk, - const gnutls_datum_t * fdata, - gnutls_tpmkey_fmt_t format, TSS_HKEY * tpm_key) + const gnutls_datum_t *fdata, gnutls_tpmkey_fmt_t format, + TSS_HKEY *tpm_key) { int ret, err; gnutls_datum_t asn1 = { NULL, 0 }; @@ -531,15 +514,13 @@ static int load_key(TSS_HCONTEXT tpm_ctx, TSS_HKEY srk, ret = gnutls_pem_base64_decode2("TSS KEY BLOB", fdata, &asn1); if (ret) { gnutls_assert(); - _gnutls_debug_log - ("Error decoding TSS key blob: %s\n", - gnutls_strerror(ret)); + _gnutls_debug_log("Error decoding TSS key blob: %s\n", + gnutls_strerror(ret)); return ret; } - ret = - _gnutls_x509_decode_string(ASN1_ETYPE_OCTET_STRING, - asn1.data, asn1.size, &td, 0); + ret = _gnutls_x509_decode_string(ASN1_ETYPE_OCTET_STRING, + asn1.data, asn1.size, &td, 0); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -547,7 +528,7 @@ static int load_key(TSS_HCONTEXT tpm_ctx, TSS_HKEY srk, gnutls_free(asn1.data); asn1.data = td.data; asn1.size = td.size; - } else { /* DER */ + } else { /* DER */ UINT32 tint2; UINT32 type; @@ -560,9 +541,8 @@ static int load_key(TSS_HCONTEXT tpm_ctx, TSS_HKEY srk, } tint2 = asn1.size; - err = - pTspi_DecodeBER_TssBlob(fdata->size, fdata->data, &type, - &tint2, asn1.data); + err = pTspi_DecodeBER_TssBlob(fdata->size, fdata->data, &type, + &tint2, asn1.data); if (err != 0) { gnutls_assert(); ret = tss_err(err); @@ -573,8 +553,8 @@ static int load_key(TSS_HCONTEXT tpm_ctx, TSS_HKEY srk, } /* ... we get it here instead. */ - err = pTspi_Context_LoadKeyByBlob(tpm_ctx, srk, - asn1.size, asn1.data, tpm_key); + err = pTspi_Context_LoadKeyByBlob(tpm_ctx, srk, asn1.size, asn1.data, + tpm_key); if (err != 0) { gnutls_assert(); ret = tss_err(err); @@ -583,19 +563,16 @@ static int load_key(TSS_HCONTEXT tpm_ctx, TSS_HKEY srk, ret = 0; - cleanup: +cleanup: gnutls_free(asn1.data); return ret; } -static int -import_tpm_key(gnutls_privkey_t pkey, - const gnutls_datum_t * fdata, - gnutls_tpmkey_fmt_t format, - TSS_UUID * uuid, - TSS_FLAG storage, - const char *srk_password, const char *_key_password) +static int import_tpm_key(gnutls_privkey_t pkey, const gnutls_datum_t *fdata, + gnutls_tpmkey_fmt_t format, TSS_UUID *uuid, + TSS_FLAG storage, const char *srk_password, + const char *_key_password) { int err, ret; struct tpm_ctx_st *s; @@ -611,10 +588,8 @@ import_tpm_key(gnutls_privkey_t pkey, if (_key_password != NULL) { gnutls_datum_t pout; - ret = - _gnutls_utf8_password_normalize(_key_password, - strlen(_key_password), - &pout, 1); + ret = _gnutls_utf8_password_normalize( + _key_password, strlen(_key_password), &pout, 1); if (ret < 0) { gnutls_assert(); goto out_ctx; @@ -637,9 +612,8 @@ import_tpm_key(gnutls_privkey_t pkey, goto out_session; } } else if (uuid) { - err = - pTspi_Context_LoadKeyByUUID(s->tpm_ctx, storage, - *uuid, &s->tpm_key); + err = pTspi_Context_LoadKeyByUUID(s->tpm_ctx, storage, *uuid, + &s->tpm_key); if (err) { gnutls_assert(); @@ -696,17 +670,15 @@ import_tpm_key(gnutls_privkey_t pkey, } } - ret = - gnutls_privkey_import_ext2(pkey, GNUTLS_PK_RSA, s, - tpm_sign_fn, NULL, tpm_deinit_fn, 0); + ret = gnutls_privkey_import_ext2(pkey, GNUTLS_PK_RSA, s, tpm_sign_fn, + NULL, tpm_deinit_fn, 0); if (ret < 0) { gnutls_assert(); goto out_session; } - ret = - gnutls_privkey_sign_data(pkey, GNUTLS_DIG_SHA1, 0, &nulldata, - &tmp_sig); + ret = gnutls_privkey_sign_data(pkey, GNUTLS_DIG_SHA1, 0, &nulldata, + &tmp_sig); if (ret < 0) { gnutls_assert(); goto out_session; @@ -715,16 +687,16 @@ import_tpm_key(gnutls_privkey_t pkey, gnutls_free(key_password); return 0; - out_key_policy: +out_key_policy: pTspi_Context_CloseObject(s->tpm_ctx, s->tpm_key_policy); s->tpm_key_policy = 0; - out_key: +out_key: pTspi_Context_CloseObject(s->tpm_ctx, s->tpm_key); s->tpm_key = 0; - out_session: +out_session: _gnutls_privkey_cleanup(pkey); tpm_close_session(s); - out_ctx: +out_ctx: gnutls_free(s); gnutls_free(key_password); return ret; @@ -750,12 +722,11 @@ import_tpm_key(gnutls_privkey_t pkey, * Since: 3.1.0 * **/ -int -gnutls_privkey_import_tpm_raw(gnutls_privkey_t pkey, - const gnutls_datum_t * fdata, - gnutls_tpmkey_fmt_t format, - const char *srk_password, - const char *key_password, unsigned int flags) +int gnutls_privkey_import_tpm_raw(gnutls_privkey_t pkey, + const gnutls_datum_t *fdata, + gnutls_tpmkey_fmt_t format, + const char *srk_password, + const char *key_password, unsigned int flags) { CHECK_INIT; @@ -780,8 +751,8 @@ static void clear_tpmkey_url(struct tpmkey_url_st *s) memset(s, 0, sizeof(*s)); } -static int -unescape_string(char *output, const char *input, size_t *size, char terminator) +static int unescape_string(char *output, const char *input, size_t *size, + char terminator) { gnutls_buffer_st str; int ret = 0; @@ -826,9 +797,9 @@ unescape_string(char *output, const char *input, size_t *size, char terminator) return ret; } -# define UUID_SIZE 16 +#define UUID_SIZE 16 -static int randomize_uuid(TSS_UUID * uuid) +static int randomize_uuid(TSS_UUID *uuid) { uint8_t raw_uuid[16]; int ret; @@ -853,8 +824,7 @@ static int randomize_uuid(TSS_UUID * uuid) return 0; } -static int encode_tpmkey_url(char **url, const TSS_UUID * uuid, - TSS_FLAG storage) +static int encode_tpmkey_url(char **url, const TSS_UUID *uuid, TSS_FLAG storage) { uint8_t u1[UUID_SIZE]; gnutls_buffer_st buf; @@ -876,35 +846,23 @@ static int encode_tpmkey_url(char **url, const TSS_UUID * uuid, goto cleanup; } - ret = - _gnutls_buffer_append_printf(&buf, - "%.2x%.2x%.2x%.2x-%.2x%.2x-%.2x%.2x-%.2x%.2x-%.2x%.2x%.2x%.2x%.2x%.2x", - (unsigned int)u1[0], - (unsigned int)u1[1], - (unsigned int)u1[2], - (unsigned int)u1[3], - (unsigned int)u1[4], - (unsigned int)u1[5], - (unsigned int)u1[6], - (unsigned int)u1[7], - (unsigned int)u1[8], - (unsigned int)u1[9], - (unsigned int)u1[10], - (unsigned int)u1[11], - (unsigned int)u1[12], - (unsigned int)u1[13], - (unsigned int)u1[14], - (unsigned int)u1[15]); + ret = _gnutls_buffer_append_printf( + &buf, + "%.2x%.2x%.2x%.2x-%.2x%.2x-%.2x%.2x-%.2x%.2x-%.2x%.2x%.2x%.2x%.2x%.2x", + (unsigned int)u1[0], (unsigned int)u1[1], (unsigned int)u1[2], + (unsigned int)u1[3], (unsigned int)u1[4], (unsigned int)u1[5], + (unsigned int)u1[6], (unsigned int)u1[7], (unsigned int)u1[8], + (unsigned int)u1[9], (unsigned int)u1[10], (unsigned int)u1[11], + (unsigned int)u1[12], (unsigned int)u1[13], + (unsigned int)u1[14], (unsigned int)u1[15]); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _gnutls_buffer_append_printf(&buf, ";storage=%s", - (storage == - TSS_PS_TYPE_USER) ? "user" : - "system"); + ret = _gnutls_buffer_append_printf( + &buf, ";storage=%s", + (storage == TSS_PS_TYPE_USER) ? "user" : "system"); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -919,7 +877,7 @@ static int encode_tpmkey_url(char **url, const TSS_UUID * uuid, *url = (char *)dret.data; return 0; - cleanup: +cleanup: _gnutls_buffer_clear(&buf); return ret; } @@ -994,7 +952,7 @@ static int decode_tpmkey_url(const char *url, struct tpmkey_url_st *s) return 0; - cleanup: +cleanup: clear_tpmkey_url(s); return ret; } @@ -1024,11 +982,9 @@ static int decode_tpmkey_url(const char *url, struct tpmkey_url_st *s) * Since: 3.1.0 * **/ -int -gnutls_privkey_import_tpm_url(gnutls_privkey_t pkey, - const char *url, - const char *srk_password, - const char *key_password, unsigned int flags) +int gnutls_privkey_import_tpm_url(gnutls_privkey_t pkey, const char *url, + const char *srk_password, + const char *key_password, unsigned int flags) { struct tpmkey_url_st durl; gnutls_datum_t fdata = { NULL, 0 }; @@ -1048,17 +1004,14 @@ gnutls_privkey_import_tpm_url(gnutls_privkey_t pkey, goto cleanup; } - ret = - gnutls_privkey_import_tpm_raw(pkey, &fdata, - GNUTLS_TPMKEY_FMT_CTK_PEM, - srk_password, - key_password, flags); + ret = gnutls_privkey_import_tpm_raw(pkey, &fdata, + GNUTLS_TPMKEY_FMT_CTK_PEM, + srk_password, key_password, + flags); if (ret == GNUTLS_E_BASE64_UNEXPECTED_HEADER_ERROR) - ret = - gnutls_privkey_import_tpm_raw(pkey, &fdata, - GNUTLS_TPMKEY_FMT_RAW, - srk_password, - key_password, flags); + ret = gnutls_privkey_import_tpm_raw( + pkey, &fdata, GNUTLS_TPMKEY_FMT_RAW, + srk_password, key_password, flags); if (ret < 0) { gnutls_assert(); @@ -1066,15 +1019,13 @@ gnutls_privkey_import_tpm_url(gnutls_privkey_t pkey, } } else if (durl.uuid_set) { if (flags & GNUTLS_PRIVKEY_DISABLE_CALLBACKS) - ret = - import_tpm_key(pkey, NULL, 0, &durl.uuid, - durl.storage, srk_password, - key_password); + ret = import_tpm_key(pkey, NULL, 0, &durl.uuid, + durl.storage, srk_password, + key_password); else - ret = - import_tpm_key_cb(pkey, NULL, 0, &durl.uuid, - durl.storage, srk_password, - key_password); + ret = import_tpm_key_cb(pkey, NULL, 0, &durl.uuid, + durl.storage, srk_password, + key_password); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -1082,7 +1033,7 @@ gnutls_privkey_import_tpm_url(gnutls_privkey_t pkey, } ret = 0; - cleanup: +cleanup: gnutls_free(fdata.data); clear_tpmkey_url(&durl); return ret; @@ -1102,8 +1053,8 @@ static int read_pubkey(gnutls_pubkey_t pub, TSS_HKEY key_ctx, size_t *psize) /* read the public key */ tssret = pTspi_GetAttribData(key_ctx, TSS_TSPATTRIB_RSAKEY_INFO, - TSS_TSPATTRIB_KEYINFO_RSA_MODULUS, - &tint, (void *)&tdata); + TSS_TSPATTRIB_KEYINFO_RSA_MODULUS, &tint, + (void *)&tdata); if (tssret != 0) { gnutls_assert(); return tss_err(tssret); @@ -1113,8 +1064,8 @@ static int read_pubkey(gnutls_pubkey_t pub, TSS_HKEY key_ctx, size_t *psize) m.size = tint; tssret = pTspi_GetAttribData(key_ctx, TSS_TSPATTRIB_RSAKEY_INFO, - TSS_TSPATTRIB_KEYINFO_RSA_EXPONENT, - &tint, (void *)&tdata); + TSS_TSPATTRIB_KEYINFO_RSA_EXPONENT, &tint, + (void *)&tdata); if (tssret != 0) { gnutls_assert(); pTspi_Context_FreeMemory(key_ctx, m.data); @@ -1138,11 +1089,9 @@ static int read_pubkey(gnutls_pubkey_t pub, TSS_HKEY key_ctx, size_t *psize) return 0; } -static int -import_tpm_pubkey(gnutls_pubkey_t pkey, - const gnutls_datum_t * fdata, - gnutls_tpmkey_fmt_t format, - TSS_UUID * uuid, TSS_FLAG storage, const char *srk_password) +static int import_tpm_pubkey(gnutls_pubkey_t pkey, const gnutls_datum_t *fdata, + gnutls_tpmkey_fmt_t format, TSS_UUID *uuid, + TSS_FLAG storage, const char *srk_password) { int err, ret; struct tpm_ctx_st s; @@ -1158,9 +1107,8 @@ import_tpm_pubkey(gnutls_pubkey_t pkey, goto out_session; } } else if (uuid) { - err = - pTspi_Context_LoadKeyByUUID(s.tpm_ctx, storage, - *uuid, &s.tpm_key); + err = pTspi_Context_LoadKeyByUUID(s.tpm_ctx, storage, *uuid, + &s.tpm_key); if (err) { gnutls_assert(); ret = tss_err(err); @@ -1179,42 +1127,37 @@ import_tpm_pubkey(gnutls_pubkey_t pkey, } ret = 0; - out_session: +out_session: tpm_close_session(&s); return ret; } -static int -import_tpm_pubkey_cb(gnutls_pubkey_t pkey, - const gnutls_datum_t * fdata, - gnutls_tpmkey_fmt_t format, - TSS_UUID * uuid, - TSS_FLAG storage, const char *srk_password) +static int import_tpm_pubkey_cb(gnutls_pubkey_t pkey, + const gnutls_datum_t *fdata, + gnutls_tpmkey_fmt_t format, TSS_UUID *uuid, + TSS_FLAG storage, const char *srk_password) { unsigned int attempts = 0; char pin1[GNUTLS_PKCS11_MAX_PIN_LEN]; int ret, sret; do { - ret = - import_tpm_pubkey(pkey, fdata, format, uuid, storage, - srk_password); + ret = import_tpm_pubkey(pkey, fdata, format, uuid, storage, + srk_password); if (attempts > 3) break; if (ret == GNUTLS_E_TPM_SRK_PASSWORD_ERROR) { - sret = - tpm_pin(&pkey->pin, &srk_uuid, storage, pin1, - sizeof(pin1), attempts++); + sret = tpm_pin(&pkey->pin, &srk_uuid, storage, pin1, + sizeof(pin1), attempts++); if (sret < 0) { gnutls_assert(); return GNUTLS_E_TPM_SRK_PASSWORD_ERROR; } srk_password = pin1; } - } - while (ret == GNUTLS_E_TPM_SRK_PASSWORD_ERROR); + } while (ret == GNUTLS_E_TPM_SRK_PASSWORD_ERROR); if (ret < 0) gnutls_assert(); @@ -1240,11 +1183,10 @@ import_tpm_pubkey_cb(gnutls_pubkey_t pkey, * * Since: 3.1.0 **/ -int -gnutls_pubkey_import_tpm_raw(gnutls_pubkey_t pkey, - const gnutls_datum_t * fdata, - gnutls_tpmkey_fmt_t format, - const char *srk_password, unsigned int flags) +int gnutls_pubkey_import_tpm_raw(gnutls_pubkey_t pkey, + const gnutls_datum_t *fdata, + gnutls_tpmkey_fmt_t format, + const char *srk_password, unsigned int flags) { CHECK_INIT; @@ -1278,10 +1220,8 @@ gnutls_pubkey_import_tpm_raw(gnutls_pubkey_t pkey, * Since: 3.1.0 * **/ -int -gnutls_pubkey_import_tpm_url(gnutls_pubkey_t pkey, - const char *url, - const char *srk_password, unsigned int flags) +int gnutls_pubkey_import_tpm_url(gnutls_pubkey_t pkey, const char *url, + const char *srk_password, unsigned int flags) { struct tpmkey_url_st durl; gnutls_datum_t fdata = { NULL, 0 }; @@ -1294,35 +1234,30 @@ gnutls_pubkey_import_tpm_url(gnutls_pubkey_t pkey, return gnutls_assert_val(ret); if (durl.filename) { - ret = gnutls_load_file(durl.filename, &fdata); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - gnutls_pubkey_import_tpm_raw(pkey, &fdata, - GNUTLS_TPMKEY_FMT_CTK_PEM, - srk_password, flags); + ret = gnutls_pubkey_import_tpm_raw(pkey, &fdata, + GNUTLS_TPMKEY_FMT_CTK_PEM, + srk_password, flags); if (ret == GNUTLS_E_BASE64_UNEXPECTED_HEADER_ERROR) - ret = - gnutls_pubkey_import_tpm_raw(pkey, &fdata, - GNUTLS_TPMKEY_FMT_RAW, - srk_password, flags); + ret = gnutls_pubkey_import_tpm_raw( + pkey, &fdata, GNUTLS_TPMKEY_FMT_RAW, + srk_password, flags); if (ret < 0) { gnutls_assert(); goto cleanup; } } else if (durl.uuid_set) { if (flags & GNUTLS_PUBKEY_DISABLE_CALLBACKS) - ret = - import_tpm_pubkey(pkey, NULL, 0, &durl.uuid, - durl.storage, srk_password); + ret = import_tpm_pubkey(pkey, NULL, 0, &durl.uuid, + durl.storage, srk_password); else - ret = - import_tpm_pubkey_cb(pkey, NULL, 0, &durl.uuid, - durl.storage, srk_password); + ret = import_tpm_pubkey_cb(pkey, NULL, 0, &durl.uuid, + durl.storage, srk_password); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -1330,7 +1265,7 @@ gnutls_pubkey_import_tpm_url(gnutls_pubkey_t pkey, } ret = 0; - cleanup: +cleanup: gnutls_free(fdata.data); clear_tpmkey_url(&durl); return ret; @@ -1370,14 +1305,13 @@ gnutls_pubkey_import_tpm_url(gnutls_pubkey_t pkey, * * Since: 3.1.0 **/ -int -gnutls_tpm_privkey_generate(gnutls_pk_algorithm_t pk, unsigned int bits, - const char *srk_password, - const char *key_password, - gnutls_tpmkey_fmt_t format, - gnutls_x509_crt_fmt_t pub_format, - gnutls_datum_t * privkey, - gnutls_datum_t * pubkey, unsigned int flags) +int gnutls_tpm_privkey_generate(gnutls_pk_algorithm_t pk, unsigned int bits, + const char *srk_password, + const char *key_password, + gnutls_tpmkey_fmt_t format, + gnutls_x509_crt_fmt_t pub_format, + gnutls_datum_t *privkey, gnutls_datum_t *pubkey, + unsigned int flags) { TSS_FLAG tpm_flags = TSS_KEY_VOLATILE; TSS_HKEY key_ctx; @@ -1447,19 +1381,17 @@ gnutls_tpm_privkey_generate(gnutls_pk_algorithm_t pk, unsigned int bits, gnutls_assert(); } - tssret = - pTspi_Context_CreateObject(s.tpm_ctx, TSS_OBJECT_TYPE_RSAKEY, - tpm_flags, &key_ctx); + tssret = pTspi_Context_CreateObject(s.tpm_ctx, TSS_OBJECT_TYPE_RSAKEY, + tpm_flags, &key_ctx); if (tssret != 0) { gnutls_assert(); ret = tss_err(tssret); goto err_cc; } - tssret = - pTspi_SetAttribUint32(key_ctx, TSS_TSPATTRIB_KEY_INFO, - TSS_TSPATTRIB_KEYINFO_SIGSCHEME, - TSS_SS_RSASSAPKCS1V15_DER); + tssret = pTspi_SetAttribUint32(key_ctx, TSS_TSPATTRIB_KEY_INFO, + TSS_TSPATTRIB_KEYINFO_SIGSCHEME, + TSS_SS_RSASSAPKCS1V15_DER); if (tssret != 0) { gnutls_assert(); ret = tss_err(tssret); @@ -1471,27 +1403,23 @@ gnutls_tpm_privkey_generate(gnutls_pk_algorithm_t pk, unsigned int bits, gnutls_datum_t pout; char *password = NULL; - tssret = - pTspi_GetPolicyObject(key_ctx, TSS_POLICY_USAGE, - &key_policy); + tssret = pTspi_GetPolicyObject(key_ctx, TSS_POLICY_USAGE, + &key_policy); if (tssret != 0) { gnutls_assert(); ret = tss_err(tssret); goto err_sa; } - ret = - _gnutls_utf8_password_normalize(key_password, - strlen(key_password), &pout, - 0); + ret = _gnutls_utf8_password_normalize( + key_password, strlen(key_password), &pout, 0); if (ret < 0) { gnutls_assert(); goto err_sa; } password = (char *)pout.data; - tssret = myTspi_Policy_SetSecret(key_policy, - SAFE_LEN(password), + tssret = myTspi_Policy_SetSecret(key_policy, SAFE_LEN(password), (void *)password); gnutls_free(password); if (tssret != 0) { @@ -1517,19 +1445,18 @@ gnutls_tpm_privkey_generate(gnutls_pk_algorithm_t pk, unsigned int bits, goto err_sa; } - tssret = - pTspi_Context_RegisterKey(s.tpm_ctx, key_ctx, - storage_type, key_uuid, - TSS_PS_TYPE_SYSTEM, srk_uuid); + tssret = pTspi_Context_RegisterKey(s.tpm_ctx, key_ctx, + storage_type, key_uuid, + TSS_PS_TYPE_SYSTEM, + srk_uuid); if (tssret != 0) { gnutls_assert(); ret = tss_err(tssret); goto err_sa; } - ret = - encode_tpmkey_url((char **)&privkey->data, &key_uuid, - storage_type); + ret = encode_tpmkey_url((char **)&privkey->data, &key_uuid, + storage_type); if (ret < 0) { TSS_HKEY tkey; @@ -1540,12 +1467,11 @@ gnutls_tpm_privkey_generate(gnutls_pk_algorithm_t pk, unsigned int bits, } privkey->size = strlen((char *)privkey->data); - } else { /* get the key as blob */ + } else { /* get the key as blob */ - tssret = - pTspi_GetAttribData(key_ctx, TSS_TSPATTRIB_KEY_BLOB, - TSS_TSPATTRIB_KEYBLOB_BLOB, &tint, - (void *)&tdata); + tssret = pTspi_GetAttribData(key_ctx, TSS_TSPATTRIB_KEY_BLOB, + TSS_TSPATTRIB_KEYBLOB_BLOB, &tint, + (void *)&tdata); if (tssret != 0) { gnutls_assert(); ret = tss_err(tssret); @@ -1553,18 +1479,16 @@ gnutls_tpm_privkey_generate(gnutls_pk_algorithm_t pk, unsigned int bits, } if (format == GNUTLS_TPMKEY_FMT_CTK_PEM) { - ret = - _gnutls_x509_encode_string - (ASN1_ETYPE_OCTET_STRING, tdata, tint, &tmpkey); + ret = _gnutls_x509_encode_string( + ASN1_ETYPE_OCTET_STRING, tdata, tint, &tmpkey); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _gnutls_fbase64_encode("TSS KEY BLOB", - tmpkey.data, - tmpkey.size, privkey); + ret = _gnutls_fbase64_encode("TSS KEY BLOB", + tmpkey.data, tmpkey.size, + privkey); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -1572,7 +1496,7 @@ gnutls_tpm_privkey_generate(gnutls_pk_algorithm_t pk, unsigned int bits, } else { UINT32 tint2; - tmpkey.size = tint + 32; /* spec says no more than 20 */ + tmpkey.size = tint + 32; /* spec says no more than 20 */ tmpkey.data = gnutls_malloc(tmpkey.size); if (tmpkey.data == NULL) { gnutls_assert(); @@ -1581,10 +1505,9 @@ gnutls_tpm_privkey_generate(gnutls_pk_algorithm_t pk, unsigned int bits, } tint2 = tmpkey.size; - tssret = - pTspi_EncodeDER_TssBlob(tint, tdata, - TSS_BLOB_TYPE_PRIVATEKEY, - &tint2, tmpkey.data); + tssret = pTspi_EncodeDER_TssBlob( + tint, tdata, TSS_BLOB_TYPE_PRIVATEKEY, &tint2, + tmpkey.data); if (tssret != 0) { gnutls_assert(); ret = tss_err(tssret); @@ -1623,8 +1546,8 @@ gnutls_tpm_privkey_generate(gnutls_pk_algorithm_t pk, unsigned int bits, goto pubkey_cleanup; } - ret = - gnutls_pubkey_export(pub, pub_format, pubkey->data, &psize); + ret = gnutls_pubkey_export(pub, pub_format, pubkey->data, + &psize); if (ret < 0) { gnutls_assert(); goto pubkey_cleanup; @@ -1637,15 +1560,15 @@ gnutls_tpm_privkey_generate(gnutls_pk_algorithm_t pk, unsigned int bits, ret = 0; goto cleanup; - pubkey_cleanup: +pubkey_cleanup: gnutls_pubkey_deinit(pub); - privkey_cleanup: +privkey_cleanup: gnutls_free(privkey->data); - cleanup: +cleanup: gnutls_free(tmpkey.data); - err_sa: +err_sa: pTspi_Context_CloseObject(s.tpm_ctx, key_ctx); - err_cc: +err_cc: tpm_close_session(&s); return ret; } @@ -1684,9 +1607,8 @@ void gnutls_tpm_key_list_deinit(gnutls_tpm_key_list_t list) * * Since: 3.1.0 **/ -int -gnutls_tpm_key_list_get_url(gnutls_tpm_key_list_t list, unsigned int idx, - char **url, unsigned int flags) +int gnutls_tpm_key_list_get_url(gnutls_tpm_key_list_t list, unsigned int idx, + char **url, unsigned int flags) { CHECK_INIT; @@ -1709,7 +1631,7 @@ gnutls_tpm_key_list_get_url(gnutls_tpm_key_list_t list, unsigned int idx, * * Since: 3.1.0 **/ -int gnutls_tpm_get_registered(gnutls_tpm_key_list_t * list) +int gnutls_tpm_get_registered(gnutls_tpm_key_list_t *list) { TSS_RESULT tssret; int ret; @@ -1734,11 +1656,10 @@ int gnutls_tpm_get_registered(gnutls_tpm_key_list_t * list) goto cleanup; } - tssret = - pTspi_Context_GetRegisteredKeysByUUID2((*list)->tpm_ctx, - TSS_PS_TYPE_SYSTEM, NULL, - &(*list)->size, - &(*list)->ki); + tssret = pTspi_Context_GetRegisteredKeysByUUID2((*list)->tpm_ctx, + TSS_PS_TYPE_SYSTEM, + NULL, &(*list)->size, + &(*list)->ki); if (tssret) { gnutls_assert(); ret = tss_err(tssret); @@ -1746,7 +1667,7 @@ int gnutls_tpm_get_registered(gnutls_tpm_key_list_t * list) } return 0; - cleanup: +cleanup: gnutls_tpm_key_list_deinit(*list); return ret; @@ -1786,9 +1707,8 @@ int gnutls_tpm_privkey_delete(const char *url, const char *srk_password) if (ret < 0) return gnutls_assert_val(ret); - tssret = - pTspi_Context_UnregisterKey(s.tpm_ctx, durl.storage, durl.uuid, - &tkey); + tssret = pTspi_Context_UnregisterKey(s.tpm_ctx, durl.storage, durl.uuid, + &tkey); if (tssret != 0) { gnutls_assert(); ret = tss_err(tssret); @@ -1796,55 +1716,48 @@ int gnutls_tpm_privkey_delete(const char *url, const char *srk_password) } ret = 0; - err_cc: +err_cc: tpm_close_session(&s); return ret; } -#else /* HAVE_TROUSERS */ -int -gnutls_privkey_import_tpm_raw(gnutls_privkey_t pkey, - const gnutls_datum_t * fdata, - gnutls_tpmkey_fmt_t format, - const char *srk_password, - const char *key_password, unsigned int flags) +#else /* HAVE_TROUSERS */ +int gnutls_privkey_import_tpm_raw(gnutls_privkey_t pkey, + const gnutls_datum_t *fdata, + gnutls_tpmkey_fmt_t format, + const char *srk_password, + const char *key_password, unsigned int flags) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int -gnutls_privkey_import_tpm_url(gnutls_privkey_t pkey, - const char *url, - const char *srk_password, - const char *key_password, unsigned int flags) +int gnutls_privkey_import_tpm_url(gnutls_privkey_t pkey, const char *url, + const char *srk_password, + const char *key_password, unsigned int flags) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int -gnutls_pubkey_import_tpm_raw(gnutls_pubkey_t pkey, - const gnutls_datum_t * fdata, - gnutls_tpmkey_fmt_t format, - const char *srk_password, unsigned int flags) +int gnutls_pubkey_import_tpm_raw(gnutls_pubkey_t pkey, + const gnutls_datum_t *fdata, + gnutls_tpmkey_fmt_t format, + const char *srk_password, unsigned int flags) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int -gnutls_pubkey_import_tpm_url(gnutls_pubkey_t pkey, - const char *url, - const char *srk_password, unsigned int flags) +int gnutls_pubkey_import_tpm_url(gnutls_pubkey_t pkey, const char *url, + const char *srk_password, unsigned int flags) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int -gnutls_tpm_privkey_generate(gnutls_pk_algorithm_t pk, unsigned int bits, - const char *srk_password, - const char *key_password, - gnutls_tpmkey_fmt_t format, - gnutls_x509_crt_fmt_t pub_format, - gnutls_datum_t * privkey, - gnutls_datum_t * pubkey, unsigned int flags) +int gnutls_tpm_privkey_generate(gnutls_pk_algorithm_t pk, unsigned int bits, + const char *srk_password, + const char *key_password, + gnutls_tpmkey_fmt_t format, + gnutls_x509_crt_fmt_t pub_format, + gnutls_datum_t *privkey, gnutls_datum_t *pubkey, + unsigned int flags) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } @@ -1854,14 +1767,13 @@ void gnutls_tpm_key_list_deinit(gnutls_tpm_key_list_t list) return; } -int -gnutls_tpm_key_list_get_url(gnutls_tpm_key_list_t list, unsigned int idx, - char **url, unsigned int flags) +int gnutls_tpm_key_list_get_url(gnutls_tpm_key_list_t list, unsigned int idx, + char **url, unsigned int flags) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -int gnutls_tpm_get_registered(gnutls_tpm_key_list_t * list) +int gnutls_tpm_get_registered(gnutls_tpm_key_list_t *list) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } @@ -1870,4 +1782,4 @@ int gnutls_tpm_privkey_delete(const char *url, const char *srk_password) { return GNUTLS_E_UNIMPLEMENTED_FEATURE; } -#endif /* HAVE_TROUSERS */ +#endif /* HAVE_TROUSERS */ diff --git a/lib/tpm2.c b/lib/tpm2.c index c34333cd63..87cd2eaca1 100644 --- a/lib/tpm2.c +++ b/lib/tpm2.c @@ -66,9 +66,9 @@ static int rsa_key_info(gnutls_privkey_t key, unsigned int flags, void *_info) return 1; default: - _gnutls_debug_log - ("tpm2: unsupported RSA sign algo %s\n", - gnutls_sign_get_name(algo)); + _gnutls_debug_log( + "tpm2: unsupported RSA sign algo %s\n", + gnutls_sign_get_name(algo)); return 0; } } @@ -97,13 +97,13 @@ static int ec_key_info(gnutls_privkey_t key, unsigned int flags, void *_info) return 1; case GNUTLS_SIGN_ECDSA_SECP256R1_SHA256: - return tpm2_curve == 0x0003; /* TPM2_ECC_NIST_P256 */ + return tpm2_curve == 0x0003; /* TPM2_ECC_NIST_P256 */ case GNUTLS_SIGN_ECDSA_SECP384R1_SHA384: - return tpm2_curve == 0x0004; /* TPM2_ECC_NIST_P384 */ + return tpm2_curve == 0x0004; /* TPM2_ECC_NIST_P384 */ case GNUTLS_SIGN_ECDSA_SECP521R1_SHA512: - return tpm2_curve == 0x0005; /* TPM2_ECC_NIST_P521 */ + return tpm2_curve == 0x0005; /* TPM2_ECC_NIST_P521 */ default: _gnutls_debug_log("tpm2: unsupported EC sign algo %s\n", @@ -119,7 +119,7 @@ static int ec_key_info(gnutls_privkey_t key, unsigned int flags, void *_info) return -1; } -static int decode_data(asn1_node n, gnutls_datum_t * r) +static int decode_data(asn1_node n, gnutls_datum_t *r) { asn1_data_node_st d; int lenlen; @@ -145,7 +145,7 @@ static int decode_data(asn1_node n, gnutls_datum_t * r) return 0; } -int _gnutls_load_tpm2_key(gnutls_privkey_t pkey, const gnutls_datum_t * fdata) +int _gnutls_load_tpm2_key(gnutls_privkey_t pkey, const gnutls_datum_t *fdata) { gnutls_datum_t asn1, pubdata, privdata; asn1_node tpmkey = NULL; @@ -206,7 +206,7 @@ int _gnutls_load_tpm2_key(gnutls_privkey_t pkey, const gnutls_datum_t * fdata) value_buflen = 5; err = asn1_read_value(tpmkey, "parent", value_buf, &value_buflen); if (err == ASN1_ELEMENT_NOT_FOUND) { - parent = 0x40000001; /* RH_OWNER */ + parent = 0x40000001; /* RH_OWNER */ } else if (err != ASN1_SUCCESS) { _gnutls_debug_log("tpm2: failed to parse TPM2 key parent: %s\n", asn1_strerror(err)); @@ -219,8 +219,8 @@ int _gnutls_load_tpm2_key(gnutls_privkey_t pkey, const gnutls_datum_t * fdata) if (value_buflen == 5) { if (value_buf[0]) { gnutls_assert(); - _gnutls_debug_log - ("tpm2: failed to parse parent key\n"); + _gnutls_debug_log( + "tpm2: failed to parse parent key\n"); ret = GNUTLS_E_TPM_ERROR; goto out_tpmkey; } @@ -260,8 +260,8 @@ int _gnutls_load_tpm2_key(gnutls_privkey_t pkey, const gnutls_datum_t * fdata) /* Now we've extracted what we need from the ASN.1, invoke the * actual TPM2 code (whichever implementation we end up with */ - ret = install_tpm2_key(info, pkey, parent, emptyauth, - &privdata, &pubdata); + ret = install_tpm2_key(info, pkey, parent, emptyauth, &privdata, + &pubdata); if (ret < 0) { goto out_tpmkey; } @@ -287,12 +287,12 @@ int _gnutls_load_tpm2_key(gnutls_privkey_t pkey, const gnutls_datum_t * fdata) } ret = 0; - info = NULL; /* part of pkey now */ + info = NULL; /* part of pkey now */ - out_tpmkey: +out_tpmkey: asn1_delete_structure(&tpmkey); release_tpm2_ctx(info); - out_asn1: +out_asn1: gnutls_free(asn1.data); return ret; } diff --git a/lib/tpm2.h b/lib/tpm2.h index 45105b86d0..d3eeede3b5 100644 --- a/lib/tpm2.h +++ b/lib/tpm2.h @@ -22,14 +22,14 @@ */ #ifndef GNUTLS_LIB_TPM2_H -# define GNUTLS_LIB_TPM2_H +#define GNUTLS_LIB_TPM2_H -# include "pin.h" +#include "pin.h" /* Functions used outside tpm2.c */ void _gnutls_tpm2_deinit(void); -int _gnutls_load_tpm2_key(gnutls_privkey_t pkey, const gnutls_datum_t * fdata); +int _gnutls_load_tpm2_key(gnutls_privkey_t pkey, const gnutls_datum_t *fdata); /* Functions only used in tpm2.c */ @@ -43,22 +43,22 @@ void release_tpm2_ctx(struct tpm2_info_st *info); int install_tpm2_key(struct tpm2_info_st *info, gnutls_privkey_t pkey, unsigned int parent, bool emptyauth, - gnutls_datum_t * privdata, gnutls_datum_t * pubdata); + gnutls_datum_t *privdata, gnutls_datum_t *pubdata); void tpm2_deinit_fn(gnutls_privkey_t key, void *priv); int tpm2_rsa_sign_hash_fn(gnutls_privkey_t key, gnutls_sign_algorithm_t algo, void *_info, unsigned int flags, - const gnutls_datum_t * data, gnutls_datum_t * sig); + const gnutls_datum_t *data, gnutls_datum_t *sig); int tpm2_ec_sign_hash_fn(gnutls_privkey_t key, gnutls_sign_algorithm_t algo, void *_info, unsigned int flags, - const gnutls_datum_t * data, gnutls_datum_t * sig); + const gnutls_datum_t *data, gnutls_datum_t *sig); uint16_t tpm2_key_curve(struct tpm2_info_st *info); int tpm2_rsa_key_bits(struct tpm2_info_st *info); -int tpm2_convert_public(gnutls_privkey_t key, - void *userdata, gnutls_pk_params_st * params); +int tpm2_convert_public(gnutls_privkey_t key, void *userdata, + gnutls_pk_params_st *params); -#endif /* GNUTLS_LIB_TPM2_H */ +#endif /* GNUTLS_LIB_TPM2_H */ diff --git a/lib/tpm2_esys.c b/lib/tpm2_esys.c index 54d619e420..bfb5133bf6 100644 --- a/lib/tpm2_esys.c +++ b/lib/tpm2_esys.c @@ -87,191 +87,161 @@ static void *_gnutls_tss2_tctildr_dlhandle; /* Does the __typeof__ keyword work? This could be done by 'configure', but for now it's easier to do it by hand. */ #undef HAVE___TYPEOF__ -#if (2 <= __GNUC__ \ - || (4 <= __clang_major__) \ - || (1210 <= __IBMC__ && defined __IBM__TYPEOF__) \ - || (0x5110 <= __SUNPRO_C && !__STDC__)) -# define HAVE___TYPEOF__ 1 +#if (2 <= __GNUC__ || (4 <= __clang_major__) || \ + (1210 <= __IBMC__ && defined __IBM__TYPEOF__) || \ + (0x5110 <= __SUNPRO_C && !__STDC__)) +#define HAVE___TYPEOF__ 1 #else -# define HAVE___TYPEOF__ 0 +#define HAVE___TYPEOF__ 0 #endif #if HAVE___TYPEOF__ -static __typeof__(Esys_GetCapability) (*_gnutls_tss2_Esys_GetCapability); -static __typeof__(Esys_Free) (*_gnutls_tss2_Esys_Free); -static __typeof__(Esys_TR_SetAuth) (*_gnutls_tss2_Esys_TR_SetAuth); -static __typeof__(Esys_CreatePrimary) (*_gnutls_tss2_Esys_CreatePrimary); -static __typeof__(Esys_Initialize) (*_gnutls_tss2_Esys_Initialize); -static __typeof__(Esys_Startup) (*_gnutls_tss2_Esys_Startup); -static __typeof__(Esys_TR_FromTPMPublic) (*_gnutls_tss2_Esys_TR_FromTPMPublic); -static __typeof__(Esys_ReadPublic) (*_gnutls_tss2_Esys_ReadPublic); -static __typeof__(Esys_Load) (*_gnutls_tss2_Esys_Load); -static __typeof__(Esys_FlushContext) (*_gnutls_tss2_Esys_FlushContext); -static __typeof__(Esys_Finalize) (*_gnutls_tss2_Esys_Finalize); -static __typeof__(Esys_RSA_Decrypt) (*_gnutls_tss2_Esys_RSA_Decrypt); -static __typeof__(Esys_Sign) (*_gnutls_tss2_Esys_Sign); - -static __typeof__(Tss2_MU_TPM2B_PRIVATE_Unmarshal) - (*_gnutls_tss2_Tss2_MU_TPM2B_PRIVATE_Unmarshal); -static __typeof__(Tss2_MU_TPM2B_PUBLIC_Unmarshal) - (*_gnutls_tss2_Tss2_MU_TPM2B_PUBLIC_Unmarshal); - -static __typeof__(Tss2_TctiLdr_Initialize) - (*_gnutls_tss2_Tss2_TctiLdr_Initialize); -static __typeof__(Tss2_TctiLdr_Finalize) - (*_gnutls_tss2_Tss2_TctiLdr_Finalize); +static __typeof__(Esys_GetCapability)(*_gnutls_tss2_Esys_GetCapability); +static __typeof__(Esys_Free)(*_gnutls_tss2_Esys_Free); +static __typeof__(Esys_TR_SetAuth)(*_gnutls_tss2_Esys_TR_SetAuth); +static __typeof__(Esys_CreatePrimary)(*_gnutls_tss2_Esys_CreatePrimary); +static __typeof__(Esys_Initialize)(*_gnutls_tss2_Esys_Initialize); +static __typeof__(Esys_Startup)(*_gnutls_tss2_Esys_Startup); +static __typeof__(Esys_TR_FromTPMPublic)(*_gnutls_tss2_Esys_TR_FromTPMPublic); +static __typeof__(Esys_ReadPublic)(*_gnutls_tss2_Esys_ReadPublic); +static __typeof__(Esys_Load)(*_gnutls_tss2_Esys_Load); +static __typeof__(Esys_FlushContext)(*_gnutls_tss2_Esys_FlushContext); +static __typeof__(Esys_Finalize)(*_gnutls_tss2_Esys_Finalize); +static __typeof__(Esys_RSA_Decrypt)(*_gnutls_tss2_Esys_RSA_Decrypt); +static __typeof__(Esys_Sign)(*_gnutls_tss2_Esys_Sign); + +static __typeof__(Tss2_MU_TPM2B_PRIVATE_Unmarshal)( + *_gnutls_tss2_Tss2_MU_TPM2B_PRIVATE_Unmarshal); +static __typeof__(Tss2_MU_TPM2B_PUBLIC_Unmarshal)( + *_gnutls_tss2_Tss2_MU_TPM2B_PUBLIC_Unmarshal); + +static __typeof__(Tss2_TctiLdr_Initialize)( + *_gnutls_tss2_Tss2_TctiLdr_Initialize); +static __typeof__(Tss2_TctiLdr_Finalize)(*_gnutls_tss2_Tss2_TctiLdr_Finalize); #else -static TSS2_RC - (*_gnutls_tss2_Esys_GetCapability) (ESYS_CONTEXT * esysContext, - ESYS_TR shandle1, - ESYS_TR shandle2, - ESYS_TR shandle3, - TPM2_CAP capability, - UINT32 property, - UINT32 propertyCount, - TPMI_YES_NO * moreData, - TPMS_CAPABILITY_DATA ** capabilityData); +static TSS2_RC (*_gnutls_tss2_Esys_GetCapability)( + ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, + ESYS_TR shandle3, TPM2_CAP capability, UINT32 property, + UINT32 propertyCount, TPMI_YES_NO *moreData, + TPMS_CAPABILITY_DATA **capabilityData); static void (*_gnutls_tss2_Esys_Free)(void *__ptr); -static TSS2_RC(*_gnutls_tss2_Esys_TR_SetAuth) (ESYS_CONTEXT * esysContext, +static TSS2_RC (*_gnutls_tss2_Esys_TR_SetAuth)(ESYS_CONTEXT *esysContext, ESYS_TR handle, TPM2B_AUTH const *authValue); -static TSS2_RC - (*_gnutls_tss2_Esys_CreatePrimary) (ESYS_CONTEXT * esysContext, - ESYS_TR primaryHandle, - ESYS_TR shandle1, - ESYS_TR shandle2, - ESYS_TR shandle3, - const TPM2B_SENSITIVE_CREATE * - inSensitive, - const TPM2B_PUBLIC * inPublic, - const TPM2B_DATA * outsideInfo, - const TPML_PCR_SELECTION * creationPCR, - ESYS_TR * objectHandle, - TPM2B_PUBLIC ** outPublic, - TPM2B_CREATION_DATA ** creationData, - TPM2B_DIGEST ** creationHash, - TPMT_TK_CREATION ** creationTicket); -static TSS2_RC(*_gnutls_tss2_Esys_Initialize) (ESYS_CONTEXT ** esys_context, - TSS2_TCTI_CONTEXT * tcti, - TSS2_ABI_VERSION * abiVersion); -static TSS2_RC(*_gnutls_tss2_Esys_Startup) (ESYS_CONTEXT * esysContext, +static TSS2_RC (*_gnutls_tss2_Esys_CreatePrimary)( + ESYS_CONTEXT *esysContext, ESYS_TR primaryHandle, ESYS_TR shandle1, + ESYS_TR shandle2, ESYS_TR shandle3, + const TPM2B_SENSITIVE_CREATE *inSensitive, const TPM2B_PUBLIC *inPublic, + const TPM2B_DATA *outsideInfo, const TPML_PCR_SELECTION *creationPCR, + ESYS_TR *objectHandle, TPM2B_PUBLIC **outPublic, + TPM2B_CREATION_DATA **creationData, TPM2B_DIGEST **creationHash, + TPMT_TK_CREATION **creationTicket); +static TSS2_RC (*_gnutls_tss2_Esys_Initialize)(ESYS_CONTEXT **esys_context, + TSS2_TCTI_CONTEXT *tcti, + TSS2_ABI_VERSION *abiVersion); +static TSS2_RC (*_gnutls_tss2_Esys_Startup)(ESYS_CONTEXT *esysContext, TPM2_SU startupType); -static TSS2_RC(*_gnutls_tss2_Esys_TR_FromTPMPublic) (ESYS_CONTEXT * esysContext, +static TSS2_RC (*_gnutls_tss2_Esys_TR_FromTPMPublic)(ESYS_CONTEXT *esysContext, TPM2_HANDLE tpm_handle, ESYS_TR optionalSession1, ESYS_TR optionalSession2, ESYS_TR optionalSession3, - ESYS_TR * object); -static TSS2_RC(*_gnutls_tss2_Esys_ReadPublic) (ESYS_CONTEXT * esysContext, - ESYS_TR objectHandle, - ESYS_TR shandle1, - ESYS_TR shandle2, - ESYS_TR shandle3, - TPM2B_PUBLIC ** outPublic, - TPM2B_NAME ** name, - TPM2B_NAME ** qualifiedName); -static TSS2_RC(*_gnutls_tss2_Esys_Load) (ESYS_CONTEXT * esysContext, + ESYS_TR *object); +static TSS2_RC (*_gnutls_tss2_Esys_ReadPublic)( + ESYS_CONTEXT *esysContext, ESYS_TR objectHandle, ESYS_TR shandle1, + ESYS_TR shandle2, ESYS_TR shandle3, TPM2B_PUBLIC **outPublic, + TPM2B_NAME **name, TPM2B_NAME **qualifiedName); +static TSS2_RC (*_gnutls_tss2_Esys_Load)(ESYS_CONTEXT *esysContext, ESYS_TR parentHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, - const TPM2B_PRIVATE * inPrivate, - const TPM2B_PUBLIC * inPublic, - ESYS_TR * objectHandle); -static TSS2_RC(*_gnutls_tss2_Esys_FlushContext) (ESYS_CONTEXT * esysContext, + const TPM2B_PRIVATE *inPrivate, + const TPM2B_PUBLIC *inPublic, + ESYS_TR *objectHandle); +static TSS2_RC (*_gnutls_tss2_Esys_FlushContext)(ESYS_CONTEXT *esysContext, ESYS_TR flushHandle); -static void (*_gnutls_tss2_Esys_Finalize)(ESYS_CONTEXT ** context); -static TSS2_RC - (*_gnutls_tss2_Esys_RSA_Decrypt) (ESYS_CONTEXT * esysContext, - ESYS_TR keyHandle, - ESYS_TR shandle1, - ESYS_TR shandle2, - ESYS_TR shandle3, - const TPM2B_PUBLIC_KEY_RSA * cipherText, - const TPMT_RSA_DECRYPT * inScheme, - const TPM2B_DATA * label, - TPM2B_PUBLIC_KEY_RSA ** message); -static TSS2_RC(*_gnutls_tss2_Esys_Sign) (ESYS_CONTEXT * esysContext, - ESYS_TR keyHandle, - ESYS_TR shandle1, - ESYS_TR shandle2, - ESYS_TR shandle3, - const TPM2B_DIGEST * digest, - const TPMT_SIG_SCHEME * inScheme, - const TPMT_TK_HASHCHECK * validation, - TPMT_SIGNATURE ** signature); - -static TSS2_RC - (*_gnutls_tss2_Tss2_MU_TPM2B_PRIVATE_Unmarshal) (uint8_t const buffer[], - size_t buffer_size, - size_t *offset, - TPM2B_PRIVATE * dest); -static TSS2_RC - (*_gnutls_tss2_Tss2_MU_TPM2B_PUBLIC_Unmarshal) (uint8_t const buffer[], - size_t buffer_size, - size_t *offset, - TPM2B_PUBLIC * dest); - -static TSS2_RC - (*_gnutls_tss2_Tss2_TctiLdr_Initialize) (const char *nameConf, - TSS2_TCTI_CONTEXT ** context); -static void (*_gnutls_tss2_Tss2_TctiLdr_Finalize)(TSS2_TCTI_CONTEXT ** context); +static void (*_gnutls_tss2_Esys_Finalize)(ESYS_CONTEXT **context); +static TSS2_RC (*_gnutls_tss2_Esys_RSA_Decrypt)( + ESYS_CONTEXT *esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, + ESYS_TR shandle2, ESYS_TR shandle3, + const TPM2B_PUBLIC_KEY_RSA *cipherText, + const TPMT_RSA_DECRYPT *inScheme, const TPM2B_DATA *label, + TPM2B_PUBLIC_KEY_RSA **message); +static TSS2_RC (*_gnutls_tss2_Esys_Sign)(ESYS_CONTEXT *esysContext, + ESYS_TR keyHandle, ESYS_TR shandle1, + ESYS_TR shandle2, ESYS_TR shandle3, + const TPM2B_DIGEST *digest, + const TPMT_SIG_SCHEME *inScheme, + const TPMT_TK_HASHCHECK *validation, + TPMT_SIGNATURE **signature); + +static TSS2_RC (*_gnutls_tss2_Tss2_MU_TPM2B_PRIVATE_Unmarshal)( + uint8_t const buffer[], size_t buffer_size, size_t *offset, + TPM2B_PRIVATE *dest); +static TSS2_RC (*_gnutls_tss2_Tss2_MU_TPM2B_PUBLIC_Unmarshal)( + uint8_t const buffer[], size_t buffer_size, size_t *offset, + TPM2B_PUBLIC *dest); + +static TSS2_RC (*_gnutls_tss2_Tss2_TctiLdr_Initialize)( + const char *nameConf, TSS2_TCTI_CONTEXT **context); +static void (*_gnutls_tss2_Tss2_TctiLdr_Finalize)(TSS2_TCTI_CONTEXT **context); #endif -#define DLSYM_TSS2(sys, sym) \ +#define DLSYM_TSS2(sys, sym) \ _gnutls_tss2_##sym = dlsym(_gnutls_tss2_##sys##_dlhandle, #sym); \ - if (!_gnutls_tss2_##sym) { \ - return -1; \ + if (!_gnutls_tss2_##sym) { \ + return -1; \ } static int init_tss2_funcs(void) { if (!_gnutls_tss2_esys_dlhandle) { _gnutls_tss2_esys_dlhandle = - dlopen("libtss2-esys.so.0", RTLD_NOW | RTLD_GLOBAL); + dlopen("libtss2-esys.so.0", RTLD_NOW | RTLD_GLOBAL); if (!_gnutls_tss2_esys_dlhandle) { - _gnutls_debug_log - ("tpm2: unable to dlopen libtss2-esys\n"); + _gnutls_debug_log( + "tpm2: unable to dlopen libtss2-esys\n"); return -1; } } DLSYM_TSS2(esys, Esys_GetCapability) - DLSYM_TSS2(esys, Esys_Free) - DLSYM_TSS2(esys, Esys_TR_SetAuth) - DLSYM_TSS2(esys, Esys_CreatePrimary) - DLSYM_TSS2(esys, Esys_Initialize) - DLSYM_TSS2(esys, Esys_Startup) - DLSYM_TSS2(esys, Esys_TR_FromTPMPublic) - DLSYM_TSS2(esys, Esys_ReadPublic) - DLSYM_TSS2(esys, Esys_Load) - DLSYM_TSS2(esys, Esys_FlushContext) - DLSYM_TSS2(esys, Esys_Finalize) - DLSYM_TSS2(esys, Esys_RSA_Decrypt) - DLSYM_TSS2(esys, Esys_Sign) - if (!_gnutls_tss2_mu_dlhandle) { + DLSYM_TSS2(esys, Esys_Free) + DLSYM_TSS2(esys, Esys_TR_SetAuth) + DLSYM_TSS2(esys, Esys_CreatePrimary) + DLSYM_TSS2(esys, Esys_Initialize) + DLSYM_TSS2(esys, Esys_Startup) + DLSYM_TSS2(esys, Esys_TR_FromTPMPublic) + DLSYM_TSS2(esys, Esys_ReadPublic) + DLSYM_TSS2(esys, Esys_Load) + DLSYM_TSS2(esys, Esys_FlushContext) + DLSYM_TSS2(esys, Esys_Finalize) + DLSYM_TSS2(esys, Esys_RSA_Decrypt) + DLSYM_TSS2(esys, Esys_Sign) + if (!_gnutls_tss2_mu_dlhandle) { _gnutls_tss2_mu_dlhandle = - dlopen("libtss2-mu.so.0", RTLD_NOW | RTLD_GLOBAL); + dlopen("libtss2-mu.so.0", RTLD_NOW | RTLD_GLOBAL); if (!_gnutls_tss2_mu_dlhandle) { - _gnutls_debug_log - ("tpm2: unable to dlopen libtss2-mu\n"); + _gnutls_debug_log( + "tpm2: unable to dlopen libtss2-mu\n"); return -1; } } DLSYM_TSS2(mu, Tss2_MU_TPM2B_PRIVATE_Unmarshal) - DLSYM_TSS2(mu, Tss2_MU_TPM2B_PUBLIC_Unmarshal) - if (!_gnutls_tss2_tctildr_dlhandle) { + DLSYM_TSS2(mu, Tss2_MU_TPM2B_PUBLIC_Unmarshal) + if (!_gnutls_tss2_tctildr_dlhandle) { _gnutls_tss2_tctildr_dlhandle = - dlopen("libtss2-tctildr.so.0", RTLD_NOW | RTLD_GLOBAL); + dlopen("libtss2-tctildr.so.0", RTLD_NOW | RTLD_GLOBAL); if (!_gnutls_tss2_tctildr_dlhandle) { - _gnutls_debug_log - ("tpm2: unable to dlopen libtss2-tctildr\n"); + _gnutls_debug_log( + "tpm2: unable to dlopen libtss2-tctildr\n"); return -1; } } DLSYM_TSS2(tctildr, Tss2_TctiLdr_Initialize) - DLSYM_TSS2(tctildr, Tss2_TctiLdr_Finalize) - return 0; + DLSYM_TSS2(tctildr, Tss2_TctiLdr_Finalize) + return 0; } struct tpm2_info_st { @@ -290,13 +260,10 @@ struct tpm2_info_st { static TSS2_TCTI_CONTEXT *tcti_ctx; #define PRIMARY_HASH_ALGORITHM TPM2_ALG_SHA256 -#define PRIMARY_OBJECT_ATTRIBUTES (TPMA_OBJECT_USERWITHAUTH | \ - TPMA_OBJECT_RESTRICTED | \ - TPMA_OBJECT_DECRYPT | \ - TPMA_OBJECT_NODA | \ - TPMA_OBJECT_FIXEDTPM | \ - TPMA_OBJECT_FIXEDPARENT | \ - TPMA_OBJECT_SENSITIVEDATAORIGIN) +#define PRIMARY_OBJECT_ATTRIBUTES \ + (TPMA_OBJECT_USERWITHAUTH | TPMA_OBJECT_RESTRICTED | \ + TPMA_OBJECT_DECRYPT | TPMA_OBJECT_NODA | TPMA_OBJECT_FIXEDTPM | \ + TPMA_OBJECT_FIXEDPARENT | TPMA_OBJECT_SENSITIVEDATAORIGIN) static const TPM2B_PUBLIC primary_template_rsa = { .publicArea = { @@ -382,8 +349,8 @@ static const TPML_PCR_SELECTION all_creation_pcr = { .count = 0, }; -#define rc_is_key_auth_failed(rc) (((rc) & 0xff) == TPM2_RC_BAD_AUTH) -#define rc_is_parent_auth_failed(rc) (((rc) & 0xff) == TPM2_RC_AUTH_FAIL) +#define rc_is_key_auth_failed(rc) (((rc)&0xff) == TPM2_RC_BAD_AUTH) +#define rc_is_parent_auth_failed(rc) (((rc)&0xff) == TPM2_RC_AUTH_FAIL) struct tpm2_info_st *tpm2_info_init(struct pin_info_st *pin) { @@ -414,7 +381,7 @@ static int tpm2_pin(struct pin_info_st *pin_info, const char *url, return ret; } -static void install_tpm_passphrase(TPM2B_DIGEST * auth, char *pass) +static void install_tpm_passphrase(TPM2B_DIGEST *auth, char *pass) { if (strlen(pass) > sizeof(auth->buffer) - 1) { _gnutls_debug_log("tpm2: password too long; truncating\n"); @@ -427,14 +394,13 @@ static void install_tpm_passphrase(TPM2B_DIGEST * auth, char *pass) /* Figure out usable primary template according to the capabilities of * the TPM chip; ECC is preferred over RSA for performance reasons. */ -static const TPM2B_PUBLIC *get_primary_template(ESYS_CONTEXT * ctx) +static const TPM2B_PUBLIC *get_primary_template(ESYS_CONTEXT *ctx) { TPMS_CAPABILITY_DATA *capability_data; UINT32 i; TSS2_RC rc; - rc = _gnutls_tss2_Esys_GetCapability(ctx, - ESYS_TR_NONE, ESYS_TR_NONE, + rc = _gnutls_tss2_Esys_GetCapability(ctx, ESYS_TR_NONE, ESYS_TR_NONE, ESYS_TR_NONE, TPM2_CAP_ALGS, 0, TPM2_MAX_CAP_ALGS, NULL, &capability_data); @@ -499,8 +465,8 @@ static ESYS_TR tpm2_hierarchy_to_esys_handle(TPM2_RH hierarchy) } } -static int init_tpm2_primary(struct tpm2_info_st *info, - ESYS_CONTEXT * ctx, ESYS_TR * primary_handle) +static int init_tpm2_primary(struct tpm2_info_st *info, ESYS_CONTEXT *ctx, + ESYS_TR *primary_handle) { TSS2_RC rc; const char *hierarchy_name; @@ -516,13 +482,13 @@ static int init_tpm2_primary(struct tpm2_info_st *info, _gnutls_debug_log("tpm2: creating primary key under %s hierarchy\n", hierarchy_name); - reauth: +reauth: if (info->need_ownerauth) { char pass[GNUTLS_PKCS11_MAX_PIN_LEN]; - if (tpm2_pin(info->pin_info, "tpm2:", hierarchy_name, - pass, sizeof(pass))) { - return - gnutls_assert_val(GNUTLS_E_TPM_KEY_PASSWORD_ERROR); + if (tpm2_pin(info->pin_info, "tpm2:", hierarchy_name, pass, + sizeof(pass))) { + return gnutls_assert_val( + GNUTLS_E_TPM_KEY_PASSWORD_ERROR); } install_tpm_passphrase(&info->ownerauth, pass); info->need_ownerauth = false; @@ -536,16 +502,13 @@ static int init_tpm2_primary(struct tpm2_info_st *info, if (!primary_template) { return gnutls_assert_val(GNUTLS_E_TPM_ERROR); } - rc = _gnutls_tss2_Esys_CreatePrimary(ctx, hierarchy, - ESYS_TR_PASSWORD, ESYS_TR_NONE, - ESYS_TR_NONE, &primary_sensitive, - primary_template, - &all_outside_info, - &all_creation_pcr, primary_handle, - NULL, NULL, NULL, NULL); + rc = _gnutls_tss2_Esys_CreatePrimary( + ctx, hierarchy, ESYS_TR_PASSWORD, ESYS_TR_NONE, ESYS_TR_NONE, + &primary_sensitive, primary_template, &all_outside_info, + &all_creation_pcr, primary_handle, NULL, NULL, NULL, NULL); if (rc_is_key_auth_failed(rc)) { - _gnutls_debug_log - ("tpm2: Esys_CreatePrimary owner auth failed\n"); + _gnutls_debug_log( + "tpm2: Esys_CreatePrimary owner auth failed\n"); info->need_ownerauth = true; goto reauth; } else if (rc) { @@ -556,10 +519,12 @@ static int init_tpm2_primary(struct tpm2_info_st *info, return 0; } -#define parent_is_generated(parent) ((parent) >> TPM2_HR_SHIFT == TPM2_HT_PERMANENT) -#define parent_is_persistent(parent) ((parent) >> TPM2_HR_SHIFT == TPM2_HT_PERSISTENT) +#define parent_is_generated(parent) \ + ((parent) >> TPM2_HR_SHIFT == TPM2_HT_PERMANENT) +#define parent_is_persistent(parent) \ + ((parent) >> TPM2_HR_SHIFT == TPM2_HT_PERSISTENT) -static int init_tpm2_key(ESYS_CONTEXT ** ctx, ESYS_TR * key_handle, +static int init_tpm2_key(ESYS_CONTEXT **ctx, ESYS_TR *key_handle, struct tpm2_info_st *info) { ESYS_TR parent_handle = ESYS_TR_NONE; @@ -578,8 +543,8 @@ static int init_tpm2_key(ESYS_CONTEXT ** ctx, ESYS_TR * key_handle, rc = _gnutls_tss2_Esys_Startup(*ctx, TPM2_SU_CLEAR); if (rc == TPM2_RC_INITIALIZE) { - _gnutls_debug_log - ("tpm2: was already started up thus false positive failing in tpm2tss log\n"); + _gnutls_debug_log( + "tpm2: was already started up thus false positive failing in tpm2tss log\n"); } else if (rc) { gnutls_assert(); _gnutls_debug_log("tpm2: Esys_Startup failed: 0x%x\n", rc); @@ -592,16 +557,14 @@ static int init_tpm2_key(ESYS_CONTEXT ** ctx, ESYS_TR * key_handle, goto error; } } else { - rc = _gnutls_tss2_Esys_TR_FromTPMPublic(*ctx, info->parent, - ESYS_TR_NONE, - ESYS_TR_NONE, - ESYS_TR_NONE, - &parent_handle); + rc = _gnutls_tss2_Esys_TR_FromTPMPublic( + *ctx, info->parent, ESYS_TR_NONE, ESYS_TR_NONE, + ESYS_TR_NONE, &parent_handle); if (rc) { gnutls_assert(); - _gnutls_debug_log - ("tpm2: Esys_TR_FromTPMPublic failed for parent 0x%x: 0x%x\n", - info->parent, rc); + _gnutls_debug_log( + "tpm2: Esys_TR_FromTPMPublic failed for parent 0x%x: 0x%x\n", + info->parent, rc); goto error; } /* If we don't already have a password (and haven't already authenticated @@ -611,26 +574,22 @@ static int init_tpm2_key(ESYS_CONTEXT ** ctx, ESYS_TR * key_handle, if (!info->did_ownerauth && !info->ownerauth.size) { TPM2B_PUBLIC *pub = NULL; - rc = _gnutls_tss2_Esys_ReadPublic(*ctx, parent_handle, - ESYS_TR_NONE, - ESYS_TR_NONE, - ESYS_TR_NONE, - &pub, NULL, NULL); - if (!rc && - !(pub-> - publicArea.objectAttributes & TPMA_OBJECT_NODA)) { + rc = _gnutls_tss2_Esys_ReadPublic( + *ctx, parent_handle, ESYS_TR_NONE, ESYS_TR_NONE, + ESYS_TR_NONE, &pub, NULL, NULL); + if (!rc && !(pub->publicArea.objectAttributes & + TPMA_OBJECT_NODA)) { info->need_ownerauth = true; } _gnutls_tss2_Esys_Free(pub); } - reauth: + reauth: if (info->need_ownerauth) { char pass[GNUTLS_PKCS11_MAX_PIN_LEN]; - if (tpm2_pin(info->pin_info, "tpm2:", "parent", - pass, sizeof(pass))) { - return - gnutls_assert_val - (GNUTLS_E_TPM_KEY_PASSWORD_ERROR); + if (tpm2_pin(info->pin_info, "tpm2:", "parent", pass, + sizeof(pass))) { + return gnutls_assert_val( + GNUTLS_E_TPM_KEY_PASSWORD_ERROR); } install_tpm_passphrase(&info->ownerauth, pass); info->need_ownerauth = false; @@ -639,8 +598,8 @@ static int init_tpm2_key(ESYS_CONTEXT ** ctx, ESYS_TR * key_handle, &info->ownerauth); if (rc) { gnutls_assert(); - _gnutls_debug_log - ("tpm2: Esys_TR_SetAuth failed: 0x%x\n", rc); + _gnutls_debug_log( + "tpm2: Esys_TR_SetAuth failed: 0x%x\n", rc); goto error; } } @@ -648,10 +607,9 @@ static int init_tpm2_key(ESYS_CONTEXT ** ctx, ESYS_TR * key_handle, _gnutls_debug_log("tpm2: loading TPM2 key blob, parent handle 0x%x\n", parent_handle); - rc = _gnutls_tss2_Esys_Load(*ctx, parent_handle, - ESYS_TR_PASSWORD, ESYS_TR_NONE, - ESYS_TR_NONE, &info->priv, &info->pub, - key_handle); + rc = _gnutls_tss2_Esys_Load(*ctx, parent_handle, ESYS_TR_PASSWORD, + ESYS_TR_NONE, ESYS_TR_NONE, &info->priv, + &info->pub, key_handle); if (rc_is_parent_auth_failed(rc)) { gnutls_assert(); _gnutls_debug_log("tpm2: Esys_Load auth failed\n"); @@ -668,16 +626,17 @@ static int init_tpm2_key(ESYS_CONTEXT ** ctx, ESYS_TR * key_handle, if (parent_is_generated(info->parent)) { rc = _gnutls_tss2_Esys_FlushContext(*ctx, parent_handle); if (rc) { - _gnutls_debug_log - ("tpm2: Esys_FlushContext for generated primary failed: 0x%x\n", - rc); + _gnutls_debug_log( + "tpm2: Esys_FlushContext for generated primary failed: 0x%x\n", + rc); } /* But it's non-fatal. */ } return 0; - error: - if (parent_is_generated(info->parent) && parent_handle != ESYS_TR_NONE) { +error: + if (parent_is_generated(info->parent) && + parent_handle != ESYS_TR_NONE) { _gnutls_tss2_Esys_FlushContext(*ctx, parent_handle); } if (*key_handle != ESYS_TR_NONE) { @@ -689,17 +648,17 @@ static int init_tpm2_key(ESYS_CONTEXT ** ctx, ESYS_TR * key_handle, return GNUTLS_E_TPM_ERROR; } -static int -auth_tpm2_key(struct tpm2_info_st *info, ESYS_CONTEXT * ctx, ESYS_TR key_handle) +static int auth_tpm2_key(struct tpm2_info_st *info, ESYS_CONTEXT *ctx, + ESYS_TR key_handle) { TSS2_RC rc; if (info->need_userauth) { char pass[GNUTLS_PKCS11_MAX_PIN_LEN]; - if (tpm2_pin(info->pin_info, "tpm2:", "key", - pass, sizeof(pass))) { - return - gnutls_assert_val(GNUTLS_E_TPM_KEY_PASSWORD_ERROR); + if (tpm2_pin(info->pin_info, "tpm2:", "key", pass, + sizeof(pass))) { + return gnutls_assert_val( + GNUTLS_E_TPM_KEY_PASSWORD_ERROR); } install_tpm_passphrase(&info->userauth, pass); @@ -716,14 +675,14 @@ auth_tpm2_key(struct tpm2_info_st *info, ESYS_CONTEXT * ctx, ESYS_TR key_handle) int tpm2_rsa_sign_hash_fn(gnutls_privkey_t key, gnutls_sign_algorithm_t algo, void *_info, unsigned int flags, - const gnutls_datum_t * data, gnutls_datum_t * sig) + const gnutls_datum_t *data, gnutls_datum_t *sig) { struct tpm2_info_st *info = _info; int ret; ESYS_CONTEXT *ectx = NULL; TPM2B_PUBLIC_KEY_RSA digest, *tsig = NULL; - TPM2B_DATA label = {.size = 0 }; - TPMT_RSA_DECRYPT in_scheme = {.scheme = TPM2_ALG_NULL }; + TPM2B_DATA label = { .size = 0 }; + TPMT_RSA_DECRYPT in_scheme = { .scheme = TPM2_ALG_NULL }; ESYS_TR key_handle = ESYS_TR_NONE; const gnutls_sign_entry_st *se; gnutls_x509_spki_st params; @@ -749,10 +708,8 @@ int tpm2_rsa_sign_hash_fn(gnutls_privkey_t key, gnutls_sign_algorithm_t algo, } flags |= GNUTLS_PRIVKEY_SIGN_FLAG_RSA_PSS; - ret = _gnutls_privkey_update_spki_params(key, - key->pk_algorithm, - se->hash, flags, - ¶ms); + ret = _gnutls_privkey_update_spki_params( + key, key->pk_algorithm, se->hash, flags, ¶ms); if (ret < 0) { return gnutls_assert_val(ret); } @@ -761,16 +718,15 @@ int tpm2_rsa_sign_hash_fn(gnutls_privkey_t key, gnutls_sign_algorithm_t algo, digest.size = info->pub.publicArea.unique.rsa.size; ret = _gnutls_rsa_pss_sign_pad(¶ms, tpm2_rsa_key_bits(info), - data, - digest.buffer, digest.size); + data, digest.buffer, + digest.size); if (ret < 0) { return gnutls_assert_val(GNUTLS_E_PK_SIGN_FAILED); } break; case GNUTLS_PK_RSA: digest.size = info->pub.publicArea.unique.rsa.size; - ret = _gnutls_rsa_pkcs1_sign_pad(tpm2_rsa_key_bits(info), - data, + ret = _gnutls_rsa_pkcs1_sign_pad(tpm2_rsa_key_bits(info), data, digest.buffer, digest.size); if (ret < 0) { return gnutls_assert_val(GNUTLS_E_PK_SIGN_FAILED); @@ -785,17 +741,16 @@ int tpm2_rsa_sign_hash_fn(gnutls_privkey_t key, gnutls_sign_algorithm_t algo, gnutls_assert(); goto out; } - reauth: +reauth: ret = auth_tpm2_key(info, ectx, key_handle); if (ret < 0) { gnutls_assert(); goto out; } - rc = _gnutls_tss2_Esys_RSA_Decrypt(ectx, key_handle, - ESYS_TR_PASSWORD, ESYS_TR_NONE, - ESYS_TR_NONE, &digest, &in_scheme, - &label, &tsig); + rc = _gnutls_tss2_Esys_RSA_Decrypt(ectx, key_handle, ESYS_TR_PASSWORD, + ESYS_TR_NONE, ESYS_TR_NONE, &digest, + &in_scheme, &label, &tsig); if (rc_is_key_auth_failed(rc)) { gnutls_assert(); _gnutls_debug_log("tpm2: Esys_RSA_Decrypt auth failed\n"); @@ -804,13 +759,13 @@ int tpm2_rsa_sign_hash_fn(gnutls_privkey_t key, gnutls_sign_algorithm_t algo, } if (rc) { gnutls_assert(); - _gnutls_debug_log - ("tpm2: failed to generate RSA signature: 0x%x\n", rc); + _gnutls_debug_log( + "tpm2: failed to generate RSA signature: 0x%x\n", rc); goto out; } ret = _gnutls_set_datum(sig, tsig->buffer, tsig->size); - out: +out: _gnutls_tss2_Esys_Free(tsig); if (key_handle != ESYS_TR_NONE) { @@ -826,7 +781,7 @@ int tpm2_rsa_sign_hash_fn(gnutls_privkey_t key, gnutls_sign_algorithm_t algo, int tpm2_ec_sign_hash_fn(gnutls_privkey_t key, gnutls_sign_algorithm_t algo, void *_info, unsigned int flags, - const gnutls_datum_t * data, gnutls_datum_t * sig) + const gnutls_datum_t *data, gnutls_datum_t *sig) { struct tpm2_info_st *info = _info; int ret; @@ -835,11 +790,10 @@ int tpm2_ec_sign_hash_fn(gnutls_privkey_t key, gnutls_sign_algorithm_t algo, TPMT_SIGNATURE *tsig = NULL; ESYS_TR key_handle = ESYS_TR_NONE; TSS2_RC rc; - TPMT_TK_HASHCHECK validation = {.tag = TPM2_ST_HASHCHECK, - .hierarchy = TPM2_RH_NULL, - .digest.size = 0 - }; - TPMT_SIG_SCHEME in_scheme = {.scheme = TPM2_ALG_ECDSA }; + TPMT_TK_HASHCHECK validation = { .tag = TPM2_ST_HASHCHECK, + .hierarchy = TPM2_RH_NULL, + .digest.size = 0 }; + TPMT_SIG_SCHEME in_scheme = { .scheme = TPM2_ALG_ECDSA }; gnutls_datum_t sig_r, sig_s; _gnutls_debug_log("tpm2: EC sign function called for %d bytes\n", @@ -875,25 +829,24 @@ int tpm2_ec_sign_hash_fn(gnutls_privkey_t key, gnutls_sign_algorithm_t algo, gnutls_assert(); goto out; } - reauth: +reauth: ret = auth_tpm2_key(info, ectx, key_handle); if (ret < 0) { gnutls_assert(); goto out; } - rc = _gnutls_tss2_Esys_Sign(ectx, key_handle, - ESYS_TR_PASSWORD, ESYS_TR_NONE, - ESYS_TR_NONE, &digest, &in_scheme, - &validation, &tsig); + rc = _gnutls_tss2_Esys_Sign(ectx, key_handle, ESYS_TR_PASSWORD, + ESYS_TR_NONE, ESYS_TR_NONE, &digest, + &in_scheme, &validation, &tsig); if (rc_is_key_auth_failed(rc)) { _gnutls_debug_log("tpm2: Esys_Sign auth failed\n"); info->need_userauth = true; goto reauth; } if (rc) { - _gnutls_debug_log - ("tpm2: failed to generate EC signature: 0x%x\n", rc); + _gnutls_debug_log( + "tpm2: failed to generate EC signature: 0x%x\n", rc); goto out; } @@ -903,7 +856,7 @@ int tpm2_ec_sign_hash_fn(gnutls_privkey_t key, gnutls_sign_algorithm_t algo, sig_s.size = tsig->signature.ecdsa.signatureS.size; ret = gnutls_encode_rs_value(sig, &sig_r, &sig_s); - out: +out: _gnutls_tss2_Esys_Free(tsig); if (key_handle != ESYS_TR_NONE) { @@ -922,36 +875,32 @@ GNUTLS_ONCE(tpm2_esys_once); static void tpm2_esys_once_init(void) { const char *tcti; - const char *const tcti_vars[] = { - "GNUTLS_TPM2_TCTI", - "TPM2TOOLS_TCTI", - "TCTI", - "TEST_TCTI" - }; + const char *const tcti_vars[] = { "GNUTLS_TPM2_TCTI", "TPM2TOOLS_TCTI", + "TCTI", "TEST_TCTI" }; size_t i; TSS2_RC rc; if (init_tss2_funcs() < 0) { - _gnutls_debug_log - ("tpm2: unable to initialize TSS2 functions\n"); + _gnutls_debug_log( + "tpm2: unable to initialize TSS2 functions\n"); return; } for (i = 0; i < sizeof(tcti_vars) / sizeof(tcti_vars[0]); i++) { tcti = secure_getenv(tcti_vars[i]); if (tcti && *tcti != '\0') { - _gnutls_debug_log - ("tpm2: TCTI configuration found in %s\n", - tcti_vars[i]); + _gnutls_debug_log( + "tpm2: TCTI configuration found in %s\n", + tcti_vars[i]); break; } } if (tcti && *tcti != '\0') { rc = _gnutls_tss2_Tss2_TctiLdr_Initialize(tcti, &tcti_ctx); if (rc) { - _gnutls_debug_log - ("tpm2: TSS2_TctiLdr_Initialize failed: 0x%x\n", - rc); + _gnutls_debug_log( + "tpm2: TSS2_TctiLdr_Initialize failed: 0x%x\n", + rc); } } } @@ -979,7 +928,7 @@ void tpm2_esys_deinit(void) int install_tpm2_key(struct tpm2_info_st *info, gnutls_privkey_t pkey, unsigned int parent, bool emptyauth, - gnutls_datum_t * privdata, gnutls_datum_t * pubdata) + gnutls_datum_t *privdata, gnutls_datum_t *pubdata) { TSS2_RC rc; @@ -989,9 +938,9 @@ int install_tpm2_key(struct tpm2_info_st *info, gnutls_privkey_t pkey, return gnutls_assert_val(GNUTLS_E_TPM_ERROR); } - if (!parent_is_persistent(parent) && - parent != TPM2_RH_OWNER && parent != TPM2_RH_NULL && - parent != TPM2_RH_ENDORSEMENT && parent != TPM2_RH_PLATFORM) { + if (!parent_is_persistent(parent) && parent != TPM2_RH_OWNER && + parent != TPM2_RH_NULL && parent != TPM2_RH_ENDORSEMENT && + parent != TPM2_RH_PLATFORM) { _gnutls_debug_log("tpm2: Invalid TPM2 parent handle 0x%08x\n", parent); return gnutls_assert_val(GNUTLS_E_TPM_ERROR); @@ -999,21 +948,19 @@ int install_tpm2_key(struct tpm2_info_st *info, gnutls_privkey_t pkey, info->parent = parent; - rc = _gnutls_tss2_Tss2_MU_TPM2B_PRIVATE_Unmarshal(privdata->data, - privdata->size, NULL, - &info->priv); + rc = _gnutls_tss2_Tss2_MU_TPM2B_PRIVATE_Unmarshal( + privdata->data, privdata->size, NULL, &info->priv); if (rc) { - _gnutls_debug_log - ("tpm2: failed to import private key data: 0x%x\n", rc); + _gnutls_debug_log( + "tpm2: failed to import private key data: 0x%x\n", rc); return gnutls_assert_val(GNUTLS_E_TPM_ERROR); } - rc = _gnutls_tss2_Tss2_MU_TPM2B_PUBLIC_Unmarshal(pubdata->data, - pubdata->size, NULL, - &info->pub); + rc = _gnutls_tss2_Tss2_MU_TPM2B_PUBLIC_Unmarshal( + pubdata->data, pubdata->size, NULL, &info->pub); if (rc) { - _gnutls_debug_log - ("tpm2: failed to import public key data: 0x%x\n", rc); + _gnutls_debug_log( + "tpm2: failed to import public key data: 0x%x\n", rc); return gnutls_assert_val(GNUTLS_E_TPM_ERROR); } @@ -1075,8 +1022,8 @@ static gnutls_ecc_curve_t tpm2_curve_to_gnutls_curve(TPMI_ECC_CURVE curve) } } -static int -convert_public_rsa(struct tpm2_info_st *info, gnutls_pk_params_st * params) +static int convert_public_rsa(struct tpm2_info_st *info, + gnutls_pk_params_st *params) { int ret; UINT32 exponent; @@ -1106,8 +1053,8 @@ convert_public_rsa(struct tpm2_info_st *info, gnutls_pk_params_st * params) return 0; } -static int -convert_public_ecc(struct tpm2_info_st *info, gnutls_pk_params_st * params) +static int convert_public_ecc(struct tpm2_info_st *info, + gnutls_pk_params_st *params) { int ret; @@ -1119,13 +1066,13 @@ convert_public_ecc(struct tpm2_info_st *info, gnutls_pk_params_st * params) params->algo = GNUTLS_PK_ECDSA; params->params_nr = 2; - ret = _gnutls_mpi_init_scan_nz(¶ms->params[ECC_X], - point->x.buffer, point->x.size); + ret = _gnutls_mpi_init_scan_nz(¶ms->params[ECC_X], point->x.buffer, + point->x.size); if (ret < 0) { return gnutls_assert_val(ret); } - ret = _gnutls_mpi_init_scan_nz(¶ms->params[ECC_Y], - point->y.buffer, point->y.size); + ret = _gnutls_mpi_init_scan_nz(¶ms->params[ECC_Y], point->y.buffer, + point->y.size); if (ret < 0) { return gnutls_assert_val(ret); } @@ -1138,9 +1085,8 @@ convert_public_ecc(struct tpm2_info_st *info, gnutls_pk_params_st * params) return 0; } -int -tpm2_convert_public(gnutls_privkey_t key, - void *_info, gnutls_pk_params_st * params) +int tpm2_convert_public(gnutls_privkey_t key, void *_info, + gnutls_pk_params_st *params) { struct tpm2_info_st *info = _info; diff --git a/lib/urls.c b/lib/urls.c index 48060f355c..13c3dc2f3d 100644 --- a/lib/urls.c +++ b/lib/urls.c @@ -47,9 +47,8 @@ unsigned gnutls_url_is_supported(const char *url) unsigned i; for (i = 0; i < _gnutls_custom_urls_size; i++) { - if (c_strncasecmp - (url, _gnutls_custom_urls[i].name, - _gnutls_custom_urls[i].name_size) == 0) + if (c_strncasecmp(url, _gnutls_custom_urls[i].name, + _gnutls_custom_urls[i].name_size) == 0) return 1; } @@ -79,9 +78,9 @@ int _gnutls_url_is_known(const char *url) return 1; else { for (i = 0; i < _gnutls_custom_urls_size; i++) { - if (c_strncasecmp - (url, _gnutls_custom_urls[i].name, - _gnutls_custom_urls[i].name_size) == 0) + if (c_strncasecmp(url, _gnutls_custom_urls[i].name, + _gnutls_custom_urls[i].name_size) == + 0) return 1; } @@ -110,7 +109,7 @@ int _gnutls_url_is_known(const char *url) * * Since: 3.4.0 **/ -int gnutls_register_custom_url(const gnutls_custom_url_st * st) +int gnutls_register_custom_url(const gnutls_custom_url_st *st) { unsigned i; @@ -147,7 +146,7 @@ int gnutls_register_custom_url(const gnutls_custom_url_st * st) * Since: 3.4.0 -*/ int _gnutls_get_raw_issuer(const char *url, gnutls_x509_crt_t cert, - gnutls_datum_t * issuer, unsigned int flags) + gnutls_datum_t *issuer, unsigned int flags) { unsigned i; @@ -158,14 +157,11 @@ int _gnutls_get_raw_issuer(const char *url, gnutls_x509_crt_t cert, } #endif for (i = 0; i < _gnutls_custom_urls_size; i++) { - if (c_strncasecmp - (url, _gnutls_custom_urls[i].name, - _gnutls_custom_urls[i].name_size) == 0) { + if (c_strncasecmp(url, _gnutls_custom_urls[i].name, + _gnutls_custom_urls[i].name_size) == 0) { if (_gnutls_custom_urls[i].get_issuer) { - return _gnutls_custom_urls[i].get_issuer(url, - cert, - issuer, - flags); + return _gnutls_custom_urls[i].get_issuer( + url, cert, issuer, flags); } break; } diff --git a/lib/urls.h b/lib/urls.h index 7965ef9006..7d7d4d61bf 100644 --- a/lib/urls.h +++ b/lib/urls.h @@ -19,17 +19,17 @@ */ #ifndef GNUTLS_LIB_URLS_H -# define GNUTLS_LIB_URLS_H +#define GNUTLS_LIB_URLS_H -# define PKCS11_URL "pkcs11:" -# define SYSTEM_URL "system:" -# define TPMKEY_URL "tpmkey:" +#define PKCS11_URL "pkcs11:" +#define SYSTEM_URL "system:" +#define TPMKEY_URL "tpmkey:" -# define PKCS11_URL_SIZE (sizeof(PKCS11_URL)-1) -# define SYSTEM_URL_SIZE (sizeof(SYSTEM_URL)-1) -# define TPMKEY_URL_SIZE (sizeof(TPMKEY_URL)-1) +#define PKCS11_URL_SIZE (sizeof(PKCS11_URL) - 1) +#define SYSTEM_URL_SIZE (sizeof(SYSTEM_URL) - 1) +#define TPMKEY_URL_SIZE (sizeof(TPMKEY_URL) - 1) -# include +#include extern gnutls_custom_url_st _gnutls_custom_urls[]; extern unsigned _gnutls_custom_urls_size; @@ -37,6 +37,6 @@ extern unsigned _gnutls_custom_urls_size; int _gnutls_url_is_known(const char *url); int _gnutls_get_raw_issuer(const char *url, gnutls_x509_crt_t cert, - gnutls_datum_t * issuer, unsigned int flags); + gnutls_datum_t *issuer, unsigned int flags); -#endif /* GNUTLS_LIB_URLS_H */ +#endif /* GNUTLS_LIB_URLS_H */ diff --git a/lib/verify-tofu.c b/lib/verify-tofu.c index 6b4ccafab7..72dc3a277e 100644 --- a/lib/verify-tofu.c +++ b/lib/verify-tofu.c @@ -24,7 +24,7 @@ #include "errors.h" #include #include -#include /* MAX */ +#include /* MAX */ #include #include "str.h" #include @@ -43,28 +43,22 @@ struct gnutls_tdb_int { gnutls_tdb_verify_func verify; }; -static int raw_pubkey_to_base64(const gnutls_datum_t * raw, - gnutls_datum_t * b64); +static int raw_pubkey_to_base64(const gnutls_datum_t *raw, gnutls_datum_t *b64); static int verify_pubkey(const char *file, const char *host, - const char *service, const gnutls_datum_t * skey); - -static -int store_commitment(const char *db_name, const char *host, - const char *service, time_t expiration, - gnutls_digest_algorithm_t hash_algo, - const gnutls_datum_t * hash); -static -int store_pubkey(const char *db_name, const char *host, - const char *service, time_t expiration, - const gnutls_datum_t * pubkey); + const char *service, const gnutls_datum_t *skey); + +static int store_commitment(const char *db_name, const char *host, + const char *service, time_t expiration, + gnutls_digest_algorithm_t hash_algo, + const gnutls_datum_t *hash); +static int store_pubkey(const char *db_name, const char *host, + const char *service, time_t expiration, + const gnutls_datum_t *pubkey); static int find_config_file(char *file, size_t max_size); -struct gnutls_tdb_int default_tdb = { - store_pubkey, - store_commitment, - verify_pubkey -}; +struct gnutls_tdb_int default_tdb = { store_pubkey, store_commitment, + verify_pubkey }; /** * gnutls_verify_stored_pubkey: @@ -102,15 +96,14 @@ struct gnutls_tdb_int default_tdb = { * * Since: 3.0.13 **/ -int -gnutls_verify_stored_pubkey(const char *db_name, - gnutls_tdb_t tdb, - const char *host, - const char *service, - gnutls_certificate_type_t cert_type, - const gnutls_datum_t * cert, unsigned int flags) +int gnutls_verify_stored_pubkey(const char *db_name, gnutls_tdb_t tdb, + const char *host, const char *service, + gnutls_certificate_type_t cert_type, + const gnutls_datum_t *cert, unsigned int flags) { - gnutls_datum_t pubkey = { NULL, 0 }; // Holds the pubkey in subjectPublicKeyInfo format (DER encoded) + gnutls_datum_t pubkey = { + NULL, 0 + }; // Holds the pubkey in subjectPublicKeyInfo format (DER encoded) int ret; char local_file[MAX_FILENAME]; bool need_free; @@ -160,10 +153,9 @@ gnutls_verify_stored_pubkey(const char *db_name, return ret; } -static int parse_commitment_line(char *line, - const char *host, size_t host_len, +static int parse_commitment_line(char *line, const char *host, size_t host_len, const char *service, size_t service_len, - time_t now, const gnutls_datum_t * skey) + time_t now, const gnutls_datum_t *skey) { char *p, *kp; char *savep = NULL; @@ -195,7 +187,7 @@ static int parse_commitment_line(char *line, if (p == NULL) return gnutls_assert_val(GNUTLS_E_PARSING_ERROR); - expiration = (time_t) atol(p); + expiration = (time_t)atol(p); if (expiration > 0 && now > expiration) return gnutls_assert_val(GNUTLS_E_EXPIRED); @@ -218,16 +210,15 @@ static int parse_commitment_line(char *line, *p = 0; /* hash and hex encode */ - ret = - _gnutls_hash_fast((gnutls_digest_algorithm_t) hash_algo->id, - skey->data, skey->size, phash); + ret = _gnutls_hash_fast((gnutls_digest_algorithm_t)hash_algo->id, + skey->data, skey->size, phash); if (ret < 0) return gnutls_assert_val(ret); phash_size = _gnutls_hash_get_algo_len(hash_algo); - p = _gnutls_bin2hex(phash, phash_size, (void *)hphash, - sizeof(hphash), NULL); + p = _gnutls_bin2hex(phash, phash_size, (void *)hphash, sizeof(hphash), + NULL); if (p == NULL) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); @@ -242,12 +233,10 @@ static int parse_commitment_line(char *line, return 0; } -static int parse_line(char *line, - const char *host, size_t host_len, - const char *service, size_t service_len, - time_t now, - const gnutls_datum_t * rawkey, - const gnutls_datum_t * b64key) +static int parse_line(char *line, const char *host, size_t host_len, + const char *service, size_t service_len, time_t now, + const gnutls_datum_t *rawkey, + const gnutls_datum_t *b64key) { char *p, *kp; char *savep = NULL; @@ -260,8 +249,8 @@ static int parse_line(char *line, return gnutls_assert_val(GNUTLS_E_PARSING_ERROR); if (strncmp(p, "c0", 2) == 0) - return parse_commitment_line(p + 3, host, host_len, - service, service_len, now, rawkey); + return parse_commitment_line(p + 3, host, host_len, service, + service_len, now, rawkey); if (strncmp(p, "g0", 2) != 0) return gnutls_assert_val(GNUTLS_E_PARSING_ERROR); @@ -287,7 +276,7 @@ static int parse_line(char *line, if (p == NULL) return gnutls_assert_val(GNUTLS_E_PARSING_ERROR); - expiration = (time_t) atol(p); + expiration = (time_t)atol(p); if (expiration > 0 && now > expiration) return gnutls_assert_val(GNUTLS_E_EXPIRED); @@ -313,9 +302,8 @@ static int parse_line(char *line, /* Returns the base64 key if found */ -static int verify_pubkey(const char *file, - const char *host, const char *service, - const gnutls_datum_t * pubkey) +static int verify_pubkey(const char *file, const char *host, + const char *service, const gnutls_datum_t *pubkey) { FILE *fp; char *line = NULL; @@ -343,23 +331,21 @@ static int verify_pubkey(const char *file, do { l2 = getline(&line, &line_size, fp); if (l2 > 0) { - ret = - parse_line(line, host, host_len, service, - service_len, now, pubkey, &b64key); - if (ret == 0) { /* found */ + ret = parse_line(line, host, host_len, service, + service_len, now, pubkey, &b64key); + if (ret == 0) { /* found */ goto cleanup; } else if (ret == GNUTLS_E_CERTIFICATE_KEY_MISMATCH) mismatch = 1; } - } - while (l2 >= 0); + } while (l2 >= 0); if (mismatch) ret = GNUTLS_E_CERTIFICATE_KEY_MISMATCH; else ret = GNUTLS_E_NO_CERTIFICATE_FOUND; - cleanup: +cleanup: free(line); if (fp != NULL) fclose(fp); @@ -368,8 +354,7 @@ static int verify_pubkey(const char *file, return ret; } -static int raw_pubkey_to_base64(const gnutls_datum_t * raw, - gnutls_datum_t * b64) +static int raw_pubkey_to_base64(const gnutls_datum_t *raw, gnutls_datum_t *b64) { size_t size; @@ -385,10 +370,9 @@ static int raw_pubkey_to_base64(const gnutls_datum_t * raw, return 0; } -static -int store_pubkey(const char *db_name, const char *host, - const char *service, time_t expiration, - const gnutls_datum_t * pubkey) +static int store_pubkey(const char *db_name, const char *host, + const char *service, time_t expiration, + const gnutls_datum_t *pubkey) { FILE *fp = NULL; gnutls_datum_t b64key = { NULL, 0 }; @@ -420,7 +404,7 @@ int store_pubkey(const char *db_name, const char *host, ret = 0; - cleanup: +cleanup: if (fp != NULL) fclose(fp); @@ -430,11 +414,10 @@ int store_pubkey(const char *db_name, const char *host, return ret; } -static -int store_commitment(const char *db_name, const char *host, - const char *service, time_t expiration, - gnutls_digest_algorithm_t hash_algo, - const gnutls_datum_t * hash) +static int store_commitment(const char *db_name, const char *host, + const char *service, time_t expiration, + gnutls_digest_algorithm_t hash_algo, + const gnutls_datum_t *hash) { FILE *fp; char buffer[MAX_HASH_SIZE * 2 + 1]; @@ -450,8 +433,8 @@ int store_commitment(const char *db_name, const char *host, fprintf(fp, "|c0|%s|%s|%lu|%u|%s\n", host, service, (unsigned long)expiration, (unsigned)hash_algo, - _gnutls_bin2hex(hash->data, hash->size, buffer, - sizeof(buffer), NULL)); + _gnutls_bin2hex(hash->data, hash->size, buffer, sizeof(buffer), + NULL)); fclose(fp); @@ -491,16 +474,15 @@ int store_commitment(const char *db_name, const char *host, * * Since: 3.0.13 **/ -int -gnutls_store_pubkey(const char *db_name, - gnutls_tdb_t tdb, - const char *host, - const char *service, - gnutls_certificate_type_t cert_type, - const gnutls_datum_t * cert, - time_t expiration, unsigned int flags) +int gnutls_store_pubkey(const char *db_name, gnutls_tdb_t tdb, const char *host, + const char *service, + gnutls_certificate_type_t cert_type, + const gnutls_datum_t *cert, time_t expiration, + unsigned int flags) { - gnutls_datum_t pubkey = { NULL, 0 }; // Holds the pubkey in subjectPublicKeyInfo format (DER encoded) + gnutls_datum_t pubkey = { + NULL, 0 + }; // Holds the pubkey in subjectPublicKeyInfo format (DER encoded) int ret; char local_file[MAX_FILENAME]; bool need_free; @@ -586,14 +568,11 @@ gnutls_store_pubkey(const char *db_name, * * Since: 3.0 **/ -int -gnutls_store_commitment(const char *db_name, - gnutls_tdb_t tdb, - const char *host, - const char *service, - gnutls_digest_algorithm_t hash_algo, - const gnutls_datum_t * hash, - time_t expiration, unsigned int flags) +int gnutls_store_commitment(const char *db_name, gnutls_tdb_t tdb, + const char *host, const char *service, + gnutls_digest_algorithm_t hash_algo, + const gnutls_datum_t *hash, time_t expiration, + unsigned int flags) { int ret; char local_file[MAX_FILENAME]; @@ -602,8 +581,8 @@ gnutls_store_commitment(const char *db_name, if (me == NULL) return gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER); - if (!(flags & GNUTLS_SCOMMIT_FLAG_ALLOW_BROKEN) - && _gnutls_digest_is_secure(me) == 0) + if (!(flags & GNUTLS_SCOMMIT_FLAG_ALLOW_BROKEN) && + _gnutls_digest_is_secure(me) == 0) return gnutls_assert_val(GNUTLS_E_INSUFFICIENT_SECURITY); if (_gnutls_hash_get_algo_len(me) != hash->size) @@ -629,7 +608,7 @@ gnutls_store_commitment(const char *db_name, _gnutls_debug_log("Configuration file: %s\n", db_name); ret = tdb->cstore(db_name, host, service, expiration, - (gnutls_digest_algorithm_t) me->id, hash); + (gnutls_digest_algorithm_t)me->id, hash); if (ret < 0) { return gnutls_assert_val(GNUTLS_E_DB_ERROR); } @@ -665,7 +644,7 @@ static int find_config_file(char *file, size_t max_size) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int gnutls_tdb_init(gnutls_tdb_t * tdb) +int gnutls_tdb_init(gnutls_tdb_t *tdb) { *tdb = gnutls_calloc(1, sizeof(struct gnutls_tdb_int)); @@ -710,9 +689,8 @@ void gnutls_tdb_set_store_func(gnutls_tdb_t tdb, gnutls_tdb_store_func store) * The @db_name should be used to pass any private data to this function. * **/ -void gnutls_tdb_set_store_commitment_func(gnutls_tdb_t tdb, - gnutls_tdb_store_commitment_func - cstore) +void gnutls_tdb_set_store_commitment_func( + gnutls_tdb_t tdb, gnutls_tdb_store_commitment_func cstore) { tdb->cstore = cstore; } diff --git a/lib/vko.c b/lib/vko.c index 4f91d77ad4..c01664724a 100644 --- a/lib/vko.c +++ b/lib/vko.c @@ -28,11 +28,10 @@ #include "pk.h" #include "common.h" -static int -_gnutls_gost_vko_key(gnutls_pk_params_st * pub, - gnutls_pk_params_st * priv, - gnutls_datum_t * ukm, - gnutls_digest_algorithm_t digalg, gnutls_datum_t * kek) +static int _gnutls_gost_vko_key(gnutls_pk_params_st *pub, + gnutls_pk_params_st *priv, gnutls_datum_t *ukm, + gnutls_digest_algorithm_t digalg, + gnutls_datum_t *kek) { gnutls_datum_t tmp_vko_key; int ret; @@ -49,9 +48,8 @@ _gnutls_gost_vko_key(gnutls_pk_params_st * pub, goto cleanup; } - ret = - gnutls_hash_fast(digalg, tmp_vko_key.data, tmp_vko_key.size, - kek->data); + ret = gnutls_hash_fast(digalg, tmp_vko_key.data, tmp_vko_key.size, + kek->data); if (ret < 0) { gnutls_assert(); _gnutls_free_datum(kek); @@ -60,7 +58,7 @@ _gnutls_gost_vko_key(gnutls_pk_params_st * pub, ret = 0; - cleanup: +cleanup: _gnutls_free_temp_key_datum(&tmp_vko_key); return ret; @@ -68,11 +66,10 @@ _gnutls_gost_vko_key(gnutls_pk_params_st * pub, static const gnutls_datum_t zero_data = { NULL, 0 }; -int -_gnutls_gost_keytrans_encrypt(gnutls_pk_params_st * pub, - gnutls_pk_params_st * priv, - gnutls_datum_t * cek, - gnutls_datum_t * ukm, gnutls_datum_t * out) +int _gnutls_gost_keytrans_encrypt(gnutls_pk_params_st *pub, + gnutls_pk_params_st *priv, + gnutls_datum_t *cek, gnutls_datum_t *ukm, + gnutls_datum_t *out) { int ret; gnutls_datum_t kek; @@ -92,8 +89,8 @@ _gnutls_gost_keytrans_encrypt(gnutls_pk_params_st * pub, return ret; } - ret = _gnutls_gost_key_wrap(pub->gost_params, &kek, ukm, cek, - &enc, &imit); + ret = _gnutls_gost_key_wrap(pub->gost_params, &kek, ukm, cek, &enc, + &imit); _gnutls_free_key_datum(&kek); if (ret < 0) { gnutls_assert(); @@ -118,34 +115,31 @@ _gnutls_gost_keytrans_encrypt(gnutls_pk_params_st * pub, goto cleanup; } - ret = _gnutls_x509_encode_and_copy_PKI_params(kx, - "transportParameters.ephemeralPublicKey", - priv); + ret = _gnutls_x509_encode_and_copy_PKI_params( + kx, "transportParameters.ephemeralPublicKey", priv); if (ret < 0) { gnutls_assert(); goto cleanup; } - if ((ret = - asn1_write_value(kx, "transportParameters.encryptionParamSet", - gnutls_gost_paramset_get_oid(pub->gost_params), - 1)) != ASN1_SUCCESS) { + if ((ret = asn1_write_value( + kx, "transportParameters.encryptionParamSet", + gnutls_gost_paramset_get_oid(pub->gost_params), 1)) != + ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(ret); goto cleanup; } - ret = - _gnutls_x509_write_value(kx, "sessionEncryptedKey.encryptedKey", - &enc); + ret = _gnutls_x509_write_value(kx, "sessionEncryptedKey.encryptedKey", + &enc); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _gnutls_x509_write_value(kx, "sessionEncryptedKey.maskKey", - &zero_data); + ret = _gnutls_x509_write_value(kx, "sessionEncryptedKey.maskKey", + &zero_data); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -164,7 +158,7 @@ _gnutls_gost_keytrans_encrypt(gnutls_pk_params_st * pub, ret = 0; - cleanup: +cleanup: asn1_delete_structure(&kx); _gnutls_free_datum(&enc); _gnutls_free_datum(&imit); @@ -172,10 +166,9 @@ _gnutls_gost_keytrans_encrypt(gnutls_pk_params_st * pub, return ret; } -int -_gnutls_gost_keytrans_decrypt(gnutls_pk_params_st * priv, - gnutls_datum_t * cek, - gnutls_datum_t * ukm, gnutls_datum_t * out) +int _gnutls_gost_keytrans_decrypt(gnutls_pk_params_st *priv, + gnutls_datum_t *cek, gnutls_datum_t *ukm, + gnutls_datum_t *out) { int ret; asn1_node kx; @@ -187,8 +180,8 @@ _gnutls_gost_keytrans_decrypt(gnutls_pk_params_st * priv, gnutls_digest_algorithm_t digalg; if ((ret = asn1_create_element(_gnutls_get_gnutls_asn(), - "GNUTLS.GostR3410-KeyTransport", - &kx)) != ASN1_SUCCESS) { + "GNUTLS.GostR3410-KeyTransport", &kx)) != + ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(ret); @@ -204,25 +197,23 @@ _gnutls_gost_keytrans_decrypt(gnutls_pk_params_st * priv, return ret; } - ret = _gnutls_get_asn_mpis(kx, - "transportParameters.ephemeralPublicKey", + ret = _gnutls_get_asn_mpis(kx, "transportParameters.ephemeralPublicKey", &pub); if (ret < 0) { gnutls_assert(); goto cleanup; } - if (pub.algo != priv->algo || - pub.gost_params != priv->gost_params || pub.curve != priv->curve) { + if (pub.algo != priv->algo || pub.gost_params != priv->gost_params || + pub.curve != priv->curve) { gnutls_assert(); ret = GNUTLS_E_ILLEGAL_PARAMETER; goto cleanup; } oid_size = sizeof(oid); - ret = - asn1_read_value(kx, "transportParameters.encryptionParamSet", oid, - &oid_size); + ret = asn1_read_value(kx, "transportParameters.encryptionParamSet", oid, + &oid_size); if (ret != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(ret); @@ -248,8 +239,8 @@ _gnutls_gost_keytrans_decrypt(gnutls_pk_params_st * priv, * of any kind as all values are transmitted in cleartext. Returning * that this point won't give any information to the attacker. */ - if (ukm2.size != ukm->size - || memcmp(ukm2.data, ukm->data, ukm->size) != 0) { + if (ukm2.size != ukm->size || + memcmp(ukm2.data, ukm->data, ukm->size) != 0) { gnutls_assert(); _gnutls_free_datum(&ukm2); ret = GNUTLS_E_DECRYPTION_FAILED; @@ -282,8 +273,8 @@ _gnutls_gost_keytrans_decrypt(gnutls_pk_params_st * priv, goto cleanup2; } - ret = _gnutls_gost_key_unwrap(pub.gost_params, &kek, ukm, - &enc, &imit, out); + ret = _gnutls_gost_key_unwrap(pub.gost_params, &kek, ukm, &enc, &imit, + out); _gnutls_free_key_datum(&kek); if (ret < 0) { @@ -293,10 +284,10 @@ _gnutls_gost_keytrans_decrypt(gnutls_pk_params_st * priv, ret = 0; - cleanup2: +cleanup2: _gnutls_free_datum(&imit); _gnutls_free_datum(&enc); - cleanup: +cleanup: gnutls_pk_params_release(&pub); asn1_delete_structure(&kx); diff --git a/lib/vko.h b/lib/vko.h index c3681c79aa..4c85a2aed6 100644 --- a/lib/vko.h +++ b/lib/vko.h @@ -20,17 +20,15 @@ */ #ifndef GNUTLS_LIB_VKO_H -# define GNUTLS_LIB_VKO_H +#define GNUTLS_LIB_VKO_H -int -_gnutls_gost_keytrans_encrypt(gnutls_pk_params_st * pub, - gnutls_pk_params_st * priv, - gnutls_datum_t * cek, - gnutls_datum_t * ukm, gnutls_datum_t * out); +int _gnutls_gost_keytrans_encrypt(gnutls_pk_params_st *pub, + gnutls_pk_params_st *priv, + gnutls_datum_t *cek, gnutls_datum_t *ukm, + gnutls_datum_t *out); -int -_gnutls_gost_keytrans_decrypt(gnutls_pk_params_st * priv, - gnutls_datum_t * cek, - gnutls_datum_t * ukm, gnutls_datum_t * out); +int _gnutls_gost_keytrans_decrypt(gnutls_pk_params_st *priv, + gnutls_datum_t *cek, gnutls_datum_t *ukm, + gnutls_datum_t *out); -#endif /* GNUTLS_LIB_VKO_H */ +#endif /* GNUTLS_LIB_VKO_H */ diff --git a/lib/x509.h b/lib/x509.h index f70742e7c8..ed03fb9725 100644 --- a/lib/x509.h +++ b/lib/x509.h @@ -21,23 +21,23 @@ */ #ifndef GNUTLS_LIB_X509_H -# define GNUTLS_LIB_X509_H +#define GNUTLS_LIB_X509_H -# include +#include int _gnutls_x509_cert_verify_peers(gnutls_session_t session, - gnutls_typed_vdata_st * data, + gnutls_typed_vdata_st *data, unsigned int elements, unsigned int *status); -# define PEM_CERT_SEP2 "-----BEGIN X509 CERTIFICATE" -# define PEM_CERT_SEP "-----BEGIN CERTIFICATE" -# define PEM_OCSP_RESPONSE "-----BEGIN OCSP RESPONSE" -# define BARE_PEM_OCSP_RESPONSE "OCSP RESPONSE" +#define PEM_CERT_SEP2 "-----BEGIN X509 CERTIFICATE" +#define PEM_CERT_SEP "-----BEGIN CERTIFICATE" +#define PEM_OCSP_RESPONSE "-----BEGIN OCSP RESPONSE" +#define BARE_PEM_OCSP_RESPONSE "OCSP RESPONSE" -# define PEM_CRL_SEP "-----BEGIN X509 CRL" +#define PEM_CRL_SEP "-----BEGIN X509 CRL" -int _gnutls_x509_raw_privkey_to_gkey(gnutls_privkey_t * privkey, - const gnutls_datum_t * raw_key, +int _gnutls_x509_raw_privkey_to_gkey(gnutls_privkey_t *privkey, + const gnutls_datum_t *raw_key, gnutls_x509_crt_fmt_t type); -#endif /* GNUTLS_LIB_X509_H */ +#endif /* GNUTLS_LIB_X509_H */ diff --git a/lib/x509/attributes.c b/lib/x509/attributes.c index 5ca57a9b3e..37825eac2a 100644 --- a/lib/x509/attributes.c +++ b/lib/x509/attributes.c @@ -37,9 +37,8 @@ /* Overwrite the given attribute (using the index) * index here starts from one. */ -static int -overwrite_attribute(asn1_node asn, const char *root, unsigned indx, - const gnutls_datum_t * ext_data) +static int overwrite_attribute(asn1_node asn, const char *root, unsigned indx, + const gnutls_datum_t *ext_data) { char name[MAX_NAME_SIZE], name2[MAX_NAME_SIZE]; int result; @@ -68,10 +67,9 @@ overwrite_attribute(asn1_node asn, const char *root, unsigned indx, * "certificationRequestInfo.attributes" * */ -int -_x509_parse_attribute(asn1_node asn1_struct, - const char *attr_name, const char *given_oid, - unsigned indx, int raw, gnutls_datum_t * out) +int _x509_parse_attribute(asn1_node asn1_struct, const char *attr_name, + const char *given_oid, unsigned indx, int raw, + gnutls_datum_t *out) { int k1, result; char tmpbuffer1[MAX_NAME_SIZE]; @@ -83,7 +81,6 @@ _x509_parse_attribute(asn1_node asn1_struct, k1 = 0; do { - k1++; /* create a string like "attribute.?1" */ @@ -125,7 +122,7 @@ _x509_parse_attribute(asn1_node asn1_struct, goto cleanup; } - if (strcmp(oid, given_oid) == 0) { /* Found the OID */ + if (strcmp(oid, given_oid) == 0) { /* Found the OID */ /* Read the Value */ @@ -133,9 +130,8 @@ _x509_parse_attribute(asn1_node asn1_struct, "%s.values.?%u", tmpbuffer1, indx + 1); len = sizeof(value) - 1; - result = - _gnutls_x509_read_value(asn1_struct, - tmpbuffer3, &td); + result = _gnutls_x509_read_value(asn1_struct, + tmpbuffer3, &td); if (result != ASN1_SUCCESS) { gnutls_assert(); @@ -144,9 +140,8 @@ _x509_parse_attribute(asn1_node asn1_struct, } if (raw == 0) { - result = - _gnutls_x509_dn_to_string - (oid, td.data, td.size, out); + result = _gnutls_x509_dn_to_string( + oid, td.data, td.size, out); _gnutls_free_datum(&td); @@ -155,7 +150,7 @@ _x509_parse_attribute(asn1_node asn1_struct, goto cleanup; } return 0; - } else { /* raw!=0 */ + } else { /* raw!=0 */ out->data = td.data; out->size = td.size; @@ -163,14 +158,13 @@ _x509_parse_attribute(asn1_node asn1_struct, } } - } - while (1); + } while (1); gnutls_assert(); result = GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; - cleanup: +cleanup: return result; } @@ -179,9 +173,9 @@ _x509_parse_attribute(asn1_node asn1_struct, * * Critical will be either 0 or 1. */ -static int -add_attribute(asn1_node asn, const char *root, const char *attribute_id, - const gnutls_datum_t * ext_data) +static int add_attribute(asn1_node asn, const char *root, + const char *attribute_id, + const gnutls_datum_t *ext_data) { int result; char name[MAX_NAME_SIZE]; @@ -223,9 +217,8 @@ add_attribute(asn1_node asn, const char *root, const char *attribute_id, return 0; } -int -_x509_set_attribute(asn1_node asn, const char *root, - const char *ext_id, const gnutls_datum_t * ext_data) +int _x509_set_attribute(asn1_node asn, const char *root, const char *ext_id, + const gnutls_datum_t *ext_data) { int result; int k, len; @@ -251,7 +244,6 @@ _x509_set_attribute(asn1_node asn, const char *root, } do { - _gnutls_str_cpy(name2, sizeof(name2), name); _gnutls_str_cat(name2, sizeof(name2), ".type"); @@ -275,10 +267,8 @@ _x509_set_attribute(asn1_node asn, const char *root, ext_data); } - } - while (0); - } - while (1); + } while (0); + } while (1); if (result == ASN1_ELEMENT_NOT_FOUND) { return add_attribute(asn, root, ext_id, ext_data); diff --git a/lib/x509/attributes.h b/lib/x509/attributes.h index ff2328ad46..6a1214ace2 100644 --- a/lib/x509/attributes.h +++ b/lib/x509/attributes.h @@ -21,15 +21,13 @@ */ #ifndef GNUTLS_LIB_X509_ATTRIBUTES_H -# define GNUTLS_LIB_X509_ATTRIBUTES_H +#define GNUTLS_LIB_X509_ATTRIBUTES_H -int -_x509_parse_attribute(asn1_node asn1_struct, - const char *attr_name, const char *given_oid, - unsigned indx, int raw, gnutls_datum_t * out); +int _x509_parse_attribute(asn1_node asn1_struct, const char *attr_name, + const char *given_oid, unsigned indx, int raw, + gnutls_datum_t *out); -int -_x509_set_attribute(asn1_node asn, const char *root, - const char *ext_id, const gnutls_datum_t * ext_data); +int _x509_set_attribute(asn1_node asn, const char *root, const char *ext_id, + const gnutls_datum_t *ext_data); -#endif /* GNUTLS_LIB_X509_ATTRIBUTES_H */ +#endif /* GNUTLS_LIB_X509_ATTRIBUTES_H */ diff --git a/lib/x509/common.c b/lib/x509/common.c index 2cc95c9b8b..748d0db4c5 100644 --- a/lib/x509/common.c +++ b/lib/x509/common.c @@ -35,12 +35,18 @@ #include "extras/hex.h" #include -static int data2hex(const void *data, size_t data_size, gnutls_datum_t * out); +static int data2hex(const void *data, size_t data_size, gnutls_datum_t *out); -#define ENTRY(oid, ldap, asn, etype) {oid, sizeof(oid)-1, ldap, sizeof(ldap)-1, asn, etype} +#define ENTRY(oid, ldap, asn, etype) \ + { \ + oid, sizeof(oid) - 1, ldap, sizeof(ldap) - 1, asn, etype \ + } /* when there is no name description */ -#define ENTRY_ND(oid, asn, etype) {oid, sizeof(oid)-1, NULL, 0, asn, etype} +#define ENTRY_ND(oid, asn, etype) \ + { \ + oid, sizeof(oid) - 1, NULL, 0, asn, etype \ + } /* This list contains all the OIDs that may be * contained in a rdnSequence and are printable. @@ -90,8 +96,7 @@ static const struct oid_to_string _oid2str[] = { ENTRY("0.9.2342.19200300.100.1.1", "UID", "PKIX1.DirectoryString", ASN1_ETYPE_INVALID), ENTRY("1.2.840.113556.1.4.656", "userPrincipalName", - "PKIX1.DirectoryString", - ASN1_ETYPE_INVALID), + "PKIX1.DirectoryString", ASN1_ETYPE_INVALID), /* Extended validation */ @@ -102,8 +107,8 @@ static const struct oid_to_string _oid2str[] = { "jurisdictionOfIncorporationStateOrProvinceName", "PKIX1.DirectoryString", ASN1_ETYPE_INVALID), ENTRY("1.3.6.1.4.1.311.60.2.1.3", - "jurisdictionOfIncorporationCountryName", - NULL, ASN1_ETYPE_PRINTABLE_STRING), + "jurisdictionOfIncorporationCountryName", NULL, + ASN1_ETYPE_PRINTABLE_STRING), /* PKCS #9 */ @@ -130,11 +135,11 @@ static const struct oid_to_string _oid2str[] = { /* VAT identification number */ ENTRY("1.2.643.3.131.1.1", "INN", NULL, ASN1_ETYPE_NUMERIC_STRING), - {NULL, 0, NULL, 0, NULL, 0} + { NULL, 0, NULL, 0, NULL, 0 } }; -const struct oid_to_string *_gnutls_oid_get_entry(const struct oid_to_string - *ots, const char *oid) +const struct oid_to_string * +_gnutls_oid_get_entry(const struct oid_to_string *ots, const char *oid) { unsigned int i = 0; unsigned len = strlen(oid); @@ -143,8 +148,7 @@ const struct oid_to_string *_gnutls_oid_get_entry(const struct oid_to_string if (len == ots[i].oid_size && strcmp(ots[i].oid, oid) == 0) return &ots[i]; i++; - } - while (ots[i].oid != NULL); + } while (ots[i].oid != NULL); return NULL; } @@ -152,7 +156,7 @@ const struct oid_to_string *_gnutls_oid_get_entry(const struct oid_to_string const char *_gnutls_oid_get_asn_desc(const char *oid) { const struct oid_to_string *entry = - _gnutls_oid_get_entry(_oid2str, oid); + _gnutls_oid_get_entry(_oid2str, oid); return entry ? entry->asn_desc : NULL; } @@ -166,15 +170,14 @@ const char *_gnutls_ldap_string_to_oid(const char *str, unsigned str_len) (c_strncasecmp(_oid2str[i].name_desc, str, str_len) == 0)) return _oid2str[i].oid; i++; - } - while (_oid2str[i].oid != NULL); + } while (_oid2str[i].oid != NULL); return NULL; } /* Escapes a string following the rules from RFC4514. */ -static int str_escape(const gnutls_datum_t * str, gnutls_datum_t * escaped) +static int str_escape(const gnutls_datum_t *str, gnutls_datum_t *escaped) { unsigned int j, i; uint8_t *buffer = NULL; @@ -195,10 +198,10 @@ static int str_escape(const gnutls_datum_t * str, gnutls_datum_t * escaped) goto cleanup; } - if (str->data[i] == ',' || str->data[i] == '+' - || str->data[i] == '"' || str->data[i] == '\\' - || str->data[i] == '<' || str->data[i] == '>' - || str->data[i] == ';' || str->data[i] == 0) + if (str->data[i] == ',' || str->data[i] == '+' || + str->data[i] == '"' || str->data[i] == '\\' || + str->data[i] == '<' || str->data[i] == '>' || + str->data[i] == ';' || str->data[i] == 0) buffer[j++] = '\\'; else if (i == 0 && str->data[i] == '#') buffer[j++] = '\\'; @@ -216,7 +219,7 @@ static int str_escape(const gnutls_datum_t * str, gnutls_datum_t * escaped) escaped->size = j; return 0; - cleanup: +cleanup: gnutls_free(buffer); return ret; } @@ -257,7 +260,7 @@ int gnutls_x509_dn_oid_known(const char *oid) const char *gnutls_x509_dn_oid_name(const char *oid, unsigned int flags) { const struct oid_to_string *entry = - _gnutls_oid_get_entry(_oid2str, oid); + _gnutls_oid_get_entry(_oid2str, oid); if (entry && entry->name_desc) return entry->name_desc; @@ -267,9 +270,8 @@ const char *gnutls_x509_dn_oid_name(const char *oid, unsigned int flags) return NULL; } -static int -make_printable_string(unsigned etype, const gnutls_datum_t * input, - gnutls_datum_t * out) +static int make_printable_string(unsigned etype, const gnutls_datum_t *input, + gnutls_datum_t *out) { int printable = 0; int ret; @@ -306,10 +308,11 @@ make_printable_string(unsigned etype, const gnutls_datum_t * input, printable = 1; } - } else if (etype != ASN1_ETYPE_UNIVERSAL_STRING) /* supported but not printable */ + } else if (etype != + ASN1_ETYPE_UNIVERSAL_STRING) /* supported but not printable */ return GNUTLS_E_INVALID_REQUEST; - if (printable == 0) { /* need to allocate out */ + if (printable == 0) { /* need to allocate out */ ret = data2hex(input->data, input->size, out); if (ret < 0) { gnutls_assert(); @@ -320,9 +323,9 @@ make_printable_string(unsigned etype, const gnutls_datum_t * input, return 0; } -static int -decode_complex_string(const struct oid_to_string *oentry, void *value, - int value_size, gnutls_datum_t * out) +static int decode_complex_string(const struct oid_to_string *oentry, + void *value, int value_size, + gnutls_datum_t *out) { char str[MAX_STRING_LEN], tmpname[128]; int len = -1, result; @@ -336,16 +339,14 @@ decode_complex_string(const struct oid_to_string *oentry, void *value, return GNUTLS_E_INTERNAL_ERROR; } - if ((result = - asn1_create_element(_gnutls_get_pkix(), oentry->asn_desc, - &tmpasn)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), oentry->asn_desc, + &tmpasn)) != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } - if ((result = - _asn1_strict_der_decode(&tmpasn, value, value_size, - asn1_err)) != ASN1_SUCCESS) { + if ((result = _asn1_strict_der_decode(&tmpasn, value, value_size, + asn1_err)) != ASN1_SUCCESS) { gnutls_assert(); _gnutls_debug_log("_asn1_strict_der_decode: %s\n", asn1_err); asn1_delete_structure(&tmpasn); @@ -355,7 +356,8 @@ decode_complex_string(const struct oid_to_string *oentry, void *value, /* Read the type of choice. */ len = sizeof(str) - 1; - if ((result = asn1_read_value(tmpasn, "", str, &len)) != ASN1_SUCCESS) { /* CHOICE */ + if ((result = asn1_read_value(tmpasn, "", str, &len)) != + ASN1_SUCCESS) { /* CHOICE */ gnutls_assert(); asn1_delete_structure(&tmpasn); return _gnutls_asn2err(result); @@ -412,9 +414,8 @@ decode_complex_string(const struct oid_to_string *oentry, void *value, * res may be null. This will just return the res_size, needed to * hold the string. */ -int -_gnutls_x509_dn_to_string(const char *oid, void *value, - int value_size, gnutls_datum_t * str) +int _gnutls_x509_dn_to_string(const char *oid, void *value, int value_size, + gnutls_datum_t *str) { const struct oid_to_string *oentry; int ret; @@ -426,8 +427,8 @@ _gnutls_x509_dn_to_string(const char *oid, void *value, } oentry = _gnutls_oid_get_entry(_oid2str, oid); - if (oentry == NULL) { /* unknown OID -> hex */ - unknown_oid: + if (oentry == NULL) { /* unknown OID -> hex */ + unknown_oid: ret = data2hex(value, value_size, str); if (ret < 0) { gnutls_assert(); @@ -436,16 +437,15 @@ _gnutls_x509_dn_to_string(const char *oid, void *value, return 0; } - if (oentry->asn_desc != NULL) { /* complex */ + if (oentry->asn_desc != NULL) { /* complex */ ret = decode_complex_string(oentry, value, value_size, &tmp); if (ret < 0) { /* we failed decoding -> handle it as unknown OID */ goto unknown_oid; } } else { - ret = - _gnutls_x509_decode_string(oentry->etype, value, - value_size, &tmp, 0); + ret = _gnutls_x509_decode_string(oentry->etype, value, + value_size, &tmp, 0); if (ret < 0) { /* we failed decoding -> handle it as unknown OID */ goto unknown_oid; @@ -464,13 +464,13 @@ _gnutls_x509_dn_to_string(const char *oid, void *value, /* Converts a data string to an LDAP rfc2253 hex string * something like '#01020304' */ -static int data2hex(const void *data, size_t data_size, gnutls_datum_t * out) +static int data2hex(const void *data, size_t data_size, gnutls_datum_t *out) { gnutls_datum_t tmp, td; int ret; size_t size; - td.size = hex_str_size(data_size) + 1; /* +1 for '#' */ + td.size = hex_str_size(data_size) + 1; /* +1 for '#' */ td.data = gnutls_malloc(td.size); if (td.data == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); @@ -479,7 +479,7 @@ static int data2hex(const void *data, size_t data_size, gnutls_datum_t * out) tmp.size = data_size; td.data[0] = '#'; - size = td.size - 1; /* don't include '#' */ + size = td.size - 1; /* don't include '#' */ ret = gnutls_hex_encode(&tmp, (char *)&td.data[1], &size); if (ret < 0) { gnutls_assert(); @@ -487,7 +487,7 @@ static int data2hex(const void *data, size_t data_size, gnutls_datum_t * out) return GNUTLS_E_SHORT_MEMORY_BUFFER; } - td.size--; /* don't include null */ + td.size--; /* don't include null */ out->data = td.data; out->size = td.size; @@ -512,25 +512,24 @@ gnutls_x509_subject_alt_name_t _gnutls_x509_san_find_type(char *str_type) if (strcmp(str_type, "registeredID") == 0) return GNUTLS_SAN_REGISTERED_ID; - return (gnutls_x509_subject_alt_name_t) - 1; + return (gnutls_x509_subject_alt_name_t)-1; } /* A generic export function. Will export the given ASN.1 encoded data * to PEM or DER raw data. */ -int -_gnutls_x509_export_int_named(asn1_node asn1_data, const char *name, - gnutls_x509_crt_fmt_t format, - const char *pem_header, - unsigned char *output_data, - size_t *output_data_size) +int _gnutls_x509_export_int_named(asn1_node asn1_data, const char *name, + gnutls_x509_crt_fmt_t format, + const char *pem_header, + unsigned char *output_data, + size_t *output_data_size) { int ret; gnutls_datum_t out = { NULL, 0 }; size_t size; - ret = _gnutls_x509_export_int_named2(asn1_data, name, - format, pem_header, &out); + ret = _gnutls_x509_export_int_named2(asn1_data, name, format, + pem_header, &out); if (ret < 0) return gnutls_assert_val(ret); @@ -556,7 +555,7 @@ _gnutls_x509_export_int_named(asn1_node asn1_data, const char *name, ret = 0; - cleanup: +cleanup: gnutls_free(out.data); return ret; @@ -565,10 +564,9 @@ _gnutls_x509_export_int_named(asn1_node asn1_data, const char *name, /* A generic export function. Will export the given ASN.1 encoded data * to PEM or DER raw data. */ -int -_gnutls_x509_export_int_named2(asn1_node asn1_data, const char *name, - gnutls_x509_crt_fmt_t format, - const char *pem_header, gnutls_datum_t * out) +int _gnutls_x509_export_int_named2(asn1_node asn1_data, const char *name, + gnutls_x509_crt_fmt_t format, + const char *pem_header, gnutls_datum_t *out) { int ret; @@ -576,15 +574,15 @@ _gnutls_x509_export_int_named2(asn1_node asn1_data, const char *name, ret = _gnutls_x509_der_encode(asn1_data, name, out, 0); if (ret < 0) return gnutls_assert_val(ret); - } else { /* PEM */ + } else { /* PEM */ gnutls_datum_t tmp; ret = _gnutls_x509_der_encode(asn1_data, name, &tmp, 0); if (ret < 0) return gnutls_assert_val(ret); - ret = - _gnutls_fbase64_encode(pem_header, tmp.data, tmp.size, out); + ret = _gnutls_fbase64_encode(pem_header, tmp.data, tmp.size, + out); _gnutls_free_datum(&tmp); if (ret < 0) @@ -598,10 +596,9 @@ _gnutls_x509_export_int_named2(asn1_node asn1_data, const char *name, * The returned string is always null terminated (but null is not * included in size). */ -int -_gnutls_x509_decode_string(unsigned int etype, - const uint8_t * der, size_t der_size, - gnutls_datum_t * output, unsigned allow_ber) +int _gnutls_x509_decode_string(unsigned int etype, const uint8_t *der, + size_t der_size, gnutls_datum_t *output, + unsigned allow_ber) { int ret; uint8_t *str; @@ -612,13 +609,11 @@ _gnutls_x509_decode_string(unsigned int etype, output->size = 0; if (allow_ber) - ret = - asn1_decode_simple_ber(etype, der, der_size, &str, - &str_size, NULL); + ret = asn1_decode_simple_ber(etype, der, der_size, &str, + &str_size, NULL); else - ret = - asn1_decode_simple_der(etype, der, der_size, - (const uint8_t **)&str, &str_size); + ret = asn1_decode_simple_der(etype, der, der_size, + (const uint8_t **)&str, &str_size); if (ret != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(ret); @@ -638,7 +633,7 @@ _gnutls_x509_decode_string(unsigned int etype, free(str); ret = make_printable_string(etype, &td, output); - if (ret == GNUTLS_E_INVALID_REQUEST) { /* unsupported etype */ + if (ret == GNUTLS_E_INVALID_REQUEST) { /* unsupported etype */ output->data = td.data; output->size = td.size; ret = 0; @@ -655,9 +650,8 @@ _gnutls_x509_decode_string(unsigned int etype, if (len != (size_t)output->size) { _gnutls_free_datum(output); - ret = - gnutls_assert_val - (GNUTLS_E_ASN1_EMBEDDED_NULL_IN_STRING); + ret = gnutls_assert_val( + GNUTLS_E_ASN1_EMBEDDED_NULL_IN_STRING); } } @@ -670,9 +664,8 @@ _gnutls_x509_decode_string(unsigned int etype, * Note that this function always allocates one plus * the required data size (and places a null byte). */ -static int -x509_read_value(asn1_node c, const char *root, - gnutls_datum_t * ret, unsigned allow_null) +static int x509_read_value(asn1_node c, const char *root, gnutls_datum_t *ret, + unsigned allow_null) { int len = 0, result; uint8_t *tmp = NULL; @@ -682,8 +675,8 @@ x509_read_value(asn1_node c, const char *root, if (result == 0 && allow_null == 0 && len == 0) { /* don't allow null strings */ return gnutls_assert_val(GNUTLS_E_ASN1_DER_ERROR); - } else if (result == 0 && allow_null == 0 - && etype == ASN1_ETYPE_OBJECT_ID && len == 1) { + } else if (result == 0 && allow_null == 0 && + etype == ASN1_ETYPE_OBJECT_ID && len == 1) { return gnutls_assert_val(GNUTLS_E_ASN1_DER_ERROR); } @@ -721,8 +714,8 @@ x509_read_value(asn1_node c, const char *root, if (len > 0) { ret->size = len - 1; } else { - result = - gnutls_assert_val(GNUTLS_E_ASN1_DER_ERROR); + result = gnutls_assert_val( + GNUTLS_E_ASN1_DER_ERROR); goto cleanup; } break; @@ -739,19 +732,18 @@ x509_read_value(asn1_node c, const char *root, return 0; - cleanup: +cleanup: gnutls_free(tmp); return result; } -int _gnutls_x509_read_value(asn1_node c, const char *root, gnutls_datum_t * ret) +int _gnutls_x509_read_value(asn1_node c, const char *root, gnutls_datum_t *ret) { return x509_read_value(c, root, ret, 0); } -int -_gnutls_x509_read_null_value(asn1_node c, const char *root, - gnutls_datum_t * ret) +int _gnutls_x509_read_null_value(asn1_node c, const char *root, + gnutls_datum_t *ret) { return x509_read_value(c, root, ret, 1); } @@ -762,10 +754,8 @@ _gnutls_x509_read_null_value(asn1_node c, const char *root, * Note that this function always places a null character * at the end of a readable string value (which is not accounted into size) */ -int -_gnutls_x509_read_string(asn1_node c, const char *root, - gnutls_datum_t * ret, unsigned int etype, - unsigned int allow_ber) +int _gnutls_x509_read_string(asn1_node c, const char *root, gnutls_datum_t *ret, + unsigned int etype, unsigned int allow_ber) { int len = 0, result; size_t slen; @@ -812,24 +802,23 @@ _gnutls_x509_read_string(asn1_node c, const char *root, return 0; - cleanup: +cleanup: gnutls_free(tmp); return result; } /* The string type should be IA5String, UTF8String etc. Leave * null for octet string */ -int _gnutls_x509_encode_string(unsigned int etype, - const void *input_data, size_t input_size, - gnutls_datum_t * output) +int _gnutls_x509_encode_string(unsigned int etype, const void *input_data, + size_t input_size, gnutls_datum_t *output) { uint8_t tl[ASN1_MAX_TL_SIZE]; unsigned int tl_size; int ret; tl_size = sizeof(tl); - ret = - asn1_encode_simple_der(etype, input_data, input_size, tl, &tl_size); + ret = asn1_encode_simple_der(etype, input_data, input_size, tl, + &tl_size); if (ret != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(ret); @@ -852,9 +841,8 @@ int _gnutls_x509_encode_string(unsigned int etype, * the given datum. If str is non zero then the data are encoded as * an OCTET STRING. */ -int -_gnutls_x509_der_encode(asn1_node src, const char *src_name, - gnutls_datum_t * res, int str) +int _gnutls_x509_der_encode(asn1_node src, const char *src_name, + gnutls_datum_t *res, int str) { int size, result; int asize; @@ -873,7 +861,7 @@ _gnutls_x509_der_encode(asn1_node src, const char *src_name, */ if (str) - size += 16; /* for later to include the octet tags */ + size += 16; /* for later to include the octet tags */ asize = size; data = gnutls_malloc((size_t)size); @@ -890,9 +878,9 @@ _gnutls_x509_der_encode(asn1_node src, const char *src_name, } if (str) { - if ((result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.pkcs-7-Data", - &c2)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.pkcs-7-Data", &c2)) != + ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; @@ -921,11 +909,10 @@ _gnutls_x509_der_encode(asn1_node src, const char *src_name, res->size = (unsigned)size; return 0; - cleanup: +cleanup: gnutls_free(data); asn1_delete_structure(&c2); return result; - } /* DER Encodes the src asn1_node and stores it to @@ -933,9 +920,9 @@ _gnutls_x509_der_encode(asn1_node src, const char *src_name, * as OCTET. If str is non null then the data are encoded as * an OCTET STRING. */ -int -_gnutls_x509_der_encode_and_copy(asn1_node src, const char *src_name, - asn1_node dest, const char *dest_name, int str) +int _gnutls_x509_der_encode_and_copy(asn1_node src, const char *src_name, + asn1_node dest, const char *dest_name, + int str) { int result; gnutls_datum_t encoded = { NULL, 0 }; @@ -949,8 +936,8 @@ _gnutls_x509_der_encode_and_copy(asn1_node src, const char *src_name, /* Write the data. */ - result = - asn1_write_value(dest, dest_name, encoded.data, (int)encoded.size); + result = asn1_write_value(dest, dest_name, encoded.data, + (int)encoded.size); _gnutls_free_datum(&encoded); @@ -964,9 +951,8 @@ _gnutls_x509_der_encode_and_copy(asn1_node src, const char *src_name, /* Writes the value of the datum in the given asn1_node. */ -int -_gnutls_x509_write_value(asn1_node c, const char *root, - const gnutls_datum_t * data) +int _gnutls_x509_write_value(asn1_node c, const char *root, + const gnutls_datum_t *data) { int ret; @@ -983,9 +969,8 @@ _gnutls_x509_write_value(asn1_node c, const char *root, /* Writes the value of the datum in the given asn1_node as a string. */ -int -_gnutls_x509_write_string(asn1_node c, const char *root, - const gnutls_datum_t * data, unsigned int etype) +int _gnutls_x509_write_string(asn1_node c, const char *root, + const gnutls_datum_t *data, unsigned int etype) { int ret; gnutls_datum_t val = { NULL, 0 }; @@ -1005,31 +990,28 @@ _gnutls_x509_write_string(asn1_node c, const char *root, ret = 0; - cleanup: +cleanup: _gnutls_free_datum(&val); return ret; } -void -_asnstr_append_name(char *name, size_t name_size, const char *part1, - const char *part2) +void _asnstr_append_name(char *name, size_t name_size, const char *part1, + const char *part2) { if (part1[0] != 0) { _gnutls_str_cpy(name, name_size, part1); _gnutls_str_cat(name, name_size, part2); } else _gnutls_str_cpy(name, name_size, - part2 + 1 /* remove initial dot */ ); + part2 + 1 /* remove initial dot */); } /* Encodes and copies the private key parameters into a * subjectPublicKeyInfo structure. * */ -int -_gnutls_x509_encode_and_copy_PKI_params(asn1_node dst, - const char *dst_name, - const gnutls_pk_params_st * params) +int _gnutls_x509_encode_and_copy_PKI_params(asn1_node dst, const char *dst_name, + const gnutls_pk_params_st *params) { const char *oid; gnutls_datum_t der = { NULL, 0 }; @@ -1093,35 +1075,31 @@ _gnutls_x509_encode_and_copy_PKI_params(asn1_node dst, /* Encodes and public key parameters into a * subjectPublicKeyInfo structure and stores it in der. */ -int -_gnutls_x509_encode_PKI_params(gnutls_datum_t * der, - const gnutls_pk_params_st * params) +int _gnutls_x509_encode_PKI_params(gnutls_datum_t *der, + const gnutls_pk_params_st *params) { int ret; asn1_node tmp; - ret = asn1_create_element(_gnutls_get_pkix(), - "PKIX1.Certificate", &tmp); + ret = asn1_create_element(_gnutls_get_pkix(), "PKIX1.Certificate", + &tmp); if (ret != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(ret); } - ret = _gnutls_x509_encode_and_copy_PKI_params(tmp, - "tbsCertificate.subjectPublicKeyInfo", - params); + ret = _gnutls_x509_encode_and_copy_PKI_params( + tmp, "tbsCertificate.subjectPublicKeyInfo", params); if (ret != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(ret); goto cleanup; } - ret = - _gnutls_x509_der_encode(tmp, - "tbsCertificate.subjectPublicKeyInfo", - der, 0); + ret = _gnutls_x509_der_encode( + tmp, "tbsCertificate.subjectPublicKeyInfo", der, 0); - cleanup: +cleanup: asn1_delete_structure(&tmp); return ret; @@ -1130,9 +1108,8 @@ _gnutls_x509_encode_PKI_params(gnutls_datum_t * der, /* Reads and returns the PK algorithm of the given certificate-like * ASN.1 structure. src_name should be something like "tbsCertificate.subjectPublicKeyInfo". */ -int -_gnutls_x509_get_pk_algorithm(asn1_node src, const char *src_name, - gnutls_ecc_curve_t * curve, unsigned int *bits) +int _gnutls_x509_get_pk_algorithm(asn1_node src, const char *src_name, + gnutls_ecc_curve_t *curve, unsigned int *bits) { int result; int algo; @@ -1153,8 +1130,8 @@ _gnutls_x509_get_pk_algorithm(asn1_node src, const char *src_name, algo = _gnutls_oid_to_pk_and_curve(oid, &lcurve); if (algo == GNUTLS_PK_UNKNOWN) { - _gnutls_debug_log - ("%s: unknown public key algorithm: %s\n", __func__, oid); + _gnutls_debug_log("%s: unknown public key algorithm: %s\n", + __func__, oid); } if (curve) @@ -1166,7 +1143,7 @@ _gnutls_x509_get_pk_algorithm(asn1_node src, const char *src_name, /* Now read the parameters' bits */ - if (lcurve != GNUTLS_ECC_CURVE_INVALID) { /* curve present */ + if (lcurve != GNUTLS_ECC_CURVE_INVALID) { /* curve present */ bits[0] = gnutls_ecc_curve_get_size(lcurve) * 8; } else { gnutls_pk_params_st params; @@ -1186,9 +1163,9 @@ _gnutls_x509_get_pk_algorithm(asn1_node src, const char *src_name, /* Reads the DER signed data from the certificate and allocates space and * returns them into signed_data. */ -int -_gnutls_x509_get_signed_data(asn1_node src, const gnutls_datum_t * der, - const char *src_name, gnutls_datum_t * signed_data) +int _gnutls_x509_get_signed_data(asn1_node src, const gnutls_datum_t *der, + const char *src_name, + gnutls_datum_t *signed_data) { int start, end, result; @@ -1198,16 +1175,16 @@ _gnutls_x509_get_signed_data(asn1_node src, const gnutls_datum_t * der, /* Get the signed data */ - result = asn1_der_decoding_startEnd(src, der->data, der->size, - src_name, &start, &end); + result = asn1_der_decoding_startEnd(src, der->data, der->size, src_name, + &start, &end); if (result != ASN1_SUCCESS) { result = _gnutls_asn2err(result); gnutls_assert(); goto cleanup; } - result = - _gnutls_set_datum(signed_data, &der->data[start], end - start + 1); + result = _gnutls_set_datum(signed_data, &der->data[start], + end - start + 1); if (result < 0) { gnutls_assert(); @@ -1216,7 +1193,7 @@ _gnutls_x509_get_signed_data(asn1_node src, const gnutls_datum_t * der, result = 0; - cleanup: +cleanup: return result; } @@ -1271,8 +1248,8 @@ int _gnutls_x509_get_signature_algorithm(asn1_node src, const char *src_name) _gnutls_free_datum(&der); if (result == 0) - result = - gnutls_pk_to_sign(params.pk, params.rsa_pss_dig); + result = gnutls_pk_to_sign(params.pk, + params.rsa_pss_dig); } else if (sa.data) { result = gnutls_oid_to_sign((char *)sa.data); } else { @@ -1290,9 +1267,8 @@ int _gnutls_x509_get_signature_algorithm(asn1_node src, const char *src_name) /* Reads the DER signature from the certificate and allocates space and * returns them into signed_data. */ -int -_gnutls_x509_get_signature(asn1_node src, const char *src_name, - gnutls_datum_t * signature) +int _gnutls_x509_get_signature(asn1_node src, const char *src_name, + gnutls_datum_t *signature) { int result, len; int bits; @@ -1342,7 +1318,7 @@ _gnutls_x509_get_signature(asn1_node src, const char *src_name, return 0; - cleanup: +cleanup: gnutls_free(signature->data); return result; } @@ -1361,7 +1337,7 @@ static int is_printable(char p) static int write_complex_string(asn1_node asn_struct, const char *where, const struct oid_to_string *oentry, - const uint8_t * data, size_t data_size) + const uint8_t *data, size_t data_size) { char tmp[128]; asn1_node c2; @@ -1416,7 +1392,7 @@ static int write_complex_string(asn1_node asn_struct, const char *where, result = 0; - error: +error: asn1_delete_structure(&c2); return result; } @@ -1425,12 +1401,11 @@ static int write_complex_string(asn1_node asn_struct, const char *where, * 'multi' must be (0) if writing an AttributeTypeAndValue, and 1 if Attribute. * In all cases only one value is written. */ -int -_gnutls_x509_encode_and_write_attribute(const char *given_oid, - asn1_node asn1_struct, - const char *where, - const void *_data, - int data_size, int multi) +int _gnutls_x509_encode_and_write_attribute(const char *given_oid, + asn1_node asn1_struct, + const char *where, + const void *_data, int data_size, + int multi) { const uint8_t *data = _data; char tmp[128]; @@ -1450,8 +1425,9 @@ _gnutls_x509_encode_and_write_attribute(const char *given_oid, _gnutls_str_cpy(tmp, sizeof(tmp), where); _gnutls_str_cat(tmp, sizeof(tmp), ".value"); - if (multi != 0) { /* if not writing an AttributeTypeAndValue, but an Attribute */ - _gnutls_str_cat(tmp, sizeof(tmp), "s"); /* values */ + if (multi != + 0) { /* if not writing an AttributeTypeAndValue, but an Attribute */ + _gnutls_str_cat(tmp, sizeof(tmp), "s"); /* values */ result = asn1_write_value(asn1_struct, tmp, "NEW", 1); if (result != ASN1_SUCCESS) { @@ -1463,21 +1439,19 @@ _gnutls_x509_encode_and_write_attribute(const char *given_oid, _gnutls_str_cat(tmp, sizeof(tmp), ".?LAST"); } - if (oentry->asn_desc != NULL) { /* write a complex string API */ - result = - write_complex_string(asn1_struct, tmp, oentry, data, - data_size); + if (oentry->asn_desc != NULL) { /* write a complex string API */ + result = write_complex_string(asn1_struct, tmp, oentry, data, + data_size); if (result < 0) return gnutls_assert_val(result); - } else { /* write a simple string */ + } else { /* write a simple string */ gnutls_datum_t td; td.data = (void *)data; td.size = data_size; - result = - _gnutls_x509_write_string(asn1_struct, tmp, &td, - oentry->etype); + result = _gnutls_x509_write_string(asn1_struct, tmp, &td, + oentry->etype); if (result < 0) { gnutls_assert(); goto error; @@ -1498,7 +1472,7 @@ _gnutls_x509_encode_and_write_attribute(const char *given_oid, result = 0; - error: +error: return result; } @@ -1508,7 +1482,7 @@ _gnutls_x509_encode_and_write_attribute(const char *given_oid, * * The buffer will always be null terminated. */ -int _gnutls_strdatum_to_buf(gnutls_datum_t * d, void *buf, size_t *buf_size) +int _gnutls_strdatum_to_buf(gnutls_datum_t *d, void *buf, size_t *buf_size) { int ret; uint8_t *_buf = buf; @@ -1524,21 +1498,19 @@ int _gnutls_strdatum_to_buf(gnutls_datum_t * d, void *buf, size_t *buf_size) *buf_size = d->size; ret = 0; - cleanup: +cleanup: _gnutls_free_datum(d); return ret; } -int -_gnutls_x509_get_raw_field2(asn1_node c2, const gnutls_datum_t * raw, - const char *whom, gnutls_datum_t * dn) +int _gnutls_x509_get_raw_field2(asn1_node c2, const gnutls_datum_t *raw, + const char *whom, gnutls_datum_t *dn) { int result, len1; int start1, end1; - result = - asn1_der_decoding_startEnd(c2, raw->data, raw->size, - whom, &start1, &end1); + result = asn1_der_decoding_startEnd(c2, raw->data, raw->size, whom, + &start1, &end1); if (result != ASN1_SUCCESS) { gnutls_assert(); @@ -1552,11 +1524,11 @@ _gnutls_x509_get_raw_field2(asn1_node c2, const gnutls_datum_t * raw, dn->size = len1; result = 0; - cleanup: +cleanup: return result; } -int _gnutls_copy_string(const gnutls_datum_t * str, uint8_t * out, +int _gnutls_copy_string(const gnutls_datum_t *str, uint8_t *out, size_t *out_size) { unsigned size_to_check; @@ -1580,8 +1552,7 @@ int _gnutls_copy_string(const gnutls_datum_t * str, uint8_t * out, return 0; } -int _gnutls_copy_data(const gnutls_datum_t * str, uint8_t * out, - size_t *out_size) +int _gnutls_copy_data(const gnutls_datum_t *str, uint8_t *out, size_t *out_size) { if ((unsigned)str->size > *out_size) { gnutls_assert(); @@ -1598,7 +1569,7 @@ int _gnutls_copy_data(const gnutls_datum_t * str, uint8_t * out, } /* Converts an X.509 certificate to subjectPublicKeyInfo */ -int x509_crt_to_raw_pubkey(gnutls_x509_crt_t crt, gnutls_datum_t * rpubkey) +int x509_crt_to_raw_pubkey(gnutls_x509_crt_t crt, gnutls_datum_t *rpubkey) { gnutls_pubkey_t pubkey = NULL; int ret; @@ -1621,14 +1592,14 @@ int x509_crt_to_raw_pubkey(gnutls_x509_crt_t crt, gnutls_datum_t * rpubkey) ret = 0; - cleanup: +cleanup: gnutls_pubkey_deinit(pubkey); return ret; } /* Converts an X.509 certificate to subjectPublicKeyInfo */ -int _gnutls_x509_raw_crt_to_raw_pubkey(const gnutls_datum_t * cert, - gnutls_datum_t * rpubkey) +int _gnutls_x509_raw_crt_to_raw_pubkey(const gnutls_datum_t *cert, + gnutls_datum_t *rpubkey) { gnutls_x509_crt_t crt = NULL; int ret; @@ -1644,16 +1615,15 @@ int _gnutls_x509_raw_crt_to_raw_pubkey(const gnutls_datum_t * cert, } ret = x509_crt_to_raw_pubkey(crt, rpubkey); - cleanup: +cleanup: gnutls_x509_crt_deinit(crt); return ret; } -unsigned -_gnutls_check_valid_key_id(const gnutls_datum_t * key_id, - gnutls_x509_crt_t cert, time_t now, - unsigned *has_ski) +unsigned _gnutls_check_valid_key_id(const gnutls_datum_t *key_id, + gnutls_x509_crt_t cert, time_t now, + unsigned *has_ski) { uint8_t id[MAX_KEY_ID_SIZE]; size_t id_size; @@ -1681,7 +1651,7 @@ _gnutls_check_valid_key_id(const gnutls_datum_t * key_id, if (id_size == key_id->size && !memcmp(id, key_id->data, id_size)) result = 1; - out: +out: return result; } @@ -1721,13 +1691,13 @@ _gnutls_check_valid_key_id(const gnutls_datum_t * key_id, * It will return 3, meaning that the first segment contains [G, H, I]. At this * point, sorting of @clist is complete. */ -unsigned int _gnutls_sort_clist(gnutls_x509_crt_t * clist, +unsigned int _gnutls_sort_clist(gnutls_x509_crt_t *clist, unsigned int clist_size) { int prev; unsigned int i, j, k; - int issuer[DEFAULT_MAX_VERIFY_DEPTH]; /* contain the index of the issuers */ - bool insorted[DEFAULT_MAX_VERIFY_DEPTH]; /* non zero if clist[i] used in sorted list */ + int issuer[DEFAULT_MAX_VERIFY_DEPTH]; /* contain the index of the issuers */ + bool insorted[DEFAULT_MAX_VERIFY_DEPTH]; /* non zero if clist[i] used in sorted list */ gnutls_x509_crt_t sorted[DEFAULT_MAX_VERIFY_DEPTH]; assert(clist_size <= DEFAULT_MAX_VERIFY_DEPTH); @@ -1767,7 +1737,7 @@ unsigned int _gnutls_sort_clist(gnutls_x509_crt_t * clist, prev = 0; for (i = 1; i < clist_size; i++) { prev = issuer[prev]; - if (prev < 0) { /* no issuer */ + if (prev < 0) { /* no issuer */ break; } @@ -1791,7 +1761,7 @@ unsigned int _gnutls_sort_clist(gnutls_x509_crt_t * clist, return i; } -int _gnutls_check_if_sorted(gnutls_x509_crt_t * crt, int nr) +int _gnutls_check_if_sorted(gnutls_x509_crt_t *crt, int nr) { int i, ret; @@ -1799,12 +1769,11 @@ int _gnutls_check_if_sorted(gnutls_x509_crt_t * crt, int nr) if (nr > 1) { for (i = 0; i < nr; i++) { if (i > 0) { - if (!_gnutls_x509_compare_raw_dn - (&crt[i]->raw_dn, - &crt[i - 1]->raw_issuer_dn)) { - ret = - gnutls_assert_val - (GNUTLS_E_CERTIFICATE_LIST_UNSORTED); + if (!_gnutls_x509_compare_raw_dn( + &crt[i]->raw_dn, + &crt[i - 1]->raw_issuer_dn)) { + ret = gnutls_assert_val( + GNUTLS_E_CERTIFICATE_LIST_UNSORTED); goto cleanup; } } @@ -1812,7 +1781,7 @@ int _gnutls_check_if_sorted(gnutls_x509_crt_t * crt, int nr) } ret = 0; - cleanup: +cleanup: return ret; } @@ -1912,7 +1881,7 @@ int _gnutls_x509_get_version(asn1_node root, const char *name) result = asn1_read_value(root, name, version, &len); if (result != ASN1_SUCCESS) { if (result == ASN1_ELEMENT_NOT_FOUND) - return 1; /* the DEFAULT version */ + return 1; /* the DEFAULT version */ gnutls_assert(); return _gnutls_asn2err(result); } diff --git a/lib/x509/common.h b/lib/x509/common.h index 51f8faab19..52d5d8f040 100644 --- a/lib/x509/common.h +++ b/lib/x509/common.h @@ -22,114 +22,114 @@ */ #ifndef GNUTLS_LIB_X509_COMMON_H -# define GNUTLS_LIB_X509_COMMON_H +#define GNUTLS_LIB_X509_COMMON_H -# include -# include -# include -# include +#include +#include +#include +#include -# define MAX_STRING_LEN 512 +#define MAX_STRING_LEN 512 -# if defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION) -# define MAX_ITER_COUNT 10*1024 -# else +#if defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION) +#define MAX_ITER_COUNT 10 * 1024 +#else /* Set a maximum iteration count over which we refuse to * decode a file. That is to prevent DoS. */ -# define MAX_ITER_COUNT (10*1024*1024) -# endif +#define MAX_ITER_COUNT (10 * 1024 * 1024) +#endif -# define GNUTLS_XML_SHOW_ALL 1 +#define GNUTLS_XML_SHOW_ALL 1 -# define PEM_CRL "X509 CRL" -# define PEM_X509_CERT "X509 CERTIFICATE" -# define PEM_X509_CERT2 "CERTIFICATE" -# define PEM_PKCS7 "PKCS7" -# define PEM_PKCS12 "PKCS12" -# define PEM_PK "PUBLIC KEY" +#define PEM_CRL "X509 CRL" +#define PEM_X509_CERT "X509 CERTIFICATE" +#define PEM_X509_CERT2 "CERTIFICATE" +#define PEM_PKCS7 "PKCS7" +#define PEM_PKCS12 "PKCS12" +#define PEM_PK "PUBLIC KEY" /* public key algorithm's OIDs */ -# define PK_PKIX1_RSA_OID "1.2.840.113549.1.1.1" -# define PK_PKIX1_RSA_PSS_OID "1.2.840.113549.1.1.10" -# define PK_X509_RSA_OID "2.5.8.1.1" -# define PK_DSA_OID "1.2.840.10040.4.1" -# define PK_GOST_R3410_94_OID "1.2.643.2.2.20" -# define PK_GOST_R3410_2001_OID "1.2.643.2.2.19" -# define PK_GOST_R3410_2012_256_OID "1.2.643.7.1.1.1.1" -# define PK_GOST_R3410_2012_512_OID "1.2.643.7.1.1.1.2" +#define PK_PKIX1_RSA_OID "1.2.840.113549.1.1.1" +#define PK_PKIX1_RSA_PSS_OID "1.2.840.113549.1.1.10" +#define PK_X509_RSA_OID "2.5.8.1.1" +#define PK_DSA_OID "1.2.840.10040.4.1" +#define PK_GOST_R3410_94_OID "1.2.643.2.2.20" +#define PK_GOST_R3410_2001_OID "1.2.643.2.2.19" +#define PK_GOST_R3410_2012_256_OID "1.2.643.7.1.1.1.1" +#define PK_GOST_R3410_2012_512_OID "1.2.643.7.1.1.1.2" /* signature OIDs */ -# define SIG_DSA_SHA1_OID "1.2.840.10040.4.3" +#define SIG_DSA_SHA1_OID "1.2.840.10040.4.3" /* those two from draft-ietf-pkix-sha2-dsa-ecdsa-06 */ -# define SIG_DSA_SHA224_OID "2.16.840.1.101.3.4.3.1" -# define SIG_DSA_SHA256_OID "2.16.840.1.101.3.4.3.2" -# define SIG_DSA_SHA384_OID "2.16.840.1.101.3.4.3.3" -# define SIG_DSA_SHA512_OID "2.16.840.1.101.3.4.3.4" - -# define SIG_RSA_MD5_OID "1.2.840.113549.1.1.4" -# define SIG_RSA_MD2_OID "1.2.840.113549.1.1.2" -# define SIG_RSA_SHA1_OID "1.2.840.113549.1.1.5" -# define SIG_RSA_SHA224_OID "1.2.840.113549.1.1.14" -# define SIG_RSA_SHA256_OID "1.2.840.113549.1.1.11" -# define SIG_RSA_SHA384_OID "1.2.840.113549.1.1.12" -# define SIG_RSA_SHA512_OID "1.2.840.113549.1.1.13" -# define SIG_RSA_RMD160_OID "1.3.36.3.3.1.2" -# define SIG_GOST_R3410_94_OID "1.2.643.2.2.4" -# define SIG_GOST_R3410_2001_OID "1.2.643.2.2.3" -# define SIG_GOST_R3410_2012_256_OID "1.2.643.7.1.1.3.2" -# define SIG_GOST_R3410_2012_512_OID "1.2.643.7.1.1.3.3" -# define ISO_SIG_RSA_SHA1_OID "1.3.14.3.2.29" - -# define SIG_DSA_SHA3_224_OID "2.16.840.1.101.3.4.3.5" -# define SIG_DSA_SHA3_256_OID "2.16.840.1.101.3.4.3.6" -# define SIG_DSA_SHA3_384_OID "2.16.840.1.101.3.4.3.7" -# define SIG_DSA_SHA3_512_OID "2.16.840.1.101.3.4.3.8" - -# define SIG_ECDSA_SHA3_224_OID "2.16.840.1.101.3.4.3.9" -# define SIG_ECDSA_SHA3_256_OID "2.16.840.1.101.3.4.3.10" -# define SIG_ECDSA_SHA3_384_OID "2.16.840.1.101.3.4.3.11" -# define SIG_ECDSA_SHA3_512_OID "2.16.840.1.101.3.4.3.12" - -# define SIG_RSA_SHA3_224_OID "2.16.840.1.101.3.4.3.13" -# define SIG_RSA_SHA3_256_OID "2.16.840.1.101.3.4.3.14" -# define SIG_RSA_SHA3_384_OID "2.16.840.1.101.3.4.3.15" -# define SIG_RSA_SHA3_512_OID "2.16.840.1.101.3.4.3.16" - -# define ECDH_X25519_OID "1.3.101.110" -# define ECDH_X448_OID "1.3.101.111" - -# define SIG_EDDSA_SHA512_OID "1.3.101.112" -# define SIG_ED448_OID "1.3.101.113" - -# define XMPP_OID "1.3.6.1.5.5.7.8.5" -# define KRB5_PRINCIPAL_OID "1.3.6.1.5.2.2" -# define MSUSER_PRINCIPAL_NAME_OID "1.3.6.1.4.1.311.20.2.3" -# define PKIX1_RSA_PSS_MGF1_OID "1.2.840.113549.1.1.8" - -# define GOST28147_89_OID "1.2.643.2.2.21" -# define GOST28147_89_TC26Z_OID "1.2.643.7.1.2.5.1.1" -# define GOST28147_89_CPA_OID "1.2.643.2.2.31.1" -# define GOST28147_89_CPB_OID "1.2.643.2.2.31.2" -# define GOST28147_89_CPC_OID "1.2.643.2.2.31.3" -# define GOST28147_89_CPD_OID "1.2.643.2.2.31.4" - -# define ASN1_NULL "\x05\x00" -# define ASN1_NULL_SIZE 2 +#define SIG_DSA_SHA224_OID "2.16.840.1.101.3.4.3.1" +#define SIG_DSA_SHA256_OID "2.16.840.1.101.3.4.3.2" +#define SIG_DSA_SHA384_OID "2.16.840.1.101.3.4.3.3" +#define SIG_DSA_SHA512_OID "2.16.840.1.101.3.4.3.4" + +#define SIG_RSA_MD5_OID "1.2.840.113549.1.1.4" +#define SIG_RSA_MD2_OID "1.2.840.113549.1.1.2" +#define SIG_RSA_SHA1_OID "1.2.840.113549.1.1.5" +#define SIG_RSA_SHA224_OID "1.2.840.113549.1.1.14" +#define SIG_RSA_SHA256_OID "1.2.840.113549.1.1.11" +#define SIG_RSA_SHA384_OID "1.2.840.113549.1.1.12" +#define SIG_RSA_SHA512_OID "1.2.840.113549.1.1.13" +#define SIG_RSA_RMD160_OID "1.3.36.3.3.1.2" +#define SIG_GOST_R3410_94_OID "1.2.643.2.2.4" +#define SIG_GOST_R3410_2001_OID "1.2.643.2.2.3" +#define SIG_GOST_R3410_2012_256_OID "1.2.643.7.1.1.3.2" +#define SIG_GOST_R3410_2012_512_OID "1.2.643.7.1.1.3.3" +#define ISO_SIG_RSA_SHA1_OID "1.3.14.3.2.29" + +#define SIG_DSA_SHA3_224_OID "2.16.840.1.101.3.4.3.5" +#define SIG_DSA_SHA3_256_OID "2.16.840.1.101.3.4.3.6" +#define SIG_DSA_SHA3_384_OID "2.16.840.1.101.3.4.3.7" +#define SIG_DSA_SHA3_512_OID "2.16.840.1.101.3.4.3.8" + +#define SIG_ECDSA_SHA3_224_OID "2.16.840.1.101.3.4.3.9" +#define SIG_ECDSA_SHA3_256_OID "2.16.840.1.101.3.4.3.10" +#define SIG_ECDSA_SHA3_384_OID "2.16.840.1.101.3.4.3.11" +#define SIG_ECDSA_SHA3_512_OID "2.16.840.1.101.3.4.3.12" + +#define SIG_RSA_SHA3_224_OID "2.16.840.1.101.3.4.3.13" +#define SIG_RSA_SHA3_256_OID "2.16.840.1.101.3.4.3.14" +#define SIG_RSA_SHA3_384_OID "2.16.840.1.101.3.4.3.15" +#define SIG_RSA_SHA3_512_OID "2.16.840.1.101.3.4.3.16" + +#define ECDH_X25519_OID "1.3.101.110" +#define ECDH_X448_OID "1.3.101.111" + +#define SIG_EDDSA_SHA512_OID "1.3.101.112" +#define SIG_ED448_OID "1.3.101.113" + +#define XMPP_OID "1.3.6.1.5.5.7.8.5" +#define KRB5_PRINCIPAL_OID "1.3.6.1.5.2.2" +#define MSUSER_PRINCIPAL_NAME_OID "1.3.6.1.4.1.311.20.2.3" +#define PKIX1_RSA_PSS_MGF1_OID "1.2.840.113549.1.1.8" + +#define GOST28147_89_OID "1.2.643.2.2.21" +#define GOST28147_89_TC26Z_OID "1.2.643.7.1.2.5.1.1" +#define GOST28147_89_CPA_OID "1.2.643.2.2.31.1" +#define GOST28147_89_CPB_OID "1.2.643.2.2.31.2" +#define GOST28147_89_CPC_OID "1.2.643.2.2.31.3" +#define GOST28147_89_CPD_OID "1.2.643.2.2.31.4" + +#define ASN1_NULL "\x05\x00" +#define ASN1_NULL_SIZE 2 struct oid_to_string { const char *oid; unsigned oid_size; const char *name_desc; unsigned name_desc_size; - const char *asn_desc; /* description in the pkix file if complex type */ - unsigned int etype; /* the libtasn1 ASN1_ETYPE or INVALID + const char *asn_desc; /* description in the pkix file if complex type */ + unsigned int etype; /* the libtasn1 ASN1_ETYPE or INVALID * if cannot be simply parsed */ }; -const struct oid_to_string *_gnutls_oid_get_entry(const struct oid_to_string - *ots, const char *oid); +const struct oid_to_string * +_gnutls_oid_get_entry(const struct oid_to_string *ots, const char *oid); const char *_gnutls_oid_get_asn_desc(const char *oid); @@ -137,16 +137,15 @@ int _gnutls_x509_set_time(asn1_node c2, const char *where, time_t tim, int force_general); int _gnutls_x509_set_raw_time(asn1_node c2, const char *where, time_t tim); -int _gnutls_x509_decode_string(unsigned int etype, - const uint8_t * der, size_t der_size, - gnutls_datum_t * output, unsigned allow_ber); +int _gnutls_x509_decode_string(unsigned int etype, const uint8_t *der, + size_t der_size, gnutls_datum_t *output, + unsigned allow_ber); -int _gnutls_x509_encode_string(unsigned int etype, - const void *input_data, size_t input_size, - gnutls_datum_t * output); +int _gnutls_x509_encode_string(unsigned int etype, const void *input_data, + size_t input_size, gnutls_datum_t *output); -int _gnutls_x509_dn_to_string(const char *OID, void *value, - int value_size, gnutls_datum_t * out); +int _gnutls_x509_dn_to_string(const char *OID, void *value, int value_size, + gnutls_datum_t *out); const char *_gnutls_ldap_string_to_oid(const char *str, unsigned str_len); time_t _gnutls_x509_get_time(asn1_node c2, const char *when, int general); @@ -157,10 +156,10 @@ int _gnutls_x509_der_encode_and_copy(asn1_node src, const char *src_name, asn1_node dest, const char *dest_name, int str); int _gnutls_x509_der_encode(asn1_node src, const char *src_name, - gnutls_datum_t * res, int str); + gnutls_datum_t *res, int str); -# define _gnutls_x509_export_int(asn1, format, header, out, out_size) \ - _gnutls_x509_export_int_named(asn1, "", format, header, out, out_size) +#define _gnutls_x509_export_int(asn1, format, header, out, out_size) \ + _gnutls_x509_export_int_named(asn1, "", format, header, out, out_size) int _gnutls_x509_export_int_named(asn1_node asn1_data, const char *name, gnutls_x509_crt_fmt_t format, @@ -168,89 +167,79 @@ int _gnutls_x509_export_int_named(asn1_node asn1_data, const char *name, unsigned char *output_data, size_t *output_data_size); -# define _gnutls_x509_export_int2(asn1, format, header, out) \ - _gnutls_x509_export_int_named2(asn1, "", format, header, out) +#define _gnutls_x509_export_int2(asn1, format, header, out) \ + _gnutls_x509_export_int_named2(asn1, "", format, header, out) int _gnutls_x509_export_int_named2(asn1_node asn1_data, const char *name, gnutls_x509_crt_fmt_t format, - const char *pem_header, - gnutls_datum_t * out); + const char *pem_header, gnutls_datum_t *out); -int _gnutls_x509_read_value(asn1_node c, const char *root, - gnutls_datum_t * ret); +int _gnutls_x509_read_value(asn1_node c, const char *root, gnutls_datum_t *ret); int _gnutls_x509_read_null_value(asn1_node c, const char *root, - gnutls_datum_t * ret); -int _gnutls_x509_read_string(asn1_node c, const char *root, - gnutls_datum_t * ret, unsigned int etype, - unsigned allow_ber); + gnutls_datum_t *ret); +int _gnutls_x509_read_string(asn1_node c, const char *root, gnutls_datum_t *ret, + unsigned int etype, unsigned allow_ber); int _gnutls_x509_write_value(asn1_node c, const char *root, - const gnutls_datum_t * data); + const gnutls_datum_t *data); int _gnutls_x509_write_string(asn1_node c, const char *root, - const gnutls_datum_t * data, unsigned int etype); + const gnutls_datum_t *data, unsigned int etype); int _gnutls_x509_encode_and_write_attribute(const char *given_oid, asn1_node asn1_struct, - const char *where, - const void *data, + const char *where, const void *data, int sizeof_data, int multi); int _gnutls_x509_decode_and_read_attribute(asn1_node asn1_struct, const char *where, char *oid, - int oid_size, - gnutls_datum_t * value, + int oid_size, gnutls_datum_t *value, int multi, int octet); int _gnutls_x509_get_pk_algorithm(asn1_node src, const char *src_name, - gnutls_ecc_curve_t * curve, + gnutls_ecc_curve_t *curve, unsigned int *bits); int _gnutls_x509_get_signature_algorithm(asn1_node src, const char *src_name); -int _gnutls_x509_encode_and_copy_PKI_params(asn1_node dst, - const char *dst_name, - const gnutls_pk_params_st * params); -int _gnutls_x509_encode_PKI_params(gnutls_datum_t * der, - const gnutls_pk_params_st * params); -int _gnutls_asn1_copy_node(asn1_node * dst, const char *dst_name, - asn1_node src, const char *src_name); +int _gnutls_x509_encode_and_copy_PKI_params(asn1_node dst, const char *dst_name, + const gnutls_pk_params_st *params); +int _gnutls_x509_encode_PKI_params(gnutls_datum_t *der, + const gnutls_pk_params_st *params); +int _gnutls_asn1_copy_node(asn1_node *dst, const char *dst_name, asn1_node src, + const char *src_name); -int _gnutls_x509_get_signed_data(asn1_node src, const gnutls_datum_t * der, +int _gnutls_x509_get_signed_data(asn1_node src, const gnutls_datum_t *der, const char *src_name, - gnutls_datum_t * signed_data); + gnutls_datum_t *signed_data); int _gnutls_x509_get_signature(asn1_node src, const char *src_name, - gnutls_datum_t * signature); + gnutls_datum_t *signature); int _gnutls_get_asn_mpis(asn1_node asn, const char *root, - gnutls_pk_params_st * params); + gnutls_pk_params_st *params); -int _gnutls_get_key_id(gnutls_pk_params_st *, - unsigned char *output_data, +int _gnutls_get_key_id(gnutls_pk_params_st *, unsigned char *output_data, size_t *output_data_size, unsigned flags); void _asnstr_append_name(char *name, size_t name_size, const char *part1, const char *part2); /* Given a @c2 which it returns an allocated DER encoding of @whom in @out */ -inline static int -_gnutls_x509_get_raw_field(asn1_node c2, const char *whom, gnutls_datum_t * out) +inline static int _gnutls_x509_get_raw_field(asn1_node c2, const char *whom, + gnutls_datum_t *out) { return _gnutls_x509_der_encode(c2, whom, out, 0); } -int -_gnutls_x509_get_raw_field2(asn1_node c2, const gnutls_datum_t * raw, - const char *whom, gnutls_datum_t * dn); +int _gnutls_x509_get_raw_field2(asn1_node c2, const gnutls_datum_t *raw, + const char *whom, gnutls_datum_t *dn); -unsigned -_gnutls_check_if_same_key(gnutls_x509_crt_t cert1, - gnutls_x509_crt_t cert2, unsigned is_ca); +unsigned _gnutls_check_if_same_key(gnutls_x509_crt_t cert1, + gnutls_x509_crt_t cert2, unsigned is_ca); -unsigned -_gnutls_check_if_same_key2(gnutls_x509_crt_t cert1, gnutls_datum_t * cert2bin); +unsigned _gnutls_check_if_same_key2(gnutls_x509_crt_t cert1, + gnutls_datum_t *cert2bin); -unsigned -_gnutls_check_valid_key_id(const gnutls_datum_t * key_id, - gnutls_x509_crt_t cert, time_t now, - unsigned *has_ski); +unsigned _gnutls_check_valid_key_id(const gnutls_datum_t *key_id, + gnutls_x509_crt_t cert, time_t now, + unsigned *has_ski); unsigned _gnutls_check_key_purpose(gnutls_x509_crt_t cert, const char *purpose, unsigned no_any); @@ -260,48 +249,47 @@ time_t _gnutls_utcTime2gtime(const char *ttime); int _gnutls_get_extension(asn1_node asn, const char *root, const char *extension_id, int indx, - gnutls_datum_t * ret, unsigned int *_critical); + gnutls_datum_t *ret, unsigned int *_critical); -int _gnutls_set_extension(asn1_node asn, const char *root, - const char *ext_id, - const gnutls_datum_t * ext_data, +int _gnutls_set_extension(asn1_node asn, const char *root, const char *ext_id, + const gnutls_datum_t *ext_data, unsigned int critical); -int _gnutls_strdatum_to_buf(gnutls_datum_t * d, void *buf, size_t *sizeof_buf); +int _gnutls_strdatum_to_buf(gnutls_datum_t *d, void *buf, size_t *sizeof_buf); unsigned _gnutls_is_same_dn(gnutls_x509_crt_t cert1, gnutls_x509_crt_t cert2); -int _gnutls_copy_string(const gnutls_datum_t * str, uint8_t * out, +int _gnutls_copy_string(const gnutls_datum_t *str, uint8_t *out, size_t *out_size); -int _gnutls_copy_data(const gnutls_datum_t * str, uint8_t * out, +int _gnutls_copy_data(const gnutls_datum_t *str, uint8_t *out, size_t *out_size); -int _gnutls_x509_decode_ext(const gnutls_datum_t * der, - gnutls_x509_ext_st * out); -int _gnutls_x509_raw_crt_to_raw_pubkey(const gnutls_datum_t * cert, - gnutls_datum_t * rpubkey); +int _gnutls_x509_decode_ext(const gnutls_datum_t *der, gnutls_x509_ext_st *out); +int _gnutls_x509_raw_crt_to_raw_pubkey(const gnutls_datum_t *cert, + gnutls_datum_t *rpubkey); int _gnutls_x509_get_version(asn1_node root, const char *name); -int x509_crt_to_raw_pubkey(gnutls_x509_crt_t crt, gnutls_datum_t * rpubkey); +int x509_crt_to_raw_pubkey(gnutls_x509_crt_t crt, gnutls_datum_t *rpubkey); typedef void (*gnutls_cert_vfunc)(gnutls_x509_crt_t); -unsigned int _gnutls_sort_clist(gnutls_x509_crt_t * clist, +unsigned int _gnutls_sort_clist(gnutls_x509_crt_t *clist, unsigned int clist_size); -int _gnutls_check_if_sorted(gnutls_x509_crt_t * crt, int nr); +int _gnutls_check_if_sorted(gnutls_x509_crt_t *crt, int nr); -inline static int _asn1_strict_der_decode(asn1_node * element, const void *ider, +inline static int _asn1_strict_der_decode(asn1_node *element, const void *ider, int len, char *errorDescription) { -# if defined(STRICT_DER_TIME) || !defined(ASN1_DECODE_FLAG_ALLOW_INCORRECT_TIME) -# define _ASN1_DER_FLAGS ASN1_DECODE_FLAG_STRICT_DER -# else -# define _ASN1_DER_FLAGS (ASN1_DECODE_FLAG_ALLOW_INCORRECT_TIME|ASN1_DECODE_FLAG_STRICT_DER) -# endif +#if defined(STRICT_DER_TIME) || !defined(ASN1_DECODE_FLAG_ALLOW_INCORRECT_TIME) +#define _ASN1_DER_FLAGS ASN1_DECODE_FLAG_STRICT_DER +#else +#define _ASN1_DER_FLAGS \ + (ASN1_DECODE_FLAG_ALLOW_INCORRECT_TIME | ASN1_DECODE_FLAG_STRICT_DER) +#endif return asn1_der_decoding2(element, ider, &len, _ASN1_DER_FLAGS, errorDescription); } -#endif /* GNUTLS_LIB_X509_COMMON_H */ +#endif /* GNUTLS_LIB_X509_COMMON_H */ diff --git a/lib/x509/crl.c b/lib/x509/crl.c index 42367dba9c..e7db906824 100644 --- a/lib/x509/crl.c +++ b/lib/x509/crl.c @@ -65,7 +65,7 @@ static int crl_reinit(gnutls_x509_crl_t crl) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int gnutls_x509_crl_init(gnutls_x509_crl_t * crl) +int gnutls_x509_crl_init(gnutls_x509_crl_t *crl) { *crl = NULL; FAIL_IF_LIB_ERROR; @@ -79,7 +79,7 @@ int gnutls_x509_crl_init(gnutls_x509_crl_t * crl) gnutls_free(*crl); return result; } - return 0; /* success */ + return 0; /* success */ } return GNUTLS_E_MEMORY_ERROR; } @@ -116,10 +116,8 @@ void gnutls_x509_crl_deinit(gnutls_x509_crl_t crl) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crl_import(gnutls_x509_crl_t crl, - const gnutls_datum_t * data, - gnutls_x509_crt_fmt_t format) +int gnutls_x509_crl_import(gnutls_x509_crl_t crl, const gnutls_datum_t *data, + gnutls_x509_crt_fmt_t format) { int result = 0; @@ -133,9 +131,8 @@ gnutls_x509_crl_import(gnutls_x509_crl_t crl, /* If the CRL is in PEM format then decode it */ if (format == GNUTLS_X509_FMT_PEM) { - result = - _gnutls_fbase64_decode(PEM_CRL, data->data, data->size, - &crl->der); + result = _gnutls_fbase64_decode(PEM_CRL, data->data, data->size, + &crl->der); if (result < 0) { gnutls_assert(); @@ -158,9 +155,8 @@ gnutls_x509_crl_import(gnutls_x509_crl_t crl, } crl->expanded = 1; - result = - _asn1_strict_der_decode(&crl->crl, crl->der.data, crl->der.size, - NULL); + result = _asn1_strict_der_decode(&crl->crl, crl->der.data, + crl->der.size, NULL); if (result != ASN1_SUCCESS) { result = _gnutls_asn2err(result); gnutls_assert(); @@ -177,7 +173,7 @@ gnutls_x509_crl_import(gnutls_x509_crl_t crl, return 0; - cleanup: +cleanup: _gnutls_free_datum(&crl->der); return result; } @@ -203,17 +199,15 @@ gnutls_x509_crl_import(gnutls_x509_crl_t crl, * with the required size, and 0 on success. * **/ -int -gnutls_x509_crl_get_issuer_dn(gnutls_x509_crl_t crl, char *buf, - size_t *sizeof_buf) +int gnutls_x509_crl_get_issuer_dn(gnutls_x509_crl_t crl, char *buf, + size_t *sizeof_buf) { if (crl == NULL) { gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; } - return _gnutls_x509_parse_dn(crl->crl, - "tbsCertList.issuer.rdnSequence", + return _gnutls_x509_parse_dn(crl->crl, "tbsCertList.issuer.rdnSequence", buf, sizeof_buf, GNUTLS_X509_DN_FLAG_COMPAT); } @@ -244,11 +238,9 @@ gnutls_x509_crl_get_issuer_dn(gnutls_x509_crl_t crl, char *buf, * not long enough, and in that case the sizeof_buf will be updated * with the required size, and 0 on success. **/ -int -gnutls_x509_crl_get_issuer_dn_by_oid(gnutls_x509_crl_t crl, - const char *oid, unsigned indx, - unsigned int raw_flag, void *buf, - size_t *sizeof_buf) +int gnutls_x509_crl_get_issuer_dn_by_oid(gnutls_x509_crl_t crl, const char *oid, + unsigned indx, unsigned int raw_flag, + void *buf, size_t *sizeof_buf) { gnutls_datum_t td; int ret; @@ -259,8 +251,8 @@ gnutls_x509_crl_get_issuer_dn_by_oid(gnutls_x509_crl_t crl, } ret = _gnutls_x509_parse_dn_oid(crl->crl, - "tbsCertList.issuer.rdnSequence", - oid, indx, raw_flag, &td); + "tbsCertList.issuer.rdnSequence", oid, + indx, raw_flag, &td); if (ret < 0) return gnutls_assert_val(ret); @@ -283,9 +275,8 @@ gnutls_x509_crl_get_issuer_dn_by_oid(gnutls_x509_crl_t crl, * not long enough, and in that case the sizeof_oid will be updated * with the required size. On success 0 is returned. **/ -int -gnutls_x509_crl_get_dn_oid(gnutls_x509_crl_t crl, - unsigned indx, void *oid, size_t *sizeof_oid) +int gnutls_x509_crl_get_dn_oid(gnutls_x509_crl_t crl, unsigned indx, void *oid, + size_t *sizeof_oid) { if (crl == NULL) { gnutls_assert(); @@ -293,8 +284,8 @@ gnutls_x509_crl_get_dn_oid(gnutls_x509_crl_t crl, } return _gnutls_x509_get_dn_oid(crl->crl, - "tbsCertList.issuer.rdnSequence", - indx, oid, sizeof_oid); + "tbsCertList.issuer.rdnSequence", indx, + oid, sizeof_oid); } /** @@ -315,15 +306,14 @@ gnutls_x509_crl_get_dn_oid(gnutls_x509_crl_t crl, * * Since: 3.1.10 **/ -int gnutls_x509_crl_get_issuer_dn2(gnutls_x509_crl_t crl, gnutls_datum_t * dn) +int gnutls_x509_crl_get_issuer_dn2(gnutls_x509_crl_t crl, gnutls_datum_t *dn) { if (crl == NULL) { gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; } - return _gnutls_x509_get_dn(crl->crl, - "tbsCertList.issuer.rdnSequence", + return _gnutls_x509_get_dn(crl->crl, "tbsCertList.issuer.rdnSequence", dn, GNUTLS_X509_DN_FLAG_COMPAT); } @@ -347,17 +337,16 @@ int gnutls_x509_crl_get_issuer_dn2(gnutls_x509_crl_t crl, gnutls_datum_t * dn) * * Since: 3.5.7 **/ -int -gnutls_x509_crl_get_issuer_dn3(gnutls_x509_crl_t crl, gnutls_datum_t * dn, - unsigned flags) +int gnutls_x509_crl_get_issuer_dn3(gnutls_x509_crl_t crl, gnutls_datum_t *dn, + unsigned flags) { if (crl == NULL) { gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; } - return _gnutls_x509_get_dn(crl->crl, - "tbsCertList.issuer.rdnSequence", dn, flags); + return _gnutls_x509_get_dn(crl->crl, "tbsCertList.issuer.rdnSequence", + dn, flags); } /** @@ -375,8 +364,8 @@ gnutls_x509_crl_get_issuer_dn3(gnutls_x509_crl_t crl, gnutls_datum_t * dn, **/ int gnutls_x509_crl_get_signature_algorithm(gnutls_x509_crl_t crl) { - return map_errs_to_zero(_gnutls_x509_get_signature_algorithm(crl->crl, - "signatureAlgorithm")); + return map_errs_to_zero(_gnutls_x509_get_signature_algorithm( + crl->crl, "signatureAlgorithm")); } /** @@ -402,9 +391,8 @@ int gnutls_x509_crl_get_signature_oid(gnutls_x509_crl_t crl, char *oid, gnutls_datum_t out; len = sizeof(str); - result = - asn1_read_value(crl->crl, "signatureAlgorithm.algorithm", str, - &len); + result = asn1_read_value(crl->crl, "signatureAlgorithm.algorithm", str, + &len); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -433,9 +421,8 @@ int gnutls_x509_crl_get_signature_oid(gnutls_x509_crl_t crl, char *oid, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crl_get_signature(gnutls_x509_crl_t crl, - char *sig, size_t *sizeof_sig) +int gnutls_x509_crl_get_signature(gnutls_x509_crl_t crl, char *sig, + size_t *sizeof_sig) { int result; unsigned int bits; @@ -506,7 +493,7 @@ time_t gnutls_x509_crl_get_this_update(gnutls_x509_crl_t crl) { if (crl == NULL) { gnutls_assert(); - return (time_t) - 1; + return (time_t)-1; } return _gnutls_x509_get_time(crl->crl, "tbsCertList.thisUpdate", 0); @@ -526,7 +513,7 @@ time_t gnutls_x509_crl_get_next_update(gnutls_x509_crl_t crl) { if (crl == NULL) { gnutls_assert(); - return (time_t) - 1; + return (time_t)-1; } return _gnutls_x509_get_time(crl->crl, "tbsCertList.nextUpdate", 0); @@ -543,7 +530,6 @@ time_t gnutls_x509_crl_get_next_update(gnutls_x509_crl_t crl) **/ int gnutls_x509_crl_get_crt_count(gnutls_x509_crl_t crl) { - int count, result; if (crl == NULL) { @@ -551,13 +537,12 @@ int gnutls_x509_crl_get_crt_count(gnutls_x509_crl_t crl) return GNUTLS_E_INVALID_REQUEST; } - result = - asn1_number_of_elements(crl->crl, - "tbsCertList.revokedCertificates", &count); + result = asn1_number_of_elements( + crl->crl, "tbsCertList.revokedCertificates", &count); if (result != ASN1_SUCCESS) { gnutls_assert(); - return 0; /* no certificates */ + return 0; /* no certificates */ } return count; @@ -580,12 +565,10 @@ int gnutls_x509_crl_get_crt_count(gnutls_x509_crl_t crl) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crl_get_crt_serial(gnutls_x509_crl_t crl, unsigned indx, - unsigned char *serial, - size_t *serial_size, time_t * t) +int gnutls_x509_crl_get_crt_serial(gnutls_x509_crl_t crl, unsigned indx, + unsigned char *serial, size_t *serial_size, + time_t *t) { - int result, _serial_size; char serial_name[MAX_NAME_SIZE]; char date_name[MAX_NAME_SIZE]; @@ -655,13 +638,11 @@ void gnutls_x509_crl_iter_deinit(gnutls_x509_crl_iter_t iter) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crl_iter_crt_serial(gnutls_x509_crl_t crl, - gnutls_x509_crl_iter_t * iter, - unsigned char *serial, - size_t *serial_size, time_t * t) +int gnutls_x509_crl_iter_crt_serial(gnutls_x509_crl_t crl, + gnutls_x509_crl_iter_t *iter, + unsigned char *serial, size_t *serial_size, + time_t *t) { - int result, _serial_size; char serial_name[MAX_NAME_SIZE]; char date_name[MAX_NAME_SIZE]; @@ -678,13 +659,12 @@ gnutls_x509_crl_iter_crt_serial(gnutls_x509_crl_t crl, } if ((*iter)->rcache == NULL) { - (*iter)->rcache = - asn1_find_node(crl->crl, - "tbsCertList.revokedCertificates.?1"); + (*iter)->rcache = asn1_find_node( + crl->crl, "tbsCertList.revokedCertificates.?1"); (*iter)->rcache_idx = 1; } else { - snprintf(serial_name, sizeof(serial_name), - "?%u", (*iter)->rcache_idx); + snprintf(serial_name, sizeof(serial_name), "?%u", + (*iter)->rcache_idx); (*iter)->rcache = asn1_find_node((*iter)->rcache, serial_name); } if ((*iter)->rcache == NULL) { @@ -693,13 +673,12 @@ gnutls_x509_crl_iter_crt_serial(gnutls_x509_crl_t crl, return gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); } - snprintf(serial_name, sizeof(serial_name), - "?%u.userCertificate", (*iter)->rcache_idx); + snprintf(serial_name, sizeof(serial_name), "?%u.userCertificate", + (*iter)->rcache_idx); _serial_size = *serial_size; - result = - asn1_read_value((*iter)->rcache, serial_name, serial, - &_serial_size); + result = asn1_read_value((*iter)->rcache, serial_name, serial, + &_serial_size); *serial_size = _serial_size; if (result != ASN1_SUCCESS) { @@ -713,8 +692,8 @@ gnutls_x509_crl_iter_crt_serial(gnutls_x509_crl_t crl, } if (t) { - snprintf(date_name, sizeof(date_name), - "?%u.revocationDate", (*iter)->rcache_idx); + snprintf(date_name, sizeof(date_name), "?%u.revocationDate", + (*iter)->rcache_idx); *t = _gnutls_x509_get_time((*iter)->rcache, date_name, 0); } @@ -735,16 +714,14 @@ gnutls_x509_crl_iter_crt_serial(gnutls_x509_crl_t crl, * * Since: 2.12.0 **/ -int -gnutls_x509_crl_get_raw_issuer_dn(gnutls_x509_crl_t crl, gnutls_datum_t * dn) +int gnutls_x509_crl_get_raw_issuer_dn(gnutls_x509_crl_t crl, gnutls_datum_t *dn) { if (crl->raw_issuer_dn.size != 0) { return _gnutls_set_datum(dn, crl->raw_issuer_dn.data, crl->raw_issuer_dn.size); } else { - return _gnutls_x509_get_raw_field(crl->crl, - "tbsCertList.issuer.rdnSequence", - dn); + return _gnutls_x509_get_raw_field( + crl->crl, "tbsCertList.issuer.rdnSequence", dn); } } @@ -767,18 +744,16 @@ gnutls_x509_crl_get_raw_issuer_dn(gnutls_x509_crl_t crl, gnutls_datum_t * dn) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crl_export(gnutls_x509_crl_t crl, - gnutls_x509_crt_fmt_t format, void *output_data, - size_t *output_data_size) +int gnutls_x509_crl_export(gnutls_x509_crl_t crl, gnutls_x509_crt_fmt_t format, + void *output_data, size_t *output_data_size) { if (crl == NULL) { gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; } - return _gnutls_x509_export_int(crl->crl, format, PEM_CRL, - output_data, output_data_size); + return _gnutls_x509_export_int(crl->crl, format, PEM_CRL, output_data, + output_data_size); } /** @@ -799,9 +774,8 @@ gnutls_x509_crl_export(gnutls_x509_crl_t crl, * * Since 3.1.3 **/ -int -gnutls_x509_crl_export2(gnutls_x509_crl_t crl, - gnutls_x509_crt_fmt_t format, gnutls_datum_t * out) +int gnutls_x509_crl_export2(gnutls_x509_crl_t crl, gnutls_x509_crt_fmt_t format, + gnutls_datum_t *out) { if (crl == NULL) { gnutls_assert(); @@ -840,12 +814,10 @@ int _gnutls_x509_crl_cpy(gnutls_x509_crl_t dest, gnutls_x509_crl_t src) } return 0; - } -static int -_get_authority_key_id(gnutls_x509_crl_t cert, asn1_node * c2, - unsigned int *critical) +static int _get_authority_key_id(gnutls_x509_crl_t cert, asn1_node *c2, + unsigned int *critical) { int ret; gnutls_datum_t id; @@ -857,9 +829,8 @@ _get_authority_key_id(gnutls_x509_crl_t cert, asn1_node * c2, return GNUTLS_E_INVALID_REQUEST; } - if ((ret = - _gnutls_x509_crl_get_extension(cert, "2.5.29.35", 0, &id, - critical)) < 0) { + if ((ret = _gnutls_x509_crl_get_extension(cert, "2.5.29.35", 0, &id, + critical)) < 0) { return gnutls_assert_val(ret); } @@ -868,8 +839,8 @@ _get_authority_key_id(gnutls_x509_crl_t cert, asn1_node * c2, return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; } - ret = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.AuthorityKeyIdentifier", c2); + ret = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.AuthorityKeyIdentifier", c2); if (ret != ASN1_SUCCESS) { gnutls_assert(); _gnutls_free_datum(&id); @@ -911,15 +882,10 @@ _get_authority_key_id(gnutls_x509_crl_t cert, asn1_node * c2, * * Since: 3.0 **/ -int -gnutls_x509_crl_get_authority_key_gn_serial(gnutls_x509_crl_t crl, - unsigned int seq, - void *alt, - size_t *alt_size, - unsigned int *alt_type, - void *serial, - size_t *serial_size, - unsigned int *critical) +int gnutls_x509_crl_get_authority_key_gn_serial( + gnutls_x509_crl_t crl, unsigned int seq, void *alt, size_t *alt_size, + unsigned int *alt_type, void *serial, size_t *serial_size, + unsigned int *critical) { int ret, result, len; asn1_node c2; @@ -928,9 +894,8 @@ gnutls_x509_crl_get_authority_key_gn_serial(gnutls_x509_crl_t crl, if (ret < 0) return gnutls_assert_val(ret); - ret = - _gnutls_parse_general_name(c2, "authorityCertIssuer", seq, alt, - alt_size, alt_type, 0); + ret = _gnutls_parse_general_name(c2, "authorityCertIssuer", seq, alt, + alt_size, alt_type, 0); if (ret < 0) { ret = gnutls_assert_val(ret); goto fail; @@ -938,9 +903,8 @@ gnutls_x509_crl_get_authority_key_gn_serial(gnutls_x509_crl_t crl, if (serial) { len = *serial_size; - result = - asn1_read_value(c2, "authorityCertSerialNumber", - serial, &len); + result = asn1_read_value(c2, "authorityCertSerialNumber", + serial, &len); *serial_size = len; @@ -948,12 +912,11 @@ gnutls_x509_crl_get_authority_key_gn_serial(gnutls_x509_crl_t crl, ret = _gnutls_asn2err(result); goto fail; } - } ret = 0; - fail: +fail: asn1_delete_structure(&c2); return ret; @@ -980,9 +943,9 @@ gnutls_x509_crl_get_authority_key_gn_serial(gnutls_x509_crl_t crl, * * Since: 2.8.0 **/ -int -gnutls_x509_crl_get_authority_key_id(gnutls_x509_crl_t crl, void *id, - size_t *id_size, unsigned int *critical) +int gnutls_x509_crl_get_authority_key_id(gnutls_x509_crl_t crl, void *id, + size_t *id_size, + unsigned int *critical) { int result, len, ret; asn1_node c2; @@ -1024,9 +987,8 @@ gnutls_x509_crl_get_authority_key_id(gnutls_x509_crl_t crl, void *id, * * Since: 2.8.0 **/ -int -gnutls_x509_crl_get_number(gnutls_x509_crl_t crl, void *ret, - size_t *ret_size, unsigned int *critical) +int gnutls_x509_crl_get_number(gnutls_x509_crl_t crl, void *ret, + size_t *ret_size, unsigned int *critical) { int result; gnutls_datum_t id; @@ -1041,9 +1003,8 @@ gnutls_x509_crl_get_number(gnutls_x509_crl_t crl, void *ret, else *ret_size = 0; - if ((result = - _gnutls_x509_crl_get_extension(crl, "2.5.29.20", 0, &id, - critical)) < 0) { + if ((result = _gnutls_x509_crl_get_extension(crl, "2.5.29.20", 0, &id, + critical)) < 0) { return result; } @@ -1052,8 +1013,8 @@ gnutls_x509_crl_get_number(gnutls_x509_crl_t crl, void *ret, return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; } - result = - _gnutls_x509_ext_extract_number(ret, ret_size, id.data, id.size); + result = _gnutls_x509_ext_extract_number(ret, ret_size, id.data, + id.size); _gnutls_free_datum(&id); @@ -1083,9 +1044,8 @@ gnutls_x509_crl_get_number(gnutls_x509_crl_t crl, void *ret, * * Since: 2.8.0 **/ -int -gnutls_x509_crl_get_extension_oid(gnutls_x509_crl_t crl, unsigned indx, - void *oid, size_t *sizeof_oid) +int gnutls_x509_crl_get_extension_oid(gnutls_x509_crl_t crl, unsigned indx, + void *oid, size_t *sizeof_oid) { int result; @@ -1100,7 +1060,6 @@ gnutls_x509_crl_get_extension_oid(gnutls_x509_crl_t crl, unsigned indx, } return 0; - } /** @@ -1128,10 +1087,9 @@ gnutls_x509_crl_get_extension_oid(gnutls_x509_crl_t crl, unsigned indx, * * Since: 2.8.0 **/ -int -gnutls_x509_crl_get_extension_info(gnutls_x509_crl_t crl, unsigned indx, - void *oid, size_t *sizeof_oid, - unsigned int *critical) +int gnutls_x509_crl_get_extension_info(gnutls_x509_crl_t crl, unsigned indx, + void *oid, size_t *sizeof_oid, + unsigned int *critical) { int result; char str_critical[10]; @@ -1143,8 +1101,8 @@ gnutls_x509_crl_get_extension_info(gnutls_x509_crl_t crl, unsigned indx, return GNUTLS_E_INVALID_REQUEST; } - snprintf(name, sizeof(name), - "tbsCertList.crlExtensions.?%u.extnID", indx + 1); + snprintf(name, sizeof(name), "tbsCertList.crlExtensions.?%u.extnID", + indx + 1); len = *sizeof_oid; result = asn1_read_value(crl->crl, name, oid, &len); @@ -1157,8 +1115,8 @@ gnutls_x509_crl_get_extension_info(gnutls_x509_crl_t crl, unsigned indx, return _gnutls_asn2err(result); } - snprintf(name, sizeof(name), - "tbsCertList.crlExtensions.?%u.critical", indx + 1); + snprintf(name, sizeof(name), "tbsCertList.crlExtensions.?%u.critical", + indx + 1); len = sizeof(str_critical); result = asn1_read_value(crl->crl, name, str_critical, &len); if (result != ASN1_SUCCESS) { @@ -1174,7 +1132,6 @@ gnutls_x509_crl_get_extension_info(gnutls_x509_crl_t crl, unsigned indx, } return 0; - } /** @@ -1200,9 +1157,8 @@ gnutls_x509_crl_get_extension_info(gnutls_x509_crl_t crl, unsigned indx, * * Since: 2.8.0 **/ -int -gnutls_x509_crl_get_extension_data(gnutls_x509_crl_t crl, unsigned indx, - void *data, size_t *sizeof_data) +int gnutls_x509_crl_get_extension_data(gnutls_x509_crl_t crl, unsigned indx, + void *data, size_t *sizeof_data) { int result, len; char name[MAX_NAME_SIZE]; @@ -1212,8 +1168,8 @@ gnutls_x509_crl_get_extension_data(gnutls_x509_crl_t crl, unsigned indx, return GNUTLS_E_INVALID_REQUEST; } - snprintf(name, sizeof(name), - "tbsCertList.crlExtensions.?%u.extnValue", indx + 1); + snprintf(name, sizeof(name), "tbsCertList.crlExtensions.?%u.extnValue", + indx + 1); len = *sizeof_data; result = asn1_read_value(crl->crl, name, data, &len); @@ -1248,11 +1204,10 @@ gnutls_x509_crl_get_extension_data(gnutls_x509_crl_t crl, unsigned indx, * * Since: 3.0 **/ -int -gnutls_x509_crl_list_import2(gnutls_x509_crl_t ** crls, - unsigned int *size, - const gnutls_datum_t * data, - gnutls_x509_crt_fmt_t format, unsigned int flags) +int gnutls_x509_crl_list_import2(gnutls_x509_crl_t **crls, unsigned int *size, + const gnutls_datum_t *data, + gnutls_x509_crt_fmt_t format, + unsigned int flags) { unsigned int init = 1024; int ret; @@ -1263,10 +1218,9 @@ gnutls_x509_crl_list_import2(gnutls_x509_crl_t ** crls, return GNUTLS_E_MEMORY_ERROR; } - ret = - gnutls_x509_crl_list_import(*crls, &init, data, format, - flags | - GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED); + ret = gnutls_x509_crl_list_import( + *crls, &init, data, format, + flags | GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED); if (ret == GNUTLS_E_SHORT_MEMORY_BUFFER) { *crls = _gnutls_reallocarray_fast(*crls, init, sizeof(gnutls_x509_crl_t)); @@ -1275,9 +1229,8 @@ gnutls_x509_crl_list_import2(gnutls_x509_crl_t ** crls, return GNUTLS_E_MEMORY_ERROR; } - ret = - gnutls_x509_crl_list_import(*crls, &init, data, format, - flags); + ret = gnutls_x509_crl_list_import(*crls, &init, data, format, + flags); } if (ret < 0) { @@ -1308,11 +1261,10 @@ gnutls_x509_crl_list_import2(gnutls_x509_crl_t ** crls, * * Since: 3.0 **/ -int -gnutls_x509_crl_list_import(gnutls_x509_crl_t * crls, - unsigned int *crl_max, - const gnutls_datum_t * data, - gnutls_x509_crt_fmt_t format, unsigned int flags) +int gnutls_x509_crl_list_import(gnutls_x509_crl_t *crls, unsigned int *crl_max, + const gnutls_datum_t *data, + gnutls_x509_crt_fmt_t format, + unsigned int flags) { int size; const char *ptr; @@ -1326,7 +1278,7 @@ gnutls_x509_crl_list_import(gnutls_x509_crl_t * crls, return GNUTLS_E_SHORT_MEMORY_BUFFER; } - count = 1; /* import only the first one */ + count = 1; /* import only the first one */ ret = gnutls_x509_crl_init(&crls[0]); if (ret < 0) { @@ -1346,8 +1298,8 @@ gnutls_x509_crl_list_import(gnutls_x509_crl_t * crls, /* move to the certificate */ - ptr = memmem(data->data, data->size, - PEM_CRL_SEP, sizeof(PEM_CRL_SEP) - 1); + ptr = memmem(data->data, data->size, PEM_CRL_SEP, + sizeof(PEM_CRL_SEP) - 1); if (ptr == NULL) { gnutls_assert(); return GNUTLS_E_BASE64_DECODING_ERROR; @@ -1357,9 +1309,8 @@ gnutls_x509_crl_list_import(gnutls_x509_crl_t * crls, do { if (count >= *crl_max) { - if (! - (flags & - GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED)) { + if (!(flags & + GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED)) { break; } else if (nocopy == 0) { for (j = 0; j < count; j++) @@ -1377,9 +1328,8 @@ gnutls_x509_crl_list_import(gnutls_x509_crl_t * crls, tmp.data = (void *)ptr; tmp.size = data->size - (ptr - (char *)data->data); - ret = - gnutls_x509_crl_import(crls[count], &tmp, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crl_import(crls[count], &tmp, + GNUTLS_X509_FMT_PEM); if (ret < 0) { gnutls_assert(); count++; @@ -1395,15 +1345,13 @@ gnutls_x509_crl_list_import(gnutls_x509_crl_t * crls, size = data->size - (ptr - (char *)data->data); if (size > 0) { - ptr = - memmem(ptr, size, PEM_CRL_SEP, - sizeof(PEM_CRL_SEP) - 1); + ptr = memmem(ptr, size, PEM_CRL_SEP, + sizeof(PEM_CRL_SEP) - 1); } else ptr = NULL; count++; - } - while (ptr != NULL); + } while (ptr != NULL); *crl_max = count; @@ -1412,7 +1360,7 @@ gnutls_x509_crl_list_import(gnutls_x509_crl_t * crls, else return GNUTLS_E_SHORT_MEMORY_BUFFER; - error: +error: for (j = 0; j < count; j++) gnutls_x509_crl_deinit(crls[j]); return ret; diff --git a/lib/x509/crl_write.c b/lib/x509/crl_write.c index 1f3989a205..3385e70d12 100644 --- a/lib/x509/crl_write.c +++ b/lib/x509/crl_write.c @@ -96,10 +96,9 @@ int gnutls_x509_crl_set_version(gnutls_x509_crl_t crl, unsigned int version) * negative error value. * **/ -int -gnutls_x509_crl_sign2(gnutls_x509_crl_t crl, gnutls_x509_crt_t issuer, - gnutls_x509_privkey_t issuer_key, - gnutls_digest_algorithm_t dig, unsigned int flags) +int gnutls_x509_crl_sign2(gnutls_x509_crl_t crl, gnutls_x509_crt_t issuer, + gnutls_x509_privkey_t issuer_key, + gnutls_digest_algorithm_t dig, unsigned int flags) { int result; gnutls_privkey_t privkey; @@ -129,7 +128,7 @@ gnutls_x509_crl_sign2(gnutls_x509_crl_t crl, gnutls_x509_crt_t issuer, result = 0; - fail: +fail: gnutls_privkey_deinit(privkey); return result; @@ -149,9 +148,8 @@ gnutls_x509_crl_sign2(gnutls_x509_crl_t crl, gnutls_x509_crt_t issuer, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. */ -int -gnutls_x509_crl_sign(gnutls_x509_crl_t crl, gnutls_x509_crt_t issuer, - gnutls_x509_privkey_t issuer_key) +int gnutls_x509_crl_sign(gnutls_x509_crl_t crl, gnutls_x509_crt_t issuer, + gnutls_x509_privkey_t issuer_key) { return gnutls_x509_crl_sign2(crl, issuer, issuer_key, 0, 0); } @@ -214,10 +212,8 @@ int gnutls_x509_crl_set_next_update(gnutls_x509_crl_t crl, time_t exp_time) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crl_set_crt_serial(gnutls_x509_crl_t crl, - const void *serial, size_t serial_size, - time_t revocation_time) +int gnutls_x509_crl_set_crt_serial(gnutls_x509_crl_t crl, const void *serial, + size_t serial_size, time_t revocation_time) { int ret; @@ -226,36 +222,35 @@ gnutls_x509_crl_set_crt_serial(gnutls_x509_crl_t crl, return GNUTLS_E_INVALID_REQUEST; } - ret = - asn1_write_value(crl->crl, "tbsCertList.revokedCertificates", - "NEW", 1); + ret = asn1_write_value(crl->crl, "tbsCertList.revokedCertificates", + "NEW", 1); if (ret != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(ret); } - ret = - asn1_write_value(crl->crl, - "tbsCertList.revokedCertificates.?LAST.userCertificate", - serial, serial_size); + ret = asn1_write_value( + crl->crl, + "tbsCertList.revokedCertificates.?LAST.userCertificate", serial, + serial_size); if (ret != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(ret); } - ret = - _gnutls_x509_set_time(crl->crl, - "tbsCertList.revokedCertificates.?LAST.revocationDate", - revocation_time, 0); + ret = _gnutls_x509_set_time( + crl->crl, + "tbsCertList.revokedCertificates.?LAST.revocationDate", + revocation_time, 0); if (ret < 0) { gnutls_assert(); return ret; } - ret = - asn1_write_value(crl->crl, - "tbsCertList.revokedCertificates.?LAST.crlEntryExtensions", - NULL, 0); + ret = asn1_write_value( + crl->crl, + "tbsCertList.revokedCertificates.?LAST.crlEntryExtensions", + NULL, 0); if (ret != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(ret); @@ -275,9 +270,8 @@ gnutls_x509_crl_set_crt_serial(gnutls_x509_crl_t crl, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crl_set_crt(gnutls_x509_crl_t crl, gnutls_x509_crt_t crt, - time_t revocation_time) +int gnutls_x509_crl_set_crt(gnutls_x509_crl_t crl, gnutls_x509_crt_t crt, + time_t revocation_time) { int ret; uint8_t serial[128]; @@ -295,9 +289,8 @@ gnutls_x509_crl_set_crt(gnutls_x509_crl_t crl, gnutls_x509_crt_t crt, return ret; } - ret = - gnutls_x509_crl_set_crt_serial(crl, serial, serial_size, - revocation_time); + ret = gnutls_x509_crl_set_crt_serial(crl, serial, serial_size, + revocation_time); if (ret < 0) { gnutls_assert(); return _gnutls_asn2err(ret); @@ -314,7 +307,7 @@ static void disable_optional_stuff(gnutls_x509_crl_t crl) time_t t; t = _gnutls_x509_get_time(crl->crl, "tbsCertList.nextUpdate", 0); - if (t == (time_t) - 1) { + if (t == (time_t)-1) { (void)asn1_write_value(crl->crl, "tbsCertList.nextUpdate", NULL, 0); } @@ -343,9 +336,8 @@ static void disable_optional_stuff(gnutls_x509_crl_t crl) * * Since: 2.8.0 **/ -int -gnutls_x509_crl_set_authority_key_id(gnutls_x509_crl_t crl, - const void *id, size_t id_size) +int gnutls_x509_crl_set_authority_key_id(gnutls_x509_crl_t crl, const void *id, + size_t id_size) { int result; gnutls_datum_t old_id, der_data; @@ -358,9 +350,8 @@ gnutls_x509_crl_set_authority_key_id(gnutls_x509_crl_t crl, /* Check if the extension already exists. */ - result = - _gnutls_x509_crl_get_extension(crl, "2.5.29.35", 0, &old_id, - &critical); + result = _gnutls_x509_crl_get_extension(crl, "2.5.29.35", 0, &old_id, + &critical); if (result >= 0) { _gnutls_free_datum(&old_id); @@ -406,9 +397,8 @@ gnutls_x509_crl_set_authority_key_id(gnutls_x509_crl_t crl, * * Since: 2.8.0 **/ -int -gnutls_x509_crl_set_number(gnutls_x509_crl_t crl, - const void *nr, size_t nr_size) +int gnutls_x509_crl_set_number(gnutls_x509_crl_t crl, const void *nr, + size_t nr_size) { int result; gnutls_datum_t old_id, der_data; @@ -421,9 +411,8 @@ gnutls_x509_crl_set_number(gnutls_x509_crl_t crl, /* Check if the extension already exists. */ - result = - _gnutls_x509_crl_get_extension(crl, "2.5.29.20", 0, &old_id, - &critical); + result = _gnutls_x509_crl_get_extension(crl, "2.5.29.20", 0, &old_id, + &critical); if (result >= 0) { _gnutls_free_datum(&old_id); @@ -480,11 +469,11 @@ gnutls_x509_crl_set_number(gnutls_x509_crl_t crl, * * Since 2.12.0 **/ -int -gnutls_x509_crl_privkey_sign(gnutls_x509_crl_t crl, - gnutls_x509_crt_t issuer, - gnutls_privkey_t issuer_key, - gnutls_digest_algorithm_t dig, unsigned int flags) +int gnutls_x509_crl_privkey_sign(gnutls_x509_crl_t crl, + gnutls_x509_crt_t issuer, + gnutls_privkey_t issuer_key, + gnutls_digest_algorithm_t dig, + unsigned int flags) { int result; @@ -494,9 +483,8 @@ gnutls_x509_crl_privkey_sign(gnutls_x509_crl_t crl, } if (dig == 0) { - result = - gnutls_x509_crt_get_preferred_hash_algorithm(issuer, &dig, - NULL); + result = gnutls_x509_crt_get_preferred_hash_algorithm( + issuer, &dig, NULL); if (result < 0) return gnutls_assert_val(result); } @@ -505,8 +493,8 @@ gnutls_x509_crl_privkey_sign(gnutls_x509_crl_t crl, */ disable_optional_stuff(crl); - result = _gnutls_x509_pkix_sign(crl->crl, "tbsCertList", - dig, 0, issuer, issuer_key); + result = _gnutls_x509_pkix_sign(crl->crl, "tbsCertList", dig, 0, issuer, + issuer_key); if (result < 0) { gnutls_assert(); return result; diff --git a/lib/x509/crq.c b/lib/x509/crq.c index b43214af69..0c5585b979 100644 --- a/lib/x509/crq.c +++ b/lib/x509/crq.c @@ -50,7 +50,7 @@ * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int gnutls_x509_crq_init(gnutls_x509_crq_t * crq) +int gnutls_x509_crq_init(gnutls_x509_crq_t *crq) { int result; @@ -110,10 +110,8 @@ void gnutls_x509_crq_deinit(gnutls_x509_crq_t crq) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crq_import(gnutls_x509_crq_t crq, - const gnutls_datum_t * data, - gnutls_x509_crt_fmt_t format) +int gnutls_x509_crq_import(gnutls_x509_crq_t crq, const gnutls_datum_t *data, + gnutls_x509_crt_fmt_t format) { int result = 0, need_free = 0; gnutls_datum_t _data; @@ -130,14 +128,12 @@ gnutls_x509_crq_import(gnutls_x509_crq_t crq, */ if (format == GNUTLS_X509_FMT_PEM) { /* Try the first header */ - result = - _gnutls_fbase64_decode(PEM_CRQ, data->data, data->size, - &_data); + result = _gnutls_fbase64_decode(PEM_CRQ, data->data, data->size, + &_data); - if (result < 0) /* Go for the second header */ - result = - _gnutls_fbase64_decode(PEM_CRQ2, data->data, - data->size, &_data); + if (result < 0) /* Go for the second header */ + result = _gnutls_fbase64_decode(PEM_CRQ2, data->data, + data->size, &_data); if (result < 0) { gnutls_assert(); @@ -147,8 +143,8 @@ gnutls_x509_crq_import(gnutls_x509_crq_t crq, need_free = 1; } - result = - _asn1_strict_der_decode(&crq->crq, _data.data, _data.size, NULL); + result = _asn1_strict_der_decode(&crq->crq, _data.data, _data.size, + NULL); if (result != ASN1_SUCCESS) { result = _gnutls_asn2err(result); gnutls_assert(); @@ -157,7 +153,7 @@ gnutls_x509_crq_import(gnutls_x509_crq_t crq, result = 0; - cleanup: +cleanup: if (need_free) _gnutls_free_datum(&_data); return result; @@ -181,8 +177,8 @@ gnutls_x509_crq_import(gnutls_x509_crq_t crq, **/ int gnutls_x509_crq_get_signature_algorithm(gnutls_x509_crq_t crq) { - return map_errs_to_zero(_gnutls_x509_get_signature_algorithm(crq->crq, - "signatureAlgorithm")); + return map_errs_to_zero(_gnutls_x509_get_signature_algorithm( + crq->crq, "signatureAlgorithm")); } /** @@ -198,11 +194,10 @@ int gnutls_x509_crq_get_signature_algorithm(gnutls_x509_crq_t crq) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE * if the extension is not present, otherwise a negative error value. **/ -int -gnutls_x509_crq_get_private_key_usage_period(gnutls_x509_crq_t crq, - time_t * activation, - time_t * expiration, - unsigned int *critical) +int gnutls_x509_crq_get_private_key_usage_period(gnutls_x509_crq_t crq, + time_t *activation, + time_t *expiration, + unsigned int *critical) { int result, ret; asn1_node c2 = NULL; @@ -214,13 +209,13 @@ gnutls_x509_crq_get_private_key_usage_period(gnutls_x509_crq_t crq, return GNUTLS_E_INVALID_REQUEST; } - ret = gnutls_x509_crq_get_extension_by_oid(crq, "2.5.29.16", 0, - buf, &buf_size, critical); + ret = gnutls_x509_crq_get_extension_by_oid(crq, "2.5.29.16", 0, buf, + &buf_size, critical); if (ret < 0) return gnutls_assert_val(ret); - result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.PrivateKeyUsagePeriod", &c2); + result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.PrivateKeyUsagePeriod", &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); @@ -242,7 +237,7 @@ gnutls_x509_crq_get_private_key_usage_period(gnutls_x509_crq_t crq, ret = 0; - cleanup: +cleanup: asn1_delete_structure(&c2); return ret; @@ -274,9 +269,9 @@ int gnutls_x509_crq_get_dn(gnutls_x509_crq_t crq, char *buf, size_t *buf_size) return GNUTLS_E_INVALID_REQUEST; } - return _gnutls_x509_parse_dn(crq->crq, - "certificationRequestInfo.subject.rdnSequence", - buf, buf_size, GNUTLS_X509_DN_FLAG_COMPAT); + return _gnutls_x509_parse_dn( + crq->crq, "certificationRequestInfo.subject.rdnSequence", buf, + buf_size, GNUTLS_X509_DN_FLAG_COMPAT); } /** @@ -297,16 +292,16 @@ int gnutls_x509_crq_get_dn(gnutls_x509_crq_t crq, char *buf, size_t *buf_size) * * Since: 3.1.10 **/ -int gnutls_x509_crq_get_dn2(gnutls_x509_crq_t crq, gnutls_datum_t * dn) +int gnutls_x509_crq_get_dn2(gnutls_x509_crq_t crq, gnutls_datum_t *dn) { if (crq == NULL) { gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; } - return _gnutls_x509_get_dn(crq->crq, - "certificationRequestInfo.subject.rdnSequence", - dn, GNUTLS_X509_DN_FLAG_COMPAT); + return _gnutls_x509_get_dn( + crq->crq, "certificationRequestInfo.subject.rdnSequence", dn, + GNUTLS_X509_DN_FLAG_COMPAT); } /** @@ -329,7 +324,7 @@ int gnutls_x509_crq_get_dn2(gnutls_x509_crq_t crq, gnutls_datum_t * dn) * * Since: 3.5.7 **/ -int gnutls_x509_crq_get_dn3(gnutls_x509_crq_t crq, gnutls_datum_t * dn, +int gnutls_x509_crq_get_dn3(gnutls_x509_crq_t crq, gnutls_datum_t *dn, unsigned flags) { if (crq == NULL) { @@ -337,9 +332,9 @@ int gnutls_x509_crq_get_dn3(gnutls_x509_crq_t crq, gnutls_datum_t * dn, return GNUTLS_E_INVALID_REQUEST; } - return _gnutls_x509_get_dn(crq->crq, - "certificationRequestInfo.subject.rdnSequence", - dn, flags); + return _gnutls_x509_get_dn( + crq->crq, "certificationRequestInfo.subject.rdnSequence", dn, + flags); } /** @@ -367,10 +362,9 @@ int gnutls_x509_crq_get_dn3(gnutls_x509_crq_t crq, gnutls_datum_t * dn, * not long enough, and in that case the *@buf_size will be * updated with the required size. On success 0 is returned. **/ -int -gnutls_x509_crq_get_dn_by_oid(gnutls_x509_crq_t crq, const char *oid, - unsigned indx, unsigned int raw_flag, - void *buf, size_t *buf_size) +int gnutls_x509_crq_get_dn_by_oid(gnutls_x509_crq_t crq, const char *oid, + unsigned indx, unsigned int raw_flag, + void *buf, size_t *buf_size) { gnutls_datum_t td; int ret; @@ -380,10 +374,9 @@ gnutls_x509_crq_get_dn_by_oid(gnutls_x509_crq_t crq, const char *oid, return GNUTLS_E_INVALID_REQUEST; } - ret = _gnutls_x509_parse_dn_oid - (crq->crq, - "certificationRequestInfo.subject.rdnSequence", - oid, indx, raw_flag, &td); + ret = _gnutls_x509_parse_dn_oid( + crq->crq, "certificationRequestInfo.subject.rdnSequence", oid, + indx, raw_flag, &td); if (ret < 0) return gnutls_assert_val(ret); @@ -404,18 +397,17 @@ gnutls_x509_crq_get_dn_by_oid(gnutls_x509_crq_t crq, const char *oid, * not long enough, and in that case the *@sizeof_oid will be * updated with the required size. On success 0 is returned. **/ -int -gnutls_x509_crq_get_dn_oid(gnutls_x509_crq_t crq, - unsigned indx, void *oid, size_t *sizeof_oid) +int gnutls_x509_crq_get_dn_oid(gnutls_x509_crq_t crq, unsigned indx, void *oid, + size_t *sizeof_oid) { if (crq == NULL) { gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; } - return _gnutls_x509_get_dn_oid(crq->crq, - "certificationRequestInfo.subject.rdnSequence", - indx, oid, sizeof_oid); + return _gnutls_x509_get_dn_oid( + crq->crq, "certificationRequestInfo.subject.rdnSequence", indx, + oid, sizeof_oid); } /** @@ -431,9 +423,8 @@ gnutls_x509_crq_get_dn_oid(gnutls_x509_crq_t crq, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crq_get_challenge_password(gnutls_x509_crq_t crq, - char *pass, size_t *pass_size) +int gnutls_x509_crq_get_challenge_password(gnutls_x509_crq_t crq, char *pass, + size_t *pass_size) { gnutls_datum_t td; int ret; @@ -443,10 +434,9 @@ gnutls_x509_crq_get_challenge_password(gnutls_x509_crq_t crq, return GNUTLS_E_INVALID_REQUEST; } - ret = - _x509_parse_attribute(crq->crq, - "certificationRequestInfo.attributes", - "1.2.840.113549.1.9.7", 0, 0, &td); + ret = _x509_parse_attribute(crq->crq, + "certificationRequestInfo.attributes", + "1.2.840.113549.1.9.7", 0, 0, &td); if (ret < 0) return gnutls_assert_val(ret); @@ -470,10 +460,8 @@ gnutls_x509_crq_get_challenge_password(gnutls_x509_crq_t crq, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crq_set_attribute_by_oid(gnutls_x509_crq_t crq, - const char *oid, void *buf, - size_t buf_size) +int gnutls_x509_crq_set_attribute_by_oid(gnutls_x509_crq_t crq, const char *oid, + void *buf, size_t buf_size) { gnutls_datum_t data; @@ -485,9 +473,8 @@ gnutls_x509_crq_set_attribute_by_oid(gnutls_x509_crq_t crq, return GNUTLS_E_INVALID_REQUEST; } - return _x509_set_attribute(crq->crq, - "certificationRequestInfo.attributes", oid, - &data); + return _x509_set_attribute( + crq->crq, "certificationRequestInfo.attributes", oid, &data); } /** @@ -509,10 +496,9 @@ gnutls_x509_crq_set_attribute_by_oid(gnutls_x509_crq_t crq, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crq_get_attribute_by_oid(gnutls_x509_crq_t crq, - const char *oid, unsigned indx, void *buf, - size_t *buf_size) +int gnutls_x509_crq_get_attribute_by_oid(gnutls_x509_crq_t crq, const char *oid, + unsigned indx, void *buf, + size_t *buf_size) { int ret; gnutls_datum_t td; @@ -522,10 +508,9 @@ gnutls_x509_crq_get_attribute_by_oid(gnutls_x509_crq_t crq, return GNUTLS_E_INVALID_REQUEST; } - ret = - _x509_parse_attribute(crq->crq, - "certificationRequestInfo.attributes", oid, - indx, 1, &td); + ret = _x509_parse_attribute(crq->crq, + "certificationRequestInfo.attributes", oid, + indx, 1, &td); if (ret < 0) return gnutls_assert_val(ret); @@ -553,18 +538,17 @@ gnutls_x509_crq_get_attribute_by_oid(gnutls_x509_crq_t crq, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crq_set_dn_by_oid(gnutls_x509_crq_t crq, const char *oid, - unsigned int raw_flag, const void *data, - unsigned int sizeof_data) +int gnutls_x509_crq_set_dn_by_oid(gnutls_x509_crq_t crq, const char *oid, + unsigned int raw_flag, const void *data, + unsigned int sizeof_data) { if (sizeof_data == 0 || data == NULL || crq == NULL) { return GNUTLS_E_INVALID_REQUEST; } return _gnutls_x509_set_dn_oid(crq->crq, - "certificationRequestInfo.subject", - oid, raw_flag, data, sizeof_data); + "certificationRequestInfo.subject", oid, + raw_flag, data, sizeof_data); } /** @@ -591,9 +575,8 @@ int gnutls_x509_crq_set_version(gnutls_x509_crq_t crq, unsigned int version) if (null > 0) null--; - result = - asn1_write_value(crq->crq, "certificationRequestInfo.version", - &null, 1); + result = asn1_write_value(crq->crq, "certificationRequestInfo.version", + &null, 1); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -623,12 +606,11 @@ int gnutls_x509_crq_get_version(gnutls_x509_crq_t crq) } len = sizeof(version); - if ((result = - asn1_read_value(crq->crq, "certificationRequestInfo.version", - version, &len)) != ASN1_SUCCESS) { - + if ((result = asn1_read_value(crq->crq, + "certificationRequestInfo.version", + version, &len)) != ASN1_SUCCESS) { if (result == ASN1_ELEMENT_NOT_FOUND) - return 1; /* the DEFAULT version */ + return 1; /* the DEFAULT version */ gnutls_assert(); return _gnutls_asn2err(result); } @@ -656,8 +638,9 @@ int gnutls_x509_crq_set_key(gnutls_x509_crq_t crq, gnutls_x509_privkey_t key) return GNUTLS_E_INVALID_REQUEST; } - result = _gnutls_x509_encode_and_copy_PKI_params - (crq->crq, "certificationRequestInfo.subjectPKInfo", &key->params); + result = _gnutls_x509_encode_and_copy_PKI_params( + crq->crq, "certificationRequestInfo.subjectPKInfo", + &key->params); if (result < 0) { gnutls_assert(); @@ -682,9 +665,8 @@ int gnutls_x509_crq_set_key(gnutls_x509_crq_t crq, gnutls_x509_privkey_t key) * * Since: 2.8.0 **/ -int -gnutls_x509_crq_get_key_rsa_raw(gnutls_x509_crq_t crq, - gnutls_datum_t * m, gnutls_datum_t * e) +int gnutls_x509_crq_get_key_rsa_raw(gnutls_x509_crq_t crq, gnutls_datum_t *m, + gnutls_datum_t *e) { int ret; gnutls_pk_params_st params; @@ -723,7 +705,7 @@ gnutls_x509_crq_get_key_rsa_raw(gnutls_x509_crq_t crq, ret = 0; - cleanup: +cleanup: gnutls_pk_params_release(¶ms); return ret; } @@ -742,10 +724,9 @@ gnutls_x509_crq_get_key_rsa_raw(gnutls_x509_crq_t crq, * * Since: 2.6.0 **/ -int -gnutls_x509_crq_set_key_rsa_raw(gnutls_x509_crq_t crq, - const gnutls_datum_t * m, - const gnutls_datum_t * e) +int gnutls_x509_crq_set_key_rsa_raw(gnutls_x509_crq_t crq, + const gnutls_datum_t *m, + const gnutls_datum_t *e) { int result, ret; size_t siz = 0; @@ -777,8 +758,9 @@ gnutls_x509_crq_set_key_rsa_raw(gnutls_x509_crq_t crq, temp_params.params_nr = RSA_PUBLIC_PARAMS; temp_params.algo = GNUTLS_PK_RSA; - result = _gnutls_x509_encode_and_copy_PKI_params - (crq->crq, "certificationRequestInfo.subjectPKInfo", &temp_params); + result = _gnutls_x509_encode_and_copy_PKI_params( + crq->crq, "certificationRequestInfo.subjectPKInfo", + &temp_params); if (result < 0) { gnutls_assert(); @@ -788,7 +770,7 @@ gnutls_x509_crq_set_key_rsa_raw(gnutls_x509_crq_t crq, ret = 0; - error: +error: gnutls_pk_params_release(&temp_params); return ret; } @@ -804,8 +786,8 @@ gnutls_x509_crq_set_key_rsa_raw(gnutls_x509_crq_t crq, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crq_set_challenge_password(gnutls_x509_crq_t crq, const char *pass) +int gnutls_x509_crq_set_challenge_password(gnutls_x509_crq_t crq, + const char *pass) { int result; char *password = NULL; @@ -817,9 +799,8 @@ gnutls_x509_crq_set_challenge_password(gnutls_x509_crq_t crq, const char *pass) /* Add the attribute. */ - result = - asn1_write_value(crq->crq, - "certificationRequestInfo.attributes", "NEW", 1); + result = asn1_write_value( + crq->crq, "certificationRequestInfo.attributes", "NEW", 1); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -827,9 +808,8 @@ gnutls_x509_crq_set_challenge_password(gnutls_x509_crq_t crq, const char *pass) if (pass) { gnutls_datum_t out; - result = - _gnutls_utf8_password_normalize(pass, strlen(pass), &out, - 0); + result = _gnutls_utf8_password_normalize(pass, strlen(pass), + &out, 0); if (result < 0) return gnutls_assert_val(result); @@ -838,10 +818,10 @@ gnutls_x509_crq_set_challenge_password(gnutls_x509_crq_t crq, const char *pass) assert(password != NULL); - result = _gnutls_x509_encode_and_write_attribute - ("1.2.840.113549.1.9.7", crq->crq, - "certificationRequestInfo.attributes.?LAST", password, - strlen(password), 1); + result = _gnutls_x509_encode_and_write_attribute( + "1.2.840.113549.1.9.7", crq->crq, + "certificationRequestInfo.attributes.?LAST", password, + strlen(password), 1); if (result < 0) { gnutls_assert(); goto cleanup; @@ -849,7 +829,7 @@ gnutls_x509_crq_set_challenge_password(gnutls_x509_crq_t crq, const char *pass) result = 0; - cleanup: +cleanup: gnutls_free(password); return result; } @@ -882,9 +862,8 @@ gnutls_x509_crq_set_challenge_password(gnutls_x509_crq_t crq, const char *pass) * gnutls_x509_crq_set_version()). * **/ -int -gnutls_x509_crq_sign2(gnutls_x509_crq_t crq, gnutls_x509_privkey_t key, - gnutls_digest_algorithm_t dig, unsigned int flags) +int gnutls_x509_crq_sign2(gnutls_x509_crq_t crq, gnutls_x509_privkey_t key, + gnutls_digest_algorithm_t dig, unsigned int flags) { int result; gnutls_privkey_t privkey; @@ -914,7 +893,7 @@ gnutls_x509_crq_sign2(gnutls_x509_crq_t crq, gnutls_x509_privkey_t key, result = 0; - fail: +fail: gnutls_privkey_deinit(privkey); return result; @@ -963,18 +942,16 @@ int gnutls_x509_crq_sign(gnutls_x509_crq_t crq, gnutls_x509_privkey_t key) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crq_export(gnutls_x509_crq_t crq, - gnutls_x509_crt_fmt_t format, void *output_data, - size_t *output_data_size) +int gnutls_x509_crq_export(gnutls_x509_crq_t crq, gnutls_x509_crt_fmt_t format, + void *output_data, size_t *output_data_size) { if (crq == NULL) { gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; } - return _gnutls_x509_export_int(crq->crq, format, PEM_CRQ, - output_data, output_data_size); + return _gnutls_x509_export_int(crq->crq, format, PEM_CRQ, output_data, + output_data_size); } /** @@ -996,9 +973,8 @@ gnutls_x509_crq_export(gnutls_x509_crq_t crq, * * Since 3.1.3 **/ -int -gnutls_x509_crq_export2(gnutls_x509_crq_t crq, - gnutls_x509_crt_fmt_t format, gnutls_datum_t * out) +int gnutls_x509_crq_export2(gnutls_x509_crq_t crq, gnutls_x509_crt_fmt_t format, + gnutls_datum_t *out) { if (crq == NULL) { gnutls_assert(); @@ -1032,8 +1008,8 @@ int gnutls_x509_crq_get_pk_algorithm(gnutls_x509_crq_t crq, unsigned int *bits) return GNUTLS_E_INVALID_REQUEST; } - result = _gnutls_x509_get_pk_algorithm - (crq->crq, "certificationRequestInfo.subjectPKInfo", NULL, bits); + result = _gnutls_x509_get_pk_algorithm( + crq->crq, "certificationRequestInfo.subjectPKInfo", NULL, bits); if (result < 0) { gnutls_assert(); return result; @@ -1053,9 +1029,8 @@ int gnutls_x509_crq_get_pk_algorithm(gnutls_x509_crq_t crq, unsigned int *bits) * * Returns: Zero on success, or a negative error code on error. **/ -int -gnutls_x509_crq_get_spki(gnutls_x509_crq_t crq, - gnutls_x509_spki_t spki, unsigned int flags) +int gnutls_x509_crq_get_spki(gnutls_x509_crq_t crq, gnutls_x509_spki_t spki, + unsigned int flags) { int result; gnutls_x509_spki_st params; @@ -1107,9 +1082,8 @@ int gnutls_x509_crq_get_signature_oid(gnutls_x509_crq_t crq, char *oid, gnutls_datum_t out; len = sizeof(str); - result = - asn1_read_value(crq->crq, "signatureAlgorithm.algorithm", str, - &len); + result = asn1_read_value(crq->crq, "signatureAlgorithm.algorithm", str, + &len); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -1150,10 +1124,10 @@ int gnutls_x509_crq_get_pk_oid(gnutls_x509_crq_t crq, char *oid, gnutls_datum_t out; len = sizeof(str); - result = - asn1_read_value(crq->crq, - "certificationRequestInfo.subjectPKInfo.algorithm.algorithm", - str, &len); + result = asn1_read_value( + crq->crq, + "certificationRequestInfo.subjectPKInfo.algorithm.algorithm", + str, &len); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -1195,9 +1169,8 @@ int gnutls_x509_crq_get_pk_oid(gnutls_x509_crq_t crq, char *oid, * * Since: 2.8.0 **/ -int -gnutls_x509_crq_get_attribute_info(gnutls_x509_crq_t crq, unsigned indx, - void *oid, size_t *sizeof_oid) +int gnutls_x509_crq_get_attribute_info(gnutls_x509_crq_t crq, unsigned indx, + void *oid, size_t *sizeof_oid) { int result; char name[MAX_NAME_SIZE]; @@ -1223,7 +1196,6 @@ gnutls_x509_crq_get_attribute_info(gnutls_x509_crq_t crq, unsigned indx, } return 0; - } /** @@ -1249,9 +1221,8 @@ gnutls_x509_crq_get_attribute_info(gnutls_x509_crq_t crq, unsigned indx, * * Since: 2.8.0 **/ -int -gnutls_x509_crq_get_attribute_data(gnutls_x509_crq_t crq, unsigned indx, - void *data, size_t *sizeof_data) +int gnutls_x509_crq_get_attribute_data(gnutls_x509_crq_t crq, unsigned indx, + void *data, size_t *sizeof_data) { int result, len; char name[MAX_NAME_SIZE]; @@ -1303,10 +1274,9 @@ gnutls_x509_crq_get_attribute_data(gnutls_x509_crq_t crq, unsigned indx, * * Since: 2.8.0 **/ -int -gnutls_x509_crq_get_extension_info(gnutls_x509_crq_t crq, unsigned indx, - void *oid, size_t *sizeof_oid, - unsigned int *critical) +int gnutls_x509_crq_get_extension_info(gnutls_x509_crq_t crq, unsigned indx, + void *oid, size_t *sizeof_oid, + unsigned int *critical) { int result; char str_critical[10]; @@ -1322,10 +1292,8 @@ gnutls_x509_crq_get_extension_info(gnutls_x509_crq_t crq, unsigned indx, } /* read extensionRequest */ - result = - gnutls_x509_crq_get_attribute_by_oid(crq, - "1.2.840.113549.1.9.14", - 0, NULL, &extensions_size); + result = gnutls_x509_crq_get_attribute_by_oid( + crq, "1.2.840.113549.1.9.14", 0, NULL, &extensions_size); if (result == GNUTLS_E_SHORT_MEMORY_BUFFER) { extensions = gnutls_malloc(extensions_size); if (extensions == NULL) { @@ -1333,19 +1301,17 @@ gnutls_x509_crq_get_extension_info(gnutls_x509_crq_t crq, unsigned indx, return GNUTLS_E_MEMORY_ERROR; } - result = gnutls_x509_crq_get_attribute_by_oid(crq, - "1.2.840.113549.1.9.14", - 0, - extensions, - &extensions_size); + result = gnutls_x509_crq_get_attribute_by_oid( + crq, "1.2.840.113549.1.9.14", 0, extensions, + &extensions_size); } if (result < 0) { gnutls_assert(); goto out; } - result = - asn1_create_element(_gnutls_get_pkix(), "PKIX1.Extensions", &c2); + result = asn1_create_element(_gnutls_get_pkix(), "PKIX1.Extensions", + &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -1353,7 +1319,7 @@ gnutls_x509_crq_get_extension_info(gnutls_x509_crq_t crq, unsigned indx, } result = - _asn1_strict_der_decode(&c2, extensions, extensions_size, NULL); + _asn1_strict_der_decode(&c2, extensions, extensions_size, NULL); if (result != ASN1_SUCCESS) { gnutls_assert(); asn1_delete_structure(&c2); @@ -1399,7 +1365,7 @@ gnutls_x509_crq_get_extension_info(gnutls_x509_crq_t crq, unsigned indx, result = 0; - out: +out: gnutls_free(extensions); return result; } @@ -1427,9 +1393,8 @@ gnutls_x509_crq_get_extension_info(gnutls_x509_crq_t crq, unsigned indx, * * Since: 2.8.0 **/ -int -gnutls_x509_crq_get_extension_data(gnutls_x509_crq_t crq, unsigned indx, - void *data, size_t *sizeof_data) +int gnutls_x509_crq_get_extension_data(gnutls_x509_crq_t crq, unsigned indx, + void *data, size_t *sizeof_data) { int ret; gnutls_datum_t raw; @@ -1465,9 +1430,8 @@ gnutls_x509_crq_get_extension_data(gnutls_x509_crq_t crq, unsigned indx, * * Since: 3.3.0 **/ -int -gnutls_x509_crq_get_extension_data2(gnutls_x509_crq_t crq, - unsigned indx, gnutls_datum_t * data) +int gnutls_x509_crq_get_extension_data2(gnutls_x509_crq_t crq, unsigned indx, + gnutls_datum_t *data) { int ret, result; char name[MAX_NAME_SIZE]; @@ -1481,10 +1445,8 @@ gnutls_x509_crq_get_extension_data2(gnutls_x509_crq_t crq, } /* read extensionRequest */ - ret = - gnutls_x509_crq_get_attribute_by_oid(crq, - "1.2.840.113549.1.9.14", - 0, NULL, &extensions_size); + ret = gnutls_x509_crq_get_attribute_by_oid(crq, "1.2.840.113549.1.9.14", + 0, NULL, &extensions_size); if (ret != GNUTLS_E_SHORT_MEMORY_BUFFER) { gnutls_assert(); if (ret == 0) @@ -1498,18 +1460,15 @@ gnutls_x509_crq_get_extension_data2(gnutls_x509_crq_t crq, return GNUTLS_E_MEMORY_ERROR; } - ret = - gnutls_x509_crq_get_attribute_by_oid(crq, - "1.2.840.113549.1.9.14", - 0, extensions, - &extensions_size); + ret = gnutls_x509_crq_get_attribute_by_oid( + crq, "1.2.840.113549.1.9.14", 0, extensions, &extensions_size); if (ret < 0) { gnutls_assert(); goto cleanup; } - result = - asn1_create_element(_gnutls_get_pkix(), "PKIX1.Extensions", &c2); + result = asn1_create_element(_gnutls_get_pkix(), "PKIX1.Extensions", + &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); @@ -1517,7 +1476,7 @@ gnutls_x509_crq_get_extension_data2(gnutls_x509_crq_t crq, } result = - _asn1_strict_der_decode(&c2, extensions, extensions_size, NULL); + _asn1_strict_der_decode(&c2, extensions, extensions_size, NULL); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); @@ -1536,7 +1495,7 @@ gnutls_x509_crq_get_extension_data2(gnutls_x509_crq_t crq, } ret = 0; - cleanup: +cleanup: asn1_delete_structure(&c2); gnutls_free(extensions); return ret; @@ -1563,9 +1522,9 @@ gnutls_x509_crq_get_extension_data2(gnutls_x509_crq_t crq, * * Since: 2.8.0 **/ -int -gnutls_x509_crq_get_key_usage(gnutls_x509_crq_t crq, - unsigned int *key_usage, unsigned int *critical) +int gnutls_x509_crq_get_key_usage(gnutls_x509_crq_t crq, + unsigned int *key_usage, + unsigned int *critical) { int result; uint8_t buf[128]; @@ -1577,8 +1536,8 @@ gnutls_x509_crq_get_key_usage(gnutls_x509_crq_t crq, return GNUTLS_E_INVALID_REQUEST; } - result = gnutls_x509_crq_get_extension_by_oid(crq, "2.5.29.15", 0, - buf, &buf_size, critical); + result = gnutls_x509_crq_get_extension_by_oid(crq, "2.5.29.15", 0, buf, + &buf_size, critical); if (result < 0) { gnutls_assert(); return result; @@ -1617,10 +1576,9 @@ gnutls_x509_crq_get_key_usage(gnutls_x509_crq_t crq, * * Since: 2.8.0 **/ -int -gnutls_x509_crq_get_basic_constraints(gnutls_x509_crq_t crq, - unsigned int *critical, - unsigned int *ca, int *pathlen) +int gnutls_x509_crq_get_basic_constraints(gnutls_x509_crq_t crq, + unsigned int *critical, + unsigned int *ca, int *pathlen) { int result; unsigned int tmp_ca; @@ -1633,8 +1591,8 @@ gnutls_x509_crq_get_basic_constraints(gnutls_x509_crq_t crq, return GNUTLS_E_INVALID_REQUEST; } - result = gnutls_x509_crq_get_extension_by_oid(crq, "2.5.29.19", 0, - buf, &buf_size, critical); + result = gnutls_x509_crq_get_extension_by_oid(crq, "2.5.29.19", 0, buf, + &buf_size, critical); if (result < 0) { gnutls_assert(); return result; @@ -1643,7 +1601,7 @@ gnutls_x509_crq_get_basic_constraints(gnutls_x509_crq_t crq, bd.data = buf; bd.size = buf_size; result = - gnutls_x509_ext_import_basic_constraints(&bd, &tmp_ca, pathlen); + gnutls_x509_ext_import_basic_constraints(&bd, &tmp_ca, pathlen); if (ca) *ca = tmp_ca; @@ -1655,11 +1613,10 @@ gnutls_x509_crq_get_basic_constraints(gnutls_x509_crq_t crq, return tmp_ca; } -static int -get_subject_alt_name(gnutls_x509_crq_t crq, - unsigned int seq, void *ret, - size_t *ret_size, unsigned int *ret_type, - unsigned int *critical, int othername_oid) +static int get_subject_alt_name(gnutls_x509_crq_t crq, unsigned int seq, + void *ret, size_t *ret_size, + unsigned int *ret_type, unsigned int *critical, + int othername_oid) { int result; asn1_node c2 = NULL; @@ -1679,9 +1636,8 @@ get_subject_alt_name(gnutls_x509_crq_t crq, /* Extract extension. */ - result = gnutls_x509_crq_get_extension_by_oid(crq, "2.5.29.17", 0, - NULL, &dns_size, - critical); + result = gnutls_x509_crq_get_extension_by_oid(crq, "2.5.29.17", 0, NULL, + &dns_size, critical); if (result < 0) { gnutls_assert(); return result; @@ -1694,17 +1650,16 @@ get_subject_alt_name(gnutls_x509_crq_t crq, return GNUTLS_E_MEMORY_ERROR; } - result = gnutls_x509_crq_get_extension_by_oid(crq, "2.5.29.17", 0, - dnsname.data, - &dns_size, critical); + result = gnutls_x509_crq_get_extension_by_oid( + crq, "2.5.29.17", 0, dnsname.data, &dns_size, critical); if (result < 0) { gnutls_assert(); gnutls_free(dnsname.data); return result; } - result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.SubjectAltName", &c2); + result = asn1_create_element(_gnutls_get_pkix(), "PKIX1.SubjectAltName", + &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); gnutls_free(dnsname.data); @@ -1759,15 +1714,14 @@ get_subject_alt_name(gnutls_x509_crq_t crq, * * Since: 2.8.0 **/ -int -gnutls_x509_crq_get_subject_alt_name(gnutls_x509_crq_t crq, - unsigned int seq, void *ret, - size_t *ret_size, - unsigned int *ret_type, - unsigned int *critical) +int gnutls_x509_crq_get_subject_alt_name(gnutls_x509_crq_t crq, + unsigned int seq, void *ret, + size_t *ret_size, + unsigned int *ret_type, + unsigned int *critical) { - return get_subject_alt_name(crq, seq, ret, ret_size, ret_type, - critical, 0); + return get_subject_alt_name(crq, seq, ret, ret_size, ret_type, critical, + 0); } /** @@ -1798,10 +1752,9 @@ gnutls_x509_crq_get_subject_alt_name(gnutls_x509_crq_t crq, * * Since: 2.8.0 **/ -int -gnutls_x509_crq_get_subject_alt_othername_oid(gnutls_x509_crq_t crq, - unsigned int seq, - void *ret, size_t *ret_size) +int gnutls_x509_crq_get_subject_alt_othername_oid(gnutls_x509_crq_t crq, + unsigned int seq, void *ret, + size_t *ret_size) { return get_subject_alt_name(crq, seq, ret, ret_size, NULL, NULL, 1); } @@ -1827,11 +1780,10 @@ gnutls_x509_crq_get_subject_alt_othername_oid(gnutls_x509_crq_t crq, * * Since: 2.8.0 **/ -int -gnutls_x509_crq_get_extension_by_oid(gnutls_x509_crq_t crq, - const char *oid, unsigned indx, - void *buf, size_t *buf_size, - unsigned int *critical) +int gnutls_x509_crq_get_extension_by_oid(gnutls_x509_crq_t crq, const char *oid, + unsigned indx, void *buf, + size_t *buf_size, + unsigned int *critical) { int result; unsigned int i; @@ -1840,28 +1792,23 @@ gnutls_x509_crq_get_extension_by_oid(gnutls_x509_crq_t crq, for (i = 0;; i++) { oid_size = sizeof(_oid); - result = - gnutls_x509_crq_get_extension_info(crq, i, _oid, - &oid_size, critical); + result = gnutls_x509_crq_get_extension_info( + crq, i, _oid, &oid_size, critical); if (result < 0) { gnutls_assert(); return result; } - if (strcmp(oid, _oid) == 0) { /* found */ + if (strcmp(oid, _oid) == 0) { /* found */ if (indx == 0) - return - gnutls_x509_crq_get_extension_data(crq, - i, - buf, - buf_size); + return gnutls_x509_crq_get_extension_data( + crq, i, buf, buf_size); else indx--; } } return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; - } /** @@ -1884,11 +1831,10 @@ gnutls_x509_crq_get_extension_by_oid(gnutls_x509_crq_t crq, * * Since: 3.3.8 **/ -int -gnutls_x509_crq_get_extension_by_oid2(gnutls_x509_crq_t crq, - const char *oid, unsigned indx, - gnutls_datum_t * output, - unsigned int *critical) +int gnutls_x509_crq_get_extension_by_oid2(gnutls_x509_crq_t crq, + const char *oid, unsigned indx, + gnutls_datum_t *output, + unsigned int *critical) { int result; unsigned int i; @@ -1897,27 +1843,23 @@ gnutls_x509_crq_get_extension_by_oid2(gnutls_x509_crq_t crq, for (i = 0;; i++) { oid_size = sizeof(_oid); - result = - gnutls_x509_crq_get_extension_info(crq, i, _oid, - &oid_size, critical); + result = gnutls_x509_crq_get_extension_info( + crq, i, _oid, &oid_size, critical); if (result < 0) { gnutls_assert(); return result; } - if (strcmp(oid, _oid) == 0) { /* found */ + if (strcmp(oid, _oid) == 0) { /* found */ if (indx == 0) - return - gnutls_x509_crq_get_extension_data2(crq, - i, - output); + return gnutls_x509_crq_get_extension_data2( + crq, i, output); else indx--; } } return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; - } /** @@ -1950,11 +1892,11 @@ gnutls_x509_crq_get_extension_by_oid2(gnutls_x509_crq_t crq, * * Since: 2.8.0 **/ -int -gnutls_x509_crq_set_subject_alt_name(gnutls_x509_crq_t crq, - gnutls_x509_subject_alt_name_t nt, - const void *data, - unsigned int data_size, unsigned int flags) +int gnutls_x509_crq_set_subject_alt_name(gnutls_x509_crq_t crq, + gnutls_x509_subject_alt_name_t nt, + const void *data, + unsigned int data_size, + unsigned int flags) { int result = 0; gnutls_datum_t der_data = { NULL, 0 }; @@ -1970,11 +1912,8 @@ gnutls_x509_crq_set_subject_alt_name(gnutls_x509_crq_t crq, /* Check if the extension already exists. */ if (flags & GNUTLS_FSAN_APPEND) { - result = - gnutls_x509_crq_get_extension_by_oid(crq, "2.5.29.17", - 0, NULL, - &prev_data_size, - &critical); + result = gnutls_x509_crq_get_extension_by_oid( + crq, "2.5.29.17", 0, NULL, &prev_data_size, &critical); prev_der_data.size = prev_data_size; switch (result) { @@ -1989,14 +1928,9 @@ gnutls_x509_crq_set_subject_alt_name(gnutls_x509_crq_t crq, return GNUTLS_E_MEMORY_ERROR; } - result = - gnutls_x509_crq_get_extension_by_oid(crq, - "2.5.29.17", - 0, - prev_der_data. - data, - &prev_data_size, - &critical); + result = gnutls_x509_crq_get_extension_by_oid( + crq, "2.5.29.17", 0, prev_der_data.data, + &prev_data_size, &critical); if (result < 0) { gnutls_assert(); gnutls_free(prev_der_data.data); @@ -2012,18 +1946,16 @@ gnutls_x509_crq_set_subject_alt_name(gnutls_x509_crq_t crq, /* generate the extension. */ - result = - _gnutls_x509_ext_gen_subject_alt_name(nt, NULL, data, data_size, - &prev_der_data, &der_data); + result = _gnutls_x509_ext_gen_subject_alt_name( + nt, NULL, data, data_size, &prev_der_data, &der_data); gnutls_free(prev_der_data.data); if (result < 0) { gnutls_assert(); goto finish; } - result = - _gnutls_x509_crq_set_extension(crq, "2.5.29.17", &der_data, - critical); + result = _gnutls_x509_crq_set_extension(crq, "2.5.29.17", &der_data, + critical); _gnutls_free_datum(&der_data); @@ -2034,7 +1966,7 @@ gnutls_x509_crq_set_subject_alt_name(gnutls_x509_crq_t crq, return 0; - finish: +finish: return result; } @@ -2057,12 +1989,10 @@ gnutls_x509_crq_set_subject_alt_name(gnutls_x509_crq_t crq, * * Since: 3.5.0 **/ -int -gnutls_x509_crq_set_subject_alt_othername(gnutls_x509_crq_t crq, - const char *oid, - const void *data, - unsigned int data_size, - unsigned int flags) +int gnutls_x509_crq_set_subject_alt_othername(gnutls_x509_crq_t crq, + const char *oid, const void *data, + unsigned int data_size, + unsigned int flags) { int result = 0; gnutls_datum_t der_data = { NULL, 0 }; @@ -2079,11 +2009,8 @@ gnutls_x509_crq_set_subject_alt_othername(gnutls_x509_crq_t crq, /* Check if the extension already exists. */ if (flags & GNUTLS_FSAN_APPEND) { - result = - gnutls_x509_crq_get_extension_by_oid(crq, "2.5.29.17", - 0, NULL, - &prev_data_size, - &critical); + result = gnutls_x509_crq_get_extension_by_oid( + crq, "2.5.29.17", 0, NULL, &prev_data_size, &critical); prev_der_data.size = prev_data_size; switch (result) { @@ -2098,14 +2025,9 @@ gnutls_x509_crq_set_subject_alt_othername(gnutls_x509_crq_t crq, return GNUTLS_E_MEMORY_ERROR; } - result = - gnutls_x509_crq_get_extension_by_oid(crq, - "2.5.29.17", - 0, - prev_der_data. - data, - &prev_data_size, - &critical); + result = gnutls_x509_crq_get_extension_by_oid( + crq, "2.5.29.17", 0, prev_der_data.data, + &prev_data_size, &critical); if (result < 0) { gnutls_assert(); goto finish; @@ -2118,9 +2040,8 @@ gnutls_x509_crq_set_subject_alt_othername(gnutls_x509_crq_t crq, } } - result = - _gnutls_encode_othername_data(flags, data, data_size, - &encoded_data); + result = _gnutls_encode_othername_data(flags, data, data_size, + &encoded_data); if (result < 0) { gnutls_assert(); goto finish; @@ -2128,19 +2049,16 @@ gnutls_x509_crq_set_subject_alt_othername(gnutls_x509_crq_t crq, /* generate the extension. */ - result = - _gnutls_x509_ext_gen_subject_alt_name(GNUTLS_SAN_OTHERNAME, oid, - encoded_data.data, - encoded_data.size, - &prev_der_data, &der_data); + result = _gnutls_x509_ext_gen_subject_alt_name( + GNUTLS_SAN_OTHERNAME, oid, encoded_data.data, encoded_data.size, + &prev_der_data, &der_data); if (result < 0) { gnutls_assert(); goto finish; } - result = - _gnutls_x509_crq_set_extension(crq, "2.5.29.17", &der_data, - critical); + result = _gnutls_x509_crq_set_extension(crq, "2.5.29.17", &der_data, + critical); if (result < 0) { gnutls_assert(); @@ -2149,7 +2067,7 @@ gnutls_x509_crq_set_subject_alt_othername(gnutls_x509_crq_t crq, result = 0; - finish: +finish: _gnutls_free_datum(&prev_der_data); _gnutls_free_datum(&der_data); _gnutls_free_datum(&encoded_data); @@ -2171,9 +2089,9 @@ gnutls_x509_crq_set_subject_alt_othername(gnutls_x509_crq_t crq, * * Since: 2.8.0 **/ -int -gnutls_x509_crq_set_basic_constraints(gnutls_x509_crq_t crq, - unsigned int ca, int pathLenConstraint) +int gnutls_x509_crq_set_basic_constraints(gnutls_x509_crq_t crq, + unsigned int ca, + int pathLenConstraint) { int result; gnutls_datum_t der_data; @@ -2185,9 +2103,8 @@ gnutls_x509_crq_set_basic_constraints(gnutls_x509_crq_t crq, /* generate the extension. */ - result = - gnutls_x509_ext_export_basic_constraints(ca, pathLenConstraint, - &der_data); + result = gnutls_x509_ext_export_basic_constraints(ca, pathLenConstraint, + &der_data); if (result < 0) { gnutls_assert(); return result; @@ -2266,10 +2183,9 @@ int gnutls_x509_crq_set_key_usage(gnutls_x509_crq_t crq, unsigned int usage) * * Since: 2.8.0 **/ -int -gnutls_x509_crq_get_key_purpose_oid(gnutls_x509_crq_t crq, - unsigned indx, void *oid, - size_t *sizeof_oid, unsigned int *critical) +int gnutls_x509_crq_get_key_purpose_oid(gnutls_x509_crq_t crq, unsigned indx, + void *oid, size_t *sizeof_oid, + unsigned int *critical) { char tmpstr[MAX_NAME_SIZE]; int result, len; @@ -2284,9 +2200,8 @@ gnutls_x509_crq_get_key_purpose_oid(gnutls_x509_crq_t crq, /* Extract extension. */ - result = gnutls_x509_crq_get_extension_by_oid(crq, "2.5.29.37", 0, - NULL, &prev_size, - critical); + result = gnutls_x509_crq_get_extension_by_oid(crq, "2.5.29.37", 0, NULL, + &prev_size, critical); prev.size = prev_size; if (result < 0) { @@ -2300,17 +2215,16 @@ gnutls_x509_crq_get_key_purpose_oid(gnutls_x509_crq_t crq, return GNUTLS_E_MEMORY_ERROR; } - result = gnutls_x509_crq_get_extension_by_oid(crq, "2.5.29.37", 0, - prev.data, - &prev_size, critical); + result = gnutls_x509_crq_get_extension_by_oid( + crq, "2.5.29.37", 0, prev.data, &prev_size, critical); if (result < 0) { gnutls_assert(); gnutls_free(prev.data); return result; } - result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.ExtKeyUsageSyntax", &c2); + result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.ExtKeyUsageSyntax", &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); gnutls_free(prev.data); @@ -2336,7 +2250,8 @@ gnutls_x509_crq_get_key_purpose_oid(gnutls_x509_crq_t crq, *sizeof_oid = len; asn1_delete_structure(&c2); - if (result == ASN1_VALUE_NOT_FOUND || result == ASN1_ELEMENT_NOT_FOUND) { + if (result == ASN1_VALUE_NOT_FOUND || + result == ASN1_ELEMENT_NOT_FOUND) { return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; } @@ -2366,9 +2281,8 @@ gnutls_x509_crq_get_key_purpose_oid(gnutls_x509_crq_t crq, * * Since: 2.8.0 **/ -int -gnutls_x509_crq_set_key_purpose_oid(gnutls_x509_crq_t crq, - const void *oid, unsigned int critical) +int gnutls_x509_crq_set_key_purpose_oid(gnutls_x509_crq_t crq, const void *oid, + unsigned int critical) { int result; gnutls_datum_t prev = { NULL, 0 }, der_data; @@ -2377,9 +2291,8 @@ gnutls_x509_crq_set_key_purpose_oid(gnutls_x509_crq_t crq, /* Read existing extension, if there is one. */ - result = gnutls_x509_crq_get_extension_by_oid(crq, "2.5.29.37", 0, - NULL, &prev_size, - &critical); + result = gnutls_x509_crq_get_extension_by_oid(crq, "2.5.29.37", 0, NULL, + &prev_size, &critical); prev.size = prev_size; switch (result) { @@ -2394,10 +2307,8 @@ gnutls_x509_crq_set_key_purpose_oid(gnutls_x509_crq_t crq, return GNUTLS_E_MEMORY_ERROR; } - result = - gnutls_x509_crq_get_extension_by_oid(crq, "2.5.29.37", - 0, prev.data, - &prev_size, &critical); + result = gnutls_x509_crq_get_extension_by_oid( + crq, "2.5.29.37", 0, prev.data, &prev_size, &critical); if (result < 0) { gnutls_assert(); gnutls_free(prev.data); @@ -2421,8 +2332,8 @@ gnutls_x509_crq_set_key_purpose_oid(gnutls_x509_crq_t crq, if (prev.data) { /* decode it. */ - result = - _asn1_strict_der_decode(&c2, prev.data, prev.size, NULL); + result = _asn1_strict_der_decode(&c2, prev.data, prev.size, + NULL); gnutls_free(prev.data); if (result != ASN1_SUCCESS) { gnutls_assert(); @@ -2459,8 +2370,8 @@ gnutls_x509_crq_set_key_purpose_oid(gnutls_x509_crq_t crq, return _gnutls_asn2err(result); } - result = _gnutls_x509_crq_set_extension(crq, "2.5.29.37", - &der_data, critical); + result = _gnutls_x509_crq_set_extension(crq, "2.5.29.37", &der_data, + critical); _gnutls_free_datum(&der_data); if (result < 0) { gnutls_assert(); @@ -2492,9 +2403,9 @@ gnutls_x509_crq_set_key_purpose_oid(gnutls_x509_crq_t crq, * * Since: 2.8.0 **/ -int -gnutls_x509_crq_get_key_id(gnutls_x509_crq_t crq, unsigned int flags, - unsigned char *output_data, size_t *output_data_size) +int gnutls_x509_crq_get_key_id(gnutls_x509_crq_t crq, unsigned int flags, + unsigned char *output_data, + size_t *output_data_size) { int ret = 0; gnutls_pk_params_st params; @@ -2546,9 +2457,9 @@ gnutls_x509_crq_get_key_id(gnutls_x509_crq_t crq, unsigned int flags, * * Since: 2.12.0 **/ -int -gnutls_x509_crq_privkey_sign(gnutls_x509_crq_t crq, gnutls_privkey_t key, - gnutls_digest_algorithm_t dig, unsigned int flags) +int gnutls_x509_crq_privkey_sign(gnutls_x509_crq_t crq, gnutls_privkey_t key, + gnutls_digest_algorithm_t dig, + unsigned int flags) { int result; gnutls_datum_t signature; @@ -2585,9 +2496,8 @@ gnutls_x509_crq_privkey_sign(gnutls_x509_crq_t crq, gnutls_privkey_t key, gnutls_pubkey_deinit(pubkey); return gnutls_assert_val(ret); } - ret = - gnutls_pubkey_get_preferred_hash_algorithm(pubkey, &dig, - NULL); + ret = gnutls_pubkey_get_preferred_hash_algorithm(pubkey, &dig, + NULL); gnutls_pubkey_deinit(pubkey); if (ret < 0) @@ -2609,8 +2519,8 @@ gnutls_x509_crq_privkey_sign(gnutls_x509_crq_t crq, gnutls_privkey_t key, /* Step 1. Self sign the request. */ - result = - _gnutls_x509_get_tbs(crq->crq, "certificationRequestInfo", &tbs); + result = _gnutls_x509_get_tbs(crq->crq, "certificationRequestInfo", + &tbs); if (result < 0) { gnutls_assert(); @@ -2633,9 +2543,8 @@ gnutls_x509_crq_privkey_sign(gnutls_x509_crq_t crq, gnutls_privkey_t key, /* Step 2. write the signature (bits) */ - result = - asn1_write_value(crq->crq, "signature", signature.data, - signature.size * 8); + result = asn1_write_value(crq->crq, "signature", signature.data, + signature.size * 8); _gnutls_free_datum(&signature); @@ -2646,9 +2555,8 @@ gnutls_x509_crq_privkey_sign(gnutls_x509_crq_t crq, gnutls_privkey_t key, /* Step 3. Write the signatureAlgorithm field. */ - result = - _gnutls_x509_write_sign_params(crq->crq, "signatureAlgorithm", - se, ¶ms); + result = _gnutls_x509_write_sign_params(crq->crq, "signatureAlgorithm", + se, ¶ms); if (result < 0) { gnutls_assert(); return result; @@ -2681,17 +2589,15 @@ int gnutls_x509_crq_verify(gnutls_x509_crq_t crq, unsigned int flags) gnutls_pk_params_init(¶ms); - ret = - _gnutls_x509_get_signed_data(crq->crq, NULL, - "certificationRequestInfo", &data); + ret = _gnutls_x509_get_signed_data(crq->crq, NULL, + "certificationRequestInfo", &data); if (ret < 0) { gnutls_assert(); return ret; } - ret = - _gnutls_x509_get_signature_algorithm(crq->crq, - "signatureAlgorithm"); + ret = _gnutls_x509_get_signature_algorithm(crq->crq, + "signatureAlgorithm"); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -2716,16 +2622,15 @@ int gnutls_x509_crq_verify(gnutls_x509_crq_t crq, unsigned int flags) goto cleanup; } - ret = _gnutls_x509_read_sign_params(crq->crq, - "signatureAlgorithm", &sign_params); + ret = _gnutls_x509_read_sign_params(crq->crq, "signatureAlgorithm", + &sign_params); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - pubkey_verify_data(se, hash_to_entry(se->hash), &data, &signature, - ¶ms, &sign_params, flags); + ret = pubkey_verify_data(se, hash_to_entry(se->hash), &data, &signature, + ¶ms, &sign_params, flags); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -2733,7 +2638,7 @@ int gnutls_x509_crq_verify(gnutls_x509_crq_t crq, unsigned int flags) ret = 0; - cleanup: +cleanup: _gnutls_free_datum(&data); _gnutls_free_datum(&signature); gnutls_pk_params_release(¶ms); @@ -2752,10 +2657,9 @@ int gnutls_x509_crq_verify(gnutls_x509_crq_t crq, unsigned int flags) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crq_set_private_key_usage_period(gnutls_x509_crq_t crq, - time_t activation, - time_t expiration) +int gnutls_x509_crq_set_private_key_usage_period(gnutls_x509_crq_t crq, + time_t activation, + time_t expiration) { int result; gnutls_datum_t der_data; @@ -2766,9 +2670,8 @@ gnutls_x509_crq_set_private_key_usage_period(gnutls_x509_crq_t crq, return GNUTLS_E_INVALID_REQUEST; } - result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.PrivateKeyUsagePeriod", &c2); + result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.PrivateKeyUsagePeriod", &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -2796,7 +2699,7 @@ gnutls_x509_crq_set_private_key_usage_period(gnutls_x509_crq_t crq, _gnutls_free_datum(&der_data); - cleanup: +cleanup: asn1_delete_structure(&c2); return result; @@ -2839,10 +2742,9 @@ int gnutls_x509_crq_get_tlsfeatures(gnutls_x509_crq_t crq, return GNUTLS_E_INVALID_REQUEST; } - if ((ret = - gnutls_x509_crq_get_extension_by_oid2(crq, - GNUTLS_X509EXT_OID_TLSFEATURES, - 0, &der, critical)) < 0) { + if ((ret = gnutls_x509_crq_get_extension_by_oid2( + crq, GNUTLS_X509EXT_OID_TLSFEATURES, 0, &der, critical)) < + 0) { return ret; } @@ -2858,7 +2760,7 @@ int gnutls_x509_crq_get_tlsfeatures(gnutls_x509_crq_t crq, } ret = 0; - cleanup: +cleanup: gnutls_free(der.data); return ret; } @@ -2895,9 +2797,8 @@ int gnutls_x509_crq_set_tlsfeatures(gnutls_x509_crq_t crq, return ret; } - ret = - _gnutls_x509_crq_set_extension(crq, GNUTLS_X509EXT_OID_TLSFEATURES, - &der, 0); + ret = _gnutls_x509_crq_set_extension( + crq, GNUTLS_X509EXT_OID_TLSFEATURES, &der, 0); _gnutls_free_datum(&der); @@ -2923,10 +2824,9 @@ int gnutls_x509_crq_set_tlsfeatures(gnutls_x509_crq_t crq, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crq_set_extension_by_oid(gnutls_x509_crq_t crq, - const char *oid, const void *buf, - size_t sizeof_buf, unsigned int critical) +int gnutls_x509_crq_set_extension_by_oid(gnutls_x509_crq_t crq, const char *oid, + const void *buf, size_t sizeof_buf, + unsigned int critical) { int result; gnutls_datum_t der_data; @@ -2946,7 +2846,6 @@ gnutls_x509_crq_set_extension_by_oid(gnutls_x509_crq_t crq, } return 0; - } /** @@ -2968,9 +2867,8 @@ gnutls_x509_crq_set_extension_by_oid(gnutls_x509_crq_t crq, * * Since: 3.6.0 **/ -int -gnutls_x509_crq_set_spki(gnutls_x509_crq_t crq, - const gnutls_x509_spki_t spki, unsigned int flags) +int gnutls_x509_crq_set_spki(gnutls_x509_crq_t crq, + const gnutls_x509_spki_t spki, unsigned int flags) { int ret; gnutls_pk_algorithm_t crq_pk; @@ -3025,9 +2923,8 @@ gnutls_x509_crq_set_spki(gnutls_x509_crq_t crq, /* If salt size is zero, find the optimal salt size. */ if (spki->salt_size == 0) { - ret = - _gnutls_find_rsa_pss_salt_size(bits, me, - spki->salt_size); + ret = _gnutls_find_rsa_pss_salt_size(bits, me, + spki->salt_size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -3056,14 +2953,15 @@ gnutls_x509_crq_set_spki(gnutls_x509_crq_t crq, ret = _gnutls_x509_write_spki_params(crq->crq, "certificationRequestInfo." "subjectPKInfo." - "algorithm", &tpki); + "algorithm", + &tpki); if (ret < 0) { gnutls_assert(); goto cleanup; } ret = 0; - cleanup: +cleanup: gnutls_pk_params_release(¶ms); return ret; } diff --git a/lib/x509/dn.c b/lib/x509/dn.c index c13ce113e8..bae7564ccc 100644 --- a/lib/x509/dn.c +++ b/lib/x509/dn.c @@ -34,7 +34,7 @@ */ static int append_elements(asn1_node asn1_struct, const char *asn1_rdn_name, - gnutls_buffer_st * str, int k1, unsigned last) + gnutls_buffer_st *str, int k1, unsigned last) { int k2, result, max_k2; int len; @@ -58,7 +58,8 @@ static int append_elements(asn1_node asn1_struct, const char *asn1_rdn_name, len = sizeof(value) - 1; result = asn1_read_value(asn1_struct, tmpbuffer1, value, &len); - if (result != ASN1_VALUE_NOT_FOUND && result != ASN1_SUCCESS) { /* expected */ + if (result != ASN1_VALUE_NOT_FOUND && + result != ASN1_SUCCESS) { /* expected */ gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; @@ -73,13 +74,13 @@ static int append_elements(asn1_node asn1_struct, const char *asn1_rdn_name, goto cleanup; } - do { /* Move to the attribute type and values + do { /* Move to the attribute type and values */ k2++; if (tmpbuffer1[0] != 0) - snprintf(tmpbuffer2, sizeof(tmpbuffer2), - "%s.?%d", tmpbuffer1, k2); + snprintf(tmpbuffer2, sizeof(tmpbuffer2), "%s.?%d", + tmpbuffer1, k2); else snprintf(tmpbuffer2, sizeof(tmpbuffer2), "?%d", k2); @@ -91,7 +92,8 @@ static int append_elements(asn1_node asn1_struct, const char *asn1_rdn_name, if (result == ASN1_ELEMENT_NOT_FOUND) break; - if (result != ASN1_VALUE_NOT_FOUND && result != ASN1_SUCCESS) { /* expected */ + if (result != ASN1_VALUE_NOT_FOUND && + result != ASN1_SUCCESS) { /* expected */ gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; @@ -125,20 +127,22 @@ static int append_elements(asn1_node asn1_struct, const char *asn1_rdn_name, gnutls_assert(); goto cleanup; } -#define STR_APPEND(y) if ((result=_gnutls_buffer_append_str( str, y)) < 0) { \ - gnutls_assert(); \ - goto cleanup; \ -} -#define DATA_APPEND(x,y) if ((result=_gnutls_buffer_append_data( str, x,y)) < 0) { \ - gnutls_assert(); \ - goto cleanup; \ -} +#define STR_APPEND(y) \ + if ((result = _gnutls_buffer_append_str(str, y)) < 0) { \ + gnutls_assert(); \ + goto cleanup; \ + } +#define DATA_APPEND(x, y) \ + if ((result = _gnutls_buffer_append_data(str, x, y)) < 0) { \ + gnutls_assert(); \ + goto cleanup; \ + } /* The encodings of adjoining RelativeDistinguishedNames are separated * by a comma character (',' ASCII 44). */ - ldap_desc = - gnutls_x509_dn_oid_name(oid, GNUTLS_X509_DN_OID_RETURN_OID); + ldap_desc = gnutls_x509_dn_oid_name( + oid, GNUTLS_X509_DN_OID_RETURN_OID); STR_APPEND(ldap_desc); STR_APPEND("="); @@ -150,8 +154,8 @@ static int append_elements(asn1_node asn1_struct, const char *asn1_rdn_name, * Explicitly reject DirectoryString in such case. */ const char *asn_desc = _gnutls_oid_get_asn_desc(oid); - if (asn_desc && !strcmp(asn_desc, "PKIX1.DirectoryString") - && tvd.data[1] == 0) { + if (asn_desc && !strcmp(asn_desc, "PKIX1.DirectoryString") && + tvd.data[1] == 0) { gnutls_assert(); result = GNUTLS_E_ASN1_VALUE_NOT_VALID; _gnutls_debug_log("Empty DirectoryString\n"); @@ -159,15 +163,13 @@ static int append_elements(asn1_node asn1_struct, const char *asn1_rdn_name, } result = - _gnutls_x509_dn_to_string(oid, tvd.data, tvd.size, &td); + _gnutls_x509_dn_to_string(oid, tvd.data, tvd.size, &td); if (result < 0) { gnutls_assert(); - _gnutls_debug_log - ("Cannot parse OID: '%s' with value '%s'\n", - oid, _gnutls_bin2hex(tvd.data, - tvd.size, - tmpbuffer3, - sizeof(tmpbuffer3), NULL)); + _gnutls_debug_log( + "Cannot parse OID: '%s' with value '%s'\n", oid, + _gnutls_bin2hex(tvd.data, tvd.size, tmpbuffer3, + sizeof(tmpbuffer3), NULL)); goto cleanup; } @@ -184,21 +186,18 @@ static int append_elements(asn1_node asn1_struct, const char *asn1_rdn_name, } else if (!last) { STR_APPEND(","); } - } - while (1); + } while (1); result = 0; - cleanup: +cleanup: _gnutls_free_datum(&td); _gnutls_free_datum(&tvd); return result; } -int -_gnutls_x509_get_dn(asn1_node asn1_struct, - const char *asn1_rdn_name, gnutls_datum_t * dn, - unsigned flags) +int _gnutls_x509_get_dn(asn1_node asn1_struct, const char *asn1_rdn_name, + gnutls_datum_t *dn, unsigned flags) { gnutls_buffer_st out_str; int i, k1, result; @@ -207,11 +206,10 @@ _gnutls_x509_get_dn(asn1_node asn1_struct, result = asn1_number_of_elements(asn1_struct, asn1_rdn_name, &k1); if (result != ASN1_SUCCESS) { - if (result == ASN1_ELEMENT_NOT_FOUND - || result == ASN1_VALUE_NOT_FOUND) { - result = - gnutls_assert_val - (GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); + if (result == ASN1_ELEMENT_NOT_FOUND || + result == ASN1_VALUE_NOT_FOUND) { + result = gnutls_assert_val( + GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); } else { gnutls_assert(); result = _gnutls_asn2err(result); @@ -227,10 +225,9 @@ _gnutls_x509_get_dn(asn1_node asn1_struct, if (flags & GNUTLS_X509_DN_FLAG_COMPAT) { for (i = 0; i < k1; i++) { - result = - append_elements(asn1_struct, asn1_rdn_name, - &out_str, i + 1, - (i == (k1 - 1)) ? 1 : 0); + result = append_elements(asn1_struct, asn1_rdn_name, + &out_str, i + 1, + (i == (k1 - 1)) ? 1 : 0); if (result < 0) { gnutls_assert(); goto cleanup; @@ -238,9 +235,8 @@ _gnutls_x509_get_dn(asn1_node asn1_struct, } } else { while (k1 > 0) { - result = - append_elements(asn1_struct, asn1_rdn_name, - &out_str, k1, k1 == 1 ? 1 : 0); + result = append_elements(asn1_struct, asn1_rdn_name, + &out_str, k1, k1 == 1 ? 1 : 0); if (result < 0) { gnutls_assert(); goto cleanup; @@ -251,10 +247,9 @@ _gnutls_x509_get_dn(asn1_node asn1_struct, return _gnutls_buffer_to_datum(&out_str, dn, 1); - cleanup: +cleanup: _gnutls_buffer_clear(&out_str); return result; - } /* Parses an X509 DN in the asn1_struct, and puts the output into @@ -263,10 +258,8 @@ _gnutls_x509_get_dn(asn1_node asn1_struct, * asn1_rdn_name must be a string in the form "tbsCertificate.issuer.rdnSequence". * That is to point in the rndSequence. */ -int -_gnutls_x509_parse_dn(asn1_node asn1_struct, - const char *asn1_rdn_name, char *buf, - size_t *buf_size, unsigned flags) +int _gnutls_x509_parse_dn(asn1_node asn1_struct, const char *asn1_rdn_name, + char *buf, size_t *buf_size, unsigned flags) { int ret; gnutls_datum_t dn = { NULL, 0 }; @@ -302,7 +295,7 @@ _gnutls_x509_parse_dn(asn1_node asn1_struct, *buf_size = dn.size + 1; ret = 0; - cleanup: +cleanup: _gnutls_free_datum(&dn); return ret; } @@ -319,11 +312,9 @@ _gnutls_x509_parse_dn(asn1_node asn1_struct, * indx specifies which OID to return. Ie 0 means return the first specified * OID found, 1 the second etc. */ -int -_gnutls_x509_parse_dn_oid(asn1_node asn1_struct, - const char *asn1_rdn_name, - const char *given_oid, int indx, - unsigned int raw_flag, gnutls_datum_t * out) +int _gnutls_x509_parse_dn_oid(asn1_node asn1_struct, const char *asn1_rdn_name, + const char *given_oid, int indx, + unsigned int raw_flag, gnutls_datum_t *out) { int k2, k1, result; char tmpbuffer1[MAX_NAME_SIZE]; @@ -337,7 +328,6 @@ _gnutls_x509_parse_dn_oid(asn1_node asn1_struct, k1 = 0; do { - k1++; /* create a string like "tbsCertList.issuer.rdnSequence.?1" */ @@ -363,7 +353,7 @@ _gnutls_x509_parse_dn_oid(asn1_node asn1_struct, k2 = 0; - do { /* Move to the attribute type and values + do { /* Move to the attribute type and values */ k2++; @@ -371,16 +361,15 @@ _gnutls_x509_parse_dn_oid(asn1_node asn1_struct, snprintf(tmpbuffer2, sizeof(tmpbuffer2), "%s.?%d", tmpbuffer1, k2); else - snprintf(tmpbuffer2, sizeof(tmpbuffer2), - "?%d", k2); + snprintf(tmpbuffer2, sizeof(tmpbuffer2), "?%d", + k2); /* Try to read the RelativeDistinguishedName attributes. */ len = sizeof(value) - 1; - result = - asn1_read_value(asn1_struct, tmpbuffer2, value, - &len); + result = asn1_read_value(asn1_struct, tmpbuffer2, value, + &len); if (result == ASN1_ELEMENT_NOT_FOUND) { break; @@ -399,8 +388,8 @@ _gnutls_x509_parse_dn_oid(asn1_node asn1_struct, ".type"); len = sizeof(oid) - 1; - result = - asn1_read_value(asn1_struct, tmpbuffer3, oid, &len); + result = asn1_read_value(asn1_struct, tmpbuffer3, oid, + &len); if (result == ASN1_ELEMENT_NOT_FOUND) break; @@ -410,18 +399,18 @@ _gnutls_x509_parse_dn_oid(asn1_node asn1_struct, goto cleanup; } - if (strcmp(oid, given_oid) == 0 && indx == i++) { /* Found the OID */ + if (strcmp(oid, given_oid) == 0 && + indx == i++) { /* Found the OID */ /* Read the Value */ - _gnutls_str_cpy(tmpbuffer3, - sizeof(tmpbuffer3), tmpbuffer2); - _gnutls_str_cat(tmpbuffer3, - sizeof(tmpbuffer3), ".value"); - - result = - _gnutls_x509_read_value(asn1_struct, - tmpbuffer3, &td); + _gnutls_str_cpy(tmpbuffer3, sizeof(tmpbuffer3), + tmpbuffer2); + _gnutls_str_cat(tmpbuffer3, sizeof(tmpbuffer3), + ".value"); + + result = _gnutls_x509_read_value( + asn1_struct, tmpbuffer3, &td); if (result < 0) { gnutls_assert(); goto cleanup; @@ -432,12 +421,9 @@ _gnutls_x509_parse_dn_oid(asn1_node asn1_struct, out->size = td.size; return 0; - } else { /* parse data. raw_flag == 0 */ - result = - _gnutls_x509_dn_to_string(oid, - td.data, - td.size, - out); + } else { /* parse data. raw_flag == 0 */ + result = _gnutls_x509_dn_to_string( + oid, td.data, td.size, out); _gnutls_free_datum(&td); if (result < 0) { @@ -447,19 +433,17 @@ _gnutls_x509_parse_dn_oid(asn1_node asn1_struct, return 0; - } /* raw_flag == 0 */ + } /* raw_flag == 0 */ } - } - while (1); + } while (1); - } - while (1); + } while (1); gnutls_assert(); result = GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; - cleanup: +cleanup: return result; } @@ -472,10 +456,8 @@ _gnutls_x509_parse_dn_oid(asn1_node asn1_struct, * indx specifies which OID to return. Ie 0 means return the first specified * OID found, 1 the second etc. */ -int -_gnutls_x509_get_dn_oid(asn1_node asn1_struct, - const char *asn1_rdn_name, - int indx, void *_oid, size_t *sizeof_oid) +int _gnutls_x509_get_dn_oid(asn1_node asn1_struct, const char *asn1_rdn_name, + int indx, void *_oid, size_t *sizeof_oid) { int k2, k1, result; char tmpbuffer1[MAX_NAME_SIZE]; @@ -488,7 +470,6 @@ _gnutls_x509_get_dn_oid(asn1_node asn1_struct, k1 = 0; do { - k1++; /* create a string like "tbsCertList.issuer.rdnSequence.?1" */ @@ -514,7 +495,7 @@ _gnutls_x509_get_dn_oid(asn1_node asn1_struct, k2 = 0; - do { /* Move to the attribute type and values + do { /* Move to the attribute type and values */ k2++; @@ -522,16 +503,15 @@ _gnutls_x509_get_dn_oid(asn1_node asn1_struct, snprintf(tmpbuffer2, sizeof(tmpbuffer2), "%s.?%d", tmpbuffer1, k2); else - snprintf(tmpbuffer2, sizeof(tmpbuffer2), - "?%d", k2); + snprintf(tmpbuffer2, sizeof(tmpbuffer2), "?%d", + k2); /* Try to read the RelativeDistinguishedName attributes. */ len = sizeof(value) - 1; - result = - asn1_read_value(asn1_struct, tmpbuffer2, value, - &len); + result = asn1_read_value(asn1_struct, tmpbuffer2, value, + &len); if (result == ASN1_ELEMENT_NOT_FOUND) { break; @@ -550,8 +530,8 @@ _gnutls_x509_get_dn_oid(asn1_node asn1_struct, ".type"); len = sizeof(oid) - 1; - result = - asn1_read_value(asn1_struct, tmpbuffer3, oid, &len); + result = asn1_read_value(asn1_struct, tmpbuffer3, oid, + &len); if (result == ASN1_ELEMENT_NOT_FOUND) break; @@ -561,7 +541,7 @@ _gnutls_x509_get_dn_oid(asn1_node asn1_struct, goto cleanup; } - if (indx == i++) { /* Found the OID */ + if (indx == i++) { /* Found the OID */ len = strlen(oid) + 1; @@ -576,17 +556,15 @@ _gnutls_x509_get_dn_oid(asn1_node asn1_struct, return 0; } - } - while (1); + } while (1); - } - while (1); + } while (1); gnutls_assert(); result = GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; - cleanup: +cleanup: return result; } @@ -594,10 +572,10 @@ _gnutls_x509_get_dn_oid(asn1_node asn1_struct, * 'multi' must be (0) if writing an AttributeTypeAndValue, and 1 if Attribute. * In all cases only one value is written. */ -static int -_gnutls_x509_write_attribute(const char *given_oid, - asn1_node asn1_struct, const char *where, - const void *_data, int sizeof_data) +static int _gnutls_x509_write_attribute(const char *given_oid, + asn1_node asn1_struct, + const char *where, const void *_data, + int sizeof_data) { char tmp[128]; int result; @@ -636,12 +614,10 @@ _gnutls_x509_write_attribute(const char *given_oid, * * The output is allocated and stored in value. */ -int -_gnutls_x509_decode_and_read_attribute(asn1_node asn1_struct, - const char *where, char *oid, - int oid_size, - gnutls_datum_t * value, int multi, - int octet_string) +int _gnutls_x509_decode_and_read_attribute(asn1_node asn1_struct, + const char *where, char *oid, + int oid_size, gnutls_datum_t *value, + int multi, int octet_string) { char tmpbuffer[128]; int len, result; @@ -667,12 +643,12 @@ _gnutls_x509_decode_and_read_attribute(asn1_node asn1_struct, _gnutls_str_cat(tmpbuffer, sizeof(tmpbuffer), ".value"); if (multi) - _gnutls_str_cat(tmpbuffer, sizeof(tmpbuffer), "s.?1"); /* .values.?1 */ + _gnutls_str_cat(tmpbuffer, sizeof(tmpbuffer), + "s.?1"); /* .values.?1 */ if (octet_string) - result = - _gnutls_x509_read_string(asn1_struct, tmpbuffer, value, - ASN1_ETYPE_OCTET_STRING, 0); + result = _gnutls_x509_read_string(asn1_struct, tmpbuffer, value, + ASN1_ETYPE_OCTET_STRING, 0); else result = _gnutls_x509_read_value(asn1_struct, tmpbuffer, value); if (result < 0) { @@ -681,7 +657,6 @@ _gnutls_x509_decode_and_read_attribute(asn1_node asn1_struct, } return 0; - } /* Sets an X509 DN in the asn1_struct, and puts the given OID in the DN. @@ -691,10 +666,9 @@ _gnutls_x509_decode_and_read_attribute(asn1_node asn1_struct, * That is to point before the rndSequence. * */ -int -_gnutls_x509_set_dn_oid(asn1_node asn1_struct, - const char *asn1_name, const char *given_oid, - int raw_flag, const char *name, int sizeof_name) +int _gnutls_x509_set_dn_oid(asn1_node asn1_struct, const char *asn1_name, + const char *given_oid, int raw_flag, + const char *name, int sizeof_name) { int result; char tmp[MAX_NAME_SIZE], asn1_rdn_name[MAX_NAME_SIZE]; @@ -747,15 +721,11 @@ _gnutls_x509_set_dn_oid(asn1_node asn1_struct, _gnutls_str_cat(tmp, sizeof(tmp), ".?LAST.?LAST"); if (!raw_flag) { - result = - _gnutls_x509_encode_and_write_attribute(given_oid, - asn1_struct, - tmp, name, - sizeof_name, 0); + result = _gnutls_x509_encode_and_write_attribute( + given_oid, asn1_struct, tmp, name, sizeof_name, 0); } else { - result = - _gnutls_x509_write_attribute(given_oid, asn1_struct, - tmp, name, sizeof_name); + result = _gnutls_x509_write_attribute(given_oid, asn1_struct, + tmp, name, sizeof_name); } if (result < 0) { @@ -784,7 +754,7 @@ _gnutls_x509_set_dn_oid(asn1_node asn1_struct, * updated if the provided buffer is not long enough, otherwise a * negative error value. **/ -int gnutls_x509_rdn_get(const gnutls_datum_t * idn, char *buf, size_t *buf_size) +int gnutls_x509_rdn_get(const gnutls_datum_t *idn, char *buf, size_t *buf_size) { int ret; gnutls_datum_t out; @@ -821,9 +791,8 @@ int gnutls_x509_rdn_get(const gnutls_datum_t * idn, char *buf, size_t *buf_size) * updated if the provided buffer is not long enough, otherwise a * negative error value. **/ -int -gnutls_x509_rdn_get2(const gnutls_datum_t * idn, - gnutls_datum_t * str, unsigned flags) +int gnutls_x509_rdn_get2(const gnutls_datum_t *idn, gnutls_datum_t *str, + unsigned flags) { int ret; gnutls_x509_dn_t dn; @@ -845,7 +814,7 @@ gnutls_x509_rdn_get2(const gnutls_datum_t * idn, } ret = 0; - cleanup: +cleanup: gnutls_x509_dn_deinit(dn); return ret; } @@ -869,10 +838,9 @@ gnutls_x509_rdn_get2(const gnutls_datum_t * idn, * updated if the provided buffer is not long enough, otherwise a * negative error value. **/ -int -gnutls_x509_rdn_get_by_oid(const gnutls_datum_t * idn, const char *oid, - unsigned indx, unsigned int raw_flag, - void *buf, size_t *buf_size) +int gnutls_x509_rdn_get_by_oid(const gnutls_datum_t *idn, const char *oid, + unsigned indx, unsigned int raw_flag, void *buf, + size_t *buf_size) { int result; asn1_node dn = NULL; @@ -882,9 +850,8 @@ gnutls_x509_rdn_get_by_oid(const gnutls_datum_t * idn, const char *oid, return GNUTLS_E_INVALID_REQUEST; } - if ((result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.Name", &dn)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), "PKIX1.Name", + &dn)) != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -897,9 +864,8 @@ gnutls_x509_rdn_get_by_oid(const gnutls_datum_t * idn, const char *oid, return _gnutls_asn2err(result); } - result = - _gnutls_x509_parse_dn_oid(dn, "rdnSequence", oid, indx, - raw_flag, &td); + result = _gnutls_x509_parse_dn_oid(dn, "rdnSequence", oid, indx, + raw_flag, &td); asn1_delete_structure(&dn); if (result < 0) @@ -925,9 +891,8 @@ gnutls_x509_rdn_get_by_oid(const gnutls_datum_t * idn, const char *oid, * * Since: 2.4.0 **/ -int -gnutls_x509_rdn_get_oid(const gnutls_datum_t * idn, - unsigned indx, void *buf, size_t *buf_size) +int gnutls_x509_rdn_get_oid(const gnutls_datum_t *idn, unsigned indx, void *buf, + size_t *buf_size) { int result; asn1_node dn = NULL; @@ -936,9 +901,8 @@ gnutls_x509_rdn_get_oid(const gnutls_datum_t * idn, return GNUTLS_E_INVALID_REQUEST; } - if ((result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.Name", &dn)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), "PKIX1.Name", + &dn)) != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -952,7 +916,7 @@ gnutls_x509_rdn_get_oid(const gnutls_datum_t * idn, } result = - _gnutls_x509_get_dn_oid(dn, "rdnSequence", indx, buf, buf_size); + _gnutls_x509_get_dn_oid(dn, "rdnSequence", indx, buf, buf_size); asn1_delete_structure(&dn); return result; @@ -964,9 +928,8 @@ gnutls_x509_rdn_get_oid(const gnutls_datum_t * idn, * Returns 1 if the DN's match and (0) if they don't match. Otherwise * a negative error code is returned to indicate error. */ -int -_gnutls_x509_compare_raw_dn(const gnutls_datum_t * dn1, - const gnutls_datum_t * dn2) +int _gnutls_x509_compare_raw_dn(const gnutls_datum_t *dn1, + const gnutls_datum_t *dn2) { int ret; gnutls_datum_t str1, str2; @@ -1013,9 +976,9 @@ _gnutls_x509_compare_raw_dn(const gnutls_datum_t * dn1, goto cleanup; } - ret = 1; /* they match */ + ret = 1; /* they match */ - cleanup: +cleanup: _gnutls_free_datum(&str1); _gnutls_free_datum(&str2); diff --git a/lib/x509/email-verify.c b/lib/x509/email-verify.c index c9ece51dcb..2e5eaf85a2 100644 --- a/lib/x509/email-verify.c +++ b/lib/x509/email-verify.c @@ -37,9 +37,8 @@ * * Returns: non-zero for a successful match, and zero on failure. **/ -unsigned -gnutls_x509_crt_check_email(gnutls_x509_crt_t cert, - const char *email, unsigned int flags) +unsigned gnutls_x509_crt_check_email(gnutls_x509_crt_t cert, const char *email, + unsigned int flags) { char rfc822name[MAX_CN]; size_t rfc822namesize; @@ -72,34 +71,30 @@ gnutls_x509_crt_check_email(gnutls_x509_crt_t cert, * against all those of type RFC822Name. */ for (i = 0; !(ret < 0); i++) { - rfc822namesize = sizeof(rfc822name); - ret = gnutls_x509_crt_get_subject_alt_name(cert, i, - rfc822name, - &rfc822namesize, - NULL); + ret = gnutls_x509_crt_get_subject_alt_name( + cert, i, rfc822name, &rfc822namesize, NULL); if (ret == GNUTLS_SAN_RFC822NAME) { found_rfc822name = 1; if (memchr(rfc822name, '\0', rfc822namesize)) { - _gnutls_debug_log - ("certificate has %s with embedded null in rfc822name\n", - rfc822name); + _gnutls_debug_log( + "certificate has %s with embedded null in rfc822name\n", + rfc822name); continue; } if (!_gnutls_str_is_print(rfc822name, rfc822namesize)) { - _gnutls_debug_log - ("invalid (non-ASCII) email in certificate %.*s\n", - (int)rfc822namesize, rfc822name); + _gnutls_debug_log( + "invalid (non-ASCII) email in certificate %.*s\n", + (int)rfc822namesize, rfc822name); continue; } - ret = - _gnutls_hostname_compare(rfc822name, rfc822namesize, - a_email, - GNUTLS_VERIFY_DO_NOT_ALLOW_WILDCARDS); + ret = _gnutls_hostname_compare( + rfc822name, rfc822namesize, a_email, + GNUTLS_VERIFY_DO_NOT_ALLOW_WILDCARDS); if (ret != 0) { ret = 1; goto cleanup; @@ -114,43 +109,44 @@ gnutls_x509_crt_check_email(gnutls_x509_crt_t cert, /* enforce the RFC6125 (§1.8) requirement that only * a single CN must be present */ rfc822namesize = sizeof(rfc822name); - ret = gnutls_x509_crt_get_dn_by_oid - (cert, GNUTLS_OID_PKCS9_EMAIL, 1, 0, rfc822name, - &rfc822namesize); + ret = gnutls_x509_crt_get_dn_by_oid(cert, + GNUTLS_OID_PKCS9_EMAIL, 1, + 0, rfc822name, + &rfc822namesize); if (ret != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { ret = 0; goto cleanup; } rfc822namesize = sizeof(rfc822name); - ret = gnutls_x509_crt_get_dn_by_oid - (cert, GNUTLS_OID_PKCS9_EMAIL, 0, 0, rfc822name, - &rfc822namesize); + ret = gnutls_x509_crt_get_dn_by_oid(cert, + GNUTLS_OID_PKCS9_EMAIL, 0, + 0, rfc822name, + &rfc822namesize); if (ret < 0) { ret = 0; goto cleanup; } if (memchr(rfc822name, '\0', rfc822namesize)) { - _gnutls_debug_log - ("certificate has EMAIL %s with embedded null in name\n", - rfc822name); + _gnutls_debug_log( + "certificate has EMAIL %s with embedded null in name\n", + rfc822name); ret = 0; goto cleanup; } if (!_gnutls_str_is_print(rfc822name, rfc822namesize)) { - _gnutls_debug_log - ("invalid (non-ASCII) email in certificate DN %.*s\n", - (int)rfc822namesize, rfc822name); + _gnutls_debug_log( + "invalid (non-ASCII) email in certificate DN %.*s\n", + (int)rfc822namesize, rfc822name); ret = 0; goto cleanup; } - ret = - _gnutls_hostname_compare(rfc822name, rfc822namesize, - a_email, - GNUTLS_VERIFY_DO_NOT_ALLOW_WILDCARDS); + ret = _gnutls_hostname_compare( + rfc822name, rfc822namesize, a_email, + GNUTLS_VERIFY_DO_NOT_ALLOW_WILDCARDS); if (ret != 0) { ret = 1; goto cleanup; @@ -160,7 +156,7 @@ gnutls_x509_crt_check_email(gnutls_x509_crt_t cert, /* not found a matching name */ ret = 0; - cleanup: +cleanup: if (a_email != email) { gnutls_free(a_email); } diff --git a/lib/x509/extensions.c b/lib/x509/extensions.c index 73133e9db4..24a4ef99c8 100644 --- a/lib/x509/extensions.c +++ b/lib/x509/extensions.c @@ -33,10 +33,9 @@ #include #include -int -_gnutls_get_extension(asn1_node asn, const char *root, - const char *extension_id, int indx, - gnutls_datum_t * ret, unsigned int *_critical) +int _gnutls_get_extension(asn1_node asn, const char *root, + const char *extension_id, int indx, + gnutls_datum_t *ret, unsigned int *_critical) { int k, result, len; char name[MAX_NAME_SIZE], name2[MAX_NAME_SIZE]; @@ -70,7 +69,8 @@ _gnutls_get_extension(asn1_node asn, const char *root, /* Handle Extension */ - if (strcmp(extnID, extension_id) == 0 && indx == indx_counter++) { + if (strcmp(extnID, extension_id) == 0 && + indx == indx_counter++) { /* extension was found */ @@ -81,7 +81,7 @@ _gnutls_get_extension(asn1_node asn, const char *root, len = sizeof(str_critical); result = - asn1_read_value(asn, name2, str_critical, &len); + asn1_read_value(asn, name2, str_critical, &len); if (result == ASN1_ELEMENT_NOT_FOUND) { gnutls_assert(); @@ -115,8 +115,7 @@ _gnutls_get_extension(asn1_node asn, const char *root, return 0; } - } - while (1); + } while (1); if (result == ASN1_ELEMENT_NOT_FOUND) { return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; @@ -126,9 +125,8 @@ _gnutls_get_extension(asn1_node asn, const char *root, } } -static int -get_indx_extension(asn1_node asn, const char *root, - int indx, gnutls_datum_t * out) +static int get_indx_extension(asn1_node asn, const char *root, int indx, + gnutls_datum_t *out) { char name[MAX_NAME_SIZE]; int ret; @@ -145,10 +143,9 @@ get_indx_extension(asn1_node asn, const char *root, return 0; } -int -_gnutls_x509_crt_get_extension(gnutls_x509_crt_t cert, - const char *extension_id, int indx, - gnutls_datum_t * data, unsigned int *critical) +int _gnutls_x509_crt_get_extension(gnutls_x509_crt_t cert, + const char *extension_id, int indx, + gnutls_datum_t *data, unsigned int *critical) { return _gnutls_get_extension(cert->cert, "tbsCertificate.extensions", extension_id, indx, data, critical); @@ -171,18 +168,16 @@ _gnutls_x509_crt_get_extension(gnutls_x509_crt_t cert, * last extension available %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE * will be returned. **/ -int -gnutls_x509_crt_get_extension_data2(gnutls_x509_crt_t cert, - unsigned indx, gnutls_datum_t * data) +int gnutls_x509_crt_get_extension_data2(gnutls_x509_crt_t cert, unsigned indx, + gnutls_datum_t *data) { - return get_indx_extension(cert->cert, "tbsCertificate.extensions", - indx, data); + return get_indx_extension(cert->cert, "tbsCertificate.extensions", indx, + data); } -int -_gnutls_x509_crl_get_extension(gnutls_x509_crl_t crl, - const char *extension_id, int indx, - gnutls_datum_t * data, unsigned int *critical) +int _gnutls_x509_crl_get_extension(gnutls_x509_crl_t crl, + const char *extension_id, int indx, + gnutls_datum_t *data, unsigned int *critical) { return _gnutls_get_extension(crl->crl, "tbsCertList.crlExtensions", extension_id, indx, data, critical); @@ -205,12 +200,11 @@ _gnutls_x509_crl_get_extension(gnutls_x509_crl_t crl, * last extension available %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE * will be returned. **/ -int -gnutls_x509_crl_get_extension_data2(gnutls_x509_crl_t crl, - unsigned indx, gnutls_datum_t * data) +int gnutls_x509_crl_get_extension_data2(gnutls_x509_crl_t crl, unsigned indx, + gnutls_datum_t *data) { - return get_indx_extension(crl->crl, "tbsCertList.crlExtensions", - indx, data); + return get_indx_extension(crl->crl, "tbsCertList.crlExtensions", indx, + data); } /* This function will attempt to return the requested extension OID found in @@ -219,8 +213,8 @@ gnutls_x509_crl_get_extension_data2(gnutls_x509_crl_t crl, * If you have passed the last extension, GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE will * be returned. */ -static int get_extension_oid(asn1_node asn, const char *root, - unsigned indx, void *oid, size_t *sizeof_oid) +static int get_extension_oid(asn1_node asn, const char *root, unsigned indx, + void *oid, size_t *sizeof_oid) { int k, result, len; char name[MAX_NAME_SIZE], name2[MAX_NAME_SIZE]; @@ -264,8 +258,7 @@ static int get_extension_oid(asn1_node asn, const char *root, return 0; } - } - while (1); + } while (1); if (result == ASN1_ELEMENT_NOT_FOUND) { return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; @@ -281,20 +274,18 @@ static int get_extension_oid(asn1_node asn, const char *root, * If you have passed the last extension, GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE will * be returned. */ -int -_gnutls_x509_crt_get_extension_oid(gnutls_x509_crt_t cert, - int indx, void *oid, size_t *sizeof_oid) +int _gnutls_x509_crt_get_extension_oid(gnutls_x509_crt_t cert, int indx, + void *oid, size_t *sizeof_oid) { - return get_extension_oid(cert->cert, "tbsCertificate.extensions", - indx, oid, sizeof_oid); + return get_extension_oid(cert->cert, "tbsCertificate.extensions", indx, + oid, sizeof_oid); } -int -_gnutls_x509_crl_get_extension_oid(gnutls_x509_crl_t crl, - int indx, void *oid, size_t *sizeof_oid) +int _gnutls_x509_crl_get_extension_oid(gnutls_x509_crl_t crl, int indx, + void *oid, size_t *sizeof_oid) { - return get_extension_oid(crl->crl, "tbsCertList.crlExtensions", - indx, oid, sizeof_oid); + return get_extension_oid(crl->crl, "tbsCertList.crlExtensions", indx, + oid, sizeof_oid); } /* This function will attempt to set the requested extension in @@ -302,9 +293,9 @@ _gnutls_x509_crl_get_extension_oid(gnutls_x509_crl_t crl, * * Critical will be either 0 or 1. */ -static int -add_extension(asn1_node asn, const char *root, const char *extension_id, - const gnutls_datum_t * ext_data, unsigned int critical) +static int add_extension(asn1_node asn, const char *root, + const char *extension_id, + const gnutls_datum_t *ext_data, unsigned int critical) { int result; const char *str; @@ -364,9 +355,10 @@ add_extension(asn1_node asn, const char *root, const char *extension_id, /* Overwrite the given extension (using the index) * index here starts from one. */ -static int -overwrite_extension(asn1_node asn, const char *root, unsigned int indx, - const gnutls_datum_t * ext_data, unsigned int critical) +static int overwrite_extension(asn1_node asn, const char *root, + unsigned int indx, + const gnutls_datum_t *ext_data, + unsigned int critical) { char name[MAX_NAME_SIZE], name2[MAX_NAME_SIZE]; const char *str; @@ -403,10 +395,8 @@ overwrite_extension(asn1_node asn, const char *root, unsigned int indx, return 0; } -int -_gnutls_set_extension(asn1_node asn, const char *root, - const char *ext_id, - const gnutls_datum_t * ext_data, unsigned int critical) +int _gnutls_set_extension(asn1_node asn, const char *root, const char *ext_id, + const gnutls_datum_t *ext_data, unsigned int critical) { int result = 0; int k, len; @@ -435,7 +425,6 @@ _gnutls_set_extension(asn1_node asn, const char *root, } do { - _gnutls_str_cpy(name2, sizeof(name2), name); _gnutls_str_cat(name2, sizeof(name2), ".extnID"); @@ -459,10 +448,8 @@ _gnutls_set_extension(asn1_node asn, const char *root, ext_data, critical); } - } - while (0); - } - while (1); + } while (0); + } while (1); if (result == ASN1_ELEMENT_NOT_FOUND) { return add_extension(asn, root, ext_id, ext_data, critical); @@ -479,11 +466,9 @@ _gnutls_set_extension(asn1_node asn, const char *root, * * Critical will be either 0 or 1. */ -int -_gnutls_x509_crt_set_extension(gnutls_x509_crt_t cert, - const char *ext_id, - const gnutls_datum_t * ext_data, - unsigned int critical) +int _gnutls_x509_crt_set_extension(gnutls_x509_crt_t cert, const char *ext_id, + const gnutls_datum_t *ext_data, + unsigned int critical) { MODIFIED(cert); cert->use_extensions = 1; @@ -492,21 +477,17 @@ _gnutls_x509_crt_set_extension(gnutls_x509_crt_t cert, ext_id, ext_data, critical); } -int -_gnutls_x509_crl_set_extension(gnutls_x509_crl_t crl, - const char *ext_id, - const gnutls_datum_t * ext_data, - unsigned int critical) +int _gnutls_x509_crl_set_extension(gnutls_x509_crl_t crl, const char *ext_id, + const gnutls_datum_t *ext_data, + unsigned int critical) { return _gnutls_set_extension(crl->crl, "tbsCertList.crlExtensions", ext_id, ext_data, critical); } -int -_gnutls_x509_crq_set_extension(gnutls_x509_crq_t crq, - const char *ext_id, - const gnutls_datum_t * ext_data, - unsigned int critical) +int _gnutls_x509_crq_set_extension(gnutls_x509_crq_t crq, const char *ext_id, + const gnutls_datum_t *ext_data, + unsigned int critical) { unsigned char *extensions = NULL; size_t extensions_size = 0; @@ -514,10 +495,8 @@ _gnutls_x509_crq_set_extension(gnutls_x509_crq_t crq, asn1_node c2; int result; - result = - gnutls_x509_crq_get_attribute_by_oid(crq, - "1.2.840.113549.1.9.14", - 0, NULL, &extensions_size); + result = gnutls_x509_crq_get_attribute_by_oid( + crq, "1.2.840.113549.1.9.14", 0, NULL, &extensions_size); if (result == GNUTLS_E_SHORT_MEMORY_BUFFER) { extensions = gnutls_malloc(extensions_size); if (extensions == NULL) { @@ -525,11 +504,9 @@ _gnutls_x509_crq_set_extension(gnutls_x509_crq_t crq, return GNUTLS_E_MEMORY_ERROR; } - result = gnutls_x509_crq_get_attribute_by_oid(crq, - "1.2.840.113549.1.9.14", - 0, - extensions, - &extensions_size); + result = gnutls_x509_crq_get_attribute_by_oid( + crq, "1.2.840.113549.1.9.14", 0, extensions, + &extensions_size); } if (result < 0) { if (result == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { @@ -541,8 +518,8 @@ _gnutls_x509_crq_set_extension(gnutls_x509_crq_t crq, } } - result = - asn1_create_element(_gnutls_get_pkix(), "PKIX1.Extensions", &c2); + result = asn1_create_element(_gnutls_get_pkix(), "PKIX1.Extensions", + &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); gnutls_free(extensions); @@ -550,9 +527,8 @@ _gnutls_x509_crq_set_extension(gnutls_x509_crq_t crq, } if (extensions_size > 0) { - result = - _asn1_strict_der_decode(&c2, extensions, extensions_size, - NULL); + result = _asn1_strict_der_decode(&c2, extensions, + extensions_size, NULL); gnutls_free(extensions); if (result != ASN1_SUCCESS) { gnutls_assert(); @@ -577,10 +553,8 @@ _gnutls_x509_crq_set_extension(gnutls_x509_crq_t crq, return result; } - result = - gnutls_x509_crq_set_attribute_by_oid(crq, - "1.2.840.113549.1.9.14", - der.data, der.size); + result = gnutls_x509_crq_set_attribute_by_oid( + crq, "1.2.840.113549.1.9.14", der.data, der.size); gnutls_free(der.data); if (result < 0) { gnutls_assert(); @@ -592,10 +566,8 @@ _gnutls_x509_crq_set_extension(gnutls_x509_crq_t crq, /* extract an INTEGER from the DER encoded extension */ -int -_gnutls_x509_ext_extract_number(uint8_t * number, - size_t *_nr_size, - uint8_t * extnValue, int extnValueLen) +int _gnutls_x509_ext_extract_number(uint8_t *number, size_t *_nr_size, + uint8_t *extnValue, int extnValueLen) { asn1_node ext = NULL; int result; @@ -604,9 +576,9 @@ _gnutls_x509_ext_extract_number(uint8_t * number, /* here it doesn't matter so much that we use CertificateSerialNumber. It is equal * to using INTEGER. */ - if ((result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.CertificateSerialNumber", - &ext)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.CertificateSerialNumber", + &ext)) != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -635,16 +607,14 @@ _gnutls_x509_ext_extract_number(uint8_t * number, /* generate an INTEGER in a DER encoded extension */ -int -_gnutls_x509_ext_gen_number(const uint8_t * number, size_t nr_size, - gnutls_datum_t * der_ext) +int _gnutls_x509_ext_gen_number(const uint8_t *number, size_t nr_size, + gnutls_datum_t *der_ext) { asn1_node ext = NULL; int result; - result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.CertificateSerialNumber", &ext); + result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.CertificateSerialNumber", &ext); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -669,10 +639,9 @@ _gnutls_x509_ext_gen_number(const uint8_t * number, size_t nr_size, return 0; } -int -_gnutls_write_general_name(asn1_node ext, const char *ext_name, - gnutls_x509_subject_alt_name_t type, - const void *data, unsigned int data_size) +int _gnutls_write_general_name(asn1_node ext, const char *ext_name, + gnutls_x509_subject_alt_name_t type, + const void *data, unsigned int data_size) { const char *str; int result; @@ -724,10 +693,9 @@ _gnutls_write_general_name(asn1_node ext, const char *ext_name, return 0; } -int -_gnutls_write_new_general_name(asn1_node ext, const char *ext_name, - gnutls_x509_subject_alt_name_t type, - const void *data, unsigned int data_size) +int _gnutls_write_new_general_name(asn1_node ext, const char *ext_name, + gnutls_x509_subject_alt_name_t type, + const void *data, unsigned int data_size) { int result; char name[128]; @@ -738,7 +706,7 @@ _gnutls_write_new_general_name(asn1_node ext, const char *ext_name, return _gnutls_asn2err(result); } - if (ext_name[0] == 0) { /* no dot */ + if (ext_name[0] == 0) { /* no dot */ _gnutls_str_cpy(name, sizeof(name), "?LAST"); } else { _gnutls_str_cpy(name, sizeof(name), ext_name); @@ -754,10 +722,9 @@ _gnutls_write_new_general_name(asn1_node ext, const char *ext_name, return 0; } -int -_gnutls_write_new_othername(asn1_node ext, const char *ext_name, - const char *oid, - const void *data, unsigned int data_size) +int _gnutls_write_new_othername(asn1_node ext, const char *ext_name, + const char *oid, const void *data, + unsigned int data_size) { int result; char name[128]; @@ -769,7 +736,7 @@ _gnutls_write_new_othername(asn1_node ext, const char *ext_name, return _gnutls_asn2err(result); } - if (ext_name[0] == 0) { /* no dot */ + if (ext_name[0] == 0) { /* no dot */ _gnutls_str_cpy(name, sizeof(name), "?LAST"); } else { _gnutls_str_cpy(name, sizeof(name), ext_name); @@ -806,14 +773,12 @@ _gnutls_write_new_othername(asn1_node ext, const char *ext_name, /* Convert the given name to GeneralNames in a DER encoded extension. * This is the same as subject alternative name. */ -int -_gnutls_x509_ext_gen_subject_alt_name(gnutls_x509_subject_alt_name_t - type, - const char *othername_oid, - const void *data, - unsigned int data_size, - const gnutls_datum_t * prev_der_ext, - gnutls_datum_t * der_ext) +int _gnutls_x509_ext_gen_subject_alt_name(gnutls_x509_subject_alt_name_t type, + const char *othername_oid, + const void *data, + unsigned int data_size, + const gnutls_datum_t *prev_der_ext, + gnutls_datum_t *der_ext) { int ret; gnutls_subject_alt_names_t sans = NULL; @@ -827,10 +792,8 @@ _gnutls_x509_ext_gen_subject_alt_name(gnutls_x509_subject_alt_name_t if (prev_der_ext && prev_der_ext->data != NULL && prev_der_ext->size != 0) { - - ret = - gnutls_x509_ext_import_subject_alt_names(prev_der_ext, sans, - 0); + ret = gnutls_x509_ext_import_subject_alt_names(prev_der_ext, + sans, 0); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -852,7 +815,7 @@ _gnutls_x509_ext_gen_subject_alt_name(gnutls_x509_subject_alt_name_t } ret = 0; - cleanup: +cleanup: if (sans != NULL) gnutls_subject_alt_names_deinit(sans); @@ -861,9 +824,8 @@ _gnutls_x509_ext_gen_subject_alt_name(gnutls_x509_subject_alt_name_t /* generate the AuthorityKeyID in a DER encoded extension */ -int -_gnutls_x509_ext_gen_auth_key_id(const void *id, size_t id_size, - gnutls_datum_t * der_ext) +int _gnutls_x509_ext_gen_auth_key_id(const void *id, size_t id_size, + gnutls_datum_t *der_ext) { gnutls_x509_aki_t aki; int ret; @@ -889,7 +851,7 @@ _gnutls_x509_ext_gen_auth_key_id(const void *id, size_t id_size, ret = 0; - cleanup: +cleanup: gnutls_x509_aki_deinit(aki); return ret; } diff --git a/lib/x509/hostname-verify.c b/lib/x509/hostname-verify.c index fbe7f1a389..331161389f 100644 --- a/lib/x509/hostname-verify.c +++ b/lib/x509/hostname-verify.c @@ -43,8 +43,8 @@ * * Returns: non-zero for a successful match, and zero on failure. **/ -unsigned -gnutls_x509_crt_check_hostname(gnutls_x509_crt_t cert, const char *hostname) +unsigned gnutls_x509_crt_check_hostname(gnutls_x509_crt_t cert, + const char *hostname) { return gnutls_x509_crt_check_hostname2(cert, hostname, 0); } @@ -66,13 +66,12 @@ static int check_ip(gnutls_x509_crt_t cert, const void *ip, unsigned ip_size) */ for (i = 0; !(ret < 0); i++) { temp_size = sizeof(temp); - ret = gnutls_x509_crt_get_subject_alt_name(cert, i, - temp, + ret = gnutls_x509_crt_get_subject_alt_name(cert, i, temp, &temp_size, NULL); if (ret == GNUTLS_SAN_IPADDRESS) { - if (temp_size == ip_size - && memcmp(temp, ip, ip_size) == 0) + if (temp_size == ip_size && + memcmp(temp, ip, ip_size) == 0) return 1; } else if (ret == GNUTLS_E_SHORT_MEMORY_BUFFER) { ret = 0; @@ -97,10 +96,9 @@ static int check_ip(gnutls_x509_crt_t cert, const void *ip, unsigned ip_size) * * Returns: non-zero for a successful match, and zero on failure. **/ -unsigned -gnutls_x509_crt_check_ip(gnutls_x509_crt_t cert, - const unsigned char *ip, unsigned int ip_size, - unsigned int flags) +unsigned gnutls_x509_crt_check_ip(gnutls_x509_crt_t cert, + const unsigned char *ip, unsigned int ip_size, + unsigned int flags) { return check_ip(cert, ip, ip_size); } @@ -110,7 +108,8 @@ gnutls_x509_crt_check_ip(gnutls_x509_crt_t cert, * that we do not fallback to CN-ID if we encounter a supported name * type. */ -#define IS_SAN_SUPPORTED(san) (san==GNUTLS_SAN_DNSNAME||san==GNUTLS_SAN_IPADDRESS) +#define IS_SAN_SUPPORTED(san) \ + (san == GNUTLS_SAN_DNSNAME || san == GNUTLS_SAN_IPADDRESS) /** * gnutls_x509_crt_check_hostname2: @@ -146,9 +145,9 @@ gnutls_x509_crt_check_ip(gnutls_x509_crt_t cert, * * Since: 3.3.0 **/ -unsigned -gnutls_x509_crt_check_hostname2(gnutls_x509_crt_t cert, - const char *hostname, unsigned int flags) +unsigned gnutls_x509_crt_check_hostname2(gnutls_x509_crt_t cert, + const char *hostname, + unsigned int flags) { char dnsname[MAX_CN]; size_t dnsnamesize; @@ -163,9 +162,8 @@ gnutls_x509_crt_check_hostname2(gnutls_x509_crt_t cert, /* check whether @hostname is an ip address */ if (!(flags & GNUTLS_VERIFY_DO_NOT_ALLOW_IP_MATCHES) && - ((p = strchr(hostname, ':')) != NULL - || inet_pton(AF_INET, hostname, &ipv4) != 0)) { - + ((p = strchr(hostname, ':')) != NULL || + inet_pton(AF_INET, hostname, &ipv4) != 0)) { if (p != NULL) { struct in6_addr ipv6; @@ -184,13 +182,13 @@ gnutls_x509_crt_check_hostname2(gnutls_x509_crt_t cert, return ret; } - hostname_fallback: +hostname_fallback: /* convert the provided hostname to ACE-Labels domain. */ ret = gnutls_idna_map(hostname, strlen(hostname), &out, 0); if (ret < 0) { - _gnutls_debug_log - ("unable to convert hostname %s to IDNA format\n", - hostname); + _gnutls_debug_log( + "unable to convert hostname %s to IDNA format\n", + hostname); a_hostname = (char *)hostname; } else { a_hostname = (char *)out.data; @@ -211,32 +209,29 @@ gnutls_x509_crt_check_hostname2(gnutls_x509_crt_t cert, * against all those of type dNSName. */ for (i = 0; !(ret < 0); i++) { - dnsnamesize = sizeof(dnsname); - ret = gnutls_x509_crt_get_subject_alt_name(cert, i, - dnsname, + ret = gnutls_x509_crt_get_subject_alt_name(cert, i, dnsname, &dnsnamesize, NULL); if (ret == GNUTLS_SAN_DNSNAME) { found_dnsname = 1; if (memchr(dnsname, '\0', dnsnamesize)) { - _gnutls_debug_log - ("certificate has %s with embedded null in name\n", - dnsname); + _gnutls_debug_log( + "certificate has %s with embedded null in name\n", + dnsname); continue; } if (!_gnutls_str_is_print(dnsname, dnsnamesize)) { - _gnutls_debug_log - ("invalid (non-ASCII) name in certificate %.*s\n", - (int)dnsnamesize, dnsname); + _gnutls_debug_log( + "invalid (non-ASCII) name in certificate %.*s\n", + (int)dnsnamesize, dnsname); continue; } - ret = - _gnutls_hostname_compare(dnsname, dnsnamesize, - a_hostname, flags); + ret = _gnutls_hostname_compare(dnsname, dnsnamesize, + a_hostname, flags); if (ret != 0) { ret = 1; goto cleanup; @@ -247,9 +242,8 @@ gnutls_x509_crt_check_hostname2(gnutls_x509_crt_t cert, } } - if (!have_other_addresses && !found_dnsname - && _gnutls_check_key_purpose(cert, GNUTLS_KP_TLS_WWW_SERVER, - 0) != 0) { + if (!have_other_addresses && !found_dnsname && + _gnutls_check_key_purpose(cert, GNUTLS_KP_TLS_WWW_SERVER, 0) != 0) { /* did not get the necessary extension, use CN instead, if the * certificate would have been acceptable for a TLS WWW server purpose. * That is because only for that purpose the CN is a valid field to @@ -259,40 +253,41 @@ gnutls_x509_crt_check_hostname2(gnutls_x509_crt_t cert, /* enforce the RFC6125 (§1.8) requirement that only * a single CN must be present */ dnsnamesize = sizeof(dnsname); - ret = gnutls_x509_crt_get_dn_by_oid - (cert, OID_X520_COMMON_NAME, 1, 0, dnsname, &dnsnamesize); + ret = gnutls_x509_crt_get_dn_by_oid(cert, OID_X520_COMMON_NAME, + 1, 0, dnsname, + &dnsnamesize); if (ret != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { ret = 0; goto cleanup; } dnsnamesize = sizeof(dnsname); - ret = gnutls_x509_crt_get_dn_by_oid - (cert, OID_X520_COMMON_NAME, 0, 0, dnsname, &dnsnamesize); + ret = gnutls_x509_crt_get_dn_by_oid(cert, OID_X520_COMMON_NAME, + 0, 0, dnsname, + &dnsnamesize); if (ret < 0) { ret = 0; goto cleanup; } if (memchr(dnsname, '\0', dnsnamesize)) { - _gnutls_debug_log - ("certificate has CN %s with embedded null in name\n", - dnsname); + _gnutls_debug_log( + "certificate has CN %s with embedded null in name\n", + dnsname); ret = 0; goto cleanup; } if (!_gnutls_str_is_print(dnsname, dnsnamesize)) { - _gnutls_debug_log - ("invalid (non-ASCII) name in certificate CN %.*s\n", - (int)dnsnamesize, dnsname); + _gnutls_debug_log( + "invalid (non-ASCII) name in certificate CN %.*s\n", + (int)dnsnamesize, dnsname); ret = 0; goto cleanup; } - ret = - _gnutls_hostname_compare(dnsname, dnsnamesize, a_hostname, - flags); + ret = _gnutls_hostname_compare(dnsname, dnsnamesize, a_hostname, + flags); if (ret != 0) { ret = 1; goto cleanup; @@ -302,7 +297,7 @@ gnutls_x509_crt_check_hostname2(gnutls_x509_crt_t cert, /* not found a matching name */ ret = 0; - cleanup: +cleanup: if (a_hostname != hostname) { gnutls_free(a_hostname); } diff --git a/lib/x509/ip-in-cidr.h b/lib/x509/ip-in-cidr.h index 3a8c0bae8a..ea27603200 100644 --- a/lib/x509/ip-in-cidr.h +++ b/lib/x509/ip-in-cidr.h @@ -22,7 +22,7 @@ */ #ifndef GNUTLS_LIB_X509_IP_IN_CIDR_H -# define GNUTLS_LIB_X509_IP_IN_CIDR_H +#define GNUTLS_LIB_X509_IP_IN_CIDR_H /*- * ip_in_cidr: @@ -35,11 +35,10 @@ * * Returns: 1 if @ip lies within @cidr, 0 otherwise -*/ -static unsigned ip_in_cidr(const gnutls_datum_t * ip, - const gnutls_datum_t * cidr) +static unsigned ip_in_cidr(const gnutls_datum_t *ip, const gnutls_datum_t *cidr) { unsigned byte; -# ifndef BUILD_IN_TESTS +#ifndef BUILD_IN_TESTS char str_ip[48]; char str_cidr[97]; @@ -50,14 +49,13 @@ static unsigned ip_in_cidr(const gnutls_datum_t * ip, (int)sizeof(str_cidr), _gnutls_cidr_to_string(cidr->data, cidr->size, str_cidr, sizeof(str_cidr))); -# endif +#endif for (byte = 0; byte < ip->size; byte++) - if (((ip->data[byte] ^ cidr->data[byte]) & cidr->data[ip->size + - byte]) != - 0) + if (((ip->data[byte] ^ cidr->data[byte]) & + cidr->data[ip->size + byte]) != 0) return 0; - return 1; /* match */ + return 1; /* match */ } -#endif /* GNUTLS_LIB_X509_IP_IN_CIDR_H */ +#endif /* GNUTLS_LIB_X509_IP_IN_CIDR_H */ diff --git a/lib/x509/ip.c b/lib/x509/ip.c index 06d0fe90c1..536b75c101 100644 --- a/lib/x509/ip.c +++ b/lib/x509/ip.c @@ -97,7 +97,6 @@ int _gnutls_mask_to_prefix(const unsigned char *mask, unsigned mask_size) const char *_gnutls_ip_to_string(const void *_ip, unsigned int ip_size, char *out, unsigned int out_size) { - if (ip_size != 4 && ip_size != 16) { gnutls_assert(); return NULL; @@ -223,7 +222,7 @@ int _gnutls_mask_ip(unsigned char *ip, const unsigned char *mask, * * Since: 3.5.4 */ -int gnutls_x509_cidr_to_rfc5280(const char *cidr, gnutls_datum_t * cidr_rfc5280) +int gnutls_x509_cidr_to_rfc5280(const char *cidr, gnutls_datum_t *cidr_rfc5280) { unsigned iplength, prefix; int ret; @@ -235,8 +234,8 @@ int gnutls_x509_cidr_to_rfc5280(const char *cidr, gnutls_datum_t * cidr_rfc5280) if (p != NULL) { prefix = strtol(p + 1, &p_end, 10); if (prefix == 0 && p_end == p + 1) { - _gnutls_debug_log - ("Cannot parse prefix given in CIDR %s\n", cidr); + _gnutls_debug_log( + "Cannot parse prefix given in CIDR %s\n", cidr); gnutls_assert(); return GNUTLS_E_MALFORMED_CIDR; } @@ -253,9 +252,9 @@ int gnutls_x509_cidr_to_rfc5280(const char *cidr, gnutls_datum_t * cidr_rfc5280) return GNUTLS_E_MALFORMED_CIDR; } - if (strchr(cidr, ':') != 0) { /* IPv6 */ + if (strchr(cidr, ':') != 0) { /* IPv6 */ iplength = 16; - } else { /* IPv4 */ + } else { /* IPv4 */ iplength = 4; } cidr_rfc5280->size = 2 * iplength; @@ -273,9 +272,8 @@ int gnutls_x509_cidr_to_rfc5280(const char *cidr, gnutls_datum_t * cidr_rfc5280) goto cleanup; } - ret = - inet_pton(iplength == 4 ? AF_INET : AF_INET6, cidr_tmp, - cidr_rfc5280->data); + ret = inet_pton(iplength == 4 ? AF_INET : AF_INET6, cidr_tmp, + cidr_rfc5280->data); if (ret == 0) { _gnutls_debug_log("Cannot parse IP from CIDR %s\n", cidr_tmp); ret = gnutls_assert_val(GNUTLS_E_MALFORMED_CIDR); @@ -288,7 +286,7 @@ int gnutls_x509_cidr_to_rfc5280(const char *cidr, gnutls_datum_t * cidr_rfc5280) ret = GNUTLS_E_SUCCESS; - cleanup: +cleanup: gnutls_free(cidr_tmp); return ret; } diff --git a/lib/x509/ip.h b/lib/x509/ip.h index 7bea20e4a3..63f3ad0182 100644 --- a/lib/x509/ip.h +++ b/lib/x509/ip.h @@ -22,7 +22,7 @@ */ #ifndef GNUTLS_LIB_X509_IP_H -# define GNUTLS_LIB_X509_IP_H +#define GNUTLS_LIB_X509_IP_H // for documentation, see the definition int _gnutls_mask_to_prefix(const unsigned char *mask, unsigned mask_size); @@ -39,4 +39,4 @@ const char *_gnutls_cidr_to_string(const void *_ip, unsigned int ip_size, int _gnutls_mask_ip(unsigned char *ip, const unsigned char *mask, unsigned ipsize); -#endif /* GNUTLS_LIB_X509_IP_H */ +#endif /* GNUTLS_LIB_X509_IP_H */ diff --git a/lib/x509/key_decode.c b/lib/x509/key_decode.c index add24b8bd9..38b3d61e0d 100644 --- a/lib/x509/key_decode.c +++ b/lib/x509/key_decode.c @@ -32,40 +32,38 @@ #include #include -static int _gnutls_x509_read_rsa_pubkey(uint8_t * der, int dersize, - gnutls_pk_params_st * params); -static int _gnutls_x509_read_dsa_pubkey(uint8_t * der, int dersize, - gnutls_pk_params_st * params); -static int _gnutls_x509_read_ecc_pubkey(uint8_t * der, int dersize, - gnutls_pk_params_st * params); +static int _gnutls_x509_read_rsa_pubkey(uint8_t *der, int dersize, + gnutls_pk_params_st *params); +static int _gnutls_x509_read_dsa_pubkey(uint8_t *der, int dersize, + gnutls_pk_params_st *params); +static int _gnutls_x509_read_ecc_pubkey(uint8_t *der, int dersize, + gnutls_pk_params_st *params); static int _gnutls_x509_read_eddsa_pubkey(gnutls_ecc_curve_t curve, - uint8_t * der, int dersize, - gnutls_pk_params_st * params); -static int _gnutls_x509_read_ecdh_pubkey(gnutls_ecc_curve_t curve, - uint8_t * der, int dersize, - gnutls_pk_params_st * params); -static int _gnutls_x509_read_gost_pubkey(uint8_t * der, int dersize, - gnutls_pk_params_st * params); - -static int -_gnutls_x509_read_dsa_params(uint8_t * der, int dersize, - gnutls_pk_params_st * params); + uint8_t *der, int dersize, + gnutls_pk_params_st *params); +static int _gnutls_x509_read_ecdh_pubkey(gnutls_ecc_curve_t curve, uint8_t *der, + int dersize, + gnutls_pk_params_st *params); +static int _gnutls_x509_read_gost_pubkey(uint8_t *der, int dersize, + gnutls_pk_params_st *params); + +static int _gnutls_x509_read_dsa_params(uint8_t *der, int dersize, + gnutls_pk_params_st *params); /* * some x509 certificate parsing functions that relate to MPI parameter * extraction. This reads the BIT STRING subjectPublicKey. * Returns 2 parameters (m,e). It does not set params_nr. */ -int -_gnutls_x509_read_rsa_pubkey(uint8_t * der, int dersize, - gnutls_pk_params_st * params) +int _gnutls_x509_read_rsa_pubkey(uint8_t *der, int dersize, + gnutls_pk_params_st *params) { int result; asn1_node spk = NULL; - if ((result = asn1_create_element - (_gnutls_get_gnutls_asn(), "GNUTLS.RSAPublicKey", &spk)) - != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.RSAPublicKey", &spk)) != + ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -84,8 +82,8 @@ _gnutls_x509_read_rsa_pubkey(uint8_t * der, int dersize, return GNUTLS_E_ASN1_GENERIC_ERROR; } - if (_gnutls_x509_read_int(spk, "publicExponent", - ¶ms->params[1]) < 0) { + if (_gnutls_x509_read_int(spk, "publicExponent", ¶ms->params[1]) < + 0) { gnutls_assert(); _gnutls_mpi_release(¶ms->params[0]); asn1_delete_structure(&spk); @@ -95,7 +93,6 @@ _gnutls_x509_read_rsa_pubkey(uint8_t * der, int dersize, asn1_delete_structure(&spk); return 0; - } /* @@ -103,21 +100,18 @@ _gnutls_x509_read_rsa_pubkey(uint8_t * der, int dersize, * extraction. This reads the BIT STRING subjectPublicKey. * Returns 2 parameters (m,e). It does not set params_nr. */ -int -_gnutls_x509_read_ecc_pubkey(uint8_t * der, int dersize, - gnutls_pk_params_st * params) +int _gnutls_x509_read_ecc_pubkey(uint8_t *der, int dersize, + gnutls_pk_params_st *params) { /* RFC5480 defines the public key to be an ECPoint (i.e. OCTET STRING), * Then it says that the OCTET STRING _value_ is converted to BIT STRING. * That means that the value we place there is the raw X9.62 one. */ - return _gnutls_ecc_ansi_x962_import(der, dersize, - ¶ms->params[ECC_X], - ¶ms->params[ECC_Y]); + return _gnutls_ecc_ansi_x962_import( + der, dersize, ¶ms->params[ECC_X], ¶ms->params[ECC_Y]); } -int _gnutls_x509_read_eddsa_pubkey(gnutls_ecc_curve_t curve, - uint8_t * der, int dersize, - gnutls_pk_params_st * params) +int _gnutls_x509_read_eddsa_pubkey(gnutls_ecc_curve_t curve, uint8_t *der, + int dersize, gnutls_pk_params_st *params) { int size = gnutls_ecc_curve_get_size(curve); if (dersize != size) @@ -126,9 +120,8 @@ int _gnutls_x509_read_eddsa_pubkey(gnutls_ecc_curve_t curve, return _gnutls_set_datum(¶ms->raw_pub, der, dersize); } -int _gnutls_x509_read_ecdh_pubkey(gnutls_ecc_curve_t curve, - uint8_t * der, int dersize, - gnutls_pk_params_st * params) +int _gnutls_x509_read_ecdh_pubkey(gnutls_ecc_curve_t curve, uint8_t *der, + int dersize, gnutls_pk_params_st *params) { int size = gnutls_ecc_curve_get_size(curve); if (dersize != size) @@ -139,9 +132,8 @@ int _gnutls_x509_read_ecdh_pubkey(gnutls_ecc_curve_t curve, /* Pubkey is a concatenation of X (in little endian) and Y (also LE) * encoded into OCTET STRING. */ -static int -_gnutls_x509_read_gost_pubkey(uint8_t * der, int dersize, - gnutls_pk_params_st * params) +static int _gnutls_x509_read_gost_pubkey(uint8_t *der, int dersize, + gnutls_pk_params_st *params) { int ret; int len; @@ -182,15 +174,14 @@ _gnutls_x509_read_gost_pubkey(uint8_t * der, int dersize, * from the certificate (subjectPublicKey BIT STRING). * params[0-2]. It does NOT set params_nr. */ -static int -_gnutls_x509_read_dsa_params(uint8_t * der, int dersize, - gnutls_pk_params_st * params) +static int _gnutls_x509_read_dsa_params(uint8_t *der, int dersize, + gnutls_pk_params_st *params) { int result; asn1_node spk = NULL; - if ((result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.Dss-Parms", &spk)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), "PKIX1.Dss-Parms", + &spk)) != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -237,27 +228,25 @@ _gnutls_x509_read_dsa_params(uint8_t * der, int dersize, asn1_delete_structure(&spk); - params->params_nr = 3; /* public key is missing */ + params->params_nr = 3; /* public key is missing */ params->algo = GNUTLS_PK_DSA; return 0; - } /* reads the curve from the certificate. * params[0-4]. It does NOT set params_nr. */ -int -_gnutls_x509_read_ecc_params(uint8_t * der, int dersize, unsigned int *curve) +int _gnutls_x509_read_ecc_params(uint8_t *der, int dersize, unsigned int *curve) { int ret; asn1_node spk = NULL; char oid[MAX_OID_SIZE]; int oid_size; - if ((ret = asn1_create_element - (_gnutls_get_gnutls_asn(), "GNUTLS.ECParameters", - &spk)) != ASN1_SUCCESS) { + if ((ret = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.ECParameters", &spk)) != + ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(ret); } @@ -289,19 +278,17 @@ _gnutls_x509_read_ecc_params(uint8_t * der, int dersize, unsigned int *curve) ret = 0; - cleanup: +cleanup: asn1_delete_structure(&spk); return ret; - } /* Reads RSA-PSS parameters. */ -int -_gnutls_x509_read_rsa_pss_params(uint8_t * der, int dersize, - gnutls_x509_spki_st * params) +int _gnutls_x509_read_rsa_pss_params(uint8_t *der, int dersize, + gnutls_x509_spki_st *params) { int result; asn1_node spk = NULL; @@ -312,9 +299,9 @@ _gnutls_x509_read_rsa_pss_params(uint8_t * der, int dersize, unsigned int trailer; gnutls_datum_t value = { NULL, 0 }; - if ((result = asn1_create_element - (_gnutls_get_gnutls_asn(), "GNUTLS.RSAPSSParameters", &spk)) - != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.RSAPSSParameters", &spk)) != + ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; @@ -363,24 +350,23 @@ _gnutls_x509_read_rsa_pss_params(uint8_t * der, int dersize, /* Check if maskGenAlgorithm.parameters does exist and * is identical to hashAlgorithm */ - result = - _gnutls_x509_read_value(spk, "maskGenAlgorithm.parameters", - &value); + result = _gnutls_x509_read_value( + spk, "maskGenAlgorithm.parameters", &value); if (result < 0) { gnutls_assert(); goto cleanup; } - if ((result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.AlgorithmIdentifier", &c2)) - != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.AlgorithmIdentifier", + &c2)) != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; } - result = - _asn1_strict_der_decode(&c2, value.data, value.size, NULL); + result = _asn1_strict_der_decode(&c2, value.data, value.size, + NULL); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -439,7 +425,7 @@ _gnutls_x509_read_rsa_pss_params(uint8_t * der, int dersize, } result = 0; - cleanup: +cleanup: _gnutls_free_datum(&value); asn1_delete_structure(&c2); asn1_delete_structure(&spk); @@ -449,10 +435,9 @@ _gnutls_x509_read_rsa_pss_params(uint8_t * der, int dersize, /* reads the curve from the certificate. * It does NOT set params_nr. */ -int -_gnutls_x509_read_gost_params(uint8_t * der, int dersize, - gnutls_pk_params_st * params, - gnutls_pk_algorithm_t algo) +int _gnutls_x509_read_gost_params(uint8_t *der, int dersize, + gnutls_pk_params_st *params, + gnutls_pk_algorithm_t algo) { int ret; asn1_node spk = NULL; @@ -463,8 +448,8 @@ _gnutls_x509_read_gost_params(uint8_t * der, int dersize, if ((ret = asn1_create_element(_gnutls_get_gnutls_asn(), algo == GNUTLS_PK_GOST_01 ? - "GNUTLS.GOSTParametersOld" : - "GNUTLS.GOSTParameters", + "GNUTLS.GOSTParametersOld" : + "GNUTLS.GOSTParameters", &spk)) != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(ret); @@ -528,18 +513,17 @@ _gnutls_x509_read_gost_params(uint8_t * der, int dersize, params->gost_params = param; ret = 0; - cleanup: +cleanup: asn1_delete_structure(&spk); return ret; - } /* This function must be called after _gnutls_x509_read_params() */ -int _gnutls_x509_read_pubkey(gnutls_pk_algorithm_t algo, uint8_t * der, - int dersize, gnutls_pk_params_st * params) +int _gnutls_x509_read_pubkey(gnutls_pk_algorithm_t algo, uint8_t *der, + int dersize, gnutls_pk_params_st *params) { int ret; @@ -553,7 +537,8 @@ int _gnutls_x509_read_pubkey(gnutls_pk_algorithm_t algo, uint8_t * der, } break; case GNUTLS_PK_DSA: - if (params->params_nr != 3) /* _gnutls_x509_read_pubkey_params must have been called */ + if (params->params_nr != + 3) /* _gnutls_x509_read_pubkey_params must have been called */ return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); ret = _gnutls_x509_read_dsa_pubkey(der, dersize, params); @@ -570,24 +555,20 @@ int _gnutls_x509_read_pubkey(gnutls_pk_algorithm_t algo, uint8_t * der, } break; case GNUTLS_PK_EDDSA_ED25519: - ret = - _gnutls_x509_read_eddsa_pubkey(GNUTLS_ECC_CURVE_ED25519, - der, dersize, params); + ret = _gnutls_x509_read_eddsa_pubkey(GNUTLS_ECC_CURVE_ED25519, + der, dersize, params); break; case GNUTLS_PK_EDDSA_ED448: - ret = - _gnutls_x509_read_eddsa_pubkey(GNUTLS_ECC_CURVE_ED448, der, - dersize, params); + ret = _gnutls_x509_read_eddsa_pubkey(GNUTLS_ECC_CURVE_ED448, + der, dersize, params); break; case GNUTLS_PK_ECDH_X25519: - ret = - _gnutls_x509_read_ecdh_pubkey(GNUTLS_ECC_CURVE_X25519, der, - dersize, params); + ret = _gnutls_x509_read_ecdh_pubkey(GNUTLS_ECC_CURVE_X25519, + der, dersize, params); break; case GNUTLS_PK_ECDH_X448: - ret = - _gnutls_x509_read_ecdh_pubkey(GNUTLS_ECC_CURVE_X448, der, - dersize, params); + ret = _gnutls_x509_read_ecdh_pubkey(GNUTLS_ECC_CURVE_X448, der, + dersize, params); break; case GNUTLS_PK_GOST_01: case GNUTLS_PK_GOST_12_256: @@ -607,9 +588,8 @@ int _gnutls_x509_read_pubkey(gnutls_pk_algorithm_t algo, uint8_t * der, /* This function must be called prior to _gnutls_x509_read_pubkey() */ -int _gnutls_x509_read_pubkey_params(gnutls_pk_algorithm_t algo, - uint8_t * der, int dersize, - gnutls_pk_params_st * params) +int _gnutls_x509_read_pubkey_params(gnutls_pk_algorithm_t algo, uint8_t *der, + int dersize, gnutls_pk_params_st *params) { switch (algo) { case GNUTLS_PK_RSA: @@ -636,33 +616,31 @@ int _gnutls_x509_read_pubkey_params(gnutls_pk_algorithm_t algo, /* This function must be called after _gnutls_x509_read_pubkey() */ -int _gnutls_x509_check_pubkey_params(gnutls_pk_params_st * params) +int _gnutls_x509_check_pubkey_params(gnutls_pk_params_st *params) { switch (params->algo) { - case GNUTLS_PK_RSA_PSS:{ - unsigned bits; - const mac_entry_st *me; - size_t hash_size; - - if (params->spki.pk == GNUTLS_PK_UNKNOWN) /* no params present */ - return 0; - - bits = pubkey_to_bits(params); - - me = hash_to_entry(params->spki.rsa_pss_dig); - if (unlikely(me == NULL)) - return - gnutls_assert_val - (GNUTLS_E_PK_INVALID_PUBKEY_PARAMS); - - hash_size = _gnutls_hash_get_algo_len(me); - if (hash_size + params->spki.salt_size + 2 > - (bits + 7) / 8) - return - gnutls_assert_val - (GNUTLS_E_PK_INVALID_PUBKEY_PARAMS); + case GNUTLS_PK_RSA_PSS: { + unsigned bits; + const mac_entry_st *me; + size_t hash_size; + + if (params->spki.pk == + GNUTLS_PK_UNKNOWN) /* no params present */ return 0; - } + + bits = pubkey_to_bits(params); + + me = hash_to_entry(params->spki.rsa_pss_dig); + if (unlikely(me == NULL)) + return gnutls_assert_val( + GNUTLS_E_PK_INVALID_PUBKEY_PARAMS); + + hash_size = _gnutls_hash_get_algo_len(me); + if (hash_size + params->spki.salt_size + 2 > (bits + 7) / 8) + return gnutls_assert_val( + GNUTLS_E_PK_INVALID_PUBKEY_PARAMS); + return 0; + } case GNUTLS_PK_RSA: case GNUTLS_PK_DSA: case GNUTLS_PK_ECDSA: @@ -683,9 +661,8 @@ int _gnutls_x509_check_pubkey_params(gnutls_pk_params_st * params) * from the certificate * only sets params[3] */ -int -_gnutls_x509_read_dsa_pubkey(uint8_t * der, int dersize, - gnutls_pk_params_st * params) +int _gnutls_x509_read_dsa_pubkey(uint8_t *der, int dersize, + gnutls_pk_params_st *params) { return _gnutls_x509_read_der_int(der, dersize, ¶ms->params[3]); } diff --git a/lib/x509/key_encode.c b/lib/x509/key_encode.c index 4aa493b7cc..0d26d3ce36 100644 --- a/lib/x509/key_encode.c +++ b/lib/x509/key_encode.c @@ -33,16 +33,16 @@ #include #include -static int _gnutls_x509_write_rsa_pubkey(const gnutls_pk_params_st * params, - gnutls_datum_t * der); -static int _gnutls_x509_write_dsa_params(const gnutls_pk_params_st * params, - gnutls_datum_t * der); -static int _gnutls_x509_write_dsa_pubkey(const gnutls_pk_params_st * params, - gnutls_datum_t * der); -static int _gnutls_x509_write_gost_params(const gnutls_pk_params_st * params, - gnutls_datum_t * der); -static int _gnutls_x509_write_gost_pubkey(const gnutls_pk_params_st * params, - gnutls_datum_t * der); +static int _gnutls_x509_write_rsa_pubkey(const gnutls_pk_params_st *params, + gnutls_datum_t *der); +static int _gnutls_x509_write_dsa_params(const gnutls_pk_params_st *params, + gnutls_datum_t *der); +static int _gnutls_x509_write_dsa_pubkey(const gnutls_pk_params_st *params, + gnutls_datum_t *der); +static int _gnutls_x509_write_gost_params(const gnutls_pk_params_st *params, + gnutls_datum_t *der); +static int _gnutls_x509_write_gost_pubkey(const gnutls_pk_params_st *params, + gnutls_datum_t *der); /* * some x509 certificate functions that relate to MPI parameter @@ -51,9 +51,8 @@ static int _gnutls_x509_write_gost_pubkey(const gnutls_pk_params_st * params, * * Allocates the space used to store the DER data. */ -static int -_gnutls_x509_write_rsa_pubkey(const gnutls_pk_params_st * params, - gnutls_datum_t * der) +static int _gnutls_x509_write_rsa_pubkey(const gnutls_pk_params_st *params, + gnutls_datum_t *der) { int result; asn1_node spk = NULL; @@ -67,9 +66,9 @@ _gnutls_x509_write_rsa_pubkey(const gnutls_pk_params_st * params, goto cleanup; } - if ((result = asn1_create_element - (_gnutls_get_gnutls_asn(), "GNUTLS.RSAPublicKey", &spk)) - != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.RSAPublicKey", &spk)) != + ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -80,8 +79,8 @@ _gnutls_x509_write_rsa_pubkey(const gnutls_pk_params_st * params, goto cleanup; } - result = - _gnutls_x509_write_int(spk, "publicExponent", params->params[1], 1); + result = _gnutls_x509_write_int(spk, "publicExponent", + params->params[1], 1); if (result < 0) { gnutls_assert(); goto cleanup; @@ -95,7 +94,7 @@ _gnutls_x509_write_rsa_pubkey(const gnutls_pk_params_st * params, result = 0; - cleanup: +cleanup: asn1_delete_structure(&spk); return result; @@ -107,9 +106,8 @@ _gnutls_x509_write_rsa_pubkey(const gnutls_pk_params_st * params, * * Allocates the space used to store the DER data. */ -int -_gnutls_x509_write_ecc_pubkey(const gnutls_pk_params_st * params, - gnutls_datum_t * der) +int _gnutls_x509_write_ecc_pubkey(const gnutls_pk_params_st *params, + gnutls_datum_t *der) { int result; @@ -119,7 +117,9 @@ _gnutls_x509_write_ecc_pubkey(const gnutls_pk_params_st * params, if (params->params_nr < ECC_PUBLIC_PARAMS) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - result = _gnutls_ecc_ansi_x962_export(params->curve, params->params[ECC_X], params->params[ECC_Y], /*&out */ + result = _gnutls_ecc_ansi_x962_export(params->curve, + params->params[ECC_X], + params->params[ECC_Y], /*&out */ der); if (result < 0) return gnutls_assert_val(result); @@ -133,9 +133,8 @@ _gnutls_x509_write_ecc_pubkey(const gnutls_pk_params_st * params, * * Allocates the space used to store the data. */ -int -_gnutls_x509_write_eddsa_pubkey(const gnutls_pk_params_st * params, - gnutls_datum_t * raw) +int _gnutls_x509_write_eddsa_pubkey(const gnutls_pk_params_st *params, + gnutls_datum_t *raw) { int ret; @@ -149,8 +148,8 @@ _gnutls_x509_write_eddsa_pubkey(const gnutls_pk_params_st * params, params->curve != GNUTLS_ECC_CURVE_ED448) return gnutls_assert_val(GNUTLS_E_ECC_UNSUPPORTED_CURVE); - ret = - _gnutls_set_datum(raw, params->raw_pub.data, params->raw_pub.size); + ret = _gnutls_set_datum(raw, params->raw_pub.data, + params->raw_pub.size); if (ret < 0) return gnutls_assert_val(ret); @@ -164,8 +163,8 @@ _gnutls_x509_write_eddsa_pubkey(const gnutls_pk_params_st * params, * Allocates the space used to store the data. */ static int -_gnutls_x509_write_modern_ecdh_pubkey(const gnutls_pk_params_st * params, - gnutls_datum_t * raw) +_gnutls_x509_write_modern_ecdh_pubkey(const gnutls_pk_params_st *params, + gnutls_datum_t *raw) { int ret; @@ -179,17 +178,16 @@ _gnutls_x509_write_modern_ecdh_pubkey(const gnutls_pk_params_st * params, params->curve != GNUTLS_ECC_CURVE_X448) return gnutls_assert_val(GNUTLS_E_ECC_UNSUPPORTED_CURVE); - ret = - _gnutls_set_datum(raw, params->raw_pub.data, params->raw_pub.size); + ret = _gnutls_set_datum(raw, params->raw_pub.data, + params->raw_pub.size); if (ret < 0) return gnutls_assert_val(ret); return 0; } -int -_gnutls_x509_write_gost_pubkey(const gnutls_pk_params_st * params, - gnutls_datum_t * der) +int _gnutls_x509_write_gost_pubkey(const gnutls_pk_params_st *params, + gnutls_datum_t *der) { bigint_t x, y; int numlen; @@ -254,14 +252,13 @@ _gnutls_x509_write_gost_pubkey(const gnutls_pk_params_st * params, return 0; - cleanup: +cleanup: _gnutls_free_datum(der); return ret; } -int -_gnutls_x509_write_pubkey_params(const gnutls_pk_params_st * params, - gnutls_datum_t * der) +int _gnutls_x509_write_pubkey_params(const gnutls_pk_params_st *params, + gnutls_datum_t *der) { switch (params->algo) { case GNUTLS_PK_DSA: @@ -295,9 +292,8 @@ _gnutls_x509_write_pubkey_params(const gnutls_pk_params_st * params, } } -int -_gnutls_x509_write_pubkey(const gnutls_pk_params_st * params, - gnutls_datum_t * der) +int _gnutls_x509_write_pubkey(const gnutls_pk_params_st *params, + gnutls_datum_t *der) { switch (params->algo) { case GNUTLS_PK_DSA: @@ -328,9 +324,8 @@ _gnutls_x509_write_pubkey(const gnutls_pk_params_st * params, * * Allocates the space used to store the DER data. */ -static int -_gnutls_x509_write_dsa_params(const gnutls_pk_params_st * params, - gnutls_datum_t * der) +static int _gnutls_x509_write_dsa_params(const gnutls_pk_params_st *params, + gnutls_datum_t *der) { int result; asn1_node spk = NULL; @@ -344,9 +339,9 @@ _gnutls_x509_write_dsa_params(const gnutls_pk_params_st * params, goto cleanup; } - if ((result = asn1_create_element - (_gnutls_get_gnutls_asn(), "GNUTLS.DSAParameters", &spk)) - != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.DSAParameters", &spk)) != + ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -377,7 +372,7 @@ _gnutls_x509_write_dsa_params(const gnutls_pk_params_st * params, result = 0; - cleanup: +cleanup: asn1_delete_structure(&spk); return result; } @@ -388,9 +383,8 @@ _gnutls_x509_write_dsa_params(const gnutls_pk_params_st * params, * * Allocates the space used to store the DER data. */ -int -_gnutls_x509_write_ecc_params(const gnutls_ecc_curve_t curve, - gnutls_datum_t * der) +int _gnutls_x509_write_ecc_params(const gnutls_ecc_curve_t curve, + gnutls_datum_t *der) { int result; asn1_node spk = NULL; @@ -403,22 +397,22 @@ _gnutls_x509_write_ecc_params(const gnutls_ecc_curve_t curve, if (oid == NULL) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - if ((result = asn1_create_element - (_gnutls_get_gnutls_asn(), "GNUTLS.ECParameters", &spk)) - != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.ECParameters", &spk)) != + ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } - if ((result = - asn1_write_value(spk, "", "namedCurve", 1)) != ASN1_SUCCESS) { + if ((result = asn1_write_value(spk, "", "namedCurve", 1)) != + ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; } - if ((result = - asn1_write_value(spk, "namedCurve", oid, 1)) != ASN1_SUCCESS) { + if ((result = asn1_write_value(spk, "namedCurve", oid, 1)) != + ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; @@ -432,14 +426,13 @@ _gnutls_x509_write_ecc_params(const gnutls_ecc_curve_t curve, result = 0; - cleanup: +cleanup: asn1_delete_structure(&spk); return result; } -int -_gnutls_x509_write_rsa_pss_params(const gnutls_x509_spki_st * params, - gnutls_datum_t * der) +int _gnutls_x509_write_rsa_pss_params(const gnutls_x509_spki_st *params, + gnutls_datum_t *der) { int result; asn1_node spk = NULL; @@ -458,9 +451,9 @@ _gnutls_x509_write_rsa_pss_params(const gnutls_x509_spki_st * params, GNUTLS_SIGN_UNKNOWN) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - if ((result = asn1_create_element - (_gnutls_get_gnutls_asn(), "GNUTLS.RSAPSSParameters", &spk)) - != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.RSAPSSParameters", &spk)) != + ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; @@ -468,47 +461,45 @@ _gnutls_x509_write_rsa_pss_params(const gnutls_x509_spki_st * params, oid = gnutls_digest_get_oid(params->rsa_pss_dig); - if ((result = asn1_write_value(spk, "hashAlgorithm.algorithm", oid, 1)) - != ASN1_SUCCESS) { + if ((result = asn1_write_value(spk, "hashAlgorithm.algorithm", oid, + 1)) != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; } - if ((result = - asn1_write_value(spk, "hashAlgorithm.parameters", NULL, 0)) - != ASN1_SUCCESS) { + if ((result = asn1_write_value(spk, "hashAlgorithm.parameters", NULL, + 0)) != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; } - if ((result = - asn1_write_value(spk, "maskGenAlgorithm.algorithm", - PKIX1_RSA_PSS_MGF1_OID, 1)) - != ASN1_SUCCESS) { + if ((result = asn1_write_value(spk, "maskGenAlgorithm.algorithm", + PKIX1_RSA_PSS_MGF1_OID, 1)) != + ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; } - if ((result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.AlgorithmIdentifier", &c2)) - != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.AlgorithmIdentifier", &c2)) != + ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; } - if ((result = asn1_write_value(c2, "algorithm", oid, 1)) - != ASN1_SUCCESS) { + if ((result = asn1_write_value(c2, "algorithm", oid, 1)) != + ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; } - if ((result = asn1_write_value(c2, "parameters", NULL, 0)) - != ASN1_SUCCESS) { + if ((result = asn1_write_value(c2, "parameters", NULL, 0)) != + ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; @@ -520,17 +511,15 @@ _gnutls_x509_write_rsa_pss_params(const gnutls_x509_spki_st * params, goto cleanup; } - if ((result = - asn1_write_value(spk, "maskGenAlgorithm.parameters", - tmp.data, tmp.size)) - != ASN1_SUCCESS) { + if ((result = asn1_write_value(spk, "maskGenAlgorithm.parameters", + tmp.data, tmp.size)) != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; } - result = _gnutls_x509_write_uint32(spk, "saltLength", - params->salt_size); + result = + _gnutls_x509_write_uint32(spk, "saltLength", params->salt_size); if (result < 0) { gnutls_assert(); goto cleanup; @@ -550,16 +539,15 @@ _gnutls_x509_write_rsa_pss_params(const gnutls_x509_spki_st * params, result = 0; - cleanup: +cleanup: _gnutls_free_datum(&tmp); asn1_delete_structure(&c2); asn1_delete_structure(&spk); return result; } -static int -_gnutls_x509_write_gost_params(const gnutls_pk_params_st * params, - gnutls_datum_t * der) +static int _gnutls_x509_write_gost_params(const gnutls_pk_params_st *params, + gnutls_datum_t *der) { int result; asn1_node spk = NULL; @@ -572,18 +560,17 @@ _gnutls_x509_write_gost_params(const gnutls_pk_params_st * params, if (oid == NULL) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - if ((result = asn1_create_element - (_gnutls_get_gnutls_asn(), - params->algo == GNUTLS_PK_GOST_01 ? - "GNUTLS.GOSTParametersOld" : "GNUTLS.GOSTParameters", &spk)) - != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_gnutls_asn(), + params->algo == GNUTLS_PK_GOST_01 ? + "GNUTLS.GOSTParametersOld" : + "GNUTLS.GOSTParameters", + &spk)) != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } - if ((result = - asn1_write_value(spk, "publicKeyParamSet", oid, - 1)) != ASN1_SUCCESS) { + if ((result = asn1_write_value(spk, "publicKeyParamSet", oid, 1)) != + ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; @@ -608,9 +595,8 @@ _gnutls_x509_write_gost_params(const gnutls_pk_params_st * params, else oid = NULL; - if ((result = - asn1_write_value(spk, "digestParamSet", oid, - oid ? 1 : 0)) != ASN1_SUCCESS) { + if ((result = asn1_write_value(spk, "digestParamSet", oid, + oid ? 1 : 0)) != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; @@ -628,9 +614,8 @@ _gnutls_x509_write_gost_params(const gnutls_pk_params_st * params, _gnutls_gost_paramset_default(params->algo)) oid = NULL; - if ((result = - asn1_write_value(spk, "encryptionParamSet", oid, - oid ? 1 : 0)) != ASN1_SUCCESS) { + if ((result = asn1_write_value(spk, "encryptionParamSet", oid, + oid ? 1 : 0)) != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; @@ -645,7 +630,7 @@ _gnutls_x509_write_gost_params(const gnutls_pk_params_st * params, result = 0; - cleanup: +cleanup: asn1_delete_structure(&spk); return result; } @@ -656,9 +641,8 @@ _gnutls_x509_write_gost_params(const gnutls_pk_params_st * params, * * Allocates the space used to store the DER data. */ -static int -_gnutls_x509_write_dsa_pubkey(const gnutls_pk_params_st * params, - gnutls_datum_t * der) +static int _gnutls_x509_write_dsa_pubkey(const gnutls_pk_params_st *params, + gnutls_datum_t *der) { int result; asn1_node spk = NULL; @@ -672,9 +656,9 @@ _gnutls_x509_write_dsa_pubkey(const gnutls_pk_params_st * params, goto cleanup; } - if ((result = asn1_create_element - (_gnutls_get_gnutls_asn(), "GNUTLS.DSAPublicKey", &spk)) - != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.DSAPublicKey", &spk)) != + ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -693,14 +677,14 @@ _gnutls_x509_write_dsa_pubkey(const gnutls_pk_params_st * params, result = 0; - cleanup: +cleanup: asn1_delete_structure(&spk); return result; } /* Encodes the RSA parameters into an ASN.1 RSA private key structure. */ -static int _gnutls_asn1_encode_rsa(asn1_node * c2, gnutls_pk_params_st * params) +static int _gnutls_asn1_encode_rsa(asn1_node *c2, gnutls_pk_params_st *params) { int result, ret; uint8_t null = '\0'; @@ -731,9 +715,9 @@ static int _gnutls_asn1_encode_rsa(asn1_node * c2, gnutls_pk_params_st * params) *c2 = NULL; } - if ((result = asn1_create_element - (_gnutls_get_gnutls_asn(), "GNUTLS.RSAPrivateKey", c2)) - != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.RSAPrivateKey", c2)) != + ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); goto cleanup; @@ -741,79 +725,71 @@ static int _gnutls_asn1_encode_rsa(asn1_node * c2, gnutls_pk_params_st * params) /* Write PRIME */ - ret = - _gnutls_x509_write_int(*c2, "modulus", - params->params[RSA_MODULUS], 1); + ret = _gnutls_x509_write_int(*c2, "modulus", + params->params[RSA_MODULUS], 1); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _gnutls_x509_write_int(*c2, "publicExponent", - params->params[RSA_PUB], 1); + ret = _gnutls_x509_write_int(*c2, "publicExponent", + params->params[RSA_PUB], 1); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _gnutls_x509_write_key_int(*c2, "privateExponent", - params->params[RSA_PRIV], 1); + ret = _gnutls_x509_write_key_int(*c2, "privateExponent", + params->params[RSA_PRIV], 1); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _gnutls_x509_write_key_int(*c2, "prime1", - params->params[RSA_PRIME1], 1); + ret = _gnutls_x509_write_key_int(*c2, "prime1", + params->params[RSA_PRIME1], 1); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _gnutls_x509_write_key_int(*c2, "prime2", - params->params[RSA_PRIME2], 1); + ret = _gnutls_x509_write_key_int(*c2, "prime2", + params->params[RSA_PRIME2], 1); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _gnutls_x509_write_key_int(*c2, "coefficient", - params->params[RSA_COEF], 1); + ret = _gnutls_x509_write_key_int(*c2, "coefficient", + params->params[RSA_COEF], 1); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _gnutls_x509_write_key_int(*c2, "exponent1", - params->params[RSA_E1], 1); + ret = _gnutls_x509_write_key_int(*c2, "exponent1", + params->params[RSA_E1], 1); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _gnutls_x509_write_key_int(*c2, "exponent2", - params->params[RSA_E2], 1); + ret = _gnutls_x509_write_key_int(*c2, "exponent2", + params->params[RSA_E2], 1); if (ret < 0) { gnutls_assert(); goto cleanup; } - if ((result = asn1_write_value(*c2, "otherPrimeInfos", - NULL, 0)) != ASN1_SUCCESS) { + if ((result = asn1_write_value(*c2, "otherPrimeInfos", NULL, 0)) != + ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); goto cleanup; } - if ((result = - asn1_write_value(*c2, "version", &null, 1)) != ASN1_SUCCESS) { + if ((result = asn1_write_value(*c2, "version", &null, 1)) != + ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); goto cleanup; @@ -821,7 +797,7 @@ static int _gnutls_asn1_encode_rsa(asn1_node * c2, gnutls_pk_params_st * params) ret = 0; - cleanup: +cleanup: if (ret < 0) asn1_delete_structure2(c2, ASN1_DELETE_FLAG_ZEROIZE); @@ -832,7 +808,7 @@ static int _gnutls_asn1_encode_rsa(asn1_node * c2, gnutls_pk_params_st * params) /* Encodes the ECC parameters into an ASN.1 ECPrivateKey structure. */ -static int _gnutls_asn1_encode_ecc(asn1_node * c2, gnutls_pk_params_st * params) +static int _gnutls_asn1_encode_ecc(asn1_node *c2, gnutls_pk_params_st *params) { int ret; uint8_t one = '\x01'; @@ -849,9 +825,9 @@ static int _gnutls_asn1_encode_ecc(asn1_node * c2, gnutls_pk_params_st * params) *c2 = NULL; } - if ((ret = asn1_create_element - (_gnutls_get_gnutls_asn(), "GNUTLS.ECPrivateKey", c2)) - != ASN1_SUCCESS) { + if ((ret = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.ECPrivateKey", c2)) != + ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(ret); goto cleanup; @@ -867,18 +843,16 @@ static int _gnutls_asn1_encode_ecc(asn1_node * c2, gnutls_pk_params_st * params) curve_is_modern_ecdh(params->curve)) { if (params->raw_pub.size == 0 || params->raw_priv.size == 0) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - ret = - asn1_write_value(*c2, "privateKey", params->raw_priv.data, - params->raw_priv.size); + ret = asn1_write_value(*c2, "privateKey", params->raw_priv.data, + params->raw_priv.size); if (ret != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(ret); goto cleanup; } - ret = - asn1_write_value(*c2, "publicKey", params->raw_pub.data, - params->raw_pub.size * 8); + ret = asn1_write_value(*c2, "publicKey", params->raw_pub.data, + params->raw_pub.size * 8); if (ret != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(ret); @@ -888,25 +862,22 @@ static int _gnutls_asn1_encode_ecc(asn1_node * c2, gnutls_pk_params_st * params) if (params->params_nr != ECC_PRIVATE_PARAMS) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - ret = - _gnutls_ecc_ansi_x962_export(params->curve, - params->params[ECC_X], - params->params[ECC_Y], - &pubkey); + ret = _gnutls_ecc_ansi_x962_export(params->curve, + params->params[ECC_X], + params->params[ECC_Y], + &pubkey); if (ret < 0) return gnutls_assert_val(ret); - ret = - _gnutls_x509_write_key_int(*c2, "privateKey", - params->params[ECC_K], 1); + ret = _gnutls_x509_write_key_int(*c2, "privateKey", + params->params[ECC_K], 1); if (ret < 0) { gnutls_assert(); goto cleanup; } - if ((ret = - asn1_write_value(*c2, "publicKey", pubkey.data, - pubkey.size * 8)) != ASN1_SUCCESS) { + if ((ret = asn1_write_value(*c2, "publicKey", pubkey.data, + pubkey.size * 8)) != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(ret); goto cleanup; @@ -914,17 +885,15 @@ static int _gnutls_asn1_encode_ecc(asn1_node * c2, gnutls_pk_params_st * params) } /* write our choice */ - if ((ret = - asn1_write_value(*c2, "parameters", "namedCurve", - 1)) != ASN1_SUCCESS) { + if ((ret = asn1_write_value(*c2, "parameters", "namedCurve", 1)) != + ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(ret); goto cleanup; } - if ((ret = - asn1_write_value(*c2, "parameters.namedCurve", oid, - 1)) != ASN1_SUCCESS) { + if ((ret = asn1_write_value(*c2, "parameters.namedCurve", oid, 1)) != + ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(ret); goto cleanup; @@ -933,15 +902,14 @@ static int _gnutls_asn1_encode_ecc(asn1_node * c2, gnutls_pk_params_st * params) _gnutls_free_datum(&pubkey); return 0; - cleanup: +cleanup: asn1_delete_structure2(c2, ASN1_DELETE_FLAG_ZEROIZE); _gnutls_free_datum(&pubkey); return ret; } -static int -_gnutls_asn1_encode_gost(asn1_node * c2, gnutls_pk_params_st * params) +static int _gnutls_asn1_encode_gost(asn1_node *c2, gnutls_pk_params_st *params) { int ret; const char *oid; @@ -957,9 +925,9 @@ _gnutls_asn1_encode_gost(asn1_node * c2, gnutls_pk_params_st * params) *c2 = NULL; } - if ((ret = asn1_create_element - (_gnutls_get_gnutls_asn(), "GNUTLS.GOSTPrivateKey", c2)) - != ASN1_SUCCESS) { + if ((ret = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.GOSTPrivateKey", c2)) != + ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(ret); goto cleanup; @@ -973,7 +941,7 @@ _gnutls_asn1_encode_gost(asn1_node * c2, gnutls_pk_params_st * params) return 0; - cleanup: +cleanup: asn1_delete_structure2(c2, ASN1_DELETE_FLAG_ZEROIZE); return ret; @@ -981,7 +949,7 @@ _gnutls_asn1_encode_gost(asn1_node * c2, gnutls_pk_params_st * params) /* Encodes the DSA parameters into an ASN.1 DSAPrivateKey structure. */ -static int _gnutls_asn1_encode_dsa(asn1_node * c2, gnutls_pk_params_st * params) +static int _gnutls_asn1_encode_dsa(asn1_node *c2, gnutls_pk_params_st *params) { int result, ret; const uint8_t null = '\0'; @@ -992,9 +960,9 @@ static int _gnutls_asn1_encode_dsa(asn1_node * c2, gnutls_pk_params_st * params) *c2 = NULL; } - if ((result = asn1_create_element - (_gnutls_get_gnutls_asn(), "GNUTLS.DSAPrivateKey", c2)) - != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.DSAPrivateKey", c2)) != + ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -1031,8 +999,8 @@ static int _gnutls_asn1_encode_dsa(asn1_node * c2, gnutls_pk_params_st * params) goto cleanup; } - if ((result = - asn1_write_value(*c2, "version", &null, 1)) != ASN1_SUCCESS) { + if ((result = asn1_write_value(*c2, "version", &null, 1)) != + ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); goto cleanup; @@ -1040,13 +1008,13 @@ static int _gnutls_asn1_encode_dsa(asn1_node * c2, gnutls_pk_params_st * params) return 0; - cleanup: +cleanup: asn1_delete_structure2(c2, ASN1_DELETE_FLAG_ZEROIZE); return ret; } -int _gnutls_asn1_encode_privkey(asn1_node * c2, gnutls_pk_params_st * params) +int _gnutls_asn1_encode_privkey(asn1_node *c2, gnutls_pk_params_st *params) { switch (params->algo) { case GNUTLS_PK_RSA: diff --git a/lib/x509/krb5.c b/lib/x509/krb5.c index b26d07dfcb..bf287d1d72 100644 --- a/lib/x509/krb5.c +++ b/lib/x509/krb5.c @@ -43,7 +43,7 @@ typedef struct krb5_principal_data { extern const asn1_static_node krb5_asn1_tab[]; -static void cleanup_principal(krb5_principal_data * princ) +static void cleanup_principal(krb5_principal_data *princ) { unsigned i; if (princ) { @@ -91,9 +91,9 @@ static krb5_principal_data *name_to_principal(const char *_name) p = strtok_r(name, "/", &sp); while (p) { if (pos == MAX_COMPONENTS) { - _gnutls_debug_log - ("%s: Cannot parse names with more than %d components\n", - __func__, MAX_COMPONENTS); + _gnutls_debug_log( + "%s: Cannot parse names with more than %d components\n", + __func__, MAX_COMPONENTS); goto fail; } @@ -109,13 +109,13 @@ static krb5_principal_data *name_to_principal(const char *_name) p = strtok_r(NULL, "/", &sp); } - if ((princ->length == 2) - && (strcmp(princ->data[0], "krbtgt") == 0)) { - princ->type = 2; /* KRB_NT_SRV_INST */ + if ((princ->length == 2) && + (strcmp(princ->data[0], "krbtgt") == 0)) { + princ->type = 2; /* KRB_NT_SRV_INST */ } else { - princ->type = 1; /* KRB_NT_PRINCIPAL */ + princ->type = 1; /* KRB_NT_PRINCIPAL */ } - } else { /* enterprise */ + } else { /* enterprise */ princ->data[0] = gnutls_strdup(name); if (princ->data[0] == NULL) { gnutls_assert(); @@ -123,20 +123,20 @@ static krb5_principal_data *name_to_principal(const char *_name) } princ->length++; - princ->type = 10; /* KRB_NT_ENTERPRISE */ + princ->type = 10; /* KRB_NT_ENTERPRISE */ } goto cleanup; - fail: +fail: cleanup_principal(princ); princ = NULL; - cleanup: +cleanup: gnutls_free(name); return princ; } -int _gnutls_krb5_principal_to_der(const char *name, gnutls_datum_t * der) +int _gnutls_krb5_principal_to_der(const char *name, gnutls_datum_t *der) { int ret, result; asn1_node c2 = NULL; @@ -150,25 +150,24 @@ int _gnutls_krb5_principal_to_der(const char *name, gnutls_datum_t * der) goto cleanup; } - result = - asn1_create_element(_gnutls_get_gnutls_asn(), - "GNUTLS.KRB5PrincipalName", &c2); + result = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.KRB5PrincipalName", &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); goto cleanup; } - result = - asn1_write_value(c2, "realm", princ->realm, strlen(princ->realm)); + result = asn1_write_value(c2, "realm", princ->realm, + strlen(princ->realm)); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); goto cleanup; } - result = - asn1_write_value(c2, "principalName.name-type", &princ->type, 1); + result = asn1_write_value(c2, "principalName.name-type", &princ->type, + 1); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); @@ -176,18 +175,17 @@ int _gnutls_krb5_principal_to_der(const char *name, gnutls_datum_t * der) } for (i = 0; i < princ->length; i++) { - result = - asn1_write_value(c2, "principalName.name-string", "NEW", 1); + result = asn1_write_value(c2, "principalName.name-string", + "NEW", 1); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); goto cleanup; } - result = - asn1_write_value(c2, - "principalName.name-string.?LAST", - princ->data[i], strlen(princ->data[i])); + result = asn1_write_value(c2, "principalName.name-string.?LAST", + princ->data[i], + strlen(princ->data[i])); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); @@ -202,13 +200,13 @@ int _gnutls_krb5_principal_to_der(const char *name, gnutls_datum_t * der) } ret = 0; - cleanup: +cleanup: cleanup_principal(princ); asn1_delete_structure(&c2); return ret; } -static int principal_to_str(asn1_node c2, gnutls_buffer_st * str) +static int principal_to_str(asn1_node c2, gnutls_buffer_st *str) { gnutls_datum_t realm = { NULL, 0 }; gnutls_datum_t component = { NULL, 0 }; @@ -225,15 +223,15 @@ static int principal_to_str(asn1_node c2, gnutls_buffer_st * str) len = sizeof(name_type); result = - asn1_read_value(c2, "principalName.name-type", name_type, &len); + asn1_read_value(c2, "principalName.name-type", name_type, &len); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); goto cleanup; } - if (len != 1 - || (name_type[0] != 1 && name_type[0] != 2 && name_type[0] != 10)) { + if (len != 1 || + (name_type[0] != 1 && name_type[0] != 2 && name_type[0] != 10)) { ret = GNUTLS_E_INVALID_REQUEST; goto cleanup; } @@ -242,8 +240,8 @@ static int principal_to_str(asn1_node c2, gnutls_buffer_st * str) snprintf(val, sizeof(val), "principalName.name-string.?%u", i + 1); ret = _gnutls_x509_read_value(c2, val, &component); - if (ret == GNUTLS_E_ASN1_VALUE_NOT_FOUND - || ret == GNUTLS_E_ASN1_ELEMENT_NOT_FOUND) + if (ret == GNUTLS_E_ASN1_VALUE_NOT_FOUND || + ret == GNUTLS_E_ASN1_ELEMENT_NOT_FOUND) break; if (ret < 0) { gnutls_assert(); @@ -258,9 +256,8 @@ static int principal_to_str(asn1_node c2, gnutls_buffer_st * str) } } - ret = - _gnutls_buffer_append_data(str, component.data, - component.size); + ret = _gnutls_buffer_append_data(str, component.data, + component.size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -282,14 +279,14 @@ static int principal_to_str(asn1_node c2, gnutls_buffer_st * str) } ret = 0; - cleanup: +cleanup: _gnutls_free_datum(&component); gnutls_free(realm.data); return ret; } -int _gnutls_krb5_der_to_principal(const gnutls_datum_t * der, - gnutls_datum_t * name) +int _gnutls_krb5_der_to_principal(const gnutls_datum_t *der, + gnutls_datum_t *name) { int ret, result; asn1_node c2 = NULL; @@ -297,9 +294,8 @@ int _gnutls_krb5_der_to_principal(const gnutls_datum_t * der, _gnutls_buffer_init(&str); - result = - asn1_create_element(_gnutls_get_gnutls_asn(), - "GNUTLS.KRB5PrincipalName", &c2); + result = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.KRB5PrincipalName", &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); @@ -331,7 +327,7 @@ int _gnutls_krb5_der_to_principal(const gnutls_datum_t * der, asn1_delete_structure(&c2); return _gnutls_buffer_to_datum(&str, name, 1); - cleanup: +cleanup: _gnutls_buffer_clear(&str); asn1_delete_structure(&c2); return ret; diff --git a/lib/x509/krb5.h b/lib/x509/krb5.h index da9f07b8c0..1267a414ce 100644 --- a/lib/x509/krb5.h +++ b/lib/x509/krb5.h @@ -21,10 +21,10 @@ */ #ifndef GNUTLS_LIB_X509_KRB5_H -# define GNUTLS_LIB_X509_KRB5_H +#define GNUTLS_LIB_X509_KRB5_H -int _gnutls_krb5_principal_to_der(const char *name, gnutls_datum_t * der); -int _gnutls_krb5_der_to_principal(const gnutls_datum_t * der, - gnutls_datum_t * name); +int _gnutls_krb5_principal_to_der(const char *name, gnutls_datum_t *der); +int _gnutls_krb5_der_to_principal(const gnutls_datum_t *der, + gnutls_datum_t *name); -#endif /* GNUTLS_LIB_X509_KRB5_H */ +#endif /* GNUTLS_LIB_X509_KRB5_H */ diff --git a/lib/x509/mpi.c b/lib/x509/mpi.c index c696d89936..f96624a15b 100644 --- a/lib/x509/mpi.c +++ b/lib/x509/mpi.c @@ -34,15 +34,15 @@ /* Reads an Integer from the DER encoded data */ -int _gnutls_x509_read_der_int(uint8_t * der, int dersize, bigint_t * out) +int _gnutls_x509_read_der_int(uint8_t *der, int dersize, bigint_t *out) { int result; asn1_node spk = NULL; /* == INTEGER */ - if ((result = asn1_create_element - (_gnutls_get_gnutls_asn(), "GNUTLS.DSAPublicKey", - &spk)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.DSAPublicKey", &spk)) != + ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -66,18 +66,17 @@ int _gnutls_x509_read_der_int(uint8_t * der, int dersize, bigint_t * out) asn1_delete_structure(&spk); return 0; - } -int _gnutls_x509_read_der_uint(uint8_t * der, int dersize, unsigned int *out) +int _gnutls_x509_read_der_uint(uint8_t *der, int dersize, unsigned int *out) { int result; asn1_node spk = NULL; /* == INTEGER */ - if ((result = asn1_create_element - (_gnutls_get_gnutls_asn(), "GNUTLS.DSAPublicKey", - &spk)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.DSAPublicKey", &spk)) != + ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -101,14 +100,12 @@ int _gnutls_x509_read_der_uint(uint8_t * der, int dersize, unsigned int *out) asn1_delete_structure(&spk); return 0; - } /* Extracts DSA and RSA parameters from a certificate. */ -int -_gnutls_get_asn_mpis(asn1_node asn, const char *root, - gnutls_pk_params_st * params) +int _gnutls_get_asn_mpis(asn1_node asn, const char *root, + gnutls_pk_params_st *params) { int result; char name[256]; @@ -133,15 +130,15 @@ _gnutls_get_asn_mpis(asn1_node asn, const char *root, _asnstr_append_name(name, sizeof(name), root, ".algorithm.parameters"); if (pk_algorithm != GNUTLS_PK_RSA && - pk_algorithm != GNUTLS_PK_EDDSA_ED25519 - && pk_algorithm != GNUTLS_PK_ECDH_X25519 - && pk_algorithm != GNUTLS_PK_EDDSA_ED448 - && pk_algorithm != GNUTLS_PK_ECDH_X448) { + pk_algorithm != GNUTLS_PK_EDDSA_ED25519 && + pk_algorithm != GNUTLS_PK_ECDH_X25519 && + pk_algorithm != GNUTLS_PK_EDDSA_ED448 && + pk_algorithm != GNUTLS_PK_ECDH_X448) { /* RSA and EdDSA do not use parameters */ result = _gnutls_x509_read_value(asn, name, &tmp); if (pk_algorithm == GNUTLS_PK_RSA_PSS && - (result == GNUTLS_E_ASN1_VALUE_NOT_FOUND - || result == GNUTLS_E_ASN1_ELEMENT_NOT_FOUND)) { + (result == GNUTLS_E_ASN1_VALUE_NOT_FOUND || + result == GNUTLS_E_ASN1_ELEMENT_NOT_FOUND)) { goto skip_params; } if (result < 0) { @@ -149,9 +146,8 @@ _gnutls_get_asn_mpis(asn1_node asn, const char *root, goto error; } - result = - _gnutls_x509_read_pubkey_params(pk_algorithm, - tmp.data, tmp.size, params); + result = _gnutls_x509_read_pubkey_params(pk_algorithm, tmp.data, + tmp.size, params); if (result < 0) { gnutls_assert(); goto error; @@ -160,7 +156,7 @@ _gnutls_get_asn_mpis(asn1_node asn, const char *root, _gnutls_free_datum(&tmp); } - skip_params: +skip_params: /* Now read the public key */ _asnstr_append_name(name, sizeof(name), root, ".subjectPublicKey"); @@ -170,9 +166,8 @@ _gnutls_get_asn_mpis(asn1_node asn, const char *root, goto error; } - if ((result = - _gnutls_x509_read_pubkey(pk_algorithm, tmp.data, tmp.size, - params)) < 0) { + if ((result = _gnutls_x509_read_pubkey(pk_algorithm, tmp.data, tmp.size, + params)) < 0) { gnutls_assert(); goto error; } @@ -185,7 +180,7 @@ _gnutls_get_asn_mpis(asn1_node asn, const char *root, result = 0; - error: +error: if (result < 0) gnutls_pk_params_release(params); _gnutls_free_datum(&tmp); @@ -194,35 +189,32 @@ _gnutls_get_asn_mpis(asn1_node asn, const char *root, /* Extracts DSA and RSA parameters from a certificate. */ -int -_gnutls_x509_crt_get_mpis(gnutls_x509_crt_t cert, gnutls_pk_params_st * params) +int _gnutls_x509_crt_get_mpis(gnutls_x509_crt_t cert, + gnutls_pk_params_st *params) { /* Read the algorithm's OID */ - return _gnutls_get_asn_mpis(cert->cert, - "tbsCertificate.subjectPublicKeyInfo", - params); + return _gnutls_get_asn_mpis( + cert->cert, "tbsCertificate.subjectPublicKeyInfo", params); } /* Extracts DSA and RSA parameters from a certificate. */ -int -_gnutls_x509_crq_get_mpis(gnutls_x509_crq_t cert, gnutls_pk_params_st * params) +int _gnutls_x509_crq_get_mpis(gnutls_x509_crq_t cert, + gnutls_pk_params_st *params) { /* Read the algorithm's OID */ - return _gnutls_get_asn_mpis(cert->crq, - "certificationRequestInfo.subjectPKInfo", - params); + return _gnutls_get_asn_mpis( + cert->crq, "certificationRequestInfo.subjectPKInfo", params); } /* * This function reads and decodes the parameters for DSS or RSA keys. * This is the "signatureAlgorithm" fields. */ -int -_gnutls_x509_read_pkalgo_params(asn1_node src, const char *src_name, - gnutls_x509_spki_st * spki, unsigned is_sig) +int _gnutls_x509_read_pkalgo_params(asn1_node src, const char *src_name, + gnutls_x509_spki_st *spki, unsigned is_sig) { int result; char name[128]; @@ -276,7 +268,7 @@ _gnutls_x509_read_pkalgo_params(asn1_node src, const char *src_name, } static int write_oid_and_params(asn1_node dst, const char *dst_name, - const char *oid, gnutls_x509_spki_st * params) + const char *oid, gnutls_x509_spki_st *params) { int result; char name[128]; @@ -325,9 +317,8 @@ static int write_oid_and_params(asn1_node dst, const char *dst_name, return 0; } -int -_gnutls_x509_write_spki_params(asn1_node dst, const char *dst_name, - gnutls_x509_spki_st * params) +int _gnutls_x509_write_spki_params(asn1_node dst, const char *dst_name, + gnutls_x509_spki_st *params) { const char *oid; @@ -340,19 +331,18 @@ _gnutls_x509_write_spki_params(asn1_node dst, const char *dst_name, if (oid == NULL) { gnutls_assert(); - _gnutls_debug_log - ("Cannot find OID for public key algorithm %s\n", - gnutls_pk_get_name(params->pk)); + _gnutls_debug_log( + "Cannot find OID for public key algorithm %s\n", + gnutls_pk_get_name(params->pk)); return GNUTLS_E_INVALID_REQUEST; } return write_oid_and_params(dst, dst_name, oid, params); } -int -_gnutls_x509_write_sign_params(asn1_node dst, const char *dst_name, - const gnutls_sign_entry_st * se, - gnutls_x509_spki_st * params) +int _gnutls_x509_write_sign_params(asn1_node dst, const char *dst_name, + const gnutls_sign_entry_st *se, + gnutls_x509_spki_st *params) { const char *oid; @@ -365,8 +355,8 @@ _gnutls_x509_write_sign_params(asn1_node dst, const char *dst_name, if (oid == NULL) { gnutls_assert(); - _gnutls_debug_log - ("Cannot find OID for sign algorithm %s\n", se->name); + _gnutls_debug_log("Cannot find OID for sign algorithm %s\n", + se->name); return GNUTLS_E_INVALID_REQUEST; } diff --git a/lib/x509/name_constraints.c b/lib/x509/name_constraints.c index a7294afa6a..c37d907a95 100644 --- a/lib/x509/name_constraints.c +++ b/lib/x509/name_constraints.c @@ -39,10 +39,10 @@ #include "ip-in-cidr.h" // for documentation see the implementation -static int name_constraints_intersect_nodes(name_constraints_node_st * nc1, - name_constraints_node_st * nc2, - name_constraints_node_st ** - intersection); +static int +name_constraints_intersect_nodes(name_constraints_node_st *nc1, + name_constraints_node_st *nc2, + name_constraints_node_st **intersection); /*- * is_nc_empty: @@ -94,7 +94,7 @@ static unsigned is_nc_empty(struct gnutls_name_constraints_st *nc, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a negative error value. -*/ static int validate_name_constraints_node(gnutls_x509_subject_alt_name_t type, - const gnutls_datum_t * name) + const gnutls_datum_t *name) { if (type != GNUTLS_SAN_DNSNAME && type != GNUTLS_SAN_RFC822NAME && type != GNUTLS_SAN_DN && type != GNUTLS_SAN_URI && @@ -116,7 +116,7 @@ static int validate_name_constraints_node(gnutls_x509_subject_alt_name_t type, } int _gnutls_extract_name_constraints(asn1_node c2, const char *vstr, - name_constraints_node_st ** _nc) + name_constraints_node_st **_nc) { int ret; char tmpstr[128]; @@ -134,8 +134,8 @@ int _gnutls_extract_name_constraints(asn1_node c2, const char *vstr, for (indx = 1;; indx++) { snprintf(tmpstr, sizeof(tmpstr), "%s.?%u.base", vstr, indx); - ret = - _gnutls_parse_general_name2(c2, tmpstr, -1, &tmp, &type, 0); + ret = _gnutls_parse_general_name2(c2, tmpstr, -1, &tmp, &type, + 0); if (ret < 0) { gnutls_assert(); @@ -145,18 +145,16 @@ int _gnutls_extract_name_constraints(asn1_node c2, const char *vstr, if (type == GNUTLS_SAN_OTHERNAME) { gnutls_datum_t oid = { NULL, 0 }; gnutls_datum_t parsed_othername = { NULL, 0 }; - ret = - _gnutls_parse_general_name2(c2, tmpstr, -1, &oid, - &type, 1); + ret = _gnutls_parse_general_name2(c2, tmpstr, -1, &oid, + &type, 1); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - gnutls_x509_othername_to_virtual((char *)oid.data, - &tmp, &type, - &parsed_othername); + ret = gnutls_x509_othername_to_virtual( + (char *)oid.data, &tmp, &type, + &parsed_othername); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -202,7 +200,7 @@ int _gnutls_extract_name_constraints(asn1_node c2, const char *vstr, } ret = 0; - cleanup: +cleanup: gnutls_free(tmp.data); return ret; } @@ -213,7 +211,7 @@ int _gnutls_extract_name_constraints(asn1_node c2, const char *vstr, * * Deallocate a list of name constraints nodes starting at the given node. -*/ -void _gnutls_name_constraints_node_free(name_constraints_node_st * node) +void _gnutls_name_constraints_node_free(name_constraints_node_st *node) { name_constraints_node_st *next, *t; @@ -238,12 +236,11 @@ void _gnutls_name_constraints_node_free(name_constraints_node_st * node) * * Returns: Pointer to newly allocated node or NULL in case of memory error. -*/ -static name_constraints_node_st *name_constraints_node_new(unsigned type, - unsigned char *data, - unsigned int size) +static name_constraints_node_st * +name_constraints_node_new(unsigned type, unsigned char *data, unsigned int size) { name_constraints_node_st *tmp = - gnutls_malloc(sizeof(struct name_constraints_node_st)); + gnutls_malloc(sizeof(struct name_constraints_node_st)); if (tmp == NULL) return NULL; tmp->type = type; @@ -251,7 +248,6 @@ static name_constraints_node_st *name_constraints_node_new(unsigned type, tmp->name.size = size; tmp->name.data = NULL; if (tmp->name.size > 0) { - tmp->name.data = gnutls_malloc(tmp->name.size); if (tmp->name.data == NULL) { gnutls_free(tmp); @@ -279,13 +275,13 @@ static name_constraints_node_st *name_constraints_node_new(unsigned type, * * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a negative error value. -*/ -static -int _gnutls_name_constraints_intersect(name_constraints_node_st ** _nc, - name_constraints_node_st * _nc2, - name_constraints_node_st ** _nc_excluded) +static int +_gnutls_name_constraints_intersect(name_constraints_node_st **_nc, + name_constraints_node_st *_nc2, + name_constraints_node_st **_nc_excluded) { - name_constraints_node_st *nc, *nc2, *t, *tmp, *dest = NULL, *prev = - NULL; + name_constraints_node_st *nc, *nc2, *t, *tmp, *dest = NULL, + *prev = NULL; int ret, type, used; /* temporary array to see, if we need to add universal excluded constraints @@ -310,9 +306,8 @@ int _gnutls_name_constraints_intersect(name_constraints_node_st ** _nc, if (t->type == nc2->type) { // check bounds (we will use 't->type' as index) if (t->type > GNUTLS_SAN_MAX || t->type == 0) - return - gnutls_assert_val - (GNUTLS_E_INTERNAL_ERROR); + return gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); // note the possibility of empty intersection for this type // if we add something to the intersection in phase 2, // we will reset this flag back to 0 then @@ -321,11 +316,9 @@ int _gnutls_name_constraints_intersect(name_constraints_node_st ** _nc, } nc2 = nc2->next; } - if (nc2 == NULL || - (t->type != GNUTLS_SAN_DNSNAME && - t->type != GNUTLS_SAN_RFC822NAME && - t->type != GNUTLS_SAN_IPADDRESS) - ) { + if (nc2 == NULL || (t->type != GNUTLS_SAN_DNSNAME && + t->type != GNUTLS_SAN_RFC822NAME && + t->type != GNUTLS_SAN_IPADDRESS)) { /* move node from NC to DEST */ if (prev != NULL) prev->next = next; @@ -355,18 +348,18 @@ int _gnutls_name_constraints_intersect(name_constraints_node_st ** _nc, return gnutls_assert_val(ret); used = 1; // if intersection is not empty - if (tmp != NULL) { // intersection for this type is not empty + if (tmp != + NULL) { // intersection for this type is not empty // check bounds - if (tmp->type > GNUTLS_SAN_MAX - || tmp->type == 0) { + if (tmp->type > GNUTLS_SAN_MAX || + tmp->type == 0) { gnutls_free(tmp); - return - gnutls_assert_val - (GNUTLS_E_INTERNAL_ERROR); + return gnutls_assert_val( + GNUTLS_E_INTERNAL_ERROR); } // we will not add universal excluded constraint for this type types_with_empty_intersection[tmp->type - 1] = - 0; + 0; // add intersection node to DEST tmp->next = dest; dest = tmp; @@ -377,9 +370,8 @@ int _gnutls_name_constraints_intersect(name_constraints_node_st ** _nc, // Beware: also copies nodes other than DNS, email, IP, // since their counterpart may have been moved in phase 1. if (!used) { - tmp = - name_constraints_node_new(nc2->type, nc2->name.data, - nc2->name.size); + tmp = name_constraints_node_new( + nc2->type, nc2->name.data, nc2->name.size); if (tmp == NULL) { _gnutls_name_constraints_node_free(dest); return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); @@ -402,15 +394,14 @@ int _gnutls_name_constraints_intersect(name_constraints_node_st ** _nc, for (type = 1; type <= GNUTLS_SAN_MAX; type++) { if (types_with_empty_intersection[type - 1] == 0) continue; - _gnutls_hard_log - ("Adding universal excluded name constraint for type %d.\n", - type); + _gnutls_hard_log( + "Adding universal excluded name constraint for type %d.\n", + type); switch (type) { case GNUTLS_SAN_IPADDRESS: // add universal restricted range for IPv4 - tmp = - name_constraints_node_new(GNUTLS_SAN_IPADDRESS, - NULL, 8); + tmp = name_constraints_node_new(GNUTLS_SAN_IPADDRESS, + NULL, 8); if (tmp == NULL) { _gnutls_name_constraints_node_free(dest); return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); @@ -418,9 +409,8 @@ int _gnutls_name_constraints_intersect(name_constraints_node_st ** _nc, tmp->next = *_nc_excluded; *_nc_excluded = tmp; // add universal restricted range for IPv6 - tmp = - name_constraints_node_new(GNUTLS_SAN_IPADDRESS, - NULL, 32); + tmp = name_constraints_node_new(GNUTLS_SAN_IPADDRESS, + NULL, 32); if (tmp == NULL) { _gnutls_name_constraints_node_free(dest); return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); @@ -438,15 +428,15 @@ int _gnutls_name_constraints_intersect(name_constraints_node_st ** _nc, tmp->next = *_nc_excluded; *_nc_excluded = tmp; break; - default: // do nothing, at least one node was already moved in phase 1 + default: // do nothing, at least one node was already moved in phase 1 break; } } return GNUTLS_E_SUCCESS; } -static int _gnutls_name_constraints_append(name_constraints_node_st ** _nc, - name_constraints_node_st * _nc2) +static int _gnutls_name_constraints_append(name_constraints_node_st **_nc, + name_constraints_node_st *_nc2) { name_constraints_node_st *nc, *nc2; struct name_constraints_node_st *tmp; @@ -458,9 +448,8 @@ static int _gnutls_name_constraints_append(name_constraints_node_st ** _nc, while (nc2) { nc = *_nc; - tmp = - name_constraints_node_new(nc2->type, nc2->name.data, - nc2->name.size); + tmp = name_constraints_node_new(nc2->type, nc2->name.data, + nc2->name.size); if (tmp == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); @@ -513,8 +502,8 @@ int gnutls_x509_crt_get_name_constraints(gnutls_x509_crt_t crt, return GNUTLS_E_INVALID_REQUEST; } - ret = - _gnutls_x509_crt_get_extension(crt, "2.5.29.30", 0, &der, critical); + ret = _gnutls_x509_crt_get_extension(crt, "2.5.29.30", 0, &der, + critical); if (ret < 0) return gnutls_assert_val(ret); @@ -529,11 +518,10 @@ int gnutls_x509_crt_get_name_constraints(gnutls_x509_crt_t crt, ret = 0; - cleanup: +cleanup: _gnutls_free_datum(&der); return ret; - } /** @@ -562,7 +550,7 @@ void gnutls_x509_name_constraints_deinit(gnutls_x509_name_constraints_t nc) * * Since: 3.3.0 **/ -int gnutls_x509_name_constraints_init(gnutls_x509_name_constraints_t * nc) +int gnutls_x509_name_constraints_init(gnutls_x509_name_constraints_t *nc) { *nc = gnutls_calloc(1, sizeof(struct gnutls_name_constraints_st)); if (*nc == NULL) { @@ -573,10 +561,9 @@ int gnutls_x509_name_constraints_init(gnutls_x509_name_constraints_t * nc) return 0; } -static -int name_constraints_add(gnutls_x509_name_constraints_t nc, - gnutls_x509_subject_alt_name_t type, - const gnutls_datum_t * name, unsigned permitted) +static int name_constraints_add(gnutls_x509_name_constraints_t nc, + gnutls_x509_subject_alt_name_t type, + const gnutls_datum_t *name, unsigned permitted) { struct name_constraints_node_st *tmp, *prev = NULL; int ret; @@ -633,9 +620,8 @@ int _gnutls_x509_name_constraints_merge(gnutls_x509_name_constraints_t nc, { int ret; - ret = - _gnutls_name_constraints_intersect(&nc->permitted, - nc2->permitted, &nc->excluded); + ret = _gnutls_name_constraints_intersect(&nc->permitted, nc2->permitted, + &nc->excluded); if (ret < 0) { gnutls_assert(); return ret; @@ -666,11 +652,9 @@ int _gnutls_x509_name_constraints_merge(gnutls_x509_name_constraints_t nc, * * Since: 3.3.0 **/ -int gnutls_x509_name_constraints_add_permitted(gnutls_x509_name_constraints_t - nc, - gnutls_x509_subject_alt_name_t - type, - const gnutls_datum_t * name) +int gnutls_x509_name_constraints_add_permitted( + gnutls_x509_name_constraints_t nc, gnutls_x509_subject_alt_name_t type, + const gnutls_datum_t *name) { return name_constraints_add(nc, type, name, 1); } @@ -692,9 +676,9 @@ int gnutls_x509_name_constraints_add_permitted(gnutls_x509_name_constraints_t * * Since: 3.3.0 **/ -int gnutls_x509_name_constraints_add_excluded(gnutls_x509_name_constraints_t nc, - gnutls_x509_subject_alt_name_t - type, const gnutls_datum_t * name) +int gnutls_x509_name_constraints_add_excluded( + gnutls_x509_name_constraints_t nc, gnutls_x509_subject_alt_name_t type, + const gnutls_datum_t *name) { return name_constraints_add(nc, type, name, 0); } @@ -733,13 +717,13 @@ int gnutls_x509_crt_set_name_constraints(gnutls_x509_crt_t crt, ret = 0; crt->use_extensions = 1; - cleanup: +cleanup: _gnutls_free_datum(&der); return ret; } -static -unsigned ends_with(const gnutls_datum_t * str, const gnutls_datum_t * suffix) +static unsigned ends_with(const gnutls_datum_t *str, + const gnutls_datum_t *suffix) { unsigned char *tree; unsigned int treelen; @@ -756,57 +740,54 @@ unsigned ends_with(const gnutls_datum_t * str, const gnutls_datum_t * suffix) if (memcmp(str->data + str->size - treelen, tree, treelen) == 0 && str->data[str->size - treelen - 1] == '.') - return 1; /* match */ + return 1; /* match */ return 0; } -static -unsigned email_ends_with(const gnutls_datum_t * str, - const gnutls_datum_t * suffix) +static unsigned email_ends_with(const gnutls_datum_t *str, + const gnutls_datum_t *suffix) { if (suffix->size >= str->size) return 0; if (suffix->size > 1 && suffix->data[0] == '.') { /* .domain.com */ - if (memcmp - (str->data + str->size - suffix->size, suffix->data, - suffix->size) == 0) - return 1; /* match */ + if (memcmp(str->data + str->size - suffix->size, suffix->data, + suffix->size) == 0) + return 1; /* match */ } else { - if (memcmp - (str->data + str->size - suffix->size, suffix->data, - suffix->size) == 0 - && str->data[str->size - suffix->size - 1] == '@') - return 1; /* match */ + if (memcmp(str->data + str->size - suffix->size, suffix->data, + suffix->size) == 0 && + str->data[str->size - suffix->size - 1] == '@') + return 1; /* match */ } return 0; } -static unsigned dnsname_matches(const gnutls_datum_t * name, - const gnutls_datum_t * suffix) +static unsigned dnsname_matches(const gnutls_datum_t *name, + const gnutls_datum_t *suffix) { _gnutls_hard_log("matching %.*s with DNS constraint %.*s\n", name->size, name->data, suffix->size, suffix->data); - if (suffix->size == name->size - && memcmp(suffix->data, name->data, suffix->size) == 0) - return 1; /* match */ + if (suffix->size == name->size && + memcmp(suffix->data, name->data, suffix->size) == 0) + return 1; /* match */ return ends_with(name, suffix); } -static unsigned email_matches(const gnutls_datum_t * name, - const gnutls_datum_t * suffix) +static unsigned email_matches(const gnutls_datum_t *name, + const gnutls_datum_t *suffix) { _gnutls_hard_log("matching %.*s with e-mail constraint %.*s\n", name->size, name->data, suffix->size, suffix->data); - if (suffix->size == name->size - && memcmp(suffix->data, name->data, suffix->size) == 0) - return 1; /* match */ + if (suffix->size == name->size && + memcmp(suffix->data, name->data, suffix->size) == 0) + return 1; /* match */ return email_ends_with(name, suffix); } @@ -824,9 +805,9 @@ static unsigned email_matches(const gnutls_datum_t * name, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a negative error value. -*/ static int -name_constraints_intersect_nodes(name_constraints_node_st * nc1, - name_constraints_node_st * nc2, - name_constraints_node_st ** _intersection) +name_constraints_intersect_nodes(name_constraints_node_st *nc1, + name_constraints_node_st *nc2, + name_constraints_node_st **_intersection) { // presume empty intersection name_constraints_node_st *intersection = NULL; @@ -855,9 +836,12 @@ name_constraints_intersect_nodes(name_constraints_node_st * nc1, return GNUTLS_E_SUCCESS; iplength = nc1->name.size / 2; for (byte = 0; byte < iplength; byte++) { - if (((nc1->name.data[byte] ^ nc2->name.data[byte]) // XOR of addresses - & nc1->name.data[byte + iplength] // AND mask from nc1 - & nc2->name.data[byte + iplength]) // AND mask from nc2 + if (((nc1->name.data[byte] ^ + nc2->name.data[byte]) // XOR of addresses + & + nc1->name.data[byte + iplength] // AND mask from nc1 + & + nc2->name.data[byte + iplength]) // AND mask from nc2 != 0) { // CIDRS do not intersect return GNUTLS_E_SUCCESS; @@ -872,9 +856,8 @@ name_constraints_intersect_nodes(name_constraints_node_st * nc1, // copy existing node if applicable if (to_copy != NULL) { - *_intersection = - name_constraints_node_new(to_copy->type, to_copy->name.data, - to_copy->name.size); + *_intersection = name_constraints_node_new( + to_copy->type, to_copy->name.data, to_copy->name.size); if (*_intersection == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); intersection = *_intersection; @@ -891,7 +874,7 @@ name_constraints_intersect_nodes(name_constraints_node_st * nc1, // update intersection, if necessary (we already know one is subset of other) for (byte = 0; byte < 2 * iplength; byte++) { intersection->name.data[byte] |= - nc1->name.data[byte]; + nc1->name.data[byte]; } } } @@ -902,9 +885,9 @@ name_constraints_intersect_nodes(name_constraints_node_st * nc1, /* * Returns: true if the certification is acceptable, and false otherwise. */ -static -unsigned check_unsupported_constraint(gnutls_x509_name_constraints_t nc, - gnutls_x509_subject_alt_name_t type) +static unsigned +check_unsupported_constraint(gnutls_x509_name_constraints_t nc, + gnutls_x509_subject_alt_name_t type) { unsigned i; int ret; @@ -916,9 +899,8 @@ unsigned check_unsupported_constraint(gnutls_x509_name_constraints_t nc, */ i = 0; do { - ret = - gnutls_x509_name_constraints_get_excluded(nc, i++, &rtype, - &rname); + ret = gnutls_x509_name_constraints_get_excluded(nc, i++, &rtype, + &rname); if (ret >= 0) { if (rtype != type) continue; @@ -931,9 +913,8 @@ unsigned check_unsupported_constraint(gnutls_x509_name_constraints_t nc, return 1; } -static -unsigned check_dns_constraints(gnutls_x509_name_constraints_t nc, - const gnutls_datum_t * name) +static unsigned check_dns_constraints(gnutls_x509_name_constraints_t nc, + const gnutls_datum_t *name) { unsigned i; int ret; @@ -944,9 +925,8 @@ unsigned check_dns_constraints(gnutls_x509_name_constraints_t nc, /* check restrictions */ i = 0; do { - ret = - gnutls_x509_name_constraints_get_excluded(nc, i++, &rtype, - &rname); + ret = gnutls_x509_name_constraints_get_excluded(nc, i++, &rtype, + &rname); if (ret >= 0) { if (rtype != GNUTLS_SAN_DNSNAME) continue; @@ -957,16 +937,15 @@ unsigned check_dns_constraints(gnutls_x509_name_constraints_t nc, return gnutls_assert_val(0); if (dnsname_matches(name, &rname) != 0) - return gnutls_assert_val(0); /* rejected */ + return gnutls_assert_val(0); /* rejected */ } } while (ret == 0); /* check allowed */ i = 0; do { - ret = - gnutls_x509_name_constraints_get_permitted(nc, i++, &rtype, - &rname); + ret = gnutls_x509_name_constraints_get_permitted( + nc, i++, &rtype, &rname); if (ret >= 0) { if (rtype != GNUTLS_SAN_DNSNAME) continue; @@ -977,19 +956,19 @@ unsigned check_dns_constraints(gnutls_x509_name_constraints_t nc, allowed_found = 1; if (dnsname_matches(name, &rname) != 0) - return 1; /* accepted */ + return 1; /* accepted */ } } while (ret == 0); - if (allowed_found != 0) /* there are allowed directives but this host wasn't found */ + if (allowed_found != + 0) /* there are allowed directives but this host wasn't found */ return gnutls_assert_val(0); return 1; } -static -unsigned check_email_constraints(gnutls_x509_name_constraints_t nc, - const gnutls_datum_t * name) +static unsigned check_email_constraints(gnutls_x509_name_constraints_t nc, + const gnutls_datum_t *name) { unsigned i; int ret; @@ -1000,9 +979,8 @@ unsigned check_email_constraints(gnutls_x509_name_constraints_t nc, /* check restrictions */ i = 0; do { - ret = - gnutls_x509_name_constraints_get_excluded(nc, i++, &rtype, - &rname); + ret = gnutls_x509_name_constraints_get_excluded(nc, i++, &rtype, + &rname); if (ret >= 0) { if (rtype != GNUTLS_SAN_RFC822NAME) continue; @@ -1013,16 +991,15 @@ unsigned check_email_constraints(gnutls_x509_name_constraints_t nc, return gnutls_assert_val(0); if (email_matches(name, &rname) != 0) - return gnutls_assert_val(0); /* rejected */ + return gnutls_assert_val(0); /* rejected */ } } while (ret == 0); /* check allowed */ i = 0; do { - ret = - gnutls_x509_name_constraints_get_permitted(nc, i++, &rtype, - &rname); + ret = gnutls_x509_name_constraints_get_permitted( + nc, i++, &rtype, &rname); if (ret >= 0) { if (rtype != GNUTLS_SAN_RFC822NAME) continue; @@ -1033,19 +1010,19 @@ unsigned check_email_constraints(gnutls_x509_name_constraints_t nc, allowed_found = 1; if (email_matches(name, &rname) != 0) - return 1; /* accepted */ + return 1; /* accepted */ } } while (ret == 0); - if (allowed_found != 0) /* there are allowed directives but this host wasn't found */ + if (allowed_found != + 0) /* there are allowed directives but this host wasn't found */ return gnutls_assert_val(0); return 1; } -static -unsigned check_ip_constraints(gnutls_x509_name_constraints_t nc, - const gnutls_datum_t * name) +static unsigned check_ip_constraints(gnutls_x509_name_constraints_t nc, + const gnutls_datum_t *name) { unsigned i; int ret; @@ -1056,9 +1033,8 @@ unsigned check_ip_constraints(gnutls_x509_name_constraints_t nc, /* check restrictions */ i = 0; do { - ret = - gnutls_x509_name_constraints_get_excluded(nc, i++, &rtype, - &rname); + ret = gnutls_x509_name_constraints_get_excluded(nc, i++, &rtype, + &rname); if (ret >= 0) { if (rtype != GNUTLS_SAN_IPADDRESS) continue; @@ -1068,16 +1044,15 @@ unsigned check_ip_constraints(gnutls_x509_name_constraints_t nc, continue; if (ip_in_cidr(name, &rname) != 0) - return gnutls_assert_val(0); /* rejected */ + return gnutls_assert_val(0); /* rejected */ } } while (ret == 0); /* check allowed */ i = 0; do { - ret = - gnutls_x509_name_constraints_get_permitted(nc, i++, &rtype, - &rname); + ret = gnutls_x509_name_constraints_get_permitted( + nc, i++, &rtype, &rname); if (ret >= 0) { if (rtype != GNUTLS_SAN_IPADDRESS) continue; @@ -1089,11 +1064,12 @@ unsigned check_ip_constraints(gnutls_x509_name_constraints_t nc, allowed_found = 1; if (ip_in_cidr(name, &rname) != 0) - return 1; /* accepted */ + return 1; /* accepted */ } } while (ret == 0); - if (allowed_found != 0) /* there are allowed directives but this host wasn't found */ + if (allowed_found != + 0) /* there are allowed directives but this host wasn't found */ return gnutls_assert_val(0); return 1; @@ -1116,7 +1092,7 @@ unsigned check_ip_constraints(gnutls_x509_name_constraints_t nc, **/ unsigned gnutls_x509_name_constraints_check(gnutls_x509_name_constraints_t nc, gnutls_x509_subject_alt_name_t type, - const gnutls_datum_t * name) + const gnutls_datum_t *name) { if (type == GNUTLS_SAN_DNSNAME) return check_dns_constraints(nc, name); @@ -1137,10 +1113,10 @@ unsigned gnutls_x509_name_constraints_check(gnutls_x509_name_constraints_t nc, * * Returns: true if the certification is acceptable, and false otherwise */ -static unsigned check_unsupported_constraint2(gnutls_x509_crt_t cert, - gnutls_x509_name_constraints_t nc, - gnutls_x509_subject_alt_name_t - type) +static unsigned +check_unsupported_constraint2(gnutls_x509_crt_t cert, + gnutls_x509_name_constraints_t nc, + gnutls_x509_subject_alt_name_t type) { unsigned idx, found_one; char name[MAX_CN]; @@ -1152,10 +1128,8 @@ static unsigned check_unsupported_constraint2(gnutls_x509_crt_t cert, for (idx = 0;; idx++) { name_size = sizeof(name); - ret = gnutls_x509_crt_get_subject_alt_name2(cert, - idx, name, - &name_size, - &san_type, NULL); + ret = gnutls_x509_crt_get_subject_alt_name2( + cert, idx, name, &name_size, &san_type, NULL); if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) break; else if (ret < 0) @@ -1192,10 +1166,10 @@ static unsigned check_unsupported_constraint2(gnutls_x509_crt_t cert, * * Since: 3.3.0 **/ -unsigned gnutls_x509_name_constraints_check_crt(gnutls_x509_name_constraints_t - nc, - gnutls_x509_subject_alt_name_t - type, gnutls_x509_crt_t cert) +unsigned +gnutls_x509_name_constraints_check_crt(gnutls_x509_name_constraints_t nc, + gnutls_x509_subject_alt_name_t type, + gnutls_x509_crt_t cert) { char name[MAX_CN]; size_t name_size; @@ -1205,17 +1179,14 @@ unsigned gnutls_x509_name_constraints_check_crt(gnutls_x509_name_constraints_t unsigned found_one; if (is_nc_empty(nc, type) != 0) - return 1; /* shortcut; no constraints to check */ + return 1; /* shortcut; no constraints to check */ if (type == GNUTLS_SAN_RFC822NAME) { found_one = 0; for (idx = 0;; idx++) { name_size = sizeof(name); - ret = gnutls_x509_crt_get_subject_alt_name2(cert, - idx, name, - &name_size, - &san_type, - NULL); + ret = gnutls_x509_crt_get_subject_alt_name2( + cert, idx, name, &name_size, &san_type, NULL); if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) break; else if (ret < 0) @@ -1227,9 +1198,8 @@ unsigned gnutls_x509_name_constraints_check_crt(gnutls_x509_name_constraints_t found_one = 1; n.data = (void *)name; n.size = name_size; - t = gnutls_x509_name_constraints_check(nc, - GNUTLS_SAN_RFC822NAME, - &n); + t = gnutls_x509_name_constraints_check( + nc, GNUTLS_SAN_RFC822NAME, &n); if (t == 0) return gnutls_assert_val(t); } @@ -1242,20 +1212,16 @@ unsigned gnutls_x509_name_constraints_check_crt(gnutls_x509_name_constraints_t do { /* ensure there is only a single EMAIL, similarly to CN handling (rfc6125) */ name_size = sizeof(name); - ret = - gnutls_x509_crt_get_dn_by_oid(cert, - GNUTLS_OID_PKCS9_EMAIL, - 1, 0, name, - &name_size); + ret = gnutls_x509_crt_get_dn_by_oid( + cert, GNUTLS_OID_PKCS9_EMAIL, 1, 0, name, + &name_size); if (ret != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) return gnutls_assert_val(0); name_size = sizeof(name); - ret = - gnutls_x509_crt_get_dn_by_oid(cert, - GNUTLS_OID_PKCS9_EMAIL, - 0, 0, name, - &name_size); + ret = gnutls_x509_crt_get_dn_by_oid( + cert, GNUTLS_OID_PKCS9_EMAIL, 0, 0, name, + &name_size); if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) break; else if (ret < 0) @@ -1264,9 +1230,8 @@ unsigned gnutls_x509_name_constraints_check_crt(gnutls_x509_name_constraints_t found_one = 1; n.data = (void *)name; n.size = name_size; - t = gnutls_x509_name_constraints_check(nc, - GNUTLS_SAN_RFC822NAME, - &n); + t = gnutls_x509_name_constraints_check( + nc, GNUTLS_SAN_RFC822NAME, &n); if (t == 0) return gnutls_assert_val(t); } while (0); @@ -1284,11 +1249,8 @@ unsigned gnutls_x509_name_constraints_check_crt(gnutls_x509_name_constraints_t found_one = 0; for (idx = 0;; idx++) { name_size = sizeof(name); - ret = gnutls_x509_crt_get_subject_alt_name2(cert, - idx, name, - &name_size, - &san_type, - NULL); + ret = gnutls_x509_crt_get_subject_alt_name2( + cert, idx, name, &name_size, &san_type, NULL); if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) break; else if (ret < 0) @@ -1300,9 +1262,8 @@ unsigned gnutls_x509_name_constraints_check_crt(gnutls_x509_name_constraints_t found_one = 1; n.data = (void *)name; n.size = name_size; - t = gnutls_x509_name_constraints_check(nc, - GNUTLS_SAN_DNSNAME, - &n); + t = gnutls_x509_name_constraints_check( + nc, GNUTLS_SAN_DNSNAME, &n); if (t == 0) return gnutls_assert_val(t); } @@ -1315,26 +1276,22 @@ unsigned gnutls_x509_name_constraints_check_crt(gnutls_x509_name_constraints_t /* verify the name constraints against the CN, if the certificate is * not a CA. We do this check only on certificates marked as WWW server, * because that's where the CN check is only performed. */ - if (_gnutls_check_key_purpose(cert, GNUTLS_KP_TLS_WWW_SERVER, 0) - != 0) + if (_gnutls_check_key_purpose(cert, GNUTLS_KP_TLS_WWW_SERVER, + 0) != 0) do { /* ensure there is only a single CN, according to rfc6125 */ name_size = sizeof(name); - ret = - gnutls_x509_crt_get_dn_by_oid(cert, - GNUTLS_OID_X520_COMMON_NAME, - 1, 0, name, - &name_size); + ret = gnutls_x509_crt_get_dn_by_oid( + cert, GNUTLS_OID_X520_COMMON_NAME, 1, 0, + name, &name_size); if (ret != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) return gnutls_assert_val(0); name_size = sizeof(name); - ret = - gnutls_x509_crt_get_dn_by_oid(cert, - GNUTLS_OID_X520_COMMON_NAME, - 0, 0, name, - &name_size); + ret = gnutls_x509_crt_get_dn_by_oid( + cert, GNUTLS_OID_X520_COMMON_NAME, 0, 0, + name, &name_size); if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) break; @@ -1344,9 +1301,8 @@ unsigned gnutls_x509_name_constraints_check_crt(gnutls_x509_name_constraints_t found_one = 1; n.data = (void *)name; n.size = name_size; - t = gnutls_x509_name_constraints_check(nc, - GNUTLS_SAN_DNSNAME, - &n); + t = gnutls_x509_name_constraints_check( + nc, GNUTLS_SAN_DNSNAME, &n); if (t == 0) return gnutls_assert_val(t); } while (0); @@ -1364,11 +1320,8 @@ unsigned gnutls_x509_name_constraints_check_crt(gnutls_x509_name_constraints_t found_one = 0; for (idx = 0;; idx++) { name_size = sizeof(name); - ret = gnutls_x509_crt_get_subject_alt_name2(cert, - idx, name, - &name_size, - &san_type, - NULL); + ret = gnutls_x509_crt_get_subject_alt_name2( + cert, idx, name, &name_size, &san_type, NULL); if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) break; else if (ret < 0) @@ -1380,9 +1333,8 @@ unsigned gnutls_x509_name_constraints_check_crt(gnutls_x509_name_constraints_t found_one = 1; n.data = (void *)name; n.size = name_size; - t = gnutls_x509_name_constraints_check(nc, - GNUTLS_SAN_IPADDRESS, - &n); + t = gnutls_x509_name_constraints_check( + nc, GNUTLS_SAN_IPADDRESS, &n); if (t == 0) return gnutls_assert_val(t); } @@ -1422,18 +1374,17 @@ unsigned gnutls_x509_name_constraints_check_crt(gnutls_x509_name_constraints_t * * Since: 3.3.0 **/ -int gnutls_x509_name_constraints_get_permitted(gnutls_x509_name_constraints_t - nc, unsigned idx, unsigned *type, - gnutls_datum_t * name) +int gnutls_x509_name_constraints_get_permitted(gnutls_x509_name_constraints_t nc, + unsigned idx, unsigned *type, + gnutls_datum_t *name) { unsigned int i; struct name_constraints_node_st *tmp = nc->permitted; for (i = 0; i < idx; i++) { if (tmp == NULL) - return - gnutls_assert_val - (GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); + return gnutls_assert_val( + GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); tmp = tmp->next; } @@ -1467,18 +1418,16 @@ int gnutls_x509_name_constraints_get_permitted(gnutls_x509_name_constraints_t * Since: 3.3.0 **/ int gnutls_x509_name_constraints_get_excluded(gnutls_x509_name_constraints_t nc, - unsigned idx, - unsigned *type, - gnutls_datum_t * name) + unsigned idx, unsigned *type, + gnutls_datum_t *name) { unsigned int i; struct name_constraints_node_st *tmp = nc->excluded; for (i = 0; i < idx; i++) { if (tmp == NULL) - return - gnutls_assert_val - (GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); + return gnutls_assert_val( + GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); tmp = tmp->next; } diff --git a/lib/x509/ocsp.c b/lib/x509/ocsp.c index 954427bd97..dd8966a75f 100644 --- a/lib/x509/ocsp.c +++ b/lib/x509/ocsp.c @@ -64,7 +64,7 @@ typedef struct gnutls_ocsp_resp_int { * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int gnutls_ocsp_req_init(gnutls_ocsp_req_t * req) +int gnutls_ocsp_req_init(gnutls_ocsp_req_t *req) { gnutls_ocsp_req_t tmp = gnutls_calloc(1, sizeof(gnutls_ocsp_req_int)); int ret; @@ -113,7 +113,7 @@ void gnutls_ocsp_req_deinit(gnutls_ocsp_req_t req) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int gnutls_ocsp_resp_init(gnutls_ocsp_resp_t * resp) +int gnutls_ocsp_resp_init(gnutls_ocsp_resp_t *resp) { gnutls_ocsp_resp_t tmp = gnutls_calloc(1, sizeof(gnutls_ocsp_resp_int)); int ret; @@ -122,16 +122,16 @@ int gnutls_ocsp_resp_init(gnutls_ocsp_resp_t * resp) if (!tmp) return GNUTLS_E_MEMORY_ERROR; - ret = asn1_create_element(_gnutls_get_pkix(), - "PKIX1.OCSPResponse", &tmp->resp); + ret = asn1_create_element(_gnutls_get_pkix(), "PKIX1.OCSPResponse", + &tmp->resp); if (ret != ASN1_SUCCESS) { gnutls_assert(); gnutls_free(tmp); return _gnutls_asn2err(ret); } - ret = asn1_create_element(_gnutls_get_pkix(), - "PKIX1.BasicOCSPResponse", &tmp->basicresp); + ret = asn1_create_element(_gnutls_get_pkix(), "PKIX1.BasicOCSPResponse", + &tmp->basicresp); if (ret != ASN1_SUCCESS) { gnutls_assert(); asn1_delete_structure(&tmp->resp); @@ -180,7 +180,7 @@ void gnutls_ocsp_resp_deinit(gnutls_ocsp_resp_t resp) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int gnutls_ocsp_req_import(gnutls_ocsp_req_t req, const gnutls_datum_t * data) +int gnutls_ocsp_req_import(gnutls_ocsp_req_t req, const gnutls_datum_t *data) { int ret = 0; @@ -225,8 +225,7 @@ int gnutls_ocsp_req_import(gnutls_ocsp_req_t req, const gnutls_datum_t * data) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_ocsp_resp_import(gnutls_ocsp_resp_t resp, const gnutls_datum_t * data) +int gnutls_ocsp_resp_import(gnutls_ocsp_resp_t resp, const gnutls_datum_t *data) { return gnutls_ocsp_resp_import2(resp, data, GNUTLS_X509_FMT_DER); } @@ -246,9 +245,9 @@ gnutls_ocsp_resp_import(gnutls_ocsp_resp_t resp, const gnutls_datum_t * data) * * Since: 3.6.3 **/ -int -gnutls_ocsp_resp_import2(gnutls_ocsp_resp_t resp, - const gnutls_datum_t * data, gnutls_x509_crt_fmt_t fmt) +int gnutls_ocsp_resp_import2(gnutls_ocsp_resp_t resp, + const gnutls_datum_t *data, + gnutls_x509_crt_fmt_t fmt) { int ret = 0; gnutls_datum_t der; @@ -262,9 +261,8 @@ gnutls_ocsp_resp_import2(gnutls_ocsp_resp_t resp, der.size = data->size; if (fmt == GNUTLS_X509_FMT_PEM) { - ret = - gnutls_pem_base64_decode2(BARE_PEM_OCSP_RESPONSE, data, - &der); + ret = gnutls_pem_base64_decode2(BARE_PEM_OCSP_RESPONSE, data, + &der); if (ret < 0) { return gnutls_assert_val(ret); } @@ -311,32 +309,26 @@ gnutls_ocsp_resp_import2(gnutls_ocsp_resp_t resp, goto cleanup; } - ret = - _gnutls_x509_read_value(resp->resp, - "responseBytes.responseType", - &resp->response_type_oid); + ret = _gnutls_x509_read_value(resp->resp, "responseBytes.responseType", + &resp->response_type_oid); if (ret < 0) { gnutls_assert(); goto cleanup; } #define OCSP_BASIC "1.3.6.1.5.5.7.48.1.1" - if (resp->response_type_oid.size == sizeof(OCSP_BASIC) - 1 - && memcmp(resp->response_type_oid.data, OCSP_BASIC, - resp->response_type_oid.size) == 0) { - - ret = - _gnutls_x509_read_value(resp->resp, - "responseBytes.response", - &resp->der); + if (resp->response_type_oid.size == sizeof(OCSP_BASIC) - 1 && + memcmp(resp->response_type_oid.data, OCSP_BASIC, + resp->response_type_oid.size) == 0) { + ret = _gnutls_x509_read_value( + resp->resp, "responseBytes.response", &resp->der); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _asn1_strict_der_decode(&resp->basicresp, resp->der.data, - resp->der.size, NULL); + ret = _asn1_strict_der_decode(&resp->basicresp, resp->der.data, + resp->der.size, NULL); if (ret != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(ret); @@ -348,7 +340,7 @@ gnutls_ocsp_resp_import2(gnutls_ocsp_resp_t resp, } ret = GNUTLS_E_SUCCESS; - cleanup: +cleanup: if (der.data != data->data) gnutls_free(der.data); return ret; @@ -364,7 +356,7 @@ gnutls_ocsp_resp_import2(gnutls_ocsp_resp_t resp, * Returns: In case of failure a negative error code will be * returned, and 0 on success. **/ -int gnutls_ocsp_req_export(gnutls_ocsp_req_const_t req, gnutls_datum_t * data) +int gnutls_ocsp_req_export(gnutls_ocsp_req_const_t req, gnutls_datum_t *data) { int ret; @@ -396,8 +388,7 @@ int gnutls_ocsp_req_export(gnutls_ocsp_req_const_t req, gnutls_datum_t * data) * Returns: In case of failure a negative error code will be * returned, and 0 on success. **/ -int gnutls_ocsp_resp_export(gnutls_ocsp_resp_const_t resp, - gnutls_datum_t * data) +int gnutls_ocsp_resp_export(gnutls_ocsp_resp_const_t resp, gnutls_datum_t *data) { return gnutls_ocsp_resp_export2(resp, data, GNUTLS_X509_FMT_DER); } @@ -416,7 +407,7 @@ int gnutls_ocsp_resp_export(gnutls_ocsp_resp_const_t resp, * Since: 3.6.3 **/ int gnutls_ocsp_resp_export2(gnutls_ocsp_resp_const_t resp, - gnutls_datum_t * data, gnutls_x509_crt_fmt_t fmt) + gnutls_datum_t *data, gnutls_x509_crt_fmt_t fmt) { int ret; gnutls_datum_t der; @@ -492,13 +483,11 @@ int gnutls_ocsp_req_get_version(gnutls_ocsp_req_const_t req) * CertID available %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE will be * returned. **/ -int -gnutls_ocsp_req_get_cert_id(gnutls_ocsp_req_const_t req, - unsigned indx, - gnutls_digest_algorithm_t * digest, - gnutls_datum_t * issuer_name_hash, - gnutls_datum_t * issuer_key_hash, - gnutls_datum_t * serial_number) +int gnutls_ocsp_req_get_cert_id(gnutls_ocsp_req_const_t req, unsigned indx, + gnutls_digest_algorithm_t *digest, + gnutls_datum_t *issuer_name_hash, + gnutls_datum_t *issuer_key_hash, + gnutls_datum_t *serial_number) { gnutls_datum_t sa; char name[MAX_NAME_SIZE]; @@ -598,18 +587,17 @@ gnutls_ocsp_req_get_cert_id(gnutls_ocsp_req_const_t req, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error code is returned. **/ -int -gnutls_ocsp_req_add_cert_id(gnutls_ocsp_req_t req, - gnutls_digest_algorithm_t digest, - const gnutls_datum_t * issuer_name_hash, - const gnutls_datum_t * issuer_key_hash, - const gnutls_datum_t * serial_number) +int gnutls_ocsp_req_add_cert_id(gnutls_ocsp_req_t req, + gnutls_digest_algorithm_t digest, + const gnutls_datum_t *issuer_name_hash, + const gnutls_datum_t *issuer_key_hash, + const gnutls_datum_t *serial_number) { int result; const char *oid; - if (req == NULL || issuer_name_hash == NULL - || issuer_key_hash == NULL || serial_number == NULL) { + if (req == NULL || issuer_name_hash == NULL || + issuer_key_hash == NULL || serial_number == NULL) { gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; } @@ -626,55 +614,54 @@ gnutls_ocsp_req_add_cert_id(gnutls_ocsp_req_t req, return _gnutls_asn2err(result); } - result = asn1_write_value - (req->req, - "tbsRequest.requestList.?LAST.reqCert.hashAlgorithm.algorithm", - oid, 1); + result = asn1_write_value( + req->req, + "tbsRequest.requestList.?LAST.reqCert.hashAlgorithm.algorithm", + oid, 1); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } /* XXX we don't support any algorithm with parameters */ - result = asn1_write_value - (req->req, - "tbsRequest.requestList.?LAST.reqCert.hashAlgorithm.parameters", - ASN1_NULL, ASN1_NULL_SIZE); + result = asn1_write_value( + req->req, + "tbsRequest.requestList.?LAST.reqCert.hashAlgorithm.parameters", + ASN1_NULL, ASN1_NULL_SIZE); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } - result = asn1_write_value - (req->req, - "tbsRequest.requestList.?LAST.reqCert.issuerNameHash", - issuer_name_hash->data, issuer_name_hash->size); + result = asn1_write_value( + req->req, "tbsRequest.requestList.?LAST.reqCert.issuerNameHash", + issuer_name_hash->data, issuer_name_hash->size); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } - result = asn1_write_value - (req->req, - "tbsRequest.requestList.?LAST.reqCert.issuerKeyHash", - issuer_key_hash->data, issuer_key_hash->size); + result = asn1_write_value( + req->req, "tbsRequest.requestList.?LAST.reqCert.issuerKeyHash", + issuer_key_hash->data, issuer_key_hash->size); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } - result = asn1_write_value - (req->req, "tbsRequest.requestList.?LAST.reqCert.serialNumber", - serial_number->data, serial_number->size); + result = asn1_write_value( + req->req, "tbsRequest.requestList.?LAST.reqCert.serialNumber", + serial_number->data, serial_number->size); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } /* XXX add separate function that can add extensions too */ - result = asn1_write_value - (req->req, - "tbsRequest.requestList.?LAST.singleRequestExtensions", NULL, 0); + result = asn1_write_value( + req->req, + "tbsRequest.requestList.?LAST.singleRequestExtensions", NULL, + 0); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -700,10 +687,9 @@ gnutls_ocsp_req_add_cert_id(gnutls_ocsp_req_t req, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error code is returned. **/ -int -gnutls_ocsp_req_add_cert(gnutls_ocsp_req_t req, - gnutls_digest_algorithm_t digest, - gnutls_x509_crt_t issuer, gnutls_x509_crt_t cert) +int gnutls_ocsp_req_add_cert(gnutls_ocsp_req_t req, + gnutls_digest_algorithm_t digest, + gnutls_x509_crt_t issuer, gnutls_x509_crt_t cert) { int ret; gnutls_datum_t sn, tmp, inh, ikh; @@ -717,9 +703,8 @@ gnutls_ocsp_req_add_cert(gnutls_ocsp_req_t req, return GNUTLS_E_INVALID_REQUEST; } - ret = _gnutls_x509_der_encode(cert->cert, - "tbsCertificate.issuer.rdnSequence", - &tmp, 0); + ret = _gnutls_x509_der_encode( + cert->cert, "tbsCertificate.issuer.rdnSequence", &tmp, 0); if (ret != GNUTLS_E_SUCCESS) { gnutls_assert(); return ret; @@ -734,9 +719,9 @@ gnutls_ocsp_req_add_cert(gnutls_ocsp_req_t req, inh.size = inhlen; inh.data = inh_buf; - ret = _gnutls_x509_read_value - (issuer->cert, - "tbsCertificate.subjectPublicKeyInfo.subjectPublicKey", &tmp); + ret = _gnutls_x509_read_value( + issuer->cert, + "tbsCertificate.subjectPublicKeyInfo.subjectPublicKey", &tmp); if (ret != GNUTLS_E_SUCCESS) { gnutls_assert(); return ret; @@ -751,9 +736,8 @@ gnutls_ocsp_req_add_cert(gnutls_ocsp_req_t req, ikh.size = ikhlen; ikh.data = ikh_buf; - ret = - _gnutls_x509_read_value(cert->cert, - "tbsCertificate.serialNumber", &sn); + ret = _gnutls_x509_read_value(cert->cert, "tbsCertificate.serialNumber", + &sn); if (ret != GNUTLS_E_SUCCESS) { gnutls_assert(); return ret; @@ -794,11 +778,9 @@ gnutls_ocsp_req_add_cert(gnutls_ocsp_req_t req, * extension available %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE will * be returned. **/ -int -gnutls_ocsp_req_get_extension(gnutls_ocsp_req_const_t req, - unsigned indx, - gnutls_datum_t * oid, - unsigned int *critical, gnutls_datum_t * data) +int gnutls_ocsp_req_get_extension(gnutls_ocsp_req_const_t req, unsigned indx, + gnutls_datum_t *oid, unsigned int *critical, + gnutls_datum_t *data) { int ret; char str_critical[10]; @@ -868,11 +850,9 @@ gnutls_ocsp_req_get_extension(gnutls_ocsp_req_const_t req, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error code is returned. **/ -int -gnutls_ocsp_req_set_extension(gnutls_ocsp_req_t req, - const char *oid, - unsigned int critical, - const gnutls_datum_t * data) +int gnutls_ocsp_req_set_extension(gnutls_ocsp_req_t req, const char *oid, + unsigned int critical, + const gnutls_datum_t *data) { if (req == NULL || oid == NULL || data == NULL) { gnutls_assert(); @@ -897,9 +877,8 @@ gnutls_ocsp_req_set_extension(gnutls_ocsp_req_t req, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error code is returned. **/ -int -gnutls_ocsp_req_get_nonce(gnutls_ocsp_req_const_t req, - unsigned int *critical, gnutls_datum_t * nonce) +int gnutls_ocsp_req_get_nonce(gnutls_ocsp_req_const_t req, + unsigned int *critical, gnutls_datum_t *nonce) { int ret; gnutls_datum_t tmp; @@ -916,9 +895,8 @@ gnutls_ocsp_req_get_nonce(gnutls_ocsp_req_const_t req, return ret; } - ret = - _gnutls_x509_decode_string(ASN1_ETYPE_OCTET_STRING, tmp.data, - (size_t)tmp.size, nonce, 0); + ret = _gnutls_x509_decode_string(ASN1_ETYPE_OCTET_STRING, tmp.data, + (size_t)tmp.size, nonce, 0); if (ret < 0) { gnutls_assert(); gnutls_free(tmp.data); @@ -943,9 +921,8 @@ gnutls_ocsp_req_get_nonce(gnutls_ocsp_req_const_t req, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error code is returned. **/ -int -gnutls_ocsp_req_set_nonce(gnutls_ocsp_req_t req, - unsigned int critical, const gnutls_datum_t * nonce) +int gnutls_ocsp_req_set_nonce(gnutls_ocsp_req_t req, unsigned int critical, + const gnutls_datum_t *nonce) { int ret; gnutls_datum_t dernonce; @@ -1085,10 +1062,9 @@ int gnutls_ocsp_resp_get_status(gnutls_ocsp_resp_const_t resp) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_ocsp_resp_get_response(gnutls_ocsp_resp_const_t resp, - gnutls_datum_t * response_type_oid, - gnutls_datum_t * response) +int gnutls_ocsp_resp_get_response(gnutls_ocsp_resp_const_t resp, + gnutls_datum_t *response_type_oid, + gnutls_datum_t *response) { int ret; @@ -1098,10 +1074,9 @@ gnutls_ocsp_resp_get_response(gnutls_ocsp_resp_const_t resp, } if (response_type_oid != NULL) { - ret = - _gnutls_x509_read_value(resp->resp, - "responseBytes.responseType", - response_type_oid); + ret = _gnutls_x509_read_value(resp->resp, + "responseBytes.responseType", + response_type_oid); if (ret < 0) { gnutls_assert(); return ret; @@ -1109,9 +1084,8 @@ gnutls_ocsp_resp_get_response(gnutls_ocsp_resp_const_t resp, } if (response != NULL) { - ret = - _gnutls_x509_read_value(resp->resp, - "responseBytes.response", response); + ret = _gnutls_x509_read_value( + resp->resp, "responseBytes.response", response); if (ret < 0) { gnutls_assert(); return ret; @@ -1164,19 +1138,17 @@ int gnutls_ocsp_resp_get_version(gnutls_ocsp_resp_const_t resp) * negative error code is returned. When no data exist it will * return success and set @dn elements to zero. **/ -int -gnutls_ocsp_resp_get_responder(gnutls_ocsp_resp_const_t resp, - gnutls_datum_t * dn) +int gnutls_ocsp_resp_get_responder(gnutls_ocsp_resp_const_t resp, + gnutls_datum_t *dn) { int ret; - ret = - gnutls_ocsp_resp_get_responder2(resp, dn, - GNUTLS_X509_DN_FLAG_COMPAT); + ret = gnutls_ocsp_resp_get_responder2(resp, dn, + GNUTLS_X509_DN_FLAG_COMPAT); if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { dn->data = NULL; dn->size = 0; - return 0; /* for backwards compatibility */ + return 0; /* for backwards compatibility */ } return ret; @@ -1207,9 +1179,8 @@ gnutls_ocsp_resp_get_responder(gnutls_ocsp_resp_const_t resp, * negative error code is returned. When no data exist it will return * %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE. **/ -int -gnutls_ocsp_resp_get_responder2(gnutls_ocsp_resp_const_t resp, - gnutls_datum_t * dn, unsigned flags) +int gnutls_ocsp_resp_get_responder2(gnutls_ocsp_resp_const_t resp, + gnutls_datum_t *dn, unsigned flags) { if (resp == NULL || dn == NULL) { gnutls_assert(); @@ -1220,8 +1191,8 @@ gnutls_ocsp_resp_get_responder2(gnutls_ocsp_resp_const_t resp, dn->size = 0; return _gnutls_x509_get_dn(resp->basicresp, - "tbsResponseData.responderID.byName", - dn, flags); + "tbsResponseData.responderID.byName", dn, + flags); } /** @@ -1240,9 +1211,8 @@ gnutls_ocsp_resp_get_responder2(gnutls_ocsp_resp_const_t resp, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error code is returned. **/ -int -gnutls_ocsp_resp_get_responder_raw_id(gnutls_ocsp_resp_const_t resp, - unsigned type, gnutls_datum_t * raw) +int gnutls_ocsp_resp_get_responder_raw_id(gnutls_ocsp_resp_const_t resp, + unsigned type, gnutls_datum_t *raw) { int ret; @@ -1252,17 +1222,16 @@ gnutls_ocsp_resp_get_responder_raw_id(gnutls_ocsp_resp_const_t resp, } if (type == GNUTLS_OCSP_RESP_ID_KEY) - ret = - _gnutls_x509_read_value(resp->basicresp, - "tbsResponseData.responderID.byKey", - raw); + ret = _gnutls_x509_read_value( + resp->basicresp, "tbsResponseData.responderID.byKey", + raw); else { gnutls_datum_t tmp; /* simply reading a CHOICE of CHOICE value doesn't work in libtasn1 */ - ret = _gnutls_x509_get_raw_field2(resp->basicresp, &resp->der, - "tbsResponseData.responderID.byName", - &tmp); + ret = _gnutls_x509_get_raw_field2( + resp->basicresp, &resp->der, + "tbsResponseData.responderID.byName", &tmp); if (ret >= 0) { int real; /* skip the tag */ @@ -1295,11 +1264,11 @@ gnutls_ocsp_resp_get_responder_raw_id(gnutls_ocsp_resp_const_t resp, } } - if (ret == GNUTLS_E_ASN1_ELEMENT_NOT_FOUND - || ret == GNUTLS_E_ASN1_VALUE_NOT_FOUND) + if (ret == GNUTLS_E_ASN1_ELEMENT_NOT_FOUND || + ret == GNUTLS_E_ASN1_VALUE_NOT_FOUND) return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; - fail: +fail: return ret; } @@ -1320,16 +1289,15 @@ time_t gnutls_ocsp_resp_get_produced(gnutls_ocsp_resp_const_t resp) if (resp == NULL || resp->basicresp == NULL) { gnutls_assert(); - return (time_t) (-1); + return (time_t)(-1); } len = sizeof(ttime) - 1; - ret = - asn1_read_value(resp->basicresp, "tbsResponseData.producedAt", - ttime, &len); + ret = asn1_read_value(resp->basicresp, "tbsResponseData.producedAt", + ttime, &len); if (ret != ASN1_SUCCESS) { gnutls_assert(); - return (time_t) (-1); + return (time_t)(-1); } c_time = _gnutls_x509_generalTime2gtime(ttime); @@ -1351,15 +1319,12 @@ time_t gnutls_ocsp_resp_get_produced(gnutls_ocsp_resp_const_t resp) * * Since: 3.1.3 **/ -int -gnutls_ocsp_resp_check_crt(gnutls_ocsp_resp_const_t resp, - unsigned int indx, gnutls_x509_crt_t crt) +int gnutls_ocsp_resp_check_crt(gnutls_ocsp_resp_const_t resp, unsigned int indx, + gnutls_x509_crt_t crt) { int ret; gnutls_digest_algorithm_t digest; - gnutls_datum_t rdn_hash = { NULL, 0 }, rserial = { - NULL, 0 - }; + gnutls_datum_t rdn_hash = { NULL, 0 }, rserial = { NULL, 0 }; gnutls_datum_t cserial = { NULL, 0 }; gnutls_datum_t dn = { NULL, 0 }; uint8_t cdn_hash[MAX_HASH_SIZE]; @@ -1368,10 +1333,9 @@ gnutls_ocsp_resp_check_crt(gnutls_ocsp_resp_const_t resp, if (resp == NULL) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - ret = - gnutls_ocsp_resp_get_single(resp, indx, &digest, &rdn_hash, - NULL, &rserial, NULL, NULL, NULL, - NULL, NULL); + ret = gnutls_ocsp_resp_get_single(resp, indx, &digest, &rdn_hash, NULL, + &rserial, NULL, NULL, NULL, NULL, + NULL); if (ret < 0) return gnutls_assert_val(ret); @@ -1401,8 +1365,8 @@ gnutls_ocsp_resp_check_crt(gnutls_ocsp_resp_const_t resp, } cserial.size = t; - if (rserial.size != cserial.size - || memcmp(cserial.data, rserial.data, rserial.size) != 0) { + if (rserial.size != cserial.size || + memcmp(cserial.data, rserial.data, rserial.size) != 0) { ret = GNUTLS_E_OCSP_RESPONSE_ERROR; gnutls_assert(); goto cleanup; @@ -1428,7 +1392,7 @@ gnutls_ocsp_resp_check_crt(gnutls_ocsp_resp_const_t resp, ret = 0; - cleanup: +cleanup: gnutls_free(rdn_hash.data); gnutls_free(rserial.data); gnutls_free(cserial.data); @@ -1464,18 +1428,14 @@ gnutls_ocsp_resp_check_crt(gnutls_ocsp_resp_const_t resp, * CertID available %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE will be * returned. **/ -int -gnutls_ocsp_resp_get_single(gnutls_ocsp_resp_const_t resp, - unsigned indx, - gnutls_digest_algorithm_t * digest, - gnutls_datum_t * issuer_name_hash, - gnutls_datum_t * issuer_key_hash, - gnutls_datum_t * serial_number, - unsigned int *cert_status, - time_t * this_update, - time_t * next_update, - time_t * revocation_time, - unsigned int *revocation_reason) +int gnutls_ocsp_resp_get_single(gnutls_ocsp_resp_const_t resp, unsigned indx, + gnutls_digest_algorithm_t *digest, + gnutls_datum_t *issuer_name_hash, + gnutls_datum_t *issuer_key_hash, + gnutls_datum_t *serial_number, + unsigned int *cert_status, time_t *this_update, + time_t *next_update, time_t *revocation_time, + unsigned int *revocation_reason) { char name[MAX_NAME_SIZE]; int ret, result; @@ -1493,9 +1453,10 @@ gnutls_ocsp_resp_get_single(gnutls_ocsp_resp_const_t resp, serial_number->data = NULL; if (digest) { - snprintf(name, sizeof(name), - "tbsResponseData.responses.?%u.certID.hashAlgorithm.algorithm", - indx + 1); + snprintf( + name, sizeof(name), + "tbsResponseData.responses.?%u.certID.hashAlgorithm.algorithm", + indx + 1); len = sizeof(oidtmp); result = asn1_read_value(resp->basicresp, name, oidtmp, &len); if (result == ASN1_ELEMENT_NOT_FOUND) { @@ -1600,7 +1561,7 @@ gnutls_ocsp_resp_get_single(gnutls_ocsp_resp_const_t resp, result = asn1_read_value(resp->basicresp, name, ttime, &len); if (result != ASN1_SUCCESS) { gnutls_assert(); - *next_update = (time_t) (-1); + *next_update = (time_t)(-1); } else *next_update = _gnutls_x509_generalTime2gtime(ttime); } @@ -1608,22 +1569,24 @@ gnutls_ocsp_resp_get_single(gnutls_ocsp_resp_const_t resp, if (revocation_time) { snprintf(name, sizeof(name), "tbsResponseData.responses.?%u.certStatus." - "revoked.revocationTime", indx + 1); + "revoked.revocationTime", + indx + 1); len = sizeof(ttime) - 1; result = asn1_read_value(resp->basicresp, name, ttime, &len); if (result != ASN1_SUCCESS) { gnutls_assert(); - *revocation_time = (time_t) (-1); + *revocation_time = (time_t)(-1); } else *revocation_time = - _gnutls_x509_generalTime2gtime(ttime); + _gnutls_x509_generalTime2gtime(ttime); } /* revocation_reason */ if (revocation_reason) { snprintf(name, sizeof(name), "tbsResponseData.responses.?%u.certStatus." - "revoked.revocationReason", indx + 1); + "revoked.revocationReason", + indx + 1); ret = _gnutls_x509_read_uint(resp->basicresp, name, revocation_reason); @@ -1632,7 +1595,7 @@ gnutls_ocsp_resp_get_single(gnutls_ocsp_resp_const_t resp, } return GNUTLS_E_SUCCESS; - fail: +fail: if (issuer_name_hash) gnutls_free(issuer_name_hash->data); if (issuer_key_hash) @@ -1667,11 +1630,9 @@ gnutls_ocsp_resp_get_single(gnutls_ocsp_resp_const_t resp, * extension available %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE will * be returned. **/ -int -gnutls_ocsp_resp_get_extension(gnutls_ocsp_resp_const_t resp, - unsigned indx, - gnutls_datum_t * oid, - unsigned int *critical, gnutls_datum_t * data) +int gnutls_ocsp_resp_get_extension(gnutls_ocsp_resp_const_t resp, unsigned indx, + gnutls_datum_t *oid, unsigned int *critical, + gnutls_datum_t *data) { int ret; char str_critical[10]; @@ -1743,25 +1704,22 @@ gnutls_ocsp_resp_get_extension(gnutls_ocsp_resp_const_t resp, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error code is returned. **/ -int -gnutls_ocsp_resp_get_nonce(gnutls_ocsp_resp_const_t resp, - unsigned int *critical, gnutls_datum_t * nonce) +int gnutls_ocsp_resp_get_nonce(gnutls_ocsp_resp_const_t resp, + unsigned int *critical, gnutls_datum_t *nonce) { int ret; gnutls_datum_t tmp; - ret = - _gnutls_get_extension(resp->basicresp, - "tbsResponseData.responseExtensions", - GNUTLS_OCSP_NONCE, 0, &tmp, critical); + ret = _gnutls_get_extension(resp->basicresp, + "tbsResponseData.responseExtensions", + GNUTLS_OCSP_NONCE, 0, &tmp, critical); if (ret != GNUTLS_E_SUCCESS) { gnutls_assert(); return ret; } - ret = - _gnutls_x509_decode_string(ASN1_ETYPE_OCTET_STRING, tmp.data, - (size_t)tmp.size, nonce, 0); + ret = _gnutls_x509_decode_string(ASN1_ETYPE_OCTET_STRING, tmp.data, + (size_t)tmp.size, nonce, 0); if (ret < 0) { gnutls_assert(); gnutls_free(tmp.data); @@ -1813,9 +1771,8 @@ int gnutls_ocsp_resp_get_signature_algorithm(gnutls_ocsp_resp_const_t resp) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_ocsp_resp_get_signature(gnutls_ocsp_resp_const_t resp, - gnutls_datum_t * sig) +int gnutls_ocsp_resp_get_signature(gnutls_ocsp_resp_const_t resp, + gnutls_datum_t *sig) { int ret; @@ -1855,9 +1812,8 @@ gnutls_ocsp_resp_get_signature(gnutls_ocsp_resp_const_t resp, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_ocsp_resp_get_certs(gnutls_ocsp_resp_const_t resp, - gnutls_x509_crt_t ** certs, size_t *ncerts) +int gnutls_ocsp_resp_get_certs(gnutls_ocsp_resp_const_t resp, + gnutls_x509_crt_t **certs, size_t *ncerts) { int ret; size_t ctr = 0, i; @@ -1933,7 +1889,7 @@ gnutls_ocsp_resp_get_certs(gnutls_ocsp_resp_const_t resp, return GNUTLS_E_SUCCESS; - error: +error: gnutls_free(c.data); for (i = 0; i < ctr; i++) gnutls_x509_crt_deinit(tmpcerts[i]); @@ -1956,9 +1912,8 @@ static gnutls_x509_crt_t find_signercert(gnutls_ocsp_resp_const_t resp) &riddn); if (rc == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { gnutls_assert(); - rc = gnutls_ocsp_resp_get_responder_raw_id(resp, - GNUTLS_OCSP_RESP_ID_KEY, - &keyid); + rc = gnutls_ocsp_resp_get_responder_raw_id( + resp, GNUTLS_OCSP_RESP_ID_KEY, &keyid); } if (rc != GNUTLS_E_SUCCESS) { gnutls_assert(); @@ -1976,34 +1931,32 @@ static gnutls_x509_crt_t find_signercert(gnutls_ocsp_resp_const_t resp) assert(certs[i] != NULL); _gnutls_cert_log("checking whether signed against", certs[i]); if (keyid.data != NULL) { - uint8_t digest[64]; /* to support longer key IDs */ + uint8_t digest[64]; /* to support longer key IDs */ gnutls_datum_t spki; size_t digest_size = sizeof(digest); int len; - _gnutls_debug_log - ("checking key ID against SPK identifier\n"); + _gnutls_debug_log( + "checking key ID against SPK identifier\n"); /* check subject key identifier as well, some certificates * match that, but not the hash */ - rc = gnutls_x509_crt_get_subject_key_id(certs[i], - digest, - &digest_size, - NULL); - if (rc >= 0 && digest_size == keyid.size - && memcmp(keyid.data, digest, digest_size) == 0) { + rc = gnutls_x509_crt_get_subject_key_id( + certs[i], digest, &digest_size, NULL); + if (rc >= 0 && digest_size == keyid.size && + memcmp(keyid.data, digest, digest_size) == 0) { signercert = certs[i]; goto quit; } - _gnutls_debug_log - ("checking key ID against SPKI hash\n"); + _gnutls_debug_log( + "checking key ID against SPKI hash\n"); /* continue with checking the hash */ - rc = _gnutls_x509_get_raw_field2(certs[i]->cert, - &certs[i]->der, - "tbsCertificate.subjectPublicKeyInfo.subjectPublicKey", - &spki); + rc = _gnutls_x509_get_raw_field2( + certs[i]->cert, &certs[i]->der, + "tbsCertificate.subjectPublicKeyInfo.subjectPublicKey", + &spki); if (rc < 0 || spki.size < 6) { gnutls_assert(); signercert = NULL; @@ -2013,7 +1966,7 @@ static gnutls_x509_crt_t find_signercert(gnutls_ocsp_resp_const_t resp) /* For some reason the protocol requires we skip the * tag, length and number of unused bits. */ - if (spki.data[0] != 0x03) { /* bit string */ + if (spki.data[0] != 0x03) { /* bit string */ gnutls_assert(); signercert = NULL; continue; @@ -2026,7 +1979,7 @@ static gnutls_x509_crt_t find_signercert(gnutls_ocsp_resp_const_t resp) signercert = NULL; continue; } - len += 1 + 1; /* skip unused bits as well */ + len += 1 + 1; /* skip unused bits as well */ if (len >= (int)spki.size) { gnutls_assert(); signercert = NULL; @@ -2051,9 +2004,9 @@ static gnutls_x509_crt_t find_signercert(gnutls_ocsp_resp_const_t resp) _gnutls_debug_log("checking issuer DN\n"); assert(riddn.data != NULL); - if ((certs[i]->raw_dn.size == riddn.size) - && memcmp(riddn.data, certs[i]->raw_dn.data, - riddn.size) == 0) { + if ((certs[i]->raw_dn.size == riddn.size) && + memcmp(riddn.data, certs[i]->raw_dn.data, + riddn.size) == 0) { signercert = certs[i]; goto quit; } @@ -2064,7 +2017,7 @@ static gnutls_x509_crt_t find_signercert(gnutls_ocsp_resp_const_t resp) gnutls_assert(); signercert = NULL; - quit: +quit: gnutls_free(riddn.data); gnutls_free(keyid.data); for (i = 0; i < ncerts; i++) @@ -2074,10 +2027,9 @@ static gnutls_x509_crt_t find_signercert(gnutls_ocsp_resp_const_t resp) return signercert; } -static int -_ocsp_resp_verify_direct(gnutls_ocsp_resp_const_t resp, - gnutls_x509_crt_t signercert, - unsigned int *verify, unsigned int flags) +static int _ocsp_resp_verify_direct(gnutls_ocsp_resp_const_t resp, + gnutls_x509_crt_t signercert, + unsigned int *verify, unsigned int flags) { gnutls_datum_t sig = { NULL }; gnutls_datum_t data = { NULL }; @@ -2136,7 +2088,7 @@ _ocsp_resp_verify_direct(gnutls_ocsp_resp_const_t resp, rc = GNUTLS_E_SUCCESS; - done: +done: gnutls_free(sig.data); gnutls_pubkey_deinit(pubkey); @@ -2167,9 +2119,8 @@ static int check_ocsp_purpose(gnutls_x509_crt_t signercert) for (indx = 0;; indx++) { oidsize = sizeof(oidtmp); - rc = gnutls_x509_crt_get_key_purpose_oid(signercert, indx, - oidtmp, &oidsize, - NULL); + rc = gnutls_x509_crt_get_key_purpose_oid( + signercert, indx, oidtmp, &oidsize, NULL); if (rc == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { gnutls_assert(); @@ -2215,10 +2166,9 @@ static int check_ocsp_purpose(gnutls_x509_crt_t signercert) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_ocsp_resp_verify_direct(gnutls_ocsp_resp_const_t resp, - gnutls_x509_crt_t issuer, - unsigned int *verify, unsigned int flags) +int gnutls_ocsp_resp_verify_direct(gnutls_ocsp_resp_const_t resp, + gnutls_x509_crt_t issuer, + unsigned int *verify, unsigned int flags) { gnutls_x509_crt_t signercert; int rc; @@ -2232,7 +2182,6 @@ gnutls_ocsp_resp_verify_direct(gnutls_ocsp_resp_const_t resp, if (!signercert) { signercert = issuer; } else if (!gnutls_x509_crt_equals(signercert, issuer)) { - /* response contains a signer. Verify him */ unsigned int vtmp; @@ -2263,7 +2212,7 @@ gnutls_ocsp_resp_verify_direct(gnutls_ocsp_resp_const_t resp, rc = _ocsp_resp_verify_direct(resp, signercert, verify, flags); - done: +done: if (signercert != issuer) gnutls_x509_crt_deinit(signercert); @@ -2300,10 +2249,9 @@ gnutls_ocsp_resp_verify_direct(gnutls_ocsp_resp_const_t resp, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_ocsp_resp_verify(gnutls_ocsp_resp_const_t resp, - gnutls_x509_trust_list_t trustlist, - unsigned int *verify, unsigned int flags) +int gnutls_ocsp_resp_verify(gnutls_ocsp_resp_const_t resp, + gnutls_x509_trust_list_t trustlist, + unsigned int *verify, unsigned int flags) { gnutls_x509_crt_t signercert = NULL; int rc; @@ -2321,9 +2269,8 @@ gnutls_ocsp_resp_verify(gnutls_ocsp_resp_const_t resp, if (!signercert) { gnutls_datum_t dn; - rc = gnutls_ocsp_resp_get_responder_raw_id(resp, - GNUTLS_OCSP_RESP_ID_DN, - &dn); + rc = gnutls_ocsp_resp_get_responder_raw_id( + resp, GNUTLS_OCSP_RESP_ID_DN, &dn); if (rc < 0) { gnutls_assert(); *verify = GNUTLS_OCSP_VERIFY_SIGNER_NOT_FOUND; @@ -2357,11 +2304,9 @@ gnutls_ocsp_resp_verify(gnutls_ocsp_resp_const_t resp, gnutls_assert(); - rc = gnutls_x509_trust_list_verify_crt2(trustlist, - &signercert, 1, - &vdata, 1, - flags, &vtmp, - NULL); + rc = gnutls_x509_trust_list_verify_crt2( + trustlist, &signercert, 1, &vdata, 1, flags, + &vtmp, NULL); if (rc != GNUTLS_E_SUCCESS) { gnutls_assert(); goto done; @@ -2378,7 +2323,7 @@ gnutls_ocsp_resp_verify(gnutls_ocsp_resp_const_t resp, if (rc < 0) { gnutls_assert(); *verify = - GNUTLS_OCSP_VERIFY_SIGNER_KEYUSAGE_ERROR; + GNUTLS_OCSP_VERIFY_SIGNER_KEYUSAGE_ERROR; rc = GNUTLS_E_SUCCESS; goto done; } @@ -2387,7 +2332,7 @@ gnutls_ocsp_resp_verify(gnutls_ocsp_resp_const_t resp, rc = _ocsp_resp_verify_direct(resp, signercert, verify, flags); - done: +done: gnutls_x509_crt_deinit(signercert); return rc; @@ -2417,11 +2362,11 @@ gnutls_ocsp_resp_verify(gnutls_ocsp_resp_const_t resp, * * Since: 3.6.3 **/ -int -gnutls_ocsp_resp_list_import2(gnutls_ocsp_resp_t ** ocsps, - unsigned int *size, - const gnutls_datum_t * resp_data, - gnutls_x509_crt_fmt_t format, unsigned int flags) +int gnutls_ocsp_resp_list_import2(gnutls_ocsp_resp_t **ocsps, + unsigned int *size, + const gnutls_datum_t *resp_data, + gnutls_x509_crt_fmt_t format, + unsigned int flags) { gnutls_ocsp_resp_t resp = NULL; gnutls_ocsp_resp_t *new_ocsps; @@ -2438,17 +2383,15 @@ gnutls_ocsp_resp_list_import2(gnutls_ocsp_resp_t ** ocsps, p.data = memmem(p.data, p.size, PEM_OCSP_RESPONSE, sizeof(PEM_OCSP_RESPONSE) - 1); if (p.data == NULL) { - ret = - gnutls_assert_val - (GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); + ret = gnutls_assert_val( + GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); goto cleanup; } p.size -= p.data - resp_data->data; if (p.size <= 0) { - ret = - gnutls_assert_val - (GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); + ret = gnutls_assert_val( + GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); goto cleanup; } @@ -2459,9 +2402,8 @@ gnutls_ocsp_resp_list_import2(gnutls_ocsp_resp_t ** ocsps, goto fail; } - ret = - gnutls_ocsp_resp_import2(resp, &p, - GNUTLS_X509_FMT_PEM); + ret = gnutls_ocsp_resp_import2(resp, &p, + GNUTLS_X509_FMT_PEM); if (ret < 0) { gnutls_assert(); goto fail; @@ -2472,10 +2414,8 @@ gnutls_ocsp_resp_list_import2(gnutls_ocsp_resp_t ** ocsps, goto fail; } - new_ocsps = _gnutls_reallocarray(*ocsps, - *size + 1, - sizeof - (gnutls_ocsp_resp_t)); + new_ocsps = _gnutls_reallocarray( + *ocsps, *size + 1, sizeof(gnutls_ocsp_resp_t)); if (new_ocsps == NULL) { resp = NULL; gnutls_assert(); @@ -2503,9 +2443,8 @@ gnutls_ocsp_resp_list_import2(gnutls_ocsp_resp_t ** ocsps, return gnutls_assert_val(ret); } - ret = - gnutls_ocsp_resp_import2(resp, resp_data, - GNUTLS_X509_FMT_DER); + ret = gnutls_ocsp_resp_import2(resp, resp_data, + GNUTLS_X509_FMT_DER); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -2526,13 +2465,13 @@ gnutls_ocsp_resp_list_import2(gnutls_ocsp_resp_t ** ocsps, ret = 0; goto cleanup; - fail: +fail: for (i = 0; i < *size; i++) { gnutls_ocsp_resp_deinit((*ocsps)[i]); } gnutls_free(*ocsps); - cleanup: +cleanup: if (resp) gnutls_ocsp_resp_deinit(resp); return ret; @@ -2550,12 +2489,12 @@ time_t _gnutls_ocsp_get_validity(gnutls_ocsp_resp_const_t resp) int ret; ret = gnutls_ocsp_resp_get_single(resp, 0, NULL, NULL, NULL, NULL, - &cert_status, &vtime, &ntime, - &rtime, NULL); + &cert_status, &vtime, &ntime, &rtime, + NULL); if (ret < 0) { - _gnutls_debug_log - ("There was an error parsing the OCSP response: %s\n", - gnutls_strerror(ret)); + _gnutls_debug_log( + "There was an error parsing the OCSP response: %s\n", + gnutls_strerror(ret)); return gnutls_assert_val(-1); } @@ -2605,39 +2544,37 @@ const char *_gnutls_ocsp_verify_status_to_str(gnutls_ocsp_verify_reason_t r, _("The OCSP response is trusted. ")); if (r & GNUTLS_OCSP_VERIFY_SIGNER_NOT_FOUND) - _gnutls_buffer_append_str(&str, - _ - ("The OCSP response's signer could not be found. ")); + _gnutls_buffer_append_str( + &str, + _("The OCSP response's signer could not be found. ")); if (r & GNUTLS_OCSP_VERIFY_SIGNER_KEYUSAGE_ERROR) - _gnutls_buffer_append_str(&str, - _ - ("Error in the signer's key usageflags. ")); + _gnutls_buffer_append_str( + &str, _("Error in the signer's key usageflags. ")); if (r & GNUTLS_OCSP_VERIFY_UNTRUSTED_SIGNER) - _gnutls_buffer_append_str(&str, - _ - ("The OCSP response's signer is not trusted. ")); + _gnutls_buffer_append_str( + &str, _("The OCSP response's signer is not trusted. ")); if (r & GNUTLS_OCSP_VERIFY_INSECURE_ALGORITHM) - _gnutls_buffer_append_str(&str, - _ - ("The OCSP response depends on insecure algorithms. ")); + _gnutls_buffer_append_str( + &str, + _("The OCSP response depends on insecure algorithms. ")); if (r & GNUTLS_OCSP_VERIFY_SIGNATURE_FAILURE) - _gnutls_buffer_append_str(&str, - _ - ("The OCSP response's signature cannot be validated. ")); + _gnutls_buffer_append_str( + &str, + _("The OCSP response's signature cannot be validated. ")); if (r & GNUTLS_OCSP_VERIFY_CERT_NOT_ACTIVATED) - _gnutls_buffer_append_str(&str, - _ - ("The OCSP response's signer's certificate is not activated. ")); + _gnutls_buffer_append_str( + &str, + _("The OCSP response's signer's certificate is not activated. ")); if (r & GNUTLS_OCSP_VERIFY_CERT_EXPIRED) - _gnutls_buffer_append_str(&str, - _ - ("The OCSP response's signer's certificate is expired. ")); + _gnutls_buffer_append_str( + &str, + _("The OCSP response's signer's certificate is expired. ")); ret = _gnutls_buffer_to_datum(&str, &buf, 1); if (ret < 0) diff --git a/lib/x509/ocsp.h b/lib/x509/ocsp.h index 8607a01ed5..98127dcffd 100644 --- a/lib/x509/ocsp.h +++ b/lib/x509/ocsp.h @@ -21,18 +21,18 @@ */ #ifndef GNUTLS_LIB_X509_OCSP_H -# define GNUTLS_LIB_X509_OCSP_H +#define GNUTLS_LIB_X509_OCSP_H /* Online Certificate Status Protocol - RFC 2560 */ -# include +#include /* fifteen days */ -# define MAX_OCSP_VALIDITY_SECS (15*60*60*24) +#define MAX_OCSP_VALIDITY_SECS (15 * 60 * 60 * 24) time_t _gnutls_ocsp_get_validity(gnutls_ocsp_resp_const_t resp); -# define MAX_OCSP_MSG_SIZE 128 +#define MAX_OCSP_MSG_SIZE 128 const char *_gnutls_ocsp_verify_status_to_str(gnutls_ocsp_verify_reason_t r, char out[MAX_OCSP_MSG_SIZE]); -#endif /* GNUTLS_LIB_X509_OCSP_H */ +#endif /* GNUTLS_LIB_X509_OCSP_H */ diff --git a/lib/x509/ocsp_output.c b/lib/x509/ocsp_output.c index cdab4e866b..5fbbf86df8 100644 --- a/lib/x509/ocsp_output.c +++ b/lib/x509/ocsp_output.c @@ -35,7 +35,7 @@ #define addf _gnutls_buffer_append_printf #define adds _gnutls_buffer_append_str -static void print_req(gnutls_buffer_st * str, gnutls_ocsp_req_const_t req) +static void print_req(gnutls_buffer_st *str, gnutls_ocsp_req_const_t req) { int ret; unsigned indx; @@ -58,9 +58,8 @@ static void print_req(gnutls_buffer_st * str, gnutls_ocsp_req_const_t req) gnutls_digest_algorithm_t digest; gnutls_datum_t in, ik, sn; - ret = - gnutls_ocsp_req_get_cert_id(req, indx, &digest, &in, - &ik, &sn); + ret = gnutls_ocsp_req_get_cert_id(req, indx, &digest, &in, &ik, + &sn); if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) break; addf(str, "\t\tCertificate ID:\n"); @@ -96,9 +95,8 @@ static void print_req(gnutls_buffer_st * str, gnutls_ocsp_req_const_t req) unsigned int critical; gnutls_datum_t data; - ret = - gnutls_ocsp_req_get_extension(req, indx, &oid, - &critical, &data); + ret = gnutls_ocsp_req_get_extension(req, indx, &oid, &critical, + &data); if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) break; else if (ret != GNUTLS_E_SUCCESS) { @@ -127,8 +125,8 @@ static void print_req(gnutls_buffer_st * str, gnutls_ocsp_req_const_t req) gnutls_free(nonce.data); } } else { - addf(str, "\t\tUnknown extension %s (%s):\n", - oid.data, critical ? "critical" : "not critical"); + addf(str, "\t\tUnknown extension %s (%s):\n", oid.data, + critical ? "critical" : "not critical"); adds(str, _("\t\t\tASCII: ")); _gnutls_buffer_asciiprint(str, (char *)data.data, @@ -165,9 +163,9 @@ static void print_req(gnutls_buffer_st * str, gnutls_ocsp_req_const_t req) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_ocsp_req_print(gnutls_ocsp_req_const_t req, - gnutls_ocsp_print_formats_t format, gnutls_datum_t * out) +int gnutls_ocsp_req_print(gnutls_ocsp_req_const_t req, + gnutls_ocsp_print_formats_t format, + gnutls_datum_t *out) { gnutls_buffer_st str; int rc; @@ -192,9 +190,8 @@ gnutls_ocsp_req_print(gnutls_ocsp_req_const_t req, return GNUTLS_E_SUCCESS; } -static void -print_resp(gnutls_buffer_st * str, gnutls_ocsp_resp_const_t resp, - gnutls_ocsp_print_formats_t format) +static void print_resp(gnutls_buffer_st *str, gnutls_ocsp_resp_const_t resp, + gnutls_ocsp_print_formats_t format) { int ret; unsigned indx; @@ -250,13 +247,13 @@ print_resp(gnutls_buffer_st * str, gnutls_ocsp_resp_const_t resp, adds(str, "\tResponse Type: "); #define OCSP_BASIC "1.3.6.1.5.5.7.48.1.1" - if (oid.size == sizeof(OCSP_BASIC) - 1 - && memcmp(oid.data, OCSP_BASIC, oid.size) == 0) { + if (oid.size == sizeof(OCSP_BASIC) - 1 && + memcmp(oid.data, OCSP_BASIC, oid.size) == 0) { adds(str, "Basic OCSP Response\n"); gnutls_free(oid.data); } else { - addf(str, "Unknown response type (%.*s)\n", - oid.size, oid.data); + addf(str, "Unknown response type (%.*s)\n", oid.size, + oid.data); gnutls_free(oid.data); return; } @@ -279,10 +276,8 @@ print_resp(gnutls_buffer_st * str, gnutls_ocsp_resp_const_t resp, ret = gnutls_ocsp_resp_get_responder2(resp, &dn, 0); if (ret < 0) { if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { - ret = - gnutls_ocsp_resp_get_responder_raw_id(resp, - GNUTLS_OCSP_RESP_ID_KEY, - &dn); + ret = gnutls_ocsp_resp_get_responder_raw_id( + resp, GNUTLS_OCSP_RESP_ID_KEY, &dn); if (ret >= 0) { addf(str, _("\tResponder Key ID: ")); @@ -307,13 +302,12 @@ print_resp(gnutls_buffer_st * str, gnutls_ocsp_resp_const_t resp, struct tm t; time_t tim = gnutls_ocsp_resp_get_produced(resp); - if (tim == (time_t) - 1) + if (tim == (time_t)-1) addf(str, "error: ocsp_resp_get_produced\n"); else if (gmtime_r(&tim, &t) == NULL) addf(str, "error: gmtime_r (%ld)\n", (unsigned long)tim); - else if (strftime(s, max, "%a %b %d %H:%M:%S UTC %Y", &t) - == 0) + else if (strftime(s, max, "%a %b %d %H:%M:%S UTC %Y", &t) == 0) addf(str, "error: strftime (%ld)\n", (unsigned long)tim); else @@ -330,12 +324,9 @@ print_resp(gnutls_buffer_st * str, gnutls_ocsp_resp_const_t resp, time_t revocation_time; unsigned int revocation_reason; - ret = gnutls_ocsp_resp_get_single(resp, - indx, - &digest, &in, &ik, &sn, - &cert_status, - &this_update, - &next_update, + ret = gnutls_ocsp_resp_get_single(resp, indx, &digest, &in, &ik, + &sn, &cert_status, + &this_update, &next_update, &revocation_time, &revocation_reason); if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) @@ -399,13 +390,13 @@ print_resp(gnutls_buffer_st * str, gnutls_ocsp_resp_const_t resp, size_t max = sizeof(s); struct tm t; - if (revocation_time == (time_t) - 1) + if (revocation_time == (time_t)-1) addf(str, "error: revocation_time\n"); else if (gmtime_r(&revocation_time, &t) == NULL) addf(str, "error: gmtime_r (%ld)\n", (unsigned long)revocation_time); - else if (strftime - (s, max, "%a %b %d %H:%M:%S UTC %Y", &t) == 0) + else if (strftime(s, max, "%a %b %d %H:%M:%S UTC %Y", + &t) == 0) addf(str, "error: strftime (%ld)\n", (unsigned long)revocation_time); else @@ -417,13 +408,13 @@ print_resp(gnutls_buffer_st * str, gnutls_ocsp_resp_const_t resp, size_t max = sizeof(s); struct tm t; - if (this_update == (time_t) - 1) + if (this_update == (time_t)-1) addf(str, "error: this_update\n"); else if (gmtime_r(&this_update, &t) == NULL) addf(str, "error: gmtime_r (%ld)\n", (unsigned long)this_update); - else if (strftime - (s, max, "%a %b %d %H:%M:%S UTC %Y", &t) == 0) + else if (strftime(s, max, "%a %b %d %H:%M:%S UTC %Y", + &t) == 0) addf(str, "error: strftime (%ld)\n", (unsigned long)this_update); else @@ -435,13 +426,13 @@ print_resp(gnutls_buffer_st * str, gnutls_ocsp_resp_const_t resp, size_t max = sizeof(s); struct tm t; - if (next_update != (time_t) - 1) { + if (next_update != (time_t)-1) { if (gmtime_r(&next_update, &t) == NULL) addf(str, "error: gmtime_r (%ld)\n", (unsigned long)next_update); - else if (strftime - (s, max, "%a %b %d %H:%M:%S UTC %Y", - &t) == 0) + else if (strftime(s, max, + "%a %b %d %H:%M:%S UTC %Y", + &t) == 0) addf(str, "error: strftime (%ld)\n", (unsigned long)next_update); else @@ -459,9 +450,8 @@ print_resp(gnutls_buffer_st * str, gnutls_ocsp_resp_const_t resp, unsigned int critical; gnutls_datum_t data; - ret = - gnutls_ocsp_resp_get_extension(resp, indx, &oid, - &critical, &data); + ret = gnutls_ocsp_resp_get_extension(resp, indx, &oid, + &critical, &data); if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) break; else if (ret != GNUTLS_E_SUCCESS) { @@ -488,8 +478,8 @@ print_resp(gnutls_buffer_st * str, gnutls_ocsp_resp_const_t resp, gnutls_free(nonce.data); } } else { - addf(str, "\t\tUnknown extension %s (%s):\n", - oid.data, critical ? "critical" : "not critical"); + addf(str, "\t\tUnknown extension %s (%s):\n", oid.data, + critical ? "critical" : "not critical"); adds(str, _("\t\t\tASCII: ")); _gnutls_buffer_asciiprint(str, (char *)data.data, @@ -504,7 +494,6 @@ print_resp(gnutls_buffer_st * str, gnutls_ocsp_resp_const_t resp, gnutls_free(oid.data); gnutls_free(data.data); - } ret = gnutls_ocsp_resp_get_signature_algorithm(resp); @@ -518,9 +507,8 @@ print_resp(gnutls_buffer_st * str, gnutls_ocsp_resp_const_t resp, addf(str, _("\tSignature Algorithm: %s\n"), name); } if (ret != GNUTLS_SIGN_UNKNOWN && gnutls_sign_is_secure(ret) == 0) { - adds(str, - _("warning: signed using a broken signature " - "algorithm that can be forged.\n")); + adds(str, _("warning: signed using a broken signature " + "algorithm that can be forged.\n")); } if (format == GNUTLS_OCSP_PRINT_FULL) { @@ -553,10 +541,8 @@ print_resp(gnutls_buffer_st * str, gnutls_ocsp_resp_const_t resp, for (i = 0; i < ncerts; i++) { size_t s = 0; - ret = - gnutls_x509_crt_print(certs[i], - GNUTLS_CRT_PRINT_FULL, - &out); + ret = gnutls_x509_crt_print( + certs[i], GNUTLS_CRT_PRINT_FULL, &out); if (ret < 0) addf(str, "error: crt_print: %s\n", gnutls_strerror(ret)); @@ -565,32 +551,28 @@ print_resp(gnutls_buffer_st * str, gnutls_ocsp_resp_const_t resp, gnutls_free(out.data); } - ret = - gnutls_x509_crt_export(certs[i], - GNUTLS_X509_FMT_PEM, - NULL, &s); + ret = gnutls_x509_crt_export( + certs[i], GNUTLS_X509_FMT_PEM, NULL, + &s); if (ret != GNUTLS_E_SHORT_MEMORY_BUFFER) - addf(str, - "error: crt_export: %s\n", + addf(str, "error: crt_export: %s\n", gnutls_strerror(ret)); else { out.data = gnutls_malloc(s); if (out.data == NULL) - addf(str, - "error: malloc: %s\n", - gnutls_strerror - (GNUTLS_E_MEMORY_ERROR)); + addf(str, "error: malloc: %s\n", + gnutls_strerror( + GNUTLS_E_MEMORY_ERROR)); else { - ret = - gnutls_x509_crt_export - (certs[i], - GNUTLS_X509_FMT_PEM, - out.data, &s); + ret = gnutls_x509_crt_export( + certs[i], + GNUTLS_X509_FMT_PEM, + out.data, &s); if (ret < 0) addf(str, "error: crt_export: %s\n", - gnutls_strerror - (ret)); + gnutls_strerror( + ret)); else { out.size = s; addf(str, "%.*s", @@ -625,9 +607,9 @@ print_resp(gnutls_buffer_st * str, gnutls_ocsp_resp_const_t resp, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_ocsp_resp_print(gnutls_ocsp_resp_const_t resp, - gnutls_ocsp_print_formats_t format, gnutls_datum_t * out) +int gnutls_ocsp_resp_print(gnutls_ocsp_resp_const_t resp, + gnutls_ocsp_print_formats_t format, + gnutls_datum_t *out) { gnutls_buffer_st str; int rc; diff --git a/lib/x509/output.c b/lib/x509/output.c index 182155fda6..a984652115 100644 --- a/lib/x509/output.c +++ b/lib/x509/output.c @@ -36,11 +36,11 @@ #define addf _gnutls_buffer_append_printf #define adds _gnutls_buffer_append_str -#define NON_NULL(x) (((x)!=NULL)?((char*)(x)):"") -#define ERROR_STR (char*) "(error)" +#define NON_NULL(x) (((x) != NULL) ? ((char *)(x)) : "") +#define ERROR_STR (char *)"(error)" -static void print_idn_name(gnutls_buffer_st * str, const char *prefix, - const char *type, gnutls_datum_t * name) +static void print_idn_name(gnutls_buffer_st *str, const char *prefix, + const char *type, gnutls_datum_t *name) { unsigned printable = 1; unsigned is_printed = 0; @@ -57,9 +57,8 @@ static void print_idn_name(gnutls_buffer_st * str, const char *prefix, is_printed = 1; } else if (name->data != NULL) { if (strstr((char *)name->data, "xn--") != NULL) { - ret = - gnutls_idna_reverse_map((char *)name->data, - name->size, &out, 0); + ret = gnutls_idna_reverse_map((char *)name->data, + name->size, &out, 0); if (ret >= 0) { addf(str, _("%s%s: %.*s (%s)\n"), prefix, type, name->size, NON_NULL(name->data), @@ -76,8 +75,8 @@ static void print_idn_name(gnutls_buffer_st * str, const char *prefix, } } -static void print_idn_email(gnutls_buffer_st * str, const char *prefix, - const char *type, gnutls_datum_t * name) +static void print_idn_email(gnutls_buffer_st *str, const char *prefix, + const char *type, gnutls_datum_t *name) { unsigned printable = 1; unsigned is_printed = 0; @@ -94,9 +93,8 @@ static void print_idn_email(gnutls_buffer_st * str, const char *prefix, is_printed = 1; } else if (name->data != NULL) { if (strstr((char *)name->data, "xn--") != NULL) { - ret = - _gnutls_idna_email_reverse_map((char *)name->data, - name->size, &out); + ret = _gnutls_idna_email_reverse_map((char *)name->data, + name->size, &out); if (ret >= 0) { addf(str, _("%s%s: %.*s (%s)\n"), prefix, type, name->size, NON_NULL(name->data), @@ -113,23 +111,20 @@ static void print_idn_email(gnutls_buffer_st * str, const char *prefix, } } -static void -print_name(gnutls_buffer_st * str, const char *prefix, unsigned type, - gnutls_datum_t * name, unsigned ip_is_cidr) +static void print_name(gnutls_buffer_st *str, const char *prefix, unsigned type, + gnutls_datum_t *name, unsigned ip_is_cidr) { char *sname = (char *)name->data; char str_ip[64]; const char *p; - if ((type == GNUTLS_SAN_DNSNAME || type == GNUTLS_SAN_OTHERNAME_XMPP - || type == GNUTLS_SAN_OTHERNAME_KRB5PRINCIPAL - || type == GNUTLS_SAN_OTHERNAME_MSUSERPRINCIPAL - || type == GNUTLS_SAN_RFC822NAME - || type == GNUTLS_SAN_URI) && sname != NULL - && strlen(sname) != name->size) { - adds(str, - _("warning: SAN contains an embedded NUL, " - "replacing with '!'\n")); + if ((type == GNUTLS_SAN_DNSNAME || type == GNUTLS_SAN_OTHERNAME_XMPP || + type == GNUTLS_SAN_OTHERNAME_KRB5PRINCIPAL || + type == GNUTLS_SAN_OTHERNAME_MSUSERPRINCIPAL || + type == GNUTLS_SAN_RFC822NAME || type == GNUTLS_SAN_URI) && + sname != NULL && strlen(sname) != name->size) { + adds(str, _("warning: SAN contains an embedded NUL, " + "replacing with '!'\n")); while (strlen(sname) < name->size) name->data[strlen(sname)] = '!'; } @@ -311,7 +306,7 @@ static char *crl_get_sign_name(gnutls_x509_crl_t crl, int *algo) return gnutls_strdup(oid); } -static void print_proxy(gnutls_buffer_st * str, gnutls_datum_t * der) +static void print_proxy(gnutls_buffer_st *str, gnutls_datum_t *der) { int pathlen; char *policyLanguage; @@ -346,8 +341,8 @@ static void print_proxy(gnutls_buffer_st * str, gnutls_datum_t * der) gnutls_free(policyLanguage); } -static void print_nc(gnutls_buffer_st * str, const char *prefix, - gnutls_datum_t * der) +static void print_nc(gnutls_buffer_st *str, const char *prefix, + gnutls_datum_t *der) { gnutls_x509_name_constraints_t nc; int ret; @@ -367,9 +362,8 @@ static void print_nc(gnutls_buffer_st * str, const char *prefix, snprintf(new_prefix, sizeof(new_prefix), "%s\t\t\t\t", prefix); do { - ret = - gnutls_x509_name_constraints_get_permitted(nc, idx++, &type, - &name); + ret = gnutls_x509_name_constraints_get_permitted(nc, idx++, + &type, &name); if (ret >= 0) { if (idx == 1) @@ -381,9 +375,8 @@ static void print_nc(gnutls_buffer_st * str, const char *prefix, idx = 0; do { - ret = - gnutls_x509_name_constraints_get_excluded(nc, idx++, &type, - &name); + ret = gnutls_x509_name_constraints_get_excluded(nc, idx++, + &type, &name); if (ret >= 0) { if (idx == 1) @@ -393,11 +386,11 @@ static void print_nc(gnutls_buffer_st * str, const char *prefix, } } while (ret == 0); - cleanup: +cleanup: gnutls_x509_name_constraints_deinit(nc); } -static void print_aia(gnutls_buffer_st * str, const gnutls_datum_t * der) +static void print_aia(gnutls_buffer_st *str, const gnutls_datum_t *der) { int err; int seq; @@ -439,11 +432,11 @@ static void print_aia(gnutls_buffer_st * str, const gnutls_datum_t * der) print_name(str, "", san_type, &san, 0); } - cleanup: +cleanup: gnutls_x509_aia_deinit(aia); } -static void print_ski(gnutls_buffer_st * str, gnutls_datum_t * der) +static void print_ski(gnutls_buffer_st *str, gnutls_datum_t *der) { gnutls_datum_t id = { NULL, 0 }; int err; @@ -462,7 +455,7 @@ static void print_ski(gnutls_buffer_st * str, gnutls_datum_t * der) gnutls_free(id.data); } -static void print_time(gnutls_buffer_st * str, time_t timestamp) +static void print_time(gnutls_buffer_st *str, time_t timestamp) { char s[42]; size_t max = sizeof(s); @@ -479,7 +472,7 @@ static void print_time(gnutls_buffer_st * str, time_t timestamp) addf(str, "%s\n", s); } -static void print_scts(gnutls_buffer_st * str, const gnutls_datum_t * der, +static void print_scts(gnutls_buffer_st *str, const gnutls_datum_t *der, const char *prefix) { int retval; @@ -518,9 +511,8 @@ static void print_scts(gnutls_buffer_st * str, const gnutls_datum_t * der, continue; } - retval = gnutls_x509_ct_sct_get(scts, i, - ×tamp, - &logid, &sigalg, &sig); + retval = gnutls_x509_ct_sct_get(scts, i, ×tamp, &logid, + &sigalg, &sig); if (retval < 0) { addf(str, "error: could not get SCT info: %s\n", gnutls_strerror(retval)); @@ -533,10 +525,11 @@ static void print_scts(gnutls_buffer_st * str, const gnutls_datum_t * der, addf(str, "\n"); addf(str, _("%s\t\t\t\tTime: "), prefix); print_time(str, timestamp); - addf(str, _("%s\t\t\t\tExtensions: none\n"), /* there are no extensions defined for v1 */ + addf(str, + _("%s\t\t\t\tExtensions: none\n"), /* there are no extensions defined for v1 */ prefix); - addf(str, _("%s\t\t\t\tSignature algorithm: %s\n"), - prefix, gnutls_sign_get_name(sigalg)); + addf(str, _("%s\t\t\t\tSignature algorithm: %s\n"), prefix, + gnutls_sign_get_name(sigalg)); addf(str, _("%s\t\t\t\tSignature: "), prefix); _gnutls_buffer_hexprint(str, sig.data, sig.size); addf(str, "\n"); @@ -547,7 +540,7 @@ static void print_scts(gnutls_buffer_st * str, const gnutls_datum_t * der, logid.data = NULL; } - cleanup: +cleanup: _gnutls_free_datum(&sig); _gnutls_free_datum(&logid); gnutls_x509_ext_ct_scts_deinit(scts); @@ -561,16 +554,14 @@ typedef union { gnutls_x509_crq_t crq; } cert_type_t; -static void print_aki_gn_serial(gnutls_buffer_st * str, gnutls_x509_aki_t aki) +static void print_aki_gn_serial(gnutls_buffer_st *str, gnutls_x509_aki_t aki) { gnutls_datum_t san, other_oid, serial; unsigned int alt_type; int err; - err = - gnutls_x509_aki_get_cert_issuer(aki, - 0, &alt_type, &san, &other_oid, - &serial); + err = gnutls_x509_aki_get_cert_issuer(aki, 0, &alt_type, &san, + &other_oid, &serial); if (err == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { return; } else if (err < 0) { @@ -586,7 +577,7 @@ static void print_aki_gn_serial(gnutls_buffer_st * str, gnutls_x509_aki_t aki) adds(str, "\n"); } -static void print_aki(gnutls_buffer_st * str, gnutls_datum_t * der) +static void print_aki(gnutls_buffer_st *str, gnutls_datum_t *der) { int err; gnutls_x509_aki_t aki; @@ -623,13 +614,12 @@ static void print_aki(gnutls_buffer_st * str, gnutls_datum_t * der) _gnutls_buffer_hexprint(str, id.data, id.size); adds(str, "\n"); - cleanup: +cleanup: gnutls_x509_aki_deinit(aki); } -static void -print_key_usage2(gnutls_buffer_st * str, const char *prefix, - unsigned int key_usage) +static void print_key_usage2(gnutls_buffer_st *str, const char *prefix, + unsigned int key_usage) { if (key_usage & GNUTLS_KEY_DIGITAL_SIGNATURE) addf(str, _("%sDigital signature.\n"), prefix); @@ -651,9 +641,8 @@ print_key_usage2(gnutls_buffer_st * str, const char *prefix, addf(str, _("%sKey decipher only.\n"), prefix); } -static void -print_key_usage(gnutls_buffer_st * str, const char *prefix, - gnutls_datum_t * der) +static void print_key_usage(gnutls_buffer_st *str, const char *prefix, + gnutls_datum_t *der) { unsigned int key_usage; int err; @@ -667,9 +656,9 @@ print_key_usage(gnutls_buffer_st * str, const char *prefix, print_key_usage2(str, prefix, key_usage); } -static void -print_private_key_usage_period(gnutls_buffer_st * str, const char *prefix, - gnutls_datum_t * der) +static void print_private_key_usage_period(gnutls_buffer_st *str, + const char *prefix, + gnutls_datum_t *der) { time_t activation, expiration; int err; @@ -677,9 +666,8 @@ print_private_key_usage_period(gnutls_buffer_st * str, const char *prefix, struct tm t; size_t max; - err = - gnutls_x509_ext_import_private_key_usage_period(der, &activation, - &expiration); + err = gnutls_x509_ext_import_private_key_usage_period(der, &activation, + &expiration); if (err < 0) { addf(str, "error: get_private_key_usage_period: %s\n", gnutls_strerror(err)); @@ -701,10 +689,9 @@ print_private_key_usage_period(gnutls_buffer_st * str, const char *prefix, addf(str, "error: strftime (%ld)\n", (unsigned long)expiration); else addf(str, _("\t\t\tNot After: %s\n"), s); - } -static void print_crldist(gnutls_buffer_st * str, gnutls_datum_t * der) +static void print_crldist(gnutls_buffer_st *str, gnutls_datum_t *der) { int err; int indx; @@ -727,9 +714,8 @@ static void print_crldist(gnutls_buffer_st * str, gnutls_datum_t * der) } for (indx = 0;; indx++) { - err = - gnutls_x509_crl_dist_points_get(dp, indx, &type, &dist, - &flags); + err = gnutls_x509_crl_dist_points_get(dp, indx, &type, &dist, + &flags); if (err == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) goto cleanup; else if (err < 0) { @@ -740,13 +726,12 @@ static void print_crldist(gnutls_buffer_st * str, gnutls_datum_t * der) print_name(str, "\t\t\t", type, &dist, 0); } - cleanup: +cleanup: gnutls_x509_crl_dist_points_deinit(dp); } -static void -print_key_purpose(gnutls_buffer_st * str, const char *prefix, - gnutls_datum_t * der) +static void print_key_purpose(gnutls_buffer_st *str, const char *prefix, + gnutls_datum_t *der) { int indx; gnutls_datum_t oid; @@ -800,12 +785,12 @@ print_key_purpose(gnutls_buffer_st * str, const char *prefix, else addf(str, "%s\t\t\t%s\n", prefix, p); } - cleanup: +cleanup: gnutls_x509_key_purpose_deinit(purposes); } -static void -print_basic(gnutls_buffer_st * str, const char *prefix, gnutls_datum_t * der) +static void print_basic(gnutls_buffer_st *str, const char *prefix, + gnutls_datum_t *der) { int pathlen; unsigned ca; @@ -826,12 +811,12 @@ print_basic(gnutls_buffer_st * str, const char *prefix, gnutls_datum_t * der) prefix); if (pathlen >= 0) - addf(str, _("%s\t\t\tPath Length Constraint: %d\n"), - prefix, pathlen); + addf(str, _("%s\t\t\tPath Length Constraint: %d\n"), prefix, + pathlen); } -static void -print_altname(gnutls_buffer_st * str, const char *prefix, gnutls_datum_t * der) +static void print_altname(gnutls_buffer_st *str, const char *prefix, + gnutls_datum_t *der) { unsigned int altname_idx; gnutls_subject_alt_names_t names; @@ -857,13 +842,12 @@ print_altname(gnutls_buffer_st * str, const char *prefix, gnutls_datum_t * der) } for (altname_idx = 0;; altname_idx++) { - err = gnutls_subject_alt_names_get(names, altname_idx, - &type, &san, &othername); + err = gnutls_subject_alt_names_get(names, altname_idx, &type, + &san, &othername); if (err == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) break; else if (err < 0) { - addf(str, - "error: gnutls_subject_alt_names_get: %s\n", + addf(str, "error: gnutls_subject_alt_names_get: %s\n", gnutls_strerror(err)); break; } @@ -872,10 +856,8 @@ print_altname(gnutls_buffer_st * str, const char *prefix, gnutls_datum_t * der) unsigned vtype; gnutls_datum_t virt; - err = gnutls_x509_othername_to_virtual((char *) - othername.data, - &san, &vtype, - &virt); + err = gnutls_x509_othername_to_virtual( + (char *)othername.data, &san, &vtype, &virt); if (err >= 0) { snprintf(pfx, sizeof(pfx), "%s\t\t\t", prefix); print_name(str, pfx, vtype, &virt, 0); @@ -883,10 +865,8 @@ print_altname(gnutls_buffer_st * str, const char *prefix, gnutls_datum_t * der) continue; } - addf(str, - _("%s\t\t\totherName OID: %.*s\n"), - prefix, (int)othername.size, - (char *)othername.data); + addf(str, _("%s\t\t\totherName OID: %.*s\n"), prefix, + (int)othername.size, (char *)othername.data); addf(str, _("%s\t\t\totherName DER: "), prefix); _gnutls_buffer_hexprint(str, san.data, san.size); addf(str, _("\n%s\t\t\totherName ASCII: "), prefix); @@ -894,18 +874,17 @@ print_altname(gnutls_buffer_st * str, const char *prefix, gnutls_datum_t * der) san.size); addf(str, "\n"); } else { - snprintf(pfx, sizeof(pfx), "%s\t\t\t", prefix); print_name(str, pfx, type, &san, 0); } } - cleanup: +cleanup: gnutls_subject_alt_names_deinit(names); } -static void -guiddump(gnutls_buffer_st * str, const char *data, size_t len, const char *spc) +static void guiddump(gnutls_buffer_st *str, const char *data, size_t len, + const char *spc) { size_t j; @@ -932,18 +911,18 @@ guiddump(gnutls_buffer_st * str, const char *data, size_t len, const char *spc) addf(str, "}\n"); } -static void -print_unique_ids(gnutls_buffer_st * str, const gnutls_x509_crt_t cert) +static void print_unique_ids(gnutls_buffer_st *str, + const gnutls_x509_crt_t cert) { int result; - char buf[256]; /* if its longer, we won't bother to print it */ + char buf[256]; /* if its longer, we won't bother to print it */ size_t buf_size = 256; result = gnutls_x509_crt_get_issuer_unique_id(cert, buf, &buf_size); if (result >= 0) { addf(str, ("\tIssuer Unique ID:\n")); _gnutls_buffer_hexdump(str, buf, buf_size, "\t\t\t"); - if (buf_size == 16) { /* this could be a GUID */ + if (buf_size == 16) { /* this could be a GUID */ guiddump(str, buf, buf_size, "\t\t\t"); } } @@ -953,14 +932,14 @@ print_unique_ids(gnutls_buffer_st * str, const gnutls_x509_crt_t cert) if (result >= 0) { addf(str, ("\tSubject Unique ID:\n")); _gnutls_buffer_hexdump(str, buf, buf_size, "\t\t\t"); - if (buf_size == 16) { /* this could be a GUID */ + if (buf_size == 16) { /* this could be a GUID */ guiddump(str, buf, buf_size, "\t\t\t"); } } } -static void print_tlsfeatures(gnutls_buffer_st * str, const char *prefix, - const gnutls_datum_t * der) +static void print_tlsfeatures(gnutls_buffer_st *str, const char *prefix, + const gnutls_datum_t *der) { int err; int seq; @@ -995,19 +974,18 @@ static void print_tlsfeatures(gnutls_buffer_st * str, const char *prefix, addf(str, "%s\t\t\t%s(%u)\n", prefix, name, feature); } - cleanup: +cleanup: gnutls_x509_tlsfeatures_deinit(features); } -static void print_subject_sign_tool(gnutls_buffer_st * str, const char *prefix, - const gnutls_datum_t * der) +static void print_subject_sign_tool(gnutls_buffer_st *str, const char *prefix, + const gnutls_datum_t *der) { int ret; gnutls_datum_t tmp = { NULL, 0 }; - ret = - _gnutls_x509_decode_string(ASN1_ETYPE_UTF8_STRING, der->data, - der->size, &tmp, 0); + ret = _gnutls_x509_decode_string(ASN1_ETYPE_UTF8_STRING, der->data, + der->size, &tmp, 0); if (ret < 0) { addf(str, _("%s\t\t\tASCII: "), prefix); _gnutls_buffer_asciiprint(str, (char *)der->data, der->size); @@ -1024,17 +1002,17 @@ static void print_subject_sign_tool(gnutls_buffer_st * str, const char *prefix, _gnutls_free_datum(&tmp); } -static void print_issuer_sign_tool(gnutls_buffer_st * str, const char *prefix, - const gnutls_datum_t * der) +static void print_issuer_sign_tool(gnutls_buffer_st *str, const char *prefix, + const gnutls_datum_t *der) { int ret; asn1_node tmpasn = NULL; char asn1_err[ASN1_MAX_ERROR_DESCRIPTION_SIZE] = ""; gnutls_datum_t tmp; - if (asn1_create_element - (_gnutls_get_gnutls_asn(), "GNUTLS.IssuerSignTool", - &tmpasn) != ASN1_SUCCESS) { + if (asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.IssuerSignTool", + &tmpasn) != ASN1_SUCCESS) { gnutls_assert(); goto hexdump; } @@ -1086,7 +1064,7 @@ static void print_issuer_sign_tool(gnutls_buffer_st * str, const char *prefix, return; - hexdump: +hexdump: asn1_delete_structure(&tmpasn); addf(str, _("%s\t\t\tASCII: "), prefix); @@ -1098,7 +1076,10 @@ static void print_issuer_sign_tool(gnutls_buffer_st * str, const char *prefix, adds(str, "\n"); } -#define ENTRY(oid, name) {oid, sizeof(oid)-1, name, sizeof(name)-1, NULL, 0} +#define ENTRY(oid, name) \ + { \ + oid, sizeof(oid) - 1, name, sizeof(name) - 1, NULL, 0 \ + } static const struct oid_to_string cp_oid2str[] = { ENTRY("2.5.29.32.0", "anyPolicy"), @@ -1116,7 +1097,7 @@ static const struct oid_to_string cp_oid2str[] = { ENTRY("1.2.643.100.113.5", "Russian security class KB2"), ENTRY("1.2.643.100.113.6", "Russian security class KA1"), - {NULL, 0, NULL, 0}, + { NULL, 0, NULL, 0 }, }; struct ext_indexes_st { @@ -1132,9 +1113,9 @@ struct ext_indexes_st { int tlsfeatures; }; -static void print_extension(gnutls_buffer_st * str, const char *prefix, +static void print_extension(gnutls_buffer_st *str, const char *prefix, struct ext_indexes_st *idx, const char *oid, - unsigned critical, gnutls_datum_t * der) + unsigned critical, gnutls_datum_t *der) { int err; unsigned j; @@ -1145,8 +1126,8 @@ static void print_extension(gnutls_buffer_st * str, const char *prefix, addf(str, "warning: more than one basic constraint\n"); } - addf(str, _("%s\t\tBasic Constraints (%s):\n"), - prefix, critical ? _("critical") : _("not critical")); + addf(str, _("%s\t\tBasic Constraints (%s):\n"), prefix, + critical ? _("critical") : _("not critical")); print_basic(str, prefix, der); idx->basic++; @@ -1156,9 +1137,8 @@ static void print_extension(gnutls_buffer_st * str, const char *prefix, addf(str, "warning: more than one SKI extension\n"); } - addf(str, - _("%s\t\tSubject Key Identifier (%s):\n"), - prefix, critical ? _("critical") : _("not critical")); + addf(str, _("%s\t\tSubject Key Identifier (%s):\n"), prefix, + critical ? _("critical") : _("not critical")); print_ski(str, der); @@ -1172,16 +1152,14 @@ static void print_extension(gnutls_buffer_st * str, const char *prefix, err = gnutls_x509_policies_init(&policies); if (err < 0) { - addf(str, - "error: certificate policies: %s\n", + addf(str, "error: certificate policies: %s\n", gnutls_strerror(err)); return; } err = gnutls_x509_ext_import_policies(der, policies, 0); if (err < 0) { - addf(str, - "error: certificate policies import: %s\n", + addf(str, "error: certificate policies import: %s\n", gnutls_strerror(err)); gnutls_x509_policies_deinit(policies); return; @@ -1193,18 +1171,16 @@ static void print_extension(gnutls_buffer_st * str, const char *prefix, break; if (err < 0) { - addf(str, - "error: certificate policy: %s\n", + addf(str, "error: certificate policy: %s\n", gnutls_strerror(err)); break; } if (x == 0) - addf(str, - "%s\t\tCertificate Policies (%s):\n", + addf(str, "%s\t\tCertificate Policies (%s):\n", prefix, critical ? _("critical") : - _("not critical")); + _("not critical")); entry = _gnutls_oid_get_entry(cp_oid2str, policy.oid); if (entry != NULL && entry->name_desc != NULL) @@ -1221,8 +1197,8 @@ static void print_extension(gnutls_buffer_st * str, const char *prefix, name = "Note"; else name = "Unknown qualifier"; - addf(str, "%s\t\t\t\t%s: %s\n", - prefix, name, policy.qualifier[j].data); + addf(str, "%s\t\t\t\t%s: %s\n", prefix, name, + policy.qualifier[j].data); } } gnutls_x509_policies_deinit(policies); @@ -1237,20 +1213,17 @@ static void print_extension(gnutls_buffer_st * str, const char *prefix, return; } - addf(str, - "%s\t\tInhibit anyPolicy skip certs: %u (%s)\n", + addf(str, "%s\t\tInhibit anyPolicy skip certs: %u (%s)\n", prefix, skipcerts, critical ? _("critical") : _("not critical")); } else if (strcmp(oid, "2.5.29.35") == 0) { - if (idx->aki) { addf(str, "warning: more than one AKI extension\n"); } - addf(str, - _("%s\t\tAuthority Key Identifier (%s):\n"), - prefix, critical ? _("critical") : _("not critical")); + addf(str, _("%s\t\tAuthority Key Identifier (%s):\n"), prefix, + critical ? _("critical") : _("not critical")); print_aki(str, der); @@ -1274,9 +1247,8 @@ static void print_extension(gnutls_buffer_st * str, const char *prefix, "warning: more than one private key usage period extension\n"); } - addf(str, - _("%s\t\tPrivate Key Usage Period (%s):\n"), - prefix, critical ? _("critical") : _("not critical")); + addf(str, _("%s\t\tPrivate Key Usage Period (%s):\n"), prefix, + critical ? _("critical") : _("not critical")); print_private_key_usage_period(str, prefix, der); @@ -1297,9 +1269,8 @@ static void print_extension(gnutls_buffer_st * str, const char *prefix, addf(str, "warning: more than one SKI extension\n"); } - addf(str, - _("%s\t\tSubject Alternative Name (%s):\n"), - prefix, critical ? _("critical") : _("not critical")); + addf(str, _("%s\t\tSubject Alternative Name (%s):\n"), prefix, + critical ? _("critical") : _("not critical")); print_altname(str, prefix, der); idx->san++; } else if (strcmp(oid, "2.5.29.18") == 0) { @@ -1308,9 +1279,8 @@ static void print_extension(gnutls_buffer_st * str, const char *prefix, "warning: more than one Issuer AltName extension\n"); } - addf(str, - _("%s\t\tIssuer Alternative Name (%s):\n"), - prefix, critical ? _("critical") : _("not critical")); + addf(str, _("%s\t\tIssuer Alternative Name (%s):\n"), prefix, + critical ? _("critical") : _("not critical")); print_altname(str, prefix, der); @@ -1321,9 +1291,8 @@ static void print_extension(gnutls_buffer_st * str, const char *prefix, "warning: more than one CRL distribution point\n"); } - addf(str, - _("%s\t\tCRL Distribution points (%s):\n"), - prefix, critical ? _("critical") : _("not critical")); + addf(str, _("%s\t\tCRL Distribution points (%s):\n"), prefix, + critical ? _("critical") : _("not critical")); print_crldist(str, der); idx->crldist++; @@ -1332,23 +1301,22 @@ static void print_extension(gnutls_buffer_st * str, const char *prefix, addf(str, "warning: more than one proxy extension\n"); } - addf(str, - _ - ("%s\t\tProxy Certificate Information (%s):\n"), + addf(str, _("%s\t\tProxy Certificate Information (%s):\n"), prefix, critical ? _("critical") : _("not critical")); print_proxy(str, der); idx->proxy++; } else if (strcmp(oid, "1.3.6.1.5.5.7.1.1") == 0) { - addf(str, _("%s\t\tAuthority Information " - "Access (%s):\n"), prefix, - critical ? _("critical") : _("not critical")); + addf(str, + _("%s\t\tAuthority Information " + "Access (%s):\n"), + prefix, critical ? _("critical") : _("not critical")); print_aia(str, der); } else if (strcmp(oid, GNUTLS_X509EXT_OID_CT_SCT_V1) == 0) { - addf(str, _("%s\t\tCT Precertificate SCTs (%s):\n"), - prefix, critical ? _("critical") : _("not critical")); + addf(str, _("%s\t\tCT Precertificate SCTs (%s):\n"), prefix, + critical ? _("critical") : _("not critical")); print_scts(str, der, prefix); } else if (strcmp(oid, "2.5.29.30") == 0) { @@ -1368,32 +1336,31 @@ static void print_extension(gnutls_buffer_st * str, const char *prefix, "warning: more than one tlsfeatures extension\n"); } - addf(str, _("%s\t\tTLS Features (%s):\n"), - prefix, critical ? _("critical") : _("not critical")); + addf(str, _("%s\t\tTLS Features (%s):\n"), prefix, + critical ? _("critical") : _("not critical")); print_tlsfeatures(str, prefix, der); idx->tlsfeatures++; } else if (strcmp(oid, "1.2.643.100.111") == 0) { - addf(str, _("%s\t\tSubject Signing Tool(%s):\n"), - prefix, critical ? _("critical") : _("not critical")); + addf(str, _("%s\t\tSubject Signing Tool(%s):\n"), prefix, + critical ? _("critical") : _("not critical")); print_subject_sign_tool(str, prefix, der); } else if (strcmp(oid, "1.2.643.100.112") == 0) { - addf(str, _("%s\t\tIssuer Signing Tool(%s):\n"), - prefix, critical ? _("critical") : _("not critical")); + addf(str, _("%s\t\tIssuer Signing Tool(%s):\n"), prefix, + critical ? _("critical") : _("not critical")); print_issuer_sign_tool(str, prefix, der); } else if (strcmp(oid, "2.5.4.3") == 0) { int ret; gnutls_datum_t tmp = { NULL, 0 }; - addf(str, _("%s\t\tCommon Name (%s):\n"), - prefix, critical ? _("critical") : _("not critical")); + addf(str, _("%s\t\tCommon Name (%s):\n"), prefix, + critical ? _("critical") : _("not critical")); - ret = - _gnutls_x509_decode_string(ASN1_ETYPE_PRINTABLE_STRING, - der->data, der->size, &tmp, 0); + ret = _gnutls_x509_decode_string(ASN1_ETYPE_PRINTABLE_STRING, + der->data, der->size, &tmp, 0); if (ret < 0) { addf(str, "error: x509_decode_string: %s\n", gnutls_strerror(ret)); @@ -1402,8 +1369,8 @@ static void print_extension(gnutls_buffer_st * str, const char *prefix, gnutls_free(tmp.data); } } else { - addf(str, _("%s\t\tUnknown extension %s (%s):\n"), - prefix, oid, critical ? _("critical") : _("not critical")); + addf(str, _("%s\t\tUnknown extension %s (%s):\n"), prefix, oid, + critical ? _("critical") : _("not critical")); addf(str, _("%s\t\t\tASCII: "), prefix); _gnutls_buffer_asciiprint(str, (char *)der->data, der->size); @@ -1415,9 +1382,8 @@ static void print_extension(gnutls_buffer_st * str, const char *prefix, } } -static void -print_extensions(gnutls_buffer_st * str, const char *prefix, int type, - cert_type_t cert) +static void print_extensions(gnutls_buffer_st *str, const char *prefix, + int type, cert_type_t cert) { unsigned i; int err; @@ -1432,18 +1398,12 @@ print_extensions(gnutls_buffer_st * str, const char *prefix, int type, unsigned int critical; if (type == TYPE_CRT) - err = - gnutls_x509_crt_get_extension_info(cert.crt, i, - oid, - &sizeof_oid, - &critical); + err = gnutls_x509_crt_get_extension_info( + cert.crt, i, oid, &sizeof_oid, &critical); else if (type == TYPE_CRQ) - err = - gnutls_x509_crq_get_extension_info(cert.crq, i, - oid, - &sizeof_oid, - &critical); + err = gnutls_x509_crq_get_extension_info( + cert.crq, i, oid, &sizeof_oid, &critical); else { gnutls_assert(); return; @@ -1461,13 +1421,11 @@ print_extensions(gnutls_buffer_st * str, const char *prefix, int type, addf(str, _("%s\tExtensions:\n"), prefix); if (type == TYPE_CRT) - err = - gnutls_x509_crt_get_extension_data2(cert.crt, i, - &der); + err = gnutls_x509_crt_get_extension_data2(cert.crt, i, + &der); else - err = - gnutls_x509_crq_get_extension_data2(cert.crq, i, - &der); + err = gnutls_x509_crq_get_extension_data2(cert.crq, i, + &der); if (err < 0) { der.data = NULL; @@ -1479,7 +1437,7 @@ print_extensions(gnutls_buffer_st * str, const char *prefix, int type, } } -static void reverse_datum(gnutls_datum_t * d) +static void reverse_datum(gnutls_datum_t *d) { unsigned int i; unsigned char c; @@ -1491,10 +1449,9 @@ static void reverse_datum(gnutls_datum_t * d) } } -static void -print_pubkey(gnutls_buffer_st * str, const char *key_name, - gnutls_pubkey_t pubkey, gnutls_x509_spki_st * spki, - gnutls_certificate_print_formats_t format) +static void print_pubkey(gnutls_buffer_st *str, const char *key_name, + gnutls_pubkey_t pubkey, gnutls_x509_spki_st *spki, + gnutls_certificate_print_formats_t format) { int err; const char *name; @@ -1517,8 +1474,8 @@ print_pubkey(gnutls_buffer_st * str, const char *key_name, addf(str, _("\t%sPublic Key Algorithm: %s\n"), key_name, name); addf(str, _("\tAlgorithm Security Level: %s (%d bits)\n"), - gnutls_sec_param_get_name(gnutls_pk_bits_to_sec_param - (err, bits)), bits); + gnutls_sec_param_get_name(gnutls_pk_bits_to_sec_param(err, bits)), + bits); if (spki && pk == GNUTLS_PK_RSA_PSS && spki->pk == pk) { addf(str, _("\t\tParameters:\n")); @@ -1529,223 +1486,173 @@ print_pubkey(gnutls_buffer_st * str, const char *key_name, switch (pk) { case GNUTLS_PK_RSA: - case GNUTLS_PK_RSA_PSS: - { - gnutls_datum_t m, e; + case GNUTLS_PK_RSA_PSS: { + gnutls_datum_t m, e; - err = gnutls_pubkey_get_pk_rsa_raw(pubkey, &m, &e); - if (err < 0) - addf(str, "error: get_pk_rsa_raw: %s\n", - gnutls_strerror(err)); - else { - if (format == GNUTLS_CRT_PRINT_FULL_NUMBERS) { - addf(str, - _("\t\tModulus (bits %d): "), - bits); - _gnutls_buffer_hexprint(str, - m.data, m.size); - adds(str, "\n"); - addf(str, - _("\t\tExponent (bits %d): "), - e.size * 8); - _gnutls_buffer_hexprint(str, - e.data, e.size); - adds(str, "\n"); - } else { - addf(str, - _("\t\tModulus (bits %d):\n"), - bits); - _gnutls_buffer_hexdump(str, m.data, - m.size, - "\t\t\t"); - addf(str, - _ - ("\t\tExponent (bits %d):\n"), - e.size * 8); - _gnutls_buffer_hexdump(str, e.data, - e.size, - "\t\t\t"); - } - - gnutls_free(m.data); - gnutls_free(e.data); + err = gnutls_pubkey_get_pk_rsa_raw(pubkey, &m, &e); + if (err < 0) + addf(str, "error: get_pk_rsa_raw: %s\n", + gnutls_strerror(err)); + else { + if (format == GNUTLS_CRT_PRINT_FULL_NUMBERS) { + addf(str, _("\t\tModulus (bits %d): "), bits); + _gnutls_buffer_hexprint(str, m.data, m.size); + adds(str, "\n"); + addf(str, _("\t\tExponent (bits %d): "), + e.size * 8); + _gnutls_buffer_hexprint(str, e.data, e.size); + adds(str, "\n"); + } else { + addf(str, _("\t\tModulus (bits %d):\n"), bits); + _gnutls_buffer_hexdump(str, m.data, m.size, + "\t\t\t"); + addf(str, _("\t\tExponent (bits %d):\n"), + e.size * 8); + _gnutls_buffer_hexdump(str, e.data, e.size, + "\t\t\t"); } + gnutls_free(m.data); + gnutls_free(e.data); } - break; + + } break; case GNUTLS_PK_EDDSA_ED25519: case GNUTLS_PK_EDDSA_ED448: case GNUTLS_PK_ECDH_X25519: case GNUTLS_PK_ECDH_X448: - case GNUTLS_PK_ECDSA: - { - gnutls_datum_t x, y; - gnutls_ecc_curve_t curve; + case GNUTLS_PK_ECDSA: { + gnutls_datum_t x, y; + gnutls_ecc_curve_t curve; - err = - gnutls_pubkey_get_pk_ecc_raw(pubkey, &curve, - &x, &y); - if (err < 0) { - addf(str, "error: get_pk_ecc_raw: %s\n", - gnutls_strerror(err)); - } else { - addf(str, _("\t\tCurve:\t%s\n"), - gnutls_ecc_curve_get_name(curve)); - if (format == GNUTLS_CRT_PRINT_FULL_NUMBERS) { - adds(str, _("\t\tX: ")); - _gnutls_buffer_hexprint(str, - x.data, x.size); + err = gnutls_pubkey_get_pk_ecc_raw(pubkey, &curve, &x, &y); + if (err < 0) { + addf(str, "error: get_pk_ecc_raw: %s\n", + gnutls_strerror(err)); + } else { + addf(str, _("\t\tCurve:\t%s\n"), + gnutls_ecc_curve_get_name(curve)); + if (format == GNUTLS_CRT_PRINT_FULL_NUMBERS) { + adds(str, _("\t\tX: ")); + _gnutls_buffer_hexprint(str, x.data, x.size); + adds(str, "\n"); + if (y.size > 0) { + adds(str, _("\t\tY: ")); + _gnutls_buffer_hexprint(str, y.data, + y.size); adds(str, "\n"); - if (y.size > 0) { - adds(str, _("\t\tY: ")); - _gnutls_buffer_hexprint(str, - y.data, - y.size); - adds(str, "\n"); - } - } else { - adds(str, _("\t\tX:\n")); - _gnutls_buffer_hexdump(str, x.data, - x.size, - "\t\t\t"); - if (y.size > 0) { - adds(str, _("\t\tY:\n")); - _gnutls_buffer_hexdump(str, - y.data, - y.size, - "\t\t\t"); - } } - - gnutls_free(x.data); - gnutls_free(y.data); - - } - } - break; - case GNUTLS_PK_DSA: - { - gnutls_datum_t p, q, g, y; - - err = - gnutls_pubkey_get_pk_dsa_raw(pubkey, &p, &q, - &g, &y); - if (err < 0) - addf(str, "error: get_pk_dsa_raw: %s\n", - gnutls_strerror(err)); - else { - if (format == GNUTLS_CRT_PRINT_FULL_NUMBERS) { - addf(str, - _ - ("\t\tPublic key (bits %d): "), - bits); - _gnutls_buffer_hexprint(str, - y.data, y.size); - adds(str, "\n"); - adds(str, _("\t\tP: ")); - _gnutls_buffer_hexprint(str, - p.data, p.size); - adds(str, "\n"); - adds(str, _("\t\tQ: ")); - _gnutls_buffer_hexprint(str, - q.data, q.size); - adds(str, "\n"); - adds(str, _("\t\tG: ")); - _gnutls_buffer_hexprint(str, - g.data, g.size); - adds(str, "\n"); - } else { - addf(str, - _ - ("\t\tPublic key (bits %d):\n"), - bits); - _gnutls_buffer_hexdump(str, y.data, - y.size, - "\t\t\t"); - adds(str, _("\t\tP:\n")); - _gnutls_buffer_hexdump(str, p.data, - p.size, - "\t\t\t"); - adds(str, _("\t\tQ:\n")); - _gnutls_buffer_hexdump(str, q.data, - q.size, - "\t\t\t"); - adds(str, _("\t\tG:\n")); - _gnutls_buffer_hexdump(str, g.data, - g.size, - "\t\t\t"); + } else { + adds(str, _("\t\tX:\n")); + _gnutls_buffer_hexdump(str, x.data, x.size, + "\t\t\t"); + if (y.size > 0) { + adds(str, _("\t\tY:\n")); + _gnutls_buffer_hexdump( + str, y.data, y.size, "\t\t\t"); } + } - gnutls_free(p.data); - gnutls_free(q.data); - gnutls_free(g.data); - gnutls_free(y.data); + gnutls_free(x.data); + gnutls_free(y.data); + } + } break; + case GNUTLS_PK_DSA: { + gnutls_datum_t p, q, g, y; + err = gnutls_pubkey_get_pk_dsa_raw(pubkey, &p, &q, &g, &y); + if (err < 0) + addf(str, "error: get_pk_dsa_raw: %s\n", + gnutls_strerror(err)); + else { + if (format == GNUTLS_CRT_PRINT_FULL_NUMBERS) { + addf(str, _("\t\tPublic key (bits %d): "), + bits); + _gnutls_buffer_hexprint(str, y.data, y.size); + adds(str, "\n"); + adds(str, _("\t\tP: ")); + _gnutls_buffer_hexprint(str, p.data, p.size); + adds(str, "\n"); + adds(str, _("\t\tQ: ")); + _gnutls_buffer_hexprint(str, q.data, q.size); + adds(str, "\n"); + adds(str, _("\t\tG: ")); + _gnutls_buffer_hexprint(str, g.data, g.size); + adds(str, "\n"); + } else { + addf(str, _("\t\tPublic key (bits %d):\n"), + bits); + _gnutls_buffer_hexdump(str, y.data, y.size, + "\t\t\t"); + adds(str, _("\t\tP:\n")); + _gnutls_buffer_hexdump(str, p.data, p.size, + "\t\t\t"); + adds(str, _("\t\tQ:\n")); + _gnutls_buffer_hexdump(str, q.data, q.size, + "\t\t\t"); + adds(str, _("\t\tG:\n")); + _gnutls_buffer_hexdump(str, g.data, g.size, + "\t\t\t"); } + + gnutls_free(p.data); + gnutls_free(q.data); + gnutls_free(g.data); + gnutls_free(y.data); } - break; + } break; case GNUTLS_PK_GOST_01: case GNUTLS_PK_GOST_12_256: - case GNUTLS_PK_GOST_12_512: - { - gnutls_datum_t x, y; - gnutls_ecc_curve_t curve; - gnutls_digest_algorithm_t digest; - gnutls_gost_paramset_t param; - - err = - gnutls_pubkey_export_gost_raw2(pubkey, &curve, - &digest, - ¶m, &x, &y, 0); - if (err < 0) - addf(str, "error: get_pk_gost_raw: %s\n", - gnutls_strerror(err)); - else { - addf(str, _("\t\tCurve:\t%s\n"), - gnutls_ecc_curve_get_name(curve)); - addf(str, _("\t\tDigest:\t%s\n"), - gnutls_digest_get_name(digest)); - addf(str, _("\t\tParamSet: %s\n"), - gnutls_gost_paramset_get_name(param)); - reverse_datum(&x); - reverse_datum(&y); - if (format == GNUTLS_CRT_PRINT_FULL_NUMBERS) { - adds(str, _("\t\tX: ")); - _gnutls_buffer_hexprint(str, - x.data, x.size); - adds(str, "\n"); - adds(str, _("\t\tY: ")); - _gnutls_buffer_hexprint(str, - y.data, y.size); - adds(str, "\n"); - } else { - adds(str, _("\t\tX:\n")); - _gnutls_buffer_hexdump(str, x.data, - x.size, - "\t\t\t"); - adds(str, _("\t\tY:\n")); - _gnutls_buffer_hexdump(str, y.data, - y.size, - "\t\t\t"); - } - - gnutls_free(x.data); - gnutls_free(y.data); + case GNUTLS_PK_GOST_12_512: { + gnutls_datum_t x, y; + gnutls_ecc_curve_t curve; + gnutls_digest_algorithm_t digest; + gnutls_gost_paramset_t param; + err = gnutls_pubkey_export_gost_raw2(pubkey, &curve, &digest, + ¶m, &x, &y, 0); + if (err < 0) + addf(str, "error: get_pk_gost_raw: %s\n", + gnutls_strerror(err)); + else { + addf(str, _("\t\tCurve:\t%s\n"), + gnutls_ecc_curve_get_name(curve)); + addf(str, _("\t\tDigest:\t%s\n"), + gnutls_digest_get_name(digest)); + addf(str, _("\t\tParamSet: %s\n"), + gnutls_gost_paramset_get_name(param)); + reverse_datum(&x); + reverse_datum(&y); + if (format == GNUTLS_CRT_PRINT_FULL_NUMBERS) { + adds(str, _("\t\tX: ")); + _gnutls_buffer_hexprint(str, x.data, x.size); + adds(str, "\n"); + adds(str, _("\t\tY: ")); + _gnutls_buffer_hexprint(str, y.data, y.size); + adds(str, "\n"); + } else { + adds(str, _("\t\tX:\n")); + _gnutls_buffer_hexdump(str, x.data, x.size, + "\t\t\t"); + adds(str, _("\t\tY:\n")); + _gnutls_buffer_hexdump(str, y.data, y.size, + "\t\t\t"); } + + gnutls_free(x.data); + gnutls_free(y.data); } - break; + } break; default: break; } } -static int -print_crt_sig_params(gnutls_buffer_st * str, gnutls_x509_crt_t crt, - gnutls_certificate_print_formats_t format) +static int print_crt_sig_params(gnutls_buffer_st *str, gnutls_x509_crt_t crt, + gnutls_certificate_print_formats_t format) { int ret; gnutls_pk_algorithm_t pk; @@ -1755,9 +1662,8 @@ print_crt_sig_params(gnutls_buffer_st * str, gnutls_x509_crt_t crt, sign = gnutls_x509_crt_get_signature_algorithm(crt); pk = gnutls_sign_get_pk_algorithm(sign); if (pk == GNUTLS_PK_RSA_PSS) { - ret = _gnutls_x509_read_sign_params(crt->cert, - "signatureAlgorithm", - ¶ms); + ret = _gnutls_x509_read_sign_params( + crt->cert, "signatureAlgorithm", ¶ms); if (ret < 0) { addf(str, "error: read_pss_params: %s\n", gnutls_strerror(ret)); @@ -1768,7 +1674,7 @@ print_crt_sig_params(gnutls_buffer_st * str, gnutls_x509_crt_t crt, return 0; } -static void print_pk_name(gnutls_buffer_st * str, gnutls_x509_crt_t crt) +static void print_pk_name(gnutls_buffer_st *str, gnutls_x509_crt_t crt) { const char *p; char *name = get_pk_name(crt, NULL); @@ -1781,9 +1687,8 @@ static void print_pk_name(gnutls_buffer_st * str, gnutls_x509_crt_t crt) gnutls_free(name); } -static int -print_crt_pubkey(gnutls_buffer_st * str, gnutls_x509_crt_t crt, - gnutls_certificate_print_formats_t format) +static int print_crt_pubkey(gnutls_buffer_st *str, gnutls_x509_crt_t crt, + gnutls_certificate_print_formats_t format) { gnutls_pubkey_t pubkey = NULL; gnutls_x509_spki_st params; @@ -1800,7 +1705,7 @@ print_crt_pubkey(gnutls_buffer_st * str, gnutls_x509_crt_t crt, } if (pk == GNUTLS_PK_UNKNOWN) { - print_pk_name(str, crt); /* print basic info only */ + print_pk_name(str, crt); /* print basic info only */ return 0; } @@ -1813,7 +1718,7 @@ print_crt_pubkey(gnutls_buffer_st * str, gnutls_x509_crt_t crt, if (ret != GNUTLS_E_UNIMPLEMENTED_FEATURE) addf(str, "error importing public key: %s\n", gnutls_strerror(ret)); - print_pk_name(str, crt); /* print basic info only */ + print_pk_name(str, crt); /* print basic info only */ ret = 0; goto cleanup; } @@ -1821,15 +1726,14 @@ print_crt_pubkey(gnutls_buffer_st * str, gnutls_x509_crt_t crt, print_pubkey(str, _("Subject "), pubkey, ¶ms, format); ret = 0; - cleanup: +cleanup: gnutls_pubkey_deinit(pubkey); return ret; } -static void -print_cert(gnutls_buffer_st * str, gnutls_x509_crt_t cert, - gnutls_certificate_print_formats_t format) +static void print_cert(gnutls_buffer_st *str, gnutls_x509_crt_t cert, + gnutls_certificate_print_formats_t format) { /* Version. */ { @@ -1890,8 +1794,8 @@ print_cert(gnutls_buffer_st * str, gnutls_x509_crt_t cert, if (gmtime_r(&tim, &t) == NULL) addf(str, "error: gmtime_r (%ld)\n", (unsigned long)tim); - else if (strftime - (s, max, "%a %b %d %H:%M:%S UTC %Y", &t) == 0) + else if (strftime(s, max, "%a %b %d %H:%M:%S UTC %Y", + &t) == 0) addf(str, "error: strftime (%ld)\n", (unsigned long)tim); else @@ -1909,8 +1813,8 @@ print_cert(gnutls_buffer_st * str, gnutls_x509_crt_t cert, if (gmtime_r(&tim, &t) == NULL) addf(str, "error: gmtime_r (%ld)\n", (unsigned long)tim); - else if (strftime - (s, max, "%a %b %d %H:%M:%S UTC %Y", &t) == 0) + else if (strftime(s, max, "%a %b %d %H:%M:%S UTC %Y", + &t) == 0) addf(str, "error: strftime (%ld)\n", (unsigned long)tim); else @@ -1968,13 +1872,11 @@ print_cert(gnutls_buffer_st * str, gnutls_x509_crt_t cert, print_crt_sig_params(str, cert, format); - if (err != GNUTLS_SIGN_UNKNOWN - && gnutls_sign_is_secure2(err, - GNUTLS_SIGN_FLAG_SECURE_FOR_CERTS) - == 0) { - adds(str, - _("warning: signed using a broken signature " - "algorithm that can be forged.\n")); + if (err != GNUTLS_SIGN_UNKNOWN && + gnutls_sign_is_secure2( + err, GNUTLS_SIGN_FLAG_SECURE_FOR_CERTS) == 0) { + adds(str, _("warning: signed using a broken signature " + "algorithm that can be forged.\n")); } err = gnutls_x509_crt_get_signature(cert, buffer, &size); @@ -2006,7 +1908,7 @@ print_cert(gnutls_buffer_st * str, gnutls_x509_crt_t cert, } } -static void print_fingerprint(gnutls_buffer_st * str, gnutls_x509_crt_t cert) +static void print_fingerprint(gnutls_buffer_st *str, gnutls_x509_crt_t cert) { int err; char buffer[MAX_HASH_SIZE]; @@ -2014,9 +1916,8 @@ static void print_fingerprint(gnutls_buffer_st * str, gnutls_x509_crt_t cert) adds(str, _("\tFingerprint:\n")); - err = - gnutls_x509_crt_get_fingerprint(cert, GNUTLS_DIG_SHA1, buffer, - &size); + err = gnutls_x509_crt_get_fingerprint(cert, GNUTLS_DIG_SHA1, buffer, + &size); if (err < 0) { addf(str, "error: get_fingerprint: %s\n", gnutls_strerror(err)); return; @@ -2027,9 +1928,8 @@ static void print_fingerprint(gnutls_buffer_st * str, gnutls_x509_crt_t cert) adds(str, "\n"); size = sizeof(buffer); - err = - gnutls_x509_crt_get_fingerprint(cert, GNUTLS_DIG_SHA256, buffer, - &size); + err = gnutls_x509_crt_get_fingerprint(cert, GNUTLS_DIG_SHA256, buffer, + &size); if (err < 0) { addf(str, "error: get_fingerprint: %s\n", gnutls_strerror(err)); return; @@ -2041,8 +1941,8 @@ static void print_fingerprint(gnutls_buffer_st * str, gnutls_x509_crt_t cert) typedef int get_id_func(void *obj, unsigned, unsigned char *, size_t *); -static void print_obj_id(gnutls_buffer_st * str, const char *prefix, void *obj, - get_id_func * get_id) +static void print_obj_id(gnutls_buffer_st *str, const char *prefix, void *obj, + get_id_func *get_id) { unsigned char sha1_buffer[MAX_HASH_SIZE]; unsigned char sha2_buffer[MAX_HASH_SIZE]; @@ -2051,7 +1951,7 @@ static void print_obj_id(gnutls_buffer_st * str, const char *prefix, void *obj, sha1_size = sizeof(sha1_buffer); err = get_id(obj, GNUTLS_KEYID_USE_SHA1, sha1_buffer, &sha1_size); - if (err == GNUTLS_E_UNIMPLEMENTED_FEATURE) /* unsupported algo */ + if (err == GNUTLS_E_UNIMPLEMENTED_FEATURE) /* unsupported algo */ return; if (err < 0) { @@ -2062,7 +1962,7 @@ static void print_obj_id(gnutls_buffer_st * str, const char *prefix, void *obj, sha2_size = sizeof(sha2_buffer); err = get_id(obj, GNUTLS_KEYID_USE_SHA256, sha2_buffer, &sha2_size); - if (err == GNUTLS_E_UNIMPLEMENTED_FEATURE) /* unsupported algo */ + if (err == GNUTLS_E_UNIMPLEMENTED_FEATURE) /* unsupported algo */ return; if (err < 0) { @@ -2084,7 +1984,7 @@ static void print_obj_id(gnutls_buffer_st * str, const char *prefix, void *obj, return; } -static void print_keyid(gnutls_buffer_st * str, gnutls_x509_crt_t cert) +static void print_keyid(gnutls_buffer_st *str, gnutls_x509_crt_t cert) { int err; const char *name; @@ -2097,7 +1997,7 @@ static void print_keyid(gnutls_buffer_st * str, gnutls_x509_crt_t cert) return; print_obj_id(str, "\t", cert, - (get_id_func *) gnutls_x509_crt_get_key_id); + (get_id_func *)gnutls_x509_crt_get_key_id); if (IS_EC(err)) { gnutls_ecc_curve_t curve; @@ -2111,9 +2011,8 @@ static void print_keyid(gnutls_buffer_st * str, gnutls_x509_crt_t cert) } else if (IS_GOSTEC(err)) { gnutls_ecc_curve_t curve; - err = - gnutls_x509_crt_get_pk_gost_raw(cert, &curve, NULL, NULL, - NULL, NULL); + err = gnutls_x509_crt_get_pk_gost_raw(cert, &curve, NULL, NULL, + NULL, NULL); if (err < 0) return; @@ -2127,16 +2026,14 @@ static void print_keyid(gnutls_buffer_st * str, gnutls_x509_crt_t cert) return; sha1_size = sizeof(sha1_buffer); - err = - gnutls_x509_crt_get_key_id(cert, GNUTLS_KEYID_USE_SHA1, sha1_buffer, - &sha1_size); - if (err == GNUTLS_E_UNIMPLEMENTED_FEATURE) /* unsupported algo */ + err = gnutls_x509_crt_get_key_id(cert, GNUTLS_KEYID_USE_SHA1, + sha1_buffer, &sha1_size); + if (err == GNUTLS_E_UNIMPLEMENTED_FEATURE) /* unsupported algo */ return; } -static void -print_other(gnutls_buffer_st * str, gnutls_x509_crt_t cert, - gnutls_certificate_print_formats_t format) +static void print_other(gnutls_buffer_st *str, gnutls_x509_crt_t cert, + gnutls_certificate_print_formats_t format) { if (format != GNUTLS_CRT_PRINT_UNSIGNED_FULL) { print_fingerprint(str, cert); @@ -2144,7 +2041,7 @@ print_other(gnutls_buffer_st * str, gnutls_x509_crt_t cert, print_keyid(str, cert); } -static void print_oneline(gnutls_buffer_st * str, gnutls_x509_crt_t cert) +static void print_oneline(gnutls_buffer_st *str, gnutls_x509_crt_t cert) { int err; @@ -2215,10 +2112,9 @@ static void print_oneline(gnutls_buffer_st * str, gnutls_x509_crt_t cert) else p = name; - if (err != GNUTLS_SIGN_UNKNOWN - && gnutls_sign_is_secure2(err, - GNUTLS_SIGN_FLAG_SECURE_FOR_CERTS) - == 0) + if (err != GNUTLS_SIGN_UNKNOWN && + gnutls_sign_is_secure2( + err, GNUTLS_SIGN_FLAG_SECURE_FOR_CERTS) == 0) addf(str, _("signed using %s (broken!), "), p); else addf(str, _("signed using %s, "), p); @@ -2238,8 +2134,8 @@ static void print_oneline(gnutls_buffer_st * str, gnutls_x509_crt_t cert) if (gmtime_r(&tim, &t) == NULL) addf(str, "unknown activation (%ld), ", (unsigned long)tim); - else if (strftime - (s, max, "%Y-%m-%d %H:%M:%S UTC", &t) == 0) + else if (strftime(s, max, "%Y-%m-%d %H:%M:%S UTC", + &t) == 0) addf(str, "failed activation (%ld), ", (unsigned long)tim); else @@ -2255,8 +2151,8 @@ static void print_oneline(gnutls_buffer_st * str, gnutls_x509_crt_t cert) if (gmtime_r(&tim, &t) == NULL) addf(str, "unknown expiry (%ld), ", (unsigned long)tim); - else if (strftime - (s, max, "%Y-%m-%d %H:%M:%S UTC", &t) == 0) + else if (strftime(s, max, "%Y-%m-%d %H:%M:%S UTC", + &t) == 0) addf(str, "failed expiry (%ld), ", (unsigned long)tim); else @@ -2268,15 +2164,14 @@ static void print_oneline(gnutls_buffer_st * str, gnutls_x509_crt_t cert) int pathlen; char *policyLanguage; - err = gnutls_x509_crt_get_proxy(cert, NULL, - &pathlen, &policyLanguage, - NULL, NULL); + err = gnutls_x509_crt_get_proxy(cert, NULL, &pathlen, + &policyLanguage, NULL, NULL); if (err == 0) { addf(str, "proxy certificate (policy="); if (strcmp(policyLanguage, "1.3.6.1.5.5.7.21.1") == 0) addf(str, "id-ppl-inheritALL"); - else if (strcmp - (policyLanguage, "1.3.6.1.5.5.7.21.2") == 0) + else if (strcmp(policyLanguage, "1.3.6.1.5.5.7.21.2") == + 0) addf(str, "id-ppl-independent"); else addf(str, "%s", policyLanguage); @@ -2300,7 +2195,6 @@ static void print_oneline(gnutls_buffer_st * str, gnutls_x509_crt_t cert) adds(str, "\""); } } - } /** @@ -2322,10 +2216,9 @@ static void print_oneline(gnutls_buffer_st * str, gnutls_x509_crt_t cert) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crt_print(gnutls_x509_crt_t cert, - gnutls_certificate_print_formats_t format, - gnutls_datum_t * out) +int gnutls_x509_crt_print(gnutls_x509_crt_t cert, + gnutls_certificate_print_formats_t format, + gnutls_datum_t *out) { gnutls_buffer_st str; int ret; @@ -2351,9 +2244,8 @@ gnutls_x509_crt_print(gnutls_x509_crt_t cert, } else { _gnutls_buffer_init(&str); - _gnutls_buffer_append_str(&str, - _ - ("X.509 Certificate Information:\n")); + _gnutls_buffer_append_str( + &str, _("X.509 Certificate Information:\n")); print_cert(&str, cert, format); @@ -2365,8 +2257,8 @@ gnutls_x509_crt_print(gnutls_x509_crt_t cert, } } -static void -print_crl(gnutls_buffer_st * str, gnutls_x509_crl_t crl, int notsigned) +static void print_crl(gnutls_buffer_st *str, gnutls_x509_crl_t crl, + int notsigned) { /* Version. */ { @@ -2410,8 +2302,8 @@ print_crl(gnutls_buffer_st * str, gnutls_x509_crl_t crl, int notsigned) if (gmtime_r(&tim, &t) == NULL) addf(str, "error: gmtime_r (%ld)\n", (unsigned long)tim); - else if (strftime - (s, max, "%a %b %d %H:%M:%S UTC %Y", &t) == 0) + else if (strftime(s, max, "%a %b %d %H:%M:%S UTC %Y", + &t) == 0) addf(str, "error: strftime (%ld)\n", (unsigned long)tim); else @@ -2429,8 +2321,8 @@ print_crl(gnutls_buffer_st * str, gnutls_x509_crl_t crl, int notsigned) else if (gmtime_r(&tim, &t) == NULL) addf(str, "error: gmtime_r (%ld)\n", (unsigned long)tim); - else if (strftime - (s, max, "%a %b %d %H:%M:%S UTC %Y", &t) == 0) + else if (strftime(s, max, "%a %b %d %H:%M:%S UTC %Y", + &t) == 0) addf(str, "error: strftime (%ld)\n", (unsigned long)tim); else @@ -2450,15 +2342,12 @@ print_crl(gnutls_buffer_st * str, gnutls_x509_crl_t crl, int notsigned) size_t sizeof_oid = sizeof(oid); unsigned int critical; - err = gnutls_x509_crl_get_extension_info(crl, i, - oid, - &sizeof_oid, - &critical); + err = gnutls_x509_crl_get_extension_info( + crl, i, oid, &sizeof_oid, &critical); if (err == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) break; if (err < 0) { - addf(str, - "error: get_extension_info: %s\n", + addf(str, "error: get_extension_info: %s\n", gnutls_strerror(err)); break; } @@ -2475,18 +2364,15 @@ print_crl(gnutls_buffer_st * str, gnutls_x509_crl_t crl, int notsigned) "warning: more than one CRL number\n"); } - err = - gnutls_x509_crl_get_number(crl, nr, - &nr_size, - &critical); + err = gnutls_x509_crl_get_number( + crl, nr, &nr_size, &critical); addf(str, _("\t\tCRL Number (%s): "), critical ? _("critical") : - _("not critical")); + _("not critical")); if (err < 0) - addf(str, - "error: get_number: %s\n", + addf(str, "error: get_number: %s\n", gnutls_strerror(err)); else { _gnutls_buffer_hexprint(str, nr, @@ -2504,14 +2390,12 @@ print_crl(gnutls_buffer_st * str, gnutls_x509_crl_t crl, int notsigned) } addf(str, - _ - ("\t\tAuthority Key Identifier (%s):\n"), + _("\t\tAuthority Key Identifier (%s):\n"), critical ? _("critical") : - _("not critical")); + _("not critical")); - err = - gnutls_x509_crl_get_extension_data2(crl, i, - &der); + err = gnutls_x509_crl_get_extension_data2( + crl, i, &der); if (err < 0) { addf(str, "error: get_extension_data2: %s\n", @@ -2525,16 +2409,13 @@ print_crl(gnutls_buffer_st * str, gnutls_x509_crl_t crl, int notsigned) } else { gnutls_datum_t der; - addf(str, - _("\t\tUnknown extension %s (%s):\n"), + addf(str, _("\t\tUnknown extension %s (%s):\n"), oid, critical ? _("critical") : - _("not critical")); + _("not critical")); - err = - gnutls_x509_crl_get_extension_data2(crl, - i, - &der); + err = gnutls_x509_crl_get_extension_data2( + crl, i, &der); if (err < 0) { addf(str, "error: get_extension_data2: %s\n", @@ -2574,9 +2455,8 @@ print_crl(gnutls_buffer_st * str, gnutls_x509_crl_t crl, int notsigned) int err; time_t tim; - err = - gnutls_x509_crl_iter_crt_serial(crl, &iter, serial, - &serial_size, &tim); + err = gnutls_x509_crl_iter_crt_serial( + crl, &iter, serial, &serial_size, &tim); if (err < 0) { addf(str, "error: iter_crt_serial: %s\n", gnutls_strerror(err)); @@ -2592,14 +2472,12 @@ print_crl(gnutls_buffer_st * str, gnutls_x509_crl_t crl, int notsigned) adds(str, "\n"); if (gmtime_r(&tim, &t) == NULL) - addf(str, - "error: gmtime_r (%ld)\n", + addf(str, "error: gmtime_r (%ld)\n", (unsigned long)tim); - else if (strftime - (s, max, - "%a %b %d %H:%M:%S UTC %Y", &t) == 0) - addf(str, - "error: strftime (%ld)\n", + else if (strftime(s, max, + "%a %b %d %H:%M:%S UTC %Y", + &t) == 0) + addf(str, "error: strftime (%ld)\n", (unsigned long)tim); else addf(str, _("\t\tRevoked at: %s\n"), s); @@ -2625,13 +2503,11 @@ print_crl(gnutls_buffer_st * str, gnutls_x509_crl_t crl, int notsigned) addf(str, _("\tSignature Algorithm: %s\n"), p); gnutls_free(name); - if (err != GNUTLS_SIGN_UNKNOWN - && gnutls_sign_is_secure2(err, - GNUTLS_SIGN_FLAG_SECURE_FOR_CERTS) - == 0) { - adds(str, - _("warning: signed using a broken signature " - "algorithm that can be forged.\n")); + if (err != GNUTLS_SIGN_UNKNOWN && + gnutls_sign_is_secure2( + err, GNUTLS_SIGN_FLAG_SECURE_FOR_CERTS) == 0) { + adds(str, _("warning: signed using a broken signature " + "algorithm that can be forged.\n")); } err = gnutls_x509_crl_get_signature(crl, buffer, &size); @@ -2677,26 +2553,24 @@ print_crl(gnutls_buffer_st * str, gnutls_x509_crl_t crl, int notsigned) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crl_print(gnutls_x509_crl_t crl, - gnutls_certificate_print_formats_t format, - gnutls_datum_t * out) +int gnutls_x509_crl_print(gnutls_x509_crl_t crl, + gnutls_certificate_print_formats_t format, + gnutls_datum_t *out) { gnutls_buffer_st str; _gnutls_buffer_init(&str); - _gnutls_buffer_append_str - (&str, _("X.509 Certificate Revocation List Information:\n")); + _gnutls_buffer_append_str( + &str, _("X.509 Certificate Revocation List Information:\n")); print_crl(&str, crl, format == GNUTLS_CRT_PRINT_UNSIGNED_FULL); return _gnutls_buffer_to_datum(&str, out, 1); } -static int -print_crq_sig_params(gnutls_buffer_st * str, gnutls_x509_crq_t crt, - gnutls_certificate_print_formats_t format) +static int print_crq_sig_params(gnutls_buffer_st *str, gnutls_x509_crq_t crt, + gnutls_certificate_print_formats_t format) { int ret; gnutls_pk_algorithm_t pk; @@ -2706,9 +2580,8 @@ print_crq_sig_params(gnutls_buffer_st * str, gnutls_x509_crq_t crt, sign = gnutls_x509_crq_get_signature_algorithm(crt); pk = gnutls_sign_get_pk_algorithm(sign); if (pk == GNUTLS_PK_RSA_PSS) { - ret = _gnutls_x509_read_sign_params(crt->crq, - "signatureAlgorithm", - ¶ms); + ret = _gnutls_x509_read_sign_params( + crt->crq, "signatureAlgorithm", ¶ms); if (ret < 0) { addf(str, "error: read_pss_params: %s\n", gnutls_strerror(ret)); @@ -2719,9 +2592,8 @@ print_crq_sig_params(gnutls_buffer_st * str, gnutls_x509_crq_t crt, return 0; } -static int -print_crq_pubkey(gnutls_buffer_st * str, gnutls_x509_crq_t crq, - gnutls_certificate_print_formats_t format) +static int print_crq_pubkey(gnutls_buffer_st *str, gnutls_x509_crq_t crq, + gnutls_certificate_print_formats_t format) { gnutls_pubkey_t pubkey; gnutls_x509_spki_st params; @@ -2742,10 +2614,10 @@ print_crq_pubkey(gnutls_buffer_st * str, gnutls_x509_crq_t crq, print_pubkey(str, _("Subject "), pubkey, ¶ms, format); ret = 0; - cleanup: +cleanup: gnutls_pubkey_deinit(pubkey); - if (ret < 0) { /* print only name */ + if (ret < 0) { /* print only name */ const char *p; char *name = crq_get_pk_name(crq); if (name == NULL) @@ -2761,9 +2633,8 @@ print_crq_pubkey(gnutls_buffer_st * str, gnutls_x509_crq_t crq, return ret; } -static void -print_crq(gnutls_buffer_st * str, gnutls_x509_crq_t cert, - gnutls_certificate_print_formats_t format) +static void print_crq(gnutls_buffer_st *str, gnutls_x509_crq_t cert, + gnutls_certificate_print_formats_t format) { /* Version. */ { @@ -2821,15 +2692,12 @@ print_crq(gnutls_buffer_st * str, gnutls_x509_crq_t cert, char oid[MAX_OID_SIZE] = ""; size_t sizeof_oid = sizeof(oid); - err = - gnutls_x509_crq_get_attribute_info(cert, i, - oid, - &sizeof_oid); + err = gnutls_x509_crq_get_attribute_info(cert, i, oid, + &sizeof_oid); if (err == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) break; if (err < 0) { - addf(str, - "error: get_extension_info: %s\n", + addf(str, "error: get_extension_info: %s\n", gnutls_strerror(err)); break; } @@ -2858,11 +2726,10 @@ print_crq(gnutls_buffer_st * str, gnutls_x509_crq_t cert, "warning: more than one Challenge password attribute\n"); } - err = - gnutls_x509_crq_get_challenge_password - (cert, NULL, &size); - if (err < 0 - && err != GNUTLS_E_SHORT_MEMORY_BUFFER) { + err = gnutls_x509_crq_get_challenge_password( + cert, NULL, &size); + if (err < 0 && + err != GNUTLS_E_SHORT_MEMORY_BUFFER) { addf(str, "error: get_challenge_password: %s\n", gnutls_strerror(err)); @@ -2874,22 +2741,20 @@ print_crq(gnutls_buffer_st * str, gnutls_x509_crq_t cert, pass = gnutls_malloc(size); if (!pass) { addf(str, "error: malloc: %s\n", - gnutls_strerror - (GNUTLS_E_MEMORY_ERROR)); + gnutls_strerror( + GNUTLS_E_MEMORY_ERROR)); continue; } - err = - gnutls_x509_crq_get_challenge_password - (cert, pass, &size); + err = gnutls_x509_crq_get_challenge_password( + cert, pass, &size); if (err < 0) addf(str, "error: get_challenge_password: %s\n", gnutls_strerror(err)); else addf(str, - _ - ("\t\tChallenge password: %s\n"), + _("\t\tChallenge password: %s\n"), pass); gnutls_free(pass); @@ -2902,9 +2767,8 @@ print_crq(gnutls_buffer_st * str, gnutls_x509_crq_t cert, addf(str, _("\t\tUnknown attribute %s:\n"), oid); - err = - gnutls_x509_crq_get_attribute_data - (cert, i, NULL, &extlen); + err = gnutls_x509_crq_get_attribute_data( + cert, i, NULL, &extlen); if (err < 0) { addf(str, "error: get_attribute_data: %s\n", @@ -2915,14 +2779,13 @@ print_crq(gnutls_buffer_st * str, gnutls_x509_crq_t cert, buffer = gnutls_malloc(extlen); if (!buffer) { addf(str, "error: malloc: %s\n", - gnutls_strerror - (GNUTLS_E_MEMORY_ERROR)); + gnutls_strerror( + GNUTLS_E_MEMORY_ERROR)); continue; } - err = - gnutls_x509_crq_get_attribute_data - (cert, i, buffer, &extlen); + err = gnutls_x509_crq_get_attribute_data( + cert, i, buffer, &extlen); if (err < 0) { gnutls_free(buffer); addf(str, @@ -2945,7 +2808,7 @@ print_crq(gnutls_buffer_st * str, gnutls_x509_crq_t cert, } } -static void print_crq_other(gnutls_buffer_st * str, gnutls_x509_crq_t crq) +static void print_crq_other(gnutls_buffer_st *str, gnutls_x509_crq_t crq) { int ret; @@ -2954,8 +2817,7 @@ static void print_crq_other(gnutls_buffer_st * str, gnutls_x509_crq_t crq) if (ret < 0) return; - print_obj_id(str, "\t", crq, - (get_id_func *) gnutls_x509_crq_get_key_id); + print_obj_id(str, "\t", crq, (get_id_func *)gnutls_x509_crq_get_key_id); } /** @@ -2974,17 +2836,16 @@ static void print_crq_other(gnutls_buffer_st * str, gnutls_x509_crq_t crq) * * Since: 2.8.0 **/ -int -gnutls_x509_crq_print(gnutls_x509_crq_t crq, - gnutls_certificate_print_formats_t format, - gnutls_datum_t * out) +int gnutls_x509_crq_print(gnutls_x509_crq_t crq, + gnutls_certificate_print_formats_t format, + gnutls_datum_t *out) { gnutls_buffer_st str; _gnutls_buffer_init(&str); - _gnutls_buffer_append_str - (&str, _("PKCS #10 Certificate Request Information:\n")); + _gnutls_buffer_append_str( + &str, _("PKCS #10 Certificate Request Information:\n")); print_crq(&str, crq, format); @@ -2995,9 +2856,8 @@ gnutls_x509_crq_print(gnutls_x509_crq_t crq, return _gnutls_buffer_to_datum(&str, out, 1); } -static void -print_pubkey_other(gnutls_buffer_st * str, gnutls_pubkey_t pubkey, - gnutls_certificate_print_formats_t format) +static void print_pubkey_other(gnutls_buffer_st *str, gnutls_pubkey_t pubkey, + gnutls_certificate_print_formats_t format) { int ret; unsigned int usage; @@ -3019,7 +2879,7 @@ print_pubkey_other(gnutls_buffer_st * str, gnutls_pubkey_t pubkey, if (ret < 0) return; - print_obj_id(str, "", pubkey, (get_id_func *) gnutls_pubkey_get_key_id); + print_obj_id(str, "", pubkey, (get_id_func *)gnutls_pubkey_get_key_id); } /** @@ -3041,10 +2901,9 @@ print_pubkey_other(gnutls_buffer_st * str, gnutls_pubkey_t pubkey, * * Since: 3.1.5 **/ -int -gnutls_pubkey_print(gnutls_pubkey_t pubkey, - gnutls_certificate_print_formats_t format, - gnutls_datum_t * out) +int gnutls_pubkey_print(gnutls_pubkey_t pubkey, + gnutls_certificate_print_formats_t format, + gnutls_datum_t *out) { gnutls_buffer_st str; @@ -3073,10 +2932,9 @@ gnutls_pubkey_print(gnutls_pubkey_t pubkey, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_ext_print(gnutls_x509_ext_st * exts, unsigned int exts_size, - gnutls_certificate_print_formats_t format, - gnutls_datum_t * out) +int gnutls_x509_ext_print(gnutls_x509_ext_st *exts, unsigned int exts_size, + gnutls_certificate_print_formats_t format, + gnutls_datum_t *out) { gnutls_buffer_st str; struct ext_indexes_st idx; diff --git a/lib/x509/pkcs12.c b/lib/x509/pkcs12.c index b84dff94c5..359025a1ab 100644 --- a/lib/x509/pkcs12.c +++ b/lib/x509/pkcs12.c @@ -42,9 +42,8 @@ /* Decodes the PKCS #12 auth_safe, and returns the allocated raw data, * which holds them. Returns an asn1_node of authenticatedSafe. */ -static int -_decode_pkcs12_auth_safe(asn1_node pkcs12, asn1_node * authen_safe, - gnutls_datum_t * raw) +static int _decode_pkcs12_auth_safe(asn1_node pkcs12, asn1_node *authen_safe, + gnutls_datum_t *raw) { char oid[MAX_OID_SIZE]; asn1_node c2 = NULL; @@ -68,9 +67,9 @@ _decode_pkcs12_auth_safe(asn1_node pkcs12, asn1_node * authen_safe, /* Step 1. Read the content data */ - result = - _gnutls_x509_read_string(pkcs12, "authSafe.content", - &auth_safe, ASN1_ETYPE_OCTET_STRING, 1); + result = _gnutls_x509_read_string(pkcs12, "authSafe.content", + &auth_safe, ASN1_ETYPE_OCTET_STRING, + 1); if (result < 0) { gnutls_assert(); goto cleanup; @@ -79,16 +78,16 @@ _decode_pkcs12_auth_safe(asn1_node pkcs12, asn1_node * authen_safe, /* Step 2. Extract the authenticatedSafe. */ - if ((result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.pkcs-12-AuthenticatedSafe", - &c2)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.pkcs-12-AuthenticatedSafe", + &c2)) != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; } - result = - asn1_der_decoding(&c2, auth_safe.data, auth_safe.size, error_str); + result = asn1_der_decoding(&c2, auth_safe.data, auth_safe.size, + error_str); if (result != ASN1_SUCCESS) { gnutls_assert(); _gnutls_debug_log("DER error: %s\n", error_str); @@ -110,7 +109,7 @@ _decode_pkcs12_auth_safe(asn1_node pkcs12, asn1_node * authen_safe, return 0; - cleanup: +cleanup: if (c2) asn1_delete_structure(&c2); _gnutls_free_datum(&auth_safe); @@ -124,8 +123,8 @@ static int pkcs12_reinit(gnutls_pkcs12_t pkcs12) if (pkcs12->pkcs12) asn1_delete_structure(&pkcs12->pkcs12); - result = asn1_create_element(_gnutls_get_pkix(), - "PKIX1.pkcs-12-PFX", &pkcs12->pkcs12); + result = asn1_create_element(_gnutls_get_pkix(), "PKIX1.pkcs-12-PFX", + &pkcs12->pkcs12); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -145,7 +144,7 @@ static int pkcs12_reinit(gnutls_pkcs12_t pkcs12) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int gnutls_pkcs12_init(gnutls_pkcs12_t * pkcs12) +int gnutls_pkcs12_init(gnutls_pkcs12_t *pkcs12) { *pkcs12 = gnutls_calloc(1, sizeof(gnutls_pkcs12_int)); @@ -156,7 +155,7 @@ int gnutls_pkcs12_init(gnutls_pkcs12_t * pkcs12) gnutls_free(*pkcs12); return result; } - return 0; /* success */ + return 0; /* success */ } return GNUTLS_E_MEMORY_ERROR; } @@ -193,10 +192,8 @@ void gnutls_pkcs12_deinit(gnutls_pkcs12_t pkcs12) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_pkcs12_import(gnutls_pkcs12_t pkcs12, - const gnutls_datum_t * data, - gnutls_x509_crt_fmt_t format, unsigned int flags) +int gnutls_pkcs12_import(gnutls_pkcs12_t pkcs12, const gnutls_datum_t *data, + gnutls_x509_crt_fmt_t format, unsigned int flags) { int result = 0, need_free = 0; gnutls_datum_t _data; @@ -213,9 +210,8 @@ gnutls_pkcs12_import(gnutls_pkcs12_t pkcs12, /* If the PKCS12 is in PEM format then decode it */ if (format == GNUTLS_X509_FMT_PEM) { - result = - _gnutls_fbase64_decode(PEM_PKCS12, data->data, - data->size, &_data); + result = _gnutls_fbase64_decode(PEM_PKCS12, data->data, + data->size, &_data); if (result < 0) { gnutls_assert(); @@ -234,9 +230,8 @@ gnutls_pkcs12_import(gnutls_pkcs12_t pkcs12, } pkcs12->expanded = 1; - result = - asn1_der_decoding(&pkcs12->pkcs12, _data.data, _data.size, - error_str); + result = asn1_der_decoding(&pkcs12->pkcs12, _data.data, _data.size, + error_str); if (result != ASN1_SUCCESS) { result = _gnutls_asn2err(result); _gnutls_debug_log("DER error: %s\n", error_str); @@ -249,7 +244,7 @@ gnutls_pkcs12_import(gnutls_pkcs12_t pkcs12, return 0; - cleanup: +cleanup: if (need_free) _gnutls_free_datum(&_data); return result; @@ -275,10 +270,8 @@ gnutls_pkcs12_import(gnutls_pkcs12_t pkcs12, * Returns: In case of failure a negative error code will be * returned, and 0 on success. **/ -int -gnutls_pkcs12_export(gnutls_pkcs12_t pkcs12, - gnutls_x509_crt_fmt_t format, void *output_data, - size_t *output_data_size) +int gnutls_pkcs12_export(gnutls_pkcs12_t pkcs12, gnutls_x509_crt_fmt_t format, + void *output_data, size_t *output_data_size) { int ret; @@ -320,9 +313,8 @@ gnutls_pkcs12_export(gnutls_pkcs12_t pkcs12, * * Since: 3.1.3 **/ -int -gnutls_pkcs12_export2(gnutls_pkcs12_t pkcs12, - gnutls_x509_crt_fmt_t format, gnutls_datum_t * out) +int gnutls_pkcs12_export2(gnutls_pkcs12_t pkcs12, gnutls_x509_crt_fmt_t format, + gnutls_datum_t *out) { int ret; @@ -380,9 +372,8 @@ static const char *bag_to_oid(int bag) /* Decodes the SafeContents, and puts the output in * the given bag. */ -int -_pkcs12_decode_safe_contents(const gnutls_datum_t * content, - gnutls_pkcs12_bag_t bag) +int _pkcs12_decode_safe_contents(const gnutls_datum_t *content, + gnutls_pkcs12_bag_t bag) { char oid[MAX_OID_SIZE], root[MAX_NAME_SIZE]; asn1_node c2 = NULL; @@ -396,9 +387,9 @@ _pkcs12_decode_safe_contents(const gnutls_datum_t * content, /* Step 1. Extract the SEQUENCE. */ - if ((result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.pkcs-12-SafeContents", - &c2)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.pkcs-12-SafeContents", &c2)) != + ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; @@ -423,7 +414,6 @@ _pkcs12_decode_safe_contents(const gnutls_datum_t * content, bag->bag_elements = MIN(MAX_BAG_ELEMENTS, count); for (i = 0; i < bag->bag_elements; i++) { - snprintf(root, sizeof(root), "?%u.bagId", i + 1); len = sizeof(oid); @@ -448,23 +438,22 @@ _pkcs12_decode_safe_contents(const gnutls_datum_t * content, snprintf(root, sizeof(root), "?%u.bagValue", i + 1); - result = - _gnutls_x509_read_value(c2, root, &bag->element[i].data); + result = _gnutls_x509_read_value(c2, root, + &bag->element[i].data); if (result < 0) { gnutls_assert(); goto cleanup; } - if (bag_type == GNUTLS_BAG_CERTIFICATE - || bag_type == GNUTLS_BAG_CRL - || bag_type == GNUTLS_BAG_SECRET) { + if (bag_type == GNUTLS_BAG_CERTIFICATE || + bag_type == GNUTLS_BAG_CRL || + bag_type == GNUTLS_BAG_SECRET) { gnutls_datum_t tmp = bag->element[i].data; bag->element[i].data.data = NULL; bag->element[i].data.size = 0; - result = - _pkcs12_decode_crt_bag(bag_type, &tmp, - &bag->element[i].data); + result = _pkcs12_decode_crt_bag(bag_type, &tmp, + &bag->element[i].data); _gnutls_free_datum(&tmp); if (result < 0) { gnutls_assert(); @@ -477,7 +466,8 @@ _pkcs12_decode_safe_contents(const gnutls_datum_t * content, snprintf(root, sizeof(root), "?%u.bagAttributes", i + 1); result = asn1_number_of_elements(c2, root, &attributes); - if (result != ASN1_SUCCESS && result != ASN1_ELEMENT_NOT_FOUND) { + if (result != ASN1_SUCCESS && + result != ASN1_ELEMENT_NOT_FOUND) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; @@ -488,87 +478,82 @@ _pkcs12_decode_safe_contents(const gnutls_datum_t * content, if (result != ASN1_ELEMENT_NOT_FOUND) for (j = 0; j < attributes; j++) { - snprintf(root, sizeof(root), "?%u.bagAttributes.?%d", i + 1, j + 1); - result = - _gnutls_x509_decode_and_read_attribute - (c2, root, oid, sizeof(oid), &attr_val, - 1, 0); + result = _gnutls_x509_decode_and_read_attribute( + c2, root, oid, sizeof(oid), &attr_val, + 1, 0); if (result < 0) { gnutls_assert(); - continue; /* continue in case we find some known attributes */ + continue; /* continue in case we find some known attributes */ } if (strcmp(oid, KEY_ID_OID) == 0) { - result = - _gnutls_x509_decode_string - (ASN1_ETYPE_OCTET_STRING, - attr_val.data, attr_val.size, - &t, 1); + result = _gnutls_x509_decode_string( + ASN1_ETYPE_OCTET_STRING, + attr_val.data, attr_val.size, + &t, 1); _gnutls_free_datum(&attr_val); if (result < 0) { gnutls_assert(); - _gnutls_debug_log - ("Error decoding PKCS12 Bag Attribute OID '%s'\n", - oid); + _gnutls_debug_log( + "Error decoding PKCS12 Bag Attribute OID '%s'\n", + oid); continue; } - _gnutls_free_datum(&bag->element - [i].local_key_id); + _gnutls_free_datum( + &bag->element[i].local_key_id); bag->element[i].local_key_id.data = - t.data; + t.data; bag->element[i].local_key_id.size = - t.size; - } else if (strcmp(oid, FRIENDLY_NAME_OID) == 0 - && bag->element[i].friendly_name == - NULL) { - result = - _gnutls_x509_decode_string - (ASN1_ETYPE_BMP_STRING, - attr_val.data, attr_val.size, &t, - 1); + t.size; + } else if (strcmp(oid, FRIENDLY_NAME_OID) == + 0 && + bag->element[i].friendly_name == + NULL) { + result = _gnutls_x509_decode_string( + ASN1_ETYPE_BMP_STRING, + attr_val.data, attr_val.size, + &t, 1); _gnutls_free_datum(&attr_val); if (result < 0) { gnutls_assert(); - _gnutls_debug_log - ("Error decoding PKCS12 Bag Attribute OID '%s'\n", - oid); + _gnutls_debug_log( + "Error decoding PKCS12 Bag Attribute OID '%s'\n", + oid); continue; } - gnutls_free(bag-> - element[i].friendly_name); + gnutls_free( + bag->element[i].friendly_name); bag->element[i].friendly_name = - (char *)t.data; + (char *)t.data; } else { _gnutls_free_datum(&attr_val); - _gnutls_debug_log - ("Unknown PKCS12 Bag Attribute OID '%s'\n", - oid); + _gnutls_debug_log( + "Unknown PKCS12 Bag Attribute OID '%s'\n", + oid); } } bag->element[i].type = bag_type; - } result = 0; - cleanup: +cleanup: if (c2) asn1_delete_structure(&c2); return result; - } -static int -_parse_safe_contents(asn1_node sc, const char *sc_name, gnutls_pkcs12_bag_t bag) +static int _parse_safe_contents(asn1_node sc, const char *sc_name, + gnutls_pkcs12_bag_t bag) { gnutls_datum_t content = { NULL, 0 }; int result; @@ -576,9 +561,8 @@ _parse_safe_contents(asn1_node sc, const char *sc_name, gnutls_pkcs12_bag_t bag) /* Step 1. Extract the content. */ - result = - _gnutls_x509_read_string(sc, sc_name, &content, - ASN1_ETYPE_OCTET_STRING, 1); + result = _gnutls_x509_read_string(sc, sc_name, &content, + ASN1_ETYPE_OCTET_STRING, 1); if (result < 0) { gnutls_assert(); goto cleanup; @@ -594,7 +578,7 @@ _parse_safe_contents(asn1_node sc, const char *sc_name, gnutls_pkcs12_bag_t bag) return 0; - cleanup: +cleanup: _gnutls_free_datum(&content); return result; } @@ -613,8 +597,8 @@ _parse_safe_contents(asn1_node sc, const char *sc_name, gnutls_pkcs12_bag_t bag) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_pkcs12_get_bag(gnutls_pkcs12_t pkcs12, int indx, gnutls_pkcs12_bag_t bag) +int gnutls_pkcs12_get_bag(gnutls_pkcs12_t pkcs12, int indx, + gnutls_pkcs12_bag_t bag) { asn1_node c2 = NULL; int result, len; @@ -676,7 +660,7 @@ gnutls_pkcs12_get_bag(gnutls_pkcs12_t pkcs12, int indx, gnutls_pkcs12_bag_t bag) result = 0; - cleanup: +cleanup: if (c2) asn1_delete_structure(&c2); return result; @@ -712,17 +696,16 @@ static int create_empty_pfx(asn1_node pkcs12) * null one in that case. */ - if ((result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.pkcs-12-AuthenticatedSafe", - &c2)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.pkcs-12-AuthenticatedSafe", + &c2)) != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; } - result = - _gnutls_x509_der_encode_and_copy(c2, "", pkcs12, - "authSafe.content", 1); + result = _gnutls_x509_der_encode_and_copy(c2, "", pkcs12, + "authSafe.content", 1); if (result < 0) { gnutls_assert(); goto cleanup; @@ -731,10 +714,9 @@ static int create_empty_pfx(asn1_node pkcs12) return 0; - cleanup: +cleanup: asn1_delete_structure(&c2); return result; - } /** @@ -763,8 +745,8 @@ int gnutls_pkcs12_set_bag(gnutls_pkcs12_t pkcs12, gnutls_pkcs12_bag_t bag) /* Step 1. Check if the pkcs12 structure is empty. In that * case generate an empty PFX. */ - result = - asn1_read_value(pkcs12->pkcs12, "authSafe.content", &null, &dum); + result = asn1_read_value(pkcs12->pkcs12, "authSafe.content", &null, + &dum); if (result == ASN1_VALUE_NOT_FOUND) { result = create_empty_pfx(pkcs12->pkcs12); if (result < 0) { @@ -801,8 +783,8 @@ int gnutls_pkcs12_set_bag(gnutls_pkcs12_t pkcs12, gnutls_pkcs12_bag_t bag) } if (enc) - result = - asn1_write_value(c2, "?LAST.contentType", ENC_DATA_OID, 1); + result = asn1_write_value(c2, "?LAST.contentType", ENC_DATA_OID, + 1); else result = asn1_write_value(c2, "?LAST.contentType", DATA_OID, 1); if (result != ASN1_SUCCESS) { @@ -814,19 +796,17 @@ int gnutls_pkcs12_set_bag(gnutls_pkcs12_t pkcs12, gnutls_pkcs12_bag_t bag) if (enc) { /* Encrypted packets are written directly. */ - result = - asn1_write_value(c2, "?LAST.content", - bag->element[0].data.data, - bag->element[0].data.size); + result = asn1_write_value(c2, "?LAST.content", + bag->element[0].data.data, + bag->element[0].data.size); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; } } else { - result = - _gnutls_x509_der_encode_and_copy(safe_cont, "", c2, - "?LAST.content", 1); + result = _gnutls_x509_der_encode_and_copy(safe_cont, "", c2, + "?LAST.content", 1); if (result < 0) { gnutls_assert(); goto cleanup; @@ -838,9 +818,8 @@ int gnutls_pkcs12_set_bag(gnutls_pkcs12_t pkcs12, gnutls_pkcs12_bag_t bag) /* Step 5. Re-encode and copy the AuthenticatedSafe into the pkcs12 * structure. */ - result = - _gnutls_x509_der_encode_and_copy(c2, "", pkcs12->pkcs12, - "authSafe.content", 1); + result = _gnutls_x509_der_encode_and_copy(c2, "", pkcs12->pkcs12, + "authSafe.content", 1); if (result < 0) { gnutls_assert(); goto cleanup; @@ -850,7 +829,7 @@ int gnutls_pkcs12_set_bag(gnutls_pkcs12_t pkcs12, gnutls_pkcs12_bag_t bag) return 0; - cleanup: +cleanup: asn1_delete_structure(&c2); asn1_delete_structure(&safe_cont); return result; @@ -866,10 +845,9 @@ int gnutls_pkcs12_set_bag(gnutls_pkcs12_t pkcs12, gnutls_pkcs12_bag_t bag) */ static int _gnutls_pkcs12_gost_string_to_key(gnutls_mac_algorithm_t algo, - const uint8_t * salt, - unsigned int salt_size, unsigned int iter, - const char *pass, unsigned int req_keylen, - uint8_t * keybuf) + const uint8_t *salt, unsigned int salt_size, + unsigned int iter, const char *pass, + unsigned int req_keylen, uint8_t *keybuf) { uint8_t temp[96]; size_t temp_len = sizeof(temp); @@ -938,9 +916,8 @@ int gnutls_pkcs12_generate_mac2(gnutls_pkcs12_t pkcs12, /* Write the salt into the structure. */ - result = - asn1_write_value(pkcs12->pkcs12, "macData.macSalt", salt, - sizeof(salt)); + result = asn1_write_value(pkcs12->pkcs12, "macData.macSalt", salt, + sizeof(salt)); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -951,9 +928,8 @@ int gnutls_pkcs12_generate_mac2(gnutls_pkcs12_t pkcs12, */ if (iter > 1) { - result = - _gnutls_x509_write_uint32(pkcs12->pkcs12, - "macData.iterations", iter); + result = _gnutls_x509_write_uint32(pkcs12->pkcs12, + "macData.iterations", iter); if (result < 0) { gnutls_assert(); goto cleanup; @@ -967,16 +943,12 @@ int gnutls_pkcs12_generate_mac2(gnutls_pkcs12_t pkcs12, me->id == GNUTLS_MAC_STREEBOG_256 || me->id == GNUTLS_MAC_STREEBOG_512) { key_len = 32; - result = _gnutls_pkcs12_gost_string_to_key(me->id, - salt, - sizeof(salt), - iter, - pass, key_len, key); + result = _gnutls_pkcs12_gost_string_to_key( + me->id, salt, sizeof(salt), iter, pass, key_len, key); } else #endif - result = _gnutls_pkcs12_string_to_key(me, 3 /*MAC*/, - salt, sizeof(salt), - iter, pass, + result = _gnutls_pkcs12_string_to_key(me, 3 /*MAC*/, salt, + sizeof(salt), iter, pass, mac_size, key); if (result < 0) { gnutls_assert(); @@ -1004,28 +976,26 @@ int gnutls_pkcs12_generate_mac2(gnutls_pkcs12_t pkcs12, _gnutls_mac_deinit(&td1, mac_out); - result = - asn1_write_value(pkcs12->pkcs12, "macData.mac.digest", mac_out, - mac_size); + result = asn1_write_value(pkcs12->pkcs12, "macData.mac.digest", mac_out, + mac_size); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; } - result = - asn1_write_value(pkcs12->pkcs12, - "macData.mac.digestAlgorithm.parameters", NULL, 0); + result = asn1_write_value(pkcs12->pkcs12, + "macData.mac.digestAlgorithm.parameters", + NULL, 0); if (result != ASN1_SUCCESS && result != ASN1_ELEMENT_NOT_FOUND) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; } - result = - asn1_write_value(pkcs12->pkcs12, - "macData.mac.digestAlgorithm.algorithm", - me->oid, 1); + result = asn1_write_value(pkcs12->pkcs12, + "macData.mac.digestAlgorithm.algorithm", + me->oid, 1); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -1036,7 +1006,7 @@ int gnutls_pkcs12_generate_mac2(gnutls_pkcs12_t pkcs12, _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_NOT_APPROVED); return 0; - cleanup: +cleanup: _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); _gnutls_free_datum(&tmp); return result; @@ -1075,9 +1045,7 @@ int gnutls_pkcs12_verify_mac(gnutls_pkcs12_t pkcs12, const char *pass) unsigned int iter; int len; mac_hd_st td1; - gnutls_datum_t tmp = { NULL, 0 }, salt = { - NULL, 0 - }; + gnutls_datum_t tmp = { NULL, 0 }, salt = { NULL, 0 }; uint8_t mac_output[MAX_HASH_SIZE]; uint8_t mac_output_orig[MAX_HASH_SIZE]; gnutls_mac_algorithm_t algo; @@ -1094,16 +1062,16 @@ int gnutls_pkcs12_verify_mac(gnutls_pkcs12_t pkcs12, const char *pass) /* read the iterations */ - result = - _gnutls_x509_read_uint(pkcs12->pkcs12, "macData.iterations", &iter); + result = _gnutls_x509_read_uint(pkcs12->pkcs12, "macData.iterations", + &iter); if (result < 0) { - iter = 1; /* the default */ + iter = 1; /* the default */ } len = sizeof(oid); - result = - asn1_read_value(pkcs12->pkcs12, - "macData.mac.digestAlgorithm.algorithm", oid, &len); + result = asn1_read_value(pkcs12->pkcs12, + "macData.mac.digestAlgorithm.algorithm", oid, + &len); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -1111,7 +1079,7 @@ int gnutls_pkcs12_verify_mac(gnutls_pkcs12_t pkcs12, const char *pass) algo = DIG_TO_MAC(gnutls_oid_to_digest(oid)); if (algo == GNUTLS_MAC_UNKNOWN) { - unknown_mac: + unknown_mac: gnutls_assert(); return GNUTLS_E_UNKNOWN_HASH_ALGORITHM; } @@ -1125,9 +1093,8 @@ int gnutls_pkcs12_verify_mac(gnutls_pkcs12_t pkcs12, const char *pass) /* Read the salt from the structure. */ - result = - _gnutls_x509_read_null_value(pkcs12->pkcs12, "macData.macSalt", - &salt); + result = _gnutls_x509_read_null_value(pkcs12->pkcs12, "macData.macSalt", + &salt); if (result < 0) { gnutls_assert(); goto cleanup; @@ -1135,9 +1102,9 @@ int gnutls_pkcs12_verify_mac(gnutls_pkcs12_t pkcs12, const char *pass) /* Generate the key. */ - result = _gnutls_pkcs12_string_to_key(entry, 3 /*MAC*/, - salt.data, salt.size, - iter, pass, key_len, key); + result = _gnutls_pkcs12_string_to_key(entry, 3 /*MAC*/, salt.data, + salt.size, iter, pass, key_len, + key); if (result < 0) { gnutls_assert(); goto cleanup; @@ -1153,7 +1120,7 @@ int gnutls_pkcs12_verify_mac(gnutls_pkcs12_t pkcs12, const char *pass) #if ENABLE_GOST /* GOST PKCS#12 files use either PKCS#12 scheme or proprietary * HMAC-based scheme to generate MAC key. */ - pkcs12_try_gost: +pkcs12_try_gost: #endif /* MAC the data @@ -1169,9 +1136,8 @@ int gnutls_pkcs12_verify_mac(gnutls_pkcs12_t pkcs12, const char *pass) _gnutls_mac_deinit(&td1, mac_output); len = sizeof(mac_output_orig); - result = - asn1_read_value(pkcs12->pkcs12, "macData.mac.digest", - mac_output_orig, &len); + result = asn1_read_value(pkcs12->pkcs12, "macData.mac.digest", + mac_output_orig, &len); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -1180,23 +1146,17 @@ int gnutls_pkcs12_verify_mac(gnutls_pkcs12_t pkcs12, const char *pass) if ((unsigned)len != mac_len || memcmp(mac_output_orig, mac_output, len) != 0) { - #if ENABLE_GOST /* It is possible that GOST files use proprietary * key generation scheme */ - if (!gost_retry && - (algo == GNUTLS_MAC_GOSTR_94 || - algo == GNUTLS_MAC_STREEBOG_256 || - algo == GNUTLS_MAC_STREEBOG_512)) { + if (!gost_retry && (algo == GNUTLS_MAC_GOSTR_94 || + algo == GNUTLS_MAC_STREEBOG_256 || + algo == GNUTLS_MAC_STREEBOG_512)) { gost_retry = 1; key_len = 32; - result = _gnutls_pkcs12_gost_string_to_key(algo, - salt.data, - salt.size, - iter, - pass, - key_len, - key); + result = _gnutls_pkcs12_gost_string_to_key( + algo, salt.data, salt.size, iter, pass, key_len, + key); if (result < 0) { gnutls_assert(); goto cleanup; @@ -1214,16 +1174,15 @@ int gnutls_pkcs12_verify_mac(gnutls_pkcs12_t pkcs12, const char *pass) /* _gnutls_pkcs12_string_to_key is not a FIPS approved operation */ _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_NOT_APPROVED); result = 0; - cleanup: +cleanup: _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_ERROR); _gnutls_free_datum(&tmp); _gnutls_free_datum(&salt); return result; } -static int -write_attributes(gnutls_pkcs12_bag_t bag, int elem, - asn1_node c2, const char *where) +static int write_attributes(gnutls_pkcs12_bag_t bag, int elem, asn1_node c2, + const char *where) { int result; char root[128]; @@ -1245,7 +1204,6 @@ write_attributes(gnutls_pkcs12_bag_t bag, int elem, } if (bag->element[elem].local_key_id.data != NULL) { - /* Add a new Attribute */ result = asn1_write_value(c2, where, "NEW", 1); @@ -1257,15 +1215,10 @@ write_attributes(gnutls_pkcs12_bag_t bag, int elem, _gnutls_str_cpy(root, sizeof(root), where); _gnutls_str_cat(root, sizeof(root), ".?LAST"); - result = - _gnutls_x509_encode_and_write_attribute(KEY_ID_OID, c2, - root, - bag->element - [elem]. - local_key_id.data, - bag->element[elem]. - local_key_id.size, - 1); + result = _gnutls_x509_encode_and_write_attribute( + KEY_ID_OID, c2, root, + bag->element[elem].local_key_id.data, + bag->element[elem].local_key_id.size, 1); if (result < 0) { gnutls_assert(); return result; @@ -1305,9 +1258,8 @@ write_attributes(gnutls_pkcs12_bag_t bag, int elem, _gnutls_str_cpy(root, sizeof(root), where); _gnutls_str_cat(root, sizeof(root), ".?LAST"); - result = - _gnutls_x509_encode_and_write_attribute - (FRIENDLY_NAME_OID, c2, root, name, size, 1); + result = _gnutls_x509_encode_and_write_attribute( + FRIENDLY_NAME_OID, c2, root, name, size, 1); gnutls_free(name); @@ -1323,9 +1275,8 @@ write_attributes(gnutls_pkcs12_bag_t bag, int elem, /* Encodes the bag into a SafeContents structure, and puts the output in * the given datum. Enc is set to non-zero if the data are encrypted; */ -int -_pkcs12_encode_safe_contents(gnutls_pkcs12_bag_t bag, asn1_node * contents, - int *enc) +int _pkcs12_encode_safe_contents(gnutls_pkcs12_bag_t bag, asn1_node *contents, + int *enc) { asn1_node c2 = NULL; int result; @@ -1334,23 +1285,22 @@ _pkcs12_encode_safe_contents(gnutls_pkcs12_bag_t bag, asn1_node * contents, if (bag->element[0].type == GNUTLS_BAG_ENCRYPTED && enc) { *enc = 1; - return 0; /* ENCRYPTED BAG, do nothing. */ + return 0; /* ENCRYPTED BAG, do nothing. */ } else if (enc) *enc = 0; /* Step 1. Create the SEQUENCE. */ - if ((result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.pkcs-12-SafeContents", - &c2)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.pkcs-12-SafeContents", &c2)) != + ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; } for (i = 0; i < bag->bag_elements; i++) { - oid = bag_to_oid(bag->element[i].type); if (oid == NULL) { gnutls_assert(); @@ -1393,33 +1343,29 @@ _pkcs12_encode_safe_contents(gnutls_pkcs12_bag_t bag, asn1_node * contents, * a CrlBag. */ - result = - _pkcs12_encode_crt_bag(bag->element[i].type, - &bag->element[i].data, &tmp); + result = _pkcs12_encode_crt_bag(bag->element[i].type, + &bag->element[i].data, + &tmp); if (result < 0) { gnutls_assert(); goto cleanup; } - result = - _gnutls_x509_write_value(c2, "?LAST.bagValue", - &tmp); + result = _gnutls_x509_write_value(c2, "?LAST.bagValue", + &tmp); _gnutls_free_datum(&tmp); } else { - - result = - _gnutls_x509_write_value(c2, "?LAST.bagValue", - &bag->element[i].data); + result = _gnutls_x509_write_value( + c2, "?LAST.bagValue", &bag->element[i].data); } if (result < 0) { gnutls_assert(); goto cleanup; } - } /* Encode the data and copy them into the datum @@ -1428,19 +1374,18 @@ _pkcs12_encode_safe_contents(gnutls_pkcs12_bag_t bag, asn1_node * contents, return 0; - cleanup: +cleanup: if (c2) asn1_delete_structure(&c2); return result; - } /* Checks if the extra_certs contain certificates that may form a chain * with the first certificate in chain (it is expected that chain_len==1) * and appends those in the chain. */ -static int make_chain(gnutls_x509_crt_t ** chain, unsigned int *chain_len, - gnutls_x509_crt_t ** extra_certs, +static int make_chain(gnutls_x509_crt_t **chain, unsigned int *chain_len, + gnutls_x509_crt_t **extra_certs, unsigned int *extra_certs_len, unsigned int flags) { unsigned int i; @@ -1451,22 +1396,19 @@ static int make_chain(gnutls_x509_crt_t ** chain, unsigned int *chain_len, i = 0; while (i < *extra_certs_len) { /* if it is an issuer but not a self-signed one */ - if (gnutls_x509_crt_check_issuer - ((*chain)[*chain_len - 1], (*extra_certs)[i]) != 0) { - if (!(flags & GNUTLS_PKCS12_SP_INCLUDE_SELF_SIGNED) - && - gnutls_x509_crt_check_issuer((*extra_certs)[i], - (*extra_certs)[i]) - != 0) + if (gnutls_x509_crt_check_issuer((*chain)[*chain_len - 1], + (*extra_certs)[i]) != 0) { + if (!(flags & GNUTLS_PKCS12_SP_INCLUDE_SELF_SIGNED) && + gnutls_x509_crt_check_issuer( + (*extra_certs)[i], (*extra_certs)[i]) != 0) goto skip; if (unlikely(INT_ADD_OVERFLOW(*chain_len, 1))) { return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); } - *chain = _gnutls_reallocarray_fast(*chain, - ++(*chain_len), - sizeof((*chain)[0])); + *chain = _gnutls_reallocarray_fast( + *chain, ++(*chain_len), sizeof((*chain)[0])); if (*chain == NULL) { gnutls_assert(); return GNUTLS_E_MEMORY_ERROR; @@ -1474,14 +1416,14 @@ static int make_chain(gnutls_x509_crt_t ** chain, unsigned int *chain_len, (*chain)[*chain_len - 1] = (*extra_certs)[i]; (*extra_certs)[i] = - (*extra_certs)[*extra_certs_len - 1]; + (*extra_certs)[*extra_certs_len - 1]; (*extra_certs_len)--; i = 0; continue; } - skip: + skip: i++; } return 0; @@ -1536,15 +1478,13 @@ static int make_chain(gnutls_x509_crt_t ** chain, unsigned int *chain_len, * * Since: 3.1.0 **/ -int -gnutls_pkcs12_simple_parse(gnutls_pkcs12_t p12, - const char *password, - gnutls_x509_privkey_t * key, - gnutls_x509_crt_t ** chain, - unsigned int *chain_len, - gnutls_x509_crt_t ** extra_certs, - unsigned int *extra_certs_len, - gnutls_x509_crl_t * crl, unsigned int flags) +int gnutls_pkcs12_simple_parse(gnutls_pkcs12_t p12, const char *password, + gnutls_x509_privkey_t *key, + gnutls_x509_crt_t **chain, + unsigned int *chain_len, + gnutls_x509_crt_t **extra_certs, + unsigned int *extra_certs_len, + gnutls_x509_crl_t *crl, unsigned int flags) { gnutls_pkcs12_bag_t bag = NULL; gnutls_x509_crt_t *_extra_certs = NULL; @@ -1568,7 +1508,6 @@ gnutls_pkcs12_simple_parse(gnutls_pkcs12_t p12, /* find the first private key */ for (;;) { - ret = gnutls_pkcs12_bag_init(&bag); if (ret < 0) { bag = NULL; @@ -1595,9 +1534,8 @@ gnutls_pkcs12_simple_parse(gnutls_pkcs12_t p12, if (ret == GNUTLS_BAG_ENCRYPTED) { if (password == NULL) { - ret = - gnutls_assert_val - (GNUTLS_E_DECRYPTION_FAILED); + ret = gnutls_assert_val( + GNUTLS_E_DECRYPTION_FAILED); goto done; } @@ -1633,15 +1571,14 @@ gnutls_pkcs12_simple_parse(gnutls_pkcs12_t p12, switch (type) { case GNUTLS_BAG_PKCS8_ENCRYPTED_KEY: if (password == NULL) { - ret = - gnutls_assert_val - (GNUTLS_E_DECRYPTION_FAILED); + ret = gnutls_assert_val( + GNUTLS_E_DECRYPTION_FAILED); goto done; } FALLTHROUGH; case GNUTLS_BAG_PKCS8_KEY: - if (*key != NULL) { /* too simple to continue */ + if (*key != NULL) { /* too simple to continue */ gnutls_assert(); break; } @@ -1652,28 +1589,26 @@ gnutls_pkcs12_simple_parse(gnutls_pkcs12_t p12, goto done; } - ret = gnutls_x509_privkey_import_pkcs8 - (*key, &data, GNUTLS_X509_FMT_DER, - password, - type == - GNUTLS_BAG_PKCS8_KEY ? - GNUTLS_PKCS_PLAIN : 0); + ret = gnutls_x509_privkey_import_pkcs8( + *key, &data, GNUTLS_X509_FMT_DER, + password, + type == GNUTLS_BAG_PKCS8_KEY ? + GNUTLS_PKCS_PLAIN : + 0); if (ret < 0) { gnutls_assert(); goto done; } key_id_size = sizeof(key_id); - ret = - gnutls_x509_privkey_get_key_id(*key, 0, - key_id, - &key_id_size); + ret = gnutls_x509_privkey_get_key_id( + *key, 0, key_id, &key_id_size); if (ret < 0) { gnutls_assert(); goto done; } - privkey_ok = 1; /* break */ + privkey_ok = 1; /* break */ break; default: break; @@ -1684,11 +1619,11 @@ gnutls_pkcs12_simple_parse(gnutls_pkcs12_t p12, gnutls_pkcs12_bag_deinit(bag); bag = NULL; - if (privkey_ok != 0) /* private key was found */ + if (privkey_ok != 0) /* private key was found */ break; } - if (privkey_ok == 0) { /* no private key */ + if (privkey_ok == 0) { /* no private key */ gnutls_assert(); return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; } @@ -1761,10 +1696,8 @@ gnutls_pkcs12_simple_parse(gnutls_pkcs12_t p12, goto done; } - ret = - gnutls_x509_crt_import(this_cert, - &data, - GNUTLS_X509_FMT_DER); + ret = gnutls_x509_crt_import( + this_cert, &data, GNUTLS_X509_FMT_DER); if (ret < 0) { gnutls_assert(); gnutls_x509_crt_deinit(this_cert); @@ -1774,10 +1707,8 @@ gnutls_pkcs12_simple_parse(gnutls_pkcs12_t p12, /* check if the key id match */ cert_id_size = sizeof(cert_id); - ret = - gnutls_x509_crt_get_key_id(this_cert, - 0, cert_id, - &cert_id_size); + ret = gnutls_x509_crt_get_key_id( + this_cert, 0, cert_id, &cert_id_size); if (ret < 0) { gnutls_assert(); gnutls_x509_crt_deinit(this_cert); @@ -1785,47 +1716,43 @@ gnutls_pkcs12_simple_parse(gnutls_pkcs12_t p12, goto done; } - if (memcmp(cert_id, key_id, cert_id_size) != 0) { /* they don't match - skip the certificate */ - if (unlikely - (INT_ADD_OVERFLOW - (_extra_certs_len, 1))) { - ret = - gnutls_assert_val - (GNUTLS_E_MEMORY_ERROR); + if (memcmp(cert_id, key_id, cert_id_size) != + 0) { /* they don't match - skip the certificate */ + if (unlikely(INT_ADD_OVERFLOW( + _extra_certs_len, 1))) { + ret = gnutls_assert_val( + GNUTLS_E_MEMORY_ERROR); goto done; } - _extra_certs = - _gnutls_reallocarray_fast - (_extra_certs, ++_extra_certs_len, - sizeof(_extra_certs[0])); + _extra_certs = _gnutls_reallocarray_fast( + _extra_certs, + ++_extra_certs_len, + sizeof(_extra_certs[0])); if (!_extra_certs) { gnutls_assert(); ret = GNUTLS_E_MEMORY_ERROR; goto done; } - _extra_certs - [_extra_certs_len - 1] = this_cert; + _extra_certs[_extra_certs_len - 1] = + this_cert; this_cert = NULL; } else { if (chain && _chain_len == 0) { - _chain = - gnutls_malloc(sizeof - (_chain - [0]) * - (++_chain_len)); + _chain = gnutls_malloc( + sizeof(_chain[0]) * + (++_chain_len)); if (!_chain) { gnutls_assert(); - ret = - GNUTLS_E_MEMORY_ERROR; + ret = GNUTLS_E_MEMORY_ERROR; goto done; } _chain[_chain_len - 1] = - this_cert; + this_cert; this_cert = NULL; } else { - gnutls_x509_crt_deinit - (this_cert); + gnutls_x509_crt_deinit( + this_cert); this_cert = NULL; } } @@ -1843,9 +1770,8 @@ gnutls_pkcs12_simple_parse(gnutls_pkcs12_t p12, goto done; } - ret = - gnutls_x509_crl_import(*crl, &data, - GNUTLS_X509_FMT_DER); + ret = gnutls_x509_crl_import( + *crl, &data, GNUTLS_X509_FMT_DER); if (ret < 0) { gnutls_assert(); gnutls_x509_crl_deinit(*crl); @@ -1874,9 +1800,8 @@ gnutls_pkcs12_simple_parse(gnutls_pkcs12_t p12, goto done; } - ret = - make_chain(&_chain, &_chain_len, &_extra_certs, - &_extra_certs_len, flags); + ret = make_chain(&_chain, &_chain_len, &_extra_certs, + &_extra_certs_len, flags); if (ret < 0) { gnutls_assert(); goto done; @@ -1885,7 +1810,7 @@ gnutls_pkcs12_simple_parse(gnutls_pkcs12_t p12, ret = 0; - done: +done: if (bag) gnutls_pkcs12_bag_deinit(bag); @@ -1953,15 +1878,12 @@ gnutls_pkcs12_simple_parse(gnutls_pkcs12_t p12, * %GNUTLS_E_UNKNOWN_HASH_ALGORITHM if the structure's MAC isn't supported, or * another negative error code in case of a failure. Zero on success. **/ -int -gnutls_pkcs12_mac_info(gnutls_pkcs12_t pkcs12, unsigned int *mac, - void *salt, unsigned int *salt_size, - unsigned int *iter_count, char **oid) +int gnutls_pkcs12_mac_info(gnutls_pkcs12_t pkcs12, unsigned int *mac, + void *salt, unsigned int *salt_size, + unsigned int *iter_count, char **oid) { int ret; - gnutls_datum_t tmp = { NULL, 0 }, dsalt = { - NULL, 0 - }; + gnutls_datum_t tmp = { NULL, 0 }, dsalt = { NULL, 0 }; gnutls_mac_algorithm_t algo; if (oid) @@ -1972,10 +1894,8 @@ gnutls_pkcs12_mac_info(gnutls_pkcs12_t pkcs12, unsigned int *mac, return GNUTLS_E_INVALID_REQUEST; } - ret = - _gnutls_x509_read_value(pkcs12->pkcs12, - "macData.mac.digestAlgorithm.algorithm", - &tmp); + ret = _gnutls_x509_read_value( + pkcs12->pkcs12, "macData.mac.digestAlgorithm.algorithm", &tmp); if (ret < 0) { gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; @@ -2000,20 +1920,18 @@ gnutls_pkcs12_mac_info(gnutls_pkcs12_t pkcs12, unsigned int *mac, } if (iter_count) { - ret = - _gnutls_x509_read_uint(pkcs12->pkcs12, "macData.iterations", - iter_count); + ret = _gnutls_x509_read_uint(pkcs12->pkcs12, + "macData.iterations", iter_count); if (ret < 0) { - *iter_count = 1; /* the default */ + *iter_count = 1; /* the default */ } } if (salt) { /* Read the salt from the structure. */ - ret = - _gnutls_x509_read_null_value(pkcs12->pkcs12, - "macData.macSalt", &dsalt); + ret = _gnutls_x509_read_null_value(pkcs12->pkcs12, + "macData.macSalt", &dsalt); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -2031,9 +1949,8 @@ gnutls_pkcs12_mac_info(gnutls_pkcs12_t pkcs12, unsigned int *mac, } ret = 0; - cleanup: +cleanup: _gnutls_free_datum(&tmp); _gnutls_free_datum(&dsalt); return ret; - } diff --git a/lib/x509/pkcs12_bag.c b/lib/x509/pkcs12_bag.c index 012d92f8d4..06c38f2b74 100644 --- a/lib/x509/pkcs12_bag.c +++ b/lib/x509/pkcs12_bag.c @@ -44,12 +44,12 @@ * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int gnutls_pkcs12_bag_init(gnutls_pkcs12_bag_t * bag) +int gnutls_pkcs12_bag_init(gnutls_pkcs12_bag_t *bag) { *bag = gnutls_calloc(1, sizeof(gnutls_pkcs12_bag_int)); if (*bag) { - return 0; /* success */ + return 0; /* success */ } return GNUTLS_E_MEMORY_ERROR; } @@ -64,7 +64,6 @@ static inline void _pkcs12_bag_free_data(gnutls_pkcs12_bag_t bag) gnutls_free(bag->element[i].friendly_name); bag->element[i].type = 0; } - } /** @@ -136,9 +135,8 @@ int gnutls_pkcs12_bag_get_count(gnutls_pkcs12_bag_t bag) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_pkcs12_bag_get_data(gnutls_pkcs12_bag_t bag, unsigned indx, - gnutls_datum_t * data) +int gnutls_pkcs12_bag_get_data(gnutls_pkcs12_bag_t bag, unsigned indx, + gnutls_datum_t *data) { if (bag == NULL) { gnutls_assert(); @@ -155,12 +153,11 @@ gnutls_pkcs12_bag_get_data(gnutls_pkcs12_bag_t bag, unsigned indx, } #define X509_CERT_OID "1.2.840.113549.1.9.22.1" -#define X509_CRL_OID "1.2.840.113549.1.9.23.1" +#define X509_CRL_OID "1.2.840.113549.1.9.23.1" #define RANDOM_NONCE_OID "1.2.840.113549.1.9.25.3" -int -_pkcs12_decode_crt_bag(gnutls_pkcs12_bag_type_t type, - const gnutls_datum_t * in, gnutls_datum_t * out) +int _pkcs12_decode_crt_bag(gnutls_pkcs12_bag_type_t type, + const gnutls_datum_t *in, gnutls_datum_t *out) { int ret; asn1_node c2 = NULL; @@ -168,8 +165,8 @@ _pkcs12_decode_crt_bag(gnutls_pkcs12_bag_type_t type, switch (type) { case GNUTLS_BAG_CERTIFICATE: if ((ret = asn1_create_element(_gnutls_get_pkix(), - "PKIX1.pkcs-12-CertBag", - &c2)) != ASN1_SUCCESS) { + "PKIX1.pkcs-12-CertBag", &c2)) != + ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(ret); goto cleanup; @@ -182,9 +179,8 @@ _pkcs12_decode_crt_bag(gnutls_pkcs12_bag_type_t type, goto cleanup; } - ret = - _gnutls_x509_read_string(c2, "certValue", out, - ASN1_ETYPE_OCTET_STRING, 1); + ret = _gnutls_x509_read_string(c2, "certValue", out, + ASN1_ETYPE_OCTET_STRING, 1); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -193,8 +189,8 @@ _pkcs12_decode_crt_bag(gnutls_pkcs12_bag_type_t type, case GNUTLS_BAG_CRL: if ((ret = asn1_create_element(_gnutls_get_pkix(), - "PKIX1.pkcs-12-CRLBag", - &c2)) != ASN1_SUCCESS) { + "PKIX1.pkcs-12-CRLBag", &c2)) != + ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(ret); goto cleanup; @@ -207,9 +203,8 @@ _pkcs12_decode_crt_bag(gnutls_pkcs12_bag_type_t type, goto cleanup; } - ret = - _gnutls_x509_read_string(c2, "crlValue", out, - ASN1_ETYPE_OCTET_STRING, 1); + ret = _gnutls_x509_read_string(c2, "crlValue", out, + ASN1_ETYPE_OCTET_STRING, 1); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -232,9 +227,8 @@ _pkcs12_decode_crt_bag(gnutls_pkcs12_bag_type_t type, goto cleanup; } - ret = - _gnutls_x509_read_string(c2, "secretValue", out, - ASN1_ETYPE_OCTET_STRING, 1); + ret = _gnutls_x509_read_string(c2, "secretValue", out, + ASN1_ETYPE_OCTET_STRING, 1); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -251,15 +245,14 @@ _pkcs12_decode_crt_bag(gnutls_pkcs12_bag_type_t type, return 0; - cleanup: +cleanup: asn1_delete_structure(&c2); return ret; } -int -_pkcs12_encode_crt_bag(gnutls_pkcs12_bag_type_t type, - const gnutls_datum_t * raw, gnutls_datum_t * out) +int _pkcs12_encode_crt_bag(gnutls_pkcs12_bag_type_t type, + const gnutls_datum_t *raw, gnutls_datum_t *out) { int ret; asn1_node c2 = NULL; @@ -267,8 +260,8 @@ _pkcs12_encode_crt_bag(gnutls_pkcs12_bag_type_t type, switch (type) { case GNUTLS_BAG_CERTIFICATE: if ((ret = asn1_create_element(_gnutls_get_pkix(), - "PKIX1.pkcs-12-CertBag", - &c2)) != ASN1_SUCCESS) { + "PKIX1.pkcs-12-CertBag", &c2)) != + ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(ret); goto cleanup; @@ -281,9 +274,8 @@ _pkcs12_encode_crt_bag(gnutls_pkcs12_bag_type_t type, goto cleanup; } - ret = - _gnutls_x509_write_string(c2, "certValue", raw, - ASN1_ETYPE_OCTET_STRING); + ret = _gnutls_x509_write_string(c2, "certValue", raw, + ASN1_ETYPE_OCTET_STRING); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -292,8 +284,8 @@ _pkcs12_encode_crt_bag(gnutls_pkcs12_bag_type_t type, case GNUTLS_BAG_CRL: if ((ret = asn1_create_element(_gnutls_get_pkix(), - "PKIX1.pkcs-12-CRLBag", - &c2)) != ASN1_SUCCESS) { + "PKIX1.pkcs-12-CRLBag", &c2)) != + ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(ret); goto cleanup; @@ -306,9 +298,8 @@ _pkcs12_encode_crt_bag(gnutls_pkcs12_bag_type_t type, goto cleanup; } - ret = - _gnutls_x509_write_string(c2, "crlValue", raw, - ASN1_ETYPE_OCTET_STRING); + ret = _gnutls_x509_write_string(c2, "crlValue", raw, + ASN1_ETYPE_OCTET_STRING); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -331,9 +322,8 @@ _pkcs12_encode_crt_bag(gnutls_pkcs12_bag_type_t type, goto cleanup; } - ret = - _gnutls_x509_write_string(c2, "secretValue", raw, - ASN1_ETYPE_OCTET_STRING); + ret = _gnutls_x509_write_string(c2, "secretValue", raw, + ASN1_ETYPE_OCTET_STRING); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -357,7 +347,7 @@ _pkcs12_encode_crt_bag(gnutls_pkcs12_bag_type_t type, return 0; - cleanup: +cleanup: asn1_delete_structure(&c2); return ret; @@ -375,10 +365,9 @@ _pkcs12_encode_crt_bag(gnutls_pkcs12_bag_type_t type, * Returns: the index of the added bag on success, or a negative * value on error. **/ -int -gnutls_pkcs12_bag_set_data(gnutls_pkcs12_bag_t bag, - gnutls_pkcs12_bag_type_t type, - const gnutls_datum_t * data) +int gnutls_pkcs12_bag_set_data(gnutls_pkcs12_bag_t bag, + gnutls_pkcs12_bag_type_t type, + const gnutls_datum_t *data) { int ret; if (bag == NULL) { @@ -398,16 +387,15 @@ gnutls_pkcs12_bag_set_data(gnutls_pkcs12_bag_t bag, */ if (bag->element[0].type == GNUTLS_BAG_PKCS8_KEY || - bag->element[0].type == GNUTLS_BAG_PKCS8_ENCRYPTED_KEY - || bag->element[0].type == GNUTLS_BAG_ENCRYPTED) { + bag->element[0].type == GNUTLS_BAG_PKCS8_ENCRYPTED_KEY || + bag->element[0].type == GNUTLS_BAG_ENCRYPTED) { gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; } } - ret = - _gnutls_set_datum(&bag->element[bag->bag_elements].data, - data->data, data->size); + ret = _gnutls_set_datum(&bag->element[bag->bag_elements].data, + data->data, data->size); if (ret < 0) { gnutls_assert(); @@ -503,9 +491,8 @@ int gnutls_pkcs12_bag_set_crl(gnutls_pkcs12_bag_t bag, gnutls_x509_crl_t crl) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. or a negative error code on error. **/ -int -gnutls_pkcs12_bag_set_key_id(gnutls_pkcs12_bag_t bag, unsigned indx, - const gnutls_datum_t * id) +int gnutls_pkcs12_bag_set_key_id(gnutls_pkcs12_bag_t bag, unsigned indx, + const gnutls_datum_t *id) { int ret; @@ -519,8 +506,8 @@ gnutls_pkcs12_bag_set_key_id(gnutls_pkcs12_bag_t bag, unsigned indx, return GNUTLS_E_INVALID_REQUEST; } - ret = _gnutls_set_datum(&bag->element[indx].local_key_id, - id->data, id->size); + ret = _gnutls_set_datum(&bag->element[indx].local_key_id, id->data, + id->size); if (ret < 0) { gnutls_assert(); @@ -543,9 +530,8 @@ gnutls_pkcs12_bag_set_key_id(gnutls_pkcs12_bag_t bag, unsigned indx, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. or a negative error code on error. **/ -int -gnutls_pkcs12_bag_get_key_id(gnutls_pkcs12_bag_t bag, unsigned indx, - gnutls_datum_t * id) +int gnutls_pkcs12_bag_get_key_id(gnutls_pkcs12_bag_t bag, unsigned indx, + gnutls_datum_t *id) { if (bag == NULL) { gnutls_assert(); @@ -576,9 +562,8 @@ gnutls_pkcs12_bag_get_key_id(gnutls_pkcs12_bag_t bag, unsigned indx, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. or a negative error code on error. **/ -int -gnutls_pkcs12_bag_get_friendly_name(gnutls_pkcs12_bag_t bag, unsigned indx, - char **name) +int gnutls_pkcs12_bag_get_friendly_name(gnutls_pkcs12_bag_t bag, unsigned indx, + char **name) { if (bag == NULL) { gnutls_assert(); @@ -609,9 +594,8 @@ gnutls_pkcs12_bag_get_friendly_name(gnutls_pkcs12_bag_t bag, unsigned indx, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. or a negative error code on error. **/ -int -gnutls_pkcs12_bag_set_friendly_name(gnutls_pkcs12_bag_t bag, unsigned indx, - const char *name) +int gnutls_pkcs12_bag_set_friendly_name(gnutls_pkcs12_bag_t bag, unsigned indx, + const char *name) { if (bag == NULL) { gnutls_assert(); @@ -695,9 +679,8 @@ int gnutls_pkcs12_bag_decrypt(gnutls_pkcs12_bag_t bag, const char *pass) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, * otherwise a negative error code is returned. **/ -int -gnutls_pkcs12_bag_encrypt(gnutls_pkcs12_bag_t bag, const char *pass, - unsigned int flags) +int gnutls_pkcs12_bag_encrypt(gnutls_pkcs12_bag_t bag, const char *pass, + unsigned int flags) { int ret; asn1_node safe_cont = NULL; @@ -787,11 +770,10 @@ gnutls_pkcs12_bag_encrypt(gnutls_pkcs12_bag_t bag, const char *pass, * %GNUTLS_E_UNKNOWN_CIPHER_TYPE if the structure's encryption isn't supported, or * another negative error code in case of a failure. Zero on success. **/ -int -gnutls_pkcs12_bag_enc_info(gnutls_pkcs12_bag_t bag, unsigned int *schema, - unsigned int *cipher, void *salt, - unsigned int *salt_size, unsigned int *iter_count, - char **oid) +int gnutls_pkcs12_bag_enc_info(gnutls_pkcs12_bag_t bag, unsigned int *schema, + unsigned int *cipher, void *salt, + unsigned int *salt_size, + unsigned int *iter_count, char **oid) { int ret; struct pbkdf2_params kdf; @@ -851,10 +833,9 @@ gnutls_pkcs12_bag_enc_info(gnutls_pkcs12_bag_t bag, unsigned int *schema, * Returns: the index of the added bag on success, or a negative * value on failure. **/ -int -gnutls_pkcs12_bag_set_privkey(gnutls_pkcs12_bag_t bag, - gnutls_x509_privkey_t privkey, - const char *password, unsigned flags) +int gnutls_pkcs12_bag_set_privkey(gnutls_pkcs12_bag_t bag, + gnutls_x509_privkey_t privkey, + const char *password, unsigned flags) { int ret; gnutls_datum_t data = { NULL, 0 }; @@ -870,25 +851,22 @@ gnutls_pkcs12_bag_set_privkey(gnutls_pkcs12_bag_t bag, return gnutls_assert_val(ret); if (password == NULL) { - ret = - gnutls_pkcs12_bag_set_data(bag, GNUTLS_BAG_PKCS8_KEY, - &data); + ret = gnutls_pkcs12_bag_set_data(bag, GNUTLS_BAG_PKCS8_KEY, + &data); if (ret < 0) { gnutls_assert(); goto cleanup; } } else { - ret = - gnutls_pkcs12_bag_set_data(bag, - GNUTLS_BAG_PKCS8_ENCRYPTED_KEY, - &data); + ret = gnutls_pkcs12_bag_set_data( + bag, GNUTLS_BAG_PKCS8_ENCRYPTED_KEY, &data); if (ret < 0) { gnutls_assert(); goto cleanup; } } - cleanup: +cleanup: _gnutls_free_datum(&data); return ret; diff --git a/lib/x509/pkcs12_encr.c b/lib/x509/pkcs12_encr.c index 4c961b2919..817e8e557d 100644 --- a/lib/x509/pkcs12_encr.c +++ b/lib/x509/pkcs12_encr.c @@ -37,12 +37,10 @@ * Note that this function produces different key for the * NULL password, and for the password with zero length. */ -int -_gnutls_pkcs12_string_to_key(const mac_entry_st * me, - unsigned int id, const uint8_t * salt, - unsigned int salt_size, unsigned int iter, - const char *pw, unsigned int req_keylen, - uint8_t * keybuf) +int _gnutls_pkcs12_string_to_key(const mac_entry_st *me, unsigned int id, + const uint8_t *salt, unsigned int salt_size, + unsigned int iter, const char *pw, + unsigned int req_keylen, uint8_t *keybuf) { int rc; unsigned int i, j; @@ -51,7 +49,7 @@ _gnutls_pkcs12_string_to_key(const mac_entry_st * me, bigint_t v_mpi = NULL; unsigned int pwlen; uint8_t hash[MAX_HASH_SIZE], buf_b[MAX_V_SIZE], - buf_i[MAX_PASS_LEN + MAX_V_SIZE], *p; + buf_i[MAX_PASS_LEN + MAX_V_SIZE], *p; uint8_t d[MAX_V_SIZE]; size_t cur_keylen; size_t n, m, plen, i_size; @@ -84,7 +82,7 @@ _gnutls_pkcs12_string_to_key(const mac_entry_st * me, return gnutls_assert_val(GNUTLS_E_UNIMPLEMENTED_FEATURE); memset(v_val, 0, sizeof(v_val)); - v_val[0] = 0x01; /* make it be 2^64 or 2^128 */ + v_val[0] = 0x01; /* make it be 2^64 or 2^128 */ cur_keylen = 0; @@ -161,8 +159,9 @@ _gnutls_pkcs12_string_to_key(const mac_entry_st * me, _gnutls_hash(&md, buf_i, i_size); _gnutls_hash_deinit(&md, hash); for (i = 1; i < iter; i++) { - rc = _gnutls_hash_fast((gnutls_digest_algorithm_t) - me->id, hash, mac_len, hash); + rc = _gnutls_hash_fast( + (gnutls_digest_algorithm_t)me->id, hash, + mac_len, hash); if (rc < 0) { gnutls_assert(); goto cleanup; @@ -171,7 +170,7 @@ _gnutls_pkcs12_string_to_key(const mac_entry_st * me, for (i = 0; i < mac_len && cur_keylen < req_keylen; i++) keybuf[cur_keylen++] = hash[i]; if (cur_keylen == req_keylen) { - rc = 0; /* ready */ + rc = 0; /* ready */ goto cleanup; } @@ -217,7 +216,7 @@ _gnutls_pkcs12_string_to_key(const mac_entry_st * me, _gnutls_mpi_release(&num_ij); } } - cleanup: +cleanup: _gnutls_mpi_release(&num_ij); _gnutls_mpi_release(&num_b1); _gnutls_mpi_release(&v_mpi); diff --git a/lib/x509/pkcs7-attrs.c b/lib/x509/pkcs7-attrs.c index 25f947276f..300a3fcce3 100644 --- a/lib/x509/pkcs7-attrs.c +++ b/lib/x509/pkcs7-attrs.c @@ -50,9 +50,8 @@ * * Since: 3.4.2 **/ -int -gnutls_pkcs7_add_attr(gnutls_pkcs7_attrs_t * list, const char *oid, - gnutls_datum_t * data, unsigned flags) +int gnutls_pkcs7_add_attr(gnutls_pkcs7_attrs_t *list, const char *oid, + gnutls_datum_t *data, unsigned flags) { int ret; gnutls_pkcs7_attrs_st *r; @@ -79,14 +78,13 @@ gnutls_pkcs7_add_attr(gnutls_pkcs7_attrs_t * list, const char *oid, *list = r; return 0; - fail: +fail: if (r) { gnutls_free(r->data.data); gnutls_free(r); } gnutls_pkcs7_attrs_deinit(*list); return GNUTLS_E_MEMORY_ERROR; - } /** @@ -107,9 +105,8 @@ gnutls_pkcs7_add_attr(gnutls_pkcs7_attrs_t * list, const char *oid, * * Since: 3.4.2 **/ -int -gnutls_pkcs7_get_attr(gnutls_pkcs7_attrs_t list, unsigned idx, char **oid, - gnutls_datum_t * data, unsigned flags) +int gnutls_pkcs7_get_attr(gnutls_pkcs7_attrs_t list, unsigned idx, char **oid, + gnutls_datum_t *data, unsigned flags) { unsigned i; gnutls_pkcs7_attrs_st *p = list; diff --git a/lib/x509/pkcs7-crypt.c b/lib/x509/pkcs7-crypt.c index 8cdfb85ac0..a8a55b1e19 100644 --- a/lib/x509/pkcs7-crypt.c +++ b/lib/x509/pkcs7-crypt.c @@ -53,180 +53,169 @@ #define PKCS12_PBE_RC2_40_SHA1_OID "1.2.840.113549.1.12.1.6" static const struct pkcs_cipher_schema_st avail_pkcs_cipher_schemas[] = { - { - .schema = PBES1_DES_MD5, - .name = "PBES1-DES-CBC-MD5", - .flag = GNUTLS_PKCS_PBES1_DES_MD5, - .cipher = GNUTLS_CIPHER_DES_CBC, - .pbes2 = 0, - .cipher_oid = PBES1_DES_MD5_OID, - .write_oid = PBES1_DES_MD5_OID, - .desc = NULL, - .iv_name = NULL, - .decrypt_only = 1}, - { - .schema = PBES2_3DES, - .name = "PBES2-3DES-CBC", - .flag = GNUTLS_PKCS_PBES2_3DES, - .cipher = GNUTLS_CIPHER_3DES_CBC, - .pbes2 = 1, - .cipher_oid = DES_EDE3_CBC_OID, - .write_oid = PBES2_OID, - .desc = "PKIX1.pkcs-5-des-EDE3-CBC-params", - .iv_name = "", - .decrypt_only = 0}, - { - .schema = PBES2_DES, - .name = "PBES2-DES-CBC", - .flag = GNUTLS_PKCS_PBES2_DES, - .cipher = GNUTLS_CIPHER_DES_CBC, - .pbes2 = 1, - .cipher_oid = DES_CBC_OID, - .write_oid = PBES2_OID, - .desc = "PKIX1.pkcs-5-des-CBC-params", - .iv_name = "", - .decrypt_only = 0}, - { - .schema = PBES2_AES_128, - .name = "PBES2-AES128-CBC", - .flag = GNUTLS_PKCS_PBES2_AES_128, - .cipher = GNUTLS_CIPHER_AES_128_CBC, - .pbes2 = 1, - .cipher_oid = AES_128_CBC_OID, - .write_oid = PBES2_OID, - .desc = "PKIX1.pkcs-5-aes128-CBC-params", - .iv_name = "", - .decrypt_only = 0}, - { - .schema = PBES2_AES_192, - .name = "PBES2-AES192-CBC", - .flag = GNUTLS_PKCS_PBES2_AES_192, - .cipher = GNUTLS_CIPHER_AES_192_CBC, - .pbes2 = 1, - .cipher_oid = AES_192_CBC_OID, - .write_oid = PBES2_OID, - .desc = "PKIX1.pkcs-5-aes192-CBC-params", - .iv_name = "", - .decrypt_only = 0}, - { - .schema = PBES2_AES_256, - .name = "PBES2-AES256-CBC", - .flag = GNUTLS_PKCS_PBES2_AES_256, - .cipher = GNUTLS_CIPHER_AES_256_CBC, - .pbes2 = 1, - .cipher_oid = AES_256_CBC_OID, - .write_oid = PBES2_OID, - .desc = "PKIX1.pkcs-5-aes256-CBC-params", - .iv_name = "", - .decrypt_only = 0}, - { - .schema = PBES2_GOST28147_89_TC26Z, - .name = "PBES2-GOST28147-89-TC26Z", - .flag = GNUTLS_PKCS_PBES2_GOST_TC26Z, - .cipher = GNUTLS_CIPHER_GOST28147_TC26Z_CFB, - .pbes2 = 1, - .cipher_oid = GOST28147_89_TC26Z_OID, - .write_oid = PBES2_OID, - .desc = "PKIX1.Gost28147-89-Parameters", - .iv_name = "iv", - .decrypt_only = 0}, - { - .schema = PBES2_GOST28147_89_CPA, - .name = "PBES2-GOST28147-89-CPA", - .flag = GNUTLS_PKCS_PBES2_GOST_CPA, - .cipher = GNUTLS_CIPHER_GOST28147_CPA_CFB, - .pbes2 = 1, - .cipher_oid = GOST28147_89_CPA_OID, - .write_oid = PBES2_OID, - .desc = "PKIX1.Gost28147-89-Parameters", - .iv_name = "iv", - .decrypt_only = 0}, - { - .schema = PBES2_GOST28147_89_CPB, - .name = "PBES2-GOST28147-89-CPB", - .flag = GNUTLS_PKCS_PBES2_GOST_CPB, - .cipher = GNUTLS_CIPHER_GOST28147_CPB_CFB, - .pbes2 = 1, - .cipher_oid = GOST28147_89_CPB_OID, - .write_oid = PBES2_OID, - .desc = "PKIX1.Gost28147-89-Parameters", - .iv_name = "iv", - .decrypt_only = 0}, - { - .schema = PBES2_GOST28147_89_CPC, - .name = "PBES2-GOST28147-89-CPC", - .flag = GNUTLS_PKCS_PBES2_GOST_CPC, - .cipher = GNUTLS_CIPHER_GOST28147_CPC_CFB, - .pbes2 = 1, - .cipher_oid = GOST28147_89_CPC_OID, - .write_oid = PBES2_OID, - .desc = "PKIX1.Gost28147-89-Parameters", - .iv_name = "iv", - .decrypt_only = 0}, - { - .schema = PBES2_GOST28147_89_CPD, - .name = "PBES2-GOST28147-89-CPD", - .flag = GNUTLS_PKCS_PBES2_GOST_CPD, - .cipher = GNUTLS_CIPHER_GOST28147_CPD_CFB, - .pbes2 = 1, - .cipher_oid = GOST28147_89_CPD_OID, - .write_oid = PBES2_OID, - .desc = "PKIX1.Gost28147-89-Parameters", - .iv_name = "iv", - .decrypt_only = 0}, - { - .schema = PKCS12_ARCFOUR_SHA1, - .name = "PKCS12-ARCFOUR-SHA1", - .flag = GNUTLS_PKCS_PKCS12_ARCFOUR, - .cipher = GNUTLS_CIPHER_ARCFOUR, - .pbes2 = 0, - .cipher_oid = PKCS12_PBE_ARCFOUR_SHA1_OID, - .write_oid = PKCS12_PBE_ARCFOUR_SHA1_OID, - .desc = NULL, - .iv_name = NULL, - .decrypt_only = 0}, - { - .schema = PKCS12_RC2_40_SHA1, - .name = "PKCS12-RC2-40-SHA1", - .flag = GNUTLS_PKCS_PKCS12_RC2_40, - .cipher = GNUTLS_CIPHER_RC2_40_CBC, - .pbes2 = 0, - .cipher_oid = PKCS12_PBE_RC2_40_SHA1_OID, - .write_oid = PKCS12_PBE_RC2_40_SHA1_OID, - .desc = NULL, - .iv_name = NULL, - .decrypt_only = 0}, - { - .schema = PKCS12_3DES_SHA1, - .name = "PKCS12-3DES-SHA1", - .flag = GNUTLS_PKCS_PKCS12_3DES, - .cipher = GNUTLS_CIPHER_3DES_CBC, - .pbes2 = 0, - .cipher_oid = PKCS12_PBE_3DES_SHA1_OID, - .write_oid = PKCS12_PBE_3DES_SHA1_OID, - .desc = NULL, - .iv_name = NULL, - .decrypt_only = 0}, - {0, 0, 0, 0, 0} + { .schema = PBES1_DES_MD5, + .name = "PBES1-DES-CBC-MD5", + .flag = GNUTLS_PKCS_PBES1_DES_MD5, + .cipher = GNUTLS_CIPHER_DES_CBC, + .pbes2 = 0, + .cipher_oid = PBES1_DES_MD5_OID, + .write_oid = PBES1_DES_MD5_OID, + .desc = NULL, + .iv_name = NULL, + .decrypt_only = 1 }, + { .schema = PBES2_3DES, + .name = "PBES2-3DES-CBC", + .flag = GNUTLS_PKCS_PBES2_3DES, + .cipher = GNUTLS_CIPHER_3DES_CBC, + .pbes2 = 1, + .cipher_oid = DES_EDE3_CBC_OID, + .write_oid = PBES2_OID, + .desc = "PKIX1.pkcs-5-des-EDE3-CBC-params", + .iv_name = "", + .decrypt_only = 0 }, + { .schema = PBES2_DES, + .name = "PBES2-DES-CBC", + .flag = GNUTLS_PKCS_PBES2_DES, + .cipher = GNUTLS_CIPHER_DES_CBC, + .pbes2 = 1, + .cipher_oid = DES_CBC_OID, + .write_oid = PBES2_OID, + .desc = "PKIX1.pkcs-5-des-CBC-params", + .iv_name = "", + .decrypt_only = 0 }, + { .schema = PBES2_AES_128, + .name = "PBES2-AES128-CBC", + .flag = GNUTLS_PKCS_PBES2_AES_128, + .cipher = GNUTLS_CIPHER_AES_128_CBC, + .pbes2 = 1, + .cipher_oid = AES_128_CBC_OID, + .write_oid = PBES2_OID, + .desc = "PKIX1.pkcs-5-aes128-CBC-params", + .iv_name = "", + .decrypt_only = 0 }, + { .schema = PBES2_AES_192, + .name = "PBES2-AES192-CBC", + .flag = GNUTLS_PKCS_PBES2_AES_192, + .cipher = GNUTLS_CIPHER_AES_192_CBC, + .pbes2 = 1, + .cipher_oid = AES_192_CBC_OID, + .write_oid = PBES2_OID, + .desc = "PKIX1.pkcs-5-aes192-CBC-params", + .iv_name = "", + .decrypt_only = 0 }, + { .schema = PBES2_AES_256, + .name = "PBES2-AES256-CBC", + .flag = GNUTLS_PKCS_PBES2_AES_256, + .cipher = GNUTLS_CIPHER_AES_256_CBC, + .pbes2 = 1, + .cipher_oid = AES_256_CBC_OID, + .write_oid = PBES2_OID, + .desc = "PKIX1.pkcs-5-aes256-CBC-params", + .iv_name = "", + .decrypt_only = 0 }, + { .schema = PBES2_GOST28147_89_TC26Z, + .name = "PBES2-GOST28147-89-TC26Z", + .flag = GNUTLS_PKCS_PBES2_GOST_TC26Z, + .cipher = GNUTLS_CIPHER_GOST28147_TC26Z_CFB, + .pbes2 = 1, + .cipher_oid = GOST28147_89_TC26Z_OID, + .write_oid = PBES2_OID, + .desc = "PKIX1.Gost28147-89-Parameters", + .iv_name = "iv", + .decrypt_only = 0 }, + { .schema = PBES2_GOST28147_89_CPA, + .name = "PBES2-GOST28147-89-CPA", + .flag = GNUTLS_PKCS_PBES2_GOST_CPA, + .cipher = GNUTLS_CIPHER_GOST28147_CPA_CFB, + .pbes2 = 1, + .cipher_oid = GOST28147_89_CPA_OID, + .write_oid = PBES2_OID, + .desc = "PKIX1.Gost28147-89-Parameters", + .iv_name = "iv", + .decrypt_only = 0 }, + { .schema = PBES2_GOST28147_89_CPB, + .name = "PBES2-GOST28147-89-CPB", + .flag = GNUTLS_PKCS_PBES2_GOST_CPB, + .cipher = GNUTLS_CIPHER_GOST28147_CPB_CFB, + .pbes2 = 1, + .cipher_oid = GOST28147_89_CPB_OID, + .write_oid = PBES2_OID, + .desc = "PKIX1.Gost28147-89-Parameters", + .iv_name = "iv", + .decrypt_only = 0 }, + { .schema = PBES2_GOST28147_89_CPC, + .name = "PBES2-GOST28147-89-CPC", + .flag = GNUTLS_PKCS_PBES2_GOST_CPC, + .cipher = GNUTLS_CIPHER_GOST28147_CPC_CFB, + .pbes2 = 1, + .cipher_oid = GOST28147_89_CPC_OID, + .write_oid = PBES2_OID, + .desc = "PKIX1.Gost28147-89-Parameters", + .iv_name = "iv", + .decrypt_only = 0 }, + { .schema = PBES2_GOST28147_89_CPD, + .name = "PBES2-GOST28147-89-CPD", + .flag = GNUTLS_PKCS_PBES2_GOST_CPD, + .cipher = GNUTLS_CIPHER_GOST28147_CPD_CFB, + .pbes2 = 1, + .cipher_oid = GOST28147_89_CPD_OID, + .write_oid = PBES2_OID, + .desc = "PKIX1.Gost28147-89-Parameters", + .iv_name = "iv", + .decrypt_only = 0 }, + { .schema = PKCS12_ARCFOUR_SHA1, + .name = "PKCS12-ARCFOUR-SHA1", + .flag = GNUTLS_PKCS_PKCS12_ARCFOUR, + .cipher = GNUTLS_CIPHER_ARCFOUR, + .pbes2 = 0, + .cipher_oid = PKCS12_PBE_ARCFOUR_SHA1_OID, + .write_oid = PKCS12_PBE_ARCFOUR_SHA1_OID, + .desc = NULL, + .iv_name = NULL, + .decrypt_only = 0 }, + { .schema = PKCS12_RC2_40_SHA1, + .name = "PKCS12-RC2-40-SHA1", + .flag = GNUTLS_PKCS_PKCS12_RC2_40, + .cipher = GNUTLS_CIPHER_RC2_40_CBC, + .pbes2 = 0, + .cipher_oid = PKCS12_PBE_RC2_40_SHA1_OID, + .write_oid = PKCS12_PBE_RC2_40_SHA1_OID, + .desc = NULL, + .iv_name = NULL, + .decrypt_only = 0 }, + { .schema = PKCS12_3DES_SHA1, + .name = "PKCS12-3DES-SHA1", + .flag = GNUTLS_PKCS_PKCS12_3DES, + .cipher = GNUTLS_CIPHER_3DES_CBC, + .pbes2 = 0, + .cipher_oid = PKCS12_PBE_3DES_SHA1_OID, + .write_oid = PKCS12_PBE_3DES_SHA1_OID, + .desc = NULL, + .iv_name = NULL, + .decrypt_only = 0 }, + { 0, 0, 0, 0, 0 } }; -#define PBES2_SCHEMA_LOOP(b) { \ - const struct pkcs_cipher_schema_st * _p; \ - for (_p=avail_pkcs_cipher_schemas;_p->schema != 0;_p++) { b; } \ +#define PBES2_SCHEMA_LOOP(b) \ + { \ + const struct pkcs_cipher_schema_st *_p; \ + for (_p = avail_pkcs_cipher_schemas; _p->schema != 0; _p++) { \ + b; \ + } \ } #define PBES2_SCHEMA_FIND_FROM_FLAGS(fl, what) \ - PBES2_SCHEMA_LOOP( if (_p->flag == GNUTLS_PKCS_CIPHER_MASK(fl)) { what; } ) + PBES2_SCHEMA_LOOP( \ + if (_p->flag == GNUTLS_PKCS_CIPHER_MASK(fl)) { what; }) int _gnutls_pkcs_flags_to_schema(unsigned int flags) { - PBES2_SCHEMA_FIND_FROM_FLAGS(flags, return _p->schema; - ); + PBES2_SCHEMA_FIND_FROM_FLAGS(flags, return _p->schema;); gnutls_assert(); - _gnutls_debug_log - ("Selecting default encryption PBES2_AES_256 (flags: %u).\n", - flags); + _gnutls_debug_log( + "Selecting default encryption PBES2_AES_256 (flags: %u).\n", + flags); return PBES2_AES_256; } @@ -243,8 +232,7 @@ int _gnutls_pkcs_flags_to_schema(unsigned int flags) */ const char *gnutls_pkcs_schema_get_name(unsigned int schema) { - PBES2_SCHEMA_FIND_FROM_FLAGS(schema, return _p->name; - ); + PBES2_SCHEMA_FIND_FROM_FLAGS(schema, return _p->name;); return NULL; } @@ -261,17 +249,15 @@ const char *gnutls_pkcs_schema_get_name(unsigned int schema) */ const char *gnutls_pkcs_schema_get_oid(unsigned int schema) { - PBES2_SCHEMA_FIND_FROM_FLAGS(schema, return _p->cipher_oid; - ); + PBES2_SCHEMA_FIND_FROM_FLAGS(schema, return _p->cipher_oid;); return NULL; } -static const struct pkcs_cipher_schema_st *algo_to_pbes2_cipher_schema(unsigned - cipher) +static const struct pkcs_cipher_schema_st * +algo_to_pbes2_cipher_schema(unsigned cipher) { - PBES2_SCHEMA_LOOP(if (_p->cipher == cipher && _p->pbes2 != 0) { - return _p;} - ) ; + PBES2_SCHEMA_LOOP( + if (_p->cipher == cipher && _p->pbes2 != 0) { return _p; }); gnutls_assert(); return NULL; @@ -282,20 +268,21 @@ static const struct pkcs_cipher_schema_st *algo_to_pbes2_cipher_schema(unsigned int _gnutls_check_pkcs_cipher_schema(const char *oid) { if (strcmp(oid, PBES2_OID) == 0) - return PBES2_GENERIC; /* PBES2 ciphers are under an umbrella OID */ + return PBES2_GENERIC; /* PBES2 ciphers are under an umbrella OID */ - PBES2_SCHEMA_LOOP(if (_p->pbes2 == 0 && strcmp(oid, _p->write_oid) == 0) { - return _p->schema;} - ) ; - _gnutls_debug_log - ("PKCS #12 encryption schema OID '%s' is unsupported.\n", oid); + PBES2_SCHEMA_LOOP( + if (_p->pbes2 == 0 && strcmp(oid, _p->write_oid) == 0) { + return _p->schema; + }); + _gnutls_debug_log( + "PKCS #12 encryption schema OID '%s' is unsupported.\n", oid); return GNUTLS_E_UNKNOWN_CIPHER_TYPE; } const struct pkcs_cipher_schema_st *_gnutls_pkcs_schema_get(schema_id schema) { - PBES2_SCHEMA_LOOP(if (schema == _p->schema) return _p;) ; + PBES2_SCHEMA_LOOP(if (schema == _p->schema) return _p;); gnutls_assert(); return NULL; @@ -303,15 +290,15 @@ const struct pkcs_cipher_schema_st *_gnutls_pkcs_schema_get(schema_id schema) /* Converts an OID to a gnutls cipher type. */ -static int -pbes2_cipher_oid_to_algo(const char *oid, gnutls_cipher_algorithm_t * algo) +static int pbes2_cipher_oid_to_algo(const char *oid, + gnutls_cipher_algorithm_t *algo) { - *algo = 0; - PBES2_SCHEMA_LOOP(if - (_p->pbes2 != 0 && strcmp(_p->cipher_oid, oid) == 0) { - *algo = _p->cipher; return 0;} - ) ; + PBES2_SCHEMA_LOOP( + if (_p->pbes2 != 0 && strcmp(_p->cipher_oid, oid) == 0) { + *algo = _p->cipher; + return 0; + }); _gnutls_debug_log("PKCS #8 encryption OID '%s' is unsupported.\n", oid); return GNUTLS_E_UNKNOWN_CIPHER_TYPE; @@ -320,9 +307,8 @@ pbes2_cipher_oid_to_algo(const char *oid, gnutls_cipher_algorithm_t * algo) /* Decrypts a PKCS #7 encryptedData. The output is allocated * and stored in dec. */ -int -_gnutls_pkcs7_decrypt_data(const gnutls_datum_t * data, - const char *password, gnutls_datum_t * dec) +int _gnutls_pkcs7_decrypt_data(const gnutls_datum_t *data, const char *password, + gnutls_datum_t *dec) { int result, len; char enc_oid[MAX_OID_SIZE]; @@ -333,10 +319,9 @@ _gnutls_pkcs7_decrypt_data(const gnutls_datum_t * data, struct pbe_enc_params enc_params; schema_id schema; - if ((result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.pkcs-7-EncryptedData", - &pkcs7_asn)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.pkcs-7-EncryptedData", + &pkcs7_asn)) != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto error; @@ -352,10 +337,10 @@ _gnutls_pkcs7_decrypt_data(const gnutls_datum_t * data, /* Check the encryption schema OID */ len = sizeof(enc_oid); - result = - asn1_read_value(pkcs7_asn, - "encryptedContentInfo.contentEncryptionAlgorithm.algorithm", - enc_oid, &len); + result = asn1_read_value( + pkcs7_asn, + "encryptedContentInfo.contentEncryptionAlgorithm.algorithm", + enc_oid, &len); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -370,10 +355,10 @@ _gnutls_pkcs7_decrypt_data(const gnutls_datum_t * data, /* Get the DER encoding of the parameters. */ - result = - asn1_der_decoding_startEnd(pkcs7_asn, data->data, data->size, - "encryptedContentInfo.contentEncryptionAlgorithm.parameters", - ¶ms_start, ¶ms_end); + result = asn1_der_decoding_startEnd( + pkcs7_asn, data->data, data->size, + "encryptedContentInfo.contentEncryptionAlgorithm.parameters", + ¶ms_start, ¶ms_end); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -381,11 +366,10 @@ _gnutls_pkcs7_decrypt_data(const gnutls_datum_t * data, } params_len = params_end - params_start + 1; - result = - _gnutls_read_pkcs_schema_params(&schema, password, - &data->data[params_start], - params_len, &kdf_params, - &enc_params); + result = _gnutls_read_pkcs_schema_params(&schema, password, + &data->data[params_start], + params_len, &kdf_params, + &enc_params); if (result < 0) { gnutls_assert(); goto error; @@ -395,11 +379,9 @@ _gnutls_pkcs7_decrypt_data(const gnutls_datum_t * data, * decrypt the EncryptedData. */ - result = - _gnutls_pkcs_raw_decrypt_data(schema, pkcs7_asn, - "encryptedContentInfo.encryptedContent", - password, &kdf_params, &enc_params, - &tmp); + result = _gnutls_pkcs_raw_decrypt_data( + schema, pkcs7_asn, "encryptedContentInfo.encryptedContent", + password, &kdf_params, &enc_params, &tmp); if (result < 0) { gnutls_assert(); goto error; @@ -411,16 +393,15 @@ _gnutls_pkcs7_decrypt_data(const gnutls_datum_t * data, return 0; - error: +error: asn1_delete_structure(&pasn); asn1_delete_structure2(&pkcs7_asn, ASN1_DELETE_FLAG_ZEROIZE); return result; } -int -_gnutls_pkcs7_data_enc_info(const gnutls_datum_t * data, - const struct pkcs_cipher_schema_st **p, - struct pbkdf2_params *kdf_params, char **oid) +int _gnutls_pkcs7_data_enc_info(const gnutls_datum_t *data, + const struct pkcs_cipher_schema_st **p, + struct pbkdf2_params *kdf_params, char **oid) { int result, len; char enc_oid[MAX_OID_SIZE]; @@ -429,10 +410,9 @@ _gnutls_pkcs7_data_enc_info(const gnutls_datum_t * data, struct pbe_enc_params enc_params; schema_id schema; - if ((result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.pkcs-7-EncryptedData", - &pkcs7_asn)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.pkcs-7-EncryptedData", + &pkcs7_asn)) != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto error; @@ -448,10 +428,10 @@ _gnutls_pkcs7_data_enc_info(const gnutls_datum_t * data, /* Check the encryption schema OID */ len = sizeof(enc_oid); - result = - asn1_read_value(pkcs7_asn, - "encryptedContentInfo.contentEncryptionAlgorithm.algorithm", - enc_oid, &len); + result = asn1_read_value( + pkcs7_asn, + "encryptedContentInfo.contentEncryptionAlgorithm.algorithm", + enc_oid, &len); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -470,10 +450,10 @@ _gnutls_pkcs7_data_enc_info(const gnutls_datum_t * data, /* Get the DER encoding of the parameters. */ - result = - asn1_der_decoding_startEnd(pkcs7_asn, data->data, data->size, - "encryptedContentInfo.contentEncryptionAlgorithm.parameters", - ¶ms_start, ¶ms_end); + result = asn1_der_decoding_startEnd( + pkcs7_asn, data->data, data->size, + "encryptedContentInfo.contentEncryptionAlgorithm.parameters", + ¶ms_start, ¶ms_end); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -481,11 +461,10 @@ _gnutls_pkcs7_data_enc_info(const gnutls_datum_t * data, } params_len = params_end - params_start + 1; - result = - _gnutls_read_pkcs_schema_params(&schema, NULL, - &data->data[params_start], - params_len, kdf_params, - &enc_params); + result = _gnutls_read_pkcs_schema_params(&schema, NULL, + &data->data[params_start], + params_len, kdf_params, + &enc_params); if (result < 0) { gnutls_assert(); goto error; @@ -502,7 +481,7 @@ _gnutls_pkcs7_data_enc_info(const gnutls_datum_t * data, return 0; - error: +error: asn1_delete_structure(&pasn); asn1_delete_structure2(&pkcs7_asn, ASN1_DELETE_FLAG_ZEROIZE); return result; @@ -511,10 +490,8 @@ _gnutls_pkcs7_data_enc_info(const gnutls_datum_t * data, /* Encrypts to a PKCS #7 encryptedData. The output is allocated * and stored in enc. */ -int -_gnutls_pkcs7_encrypt_data(schema_id schema, - const gnutls_datum_t * data, - const char *password, gnutls_datum_t * enc) +int _gnutls_pkcs7_encrypt_data(schema_id schema, const gnutls_datum_t *data, + const char *password, gnutls_datum_t *enc) { int result; gnutls_datum_t key = { NULL, 0 }; @@ -529,19 +506,18 @@ _gnutls_pkcs7_encrypt_data(schema_id schema, return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); } - if ((result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.pkcs-7-EncryptedData", - &pkcs7_asn)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.pkcs-7-EncryptedData", + &pkcs7_asn)) != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto error; } - result = - asn1_write_value(pkcs7_asn, - "encryptedContentInfo.contentEncryptionAlgorithm.algorithm", - s->write_oid, 1); + result = asn1_write_value( + pkcs7_asn, + "encryptedContentInfo.contentEncryptionAlgorithm.algorithm", + s->write_oid, 1); if (result != ASN1_SUCCESS) { gnutls_assert(); @@ -552,17 +528,17 @@ _gnutls_pkcs7_encrypt_data(schema_id schema, /* Generate a symmetric key. */ - result = - _gnutls_pkcs_generate_key(schema, password, &kdf_params, - &enc_params, &key); + result = _gnutls_pkcs_generate_key(schema, password, &kdf_params, + &enc_params, &key); if (result < 0) { gnutls_assert(); goto error; } - result = _gnutls_pkcs_write_schema_params(schema, pkcs7_asn, - "encryptedContentInfo.contentEncryptionAlgorithm.parameters", - &kdf_params, &enc_params); + result = _gnutls_pkcs_write_schema_params( + schema, pkcs7_asn, + "encryptedContentInfo.contentEncryptionAlgorithm.parameters", + &kdf_params, &enc_params); if (result < 0) { gnutls_assert(); goto error; @@ -579,10 +555,9 @@ _gnutls_pkcs7_encrypt_data(schema_id schema, /* write the encrypted data. */ - result = - asn1_write_value(pkcs7_asn, - "encryptedContentInfo.encryptedContent", - tmp.data, tmp.size); + result = asn1_write_value(pkcs7_asn, + "encryptedContentInfo.encryptedContent", + tmp.data, tmp.size); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -601,9 +576,8 @@ _gnutls_pkcs7_encrypt_data(schema_id schema, goto error; } - result = - asn1_write_value(pkcs7_asn, "encryptedContentInfo.contentType", - DATA_OID, 1); + result = asn1_write_value(pkcs7_asn, "encryptedContentInfo.contentType", + DATA_OID, 1); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -628,7 +602,7 @@ _gnutls_pkcs7_encrypt_data(schema_id schema, goto error; } - error: +error: _gnutls_free_key_datum(&key); _gnutls_free_datum(&tmp); asn1_delete_structure2(&pkcs7_asn, ASN1_DELETE_FLAG_ZEROIZE); @@ -637,9 +611,8 @@ _gnutls_pkcs7_encrypt_data(schema_id schema, /* Reads the PBKDF2 parameters. */ -static int -read_pbkdf2_params(asn1_node pasn, - const gnutls_datum_t * der, struct pbkdf2_params *params) +static int read_pbkdf2_params(asn1_node pasn, const gnutls_datum_t *der, + struct pbkdf2_params *params) { int params_start, params_end; int params_len, len, result; @@ -654,7 +627,7 @@ read_pbkdf2_params(asn1_node pasn, */ len = sizeof(oid); result = - asn1_read_value(pasn, "keyDerivationFunc.algorithm", oid, &len); + asn1_read_value(pasn, "keyDerivationFunc.algorithm", oid, &len); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -663,15 +636,15 @@ read_pbkdf2_params(asn1_node pasn, if (strcmp(oid, PBKDF2_OID) != 0) { gnutls_assert(); - _gnutls_debug_log - ("PKCS #8 key derivation OID '%s' is unsupported.\n", oid); + _gnutls_debug_log( + "PKCS #8 key derivation OID '%s' is unsupported.\n", + oid); return _gnutls_asn2err(result); } - result = - asn1_der_decoding_startEnd(pasn, der->data, der->size, - "keyDerivationFunc.parameters", - ¶ms_start, ¶ms_end); + result = asn1_der_decoding_startEnd(pasn, der->data, der->size, + "keyDerivationFunc.parameters", + ¶ms_start, ¶ms_end); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -681,17 +654,15 @@ read_pbkdf2_params(asn1_node pasn, /* Now check the key derivation and the encryption * functions. */ - if ((result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.pkcs-5-PBKDF2-params", - &pbkdf2_asn)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.pkcs-5-PBKDF2-params", + &pbkdf2_asn)) != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } - result = - _asn1_strict_der_decode(&pbkdf2_asn, &der->data[params_start], - params_len, NULL); + result = _asn1_strict_der_decode(&pbkdf2_asn, &der->data[params_start], + params_len, NULL); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -700,9 +671,8 @@ read_pbkdf2_params(asn1_node pasn, /* read the salt */ params->salt_size = sizeof(params->salt); - result = - asn1_read_value(pbkdf2_asn, "salt.specified", params->salt, - ¶ms->salt_size); + result = asn1_read_value(pbkdf2_asn, "salt.specified", params->salt, + ¶ms->salt_size); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -717,9 +687,8 @@ read_pbkdf2_params(asn1_node pasn, /* read the iteration count */ - result = - _gnutls_x509_read_uint(pbkdf2_asn, "iterationCount", - ¶ms->iter_count); + result = _gnutls_x509_read_uint(pbkdf2_asn, "iterationCount", + ¶ms->iter_count); if (result < 0) { gnutls_assert(); goto error; @@ -734,8 +703,8 @@ read_pbkdf2_params(asn1_node pasn, /* read the keylength, if it is set. */ - result = - _gnutls_x509_read_uint(pbkdf2_asn, "keyLength", ¶ms->key_size); + result = _gnutls_x509_read_uint(pbkdf2_asn, "keyLength", + ¶ms->key_size); if (result < 0) { params->key_size = 0; } @@ -765,10 +734,9 @@ read_pbkdf2_params(asn1_node pasn, result = 0; - error: +error: asn1_delete_structure(&pbkdf2_asn); return result; - } /* Reads the PBE parameters from PKCS-12 schemas (*&#%*&#% RSA). @@ -782,7 +750,7 @@ static int read_pkcs12_kdf_params(asn1_node pasn, struct pbkdf2_params *params) /* read the salt */ params->salt_size = sizeof(params->salt); result = - asn1_read_value(pasn, "salt", params->salt, ¶ms->salt_size); + asn1_read_value(pasn, "salt", params->salt, ¶ms->salt_size); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -796,7 +764,7 @@ static int read_pkcs12_kdf_params(asn1_node pasn, struct pbkdf2_params *params) /* read the iteration count */ result = - _gnutls_x509_read_uint(pasn, "iterations", ¶ms->iter_count); + _gnutls_x509_read_uint(pasn, "iterations", ¶ms->iter_count); if (result < 0) return gnutls_assert_val(result); @@ -812,16 +780,15 @@ static int read_pkcs12_kdf_params(asn1_node pasn, struct pbkdf2_params *params) /* Writes the PBE parameters for PKCS-12 schemas. */ -static int -write_pkcs12_kdf_params(asn1_node pasn, const struct pbkdf2_params *kdf_params) +static int write_pkcs12_kdf_params(asn1_node pasn, + const struct pbkdf2_params *kdf_params) { int result; /* write the salt */ - result = - asn1_write_value(pasn, "salt", - kdf_params->salt, kdf_params->salt_size); + result = asn1_write_value(pasn, "salt", kdf_params->salt, + kdf_params->salt_size); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -831,9 +798,8 @@ write_pkcs12_kdf_params(asn1_node pasn, const struct pbkdf2_params *kdf_params) /* write the iteration count */ - result = - _gnutls_x509_write_uint32(pasn, "iterations", - kdf_params->iter_count); + result = _gnutls_x509_write_uint32(pasn, "iterations", + kdf_params->iter_count); if (result < 0) { gnutls_assert(); goto error; @@ -842,21 +808,19 @@ write_pkcs12_kdf_params(asn1_node pasn, const struct pbkdf2_params *kdf_params) return 0; - error: +error: return result; - } -static int -read_pbes2_gost_oid(uint8_t * der, size_t len, char *oid, int oid_size) +static int read_pbes2_gost_oid(uint8_t *der, size_t len, char *oid, + int oid_size) { int result; asn1_node pbe_asn = NULL; - if ((result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.Gost28147-89-Parameters", - &pbe_asn)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.Gost28147-89-Parameters", + &pbe_asn)) != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -877,14 +841,13 @@ read_pbes2_gost_oid(uint8_t * der, size_t len, char *oid, int oid_size) result = 0; - error: +error: asn1_delete_structure(&pbe_asn); return result; } -static int -read_pbes2_enc_params(asn1_node pasn, - const gnutls_datum_t * der, struct pbe_enc_params *params) +static int read_pbes2_enc_params(asn1_node pasn, const gnutls_datum_t *der, + struct pbe_enc_params *params) { int params_start, params_end; int params_len, len, result; @@ -896,19 +859,17 @@ read_pbes2_enc_params(asn1_node pasn, /* Check the encryption algorithm */ len = sizeof(params->pbes2_oid); - result = - asn1_read_value(pasn, "encryptionScheme.algorithm", - params->pbes2_oid, &len); + result = asn1_read_value(pasn, "encryptionScheme.algorithm", + params->pbes2_oid, &len); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } _gnutls_hard_log("encryptionScheme.algorithm: %s\n", params->pbes2_oid); - result = - asn1_der_decoding_startEnd(pasn, der->data, der->size, - "encryptionScheme.parameters", - ¶ms_start, ¶ms_end); + result = asn1_der_decoding_startEnd(pasn, der->data, der->size, + "encryptionScheme.parameters", + ¶ms_start, ¶ms_end); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -927,9 +888,8 @@ read_pbes2_enc_params(asn1_node pasn, } } - if ((result = - pbes2_cipher_oid_to_algo(params->pbes2_oid, - ¶ms->cipher)) < 0) { + if ((result = pbes2_cipher_oid_to_algo(params->pbes2_oid, + ¶ms->cipher)) < 0) { gnutls_assert(); return result; } @@ -942,16 +902,14 @@ read_pbes2_enc_params(asn1_node pasn, return GNUTLS_E_INVALID_REQUEST; } - if ((result = - asn1_create_element(_gnutls_get_pkix(), - p->desc, &pbe_asn)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), p->desc, + &pbe_asn)) != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } - result = - _asn1_strict_der_decode(&pbe_asn, &der->data[params_start], - params_len, NULL); + result = _asn1_strict_der_decode(&pbe_asn, &der->data[params_start], + params_len, NULL); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -960,8 +918,8 @@ read_pbes2_enc_params(asn1_node pasn, /* read the IV */ params->iv_size = sizeof(params->iv); - result = asn1_read_value(pbe_asn, - p->iv_name, params->iv, ¶ms->iv_size); + result = asn1_read_value(pbe_asn, p->iv_name, params->iv, + ¶ms->iv_size); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -971,7 +929,7 @@ read_pbes2_enc_params(asn1_node pasn, result = 0; - error: +error: asn1_delete_structure(&pbe_asn); return result; } @@ -980,11 +938,10 @@ read_pbes2_enc_params(asn1_node pasn, * schema ID. Initially the schema ID should have PBES2_GENERIC, for * PBES2 schemas, and will be updated by this function for details. */ -int -_gnutls_read_pkcs_schema_params(schema_id * schema, const char *password, - const uint8_t * data, int data_size, - struct pbkdf2_params *kdf_params, - struct pbe_enc_params *enc_params) +int _gnutls_read_pkcs_schema_params(schema_id *schema, const char *password, + const uint8_t *data, int data_size, + struct pbkdf2_params *kdf_params, + struct pbe_enc_params *enc_params) { asn1_node pasn = NULL; int result; @@ -995,10 +952,9 @@ _gnutls_read_pkcs_schema_params(schema_id * schema, const char *password, /* Now check the key derivation and the encryption * functions. */ - if ((result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.pkcs-5-PBES2-params", - &pasn)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.pkcs-5-PBES2-params", + &pasn)) != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto error; @@ -1013,7 +969,7 @@ _gnutls_read_pkcs_schema_params(schema_id * schema, const char *password, goto error; } - tmp.data = (uint8_t *) data; + tmp.data = (uint8_t *)data; tmp.size = data_size; result = read_pbkdf2_params(pasn, &tmp, kdf_params); @@ -1042,7 +998,7 @@ _gnutls_read_pkcs_schema_params(schema_id * schema, const char *password, } else if (*schema == PBES1_DES_MD5) { return _gnutls_read_pbkdf1_params(data, data_size, kdf_params, enc_params); - } else { /* PKCS #12 schema */ + } else { /* PKCS #12 schema */ memset(enc_params, 0, sizeof(*enc_params)); p = _gnutls_pkcs_schema_get(*schema); @@ -1054,10 +1010,9 @@ _gnutls_read_pkcs_schema_params(schema_id * schema, const char *password, enc_params->cipher = p->cipher; enc_params->iv_size = gnutls_cipher_get_iv_size(p->cipher); - if ((result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.pkcs-12-PbeParams", - &pasn)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.pkcs-12-PbeParams", + &pasn)) != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto error; @@ -1079,37 +1034,31 @@ _gnutls_read_pkcs_schema_params(schema_id * schema, const char *password, } if (enc_params->iv_size) { - result = - _gnutls_pkcs12_string_to_key(mac_to_entry - (GNUTLS_MAC_SHA1), - 2 /*IV*/, - kdf_params->salt, - kdf_params->salt_size, - kdf_params->iter_count, - password, - enc_params->iv_size, - enc_params->iv); + result = _gnutls_pkcs12_string_to_key( + mac_to_entry(GNUTLS_MAC_SHA1), 2 /*IV*/, + kdf_params->salt, kdf_params->salt_size, + kdf_params->iter_count, password, + enc_params->iv_size, enc_params->iv); if (result < 0) { gnutls_assert(); goto error; } - } asn1_delete_structure(&pasn); return 0; - } /* switch */ + } /* switch */ - error: +error: asn1_delete_structure(&pasn); return result; } -static int -_gnutls_pbes2_string_to_key(unsigned int pass_len, const char *password, - const struct pbkdf2_params *kdf_params, - int key_size, uint8_t * key) +static int _gnutls_pbes2_string_to_key(unsigned int pass_len, + const char *password, + const struct pbkdf2_params *kdf_params, + int key_size, uint8_t *key) { gnutls_datum_t _key; gnutls_datum_t salt; @@ -1123,12 +1072,11 @@ _gnutls_pbes2_string_to_key(unsigned int pass_len, const char *password, kdf_params->iter_count, key, key_size); } -int -_gnutls_pkcs_raw_decrypt_data(schema_id schema, asn1_node pkcs8_asn, - const char *root, const char *_password, - const struct pbkdf2_params *kdf_params, - const struct pbe_enc_params *enc_params, - gnutls_datum_t * decrypted_data) +int _gnutls_pkcs_raw_decrypt_data(schema_id schema, asn1_node pkcs8_asn, + const char *root, const char *_password, + const struct pbkdf2_params *kdf_params, + const struct pbe_enc_params *enc_params, + gnutls_datum_t *decrypted_data) { gnutls_datum_t enc = { NULL, 0 }; uint8_t *key = NULL; @@ -1143,10 +1091,8 @@ _gnutls_pkcs_raw_decrypt_data(schema_id schema, asn1_node pkcs8_asn, if (_password) { gnutls_datum_t pout; - ret = - _gnutls_utf8_password_normalize(_password, - strlen(_password), &pout, - 1); + ret = _gnutls_utf8_password_normalize( + _password, strlen(_password), &pout, 1); if (ret < 0) return gnutls_assert_val(ret); @@ -1166,9 +1112,8 @@ _gnutls_pkcs_raw_decrypt_data(schema_id schema, asn1_node pkcs8_asn, if (schema == PBES1_DES_MD5) { ret = _gnutls_decrypt_pbes1_des_md5_data(password, pass_len, - kdf_params, - enc_params, &enc, - decrypted_data); + kdf_params, enc_params, + &enc, decrypted_data); if (ret < 0) goto error; goto cleanup; @@ -1189,21 +1134,18 @@ _gnutls_pkcs_raw_decrypt_data(schema_id schema, asn1_node pkcs8_asn, /* generate the key */ p = _gnutls_pkcs_schema_get(schema); - if (p != NULL && p->pbes2 != 0) { /* PBES2 */ + if (p != NULL && p->pbes2 != 0) { /* PBES2 */ ret = _gnutls_pbes2_string_to_key(pass_len, password, kdf_params, key_size, key); if (ret < 0) { gnutls_assert(); goto error; } - } else if (p != NULL) { /* PKCS 12 schema */ - ret = - _gnutls_pkcs12_string_to_key(mac_to_entry(GNUTLS_MAC_SHA1), - 1 /*KEY*/, - kdf_params->salt, - kdf_params->salt_size, - kdf_params->iter_count, - password, key_size, key); + } else if (p != NULL) { /* PKCS 12 schema */ + ret = _gnutls_pkcs12_string_to_key( + mac_to_entry(GNUTLS_MAC_SHA1), 1 /*KEY*/, + kdf_params->salt, kdf_params->salt_size, + kdf_params->iter_count, password, key_size, key); if (ret < 0) { gnutls_assert(); @@ -1223,8 +1165,8 @@ _gnutls_pkcs_raw_decrypt_data(schema_id schema, asn1_node pkcs8_asn, block_size = _gnutls_cipher_get_block_size(ce); if (ce->type == CIPHER_BLOCK) { - if (enc.size % block_size != 0 - || (unsigned)enc_params->iv_size != block_size) { + if (enc.size % block_size != 0 || + (unsigned)enc_params->iv_size != block_size) { gnutls_assert(); ret = GNUTLS_E_DECRYPTION_FAILED; goto error; @@ -1243,7 +1185,7 @@ _gnutls_pkcs_raw_decrypt_data(schema_id schema, asn1_node pkcs8_asn, dkey.data = key; dkey.size = key_size; - d_iv.data = (uint8_t *) enc_params->iv; + d_iv.data = (uint8_t *)enc_params->iv; d_iv.size = enc_params->iv_size; ret = gnutls_cipher_init(&ch, ce->id, &dkey, &d_iv); @@ -1266,7 +1208,7 @@ _gnutls_pkcs_raw_decrypt_data(schema_id schema, asn1_node pkcs8_asn, decrypted_data->data = enc.data; if (ce->type == CIPHER_BLOCK && block_size != 1) { - unsigned pslen = (uint8_t) enc.data[enc.size - 1]; + unsigned pslen = (uint8_t)enc.data[enc.size - 1]; unsigned i; if (pslen > block_size || pslen >= enc.size || pslen == 0) { @@ -1292,7 +1234,7 @@ _gnutls_pkcs_raw_decrypt_data(schema_id schema, asn1_node pkcs8_asn, ret = 0; - cleanup: +cleanup: if (password) { zeroize_temp_key(password, pass_len); gnutls_free(password); @@ -1300,7 +1242,7 @@ _gnutls_pkcs_raw_decrypt_data(schema_id schema, asn1_node pkcs8_asn, return ret; - error: +error: if (password) { zeroize_temp_key(password, pass_len); gnutls_free(password); @@ -1321,8 +1263,8 @@ _gnutls_pkcs_raw_decrypt_data(schema_id schema, asn1_node pkcs8_asn, /* Writes the PBKDF2 parameters. */ -static int -write_pbkdf2_params(asn1_node pasn, const struct pbkdf2_params *kdf_params) +static int write_pbkdf2_params(asn1_node pasn, + const struct pbkdf2_params *kdf_params) { int result; asn1_node pbkdf2_asn = NULL; @@ -1331,9 +1273,8 @@ write_pbkdf2_params(asn1_node pasn, const struct pbkdf2_params *kdf_params) /* Write the key derivation algorithm */ - result = - asn1_write_value(pasn, "keyDerivationFunc.algorithm", - PBKDF2_OID, 1); + result = asn1_write_value(pasn, "keyDerivationFunc.algorithm", + PBKDF2_OID, 1); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -1342,10 +1283,9 @@ write_pbkdf2_params(asn1_node pasn, const struct pbkdf2_params *kdf_params) /* Now write the key derivation and the encryption * functions. */ - if ((result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.pkcs-5-PBKDF2-params", - &pbkdf2_asn)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.pkcs-5-PBKDF2-params", + &pbkdf2_asn)) != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -1359,9 +1299,8 @@ write_pbkdf2_params(asn1_node pasn, const struct pbkdf2_params *kdf_params) /* write the salt */ - result = - asn1_write_value(pbkdf2_asn, "salt.specified", - kdf_params->salt, kdf_params->salt_size); + result = asn1_write_value(pbkdf2_asn, "salt.specified", + kdf_params->salt, kdf_params->salt_size); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -1397,8 +1336,8 @@ write_pbkdf2_params(asn1_node pasn, const struct pbkdf2_params *kdf_params) goto error; } - result = asn1_write_value(pbkdf2_asn, "prf.algorithm", - me->mac_oid, strlen(me->mac_oid)); + result = asn1_write_value(pbkdf2_asn, "prf.algorithm", me->mac_oid, + strlen(me->mac_oid)); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -1415,10 +1354,8 @@ write_pbkdf2_params(asn1_node pasn, const struct pbkdf2_params *kdf_params) /* now encode them an put the DER output * in the keyDerivationFunc.parameters */ - result = _gnutls_x509_der_encode_and_copy(pbkdf2_asn, "", - pasn, - "keyDerivationFunc.parameters", - 0); + result = _gnutls_x509_der_encode_and_copy( + pbkdf2_asn, "", pasn, "keyDerivationFunc.parameters", 0); if (result < 0) { gnutls_assert(); goto error; @@ -1426,14 +1363,13 @@ write_pbkdf2_params(asn1_node pasn, const struct pbkdf2_params *kdf_params) result = 0; - error: +error: asn1_delete_structure(&pbkdf2_asn); return result; - } -static int -write_pbes2_enc_params(asn1_node pasn, const struct pbe_enc_params *params) +static int write_pbes2_enc_params(asn1_node pasn, + const struct pbe_enc_params *params) { int result; asn1_node pbe_asn = NULL; @@ -1450,9 +1386,8 @@ write_pbes2_enc_params(asn1_node pasn, const struct pbe_enc_params *params) /* Now check the encryption parameters. */ - if ((result = - asn1_create_element(_gnutls_get_pkix(), - p->desc, &pbe_asn)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), p->desc, + &pbe_asn)) != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -1474,8 +1409,8 @@ write_pbes2_enc_params(asn1_node pasn, const struct pbe_enc_params *params) cipher_oid = p->cipher_oid; } - result = - asn1_write_value(pasn, "encryptionScheme.algorithm", cipher_oid, 1); + result = asn1_write_value(pasn, "encryptionScheme.algorithm", + cipher_oid, 1); if (result != ASN1_SUCCESS) { gnutls_assert(); goto error; @@ -1483,8 +1418,8 @@ write_pbes2_enc_params(asn1_node pasn, const struct pbe_enc_params *params) _gnutls_hard_log("encryptionScheme.algorithm: %s\n", cipher_oid); /* read the salt */ - result = asn1_write_value(pbe_asn, p->iv_name, - params->iv, params->iv_size); + result = asn1_write_value(pbe_asn, p->iv_name, params->iv, + params->iv_size); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -1495,10 +1430,8 @@ write_pbes2_enc_params(asn1_node pasn, const struct pbe_enc_params *params) /* now encode them an put the DER output * in the encryptionScheme.parameters */ - result = _gnutls_x509_der_encode_and_copy(pbe_asn, "", - pasn, - "encryptionScheme.parameters", - 0); + result = _gnutls_x509_der_encode_and_copy( + pbe_asn, "", pasn, "encryptionScheme.parameters", 0); if (result < 0) { gnutls_assert(); goto error; @@ -1506,20 +1439,17 @@ write_pbes2_enc_params(asn1_node pasn, const struct pbe_enc_params *params) result = 0; - error: +error: asn1_delete_structure(&pbe_asn); return result; - } /* Generates a key and also stores the key parameters. */ -int -_gnutls_pkcs_generate_key(schema_id schema, - const char *_password, - struct pbkdf2_params *kdf_params, - struct pbe_enc_params *enc_params, - gnutls_datum_t * key) +int _gnutls_pkcs_generate_key(schema_id schema, const char *_password, + struct pbkdf2_params *kdf_params, + struct pbe_enc_params *enc_params, + gnutls_datum_t *key) { unsigned char rnd[2]; unsigned int pass_len = 0; @@ -1529,10 +1459,8 @@ _gnutls_pkcs_generate_key(schema_id schema, if (_password) { gnutls_datum_t pout; - ret = - _gnutls_utf8_password_normalize(_password, - strlen(_password), &pout, - 0); + ret = _gnutls_utf8_password_normalize( + _password, strlen(_password), &pout, 0); if (ret < 0) return gnutls_assert_val(ret); @@ -1551,10 +1479,10 @@ _gnutls_pkcs_generate_key(schema_id schema, /* generate salt */ kdf_params->salt_size = - MIN(sizeof(kdf_params->salt), (unsigned)(12 + (rnd[1] % 10))); + MIN(sizeof(kdf_params->salt), (unsigned)(12 + (rnd[1] % 10))); p = _gnutls_pkcs_schema_get(schema); - if (p != NULL && p->pbes2 != 0) { /* PBES2 */ + if (p != NULL && p->pbes2 != 0) { /* PBES2 */ enc_params->cipher = p->cipher; } else if (p != NULL) { /* non PBES2 algorithms */ @@ -1575,7 +1503,7 @@ _gnutls_pkcs_generate_key(schema_id schema, kdf_params->iter_count = PKCS12_ITER_COUNT; key->size = kdf_params->key_size = - gnutls_cipher_get_key_size(enc_params->cipher); + gnutls_cipher_get_key_size(enc_params->cipher); enc_params->iv_size = gnutls_cipher_get_iv_size(enc_params->cipher); key->data = gnutls_malloc(key->size); @@ -1608,23 +1536,19 @@ _gnutls_pkcs_generate_key(schema_id schema, } if (enc_params->iv_size) { - ret = gnutls_rnd(GNUTLS_RND_NONCE, - enc_params->iv, enc_params->iv_size); + ret = gnutls_rnd(GNUTLS_RND_NONCE, enc_params->iv, + enc_params->iv_size); if (ret < 0) { gnutls_assert(); goto cleanup; } } - } else { /* PKCS 12 schema */ - ret = - _gnutls_pkcs12_string_to_key(mac_to_entry(GNUTLS_MAC_SHA1), - 1 /*KEY*/, - kdf_params->salt, - kdf_params->salt_size, - kdf_params->iter_count, - password, - kdf_params->key_size, - key->data); + } else { /* PKCS 12 schema */ + ret = _gnutls_pkcs12_string_to_key( + mac_to_entry(GNUTLS_MAC_SHA1), 1 /*KEY*/, + kdf_params->salt, kdf_params->salt_size, + kdf_params->iter_count, password, kdf_params->key_size, + key->data); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -1633,16 +1557,11 @@ _gnutls_pkcs_generate_key(schema_id schema, /* Now generate the IV */ if (enc_params->iv_size) { - ret = - _gnutls_pkcs12_string_to_key(mac_to_entry - (GNUTLS_MAC_SHA1), - 2 /*IV*/, - kdf_params->salt, - kdf_params->salt_size, - kdf_params->iter_count, - password, - enc_params->iv_size, - enc_params->iv); + ret = _gnutls_pkcs12_string_to_key( + mac_to_entry(GNUTLS_MAC_SHA1), 2 /*IV*/, + kdf_params->salt, kdf_params->salt_size, + kdf_params->iter_count, password, + enc_params->iv_size, enc_params->iv); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -1652,7 +1571,7 @@ _gnutls_pkcs_generate_key(schema_id schema, ret = 0; - cleanup: +cleanup: gnutls_free(password); return ret; } @@ -1660,11 +1579,10 @@ _gnutls_pkcs_generate_key(schema_id schema, /* Encodes the parameters to be written in the encryptionAlgorithm.parameters * part. */ -int -_gnutls_pkcs_write_schema_params(schema_id schema, asn1_node pkcs8_asn, - const char *where, - const struct pbkdf2_params *kdf_params, - const struct pbe_enc_params *enc_params) +int _gnutls_pkcs_write_schema_params(schema_id schema, asn1_node pkcs8_asn, + const char *where, + const struct pbkdf2_params *kdf_params, + const struct pbe_enc_params *enc_params) { int result; asn1_node pasn = NULL; @@ -1672,11 +1590,10 @@ _gnutls_pkcs_write_schema_params(schema_id schema, asn1_node pkcs8_asn, p = _gnutls_pkcs_schema_get(schema); - if (p != NULL && p->pbes2 != 0) { /* PBES2 */ - if ((result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.pkcs-5-PBES2-params", - &pasn)) != ASN1_SUCCESS) { + if (p != NULL && p->pbes2 != 0) { /* PBES2 */ + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.pkcs-5-PBES2-params", + &pasn)) != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -1693,8 +1610,8 @@ _gnutls_pkcs_write_schema_params(schema_id schema, asn1_node pkcs8_asn, goto error; } - result = _gnutls_x509_der_encode_and_copy(pasn, "", - pkcs8_asn, where, 0); + result = _gnutls_x509_der_encode_and_copy(pasn, "", pkcs8_asn, + where, 0); if (result < 0) { gnutls_assert(); goto error; @@ -1702,12 +1619,11 @@ _gnutls_pkcs_write_schema_params(schema_id schema, asn1_node pkcs8_asn, asn1_delete_structure(&pasn); - } else if (p != NULL) { /* PKCS #12 */ + } else if (p != NULL) { /* PKCS #12 */ - if ((result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.pkcs-12-PbeParams", - &pasn)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.pkcs-12-PbeParams", + &pasn)) != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto error; @@ -1719,8 +1635,8 @@ _gnutls_pkcs_write_schema_params(schema_id schema, asn1_node pkcs8_asn, goto error; } - result = _gnutls_x509_der_encode_and_copy(pasn, "", - pkcs8_asn, where, 0); + result = _gnutls_x509_der_encode_and_copy(pasn, "", pkcs8_asn, + where, 0); if (result < 0) { gnutls_assert(); goto error; @@ -1731,17 +1647,15 @@ _gnutls_pkcs_write_schema_params(schema_id schema, asn1_node pkcs8_asn, return 0; - error: +error: asn1_delete_structure(&pasn); return result; - } -int -_gnutls_pkcs_raw_encrypt_data(const gnutls_datum_t * plain, - const struct pbe_enc_params *enc_params, - const gnutls_datum_t * key, - gnutls_datum_t * encrypted) +int _gnutls_pkcs_raw_encrypt_data(const gnutls_datum_t *plain, + const struct pbe_enc_params *enc_params, + const gnutls_datum_t *key, + gnutls_datum_t *encrypted) { int result; int data_size; @@ -1754,7 +1668,7 @@ _gnutls_pkcs_raw_encrypt_data(const gnutls_datum_t * plain, ce = cipher_to_entry(enc_params->cipher); pad_size = _gnutls_cipher_get_block_size(ce); - if (pad_size == 1 || ce->type == CIPHER_STREAM) /* stream */ + if (pad_size == 1 || ce->type == CIPHER_STREAM) /* stream */ pad_size = 0; data = gnutls_malloc(plain->size + pad_size); @@ -1775,7 +1689,7 @@ _gnutls_pkcs_raw_encrypt_data(const gnutls_datum_t * plain, data_size = plain->size + pad; - d_iv.data = (uint8_t *) enc_params->iv; + d_iv.data = (uint8_t *)enc_params->iv; d_iv.size = enc_params->iv_size; result = gnutls_cipher_init(&ch, enc_params->cipher, key, &d_iv); if (result < 0) { @@ -1796,7 +1710,7 @@ _gnutls_pkcs_raw_encrypt_data(const gnutls_datum_t * plain, return 0; - error: +error: gnutls_free(data); if (ch) { gnutls_cipher_deinit(ch); diff --git a/lib/x509/pkcs7-output.c b/lib/x509/pkcs7-output.c index b5f00db18a..210e7c84f4 100644 --- a/lib/x509/pkcs7-output.c +++ b/lib/x509/pkcs7-output.c @@ -32,8 +32,8 @@ #define addf _gnutls_buffer_append_printf #define adds _gnutls_buffer_append_str -static void print_dn(gnutls_buffer_st * str, const char *prefix, - const gnutls_datum_t * raw) +static void print_dn(gnutls_buffer_st *str, const char *prefix, + const gnutls_datum_t *raw) { gnutls_x509_dn_t dn = NULL; gnutls_datum_t output = { NULL, 0 }; @@ -59,14 +59,21 @@ static void print_dn(gnutls_buffer_st * str, const char *prefix, addf(str, "%s: %s\n", prefix, output.data); - cleanup: +cleanup: gnutls_x509_dn_deinit(dn); gnutls_free(output.data); } /* Do not encode ASN1 and type for now */ -#define ENTRY(oid, name, type) {oid, sizeof(oid)-1, name, sizeof(name)-1, NULL, type} -#define ENTRY2(oid, name) {oid, sizeof(oid)-1, name, sizeof(name)-1, NULL, ASN1_ETYPE_INVALID} +#define ENTRY(oid, name, type) \ + { \ + oid, sizeof(oid) - 1, name, sizeof(name) - 1, NULL, type \ + } +#define ENTRY2(oid, name) \ + { \ + oid, sizeof(oid) - 1, name, sizeof(name) - 1, NULL, \ + ASN1_ETYPE_INVALID \ + } static const struct oid_to_string pkcs7_attrs[] = { ENTRY("1.2.840.113549.1.9.3", "contentType", ASN1_ETYPE_OBJECT_ID), @@ -86,11 +93,11 @@ static const struct oid_to_string pkcs7_attrs[] = { ENTRY2("1.2.840.113549.1.9.16.2.19", "aa-ets-otherSigCert"), ENTRY2("1.2.840.113549.1.9.16.2.47", "aa-signingCertificateV2"), - {NULL, 0, NULL, 0, NULL, 0} + { NULL, 0, NULL, 0, NULL, 0 } }; -static void print_raw(gnutls_buffer_st * str, const char *prefix, - const gnutls_datum_t * raw) +static void print_raw(gnutls_buffer_st *str, const char *prefix, + const gnutls_datum_t *raw) { gnutls_datum_t result; int ret; @@ -108,8 +115,8 @@ static void print_raw(gnutls_buffer_st * str, const char *prefix, gnutls_free(result.data); } -static void print_pkcs7_info(gnutls_pkcs7_signature_info_st * info, - gnutls_buffer_st * str, +static void print_pkcs7_info(gnutls_pkcs7_signature_info_st *info, + gnutls_buffer_st *str, gnutls_certificate_print_formats_t format) { unsigned i; @@ -148,9 +155,8 @@ static void print_pkcs7_info(gnutls_pkcs7_signature_info_st * info, if (format == GNUTLS_CRT_PRINT_FULL) { if (info->signed_attrs) { for (i = 0;; i++) { - ret = - gnutls_pkcs7_get_attr(info->signed_attrs, i, - &oid, &data, 0); + ret = gnutls_pkcs7_get_attr(info->signed_attrs, + i, &oid, &data, 0); if (ret < 0) break; if (i == 0) @@ -158,18 +164,18 @@ static void print_pkcs7_info(gnutls_pkcs7_signature_info_st * info, entry = _gnutls_oid_get_entry(pkcs7_attrs, oid); snprintf(prefix, sizeof(prefix), "\t\t%s", - (entry - && entry-> - name_desc) ? entry->name_desc : oid); + (entry && entry->name_desc) ? + entry->name_desc : + oid); print_raw(str, prefix, &data); gnutls_free(data.data); } } if (info->unsigned_attrs) { for (i = 0;; i++) { - ret = - gnutls_pkcs7_get_attr(info->unsigned_attrs, - i, &oid, &data, 0); + ret = gnutls_pkcs7_get_attr( + info->unsigned_attrs, i, &oid, &data, + 0); if (ret < 0) break; if (i == 0) @@ -177,9 +183,9 @@ static void print_pkcs7_info(gnutls_pkcs7_signature_info_st * info, entry = _gnutls_oid_get_entry(pkcs7_attrs, oid); snprintf(prefix, sizeof(prefix), "\t\t%s", - (entry - && entry-> - name_desc) ? entry->name_desc : oid); + (entry && entry->name_desc) ? + entry->name_desc : + oid); print_raw(str, prefix, &data); gnutls_free(data.data); } @@ -207,9 +213,9 @@ static void print_pkcs7_info(gnutls_pkcs7_signature_info_st * info, * * Since: 3.6.14 **/ -int gnutls_pkcs7_print_signature_info(gnutls_pkcs7_signature_info_st * info, +int gnutls_pkcs7_print_signature_info(gnutls_pkcs7_signature_info_st *info, gnutls_certificate_print_formats_t format, - gnutls_datum_t * out) + gnutls_datum_t *out) { gnutls_buffer_st str; @@ -238,7 +244,7 @@ int gnutls_pkcs7_print_signature_info(gnutls_pkcs7_signature_info_st * info, **/ int gnutls_pkcs7_print(gnutls_pkcs7_t pkcs7, gnutls_certificate_print_formats_t format, - gnutls_datum_t * out) + gnutls_datum_t *out) { int count, ret, i; gnutls_pkcs7_signature_info_st info; @@ -251,8 +257,8 @@ int gnutls_pkcs7_print(gnutls_pkcs7_t pkcs7, * we don't print the eContent Type explicitly */ oid = gnutls_pkcs7_get_embedded_data_oid(pkcs7); if (oid) { - if (strcmp(oid, DATA_OID) != 0 - && strcmp(oid, DIGESTED_DATA_OID) != 0) { + if (strcmp(oid, DATA_OID) != 0 && + strcmp(oid, DIGESTED_DATA_OID) != 0) { addf(&str, "eContent Type: %s\n", oid); } } @@ -278,8 +284,8 @@ int gnutls_pkcs7_print(gnutls_pkcs7_t pkcs7, addf(&str, "Number of certificates: %u\n\n", count); for (i = 0; i < count; i++) { - ret = - gnutls_pkcs7_get_crt_raw2(pkcs7, i, &data); + ret = gnutls_pkcs7_get_crt_raw2(pkcs7, i, + &data); if (ret < 0) { addf(&str, "Error: cannot print certificate %d\n", @@ -287,9 +293,8 @@ int gnutls_pkcs7_print(gnutls_pkcs7_t pkcs7, continue; } - ret = - gnutls_pem_base64_encode_alloc - ("CERTIFICATE", &data, &b64); + ret = gnutls_pem_base64_encode_alloc( + "CERTIFICATE", &data, &b64); if (ret < 0) { gnutls_free(data.data); continue; @@ -307,8 +312,8 @@ int gnutls_pkcs7_print(gnutls_pkcs7_t pkcs7, addf(&str, "Number of CRLs: %u\n\n", count); for (i = 0; i < count; i++) { - ret = - gnutls_pkcs7_get_crl_raw2(pkcs7, i, &data); + ret = gnutls_pkcs7_get_crl_raw2(pkcs7, i, + &data); if (ret < 0) { addf(&str, "Error: cannot print certificate %d\n", @@ -316,9 +321,8 @@ int gnutls_pkcs7_print(gnutls_pkcs7_t pkcs7, continue; } - ret = - gnutls_pem_base64_encode_alloc("X509 CRL", - &data, &b64); + ret = gnutls_pem_base64_encode_alloc( + "X509 CRL", &data, &b64); if (ret < 0) { gnutls_free(data.data); continue; diff --git a/lib/x509/pkcs7.c b/lib/x509/pkcs7.c index c67bef6c32..8f0b9c3bd7 100644 --- a/lib/x509/pkcs7.c +++ b/lib/x509/pkcs7.c @@ -53,9 +53,8 @@ static int _decode_pkcs7_signed_data(gnutls_pkcs7_t pkcs7) gnutls_datum_t tmp = { NULL, 0 }; len = MAX_OID_SIZE - 1; - result = - asn1_read_value(pkcs7->pkcs7, "contentType", pkcs7->encap_data_oid, - &len); + result = asn1_read_value(pkcs7->pkcs7, "contentType", + pkcs7->encap_data_oid, &len); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -68,9 +67,9 @@ static int _decode_pkcs7_signed_data(gnutls_pkcs7_t pkcs7) return GNUTLS_E_UNKNOWN_PKCS_CONTENT_TYPE; } - if ((result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.pkcs-7-SignedData", - &c2)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.pkcs-7-SignedData", &c2)) != + ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -96,33 +95,30 @@ static int _decode_pkcs7_signed_data(gnutls_pkcs7_t pkcs7) /* read the encapsulated content */ len = MAX_OID_SIZE - 1; - result = - asn1_read_value(c2, "encapContentInfo.eContentType", - pkcs7->encap_data_oid, &len); + result = asn1_read_value(c2, "encapContentInfo.eContentType", + pkcs7->encap_data_oid, &len); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; } - if (strcmp(pkcs7->encap_data_oid, DATA_OID) != 0 - && strcmp(pkcs7->encap_data_oid, DIGESTED_DATA_OID) != 0) { - _gnutls_debug_log - ("Unknown PKCS#7 Encapsulated Content OID '%s'; treating as raw data\n", - pkcs7->encap_data_oid); - + if (strcmp(pkcs7->encap_data_oid, DATA_OID) != 0 && + strcmp(pkcs7->encap_data_oid, DIGESTED_DATA_OID) != 0) { + _gnutls_debug_log( + "Unknown PKCS#7 Encapsulated Content OID '%s'; treating as raw data\n", + pkcs7->encap_data_oid); } /* Try reading as octet string according to rfc5652. If that fails, attempt * a raw read according to rfc2315 */ - result = - _gnutls_x509_read_string(c2, "encapContentInfo.eContent", - &pkcs7->der_signed_data, - ASN1_ETYPE_OCTET_STRING, 1); + result = _gnutls_x509_read_string(c2, "encapContentInfo.eContent", + &pkcs7->der_signed_data, + ASN1_ETYPE_OCTET_STRING, 1); if (result < 0) { - result = - _gnutls_x509_read_value(c2, "encapContentInfo.eContent", - &pkcs7->der_signed_data); + result = _gnutls_x509_read_value(c2, + "encapContentInfo.eContent", + &pkcs7->der_signed_data); if (result < 0) { pkcs7->der_signed_data.data = NULL; pkcs7->der_signed_data.size = 0; @@ -132,21 +128,19 @@ static int _decode_pkcs7_signed_data(gnutls_pkcs7_t pkcs7) unsigned long tag; /* we skip the embedded element's tag and length - uncharted territorry - used by MICROSOFT_CERT_TRUST_LIST */ - result = - asn1_get_tag_der(pkcs7->der_signed_data.data, - pkcs7->der_signed_data.size, &cls, - &tag_len, &tag); + result = asn1_get_tag_der(pkcs7->der_signed_data.data, + pkcs7->der_signed_data.size, + &cls, &tag_len, &tag); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; } - result = - asn1_get_length_ber(pkcs7->der_signed_data.data + - tag_len, - pkcs7->der_signed_data.size - - tag_len, &len_len); + result = asn1_get_length_ber( + pkcs7->der_signed_data.data + tag_len, + pkcs7->der_signed_data.size - tag_len, + &len_len); if (result < 0) { gnutls_assert(); result = GNUTLS_E_ASN1_DER_ERROR; @@ -168,7 +162,7 @@ static int _decode_pkcs7_signed_data(gnutls_pkcs7_t pkcs7) return 0; - cleanup: +cleanup: gnutls_free(tmp.data); if (c2) asn1_delete_structure(&c2); @@ -203,7 +197,7 @@ static int pkcs7_reinit(gnutls_pkcs7_t pkcs7) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int gnutls_pkcs7_init(gnutls_pkcs7_t * pkcs7) +int gnutls_pkcs7_init(gnutls_pkcs7_t *pkcs7) { *pkcs7 = gnutls_calloc(1, sizeof(gnutls_pkcs7_int)); @@ -214,7 +208,7 @@ int gnutls_pkcs7_init(gnutls_pkcs7_t * pkcs7) gnutls_free(*pkcs7); return result; } - return 0; /* success */ + return 0; /* success */ } return GNUTLS_E_MEMORY_ERROR; } @@ -258,9 +252,8 @@ void gnutls_pkcs7_deinit(gnutls_pkcs7_t pkcs7) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_pkcs7_import(gnutls_pkcs7_t pkcs7, const gnutls_datum_t * data, - gnutls_x509_crt_fmt_t format) +int gnutls_pkcs7_import(gnutls_pkcs7_t pkcs7, const gnutls_datum_t *data, + gnutls_x509_crt_fmt_t format) { int result = 0, need_free = 0; gnutls_datum_t _data; @@ -274,9 +267,8 @@ gnutls_pkcs7_import(gnutls_pkcs7_t pkcs7, const gnutls_datum_t * data, /* If the PKCS7 is in PEM format then decode it */ if (format == GNUTLS_X509_FMT_PEM) { - result = - _gnutls_fbase64_decode(PEM_PKCS7, data->data, - data->size, &_data); + result = _gnutls_fbase64_decode(PEM_PKCS7, data->data, + data->size, &_data); if (result < 0) { gnutls_assert(); @@ -312,7 +304,7 @@ gnutls_pkcs7_import(gnutls_pkcs7_t pkcs7, const gnutls_datum_t * data, result = 0; - cleanup: +cleanup: if (need_free) _gnutls_free_datum(&_data); return result; @@ -337,9 +329,8 @@ gnutls_pkcs7_import(gnutls_pkcs7_t pkcs7, const gnutls_datum_t * data, * * Since: 3.4.2 **/ -int -gnutls_pkcs7_get_crt_raw2(gnutls_pkcs7_t pkcs7, - unsigned indx, gnutls_datum_t * cert) +int gnutls_pkcs7_get_crt_raw2(gnutls_pkcs7_t pkcs7, unsigned indx, + gnutls_datum_t *cert) { int result, len; char root2[MAX_NAME_SIZE]; @@ -379,9 +370,9 @@ gnutls_pkcs7_get_crt_raw2(gnutls_pkcs7_t pkcs7, goto cleanup; } - result = - asn1_der_decoding_startEnd(pkcs7->signed_data, tmp.data, - tmp.size, root2, &start, &end); + result = asn1_der_decoding_startEnd(pkcs7->signed_data, + tmp.data, tmp.size, root2, + &start, &end); if (result != ASN1_SUCCESS) { gnutls_assert(); @@ -396,7 +387,7 @@ gnutls_pkcs7_get_crt_raw2(gnutls_pkcs7_t pkcs7, result = GNUTLS_E_UNSUPPORTED_CERTIFICATE_TYPE; } - cleanup: +cleanup: _gnutls_free_datum(&tmp); return result; } @@ -420,10 +411,8 @@ gnutls_pkcs7_get_crt_raw2(gnutls_pkcs7_t pkcs7, * then @certificate_size is updated and * %GNUTLS_E_SHORT_MEMORY_BUFFER is returned. **/ -int -gnutls_pkcs7_get_crt_raw(gnutls_pkcs7_t pkcs7, - unsigned indx, void *certificate, - size_t *certificate_size) +int gnutls_pkcs7_get_crt_raw(gnutls_pkcs7_t pkcs7, unsigned indx, + void *certificate, size_t *certificate_size) { int ret; gnutls_datum_t tmp = { NULL, 0 }; @@ -442,7 +431,7 @@ gnutls_pkcs7_get_crt_raw(gnutls_pkcs7_t pkcs7, if (certificate) memcpy(certificate, tmp.data, tmp.size); - cleanup: +cleanup: _gnutls_free_datum(&tmp); return ret; } @@ -466,11 +455,11 @@ int gnutls_pkcs7_get_crt_count(gnutls_pkcs7_t pkcs7) /* Step 2. Count the CertificateSet */ - result = - asn1_number_of_elements(pkcs7->signed_data, "certificates", &count); + result = asn1_number_of_elements(pkcs7->signed_data, "certificates", + &count); if (result != ASN1_SUCCESS) { gnutls_assert(); - return 0; /* no certificates */ + return 0; /* no certificates */ } return count; @@ -485,7 +474,7 @@ int gnutls_pkcs7_get_crt_count(gnutls_pkcs7_t pkcs7) * * Since: 3.4.2 **/ -void gnutls_pkcs7_signature_info_deinit(gnutls_pkcs7_signature_info_st * info) +void gnutls_pkcs7_signature_info_deinit(gnutls_pkcs7_signature_info_st *info) { gnutls_free(info->sig.data); gnutls_free(info->issuer_dn.data); @@ -527,7 +516,7 @@ static time_t parse_time(gnutls_pkcs7_t pkcs7, const char *root) ret = _gnutls_x509_get_time(c2, "", 0); - cleanup: +cleanup: asn1_delete_structure(&c2); return ret; } @@ -551,8 +540,8 @@ int gnutls_pkcs7_get_signature_count(gnutls_pkcs7_t pkcs7) if (pkcs7 == NULL) return GNUTLS_E_INVALID_REQUEST; - ret = - asn1_number_of_elements(pkcs7->signed_data, "signerInfos", &count); + ret = asn1_number_of_elements(pkcs7->signed_data, "signerInfos", + &count); if (ret != ASN1_SUCCESS) { gnutls_assert(); return 0; @@ -577,7 +566,7 @@ int gnutls_pkcs7_get_signature_count(gnutls_pkcs7_t pkcs7) * Since: 3.4.2 **/ int gnutls_pkcs7_get_signature_info(gnutls_pkcs7_t pkcs7, unsigned idx, - gnutls_pkcs7_signature_info_st * info) + gnutls_pkcs7_signature_info_st *info) { int ret, count, len; char root[256]; @@ -593,8 +582,8 @@ int gnutls_pkcs7_get_signature_info(gnutls_pkcs7_t pkcs7, unsigned idx, memset(info, 0, sizeof(*info)); info->signing_time = -1; - ret = - asn1_number_of_elements(pkcs7->signed_data, "signerInfos", &count); + ret = asn1_number_of_elements(pkcs7->signed_data, "signerInfos", + &count); if (ret != ASN1_SUCCESS || idx + 1 > (unsigned)count) { gnutls_assert(); return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; @@ -657,28 +646,26 @@ int gnutls_pkcs7_get_signature_info(gnutls_pkcs7_t pkcs7, unsigned idx, "signerInfos.?%u.sid.issuerAndSerialNumber.issuer.rdnSequence", idx + 1); /* read the signature */ - ret = - _gnutls_x509_get_raw_field(pkcs7->signed_data, root, - &info->issuer_dn); + ret = _gnutls_x509_get_raw_field(pkcs7->signed_data, root, + &info->issuer_dn); if (ret >= 0) { - snprintf(root, sizeof(root), - "signerInfos.?%u.sid.issuerAndSerialNumber.serialNumber", - idx + 1); + snprintf( + root, sizeof(root), + "signerInfos.?%u.sid.issuerAndSerialNumber.serialNumber", + idx + 1); /* read the signature */ - ret = - _gnutls_x509_read_value(pkcs7->signed_data, root, - &info->signer_serial); + ret = _gnutls_x509_read_value(pkcs7->signed_data, root, + &info->signer_serial); if (ret < 0) { gnutls_assert(); goto fail; } - } else { /* keyid */ + } else { /* keyid */ snprintf(root, sizeof(root), "signerInfos.?%u.sid.subjectKeyIdentifier", idx + 1); /* read the signature */ - ret = - _gnutls_x509_read_value(pkcs7->signed_data, root, - &info->issuer_keyid); + ret = _gnutls_x509_read_value(pkcs7->signed_data, root, + &info->issuer_keyid); if (ret < 0) { gnutls_assert(); } @@ -748,8 +735,8 @@ int gnutls_pkcs7_get_signature_info(gnutls_pkcs7_t pkcs7, unsigned idx, goto fail; } - ret = - gnutls_pkcs7_add_attr(&info->unsigned_attrs, oid, &tmp, 0); + ret = gnutls_pkcs7_add_attr(&info->unsigned_attrs, oid, &tmp, + 0); gnutls_free(tmp.data); if (ret < 0) { @@ -759,11 +746,11 @@ int gnutls_pkcs7_get_signature_info(gnutls_pkcs7_t pkcs7, unsigned idx, } return 0; - fail: +fail: gnutls_free(tmp.data); gnutls_pkcs7_signature_info_deinit(info); return ret; - unsupp_algo: +unsupp_algo: return GNUTLS_E_UNKNOWN_ALGORITHM; } @@ -771,7 +758,7 @@ int gnutls_pkcs7_get_signature_info(gnutls_pkcs7_t pkcs7, unsigned idx, * and matches our calculated hash */ static int verify_hash_attr(gnutls_pkcs7_t pkcs7, const char *root, gnutls_sign_algorithm_t algo, - const gnutls_datum_t * data) + const gnutls_datum_t *data) { unsigned hash; gnutls_datum_t tmp = { NULL, 0 }; @@ -808,10 +795,8 @@ static int verify_hash_attr(gnutls_pkcs7_t pkcs7, const char *root, for (i = 0;; i++) { snprintf(name, sizeof(name), "%s.signedAttrs.?%u", root, i + 1); - ret = _gnutls_x509_decode_and_read_attribute(pkcs7->signed_data, - name, oid, - sizeof(oid), &tmp, - 1, 0); + ret = _gnutls_x509_decode_and_read_attribute( + pkcs7->signed_data, name, oid, sizeof(oid), &tmp, 1, 0); if (ret < 0) { if (ret == GNUTLS_E_ASN1_ELEMENT_NOT_FOUND) break; @@ -819,17 +804,16 @@ static int verify_hash_attr(gnutls_pkcs7_t pkcs7, const char *root, } if (strcmp(oid, ATTR_MESSAGE_DIGEST) == 0) { - ret = - _gnutls_x509_decode_string(ASN1_ETYPE_OCTET_STRING, - tmp.data, tmp.size, - &tmp2, 0); + ret = _gnutls_x509_decode_string( + ASN1_ETYPE_OCTET_STRING, tmp.data, tmp.size, + &tmp2, 0); if (ret < 0) { gnutls_assert(); goto cleanup; } - if (tmp2.size == hash_size - && memcmp(hash_output, tmp2.data, tmp2.size) == 0) { + if (tmp2.size == hash_size && + memcmp(hash_output, tmp2.data, tmp2.size) == 0) { msg_digest_ok = 1; } else { gnutls_assert(); @@ -844,17 +828,16 @@ static int verify_hash_attr(gnutls_pkcs7_t pkcs7, const char *root, num_cont_types++; /* check if it matches */ - ret = - _gnutls_x509_get_raw_field(pkcs7->signed_data, - "encapContentInfo.eContentType", - &tmp2); + ret = _gnutls_x509_get_raw_field( + pkcs7->signed_data, + "encapContentInfo.eContentType", &tmp2); if (ret < 0) { gnutls_assert(); goto cleanup; } - if (tmp2.size != tmp.size - || memcmp(tmp.data, tmp2.data, tmp2.size) != 0) { + if (tmp2.size != tmp.size || + memcmp(tmp.data, tmp2.data, tmp2.size) != 0) { gnutls_assert(); ret = GNUTLS_E_PARSING_ERROR; goto cleanup; @@ -870,7 +853,7 @@ static int verify_hash_attr(gnutls_pkcs7_t pkcs7, const char *root, else ret = gnutls_assert_val(GNUTLS_E_PK_SIG_VERIFY_FAILED); - cleanup: +cleanup: gnutls_free(tmp.data); gnutls_free(tmp2.data); return ret; @@ -880,9 +863,9 @@ static int verify_hash_attr(gnutls_pkcs7_t pkcs7, const char *root, * decided that this should not be an easy task. */ static int figure_pkcs7_sigdata(gnutls_pkcs7_t pkcs7, const char *root, - const gnutls_datum_t * data, + const gnutls_datum_t *data, gnutls_sign_algorithm_t algo, - gnutls_datum_t * sigdata) + gnutls_datum_t *sigdata) { int ret; char name[256]; @@ -933,9 +916,8 @@ static int figure_pkcs7_sigdata(gnutls_pkcs7_t pkcs7, const char *root, * * Since: 3.4.8 **/ -int -gnutls_pkcs7_get_embedded_data(gnutls_pkcs7_t pkcs7, unsigned flags, - gnutls_datum_t * data) +int gnutls_pkcs7_get_embedded_data(gnutls_pkcs7_t pkcs7, unsigned flags, + gnutls_datum_t *data) { if (pkcs7 == NULL) return GNUTLS_E_INVALID_REQUEST; @@ -945,13 +927,11 @@ gnutls_pkcs7_get_embedded_data(gnutls_pkcs7_t pkcs7, unsigned flags, if (flags & GNUTLS_PKCS7_EDATA_GET_RAW) { if (pkcs7->signed_data == NULL) - return - gnutls_assert_val - (GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); + return gnutls_assert_val( + GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); - return _gnutls_x509_read_value(pkcs7->signed_data, - "encapContentInfo.eContent", - data); + return _gnutls_x509_read_value( + pkcs7->signed_data, "encapContentInfo.eContent", data); } else { return _gnutls_set_datum(data, pkcs7->der_signed_data.data, pkcs7->der_signed_data.size); @@ -1007,10 +987,9 @@ const char *gnutls_pkcs7_get_embedded_data_oid(gnutls_pkcs7_t pkcs7) * * Since: 3.4.2 **/ -int gnutls_pkcs7_verify_direct(gnutls_pkcs7_t pkcs7, - gnutls_x509_crt_t signer, - unsigned idx, - const gnutls_datum_t * data, unsigned flags) +int gnutls_pkcs7_verify_direct(gnutls_pkcs7_t pkcs7, gnutls_x509_crt_t signer, + unsigned idx, const gnutls_datum_t *data, + unsigned flags) { int count, ret; gnutls_datum_t tmpdata = { NULL, 0 }; @@ -1023,8 +1002,8 @@ int gnutls_pkcs7_verify_direct(gnutls_pkcs7_t pkcs7, if (pkcs7 == NULL) return GNUTLS_E_INVALID_REQUEST; - ret = - asn1_number_of_elements(pkcs7->signed_data, "signerInfos", &count); + ret = asn1_number_of_elements(pkcs7->signed_data, "signerInfos", + &count); if (ret != ASN1_SUCCESS || idx + 1 > (unsigned)count) { gnutls_assert(); return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; @@ -1043,14 +1022,13 @@ int gnutls_pkcs7_verify_direct(gnutls_pkcs7_t pkcs7, goto cleanup; } - ret = - gnutls_x509_crt_verify_data2(signer, info.algo, flags, &sigdata, - &info.sig); + ret = gnutls_x509_crt_verify_data2(signer, info.algo, flags, &sigdata, + &info.sig); if (ret < 0) { gnutls_assert(); } - cleanup: +cleanup: gnutls_free(tmpdata.data); gnutls_free(sigdata.data); gnutls_pkcs7_signature_info_deinit(&info); @@ -1101,17 +1079,15 @@ static gnutls_x509_crt_t find_verified_issuer_of(gnutls_pkcs7_t pkcs7, goto skip; } - ret = - gnutls_x509_crt_verify(cert, &issuer, 1, - vflags | - GNUTLS_VERIFY_DO_NOT_ALLOW_SAME, - &vtmp); - if (ret < 0 || vtmp != 0 - || (purpose != NULL - && !_gnutls_check_key_purpose(issuer, purpose, 0))) { - gnutls_assert(); /* maybe next one is trusted */ + ret = gnutls_x509_crt_verify( + cert, &issuer, 1, + vflags | GNUTLS_VERIFY_DO_NOT_ALLOW_SAME, &vtmp); + if (ret < 0 || vtmp != 0 || + (purpose != NULL && + !_gnutls_check_key_purpose(issuer, purpose, 0))) { + gnutls_assert(); /* maybe next one is trusted */ _gnutls_cert_log("failed verification with", issuer); - skip: + skip: gnutls_x509_crt_deinit(issuer); issuer = NULL; gnutls_free(tmp.data); @@ -1130,13 +1106,13 @@ static gnutls_x509_crt_t find_verified_issuer_of(gnutls_pkcs7_t pkcs7, } goto cleanup; - fail: +fail: if (issuer) { gnutls_x509_crt_deinit(issuer); issuer = NULL; } - cleanup: +cleanup: gnutls_free(tmp.data); return issuer; @@ -1145,11 +1121,10 @@ static gnutls_x509_crt_t find_verified_issuer_of(gnutls_pkcs7_t pkcs7, /* Finds a certificate that is issued by @issuer -if given-, and matches * either the serial number or the key ID (both in @info) . */ -static gnutls_x509_crt_t find_child_of_with_serial(gnutls_pkcs7_t pkcs7, - gnutls_x509_crt_t issuer, - const char *purpose, - gnutls_pkcs7_signature_info_st - * info) +static gnutls_x509_crt_t +find_child_of_with_serial(gnutls_pkcs7_t pkcs7, gnutls_x509_crt_t issuer, + const char *purpose, + gnutls_pkcs7_signature_info_st *info) { gnutls_x509_crt_t crt = NULL; int ret, count; @@ -1178,8 +1153,8 @@ static gnutls_x509_crt_t find_child_of_with_serial(gnutls_pkcs7_t pkcs7, goto fail; } - ret = - gnutls_x509_crt_import(crt, &tmpdata, GNUTLS_X509_FMT_DER); + ret = gnutls_x509_crt_import(crt, &tmpdata, + GNUTLS_X509_FMT_DER); if (ret < 0) { gnutls_assert(); goto fail; @@ -1209,29 +1184,28 @@ static gnutls_x509_crt_t find_child_of_with_serial(gnutls_pkcs7_t pkcs7, goto skip; } - if (tmp_size != info->signer_serial.size - || memcmp(info->signer_serial.data, tmp, - tmp_size) != 0) { + if (tmp_size != info->signer_serial.size || + memcmp(info->signer_serial.data, tmp, tmp_size) != + 0) { _gnutls_cert_log("doesn't match serial", crt); gnutls_assert(); goto skip; } } else if (info->issuer_keyid.size > 0) { tmp_size = sizeof(tmp); - ret = - gnutls_x509_crt_get_subject_key_id(crt, tmp, - &tmp_size, NULL); + ret = gnutls_x509_crt_get_subject_key_id( + crt, tmp, &tmp_size, NULL); if (ret < 0) { gnutls_assert(); goto skip; } - if (tmp_size != info->issuer_keyid.size - || memcmp(info->issuer_keyid.data, tmp, - tmp_size) != 0) { + if (tmp_size != info->issuer_keyid.size || + memcmp(info->issuer_keyid.data, tmp, tmp_size) != + 0) { _gnutls_cert_log("doesn't match key ID", crt); gnutls_assert(); - skip: + skip: gnutls_x509_crt_deinit(crt); crt = NULL; gnutls_free(tmpdata.data); @@ -1255,24 +1229,23 @@ static gnutls_x509_crt_t find_child_of_with_serial(gnutls_pkcs7_t pkcs7, } goto cleanup; - fail: +fail: if (crt) { gnutls_x509_crt_deinit(crt); crt = NULL; } - cleanup: +cleanup: gnutls_free(tmpdata.data); return crt; } -static -gnutls_x509_crt_t find_signer(gnutls_pkcs7_t pkcs7, gnutls_x509_trust_list_t tl, - gnutls_typed_vdata_st * vdata, - unsigned vdata_size, - unsigned vflags, - gnutls_pkcs7_signature_info_st * info) +static gnutls_x509_crt_t find_signer(gnutls_pkcs7_t pkcs7, + gnutls_x509_trust_list_t tl, + gnutls_typed_vdata_st *vdata, + unsigned vdata_size, unsigned vflags, + gnutls_pkcs7_signature_info_st *info) { gnutls_x509_crt_t issuer = NULL; gnutls_x509_crt_t signer = NULL; @@ -1282,13 +1255,8 @@ gnutls_x509_crt_t find_signer(gnutls_pkcs7_t pkcs7, gnutls_x509_trust_list_t tl, const char *purpose = NULL; if (info->issuer_keyid.data) { - ret = - gnutls_x509_trust_list_get_issuer_by_subject_key_id(tl, - NULL, - &info-> - issuer_keyid, - &signer, - 0); + ret = gnutls_x509_trust_list_get_issuer_by_subject_key_id( + tl, NULL, &info->issuer_keyid, &signer, 0); if (ret < 0) { gnutls_assert(); signer = NULL; @@ -1305,10 +1273,8 @@ gnutls_x509_crt_t find_signer(gnutls_pkcs7_t pkcs7, gnutls_x509_trust_list_t tl, /* this will give us the issuer of the signer (wtf) */ if (info->issuer_dn.data && signer == NULL) { - ret = - gnutls_x509_trust_list_get_issuer_by_dn(tl, - &info->issuer_dn, - &issuer, 0); + ret = gnutls_x509_trust_list_get_issuer_by_dn( + tl, &info->issuer_dn, &issuer, 0); if (ret < 0) { gnutls_assert(); signer = NULL; @@ -1317,9 +1283,8 @@ gnutls_x509_crt_t find_signer(gnutls_pkcs7_t pkcs7, gnutls_x509_trust_list_t tl, if (issuer) { /* try to find the actual signer in the list of * certificates */ - signer = - find_child_of_with_serial(pkcs7, issuer, purpose, - info); + signer = find_child_of_with_serial(pkcs7, issuer, + purpose, info); if (signer == NULL) { gnutls_assert(); goto fail; @@ -1341,10 +1306,8 @@ gnutls_x509_crt_t find_signer(gnutls_pkcs7_t pkcs7, gnutls_x509_trust_list_t tl, /* if the signer cannot be verified from our trust list, make a chain of certificates * starting from the identified signer, to a root we know. */ - ret = - gnutls_x509_trust_list_verify_crt2(tl, &signer, 1, vdata, - vdata_size, vflags, - &vtmp, NULL); + ret = gnutls_x509_trust_list_verify_crt2( + tl, &signer, 1, vdata, vdata_size, vflags, &vtmp, NULL); if (ret < 0 || vtmp != 0) { gnutls_x509_crt_t prev = NULL; @@ -1356,13 +1319,12 @@ gnutls_x509_crt_t find_signer(gnutls_pkcs7_t pkcs7, gnutls_x509_trust_list_t tl, } prev = issuer; - issuer = - find_verified_issuer_of(pkcs7, issuer, - purpose, vflags); + issuer = find_verified_issuer_of( + pkcs7, issuer, purpose, vflags); - if (issuer != NULL - && gnutls_x509_crt_check_issuer(issuer, - issuer)) { + if (issuer != NULL && + gnutls_x509_crt_check_issuer(issuer, + issuer)) { if (prev && prev != signer) gnutls_x509_crt_deinit(prev); prev = issuer; @@ -1370,38 +1332,33 @@ gnutls_x509_crt_t find_signer(gnutls_pkcs7_t pkcs7, gnutls_x509_trust_list_t tl, } } while (issuer != NULL); - issuer = prev; /* the last we have seen */ + issuer = prev; /* the last we have seen */ if (issuer == NULL) { gnutls_assert(); goto fail; } - ret = - gnutls_x509_trust_list_verify_crt2(tl, &issuer, 1, - vdata, - vdata_size, - vflags, &vtmp, - NULL); + ret = gnutls_x509_trust_list_verify_crt2( + tl, &issuer, 1, vdata, vdata_size, vflags, + &vtmp, NULL); if (ret < 0 || vtmp != 0) { /* could not construct a valid chain */ - _gnutls_reason_log - ("signer's chain failed trust list verification", - vtmp); + _gnutls_reason_log( + "signer's chain failed trust list verification", + vtmp); gnutls_assert(); goto fail; } } } else { /* verify that the signer we got is trusted */ - ret = - gnutls_x509_trust_list_verify_crt2(tl, &signer, 1, vdata, - vdata_size, vflags, - &vtmp, NULL); + ret = gnutls_x509_trust_list_verify_crt2( + tl, &signer, 1, vdata, vdata_size, vflags, &vtmp, NULL); if (ret < 0 || vtmp != 0) { /* could not construct a valid chain */ - _gnutls_reason_log - ("signer failed trust list verification", vtmp); + _gnutls_reason_log( + "signer failed trust list verification", vtmp); gnutls_assert(); goto fail; } @@ -1414,7 +1371,7 @@ gnutls_x509_crt_t find_signer(gnutls_pkcs7_t pkcs7, gnutls_x509_trust_list_t tl, goto cleanup; - fail: +fail: if (signer != NULL) { if (issuer == signer) issuer = NULL; @@ -1422,7 +1379,7 @@ gnutls_x509_crt_t find_signer(gnutls_pkcs7_t pkcs7, gnutls_x509_trust_list_t tl, signer = NULL; } - cleanup: +cleanup: if (issuer != NULL) { gnutls_x509_crt_deinit(issuer); issuer = NULL; @@ -1454,12 +1411,10 @@ gnutls_x509_crt_t find_signer(gnutls_pkcs7_t pkcs7, gnutls_x509_trust_list_t tl, * * Since: 3.4.2 **/ -int gnutls_pkcs7_verify(gnutls_pkcs7_t pkcs7, - gnutls_x509_trust_list_t tl, - gnutls_typed_vdata_st * vdata, - unsigned int vdata_size, - unsigned idx, - const gnutls_datum_t * data, unsigned flags) +int gnutls_pkcs7_verify(gnutls_pkcs7_t pkcs7, gnutls_x509_trust_list_t tl, + gnutls_typed_vdata_st *vdata, unsigned int vdata_size, + unsigned idx, const gnutls_datum_t *data, + unsigned flags) { int count, ret; gnutls_datum_t tmpdata = { NULL, 0 }; @@ -1473,8 +1428,8 @@ int gnutls_pkcs7_verify(gnutls_pkcs7_t pkcs7, if (pkcs7 == NULL) return GNUTLS_E_INVALID_REQUEST; - ret = - asn1_number_of_elements(pkcs7->signed_data, "signerInfos", &count); + ret = asn1_number_of_elements(pkcs7->signed_data, "signerInfos", + &count); if (ret != ASN1_SUCCESS || idx + 1 > (unsigned)count) { gnutls_assert(); return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; @@ -1496,10 +1451,9 @@ int gnutls_pkcs7_verify(gnutls_pkcs7_t pkcs7, signer = find_signer(pkcs7, tl, vdata, vdata_size, flags, &info); if (signer) { - ret = - gnutls_x509_crt_verify_data3(signer, info.algo, vdata, - vdata_size, &sigdata, - &info.sig, flags); + ret = gnutls_x509_crt_verify_data3(signer, info.algo, vdata, + vdata_size, &sigdata, + &info.sig, flags); if (ret < 0) { _gnutls_cert_log("failed struct verification with", signer); @@ -1511,7 +1465,7 @@ int gnutls_pkcs7_verify(gnutls_pkcs7_t pkcs7, ret = GNUTLS_E_PK_SIG_VERIFY_FAILED; } - cleanup: +cleanup: gnutls_free(tmpdata.data); gnutls_free(sigdata.data); gnutls_pkcs7_signature_info_deinit(&info); @@ -1530,8 +1484,8 @@ static void disable_opt_fields(gnutls_pkcs7_t pkcs7) (void)asn1_write_value(pkcs7->signed_data, "crls", NULL, 0); } - result = - asn1_number_of_elements(pkcs7->signed_data, "certificates", &count); + result = asn1_number_of_elements(pkcs7->signed_data, "certificates", + &count); if (result != ASN1_SUCCESS || count == 0) { (void)asn1_write_value(pkcs7->signed_data, "certificates", NULL, 0); @@ -1549,19 +1503,16 @@ static int reencode(gnutls_pkcs7_t pkcs7) /* Replace the old content with the new */ - result = - _gnutls_x509_der_encode_and_copy(pkcs7->signed_data, "", - pkcs7->pkcs7, "content", - 0); + result = _gnutls_x509_der_encode_and_copy( + pkcs7->signed_data, "", pkcs7->pkcs7, "content", 0); if (result < 0) { return gnutls_assert_val(result); } /* Write the content type of the signed data */ - result = - asn1_write_value(pkcs7->pkcs7, "contentType", - SIGNED_DATA_OID, 1); + result = asn1_write_value(pkcs7->pkcs7, "contentType", + SIGNED_DATA_OID, 1); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -1590,10 +1541,8 @@ static int reencode(gnutls_pkcs7_t pkcs7) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_pkcs7_export(gnutls_pkcs7_t pkcs7, - gnutls_x509_crt_fmt_t format, void *output_data, - size_t *output_data_size) +int gnutls_pkcs7_export(gnutls_pkcs7_t pkcs7, gnutls_x509_crt_fmt_t format, + void *output_data, size_t *output_data_size) { int ret; if (pkcs7 == NULL) @@ -1624,9 +1573,8 @@ gnutls_pkcs7_export(gnutls_pkcs7_t pkcs7, * * Since: 3.1.3 **/ -int -gnutls_pkcs7_export2(gnutls_pkcs7_t pkcs7, - gnutls_x509_crt_fmt_t format, gnutls_datum_t * out) +int gnutls_pkcs7_export2(gnutls_pkcs7_t pkcs7, gnutls_x509_crt_fmt_t format, + gnutls_datum_t *out) { int ret; if (pkcs7 == NULL) @@ -1641,15 +1589,15 @@ gnutls_pkcs7_export2(gnutls_pkcs7_t pkcs7, /* Creates an empty signed data structure in the pkcs7 * structure and returns a handle to the signed data. */ -static int create_empty_signed_data(asn1_node pkcs7, asn1_node * sdata) +static int create_empty_signed_data(asn1_node pkcs7, asn1_node *sdata) { int result; *sdata = NULL; - if ((result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.pkcs-7-SignedData", - sdata)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.pkcs-7-SignedData", sdata)) != + ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; @@ -1668,9 +1616,8 @@ static int create_empty_signed_data(asn1_node pkcs7, asn1_node * sdata) */ /* id-data */ - result = - asn1_write_value(*sdata, "encapContentInfo.eContentType", - DIGESTED_DATA_OID, 1); + result = asn1_write_value(*sdata, "encapContentInfo.eContentType", + DIGESTED_DATA_OID, 1); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -1695,10 +1642,9 @@ static int create_empty_signed_data(asn1_node pkcs7, asn1_node * sdata) return 0; - cleanup: +cleanup: asn1_delete_structure(sdata); return result; - } /** @@ -1712,7 +1658,7 @@ static int create_empty_signed_data(asn1_node pkcs7, asn1_node * sdata) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int gnutls_pkcs7_set_crt_raw(gnutls_pkcs7_t pkcs7, const gnutls_datum_t * crt) +int gnutls_pkcs7_set_crt_raw(gnutls_pkcs7_t pkcs7, const gnutls_datum_t *crt) { int result; @@ -1726,8 +1672,8 @@ int gnutls_pkcs7_set_crt_raw(gnutls_pkcs7_t pkcs7, const gnutls_datum_t * crt) /* The pkcs7 structure is new, so create the * signedData. */ - result = - create_empty_signed_data(pkcs7->pkcs7, &pkcs7->signed_data); + result = create_empty_signed_data(pkcs7->pkcs7, + &pkcs7->signed_data); if (result < 0) { gnutls_assert(); return result; @@ -1744,19 +1690,17 @@ int gnutls_pkcs7_set_crt_raw(gnutls_pkcs7_t pkcs7, const gnutls_datum_t * crt) goto cleanup; } - result = - asn1_write_value(pkcs7->signed_data, "certificates.?LAST", - "certificate", 1); + result = asn1_write_value(pkcs7->signed_data, "certificates.?LAST", + "certificate", 1); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto cleanup; } - result = - asn1_write_value(pkcs7->signed_data, - "certificates.?LAST.certificate", crt->data, - crt->size); + result = asn1_write_value(pkcs7->signed_data, + "certificates.?LAST.certificate", crt->data, + crt->size); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -1765,7 +1709,7 @@ int gnutls_pkcs7_set_crt_raw(gnutls_pkcs7_t pkcs7, const gnutls_datum_t * crt) result = 0; - cleanup: +cleanup: return result; } @@ -1840,7 +1784,7 @@ int gnutls_pkcs7_delete_crt(gnutls_pkcs7_t pkcs7, int indx) return 0; - cleanup: +cleanup: return result; } @@ -1861,9 +1805,8 @@ int gnutls_pkcs7_delete_crt(gnutls_pkcs7_t pkcs7, int indx) * * Since: 3.4.2 **/ -int -gnutls_pkcs7_get_crl_raw2(gnutls_pkcs7_t pkcs7, - unsigned indx, gnutls_datum_t * crl) +int gnutls_pkcs7_get_crl_raw2(gnutls_pkcs7_t pkcs7, unsigned indx, + gnutls_datum_t *crl) { int result; char root2[MAX_NAME_SIZE]; @@ -1886,9 +1829,8 @@ gnutls_pkcs7_get_crl_raw2(gnutls_pkcs7_t pkcs7, /* Get the raw CRL */ - result = - asn1_der_decoding_startEnd(pkcs7->signed_data, tmp.data, tmp.size, - root2, &start, &end); + result = asn1_der_decoding_startEnd(pkcs7->signed_data, tmp.data, + tmp.size, root2, &start, &end); if (result != ASN1_SUCCESS) { gnutls_assert(); @@ -1900,7 +1842,7 @@ gnutls_pkcs7_get_crl_raw2(gnutls_pkcs7_t pkcs7, result = _gnutls_set_datum(crl, &tmp.data[start], end); - cleanup: +cleanup: _gnutls_free_datum(&tmp); return result; } @@ -1920,9 +1862,8 @@ gnutls_pkcs7_get_crl_raw2(gnutls_pkcs7_t pkcs7, * returned. After the last crl has been read * %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE will be returned. **/ -int -gnutls_pkcs7_get_crl_raw(gnutls_pkcs7_t pkcs7, - unsigned indx, void *crl, size_t *crl_size) +int gnutls_pkcs7_get_crl_raw(gnutls_pkcs7_t pkcs7, unsigned indx, void *crl, + size_t *crl_size) { int ret; gnutls_datum_t tmp = { NULL, 0 }; @@ -1943,7 +1884,7 @@ gnutls_pkcs7_get_crl_raw(gnutls_pkcs7_t pkcs7, if (crl) memcpy(crl, tmp.data, tmp.size); - cleanup: +cleanup: _gnutls_free_datum(&tmp); return ret; } @@ -1970,11 +1911,10 @@ int gnutls_pkcs7_get_crl_count(gnutls_pkcs7_t pkcs7) result = asn1_number_of_elements(pkcs7->signed_data, "crls", &count); if (result != ASN1_SUCCESS) { gnutls_assert(); - return 0; /* no crls */ + return 0; /* no crls */ } return count; - } /** @@ -1987,7 +1927,7 @@ int gnutls_pkcs7_get_crl_count(gnutls_pkcs7_t pkcs7) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int gnutls_pkcs7_set_crl_raw(gnutls_pkcs7_t pkcs7, const gnutls_datum_t * crl) +int gnutls_pkcs7_set_crl_raw(gnutls_pkcs7_t pkcs7, const gnutls_datum_t *crl) { int result; @@ -2001,8 +1941,8 @@ int gnutls_pkcs7_set_crl_raw(gnutls_pkcs7_t pkcs7, const gnutls_datum_t * crl) /* The pkcs7 structure is new, so create the * signedData. */ - result = - create_empty_signed_data(pkcs7->pkcs7, &pkcs7->signed_data); + result = create_empty_signed_data(pkcs7->pkcs7, + &pkcs7->signed_data); if (result < 0) { gnutls_assert(); return result; @@ -2019,9 +1959,8 @@ int gnutls_pkcs7_set_crl_raw(gnutls_pkcs7_t pkcs7, const gnutls_datum_t * crl) goto cleanup; } - result = - asn1_write_value(pkcs7->signed_data, "crls.?LAST", crl->data, - crl->size); + result = asn1_write_value(pkcs7->signed_data, "crls.?LAST", crl->data, + crl->size); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -2030,7 +1969,7 @@ int gnutls_pkcs7_set_crl_raw(gnutls_pkcs7_t pkcs7, const gnutls_datum_t * crl) result = 0; - cleanup: +cleanup: return result; } @@ -2104,7 +2043,7 @@ int gnutls_pkcs7_delete_crl(gnutls_pkcs7_t pkcs7, int indx) return 0; - cleanup: +cleanup: return result; } @@ -2134,9 +2073,8 @@ static int write_signer_id(asn1_node c2, const char *root, } serial_size = sizeof(serial); - result = - gnutls_x509_crt_get_subject_key_id(signer, serial, - &serial_size, NULL); + result = gnutls_x509_crt_get_subject_key_id(signer, serial, + &serial_size, NULL); if (result < 0) return gnutls_assert_val(result); @@ -2148,8 +2086,8 @@ static int write_signer_id(asn1_node c2, const char *root, } } else { serial_size = sizeof(serial); - result = - gnutls_x509_crt_get_serial(signer, serial, &serial_size); + result = gnutls_x509_crt_get_serial(signer, serial, + &serial_size); if (result < 0) return gnutls_assert_val(result); @@ -2170,9 +2108,8 @@ static int write_signer_id(asn1_node c2, const char *root, snprintf(name, sizeof(name), "%s.sid.issuerAndSerialNumber.issuer", root); - result = - asn1_copy_node(c2, name, signer->cert, - "tbsCertificate.issuer"); + result = asn1_copy_node(c2, name, signer->cert, + "tbsCertificate.issuer"); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -2217,9 +2154,8 @@ static int add_attrs(asn1_node c2, const char *root, gnutls_pkcs7_attrs_t attrs, snprintf(name, sizeof(name), "%s.?LAST.values.?1", root); - result = - asn1_write_value(c2, name, p->data.data, - p->data.size); + result = asn1_write_value(c2, name, p->data.data, + p->data.size); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -2233,8 +2169,7 @@ static int add_attrs(asn1_node c2, const char *root, gnutls_pkcs7_attrs_t attrs, } static int write_attributes(asn1_node c2, const char *root, - const gnutls_datum_t * data, - const mac_entry_st * me, + const gnutls_datum_t *data, const mac_entry_st *me, gnutls_pkcs7_attrs_t other_attrs, unsigned flags) { char name[256]; @@ -2315,10 +2250,8 @@ static int write_attributes(asn1_node c2, const char *root, return ret; } - ret = - _gnutls_x509_get_raw_field(c2, - "encapContentInfo.eContentType", - &tmp); + ret = _gnutls_x509_get_raw_field( + c2, "encapContentInfo.eContentType", &tmp); if (ret < 0) { gnutls_assert(); return ret; @@ -2337,9 +2270,8 @@ static int write_attributes(asn1_node c2, const char *root, /* If we add any attribute we should add them all */ /* Add hash */ digest_size = _gnutls_hash_get_algo_len(me); - ret = - gnutls_hash_fast(MAC_TO_DIG(me->id), data->data, data->size, - digest); + ret = gnutls_hash_fast(MAC_TO_DIG(me->id), data->data, + data->size, digest); if (ret < 0) { gnutls_assert(); return ret; @@ -2353,10 +2285,8 @@ static int write_attributes(asn1_node c2, const char *root, } snprintf(name, sizeof(name), "%s.?LAST", root); - ret = - _gnutls_x509_encode_and_write_attribute(ATTR_MESSAGE_DIGEST, - c2, name, digest, - digest_size, 1); + ret = _gnutls_x509_encode_and_write_attribute( + ATTR_MESSAGE_DIGEST, c2, name, digest, digest_size, 1); if (ret < 0) { gnutls_assert(); return ret; @@ -2391,10 +2321,8 @@ static int write_attributes(asn1_node c2, const char *root, * * Since: 3.4.2 **/ -int gnutls_pkcs7_sign(gnutls_pkcs7_t pkcs7, - gnutls_x509_crt_t signer, - gnutls_privkey_t signer_key, - const gnutls_datum_t * data, +int gnutls_pkcs7_sign(gnutls_pkcs7_t pkcs7, gnutls_x509_crt_t signer, + gnutls_privkey_t signer_key, const gnutls_datum_t *data, gnutls_pkcs7_attrs_t signed_attrs, gnutls_pkcs7_attrs_t unsigned_attrs, gnutls_digest_algorithm_t dig, unsigned flags) @@ -2411,10 +2339,9 @@ int gnutls_pkcs7_sign(gnutls_pkcs7_t pkcs7, return GNUTLS_E_INVALID_REQUEST; if (pkcs7->signed_data == NULL) { - result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.pkcs-7-SignedData", - &pkcs7->signed_data); + result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.pkcs-7-SignedData", + &pkcs7->signed_data); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); @@ -2434,19 +2361,17 @@ int gnutls_pkcs7_sign(gnutls_pkcs7_t pkcs7, goto cleanup; } - result = - asn1_write_value(pkcs7->signed_data, - "encapContentInfo.eContentType", DATA_OID, 0); + result = asn1_write_value(pkcs7->signed_data, + "encapContentInfo.eContentType", DATA_OID, 0); if (result != ASN1_SUCCESS) { ret = _gnutls_asn2err(result); goto cleanup; } - if ((flags & GNUTLS_PKCS7_EMBED_DATA) && data->data) { /* embed data */ - ret = - _gnutls_x509_write_string(pkcs7->signed_data, - "encapContentInfo.eContent", data, - ASN1_ETYPE_OCTET_STRING); + if ((flags & GNUTLS_PKCS7_EMBED_DATA) && data->data) { /* embed data */ + ret = _gnutls_x509_write_string(pkcs7->signed_data, + "encapContentInfo.eContent", + data, ASN1_ETYPE_OCTET_STRING); if (ret < 0) { goto cleanup; } @@ -2461,18 +2386,17 @@ int gnutls_pkcs7_sign(gnutls_pkcs7_t pkcs7, } /* append digest info algorithm */ - result = - asn1_write_value(pkcs7->signed_data, "digestAlgorithms", "NEW", 1); + result = asn1_write_value(pkcs7->signed_data, "digestAlgorithms", "NEW", + 1); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); goto cleanup; } - result = - asn1_write_value(pkcs7->signed_data, - "digestAlgorithms.?LAST.algorithm", - _gnutls_x509_digest_to_oid(me), 1); + result = asn1_write_value(pkcs7->signed_data, + "digestAlgorithms.?LAST.algorithm", + _gnutls_x509_digest_to_oid(me), 1); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); @@ -2490,19 +2414,17 @@ int gnutls_pkcs7_sign(gnutls_pkcs7_t pkcs7, goto cleanup; } - result = - asn1_write_value(pkcs7->signed_data, "signerInfos.?LAST.version", - &one, 1); + result = asn1_write_value(pkcs7->signed_data, + "signerInfos.?LAST.version", &one, 1); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); goto cleanup; } - result = - asn1_write_value(pkcs7->signed_data, - "signerInfos.?LAST.digestAlgorithm.algorithm", - _gnutls_x509_digest_to_oid(me), 1); + result = asn1_write_value(pkcs7->signed_data, + "signerInfos.?LAST.digestAlgorithm.algorithm", + _gnutls_x509_digest_to_oid(me), 1); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); @@ -2513,26 +2435,23 @@ int gnutls_pkcs7_sign(gnutls_pkcs7_t pkcs7, "signerInfos.?LAST.digestAlgorithm.parameters", NULL, 0); - ret = - write_signer_id(pkcs7->signed_data, "signerInfos.?LAST", signer, - flags); + ret = write_signer_id(pkcs7->signed_data, "signerInfos.?LAST", signer, + flags); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - add_attrs(pkcs7->signed_data, "signerInfos.?LAST.unsignedAttrs", - unsigned_attrs, 0); + ret = add_attrs(pkcs7->signed_data, "signerInfos.?LAST.unsignedAttrs", + unsigned_attrs, 0); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - write_attributes(pkcs7->signed_data, - "signerInfos.?LAST.signedAttrs", data, me, - signed_attrs, flags); + ret = write_attributes(pkcs7->signed_data, + "signerInfos.?LAST.signedAttrs", data, me, + signed_attrs, flags); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -2564,8 +2483,8 @@ int gnutls_pkcs7_sign(gnutls_pkcs7_t pkcs7, se = _gnutls_pk_to_sign_entry(params.pk, dig); if (se == NULL) { - ret = - gnutls_assert_val(GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM); + ret = gnutls_assert_val( + GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM); goto cleanup; } @@ -2575,10 +2494,9 @@ int gnutls_pkcs7_sign(gnutls_pkcs7_t pkcs7, * because some implementations cannot cope with the "expected" signature values. */ params.legacy = 1; - ret = - _gnutls_x509_write_sign_params(pkcs7->signed_data, - "signerInfos.?LAST.signatureAlgorithm", - se, ¶ms); + ret = _gnutls_x509_write_sign_params( + pkcs7->signed_data, "signerInfos.?LAST.signatureAlgorithm", se, + ¶ms); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -2587,9 +2505,8 @@ int gnutls_pkcs7_sign(gnutls_pkcs7_t pkcs7, sigalgo = se->id; /* sign the data */ - ret = - figure_pkcs7_sigdata(pkcs7, "signerInfos.?LAST", data, sigalgo, - &sigdata); + ret = figure_pkcs7_sigdata(pkcs7, "signerInfos.?LAST", data, sigalgo, + &sigdata); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -2597,16 +2514,16 @@ int gnutls_pkcs7_sign(gnutls_pkcs7_t pkcs7, FIX_SIGN_PARAMS(params, flags, dig); - ret = privkey_sign_and_hash_data(signer_key, se, - &sigdata, &signature, ¶ms); + ret = privkey_sign_and_hash_data(signer_key, se, &sigdata, &signature, + ¶ms); if (ret < 0) { gnutls_assert(); goto cleanup; } - result = - asn1_write_value(pkcs7->signed_data, "signerInfos.?LAST.signature", - signature.data, signature.size); + result = asn1_write_value(pkcs7->signed_data, + "signerInfos.?LAST.signature", signature.data, + signature.size); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); @@ -2615,7 +2532,7 @@ int gnutls_pkcs7_sign(gnutls_pkcs7_t pkcs7, ret = 0; - cleanup: +cleanup: gnutls_free(sigdata.data); gnutls_free(signature.data); return ret; diff --git a/lib/x509/pkcs7_int.h b/lib/x509/pkcs7_int.h index b691ae95a9..77427c1e07 100644 --- a/lib/x509/pkcs7_int.h +++ b/lib/x509/pkcs7_int.h @@ -22,21 +22,22 @@ */ #ifndef GNUTLS_LIB_X509_PKCS7_INT_H -# define GNUTLS_LIB_X509_PKCS7_INT_H +#define GNUTLS_LIB_X509_PKCS7_INT_H -# include +#include /* PKCS #7 */ -# define DATA_OID "1.2.840.113549.1.7.1" -# define ENC_DATA_OID "1.2.840.113549.1.7.6" +#define DATA_OID "1.2.840.113549.1.7.1" +#define ENC_DATA_OID "1.2.840.113549.1.7.6" -# define SIGNED_DATA_OID "1.2.840.113549.1.7.2" -# define DIGESTED_DATA_OID "1.2.840.113549.1.7.5" +#define SIGNED_DATA_OID "1.2.840.113549.1.7.2" +#define DIGESTED_DATA_OID "1.2.840.113549.1.7.5" typedef enum schema_id { - PBES2_GENERIC = 1, /* when the algorithm is unknown, temporal use when reading only */ - PBES2_DES, /* the stuff in PKCS #5 */ + PBES2_GENERIC = + 1, /* when the algorithm is unknown, temporal use when reading only */ + PBES2_DES, /* the stuff in PKCS #5 */ PBES2_3DES, PBES2_AES_128, PBES2_AES_192, @@ -46,10 +47,10 @@ typedef enum schema_id { PBES2_GOST28147_89_CPB, PBES2_GOST28147_89_CPC, PBES2_GOST28147_89_CPD, - PKCS12_3DES_SHA1, /* the stuff in PKCS #12 */ + PKCS12_3DES_SHA1, /* the stuff in PKCS #12 */ PKCS12_ARCFOUR_SHA1, PKCS12_RC2_40_SHA1, - PBES1_DES_MD5 /* openssl before 1.1.0 uses that by default */ + PBES1_DES_MD5 /* openssl before 1.1.0 uses that by default */ } schema_id; struct pkcs_cipher_schema_st { @@ -71,66 +72,58 @@ struct pbe_enc_params { gnutls_cipher_algorithm_t cipher; uint8_t iv[MAX_CIPHER_BLOCK_SIZE]; int iv_size; - char pbes2_oid[MAX_OID_SIZE]; /* when reading params, the OID is stored for info purposes */ + char pbes2_oid + [MAX_OID_SIZE]; /* when reading params, the OID is stored for info purposes */ }; -int -_gnutls_decrypt_pbes1_des_md5_data(const char *password, - unsigned password_len, - const struct pbkdf2_params *kdf_params, - const struct pbe_enc_params *enc_params, - const gnutls_datum_t * encrypted_data, - gnutls_datum_t * decrypted_data); +int _gnutls_decrypt_pbes1_des_md5_data(const char *password, + unsigned password_len, + const struct pbkdf2_params *kdf_params, + const struct pbe_enc_params *enc_params, + const gnutls_datum_t *encrypted_data, + gnutls_datum_t *decrypted_data); int _gnutls_check_pkcs_cipher_schema(const char *oid); -int -_gnutls_pkcs_raw_decrypt_data(schema_id schema, asn1_node pkcs8_asn, - const char *root, const char *password, - const struct pbkdf2_params *kdf_params, - const struct pbe_enc_params *enc_params, - gnutls_datum_t * decrypted_data); +int _gnutls_pkcs_raw_decrypt_data(schema_id schema, asn1_node pkcs8_asn, + const char *root, const char *password, + const struct pbkdf2_params *kdf_params, + const struct pbe_enc_params *enc_params, + gnutls_datum_t *decrypted_data); -int -_gnutls_pkcs_raw_encrypt_data(const gnutls_datum_t * plain, - const struct pbe_enc_params *enc_params, - const gnutls_datum_t * key, - gnutls_datum_t * encrypted); +int _gnutls_pkcs_raw_encrypt_data(const gnutls_datum_t *plain, + const struct pbe_enc_params *enc_params, + const gnutls_datum_t *key, + gnutls_datum_t *encrypted); -int _gnutls_pkcs7_decrypt_data(const gnutls_datum_t * data, - const char *password, gnutls_datum_t * dec); +int _gnutls_pkcs7_decrypt_data(const gnutls_datum_t *data, const char *password, + gnutls_datum_t *dec); -int _gnutls_read_pbkdf1_params(const uint8_t * data, int data_size, +int _gnutls_read_pbkdf1_params(const uint8_t *data, int data_size, struct pbkdf2_params *kdf_params, struct pbe_enc_params *enc_params); -int -_gnutls_read_pkcs_schema_params(schema_id * schema, const char *password, - const uint8_t * data, int data_size, - struct pbkdf2_params *kdf_params, - struct pbe_enc_params *enc_params); - -int -_gnutls_pkcs_write_schema_params(schema_id schema, asn1_node pkcs8_asn, - const char *where, - const struct pbkdf2_params *kdf_params, - const struct pbe_enc_params *enc_params); - -int -_gnutls_pkcs_generate_key(schema_id schema, - const char *password, - struct pbkdf2_params *kdf_params, - struct pbe_enc_params *enc_params, - gnutls_datum_t * key); +int _gnutls_read_pkcs_schema_params(schema_id *schema, const char *password, + const uint8_t *data, int data_size, + struct pbkdf2_params *kdf_params, + struct pbe_enc_params *enc_params); + +int _gnutls_pkcs_write_schema_params(schema_id schema, asn1_node pkcs8_asn, + const char *where, + const struct pbkdf2_params *kdf_params, + const struct pbe_enc_params *enc_params); + +int _gnutls_pkcs_generate_key(schema_id schema, const char *password, + struct pbkdf2_params *kdf_params, + struct pbe_enc_params *enc_params, + gnutls_datum_t *key); int _gnutls_pkcs_flags_to_schema(unsigned int flags); -int _gnutls_pkcs7_encrypt_data(schema_id schema, - const gnutls_datum_t * data, - const char *password, gnutls_datum_t * enc); +int _gnutls_pkcs7_encrypt_data(schema_id schema, const gnutls_datum_t *data, + const char *password, gnutls_datum_t *enc); -int -_gnutls_pkcs7_data_enc_info(const gnutls_datum_t * data, - const struct pkcs_cipher_schema_st **p, - struct pbkdf2_params *kdf_params, char **oid); +int _gnutls_pkcs7_data_enc_info(const gnutls_datum_t *data, + const struct pkcs_cipher_schema_st **p, + struct pbkdf2_params *kdf_params, char **oid); -#endif /* GNUTLS_LIB_X509_PKCS7_INT_H */ +#endif /* GNUTLS_LIB_X509_PKCS7_INT_H */ diff --git a/lib/x509/privkey.c b/lib/x509/privkey.c index 19082b74db..aae1c3e062 100644 --- a/lib/x509/privkey.c +++ b/lib/x509/privkey.c @@ -45,7 +45,7 @@ * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int gnutls_x509_privkey_init(gnutls_x509_privkey_t * key) +int gnutls_x509_privkey_init(gnutls_x509_privkey_t *key) { *key = NULL; FAIL_IF_LIB_ERROR; @@ -54,7 +54,7 @@ int gnutls_x509_privkey_init(gnutls_x509_privkey_t * key) if (*key) { (*key)->key = NULL; - return 0; /* success */ + return 0; /* success */ } return GNUTLS_E_MEMORY_ERROR; @@ -98,8 +98,8 @@ void gnutls_x509_privkey_deinit(gnutls_x509_privkey_t key) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_privkey_cpy(gnutls_x509_privkey_t dst, gnutls_x509_privkey_t src) +int gnutls_x509_privkey_cpy(gnutls_x509_privkey_t dst, + gnutls_x509_privkey_t src) { int ret; @@ -124,9 +124,8 @@ gnutls_x509_privkey_cpy(gnutls_x509_privkey_t dst, gnutls_x509_privkey_t src) /* Converts an RSA PKCS#1 key to * an internal structure (gnutls_private_key) */ -asn1_node -_gnutls_privkey_decode_pkcs1_rsa_key(const gnutls_datum_t * raw_key, - gnutls_x509_privkey_t pkey) +asn1_node _gnutls_privkey_decode_pkcs1_rsa_key(const gnutls_datum_t *raw_key, + gnutls_x509_privkey_t pkey) { int result; asn1_node pkey_asn; @@ -140,9 +139,8 @@ _gnutls_privkey_decode_pkcs1_rsa_key(const gnutls_datum_t * raw_key, return NULL; } - result = - _asn1_strict_der_decode(&pkey_asn, raw_key->data, raw_key->size, - NULL); + result = _asn1_strict_der_decode(&pkey_asn, raw_key->data, + raw_key->size, NULL); if (result != ASN1_SUCCESS) { gnutls_assert(); goto error; @@ -209,7 +207,7 @@ _gnutls_privkey_decode_pkcs1_rsa_key(const gnutls_datum_t * raw_key, return pkey_asn; - error: +error: asn1_delete_structure2(&pkey_asn, ASN1_DELETE_FLAG_ZEROIZE); gnutls_pk_params_clear(&pkey->params); gnutls_pk_params_release(&pkey->params); @@ -219,11 +217,10 @@ _gnutls_privkey_decode_pkcs1_rsa_key(const gnutls_datum_t * raw_key, /* Converts an ECC key to * an internal structure (gnutls_private_key) */ -int -_gnutls_privkey_decode_ecc_key(asn1_node * pkey_asn, - const gnutls_datum_t * raw_key, - gnutls_x509_privkey_t pkey, - gnutls_ecc_curve_t curve) +int _gnutls_privkey_decode_ecc_key(asn1_node *pkey_asn, + const gnutls_datum_t *raw_key, + gnutls_x509_privkey_t pkey, + gnutls_ecc_curve_t curve) { int ret; unsigned int version; @@ -237,17 +234,15 @@ _gnutls_privkey_decode_ecc_key(asn1_node * pkey_asn, gnutls_pk_params_init(&pkey->params); - if ((ret = - asn1_create_element(_gnutls_get_gnutls_asn(), - "GNUTLS.ECPrivateKey", - pkey_asn)) != ASN1_SUCCESS) { + if ((ret = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.ECPrivateKey", pkey_asn)) != + ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(ret); } - ret = - _asn1_strict_der_decode(pkey_asn, raw_key->data, raw_key->size, - NULL); + ret = _asn1_strict_der_decode(pkey_asn, raw_key->data, raw_key->size, + NULL); if (ret != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(ret); @@ -261,8 +256,9 @@ _gnutls_privkey_decode_ecc_key(asn1_node * pkey_asn, } if (version != 1) { - _gnutls_debug_log - ("ECC private key version %u is not supported\n", version); + _gnutls_debug_log( + "ECC private key version %u is not supported\n", + version); gnutls_assert(); ret = GNUTLS_E_ECC_UNSUPPORTED_CURVE; goto error; @@ -271,9 +267,8 @@ _gnutls_privkey_decode_ecc_key(asn1_node * pkey_asn, /* read the curve */ if (curve == GNUTLS_ECC_CURVE_INVALID) { oid_size = sizeof(oid); - ret = - asn1_read_value(*pkey_asn, "parameters.namedCurve", oid, - &oid_size); + ret = asn1_read_value(*pkey_asn, "parameters.namedCurve", oid, + &oid_size); if (ret != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(ret); @@ -299,10 +294,9 @@ _gnutls_privkey_decode_ecc_key(asn1_node * pkey_asn, goto error; } - ret = - _gnutls_ecc_ansi_x962_import(out.data, out.size, - &pkey->params.params[ECC_X], - &pkey->params.params[ECC_Y]); + ret = _gnutls_ecc_ansi_x962_import(out.data, out.size, + &pkey->params.params[ECC_X], + &pkey->params.params[ECC_Y]); _gnutls_free_datum(&out); if (ret < 0) { @@ -312,9 +306,8 @@ _gnutls_privkey_decode_ecc_key(asn1_node * pkey_asn, pkey->params.params_nr += 2; /* read the private key */ - ret = - _gnutls_x509_read_key_int(*pkey_asn, "privateKey", - &pkey->params.params[ECC_K]); + ret = _gnutls_x509_read_key_int(*pkey_asn, "privateKey", + &pkey->params.params[ECC_K]); if (ret < 0) { gnutls_assert(); goto error; @@ -324,16 +317,15 @@ _gnutls_privkey_decode_ecc_key(asn1_node * pkey_asn, return 0; - error: +error: asn1_delete_structure2(pkey_asn, ASN1_DELETE_FLAG_ZEROIZE); gnutls_pk_params_clear(&pkey->params); gnutls_pk_params_release(&pkey->params); return ret; - } -static asn1_node -decode_dsa_key(const gnutls_datum_t * raw_key, gnutls_x509_privkey_t pkey) +static asn1_node decode_dsa_key(const gnutls_datum_t *raw_key, + gnutls_x509_privkey_t pkey) { int result; asn1_node dsa_asn; @@ -350,9 +342,8 @@ decode_dsa_key(const gnutls_datum_t * raw_key, gnutls_x509_privkey_t pkey) gnutls_pk_params_init(&pkey->params); - result = - _asn1_strict_der_decode(&dsa_asn, raw_key->data, raw_key->size, - NULL); + result = _asn1_strict_der_decode(&dsa_asn, raw_key->data, raw_key->size, + NULL); if (result != ASN1_SUCCESS) { gnutls_assert(); goto error; @@ -407,12 +398,11 @@ decode_dsa_key(const gnutls_datum_t * raw_key, gnutls_x509_privkey_t pkey) return dsa_asn; - error: +error: asn1_delete_structure2(&dsa_asn, ASN1_DELETE_FLAG_ZEROIZE); gnutls_pk_params_clear(&pkey->params); gnutls_pk_params_release(&pkey->params); return NULL; - } #define PEM_KEY_DSA "DSA PRIVATE KEY" @@ -439,10 +429,9 @@ decode_dsa_key(const gnutls_datum_t * raw_key, gnutls_x509_privkey_t pkey) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_privkey_import(gnutls_x509_privkey_t key, - const gnutls_datum_t * data, - gnutls_x509_crt_fmt_t format) +int gnutls_x509_privkey_import(gnutls_x509_privkey_t key, + const gnutls_datum_t *data, + gnutls_x509_crt_fmt_t format) { int result = 0, need_free = 0; gnutls_datum_t _data; @@ -464,16 +453,14 @@ gnutls_x509_privkey_import(gnutls_x509_privkey_t key, char *ptr; uint8_t *begin_ptr; - ptr = - memmem(data->data, data->size, "PRIVATE KEY-----", - sizeof("PRIVATE KEY-----") - 1); + ptr = memmem(data->data, data->size, "PRIVATE KEY-----", + sizeof("PRIVATE KEY-----") - 1); result = GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; if (ptr != NULL) { - left = - data->size - ((ptrdiff_t)ptr - - (ptrdiff_t)data->data); + left = data->size - + ((ptrdiff_t)ptr - (ptrdiff_t)data->data); if (data->size - left > MAX_PEM_HEADER_SIZE) { ptr -= MAX_PEM_HEADER_SIZE; @@ -483,62 +470,54 @@ gnutls_x509_privkey_import(gnutls_x509_privkey_t key, left = data->size; } - ptr = - memmem(ptr, left, "-----BEGIN ", - sizeof("-----BEGIN ") - 1); + ptr = memmem(ptr, left, "-----BEGIN ", + sizeof("-----BEGIN ") - 1); if (ptr != NULL) { - begin_ptr = (uint8_t *) ptr; - left = - data->size - ((ptrdiff_t)begin_ptr - - (ptrdiff_t)data->data); + begin_ptr = (uint8_t *)ptr; + left = data->size - ((ptrdiff_t)begin_ptr - + (ptrdiff_t)data->data); ptr += sizeof("-----BEGIN ") - 1; - if (left > sizeof(PEM_KEY_RSA) - && memcmp(ptr, PEM_KEY_RSA, - sizeof(PEM_KEY_RSA) - 1) == 0) { - result = - _gnutls_fbase64_decode(PEM_KEY_RSA, - begin_ptr, - left, - &_data); + if (left > sizeof(PEM_KEY_RSA) && + memcmp(ptr, PEM_KEY_RSA, + sizeof(PEM_KEY_RSA) - 1) == 0) { + result = _gnutls_fbase64_decode( + PEM_KEY_RSA, begin_ptr, left, + &_data); if (result >= 0) key->params.algo = - GNUTLS_PK_RSA; - } else if (left > sizeof(PEM_KEY_ECC) - && memcmp(ptr, PEM_KEY_ECC, - sizeof(PEM_KEY_ECC) - 1) == - 0) { - result = - _gnutls_fbase64_decode(PEM_KEY_ECC, - begin_ptr, - left, - &_data); + GNUTLS_PK_RSA; + } else if (left > sizeof(PEM_KEY_ECC) && + memcmp(ptr, PEM_KEY_ECC, + sizeof(PEM_KEY_ECC) - 1) == + 0) { + result = _gnutls_fbase64_decode( + PEM_KEY_ECC, begin_ptr, left, + &_data); if (result >= 0) key->params.algo = GNUTLS_PK_EC; - } else if (left > sizeof(PEM_KEY_DSA) - && memcmp(ptr, PEM_KEY_DSA, - sizeof(PEM_KEY_DSA) - 1) == - 0) { - result = - _gnutls_fbase64_decode(PEM_KEY_DSA, - begin_ptr, - left, - &_data); + } else if (left > sizeof(PEM_KEY_DSA) && + memcmp(ptr, PEM_KEY_DSA, + sizeof(PEM_KEY_DSA) - 1) == + 0) { + result = _gnutls_fbase64_decode( + PEM_KEY_DSA, begin_ptr, left, + &_data); if (result >= 0) key->params.algo = - GNUTLS_PK_DSA; + GNUTLS_PK_DSA; } - if (key->params.algo == GNUTLS_PK_UNKNOWN - && left >= sizeof(PEM_KEY_PKCS8)) { - if (memcmp - (ptr, PEM_KEY_PKCS8, - sizeof(PEM_KEY_PKCS8) - 1) == 0) { - result = - _gnutls_fbase64_decode - (PEM_KEY_PKCS8, begin_ptr, - left, &_data); + if (key->params.algo == GNUTLS_PK_UNKNOWN && + left >= sizeof(PEM_KEY_PKCS8)) { + if (memcmp(ptr, PEM_KEY_PKCS8, + sizeof(PEM_KEY_PKCS8) - 1) == + 0) { + result = _gnutls_fbase64_decode( + PEM_KEY_PKCS8, + begin_ptr, left, + &_data); if (result >= 0) { /* signal for PKCS #8 keys */ key->params.algo = -1; @@ -546,7 +525,6 @@ gnutls_x509_privkey_import(gnutls_x509_privkey_t key, } } } - } if (result < 0) { @@ -562,10 +540,9 @@ gnutls_x509_privkey_import(gnutls_x509_privkey_t key, } key->expanded = 1; - if (key->params.algo == (gnutls_pk_algorithm_t) - 1) { - result = - gnutls_x509_privkey_import_pkcs8(key, data, format, - NULL, GNUTLS_PKCS_PLAIN); + if (key->params.algo == (gnutls_pk_algorithm_t)-1) { + result = gnutls_x509_privkey_import_pkcs8( + key, data, format, NULL, GNUTLS_PKCS_PLAIN); if (result < 0) { gnutls_assert(); key->key = NULL; @@ -583,8 +560,8 @@ gnutls_x509_privkey_import(gnutls_x509_privkey_t key, if (key->key == NULL) gnutls_assert(); } else if (key->params.algo == GNUTLS_PK_EC) { - result = - _gnutls_privkey_decode_ecc_key(&key->key, &_data, key, 0); + result = _gnutls_privkey_decode_ecc_key(&key->key, &_data, key, + 0); if (result < 0) { gnutls_assert(); key->key = NULL; @@ -601,15 +578,13 @@ gnutls_x509_privkey_import(gnutls_x509_privkey_t key, key->key = decode_dsa_key(&_data, key); if (key->key == NULL) { key->params.algo = GNUTLS_PK_EC; - result = - _gnutls_privkey_decode_ecc_key(&key->key, - &_data, key, - 0); + result = _gnutls_privkey_decode_ecc_key( + &key->key, &_data, key, 0); if (result < 0) { result = - gnutls_x509_privkey_import_pkcs8 - (key, data, format, NULL, - GNUTLS_PKCS_PLAIN); + gnutls_x509_privkey_import_pkcs8( + key, data, format, NULL, + GNUTLS_PKCS_PLAIN); if (result >= 0) { /* there are keys (ed25519) which leave key->key NULL */ goto finish; @@ -633,14 +608,14 @@ gnutls_x509_privkey_import(gnutls_x509_privkey_t key, goto cleanup; } - finish: +finish: result = - _gnutls_pk_fixup(key->params.algo, GNUTLS_IMPORT, &key->params); + _gnutls_pk_fixup(key->params.algo, GNUTLS_IMPORT, &key->params); if (result < 0) { gnutls_assert(); } - cleanup: +cleanup: if (need_free) { zeroize_temp_key(_data.data, _data.size); _gnutls_free_datum(&_data); @@ -653,7 +628,7 @@ gnutls_x509_privkey_import(gnutls_x509_privkey_t key, } static int import_pkcs12_privkey(gnutls_x509_privkey_t key, - const gnutls_datum_t * data, + const gnutls_datum_t *data, gnutls_x509_crt_fmt_t format, const char *password, unsigned int flags) { @@ -671,9 +646,8 @@ static int import_pkcs12_privkey(gnutls_x509_privkey_t key, goto fail; } - ret = - gnutls_pkcs12_simple_parse(p12, password, &newkey, NULL, NULL, - NULL, NULL, NULL, 0); + ret = gnutls_pkcs12_simple_parse(p12, password, &newkey, NULL, NULL, + NULL, NULL, NULL, 0); if (ret < 0) { gnutls_assert(); goto fail; @@ -687,7 +661,7 @@ static int import_pkcs12_privkey(gnutls_x509_privkey_t key, } ret = 0; - fail: +fail: gnutls_pkcs12_deinit(p12); @@ -716,11 +690,10 @@ static int import_pkcs12_privkey(gnutls_x509_privkey_t key, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_privkey_import2(gnutls_x509_privkey_t key, - const gnutls_datum_t * data, - gnutls_x509_crt_fmt_t format, - const char *password, unsigned int flags) +int gnutls_x509_privkey_import2(gnutls_x509_privkey_t key, + const gnutls_datum_t *data, + gnutls_x509_crt_fmt_t format, + const char *password, unsigned int flags) { int ret = 0; int saved_ret = GNUTLS_E_PARSING_ERROR; @@ -731,14 +704,12 @@ gnutls_x509_privkey_import2(gnutls_x509_privkey_t key, size_t left; char *ptr; - ptr = - memmem(data->data, data->size, "PRIVATE KEY-----", - sizeof("PRIVATE KEY-----") - 1); + ptr = memmem(data->data, data->size, "PRIVATE KEY-----", + sizeof("PRIVATE KEY-----") - 1); if (ptr != NULL) { - left = - data->size - ((ptrdiff_t)ptr - - (ptrdiff_t)data->data); + left = data->size - + ((ptrdiff_t)ptr - (ptrdiff_t)data->data); if (data->size - left > 15) { ptr -= 15; @@ -748,32 +719,29 @@ gnutls_x509_privkey_import2(gnutls_x509_privkey_t key, left = data->size; } - ptr = - memmem(ptr, left, "-----BEGIN ", - sizeof("-----BEGIN ") - 1); + ptr = memmem(ptr, left, "-----BEGIN ", + sizeof("-----BEGIN ") - 1); if (ptr != NULL) { ptr += sizeof("-----BEGIN ") - 1; - left = - data->size - ((ptrdiff_t)ptr - - (ptrdiff_t)data->data); + left = data->size - + ((ptrdiff_t)ptr - (ptrdiff_t)data->data); } if (ptr != NULL && left > sizeof(PEM_KEY_RSA)) { - if (memcmp - (ptr, PEM_KEY_RSA, - sizeof(PEM_KEY_RSA) - 1) == 0 - || memcmp(ptr, PEM_KEY_ECC, - sizeof(PEM_KEY_ECC) - 1) == 0 - || memcmp(ptr, PEM_KEY_DSA, - sizeof(PEM_KEY_DSA) - 1) == 0) { + if (memcmp(ptr, PEM_KEY_RSA, + sizeof(PEM_KEY_RSA) - 1) == 0 || + memcmp(ptr, PEM_KEY_ECC, + sizeof(PEM_KEY_ECC) - 1) == 0 || + memcmp(ptr, PEM_KEY_DSA, + sizeof(PEM_KEY_DSA) - 1) == 0) { head_enc = 0; } } } } - if (head_enc == 0 - || (password == NULL && !(flags & GNUTLS_PKCS_NULL_PASSWORD))) { + if (head_enc == 0 || + (password == NULL && !(flags & GNUTLS_PKCS_NULL_PASSWORD))) { ret = gnutls_x509_privkey_import(key, data, format); if (ret >= 0) return ret; @@ -783,26 +751,22 @@ gnutls_x509_privkey_import2(gnutls_x509_privkey_t key, /* fall through to PKCS #8 decoding */ } - if ((password != NULL || (flags & GNUTLS_PKCS_NULL_PASSWORD)) - || ret < 0) { - - ret = - gnutls_x509_privkey_import_pkcs8(key, data, format, - password, flags); + if ((password != NULL || (flags & GNUTLS_PKCS_NULL_PASSWORD)) || + ret < 0) { + ret = gnutls_x509_privkey_import_pkcs8(key, data, format, + password, flags); - if (ret == GNUTLS_E_DECRYPTION_FAILED && - password == NULL && (!(flags & GNUTLS_PKCS_PLAIN))) { + if (ret == GNUTLS_E_DECRYPTION_FAILED && password == NULL && + (!(flags & GNUTLS_PKCS_PLAIN))) { /* use the callback if any */ - ret = - _gnutls_retrieve_pin(&key->pin, "key:", "", 0, pin, - sizeof(pin)); + ret = _gnutls_retrieve_pin(&key->pin, "key:", "", 0, + pin, sizeof(pin)); if (ret == 0) { password = pin; } - ret = - gnutls_x509_privkey_import_pkcs8(key, data, format, - password, flags); + ret = gnutls_x509_privkey_import_pkcs8( + key, data, format, password, flags); } if (saved_ret == GNUTLS_E_PARSING_ERROR) @@ -811,34 +775,28 @@ gnutls_x509_privkey_import2(gnutls_x509_privkey_t key, if (ret < 0) { if (ret == GNUTLS_E_DECRYPTION_FAILED) goto cleanup; - ret = - import_pkcs12_privkey(key, data, format, - password, flags); + ret = import_pkcs12_privkey(key, data, format, password, + flags); if (ret < 0 && format == GNUTLS_X509_FMT_PEM) { if (ret == GNUTLS_E_DECRYPTION_FAILED) goto cleanup; - ret = - gnutls_x509_privkey_import_openssl(key, - data, - password); + ret = gnutls_x509_privkey_import_openssl( + key, data, password); - if (ret == GNUTLS_E_DECRYPTION_FAILED - && password == NULL && (key->pin.cb - || - _gnutls_pin_func)) { + if (ret == GNUTLS_E_DECRYPTION_FAILED && + password == NULL && + (key->pin.cb || _gnutls_pin_func)) { /* use the callback if any */ memset(pin, 0, GNUTLS_PKCS11_MAX_PIN_LEN); - ret = - _gnutls_retrieve_pin(&key->pin, - "key:", "", 0, - pin, - sizeof(pin)); + ret = _gnutls_retrieve_pin(&key->pin, + "key:", "", + 0, pin, + sizeof(pin)); if (ret == 0) { - ret = - gnutls_x509_privkey_import_openssl - (key, data, pin); + ret = gnutls_x509_privkey_import_openssl( + key, data, pin); } } @@ -855,7 +813,7 @@ gnutls_x509_privkey_import2(gnutls_x509_privkey_t key, ret = 0; - cleanup: +cleanup: if (ret == GNUTLS_E_PARSING_ERROR) ret = saved_ret; @@ -879,17 +837,16 @@ gnutls_x509_privkey_import2(gnutls_x509_privkey_t key, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_privkey_import_rsa_raw(gnutls_x509_privkey_t key, - const gnutls_datum_t * m, - const gnutls_datum_t * e, - const gnutls_datum_t * d, - const gnutls_datum_t * p, - const gnutls_datum_t * q, - const gnutls_datum_t * u) +int gnutls_x509_privkey_import_rsa_raw(gnutls_x509_privkey_t key, + const gnutls_datum_t *m, + const gnutls_datum_t *e, + const gnutls_datum_t *d, + const gnutls_datum_t *p, + const gnutls_datum_t *q, + const gnutls_datum_t *u) { - return gnutls_x509_privkey_import_rsa_raw2(key, m, e, d, p, q, u, - NULL, NULL); + return gnutls_x509_privkey_import_rsa_raw2(key, m, e, d, p, q, u, NULL, + NULL); } /** @@ -911,16 +868,12 @@ gnutls_x509_privkey_import_rsa_raw(gnutls_x509_privkey_t key, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_privkey_import_rsa_raw2(gnutls_x509_privkey_t key, - const gnutls_datum_t * m, - const gnutls_datum_t * e, - const gnutls_datum_t * d, - const gnutls_datum_t * p, - const gnutls_datum_t * q, - const gnutls_datum_t * u, - const gnutls_datum_t * e1, - const gnutls_datum_t * e2) +int gnutls_x509_privkey_import_rsa_raw2( + gnutls_x509_privkey_t key, const gnutls_datum_t *m, + const gnutls_datum_t *e, const gnutls_datum_t *d, + const gnutls_datum_t *p, const gnutls_datum_t *q, + const gnutls_datum_t *u, const gnutls_datum_t *e1, + const gnutls_datum_t *e2) { int ret; size_t siz = 0; @@ -933,8 +886,8 @@ gnutls_x509_privkey_import_rsa_raw2(gnutls_x509_privkey_t key, gnutls_pk_params_init(&key->params); siz = m->size; - if (_gnutls_mpi_init_scan_nz - (&key->params.params[RSA_MODULUS], m->data, siz)) { + if (_gnutls_mpi_init_scan_nz(&key->params.params[RSA_MODULUS], m->data, + siz)) { gnutls_assert(); ret = GNUTLS_E_MPI_SCAN_FAILED; goto cleanup; @@ -942,8 +895,8 @@ gnutls_x509_privkey_import_rsa_raw2(gnutls_x509_privkey_t key, key->params.params_nr++; siz = e->size; - if (_gnutls_mpi_init_scan_nz - (&key->params.params[RSA_PUB], e->data, siz)) { + if (_gnutls_mpi_init_scan_nz(&key->params.params[RSA_PUB], e->data, + siz)) { gnutls_assert(); ret = GNUTLS_E_MPI_SCAN_FAILED; goto cleanup; @@ -952,8 +905,8 @@ gnutls_x509_privkey_import_rsa_raw2(gnutls_x509_privkey_t key, if (d) { siz = d->size; - if (_gnutls_mpi_init_scan_nz - (&key->params.params[RSA_PRIV], d->data, siz)) { + if (_gnutls_mpi_init_scan_nz(&key->params.params[RSA_PRIV], + d->data, siz)) { gnutls_assert(); ret = GNUTLS_E_MPI_SCAN_FAILED; goto cleanup; @@ -962,8 +915,8 @@ gnutls_x509_privkey_import_rsa_raw2(gnutls_x509_privkey_t key, } siz = p->size; - if (_gnutls_mpi_init_scan_nz - (&key->params.params[RSA_PRIME1], p->data, siz)) { + if (_gnutls_mpi_init_scan_nz(&key->params.params[RSA_PRIME1], p->data, + siz)) { gnutls_assert(); ret = GNUTLS_E_MPI_SCAN_FAILED; goto cleanup; @@ -971,8 +924,8 @@ gnutls_x509_privkey_import_rsa_raw2(gnutls_x509_privkey_t key, key->params.params_nr++; siz = q->size; - if (_gnutls_mpi_init_scan_nz - (&key->params.params[RSA_PRIME2], q->data, siz)) { + if (_gnutls_mpi_init_scan_nz(&key->params.params[RSA_PRIME2], q->data, + siz)) { gnutls_assert(); ret = GNUTLS_E_MPI_SCAN_FAILED; goto cleanup; @@ -981,8 +934,8 @@ gnutls_x509_privkey_import_rsa_raw2(gnutls_x509_privkey_t key, if (u) { siz = u->size; - if (_gnutls_mpi_init_scan_nz - (&key->params.params[RSA_COEF], u->data, siz)) { + if (_gnutls_mpi_init_scan_nz(&key->params.params[RSA_COEF], + u->data, siz)) { gnutls_assert(); ret = GNUTLS_E_MPI_SCAN_FAILED; goto cleanup; @@ -992,8 +945,8 @@ gnutls_x509_privkey_import_rsa_raw2(gnutls_x509_privkey_t key, if (e1 && e2) { siz = e1->size; - if (_gnutls_mpi_init_scan_nz - (&key->params.params[RSA_E1], e1->data, siz)) { + if (_gnutls_mpi_init_scan_nz(&key->params.params[RSA_E1], + e1->data, siz)) { gnutls_assert(); ret = GNUTLS_E_MPI_SCAN_FAILED; goto cleanup; @@ -1001,8 +954,8 @@ gnutls_x509_privkey_import_rsa_raw2(gnutls_x509_privkey_t key, key->params.params_nr++; siz = e2->size; - if (_gnutls_mpi_init_scan_nz - (&key->params.params[RSA_E2], e2->data, siz)) { + if (_gnutls_mpi_init_scan_nz(&key->params.params[RSA_E2], + e2->data, siz)) { gnutls_assert(); ret = GNUTLS_E_MPI_SCAN_FAILED; goto cleanup; @@ -1029,11 +982,10 @@ gnutls_x509_privkey_import_rsa_raw2(gnutls_x509_privkey_t key, return 0; - cleanup: +cleanup: gnutls_pk_params_clear(&key->params); gnutls_pk_params_release(&key->params); return ret; - } /** @@ -1052,13 +1004,12 @@ gnutls_x509_privkey_import_rsa_raw2(gnutls_x509_privkey_t key, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_privkey_import_dsa_raw(gnutls_x509_privkey_t key, - const gnutls_datum_t * p, - const gnutls_datum_t * q, - const gnutls_datum_t * g, - const gnutls_datum_t * y, - const gnutls_datum_t * x) +int gnutls_x509_privkey_import_dsa_raw(gnutls_x509_privkey_t key, + const gnutls_datum_t *p, + const gnutls_datum_t *q, + const gnutls_datum_t *g, + const gnutls_datum_t *y, + const gnutls_datum_t *x) { int ret; size_t siz = 0; @@ -1093,8 +1044,8 @@ gnutls_x509_privkey_import_dsa_raw(gnutls_x509_privkey_t key, if (y) { siz = y->size; - if (_gnutls_mpi_init_scan_nz - (&key->params.params[3], y->data, siz)) { + if (_gnutls_mpi_init_scan_nz(&key->params.params[3], y->data, + siz)) { gnutls_assert(); ret = GNUTLS_E_MPI_SCAN_FAILED; goto cleanup; @@ -1125,11 +1076,10 @@ gnutls_x509_privkey_import_dsa_raw(gnutls_x509_privkey_t key, return 0; - cleanup: +cleanup: gnutls_pk_params_clear(&key->params); gnutls_pk_params_release(&key->params); return ret; - } /** @@ -1150,12 +1100,11 @@ gnutls_x509_privkey_import_dsa_raw(gnutls_x509_privkey_t key, * * Since: 3.0 **/ -int -gnutls_x509_privkey_import_ecc_raw(gnutls_x509_privkey_t key, - gnutls_ecc_curve_t curve, - const gnutls_datum_t * x, - const gnutls_datum_t * y, - const gnutls_datum_t * k) +int gnutls_x509_privkey_import_ecc_raw(gnutls_x509_privkey_t key, + gnutls_ecc_curve_t curve, + const gnutls_datum_t *x, + const gnutls_datum_t *y, + const gnutls_datum_t *k) { int ret; @@ -1194,8 +1143,8 @@ gnutls_x509_privkey_import_ecc_raw(gnutls_x509_privkey_t key, goto cleanup; } - ret = - _gnutls_set_datum(&key->params.raw_priv, k->data, k->size); + ret = _gnutls_set_datum(&key->params.raw_priv, k->data, + k->size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -1204,24 +1153,24 @@ gnutls_x509_privkey_import_ecc_raw(gnutls_x509_privkey_t key, return 0; } - if (_gnutls_mpi_init_scan_nz - (&key->params.params[ECC_X], x->data, x->size)) { + if (_gnutls_mpi_init_scan_nz(&key->params.params[ECC_X], x->data, + x->size)) { gnutls_assert(); ret = GNUTLS_E_MPI_SCAN_FAILED; goto cleanup; } key->params.params_nr++; - if (_gnutls_mpi_init_scan_nz - (&key->params.params[ECC_Y], y->data, y->size)) { + if (_gnutls_mpi_init_scan_nz(&key->params.params[ECC_Y], y->data, + y->size)) { gnutls_assert(); ret = GNUTLS_E_MPI_SCAN_FAILED; goto cleanup; } key->params.params_nr++; - if (_gnutls_mpi_init_scan_nz - (&key->params.params[ECC_K], k->data, k->size)) { + if (_gnutls_mpi_init_scan_nz(&key->params.params[ECC_K], k->data, + k->size)) { gnutls_assert(); ret = GNUTLS_E_MPI_SCAN_FAILED; goto cleanup; @@ -1244,11 +1193,10 @@ gnutls_x509_privkey_import_ecc_raw(gnutls_x509_privkey_t key, return 0; - cleanup: +cleanup: gnutls_pk_params_clear(&key->params); gnutls_pk_params_release(&key->params); return ret; - } /** @@ -1276,14 +1224,13 @@ gnutls_x509_privkey_import_ecc_raw(gnutls_x509_privkey_t key, * * Since: 3.6.3 **/ -int -gnutls_x509_privkey_import_gost_raw(gnutls_x509_privkey_t key, - gnutls_ecc_curve_t curve, - gnutls_digest_algorithm_t digest, - gnutls_gost_paramset_t paramset, - const gnutls_datum_t * x, - const gnutls_datum_t * y, - const gnutls_datum_t * k) +int gnutls_x509_privkey_import_gost_raw(gnutls_x509_privkey_t key, + gnutls_ecc_curve_t curve, + gnutls_digest_algorithm_t digest, + gnutls_gost_paramset_t paramset, + const gnutls_datum_t *x, + const gnutls_datum_t *y, + const gnutls_datum_t *k) { int ret; @@ -1300,24 +1247,24 @@ gnutls_x509_privkey_import_gost_raw(gnutls_x509_privkey_t key, key->params.gost_params = paramset; - if (_gnutls_mpi_init_scan_le - (&key->params.params[GOST_X], x->data, x->size)) { + if (_gnutls_mpi_init_scan_le(&key->params.params[GOST_X], x->data, + x->size)) { gnutls_assert(); ret = GNUTLS_E_MPI_SCAN_FAILED; goto cleanup; } key->params.params_nr++; - if (_gnutls_mpi_init_scan_le - (&key->params.params[GOST_Y], y->data, y->size)) { + if (_gnutls_mpi_init_scan_le(&key->params.params[GOST_Y], y->data, + y->size)) { gnutls_assert(); ret = GNUTLS_E_MPI_SCAN_FAILED; goto cleanup; } key->params.params_nr++; - if (_gnutls_mpi_init_scan_le - (&key->params.params[GOST_K], k->data, k->size)) { + if (_gnutls_mpi_init_scan_le(&key->params.params[GOST_K], k->data, + k->size)) { gnutls_assert(); ret = GNUTLS_E_MPI_SCAN_FAILED; goto cleanup; @@ -1332,11 +1279,10 @@ gnutls_x509_privkey_import_gost_raw(gnutls_x509_privkey_t key, return 0; - cleanup: +cleanup: gnutls_pk_params_clear(&key->params); gnutls_pk_params_release(&key->params); return ret; - } /** @@ -1370,9 +1316,8 @@ int gnutls_x509_privkey_get_pk_algorithm(gnutls_x509_privkey_t key) * Returns: a member of the #gnutls_pk_algorithm_t enumeration on * success, or a negative error code on error. **/ -int -gnutls_x509_privkey_get_pk_algorithm2(gnutls_x509_privkey_t key, - unsigned int *bits) +int gnutls_x509_privkey_get_pk_algorithm2(gnutls_x509_privkey_t key, + unsigned int *bits) { int ret; @@ -1391,9 +1336,8 @@ gnutls_x509_privkey_get_pk_algorithm2(gnutls_x509_privkey_t key, return key->params.algo; } -void -_gnutls_x509_privkey_get_spki_params(gnutls_x509_privkey_t key, - gnutls_x509_spki_st * params) +void _gnutls_x509_privkey_get_spki_params(gnutls_x509_privkey_t key, + gnutls_x509_spki_st *params) { memcpy(params, &key->params.spki, sizeof(gnutls_x509_spki_st)); } @@ -1409,9 +1353,8 @@ _gnutls_x509_privkey_get_spki_params(gnutls_x509_privkey_t key, * * Returns: Zero on success, or a negative error code on error. **/ -int -gnutls_x509_privkey_get_spki(gnutls_x509_privkey_t key, gnutls_x509_spki_t spki, - unsigned int flags) +int gnutls_x509_privkey_get_spki(gnutls_x509_privkey_t key, + gnutls_x509_spki_t spki, unsigned int flags) { if (key == NULL) { gnutls_assert(); @@ -1437,9 +1380,9 @@ gnutls_x509_privkey_get_spki(gnutls_x509_privkey_t key, gnutls_x509_spki_t spki, * * Returns: Zero on success, or a negative error code on error. **/ -int -gnutls_x509_privkey_set_spki(gnutls_x509_privkey_t key, - const gnutls_x509_spki_t spki, unsigned int flags) +int gnutls_x509_privkey_set_spki(gnutls_x509_privkey_t key, + const gnutls_x509_spki_t spki, + unsigned int flags) { gnutls_pk_params_st tparams; int ret; @@ -1498,10 +1441,9 @@ static const char *set_msg(gnutls_x509_privkey_t key) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_privkey_export(gnutls_x509_privkey_t key, - gnutls_x509_crt_fmt_t format, void *output_data, - size_t *output_data_size) +int gnutls_x509_privkey_export(gnutls_x509_privkey_t key, + gnutls_x509_crt_fmt_t format, void *output_data, + size_t *output_data_size) { gnutls_datum_t out; int ret; @@ -1539,9 +1481,9 @@ gnutls_x509_privkey_export(gnutls_x509_privkey_t key, * * Since 3.1.3 **/ -int -gnutls_x509_privkey_export2(gnutls_x509_privkey_t key, - gnutls_x509_crt_fmt_t format, gnutls_datum_t * out) +int gnutls_x509_privkey_export2(gnutls_x509_privkey_t key, + gnutls_x509_crt_fmt_t format, + gnutls_datum_t *out) { const char *msg; int ret; @@ -1551,7 +1493,7 @@ gnutls_x509_privkey_export2(gnutls_x509_privkey_t key, return GNUTLS_E_INVALID_REQUEST; } - if (key->key == NULL) { /* can only export in PKCS#8 form */ + if (key->key == NULL) { /* can only export in PKCS#8 form */ return gnutls_x509_privkey_export2_pkcs8(key, format, NULL, 0, out); } @@ -1611,9 +1553,9 @@ gnutls_sec_param_t gnutls_x509_privkey_sec_param(gnutls_x509_privkey_t key) * Since: 3.0 **/ int gnutls_x509_privkey_export_ecc_raw(gnutls_x509_privkey_t key, - gnutls_ecc_curve_t * curve, - gnutls_datum_t * x, - gnutls_datum_t * y, gnutls_datum_t * k) + gnutls_ecc_curve_t *curve, + gnutls_datum_t *x, gnutls_datum_t *y, + gnutls_datum_t *k) { if (key == NULL) { gnutls_assert(); @@ -1646,11 +1588,11 @@ int gnutls_x509_privkey_export_ecc_raw(gnutls_x509_privkey_t key, * Since: 3.6.3 **/ int gnutls_x509_privkey_export_gost_raw(gnutls_x509_privkey_t key, - gnutls_ecc_curve_t * curve, - gnutls_digest_algorithm_t * digest, - gnutls_gost_paramset_t * paramset, - gnutls_datum_t * x, - gnutls_datum_t * y, gnutls_datum_t * k) + gnutls_ecc_curve_t *curve, + gnutls_digest_algorithm_t *digest, + gnutls_gost_paramset_t *paramset, + gnutls_datum_t *x, gnutls_datum_t *y, + gnutls_datum_t *k) { if (key == NULL) { gnutls_assert(); @@ -1678,11 +1620,10 @@ int gnutls_x509_privkey_export_gost_raw(gnutls_x509_privkey_t key, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_privkey_export_rsa_raw(gnutls_x509_privkey_t key, - gnutls_datum_t * m, gnutls_datum_t * e, - gnutls_datum_t * d, gnutls_datum_t * p, - gnutls_datum_t * q, gnutls_datum_t * u) +int gnutls_x509_privkey_export_rsa_raw(gnutls_x509_privkey_t key, + gnutls_datum_t *m, gnutls_datum_t *e, + gnutls_datum_t *d, gnutls_datum_t *p, + gnutls_datum_t *q, gnutls_datum_t *u) { return _gnutls_params_get_rsa_raw(&key->params, m, e, d, p, q, u, NULL, NULL, 0); @@ -1709,12 +1650,11 @@ gnutls_x509_privkey_export_rsa_raw(gnutls_x509_privkey_t key, * * Since: 2.12.0 **/ -int -gnutls_x509_privkey_export_rsa_raw2(gnutls_x509_privkey_t key, - gnutls_datum_t * m, gnutls_datum_t * e, - gnutls_datum_t * d, gnutls_datum_t * p, - gnutls_datum_t * q, gnutls_datum_t * u, - gnutls_datum_t * e1, gnutls_datum_t * e2) +int gnutls_x509_privkey_export_rsa_raw2(gnutls_x509_privkey_t key, + gnutls_datum_t *m, gnutls_datum_t *e, + gnutls_datum_t *d, gnutls_datum_t *p, + gnutls_datum_t *q, gnutls_datum_t *u, + gnutls_datum_t *e1, gnutls_datum_t *e2) { return _gnutls_params_get_rsa_raw(&key->params, m, e, d, p, q, u, e1, e2, 0); @@ -1736,11 +1676,10 @@ gnutls_x509_privkey_export_rsa_raw2(gnutls_x509_privkey_t key, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_privkey_export_dsa_raw(gnutls_x509_privkey_t key, - gnutls_datum_t * p, gnutls_datum_t * q, - gnutls_datum_t * g, gnutls_datum_t * y, - gnutls_datum_t * x) +int gnutls_x509_privkey_export_dsa_raw(gnutls_x509_privkey_t key, + gnutls_datum_t *p, gnutls_datum_t *q, + gnutls_datum_t *g, gnutls_datum_t *y, + gnutls_datum_t *x) { return _gnutls_params_get_dsa_raw(&key->params, p, q, g, y, x, 0); } @@ -1776,10 +1715,9 @@ gnutls_x509_privkey_export_dsa_raw(gnutls_x509_privkey_t key, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_privkey_generate(gnutls_x509_privkey_t key, - gnutls_pk_algorithm_t algo, unsigned int bits, - unsigned int flags) +int gnutls_x509_privkey_generate(gnutls_x509_privkey_t key, + gnutls_pk_algorithm_t algo, unsigned int bits, + unsigned int flags) { return gnutls_x509_privkey_generate2(key, algo, bits, flags, NULL, 0); } @@ -1824,12 +1762,11 @@ gnutls_x509_privkey_generate(gnutls_x509_privkey_t key, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_privkey_generate2(gnutls_x509_privkey_t key, - gnutls_pk_algorithm_t algo, unsigned int bits, - unsigned int flags, - const gnutls_keygen_data_st * data, - unsigned data_size) +int gnutls_x509_privkey_generate2(gnutls_x509_privkey_t key, + gnutls_pk_algorithm_t algo, unsigned int bits, + unsigned int flags, + const gnutls_keygen_data_st *data, + unsigned data_size) { int ret; unsigned i; @@ -1843,8 +1780,8 @@ gnutls_x509_privkey_generate2(gnutls_x509_privkey_t key, gnutls_pk_params_init(&key->params); for (i = 0; i < data_size; i++) { - if (data[i].type == GNUTLS_KEYGEN_SEED - && data[i].size < sizeof(key->params.seed)) { + if (data[i].type == GNUTLS_KEYGEN_SEED && + data[i].size < sizeof(key->params.seed)) { key->params.seed_size = data[i].size; memcpy(key->params.seed, data[i].data, data[i].size); } else if (data[i].type == GNUTLS_KEYGEN_DIGEST) { @@ -1861,8 +1798,8 @@ gnutls_x509_privkey_generate2(gnutls_x509_privkey_t key, bits = _gnutls_ecc_bits_to_curve(algo, bits); if (gnutls_ecc_curve_get_pk(bits) != algo) { - _gnutls_debug_log - ("curve is incompatible with public key algorithm\n"); + _gnutls_debug_log( + "curve is incompatible with public key algorithm\n"); return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); } } @@ -1880,8 +1817,8 @@ gnutls_x509_privkey_generate2(gnutls_x509_privkey_t key, if ((algo == GNUTLS_PK_GOST_01 && size != 32) || (algo == GNUTLS_PK_GOST_12_256 && size != 32) || (algo == GNUTLS_PK_GOST_12_512 && size != 64)) { - _gnutls_debug_log - ("curve is incompatible with public key algorithm\n"); + _gnutls_debug_log( + "curve is incompatible with public key algorithm\n"); return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); } @@ -1906,7 +1843,7 @@ gnutls_x509_privkey_generate2(gnutls_x509_privkey_t key, key->params.spki.pk = GNUTLS_PK_RSA_PSS; key->params.spki.rsa_pss_dig = - _gnutls_pk_bits_to_sha_hash(bits); + _gnutls_pk_bits_to_sha_hash(bits); me = hash_to_entry(key->params.spki.rsa_pss_dig); if (unlikely(me == NULL)) { @@ -1952,7 +1889,7 @@ gnutls_x509_privkey_generate2(gnutls_x509_privkey_t key, return 0; - cleanup: +cleanup: key->params.algo = GNUTLS_PK_UNKNOWN; gnutls_pk_params_clear(&key->params); gnutls_pk_params_release(&key->params); @@ -1977,7 +1914,7 @@ gnutls_x509_privkey_generate2(gnutls_x509_privkey_t key, * Since: 3.5.0 **/ int gnutls_x509_privkey_get_seed(gnutls_x509_privkey_t key, - gnutls_digest_algorithm_t * digest, void *seed, + gnutls_digest_algorithm_t *digest, void *seed, size_t *seed_size) { if (key->params.seed_size == 0) @@ -2003,26 +1940,23 @@ int gnutls_x509_privkey_get_seed(gnutls_x509_privkey_t key, return 0; } -static -int cmp_rsa_key(gnutls_x509_privkey_t key1, gnutls_x509_privkey_t key2) +static int cmp_rsa_key(gnutls_x509_privkey_t key1, gnutls_x509_privkey_t key2) { - gnutls_datum_t m1 = { NULL, 0 }, e1 = { NULL, 0 }, d1 = - { NULL, 0 }, p1 = { NULL, 0 }, q1 = { NULL, 0 }; - gnutls_datum_t m2 = { NULL, 0 }, e2 = { NULL, 0 }, d2 = - { NULL, 0 }, p2 = { NULL, 0 }, q2 = { NULL, 0 }; + gnutls_datum_t m1 = { NULL, 0 }, e1 = { NULL, 0 }, d1 = { NULL, 0 }, + p1 = { NULL, 0 }, q1 = { NULL, 0 }; + gnutls_datum_t m2 = { NULL, 0 }, e2 = { NULL, 0 }, d2 = { NULL, 0 }, + p2 = { NULL, 0 }, q2 = { NULL, 0 }; int ret; - ret = - gnutls_x509_privkey_export_rsa_raw(key1, &m1, &e1, &d1, &p1, &q1, - NULL); + ret = gnutls_x509_privkey_export_rsa_raw(key1, &m1, &e1, &d1, &p1, &q1, + NULL); if (ret < 0) { gnutls_assert(); return ret; } - ret = - gnutls_x509_privkey_export_rsa_raw(key2, &m2, &e2, &d2, &p2, &q2, - NULL); + ret = gnutls_x509_privkey_export_rsa_raw(key2, &m2, &e2, &d2, &p2, &q2, + NULL); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -2059,7 +1993,7 @@ int cmp_rsa_key(gnutls_x509_privkey_t key1, gnutls_x509_privkey_t key2) } ret = 0; - cleanup: +cleanup: gnutls_free(m1.data); gnutls_free(e1.data); gnutls_free(d1.data); @@ -2073,22 +2007,21 @@ int cmp_rsa_key(gnutls_x509_privkey_t key1, gnutls_x509_privkey_t key2) return ret; } -static -int cmp_dsa_key(gnutls_x509_privkey_t key1, gnutls_x509_privkey_t key2) +static int cmp_dsa_key(gnutls_x509_privkey_t key1, gnutls_x509_privkey_t key2) { gnutls_datum_t p1 = { NULL, 0 }, q1 = { NULL, 0 }, g1 = { NULL, 0 }; gnutls_datum_t p2 = { NULL, 0 }, q2 = { NULL, 0 }, g2 = { NULL, 0 }; int ret; - ret = - gnutls_x509_privkey_export_dsa_raw(key1, &p1, &q1, &g1, NULL, NULL); + ret = gnutls_x509_privkey_export_dsa_raw(key1, &p1, &q1, &g1, NULL, + NULL); if (ret < 0) { gnutls_assert(); return ret; } - ret = - gnutls_x509_privkey_export_dsa_raw(key2, &p2, &q2, &g2, NULL, NULL); + ret = gnutls_x509_privkey_export_dsa_raw(key2, &p2, &q2, &g2, NULL, + NULL); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -2113,7 +2046,7 @@ int cmp_dsa_key(gnutls_x509_privkey_t key1, gnutls_x509_privkey_t key2) } ret = 0; - cleanup: +cleanup: gnutls_free(g1.data); gnutls_free(p1.data); gnutls_free(q1.data); @@ -2153,8 +2086,8 @@ int gnutls_x509_privkey_verify_seed(gnutls_x509_privkey_t key, return GNUTLS_E_INVALID_REQUEST; } - if (key->params.algo != GNUTLS_PK_RSA - && key->params.algo != GNUTLS_PK_DSA) + if (key->params.algo != GNUTLS_PK_RSA && + key->params.algo != GNUTLS_PK_DSA) return gnutls_assert_val(GNUTLS_E_UNIMPLEMENTED_FEATURE); ret = gnutls_x509_privkey_get_pk_algorithm2(key, &bits); @@ -2190,7 +2123,7 @@ int gnutls_x509_privkey_verify_seed(gnutls_x509_privkey_t key, else ret = cmp_dsa_key(key, okey); - cleanup: +cleanup: gnutls_x509_privkey_deinit(okey); return ret; @@ -2238,11 +2171,10 @@ int gnutls_x509_privkey_verify_params(gnutls_x509_privkey_t key) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_privkey_get_key_id(gnutls_x509_privkey_t key, - unsigned int flags, - unsigned char *output_data, - size_t *output_data_size) +int gnutls_x509_privkey_get_key_id(gnutls_x509_privkey_t key, + unsigned int flags, + unsigned char *output_data, + size_t *output_data_size) { int ret; @@ -2251,9 +2183,8 @@ gnutls_x509_privkey_get_key_id(gnutls_x509_privkey_t key, return GNUTLS_E_INVALID_REQUEST; } - ret = - _gnutls_get_key_id(&key->params, - output_data, output_data_size, flags); + ret = _gnutls_get_key_id(&key->params, output_data, output_data_size, + flags); if (ret < 0) { gnutls_assert(); } @@ -2281,10 +2212,9 @@ gnutls_x509_privkey_get_key_id(gnutls_x509_privkey_t key, * * Deprecated in: 2.12.0 */ -int -gnutls_x509_privkey_sign_hash(gnutls_x509_privkey_t key, - const gnutls_datum_t * hash, - gnutls_datum_t * signature) +int gnutls_x509_privkey_sign_hash(gnutls_x509_privkey_t key, + const gnutls_datum_t *hash, + gnutls_datum_t *signature) { int result; @@ -2293,17 +2223,16 @@ gnutls_x509_privkey_sign_hash(gnutls_x509_privkey_t key, return GNUTLS_E_INVALID_REQUEST; } - if (key->params.algo != GNUTLS_PK_RSA - && key->params.algo != GNUTLS_PK_ECDSA - && key->params.algo != GNUTLS_PK_DSA) { + if (key->params.algo != GNUTLS_PK_RSA && + key->params.algo != GNUTLS_PK_ECDSA && + key->params.algo != GNUTLS_PK_DSA) { /* too primitive API - use only with legacy types */ gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; } - result = - _gnutls_pk_sign(key->params.algo, signature, hash, - &key->params, &key->params.spki); + result = _gnutls_pk_sign(key->params.algo, signature, hash, + &key->params, &key->params.spki); if (result < 0) { gnutls_assert(); @@ -2338,12 +2267,11 @@ gnutls_x509_privkey_sign_hash(gnutls_x509_privkey_t key, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. */ -int -gnutls_x509_privkey_sign_data(gnutls_x509_privkey_t key, - gnutls_digest_algorithm_t digest, - unsigned int flags, - const gnutls_datum_t * data, - void *signature, size_t *signature_size) +int gnutls_x509_privkey_sign_data(gnutls_x509_privkey_t key, + gnutls_digest_algorithm_t digest, + unsigned int flags, + const gnutls_datum_t *data, void *signature, + size_t *signature_size) { gnutls_privkey_t privkey; gnutls_datum_t sig = { NULL, 0 }; @@ -2374,7 +2302,7 @@ gnutls_x509_privkey_sign_data(gnutls_x509_privkey_t key, *signature_size = sig.size; memcpy(signature, sig.data, sig.size); - cleanup: +cleanup: _gnutls_free_datum(&sig); gnutls_privkey_deinit(privkey); return ret; diff --git a/lib/x509/privkey_openssl.c b/lib/x509/privkey_openssl.c index a9206e7d70..f7b33c825f 100644 --- a/lib/x509/privkey_openssl.c +++ b/lib/x509/privkey_openssl.c @@ -33,9 +33,8 @@ #include #include -static int -openssl_hash_password(const char *_password, gnutls_datum_t * key, - gnutls_datum_t * salt) +static int openssl_hash_password(const char *_password, gnutls_datum_t *key, + gnutls_datum_t *salt) { unsigned char md5[16]; digest_hd_st hd; @@ -45,10 +44,8 @@ openssl_hash_password(const char *_password, gnutls_datum_t * key, if (_password != NULL) { gnutls_datum_t pout; - ret = - _gnutls_utf8_password_normalize(_password, - strlen(_password), &pout, - 1); + ret = _gnutls_utf8_password_normalize( + _password, strlen(_password), &pout, 1); if (ret < 0) return gnutls_assert_val(ret); @@ -65,7 +62,7 @@ openssl_hash_password(const char *_password, gnutls_datum_t * key, if (count) { ret = _gnutls_hash(&hd, md5, sizeof(md5)); if (ret < 0) { - hash_err: + hash_err: _gnutls_hash_deinit(&hd, NULL); gnutls_assert(); goto cleanup; @@ -97,7 +94,7 @@ openssl_hash_password(const char *_password, gnutls_datum_t * key, } ret = 0; - cleanup: +cleanup: gnutls_free(password); return ret; } @@ -108,14 +105,14 @@ struct pem_cipher { }; static const struct pem_cipher pem_ciphers[] = { - {"DES-CBC", GNUTLS_CIPHER_DES_CBC}, - {"DES-EDE3-CBC", GNUTLS_CIPHER_3DES_CBC}, - {"AES-128-CBC", GNUTLS_CIPHER_AES_128_CBC}, - {"AES-192-CBC", GNUTLS_CIPHER_AES_192_CBC}, - {"AES-256-CBC", GNUTLS_CIPHER_AES_256_CBC}, - {"CAMELLIA-128-CBC", GNUTLS_CIPHER_CAMELLIA_128_CBC}, - {"CAMELLIA-192-CBC", GNUTLS_CIPHER_CAMELLIA_192_CBC}, - {"CAMELLIA-256-CBC", GNUTLS_CIPHER_CAMELLIA_256_CBC}, + { "DES-CBC", GNUTLS_CIPHER_DES_CBC }, + { "DES-EDE3-CBC", GNUTLS_CIPHER_3DES_CBC }, + { "AES-128-CBC", GNUTLS_CIPHER_AES_128_CBC }, + { "AES-192-CBC", GNUTLS_CIPHER_AES_192_CBC }, + { "AES-256-CBC", GNUTLS_CIPHER_AES_256_CBC }, + { "CAMELLIA-128-CBC", GNUTLS_CIPHER_CAMELLIA_128_CBC }, + { "CAMELLIA-192-CBC", GNUTLS_CIPHER_CAMELLIA_192_CBC }, + { "CAMELLIA-256-CBC", GNUTLS_CIPHER_CAMELLIA_256_CBC }, }; /** @@ -137,10 +134,9 @@ static const struct pem_cipher pem_ciphers[] = { * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_privkey_import_openssl(gnutls_x509_privkey_t key, - const gnutls_datum_t * data, - const char *password) +int gnutls_x509_privkey_import_openssl(gnutls_x509_privkey_t key, + const gnutls_datum_t *data, + const char *password) { gnutls_cipher_hd_t handle; gnutls_cipher_algorithm_t cipher = GNUTLS_CIPHER_UNKNOWN; @@ -172,7 +168,7 @@ gnutls_x509_privkey_import_openssl(gnutls_x509_privkey_t key, } pem_header_size = - data->size - (ptrdiff_t)(pem_header - pem_header_start) - 10; + data->size - (ptrdiff_t)(pem_header - pem_header_start) - 10; pem_header += 10; for (i = 0; i < sizeof(pem_ciphers) / sizeof(pem_ciphers[0]); i++) { @@ -186,8 +182,8 @@ gnutls_x509_privkey_import_openssl(gnutls_x509_privkey_t key, } if (cipher == GNUTLS_CIPHER_UNKNOWN) { - _gnutls_debug_log - ("Unsupported PEM encryption type: %.10s\n", pem_header); + _gnutls_debug_log("Unsupported PEM encryption type: %.10s\n", + pem_header); gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; } @@ -221,9 +217,8 @@ gnutls_x509_privkey_import_openssl(gnutls_x509_privkey_t key, while (*pem_header == '\n' || *pem_header == '\r') pem_header++; - ret = - _gnutls_base64_decode((const void *)pem_header, - pem_header_size, &b64_data); + ret = _gnutls_base64_decode((const void *)pem_header, pem_header_size, + &b64_data); if (ret < 0) { gnutls_assert(); goto out_salt; @@ -279,7 +274,7 @@ gnutls_x509_privkey_import_openssl(gnutls_x509_privkey_t key, if (key_data[0] == 0x30) { gnutls_datum_t key_datum; unsigned int blocksize = - gnutls_cipher_get_block_size(cipher); + gnutls_cipher_get_block_size(cipher); unsigned int keylen = key_data[1]; unsigned int ofs = 2; @@ -301,8 +296,8 @@ gnutls_x509_privkey_import_openssl(gnutls_x509_privkey_t key, keylen += ofs; /* If there appears to be more or less padding than required, fail */ - if (key_data_size - keylen > blocksize - || key_data_size < keylen + 1) { + if (key_data_size - keylen > blocksize || + key_data_size < keylen + 1) { gnutls_assert(); goto fail; } @@ -319,24 +314,23 @@ gnutls_x509_privkey_import_openssl(gnutls_x509_privkey_t key, key_datum.data = key_data; key_datum.size = keylen; - ret = - gnutls_x509_privkey_import(key, &key_datum, - GNUTLS_X509_FMT_DER); + ret = gnutls_x509_privkey_import(key, &key_datum, + GNUTLS_X509_FMT_DER); if (ret == 0) goto out; } - fail: + fail: ret = GNUTLS_E_DECRYPTION_FAILED; goto out; } - out: +out: zeroize_key(key_data, key_data_size); gnutls_free(key_data); - out_enc_key: +out_enc_key: _gnutls_free_key_datum(&enc_key); - out_b64: +out_b64: gnutls_free(b64_data.data); - out_salt: +out_salt: gnutls_free(salt.data); return ret; } diff --git a/lib/x509/privkey_pkcs8.c b/lib/x509/privkey_pkcs8.c index 5ee1961c1e..91eb1f16c5 100644 --- a/lib/x509/privkey_pkcs8.c +++ b/lib/x509/privkey_pkcs8.c @@ -41,12 +41,11 @@ static int _decode_pkcs8_ecc_key(asn1_node pkcs8_asn, gnutls_x509_privkey_t pkey); -static -int pkcs8_key_info(const gnutls_datum_t * raw_key, - const struct pkcs_cipher_schema_st **p, - struct pbkdf2_params *kdf_params, char **oid); +static int pkcs8_key_info(const gnutls_datum_t *raw_key, + const struct pkcs_cipher_schema_st **p, + struct pbkdf2_params *kdf_params, char **oid); -static int decode_private_key_info(const gnutls_datum_t * der, +static int decode_private_key_info(const gnutls_datum_t *der, gnutls_x509_privkey_t pkey); #define PEM_PKCS8 "ENCRYPTED PRIVATE KEY" @@ -59,8 +58,8 @@ static int decode_private_key_info(const gnutls_datum_t * der, * For RSA it is a PKCS #1 DER private key and for DSA it is * an ASN.1 INTEGER of the x value. */ -inline static int -_encode_privkey(gnutls_x509_privkey_t pkey, gnutls_datum_t * raw) +inline static int _encode_privkey(gnutls_x509_privkey_t pkey, + gnutls_datum_t *raw) { int ret; asn1_node spk = NULL; @@ -83,17 +82,16 @@ _encode_privkey(gnutls_x509_privkey_t pkey, gnutls_datum_t * raw) case GNUTLS_PK_GOST_01: case GNUTLS_PK_GOST_12_256: case GNUTLS_PK_GOST_12_512: - if ((ret = asn1_create_element - (_gnutls_get_gnutls_asn(), "GNUTLS.GOSTPrivateKey", &spk)) - != ASN1_SUCCESS) { + if ((ret = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.GOSTPrivateKey", + &spk)) != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(ret); goto error; } - ret = - _gnutls_x509_write_key_int_le(spk, "", - pkey->params.params[GOST_K]); + ret = _gnutls_x509_write_key_int_le( + spk, "", pkey->params.params[GOST_K]); if (ret < 0) { gnutls_assert(); goto error; @@ -111,9 +109,8 @@ _encode_privkey(gnutls_x509_privkey_t pkey, gnutls_datum_t * raw) case GNUTLS_PK_RSA: case GNUTLS_PK_RSA_PSS: case GNUTLS_PK_ECDSA: - ret = - _gnutls_x509_export_int2(pkey->key, GNUTLS_X509_FMT_DER, - "", raw); + ret = _gnutls_x509_export_int2(pkey->key, GNUTLS_X509_FMT_DER, + "", raw); if (ret < 0) { gnutls_assert(); goto error; @@ -122,15 +119,15 @@ _encode_privkey(gnutls_x509_privkey_t pkey, gnutls_datum_t * raw) break; case GNUTLS_PK_DSA: /* DSAPublicKey == INTEGER */ - if ((ret = asn1_create_element - (_gnutls_get_gnutls_asn(), "GNUTLS.DSAPublicKey", &spk)) - != ASN1_SUCCESS) { + if ((ret = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.DSAPublicKey", &spk)) != + ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(ret); } - ret = - _gnutls_x509_write_int(spk, "", pkey->params.params[4], 1); + ret = _gnutls_x509_write_int(spk, "", pkey->params.params[4], + 1); if (ret < 0) { gnutls_assert(); goto error; @@ -151,11 +148,10 @@ _encode_privkey(gnutls_x509_privkey_t pkey, gnutls_datum_t * raw) return 0; - error: +error: asn1_delete_structure2(&spk, ASN1_DELETE_FLAG_ZEROIZE); asn1_delete_structure(&spk); return ret; - } /* @@ -163,9 +159,8 @@ _encode_privkey(gnutls_x509_privkey_t pkey, gnutls_datum_t * raw) * info. The output will be allocated and stored into der. Also * the asn1_node of private key info will be returned. */ -static int -encode_to_private_key_info(gnutls_x509_privkey_t pkey, - gnutls_datum_t * der, asn1_node * pkey_info) +static int encode_to_private_key_info(gnutls_x509_privkey_t pkey, + gnutls_datum_t *der, asn1_node *pkey_info) { int result, len; uint8_t null = 0; @@ -185,10 +180,9 @@ encode_to_private_key_info(gnutls_x509_privkey_t pkey, return result; } - if ((result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.pkcs-8-PrivateKeyInfo", - pkey_info)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.pkcs-8-PrivateKeyInfo", + pkey_info)) != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto error; @@ -206,18 +200,16 @@ encode_to_private_key_info(gnutls_x509_privkey_t pkey, /* write the privateKeyAlgorithm * fields. (OID+NULL data) */ - result = - asn1_write_value(*pkey_info, "privateKeyAlgorithm.algorithm", - oid, 1); + result = asn1_write_value(*pkey_info, "privateKeyAlgorithm.algorithm", + oid, 1); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto error; } - result = - asn1_write_value(*pkey_info, "privateKeyAlgorithm.parameters", - algo_params.data, algo_params.size); + result = asn1_write_value(*pkey_info, "privateKeyAlgorithm.parameters", + algo_params.data, algo_params.size); _gnutls_free_key_datum(&algo_params); if (result != ASN1_SUCCESS) { @@ -234,9 +226,8 @@ encode_to_private_key_info(gnutls_x509_privkey_t pkey, goto error; } - result = - asn1_write_value(*pkey_info, "privateKey", algo_privkey.data, - algo_privkey.size); + result = asn1_write_value(*pkey_info, "privateKey", algo_privkey.data, + algo_privkey.size); _gnutls_free_key_datum(&algo_privkey); if (result != ASN1_SUCCESS) { @@ -245,8 +236,8 @@ encode_to_private_key_info(gnutls_x509_privkey_t pkey, goto error; } - if ((pkey->params.pkflags & GNUTLS_PK_FLAG_PROVABLE) - && pkey->params.seed_size > 0) { + if ((pkey->params.pkflags & GNUTLS_PK_FLAG_PROVABLE) && + pkey->params.seed_size > 0) { gnutls_datum_t seed_info; /* rfc8479 attribute encoding */ @@ -256,9 +247,8 @@ encode_to_private_key_info(gnutls_x509_privkey_t pkey, goto error; } - result = - _x509_set_attribute(*pkey_info, "attributes", - OID_ATTR_PROV_SEED, &seed_info); + result = _x509_set_attribute(*pkey_info, "attributes", + OID_ATTR_PROV_SEED, &seed_info); gnutls_free(seed_info.data); if (result < 0) { gnutls_assert(); @@ -303,20 +293,18 @@ encode_to_private_key_info(gnutls_x509_privkey_t pkey, return 0; - error: +error: asn1_delete_structure2(pkey_info, ASN1_DELETE_FLAG_ZEROIZE); _gnutls_free_datum(&algo_params); _gnutls_free_key_datum(&algo_privkey); return result; - } /* Converts a PKCS #8 private key info to * a PKCS #8 EncryptedPrivateKeyInfo. */ -static int -encode_to_pkcs8_key(schema_id schema, const gnutls_datum_t * der_key, - const char *password, asn1_node * out) +static int encode_to_pkcs8_key(schema_id schema, const gnutls_datum_t *der_key, + const char *password, asn1_node *out) { int result; gnutls_datum_t key = { NULL, 0 }; @@ -331,19 +319,17 @@ encode_to_pkcs8_key(schema_id schema, const gnutls_datum_t * der_key, return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); } - if ((result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.pkcs-8-EncryptedPrivateKeyInfo", - &pkcs8_asn)) != ASN1_SUCCESS) { + if ((result = asn1_create_element( + _gnutls_get_pkix(), "PKIX1.pkcs-8-EncryptedPrivateKeyInfo", + &pkcs8_asn)) != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } /* Write the encryption schema OID */ - result = - asn1_write_value(pkcs8_asn, "encryptionAlgorithm.algorithm", - s->write_oid, 1); + result = asn1_write_value(pkcs8_asn, "encryptionAlgorithm.algorithm", + s->write_oid, 1); if (result != ASN1_SUCCESS) { gnutls_assert(); @@ -354,18 +340,16 @@ encode_to_pkcs8_key(schema_id schema, const gnutls_datum_t * der_key, /* Generate a symmetric key. */ - result = - _gnutls_pkcs_generate_key(schema, password, &kdf_params, - &enc_params, &key); + result = _gnutls_pkcs_generate_key(schema, password, &kdf_params, + &enc_params, &key); if (result < 0) { gnutls_assert(); goto error; } - result = - _gnutls_pkcs_write_schema_params(schema, pkcs8_asn, - "encryptionAlgorithm.parameters", - &kdf_params, &enc_params); + result = _gnutls_pkcs_write_schema_params( + schema, pkcs8_asn, "encryptionAlgorithm.parameters", + &kdf_params, &enc_params); if (result < 0) { gnutls_assert(); goto error; @@ -375,7 +359,7 @@ encode_to_pkcs8_key(schema_id schema, const gnutls_datum_t * der_key, * encrypt the Data. */ result = - _gnutls_pkcs_raw_encrypt_data(der_key, &enc_params, &key, &tmp); + _gnutls_pkcs_raw_encrypt_data(der_key, &enc_params, &key, &tmp); if (result < 0) { gnutls_assert(); goto error; @@ -383,8 +367,8 @@ encode_to_pkcs8_key(schema_id schema, const gnutls_datum_t * der_key, /* write the encrypted data. */ - result = - asn1_write_value(pkcs8_asn, "encryptedData", tmp.data, tmp.size); + result = asn1_write_value(pkcs8_asn, "encryptedData", tmp.data, + tmp.size); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -398,7 +382,7 @@ encode_to_pkcs8_key(schema_id schema, const gnutls_datum_t * der_key, return 0; - error: +error: _gnutls_free_key_datum(&key); _gnutls_free_datum(&tmp); asn1_delete_structure2(&pkcs8_asn, ASN1_DELETE_FLAG_ZEROIZE); @@ -434,12 +418,11 @@ encode_to_pkcs8_key(schema_id schema, const gnutls_datum_t * der_key, * Returns: In case of failure a negative error code will be * returned, and 0 on success. **/ -int -gnutls_x509_privkey_export_pkcs8(gnutls_x509_privkey_t key, - gnutls_x509_crt_fmt_t format, - const char *password, - unsigned int flags, - void *output_data, size_t *output_data_size) +int gnutls_x509_privkey_export_pkcs8(gnutls_x509_privkey_t key, + gnutls_x509_crt_fmt_t format, + const char *password, unsigned int flags, + void *output_data, + size_t *output_data_size) { asn1_node pkcs8_asn = NULL, pkey_info; int ret; @@ -462,18 +445,19 @@ gnutls_x509_privkey_export_pkcs8(gnutls_x509_privkey_t key, schema = _gnutls_pkcs_flags_to_schema(flags); - if (((flags & GNUTLS_PKCS_PLAIN) || password == NULL) - && !(flags & GNUTLS_PKCS_NULL_PASSWORD)) { + if (((flags & GNUTLS_PKCS_PLAIN) || password == NULL) && + !(flags & GNUTLS_PKCS_NULL_PASSWORD)) { _gnutls_free_datum(&tmp); - ret = - _gnutls_x509_export_int(pkey_info, format, - PEM_UNENCRYPTED_PKCS8, - output_data, output_data_size); + ret = _gnutls_x509_export_int(pkey_info, format, + PEM_UNENCRYPTED_PKCS8, + output_data, output_data_size); asn1_delete_structure2(&pkey_info, ASN1_DELETE_FLAG_ZEROIZE); } else { - asn1_delete_structure2(&pkey_info, ASN1_DELETE_FLAG_ZEROIZE); /* we don't need it */ + asn1_delete_structure2( + &pkey_info, + ASN1_DELETE_FLAG_ZEROIZE); /* we don't need it */ ret = encode_to_pkcs8_key(schema, &tmp, password, &pkcs8_asn); _gnutls_free_key_datum(&tmp); @@ -483,9 +467,8 @@ gnutls_x509_privkey_export_pkcs8(gnutls_x509_privkey_t key, return ret; } - ret = - _gnutls_x509_export_int(pkcs8_asn, format, PEM_PKCS8, - output_data, output_data_size); + ret = _gnutls_x509_export_int(pkcs8_asn, format, PEM_PKCS8, + output_data, output_data_size); asn1_delete_structure2(&pkcs8_asn, ASN1_DELETE_FLAG_ZEROIZE); } @@ -517,11 +500,10 @@ gnutls_x509_privkey_export_pkcs8(gnutls_x509_privkey_t key, * * Since: 3.4.0 **/ -int -gnutls_pkcs8_info(const gnutls_datum_t * data, gnutls_x509_crt_fmt_t format, - unsigned int *schema, unsigned int *cipher, - void *salt, unsigned int *salt_size, - unsigned int *iter_count, char **oid) +int gnutls_pkcs8_info(const gnutls_datum_t *data, gnutls_x509_crt_fmt_t format, + unsigned int *schema, unsigned int *cipher, void *salt, + unsigned int *salt_size, unsigned int *iter_count, + char **oid) { int ret = 0, need_free = 0; gnutls_datum_t _data; @@ -541,15 +523,13 @@ gnutls_pkcs8_info(const gnutls_datum_t * data, gnutls_x509_crt_fmt_t format, if (format == GNUTLS_X509_FMT_PEM) { /* Try the first header */ - ret = - _gnutls_fbase64_decode(PEM_UNENCRYPTED_PKCS8, - data->data, data->size, &_data); + ret = _gnutls_fbase64_decode(PEM_UNENCRYPTED_PKCS8, data->data, + data->size, &_data); - if (ret < 0) { /* Try the encrypted header + if (ret < 0) { /* Try the encrypted header */ - ret = - _gnutls_fbase64_decode(PEM_PKCS8, data->data, - data->size, &_data); + ret = _gnutls_fbase64_decode(PEM_PKCS8, data->data, + data->size, &_data); if (ret < 0) { gnutls_assert(); @@ -597,7 +577,7 @@ gnutls_pkcs8_info(const gnutls_datum_t * data, gnutls_x509_crt_fmt_t format, return 0; - cleanup: +cleanup: if (ret != GNUTLS_E_UNKNOWN_CIPHER_TYPE && oid) { gnutls_free(*oid); } @@ -633,11 +613,10 @@ gnutls_pkcs8_info(const gnutls_datum_t * data, gnutls_x509_crt_fmt_t format, * * Since 3.1.3 **/ -int -gnutls_x509_privkey_export2_pkcs8(gnutls_x509_privkey_t key, - gnutls_x509_crt_fmt_t format, - const char *password, - unsigned int flags, gnutls_datum_t * out) +int gnutls_x509_privkey_export2_pkcs8(gnutls_x509_privkey_t key, + gnutls_x509_crt_fmt_t format, + const char *password, unsigned int flags, + gnutls_datum_t *out) { asn1_node pkcs8_asn = NULL, pkey_info; int ret; @@ -660,17 +639,18 @@ gnutls_x509_privkey_export2_pkcs8(gnutls_x509_privkey_t key, schema = _gnutls_pkcs_flags_to_schema(flags); - if (((flags & GNUTLS_PKCS_PLAIN) || password == NULL) - && !(flags & GNUTLS_PKCS_NULL_PASSWORD)) { + if (((flags & GNUTLS_PKCS_PLAIN) || password == NULL) && + !(flags & GNUTLS_PKCS_NULL_PASSWORD)) { _gnutls_free_key_datum(&tmp); - ret = - _gnutls_x509_export_int2(pkey_info, format, - PEM_UNENCRYPTED_PKCS8, out); + ret = _gnutls_x509_export_int2(pkey_info, format, + PEM_UNENCRYPTED_PKCS8, out); asn1_delete_structure2(&pkey_info, ASN1_DELETE_FLAG_ZEROIZE); } else { - asn1_delete_structure2(&pkey_info, ASN1_DELETE_FLAG_ZEROIZE); /* we don't need it */ + asn1_delete_structure2( + &pkey_info, + ASN1_DELETE_FLAG_ZEROIZE); /* we don't need it */ ret = encode_to_pkcs8_key(schema, &tmp, password, &pkcs8_asn); _gnutls_free_key_datum(&tmp); @@ -680,8 +660,8 @@ gnutls_x509_privkey_export2_pkcs8(gnutls_x509_privkey_t key, return ret; } - ret = - _gnutls_x509_export_int2(pkcs8_asn, format, PEM_PKCS8, out); + ret = _gnutls_x509_export_int2(pkcs8_asn, format, PEM_PKCS8, + out); asn1_delete_structure2(&pkcs8_asn, ASN1_DELETE_FLAG_ZEROIZE); } @@ -689,28 +669,27 @@ gnutls_x509_privkey_export2_pkcs8(gnutls_x509_privkey_t key, return ret; } - /* We've gotten this far. In the real world it's almost certain +/* We've gotten this far. In the real world it's almost certain * that we're dealing with a good file, but wrong password. * Sadly like 90% of random data is somehow valid DER for the * a first small number of bytes, so no easy way to guarantee. */ -#define CHECK_ERR_FOR_ENCRYPTED(result) \ - if (result == GNUTLS_E_ASN1_ELEMENT_NOT_FOUND || \ - result == GNUTLS_E_ASN1_IDENTIFIER_NOT_FOUND || \ - result == GNUTLS_E_ASN1_DER_ERROR || \ - result == GNUTLS_E_ASN1_VALUE_NOT_FOUND || \ - result == GNUTLS_E_ASN1_GENERIC_ERROR || \ - result == GNUTLS_E_ASN1_VALUE_NOT_VALID || \ - result == GNUTLS_E_ASN1_TAG_ERROR || \ - result == GNUTLS_E_ASN1_TAG_IMPLICIT || \ - result == GNUTLS_E_ASN1_TYPE_ANY_ERROR || \ - result == GNUTLS_E_ASN1_SYNTAX_ERROR || \ - result == GNUTLS_E_ASN1_DER_OVERFLOW) { \ - result = GNUTLS_E_DECRYPTION_FAILED; \ - } - -static int pkcs8_key_decrypt(const gnutls_datum_t * raw_key, - asn1_node pkcs8_asn, const char *password, - gnutls_x509_privkey_t pkey) +#define CHECK_ERR_FOR_ENCRYPTED(result) \ + if (result == GNUTLS_E_ASN1_ELEMENT_NOT_FOUND || \ + result == GNUTLS_E_ASN1_IDENTIFIER_NOT_FOUND || \ + result == GNUTLS_E_ASN1_DER_ERROR || \ + result == GNUTLS_E_ASN1_VALUE_NOT_FOUND || \ + result == GNUTLS_E_ASN1_GENERIC_ERROR || \ + result == GNUTLS_E_ASN1_VALUE_NOT_VALID || \ + result == GNUTLS_E_ASN1_TAG_ERROR || \ + result == GNUTLS_E_ASN1_TAG_IMPLICIT || \ + result == GNUTLS_E_ASN1_TYPE_ANY_ERROR || \ + result == GNUTLS_E_ASN1_SYNTAX_ERROR || \ + result == GNUTLS_E_ASN1_DER_OVERFLOW) { \ + result = GNUTLS_E_DECRYPTION_FAILED; \ + } + +static int pkcs8_key_decrypt(const gnutls_datum_t *raw_key, asn1_node pkcs8_asn, + const char *password, gnutls_x509_privkey_t pkey) { int result, len; char enc_oid[MAX_OID_SIZE]; @@ -723,9 +702,8 @@ static int pkcs8_key_decrypt(const gnutls_datum_t * raw_key, /* Check the encryption schema OID */ len = sizeof(enc_oid); - result = - asn1_read_value(pkcs8_asn, "encryptionAlgorithm.algorithm", - enc_oid, &len); + result = asn1_read_value(pkcs8_asn, "encryptionAlgorithm.algorithm", + enc_oid, &len); if (result != ASN1_SUCCESS) { gnutls_assert(); goto error; @@ -740,11 +718,10 @@ static int pkcs8_key_decrypt(const gnutls_datum_t * raw_key, /* Get the DER encoding of the parameters. */ - result = - asn1_der_decoding_startEnd(pkcs8_asn, raw_key->data, - raw_key->size, - "encryptionAlgorithm.parameters", - ¶ms_start, ¶ms_end); + result = asn1_der_decoding_startEnd(pkcs8_asn, raw_key->data, + raw_key->size, + "encryptionAlgorithm.parameters", + ¶ms_start, ¶ms_end); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -752,11 +729,10 @@ static int pkcs8_key_decrypt(const gnutls_datum_t * raw_key, } params_len = params_end - params_start + 1; - result = - _gnutls_read_pkcs_schema_params(&schema, password, - &raw_key->data[params_start], - params_len, &kdf_params, - &enc_params); + result = _gnutls_read_pkcs_schema_params(&schema, password, + &raw_key->data[params_start], + params_len, &kdf_params, + &enc_params); if (result < 0) { gnutls_assert(); @@ -766,10 +742,9 @@ static int pkcs8_key_decrypt(const gnutls_datum_t * raw_key, /* Parameters have been decoded. Now * decrypt the EncryptedData. */ - result = - _gnutls_pkcs_raw_decrypt_data(schema, pkcs8_asn, "encryptedData", - password, &kdf_params, &enc_params, - &tmp); + result = _gnutls_pkcs_raw_decrypt_data(schema, pkcs8_asn, + "encryptedData", password, + &kdf_params, &enc_params, &tmp); if (result < 0) { gnutls_assert(); result = GNUTLS_E_DECRYPTION_FAILED; @@ -787,25 +762,24 @@ static int pkcs8_key_decrypt(const gnutls_datum_t * raw_key, return 0; - error: +error: return result; } -static int check_for_decrypted(const gnutls_datum_t * der) +static int check_for_decrypted(const gnutls_datum_t *der) { int result; asn1_node pkcs8_asn = NULL; - if ((result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.pkcs-8-PrivateKeyInfo", - &pkcs8_asn)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.pkcs-8-PrivateKeyInfo", + &pkcs8_asn)) != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } result = - _asn1_strict_der_decode(&pkcs8_asn, der->data, der->size, NULL); + _asn1_strict_der_decode(&pkcs8_asn, der->data, der->size, NULL); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -813,16 +787,14 @@ static int check_for_decrypted(const gnutls_datum_t * der) } result = 0; - error: +error: asn1_delete_structure2(&pkcs8_asn, ASN1_DELETE_FLAG_ZEROIZE); return result; - } -static -int pkcs8_key_info(const gnutls_datum_t * raw_key, - const struct pkcs_cipher_schema_st **p, - struct pbkdf2_params *kdf_params, char **oid) +static int pkcs8_key_info(const gnutls_datum_t *raw_key, + const struct pkcs_cipher_schema_st **p, + struct pbkdf2_params *kdf_params, char **oid) { int result, len; char enc_oid[MAX_OID_SIZE * 2]; @@ -837,18 +809,16 @@ int pkcs8_key_info(const gnutls_datum_t * raw_key, if (result == 0) return GNUTLS_E_INVALID_REQUEST; - if ((result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.pkcs-8-EncryptedPrivateKeyInfo", - &pkcs8_asn)) != ASN1_SUCCESS) { + if ((result = asn1_create_element( + _gnutls_get_pkix(), "PKIX1.pkcs-8-EncryptedPrivateKeyInfo", + &pkcs8_asn)) != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto error; } - result = - _asn1_strict_der_decode(&pkcs8_asn, raw_key->data, raw_key->size, - NULL); + result = _asn1_strict_der_decode(&pkcs8_asn, raw_key->data, + raw_key->size, NULL); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -858,9 +828,8 @@ int pkcs8_key_info(const gnutls_datum_t * raw_key, /* Check the encryption schema OID */ len = sizeof(enc_oid); - result = - asn1_read_value(pkcs8_asn, "encryptionAlgorithm.algorithm", - enc_oid, &len); + result = asn1_read_value(pkcs8_asn, "encryptionAlgorithm.algorithm", + enc_oid, &len); if (result != ASN1_SUCCESS) { gnutls_assert(); goto error; @@ -879,11 +848,10 @@ int pkcs8_key_info(const gnutls_datum_t * raw_key, /* Get the DER encoding of the parameters. */ - result = - asn1_der_decoding_startEnd(pkcs8_asn, raw_key->data, - raw_key->size, - "encryptionAlgorithm.parameters", - ¶ms_start, ¶ms_end); + result = asn1_der_decoding_startEnd(pkcs8_asn, raw_key->data, + raw_key->size, + "encryptionAlgorithm.parameters", + ¶ms_start, ¶ms_end); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -891,11 +859,10 @@ int pkcs8_key_info(const gnutls_datum_t * raw_key, } params_len = params_end - params_start + 1; - result = - _gnutls_read_pkcs_schema_params(&schema, NULL, - &raw_key->data[params_start], - params_len, kdf_params, - &enc_params); + result = _gnutls_read_pkcs_schema_params(&schema, NULL, + &raw_key->data[params_start], + params_len, kdf_params, + &enc_params); if (result < 0) { gnutls_assert(); @@ -917,7 +884,7 @@ int pkcs8_key_info(const gnutls_datum_t * raw_key, result = 0; - error: +error: asn1_delete_structure2(&pkcs8_asn, ASN1_DELETE_FLAG_ZEROIZE); return result; } @@ -926,26 +893,22 @@ int pkcs8_key_info(const gnutls_datum_t * raw_key, * an internal structure (gnutls_private_key) * (normally a PKCS #1 encoded RSA key) */ -static int -pkcs8_key_decode(const gnutls_datum_t * raw_key, - const char *password, gnutls_x509_privkey_t pkey, - unsigned int decrypt) +static int pkcs8_key_decode(const gnutls_datum_t *raw_key, const char *password, + gnutls_x509_privkey_t pkey, unsigned int decrypt) { int result; asn1_node pkcs8_asn = NULL; - if ((result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.pkcs-8-EncryptedPrivateKeyInfo", - &pkcs8_asn)) != ASN1_SUCCESS) { + if ((result = asn1_create_element( + _gnutls_get_pkix(), "PKIX1.pkcs-8-EncryptedPrivateKeyInfo", + &pkcs8_asn)) != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto error; } - result = - _asn1_strict_der_decode(&pkcs8_asn, raw_key->data, raw_key->size, - NULL); + result = _asn1_strict_der_decode(&pkcs8_asn, raw_key->data, + raw_key->size, NULL); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -957,16 +920,15 @@ pkcs8_key_decode(const gnutls_datum_t * raw_key, else result = 0; - error: +error: asn1_delete_structure2(&pkcs8_asn, ASN1_DELETE_FLAG_ZEROIZE); return result; - } /* Decodes an RSA privateKey from a PKCS8 structure. */ -static int -_decode_pkcs8_rsa_key(asn1_node pkcs8_asn, gnutls_x509_privkey_t pkey) +static int _decode_pkcs8_rsa_key(asn1_node pkcs8_asn, + gnutls_x509_privkey_t pkey) { int ret; gnutls_datum_t tmp = { NULL, 0 }; @@ -988,14 +950,14 @@ _decode_pkcs8_rsa_key(asn1_node pkcs8_asn, gnutls_x509_privkey_t pkey) ret = 0; - error: +error: return ret; } /* Decodes an RSA-PSS privateKey from a PKCS8 structure. */ -static int -_decode_pkcs8_rsa_pss_key(asn1_node pkcs8_asn, gnutls_x509_privkey_t pkey) +static int _decode_pkcs8_rsa_pss_key(asn1_node pkcs8_asn, + gnutls_x509_privkey_t pkey) { int ret; gnutls_datum_t tmp = { NULL, 0 }; @@ -1006,8 +968,8 @@ _decode_pkcs8_rsa_pss_key(asn1_node pkcs8_asn, gnutls_x509_privkey_t pkey) ret = _gnutls_x509_read_value(pkcs8_asn, "privateKeyAlgorithm.parameters", &tmp); if (ret < 0) { - if (ret == GNUTLS_E_ASN1_VALUE_NOT_FOUND - || ret == GNUTLS_E_ASN1_ELEMENT_NOT_FOUND) + if (ret == GNUTLS_E_ASN1_VALUE_NOT_FOUND || + ret == GNUTLS_E_ASN1_ELEMENT_NOT_FOUND) goto skip_params; gnutls_assert(); @@ -1022,7 +984,7 @@ _decode_pkcs8_rsa_pss_key(asn1_node pkcs8_asn, gnutls_x509_privkey_t pkey) goto error; } - skip_params: +skip_params: ret = _decode_pkcs8_rsa_key(pkcs8_asn, pkey); if (ret < 0) { gnutls_assert(); @@ -1034,14 +996,14 @@ _decode_pkcs8_rsa_pss_key(asn1_node pkcs8_asn, gnutls_x509_privkey_t pkey) ret = 0; - error: +error: return ret; } /* Decodes an ECC privateKey from a PKCS8 structure. */ -static int -_decode_pkcs8_ecc_key(asn1_node pkcs8_asn, gnutls_x509_privkey_t pkey) +static int _decode_pkcs8_ecc_key(asn1_node pkcs8_asn, + gnutls_x509_privkey_t pkey) { int ret; gnutls_datum_t tmp = { NULL, 0 }; @@ -1053,9 +1015,8 @@ _decode_pkcs8_ecc_key(asn1_node pkcs8_asn, gnutls_x509_privkey_t pkey) * privateKeyAlgorithm.parameters instead of the ECPrivateKey.parameters. */ len = sizeof(oid); - result = - asn1_read_value(pkcs8_asn, "privateKeyAlgorithm.parameters", - oid, &len); + result = asn1_read_value(pkcs8_asn, "privateKeyAlgorithm.parameters", + oid, &len); if (result == ASN1_SUCCESS) { ret = _gnutls_x509_read_ecc_params(oid, len, &curve); if (ret < 0) { @@ -1081,13 +1042,12 @@ _decode_pkcs8_ecc_key(asn1_node pkcs8_asn, gnutls_x509_privkey_t pkey) ret = 0; - error: +error: return ret; } -static int -_decode_pkcs8_eddsa_key(asn1_node pkcs8_asn, gnutls_x509_privkey_t pkey, - const char *oid) +static int _decode_pkcs8_eddsa_key(asn1_node pkcs8_asn, + gnutls_x509_privkey_t pkey, const char *oid) { int ret; gnutls_datum_t tmp; @@ -1104,9 +1064,8 @@ _decode_pkcs8_eddsa_key(asn1_node pkcs8_asn, gnutls_x509_privkey_t pkey, ce = _gnutls_ecc_curve_get_params(curve); if (_curve_is_eddsa(ce)) { - ret = - _gnutls_x509_read_string(pkcs8_asn, "privateKey", &tmp, - ASN1_ETYPE_OCTET_STRING, 1); + ret = _gnutls_x509_read_string(pkcs8_asn, "privateKey", &tmp, + ASN1_ETYPE_OCTET_STRING, 1); if (ret < 0) { gnutls_assert(); return gnutls_assert_val(ret); @@ -1138,9 +1097,9 @@ _decode_pkcs8_eddsa_key(asn1_node pkcs8_asn, gnutls_x509_privkey_t pkey, } } -static int -_decode_pkcs8_modern_ecdh_key(asn1_node pkcs8_asn, gnutls_x509_privkey_t pkey, - const char *oid) +static int _decode_pkcs8_modern_ecdh_key(asn1_node pkcs8_asn, + gnutls_x509_privkey_t pkey, + const char *oid) { int ret; gnutls_datum_t tmp; @@ -1157,9 +1116,8 @@ _decode_pkcs8_modern_ecdh_key(asn1_node pkcs8_asn, gnutls_x509_privkey_t pkey, ce = _gnutls_ecc_curve_get_params(curve); if (_curve_is_modern_ecdh(ce)) { - ret = - _gnutls_x509_read_string(pkcs8_asn, "privateKey", &tmp, - ASN1_ETYPE_OCTET_STRING, 1); + ret = _gnutls_x509_read_string(pkcs8_asn, "privateKey", &tmp, + ASN1_ETYPE_OCTET_STRING, 1); if (ret < 0) { gnutls_assert(); return gnutls_assert_val(ret); @@ -1194,9 +1152,8 @@ _decode_pkcs8_modern_ecdh_key(asn1_node pkcs8_asn, gnutls_x509_privkey_t pkey, /* Converts a GOST key to * an internal structure (gnutls_private_key) */ -static int -_privkey_decode_gost_key(const gnutls_datum_t * raw_key, - gnutls_x509_privkey_t pkey) +static int _privkey_decode_gost_key(const gnutls_datum_t *raw_key, + gnutls_x509_privkey_t pkey) { int ret; int ecc_size = gnutls_ecc_curve_get_size(pkey->params.curve); @@ -1230,9 +1187,8 @@ _privkey_decode_gost_key(const gnutls_datum_t * raw_key, goto error; } - ret = _asn1_strict_der_decode(&pkey_asn, - raw_key->data, raw_key->size, - NULL); + ret = _asn1_strict_der_decode(&pkey_asn, raw_key->data, + raw_key->size, NULL); if (ret != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(ret); @@ -1262,9 +1218,8 @@ _privkey_decode_gost_key(const gnutls_datum_t * raw_key, goto error; } - ret = _asn1_strict_der_decode(&pkey_asn, - raw_key->data, raw_key->size, - NULL); + ret = _asn1_strict_der_decode(&pkey_asn, raw_key->data, + raw_key->size, NULL); if (ret != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(ret); @@ -1273,9 +1228,8 @@ _privkey_decode_gost_key(const gnutls_datum_t * raw_key, goto error; } - ret = _gnutls_x509_read_key_int_le(pkey_asn, "", - &pkey-> - params.params[GOST_K]); + ret = _gnutls_x509_read_key_int_le( + pkey_asn, "", &pkey->params.params[GOST_K]); if (ret < 0) { gnutls_assert(); asn1_delete_structure2(&pkey_asn, @@ -1293,20 +1247,21 @@ _privkey_decode_gost_key(const gnutls_datum_t * raw_key, return 0; - error: +error: return ret; - } /* Decodes a GOST privateKey from a PKCS8 structure. */ -static int -_decode_pkcs8_gost_key(asn1_node pkcs8_asn, gnutls_x509_privkey_t pkey, - gnutls_pk_algorithm_t algo) +static int _decode_pkcs8_gost_key(asn1_node pkcs8_asn, + gnutls_x509_privkey_t pkey, + gnutls_pk_algorithm_t algo) { int ret; gnutls_datum_t tmp; - unsigned char oid[3 * MAX_OID_SIZE]; /* GOST parameters can have 3 OIDs at most */ + unsigned char + oid[3 * + MAX_OID_SIZE]; /* GOST parameters can have 3 OIDs at most */ int len, result; gnutls_pk_params_init(&pkey->params); @@ -1319,9 +1274,8 @@ _decode_pkcs8_gost_key(asn1_node pkcs8_asn, gnutls_x509_privkey_t pkey, ret = GNUTLS_E_PARSING_ERROR; goto error; } else { - ret = - _gnutls_x509_read_gost_params(oid, len, &pkey->params, - algo); + ret = _gnutls_x509_read_gost_params(oid, len, &pkey->params, + algo); if (ret < 0) { gnutls_assert(); goto error; @@ -1364,7 +1318,7 @@ _decode_pkcs8_gost_key(asn1_node pkcs8_asn, gnutls_x509_privkey_t pkey, return 0; - error: +error: gnutls_pk_params_clear(&pkey->params); gnutls_pk_params_release(&pkey->params); @@ -1373,8 +1327,8 @@ _decode_pkcs8_gost_key(asn1_node pkcs8_asn, gnutls_x509_privkey_t pkey, /* Decodes an DSA privateKey and params from a PKCS8 structure. */ -static int -_decode_pkcs8_dsa_key(asn1_node pkcs8_asn, gnutls_x509_privkey_t pkey) +static int _decode_pkcs8_dsa_key(asn1_node pkcs8_asn, + gnutls_x509_privkey_t pkey) { int ret; gnutls_datum_t tmp = { NULL, 0 }; @@ -1387,9 +1341,8 @@ _decode_pkcs8_dsa_key(asn1_node pkcs8_asn, gnutls_x509_privkey_t pkey) goto error; } - ret = - _gnutls_x509_read_der_int(tmp.data, tmp.size, - &pkey->params.params[4]); + ret = _gnutls_x509_read_der_int(tmp.data, tmp.size, + &pkey->params.params[4]); _gnutls_free_key_datum(&tmp); if (ret < 0) { @@ -1397,17 +1350,15 @@ _decode_pkcs8_dsa_key(asn1_node pkcs8_asn, gnutls_x509_privkey_t pkey) goto error; } - ret = - _gnutls_x509_read_value(pkcs8_asn, - "privateKeyAlgorithm.parameters", &tmp); + ret = _gnutls_x509_read_value(pkcs8_asn, + "privateKeyAlgorithm.parameters", &tmp); if (ret < 0) { gnutls_assert(); goto error; } - ret = - _gnutls_x509_read_pubkey_params(GNUTLS_PK_DSA, tmp.data, - tmp.size, &pkey->params); + ret = _gnutls_x509_read_pubkey_params(GNUTLS_PK_DSA, tmp.data, tmp.size, + &pkey->params); _gnutls_free_datum(&tmp); if (ret < 0) { gnutls_assert(); @@ -1445,14 +1396,14 @@ _decode_pkcs8_dsa_key(asn1_node pkcs8_asn, gnutls_x509_privkey_t pkey) return 0; - error: +error: if (pkey->params.params_nr != DSA_PRIVATE_PARAMS) _gnutls_mpi_release(&pkey->params.params[4]); return ret; } -static int -decode_private_key_info(const gnutls_datum_t * der, gnutls_x509_privkey_t pkey) +static int decode_private_key_info(const gnutls_datum_t *der, + gnutls_x509_privkey_t pkey) { int result, len; char oid[MAX_OID_SIZE]; @@ -1460,17 +1411,16 @@ decode_private_key_info(const gnutls_datum_t * der, gnutls_x509_privkey_t pkey) gnutls_datum_t sder; int ret; - if ((result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.pkcs-8-PrivateKeyInfo", - &pkcs8_asn)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.pkcs-8-PrivateKeyInfo", + &pkcs8_asn)) != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto error; } result = - _asn1_strict_der_decode(&pkcs8_asn, der->data, der->size, NULL); + _asn1_strict_der_decode(&pkcs8_asn, der->data, der->size, NULL); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -1480,9 +1430,8 @@ decode_private_key_info(const gnutls_datum_t * der, gnutls_x509_privkey_t pkey) /* Check the private key algorithm OID */ len = sizeof(oid); - result = - asn1_read_value(pkcs8_asn, "privateKeyAlgorithm.algorithm", - oid, &len); + result = asn1_read_value(pkcs8_asn, "privateKeyAlgorithm.algorithm", + oid, &len); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -1492,8 +1441,8 @@ decode_private_key_info(const gnutls_datum_t * der, gnutls_x509_privkey_t pkey) pkey->params.algo = gnutls_oid_to_pk(oid); if (pkey->params.algo == GNUTLS_PK_UNKNOWN) { gnutls_assert(); - _gnutls_debug_log - ("PKCS #8 private key OID '%s' is unsupported.\n", oid); + _gnutls_debug_log( + "PKCS #8 private key OID '%s' is unsupported.\n", oid); result = GNUTLS_E_UNKNOWN_PK_ALGORITHM; goto error; } @@ -1525,8 +1474,8 @@ decode_private_key_info(const gnutls_datum_t * der, gnutls_x509_privkey_t pkey) case GNUTLS_PK_GOST_01: case GNUTLS_PK_GOST_12_256: case GNUTLS_PK_GOST_12_512: - result = _decode_pkcs8_gost_key(pkcs8_asn, - pkey, pkey->params.algo); + result = _decode_pkcs8_gost_key(pkcs8_asn, pkey, + pkey->params.algo); break; default: result = gnutls_assert_val(GNUTLS_E_UNIMPLEMENTED_FEATURE); @@ -1539,10 +1488,9 @@ decode_private_key_info(const gnutls_datum_t * der, gnutls_x509_privkey_t pkey) } /* check for provable parameters attribute */ - ret = - _x509_parse_attribute(pkcs8_asn, "attributes", OID_ATTR_PROV_SEED, - 0, 1, &sder); - if (ret >= 0) { /* ignore it when not being present */ + ret = _x509_parse_attribute(pkcs8_asn, "attributes", OID_ATTR_PROV_SEED, + 0, 1, &sder); + if (ret >= 0) { /* ignore it when not being present */ ret = _x509_decode_provable_seed(pkey, &sder); gnutls_free(sder.data); if (ret < 0) { @@ -1552,10 +1500,9 @@ decode_private_key_info(const gnutls_datum_t * der, gnutls_x509_privkey_t pkey) result = 0; - error: +error: asn1_delete_structure2(&pkcs8_asn, ASN1_DELETE_FLAG_ZEROIZE); return result; - } /** @@ -1586,11 +1533,10 @@ decode_private_key_info(const gnutls_datum_t * der, gnutls_x509_privkey_t pkey) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_privkey_import_pkcs8(gnutls_x509_privkey_t key, - const gnutls_datum_t * data, - gnutls_x509_crt_fmt_t format, - const char *password, unsigned int flags) +int gnutls_x509_privkey_import_pkcs8(gnutls_x509_privkey_t key, + const gnutls_datum_t *data, + gnutls_x509_crt_fmt_t format, + const char *password, unsigned int flags) { int result = 0, need_free = 0; gnutls_datum_t _data; @@ -1610,15 +1556,13 @@ gnutls_x509_privkey_import_pkcs8(gnutls_x509_privkey_t key, if (format == GNUTLS_X509_FMT_PEM) { /* Try the first header */ - result = - _gnutls_fbase64_decode(PEM_UNENCRYPTED_PKCS8, - data->data, data->size, &_data); + result = _gnutls_fbase64_decode(PEM_UNENCRYPTED_PKCS8, + data->data, data->size, &_data); - if (result < 0) { /* Try the encrypted header + if (result < 0) { /* Try the encrypted header */ - result = - _gnutls_fbase64_decode(PEM_PKCS8, data->data, - data->size, &_data); + result = _gnutls_fbase64_decode(PEM_PKCS8, data->data, + data->size, &_data); if (result < 0) { gnutls_assert(); @@ -1641,11 +1585,11 @@ gnutls_x509_privkey_import_pkcs8(gnutls_x509_privkey_t key, */ if (flags & GNUTLS_PKCS_PLAIN) { result = decode_private_key_info(&_data, key); - if (result < 0) { /* check if it is encrypted */ + if (result < 0) { /* check if it is encrypted */ if (pkcs8_key_decode(&_data, "", key, 0) == 0) result = GNUTLS_E_DECRYPTION_FAILED; } - } else { /* encrypted. */ + } else { /* encrypted. */ result = pkcs8_key_decode(&_data, password, key, 1); } @@ -1657,7 +1601,7 @@ gnutls_x509_privkey_import_pkcs8(gnutls_x509_privkey_t key, /* This part is necessary to get the public key on certain algorithms. * In the import above we only get the private key. */ result = - _gnutls_pk_fixup(key->params.algo, GNUTLS_IMPORT, &key->params); + _gnutls_pk_fixup(key->params.algo, GNUTLS_IMPORT, &key->params); if (result < 0) { gnutls_assert(); goto cleanup; @@ -1670,7 +1614,7 @@ gnutls_x509_privkey_import_pkcs8(gnutls_x509_privkey_t key, */ return 0; - cleanup: +cleanup: asn1_delete_structure2(&key->key, ASN1_DELETE_FLAG_ZEROIZE); key->params.algo = GNUTLS_PK_UNKNOWN; if (need_free) { diff --git a/lib/x509/privkey_pkcs8_pbes1.c b/lib/x509/privkey_pkcs8_pbes1.c index c08df189aa..65cb77fd97 100644 --- a/lib/x509/privkey_pkcs8_pbes1.c +++ b/lib/x509/privkey_pkcs8_pbes1.c @@ -37,7 +37,7 @@ * We only support decryption for compatibility with other software. */ -int _gnutls_read_pbkdf1_params(const uint8_t * data, int data_size, +int _gnutls_read_pbkdf1_params(const uint8_t *data, int data_size, struct pbkdf2_params *kdf_params, struct pbe_enc_params *enc_params) { @@ -48,10 +48,9 @@ int _gnutls_read_pbkdf1_params(const uint8_t * data, int data_size, memset(kdf_params, 0, sizeof(*kdf_params)); memset(enc_params, 0, sizeof(*enc_params)); - if ((result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.pkcs-5-PBE-params", - &pasn)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.pkcs-5-PBE-params", &pasn)) != + ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -65,16 +64,15 @@ int _gnutls_read_pbkdf1_params(const uint8_t * data, int data_size, goto error; } - ret = - _gnutls_x509_read_uint(pasn, "iterationCount", - &kdf_params->iter_count); + ret = _gnutls_x509_read_uint(pasn, "iterationCount", + &kdf_params->iter_count); if (ret < 0) { gnutls_assert(); goto error; } - if (kdf_params->iter_count >= MAX_ITER_COUNT - || kdf_params->iter_count == 0) { + if (kdf_params->iter_count >= MAX_ITER_COUNT || + kdf_params->iter_count == 0) { ret = gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER); goto error; } @@ -96,15 +94,14 @@ int _gnutls_read_pbkdf1_params(const uint8_t * data, int data_size, enc_params->cipher = GNUTLS_CIPHER_DES_CBC; ret = 0; - error: +error: asn1_delete_structure2(&pasn, ASN1_DELETE_FLAG_ZEROIZE); return ret; - } static void pbkdf1_md5(const char *password, unsigned password_len, const uint8_t salt[8], unsigned iter_count, - unsigned key_size, uint8_t * key) + unsigned key_size, uint8_t *key) { struct md5_ctx ctx; uint8_t tmp[16]; @@ -116,7 +113,7 @@ static void pbkdf1_md5(const char *password, unsigned password_len, for (i = 0; i < iter_count; i++) { md5_init(&ctx); if (i == 0) { - md5_update(&ctx, password_len, (uint8_t *) password); + md5_update(&ctx, password_len, (uint8_t *)password); md5_update(&ctx, 8, salt); md5_digest(&ctx, 16, tmp); } else { @@ -129,13 +126,12 @@ static void pbkdf1_md5(const char *password, unsigned password_len, return; } -int -_gnutls_decrypt_pbes1_des_md5_data(const char *password, - unsigned password_len, - const struct pbkdf2_params *kdf_params, - const struct pbe_enc_params *enc_params, - const gnutls_datum_t * encrypted_data, - gnutls_datum_t * decrypted_data) +int _gnutls_decrypt_pbes1_des_md5_data(const char *password, + unsigned password_len, + const struct pbkdf2_params *kdf_params, + const struct pbe_enc_params *enc_params, + const gnutls_datum_t *encrypted_data, + gnutls_datum_t *decrypted_data) { int result; gnutls_datum_t dkey, d_iv; @@ -165,28 +161,27 @@ _gnutls_decrypt_pbes1_des_md5_data(const char *password, } _gnutls_switch_fips_state(GNUTLS_FIPS140_OP_NOT_APPROVED); - result = - gnutls_cipher_decrypt(ch, encrypted_data->data, - encrypted_data->size); + result = gnutls_cipher_decrypt(ch, encrypted_data->data, + encrypted_data->size); if (result < 0) { gnutls_assert(); goto error; } if ((int)encrypted_data->size - - encrypted_data->data[encrypted_data->size - 1] < 0) { + encrypted_data->data[encrypted_data->size - 1] < + 0) { gnutls_assert(); result = GNUTLS_E_ILLEGAL_PARAMETER; goto error; } decrypted_data->data = encrypted_data->data; - decrypted_data->size = - encrypted_data->size - encrypted_data->data[encrypted_data->size - - 1]; + decrypted_data->size = encrypted_data->size - + encrypted_data->data[encrypted_data->size - 1]; result = 0; - error: +error: gnutls_cipher_deinit(ch); return result; diff --git a/lib/x509/prov-seed.c b/lib/x509/prov-seed.c index 0e2543d87f..edbb8b4203 100644 --- a/lib/x509/prov-seed.c +++ b/lib/x509/prov-seed.c @@ -33,9 +33,8 @@ /* This function encodes a seed value and a hash algorithm OID to the format * described in RFC8479. The output is the DER encoded form. */ -int _x509_encode_provable_seed(gnutls_x509_privkey_t pkey, gnutls_datum_t * der) +int _x509_encode_provable_seed(gnutls_x509_privkey_t pkey, gnutls_datum_t *der) { - asn1_node c2; int ret, result; const char *oid; @@ -44,16 +43,15 @@ int _x509_encode_provable_seed(gnutls_x509_privkey_t pkey, gnutls_datum_t * der) if (oid == NULL) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - if ((result = - asn1_create_element(_gnutls_get_gnutls_asn(), - "GNUTLS.ProvableSeed", &c2)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.ProvableSeed", &c2)) != + ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } - result = - asn1_write_value(c2, "seed", pkey->params.seed, - pkey->params.seed_size); + result = asn1_write_value(c2, "seed", pkey->params.seed, + pkey->params.seed_size); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); @@ -75,7 +73,7 @@ int _x509_encode_provable_seed(gnutls_x509_privkey_t pkey, gnutls_datum_t * der) ret = 0; - cleanup: +cleanup: asn1_delete_structure2(&c2, ASN1_DELETE_FLAG_ZEROIZE); return ret; } @@ -84,18 +82,17 @@ int _x509_encode_provable_seed(gnutls_x509_privkey_t pkey, gnutls_datum_t * der) * RFC8479. */ int _x509_decode_provable_seed(gnutls_x509_privkey_t pkey, - const gnutls_datum_t * der) + const gnutls_datum_t *der) { - asn1_node c2; int ret, result; char oid[MAX_OID_SIZE]; int oid_size; gnutls_datum_t seed = { NULL, 0 }; - if ((result = - asn1_create_element(_gnutls_get_gnutls_asn(), - "GNUTLS.ProvableSeed", &c2)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.ProvableSeed", &c2)) != + ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -117,10 +114,10 @@ int _x509_decode_provable_seed(gnutls_x509_privkey_t pkey, memcpy(pkey->params.seed, seed.data, seed.size); pkey->params.seed_size = seed.size; } else { - ret = 0; /* ignore struct */ - _gnutls_debug_log - ("%s: ignoring ProvableSeed due to very long params\n", - __func__); + ret = 0; /* ignore struct */ + _gnutls_debug_log( + "%s: ignoring ProvableSeed due to very long params\n", + __func__); goto cleanup; } @@ -137,7 +134,7 @@ int _x509_decode_provable_seed(gnutls_x509_privkey_t pkey, ret = 0; - cleanup: +cleanup: gnutls_free(seed.data); asn1_delete_structure2(&c2, ASN1_DELETE_FLAG_ZEROIZE); return ret; diff --git a/lib/x509/prov-seed.h b/lib/x509/prov-seed.h index a314a86e89..b34b302809 100644 --- a/lib/x509/prov-seed.h +++ b/lib/x509/prov-seed.h @@ -21,11 +21,10 @@ */ #ifndef GNUTLS_LIB_X509_PROV_SEED_H -# define GNUTLS_LIB_X509_PROV_SEED_H +#define GNUTLS_LIB_X509_PROV_SEED_H -int _x509_encode_provable_seed(gnutls_x509_privkey_t pkey, - gnutls_datum_t * der); +int _x509_encode_provable_seed(gnutls_x509_privkey_t pkey, gnutls_datum_t *der); int _x509_decode_provable_seed(gnutls_x509_privkey_t pkey, - const gnutls_datum_t * der); + const gnutls_datum_t *der); -#endif /* GNUTLS_LIB_X509_PROV_SEED_H */ +#endif /* GNUTLS_LIB_X509_PROV_SEED_H */ diff --git a/lib/x509/sign.c b/lib/x509/sign.c index 8cb99b9ec1..48992d4cfa 100644 --- a/lib/x509/sign.c +++ b/lib/x509/sign.c @@ -29,7 +29,7 @@ #include "errors.h" #include #include -#include /* MAX */ +#include /* MAX */ #include #include #include @@ -42,16 +42,15 @@ * the asn1_node given, and sign the DER data. Actually used to get the DER * of the TBS and sign it on the fly. */ -int -_gnutls_x509_get_tbs(asn1_node cert, const char *tbs_name, gnutls_datum_t * tbs) +int _gnutls_x509_get_tbs(asn1_node cert, const char *tbs_name, + gnutls_datum_t *tbs) { return _gnutls_x509_der_encode(cert, tbs_name, tbs, 0); } -int -_gnutls_x509_crt_get_spki_params(gnutls_x509_crt_t crt, - const gnutls_x509_spki_st * key_params, - gnutls_x509_spki_st * params) +int _gnutls_x509_crt_get_spki_params(gnutls_x509_crt_t crt, + const gnutls_x509_spki_st *key_params, + gnutls_x509_spki_st *params) { int result; gnutls_x509_spki_st crt_params; @@ -73,8 +72,8 @@ _gnutls_x509_crt_get_spki_params(gnutls_x509_crt_t crt, gnutls_assert(); return GNUTLS_E_CERTIFICATE_ERROR; } - } else if (key_params->pk != GNUTLS_PK_RSA - && key_params->pk != GNUTLS_PK_UNKNOWN) { + } else if (key_params->pk != GNUTLS_PK_RSA && + key_params->pk != GNUTLS_PK_UNKNOWN) { gnutls_assert(); return GNUTLS_E_CERTIFICATE_ERROR; } @@ -98,11 +97,10 @@ _gnutls_x509_crt_get_spki_params(gnutls_x509_crt_t crt, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. -*/ -int -_gnutls_x509_pkix_sign(asn1_node src, const char *src_name, - gnutls_digest_algorithm_t dig, - unsigned int flags, - gnutls_x509_crt_t issuer, gnutls_privkey_t issuer_key) +int _gnutls_x509_pkix_sign(asn1_node src, const char *src_name, + gnutls_digest_algorithm_t dig, unsigned int flags, + gnutls_x509_crt_t issuer, + gnutls_privkey_t issuer_key) { int result; gnutls_datum_t signature; @@ -140,8 +138,8 @@ _gnutls_x509_pkix_sign(asn1_node src, const char *src_name, _gnutls_str_cpy(name, sizeof(name), src_name); _gnutls_str_cat(name, sizeof(name), ".issuer"); - result = - asn1_copy_node(src, name, issuer->cert, "tbsCertificate.subject"); + result = asn1_copy_node(src, name, issuer->cert, + "tbsCertificate.subject"); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -154,8 +152,8 @@ _gnutls_x509_pkix_sign(asn1_node src, const char *src_name, se = _gnutls_pk_to_sign_entry(params.pk, dig); if (se == NULL) - return - gnutls_assert_val(GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM); + return gnutls_assert_val( + GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM); _gnutls_debug_log("signing structure using %s\n", se->name); @@ -177,12 +175,11 @@ _gnutls_x509_pkix_sign(asn1_node src, const char *src_name, FIX_SIGN_PARAMS(params, flags, dig); if (_gnutls_pk_is_not_prehashed(params.pk)) { - result = - privkey_sign_raw_data(issuer_key, se, &tbs, &signature, - ¶ms); + result = privkey_sign_raw_data(issuer_key, se, &tbs, &signature, + ¶ms); } else { - result = privkey_sign_and_hash_data(issuer_key, se, - &tbs, &signature, ¶ms); + result = privkey_sign_and_hash_data(issuer_key, se, &tbs, + &signature, ¶ms); } gnutls_free(tbs.data); @@ -193,9 +190,8 @@ _gnutls_x509_pkix_sign(asn1_node src, const char *src_name, /* write the signature (bits) */ - result = - asn1_write_value(src, "signature", signature.data, - signature.size * 8); + result = asn1_write_value(src, "signature", signature.data, + signature.size * 8); _gnutls_free_datum(&signature); @@ -208,8 +204,8 @@ _gnutls_x509_pkix_sign(asn1_node src, const char *src_name, * the same. */ - result = _gnutls_x509_write_sign_params(src, "signatureAlgorithm", - se, ¶ms); + result = _gnutls_x509_write_sign_params(src, "signatureAlgorithm", se, + ¶ms); if (result < 0) { gnutls_assert(); return result; diff --git a/lib/x509/spki.c b/lib/x509/spki.c index 885a5c8bc4..9e2a6e57c7 100644 --- a/lib/x509/spki.c +++ b/lib/x509/spki.c @@ -40,7 +40,7 @@ * Since: 3.6.0 * **/ -int gnutls_x509_spki_init(gnutls_x509_spki_t * spki) +int gnutls_x509_spki_init(gnutls_x509_spki_t *spki) { gnutls_x509_spki_t tmp; @@ -54,7 +54,7 @@ int gnutls_x509_spki_init(gnutls_x509_spki_t * spki) *spki = tmp; - return 0; /* success */ + return 0; /* success */ } /** @@ -83,10 +83,9 @@ void gnutls_x509_spki_deinit(gnutls_x509_spki_t spki) * Since: 3.6.0 * **/ -void -gnutls_x509_spki_set_rsa_pss_params(gnutls_x509_spki_t spki, - gnutls_digest_algorithm_t dig, - unsigned int salt_size) +void gnutls_x509_spki_set_rsa_pss_params(gnutls_x509_spki_t spki, + gnutls_digest_algorithm_t dig, + unsigned int salt_size) { spki->pk = GNUTLS_PK_RSA_PSS; spki->rsa_pss_dig = dig; @@ -108,10 +107,9 @@ gnutls_x509_spki_set_rsa_pss_params(gnutls_x509_spki_t spki, * Since: 3.6.0 * **/ -int -gnutls_x509_spki_get_rsa_pss_params(gnutls_x509_spki_t spki, - gnutls_digest_algorithm_t * dig, - unsigned int *salt_size) +int gnutls_x509_spki_get_rsa_pss_params(gnutls_x509_spki_t spki, + gnutls_digest_algorithm_t *dig, + unsigned int *salt_size) { if (spki->pk == 0) return gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); diff --git a/lib/x509/time.c b/lib/x509/time.c index 3dc4eaa751..d9b420559f 100644 --- a/lib/x509/time.c +++ b/lib/x509/time.c @@ -46,7 +46,7 @@ */ typedef struct fake_tm { int tm_mon; - int tm_year; /* FULL year - ie 1971 */ + int tm_year; /* FULL year - ie 1971 */ int tm_mday; int tm_hour; int tm_min; @@ -63,7 +63,7 @@ static const int MONTHDAYS[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; - /* Whether a given year is a leap year. */ +/* Whether a given year is a leap year. */ #define ISLEAP(year) \ (((year) % 4) == 0 && (((year) % 100) != 0 || ((year) % 400) == 0)) @@ -78,20 +78,20 @@ static time_t mktime_utc(const struct fake_tm *tm) time_t result = 0; int i; -/* We do allow some ill-formed dates, but we don't do anything special + /* We do allow some ill-formed dates, but we don't do anything special * with them and our callers really shouldn't pass them to us. Do * explicitly disallow the ones that would cause invalid array accesses * or other algorithm problems. */ if (tm->tm_mon < 0 || tm->tm_mon > 11 || tm->tm_year < 1970) - return (time_t) - 1; + return (time_t)-1; /* Check for "obvious" mistakes in dates */ - if (tm->tm_sec > 60 || tm->tm_min > 59 || tm->tm_mday > 31 - || tm->tm_mday < 1 || tm->tm_hour > 23) - return (time_t) - 1; + if (tm->tm_sec > 60 || tm->tm_min > 59 || tm->tm_mday > 31 || + tm->tm_mday < 1 || tm->tm_hour > 23) + return (time_t)-1; -/* Convert to a time_t. + /* Convert to a time_t. */ for (i = 1970; i < tm->tm_year; i++) result += 365 + ISLEAP(i); @@ -116,7 +116,7 @@ static time_t time2gtime(const char *ttime, int year) if (strlen(ttime) < 8) { gnutls_assert(); - return (time_t) - 1; + return (time_t)-1; } etime.tm_year = year; @@ -125,34 +125,34 @@ static time_t time2gtime(const char *ttime, int year) * time_t. */ if (sizeof(time_t) <= 4 && etime.tm_year >= 2038) - return (time_t) 2145914603; /* 2037-12-31 23:23:23 */ + return (time_t)2145914603; /* 2037-12-31 23:23:23 */ if (etime.tm_year < 1970) - return (time_t) 0; + return (time_t)0; xx[2] = 0; -/* get the month + /* get the month */ - memcpy(xx, ttime, 2); /* month */ + memcpy(xx, ttime, 2); /* month */ etime.tm_mon = atoi(xx) - 1; ttime += 2; -/* get the day + /* get the day */ - memcpy(xx, ttime, 2); /* day */ + memcpy(xx, ttime, 2); /* day */ etime.tm_mday = atoi(xx); ttime += 2; -/* get the hour + /* get the hour */ - memcpy(xx, ttime, 2); /* hour */ + memcpy(xx, ttime, 2); /* hour */ etime.tm_hour = atoi(xx); ttime += 2; -/* get the minutes + /* get the minutes */ - memcpy(xx, ttime, 2); /* minutes */ + memcpy(xx, ttime, 2); /* minutes */ etime.tm_min = atoi(xx); ttime += 2; @@ -179,21 +179,21 @@ time_t _gnutls_utcTime2gtime(const char *ttime) if (len < 10) { gnutls_assert(); - return (time_t) - 1; + return (time_t)-1; } #ifdef STRICT_DER_TIME /* Make sure everything else is digits. */ for (i = 0; i < len - 1; i++) { if (c_isdigit(ttime[i])) continue; - return gnutls_assert_val((time_t) - 1); + return gnutls_assert_val((time_t)-1); } #endif xx[2] = 0; -/* get the year + /* get the year */ - memcpy(xx, ttime, 2); /* year */ + memcpy(xx, ttime, 2); /* year */ year = atoi(xx); ttime += 2; @@ -216,25 +216,25 @@ time_t _gnutls_x509_generalTime2gtime(const char *ttime) if (strlen(ttime) < 12) { gnutls_assert(); - return (time_t) - 1; + return (time_t)-1; } if (strchr(ttime, 'Z') == 0) { gnutls_assert(); /* required to be in GMT */ - return (time_t) - 1; + return (time_t)-1; } if (strchr(ttime, '.') != 0) { gnutls_assert(); /* no fractional seconds allowed */ - return (time_t) - 1; + return (time_t)-1; } xx[4] = 0; -/* get the year + /* get the year */ - memcpy(xx, ttime, 4); /* year */ + memcpy(xx, ttime, 4); /* year */ year = atoi(xx); ttime += 4; @@ -244,18 +244,17 @@ time_t _gnutls_x509_generalTime2gtime(const char *ttime) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wformat-y2k" /* tag will contain ASN1_TAG_UTCTime or ASN1_TAG_GENERALIZEDTime */ -static int -gtime_to_suitable_time(time_t gtime, char *str_time, size_t str_time_size, - unsigned *tag) +static int gtime_to_suitable_time(time_t gtime, char *str_time, + size_t str_time_size, unsigned *tag) { size_t ret; struct tm _tm; - if (gtime == (time_t) - 1 + if (gtime == (time_t)-1 #if SIZEOF_LONG == 8 || gtime >= 253402210800 #endif - ) { + ) { if (tag) *tag = ASN1_TAG_GENERALIZEDTime; snprintf(str_time, str_time_size, "99991231235959Z"); @@ -287,17 +286,17 @@ gtime_to_suitable_time(time_t gtime, char *str_time, size_t str_time_size, #pragma GCC diagnostic pop -static int -gtime_to_generalTime(time_t gtime, char *str_time, size_t str_time_size) +static int gtime_to_generalTime(time_t gtime, char *str_time, + size_t str_time_size) { size_t ret; struct tm _tm; - if (gtime == (time_t) - 1 + if (gtime == (time_t)-1 #if SIZEOF_LONG == 8 || gtime >= 253402210800 #endif - ) { + ) { snprintf(str_time, str_time_size, "99991231235959Z"); return 0; } @@ -324,14 +323,14 @@ time_t _gnutls_x509_get_time(asn1_node c2, const char *where, int force_general) { char ttime[MAX_TIME]; char name[128]; - time_t c_time = (time_t) - 1; + time_t c_time = (time_t)-1; int len, result; len = sizeof(ttime) - 1; result = asn1_read_value(c2, where, ttime, &len); if (result != ASN1_SUCCESS) { gnutls_assert(); - return (time_t) (-1); + return (time_t)(-1); } if (force_general != 0) { @@ -351,7 +350,7 @@ time_t _gnutls_x509_get_time(asn1_node c2, const char *where, int force_general) result = asn1_read_value(c2, name, ttime, &len); if (result == ASN1_SUCCESS) c_time = _gnutls_x509_generalTime2gtime(ttime); - } else { /* UTCTIME */ + } else { /* UTCTIME */ if (name[0] == 0) _gnutls_str_cpy(name, sizeof(name), "utcTime"); else @@ -367,7 +366,7 @@ time_t _gnutls_x509_get_time(asn1_node c2, const char *where, int force_general) */ if (result != ASN1_SUCCESS) { gnutls_assert(); - return (time_t) (-1); + return (time_t)(-1); } } @@ -377,9 +376,8 @@ time_t _gnutls_x509_get_time(asn1_node c2, const char *where, int force_general) /* Sets the time in time_t in the asn1_node given. Where should * be something like "tbsCertList.thisUpdate". */ -int -_gnutls_x509_set_time(asn1_node c2, const char *where, time_t tim, - int force_general) +int _gnutls_x509_set_time(asn1_node c2, const char *where, time_t tim, + int force_general) { char str_time[MAX_TIME]; char name[128]; @@ -412,8 +410,8 @@ _gnutls_x509_set_time(asn1_node c2, const char *where, time_t tim, } _gnutls_str_cat(name, sizeof(name), ".utcTime"); } else { - if ((result = - asn1_write_value(c2, where, "generalTime", 1)) < 0) { + if ((result = asn1_write_value(c2, where, "generalTime", 1)) < + 0) { gnutls_assert(); return _gnutls_asn2err(result); } diff --git a/lib/x509/tls_features.c b/lib/x509/tls_features.c index c269fe3926..2a12438c40 100644 --- a/lib/x509/tls_features.c +++ b/lib/x509/tls_features.c @@ -45,7 +45,7 @@ * * Since: 3.5.1 **/ -int gnutls_x509_tlsfeatures_init(gnutls_x509_tlsfeatures_t * f) +int gnutls_x509_tlsfeatures_init(gnutls_x509_tlsfeatures_t *f) { *f = gnutls_calloc(1, sizeof(struct gnutls_x509_tlsfeatures_st)); if (*f == NULL) @@ -134,9 +134,9 @@ int gnutls_x509_crt_get_tlsfeatures(gnutls_x509_crt_t crt, return GNUTLS_E_INVALID_REQUEST; } - if ((ret = - _gnutls_x509_crt_get_extension(crt, GNUTLS_X509EXT_OID_TLSFEATURES, - 0, &der, critical)) < 0) { + if ((ret = _gnutls_x509_crt_get_extension( + crt, GNUTLS_X509EXT_OID_TLSFEATURES, 0, &der, critical)) < + 0) { return ret; } @@ -152,7 +152,7 @@ int gnutls_x509_crt_get_tlsfeatures(gnutls_x509_crt_t crt, } ret = 0; - cleanup: +cleanup: gnutls_free(der.data); return ret; } @@ -188,9 +188,8 @@ int gnutls_x509_crt_set_tlsfeatures(gnutls_x509_crt_t crt, return ret; } - ret = - _gnutls_x509_crt_set_extension(crt, GNUTLS_X509EXT_OID_TLSFEATURES, - &der, 0); + ret = _gnutls_x509_crt_set_extension( + crt, GNUTLS_X509EXT_OID_TLSFEATURES, &der, 0); _gnutls_free_datum(&der); @@ -222,7 +221,7 @@ unsigned gnutls_x509_tlsfeatures_check_crt(gnutls_x509_tlsfeatures_t feat, unsigned i, j, uret, found; if (feat->size == 0) - return 1; /* shortcut; no constraints to check */ + return 1; /* shortcut; no constraints to check */ ret = gnutls_x509_tlsfeatures_init(&cfeat); if (ret < 0) @@ -237,9 +236,9 @@ unsigned gnutls_x509_tlsfeatures_check_crt(gnutls_x509_tlsfeatures_t feat, /* if cert's features cannot be a superset */ if (feat->size > cfeat->size) { - _gnutls_debug_log - ("certificate has %u, while issuer has %u tlsfeatures\n", - cfeat->size, feat->size); + _gnutls_debug_log( + "certificate has %u, while issuer has %u tlsfeatures\n", + cfeat->size, feat->size); gnutls_assert(); uret = 0; goto cleanup; @@ -263,7 +262,7 @@ unsigned gnutls_x509_tlsfeatures_check_crt(gnutls_x509_tlsfeatures_t feat, } uret = 1; - cleanup: +cleanup: gnutls_x509_tlsfeatures_deinit(cfeat); return uret; } diff --git a/lib/x509/verify-high.c b/lib/x509/verify-high.c index 7b8b270d69..7109bb0a8c 100644 --- a/lib/x509/verify-high.c +++ b/lib/x509/verify-high.c @@ -25,7 +25,7 @@ #include "errors.h" #include #include -#include /* MAX */ +#include /* MAX */ #include #include #include @@ -80,8 +80,8 @@ static bool cert_eq(const void *cert1, const void *cert2) static size_t cert_hashcode(const void *cert) { const gnutls_x509_crt_t c = (const gnutls_x509_crt_t)cert; - return hash_pjw_bare(c->raw_dn.data, - c->raw_dn.size) % DEFAULT_MAX_VERIFY_DEPTH; + return hash_pjw_bare(c->raw_dn.data, c->raw_dn.size) % + DEFAULT_MAX_VERIFY_DEPTH; } /** @@ -96,8 +96,8 @@ static size_t cert_hashcode(const void *cert) * * Since: 3.0.0 **/ -int -gnutls_x509_trust_list_init(gnutls_x509_trust_list_t * list, unsigned int size) +int gnutls_x509_trust_list_init(gnutls_x509_trust_list_t *list, + unsigned int size) { gnutls_x509_trust_list_t tmp; @@ -122,7 +122,7 @@ gnutls_x509_trust_list_init(gnutls_x509_trust_list_t * list, unsigned int size) *list = tmp; - return 0; /* success */ + return 0; /* success */ } /** @@ -137,8 +137,8 @@ gnutls_x509_trust_list_init(gnutls_x509_trust_list_t * list, unsigned int size) * * Since: 3.0.0 **/ -void -gnutls_x509_trust_list_deinit(gnutls_x509_trust_list_t list, unsigned int all) +void gnutls_x509_trust_list_deinit(gnutls_x509_trust_list_t list, + unsigned int all) { unsigned int i, j; @@ -158,8 +158,8 @@ gnutls_x509_trust_list_deinit(gnutls_x509_trust_list_t list, unsigned int all) for (i = 0; i < list->size; i++) { if (all) { for (j = 0; j < list->node[i].trusted_ca_size; j++) { - gnutls_x509_crt_deinit(list->node[i]. - trusted_cas[j]); + gnutls_x509_crt_deinit( + list->node[i].trusted_cas[j]); } } gnutls_free(list->node[i].trusted_cas); @@ -173,8 +173,8 @@ gnutls_x509_trust_list_deinit(gnutls_x509_trust_list_t list, unsigned int all) if (all) { for (j = 0; j < list->node[i].named_cert_size; j++) { - gnutls_x509_crt_deinit(list->node[i].named_certs - [j].cert); + gnutls_x509_crt_deinit( + list->node[i].named_certs[j].cert); } } gnutls_free(list->node[i].named_certs); @@ -186,8 +186,8 @@ gnutls_x509_trust_list_deinit(gnutls_x509_trust_list_t list, unsigned int all) gnutls_free(list); } -static int -add_new_ca_to_rdn_seq(gnutls_x509_trust_list_t list, gnutls_x509_crt_t ca) +static int add_new_ca_to_rdn_seq(gnutls_x509_trust_list_t list, + gnutls_x509_crt_t ca) { gnutls_datum_t tmp; size_t newsize; @@ -228,17 +228,16 @@ add_new_ca_to_rdn_seq(gnutls_x509_trust_list_t list, gnutls_x509_crt_t ca) * deallocated on deinit. This is to handle get_issuer() with * pkcs11 trust modules when the GNUTLS_TL_GET_COPY flag isn't * given. It is not thread safe. */ -static int -trust_list_add_compat(gnutls_x509_trust_list_t list, gnutls_x509_crt_t cert) +static int trust_list_add_compat(gnutls_x509_trust_list_t list, + gnutls_x509_crt_t cert) { if (unlikely(INT_ADD_OVERFLOW(list->keep_certs_size, 1))) { return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); } - list->keep_certs = - _gnutls_reallocarray_fast(list->keep_certs, - list->keep_certs_size + 1, - sizeof(list->keep_certs[0])); + list->keep_certs = _gnutls_reallocarray_fast( + list->keep_certs, list->keep_certs_size + 1, + sizeof(list->keep_certs[0])); if (list->keep_certs == NULL) { gnutls_assert(); return GNUTLS_E_MEMORY_ERROR; @@ -279,10 +278,9 @@ trust_list_add_compat(gnutls_x509_trust_list_t list, gnutls_x509_crt_t cert) * * Since: 3.0.0 **/ -int -gnutls_x509_trust_list_add_cas(gnutls_x509_trust_list_t list, - const gnutls_x509_crt_t * clist, - unsigned clist_size, unsigned int flags) +int gnutls_x509_trust_list_add_cas(gnutls_x509_trust_list_t list, + const gnutls_x509_crt_t *clist, + unsigned clist_size, unsigned int flags) { unsigned i, j; size_t hash; @@ -291,27 +289,22 @@ gnutls_x509_trust_list_add_cas(gnutls_x509_trust_list_t list, for (i = 0; i < clist_size; i++) { exists = 0; - hash = - hash_pjw_bare(clist[i]->raw_dn.data, clist[i]->raw_dn.size); + hash = hash_pjw_bare(clist[i]->raw_dn.data, + clist[i]->raw_dn.size); hash %= list->size; /* avoid duplicates */ - if (flags & GNUTLS_TL_NO_DUPLICATES - || flags & GNUTLS_TL_NO_DUPLICATE_KEY) { + if (flags & GNUTLS_TL_NO_DUPLICATES || + flags & GNUTLS_TL_NO_DUPLICATE_KEY) { for (j = 0; j < list->node[hash].trusted_ca_size; j++) { if (flags & GNUTLS_TL_NO_DUPLICATES) - ret = - gnutls_x509_crt_equals(list->node - [hash].trusted_cas - [j], - clist[i]); + ret = gnutls_x509_crt_equals( + list->node[hash].trusted_cas[j], + clist[i]); else - ret = - _gnutls_check_if_same_key(list->node - [hash].trusted_cas - [j], - clist[i], - 1); + ret = _gnutls_check_if_same_key( + list->node[hash].trusted_cas[j], + clist[i], 1); if (ret != 0) { exists = 1; break; @@ -319,27 +312,23 @@ gnutls_x509_trust_list_add_cas(gnutls_x509_trust_list_t list, } if (exists != 0) { - gnutls_x509_crt_deinit(list-> - node[hash].trusted_cas - [j]); + gnutls_x509_crt_deinit( + list->node[hash].trusted_cas[j]); list->node[hash].trusted_cas[j] = clist[i]; continue; } } - if (unlikely - (INT_ADD_OVERFLOW(list->node[hash].trusted_ca_size, 1))) { + if (unlikely(INT_ADD_OVERFLOW(list->node[hash].trusted_ca_size, + 1))) { gnutls_assert(); return i; } - list->node[hash].trusted_cas = - _gnutls_reallocarray_fast(list->node[hash].trusted_cas, - list->node[hash].trusted_ca_size + - 1, - sizeof(list-> - node[hash].trusted_cas - [0])); + list->node[hash].trusted_cas = _gnutls_reallocarray_fast( + list->node[hash].trusted_cas, + list->node[hash].trusted_ca_size + 1, + sizeof(list->node[hash].trusted_cas[0])); if (list->node[hash].trusted_cas == NULL) { gnutls_assert(); return i; @@ -350,15 +339,16 @@ gnutls_x509_trust_list_add_cas(gnutls_x509_trust_list_t list, gnutls_datum_t dn; gnutls_assert(); if (gnutls_x509_crt_get_dn2(clist[i], &dn) >= 0) { - _gnutls_audit_log(NULL, - "There was a non-CA certificate in the trusted list: %s.\n", - dn.data); + _gnutls_audit_log( + NULL, + "There was a non-CA certificate in the trusted list: %s.\n", + dn.data); gnutls_free(dn.data); } } list->node[hash].trusted_cas[list->node[hash].trusted_ca_size] = - clist[i]; + clist[i]; list->node[hash].trusted_ca_size++; if (flags & GNUTLS_TL_USE_IN_TLS) { @@ -373,8 +363,8 @@ gnutls_x509_trust_list_add_cas(gnutls_x509_trust_list_t list, return i; } -static int -advance_iter(gnutls_x509_trust_list_t list, gnutls_x509_trust_list_iter_t iter) +static int advance_iter(gnutls_x509_trust_list_t list, + gnutls_x509_trust_list_iter_t iter) { if (iter->node_index < list->size) { ++iter->ca_index; @@ -382,7 +372,7 @@ advance_iter(gnutls_x509_trust_list_t list, gnutls_x509_trust_list_iter_t iter) /* skip entries */ while (iter->node_index < list->size && iter->ca_index >= - list->node[iter->node_index].trusted_ca_size) { + list->node[iter->node_index].trusted_ca_size) { ++iter->node_index; iter->ca_index = 0; } @@ -394,18 +384,14 @@ advance_iter(gnutls_x509_trust_list_t list, gnutls_x509_trust_list_iter_t iter) #ifdef ENABLE_PKCS11 if (list->pkcs11_token != NULL) { if (iter->pkcs11_list == NULL) { - int ret = - gnutls_pkcs11_obj_list_import_url2 - (&iter->pkcs11_list, - &iter->pkcs11_size, - list->pkcs11_token, - (GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE - | - GNUTLS_PKCS11_OBJ_FLAG_CRT - | - GNUTLS_PKCS11_OBJ_FLAG_MARK_CA - | GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED), - 0); + int ret = gnutls_pkcs11_obj_list_import_url2( + &iter->pkcs11_list, &iter->pkcs11_size, + list->pkcs11_token, + (GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE | + GNUTLS_PKCS11_OBJ_FLAG_CRT | + GNUTLS_PKCS11_OBJ_FLAG_MARK_CA | + GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED), + 0); if (ret < 0) return gnutls_assert_val(ret); @@ -446,17 +432,16 @@ advance_iter(gnutls_x509_trust_list_t list, gnutls_x509_trust_list_iter_t iter) * * Since: 3.4.0 **/ -int -gnutls_x509_trust_list_iter_get_ca(gnutls_x509_trust_list_t list, - gnutls_x509_trust_list_iter_t * iter, - gnutls_x509_crt_t * crt) +int gnutls_x509_trust_list_iter_get_ca(gnutls_x509_trust_list_t list, + gnutls_x509_trust_list_iter_t *iter, + gnutls_x509_crt_t *crt) { int ret; /* initialize iterator */ if (*iter == NULL) { - *iter = - gnutls_malloc(sizeof(struct gnutls_x509_trust_list_iter)); + *iter = gnutls_malloc( + sizeof(struct gnutls_x509_trust_list_iter)); if (*iter == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); @@ -488,10 +473,9 @@ gnutls_x509_trust_list_iter_get_ca(gnutls_x509_trust_list_t list, if (ret < 0) return gnutls_assert_val(ret); - ret = - _gnutls_x509_crt_cpy(*crt, - list->node[(*iter)-> - node_index].trusted_cas[(*iter)->ca_index]); + ret = _gnutls_x509_crt_cpy( + *crt, list->node[(*iter)->node_index] + .trusted_cas[(*iter)->ca_index]); if (ret < 0) { gnutls_x509_crt_deinit(*crt); return gnutls_assert_val(ret); @@ -503,10 +487,8 @@ gnutls_x509_trust_list_iter_get_ca(gnutls_x509_trust_list_t list, if (ret < 0) return gnutls_assert_val(ret); - ret = - gnutls_x509_crt_import_pkcs11(*crt, - (*iter)-> - pkcs11_list[(*iter)->pkcs11_index]); + ret = gnutls_x509_crt_import_pkcs11( + *crt, (*iter)->pkcs11_list[(*iter)->pkcs11_index]); if (ret < 0) { gnutls_x509_crt_deinit(*crt); return gnutls_assert_val(ret); @@ -604,31 +586,30 @@ static gnutls_x509_crt_t crt_cpy(gnutls_x509_crt_t src) * * Since: 3.1.10 **/ -int -gnutls_x509_trust_list_remove_cas(gnutls_x509_trust_list_t list, - const gnutls_x509_crt_t * clist, - unsigned clist_size) +int gnutls_x509_trust_list_remove_cas(gnutls_x509_trust_list_t list, + const gnutls_x509_crt_t *clist, + unsigned clist_size) { int r = 0; unsigned j, i; size_t hash; for (i = 0; i < clist_size; i++) { - hash = - hash_pjw_bare(clist[i]->raw_dn.data, clist[i]->raw_dn.size); + hash = hash_pjw_bare(clist[i]->raw_dn.data, + clist[i]->raw_dn.size); hash %= list->size; for (j = 0; j < list->node[hash].trusted_ca_size; j++) { - if (gnutls_x509_crt_equals - (clist[i], list->node[hash].trusted_cas[j]) != 0) { - - gnutls_x509_crt_deinit(list->node[hash]. - trusted_cas[j]); + if (gnutls_x509_crt_equals( + clist[i], + list->node[hash].trusted_cas[j]) != 0) { + gnutls_x509_crt_deinit( + list->node[hash].trusted_cas[j]); list->node[hash].trusted_cas[j] = - list->node[hash].trusted_cas[list-> - node[hash]. - trusted_ca_size - - 1]; + list->node[hash].trusted_cas + [list->node[hash] + .trusted_ca_size - + 1]; list->node[hash].trusted_ca_size--; r++; break; @@ -643,10 +624,9 @@ gnutls_x509_trust_list_remove_cas(gnutls_x509_trust_list_t list, * This will prevent a subordinate CA from being valid, and * ensure that a server certificate will also get rejected. */ - list->distrusted = - _gnutls_reallocarray_fast(list->distrusted, - list->distrusted_size + 1, - sizeof(list->distrusted[0])); + list->distrusted = _gnutls_reallocarray_fast( + list->distrusted, list->distrusted_size + 1, + sizeof(list->distrusted[0])); if (list->distrusted == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); @@ -685,39 +665,40 @@ gnutls_x509_trust_list_remove_cas(gnutls_x509_trust_list_t list, * * Since: 3.0.0 **/ -int -gnutls_x509_trust_list_add_named_crt(gnutls_x509_trust_list_t list, - gnutls_x509_crt_t cert, - const void *name, size_t name_size, - unsigned int flags) +int gnutls_x509_trust_list_add_named_crt(gnutls_x509_trust_list_t list, + gnutls_x509_crt_t cert, + const void *name, size_t name_size, + unsigned int flags) { size_t hash; if (name_size >= MAX_SERVER_NAME_SIZE) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - hash = - hash_pjw_bare(cert->raw_issuer_dn.data, cert->raw_issuer_dn.size); + hash = hash_pjw_bare(cert->raw_issuer_dn.data, + cert->raw_issuer_dn.size); hash %= list->size; if (unlikely(INT_ADD_OVERFLOW(list->node[hash].named_cert_size, 1))) { return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); } - list->node[hash].named_certs = - _gnutls_reallocarray_fast(list->node[hash].named_certs, - list->node[hash].named_cert_size + 1, - sizeof(list->node[hash].named_certs[0])); + list->node[hash].named_certs = _gnutls_reallocarray_fast( + list->node[hash].named_certs, + list->node[hash].named_cert_size + 1, + sizeof(list->node[hash].named_certs[0])); if (list->node[hash].named_certs == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); list->node[hash].named_certs[list->node[hash].named_cert_size].cert = - cert; - memcpy(list->node[hash]. - named_certs[list->node[hash].named_cert_size].name, name, - name_size); - list->node[hash].named_certs[list->node[hash]. - named_cert_size].name_size = name_size; + cert; + memcpy(list->node[hash] + .named_certs[list->node[hash].named_cert_size] + .name, + name, name_size); + list->node[hash] + .named_certs[list->node[hash].named_cert_size] + .name_size = name_size; list->node[hash].named_cert_size++; @@ -751,11 +732,10 @@ gnutls_x509_trust_list_add_named_crt(gnutls_x509_trust_list_t list, * * Since: 3.0 **/ -int -gnutls_x509_trust_list_add_crls(gnutls_x509_trust_list_t list, - const gnutls_x509_crl_t * crl_list, - unsigned crl_size, unsigned int flags, - unsigned int verification_flags) +int gnutls_x509_trust_list_add_crls(gnutls_x509_trust_list_t list, + const gnutls_x509_crl_t *crl_list, + unsigned crl_size, unsigned int flags, + unsigned int verification_flags) { int ret; unsigned x, i, j = 0; @@ -770,28 +750,23 @@ gnutls_x509_trust_list_add_crls(gnutls_x509_trust_list_t list, return 0; for (i = 0; i < crl_size; i++) { - hash = - hash_pjw_bare(crl_list[i]->raw_issuer_dn.data, - crl_list[i]->raw_issuer_dn.size); + hash = hash_pjw_bare(crl_list[i]->raw_issuer_dn.data, + crl_list[i]->raw_issuer_dn.size); hash %= list->size; if (flags & GNUTLS_TL_VERIFY_CRL) { - - ret = - gnutls_x509_crl_verify(crl_list[i], - list->node[hash].trusted_cas, - list->node[hash]. - trusted_ca_size, - verification_flags, &vret); + ret = gnutls_x509_crl_verify( + crl_list[i], list->node[hash].trusted_cas, + list->node[hash].trusted_ca_size, + verification_flags, &vret); if (ret < 0 || vret != 0) { - _gnutls_debug_log - ("CRL verification failed, not adding it\n"); + _gnutls_debug_log( + "CRL verification failed, not adding it\n"); if (flags & GNUTLS_TL_NO_DUPLICATES) gnutls_x509_crl_deinit(crl_list[i]); if (flags & GNUTLS_TL_FAIL_ON_INVALID_CRL) - return - gnutls_assert_val - (GNUTLS_E_CRL_VERIFICATION_ERROR); + return gnutls_assert_val( + GNUTLS_E_CRL_VERIFICATION_ERROR); continue; } } @@ -801,26 +776,29 @@ gnutls_x509_trust_list_add_crls(gnutls_x509_trust_list_t list, if (flags & GNUTLS_TL_NO_DUPLICATES) { for (x = 0; x < list->node[hash].crl_size; x++) { if (crl_list[i]->raw_issuer_dn.size == - list->node[hash].crls[x]->raw_issuer_dn.size - && memcmp(crl_list[i]->raw_issuer_dn.data, - list->node[hash]. - crls[x]->raw_issuer_dn.data, - crl_list[i]-> - raw_issuer_dn.size) == 0) { - if (gnutls_x509_crl_get_this_update - (crl_list[i]) >= - gnutls_x509_crl_get_this_update - (list->node[hash].crls[x])) { - - gnutls_x509_crl_deinit - (list->node[hash].crls[x]); + list->node[hash] + .crls[x] + ->raw_issuer_dn.size && + memcmp(crl_list[i]->raw_issuer_dn.data, + list->node[hash] + .crls[x] + ->raw_issuer_dn.data, + crl_list[i]->raw_issuer_dn.size) == + 0) { + if (gnutls_x509_crl_get_this_update( + crl_list[i]) >= + gnutls_x509_crl_get_this_update( + list->node[hash].crls[x])) { + gnutls_x509_crl_deinit( + list->node[hash] + .crls[x]); list->node[hash].crls[x] = - crl_list[i]; + crl_list[i]; goto next; } else { /* The new is older, discard it */ - gnutls_x509_crl_deinit(crl_list - [i]); + gnutls_x509_crl_deinit( + crl_list[i]); goto next; } } @@ -844,13 +822,13 @@ gnutls_x509_trust_list_add_crls(gnutls_x509_trust_list_t list, list->node[hash].crls[list->node[hash].crl_size] = crl_list[i]; list->node[hash].crl_size++; - next: + next: j++; } return j; - error: +error: ret = i; if (flags & GNUTLS_TL_NO_DUPLICATES) while (i < crl_size) @@ -864,7 +842,7 @@ gnutls_x509_trust_list_add_crls(gnutls_x509_trust_list_t list, * Returns the new size of the list or a negative number on error. */ static int shorten_clist(gnutls_x509_trust_list_t list, - gnutls_x509_crt_t * certificate_list, + gnutls_x509_crt_t *certificate_list, unsigned int clist_size) { unsigned int j, i; @@ -880,9 +858,9 @@ static int shorten_clist(gnutls_x509_trust_list_t list, * failures on some root self signed certificates that use the * MD2 algorithm. */ - if (gnutls_x509_crt_check_issuer - (certificate_list[clist_size - 1], - certificate_list[clist_size - 1]) != 0) { + if (gnutls_x509_crt_check_issuer( + certificate_list[clist_size - 1], + certificate_list[clist_size - 1]) != 0) { clist_size--; } } @@ -893,15 +871,14 @@ static int shorten_clist(gnutls_x509_trust_list_t list, * self-signed E but already removed above), and we trust B, remove * B, C and D. */ for (i = 1; i < clist_size; i++) { - hash = - hash_pjw_bare(certificate_list[i]->raw_issuer_dn.data, - certificate_list[i]->raw_issuer_dn.size); + hash = hash_pjw_bare(certificate_list[i]->raw_issuer_dn.data, + certificate_list[i]->raw_issuer_dn.size); hash %= list->size; for (j = 0; j < list->node[hash].trusted_ca_size; j++) { - if (gnutls_x509_crt_equals - (certificate_list[i], - list->node[hash].trusted_cas[j]) != 0) { + if (gnutls_x509_crt_equals( + certificate_list[i], + list->node[hash].trusted_cas[j]) != 0) { /* cut the list at the point of first the trusted certificate */ clist_size = i + 1; break; @@ -918,11 +895,10 @@ static int shorten_clist(gnutls_x509_trust_list_t list, * * Returns the new size of the list or a negative number on error. */ -static int -retrieve_issuers(gnutls_x509_trust_list_t list, - gnutls_x509_crt_t subject, - gnutls_x509_crt_t * certificate_list, - unsigned int clist_size_max) +static int retrieve_issuers(gnutls_x509_trust_list_t list, + gnutls_x509_crt_t subject, + gnutls_x509_crt_t *certificate_list, + unsigned int clist_size_max) { gnutls_x509_crt_t *issuers; unsigned int issuers_size; @@ -965,7 +941,7 @@ retrieve_issuers(gnutls_x509_trust_list_t list, memcpy(certificate_list, issuers, ret * sizeof(gnutls_x509_crt_t)); - cleanup: +cleanup: for (i = ret; i < issuers_size; i++) { gnutls_x509_crt_deinit(issuers[i]); } @@ -976,26 +952,23 @@ retrieve_issuers(gnutls_x509_trust_list_t list, int _gnutls_trust_list_get_issuer(gnutls_x509_trust_list_t list, gnutls_x509_crt_t cert, - gnutls_x509_crt_t * issuer, - unsigned int flags) + gnutls_x509_crt_t *issuer, unsigned int flags) { int ret; unsigned int i; size_t hash; - hash = - hash_pjw_bare(cert->raw_issuer_dn.data, cert->raw_issuer_dn.size); + hash = hash_pjw_bare(cert->raw_issuer_dn.data, + cert->raw_issuer_dn.size); hash %= list->size; for (i = 0; i < list->node[hash].trusted_ca_size; i++) { - ret = - gnutls_x509_crt_check_issuer(cert, - list->node[hash]. - trusted_cas[i]); + ret = gnutls_x509_crt_check_issuer( + cert, list->node[hash].trusted_cas[i]); if (ret != 0) { if (flags & GNUTLS_TL_GET_COPY) { - *issuer = - crt_cpy(list->node[hash].trusted_cas[i]); + *issuer = crt_cpy( + list->node[hash].trusted_cas[i]); } else { *issuer = list->node[hash].trusted_cas[i]; } @@ -1006,11 +979,11 @@ int _gnutls_trust_list_get_issuer(gnutls_x509_trust_list_t list, return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; } -static -int trust_list_get_issuer_by_dn(gnutls_x509_trust_list_t list, - const gnutls_datum_t * dn, - const gnutls_datum_t * spki, - gnutls_x509_crt_t * issuer, unsigned int flags) +static int trust_list_get_issuer_by_dn(gnutls_x509_trust_list_t list, + const gnutls_datum_t *dn, + const gnutls_datum_t *spki, + gnutls_x509_crt_t *issuer, + unsigned int flags) { int ret; unsigned int i, j; @@ -1023,28 +996,24 @@ int trust_list_get_issuer_by_dn(gnutls_x509_trust_list_t list, hash %= list->size; for (i = 0; i < list->node[hash].trusted_ca_size; i++) { - ret = - _gnutls_x509_compare_raw_dn(dn, - &list-> - node[hash].trusted_cas - [i]->raw_dn); + ret = _gnutls_x509_compare_raw_dn( + dn, &list->node[hash].trusted_cas[i]->raw_dn); if (ret != 0) { if (spki && spki->size > 0) { tmp_size = sizeof(tmp); - ret = - gnutls_x509_crt_get_subject_key_id - (list->node[hash].trusted_cas[i], - tmp, &tmp_size, NULL); + ret = gnutls_x509_crt_get_subject_key_id( + list->node[hash].trusted_cas[i], + tmp, &tmp_size, NULL); if (ret < 0) continue; - if (spki->size != tmp_size - || memcmp(spki->data, tmp, - spki->size) != 0) + if (spki->size != tmp_size || + memcmp(spki->data, tmp, + spki->size) != 0) continue; } - *issuer = - crt_cpy(list->node[hash].trusted_cas[i]); + *issuer = crt_cpy( + list->node[hash].trusted_cas[i]); return 0; } } @@ -1054,15 +1023,14 @@ int trust_list_get_issuer_by_dn(gnutls_x509_trust_list_t list, for (j = 0; j < list->node[i].trusted_ca_size; j++) { tmp_size = sizeof(tmp); - ret = - gnutls_x509_crt_get_subject_key_id - (list->node[i].trusted_cas[j], tmp, - &tmp_size, NULL); + ret = gnutls_x509_crt_get_subject_key_id( + list->node[i].trusted_cas[j], tmp, + &tmp_size, NULL); if (ret < 0) continue; - if (spki->size != tmp_size - || memcmp(spki->data, tmp, spki->size) != 0) + if (spki->size != tmp_size || + memcmp(spki->data, tmp, spki->size) != 0) continue; *issuer = crt_cpy(list->node[i].trusted_cas[j]); @@ -1097,7 +1065,7 @@ int trust_list_get_issuer_by_dn(gnutls_x509_trust_list_t list, **/ int gnutls_x509_trust_list_get_issuer(gnutls_x509_trust_list_t list, gnutls_x509_crt_t cert, - gnutls_x509_crt_t * issuer, + gnutls_x509_crt_t *issuer, unsigned int flags) { int ret; @@ -1112,10 +1080,9 @@ int gnutls_x509_trust_list_get_issuer(gnutls_x509_trust_list_t list, gnutls_x509_crt_t crt; gnutls_datum_t der = { NULL, 0 }; /* use the token for verification */ - ret = - gnutls_pkcs11_get_raw_issuer(list->pkcs11_token, cert, &der, - GNUTLS_X509_FMT_DER, - GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE); + ret = gnutls_pkcs11_get_raw_issuer( + list->pkcs11_token, cert, &der, GNUTLS_X509_FMT_DER, + GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE); if (ret < 0) { gnutls_assert(); return ret; @@ -1170,8 +1137,8 @@ int gnutls_x509_trust_list_get_issuer(gnutls_x509_trust_list_t list, * Since: 3.4.0 **/ int gnutls_x509_trust_list_get_issuer_by_dn(gnutls_x509_trust_list_t list, - const gnutls_datum_t * dn, - gnutls_x509_crt_t * issuer, + const gnutls_datum_t *dn, + gnutls_x509_crt_t *issuer, unsigned int flags) { int ret; @@ -1186,11 +1153,9 @@ int gnutls_x509_trust_list_get_issuer_by_dn(gnutls_x509_trust_list_t list, gnutls_x509_crt_t crt; gnutls_datum_t der = { NULL, 0 }; /* use the token for verification */ - ret = - gnutls_pkcs11_get_raw_issuer_by_dn(list->pkcs11_token, dn, - &der, - GNUTLS_X509_FMT_DER, - GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE); + ret = gnutls_pkcs11_get_raw_issuer_by_dn( + list->pkcs11_token, dn, &der, GNUTLS_X509_FMT_DER, + GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE); if (ret < 0) { gnutls_assert(); return ret; @@ -1232,15 +1197,10 @@ int gnutls_x509_trust_list_get_issuer_by_dn(gnutls_x509_trust_list_t list, * * Since: 3.4.2 **/ -int gnutls_x509_trust_list_get_issuer_by_subject_key_id(gnutls_x509_trust_list_t - list, - const gnutls_datum_t * - dn, - const gnutls_datum_t * - spki, - gnutls_x509_crt_t * - issuer, - unsigned int flags) +int gnutls_x509_trust_list_get_issuer_by_subject_key_id( + gnutls_x509_trust_list_t list, const gnutls_datum_t *dn, + const gnutls_datum_t *spki, gnutls_x509_crt_t *issuer, + unsigned int flags) { int ret; @@ -1254,10 +1214,9 @@ int gnutls_x509_trust_list_get_issuer_by_subject_key_id(gnutls_x509_trust_list_t gnutls_x509_crt_t crt; gnutls_datum_t der = { NULL, 0 }; /* use the token for verification */ - ret = - gnutls_pkcs11_get_raw_issuer_by_subject_key_id - (list->pkcs11_token, dn, spki, &der, GNUTLS_X509_FMT_DER, - GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE); + ret = gnutls_pkcs11_get_raw_issuer_by_subject_key_id( + list->pkcs11_token, dn, spki, &der, GNUTLS_X509_FMT_DER, + GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE); if (ret < 0) { gnutls_assert(); return ret; @@ -1283,11 +1242,10 @@ int gnutls_x509_trust_list_get_issuer_by_subject_key_id(gnutls_x509_trust_list_t return ret; } -static -int check_if_in_blocklist(gnutls_x509_crt_t * cert_list, - unsigned int cert_list_size, - gnutls_x509_crt_t * blocklist, - unsigned int blocklist_size) +static int check_if_in_blocklist(gnutls_x509_crt_t *cert_list, + unsigned int cert_list_size, + gnutls_x509_crt_t *blocklist, + unsigned int blocklist_size) { unsigned i, j; @@ -1296,8 +1254,8 @@ int check_if_in_blocklist(gnutls_x509_crt_t * cert_list, for (i = 0; i < cert_list_size; i++) { for (j = 0; j < blocklist_size; j++) { - if (gnutls_x509_crt_equals(cert_list[i], blocklist[j]) - != 0) { + if (gnutls_x509_crt_equals(cert_list[i], + blocklist[j]) != 0) { return 1; } } @@ -1326,28 +1284,26 @@ int check_if_in_blocklist(gnutls_x509_crt_t * cert_list, * * Since: 3.0 **/ -int -gnutls_x509_trust_list_verify_crt(gnutls_x509_trust_list_t list, - gnutls_x509_crt_t * cert_list, - unsigned int cert_list_size, - unsigned int flags, - unsigned int *voutput, - gnutls_verify_output_function func) +int gnutls_x509_trust_list_verify_crt(gnutls_x509_trust_list_t list, + gnutls_x509_crt_t *cert_list, + unsigned int cert_list_size, + unsigned int flags, unsigned int *voutput, + gnutls_verify_output_function func) { - return gnutls_x509_trust_list_verify_crt2(list, cert_list, - cert_list_size, NULL, 0, - flags, voutput, func); + return gnutls_x509_trust_list_verify_crt2( + list, cert_list, cert_list_size, NULL, 0, flags, voutput, func); } -#define LAST_DN cert_list[cert_list_size-1]->raw_dn -#define LAST_IDN cert_list[cert_list_size-1]->raw_issuer_dn +#define LAST_DN cert_list[cert_list_size - 1]->raw_dn +#define LAST_IDN cert_list[cert_list_size - 1]->raw_issuer_dn /* This macro is introduced to detect a verification output which * indicates an unknown signer, a signer which uses an insecure * algorithm (e.g., sha1), a signer has expired, or something that * indicates a superseded signer */ -#define SIGNER_OLD_OR_UNKNOWN(output) ((output & GNUTLS_CERT_SIGNER_NOT_FOUND) || \ - (output & GNUTLS_CERT_EXPIRED) || \ - (output & GNUTLS_CERT_INSECURE_ALGORITHM)) +#define SIGNER_OLD_OR_UNKNOWN(output) \ + ((output & GNUTLS_CERT_SIGNER_NOT_FOUND) || \ + (output & GNUTLS_CERT_EXPIRED) || \ + (output & GNUTLS_CERT_INSECURE_ALGORITHM)) #define SIGNER_WAS_KNOWN(output) (!(output & GNUTLS_CERT_SIGNER_NOT_FOUND)) /** @@ -1396,15 +1352,11 @@ gnutls_x509_trust_list_verify_crt(gnutls_x509_trust_list_t list, * * Since: 3.3.8 **/ -int -gnutls_x509_trust_list_verify_crt2(gnutls_x509_trust_list_t list, - gnutls_x509_crt_t * cert_list, - unsigned int cert_list_size, - gnutls_typed_vdata_st * data, - unsigned int elements, - unsigned int flags, - unsigned int *voutput, - gnutls_verify_output_function func) +int gnutls_x509_trust_list_verify_crt2( + gnutls_x509_trust_list_t list, gnutls_x509_crt_t *cert_list, + unsigned int cert_list_size, gnutls_typed_vdata_st *data, + unsigned int elements, unsigned int flags, unsigned int *voutput, + gnutls_verify_output_function func) { int ret = 0; unsigned int i; @@ -1430,8 +1382,8 @@ gnutls_x509_trust_list_verify_crt2(gnutls_x509_trust_list_t list, } if (have_set_name != 0) - return - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + return gnutls_assert_val( + GNUTLS_E_INVALID_REQUEST); have_set_name = 1; } else if (data[i].type == GNUTLS_DT_IP_ADDRESS) { if (data[i].size > 0) { @@ -1440,32 +1392,29 @@ gnutls_x509_trust_list_verify_crt2(gnutls_x509_trust_list_t list, } if (have_set_name != 0) - return - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + return gnutls_assert_val( + GNUTLS_E_INVALID_REQUEST); have_set_name = 1; } else if (data[i].type == GNUTLS_DT_RFC822NAME) { email = (void *)data[i].data; if (have_set_name != 0) - return - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + return gnutls_assert_val( + GNUTLS_E_INVALID_REQUEST); have_set_name = 1; } else if (data[i].type == GNUTLS_DT_KEY_PURPOSE_OID) { purpose = (void *)data[i].data; } } - if (hostname) { /* shortcut using the named certs - if any */ + if (hostname) { /* shortcut using the named certs - if any */ unsigned vtmp = 0; if (hostname_size == 0) hostname_size = strlen(hostname); - ret = gnutls_x509_trust_list_verify_named_crt(list, - cert_list[0], - hostname, - hostname_size, - flags, &vtmp, - func); + ret = gnutls_x509_trust_list_verify_named_crt( + list, cert_list[0], hostname, hostname_size, flags, + &vtmp, func); if (ret == 0 && vtmp == 0) { *voutput = vtmp; return 0; @@ -1475,14 +1424,13 @@ gnutls_x509_trust_list_verify_crt2(gnutls_x509_trust_list_t list, memcpy(sorted, cert_list, cert_list_size * sizeof(gnutls_x509_crt_t)); cert_list = sorted; - records = - gl_list_nx_create_empty(GL_LINKEDHASH_LIST, cert_eq, cert_hashcode, - NULL, false); + records = gl_list_nx_create_empty(GL_LINKEDHASH_LIST, cert_eq, + cert_hashcode, NULL, false); if (records == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); for (i = 0; i < cert_list_size && - cert_list_size <= DEFAULT_MAX_VERIFY_DEPTH;) { + cert_list_size <= DEFAULT_MAX_VERIFY_DEPTH;) { unsigned int sorted_size = 1; unsigned int j; gnutls_x509_crt_t issuer; @@ -1520,11 +1468,9 @@ gnutls_x509_trust_list_verify_crt2(gnutls_x509_trust_list_t list, /* If the issuer of the certificate is known, no need * for further processing. */ - if (gnutls_x509_trust_list_get_issuer(list, - cert_list[i - 1], - &issuer, - GNUTLS_TL_GET_COPY) == - 0) { + if (gnutls_x509_trust_list_get_issuer( + list, cert_list[i - 1], &issuer, + GNUTLS_TL_GET_COPY) == 0) { gnutls_x509_crt_deinit(issuer); cert_list_size = i; break; @@ -1538,22 +1484,19 @@ gnutls_x509_trust_list_verify_crt2(gnutls_x509_trust_list_t list, continue; } - ret = retrieve_issuers(list, - cert_list[i - 1], - &retrieved[retrieved_size], - DEFAULT_MAX_VERIFY_DEPTH - - MAX(retrieved_size, cert_list_size)); + ret = retrieve_issuers( + list, cert_list[i - 1], &retrieved[retrieved_size], + DEFAULT_MAX_VERIFY_DEPTH - + MAX(retrieved_size, cert_list_size)); if (ret < 0) { break; } else if (ret > 0) { assert((unsigned int)ret <= DEFAULT_MAX_VERIFY_DEPTH - cert_list_size); - memmove(&cert_list[i + ret], - &cert_list[i], + memmove(&cert_list[i + ret], &cert_list[i], (cert_list_size - i) * - sizeof(gnutls_x509_crt_t)); - memcpy(&cert_list[i], - &retrieved[retrieved_size], + sizeof(gnutls_x509_crt_t)); + memcpy(&cert_list[i], &retrieved[retrieved_size], ret * sizeof(gnutls_x509_crt_t)); retrieved_size += ret; cert_list_size += ret; @@ -1568,13 +1511,12 @@ gnutls_x509_trust_list_verify_crt2(gnutls_x509_trust_list_t list, if (cert_list_size <= 0) return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - hash = - hash_pjw_bare(cert_list[cert_list_size - 1]->raw_issuer_dn.data, - cert_list[cert_list_size - 1]->raw_issuer_dn.size); + hash = hash_pjw_bare(cert_list[cert_list_size - 1]->raw_issuer_dn.data, + cert_list[cert_list_size - 1]->raw_issuer_dn.size); hash %= list->size; - ret = check_if_in_blocklist(cert_list, cert_list_size, - list->distrusted, list->distrusted_size); + ret = check_if_in_blocklist(cert_list, cert_list_size, list->distrusted, + list->distrusted_size); if (ret != 0) { *voutput = 0; *voutput |= GNUTLS_CERT_REVOKED; @@ -1583,33 +1525,30 @@ gnutls_x509_trust_list_verify_crt2(gnutls_x509_trust_list_t list, goto cleanup; } - *voutput = - _gnutls_verify_crt_status(list, cert_list, cert_list_size, - list->node[hash].trusted_cas, - list->node[hash].trusted_ca_size, - flags, purpose, func); + *voutput = _gnutls_verify_crt_status(list, cert_list, cert_list_size, + list->node[hash].trusted_cas, + list->node[hash].trusted_ca_size, + flags, purpose, func); saved_output = *voutput; if (SIGNER_OLD_OR_UNKNOWN(*voutput) && (LAST_DN.size != LAST_IDN.size || memcmp(LAST_DN.data, LAST_IDN.data, LAST_IDN.size) != 0)) { - /* if we couldn't find the issuer, try to see if the last * certificate is in the trusted list and try to verify against * (if it is not self signed) */ - hash = - hash_pjw_bare(cert_list[cert_list_size - 1]->raw_dn.data, - cert_list[cert_list_size - 1]->raw_dn.size); + hash = hash_pjw_bare( + cert_list[cert_list_size - 1]->raw_dn.data, + cert_list[cert_list_size - 1]->raw_dn.size); hash %= list->size; - _gnutls_debug_log - ("issuer in verification was not found or insecure; trying against trust list\n"); + _gnutls_debug_log( + "issuer in verification was not found or insecure; trying against trust list\n"); - *voutput = - _gnutls_verify_crt_status(list, cert_list, cert_list_size, - list->node[hash].trusted_cas, - list->node[hash].trusted_ca_size, - flags, purpose, func); + *voutput = _gnutls_verify_crt_status( + list, cert_list, cert_list_size, + list->node[hash].trusted_cas, + list->node[hash].trusted_ca_size, flags, purpose, func); if (*voutput != 0) { if (SIGNER_WAS_KNOWN(saved_output)) *voutput = saved_output; @@ -1623,10 +1562,9 @@ gnutls_x509_trust_list_verify_crt2(gnutls_x509_trust_list_t list, if (SIGNER_OLD_OR_UNKNOWN(*voutput) && list->pkcs11_token) { /* use the token for verification */ - *voutput = - _gnutls_pkcs11_verify_crt_status(list, list->pkcs11_token, - cert_list, cert_list_size, - purpose, flags, func); + *voutput = _gnutls_pkcs11_verify_crt_status( + list, list->pkcs11_token, cert_list, cert_list_size, + purpose, flags, func); if (*voutput != 0) { if (SIGNER_WAS_KNOWN(saved_output)) *voutput = saved_output; @@ -1640,30 +1578,28 @@ gnutls_x509_trust_list_verify_crt2(gnutls_x509_trust_list_t list, ret = _gnutls_check_key_purpose(cert_list[0], purpose, 0); if (ret != 1) { gnutls_assert(); - *voutput |= - GNUTLS_CERT_PURPOSE_MISMATCH | GNUTLS_CERT_INVALID; + *voutput |= GNUTLS_CERT_PURPOSE_MISMATCH | + GNUTLS_CERT_INVALID; } } if (hostname) { - ret = - gnutls_x509_crt_check_hostname2(cert_list[0], hostname, - flags); + ret = gnutls_x509_crt_check_hostname2(cert_list[0], hostname, + flags); if (ret == 0) { gnutls_assert(); - *voutput |= - GNUTLS_CERT_UNEXPECTED_OWNER | GNUTLS_CERT_INVALID; + *voutput |= GNUTLS_CERT_UNEXPECTED_OWNER | + GNUTLS_CERT_INVALID; } } if (ip.data) { - ret = - gnutls_x509_crt_check_ip(cert_list[0], ip.data, ip.size, - flags); + ret = gnutls_x509_crt_check_ip(cert_list[0], ip.data, ip.size, + flags); if (ret == 0) { gnutls_assert(); - *voutput |= - GNUTLS_CERT_UNEXPECTED_OWNER | GNUTLS_CERT_INVALID; + *voutput |= GNUTLS_CERT_UNEXPECTED_OWNER | + GNUTLS_CERT_INVALID; } } @@ -1671,8 +1607,8 @@ gnutls_x509_trust_list_verify_crt2(gnutls_x509_trust_list_t list, ret = gnutls_x509_crt_check_email(cert_list[0], email, 0); if (ret == 0) { gnutls_assert(); - *voutput |= - GNUTLS_CERT_UNEXPECTED_OWNER | GNUTLS_CERT_INVALID; + *voutput |= GNUTLS_CERT_UNEXPECTED_OWNER | + GNUTLS_CERT_INVALID; } } @@ -1686,12 +1622,11 @@ gnutls_x509_trust_list_verify_crt2(gnutls_x509_trust_list_t list, /* Check revocation of individual certificates. * start with the last one that we already have its hash */ - ret = - _gnutls_x509_crt_check_revocation(cert_list - [cert_list_size - 1], - list->node[hash].crls, - list->node[hash].crl_size, func); - if (ret == 1) { /* revoked */ + ret = _gnutls_x509_crt_check_revocation(cert_list[cert_list_size - 1], + list->node[hash].crls, + list->node[hash].crl_size, + func); + if (ret == 1) { /* revoked */ *voutput |= GNUTLS_CERT_REVOKED; *voutput |= GNUTLS_CERT_INVALID; ret = 0; @@ -1699,18 +1634,16 @@ gnutls_x509_trust_list_verify_crt2(gnutls_x509_trust_list_t list, } for (i = 0; i < cert_list_size - 1; i++) { - hash = - hash_pjw_bare(cert_list[i]->raw_issuer_dn.data, - cert_list[i]->raw_issuer_dn.size); + hash = hash_pjw_bare(cert_list[i]->raw_issuer_dn.data, + cert_list[i]->raw_issuer_dn.size); hash %= list->size; - ret = _gnutls_x509_crt_check_revocation(cert_list[i], - list->node[hash].crls, - list->node[hash]. - crl_size, func); + ret = _gnutls_x509_crt_check_revocation( + cert_list[i], list->node[hash].crls, + list->node[hash].crl_size, func); if (ret < 0) { gnutls_assert(); - } else if (ret == 1) { /* revoked */ + } else if (ret == 1) { /* revoked */ *voutput |= GNUTLS_CERT_REVOKED; *voutput |= GNUTLS_CERT_INVALID; ret = 0; @@ -1718,7 +1651,7 @@ gnutls_x509_trust_list_verify_crt2(gnutls_x509_trust_list_t list, } } - cleanup: +cleanup: for (i = 0; i < retrieved_size; i++) { gnutls_x509_crt_deinit(retrieved[i]); } @@ -1752,25 +1685,23 @@ gnutls_x509_trust_list_verify_crt2(gnutls_x509_trust_list_t list, * * Since: 3.0.0 **/ -int -gnutls_x509_trust_list_verify_named_crt(gnutls_x509_trust_list_t list, - gnutls_x509_crt_t cert, - const void *name, - size_t name_size, - unsigned int flags, - unsigned int *voutput, - gnutls_verify_output_function func) +int gnutls_x509_trust_list_verify_named_crt(gnutls_x509_trust_list_t list, + gnutls_x509_crt_t cert, + const void *name, size_t name_size, + unsigned int flags, + unsigned int *voutput, + gnutls_verify_output_function func) { int ret; unsigned int i; size_t hash; - hash = - hash_pjw_bare(cert->raw_issuer_dn.data, cert->raw_issuer_dn.size); + hash = hash_pjw_bare(cert->raw_issuer_dn.data, + cert->raw_issuer_dn.size); hash %= list->size; - ret = check_if_in_blocklist(&cert, 1, - list->distrusted, list->distrusted_size); + ret = check_if_in_blocklist(&cert, 1, list->distrusted, + list->distrusted_size); if (ret != 0) { *voutput = 0; *voutput |= GNUTLS_CERT_REVOKED; @@ -1781,11 +1712,13 @@ gnutls_x509_trust_list_verify_named_crt(gnutls_x509_trust_list_t list, *voutput = GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_NOT_FOUND; for (i = 0; i < list->node[hash].named_cert_size; i++) { - if (gnutls_x509_crt_equals(cert, list->node[hash].named_certs[i].cert) != 0) { /* check if name matches */ + if (gnutls_x509_crt_equals( + cert, list->node[hash].named_certs[i].cert) != + 0) { /* check if name matches */ if (list->node[hash].named_certs[i].name_size == - name_size - && memcmp(list->node[hash].named_certs[i].name, - name, name_size) == 0) { + name_size && + memcmp(list->node[hash].named_certs[i].name, name, + name_size) == 0) { *voutput = 0; break; } @@ -1798,11 +1731,9 @@ gnutls_x509_trust_list_verify_named_crt(gnutls_x509_trust_list_t list, /* Check revocation of individual certificates. * start with the last one that we already have its hash */ - ret = _gnutls_x509_crt_check_revocation(cert, - list->node[hash].crls, - list->node[hash].crl_size, - func); - if (ret == 1) { /* revoked */ + ret = _gnutls_x509_crt_check_revocation( + cert, list->node[hash].crls, list->node[hash].crl_size, func); + if (ret == 1) { /* revoked */ *voutput |= GNUTLS_CERT_REVOKED; *voutput |= GNUTLS_CERT_INVALID; return 0; @@ -1812,8 +1743,8 @@ gnutls_x509_trust_list_verify_named_crt(gnutls_x509_trust_list_t list, } /* return 1 if @cert is in @list, 0 if not */ -int -_gnutls_trustlist_inlist(gnutls_x509_trust_list_t list, gnutls_x509_crt_t cert) +int _gnutls_trustlist_inlist(gnutls_x509_trust_list_t list, + gnutls_x509_crt_t cert) { int ret; unsigned int i; @@ -1823,9 +1754,8 @@ _gnutls_trustlist_inlist(gnutls_x509_trust_list_t list, gnutls_x509_crt_t cert) hash %= list->size; for (i = 0; i < list->node[hash].trusted_ca_size; i++) { - ret = - gnutls_x509_crt_equals(cert, - list->node[hash].trusted_cas[i]); + ret = gnutls_x509_crt_equals(cert, + list->node[hash].trusted_cas[i]); if (ret != 0) return 1; } diff --git a/lib/x509/verify-high.h b/lib/x509/verify-high.h index e2bec75261..6c5ed15729 100644 --- a/lib/x509/verify-high.h +++ b/lib/x509/verify-high.h @@ -21,7 +21,7 @@ */ #ifndef GNUTLS_LIB_X509_VERIFY_HIGH_H -# define GNUTLS_LIB_X509_VERIFY_HIGH_H +#define GNUTLS_LIB_X509_VERIFY_HIGH_H struct gnutls_x509_trust_list_st { unsigned int size; @@ -52,4 +52,4 @@ struct gnutls_x509_trust_list_st { int _gnutls_trustlist_inlist(gnutls_x509_trust_list_t list, gnutls_x509_crt_t cert); -#endif /* GNUTLS_LIB_X509_VERIFY_HIGH_H */ +#endif /* GNUTLS_LIB_X509_VERIFY_HIGH_H */ diff --git a/lib/x509/verify-high2.c b/lib/x509/verify-high2.c index 7391fa273c..ada4860450 100644 --- a/lib/x509/verify-high2.c +++ b/lib/x509/verify-high2.c @@ -40,13 +40,13 @@ #include #if !defined(_DIRENT_HAVE_D_TYPE) && !defined(__native_client__) -# ifdef DT_UNKNOWN -# define _DIRENT_HAVE_D_TYPE -# endif +#ifdef DT_UNKNOWN +#define _DIRENT_HAVE_D_TYPE +#endif #endif #ifdef _WIN32 -# include +#include #endif /* Convenience functions for verify-high functionality @@ -71,13 +71,12 @@ * * Since: 3.1 **/ -int -gnutls_x509_trust_list_add_trust_mem(gnutls_x509_trust_list_t list, - const gnutls_datum_t * cas, - const gnutls_datum_t * crls, - gnutls_x509_crt_fmt_t type, - unsigned int tl_flags, - unsigned int tl_vflags) +int gnutls_x509_trust_list_add_trust_mem(gnutls_x509_trust_list_t list, + const gnutls_datum_t *cas, + const gnutls_datum_t *crls, + gnutls_x509_crt_fmt_t type, + unsigned int tl_flags, + unsigned int tl_vflags) { int ret; gnutls_x509_crt_t *x509_ca_list = NULL; @@ -89,17 +88,14 @@ gnutls_x509_trust_list_add_trust_mem(gnutls_x509_trust_list_t list, * that unaccounted certificates/CRLs are deinitialized. */ if (cas != NULL && cas->data != NULL) { - ret = - gnutls_x509_crt_list_import2(&x509_ca_list, &x509_ncas, - cas, type, 0); + ret = gnutls_x509_crt_list_import2(&x509_ca_list, &x509_ncas, + cas, type, 0); if (ret < 0) return gnutls_assert_val(ret); - ret = - gnutls_x509_trust_list_add_cas(list, x509_ca_list, - x509_ncas, - tl_flags | - GNUTLS_TL_NO_DUPLICATES); + ret = gnutls_x509_trust_list_add_cas( + list, x509_ca_list, x509_ncas, + tl_flags | GNUTLS_TL_NO_DUPLICATES); gnutls_free(x509_ca_list); if (ret < 0) @@ -109,18 +105,14 @@ gnutls_x509_trust_list_add_trust_mem(gnutls_x509_trust_list_t list, } if (crls != NULL && crls->data != NULL) { - ret = - gnutls_x509_crl_list_import2(&x509_crl_list, - &x509_ncrls, crls, type, 0); + ret = gnutls_x509_crl_list_import2(&x509_crl_list, &x509_ncrls, + crls, type, 0); if (ret < 0) return gnutls_assert_val(ret); - ret = - gnutls_x509_trust_list_add_crls(list, x509_crl_list, - x509_ncrls, - tl_flags | - GNUTLS_TL_NO_DUPLICATES, - tl_vflags); + ret = gnutls_x509_trust_list_add_crls( + list, x509_crl_list, x509_ncrls, + tl_flags | GNUTLS_TL_NO_DUPLICATES, tl_vflags); gnutls_free(x509_crl_list); if (ret < 0) @@ -147,10 +139,9 @@ gnutls_x509_trust_list_add_trust_mem(gnutls_x509_trust_list_t list, * * Since: 3.1.10 **/ -int -gnutls_x509_trust_list_remove_trust_mem(gnutls_x509_trust_list_t list, - const gnutls_datum_t * cas, - gnutls_x509_crt_fmt_t type) +int gnutls_x509_trust_list_remove_trust_mem(gnutls_x509_trust_list_t list, + const gnutls_datum_t *cas, + gnutls_x509_crt_fmt_t type) { int ret; gnutls_x509_crt_t *x509_ca_list = NULL; @@ -158,15 +149,13 @@ gnutls_x509_trust_list_remove_trust_mem(gnutls_x509_trust_list_t list, unsigned int r = 0, i; if (cas != NULL && cas->data != NULL) { - ret = - gnutls_x509_crt_list_import2(&x509_ca_list, &x509_ncas, - cas, type, 0); + ret = gnutls_x509_crt_list_import2(&x509_ca_list, &x509_ncas, + cas, type, 0); if (ret < 0) return gnutls_assert_val(ret); - ret = - gnutls_x509_trust_list_remove_cas(list, x509_ca_list, - x509_ncas); + ret = gnutls_x509_trust_list_remove_cas(list, x509_ca_list, + x509_ncas); for (i = 0; i < x509_ncas; i++) gnutls_x509_crt_deinit(x509_ca_list[i]); @@ -182,8 +171,7 @@ gnutls_x509_trust_list_remove_trust_mem(gnutls_x509_trust_list_t list, } #ifdef ENABLE_PKCS11 -static -int remove_pkcs11_url(gnutls_x509_trust_list_t list, const char *ca_file) +static int remove_pkcs11_url(gnutls_x509_trust_list_t list, const char *ca_file) { if (strcmp(ca_file, list->pkcs11_token) == 0) { gnutls_free(list->pkcs11_token); @@ -195,9 +183,8 @@ int remove_pkcs11_url(gnutls_x509_trust_list_t list, const char *ca_file) * CA certificates are imported directly, rather than using it as a * trusted PKCS#11 token. */ -static -int add_trust_list_pkcs11_object_url(gnutls_x509_trust_list_t list, - const char *url, unsigned flags) +static int add_trust_list_pkcs11_object_url(gnutls_x509_trust_list_t list, + const char *url, unsigned flags) { gnutls_x509_crt_t *xcrt_list = NULL; gnutls_pkcs11_obj_t *pcrt_list = NULL; @@ -207,12 +194,11 @@ int add_trust_list_pkcs11_object_url(gnutls_x509_trust_list_t list, /* here we don't use the flag GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE, * as we want to explicitly load from any module available in the system. */ - ret = - gnutls_pkcs11_obj_list_import_url2(&pcrt_list, &pcrt_list_size, - url, - GNUTLS_PKCS11_OBJ_FLAG_CRT | - GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED, - 0); + ret = gnutls_pkcs11_obj_list_import_url2( + &pcrt_list, &pcrt_list_size, url, + GNUTLS_PKCS11_OBJ_FLAG_CRT | + GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED, + 0); if (ret < 0) return gnutls_assert_val(ret); @@ -228,19 +214,17 @@ int add_trust_list_pkcs11_object_url(gnutls_x509_trust_list_t list, goto cleanup; } - ret = - gnutls_x509_crt_list_import_pkcs11(xcrt_list, pcrt_list_size, - pcrt_list, 0); + ret = gnutls_x509_crt_list_import_pkcs11(xcrt_list, pcrt_list_size, + pcrt_list, 0); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - gnutls_x509_trust_list_add_cas(list, xcrt_list, pcrt_list_size, - flags); + ret = gnutls_x509_trust_list_add_cas(list, xcrt_list, pcrt_list_size, + flags); - cleanup: +cleanup: for (i = 0; i < pcrt_list_size; i++) gnutls_pkcs11_obj_deinit(pcrt_list[i]); gnutls_free(pcrt_list); @@ -249,20 +233,19 @@ int add_trust_list_pkcs11_object_url(gnutls_x509_trust_list_t list, return ret; } -static -int remove_pkcs11_object_url(gnutls_x509_trust_list_t list, const char *url) +static int remove_pkcs11_object_url(gnutls_x509_trust_list_t list, + const char *url) { gnutls_x509_crt_t *xcrt_list = NULL; gnutls_pkcs11_obj_t *pcrt_list = NULL; unsigned int pcrt_list_size = 0, i; int ret; - ret = - gnutls_pkcs11_obj_list_import_url2(&pcrt_list, &pcrt_list_size, - url, - GNUTLS_PKCS11_OBJ_FLAG_CRT | - GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED, - 0); + ret = gnutls_pkcs11_obj_list_import_url2( + &pcrt_list, &pcrt_list_size, url, + GNUTLS_PKCS11_OBJ_FLAG_CRT | + GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED, + 0); if (ret < 0) return gnutls_assert_val(ret); @@ -278,18 +261,17 @@ int remove_pkcs11_object_url(gnutls_x509_trust_list_t list, const char *url) goto cleanup; } - ret = - gnutls_x509_crt_list_import_pkcs11(xcrt_list, pcrt_list_size, - pcrt_list, 0); + ret = gnutls_x509_crt_list_import_pkcs11(xcrt_list, pcrt_list_size, + pcrt_list, 0); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - gnutls_x509_trust_list_remove_cas(list, xcrt_list, pcrt_list_size); + ret = gnutls_x509_trust_list_remove_cas(list, xcrt_list, + pcrt_list_size); - cleanup: +cleanup: for (i = 0; i < pcrt_list_size; i++) { gnutls_pkcs11_obj_deinit(pcrt_list[i]); if (xcrt_list) @@ -322,13 +304,12 @@ int remove_pkcs11_object_url(gnutls_x509_trust_list_t list, const char *url) * * Since: 3.1 **/ -int -gnutls_x509_trust_list_add_trust_file(gnutls_x509_trust_list_t list, - const char *ca_file, - const char *crl_file, - gnutls_x509_crt_fmt_t type, - unsigned int tl_flags, - unsigned int tl_vflags) +int gnutls_x509_trust_list_add_trust_file(gnutls_x509_trust_list_t list, + const char *ca_file, + const char *crl_file, + gnutls_x509_crt_fmt_t type, + unsigned int tl_flags, + unsigned int tl_vflags) { gnutls_datum_t cas = { NULL, 0 }; gnutls_datum_t crls = { NULL, 0 }; @@ -344,31 +325,24 @@ gnutls_x509_trust_list_add_trust_file(gnutls_x509_trust_list_t list, * otherwise import the individual certificates. */ if (is_pkcs11_url_object(ca_file) != 0) { - return add_trust_list_pkcs11_object_url(list, - ca_file, - tl_flags); - } else { /* trusted token */ + return add_trust_list_pkcs11_object_url( + list, ca_file, tl_flags); + } else { /* trusted token */ if (list->pkcs11_token != NULL) - return - gnutls_assert_val - (GNUTLS_E_INVALID_REQUEST); + return gnutls_assert_val( + GNUTLS_E_INVALID_REQUEST); list->pkcs11_token = gnutls_strdup(ca_file); /* enumerate the certificates */ - ret = - gnutls_pkcs11_obj_list_import_url(NULL, - &pcrt_list_size, - ca_file, - (GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE - | - GNUTLS_PKCS11_OBJ_FLAG_CRT - | - GNUTLS_PKCS11_OBJ_FLAG_MARK_CA - | - GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED), - 0); - if (ret < 0 - && ret != GNUTLS_E_SHORT_MEMORY_BUFFER) + ret = gnutls_pkcs11_obj_list_import_url( + NULL, &pcrt_list_size, ca_file, + (GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE | + GNUTLS_PKCS11_OBJ_FLAG_CRT | + GNUTLS_PKCS11_OBJ_FLAG_MARK_CA | + GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED), + 0); + if (ret < 0 && + ret != GNUTLS_E_SHORT_MEMORY_BUFFER) return gnutls_assert_val(ret); return pcrt_list_size; @@ -394,20 +368,17 @@ gnutls_x509_trust_list_add_trust_file(gnutls_x509_trust_list_t list, crls.size = size; } - ret = - gnutls_x509_trust_list_add_trust_mem(list, &cas, &crls, type, - tl_flags, tl_vflags); + ret = gnutls_x509_trust_list_add_trust_mem(list, &cas, &crls, type, + tl_flags, tl_vflags); free(crls.data); free(cas.data); return ret; } -static -int load_dir_certs(const char *dirname, - gnutls_x509_trust_list_t list, - unsigned int tl_flags, unsigned int tl_vflags, - unsigned type, unsigned crl) +static int load_dir_certs(const char *dirname, gnutls_x509_trust_list_t list, + unsigned int tl_flags, unsigned int tl_vflags, + unsigned type, unsigned crl) { int ret; int r = 0; @@ -428,7 +399,7 @@ int load_dir_certs(const char *dirname, base_len = pathbuf.len; while ((d = readdir(dirp)) != NULL) { -# ifdef _DIRENT_HAVE_D_TYPE +#ifdef _DIRENT_HAVE_D_TYPE switch (d->d_type) { case DT_REG: case DT_LNK: @@ -437,19 +408,19 @@ int load_dir_certs(const char *dirname, default: continue; } -# endif +#endif ret = _gnutls_pathbuf_append(&pathbuf, d->d_name); if (ret < 0) { continue; } if (crl != 0) { - ret = gnutls_x509_trust_list_add_trust_file - (list, NULL, pathbuf.ptr, type, tl_flags, - tl_vflags); + ret = gnutls_x509_trust_list_add_trust_file( + list, NULL, pathbuf.ptr, type, tl_flags, + tl_vflags); } else { - ret = gnutls_x509_trust_list_add_trust_file - (list, pathbuf.ptr, NULL, type, tl_flags, - tl_vflags); + ret = gnutls_x509_trust_list_add_trust_file( + list, pathbuf.ptr, NULL, type, tl_flags, + tl_vflags); } if (ret >= 0) { r += ret; @@ -459,25 +430,25 @@ int load_dir_certs(const char *dirname, _gnutls_pathbuf_deinit(&pathbuf); closedir(dirp); } -#else /* _WIN32 */ +#else /* _WIN32 */ _TDIR *dirp; struct _tdirent *d; gnutls_datum_t utf16 = { NULL, 0 }; -# undef UCS2_ENDIAN -# ifdef WORDS_BIGENDIAN -# define UCS2_ENDIAN 1 -# else -# define UCS2_ENDIAN 0 -# endif +#undef UCS2_ENDIAN +#ifdef WORDS_BIGENDIAN +#define UCS2_ENDIAN 1 +#else +#define UCS2_ENDIAN 0 +#endif - ret = - _gnutls_utf8_to_ucs2(dirname, strlen(dirname), &utf16, UCS2_ENDIAN); + ret = _gnutls_utf8_to_ucs2(dirname, strlen(dirname), &utf16, + UCS2_ENDIAN); if (ret < 0) { return gnutls_assert_val(ret); } - dirp = _topendir((_TCHAR *) utf16.data); + dirp = _topendir((_TCHAR *)utf16.data); gnutls_free(utf16.data); if (dirp != NULL) { size_t base_len; @@ -490,7 +461,7 @@ int load_dir_certs(const char *dirname, base_len = pathbuf.len; while ((d = _treaddir(dirp)) != NULL) { gnutls_datum_t utf8 = { NULL, 0 }; -# ifdef _DIRENT_HAVE_D_TYPE +#ifdef _DIRENT_HAVE_D_TYPE switch (d->d_type) { case DT_REG: case DT_LNK: @@ -499,11 +470,10 @@ int load_dir_certs(const char *dirname, default: continue; } -# endif - ret = _gnutls_ucs2_to_utf8(d->d_name, - d->d_namlen * - sizeof(d->d_name[0]), &utf8, - UCS2_ENDIAN); +#endif + ret = _gnutls_ucs2_to_utf8( + d->d_name, d->d_namlen * sizeof(d->d_name[0]), + &utf8, UCS2_ENDIAN); if (ret < 0) { continue; } @@ -514,13 +484,13 @@ int load_dir_certs(const char *dirname, } if (crl != 0) { - ret = gnutls_x509_trust_list_add_trust_file - (list, NULL, pathbuf.ptr, type, tl_flags, - tl_vflags); + ret = gnutls_x509_trust_list_add_trust_file( + list, NULL, pathbuf.ptr, type, tl_flags, + tl_vflags); } else { - ret = gnutls_x509_trust_list_add_trust_file - (list, pathbuf.ptr, NULL, type, tl_flags, - tl_vflags); + ret = gnutls_x509_trust_list_add_trust_file( + list, pathbuf.ptr, NULL, type, tl_flags, + tl_vflags); } if (ret >= 0) r += ret; @@ -529,8 +499,8 @@ int load_dir_certs(const char *dirname, _gnutls_pathbuf_deinit(&pathbuf); _tclosedir(dirp); } -# undef UCS2_ENDIAN -#endif /* _WIN32 */ +#undef UCS2_ENDIAN +#endif /* _WIN32 */ return r; } @@ -551,13 +521,12 @@ int load_dir_certs(const char *dirname, * * Since: 3.3.6 **/ -int -gnutls_x509_trust_list_add_trust_dir(gnutls_x509_trust_list_t list, - const char *ca_dir, - const char *crl_dir, - gnutls_x509_crt_fmt_t type, - unsigned int tl_flags, - unsigned int tl_vflags) +int gnutls_x509_trust_list_add_trust_dir(gnutls_x509_trust_list_t list, + const char *ca_dir, + const char *crl_dir, + gnutls_x509_crt_fmt_t type, + unsigned int tl_flags, + unsigned int tl_vflags) { int ret = 0; @@ -597,10 +566,9 @@ gnutls_x509_trust_list_add_trust_dir(gnutls_x509_trust_list_t list, * * Since: 3.1.10 **/ -int -gnutls_x509_trust_list_remove_trust_file(gnutls_x509_trust_list_t list, - const char *ca_file, - gnutls_x509_crt_fmt_t type) +int gnutls_x509_trust_list_remove_trust_file(gnutls_x509_trust_list_t list, + const char *ca_file, + gnutls_x509_crt_fmt_t type) { gnutls_datum_t cas = { NULL, 0 }; size_t size; @@ -610,7 +578,7 @@ gnutls_x509_trust_list_remove_trust_file(gnutls_x509_trust_list_t list, if (c_strncasecmp(ca_file, PKCS11_URL, PKCS11_URL_SIZE) == 0) { if (is_pkcs11_url_object(ca_file) != 0) { return remove_pkcs11_object_url(list, ca_file); - } else { /* token */ + } else { /* token */ return remove_pkcs11_url(list, ca_file); } } else diff --git a/lib/x509/verify.c b/lib/x509/verify.c index 52ccedbe31..8f28ee9157 100644 --- a/lib/x509/verify.c +++ b/lib/x509/verify.c @@ -30,7 +30,7 @@ #include "errors.h" #include #include -#include /* MAX */ +#include /* MAX */ #include #include #include @@ -45,9 +45,8 @@ /* Checks if two certs have the same name and the same key. Return 1 on match. * If @is_ca is zero then this function is identical to gnutls_x509_crt_equals() */ -unsigned -_gnutls_check_if_same_key(gnutls_x509_crt_t cert1, - gnutls_x509_crt_t cert2, unsigned is_ca) +unsigned _gnutls_check_if_same_key(gnutls_x509_crt_t cert1, + gnutls_x509_crt_t cert2, unsigned is_ca) { int ret; unsigned result; @@ -59,12 +58,10 @@ _gnutls_check_if_same_key(gnutls_x509_crt_t cert1, if (ret == 0) return 0; - if (cert1->raw_spki.size > 0 - && (cert1->raw_spki.size == cert2->raw_spki.size) - && - (memcmp - (cert1->raw_spki.data, cert2->raw_spki.data, - cert1->raw_spki.size) == 0)) + if (cert1->raw_spki.size > 0 && + (cert1->raw_spki.size == cert2->raw_spki.size) && + (memcmp(cert1->raw_spki.data, cert2->raw_spki.data, + cert1->raw_spki.size) == 0)) result = 1; else result = 0; @@ -72,8 +69,8 @@ _gnutls_check_if_same_key(gnutls_x509_crt_t cert1, return result; } -unsigned -_gnutls_check_if_same_key2(gnutls_x509_crt_t cert1, gnutls_datum_t * cert2bin) +unsigned _gnutls_check_if_same_key2(gnutls_x509_crt_t cert1, + gnutls_datum_t *cert2bin) { int ret; gnutls_x509_crt_t cert2; @@ -111,9 +108,8 @@ static unsigned check_for_unknown_exts(gnutls_x509_crt_t cert) oid[0] = 0; critical = 0; - ret = - gnutls_x509_crt_get_extension_info(cert, i, oid, &oid_size, - &critical); + ret = gnutls_x509_crt_get_extension_info(cert, i, oid, + &oid_size, &critical); if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { return 0; } else if (ret < 0) { @@ -128,8 +124,8 @@ static unsigned check_for_unknown_exts(gnutls_x509_crt_t cert) if (is_ext_oid_supported(oid, oid_size) == NULL) { gnutls_assert(); - _gnutls_debug_log - ("Unsupported critical extension: %s\n", oid); + _gnutls_debug_log( + "Unsupported critical extension: %s\n", oid); return 1; } } @@ -144,9 +140,8 @@ static unsigned check_for_unknown_exts(gnutls_x509_crt_t cert) * Returns true or false, if the issuer is a CA, * or not. */ -static unsigned -check_if_ca(gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer, - unsigned int *max_path, unsigned int flags) +static unsigned check_if_ca(gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer, + unsigned int *max_path, unsigned int flags) { gnutls_datum_t cert_signed_data = { NULL, 0 }; gnutls_datum_t issuer_signed_data = { NULL, 0 }; @@ -161,33 +156,30 @@ check_if_ca(gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer, * certificates to be able to verify themselves. */ - ret = - _gnutls_x509_get_signed_data(issuer->cert, &issuer->der, - "tbsCertificate", &issuer_signed_data); + ret = _gnutls_x509_get_signed_data(issuer->cert, &issuer->der, + "tbsCertificate", + &issuer_signed_data); if (ret < 0) { gnutls_assert(); goto fail; } - ret = - _gnutls_x509_get_signed_data(cert->cert, &cert->der, - "tbsCertificate", &cert_signed_data); + ret = _gnutls_x509_get_signed_data(cert->cert, &cert->der, + "tbsCertificate", &cert_signed_data); if (ret < 0) { gnutls_assert(); goto fail; } - ret = - _gnutls_x509_get_signature(issuer->cert, "signature", - &issuer_signature); + ret = _gnutls_x509_get_signature(issuer->cert, "signature", + &issuer_signature); if (ret < 0) { gnutls_assert(); goto fail; } - ret = - _gnutls_x509_get_signature(cert->cert, "signature", - &cert_signature); + ret = _gnutls_x509_get_signature(cert->cert, "signature", + &cert_signature); if (ret < 0) { gnutls_assert(); goto fail; @@ -198,23 +190,19 @@ check_if_ca(gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer, */ if (!(flags & GNUTLS_VERIFY_DO_NOT_ALLOW_SAME)) if (cert_signed_data.size == issuer_signed_data.size) { - if ((memcmp - (cert_signed_data.data, - issuer_signed_data.data, - cert_signed_data.size) == 0) - && (cert_signature.size == issuer_signature.size) - && - (memcmp - (cert_signature.data, issuer_signature.data, - cert_signature.size) == 0)) { + if ((memcmp(cert_signed_data.data, + issuer_signed_data.data, + cert_signed_data.size) == 0) && + (cert_signature.size == issuer_signature.size) && + (memcmp(cert_signature.data, issuer_signature.data, + cert_signature.size) == 0)) { result = 1; goto cleanup; } } - ret = - gnutls_x509_crt_get_basic_constraints(issuer, NULL, &ca_status, - &pathlen); + ret = gnutls_x509_crt_get_basic_constraints(issuer, NULL, &ca_status, + &pathlen); if (ret < 0) { ca_status = 0; pathlen = -1; @@ -242,10 +230,10 @@ check_if_ca(gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer, gnutls_assert(); } - fail: +fail: result = 0; - cleanup: +cleanup: _gnutls_free_datum(&cert_signed_data); _gnutls_free_datum(&issuer_signed_data); _gnutls_free_datum(&cert_signature); @@ -268,8 +256,8 @@ static unsigned is_issuer(gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer) int ret; unsigned result; - if (_gnutls_x509_compare_raw_dn - (&cert->raw_issuer_dn, &issuer->raw_dn) != 0) + if (_gnutls_x509_compare_raw_dn(&cert->raw_issuer_dn, + &issuer->raw_dn) != 0) result = 1; else result = 0; @@ -279,9 +267,8 @@ static unsigned is_issuer(gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer) * of the issuer */ id1_size = sizeof(id1); - ret = - gnutls_x509_crt_get_authority_key_id(cert, id1, - &id1_size, NULL); + ret = gnutls_x509_crt_get_authority_key_id(cert, id1, &id1_size, + NULL); if (ret < 0) { /* If there is no authority key identifier in the * certificate, assume they match */ @@ -290,9 +277,8 @@ static unsigned is_issuer(gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer) } id2_size = sizeof(id2); - ret = - gnutls_x509_crt_get_subject_key_id(issuer, id2, - &id2_size, NULL); + ret = gnutls_x509_crt_get_subject_key_id(issuer, id2, &id2_size, + NULL); if (ret < 0) { /* If there is no subject key identifier in the * issuer certificate, assume they match */ @@ -307,7 +293,7 @@ static unsigned is_issuer(gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer) result = 0; } - cleanup: +cleanup: return result; } @@ -316,8 +302,8 @@ static unsigned is_issuer(gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer) */ static unsigned is_crl_issuer(gnutls_x509_crl_t crl, gnutls_x509_crt_t issuer) { - if (_gnutls_x509_compare_raw_dn - (&crl->raw_issuer_dn, &issuer->raw_dn) != 0) + if (_gnutls_x509_compare_raw_dn(&crl->raw_issuer_dn, &issuer->raw_dn) != + 0) return 1; else return 0; @@ -339,8 +325,8 @@ unsigned _gnutls_is_same_dn(gnutls_x509_crt_t cert1, gnutls_x509_crt_t cert2) * are present, returns one that is activated and not expired. */ static inline gnutls_x509_crt_t -find_issuer(gnutls_x509_crt_t cert, - const gnutls_x509_crt_t * trusted_cas, int tcas_size) +find_issuer(gnutls_x509_crt_t cert, const gnutls_x509_crt_t *trusted_cas, + int tcas_size) { int i; gnutls_x509_crt_t issuer = NULL; @@ -354,12 +340,10 @@ find_issuer(gnutls_x509_crt_t cert, } else { time_t now = gnutls_time(0); - if (now < - gnutls_x509_crt_get_expiration_time - (trusted_cas[i]) - && now >= - gnutls_x509_crt_get_activation_time - (trusted_cas[i])) { + if (now < gnutls_x509_crt_get_expiration_time( + trusted_cas[i]) && + now >= gnutls_x509_crt_get_activation_time( + trusted_cas[i])) { issuer = trusted_cas[i]; } } @@ -375,14 +359,14 @@ static unsigned int check_time_status(gnutls_x509_crt_t crt, time_t now) time_t t; t = gnutls_x509_crt_get_activation_time(crt); - if (t == (time_t) - 1 || now < t) { + if (t == (time_t)-1 || now < t) { status |= GNUTLS_CERT_NOT_ACTIVATED; status |= GNUTLS_CERT_INVALID; return status; } t = gnutls_x509_crt_get_expiration_time(crt); - if (t == (time_t) - 1 || now > t) { + if (t == (time_t)-1 || now > t) { status |= GNUTLS_CERT_EXPIRED; status |= GNUTLS_CERT_INVALID; return status; @@ -391,7 +375,7 @@ static unsigned int check_time_status(gnutls_x509_crt_t crt, time_t now) return 0; } -unsigned _gnutls_is_broken_sig_allowed(const gnutls_sign_entry_st * se, +unsigned _gnutls_is_broken_sig_allowed(const gnutls_sign_entry_st *se, unsigned int flags) { gnutls_digest_algorithm_t hash; @@ -401,55 +385,68 @@ unsigned _gnutls_is_broken_sig_allowed(const gnutls_sign_entry_st * se, return 1; /* the first two are for backwards compatibility */ - if ((se->id == GNUTLS_SIGN_RSA_MD2) - && (flags & GNUTLS_VERIFY_ALLOW_SIGN_RSA_MD2)) + if ((se->id == GNUTLS_SIGN_RSA_MD2) && + (flags & GNUTLS_VERIFY_ALLOW_SIGN_RSA_MD2)) return 1; - if ((se->id == GNUTLS_SIGN_RSA_MD5) - && (flags & GNUTLS_VERIFY_ALLOW_SIGN_RSA_MD5)) + if ((se->id == GNUTLS_SIGN_RSA_MD5) && + (flags & GNUTLS_VERIFY_ALLOW_SIGN_RSA_MD5)) return 1; hash = se->hash; - if (hash == GNUTLS_DIG_SHA1 - && (flags & GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1)) + if (hash == GNUTLS_DIG_SHA1 && + (flags & GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1)) return 1; return 0; } -#define CASE_SEC_PARAM(profile, level) \ - case profile: \ - sym_bits = gnutls_sec_param_to_symmetric_bits(level); \ - se = _gnutls_sign_to_entry(sigalg); \ - if (unlikely(se == NULL)) { \ - _gnutls_cert_log("cert", crt); \ - _gnutls_debug_log(#level": certificate's signature algorithm is unknown\n"); \ - return gnutls_assert_val(0); \ - } \ - if (unlikely(se->hash == GNUTLS_DIG_UNKNOWN)) { \ - _gnutls_cert_log("cert", crt); \ - _gnutls_debug_log(#level": certificate's signature hash is unknown\n"); \ - return gnutls_assert_val(0); \ - } \ - if (!trusted && \ - _gnutls_sign_get_hash_strength(sigalg) < sym_bits) { \ - _gnutls_cert_log("cert", crt); \ - _gnutls_debug_log(#level": certificate's signature hash strength is unacceptable (is %u bits, needed %u)\n", _gnutls_sign_get_hash_strength(sigalg), sym_bits); \ - return gnutls_assert_val(0); \ - } \ - sp = gnutls_pk_bits_to_sec_param(pkalg, bits); \ - if (sp < level) { \ - _gnutls_cert_log("cert", crt); \ - _gnutls_debug_log(#level": certificate's security level is unacceptable\n"); \ - return gnutls_assert_val(0); \ - } \ - if (issuer) { \ - sp = gnutls_pk_bits_to_sec_param(issuer_pkalg, issuer_bits); \ - if (sp < level) { \ - _gnutls_cert_log("issuer", issuer); \ - _gnutls_debug_log(#level": certificate's issuer security level is unacceptable\n"); \ - return gnutls_assert_val(0); \ - } \ - } \ +#define CASE_SEC_PARAM(profile, level) \ + case profile: \ + sym_bits = gnutls_sec_param_to_symmetric_bits(level); \ + se = _gnutls_sign_to_entry(sigalg); \ + if (unlikely(se == NULL)) { \ + _gnutls_cert_log("cert", crt); \ + _gnutls_debug_log( \ + #level \ + ": certificate's signature algorithm is unknown\n"); \ + return gnutls_assert_val(0); \ + } \ + if (unlikely(se->hash == GNUTLS_DIG_UNKNOWN)) { \ + _gnutls_cert_log("cert", crt); \ + _gnutls_debug_log( \ + #level \ + ": certificate's signature hash is unknown\n"); \ + return gnutls_assert_val(0); \ + } \ + if (!trusted && \ + _gnutls_sign_get_hash_strength(sigalg) < sym_bits) { \ + _gnutls_cert_log("cert", crt); \ + _gnutls_debug_log( \ + #level \ + ": certificate's signature hash strength is unacceptable (is %u bits, needed %u)\n", \ + _gnutls_sign_get_hash_strength(sigalg), \ + sym_bits); \ + return gnutls_assert_val(0); \ + } \ + sp = gnutls_pk_bits_to_sec_param(pkalg, bits); \ + if (sp < level) { \ + _gnutls_cert_log("cert", crt); \ + _gnutls_debug_log( \ + #level \ + ": certificate's security level is unacceptable\n"); \ + return gnutls_assert_val(0); \ + } \ + if (issuer) { \ + sp = gnutls_pk_bits_to_sec_param(issuer_pkalg, \ + issuer_bits); \ + if (sp < level) { \ + _gnutls_cert_log("issuer", issuer); \ + _gnutls_debug_log( \ + #level \ + ": certificate's issuer security level is unacceptable\n"); \ + return gnutls_assert_val(0); \ + } \ + } \ break; /* Checks whether the provided certificates are acceptable @@ -469,7 +466,7 @@ static unsigned is_level_acceptable(gnutls_x509_crt_t crt, bool trusted, unsigned flags) { gnutls_certificate_verification_profiles_t profile = - GNUTLS_VFLAGS_TO_PROFILE(flags); + GNUTLS_VFLAGS_TO_PROFILE(flags); int issuer_pkalg = 0, pkalg, ret; unsigned bits = 0, issuer_bits = 0, sym_bits = 0; gnutls_pk_params_st params; @@ -496,7 +493,7 @@ static unsigned is_level_acceptable(gnutls_x509_crt_t crt, if (issuer) { issuer_pkalg = - gnutls_x509_crt_get_pk_algorithm(issuer, &issuer_bits); + gnutls_x509_crt_get_pk_algorithm(issuer, &issuer_bits); if (issuer_pkalg < 0) return gnutls_assert_val(0); } @@ -511,108 +508,104 @@ static unsigned is_level_acceptable(gnutls_x509_crt_t crt, CASE_SEC_PARAM(GNUTLS_PROFILE_ULTRA, GNUTLS_SEC_PARAM_ULTRA); CASE_SEC_PARAM(GNUTLS_PROFILE_FUTURE, GNUTLS_SEC_PARAM_FUTURE); case GNUTLS_PROFILE_SUITEB128: - case GNUTLS_PROFILE_SUITEB192:{ - unsigned curve, issuer_curve; + case GNUTLS_PROFILE_SUITEB192: { + unsigned curve, issuer_curve; - /* check suiteB params validity: rfc5759 */ + /* check suiteB params validity: rfc5759 */ - if (gnutls_x509_crt_get_version(crt) != 3) { - _gnutls_debug_log - ("SUITEB: certificate uses an unacceptable version number\n"); - return gnutls_assert_val(0); - } + if (gnutls_x509_crt_get_version(crt) != 3) { + _gnutls_debug_log( + "SUITEB: certificate uses an unacceptable version number\n"); + return gnutls_assert_val(0); + } - if (sigalg != GNUTLS_SIGN_ECDSA_SHA256 - && sigalg != GNUTLS_SIGN_ECDSA_SHA384) { - _gnutls_debug_log - ("SUITEB: certificate is not signed using ECDSA-SHA256 or ECDSA-SHA384\n"); - return gnutls_assert_val(0); - } + if (sigalg != GNUTLS_SIGN_ECDSA_SHA256 && + sigalg != GNUTLS_SIGN_ECDSA_SHA384) { + _gnutls_debug_log( + "SUITEB: certificate is not signed using ECDSA-SHA256 or ECDSA-SHA384\n"); + return gnutls_assert_val(0); + } - if (pkalg != GNUTLS_PK_EC) { - _gnutls_debug_log - ("SUITEB: certificate does not contain ECC parameters\n"); + if (pkalg != GNUTLS_PK_EC) { + _gnutls_debug_log( + "SUITEB: certificate does not contain ECC parameters\n"); + return gnutls_assert_val(0); + } + + if (issuer_pkalg != GNUTLS_PK_EC) { + _gnutls_debug_log( + "SUITEB: certificate's issuer does not have ECC parameters\n"); + return gnutls_assert_val(0); + } + + ret = _gnutls_x509_crt_get_mpis(crt, ¶ms); + if (ret < 0) { + _gnutls_debug_log( + "SUITEB: cannot read certificate params\n"); + return gnutls_assert_val(0); + } + + curve = params.curve; + gnutls_pk_params_release(¶ms); + + if (curve != GNUTLS_ECC_CURVE_SECP256R1 && + curve != GNUTLS_ECC_CURVE_SECP384R1) { + _gnutls_debug_log( + "SUITEB: certificate's ECC params do not contain SECP256R1 or SECP384R1\n"); + return gnutls_assert_val(0); + } + + if (profile == GNUTLS_PROFILE_SUITEB192) { + if (curve != GNUTLS_ECC_CURVE_SECP384R1) { + _gnutls_debug_log( + "SUITEB192: certificate does not use SECP384R1\n"); return gnutls_assert_val(0); } + } - if (issuer_pkalg != GNUTLS_PK_EC) { - _gnutls_debug_log - ("SUITEB: certificate's issuer does not have ECC parameters\n"); + if (issuer != NULL) { + if (gnutls_x509_crt_get_version(issuer) != 3) { + _gnutls_debug_log( + "SUITEB: certificate's issuer uses an unacceptable version number\n"); return gnutls_assert_val(0); } - ret = _gnutls_x509_crt_get_mpis(crt, ¶ms); + ret = _gnutls_x509_crt_get_mpis(issuer, ¶ms); if (ret < 0) { - _gnutls_debug_log - ("SUITEB: cannot read certificate params\n"); + _gnutls_debug_log( + "SUITEB: cannot read certificate params\n"); return gnutls_assert_val(0); } - curve = params.curve; + issuer_curve = params.curve; gnutls_pk_params_release(¶ms); - if (curve != GNUTLS_ECC_CURVE_SECP256R1 && - curve != GNUTLS_ECC_CURVE_SECP384R1) { - _gnutls_debug_log - ("SUITEB: certificate's ECC params do not contain SECP256R1 or SECP384R1\n"); + if (issuer_curve != GNUTLS_ECC_CURVE_SECP256R1 && + issuer_curve != GNUTLS_ECC_CURVE_SECP384R1) { + _gnutls_debug_log( + "SUITEB: certificate's issuer ECC params do not contain SECP256R1 or SECP384R1\n"); return gnutls_assert_val(0); } - if (profile == GNUTLS_PROFILE_SUITEB192) { - if (curve != GNUTLS_ECC_CURVE_SECP384R1) { - _gnutls_debug_log - ("SUITEB192: certificate does not use SECP384R1\n"); - return gnutls_assert_val(0); - } + if (issuer_curve < curve) { + _gnutls_debug_log( + "SUITEB: certificate's issuer ECC params are weaker than the certificate's\n"); + return gnutls_assert_val(0); } - if (issuer != NULL) { - if (gnutls_x509_crt_get_version(issuer) != 3) { - _gnutls_debug_log - ("SUITEB: certificate's issuer uses an unacceptable version number\n"); - return gnutls_assert_val(0); - } - - ret = - _gnutls_x509_crt_get_mpis(issuer, ¶ms); - if (ret < 0) { - _gnutls_debug_log - ("SUITEB: cannot read certificate params\n"); - return gnutls_assert_val(0); - } - - issuer_curve = params.curve; - gnutls_pk_params_release(¶ms); - - if (issuer_curve != GNUTLS_ECC_CURVE_SECP256R1 - && issuer_curve != - GNUTLS_ECC_CURVE_SECP384R1) { - _gnutls_debug_log - ("SUITEB: certificate's issuer ECC params do not contain SECP256R1 or SECP384R1\n"); - return gnutls_assert_val(0); - } - - if (issuer_curve < curve) { - _gnutls_debug_log - ("SUITEB: certificate's issuer ECC params are weaker than the certificate's\n"); - return gnutls_assert_val(0); - } - - if (sigalg == GNUTLS_SIGN_ECDSA_SHA256 && - issuer_curve == - GNUTLS_ECC_CURVE_SECP384R1) { - _gnutls_debug_log - ("SUITEB: certificate is signed with ECDSA-SHA256 when using SECP384R1\n"); - return gnutls_assert_val(0); - } + if (sigalg == GNUTLS_SIGN_ECDSA_SHA256 && + issuer_curve == GNUTLS_ECC_CURVE_SECP384R1) { + _gnutls_debug_log( + "SUITEB: certificate is signed with ECDSA-SHA256 when using SECP384R1\n"); + return gnutls_assert_val(0); } - - break; - case GNUTLS_PROFILE_UNKNOWN: /* already checked; avoid compiler warnings */ - _gnutls_debug_log - ("An unknown profile (%d) was encountered\n", - (int)profile); } + + break; + case GNUTLS_PROFILE_UNKNOWN: /* already checked; avoid compiler warnings */ + _gnutls_debug_log("An unknown profile (%d) was encountered\n", + (int)profile); + } } return 1; @@ -626,13 +619,16 @@ typedef struct verify_state_st { gnutls_verify_output_function *func; } verify_state_st; -#define MARK_INVALID(x) { gnutls_assert(); \ - out |= (x|GNUTLS_CERT_INVALID); \ - result = 0; } +#define MARK_INVALID(x) \ + { \ + gnutls_assert(); \ + out |= (x | GNUTLS_CERT_INVALID); \ + result = 0; \ + } static int _gnutls_x509_verify_data(gnutls_sign_algorithm_t sign, - const gnutls_datum_t * data, - const gnutls_datum_t * signature, + const gnutls_datum_t *data, + const gnutls_datum_t *signature, gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer, unsigned vflags); @@ -650,10 +646,9 @@ static int _gnutls_x509_verify_data(gnutls_sign_algorithm_t sign, */ static unsigned verify_crt(gnutls_x509_trust_list_t tlist, gnutls_x509_crt_t cert, - const gnutls_x509_crt_t * trusted_cas, - int tcas_size, unsigned int flags, - unsigned int *output, - verify_state_st * vparams, unsigned end_cert) + const gnutls_x509_crt_t *trusted_cas, int tcas_size, + unsigned int flags, unsigned int *output, + verify_state_st *vparams, unsigned end_cert) { gnutls_datum_t cert_signed_data = { NULL, 0 }; gnutls_datum_t cert_signature = { NULL, 0 }; @@ -677,25 +672,22 @@ static unsigned verify_crt(gnutls_x509_trust_list_t tlist, if (tcas_size >= 1) issuer = find_issuer(cert, trusted_cas, tcas_size); - ret = - _gnutls_x509_get_signed_data(cert->cert, &cert->der, - "tbsCertificate", &cert_signed_data); + ret = _gnutls_x509_get_signed_data(cert->cert, &cert->der, + "tbsCertificate", &cert_signed_data); if (ret < 0) { MARK_INVALID(0); cert_signed_data.data = NULL; } - ret = - _gnutls_x509_get_signature(cert->cert, "signature", - &cert_signature); + ret = _gnutls_x509_get_signature(cert->cert, "signature", + &cert_signature); if (ret < 0) { MARK_INVALID(0); cert_signature.data = NULL; } - ret = - _gnutls_x509_get_signature_algorithm(cert->cert, - "signatureAlgorithm"); + ret = _gnutls_x509_get_signature_algorithm(cert->cert, + "signatureAlgorithm"); if (ret < 0) { MARK_INVALID(0); } @@ -711,113 +703,107 @@ static unsigned verify_crt(gnutls_x509_trust_list_t tlist, } else { if (vparams->nc != NULL) { /* append the issuer's constraints */ - ret = - gnutls_x509_crt_get_name_constraints(issuer, - vparams->nc, - GNUTLS_NAME_CONSTRAINTS_FLAG_APPEND, - NULL); - if (ret < 0 - && ret != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { - MARK_INVALID - (GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE); + ret = gnutls_x509_crt_get_name_constraints( + issuer, vparams->nc, + GNUTLS_NAME_CONSTRAINTS_FLAG_APPEND, NULL); + if (ret < 0 && + ret != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { + MARK_INVALID( + GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE); goto nc_done; } /* only check name constraints in server certificates, not CAs */ if (end_cert != 0) { - ret = - gnutls_x509_name_constraints_check_crt - (vparams->nc, GNUTLS_SAN_DNSNAME, cert); + ret = gnutls_x509_name_constraints_check_crt( + vparams->nc, GNUTLS_SAN_DNSNAME, cert); if (ret == 0) { - MARK_INVALID - (GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE); + MARK_INVALID( + GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE); goto nc_done; } - ret = - gnutls_x509_name_constraints_check_crt - (vparams->nc, GNUTLS_SAN_RFC822NAME, cert); + ret = gnutls_x509_name_constraints_check_crt( + vparams->nc, GNUTLS_SAN_RFC822NAME, + cert); if (ret == 0) { - MARK_INVALID - (GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE); + MARK_INVALID( + GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE); goto nc_done; } - ret = - gnutls_x509_name_constraints_check_crt - (vparams->nc, GNUTLS_SAN_DN, cert); + ret = gnutls_x509_name_constraints_check_crt( + vparams->nc, GNUTLS_SAN_DN, cert); if (ret == 0) { - MARK_INVALID - (GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE); + MARK_INVALID( + GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE); goto nc_done; } - ret = - gnutls_x509_name_constraints_check_crt - (vparams->nc, GNUTLS_SAN_URI, cert); + ret = gnutls_x509_name_constraints_check_crt( + vparams->nc, GNUTLS_SAN_URI, cert); if (ret == 0) { - MARK_INVALID - (GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE); + MARK_INVALID( + GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE); goto nc_done; } - ret = - gnutls_x509_name_constraints_check_crt - (vparams->nc, GNUTLS_SAN_IPADDRESS, cert); + ret = gnutls_x509_name_constraints_check_crt( + vparams->nc, GNUTLS_SAN_IPADDRESS, + cert); if (ret == 0) { - MARK_INVALID - (GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE); + MARK_INVALID( + GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE); goto nc_done; } } } - nc_done: + nc_done: if (vparams->tls_feat != NULL) { /* append the issuer's constraints */ - ret = - gnutls_x509_crt_get_tlsfeatures(issuer, - vparams->tls_feat, - GNUTLS_EXT_FLAG_APPEND, - NULL); - if (ret < 0 - && ret != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { - MARK_INVALID - (GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE); + ret = gnutls_x509_crt_get_tlsfeatures( + issuer, vparams->tls_feat, + GNUTLS_EXT_FLAG_APPEND, NULL); + if (ret < 0 && + ret != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { + MARK_INVALID( + GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE); goto feat_done; } - ret = - gnutls_x509_tlsfeatures_check_crt(vparams->tls_feat, - cert); + ret = gnutls_x509_tlsfeatures_check_crt( + vparams->tls_feat, cert); if (ret == 0) { - MARK_INVALID - (GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE); + MARK_INVALID( + GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE); goto feat_done; } } - feat_done: + feat_done: issuer_version = gnutls_x509_crt_get_version(issuer); if (issuer_version < 0) { MARK_INVALID(0); } else if (!(flags & GNUTLS_VERIFY_DISABLE_CA_SIGN) && - ((flags & GNUTLS_VERIFY_DO_NOT_ALLOW_X509_V1_CA_CRT) - || issuer_version != 1)) { - if (check_if_ca(cert, issuer, &vparams->max_path, flags) - != 1) { + ((flags & + GNUTLS_VERIFY_DO_NOT_ALLOW_X509_V1_CA_CRT) || + issuer_version != 1)) { + if (check_if_ca(cert, issuer, &vparams->max_path, + flags) != 1) { MARK_INVALID(GNUTLS_CERT_SIGNER_NOT_CA); } - ret = - gnutls_x509_crt_get_key_usage(issuer, &usage, NULL); + ret = gnutls_x509_crt_get_key_usage(issuer, &usage, + NULL); if (ret != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { if (ret < 0) { MARK_INVALID(0); - } else if (!(usage & GNUTLS_KEY_KEY_CERT_SIGN)) { - MARK_INVALID - (GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE); + } else if (!(usage & + GNUTLS_KEY_KEY_CERT_SIGN)) { + MARK_INVALID( + GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE); } } } @@ -826,17 +812,16 @@ static unsigned verify_crt(gnutls_x509_trust_list_t tlist, MARK_INVALID(0); } else if (cert_signed_data.data != NULL && cert_signature.data != NULL) { - ret = - _gnutls_x509_verify_data(sigalg, - &cert_signed_data, - &cert_signature, - cert, issuer, flags); + ret = _gnutls_x509_verify_data(sigalg, + &cert_signed_data, + &cert_signature, cert, + issuer, flags); if (ret == GNUTLS_E_PK_SIG_VERIFY_FAILED) { MARK_INVALID(GNUTLS_CERT_SIGNATURE_FAILURE); } else if (ret == GNUTLS_E_CONSTRAINT_ERROR) { - MARK_INVALID - (GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE); + MARK_INVALID( + GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE); } else if (ret < 0) { MARK_INVALID(0); } @@ -869,10 +854,10 @@ static unsigned verify_crt(gnutls_x509_trust_list_t tlist, * used are secure. If the certificate is self signed it doesn't * really matter. */ - if (_gnutls_sign_is_secure2 - (se, GNUTLS_SIGN_FLAG_SECURE_FOR_CERTS) == 0 - && _gnutls_is_broken_sig_allowed(se, flags) == 0 - && is_issuer(cert, cert) == 0) { + if (_gnutls_sign_is_secure2( + se, GNUTLS_SIGN_FLAG_SECURE_FOR_CERTS) == 0 && + _gnutls_is_broken_sig_allowed(se, flags) == 0 && + is_issuer(cert, cert) == 0) { MARK_INVALID(GNUTLS_CERT_INSECURE_ALGORITHM); } } @@ -897,7 +882,7 @@ static unsigned verify_crt(gnutls_x509_trust_list_t tlist, } } - cleanup: +cleanup: if (output) *output |= out; @@ -928,15 +913,14 @@ static unsigned verify_crt(gnutls_x509_trust_list_t tlist, * Returns: It will return true (1) if the given certificate is issued * by the given issuer, and false (0) if not. **/ -unsigned -gnutls_x509_crt_check_issuer(gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer) +unsigned gnutls_x509_crt_check_issuer(gnutls_x509_crt_t cert, + gnutls_x509_crt_t issuer) { return is_issuer(cert, issuer); } -static -unsigned check_ca_sanity(const gnutls_x509_crt_t issuer, - time_t now, unsigned int flags) +static unsigned check_ca_sanity(const gnutls_x509_crt_t issuer, time_t now, + unsigned int flags) { unsigned int status = 0; unsigned sigalg; @@ -950,19 +934,18 @@ unsigned check_ca_sanity(const gnutls_x509_crt_t issuer, status |= check_time_status(issuer, now); } - ret = - _gnutls_x509_get_signature_algorithm(issuer->cert, - "signatureAlgorithm"); + ret = _gnutls_x509_get_signature_algorithm(issuer->cert, + "signatureAlgorithm"); sigalg = ret; /* we explicitly allow CAs which we do not support their self-algorithms * to pass. */ - if (ret >= 0 && !is_level_acceptable(issuer, NULL, sigalg, true, flags)) { + if (ret >= 0 && + !is_level_acceptable(issuer, NULL, sigalg, true, flags)) { status |= GNUTLS_CERT_INSECURE_ALGORITHM | GNUTLS_CERT_INVALID; } return status; - } /* Verify X.509 certificate chain. @@ -972,15 +955,11 @@ unsigned check_ca_sanity(const gnutls_x509_crt_t issuer, * This function verifies a X.509 certificate list. The certificate * list should lead to a trusted certificate in order to be trusted. */ -unsigned int -_gnutls_verify_crt_status(gnutls_x509_trust_list_t tlist, - const gnutls_x509_crt_t * certificate_list, - int clist_size, - const gnutls_x509_crt_t * trusted_cas, - int tcas_size, - unsigned int flags, - const char *purpose, - gnutls_verify_output_function func) +unsigned int _gnutls_verify_crt_status( + gnutls_x509_trust_list_t tlist, + const gnutls_x509_crt_t *certificate_list, int clist_size, + const gnutls_x509_crt_t *trusted_cas, int tcas_size, unsigned int flags, + const char *purpose, gnutls_verify_output_function func) { int i = 0, ret; unsigned int status = 0, output; @@ -997,9 +976,9 @@ _gnutls_verify_crt_status(gnutls_x509_trust_list_t tlist, * failures on some root self signed certificates that use the * MD2 algorithm. */ - if (gnutls_x509_crt_check_issuer - (certificate_list[clist_size - 1], - certificate_list[clist_size - 1]) != 0) { + if (gnutls_x509_crt_check_issuer( + certificate_list[clist_size - 1], + certificate_list[clist_size - 1]) != 0) { clist_size--; } } @@ -1010,9 +989,9 @@ _gnutls_verify_crt_status(gnutls_x509_trust_list_t tlist, * self-signed E but already removed above), and we trust B, remove * B, C and D. */ if (!(flags & GNUTLS_VERIFY_DO_NOT_ALLOW_SAME)) - i = 0; /* also replace the first one */ + i = 0; /* also replace the first one */ else - i = 1; /* do not replace the first one */ + i = 1; /* do not replace the first one */ for (; i < clist_size; i++) { int j; @@ -1022,11 +1001,10 @@ _gnutls_verify_crt_status(gnutls_x509_trust_list_t tlist, * sent by the client, but will have the same name and key. That is * because it can happen that a CA certificate is upgraded from intermediate * CA to self-signed CA at some point. */ - if (_gnutls_check_if_same_key - (certificate_list[i], trusted_cas[j], i) != 0) { - - status |= - check_ca_sanity(trusted_cas[j], now, flags); + if (_gnutls_check_if_same_key(certificate_list[i], + trusted_cas[j], i) != 0) { + status |= check_ca_sanity(trusted_cas[j], now, + flags); if (func) func(certificate_list[i], @@ -1076,10 +1054,9 @@ _gnutls_verify_crt_status(gnutls_x509_trust_list_t tlist, */ output = 0; - ret = verify_crt(tlist, - certificate_list[clist_size - 1], - trusted_cas, tcas_size, flags, - &output, &vparams, clist_size == 1 ? 1 : 0); + ret = verify_crt(tlist, certificate_list[clist_size - 1], trusted_cas, + tcas_size, flags, &output, &vparams, + clist_size == 1 ? 1 : 0); if (ret != 1) { /* if the last certificate in the certificate * list is invalid, then the certificate is not @@ -1097,9 +1074,8 @@ _gnutls_verify_crt_status(gnutls_x509_trust_list_t tlist, output = 0; if (purpose != NULL) { - ret = - _gnutls_check_key_purpose(certificate_list[i], - purpose, 1); + ret = _gnutls_check_key_purpose(certificate_list[i], + purpose, 1); if (ret != 1) { gnutls_assert(); status |= GNUTLS_CERT_INVALID; @@ -1119,10 +1095,9 @@ _gnutls_verify_crt_status(gnutls_x509_trust_list_t tlist, flags |= GNUTLS_VERIFY_DO_NOT_ALLOW_X509_V1_CA_CRT; } - if (!verify_crt(tlist, - certificate_list[i - 1], - &certificate_list[i], 1, - flags, &output, &vparams, i == 1 ? 1 : 0)) { + if (!verify_crt(tlist, certificate_list[i - 1], + &certificate_list[i], 1, flags, &output, + &vparams, i == 1 ? 1 : 0)) { gnutls_assert(); status |= output; status |= GNUTLS_CERT_INVALID; @@ -1130,7 +1105,7 @@ _gnutls_verify_crt_status(gnutls_x509_trust_list_t tlist, } } - cleanup: +cleanup: gnutls_x509_name_constraints_deinit(vparams.nc); gnutls_x509_tlsfeatures_deinit(vparams.tls_feat); return status; @@ -1157,9 +1132,8 @@ unsigned _gnutls_check_key_purpose(gnutls_x509_crt_t cert, const char *purpose, * CA certs */ if (strcmp(purpose, GNUTLS_KP_TLS_WWW_SERVER) == 0) { unsigned ca_status; - ret = - gnutls_x509_crt_get_basic_constraints(cert, NULL, - &ca_status, NULL); + ret = gnutls_x509_crt_get_basic_constraints(cert, NULL, + &ca_status, NULL); if (ret < 0) ca_status = 0; @@ -1169,9 +1143,8 @@ unsigned _gnutls_check_key_purpose(gnutls_x509_crt_t cert, const char *purpose, for (i = 0;; i++) { oid_size = sizeof(oid); - ret = - gnutls_x509_crt_get_key_purpose_oid(cert, i, oid, &oid_size, - &critical); + ret = gnutls_x509_crt_get_key_purpose_oid(cert, i, oid, + &oid_size, &critical); if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { if (i == 0) { /* no key purpose in certificate, assume ANY */ @@ -1193,13 +1166,13 @@ unsigned _gnutls_check_key_purpose(gnutls_x509_crt_t cert, const char *purpose, } } - if (strcmp(oid, purpose) == 0 - || (no_any == 0 && strcmp(oid, GNUTLS_KP_ANY) == 0)) { + if (strcmp(oid, purpose) == 0 || + (no_any == 0 && strcmp(oid, GNUTLS_KP_ANY) == 0)) { return 1; } - _gnutls_debug_log - ("looking for key purpose '%s', but have '%s'\n", purpose, - oid); + _gnutls_debug_log( + "looking for key purpose '%s', but have '%s'\n", + purpose, oid); } return 0; } @@ -1216,14 +1189,11 @@ unsigned _gnutls_check_key_purpose(gnutls_x509_crt_t cert, const char *purpose, * This function verifies a X.509 certificate list. The certificate * list should lead to a trusted certificate in order to be trusted. */ -unsigned int -_gnutls_pkcs11_verify_crt_status(gnutls_x509_trust_list_t tlist, - const char *url, - const gnutls_x509_crt_t * certificate_list, - unsigned clist_size, - const char *purpose, - unsigned int flags, - gnutls_verify_output_function func) +unsigned int _gnutls_pkcs11_verify_crt_status( + gnutls_x509_trust_list_t tlist, const char *url, + const gnutls_x509_crt_t *certificate_list, unsigned clist_size, + const char *purpose, unsigned int flags, + gnutls_verify_output_function func) { int ret; unsigned int status = 0, i; @@ -1242,9 +1212,9 @@ _gnutls_pkcs11_verify_crt_status(gnutls_x509_trust_list_t tlist, * failures on some root self signed certificates that use the * MD2 algorithm. */ - if (gnutls_x509_crt_check_issuer - (certificate_list[clist_size - 1], - certificate_list[clist_size - 1]) != 0) { + if (gnutls_x509_crt_check_issuer( + certificate_list[clist_size - 1], + certificate_list[clist_size - 1]) != 0) { clist_size--; } } @@ -1255,33 +1225,32 @@ _gnutls_pkcs11_verify_crt_status(gnutls_x509_trust_list_t tlist, * self-signed E but already removed above), and we trust B, remove * B, C and D. */ if (!(flags & GNUTLS_VERIFY_DO_NOT_ALLOW_SAME)) - i = 0; /* also replace the first one */ + i = 0; /* also replace the first one */ else - i = 1; /* do not replace the first one */ + i = 1; /* do not replace the first one */ for (; i < clist_size; i++) { unsigned vflags; gnutls_x509_crt_t trusted_cert; - if (i == 0) /* in the end certificate do full comparison */ + if (i == 0) /* in the end certificate do full comparison */ vflags = - GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE | - GNUTLS_PKCS11_OBJ_FLAG_COMPARE | - GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED; + GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE | + GNUTLS_PKCS11_OBJ_FLAG_COMPARE | + GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED; else vflags = - GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE | - GNUTLS_PKCS11_OBJ_FLAG_COMPARE_KEY | - GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED; - - if (_gnutls_pkcs11_crt_is_known - (url, certificate_list[i], vflags, &trusted_cert) != 0) { + GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE | + GNUTLS_PKCS11_OBJ_FLAG_COMPARE_KEY | + GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED; + if (_gnutls_pkcs11_crt_is_known(url, certificate_list[i], + vflags, &trusted_cert) != 0) { status |= check_ca_sanity(trusted_cert, now, flags); if (func) - func(trusted_cert, - certificate_list[i], NULL, status); + func(trusted_cert, certificate_list[i], NULL, + status); gnutls_x509_crt_deinit(trusted_cert); @@ -1303,11 +1272,11 @@ _gnutls_pkcs11_verify_crt_status(gnutls_x509_trust_list_t tlist, /* check for blocklists */ for (i = 0; i < clist_size; i++) { - if (gnutls_pkcs11_crt_is_known(url, certificate_list[i], - GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE - | - GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_DISTRUSTED) - != 0) { + if (gnutls_pkcs11_crt_is_known( + url, certificate_list[i], + GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE | + GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_DISTRUSTED) != + 0) { status |= GNUTLS_CERT_INVALID; status |= GNUTLS_CERT_REVOKED; if (func) @@ -1318,34 +1287,26 @@ _gnutls_pkcs11_verify_crt_status(gnutls_x509_trust_list_t tlist, } /* check against issuer */ - ret = - gnutls_pkcs11_get_raw_issuer(url, certificate_list[clist_size - 1], - &raw_issuer, GNUTLS_X509_FMT_DER, - GNUTLS_PKCS11_OBJ_FLAG_OVERWRITE_TRUSTMOD_EXT - | - GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE); + ret = gnutls_pkcs11_get_raw_issuer( + url, certificate_list[clist_size - 1], &raw_issuer, + GNUTLS_X509_FMT_DER, + GNUTLS_PKCS11_OBJ_FLAG_OVERWRITE_TRUSTMOD_EXT | + GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE); if (ret < 0) { gnutls_assert(); - if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE - && clist_size > 2) { - + if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE && + clist_size > 2) { /* check if the last certificate in the chain is present * in our trusted list, and if yes, verify against it. */ - ret = - gnutls_pkcs11_crt_is_known(url, - certificate_list - [clist_size - 1], - GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED - | - GNUTLS_PKCS11_OBJ_FLAG_COMPARE); + ret = gnutls_pkcs11_crt_is_known( + url, certificate_list[clist_size - 1], + GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED | + GNUTLS_PKCS11_OBJ_FLAG_COMPARE); if (ret != 0) { - return _gnutls_verify_crt_status(tlist, - certificate_list, - clist_size, - &certificate_list - [clist_size - - 1], 1, flags, - purpose, func); + return _gnutls_verify_crt_status( + tlist, certificate_list, clist_size, + &certificate_list[clist_size - 1], 1, + flags, purpose, func); } } @@ -1354,10 +1315,9 @@ _gnutls_pkcs11_verify_crt_status(gnutls_x509_trust_list_t tlist, /* verify the certificate list against 0 trusted CAs in order * to get, any additional flags from the certificate list (e.g., * insecure algorithms or expired */ - status |= - _gnutls_verify_crt_status(tlist, certificate_list, - clist_size, NULL, 0, flags, - purpose, func); + status |= _gnutls_verify_crt_status(tlist, certificate_list, + clist_size, NULL, 0, flags, + purpose, func); goto cleanup; } @@ -1380,16 +1340,13 @@ _gnutls_pkcs11_verify_crt_status(gnutls_x509_trust_list_t tlist, /* check if the raw issuer is assigned with a time-based * distrust and the certificate is issued after that period */ - distrust_after = - _gnutls_pkcs11_get_distrust_after(url, issuer, - purpose == NULL ? - GNUTLS_KP_TLS_WWW_SERVER : - purpose, - GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED); - if (distrust_after != (time_t) - 1 - && distrust_after < - gnutls_x509_crt_get_activation_time(certificate_list - [clist_size - 1])) { + distrust_after = _gnutls_pkcs11_get_distrust_after( + url, issuer, + purpose == NULL ? GNUTLS_KP_TLS_WWW_SERVER : purpose, + GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED); + if (distrust_after != (time_t)-1 && + distrust_after < gnutls_x509_crt_get_activation_time( + certificate_list[clist_size - 1])) { gnutls_assert(); status |= GNUTLS_CERT_INVALID; status |= GNUTLS_CERT_SIGNER_NOT_FOUND; @@ -1399,24 +1356,22 @@ _gnutls_pkcs11_verify_crt_status(gnutls_x509_trust_list_t tlist, /* check if the raw issuer is distrusted (it can happen if * the issuer is both in the trusted list and the distrusted) */ - if (gnutls_pkcs11_crt_is_known(url, issuer, - GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE - | - GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_DISTRUSTED) - != 0) { + if (gnutls_pkcs11_crt_is_known( + url, issuer, + GNUTLS_PKCS11_OBJ_FLAG_PRESENT_IN_TRUSTED_MODULE | + GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_DISTRUSTED) != 0) { status |= GNUTLS_CERT_INVALID; - status |= GNUTLS_CERT_SIGNER_NOT_FOUND; /* if the signer is revoked - it is as if it doesn't exist */ + status |= + GNUTLS_CERT_SIGNER_NOT_FOUND; /* if the signer is revoked - it is as if it doesn't exist */ goto cleanup; } /* security modules that provide trust, bundle all certificates (of all purposes) * together. In software that doesn't specify any purpose assume the default to * be www-server. */ - ret = - _gnutls_check_key_purpose(issuer, - purpose == - NULL ? GNUTLS_KP_TLS_WWW_SERVER : purpose, - 0); + ret = _gnutls_check_key_purpose( + issuer, purpose == NULL ? GNUTLS_KP_TLS_WWW_SERVER : purpose, + 0); if (ret != 1) { gnutls_assert(); status |= GNUTLS_CERT_INVALID; @@ -1427,7 +1382,7 @@ _gnutls_pkcs11_verify_crt_status(gnutls_x509_trust_list_t tlist, status = _gnutls_verify_crt_status(tlist, certificate_list, clist_size, &issuer, 1, flags, purpose, func); - cleanup: +cleanup: gnutls_free(raw_issuer.data); if (issuer != NULL) gnutls_x509_crt_deinit(issuer); @@ -1436,11 +1391,9 @@ _gnutls_pkcs11_verify_crt_status(gnutls_x509_trust_list_t tlist, } #endif -static int -_gnutls_x509_validate_sign_params(gnutls_pk_algorithm_t pk_algorithm, - asn1_node cert, - const char *name, - gnutls_x509_spki_st * sig_params) +static int _gnutls_x509_validate_sign_params(gnutls_pk_algorithm_t pk_algorithm, + asn1_node cert, const char *name, + gnutls_x509_spki_st *sig_params) { /* The signature parameter validation is only needed for RSA-PSS */ if (pk_algorithm == GNUTLS_PK_RSA_PSS) { @@ -1481,12 +1434,11 @@ _gnutls_x509_validate_sign_params(gnutls_pk_algorithm_t pk_algorithm, * 'data' is the signed data * 'signature' is the signature! */ -static int -_gnutls_x509_verify_data(gnutls_sign_algorithm_t sign, - const gnutls_datum_t * data, - const gnutls_datum_t * signature, - gnutls_x509_crt_t cert, - gnutls_x509_crt_t issuer, unsigned vflags) +static int _gnutls_x509_verify_data(gnutls_sign_algorithm_t sign, + const gnutls_datum_t *data, + const gnutls_datum_t *signature, + gnutls_x509_crt_t cert, + gnutls_x509_crt_t issuer, unsigned vflags) { gnutls_pk_params_st params; gnutls_pk_algorithm_t issuer_pk; @@ -1506,20 +1458,18 @@ _gnutls_x509_verify_data(gnutls_sign_algorithm_t sign, se = _gnutls_sign_to_entry(sign); if (se == NULL) - return - gnutls_assert_val(GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM); + return gnutls_assert_val( + GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM); if (cert != NULL) { - ret = _gnutls_x509_read_sign_params(cert->cert, - "signatureAlgorithm", - &sign_params); + ret = _gnutls_x509_read_sign_params( + cert->cert, "signatureAlgorithm", &sign_params); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = _gnutls_x509_validate_sign_params(issuer_pk, - issuer->cert, + ret = _gnutls_x509_validate_sign_params(issuer_pk, issuer->cert, "tbsCertificate." "subjectPublicKeyInfo." "algorithm", @@ -1536,14 +1486,13 @@ _gnutls_x509_verify_data(gnutls_sign_algorithm_t sign, sign_params.rsa_pss_dig = se->hash; } - ret = - pubkey_verify_data(se, hash_to_entry(se->hash), data, signature, - ¶ms, &sign_params, vflags); + ret = pubkey_verify_data(se, hash_to_entry(se->hash), data, signature, + ¶ms, &sign_params, vflags); if (ret < 0) { gnutls_assert(); } - cleanup: +cleanup: /* release all allocated MPIs */ gnutls_pk_params_release(¶ms); @@ -1578,14 +1527,13 @@ _gnutls_x509_verify_data(gnutls_sign_algorithm_t sign, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crt_list_verify(const gnutls_x509_crt_t * cert_list, - unsigned cert_list_length, - const gnutls_x509_crt_t * CA_list, - unsigned CA_list_length, - const gnutls_x509_crl_t * CRL_list, - unsigned CRL_list_length, unsigned int flags, - unsigned int *verify) +int gnutls_x509_crt_list_verify(const gnutls_x509_crt_t *cert_list, + unsigned cert_list_length, + const gnutls_x509_crt_t *CA_list, + unsigned CA_list_length, + const gnutls_x509_crl_t *CRL_list, + unsigned CRL_list_length, unsigned int flags, + unsigned int *verify) { unsigned i; int ret; @@ -1599,16 +1547,15 @@ gnutls_x509_crt_list_verify(const gnutls_x509_crt_t * cert_list, /* Verify certificate */ *verify = _gnutls_verify_crt_status(tlist, cert_list, cert_list_length, - CA_list, CA_list_length, - flags, NULL, NULL); + CA_list, CA_list_length, flags, + NULL, NULL); /* Check for revoked certificates in the chain. */ for (i = 0; i < cert_list_length; i++) { - ret = gnutls_x509_crt_check_revocation(cert_list[i], - CRL_list, + ret = gnutls_x509_crt_check_revocation(cert_list[i], CRL_list, CRL_list_length); - if (ret == 1) { /* revoked */ + if (ret == 1) { /* revoked */ *verify |= GNUTLS_CERT_REVOKED; *verify |= GNUTLS_CERT_INVALID; } @@ -1636,11 +1583,10 @@ gnutls_x509_crt_list_verify(const gnutls_x509_crt_t * cert_list, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crt_verify(gnutls_x509_crt_t cert, - const gnutls_x509_crt_t * CA_list, - unsigned CA_list_length, unsigned int flags, - unsigned int *verify) +int gnutls_x509_crt_verify(gnutls_x509_crt_t cert, + const gnutls_x509_crt_t *CA_list, + unsigned CA_list_length, unsigned int flags, + unsigned int *verify) { gnutls_x509_trust_list_t tlist; @@ -1648,9 +1594,8 @@ gnutls_x509_crt_verify(gnutls_x509_crt_t cert, /* Verify certificate */ - *verify = _gnutls_verify_crt_status(tlist, &cert, 1, - CA_list, CA_list_length, - flags, NULL, NULL); + *verify = _gnutls_verify_crt_status(tlist, &cert, 1, CA_list, + CA_list_length, flags, NULL, NULL); gnutls_x509_trust_list_deinit(tlist, 0); return 0; @@ -1667,15 +1612,15 @@ gnutls_x509_crt_verify(gnutls_x509_crt_t cert, * Returns: true (1) if the given CRL was issued by the given issuer, * and false (0) if not. **/ -unsigned -gnutls_x509_crl_check_issuer(gnutls_x509_crl_t crl, gnutls_x509_crt_t issuer) +unsigned gnutls_x509_crl_check_issuer(gnutls_x509_crl_t crl, + gnutls_x509_crt_t issuer) { return is_crl_issuer(crl, issuer); } static inline gnutls_x509_crt_t -find_crl_issuer(gnutls_x509_crl_t crl, - const gnutls_x509_crt_t * trusted_cas, int tcas_size) +find_crl_issuer(gnutls_x509_crl_t crl, const gnutls_x509_crt_t *trusted_cas, + int tcas_size) { int i; @@ -1714,13 +1659,12 @@ find_crl_issuer(gnutls_x509_crl_t crl, * Returns: On success, %GNUTLS_E_SUCCESS (0), otherwise a * negative error value. **/ -int -gnutls_x509_crl_verify(gnutls_x509_crl_t crl, - const gnutls_x509_crt_t * trusted_cas, - unsigned tcas_size, unsigned int flags, - unsigned int *verify) +int gnutls_x509_crl_verify(gnutls_x509_crl_t crl, + const gnutls_x509_crt_t *trusted_cas, + unsigned tcas_size, unsigned int flags, + unsigned int *verify) { -/* CRL is ignored for now */ + /* CRL is ignored for now */ gnutls_datum_t crl_signed_data = { NULL, 0 }; gnutls_datum_t crl_signature = { NULL, 0 }; gnutls_x509_crt_t issuer = NULL; @@ -1735,9 +1679,8 @@ gnutls_x509_crl_verify(gnutls_x509_crl_t crl, if (tcas_size >= 1) issuer = find_crl_issuer(crl, trusted_cas, tcas_size); - result = - _gnutls_x509_get_signed_data(crl->crl, &crl->der, "tbsCertList", - &crl_signed_data); + result = _gnutls_x509_get_signed_data(crl->crl, &crl->der, + "tbsCertList", &crl_signed_data); if (result < 0) { gnutls_assert(); if (verify) @@ -1745,8 +1688,8 @@ gnutls_x509_crl_verify(gnutls_x509_crl_t crl, goto cleanup; } - result = - _gnutls_x509_get_signature(crl->crl, "signature", &crl_signature); + result = _gnutls_x509_get_signature(crl->crl, "signature", + &crl_signature); if (result < 0) { gnutls_assert(); if (verify) @@ -1754,9 +1697,8 @@ gnutls_x509_crl_verify(gnutls_x509_crl_t crl, goto cleanup; } - sigalg = - _gnutls_x509_get_signature_algorithm(crl->crl, - "signatureAlgorithm"); + sigalg = _gnutls_x509_get_signature_algorithm(crl->crl, + "signatureAlgorithm"); if (sigalg < 0) { gnutls_assert(); if (verify) @@ -1770,20 +1712,19 @@ gnutls_x509_crl_verify(gnutls_x509_crl_t crl, if (issuer == NULL) { gnutls_assert(); if (verify) - *verify |= - GNUTLS_CERT_SIGNER_NOT_FOUND | GNUTLS_CERT_INVALID; + *verify |= GNUTLS_CERT_SIGNER_NOT_FOUND | + GNUTLS_CERT_INVALID; } else { if (!(flags & GNUTLS_VERIFY_DISABLE_CA_SIGN)) { if (gnutls_x509_crt_get_ca_status(issuer, NULL) != 1) { gnutls_assert(); if (verify) - *verify |= - GNUTLS_CERT_SIGNER_NOT_CA | - GNUTLS_CERT_INVALID; + *verify |= GNUTLS_CERT_SIGNER_NOT_CA | + GNUTLS_CERT_INVALID; } - result = - gnutls_x509_crt_get_key_usage(issuer, &usage, NULL); + result = gnutls_x509_crt_get_key_usage(issuer, &usage, + NULL); if (result != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { if (result < 0) { gnutls_assert(); @@ -1793,16 +1734,15 @@ gnutls_x509_crl_verify(gnutls_x509_crl_t crl, gnutls_assert(); if (verify) *verify |= - GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE - | GNUTLS_CERT_INVALID; + GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE | + GNUTLS_CERT_INVALID; } } } - result = - _gnutls_x509_verify_data(sigalg, - &crl_signed_data, &crl_signature, - NULL, issuer, flags); + result = _gnutls_x509_verify_data(sigalg, &crl_signed_data, + &crl_signature, NULL, issuer, + flags); if (result == GNUTLS_E_PK_SIG_VERIFY_FAILED) { gnutls_assert(); /* error. ignore it */ @@ -1812,7 +1752,7 @@ gnutls_x509_crl_verify(gnutls_x509_crl_t crl, } else if (result == GNUTLS_E_CONSTRAINT_ERROR) { if (verify) *verify |= - GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE; + GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE; result = 0; } else if (result < 0) { gnutls_assert(); @@ -1820,7 +1760,7 @@ gnutls_x509_crl_verify(gnutls_x509_crl_t crl, *verify |= GNUTLS_CERT_INVALID; goto cleanup; } else { - result = 0; /* everything ok */ + result = 0; /* everything ok */ } } @@ -1844,7 +1784,7 @@ gnutls_x509_crl_verify(gnutls_x509_crl_t crl, if (nextu != -1 && nextu < now && verify) *verify |= GNUTLS_CERT_REVOCATION_DATA_SUPERSEDED; - cleanup: +cleanup: if (verify && *verify != 0) *verify |= GNUTLS_CERT_INVALID; diff --git a/lib/x509/virt-san.c b/lib/x509/virt-san.c index 71275dbca6..92fcab2c87 100644 --- a/lib/x509/virt-san.c +++ b/lib/x509/virt-san.c @@ -30,29 +30,27 @@ #include "krb5.h" #include "virt-san.h" -static -int san_othername_to_virtual(const char *oid, size_t size) +static int san_othername_to_virtual(const char *oid, size_t size) { if (oid) { - if ((unsigned)size == (sizeof(XMPP_OID) - 1) - && memcmp(oid, XMPP_OID, sizeof(XMPP_OID) - 1) == 0) + if ((unsigned)size == (sizeof(XMPP_OID) - 1) && + memcmp(oid, XMPP_OID, sizeof(XMPP_OID) - 1) == 0) return GNUTLS_SAN_OTHERNAME_XMPP; - else if ((unsigned)size == (sizeof(KRB5_PRINCIPAL_OID) - 1) - && memcmp(oid, KRB5_PRINCIPAL_OID, - sizeof(KRB5_PRINCIPAL_OID) - 1) == 0) + else if ((unsigned)size == (sizeof(KRB5_PRINCIPAL_OID) - 1) && + memcmp(oid, KRB5_PRINCIPAL_OID, + sizeof(KRB5_PRINCIPAL_OID) - 1) == 0) return GNUTLS_SAN_OTHERNAME_KRB5PRINCIPAL; else if ((unsigned)size == - (sizeof(MSUSER_PRINCIPAL_NAME_OID) - 1) - && memcmp(oid, MSUSER_PRINCIPAL_NAME_OID, - sizeof(MSUSER_PRINCIPAL_NAME_OID) - 1) == 0) + (sizeof(MSUSER_PRINCIPAL_NAME_OID) - 1) && + memcmp(oid, MSUSER_PRINCIPAL_NAME_OID, + sizeof(MSUSER_PRINCIPAL_NAME_OID) - 1) == 0) return GNUTLS_SAN_OTHERNAME_MSUSERPRINCIPAL; } return GNUTLS_SAN_OTHERNAME; } -static -const char *virtual_to_othername_oid(unsigned type) +static const char *virtual_to_othername_oid(unsigned type) { switch (type) { case GNUTLS_SAN_OTHERNAME_XMPP: @@ -67,7 +65,7 @@ const char *virtual_to_othername_oid(unsigned type) } int _gnutls_alt_name_assign_virt_type(struct name_st *name, unsigned type, - gnutls_datum_t * san, + gnutls_datum_t *san, const char *othername_oid, unsigned raw) { gnutls_datum_t encoded = { NULL, 0 }; @@ -82,13 +80,13 @@ int _gnutls_alt_name_assign_virt_type(struct name_st *name, unsigned type, gnutls_free(san->data); if (othername_oid) { - name->othername_oid.data = (uint8_t *) othername_oid; + name->othername_oid.data = (uint8_t *)othername_oid; name->othername_oid.size = strlen(othername_oid); } else { name->othername_oid.data = NULL; name->othername_oid.size = 0; } - } else { /* virtual types */ + } else { /* virtual types */ const char *oid = virtual_to_othername_oid(type); if (oid == NULL) @@ -97,9 +95,8 @@ int _gnutls_alt_name_assign_virt_type(struct name_st *name, unsigned type, switch (type) { case GNUTLS_SAN_OTHERNAME_XMPP: - ret = - gnutls_idna_map((char *)san->data, san->size, &xmpp, - 0); + ret = gnutls_idna_map((char *)san->data, san->size, + &xmpp, 0); if (ret < 0) return gnutls_assert_val(ret); @@ -119,9 +116,8 @@ int _gnutls_alt_name_assign_virt_type(struct name_st *name, unsigned type, break; case GNUTLS_SAN_OTHERNAME_KRB5PRINCIPAL: - ret = - _gnutls_krb5_principal_to_der((char *)san->data, - &name->san); + ret = _gnutls_krb5_principal_to_der((char *)san->data, + &name->san); if (ret < 0) return gnutls_assert_val(ret); @@ -155,9 +151,9 @@ int _gnutls_alt_name_assign_virt_type(struct name_st *name, unsigned type, * Since: 3.3.8 **/ int gnutls_x509_othername_to_virtual(const char *oid, - const gnutls_datum_t * othername, + const gnutls_datum_t *othername, unsigned int *virt_type, - gnutls_datum_t * virt) + gnutls_datum_t *virt) { int ret; unsigned type; @@ -171,9 +167,9 @@ int gnutls_x509_othername_to_virtual(const char *oid, switch (type) { case GNUTLS_SAN_OTHERNAME_XMPP: - ret = _gnutls_x509_decode_string - (ASN1_ETYPE_UTF8_STRING, othername->data, - othername->size, virt, 0); + ret = _gnutls_x509_decode_string(ASN1_ETYPE_UTF8_STRING, + othername->data, + othername->size, virt, 0); if (ret < 0) { gnutls_assert(); return ret; @@ -187,9 +183,9 @@ int gnutls_x509_othername_to_virtual(const char *oid, } return 0; case GNUTLS_SAN_OTHERNAME_MSUSERPRINCIPAL: - ret = _gnutls_x509_decode_string - (ASN1_ETYPE_UTF8_STRING, othername->data, - othername->size, virt, 0); + ret = _gnutls_x509_decode_string(ASN1_ETYPE_UTF8_STRING, + othername->data, + othername->size, virt, 0); if (ret < 0) { gnutls_assert(); return ret; diff --git a/lib/x509/virt-san.h b/lib/x509/virt-san.h index 040b491125..e4ef0317e2 100644 --- a/lib/x509/virt-san.h +++ b/lib/x509/virt-san.h @@ -20,12 +20,12 @@ */ #ifndef GNUTLS_LIB_X509_VIRT_SAN_H -# define GNUTLS_LIB_X509_VIRT_SAN_H +#define GNUTLS_LIB_X509_VIRT_SAN_H -# include "x509_ext_int.h" +#include "x509_ext_int.h" int _gnutls_alt_name_assign_virt_type(struct name_st *name, unsigned type, - gnutls_datum_t * san, + gnutls_datum_t *san, const char *othername_oid, unsigned raw); -#endif /* GNUTLS_LIB_X509_VIRT_SAN_H */ +#endif /* GNUTLS_LIB_X509_VIRT_SAN_H */ diff --git a/lib/x509/x509.c b/lib/x509/x509.c index a2f84b1cb3..bfe50f7fbd 100644 --- a/lib/x509/x509.c +++ b/lib/x509/x509.c @@ -52,8 +52,8 @@ static int crt_reinit(gnutls_x509_crt_t crt) asn1_delete_structure(&crt->cert); - result = asn1_create_element(_gnutls_get_pkix(), - "PKIX1.Certificate", &crt->cert); + result = asn1_create_element(_gnutls_get_pkix(), "PKIX1.Certificate", + &crt->cert); if (result != ASN1_SUCCESS) { result = _gnutls_asn2err(result); gnutls_assert(); @@ -106,13 +106,13 @@ unsigned gnutls_x509_crt_equals(gnutls_x509_crt_t cert1, gnutls_datum_t tmp1, tmp2; /* on uninitialized or modified certificates, we have to re-encode */ - ret = - gnutls_x509_crt_export2(cert1, GNUTLS_X509_FMT_DER, &tmp1); + ret = gnutls_x509_crt_export2(cert1, GNUTLS_X509_FMT_DER, + &tmp1); if (ret < 0) return gnutls_assert_val(0); - ret = - gnutls_x509_crt_export2(cert2, GNUTLS_X509_FMT_DER, &tmp2); + ret = gnutls_x509_crt_export2(cert2, GNUTLS_X509_FMT_DER, + &tmp2); if (ret < 0) { gnutls_free(tmp1.data); return gnutls_assert_val(0); @@ -128,8 +128,8 @@ unsigned gnutls_x509_crt_equals(gnutls_x509_crt_t cert1, gnutls_free(tmp2.data); } else { if ((cert1->der.size == cert2->der.size) && - (memcmp(cert1->der.data, cert2->der.data, cert1->der.size) - == 0)) + (memcmp(cert1->der.data, cert2->der.data, + cert1->der.size) == 0)) result = 1; else result = 0; @@ -150,8 +150,8 @@ unsigned gnutls_x509_crt_equals(gnutls_x509_crt_t cert1, * * Since: 3.5.0 **/ -unsigned -gnutls_x509_crt_equals2(gnutls_x509_crt_t cert1, const gnutls_datum_t * der) +unsigned gnutls_x509_crt_equals2(gnutls_x509_crt_t cert1, + const gnutls_datum_t *der) { bool result; @@ -163,8 +163,8 @@ gnutls_x509_crt_equals2(gnutls_x509_crt_t cert1, const gnutls_datum_t * der) int ret; /* on uninitialized or modified certificates, we have to re-encode */ - ret = - gnutls_x509_crt_export2(cert1, GNUTLS_X509_FMT_DER, &tmp1); + ret = gnutls_x509_crt_export2(cert1, GNUTLS_X509_FMT_DER, + &tmp1); if (ret < 0) return gnutls_assert_val(0); @@ -195,7 +195,7 @@ gnutls_x509_crt_equals2(gnutls_x509_crt_t cert1, const gnutls_datum_t * der) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int gnutls_x509_crt_init(gnutls_x509_crt_t * cert) +int gnutls_x509_crt_init(gnutls_x509_crt_t *cert) { gnutls_x509_crt_t tmp; int result; @@ -208,8 +208,8 @@ int gnutls_x509_crt_init(gnutls_x509_crt_t * cert) if (!tmp) return GNUTLS_E_MEMORY_ERROR; - result = asn1_create_element(_gnutls_get_pkix(), - "PKIX1.Certificate", &tmp->cert); + result = asn1_create_element(_gnutls_get_pkix(), "PKIX1.Certificate", + &tmp->cert); if (result != ASN1_SUCCESS) { gnutls_assert(); gnutls_free(tmp); @@ -238,7 +238,7 @@ int gnutls_x509_crt_init(gnutls_x509_crt_t * cert) *cert = tmp; - return 0; /* success */ + return 0; /* success */ } /*- @@ -309,35 +309,32 @@ static int compare_sig_algorithm(gnutls_x509_crt_t cert) unsigned empty1 = 0, empty2 = 0; len1 = sizeof(oid1); - result = - asn1_read_value(cert->cert, "signatureAlgorithm.algorithm", oid1, - &len1); + result = asn1_read_value(cert->cert, "signatureAlgorithm.algorithm", + oid1, &len1); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } len2 = sizeof(oid2); - result = - asn1_read_value(cert->cert, "tbsCertificate.signature.algorithm", - oid2, &len2); + result = asn1_read_value( + cert->cert, "tbsCertificate.signature.algorithm", oid2, &len2); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } if (len1 != len2 || memcmp(oid1, oid2, len1) != 0) { - _gnutls_debug_log - ("signatureAlgorithm.algorithm differs from tbsCertificate.signature.algorithm: %s, %s\n", - oid1, oid2); + _gnutls_debug_log( + "signatureAlgorithm.algorithm differs from tbsCertificate.signature.algorithm: %s, %s\n", + oid1, oid2); gnutls_assert(); return GNUTLS_E_CERTIFICATE_ERROR; } /* compare the parameters */ - ret = - _gnutls_x509_read_value(cert->cert, "signatureAlgorithm.parameters", - &sp1); + ret = _gnutls_x509_read_value(cert->cert, + "signatureAlgorithm.parameters", &sp1); if (ret == GNUTLS_E_ASN1_ELEMENT_NOT_FOUND) { empty1 = 1; } else if (ret < 0) { @@ -345,10 +342,8 @@ static int compare_sig_algorithm(gnutls_x509_crt_t cert) return ret; } - ret = - _gnutls_x509_read_value(cert->cert, - "tbsCertificate.signature.parameters", - &sp2); + ret = _gnutls_x509_read_value( + cert->cert, "tbsCertificate.signature.parameters", &sp2); if (ret == GNUTLS_E_ASN1_ELEMENT_NOT_FOUND) { empty2 = 1; } else if (ret < 0) { @@ -367,8 +362,7 @@ static int compare_sig_algorithm(gnutls_x509_crt_t cert) _gnutls_free_datum(&sp2); } - if (empty1 != empty2 || - sp1.size != sp2.size || + if (empty1 != empty2 || sp1.size != sp2.size || (sp1.size > 0 && memcmp(sp1.data, sp2.data, sp1.size) != 0)) { gnutls_assert(); ret = GNUTLS_E_CERTIFICATE_ERROR; @@ -376,7 +370,7 @@ static int compare_sig_algorithm(gnutls_x509_crt_t cert) } ret = 0; - cleanup: +cleanup: _gnutls_free_datum(&sp1); _gnutls_free_datum(&sp2); return ret; @@ -388,31 +382,29 @@ static int cache_alt_names(gnutls_x509_crt_t cert) int ret; /* pre-parse subject alt name */ - ret = - _gnutls_x509_crt_get_extension(cert, "2.5.29.17", 0, &tmpder, NULL); + ret = _gnutls_x509_crt_get_extension(cert, "2.5.29.17", 0, &tmpder, + NULL); if (ret < 0 && ret != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { gnutls_free(tmpder.data); return gnutls_assert_val(ret); } if (ret >= 0) { - ret = - gnutls_x509_ext_import_subject_alt_names(&tmpder, cert->san, - 0); + ret = gnutls_x509_ext_import_subject_alt_names(&tmpder, + cert->san, 0); gnutls_free(tmpder.data); if (ret < 0) return gnutls_assert_val(ret); } - ret = - _gnutls_x509_crt_get_extension(cert, "2.5.29.18", 0, &tmpder, NULL); + ret = _gnutls_x509_crt_get_extension(cert, "2.5.29.18", 0, &tmpder, + NULL); if (ret < 0 && ret != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) return gnutls_assert_val(ret); if (ret >= 0) { - ret = - gnutls_x509_ext_import_subject_alt_names(&tmpder, cert->ian, - 0); + ret = gnutls_x509_ext_import_subject_alt_names(&tmpder, + cert->ian, 0); gnutls_free(tmpder.data); if (ret < 0) return gnutls_assert_val(ret); @@ -452,8 +444,8 @@ static bool has_valid_serial(gnutls_x509_crt_t cert) } if (serial_size > 20) { - _gnutls_debug_log - ("error: serial number value is longer than 20 octets\n"); + _gnutls_debug_log( + "error: serial number value is longer than 20 octets\n"); return false; } @@ -479,7 +471,7 @@ static bool has_valid_serial(gnutls_x509_crt_t cert) } /* Check if extension can be successfully parsed */ -static bool is_valid_extension(const char *oid, gnutls_datum_t * der) +static bool is_valid_extension(const char *oid, gnutls_datum_t *der) { int err = 0, i; unsigned u; @@ -509,9 +501,8 @@ static bool is_valid_extension(const char *oid, gnutls_datum_t * der) } else if (!strcmp(oid, GNUTLS_X509EXT_OID_KEY_USAGE)) { err = gnutls_x509_ext_import_key_usage(der, &u); } else if (!strcmp(oid, GNUTLS_X509EXT_OID_PRIVATE_KEY_USAGE_PERIOD)) { - err = - gnutls_x509_ext_import_private_key_usage_period(der, &t1, - &t2); + err = gnutls_x509_ext_import_private_key_usage_period(der, &t1, + &t2); } else if (!strcmp(oid, GNUTLS_X509EXT_OID_EXTENDED_KEY_USAGE)) { gnutls_x509_key_purposes_t purposes; if (gnutls_x509_key_purpose_init(&purposes) < 0) @@ -568,7 +559,7 @@ static bool is_valid_extension(const char *oid, gnutls_datum_t * der) return err == 0; } -#endif /* STRICT_X509 */ +#endif /* STRICT_X509 */ int _gnutls_check_cert_sanity(gnutls_x509_crt_t cert) { @@ -598,26 +589,23 @@ int _gnutls_check_cert_sanity(gnutls_x509_crt_t cert) if (version < 3) { if (!cert->modified) { - ret = - _gnutls_x509_get_raw_field2(cert->cert, &cert->der, - "tbsCertificate.extensions", - &exts); + ret = _gnutls_x509_get_raw_field2( + cert->cert, &cert->der, + "tbsCertificate.extensions", &exts); if (ret >= 0 && exts.size > 0) { - _gnutls_debug_log - ("error: extensions present in certificate with version %d\n", - version); - return - gnutls_assert_val - (GNUTLS_E_X509_CERTIFICATE_ERROR); + _gnutls_debug_log( + "error: extensions present in certificate with version %d\n", + version); + return gnutls_assert_val( + GNUTLS_E_X509_CERTIFICATE_ERROR); } } else { if (cert->use_extensions) { - _gnutls_debug_log - ("error: extensions set in certificate with version %d\n", - version); - return - gnutls_assert_val - (GNUTLS_E_X509_CERTIFICATE_ERROR); + _gnutls_debug_log( + "error: extensions set in certificate with version %d\n", + version); + return gnutls_assert_val( + GNUTLS_E_X509_CERTIFICATE_ERROR); } } } else { @@ -627,18 +615,15 @@ int _gnutls_check_cert_sanity(gnutls_x509_crt_t cert) size_t oid_size; char *o; - htable = - hash_initialize(16, NULL, hhasher, hcomparator, - gnutls_free); + htable = hash_initialize(16, NULL, hhasher, hcomparator, + gnutls_free); if (htable == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); for (i = 0;; i++) { oid_size = sizeof(oid); - ret = - gnutls_x509_crt_get_extension_info(cert, i, oid, - &oid_size, - &critical); + ret = gnutls_x509_crt_get_extension_info( + cert, i, oid, &oid_size, &critical); if (ret < 0) { if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) @@ -660,28 +645,26 @@ int _gnutls_check_cert_sanity(gnutls_x509_crt_t cert) } else if (ret == 0) { /* duplicate */ gnutls_free(o); - _gnutls_debug_log - ("error: duplicate extension (%s) detected\n", - oid); - ret = - gnutls_assert_val - (GNUTLS_E_X509_DUPLICATE_EXTENSION); + _gnutls_debug_log( + "error: duplicate extension (%s) detected\n", + oid); + ret = gnutls_assert_val( + GNUTLS_E_X509_DUPLICATE_EXTENSION); goto cleanup; } #ifdef STRICT_X509 gnutls_datum_t der = { NULL, 0 }; - ret = - gnutls_x509_crt_get_extension_data2(cert, i, &der); + ret = gnutls_x509_crt_get_extension_data2(cert, i, + &der); if (ret < 0) continue; if (critical && !is_valid_extension(oid, &der)) { _gnutls_free_datum(&der); - _gnutls_debug_log - ("error: could not parse extension (%s)\n"); - return - gnutls_assert_val - (GNUTLS_E_X509_CERTIFICATE_ERROR); + _gnutls_debug_log( + "error: could not parse extension (%s)\n"); + return gnutls_assert_val( + GNUTLS_E_X509_CERTIFICATE_ERROR); } _gnutls_free_datum(&der); #endif @@ -698,22 +681,22 @@ int _gnutls_check_cert_sanity(gnutls_x509_crt_t cert) id_size = sizeof(id); ret = gnutls_x509_crt_get_subject_unique_id(cert, id, &id_size); if (ret >= 0 || ret == GNUTLS_E_SHORT_MEMORY_BUFFER) { - _gnutls_debug_log - ("error: subjectUniqueID present in certificate with version %d\n", - version); - ret = - gnutls_assert_val(GNUTLS_E_X509_CERTIFICATE_ERROR); + _gnutls_debug_log( + "error: subjectUniqueID present in certificate with version %d\n", + version); + ret = gnutls_assert_val( + GNUTLS_E_X509_CERTIFICATE_ERROR); goto cleanup; } id_size = sizeof(id); ret = gnutls_x509_crt_get_issuer_unique_id(cert, id, &id_size); if (ret >= 0 || ret == GNUTLS_E_SHORT_MEMORY_BUFFER) { - _gnutls_debug_log - ("error: subjectUniqueID present in certificate with version %d\n", - version); - ret = - gnutls_assert_val(GNUTLS_E_X509_CERTIFICATE_ERROR); + _gnutls_debug_log( + "error: subjectUniqueID present in certificate with version %d\n", + version); + ret = gnutls_assert_val( + GNUTLS_E_X509_CERTIFICATE_ERROR); goto cleanup; } } @@ -727,15 +710,15 @@ int _gnutls_check_cert_sanity(gnutls_x509_crt_t cert) if (gnutls_x509_crt_get_expiration_time(cert) == -1 || gnutls_x509_crt_get_activation_time(cert) == -1) { - _gnutls_debug_log - ("error: invalid expiration or activation time in certificate\n"); + _gnutls_debug_log( + "error: invalid expiration or activation time in certificate\n"); ret = gnutls_assert_val(GNUTLS_E_CERTIFICATE_TIME_ERROR); goto cleanup; } ret = 0; - cleanup: +cleanup: if (htable) hash_free(htable); return ret; @@ -757,10 +740,8 @@ int _gnutls_check_cert_sanity(gnutls_x509_crt_t cert) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crt_import(gnutls_x509_crt_t cert, - const gnutls_datum_t * data, - gnutls_x509_crt_fmt_t format) +int gnutls_x509_crt_import(gnutls_x509_crt_t cert, const gnutls_datum_t *data, + gnutls_x509_crt_fmt_t format) { int result; @@ -784,16 +765,14 @@ gnutls_x509_crt_import(gnutls_x509_crt_t cert, */ if (format == GNUTLS_X509_FMT_PEM) { /* Try the first header */ - result = - _gnutls_fbase64_decode(PEM_X509_CERT2, data->data, - data->size, &cert->der); + result = _gnutls_fbase64_decode(PEM_X509_CERT2, data->data, + data->size, &cert->der); if (result < 0) { /* try for the second header */ - result = - _gnutls_fbase64_decode(PEM_X509_CERT, - data->data, data->size, - &cert->der); + result = _gnutls_fbase64_decode(PEM_X509_CERT, + data->data, data->size, + &cert->der); if (result < 0) { gnutls_assert(); @@ -811,9 +790,8 @@ gnutls_x509_crt_import(gnutls_x509_crt_t cert, cert->expanded = 1; cert->modified = 0; - result = - _asn1_strict_der_decode(&cert->cert, cert->der.data, cert->der.size, - NULL); + result = _asn1_strict_der_decode(&cert->cert, cert->der.data, + cert->der.size, NULL); if (result != ASN1_SUCCESS) { result = _gnutls_asn2err(result); gnutls_assert(); @@ -827,25 +805,25 @@ gnutls_x509_crt_import(gnutls_x509_crt_t cert, } /* The following do not allocate but rather point to DER data */ - result = _gnutls_x509_get_raw_field2(cert->cert, &cert->der, - "tbsCertificate.issuer.rdnSequence", - &cert->raw_issuer_dn); + result = _gnutls_x509_get_raw_field2( + cert->cert, &cert->der, "tbsCertificate.issuer.rdnSequence", + &cert->raw_issuer_dn); if (result < 0) { gnutls_assert(); goto cleanup; } - result = _gnutls_x509_get_raw_field2(cert->cert, &cert->der, - "tbsCertificate.subject.rdnSequence", - &cert->raw_dn); + result = _gnutls_x509_get_raw_field2( + cert->cert, &cert->der, "tbsCertificate.subject.rdnSequence", + &cert->raw_dn); if (result < 0) { gnutls_assert(); goto cleanup; } - result = _gnutls_x509_get_raw_field2(cert->cert, &cert->der, - "tbsCertificate.subjectPublicKeyInfo", - &cert->raw_spki); + result = _gnutls_x509_get_raw_field2( + cert->cert, &cert->der, "tbsCertificate.subjectPublicKeyInfo", + &cert->raw_spki); if (result < 0) { gnutls_assert(); goto cleanup; @@ -869,7 +847,7 @@ gnutls_x509_crt_import(gnutls_x509_crt_t cert, return 0; - cleanup: +cleanup: _gnutls_free_datum(&cert->der); return result; } @@ -895,9 +873,8 @@ gnutls_x509_crt_import(gnutls_x509_crt_t cert, * with the required size. %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE if * the DN does not exist, or another error value on error. On success 0 is returned. **/ -int -gnutls_x509_crt_get_issuer_dn(gnutls_x509_crt_t cert, char *buf, - size_t *buf_size) +int gnutls_x509_crt_get_issuer_dn(gnutls_x509_crt_t cert, char *buf, + size_t *buf_size) { if (cert == NULL) { gnutls_assert(); @@ -905,8 +882,8 @@ gnutls_x509_crt_get_issuer_dn(gnutls_x509_crt_t cert, char *buf, } return _gnutls_x509_parse_dn(cert->cert, - "tbsCertificate.issuer.rdnSequence", - buf, buf_size, GNUTLS_X509_DN_FLAG_COMPAT); + "tbsCertificate.issuer.rdnSequence", buf, + buf_size, GNUTLS_X509_DN_FLAG_COMPAT); } /** @@ -927,7 +904,7 @@ gnutls_x509_crt_get_issuer_dn(gnutls_x509_crt_t cert, char *buf, * * Since: 3.1.10 **/ -int gnutls_x509_crt_get_issuer_dn2(gnutls_x509_crt_t cert, gnutls_datum_t * dn) +int gnutls_x509_crt_get_issuer_dn2(gnutls_x509_crt_t cert, gnutls_datum_t *dn) { if (cert == NULL) { gnutls_assert(); @@ -935,8 +912,8 @@ int gnutls_x509_crt_get_issuer_dn2(gnutls_x509_crt_t cert, gnutls_datum_t * dn) } return _gnutls_x509_get_dn(cert->cert, - "tbsCertificate.issuer.rdnSequence", - dn, GNUTLS_X509_DN_FLAG_COMPAT); + "tbsCertificate.issuer.rdnSequence", dn, + GNUTLS_X509_DN_FLAG_COMPAT); } /** @@ -959,18 +936,16 @@ int gnutls_x509_crt_get_issuer_dn2(gnutls_x509_crt_t cert, gnutls_datum_t * dn) * * Since: 3.5.7 **/ -int -gnutls_x509_crt_get_issuer_dn3(gnutls_x509_crt_t cert, gnutls_datum_t * dn, - unsigned flags) +int gnutls_x509_crt_get_issuer_dn3(gnutls_x509_crt_t cert, gnutls_datum_t *dn, + unsigned flags) { if (cert == NULL) { gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; } - return _gnutls_x509_get_dn(cert->cert, - "tbsCertificate.issuer.rdnSequence", - dn, flags); + return _gnutls_x509_get_dn( + cert->cert, "tbsCertificate.issuer.rdnSequence", dn, flags); } /** @@ -1002,11 +977,10 @@ gnutls_x509_crt_get_issuer_dn3(gnutls_x509_crt_t cert, gnutls_datum_t * dn, * the required size. %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE if there * are no data in the current index. On success 0 is returned. **/ -int -gnutls_x509_crt_get_issuer_dn_by_oid(gnutls_x509_crt_t cert, - const char *oid, unsigned indx, - unsigned int raw_flag, void *buf, - size_t *buf_size) +int gnutls_x509_crt_get_issuer_dn_by_oid(gnutls_x509_crt_t cert, + const char *oid, unsigned indx, + unsigned int raw_flag, void *buf, + size_t *buf_size) { gnutls_datum_t td; int ret; @@ -1044,9 +1018,8 @@ gnutls_x509_crt_get_issuer_dn_by_oid(gnutls_x509_crt_t cert, * the required size. %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE if there * are no data in the current index. On success 0 is returned. **/ -int -gnutls_x509_crt_get_issuer_dn_oid(gnutls_x509_crt_t cert, - unsigned indx, void *oid, size_t *oid_size) +int gnutls_x509_crt_get_issuer_dn_oid(gnutls_x509_crt_t cert, unsigned indx, + void *oid, size_t *oid_size) { if (cert == NULL) { gnutls_assert(); @@ -1088,8 +1061,8 @@ int gnutls_x509_crt_get_dn(gnutls_x509_crt_t cert, char *buf, size_t *buf_size) } return _gnutls_x509_parse_dn(cert->cert, - "tbsCertificate.subject.rdnSequence", - buf, buf_size, GNUTLS_X509_DN_FLAG_COMPAT); + "tbsCertificate.subject.rdnSequence", buf, + buf_size, GNUTLS_X509_DN_FLAG_COMPAT); } /** @@ -1110,7 +1083,7 @@ int gnutls_x509_crt_get_dn(gnutls_x509_crt_t cert, char *buf, size_t *buf_size) * * Since: 3.1.10 **/ -int gnutls_x509_crt_get_dn2(gnutls_x509_crt_t cert, gnutls_datum_t * dn) +int gnutls_x509_crt_get_dn2(gnutls_x509_crt_t cert, gnutls_datum_t *dn) { if (cert == NULL) { gnutls_assert(); @@ -1118,8 +1091,8 @@ int gnutls_x509_crt_get_dn2(gnutls_x509_crt_t cert, gnutls_datum_t * dn) } return _gnutls_x509_get_dn(cert->cert, - "tbsCertificate.subject.rdnSequence", - dn, GNUTLS_X509_DN_FLAG_COMPAT); + "tbsCertificate.subject.rdnSequence", dn, + GNUTLS_X509_DN_FLAG_COMPAT); } /** @@ -1142,7 +1115,7 @@ int gnutls_x509_crt_get_dn2(gnutls_x509_crt_t cert, gnutls_datum_t * dn) * * Since: 3.5.7 **/ -int gnutls_x509_crt_get_dn3(gnutls_x509_crt_t cert, gnutls_datum_t * dn, +int gnutls_x509_crt_get_dn3(gnutls_x509_crt_t cert, gnutls_datum_t *dn, unsigned flags) { if (cert == NULL) { @@ -1150,9 +1123,8 @@ int gnutls_x509_crt_get_dn3(gnutls_x509_crt_t cert, gnutls_datum_t * dn, return GNUTLS_E_INVALID_REQUEST; } - return _gnutls_x509_get_dn(cert->cert, - "tbsCertificate.subject.rdnSequence", - dn, flags); + return _gnutls_x509_get_dn( + cert->cert, "tbsCertificate.subject.rdnSequence", dn, flags); } /** @@ -1184,10 +1156,9 @@ int gnutls_x509_crt_get_dn3(gnutls_x509_crt_t cert, gnutls_datum_t * dn, * the required size. %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE if there * are no data in the current index. On success 0 is returned. **/ -int -gnutls_x509_crt_get_dn_by_oid(gnutls_x509_crt_t cert, const char *oid, - unsigned indx, unsigned int raw_flag, - void *buf, size_t *buf_size) +int gnutls_x509_crt_get_dn_by_oid(gnutls_x509_crt_t cert, const char *oid, + unsigned indx, unsigned int raw_flag, + void *buf, size_t *buf_size) { gnutls_datum_t td; int ret; @@ -1225,9 +1196,8 @@ gnutls_x509_crt_get_dn_by_oid(gnutls_x509_crt_t cert, const char *oid, * the required size. %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE if there * are no data in the current index. On success 0 is returned. **/ -int -gnutls_x509_crt_get_dn_oid(gnutls_x509_crt_t cert, - unsigned indx, void *oid, size_t *oid_size) +int gnutls_x509_crt_get_dn_oid(gnutls_x509_crt_t cert, unsigned indx, void *oid, + size_t *oid_size) { if (cert == NULL) { gnutls_assert(); @@ -1255,8 +1225,8 @@ gnutls_x509_crt_get_dn_oid(gnutls_x509_crt_t cert, **/ int gnutls_x509_crt_get_signature_algorithm(gnutls_x509_crt_t cert) { - return map_errs_to_zero(_gnutls_x509_get_signature_algorithm(cert->cert, - "signatureAlgorithm")); + return map_errs_to_zero(_gnutls_x509_get_signature_algorithm( + cert->cert, "signatureAlgorithm")); } /** @@ -1282,9 +1252,8 @@ int gnutls_x509_crt_get_signature_oid(gnutls_x509_crt_t cert, char *oid, gnutls_datum_t out; len = sizeof(str); - result = - asn1_read_value(cert->cert, "signatureAlgorithm.algorithm", str, - &len); + result = asn1_read_value(cert->cert, "signatureAlgorithm.algorithm", + str, &len); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -1325,10 +1294,10 @@ int gnutls_x509_crt_get_pk_oid(gnutls_x509_crt_t cert, char *oid, gnutls_datum_t out; len = sizeof(str); - result = - asn1_read_value(cert->cert, - "tbsCertificate.subjectPublicKeyInfo.algorithm.algorithm", - str, &len); + result = asn1_read_value( + cert->cert, + "tbsCertificate.subjectPublicKeyInfo.algorithm.algorithm", str, + &len); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -1357,9 +1326,8 @@ int gnutls_x509_crt_get_pk_oid(gnutls_x509_crt_t cert, char *oid, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crt_get_signature(gnutls_x509_crt_t cert, - char *sig, size_t *sig_size) +int gnutls_x509_crt_get_signature(gnutls_x509_crt_t cert, char *sig, + size_t *sig_size) { gnutls_datum_t dsig = { NULL, 0 }; int ret; @@ -1371,14 +1339,14 @@ gnutls_x509_crt_get_signature(gnutls_x509_crt_t cert, if (ret < 0) return gnutls_assert_val(ret); - ret = _gnutls_copy_data(&dsig, (uint8_t *) sig, sig_size); + ret = _gnutls_copy_data(&dsig, (uint8_t *)sig, sig_size); if (ret < 0) { gnutls_assert(); goto cleanup; } ret = 0; - cleanup: +cleanup: gnutls_free(dsig.data); return ret; } @@ -1414,7 +1382,7 @@ time_t gnutls_x509_crt_get_activation_time(gnutls_x509_crt_t cert) { if (cert == NULL) { gnutls_assert(); - return (time_t) - 1; + return (time_t)-1; } return _gnutls_x509_get_time(cert->cert, @@ -1434,7 +1402,7 @@ time_t gnutls_x509_crt_get_expiration_time(gnutls_x509_crt_t cert) { if (cert == NULL) { gnutls_assert(); - return (time_t) - 1; + return (time_t)-1; } return _gnutls_x509_get_time(cert->cert, @@ -1455,11 +1423,10 @@ time_t gnutls_x509_crt_get_expiration_time(gnutls_x509_crt_t cert) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE * if the extension is not present, otherwise a negative error value. **/ -int -gnutls_x509_crt_get_private_key_usage_period(gnutls_x509_crt_t cert, - time_t * activation, - time_t * expiration, - unsigned int *critical) +int gnutls_x509_crt_get_private_key_usage_period(gnutls_x509_crt_t cert, + time_t *activation, + time_t *expiration, + unsigned int *critical) { int ret; gnutls_datum_t der = { NULL, 0 }; @@ -1469,18 +1436,16 @@ gnutls_x509_crt_get_private_key_usage_period(gnutls_x509_crt_t cert, return GNUTLS_E_INVALID_REQUEST; } - ret = - _gnutls_x509_crt_get_extension(cert, "2.5.29.16", 0, &der, - critical); + ret = _gnutls_x509_crt_get_extension(cert, "2.5.29.16", 0, &der, + critical); if (ret < 0) return gnutls_assert_val(ret); if (der.size == 0 || der.data == NULL) return gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); - ret = - gnutls_x509_ext_import_private_key_usage_period(&der, activation, - expiration); + ret = gnutls_x509_ext_import_private_key_usage_period(&der, activation, + expiration); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -1488,7 +1453,7 @@ gnutls_x509_crt_get_private_key_usage_period(gnutls_x509_crt_t cert, ret = 0; - cleanup: +cleanup: _gnutls_free_datum(&der); return ret; @@ -1508,9 +1473,8 @@ gnutls_x509_crt_get_private_key_usage_period(gnutls_x509_crt_t cert, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crt_get_serial(gnutls_x509_crt_t cert, void *result, - size_t *result_size) +int gnutls_x509_crt_get_serial(gnutls_x509_crt_t cert, void *result, + size_t *result_size) { int ret, len; @@ -1520,9 +1484,8 @@ gnutls_x509_crt_get_serial(gnutls_x509_crt_t cert, void *result, } len = *result_size; - ret = - asn1_read_value(cert->cert, "tbsCertificate.serialNumber", - result, &len); + ret = asn1_read_value(cert->cert, "tbsCertificate.serialNumber", result, + &len); *result_size = len; if (ret != ASN1_SUCCESS) { @@ -1547,9 +1510,8 @@ gnutls_x509_crt_get_serial(gnutls_x509_crt_t cert, void *result, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE * if the extension is not present, otherwise a negative error value. **/ -int -gnutls_x509_crt_get_subject_key_id(gnutls_x509_crt_t cert, void *ret, - size_t *ret_size, unsigned int *critical) +int gnutls_x509_crt_get_subject_key_id(gnutls_x509_crt_t cert, void *ret, + size_t *ret_size, unsigned int *critical) { int result; gnutls_datum_t id = { NULL, 0 }; @@ -1563,9 +1525,8 @@ gnutls_x509_crt_get_subject_key_id(gnutls_x509_crt_t cert, void *ret, if (ret == NULL) *ret_size = 0; - if ((result = - _gnutls_x509_crt_get_extension(cert, "2.5.29.14", 0, &der, - critical)) < 0) { + if ((result = _gnutls_x509_crt_get_extension(cert, "2.5.29.14", 0, &der, + critical)) < 0) { return result; } @@ -1583,7 +1544,7 @@ gnutls_x509_crt_get_subject_key_id(gnutls_x509_crt_t cert, void *ret, result = 0; - cleanup: +cleanup: gnutls_free(der.data); gnutls_free(id.data); return result; @@ -1623,14 +1584,10 @@ inline static int is_type_printable(int type) * * Since: 3.0 **/ -int -gnutls_x509_crt_get_authority_key_gn_serial(gnutls_x509_crt_t cert, - unsigned int seq, void *alt, - size_t *alt_size, - unsigned int *alt_type, - void *serial, - size_t *serial_size, - unsigned int *critical) +int gnutls_x509_crt_get_authority_key_gn_serial( + gnutls_x509_crt_t cert, unsigned int seq, void *alt, size_t *alt_size, + unsigned int *alt_type, void *serial, size_t *serial_size, + unsigned int *critical) { int ret; gnutls_datum_t der, san, iserial; @@ -1642,9 +1599,8 @@ gnutls_x509_crt_get_authority_key_gn_serial(gnutls_x509_crt_t cert, return GNUTLS_E_INVALID_REQUEST; } - if ((ret = - _gnutls_x509_crt_get_extension(cert, "2.5.29.35", 0, &der, - critical)) < 0) { + if ((ret = _gnutls_x509_crt_get_extension(cert, "2.5.29.35", 0, &der, + critical)) < 0) { return gnutls_assert_val(ret); } @@ -1665,9 +1621,8 @@ gnutls_x509_crt_get_authority_key_gn_serial(gnutls_x509_crt_t cert, goto cleanup; } - ret = - gnutls_x509_aki_get_cert_issuer(aki, seq, &san_type, &san, NULL, - &iserial); + ret = gnutls_x509_aki_get_cert_issuer(aki, seq, &san_type, &san, NULL, + &iserial); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -1692,7 +1647,7 @@ gnutls_x509_crt_get_authority_key_gn_serial(gnutls_x509_crt_t cert, } ret = 0; - cleanup: +cleanup: if (aki != NULL) gnutls_x509_aki_deinit(aki); gnutls_free(der.data); @@ -1717,9 +1672,9 @@ gnutls_x509_crt_get_authority_key_gn_serial(gnutls_x509_crt_t cert, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE * if the extension is not present, otherwise a negative error value. **/ -int -gnutls_x509_crt_get_authority_key_id(gnutls_x509_crt_t cert, void *id, - size_t *id_size, unsigned int *critical) +int gnutls_x509_crt_get_authority_key_id(gnutls_x509_crt_t cert, void *id, + size_t *id_size, + unsigned int *critical) { int ret; gnutls_datum_t der, l_id; @@ -1730,9 +1685,8 @@ gnutls_x509_crt_get_authority_key_id(gnutls_x509_crt_t cert, void *id, return GNUTLS_E_INVALID_REQUEST; } - if ((ret = - _gnutls_x509_crt_get_extension(cert, "2.5.29.35", 0, &der, - critical)) < 0) { + if ((ret = _gnutls_x509_crt_get_extension(cert, "2.5.29.35", 0, &der, + critical)) < 0) { return gnutls_assert_val(ret); } @@ -1757,17 +1711,14 @@ gnutls_x509_crt_get_authority_key_id(gnutls_x509_crt_t cert, void *id, if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { gnutls_datum_t serial; - ret = - gnutls_x509_aki_get_cert_issuer(aki, 0, NULL, NULL, NULL, - &serial); + ret = gnutls_x509_aki_get_cert_issuer(aki, 0, NULL, NULL, NULL, + &serial); if (ret >= 0) { - ret = - gnutls_assert_val - (GNUTLS_E_X509_UNSUPPORTED_EXTENSION); + ret = gnutls_assert_val( + GNUTLS_E_X509_UNSUPPORTED_EXTENSION); } else { - ret = - gnutls_assert_val - (GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); + ret = gnutls_assert_val( + GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); } } @@ -1783,7 +1734,7 @@ gnutls_x509_crt_get_authority_key_id(gnutls_x509_crt_t cert, void *id, } ret = 0; - cleanup: +cleanup: if (aki != NULL) gnutls_x509_aki_deinit(aki); gnutls_free(der.data); @@ -1820,10 +1771,8 @@ int gnutls_x509_crt_get_pk_algorithm(gnutls_x509_crt_t cert, unsigned int *bits) if (bits) *bits = 0; - result = - _gnutls_x509_get_pk_algorithm(cert->cert, - "tbsCertificate.subjectPublicKeyInfo", - NULL, bits); + result = _gnutls_x509_get_pk_algorithm( + cert->cert, "tbsCertificate.subjectPublicKeyInfo", NULL, bits); if (result < 0) { gnutls_assert(); @@ -1844,9 +1793,8 @@ int gnutls_x509_crt_get_pk_algorithm(gnutls_x509_crt_t cert, unsigned int *bits) * * Since: 3.6.0 **/ -int -gnutls_x509_crt_get_spki(gnutls_x509_crt_t cert, gnutls_x509_spki_t spki, - unsigned int flags) +int gnutls_x509_crt_get_spki(gnutls_x509_crt_t cert, gnutls_x509_spki_t spki, + unsigned int flags) { int result; gnutls_x509_spki_st params; @@ -1885,10 +1833,9 @@ gnutls_x509_crt_get_spki(gnutls_x509_crt_t cert, gnutls_x509_spki_t spki, * @othername_oid: if the name is otherName return the OID * */ -int -_gnutls_parse_general_name2(asn1_node src, const char *src_name, - int seq, gnutls_datum_t * dname, - unsigned int *ret_type, int othername_oid) +int _gnutls_parse_general_name2(asn1_node src, const char *src_name, int seq, + gnutls_datum_t *dname, unsigned int *ret_type, + int othername_oid) { int len, ret; char nptr[MAX_NAME_SIZE]; @@ -1898,7 +1845,7 @@ _gnutls_parse_general_name2(asn1_node src, const char *src_name, gnutls_x509_subject_alt_name_t type; if (seq != -1) { - seq++; /* 0->1, 1->2 etc */ + seq++; /* 0->1, 1->2 etc */ if (src_name[0] != 0) snprintf(nptr, sizeof(nptr), "%s.?%d", src_name, seq); @@ -1910,7 +1857,8 @@ _gnutls_parse_general_name2(asn1_node src, const char *src_name, len = sizeof(choice_type); result = asn1_read_value(src, nptr, choice_type, &len); - if (result == ASN1_VALUE_NOT_FOUND || result == ASN1_ELEMENT_NOT_FOUND) { + if (result == ASN1_VALUE_NOT_FOUND || + result == ASN1_ELEMENT_NOT_FOUND) { return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; } @@ -1920,7 +1868,7 @@ _gnutls_parse_general_name2(asn1_node src, const char *src_name, } type = _gnutls_x509_san_find_type(choice_type); - if (type == (gnutls_x509_subject_alt_name_t) - 1) { + if (type == (gnutls_x509_subject_alt_name_t)-1) { gnutls_assert(); return GNUTLS_E_X509_UNKNOWN_SAN; } @@ -1949,8 +1897,8 @@ _gnutls_parse_general_name2(asn1_node src, const char *src_name, if (src_name[0] != 0 && seq != -1) snprintf(nptr, sizeof(nptr), - "%s.?%d.otherName.type-id", - src_name, seq); + "%s.?%d.otherName.type-id", src_name, + seq); else if (src_name[0] != 0) snprintf(nptr, sizeof(nptr), "%s.otherName.type-id", src_name); @@ -2000,7 +1948,7 @@ _gnutls_parse_general_name2(asn1_node src, const char *src_name, return type; - cleanup: +cleanup: gnutls_free(tmp.data); return ret; } @@ -2008,18 +1956,16 @@ _gnutls_parse_general_name2(asn1_node src, const char *src_name, /* returns the type and the name on success. * Type is also returned as a parameter in case of an error. */ -int -_gnutls_parse_general_name(asn1_node src, const char *src_name, - int seq, void *name, size_t *name_size, - unsigned int *ret_type, int othername_oid) +int _gnutls_parse_general_name(asn1_node src, const char *src_name, int seq, + void *name, size_t *name_size, + unsigned int *ret_type, int othername_oid) { int ret; gnutls_datum_t res = { NULL, 0 }; unsigned type; - ret = - _gnutls_parse_general_name2(src, src_name, seq, &res, ret_type, - othername_oid); + ret = _gnutls_parse_general_name2(src, src_name, seq, &res, ret_type, + othername_oid); if (ret < 0) return gnutls_assert_val(ret); @@ -2037,16 +1983,14 @@ _gnutls_parse_general_name(asn1_node src, const char *src_name, } ret = type; - cleanup: +cleanup: gnutls_free(res.data); return ret; } -static int -get_alt_name(gnutls_subject_alt_names_t san, - unsigned int seq, uint8_t * alt, - size_t *alt_size, unsigned int *alt_type, - unsigned int *critical, int othername_oid) +static int get_alt_name(gnutls_subject_alt_names_t san, unsigned int seq, + uint8_t *alt, size_t *alt_size, unsigned int *alt_type, + unsigned int *critical, int othername_oid) { int ret; gnutls_datum_t ooid = { NULL, 0 }; @@ -2070,9 +2014,8 @@ get_alt_name(gnutls_subject_alt_names_t san, if (type == GNUTLS_SAN_OTHERNAME && ooid.data) { unsigned vtype; - ret = - gnutls_x509_othername_to_virtual((char *)ooid.data, &oname, - &vtype, &virt); + ret = gnutls_x509_othername_to_virtual((char *)ooid.data, + &oname, &vtype, &virt); if (ret >= 0) { type = vtype; oname.data = virt.data; @@ -2099,7 +2042,7 @@ get_alt_name(gnutls_subject_alt_names_t san, } ret = type; - cleanup: +cleanup: gnutls_free(virt.data); return ret; @@ -2135,10 +2078,10 @@ get_alt_name(gnutls_subject_alt_names_t san, * name with the specified sequence number then * %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE is returned. **/ -int -gnutls_x509_crt_get_subject_alt_name(gnutls_x509_crt_t cert, - unsigned int seq, void *san, - size_t *san_size, unsigned int *critical) +int gnutls_x509_crt_get_subject_alt_name(gnutls_x509_crt_t cert, + unsigned int seq, void *san, + size_t *san_size, + unsigned int *critical) { return get_alt_name(cert->san, seq, san, san_size, NULL, critical, 0); } @@ -2176,10 +2119,10 @@ gnutls_x509_crt_get_subject_alt_name(gnutls_x509_crt_t cert, * * Since: 2.10.0 **/ -int -gnutls_x509_crt_get_issuer_alt_name(gnutls_x509_crt_t cert, - unsigned int seq, void *ian, - size_t *ian_size, unsigned int *critical) +int gnutls_x509_crt_get_issuer_alt_name(gnutls_x509_crt_t cert, + unsigned int seq, void *ian, + size_t *ian_size, + unsigned int *critical) { return get_alt_name(cert->ian, seq, ian, ian_size, NULL, critical, 0); } @@ -2208,15 +2151,14 @@ gnutls_x509_crt_get_issuer_alt_name(gnutls_x509_crt_t cert, * Alternative name with the specified sequence number then * %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE is returned. **/ -int -gnutls_x509_crt_get_subject_alt_name2(gnutls_x509_crt_t cert, - unsigned int seq, void *san, - size_t *san_size, - unsigned int *san_type, - unsigned int *critical) +int gnutls_x509_crt_get_subject_alt_name2(gnutls_x509_crt_t cert, + unsigned int seq, void *san, + size_t *san_size, + unsigned int *san_type, + unsigned int *critical) { - return get_alt_name(cert->san, seq, san, san_size, - san_type, critical, 0); + return get_alt_name(cert->san, seq, san, san_size, san_type, critical, + 0); } /** @@ -2246,15 +2188,14 @@ gnutls_x509_crt_get_subject_alt_name2(gnutls_x509_crt_t cert, * Since: 2.10.0 * **/ -int -gnutls_x509_crt_get_issuer_alt_name2(gnutls_x509_crt_t cert, - unsigned int seq, void *ian, - size_t *ian_size, - unsigned int *ian_type, - unsigned int *critical) +int gnutls_x509_crt_get_issuer_alt_name2(gnutls_x509_crt_t cert, + unsigned int seq, void *ian, + size_t *ian_size, + unsigned int *ian_type, + unsigned int *critical) { - return get_alt_name(cert->ian, seq, ian, ian_size, - ian_type, critical, 0); + return get_alt_name(cert->ian, seq, ian, ian_size, ian_type, critical, + 0); } /** @@ -2287,10 +2228,9 @@ gnutls_x509_crt_get_issuer_alt_name2(gnutls_x509_crt_t cert, * sequence number and with the otherName type then * %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE is returned. **/ -int -gnutls_x509_crt_get_subject_alt_othername_oid(gnutls_x509_crt_t cert, - unsigned int seq, - void *oid, size_t *oid_size) +int gnutls_x509_crt_get_subject_alt_othername_oid(gnutls_x509_crt_t cert, + unsigned int seq, void *oid, + size_t *oid_size) { return get_alt_name(cert->san, seq, oid, oid_size, NULL, NULL, 1); } @@ -2327,10 +2267,9 @@ gnutls_x509_crt_get_subject_alt_othername_oid(gnutls_x509_crt_t cert, * * Since: 2.10.0 **/ -int -gnutls_x509_crt_get_issuer_alt_othername_oid(gnutls_x509_crt_t cert, - unsigned int seq, - void *ret, size_t *ret_size) +int gnutls_x509_crt_get_issuer_alt_othername_oid(gnutls_x509_crt_t cert, + unsigned int seq, void *ret, + size_t *ret_size) { return get_alt_name(cert->ian, seq, ret, ret_size, NULL, NULL, 1); } @@ -2355,10 +2294,9 @@ gnutls_x509_crt_get_issuer_alt_othername_oid(gnutls_x509_crt_t cert, * certificate does not contain the basicConstraints extension * GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE will be returned. **/ -int -gnutls_x509_crt_get_basic_constraints(gnutls_x509_crt_t cert, - unsigned int *critical, - unsigned int *ca, int *pathlen) +int gnutls_x509_crt_get_basic_constraints(gnutls_x509_crt_t cert, + unsigned int *critical, + unsigned int *ca, int *pathlen) { int result; gnutls_datum_t basicConstraints; @@ -2369,9 +2307,8 @@ gnutls_x509_crt_get_basic_constraints(gnutls_x509_crt_t cert, return GNUTLS_E_INVALID_REQUEST; } - if ((result = - _gnutls_x509_crt_get_extension(cert, "2.5.29.19", 0, - &basicConstraints, critical)) < 0) { + if ((result = _gnutls_x509_crt_get_extension( + cert, "2.5.29.19", 0, &basicConstraints, critical)) < 0) { return result; } @@ -2380,9 +2317,8 @@ gnutls_x509_crt_get_basic_constraints(gnutls_x509_crt_t cert, return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; } - result = - gnutls_x509_ext_import_basic_constraints(&basicConstraints, &tmp_ca, - pathlen); + result = gnutls_x509_ext_import_basic_constraints(&basicConstraints, + &tmp_ca, pathlen); if (ca) *ca = tmp_ca; @@ -2415,8 +2351,8 @@ gnutls_x509_crt_get_basic_constraints(gnutls_x509_crt_t cert, * certificate does not contain the basicConstraints extension * GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE will be returned. **/ -int -gnutls_x509_crt_get_ca_status(gnutls_x509_crt_t cert, unsigned int *critical) +int gnutls_x509_crt_get_ca_status(gnutls_x509_crt_t cert, + unsigned int *critical) { int pathlen; unsigned int ca; @@ -2443,9 +2379,9 @@ gnutls_x509_crt_get_ca_status(gnutls_x509_crt_t cert, unsigned int *critical) * extension %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE will be * returned. **/ -int -gnutls_x509_crt_get_key_usage(gnutls_x509_crt_t cert, - unsigned int *key_usage, unsigned int *critical) +int gnutls_x509_crt_get_key_usage(gnutls_x509_crt_t cert, + unsigned int *key_usage, + unsigned int *critical) { int result; gnutls_datum_t keyUsage; @@ -2455,9 +2391,8 @@ gnutls_x509_crt_get_key_usage(gnutls_x509_crt_t cert, return GNUTLS_E_INVALID_REQUEST; } - if ((result = - _gnutls_x509_crt_get_extension(cert, "2.5.29.15", 0, - &keyUsage, critical)) < 0) { + if ((result = _gnutls_x509_crt_get_extension( + cert, "2.5.29.15", 0, &keyUsage, critical)) < 0) { return result; } @@ -2496,10 +2431,9 @@ gnutls_x509_crt_get_key_usage(gnutls_x509_crt_t cert, * * Since: 3.6.0 **/ -int -gnutls_x509_crt_get_inhibit_anypolicy(gnutls_x509_crt_t cert, - unsigned int *skipcerts, - unsigned int *critical) +int gnutls_x509_crt_get_inhibit_anypolicy(gnutls_x509_crt_t cert, + unsigned int *skipcerts, + unsigned int *critical) { int ret; gnutls_datum_t ext; @@ -2509,9 +2443,8 @@ gnutls_x509_crt_get_inhibit_anypolicy(gnutls_x509_crt_t cert, return GNUTLS_E_INVALID_REQUEST; } - if ((ret = - _gnutls_x509_crt_get_extension(cert, "2.5.29.54", 0, - &ext, critical)) < 0) { + if ((ret = _gnutls_x509_crt_get_extension(cert, "2.5.29.54", 0, &ext, + critical)) < 0) { return ret; } @@ -2548,12 +2481,9 @@ gnutls_x509_crt_get_inhibit_anypolicy(gnutls_x509_crt_t cert, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, * otherwise a negative error code is returned. **/ -int -gnutls_x509_crt_get_proxy(gnutls_x509_crt_t cert, - unsigned int *critical, - int *pathlen, - char **policyLanguage, - char **policy, size_t *sizeof_policy) +int gnutls_x509_crt_get_proxy(gnutls_x509_crt_t cert, unsigned int *critical, + int *pathlen, char **policyLanguage, + char **policy, size_t *sizeof_policy) { int result; gnutls_datum_t proxyCertInfo; @@ -2563,9 +2493,9 @@ gnutls_x509_crt_get_proxy(gnutls_x509_crt_t cert, return GNUTLS_E_INVALID_REQUEST; } - if ((result = - _gnutls_x509_crt_get_extension(cert, "1.3.6.1.5.5.7.1.14", 0, - &proxyCertInfo, critical)) < 0) { + if ((result = _gnutls_x509_crt_get_extension(cert, "1.3.6.1.5.5.7.1.14", + 0, &proxyCertInfo, + critical)) < 0) { return result; } @@ -2574,9 +2504,8 @@ gnutls_x509_crt_get_proxy(gnutls_x509_crt_t cert, return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; } - result = gnutls_x509_ext_import_proxy(&proxyCertInfo, pathlen, - policyLanguage, - policy, sizeof_policy); + result = gnutls_x509_ext_import_proxy( + &proxyCertInfo, pathlen, policyLanguage, policy, sizeof_policy); _gnutls_free_datum(&proxyCertInfo); if (result < 0) { gnutls_assert(); @@ -2622,10 +2551,9 @@ void gnutls_x509_policy_release(struct gnutls_x509_policy_st *policy) * * Since: 3.1.5 **/ -int -gnutls_x509_crt_get_policy(gnutls_x509_crt_t crt, unsigned indx, - struct gnutls_x509_policy_st *policy, - unsigned int *critical) +int gnutls_x509_crt_get_policy(gnutls_x509_crt_t crt, unsigned indx, + struct gnutls_x509_policy_st *policy, + unsigned int *critical) { gnutls_datum_t tmpd = { NULL, 0 }; int ret; @@ -2642,9 +2570,8 @@ gnutls_x509_crt_get_policy(gnutls_x509_crt_t crt, unsigned indx, if (ret < 0) return gnutls_assert_val(ret); - if ((ret = - _gnutls_x509_crt_get_extension(crt, "2.5.29.32", 0, &tmpd, - critical)) < 0) { + if ((ret = _gnutls_x509_crt_get_extension(crt, "2.5.29.32", 0, &tmpd, + critical)) < 0) { goto cleanup; } @@ -2670,7 +2597,7 @@ gnutls_x509_crt_get_policy(gnutls_x509_crt_t crt, unsigned indx, ret = 0; - cleanup: +cleanup: if (policies != NULL) gnutls_x509_policies_deinit(policies); _gnutls_free_datum(&tmpd); @@ -2696,11 +2623,10 @@ gnutls_x509_crt_get_policy(gnutls_x509_crt_t crt, unsigned indx, * contain the specified extension * GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE will be returned. **/ -int -gnutls_x509_crt_get_extension_by_oid(gnutls_x509_crt_t cert, - const char *oid, unsigned indx, - void *buf, size_t *buf_size, - unsigned int *critical) +int gnutls_x509_crt_get_extension_by_oid(gnutls_x509_crt_t cert, + const char *oid, unsigned indx, + void *buf, size_t *buf_size, + unsigned int *critical) { int result; gnutls_datum_t output; @@ -2710,9 +2636,8 @@ gnutls_x509_crt_get_extension_by_oid(gnutls_x509_crt_t cert, return GNUTLS_E_INVALID_REQUEST; } - if ((result = - _gnutls_x509_crt_get_extension(cert, oid, indx, &output, - critical)) < 0) { + if ((result = _gnutls_x509_crt_get_extension(cert, oid, indx, &output, + critical)) < 0) { gnutls_assert(); return result; } @@ -2757,11 +2682,10 @@ gnutls_x509_crt_get_extension_by_oid(gnutls_x509_crt_t cert, * * Since: 3.3.8 **/ -int -gnutls_x509_crt_get_extension_by_oid2(gnutls_x509_crt_t cert, - const char *oid, unsigned indx, - gnutls_datum_t * output, - unsigned int *critical) +int gnutls_x509_crt_get_extension_by_oid2(gnutls_x509_crt_t cert, + const char *oid, unsigned indx, + gnutls_datum_t *output, + unsigned int *critical) { int ret; @@ -2770,9 +2694,8 @@ gnutls_x509_crt_get_extension_by_oid2(gnutls_x509_crt_t cert, return GNUTLS_E_INVALID_REQUEST; } - if ((ret = - _gnutls_x509_crt_get_extension(cert, oid, indx, output, - critical)) < 0) { + if ((ret = _gnutls_x509_crt_get_extension(cert, oid, indx, output, + critical)) < 0) { gnutls_assert(); return ret; } @@ -2803,9 +2726,8 @@ gnutls_x509_crt_get_extension_by_oid2(gnutls_x509_crt_t cert, * last extension available %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE * will be returned. **/ -int -gnutls_x509_crt_get_extension_oid(gnutls_x509_crt_t cert, unsigned indx, - void *oid, size_t *oid_size) +int gnutls_x509_crt_get_extension_oid(gnutls_x509_crt_t cert, unsigned indx, + void *oid, size_t *oid_size) { int result; @@ -2820,7 +2742,6 @@ gnutls_x509_crt_get_extension_oid(gnutls_x509_crt_t cert, unsigned indx, } return 0; - } /** @@ -2848,10 +2769,9 @@ gnutls_x509_crt_get_extension_oid(gnutls_x509_crt_t cert, unsigned indx, * last extension available %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE * will be returned. **/ -int -gnutls_x509_crt_get_extension_info(gnutls_x509_crt_t cert, unsigned indx, - void *oid, size_t *oid_size, - unsigned int *critical) +int gnutls_x509_crt_get_extension_info(gnutls_x509_crt_t cert, unsigned indx, + void *oid, size_t *oid_size, + unsigned int *critical) { int result; char str_critical[10]; @@ -2863,8 +2783,8 @@ gnutls_x509_crt_get_extension_info(gnutls_x509_crt_t cert, unsigned indx, return GNUTLS_E_INVALID_REQUEST; } - snprintf(name, sizeof(name), - "tbsCertificate.extensions.?%u.extnID", indx + 1); + snprintf(name, sizeof(name), "tbsCertificate.extensions.?%u.extnID", + indx + 1); len = *oid_size; result = asn1_read_value(cert->cert, name, oid, &len); @@ -2878,7 +2798,7 @@ gnutls_x509_crt_get_extension_info(gnutls_x509_crt_t cert, unsigned indx, } /* remove any trailing null */ - if (oid && len > 0 && ((uint8_t *) oid)[len - 1] == 0) + if (oid && len > 0 && ((uint8_t *)oid)[len - 1] == 0) (*oid_size)--; if (critical) { @@ -2898,7 +2818,6 @@ gnutls_x509_crt_get_extension_info(gnutls_x509_crt_t cert, unsigned indx, } return 0; - } /** @@ -2922,9 +2841,8 @@ gnutls_x509_crt_get_extension_info(gnutls_x509_crt_t cert, unsigned indx, * last extension available %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE * will be returned. **/ -int -gnutls_x509_crt_get_extension_data(gnutls_x509_crt_t cert, unsigned indx, - void *data, size_t *sizeof_data) +int gnutls_x509_crt_get_extension_data(gnutls_x509_crt_t cert, unsigned indx, + void *data, size_t *sizeof_data) { int result, len; char name[MAX_NAME_SIZE]; @@ -2934,8 +2852,8 @@ gnutls_x509_crt_get_extension_data(gnutls_x509_crt_t cert, unsigned indx, return GNUTLS_E_INVALID_REQUEST; } - snprintf(name, sizeof(name), - "tbsCertificate.extensions.?%u.extnValue", indx + 1); + snprintf(name, sizeof(name), "tbsCertificate.extensions.?%u.extnValue", + indx + 1); len = *sizeof_data; result = asn1_read_value(cert->cert, name, data, &len); @@ -2968,16 +2886,15 @@ gnutls_x509_crt_get_extension_data(gnutls_x509_crt_t cert, unsigned indx, * negative error value.or a negative error code on error. * **/ -int -gnutls_x509_crt_get_raw_issuer_dn(gnutls_x509_crt_t cert, gnutls_datum_t * dn) +int gnutls_x509_crt_get_raw_issuer_dn(gnutls_x509_crt_t cert, + gnutls_datum_t *dn) { if (cert->raw_issuer_dn.size > 0 && cert->modified == 0) { return _gnutls_set_datum(dn, cert->raw_issuer_dn.data, cert->raw_issuer_dn.size); } else { - return _gnutls_x509_get_raw_field(cert->cert, - "tbsCertificate.issuer.rdnSequence", - dn); + return _gnutls_x509_get_raw_field( + cert->cert, "tbsCertificate.issuer.rdnSequence", dn); } } @@ -2993,21 +2910,19 @@ gnutls_x509_crt_get_raw_issuer_dn(gnutls_x509_crt_t cert, gnutls_datum_t * dn) * negative error value. or a negative error code on error. * **/ -int gnutls_x509_crt_get_raw_dn(gnutls_x509_crt_t cert, gnutls_datum_t * dn) +int gnutls_x509_crt_get_raw_dn(gnutls_x509_crt_t cert, gnutls_datum_t *dn) { if (cert->raw_dn.size > 0 && cert->modified == 0) { return _gnutls_set_datum(dn, cert->raw_dn.data, cert->raw_dn.size); } else { - return _gnutls_x509_get_raw_field(cert->cert, - "tbsCertificate.subject.rdnSequence", - dn); + return _gnutls_x509_get_raw_field( + cert->cert, "tbsCertificate.subject.rdnSequence", dn); } } -static int -get_dn(gnutls_x509_crt_t cert, const char *whom, gnutls_x509_dn_t * dn, - unsigned subject) +static int get_dn(gnutls_x509_crt_t cert, const char *whom, + gnutls_x509_dn_t *dn, unsigned subject) { gnutls_x509_dn_st *store; @@ -3039,7 +2954,7 @@ get_dn(gnutls_x509_crt_t cert, const char *whom, gnutls_x509_dn_t * dn, * * Returns: Returns 0 on success, or an error code. **/ -int gnutls_x509_crt_get_subject(gnutls_x509_crt_t cert, gnutls_x509_dn_t * dn) +int gnutls_x509_crt_get_subject(gnutls_x509_crt_t cert, gnutls_x509_dn_t *dn) { return get_dn(cert, "tbsCertificate.subject.rdnSequence", dn, 1); } @@ -3058,7 +2973,7 @@ int gnutls_x509_crt_get_subject(gnutls_x509_crt_t cert, gnutls_x509_dn_t * dn) * * Returns: Returns 0 on success, or an error code. **/ -int gnutls_x509_crt_get_issuer(gnutls_x509_crt_t cert, gnutls_x509_dn_t * dn) +int gnutls_x509_crt_get_issuer(gnutls_x509_crt_t cert, gnutls_x509_dn_t *dn) { return get_dn(cert, "tbsCertificate.issuer.rdnSequence", dn, 0); } @@ -3080,10 +2995,9 @@ int gnutls_x509_crt_get_issuer(gnutls_x509_crt_t cert, gnutls_x509_dn_t * dn) * not long enough, and in that case the *buf_size will be updated * with the required size. On success 0 is returned. **/ -int -gnutls_x509_crt_get_fingerprint(gnutls_x509_crt_t cert, - gnutls_digest_algorithm_t algo, - void *buf, size_t *buf_size) +int gnutls_x509_crt_get_fingerprint(gnutls_x509_crt_t cert, + gnutls_digest_algorithm_t algo, void *buf, + size_t *buf_size) { uint8_t *cert_buf; int cert_buf_size; @@ -3108,7 +3022,7 @@ gnutls_x509_crt_get_fingerprint(gnutls_x509_crt_t cert, } result = - asn1_der_coding(cert->cert, "", cert_buf, &cert_buf_size, NULL); + asn1_der_coding(cert->cert, "", cert_buf, &cert_buf_size, NULL); if (result != ASN1_SUCCESS) { gnutls_assert(); @@ -3145,10 +3059,8 @@ gnutls_x509_crt_get_fingerprint(gnutls_x509_crt_t cert, * Returns: In case of failure a negative error code will be * returned, and 0 on success. **/ -int -gnutls_x509_crt_export(gnutls_x509_crt_t cert, - gnutls_x509_crt_fmt_t format, void *output_data, - size_t *output_data_size) +int gnutls_x509_crt_export(gnutls_x509_crt_t cert, gnutls_x509_crt_fmt_t format, + void *output_data, size_t *output_data_size) { gnutls_datum_t out; int ret; @@ -3158,20 +3070,18 @@ gnutls_x509_crt_export(gnutls_x509_crt_t cert, return gnutls_assert_val(ret); if (format == GNUTLS_X509_FMT_PEM) - ret = - _gnutls_copy_string(&out, (uint8_t *) output_data, - output_data_size); + ret = _gnutls_copy_string(&out, (uint8_t *)output_data, + output_data_size); else - ret = - _gnutls_copy_data(&out, (uint8_t *) output_data, - output_data_size); + ret = _gnutls_copy_data(&out, (uint8_t *)output_data, + output_data_size); if (ret < 0) { gnutls_assert(); goto cleanup; } ret = 0; - cleanup: +cleanup: gnutls_free(out.data); return ret; } @@ -3193,9 +3103,8 @@ gnutls_x509_crt_export(gnutls_x509_crt_t cert, * * Since: 3.1.3 **/ -int -gnutls_x509_crt_export2(gnutls_x509_crt_t cert, - gnutls_x509_crt_fmt_t format, gnutls_datum_t * out) +int gnutls_x509_crt_export2(gnutls_x509_crt_t cert, + gnutls_x509_crt_fmt_t format, gnutls_datum_t *out) { if (cert == NULL) { gnutls_assert(); @@ -3209,8 +3118,7 @@ gnutls_x509_crt_export2(gnutls_x509_crt_t cert, else { int ret = _gnutls_fbase64_encode(PEM_X509_CERT2, cert->der.data, - cert->der.size, - out); + cert->der.size, out); if (ret < 0) return ret; return 0; @@ -3221,18 +3129,16 @@ gnutls_x509_crt_export2(gnutls_x509_crt_t cert, out); } -int -_gnutls_get_key_id(gnutls_pk_params_st * params, - unsigned char *output_data, size_t *output_data_size, - unsigned flags) +int _gnutls_get_key_id(gnutls_pk_params_st *params, unsigned char *output_data, + size_t *output_data_size, unsigned flags) { int ret = 0; gnutls_datum_t der = { NULL, 0 }; gnutls_digest_algorithm_t hash = GNUTLS_DIG_SHA1; unsigned int digest_len; - if ((flags & GNUTLS_KEYID_USE_SHA512) - || (flags & GNUTLS_KEYID_USE_BEST_KNOWN)) + if ((flags & GNUTLS_KEYID_USE_SHA512) || + (flags & GNUTLS_KEYID_USE_BEST_KNOWN)) hash = GNUTLS_DIG_SHA512; else if (flags & GNUTLS_KEYID_USE_SHA256) hash = GNUTLS_DIG_SHA256; @@ -3258,7 +3164,7 @@ _gnutls_get_key_id(gnutls_pk_params_st * params, ret = 0; - cleanup: +cleanup: _gnutls_free_datum(&der); return ret; @@ -3284,9 +3190,9 @@ _gnutls_get_key_id(gnutls_pk_params_st * params, * Returns: In case of failure a negative error code will be * returned, and 0 on success. **/ -int -gnutls_x509_crt_get_key_id(gnutls_x509_crt_t crt, unsigned int flags, - unsigned char *output_data, size_t *output_data_size) +int gnutls_x509_crt_get_key_id(gnutls_x509_crt_t crt, unsigned int flags, + unsigned char *output_data, + size_t *output_data_size) { int ret = 0; gnutls_pk_params_st params; @@ -3312,8 +3218,8 @@ gnutls_x509_crt_get_key_id(gnutls_x509_crt_t crt, unsigned int flags, static int crl_issuer_matches(gnutls_x509_crl_t crl, gnutls_x509_crt_t cert) { - if (_gnutls_x509_compare_raw_dn - (&crl->raw_issuer_dn, &cert->raw_issuer_dn) != 0) + if (_gnutls_x509_compare_raw_dn(&crl->raw_issuer_dn, + &cert->raw_issuer_dn) != 0) return 1; else return 0; @@ -3322,11 +3228,10 @@ static int crl_issuer_matches(gnutls_x509_crl_t crl, gnutls_x509_crt_t cert) /* This is exactly as gnutls_x509_crt_check_revocation() except that * it calls func. */ -int -_gnutls_x509_crt_check_revocation(gnutls_x509_crt_t cert, - const gnutls_x509_crl_t * crl_list, - int crl_list_length, - gnutls_verify_output_function func) +int _gnutls_x509_crt_check_revocation(gnutls_x509_crt_t cert, + const gnutls_x509_crl_t *crl_list, + int crl_list_length, + gnutls_verify_output_function func) { uint8_t serial[128]; uint8_t cert_serial[128]; @@ -3339,7 +3244,7 @@ _gnutls_x509_crt_check_revocation(gnutls_x509_crt_t cert, return GNUTLS_E_INVALID_REQUEST; } - for (j = 0; j < crl_list_length; j++) { /* do for all the crls */ + for (j = 0; j < crl_list_length; j++) { /* do for all the crls */ /* Step 1. check if issuer's DN match */ @@ -3355,9 +3260,8 @@ _gnutls_x509_crt_check_revocation(gnutls_x509_crt_t cert, /* Step 2. Read the certificate's serial number */ cert_serial_size = sizeof(cert_serial); - ret = - gnutls_x509_crt_get_serial(cert, cert_serial, - &cert_serial_size); + ret = gnutls_x509_crt_get_serial(cert, cert_serial, + &cert_serial_size); if (ret < 0) { gnutls_assert(); return ret; @@ -3370,11 +3274,8 @@ _gnutls_x509_crt_check_revocation(gnutls_x509_crt_t cert, iter = NULL; do { serial_size = sizeof(serial); - ret = - gnutls_x509_crl_iter_crt_serial(crl_list[j], - &iter, - serial, - &serial_size, NULL); + ret = gnutls_x509_crl_iter_crt_serial( + crl_list[j], &iter, serial, &serial_size, NULL); if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { break; } else if (ret < 0) { @@ -3383,15 +3284,14 @@ _gnutls_x509_crt_check_revocation(gnutls_x509_crt_t cert, } if (serial_size == cert_serial_size) { - if (memcmp - (serial, cert_serial, serial_size) == 0) { + if (memcmp(serial, cert_serial, serial_size) == + 0) { /* serials match */ if (func) - func(cert, NULL, - crl_list[j], + func(cert, NULL, crl_list[j], GNUTLS_CERT_REVOKED | - GNUTLS_CERT_INVALID); - ret = 1; /* revoked! */ + GNUTLS_CERT_INVALID); + ret = 1; /* revoked! */ goto fail; } } @@ -3402,11 +3302,10 @@ _gnutls_x509_crt_check_revocation(gnutls_x509_crt_t cert, if (func) func(cert, NULL, crl_list[j], 0); - } - return 0; /* not revoked. */ + return 0; /* not revoked. */ - fail: +fail: gnutls_x509_crl_iter_deinit(iter); return ret; } @@ -3423,10 +3322,9 @@ _gnutls_x509_crt_check_revocation(gnutls_x509_crt_t cert, * Returns: 0 if the certificate is NOT revoked, and 1 if it is. A * negative error code is returned on error. **/ -int -gnutls_x509_crt_check_revocation(gnutls_x509_crt_t cert, - const gnutls_x509_crl_t * crl_list, - unsigned crl_list_length) +int gnutls_x509_crt_check_revocation(gnutls_x509_crt_t cert, + const gnutls_x509_crl_t *crl_list, + unsigned crl_list_length) { return _gnutls_x509_crt_check_revocation(cert, crl_list, crl_list_length, NULL); @@ -3446,13 +3344,11 @@ gnutls_x509_crt_check_revocation(gnutls_x509_crt_t cert, * * Since: 3.5.6 **/ -unsigned -gnutls_x509_crt_check_key_purpose(gnutls_x509_crt_t cert, - const char *purpose, unsigned flags) +unsigned gnutls_x509_crt_check_key_purpose(gnutls_x509_crt_t cert, + const char *purpose, unsigned flags) { - return _gnutls_check_key_purpose(cert, purpose, - (flags & GNUTLS_KP_FLAG_DISALLOW_ANY) ? - 1 : 0); + return _gnutls_check_key_purpose( + cert, purpose, (flags & GNUTLS_KP_FLAG_DISALLOW_ANY) ? 1 : 0); } /** @@ -3472,10 +3368,9 @@ gnutls_x509_crt_check_key_purpose(gnutls_x509_crt_t cert, * * Since: 2.12.0 **/ -int -gnutls_x509_crt_get_preferred_hash_algorithm(gnutls_x509_crt_t crt, - gnutls_digest_algorithm_t * - hash, unsigned int *mand) +int gnutls_x509_crt_get_preferred_hash_algorithm(gnutls_x509_crt_t crt, + gnutls_digest_algorithm_t *hash, + unsigned int *mand) { int ret; gnutls_pubkey_t pubkey; @@ -3501,7 +3396,7 @@ gnutls_x509_crt_get_preferred_hash_algorithm(gnutls_x509_crt_t crt, goto cleanup; } - cleanup: +cleanup: gnutls_pubkey_deinit(pubkey); return ret; } @@ -3527,12 +3422,11 @@ gnutls_x509_crt_get_preferred_hash_algorithm(gnutls_x509_crt_t crt, * sequence number then %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE is * returned. **/ -int -gnutls_x509_crt_get_crl_dist_points(gnutls_x509_crt_t cert, - unsigned int seq, void *san, - size_t *san_size, - unsigned int *reason_flags, - unsigned int *critical) +int gnutls_x509_crt_get_crl_dist_points(gnutls_x509_crt_t cert, + unsigned int seq, void *san, + size_t *san_size, + unsigned int *reason_flags, + unsigned int *critical) { int ret; gnutls_datum_t dist_points = { NULL, 0 }; @@ -3552,9 +3446,8 @@ gnutls_x509_crt_get_crl_dist_points(gnutls_x509_crt_t cert, if (reason_flags) *reason_flags = 0; - ret = - _gnutls_x509_crt_get_extension(cert, "2.5.29.31", 0, - &dist_points, critical); + ret = _gnutls_x509_crt_get_extension(cert, "2.5.29.31", 0, &dist_points, + critical); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -3572,9 +3465,8 @@ gnutls_x509_crt_get_crl_dist_points(gnutls_x509_crt_t cert, goto cleanup; } - ret = - gnutls_x509_crl_dist_points_get(cdp, seq, &type, &t_san, - reason_flags); + ret = gnutls_x509_crl_dist_points_get(cdp, seq, &type, &t_san, + reason_flags); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -3588,7 +3480,7 @@ gnutls_x509_crt_get_crl_dist_points(gnutls_x509_crt_t cert, ret = type; - cleanup: +cleanup: _gnutls_free_datum(&dist_points); if (cdp != NULL) gnutls_x509_crl_dist_points_deinit(cdp); @@ -3617,10 +3509,9 @@ gnutls_x509_crt_get_crl_dist_points(gnutls_x509_crt_t cert, * not long enough, and in that case the *oid_size will be updated * with the required size. On success 0 is returned. **/ -int -gnutls_x509_crt_get_key_purpose_oid(gnutls_x509_crt_t cert, - unsigned indx, void *oid, size_t *oid_size, - unsigned int *critical) +int gnutls_x509_crt_get_key_purpose_oid(gnutls_x509_crt_t cert, unsigned indx, + void *oid, size_t *oid_size, + unsigned int *critical) { int ret; gnutls_datum_t ext; @@ -3637,9 +3528,8 @@ gnutls_x509_crt_get_key_purpose_oid(gnutls_x509_crt_t cert, else *oid_size = 0; - if ((ret = - _gnutls_x509_crt_get_extension(cert, "2.5.29.37", 0, &ext, - critical)) < 0) { + if ((ret = _gnutls_x509_crt_get_extension(cert, "2.5.29.37", 0, &ext, + critical)) < 0) { return ret; } @@ -3674,7 +3564,7 @@ gnutls_x509_crt_get_key_purpose_oid(gnutls_x509_crt_t cert, ret = 0; - cleanup: +cleanup: gnutls_free(ext.data); if (p != NULL) gnutls_x509_key_purpose_deinit(p); @@ -3693,9 +3583,8 @@ gnutls_x509_crt_get_key_purpose_oid(gnutls_x509_crt_t cert, * * Returns: %GNUTLS_E_SUCCESS on success, otherwise a negative error code. **/ -int -gnutls_x509_crt_get_pk_rsa_raw(gnutls_x509_crt_t crt, - gnutls_datum_t * m, gnutls_datum_t * e) +int gnutls_x509_crt_get_pk_rsa_raw(gnutls_x509_crt_t crt, gnutls_datum_t *m, + gnutls_datum_t *e) { int ret; gnutls_pubkey_t pubkey; @@ -3721,7 +3610,7 @@ gnutls_x509_crt_get_pk_rsa_raw(gnutls_x509_crt_t crt, goto cleanup; } - cleanup: +cleanup: gnutls_pubkey_deinit(pubkey); return ret; } @@ -3744,10 +3633,9 @@ gnutls_x509_crt_get_pk_rsa_raw(gnutls_x509_crt_t crt, * * Since: 3.4.1 **/ -int -gnutls_x509_crt_get_pk_ecc_raw(gnutls_x509_crt_t crt, - gnutls_ecc_curve_t * curve, - gnutls_datum_t * x, gnutls_datum_t * y) +int gnutls_x509_crt_get_pk_ecc_raw(gnutls_x509_crt_t crt, + gnutls_ecc_curve_t *curve, gnutls_datum_t *x, + gnutls_datum_t *y) { int ret; gnutls_pubkey_t pubkey; @@ -3773,7 +3661,7 @@ gnutls_x509_crt_get_pk_ecc_raw(gnutls_x509_crt_t crt, goto cleanup; } - cleanup: +cleanup: gnutls_pubkey_deinit(pubkey); return ret; } @@ -3795,12 +3683,11 @@ gnutls_x509_crt_get_pk_ecc_raw(gnutls_x509_crt_t crt, * * Since: 3.6.3 **/ -int -gnutls_x509_crt_get_pk_gost_raw(gnutls_x509_crt_t crt, - gnutls_ecc_curve_t * curve, - gnutls_digest_algorithm_t * digest, - gnutls_gost_paramset_t * paramset, - gnutls_datum_t * x, gnutls_datum_t * y) +int gnutls_x509_crt_get_pk_gost_raw(gnutls_x509_crt_t crt, + gnutls_ecc_curve_t *curve, + gnutls_digest_algorithm_t *digest, + gnutls_gost_paramset_t *paramset, + gnutls_datum_t *x, gnutls_datum_t *y) { int ret; gnutls_pubkey_t pubkey; @@ -3820,14 +3707,14 @@ gnutls_x509_crt_get_pk_gost_raw(gnutls_x509_crt_t crt, goto cleanup; } - ret = gnutls_pubkey_export_gost_raw2(pubkey, curve, digest, - paramset, x, y, 0); + ret = gnutls_pubkey_export_gost_raw2(pubkey, curve, digest, paramset, x, + y, 0); if (ret < 0) { gnutls_assert(); goto cleanup; } - cleanup: +cleanup: gnutls_pubkey_deinit(pubkey); return ret; } @@ -3846,10 +3733,9 @@ gnutls_x509_crt_get_pk_gost_raw(gnutls_x509_crt_t crt, * * Returns: %GNUTLS_E_SUCCESS on success, otherwise a negative error code. **/ -int -gnutls_x509_crt_get_pk_dsa_raw(gnutls_x509_crt_t crt, - gnutls_datum_t * p, gnutls_datum_t * q, - gnutls_datum_t * g, gnutls_datum_t * y) +int gnutls_x509_crt_get_pk_dsa_raw(gnutls_x509_crt_t crt, gnutls_datum_t *p, + gnutls_datum_t *q, gnutls_datum_t *g, + gnutls_datum_t *y) { int ret; gnutls_pubkey_t pubkey; @@ -3875,7 +3761,7 @@ gnutls_x509_crt_get_pk_dsa_raw(gnutls_x509_crt_t crt, goto cleanup; } - cleanup: +cleanup: gnutls_pubkey_deinit(pubkey); return ret; } @@ -3902,11 +3788,10 @@ gnutls_x509_crt_get_pk_dsa_raw(gnutls_x509_crt_t crt, * * Since: 3.0 **/ -int -gnutls_x509_crt_list_import2(gnutls_x509_crt_t ** certs, - unsigned int *size, - const gnutls_datum_t * data, - gnutls_x509_crt_fmt_t format, unsigned int flags) +int gnutls_x509_crt_list_import2(gnutls_x509_crt_t **certs, unsigned int *size, + const gnutls_datum_t *data, + gnutls_x509_crt_fmt_t format, + unsigned int flags) { unsigned int init = 1024; int ret; @@ -3917,10 +3802,9 @@ gnutls_x509_crt_list_import2(gnutls_x509_crt_t ** certs, return GNUTLS_E_MEMORY_ERROR; } - ret = - gnutls_x509_crt_list_import(*certs, &init, data, format, - flags | - GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED); + ret = gnutls_x509_crt_list_import( + *certs, &init, data, format, + flags | GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED); if (ret == GNUTLS_E_SHORT_MEMORY_BUFFER) { *certs = _gnutls_reallocarray_fast(*certs, init, sizeof(gnutls_x509_crt_t)); @@ -3929,9 +3813,8 @@ gnutls_x509_crt_list_import2(gnutls_x509_crt_t ** certs, return GNUTLS_E_MEMORY_ERROR; } - ret = - gnutls_x509_crt_list_import(*certs, &init, data, - format, flags); + ret = gnutls_x509_crt_list_import(*certs, &init, data, format, + flags); } if (ret < 0) { @@ -3966,11 +3849,11 @@ gnutls_x509_crt_list_import2(gnutls_x509_crt_t ** certs, * * Returns: the number of certificates read or a negative error value. **/ -int -gnutls_x509_crt_list_import(gnutls_x509_crt_t * certs, - unsigned int *cert_max, - const gnutls_datum_t * data, - gnutls_x509_crt_fmt_t format, unsigned int flags) +int gnutls_x509_crt_list_import(gnutls_x509_crt_t *certs, + unsigned int *cert_max, + const gnutls_datum_t *data, + gnutls_x509_crt_fmt_t format, + unsigned int flags) { int size; const char *ptr; @@ -3984,7 +3867,7 @@ gnutls_x509_crt_list_import(gnutls_x509_crt_t * certs, return GNUTLS_E_SHORT_MEMORY_BUFFER; } - count = 1; /* import only the first one */ + count = 1; /* import only the first one */ ret = gnutls_x509_crt_init(&certs[0]); if (ret < 0) { @@ -4004,11 +3887,11 @@ gnutls_x509_crt_list_import(gnutls_x509_crt_t * certs, /* move to the certificate */ - ptr = memmem(data->data, data->size, - PEM_CERT_SEP, sizeof(PEM_CERT_SEP) - 1); + ptr = memmem(data->data, data->size, PEM_CERT_SEP, + sizeof(PEM_CERT_SEP) - 1); if (ptr == NULL) - ptr = memmem(data->data, data->size, - PEM_CERT_SEP2, sizeof(PEM_CERT_SEP2) - 1); + ptr = memmem(data->data, data->size, PEM_CERT_SEP2, + sizeof(PEM_CERT_SEP2) - 1); if (ptr == NULL) return gnutls_assert_val(GNUTLS_E_NO_CERTIFICATE_FOUND); @@ -4017,9 +3900,8 @@ gnutls_x509_crt_list_import(gnutls_x509_crt_t * certs, do { if (count >= *cert_max) { - if (! - (flags & - GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED)) + if (!(flags & + GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED)) break; else nocopy = 1; @@ -4035,9 +3917,8 @@ gnutls_x509_crt_list_import(gnutls_x509_crt_t * certs, tmp.data = (void *)ptr; tmp.size = data->size - (ptr - (char *)data->data); - ret = - gnutls_x509_crt_import(certs[count], &tmp, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(certs[count], &tmp, + GNUTLS_X509_FMT_PEM); if (ret < 0) { count++; gnutls_assert(); @@ -4057,9 +3938,8 @@ gnutls_x509_crt_list_import(gnutls_x509_crt_t * certs, if (size > 0) { char *ptr2; - ptr2 = - memmem(ptr, size, PEM_CERT_SEP, - sizeof(PEM_CERT_SEP) - 1); + ptr2 = memmem(ptr, size, PEM_CERT_SEP, + sizeof(PEM_CERT_SEP) - 1); if (ptr2 == NULL) ptr2 = memmem(ptr, size, PEM_CERT_SEP2, sizeof(PEM_CERT_SEP2) - 1); @@ -4069,8 +3949,7 @@ gnutls_x509_crt_list_import(gnutls_x509_crt_t * certs, ptr = NULL; count++; - } - while (ptr != NULL); + } while (ptr != NULL); *cert_max = count; @@ -4103,7 +3982,7 @@ gnutls_x509_crt_list_import(gnutls_x509_crt_t * certs, ret = GNUTLS_E_SHORT_MEMORY_BUFFER; } - error: +error: for (j = 0; j < count; j++) gnutls_x509_crt_deinit(certs[j]); return ret; @@ -4130,20 +4009,18 @@ gnutls_x509_crt_list_import(gnutls_x509_crt_t * certs, * * Returns: %GNUTLS_E_SUCCESS on success, otherwise a negative error code. **/ -int -gnutls_x509_crt_get_subject_unique_id(gnutls_x509_crt_t crt, char *buf, - size_t *buf_size) +int gnutls_x509_crt_get_subject_unique_id(gnutls_x509_crt_t crt, char *buf, + size_t *buf_size) { int result; gnutls_datum_t datum = { NULL, 0 }; - result = - _gnutls_x509_read_value(crt->cert, - "tbsCertificate.subjectUniqueID", &datum); + result = _gnutls_x509_read_value( + crt->cert, "tbsCertificate.subjectUniqueID", &datum); if (result < 0) return gnutls_assert_val(result); - if (datum.size > *buf_size) { /* then we're not going to fit */ + if (datum.size > *buf_size) { /* then we're not going to fit */ *buf_size = datum.size; result = GNUTLS_E_SHORT_MEMORY_BUFFER; } else { @@ -4179,20 +4056,18 @@ gnutls_x509_crt_get_subject_unique_id(gnutls_x509_crt_t crt, char *buf, * * Since: 2.12.0 **/ -int -gnutls_x509_crt_get_issuer_unique_id(gnutls_x509_crt_t crt, char *buf, - size_t *buf_size) +int gnutls_x509_crt_get_issuer_unique_id(gnutls_x509_crt_t crt, char *buf, + size_t *buf_size) { int result; gnutls_datum_t datum = { NULL, 0 }; - result = - _gnutls_x509_read_value(crt->cert, - "tbsCertificate.issuerUniqueID", &datum); + result = _gnutls_x509_read_value( + crt->cert, "tbsCertificate.issuerUniqueID", &datum); if (result < 0) return gnutls_assert_val(result); - if (datum.size > *buf_size) { /* then we're not going to fit */ + if (datum.size > *buf_size) { /* then we're not going to fit */ *buf_size = datum.size; result = GNUTLS_E_SHORT_MEMORY_BUFFER; } else { @@ -4205,9 +4080,8 @@ gnutls_x509_crt_get_issuer_unique_id(gnutls_x509_crt_t crt, char *buf, return result; } -static int -legacy_parse_aia(asn1_node src, - unsigned int seq, int what, gnutls_datum_t * data) +static int legacy_parse_aia(asn1_node src, unsigned int seq, int what, + gnutls_datum_t *data) { int len; char nptr[MAX_NAME_SIZE]; @@ -4215,7 +4089,7 @@ legacy_parse_aia(asn1_node src, gnutls_datum_t d; const char *oid = NULL; - seq++; /* 0->1, 1->2 etc */ + seq++; /* 0->1, 1->2 etc */ switch (what) { case GNUTLS_IA_ACCESSMETHOD_OID: snprintf(nptr, sizeof(nptr), "?%u.accessMethod", seq); @@ -4238,21 +4112,19 @@ legacy_parse_aia(asn1_node src, len = sizeof(tmpoid); result = asn1_read_value(src, nptr, tmpoid, &len); - if (result == ASN1_VALUE_NOT_FOUND - || result == ASN1_ELEMENT_NOT_FOUND) - return - gnutls_assert_val - (GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); + if (result == ASN1_VALUE_NOT_FOUND || + result == ASN1_ELEMENT_NOT_FOUND) + return gnutls_assert_val( + GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } - if ((unsigned)len != strlen(oid) + 1 - || memcmp(tmpoid, oid, len) != 0) - return - gnutls_assert_val - (GNUTLS_E_UNKNOWN_ALGORITHM); + if ((unsigned)len != strlen(oid) + 1 || + memcmp(tmpoid, oid, len) != 0) + return gnutls_assert_val( + GNUTLS_E_UNKNOWN_ALGORITHM); } FALLTHROUGH; @@ -4363,12 +4235,10 @@ legacy_parse_aia(asn1_node src, * * Since: 3.0 **/ -int -gnutls_x509_crt_get_authority_info_access(gnutls_x509_crt_t crt, - unsigned int seq, - int what, - gnutls_datum_t * data, - unsigned int *critical) +int gnutls_x509_crt_get_authority_info_access(gnutls_x509_crt_t crt, + unsigned int seq, int what, + gnutls_datum_t *data, + unsigned int *critical) { int ret; gnutls_datum_t aia; @@ -4379,9 +4249,8 @@ gnutls_x509_crt_get_authority_info_access(gnutls_x509_crt_t crt, return GNUTLS_E_INVALID_REQUEST; } - if ((ret = - _gnutls_x509_crt_get_extension(crt, GNUTLS_OID_AIA, 0, &aia, - critical)) < 0) + if ((ret = _gnutls_x509_crt_get_extension(crt, GNUTLS_OID_AIA, 0, &aia, + critical)) < 0) return ret; if (aia.size == 0 || aia.data == NULL) { @@ -4461,21 +4330,18 @@ void gnutls_x509_crt_set_pin_function(gnutls_x509_crt_t crt, * * Since: 3.4.0 **/ -int -gnutls_x509_crt_import_url(gnutls_x509_crt_t crt, - const char *url, unsigned int flags) +int gnutls_x509_crt_import_url(gnutls_x509_crt_t crt, const char *url, + unsigned int flags) { int ret; unsigned i; for (i = 0; i < _gnutls_custom_urls_size; i++) { - if (strncmp - (url, _gnutls_custom_urls[i].name, - _gnutls_custom_urls[i].name_size) == 0) { + if (strncmp(url, _gnutls_custom_urls[i].name, + _gnutls_custom_urls[i].name_size) == 0) { if (_gnutls_custom_urls[i].import_crt) { - ret = - _gnutls_custom_urls[i].import_crt(crt, url, - flags); + ret = _gnutls_custom_urls[i].import_crt( + crt, url, flags); goto cleanup; } break; @@ -4492,7 +4358,7 @@ gnutls_x509_crt_import_url(gnutls_x509_crt_t crt, ret = gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); } - cleanup: +cleanup: return ret; } @@ -4519,12 +4385,10 @@ gnutls_x509_crt_import_url(gnutls_x509_crt_t crt, * * Since: 3.6.3 **/ -int -gnutls_x509_crt_list_import_url(gnutls_x509_crt_t ** certs, - unsigned int *size, - const char *url, - gnutls_pin_callback_t pin_fn, - void *pin_fn_userdata, unsigned int flags) +int gnutls_x509_crt_list_import_url(gnutls_x509_crt_t **certs, + unsigned int *size, const char *url, + gnutls_pin_callback_t pin_fn, + void *pin_fn_userdata, unsigned int flags) { int ret; unsigned i; @@ -4549,10 +4413,9 @@ gnutls_x509_crt_list_import_url(gnutls_x509_crt_t ** certs, } for (i = 1; i < DEFAULT_MAX_VERIFY_DEPTH; i++) { - ret = - _gnutls_get_raw_issuer(url, crts[i - 1], &issuer, - flags | - GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_ANY); + ret = _gnutls_get_raw_issuer( + url, crts[i - 1], &issuer, + flags | GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_ANY); if (ret < 0) { issuer.data = NULL; break; @@ -4574,9 +4437,8 @@ gnutls_x509_crt_list_import_url(gnutls_x509_crt_t ** certs, gnutls_x509_crt_set_pin_function(crts[i], pin_fn, pin_fn_userdata); - ret = - gnutls_x509_crt_import(crts[i], &issuer, - GNUTLS_X509_FMT_DER); + ret = gnutls_x509_crt_import(crts[i], &issuer, + GNUTLS_X509_FMT_DER); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -4595,7 +4457,7 @@ gnutls_x509_crt_list_import_url(gnutls_x509_crt_t ** certs, *size = total; return 0; - cleanup: +cleanup: gnutls_free(issuer.data); for (i = 0; i < total; i++) gnutls_x509_crt_deinit(crts[i]); @@ -4620,14 +4482,13 @@ gnutls_x509_crt_list_import_url(gnutls_x509_crt_t ** certs, * * Since: 3.5.6 -*/ -int -gnutls_x509_crt_verify_data3(gnutls_x509_crt_t crt, - gnutls_sign_algorithm_t algo, - gnutls_typed_vdata_st * vdata, - unsigned int vdata_size, - const gnutls_datum_t * data, - const gnutls_datum_t * signature, - unsigned int flags) +int gnutls_x509_crt_verify_data3(gnutls_x509_crt_t crt, + gnutls_sign_algorithm_t algo, + gnutls_typed_vdata_st *vdata, + unsigned int vdata_size, + const gnutls_datum_t *data, + const gnutls_datum_t *signature, + unsigned int flags) { int ret; gnutls_pubkey_t pubkey; @@ -4660,30 +4521,26 @@ gnutls_x509_crt_verify_data3(gnutls_x509_crt_t crt, } if (now < gnutls_x509_crt_get_activation_time(crt)) { - return - gnutls_assert_val - (GNUTLS_E_NOT_YET_ACTIVATED); + return gnutls_assert_val( + GNUTLS_E_NOT_YET_ACTIVATED); } } res = gnutls_x509_crt_get_key_usage(crt, &usage, NULL); if (res >= 0) { if (!(usage & GNUTLS_KEY_DIGITAL_SIGNATURE)) { - return - gnutls_assert_val - (GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE); + return gnutls_assert_val( + GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE); } } for (i = 0; i < vdata_size; i++) { if (vdata[i].type == GNUTLS_DT_KEY_PURPOSE_OID) { - res = _gnutls_check_key_purpose(crt, (char *) - vdata[i].data, - 0); + res = _gnutls_check_key_purpose( + crt, (char *)vdata[i].data, 0); if (res == 0) - return - gnutls_assert_val - (GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE); + return gnutls_assert_val( + GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE); break; } } @@ -4712,15 +4569,13 @@ gnutls_x509_crt_verify_data3(gnutls_x509_crt_t crt, * * Since: 3.4.0 **/ -int -gnutls_x509_crt_verify_data2(gnutls_x509_crt_t crt, - gnutls_sign_algorithm_t algo, - unsigned int flags, - const gnutls_datum_t * data, - const gnutls_datum_t * signature) +int gnutls_x509_crt_verify_data2(gnutls_x509_crt_t crt, + gnutls_sign_algorithm_t algo, + unsigned int flags, const gnutls_datum_t *data, + const gnutls_datum_t *signature) { - return gnutls_x509_crt_verify_data3(crt, algo, NULL, 0, - data, signature, flags); + return gnutls_x509_crt_verify_data3(crt, algo, NULL, 0, data, signature, + flags); } /** diff --git a/lib/x509/x509_dn.c b/lib/x509/x509_dn.c index a20e21e54c..83399237d8 100644 --- a/lib/x509/x509_dn.c +++ b/lib/x509/x509_dn.c @@ -35,9 +35,8 @@ typedef int (*set_dn_func)(void *, const char *oid, unsigned int raw_flag, const void *name, unsigned int name_size); -static -int dn_attr_crt_set(set_dn_func f, void *crt, const gnutls_datum_t * name, - const gnutls_datum_t * val, unsigned is_raw) +static int dn_attr_crt_set(set_dn_func f, void *crt, const gnutls_datum_t *name, + const gnutls_datum_t *val, unsigned is_raw) { char _oid[MAX_OID_SIZE]; gnutls_datum_t tmp; @@ -62,8 +61,8 @@ int dn_attr_crt_set(set_dn_func f, void *crt, const gnutls_datum_t * name, return gnutls_assert_val(GNUTLS_E_PARSING_ERROR); } } else { - oid = - _gnutls_ldap_string_to_oid((char *)name->data, name->size); + oid = _gnutls_ldap_string_to_oid((char *)name->data, + name->size); } if (oid == NULL) { @@ -88,23 +87,22 @@ int dn_attr_crt_set(set_dn_func f, void *crt, const gnutls_datum_t * name, /* unescape */ for (j = i = 0; i < tmp.size; i++) { if (1 + j != val->size && val->data[j] == '\\') { - if (val->data[j + 1] == ',' - || val->data[j + 1] == '#' - || val->data[j + 1] == ' ' - || val->data[j + 1] == '+' - || val->data[j + 1] == '"' - || val->data[j + 1] == '<' - || val->data[j + 1] == '>' - || val->data[j + 1] == ';' - || val->data[j + 1] == '\\' - || val->data[j + 1] == '=') { + if (val->data[j + 1] == ',' || + val->data[j + 1] == '#' || + val->data[j + 1] == ' ' || + val->data[j + 1] == '+' || + val->data[j + 1] == '"' || + val->data[j + 1] == '<' || + val->data[j + 1] == '>' || + val->data[j + 1] == ';' || + val->data[j + 1] == '\\' || + val->data[j + 1] == '=') { tmp.data[i] = val->data[j + 1]; j += 2; tmp.size--; } else { - ret = - gnutls_assert_val - (GNUTLS_E_PARSING_ERROR); + ret = gnutls_assert_val( + GNUTLS_E_PARSING_ERROR); goto fail; } } else { @@ -121,14 +119,13 @@ int dn_attr_crt_set(set_dn_func f, void *crt, const gnutls_datum_t * name, } ret = 0; - fail: +fail: gnutls_free(tmp.data); return ret; } -static int read_attr_and_val(const char **ptr, - gnutls_datum_t * name, gnutls_datum_t * val, - unsigned *is_raw) +static int read_attr_and_val(const char **ptr, gnutls_datum_t *name, + gnutls_datum_t *val, unsigned *is_raw) { const unsigned char *p = (void *)*ptr; @@ -162,8 +159,8 @@ static int read_attr_and_val(const char **ptr, /* Read value */ val->data = (void *)p; - while (*p != 0 && (*p != ',' || (*p == ',' && *(p - 1) == '\\')) - && *p != '\n') { + while (*p != 0 && (*p != ',' || (*p == ',' && *(p - 1) == '\\')) && + *p != '\n') { p++; } val->size = p - (val->data); @@ -198,8 +195,8 @@ typedef struct elem_list_st { struct elem_list_st *next; } elem_list_st; -static int add_new_elem(elem_list_st ** head, const gnutls_datum_t * name, - const gnutls_datum_t * val, const char *pos, +static int add_new_elem(elem_list_st **head, const gnutls_datum_t *name, + const gnutls_datum_t *val, const char *pos, unsigned is_raw) { elem_list_st *elem = gnutls_malloc(sizeof(*elem)); @@ -216,8 +213,8 @@ static int add_new_elem(elem_list_st ** head, const gnutls_datum_t * name, return 0; } -static int -crt_set_dn(set_dn_func f, void *crt, const char *dn, const char **err) +static int crt_set_dn(set_dn_func f, void *crt, const char *dn, + const char **err) { const char *p = dn; int ret; @@ -266,9 +263,8 @@ crt_set_dn(set_dn_func f, void *crt, const char *dn, const char **err) while (plist) { if (err) *err = plist->pos; - ret = - dn_attr_crt_set(f, crt, &plist->name, &plist->val, - plist->is_raw); + ret = dn_attr_crt_set(f, crt, &plist->name, &plist->val, + plist->is_raw); if (ret < 0) goto fail; @@ -276,7 +272,7 @@ crt_set_dn(set_dn_func f, void *crt, const char *dn, const char **err) } ret = 0; - fail: +fail: plist = list; while (plist) { next = plist->next; @@ -304,11 +300,11 @@ crt_set_dn(set_dn_func f, void *crt, const char *dn, const char **err) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crt_set_dn(gnutls_x509_crt_t crt, const char *dn, const char **err) +int gnutls_x509_crt_set_dn(gnutls_x509_crt_t crt, const char *dn, + const char **err) { - return crt_set_dn((set_dn_func) gnutls_x509_crt_set_dn_by_oid, crt, - dn, err); + return crt_set_dn((set_dn_func)gnutls_x509_crt_set_dn_by_oid, crt, dn, + err); } /** @@ -324,12 +320,11 @@ gnutls_x509_crt_set_dn(gnutls_x509_crt_t crt, const char *dn, const char **err) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crt_set_issuer_dn(gnutls_x509_crt_t crt, const char *dn, - const char **err) +int gnutls_x509_crt_set_issuer_dn(gnutls_x509_crt_t crt, const char *dn, + const char **err) { - return crt_set_dn((set_dn_func) - gnutls_x509_crt_set_issuer_dn_by_oid, crt, dn, err); + return crt_set_dn((set_dn_func)gnutls_x509_crt_set_issuer_dn_by_oid, + crt, dn, err); } /** @@ -345,16 +340,16 @@ gnutls_x509_crt_set_issuer_dn(gnutls_x509_crt_t crt, const char *dn, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crq_set_dn(gnutls_x509_crq_t crq, const char *dn, const char **err) +int gnutls_x509_crq_set_dn(gnutls_x509_crq_t crq, const char *dn, + const char **err) { - return crt_set_dn((set_dn_func) gnutls_x509_crq_set_dn_by_oid, crq, - dn, err); + return crt_set_dn((set_dn_func)gnutls_x509_crq_set_dn_by_oid, crq, dn, + err); } -static -int set_dn_by_oid(gnutls_x509_dn_t dn, const char *oid, unsigned int raw_flag, - const void *name, unsigned name_size) +static int set_dn_by_oid(gnutls_x509_dn_t dn, const char *oid, + unsigned int raw_flag, const void *name, + unsigned name_size) { return _gnutls_x509_set_dn_oid(dn->asn, "", oid, raw_flag, name, name_size); @@ -375,15 +370,15 @@ int set_dn_by_oid(gnutls_x509_dn_t dn, const char *oid, unsigned int raw_flag, * * Since: 3.5.3 **/ -int -gnutls_x509_dn_set_str(gnutls_x509_dn_t dn, const char *str, const char **err) +int gnutls_x509_dn_set_str(gnutls_x509_dn_t dn, const char *str, + const char **err) { if (dn == NULL) { gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; } - return crt_set_dn((set_dn_func) set_dn_by_oid, dn, str, err); + return crt_set_dn((set_dn_func)set_dn_by_oid, dn, str, err); } /** @@ -400,15 +395,14 @@ gnutls_x509_dn_set_str(gnutls_x509_dn_t dn, const char *str, const char **err) * * Since: 2.4.0 **/ -int gnutls_x509_dn_init(gnutls_x509_dn_t * dn) +int gnutls_x509_dn_init(gnutls_x509_dn_t *dn) { int result; *dn = gnutls_calloc(1, sizeof(gnutls_x509_dn_st)); - if ((result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.Name", &(*dn)->asn)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), "PKIX1.Name", + &(*dn)->asn)) != ASN1_SUCCESS) { gnutls_assert(); gnutls_free(*dn); return _gnutls_asn2err(result); @@ -432,7 +426,7 @@ int gnutls_x509_dn_init(gnutls_x509_dn_t * dn) * * Since: 2.4.0 **/ -int gnutls_x509_dn_import(gnutls_x509_dn_t dn, const gnutls_datum_t * data) +int gnutls_x509_dn_import(gnutls_x509_dn_t dn, const gnutls_datum_t *data) { int result; char err[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; @@ -486,19 +480,17 @@ void gnutls_x509_dn_deinit(gnutls_x509_dn_t dn) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_dn_export(gnutls_x509_dn_t dn, - gnutls_x509_crt_fmt_t format, void *output_data, - size_t *output_data_size) +int gnutls_x509_dn_export(gnutls_x509_dn_t dn, gnutls_x509_crt_fmt_t format, + void *output_data, size_t *output_data_size) { if (dn == NULL) { gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; } - return _gnutls_x509_export_int_named(dn->asn, "rdnSequence", - format, "NAME", - output_data, output_data_size); + return _gnutls_x509_export_int_named(dn->asn, "rdnSequence", format, + "NAME", output_data, + output_data_size); } /** @@ -519,17 +511,16 @@ gnutls_x509_dn_export(gnutls_x509_dn_t dn, * * Since: 3.1.3 **/ -int -gnutls_x509_dn_export2(gnutls_x509_dn_t dn, - gnutls_x509_crt_fmt_t format, gnutls_datum_t * out) +int gnutls_x509_dn_export2(gnutls_x509_dn_t dn, gnutls_x509_crt_fmt_t format, + gnutls_datum_t *out) { if (dn == NULL) { gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; } - return _gnutls_x509_export_int_named2(dn->asn, "rdnSequence", - format, "NAME", out); + return _gnutls_x509_export_int_named2(dn->asn, "rdnSequence", format, + "NAME", out); } /** @@ -560,9 +551,8 @@ gnutls_x509_dn_export2(gnutls_x509_dn_t dn, * * Returns: Returns 0 on success, or an error code. **/ -int -gnutls_x509_dn_get_rdn_ava(gnutls_x509_dn_t dn, - int irdn, int iava, gnutls_x509_ava_st * ava) +int gnutls_x509_dn_get_rdn_ava(gnutls_x509_dn_t dn, int irdn, int iava, + gnutls_x509_ava_st *ava) { asn1_node rdn, elem; asn1_data_node_st vnode; @@ -573,7 +563,7 @@ gnutls_x509_dn_get_rdn_ava(gnutls_x509_dn_t dn, const unsigned char *ptr; iava++; - irdn++; /* 0->1, 1->2 etc */ + irdn++; /* 0->1, 1->2 etc */ snprintf(rbuf, sizeof(rbuf), "rdnSequence.?%d.?%d", irdn, iava); rdn = asn1_find_node(dn->asn, rbuf); @@ -663,7 +653,7 @@ gnutls_x509_dn_get_rdn_ava(gnutls_x509_dn_t dn, * * Since: 3.4.2 **/ -int gnutls_x509_dn_get_str(gnutls_x509_dn_t dn, gnutls_datum_t * str) +int gnutls_x509_dn_get_str(gnutls_x509_dn_t dn, gnutls_datum_t *str) { if (dn == NULL) { gnutls_assert(); @@ -694,9 +684,8 @@ int gnutls_x509_dn_get_str(gnutls_x509_dn_t dn, gnutls_datum_t * str) * * Since: 3.5.7 **/ -int -gnutls_x509_dn_get_str2(gnutls_x509_dn_t dn, gnutls_datum_t * str, - unsigned flags) +int gnutls_x509_dn_get_str2(gnutls_x509_dn_t dn, gnutls_datum_t *str, + unsigned flags) { if (dn == NULL) { gnutls_assert(); diff --git a/lib/x509/x509_ext.c b/lib/x509/x509_ext.c index d369a47440..49314869cc 100644 --- a/lib/x509/x509_ext.c +++ b/lib/x509/x509_ext.c @@ -49,7 +49,7 @@ struct gnutls_subject_alt_names_st { * * Since: 3.3.0 **/ -int gnutls_subject_alt_names_init(gnutls_subject_alt_names_t * sans) +int gnutls_subject_alt_names_init(gnutls_subject_alt_names_t *sans) { *sans = gnutls_calloc(1, sizeof(struct gnutls_subject_alt_names_st)); if (*sans == NULL) { @@ -104,8 +104,8 @@ void gnutls_subject_alt_names_deinit(gnutls_subject_alt_names_t sans) **/ int gnutls_subject_alt_names_get(gnutls_subject_alt_names_t sans, unsigned int seq, unsigned int *san_type, - gnutls_datum_t * san, - gnutls_datum_t * othername_oid) + gnutls_datum_t *san, + gnutls_datum_t *othername_oid) { if (seq >= sans->size) return gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); @@ -117,8 +117,8 @@ int gnutls_subject_alt_names_get(gnutls_subject_alt_names_t sans, if (san_type) *san_type = sans->names[seq].type; - if (othername_oid != NULL - && sans->names[seq].type == GNUTLS_SAN_OTHERNAME) { + if (othername_oid != NULL && + sans->names[seq].type == GNUTLS_SAN_OTHERNAME) { othername_oid->data = sans->names[seq].othername_oid.data; othername_oid->size = sans->names[seq].othername_oid.size; } @@ -129,12 +129,9 @@ int gnutls_subject_alt_names_get(gnutls_subject_alt_names_t sans, /* This is the same as gnutls_subject_alt_names_set() but will not * copy the strings. It expects all the provided input to be already * allocated by gnutls. */ -static -int subject_alt_names_set(struct name_st **names, - unsigned int *size, - unsigned int san_type, - gnutls_datum_t * san, char *othername_oid, - unsigned raw) +static int subject_alt_names_set(struct name_st **names, unsigned int *size, + unsigned int san_type, gnutls_datum_t *san, + char *othername_oid, unsigned raw) { void *tmp; int ret; @@ -149,9 +146,8 @@ int subject_alt_names_set(struct name_st **names, } *names = tmp; - ret = - _gnutls_alt_name_assign_virt_type(&(*names)[*size], san_type, san, - othername_oid, raw); + ret = _gnutls_alt_name_assign_virt_type(&(*names)[*size], san_type, san, + othername_oid, raw); if (ret < 0) return gnutls_assert_val(ret); @@ -178,7 +174,7 @@ int subject_alt_names_set(struct name_st **names, **/ int gnutls_subject_alt_names_set(gnutls_subject_alt_names_t sans, unsigned int san_type, - const gnutls_datum_t * san, + const gnutls_datum_t *san, const char *othername_oid) { int ret; @@ -193,8 +189,8 @@ int gnutls_subject_alt_names_set(gnutls_subject_alt_names_t sans, ooc = gnutls_strdup(othername_oid); else ooc = NULL; - ret = subject_alt_names_set(&sans->names, &sans->size, - san_type, ©, ooc, 0); + ret = subject_alt_names_set(&sans->names, &sans->size, san_type, ©, + ooc, 0); if (ret < 0) { gnutls_free(copy.data); return gnutls_assert_val(ret); @@ -220,7 +216,7 @@ int gnutls_subject_alt_names_set(gnutls_subject_alt_names_t sans, * * Since: 3.3.0 **/ -int gnutls_x509_ext_import_subject_alt_names(const gnutls_datum_t * ext, +int gnutls_x509_ext_import_subject_alt_names(const gnutls_datum_t *ext, gnutls_subject_alt_names_t sans, unsigned int flags) { @@ -230,8 +226,8 @@ int gnutls_x509_ext_import_subject_alt_names(const gnutls_datum_t * ext, gnutls_datum_t san, othername_oid; unsigned type; - result = - asn1_create_element(_gnutls_get_pkix(), "PKIX1.GeneralNames", &c2); + result = asn1_create_element(_gnutls_get_pkix(), "PKIX1.GeneralNames", + &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -254,10 +250,8 @@ int gnutls_x509_ext_import_subject_alt_names(const gnutls_datum_t * ext, break; if (type == GNUTLS_SAN_OTHERNAME) { - ret = - _gnutls_parse_general_name2(c2, "", i, - &othername_oid, - NULL, 1); + ret = _gnutls_parse_general_name2( + c2, "", i, &othername_oid, NULL, 1); if (ret < 0) break; @@ -266,9 +260,9 @@ int gnutls_x509_ext_import_subject_alt_names(const gnutls_datum_t * ext, break; } - ret = subject_alt_names_set(&sans->names, &sans->size, - type, &san, - (char *)othername_oid.data, 1); + ret = subject_alt_names_set(&sans->names, &sans->size, type, + &san, (char *)othername_oid.data, + 1); if (ret < 0) break; } @@ -282,7 +276,7 @@ int gnutls_x509_ext_import_subject_alt_names(const gnutls_datum_t * ext, } ret = 0; - cleanup: +cleanup: asn1_delete_structure(&c2); return ret; } @@ -301,14 +295,14 @@ int gnutls_x509_ext_import_subject_alt_names(const gnutls_datum_t * ext, * Since: 3.3.0 **/ int gnutls_x509_ext_export_subject_alt_names(gnutls_subject_alt_names_t sans, - gnutls_datum_t * ext) + gnutls_datum_t *ext) { asn1_node c2 = NULL; int result, ret; unsigned i; - result = - asn1_create_element(_gnutls_get_pkix(), "PKIX1.GeneralNames", &c2); + result = asn1_create_element(_gnutls_get_pkix(), "PKIX1.GeneralNames", + &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -316,22 +310,16 @@ int gnutls_x509_ext_export_subject_alt_names(gnutls_subject_alt_names_t sans, for (i = 0; i < sans->size; i++) { if (sans->names[i].type == GNUTLS_SAN_OTHERNAME) { - ret = - _gnutls_write_new_othername(c2, "", - (char *)sans-> - names[i].othername_oid. - data, - sans->names[i].san.data, - sans->names[i]. - san.size); + ret = _gnutls_write_new_othername( + c2, "", + (char *)sans->names[i].othername_oid.data, + sans->names[i].san.data, + sans->names[i].san.size); } else { - ret = - _gnutls_write_new_general_name(c2, "", - sans->names[i].type, - sans->names[i]. - san.data, - sans->names[i]. - san.size); + ret = _gnutls_write_new_general_name( + c2, "", sans->names[i].type, + sans->names[i].san.data, + sans->names[i].san.size); } if (ret < 0) { @@ -348,7 +336,7 @@ int gnutls_x509_ext_export_subject_alt_names(gnutls_subject_alt_names_t sans, ret = 0; - cleanup: +cleanup: asn1_delete_structure(&c2); return ret; } @@ -378,7 +366,7 @@ int gnutls_x509_ext_export_subject_alt_names(gnutls_subject_alt_names_t sans, * * Since: 3.3.0 **/ -int gnutls_x509_ext_import_name_constraints(const gnutls_datum_t * ext, +int gnutls_x509_ext_import_name_constraints(const gnutls_datum_t *ext, gnutls_x509_name_constraints_t nc, unsigned int flags) { @@ -386,8 +374,8 @@ int gnutls_x509_ext_import_name_constraints(const gnutls_datum_t * ext, asn1_node c2 = NULL; gnutls_x509_name_constraints_t nc2 = NULL; - result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.NameConstraints", &c2); + result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.NameConstraints", &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -408,17 +396,15 @@ int gnutls_x509_ext_import_name_constraints(const gnutls_datum_t * ext, goto cleanup; } - ret = - _gnutls_extract_name_constraints(c2, "permittedSubtrees", - &nc2->permitted); + ret = _gnutls_extract_name_constraints(c2, "permittedSubtrees", + &nc2->permitted); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _gnutls_extract_name_constraints(c2, "excludedSubtrees", - &nc2->excluded); + ret = _gnutls_extract_name_constraints(c2, "excludedSubtrees", + &nc2->excluded); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -433,17 +419,15 @@ int gnutls_x509_ext_import_name_constraints(const gnutls_datum_t * ext, _gnutls_name_constraints_node_free(nc->permitted); _gnutls_name_constraints_node_free(nc->excluded); - ret = - _gnutls_extract_name_constraints(c2, "permittedSubtrees", - &nc->permitted); + ret = _gnutls_extract_name_constraints(c2, "permittedSubtrees", + &nc->permitted); if (ret < 0) { gnutls_assert(); goto cleanup; } - ret = - _gnutls_extract_name_constraints(c2, "excludedSubtrees", - &nc->excluded); + ret = _gnutls_extract_name_constraints(c2, "excludedSubtrees", + &nc->excluded); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -452,7 +436,7 @@ int gnutls_x509_ext_import_name_constraints(const gnutls_datum_t * ext, ret = 0; - cleanup: +cleanup: asn1_delete_structure(&c2); if (nc2) gnutls_x509_name_constraints_deinit(nc2); @@ -474,7 +458,7 @@ int gnutls_x509_ext_import_name_constraints(const gnutls_datum_t * ext, * Since: 3.3.0 **/ int gnutls_x509_ext_export_name_constraints(gnutls_x509_name_constraints_t nc, - gnutls_datum_t * ext) + gnutls_datum_t *ext) { int ret, result; uint8_t null = 0; @@ -484,8 +468,8 @@ int gnutls_x509_ext_export_name_constraints(gnutls_x509_name_constraints_t nc, if (nc->permitted == NULL && nc->excluded == NULL) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.NameConstraints", &c2); + result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.NameConstraints", &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -496,40 +480,34 @@ int gnutls_x509_ext_export_name_constraints(gnutls_x509_name_constraints_t nc, } else { tmp = nc->permitted; do { - result = - asn1_write_value(c2, "permittedSubtrees", "NEW", 1); + result = asn1_write_value(c2, "permittedSubtrees", + "NEW", 1); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); goto cleanup; } - result = - asn1_write_value(c2, - "permittedSubtrees.?LAST.maximum", - NULL, 0); + result = asn1_write_value( + c2, "permittedSubtrees.?LAST.maximum", NULL, 0); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); goto cleanup; } - result = - asn1_write_value(c2, - "permittedSubtrees.?LAST.minimum", - &null, 1); + result = asn1_write_value( + c2, "permittedSubtrees.?LAST.minimum", &null, + 1); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); goto cleanup; } - ret = - _gnutls_write_general_name(c2, - "permittedSubtrees.?LAST.base", - tmp->type, - tmp->name.data, - tmp->name.size); + ret = _gnutls_write_general_name( + c2, "permittedSubtrees.?LAST.base", tmp->type, + tmp->name.data, tmp->name.size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -543,47 +521,39 @@ int gnutls_x509_ext_export_name_constraints(gnutls_x509_name_constraints_t nc, } else { tmp = nc->excluded; do { - result = - asn1_write_value(c2, "excludedSubtrees", "NEW", 1); + result = asn1_write_value(c2, "excludedSubtrees", "NEW", + 1); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); goto cleanup; } - result = - asn1_write_value(c2, - "excludedSubtrees.?LAST.maximum", - NULL, 0); + result = asn1_write_value( + c2, "excludedSubtrees.?LAST.maximum", NULL, 0); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); goto cleanup; } - result = - asn1_write_value(c2, - "excludedSubtrees.?LAST.minimum", - &null, 1); + result = asn1_write_value( + c2, "excludedSubtrees.?LAST.minimum", &null, 1); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); goto cleanup; } - ret = - _gnutls_write_general_name(c2, - "excludedSubtrees.?LAST.base", - tmp->type, - tmp->name.data, - tmp->name.size); + ret = _gnutls_write_general_name( + c2, "excludedSubtrees.?LAST.base", tmp->type, + tmp->name.data, tmp->name.size); if (ret < 0) { gnutls_assert(); goto cleanup; } tmp = tmp->next; } while (tmp != NULL); - } ret = _gnutls_x509_der_encode(c2, "", ext, 0); @@ -594,7 +564,7 @@ int gnutls_x509_ext_export_name_constraints(gnutls_x509_name_constraints_t nc, ret = 0; - cleanup: +cleanup: asn1_delete_structure(&c2); return ret; } @@ -613,8 +583,8 @@ int gnutls_x509_ext_export_name_constraints(gnutls_x509_name_constraints_t nc, * * Since: 3.3.0 **/ -int gnutls_x509_ext_import_subject_key_id(const gnutls_datum_t * ext, - gnutls_datum_t * id) +int gnutls_x509_ext_import_subject_key_id(const gnutls_datum_t *ext, + gnutls_datum_t *id) { int result, ret; asn1_node c2 = NULL; @@ -624,8 +594,8 @@ int gnutls_x509_ext_import_subject_key_id(const gnutls_datum_t * ext, return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; } - result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.SubjectKeyIdentifier", &c2); + result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.SubjectKeyIdentifier", &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -645,11 +615,10 @@ int gnutls_x509_ext_import_subject_key_id(const gnutls_datum_t * ext, } ret = 0; - cleanup: +cleanup: asn1_delete_structure(&c2); return ret; - } /** @@ -666,15 +635,14 @@ int gnutls_x509_ext_import_subject_key_id(const gnutls_datum_t * ext, * * Since: 3.3.0 **/ -int gnutls_x509_ext_export_subject_key_id(const gnutls_datum_t * id, - gnutls_datum_t * ext) +int gnutls_x509_ext_export_subject_key_id(const gnutls_datum_t *id, + gnutls_datum_t *ext) { asn1_node c2 = NULL; int ret, result; - result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.SubjectKeyIdentifier", &c2); + result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.SubjectKeyIdentifier", &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -694,7 +662,7 @@ int gnutls_x509_ext_export_subject_key_id(const gnutls_datum_t * id, } ret = 0; - cleanup: +cleanup: asn1_delete_structure(&c2); return ret; } @@ -715,7 +683,7 @@ struct gnutls_x509_aki_st { * * Since: 3.3.0 **/ -int gnutls_x509_aki_init(gnutls_x509_aki_t * aki) +int gnutls_x509_aki_init(gnutls_x509_aki_t *aki) { *aki = gnutls_calloc(1, sizeof(struct gnutls_x509_aki_st)); if (*aki == NULL) @@ -753,7 +721,7 @@ void gnutls_x509_aki_deinit(gnutls_x509_aki_t aki) * * Since: 3.3.0 **/ -int gnutls_x509_aki_get_id(gnutls_x509_aki_t aki, gnutls_datum_t * id) +int gnutls_x509_aki_get_id(gnutls_x509_aki_t aki, gnutls_datum_t *id) { if (aki->id.size == 0) return gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); @@ -774,7 +742,7 @@ int gnutls_x509_aki_get_id(gnutls_x509_aki_t aki, gnutls_datum_t * id) * * Since: 3.3.0 **/ -int gnutls_x509_aki_set_id(gnutls_x509_aki_t aki, const gnutls_datum_t * id) +int gnutls_x509_aki_set_id(gnutls_x509_aki_t aki, const gnutls_datum_t *id) { return _gnutls_set_datum(&aki->id, id->data, id->size); } @@ -800,9 +768,9 @@ int gnutls_x509_aki_set_id(gnutls_x509_aki_t aki, const gnutls_datum_t * id) **/ int gnutls_x509_aki_set_cert_issuer(gnutls_x509_aki_t aki, unsigned int san_type, - const gnutls_datum_t * san, + const gnutls_datum_t *san, const char *othername_oid, - const gnutls_datum_t * serial) + const gnutls_datum_t *serial) { int ret; gnutls_datum_t t_san, t_othername_oid = { NULL, 0 }; @@ -818,7 +786,7 @@ int gnutls_x509_aki_set_cert_issuer(gnutls_x509_aki_t aki, return gnutls_assert_val(ret); if (othername_oid) { - t_othername_oid.data = (uint8_t *) gnutls_strdup(othername_oid); + t_othername_oid.data = (uint8_t *)gnutls_strdup(othername_oid); if (t_othername_oid.data == NULL) { gnutls_free(t_san.data); return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); @@ -826,10 +794,9 @@ int gnutls_x509_aki_set_cert_issuer(gnutls_x509_aki_t aki, t_othername_oid.size = strlen(othername_oid); } - ret = - subject_alt_names_set(&aki->cert_issuer.names, - &aki->cert_issuer.size, san_type, &t_san, - (char *)t_othername_oid.data, 0); + ret = subject_alt_names_set(&aki->cert_issuer.names, + &aki->cert_issuer.size, san_type, &t_san, + (char *)t_othername_oid.data, 0); if (ret < 0) { gnutls_assert(); return ret; @@ -857,10 +824,9 @@ int gnutls_x509_aki_set_cert_issuer(gnutls_x509_aki_t aki, * Since: 3.3.0 **/ int gnutls_x509_aki_get_cert_issuer(gnutls_x509_aki_t aki, unsigned int seq, - unsigned int *san_type, - gnutls_datum_t * san, - gnutls_datum_t * othername_oid, - gnutls_datum_t * serial) + unsigned int *san_type, gnutls_datum_t *san, + gnutls_datum_t *othername_oid, + gnutls_datum_t *serial) { if (seq >= aki->cert_issuer.size) return gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); @@ -876,19 +842,18 @@ int gnutls_x509_aki_get_cert_issuer(gnutls_x509_aki_t aki, unsigned int seq, sizeof(gnutls_datum_t)); } - if (othername_oid != NULL - && aki->cert_issuer.names[seq].type == GNUTLS_SAN_OTHERNAME) { + if (othername_oid != NULL && + aki->cert_issuer.names[seq].type == GNUTLS_SAN_OTHERNAME) { othername_oid->data = - aki->cert_issuer.names[seq].othername_oid.data; + aki->cert_issuer.names[seq].othername_oid.data; othername_oid->size = - aki->cert_issuer.names[seq].othername_oid.size; + aki->cert_issuer.names[seq].othername_oid.size; } if (san_type) *san_type = aki->cert_issuer.names[seq].type; return 0; - } /** @@ -905,7 +870,7 @@ int gnutls_x509_aki_get_cert_issuer(gnutls_x509_aki_t aki, unsigned int seq, * * Since: 3.3.0 **/ -int gnutls_x509_ext_import_authority_key_id(const gnutls_datum_t * ext, +int gnutls_x509_ext_import_authority_key_id(const gnutls_datum_t *ext, gnutls_x509_aki_t aki, unsigned int flags) { @@ -915,8 +880,8 @@ int gnutls_x509_ext_import_authority_key_id(const gnutls_datum_t * ext, gnutls_datum_t san, othername_oid; unsigned type; - ret = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.AuthorityKeyIdentifier", &c2); + ret = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.AuthorityKeyIdentifier", &c2); if (ret != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(ret); @@ -941,19 +906,16 @@ int gnutls_x509_ext_import_authority_key_id(const gnutls_datum_t * ext, break; if (type == GNUTLS_SAN_OTHERNAME) { - ret = - _gnutls_parse_general_name2(c2, - "authorityCertIssuer", - i, - &othername_oid, - NULL, 1); + ret = _gnutls_parse_general_name2(c2, + "authorityCertIssuer", + i, &othername_oid, + NULL, 1); if (ret < 0) break; } ret = subject_alt_names_set(&aki->cert_issuer.names, - &aki->cert_issuer.size, - type, &san, + &aki->cert_issuer.size, type, &san, (char *)othername_oid.data, 1); if (ret < 0) break; @@ -961,8 +923,8 @@ int gnutls_x509_ext_import_authority_key_id(const gnutls_datum_t * ext, assert(ret < 0); aki->cert_issuer.size = i; - if (ret != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE - && ret != GNUTLS_E_ASN1_ELEMENT_NOT_FOUND) { + if (ret != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE && + ret != GNUTLS_E_ASN1_ELEMENT_NOT_FOUND) { gnutls_assert(); gnutls_free(san.data); gnutls_free(othername_oid.data); @@ -970,26 +932,25 @@ int gnutls_x509_ext_import_authority_key_id(const gnutls_datum_t * ext, } /* Read the serial number */ - ret = - _gnutls_x509_read_value(c2, "authorityCertSerialNumber", - &aki->serial); - if (ret < 0 && ret != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE - && ret != GNUTLS_E_ASN1_ELEMENT_NOT_FOUND) { + ret = _gnutls_x509_read_value(c2, "authorityCertSerialNumber", + &aki->serial); + if (ret < 0 && ret != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE && + ret != GNUTLS_E_ASN1_ELEMENT_NOT_FOUND) { gnutls_assert(); goto cleanup; } /* Read the key identifier */ ret = _gnutls_x509_read_value(c2, "keyIdentifier", &aki->id); - if (ret < 0 && ret != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE - && ret != GNUTLS_E_ASN1_ELEMENT_NOT_FOUND) { + if (ret < 0 && ret != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE && + ret != GNUTLS_E_ASN1_ELEMENT_NOT_FOUND) { gnutls_assert(); goto cleanup; } ret = 0; - cleanup: +cleanup: asn1_delete_structure(&c2); return ret; @@ -1010,24 +971,22 @@ int gnutls_x509_ext_import_authority_key_id(const gnutls_datum_t * ext, * Since: 3.3.0 **/ int gnutls_x509_ext_export_authority_key_id(gnutls_x509_aki_t aki, - gnutls_datum_t * ext) + gnutls_datum_t *ext) { asn1_node c2 = NULL; unsigned i; int result, ret; - result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.AuthorityKeyIdentifier", &c2); + result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.AuthorityKeyIdentifier", &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } if (aki->id.data != NULL) { - result = - asn1_write_value(c2, "keyIdentifier", aki->id.data, - aki->id.size); + result = asn1_write_value(c2, "keyIdentifier", aki->id.data, + aki->id.size); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); @@ -1038,9 +997,8 @@ int gnutls_x509_ext_export_authority_key_id(gnutls_x509_aki_t aki, } if (aki->serial.data != NULL) { - result = - asn1_write_value(c2, "authorityCertSerialNumber", - aki->serial.data, aki->serial.size); + result = asn1_write_value(c2, "authorityCertSerialNumber", + aki->serial.data, aki->serial.size); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); @@ -1055,16 +1013,11 @@ int gnutls_x509_ext_export_authority_key_id(gnutls_x509_aki_t aki, (void)asn1_write_value(c2, "authorityCertIssuer", NULL, 0); } else { for (i = 0; i < aki->cert_issuer.size; i++) { - ret = - _gnutls_write_new_general_name(c2, - "authorityCertIssuer", - aki->cert_issuer. - names[i].type, - aki-> - cert_issuer.names[i]. - san.data, - aki->cert_issuer. - names[i].san.size); + ret = _gnutls_write_new_general_name( + c2, "authorityCertIssuer", + aki->cert_issuer.names[i].type, + aki->cert_issuer.names[i].san.data, + aki->cert_issuer.names[i].san.size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -1079,10 +1032,9 @@ int gnutls_x509_ext_export_authority_key_id(gnutls_x509_aki_t aki, } ret = 0; - cleanup: +cleanup: asn1_delete_structure(&c2); return ret; - } /** @@ -1105,7 +1057,7 @@ int gnutls_x509_ext_export_authority_key_id(gnutls_x509_aki_t aki, * * Since: 3.3.0 **/ -int gnutls_x509_ext_import_key_usage(const gnutls_datum_t * ext, +int gnutls_x509_ext_import_key_usage(const gnutls_datum_t *ext, unsigned int *key_usage) { asn1_node c2 = NULL; @@ -1115,8 +1067,8 @@ int gnutls_x509_ext_import_key_usage(const gnutls_datum_t * ext, str[0] = str[1] = 0; *key_usage = 0; - if ((result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.KeyUsage", &c2)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), "PKIX1.KeyUsage", + &c2)) != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -1145,7 +1097,7 @@ int gnutls_x509_ext_import_key_usage(const gnutls_datum_t * ext, static int _last_key_usage_set_bit(int usage) { -/* the byte ordering is a bit strange here, see how GNUTLS_KEY_* is laid out, and how + /* the byte ordering is a bit strange here, see how GNUTLS_KEY_* is laid out, and how * asn1_write_value() writes out BIT STRING objects. */ if (usage & GNUTLS_KEY_DECIPHER_ONLY) @@ -1184,7 +1136,7 @@ static int _last_key_usage_set_bit(int usage) * * Since: 3.3.0 **/ -int gnutls_x509_ext_export_key_usage(unsigned int usage, gnutls_datum_t * ext) +int gnutls_x509_ext_export_key_usage(unsigned int usage, gnutls_datum_t *ext) { asn1_node c2 = NULL; int result; @@ -1239,7 +1191,7 @@ int gnutls_x509_ext_export_key_usage(unsigned int usage, gnutls_datum_t * ext) * * Since: 3.6.0 **/ -int gnutls_x509_ext_import_inhibit_anypolicy(const gnutls_datum_t * ext, +int gnutls_x509_ext_import_inhibit_anypolicy(const gnutls_datum_t *ext, unsigned int *skipcerts) { int ret; @@ -1267,14 +1219,13 @@ int gnutls_x509_ext_import_inhibit_anypolicy(const gnutls_datum_t * ext, * Since: 3.6.0 **/ int gnutls_x509_ext_export_inhibit_anypolicy(unsigned int skipcerts, - gnutls_datum_t * ext) + gnutls_datum_t *ext) { asn1_node c2 = NULL; int result, ret; - result = - asn1_create_element(_gnutls_get_gnutls_asn(), "GNUTLS.DSAPublicKey", - &c2); + result = asn1_create_element(_gnutls_get_gnutls_asn(), + "GNUTLS.DSAPublicKey", &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -1294,7 +1245,7 @@ int gnutls_x509_ext_export_inhibit_anypolicy(unsigned int skipcerts, ret = 0; - cleanup: +cleanup: asn1_delete_structure(&c2); return ret; @@ -1315,15 +1266,15 @@ int gnutls_x509_ext_export_inhibit_anypolicy(unsigned int skipcerts, * * Since: 3.3.0 **/ -int gnutls_x509_ext_import_private_key_usage_period(const gnutls_datum_t * ext, - time_t * activation, - time_t * expiration) +int gnutls_x509_ext_import_private_key_usage_period(const gnutls_datum_t *ext, + time_t *activation, + time_t *expiration) { int result, ret; asn1_node c2 = NULL; - result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.PrivateKeyUsagePeriod", &c2); + result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.PrivateKeyUsagePeriod", &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); @@ -1345,7 +1296,7 @@ int gnutls_x509_ext_import_private_key_usage_period(const gnutls_datum_t * ext, ret = 0; - cleanup: +cleanup: asn1_delete_structure(&c2); return ret; @@ -1370,14 +1321,13 @@ int gnutls_x509_ext_import_private_key_usage_period(const gnutls_datum_t * ext, **/ int gnutls_x509_ext_export_private_key_usage_period(time_t activation, time_t expiration, - gnutls_datum_t * ext) + gnutls_datum_t *ext) { int result; asn1_node c2 = NULL; - result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.PrivateKeyUsagePeriod", &c2); + result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.PrivateKeyUsagePeriod", &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -1401,11 +1351,10 @@ int gnutls_x509_ext_export_private_key_usage_period(time_t activation, goto cleanup; } - cleanup: +cleanup: asn1_delete_structure(&c2); return result; - } /** @@ -1422,16 +1371,16 @@ int gnutls_x509_ext_export_private_key_usage_period(time_t activation, * * Since: 3.3.0 **/ -int gnutls_x509_ext_import_basic_constraints(const gnutls_datum_t * ext, +int gnutls_x509_ext_import_basic_constraints(const gnutls_datum_t *ext, unsigned int *ca, int *pathlen) { asn1_node c2 = NULL; char str[128] = ""; int len, result; - if ((result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.BasicConstraints", - &c2)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.BasicConstraints", &c2)) != + ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -1445,8 +1394,7 @@ int gnutls_x509_ext_import_basic_constraints(const gnutls_datum_t * ext, if (pathlen) { result = _gnutls_x509_read_uint(c2, "pathLenConstraint", - (unsigned int *) - pathlen); + (unsigned int *)pathlen); if (result == GNUTLS_E_ASN1_ELEMENT_NOT_FOUND) *pathlen = -1; else if (result != GNUTLS_E_SUCCESS) { @@ -1466,11 +1414,10 @@ int gnutls_x509_ext_import_basic_constraints(const gnutls_datum_t * ext, *ca = 0; result = 0; - cleanup: +cleanup: asn1_delete_structure(&c2); return result; - } /** @@ -1491,7 +1438,7 @@ int gnutls_x509_ext_import_basic_constraints(const gnutls_datum_t * ext, * Since: 3.3.0 **/ int gnutls_x509_ext_export_basic_constraints(unsigned int ca, int pathlen, - gnutls_datum_t * ext) + gnutls_datum_t *ext) { asn1_node c2 = NULL; const char *str; @@ -1502,9 +1449,8 @@ int gnutls_x509_ext_export_basic_constraints(unsigned int ca, int pathlen, else str = "TRUE"; - result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.BasicConstraints", &c2); + result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.BasicConstraints", &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -1523,8 +1469,8 @@ int gnutls_x509_ext_export_basic_constraints(unsigned int ca, int pathlen, if (result < 0) result = _gnutls_asn2err(result); } else - result = - _gnutls_x509_write_uint32(c2, "pathLenConstraint", pathlen); + result = _gnutls_x509_write_uint32(c2, "pathLenConstraint", + pathlen); if (result < 0) { gnutls_assert(); goto cleanup; @@ -1538,10 +1484,9 @@ int gnutls_x509_ext_export_basic_constraints(unsigned int ca, int pathlen, result = 0; - cleanup: +cleanup: asn1_delete_structure(&c2); return result; - } /** @@ -1563,7 +1508,7 @@ int gnutls_x509_ext_export_basic_constraints(unsigned int ca, int pathlen, * * Since: 3.3.0 **/ -int gnutls_x509_ext_import_proxy(const gnutls_datum_t * ext, int *pathlen, +int gnutls_x509_ext_import_proxy(const gnutls_datum_t *ext, int *pathlen, char **policyLanguage, char **policy, size_t *sizeof_policy) { @@ -1572,9 +1517,9 @@ int gnutls_x509_ext_import_proxy(const gnutls_datum_t * ext, int *pathlen, gnutls_datum_t value1 = { NULL, 0 }; gnutls_datum_t value2 = { NULL, 0 }; - if ((result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.ProxyCertInfo", - &c2)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.ProxyCertInfo", &c2)) != + ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } @@ -1588,8 +1533,7 @@ int gnutls_x509_ext_import_proxy(const gnutls_datum_t * ext, int *pathlen, if (pathlen) { result = _gnutls_x509_read_uint(c2, "pCPathLenConstraint", - (unsigned int *) - pathlen); + (unsigned int *)pathlen); if (result == GNUTLS_E_ASN1_ELEMENT_NOT_FOUND) *pathlen = -1; else if (result != GNUTLS_E_SUCCESS) { @@ -1630,7 +1574,7 @@ int gnutls_x509_ext_import_proxy(const gnutls_datum_t * ext, int *pathlen, } result = 0; - cleanup: +cleanup: gnutls_free(value1.data); gnutls_free(value2.data); asn1_delete_structure(&c2); @@ -1658,13 +1602,13 @@ int gnutls_x509_ext_import_proxy(const gnutls_datum_t * ext, int *pathlen, **/ int gnutls_x509_ext_export_proxy(int pathLenConstraint, const char *policyLanguage, const char *policy, - size_t sizeof_policy, gnutls_datum_t * ext) + size_t sizeof_policy, gnutls_datum_t *ext) { asn1_node c2 = NULL; int result; - result = asn1_create_element(_gnutls_get_pkix(), - "PKIX1.ProxyCertInfo", &c2); + result = asn1_create_element(_gnutls_get_pkix(), "PKIX1.ProxyCertInfo", + &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -1678,9 +1622,8 @@ int gnutls_x509_ext_export_proxy(int pathLenConstraint, goto cleanup; } } else { - result = - _gnutls_x509_write_uint32(c2, "pCPathLenConstraint", - pathLenConstraint); + result = _gnutls_x509_write_uint32(c2, "pCPathLenConstraint", + pathLenConstraint); if (result < 0) { gnutls_assert(); @@ -1696,8 +1639,8 @@ int gnutls_x509_ext_export_proxy(int pathLenConstraint, goto cleanup; } - result = asn1_write_value(c2, "proxyPolicy.policy", - policy, sizeof_policy); + result = asn1_write_value(c2, "proxyPolicy.policy", policy, + sizeof_policy); if (result < 0) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -1711,14 +1654,13 @@ int gnutls_x509_ext_export_proxy(int pathLenConstraint, } result = 0; - cleanup: +cleanup: asn1_delete_structure(&c2); return result; - } static int decode_user_notice(const void *data, size_t size, - gnutls_datum_t * txt) + gnutls_datum_t *txt) { asn1_node c2 = NULL; int ret, len; @@ -1748,10 +1690,10 @@ static int decode_user_notice(const void *data, size_t size, goto cleanup; } - if (strcmp(choice_type, "utf8String") != 0 - && strcmp(choice_type, "ia5String") != 0 - && strcmp(choice_type, "bmpString") != 0 - && strcmp(choice_type, "visibleString") != 0) { + if (strcmp(choice_type, "utf8String") != 0 && + strcmp(choice_type, "ia5String") != 0 && + strcmp(choice_type, "bmpString") != 0 && + strcmp(choice_type, "visibleString") != 0) { gnutls_assert(); ret = GNUTLS_E_PARSING_ERROR; goto cleanup; @@ -1765,7 +1707,7 @@ static int decode_user_notice(const void *data, size_t size, goto cleanup; } - if (strcmp(choice_type, "bmpString") == 0) { /* convert to UTF-8 */ + if (strcmp(choice_type, "bmpString") == 0) { /* convert to UTF-8 */ ret = _gnutls_ucs2_to_utf8(td.data, td.size, &utd, 1); _gnutls_free_datum(&td); if (ret < 0) { @@ -1784,10 +1726,9 @@ static int decode_user_notice(const void *data, size_t size, txt->size = td.size; ret = 0; - cleanup: +cleanup: asn1_delete_structure(&c2); return ret; - } struct gnutls_x509_policies_st { @@ -1805,7 +1746,7 @@ struct gnutls_x509_policies_st { * * Since: 3.3.0 **/ -int gnutls_x509_policies_init(gnutls_x509_policies_t * policies) +int gnutls_x509_policies_init(gnutls_x509_policies_t *policies) { *policies = gnutls_calloc(1, sizeof(struct gnutls_x509_policies_st)); if (*policies == NULL) @@ -1849,8 +1790,7 @@ void gnutls_x509_policies_deinit(gnutls_x509_policies_t policies) * * Since: 3.3.0 **/ -int gnutls_x509_policies_get(gnutls_x509_policies_t policies, - unsigned int seq, +int gnutls_x509_policies_get(gnutls_x509_policies_t policies, unsigned int seq, struct gnutls_x509_policy_st *policy) { if (seq >= policies->size) @@ -1900,18 +1840,18 @@ int gnutls_x509_policies_set(gnutls_x509_policies_t policies, for (i = 0; i < policy->qualifiers; i++) { policies->policy[policies->size].qualifier[i].type = - policy->qualifier[i].type; + policy->qualifier[i].type; policies->policy[policies->size].qualifier[i].size = - policy->qualifier[i].size; + policy->qualifier[i].size; policies->policy[policies->size].qualifier[i].data = - gnutls_malloc(policy->qualifier[i].size + 1); + gnutls_malloc(policy->qualifier[i].size + 1); if (policies->policy[policies->size].qualifier[i].data == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); memcpy(policies->policy[policies->size].qualifier[i].data, policy->qualifier[i].data, policy->qualifier[i].size); - policies->policy[policies->size].qualifier[i].data[policy-> - qualifier[i]. - size] = 0; + policies->policy[policies->size] + .qualifier[i] + .data[policy->qualifier[i].size] = 0; } policies->policy[policies->size].qualifiers = policy->qualifiers; @@ -1933,7 +1873,7 @@ int gnutls_x509_policies_set(gnutls_x509_policies_t policies, * * Since: 3.3.0 **/ -int gnutls_x509_ext_import_policies(const gnutls_datum_t * ext, +int gnutls_x509_ext_import_policies(const gnutls_datum_t *ext, gnutls_x509_policies_t policies, unsigned int flags) { @@ -1944,8 +1884,8 @@ int gnutls_x509_ext_import_policies(const gnutls_datum_t * ext, int ret, len; unsigned i, j, current = 0; - ret = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.certificatePolicies", &c2); + ret = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.certificatePolicies", &c2); if (ret != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(ret); @@ -1994,7 +1934,7 @@ int gnutls_x509_ext_import_policies(const gnutls_datum_t * ext, ret = asn1_read_value(c2, tmpstr, tmpoid, &len); if (ret == ASN1_ELEMENT_NOT_FOUND) - break; /* finished */ + break; /* finished */ if (ret != ASN1_SUCCESS) { gnutls_assert(); @@ -2007,21 +1947,20 @@ int gnutls_x509_ext_import_policies(const gnutls_datum_t * ext, "?%u.policyQualifiers.?%u.qualifier", j + 1, i + 1); - ret = - _gnutls_x509_read_string(c2, tmpstr, &td, - ASN1_ETYPE_IA5_STRING, - 0); + ret = _gnutls_x509_read_string( + c2, tmpstr, &td, ASN1_ETYPE_IA5_STRING, + 0); if (ret < 0) { gnutls_assert(); goto full_cleanup; } policies->policy[j].qualifier[i].data = - (void *)td.data; + (void *)td.data; policies->policy[j].qualifier[i].size = td.size; td.data = NULL; policies->policy[j].qualifier[i].type = - GNUTLS_X509_QUALIFIER_URI; + GNUTLS_X509_QUALIFIER_URI; } else if (strcmp(tmpoid, "1.3.6.1.5.5.7.2.2") == 0) { gnutls_datum_t txt = { NULL, 0 }; @@ -2035,8 +1974,8 @@ int gnutls_x509_ext_import_policies(const gnutls_datum_t * ext, goto full_cleanup; } - ret = - decode_user_notice(td.data, td.size, &txt); + ret = decode_user_notice(td.data, td.size, + &txt); gnutls_free(td.data); if (ret < 0) { @@ -2045,18 +1984,17 @@ int gnutls_x509_ext_import_policies(const gnutls_datum_t * ext, } policies->policy[j].qualifier[i].data = - (void *)txt.data; + (void *)txt.data; policies->policy[j].qualifier[i].size = - txt.size; + txt.size; policies->policy[j].qualifier[i].type = - GNUTLS_X509_QUALIFIER_NOTICE; + GNUTLS_X509_QUALIFIER_NOTICE; } else policies->policy[j].qualifier[i].type = - GNUTLS_X509_QUALIFIER_UNKNOWN; + GNUTLS_X509_QUALIFIER_UNKNOWN; policies->policy[j].qualifiers++; } - } policies->size = j; @@ -2064,26 +2002,25 @@ int gnutls_x509_ext_import_policies(const gnutls_datum_t * ext, ret = 0; goto cleanup; - full_cleanup: +full_cleanup: for (j = 0; j < current; j++) gnutls_x509_policy_release(&policies->policy[j]); - cleanup: +cleanup: _gnutls_free_datum(&tmpd); asn1_delete_structure(&c2); return ret; - } -static int encode_user_notice(const gnutls_datum_t * txt, - gnutls_datum_t * der_data) +static int encode_user_notice(const gnutls_datum_t *txt, + gnutls_datum_t *der_data) { int result; asn1_node c2 = NULL; - if ((result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.UserNotice", &c2)) != ASN1_SUCCESS) { + if ((result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.UserNotice", &c2)) != + ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); goto error; @@ -2104,9 +2041,8 @@ static int encode_user_notice(const gnutls_datum_t * txt, goto error; } - result = - asn1_write_value(c2, "explicitText.utf8String", txt->data, - txt->size); + result = asn1_write_value(c2, "explicitText.utf8String", txt->data, + txt->size); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -2121,10 +2057,9 @@ static int encode_user_notice(const gnutls_datum_t * txt, result = 0; - error: +error: asn1_delete_structure(&c2); return result; - } /** @@ -2142,7 +2077,7 @@ static int encode_user_notice(const gnutls_datum_t * txt, * Since: 3.3.0 **/ int gnutls_x509_ext_export_policies(gnutls_x509_policies_t policies, - gnutls_datum_t * ext) + gnutls_datum_t *ext) { int result; unsigned i, j; @@ -2150,9 +2085,8 @@ int gnutls_x509_ext_export_policies(gnutls_x509_policies_t policies, asn1_node c2 = NULL; const char *oid; - result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.certificatePolicies", &c2); + result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.certificatePolicies", &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -2170,9 +2104,8 @@ int gnutls_x509_ext_export_policies(gnutls_x509_policies_t policies, /* 2. Add the OID. */ - result = - asn1_write_value(c2, "?LAST.policyIdentifier", - policies->policy[j].oid, 1); + result = asn1_write_value(c2, "?LAST.policyIdentifier", + policies->policy[j].oid, 1); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -2181,9 +2114,8 @@ int gnutls_x509_ext_export_policies(gnutls_x509_policies_t policies, if (policies->policy[j].qualifiers == 0) { /* remove the optional policyQualifiers if none are present. */ - result = - asn1_write_value(c2, "?LAST.policyQualifiers", NULL, - 0); + result = asn1_write_value(c2, "?LAST.policyQualifiers", + NULL, 0); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -2191,12 +2123,11 @@ int gnutls_x509_ext_export_policies(gnutls_x509_policies_t policies, } } - for (i = 0; - i < MIN(policies->policy[j].qualifiers, - GNUTLS_MAX_QUALIFIERS); i++) { - result = - asn1_write_value(c2, "?LAST.policyQualifiers", - "NEW", 1); + for (i = 0; i < MIN(policies->policy[j].qualifiers, + GNUTLS_MAX_QUALIFIERS); + i++) { + result = asn1_write_value(c2, "?LAST.policyQualifiers", + "NEW", 1); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -2210,15 +2141,15 @@ int gnutls_x509_ext_export_policies(gnutls_x509_policies_t policies, GNUTLS_X509_QUALIFIER_NOTICE) oid = "1.3.6.1.5.5.7.2.2"; else { - result = - gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + result = gnutls_assert_val( + GNUTLS_E_INVALID_REQUEST); goto cleanup; } - result = - asn1_write_value(c2, - "?LAST.policyQualifiers.?LAST.policyQualifierId", - oid, 1); + result = asn1_write_value( + c2, + "?LAST.policyQualifiers.?LAST.policyQualifierId", + oid, 1); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -2227,27 +2158,26 @@ int gnutls_x509_ext_export_policies(gnutls_x509_policies_t policies, if (policies->policy[j].qualifier[i].type == GNUTLS_X509_QUALIFIER_URI) { - tmpd.data = - (void *)policies->policy[j].qualifier[i]. - data; + tmpd.data = (void *)policies->policy[j] + .qualifier[i] + .data; tmpd.size = - policies->policy[j].qualifier[i].size; - result = - _gnutls_x509_write_string(c2, - "?LAST.policyQualifiers.?LAST.qualifier", - &tmpd, - ASN1_ETYPE_IA5_STRING); + policies->policy[j].qualifier[i].size; + result = _gnutls_x509_write_string( + c2, + "?LAST.policyQualifiers.?LAST.qualifier", + &tmpd, ASN1_ETYPE_IA5_STRING); if (result < 0) { gnutls_assert(); goto cleanup; } } else if (policies->policy[j].qualifier[i].type == GNUTLS_X509_QUALIFIER_NOTICE) { - tmpd.data = - (void *)policies->policy[j].qualifier[i]. - data; + tmpd.data = (void *)policies->policy[j] + .qualifier[i] + .data; tmpd.size = - policies->policy[j].qualifier[i].size; + policies->policy[j].qualifier[i].size; if (tmpd.size > 200) { gnutls_assert(); @@ -2261,10 +2191,10 @@ int gnutls_x509_ext_export_policies(gnutls_x509_policies_t policies, goto cleanup; } - result = - _gnutls_x509_write_value(c2, - "?LAST.policyQualifiers.?LAST.qualifier", - &der_data); + result = _gnutls_x509_write_value( + c2, + "?LAST.policyQualifiers.?LAST.qualifier", + &der_data); _gnutls_free_datum(&der_data); if (result < 0) { gnutls_assert(); @@ -2280,7 +2210,7 @@ int gnutls_x509_ext_export_policies(gnutls_x509_policies_t policies, goto cleanup; } - cleanup: +cleanup: asn1_delete_structure(&c2); return result; @@ -2307,7 +2237,7 @@ struct gnutls_x509_crl_dist_points_st { * * Since: 3.3.0 **/ -int gnutls_x509_crl_dist_points_init(gnutls_x509_crl_dist_points_t * cdp) +int gnutls_x509_crl_dist_points_init(gnutls_x509_crl_dist_points_t *cdp) { *cdp = gnutls_calloc(1, sizeof(struct gnutls_x509_crl_dist_points_st)); if (*cdp == NULL) @@ -2352,7 +2282,7 @@ void gnutls_x509_crl_dist_points_deinit(gnutls_x509_crl_dist_points_t cdp) int gnutls_x509_crl_dist_points_get(gnutls_x509_crl_dist_points_t cdp, unsigned int seq, unsigned int *type, - gnutls_datum_t * san, unsigned int *reasons) + gnutls_datum_t *san, unsigned int *reasons) { if (seq >= cdp->size) return gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); @@ -2371,10 +2301,9 @@ int gnutls_x509_crl_dist_points_get(gnutls_x509_crl_dist_points_t cdp, return 0; } -static -int crl_dist_points_set(gnutls_x509_crl_dist_points_t cdp, - gnutls_x509_subject_alt_name_t type, - const gnutls_datum_t * san, unsigned int reasons) +static int crl_dist_points_set(gnutls_x509_crl_dist_points_t cdp, + gnutls_x509_subject_alt_name_t type, + const gnutls_datum_t *san, unsigned int reasons) { void *tmp; @@ -2397,7 +2326,6 @@ int crl_dist_points_set(gnutls_x509_crl_dist_points_t cdp, cdp->size++; return 0; - } /** @@ -2416,7 +2344,7 @@ int crl_dist_points_set(gnutls_x509_crl_dist_points_t cdp, **/ int gnutls_x509_crl_dist_points_set(gnutls_x509_crl_dist_points_t cdp, gnutls_x509_subject_alt_name_t type, - const gnutls_datum_t * san, + const gnutls_datum_t *san, unsigned int reasons) { int ret; @@ -2448,7 +2376,7 @@ int gnutls_x509_crl_dist_points_set(gnutls_x509_crl_dist_points_t cdp, * * Since: 3.3.0 **/ -int gnutls_x509_ext_import_crl_dist_points(const gnutls_datum_t * ext, +int gnutls_x509_ext_import_crl_dist_points(const gnutls_datum_t *ext, gnutls_x509_crl_dist_points_t cdp, unsigned int flags) { @@ -2460,8 +2388,8 @@ int gnutls_x509_ext_import_crl_dist_points(const gnutls_datum_t * ext, unsigned i, type, rflags, j; gnutls_datum_t san = { NULL, 0 }; - result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.CRLDistributionPoints", &c2); + result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.CRLDistributionPoints", &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -2494,24 +2422,23 @@ int gnutls_x509_ext_import_crl_dist_points(const gnutls_datum_t * ext, break; } - if (result == ASN1_VALUE_NOT_FOUND - || result == ASN1_ELEMENT_NOT_FOUND) + if (result == ASN1_VALUE_NOT_FOUND || + result == ASN1_ELEMENT_NOT_FOUND) rflags = 0; else rflags = reasons[0] | (reasons[1] << 8); - snprintf(name, sizeof(name), - "?%u.distributionPoint.fullName", (unsigned)i + 1); + snprintf(name, sizeof(name), "?%u.distributionPoint.fullName", + (unsigned)i + 1); for (j = 0;; j++) { san.data = NULL; san.size = 0; - ret = - _gnutls_parse_general_name2(c2, name, j, &san, - &type, 0); - if (j > 0 - && ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { + ret = _gnutls_parse_general_name2(c2, name, j, &san, + &type, 0); + if (j > 0 && + ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { ret = 0; break; } @@ -2521,7 +2448,7 @@ int gnutls_x509_ext_import_crl_dist_points(const gnutls_datum_t * ext, ret = crl_dist_points_set(cdp, type, &san, rflags); if (ret < 0) break; - san.data = NULL; /* it is now in cdp */ + san.data = NULL; /* it is now in cdp */ } i++; @@ -2534,7 +2461,7 @@ int gnutls_x509_ext_import_crl_dist_points(const gnutls_datum_t * ext, } ret = 0; - cleanup: +cleanup: asn1_delete_structure(&c2); return ret; } @@ -2554,16 +2481,15 @@ int gnutls_x509_ext_import_crl_dist_points(const gnutls_datum_t * ext, * Since: 3.3.0 **/ int gnutls_x509_ext_export_crl_dist_points(gnutls_x509_crl_dist_points_t cdp, - gnutls_datum_t * ext) + gnutls_datum_t *ext) { asn1_node c2 = NULL; int result; uint8_t reasons[2]; unsigned i; - result = - asn1_create_element(_gnutls_get_pkix(), - "PKIX1.CRLDistributionPoints", &c2); + result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.CRLDistributionPoints", &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -2571,9 +2497,8 @@ int gnutls_x509_ext_export_crl_dist_points(gnutls_x509_crl_dist_points_t cdp, } for (i = 0; i < cdp->size; i++) { - - if (i == 0 - || cdp->points[i].reasons != cdp->points[i - 1].reasons) { + if (i == 0 || + cdp->points[i].reasons != cdp->points[i - 1].reasons) { result = asn1_write_value(c2, "", "NEW", 1); if (result != ASN1_SUCCESS) { gnutls_assert(); @@ -2585,13 +2510,11 @@ int gnutls_x509_ext_export_crl_dist_points(gnutls_x509_crl_dist_points_t cdp, reasons[0] = cdp->points[i].reasons & 0xff; reasons[1] = cdp->points[i].reasons >> 8; - result = - asn1_write_value(c2, "?LAST.reasons", - reasons, 2); + result = asn1_write_value(c2, "?LAST.reasons", + reasons, 2); } else { - result = - asn1_write_value(c2, "?LAST.reasons", NULL, - 0); + result = asn1_write_value(c2, "?LAST.reasons", + NULL, 0); } if (result != ASN1_SUCCESS) { @@ -2600,8 +2523,8 @@ int gnutls_x509_ext_export_crl_dist_points(gnutls_x509_crl_dist_points_t cdp, goto cleanup; } - result = - asn1_write_value(c2, "?LAST.cRLIssuer", NULL, 0); + result = asn1_write_value(c2, "?LAST.cRLIssuer", NULL, + 0); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -2609,9 +2532,8 @@ int gnutls_x509_ext_export_crl_dist_points(gnutls_x509_crl_dist_points_t cdp, } /* When used as type CHOICE. */ - result = - asn1_write_value(c2, "?LAST.distributionPoint", - "fullName", 1); + result = asn1_write_value(c2, "?LAST.distributionPoint", + "fullName", 1); if (result != ASN1_SUCCESS) { gnutls_assert(); result = _gnutls_asn2err(result); @@ -2619,12 +2541,10 @@ int gnutls_x509_ext_export_crl_dist_points(gnutls_x509_crl_dist_points_t cdp, } } - result = - _gnutls_write_new_general_name(c2, - "?LAST.distributionPoint.fullName", - cdp->points[i].type, - cdp->points[i].san.data, - cdp->points[i].san.size); + result = _gnutls_write_new_general_name( + c2, "?LAST.distributionPoint.fullName", + cdp->points[i].type, cdp->points[i].san.data, + cdp->points[i].san.size); if (result < 0) { gnutls_assert(); goto cleanup; @@ -2639,11 +2559,10 @@ int gnutls_x509_ext_export_crl_dist_points(gnutls_x509_crl_dist_points_t cdp, result = 0; - cleanup: +cleanup: asn1_delete_structure(&c2); return result; - } struct gnutls_x509_aia_st { @@ -2665,7 +2584,7 @@ struct gnutls_x509_aia_st { * * Since: 3.3.0 **/ -int gnutls_x509_aia_init(gnutls_x509_aia_t * aia) +int gnutls_x509_aia_init(gnutls_x509_aia_t *aia) { *aia = gnutls_calloc(1, sizeof(struct gnutls_x509_aia_st)); if (*aia == NULL) @@ -2716,8 +2635,8 @@ void gnutls_x509_aia_deinit(gnutls_x509_aia_t aia) * Since: 3.3.0 **/ int gnutls_x509_aia_get(gnutls_x509_aia_t aia, unsigned int seq, - gnutls_datum_t * oid, - unsigned *san_type, gnutls_datum_t * san) + gnutls_datum_t *oid, unsigned *san_type, + gnutls_datum_t *san) { if (seq >= aia->size) return gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); @@ -2737,8 +2656,8 @@ int gnutls_x509_aia_get(gnutls_x509_aia_t aia, unsigned int seq, return 0; } -int _gnutls_alt_name_process(gnutls_datum_t * out, unsigned type, - const gnutls_datum_t * san, unsigned raw) +int _gnutls_alt_name_process(gnutls_datum_t *out, unsigned type, + const gnutls_datum_t *san, unsigned raw) { int ret; if (type == GNUTLS_SAN_DNSNAME && !raw) { @@ -2754,8 +2673,8 @@ int _gnutls_alt_name_process(gnutls_datum_t * out, unsigned type, } else if (type == GNUTLS_SAN_URI && !raw) { if (!_gnutls_str_is_print((char *)san->data, san->size)) { _gnutls_debug_log("non-ASCII URIs are not supported\n"); - return - gnutls_assert_val(GNUTLS_E_UNIMPLEMENTED_FEATURE); + return gnutls_assert_val( + GNUTLS_E_UNIMPLEMENTED_FEATURE); } else { ret = _gnutls_set_strdatum(out, san->data, san->size); if (ret < 0) @@ -2791,9 +2710,8 @@ int _gnutls_alt_name_process(gnutls_datum_t * out, unsigned type, * * Since: 3.3.0 **/ -int gnutls_x509_aia_set(gnutls_x509_aia_t aia, - const char *oid, - unsigned san_type, const gnutls_datum_t * san) +int gnutls_x509_aia_set(gnutls_x509_aia_t aia, const char *oid, + unsigned san_type, const gnutls_datum_t *san) { int ret; void *tmp; @@ -2803,8 +2721,8 @@ int gnutls_x509_aia_set(gnutls_x509_aia_t aia, return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); } - tmp = - _gnutls_reallocarray(aia->aia, aia->size + 1, sizeof(aia->aia[0])); + tmp = _gnutls_reallocarray(aia->aia, aia->size + 1, + sizeof(aia->aia[0])); if (tmp == NULL) { return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); } @@ -2843,8 +2761,8 @@ static int parse_aia(asn1_node c2, gnutls_x509_aia_t aia) len = sizeof(tmpoid); result = asn1_read_value(c2, nptr, tmpoid, &len); - if (result == ASN1_VALUE_NOT_FOUND - || result == ASN1_ELEMENT_NOT_FOUND) { + if (result == ASN1_VALUE_NOT_FOUND || + result == ASN1_ELEMENT_NOT_FOUND) { ret = GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; break; } @@ -2867,10 +2785,9 @@ static int parse_aia(asn1_node c2, gnutls_x509_aia_t aia) snprintf(nptr, sizeof(nptr), "?%u.accessLocation", i); - ret = - _gnutls_parse_general_name2(c2, nptr, -1, - &aia->aia[indx].san, - &aia->aia[indx].san_type, 0); + ret = _gnutls_parse_general_name2(c2, nptr, -1, + &aia->aia[indx].san, + &aia->aia[indx].san_type, 0); if (ret < 0) break; @@ -2909,8 +2826,8 @@ static int parse_aia(asn1_node c2, gnutls_x509_aia_t aia) * * Since: 3.3.0 **/ -int gnutls_x509_ext_import_aia(const gnutls_datum_t * ext, - gnutls_x509_aia_t aia, unsigned int flags) +int gnutls_x509_ext_import_aia(const gnutls_datum_t *ext, gnutls_x509_aia_t aia, + unsigned int flags) { int ret; asn1_node c2 = NULL; @@ -2939,11 +2856,10 @@ int gnutls_x509_ext_import_aia(const gnutls_datum_t * ext, gnutls_assert(); } - cleanup: +cleanup: asn1_delete_structure(&c2); return ret; - } /** @@ -2960,7 +2876,7 @@ int gnutls_x509_ext_import_aia(const gnutls_datum_t * ext, * * Since: 3.3.0 **/ -int gnutls_x509_ext_export_aia(gnutls_x509_aia_t aia, gnutls_datum_t * ext) +int gnutls_x509_ext_export_aia(gnutls_x509_aia_t aia, gnutls_datum_t *ext) { int ret, result; asn1_node c2 = NULL; @@ -2985,21 +2901,18 @@ int gnutls_x509_ext_export_aia(gnutls_x509_aia_t aia, gnutls_datum_t * ext) /* 2. Add the OID. */ - result = - asn1_write_value(c2, "?LAST.accessMethod", - aia->aia[i].oid.data, 1); + result = asn1_write_value(c2, "?LAST.accessMethod", + aia->aia[i].oid.data, 1); if (result != ASN1_SUCCESS) { gnutls_assert(); ret = _gnutls_asn2err(result); goto cleanup; } - ret = - _gnutls_write_general_name(c2, - "?LAST.accessLocation", - aia->aia[i].san_type, - aia->aia[i].san.data, - aia->aia[i].san.size); + ret = _gnutls_write_general_name(c2, "?LAST.accessLocation", + aia->aia[i].san_type, + aia->aia[i].san.data, + aia->aia[i].san.size); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -3012,7 +2925,7 @@ int gnutls_x509_ext_export_aia(gnutls_x509_aia_t aia, gnutls_datum_t * ext) goto cleanup; } - cleanup: +cleanup: asn1_delete_structure(&c2); return ret; @@ -3033,7 +2946,7 @@ struct gnutls_x509_key_purposes_st { * * Since: 3.3.0 **/ -int gnutls_x509_key_purpose_init(gnutls_x509_key_purposes_t * p) +int gnutls_x509_key_purpose_init(gnutls_x509_key_purposes_t *p) { *p = gnutls_calloc(1, sizeof(struct gnutls_x509_key_purposes_st)); if (*p == NULL) { @@ -3109,7 +3022,7 @@ int gnutls_x509_key_purpose_set(gnutls_x509_key_purposes_t p, const char *oid) * Since: 3.3.0 **/ int gnutls_x509_key_purpose_get(gnutls_x509_key_purposes_t p, unsigned idx, - gnutls_datum_t * oid) + gnutls_datum_t *oid) { if (idx >= p->size) return gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); @@ -3134,7 +3047,7 @@ int gnutls_x509_key_purpose_get(gnutls_x509_key_purposes_t p, unsigned idx, * * Since: 3.3.0 **/ -int gnutls_x509_ext_import_key_purposes(const gnutls_datum_t * ext, +int gnutls_x509_ext_import_key_purposes(const gnutls_datum_t *ext, gnutls_x509_key_purposes_t p, unsigned int flags) { @@ -3144,8 +3057,8 @@ int gnutls_x509_ext_import_key_purposes(const gnutls_datum_t * ext, gnutls_datum_t oid = { NULL, 0 }; unsigned i; - result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.ExtKeyUsageSyntax", &c2); + result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.ExtKeyUsageSyntax", &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -3186,12 +3099,11 @@ int gnutls_x509_ext_import_key_purposes(const gnutls_datum_t * ext, } ret = 0; - cleanup: +cleanup: gnutls_free(oid.data); asn1_delete_structure(&c2); return ret; - } /** @@ -3208,14 +3120,14 @@ int gnutls_x509_ext_import_key_purposes(const gnutls_datum_t * ext, * Since: 3.3.0 **/ int gnutls_x509_ext_export_key_purposes(gnutls_x509_key_purposes_t p, - gnutls_datum_t * ext) + gnutls_datum_t *ext) { int result, ret; asn1_node c2 = NULL; unsigned i; - result = asn1_create_element - (_gnutls_get_pkix(), "PKIX1.ExtKeyUsageSyntax", &c2); + result = asn1_create_element(_gnutls_get_pkix(), + "PKIX1.ExtKeyUsageSyntax", &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -3251,7 +3163,7 @@ int gnutls_x509_ext_export_key_purposes(gnutls_x509_key_purposes_t p, ret = 0; - cleanup: +cleanup: asn1_delete_structure(&c2); return ret; } @@ -3264,14 +3176,13 @@ int gnutls_x509_ext_export_key_purposes(gnutls_x509_key_purposes_t p, * * Since: 3.3.8 **/ -void gnutls_x509_ext_deinit(gnutls_x509_ext_st * ext) +void gnutls_x509_ext_deinit(gnutls_x509_ext_st *ext) { gnutls_free(ext->oid); gnutls_free(ext->data.data); } -int _gnutls_x509_decode_ext(const gnutls_datum_t * der, - gnutls_x509_ext_st * out) +int _gnutls_x509_decode_ext(const gnutls_datum_t *der, gnutls_x509_ext_st *out) { asn1_node c2 = NULL; char str_critical[10]; @@ -3282,7 +3193,7 @@ int _gnutls_x509_decode_ext(const gnutls_datum_t * der, /* decode der */ result = - asn1_create_element(_gnutls_get_pkix(), "PKIX1.Extension", &c2); + asn1_create_element(_gnutls_get_pkix(), "PKIX1.Extension", &c2); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -3317,8 +3228,8 @@ int _gnutls_x509_decode_ext(const gnutls_datum_t * der, out->critical = 0; ret = _gnutls_x509_read_value(c2, "extnValue", &out->data); - if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE - || ret == GNUTLS_E_ASN1_ELEMENT_NOT_FOUND) { + if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE || + ret == GNUTLS_E_ASN1_ELEMENT_NOT_FOUND) { out->data.data = NULL; out->data.size = 0; } else if (ret < 0) { @@ -3334,12 +3245,11 @@ int _gnutls_x509_decode_ext(const gnutls_datum_t * der, ret = 0; goto cleanup; - fail: +fail: memset(out, 0, sizeof(*out)); - cleanup: +cleanup: asn1_delete_structure(&c2); return ret; - } /* flags can be zero or GNUTLS_EXT_FLAG_APPEND @@ -3361,8 +3271,8 @@ static int parse_tlsfeatures(asn1_node c2, gnutls_x509_tlsfeatures_t f, result = _gnutls_x509_read_uint(c2, nptr, &feature); - if (result == GNUTLS_E_ASN1_ELEMENT_NOT_FOUND - || result == GNUTLS_E_ASN1_VALUE_NOT_FOUND) { + if (result == GNUTLS_E_ASN1_ELEMENT_NOT_FOUND || + result == GNUTLS_E_ASN1_VALUE_NOT_FOUND) { break; } else if (result != GNUTLS_E_SUCCESS) { gnutls_assert(); @@ -3417,7 +3327,7 @@ static int parse_tlsfeatures(asn1_node c2, gnutls_x509_tlsfeatures_t f, * * Since: 3.5.1 **/ -int gnutls_x509_ext_import_tlsfeatures(const gnutls_datum_t * ext, +int gnutls_x509_ext_import_tlsfeatures(const gnutls_datum_t *ext, gnutls_x509_tlsfeatures_t f, unsigned int flags) { @@ -3447,7 +3357,7 @@ int gnutls_x509_ext_import_tlsfeatures(const gnutls_datum_t * ext, gnutls_assert(); } - cleanup: +cleanup: asn1_delete_structure(&c2); return ret; @@ -3467,7 +3377,7 @@ int gnutls_x509_ext_import_tlsfeatures(const gnutls_datum_t * ext, * Since: 3.5.1 **/ int gnutls_x509_ext_export_tlsfeatures(gnutls_x509_tlsfeatures_t f, - gnutls_datum_t * ext) + gnutls_datum_t *ext) { if (f == NULL) { gnutls_assert(); @@ -3485,7 +3395,6 @@ int gnutls_x509_ext_export_tlsfeatures(gnutls_x509_tlsfeatures_t f, } for (i = 0; i < f->size; ++i) { - ret = asn1_write_value(c2, "", "NEW", 1); if (ret != ASN1_SUCCESS) { gnutls_assert(); @@ -3508,7 +3417,7 @@ int gnutls_x509_ext_export_tlsfeatures(gnutls_x509_tlsfeatures_t f, ret = 0; - cleanup: +cleanup: asn1_delete_structure(&c2); return ret; } @@ -3575,7 +3484,7 @@ static void _gnutls_free_scts(struct gnutls_x509_ct_scts_st *scts) * * Returns: %GNUTLS_E_SUCCESS (0) on success, otherwise a negative error value. **/ -int gnutls_x509_ext_ct_scts_init(gnutls_x509_ct_scts_t * scts) +int gnutls_x509_ext_ct_scts_init(gnutls_x509_ct_scts_t *scts) { *scts = gnutls_calloc(1, sizeof(struct gnutls_x509_ct_scts_st)); if (*scts == NULL) @@ -3601,57 +3510,31 @@ struct sct_sign_algorithm_st { }; static const struct sct_sign_algorithm_st algos[] = { + { .codepoint = { 0x01, 0x01 }, .sign_algo = GNUTLS_SIGN_RSA_MD5 }, + { .codepoint = { 0x02, 0x01 }, .sign_algo = GNUTLS_SIGN_RSA_SHA1 }, + { .codepoint = { 0x03, 0x01 }, .sign_algo = GNUTLS_SIGN_RSA_SHA224 }, + { .codepoint = { 0x04, 0x01 }, .sign_algo = GNUTLS_SIGN_RSA_SHA256 }, + { .codepoint = { 0x05, 0x01 }, .sign_algo = GNUTLS_SIGN_RSA_SHA384 }, { - .codepoint = {0x01, 0x01}, - .sign_algo = GNUTLS_SIGN_RSA_MD5}, - { - .codepoint = {0x02, 0x01}, - .sign_algo = GNUTLS_SIGN_RSA_SHA1}, - { - .codepoint = {0x03, 0x01}, - .sign_algo = GNUTLS_SIGN_RSA_SHA224}, - { - .codepoint = {0x04, 0x01}, - .sign_algo = GNUTLS_SIGN_RSA_SHA256}, - { - .codepoint = {0x05, 0x01}, - .sign_algo = GNUTLS_SIGN_RSA_SHA384}, - { - .codepoint = {0x06, 0x01}, - .sign_algo = GNUTLS_SIGN_RSA_SHA512, - }, - { - .codepoint = {0x02, 0x02}, - .sign_algo = GNUTLS_SIGN_DSA_SHA1}, - { - .codepoint = {0x03, 0x02}, - .sign_algo = GNUTLS_SIGN_DSA_SHA224}, + .codepoint = { 0x06, 0x01 }, + .sign_algo = GNUTLS_SIGN_RSA_SHA512, + }, + { .codepoint = { 0x02, 0x02 }, .sign_algo = GNUTLS_SIGN_DSA_SHA1 }, + { .codepoint = { 0x03, 0x02 }, .sign_algo = GNUTLS_SIGN_DSA_SHA224 }, + { .codepoint = { 0x04, 0x02 }, .sign_algo = GNUTLS_SIGN_DSA_SHA256 }, + { .codepoint = { 0x05, 0x02 }, .sign_algo = GNUTLS_SIGN_DSA_SHA384 }, { - .codepoint = {0x04, 0x02}, - .sign_algo = GNUTLS_SIGN_DSA_SHA256}, + .codepoint = { 0x06, 0x02 }, + .sign_algo = GNUTLS_SIGN_DSA_SHA512, + }, + { .codepoint = { 0x02, 0x03 }, .sign_algo = GNUTLS_SIGN_ECDSA_SHA1 }, + { .codepoint = { 0x03, 0x03 }, .sign_algo = GNUTLS_SIGN_ECDSA_SHA224 }, + { .codepoint = { 0x04, 0x03 }, .sign_algo = GNUTLS_SIGN_ECDSA_SHA256 }, + { .codepoint = { 0x05, 0x03 }, .sign_algo = GNUTLS_SIGN_ECDSA_SHA384 }, { - .codepoint = {0x05, 0x02}, - .sign_algo = GNUTLS_SIGN_DSA_SHA384}, - { - .codepoint = {0x06, 0x02}, - .sign_algo = GNUTLS_SIGN_DSA_SHA512, - }, - { - .codepoint = {0x02, 0x03}, - .sign_algo = GNUTLS_SIGN_ECDSA_SHA1}, - { - .codepoint = {0x03, 0x03}, - .sign_algo = GNUTLS_SIGN_ECDSA_SHA224}, - { - .codepoint = {0x04, 0x03}, - .sign_algo = GNUTLS_SIGN_ECDSA_SHA256}, - { - .codepoint = {0x05, 0x03}, - .sign_algo = GNUTLS_SIGN_ECDSA_SHA384}, - { - .codepoint = {0x06, 0x03}, - .sign_algo = GNUTLS_SIGN_ECDSA_SHA512, - } + .codepoint = { 0x06, 0x03 }, + .sign_algo = GNUTLS_SIGN_ECDSA_SHA512, + } }; static gnutls_sign_algorithm_t get_sigalg(uint8_t hash_algo, uint8_t sig_algo) @@ -3664,8 +3547,8 @@ static gnutls_sign_algorithm_t get_sigalg(uint8_t hash_algo, uint8_t sig_algo) for (i = 0; i < num_algos; i++) { algo = &algos[i]; - if (algo->codepoint[0] == hash_algo - && algo->codepoint[1] == sig_algo) + if (algo->codepoint[0] == hash_algo && + algo->codepoint[1] == sig_algo) break; } @@ -3694,7 +3577,7 @@ static int write_sigalg(gnutls_sign_algorithm_t sigalg, uint8_t out[]) return 0; } -static int _gnutls_parse_ct_sct(uint8_t * ptr, uint16_t length, +static int _gnutls_parse_ct_sct(uint8_t *ptr, uint16_t length, struct ct_sct_st *sct) { uint16_t sig_length; @@ -3718,7 +3601,7 @@ static int _gnutls_parse_ct_sct(uint8_t * ptr, uint16_t length, /* Timestamp */ DECR_LENGTH_RET(length, sizeof(uint64_t), GNUTLS_E_PREMATURE_TERMINATION); - sct->timestamp = (uint64_t) _gnutls_read_uint64(ptr); + sct->timestamp = (uint64_t)_gnutls_read_uint64(ptr); ptr += sizeof(uint64_t); /* @@ -3743,8 +3626,8 @@ static int _gnutls_parse_ct_sct(uint8_t * ptr, uint16_t length, sct->sigalg = get_sigalg(hash_algo, sig_algo); if (sct->sigalg == GNUTLS_SIGN_UNKNOWN) - return - gnutls_assert_val(GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM); + return gnutls_assert_val( + GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM); /* Signature, length and content */ DECR_LENGTH_RET(length, sizeof(uint16_t), @@ -3766,13 +3649,13 @@ static int _gnutls_parse_ct_sct(uint8_t * ptr, uint16_t length, return 0; } -static int _gnutls_ct_sct_add(struct ct_sct_st *sct, - struct ct_sct_st **scts, size_t *size) +static int _gnutls_ct_sct_add(struct ct_sct_st *sct, struct ct_sct_st **scts, + size_t *size) { struct ct_sct_st *new_scts; - new_scts = - _gnutls_reallocarray(*scts, *size + 1, sizeof(struct ct_sct_st)); + new_scts = _gnutls_reallocarray(*scts, *size + 1, + sizeof(struct ct_sct_st)); if (new_scts == NULL) return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); @@ -3783,7 +3666,7 @@ static int _gnutls_ct_sct_add(struct ct_sct_st *sct, return 0; } -static int _gnutls_export_ct_v1_sct(gnutls_buffer_st * buf, +static int _gnutls_export_ct_v1_sct(gnutls_buffer_st *buf, const struct ct_sct_st *sct) { int ret; @@ -3798,27 +3681,23 @@ static int _gnutls_export_ct_v1_sct(gnutls_buffer_st * buf, return gnutls_assert_val(ret); /* Version */ - if ((ret = _gnutls_buffer_append_data(buf, - &sct->version, + if ((ret = _gnutls_buffer_append_data(buf, &sct->version, sizeof(uint8_t))) < 0) return gnutls_assert_val(ret); /* Log ID - has a fixed 32-byte size in version 1 */ - if ((ret = _gnutls_buffer_append_data(buf, - sct->logid, + if ((ret = _gnutls_buffer_append_data(buf, sct->logid, SCT_V1_LOGID_SIZE)) < 0) return gnutls_assert_val(ret); /* Timestamp */ _gnutls_write_uint64(sct->timestamp, tstamp_out); - if ((ret = _gnutls_buffer_append_data(buf, - tstamp_out, + if ((ret = _gnutls_buffer_append_data(buf, tstamp_out, sizeof(tstamp_out))) < 0) return gnutls_assert_val(ret); /* Extensions */ - if ((ret = _gnutls_buffer_append_data(buf, - extensions, + if ((ret = _gnutls_buffer_append_data(buf, extensions, sizeof(extensions))) < 0) return gnutls_assert_val(ret); @@ -3830,9 +3709,8 @@ static int _gnutls_export_ct_v1_sct(gnutls_buffer_st * buf, return gnutls_assert_val(ret); /* Signature */ - if ((ret = _gnutls_buffer_append_data_prefix(buf, 16, - sct->signature.data, - sct->signature.size)) < 0) + if ((ret = _gnutls_buffer_append_data_prefix( + buf, 16, sct->signature.data, sct->signature.size)) < 0) return gnutls_assert_val(ret); /* Fill the length */ @@ -3857,7 +3735,7 @@ static int _gnutls_export_ct_v1_sct(gnutls_buffer_st * buf, * * Returns: %GNUTLS_E_SUCCESS (0) on success or a negative error value. **/ -int gnutls_x509_ext_ct_import_scts(const gnutls_datum_t * ext, +int gnutls_x509_ext_ct_import_scts(const gnutls_datum_t *ext, gnutls_x509_ct_scts_t scts, unsigned int flags) { @@ -3870,9 +3748,8 @@ int gnutls_x509_ext_ct_import_scts(const gnutls_datum_t * ext, if (flags != 0) return gnutls_assert_val(GNUTLS_E_UNIMPLEMENTED_FEATURE); - retval = - _gnutls_x509_decode_string(ASN1_ETYPE_OCTET_STRING, - ext->data, ext->size, &scts_content, 0); + retval = _gnutls_x509_decode_string(ASN1_ETYPE_OCTET_STRING, ext->data, + ext->size, &scts_content, 0); if (retval < 0) return gnutls_assert_val(retval); @@ -3935,7 +3812,7 @@ int gnutls_x509_ext_ct_import_scts(const gnutls_datum_t * ext, * Returns: %GNUTLS_E_SUCCESS (0) on success or a negative error value. **/ int gnutls_x509_ext_ct_export_scts(const gnutls_x509_ct_scts_t scts, - gnutls_datum_t * ext) + gnutls_datum_t *ext) { int ret; gnutls_buffer_st buf; @@ -3947,7 +3824,8 @@ int gnutls_x509_ext_ct_export_scts(const gnutls_x509_ct_scts_t scts, _gnutls_buffer_append_prefix(&buf, 16, 0); for (size_t i = 0; i < scts->size; i++) { - if ((ret = _gnutls_export_ct_v1_sct(&buf, &scts->scts[i])) < 0) { + if ((ret = _gnutls_export_ct_v1_sct(&buf, &scts->scts[i])) < + 0) { gnutls_assert(); goto cleanup; } @@ -3957,8 +3835,8 @@ int gnutls_x509_ext_ct_export_scts(const gnutls_x509_ct_scts_t scts, _gnutls_write_uint16(buf.length - 2, buf.data); /* DER-encode the whole thing as an opaque OCTET STRING, as the spec mandates */ - ret = _gnutls_x509_encode_string(ASN1_ETYPE_OCTET_STRING, - buf.data, buf.length, ext); + ret = _gnutls_x509_encode_string(ASN1_ETYPE_OCTET_STRING, buf.data, + buf.length, ext); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -3966,7 +3844,7 @@ int gnutls_x509_ext_ct_export_scts(const gnutls_x509_ct_scts_t scts, ret = GNUTLS_E_SUCCESS; - cleanup: +cleanup: _gnutls_buffer_clear(&buf); return ret; } @@ -4027,10 +3905,9 @@ int gnutls_x509_ct_sct_get_version(gnutls_x509_ct_scts_t scts, unsigned idx, * or a negative error value. **/ int gnutls_x509_ct_sct_get(const gnutls_x509_ct_scts_t scts, unsigned idx, - time_t * timestamp, - gnutls_datum_t * logid, - gnutls_sign_algorithm_t * sigalg, - gnutls_datum_t * signature) + time_t *timestamp, gnutls_datum_t *logid, + gnutls_sign_algorithm_t *sigalg, + gnutls_datum_t *signature) { int retval = 0; struct ct_sct_st *sct; @@ -4043,16 +3920,15 @@ int gnutls_x509_ct_sct_get(const gnutls_x509_ct_scts_t scts, unsigned idx, return GNUTLS_E_INVALID_REQUEST; if (signature) { - retval = _gnutls_set_datum(signature, - sct->signature.data, + retval = _gnutls_set_datum(signature, sct->signature.data, sct->signature.size); if (retval < 0) return retval; } if (logid) { - retval = _gnutls_set_datum(logid, - sct->logid, SCT_V1_LOGID_SIZE); + retval = + _gnutls_set_datum(logid, sct->logid, SCT_V1_LOGID_SIZE); if (retval < 0) { _gnutls_free_datum(signature); return retval; diff --git a/lib/x509/x509_ext_int.h b/lib/x509/x509_ext_int.h index 23df542d7e..558d619565 100644 --- a/lib/x509/x509_ext_int.h +++ b/lib/x509/x509_ext_int.h @@ -20,16 +20,16 @@ */ #ifndef GNUTLS_LIB_X509_X509_EXT_INT_H -# define GNUTLS_LIB_X509_X509_EXT_INT_H +#define GNUTLS_LIB_X509_X509_EXT_INT_H -# include "gnutls_int.h" +#include "gnutls_int.h" struct name_st { unsigned int type; gnutls_datum_t san; gnutls_datum_t othername_oid; }; -int _gnutls_alt_name_process(gnutls_datum_t * out, unsigned type, - const gnutls_datum_t * san, unsigned raw); +int _gnutls_alt_name_process(gnutls_datum_t *out, unsigned type, + const gnutls_datum_t *san, unsigned raw); -#endif /* GNUTLS_LIB_X509_X509_EXT_INT_H */ +#endif /* GNUTLS_LIB_X509_X509_EXT_INT_H */ diff --git a/lib/x509/x509_int.h b/lib/x509/x509_int.h index cf2044d58d..204531f768 100644 --- a/lib/x509/x509_int.h +++ b/lib/x509/x509_int.h @@ -22,42 +22,42 @@ */ #ifndef GNUTLS_LIB_X509_X509_INT_H -# define GNUTLS_LIB_X509_X509_INT_H - -# include -# include -# include - -# include - -# define MAX_CRQ_EXTENSIONS_SIZE 8*1024 -# define MAX_OID_SIZE 128 -# define MAX_KEY_ID_SIZE 128 -# define MAX_SALT_SIZE 256 -# define MAX_NAME_SIZE (3*ASN1_MAX_NAME_SIZE) - -# define HASH_OID_SHA1 "1.3.14.3.2.26" -# define HASH_OID_MD5 "1.2.840.113549.2.5" -# define HASH_OID_MD2 "1.2.840.113549.2.2" -# define HASH_OID_RMD160 "1.3.36.3.2.1" -# define HASH_OID_SHA224 "2.16.840.1.101.3.4.2.4" -# define HASH_OID_SHA256 "2.16.840.1.101.3.4.2.1" -# define HASH_OID_SHA384 "2.16.840.1.101.3.4.2.2" -# define HASH_OID_SHA512 "2.16.840.1.101.3.4.2.3" -# define HASH_OID_SHA3_224 "2.16.840.1.101.3.4.2.7" -# define HASH_OID_SHA3_256 "2.16.840.1.101.3.4.2.8" -# define HASH_OID_SHA3_384 "2.16.840.1.101.3.4.2.9" -# define HASH_OID_SHA3_512 "2.16.840.1.101.3.4.2.10" -# define HASH_OID_SHAKE_128 "2.16.840.1.101.3.4.2.11" -# define HASH_OID_SHAKE_256 "2.16.840.1.101.3.4.2.12" -# define HASH_OID_GOST_R_3411_94 "1.2.643.2.2.9" -# define HASH_OID_STREEBOG_256 "1.2.643.7.1.1.2.2" -# define HASH_OID_STREEBOG_512 "1.2.643.7.1.1.2.3" - -# define HASH_OID_GOST_R_3411_94_CRYPTOPRO_PARAMS "1.2.643.2.2.30.1" +#define GNUTLS_LIB_X509_X509_INT_H + +#include +#include +#include + +#include + +#define MAX_CRQ_EXTENSIONS_SIZE 8 * 1024 +#define MAX_OID_SIZE 128 +#define MAX_KEY_ID_SIZE 128 +#define MAX_SALT_SIZE 256 +#define MAX_NAME_SIZE (3 * ASN1_MAX_NAME_SIZE) + +#define HASH_OID_SHA1 "1.3.14.3.2.26" +#define HASH_OID_MD5 "1.2.840.113549.2.5" +#define HASH_OID_MD2 "1.2.840.113549.2.2" +#define HASH_OID_RMD160 "1.3.36.3.2.1" +#define HASH_OID_SHA224 "2.16.840.1.101.3.4.2.4" +#define HASH_OID_SHA256 "2.16.840.1.101.3.4.2.1" +#define HASH_OID_SHA384 "2.16.840.1.101.3.4.2.2" +#define HASH_OID_SHA512 "2.16.840.1.101.3.4.2.3" +#define HASH_OID_SHA3_224 "2.16.840.1.101.3.4.2.7" +#define HASH_OID_SHA3_256 "2.16.840.1.101.3.4.2.8" +#define HASH_OID_SHA3_384 "2.16.840.1.101.3.4.2.9" +#define HASH_OID_SHA3_512 "2.16.840.1.101.3.4.2.10" +#define HASH_OID_SHAKE_128 "2.16.840.1.101.3.4.2.11" +#define HASH_OID_SHAKE_256 "2.16.840.1.101.3.4.2.12" +#define HASH_OID_GOST_R_3411_94 "1.2.643.2.2.9" +#define HASH_OID_STREEBOG_256 "1.2.643.7.1.1.2.2" +#define HASH_OID_STREEBOG_512 "1.2.643.7.1.1.2.3" + +#define HASH_OID_GOST_R_3411_94_CRYPTOPRO_PARAMS "1.2.643.2.2.30.1" /* from rfc8479 */ -# define OID_ATTR_PROV_SEED "1.3.6.1.4.1.2312.18.8.1" +#define OID_ATTR_PROV_SEED "1.3.6.1.4.1.2312.18.8.1" struct gnutls_x509_crl_iter { /* This is used to optimize reads by gnutls_x509_crl_iter_crt_serial() */ @@ -85,8 +85,8 @@ typedef struct gnutls_x509_dn_st { typedef struct gnutls_x509_crt_int { asn1_node cert; int use_extensions; - unsigned expanded; /* a certificate has been expanded */ - unsigned modified; /* the cached values below may no longer be valid */ + unsigned expanded; /* a certificate has been expanded */ + unsigned modified; /* the cached values below may no longer be valid */ unsigned flags; struct pin_info_st pin; @@ -109,7 +109,7 @@ typedef struct gnutls_x509_crt_int { gnutls_x509_dn_st idn; } gnutls_x509_crt_int; -# define MODIFIED(crt) crt->modified=1 +#define MODIFIED(crt) crt->modified = 1 typedef struct gnutls_x509_crq_int { asn1_node crq; @@ -154,272 +154,253 @@ typedef struct gnutls_x509_privkey_int { int _gnutls_x509_crt_cpy(gnutls_x509_crt_t dest, gnutls_x509_crt_t src); -int _gnutls_x509_compare_raw_dn(const gnutls_datum_t * dn1, - const gnutls_datum_t * dn2); +int _gnutls_x509_compare_raw_dn(const gnutls_datum_t *dn1, + const gnutls_datum_t *dn2); int _gnutls_x509_crl_cpy(gnutls_x509_crl_t dest, gnutls_x509_crl_t src); int _gnutls_x509_crl_get_raw_issuer_dn(gnutls_x509_crl_t crl, - gnutls_datum_t * dn); + gnutls_datum_t *dn); /* sign.c */ int _gnutls_x509_get_tbs(asn1_node cert, const char *tbs_name, - gnutls_datum_t * tbs); + gnutls_datum_t *tbs); int _gnutls_x509_pkix_sign(asn1_node src, const char *src_name, - gnutls_digest_algorithm_t, - unsigned int flags, + gnutls_digest_algorithm_t, unsigned int flags, gnutls_x509_crt_t issuer, gnutls_privkey_t issuer_key); int _gnutls_x509_crt_get_spki_params(gnutls_x509_crt_t issuer, - const gnutls_x509_spki_st * key_params, - gnutls_x509_spki_st * params); + const gnutls_x509_spki_st *key_params, + gnutls_x509_spki_st *params); -# define map_errs_to_zero(x) ((x)<0?0:(x)) +#define map_errs_to_zero(x) ((x) < 0 ? 0 : (x)) /* dn.c */ -# define OID_X520_COUNTRY_NAME "2.5.4.6" -# define OID_X520_ORGANIZATION_NAME "2.5.4.10" -# define OID_X520_ORGANIZATIONAL_UNIT_NAME "2.5.4.11" -# define OID_X520_COMMON_NAME "2.5.4.3" -# define OID_X520_LOCALITY_NAME "2.5.4.7" -# define OID_X520_STATE_OR_PROVINCE_NAME "2.5.4.8" -# define OID_LDAP_DC "0.9.2342.19200300.100.1.25" -# define OID_LDAP_UID "0.9.2342.19200300.100.1.1" -# define OID_PKCS9_EMAIL "1.2.840.113549.1.9.1" - -int _gnutls_x509_parse_dn(asn1_node asn1_struct, - const char *asn1_rdn_name, char *buf, - size_t *sizeof_buf, unsigned flags); - -int -_gnutls_x509_get_dn(asn1_node asn1_struct, - const char *asn1_rdn_name, gnutls_datum_t * dn, - unsigned flags); - -int -_gnutls_x509_parse_dn_oid(asn1_node asn1_struct, - const char *asn1_rdn_name, - const char *given_oid, int indx, - unsigned int raw_flag, gnutls_datum_t * out); - -int _gnutls_x509_set_dn_oid(asn1_node asn1_struct, - const char *asn1_rdn_name, const char *oid, - int raw_flag, const char *name, int sizeof_name); - -int _gnutls_x509_get_dn_oid(asn1_node asn1_struct, - const char *asn1_rdn_name, +#define OID_X520_COUNTRY_NAME "2.5.4.6" +#define OID_X520_ORGANIZATION_NAME "2.5.4.10" +#define OID_X520_ORGANIZATIONAL_UNIT_NAME "2.5.4.11" +#define OID_X520_COMMON_NAME "2.5.4.3" +#define OID_X520_LOCALITY_NAME "2.5.4.7" +#define OID_X520_STATE_OR_PROVINCE_NAME "2.5.4.8" +#define OID_LDAP_DC "0.9.2342.19200300.100.1.25" +#define OID_LDAP_UID "0.9.2342.19200300.100.1.1" +#define OID_PKCS9_EMAIL "1.2.840.113549.1.9.1" + +int _gnutls_x509_parse_dn(asn1_node asn1_struct, const char *asn1_rdn_name, + char *buf, size_t *sizeof_buf, unsigned flags); + +int _gnutls_x509_get_dn(asn1_node asn1_struct, const char *asn1_rdn_name, + gnutls_datum_t *dn, unsigned flags); + +int _gnutls_x509_parse_dn_oid(asn1_node asn1_struct, const char *asn1_rdn_name, + const char *given_oid, int indx, + unsigned int raw_flag, gnutls_datum_t *out); + +int _gnutls_x509_set_dn_oid(asn1_node asn1_struct, const char *asn1_rdn_name, + const char *oid, int raw_flag, const char *name, + int sizeof_name); + +int _gnutls_x509_get_dn_oid(asn1_node asn1_struct, const char *asn1_rdn_name, int indx, void *_oid, size_t *sizeof_oid); int _gnutls_encode_othername_data(unsigned flags, const void *data, - unsigned data_size, gnutls_datum_t * output); + unsigned data_size, gnutls_datum_t *output); -int _gnutls_parse_general_name(asn1_node src, const char *src_name, - int seq, void *name, size_t *name_size, +int _gnutls_parse_general_name(asn1_node src, const char *src_name, int seq, + void *name, size_t *name_size, unsigned int *ret_type, int othername_oid); -int -_gnutls_parse_general_name2(asn1_node src, const char *src_name, - int seq, gnutls_datum_t * dname, - unsigned int *ret_type, int othername_oid); +int _gnutls_parse_general_name2(asn1_node src, const char *src_name, int seq, + gnutls_datum_t *dname, unsigned int *ret_type, + int othername_oid); -int -_gnutls_write_new_general_name(asn1_node ext, const char *ext_name, - gnutls_x509_subject_alt_name_t type, - const void *data, unsigned int data_size); +int _gnutls_write_new_general_name(asn1_node ext, const char *ext_name, + gnutls_x509_subject_alt_name_t type, + const void *data, unsigned int data_size); -int -_gnutls_write_new_othername(asn1_node ext, const char *ext_name, - const char *oid, - const void *data, unsigned int data_size); +int _gnutls_write_new_othername(asn1_node ext, const char *ext_name, + const char *oid, const void *data, + unsigned int data_size); /* dsa.c */ /* verify.c */ int gnutls_x509_crt_is_issuer(gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer); -int -_gnutls_x509_verify_algorithm(gnutls_digest_algorithm_t * hash, - const gnutls_datum_t * signature, - gnutls_pk_algorithm_t pk, - gnutls_pk_params_st * issuer_params); +int _gnutls_x509_verify_algorithm(gnutls_digest_algorithm_t *hash, + const gnutls_datum_t *signature, + gnutls_pk_algorithm_t pk, + gnutls_pk_params_st *issuer_params); /* privkey.h */ void _gnutls_x509_privkey_reinit(gnutls_x509_privkey_t key); -asn1_node _gnutls_privkey_decode_pkcs1_rsa_key(const gnutls_datum_t * - raw_key, +asn1_node _gnutls_privkey_decode_pkcs1_rsa_key(const gnutls_datum_t *raw_key, gnutls_x509_privkey_t pkey); -int _gnutls_privkey_decode_ecc_key(asn1_node * pkey_asn, const gnutls_datum_t * - raw_key, +int _gnutls_privkey_decode_ecc_key(asn1_node *pkey_asn, + const gnutls_datum_t *raw_key, gnutls_x509_privkey_t pkey, gnutls_ecc_curve_t curve); -int _gnutls_privkey_decode_eddsa_key(asn1_node * pkey_asn, - const gnutls_datum_t * raw_key, +int _gnutls_privkey_decode_eddsa_key(asn1_node *pkey_asn, + const gnutls_datum_t *raw_key, gnutls_x509_privkey_t pkey, gnutls_ecc_curve_t curve); -int -_gnutls_x509_read_ecc_params(uint8_t * der, int dersize, unsigned int *curve); +int _gnutls_x509_read_ecc_params(uint8_t *der, int dersize, + unsigned int *curve); -int -_gnutls_x509_read_gost_params(uint8_t * der, int dersize, - gnutls_pk_params_st * params, - gnutls_pk_algorithm_t algo); +int _gnutls_x509_read_gost_params(uint8_t *der, int dersize, + gnutls_pk_params_st *params, + gnutls_pk_algorithm_t algo); -int _gnutls_asn1_encode_privkey(asn1_node * c2, gnutls_pk_params_st * params); +int _gnutls_asn1_encode_privkey(asn1_node *c2, gnutls_pk_params_st *params); void _gnutls_x509_privkey_get_spki_params(gnutls_x509_privkey_t key, - gnutls_x509_spki_st * params); + gnutls_x509_spki_st *params); -int _gnutls_x509_read_rsa_pss_params(uint8_t * der, int dersize, - gnutls_x509_spki_st * params); -int _gnutls_x509_write_rsa_pss_params(const gnutls_x509_spki_st * params, - gnutls_datum_t * der); +int _gnutls_x509_read_rsa_pss_params(uint8_t *der, int dersize, + gnutls_x509_spki_st *params); +int _gnutls_x509_write_rsa_pss_params(const gnutls_x509_spki_st *params, + gnutls_datum_t *der); /* extensions.c */ -int _gnutls_x509_crl_get_extension_oid(gnutls_x509_crl_t crl, - int indx, void *oid, size_t *sizeof_oid); +int _gnutls_x509_crl_get_extension_oid(gnutls_x509_crl_t crl, int indx, + void *oid, size_t *sizeof_oid); -int _gnutls_x509_crl_set_extension(gnutls_x509_crl_t crl, - const char *ext_id, - const gnutls_datum_t * ext_data, +int _gnutls_x509_crl_set_extension(gnutls_x509_crl_t crl, const char *ext_id, + const gnutls_datum_t *ext_data, unsigned int critical); -int -_gnutls_x509_crl_get_extension(gnutls_x509_crl_t crl, - const char *extension_id, int indx, - gnutls_datum_t * data, unsigned int *critical); +int _gnutls_x509_crl_get_extension(gnutls_x509_crl_t crl, + const char *extension_id, int indx, + gnutls_datum_t *data, + unsigned int *critical); -int -_gnutls_x509_crt_get_extension(gnutls_x509_crt_t cert, - const char *extension_id, int indx, - gnutls_datum_t * data, unsigned int *critical); +int _gnutls_x509_crt_get_extension(gnutls_x509_crt_t cert, + const char *extension_id, int indx, + gnutls_datum_t *data, + unsigned int *critical); -int _gnutls_x509_crt_get_extension_oid(gnutls_x509_crt_t cert, - int indx, void *ret, size_t *ret_size); +int _gnutls_x509_crt_get_extension_oid(gnutls_x509_crt_t cert, int indx, + void *ret, size_t *ret_size); int _gnutls_x509_crt_set_extension(gnutls_x509_crt_t cert, const char *extension_id, - const gnutls_datum_t * ext_data, + const gnutls_datum_t *ext_data, unsigned int critical); -int -_gnutls_x509_ext_extract_number(uint8_t * number, - size_t *nr_size, - uint8_t * extnValue, int extnValueLen); -int -_gnutls_x509_ext_gen_number(const uint8_t * number, size_t nr_size, - gnutls_datum_t * der_ext); - -int -_gnutls_write_general_name(asn1_node ext, const char *ext_name, - gnutls_x509_subject_alt_name_t type, - const void *data, unsigned int data_size); - -int _gnutls_x509_ext_gen_subject_alt_name(gnutls_x509_subject_alt_name_t - type, +int _gnutls_x509_ext_extract_number(uint8_t *number, size_t *nr_size, + uint8_t *extnValue, int extnValueLen); +int _gnutls_x509_ext_gen_number(const uint8_t *number, size_t nr_size, + gnutls_datum_t *der_ext); + +int _gnutls_write_general_name(asn1_node ext, const char *ext_name, + gnutls_x509_subject_alt_name_t type, + const void *data, unsigned int data_size); + +int _gnutls_x509_ext_gen_subject_alt_name(gnutls_x509_subject_alt_name_t type, const char *othername_oid, const void *data, unsigned int data_size, - const gnutls_datum_t * prev_der_ext, - gnutls_datum_t * der_ext); + const gnutls_datum_t *prev_der_ext, + gnutls_datum_t *der_ext); int _gnutls_x509_ext_gen_auth_key_id(const void *id, size_t id_size, - gnutls_datum_t * der_data); + gnutls_datum_t *der_data); /* mpi.c */ int _gnutls_x509_crq_get_mpis(gnutls_x509_crq_t cert, gnutls_pk_params_st *); int _gnutls_x509_crt_get_mpis(gnutls_x509_crt_t cert, - gnutls_pk_params_st * params); + gnutls_pk_params_st *params); -int _gnutls_x509_read_pubkey_params(gnutls_pk_algorithm_t, uint8_t * der, - int dersize, gnutls_pk_params_st * params); -int _gnutls_x509_check_pubkey_params(gnutls_pk_params_st * params); +int _gnutls_x509_read_pubkey_params(gnutls_pk_algorithm_t, uint8_t *der, + int dersize, gnutls_pk_params_st *params); +int _gnutls_x509_check_pubkey_params(gnutls_pk_params_st *params); -int _gnutls_x509_read_pubkey(gnutls_pk_algorithm_t, uint8_t * der, - int dersize, gnutls_pk_params_st * params); +int _gnutls_x509_read_pubkey(gnutls_pk_algorithm_t, uint8_t *der, int dersize, + gnutls_pk_params_st *params); int _gnutls_x509_read_pubkey_signature_params(gnutls_pk_algorithm_t algo, - uint8_t * der, int dersize, - gnutls_pk_params_st * params); + uint8_t *der, int dersize, + gnutls_pk_params_st *params); int _gnutls_x509_write_ecc_params(const gnutls_ecc_curve_t curve, - gnutls_datum_t * der); -int _gnutls_x509_write_ecc_pubkey(const gnutls_pk_params_st * params, - gnutls_datum_t * der); + gnutls_datum_t *der); +int _gnutls_x509_write_ecc_pubkey(const gnutls_pk_params_st *params, + gnutls_datum_t *der); -int _gnutls_x509_write_eddsa_pubkey(const gnutls_pk_params_st * params, - gnutls_datum_t * der); +int _gnutls_x509_write_eddsa_pubkey(const gnutls_pk_params_st *params, + gnutls_datum_t *der); -int -_gnutls_x509_write_pubkey_params(const gnutls_pk_params_st * params, - gnutls_datum_t * der); -int _gnutls_x509_write_pubkey(const gnutls_pk_params_st * params, - gnutls_datum_t * der); +int _gnutls_x509_write_pubkey_params(const gnutls_pk_params_st *params, + gnutls_datum_t *der); +int _gnutls_x509_write_pubkey(const gnutls_pk_params_st *params, + gnutls_datum_t *der); int _gnutls_x509_read_uint(asn1_node node, const char *value, unsigned int *ret); -int _gnutls_x509_read_der_int(uint8_t * der, int dersize, bigint_t * out); -int _gnutls_x509_read_der_uint(uint8_t * der, int dersize, unsigned int *out); +int _gnutls_x509_read_der_int(uint8_t *der, int dersize, bigint_t *out); +int _gnutls_x509_read_der_uint(uint8_t *der, int dersize, unsigned int *out); -int _gnutls_x509_read_int(asn1_node node, const char *value, - bigint_t * ret_mpi); +int _gnutls_x509_read_int(asn1_node node, const char *value, bigint_t *ret_mpi); int _gnutls_x509_write_int(asn1_node node, const char *value, bigint_t mpi, int lz); int _gnutls_x509_write_uint32(asn1_node node, const char *value, uint32_t num); int _gnutls_x509_read_key_int(asn1_node node, const char *value, - bigint_t * ret_mpi); + bigint_t *ret_mpi); int _gnutls_x509_write_key_int(asn1_node node, const char *value, bigint_t mpi, int lz); int _gnutls_x509_read_key_int_le(asn1_node node, const char *value, - bigint_t * ret_mpi); + bigint_t *ret_mpi); int _gnutls_x509_write_key_int_le(asn1_node node, const char *value, bigint_t mpi); int _gnutls_x509_read_pkalgo_params(asn1_node src, const char *src_name, - gnutls_x509_spki_st * params, + gnutls_x509_spki_st *params, unsigned is_sig); int _gnutls_x509_write_sign_params(asn1_node dst, const char *dst_name, - const gnutls_sign_entry_st * se, - gnutls_x509_spki_st * params); + const gnutls_sign_entry_st *se, + gnutls_x509_spki_st *params); -# define _gnutls_x509_read_sign_params(src,name,params) _gnutls_x509_read_pkalgo_params(src,name,params,1) -# define _gnutls_x509_read_spki_params(src,name,params) _gnutls_x509_read_pkalgo_params(src,name,params,0) +#define _gnutls_x509_read_sign_params(src, name, params) \ + _gnutls_x509_read_pkalgo_params(src, name, params, 1) +#define _gnutls_x509_read_spki_params(src, name, params) \ + _gnutls_x509_read_pkalgo_params(src, name, params, 0) int _gnutls_x509_write_spki_params(asn1_node dst, const char *dst_name, - gnutls_x509_spki_st * params); + gnutls_x509_spki_st *params); -inline static int -_gnutls_x509_crt_read_spki_params(gnutls_x509_crt_t crt, - gnutls_x509_spki_st * params) +inline static int _gnutls_x509_crt_read_spki_params(gnutls_x509_crt_t crt, + gnutls_x509_spki_st *params) { return _gnutls_x509_read_spki_params(crt->cert, "tbsCertificate." "subjectPublicKeyInfo." - "algorithm", params); + "algorithm", + params); } -inline static int -_gnutls_x509_crq_read_spki_params(gnutls_x509_crq_t crt, - gnutls_x509_spki_st * params) +inline static int _gnutls_x509_crq_read_spki_params(gnutls_x509_crq_t crt, + gnutls_x509_spki_st *params) { return _gnutls_x509_read_spki_params(crt->crq, "certificationRequestInfo." "subjectPKInfo." - "algorithm", params); + "algorithm", + params); } /* pkcs12.h */ -# include +#include typedef struct gnutls_pkcs12_int { asn1_node pkcs12; unsigned expanded; } gnutls_pkcs12_int; -# define MAX_BAG_ELEMENTS 32 +#define MAX_BAG_ELEMENTS 32 struct bag_element { gnutls_datum_t data; @@ -433,84 +414,71 @@ typedef struct gnutls_pkcs12_bag_int { unsigned bag_elements; } gnutls_pkcs12_bag_int; -# define BAG_PKCS8_KEY "1.2.840.113549.1.12.10.1.1" -# define BAG_PKCS8_ENCRYPTED_KEY "1.2.840.113549.1.12.10.1.2" -# define BAG_CERTIFICATE "1.2.840.113549.1.12.10.1.3" -# define BAG_CRL "1.2.840.113549.1.12.10.1.4" -# define BAG_SECRET "1.2.840.113549.1.12.10.1.5" +#define BAG_PKCS8_KEY "1.2.840.113549.1.12.10.1.1" +#define BAG_PKCS8_ENCRYPTED_KEY "1.2.840.113549.1.12.10.1.2" +#define BAG_CERTIFICATE "1.2.840.113549.1.12.10.1.3" +#define BAG_CRL "1.2.840.113549.1.12.10.1.4" +#define BAG_SECRET "1.2.840.113549.1.12.10.1.5" /* Bag attributes */ -# define FRIENDLY_NAME_OID "1.2.840.113549.1.9.20" -# define KEY_ID_OID "1.2.840.113549.1.9.21" +#define FRIENDLY_NAME_OID "1.2.840.113549.1.9.20" +#define KEY_ID_OID "1.2.840.113549.1.9.21" -int -_gnutls_pkcs12_string_to_key(const mac_entry_st * me, - unsigned int id, const uint8_t * salt, - unsigned int salt_size, unsigned int iter, - const char *pw, unsigned int req_keylen, - uint8_t * keybuf); +int _gnutls_pkcs12_string_to_key(const mac_entry_st *me, unsigned int id, + const uint8_t *salt, unsigned int salt_size, + unsigned int iter, const char *pw, + unsigned int req_keylen, uint8_t *keybuf); -int _pkcs12_decode_safe_contents(const gnutls_datum_t * content, +int _pkcs12_decode_safe_contents(const gnutls_datum_t *content, gnutls_pkcs12_bag_t bag); -int -_pkcs12_encode_safe_contents(gnutls_pkcs12_bag_t bag, asn1_node * content, - int *enc); +int _pkcs12_encode_safe_contents(gnutls_pkcs12_bag_t bag, asn1_node *content, + int *enc); int _pkcs12_decode_crt_bag(gnutls_pkcs12_bag_type_t type, - const gnutls_datum_t * in, gnutls_datum_t * out); + const gnutls_datum_t *in, gnutls_datum_t *out); int _pkcs12_encode_crt_bag(gnutls_pkcs12_bag_type_t type, - const gnutls_datum_t * raw, gnutls_datum_t * out); + const gnutls_datum_t *raw, gnutls_datum_t *out); /* crq */ -int _gnutls_x509_crq_set_extension(gnutls_x509_crq_t crq, - const char *ext_id, - const gnutls_datum_t * ext_data, +int _gnutls_x509_crq_set_extension(gnutls_x509_crq_t crq, const char *ext_id, + const gnutls_datum_t *ext_data, unsigned int critical); -int -gnutls_x509_crt_verify_data3(gnutls_x509_crt_t crt, - gnutls_sign_algorithm_t algo, - gnutls_typed_vdata_st * vdata, - unsigned int vdata_size, - const gnutls_datum_t * data, - const gnutls_datum_t * signature, - unsigned int flags); +int gnutls_x509_crt_verify_data3(gnutls_x509_crt_t crt, + gnutls_sign_algorithm_t algo, + gnutls_typed_vdata_st *vdata, + unsigned int vdata_size, + const gnutls_datum_t *data, + const gnutls_datum_t *signature, + unsigned int flags); int _gnutls_trust_list_get_issuer(gnutls_x509_trust_list_t list, gnutls_x509_crt_t cert, - gnutls_x509_crt_t * issuer, + gnutls_x509_crt_t *issuer, unsigned int flags); -unsigned int -_gnutls_verify_crt_status(gnutls_x509_trust_list_t tlist, - const gnutls_x509_crt_t * certificate_list, - int clist_size, - const gnutls_x509_crt_t * trusted_cas, - int tcas_size, - unsigned int flags, - const char *purpose, - gnutls_verify_output_function func); - -# ifdef ENABLE_PKCS11 -unsigned int -_gnutls_pkcs11_verify_crt_status(gnutls_x509_trust_list_t tlist, - const char *url, - const gnutls_x509_crt_t * certificate_list, - unsigned clist_size, - const char *purpose, - unsigned int flags, - gnutls_verify_output_function func); -# endif +unsigned int _gnutls_verify_crt_status( + gnutls_x509_trust_list_t tlist, + const gnutls_x509_crt_t *certificate_list, int clist_size, + const gnutls_x509_crt_t *trusted_cas, int tcas_size, unsigned int flags, + const char *purpose, gnutls_verify_output_function func); + +#ifdef ENABLE_PKCS11 +unsigned int _gnutls_pkcs11_verify_crt_status( + gnutls_x509_trust_list_t tlist, const char *url, + const gnutls_x509_crt_t *certificate_list, unsigned clist_size, + const char *purpose, unsigned int flags, + gnutls_verify_output_function func); +#endif int _gnutls_check_cert_sanity(gnutls_x509_crt_t cert); -int -_gnutls_x509_crt_check_revocation(gnutls_x509_crt_t cert, - const gnutls_x509_crl_t * crl_list, - int crl_list_length, - gnutls_verify_output_function func); +int _gnutls_x509_crt_check_revocation(gnutls_x509_crt_t cert, + const gnutls_x509_crl_t *crl_list, + int crl_list_length, + gnutls_verify_output_function func); typedef struct gnutls_name_constraints_st { struct name_constraints_node_st *permitted; @@ -524,8 +492,8 @@ typedef struct name_constraints_node_st { } name_constraints_node_st; int _gnutls_extract_name_constraints(asn1_node c2, const char *vstr, - name_constraints_node_st ** _nc); -void _gnutls_name_constraints_node_free(name_constraints_node_st * node); + name_constraints_node_st **_nc); +void _gnutls_name_constraints_node_free(name_constraints_node_st *node); int _gnutls_x509_name_constraints_merge(gnutls_x509_name_constraints_t nc, gnutls_x509_name_constraints_t nc2); @@ -537,7 +505,7 @@ struct gnutls_x509_tlsfeatures_st { unsigned int size; }; -unsigned _gnutls_is_broken_sig_allowed(const gnutls_sign_entry_st * se, +unsigned _gnutls_is_broken_sig_allowed(const gnutls_sign_entry_st *se, unsigned int flags); -#endif /* GNUTLS_LIB_X509_X509_INT_H */ +#endif /* GNUTLS_LIB_X509_X509_INT_H */ diff --git a/lib/x509/x509_write.c b/lib/x509/x509_write.c index 786b683016..76ebb9eed3 100644 --- a/lib/x509/x509_write.c +++ b/lib/x509/x509_write.c @@ -60,10 +60,9 @@ static void disable_optional_stuff(gnutls_x509_crt_t cert); * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crt_set_dn_by_oid(gnutls_x509_crt_t crt, const char *oid, - unsigned int raw_flag, const void *name, - unsigned int sizeof_name) +int gnutls_x509_crt_set_dn_by_oid(gnutls_x509_crt_t crt, const char *oid, + unsigned int raw_flag, const void *name, + unsigned int sizeof_name) { if (sizeof_name == 0 || name == NULL || crt == NULL) { return GNUTLS_E_INVALID_REQUEST; @@ -71,8 +70,8 @@ gnutls_x509_crt_set_dn_by_oid(gnutls_x509_crt_t crt, const char *oid, MODIFIED(crt); - return _gnutls_x509_set_dn_oid(crt->cert, "tbsCertificate.subject", - oid, raw_flag, name, sizeof_name); + return _gnutls_x509_set_dn_oid(crt->cert, "tbsCertificate.subject", oid, + raw_flag, name, sizeof_name); } /** @@ -100,11 +99,10 @@ gnutls_x509_crt_set_dn_by_oid(gnutls_x509_crt_t crt, const char *oid, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crt_set_issuer_dn_by_oid(gnutls_x509_crt_t crt, - const char *oid, - unsigned int raw_flag, - const void *name, unsigned int sizeof_name) +int gnutls_x509_crt_set_issuer_dn_by_oid(gnutls_x509_crt_t crt, const char *oid, + unsigned int raw_flag, + const void *name, + unsigned int sizeof_name) { if (sizeof_name == 0 || name == NULL || crt == NULL) { return GNUTLS_E_INVALID_REQUEST; @@ -112,8 +110,8 @@ gnutls_x509_crt_set_issuer_dn_by_oid(gnutls_x509_crt_t crt, MODIFIED(crt); - return _gnutls_x509_set_dn_oid(crt->cert, "tbsCertificate.issuer", - oid, raw_flag, name, sizeof_name); + return _gnutls_x509_set_dn_oid(crt->cert, "tbsCertificate.issuer", oid, + raw_flag, name, sizeof_name); } /** @@ -133,11 +131,9 @@ gnutls_x509_crt_set_issuer_dn_by_oid(gnutls_x509_crt_t crt, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crt_set_proxy_dn(gnutls_x509_crt_t crt, - gnutls_x509_crt_t eecrt, - unsigned int raw_flag, const void *name, - unsigned int sizeof_name) +int gnutls_x509_crt_set_proxy_dn(gnutls_x509_crt_t crt, gnutls_x509_crt_t eecrt, + unsigned int raw_flag, const void *name, + unsigned int sizeof_name) { int result; @@ -197,7 +193,7 @@ int gnutls_x509_crt_set_version(gnutls_x509_crt_t crt, unsigned int version) null--; result = - asn1_write_value(crt->cert, "tbsCertificate.version", &null, 1); + asn1_write_value(crt->cert, "tbsCertificate.version", &null, 1); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -232,9 +228,8 @@ int gnutls_x509_crt_set_key(gnutls_x509_crt_t crt, gnutls_x509_privkey_t key) MODIFIED(crt); - result = _gnutls_x509_encode_and_copy_PKI_params(crt->cert, - "tbsCertificate.subjectPublicKeyInfo", - &key->params); + result = _gnutls_x509_encode_and_copy_PKI_params( + crt->cert, "tbsCertificate.subjectPublicKeyInfo", &key->params); if (result < 0) { gnutls_assert(); @@ -274,17 +269,16 @@ int gnutls_x509_crt_set_crq(gnutls_x509_crt_t crt, gnutls_x509_crq_t crq) if (result < 0) return gnutls_assert_val(result); - result = asn1_copy_node(crt->cert, "tbsCertificate.subject", - crq->crq, "certificationRequestInfo.subject"); + result = asn1_copy_node(crt->cert, "tbsCertificate.subject", crq->crq, + "certificationRequestInfo.subject"); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } - result = - asn1_copy_node(crt->cert, - "tbsCertificate.subjectPublicKeyInfo", crq->crq, - "certificationRequestInfo.subjectPKInfo"); + result = asn1_copy_node(crt->cert, + "tbsCertificate.subjectPublicKeyInfo", crq->crq, + "certificationRequestInfo.subjectPKInfo"); if (result != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); @@ -306,8 +300,8 @@ int gnutls_x509_crt_set_crq(gnutls_x509_crt_t crt, gnutls_x509_crq_t crq) * * Since: 2.8.0 **/ -int -gnutls_x509_crt_set_crq_extensions(gnutls_x509_crt_t crt, gnutls_x509_crq_t crq) +int gnutls_x509_crt_set_crq_extensions(gnutls_x509_crt_t crt, + gnutls_x509_crq_t crq) { return gnutls_x509_crt_set_crq_extension_by_oid(crt, crq, NULL, 0); } @@ -327,10 +321,9 @@ gnutls_x509_crt_set_crq_extensions(gnutls_x509_crt_t crt, gnutls_x509_crq_t crq) * * Since: 3.5.1 **/ -int -gnutls_x509_crt_set_crq_extension_by_oid(gnutls_x509_crt_t crt, - gnutls_x509_crq_t crq, const char *oid, - unsigned flags) +int gnutls_x509_crt_set_crq_extension_by_oid(gnutls_x509_crt_t crt, + gnutls_x509_crq_t crq, + const char *oid, unsigned flags) { size_t i; @@ -351,9 +344,8 @@ gnutls_x509_crt_set_crq_extension_by_oid(gnutls_x509_crt_t crt, gnutls_datum_t ext; local_oid_size = sizeof(local_oid); - result = gnutls_x509_crq_get_extension_info(crq, i, local_oid, - &local_oid_size, - &critical); + result = gnutls_x509_crq_get_extension_info( + crq, i, local_oid, &local_oid_size, &critical); if (result < 0) { if (result == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) break; @@ -379,9 +371,8 @@ gnutls_x509_crt_set_crq_extension_by_oid(gnutls_x509_crt_t crt, return GNUTLS_E_MEMORY_ERROR; } - result = - gnutls_x509_crq_get_extension_data(crq, i, extensions, - &extensions_size); + result = gnutls_x509_crq_get_extension_data(crq, i, extensions, + &extensions_size); if (result < 0) { gnutls_assert(); gnutls_free(extensions); @@ -391,9 +382,8 @@ gnutls_x509_crt_set_crq_extension_by_oid(gnutls_x509_crt_t crt, ext.data = extensions; ext.size = extensions_size; - result = - _gnutls_x509_crt_set_extension(crt, local_oid, &ext, - critical); + result = _gnutls_x509_crt_set_extension(crt, local_oid, &ext, + critical); gnutls_free(extensions); if (result < 0) { gnutls_assert(); @@ -419,10 +409,9 @@ gnutls_x509_crt_set_crq_extension_by_oid(gnutls_x509_crt_t crt, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crt_set_extension_by_oid(gnutls_x509_crt_t crt, - const char *oid, const void *buf, - size_t sizeof_buf, unsigned int critical) +int gnutls_x509_crt_set_extension_by_oid(gnutls_x509_crt_t crt, const char *oid, + const void *buf, size_t sizeof_buf, + unsigned int critical) { int result; gnutls_datum_t der_data; @@ -442,7 +431,6 @@ gnutls_x509_crt_set_extension_by_oid(gnutls_x509_crt_t crt, } return 0; - } /** @@ -458,9 +446,9 @@ gnutls_x509_crt_set_extension_by_oid(gnutls_x509_crt_t crt, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crt_set_basic_constraints(gnutls_x509_crt_t crt, - unsigned int ca, int pathLenConstraint) +int gnutls_x509_crt_set_basic_constraints(gnutls_x509_crt_t crt, + unsigned int ca, + int pathLenConstraint) { int result; gnutls_datum_t der_data; @@ -472,9 +460,8 @@ gnutls_x509_crt_set_basic_constraints(gnutls_x509_crt_t crt, /* generate the extension. */ - result = - gnutls_x509_ext_export_basic_constraints(ca, pathLenConstraint, - &der_data); + result = gnutls_x509_ext_export_basic_constraints(ca, pathLenConstraint, + &der_data); if (result < 0) { gnutls_assert(); return result; @@ -559,9 +546,8 @@ int gnutls_x509_crt_set_key_usage(gnutls_x509_crt_t crt, unsigned int usage) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crt_set_inhibit_anypolicy(gnutls_x509_crt_t crt, - unsigned int skipcerts) +int gnutls_x509_crt_set_inhibit_anypolicy(gnutls_x509_crt_t crt, + unsigned int skipcerts) { int ret; gnutls_datum_t der_data; @@ -608,10 +594,9 @@ gnutls_x509_crt_set_inhibit_anypolicy(gnutls_x509_crt_t crt, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crt_set_subject_alternative_name(gnutls_x509_crt_t crt, - gnutls_x509_subject_alt_name_t - type, const char *data_string) +int gnutls_x509_crt_set_subject_alternative_name( + gnutls_x509_crt_t crt, gnutls_x509_subject_alt_name_t type, + const char *data_string) { if (crt == NULL) { gnutls_assert(); @@ -625,9 +610,8 @@ gnutls_x509_crt_set_subject_alternative_name(gnutls_x509_crt_t crt, return GNUTLS_E_INVALID_REQUEST; } - return gnutls_x509_crt_set_subject_alt_name(crt, type, data_string, - strlen(data_string), - GNUTLS_FSAN_SET); + return gnutls_x509_crt_set_subject_alt_name( + crt, type, data_string, strlen(data_string), GNUTLS_FSAN_SET); } /** @@ -652,11 +636,11 @@ gnutls_x509_crt_set_subject_alternative_name(gnutls_x509_crt_t crt, * * Since: 2.6.0 **/ -int -gnutls_x509_crt_set_subject_alt_name(gnutls_x509_crt_t crt, - gnutls_x509_subject_alt_name_t type, - const void *data, - unsigned int data_size, unsigned int flags) +int gnutls_x509_crt_set_subject_alt_name(gnutls_x509_crt_t crt, + gnutls_x509_subject_alt_name_t type, + const void *data, + unsigned int data_size, + unsigned int flags) { int result; gnutls_datum_t der_data = { NULL, 0 }; @@ -672,11 +656,10 @@ gnutls_x509_crt_set_subject_alt_name(gnutls_x509_crt_t crt, */ if (flags & GNUTLS_FSAN_APPEND) { - result = - _gnutls_x509_crt_get_extension(crt, "2.5.29.17", 0, - &prev_der_data, &critical); - if (result < 0 - && result != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { + result = _gnutls_x509_crt_get_extension( + crt, "2.5.29.17", 0, &prev_der_data, &critical); + if (result < 0 && + result != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { gnutls_assert(); return result; } @@ -684,18 +667,16 @@ gnutls_x509_crt_set_subject_alt_name(gnutls_x509_crt_t crt, /* generate the extension. */ - result = - _gnutls_x509_ext_gen_subject_alt_name(type, NULL, data, data_size, - &prev_der_data, &der_data); + result = _gnutls_x509_ext_gen_subject_alt_name( + type, NULL, data, data_size, &prev_der_data, &der_data); if (result < 0) { gnutls_assert(); goto finish; } - result = - _gnutls_x509_crt_set_extension(crt, "2.5.29.17", &der_data, - critical); + result = _gnutls_x509_crt_set_extension(crt, "2.5.29.17", &der_data, + critical); _gnutls_free_datum(&der_data); @@ -706,7 +687,7 @@ gnutls_x509_crt_set_subject_alt_name(gnutls_x509_crt_t crt, result = 0; - finish: +finish: _gnutls_free_datum(&prev_der_data); return result; } @@ -730,11 +711,11 @@ gnutls_x509_crt_set_subject_alt_name(gnutls_x509_crt_t crt, * * Since: 3.3.0 **/ -int -gnutls_x509_crt_set_issuer_alt_name(gnutls_x509_crt_t crt, - gnutls_x509_subject_alt_name_t type, - const void *data, - unsigned int data_size, unsigned int flags) +int gnutls_x509_crt_set_issuer_alt_name(gnutls_x509_crt_t crt, + gnutls_x509_subject_alt_name_t type, + const void *data, + unsigned int data_size, + unsigned int flags) { int result; gnutls_datum_t der_data = { NULL, 0 }; @@ -750,11 +731,10 @@ gnutls_x509_crt_set_issuer_alt_name(gnutls_x509_crt_t crt, */ if (flags & GNUTLS_FSAN_APPEND) { - result = - _gnutls_x509_crt_get_extension(crt, "2.5.29.18", 0, - &prev_der_data, &critical); - if (result < 0 - && result != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { + result = _gnutls_x509_crt_get_extension( + crt, "2.5.29.18", 0, &prev_der_data, &critical); + if (result < 0 && + result != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { gnutls_assert(); return result; } @@ -762,18 +742,16 @@ gnutls_x509_crt_set_issuer_alt_name(gnutls_x509_crt_t crt, /* generate the extension. */ - result = - _gnutls_x509_ext_gen_subject_alt_name(type, NULL, data, data_size, - &prev_der_data, &der_data); + result = _gnutls_x509_ext_gen_subject_alt_name( + type, NULL, data, data_size, &prev_der_data, &der_data); if (result < 0) { gnutls_assert(); goto finish; } - result = - _gnutls_x509_crt_set_extension(crt, "2.5.29.18", &der_data, - critical); + result = _gnutls_x509_crt_set_extension(crt, "2.5.29.18", &der_data, + critical); _gnutls_free_datum(&der_data); @@ -784,21 +762,21 @@ gnutls_x509_crt_set_issuer_alt_name(gnutls_x509_crt_t crt, result = 0; - finish: +finish: _gnutls_free_datum(&prev_der_data); return result; } int _gnutls_encode_othername_data(unsigned flags, const void *data, - unsigned data_size, gnutls_datum_t * output) + unsigned data_size, gnutls_datum_t *output) { int ret; if (flags & GNUTLS_FSAN_ENCODE_OCTET_STRING) { - ret = _gnutls_x509_encode_string(ASN1_ETYPE_OCTET_STRING, - data, data_size, output); + ret = _gnutls_x509_encode_string(ASN1_ETYPE_OCTET_STRING, data, + data_size, output); } else if (flags & GNUTLS_FSAN_ENCODE_UTF8_STRING) { - ret = _gnutls_x509_encode_string(ASN1_ETYPE_UTF8_STRING, - data, data_size, output); + ret = _gnutls_x509_encode_string(ASN1_ETYPE_UTF8_STRING, data, + data_size, output); } else { ret = _gnutls_set_datum(output, data, data_size); } @@ -825,12 +803,10 @@ int _gnutls_encode_othername_data(unsigned flags, const void *data, * * Since: 3.5.0 **/ -int -gnutls_x509_crt_set_subject_alt_othername(gnutls_x509_crt_t crt, - const char *oid, - const void *data, - unsigned int data_size, - unsigned int flags) +int gnutls_x509_crt_set_subject_alt_othername(gnutls_x509_crt_t crt, + const char *oid, const void *data, + unsigned int data_size, + unsigned int flags) { int result; gnutls_datum_t der_data = { NULL, 0 }; @@ -847,19 +823,17 @@ gnutls_x509_crt_set_subject_alt_othername(gnutls_x509_crt_t crt, */ if (flags & GNUTLS_FSAN_APPEND) { - result = - _gnutls_x509_crt_get_extension(crt, "2.5.29.17", 0, - &prev_der_data, &critical); - if (result < 0 - && result != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { + result = _gnutls_x509_crt_get_extension( + crt, "2.5.29.17", 0, &prev_der_data, &critical); + if (result < 0 && + result != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { gnutls_assert(); return result; } } - result = - _gnutls_encode_othername_data(flags, data, data_size, - &encoded_data); + result = _gnutls_encode_othername_data(flags, data, data_size, + &encoded_data); if (result < 0) { gnutls_assert(); goto finish; @@ -867,20 +841,17 @@ gnutls_x509_crt_set_subject_alt_othername(gnutls_x509_crt_t crt, /* generate the extension. */ - result = - _gnutls_x509_ext_gen_subject_alt_name(GNUTLS_SAN_OTHERNAME, oid, - encoded_data.data, - encoded_data.size, - &prev_der_data, &der_data); + result = _gnutls_x509_ext_gen_subject_alt_name( + GNUTLS_SAN_OTHERNAME, oid, encoded_data.data, encoded_data.size, + &prev_der_data, &der_data); if (result < 0) { gnutls_assert(); goto finish; } - result = - _gnutls_x509_crt_set_extension(crt, "2.5.29.17", &der_data, - critical); + result = _gnutls_x509_crt_set_extension(crt, "2.5.29.17", &der_data, + critical); if (result < 0) { gnutls_assert(); @@ -889,7 +860,7 @@ gnutls_x509_crt_set_subject_alt_othername(gnutls_x509_crt_t crt, result = 0; - finish: +finish: _gnutls_free_datum(&der_data); _gnutls_free_datum(&prev_der_data); _gnutls_free_datum(&encoded_data); @@ -916,12 +887,10 @@ gnutls_x509_crt_set_subject_alt_othername(gnutls_x509_crt_t crt, * * Since: 3.5.0 **/ -int -gnutls_x509_crt_set_issuer_alt_othername(gnutls_x509_crt_t crt, - const char *oid, - const void *data, - unsigned int data_size, - unsigned int flags) +int gnutls_x509_crt_set_issuer_alt_othername(gnutls_x509_crt_t crt, + const char *oid, const void *data, + unsigned int data_size, + unsigned int flags) { int result; gnutls_datum_t der_data = { NULL, 0 }; @@ -938,19 +907,17 @@ gnutls_x509_crt_set_issuer_alt_othername(gnutls_x509_crt_t crt, */ if (flags & GNUTLS_FSAN_APPEND) { - result = - _gnutls_x509_crt_get_extension(crt, "2.5.29.18", 0, - &prev_der_data, &critical); - if (result < 0 - && result != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { + result = _gnutls_x509_crt_get_extension( + crt, "2.5.29.18", 0, &prev_der_data, &critical); + if (result < 0 && + result != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { gnutls_assert(); return result; } } - result = - _gnutls_encode_othername_data(flags, data, data_size, - &encoded_data); + result = _gnutls_encode_othername_data(flags, data, data_size, + &encoded_data); if (result < 0) { gnutls_assert(); goto finish; @@ -958,19 +925,16 @@ gnutls_x509_crt_set_issuer_alt_othername(gnutls_x509_crt_t crt, /* generate the extension. */ - result = - _gnutls_x509_ext_gen_subject_alt_name(GNUTLS_SAN_OTHERNAME, oid, - encoded_data.data, - encoded_data.size, - &prev_der_data, &der_data); + result = _gnutls_x509_ext_gen_subject_alt_name( + GNUTLS_SAN_OTHERNAME, oid, encoded_data.data, encoded_data.size, + &prev_der_data, &der_data); if (result < 0) { gnutls_assert(); goto finish; } - result = - _gnutls_x509_crt_set_extension(crt, "2.5.29.18", &der_data, - critical); + result = _gnutls_x509_crt_set_extension(crt, "2.5.29.18", &der_data, + critical); if (result < 0) { gnutls_assert(); @@ -979,7 +943,7 @@ gnutls_x509_crt_set_issuer_alt_othername(gnutls_x509_crt_t crt, result = 0; - finish: +finish: _gnutls_free_datum(&der_data); _gnutls_free_datum(&prev_der_data); _gnutls_free_datum(&encoded_data); @@ -1001,11 +965,9 @@ gnutls_x509_crt_set_issuer_alt_othername(gnutls_x509_crt_t crt, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crt_set_proxy(gnutls_x509_crt_t crt, - int pathLenConstraint, - const char *policyLanguage, - const char *policy, size_t sizeof_policy) +int gnutls_x509_crt_set_proxy(gnutls_x509_crt_t crt, int pathLenConstraint, + const char *policyLanguage, const char *policy, + size_t sizeof_policy) { int result; gnutls_datum_t der_data; @@ -1017,8 +979,7 @@ gnutls_x509_crt_set_proxy(gnutls_x509_crt_t crt, /* generate the extension. */ - result = gnutls_x509_ext_export_proxy(pathLenConstraint, - policyLanguage, + result = gnutls_x509_ext_export_proxy(pathLenConstraint, policyLanguage, policy, sizeof_policy, &der_data); if (result < 0) { gnutls_assert(); @@ -1049,10 +1010,9 @@ gnutls_x509_crt_set_proxy(gnutls_x509_crt_t crt, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crt_set_private_key_usage_period(gnutls_x509_crt_t crt, - time_t activation, - time_t expiration) +int gnutls_x509_crt_set_private_key_usage_period(gnutls_x509_crt_t crt, + time_t activation, + time_t expiration) { int result; gnutls_datum_t der_data; @@ -1062,9 +1022,8 @@ gnutls_x509_crt_set_private_key_usage_period(gnutls_x509_crt_t crt, return GNUTLS_E_INVALID_REQUEST; } - result = gnutls_x509_ext_export_private_key_usage_period(activation, - expiration, - &der_data); + result = gnutls_x509_ext_export_private_key_usage_period( + activation, expiration, &der_data); if (result < 0) { gnutls_assert(); goto cleanup; @@ -1074,7 +1033,7 @@ gnutls_x509_crt_set_private_key_usage_period(gnutls_x509_crt_t crt, _gnutls_free_datum(&der_data); - cleanup: +cleanup: return result; } @@ -1102,10 +1061,9 @@ gnutls_x509_crt_set_private_key_usage_period(gnutls_x509_crt_t crt, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crt_sign2(gnutls_x509_crt_t crt, gnutls_x509_crt_t issuer, - gnutls_x509_privkey_t issuer_key, - gnutls_digest_algorithm_t dig, unsigned int flags) +int gnutls_x509_crt_sign2(gnutls_x509_crt_t crt, gnutls_x509_crt_t issuer, + gnutls_x509_privkey_t issuer_key, + gnutls_digest_algorithm_t dig, unsigned int flags) { int result; gnutls_privkey_t privkey; @@ -1137,7 +1095,7 @@ gnutls_x509_crt_sign2(gnutls_x509_crt_t crt, gnutls_x509_crt_t issuer, result = 0; - fail: +fail: gnutls_privkey_deinit(privkey); return result; @@ -1157,9 +1115,8 @@ gnutls_x509_crt_sign2(gnutls_x509_crt_t crt, gnutls_x509_crt_t issuer, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crt_sign(gnutls_x509_crt_t crt, gnutls_x509_crt_t issuer, - gnutls_x509_privkey_t issuer_key) +int gnutls_x509_crt_sign(gnutls_x509_crt_t crt, gnutls_x509_crt_t issuer, + gnutls_x509_privkey_t issuer_key) { return gnutls_x509_crt_sign2(crt, issuer, issuer_key, 0, 0); } @@ -1184,9 +1141,8 @@ int gnutls_x509_crt_set_activation_time(gnutls_x509_crt_t cert, time_t act_time) MODIFIED(cert); - return _gnutls_x509_set_time(cert->cert, - "tbsCertificate.validity.notBefore", - act_time, 0); + return _gnutls_x509_set_time( + cert->cert, "tbsCertificate.validity.notBefore", act_time, 0); } /** @@ -1210,9 +1166,8 @@ int gnutls_x509_crt_set_expiration_time(gnutls_x509_crt_t cert, time_t exp_time) MODIFIED(cert); - return _gnutls_x509_set_time(cert->cert, - "tbsCertificate.validity.notAfter", - exp_time, 0); + return _gnutls_x509_set_time( + cert->cert, "tbsCertificate.validity.notAfter", exp_time, 0); } /** @@ -1235,9 +1190,8 @@ int gnutls_x509_crt_set_expiration_time(gnutls_x509_crt_t cert, time_t exp_time) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crt_set_serial(gnutls_x509_crt_t cert, const void *serial, - size_t serial_size) +int gnutls_x509_crt_set_serial(gnutls_x509_crt_t cert, const void *serial, + size_t serial_size) { int ret; unsigned all_zero, i; @@ -1264,16 +1218,14 @@ gnutls_x509_crt_set_serial(gnutls_x509_crt_t cert, const void *serial, MODIFIED(cert); - ret = - asn1_write_value(cert->cert, "tbsCertificate.serialNumber", - serial, serial_size); + ret = asn1_write_value(cert->cert, "tbsCertificate.serialNumber", + serial, serial_size); if (ret != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(ret); } return 0; - } /** @@ -1289,9 +1241,8 @@ gnutls_x509_crt_set_serial(gnutls_x509_crt_t cert, const void *serial, * * Since: 3.4.7 **/ -int -gnutls_x509_crt_set_issuer_unique_id(gnutls_x509_crt_t cert, const void *id, - size_t id_size) +int gnutls_x509_crt_set_issuer_unique_id(gnutls_x509_crt_t cert, const void *id, + size_t id_size) { int ret; @@ -1302,9 +1253,8 @@ gnutls_x509_crt_set_issuer_unique_id(gnutls_x509_crt_t cert, const void *id, MODIFIED(cert); - ret = - asn1_write_value(cert->cert, "tbsCertificate.issuerUniqueID", - id, id_size * 8); + ret = asn1_write_value(cert->cert, "tbsCertificate.issuerUniqueID", id, + id_size * 8); if (ret != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(ret); @@ -1326,9 +1276,8 @@ gnutls_x509_crt_set_issuer_unique_id(gnutls_x509_crt_t cert, const void *id, * * Since: 3.4.7 **/ -int -gnutls_x509_crt_set_subject_unique_id(gnutls_x509_crt_t cert, const void *id, - size_t id_size) +int gnutls_x509_crt_set_subject_unique_id(gnutls_x509_crt_t cert, + const void *id, size_t id_size) { int ret; @@ -1339,9 +1288,8 @@ gnutls_x509_crt_set_subject_unique_id(gnutls_x509_crt_t cert, const void *id, MODIFIED(cert); - ret = - asn1_write_value(cert->cert, "tbsCertificate.subjectUniqueID", - id, id_size * 8); + ret = asn1_write_value(cert->cert, "tbsCertificate.subjectUniqueID", id, + id_size * 8); if (ret != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(ret); @@ -1362,27 +1310,25 @@ static void disable_optional_stuff(gnutls_x509_crt_t cert) node = asn1_find_node(cert->cert, "tbsCertificate.issuerUniqueID"); if (node) { - if (asn1_read_node_value(node, &n) == ASN1_SUCCESS - && n.value_len != 0) + if (asn1_read_node_value(node, &n) == ASN1_SUCCESS && + n.value_len != 0) remove_issuer_unique_id = 0; } node = asn1_find_node(cert->cert, "tbsCertificate.subjectUniqueID"); if (node) { - if (asn1_read_node_value(node, &n) == ASN1_SUCCESS - && n.value_len != 0) + if (asn1_read_node_value(node, &n) == ASN1_SUCCESS && + n.value_len != 0) remove_subject_unique_id = 0; } if (remove_issuer_unique_id) - (void)asn1_write_value(cert->cert, - "tbsCertificate.issuerUniqueID", NULL, - 0); + (void)asn1_write_value( + cert->cert, "tbsCertificate.issuerUniqueID", NULL, 0); if (remove_subject_unique_id) - (void)asn1_write_value(cert->cert, - "tbsCertificate.subjectUniqueID", NULL, - 0); + (void)asn1_write_value( + cert->cert, "tbsCertificate.subjectUniqueID", NULL, 0); if (cert->use_extensions == 0) { _gnutls_debug_log("Disabling X.509 extensions.\n"); @@ -1405,15 +1351,13 @@ static void disable_optional_stuff(gnutls_x509_crt_t cert) * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crt_set_crl_dist_points(gnutls_x509_crt_t crt, - gnutls_x509_subject_alt_name_t type, - const void *data_string, - unsigned int reason_flags) +int gnutls_x509_crt_set_crl_dist_points(gnutls_x509_crt_t crt, + gnutls_x509_subject_alt_name_t type, + const void *data_string, + unsigned int reason_flags) { - return gnutls_x509_crt_set_crl_dist_points2(crt, type, data_string, - strlen(data_string), - reason_flags); + return gnutls_x509_crt_set_crl_dist_points2( + crt, type, data_string, strlen(data_string), reason_flags); } /** @@ -1431,12 +1375,11 @@ gnutls_x509_crt_set_crl_dist_points(gnutls_x509_crt_t crt, * * Since: 2.6.0 **/ -int -gnutls_x509_crt_set_crl_dist_points2(gnutls_x509_crt_t crt, - gnutls_x509_subject_alt_name_t type, - const void *data, - unsigned int data_size, - unsigned int reason_flags) +int gnutls_x509_crt_set_crl_dist_points2(gnutls_x509_crt_t crt, + gnutls_x509_subject_alt_name_t type, + const void *data, + unsigned int data_size, + unsigned int reason_flags) { int ret; gnutls_datum_t der_data = { NULL, 0 }; @@ -1456,9 +1399,8 @@ gnutls_x509_crt_set_crl_dist_points2(gnutls_x509_crt_t crt, /* Check if the extension already exists. */ - ret = - _gnutls_x509_crt_get_extension(crt, "2.5.29.31", 0, &old_der, - &critical); + ret = _gnutls_x509_crt_get_extension(crt, "2.5.29.31", 0, &old_der, + &critical); if (ret >= 0 && old_der.data != NULL) { ret = gnutls_x509_ext_import_crl_dist_points(&old_der, cdp, 0); @@ -1492,14 +1434,13 @@ gnutls_x509_crt_set_crl_dist_points2(gnutls_x509_crt_t crt, } ret = 0; - cleanup: +cleanup: _gnutls_free_datum(&der_data); _gnutls_free_datum(&old_der); if (cdp != NULL) gnutls_x509_crl_dist_points_deinit(cdp); return ret; - } /** @@ -1514,9 +1455,8 @@ gnutls_x509_crt_set_crl_dist_points2(gnutls_x509_crt_t crt, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crt_cpy_crl_dist_points(gnutls_x509_crt_t dst, - gnutls_x509_crt_t src) +int gnutls_x509_crt_cpy_crl_dist_points(gnutls_x509_crt_t dst, + gnutls_x509_crt_t src) { int result; gnutls_datum_t der_data; @@ -1529,17 +1469,15 @@ gnutls_x509_crt_cpy_crl_dist_points(gnutls_x509_crt_t dst, /* Check if the extension already exists. */ - result = - _gnutls_x509_crt_get_extension(src, "2.5.29.31", 0, &der_data, - &critical); + result = _gnutls_x509_crt_get_extension(src, "2.5.29.31", 0, &der_data, + &critical); if (result < 0) { gnutls_assert(); return result; } - result = - _gnutls_x509_crt_set_extension(dst, "2.5.29.31", &der_data, - critical); + result = _gnutls_x509_crt_set_extension(dst, "2.5.29.31", &der_data, + critical); _gnutls_free_datum(&der_data); if (result < 0) { @@ -1562,9 +1500,8 @@ gnutls_x509_crt_cpy_crl_dist_points(gnutls_x509_crt_t dst, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crt_set_subject_key_id(gnutls_x509_crt_t cert, - const void *id, size_t id_size) +int gnutls_x509_crt_set_subject_key_id(gnutls_x509_crt_t cert, const void *id, + size_t id_size) { int result; gnutls_datum_t old_id, der_data; @@ -1578,9 +1515,8 @@ gnutls_x509_crt_set_subject_key_id(gnutls_x509_crt_t cert, /* Check if the extension already exists. */ - result = - _gnutls_x509_crt_get_extension(cert, "2.5.29.14", 0, &old_id, - &critical); + result = _gnutls_x509_crt_get_extension(cert, "2.5.29.14", 0, &old_id, + &critical); if (result >= 0) _gnutls_free_datum(&old_id); @@ -1601,7 +1537,7 @@ gnutls_x509_crt_set_subject_key_id(gnutls_x509_crt_t cert, } result = - _gnutls_x509_crt_set_extension(cert, "2.5.29.14", &der_data, 0); + _gnutls_x509_crt_set_extension(cert, "2.5.29.14", &der_data, 0); _gnutls_free_datum(&der_data); @@ -1625,9 +1561,8 @@ gnutls_x509_crt_set_subject_key_id(gnutls_x509_crt_t cert, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crt_set_authority_key_id(gnutls_x509_crt_t cert, - const void *id, size_t id_size) +int gnutls_x509_crt_set_authority_key_id(gnutls_x509_crt_t cert, const void *id, + size_t id_size) { int result; gnutls_datum_t old_id, der_data; @@ -1640,9 +1575,8 @@ gnutls_x509_crt_set_authority_key_id(gnutls_x509_crt_t cert, /* Check if the extension already exists. */ - result = - _gnutls_x509_crt_get_extension(cert, "2.5.29.35", 0, &old_id, - &critical); + result = _gnutls_x509_crt_get_extension(cert, "2.5.29.35", 0, &old_id, + &critical); if (result >= 0) _gnutls_free_datum(&old_id); @@ -1660,7 +1594,7 @@ gnutls_x509_crt_set_authority_key_id(gnutls_x509_crt_t cert, } result = - _gnutls_x509_crt_set_extension(cert, "2.5.29.35", &der_data, 0); + _gnutls_x509_crt_set_extension(cert, "2.5.29.35", &der_data, 0); _gnutls_free_datum(&der_data); @@ -1687,9 +1621,8 @@ gnutls_x509_crt_set_authority_key_id(gnutls_x509_crt_t cert, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, * otherwise a negative error code is returned. **/ -int -gnutls_x509_crt_set_key_purpose_oid(gnutls_x509_crt_t cert, - const void *oid, unsigned int critical) +int gnutls_x509_crt_set_key_purpose_oid(gnutls_x509_crt_t cert, const void *oid, + unsigned int critical) { int ret; gnutls_datum_t old_id = { NULL, 0 }; @@ -1707,8 +1640,8 @@ gnutls_x509_crt_set_key_purpose_oid(gnutls_x509_crt_t cert, /* Check if the extension already exists. */ - ret = - _gnutls_x509_crt_get_extension(cert, "2.5.29.37", 0, &old_id, NULL); + ret = _gnutls_x509_crt_get_extension(cert, "2.5.29.37", 0, &old_id, + NULL); if (ret >= 0) { ret = gnutls_x509_ext_import_key_purposes(&old_id, p, 0); @@ -1737,14 +1670,13 @@ gnutls_x509_crt_set_key_purpose_oid(gnutls_x509_crt_t cert, } ret = 0; - cleanup: +cleanup: _gnutls_free_datum(&der); _gnutls_free_datum(&old_id); if (p != NULL) gnutls_x509_key_purpose_deinit(p); return ret; - } /** @@ -1771,11 +1703,11 @@ gnutls_x509_crt_set_key_purpose_oid(gnutls_x509_crt_t cert, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -gnutls_x509_crt_privkey_sign(gnutls_x509_crt_t crt, - gnutls_x509_crt_t issuer, - gnutls_privkey_t issuer_key, - gnutls_digest_algorithm_t dig, unsigned int flags) +int gnutls_x509_crt_privkey_sign(gnutls_x509_crt_t crt, + gnutls_x509_crt_t issuer, + gnutls_privkey_t issuer_key, + gnutls_digest_algorithm_t dig, + unsigned int flags) { int result; @@ -1785,9 +1717,8 @@ gnutls_x509_crt_privkey_sign(gnutls_x509_crt_t crt, } if (dig == 0) { - result = - gnutls_x509_crt_get_preferred_hash_algorithm(issuer, &dig, - NULL); + result = gnutls_x509_crt_get_preferred_hash_algorithm( + issuer, &dig, NULL); if (result < 0) return gnutls_assert_val(result); } @@ -1804,8 +1735,8 @@ gnutls_x509_crt_privkey_sign(gnutls_x509_crt_t crt, return result; } - result = _gnutls_x509_pkix_sign(crt->cert, "tbsCertificate", - dig, flags, issuer, issuer_key); + result = _gnutls_x509_pkix_sign(crt->cert, "tbsCertificate", dig, flags, + issuer, issuer_key); if (result < 0) { gnutls_assert(); return result; @@ -1835,9 +1766,8 @@ gnutls_x509_crt_privkey_sign(gnutls_x509_crt_t crt, * * Since: 3.0 **/ -int -gnutls_x509_crt_set_authority_info_access(gnutls_x509_crt_t crt, - int what, gnutls_datum_t * data) +int gnutls_x509_crt_set_authority_info_access(gnutls_x509_crt_t crt, int what, + gnutls_datum_t *data) { int ret; gnutls_datum_t der = { NULL, 0 }; @@ -1856,7 +1786,7 @@ gnutls_x509_crt_set_authority_info_access(gnutls_x509_crt_t crt, } ret = _gnutls_x509_crt_get_extension(crt, GNUTLS_OID_AIA, 0, &der, &c); - if (ret >= 0) { /* decode it */ + if (ret >= 0) { /* decode it */ ret = gnutls_x509_ext_import_aia(&der, aia_ctx, 0); if (ret < 0) { gnutls_assert(); @@ -1888,7 +1818,7 @@ gnutls_x509_crt_set_authority_info_access(gnutls_x509_crt_t crt, goto cleanup; } - cleanup: +cleanup: if (aia_ctx != NULL) gnutls_x509_aia_deinit(aia_ctx); _gnutls_free_datum(&new_der); @@ -1915,10 +1845,9 @@ gnutls_x509_crt_set_authority_info_access(gnutls_x509_crt_t crt, * * Since: 3.1.5 **/ -int -gnutls_x509_crt_set_policy(gnutls_x509_crt_t crt, - const struct gnutls_x509_policy_st *policy, - unsigned int critical) +int gnutls_x509_crt_set_policy(gnutls_x509_crt_t crt, + const struct gnutls_x509_policy_st *policy, + unsigned int critical) { int ret; gnutls_datum_t der_data = { NULL, 0 }, prev_der_data = { NULL, 0 }; @@ -1943,8 +1872,8 @@ gnutls_x509_crt_set_policy(gnutls_x509_crt_t crt, } if (ret != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { - ret = gnutls_x509_ext_import_policies(&prev_der_data, - policies, 0); + ret = gnutls_x509_ext_import_policies(&prev_der_data, policies, + 0); if (ret < 0) { gnutls_assert(); goto cleanup; @@ -1965,7 +1894,7 @@ gnutls_x509_crt_set_policy(gnutls_x509_crt_t crt, ret = _gnutls_x509_crt_set_extension(crt, "2.5.29.32", &der_data, 0); - cleanup: +cleanup: if (policies != NULL) gnutls_x509_policies_deinit(policies); _gnutls_free_datum(&prev_der_data); @@ -1993,9 +1922,8 @@ gnutls_x509_crt_set_policy(gnutls_x509_crt_t crt, * * Since: 3.6.0 **/ -int -gnutls_x509_crt_set_spki(gnutls_x509_crt_t crt, - const gnutls_x509_spki_t spki, unsigned int flags) +int gnutls_x509_crt_set_spki(gnutls_x509_crt_t crt, + const gnutls_x509_spki_t spki, unsigned int flags) { int ret; gnutls_pk_algorithm_t crt_pk; @@ -2089,7 +2017,7 @@ gnutls_x509_crt_set_spki(gnutls_x509_crt_t crt, } ret = 0; - cleanup: +cleanup: gnutls_pk_params_release(¶ms); return ret; } diff --git a/lib/x509_b64.c b/lib/x509_b64.c index bda4707ca2..a1ca907bb9 100644 --- a/lib/x509_b64.c +++ b/lib/x509_b64.c @@ -30,22 +30,22 @@ #include #include -#define INCR(what, size, max_len) \ - do { \ - what+=size; \ - if (what > max_len) { \ - gnutls_assert(); \ - gnutls_free( result->data); result->data = NULL; \ - return GNUTLS_E_INTERNAL_ERROR; \ - } \ - } while(0) +#define INCR(what, size, max_len) \ + do { \ + what += size; \ + if (what > max_len) { \ + gnutls_assert(); \ + gnutls_free(result->data); \ + result->data = NULL; \ + return GNUTLS_E_INTERNAL_ERROR; \ + } \ + } while (0) /* encodes data and puts the result into result (locally allocated) * The result_size (including the null terminator) is the return value. */ -int -_gnutls_fbase64_encode(const char *msg, const uint8_t * data, - size_t data_size, gnutls_datum_t * result) +int _gnutls_fbase64_encode(const char *msg, const uint8_t *data, + size_t data_size, gnutls_datum_t *result) { int tmp; unsigned int i; @@ -100,8 +100,8 @@ _gnutls_fbase64_encode(const char *msg, const uint8_t * data, size = BASE64_ENCODE_RAW_LENGTH(tmp); if (sizeof(tmpres) < size) - return - gnutls_assert_val(GNUTLS_E_BASE64_ENCODING_ERROR); + return gnutls_assert_val( + GNUTLS_E_BASE64_ENCODING_ERROR); base64_encode_raw((void *)tmpres, tmp, &data[i]); @@ -145,9 +145,8 @@ _gnutls_fbase64_encode(const char *msg, const uint8_t * data, * %GNUTLS_E_SHORT_MEMORY_BUFFER is returned if the buffer given is * not long enough, or 0 on success. **/ -int -gnutls_pem_base64_encode(const char *msg, const gnutls_datum_t * data, - char *result, size_t *result_size) +int gnutls_pem_base64_encode(const char *msg, const gnutls_datum_t *data, + char *result, size_t *result_size) { gnutls_datum_t res; int ret; @@ -191,9 +190,8 @@ gnutls_pem_base64_encode(const char *msg, const gnutls_datum_t * data, * * Since: 3.4.0 **/ -int -gnutls_pem_base64_encode2(const char *header, - const gnutls_datum_t * data, gnutls_datum_t * result) +int gnutls_pem_base64_encode2(const char *header, const gnutls_datum_t *data, + gnutls_datum_t *result) { int ret; @@ -213,8 +211,8 @@ gnutls_pem_base64_encode2(const char *header, * It will fail with GNUTLS_E_BASE64_DECODING_ERROR if the * end-result is the empty string. */ -inline static int -cpydata(const uint8_t * data, int data_size, gnutls_datum_t * result) +inline static int cpydata(const uint8_t *data, int data_size, + gnutls_datum_t *result) { int i, j; @@ -223,8 +221,8 @@ cpydata(const uint8_t * data, int data_size, gnutls_datum_t * result) return GNUTLS_E_MEMORY_ERROR; for (j = i = 0; i < data_size; i++) { - if (data[i] == '\n' || data[i] == '\r' || data[i] == ' ' - || data[i] == '\t') + if (data[i] == '\n' || data[i] == '\r' || data[i] == ' ' || + data[i] == '\t') continue; else if (data[i] == '-') break; @@ -249,9 +247,8 @@ cpydata(const uint8_t * data, int data_size, gnutls_datum_t * result) * * The result_size is the return value. */ -int -_gnutls_base64_decode(const uint8_t * data, size_t data_size, - gnutls_datum_t * result) +int _gnutls_base64_decode(const uint8_t *data, size_t data_size, + gnutls_datum_t *result) { int ret; size_t size; @@ -286,8 +283,8 @@ _gnutls_base64_decode(const uint8_t * data, size_t data_size, goto cleanup; } - ret = base64_decode_update(&ctx, &size, result->data, - pdata.size, (void *)pdata.data); + ret = base64_decode_update(&ctx, &size, result->data, pdata.size, + (void *)pdata.data); if (ret == 0 || size == 0) { gnutls_assert(); ret = GNUTLS_E_BASE64_DECODING_ERROR; @@ -305,10 +302,10 @@ _gnutls_base64_decode(const uint8_t * data, size_t data_size, ret = size; goto cleanup; - fail: +fail: gnutls_free(result->data); - cleanup: +cleanup: gnutls_free(pdata.data); return ret; } @@ -320,9 +317,8 @@ _gnutls_base64_decode(const uint8_t * data, size_t data_size, * or a negative error code. */ #define ENDSTR "-----" -int -_gnutls_fbase64_decode(const char *header, const uint8_t * data, - size_t data_size, gnutls_datum_t * result) +int _gnutls_fbase64_decode(const char *header, const uint8_t *data, + size_t data_size, gnutls_datum_t *result) { int ret; static const char top[] = "-----BEGIN "; @@ -403,17 +399,14 @@ _gnutls_fbase64_decode(const char *header, const uint8_t * data, * %GNUTLS_E_SHORT_MEMORY_BUFFER is returned if the buffer given is * not long enough, or 0 on success. **/ -int -gnutls_pem_base64_decode(const char *header, - const gnutls_datum_t * b64_data, - unsigned char *result, size_t *result_size) +int gnutls_pem_base64_decode(const char *header, const gnutls_datum_t *b64_data, + unsigned char *result, size_t *result_size) { gnutls_datum_t res; int ret; - ret = - _gnutls_fbase64_decode(header, b64_data->data, b64_data->size, - &res); + ret = _gnutls_fbase64_decode(header, b64_data->data, b64_data->size, + &res); if (ret < 0) return gnutls_assert_val(ret); @@ -453,19 +446,17 @@ gnutls_pem_base64_decode(const char *header, * * Since: 3.4.0 **/ -int -gnutls_pem_base64_decode2(const char *header, - const gnutls_datum_t * b64_data, - gnutls_datum_t * result) +int gnutls_pem_base64_decode2(const char *header, + const gnutls_datum_t *b64_data, + gnutls_datum_t *result) { int ret; if (result == NULL) return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - ret = - _gnutls_fbase64_decode(header, b64_data->data, b64_data->size, - result); + ret = _gnutls_fbase64_decode(header, b64_data->data, b64_data->size, + result); if (ret < 0) return gnutls_assert_val(ret); @@ -487,8 +478,7 @@ gnutls_pem_base64_decode2(const char *header, * * Since: 3.6.0 **/ -int -gnutls_base64_decode2(const gnutls_datum_t * base64, gnutls_datum_t * result) +int gnutls_base64_decode2(const gnutls_datum_t *base64, gnutls_datum_t *result) { int ret; @@ -516,7 +506,7 @@ gnutls_base64_decode2(const gnutls_datum_t * base64, gnutls_datum_t * result) * * Since: 3.6.0 **/ -int gnutls_base64_encode2(const gnutls_datum_t * data, gnutls_datum_t * result) +int gnutls_base64_encode2(const gnutls_datum_t *data, gnutls_datum_t *result) { int ret; diff --git a/lib/x509_b64.h b/lib/x509_b64.h index bc4402dba7..aab8e37765 100644 --- a/lib/x509_b64.h +++ b/lib/x509_b64.h @@ -21,24 +21,25 @@ */ #ifndef GNUTLS_LIB_X509_B64_H -# define GNUTLS_LIB_X509_B64_H +#define GNUTLS_LIB_X509_B64_H -int _gnutls_fbase64_encode(const char *msg, const uint8_t * data, - size_t data_size, gnutls_datum_t * result); -int _gnutls_fbase64_decode(const char *header, const uint8_t * data, - size_t data_size, gnutls_datum_t * result); +int _gnutls_fbase64_encode(const char *msg, const uint8_t *data, + size_t data_size, gnutls_datum_t *result); +int _gnutls_fbase64_decode(const char *header, const uint8_t *data, + size_t data_size, gnutls_datum_t *result); -int -_gnutls_base64_decode(const uint8_t * data, size_t data_size, - gnutls_datum_t * result); +int _gnutls_base64_decode(const uint8_t *data, size_t data_size, + gnutls_datum_t *result); -# define B64SIZE( data_size) ((data_size%3==0)?((data_size*4)/3):(4+((data_size/3)*4))) +#define B64SIZE(data_size) \ + ((data_size % 3 == 0) ? ((data_size * 4) / 3) : \ + (4 + ((data_size / 3) * 4))) /* The size for B64 encoding + newlines plus header */ -# define B64FSIZE( hsize, dsize) \ +#define B64FSIZE(hsize, dsize) \ (B64SIZE(dsize) + (hsize) + /*newlines*/ \ - B64SIZE(dsize)/64 + (((B64SIZE(dsize) % 64) > 0) ? 1 : 0)) + B64SIZE(dsize) / 64 + (((B64SIZE(dsize) % 64) > 0) ? 1 : 0)) -#endif /* GNUTLS_LIB_X509_B64_H */ +#endif /* GNUTLS_LIB_X509_B64_H */ diff --git a/libdane/dane-params.c b/libdane/dane-params.c index 0a262bb3ff..d664abcc32 100644 --- a/libdane/dane-params.c +++ b/libdane/dane-params.c @@ -37,11 +37,10 @@ typedef struct cert_type_entry { dane_cert_type_t type; } cert_type_entry; -static const cert_type_entry dane_cert_types[] = { - {"X.509", DANE_CERT_X509}, - {"SubjectPublicKeyInfo", DANE_CERT_PK}, - {NULL, 0} -}; +static const cert_type_entry dane_cert_types[] = { { "X.509", DANE_CERT_X509 }, + { "SubjectPublicKeyInfo", + DANE_CERT_PK }, + { NULL, 0 } }; typedef struct match_type_entry { const char *name; @@ -49,10 +48,10 @@ typedef struct match_type_entry { } match_type_entry; static const match_type_entry dane_match_types[] = { - {"Exact match", DANE_MATCH_EXACT}, - {"SHA2-256 hash", DANE_MATCH_SHA2_256}, - {"SHA2-512 hash", DANE_MATCH_SHA2_512}, - {NULL, 0} + { "Exact match", DANE_MATCH_EXACT }, + { "SHA2-256 hash", DANE_MATCH_SHA2_256 }, + { "SHA2-512 hash", DANE_MATCH_SHA2_512 }, + { NULL, 0 } }; typedef struct cert_usage_entry { @@ -61,11 +60,11 @@ typedef struct cert_usage_entry { } cert_usage_entry; static const cert_usage_entry dane_cert_usages[] = { - {"CA", DANE_CERT_USAGE_CA}, - {"End-entity", DANE_CERT_USAGE_EE}, - {"Local CA", DANE_CERT_USAGE_LOCAL_CA}, - {"Local end-entity", DANE_CERT_USAGE_LOCAL_EE}, - {NULL, 0} + { "CA", DANE_CERT_USAGE_CA }, + { "End-entity", DANE_CERT_USAGE_EE }, + { "Local CA", DANE_CERT_USAGE_LOCAL_CA }, + { "Local end-entity", DANE_CERT_USAGE_LOCAL_EE }, + { NULL, 0 } }; /** @@ -132,5 +131,4 @@ const char *dane_cert_usage_name(dane_cert_usage_t usage) } return NULL; - } diff --git a/libdane/dane.c b/libdane/dane.c index e25d600fd7..dd0851fb16 100644 --- a/libdane/dane.c +++ b/libdane/dane.c @@ -42,16 +42,16 @@ #undef gnutls_assert_val #ifdef DEBUG -# define gnutls_assert() fprintf(stderr, "ASSERT: %s: %d\n", __FILE__, __LINE__); -# define gnutls_assert_val(x) gnutls_assert_val_int(x, __FILE__, __LINE__) +#define gnutls_assert() fprintf(stderr, "ASSERT: %s: %d\n", __FILE__, __LINE__); +#define gnutls_assert_val(x) gnutls_assert_val_int(x, __FILE__, __LINE__) static int gnutls_assert_val_int(int val, const char *file, int line) { fprintf(stderr, "ASSERT: %s: %d\n", file, line); return val; } #else -# define gnutls_assert() -# define gnutls_assert_val(x) (x) +#define gnutls_assert() +#define gnutls_assert_val(x) (x) #endif struct dane_state_st { @@ -112,10 +112,9 @@ unsigned int dane_query_entries(dane_query_t q) * Returns: On success, %DANE_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -dane_query_data(dane_query_t q, unsigned int idx, - unsigned int *usage, unsigned int *type, - unsigned int *match, gnutls_datum_t * data) +int dane_query_data(dane_query_t q, unsigned int idx, unsigned int *usage, + unsigned int *type, unsigned int *match, + gnutls_datum_t *data) { if (idx >= q->data_entries) return gnutls_assert_val(DANE_E_REQUESTED_DATA_NOT_AVAILABLE); @@ -157,10 +156,9 @@ dane_query_data(dane_query_t q, unsigned int idx, * Returns: On success, %DANE_E_SUCCESS (0) is returned, otherwise a * negative error value. */ -int -dane_query_to_raw_tlsa(dane_query_t q, unsigned int *data_entries, - char ***dane_data, int **dane_data_len, int *secure, - int *bogus) +int dane_query_to_raw_tlsa(dane_query_t q, unsigned int *data_entries, + char ***dane_data, int **dane_data_len, int *secure, + int *bogus) { size_t data_sz; char *data_buf; @@ -196,7 +194,7 @@ dane_query_to_raw_tlsa(dane_query_t q, unsigned int *data_entries, data_buf += sizeof(**dane_data) * (q->data_entries + 1); *dane_data_len = - gnutls_calloc(q->data_entries + 1, sizeof(**dane_data_len)); + gnutls_calloc(q->data_entries + 1, sizeof(**dane_data_len)); if (*dane_data_len == NULL) { free(*dane_data); *dane_data = NULL; @@ -232,7 +230,7 @@ dane_query_to_raw_tlsa(dane_query_t q, unsigned int *data_entries, * Returns: On success, %DANE_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int dane_state_init(dane_state_t * s, unsigned int flags) +int dane_state_init(dane_state_t *s, unsigned int flags) { struct ub_ctx *ctx; int ret; @@ -265,7 +263,8 @@ int dane_state_init(dane_state_t * s, unsigned int flags) /* read public keys for DNSSEC verification */ if (!(flags & DANE_F_IGNORE_DNSSEC)) { - if (ub_ctx_add_ta_file(ctx, (char *)UNBOUND_ROOT_KEY_FILE) != 0) { + if (ub_ctx_add_ta_file(ctx, (char *)UNBOUND_ROOT_KEY_FILE) != + 0) { gnutls_assert(); ret = DANE_E_INITIALIZATION_ERROR; goto cleanup; @@ -276,7 +275,7 @@ int dane_state_init(dane_state_t * s, unsigned int flags) (*s)->flags = flags; return DANE_E_SUCCESS; - cleanup: +cleanup: if (ctx) ub_ctx_delete(ctx); @@ -311,8 +310,8 @@ int dane_state_set_dlv_file(dane_state_t s, const char *file) { int ret; - ret = - ub_ctx_set_option(s->ctx, (char *)"dlv-anchor-file:", (void *)file); + ret = ub_ctx_set_option(s->ctx, + (char *)"dlv-anchor-file:", (void *)file); if (ret != 0) return gnutls_assert_val(DANE_E_FILE_ERROR); @@ -353,9 +352,8 @@ void dane_query_deinit(dane_query_t q) * Returns: On success, %DANE_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -dane_raw_tlsa(dane_state_t s, dane_query_t * r, char *const *dane_data, - const int *dane_data_len, int secure, int bogus) +int dane_raw_tlsa(dane_state_t s, dane_query_t *r, char *const *dane_data, + const int *dane_data_len, int secure, int bogus) { int ret = DANE_E_SUCCESS; unsigned int i; @@ -416,9 +414,8 @@ dane_raw_tlsa(dane_state_t s, dane_query_t * r, char *const *dane_data, * Returns: On success, %DANE_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -dane_query_tlsa(dane_state_t s, dane_query_t * r, const char *host, - const char *proto, unsigned int port) +int dane_query_tlsa(dane_state_t s, dane_query_t *r, const char *host, + const char *proto, unsigned int port) { char ns[1024]; int ret; @@ -432,15 +429,14 @@ dane_query_tlsa(dane_state_t s, dane_query_t * r, const char *host, return gnutls_assert_val(DANE_E_RESOLVING_ERROR); } -/* show first result */ + /* show first result */ if (!result->havedata) { ub_resolve_free(result); return gnutls_assert_val(DANE_E_NO_DANE_DATA); } - ret = - dane_raw_tlsa(s, r, result->data, result->len, result->secure, - result->bogus); + ret = dane_raw_tlsa(s, r, result->data, result->len, result->secure, + result->bogus); if (*r == NULL) { ub_resolve_free(result); return ret; @@ -449,9 +445,8 @@ dane_query_tlsa(dane_state_t s, dane_query_t * r, const char *host, return ret; } -static unsigned int -matches(const gnutls_datum_t * raw1, const gnutls_datum_t * raw2, - dane_match_type_t match) +static unsigned int matches(const gnutls_datum_t *raw1, + const gnutls_datum_t *raw2, dane_match_type_t match) { uint8_t digest[64]; int ret; @@ -465,13 +460,11 @@ matches(const gnutls_datum_t * raw1, const gnutls_datum_t * raw2, return 1; } else if (match == DANE_MATCH_SHA2_256) { - if (raw2->size != 32) return gnutls_assert_val(0); - ret = - gnutls_hash_fast(GNUTLS_DIG_SHA256, raw1->data, - raw1->size, digest); + ret = gnutls_hash_fast(GNUTLS_DIG_SHA256, raw1->data, + raw1->size, digest); if (ret < 0) return gnutls_assert_val(0); @@ -483,9 +476,8 @@ matches(const gnutls_datum_t * raw1, const gnutls_datum_t * raw2, if (raw2->size != 64) return gnutls_assert_val(0); - ret = - gnutls_hash_fast(GNUTLS_DIG_SHA512, raw1->data, - raw1->size, digest); + ret = gnutls_hash_fast(GNUTLS_DIG_SHA512, raw1->data, + raw1->size, digest); if (ret < 0) return gnutls_assert_val(0); @@ -498,7 +490,7 @@ matches(const gnutls_datum_t * raw1, const gnutls_datum_t * raw2, return gnutls_assert_val(0); } -static int crt_to_pubkey(const gnutls_datum_t * raw_crt, gnutls_datum_t * out) +static int crt_to_pubkey(const gnutls_datum_t *raw_crt, gnutls_datum_t *out) { gnutls_pubkey_t pub = NULL; gnutls_x509_crt_t crt = NULL; @@ -541,10 +533,10 @@ static int crt_to_pubkey(const gnutls_datum_t * raw_crt, gnutls_datum_t * out) ret = 0; goto clean_certs; - cleanup: +cleanup: free(out->data); out->data = NULL; - clean_certs: +clean_certs: if (pub) gnutls_pubkey_deinit(pub); if (crt) @@ -553,11 +545,10 @@ static int crt_to_pubkey(const gnutls_datum_t * raw_crt, gnutls_datum_t * out) return ret; } -static int -verify_ca(const gnutls_datum_t * raw_crt, unsigned raw_crt_size, - gnutls_certificate_type_t crt_type, - dane_cert_type_t ctype, - dane_match_type_t match, gnutls_datum_t * data, unsigned int *verify) +static int verify_ca(const gnutls_datum_t *raw_crt, unsigned raw_crt_size, + gnutls_certificate_type_t crt_type, dane_cert_type_t ctype, + dane_match_type_t match, gnutls_datum_t *data, + unsigned int *verify) { gnutls_datum_t pubkey = { NULL, 0 }; int ret, i; @@ -565,7 +556,7 @@ verify_ca(const gnutls_datum_t * raw_crt, unsigned raw_crt_size, gnutls_x509_crt_t crt = NULL, ca = NULL; unsigned is_ok = 0; - if (raw_crt_size < 2) /* we cannot verify the CA */ + if (raw_crt_size < 2) /* we cannot verify the CA */ return gnutls_assert_val(DANE_E_UNKNOWN_DANE_DATA); if (ctype == DANE_CERT_X509 && crt_type == GNUTLS_CRT_X509) { @@ -630,9 +621,8 @@ verify_ca(const gnutls_datum_t * raw_crt, unsigned raw_crt_size, goto cleanup; } - ret = - gnutls_x509_crt_import(ca, &raw_crt[i], - GNUTLS_X509_FMT_DER); + ret = gnutls_x509_crt_import(ca, &raw_crt[i], + GNUTLS_X509_FMT_DER); if (ret < 0) { ret = gnutls_assert_val(DANE_E_CERT_ERROR); goto cleanup; @@ -661,7 +651,7 @@ verify_ca(const gnutls_datum_t * raw_crt, unsigned raw_crt_size, } ret = 0; - cleanup: +cleanup: free(pubkey.data); if (crt != NULL) gnutls_x509_crt_deinit(crt); @@ -670,23 +660,21 @@ verify_ca(const gnutls_datum_t * raw_crt, unsigned raw_crt_size, return ret; } -static int -verify_ee(const gnutls_datum_t * raw_crt, - gnutls_certificate_type_t crt_type, dane_cert_type_t ctype, - dane_match_type_t match, gnutls_datum_t * data, unsigned int *verify) +static int verify_ee(const gnutls_datum_t *raw_crt, + gnutls_certificate_type_t crt_type, dane_cert_type_t ctype, + dane_match_type_t match, gnutls_datum_t *data, + unsigned int *verify) { gnutls_datum_t pubkey = { NULL, 0 }; int ret; if (ctype == DANE_CERT_X509 && crt_type == GNUTLS_CRT_X509) { - if (!matches(raw_crt, data, match)) { gnutls_assert(); *verify |= DANE_VERIFY_CERT_DIFFERS; } } else if (ctype == DANE_CERT_PK && crt_type == GNUTLS_CRT_X509) { - ret = crt_to_pubkey(raw_crt, &pubkey); if (ret < 0) { gnutls_assert(); @@ -703,26 +691,26 @@ verify_ee(const gnutls_datum_t * raw_crt, } ret = 0; - cleanup: +cleanup: free(pubkey.data); return ret; } #define CHECK_VRET(ret, checked, record_status, status) \ - if (ret == DANE_E_UNKNOWN_DANE_DATA) { \ - /* skip that entry */ \ - continue; \ - } else if (ret < 0) { \ - gnutls_assert(); \ - goto cleanup; \ - } \ - checked = 1; \ - if (record_status == 0) { \ - status = 0; \ - break; \ - } else { \ - status |= record_status; \ - } + if (ret == DANE_E_UNKNOWN_DANE_DATA) { \ + /* skip that entry */ \ + continue; \ + } else if (ret < 0) { \ + gnutls_assert(); \ + goto cleanup; \ + } \ + checked = 1; \ + if (record_status == 0) { \ + status = 0; \ + break; \ + } else { \ + status |= record_status; \ + } /** * dane_verify_crt_raw: @@ -748,13 +736,11 @@ verify_ee(const gnutls_datum_t * raw_crt, * will be returned. * **/ -int -dane_verify_crt_raw(dane_state_t s, - const gnutls_datum_t * chain, unsigned chain_size, - gnutls_certificate_type_t chain_type, - dane_query_t r, - unsigned int sflags, unsigned int vflags, - unsigned int *verify) +int dane_verify_crt_raw(dane_state_t s, const gnutls_datum_t *chain, + unsigned chain_size, + gnutls_certificate_type_t chain_type, dane_query_t r, + unsigned int sflags, unsigned int vflags, + unsigned int *verify) { int ret; unsigned checked = 0; @@ -781,24 +767,21 @@ dane_verify_crt_raw(dane_state_t s, goto cleanup; } - if (!(vflags & DANE_VFLAG_ONLY_CHECK_EE_USAGE) - && (usage == DANE_CERT_USAGE_LOCAL_CA - || usage == DANE_CERT_USAGE_CA)) { - ret = - verify_ca(chain, chain_size, chain_type, type, - match, &data, &record_verify); + if (!(vflags & DANE_VFLAG_ONLY_CHECK_EE_USAGE) && + (usage == DANE_CERT_USAGE_LOCAL_CA || + usage == DANE_CERT_USAGE_CA)) { + ret = verify_ca(chain, chain_size, chain_type, type, + match, &data, &record_verify); CHECK_VRET(ret, checked, record_verify, *verify); - } else if (!(vflags & DANE_VFLAG_ONLY_CHECK_CA_USAGE) - && (usage == DANE_CERT_USAGE_LOCAL_EE - || usage == DANE_CERT_USAGE_EE)) { - ret = - verify_ee(&chain[0], chain_type, type, match, - &data, &record_verify); + } else if (!(vflags & DANE_VFLAG_ONLY_CHECK_CA_USAGE) && + (usage == DANE_CERT_USAGE_LOCAL_EE || + usage == DANE_CERT_USAGE_EE)) { + ret = verify_ee(&chain[0], chain_type, type, match, + &data, &record_verify); CHECK_VRET(ret, checked, record_verify, *verify); } - } - while (1); + } while (1); if ((vflags & DANE_VFLAG_FAIL_IF_NOT_CHECKED) && checked == 0) { ret = gnutls_assert_val(DANE_E_REQUESTED_DATA_NOT_AVAILABLE); @@ -808,7 +791,7 @@ dane_verify_crt_raw(dane_state_t s, ret = 0; } - cleanup: +cleanup: return ret; } @@ -849,12 +832,11 @@ dane_verify_crt_raw(dane_state_t s, * will be returned. * **/ -int -dane_verify_crt(dane_state_t s, - const gnutls_datum_t * chain, unsigned chain_size, - gnutls_certificate_type_t chain_type, - const char *hostname, const char *proto, unsigned int port, - unsigned int sflags, unsigned int vflags, unsigned int *verify) +int dane_verify_crt(dane_state_t s, const gnutls_datum_t *chain, + unsigned chain_size, gnutls_certificate_type_t chain_type, + const char *hostname, const char *proto, unsigned int port, + unsigned int sflags, unsigned int vflags, + unsigned int *verify) { dane_state_t state = NULL; dane_query_t r = NULL; @@ -875,9 +857,9 @@ dane_verify_crt(dane_state_t s, gnutls_assert(); goto cleanup; } - ret = dane_verify_crt_raw(state, chain, chain_size, chain_type, - r, sflags, vflags, verify); - cleanup: + ret = dane_verify_crt_raw(state, chain, chain_size, chain_type, r, + sflags, vflags, verify); +cleanup: if (state != s) dane_state_deinit(state); if (r != NULL) @@ -911,12 +893,10 @@ dane_verify_crt(dane_state_t s, * will be returned. * **/ -int -dane_verify_session_crt(dane_state_t s, - gnutls_session_t session, - const char *hostname, const char *proto, - unsigned int port, unsigned int sflags, - unsigned int vflags, unsigned int *verify) +int dane_verify_session_crt(dane_state_t s, gnutls_session_t session, + const char *hostname, const char *proto, + unsigned int port, unsigned int sflags, + unsigned int vflags, unsigned int *verify) { const gnutls_datum_t *cert_list; unsigned int cert_list_size = 0; @@ -939,9 +919,8 @@ dane_verify_session_crt(dane_state_t s, goto failsafe; } - ret = - gnutls_x509_crt_import(crt, &cert_list[cert_list_size - 1], - GNUTLS_X509_FMT_DER); + ret = gnutls_x509_crt_import(crt, &cert_list[cert_list_size - 1], + GNUTLS_X509_FMT_DER); if (ret < 0) { gnutls_assert(); gnutls_x509_crt_deinit(crt); @@ -957,9 +936,8 @@ dane_verify_session_crt(dane_state_t s, } /* chain does not finish in a self signed cert, try to obtain the issuer */ - ret = - gnutls_credentials_get(session, GNUTLS_CRD_CERTIFICATE, - (void **)&sc); + ret = gnutls_credentials_get(session, GNUTLS_CRD_CERTIFICATE, + (void **)&sc); if (ret < 0) { gnutls_assert(); gnutls_x509_crt_deinit(crt); @@ -977,7 +955,7 @@ dane_verify_session_crt(dane_state_t s, gnutls_datum_t *new_cert_list; new_cert_list = - gnutls_malloc((cert_list_size + 1) * sizeof(gnutls_datum_t)); + gnutls_malloc((cert_list_size + 1) * sizeof(gnutls_datum_t)); if (new_cert_list == NULL) { gnutls_assert(); gnutls_x509_crt_deinit(crt); @@ -987,9 +965,8 @@ dane_verify_session_crt(dane_state_t s, memcpy(new_cert_list, cert_list, cert_list_size * sizeof(gnutls_datum_t)); - ret = - gnutls_x509_crt_export2(ca, GNUTLS_X509_FMT_DER, - &new_cert_list[cert_list_size]); + ret = gnutls_x509_crt_export2(ca, GNUTLS_X509_FMT_DER, + &new_cert_list[cert_list_size]); if (ret < 0) { gnutls_assert(); free(new_cert_list); @@ -1006,9 +983,9 @@ dane_verify_session_crt(dane_state_t s, free(new_cert_list); return ret; - failsafe: - return dane_verify_crt(s, cert_list, cert_list_size, type, - hostname, proto, port, sflags, vflags, verify); +failsafe: + return dane_verify_crt(s, cert_list, cert_list_size, type, hostname, + proto, port, sflags, vflags, verify); } /** @@ -1026,9 +1003,8 @@ dane_verify_session_crt(dane_state_t s, * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a * negative error value. **/ -int -dane_verification_status_print(unsigned int status, - gnutls_datum_t * out, unsigned int flags) +int dane_verification_status_print(unsigned int status, gnutls_datum_t *out, + unsigned int flags) { gnutls_buffer_st str; @@ -1047,9 +1023,8 @@ dane_verification_status_print(unsigned int status, _gnutls_buffer_append_str(&str, _("The certificate differs. ")); if (status & DANE_VERIFY_NO_DANE_INFO) - _gnutls_buffer_append_str(&str, - _ - ("There were no DANE information. ")); + _gnutls_buffer_append_str( + &str, _("There were no DANE information. ")); return _gnutls_buffer_to_datum(&str, out, 1); } diff --git a/libdane/errors.c b/libdane/errors.c index 35ae971723..cf2b405063 100644 --- a/libdane/errors.c +++ b/libdane/errors.c @@ -25,11 +25,13 @@ /* I18n of error codes. */ #include "gettext.h" -#define _(String) dgettext (PACKAGE, String) -#define N_(String) gettext_noop (String) +#define _(String) dgettext(PACKAGE, String) +#define N_(String) gettext_noop(String) -#define ERROR_ENTRY(desc, name) \ - { desc, #name, name} +#define ERROR_ENTRY(desc, name) \ + { \ + desc, #name, name \ + } struct error_entry { const char *desc; @@ -44,31 +46,24 @@ static const error_entry error_algorithms[] = { DANE_E_INITIALIZATION_ERROR), ERROR_ENTRY(N_("There was an error while resolving."), DANE_E_RESOLVING_ERROR), - ERROR_ENTRY(N_("No DANE data were found."), - DANE_E_NO_DANE_DATA), + ERROR_ENTRY(N_("No DANE data were found."), DANE_E_NO_DANE_DATA), ERROR_ENTRY(N_("Unknown DANE data were found."), DANE_E_UNKNOWN_DANE_DATA), - ERROR_ENTRY(N_("No DNSSEC signature was found."), - DANE_E_NO_DNSSEC_SIG), - ERROR_ENTRY(N_("Received corrupt data."), - DANE_E_RECEIVED_CORRUPT_DATA), + ERROR_ENTRY(N_("No DNSSEC signature was found."), DANE_E_NO_DNSSEC_SIG), + ERROR_ENTRY(N_("Received corrupt data."), DANE_E_RECEIVED_CORRUPT_DATA), ERROR_ENTRY(N_("The DNSSEC signature is invalid."), DANE_E_INVALID_DNSSEC_SIG), - ERROR_ENTRY(N_("There was a memory error."), - DANE_E_MEMORY_ERROR), + ERROR_ENTRY(N_("There was a memory error."), DANE_E_MEMORY_ERROR), ERROR_ENTRY(N_("The requested data are not available."), DANE_E_REQUESTED_DATA_NOT_AVAILABLE), - ERROR_ENTRY(N_("The request is invalid."), - DANE_E_INVALID_REQUEST), + ERROR_ENTRY(N_("The request is invalid."), DANE_E_INVALID_REQUEST), ERROR_ENTRY(N_("There was an error in the certificate."), DANE_E_CERT_ERROR), ERROR_ENTRY(N_("There was an error in the public key."), DANE_E_PUBKEY_ERROR), - ERROR_ENTRY(N_("No certificate was found."), - DANE_E_NO_CERT), - ERROR_ENTRY(N_("Error in file."), - DANE_E_FILE_ERROR), - {NULL, NULL, 0} + ERROR_ENTRY(N_("No certificate was found."), DANE_E_NO_CERT), + ERROR_ENTRY(N_("Error in file."), DANE_E_FILE_ERROR), + { NULL, NULL, 0 } }; /** diff --git a/libdane/includes/gnutls/dane.h b/libdane/includes/gnutls/dane.h index f6ea07d2aa..64088e2b13 100644 --- a/libdane/includes/gnutls/dane.h +++ b/libdane/includes/gnutls/dane.h @@ -21,9 +21,9 @@ */ #ifndef GNUTLS_DANE_H -# define GNUTLS_DANE_H +#define GNUTLS_DANE_H -# include /* for gnutls_datum_t */ +#include /* for gnutls_datum_t */ /** * dane_cert_usage_t: @@ -104,21 +104,21 @@ typedef enum dane_state_flags_t { DANE_F_IGNORE_DNSSEC = 4 } dane_state_flags_t; -int dane_state_init(dane_state_t * s, unsigned int flags); +int dane_state_init(dane_state_t *s, unsigned int flags); int dane_state_set_dlv_file(dane_state_t s, const char *file); void dane_state_deinit(dane_state_t s); -int dane_raw_tlsa(dane_state_t s, dane_query_t * r, char *const *dane_data, +int dane_raw_tlsa(dane_state_t s, dane_query_t *r, char *const *dane_data, const int *dane_data_len, int secure, int bogus); -int dane_query_tlsa(dane_state_t s, dane_query_t * r, const char *host, +int dane_query_tlsa(dane_state_t s, dane_query_t *r, const char *host, const char *proto, unsigned int port); dane_query_status_t dane_query_status(dane_query_t q); unsigned int dane_query_entries(dane_query_t q); -int dane_query_data(dane_query_t q, unsigned int idx, - unsigned int *usage, unsigned int *type, - unsigned int *match, gnutls_datum_t * data); +int dane_query_data(dane_query_t q, unsigned int idx, unsigned int *usage, + unsigned int *type, unsigned int *match, + gnutls_datum_t *data); int dane_query_to_raw_tlsa(dane_query_t q, unsigned int *data_entries, char ***dane_data, int **dane_data_len, int *secure, int *bogus); @@ -156,49 +156,45 @@ typedef enum dane_verify_status_t { DANE_VERIFY_UNKNOWN_DANE_INFO = 1 << 2, } dane_verify_status_t; -# define DANE_VERIFY_CA_CONSTRAINS_VIOLATED DANE_VERIFY_CA_CONSTRAINTS_VIOLATED -# define DANE_VERIFY_NO_DANE_INFO DANE_VERIFY_UNKNOWN_DANE_INFO +#define DANE_VERIFY_CA_CONSTRAINS_VIOLATED DANE_VERIFY_CA_CONSTRAINTS_VIOLATED +#define DANE_VERIFY_NO_DANE_INFO DANE_VERIFY_UNKNOWN_DANE_INFO -int -dane_verification_status_print(unsigned int status, - gnutls_datum_t * out, unsigned int flags); +int dane_verification_status_print(unsigned int status, gnutls_datum_t *out, + unsigned int flags); -int dane_verify_crt_raw(dane_state_t s, - const gnutls_datum_t * chain, unsigned chain_size, - gnutls_certificate_type_t chain_type, - dane_query_t r, +int dane_verify_crt_raw(dane_state_t s, const gnutls_datum_t *chain, + unsigned chain_size, + gnutls_certificate_type_t chain_type, dane_query_t r, unsigned int sflags, unsigned int vflags, unsigned int *verify); -int dane_verify_crt(dane_state_t s, - const gnutls_datum_t * chain, unsigned chain_size, - gnutls_certificate_type_t chain_type, - const char *hostname, const char *proto, - unsigned int port, unsigned int sflags, - unsigned int vflags, unsigned int *verify); +int dane_verify_crt(dane_state_t s, const gnutls_datum_t *chain, + unsigned chain_size, gnutls_certificate_type_t chain_type, + const char *hostname, const char *proto, unsigned int port, + unsigned int sflags, unsigned int vflags, + unsigned int *verify); -int dane_verify_session_crt(dane_state_t s, - gnutls_session_t session, +int dane_verify_session_crt(dane_state_t s, gnutls_session_t session, const char *hostname, const char *proto, unsigned int port, unsigned int sflags, unsigned int vflags, unsigned int *verify); const char *dane_strerror(int error); -# define DANE_E_SUCCESS 0 -# define DANE_E_INITIALIZATION_ERROR -1 -# define DANE_E_RESOLVING_ERROR -2 -# define DANE_E_NO_DANE_DATA -3 -# define DANE_E_RECEIVED_CORRUPT_DATA -4 -# define DANE_E_INVALID_DNSSEC_SIG -5 -# define DANE_E_NO_DNSSEC_SIG -6 -# define DANE_E_MEMORY_ERROR -7 -# define DANE_E_REQUESTED_DATA_NOT_AVAILABLE -8 -# define DANE_E_INVALID_REQUEST -9 -# define DANE_E_PUBKEY_ERROR -10 -# define DANE_E_NO_CERT -11 -# define DANE_E_FILE_ERROR -12 -# define DANE_E_CERT_ERROR -13 -# define DANE_E_UNKNOWN_DANE_DATA -14 - -#endif /* GNUTLS_DANE_H */ +#define DANE_E_SUCCESS 0 +#define DANE_E_INITIALIZATION_ERROR -1 +#define DANE_E_RESOLVING_ERROR -2 +#define DANE_E_NO_DANE_DATA -3 +#define DANE_E_RECEIVED_CORRUPT_DATA -4 +#define DANE_E_INVALID_DNSSEC_SIG -5 +#define DANE_E_NO_DNSSEC_SIG -6 +#define DANE_E_MEMORY_ERROR -7 +#define DANE_E_REQUESTED_DATA_NOT_AVAILABLE -8 +#define DANE_E_INVALID_REQUEST -9 +#define DANE_E_PUBKEY_ERROR -10 +#define DANE_E_NO_CERT -11 +#define DANE_E_FILE_ERROR -12 +#define DANE_E_CERT_ERROR -13 +#define DANE_E_UNKNOWN_DANE_DATA -14 + +#endif /* GNUTLS_DANE_H */ diff --git a/src/benchmark-cipher.c b/src/benchmark-cipher.c index 31949e35f1..9cdfaddfbb 100644 --- a/src/benchmark-cipher.c +++ b/src/benchmark-cipher.c @@ -39,12 +39,25 @@ static void tls_log_func(int level, const char *str) static unsigned page_size = 4096; -#define ALLOC(x) {x=malloc(step+64);assert(x!=NULL);} -#define ALLOCM(x, mem) {x=malloc(mem); assert(x!=NULL); assert(gnutls_rnd(GNUTLS_RND_NONCE, x, mem) >= 0);} +#define ALLOC(x) \ + { \ + x = malloc(step + 64); \ + assert(x != NULL); \ + } +#define ALLOCM(x, mem) \ + { \ + x = malloc(mem); \ + assert(x != NULL); \ + assert(gnutls_rnd(GNUTLS_RND_NONCE, x, mem) >= 0); \ + } #define FREE(x) free(x) -#define INC(orig, x, s) x+=page_size; if ((x+step) >= (((unsigned char*)orig) + MAX_MEM)) { x = orig; } +#define INC(orig, x, s) \ + x += page_size; \ + if ((x + step) >= (((unsigned char *)orig) + MAX_MEM)) { \ + x = orig; \ + } -#define MAX_MEM 64*1024*1024 +#define MAX_MEM 64 * 1024 * 1024 static void cipher_mac_bench(int algo, int mac_algo, int size) { @@ -107,15 +120,14 @@ static void cipher_mac_bench(int algo, int mac_algo, int size) gnutls_cipher_encrypt2(ctx, i, step, output, step + 64); st.size += step; INC(input, i, step); - } - while (benchmark_must_finish == 0); + } while (benchmark_must_finish == 0); gnutls_cipher_deinit(ctx); gnutls_hmac_deinit(mac_ctx, NULL); stop_benchmark(&st, NULL, 1); - leave: +leave: FREE(input); FREE(output); free(_key); @@ -156,7 +168,7 @@ static void cipher_bench(int algo, int size, int aead) /* For AES-XTS, the block and tweak key must be different */ if (algo == GNUTLS_CIPHER_AES_128_XTS || algo == GNUTLS_CIPHER_AES_256_XTS) { - memset((uint8_t *) _key + (keysize / 2), 0x0f, (keysize / 2)); + memset((uint8_t *)_key + (keysize / 2), 0x0f, (keysize / 2)); } _iv = malloc(ivsize); @@ -187,8 +199,7 @@ static void cipher_bench(int algo, int size, int aead) force_memcpy(output, i, step); st.size += step; INC(input, i, step); - } - while (benchmark_must_finish == 0); + } while (benchmark_must_finish == 0); } else if (aead != 0) { unsigned tag_size = gnutls_cipher_get_tag_size(algo); size_t out_size; @@ -201,13 +212,13 @@ static void cipher_bench(int algo, int size, int aead) do { out_size = step + tag_size; - assert(gnutls_aead_cipher_encrypt - (actx, iv.data, iv.size, NULL, 0, tag_size, i, - step, output, &out_size) >= 0); + assert(gnutls_aead_cipher_encrypt( + actx, iv.data, iv.size, NULL, 0, + tag_size, i, step, output, + &out_size) >= 0); st.size += step; INC(input, i, step); - } - while (benchmark_must_finish == 0); + } while (benchmark_must_finish == 0); gnutls_aead_cipher_deinit(actx); } else { @@ -221,8 +232,7 @@ static void cipher_bench(int algo, int size, int aead) gnutls_cipher_encrypt2(ctx, i, step, output, step + 64); st.size += step; INC(input, i, step); - } - while (benchmark_must_finish == 0); + } while (benchmark_must_finish == 0); gnutls_cipher_deinit(ctx); } @@ -230,7 +240,7 @@ static void cipher_bench(int algo, int size, int aead) FREE(input); FREE(output); - leave: +leave: free(_key); free(_iv); } @@ -263,8 +273,7 @@ static void mac_bench(int algo, int size) gnutls_hmac_fast(algo, _key, key_size, i, step, _key); st.size += step; INC(input, i, step); - } - while (benchmark_must_finish == 0); + } while (benchmark_must_finish == 0); stop_benchmark(&st, NULL, 1); FREE(input); diff --git a/src/benchmark-tls.c b/src/benchmark-tls.c index d0e8c27dcb..5ae4d7dad7 100644 --- a/src/benchmark-tls.c +++ b/src/benchmark-tls.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -32,10 +32,10 @@ #include #include -#define fail(...) \ - { \ +#define fail(...) \ + { \ fprintf(stderr, __VA_ARGS__); \ - exit(1); \ + exit(1); \ } #include "../tests/eagain-common.h" @@ -43,223 +43,236 @@ const char *side = ""; -#define PRIO_DHE_RSA "NONE:+VERS-TLS1.3:+AES-128-GCM:+AEAD:+SIGN-ALL:+COMP-NULL:+DHE-RSA:+GROUP-FFDHE3072" -#define PRIO_ECDH "NONE:+VERS-TLS1.3:+AES-128-GCM:+AEAD:+SIGN-ALL:+COMP-NULL:+ECDHE-RSA:+CURVE-SECP256R1" -#define PRIO_ECDH_X25519 "NONE:+VERS-TLS1.3:+AES-128-GCM:+AEAD:+SIGN-ALL:+COMP-NULL:+ECDHE-RSA:+CURVE-X25519" -#define PRIO_ECDHE_ECDSA "NONE:+VERS-TLS1.3:+AES-128-GCM:+AEAD:+SIGN-ALL:+COMP-NULL:+ECDHE-ECDSA:+CURVE-SECP256R1" -#define PRIO_ECDH_X25519_ECDSA "NONE:+VERS-TLS1.3:+AES-128-GCM:+AEAD:+SIGN-ALL:+COMP-NULL:+ECDHE-ECDSA:+CURVE-X25519" -#define PRIO_ECDH_X25519_EDDSA "NONE:+VERS-TLS1.3:+AES-128-GCM:+AEAD:+SIGN-EDDSA-ED25519:+COMP-NULL:+ECDHE-ECDSA:+CURVE-X25519" -#define PRIO_RSA "NONE:+VERS-TLS1.2:+AES-128-GCM:+AEAD:+SIGN-ALL:+COMP-NULL:+RSA" -#define PRIO_ECDH_RSA_PSS "NONE:+VERS-TLS1.3:+AES-128-GCM:+AEAD:+SIGN-RSA-PSS-SHA256:+COMP-NULL:+ECDHE-RSA:+CURVE-SECP256R1" - -#define PRIO_AES_CBC_SHA1 "NONE:+VERS-TLS1.0:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-NULL:+RSA" -#define PRIO_TLS12_AES_GCM "NONE:+VERS-TLS1.2:+AES-128-GCM:+AEAD:+SIGN-ALL:+COMP-NULL:+RSA" -#define PRIO_AES_GCM "NONE:+VERS-TLS1.3:+AES-128-GCM:+AEAD:+SIGN-ALL:+COMP-NULL:+GROUP-ALL" -#define PRIO_TLS12_AES_CCM "NONE:+VERS-TLS1.2:+AES-128-CCM:+AEAD:+SIGN-ALL:+COMP-NULL:+RSA" -#define PRIO_AES_CCM "NONE:+VERS-TLS1.3:+AES-128-CCM:+AEAD:+SIGN-ALL:+COMP-NULL:+GROUP-ALL" -#define PRIO_TLS12_CHACHA_POLY1305 "NONE:+VERS-TLS1.2:+CHACHA20-POLY1305:+AEAD:+SIGN-ALL:+COMP-NULL:+ECDHE-RSA:+CURVE-ALL" -#define PRIO_CHACHA_POLY1305 "NONE:+VERS-TLS1.3:+CHACHA20-POLY1305:+AEAD:+SIGN-ALL:+COMP-NULL:+ECDHE-RSA:+CURVE-ALL" -#define PRIO_CAMELLIA_CBC_SHA1 "NONE:+VERS-TLS1.0:+CAMELLIA-128-CBC:+SHA1:+SIGN-ALL:+COMP-NULL:+RSA" -#define PRIO_GOST_CNT "NONE:+VERS-TLS1.2:+GOST28147-TC26Z-CNT:+GOST28147-TC26Z-IMIT:+SIGN-ALL:+SIGN-GOSTR341012-256:+COMP-NULL:+VKO-GOST-12:+GROUP-GOST-ALL" +#define PRIO_DHE_RSA \ + "NONE:+VERS-TLS1.3:+AES-128-GCM:+AEAD:+SIGN-ALL:+COMP-NULL:+DHE-RSA:+GROUP-FFDHE3072" +#define PRIO_ECDH \ + "NONE:+VERS-TLS1.3:+AES-128-GCM:+AEAD:+SIGN-ALL:+COMP-NULL:+ECDHE-RSA:+CURVE-SECP256R1" +#define PRIO_ECDH_X25519 \ + "NONE:+VERS-TLS1.3:+AES-128-GCM:+AEAD:+SIGN-ALL:+COMP-NULL:+ECDHE-RSA:+CURVE-X25519" +#define PRIO_ECDHE_ECDSA \ + "NONE:+VERS-TLS1.3:+AES-128-GCM:+AEAD:+SIGN-ALL:+COMP-NULL:+ECDHE-ECDSA:+CURVE-SECP256R1" +#define PRIO_ECDH_X25519_ECDSA \ + "NONE:+VERS-TLS1.3:+AES-128-GCM:+AEAD:+SIGN-ALL:+COMP-NULL:+ECDHE-ECDSA:+CURVE-X25519" +#define PRIO_ECDH_X25519_EDDSA \ + "NONE:+VERS-TLS1.3:+AES-128-GCM:+AEAD:+SIGN-EDDSA-ED25519:+COMP-NULL:+ECDHE-ECDSA:+CURVE-X25519" +#define PRIO_RSA \ + "NONE:+VERS-TLS1.2:+AES-128-GCM:+AEAD:+SIGN-ALL:+COMP-NULL:+RSA" +#define PRIO_ECDH_RSA_PSS \ + "NONE:+VERS-TLS1.3:+AES-128-GCM:+AEAD:+SIGN-RSA-PSS-SHA256:+COMP-NULL:+ECDHE-RSA:+CURVE-SECP256R1" + +#define PRIO_AES_CBC_SHA1 \ + "NONE:+VERS-TLS1.0:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-NULL:+RSA" +#define PRIO_TLS12_AES_GCM \ + "NONE:+VERS-TLS1.2:+AES-128-GCM:+AEAD:+SIGN-ALL:+COMP-NULL:+RSA" +#define PRIO_AES_GCM \ + "NONE:+VERS-TLS1.3:+AES-128-GCM:+AEAD:+SIGN-ALL:+COMP-NULL:+GROUP-ALL" +#define PRIO_TLS12_AES_CCM \ + "NONE:+VERS-TLS1.2:+AES-128-CCM:+AEAD:+SIGN-ALL:+COMP-NULL:+RSA" +#define PRIO_AES_CCM \ + "NONE:+VERS-TLS1.3:+AES-128-CCM:+AEAD:+SIGN-ALL:+COMP-NULL:+GROUP-ALL" +#define PRIO_TLS12_CHACHA_POLY1305 \ + "NONE:+VERS-TLS1.2:+CHACHA20-POLY1305:+AEAD:+SIGN-ALL:+COMP-NULL:+ECDHE-RSA:+CURVE-ALL" +#define PRIO_CHACHA_POLY1305 \ + "NONE:+VERS-TLS1.3:+CHACHA20-POLY1305:+AEAD:+SIGN-ALL:+COMP-NULL:+ECDHE-RSA:+CURVE-ALL" +#define PRIO_CAMELLIA_CBC_SHA1 \ + "NONE:+VERS-TLS1.0:+CAMELLIA-128-CBC:+SHA1:+SIGN-ALL:+COMP-NULL:+RSA" +#define PRIO_GOST_CNT \ + "NONE:+VERS-TLS1.2:+GOST28147-TC26Z-CNT:+GOST28147-TC26Z-IMIT:+SIGN-ALL:+SIGN-GOSTR341012-256:+COMP-NULL:+VKO-GOST-12:+GROUP-GOST-ALL" static const int rsa_bits = 3072, ec_bits = 256; static unsigned char server_rsa_pss_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIErTCCAuWgAwIBAgIIWTZrqjOeCfIwPQYJKoZIhvcNAQEKMDCgDTALBglghkgB\n" - "ZQMEAgGhGjAYBgkqhkiG9w0BAQgwCwYJYIZIAWUDBAIBogMCASAwFzEVMBMGA1UE\n" - "AxMMcnNhLXBzcyBjZXJ0MCAXDTE3MDYwNjA4NDUzMVoYDzk5OTkxMjMxMjM1OTU5\n" - "WjAXMRUwEwYDVQQDEwxyc2EtcHNzIGNlcnQwggHSMD0GCSqGSIb3DQEBCjAwoA0w\n" - "CwYJYIZIAWUDBAIBoRowGAYJKoZIhvcNAQEIMAsGCWCGSAFlAwQCAaIDAgEgA4IB\n" - "jwAwggGKAoIBgQDswF+JIWGcyu+JfjTcM8UDRKaxOuLVY0SODV1uaXPB5ZW9nEX/\n" - "FFYIG+ldSKCyz5JF5ThrdvwqO+GVByuvETJdM7N4i8fzGHU8WIsj/CABAV+SaDT/\n" - "xb+h1ar9dIehKelBmXQADVFX+xvu9OM5Ft3P/wyO9gWWrR7e/MU/SVzWzMT69+5Y\n" - "oE4QkrYYCuEBtlVHDo2mmNWGSQ5tUVIWARgXbqsmj4voWkutE/CiT0+g6GQilMAR\n" - "kROElIhO5NH+u3/Lt2wRQO5tEP1JmSoqvrMOmF16txze8qMzvKg1Eafijv9DR4Nc\n" - "Cc6s8+g+CZbyODSdAybiyKsC7JCIrQjsnAjgPKKBLuZ1NTmu5liuXO05XsdcBoKD\n" - "bKNAQdJCz4uxfqTr4CGFgHQk48Nhmq01EGmpwAeA/BOCB5qsWzqURtMX8EVB1Zdo\n" - "3LD5Vwz18mm+ZdeLPlYy3L/FBpVPDbYoZlFgINUNCQvGgvzqGJAQrKR4w8X/Y6HH\n" - "9R8sv+U8kNtQI90CAwEAAaNrMGkwDAYDVR0TAQH/BAIwADAUBgNVHREEDTALggls\n" - "b2NhbGhvc3QwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYDVR0PAQH/BAUDAweAADAd\n" - "BgNVHQ4EFgQU1TmyUrkZZn4yMf4asV5OKq8bZ1gwPQYJKoZIhvcNAQEKMDCgDTAL\n" - "BglghkgBZQMEAgGhGjAYBgkqhkiG9w0BAQgwCwYJYIZIAWUDBAIBogMCASADggGB\n" - "AGxMPB+Z6pgmWNRw5NjIJgnvJfdMWmQib0II5kdU9I1UybrVRUGpI6tFjIB/pRWU\n" - "SiD8wTZpxfTHkRHUn+Wyhh14XOg2Pdad5Ek2XU/QblL2k4kh1sHdOcCRFbDzP5k8\n" - "LKIzFcndgnKTRun5368H+NLcXRx/KAi7s9zi4swp9dPxRvNvp8HjQyVhdFi5pK6n\n" - "pN1Sw/QD22CE1fRVJ3OYxq4sqCEZANhRv6h/M3AcetGt4LR8ErwuzP1fdtuXeumw\n" - "T0deQ2hhSYZmbkk/S+qHA8as6J224ry7Zr5bhB9hr52yum9yC9SjFy0XEV/895jJ\n" - "0MDIM33DmPUdnn90Btt+Oq+bgZqTIolifSmcs0sPH10SuxDOnXwkbR44Wu9NbCzx\n" - "h3VzhlxAdgcnOYSmJnXKWXog4N1BPFrB4rFqXWFF0Avqs4euK81W4IQ4Sk7fYT7C\n" - "tyrDILPqBhN80Q9Me70y7KRsek6yFn4Jd0Lok6vetaeWtSW0929bhU49b1hkdSzt\n" - "kw==\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIErTCCAuWgAwIBAgIIWTZrqjOeCfIwPQYJKoZIhvcNAQEKMDCgDTALBglghkgB\n" + "ZQMEAgGhGjAYBgkqhkiG9w0BAQgwCwYJYIZIAWUDBAIBogMCASAwFzEVMBMGA1UE\n" + "AxMMcnNhLXBzcyBjZXJ0MCAXDTE3MDYwNjA4NDUzMVoYDzk5OTkxMjMxMjM1OTU5\n" + "WjAXMRUwEwYDVQQDEwxyc2EtcHNzIGNlcnQwggHSMD0GCSqGSIb3DQEBCjAwoA0w\n" + "CwYJYIZIAWUDBAIBoRowGAYJKoZIhvcNAQEIMAsGCWCGSAFlAwQCAaIDAgEgA4IB\n" + "jwAwggGKAoIBgQDswF+JIWGcyu+JfjTcM8UDRKaxOuLVY0SODV1uaXPB5ZW9nEX/\n" + "FFYIG+ldSKCyz5JF5ThrdvwqO+GVByuvETJdM7N4i8fzGHU8WIsj/CABAV+SaDT/\n" + "xb+h1ar9dIehKelBmXQADVFX+xvu9OM5Ft3P/wyO9gWWrR7e/MU/SVzWzMT69+5Y\n" + "oE4QkrYYCuEBtlVHDo2mmNWGSQ5tUVIWARgXbqsmj4voWkutE/CiT0+g6GQilMAR\n" + "kROElIhO5NH+u3/Lt2wRQO5tEP1JmSoqvrMOmF16txze8qMzvKg1Eafijv9DR4Nc\n" + "Cc6s8+g+CZbyODSdAybiyKsC7JCIrQjsnAjgPKKBLuZ1NTmu5liuXO05XsdcBoKD\n" + "bKNAQdJCz4uxfqTr4CGFgHQk48Nhmq01EGmpwAeA/BOCB5qsWzqURtMX8EVB1Zdo\n" + "3LD5Vwz18mm+ZdeLPlYy3L/FBpVPDbYoZlFgINUNCQvGgvzqGJAQrKR4w8X/Y6HH\n" + "9R8sv+U8kNtQI90CAwEAAaNrMGkwDAYDVR0TAQH/BAIwADAUBgNVHREEDTALggls\n" + "b2NhbGhvc3QwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYDVR0PAQH/BAUDAweAADAd\n" + "BgNVHQ4EFgQU1TmyUrkZZn4yMf4asV5OKq8bZ1gwPQYJKoZIhvcNAQEKMDCgDTAL\n" + "BglghkgBZQMEAgGhGjAYBgkqhkiG9w0BAQgwCwYJYIZIAWUDBAIBogMCASADggGB\n" + "AGxMPB+Z6pgmWNRw5NjIJgnvJfdMWmQib0II5kdU9I1UybrVRUGpI6tFjIB/pRWU\n" + "SiD8wTZpxfTHkRHUn+Wyhh14XOg2Pdad5Ek2XU/QblL2k4kh1sHdOcCRFbDzP5k8\n" + "LKIzFcndgnKTRun5368H+NLcXRx/KAi7s9zi4swp9dPxRvNvp8HjQyVhdFi5pK6n\n" + "pN1Sw/QD22CE1fRVJ3OYxq4sqCEZANhRv6h/M3AcetGt4LR8ErwuzP1fdtuXeumw\n" + "T0deQ2hhSYZmbkk/S+qHA8as6J224ry7Zr5bhB9hr52yum9yC9SjFy0XEV/895jJ\n" + "0MDIM33DmPUdnn90Btt+Oq+bgZqTIolifSmcs0sPH10SuxDOnXwkbR44Wu9NbCzx\n" + "h3VzhlxAdgcnOYSmJnXKWXog4N1BPFrB4rFqXWFF0Avqs4euK81W4IQ4Sk7fYT7C\n" + "tyrDILPqBhN80Q9Me70y7KRsek6yFn4Jd0Lok6vetaeWtSW0929bhU49b1hkdSzt\n" + "kw==\n" + "-----END CERTIFICATE-----\n"; static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIEOjCCAqKgAwIBAgIMU+I+KjQZpH+ZdjOlMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTAwIhgPMjAxNDA4MDYxNDM5MzhaGA85OTk5MTIzMTIzNTk1OVow\n" - "EzERMA8GA1UEAxMIc2VydmVyLTEwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGK\n" - "AoIBgQDswF+JIWGcyu+JfjTcM8UDRKaxOuLVY0SODV1uaXPB5ZW9nEX/FFYIG+ld\n" - "SKCyz5JF5ThrdvwqO+GVByuvETJdM7N4i8fzGHU8WIsj/CABAV+SaDT/xb+h1ar9\n" - "dIehKelBmXQADVFX+xvu9OM5Ft3P/wyO9gWWrR7e/MU/SVzWzMT69+5YoE4QkrYY\n" - "CuEBtlVHDo2mmNWGSQ5tUVIWARgXbqsmj4voWkutE/CiT0+g6GQilMARkROElIhO\n" - "5NH+u3/Lt2wRQO5tEP1JmSoqvrMOmF16txze8qMzvKg1Eafijv9DR4NcCc6s8+g+\n" - "CZbyODSdAybiyKsC7JCIrQjsnAjgPKKBLuZ1NTmu5liuXO05XsdcBoKDbKNAQdJC\n" - "z4uxfqTr4CGFgHQk48Nhmq01EGmpwAeA/BOCB5qsWzqURtMX8EVB1Zdo3LD5Vwz1\n" - "8mm+ZdeLPlYy3L/FBpVPDbYoZlFgINUNCQvGgvzqGJAQrKR4w8X/Y6HH9R8sv+U8\n" - "kNtQI90CAwEAAaOBjTCBijAMBgNVHRMBAf8EAjAAMBQGA1UdEQQNMAuCCWxvY2Fs\n" - "aG9zdDATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDB6AAMB0GA1Ud\n" - "DgQWBBTVObJSuRlmfjIx/hqxXk4qrxtnWDAfBgNVHSMEGDAWgBQ5vvRl/1WhIqpf\n" - "ZFiHs89kf3N3OTANBgkqhkiG9w0BAQsFAAOCAYEAC0KQNPASZ7adSMMM3qx0Ny8Z\n" - "AkcVAtohkjlwCwhoutcavZVyTjdpGydte6nfyTWOjs6ATBV2GhpyH+nvRJaYQFAh\n" - "7uksjJxptSlaQuJqUI12urzx6BX0kenwh7nNwnLOngSBRqYwQqQdbnZf0w1DAdac\n" - "vSa/Y1PrDpcXyPHpk7pDrtI9Mj24rIbvjeWM1RfgkNQYLPkZBDQqKkc5UrCA5y3v\n" - "3motWyTdfvVYL7KWcEmGeKsWaTDkahd8Xhx29WvE4P740AOvXm/nkrE+PkHODbXi\n" - "iD0a4cO2FPjjVt5ji+iaJTaXBEd9GHklKE6ZTZhj5az9ygQj1m6HZ2i3shWtG2ks\n" - "AjgnGzsA8Wm/5X6YyR8UND41rS/lAc9yx8Az9Hqzfg8aOyvixYVPNKoTEPAMmypA\n" - "oQT6g4b989lZFcjrwnLCrwz83jPD683p5IenCnRI5yhuFoQauy2tgHIbC1FRgs0C\n" - "dyiOeDh80u1fekMVjRztIAwavuwxI6XgRzPSHhWR\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIEOjCCAqKgAwIBAgIMU+I+KjQZpH+ZdjOlMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTAwIhgPMjAxNDA4MDYxNDM5MzhaGA85OTk5MTIzMTIzNTk1OVow\n" + "EzERMA8GA1UEAxMIc2VydmVyLTEwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGK\n" + "AoIBgQDswF+JIWGcyu+JfjTcM8UDRKaxOuLVY0SODV1uaXPB5ZW9nEX/FFYIG+ld\n" + "SKCyz5JF5ThrdvwqO+GVByuvETJdM7N4i8fzGHU8WIsj/CABAV+SaDT/xb+h1ar9\n" + "dIehKelBmXQADVFX+xvu9OM5Ft3P/wyO9gWWrR7e/MU/SVzWzMT69+5YoE4QkrYY\n" + "CuEBtlVHDo2mmNWGSQ5tUVIWARgXbqsmj4voWkutE/CiT0+g6GQilMARkROElIhO\n" + "5NH+u3/Lt2wRQO5tEP1JmSoqvrMOmF16txze8qMzvKg1Eafijv9DR4NcCc6s8+g+\n" + "CZbyODSdAybiyKsC7JCIrQjsnAjgPKKBLuZ1NTmu5liuXO05XsdcBoKDbKNAQdJC\n" + "z4uxfqTr4CGFgHQk48Nhmq01EGmpwAeA/BOCB5qsWzqURtMX8EVB1Zdo3LD5Vwz1\n" + "8mm+ZdeLPlYy3L/FBpVPDbYoZlFgINUNCQvGgvzqGJAQrKR4w8X/Y6HH9R8sv+U8\n" + "kNtQI90CAwEAAaOBjTCBijAMBgNVHRMBAf8EAjAAMBQGA1UdEQQNMAuCCWxvY2Fs\n" + "aG9zdDATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDB6AAMB0GA1Ud\n" + "DgQWBBTVObJSuRlmfjIx/hqxXk4qrxtnWDAfBgNVHSMEGDAWgBQ5vvRl/1WhIqpf\n" + "ZFiHs89kf3N3OTANBgkqhkiG9w0BAQsFAAOCAYEAC0KQNPASZ7adSMMM3qx0Ny8Z\n" + "AkcVAtohkjlwCwhoutcavZVyTjdpGydte6nfyTWOjs6ATBV2GhpyH+nvRJaYQFAh\n" + "7uksjJxptSlaQuJqUI12urzx6BX0kenwh7nNwnLOngSBRqYwQqQdbnZf0w1DAdac\n" + "vSa/Y1PrDpcXyPHpk7pDrtI9Mj24rIbvjeWM1RfgkNQYLPkZBDQqKkc5UrCA5y3v\n" + "3motWyTdfvVYL7KWcEmGeKsWaTDkahd8Xhx29WvE4P740AOvXm/nkrE+PkHODbXi\n" + "iD0a4cO2FPjjVt5ji+iaJTaXBEd9GHklKE6ZTZhj5az9ygQj1m6HZ2i3shWtG2ks\n" + "AjgnGzsA8Wm/5X6YyR8UND41rS/lAc9yx8Az9Hqzfg8aOyvixYVPNKoTEPAMmypA\n" + "oQT6g4b989lZFcjrwnLCrwz83jPD683p5IenCnRI5yhuFoQauy2tgHIbC1FRgs0C\n" + "dyiOeDh80u1fekMVjRztIAwavuwxI6XgRzPSHhWR\n" + "-----END CERTIFICATE-----\n"; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIG5gIBAAKCAYEA7MBfiSFhnMrviX403DPFA0SmsTri1WNEjg1dbmlzweWVvZxF\n" - "/xRWCBvpXUigss+SReU4a3b8KjvhlQcrrxEyXTOzeIvH8xh1PFiLI/wgAQFfkmg0\n" - "/8W/odWq/XSHoSnpQZl0AA1RV/sb7vTjORbdz/8MjvYFlq0e3vzFP0lc1szE+vfu\n" - "WKBOEJK2GArhAbZVRw6NppjVhkkObVFSFgEYF26rJo+L6FpLrRPwok9PoOhkIpTA\n" - "EZEThJSITuTR/rt/y7dsEUDubRD9SZkqKr6zDphdercc3vKjM7yoNRGn4o7/Q0eD\n" - "XAnOrPPoPgmW8jg0nQMm4sirAuyQiK0I7JwI4DyigS7mdTU5ruZYrlztOV7HXAaC\n" - "g2yjQEHSQs+LsX6k6+AhhYB0JOPDYZqtNRBpqcAHgPwTggearFs6lEbTF/BFQdWX\n" - "aNyw+VcM9fJpvmXXiz5WMty/xQaVTw22KGZRYCDVDQkLxoL86hiQEKykeMPF/2Oh\n" - "x/UfLL/lPJDbUCPdAgMBAAECggGBAOZzh0sjbDHENBBhAjFKTz6UJ7IigMR3oTao\n" - "+cZM7XnS8cQkhtn5wJiaGrlLxejoNhjFO/sXUfQGX9nBphr+IUkp10vCvHn717pK\n" - "8f2wILL51D7eIqDJq3RrWMroEFGnSz8okQqv6/s5GgKq6zcZ9AXP3TiXb+8wSvmB\n" - "kLq+vZj0r9UfWyl3uSVWuduDU2xoQHAvUWDWKhpRqLJuUvnKTNoaRoz9c5FTu5AY\n" - "9cX4b6lQLJCgvKkcz6PhNSGeiG5tsONi89sNuF3MYO+a4JBpD3l/lj1inHDEhlpd\n" - "xHdbXNv4vw2rJECt5O8Ff3aT3g3voenP0xbfrQ5m6dIrEscU1KMkYIg+wCVV+oNj\n" - "4OhmBvdN/mXKEFpxKNk6C78feA1+ZygNWeBhgY0hiA98oI77H9kN8iuKaOaxYbEG\n" - "qCwHrPbL+fVcLKouN6i3E3kpDIp5HMx4bYWyzotXXrpAWj7D/5saBCdErH0ab4Sb\n" - "2I3tZ49qDIfcKl0bdpTiidbGKasL/QKBwQD+Qlo4m2aZLYSfBxygqiLv42vpeZAB\n" - "4//MeAFnxFcdF+JL6Lo3gfzP3bJ8EEq2b+psmk5yofiNDVaHTb4iOS3DX/JCmnmj\n" - "+zAEfMCVLljYJlACVnyPb+8h+T0UEsQWMiFWZxsv+AbHs/cnpVtdnvO0Hg8VRrHu\n" - "dpKOauuhPkpFxtbbkxJWIapvYr/jqD8m+fDSMWJuxMGKmgKiefy+pS2N7hrbNZF4\n" - "OD/TdCim5qDVuSwj/g2Y7WOTf3UJ5Jo4CmMCgcEA7l9VnhEb3UrAHhGe7bAgZ4Wm\n" - "1ncFVOWc9X/tju3QUpNEow6I0skav2i3A/ZA36Iy/w4Sf8RAQC+77NzBEIKyLjK1\n" - "PfwXPoH2hrtD3WSQlAFG4u8DsRWt4GZY3OAzmqWenhQcUoJ1zgTyRwOFfX1R38NF\n" - "8QeHck5KUUNoi56Vc7BCo/ypacz33RqzVEj6z5ScogTqC8nNn1a+/rfpTKzotJqc\n" - "PJHMXTduAB6x4QHerpzGJQYucAJSD1VJbFwEWUy/AoHBAIvKb1AwIHiXThMhFdw/\n" - "rnW1097JtyNS95CzahJjIIIeX4zcp4VdMmIWwcr0Kh+j6H9NV1QvOThT3P8G/0JR\n" - "rZd9aPS1eaturzfIXxmmIbK1XcfrRRCXuiIzpiEjMCwD49BdX9U/yHqDt59Uiqcu\n" - "fU7KOAC6nZk+F9W1c1dzp+I1MGwIsEwqtkoHQPkpx47mXEE0ZaoBA2fwxQIPj6ZB\n" - "qooeHyXmjdRLGMxpUPByXHslE9+2DkPGQLkXmoGV7jRhgQKBwQDL+LnbgwpT5pXU\n" - "ZQGYpABmdQAZPklKpxwTGr+dcTO0pR2zZUmBDOKdbS5F7p7+fd2jUFhWCglsoyvs\n" - "d82goiVz0KI0AxWkwDLCgVWGCXqJmzocD6gaDNH3VbyubA7cQuIipFTD6ayCeMsU\n" - "JxhAFE9N6NtdbzLghcukE8lOx4ldMDMl/Zq91M033pQbCEPOAn2xSgE3yxvvP5w5\n" - "fAffO4n4mOAeGChGj5rJ8XoGbsIsqiwHHG36HJI5WqJ0XZy/CSMCgcEA4M05digH\n" - "VZE5T/eKLFNEnUB1W9tWAzj+BAqmR1rlwQt5O3fC8F7XqkSowhcRTDHUdoOkdVz/\n" - "jMgRqGs0O+cl8tLImD6d1mFR6Yxu0PHwXUwQVklW8txGGOKv0+2MFMlkFjuwCbNN\n" - "XZ2rmZq/JywCJmVAH0wToXZyEqhilLZ9TLs6m2d2+2hlxJM6XmXjc7A/fC089bSX\n" - "W+lG+lHYAA3tjkBWvb7YAPriahcFrRBvQb5zx4L4NXMHlXMUnA/KlMW2\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIIG5gIBAAKCAYEA7MBfiSFhnMrviX403DPFA0SmsTri1WNEjg1dbmlzweWVvZxF\n" + "/xRWCBvpXUigss+SReU4a3b8KjvhlQcrrxEyXTOzeIvH8xh1PFiLI/wgAQFfkmg0\n" + "/8W/odWq/XSHoSnpQZl0AA1RV/sb7vTjORbdz/8MjvYFlq0e3vzFP0lc1szE+vfu\n" + "WKBOEJK2GArhAbZVRw6NppjVhkkObVFSFgEYF26rJo+L6FpLrRPwok9PoOhkIpTA\n" + "EZEThJSITuTR/rt/y7dsEUDubRD9SZkqKr6zDphdercc3vKjM7yoNRGn4o7/Q0eD\n" + "XAnOrPPoPgmW8jg0nQMm4sirAuyQiK0I7JwI4DyigS7mdTU5ruZYrlztOV7HXAaC\n" + "g2yjQEHSQs+LsX6k6+AhhYB0JOPDYZqtNRBpqcAHgPwTggearFs6lEbTF/BFQdWX\n" + "aNyw+VcM9fJpvmXXiz5WMty/xQaVTw22KGZRYCDVDQkLxoL86hiQEKykeMPF/2Oh\n" + "x/UfLL/lPJDbUCPdAgMBAAECggGBAOZzh0sjbDHENBBhAjFKTz6UJ7IigMR3oTao\n" + "+cZM7XnS8cQkhtn5wJiaGrlLxejoNhjFO/sXUfQGX9nBphr+IUkp10vCvHn717pK\n" + "8f2wILL51D7eIqDJq3RrWMroEFGnSz8okQqv6/s5GgKq6zcZ9AXP3TiXb+8wSvmB\n" + "kLq+vZj0r9UfWyl3uSVWuduDU2xoQHAvUWDWKhpRqLJuUvnKTNoaRoz9c5FTu5AY\n" + "9cX4b6lQLJCgvKkcz6PhNSGeiG5tsONi89sNuF3MYO+a4JBpD3l/lj1inHDEhlpd\n" + "xHdbXNv4vw2rJECt5O8Ff3aT3g3voenP0xbfrQ5m6dIrEscU1KMkYIg+wCVV+oNj\n" + "4OhmBvdN/mXKEFpxKNk6C78feA1+ZygNWeBhgY0hiA98oI77H9kN8iuKaOaxYbEG\n" + "qCwHrPbL+fVcLKouN6i3E3kpDIp5HMx4bYWyzotXXrpAWj7D/5saBCdErH0ab4Sb\n" + "2I3tZ49qDIfcKl0bdpTiidbGKasL/QKBwQD+Qlo4m2aZLYSfBxygqiLv42vpeZAB\n" + "4//MeAFnxFcdF+JL6Lo3gfzP3bJ8EEq2b+psmk5yofiNDVaHTb4iOS3DX/JCmnmj\n" + "+zAEfMCVLljYJlACVnyPb+8h+T0UEsQWMiFWZxsv+AbHs/cnpVtdnvO0Hg8VRrHu\n" + "dpKOauuhPkpFxtbbkxJWIapvYr/jqD8m+fDSMWJuxMGKmgKiefy+pS2N7hrbNZF4\n" + "OD/TdCim5qDVuSwj/g2Y7WOTf3UJ5Jo4CmMCgcEA7l9VnhEb3UrAHhGe7bAgZ4Wm\n" + "1ncFVOWc9X/tju3QUpNEow6I0skav2i3A/ZA36Iy/w4Sf8RAQC+77NzBEIKyLjK1\n" + "PfwXPoH2hrtD3WSQlAFG4u8DsRWt4GZY3OAzmqWenhQcUoJ1zgTyRwOFfX1R38NF\n" + "8QeHck5KUUNoi56Vc7BCo/ypacz33RqzVEj6z5ScogTqC8nNn1a+/rfpTKzotJqc\n" + "PJHMXTduAB6x4QHerpzGJQYucAJSD1VJbFwEWUy/AoHBAIvKb1AwIHiXThMhFdw/\n" + "rnW1097JtyNS95CzahJjIIIeX4zcp4VdMmIWwcr0Kh+j6H9NV1QvOThT3P8G/0JR\n" + "rZd9aPS1eaturzfIXxmmIbK1XcfrRRCXuiIzpiEjMCwD49BdX9U/yHqDt59Uiqcu\n" + "fU7KOAC6nZk+F9W1c1dzp+I1MGwIsEwqtkoHQPkpx47mXEE0ZaoBA2fwxQIPj6ZB\n" + "qooeHyXmjdRLGMxpUPByXHslE9+2DkPGQLkXmoGV7jRhgQKBwQDL+LnbgwpT5pXU\n" + "ZQGYpABmdQAZPklKpxwTGr+dcTO0pR2zZUmBDOKdbS5F7p7+fd2jUFhWCglsoyvs\n" + "d82goiVz0KI0AxWkwDLCgVWGCXqJmzocD6gaDNH3VbyubA7cQuIipFTD6ayCeMsU\n" + "JxhAFE9N6NtdbzLghcukE8lOx4ldMDMl/Zq91M033pQbCEPOAn2xSgE3yxvvP5w5\n" + "fAffO4n4mOAeGChGj5rJ8XoGbsIsqiwHHG36HJI5WqJ0XZy/CSMCgcEA4M05digH\n" + "VZE5T/eKLFNEnUB1W9tWAzj+BAqmR1rlwQt5O3fC8F7XqkSowhcRTDHUdoOkdVz/\n" + "jMgRqGs0O+cl8tLImD6d1mFR6Yxu0PHwXUwQVklW8txGGOKv0+2MFMlkFjuwCbNN\n" + "XZ2rmZq/JywCJmVAH0wToXZyEqhilLZ9TLs6m2d2+2hlxJM6XmXjc7A/fC089bSX\n" + "W+lG+lHYAA3tjkBWvb7YAPriahcFrRBvQb5zx4L4NXMHlXMUnA/KlMW2\n" + "-----END RSA PRIVATE KEY-----\n"; static unsigned char server_ecc_key_pem[] = - "-----BEGIN EC PRIVATE KEY-----\n" - "MHgCAQEEIQDrAKCAbdMKPngHu4zdSQ2Pghob8PhyrbUpWAR8V07E+qAKBggqhkjO\n" - "PQMBB6FEA0IABDfo4YLPkO4pBpQamtObIV3J6l92vI+RkyNtaQ9gtSWDj20w/aBC\n" - "WlbcTsRZ2itEpJ6GdLsGOW4RRfmiubzC9JU=\n" "-----END EC PRIVATE KEY-----\n"; + "-----BEGIN EC PRIVATE KEY-----\n" + "MHgCAQEEIQDrAKCAbdMKPngHu4zdSQ2Pghob8PhyrbUpWAR8V07E+qAKBggqhkjO\n" + "PQMBB6FEA0IABDfo4YLPkO4pBpQamtObIV3J6l92vI+RkyNtaQ9gtSWDj20w/aBC\n" + "WlbcTsRZ2itEpJ6GdLsGOW4RRfmiubzC9JU=\n" + "-----END EC PRIVATE KEY-----\n"; static unsigned char server_ecc_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIBrjCCAVSgAwIBAgIMU+I+axGZmBD/YL96MAoGCCqGSM49BAMCMA8xDTALBgNV\n" - "BAMTBENBLTAwIhgPMjAxNDA4MDYxNDQwNDNaGA85OTk5MTIzMTIzNTk1OVowEzER\n" - "MA8GA1UEAxMIc2VydmVyLTEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ36OGC\n" - "z5DuKQaUGprTmyFdyepfdryPkZMjbWkPYLUlg49tMP2gQlpW3E7EWdorRKSehnS7\n" - "BjluEUX5orm8wvSVo4GNMIGKMAwGA1UdEwEB/wQCMAAwFAYDVR0RBA0wC4IJbG9j\n" - "YWxob3N0MBMGA1UdJQQMMAoGCCsGAQUFBwMBMA8GA1UdDwEB/wQFAwMHgAAwHQYD\n" - "VR0OBBYEFOuSntH2To0gJLH79Ow4wNpBuhmEMB8GA1UdIwQYMBaAFMZ1miRvZAYr\n" - "nBEymOtPjbfTrnblMAoGCCqGSM49BAMCA0gAMEUCIQCMP3aBcCxSPbCUhihOsUmH\n" - "G04AgT1PKw8z4LgZ4VGTVAIgYw3IFwS5sSYEAHRZAH8eaTXTz7XFmWmnkve9EBkN\n" - "cBE=\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIBrjCCAVSgAwIBAgIMU+I+axGZmBD/YL96MAoGCCqGSM49BAMCMA8xDTALBgNV\n" + "BAMTBENBLTAwIhgPMjAxNDA4MDYxNDQwNDNaGA85OTk5MTIzMTIzNTk1OVowEzER\n" + "MA8GA1UEAxMIc2VydmVyLTEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ36OGC\n" + "z5DuKQaUGprTmyFdyepfdryPkZMjbWkPYLUlg49tMP2gQlpW3E7EWdorRKSehnS7\n" + "BjluEUX5orm8wvSVo4GNMIGKMAwGA1UdEwEB/wQCMAAwFAYDVR0RBA0wC4IJbG9j\n" + "YWxob3N0MBMGA1UdJQQMMAoGCCsGAQUFBwMBMA8GA1UdDwEB/wQFAwMHgAAwHQYD\n" + "VR0OBBYEFOuSntH2To0gJLH79Ow4wNpBuhmEMB8GA1UdIwQYMBaAFMZ1miRvZAYr\n" + "nBEymOtPjbfTrnblMAoGCCqGSM49BAMCA0gAMEUCIQCMP3aBcCxSPbCUhihOsUmH\n" + "G04AgT1PKw8z4LgZ4VGTVAIgYw3IFwS5sSYEAHRZAH8eaTXTz7XFmWmnkve9EBkN\n" + "cBE=\n" + "-----END CERTIFICATE-----\n"; static unsigned char server_ed25519_key_pem[] = - "-----BEGIN PRIVATE KEY-----\n" - "MC4CAQAwBQYDK2VwBCIEIOXDJXOU6J6XdXx4WfcyPILPYJDH5bRfm9em+DYMkllw\n" - "-----END PRIVATE KEY-----\n"; + "-----BEGIN PRIVATE KEY-----\n" + "MC4CAQAwBQYDK2VwBCIEIOXDJXOU6J6XdXx4WfcyPILPYJDH5bRfm9em+DYMkllw\n" + "-----END PRIVATE KEY-----\n"; static unsigned char server_ed25519_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIBwTCCAWagAwIBAgIIWTZasQWGNVEwCgYIKoZIzj0EAwIwfTELMAkGA1UEBhMC\n" - "QkUxDzANBgNVBAoTBkdudVRMUzElMCMGA1UECxMcR251VExTIGNlcnRpZmljYXRl\n" - "IGF1dGhvcml0eTEPMA0GA1UECBMGTGV1dmVuMSUwIwYDVQQDExxHbnVUTFMgY2Vy\n" - "dGlmaWNhdGUgYXV0aG9yaXR5MCAXDTE3MDYwNjA3MzMwNVoYDzk5OTkxMjMxMjM1\n" - "OTU5WjAZMRcwFQYDVQQDEw5FZDI1NTE5IHNpZ25lcjAqMAUGAytlcAMhAPMF++lz\n" - "LIzfyCX0v0B7LIabZWZ/dePW9HexIbW3tYmHo2EwXzAMBgNVHRMBAf8EAjAAMA8G\n" - "A1UdDwEB/wQFAwMHgAAwHQYDVR0OBBYEFONSSnOdGLzpv3xNcci8ZiKKqzyqMB8G\n" - "A1UdIwQYMBaAFPC0gf6YEr+1KLlkQAPLzB9mTigDMAoGCCqGSM49BAMCA0kAMEYC\n" - "IQDHGfSgM44DVZfrP5CF8LSNlFN55ti3Z69YJ0SK8Fy9eQIhAN2UKeX3l8A9Ckcm\n" - "7barRoh+qx7ZVYpe+5w3JYuxy16w\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIBwTCCAWagAwIBAgIIWTZasQWGNVEwCgYIKoZIzj0EAwIwfTELMAkGA1UEBhMC\n" + "QkUxDzANBgNVBAoTBkdudVRMUzElMCMGA1UECxMcR251VExTIGNlcnRpZmljYXRl\n" + "IGF1dGhvcml0eTEPMA0GA1UECBMGTGV1dmVuMSUwIwYDVQQDExxHbnVUTFMgY2Vy\n" + "dGlmaWNhdGUgYXV0aG9yaXR5MCAXDTE3MDYwNjA3MzMwNVoYDzk5OTkxMjMxMjM1\n" + "OTU5WjAZMRcwFQYDVQQDEw5FZDI1NTE5IHNpZ25lcjAqMAUGAytlcAMhAPMF++lz\n" + "LIzfyCX0v0B7LIabZWZ/dePW9HexIbW3tYmHo2EwXzAMBgNVHRMBAf8EAjAAMA8G\n" + "A1UdDwEB/wQFAwMHgAAwHQYDVR0OBBYEFONSSnOdGLzpv3xNcci8ZiKKqzyqMB8G\n" + "A1UdIwQYMBaAFPC0gf6YEr+1KLlkQAPLzB9mTigDMAoGCCqGSM49BAMCA0kAMEYC\n" + "IQDHGfSgM44DVZfrP5CF8LSNlFN55ti3Z69YJ0SK8Fy9eQIhAN2UKeX3l8A9Ckcm\n" + "7barRoh+qx7ZVYpe+5w3JYuxy16w\n" + "-----END CERTIFICATE-----\n"; #ifdef ENABLE_GOST static unsigned char server_gost12_256_key_pem[] = - "-----BEGIN PRIVATE KEY-----\n" - "MEgCAQAwHwYIKoUDBwEBAQEwEwYHKoUDAgIkAAYIKoUDBwEBAgIEIgQg0+JttJEV\n" - "Ud+XBzX9q13ByKK+j2b+mEmNIo1yB0wGleo=\n" "-----END PRIVATE KEY-----\n"; + "-----BEGIN PRIVATE KEY-----\n" + "MEgCAQAwHwYIKoUDBwEBAQEwEwYHKoUDAgIkAAYIKoUDBwEBAgIEIgQg0+JttJEV\n" + "Ud+XBzX9q13ByKK+j2b+mEmNIo1yB0wGleo=\n" + "-----END PRIVATE KEY-----\n"; static unsigned char server_gost12_256_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIC8DCCAVigAwIBAgIIWcZKgxkCMvcwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" - "AxMEQ0EtMzAgFw0xOTEwMDgxMDQ4MTZaGA85OTk5MTIzMTIzNTk1OVowDTELMAkG\n" - "A1UEAxMCR1IwZjAfBggqhQMHAQEBATATBgcqhQMCAiQABggqhQMHAQECAgNDAARA\n" - "J9sMEEx0JW9QsT5bDqyc0TNcjVg9ZSdp4GkMtShM+OOgyBGrWK3zLP5IzHYSXja8\n" - "373QrJOUvdX7T7TUk5yU5aOBjTCBijAMBgNVHRMBAf8EAjAAMBQGA1UdEQQNMAuC\n" - "CWxvY2FsaG9zdDATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDB4AA\n" - "MB0GA1UdDgQWBBQYSEtdwsYrtnOq6Ya3nt8DgFPCQjAfBgNVHSMEGDAWgBT5qIYZ\n" - "Y7akFBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAR0xtx7MWEP1KyIzM\n" - "4lXKdTyU4Nve5RcgqF82yR/0odqT5MPoaZDvLuRWEcQryztZD3kmRUmPmn1ujSfc\n" - "BbPfRnSutDXcf6imq0/U1/TV/BF3vpS1plltzetvibf8MYetHVFQHUBJDZJHh9h7\n" - "PGwA9SnmnGKFIxFdV6bVOLkPR54Gob9zN3E17KslL19lNtht1pxk9pshwTn35oRY\n" - "uOdxof9F4XjpI/4WbC8kp15QeG8XyZd5JWSl+niNOqYK31+ilQdVBr4RiZSDIcAg\n" - "twS5yV9Ap+R8rM8TLbeT2io4rhdUgmDllUf49zV3t6AbVvbsQfkqXmHXW8uW2WBu\n" - "A8FiXEbIIOb+QIW0ZGwk3BVQ7wdiw1M5w6kYtz5kBtNPxBmc+eu1+e6EAfYbFNr3\n" - "pkxtMk3veYWHb5s3dHZ4/t2Rn85hWqh03CWwCkKTN3qmEs4/XpybbXE/UE49e7u1\n" - "FkpM1bT/0gUNsNt5h3pyUzQZdiB0XbdGGFta3tB3+inIO45h\n" - "-----END CERTIFICATE-----\n"; - -static const gnutls_datum_t server_gost12_256_key = { server_gost12_256_key_pem, - sizeof(server_gost12_256_key_pem) - 1 + "-----BEGIN CERTIFICATE-----\n" + "MIIC8DCCAVigAwIBAgIIWcZKgxkCMvcwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" + "AxMEQ0EtMzAgFw0xOTEwMDgxMDQ4MTZaGA85OTk5MTIzMTIzNTk1OVowDTELMAkG\n" + "A1UEAxMCR1IwZjAfBggqhQMHAQEBATATBgcqhQMCAiQABggqhQMHAQECAgNDAARA\n" + "J9sMEEx0JW9QsT5bDqyc0TNcjVg9ZSdp4GkMtShM+OOgyBGrWK3zLP5IzHYSXja8\n" + "373QrJOUvdX7T7TUk5yU5aOBjTCBijAMBgNVHRMBAf8EAjAAMBQGA1UdEQQNMAuC\n" + "CWxvY2FsaG9zdDATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDB4AA\n" + "MB0GA1UdDgQWBBQYSEtdwsYrtnOq6Ya3nt8DgFPCQjAfBgNVHSMEGDAWgBT5qIYZ\n" + "Y7akFBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAR0xtx7MWEP1KyIzM\n" + "4lXKdTyU4Nve5RcgqF82yR/0odqT5MPoaZDvLuRWEcQryztZD3kmRUmPmn1ujSfc\n" + "BbPfRnSutDXcf6imq0/U1/TV/BF3vpS1plltzetvibf8MYetHVFQHUBJDZJHh9h7\n" + "PGwA9SnmnGKFIxFdV6bVOLkPR54Gob9zN3E17KslL19lNtht1pxk9pshwTn35oRY\n" + "uOdxof9F4XjpI/4WbC8kp15QeG8XyZd5JWSl+niNOqYK31+ilQdVBr4RiZSDIcAg\n" + "twS5yV9Ap+R8rM8TLbeT2io4rhdUgmDllUf49zV3t6AbVvbsQfkqXmHXW8uW2WBu\n" + "A8FiXEbIIOb+QIW0ZGwk3BVQ7wdiw1M5w6kYtz5kBtNPxBmc+eu1+e6EAfYbFNr3\n" + "pkxtMk3veYWHb5s3dHZ4/t2Rn85hWqh03CWwCkKTN3qmEs4/XpybbXE/UE49e7u1\n" + "FkpM1bT/0gUNsNt5h3pyUzQZdiB0XbdGGFta3tB3+inIO45h\n" + "-----END CERTIFICATE-----\n"; + +static const gnutls_datum_t server_gost12_256_key = { + server_gost12_256_key_pem, sizeof(server_gost12_256_key_pem) - 1 }; -static const gnutls_datum_t server_gost12_256_cert = - { server_gost12_256_cert_pem, - sizeof(server_gost12_256_cert_pem) - 1 +static const gnutls_datum_t server_gost12_256_cert = { + server_gost12_256_cert_pem, sizeof(server_gost12_256_cert_pem) - 1 }; #endif -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; const gnutls_datum_t server_rsa_pss_cert = { server_rsa_pss_cert_pem, - sizeof(server_rsa_pss_cert_pem) -}; + sizeof(server_rsa_pss_cert_pem) }; -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; const gnutls_datum_t server_ecc_cert = { server_ecc_cert_pem, - sizeof(server_ecc_cert_pem) -}; + sizeof(server_ecc_cert_pem) }; const gnutls_datum_t server_ecc_key = { server_ecc_key_pem, - sizeof(server_ecc_key_pem) -}; + sizeof(server_ecc_key_pem) }; const gnutls_datum_t server_ed25519_cert = { server_ed25519_cert_pem, - sizeof(server_ed25519_cert_pem) -}; + sizeof(server_ed25519_cert_pem) }; const gnutls_datum_t server_ed25519_key = { server_ed25519_key_pem, - sizeof(server_ed25519_key_pem) -}; + sizeof(server_ed25519_key_pem) }; char buffer[64 * 1024]; @@ -314,7 +327,7 @@ static void test_ciphersuite(const char *cipher_prio, int size) gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, s_certcred); gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); - gnutls_transport_set_ptr(server, (gnutls_transport_ptr_t) server); + gnutls_transport_set_ptr(server, (gnutls_transport_ptr_t)server); reset_buffers(); /* Init client */ @@ -335,7 +348,7 @@ static void test_ciphersuite(const char *cipher_prio, int size) gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, c_certcred); gnutls_transport_set_push_function(client, client_push); gnutls_transport_set_pull_function(client, client_pull); - gnutls_transport_set_ptr(client, (gnutls_transport_ptr_t) client); + gnutls_transport_set_ptr(client, (gnutls_transport_ptr_t)client); HANDSHAKE(client, server); @@ -355,8 +368,7 @@ static void test_ciphersuite(const char *cipher_prio, int size) do { do { ret = gnutls_record_send(client, buffer, size); - } - while (ret == GNUTLS_E_AGAIN); + } while (ret == GNUTLS_E_AGAIN); if (ret < 0) { fprintf(stderr, "Failed sending to server\n"); @@ -365,8 +377,7 @@ static void test_ciphersuite(const char *cipher_prio, int size) do { ret = gnutls_record_recv_packet(server, &packet); - } - while (ret == GNUTLS_E_AGAIN); + } while (ret == GNUTLS_E_AGAIN); if (ret < 0) { fprintf(stderr, "Failed receiving from client: %s\n", @@ -376,8 +387,7 @@ static void test_ciphersuite(const char *cipher_prio, int size) st.size += size; gnutls_packet_deinit(packet); - } - while (benchmark_must_finish == 0); + } while (benchmark_must_finish == 0); stop_benchmark(&st, NULL, 1); @@ -393,8 +403,7 @@ static void test_ciphersuite(const char *cipher_prio, int size) #endif } -static -double calc_avg(uint64_t * diffs, unsigned int diffs_size) +static double calc_avg(uint64_t *diffs, unsigned int diffs_size) { double avg = 0; unsigned int i; @@ -407,8 +416,7 @@ double calc_avg(uint64_t * diffs, unsigned int diffs_size) return avg; } -static -double calc_svar(uint64_t * diffs, unsigned int diffs_size, double avg) +static double calc_svar(uint64_t *diffs, unsigned int diffs_size, double avg) { double sum = 0, d; unsigned int i; @@ -455,17 +463,15 @@ static void test_ciphersuite_kx(const char *cipher_prio, unsigned pk) ret = 0; if (pk == GNUTLS_PK_RSA_PSS) - ret = - gnutls_certificate_set_x509_key_mem(s_certcred, - &server_rsa_pss_cert, - &server_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem(s_certcred, + &server_rsa_pss_cert, + &server_key, + GNUTLS_X509_FMT_PEM); else if (pk == GNUTLS_PK_RSA) - ret = - gnutls_certificate_set_x509_key_mem(s_certcred, - &server_cert, - &server_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem(s_certcred, + &server_cert, + &server_key, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fprintf(stderr, "Error in %d: %s\n", __LINE__, gnutls_strerror(ret)); @@ -474,24 +480,20 @@ static void test_ciphersuite_kx(const char *cipher_prio, unsigned pk) ret = 0; if (pk == GNUTLS_PK_ECDSA) - ret = - gnutls_certificate_set_x509_key_mem(s_certcred, - &server_ecc_cert, - &server_ecc_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem(s_certcred, + &server_ecc_cert, + &server_ecc_key, + GNUTLS_X509_FMT_PEM); else if (pk == GNUTLS_PK_EDDSA_ED25519) - ret = - gnutls_certificate_set_x509_key_mem(s_certcred, - &server_ed25519_cert, - &server_ed25519_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem(s_certcred, + &server_ed25519_cert, + &server_ed25519_key, + GNUTLS_X509_FMT_PEM); #ifdef ENABLE_GOST else if (pk == GNUTLS_PK_GOST_12_256) - ret = - gnutls_certificate_set_x509_key_mem(s_certcred, - &server_gost12_256_cert, - &server_gost12_256_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + s_certcred, &server_gost12_256_cert, + &server_gost12_256_key, GNUTLS_X509_FMT_PEM); #endif if (ret < 0) { fprintf(stderr, "Error in %d: %s\n", __LINE__, @@ -514,7 +516,6 @@ static void test_ciphersuite_kx(const char *cipher_prio, unsigned pk) } do { - gnutls_init(&server, GNUTLS_SERVER); ret = gnutls_priority_set(server, priority_cache); if (ret < 0) { @@ -530,7 +531,7 @@ static void test_ciphersuite_kx(const char *cipher_prio, unsigned pk) gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); gnutls_transport_set_ptr(server, - (gnutls_transport_ptr_t) server); + (gnutls_transport_ptr_t)server); reset_buffers(); gnutls_init(&client, GNUTLS_CLIENT); @@ -550,7 +551,7 @@ static void test_ciphersuite_kx(const char *cipher_prio, unsigned pk) gnutls_transport_set_push_function(client, client_push); gnutls_transport_set_pull_function(client, client_pull); gnutls_transport_set_ptr(client, - (gnutls_transport_ptr_t) client); + (gnutls_transport_ptr_t)client); gettime(&tr_start); @@ -565,14 +566,13 @@ static void test_ciphersuite_kx(const char *cipher_prio, unsigned pk) gnutls_deinit(server); total_diffs[total_diffs_size++] = - timespec_sub_ns(&tr_stop, &tr_start); + timespec_sub_ns(&tr_stop, &tr_start); if (total_diffs_size > sizeof(total_diffs) / sizeof(total_diffs[0])) abort(); st.size += 1; - } - while (benchmark_must_finish == 0); + } while (benchmark_must_finish == 0); fprintf(stdout, "%s\n - ", suite); gnutls_free(suite); @@ -597,9 +597,8 @@ static void test_ciphersuite_kx(const char *cipher_prio, unsigned pk) svar = calc_svar(total_diffs, total_diffs_size, avg); - printf - (" - avg. handshake time: %.2f %s\n - standard deviation: %.2f %s\n\n", - avg, scale, sqrt(svar), scale); + printf(" - avg. handshake time: %.2f %s\n - standard deviation: %.2f %s\n\n", + avg, scale, sqrt(svar), scale); #ifdef ENABLE_ANON gnutls_anon_free_client_credentials(c_anoncred); @@ -617,9 +616,8 @@ void benchmark_tls(int debug_level, int ciphers) if (ciphers != 0) { size = 1400; - printf - ("Testing throughput in cipher/MAC combinations (payload: %d bytes)\n", - size); + printf("Testing throughput in cipher/MAC combinations (payload: %d bytes)\n", + size); test_ciphersuite(PRIO_TLS12_AES_GCM, size); test_ciphersuite(PRIO_AES_GCM, size); @@ -634,9 +632,8 @@ void benchmark_tls(int debug_level, int ciphers) #endif size = 16 * 1024; - printf - ("\nTesting throughput in cipher/MAC combinations (payload: %d bytes)\n", - size); + printf("\nTesting throughput in cipher/MAC combinations (payload: %d bytes)\n", + size); test_ciphersuite(PRIO_TLS12_AES_GCM, size); test_ciphersuite(PRIO_AES_GCM, size); test_ciphersuite(PRIO_TLS12_AES_CCM, size); @@ -649,9 +646,8 @@ void benchmark_tls(int debug_level, int ciphers) test_ciphersuite(PRIO_GOST_CNT, size); #endif } else { - printf - ("Testing key exchanges (RSA/DH bits: %d, EC bits: %d)\n\n", - rsa_bits, ec_bits); + printf("Testing key exchanges (RSA/DH bits: %d, EC bits: %d)\n\n", + rsa_bits, ec_bits); test_ciphersuite_kx(PRIO_DHE_RSA, GNUTLS_PK_RSA); test_ciphersuite_kx(PRIO_ECDH_RSA_PSS, GNUTLS_PK_RSA_PSS); test_ciphersuite_kx(PRIO_ECDH, GNUTLS_PK_RSA); @@ -667,5 +663,4 @@ void benchmark_tls(int debug_level, int ciphers) } gnutls_global_deinit(); - } diff --git a/src/benchmark.c b/src/benchmark.c index 45a6f77e57..bdff41ef9c 100644 --- a/src/benchmark.c +++ b/src/benchmark.c @@ -31,10 +31,10 @@ volatile int benchmark_must_finish = 0; #if defined(_WIN32) -# include +#include static DWORD WINAPI alarm_handler(LPVOID lpParameter) { - HANDLE wtimer = *((HANDLE *) lpParameter); + HANDLE wtimer = *((HANDLE *)lpParameter); WaitForSingleObject(wtimer, INFINITE); benchmark_must_finish = 1; return 0; @@ -46,9 +46,8 @@ static void alarm_handler(int signo) } #endif -static void -value2human(uint64_t bytes, double time, double *data, double *speed, - char *metric) +static void value2human(uint64_t bytes, double time, double *data, + double *speed, char *metric) { if (bytes > 1000 && bytes < 1000 * 1000) { *data = ((double)bytes) / 1000; @@ -90,21 +89,20 @@ void start_benchmark(struct benchmark_st *st) exit(1); } st->wthread = - CreateThread(NULL, 0, alarm_handler, &st->wtimer, 0, NULL); + CreateThread(NULL, 0, alarm_handler, &st->wtimer, 0, NULL); if (st->wthread == NULL) { fprintf(stderr, "error: CreateThread %u\n", GetLastError()); exit(1); } - st->alarm_timeout.QuadPart = (BSECS) * 10000000; - if (SetWaitableTimer - (st->wtimer, &st->alarm_timeout, 0, NULL, NULL, FALSE) == 0) { + st->alarm_timeout.QuadPart = (BSECS)*10000000; + if (SetWaitableTimer(st->wtimer, &st->alarm_timeout, 0, NULL, NULL, + FALSE) == 0) { fprintf(stderr, "error: SetWaitableTimer %u\n", GetLastError()); exit(1); } #else alarm(BSECS); #endif - } /* returns the elapsed time */ @@ -131,7 +129,7 @@ double stop_benchmark(struct benchmark_st *st, const char *metric, int quiet) secs = lsecs; secs /= 1000; - if (metric == NULL) { /* assume bytes/sec */ + if (metric == NULL) { /* assume bytes/sec */ value2human(st->size, secs, &ddata, &dspeed, imetric); if (quiet == 0) printf(" Processed %.2f %s in %.2f secs: ", ddata, diff --git a/src/benchmark.h b/src/benchmark.h index af9bc3a4c8..cb5ddaafcc 100644 --- a/src/benchmark.h +++ b/src/benchmark.h @@ -18,22 +18,22 @@ */ #ifndef GNUTLS_SRC_BENCHMARK_H -# define GNUTLS_SRC_BENCHMARK_H +#define GNUTLS_SRC_BENCHMARK_H -# include -# include -# include -# if defined(_WIN32) -# include -# endif +#include +#include +#include +#if defined(_WIN32) +#include +#endif /* for uint64_t */ -# include +#include -# if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_PROCESS_CPUTIME_ID) -# undef gettime -# define gettime(x) clock_gettime(CLOCK_PROCESS_CPUTIME_ID, x) -# else +#if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_PROCESS_CPUTIME_ID) +#undef gettime +#define gettime(x) clock_gettime(CLOCK_PROCESS_CPUTIME_ID, x) +#else inline static void gettime(struct timespec *ts) { struct timeval tv; @@ -41,7 +41,7 @@ inline static void gettime(struct timespec *ts) ts->tv_sec = tv.tv_sec; ts->tv_nsec = tv.tv_usec * 1000; } -# endif +#endif typedef void (*sighandler_t)(int); @@ -52,11 +52,11 @@ struct benchmark_st { struct timespec start; uint64_t size; sighandler_t old_handler; -# if defined(_WIN32) +#if defined(_WIN32) HANDLE wtimer; HANDLE wthread; LARGE_INTEGER alarm_timeout; -# endif +#endif }; extern volatile int benchmark_must_finish; @@ -64,17 +64,17 @@ extern volatile int benchmark_must_finish; void start_benchmark(struct benchmark_st *st); double stop_benchmark(struct benchmark_st *st, const char *metric, int quiet); -inline static unsigned int -timespec_sub_ms(struct timespec *a, struct timespec *b) +inline static unsigned int timespec_sub_ms(struct timespec *a, + struct timespec *b) { - return (a->tv_sec - b->tv_sec) * 1000 + (a->tv_nsec - - b->tv_nsec) / (1000 * 1000); + return (a->tv_sec - b->tv_sec) * 1000 + + (a->tv_nsec - b->tv_nsec) / (1000 * 1000); } -inline static unsigned long -timespec_sub_ns(struct timespec *a, struct timespec *b) +inline static unsigned long timespec_sub_ns(struct timespec *a, + struct timespec *b) { return (a->tv_sec - b->tv_sec) * 1000000000 + (a->tv_nsec - b->tv_nsec); } -#endif /* GNUTLS_SRC_BENCHMARK_H */ +#endif /* GNUTLS_SRC_BENCHMARK_H */ diff --git a/src/certtool-cfg.c b/src/certtool-cfg.c index 9a323c61e8..aa9ab6a1d0 100644 --- a/src/certtool-cfg.c +++ b/src/certtool-cfg.c @@ -43,9 +43,9 @@ #include #if HAVE_SYS_SOCKET_H -# include +#include #elif HAVE_WS2TCPIP_H -# include +#include #endif /* From gnulib for inet_pton() */ @@ -65,17 +65,21 @@ extern int ask_pass; #define MAX_ENTRIES 128 #define MAX_POLICIES 8 -#define CHECK_MALLOC(x) \ - if (x == NULL) { \ +#define CHECK_MALLOC(x) \ + if (x == NULL) { \ fprintf(stderr, "memory error\n"); \ - exit(1); \ + exit(1); \ } -#define PRINT_TIME_T_ERROR \ +#define PRINT_TIME_T_ERROR \ if (sizeof(time_t) < 8) \ - fprintf(stderr, "This system expresses time with a 32-bit time_t; that prevents dates after 2038 to be expressed by GnuTLS.\n") + fprintf(stderr, \ + "This system expresses time with a 32-bit time_t; that prevents dates after 2038 to be expressed by GnuTLS.\n") -enum option_types { OPTION_NUMERIC, OPTION_STRING, OPTION_BOOLEAN, +enum option_types { + OPTION_NUMERIC, + OPTION_STRING, + OPTION_BOOLEAN, OPTION_MULTI_LINE }; @@ -88,76 +92,77 @@ struct cfg_options { }; static struct cfg_options available_options[] = { - {.name = "unit",.type = OPTION_MULTI_LINE}, - {.name = "ou",.type = OPTION_MULTI_LINE}, - {.name = "organization",.type = OPTION_MULTI_LINE}, - {.name = "o",.type = OPTION_MULTI_LINE}, - {.name = "dc",.type = OPTION_MULTI_LINE}, - {.name = "dns_name",.type = OPTION_MULTI_LINE}, - {.name = "ip_address",.type = OPTION_MULTI_LINE}, - {.name = "email",.type = OPTION_MULTI_LINE}, - {.name = "krb5_principal",.type = OPTION_MULTI_LINE}, - {.name = "other_name",.type = OPTION_MULTI_LINE}, - {.name = "other_name_utf8",.type = OPTION_MULTI_LINE}, - {.name = "other_name_octet",.type = OPTION_MULTI_LINE}, - {.name = "xmpp_name",.type = OPTION_MULTI_LINE}, - {.name = "key_purpose_oid",.type = OPTION_MULTI_LINE}, - {.name = "nc_exclude_dns",.type = OPTION_MULTI_LINE}, - {.name = "nc_exclude_ip",.type = OPTION_MULTI_LINE}, - {.name = "nc_exclude_email",.type = OPTION_MULTI_LINE}, - {.name = "nc_permit_dns",.type = OPTION_MULTI_LINE}, - {.name = "nc_permit_ip",.type = OPTION_MULTI_LINE}, - {.name = "nc_permit_email",.type = OPTION_MULTI_LINE}, - {.name = "dn_oid",.type = OPTION_MULTI_LINE}, - {.name = "add_extension",.type = OPTION_MULTI_LINE}, - {.name = "add_critical_extension",.type = OPTION_MULTI_LINE}, - {.name = "crl_dist_points",.type = OPTION_MULTI_LINE}, - {.name = "uri",.type = OPTION_MULTI_LINE}, - {.name = "ocsp_uri",.type = OPTION_MULTI_LINE}, - {.name = "ca_issuers_uri",.type = OPTION_MULTI_LINE}, - {.name = "locality",.type = OPTION_STRING}, - {.name = "state",.type = OPTION_STRING}, - {.name = "dn",.type = OPTION_STRING}, - {.name = "cn",.type = OPTION_STRING}, - {.name = "uid",.type = OPTION_STRING}, - {.name = "subject_unique_id",.type = OPTION_STRING}, - {.name = "issuer_unique_id",.type = OPTION_STRING}, - {.name = "challenge_password",.type = OPTION_STRING}, - {.name = "password",.type = OPTION_STRING}, - {.name = "pkcs9_email",.type = OPTION_STRING}, - {.name = "country",.type = OPTION_STRING}, - {.name = "expiration_date",.type = OPTION_STRING}, - {.name = "activation_date",.type = OPTION_STRING}, - {.name = "crl_revocation_date",.type = OPTION_STRING}, - {.name = "crl_this_update_date",.type = OPTION_STRING}, - {.name = "crl_next_update_date",.type = OPTION_STRING}, - {.name = "policy*",.type = OPTION_MULTI_LINE}, /* not a multi-line but there are multi as it is a wildcard */ - {.name = "inhibit_anypolicy_skip_certs",.type = OPTION_NUMERIC}, - {.name = "pkcs12_key_name",.type = OPTION_STRING}, - {.name = "proxy_policy_language",.type = OPTION_STRING}, - {.name = "serial",.type = OPTION_STRING}, - {.name = "expiration_days",.type = OPTION_NUMERIC}, - {.name = "crl_next_update",.type = OPTION_NUMERIC}, - {.name = "crl_number",.type = OPTION_STRING}, - {.name = "path_len",.type = OPTION_NUMERIC}, - {.name = "ca",.type = OPTION_BOOLEAN}, - {.name = "honor_crq_extensions",.type = OPTION_BOOLEAN}, - {.name = "honor_crq_ext",.type = OPTION_MULTI_LINE}, - {.name = "tls_www_client",.type = OPTION_BOOLEAN}, - {.name = "tls_www_server",.type = OPTION_BOOLEAN}, - {.name = "signing_key",.type = OPTION_BOOLEAN}, - {.name = "encryption_key",.type = OPTION_BOOLEAN}, - {.name = "cert_signing_key",.type = OPTION_BOOLEAN}, - {.name = "crl_signing_key",.type = OPTION_BOOLEAN}, - {.name = "code_signing_key",.type = OPTION_BOOLEAN}, - {.name = "ocsp_signing_key",.type = OPTION_BOOLEAN}, - {.name = "time_stamping_key",.type = OPTION_BOOLEAN}, - {.name = "email_protection_key",.type = OPTION_BOOLEAN}, - {.name = "ipsec_ike_key",.type = OPTION_BOOLEAN}, - {.name = "key_agreement",.type = OPTION_BOOLEAN}, - {.name = "data_encipherment",.type = OPTION_BOOLEAN}, - {.name = "non_repudiation",.type = OPTION_BOOLEAN}, - {.name = "tls_feature",.type = OPTION_MULTI_LINE}, + { .name = "unit", .type = OPTION_MULTI_LINE }, + { .name = "ou", .type = OPTION_MULTI_LINE }, + { .name = "organization", .type = OPTION_MULTI_LINE }, + { .name = "o", .type = OPTION_MULTI_LINE }, + { .name = "dc", .type = OPTION_MULTI_LINE }, + { .name = "dns_name", .type = OPTION_MULTI_LINE }, + { .name = "ip_address", .type = OPTION_MULTI_LINE }, + { .name = "email", .type = OPTION_MULTI_LINE }, + { .name = "krb5_principal", .type = OPTION_MULTI_LINE }, + { .name = "other_name", .type = OPTION_MULTI_LINE }, + { .name = "other_name_utf8", .type = OPTION_MULTI_LINE }, + { .name = "other_name_octet", .type = OPTION_MULTI_LINE }, + { .name = "xmpp_name", .type = OPTION_MULTI_LINE }, + { .name = "key_purpose_oid", .type = OPTION_MULTI_LINE }, + { .name = "nc_exclude_dns", .type = OPTION_MULTI_LINE }, + { .name = "nc_exclude_ip", .type = OPTION_MULTI_LINE }, + { .name = "nc_exclude_email", .type = OPTION_MULTI_LINE }, + { .name = "nc_permit_dns", .type = OPTION_MULTI_LINE }, + { .name = "nc_permit_ip", .type = OPTION_MULTI_LINE }, + { .name = "nc_permit_email", .type = OPTION_MULTI_LINE }, + { .name = "dn_oid", .type = OPTION_MULTI_LINE }, + { .name = "add_extension", .type = OPTION_MULTI_LINE }, + { .name = "add_critical_extension", .type = OPTION_MULTI_LINE }, + { .name = "crl_dist_points", .type = OPTION_MULTI_LINE }, + { .name = "uri", .type = OPTION_MULTI_LINE }, + { .name = "ocsp_uri", .type = OPTION_MULTI_LINE }, + { .name = "ca_issuers_uri", .type = OPTION_MULTI_LINE }, + { .name = "locality", .type = OPTION_STRING }, + { .name = "state", .type = OPTION_STRING }, + { .name = "dn", .type = OPTION_STRING }, + { .name = "cn", .type = OPTION_STRING }, + { .name = "uid", .type = OPTION_STRING }, + { .name = "subject_unique_id", .type = OPTION_STRING }, + { .name = "issuer_unique_id", .type = OPTION_STRING }, + { .name = "challenge_password", .type = OPTION_STRING }, + { .name = "password", .type = OPTION_STRING }, + { .name = "pkcs9_email", .type = OPTION_STRING }, + { .name = "country", .type = OPTION_STRING }, + { .name = "expiration_date", .type = OPTION_STRING }, + { .name = "activation_date", .type = OPTION_STRING }, + { .name = "crl_revocation_date", .type = OPTION_STRING }, + { .name = "crl_this_update_date", .type = OPTION_STRING }, + { .name = "crl_next_update_date", .type = OPTION_STRING }, + { .name = "policy*", + .type = OPTION_MULTI_LINE }, /* not a multi-line but there are multi as it is a wildcard */ + { .name = "inhibit_anypolicy_skip_certs", .type = OPTION_NUMERIC }, + { .name = "pkcs12_key_name", .type = OPTION_STRING }, + { .name = "proxy_policy_language", .type = OPTION_STRING }, + { .name = "serial", .type = OPTION_STRING }, + { .name = "expiration_days", .type = OPTION_NUMERIC }, + { .name = "crl_next_update", .type = OPTION_NUMERIC }, + { .name = "crl_number", .type = OPTION_STRING }, + { .name = "path_len", .type = OPTION_NUMERIC }, + { .name = "ca", .type = OPTION_BOOLEAN }, + { .name = "honor_crq_extensions", .type = OPTION_BOOLEAN }, + { .name = "honor_crq_ext", .type = OPTION_MULTI_LINE }, + { .name = "tls_www_client", .type = OPTION_BOOLEAN }, + { .name = "tls_www_server", .type = OPTION_BOOLEAN }, + { .name = "signing_key", .type = OPTION_BOOLEAN }, + { .name = "encryption_key", .type = OPTION_BOOLEAN }, + { .name = "cert_signing_key", .type = OPTION_BOOLEAN }, + { .name = "crl_signing_key", .type = OPTION_BOOLEAN }, + { .name = "code_signing_key", .type = OPTION_BOOLEAN }, + { .name = "ocsp_signing_key", .type = OPTION_BOOLEAN }, + { .name = "time_stamping_key", .type = OPTION_BOOLEAN }, + { .name = "email_protection_key", .type = OPTION_BOOLEAN }, + { .name = "ipsec_ike_key", .type = OPTION_BOOLEAN }, + { .name = "key_agreement", .type = OPTION_BOOLEAN }, + { .name = "data_encipherment", .type = OPTION_BOOLEAN }, + { .name = "non_repudiation", .type = OPTION_BOOLEAN }, + { .name = "tls_feature", .type = OPTION_MULTI_LINE }, }; typedef struct _cfg_ctx { @@ -208,7 +213,7 @@ typedef struct _cfg_ctx { uint8_t *serial; unsigned serial_size; int expiration_days; - int skip_certs; /* from inhibit anypolicy */ + int skip_certs; /* from inhibit anypolicy */ int ca; int path_len; int tls_www_client; @@ -246,101 +251,104 @@ void cfg_init(void) cfg.skip_certs = -1; } -#define READ_MULTI_LINE(k_name, s_name) \ - val = cfg_next(pov, k_name); \ - if (val != NULL) \ - { \ - if (s_name == NULL) { \ - i = 0; \ - s_name = malloc(sizeof(char*)*MAX_ENTRIES); \ - CHECK_MALLOC(s_name); \ - do { \ - if (val && strcmp(val->name, k_name)!=0) \ - continue; \ - s_name[i] = strdup(val->value); \ - i++; \ - if (i>=MAX_ENTRIES) \ - break; \ - } while((val = cfg_next(val + 1, val->name)) != NULL); \ - s_name[i] = NULL; \ - } \ - } - -#define READ_MULTI_LINE_TOKENIZED(k_name, s_name) \ - val = cfg_next(pov, k_name); \ - if (val != NULL) \ - { \ - char *str; \ - char *p; \ - if (s_name == NULL) { \ - i = 0; \ - s_name = malloc(sizeof(char*)*MAX_ENTRIES); \ - CHECK_MALLOC(s_name); \ - do { \ - if (val && strcmp(val->name, k_name)!=0) \ - continue; \ - str = strdup(val->value); \ - CHECK_MALLOC(str); \ - if ((p=strchr(str, ' ')) == NULL && (p=strchr(str, '\t')) == NULL) { \ - fprintf(stderr, "Error parsing %s\n", k_name); \ - exit(1); \ - } \ - p[0] = 0; \ - p++; \ - s_name[i] = strdup(str); \ - while(*p==' ' || *p == '\t') p++; \ - if (p[0] == 0) { \ - fprintf(stderr, "Error (2) parsing %s\n", k_name); \ - exit(1); \ - } \ - s_name[i+1] = strdup(p); \ - i+=2; \ - free(str); \ - if (i>=MAX_ENTRIES) \ - break; \ - } while((val = cfg_next(val + 1, val->name)) != NULL); \ - s_name[i] = NULL; \ - } \ - } +#define READ_MULTI_LINE(k_name, s_name) \ + val = cfg_next(pov, k_name); \ + if (val != NULL) { \ + if (s_name == NULL) { \ + i = 0; \ + s_name = malloc(sizeof(char *) * MAX_ENTRIES); \ + CHECK_MALLOC(s_name); \ + do { \ + if (val && strcmp(val->name, k_name) != 0) \ + continue; \ + s_name[i] = strdup(val->value); \ + i++; \ + if (i >= MAX_ENTRIES) \ + break; \ + } while ((val = cfg_next(val + 1, val->name)) != \ + NULL); \ + s_name[i] = NULL; \ + } \ + } + +#define READ_MULTI_LINE_TOKENIZED(k_name, s_name) \ + val = cfg_next(pov, k_name); \ + if (val != NULL) { \ + char *str; \ + char *p; \ + if (s_name == NULL) { \ + i = 0; \ + s_name = malloc(sizeof(char *) * MAX_ENTRIES); \ + CHECK_MALLOC(s_name); \ + do { \ + if (val && strcmp(val->name, k_name) != 0) \ + continue; \ + str = strdup(val->value); \ + CHECK_MALLOC(str); \ + if ((p = strchr(str, ' ')) == NULL && \ + (p = strchr(str, '\t')) == NULL) { \ + fprintf(stderr, "Error parsing %s\n", \ + k_name); \ + exit(1); \ + } \ + p[0] = 0; \ + p++; \ + s_name[i] = strdup(str); \ + while (*p == ' ' || *p == '\t') \ + p++; \ + if (p[0] == 0) { \ + fprintf(stderr, \ + "Error (2) parsing %s\n", \ + k_name); \ + exit(1); \ + } \ + s_name[i + 1] = strdup(p); \ + i += 2; \ + free(str); \ + if (i >= MAX_ENTRIES) \ + break; \ + } while ((val = cfg_next(val + 1, val->name)) != \ + NULL); \ + s_name[i] = NULL; \ + } \ + } #define READ_BOOLEAN(name, s_name) \ - val = cfg_next(pov, name); \ - if (val != NULL) \ - { \ - s_name = 1; \ - } + val = cfg_next(pov, name); \ + if (val != NULL) { \ + s_name = 1; \ + } /* READ_NUMERIC only returns a long */ -#define READ_NUMERIC(name, s_name) \ - val = cfg_next(pov, name); \ - if (val != NULL) \ - { \ - s_name = strtol(val->value, NULL, 10); \ - } - -#define HEX_DECODE(hex, output, output_size) \ - { \ - gnutls_datum_t _input = {(void*)hex, strlen(hex)}; \ - gnutls_datum_t _output; \ - ret = gnutls_hex_decode2(&_input, &_output); \ - if (ret < 0) { \ +#define READ_NUMERIC(name, s_name) \ + val = cfg_next(pov, name); \ + if (val != NULL) { \ + s_name = strtol(val->value, NULL, 10); \ + } + +#define HEX_DECODE(hex, output, output_size) \ + { \ + gnutls_datum_t _input = { (void *)hex, strlen(hex) }; \ + gnutls_datum_t _output; \ + ret = gnutls_hex_decode2(&_input, &_output); \ + if (ret < 0) { \ fprintf(stderr, "error in hex ID: %s\n", hex); \ - exit(1); \ - } \ - output = _output.data; \ - output_size = _output.size; \ + exit(1); \ + } \ + output = _output.data; \ + output_size = _output.size; \ } -#define SERIAL_DECODE(input, output, output_size) \ - { \ - gnutls_datum_t _output; \ - ret = serial_decode(input, &_output); \ - if (ret < 0) { \ +#define SERIAL_DECODE(input, output, output_size) \ + { \ + gnutls_datum_t _output; \ + ret = serial_decode(input, &_output); \ + if (ret < 0) { \ fprintf(stderr, "error parsing number: %s\n", input); \ - exit(1); \ - } \ - output = _output.data; \ - output_size = _output.size; \ + exit(1); \ + } \ + output = _output.data; \ + output_size = _output.size; \ } static int handle_option(cfg_option_t val) @@ -353,9 +361,8 @@ static int handle_option(cfg_option_t val) j++) { len = strlen(available_options[j].name); if (len > 2 && available_options[j].name[len - 1] == '*') - cmp = - strncasecmp(val->name, available_options[j].name, - len - 1); + cmp = strncasecmp(val->name, available_options[j].name, + len - 1); else cmp = strcasecmp(val->name, available_options[j].name); @@ -600,7 +607,7 @@ static int copystr_without_nl(char *out, size_t out_size, const char *in, "Too long line to parse in interactive mode; please use templates.\n"); exit(1); } - memcpy(out, in, in_size + 1); /* copy terminating null */ + memcpy(out, in, in_size + 1); /* copy terminating null */ strip_nl(out, in_size); return 0; } @@ -719,7 +726,7 @@ int64_t read_int(const char *input_str) return read_int_with_default(input_str, 0); } -int serial_decode(const char *input, gnutls_datum_t * output) +int serial_decode(const char *input, gnutls_datum_t *output) { int i; int64_t value; @@ -751,7 +758,8 @@ int serial_decode(const char *input, gnutls_datum_t * output) if (value <= 0 || value >= value_limit) { fprintf(stderr, "Integer out of range: `%s' (min: 1, max: %" PRId64 - ")\n", input, value_limit - 1); + ")\n", + input, value_limit - 1); return GNUTLS_E_PARSING_ERROR; } @@ -804,7 +812,7 @@ int read_yesno(const char *input_str, int def) { char input[MAX_INPUT_SIZE]; - restart: +restart: fputs(input_str, stderr); if (fgets(input, sizeof(input), stdin) == NULL) return def; @@ -849,8 +857,8 @@ const char *get_confirmed_pass(bool empty_ok) copy = strdup(pass); CHECK_MALLOC(copy); pass = getpass("Confirm password: "); - } - while (strcmp(pass, copy) != 0 && !(empty_ok && *pass == '\0')); + } while (strcmp(pass, copy) != 0 && + !(empty_ok && *pass == '\0')); free(copy); @@ -875,9 +883,8 @@ void get_crl_dist_point_set(gnutls_x509_crt_t crt) return; for (i = 0; cfg.crl_dist_points[i] != NULL; i++) { - ret = - gnutls_x509_crt_set_crl_dist_points - (crt, GNUTLS_SAN_URI, cfg.crl_dist_points[i], 0); + ret = gnutls_x509_crt_set_crl_dist_points( + crt, GNUTLS_SAN_URI, cfg.crl_dist_points[i], 0); if (ret < 0) break; } @@ -887,23 +894,22 @@ void get_crl_dist_point_set(gnutls_x509_crt_t crt) do { if (counter == 0) { - p = read_str - ("Enter the URI of the CRL distribution point: "); + p = read_str( + "Enter the URI of the CRL distribution point: "); } else { - p = read_str - ("Enter an additional URI of the CRL distribution point: "); + p = read_str( + "Enter an additional URI of the CRL distribution point: "); } if (!p) return; - ret = gnutls_x509_crt_set_crl_dist_points - (crt, GNUTLS_SAN_URI, p, 0); + ret = gnutls_x509_crt_set_crl_dist_points( + crt, GNUTLS_SAN_URI, p, 0); if (ret < 0) break; counter++; - } - while (p); + } while (p); } if (ret < 0) { @@ -920,11 +926,9 @@ void get_country_crt_set(gnutls_x509_crt_t crt) if (batch) { if (!cfg.country) return; - ret = - gnutls_x509_crt_set_dn_by_oid(crt, - GNUTLS_OID_X520_COUNTRY_NAME, - 0, cfg.country, - strlen(cfg.country)); + ret = gnutls_x509_crt_set_dn_by_oid( + crt, GNUTLS_OID_X520_COUNTRY_NAME, 0, cfg.country, + strlen(cfg.country)); if (ret < 0) { fprintf(stderr, "set_dn: %s\n", gnutls_strerror(ret)); exit(1); @@ -933,7 +937,6 @@ void get_country_crt_set(gnutls_x509_crt_t crt) read_crt_set(crt, "Country name (2 chars): ", GNUTLS_OID_X520_COUNTRY_NAME); } - } void get_organization_crt_set(gnutls_x509_crt_t crt) @@ -946,14 +949,10 @@ void get_organization_crt_set(gnutls_x509_crt_t crt) return; for (i = 0; cfg.organization[i] != NULL; i++) { - ret = - gnutls_x509_crt_set_dn_by_oid(crt, - GNUTLS_OID_X520_ORGANIZATION_NAME, - 0, - cfg.organization[i], - strlen - (cfg.organization - [i])); + ret = gnutls_x509_crt_set_dn_by_oid( + crt, GNUTLS_OID_X520_ORGANIZATION_NAME, 0, + cfg.organization[i], + strlen(cfg.organization[i])); if (ret < 0) { fprintf(stderr, "set_dn: %s\n", gnutls_strerror(ret)); @@ -964,7 +963,6 @@ void get_organization_crt_set(gnutls_x509_crt_t crt) read_crt_set(crt, "Organization name: ", GNUTLS_OID_X520_ORGANIZATION_NAME); } - } void get_unit_crt_set(gnutls_x509_crt_t crt) @@ -977,11 +975,9 @@ void get_unit_crt_set(gnutls_x509_crt_t crt) return; for (i = 0; cfg.unit[i] != NULL; i++) { - ret = - gnutls_x509_crt_set_dn_by_oid(crt, - GNUTLS_OID_X520_ORGANIZATIONAL_UNIT_NAME, - 0, cfg.unit[i], - strlen(cfg.unit[i])); + ret = gnutls_x509_crt_set_dn_by_oid( + crt, GNUTLS_OID_X520_ORGANIZATIONAL_UNIT_NAME, + 0, cfg.unit[i], strlen(cfg.unit[i])); if (ret < 0) { fprintf(stderr, "set_dn: %s\n", gnutls_strerror(ret)); @@ -992,7 +988,6 @@ void get_unit_crt_set(gnutls_x509_crt_t crt) read_crt_set(crt, "Organizational unit name: ", GNUTLS_OID_X520_ORGANIZATIONAL_UNIT_NAME); } - } void get_state_crt_set(gnutls_x509_crt_t crt) @@ -1002,11 +997,9 @@ void get_state_crt_set(gnutls_x509_crt_t crt) if (batch) { if (!cfg.state) return; - ret = - gnutls_x509_crt_set_dn_by_oid(crt, - GNUTLS_OID_X520_STATE_OR_PROVINCE_NAME, - 0, cfg.state, - strlen(cfg.state)); + ret = gnutls_x509_crt_set_dn_by_oid( + crt, GNUTLS_OID_X520_STATE_OR_PROVINCE_NAME, 0, + cfg.state, strlen(cfg.state)); if (ret < 0) { fprintf(stderr, "set_dn: %s\n", gnutls_strerror(ret)); exit(1); @@ -1015,7 +1008,6 @@ void get_state_crt_set(gnutls_x509_crt_t crt) read_crt_set(crt, "State or province name: ", GNUTLS_OID_X520_STATE_OR_PROVINCE_NAME); } - } void get_locality_crt_set(gnutls_x509_crt_t crt) @@ -1025,20 +1017,17 @@ void get_locality_crt_set(gnutls_x509_crt_t crt) if (batch) { if (!cfg.locality) return; - ret = - gnutls_x509_crt_set_dn_by_oid(crt, - GNUTLS_OID_X520_LOCALITY_NAME, - 0, cfg.locality, - strlen(cfg.locality)); + ret = gnutls_x509_crt_set_dn_by_oid( + crt, GNUTLS_OID_X520_LOCALITY_NAME, 0, cfg.locality, + strlen(cfg.locality)); if (ret < 0) { fprintf(stderr, "set_dn: %s\n", gnutls_strerror(ret)); exit(1); } } else { - read_crt_set(crt, "Locality name: ", - GNUTLS_OID_X520_LOCALITY_NAME); + read_crt_set(crt, + "Locality name: ", GNUTLS_OID_X520_LOCALITY_NAME); } - } void get_cn_crt_set(gnutls_x509_crt_t crt) @@ -1048,10 +1037,9 @@ void get_cn_crt_set(gnutls_x509_crt_t crt) if (batch) { if (!cfg.cn) return; - ret = - gnutls_x509_crt_set_dn_by_oid(crt, - GNUTLS_OID_X520_COMMON_NAME, - 0, cfg.cn, strlen(cfg.cn)); + ret = gnutls_x509_crt_set_dn_by_oid(crt, + GNUTLS_OID_X520_COMMON_NAME, + 0, cfg.cn, strlen(cfg.cn)); if (ret < 0) { fprintf(stderr, "set_dn_by_oid: %s\n", gnutls_strerror(ret)); @@ -1060,7 +1048,6 @@ void get_cn_crt_set(gnutls_x509_crt_t crt) } else { read_crt_set(crt, "Common name: ", GNUTLS_OID_X520_COMMON_NAME); } - } void get_dn_crt_set(gnutls_x509_crt_t crt) @@ -1088,13 +1075,12 @@ void crt_constraints_set(gnutls_x509_crt_t crt) gnutls_datum_t name; if (batch) { - if (cfg.permitted_nc_dns == NULL - && cfg.permitted_nc_email == NULL - && cfg.excluded_nc_dns == NULL - && cfg.excluded_nc_email == NULL - && cfg.permitted_nc_ip == NULL - && cfg.excluded_nc_ip == NULL) - return; /* nothing to do */ + if (cfg.permitted_nc_dns == NULL && + cfg.permitted_nc_email == NULL && + cfg.excluded_nc_dns == NULL && + cfg.excluded_nc_email == NULL && + cfg.permitted_nc_ip == NULL && cfg.excluded_nc_ip == NULL) + return; /* nothing to do */ ret = gnutls_x509_name_constraints_init(&nc); if (ret < 0) { @@ -1104,18 +1090,16 @@ void crt_constraints_set(gnutls_x509_crt_t crt) if (cfg.permitted_nc_ip) { for (i = 0; cfg.permitted_nc_ip[i] != NULL; i++) { - ret = - gnutls_x509_cidr_to_rfc5280 - (cfg.permitted_nc_ip[i], &name); + ret = gnutls_x509_cidr_to_rfc5280( + cfg.permitted_nc_ip[i], &name); if (ret < 0) { fprintf(stderr, "error parsing IP constraint: %s\n", gnutls_strerror(ret)); exit(1); } - ret = - gnutls_x509_name_constraints_add_permitted - (nc, GNUTLS_SAN_IPADDRESS, &name); + ret = gnutls_x509_name_constraints_add_permitted( + nc, GNUTLS_SAN_IPADDRESS, &name); if (ret < 0) { fprintf(stderr, "error adding constraint: %s\n", @@ -1128,18 +1112,16 @@ void crt_constraints_set(gnutls_x509_crt_t crt) if (cfg.excluded_nc_ip) { for (i = 0; cfg.excluded_nc_ip[i] != NULL; i++) { - ret = - gnutls_x509_cidr_to_rfc5280 - (cfg.excluded_nc_ip[i], &name); + ret = gnutls_x509_cidr_to_rfc5280( + cfg.excluded_nc_ip[i], &name); if (ret < 0) { fprintf(stderr, "error parsing IP constraint: %s\n", gnutls_strerror(ret)); exit(1); } - ret = - gnutls_x509_name_constraints_add_excluded - (nc, GNUTLS_SAN_IPADDRESS, &name); + ret = gnutls_x509_name_constraints_add_excluded( + nc, GNUTLS_SAN_IPADDRESS, &name); if (ret < 0) { fprintf(stderr, "error adding constraint: %s\n", @@ -1151,14 +1133,11 @@ void crt_constraints_set(gnutls_x509_crt_t crt) } if (cfg.permitted_nc_dns) { - for (i = 0; cfg.permitted_nc_dns[i] != NULL; i++) { - name.data = (void *)cfg.permitted_nc_dns[i]; name.size = strlen((char *)name.data); - ret = - gnutls_x509_name_constraints_add_permitted - (nc, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_add_permitted( + nc, GNUTLS_SAN_DNSNAME, &name); if (ret < 0) { fprintf(stderr, "error adding constraint: %s\n", @@ -1172,9 +1151,8 @@ void crt_constraints_set(gnutls_x509_crt_t crt) for (i = 0; cfg.excluded_nc_dns[i] != NULL; i++) { name.data = (void *)cfg.excluded_nc_dns[i]; name.size = strlen((char *)name.data); - ret = - gnutls_x509_name_constraints_add_excluded - (nc, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_add_excluded( + nc, GNUTLS_SAN_DNSNAME, &name); if (ret < 0) { fprintf(stderr, "error adding constraint: %s\n", @@ -1188,9 +1166,8 @@ void crt_constraints_set(gnutls_x509_crt_t crt) for (i = 0; cfg.permitted_nc_email[i] != NULL; i++) { name.data = (void *)cfg.permitted_nc_email[i]; name.size = strlen((char *)name.data); - ret = - gnutls_x509_name_constraints_add_permitted - (nc, GNUTLS_SAN_RFC822NAME, &name); + ret = gnutls_x509_name_constraints_add_permitted( + nc, GNUTLS_SAN_RFC822NAME, &name); if (ret < 0) { fprintf(stderr, "error adding constraint: %s\n", @@ -1204,9 +1181,8 @@ void crt_constraints_set(gnutls_x509_crt_t crt) for (i = 0; cfg.excluded_nc_email[i] != NULL; i++) { name.data = (void *)cfg.excluded_nc_email[i]; name.size = strlen((char *)name.data); - ret = - gnutls_x509_name_constraints_add_excluded - (nc, GNUTLS_SAN_RFC822NAME, &name); + ret = gnutls_x509_name_constraints_add_excluded( + nc, GNUTLS_SAN_RFC822NAME, &name); if (ret < 0) { fprintf(stderr, "error adding constraint: %s\n", @@ -1232,15 +1208,14 @@ void crt_unique_ids_set(gnutls_x509_crt_t crt) int ret; if (batch) { - if (cfg.subject_unique_id == NULL - && cfg.issuer_unique_id == NULL) - return; /* nothing to do */ + if (cfg.subject_unique_id == NULL && + cfg.issuer_unique_id == NULL) + return; /* nothing to do */ if (cfg.subject_unique_id) { - ret = - gnutls_x509_crt_set_subject_unique_id(crt, - cfg.subject_unique_id, - cfg.subject_unique_id_size); + ret = gnutls_x509_crt_set_subject_unique_id( + crt, cfg.subject_unique_id, + cfg.subject_unique_id_size); if (ret < 0) { fprintf(stderr, "error setting subject unique ID: %s\n", @@ -1250,10 +1225,9 @@ void crt_unique_ids_set(gnutls_x509_crt_t crt) } if (cfg.issuer_unique_id) { - ret = - gnutls_x509_crt_set_issuer_unique_id(crt, - cfg.issuer_unique_id, - cfg.issuer_unique_id_size); + ret = gnutls_x509_crt_set_issuer_unique_id( + crt, cfg.issuer_unique_id, + cfg.issuer_unique_id_size); if (ret < 0) { fprintf(stderr, "error setting issuer unique ID: %s\n", @@ -1271,9 +1245,8 @@ void get_uid_crt_set(gnutls_x509_crt_t crt) if (batch) { if (!cfg.uid) return; - ret = - gnutls_x509_crt_set_dn_by_oid(crt, GNUTLS_OID_LDAP_UID, - 0, cfg.uid, strlen(cfg.uid)); + ret = gnutls_x509_crt_set_dn_by_oid(crt, GNUTLS_OID_LDAP_UID, 0, + cfg.uid, strlen(cfg.uid)); if (ret < 0) { fprintf(stderr, "set_dn: %s\n", gnutls_strerror(ret)); exit(1); @@ -1281,7 +1254,6 @@ void get_uid_crt_set(gnutls_x509_crt_t crt) } else { read_crt_set(crt, "UID: ", GNUTLS_OID_LDAP_UID); } - } void get_oid_crt_set(gnutls_x509_crt_t crt) @@ -1298,13 +1270,9 @@ void get_oid_crt_set(gnutls_x509_crt_t crt) cfg.dn_oid[i]); exit(1); } - ret = - gnutls_x509_crt_set_dn_by_oid(crt, - cfg.dn_oid[i], 0, - cfg.dn_oid[i + - 1], - strlen(cfg.dn_oid[i + - 1])); + ret = gnutls_x509_crt_set_dn_by_oid( + crt, cfg.dn_oid[i], 0, cfg.dn_oid[i + 1], + strlen(cfg.dn_oid[i + 1])); if (ret < 0) { fprintf(stderr, "set_dn_oid: %s\n", @@ -1315,7 +1283,7 @@ void get_oid_crt_set(gnutls_x509_crt_t crt) } } -#define ACTION_NONE 0 +#define ACTION_NONE 0 #define ENCODE_OCTET_STRING 1 static unsigned char *decode_ext_string(char *str, unsigned int *ret_size) { @@ -1356,9 +1324,8 @@ static unsigned char *decode_ext_string(char *str, unsigned int *ret_size) switch (action) { case ENCODE_OCTET_STRING: tag_len = sizeof(tag); - res = - asn1_encode_simple_der(ASN1_ETYPE_OCTET_STRING, raw, - raw_size, tag, &tag_len); + res = asn1_encode_simple_der(ASN1_ETYPE_OCTET_STRING, raw, + raw_size, tag, &tag_len); if (res != ASN1_SUCCESS) { fprintf(stderr, "error in DER encoding: %s\n", asn1_strerror(res)); @@ -1399,25 +1366,17 @@ void get_extensions_crt_set(int type, void *crt) } /* convert hex to bin */ - raw = - decode_ext_string(cfg.extensions[i + 1], &raw_size); + raw = decode_ext_string(cfg.extensions[i + 1], + &raw_size); if (type == TYPE_CRT) - ret = - gnutls_x509_crt_set_extension_by_oid(crt, - cfg.extensions - [i], - raw, - raw_size, - 0); + ret = gnutls_x509_crt_set_extension_by_oid( + crt, cfg.extensions[i], raw, raw_size, + 0); else - ret = - gnutls_x509_crq_set_extension_by_oid(crt, - cfg.extensions - [i], - raw, - raw_size, - 0); + ret = gnutls_x509_crq_set_extension_by_oid( + crt, cfg.extensions[i], raw, raw_size, + 0); gnutls_free(raw); if (ret < 0) { @@ -1427,7 +1386,7 @@ void get_extensions_crt_set(int type, void *crt) } } - check_critical: + check_critical: if (!cfg.crit_extensions) return; for (i = 0; cfg.crit_extensions[i] != NULL; i += 2) { @@ -1438,26 +1397,17 @@ void get_extensions_crt_set(int type, void *crt) exit(1); } /* convert hex to bin */ - raw = - decode_ext_string(cfg.crit_extensions[i + 1], - &raw_size); + raw = decode_ext_string(cfg.crit_extensions[i + 1], + &raw_size); if (type == TYPE_CRT) - ret = - gnutls_x509_crt_set_extension_by_oid(crt, - cfg.crit_extensions - [i], - raw, - raw_size, - 1); + ret = gnutls_x509_crt_set_extension_by_oid( + crt, cfg.crit_extensions[i], raw, + raw_size, 1); else - ret = - gnutls_x509_crq_set_extension_by_oid(crt, - cfg.crit_extensions - [i], - raw, - raw_size, - 1); + ret = gnutls_x509_crq_set_extension_by_oid( + crt, cfg.crit_extensions[i], raw, + raw_size, 1); gnutls_free(raw); @@ -1479,13 +1429,11 @@ void get_key_purpose_set(int type, void *crt) return; for (i = 0; cfg.key_purpose_oids[i] != NULL; i++) { if (type == TYPE_CRT) - ret = - gnutls_x509_crt_set_key_purpose_oid - (crt, cfg.key_purpose_oids[i], 0); + ret = gnutls_x509_crt_set_key_purpose_oid( + crt, cfg.key_purpose_oids[i], 0); else - ret = - gnutls_x509_crq_set_key_purpose_oid - (crt, cfg.key_purpose_oids[i], 0); + ret = gnutls_x509_crq_set_key_purpose_oid( + crt, cfg.key_purpose_oids[i], 0); if (ret < 0) { fprintf(stderr, @@ -1509,10 +1457,8 @@ void get_ocsp_issuer_set(gnutls_x509_crt_t crt) for (i = 0; cfg.ocsp_uris[i] != NULL; i++) { uri.data = (void *)cfg.ocsp_uris[i]; uri.size = strlen(cfg.ocsp_uris[i]); - ret = - gnutls_x509_crt_set_authority_info_access(crt, - GNUTLS_IA_OCSP_URI, - &uri); + ret = gnutls_x509_crt_set_authority_info_access( + crt, GNUTLS_IA_OCSP_URI, &uri); if (ret < 0) { fprintf(stderr, "set OCSP URI (%s): %s\n", cfg.ocsp_uris[i], gnutls_strerror(ret)); @@ -1533,13 +1479,10 @@ void get_ca_issuers_set(gnutls_x509_crt_t crt) for (i = 0; cfg.ca_issuers_uris[i] != NULL; i++) { uri.data = (void *)cfg.ca_issuers_uris[i]; uri.size = strlen(cfg.ca_issuers_uris[i]); - ret = - gnutls_x509_crt_set_authority_info_access(crt, - GNUTLS_IA_CAISSUERS_URI, - &uri); + ret = gnutls_x509_crt_set_authority_info_access( + crt, GNUTLS_IA_CAISSUERS_URI, &uri); if (ret < 0) { - fprintf(stderr, - "set CA ISSUERS URI (%s): %s\n", + fprintf(stderr, "set CA ISSUERS URI (%s): %s\n", cfg.ca_issuers_uris[i], gnutls_strerror(ret)); exit(1); @@ -1555,11 +1498,9 @@ void get_pkcs9_email_crt_set(gnutls_x509_crt_t crt) if (batch) { if (!cfg.pkcs9_email) return; - ret = - gnutls_x509_crt_set_dn_by_oid(crt, - GNUTLS_OID_PKCS9_EMAIL, - 0, cfg.pkcs9_email, - strlen(cfg.pkcs9_email)); + ret = gnutls_x509_crt_set_dn_by_oid(crt, GNUTLS_OID_PKCS9_EMAIL, + 0, cfg.pkcs9_email, + strlen(cfg.pkcs9_email)); if (ret < 0) { fprintf(stderr, "set_dn: %s\n", gnutls_strerror(ret)); exit(1); @@ -1567,11 +1508,9 @@ void get_pkcs9_email_crt_set(gnutls_x509_crt_t crt) } else { read_crt_set(crt, "E-mail: ", GNUTLS_OID_PKCS9_EMAIL); } - } -static -int default_crl_number(unsigned char *serial, size_t *size) +static int default_crl_number(unsigned char *serial, size_t *size) { struct timespec ts; time_t tv_sec_tmp; @@ -1618,9 +1557,9 @@ int default_crl_number(unsigned char *serial, size_t *size) * returns, either the buffer is not modified to use the default value * or its contents are changed to reflect the user-entered value. **/ -static -void read_serial_value(unsigned char *serial, size_t *size, size_t max_size, - const char *label, const char *rfc_section) +static void read_serial_value(unsigned char *serial, size_t *size, + size_t max_size, const char *label, + const char *rfc_section) { static char input[MAX_INPUT_SIZE]; int ret; @@ -1642,7 +1581,8 @@ void read_serial_value(unsigned char *serial, size_t *size, size_t max_size, fprintf(stderr, "Enter the %s in decimal (123) or hex (0xabcd)\n" "(default is 0x%s)\n" - "value: ", label, encoded_default.data); + "value: ", + label, encoded_default.data); if (fgets(input, sizeof(input), stdin) == NULL) break; @@ -1658,12 +1598,13 @@ void read_serial_value(unsigned char *serial, size_t *size, size_t max_size, continue; } - if ((decoded.size == SERIAL_MAX_BYTES && decoded.data[0] & 0x80) - || decoded.size > SERIAL_MAX_BYTES) { + if ((decoded.size == SERIAL_MAX_BYTES && + decoded.data[0] & 0x80) || + decoded.size > SERIAL_MAX_BYTES) { fprintf(stderr, "%s would be encoded in more than 20 bytes," - "see RFC 5280, section %s\n", label, - rfc_section); + "see RFC 5280, section %s\n", + label, rfc_section); gnutls_free(decoded.data); continue; } @@ -1684,11 +1625,10 @@ void read_serial_value(unsigned char *serial, size_t *size, size_t max_size, gnutls_free(encoded_default.data); } -static -void get_serial_value(unsigned char *serial, size_t *size, - const unsigned char *config, size_t config_size, - int (create_default) (unsigned char *, size_t *), - const char *label, const char *rfc_section) +static void get_serial_value(unsigned char *serial, size_t *size, + const unsigned char *config, size_t config_size, + int(create_default)(unsigned char *, size_t *), + const char *label, const char *rfc_section) { size_t max_size = *size; int ret; @@ -1713,17 +1653,17 @@ void get_serial_value(unsigned char *serial, size_t *size, if (!batch) read_serial_value(serial, size, max_size, label, rfc_section); - if ((*size == SERIAL_MAX_BYTES && serial[0] & 0x80) - || *size > SERIAL_MAX_BYTES) { + if ((*size == SERIAL_MAX_BYTES && serial[0] & 0x80) || + *size > SERIAL_MAX_BYTES) { fprintf(stderr, "%s would be encoded in more than 20 bytes," - "see RFC 5280, section %s\n", label, rfc_section); + "see RFC 5280, section %s\n", + label, rfc_section); exit(1); } } -static -int default_serial(unsigned char *serial, size_t *size) +static int default_serial(unsigned char *serial, size_t *size) { int ret; @@ -1750,8 +1690,7 @@ void get_serial(unsigned char *serial, size_t *size) "4.1.2.2"); } -static -time_t get_date(const char *date) +static time_t get_date(const char *date) { struct timespec r; @@ -1766,7 +1705,6 @@ time_t get_date(const char *date) time_t get_activation_date(void) { - if (batch && cfg.activation_date != NULL) { return get_date(cfg.activation_date); } @@ -1776,7 +1714,6 @@ time_t get_activation_date(void) time_t get_crl_revocation_date(void) { - if (batch && cfg.revocation_date != NULL) { return get_date(cfg.revocation_date); } @@ -1786,7 +1723,6 @@ time_t get_crl_revocation_date(void) time_t get_crl_this_update_date(void) { - if (batch && cfg.this_update_date != NULL) { return get_date(cfg.this_update_date); } @@ -1794,13 +1730,12 @@ time_t get_crl_this_update_date(void) return time(NULL); } -static -time_t days_to_secs(int days) +static time_t days_to_secs(int days) { time_t secs = days; time_t now = time(NULL); - if (secs != (time_t) - 1) { + if (secs != (time_t)-1) { if (INT_MULTIPLY_OVERFLOW(secs, 24 * 60 * 60)) { goto overflow; } else { @@ -1808,7 +1743,7 @@ time_t days_to_secs(int days) } } - if (secs != (time_t) - 1) { + if (secs != (time_t)-1) { if (INT_ADD_OVERFLOW(secs, now)) { goto overflow; } else { @@ -1817,14 +1752,13 @@ time_t days_to_secs(int days) } return secs; - overflow: +overflow: PRINT_TIME_T_ERROR; fprintf(stderr, "Overflow while parsing days\n"); exit(1); } -static -time_t get_int_date(const char *txt_val, int int_val, const char *msg) +static time_t get_int_date(const char *txt_val, int int_val, const char *msg) { if (batch) { if (txt_val == NULL) { @@ -1844,8 +1778,7 @@ time_t get_int_date(const char *txt_val, int int_val, const char *msg) do { days = read_int(msg); - } - while (days == 0); + } while (days == 0); return days_to_secs(days); } } @@ -1861,9 +1794,9 @@ int get_ca_status(void) if (batch) { return cfg.ca; } else { - return - read_yesno - ("Does the certificate belong to an authority? (y/N): ", 0); + return read_yesno( + "Does the certificate belong to an authority? (y/N): ", + 0); } } @@ -1872,10 +1805,9 @@ int get_crq_extensions_status(void) if (batch) { return cfg.honor_crq_extensions; } else { - return - read_yesno - ("Do you want to honour all the extensions from the request? (y/N): ", - 0); + return read_yesno( + "Do you want to honour all the extensions from the request? (y/N): ", + 0); } } @@ -1890,9 +1822,9 @@ int get_path_len(void) if (batch) { return cfg.path_len; } else { - return read_int_with_default - ("Path length constraint (decimal, %d for no constraint): ", - -1); + return read_int_with_default( + "Path length constraint (decimal, %d for no constraint): ", + -1); } } @@ -1907,8 +1839,7 @@ const char *get_pkcs12_key_name(void) } else { do { name = read_str("Enter a name for the key: "); - } - while (name == NULL); + } while (name == NULL); } return name; } @@ -1918,9 +1849,8 @@ int get_tls_client_status(void) if (batch) { return cfg.tls_www_client; } else { - return - read_yesno - ("Is this a TLS web client certificate? (y/N): ", 0); + return read_yesno( + "Is this a TLS web client certificate? (y/N): ", 0); } } @@ -1929,9 +1859,8 @@ int get_tls_server_status(void) if (batch) { return cfg.tls_www_server; } else { - return - read_yesno - ("Is this a TLS web server certificate? (y/N): ", 0); + return read_yesno( + "Is this a TLS web server certificate? (y/N): ", 0); } } @@ -1943,7 +1872,7 @@ static int string_to_ip(unsigned char *ip, const char *str) #if HAVE_IPV6 int len = strlen(str); - if (strchr(str, ':') != NULL || len > 16) { /* IPv6 */ + if (strchr(str, ':') != NULL || len > 16) { /* IPv6 */ ret = inet_pton(AF_INET6, str, ip); if (ret <= 0) { fprintf(stderr, "Error in IPv6 address %s\n", str); @@ -1954,7 +1883,7 @@ static int string_to_ip(unsigned char *ip, const char *str) return 16; } else #endif - { /* IPv4 */ + { /* IPv4 */ ret = inet_pton(AF_INET, str, ip); if (ret <= 0) { fprintf(stderr, "Error in IPv4 address %s\n", str); @@ -1963,7 +1892,6 @@ static int string_to_ip(unsigned char *ip, const char *str) return 4; } - } void get_ip_addr_set(int type, void *crt) @@ -1979,22 +1907,19 @@ void get_ip_addr_set(int type, void *crt) for (i = 0; cfg.ip_addr[i] != NULL; i++) { len = string_to_ip(ip, cfg.ip_addr[i]); if (len <= 0) { - fprintf(stderr, - "Error parsing address: %s\n", + fprintf(stderr, "Error parsing address: %s\n", cfg.ip_addr[i]); exit(1); } if (type == TYPE_CRT) - ret = - gnutls_x509_crt_set_subject_alt_name - (crt, GNUTLS_SAN_IPADDRESS, ip, len, - GNUTLS_FSAN_APPEND); + ret = gnutls_x509_crt_set_subject_alt_name( + crt, GNUTLS_SAN_IPADDRESS, ip, len, + GNUTLS_FSAN_APPEND); else - ret = - gnutls_x509_crq_set_subject_alt_name - (crt, GNUTLS_SAN_IPADDRESS, ip, len, - GNUTLS_FSAN_APPEND); + ret = gnutls_x509_crq_set_subject_alt_name( + crt, GNUTLS_SAN_IPADDRESS, ip, len, + GNUTLS_FSAN_APPEND); if (ret < 0) break; @@ -2002,8 +1927,8 @@ void get_ip_addr_set(int type, void *crt) } else { const char *p; - p = read_str - ("Enter the IP address of the subject of the certificate: "); + p = read_str( + "Enter the IP address of the subject of the certificate: "); if (!p) return; @@ -2014,17 +1939,13 @@ void get_ip_addr_set(int type, void *crt) } if (type == TYPE_CRT) - ret = - gnutls_x509_crt_set_subject_alt_name(crt, - GNUTLS_SAN_IPADDRESS, - ip, len, - GNUTLS_FSAN_APPEND); + ret = gnutls_x509_crt_set_subject_alt_name( + crt, GNUTLS_SAN_IPADDRESS, ip, len, + GNUTLS_FSAN_APPEND); else - ret = - gnutls_x509_crq_set_subject_alt_name(crt, - GNUTLS_SAN_IPADDRESS, - ip, len, - GNUTLS_FSAN_APPEND); + ret = gnutls_x509_crq_set_subject_alt_name( + crt, GNUTLS_SAN_IPADDRESS, ip, len, + GNUTLS_FSAN_APPEND); } if (ret < 0) { @@ -2044,17 +1965,15 @@ void get_email_set(int type, void *crt) for (i = 0; cfg.email[i] != NULL; i++) { if (type == TYPE_CRT) - ret = - gnutls_x509_crt_set_subject_alt_name - (crt, GNUTLS_SAN_RFC822NAME, - cfg.email[i], strlen(cfg.email[i]), - GNUTLS_FSAN_APPEND); + ret = gnutls_x509_crt_set_subject_alt_name( + crt, GNUTLS_SAN_RFC822NAME, + cfg.email[i], strlen(cfg.email[i]), + GNUTLS_FSAN_APPEND); else - ret = - gnutls_x509_crq_set_subject_alt_name - (crt, GNUTLS_SAN_RFC822NAME, - cfg.email[i], strlen(cfg.email[i]), - GNUTLS_FSAN_APPEND); + ret = gnutls_x509_crq_set_subject_alt_name( + crt, GNUTLS_SAN_RFC822NAME, + cfg.email[i], strlen(cfg.email[i]), + GNUTLS_FSAN_APPEND); if (ret < 0) break; @@ -2062,25 +1981,19 @@ void get_email_set(int type, void *crt) } else { const char *p; - p = read_str - ("Enter the e-mail of the subject of the certificate: "); + p = read_str( + "Enter the e-mail of the subject of the certificate: "); if (!p) return; if (type == TYPE_CRT) - ret = - gnutls_x509_crt_set_subject_alt_name(crt, - GNUTLS_SAN_RFC822NAME, - p, - strlen(p), - GNUTLS_FSAN_APPEND); + ret = gnutls_x509_crt_set_subject_alt_name( + crt, GNUTLS_SAN_RFC822NAME, p, strlen(p), + GNUTLS_FSAN_APPEND); else - ret = - gnutls_x509_crq_set_subject_alt_name(crt, - GNUTLS_SAN_RFC822NAME, - p, - strlen(p), - GNUTLS_FSAN_APPEND); + ret = gnutls_x509_crq_set_subject_alt_name( + crt, GNUTLS_SAN_RFC822NAME, p, strlen(p), + GNUTLS_FSAN_APPEND); } if (ret < 0) { @@ -2100,21 +2013,13 @@ void get_dc_set(int type, void *crt) for (i = 0; cfg.dc[i] != NULL; i++) { if (type == TYPE_CRT) - ret = - gnutls_x509_crt_set_dn_by_oid(crt, - GNUTLS_OID_LDAP_DC, - 0, - cfg.dc[i], - strlen - (cfg.dc[i])); + ret = gnutls_x509_crt_set_dn_by_oid( + crt, GNUTLS_OID_LDAP_DC, 0, cfg.dc[i], + strlen(cfg.dc[i])); else - ret = - gnutls_x509_crq_set_dn_by_oid(crt, - GNUTLS_OID_LDAP_DC, - 0, - cfg.dc[i], - strlen - (cfg.dc[i])); + ret = gnutls_x509_crq_set_dn_by_oid( + crt, GNUTLS_OID_LDAP_DC, 0, cfg.dc[i], + strlen(cfg.dc[i])); if (ret < 0) break; @@ -2125,32 +2030,27 @@ void get_dc_set(int type, void *crt) do { if (counter == 0) { - p = read_str - ("Enter the subject's domain component (DC): "); + p = read_str( + "Enter the subject's domain component (DC): "); } else { - p = read_str - ("Enter an additional domain component (DC): "); + p = read_str( + "Enter an additional domain component (DC): "); } if (!p) return; if (type == TYPE_CRT) - ret = - gnutls_x509_crt_set_dn_by_oid(crt, - GNUTLS_OID_LDAP_DC, - 0, p, - strlen(p)); + ret = gnutls_x509_crt_set_dn_by_oid( + crt, GNUTLS_OID_LDAP_DC, 0, p, + strlen(p)); else - ret = - gnutls_x509_crq_set_dn_by_oid(crt, - GNUTLS_OID_LDAP_DC, - 0, p, - strlen(p)); + ret = gnutls_x509_crq_set_dn_by_oid( + crt, GNUTLS_OID_LDAP_DC, 0, p, + strlen(p)); counter++; if (ret < 0) break; - } - while (p != NULL); + } while (p != NULL); } if (ret < 0) { @@ -2169,19 +2069,17 @@ void get_dns_name_set(int type, void *crt) for (i = 0; cfg.dns_name[i] != NULL; i++) { if (type == TYPE_CRT) - ret = - gnutls_x509_crt_set_subject_alt_name - (crt, GNUTLS_SAN_DNSNAME, - cfg.dns_name[i], - strlen(cfg.dns_name[i]), - GNUTLS_FSAN_APPEND); + ret = gnutls_x509_crt_set_subject_alt_name( + crt, GNUTLS_SAN_DNSNAME, + cfg.dns_name[i], + strlen(cfg.dns_name[i]), + GNUTLS_FSAN_APPEND); else - ret = - gnutls_x509_crq_set_subject_alt_name - (crt, GNUTLS_SAN_DNSNAME, - cfg.dns_name[i], - strlen(cfg.dns_name[i]), - GNUTLS_FSAN_APPEND); + ret = gnutls_x509_crq_set_subject_alt_name( + crt, GNUTLS_SAN_DNSNAME, + cfg.dns_name[i], + strlen(cfg.dns_name[i]), + GNUTLS_FSAN_APPEND); if (ret < 0) break; @@ -2192,23 +2090,23 @@ void get_dns_name_set(int type, void *crt) do { if (counter == 0) { - p = read_str - ("Enter a dnsName of the subject of the certificate: "); + p = read_str( + "Enter a dnsName of the subject of the certificate: "); } else { - p = read_str - ("Enter an additional dnsName of the subject of the certificate: "); + p = read_str( + "Enter an additional dnsName of the subject of the certificate: "); } if (!p) return; if (type == TYPE_CRT) - ret = gnutls_x509_crt_set_subject_alt_name - (crt, GNUTLS_SAN_DNSNAME, p, strlen(p), - GNUTLS_FSAN_APPEND); + ret = gnutls_x509_crt_set_subject_alt_name( + crt, GNUTLS_SAN_DNSNAME, p, strlen(p), + GNUTLS_FSAN_APPEND); else - ret = gnutls_x509_crq_set_subject_alt_name - (crt, GNUTLS_SAN_DNSNAME, p, strlen(p), - GNUTLS_FSAN_APPEND); + ret = gnutls_x509_crq_set_subject_alt_name( + crt, GNUTLS_SAN_DNSNAME, p, strlen(p), + GNUTLS_FSAN_APPEND); counter++; } while (p); } @@ -2230,19 +2128,17 @@ static int set_krb5_principal(int type, void *crt) for (i = 0; cfg.krb5_principal[i] != NULL; i++) { if (type == TYPE_CRT) - ret = - gnutls_x509_crt_set_subject_alt_name - (crt, GNUTLS_SAN_OTHERNAME_KRB5PRINCIPAL, - cfg.krb5_principal[i], - strlen(cfg.krb5_principal[i]), - GNUTLS_FSAN_APPEND); + ret = gnutls_x509_crt_set_subject_alt_name( + crt, GNUTLS_SAN_OTHERNAME_KRB5PRINCIPAL, + cfg.krb5_principal[i], + strlen(cfg.krb5_principal[i]), + GNUTLS_FSAN_APPEND); else - ret = - gnutls_x509_crq_set_subject_alt_name - (crt, GNUTLS_SAN_OTHERNAME_KRB5PRINCIPAL, - cfg.krb5_principal[i], - strlen(cfg.krb5_principal[i]), - GNUTLS_FSAN_APPEND); + ret = gnutls_x509_crq_set_subject_alt_name( + crt, GNUTLS_SAN_OTHERNAME_KRB5PRINCIPAL, + cfg.krb5_principal[i], + strlen(cfg.krb5_principal[i]), + GNUTLS_FSAN_APPEND); if (ret < 0) break; @@ -2285,15 +2181,13 @@ static int set_othername(int type, void *crt) break; if (type == TYPE_CRT) - ret = - gnutls_x509_crt_set_subject_alt_othername - (crt, oid, - binname, binnamelen, GNUTLS_FSAN_APPEND); + ret = gnutls_x509_crt_set_subject_alt_othername( + crt, oid, binname, binnamelen, + GNUTLS_FSAN_APPEND); else - ret = - gnutls_x509_crq_set_subject_alt_othername - (crt, oid, - binname, binnamelen, GNUTLS_FSAN_APPEND); + ret = gnutls_x509_crq_set_subject_alt_othername( + crt, oid, binname, binnamelen, + GNUTLS_FSAN_APPEND); free(binname); binname = NULL; @@ -2331,21 +2225,17 @@ static int set_othername_utf8(int type, void *crt) } if (type == TYPE_CRT) - ret = - gnutls_x509_crt_set_subject_alt_othername - (crt, oid, - cfg.other_name_utf8[i + 1], - strlen(cfg.other_name_utf8[i + 1]), - GNUTLS_FSAN_APPEND | - GNUTLS_FSAN_ENCODE_UTF8_STRING); + ret = gnutls_x509_crt_set_subject_alt_othername( + crt, oid, cfg.other_name_utf8[i + 1], + strlen(cfg.other_name_utf8[i + 1]), + GNUTLS_FSAN_APPEND | + GNUTLS_FSAN_ENCODE_UTF8_STRING); else - ret = - gnutls_x509_crq_set_subject_alt_othername - (crt, oid, - cfg.other_name_utf8[i + 1], - strlen(cfg.other_name_utf8[i + 1]), - GNUTLS_FSAN_APPEND | - GNUTLS_FSAN_ENCODE_UTF8_STRING); + ret = gnutls_x509_crq_set_subject_alt_othername( + crt, oid, cfg.other_name_utf8[i + 1], + strlen(cfg.other_name_utf8[i + 1]), + GNUTLS_FSAN_APPEND | + GNUTLS_FSAN_ENCODE_UTF8_STRING); if (ret < 0) break; @@ -2381,21 +2271,17 @@ static int set_othername_octet(int type, void *crt) } if (type == TYPE_CRT) - ret = - gnutls_x509_crt_set_subject_alt_othername - (crt, oid, - cfg.other_name_octet[i + 1], - strlen(cfg.other_name_octet[i + 1]), - GNUTLS_FSAN_APPEND | - GNUTLS_FSAN_ENCODE_OCTET_STRING); + ret = gnutls_x509_crt_set_subject_alt_othername( + crt, oid, cfg.other_name_octet[i + 1], + strlen(cfg.other_name_octet[i + 1]), + GNUTLS_FSAN_APPEND | + GNUTLS_FSAN_ENCODE_OCTET_STRING); else - ret = - gnutls_x509_crq_set_subject_alt_othername - (crt, oid, - cfg.other_name_octet[i + 1], - strlen(cfg.other_name_octet[i + 1]), - GNUTLS_FSAN_APPEND | - GNUTLS_FSAN_ENCODE_OCTET_STRING); + ret = gnutls_x509_crq_set_subject_alt_othername( + crt, oid, cfg.other_name_octet[i + 1], + strlen(cfg.other_name_octet[i + 1]), + GNUTLS_FSAN_APPEND | + GNUTLS_FSAN_ENCODE_OCTET_STRING); if (ret < 0) break; @@ -2421,17 +2307,17 @@ static int set_xmpp_name(int type, void *crt) for (i = 0; cfg.xmpp_name[i] != NULL; i++) { if (type == TYPE_CRT) - ret = - gnutls_x509_crt_set_subject_alt_name - (crt, GNUTLS_SAN_OTHERNAME_XMPP, - cfg.xmpp_name[i], strlen(cfg.xmpp_name[i]), - GNUTLS_FSAN_APPEND); + ret = gnutls_x509_crt_set_subject_alt_name( + crt, GNUTLS_SAN_OTHERNAME_XMPP, + cfg.xmpp_name[i], + strlen(cfg.xmpp_name[i]), + GNUTLS_FSAN_APPEND); else - ret = - gnutls_x509_crq_set_subject_alt_name - (crt, GNUTLS_SAN_OTHERNAME_XMPP, - cfg.xmpp_name[i], strlen(cfg.xmpp_name[i]), - GNUTLS_FSAN_APPEND); + ret = gnutls_x509_crq_set_subject_alt_name( + crt, GNUTLS_SAN_OTHERNAME_XMPP, + cfg.xmpp_name[i], + strlen(cfg.xmpp_name[i]), + GNUTLS_FSAN_APPEND); if (ret < 0) break; @@ -2463,9 +2349,8 @@ void get_policy_set(gnutls_x509_crt_t crt) if (batch) { if (cfg.skip_certs >= 0) { - ret = - gnutls_x509_crt_set_inhibit_anypolicy(crt, - cfg.skip_certs); + ret = gnutls_x509_crt_set_inhibit_anypolicy( + crt, cfg.skip_certs); if (ret < 0) { fprintf(stderr, "error setting inhibit anypolicy: %s\n", @@ -2480,21 +2365,21 @@ void get_policy_set(gnutls_x509_crt_t crt) if (cfg.policy_txt[i] != NULL) { policy.qualifier[policy.qualifiers].type = - GNUTLS_X509_QUALIFIER_NOTICE; + GNUTLS_X509_QUALIFIER_NOTICE; policy.qualifier[policy.qualifiers].data = - cfg.policy_txt[i]; + cfg.policy_txt[i]; policy.qualifier[policy.qualifiers].size = - strlen(cfg.policy_txt[i]); + strlen(cfg.policy_txt[i]); policy.qualifiers++; } if (cfg.policy_url[i] != NULL) { policy.qualifier[policy.qualifiers].type = - GNUTLS_X509_QUALIFIER_URI; + GNUTLS_X509_QUALIFIER_URI; policy.qualifier[policy.qualifiers].data = - cfg.policy_url[i]; + cfg.policy_url[i]; policy.qualifier[policy.qualifiers].size = - strlen(cfg.policy_url[i]); + strlen(cfg.policy_url[i]); policy.qualifiers++; } @@ -2520,15 +2405,13 @@ void get_uri_set(int type, void *crt) for (i = 0; cfg.uri[i] != NULL; i++) { if (type == TYPE_CRT) - ret = - gnutls_x509_crt_set_subject_alt_name - (crt, GNUTLS_SAN_URI, cfg.uri[i], - strlen(cfg.uri[i]), GNUTLS_FSAN_APPEND); + ret = gnutls_x509_crt_set_subject_alt_name( + crt, GNUTLS_SAN_URI, cfg.uri[i], + strlen(cfg.uri[i]), GNUTLS_FSAN_APPEND); else - ret = - gnutls_x509_crq_set_subject_alt_name - (crt, GNUTLS_SAN_URI, cfg.uri[i], - strlen(cfg.uri[i]), GNUTLS_FSAN_APPEND); + ret = gnutls_x509_crq_set_subject_alt_name( + crt, GNUTLS_SAN_URI, cfg.uri[i], + strlen(cfg.uri[i]), GNUTLS_FSAN_APPEND); if (ret < 0) break; @@ -2539,28 +2422,27 @@ void get_uri_set(int type, void *crt) do { if (counter == 0) { - p = read_str - ("Enter a URI of the subject of the certificate: "); + p = read_str( + "Enter a URI of the subject of the certificate: "); } else { - p = read_str - ("Enter an additional URI of the subject of the certificate: "); + p = read_str( + "Enter an additional URI of the subject of the certificate: "); } if (!p) return; if (type == TYPE_CRT) - ret = gnutls_x509_crt_set_subject_alt_name - (crt, GNUTLS_SAN_URI, p, strlen(p), - GNUTLS_FSAN_APPEND); + ret = gnutls_x509_crt_set_subject_alt_name( + crt, GNUTLS_SAN_URI, p, strlen(p), + GNUTLS_FSAN_APPEND); else - ret = gnutls_x509_crq_set_subject_alt_name - (crt, GNUTLS_SAN_URI, p, strlen(p), - GNUTLS_FSAN_APPEND); + ret = gnutls_x509_crq_set_subject_alt_name( + crt, GNUTLS_SAN_URI, p, strlen(p), + GNUTLS_FSAN_APPEND); counter++; if (ret < 0) break; - } - while (p); + } while (p); } if (ret < 0) { @@ -2578,11 +2460,9 @@ int get_sign_status(int server) return cfg.signing_key; } else { if (server) - msg = - "Will the certificate be used for signing (DHE ciphersuites)? (Y/n): "; + msg = "Will the certificate be used for signing (DHE ciphersuites)? (Y/n): "; else - msg = - "Will the certificate be used for signing (required for TLS)? (Y/n): "; + msg = "Will the certificate be used for signing (required for TLS)? (Y/n): "; return read_yesno(msg, 1); } } @@ -2595,11 +2475,9 @@ int get_encrypt_status(int server) return cfg.encryption_key; } else { if (server) - msg = - "Will the certificate be used for encryption (RSA ciphersuites)? (Y/n): "; + msg = "Will the certificate be used for encryption (RSA ciphersuites)? (Y/n): "; else - msg = - "Will the certificate be used for encryption (not required for TLS)? (Y/n): "; + msg = "Will the certificate be used for encryption (not required for TLS)? (Y/n): "; return read_yesno(msg, 1); } } @@ -2609,10 +2487,9 @@ int get_cert_sign_status(void) if (batch) { return cfg.cert_sign_key; } else { - return - read_yesno - ("Will the certificate be used to sign other certificates? (Y/n): ", - 1); + return read_yesno( + "Will the certificate be used to sign other certificates? (Y/n): ", + 1); } } @@ -2621,9 +2498,9 @@ int get_crl_sign_status(void) if (batch) { return cfg.crl_sign_key; } else { - return - read_yesno - ("Will the certificate be used to sign CRLs? (y/N): ", 0); + return read_yesno( + "Will the certificate be used to sign CRLs? (y/N): ", + 0); } } @@ -2652,10 +2529,9 @@ int get_data_encipherment_status(void) if (batch) { return cfg.data_encipherment; } else { - return - read_yesno - ("Will the certificate be used for data encryption? (y/N): ", - 0); + return read_yesno( + "Will the certificate be used for data encryption? (y/N): ", + 0); } } @@ -2664,9 +2540,9 @@ int get_code_sign_status(void) if (batch) { return cfg.code_sign_key; } else { - return - read_yesno - ("Will the certificate be used to sign code? (y/N): ", 0); + return read_yesno( + "Will the certificate be used to sign code? (y/N): ", + 0); } } @@ -2675,10 +2551,9 @@ int get_ocsp_sign_status(void) if (batch) { return cfg.ocsp_sign_key; } else { - return - read_yesno - ("Will the certificate be used to sign OCSP requests? (y/N): ", - 0); + return read_yesno( + "Will the certificate be used to sign OCSP requests? (y/N): ", + 0); } } @@ -2687,10 +2562,9 @@ int get_time_stamp_status(void) if (batch) { return cfg.time_stamping_key; } else { - return - read_yesno - ("Will the certificate be used for time stamping? (y/N): ", - 0); + return read_yesno( + "Will the certificate be used for time stamping? (y/N): ", + 0); } } @@ -2699,10 +2573,9 @@ int get_email_protection_status(void) if (batch) { return cfg.email_protection_key; } else { - return - read_yesno - ("Will the certificate be used for email protection? (y/N): ", - 0); + return read_yesno( + "Will the certificate be used for email protection? (y/N): ", + 0); } } @@ -2711,10 +2584,9 @@ int get_ipsec_ike_status(void) if (batch) { return cfg.ipsec_ike_key; } else { - return - read_yesno - ("Will the certificate be used for IPsec IKE operations? (y/N): ", - 0); + return read_yesno( + "Will the certificate be used for IPsec IKE operations? (y/N): ", + 0); } } @@ -2734,11 +2606,9 @@ const char *get_proxy_policy(char **policy, size_t *policylen) ret = "1.3.6.1.5.5.7.21.1"; } else { do { - ret = - read_str - ("Enter the OID of the proxy policy language: "); - } - while (ret == NULL); + ret = read_str( + "Enter the OID of the proxy policy language: "); + } while (ret == NULL); } *policy = NULL; @@ -2762,11 +2632,9 @@ void get_country_crq_set(gnutls_x509_crq_t crq) if (batch) { if (!cfg.country) return; - ret = - gnutls_x509_crq_set_dn_by_oid(crq, - GNUTLS_OID_X520_COUNTRY_NAME, - 0, cfg.country, - strlen(cfg.country)); + ret = gnutls_x509_crq_set_dn_by_oid( + crq, GNUTLS_OID_X520_COUNTRY_NAME, 0, cfg.country, + strlen(cfg.country)); if (ret < 0) { fprintf(stderr, "set_dn: %s\n", gnutls_strerror(ret)); exit(1); @@ -2775,7 +2643,6 @@ void get_country_crq_set(gnutls_x509_crq_t crq) read_crq_set(crq, "Country name (2 chars): ", GNUTLS_OID_X520_COUNTRY_NAME); } - } void get_organization_crq_set(gnutls_x509_crq_t crq) @@ -2788,14 +2655,10 @@ void get_organization_crq_set(gnutls_x509_crq_t crq) return; for (i = 0; cfg.organization[i] != NULL; i++) { - ret = - gnutls_x509_crq_set_dn_by_oid(crq, - GNUTLS_OID_X520_ORGANIZATION_NAME, - 0, - cfg.organization[i], - strlen - (cfg.organization - [i])); + ret = gnutls_x509_crq_set_dn_by_oid( + crq, GNUTLS_OID_X520_ORGANIZATION_NAME, 0, + cfg.organization[i], + strlen(cfg.organization[i])); if (ret < 0) { fprintf(stderr, "set_dn: %s\n", gnutls_strerror(ret)); @@ -2806,7 +2669,6 @@ void get_organization_crq_set(gnutls_x509_crq_t crq) read_crq_set(crq, "Organization name: ", GNUTLS_OID_X520_ORGANIZATION_NAME); } - } void get_unit_crq_set(gnutls_x509_crq_t crq) @@ -2819,11 +2681,9 @@ void get_unit_crq_set(gnutls_x509_crq_t crq) return; for (i = 0; cfg.unit[i] != NULL; i++) { - ret = - gnutls_x509_crq_set_dn_by_oid(crq, - GNUTLS_OID_X520_ORGANIZATIONAL_UNIT_NAME, - 0, cfg.unit[i], - strlen(cfg.unit[i])); + ret = gnutls_x509_crq_set_dn_by_oid( + crq, GNUTLS_OID_X520_ORGANIZATIONAL_UNIT_NAME, + 0, cfg.unit[i], strlen(cfg.unit[i])); if (ret < 0) { fprintf(stderr, "set_dn: %s\n", gnutls_strerror(ret)); @@ -2834,7 +2694,6 @@ void get_unit_crq_set(gnutls_x509_crq_t crq) read_crq_set(crq, "Organizational unit name: ", GNUTLS_OID_X520_ORGANIZATIONAL_UNIT_NAME); } - } void get_state_crq_set(gnutls_x509_crq_t crq) @@ -2844,11 +2703,9 @@ void get_state_crq_set(gnutls_x509_crq_t crq) if (batch) { if (!cfg.state) return; - ret = - gnutls_x509_crq_set_dn_by_oid(crq, - GNUTLS_OID_X520_STATE_OR_PROVINCE_NAME, - 0, cfg.state, - strlen(cfg.state)); + ret = gnutls_x509_crq_set_dn_by_oid( + crq, GNUTLS_OID_X520_STATE_OR_PROVINCE_NAME, 0, + cfg.state, strlen(cfg.state)); if (ret < 0) { fprintf(stderr, "set_dn: %s\n", gnutls_strerror(ret)); exit(1); @@ -2857,7 +2714,6 @@ void get_state_crq_set(gnutls_x509_crq_t crq) read_crq_set(crq, "State or province name: ", GNUTLS_OID_X520_STATE_OR_PROVINCE_NAME); } - } void get_locality_crq_set(gnutls_x509_crq_t crq) @@ -2867,20 +2723,17 @@ void get_locality_crq_set(gnutls_x509_crq_t crq) if (batch) { if (!cfg.locality) return; - ret = - gnutls_x509_crq_set_dn_by_oid(crq, - GNUTLS_OID_X520_LOCALITY_NAME, - 0, cfg.locality, - strlen(cfg.locality)); + ret = gnutls_x509_crq_set_dn_by_oid( + crq, GNUTLS_OID_X520_LOCALITY_NAME, 0, cfg.locality, + strlen(cfg.locality)); if (ret < 0) { fprintf(stderr, "set_dn: %s\n", gnutls_strerror(ret)); exit(1); } } else { - read_crq_set(crq, "Locality name: ", - GNUTLS_OID_X520_LOCALITY_NAME); + read_crq_set(crq, + "Locality name: ", GNUTLS_OID_X520_LOCALITY_NAME); } - } void get_dn_crq_set(gnutls_x509_crq_t crq) @@ -2907,10 +2760,9 @@ void get_cn_crq_set(gnutls_x509_crq_t crq) if (batch) { if (!cfg.cn) return; - ret = - gnutls_x509_crq_set_dn_by_oid(crq, - GNUTLS_OID_X520_COMMON_NAME, - 0, cfg.cn, strlen(cfg.cn)); + ret = gnutls_x509_crq_set_dn_by_oid(crq, + GNUTLS_OID_X520_COMMON_NAME, + 0, cfg.cn, strlen(cfg.cn)); if (ret < 0) { fprintf(stderr, "set_dn: %s\n", gnutls_strerror(ret)); exit(1); @@ -2918,7 +2770,6 @@ void get_cn_crq_set(gnutls_x509_crq_t crq) } else { read_crq_set(crq, "Common name: ", GNUTLS_OID_X520_COMMON_NAME); } - } void get_uid_crq_set(gnutls_x509_crq_t crq) @@ -2928,9 +2779,8 @@ void get_uid_crq_set(gnutls_x509_crq_t crq) if (batch) { if (!cfg.uid) return; - ret = - gnutls_x509_crq_set_dn_by_oid(crq, GNUTLS_OID_LDAP_UID, - 0, cfg.uid, strlen(cfg.uid)); + ret = gnutls_x509_crq_set_dn_by_oid(crq, GNUTLS_OID_LDAP_UID, 0, + cfg.uid, strlen(cfg.uid)); if (ret < 0) { fprintf(stderr, "set_dn: %s\n", gnutls_strerror(ret)); exit(1); @@ -2938,7 +2788,6 @@ void get_uid_crq_set(gnutls_x509_crq_t crq) } else { read_crq_set(crq, "UID: ", GNUTLS_OID_LDAP_UID); } - } void get_oid_crq_set(gnutls_x509_crq_t crq) @@ -2955,13 +2804,9 @@ void get_oid_crq_set(gnutls_x509_crq_t crq) cfg.dn_oid[i]); exit(1); } - ret = - gnutls_x509_crq_set_dn_by_oid(crq, - cfg.dn_oid[i], 0, - cfg.dn_oid[i + - 1], - strlen(cfg.dn_oid[i + - 1])); + ret = gnutls_x509_crq_set_dn_by_oid( + crq, cfg.dn_oid[i], 0, cfg.dn_oid[i + 1], + strlen(cfg.dn_oid[i + 1])); if (ret < 0) { fprintf(stderr, "set_dn_oid: %s\n", @@ -2970,7 +2815,6 @@ void get_oid_crq_set(gnutls_x509_crq_t crq) } } } - } void get_tlsfeatures_set(int type, void *crt) @@ -3032,10 +2876,8 @@ void crq_extensions_set(gnutls_x509_crt_t crt, gnutls_x509_crq_t crq) return; for (i = 0; cfg.exts_to_honor[i]; ++i) { - ret = - gnutls_x509_crt_set_crq_extension_by_oid(crt, crq, - cfg.exts_to_honor - [i], 0); + ret = gnutls_x509_crt_set_crq_extension_by_oid( + crt, crq, cfg.exts_to_honor[i], 0); if (ret < 0) { fprintf(stderr, "setting extension failed: %s: %s\n", diff --git a/src/certtool-cfg.h b/src/certtool-cfg.h index 4886683e87..f28932754e 100644 --- a/src/certtool-cfg.h +++ b/src/certtool-cfg.h @@ -21,11 +21,11 @@ */ #ifndef GNUTLS_SRC_CERTTOOL_CFG_H -# define GNUTLS_SRC_CERTTOOL_CFG_H +#define GNUTLS_SRC_CERTTOOL_CFG_H -# include -# include -# include +#include +#include +#include void cfg_init(void); int template_parse(const char *template); @@ -35,7 +35,7 @@ void read_crt_set(gnutls_x509_crt_t crt, const char *input_str, void read_crq_set(gnutls_x509_crq_t crq, const char *input_str, const char *oid); int64_t read_int(const char *input_str); -int serial_decode(const char *input, gnutls_datum_t * output); +int serial_decode(const char *input, gnutls_datum_t *output); const char *read_str(const char *input_str); int read_yesno(const char *input_str, int def); @@ -107,4 +107,4 @@ const char *get_proxy_policy(char **policy, size_t *policylen); void crq_extensions_set(gnutls_x509_crt_t crt, gnutls_x509_crq_t crq); -#endif /* GNUTLS_SRC_CERTTOOL_CFG_H */ +#endif /* GNUTLS_SRC_CERTTOOL_CFG_H */ diff --git a/src/certtool-common.c b/src/certtool-common.c index 463b94477f..dda7efdc46 100644 --- a/src/certtool-common.c +++ b/src/certtool-common.c @@ -51,7 +51,7 @@ unsigned char *lbuffer = NULL; unsigned long lbuffer_size = 0; -static unsigned long file_size(FILE * fp) +static unsigned long file_size(FILE *fp) { unsigned long size; long cur = ftell(fp); @@ -107,7 +107,7 @@ FILE *safe_open_rw(const char *file, int privkey_op) return fh; } -gnutls_datum_t *load_secret_key(int mand, common_info_st * info) +gnutls_datum_t *load_secret_key(int mand, common_info_st *info) { static char raw_key[64]; size_t raw_key_size = sizeof(raw_key); @@ -141,7 +141,7 @@ gnutls_datum_t *load_secret_key(int mand, common_info_st * info) return &key; } -const char *get_password(common_info_st * cinfo, unsigned int *flags, +const char *get_password(common_info_st *cinfo, unsigned int *flags, int confirm) { const char *p; @@ -165,8 +165,7 @@ const char *get_password(common_info_st * cinfo, unsigned int *flags, return p; } -static gnutls_privkey_t _load_privkey(gnutls_datum_t * dat, - common_info_st * info) +static gnutls_privkey_t _load_privkey(gnutls_datum_t *dat, common_info_st *info) { int ret; gnutls_privkey_t key; @@ -179,15 +178,12 @@ static gnutls_privkey_t _load_privkey(gnutls_datum_t * dat, app_exit(1); } - ret = - gnutls_privkey_import_x509_raw(key, dat, info->incert_format, - NULL, 0); + ret = gnutls_privkey_import_x509_raw(key, dat, info->incert_format, + NULL, 0); if (ret == GNUTLS_E_DECRYPTION_FAILED) { pass = get_password(info, &flags, 0); - ret = - gnutls_privkey_import_x509_raw(key, dat, - info->incert_format, - pass, flags); + ret = gnutls_privkey_import_x509_raw( + key, dat, info->incert_format, pass, flags); } if (ret == GNUTLS_E_BASE64_UNEXPECTED_HEADER_ERROR) { @@ -220,8 +216,8 @@ static gnutls_privkey_t _load_url_privkey(const char *url) ret = gnutls_privkey_import_url(key, url, 0); if (ret < 0) { - fprintf(stderr, "error importing key at %s: %s\n", - url, gnutls_strerror(ret)); + fprintf(stderr, "error importing key at %s: %s\n", url, + gnutls_strerror(ret)); app_exit(1); } @@ -243,8 +239,8 @@ static gnutls_pubkey_t _load_url_pubkey(const char *url) ret = gnutls_pubkey_import_url(pubkey, url, obj_flags); if (ret < 0) { - fprintf(stderr, "Error in %s:%d: %s: %s\n", __func__, - __LINE__, gnutls_strerror(ret), url); + fprintf(stderr, "Error in %s:%d: %s: %s\n", __func__, __LINE__, + gnutls_strerror(ret), url); app_exit(1); } @@ -254,7 +250,7 @@ static gnutls_pubkey_t _load_url_pubkey(const char *url) /* Load the private key. * @mand should be non zero if it is required to read a private key. */ -gnutls_privkey_t load_private_key(int mand, common_info_st * info) +gnutls_privkey_t load_private_key(int mand, common_info_st *info) { gnutls_privkey_t key; gnutls_datum_t dat; @@ -290,7 +286,7 @@ gnutls_privkey_t load_private_key(int mand, common_info_st * info) /* Load the private key. * @mand should be non zero if it is required to read a private key. */ -gnutls_x509_privkey_t load_x509_private_key(int mand, common_info_st * info) +gnutls_x509_privkey_t load_x509_private_key(int mand, common_info_st *info) { gnutls_x509_privkey_t key; int ret; @@ -324,20 +320,15 @@ gnutls_x509_privkey_t load_x509_private_key(int mand, common_info_st * info) if (info->pkcs8) { pass = get_password(info, &flags, 0); - ret = - gnutls_x509_privkey_import_pkcs8(key, &dat, - info->incert_format, - pass, flags); + ret = gnutls_x509_privkey_import_pkcs8( + key, &dat, info->incert_format, pass, flags); } else { - ret = - gnutls_x509_privkey_import2(key, &dat, - info->incert_format, NULL, 0); + ret = gnutls_x509_privkey_import2(key, &dat, + info->incert_format, NULL, 0); if (ret == GNUTLS_E_DECRYPTION_FAILED) { pass = get_password(info, &flags, 0); - ret = - gnutls_x509_privkey_import2(key, &dat, - info->incert_format, - pass, flags); + ret = gnutls_x509_privkey_import2( + key, &dat, info->incert_format, pass, flags); } } @@ -363,7 +354,7 @@ gnutls_x509_privkey_t load_x509_private_key(int mand, common_info_st * info) * If mand is non zero then a certificate is mandatory. Otherwise * null will be returned if the certificate loading fails. */ -gnutls_x509_crt_t load_cert(int mand, common_info_st * info) +gnutls_x509_crt_t load_cert(int mand, common_info_st *info) { gnutls_x509_crt_t *crt; gnutls_x509_crt_t ret_crt; @@ -384,7 +375,7 @@ gnutls_x509_crt_t load_cert(int mand, common_info_st * info) /* Loads a certificate list */ gnutls_x509_crt_t *load_cert_list(int mand, size_t *crt_size, - common_info_st * info) + common_info_st *info) { FILE *fp; static gnutls_x509_crt_t *crt; @@ -425,9 +416,8 @@ gnutls_x509_crt_t *load_cert_list(int mand, size_t *crt_size, if (info->sort_chain) flags |= GNUTLS_X509_CRT_LIST_SORT; - ret = - gnutls_x509_crt_list_import2(&crt, &crt_max, &dat, - GNUTLS_X509_FMT_PEM, flags); + ret = gnutls_x509_crt_list_import2(&crt, &crt_max, &dat, + GNUTLS_X509_FMT_PEM, flags); if (ret < 0) { fprintf(stderr, "Error loading certificates: %s\n", gnutls_strerror(ret)); @@ -445,7 +435,7 @@ gnutls_x509_crt_t *load_cert_list(int mand, size_t *crt_size, /* Loads a CRL list */ gnutls_x509_crl_t *load_crl_list(int mand, size_t *crl_size, - common_info_st * info) + common_info_st *info) { FILE *fp; static gnutls_x509_crl_t *crl; @@ -482,13 +472,11 @@ gnutls_x509_crl_t *load_crl_list(int mand, size_t *crl_size, dat.data = (void *)lbuffer; dat.size = size; - ret = - gnutls_x509_crl_list_import2(&crl, &crl_max, &dat, - GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_x509_crl_list_import2(&crl, &crl_max, &dat, + GNUTLS_X509_FMT_PEM, 0); if (ret == GNUTLS_E_BASE64_DECODING_ERROR) { - ret = - gnutls_x509_crl_list_import2(&crl, &crl_max, &dat, - GNUTLS_X509_FMT_DER, 0); + ret = gnutls_x509_crl_list_import2(&crl, &crl_max, &dat, + GNUTLS_X509_FMT_DER, 0); } if (ret < 0) { fprintf(stderr, "Error loading CRLs: %s\n", @@ -506,7 +494,7 @@ gnutls_x509_crl_t *load_crl_list(int mand, size_t *crl_size, /* Load the Certificate Request. */ -gnutls_x509_crq_t load_request(common_info_st * info) +gnutls_x509_crq_t load_request(common_info_st *info) { gnutls_x509_crq_t crq; int ret; @@ -549,7 +537,7 @@ gnutls_x509_crq_t load_request(common_info_st * info) /* Load the CA's private key. */ -gnutls_privkey_t load_ca_private_key(common_info_st * info) +gnutls_privkey_t load_ca_private_key(common_info_st *info) { gnutls_privkey_t key; gnutls_datum_t dat; @@ -581,7 +569,7 @@ gnutls_privkey_t load_ca_private_key(common_info_st * info) /* Loads the CA's certificate */ -gnutls_x509_crt_t load_ca_cert(unsigned mand, common_info_st * info) +gnutls_x509_crt_t load_ca_cert(unsigned mand, common_info_st *info) { gnutls_x509_crt_t crt; int ret; @@ -638,7 +626,7 @@ gnutls_x509_crt_t load_ca_cert(unsigned mand, common_info_st * info) /* Load a public key. * @mand should be non zero if it is required to read a public key. */ -gnutls_pubkey_t load_pubkey(int mand, common_info_st * info) +gnutls_pubkey_t load_pubkey(int mand, common_info_st *info) { gnutls_pubkey_t key; int ret; @@ -673,9 +661,8 @@ gnutls_pubkey_t load_pubkey(int mand, common_info_st * info) ret = gnutls_pubkey_import(key, &dat, info->incert_format); if (ret == GNUTLS_E_BASE64_UNEXPECTED_HEADER_ERROR) { - ret = - gnutls_pubkey_import_x509_raw(key, &dat, - info->incert_format, 0); + ret = gnutls_pubkey_import_x509_raw(key, &dat, + info->incert_format, 0); if (ret < 0) { fprintf(stderr, "import error: could not find a valid PEM header; " @@ -683,8 +670,8 @@ gnutls_pubkey_t load_pubkey(int mand, common_info_st * info) app_exit(1); } } else if (ret < 0) { - fprintf(stderr, "importing public key: %s: %s\n", - info->pubkey, gnutls_strerror(ret)); + fprintf(stderr, "importing public key: %s: %s\n", info->pubkey, + gnutls_strerror(ret)); app_exit(1); } @@ -692,9 +679,8 @@ gnutls_pubkey_t load_pubkey(int mand, common_info_st * info) return key; } -gnutls_pubkey_t load_public_key_or_import(int mand, - gnutls_privkey_t privkey, - common_info_st * info) +gnutls_pubkey_t load_public_key_or_import(int mand, gnutls_privkey_t privkey, + common_info_st *info) { gnutls_pubkey_t pubkey; int ret; @@ -706,7 +692,8 @@ gnutls_pubkey_t load_public_key_or_import(int mand, app_exit(1); } - if (!privkey || gnutls_pubkey_import_privkey(pubkey, privkey, 0, 0) < 0) { /* could not get (e.g. on PKCS #11) */ + if (!privkey || gnutls_pubkey_import_privkey(pubkey, privkey, 0, 0) < + 0) { /* could not get (e.g. on PKCS #11) */ gnutls_pubkey_deinit(pubkey); pubkey = load_pubkey(0, info); if (pubkey == NULL && mand) { @@ -729,17 +716,16 @@ static const char *bits_to_sp(gnutls_pk_algorithm_t pk, unsigned int bits) return gnutls_sec_param_get_name(s); } -int -get_bits(gnutls_pk_algorithm_t key_type, int info_bits, - const char *info_sec_param, int warn) +int get_bits(gnutls_pk_algorithm_t key_type, int info_bits, + const char *info_sec_param, int warn) { int bits; if (info_bits != 0) { static int warned = 0; - if (warned == 0 && warn != 0 - && GNUTLS_BITS_ARE_CURVE(info_bits) == 0) { + if (warned == 0 && warn != 0 && + GNUTLS_BITS_ARE_CURVE(info_bits) == 0) { warned = 1; fprintf(stderr, "** Note: You may use '--sec-param %s' instead of '--bits %d'\n", @@ -751,10 +737,8 @@ get_bits(gnutls_pk_algorithm_t key_type, int info_bits, /* For ECDSA keys use 256 bits or better, as they are widely supported */ info_sec_param = "HIGH"; } - bits = - gnutls_sec_param_to_pk_bits(key_type, - str_to_sec_param - (info_sec_param)); + bits = gnutls_sec_param_to_pk_bits( + key_type, str_to_sec_param(info_sec_param)); } return bits; @@ -766,8 +750,8 @@ gnutls_sec_param_t str_to_sec_param(const char *str) return GNUTLS_SEC_PARAM_LOW; } else if (strcasecmp(str, "legacy") == 0) { return GNUTLS_SEC_PARAM_LEGACY; - } else if (strcasecmp(str, "normal") == 0 - || strcasecmp(str, "medium") == 0) { + } else if (strcasecmp(str, "normal") == 0 || + strcasecmp(str, "medium") == 0) { return GNUTLS_SEC_PARAM_MEDIUM; } else if (strcasecmp(str, "high") == 0) { return GNUTLS_SEC_PARAM_HIGH; @@ -779,11 +763,10 @@ gnutls_sec_param_t str_to_sec_param(const char *str) fprintf(stderr, "Unknown security parameter string: %s\n", str); app_exit(1); } - } #define SPACE "\t" -static void print_hex_datum(FILE * outfile, gnutls_datum_t * dat, int cprint) +static void print_hex_datum(FILE *outfile, gnutls_datum_t *dat, int cprint) { unsigned int j; @@ -813,7 +796,7 @@ static void print_hex_datum(FILE * outfile, gnutls_datum_t * dat, int cprint) fprintf(outfile, "\n\n"); } -static void print_head(FILE * out, const char *txt, unsigned int size, +static void print_head(FILE *out, const char *txt, unsigned int size, int cprint) { unsigned i; @@ -822,8 +805,9 @@ static void print_head(FILE * out, const char *txt, unsigned int size, if (cprint != 0) { if (size > 0) - ret = asprintf(&ntxt, "const unsigned char %s[%u] =", - txt, size); + ret = asprintf(&ntxt, + "const unsigned char %s[%u] =", txt, + size); else ret = asprintf(&ntxt, "const unsigned char %s[] =\n", txt); @@ -848,10 +832,9 @@ static void print_head(FILE * out, const char *txt, unsigned int size, fprintf(out, "%s:", txt); } -void -print_dsa_pkey(FILE * outfile, gnutls_datum_t * x, gnutls_datum_t * y, - gnutls_datum_t * p, gnutls_datum_t * q, gnutls_datum_t * g, - int cprint) +void print_dsa_pkey(FILE *outfile, gnutls_datum_t *x, gnutls_datum_t *y, + gnutls_datum_t *p, gnutls_datum_t *q, gnutls_datum_t *g, + int cprint) { if (x) { print_head(outfile, "private key", x->size, cprint); @@ -893,10 +876,8 @@ gnutls_ecc_curve_t str_to_curve(const char *str) app_exit(1); } -void -print_ecc_pkey(FILE * outfile, gnutls_ecc_curve_t curve, - gnutls_datum_t * k, gnutls_datum_t * x, gnutls_datum_t * y, - int cprint) +void print_ecc_pkey(FILE *outfile, gnutls_ecc_curve_t curve, gnutls_datum_t *k, + gnutls_datum_t *x, gnutls_datum_t *y, int cprint) { if (cprint != 0) fprintf(outfile, "/* curve: %s */\n", @@ -921,7 +902,7 @@ print_ecc_pkey(FILE * outfile, gnutls_ecc_curve_t curve, } } -static void reverse_datum(gnutls_datum_t * d) +static void reverse_datum(gnutls_datum_t *d) { unsigned int i; unsigned char c; @@ -933,11 +914,10 @@ static void reverse_datum(gnutls_datum_t * d) } } -void -print_gost_pkey(FILE * outfile, gnutls_ecc_curve_t curve, - gnutls_digest_algorithm_t digest, - gnutls_gost_paramset_t paramset, gnutls_datum_t * k, - gnutls_datum_t * x, gnutls_datum_t * y, int cprint) +void print_gost_pkey(FILE *outfile, gnutls_ecc_curve_t curve, + gnutls_digest_algorithm_t digest, + gnutls_gost_paramset_t paramset, gnutls_datum_t *k, + gnutls_datum_t *x, gnutls_datum_t *y, int cprint) { if (cprint != 0) fprintf(outfile, "/* curve: %s */\n", @@ -973,11 +953,10 @@ print_gost_pkey(FILE * outfile, gnutls_ecc_curve_t curve, print_hex_datum(outfile, y, cprint); } -void -print_rsa_pkey(FILE * outfile, gnutls_datum_t * m, gnutls_datum_t * e, - gnutls_datum_t * d, gnutls_datum_t * p, gnutls_datum_t * q, - gnutls_datum_t * u, gnutls_datum_t * exp1, - gnutls_datum_t * exp2, int cprint) +void print_rsa_pkey(FILE *outfile, gnutls_datum_t *m, gnutls_datum_t *e, + gnutls_datum_t *d, gnutls_datum_t *p, gnutls_datum_t *q, + gnutls_datum_t *u, gnutls_datum_t *exp1, + gnutls_datum_t *exp2, int cprint) { print_head(outfile, "modulus", m->size, cprint); print_hex_datum(outfile, m, cprint); @@ -1001,8 +980,7 @@ print_rsa_pkey(FILE * outfile, gnutls_datum_t * m, gnutls_datum_t * e, } } -void print_pubkey_info(gnutls_pubkey_t pubkey, - FILE * outfile, +void print_pubkey_info(gnutls_pubkey_t pubkey, FILE *outfile, gnutls_certificate_print_formats_t format, gnutls_x509_crt_fmt_t outcert_format, unsigned int outtext) @@ -1035,9 +1013,8 @@ void print_pubkey_info(gnutls_pubkey_t pubkey, fwrite(lbuffer, 1, size, outfile); } -static void -print_dh_info(FILE * outfile, gnutls_datum_t * p, gnutls_datum_t * g, - unsigned int q_bits, int cprint) +static void print_dh_info(FILE *outfile, gnutls_datum_t *p, gnutls_datum_t *g, + unsigned int q_bits, int cprint) { if (q_bits > 0) { if (cprint != 0) @@ -1055,12 +1032,10 @@ print_dh_info(FILE * outfile, gnutls_datum_t * p, gnutls_datum_t * g, print_head(outfile, "prime", p->size, cprint); print_hex_datum(outfile, p, cprint); - } -static -int import_dsa_dh(gnutls_dh_params_t dh_params, gnutls_datum_t * params, - gnutls_x509_crt_fmt_t format) +static int import_dsa_dh(gnutls_dh_params_t dh_params, gnutls_datum_t *params, + gnutls_x509_crt_fmt_t format) { gnutls_x509_privkey_t pkey; int ret; @@ -1080,7 +1055,7 @@ int import_dsa_dh(gnutls_dh_params_t dh_params, gnutls_datum_t * params, return ret; } -void dh_info(FILE * infile, FILE * outfile, common_info_st * ci) +void dh_info(FILE *infile, FILE *outfile, common_info_st *ci) { gnutls_datum_t params; size_t size; @@ -1104,9 +1079,8 @@ void dh_info(FILE * infile, FILE * outfile, common_info_st * ci) app_exit(1); } - ret = - gnutls_dh_params_import_pkcs3(dh_params, ¶ms, - ci->incert_format); + ret = gnutls_dh_params_import_pkcs3(dh_params, ¶ms, + ci->incert_format); if (ret < 0) { /* Try DSA */ ret2 = import_dsa_dh(dh_params, ¶ms, ci->incert_format); @@ -1127,13 +1101,11 @@ void dh_info(FILE * infile, FILE * outfile, common_info_st * ci) if (ci->outtext) print_dh_info(outfile, &p, &g, q_bits, ci->cprint); - if (!ci->cprint) { /* generate a PKCS#3 structure */ + if (!ci->cprint) { /* generate a PKCS#3 structure */ size_t len = lbuffer_size; - ret = - gnutls_dh_params_export_pkcs3(dh_params, - ci->outcert_format, - lbuffer, &len); + ret = gnutls_dh_params_export_pkcs3( + dh_params, ci->outcert_format, lbuffer, &len); if (ret == 0) { if (ci->outcert_format == GNUTLS_X509_FMT_PEM) { @@ -1187,7 +1159,7 @@ int cipher_to_flags(const char *cipher) app_exit(1); } -static void privkey_info_int(FILE * outfile, common_info_st * cinfo, +static void privkey_info_int(FILE *outfile, common_info_st *cinfo, gnutls_x509_privkey_t key) { int ret, key_type; @@ -1225,8 +1197,8 @@ static void privkey_info_int(FILE * outfile, common_info_st * cinfo, goto spki_skip; } - ret = - gnutls_x509_spki_get_rsa_pss_params(spki, &dig, &salt_size); + ret = gnutls_x509_spki_get_rsa_pss_params(spki, &dig, + &salt_size); if (ret < 0) { fprintf(stderr, "spki_get_rsa_pss_params: %s\n", gnutls_strerror(ret)); @@ -1237,28 +1209,25 @@ static void privkey_info_int(FILE * outfile, common_info_st * cinfo, } } - spki_skip: +spki_skip: gnutls_x509_spki_deinit(spki); fprintf(outfile, "\tKey Security Level: %s (%u bits)\n\n", - gnutls_sec_param_get_name(gnutls_x509_privkey_sec_param - (key)), bits); + gnutls_sec_param_get_name(gnutls_x509_privkey_sec_param(key)), + bits); /* Print the raw public and private keys */ if (GNUTLS_PK_IS_RSA(key_type)) { gnutls_datum_t m, e, d, p, q, u, exp1, exp2; - ret = - gnutls_x509_privkey_export_rsa_raw2(key, &m, &e, &d, - &p, &q, &u, &exp1, - &exp2); + ret = gnutls_x509_privkey_export_rsa_raw2(key, &m, &e, &d, &p, + &q, &u, &exp1, &exp2); if (ret < 0) - fprintf(stderr, - "Error in key RSA data export: %s\n", + fprintf(stderr, "Error in key RSA data export: %s\n", gnutls_strerror(ret)); else { - print_rsa_pkey(outfile, &m, &e, &d, &p, &q, &u, - &exp1, &exp2, cinfo->cprint); + print_rsa_pkey(outfile, &m, &e, &d, &p, &q, &u, &exp1, + &exp2, cinfo->cprint); gnutls_free(m.data); gnutls_free(e.data); @@ -1272,11 +1241,10 @@ static void privkey_info_int(FILE * outfile, common_info_st * cinfo, } else if (key_type == GNUTLS_PK_DSA) { gnutls_datum_t p, q, g, y, x; - ret = - gnutls_x509_privkey_export_dsa_raw(key, &p, &q, &g, &y, &x); + ret = gnutls_x509_privkey_export_dsa_raw(key, &p, &q, &g, &y, + &x); if (ret < 0) - fprintf(stderr, - "Error in key DSA data export: %s\n", + fprintf(stderr, "Error in key DSA data export: %s\n", gnutls_strerror(ret)); else { print_dsa_pkey(outfile, &x, &y, &p, &q, &g, @@ -1296,11 +1264,10 @@ static void privkey_info_int(FILE * outfile, common_info_st * cinfo, gnutls_datum_t y, x, k; gnutls_ecc_curve_t curve; - ret = - gnutls_x509_privkey_export_ecc_raw(key, &curve, &x, &y, &k); + ret = gnutls_x509_privkey_export_ecc_raw(key, &curve, &x, &y, + &k); if (ret < 0) - fprintf(stderr, - "Error in key ECC data export: %s\n", + fprintf(stderr, "Error in key ECC data export: %s\n", gnutls_strerror(ret)); else { print_ecc_pkey(outfile, curve, &k, &x, &y, @@ -1318,17 +1285,14 @@ static void privkey_info_int(FILE * outfile, common_info_st * cinfo, gnutls_digest_algorithm_t digest; gnutls_gost_paramset_t paramset; - ret = - gnutls_x509_privkey_export_gost_raw(key, &curve, - &digest, - ¶mset, &x, &y, &k); + ret = gnutls_x509_privkey_export_gost_raw( + key, &curve, &digest, ¶mset, &x, &y, &k); if (ret < 0) - fprintf(stderr, - "Error in key GOST data export: %s\n", + fprintf(stderr, "Error in key GOST data export: %s\n", gnutls_strerror(ret)); else { - print_gost_pkey(outfile, curve, digest, paramset, - &k, &x, &y, cinfo->cprint); + print_gost_pkey(outfile, curve, digest, paramset, &k, + &x, &y, cinfo->cprint); gnutls_free(x.data); gnutls_free(y.data); @@ -1347,9 +1311,8 @@ static void privkey_info_int(FILE * outfile, common_info_st * cinfo, fprintf(outfile, "\n"); size = lbuffer_size; - ret = - gnutls_x509_privkey_get_key_id(key, GNUTLS_KEYID_USE_SHA256, - lbuffer, &size); + ret = gnutls_x509_privkey_get_key_id(key, GNUTLS_KEYID_USE_SHA256, + lbuffer, &size); if (ret < 0) { fprintf(stderr, "Error in key id calculation: %s\n", gnutls_strerror(ret)); @@ -1361,21 +1324,18 @@ static void privkey_info_int(FILE * outfile, common_info_st * cinfo, raw_to_hex(lbuffer, size)); size = lbuffer_size; - ret = - gnutls_x509_privkey_get_key_id(key, GNUTLS_KEYID_USE_SHA1, - lbuffer, &size); + ret = gnutls_x509_privkey_get_key_id(key, GNUTLS_KEYID_USE_SHA1, + lbuffer, &size); if (ret >= 0) { fprintf(outfile, "\tsha1:%s\n", raw_to_hex(lbuffer, size)); } } fprintf(outfile, "\n"); - } -void -print_private_key(FILE * outfile, common_info_st * cinfo, - gnutls_x509_privkey_t key) +void print_private_key(FILE *outfile, common_info_st *cinfo, + gnutls_x509_privkey_t key) { int ret; size_t size; @@ -1389,7 +1349,6 @@ print_private_key(FILE * outfile, common_info_st * cinfo, gnutls_x509_privkey_get_pk_algorithm(key)); if (!cinfo->pkcs8) { - if (cinfo->outtext) privkey_info_int(outfile, cinfo, key); @@ -1412,10 +1371,10 @@ print_private_key(FILE * outfile, common_info_st * cinfo, privkey_info_int(outfile, cinfo, key); size = lbuffer_size; - ret = - gnutls_x509_privkey_export_pkcs8(key, cinfo->outcert_format, - pass, flags, lbuffer, - &size); + ret = gnutls_x509_privkey_export_pkcs8(key, + cinfo->outcert_format, + pass, flags, lbuffer, + &size); if (ret < 0) { fprintf(stderr, "privkey_export_pkcs8: %s\n", gnutls_strerror(ret)); @@ -1428,7 +1387,7 @@ print_private_key(FILE * outfile, common_info_st * cinfo, /* If how is zero then the included parameters are used. */ -int generate_prime(FILE * outfile, int how, common_info_st * info) +int generate_prime(FILE *outfile, int how, common_info_st *info) { int ret; gnutls_dh_params_t dh_params; @@ -1453,8 +1412,7 @@ int generate_prime(FILE * outfile, int how, common_info_st * info) ret = gnutls_x509_privkey_init(&pkey); if (ret < 0) { - fprintf(stderr, - "Error initializing key: %s\n", + fprintf(stderr, "Error initializing key: %s\n", gnutls_strerror(ret)); app_exit(1); } @@ -1473,18 +1431,13 @@ int generate_prime(FILE * outfile, int how, common_info_st * info) data.data = (void *)info->seed; data.size = info->seed_size; - ret = - gnutls_x509_privkey_generate2(pkey, - GNUTLS_PK_DSA, - bits, - GNUTLS_PRIVKEY_FLAG_PROVABLE, - &data, 1); + ret = gnutls_x509_privkey_generate2( + pkey, GNUTLS_PK_DSA, bits, + GNUTLS_PRIVKEY_FLAG_PROVABLE, &data, 1); } else { - ret = - gnutls_x509_privkey_generate(pkey, - GNUTLS_PK_DSA, - bits, - GNUTLS_PRIVKEY_FLAG_PROVABLE); + ret = gnutls_x509_privkey_generate( + pkey, GNUTLS_PK_DSA, bits, + GNUTLS_PRIVKEY_FLAG_PROVABLE); } if (ret < 0) { @@ -1591,13 +1544,11 @@ int generate_prime(FILE * outfile, int how, common_info_st * info) if (info->outtext) print_dh_info(outfile, &p, &g, q_bits, info->cprint); - if (!info->cprint) { /* generate a PKCS#3 structure */ + if (!info->cprint) { /* generate a PKCS#3 structure */ size_t len = lbuffer_size; - ret = - gnutls_dh_params_export_pkcs3(dh_params, - info->outcert_format, - lbuffer, &len); + ret = gnutls_dh_params_export_pkcs3( + dh_params, info->outcert_format, lbuffer, &len); if (ret == 0) { if (info->outcert_format == GNUTLS_X509_FMT_PEM) @@ -1608,7 +1559,6 @@ int generate_prime(FILE * outfile, int how, common_info_st * info) } else { fprintf(stderr, "Error: %s\n", gnutls_strerror(ret)); } - } if (how != 0) { @@ -1621,7 +1571,7 @@ int generate_prime(FILE * outfile, int how, common_info_st * info) return 0; } -void decode_seed(gnutls_datum_t * seed, const char *hex, unsigned hex_size) +void decode_seed(gnutls_datum_t *seed, const char *hex, unsigned hex_size) { int ret; size_t seed_size; @@ -1652,8 +1602,8 @@ gnutls_pk_algorithm_t figure_key_type(const char *key_type) return GNUTLS_PK_RSA; else if (strcasecmp(key_type, "rsa-pss") == 0) return GNUTLS_PK_RSA_PSS; - else if (strcasecmp(key_type, "ed25519") == 0 - || strcasecmp(key_type, "eddsa") == 0) + else if (strcasecmp(key_type, "ed25519") == 0 || + strcasecmp(key_type, "eddsa") == 0) return GNUTLS_PK_EDDSA_ED25519; else if (strcasecmp(key_type, "ed448") == 0) return GNUTLS_PK_EDDSA_ED448; @@ -1663,8 +1613,8 @@ gnutls_pk_algorithm_t figure_key_type(const char *key_type) return GNUTLS_PK_ECDH_X448; else if (strcasecmp(key_type, "dsa") == 0) return GNUTLS_PK_DSA; - else if (strcasecmp(key_type, "ecdsa") == 0 - || strcasecmp(key_type, "ecc") == 0) + else if (strcasecmp(key_type, "ecdsa") == 0 || + strcasecmp(key_type, "ecc") == 0) return GNUTLS_PK_ECDSA; else if (strcasecmp(key_type, "gost01") == 0) return GNUTLS_PK_GOST_01; @@ -1709,7 +1659,7 @@ gnutls_digest_algorithm_t hash_to_id(const char *hash) } } -void sign_params_to_flags(common_info_st * cinfo, const char *params) +void sign_params_to_flags(common_info_st *cinfo, const char *params) { char *p, *sp; diff --git a/src/certtool-common.h b/src/certtool-common.h index 071ddd4fbe..5607f4c4d2 100644 --- a/src/certtool-common.h +++ b/src/certtool-common.h @@ -20,22 +20,22 @@ */ #ifndef GNUTLS_SRC_CERTTOOL_COMMON_H -# define GNUTLS_SRC_CERTTOOL_COMMON_H +#define GNUTLS_SRC_CERTTOOL_COMMON_H -# include -# include -# include -# include "attribute.h" +#include +#include +#include +#include "attribute.h" -# define TYPE_CRT 1 -# define TYPE_CRQ 2 +#define TYPE_CRT 1 +#define TYPE_CRQ 2 -# define SERIAL_MAX_BYTES 20 +#define SERIAL_MAX_BYTES 20 void certtool_version(void); -# include -# include +#include +#include typedef struct common_info { const char *secret_key; @@ -85,20 +85,20 @@ typedef struct common_info { gnutls_sec_param_t verification_profile; } common_info_st; -static inline - void switch_to_pkcs8_when_needed(common_info_st * cinfo, - gnutls_x509_privkey_t key, - unsigned key_type) +static inline void switch_to_pkcs8_when_needed(common_info_st *cinfo, + gnutls_x509_privkey_t key, + unsigned key_type) { if (cinfo->pkcs8) return; - if (key_type == GNUTLS_PK_RSA_PSS || key_type == GNUTLS_PK_EDDSA_ED25519 - || key_type == GNUTLS_PK_EDDSA_ED448 - || key_type == GNUTLS_PK_ECDH_X25519 - || key_type == GNUTLS_PK_ECDH_X448 || key_type == GNUTLS_PK_GOST_01 - || key_type == GNUTLS_PK_GOST_12_256 - || key_type == GNUTLS_PK_GOST_12_512) { + if (key_type == GNUTLS_PK_RSA_PSS || + key_type == GNUTLS_PK_EDDSA_ED25519 || + key_type == GNUTLS_PK_EDDSA_ED448 || + key_type == GNUTLS_PK_ECDH_X25519 || + key_type == GNUTLS_PK_ECDH_X448 || key_type == GNUTLS_PK_GOST_01 || + key_type == GNUTLS_PK_GOST_12_256 || + key_type == GNUTLS_PK_GOST_12_512) { if (cinfo->verbose) fprintf(stderr, "Assuming --pkcs8 is given; %s private keys can only be exported in PKCS#8 format\n", @@ -123,30 +123,28 @@ static inline const char *get_pass(void); const char *get_confirmed_pass(bool empty_ok); void app_exit(int val) -# ifdef __GNUC__ - __attribute__((__noreturn__)) -# endif - ; +#ifdef __GNUC__ + __attribute__((__noreturn__)) +#endif + ; int cipher_to_flags(const char *cipher); -void -print_private_key(FILE * outfile, common_info_st * cinfo, - gnutls_x509_privkey_t key); +void print_private_key(FILE *outfile, common_info_st *cinfo, + gnutls_x509_privkey_t key); gnutls_pubkey_t load_public_key_or_import(int mand, gnutls_privkey_t privkey, - common_info_st * info); -gnutls_privkey_t load_private_key(int mand, common_info_st * info); -gnutls_x509_privkey_t load_x509_private_key(int mand, common_info_st * info); + common_info_st *info); +gnutls_privkey_t load_private_key(int mand, common_info_st *info); +gnutls_x509_privkey_t load_x509_private_key(int mand, common_info_st *info); gnutls_x509_privkey_t *load_privkey_list(int mand, size_t *privkey_size, - common_info_st * info); -gnutls_x509_crq_t load_request(common_info_st * info); -gnutls_privkey_t load_ca_private_key(common_info_st * info); -gnutls_x509_crt_t load_ca_cert(unsigned mand, common_info_st * info); -gnutls_x509_crt_t load_cert(int mand, common_info_st * info); -gnutls_datum_t *load_secret_key(int mand, common_info_st * info); -gnutls_pubkey_t load_pubkey(int mand, common_info_st * info); -gnutls_x509_crt_t *load_cert_list(int mand, size_t *size, - common_info_st * info); -gnutls_x509_crl_t *load_crl_list(int mand, size_t *size, common_info_st * info); + common_info_st *info); +gnutls_x509_crq_t load_request(common_info_st *info); +gnutls_privkey_t load_ca_private_key(common_info_st *info); +gnutls_x509_crt_t load_ca_cert(unsigned mand, common_info_st *info); +gnutls_x509_crt_t load_cert(int mand, common_info_st *info); +gnutls_datum_t *load_secret_key(int mand, common_info_st *info); +gnutls_pubkey_t load_pubkey(int mand, common_info_st *info); +gnutls_x509_crt_t *load_cert_list(int mand, size_t *size, common_info_st *info); +gnutls_x509_crl_t *load_crl_list(int mand, size_t *size, common_info_st *info); int get_bits(gnutls_pk_algorithm_t key_type, int info_bits, const char *info_sec_param, int warn); @@ -154,36 +152,33 @@ gnutls_sec_param_t str_to_sec_param(const char *str); gnutls_ecc_curve_t str_to_curve(const char *str); /* prime.c */ -int generate_prime(FILE * outfile, int how, common_info_st * info); -void dh_info(FILE * infile, FILE * outfile, common_info_st * ci); +int generate_prime(FILE *outfile, int how, common_info_st *info); +void dh_info(FILE *infile, FILE *outfile, common_info_st *ci); gnutls_x509_privkey_t *load_privkey_list(int mand, size_t *privkey_size, - common_info_st * info); + common_info_st *info); -void print_pubkey_info(gnutls_pubkey_t pubkey, - FILE * outfile, +void print_pubkey_info(gnutls_pubkey_t pubkey, FILE *outfile, gnutls_certificate_print_formats_t format, gnutls_x509_crt_fmt_t outcert_format, unsigned int outtext); -void print_ecc_pkey(FILE * outfile, gnutls_ecc_curve_t curve, - gnutls_datum_t * k, gnutls_datum_t * x, - gnutls_datum_t * y, int cprint); -void print_gost_pkey(FILE * outfile, gnutls_ecc_curve_t curve, +void print_ecc_pkey(FILE *outfile, gnutls_ecc_curve_t curve, gnutls_datum_t *k, + gnutls_datum_t *x, gnutls_datum_t *y, int cprint); +void print_gost_pkey(FILE *outfile, gnutls_ecc_curve_t curve, gnutls_digest_algorithm_t digest, - gnutls_gost_paramset_t paramset, - gnutls_datum_t * k, gnutls_datum_t * x, - gnutls_datum_t * y, int cprint); -void print_rsa_pkey(FILE * outfile, gnutls_datum_t * m, gnutls_datum_t * e, - gnutls_datum_t * d, gnutls_datum_t * p, - gnutls_datum_t * q, gnutls_datum_t * u, - gnutls_datum_t * exp1, gnutls_datum_t * exp2, int cprint); -void print_dsa_pkey(FILE * outfile, gnutls_datum_t * x, gnutls_datum_t * y, - gnutls_datum_t * p, gnutls_datum_t * q, - gnutls_datum_t * g, int cprint); + gnutls_gost_paramset_t paramset, gnutls_datum_t *k, + gnutls_datum_t *x, gnutls_datum_t *y, int cprint); +void print_rsa_pkey(FILE *outfile, gnutls_datum_t *m, gnutls_datum_t *e, + gnutls_datum_t *d, gnutls_datum_t *p, gnutls_datum_t *q, + gnutls_datum_t *u, gnutls_datum_t *exp1, + gnutls_datum_t *exp2, int cprint); +void print_dsa_pkey(FILE *outfile, gnutls_datum_t *x, gnutls_datum_t *y, + gnutls_datum_t *p, gnutls_datum_t *q, gnutls_datum_t *g, + int cprint); ATTRIBUTE_MALLOC FILE *safe_open_rw(const char *file, int privkey_op); -const char *get_password(common_info_st * cinfo, unsigned int *flags, +const char *get_password(common_info_st *cinfo, unsigned int *flags, int confirm); extern unsigned char *lbuffer; @@ -191,14 +186,15 @@ extern unsigned long lbuffer_size; void fix_lbuffer(unsigned long); -void decode_seed(gnutls_datum_t * seed, const char *hex, unsigned hex_size); +void decode_seed(gnutls_datum_t *seed, const char *hex, unsigned hex_size); -# define GNUTLS_PK_IS_RSA(pk) ((pk) == GNUTLS_PK_RSA || (pk) == GNUTLS_PK_RSA_PSS) +#define GNUTLS_PK_IS_RSA(pk) \ + ((pk) == GNUTLS_PK_RSA || (pk) == GNUTLS_PK_RSA_PSS) gnutls_pk_algorithm_t figure_key_type(const char *key_type); gnutls_digest_algorithm_t hash_to_id(const char *hash); -void sign_params_to_flags(common_info_st * cinfo, const char *params); +void sign_params_to_flags(common_info_st *cinfo, const char *params); -#endif /* GNUTLS_SRC_CERTTOOL_COMMON_H */ +#endif /* GNUTLS_SRC_CERTTOOL_COMMON_H */ diff --git a/src/certtool-extras.c b/src/certtool-extras.c index 38317d5b4d..66ecee46f7 100644 --- a/src/certtool-extras.c +++ b/src/certtool-extras.c @@ -46,7 +46,7 @@ /* Loads a x509 private key list */ gnutls_x509_privkey_t *load_privkey_list(int mand, size_t *privkey_size, - common_info_st * info) + common_info_st *info) { static gnutls_x509_privkey_t key[MAX_KEYS]; char *ptr; @@ -87,15 +87,12 @@ gnutls_x509_privkey_t *load_privkey_list(int mand, size_t *privkey_size, dat.data = (void *)ptr; dat.size = ptr_size; - ret = - gnutls_x509_privkey_import2(key[i], &dat, - info->incert_format, NULL, 0); + ret = gnutls_x509_privkey_import2(key[i], &dat, + info->incert_format, NULL, 0); if (ret == GNUTLS_E_DECRYPTION_FAILED) { pass = get_password(info, &flags, 0); - ret = - gnutls_x509_privkey_import2(key[i], &dat, - info->incert_format, - pass, flags); + ret = gnutls_x509_privkey_import2( + key[i], &dat, info->incert_format, pass, flags); } if (ret < 0 && *privkey_size > 0) @@ -117,12 +114,11 @@ gnutls_x509_privkey_t *load_privkey_list(int mand, size_t *privkey_size, ptr++; ptr_size = file_data.size; - ptr_size -= - ((unsigned char *)ptr - (unsigned char *)file_data.data); + ptr_size -= ((unsigned char *)ptr - + (unsigned char *)file_data.data); if (ptr_size < 0) break; - } gnutls_free(file_data.data); diff --git a/src/certtool.c b/src/certtool.c index b6cbcfb082..44ad3bb065 100644 --- a/src/certtool.c +++ b/src/certtool.c @@ -40,7 +40,7 @@ #include #include #ifndef _WIN32 -# include +#include #endif #include @@ -57,43 +57,43 @@ static FILE *stdlog = NULL; -static void print_crl_info(gnutls_x509_crl_t crl, FILE * out, - common_info_st * cinfo); -void pkcs7_info(common_info_st * cinfo, unsigned display_data); +static void print_crl_info(gnutls_x509_crl_t crl, FILE *out, + common_info_st *cinfo); +void pkcs7_info(common_info_st *cinfo, unsigned display_data); void pkcs7_sign(common_info_st *, unsigned embed); void pkcs7_generate(common_info_st *); void pkcs8_info(void); -void pkcs8_info_int(gnutls_datum_t * data, unsigned format, - unsigned ignore_err, FILE * out, const char *tab); -void crq_info(common_info_st * cinfo); +void pkcs8_info_int(gnutls_datum_t *data, unsigned format, unsigned ignore_err, + FILE *out, const char *tab); +void crq_info(common_info_st *cinfo); void smime_to_pkcs7(void); void pkcs12_info(common_info_st *); void generate_pkcs12(common_info_st *); void generate_pkcs8(common_info_st *); -static void verify_chain(common_info_st * cinfo); -void verify_crl(common_info_st * cinfo); -void verify_pkcs7(common_info_st * cinfo, const char *purpose, +static void verify_chain(common_info_st *cinfo); +void verify_crl(common_info_st *cinfo); +void verify_pkcs7(common_info_st *cinfo, const char *purpose, unsigned display_data); void pubkey_info(gnutls_x509_crt_t crt, common_info_st *); void certificate_info(int, common_info_st *); -void crl_info(common_info_st * cinfo); +void crl_info(common_info_st *cinfo); void privkey_info(common_info_st *); static void cmd_parser(int argc, char **argv); void generate_self_signed(common_info_st *); void generate_request(common_info_st *); -static void print_certificate_info(gnutls_x509_crt_t crt, FILE * out, +static void print_certificate_info(gnutls_x509_crt_t crt, FILE *out, unsigned int all); -static void verify_certificate(common_info_st * cinfo); +static void verify_certificate(common_info_st *cinfo); -static void privkey_to_rsa(common_info_st * cinfo); +static void privkey_to_rsa(common_info_st *cinfo); -static void pubkey_keyid(common_info_st * cinfo); -static void certificate_fpr(common_info_st * cinfo); +static void pubkey_keyid(common_info_st *cinfo); +static void certificate_fpr(common_info_st *cinfo); static gnutls_digest_algorithm_t get_dig(gnutls_x509_crt_t crt, - common_info_st * cinfo); + common_info_st *cinfo); FILE *outfile; -static const char *outfile_name = NULL; /* to delete on exit */ +static const char *outfile_name = NULL; /* to delete on exit */ #define REQ_KEY_TYPE_DEFAULT GNUTLS_PK_RSA @@ -133,22 +133,24 @@ int main(int argc, char **argv) return 0; } -#define SET_SPKI_PARAMS(spki, cinfo) \ - do { \ - unsigned _salt_size; \ - if (!cinfo->hash) { \ - fprintf(stderr, "You must provide the hash algorithm and optionally the salt size for RSA-PSS\n"); \ - app_exit(1); \ - } \ - if (HAVE_OPT(SALT_SIZE)) { \ - _salt_size = OPT_VALUE_SALT_SIZE; \ - } else { \ - _salt_size = gnutls_hash_get_len(cinfo->hash); \ - } \ - gnutls_x509_spki_set_rsa_pss_params(spki, cinfo->hash, _salt_size); \ - } while(0) - -static gnutls_x509_privkey_t generate_private_key_int(common_info_st * cinfo) +#define SET_SPKI_PARAMS(spki, cinfo) \ + do { \ + unsigned _salt_size; \ + if (!cinfo->hash) { \ + fprintf(stderr, \ + "You must provide the hash algorithm and optionally the salt size for RSA-PSS\n"); \ + app_exit(1); \ + } \ + if (HAVE_OPT(SALT_SIZE)) { \ + _salt_size = OPT_VALUE_SALT_SIZE; \ + } else { \ + _salt_size = gnutls_hash_get_len(cinfo->hash); \ + } \ + gnutls_x509_spki_set_rsa_pss_params(spki, cinfo->hash, \ + _salt_size); \ + } while (0) + +static gnutls_x509_privkey_t generate_private_key_int(common_info_st *cinfo) { gnutls_x509_privkey_t key; int ret, key_type, bits; @@ -194,12 +196,12 @@ static gnutls_x509_privkey_t generate_private_key_int(common_info_st * cinfo) fprintf(stderr, "Note that ECDSA keys with size less than 256 are not widely supported.\n\n"); } else { - fprintf(stdlog, "Generating a %d bit %s private key...\n", - bits, gnutls_pk_algorithm_get_name(key_type)); + fprintf(stdlog, "Generating a %d bit %s private key...\n", bits, + gnutls_pk_algorithm_get_name(key_type)); } - if (provable - && (!GNUTLS_PK_IS_RSA(key_type) && key_type != GNUTLS_PK_DSA)) { + if (provable && + (!GNUTLS_PK_IS_RSA(key_type) && key_type != GNUTLS_PK_DSA)) { fprintf(stderr, "The --provable parameter can only be used with RSA and DSA keys.\n"); app_exit(1); @@ -259,9 +261,8 @@ static gnutls_x509_privkey_t generate_private_key_int(common_info_st * cinfo) flags |= GNUTLS_PRIVKEY_FLAG_PROVABLE; } - if (key_type == GNUTLS_PK_RSA_PSS - && (cinfo->hash || HAVE_OPT(SALT_SIZE))) { - + if (key_type == GNUTLS_PK_RSA_PSS && + (cinfo->hash || HAVE_OPT(SALT_SIZE))) { SET_SPKI_PARAMS(spki, cinfo); kdata[kdata_size].type = GNUTLS_KEYGEN_SPKI; @@ -272,9 +273,8 @@ static gnutls_x509_privkey_t generate_private_key_int(common_info_st * cinfo) if (provable) flags |= GNUTLS_PRIVKEY_FLAG_PROVABLE; - ret = - gnutls_x509_privkey_generate2(key, key_type, bits, flags, kdata, - kdata_size); + ret = gnutls_x509_privkey_generate2(key, key_type, bits, flags, kdata, + kdata_size); if (ret < 0) { fprintf(stderr, "privkey_generate: %s\n", gnutls_strerror(ret)); app_exit(1); @@ -292,7 +292,7 @@ static gnutls_x509_privkey_t generate_private_key_int(common_info_st * cinfo) return key; } -static void generate_private_key(common_info_st * cinfo) +static void generate_private_key(common_info_st *cinfo) { gnutls_x509_privkey_t key; @@ -303,7 +303,7 @@ static void generate_private_key(common_info_st * cinfo) gnutls_x509_privkey_deinit(key); } -static void verify_provable_privkey(common_info_st * cinfo) +static void verify_provable_privkey(common_info_st *cinfo) { gnutls_privkey_t pkey; int ret; @@ -311,9 +311,8 @@ static void verify_provable_privkey(common_info_st * cinfo) pkey = load_private_key(1, cinfo); if (cinfo->seed_size > 0) { - ret = - gnutls_privkey_verify_seed(pkey, 0, cinfo->seed, - cinfo->seed_size); + ret = gnutls_privkey_verify_seed(pkey, 0, cinfo->seed, + cinfo->seed_size); } else { ret = gnutls_privkey_verify_seed(pkey, 0, NULL, 0); } @@ -334,10 +333,9 @@ static void verify_provable_privkey(common_info_st * cinfo) return; } -static gnutls_x509_crt_t -generate_certificate(gnutls_privkey_t * ret_key, - gnutls_x509_crt_t ca_crt, int proxy, - common_info_st * cinfo) +static gnutls_x509_crt_t generate_certificate(gnutls_privkey_t *ret_key, + gnutls_x509_crt_t ca_crt, + int proxy, common_info_st *cinfo) { gnutls_x509_crt_t crt; gnutls_x509_spki_t spki; @@ -350,7 +348,7 @@ generate_certificate(gnutls_privkey_t * ret_key, time_t secs; int vers; unsigned int usage = 0, server, ask; - gnutls_x509_crq_t crq; /* request */ + gnutls_x509_crq_t crq; /* request */ unsigned pk; char timebuf[SIMPLE_CTIME_BUF_SIZE]; @@ -363,7 +361,6 @@ generate_certificate(gnutls_privkey_t * ret_key, crq = load_request(cinfo); if (crq == NULL) { - key = load_private_key(0, cinfo); pubkey = load_public_key_or_import(1, key, cinfo); @@ -376,9 +373,8 @@ generate_certificate(gnutls_privkey_t * ret_key, /* set the DN. */ if (proxy) { - result = - gnutls_x509_crt_set_proxy_dn(crt, ca_crt, 0, - NULL, 0); + result = gnutls_x509_crt_set_proxy_dn(crt, ca_crt, 0, + NULL, 0); if (result < 0) { fprintf(stderr, "set_proxy_dn: %s\n", gnutls_strerror(result)); @@ -419,7 +415,6 @@ generate_certificate(gnutls_privkey_t * ret_key, } gnutls_pubkey_deinit(pubkey); } else { - result = gnutls_x509_crt_set_crq(crt, crq); if (result < 0) { fprintf(stderr, "set_crq: %s\n", @@ -464,10 +459,10 @@ generate_certificate(gnutls_privkey_t * ret_key, ask = 0; secs = get_expiration_date(); - if (ca_crt - && (secs > gnutls_x509_crt_get_expiration_time(ca_crt))) { + if (ca_crt && + (secs > gnutls_x509_crt_get_expiration_time(ca_crt))) { time_t exp = - gnutls_x509_crt_get_expiration_time(ca_crt); + gnutls_x509_crt_get_expiration_time(ca_crt); fprintf(stderr, "\nExpiration time: %s\n", simple_ctime(&secs, timebuf)); fprintf(stderr, "CA expiration time: %s\n", @@ -476,8 +471,8 @@ generate_certificate(gnutls_privkey_t * ret_key, "Warning: The time set exceeds the CA's expiration time\n"); ask = 1; } - } while (batch == 0 && ask != 0 - && read_yesno("Is it ok to proceed? (y/N): ", 0) == 0); + } while (batch == 0 && ask != 0 && + read_yesno("Is it ok to proceed? (y/N): ", 0) == 0); result = gnutls_x509_crt_set_expiration_time(crt, secs); if (result < 0) { @@ -503,7 +498,6 @@ generate_certificate(gnutls_privkey_t * ret_key, /* append additional extensions */ if (cinfo->v1_cert == 0) { - if (proxy) { const char *policylanguage; char *policy; @@ -511,18 +505,15 @@ generate_certificate(gnutls_privkey_t * ret_key, int proxypathlen = get_path_len(); if (!batch) { - printf - ("1.3.6.1.5.5.7.21.1 ::= id-ppl-inheritALL\n"); - printf - ("1.3.6.1.5.5.7.21.2 ::= id-ppl-independent\n"); + printf("1.3.6.1.5.5.7.21.1 ::= id-ppl-inheritALL\n"); + printf("1.3.6.1.5.5.7.21.2 ::= id-ppl-independent\n"); } policylanguage = get_proxy_policy(&policy, &policylen); - result = - gnutls_x509_crt_set_proxy(crt, proxypathlen, - policylanguage, - policy, policylen); + result = gnutls_x509_crt_set_proxy(crt, proxypathlen, + policylanguage, + policy, policylen); if (result < 0) { fprintf(stderr, "set_proxy: %s\n", gnutls_strerror(result)); @@ -537,9 +528,8 @@ generate_certificate(gnutls_privkey_t * ret_key, else path_len = -1; - result = - gnutls_x509_crt_set_basic_constraints(crt, ca_status, - path_len); + result = gnutls_x509_crt_set_basic_constraints(crt, ca_status, + path_len); if (result < 0) { fprintf(stderr, "basic_constraints: %s\n", gnutls_strerror(result)); @@ -548,9 +538,8 @@ generate_certificate(gnutls_privkey_t * ret_key, client = get_tls_client_status(); if (client != 0) { - result = gnutls_x509_crt_set_key_purpose_oid(crt, - GNUTLS_KP_TLS_WWW_CLIENT, - 0); + result = gnutls_x509_crt_set_key_purpose_oid( + crt, GNUTLS_KP_TLS_WWW_CLIENT, 0); if (result < 0) { fprintf(stderr, "key_kp: %s\n", gnutls_strerror(result)); @@ -570,10 +559,8 @@ generate_certificate(gnutls_privkey_t * ret_key, get_policy_set(crt); if (server != 0) { - result = - gnutls_x509_crt_set_key_purpose_oid(crt, - GNUTLS_KP_TLS_WWW_SERVER, - 0); + result = gnutls_x509_crt_set_key_purpose_oid( + crt, GNUTLS_KP_TLS_WWW_SERVER, 0); if (result < 0) { fprintf(stderr, "key_kp: %s\n", gnutls_strerror(result)); @@ -584,7 +571,9 @@ generate_certificate(gnutls_privkey_t * ret_key, } if (!ca_status || server) { - if (pk == GNUTLS_PK_RSA || pk == GNUTLS_PK_GOST_01 || pk == GNUTLS_PK_GOST_12_256 || pk == GNUTLS_PK_GOST_12_512) { /* DSA and ECDSA keys can only sign. */ + if (pk == GNUTLS_PK_RSA || pk == GNUTLS_PK_GOST_01 || + pk == GNUTLS_PK_GOST_12_256 || + pk == GNUTLS_PK_GOST_12_512) { /* DSA and ECDSA keys can only sign. */ result = get_sign_status(server); if (result) usage |= GNUTLS_KEY_DIGITAL_SIGNATURE; @@ -601,9 +590,8 @@ generate_certificate(gnutls_privkey_t * ret_key, } if (is_ike) { - result = - gnutls_x509_crt_set_key_purpose_oid - (crt, GNUTLS_KP_IPSEC_IKE, 0); + result = gnutls_x509_crt_set_key_purpose_oid( + crt, GNUTLS_KP_IPSEC_IKE, 0); if (result < 0) { fprintf(stderr, "key_kp: %s\n", gnutls_strerror(result)); @@ -631,9 +619,8 @@ generate_certificate(gnutls_privkey_t * ret_key, result = get_ocsp_sign_status(); if (result) { - result = - gnutls_x509_crt_set_key_purpose_oid - (crt, GNUTLS_KP_OCSP_SIGNING, 0); + result = gnutls_x509_crt_set_key_purpose_oid( + crt, GNUTLS_KP_OCSP_SIGNING, 0); if (result < 0) { fprintf(stderr, "key_kp: %s\n", gnutls_strerror(result)); @@ -643,9 +630,8 @@ generate_certificate(gnutls_privkey_t * ret_key, result = get_code_sign_status(); if (result) { - result = - gnutls_x509_crt_set_key_purpose_oid - (crt, GNUTLS_KP_CODE_SIGNING, 0); + result = gnutls_x509_crt_set_key_purpose_oid( + crt, GNUTLS_KP_CODE_SIGNING, 0); if (result < 0) { fprintf(stderr, "key_kp: %s\n", gnutls_strerror(result)); @@ -655,9 +641,8 @@ generate_certificate(gnutls_privkey_t * ret_key, result = get_time_stamp_status(); if (result) { - result = - gnutls_x509_crt_set_key_purpose_oid - (crt, GNUTLS_KP_TIME_STAMPING, 0); + result = gnutls_x509_crt_set_key_purpose_oid( + crt, GNUTLS_KP_TIME_STAMPING, 0); if (result < 0) { fprintf(stderr, "key_kp: %s\n", gnutls_strerror(result)); @@ -667,9 +652,8 @@ generate_certificate(gnutls_privkey_t * ret_key, result = get_email_protection_status(); if (result) { - result = - gnutls_x509_crt_set_key_purpose_oid - (crt, GNUTLS_KP_EMAIL_PROTECTION, 0); + result = gnutls_x509_crt_set_key_purpose_oid( + crt, GNUTLS_KP_EMAIL_PROTECTION, 0); if (result < 0) { fprintf(stderr, "key_kp: %s\n", gnutls_strerror(result)); @@ -709,13 +693,11 @@ generate_certificate(gnutls_privkey_t * ret_key, /* Subject Key ID. */ size = lbuffer_size; - result = - gnutls_x509_crt_get_key_id(crt, GNUTLS_KEYID_USE_SHA1, - lbuffer, &size); + result = gnutls_x509_crt_get_key_id(crt, GNUTLS_KEYID_USE_SHA1, + lbuffer, &size); if (result >= 0) { - result = - gnutls_x509_crt_set_subject_key_id(crt, lbuffer, - size); + result = gnutls_x509_crt_set_subject_key_id( + crt, lbuffer, size); if (result < 0) { fprintf(stderr, "set_subject_key_id: %s\n", gnutls_strerror(result)); @@ -727,14 +709,11 @@ generate_certificate(gnutls_privkey_t * ret_key, */ if (ca_crt != NULL) { size = lbuffer_size; - result = - gnutls_x509_crt_get_subject_key_id(ca_crt, - lbuffer, - &size, NULL); + result = gnutls_x509_crt_get_subject_key_id( + ca_crt, lbuffer, &size, NULL); if (result >= 0) { - result = - gnutls_x509_crt_set_authority_key_id - (crt, lbuffer, size); + result = gnutls_x509_crt_set_authority_key_id( + crt, lbuffer, size); if (result < 0) { fprintf(stderr, "error setting authority key id: %s\n", @@ -758,8 +737,8 @@ generate_certificate(gnutls_privkey_t * ret_key, app_exit(1); } - if ((HAVE_OPT(KEY_TYPE) || req_key_type != REQ_KEY_TYPE_DEFAULT) - && req_key_type != pk) { + if ((HAVE_OPT(KEY_TYPE) || req_key_type != REQ_KEY_TYPE_DEFAULT) && + req_key_type != pk) { if (pk != GNUTLS_PK_RSA || req_key_type != GNUTLS_PK_RSA_PSS) { fprintf(stderr, "cannot set certificate type (%s) incompatible with the key (%s)\n", @@ -822,11 +801,10 @@ generate_certificate(gnutls_privkey_t * ret_key, *ret_key = key; return crt; - } -static gnutls_x509_crl_t -generate_crl(gnutls_x509_crt_t ca_crt, common_info_st * cinfo) +static gnutls_x509_crl_t generate_crl(gnutls_x509_crt_t ca_crt, + common_info_st *cinfo) { gnutls_x509_crl_t crl; gnutls_x509_crt_t *crts; @@ -897,15 +875,13 @@ generate_crl(gnutls_x509_crt_t ca_crt, common_info_st * cinfo) result = gnutls_x509_crt_get_subject_key_id(ca_crt, lbuffer, &size, NULL); if (result >= 0) { - result = - gnutls_x509_crl_set_authority_key_id(crl, - lbuffer, size); + result = gnutls_x509_crl_set_authority_key_id( + crl, lbuffer, size); if (result < 0) { fprintf(stderr, "set_authority_key_id: %s\n", gnutls_strerror(result)); app_exit(1); } - } } @@ -929,14 +905,14 @@ generate_crl(gnutls_x509_crt_t ca_crt, common_info_st * cinfo) } static gnutls_digest_algorithm_t get_dig_for_pub(gnutls_pubkey_t pubkey, - common_info_st * cinfo) + common_info_st *cinfo) { gnutls_digest_algorithm_t dig; int result; unsigned int mand; result = - gnutls_pubkey_get_preferred_hash_algorithm(pubkey, &dig, &mand); + gnutls_pubkey_get_preferred_hash_algorithm(pubkey, &dig, &mand); if (result < 0) { { fprintf(stderr, @@ -954,7 +930,7 @@ static gnutls_digest_algorithm_t get_dig_for_pub(gnutls_pubkey_t pubkey, } static gnutls_digest_algorithm_t get_dig(gnutls_x509_crt_t crt, - common_info_st * cinfo) + common_info_st *cinfo) { gnutls_digest_algorithm_t dig; gnutls_pubkey_t pubkey; @@ -982,7 +958,7 @@ static gnutls_digest_algorithm_t get_dig(gnutls_x509_crt_t crt, return dig; } -void generate_self_signed(common_info_st * cinfo) +void generate_self_signed(common_info_st *cinfo) { gnutls_x509_crt_t crt; gnutls_datum_t out; @@ -1004,9 +980,8 @@ void generate_self_signed(common_info_st * cinfo) if (cinfo->rsa_pss_sign) flags |= GNUTLS_PRIVKEY_SIGN_FLAG_RSA_PSS; - result = - gnutls_x509_crt_privkey_sign(crt, crt, key, get_dig(crt, cinfo), - flags); + result = gnutls_x509_crt_privkey_sign(crt, crt, key, + get_dig(crt, cinfo), flags); if (result < 0) { fprintf(stderr, "crt_sign: %s\n", gnutls_strerror(result)); app_exit(1); @@ -1025,7 +1000,7 @@ void generate_self_signed(common_info_st * cinfo) gnutls_privkey_deinit(key); } -static void generate_signed_certificate(common_info_st * cinfo) +static void generate_signed_certificate(common_info_st *cinfo) { gnutls_x509_crt_t crt; gnutls_privkey_t key; @@ -1049,9 +1024,8 @@ static void generate_signed_certificate(common_info_st * cinfo) if (cinfo->rsa_pss_sign) flags |= GNUTLS_PRIVKEY_SIGN_FLAG_RSA_PSS; - result = - gnutls_x509_crt_privkey_sign(crt, ca_crt, ca_key, - get_dig(ca_crt, cinfo), flags); + result = gnutls_x509_crt_privkey_sign(crt, ca_crt, ca_key, + get_dig(ca_crt, cinfo), flags); if (result < 0) { fprintf(stderr, "crt_sign: %s\n", gnutls_strerror(result)); app_exit(1); @@ -1072,7 +1046,7 @@ static void generate_signed_certificate(common_info_st * cinfo) gnutls_privkey_deinit(ca_key); } -static void generate_proxy_certificate(common_info_st * cinfo) +static void generate_proxy_certificate(common_info_st *cinfo) { gnutls_x509_crt_t crt, eecrt; gnutls_privkey_t key, eekey; @@ -1094,9 +1068,8 @@ static void generate_proxy_certificate(common_info_st * cinfo) if (cinfo->rsa_pss_sign) flags |= GNUTLS_PRIVKEY_SIGN_FLAG_RSA_PSS; - result = - gnutls_x509_crt_privkey_sign(crt, eecrt, eekey, - get_dig(eecrt, cinfo), flags); + result = gnutls_x509_crt_privkey_sign(crt, eecrt, eekey, + get_dig(eecrt, cinfo), flags); if (result < 0) { fprintf(stderr, "crt_sign: %s\n", gnutls_strerror(result)); app_exit(1); @@ -1117,7 +1090,7 @@ static void generate_proxy_certificate(common_info_st * cinfo) gnutls_privkey_deinit(eekey); } -static void generate_signed_crl(common_info_st * cinfo) +static void generate_signed_crl(common_info_st *cinfo) { gnutls_x509_crl_t crl; int result; @@ -1131,9 +1104,8 @@ static void generate_signed_crl(common_info_st * cinfo) crl = generate_crl(ca_crt, cinfo); fprintf(stdlog, "\n"); - result = - gnutls_x509_crl_privkey_sign(crl, ca_crt, ca_key, - get_dig(ca_crt, cinfo), 0); + result = gnutls_x509_crl_privkey_sign(crl, ca_crt, ca_key, + get_dig(ca_crt, cinfo), 0); if (result < 0) { fprintf(stderr, "crl_privkey_sign: %s\n", gnutls_strerror(result)); @@ -1147,7 +1119,7 @@ static void generate_signed_crl(common_info_st * cinfo) gnutls_x509_crt_deinit(ca_crt); } -static void update_signed_certificate(common_info_st * cinfo) +static void update_signed_certificate(common_info_st *cinfo) { gnutls_x509_crt_t crt; int result; @@ -1201,9 +1173,8 @@ static void update_signed_certificate(common_info_st * cinfo) if (cinfo->rsa_pss_sign) flags |= GNUTLS_PRIVKEY_SIGN_FLAG_RSA_PSS; - result = - gnutls_x509_crt_privkey_sign(crt, ca_crt, ca_key, - get_dig(ca_crt, cinfo), flags); + result = gnutls_x509_crt_privkey_sign(crt, ca_crt, ca_key, + get_dig(ca_crt, cinfo), flags); if (result < 0) { fprintf(stderr, "crt_sign: %s\n", gnutls_strerror(result)); app_exit(1); @@ -1351,8 +1322,8 @@ static void cmd_parser(int argc, char **argv) fprintf(stderr, "pkcs11_init: %s", gnutls_strerror(ret)); else { - ret = - gnutls_pkcs11_add_provider(OPT_ARG(PROVIDER), NULL); + ret = gnutls_pkcs11_add_provider(OPT_ARG(PROVIDER), + NULL); if (ret < 0) { fprintf(stderr, "pkcs11_add_provider: %s", gnutls_strerror(ret)); @@ -1399,8 +1370,8 @@ static void cmd_parser(int argc, char **argv) cinfo.pkcs8 = HAVE_OPT(PKCS8); cinfo.incert_format = incert_format; cinfo.outcert_format = outcert_format; - cinfo.outtext = ENABLED_OPT(TEXT) - && outcert_format == GNUTLS_X509_FMT_PEM; + cinfo.outtext = ENABLED_OPT(TEXT) && + outcert_format == GNUTLS_X509_FMT_PEM; if (HAVE_OPT(LOAD_CERTIFICATE)) cinfo.cert = OPT_ARG(LOAD_CERTIFICATE); @@ -1452,11 +1423,11 @@ static void cmd_parser(int argc, char **argv) if (HAVE_OPT(VERIFY_PROFILE)) { if (strcasecmp(OPT_ARG(VERIFY_PROFILE), "none") == 0) { cinfo.verification_profile = - (gnutls_sec_param_t) GNUTLS_PROFILE_UNKNOWN; + (gnutls_sec_param_t)GNUTLS_PROFILE_UNKNOWN; } else { cinfo.verification_profile = (gnutls_sec_param_t) - gnutls_certificate_verification_profile_get_id - (OPT_ARG(VERIFY_PROFILE)); + gnutls_certificate_verification_profile_get_id( + OPT_ARG(VERIFY_PROFILE)); } } else if (!HAVE_OPT(VERIFY_ALLOW_BROKEN)) { if (HAVE_OPT(VERIFY_CHAIN) || HAVE_OPT(VERIFY)) { @@ -1551,7 +1522,7 @@ static void cmd_parser(int argc, char **argv) gnutls_global_deinit(); } -void certificate_info(int pubkey, common_info_st * cinfo) +void certificate_info(int pubkey, common_info_st *cinfo) { gnutls_x509_crt_t *crts = NULL; size_t size; @@ -1568,9 +1539,8 @@ void certificate_info(int pubkey, common_info_st * cinfo) app_exit(1); } - ret = - gnutls_x509_crt_list_import2(&crts, &crt_num, &pem, incert_format, - 0); + ret = gnutls_x509_crt_list_import2(&crts, &crt_num, &pem, incert_format, + 0); if (ret < 0) { fprintf(stderr, "import error: %s\n", gnutls_strerror(ret)); app_exit(1); @@ -1598,9 +1568,8 @@ void certificate_info(int pubkey, common_info_st * cinfo) /* this deinitializes the certificate */ pubkey_info(crts[i], cinfo); } else { - ret = - gnutls_x509_crt_export2(crts[i], outcert_format, - &out); + ret = gnutls_x509_crt_export2(crts[i], outcert_format, + &out); if (ret < 0) { fprintf(stderr, "export error: %s\n", gnutls_strerror(ret)); @@ -1612,13 +1581,12 @@ void certificate_info(int pubkey, common_info_st * cinfo) gnutls_x509_crt_deinit(crts[i]); } - } gnutls_free(crts); } -static void -print_certificate_info(gnutls_x509_crt_t crt, FILE * out, unsigned int all) +static void print_certificate_info(gnutls_x509_crt_t crt, FILE *out, + unsigned int all) { gnutls_datum_t data; int ret; @@ -1626,24 +1594,22 @@ print_certificate_info(gnutls_x509_crt_t crt, FILE * out, unsigned int all) if (all) ret = gnutls_x509_crt_print(crt, full_format, &data); else - ret = - gnutls_x509_crt_print(crt, - GNUTLS_CRT_PRINT_UNSIGNED_FULL, - &data); + ret = gnutls_x509_crt_print(crt, GNUTLS_CRT_PRINT_UNSIGNED_FULL, + &data); if (ret == 0) { fprintf(out, "%s\n", data.data); gnutls_free(data.data); } - if (out == stderr && batch == 0) /* interactive */ - if (read_yesno("Is the above information ok? (y/N): ", 0) - == 0) { + if (out == stderr && batch == 0) /* interactive */ + if (read_yesno("Is the above information ok? (y/N): ", 0) == + 0) { app_exit(1); } } -static void print_crl_info(gnutls_x509_crl_t crl, FILE * out, - common_info_st * cinfo) +static void print_crl_info(gnutls_x509_crl_t crl, FILE *out, + common_info_st *cinfo) { gnutls_datum_t data; gnutls_datum_t cout; @@ -1671,7 +1637,7 @@ static void print_crl_info(gnutls_x509_crl_t crl, FILE * out, gnutls_free(cout.data); } -void crl_info(common_info_st * cinfo) +void crl_info(common_info_st *cinfo) { gnutls_x509_crl_t crl; int ret; @@ -1705,8 +1671,8 @@ void crl_info(common_info_st * cinfo) gnutls_x509_crl_deinit(crl); } -static void print_crq_info(gnutls_x509_crq_t crq, FILE * out, - common_info_st * cinfo) +static void print_crq_info(gnutls_x509_crq_t crq, FILE *out, + common_info_st *cinfo) { gnutls_datum_t data; int ret; @@ -1744,7 +1710,7 @@ static void print_crq_info(gnutls_x509_crq_t crq, FILE * out, fwrite(lbuffer, 1, size, outfile); } -void crq_info(common_info_st * cinfo) +void crq_info(common_info_st *cinfo) { gnutls_x509_crq_t crq; int ret; @@ -1778,7 +1744,7 @@ void crq_info(common_info_st * cinfo) gnutls_x509_crq_deinit(crq); } -void privkey_info(common_info_st * cinfo) +void privkey_info(common_info_st *cinfo) { gnutls_x509_privkey_t key; size_t size; @@ -1799,9 +1765,8 @@ void privkey_info(common_info_st * cinfo) pem.data = lbuffer; pem.size = size; - ret = - gnutls_x509_privkey_import2(key, &pem, incert_format, NULL, - GNUTLS_PKCS_PLAIN); + ret = gnutls_x509_privkey_import2(key, &pem, incert_format, NULL, + GNUTLS_PKCS_PLAIN); /* If we failed to import the certificate previously try PKCS #8 */ if (ret == GNUTLS_E_DECRYPTION_FAILED) { @@ -1814,8 +1779,8 @@ void privkey_info(common_info_st * cinfo) pass = get_password(cinfo, &flags, 0); - ret = gnutls_x509_privkey_import2(key, &pem, - incert_format, pass, flags); + ret = gnutls_x509_privkey_import2(key, &pem, incert_format, + pass, flags); } if (ret < 0) { fprintf(stderr, "import error: %s\n", gnutls_strerror(ret)); @@ -1835,7 +1800,7 @@ void privkey_info(common_info_st * cinfo) gnutls_x509_privkey_deinit(key); } -static void privkey_to_rsa(common_info_st * cinfo) +static void privkey_to_rsa(common_info_st *cinfo) { gnutls_x509_privkey_t key; size_t size; @@ -1857,9 +1822,8 @@ static void privkey_to_rsa(common_info_st * cinfo) pem.data = lbuffer; pem.size = size; - ret = - gnutls_x509_privkey_import2(key, &pem, incert_format, NULL, - GNUTLS_PKCS_PLAIN); + ret = gnutls_x509_privkey_import2(key, &pem, incert_format, NULL, + GNUTLS_PKCS_PLAIN); /* If we failed to import the certificate previously try PKCS #8 */ if (ret == GNUTLS_E_DECRYPTION_FAILED) { @@ -1872,8 +1836,8 @@ static void privkey_to_rsa(common_info_st * cinfo) pass = get_password(cinfo, &flags, 0); - ret = gnutls_x509_privkey_import2(key, &pem, - incert_format, pass, flags); + ret = gnutls_x509_privkey_import2(key, &pem, incert_format, + pass, flags); } if (ret < 0) { fprintf(stderr, "import error: %s\n", gnutls_strerror(ret)); @@ -1903,7 +1867,7 @@ static void privkey_to_rsa(common_info_st * cinfo) /* Generate a PKCS #10 certificate request. */ -void generate_request(common_info_st * cinfo) +void generate_request(common_info_st *cinfo) { gnutls_x509_crq_t crq; gnutls_x509_privkey_t xkey; @@ -1942,9 +1906,8 @@ void generate_request(common_info_st * cinfo) print_private_key(outfile, cinfo, xkey); - ret = - gnutls_privkey_import_x509(pkey, xkey, - GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE); + ret = gnutls_privkey_import_x509( + pkey, xkey, GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE); if (ret < 0) { fprintf(stderr, "privkey_import_x509: %s\n", gnutls_strerror(ret)); @@ -1995,17 +1958,15 @@ void generate_request(common_info_st * cinfo) else path_len = -1; - ret = - gnutls_x509_crq_set_basic_constraints(crq, ca_status, - path_len); + ret = gnutls_x509_crq_set_basic_constraints(crq, ca_status, + path_len); if (ret < 0) { fprintf(stderr, "set_basic_constraints: %s\n", gnutls_strerror(ret)); app_exit(1); } - if (pk == GNUTLS_PK_RSA || - pk == GNUTLS_PK_GOST_01 || + if (pk == GNUTLS_PK_RSA || pk == GNUTLS_PK_GOST_01 || pk == GNUTLS_PK_GOST_12_256 || pk == GNUTLS_PK_GOST_12_512) { ret = get_sign_status(1); @@ -2019,7 +1980,7 @@ void generate_request(common_info_st * cinfo) usage |= GNUTLS_KEY_KEY_ENCIPHERMENT; else usage |= GNUTLS_KEY_DIGITAL_SIGNATURE; - } else { /* DSA and ECDSA are always signing */ + } else { /* DSA and ECDSA are always signing */ if (get_encrypt_status(1)) fprintf(stderr, "warning: this algorithm does not support encryption; disabling the encryption flag\n"); @@ -2029,8 +1990,8 @@ void generate_request(common_info_st * cinfo) ret = get_code_sign_status(); if (ret) { - ret = gnutls_x509_crq_set_key_purpose_oid - (crq, GNUTLS_KP_CODE_SIGNING, 0); + ret = gnutls_x509_crq_set_key_purpose_oid( + crq, GNUTLS_KP_CODE_SIGNING, 0); if (ret < 0) { fprintf(stderr, "key_kp: %s\n", gnutls_strerror(ret)); @@ -2040,8 +2001,8 @@ void generate_request(common_info_st * cinfo) ret = get_time_stamp_status(); if (ret) { - ret = gnutls_x509_crq_set_key_purpose_oid - (crq, GNUTLS_KP_TIME_STAMPING, 0); + ret = gnutls_x509_crq_set_key_purpose_oid( + crq, GNUTLS_KP_TIME_STAMPING, 0); if (ret < 0) { fprintf(stderr, "key_kp: %s\n", gnutls_strerror(ret)); @@ -2051,9 +2012,8 @@ void generate_request(common_info_st * cinfo) ret = get_email_protection_status(); if (ret) { - ret = - gnutls_x509_crq_set_key_purpose_oid - (crq, GNUTLS_KP_EMAIL_PROTECTION, 0); + ret = gnutls_x509_crq_set_key_purpose_oid( + crq, GNUTLS_KP_EMAIL_PROTECTION, 0); if (ret < 0) { fprintf(stderr, "key_kp: %s\n", gnutls_strerror(ret)); @@ -2063,8 +2023,8 @@ void generate_request(common_info_st * cinfo) ret = get_ipsec_ike_status(); if (ret) { - ret = gnutls_x509_crq_set_key_purpose_oid - (crq, GNUTLS_KP_IPSEC_IKE, 0); + ret = gnutls_x509_crq_set_key_purpose_oid( + crq, GNUTLS_KP_IPSEC_IKE, 0); if (ret < 0) { fprintf(stderr, "key_kp: %s\n", gnutls_strerror(ret)); @@ -2074,8 +2034,8 @@ void generate_request(common_info_st * cinfo) ret = get_ocsp_sign_status(); if (ret) { - ret = gnutls_x509_crq_set_key_purpose_oid - (crq, GNUTLS_KP_OCSP_SIGNING, 0); + ret = gnutls_x509_crq_set_key_purpose_oid( + crq, GNUTLS_KP_OCSP_SIGNING, 0); if (ret < 0) { fprintf(stderr, "key_kp: %s\n", gnutls_strerror(ret)); @@ -2091,7 +2051,6 @@ void generate_request(common_info_st * cinfo) ret = get_crl_sign_status(); if (ret) usage |= GNUTLS_KEY_CRL_SIGN; - } ret = gnutls_x509_crq_set_key_usage(crq, usage); @@ -2103,8 +2062,8 @@ void generate_request(common_info_st * cinfo) ret = get_tls_client_status(); if (ret != 0) { - ret = gnutls_x509_crq_set_key_purpose_oid - (crq, GNUTLS_KP_TLS_WWW_CLIENT, 0); + ret = gnutls_x509_crq_set_key_purpose_oid( + crq, GNUTLS_KP_TLS_WWW_CLIENT, 0); if (ret < 0) { fprintf(stderr, "key_kp: %s\n", gnutls_strerror(ret)); @@ -2114,8 +2073,8 @@ void generate_request(common_info_st * cinfo) ret = get_tls_server_status(); if (ret != 0) { - ret = gnutls_x509_crq_set_key_purpose_oid - (crq, GNUTLS_KP_TLS_WWW_SERVER, 0); + ret = gnutls_x509_crq_set_key_purpose_oid( + crq, GNUTLS_KP_TLS_WWW_SERVER, 0); if (ret < 0) { fprintf(stderr, "key_kp: %s\n", gnutls_strerror(ret)); @@ -2134,9 +2093,8 @@ void generate_request(common_info_st * cinfo) app_exit(1); } - ret = - gnutls_x509_crq_privkey_sign(crq, pkey, - get_dig_for_pub(pubkey, cinfo), 0); + ret = gnutls_x509_crq_privkey_sign(crq, pkey, + get_dig_for_pub(pubkey, cinfo), 0); if (ret < 0) { fprintf(stderr, "sign: %s\n", gnutls_strerror(ret)); app_exit(1); @@ -2147,10 +2105,9 @@ void generate_request(common_info_st * cinfo) gnutls_x509_crq_deinit(crq); gnutls_privkey_deinit(pkey); gnutls_pubkey_deinit(pubkey); - } -static void print_verification_res(FILE * outfile, unsigned int output); +static void print_verification_res(FILE *outfile, unsigned int output); static const char *get_signature_algo(gnutls_x509_crt_t crt) { @@ -2206,8 +2163,7 @@ static int detailed_verification(gnutls_x509_crt_t cert, gnutls_free(issuer_name.data); ret = gnutls_x509_crt_get_dn3(issuer, &issuer_name, 0); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_get_issuer_dn: %s\n", + fprintf(stderr, "gnutls_x509_crt_get_issuer_dn: %s\n", gnutls_strerror(ret)); app_exit(1); } @@ -2224,8 +2180,7 @@ static int detailed_verification(gnutls_x509_crt_t cert, ret = gnutls_x509_crl_get_issuer_dn3(crl, &issuer_name, 0); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crl_get_issuer_dn: %s\n", + fprintf(stderr, "gnutls_x509_crl_get_issuer_dn: %s\n", gnutls_strerror(ret)); app_exit(1); } @@ -2261,7 +2216,7 @@ static int detailed_verification(gnutls_x509_crt_t cert, return 0; } -static void load_data(common_info_st * cinfo, gnutls_datum_t * data) +static void load_data(common_info_st *cinfo, gnutls_datum_t *data) { FILE *fp; size_t size; @@ -2282,7 +2237,7 @@ static void load_data(common_info_st * cinfo, gnutls_datum_t * data) fclose(fp); } -static gnutls_x509_trust_list_t load_tl(common_info_st * cinfo) +static gnutls_x509_trust_list_t load_tl(common_info_st *cinfo) { gnutls_x509_trust_list_t list; int ret; @@ -2294,7 +2249,7 @@ static gnutls_x509_trust_list_t load_tl(common_info_st * cinfo) app_exit(1); } - if (cinfo->ca == NULL) { /* system */ + if (cinfo->ca == NULL) { /* system */ ret = gnutls_x509_trust_list_add_system_trust(list, 0, 0); if (ret < 0) { fprintf(stderr, "Error loading system trust: %s\n", @@ -2304,19 +2259,13 @@ static gnutls_x509_trust_list_t load_tl(common_info_st * cinfo) fprintf(stderr, "Loaded system trust (%d CAs available)\n", ret); } else if (cinfo->ca != NULL) { - ret = - gnutls_x509_trust_list_add_trust_file(list, cinfo->ca, - cinfo->crl, - cinfo->incert_format, - 0, 0); + ret = gnutls_x509_trust_list_add_trust_file( + list, cinfo->ca, cinfo->crl, cinfo->incert_format, 0, + 0); if (ret < 0) { - int ret2 = gnutls_x509_trust_list_add_trust_file(list, - cinfo-> - ca, - cinfo-> - crl, - GNUTLS_X509_FMT_PEM, - 0, 0); + int ret2 = gnutls_x509_trust_list_add_trust_file( + list, cinfo->ca, cinfo->crl, + GNUTLS_X509_FMT_PEM, 0, 0); if (ret2 >= 0) ret = ret2; } @@ -2359,29 +2308,24 @@ static gnutls_x509_trust_list_t load_tl_from_cert_chain(const char *cert, tmp.data = (void *)cert; tmp.size = cert_size; - ret = - gnutls_x509_crt_list_import2(&x509_cert_list, &x509_ncerts, &tmp, - GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_x509_crt_list_import2(&x509_cert_list, &x509_ncerts, &tmp, + GNUTLS_X509_FMT_PEM, 0); if (ret < 0 || x509_ncerts < 1) { fprintf(stderr, "error parsing CRTs: %s\n", gnutls_strerror(ret)); app_exit(1); } - ret = - gnutls_x509_crl_list_import2(&x509_crl_list, - &x509_ncrls, &tmp, - GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_x509_crl_list_import2(&x509_crl_list, &x509_ncrls, &tmp, + GNUTLS_X509_FMT_PEM, 0); if (ret < 0) { x509_crl_list = NULL; x509_ncrls = 0; } /* add CAs */ - ret = - gnutls_x509_trust_list_add_cas(list, - &x509_cert_list[x509_ncerts - 1], 1, - 0); + ret = gnutls_x509_trust_list_add_cas( + list, &x509_cert_list[x509_ncerts - 1], 1, 0); if (ret < 0) { fprintf(stderr, "gnutls_x509_trust_add_cas: %s\n", gnutls_strerror(ret)); @@ -2390,9 +2334,8 @@ static gnutls_x509_trust_list_t load_tl_from_cert_chain(const char *cert, /* add CRLs */ if (x509_ncrls > 0) { - ret = - gnutls_x509_trust_list_add_crls(list, x509_crl_list, - x509_ncrls, 0, 0); + ret = gnutls_x509_trust_list_add_crls(list, x509_crl_list, + x509_ncrls, 0, 0); if (ret < 0) { fprintf(stderr, "gnutls_x509_trust_add_crls: %s\n", gnutls_strerror(ret)); @@ -2416,9 +2359,11 @@ static gnutls_x509_trust_list_t load_tl_from_cert_chain(const char *cert, * * If @system is non-zero then the system's CA will be used. */ -static int _verify_x509_mem(const void *cert, int cert_size, common_info_st * cinfo, unsigned use_system_trust, /* if ca_file == NULL */ - const char *purpose, - const char *hostname, const char *email) +static int _verify_x509_mem(const void *cert, int cert_size, + common_info_st *cinfo, + unsigned use_system_trust, /* if ca_file == NULL */ + const char *purpose, const char *hostname, + const char *email) { int ret; unsigned i; @@ -2445,10 +2390,8 @@ static int _verify_x509_mem(const void *cert, int cert_size, common_info_st * ci tmp.data = (void *)cert; tmp.size = cert_size; - ret = - gnutls_x509_crt_list_import2(&x509_cert_list, - &x509_ncerts, &tmp, - GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_x509_crt_list_import2(&x509_cert_list, &x509_ncerts, &tmp, + GNUTLS_X509_FMT_PEM, 0); if (ret < 0 || x509_ncerts < 1) { fprintf(stderr, "error parsing CRTs: %s\n", gnutls_strerror(ret)); @@ -2484,21 +2427,14 @@ static int _verify_x509_mem(const void *cert, int cert_size, common_info_st * ci vdata_size++; } - ret = - gnutls_x509_trust_list_verify_crt2(list, x509_cert_list, - x509_ncerts, - vdata, - vdata_size, - vflags, - &output, - detailed_verification); + ret = gnutls_x509_trust_list_verify_crt2( + list, x509_cert_list, x509_ncerts, vdata, vdata_size, + vflags, &output, detailed_verification); } else { - ret = - gnutls_x509_trust_list_verify_crt(list, x509_cert_list, - x509_ncerts, - vflags, - &output, - detailed_verification); + ret = gnutls_x509_trust_list_verify_crt(list, x509_cert_list, + x509_ncerts, vflags, + &output, + detailed_verification); } if (ret < 0) { fprintf(stderr, "gnutls_x509_trusted_list_verify_crt: %s\n", @@ -2523,7 +2459,7 @@ static int _verify_x509_mem(const void *cert, int cert_size, common_info_st * ci return 0; } -static void print_verification_res(FILE * out, unsigned int output) +static void print_verification_res(FILE *out, unsigned int output) { gnutls_datum_t pout; int ret; @@ -2534,10 +2470,8 @@ static void print_verification_res(FILE * out, unsigned int output) fprintf(out, "Verified."); } - ret = - gnutls_certificate_verification_status_print(output, - GNUTLS_CRT_X509, - &pout, 0); + ret = gnutls_certificate_verification_status_print( + output, GNUTLS_CRT_X509, &pout, 0); if (ret < 0) { fprintf(stderr, "error: %s\n", gnutls_strerror(ret)); app_exit(EXIT_FAILURE); @@ -2547,7 +2481,7 @@ static void print_verification_res(FILE * out, unsigned int output) gnutls_free(pout.data); } -static void verify_chain(common_info_st * cinfo) +static void verify_chain(common_info_st *cinfo) { char *buf; size_t size; @@ -2569,7 +2503,7 @@ static void verify_chain(common_info_st * cinfo) free(buf); } -static void verify_certificate(common_info_st * cinfo) +static void verify_certificate(common_info_st *cinfo) { char *cert; char *cas = NULL; @@ -2581,15 +2515,13 @@ static void verify_certificate(common_info_st * cinfo) app_exit(1); } - _verify_x509_mem(cert, cert_size, cinfo, 1, - OPT_ARG(VERIFY_PURPOSE), + _verify_x509_mem(cert, cert_size, cinfo, 1, OPT_ARG(VERIFY_PURPOSE), OPT_ARG(VERIFY_HOSTNAME), OPT_ARG(VERIFY_EMAIL)); free(cert); free(cas); - } -void verify_crl(common_info_st * cinfo) +void verify_crl(common_info_st *cinfo) { size_t size; gnutls_datum_t dn; @@ -2651,10 +2583,8 @@ void verify_crl(common_info_st * cinfo) rc = 0; } - ret = - gnutls_certificate_verification_status_print(output, - GNUTLS_CRT_X509, - &pout, 0); + ret = gnutls_certificate_verification_status_print( + output, GNUTLS_CRT_X509, &pout, 0); if (ret < 0) { fprintf(stderr, "error: %s\n", gnutls_strerror(ret)); app_exit(EXIT_FAILURE); @@ -2668,15 +2598,14 @@ void verify_crl(common_info_st * cinfo) app_exit(rc); } -static void print_pkcs7_sig_info(gnutls_pkcs7_signature_info_st * info, - common_info_st * cinfo) +static void print_pkcs7_sig_info(gnutls_pkcs7_signature_info_st *info, + common_info_st *cinfo) { int ret; gnutls_datum_t str; - ret = - gnutls_pkcs7_print_signature_info(info, GNUTLS_CRT_PRINT_COMPACT, - &str); + ret = gnutls_pkcs7_print_signature_info(info, GNUTLS_CRT_PRINT_COMPACT, + &str); if (ret < 0) { fprintf(stderr, "printing error: %s\n", gnutls_strerror(ret)); app_exit(1); @@ -2686,7 +2615,7 @@ static void print_pkcs7_sig_info(gnutls_pkcs7_signature_info_st * info, gnutls_free(str.data); } -void verify_pkcs7(common_info_st * cinfo, const char *purpose, +void verify_pkcs7(common_info_st *cinfo, const char *purpose, unsigned display_data) { gnutls_pkcs7_t pkcs7; @@ -2725,7 +2654,7 @@ void verify_pkcs7(common_info_st * cinfo, const char *purpose, if (cinfo->cert != NULL) { signer = load_cert(1, cinfo); - } else { /* trust list */ + } else { /* trust list */ tl = load_tl(cinfo); if (tl == NULL) { fprintf(stderr, "error loading trust list\n"); @@ -2751,16 +2680,15 @@ void verify_pkcs7(common_info_st * cinfo, const char *purpose, if (!display_data) { if (i == 0) { fprintf(outfile, "eContent Type: %s\n", - gnutls_pkcs7_get_embedded_data_oid - (pkcs7)); + gnutls_pkcs7_get_embedded_data_oid( + pkcs7)); fprintf(outfile, "Signers:\n"); } print_pkcs7_sig_info(&info, cinfo); } else if (i == 0) { if (!detached.data) { - ret = - gnutls_pkcs7_get_embedded_data(pkcs7, 0, - &tmp); + ret = gnutls_pkcs7_get_embedded_data(pkcs7, 0, + &tmp); if (ret < 0) { fprintf(stderr, "error getting embedded data: %s\n", @@ -2783,27 +2711,25 @@ void verify_pkcs7(common_info_st * cinfo, const char *purpose, flags |= GNUTLS_VERIFY_ALLOW_BROKEN; if (signer) { - ret = - gnutls_pkcs7_verify_direct(pkcs7, signer, i, - detached.data != - NULL ? &detached : NULL, - flags); + ret = gnutls_pkcs7_verify_direct( + pkcs7, signer, i, + detached.data != NULL ? &detached : NULL, + flags); if (ret >= 0 && purpose) { unsigned res = - gnutls_x509_crt_check_key_purpose(signer, - purpose, - 0); + gnutls_x509_crt_check_key_purpose( + signer, purpose, 0); if (res == 0) ret = GNUTLS_E_CONSTRAINT_ERROR; } } else { assert(tl != NULL); - ret = - gnutls_pkcs7_verify(pkcs7, tl, vdata, vdata_size, i, - detached.data != - NULL ? &detached : NULL, flags); + ret = gnutls_pkcs7_verify( + pkcs7, tl, vdata, vdata_size, i, + detached.data != NULL ? &detached : NULL, + flags); } if (ret < 0) { fprintf(stderr, @@ -2825,7 +2751,7 @@ void verify_pkcs7(common_info_st * cinfo, const char *purpose, app_exit(ecode); } -void pkcs7_sign(common_info_st * cinfo, unsigned embed) +void pkcs7_sign(common_info_st *cinfo, unsigned embed) { gnutls_pkcs7_t pkcs7; gnutls_privkey_t key; @@ -2863,9 +2789,8 @@ void pkcs7_sign(common_info_st * cinfo, unsigned embed) if (embed) flags |= GNUTLS_PKCS7_EMBED_DATA; - ret = - gnutls_pkcs7_sign(pkcs7, *crts, key, &data, NULL, NULL, - get_dig(*crts, cinfo), flags); + ret = gnutls_pkcs7_sign(pkcs7, *crts, key, &data, NULL, NULL, + get_dig(*crts, cinfo), flags); if (ret < 0) { fprintf(stderr, "Error signing: %s\n", gnutls_strerror(ret)); app_exit(1); @@ -2898,7 +2823,7 @@ void pkcs7_sign(common_info_st * cinfo, unsigned embed) app_exit(0); } -void pkcs7_generate(common_info_st * cinfo) +void pkcs7_generate(common_info_st *cinfo) { gnutls_pkcs7_t pkcs7; int ret; @@ -2952,7 +2877,7 @@ void pkcs7_generate(common_info_st * cinfo) app_exit(0); } -void generate_pkcs8(common_info_st * cinfo) +void generate_pkcs8(common_info_st *cinfo) { gnutls_x509_privkey_t key; int result; @@ -2969,9 +2894,8 @@ void generate_pkcs8(common_info_st * cinfo) flags |= cipher_to_flags(cinfo->pkcs_cipher); size = lbuffer_size; - result = - gnutls_x509_privkey_export_pkcs8(key, outcert_format, - password, flags, lbuffer, &size); + result = gnutls_x509_privkey_export_pkcs8(key, outcert_format, password, + flags, lbuffer, &size); if (result < 0) { fprintf(stderr, "key_export: %s\n", gnutls_strerror(result)); @@ -2979,13 +2903,12 @@ void generate_pkcs8(common_info_st * cinfo) } fwrite(lbuffer, 1, size, outfile); - } #include #include -void generate_pkcs12(common_info_st * cinfo) +void generate_pkcs12(common_info_st *cinfo) { gnutls_pkcs12_t pkcs12; gnutls_x509_crl_t *crls; @@ -3020,7 +2943,7 @@ void generate_pkcs12(common_info_st * cinfo) } if (cinfo->hash != GNUTLS_DIG_UNKNOWN) - mac = (gnutls_mac_algorithm_t) cinfo->hash; + mac = (gnutls_mac_algorithm_t)cinfo->hash; else mac = GNUTLS_MAC_SHA256; @@ -3059,22 +2982,20 @@ void generate_pkcs12(common_info_st * cinfo) indx = result; - if (i == 0) { /* only the first certificate gets the friendly name */ - result = - gnutls_pkcs12_bag_set_friendly_name(bag, indx, - name); + if (i == + 0) { /* only the first certificate gets the friendly name */ + result = gnutls_pkcs12_bag_set_friendly_name(bag, indx, + name); if (result < 0) { - fprintf(stderr, - "bag_set_friendly_name: %s\n", + fprintf(stderr, "bag_set_friendly_name: %s\n", gnutls_strerror(result)); app_exit(1); } } size = sizeof(_key_id); - result = - gnutls_x509_crt_get_key_id(crts[i], GNUTLS_KEYID_USE_SHA1, - _key_id, &size); + result = gnutls_x509_crt_get_key_id( + crts[i], GNUTLS_KEYID_USE_SHA1, _key_id, &size); if (result < 0) { fprintf(stderr, "key_id[%d]: %s\n", i, gnutls_strerror(result)); @@ -3189,11 +3110,10 @@ void generate_pkcs12(common_info_st * cinfo) assert(keys != NULL && keys[i] != NULL); size = lbuffer_size; - result = - gnutls_x509_privkey_export_pkcs8(keys[i], - GNUTLS_X509_FMT_DER, - pass, flags, lbuffer, - &size); + result = gnutls_x509_privkey_export_pkcs8(keys[i], + GNUTLS_X509_FMT_DER, + pass, flags, lbuffer, + &size); if (result < 0) { fprintf(stderr, "key_export[%d]: %s\n", i, gnutls_strerror(result)); @@ -3202,10 +3122,8 @@ void generate_pkcs12(common_info_st * cinfo) data.data = lbuffer; data.size = size; - result = - gnutls_pkcs12_bag_set_data(kbag, - GNUTLS_BAG_PKCS8_ENCRYPTED_KEY, - &data); + result = gnutls_pkcs12_bag_set_data( + kbag, GNUTLS_BAG_PKCS8_ENCRYPTED_KEY, &data); if (result < 0) { fprintf(stderr, "bag_set_data: %s\n", gnutls_strerror(result)); @@ -3222,10 +3140,8 @@ void generate_pkcs12(common_info_st * cinfo) } size = sizeof(_key_id); - result = - gnutls_x509_privkey_get_key_id(keys[i], - GNUTLS_KEYID_USE_SHA1, - _key_id, &size); + result = gnutls_x509_privkey_get_key_id( + keys[i], GNUTLS_KEYID_USE_SHA1, _key_id, &size); if (result < 0) { fprintf(stderr, "key_id[%d]: %s\n", i, gnutls_strerror(result)); @@ -3334,8 +3250,8 @@ static void print_bag_data(gnutls_pkcs12_bag_t bag, int outtext) "\t"); name = NULL; - result = - gnutls_pkcs12_bag_get_friendly_name(bag, i, (char **)&name); + result = gnutls_pkcs12_bag_get_friendly_name(bag, i, + (char **)&name); if (result < 0) { fprintf(stderr, "get_friendly_name: %s\n", gnutls_strerror(result)); @@ -3378,8 +3294,8 @@ static void print_bag_data(gnutls_pkcs12_bag_t bag, int outtext) } if (str != NULL) { - result = - gnutls_pem_base64_encode_alloc(str, &cdata, &out); + result = gnutls_pem_base64_encode_alloc(str, &cdata, + &out); if (result < 0) { fprintf(stderr, "Error in base64 encoding: %s\n", @@ -3389,12 +3305,10 @@ static void print_bag_data(gnutls_pkcs12_bag_t bag, int outtext) fprintf(outfile, "%s", out.data); gnutls_free(out.data); } - } } -static -void pkcs12_bag_enc_info(gnutls_pkcs12_bag_t bag, FILE * out) +static void pkcs12_bag_enc_info(gnutls_pkcs12_bag_t bag, FILE *out) { int ret; unsigned schema; @@ -3408,9 +3322,8 @@ void pkcs12_bag_enc_info(gnutls_pkcs12_bag_t bag, FILE * out) const char *str; char *oid = NULL; - ret = gnutls_pkcs12_bag_enc_info(bag, - &schema, &cipher, salt, &salt_size, - &iter_count, &oid); + ret = gnutls_pkcs12_bag_enc_info(bag, &schema, &cipher, salt, + &salt_size, &iter_count, &oid); if (ret == GNUTLS_E_UNKNOWN_CIPHER_TYPE) { fprintf(out, "\tSchema: unsupported (%s)\n", oid); gnutls_free(oid); @@ -3445,7 +3358,7 @@ void pkcs12_bag_enc_info(gnutls_pkcs12_bag_t bag, FILE * out) fprintf(out, "\tIteration count: %u\n", iter_count); } -void pkcs12_info(common_info_st * cinfo) +void pkcs12_info(common_info_st *cinfo) { gnutls_pkcs12_t pkcs12; gnutls_pkcs12_bag_t bag; @@ -3484,9 +3397,8 @@ void pkcs12_info(common_info_st * cinfo) } salt_size = sizeof(salt); - result = - gnutls_pkcs12_mac_info(pkcs12, &mac_algo, salt, &salt_size, - &mac_iter, &mac_oid); + result = gnutls_pkcs12_mac_info(pkcs12, &mac_algo, salt, &salt_size, + &mac_iter, &mac_oid); if (result == GNUTLS_E_UNKNOWN_HASH_ALGORITHM && cinfo->outtext) { fprintf(outfile, "MAC info:\n"); if (mac_oid != NULL) @@ -3594,8 +3506,8 @@ void pkcs12_info(common_info_st * cinfo) } } -void pkcs8_info_int(gnutls_datum_t * data, unsigned format, - unsigned ignore_err, FILE * out, const char *tab) +void pkcs8_info_int(gnutls_datum_t *data, unsigned format, unsigned ignore_err, + FILE *out, const char *tab) { int ret; unsigned schema; @@ -3609,9 +3521,8 @@ void pkcs8_info_int(gnutls_datum_t * data, unsigned format, const char *str; char *oid = NULL; - ret = gnutls_pkcs8_info(data, format, - &schema, &cipher, salt, &salt_size, &iter_count, - &oid); + ret = gnutls_pkcs8_info(data, format, &schema, &cipher, salt, + &salt_size, &iter_count, &oid); if (ret == GNUTLS_E_UNKNOWN_CIPHER_TYPE) { fprintf(out, "PKCS #8 information:\n"); fprintf(out, "\tSchema: unsupported (%s)\n", oid); @@ -3651,7 +3562,7 @@ void pkcs8_info_int(gnutls_datum_t * data, unsigned format, fprintf(out, "%s\tSalt size: %u\n", tab, salt_size); fprintf(out, "%s\tIteration count: %u\n\n", tab, iter_count); - cleanup: +cleanup: gnutls_free(oid); } @@ -3672,7 +3583,7 @@ void pkcs8_info(void) free(data.data); } -void pkcs7_info(common_info_st * cinfo, unsigned display_data) +void pkcs7_info(common_info_st *cinfo, unsigned display_data) { gnutls_pkcs7_t pkcs7; int ret; @@ -3720,9 +3631,8 @@ void pkcs7_info(common_info_st * cinfo, unsigned display_data) } } else { if (cinfo->outtext) { - ret = - gnutls_pkcs7_print(pkcs7, GNUTLS_CRT_PRINT_FULL, - &str); + ret = gnutls_pkcs7_print(pkcs7, GNUTLS_CRT_PRINT_FULL, + &str); if (ret < 0) { fprintf(stderr, "printing error: %s\n", gnutls_strerror(ret)); @@ -3734,8 +3644,8 @@ void pkcs7_info(common_info_st * cinfo, unsigned display_data) } size = lbuffer_size; - ret = - gnutls_pkcs7_export(pkcs7, outcert_format, lbuffer, &size); + ret = gnutls_pkcs7_export(pkcs7, outcert_format, lbuffer, + &size); if (ret < 0) { fprintf(stderr, "export error: %s\n", gnutls_strerror(ret)); @@ -3762,8 +3672,7 @@ void smime_to_pkcs7(void) "cannot find RFC 2822 header/body separator"); app_exit(1); } - } - while (strcmp(lineptr, "\r\n") != 0 && strcmp(lineptr, "\n") != 0); + } while (strcmp(lineptr, "\r\n") != 0 && strcmp(lineptr, "\n") != 0); /* skip newlines */ do { @@ -3773,21 +3682,18 @@ void smime_to_pkcs7(void) "message has RFC 2822 header but no body"); app_exit(1); } - } - while (strcmp(lineptr, "\r\n") == 0 || strcmp(lineptr, "\n") == 0); + } while (strcmp(lineptr, "\r\n") == 0 || strcmp(lineptr, "\n") == 0); fprintf(outfile, "%s", "-----BEGIN PKCS7-----\n"); do { - while (len > 0 - && (lineptr[len - 1] == '\r' - || lineptr[len - 1] == '\n')) + while (len > 0 && + (lineptr[len - 1] == '\r' || lineptr[len - 1] == '\n')) lineptr[--len] = '\0'; if (strcmp(lineptr, "") != 0) fprintf(outfile, "%s\n", lineptr); len = getline(&lineptr, &linesize, infile); - } - while (len != -1); + } while (len != -1); fprintf(outfile, "%s", "-----END PKCS7-----\n"); @@ -3797,8 +3703,7 @@ void smime_to_pkcs7(void) /* Tries to find a public key in the provided options or stdin * When @crt is provided, it will be deinitialized. */ -static -gnutls_pubkey_t find_pubkey(gnutls_x509_crt_t crt, common_info_st * cinfo) +static gnutls_pubkey_t find_pubkey(gnutls_x509_crt_t crt, common_info_st *cinfo) { gnutls_pubkey_t pubkey = NULL; gnutls_privkey_t privkey = NULL; @@ -3841,11 +3746,10 @@ gnutls_pubkey_t find_pubkey(gnutls_x509_crt_t crt, common_info_st * cinfo) privkey = load_private_key(0, cinfo); if (privkey != NULL) { - ret = - gnutls_pubkey_import_privkey(pubkey, privkey, 0, 0); + ret = gnutls_pubkey_import_privkey(pubkey, privkey, 0, + 0); if (ret < 0) { - fprintf(stderr, - "pubkey_import_privkey: %s\n", + fprintf(stderr, "pubkey_import_privkey: %s\n", gnutls_strerror(ret)); app_exit(1); } @@ -3854,30 +3758,28 @@ gnutls_pubkey_t find_pubkey(gnutls_x509_crt_t crt, common_info_st * cinfo) gnutls_pubkey_deinit(pubkey); pubkey = load_pubkey(0, cinfo); - if (pubkey == NULL) { /* load from stdin */ + if (pubkey == NULL) { /* load from stdin */ pem.data = (void *)fread_file(infile, 0, &size); pem.size = size; if (!pem.data) { fprintf(stderr, "%s", infile ? "file" : - "standard input"); + "standard input"); app_exit(1); } ret = gnutls_pubkey_init(&pubkey); if (ret < 0) { - fprintf(stderr, - "pubkey_init: %s\n", + fprintf(stderr, "pubkey_init: %s\n", gnutls_strerror(ret)); app_exit(1); } - if (memmem - (pem.data, pem.size, "BEGIN CERTIFICATE", - 16) != 0 - || memmem(pem.data, pem.size, "BEGIN X509", - 10) != 0) { + if (memmem(pem.data, pem.size, + "BEGIN CERTIFICATE", 16) != 0 || + memmem(pem.data, pem.size, "BEGIN X509", + 10) != 0) { ret = gnutls_x509_crt_init(&crt); if (ret < 0) { fprintf(stderr, @@ -3886,9 +3788,8 @@ gnutls_pubkey_t find_pubkey(gnutls_x509_crt_t crt, common_info_st * cinfo) app_exit(1); } - ret = - gnutls_x509_crt_import(crt, &pem, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import( + crt, &pem, GNUTLS_X509_FMT_PEM); if (ret < 0) { fprintf(stderr, "crt_import: %s\n", @@ -3896,9 +3797,8 @@ gnutls_pubkey_t find_pubkey(gnutls_x509_crt_t crt, common_info_st * cinfo) app_exit(1); } - ret = - gnutls_pubkey_import_x509(pubkey, - crt, 0); + ret = gnutls_pubkey_import_x509(pubkey, + crt, 0); if (ret < 0) { fprintf(stderr, "pubkey_import_x509: %s\n", @@ -3907,9 +3807,8 @@ gnutls_pubkey_t find_pubkey(gnutls_x509_crt_t crt, common_info_st * cinfo) } gnutls_x509_crt_deinit(crt); } else { - ret = - gnutls_pubkey_import(pubkey, &pem, - incert_format); + ret = gnutls_pubkey_import( + pubkey, &pem, incert_format); if (ret < 0) { fprintf(stderr, "pubkey_import: %s\n", @@ -3919,14 +3818,13 @@ gnutls_pubkey_t find_pubkey(gnutls_x509_crt_t crt, common_info_st * cinfo) } free(pem.data); } - } } return pubkey; } -void pubkey_info(gnutls_x509_crt_t crt, common_info_st * cinfo) +void pubkey_info(gnutls_x509_crt_t crt, common_info_st *cinfo) { gnutls_pubkey_t pubkey; @@ -3941,8 +3839,7 @@ void pubkey_info(gnutls_x509_crt_t crt, common_info_st * cinfo) gnutls_pubkey_deinit(pubkey); } -static -void pubkey_keyid(common_info_st * cinfo) +static void pubkey_keyid(common_info_st *cinfo) { gnutls_pubkey_t pubkey; uint8_t fpr[MAX_HASH_SIZE]; @@ -3959,7 +3856,7 @@ void pubkey_keyid(common_info_st * cinfo) } if (cinfo->hash == GNUTLS_DIG_SHA1 || cinfo->hash == GNUTLS_DIG_UNKNOWN) - flags = GNUTLS_KEYID_USE_SHA1; /* be backwards compatible */ + flags = GNUTLS_KEYID_USE_SHA1; /* be backwards compatible */ else if (cinfo->hash == GNUTLS_DIG_SHA512) flags = GNUTLS_KEYID_USE_SHA512; else if (cinfo->hash == GNUTLS_DIG_SHA256) @@ -3994,8 +3891,7 @@ void pubkey_keyid(common_info_st * cinfo) return; } -static -void certificate_fpr(common_info_st * cinfo) +static void certificate_fpr(common_info_st *cinfo) { gnutls_x509_crt_t crt; size_t size; @@ -4019,10 +3915,9 @@ void certificate_fpr(common_info_st * cinfo) } crt_num = 1; - ret = - gnutls_x509_crt_list_import(&crt, &crt_num, &pem, - incert_format, - GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED); + ret = gnutls_x509_crt_list_import( + &crt, &crt_num, &pem, incert_format, + GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED); if (ret == GNUTLS_E_SHORT_MEMORY_BUFFER) { fprintf(stderr, "too many certificates (%d).", crt_num); } else if (ret >= 0 && crt_num == 0) { diff --git a/src/cfg.c b/src/cfg.c index 545e73f140..705f912555 100644 --- a/src/cfg.c +++ b/src/cfg.c @@ -296,7 +296,7 @@ static char *read_value(struct parser_st *parser) } if (c == '\n') { - return strdup(""); /* empty value */ + return strdup(""); /* empty value */ } else if (c == '"' || c == '\'') { parser_ungetc(parser, c); return read_quoted_value(parser); @@ -323,7 +323,7 @@ static char *read_value(struct parser_st *parser) } } - out: +out: /* NUL terminate */ buffer_append(&buffer, '\0'); return buffer.data; @@ -413,7 +413,7 @@ cfg_option_t cfg_load(const char *filename) take_option(&options, &null_option); return options.data; - error: +error: clear_options(&options); fclose(parser.fp); return NULL; diff --git a/src/cfg.h b/src/cfg.h index 6bfd70bdc7..b3d69591fc 100644 --- a/src/cfg.h +++ b/src/cfg.h @@ -19,7 +19,7 @@ */ #ifndef CFG_H_ -# define CFG_H_ 1 +#define CFG_H_ 1 typedef struct cfg_option_st { char *name; @@ -30,4 +30,4 @@ cfg_option_t cfg_load(const char *filename); void cfg_free(cfg_option_t options); cfg_option_t cfg_next(const cfg_option_t options, const char *name); -#endif /* CFG_H_ */ +#endif /* CFG_H_ */ diff --git a/src/cli-debug.c b/src/cli-debug.c index 493556054e..96cc933067 100644 --- a/src/cli-debug.c +++ b/src/cli-debug.c @@ -28,9 +28,9 @@ #include #include #if HAVE_SYS_SOCKET_H -# include +#include #elif HAVE_WS2TCPIP_H -# include +#include #endif #include #include @@ -66,7 +66,7 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "|<%d>| %s", level, str); } -typedef test_code_t(*TEST_FUNC) (gnutls_session_t); +typedef test_code_t (*TEST_FUNC)(gnutls_session_t); typedef struct { const char *test_name; @@ -79,155 +79,146 @@ typedef struct { } TLS_TEST; static const TLS_TEST tls_tests[] = { - {"whether the server accepts default record size (512 bytes)", - test_send_record, "yes", "no", "dunno"}, - {"whether %ALLOW_SMALL_RECORDS is required", - test_send_record_with_allow_small_records, "yes", "no", "dunno"}, + { "whether the server accepts default record size (512 bytes)", + test_send_record, "yes", "no", "dunno" }, + { "whether %ALLOW_SMALL_RECORDS is required", + test_send_record_with_allow_small_records, "yes", "no", "dunno" }, #ifdef ENABLE_SSL3 - {"for SSL 3.0 (RFC6101) support", test_ssl3, "yes", "no", "dunno"}, + { "for SSL 3.0 (RFC6101) support", test_ssl3, "yes", "no", "dunno" }, /* The following test will disable extensions if the server * does support SSL 3.0, but only incompletely and without * extensions. */ - {"for SSL 3.0 with extensions", test_ssl3_with_extensions, "yes", "no", - "dunno"}, - {"for SSL 3.0 with cipher suites not in SSL 3.0 spec", - test_ssl3_unknown_ciphersuites, "yes", "no", "dunno"}, + { "for SSL 3.0 with extensions", test_ssl3_with_extensions, "yes", "no", + "dunno" }, + { "for SSL 3.0 with cipher suites not in SSL 3.0 spec", + test_ssl3_unknown_ciphersuites, "yes", "no", "dunno" }, #endif /* The following tests will disable TLS 1.x if the server is * buggy */ - {"whether we need to disable TLS 1.2", test_tls_disable2, "no", - "yes", "dunno"}, - {"whether we need to disable TLS 1.1", test_tls_disable1, "no", - "yes", "dunno"}, - {"whether we need to disable TLS 1.0", test_tls_disable0, "no", - "yes", "dunno"}, + { "whether we need to disable TLS 1.2", test_tls_disable2, "no", "yes", + "dunno" }, + { "whether we need to disable TLS 1.1", test_tls_disable1, "no", "yes", + "dunno" }, + { "whether we need to disable TLS 1.0", test_tls_disable0, "no", "yes", + "dunno" }, /* The following test will disable extensions if the server * is buggy */ - {"whether %NO_EXTENSIONS is required", test_no_extensions, "no", "yes", - "dunno"}, - {"whether %COMPAT is required", test_record_padding, "no", "yes", - "dunno"}, - {"for TLS 1.0 (RFC2246) support", test_tls1, "yes", "no", "dunno"}, - {"for TLS 1.0 (RFC2246) support with TLS 1.0 record version", - test_tls1_nossl3, "yes", "no", "dunno"}, - {"for TLS 1.1 (RFC4346) support", test_tls1_1, "yes", "no", "dunno"}, - {"fallback from TLS 1.1 to", test_tls1_1_fallback, "TLS 1.0", - "failed", - "SSL 3.0"}, - {"for TLS 1.2 (RFC5246) support", test_tls1_2, "yes", "no", "dunno"}, - {"for TLS 1.3 (RFC8446) support", test_tls1_3, "yes", "no", "dunno"}, - {"for known TLS or SSL protocols support", test_known_protocols, "yes", - "no", "dunno", 0, 1}, - - {"TLS1.2 neg fallback from TLS 1.6 to", test_tls1_6_fallback, NULL, - "failed (server requires fallback dance)", "dunno"}, - {"for inappropriate fallback (RFC7507) support", test_rfc7507, "yes", - "no", "dunno"}, - {"for HTTPS server name", test_server, NULL, "failed", "not checked", - 1}, - {"for certificate information", test_certificate, NULL, "", ""}, - {"for certificate chain order", test_chain_order, "sorted", "unsorted", - "unknown"}, - {"for trusted CAs", test_server_cas, NULL, "", ""}, - {"for safe renegotiation (RFC5746) support", test_safe_renegotiation, - "yes", - "no", "dunno"}, - {"for Safe renegotiation support (SCSV)", - test_safe_renegotiation_scsv, - "yes", "no", "dunno"}, - {"for encrypt-then-MAC (RFC7366) support", test_etm, "yes", "no", - "dunno"}, - {"for ext master secret (RFC7627) support", test_ext_master_secret, - "yes", "no", "dunno"}, - {"for heartbeat (RFC6520) support", test_heartbeat_extension, "yes", - "no", "dunno"}, - {"for version rollback bug in RSA PMS", test_rsa_pms, "no", "yes", - "dunno"}, - {"for version rollback bug in Client Hello", test_version_rollback, - "no", "yes", "dunno"}, - {"whether the server ignores the RSA PMS version", - test_rsa_pms_version_check, "yes", "no", "dunno"}, - {"whether small records (512 bytes) are tolerated on handshake", - test_small_records, "yes", "no", "dunno"}, - {"whether cipher suites not in SSL 3.0 spec are accepted", - test_unknown_ciphersuites, "yes", "no", "dunno"}, - {"whether a bogus TLS record version in the client hello is accepted", - test_version_oob, "yes", "no", "dunno"}, - {"whether the server understands TLS closure alerts", test_bye, - "yes", "no", "partially"}, + { "whether %NO_EXTENSIONS is required", test_no_extensions, "no", "yes", + "dunno" }, + { "whether %COMPAT is required", test_record_padding, "no", "yes", + "dunno" }, + { "for TLS 1.0 (RFC2246) support", test_tls1, "yes", "no", "dunno" }, + { "for TLS 1.0 (RFC2246) support with TLS 1.0 record version", + test_tls1_nossl3, "yes", "no", "dunno" }, + { "for TLS 1.1 (RFC4346) support", test_tls1_1, "yes", "no", "dunno" }, + { "fallback from TLS 1.1 to", test_tls1_1_fallback, "TLS 1.0", "failed", + "SSL 3.0" }, + { "for TLS 1.2 (RFC5246) support", test_tls1_2, "yes", "no", "dunno" }, + { "for TLS 1.3 (RFC8446) support", test_tls1_3, "yes", "no", "dunno" }, + { "for known TLS or SSL protocols support", test_known_protocols, "yes", + "no", "dunno", 0, 1 }, + + { "TLS1.2 neg fallback from TLS 1.6 to", test_tls1_6_fallback, NULL, + "failed (server requires fallback dance)", "dunno" }, + { "for inappropriate fallback (RFC7507) support", test_rfc7507, "yes", + "no", "dunno" }, + { "for HTTPS server name", test_server, NULL, "failed", "not checked", + 1 }, + { "for certificate information", test_certificate, NULL, "", "" }, + { "for certificate chain order", test_chain_order, "sorted", "unsorted", + "unknown" }, + { "for trusted CAs", test_server_cas, NULL, "", "" }, + { "for safe renegotiation (RFC5746) support", test_safe_renegotiation, + "yes", "no", "dunno" }, + { "for Safe renegotiation support (SCSV)", test_safe_renegotiation_scsv, + "yes", "no", "dunno" }, + { "for encrypt-then-MAC (RFC7366) support", test_etm, "yes", "no", + "dunno" }, + { "for ext master secret (RFC7627) support", test_ext_master_secret, + "yes", "no", "dunno" }, + { "for heartbeat (RFC6520) support", test_heartbeat_extension, "yes", + "no", "dunno" }, + { "for version rollback bug in RSA PMS", test_rsa_pms, "no", "yes", + "dunno" }, + { "for version rollback bug in Client Hello", test_version_rollback, + "no", "yes", "dunno" }, + { "whether the server ignores the RSA PMS version", + test_rsa_pms_version_check, "yes", "no", "dunno" }, + { "whether small records (512 bytes) are tolerated on handshake", + test_small_records, "yes", "no", "dunno" }, + { "whether cipher suites not in SSL 3.0 spec are accepted", + test_unknown_ciphersuites, "yes", "no", "dunno" }, + { "whether a bogus TLS record version in the client hello is accepted", + test_version_oob, "yes", "no", "dunno" }, + { "whether the server understands TLS closure alerts", test_bye, "yes", + "no", "partially" }, /* the fact that is after the closure alert test does matter. */ - {"whether the server supports session resumption", - test_session_resume2, "yes", "no", "dunno"}, + { "whether the server supports session resumption", + test_session_resume2, "yes", "no", "dunno" }, #ifdef ENABLE_ANON - {"for anonymous authentication support", test_anonymous, "yes", - "no", - "dunno"}, - {"anonymous Diffie-Hellman group info", test_dhe_group, NULL, "N/A", - "N/A"}, + { "for anonymous authentication support", test_anonymous, "yes", "no", + "dunno" }, + { "anonymous Diffie-Hellman group info", test_dhe_group, NULL, "N/A", + "N/A" }, #endif - {"for RSA key exchange support", test_rsa, "yes", - "no", - "dunno"}, - {"for ephemeral Diffie-Hellman support", test_dhe, "yes", "no", - "dunno"}, - {"for RFC7919 Diffie-Hellman support", test_rfc7919, "yes", "no", - "dunno"}, - {"ephemeral Diffie-Hellman group info", test_dhe_group, NULL, "N/A", - "N/A"}, - {"for ephemeral EC Diffie-Hellman support", test_ecdhe, "yes", - "no", - "dunno"}, + { "for RSA key exchange support", test_rsa, "yes", "no", "dunno" }, + { "for ephemeral Diffie-Hellman support", test_dhe, "yes", "no", + "dunno" }, + { "for RFC7919 Diffie-Hellman support", test_rfc7919, "yes", "no", + "dunno" }, + { "ephemeral Diffie-Hellman group info", test_dhe_group, NULL, "N/A", + "N/A" }, + { "for ephemeral EC Diffie-Hellman support", test_ecdhe, "yes", "no", + "dunno" }, #ifdef ENABLE_GOST - {"for VKO GOST-2012 (draft-smyshlyaev-tls12-gost-suites) support", - test_vko_gost_12, "yes", "no", "dunno"}, + { "for VKO GOST-2012 (draft-smyshlyaev-tls12-gost-suites) support", + test_vko_gost_12, "yes", "no", "dunno" }, #endif - {"for curve SECP256r1 (RFC4492)", test_ecdhe_secp256r1, "yes", "no", - "dunno"}, - {"for curve SECP384r1 (RFC4492)", test_ecdhe_secp384r1, "yes", "no", - "dunno"}, - {"for curve SECP521r1 (RFC4492)", test_ecdhe_secp521r1, "yes", "no", - "dunno"}, - {"for curve X25519 (RFC8422)", test_ecdhe_x25519, "yes", "no", "dunno"}, - {"for AES-GCM cipher (RFC5288) support", test_aes_gcm, "yes", "no", - "dunno"}, - {"for AES-CCM cipher (RFC6655) support", test_aes_ccm, "yes", "no", - "dunno"}, - {"for AES-CCM-8 cipher (RFC6655) support", test_aes_ccm_8, "yes", "no", - "dunno"}, - {"for AES-CBC cipher (RFC3268) support", test_aes, "yes", "no", - "dunno"}, - {"for CAMELLIA-GCM cipher (RFC6367) support", test_camellia_gcm, "yes", - "no", - "dunno"}, - {"for CAMELLIA-CBC cipher (RFC5932) support", test_camellia_cbc, "yes", - "no", - "dunno"}, - {"for 3DES-CBC cipher (RFC2246) support", test_3des, "yes", "no", - "dunno"}, - {"for ARCFOUR 128 cipher (RFC2246) support", test_arcfour, "yes", "no", - "dunno"}, - {"for CHACHA20-POLY1305 cipher (RFC7905) support", test_chacha20, "yes", - "no", - "dunno"}, + { "for curve SECP256r1 (RFC4492)", test_ecdhe_secp256r1, "yes", "no", + "dunno" }, + { "for curve SECP384r1 (RFC4492)", test_ecdhe_secp384r1, "yes", "no", + "dunno" }, + { "for curve SECP521r1 (RFC4492)", test_ecdhe_secp521r1, "yes", "no", + "dunno" }, + { "for curve X25519 (RFC8422)", test_ecdhe_x25519, "yes", "no", + "dunno" }, + { "for AES-GCM cipher (RFC5288) support", test_aes_gcm, "yes", "no", + "dunno" }, + { "for AES-CCM cipher (RFC6655) support", test_aes_ccm, "yes", "no", + "dunno" }, + { "for AES-CCM-8 cipher (RFC6655) support", test_aes_ccm_8, "yes", "no", + "dunno" }, + { "for AES-CBC cipher (RFC3268) support", test_aes, "yes", "no", + "dunno" }, + { "for CAMELLIA-GCM cipher (RFC6367) support", test_camellia_gcm, "yes", + "no", "dunno" }, + { "for CAMELLIA-CBC cipher (RFC5932) support", test_camellia_cbc, "yes", + "no", "dunno" }, + { "for 3DES-CBC cipher (RFC2246) support", test_3des, "yes", "no", + "dunno" }, + { "for ARCFOUR 128 cipher (RFC2246) support", test_arcfour, "yes", "no", + "dunno" }, + { "for CHACHA20-POLY1305 cipher (RFC7905) support", test_chacha20, + "yes", "no", "dunno" }, #ifdef ENABLE_GOST - {"for GOST28147-CNT cipher (draft-smyshlyaev-tls12-gost-suites) support", test_gost_cnt, "yes", "no", - "dunno"}, + { "for GOST28147-CNT cipher (draft-smyshlyaev-tls12-gost-suites) support", + test_gost_cnt, "yes", "no", "dunno" }, #endif - {"for MD5 MAC support", test_md5, "yes", "no", "dunno"}, - {"for SHA1 MAC support", test_sha, "yes", "no", "dunno"}, - {"for SHA256 MAC support", test_sha256, "yes", "no", "dunno"}, + { "for MD5 MAC support", test_md5, "yes", "no", "dunno" }, + { "for SHA1 MAC support", test_sha, "yes", "no", "dunno" }, + { "for SHA256 MAC support", test_sha256, "yes", "no", "dunno" }, #ifdef ENABLE_GOST - {"for GOST28147-IMIT MAC (draft-smyshlyaev-tls12-gost-suites) support", - test_gost_imit, "yes", "no", "dunno"}, + { "for GOST28147-IMIT MAC (draft-smyshlyaev-tls12-gost-suites) support", + test_gost_imit, "yes", "no", "dunno" }, #endif - {"for max record size (RFC6066) support", test_max_record_size, "yes", - "no", "dunno"}, + { "for max record size (RFC6066) support", test_max_record_size, "yes", + "no", "dunno" }, #ifdef ENABLE_OCSP - {"for OCSP status response (RFC6066) support", test_ocsp_status, "yes", - "no", "dunno"}, + { "for OCSP status response (RFC6066) support", test_ocsp_status, "yes", + "no", "dunno" }, #endif - {NULL, NULL, NULL, NULL, NULL} + { NULL, NULL, NULL, NULL, NULL } }; const char *ip; @@ -239,15 +230,15 @@ gnutls_session_t init_tls_session(const char *host) set_read_funcs(state); if (host && is_ip(host) == 0) - gnutls_server_name_set(state, GNUTLS_NAME_DNS, - host, strlen(host)); + gnutls_server_name_set(state, GNUTLS_NAME_DNS, host, + strlen(host)); return state; } -int do_handshake(socket_st * socket) +int do_handshake(socket_st *socket) { - return 0; /* we do it locally */ + return 0; /* we do it locally */ } int main(int argc, char **argv) @@ -279,7 +270,8 @@ int main(int argc, char **argv) snprintf(portname, sizeof(portname), "%d", port); /* X509 stuff */ - if (gnutls_certificate_allocate_credentials(&xcred) < 0) { /* space for 2 certificates */ + if (gnutls_certificate_allocate_credentials(&xcred) < + 0) { /* space for 2 certificates */ fprintf(stderr, "memory error\n"); exit(1); } @@ -318,9 +310,8 @@ int main(int argc, char **argv) printf("Checking %s:%s\n", hostname, portname); for (i = 0; tls_tests[i].test_name != NULL; i++) { - - if (strcmp(app_proto, "https") != 0 - && tls_tests[i].https_only != 0) { + if (strcmp(app_proto, "https") != 0 && + tls_tests[i].https_only != 0) { continue; } @@ -348,7 +339,8 @@ int main(int argc, char **argv) printf(" %s\n", tls_tests[i].fail_str); else if (ret == TEST_UNSURE) printf(" %s\n", tls_tests[i].unsure_str); - else if ((ret == TEST_IGNORE || ret == TEST_IGNORE2) && verbose) { + else if ((ret == TEST_IGNORE || ret == TEST_IGNORE2) && + verbose) { printf(" skipped\n"); } @@ -403,5 +395,4 @@ static void cmd_parser(int argc, char **argv) if (HAVE_OPT(VERBOSE)) verbose++; - } diff --git a/src/cli.c b/src/cli.c index 08dddb08f2..2accea465b 100644 --- a/src/cli.c +++ b/src/cli.c @@ -29,9 +29,9 @@ #include #include #if HAVE_SYS_SOCKET_H -# include +#include #elif HAVE_WS2TCPIP_H -# include +#include #endif #include #include @@ -44,7 +44,7 @@ /* Get TCP_FASTOPEN */ #ifdef HAVE_NETINET_TCP_H -# include +#include #endif #include @@ -65,7 +65,7 @@ #include "inline_cmds.h" #ifdef HAVE_DANE -# include +#include #endif #include @@ -76,14 +76,15 @@ #define MAX_BUF 4096 -#define HEADER_PATTERN "GET /%s HTTP/1.0\r\n" \ - "Host: %s\r\n" \ - "Accept: */*\r\n" \ - "Connection: close\r\n\r\n" +#define HEADER_PATTERN \ + "GET /%s HTTP/1.0\r\n" \ + "Host: %s\r\n" \ + "Accept: */*\r\n" \ + "Connection: close\r\n\r\n" /* global stuff here */ -int resume, starttls, insecure, ranges, rehandshake, udp, mtu, - inline_commands, waitresumption; +int resume, starttls, insecure, ranges, rehandshake, udp, mtu, inline_commands, + waitresumption; unsigned int global_vflags = 0; char *hostname = NULL; char service[32] = ""; @@ -120,7 +121,7 @@ static gnutls_certificate_credentials_t xcred; /* prototypes */ -static void check_server_cmd(socket_st * socket, int ret); +static void check_server_cmd(socket_st *socket, int ret); static void init_global_tls_stuff(void); static int cert_verify_ocsp(gnutls_session_t session); static const char *host_from_url(const char *url, unsigned int *port, @@ -128,7 +129,7 @@ static const char *host_from_url(const char *url, unsigned int *port, static size_t get_data(void *buf, size_t size, size_t nmemb, void *userp); static int getissuer_callback(const gnutls_x509_trust_list_t tlist, const gnutls_x509_crt_t cert, - gnutls_x509_crt_t ** issuers, + gnutls_x509_crt_t **issuers, unsigned int *issuers_size); #define MAX_CRT 6 @@ -140,7 +141,7 @@ static gnutls_privkey_t rawpk_key = NULL; /* Load a PKCS #8, PKCS #12 private key or PKCS #11 URL */ -static void load_priv_key(gnutls_privkey_t * privkey, const char *key_source) +static void load_priv_key(gnutls_privkey_t *privkey, const char *key_source) { int ret; gnutls_datum_t data = { NULL, 0 }; @@ -158,8 +159,7 @@ static void load_priv_key(gnutls_privkey_t * privkey, const char *key_source) if (gnutls_url_is_supported(key_source) != 0) { ret = gnutls_privkey_import_url(*privkey, key_source, 0); if (ret < 0) { - fprintf(stderr, - "*** Error loading url: %s\n", + fprintf(stderr, "*** Error loading url: %s\n", gnutls_strerror(ret)); exit(1); } @@ -170,11 +170,10 @@ static void load_priv_key(gnutls_privkey_t * privkey, const char *key_source) exit(1); } - ret = gnutls_privkey_import_x509_raw(*privkey, &data, - x509ctype, NULL, 0); + ret = gnutls_privkey_import_x509_raw(*privkey, &data, x509ctype, + NULL, 0); if (ret < 0) { - fprintf(stderr, - "*** Error importing key: %s\n", + fprintf(stderr, "*** Error importing key: %s\n", gnutls_strerror(ret)); exit(1); } @@ -205,15 +204,13 @@ static void load_x509_keys(void) gnutls_x509_crt_set_pin_function(crt_list[0], pin_callback, NULL); - ret = - gnutls_x509_crt_import_pkcs11_url(crt_list[0], - x509_certfile, 0); + ret = gnutls_x509_crt_import_pkcs11_url( + crt_list[0], x509_certfile, 0); if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) - ret = - gnutls_x509_crt_import_pkcs11_url - (crt_list[0], x509_certfile, - GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + ret = gnutls_x509_crt_import_pkcs11_url( + crt_list[0], x509_certfile, + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { fprintf(stderr, @@ -222,7 +219,7 @@ static void load_x509_keys(void) } x509_crt_size = 1; } else -#endif /* ENABLE_PKCS11 */ +#endif /* ENABLE_PKCS11 */ { ret = gnutls_load_file(x509_certfile, &data); @@ -233,10 +230,9 @@ static void load_x509_keys(void) } crt_num = MAX_CRT; - ret = - gnutls_x509_crt_list_import(crt_list, &crt_num, - &data, x509ctype, - GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED); + ret = gnutls_x509_crt_list_import( + crt_list, &crt_num, &data, x509ctype, + GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED); if (ret < 0) { if (ret == GNUTLS_E_SHORT_MEMORY_BUFFER) { fprintf(stderr, @@ -254,9 +250,8 @@ static void load_x509_keys(void) } for (i = 0; i < x509_crt_size; i++) { - ret = - gnutls_pcert_import_x509(&x509_crt[i], - crt_list[i], 0); + ret = gnutls_pcert_import_x509(&x509_crt[i], + crt_list[i], 0); if (ret < 0) { fprintf(stderr, "*** Error importing crt to pcert: %s\n", @@ -270,8 +265,7 @@ static void load_x509_keys(void) load_priv_key(&x509_key, x509_keyfile); - log_msg(stdout, - "Processed %d client X.509 certificates...\n", + log_msg(stdout, "Processed %d client X.509 certificates...\n", x509_crt_size); } } @@ -291,9 +285,8 @@ static void load_rawpk_keys(void) exit(1); } - ret = - gnutls_pcert_import_rawpk_raw(&rawpk, &data, x509ctype, 0, - 0); + ret = gnutls_pcert_import_rawpk_raw(&rawpk, &data, x509ctype, 0, + 0); if (ret < 0) { fprintf(stderr, "*** Error importing rawpk to pcert: %s\n", @@ -306,8 +299,8 @@ static void load_rawpk_keys(void) // Secondly, we load the private key corresponding to the raw pk load_priv_key(&rawpk_key, rawpk_keyfile); - log_msg(stdout, - "Processed %d client raw public key pair...\n", 1); + log_msg(stdout, "Processed %d client raw public key pair...\n", + 1); } } @@ -351,9 +344,8 @@ static void try_save_cert(gnutls_session_t session) } for (i = 0; i < cert_list_size; i++) { - ret = - gnutls_pem_base64_encode_alloc("CERTIFICATE", &cert_list[i], - &t); + ret = gnutls_pem_base64_encode_alloc("CERTIFICATE", + &cert_list[i], &t); if (ret < 0) { fprintf(stderr, "error[%d]: %s\n", __LINE__, gnutls_strerror(ret)); @@ -424,8 +416,8 @@ static void try_save_ocsp_status(gnutls_session_t session) } gnutls_datum_t t; - ret = gnutls_pem_base64_encode_alloc("OCSP RESPONSE", - &oresp, &t); + ret = gnutls_pem_base64_encode_alloc("OCSP RESPONSE", &oresp, + &t); if (ret < 0) { fprintf(stderr, "error allocating PEM OCSP response: %s\n", @@ -479,7 +471,8 @@ static int cert_verify_callback(gnutls_session_t session) } #ifndef ENABLE_OCSP - if (HAVE_OPT(SAVE_OCSP_MULTI) || HAVE_OPT(SAVE_OCSP) || HAVE_OPT(OCSP)) { + if (HAVE_OPT(SAVE_OCSP_MULTI) || HAVE_OPT(SAVE_OCSP) || + HAVE_OPT(OCSP)) { fprintf(stderr, "OCSP is not supported!\n"); } #else @@ -493,19 +486,19 @@ static int cert_verify_callback(gnutls_session_t session) if (ca_verify) { rc = cert_verify(session, host, GNUTLS_KP_TLS_WWW_SERVER); if (rc == 0) { - log_msg - (stdout, - "*** PKI verification of server certificate failed...\n"); + log_msg(stdout, + "*** PKI verification of server certificate failed...\n"); if (!insecure && !ssh) return -1; } #ifdef ENABLE_OCSP - else if (ENABLED_OPT(OCSP) && gnutls_ocsp_status_request_is_checked(session, 0) == 0) { /* off-line verification succeeded. Try OCSP */ + else if (ENABLED_OPT(OCSP) && + gnutls_ocsp_status_request_is_checked(session, 0) == + 0) { /* off-line verification succeeded. Try OCSP */ rc = cert_verify_ocsp(session); if (rc == -1) { - log_msg - (stdout, - "*** Verifying (with OCSP) server certificate chain failed...\n"); + log_msg(stdout, + "*** Verifying (with OCSP) server certificate chain failed...\n"); if (!insecure && !ssh) return -1; } else if (rc == 0) @@ -519,12 +512,13 @@ static int cert_verify_callback(gnutls_session_t session) #endif } - if (dane) { /* try DANE auth */ + if (dane) { /* try DANE auth */ #ifdef HAVE_DANE int port; unsigned vflags = 0; - unsigned int sflags = - ENABLED_OPT(LOCAL_DNS) ? 0 : DANE_F_IGNORE_LOCAL_RESOLVER; + unsigned int sflags = ENABLED_OPT(LOCAL_DNS) ? + 0 : + DANE_F_IGNORE_LOCAL_RESOLVER; /* if we didn't verify the chain it only makes sense * to check the end certificate using dane. */ @@ -533,11 +527,10 @@ static int cert_verify_callback(gnutls_session_t session) port = service_to_port(service, udp ? "udp" : "tcp"); rc = dane_verify_session_crt(NULL, session, host, - udp ? "udp" : "tcp", port, - sflags, vflags, &status); + udp ? "udp" : "tcp", port, sflags, + vflags, &status); if (rc < 0) { - fprintf(stderr, - "*** DANE verification error: %s\n", + fprintf(stderr, "*** DANE verification error: %s\n", dane_strerror(rc)); if (!insecure && !ssh) return -1; @@ -564,7 +557,7 @@ static int cert_verify_callback(gnutls_session_t session) #endif } - if (ssh) { /* try ssh auth */ + if (ssh) { /* try ssh auth */ unsigned int list_size; const gnutls_datum_t *cert; @@ -576,8 +569,7 @@ static int cert_verify_callback(gnutls_session_t session) txt_service = port_to_service(service, udp ? "udp" : "tcp"); - rc = gnutls_verify_stored_pubkey(NULL, NULL, host, - txt_service, + rc = gnutls_verify_stored_pubkey(NULL, NULL, host, txt_service, GNUTLS_CRT_X509, cert, 0); if (rc == GNUTLS_E_NO_CERTIFICATE_FOUND) { fprintf(stderr, @@ -591,8 +583,8 @@ static int cert_verify_callback(gnutls_session_t session) if (strictssh) return -1; - rc = read_yesno - ("Are you sure you want to trust it? (y/N): "); + rc = read_yesno( + "Are you sure you want to trust it? (y/N): "); if (rc == 0) return -1; } else if (rc == GNUTLS_E_CERTIFICATE_KEY_MISMATCH) { @@ -609,24 +601,21 @@ static int cert_verify_callback(gnutls_session_t session) if (strictssh) return -1; - rc = read_yesno - ("Do you trust the received key? (y/N): "); + rc = read_yesno( + "Do you trust the received key? (y/N): "); if (rc == 0) return -1; } else if (rc < 0) { - fprintf(stderr, - "gnutls_verify_stored_pubkey: %s\n", + fprintf(stderr, "gnutls_verify_stored_pubkey: %s\n", gnutls_strerror(rc)); return -1; } if (rc != 0) { - rc = gnutls_store_pubkey(NULL, NULL, host, - txt_service, + rc = gnutls_store_pubkey(NULL, NULL, host, txt_service, GNUTLS_CRT_X509, cert, 0, 0); if (rc < 0) - fprintf(stderr, - "Could not store key: %s\n", + fprintf(stderr, "Could not store key: %s\n", gnutls_strerror(rc)); } } @@ -638,12 +627,11 @@ static int cert_verify_callback(gnutls_session_t session) * before a handshake. */ -static int -cert_callback(gnutls_session_t session, - const gnutls_datum_t * req_ca_rdn, int nreqs, - const gnutls_pk_algorithm_t * sign_algos, - int sign_algos_length, gnutls_pcert_st ** pcert, - unsigned int *pcert_length, gnutls_privkey_t * pkey) +static int cert_callback(gnutls_session_t session, + const gnutls_datum_t *req_ca_rdn, int nreqs, + const gnutls_pk_algorithm_t *sign_algos, + int sign_algos_length, gnutls_pcert_st **pcert, + unsigned int *pcert_length, gnutls_privkey_t *pkey) { char issuer_dn[256]; int i, ret, cert_type; @@ -655,16 +643,14 @@ cert_callback(gnutls_session_t session, if (nreqs > 0) log_msg(stdout, "- Server's trusted authorities:\n"); else - log_msg - (stdout, - "- Server did not send us any trusted authorities names.\n"); + log_msg(stdout, + "- Server did not send us any trusted authorities names.\n"); /* print the names (if any) */ for (i = 0; i < nreqs; i++) { len = sizeof(issuer_dn); - ret = - gnutls_x509_rdn_get(&req_ca_rdn[i], issuer_dn, - &len); + ret = gnutls_x509_rdn_get(&req_ca_rdn[i], issuer_dn, + &len); if (ret >= 0) { log_msg(stdout, " [%d]: ", i); log_msg(stdout, "%s\n", issuer_dn); @@ -687,9 +673,8 @@ cert_callback(gnutls_session_t session, if (x509_key != NULL) { *pkey = x509_key; } else { - log_msg - (stdout, - "- Could not find a suitable key to send to server\n"); + log_msg(stdout, + "- Could not find a suitable key to send to server\n"); return -1; } @@ -699,9 +684,8 @@ cert_callback(gnutls_session_t session, break; case GNUTLS_CRT_RAWPK: if (rawpk_key == NULL || rawpk.type != GNUTLS_CRT_RAWPK) { - log_msg - (stdout, - "- Could not find a suitable key to send to server\n"); + log_msg(stdout, + "- Could not find a suitable key to send to server\n"); return -1; } @@ -719,7 +703,6 @@ cert_callback(gnutls_session_t session, log_msg(stdout, "- Successfully sent %u certificate(s) to server.\n", *pcert_length); return 0; - } /* initializes a gnutls_session_t with some defaults. @@ -767,8 +750,8 @@ gnutls_session_t init_tls_session(const char *host) gnutls_server_name_set(session, GNUTLS_NAME_DNS, sni_host, strlen(sni_host)); } else if (host != NULL && is_ip(host) == 0) - gnutls_server_name_set(session, GNUTLS_NAME_DNS, - host, strlen(host)); + gnutls_server_name_set(session, GNUTLS_NAME_DNS, host, + strlen(host)); } if (HAVE_OPT(DH_BITS)) { @@ -840,10 +823,8 @@ gnutls_session_t init_tls_session(const char *host) #ifdef ENABLE_DTLS_SRTP if (HAVE_OPT(SRTP_PROFILES)) { - ret = - gnutls_srtp_set_profile_direct(session, - OPT_ARG(SRTP_PROFILES), - &err); + ret = gnutls_srtp_set_profile_direct( + session, OPT_ARG(SRTP_PROFILES), &err); if (ret == GNUTLS_E_INVALID_REQUEST) fprintf(stderr, "Syntax error at: %s\n", err); else if (ret != 0) @@ -865,7 +846,7 @@ static void cmd_parser(int argc, char **argv); /* Returns zero if the error code was successfully handled. */ -static int handle_error(socket_st * hd, int err) +static int handle_error(socket_st *hd, int err) { int alert, ret; const char *err_type, *str; @@ -886,8 +867,8 @@ static int handle_error(socket_st * hd, int err) str = str_unknown; fprintf(stderr, "*** %s error: %s\n", err_type, str); - if (err == GNUTLS_E_WARNING_ALERT_RECEIVED - || err == GNUTLS_E_FATAL_ALERT_RECEIVED) { + if (err == GNUTLS_E_WARNING_ALERT_RECEIVED || + err == GNUTLS_E_FATAL_ALERT_RECEIVED) { alert = gnutls_alert_get(hd->session); str = gnutls_alert_get_name(alert); if (str == NULL) @@ -920,7 +901,7 @@ static void tls_log_func(int level, const char *str) #define IN_TERM 3 /* returns IN_KEYBOARD for keyboard input and IN_NET for network input */ -static int check_net_or_keyboard_input(socket_st * hd, unsigned user_term) +static int check_net_or_keyboard_input(socket_st *hd, unsigned user_term) { int maxfd; fd_set rset; @@ -959,9 +940,8 @@ static int check_net_or_keyboard_input(socket_st * hd, unsigned user_term) #ifdef _WIN32 { int state; - state = - WaitForSingleObject(GetStdHandle - (STD_INPUT_HANDLE), 200); + state = WaitForSingleObject( + GetStdHandle(STD_INPUT_HANDLE), 200); if (state == WAIT_OBJECT_0) return IN_KEYBOARD; @@ -972,13 +952,12 @@ static int check_net_or_keyboard_input(socket_st * hd, unsigned user_term) #endif if (err == 0 && user_term) return IN_TERM; - } - while (err == 0); + } while (err == 0); return IN_NONE; } -static int try_rehandshake(socket_st * hd) +static int try_rehandshake(socket_st *hd) { int ret; @@ -993,14 +972,13 @@ static int try_rehandshake(socket_st * hd) } } -static int try_rekey(socket_st * hd, unsigned peer) +static int try_rekey(socket_st *hd, unsigned peer) { int ret; do { - ret = - gnutls_session_key_update(hd->session, - peer ? GNUTLS_KU_PEER : 0); + ret = gnutls_session_key_update(hd->session, + peer ? GNUTLS_KU_PEER : 0); } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) { @@ -1013,7 +991,7 @@ static int try_rekey(socket_st * hd, unsigned peer) } } -static int try_resume(socket_st * hd) +static int try_resume(socket_st *hd) { int ret, socket_flags = SOCKET_FLAG_DONT_PRINT_ERRORS; gnutls_datum_t rdata = { NULL, 0 }; @@ -1028,8 +1006,7 @@ static int try_resume(socket_st * hd) } if ((gnutls_protocol_get_version(hd->session) != - GNUTLS_TLS1_3) - || + GNUTLS_TLS1_3) || ((gnutls_session_get_flags(hd->session) & GNUTLS_SFLAGS_SESSION_TICKET))) { break; @@ -1047,9 +1024,8 @@ static int try_resume(socket_st * hd) canonicalize_host(hostname, service, sizeof(service)); - log_msg - (stdout, - "\n\n- Connecting again- trying to resume previous session\n"); + log_msg(stdout, + "\n\n- Connecting again- trying to resume previous session\n"); if (HAVE_OPT(STARTTLS_PROTO)) socket_flags |= SOCKET_FLAG_STARTTLS; else if (fastopen) @@ -1083,9 +1059,8 @@ static int try_resume(socket_st * hd) return 0; } -static -bool parse_for_inline_commands_in_buffer(char *buffer, size_t bytes, - inline_cmds_st * inline_cmds) +static bool parse_for_inline_commands_in_buffer(char *buffer, size_t bytes, + inline_cmds_st *inline_cmds) { ssize_t local_bytes, match_bytes, prev_bytes_copied, ii; unsigned jj; @@ -1098,12 +1073,14 @@ bool parse_for_inline_commands_in_buffer(char *buffer, size_t bytes, if (inline_cmds->bytes_copied) { local_buffer_ptr = - &inline_cmds->inline_cmd_buffer[inline_cmds->bytes_copied]; + &inline_cmds + ->inline_cmd_buffer[inline_cmds->bytes_copied]; - local_bytes = - ((inline_cmds->bytes_copied + bytes) <= - MAX_INLINE_COMMAND_BYTES) ? (ssize_t) bytes - : (MAX_INLINE_COMMAND_BYTES - inline_cmds->bytes_copied); + local_bytes = ((inline_cmds->bytes_copied + bytes) <= + MAX_INLINE_COMMAND_BYTES) ? + (ssize_t)bytes : + (MAX_INLINE_COMMAND_BYTES - + inline_cmds->bytes_copied); memcpy(local_buffer_ptr, buffer, local_bytes); prev_bytes_copied = inline_cmds->bytes_copied; @@ -1122,23 +1099,22 @@ bool parse_for_inline_commands_in_buffer(char *buffer, size_t bytes, inline_cmds->current_ptr = local_buffer_ptr; - if (local_buffer_ptr[0] == inline_commands_prefix[0] - && inline_cmds->lf_found) { + if (local_buffer_ptr[0] == inline_commands_prefix[0] && + inline_cmds->lf_found) { for (jj = 0; jj < NUM_INLINE_COMMANDS; jj++) { - if (inline_commands_prefix[0] != '^') { /* refer inline_cmds.h for usage of ^ */ + if (inline_commands_prefix[0] != + '^') { /* refer inline_cmds.h for usage of ^ */ strcpy(inline_command_string, inline_commands_def[jj].string); - inline_command_string[strlen - (inline_commands_def - [jj].string)] = '\0'; + inline_command_string[strlen( + inline_commands_def[jj].string)] = '\0'; inline_command_string[0] = - inline_commands_prefix[0]; + inline_commands_prefix[0]; /* Inline commands are delimited by the inline_commands_prefix[0] (default is ^). The inline_commands_def[].string includes a trailing LF */ - inline_command_string[strlen - (inline_commands_def - [jj].string) - 2] = - inline_commands_prefix[0]; + inline_command_string + [strlen(inline_commands_def[jj].string) - + 2] = inline_commands_prefix[0]; ptr = inline_command_string; } else ptr = inline_commands_def[jj].string; @@ -1146,32 +1122,34 @@ bool parse_for_inline_commands_in_buffer(char *buffer, size_t bytes, l = strlen(ptr); match_bytes = (local_bytes <= l) ? local_bytes : l; if (strncmp(ptr, local_buffer_ptr, match_bytes) == 0) { - if (match_bytes == (ssize_t) strlen(ptr)) { + if (match_bytes == (ssize_t)strlen(ptr)) { inline_cmds->new_buffer_ptr = - buffer + match_bytes - - prev_bytes_copied; + buffer + match_bytes - + prev_bytes_copied; inline_cmds->cmd_found = - inline_commands_def[jj].command; - inline_cmds->bytes_copied = 0; /* reset it */ + inline_commands_def[jj].command; + inline_cmds->bytes_copied = + 0; /* reset it */ } else { /* partial command */ memcpy(&inline_cmds->inline_cmd_buffer - [inline_cmds->bytes_copied], + [inline_cmds + ->bytes_copied], buffer, bytes); inline_cmds->bytes_copied += bytes; } return true; } /* else - if not a match, do nothing here */ - } /* for */ + } /* for */ } for (ii = prev_bytes_copied; ii < local_bytes; ii++) { - if (ii && local_buffer_ptr[ii] == inline_commands_prefix[0] - && inline_cmds->lf_found) { + if (ii && local_buffer_ptr[ii] == inline_commands_prefix[0] && + inline_cmds->lf_found) { /* possible inline command. First, let's flush bytes up to ^ */ inline_cmds->new_buffer_ptr = - buffer + ii - prev_bytes_copied; + buffer + ii - prev_bytes_copied; inline_cmds->bytes_to_flush = ii; inline_cmds->lf_found = true; @@ -1182,14 +1160,13 @@ bool parse_for_inline_commands_in_buffer(char *buffer, size_t bytes, } else { inline_cmds->lf_found = false; } - } /* for */ + } /* for */ - inline_cmds->bytes_copied = 0; /* reset it */ - return false; /* not an inline command */ + inline_cmds->bytes_copied = 0; /* reset it */ + return false; /* not an inline command */ } -static -int run_inline_command(inline_cmds_st * cmd, socket_st * hd) +static int run_inline_command(inline_cmds_st *cmd, socket_st *hd) { switch (cmd->cmd_found) { case INLINE_COMMAND_RESUME: @@ -1205,21 +1182,21 @@ int run_inline_command(inline_cmds_st * cmd, socket_st * hd) } } -static -int do_inline_command_processing(char *buffer_ptr, size_t curr_bytes, - socket_st * hd, inline_cmds_st * inline_cmds) +static int do_inline_command_processing(char *buffer_ptr, size_t curr_bytes, + socket_st *hd, + inline_cmds_st *inline_cmds) { int skip_bytes, bytes; bool inline_cmd_start_found; bytes = curr_bytes; - continue_inline_processing: +continue_inline_processing: /* parse_for_inline_commands_in_buffer hunts for start of an inline command * sequence. The function maintains state information in inline_cmds. */ - inline_cmd_start_found = - parse_for_inline_commands_in_buffer(buffer_ptr, bytes, inline_cmds); + inline_cmd_start_found = parse_for_inline_commands_in_buffer( + buffer_ptr, bytes, inline_cmds); if (!inline_cmd_start_found) return bytes; @@ -1373,8 +1350,8 @@ int main(int argc, char **argv) } socket_open2(&hd, hostname, service, OPT_ARG(STARTTLS_PROTO), - socket_flags, CONNECT_MSG, NULL, NULL, - server_fp, client_fp); + socket_flags, CONNECT_MSG, NULL, NULL, server_fp, + client_fp); hd.verbose = verbose; @@ -1420,7 +1397,7 @@ int main(int argc, char **argv) memset(&inline_cmds, 0, sizeof(inline_cmds_st)); if (inline_commands) { - inline_cmds.lf_found = true; /* initially, at start of line */ + inline_cmds.lf_found = true; /* initially, at start of line */ } for (;;) { @@ -1445,9 +1422,9 @@ int main(int argc, char **argv) memset(buffer, 0, MAX_BUF + 1); ret = socket_recv(&hd, buffer, MAX_BUF); - if (ret == 0 - || (ret == GNUTLS_E_PREMATURE_TERMINATION - && user_term)) { + if (ret == 0 || + (ret == GNUTLS_E_PREMATURE_TERMINATION && + user_term)) { log_msg(stdout, "- Peer has closed the GnuTLS connection\n"); break; @@ -1458,8 +1435,8 @@ int main(int argc, char **argv) break; } else if (ret > 0) { if (verbose != 0) - log_msg(stdout, "- Received[%d]: ", - ret); + log_msg(stdout, + "- Received[%d]: ", ret); for (ii = 0; ii < ret; ii++) { fputc(buffer[ii], stdout); } @@ -1468,8 +1445,8 @@ int main(int argc, char **argv) } if (inp == IN_KEYBOARD && user_term == 0) { - if ((bytes = - read(fileno(stdin), buffer, MAX_BUF - 1)) <= 0) { + if ((bytes = read(fileno(stdin), buffer, + MAX_BUF - 1)) <= 0) { if (hd.secure == 0) { /* Warning! Do not touch this text string, it is used by external programs to search for when @@ -1486,11 +1463,11 @@ int main(int argc, char **argv) } } else { do { - ret = - gnutls_bye(hd.session, - GNUTLS_SHUT_WR); - } while (ret == GNUTLS_E_INTERRUPTED - || ret == GNUTLS_E_AGAIN); + ret = gnutls_bye( + hd.session, + GNUTLS_SHUT_WR); + } while (ret == GNUTLS_E_INTERRUPTED || + ret == GNUTLS_E_AGAIN); user_term = 1; } @@ -1509,16 +1486,16 @@ int main(int argc, char **argv) keyboard_bytes = bytes; keyboard_buffer_ptr = buffer; - inline_command_processing: + inline_command_processing: if (inline_commands) { - keyboard_bytes = - do_inline_command_processing - (keyboard_buffer_ptr, keyboard_bytes, - &hd, &inline_cmds); + keyboard_bytes = do_inline_command_processing( + keyboard_buffer_ptr, keyboard_bytes, + &hd, &inline_cmds); if (keyboard_bytes == 0) continue; - else if (keyboard_bytes < 0) { /* error processing an inline command */ + else if (keyboard_bytes < + 0) { /* error processing an inline command */ retval = 1; break; } else { @@ -1526,24 +1503,21 @@ int main(int argc, char **argv) * or may point to start or an offset into buffer. */ keyboard_buffer_ptr = - inline_cmds.current_ptr; + inline_cmds.current_ptr; } } - if (ranges - && gnutls_record_can_use_length_hiding(hd.session)) - { + if (ranges && + gnutls_record_can_use_length_hiding(hd.session)) { gnutls_range_st range; range.low = 0; range.high = MAX_BUF; - ret = - socket_send_range(&hd, - keyboard_buffer_ptr, - keyboard_bytes, &range); + ret = socket_send_range(&hd, + keyboard_buffer_ptr, + keyboard_bytes, &range); } else { - ret = - socket_send(&hd, keyboard_buffer_ptr, - keyboard_bytes); + ret = socket_send(&hd, keyboard_buffer_ptr, + keyboard_bytes); } if (ret > 0) { @@ -1556,15 +1530,15 @@ int main(int argc, char **argv) if (inline_commands && inline_cmds.new_buffer_ptr < (buffer + bytes)) { keyboard_buffer_ptr = - inline_cmds.new_buffer_ptr; + inline_cmds.new_buffer_ptr; keyboard_bytes = - (buffer + bytes) - keyboard_buffer_ptr; + (buffer + bytes) - keyboard_buffer_ptr; goto inline_command_processing; } } } - cleanup: +cleanup: socket_bye(&hd, 0); if (logfile) { fclose(logfile); @@ -1591,8 +1565,7 @@ int main(int argc, char **argv) return retval; } -static -void print_priority_list(void) +static void print_priority_list(void) { unsigned int idx; const char *str; @@ -1603,9 +1576,8 @@ void print_priority_list(void) fputs("\t", stdout); for (idx = 0;; idx++) { - str = - gnutls_priority_string_list(idx, - GNUTLS_PRIORITY_LIST_INIT_KEYWORDS); + str = gnutls_priority_string_list( + idx, GNUTLS_PRIORITY_LIST_INIT_KEYWORDS); if (str == NULL) break; lineb += log_msg(stdout, "%s ", str); @@ -1619,9 +1591,8 @@ void print_priority_list(void) lineb = 0; fputs("\t", stdout); for (idx = 0;; idx++) { - str = - gnutls_priority_string_list(idx, - GNUTLS_PRIORITY_LIST_SPECIAL); + str = gnutls_priority_string_list(idx, + GNUTLS_PRIORITY_LIST_SPECIAL); if (str == NULL) break; if (str[0] == 0) @@ -1724,7 +1695,7 @@ static void cmd_parser(int argc, char **argv) exit(1); } inline_commands_prefix = - (char *)OPT_ARG(INLINE_COMMANDS_PREFIX); + (char *)OPT_ARG(INLINE_COMMANDS_PREFIX); if (!isascii(inline_commands_prefix[0])) { fprintf(stderr, "inline-commands-prefix value is a single US-ASCII character (octets 0 - 127)\n"); @@ -1752,8 +1723,8 @@ static void cmd_parser(int argc, char **argv) } else { if (HAVE_OPT(STARTTLS_PROTO)) snprintf(service, sizeof(service), "%s", - starttls_proto_to_service(OPT_ARG - (STARTTLS_PROTO))); + starttls_proto_to_service( + OPT_ARG(STARTTLS_PROTO))); else strcpy(service, "443"); } @@ -1818,7 +1789,7 @@ static void cmd_parser(int argc, char **argv) } } -static void check_server_cmd(socket_st * socket, int ret) +static void check_server_cmd(socket_st *socket, int ret) { if (socket->secure) { if (ret == GNUTLS_E_REHANDSHAKE) { @@ -1854,15 +1825,15 @@ static void check_server_cmd(socket_st * socket, int ret) } } -int do_handshake(socket_st * socket) +int do_handshake(socket_st *socket) { int ret; if (fastopen && socket->connect_addrlen) { - gnutls_transport_set_fastopen(socket->session, socket->fd, - (struct sockaddr *) - &socket->connect_addr, - socket->connect_addrlen, 0); + gnutls_transport_set_fastopen( + socket->session, socket->fd, + (struct sockaddr *)&socket->connect_addr, + socket->connect_addrlen, 0); socket->connect_addrlen = 0; } else { set_read_funcs(socket->session); @@ -1876,8 +1847,7 @@ int do_handshake(socket_st * socket) if (ret < 0) { handle_error(socket, ret); } - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret == 0) { /* print some information */ @@ -1887,7 +1857,8 @@ int do_handshake(socket_st * socket) print_key_material(socket->session, OPT_ARG(KEYMATEXPORT), HAVE_OPT(KEYMATEXPORTSIZE) ? - OPT_VALUE_KEYMATEXPORTSIZE : 20); + OPT_VALUE_KEYMATEXPORTSIZE : + 20); socket->secure = 1; } else { gnutls_alert_send_appropriate(socket->session, ret); @@ -1897,9 +1868,8 @@ int do_handshake(socket_st * socket) } #ifdef ENABLE_SRP -static int -srp_username_callback(gnutls_session_t session, - char **username, char **password) +static int srp_username_callback(gnutls_session_t session, char **username, + char **password) { if (srp_username == NULL || srp_passwd == NULL) { return -1; @@ -1912,8 +1882,8 @@ srp_username_callback(gnutls_session_t session, } #endif -static int -psk_callback(gnutls_session_t session, char **username, gnutls_datum_t * key) +static int psk_callback(gnutls_session_t session, char **username, + gnutls_datum_t *key) { const char *hint = gnutls_psk_client_get_hint(session); char *rawkey; @@ -2009,8 +1979,8 @@ static void init_global_tls_stuff(void) fprintf(stderr, "pkcs11_init: %s", gnutls_strerror(ret)); else { - ret = - gnutls_pkcs11_add_provider(OPT_ARG(PROVIDER), NULL); + ret = gnutls_pkcs11_add_provider(OPT_ARG(PROVIDER), + NULL); if (ret < 0) { fprintf(stderr, "pkcs11_add_provider: %s", gnutls_strerror(ret)); @@ -2037,17 +2007,13 @@ static void init_global_tls_stuff(void) gnutls_certificate_set_trust_list(xcred, tlist, 0); if (x509_cafile != NULL) { - ret = gnutls_x509_trust_list_add_trust_file(tlist, - x509_cafile, - NULL, - x509ctype, - GNUTLS_TL_USE_IN_TLS, - 0); + ret = gnutls_x509_trust_list_add_trust_file( + tlist, x509_cafile, NULL, x509ctype, + GNUTLS_TL_USE_IN_TLS, 0); } else { if (insecure == 0) { - ret = gnutls_x509_trust_list_add_system_trust(tlist, - GNUTLS_TL_USE_IN_TLS, - 0); + ret = gnutls_x509_trust_list_add_system_trust( + tlist, GNUTLS_TL_USE_IN_TLS, 0); if (ret == GNUTLS_E_UNIMPLEMENTED_FEATURE) { fprintf(stderr, "Warning: this system doesn't support a default trust store\n"); @@ -2066,17 +2032,14 @@ static void init_global_tls_stuff(void) } if (ENABLED_OPT(CA_AUTO_RETRIEVE)) - gnutls_x509_trust_list_set_getissuer_function(tlist, - getissuer_callback); + gnutls_x509_trust_list_set_getissuer_function( + tlist, getissuer_callback); if (x509_crlfile != NULL) { - ret = - gnutls_certificate_set_x509_crl_file(xcred, - x509_crlfile, - x509ctype); + ret = gnutls_certificate_set_x509_crl_file(xcred, x509_crlfile, + x509ctype); if (ret < 0) { - fprintf(stderr, - "Error setting the x509 CRL file: %s\n", + fprintf(stderr, "Error setting the x509 CRL file: %s\n", gnutls_strerror(ret)); exit(1); } else { @@ -2094,8 +2057,8 @@ static void init_global_tls_stuff(void) fprintf(stderr, "SRP authentication error\n"); } - gnutls_srp_set_client_credentials_function(srp_cred, - srp_username_callback); + gnutls_srp_set_client_credentials_function( + srp_cred, srp_username_callback); } #endif @@ -2106,10 +2069,8 @@ static void init_global_tls_stuff(void) } if (psk_username && psk_key.data) { - ret = gnutls_psk_set_client_credentials(psk_cred, - psk_username, - &psk_key, - GNUTLS_PSK_KEY_HEX); + ret = gnutls_psk_set_client_credentials( + psk_cred, psk_username, &psk_key, GNUTLS_PSK_KEY_HEX); if (ret < 0) { fprintf(stderr, "Error setting the PSK credentials: %s\n", @@ -2126,7 +2087,6 @@ static void init_global_tls_stuff(void) fprintf(stderr, "Anonymous authentication error\n"); } #endif - } /* OCSP check for the peer's certificate. Should be called @@ -2167,9 +2127,8 @@ static int cert_verify_ocsp(gnutls_session_t session) } deinit_cert = 1; - ret = - gnutls_x509_crt_import(cert, &cert_list[it], - GNUTLS_X509_FMT_DER); + ret = gnutls_x509_crt_import(cert, &cert_list[it], + GNUTLS_X509_FMT_DER); if (ret < 0) { fprintf(stderr, "Decoding error: %s\n", gnutls_strerror(ret)); @@ -2190,9 +2149,8 @@ static int cert_verify_ocsp(gnutls_session_t session) goto cleanup; } deinit_issuer = 1; - ret = - gnutls_x509_crt_import(issuer, &cert_list[it + 1], - GNUTLS_X509_FMT_DER); + ret = gnutls_x509_crt_import(issuer, &cert_list[it + 1], + GNUTLS_X509_FMT_DER); if (ret < 0) { fprintf(stderr, "Decoding error: %s\n", gnutls_strerror(ret)); @@ -2231,7 +2189,7 @@ static int cert_verify_ocsp(gnutls_session_t session) } } - cleanup: +cleanup: if (deinit_issuer) gnutls_x509_crt_deinit(issuer); if (deinit_cert) @@ -2292,10 +2250,10 @@ static size_t get_data(void *buf, size_t size, size_t nmemb, void *userp) } /* Returns 0 on ok, and -1 on error */ -static int -getissuer_callback(const gnutls_x509_trust_list_t tlist, - const gnutls_x509_crt_t cert, - gnutls_x509_crt_t ** issuers, unsigned int *issuers_size) +static int getissuer_callback(const gnutls_x509_trust_list_t tlist, + const gnutls_x509_crt_t cert, + gnutls_x509_crt_t **issuers, + unsigned int *issuers_size) { gnutls_datum_t ud; int ret; @@ -2317,9 +2275,8 @@ getissuer_callback(const gnutls_x509_trust_list_t tlist, i = 0; do { - ret = gnutls_x509_crt_get_authority_info_access(cert, i++, - GNUTLS_IA_CAISSUERS_URI, - &data, NULL); + ret = gnutls_x509_crt_get_authority_info_access( + cert, i++, GNUTLS_IA_CAISSUERS_URI, &data, NULL); } while (ret == GNUTLS_E_UNKNOWN_ALGORITHM); if (ret < 0) { @@ -2396,7 +2353,7 @@ getissuer_callback(const gnutls_x509_trust_list_t tlist, ret = 0; - cleanup: +cleanup: gnutls_free(data.data); free(ud.data); free(url); diff --git a/src/common.c b/src/common.c index fbe043bd79..6f8a2d7325 100644 --- a/src/common.c +++ b/src/common.c @@ -23,7 +23,7 @@ /* Work around problem reported in .*/ #if GETTIMEOFDAY_CLOBBERS_LOCALTIME -# undef localtime +#undef localtime #endif #include @@ -39,16 +39,16 @@ #include #ifndef _WIN32 -# include +#include #else -# include +#include #endif #ifdef ENABLE_PKCS11 -# include +#include #endif -#define SU(x) (x!=NULL?x:"Unknown") +#define SU(x) (x != NULL ? x : "Unknown") const char str_unknown[] = "(unknown)"; @@ -114,9 +114,8 @@ const char *raw_to_base64(const unsigned char *raw, size_t raw_size) return buf; } -static void -print_x509_info(gnutls_session_t session, FILE * out, int flag, int print_cert, - int print_crt_status) +static void print_x509_info(gnutls_session_t session, FILE *out, int flag, + int print_cert, int print_crt_status) { gnutls_x509_crt_t crt; const gnutls_datum_t *cert_list; @@ -143,9 +142,8 @@ print_x509_info(gnutls_session_t session, FILE * out, int flag, int print_cert, return; } - ret = - gnutls_x509_crt_import(crt, &cert_list[j], - GNUTLS_X509_FMT_DER); + ret = gnutls_x509_crt_import(crt, &cert_list[j], + GNUTLS_X509_FMT_DER); if (ret < 0) { fprintf(stderr, "Decoding error: %s\n", gnutls_strerror(ret)); @@ -165,9 +163,8 @@ print_x509_info(gnutls_session_t session, FILE * out, int flag, int print_cert, if (print_cert) { gnutls_datum_t pem; - ret = - gnutls_x509_crt_export2(crt, - GNUTLS_X509_FMT_PEM, &pem); + ret = gnutls_x509_crt_export2(crt, GNUTLS_X509_FMT_PEM, + &pem); if (ret < 0) { fprintf(stderr, "Encoding error: %s\n", gnutls_strerror(ret)); @@ -183,9 +180,8 @@ print_x509_info(gnutls_session_t session, FILE * out, int flag, int print_cert, } } -static void -print_rawpk_info(gnutls_session_t session, FILE * out, int flag, int print_cert, - int print_crt_status) +static void print_rawpk_info(gnutls_session_t session, FILE *out, int flag, + int print_cert, int print_crt_status) { gnutls_pcert_st pk_cert; gnutls_pk_algorithm_t pk_algo; @@ -203,9 +199,8 @@ print_rawpk_info(gnutls_session_t session, FILE * out, int flag, int print_cert, log_msg(out, "- Certificate type: Raw Public Key\n"); log_msg(out, "- Got %d Raw public-key(s).\n", cert_list_size); - ret = - gnutls_pcert_import_rawpk_raw(&pk_cert, cert_list, - GNUTLS_X509_FMT_DER, 0, 0); + ret = gnutls_pcert_import_rawpk_raw(&pk_cert, cert_list, + GNUTLS_X509_FMT_DER, 0, 0); if (ret < 0) { fprintf(stderr, "Decoding error: %s\n", gnutls_strerror(ret)); return; @@ -219,9 +214,8 @@ print_rawpk_info(gnutls_session_t session, FILE * out, int flag, int print_cert, if (print_cert) { gnutls_datum_t pem; - ret = - gnutls_pubkey_export2(pk_cert.pubkey, GNUTLS_X509_FMT_PEM, - &pem); + ret = gnutls_pubkey_export2(pk_cert.pubkey, GNUTLS_X509_FMT_PEM, + &pem); if (ret < 0) { fprintf(stderr, "Encoding error: %s\n", gnutls_strerror(ret)); @@ -233,7 +227,7 @@ print_rawpk_info(gnutls_session_t session, FILE * out, int flag, int print_cert, gnutls_free(pem.data); } - cleanup: +cleanup: gnutls_pcert_deinit(&pk_cert); } @@ -276,8 +270,8 @@ int cert_verify(gnutls_session_t session, const char *hostname, } type = gnutls_certificate_type_get(session); - rc = gnutls_certificate_verification_status_print(status, type, - &out, 0); + rc = gnutls_certificate_verification_status_print(status, type, &out, + 0); if (rc < 0) { log_msg(stdout, "- Could not print verification flags (err: %s)\n", @@ -299,8 +293,8 @@ int cert_verify(gnutls_session_t session, const char *hostname, } /* Parse input string and set certificate compression methods */ -int compress_cert_set_methods(gnutls_session_t session, - const char **strings, size_t n_strings) +int compress_cert_set_methods(gnutls_session_t session, const char **strings, + size_t n_strings) { int ret = 0; gnutls_compression_method_t *methods; @@ -330,9 +324,8 @@ int compress_cert_set_methods(gnutls_session_t session, } } - ret = - gnutls_compress_certificate_set_methods(session, methods, - n_strings); + ret = gnutls_compress_certificate_set_methods(session, methods, + n_strings); if (ret < 0) { fprintf(stderr, "Could not set certificate compression methods: %s\n", @@ -340,7 +333,7 @@ int compress_cert_set_methods(gnutls_session_t session, goto cleanup; } - cleanup: +cleanup: free(methods); #pragma GCC diagnostic pop @@ -393,8 +386,7 @@ static void print_dh_info(gnutls_session_t session, const char *str, int print) goto out; } - ret = gnutls_dh_params_export_pkcs3(dh_params, - GNUTLS_X509_FMT_PEM, + ret = gnutls_dh_params_export_pkcs3(dh_params, GNUTLS_X509_FMT_PEM, params_data, ¶ms_data_size); if (ret != GNUTLS_E_SHORT_MEMORY_BUFFER) { fprintf(stderr, "gnutls_dh_params_export_pkcs3 %d\n", ret); @@ -407,18 +399,17 @@ static void print_dh_info(gnutls_session_t session, const char *str, int print) goto out; } - ret = gnutls_dh_params_export_pkcs3(dh_params, - GNUTLS_X509_FMT_PEM, + ret = gnutls_dh_params_export_pkcs3(dh_params, GNUTLS_X509_FMT_PEM, params_data, ¶ms_data_size); if (ret) { fprintf(stderr, "gnutls_dh_params_export_pkcs3-2 %d\n", ret); goto out; } - log_msg(stdout, " - PKCS#3 format:\n\n%.*s\n", - (int)params_data_size, params_data); + log_msg(stdout, " - PKCS#3 format:\n\n%.*s\n", (int)params_data_size, + params_data); - out: +out: gnutls_free(params_data); gnutls_free(raw_prime.data); gnutls_free(raw_gen.data); @@ -442,7 +433,6 @@ static void print_ecdh_info(gnutls_session_t session, const char *str, gnutls_ecc_curve_get_name(curve)); log_msg(stdout, " - Curve size: %d bits\n", gnutls_ecc_curve_get_size(curve) * 8); - } struct channel_binding_request { @@ -453,9 +443,9 @@ struct channel_binding_request { static void print_channel_bindings(gnutls_session_t session, int print) { static const struct channel_binding_request requests[] = { - {GNUTLS_CB_TLS_UNIQUE, "tls-unique"}, - {GNUTLS_CB_TLS_SERVER_END_POINT, "tls-server-end-point"}, - {GNUTLS_CB_TLS_EXPORTER, "tls-exporter"} + { GNUTLS_CB_TLS_UNIQUE, "tls-unique" }, + { GNUTLS_CB_TLS_SERVER_END_POINT, "tls-server-end-point" }, + { GNUTLS_CB_TLS_EXPORTER, "tls-exporter" } }; size_t i; @@ -468,8 +458,8 @@ static void print_channel_bindings(gnutls_session_t session, int print) gnutls_datum_t cb; int rc; - rc = gnutls_session_channel_binding(session, - requests[i].type, &cb); + rc = gnutls_session_channel_binding(session, requests[i].type, + &cb); if (rc == GNUTLS_E_CHANNEL_BINDING_NOT_AVAILABLE) { log_msg(stdout, " - '%s': not available\n", requests[i].name); @@ -562,22 +552,21 @@ int print_info(gnutls_session_t session, int verbose, int flags) case GNUTLS_CRD_IA: log_msg(stdout, "- TLS/IA authentication\n"); break; - case GNUTLS_CRD_CERTIFICATE: - { - char dns[256]; - size_t dns_size = sizeof(dns); - unsigned int type; - - /* This fails in client side */ - if (gnutls_server_name_get - (session, dns, &dns_size, &type, 0) == 0) { - log_msg(stdout, "- Given server name[%d]: %s\n", - type, dns); - } + case GNUTLS_CRD_CERTIFICATE: { + char dns[256]; + size_t dns_size = sizeof(dns); + unsigned int type; + + /* This fails in client side */ + if (gnutls_server_name_get(session, dns, &dns_size, &type, 0) == + 0) { + log_msg(stdout, "- Given server name[%d]: %s\n", type, + dns); } + } - if ((flags & P_WAIT_FOR_CERT) - && gnutls_certificate_get_ours(session) == 0) + if ((flags & P_WAIT_FOR_CERT) && + gnutls_certificate_get_ours(session) == 0) log_msg(stdout, "- No certificate was sent to peer\n"); if (flags & P_PRINT_CERT) @@ -586,8 +575,8 @@ int print_info(gnutls_session_t session, int verbose, int flags) if (kx == GNUTLS_KX_DHE_RSA || kx == GNUTLS_KX_DHE_DSS) print_dh_info(session, "Ephemeral ", verbose); - else if (kx == GNUTLS_KX_ECDHE_RSA - || kx == GNUTLS_KX_ECDHE_ECDSA) + else if (kx == GNUTLS_KX_ECDHE_RSA || + kx == GNUTLS_KX_ECDHE_ECDSA) print_ecdh_info(session, "Ephemeral ", verbose); break; default: @@ -606,17 +595,15 @@ int print_info(gnutls_session_t session, int verbose, int flags) } if (gnutls_sign_algorithm_get(session) != GNUTLS_SIGN_UNKNOWN) { - tmp = - SU(gnutls_sign_get_name - (gnutls_sign_algorithm_get(session))); + tmp = SU(gnutls_sign_get_name( + gnutls_sign_algorithm_get(session))); log_msg(stdout, "- Server Signature: %s\n", tmp); } if (gnutls_sign_algorithm_get_client(session) != GNUTLS_SIGN_UNKNOWN) { - tmp = - SU(gnutls_sign_get_name - (gnutls_sign_algorithm_get_client(session))); + tmp = SU(gnutls_sign_get_name( + gnutls_sign_algorithm_get_client(session))); log_msg(stdout, "- Client Signature: %s\n", tmp); } @@ -635,12 +622,12 @@ int print_info(gnutls_session_t session, int verbose, int flags) if (gnutls_session_etm_status(session) != 0) log_msg(stdout, " EtM,"); #ifdef ENABLE_OCSP - if (gnutls_ocsp_status_request_is_checked - (session, GNUTLS_OCSP_SR_IS_AVAIL) != 0) { + if (gnutls_ocsp_status_request_is_checked( + session, GNUTLS_OCSP_SR_IS_AVAIL) != 0) { log_msg(stdout, " OCSP status request%s,", - gnutls_ocsp_status_request_is_checked(session, - 0) != - 0 ? "" : "[ignored]"); + gnutls_ocsp_status_request_is_checked(session, 0) != 0 ? + "" : + "[ignored]"); } #endif log_msg(stdout, "\n"); @@ -665,12 +652,13 @@ int print_info(gnutls_session_t session, int verbose, int flags) if (ktls_flags != 0) { log_msg(stdout, "- KTLS: %s\n", (ktls_flags & GNUTLS_KTLS_DUPLEX) == - GNUTLS_KTLS_DUPLEX ? "send, recv" : (ktls_flags & - GNUTLS_KTLS_SEND) - == - GNUTLS_KTLS_SEND ? "send" : (ktls_flags & - GNUTLS_KTLS_RECV) == - GNUTLS_KTLS_RECV ? "recv" : "unknown"); + GNUTLS_KTLS_DUPLEX ? + "send, recv" : + (ktls_flags & GNUTLS_KTLS_SEND) == GNUTLS_KTLS_SEND ? + "send" : + (ktls_flags & GNUTLS_KTLS_RECV) == GNUTLS_KTLS_RECV ? + "recv" : + "unknown"); } fflush(stdout); @@ -683,7 +671,7 @@ void print_cert_info(gnutls_session_t session, int verbose, int print_cert) print_cert_info2(session, verbose, stdout, print_cert); } -void print_cert_info2(gnutls_session_t session, int verbose, FILE * out, +void print_cert_info2(gnutls_session_t session, int verbose, FILE *out, int print_cert) { int flag, print_crt_status = 0; @@ -741,17 +729,15 @@ void print_list(const char *priorities, int verbose) } for (i = 0;; i++) { - ret = - gnutls_priority_get_cipher_suite_index(pcache, - i, &idx); + ret = gnutls_priority_get_cipher_suite_index(pcache, i, + &idx); if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) break; if (ret == GNUTLS_E_UNKNOWN_CIPHER_SUITE) continue; - name = - gnutls_cipher_suite_info(idx, id, NULL, NULL, - NULL, &version); + name = gnutls_cipher_suite_info(idx, id, NULL, NULL, + NULL, &version); if (name != NULL) log_msg(stdout, "%-50s\t0x%02x, 0x%02x\t%s\n", @@ -871,8 +857,8 @@ void print_list(const char *priorities, int verbose) log_msg(stdout, "none\n"); for (i = 0; i < (unsigned)ret; i++) { log_msg(stdout, "SIGN-%s", - gnutls_sign_algorithm_get_name(list - [i])); + gnutls_sign_algorithm_get_name( + list[i])); if (i + 1 != (unsigned)ret) log_msg(stdout, ", "); else @@ -885,25 +871,24 @@ void print_list(const char *priorities, int verbose) } log_msg(stdout, "Cipher suites:\n"); - for (i = 0; (name = gnutls_cipher_suite_info - (i, id, &kx, &cipher, &mac, &version)); i++) { - log_msg(stdout, "%-50s\t0x%02x, 0x%02x\t%s\n", - name, + for (i = 0; (name = gnutls_cipher_suite_info(i, id, &kx, &cipher, &mac, + &version)); + i++) { + log_msg(stdout, "%-50s\t0x%02x, 0x%02x\t%s\n", name, (unsigned char)id[0], (unsigned char)id[1], gnutls_protocol_get_name(version)); if (verbose) - log_msg - (stdout, - "\tKey exchange: %s\n\tCipher: %s\n\tMAC: %s\n\n", - gnutls_kx_get_name(kx), - gnutls_cipher_get_name(cipher), - gnutls_mac_get_name(mac)); + log_msg(stdout, + "\tKey exchange: %s\n\tCipher: %s\n\tMAC: %s\n\n", + gnutls_kx_get_name(kx), + gnutls_cipher_get_name(cipher), + gnutls_mac_get_name(mac)); } log_msg(stdout, "\n"); { const gnutls_certificate_type_t *p = - gnutls_certificate_type_list(); + gnutls_certificate_type_list(); log_msg(stdout, "Certificate types: "); for (; *p; p++) { @@ -984,7 +969,7 @@ void print_list(const char *priorities, int verbose) { const gnutls_compression_method_t *p = - gnutls_compression_list(); + gnutls_compression_list(); log_msg(stdout, "Compression: "); for (; *p; p++) { @@ -1038,8 +1023,8 @@ void print_list(const char *priorities, int verbose) } } -void -print_key_material(gnutls_session_t session, const char *label, size_t size) +void print_key_material(gnutls_session_t session, const char *label, + size_t size) { gnutls_datum_t bin = { NULL, 0 }, hex = { NULL, 0 }; int ret; @@ -1053,8 +1038,8 @@ print_key_material(gnutls_session_t session, const char *label, size_t size) bin.size = size; - ret = gnutls_prf_rfc5705(session, strlen(label), label, - 0, NULL, size, (char *)bin.data); + ret = gnutls_prf_rfc5705(session, strlen(label), label, 0, NULL, size, + (char *)bin.data); if (ret < 0) { fprintf(stderr, "Error in gnutls_prf_rfc5705: %s\n", gnutls_strerror(ret)); @@ -1070,7 +1055,7 @@ print_key_material(gnutls_session_t session, const char *label, size_t size) log_msg(stdout, "- Key material: %s\n", hex.data); fflush(stdout); - out: +out: gnutls_free(bin.data); gnutls_free(hex.data); } @@ -1084,37 +1069,33 @@ int check_command(gnutls_session_t session, const char *str, fprintf(stderr, "*** Processing %u bytes command: %s\n", (unsigned)len, str); if (len > 2 && str[0] == str[1] && str[0] == '*') { - if (strncmp - (str, "**REHANDSHAKE**", - sizeof("**REHANDSHAKE**") - 1) == 0) { + if (strncmp(str, "**REHANDSHAKE**", + sizeof("**REHANDSHAKE**") - 1) == 0) { fprintf(stderr, "*** Sending rehandshake request\n"); gnutls_rehandshake(session); return 1; - } else if (strncmp - (str, "**REAUTH**", sizeof("**REAUTH**") - 1) == 0) { + } else if (strncmp(str, "**REAUTH**", + sizeof("**REAUTH**") - 1) == 0) { /* in case we have a re-auth cmd prepare for it */ if (no_cli_cert) - gnutls_certificate_server_set_request(session, - GNUTLS_CERT_REQUIRE); + gnutls_certificate_server_set_request( + session, GNUTLS_CERT_REQUIRE); fprintf(stderr, "*** Sending re-auth request\n"); do { ret = gnutls_reauth(session, 0); - } while (ret == GNUTLS_E_AGAIN - || ret == GNUTLS_E_INTERRUPTED); + } while (ret == GNUTLS_E_AGAIN || + ret == GNUTLS_E_INTERRUPTED); if (ret < 0) { fprintf(stderr, "reauth: %s\n", gnutls_strerror(ret)); return ret; } return 1; - } else - if (strncmp - (str, "**HEARTBEAT**", - sizeof("**HEARTBEAT**") - 1) == 0) { - ret = - gnutls_heartbeat_ping(session, 300, 5, - GNUTLS_HEARTBEAT_WAIT); + } else if (strncmp(str, "**HEARTBEAT**", + sizeof("**HEARTBEAT**") - 1) == 0) { + ret = gnutls_heartbeat_ping(session, 300, 5, + GNUTLS_HEARTBEAT_WAIT); if (ret < 0) { if (ret == GNUTLS_E_INVALID_REQUEST) { fprintf(stderr, @@ -1179,19 +1160,18 @@ void getenv_copy(char *str, size_t max_str_size, const char *envvar) return; } -#define MIN(x,y) ((x)<(y))?(x):(y) +#define MIN(x, y) ((x) < (y)) ? (x) : (y) #define MAX_CACHE_TRIES 5 -int -pin_callback(void *user, int attempt, const char *token_url, - const char *token_label, unsigned int flags, char *pin, - size_t pin_max) +int pin_callback(void *user, int attempt, const char *token_url, + const char *token_label, unsigned int flags, char *pin, + size_t pin_max) { char password[MAX_PIN_LEN] = ""; common_info_st *info = user; const char *desc; int cache = MAX_CACHE_TRIES; unsigned len; -/* allow caching of PIN */ + /* allow caching of PIN */ static char *cached_url = NULL; static char cached_pin[MAX_PIN_LEN] = ""; const char *env; @@ -1243,12 +1223,12 @@ pin_callback(void *user, int attempt, const char *token_url, if (password[0] == 0) { getenv_copy(password, sizeof(password), env); - if (password[0] == 0) /* compatibility */ + if (password[0] == 0) /* compatibility */ getenv_copy(password, sizeof(password), "GNUTLS_PIN"); } - if (password[0] == 0 && info != NULL && info->password != NULL - && info->ask_pass == 0) { + if (password[0] == 0 && info != NULL && info->password != NULL && + info->ask_pass == 0) { if (strlen(info->password) < sizeof(password)) { strcpy(password, info->password); } else { @@ -1257,8 +1237,8 @@ pin_callback(void *user, int attempt, const char *token_url, } } - if (password[0] == 0 - && (info == NULL || info->batch == 0 || info->ask_pass != 0)) { + if (password[0] == 0 && + (info == NULL || info->batch == 0 || info->ask_pass != 0)) { if (token_label && token_label[0] != 0) { fprintf(stderr, "Token '%s' with URL '%s' ", token_label, token_url); @@ -1332,12 +1312,10 @@ static int token_callback(void *user, const char *label, const unsigned retry) return 0; } -void pkcs11_common(common_info_st * c) +void pkcs11_common(common_info_st *c) { - gnutls_pkcs11_set_pin_function(pin_callback, c); gnutls_pkcs11_set_token_function(token_callback, c); - } #endif @@ -1357,7 +1335,7 @@ void sockets_init(void) #endif } -int log_msg(FILE * file, const char *message, ...) +int log_msg(FILE *file, const char *message, ...) { va_list args; int rv; @@ -1371,7 +1349,7 @@ int log_msg(FILE * file, const char *message, ...) return rv; } -void log_set(FILE * file) +void log_set(FILE *file) { logfile = file; } @@ -1380,7 +1358,7 @@ void log_set(FILE * file) #pragma GCC diagnostic ignored "-Wformat-y2k" /* This is very similar to ctime() but it does not force a newline. */ -char *simple_ctime(const time_t * t, char out[SIMPLE_CTIME_BUF_SIZE]) +char *simple_ctime(const time_t *t, char out[SIMPLE_CTIME_BUF_SIZE]) { struct tm tm; @@ -1392,7 +1370,7 @@ char *simple_ctime(const time_t * t, char out[SIMPLE_CTIME_BUF_SIZE]) return out; - error: +error: snprintf(out, SIMPLE_CTIME_BUF_SIZE, "[error]"); return out; } diff --git a/src/common.h b/src/common.h index 6fac0044ec..ba25470af1 100644 --- a/src/common.h +++ b/src/common.h @@ -19,55 +19,55 @@ */ #ifndef GNUTLS_SRC_COMMON_H -# define GNUTLS_SRC_COMMON_H - -# define SERVER "127.0.0.1" - -# include -# include -# include -# include -# include -# include -# include -# include -# include -# ifndef _WIN32 -# include -# endif - -# include -# ifdef _WIN32 -# include -# include -# include -# include "socket.h" -# undef OCSP_RESPONSE -# endif - -# ifndef __attribute__ -# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) -# define __attribute__(Spec) /* empty */ -# endif -# endif +#define GNUTLS_SRC_COMMON_H + +#define SERVER "127.0.0.1" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef _WIN32 +#include +#endif + +#include +#ifdef _WIN32 +#include +#include +#include +#include "socket.h" +#undef OCSP_RESPONSE +#endif + +#ifndef __attribute__ +#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) +#define __attribute__(Spec) /* empty */ +#endif +#endif /* the number of elements in the priority structures. */ -# define PRI_MAX 16 +#define PRI_MAX 16 extern const char str_unknown[]; -# define P_PRINT_CERT 1 -# define P_WAIT_FOR_CERT (1<<1) +#define P_PRINT_CERT 1 +#define P_WAIT_FOR_CERT (1 << 1) int print_info(gnutls_session_t state, int verbose, int flags); void print_cert_info(gnutls_session_t, int flag, int print_cert); void print_key_material(gnutls_session_t, const char *label, size_t size); -int log_msg(FILE * file, const char *message, ...) - __attribute__((format(printf, 2, 3))); -void log_set(FILE * file); +int log_msg(FILE *file, const char *message, ...) + __attribute__((format(printf, 2, 3))); +void log_set(FILE *file); -void print_cert_info2(gnutls_session_t, int flag, FILE * fp, int print_cert); +void print_cert_info2(gnutls_session_t, int flag, FILE *fp, int print_cert); void print_list(const char *priorities, int verbose); int cert_verify(gnutls_session_t session, const char *hostname, @@ -82,16 +82,15 @@ const char *raw_to_base64(const unsigned char *raw, size_t raw_size); int check_command(gnutls_session_t session, const char *str, unsigned no_cli_cert); -# define MAX_PIN_LEN GNUTLS_PKCS11_MAX_PIN_LEN +#define MAX_PIN_LEN GNUTLS_PKCS11_MAX_PIN_LEN void getenv_copy(char *str, size_t max_str_size, const char *envvar); void getpass_copy(char *pass, size_t max_pass_size, const char *prompt); -int -pin_callback(void *user, int attempt, const char *token_url, - const char *token_label, unsigned int flags, char *pin, - size_t pin_max); +int pin_callback(void *user, int attempt, const char *token_url, + const char *token_label, unsigned int flags, char *pin, + size_t pin_max); -void pkcs11_common(common_info_st * c); +void pkcs11_common(common_info_st *c); inline static int is_ip(const char *hostname) { @@ -99,15 +98,15 @@ inline static int is_ip(const char *hostname) if (strchr(hostname, ':') != 0) return 1; - else if (len > 2 && c_isdigit(hostname[0]) - && c_isdigit(hostname[len - 1])) + else if (len > 2 && c_isdigit(hostname[0]) && + c_isdigit(hostname[len - 1])) return 1; return 0; } void sockets_init(void); -# ifdef _WIN32 +#ifdef _WIN32 static int system_recv_timeout(gnutls_transport_ptr_t ptr, unsigned int ms) { fd_set rfds; @@ -124,35 +123,34 @@ static int system_recv_timeout(gnutls_transport_ptr_t ptr, unsigned int ms) return select(fd + 1, &rfds, NULL, NULL, &tv); } -static ssize_t -system_write(gnutls_transport_ptr ptr, const void *data, size_t data_size) +static ssize_t system_write(gnutls_transport_ptr ptr, const void *data, + size_t data_size) { socket_st *hd = ptr; return send(hd->fd, data, data_size, 0); } -static ssize_t -system_read(gnutls_transport_ptr_t ptr, void *data, size_t data_size) +static ssize_t system_read(gnutls_transport_ptr_t ptr, void *data, + size_t data_size) { socket_st *hd = ptr; return recv(hd->fd, data, data_size, 0); } -static -void set_read_funcs(gnutls_session_t session) +static void set_read_funcs(gnutls_session_t session) { gnutls_transport_set_push_function(session, system_write); gnutls_transport_set_pull_function(session, system_read); gnutls_transport_set_pull_timeout_function(session, system_recv_timeout); } -# else -# define set_read_funcs(x) -# endif +#else +#define set_read_funcs(x) +#endif -# define SIMPLE_CTIME_BUF_SIZE 64 -char *simple_ctime(const time_t * t, char buf[SIMPLE_CTIME_BUF_SIZE]); +#define SIMPLE_CTIME_BUF_SIZE 64 +char *simple_ctime(const time_t *t, char buf[SIMPLE_CTIME_BUF_SIZE]); -#endif /* GNUTLS_SRC_COMMON_H */ +#endif /* GNUTLS_SRC_COMMON_H */ diff --git a/src/danetool.c b/src/danetool.c index 43bce51b70..0850a5dc16 100644 --- a/src/danetool.c +++ b/src/danetool.c @@ -29,7 +29,7 @@ #include #ifdef HAVE_DANE -# include +#include #endif #include @@ -56,12 +56,12 @@ static const char *obtain_cert(const char *hostname, const char *proto, const char *service, const char *app_proto, unsigned quiet); static void cmd_parser(int argc, char **argv); -static void dane_info(const char *host, const char *proto, - const char *service, unsigned int ca, - unsigned int domain, common_info_st * cinfo); +static void dane_info(const char *host, const char *proto, const char *service, + unsigned int ca, unsigned int domain, + common_info_st *cinfo); -static void dane_check(const char *host, const char *proto, - const char *service, common_info_st * cinfo); +static void dane_check(const char *host, const char *proto, const char *service, + common_info_st *cinfo); FILE *outfile; static const char *outfile_name = NULL; @@ -173,16 +173,16 @@ static void cmd_parser(int argc, char **argv) } else { if (HAVE_OPT(STARTTLS_PROTO)) snprintf(service, sizeof(service), "%s", - starttls_proto_to_service(OPT_ARG - (STARTTLS_PROTO))); + starttls_proto_to_service( + OPT_ARG(STARTTLS_PROTO))); } if (HAVE_OPT(PROTO)) proto = OPT_ARG(PROTO); if (HAVE_OPT(TLSA_RR)) - dane_info(OPT_ARG(HOST), proto, service, - HAVE_OPT(CA), ENABLED_OPT(DOMAIN), &cinfo); + dane_info(OPT_ARG(HOST), proto, service, HAVE_OPT(CA), + ENABLED_OPT(DOMAIN), &cinfo); else if (HAVE_OPT(CHECK)) dane_check(OPT_ARG(CHECK), proto, service, &cinfo); else @@ -197,8 +197,8 @@ static void cmd_parser(int argc, char **argv) } #define MAX_CLIST_SIZE 32 -static void dane_check(const char *host, const char *proto, - const char *service, common_info_st * cinfo) +static void dane_check(const char *host, const char *proto, const char *service, + common_info_st *cinfo) { #ifdef HAVE_DANE dane_state_t s; @@ -235,9 +235,8 @@ static void dane_check(const char *host, const char *proto, if (HAVE_OPT(STARTTLS_PROTO)) app_proto = OPT_ARG(STARTTLS_PROTO); - cinfo->cert = - obtain_cert(host, proto, service, app_proto, - HAVE_OPT(QUIET)); + cinfo->cert = obtain_cert(host, proto, service, app_proto, + HAVE_OPT(QUIET)); del = 1; } @@ -314,14 +313,10 @@ static void dane_check(const char *host, const char *proto, goto error; } - ret = - gnutls_x509_crt_list_import2(&clist, - &clist_size, - &file, - cinfo->incert_format, 0); + ret = gnutls_x509_crt_list_import2(&clist, &clist_size, &file, + cinfo->incert_format, 0); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_list_import2: %s\n", + fprintf(stderr, "gnutls_x509_crt_list_import2: %s\n", gnutls_strerror(ret)); retcode = 1; goto error; @@ -329,11 +324,9 @@ static void dane_check(const char *host, const char *proto, if (clist_size > 0) { for (i = 0; i < MIN(MAX_CLIST_SIZE, clist_size); i++) { - ret = - gnutls_x509_crt_export2(clist - [i], - GNUTLS_X509_FMT_DER, - &certs[i]); + ret = gnutls_x509_crt_export2( + clist[i], GNUTLS_X509_FMT_DER, + &certs[i]); if (ret < 0) { fprintf(stderr, "gnutls_x509_crt_export2: %s\n", @@ -367,8 +360,7 @@ static void dane_check(const char *host, const char *proto, if (entries > 1 && !HAVE_OPT(QUIET)) fprintf(outfile, "\n==== Entry %d ====\n", i + 1); - fprintf(outfile, - "_%u._%s.%s. IN TLSA ( %.2x %.2x %.2x %s )\n", + fprintf(outfile, "_%u._%s.%s. IN TLSA ( %.2x %.2x %.2x %s )\n", port, proto, host, usage, type, match, lbuffer); if (!HAVE_OPT(QUIET)) { @@ -397,13 +389,11 @@ static void dane_check(const char *host, const char *proto, unsigned int status; gnutls_datum_t out; - ret = - dane_verify_crt(s, certs, clist_size, - GNUTLS_CRT_X509, host, - proto, port, 0, vflags, &status); + ret = dane_verify_crt(s, certs, clist_size, + GNUTLS_CRT_X509, host, proto, + port, 0, vflags, &status); if (ret < 0) { - fprintf(stderr, - "dane_verify_crt: %s\n", + fprintf(stderr, "dane_verify_crt: %s\n", dane_strerror(ret)); retcode = 1; goto error; @@ -443,7 +433,7 @@ static void dane_check(const char *host, const char *proto, dane_query_deinit(q); dane_state_deinit(s); - error: +error: if (del != 0 && cinfo->cert) { (void)remove(cinfo->cert); } @@ -456,9 +446,9 @@ static void dane_check(const char *host, const char *proto, #endif } -static void dane_info(const char *host, const char *proto, - const char *service, unsigned int ca, - unsigned int domain, common_info_st * cinfo) +static void dane_info(const char *host, const char *proto, const char *service, + unsigned int ca, unsigned int domain, + common_info_st *cinfo) { gnutls_pubkey_t pubkey; gnutls_x509_crt_t crt; @@ -474,12 +464,11 @@ static void dane_info(const char *host, const char *proto, crt = load_cert(0, cinfo); if (crt != NULL && HAVE_OPT(X509)) { - selector = 0; /* X.509 */ + selector = 0; /* X.509 */ size = lbuffer_size; - ret = - gnutls_x509_crt_export(crt, GNUTLS_X509_FMT_DER, - lbuffer, &size); + ret = gnutls_x509_crt_export(crt, GNUTLS_X509_FMT_DER, lbuffer, + &size); if (ret < 0) { fprintf(stderr, "export error: %s\n", gnutls_strerror(ret)); @@ -487,7 +476,7 @@ static void dane_info(const char *host, const char *proto, } gnutls_x509_crt_deinit(crt); - } else { /* use public key only */ + } else { /* use public key only */ selector = 1; @@ -499,7 +488,6 @@ static void dane_info(const char *host, const char *proto, } if (crt != NULL) { - ret = gnutls_pubkey_import_x509(pubkey, crt, 0); if (ret < 0) { fprintf(stderr, "pubkey_import_x509: %s\n", @@ -508,10 +496,8 @@ static void dane_info(const char *host, const char *proto, } size = lbuffer_size; - ret = - gnutls_pubkey_export(pubkey, - GNUTLS_X509_FMT_DER, - lbuffer, &size); + ret = gnutls_pubkey_export(pubkey, GNUTLS_X509_FMT_DER, + lbuffer, &size); if (ret < 0) { fprintf(stderr, "pubkey_export: %s\n", gnutls_strerror(ret)); @@ -523,10 +509,8 @@ static void dane_info(const char *host, const char *proto, pubkey = load_pubkey(1, cinfo); size = lbuffer_size; - ret = - gnutls_pubkey_export(pubkey, - GNUTLS_X509_FMT_DER, - lbuffer, &size); + ret = gnutls_pubkey_export(pubkey, GNUTLS_X509_FMT_DER, + lbuffer, &size); if (ret < 0) { fprintf(stderr, "export error: %s\n", gnutls_strerror(ret)); @@ -537,8 +521,8 @@ static void dane_info(const char *host, const char *proto, gnutls_pubkey_deinit(pubkey); } - if (default_dig != GNUTLS_DIG_SHA256 - && default_dig != GNUTLS_DIG_SHA512) { + if (default_dig != GNUTLS_DIG_SHA256 && + default_dig != GNUTLS_DIG_SHA512) { if (default_dig != GNUTLS_DIG_UNKNOWN) fprintf(stderr, "Unsupported digest. Assuming SHA256.\n"); @@ -579,9 +563,8 @@ static void dane_info(const char *host, const char *proto, app_exit(1); } - fprintf(outfile, "_%u._%s.%s. IN TLSA ( %.2x %.2x %.2x %s )\n", - port, proto, host, usage, selector, type, lbuffer); - + fprintf(outfile, "_%u._%s.%s. IN TLSA ( %.2x %.2x %.2x %s )\n", port, + proto, host, usage, selector, type, lbuffer); } struct priv_st { @@ -608,9 +591,8 @@ static int cert_callback(gnutls_session_t session) priv = gnutls_session_get_ptr(session); for (i = 0; i < cert_list_size; i++) { - ret = - gnutls_pem_base64_encode_alloc("CERTIFICATE", &cert_list[i], - &t); + ret = gnutls_pem_base64_encode_alloc("CERTIFICATE", + &cert_list[i], &t); if (ret < 0) { fprintf(stderr, "error[%d]: %s\n", __LINE__, gnutls_strerror(ret)); @@ -638,8 +620,8 @@ gnutls_session_t init_tls_session(const char *hostname) priv.found = 0; priv.fd = file_fd; - ret = - gnutls_init(&session, (udp ? GNUTLS_DATAGRAM : 0) | GNUTLS_CLIENT); + ret = gnutls_init(&session, + (udp ? GNUTLS_DATAGRAM : 0) | GNUTLS_CLIENT); if (ret < 0) { fprintf(stderr, "error[%d]: %s\n", __LINE__, gnutls_strerror(ret)); @@ -663,14 +645,14 @@ gnutls_session_t init_tls_session(const char *hostname) return session; } -int do_handshake(socket_st * socket) +int do_handshake(socket_st *socket) { int ret; do { ret = gnutls_handshake(socket->session); - } while (ret == GNUTLS_E_INTERRUPTED || ret == GNUTLS_E_AGAIN - || ret == GNUTLS_E_WARNING_ALERT_RECEIVED); + } while (ret == GNUTLS_E_INTERRUPTED || ret == GNUTLS_E_AGAIN || + ret == GNUTLS_E_WARNING_ALERT_RECEIVED); /* we don't care on the result */ return 0; diff --git a/src/inline_cmds.h b/src/inline_cmds.h old mode 100755 new mode 100644 index 70d02d9499..f9c4e89f8d --- a/src/inline_cmds.h +++ b/src/inline_cmds.h @@ -18,7 +18,7 @@ */ #ifndef GNUTLS_SRC_INLINE_CMDS_H -# define GNUTLS_SRC_INLINE_CMDS_H +#define GNUTLS_SRC_INLINE_CMDS_H /* * The inline commands is a facility that can be used optionally @@ -41,18 +41,19 @@ * For ex: if --inline-commands-prefix=@, the inline commands will be * @resume@, @renegotiate@, etc... */ -typedef enum INLINE_COMMAND { INLINE_COMMAND_NONE, +typedef enum INLINE_COMMAND { + INLINE_COMMAND_NONE, INLINE_COMMAND_RESUME, INLINE_COMMAND_RENEGOTIATE, INLINE_COMMAND_REKEY_LOCAL, INLINE_COMMAND_REKEY_BOTH } inline_command_t; -# define MAX_INLINE_COMMAND_BYTES 20 +#define MAX_INLINE_COMMAND_BYTES 20 typedef struct inline_cmds { - char *current_ptr; /* points to the start of the current buffer being processed */ - char *new_buffer_ptr; /* points to start or offset within the caller's buffer, + char *current_ptr; /* points to the start of the current buffer being processed */ + char *new_buffer_ptr; /* points to start or offset within the caller's buffer, * and refers to bytes yet to be processed. */ inline_command_t cmd_found; int lf_found; @@ -68,12 +69,14 @@ struct inline_command_definitions { /* All inline commands will contain a trailing LF */ struct inline_command_definitions inline_commands_def[] = { - {INLINE_COMMAND_RESUME, "^resume^\n"}, - {INLINE_COMMAND_REKEY_LOCAL, "^rekey1^\n"}, - {INLINE_COMMAND_REKEY_BOTH, "^rekey^\n"}, - {INLINE_COMMAND_RENEGOTIATE, "^renegotiate^\n"}, + { INLINE_COMMAND_RESUME, "^resume^\n" }, + { INLINE_COMMAND_REKEY_LOCAL, "^rekey1^\n" }, + { INLINE_COMMAND_REKEY_BOTH, "^rekey^\n" }, + { INLINE_COMMAND_RENEGOTIATE, "^renegotiate^\n" }, }; -# define NUM_INLINE_COMMANDS ((unsigned)(sizeof(inline_commands_def)/sizeof(inline_commands_def[0]))) +#define NUM_INLINE_COMMANDS \ + ((unsigned)(sizeof(inline_commands_def) / \ + sizeof(inline_commands_def[0]))) -#endif /* GNUTLS_SRC_INLINE_CMDS_H */ +#endif /* GNUTLS_SRC_INLINE_CMDS_H */ diff --git a/src/ocsptool-common.c b/src/ocsptool-common.c index 00ea8b6b53..17e10253d7 100644 --- a/src/ocsptool-common.c +++ b/src/ocsptool-common.c @@ -37,13 +37,14 @@ #include -#define MAX_BUF 4*1024 -#define HEADER_PATTERN "POST /%s HTTP/1.0\r\n" \ - "Host: %s\r\n" \ - "Accept: */*\r\n" \ - "Content-Type: application/ocsp-request\r\n" \ - "Content-Length: %u\r\n" \ - "Connection: close\r\n\r\n" +#define MAX_BUF 4 * 1024 +#define HEADER_PATTERN \ + "POST /%s HTTP/1.0\r\n" \ + "Host: %s\r\n" \ + "Accept: */*\r\n" \ + "Content-Type: application/ocsp-request\r\n" \ + "Content-Length: %u\r\n" \ + "Connection: close\r\n\r\n" static char buffer[MAX_BUF + 1]; /* returns the host part of a URL */ @@ -76,9 +77,8 @@ static const char *host_from_url(const char *url, unsigned int *port, } } -void -_generate_request(gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer, - gnutls_datum_t * rdata, gnutls_datum_t * nonce) +void _generate_request(gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer, + gnutls_datum_t *rdata, gnutls_datum_t *nonce) { gnutls_ocsp_req_t req; int ret; @@ -133,9 +133,9 @@ static size_t get_data(void *buf, size_t size, size_t nmemb, void *userp) } /* Returns 0 on ok, and -1 on error */ -int send_ocsp_request(const char *server, - gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer, - gnutls_datum_t * resp_data, gnutls_datum_t * nonce) +int send_ocsp_request(const char *server, gnutls_x509_crt_t cert, + gnutls_x509_crt_t issuer, gnutls_datum_t *resp_data, + gnutls_datum_t *nonce) { gnutls_datum_t ud; int ret; @@ -158,20 +158,16 @@ int send_ocsp_request(const char *server, i = 0; do { - ret = - gnutls_x509_crt_get_authority_info_access(cert, i++, - GNUTLS_IA_OCSP_URI, - &data, - NULL); + ret = gnutls_x509_crt_get_authority_info_access( + cert, i++, GNUTLS_IA_OCSP_URI, &data, NULL); } while (ret == GNUTLS_E_UNKNOWN_ALGORITHM); if (ret < 0) { i = 0; do { - ret = - gnutls_x509_crt_get_authority_info_access - (issuer, i++, GNUTLS_IA_OCSP_URI, &data, - NULL); + ret = gnutls_x509_crt_get_authority_info_access( + issuer, i++, GNUTLS_IA_OCSP_URI, &data, + NULL); } while (ret == GNUTLS_E_UNKNOWN_ALGORITHM); } @@ -249,7 +245,7 @@ int send_ocsp_request(const char *server, ret = 0; - cleanup: +cleanup: free(ud.data); if (url != server) free(url); @@ -320,17 +316,16 @@ void print_ocsp_verify_res(unsigned int output) } /* three days */ -#define OCSP_VALIDITY_SECS (3*60*60*24) +#define OCSP_VALIDITY_SECS (3 * 60 * 60 * 24) /* Returns: * 0: certificate is revoked * 1: certificate is ok * -1: dunno */ -int -check_ocsp_response(gnutls_x509_crt_t cert, - gnutls_x509_crt_t issuer, gnutls_datum_t * data, - gnutls_datum_t * nonce, int verbose) +int check_ocsp_response(gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer, + gnutls_datum_t *data, gnutls_datum_t *nonce, + int verbose) { gnutls_ocsp_resp_t resp; int ret; @@ -356,11 +351,9 @@ check_ocsp_response(gnutls_x509_crt_t cert, ret = gnutls_ocsp_resp_check_crt(resp, 0, cert); if (ret < 0) { if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { - printf - ("*** Got OCSP response with no data (ignoring)\n"); + printf("*** Got OCSP response with no data (ignoring)\n"); } else { - printf - ("*** Got OCSP response on an unrelated certificate (ignoring)\n"); + printf("*** Got OCSP response on an unrelated certificate (ignoring)\n"); } ret = -1; goto cleanup; @@ -386,8 +379,8 @@ check_ocsp_response(gnutls_x509_crt_t cert, } ret = gnutls_ocsp_resp_get_single(resp, 0, NULL, NULL, NULL, NULL, - &cert_status, &vtime, &ntime, - &rtime, NULL); + &cert_status, &vtime, &ntime, &rtime, + NULL); if (ret < 0) { fprintf(stderr, "reading response: %s\n", gnutls_strerror(ret)); exit(1); @@ -402,19 +395,17 @@ check_ocsp_response(gnutls_x509_crt_t cert, if (ntime == -1) { if (now - vtime > OCSP_VALIDITY_SECS) { - printf - ("*** The OCSP response is old (was issued at: %s) ignoring\n", - simple_ctime(&vtime, timebuf1)); + printf("*** The OCSP response is old (was issued at: %s) ignoring\n", + simple_ctime(&vtime, timebuf1)); ret = -1; goto cleanup; } } else { /* there is a newer OCSP answer, don't trust this one */ if (ntime < now) { - printf - ("*** The OCSP response was issued at: %s but there is a newer issue at %s\n", - simple_ctime(&vtime, timebuf1), - simple_ctime(&ntime, timebuf2)); + printf("*** The OCSP response was issued at: %s but there is a newer issue at %s\n", + simple_ctime(&vtime, timebuf1), + simple_ctime(&ntime, timebuf2)); ret = -1; goto cleanup; } @@ -437,8 +428,8 @@ check_ocsp_response(gnutls_x509_crt_t cert, exit(1); } - if (rnonce.size != nonce->size - || memcmp(nonce->data, rnonce.data, nonce->size) != 0) { + if (rnonce.size != nonce->size || + memcmp(nonce->data, rnonce.data, nonce->size) != 0) { fprintf(stderr, "nonce in the response doesn't match\n"); exit(1); @@ -447,11 +438,11 @@ check_ocsp_response(gnutls_x509_crt_t cert, gnutls_free(rnonce.data); } - finish_ok: +finish_ok: printf("- OCSP server flags certificate not revoked as of %s\n", simple_ctime(&vtime, timebuf1)); ret = 1; - cleanup: +cleanup: gnutls_ocsp_resp_deinit(resp); return ret; diff --git a/src/ocsptool-common.h b/src/ocsptool-common.h index 8110217408..9d87a53ed1 100644 --- a/src/ocsptool-common.h +++ b/src/ocsptool-common.h @@ -19,9 +19,9 @@ */ #ifndef GNUTLS_SRC_OCSPTOOL_COMMON_H -# define GNUTLS_SRC_OCSPTOOL_COMMON_H +#define GNUTLS_SRC_OCSPTOOL_COMMON_H -# include +#include enum { ACTION_NONE, @@ -32,16 +32,15 @@ enum { }; extern void ocsptool_version(void); -void -_generate_request(gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer, - gnutls_datum_t * rdata, gnutls_datum_t * nonce); -int send_ocsp_request(const char *server, - gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer, - gnutls_datum_t * resp_data, gnutls_datum_t * nonce); +void _generate_request(gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer, + gnutls_datum_t *rdata, gnutls_datum_t *nonce); +int send_ocsp_request(const char *server, gnutls_x509_crt_t cert, + gnutls_x509_crt_t issuer, gnutls_datum_t *resp_data, + gnutls_datum_t *nonce); void print_ocsp_verify_res(unsigned int output); -int -check_ocsp_response(gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer, - gnutls_datum_t * data, gnutls_datum_t * nonce, int verbose); +int check_ocsp_response(gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer, + gnutls_datum_t *data, gnutls_datum_t *nonce, + int verbose); -#endif /* GNUTLS_SRC_OCSPTOOL_COMMON_H */ +#endif /* GNUTLS_SRC_OCSPTOOL_COMMON_H */ diff --git a/src/ocsptool.c b/src/ocsptool.c index 86df3331a7..7ce8a5391d 100644 --- a/src/ocsptool.c +++ b/src/ocsptool.c @@ -31,7 +31,7 @@ #include #include -#include /* getpass */ +#include /* getpass */ /* Gnulib portability files. */ #include @@ -44,7 +44,7 @@ FILE *outfile; static unsigned int incert_format, outcert_format; -static const char *outfile_name = NULL; /* to delete on exit */ +static const char *outfile_name = NULL; /* to delete on exit */ FILE *infile; static unsigned int encoding; unsigned int verbose = 0; @@ -79,7 +79,7 @@ gnutls_session_t init_tls_session(const char *host) return NULL; } -int do_handshake(socket_st * socket) +int do_handshake(socket_st *socket) { return -1; } @@ -98,8 +98,8 @@ static void request_info(void) } if (HAVE_OPT(LOAD_REQUEST)) - dat.data = - (void *)read_file(OPT_ARG(LOAD_REQUEST), RF_BINARY, &size); + dat.data = (void *)read_file(OPT_ARG(LOAD_REQUEST), RF_BINARY, + &size); else dat.data = (void *)fread_file(infile, 0, &size); if (dat.data == NULL) { @@ -148,7 +148,7 @@ static void request_info(void) gnutls_ocsp_req_deinit(req); } -static void _response_info(const gnutls_datum_t * data, unsigned force_print) +static void _response_info(const gnutls_datum_t *data, unsigned force_print) { gnutls_ocsp_resp_t resp; int ret; @@ -178,12 +178,11 @@ static void _response_info(const gnutls_datum_t * data, unsigned force_print) } if (ENABLED_OPT(VERBOSE)) - ret = - gnutls_ocsp_resp_print(resp, GNUTLS_OCSP_PRINT_FULL, &buf); + ret = gnutls_ocsp_resp_print(resp, GNUTLS_OCSP_PRINT_FULL, + &buf); else - ret = - gnutls_ocsp_resp_print(resp, GNUTLS_OCSP_PRINT_COMPACT, - &buf); + ret = gnutls_ocsp_resp_print(resp, GNUTLS_OCSP_PRINT_COMPACT, + &buf); if (ret != 0) { fprintf(stderr, "ocsp_resp_print: %s\n", gnutls_strerror(ret)); app_exit(1); @@ -208,8 +207,8 @@ static void _response_info(const gnutls_datum_t * data, unsigned force_print) } if (force_print || !HAVE_OPT(OUTFILE)) { - ret = - gnutls_ocsp_resp_export2(resp, &rbuf, GNUTLS_X509_FMT_PEM); + ret = gnutls_ocsp_resp_export2(resp, &rbuf, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fprintf(stderr, "error exporting response: %s\n", gnutls_strerror(ret)); @@ -231,8 +230,8 @@ static void response_info(void) size_t size; if (HAVE_OPT(LOAD_RESPONSE)) - dat.data = - (void *)read_file(OPT_ARG(LOAD_RESPONSE), RF_BINARY, &size); + dat.data = (void *)read_file(OPT_ARG(LOAD_RESPONSE), RF_BINARY, + &size); else dat.data = (void *)fread_file(infile, 0, &size); if (dat.data == NULL) { @@ -246,7 +245,7 @@ static void response_info(void) gnutls_free(dat.data); } -static void generate_request(gnutls_datum_t * nonce) +static void generate_request(gnutls_datum_t *nonce) { gnutls_datum_t dat; gnutls_x509_crt_t cert, issuer; @@ -281,7 +280,7 @@ static void generate_request(gnutls_datum_t * nonce) gnutls_free(dat.data); } -static int _verify_response(gnutls_datum_t * data, gnutls_datum_t * nonce, +static int _verify_response(gnutls_datum_t *data, gnutls_datum_t *nonce, gnutls_x509_crt_t signer, unsigned print_resp) { gnutls_ocsp_resp_t resp; @@ -307,9 +306,8 @@ static int _verify_response(gnutls_datum_t * data, gnutls_datum_t * nonce, } if (print_resp) { - ret = - gnutls_ocsp_resp_print(resp, GNUTLS_OCSP_PRINT_COMPACT, - &dat); + ret = gnutls_ocsp_resp_print(resp, GNUTLS_OCSP_PRINT_COMPACT, + &dat); if (ret < 0) { fprintf(stderr, "ocsp_resp_print: %s\n", gnutls_strerror(ret)); @@ -330,8 +328,8 @@ static int _verify_response(gnutls_datum_t * data, gnutls_datum_t * nonce, app_exit(1); } - if (rnonce.size != nonce->size - || memcmp(nonce->data, rnonce.data, nonce->size) != 0) { + if (rnonce.size != nonce->size || + memcmp(nonce->data, rnonce.data, nonce->size) != 0) { fprintf(stderr, "nonce in the response doesn't match\n"); app_exit(1); @@ -341,8 +339,8 @@ static int _verify_response(gnutls_datum_t * data, gnutls_datum_t * nonce, } if (HAVE_OPT(LOAD_TRUST)) { - dat.data = - (void *)read_file(OPT_ARG(LOAD_TRUST), RF_BINARY, &size); + dat.data = (void *)read_file(OPT_ARG(LOAD_TRUST), RF_BINARY, + &size); if (dat.data == NULL) { fprintf(stderr, "error reading --load-trust: %s\n", OPT_ARG(LOAD_TRUST)); @@ -357,9 +355,9 @@ static int _verify_response(gnutls_datum_t * data, gnutls_datum_t * nonce, app_exit(1); } - ret = - gnutls_x509_crt_list_import2(&x509_ca_list, &x509_ncas, - &dat, GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_x509_crt_list_import2(&x509_ca_list, &x509_ncas, + &dat, GNUTLS_X509_FMT_PEM, + 0); if (ret < 0 || x509_ncas < 1) { fprintf(stderr, "error parsing CAs: %s\n", gnutls_strerror(ret)); @@ -372,10 +370,9 @@ static int _verify_response(gnutls_datum_t * data, gnutls_datum_t * nonce, for (i = 0; i < x509_ncas; i++) { gnutls_datum_t out; - ret = - gnutls_x509_crt_print(x509_ca_list[i], - GNUTLS_CRT_PRINT_ONELINE, - &out); + ret = gnutls_x509_crt_print( + x509_ca_list[i], + GNUTLS_CRT_PRINT_ONELINE, &out); if (ret < 0) { fprintf(stderr, "gnutls_x509_crt_print: %s\n", @@ -389,9 +386,8 @@ static int _verify_response(gnutls_datum_t * data, gnutls_datum_t * nonce, printf("\n"); } - ret = - gnutls_x509_trust_list_add_cas(list, x509_ca_list, - x509_ncas, 0); + ret = gnutls_x509_trust_list_add_cas(list, x509_ca_list, + x509_ncas, 0); if (ret < 0) { fprintf(stderr, "gnutls_x509_trust_add_cas: %s\n", gnutls_strerror(ret)); @@ -411,13 +407,10 @@ static int _verify_response(gnutls_datum_t * data, gnutls_datum_t * nonce, if (HAVE_OPT(VERBOSE)) { gnutls_datum_t out; - ret = - gnutls_x509_crt_print(signer, - GNUTLS_CRT_PRINT_ONELINE, - &out); + ret = gnutls_x509_crt_print( + signer, GNUTLS_CRT_PRINT_ONELINE, &out); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_print: %s\n", + fprintf(stderr, "gnutls_x509_crt_print: %s\n", gnutls_strerror(ret)); app_exit(1); } @@ -427,12 +420,10 @@ static int _verify_response(gnutls_datum_t * data, gnutls_datum_t * nonce, printf("\n"); } - ret = - gnutls_ocsp_resp_verify_direct(resp, signer, &verify, - vflags); + ret = gnutls_ocsp_resp_verify_direct(resp, signer, &verify, + vflags); if (ret < 0) { - fprintf(stderr, - "\nVerifying OCSP Response: %s\n", + fprintf(stderr, "\nVerifying OCSP Response: %s\n", gnutls_strerror(ret)); app_exit(1); } @@ -452,8 +443,7 @@ static int _verify_response(gnutls_datum_t * data, gnutls_datum_t * nonce, #define MAX_CHAIN_SIZE 8 -static -unsigned load_chain(gnutls_x509_crt_t chain[MAX_CHAIN_SIZE]) +static unsigned load_chain(gnutls_x509_crt_t chain[MAX_CHAIN_SIZE]) { if (HAVE_OPT(LOAD_CHAIN)) { common_info_st info; @@ -503,7 +493,7 @@ unsigned load_chain(gnutls_x509_crt_t chain[MAX_CHAIN_SIZE]) } } -static void verify_response(gnutls_datum_t * nonce) +static void verify_response(gnutls_datum_t *nonce) { gnutls_datum_t dat; size_t size; @@ -514,8 +504,8 @@ static void verify_response(gnutls_datum_t * nonce) unsigned chain_size = 0, i; if (HAVE_OPT(LOAD_RESPONSE)) - dat.data = - (void *)read_file(OPT_ARG(LOAD_RESPONSE), RF_BINARY, &size); + dat.data = (void *)read_file(OPT_ARG(LOAD_RESPONSE), RF_BINARY, + &size); else dat.data = (void *)fread_file(infile, 0, &size); if (dat.data == NULL) { @@ -590,9 +580,8 @@ static void ask_server(const char *url) counter = chain_size; while (counter > 1) { if (ENABLED_OPT(NONCE)) { - ret = - gnutls_rnd(GNUTLS_RND_NONCE, nonce.data, - nonce.size); + ret = gnutls_rnd(GNUTLS_RND_NONCE, nonce.data, + nonce.size); if (ret < 0) { fprintf(stderr, "gnutls_rnd: %s\n", gnutls_strerror(ret)); @@ -603,9 +592,8 @@ static void ask_server(const char *url) n = NULL; } - ret = - send_ocsp_request(url, chain[idx], chain[idx + 1], - &resp_data, n); + ret = send_ocsp_request(url, chain[idx], chain[idx + 1], + &resp_data, n); if (ret < 0) { fprintf(stderr, "Cannot send OCSP request\n"); app_exit(1); diff --git a/src/p11tool.c b/src/p11tool.c index d91926b79e..a88aab58a2 100644 --- a/src/p11tool.c +++ b/src/p11tool.c @@ -76,8 +76,7 @@ int main(int argc, char **argv) return 0; } -static -unsigned opt_to_flags(common_info_st * cinfo, unsigned *key_usage) +static unsigned opt_to_flags(common_info_st *cinfo, unsigned *key_usage) { unsigned flags = 0; @@ -89,7 +88,7 @@ unsigned opt_to_flags(common_info_st * cinfo, unsigned *key_usage) } else { flags |= GNUTLS_PKCS11_OBJ_FLAG_MARK_NOT_PRIVATE; } - } else { /* if not given mark as private the private objects, and public the public ones */ + } else { /* if not given mark as private the private objects, and public the public ones */ if (cinfo->privkey) flags |= GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE; else if (cinfo->pubkey || cinfo->cert) @@ -174,9 +173,8 @@ static void cmd_parser(int argc, char **argv) fprintf(stderr, "pkcs11_init: %s\n", gnutls_strerror(ret)); else { - ret = - gnutls_pkcs11_add_provider(OPT_ARG(PROVIDER), - params); + ret = gnutls_pkcs11_add_provider(OPT_ARG(PROVIDER), + params); if (ret < 0) { fprintf(stderr, "pkcs11_add_provider: %s\n", gnutls_strerror(ret)); @@ -292,35 +290,35 @@ static void cmd_parser(int argc, char **argv) &cinfo); } else if (HAVE_OPT(INFO)) { pkcs11_type = PKCS11_TYPE_INFO; - pkcs11_list(outfile, url, pkcs11_type, - flags, detailed_url, &cinfo); + pkcs11_list(outfile, url, pkcs11_type, flags, detailed_url, + &cinfo); } else if (HAVE_OPT(LIST_ALL)) { pkcs11_type = PKCS11_TYPE_ALL; - pkcs11_list(outfile, url, pkcs11_type, - flags, detailed_url, &cinfo); + pkcs11_list(outfile, url, pkcs11_type, flags, detailed_url, + &cinfo); } else if (HAVE_OPT(LIST_ALL_CERTS)) { pkcs11_type = PKCS11_TYPE_CRT_ALL; - pkcs11_list(outfile, url, pkcs11_type, - flags, detailed_url, &cinfo); + pkcs11_list(outfile, url, pkcs11_type, flags, detailed_url, + &cinfo); } else if (HAVE_OPT(LIST_CERTS)) { pkcs11_type = PKCS11_TYPE_PK; - pkcs11_list(outfile, url, pkcs11_type, - flags, detailed_url, &cinfo); + pkcs11_list(outfile, url, pkcs11_type, flags, detailed_url, + &cinfo); } else if (HAVE_OPT(LIST_ALL_PRIVKEYS)) { pkcs11_type = PKCS11_TYPE_PRIVKEY; - pkcs11_list(outfile, url, pkcs11_type, - flags, detailed_url, &cinfo); + pkcs11_list(outfile, url, pkcs11_type, flags, detailed_url, + &cinfo); } else if (HAVE_OPT(LIST_ALL_TRUSTED)) { pkcs11_type = PKCS11_TYPE_TRUSTED; - pkcs11_list(outfile, url, pkcs11_type, - flags, detailed_url, &cinfo); + pkcs11_list(outfile, url, pkcs11_type, flags, detailed_url, + &cinfo); } else if (HAVE_OPT(EXPORT)) { pkcs11_export(outfile, url, flags, &cinfo); } else if (HAVE_OPT(EXPORT_STAPLED)) { - pkcs11_export(outfile, url, - flags | - GNUTLS_PKCS11_OBJ_FLAG_OVERWRITE_TRUSTMOD_EXT, - &cinfo); + pkcs11_export( + outfile, url, + flags | GNUTLS_PKCS11_OBJ_FLAG_OVERWRITE_TRUSTMOD_EXT, + &cinfo); } else if (HAVE_OPT(EXPORT_CHAIN)) { pkcs11_export_chain(outfile, url, flags, &cinfo); } else if (HAVE_OPT(WRITE)) { @@ -340,23 +338,23 @@ static void cmd_parser(int argc, char **argv) if (key_type == GNUTLS_PK_UNKNOWN) app_exit(1); pkcs11_generate(outfile, url, key_type, - get_bits(key_type, bits, sec_param, 0), - label, id, detailed_url, flags, &cinfo); + get_bits(key_type, bits, sec_param, 0), label, + id, detailed_url, flags, &cinfo); } else if (HAVE_OPT(GENERATE_ECC)) { key_type = GNUTLS_PK_EC; pkcs11_generate(outfile, url, key_type, - get_bits(key_type, bits, sec_param, 0), - label, id, detailed_url, flags, &cinfo); + get_bits(key_type, bits, sec_param, 0), label, + id, detailed_url, flags, &cinfo); } else if (HAVE_OPT(GENERATE_RSA)) { key_type = GNUTLS_PK_RSA; pkcs11_generate(outfile, url, key_type, - get_bits(key_type, bits, sec_param, 0), - label, id, detailed_url, flags, &cinfo); + get_bits(key_type, bits, sec_param, 0), label, + id, detailed_url, flags, &cinfo); } else if (HAVE_OPT(GENERATE_DSA)) { key_type = GNUTLS_PK_DSA; pkcs11_generate(outfile, url, key_type, - get_bits(key_type, bits, sec_param, 0), - label, id, detailed_url, flags, &cinfo); + get_bits(key_type, bits, sec_param, 0), label, + id, detailed_url, flags, &cinfo); } else if (HAVE_OPT(EXPORT_PUBKEY)) { pkcs11_export_pubkey(outfile, url, detailed_url, flags, &cinfo); } else if (HAVE_OPT(SET_ID)) { diff --git a/src/p11tool.h b/src/p11tool.h index 27f52fe7ea..1827e576cd 100644 --- a/src/p11tool.h +++ b/src/p11tool.h @@ -21,54 +21,51 @@ */ #ifndef GNUTLS_SRC_P11TOOL_H -# define GNUTLS_SRC_P11TOOL_H +#define GNUTLS_SRC_P11TOOL_H -# include "certtool-common.h" +#include "certtool-common.h" -void pkcs11_list(FILE * outfile, const char *url, int type, - unsigned int flags, unsigned int detailed, common_info_st *); -void pkcs11_mechanism_list(FILE * outfile, const char *url, - unsigned int flags, common_info_st *); -void pkcs11_get_random(FILE * outfile, const char *url, - unsigned bytes, common_info_st *); -void pkcs11_export(FILE * outfile, const char *pkcs11_url, - unsigned int flags, common_info_st *); -void -pkcs11_export_chain(FILE * outfile, const char *url, unsigned int flags, - common_info_st * info); +void pkcs11_list(FILE *outfile, const char *url, int type, unsigned int flags, + unsigned int detailed, common_info_st *); +void pkcs11_mechanism_list(FILE *outfile, const char *url, unsigned int flags, + common_info_st *); +void pkcs11_get_random(FILE *outfile, const char *url, unsigned bytes, + common_info_st *); +void pkcs11_export(FILE *outfile, const char *pkcs11_url, unsigned int flags, + common_info_st *); +void pkcs11_export_chain(FILE *outfile, const char *url, unsigned int flags, + common_info_st *info); -void pkcs11_token_list(FILE * outfile, unsigned int detailed, - common_info_st *, unsigned brief); -void pkcs11_test_sign(FILE * outfile, const char *pkcs11_url, - unsigned int flags, common_info_st *); -void pkcs11_write(FILE * outfile, const char *pkcs11_url, - const char *label, const char *id, - unsigned int flags, common_info_st *); -void pkcs11_delete(FILE * outfile, const char *pkcs11_url, - unsigned int flags, common_info_st *); -void pkcs11_init(FILE * outfile, const char *pkcs11_url, const char *label, +void pkcs11_token_list(FILE *outfile, unsigned int detailed, common_info_st *, + unsigned brief); +void pkcs11_test_sign(FILE *outfile, const char *pkcs11_url, unsigned int flags, + common_info_st *); +void pkcs11_write(FILE *outfile, const char *pkcs11_url, const char *label, + const char *id, unsigned int flags, common_info_st *); +void pkcs11_delete(FILE *outfile, const char *pkcs11_url, unsigned int flags, + common_info_st *); +void pkcs11_init(FILE *outfile, const char *pkcs11_url, const char *label, common_info_st *); -void pkcs11_set_token_pin(FILE * outfile, const char *pkcs11_url, +void pkcs11_set_token_pin(FILE *outfile, const char *pkcs11_url, common_info_st *, unsigned so); -void pkcs11_generate(FILE * outfile, const char *url, - gnutls_pk_algorithm_t type, unsigned int bits, - const char *label, const char *id, int detailed, - unsigned int flags, common_info_st * info); -void pkcs11_export_pubkey(FILE * outfile, const char *url, int detailed, - unsigned int flags, common_info_st * info); +void pkcs11_generate(FILE *outfile, const char *url, gnutls_pk_algorithm_t type, + unsigned int bits, const char *label, const char *id, + int detailed, unsigned int flags, common_info_st *info); +void pkcs11_export_pubkey(FILE *outfile, const char *url, int detailed, + unsigned int flags, common_info_st *info); -void pkcs11_set_id(FILE * outfile, const char *url, int detailed, - unsigned int flags, common_info_st * info, const char *id); +void pkcs11_set_id(FILE *outfile, const char *url, int detailed, + unsigned int flags, common_info_st *info, const char *id); -void pkcs11_set_label(FILE * outfile, const char *url, int detailed, - unsigned int flags, common_info_st * info, +void pkcs11_set_label(FILE *outfile, const char *url, int detailed, + unsigned int flags, common_info_st *info, const char *label); -# define PKCS11_TYPE_CRT_ALL 1 -# define PKCS11_TYPE_TRUSTED 2 -# define PKCS11_TYPE_PK 3 -# define PKCS11_TYPE_ALL 4 -# define PKCS11_TYPE_PRIVKEY 5 -# define PKCS11_TYPE_INFO 6 +#define PKCS11_TYPE_CRT_ALL 1 +#define PKCS11_TYPE_TRUSTED 2 +#define PKCS11_TYPE_PK 3 +#define PKCS11_TYPE_ALL 4 +#define PKCS11_TYPE_PRIVKEY 5 +#define PKCS11_TYPE_INFO 6 -#endif /* GNUTLS_SRC_P11TOOL_H */ +#endif /* GNUTLS_SRC_P11TOOL_H */ diff --git a/src/pkcs11.c b/src/pkcs11.c index 2016d56ec9..6b6ab8f08a 100644 --- a/src/pkcs11.c +++ b/src/pkcs11.c @@ -37,45 +37,49 @@ #include #ifdef _WIN32 -# define sleep(x) Sleep(x*1000) +#define sleep(x) Sleep(x * 1000) #endif -static -char *get_single_token_url(common_info_st * info); +static char *get_single_token_url(common_info_st *info); static char *_saved_url = NULL; -#define FIX(url, out, det, info) \ - if (url == NULL) { \ - url = get_single_token_url(info); \ - if (url == NULL) { \ - fprintf(stderr, "warning: no token URL was provided for this operation; the available tokens are:\n\n"); \ - pkcs11_token_list(out, det, info, 1); \ - app_exit(1); \ - } \ - _saved_url = (void*)url; \ - } - -#define UNFIX gnutls_free(_saved_url);_saved_url = NULL - -#define KEEP_LOGIN_FLAGS(flags) (flags & (GNUTLS_PKCS11_OBJ_FLAG_LOGIN|GNUTLS_PKCS11_OBJ_FLAG_LOGIN_SO)) - -#define CHECK_LOGIN_FLAG(url, flags) \ - if ((flags & KEEP_LOGIN_FLAGS(flags)) == 0) { \ - unsigned _tflags; \ - int _r = gnutls_pkcs11_token_get_flags(url, &_tflags); \ - if (_r >= 0 && (_tflags & GNUTLS_PKCS11_TOKEN_LOGIN_REQUIRED)) { \ - flags |= GNUTLS_PKCS11_OBJ_FLAG_LOGIN; \ - fprintf(stderr, \ - "note: assuming --login for this operation.\n"); \ - } else { \ - fprintf(stderr, \ +#define FIX(url, out, det, info) \ + if (url == NULL) { \ + url = get_single_token_url(info); \ + if (url == NULL) { \ + fprintf(stderr, \ + "warning: no token URL was provided for this operation; the available tokens are:\n\n"); \ + pkcs11_token_list(out, det, info, 1); \ + app_exit(1); \ + } \ + _saved_url = (void *)url; \ + } + +#define UNFIX \ + gnutls_free(_saved_url); \ + _saved_url = NULL + +#define KEEP_LOGIN_FLAGS(flags) \ + (flags & \ + (GNUTLS_PKCS11_OBJ_FLAG_LOGIN | GNUTLS_PKCS11_OBJ_FLAG_LOGIN_SO)) + +#define CHECK_LOGIN_FLAG(url, flags) \ + if ((flags & KEEP_LOGIN_FLAGS(flags)) == 0) { \ + unsigned _tflags; \ + int _r = gnutls_pkcs11_token_get_flags(url, &_tflags); \ + if (_r >= 0 && \ + (_tflags & GNUTLS_PKCS11_TOKEN_LOGIN_REQUIRED)) { \ + flags |= GNUTLS_PKCS11_OBJ_FLAG_LOGIN; \ + fprintf(stderr, \ + "note: assuming --login for this operation.\n"); \ + } else { \ + fprintf(stderr, \ "warning: --login was not specified and it may be required for this operation.\n"); \ - } \ + } \ } -void -pkcs11_delete(FILE * outfile, const char *url, - unsigned int login_flags, common_info_st * info) +void pkcs11_delete(FILE *outfile, const char *url, unsigned int login_flags, + common_info_st *info) { int ret; unsigned int obj_flags = 0; @@ -88,10 +92,9 @@ pkcs11_delete(FILE * outfile, const char *url, if (info->batch == 0) { pkcs11_list(outfile, url, PKCS11_TYPE_ALL, login_flags, GNUTLS_PKCS11_URL_LIB, info); - ret = - read_yesno - ("Are you sure you want to delete those objects? (y/N): ", - 0); + ret = read_yesno( + "Are you sure you want to delete those objects? (y/N): ", + 0); if (ret == 0) { app_exit(1); } @@ -109,9 +112,9 @@ pkcs11_delete(FILE * outfile, const char *url, return; } -static -const char *get_key_algo_type(gnutls_pkcs11_obj_type_t otype, - const char *objurl, unsigned flags, time_t * exp) +static const char *get_key_algo_type(gnutls_pkcs11_obj_type_t otype, + const char *objurl, unsigned flags, + time_t *exp) { int ret; gnutls_pubkey_t pubkey = NULL; @@ -142,16 +145,13 @@ const char *get_key_algo_type(gnutls_pkcs11_obj_type_t otype, p = gnutls_pk_get_name(pk); if (p) { - if ((pk == GNUTLS_PK_RSA || pk == GNUTLS_PK_DSA) - && bits > 0) { + if ((pk == GNUTLS_PK_RSA || pk == GNUTLS_PK_DSA) && + bits > 0) { snprintf(str, sizeof(str), "%s-%d", p, bits); p = str; - } else if (pk == GNUTLS_PK_ECDSA - && gnutls_x509_crt_get_pk_ecc_raw(crt, - &curve, - NULL, - NULL) >= - 0) { + } else if (pk == GNUTLS_PK_ECDSA && + gnutls_x509_crt_get_pk_ecc_raw( + crt, &curve, NULL, NULL) >= 0) { snprintf(str, sizeof(str), "%s-%s", p, gnutls_ecc_curve_get_name(curve)); p = str; @@ -178,14 +178,13 @@ const char *get_key_algo_type(gnutls_pkcs11_obj_type_t otype, p = gnutls_pk_get_name(pk); if (p) { - if ((pk == GNUTLS_PK_RSA || pk == GNUTLS_PK_DSA) - && bits > 0) { + if ((pk == GNUTLS_PK_RSA || pk == GNUTLS_PK_DSA) && + bits > 0) { snprintf(str, sizeof(str), "%s-%d", p, bits); p = str; - } else if (pk == GNUTLS_PK_ECDSA - && gnutls_pubkey_export_ecc_raw(pubkey, - &curve, NULL, - NULL) >= 0) { + } else if (pk == GNUTLS_PK_ECDSA && + gnutls_pubkey_export_ecc_raw( + pubkey, &curve, NULL, NULL) >= 0) { snprintf(str, sizeof(str), "%s-%s", p, gnutls_ecc_curve_get_name(curve)); p = str; @@ -209,16 +208,14 @@ const char *get_key_algo_type(gnutls_pkcs11_obj_type_t otype, p = gnutls_pk_get_name(pk); if (p) { - if ((pk == GNUTLS_PK_RSA || pk == GNUTLS_PK_DSA) - && bits > 0) { + if ((pk == GNUTLS_PK_RSA || pk == GNUTLS_PK_DSA) && + bits > 0) { snprintf(str, sizeof(str), "%s-%d", p, bits); p = str; - } else if (pk == GNUTLS_PK_ECDSA - && gnutls_privkey_export_ecc_raw(privkey, - &curve, - NULL, NULL, - NULL) >= - 0) { + } else if (pk == GNUTLS_PK_ECDSA && + gnutls_privkey_export_ecc_raw( + privkey, &curve, NULL, NULL, NULL) >= + 0) { snprintf(str, sizeof(str), "%s-%s", p, gnutls_ecc_curve_get_name(curve)); p = str; @@ -228,7 +225,7 @@ const char *get_key_algo_type(gnutls_pkcs11_obj_type_t otype, gnutls_privkey_deinit(privkey); return p; default: - fail: + fail: if (crt) gnutls_x509_crt_deinit(crt); if (pubkey) @@ -241,9 +238,8 @@ const char *get_key_algo_type(gnutls_pkcs11_obj_type_t otype, /* lists certificates from a token */ -void -pkcs11_list(FILE * outfile, const char *url, int type, unsigned int flags, - unsigned int detailed, common_info_st * info) +void pkcs11_list(FILE *outfile, const char *url, int type, unsigned int flags, + unsigned int detailed, common_info_st *info) { gnutls_pkcs11_obj_t *crt_list; unsigned int crt_list_size = 0, i, j; @@ -277,15 +273,14 @@ pkcs11_list(FILE * outfile, const char *url, int type, unsigned int flags, print_exts++; } else if (type == PKCS11_TYPE_PRIVKEY) { attrs = GNUTLS_PKCS11_OBJ_ATTR_PRIVKEY; - } else { /* also PKCS11_TYPE_INFO */ + } else { /* also PKCS11_TYPE_INFO */ attrs = GNUTLS_PKCS11_OBJ_ATTR_ALL; } /* give some initial value to avoid asking for the pkcs11 pin twice. */ - ret = - gnutls_pkcs11_obj_list_import_url2(&crt_list, &crt_list_size, - url, attrs, obj_flags); + ret = gnutls_pkcs11_obj_list_import_url2(&crt_list, &crt_list_size, url, + attrs, obj_flags); if (ret < 0) { fprintf(stderr, "Error in crt_list_import (1): %s\n", gnutls_strerror(ret)); @@ -306,9 +301,8 @@ pkcs11_list(FILE * outfile, const char *url, int type, unsigned int flags, char *objurl; char timebuf[SIMPLE_CTIME_BUF_SIZE]; - ret = - gnutls_pkcs11_obj_export_url(crt_list[i], detailed, - &output); + ret = gnutls_pkcs11_obj_export_url(crt_list[i], detailed, + &output); if (ret < 0) { fprintf(stderr, "Error in %s:%d: %s\n", __func__, __LINE__, gnutls_strerror(ret)); @@ -326,8 +320,8 @@ pkcs11_list(FILE * outfile, const char *url, int type, unsigned int flags, /* copy vendor query (e.g. pin-value) from the original URL */ vendor = strrchr(url, '?'); if (vendor) { - objurl = - gnutls_malloc(strlen(output) + strlen(vendor) + 1); + objurl = gnutls_malloc(strlen(output) + strlen(vendor) + + 1); strcpy(objurl, output); strcat(objurl, vendor); } else { @@ -359,10 +353,8 @@ pkcs11_list(FILE * outfile, const char *url, int type, unsigned int flags, gnutls_free(objurl); size = sizeof(buf); - ret = - gnutls_pkcs11_obj_get_info(crt_list[i], - GNUTLS_PKCS11_OBJ_LABEL, - buf, &size); + ret = gnutls_pkcs11_obj_get_info( + crt_list[i], GNUTLS_PKCS11_OBJ_LABEL, buf, &size); if (ret < 0) { fprintf(stderr, "Error in %s:%d: %s\n", __func__, __LINE__, gnutls_strerror(ret)); @@ -384,10 +376,8 @@ pkcs11_list(FILE * outfile, const char *url, int type, unsigned int flags, } size = sizeof(buf); - ret = - gnutls_pkcs11_obj_get_info(crt_list[i], - GNUTLS_PKCS11_OBJ_ID_HEX, - buf, &size); + ret = gnutls_pkcs11_obj_get_info( + crt_list[i], GNUTLS_PKCS11_OBJ_ID_HEX, buf, &size); if (ret < 0) { if (ret == GNUTLS_E_SHORT_MEMORY_BUFFER) { fprintf(outfile, "\tID: (too long)\n"); @@ -402,19 +392,16 @@ pkcs11_list(FILE * outfile, const char *url, int type, unsigned int flags, } if (otype == GNUTLS_PKCS11_OBJ_X509_CRT && print_exts > 0) { - ret = - gnutls_pkcs11_obj_get_exts(crt_list[i], &exts, - &exts_size, 0); + ret = gnutls_pkcs11_obj_get_exts(crt_list[i], &exts, + &exts_size, 0); if (ret >= 0 && exts_size > 0) { gnutls_datum_t txt; if (print_exts > 1) { fprintf(outfile, "\tAttached extensions:\n"); - ret = - gnutls_x509_ext_print(exts, - exts_size, 0, - &txt); + ret = gnutls_x509_ext_print( + exts, exts_size, 0, &txt); if (ret >= 0) { fprintf(outfile, "%s", (char *)txt.data); @@ -426,9 +413,9 @@ pkcs11_list(FILE * outfile, const char *url, int type, unsigned int flags, for (j = 0; j < exts_size; j++) { fprintf(outfile, "%s%s", exts[j].oid, - (j != - exts_size - - 1) ? "," : " "); + (j != exts_size - 1) ? + "," : + " "); } } for (j = 0; j < exts_size; j++) { @@ -450,9 +437,8 @@ pkcs11_list(FILE * outfile, const char *url, int type, unsigned int flags, #define TEST_DATA "Test data to sign" -void -pkcs11_test_sign(FILE * outfile, const char *url, unsigned int flags, - common_info_st * info) +void pkcs11_test_sign(FILE *outfile, const char *url, unsigned int flags, + common_info_st *info) { gnutls_privkey_t privkey; gnutls_pubkey_t pubkey; @@ -471,15 +457,15 @@ pkcs11_test_sign(FILE * outfile, const char *url, unsigned int flags, ret = gnutls_privkey_init(&privkey); if (ret < 0) { - fprintf(stderr, "Error in %s:%d: %s\n", __func__, - __LINE__, gnutls_strerror(ret)); + fprintf(stderr, "Error in %s:%d: %s\n", __func__, __LINE__, + gnutls_strerror(ret)); app_exit(1); } ret = gnutls_pubkey_init(&pubkey); if (ret < 0) { - fprintf(stderr, "Error in %s:%d: %s\n", __func__, - __LINE__, gnutls_strerror(ret)); + fprintf(stderr, "Error in %s:%d: %s\n", __func__, __LINE__, + gnutls_strerror(ret)); app_exit(1); } @@ -490,9 +476,8 @@ pkcs11_test_sign(FILE * outfile, const char *url, unsigned int flags, app_exit(1); } - ret = - gnutls_pubkey_import_privkey(pubkey, privkey, - GNUTLS_KEY_DIGITAL_SIGNATURE, flags); + ret = gnutls_pubkey_import_privkey(pubkey, privkey, + GNUTLS_KEY_DIGITAL_SIGNATURE, flags); if (ret < 0) { fprintf(stderr, "Cannot import public key: %s\n", gnutls_strerror(ret)); @@ -546,8 +531,8 @@ pkcs11_test_sign(FILE * outfile, const char *url, unsigned int flags, gnutls_pubkey_deinit(pubkey); ret = gnutls_pubkey_init(&pubkey); if (ret < 0) { - fprintf(stderr, "Error in %s:%d: %s\n", __func__, - __LINE__, gnutls_strerror(ret)); + fprintf(stderr, "Error in %s:%d: %s\n", __func__, __LINE__, + gnutls_strerror(ret)); app_exit(1); } @@ -577,9 +562,8 @@ pkcs11_test_sign(FILE * outfile, const char *url, unsigned int flags, UNFIX; } -void -pkcs11_export(FILE * outfile, const char *url, unsigned int flags, - common_info_st * info) +void pkcs11_export(FILE *outfile, const char *url, unsigned int flags, + common_info_st *info) { gnutls_pkcs11_obj_t obj; gnutls_datum_t t; @@ -606,8 +590,8 @@ pkcs11_export(FILE * outfile, const char *url, unsigned int flags, ret = gnutls_pkcs11_obj_export3(obj, info->outcert_format, &t); if (ret < 0) { - fprintf(stderr, "Error in %s:%d: %s\n", __func__, - __LINE__, gnutls_strerror(ret)); + fprintf(stderr, "Error in %s:%d: %s\n", __func__, __LINE__, + gnutls_strerror(ret)); app_exit(1); } @@ -623,9 +607,8 @@ pkcs11_export(FILE * outfile, const char *url, unsigned int flags, return; } -void -pkcs11_export_chain(FILE * outfile, const char *url, unsigned int flags, - common_info_st * info) +void pkcs11_export_chain(FILE *outfile, const char *url, unsigned int flags, + common_info_st *info) { gnutls_pkcs11_obj_t obj; gnutls_x509_crt_t xcrt; @@ -661,15 +644,15 @@ pkcs11_export_chain(FILE * outfile, const char *url, unsigned int flags, ret = gnutls_x509_crt_import_pkcs11(xcrt, obj); if (ret < 0) { - fprintf(stderr, "Error in %s:%d: %s\n", __func__, - __LINE__, gnutls_strerror(ret)); + fprintf(stderr, "Error in %s:%d: %s\n", __func__, __LINE__, + gnutls_strerror(ret)); app_exit(1); } ret = gnutls_pkcs11_obj_export3(obj, GNUTLS_X509_FMT_PEM, &t); if (ret < 0) { - fprintf(stderr, "Error in %s:%d: %s\n", __func__, - __LINE__, gnutls_strerror(ret)); + fprintf(stderr, "Error in %s:%d: %s\n", __func__, __LINE__, + gnutls_strerror(ret)); app_exit(1); } fwrite(t.data, 1, t.size, outfile); @@ -679,9 +662,8 @@ pkcs11_export_chain(FILE * outfile, const char *url, unsigned int flags, gnutls_pkcs11_obj_deinit(obj); do { - ret = - gnutls_pkcs11_get_raw_issuer(url, xcrt, &t, - GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_pkcs11_get_raw_issuer(url, xcrt, &t, + GNUTLS_X509_FMT_PEM, 0); if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) break; if (ret < 0) { @@ -725,8 +707,7 @@ pkcs11_export_chain(FILE * outfile, const char *url, unsigned int flags, /* If there is a single token only present, return its URL. */ -static -char *get_single_token_url(common_info_st * info) +static char *get_single_token_url(common_info_st *info) { int ret; char *url = NULL, *t = NULL; @@ -747,8 +728,7 @@ char *get_single_token_url(common_info_st * info) return url; } -static -void print_type(FILE * outfile, unsigned flags) +static void print_type(FILE *outfile, unsigned flags) { unsigned print = 0; @@ -858,9 +838,8 @@ void print_type(FILE * outfile, unsigned flags) fputc('\n', outfile); } -void -pkcs11_token_list(FILE * outfile, unsigned int detailed, - common_info_st * info, unsigned brief) +void pkcs11_token_list(FILE *outfile, unsigned int detailed, + common_info_st *info, unsigned brief) { int ret; int i; @@ -890,10 +869,8 @@ pkcs11_token_list(FILE * outfile, unsigned int detailed, } size = sizeof(buf); - ret = - gnutls_pkcs11_token_get_info(url, - GNUTLS_PKCS11_TOKEN_LABEL, - buf, &size); + ret = gnutls_pkcs11_token_get_info( + url, GNUTLS_PKCS11_TOKEN_LABEL, buf, &size); if (ret < 0) { fprintf(stderr, "Error in %s:%d: %s\n", __func__, __LINE__, gnutls_strerror(ret)); @@ -911,10 +888,8 @@ pkcs11_token_list(FILE * outfile, unsigned int detailed, } size = sizeof(buf); - ret = - gnutls_pkcs11_token_get_info(url, - GNUTLS_PKCS11_TOKEN_MANUFACTURER, - buf, &size); + ret = gnutls_pkcs11_token_get_info( + url, GNUTLS_PKCS11_TOKEN_MANUFACTURER, buf, &size); if (ret < 0) { fprintf(stderr, "Error in %s:%d: %s\n", __func__, __LINE__, gnutls_strerror(ret)); @@ -924,10 +899,8 @@ pkcs11_token_list(FILE * outfile, unsigned int detailed, fprintf(outfile, "\tManufacturer: %s\n", buf); size = sizeof(buf); - ret = - gnutls_pkcs11_token_get_info(url, - GNUTLS_PKCS11_TOKEN_MODEL, - buf, &size); + ret = gnutls_pkcs11_token_get_info( + url, GNUTLS_PKCS11_TOKEN_MODEL, buf, &size); if (ret < 0) { fprintf(stderr, "Error in %s:%d: %s\n", __func__, __LINE__, gnutls_strerror(ret)); @@ -937,10 +910,8 @@ pkcs11_token_list(FILE * outfile, unsigned int detailed, fprintf(outfile, "\tModel: %s\n", buf); size = sizeof(buf); - ret = - gnutls_pkcs11_token_get_info(url, - GNUTLS_PKCS11_TOKEN_SERIAL, - buf, &size); + ret = gnutls_pkcs11_token_get_info( + url, GNUTLS_PKCS11_TOKEN_SERIAL, buf, &size); if (ret < 0) { fprintf(stderr, "Error in %s:%d: %s\n", __func__, __LINE__, gnutls_strerror(ret)); @@ -950,24 +921,21 @@ pkcs11_token_list(FILE * outfile, unsigned int detailed, fprintf(outfile, "\tSerial: %s\n", buf); size = sizeof(buf); - ret = - gnutls_pkcs11_token_get_info(url, - GNUTLS_PKCS11_TOKEN_MODNAME, - buf, &size); + ret = gnutls_pkcs11_token_get_info( + url, GNUTLS_PKCS11_TOKEN_MODNAME, buf, &size); if (ret >= 0) { fprintf(outfile, "\tModule: %s\n", buf); } fprintf(outfile, "\n\n"); - cont: + cont: gnutls_free(url); - } return; } static void find_same_pubkey_with_id(const char *url, gnutls_x509_crt_t crt, - gnutls_datum_t * cid, unsigned flags) + gnutls_datum_t *cid, unsigned flags) { gnutls_pkcs11_obj_t *obj_list; unsigned int obj_list_size = 0, i; @@ -1001,11 +969,9 @@ static void find_same_pubkey_with_id(const char *url, gnutls_x509_crt_t crt, return; } - ret = - gnutls_pkcs11_obj_list_import_url4(&obj_list, &obj_list_size, - url, - GNUTLS_PKCS11_OBJ_FLAG_PUBKEY | - flags); + ret = gnutls_pkcs11_obj_list_import_url4(&obj_list, &obj_list_size, url, + GNUTLS_PKCS11_OBJ_FLAG_PUBKEY | + flags); if (ret < 0) { fprintf(stderr, "Error in obj_list_import (1): %s\n", gnutls_strerror(ret)); @@ -1036,15 +1002,13 @@ static void find_same_pubkey_with_id(const char *url, gnutls_x509_crt_t crt, goto cont; } - if (praw2.size == praw.size - && memcmp(praw2.data, praw.data, praw.size) == 0) { + if (praw2.size == praw.size && + memcmp(praw2.data, praw.data, praw.size) == 0) { /* found - now extract the CKA_ID */ size = sizeof(buf); - ret = - gnutls_pkcs11_obj_get_info(obj_list[i], - GNUTLS_PKCS11_OBJ_ID, - buf, &size); + ret = gnutls_pkcs11_obj_get_info( + obj_list[i], GNUTLS_PKCS11_OBJ_ID, buf, &size); if (ret < 0) { fprintf(stderr, "Error in %s:%d: %s\n", __func__, __LINE__, @@ -1064,7 +1028,7 @@ static void find_same_pubkey_with_id(const char *url, gnutls_x509_crt_t crt, return; } - cont: + cont: gnutls_pkcs11_obj_deinit(obj_list[i]); gnutls_free(purl); } @@ -1075,7 +1039,7 @@ static void find_same_pubkey_with_id(const char *url, gnutls_x509_crt_t crt, } static void find_same_privkey_with_id(const char *url, gnutls_x509_crt_t crt, - gnutls_datum_t * cid, unsigned flags) + gnutls_datum_t *cid, unsigned flags) { gnutls_pkcs11_obj_t *obj_list; unsigned int obj_list_size = 0, i; @@ -1110,11 +1074,9 @@ static void find_same_privkey_with_id(const char *url, gnutls_x509_crt_t crt, return; } - ret = - gnutls_pkcs11_obj_list_import_url4(&obj_list, &obj_list_size, - url, - GNUTLS_PKCS11_OBJ_FLAG_PRIVKEY | - flags); + ret = gnutls_pkcs11_obj_list_import_url4( + &obj_list, &obj_list_size, url, + GNUTLS_PKCS11_OBJ_FLAG_PRIVKEY | flags); if (ret < 0) { fprintf(stderr, "Error in obj_list_import (1): %s\n", gnutls_strerror(ret)); @@ -1173,8 +1135,8 @@ static void find_same_privkey_with_id(const char *url, gnutls_x509_crt_t crt, goto cont; } - ret = - gnutls_pubkey_export2(pubkey, GNUTLS_X509_FMT_DER, &praw2); + ret = gnutls_pubkey_export2(pubkey, GNUTLS_X509_FMT_DER, + &praw2); if (ret < 0) { fprintf(stderr, "error: cannot export pubkey '%s': %s\n", purl, @@ -1182,15 +1144,13 @@ static void find_same_privkey_with_id(const char *url, gnutls_x509_crt_t crt, goto cont; } - if (praw2.size == praw.size - && memcmp(praw2.data, praw.data, praw.size) == 0) { + if (praw2.size == praw.size && + memcmp(praw2.data, praw.data, praw.size) == 0) { /* found - now extract the CKA_ID */ size = sizeof(buf); - ret = - gnutls_pkcs11_obj_get_info(obj_list[i], - GNUTLS_PKCS11_OBJ_ID, - buf, &size); + ret = gnutls_pkcs11_obj_get_info( + obj_list[i], GNUTLS_PKCS11_OBJ_ID, buf, &size); if (ret < 0) { fprintf(stderr, "Error in %s:%d: %s\n", __func__, __LINE__, @@ -1210,7 +1170,7 @@ static void find_same_privkey_with_id(const char *url, gnutls_x509_crt_t crt, return; } - cont: + cont: if (privkey) gnutls_privkey_deinit(privkey); if (pubkey) @@ -1223,9 +1183,8 @@ static void find_same_privkey_with_id(const char *url, gnutls_x509_crt_t crt, return; } -void -pkcs11_write(FILE * outfile, const char *url, const char *label, - const char *id, unsigned flags, common_info_st * info) +void pkcs11_write(FILE *outfile, const char *url, const char *label, + const char *id, unsigned flags, common_info_st *info) { gnutls_x509_crt_t xcrt; gnutls_x509_privkey_t xkey; @@ -1243,9 +1202,8 @@ pkcs11_write(FILE * outfile, const char *url, const char *label, CHECK_LOGIN_FLAG(url, flags); if (label == NULL && info->batch == 0) { - label = - read_str - ("warning: The object's label was not specified.\nLabel: "); + label = read_str( + "warning: The object's label was not specified.\nLabel: "); } if (id != NULL) { @@ -1262,11 +1220,9 @@ pkcs11_write(FILE * outfile, const char *url, const char *label, secret_key = load_secret_key(0, info); if (secret_key != NULL) { - ret = - gnutls_pkcs11_copy_secret_key(url, secret_key, label, - info->key_usage, - flags | - GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE); + ret = gnutls_pkcs11_copy_secret_key( + url, secret_key, label, info->key_usage, + flags | GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE); if (ret < 0) { fprintf(stderr, "Error in %s:%d: %s\n", __func__, __LINE__, gnutls_strerror(ret)); @@ -1276,9 +1232,9 @@ pkcs11_write(FILE * outfile, const char *url, const char *label, xcrt = load_cert(0, info); if (xcrt != NULL) { - if (cid.data == NULL - && !(flags & GNUTLS_PKCS11_OBJ_FLAG_MARK_CA) - && !(flags & GNUTLS_PKCS11_OBJ_FLAG_MARK_DISTRUSTED)) { + if (cid.data == NULL && + !(flags & GNUTLS_PKCS11_OBJ_FLAG_MARK_CA) && + !(flags & GNUTLS_PKCS11_OBJ_FLAG_MARK_DISTRUSTED)) { gnutls_datum_t hex; /* attempting to discover public keys matching this one, * and if yes, re-use their ID. We don't do it for CAs (trusted/distrusted @@ -1288,9 +1244,9 @@ pkcs11_write(FILE * outfile, const char *url, const char *label, find_same_pubkey_with_id(url, xcrt, &cid, 0); if (cid.data == NULL && KEEP_LOGIN_FLAGS(flags)) - find_same_pubkey_with_id(url, xcrt, &cid, - KEEP_LOGIN_FLAGS - (flags)); + find_same_pubkey_with_id( + url, xcrt, &cid, + KEEP_LOGIN_FLAGS(flags)); if (cid.data) { ret = gnutls_hex_encode2(&cid, &hex); @@ -1305,10 +1261,10 @@ pkcs11_write(FILE * outfile, const char *url, const char *label, hex.data); gnutls_free(hex.data); - } else { /* no luck, try to get a corresponding private key */ - find_same_privkey_with_id(url, xcrt, &cid, - KEEP_LOGIN_FLAGS - (flags)); + } else { /* no luck, try to get a corresponding private key */ + find_same_privkey_with_id( + url, xcrt, &cid, + KEEP_LOGIN_FLAGS(flags)); if (cid.data) { ret = gnutls_hex_encode2(&cid, &hex); if (ret < 0) { @@ -1325,14 +1281,14 @@ pkcs11_write(FILE * outfile, const char *url, const char *label, } } - ret = - gnutls_pkcs11_copy_x509_crt2(url, xcrt, label, &cid, flags); + ret = gnutls_pkcs11_copy_x509_crt2(url, xcrt, label, &cid, + flags); if (ret < 0) { fprintf(stderr, "Error writing certificate: %s\n", gnutls_strerror(ret)); - if (((flags & GNUTLS_PKCS11_OBJ_FLAG_MARK_CA) - || (flags & GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED)) - && (flags & GNUTLS_PKCS11_OBJ_FLAG_LOGIN_SO) == 0) + if (((flags & GNUTLS_PKCS11_OBJ_FLAG_MARK_CA) || + (flags & GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED)) && + (flags & GNUTLS_PKCS11_OBJ_FLAG_LOGIN_SO) == 0) fprintf(stderr, "note: some tokens may require security officer login for this operation\n"); app_exit(1); @@ -1344,13 +1300,9 @@ pkcs11_write(FILE * outfile, const char *url, const char *label, xkey = load_x509_private_key(0, info); if (xkey != NULL) { - ret = - gnutls_pkcs11_copy_x509_privkey2(url, xkey, label, - &cid, - key_usage | - info->key_usage, - flags | - GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE); + ret = gnutls_pkcs11_copy_x509_privkey2( + url, xkey, label, &cid, key_usage | info->key_usage, + flags | GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE); if (ret < 0) { fprintf(stderr, "Error in %s:%d: %s\n", __func__, __LINE__, gnutls_strerror(ret)); @@ -1361,9 +1313,8 @@ pkcs11_write(FILE * outfile, const char *url, const char *label, xpubkey = load_pubkey(0, info); if (xpubkey != NULL) { - ret = - gnutls_pkcs11_copy_pubkey(url, xpubkey, label, - &cid, 0, flags); + ret = gnutls_pkcs11_copy_pubkey(url, xpubkey, label, &cid, 0, + flags); if (ret < 0) { fprintf(stderr, "Error in %s:%d: %s\n", __func__, __LINE__, gnutls_strerror(ret)); @@ -1372,8 +1323,8 @@ pkcs11_write(FILE * outfile, const char *url, const char *label, gnutls_pubkey_deinit(xpubkey); } - if (xkey == NULL && xcrt == NULL && secret_key == NULL - && xpubkey == NULL) { + if (xkey == NULL && xcrt == NULL && secret_key == NULL && + xpubkey == NULL) { fprintf(stderr, "You must use --load-privkey, --load-certificate, --load-pubkey or --secret-key to load the file to be copied\n"); app_exit(1); @@ -1383,11 +1334,9 @@ pkcs11_write(FILE * outfile, const char *url, const char *label, return; } -void -pkcs11_generate(FILE * outfile, const char *url, gnutls_pk_algorithm_t pk, - unsigned int bits, - const char *label, const char *id, int detailed, - unsigned int flags, common_info_st * info) +void pkcs11_generate(FILE *outfile, const char *url, gnutls_pk_algorithm_t pk, + unsigned int bits, const char *label, const char *id, + int detailed, unsigned int flags, common_info_st *info) { int ret; gnutls_datum_t pubkey; @@ -1424,12 +1373,9 @@ pkcs11_generate(FILE * outfile, const char *url, gnutls_pk_algorithm_t pk, fprintf(stderr, "Generating an %s key...\n", gnutls_pk_get_name(pk)); - ret = - gnutls_pkcs11_privkey_generate3(url, pk, bits, label, &cid, - GNUTLS_X509_FMT_PEM, &pubkey, - info->key_usage, - flags | - GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE); + ret = gnutls_pkcs11_privkey_generate3( + url, pk, bits, label, &cid, GNUTLS_X509_FMT_PEM, &pubkey, + info->key_usage, flags | GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE); if (ret < 0) { fprintf(stderr, "Error in %s:%d: %s\n", __func__, __LINE__, gnutls_strerror(ret)); @@ -1446,9 +1392,8 @@ pkcs11_generate(FILE * outfile, const char *url, gnutls_pk_algorithm_t pk, return; } -void -pkcs11_export_pubkey(FILE * outfile, const char *url, int detailed, - unsigned int flags, common_info_st * info) +void pkcs11_export_pubkey(FILE *outfile, const char *url, int detailed, + unsigned int flags, common_info_st *info) { int ret; gnutls_datum_t pubkey; @@ -1480,10 +1425,8 @@ pkcs11_export_pubkey(FILE * outfile, const char *url, int detailed, app_exit(1); } - ret = - gnutls_pkcs11_privkey_export_pubkey(pkey, - GNUTLS_X509_FMT_PEM, &pubkey, - flags); + ret = gnutls_pkcs11_privkey_export_pubkey(pkey, GNUTLS_X509_FMT_PEM, + &pubkey, flags); if (ret < 0) { fprintf(stderr, "Error in %s:%d: %s\n", __func__, __LINE__, gnutls_strerror(ret)); @@ -1498,9 +1441,8 @@ pkcs11_export_pubkey(FILE * outfile, const char *url, int detailed, return; } -void -pkcs11_init(FILE * outfile, const char *url, const char *label, - common_info_st * info) +void pkcs11_init(FILE *outfile, const char *url, const char *label, + common_info_st *info) { int ret; char so_pin[MAX_PIN_LEN]; @@ -1547,9 +1489,8 @@ pkcs11_init(FILE * outfile, const char *url, const char *label, return; } -void -pkcs11_set_token_pin(FILE * outfile, const char *url, common_info_st * info, - unsigned so) +void pkcs11_set_token_pin(FILE *outfile, const char *url, common_info_st *info, + unsigned so) { int ret; char newpin[MAX_PIN_LEN] = ""; @@ -1588,10 +1529,8 @@ pkcs11_set_token_pin(FILE * outfile, const char *url, common_info_st * info, app_exit(1); } - ret = - gnutls_pkcs11_token_set_pin(url, NULL, newpin, - (so != - 0) ? GNUTLS_PIN_SO : GNUTLS_PIN_USER); + ret = gnutls_pkcs11_token_set_pin( + url, NULL, newpin, (so != 0) ? GNUTLS_PIN_SO : GNUTLS_PIN_USER); if (ret < 0) { fprintf(stderr, "Error in %s:%d: %s\n", __func__, __LINE__, gnutls_strerror(ret)); @@ -1603,9 +1542,8 @@ pkcs11_set_token_pin(FILE * outfile, const char *url, common_info_st * info, #include "mech-list.h" -void -pkcs11_mechanism_list(FILE * outfile, const char *url, unsigned int flags, - common_info_st * info) +void pkcs11_mechanism_list(FILE *outfile, const char *url, unsigned int flags, + common_info_st *info) { int ret; int idx; @@ -1630,8 +1568,9 @@ pkcs11_mechanism_list(FILE * outfile, const char *url, unsigned int flags, fprintf(outfile, "[0x%.4lx] %s", mechanism, str); - if (gnutls_pkcs11_token_check_mechanism - (url, mechanism, &minfo, sizeof(minfo), 0) != 0) { + if (gnutls_pkcs11_token_check_mechanism( + url, mechanism, &minfo, sizeof(minfo), 0) != + 0) { if (minfo.ulMaxKeySize != 0) fprintf(outfile, " keysize range (%ld, %ld)", @@ -1690,15 +1629,13 @@ pkcs11_mechanism_list(FILE * outfile, const char *url, unsigned int flags, } fprintf(outfile, "\n"); } - } - while (ret >= 0); + } while (ret >= 0); return; } -void -pkcs11_get_random(FILE * outfile, const char *url, unsigned bytes, - common_info_st * info) +void pkcs11_get_random(FILE *outfile, const char *url, unsigned bytes, + common_info_st *info) { int ret; uint8_t *output; @@ -1726,10 +1663,9 @@ pkcs11_get_random(FILE * outfile, const char *url, unsigned bytes, return; } -static -void pkcs11_set_val(FILE * outfile, const char *url, int detailed, - unsigned int flags, common_info_st * info, - gnutls_pkcs11_obj_info_t val_type, const char *val) +static void pkcs11_set_val(FILE *outfile, const char *url, int detailed, + unsigned int flags, common_info_st *info, + gnutls_pkcs11_obj_info_t val_type, const char *val) { int ret; gnutls_pkcs11_obj_t obj; @@ -1754,8 +1690,8 @@ void pkcs11_set_val(FILE * outfile, const char *url, int detailed, app_exit(1); } - ret = - gnutls_pkcs11_obj_set_info(obj, val_type, val, strlen(val), flags); + ret = gnutls_pkcs11_obj_set_info(obj, val_type, val, strlen(val), + flags); if (ret < 0) { fprintf(stderr, "Error in %s:%d: %s\n", __func__, __LINE__, gnutls_strerror(ret)); @@ -1766,15 +1702,15 @@ void pkcs11_set_val(FILE * outfile, const char *url, int detailed, return; } -void pkcs11_set_id(FILE * outfile, const char *url, int detailed, - unsigned int flags, common_info_st * info, const char *id) +void pkcs11_set_id(FILE *outfile, const char *url, int detailed, + unsigned int flags, common_info_st *info, const char *id) { pkcs11_set_val(outfile, url, detailed, flags, info, GNUTLS_PKCS11_OBJ_ID_HEX, id); } -void pkcs11_set_label(FILE * outfile, const char *url, int detailed, - unsigned int flags, common_info_st * info, +void pkcs11_set_label(FILE *outfile, const char *url, int detailed, + unsigned int flags, common_info_st *info, const char *label) { pkcs11_set_val(outfile, url, detailed, flags, info, diff --git a/src/psk.c b/src/psk.c index dd96036869..48d274c00d 100644 --- a/src/psk.c +++ b/src/psk.c @@ -24,7 +24,7 @@ #ifndef ENABLE_PSK -# include +#include int main(int argc, char **argv) { @@ -34,43 +34,42 @@ int main(int argc, char **argv) #else -# include -# include -# include -# include -# include -# include "psktool-options.h" +#include +#include +#include +#include +#include +#include "psktool-options.h" -# include /* for random */ +#include /* for random */ -# include -# include -# include +#include +#include +#include -# ifndef _WIN32 -# include -# include -# else -# include -# endif +#ifndef _WIN32 +#include +#include +#else +#include +#endif /* Gnulib portability files. */ -# include -# include "close-stream.h" -# include "getpass.h" -# include "xsize.h" +#include +#include "close-stream.h" +#include "getpass.h" +#include "xsize.h" -static int write_key(const char *username, - const unsigned char *key, size_t key_size, - const char *passwd_file); +static int write_key(const char *username, const unsigned char *key, + size_t key_size, const char *passwd_file); -# define MAX_KEY_SIZE 512 +#define MAX_KEY_SIZE 512 int main(int argc, char **argv) { int ret; -# ifndef _WIN32 +#ifndef _WIN32 struct passwd *pwd; -# endif +#endif unsigned char key[MAX_KEY_SIZE]; size_t key_size; const char *passwd, *username; @@ -91,7 +90,7 @@ int main(int argc, char **argv) passwd = OPT_ARG(PSKFILE); if (!HAVE_OPT(USERNAME)) { -# ifndef _WIN32 +#ifndef _WIN32 pwd = getpwuid(getuid()); if (pwd == NULL) { @@ -100,10 +99,10 @@ int main(int argc, char **argv) } username = pwd->pw_name; -# else +#else fprintf(stderr, "Please specify a user\n"); return -1; -# endif +#endif } else username = OPT_ARG(USERNAME); @@ -158,8 +157,7 @@ static int filecopy(const char *src, const char *dst) break; fputs(line, fp); - } - while (1); + } while (1); fclose(fp); fclose(fp2); @@ -167,9 +165,8 @@ static int filecopy(const char *src, const char *dst) return 0; } -static int -write_key(const char *username, const unsigned char *key, size_t key_size, - const char *passwd_file) +static int write_key(const char *username, const unsigned char *key, + size_t key_size, const char *passwd_file) { FILE *fp; char line[5 * 1024]; @@ -288,10 +285,10 @@ write_key(const char *username, const unsigned char *key, size_t key_size, fprintf(fp, "%s:%s\n", _username.data, _key.data); } - out: +out: if (close_stream(fp) == EOF) { - fprintf(stderr, "Error writing %s: %s\n", - passwd_file, strerror(errno)); + fprintf(stderr, "Error writing %s: %s\n", passwd_file, + strerror(errno)); ret = -1; } @@ -304,4 +301,4 @@ write_key(const char *username, const unsigned char *key, size_t key_size, return ret; } -#endif /* ENABLE_PSK */ +#endif /* ENABLE_PSK */ diff --git a/src/serv.c b/src/serv.c index 5f59e36f57..cd6cf0a75c 100644 --- a/src/serv.c +++ b/src/serv.c @@ -111,16 +111,18 @@ static void tcp_server(const char *name, int port, int timeout); #define GERR(ret) fprintf(stderr, "Error: %s\n", safe_strerror(ret)) -#define HTTP_END "\n\n" +#define HTTP_END "\n\n" -#define HTTP_UNIMPLEMENTED "\r\n\r\n501 Method Not Implemented\r\n\r\n

Method Not Implemented

\r\n
\r\n\r\n" +#define HTTP_UNIMPLEMENTED \ + "\r\n\r\n501 Method Not Implemented\r\n\r\n

Method Not Implemented

\r\n
\r\n\r\n" #define HTTP_OK "HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n" -#define HTTP_BEGIN HTTP_OK \ - "\n" \ - "\n" \ - "

This is " \ - "GnuTLS

\n\n" +#define HTTP_BEGIN \ + HTTP_OK \ + "\n" \ + "\n" \ + "

This is " \ + "GnuTLS

\n\n" /* These are global */ gnutls_srp_server_credentials_t srp_cred = NULL; @@ -137,14 +139,14 @@ static void wrap_db_deinit(void); static int wrap_db_store(void *dbf, gnutls_datum_t key, gnutls_datum_t data); static gnutls_datum_t wrap_db_fetch(void *dbf, gnutls_datum_t key); static int wrap_db_delete(void *dbf, gnutls_datum_t key); -static int anti_replay_db_add(void *dbf, time_t exp, const gnutls_datum_t * key, - const gnutls_datum_t * data); +static int anti_replay_db_add(void *dbf, time_t exp, const gnutls_datum_t *key, + const gnutls_datum_t *data); static void cmd_parser(int argc, char **argv); -#define HTTP_STATE_REQUEST 1 -#define HTTP_STATE_RESPONSE 2 -#define HTTP_STATE_CLOSING 3 +#define HTTP_STATE_REQUEST 1 +#define HTTP_STATE_RESPONSE 2 +#define HTTP_STATE_CLOSING 3 typedef struct { char *http_request; @@ -172,7 +174,7 @@ static const char *safe_strerror(int value) static void listener_free(const void *elt) { - listener_item *j = (listener_item *) elt; + listener_item *j = (listener_item *)elt; free(j->http_request); free(j->http_response); @@ -207,9 +209,8 @@ static int generate_dh_primes(void) * once a week or once a month. Depends on the * security requirements. */ - printf - ("Generating Diffie-Hellman parameters [%d]. Please wait...\n", - prime_bits); + printf("Generating Diffie-Hellman parameters [%d]. Please wait...\n", + prime_bits); fflush(stdout); if (gnutls_dh_params_generate2(dh_params, prime_bits) < 0) { @@ -247,9 +248,8 @@ static void read_dh_params(void) params.data = (unsigned char *)tmpdata; params.size = size; - size = - gnutls_dh_params_import_pkcs3(dh_params, ¶ms, - GNUTLS_X509_FMT_PEM); + size = gnutls_dh_params_import_pkcs3(dh_params, ¶ms, + GNUTLS_X509_FMT_PEM); if (size < 0) { fprintf(stderr, "Error parsing dh params: %s\n", @@ -259,14 +259,11 @@ static void read_dh_params(void) printf("Read Diffie-Hellman parameters.\n"); fflush(stdout); - } -static int -get_params(gnutls_session_t session, gnutls_params_type_t type, - gnutls_params_st * st) +static int get_params(gnutls_session_t session, gnutls_params_type_t type, + gnutls_params_st *st) { - if (type == GNUTLS_PARAMS_DH) { if (dh_params == NULL) return -1; @@ -289,19 +286,18 @@ static int cert_verify_callback(gnutls_session_t session) int ret; if (gnutls_auth_get_type(session) == GNUTLS_CRD_CERTIFICATE) { - if (!require_cert - && gnutls_certificate_get_peers(session, &size) == NULL) + if (!require_cert && + gnutls_certificate_get_peers(session, &size) == NULL) return 0; if (ENABLED_OPT(VERIFY_CLIENT_CERT)) { if (cert_verify(session, NULL, NULL) == 0) { do { - ret = - gnutls_alert_send(session, - GNUTLS_AL_FATAL, - GNUTLS_A_ACCESS_DENIED); - } while (ret == GNUTLS_E_INTERRUPTED - || ret == GNUTLS_E_AGAIN); + ret = gnutls_alert_send( + session, GNUTLS_AL_FATAL, + GNUTLS_A_ACCESS_DENIED); + } while (ret == GNUTLS_E_INTERRUPTED || + ret == GNUTLS_E_AGAIN); j->http_state = HTTP_STATE_CLOSING; return -1; @@ -339,7 +335,7 @@ static int post_client_hello(gnutls_session_t session) goto end; } name = new_name; - continue; /* retry call with same index */ + continue; /* retry call with same index */ } /* check if it is the last entry in list */ @@ -379,13 +375,12 @@ static int post_client_hello(gnutls_session_t session) * need to send it ourselves */ do { - ret = gnutls_alert_send(session, - GNUTLS_AL_WARNING, + ret = gnutls_alert_send(session, GNUTLS_AL_WARNING, GNUTLS_A_UNRECOGNIZED_NAME); } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); /* continue handshake, fall through */ - end: +end: free(name); return ret; } @@ -401,8 +396,8 @@ gnutls_session_t initialize_session(int dtls) gnutls_datum_t alpn[MAX_ALPN_PROTOCOLS]; #endif unsigned alpn_size; - unsigned flags = - GNUTLS_SERVER | GNUTLS_POST_HANDSHAKE_AUTH | GNUTLS_ENABLE_RAWPK; + unsigned flags = GNUTLS_SERVER | GNUTLS_POST_HANDSHAKE_AUTH | + GNUTLS_ENABLE_RAWPK; if (dtls) flags |= GNUTLS_DATAGRAM; @@ -432,9 +427,8 @@ gnutls_session_t initialize_session(int dtls) if (earlydata) { gnutls_anti_replay_enable(session, anti_replay); if (HAVE_OPT(MAXEARLYDATA)) { - ret = - gnutls_record_set_max_early_data_size(session, - OPT_VALUE_MAXEARLYDATA); + ret = gnutls_record_set_max_early_data_size( + session, OPT_VALUE_MAXEARLYDATA); if (ret < 0) { fprintf(stderr, "Could not set max early data size: %s\n", @@ -445,8 +439,8 @@ gnutls_session_t initialize_session(int dtls) } if (sni_hostname != NULL) - gnutls_handshake_set_post_client_hello_function(session, - &post_client_hello); + gnutls_handshake_set_post_client_hello_function( + session, &post_client_hello); if (priorities == NULL) { ret = gnutls_set_default_priority(session); @@ -475,10 +469,9 @@ gnutls_session_t initialize_session(int dtls) alpn[i].size = strlen(alpn_protos[i]); } - ret = - gnutls_alpn_set_protocols(session, alpn, alpn_size, - HAVE_OPT(ALPN_FATAL) ? - GNUTLS_ALPN_MANDATORY : 0); + ret = gnutls_alpn_set_protocols( + session, alpn, alpn_size, + HAVE_OPT(ALPN_FATAL) ? GNUTLS_ALPN_MANDATORY : 0); if (ret < 0) { fprintf(stderr, "Error setting ALPN protocols: %s\n", gnutls_strerror(ret)); @@ -509,11 +502,11 @@ gnutls_session_t initialize_session(int dtls) GNUTLS_CERT_IGNORE); else { if (require_cert) - gnutls_certificate_server_set_request(session, - GNUTLS_CERT_REQUIRE); + gnutls_certificate_server_set_request( + session, GNUTLS_CERT_REQUIRE); else - gnutls_certificate_server_set_request(session, - GNUTLS_CERT_REQUEST); + gnutls_certificate_server_set_request( + session, GNUTLS_CERT_REQUEST); } /* use the record size limit extension */ @@ -541,10 +534,8 @@ gnutls_session_t initialize_session(int dtls) #ifdef ENABLE_DTLS_SRTP if (HAVE_OPT(SRTP_PROFILES)) { - ret = - gnutls_srtp_set_profile_direct(session, - OPT_ARG(SRTP_PROFILES), - &err); + ret = gnutls_srtp_set_profile_direct( + session, OPT_ARG(SRTP_PROFILES), &err); if (ret == GNUTLS_E_INVALID_REQUEST) fprintf(stderr, "Syntax error at: %s\n", err); else if (ret != 0) @@ -565,14 +556,14 @@ gnutls_session_t initialize_session(int dtls) #include static const char DEFAULT_DATA[] = - "This is the default message reported by the GnuTLS implementation. " - "For more information please visit " - "https://www.gnutls.org/."; + "This is the default message reported by the GnuTLS implementation. " + "For more information please visit " + "https://www.gnutls.org/."; /* Creates html with the current session information. */ #define tmp_buffer &http_buffer[strlen(http_buffer)] -#define tmp_buffer_size len-strlen(http_buffer) +#define tmp_buffer_size len - strlen(http_buffer) static char *peer_print_info(gnutls_session_t session, int *ret_length, const char *header) { @@ -593,12 +584,11 @@ static char *peer_print_info(gnutls_session_t session, int *ret_length, strcpy(http_buffer, HTTP_BEGIN); strcpy(&http_buffer[sizeof(HTTP_BEGIN) - 1], DEFAULT_DATA); - strcpy(&http_buffer - [sizeof(HTTP_BEGIN) + sizeof(DEFAULT_DATA) - 2], + strcpy(&http_buffer[sizeof(HTTP_BEGIN) + sizeof(DEFAULT_DATA) - + 2], HTTP_END); - *ret_length = - sizeof(DEFAULT_DATA) + sizeof(HTTP_BEGIN) + - sizeof(HTTP_END) - 3; + *ret_length = sizeof(DEFAULT_DATA) + sizeof(HTTP_BEGIN) + + sizeof(HTTP_END) - 3; return http_buffer; } @@ -608,7 +598,7 @@ static char *peer_print_info(gnutls_session_t session, int *ret_length, unsigned int cert_list_size = 0; cert_list = - gnutls_certificate_get_peers(session, &cert_list_size); + gnutls_certificate_get_peers(session, &cert_list_size); for (i = 0; i < cert_list_size; i++) { gnutls_x509_crt_t cert = NULL; @@ -616,11 +606,9 @@ static char *peer_print_info(gnutls_session_t session, int *ret_length, if (gnutls_x509_crt_init(&cert) == 0 && gnutls_x509_crt_import(cert, &cert_list[i], - GNUTLS_X509_FMT_DER) == - 0 - && gnutls_x509_crt_print(cert, - GNUTLS_CRT_PRINT_FULL, - &info) == 0) { + GNUTLS_X509_FMT_DER) == 0 && + gnutls_x509_crt_print(cert, GNUTLS_CRT_PRINT_FULL, + &info) == 0) { const char post[] = "

";
 				char *crtinfo_new;
 				size_t ncrtinfo_new;
@@ -666,9 +654,10 @@ static char *peer_print_info(gnutls_session_t session, int *ret_length,
 	for (i = 0; i < sesid_size; i++)
 		snprintf(tmp_buffer, tmp_buffer_size, "%.2X", sesid[i]);
 	snprintf(tmp_buffer, tmp_buffer_size, "

\n"); - snprintf(tmp_buffer, tmp_buffer_size, - "
If your browser supports session resumption, then you should see the " - "same session ID, when you press the reload button.
\n"); + snprintf( + tmp_buffer, tmp_buffer_size, + "
If your browser supports session resumption, then you should see the " + "same session ID, when you press the reload button.
\n"); /* Here unlike print_info() we use the kx algorithm to distinguish * the functions to call. @@ -678,12 +667,11 @@ static char *peer_print_info(gnutls_session_t session, int *ret_length, size_t dns_size = sizeof(dns); unsigned int type; - if (gnutls_server_name_get - (session, dns, &dns_size, &type, 0) == 0) { + if (gnutls_server_name_get(session, dns, &dns_size, &type, 0) == + 0) { snprintf(tmp_buffer, tmp_buffer_size, "\n

Server Name: %s

\n", dns); } - } kx_alg = gnutls_kx_get(session); @@ -698,7 +686,8 @@ static char *peer_print_info(gnutls_session_t session, int *ret_length, #endif #ifdef ENABLE_PSK - if (kx_alg == GNUTLS_KX_PSK && gnutls_psk_server_get_username(session)) { + if (kx_alg == GNUTLS_KX_PSK && + gnutls_psk_server_get_username(session)) { snprintf(tmp_buffer, tmp_buffer_size, "

Connected as user '%s'.

\n", gnutls_psk_server_get_username(session)); @@ -711,9 +700,10 @@ static char *peer_print_info(gnutls_session_t session, int *ret_length, tmp = gnutls_protocol_get_name(version); if (tmp == NULL) tmp = str_unknown; - snprintf(tmp_buffer, tmp_buffer_size, - "\n", - tmp); + snprintf( + tmp_buffer, tmp_buffer_size, + "
Protocol version:%s
\n", + tmp); desc = gnutls_session_get_desc(session); if (desc) { @@ -723,13 +713,11 @@ static char *peer_print_info(gnutls_session_t session, int *ret_length, } if (gnutls_auth_get_type(session) == GNUTLS_CRD_CERTIFICATE && - gnutls_certificate_type_get2(session, - GNUTLS_CTYPE_CLIENT) != - GNUTLS_CRT_X509) { - tmp = - gnutls_certificate_type_get_name - (gnutls_certificate_type_get2 - (session, GNUTLS_CTYPE_CLIENT)); + gnutls_certificate_type_get2(session, GNUTLS_CTYPE_CLIENT) != + GNUTLS_CRT_X509) { + tmp = gnutls_certificate_type_get_name( + gnutls_certificate_type_get2(session, + GNUTLS_CTYPE_CLIENT)); if (tmp == NULL) tmp = str_unknown; snprintf(tmp_buffer, tmp_buffer_size, @@ -746,23 +734,25 @@ static char *peer_print_info(gnutls_session_t session, int *ret_length, #ifdef ENABLE_ANON if (kx_alg == GNUTLS_KX_ANON_DH) { - snprintf(tmp_buffer, tmp_buffer_size, - "

Connect using anonymous DH (prime of %d bits)

\n", - gnutls_dh_get_prime_bits(session)); + snprintf( + tmp_buffer, tmp_buffer_size, + "

Connect using anonymous DH (prime of %d bits)

\n", + gnutls_dh_get_prime_bits(session)); } #endif #if defined(ENABLE_DHE) || defined(ENABLE_ANON) - if (kx_alg == GNUTLS_KX_DHE_RSA || kx_alg == GNUTLS_KX_DHE_DSS) { - snprintf(tmp_buffer, tmp_buffer_size, - "Ephemeral DH using prime of %d bits.
\n", - gnutls_dh_get_prime_bits(session)); + if (kx_alg == GNUTLS_KX_DHE_RSA || + kx_alg == GNUTLS_KX_DHE_DSS) { + snprintf( + tmp_buffer, tmp_buffer_size, + "Ephemeral DH using prime of %d bits.
\n", + gnutls_dh_get_prime_bits(session)); } #endif - tmp = - gnutls_compression_get_name(gnutls_compression_get - (session)); + tmp = gnutls_compression_get_name( + gnutls_compression_get(session)); if (tmp == NULL) tmp = str_unknown; snprintf(tmp_buffer, tmp_buffer_size, @@ -792,14 +782,14 @@ static char *peer_print_info(gnutls_session_t session, int *ret_length, snprintf(tmp_buffer, tmp_buffer_size, "
Protocol version:%s

\n"); if (crtinfo) { - snprintf(tmp_buffer, tmp_buffer_size, - "
%s\n
\n", crtinfo); + snprintf(tmp_buffer, tmp_buffer_size, "
%s\n
\n", + crtinfo); free(crtinfo); } snprintf(tmp_buffer, tmp_buffer_size, - "

Your HTTP header was:

%s

\n" - HTTP_END, header); + "

Your HTTP header was:

%s

\n" HTTP_END, + header); *ret_length = strlen(http_buffer); @@ -815,13 +805,14 @@ static char *peer_print_data(gnutls_session_t session, int *ret_length) ret = gnutls_load_file(http_data_file, &data); if (ret < 0) { - ret = asprintf(&http_buffer, - "HTTP/1.0 404 Not Found\r\n" - "Content-type: text/html\r\n" - "\r\n" - "404 Not Found\n" - "

Couldn't read %s

\n\n", - http_data_file); + ret = asprintf( + &http_buffer, + "HTTP/1.0 404 Not Found\r\n" + "Content-type: text/html\r\n" + "\r\n" + "404 Not Found\n" + "

Couldn't read %s

\n\n", + http_data_file); if (ret < 0) return NULL; @@ -832,7 +823,9 @@ static char *peer_print_data(gnutls_session_t session, int *ret_length) ret = asprintf(&http_buffer, "HTTP/1.0 200 OK\r\n" "Content-Type: application/octet-stream\r\n" - "Content-Length: %u\r\n" "\r\n", data.size); + "Content-Length: %u\r\n" + "\r\n", + data.size); if (ret < 0) return NULL; len = ret; @@ -843,8 +836,8 @@ static char *peer_print_data(gnutls_session_t session, int *ret_length) return http_buffer; } -const char *human_addr(const struct sockaddr *sa, socklen_t salen, - char *buf, size_t buflen) +const char *human_addr(const struct sockaddr *sa, socklen_t salen, char *buf, + size_t buflen) { const char *save_buf = buf; size_t l; @@ -967,10 +960,9 @@ int listen_socket(const char *name, int listen_port, int socktype) { char topbuf[512]; - fprintf(stderr, "%s listening on %s...", - name, human_addr(ptr->ai_addr, - ptr->ai_addrlen, topbuf, - sizeof(topbuf))); + fprintf(stderr, "%s listening on %s...", name, + human_addr(ptr->ai_addr, ptr->ai_addrlen, + topbuf, sizeof(topbuf))); } if ((news = socket(ptr->ai_family, ptr->ai_socktype, @@ -978,7 +970,7 @@ int listen_socket(const char *name, int listen_port, int socktype) perror("socket() failed"); continue; } - s = news; /* to not overwrite existing s from previous loops */ + s = news; /* to not overwrite existing s from previous loops */ #if defined(HAVE_IPV6) && !defined(_WIN32) if (ptr->ai_family == AF_INET6) { yes = 1; @@ -1049,7 +1041,8 @@ static void strip(char *data) int len = strlen(data); for (i = 0; i < len; i++) { - if (data[i] == '\r' && data[i + 1] == '\n' && data[i + 2] == 0) { + if (data[i] == '\r' && data[i + 1] == '\n' && + data[i + 2] == 0) { data[i] = '\n'; data[i + 1] = 0; break; @@ -1057,9 +1050,8 @@ static void strip(char *data) } } -static unsigned -get_response(gnutls_session_t session, char *request, - char **response, int *response_length) +static unsigned get_response(gnutls_session_t session, char *request, + char **response, int *response_length) { char *p, *h; @@ -1082,7 +1074,7 @@ get_response(gnutls_session_t session, char *request, if (http != 0) { if (http_data_file == NULL) *response = - peer_print_info(session, response_length, h); + peer_print_info(session, response_length, h); else *response = peer_print_data(session, response_length); } else { @@ -1110,17 +1102,17 @@ get_response(gnutls_session_t session, char *request, } else { *response = NULL; do { - ret = - gnutls_alert_send_appropriate(session, ret); - } while (ret == GNUTLS_E_AGAIN - || ret == GNUTLS_E_INTERRUPTED); + ret = gnutls_alert_send_appropriate(session, + ret); + } while (ret == GNUTLS_E_AGAIN || + ret == GNUTLS_E_INTERRUPTED); return 0; } } return 1; - unimplemented: +unimplemented: *response = strdup(HTTP_UNIMPLEMENTED); if (*response == NULL) return 0; @@ -1149,13 +1141,12 @@ static void terminate(int sig) static void check_alert(gnutls_session_t session, int ret) { - if (ret == GNUTLS_E_WARNING_ALERT_RECEIVED - || ret == GNUTLS_E_FATAL_ALERT_RECEIVED) { + if (ret == GNUTLS_E_WARNING_ALERT_RECEIVED || + ret == GNUTLS_E_FATAL_ALERT_RECEIVED) { int last_alert = gnutls_alert_get(session); if (last_alert == GNUTLS_A_NO_RENEGOTIATION && ret == GNUTLS_E_WARNING_ALERT_RECEIVED) - printf - ("* Received NO_RENEGOTIATION alert. Client does not support renegotiation.\n"); + printf("* Received NO_RENEGOTIATION alert. Client does not support renegotiation.\n"); else printf("* Received alert '%d': %s.\n", last_alert, gnutls_alert_get_name(last_alert)); @@ -1186,13 +1177,13 @@ int main(int argc, char **argv) signal(SIGHUP, SIG_IGN); signal(SIGTERM, terminate); if (signal(SIGINT, terminate) == SIG_IGN) - signal(SIGINT, SIG_IGN); /* e.g. background process */ + signal(SIGINT, SIG_IGN); /* e.g. background process */ #endif sockets_init(); - listener_list = gl_list_create_empty(GL_LINKED_LIST, - NULL, NULL, listener_free, true); + listener_list = gl_list_create_empty(GL_LINKED_LIST, NULL, NULL, + listener_free, true); if (nodb == 0) wrap_db_init(); @@ -1223,8 +1214,8 @@ int main(int argc, char **argv) fprintf(stderr, "pkcs11_init: %s", gnutls_strerror(ret)); else { - ret = - gnutls_pkcs11_add_provider(OPT_ARG(PROVIDER), NULL); + ret = gnutls_pkcs11_add_provider(OPT_ARG(PROVIDER), + NULL); if (ret < 0) { fprintf(stderr, "pkcs11_add_provider: %s", gnutls_strerror(ret)); @@ -1254,8 +1245,8 @@ int main(int argc, char **argv) /* X509 credentials */ if (x509_cafile != NULL) { - if ((ret = gnutls_certificate_set_x509_trust_file - (cert_cred, x509_cafile, x509ctype)) < 0) { + if ((ret = gnutls_certificate_set_x509_trust_file( + cert_cred, x509_cafile, x509ctype)) < 0) { fprintf(stderr, "Error reading '%s'\n", x509_cafile); GERR(ret); exit(1); @@ -1264,8 +1255,8 @@ int main(int argc, char **argv) } } if (x509_crlfile != NULL) { - if ((ret = gnutls_certificate_set_x509_crl_file - (cert_cred, x509_crlfile, x509ctype)) < 0) { + if ((ret = gnutls_certificate_set_x509_crl_file( + cert_cred, x509_crlfile, x509ctype)) < 0) { fprintf(stderr, "Error reading '%s'\n", x509_crlfile); GERR(ret); exit(1); @@ -1276,12 +1267,11 @@ int main(int argc, char **argv) if (x509_certfile_size > 0 && x509_keyfile_size > 0) { for (i = 0; i < x509_certfile_size; i++) { - ret = gnutls_certificate_set_x509_key_file - (cert_cred, x509_certfile[i], x509_keyfile[i], - x509ctype); + ret = gnutls_certificate_set_x509_key_file( + cert_cred, x509_certfile[i], x509_keyfile[i], + x509ctype); if (ret < 0) { - fprintf(stderr, - "Error reading '%s' or '%s'\n", + fprintf(stderr, "Error reading '%s' or '%s'\n", x509_certfile[i], x509_keyfile[i]); GERR(ret); exit(1); @@ -1293,14 +1283,9 @@ int main(int argc, char **argv) /* Raw public-key credentials */ if (rawpk_file_size > 0 && rawpk_keyfile_size > 0) { for (i = 0; i < rawpk_keyfile_size; i++) { - ret = - gnutls_certificate_set_rawpk_key_file(cert_cred, - rawpk_file[i], - rawpk_keyfile - [i], - x509ctype, - NULL, 0, NULL, - 0, 0, 0); + ret = gnutls_certificate_set_rawpk_key_file( + cert_cred, rawpk_file[i], rawpk_keyfile[i], + x509ctype, NULL, 0, NULL, 0, 0, 0); if (ret < 0) { fprintf(stderr, "Error reading '%s' or '%s'\n", rawpk_file[i], rawpk_keyfile[i]); @@ -1324,12 +1309,12 @@ int main(int argc, char **argv) #else /* OCSP status-request TLS extension */ if (HAVE_OPT(IGNORE_OCSP_RESPONSE_ERRORS)) - gnutls_certificate_set_flags(cert_cred, - GNUTLS_CERTIFICATE_SKIP_OCSP_RESPONSE_CHECK); + gnutls_certificate_set_flags( + cert_cred, GNUTLS_CERTIFICATE_SKIP_OCSP_RESPONSE_CHECK); for (i = 0; i < ocsp_responses_size; i++) { - ret = gnutls_certificate_set_ocsp_status_request_file - (cert_cred, ocsp_responses[i], 0); + ret = gnutls_certificate_set_ocsp_status_request_file( + cert_cred, ocsp_responses[i], 0); if (ret < 0) { fprintf(stderr, "Cannot set OCSP status request file: %s: %s\n", @@ -1341,9 +1326,8 @@ int main(int argc, char **argv) if (use_static_dh_params) { #if defined(ENABLE_DHE) || defined(ENABLE_ANON) - ret = - gnutls_certificate_set_known_dh_params(cert_cred, - GNUTLS_SEC_PARAM_MEDIUM); + ret = gnutls_certificate_set_known_dh_params( + cert_cred, GNUTLS_SEC_PARAM_MEDIUM); if (ret < 0) { fprintf(stderr, "Error while setting DH parameters: %s\n", @@ -1365,11 +1349,8 @@ int main(int argc, char **argv) if (srp_passwd != NULL) { gnutls_srp_allocate_server_credentials(&srp_cred); - if ((ret = - gnutls_srp_set_server_credentials_file(srp_cred, - srp_passwd, - srp_passwd_conf)) - < 0) { + if ((ret = gnutls_srp_set_server_credentials_file( + srp_cred, srp_passwd, srp_passwd_conf)) < 0) { /* only exit is this function is not disabled */ fprintf(stderr, "Error while setting SRP parameters\n"); @@ -1384,9 +1365,8 @@ int main(int argc, char **argv) if (psk_passwd != NULL) { gnutls_psk_allocate_server_credentials(&psk_cred); - if ((ret = - gnutls_psk_set_server_credentials_file(psk_cred, - psk_passwd)) < 0) { + if ((ret = gnutls_psk_set_server_credentials_file( + psk_cred, psk_passwd)) < 0) { /* only exit is this function is not disabled */ fprintf(stderr, "Error while setting PSK parameters\n"); @@ -1394,9 +1374,8 @@ int main(int argc, char **argv) } if (HAVE_OPT(PSKHINT)) { - ret = - gnutls_psk_set_server_credentials_hint - (psk_cred, OPT_ARG(PSKHINT)); + ret = gnutls_psk_set_server_credentials_hint( + psk_cred, OPT_ARG(PSKHINT)); if (ret) { fprintf(stderr, "Error setting PSK identity hint.\n"); @@ -1405,9 +1384,8 @@ int main(int argc, char **argv) } if (use_static_dh_params) { - ret = - gnutls_psk_set_server_known_dh_params(psk_cred, - GNUTLS_SEC_PARAM_MEDIUM); + ret = gnutls_psk_set_server_known_dh_params( + psk_cred, GNUTLS_SEC_PARAM_MEDIUM); if (ret < 0) { fprintf(stderr, "Error while setting DH parameters: %s\n", @@ -1425,9 +1403,8 @@ int main(int argc, char **argv) gnutls_anon_allocate_server_credentials(&dh_cred); if (use_static_dh_params) { - ret = - gnutls_anon_set_server_known_dh_params(dh_cred, - GNUTLS_SEC_PARAM_MEDIUM); + ret = gnutls_anon_set_server_known_dh_params( + dh_cred, GNUTLS_SEC_PARAM_MEDIUM); if (ret < 0) { fprintf(stderr, "Error while setting DH parameters: %s\n", @@ -1478,7 +1455,7 @@ int main(int argc, char **argv) return 0; } -static void retry_handshake(listener_item * j) +static void retry_handshake(listener_item *j) { int r, ret; @@ -1496,8 +1473,8 @@ static void retry_handshake(listener_item * j) } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); j->close_ok = 0; } else if (r == 0) { - if (gnutls_session_is_resumed(j->tls_session) != 0 - && verbose != 0) + if (gnutls_session_is_resumed(j->tls_session) != 0 && + verbose != 0) printf("*** This is a resumed session\n"); if (verbose != 0) { @@ -1511,11 +1488,11 @@ static void retry_handshake(listener_item * j) print_info(j->tls_session, verbose, verbose); if (HAVE_OPT(KEYMATEXPORT)) - print_key_material(j->tls_session, - OPT_ARG(KEYMATEXPORT), - HAVE_OPT(KEYMATEXPORTSIZE) ? - OPT_VALUE_KEYMATEXPORTSIZE : - 20); + print_key_material( + j->tls_session, OPT_ARG(KEYMATEXPORT), + HAVE_OPT(KEYMATEXPORTSIZE) ? + OPT_VALUE_KEYMATEXPORTSIZE : + 20); } j->close_ok = 1; @@ -1523,7 +1500,7 @@ static void retry_handshake(listener_item * j) } } -static void try_rehandshake(listener_item * j) +static void try_rehandshake(listener_item *j) { int r, ret; fprintf(stderr, "*** Received hello message\n"); @@ -1563,9 +1540,8 @@ static void tcp_server(const char *name, int port, int timeout) gl_list_iterator_t iter; gl_list_node_t node; const void *elt; - gl_list_t accepted_list = gl_list_create_empty(GL_LINKED_LIST, - NULL, NULL, NULL, - true); + gl_list_t accepted_list = gl_list_create_empty( + GL_LINKED_LIST, NULL, NULL, NULL, true); fd_set rd, wr; time_t now = time(0); #ifndef _WIN32 @@ -1576,15 +1552,15 @@ static void tcp_server(const char *name, int port, int timeout) FD_ZERO(&wr); n = 0; -/* flag which connections we are reading or writing to within the fd sets */ + /* flag which connections we are reading or writing to within the fd sets */ iter = gl_list_iterator(listener_list); while (gl_list_iterator_next(&iter, &elt, &node)) { - listener_item *j = (listener_item *) elt; + listener_item *j = (listener_item *)elt; #ifndef _WIN32 val = fcntl(j->fd, F_GETFL, 0); - if ((val == -1) - || (fcntl(j->fd, F_SETFL, val | O_NONBLOCK) < 0)) { + if ((val == -1) || + (fcntl(j->fd, F_SETFL, val | O_NONBLOCK) < 0)) { perror("fcntl()"); exit(1); } @@ -1613,7 +1589,7 @@ static void tcp_server(const char *name, int port, int timeout) } gl_list_iterator_free(&iter); -/* core operation */ + /* core operation */ tv.tv_sec = 10; tv.tv_usec = 0; n = select(n + 1, &rd, &wr, NULL, &tv); @@ -1624,17 +1600,19 @@ static void tcp_server(const char *name, int port, int timeout) exit(1); } -/* read or write to each connection as indicated by select()'s return argument */ + /* read or write to each connection as indicated by select()'s return argument */ iter = gl_list_iterator(listener_list); while (gl_list_iterator_next(&iter, &elt, &node)) { - listener_item *j = (listener_item *) elt; + listener_item *j = (listener_item *)elt; /* a new connection has arrived */ if (FD_ISSET(j->fd, &rd) && j->listen_socket) { calen = sizeof(client_address); memset(&client_address, 0, calen); - accept_fd = accept(j->fd, (struct sockaddr *) - &client_address, &calen); + accept_fd = accept( + j->fd, + (struct sockaddr *)&client_address, + &calen); if (accept_fd < 0) { perror("accept()"); @@ -1655,32 +1633,30 @@ static void tcp_server(const char *name, int port, int timeout) jj->tls_session = initialize_session(0); gnutls_session_set_ptr(jj->tls_session, jj); - gnutls_transport_set_int - (jj->tls_session, accept_fd); + gnutls_transport_set_int( + jj->tls_session, accept_fd); set_read_funcs(jj->tls_session); jj->handshake_ok = 0; jj->close_ok = 0; if (verbose != 0) { - ctt = - simple_ctime(&tt, timebuf); + ctt = simple_ctime(&tt, + timebuf); ctt[strlen(ctt) - 1] = 0; - printf - ("\n* Accepted connection from %s on %s\n", - human_addr((struct - sockaddr *) - &client_address, - calen, - topbuf, - sizeof - (topbuf)), ctt); + printf("\n* Accepted connection from %s on %s\n", + human_addr( + (struct sockaddr + *)&client_address, + calen, topbuf, + sizeof(topbuf)), + ctt); } } } if (FD_ISSET(j->fd, &rd) && !j->listen_socket) { -/* read partial GET request */ + /* read partial GET request */ char buf[16 * 1024]; int r; @@ -1691,10 +1667,12 @@ static void tcp_server(const char *name, int port, int timeout) if (j->handshake_ok == 1) { int earlydata_read = 0; if (earlydata && !j->earlydata_eof) { - r = gnutls_record_recv_early_data(j->tls_session, buf, MIN(sizeof(buf), SMALL_READ_TEST)); + r = gnutls_record_recv_early_data( + j->tls_session, buf, + MIN(sizeof(buf), + SMALL_READ_TEST)); if (r == - GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) - { + GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { j->earlydata_eof = 1; } if (r == 0) { @@ -1702,93 +1680,88 @@ static void tcp_server(const char *name, int port, int timeout) } } if (!earlydata_read) { - r = gnutls_record_recv - (j->tls_session, buf, - MIN(sizeof(buf), - SMALL_READ_TEST)); + r = gnutls_record_recv( + j->tls_session, buf, + MIN(sizeof(buf), + SMALL_READ_TEST)); } - if (r == GNUTLS_E_INTERRUPTED - || r == GNUTLS_E_AGAIN) { + if (r == GNUTLS_E_INTERRUPTED || + r == GNUTLS_E_AGAIN) { /* do nothing */ } else if (r <= 0) { if (r == - GNUTLS_E_HEARTBEAT_PING_RECEIVED) - { - gnutls_heartbeat_pong - (j->tls_session, 0); + GNUTLS_E_HEARTBEAT_PING_RECEIVED) { + gnutls_heartbeat_pong( + j->tls_session, + 0); } else if (r == - GNUTLS_E_REHANDSHAKE) - { + GNUTLS_E_REHANDSHAKE) { try_rehandshake(j); } else { j->http_state = - HTTP_STATE_CLOSING; + HTTP_STATE_CLOSING; if (r < 0) { int ret; - check_alert - (j->tls_session, - r); + check_alert( + j->tls_session, + r); fprintf(stderr, "Error while receiving data\n"); do { - ret = - gnutls_alert_send_appropriate - (j->tls_session, - r); - } while (ret == - GNUTLS_E_AGAIN - || ret - == - GNUTLS_E_INTERRUPTED); + ret = gnutls_alert_send_appropriate( + j->tls_session, + r); + } while ( + ret == GNUTLS_E_AGAIN || + ret == GNUTLS_E_INTERRUPTED); GERR(r); j->close_ok = 0; } } } else { - ptr = - realloc(j->http_request, - j->request_length - + r + 1); + ptr = realloc( + j->http_request, + j->request_length + r + + 1); if (ptr != NULL) { j->http_request = ptr; - memcpy(j->http_request - + - j-> - request_length, + memcpy(j->http_request + + j->request_length, buf, r); j->request_length += r; j->http_request - [j->request_length] - = '\0'; + [j->request_length] = + '\0'; } else { j->http_state = - HTTP_STATE_CLOSING; + HTTP_STATE_CLOSING; } } -/* check if we have a full HTTP header */ + /* check if we have a full HTTP header */ j->http_response = NULL; - if (j->http_state == HTTP_STATE_REQUEST - && j->http_request != NULL) { - if ((http == 0 - && strchr(j->http_request, - '\n')) - || strstr(j->http_request, - "\r\n\r\n") - || strstr(j->http_request, - "\n\n")) { - if (get_response - (j->tls_session, - j->http_request, - &j->http_response, - &j-> - response_length)) { + if (j->http_state == + HTTP_STATE_REQUEST && + j->http_request != NULL) { + if ((http == 0 && + strchr(j->http_request, + '\n')) || + strstr(j->http_request, + "\r\n\r\n") || + strstr(j->http_request, + "\n\n")) { + if (get_response( + j->tls_session, + j->http_request, + &j->http_response, + &j->response_length)) { j->http_state = - HTTP_STATE_RESPONSE; - j->response_written = 0; + HTTP_STATE_RESPONSE; + j->response_written = + 0; } else { j->http_state = - HTTP_STATE_CLOSING; + HTTP_STATE_CLOSING; } } } @@ -1796,33 +1769,31 @@ static void tcp_server(const char *name, int port, int timeout) } if (FD_ISSET(j->fd, &wr)) { -/* write partial response request */ + /* write partial response request */ int r; if (j->handshake_ok == 0) { retry_handshake(j); } - if (j->handshake_ok == 1 - && j->http_response == NULL) { + if (j->handshake_ok == 1 && + j->http_response == NULL) { j->http_state = HTTP_STATE_CLOSING; - } else if (j->handshake_ok == 1 - && j->http_response != NULL) { - r = gnutls_record_send(j->tls_session, - j->http_response - + - j->response_written, - MIN - (j->response_length - - - j->response_written, - SMALL_READ_TEST)); - if (r == GNUTLS_E_INTERRUPTED - || r == GNUTLS_E_AGAIN) { + } else if (j->handshake_ok == 1 && + j->http_response != NULL) { + r = gnutls_record_send( + j->tls_session, + j->http_response + + j->response_written, + MIN(j->response_length - + j->response_written, + SMALL_READ_TEST)); + if (r == GNUTLS_E_INTERRUPTED || + r == GNUTLS_E_AGAIN) { /* do nothing */ } else if (r <= 0) { j->http_state = - HTTP_STATE_CLOSING; + HTTP_STATE_CLOSING; if (r < 0) { fprintf(stderr, "Error while sending data\n"); @@ -1831,23 +1802,24 @@ static void tcp_server(const char *name, int port, int timeout) check_alert(j->tls_session, r); } else { j->response_written += r; -/* check if we have written a complete response */ + /* check if we have written a complete response */ if (j->response_written == j->response_length) { if (http != 0) j->http_state = - HTTP_STATE_CLOSING; + HTTP_STATE_CLOSING; else { j->http_state = - HTTP_STATE_REQUEST; - free(j-> - http_response); - j->http_response - = NULL; - j->response_length = 0; - j->request_length = 0; + HTTP_STATE_REQUEST; + free(j->http_response); + j->http_response = + NULL; + j->response_length = + 0; + j->request_length = + 0; j->http_request - [0] = 0; + [0] = 0; } } } @@ -1861,7 +1833,7 @@ static void tcp_server(const char *name, int port, int timeout) } gl_list_iterator_free(&iter); -/* loop through all connections, closing those that are in error */ + /* loop through all connections, closing those that are in error */ iter = gl_list_iterator(listener_list); while (gl_list_iterator_next(&iter, &elt, &node)) { const listener_item *j = elt; @@ -1905,7 +1877,6 @@ static void tcp_server(const char *name, int port, int timeout) if (nodb == 0) wrap_db_deinit(); gnutls_global_deinit(); - } static void cmd_parser(int argc, char **argv) @@ -2016,13 +1987,12 @@ static void cmd_parser(int argc, char **argv) if (HAVE_OPT(HTTPDATA)) http_data_file = OPT_ARG(HTTPDATA); - } /* session resuming support */ #define SESSION_ID_SIZE 128 -#define SESSION_DATA_SIZE (16*1024) +#define SESSION_DATA_SIZE (16 * 1024) typedef struct { unsigned char session_id[SESSION_ID_SIZE]; @@ -2065,10 +2035,8 @@ static int wrap_db_store(void *dbf, gnutls_datum_t key, gnutls_datum_t data) /* find empty or expired slot to store the new entry */ for (i = 0; i < cache_db_ptr; i++) if (cache_db[i].session_id_size == 0 || - !(now < - gnutls_db_check_entry_expire_time(&cache_db - [i]. - session_data))) + !(now < gnutls_db_check_entry_expire_time( + &cache_db[i].session_data))) break; if (i == cache_db_ptr) { @@ -2112,11 +2080,9 @@ static gnutls_datum_t wrap_db_fetch(void *dbf, gnutls_datum_t key) for (i = 0; i < cache_db_ptr; i++) { if (key.size == cache_db[i].session_id_size && - memcmp(key.data, cache_db[i].session_id, - key.size) == 0 && - now < - gnutls_db_check_entry_expire_time(&cache_db - [i].session_data)) { + memcmp(key.data, cache_db[i].session_id, key.size) == 0 && + now < gnutls_db_check_entry_expire_time( + &cache_db[i].session_data)) { res.size = cache_db[i].session_data.size; res.data = malloc(res.size); @@ -2139,7 +2105,6 @@ static int wrap_db_delete(void *dbf, gnutls_datum_t key) for (i = 0; i < cache_db_ptr; i++) { if (key.size == cache_db[i].session_id_size && memcmp(key.data, cache_db[i].session_id, key.size) == 0) { - cache_db[i].session_id_size = 0; free(cache_db[i].session_data.data); cache_db[i].session_data.data = NULL; @@ -2152,20 +2117,17 @@ static int wrap_db_delete(void *dbf, gnutls_datum_t key) return GNUTLS_E_DB_ERROR; } -static int -anti_replay_db_add(void *dbf, time_t exp, const gnutls_datum_t * key, - const gnutls_datum_t * data) +static int anti_replay_db_add(void *dbf, time_t exp, const gnutls_datum_t *key, + const gnutls_datum_t *data) { time_t now = time(0); int i; for (i = 0; i < cache_db_ptr; i++) { if (key->size == cache_db[i].session_id_size && - memcmp(key->data, cache_db[i].session_id, - key->size) == 0 && - now < - gnutls_db_check_entry_expire_time(&cache_db - [i].session_data)) + memcmp(key->data, cache_db[i].session_id, key->size) == 0 && + now < gnutls_db_check_entry_expire_time( + &cache_db[i].session_data)) return GNUTLS_E_DB_ENTRY_EXISTS; } diff --git a/src/socket.c b/src/socket.c index 953d63f767..fd8fc73f09 100644 --- a/src/socket.c +++ b/src/socket.c @@ -21,9 +21,9 @@ #include #if HAVE_SYS_SOCKET_H -# include +#include #elif HAVE_WS2TCPIP_H -# include +#include #endif #include #include @@ -40,8 +40,8 @@ #include "common.h" #ifdef _WIN32 -# undef endservent -# define endservent() +#undef endservent +#define endservent() #endif #define MAX_BUF 4096 @@ -49,33 +49,29 @@ /* Functions to manipulate sockets */ -ssize_t socket_recv(const socket_st * socket, void *buffer, int buffer_size) +ssize_t socket_recv(const socket_st *socket, void *buffer, int buffer_size) { int ret; if (socket->secure) { do { - ret = - gnutls_record_recv(socket->session, buffer, - buffer_size); + ret = gnutls_record_recv(socket->session, buffer, + buffer_size); if (ret == GNUTLS_E_HEARTBEAT_PING_RECEIVED) gnutls_heartbeat_pong(socket->session, 0); - } - while (ret == GNUTLS_E_INTERRUPTED - || ret == GNUTLS_E_HEARTBEAT_PING_RECEIVED); + } while (ret == GNUTLS_E_INTERRUPTED || + ret == GNUTLS_E_HEARTBEAT_PING_RECEIVED); } else do { ret = recv(socket->fd, buffer, buffer_size, 0); - } - while (ret == -1 && errno == EINTR); + } while (ret == -1 && errno == EINTR); return ret; } -ssize_t -socket_recv_timeout(const socket_st * socket, void *buffer, int buffer_size, - unsigned ms) +ssize_t socket_recv_timeout(const socket_st *socket, void *buffer, + int buffer_size, unsigned ms) { int ret; @@ -89,48 +85,41 @@ socket_recv_timeout(const socket_st * socket, void *buffer, int buffer_size, return ret; } -ssize_t -socket_send(const socket_st * socket, const void *buffer, int buffer_size) +ssize_t socket_send(const socket_st *socket, const void *buffer, + int buffer_size) { return socket_send_range(socket, buffer, buffer_size, NULL); } -ssize_t -socket_send_range(const socket_st * socket, const void *buffer, - int buffer_size, gnutls_range_st * range) +ssize_t socket_send_range(const socket_st *socket, const void *buffer, + int buffer_size, gnutls_range_st *range) { int ret; if (socket->secure) do { if (range == NULL) - ret = - gnutls_record_send(socket->session, - buffer, buffer_size); + ret = gnutls_record_send(socket->session, + buffer, buffer_size); else - ret = - gnutls_record_send_range(socket->session, - buffer, - buffer_size, - range); - } - while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); + ret = gnutls_record_send_range(socket->session, + buffer, + buffer_size, + range); + } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); else do { ret = send(socket->fd, buffer, buffer_size, 0); - } - while (ret == -1 && errno == EINTR); + } while (ret == -1 && errno == EINTR); if (ret > 0 && ret != buffer_size && socket->verbose) - fprintf(stderr, - "*** Only sent %d bytes instead of %d.\n", ret, + fprintf(stderr, "*** Only sent %d bytes instead of %d.\n", ret, buffer_size); return ret; } -static -ssize_t send_line(socket_st * socket, const char *txt) +static ssize_t send_line(socket_st *socket, const char *txt) { int len = strlen(txt); int ret; @@ -148,8 +137,8 @@ ssize_t send_line(socket_st * socket, const char *txt) return ret; } -static -ssize_t wait_for_text(socket_st * socket, const char *txt, unsigned txt_size) +static ssize_t wait_for_text(socket_st *socket, const char *txt, + unsigned txt_size) { char buf[1024]; char *pbuf, *p; @@ -202,7 +191,9 @@ ssize_t wait_for_text(socket_st * socket, const char *txt, unsigned txt_size) p = memmem(buf, got, txt, txt_size); if (p != NULL && p != buf) { p--; - if (*p == '\n' || *p == '\r' || (*txt == '<' && *p == '>')) // XMPP is not line oriented, uses XML format + if (*p == '\n' || *p == '\r' || + (*txt == '<' && + *p == '>')) // XMPP is not line oriented, uses XML format break; } } @@ -211,19 +202,19 @@ ssize_t wait_for_text(socket_st * socket, const char *txt, unsigned txt_size) return got; } -static void socket_starttls(socket_st * socket) +static void socket_starttls(socket_st *socket) { char buf[512]; if (socket->secure) return; - if (socket->app_proto == NULL - || strcasecmp(socket->app_proto, "https") == 0) + if (socket->app_proto == NULL || + strcasecmp(socket->app_proto, "https") == 0) return; - if (strcasecmp(socket->app_proto, "smtp") == 0 - || strcasecmp(socket->app_proto, "submission") == 0) { + if (strcasecmp(socket->app_proto, "smtp") == 0 || + strcasecmp(socket->app_proto, "submission") == 0) { if (socket->verbose) log_msg(stdout, "Negotiating SMTP STARTTLS\n"); @@ -233,8 +224,8 @@ static void socket_starttls(socket_st * socket) wait_for_text(socket, "250 ", 4); send_line(socket, "STARTTLS\r\n"); wait_for_text(socket, "220 ", 4); - } else if (strcasecmp(socket->app_proto, "imap") == 0 - || strcasecmp(socket->app_proto, "imap2") == 0) { + } else if (strcasecmp(socket->app_proto, "imap") == 0 || + strcasecmp(socket->app_proto, "imap2") == 0) { if (socket->verbose) log_msg(stdout, "Negotiating IMAP STARTTLS\n"); @@ -246,22 +237,25 @@ static void socket_starttls(socket_st * socket) if (socket->verbose) log_msg(stdout, "Negotiating XMPP STARTTLS\n"); - snprintf(buf, sizeof(buf), - "\n", - socket->hostname); + snprintf( + buf, sizeof(buf), + "\n", + socket->hostname); send_line(socket, buf); wait_for_text(socket, ""); + send_line( + socket, + ""); wait_for_text(socket, "app_proto, "ldap") == 0) { if (socket->verbose) log_msg(stdout, "Negotiating LDAP STARTTLS\n"); -#define LDAP_STR "\x30\x1d\x02\x01\x01\x77\x18\x80\x16\x31\x2e\x33\x2e\x36\x2e\x31\x2e\x34\x2e\x31\x2e\x31\x34\x36\x36\x2e\x32\x30\x30\x33\x37" +#define LDAP_STR \ + "\x30\x1d\x02\x01\x01\x77\x18\x80\x16\x31\x2e\x33\x2e\x36\x2e\x31\x2e\x34\x2e\x31\x2e\x31\x34\x36\x36\x2e\x32\x30\x30\x33\x37" send(socket->fd, LDAP_STR, sizeof(LDAP_STR) - 1, 0); wait_for_text(socket, NULL, 0); - } else if (strcasecmp(socket->app_proto, "ftp") == 0 - || strcasecmp(socket->app_proto, "ftps") == 0) { + } else if (strcasecmp(socket->app_proto, "ftp") == 0 || + strcasecmp(socket->app_proto, "ftps") == 0) { if (socket->verbose) log_msg(stdout, "Negotiating FTP STARTTLS\n"); @@ -300,8 +294,8 @@ static void socket_starttls(socket_st * socket) wait_for_text(socket, "OK ", 3); send_line(socket, "STARTTLS\r\n"); wait_for_text(socket, "OK ", 3); - } else if (strcasecmp(socket->app_proto, "postgres") == 0 - || strcasecmp(socket->app_proto, "postgresql") == 0) { + } else if (strcasecmp(socket->app_proto, "postgres") == 0 || + strcasecmp(socket->app_proto, "postgresql") == 0) { if (socket->verbose) log_msg(stdout, "Negotiating PostgreSQL STARTTLS\n"); @@ -322,9 +316,9 @@ static void socket_starttls(socket_st * socket) return; } -#define CANON_SERVICE(app_proto) \ +#define CANON_SERVICE(app_proto) \ if (strcasecmp(app_proto, "xmpp") == 0) \ - app_proto = "xmpp-server"; \ + app_proto = "xmpp-server"; int starttls_proto_to_port(const char *app_proto) { @@ -357,17 +351,17 @@ const char *starttls_proto_to_service(const char *app_proto) return "443"; } -void socket_bye(socket_st * socket, unsigned polite) +void socket_bye(socket_st *socket, unsigned polite) { int ret; if (socket->secure && socket->session) { if (polite) { do - ret = - gnutls_bye(socket->session, GNUTLS_SHUT_WR); - while (ret == GNUTLS_E_INTERRUPTED - || ret == GNUTLS_E_AGAIN); + ret = gnutls_bye(socket->session, + GNUTLS_SHUT_WR); + while (ret == GNUTLS_E_INTERRUPTED || + ret == GNUTLS_E_AGAIN); if (socket->verbose && ret < 0) fprintf(stderr, "*** gnutls_bye() error: %s\n", gnutls_strerror(ret)); @@ -387,7 +381,7 @@ void socket_bye(socket_st * socket, unsigned polite) free(socket->hostname); free(socket->service); - shutdown(socket->fd, SHUT_RDWR); /* no more receptions */ + shutdown(socket->fd, SHUT_RDWR); /* no more receptions */ close(socket->fd); gnutls_free(socket->rdata.data); @@ -422,7 +416,7 @@ void canonicalize_host(char *hostname, char *service, unsigned service_size) p = hostname + strlen(hostname); if (p > hostname && p[-1] == '.') - p[-1] = 0; // remove trailing dot on FQDN + p[-1] = 0; // remove trailing dot on FQDN } static ssize_t wrap_pull(gnutls_transport_ptr_t ptr, void *data, size_t len) @@ -437,8 +431,8 @@ static ssize_t wrap_pull(gnutls_transport_ptr_t ptr, void *data, size_t len) return r; } -static ssize_t -wrap_push(gnutls_transport_ptr_t ptr, const void *data, size_t len) +static ssize_t wrap_push(gnutls_transport_ptr_t ptr, const void *data, + size_t len) { socket_st *hd = ptr; @@ -455,15 +449,14 @@ inline static int wrap_pull_timeout_func(gnutls_transport_ptr_t ptr, { socket_st *hd = ptr; - return gnutls_system_recv_timeout((gnutls_transport_ptr_t) (long)hd->fd, + return gnutls_system_recv_timeout((gnutls_transport_ptr_t)(long)hd->fd, ms); } -void -socket_open2(socket_st * hd, const char *hostname, const char *service, - const char *app_proto, int flags, const char *msg, - gnutls_datum_t * rdata, gnutls_datum_t * edata, - FILE * server_trace, FILE * client_trace) +void socket_open2(socket_st *hd, const char *hostname, const char *service, + const char *app_proto, int flags, const char *msg, + gnutls_datum_t *rdata, gnutls_datum_t *edata, + FILE *server_trace, FILE *client_trace) { struct addrinfo hints, *res, *ptr; int sd, err = 0; @@ -507,8 +500,8 @@ socket_open2(socket_st * hd, const char *hostname, const char *service, memset(&hints, 0, sizeof(hints)); hints.ai_socktype = udp ? SOCK_DGRAM : SOCK_STREAM; if ((err = getaddrinfo(a_hostname, service, &hints, &res))) { - fprintf(stderr, "Cannot resolve %s:%s: %s\n", hostname, - service, gai_strerror(err)); + fprintf(stderr, "Cannot resolve %s:%s: %s\n", hostname, service, + gai_strerror(err)); exit(1); } @@ -518,10 +511,9 @@ socket_open2(socket_st * hd, const char *hostname, const char *service, if (sd == -1) continue; - if ((err = - getnameinfo(ptr->ai_addr, ptr->ai_addrlen, buffer, - MAX_BUF, portname, sizeof(portname), - NI_NUMERICHOST | NI_NUMERICSERV)) != 0) { + if ((err = getnameinfo(ptr->ai_addr, ptr->ai_addrlen, buffer, + MAX_BUF, portname, sizeof(portname), + NI_NUMERICHOST | NI_NUMERICSERV)) != 0) { fprintf(stderr, "getnameinfo(): %s\n", gai_strerror(err)); close(sd); @@ -542,9 +534,8 @@ socket_open2(socket_st * hd, const char *hostname, const char *service, #endif } - if (fastopen && ptr->ai_socktype == SOCK_STREAM - && (ptr->ai_family == AF_INET - || ptr->ai_family == AF_INET6)) { + if (fastopen && ptr->ai_socktype == SOCK_STREAM && + (ptr->ai_family == AF_INET || ptr->ai_family == AF_INET6)) { memcpy(&hd->connect_addr, ptr->ai_addr, ptr->ai_addrlen); hd->connect_addrlen = ptr->ai_addrlen; @@ -558,8 +549,8 @@ socket_open2(socket_st * hd, const char *hostname, const char *service, log_msg(stdout, "%s '%s:%s'...\n", msg, buffer, portname); - if ((err = - connect(sd, ptr->ai_addr, ptr->ai_addrlen)) < 0) { + if ((err = connect(sd, ptr->ai_addr, ptr->ai_addrlen)) < + 0) { close(sd); continue; } @@ -583,12 +574,9 @@ socket_open2(socket_st * hd, const char *hostname, const char *service, if (hd->session) { if (hd->edata.data) { - ret = - gnutls_record_send_early_data(hd->session, - hd-> - edata.data, - hd-> - edata.size); + ret = gnutls_record_send_early_data( + hd->session, hd->edata.data, + hd->edata.size); if (ret < 0) { fprintf(stderr, "error sending early data\n"); @@ -609,8 +597,8 @@ socket_open2(socket_st * hd, const char *hostname, const char *service, wrap_push); gnutls_transport_set_pull_function(hd->session, wrap_pull); - gnutls_transport_set_pull_timeout_function - (hd->session, wrap_pull_timeout_func); + gnutls_transport_set_pull_timeout_function( + hd->session, wrap_pull_timeout_func); gnutls_transport_set_ptr(hd->session, hd); } else { #ifdef _WIN32 @@ -618,8 +606,8 @@ socket_open2(socket_st * hd, const char *hostname, const char *service, wrap_push); gnutls_transport_set_pull_function(hd->session, wrap_pull); - gnutls_transport_set_pull_timeout_function - (hd->session, wrap_pull_timeout_func); + gnutls_transport_set_pull_timeout_function( + hd->session, wrap_pull_timeout_func); gnutls_transport_set_ptr(hd->session, hd); #else gnutls_transport_set_int(hd->session, hd->fd); @@ -627,10 +615,11 @@ socket_open2(socket_st * hd, const char *hostname, const char *service, } } - if (!(flags & SOCKET_FLAG_RAW) - && !(flags & SOCKET_FLAG_SKIP_INIT)) { + if (!(flags & SOCKET_FLAG_RAW) && + !(flags & SOCKET_FLAG_SKIP_INIT)) { err = do_handshake(hd); - if (err == GNUTLS_E_PUSH_ERROR) { /* failed connecting */ + if (err == + GNUTLS_E_PUSH_ERROR) { /* failed connecting */ gnutls_deinit(hd->session); hd->session = NULL; close(sd); @@ -650,8 +639,8 @@ socket_open2(socket_st * hd, const char *hostname, const char *service, if (err != 0) { int e = errno; - fprintf(stderr, "Could not connect to %s:%s: %s\n", - buffer, portname, strerror(e)); + fprintf(stderr, "Could not connect to %s:%s: %s\n", buffer, + portname, strerror(e)); exit(1); } diff --git a/src/socket.h b/src/socket.h index 89edf66e89..7b88c4847a 100644 --- a/src/socket.h +++ b/src/socket.h @@ -1,16 +1,16 @@ #ifndef GNUTLS_SRC_SOCKET_H -# define GNUTLS_SRC_SOCKET_H +#define GNUTLS_SRC_SOCKET_H -# include -# include +#include +#include -# define SOCKET_FLAG_UDP 1 -# define SOCKET_FLAG_FASTOPEN (1<<1) -# define SOCKET_FLAG_STARTTLS (1<<2) -# define SOCKET_FLAG_RAW (1<<3) /* unencrypted */ -# define SOCKET_FLAG_VERBOSE (1<<4) -# define SOCKET_FLAG_SKIP_INIT (1<<5) -# define SOCKET_FLAG_DONT_PRINT_ERRORS (1<<6) +#define SOCKET_FLAG_UDP 1 +#define SOCKET_FLAG_FASTOPEN (1 << 1) +#define SOCKET_FLAG_STARTTLS (1 << 2) +#define SOCKET_FLAG_RAW (1 << 3) /* unencrypted */ +#define SOCKET_FLAG_VERBOSE (1 << 4) +#define SOCKET_FLAG_SKIP_INIT (1 << 5) +#define SOCKET_FLAG_DONT_PRINT_ERRORS (1 << 6) typedef struct { int fd; @@ -39,28 +39,29 @@ typedef struct { /* calling program must provide that */ extern gnutls_session_t init_tls_session(const char *host); -int do_handshake(socket_st * socket); +int do_handshake(socket_st *socket); -ssize_t socket_recv(const socket_st * socket, void *buffer, int buffer_size); -ssize_t socket_recv_timeout(const socket_st * socket, void *buffer, +ssize_t socket_recv(const socket_st *socket, void *buffer, int buffer_size); +ssize_t socket_recv_timeout(const socket_st *socket, void *buffer, int buffer_size, unsigned ms); -ssize_t socket_send(const socket_st * socket, const void *buffer, +ssize_t socket_send(const socket_st *socket, const void *buffer, int buffer_size); -ssize_t socket_send_range(const socket_st * socket, const void *buffer, - int buffer_size, gnutls_range_st * range); -void -socket_open2(socket_st * hd, const char *hostname, const char *service, - const char *app_proto, int flags, const char *msg, - gnutls_datum_t * rdata, gnutls_datum_t * edata, - FILE * server_trace, FILE * client_trace); +ssize_t socket_send_range(const socket_st *socket, const void *buffer, + int buffer_size, gnutls_range_st *range); +void socket_open2(socket_st *hd, const char *hostname, const char *service, + const char *app_proto, int flags, const char *msg, + gnutls_datum_t *rdata, gnutls_datum_t *edata, + FILE *server_trace, FILE *client_trace); -# define socket_open(hd, host, service, app_proto, flags, msg, rdata) \ - socket_open2(hd, host, service, app_proto, flags, msg, rdata, NULL, NULL, NULL) +#define socket_open(hd, host, service, app_proto, flags, msg, rdata) \ + socket_open2(hd, host, service, app_proto, flags, msg, rdata, NULL, \ + NULL, NULL) -# define socket_open3(hd, host, service, app_proto, flags, msg, rdata, edata) \ - socket_open2(hd, host, service, app_proto, flags, msg, rdata, edata, NULL, NULL) +#define socket_open3(hd, host, service, app_proto, flags, msg, rdata, edata) \ + socket_open2(hd, host, service, app_proto, flags, msg, rdata, edata, \ + NULL, NULL) -void socket_bye(socket_st * socket, unsigned polite); +void socket_bye(socket_st *socket, unsigned polite); int service_to_port(const char *service, const char *proto); const char *port_to_service(const char *sport, const char *proto); @@ -69,6 +70,6 @@ const char *starttls_proto_to_service(const char *app_proto); void canonicalize_host(char *hostname, char *service, unsigned service_size); -# define CONNECT_MSG "Connecting to" +#define CONNECT_MSG "Connecting to" -#endif /* GNUTLS_SRC_SOCKET_H */ +#endif /* GNUTLS_SRC_SOCKET_H */ diff --git a/src/srptool.c b/src/srptool.c index 5688929ff2..5de0d6ed2d 100644 --- a/src/srptool.c +++ b/src/srptool.c @@ -24,16 +24,16 @@ #include #include #include -#include /* for random */ +#include /* for random */ #include #include #ifndef _WIN32 -# include -# include +#include +#include #else -# include +#include #endif /* Gnulib portability files. */ @@ -48,13 +48,12 @@ int crypt_int(const char *username, const char *passwd, int salt, const char *tpasswd_conf, const char *tpasswd, int uindex); -static int read_conf_values(gnutls_datum_t * g, gnutls_datum_t * n, char *str); +static int read_conf_values(gnutls_datum_t *g, gnutls_datum_t *n, char *str); static int _verify_passwd_int(const char *username, const char *passwd, char *verifier, const char *salt, - const gnutls_datum_t * g, - const gnutls_datum_t * n); + const gnutls_datum_t *g, const gnutls_datum_t *n); -static void print_num(const char *msg, const gnutls_datum_t * num) +static void print_num(const char *msg, const gnutls_datum_t *num) { unsigned int i; @@ -68,7 +67,6 @@ static void print_num(const char *msg, const gnutls_datum_t * num) printf("%.2x", num->data[i]); } printf("\n\n"); - } static int generate_create_conf(const char *tpasswd_conf) @@ -86,7 +84,6 @@ static int generate_create_conf(const char *tpasswd_conf) } for (index = 1; index <= 5; index++) { - if (index == 1) { srp_idx = 2; n = gnutls_srp_1536_group_prime; @@ -135,13 +132,11 @@ static int generate_create_conf(const char *tpasswd_conf) gnutls_free(str_g.data); fwrite(line, 1, strlen(line), fp); - } fclose(fp); return 0; - } /* The format of a tpasswd file is: @@ -149,10 +144,9 @@ static int generate_create_conf(const char *tpasswd_conf) * * index is the index of the prime-generator pair in tpasswd.conf */ -static int -_verify_passwd_int(const char *username, const char *passwd, - char *verifier, const char *salt, - const gnutls_datum_t * g, const gnutls_datum_t * n) +static int _verify_passwd_int(const char *username, const char *passwd, + char *verifier, const char *salt, + const gnutls_datum_t *g, const gnutls_datum_t *n) { char _salt[1024]; gnutls_datum_t tmp, raw_salt, new_verifier; @@ -182,8 +176,8 @@ _verify_passwd_int(const char *username, const char *passwd, return -1; } - if (gnutls_srp_verifier - (username, passwd, &raw_salt, g, n, &new_verifier) < 0) { + if (gnutls_srp_verifier(username, passwd, &raw_salt, g, n, + &new_verifier) < 0) { fprintf(stderr, "Could not make the verifier\n"); return -1; } @@ -235,8 +229,7 @@ static int filecopy(const char *src, const char *dst) break; fputs(line, fp); - } - while (1); + } while (1); fclose(fp); fclose(fp2); @@ -261,8 +254,8 @@ static int find_strchr(const char *username, const char *file) while (fgets(line, sizeof(line), fp) != NULL) { /* move to first ':' */ i = 0; - while ((line[i] != ':') && (line[i] != '\0') - && (i < sizeof(line))) { + while ((line[i] != ':') && (line[i] != '\0') && + (i < sizeof(line))) { i++; } if (strncmp(username, line, MAX(i, strlen(username))) == 0) { @@ -281,9 +274,8 @@ static int find_strchr(const char *username, const char *file) /* Parses the tpasswd files, in order to verify the given * username/password pair. */ -static int -verify_passwd(const char *conffile, const char *tpasswd, - const char *username, const char *passwd) +static int verify_passwd(const char *conffile, const char *tpasswd, + const char *username, const char *passwd) { FILE *fp; char line[5 * 1024]; @@ -306,8 +298,7 @@ verify_passwd(const char *conffile, const char *tpasswd, do { p = fgets(line, sizeof(line) - 1, fp); - } - while (p != NULL && atoi(p) != iindex); + } while (p != NULL && atoi(p) != iindex); fclose(fp); @@ -333,8 +324,8 @@ verify_passwd(const char *conffile, const char *tpasswd, * This is the actual verifier. */ i = 0; - while ((line[i] != ':') && (line[i] != '\0') - && (i < sizeof(line))) { + while ((line[i] != ':') && (line[i] != '\0') && + (i < sizeof(line))) { i++; } if (strncmp(username, line, MAX(i, strlen(username))) == 0) { @@ -343,8 +334,7 @@ verify_passwd(const char *conffile, const char *tpasswd, pos = strchr(line, ':'); fclose(fp); if (pos == NULL) { - fprintf(stderr, - "Cannot parse conf file '%s'\n", + fprintf(stderr, "Cannot parse conf file '%s'\n", conffile); return -1; } @@ -354,8 +344,7 @@ verify_passwd(const char *conffile, const char *tpasswd, /* Move to the salt */ pos = strchr(pos, ':'); if (pos == NULL) { - fprintf(stderr, - "Cannot parse conf file '%s'\n", + fprintf(stderr, "Cannot parse conf file '%s'\n", conffile); return -1; } @@ -363,14 +352,13 @@ verify_passwd(const char *conffile, const char *tpasswd, salt_pos = pos; return _verify_passwd_int(username, passwd, - verifier_pos, salt_pos, - &g, &n); + verifier_pos, salt_pos, &g, + &n); } } fclose(fp); return -1; - } #define KPASSWD "/etc/tpasswd" @@ -448,14 +436,12 @@ int main(int argc, char **argv) return verify_passwd(fpasswd_conf, fpasswd, username, passwd); } - return crypt_int(username, passwd, salt_size, - fpasswd_conf, fpasswd, OPT_VALUE_INDEX); - + return crypt_int(username, passwd, salt_size, fpasswd_conf, fpasswd, + OPT_VALUE_INDEX); } -static char *_srp_crypt(const char *username, const char *passwd, - int salt_size, const gnutls_datum_t * g, - const gnutls_datum_t * n) +static char *_srp_crypt(const char *username, const char *passwd, int salt_size, + const gnutls_datum_t *g, const gnutls_datum_t *n) { unsigned char salt[128]; static char result[1024]; @@ -475,8 +461,8 @@ static char *_srp_crypt(const char *username, const char *passwd, dat_salt.data = salt; dat_salt.size = salt_size; - if (gnutls_srp_verifier - (username, passwd, &dat_salt, g, n, &verifier) < 0) { + if (gnutls_srp_verifier(username, passwd, &dat_salt, g, n, &verifier) < + 0) { fprintf(stderr, "Error getting verifier\n"); return NULL; } @@ -500,12 +486,10 @@ static char *_srp_crypt(const char *username, const char *passwd, free(txt_verifier.data); return result; - } -int -crypt_int(const char *username, const char *passwd, int salt_size, - const char *tpasswd_conf, const char *tpasswd, int uindex) +int crypt_int(const char *username, const char *passwd, int salt_size, + const char *tpasswd_conf, const char *tpasswd, int uindex) { FILE *fp; char *cr; @@ -521,10 +505,9 @@ crypt_int(const char *username, const char *passwd, int salt_size, return -1; } - do { /* find the specified uindex in file */ + do { /* find the specified uindex in file */ p = fgets(line, sizeof(line) - 1, fp); - } - while (p != NULL && atoi(p) != uindex); + } while (p != NULL && atoi(p) != uindex); fclose(fp); if (p == NULL) { @@ -561,8 +544,8 @@ crypt_int(const char *username, const char *passwd, int salt_size, } if (filecopy(tpasswd, tmpname) != 0) { - fprintf(stderr, "Cannot copy '%s' to '%s'\n", - tpasswd, tmpname); + fprintf(stderr, "Cannot copy '%s' to '%s'\n", tpasswd, + tmpname); return -1; } @@ -600,8 +583,7 @@ crypt_int(const char *username, const char *passwd, int salt_size, } else { fputs(line, fp); } - } - while (1); + } while (1); if (put == 0) { fprintf(fp, "%s:%s:%u\n", username, cr, iindex); @@ -611,7 +593,6 @@ crypt_int(const char *username, const char *passwd, int salt_size, fclose(fp2); (void)remove(tmpname); - } return 0; @@ -620,7 +601,7 @@ crypt_int(const char *username, const char *passwd, int salt_size, /* this function parses tpasswd.conf file. Format is: * int(index):base64(n):base64(g) */ -static int read_conf_values(gnutls_datum_t * g, gnutls_datum_t * n, char *str) +static int read_conf_values(gnutls_datum_t *g, gnutls_datum_t *n, char *str) { char *p; int len; @@ -629,7 +610,7 @@ static int read_conf_values(gnutls_datum_t * g, gnutls_datum_t * n, char *str) index = atoi(str); - p = strrchr(str, ':'); /* we have g */ + p = strrchr(str, ':'); /* we have g */ if (p == NULL) { return -1; } @@ -652,7 +633,7 @@ static int read_conf_values(gnutls_datum_t * g, gnutls_datum_t * n, char *str) } /* now go for n - modulo */ - p = strrchr(str, ':'); /* we have n */ + p = strrchr(str, ':'); /* we have n */ if (p == NULL) { return -1; } diff --git a/src/systemkey.c b/src/systemkey.c index 8489879a22..9d044292e6 100644 --- a/src/systemkey.c +++ b/src/systemkey.c @@ -47,8 +47,8 @@ #include "systemkey-tool-options.h" static void cmd_parser(int argc, char **argv); -static void systemkey_delete(const char *url, FILE * outfile); -static void systemkey_list(FILE * outfile); +static void systemkey_delete(const char *url, FILE *outfile); +static void systemkey_list(FILE *outfile); static gnutls_x509_crt_fmt_t outcert_format; static gnutls_x509_crt_fmt_t outkey_format; @@ -124,7 +124,7 @@ static void cmd_parser(int argc, char **argv) gnutls_global_deinit(); } -static void systemkey_delete(const char *url, FILE * out) +static void systemkey_delete(const char *url, FILE *out) { int ret; @@ -138,17 +138,16 @@ static void systemkey_delete(const char *url, FILE * out) fprintf(out, "Key %s deleted\n", url); } -static void systemkey_list(FILE * out) +static void systemkey_list(FILE *out) { int ret; gnutls_system_key_iter_t iter = NULL; char *cert_url, *key_url, *label; do { - ret = - gnutls_system_key_iter_get_info(&iter, GNUTLS_CRT_X509, - &cert_url, &key_url, &label, - NULL, 0); + ret = gnutls_system_key_iter_get_info(&iter, GNUTLS_CRT_X509, + &cert_url, &key_url, + &label, NULL, 0); if (ret >= 0) { fprintf(out, "Label:\t%s\nCert:\t%s\nKey:\t%s\n\n", label, cert_url, key_url); diff --git a/src/tests.c b/src/tests.c index 253ecc00ba..27e8d18238 100644 --- a/src/tests.c +++ b/src/tests.c @@ -23,10 +23,10 @@ #include #ifndef _WIN32 -# include -# include +#include +#include #else -# include +#include #endif #include @@ -70,8 +70,7 @@ static int test_do_handshake(gnutls_session_t session) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); handshake_output = ret; @@ -79,8 +78,8 @@ static int test_do_handshake(gnutls_session_t session) if (ret == GNUTLS_E_FATAL_ALERT_RECEIVED) { alert = gnutls_alert_get(session); printf("\n"); - printf("*** Received alert [%d]: %s\n", - alert, gnutls_alert_get_name(alert)); + printf("*** Received alert [%d]: %s\n", alert, + gnutls_alert_get_name(alert)); } } @@ -111,38 +110,42 @@ char protocol_all_str[] = "+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0:+VERS-SSL3.0"; char prio_str[768] = ""; #ifdef ENABLE_GOST -# define GOST_CIPHERS ":+GOST28147-TC26Z-CNT" -# define GOST_MACS ":+GOST28147-TC26Z-IMIT" -# define GOST_KX ":+VKO-GOST-12" -# define GOST_REST ":+SIGN-GOSTR341012-512:+SIGN-GOSTR341012-256:+SIGN-GOSTR341001:+GROUP-GOST-ALL" +#define GOST_CIPHERS ":+GOST28147-TC26Z-CNT" +#define GOST_MACS ":+GOST28147-TC26Z-IMIT" +#define GOST_KX ":+VKO-GOST-12" +#define GOST_REST \ + ":+SIGN-GOSTR341012-512:+SIGN-GOSTR341012-256:+SIGN-GOSTR341001:+GROUP-GOST-ALL" #else -# define GOST_CIPHERS -# define GOST_MACS -# define GOST_KX -# define GOST_REST +#define GOST_CIPHERS +#define GOST_MACS +#define GOST_KX +#define GOST_REST #endif #define ALL_CIPHERS "+CIPHER-ALL:+ARCFOUR-128:+3DES-CBC" GOST_CIPHERS -#define BLOCK_CIPHERS "+3DES-CBC:+AES-128-CBC:+CAMELLIA-128-CBC:+AES-256-CBC:+CAMELLIA-256-CBC" +#define BLOCK_CIPHERS \ + "+3DES-CBC:+AES-128-CBC:+CAMELLIA-128-CBC:+AES-256-CBC:+CAMELLIA-256-CBC" #define SSL3_CIPHERS "+ARCFOUR-128:+3DES-CBC" #define ALL_COMP "+COMP-NULL" #define ALL_MACS "+MAC-ALL:+MD5:+SHA1" GOST_MACS #define SSL3_MACS "+MD5:+SHA1" -#define ALL_KX "+RSA:+DHE-RSA:+DHE-DSS:+ANON-DH:+ECDHE-RSA:+ECDHE-ECDSA:+ANON-ECDH" GOST_KX +#define ALL_KX \ + "+RSA:+DHE-RSA:+DHE-DSS:+ANON-DH:+ECDHE-RSA:+ECDHE-ECDSA:+ANON-ECDH" GOST_KX #define SSL3_KX "+RSA:+DHE-RSA:+DHE-DSS" #define INIT_STR "NONE:" char rest[384] = "%UNSAFE_RENEGOTIATION:+SIGN-ALL:+GROUP-ALL" GOST_REST; -#define _gnutls_priority_set_direct(s, str) { \ - int _ret; \ - if ((_ret=__gnutls_priority_set_direct(s, str, __LINE__)) != TEST_SUCCEED) { \ - return _ret; \ - } \ +#define _gnutls_priority_set_direct(s, str) \ + { \ + int _ret; \ + if ((_ret = __gnutls_priority_set_direct(s, str, __LINE__)) != \ + TEST_SUCCEED) { \ + return _ret; \ + } \ } -static inline int -__gnutls_priority_set_direct(gnutls_session_t session, const char *str, - int line) +static inline int __gnutls_priority_set_direct(gnutls_session_t session, + const char *str, int line) { const char *err; int ret = gnutls_priority_set_direct(session, str, &err); @@ -169,9 +172,10 @@ test_code_t test_server(gnutls_session_t session) buf[sizeof(buf) - 1] = 0; - sprintf(prio_str, INIT_STR - ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS - ":" ALL_KX ":" "%s", protocol_str, rest); + sprintf(prio_str, + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS ":" ALL_KX ":" + "%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -211,9 +215,10 @@ test_code_t test_dhe(gnutls_session_t session) #ifdef ENABLE_DHE int ret; - sprintf(prio_str, INIT_STR - ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS - ":+DHE-RSA:+DHE-DSS:%s", protocol_str, rest); + sprintf(prio_str, + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS + ":+DHE-RSA:+DHE-DSS:%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -232,17 +237,18 @@ test_code_t test_rfc7919(gnutls_session_t session) #ifdef ENABLE_DHE int ret; - sprintf(prio_str, INIT_STR - ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS - ":+DHE-RSA:+DHE-DSS:+GROUP-ALL:%s", protocol_str, rest); + sprintf(prio_str, + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS + ":+DHE-RSA:+DHE-DSS:+GROUP-ALL:%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); ret = test_do_handshake(session); - if (ret != TEST_FAILED - && (gnutls_session_get_flags(session) & GNUTLS_SFLAGS_RFC7919)) + if (ret != TEST_FAILED && + (gnutls_session_get_flags(session) & GNUTLS_SFLAGS_RFC7919)) return TEST_SUCCEED; else return TEST_FAILED; @@ -257,10 +263,10 @@ test_code_t test_ecdhe(gnutls_session_t session) if (tls_ext_ok == 0) return TEST_IGNORE; - sprintf(prio_str, INIT_STR - ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS - ":+ECDHE-RSA:+ECDHE-ECDSA:+CURVE-ALL:%s", protocol_all_str, - rest); + sprintf(prio_str, + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS + ":+ECDHE-RSA:+ECDHE-ECDSA:+CURVE-ALL:%s", + protocol_all_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -281,9 +287,10 @@ test_code_t test_vko_gost_12(gnutls_session_t session) if (tls_ext_ok == 0) return TEST_IGNORE; - sprintf(prio_str, INIT_STR - ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS - ":+VKO-GOST-12:%s", protocol_all_str, rest); + sprintf(prio_str, + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS + ":+VKO-GOST-12:%s", + protocol_all_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -304,9 +311,9 @@ test_code_t test_rsa(gnutls_session_t session) if (tls_ext_ok == 0) return TEST_IGNORE; - sprintf(prio_str, INIT_STR - ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS - ":+RSA:%s", protocol_all_str, rest); + sprintf(prio_str, + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS ":+RSA:%s", + protocol_all_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -319,9 +326,8 @@ test_code_t test_rsa(gnutls_session_t session) return ret; } -static -test_code_t test_ecdhe_curve(gnutls_session_t session, const char *curve, - unsigned id) +static test_code_t test_ecdhe_curve(gnutls_session_t session, const char *curve, + unsigned id) { int ret; @@ -330,10 +336,10 @@ test_code_t test_ecdhe_curve(gnutls_session_t session, const char *curve, /* We always enable all the curves but set our selected as first. That is * because list of curves may be also used by the server to select a cert. */ - sprintf(prio_str, INIT_STR - ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS - ":+ECDHE-RSA:+ECDHE-ECDSA:%s:%s", protocol_all_str, curve, - rest); + sprintf(prio_str, + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS + ":+ECDHE-RSA:+ECDHE-ECDSA:%s:%s", + protocol_all_str, curve, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -389,9 +395,10 @@ test_code_t test_rfc7507(gnutls_session_t session) else return TEST_IGNORE; - sprintf(prio_str, INIT_STR - ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS - ":" ALL_KX ":%s", pstr, rest); + sprintf(prio_str, + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS ":" ALL_KX + ":%s", + pstr, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -413,9 +420,10 @@ test_code_t test_safe_renegotiation(gnutls_session_t session) if (tls_ext_ok == 0) return TEST_IGNORE; - sprintf(prio_str, INIT_STR - ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS - ":" ALL_KX ":%s:%%SAFE_RENEGOTIATION", rest, protocol_str); + sprintf(prio_str, + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS ":" ALL_KX + ":%s:%%SAFE_RENEGOTIATION", + rest, protocol_str); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -434,9 +442,10 @@ test_code_t test_ocsp_status(gnutls_session_t session) if (tls_ext_ok == 0) return TEST_IGNORE; - sprintf(prio_str, INIT_STR - ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS - ":" ALL_KX ":%s", protocol_str, rest); + sprintf(prio_str, + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS ":" ALL_KX + ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_ocsp_status_request_enable_client(session, NULL, 0, NULL); @@ -464,9 +473,9 @@ test_code_t test_ext_master_secret(gnutls_session_t session) if (tls_ext_ok == 0) return TEST_IGNORE; - sprintf(prio_str, INIT_STR - ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS - ":%s:" ALL_KX, rest, protocol_str); + sprintf(prio_str, + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS ":%s:" ALL_KX, + rest, protocol_str); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -489,9 +498,10 @@ test_code_t test_etm(gnutls_session_t session) if (tls_ext_ok == 0) return TEST_IGNORE; - sprintf(prio_str, INIT_STR - "+AES-128-CBC:+AES-256-CBC:" ALL_COMP ":%s:" ALL_MACS - ":%s:" ALL_KX, rest, protocol_str); + sprintf(prio_str, + INIT_STR "+AES-128-CBC:+AES-256-CBC:" ALL_COMP ":%s:" ALL_MACS + ":%s:" ALL_KX, + rest, protocol_str); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -514,9 +524,9 @@ test_code_t test_safe_renegotiation_scsv(gnutls_session_t session) if (ssl3_ok == 0) return TEST_IGNORE; - sprintf(prio_str, INIT_STR - ALL_CIPHERS ":" ALL_COMP ":+VERS-TLS1.0:" - ALL_MACS ":" ALL_KX ":%%SAFE_RENEGOTIATION"); + sprintf(prio_str, + INIT_STR ALL_CIPHERS ":" ALL_COMP ":+VERS-TLS1.0:" ALL_MACS + ":" ALL_KX ":%%SAFE_RENEGOTIATION"); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -538,9 +548,10 @@ test_code_t test_dhe_group(gnutls_session_t session) if (verbose == 0 || pubkey.data == NULL) return TEST_IGNORE; - sprintf(prio_str, INIT_STR - ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS - ":+DHE-RSA:+DHE-DSS:%s", protocol_str, rest); + sprintf(prio_str, + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS + ":+DHE-RSA:+DHE-DSS:%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -549,7 +560,6 @@ test_code_t test_dhe_group(gnutls_session_t session) ret2 = gnutls_dh_get_group(session, &gen, &prime); if (ret2 >= 0) { - fp = fopen("debug-dh.out", "w"); if (fp == NULL) return TEST_FAILED; @@ -577,9 +587,8 @@ test_code_t test_dhe_group(gnutls_session_t session) if (pubkey2.data && pubkey2.size == pubkey.size && memcmp(pubkey.data, pubkey2.data, pubkey.size) == 0) { - fprintf - (fp, - " (public key seems to be static among sessions)\n"); + fprintf(fp, + " (public key seems to be static among sessions)\n"); } { @@ -600,10 +609,8 @@ test_code_t test_dhe_group(gnutls_session_t session) return TEST_FAILED; } - ret2 = - gnutls_dh_params_export2_pkcs3(dhp, - GNUTLS_X509_FMT_PEM, - &p3); + ret2 = gnutls_dh_params_export2_pkcs3( + dhp, GNUTLS_X509_FMT_PEM, &p3); if (ret2 < 0) { gnutls_dh_params_deinit(dhp); fclose(fp); @@ -623,9 +630,11 @@ test_code_t test_dhe_group(gnutls_session_t session) test_code_t test_ssl3(gnutls_session_t session) { int ret; - sprintf(prio_str, INIT_STR - SSL3_CIPHERS ":" ALL_COMP ":+VERS-SSL3.0:%%NO_EXTENSIONS:" - SSL3_MACS ":" SSL3_KX ":%s", rest); + sprintf(prio_str, + INIT_STR SSL3_CIPHERS ":" ALL_COMP + ":+VERS-SSL3.0:%%NO_EXTENSIONS:" SSL3_MACS + ":" SSL3_KX ":%s", + rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -640,9 +649,10 @@ test_code_t test_ssl3(gnutls_session_t session) test_code_t test_ssl3_with_extensions(gnutls_session_t session) { int ret; - sprintf(prio_str, INIT_STR - SSL3_CIPHERS ":" ALL_COMP ":+VERS-SSL3.0:" - SSL3_MACS ":" SSL3_KX ":%s", rest); + sprintf(prio_str, + INIT_STR SSL3_CIPHERS ":" ALL_COMP ":+VERS-SSL3.0:" SSL3_MACS + ":" SSL3_KX ":%s", + rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -665,9 +675,10 @@ test_code_t test_ssl3_with_extensions(gnutls_session_t session) test_code_t test_ssl3_unknown_ciphersuites(gnutls_session_t session) { int ret; - sprintf(prio_str, INIT_STR - ALL_CIPHERS ":" ALL_COMP ":+VERS-SSL3.0:" - ALL_MACS ":" ALL_KX ":%s", rest); + sprintf(prio_str, + INIT_STR ALL_CIPHERS ":" ALL_COMP ":+VERS-SSL3.0:" ALL_MACS + ":" ALL_KX ":%s", + rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -696,9 +707,10 @@ test_code_t test_bye(gnutls_session_t session) signal(SIGALRM, got_alarm); #endif - sprintf(prio_str, INIT_STR - ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS - ":" ALL_KX ":%s", protocol_str, rest); + sprintf(prio_str, + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS ":" ALL_KX + ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -723,8 +735,7 @@ test_code_t test_bye(gnutls_session_t session) do { ret = gnutls_record_recv(session, data, sizeof(data)); - } - while (ret > 0); + } while (ret > 0); #ifndef _WIN32 sigaction(SIGALRM, &old_sa, NULL); @@ -746,9 +757,10 @@ test_code_t test_aes(gnutls_session_t session) { int ret; - sprintf(prio_str, INIT_STR - "+AES-128-CBC:+AES-256-CBC:" ALL_COMP ":%s:" ALL_MACS - ":" ALL_KX ":%s", protocol_str, rest); + sprintf(prio_str, + INIT_STR "+AES-128-CBC:+AES-256-CBC:" ALL_COMP ":%s:" ALL_MACS + ":" ALL_KX ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -761,9 +773,10 @@ test_code_t test_aes_gcm(gnutls_session_t session) { int ret; - sprintf(prio_str, INIT_STR - "+AES-128-GCM:+AES-256-GCM:" ALL_COMP - ":%s:" ALL_MACS ":" ALL_KX ":%s", protocol_all_str, rest); + sprintf(prio_str, + INIT_STR "+AES-128-GCM:+AES-256-GCM:" ALL_COMP ":%s:" ALL_MACS + ":" ALL_KX ":%s", + protocol_all_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -776,9 +789,10 @@ test_code_t test_aes_ccm(gnutls_session_t session) { int ret; - sprintf(prio_str, INIT_STR - "+AES-128-CCM:+AES-256-CCM:" ALL_COMP - ":%s:" ALL_MACS ":" ALL_KX ":%s", protocol_all_str, rest); + sprintf(prio_str, + INIT_STR "+AES-128-CCM:+AES-256-CCM:" ALL_COMP ":%s:" ALL_MACS + ":" ALL_KX ":%s", + protocol_all_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -791,9 +805,10 @@ test_code_t test_aes_ccm_8(gnutls_session_t session) { int ret; - sprintf(prio_str, INIT_STR - "+AES-128-CCM-8:+AES-256-CCM-8:" ALL_COMP - ":%s:" ALL_MACS ":" ALL_KX ":%s", protocol_all_str, rest); + sprintf(prio_str, + INIT_STR "+AES-128-CCM-8:+AES-256-CCM-8:" ALL_COMP + ":%s:" ALL_MACS ":" ALL_KX ":%s", + protocol_all_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -811,7 +826,8 @@ test_code_t test_camellia_cbc(gnutls_session_t session) sprintf(prio_str, INIT_STR "+CAMELLIA-128-CBC:+CAMELLIA-256-CBC:" ALL_COMP - ":%s:" ALL_MACS ":" ALL_KX ":%s", protocol_str, rest); + ":%s:" ALL_MACS ":" ALL_KX ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -829,7 +845,8 @@ test_code_t test_camellia_gcm(gnutls_session_t session) sprintf(prio_str, INIT_STR "+CAMELLIA-128-GCM:+CAMELLIA-256-GCM:" ALL_COMP - ":%s:" ALL_MACS ":" ALL_KX ":%s", protocol_str, rest); + ":%s:" ALL_MACS ":" ALL_KX ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -843,8 +860,9 @@ test_code_t test_unknown_ciphersuites(gnutls_session_t session) int ret; sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP - ":%s:" ALL_MACS ":" ALL_KX ":%s", protocol_str, rest); + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS ":" ALL_KX + ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -861,8 +879,8 @@ test_code_t test_md5(gnutls_session_t session) return TEST_IGNORE; sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP - ":%s:+MD5:" ALL_KX ":%s", protocol_str, rest); + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:+MD5:" ALL_KX ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -876,8 +894,8 @@ test_code_t test_sha(gnutls_session_t session) int ret; sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP - ":%s:+SHA1:" ALL_KX ":%s", protocol_str, rest); + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:+SHA1:" ALL_KX ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -890,8 +908,8 @@ test_code_t test_sha256(gnutls_session_t session) int ret; sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP - ":%s:+SHA256:" ALL_KX ":%s", protocol_all_str, rest); + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:+SHA256:" ALL_KX ":%s", + protocol_all_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -909,7 +927,7 @@ test_code_t test_gost_imit(gnutls_session_t session) sprintf(prio_str, INIT_STR ALL_CIPHERS ":" ALL_COMP - ":%s:+GOST28147-TC26Z-IMIT:" ALL_KX ":%s", + ":%s:+GOST28147-TC26Z-IMIT:" ALL_KX ":%s", protocol_all_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -924,8 +942,8 @@ test_code_t test_3des(gnutls_session_t session) int ret; sprintf(prio_str, - INIT_STR "+3DES-CBC:" ALL_COMP ":%s:" - ALL_MACS ":" ALL_KX ":%s", protocol_str, rest); + INIT_STR "+3DES-CBC:" ALL_COMP ":%s:" ALL_MACS ":" ALL_KX ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -941,8 +959,9 @@ test_code_t test_arcfour(gnutls_session_t session) return TEST_IGNORE; sprintf(prio_str, - INIT_STR "+ARCFOUR-128:" ALL_COMP ":%s:" - ALL_MACS ":" ALL_KX ":%s", protocol_str, rest); + INIT_STR "+ARCFOUR-128:" ALL_COMP ":%s:" ALL_MACS ":" ALL_KX + ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -958,8 +977,9 @@ test_code_t test_chacha20(gnutls_session_t session) return TEST_IGNORE; sprintf(prio_str, - INIT_STR "+CHACHA20-POLY1305:" ALL_COMP ":%s:" - ALL_MACS ":" ALL_KX ":%s", protocol_str, rest); + INIT_STR "+CHACHA20-POLY1305:" ALL_COMP ":%s:" ALL_MACS + ":" ALL_KX ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -976,8 +996,9 @@ test_code_t test_gost_cnt(gnutls_session_t session) return TEST_IGNORE; sprintf(prio_str, - INIT_STR "+GOST28147-TC26Z-CNT:" ALL_COMP ":%s:" - ALL_MACS ":" ALL_KX ":%s", protocol_str, rest); + INIT_STR "+GOST28147-TC26Z-CNT:" ALL_COMP ":%s:" ALL_MACS + ":" ALL_KX ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -991,9 +1012,10 @@ test_code_t test_tls1(gnutls_session_t session) int ret; sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP - ":+VERS-TLS1.0:%%SSL3_RECORD_VERSION:" ALL_MACS ":" ALL_KX - ":%s", rest); + INIT_STR ALL_CIPHERS + ":" ALL_COMP ":+VERS-TLS1.0:%%SSL3_RECORD_VERSION:" ALL_MACS + ":" ALL_KX ":%s", + rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -1003,7 +1025,6 @@ test_code_t test_tls1(gnutls_session_t session) tls1_ok = 1; return ret; - } test_code_t test_tls1_nossl3(gnutls_session_t session) @@ -1014,9 +1035,10 @@ test_code_t test_tls1_nossl3(gnutls_session_t session) return TEST_IGNORE; sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP - ":+VERS-TLS1.0:%%LATEST_RECORD_VERSION:" ALL_MACS ":" ALL_KX - ":%s", rest); + INIT_STR ALL_CIPHERS + ":" ALL_COMP ":+VERS-TLS1.0:%%LATEST_RECORD_VERSION:" ALL_MACS + ":" ALL_KX ":%s", + rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -1028,7 +1050,6 @@ test_code_t test_tls1_nossl3(gnutls_session_t session) } return ret; - } test_code_t test_record_padding(gnutls_session_t session) @@ -1036,9 +1057,11 @@ test_code_t test_record_padding(gnutls_session_t session) int ret; sprintf(prio_str, - INIT_STR BLOCK_CIPHERS ":" ALL_COMP + INIT_STR BLOCK_CIPHERS + ":" ALL_COMP ":+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0:-VERS-SSL3.0:" ALL_MACS - ":" ALL_KX ":%s", rest); + ":" ALL_KX ":%s", + rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -1047,9 +1070,11 @@ test_code_t test_record_padding(gnutls_session_t session) tls1_ok = 1; } else { sprintf(prio_str, - INIT_STR BLOCK_CIPHERS ":" ALL_COMP - ":+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0:-VERS-SSL3.0:" - ALL_MACS ":" ALL_KX ":%%COMPAT:%s", rest); + INIT_STR BLOCK_CIPHERS + ":" ALL_COMP + ":+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0:-VERS-SSL3.0:" ALL_MACS + ":" ALL_KX ":%%COMPAT:%s", + rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -1058,7 +1083,7 @@ test_code_t test_record_padding(gnutls_session_t session) tls1_ok = 1; strcat(rest, ":%COMPAT"); } else - ret = TEST_IGNORE2; /* neither succeeded */ + ret = TEST_IGNORE2; /* neither succeeded */ } return ret; @@ -1075,8 +1100,9 @@ test_code_t test_no_extensions(gnutls_session_t session) #endif sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" - ALL_MACS ":" ALL_KX ":%s", protocol_str, rest); + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS ":" ALL_KX + ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); gnutls_record_set_max_size(session, 4096); @@ -1086,9 +1112,11 @@ test_code_t test_no_extensions(gnutls_session_t session) tls_ext_ok = 1; } else { sprintf(prio_str, - INIT_STR BLOCK_CIPHERS ":" ALL_COMP - ":+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0:-VERS-SSL3.0:" - ALL_MACS ":" ALL_KX ":%%NO_EXTENSIONS:%s", rest); + INIT_STR BLOCK_CIPHERS + ":" ALL_COMP + ":+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0:-VERS-SSL3.0:" ALL_MACS + ":" ALL_KX ":%%NO_EXTENSIONS:%s", + rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -1097,7 +1125,7 @@ test_code_t test_no_extensions(gnutls_session_t session) tls_ext_ok = 0; strcat(rest, ":%NO_EXTENSIONS"); } else - ret = TEST_IGNORE2; /* neither succeeded */ + ret = TEST_IGNORE2; /* neither succeeded */ } return ret; @@ -1105,8 +1133,8 @@ test_code_t test_no_extensions(gnutls_session_t session) test_code_t test_known_protocols(gnutls_session_t session) { - if (tls1_2_ok == 0 && tls1_1_ok == 0 && tls1_ok == 0 && - ssl3_ok == 0 && tls1_3_ok == 0) + if (tls1_2_ok == 0 && tls1_1_ok == 0 && tls1_ok == 0 && ssl3_ok == 0 && + tls1_3_ok == 0) return TEST_FAILED; return TEST_SUCCEED; @@ -1117,8 +1145,9 @@ test_code_t test_tls1_2(gnutls_session_t session) int ret; sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP - ":+VERS-TLS1.2:" ALL_MACS ":" ALL_KX ":%s", rest); + INIT_STR ALL_CIPHERS ":" ALL_COMP ":+VERS-TLS1.2:" ALL_MACS + ":" ALL_KX ":%s", + rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -1128,7 +1157,6 @@ test_code_t test_tls1_2(gnutls_session_t session) tls1_2_ok = 1; return ret; - } test_code_t test_tls1_3(gnutls_session_t session) @@ -1136,8 +1164,9 @@ test_code_t test_tls1_3(gnutls_session_t session) int ret; sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP - ":+VERS-TLS1.3:" ALL_MACS ":" ALL_KX ":%s", rest); + INIT_STR ALL_CIPHERS ":" ALL_COMP ":+VERS-TLS1.3:" ALL_MACS + ":" ALL_KX ":%s", + rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -1147,7 +1176,6 @@ test_code_t test_tls1_3(gnutls_session_t session) tls1_3_ok = 1; return ret; - } test_code_t test_tls1_1(gnutls_session_t session) @@ -1155,8 +1183,9 @@ test_code_t test_tls1_1(gnutls_session_t session) int ret; sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP - ":+VERS-TLS1.1:" ALL_MACS ":" ALL_KX ":%s", rest); + INIT_STR ALL_CIPHERS ":" ALL_COMP ":+VERS-TLS1.1:" ALL_MACS + ":" ALL_KX ":%s", + rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -1166,7 +1195,6 @@ test_code_t test_tls1_1(gnutls_session_t session) tls1_1_ok = 1; return ret; - } test_code_t test_tls1_1_fallback(gnutls_session_t session) @@ -1176,9 +1204,10 @@ test_code_t test_tls1_1_fallback(gnutls_session_t session) return TEST_IGNORE; sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP - ":+VERS-TLS1.1:+VERS-TLS1.0:+VERS-SSL3.0:" ALL_MACS ":" - ALL_KX ":%s", rest); + INIT_STR ALL_CIPHERS + ":" ALL_COMP ":+VERS-TLS1.1:+VERS-TLS1.0:+VERS-SSL3.0:" ALL_MACS + ":" ALL_KX ":%s", + rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -1193,7 +1222,6 @@ test_code_t test_tls1_1_fallback(gnutls_session_t session) return TEST_UNSURE; return TEST_FAILED; - } test_code_t test_tls1_6_fallback(gnutls_session_t session) @@ -1203,9 +1231,11 @@ test_code_t test_tls1_6_fallback(gnutls_session_t session) /* we remove RSA as there is a version check in the key exchange * message we do not properly set in this test */ sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP + INIT_STR ALL_CIPHERS + ":" ALL_COMP ":+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0:+VERS-SSL3.0:" ALL_MACS - ":" ALL_KX ":-RSA:%s", rest); + ":" ALL_KX ":-RSA:%s", + rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -1216,7 +1246,7 @@ test_code_t test_tls1_6_fallback(gnutls_session_t session) return TEST_FAILED; ext_text = - gnutls_protocol_get_name(gnutls_protocol_get_version(session)); + gnutls_protocol_get_name(gnutls_protocol_get_version(session)); return TEST_SUCCEED; } @@ -1230,8 +1260,9 @@ test_code_t test_tls_disable0(gnutls_session_t session) return TEST_IGNORE; sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" - ALL_MACS ":" ALL_KX ":%s", protocol_str, rest); + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS ":" ALL_KX + ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -1244,7 +1275,6 @@ test_code_t test_tls_disable0(gnutls_session_t session) } } return ret; - } test_code_t test_tls_disable1(gnutls_session_t session) @@ -1255,8 +1285,9 @@ test_code_t test_tls_disable1(gnutls_session_t session) return TEST_IGNORE; sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" - ALL_MACS ":" ALL_KX ":%s", protocol_str, rest); + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS ":" ALL_KX + ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -1278,8 +1309,9 @@ test_code_t test_tls_disable2(gnutls_session_t session) return TEST_IGNORE; sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" - ALL_MACS ":" ALL_KX ":%s", protocol_str, rest); + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS ":" ALL_KX + ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -1303,8 +1335,8 @@ test_code_t test_rsa_pms(gnutls_session_t session) * SSL 3.0 then the handshake will fail. */ sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" - ALL_MACS ":+RSA:%s", protocol_str, rest); + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS ":+RSA:%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -1325,8 +1357,9 @@ test_code_t test_max_record_size(gnutls_session_t session) return TEST_IGNORE; sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" - ALL_MACS ":" ALL_KX ":%s", protocol_str, rest); + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS ":" ALL_KX + ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); gnutls_record_set_max_size(session, 512); @@ -1348,8 +1381,9 @@ test_code_t test_heartbeat_extension(gnutls_session_t session) return TEST_IGNORE; sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" - ALL_MACS ":" ALL_KX ":%s", protocol_str, rest); + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS ":" ALL_KX + ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); gnutls_record_set_max_size(session, 4096); @@ -1357,8 +1391,8 @@ test_code_t test_heartbeat_extension(gnutls_session_t session) gnutls_heartbeat_enable(session, GNUTLS_HB_PEER_ALLOWED_TO_SEND); test_do_handshake(session); - switch (gnutls_heartbeat_allowed - (session, GNUTLS_HB_LOCAL_ALLOWED_TO_SEND)) { + switch (gnutls_heartbeat_allowed(session, + GNUTLS_HB_LOCAL_ALLOWED_TO_SEND)) { case 0: return TEST_FAILED; default: @@ -1371,8 +1405,9 @@ test_code_t test_small_records(gnutls_session_t session) int ret; sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" - ALL_MACS ":" ALL_KX ":%s", protocol_str, rest); + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS ":" ALL_KX + ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); gnutls_record_set_max_size(session, 512); @@ -1395,8 +1430,9 @@ test_code_t test_version_rollback(gnutls_session_t session) * connection will fail. */ sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" - ALL_MACS ":" ALL_KX ":%s", protocol_str, rest); + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS ":" ALL_KX + ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); _gnutls_record_set_default_version(session, 3, 0); @@ -1422,8 +1458,9 @@ test_code_t test_version_oob(gnutls_session_t session) * and we connect using a 5.5 record version. */ sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" - ALL_MACS ":" ALL_KX ":%s", protocol_str, rest); + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS ":" ALL_KX + ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); _gnutls_record_set_default_version(session, 5, 5); @@ -1432,8 +1469,8 @@ test_code_t test_version_oob(gnutls_session_t session) return ret; } -void _gnutls_rsa_pms_set_version(gnutls_session_t session, - unsigned char major, unsigned char minor); +void _gnutls_rsa_pms_set_version(gnutls_session_t session, unsigned char major, + unsigned char minor); test_code_t test_rsa_pms_version_check(gnutls_session_t session) { @@ -1444,15 +1481,15 @@ test_code_t test_rsa_pms_version_check(gnutls_session_t session) * A normal server would abort this handshake. */ sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" - ALL_MACS ":" ALL_KX ":%s", protocol_str, rest); + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS ":" ALL_KX + ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); - _gnutls_rsa_pms_set_version(session, 5, 5); /* use SSL 5.5 version */ + _gnutls_rsa_pms_set_version(session, 5, 5); /* use SSL 5.5 version */ ret = test_do_handshake(session); return ret; - } #ifdef ENABLE_ANON @@ -1461,8 +1498,8 @@ test_code_t test_anonymous(gnutls_session_t session) int ret; sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" - ALL_MACS ":+ANON-DH:+ANON-ECDH:+CURVE-ALL:%s", + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS + ":+ANON-DH:+ANON-ECDH:+CURVE-ALL:%s", protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_ANON, anon_cred); @@ -1486,8 +1523,9 @@ test_code_t test_session_resume2(gnutls_session_t session) return TEST_IGNORE; sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" - ALL_MACS ":" ALL_KX ":%s", protocol_str, rest); + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS ":" ALL_KX + ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -1531,8 +1569,9 @@ test_code_t test_certificate(gnutls_session_t session) return TEST_IGNORE; sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" - ALL_MACS ":" ALL_KX ":%s", protocol_str, rest); + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS ":" ALL_KX + ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -1564,8 +1603,9 @@ test_code_t test_chain_order(gnutls_session_t session) char *p, *pos; sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" - ALL_MACS ":" ALL_KX ":%s", protocol_str, rest); + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS ":" ALL_KX + ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -1592,9 +1632,8 @@ test_code_t test_chain_order(gnutls_session_t session) for (i = 0; i < cert_list_size; i++) { char *new_p; t.data = NULL; - ret = - gnutls_pem_base64_encode_alloc("CERTIFICATE", &cert_list[i], - &t); + ret = gnutls_pem_base64_encode_alloc("CERTIFICATE", + &cert_list[i], &t); if (ret < 0) { free(p); return TEST_FAILED; @@ -1622,10 +1661,9 @@ test_code_t test_chain_order(gnutls_session_t session) t.data = (void *)p; p_size = 0; - ret = - gnutls_x509_crt_list_import2(&certs, &p_size, &t, - GNUTLS_X509_FMT_PEM, - GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED); + ret = gnutls_x509_crt_list_import2( + &certs, &p_size, &t, GNUTLS_X509_FMT_PEM, + GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED); if (ret < 0) { return TEST_FAILED; } @@ -1641,11 +1679,10 @@ test_code_t test_chain_order(gnutls_session_t session) /* A callback function to be used at the certificate selection time. */ -static int -cert_callback(gnutls_session_t session, - const gnutls_datum_t * req_ca_rdn, int nreqs, - const gnutls_pk_algorithm_t * sign_algos, - int sign_algos_length, gnutls_retr2_st * st) +static int cert_callback(gnutls_session_t session, + const gnutls_datum_t *req_ca_rdn, int nreqs, + const gnutls_pk_algorithm_t *sign_algos, + int sign_algos_length, gnutls_retr2_st *st) { char issuer_dn[256]; int i, ret; @@ -1665,9 +1702,8 @@ cert_callback(gnutls_session_t session, if (nreqs > 0) fprintf(fp, "- Server's trusted authorities:\n"); else - fprintf - (fp, - "- Server did not send us any trusted authorities names.\n"); + fprintf(fp, + "- Server did not send us any trusted authorities names.\n"); /* print the names (if any) */ for (i = 0; i < nreqs; i++) { @@ -1681,7 +1717,6 @@ cert_callback(gnutls_session_t session, fclose(fp); return -1; - } /* Prints the trusted server's CAs. This is only @@ -1696,8 +1731,9 @@ test_code_t test_server_cas(gnutls_session_t session) return TEST_IGNORE; sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" - ALL_MACS ":" ALL_KX ":%s", protocol_str, rest); + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS ":" ALL_KX + ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -1743,8 +1779,9 @@ test_code_t test_send_record(gnutls_session_t session) int ret; sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" - ALL_MACS ":" ALL_KX ":%s", protocol_str, rest); + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS ":" ALL_KX + ":%s", + protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); @@ -1763,8 +1800,8 @@ test_code_t test_send_record_with_allow_small_records(gnutls_session_t session) return TEST_FAILED; sprintf(prio_str, - INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" - ALL_MACS ":" ALL_KX ":%%ALLOW_SMALL_RECORDS:%s", + INIT_STR ALL_CIPHERS ":" ALL_COMP ":%s:" ALL_MACS ":" ALL_KX + ":%%ALLOW_SMALL_RECORDS:%s", protocol_str, rest); _gnutls_priority_set_direct(session, prio_str); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred); diff --git a/src/tests.h b/src/tests.h index f5fd646311..8124ebdd5c 100644 --- a/src/tests.h +++ b/src/tests.h @@ -19,10 +19,14 @@ */ #ifndef GNUTLS_SRC_TESTS_H -# define GNUTLS_SRC_TESTS_H +#define GNUTLS_SRC_TESTS_H typedef enum { - TEST_SUCCEED, TEST_FAILED, TEST_UNSURE, TEST_IGNORE /*keep socket */ , TEST_IGNORE2 /*destroy socket */ + TEST_SUCCEED, + TEST_FAILED, + TEST_UNSURE, + TEST_IGNORE /*keep socket */, + TEST_IGNORE2 /*destroy socket */ } test_code_t; test_code_t test_chain_order(gnutls_session_t session); @@ -75,8 +79,8 @@ test_code_t test_rsa_pms_version_check(gnutls_session_t session); test_code_t test_version_oob(gnutls_session_t session); test_code_t test_send_record(gnutls_session_t session); test_code_t test_send_record_with_allow_small_records(gnutls_session_t session); -int _test_srp_username_callback(gnutls_session_t session, - char **username, char **password); +int _test_srp_username_callback(gnutls_session_t session, char **username, + char **password); test_code_t test_rsa(gnutls_session_t session); test_code_t test_ecdhe_x25519(gnutls_session_t session); @@ -89,10 +93,10 @@ test_code_t test_aes_ccm(gnutls_session_t session); test_code_t test_aes_ccm_8(gnutls_session_t session); test_code_t test_sha256(gnutls_session_t session); -# ifdef ENABLE_GOST +#ifdef ENABLE_GOST test_code_t test_vko_gost_12(gnutls_session_t session); test_code_t test_gost_cnt(gnutls_session_t session); test_code_t test_gost_imit(gnutls_session_t session); -# endif +#endif -#endif /* GNUTLS_SRC_TESTS_H */ +#endif /* GNUTLS_SRC_TESTS_H */ diff --git a/src/tpmtool.c b/src/tpmtool.c index 33c2e0cf1f..db8a201b3c 100644 --- a/src/tpmtool.c +++ b/src/tpmtool.c @@ -48,15 +48,15 @@ #include "common.h" static void cmd_parser(int argc, char **argv); -static void tpm_generate(FILE * outfile, unsigned int key_type, +static void tpm_generate(FILE *outfile, unsigned int key_type, unsigned int bits, unsigned int flags, unsigned int srk_well_known); -static void tpm_pubkey(const char *url, FILE * outfile, +static void tpm_pubkey(const char *url, FILE *outfile, unsigned int srk_well_known); -static void tpm_delete(const char *url, FILE * outfile, +static void tpm_delete(const char *url, FILE *outfile, unsigned int srk_well_known); -static void tpm_test_sign(const char *url, FILE * outfile); -static void tpm_list(FILE * outfile); +static void tpm_test_sign(const char *url, FILE *outfile); +static void tpm_list(FILE *outfile); static gnutls_x509_crt_fmt_t incert_format, outcert_format; static gnutls_tpmkey_fmt_t inkey_format, outkey_format; @@ -186,7 +186,7 @@ static void cmd_parser(int argc, char **argv) #define TEST_DATA "Test data to sign" -static void tpm_test_sign(const char *url, FILE * out) +static void tpm_test_sign(const char *url, FILE *out) { gnutls_privkey_t privkey; gnutls_pubkey_t pubkey; @@ -201,15 +201,15 @@ static void tpm_test_sign(const char *url, FILE * out) ret = gnutls_privkey_init(&privkey); if (ret < 0) { - fprintf(stderr, "Error in %s:%d: %s\n", __func__, - __LINE__, gnutls_strerror(ret)); + fprintf(stderr, "Error in %s:%d: %s\n", __func__, __LINE__, + gnutls_strerror(ret)); exit(1); } ret = gnutls_pubkey_init(&pubkey); if (ret < 0) { - fprintf(stderr, "Error in %s:%d: %s\n", __func__, - __LINE__, gnutls_strerror(ret)); + fprintf(stderr, "Error in %s:%d: %s\n", __func__, __LINE__, + gnutls_strerror(ret)); exit(1); } @@ -227,8 +227,8 @@ static void tpm_test_sign(const char *url, FILE * out) exit(1); } - ret = - gnutls_privkey_sign_data(privkey, GNUTLS_DIG_SHA1, 0, &data, &sig); + ret = gnutls_privkey_sign_data(privkey, GNUTLS_DIG_SHA1, 0, &data, + &sig); if (ret < 0) { fprintf(stderr, "Cannot sign data: %s\n", gnutls_strerror(ret)); exit(1); @@ -237,10 +237,8 @@ static void tpm_test_sign(const char *url, FILE * out) pk = gnutls_pubkey_get_pk_algorithm(pubkey, NULL); fprintf(stderr, "Verifying against private key parameters... "); - ret = - gnutls_pubkey_verify_data2(pubkey, - gnutls_pk_to_sign(pk, GNUTLS_DIG_SHA1), - 0, &data, &sig); + ret = gnutls_pubkey_verify_data2( + pubkey, gnutls_pk_to_sign(pk, GNUTLS_DIG_SHA1), 0, &data, &sig); if (ret < 0) { fprintf(stderr, "Cannot verify signed data: %s\n", gnutls_strerror(ret)); @@ -254,9 +252,8 @@ static void tpm_test_sign(const char *url, FILE * out) gnutls_privkey_deinit(privkey); } -static void tpm_generate(FILE * out, unsigned int key_type, - unsigned int bits, unsigned int flags, - unsigned int srk_well_known) +static void tpm_generate(FILE *out, unsigned int key_type, unsigned int bits, + unsigned int flags, unsigned int srk_well_known) { int ret; char *srk_pass = NULL, *key_pass = NULL; @@ -274,10 +271,9 @@ static void tpm_generate(FILE * out, unsigned int key_type, key_pass = strdup(pass); } - ret = - gnutls_tpm_privkey_generate(key_type, bits, srk_pass, key_pass, - outkey_format, outcert_format, - &privkey, &pubkey, flags); + ret = gnutls_tpm_privkey_generate(key_type, bits, srk_pass, key_pass, + outkey_format, outcert_format, + &privkey, &pubkey, flags); free(key_pass); free(srk_pass); @@ -295,7 +291,7 @@ static void tpm_generate(FILE * out, unsigned int key_type, gnutls_free(pubkey.data); } -static void tpm_delete(const char *url, FILE * out, unsigned int srk_well_known) +static void tpm_delete(const char *url, FILE *out, unsigned int srk_well_known) { int ret; char *srk_pass = NULL; @@ -313,7 +309,7 @@ static void tpm_delete(const char *url, FILE * out, unsigned int srk_well_known) fprintf(out, "Key %s deleted\n", url); } -static void tpm_list(FILE * out) +static void tpm_list(FILE *out) { int ret; gnutls_tpm_key_list_t list; @@ -347,7 +343,7 @@ static void tpm_list(FILE * out) fputs("\n", out); } -static void tpm_pubkey(const char *url, FILE * out, unsigned int srk_well_known) +static void tpm_pubkey(const char *url, FILE *out, unsigned int srk_well_known) { int ret; char *srk_pass = NULL; diff --git a/src/udp-serv.c b/src/udp-serv.c index 7ffbf8aad1..4777b05601 100644 --- a/src/udp-serv.c +++ b/src/udp-serv.c @@ -21,13 +21,13 @@ #include #if HAVE_SYS_SOCKET_H -# include +#include #elif HAVE_WS2TCPIP_H -# include +#include #endif #include #ifndef _WIN32 -# include +#include #endif #include #include @@ -52,7 +52,7 @@ static ssize_t push_func(gnutls_transport_ptr_t p, const void *data, size_t size); static ssize_t pull_func(gnutls_transport_ptr_t p, void *data, size_t size); -#define MAX_BUFFER 255 /* Longest string to echo */ +#define MAX_BUFFER 255 /* Longest string to echo */ /* record layer indication for a handshake packet */ #define HANDSHAKE_CONTENT_TYPE 22 @@ -94,24 +94,20 @@ void udp_server(const char *name, int port, int mtu) continue; cli_addr_size = sizeof(cli_addr); - ret = - recvfrom(sock, buffer, sizeof(buffer) - 1, MSG_PEEK, - (struct sockaddr *)&cli_addr, &cli_addr_size); + ret = recvfrom(sock, buffer, sizeof(buffer) - 1, MSG_PEEK, + (struct sockaddr *)&cli_addr, &cli_addr_size); /* only accept a valid client hello */ if (ret > HANDSHAKE_TYPE_POS && buffer[RECORD_CONTENT_POS] == HANDSHAKE_CONTENT_TYPE && buffer[HANDSHAKE_TYPE_POS] == - GNUTLS_HANDSHAKE_CLIENT_HELLO) { + GNUTLS_HANDSHAKE_CLIENT_HELLO) { if (!HAVE_OPT(NOCOOKIE)) { memset(&prestate, 0, sizeof(prestate)); - ret = - gnutls_dtls_cookie_verify(&cookie_key, - &cli_addr, - cli_addr_size, - buffer, ret, - &prestate); - if (ret < 0) { /* cookie not valid */ + ret = gnutls_dtls_cookie_verify( + &cookie_key, &cli_addr, cli_addr_size, + buffer, ret, &prestate); + if (ret < 0) { /* cookie not valid */ priv_data_st s; memset(&s, 0, sizeof(s)); @@ -119,18 +115,16 @@ void udp_server(const char *name, int port, int mtu) s.cli_addr = (void *)&cli_addr; s.cli_addr_size = cli_addr_size; - printf - ("Sending hello verify request to %s\n", - human_addr((struct sockaddr *) - &cli_addr, - cli_addr_size, buffer, - sizeof(buffer) - 1)); - gnutls_dtls_cookie_send(&cookie_key, - &cli_addr, - cli_addr_size, - &prestate, - (gnutls_transport_ptr_t) - & s, push_func); + printf("Sending hello verify request to %s\n", + human_addr((struct sockaddr + *)&cli_addr, + cli_addr_size, buffer, + sizeof(buffer) - 1)); + gnutls_dtls_cookie_send( + &cookie_key, &cli_addr, + cli_addr_size, &prestate, + (gnutls_transport_ptr_t)&s, + push_func); /* discard peeked data */ recvfrom(sock, buffer, @@ -141,9 +135,9 @@ void udp_server(const char *name, int port, int mtu) } } printf("Accepted connection from %s\n", - human_addr((struct sockaddr *) - &cli_addr, sizeof(cli_addr), - buffer, sizeof(buffer) - 1)); + human_addr((struct sockaddr *)&cli_addr, + sizeof(cli_addr), buffer, + sizeof(buffer) - 1)); } else continue; @@ -167,8 +161,7 @@ void udp_server(const char *name, int port, int mtu) do { ret = gnutls_handshake(session); - } - while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); + } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) { fprintf(stderr, "Error in handshake(): %s\n", @@ -179,24 +172,21 @@ void udp_server(const char *name, int port, int mtu) for (;;) { do { - ret = - gnutls_record_recv_seq(session, buffer, - sizeof(buffer) - 1, - sequence); + ret = gnutls_record_recv_seq(session, buffer, + sizeof(buffer) - 1, + sequence); if (ret == GNUTLS_E_HEARTBEAT_PING_RECEIVED) gnutls_heartbeat_pong(session, 0); - } - while (ret == GNUTLS_E_INTERRUPTED - || ret == GNUTLS_E_AGAIN - || ret == GNUTLS_E_HEARTBEAT_PING_RECEIVED); + } while (ret == GNUTLS_E_INTERRUPTED || + ret == GNUTLS_E_AGAIN || + ret == GNUTLS_E_HEARTBEAT_PING_RECEIVED); if (ret == GNUTLS_E_REHANDSHAKE) { fprintf(stderr, "*** Received hello message\n"); do { ret = gnutls_handshake(session); - } - while (ret == GNUTLS_E_INTERRUPTED || - ret == GNUTLS_E_AGAIN); + } while (ret == GNUTLS_E_INTERRUPTED || + ret == GNUTLS_E_AGAIN); if (ret == 0) continue; @@ -212,19 +202,17 @@ void udp_server(const char *name, int port, int mtu) } buffer[ret] = 0; - printf - ("received[%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x]: %s\n", - sequence[0], sequence[1], sequence[2], - sequence[3], sequence[4], sequence[5], - sequence[6], sequence[7], buffer); - - if (check_command(session, buffer, disable_client_cert) - == 0) { + printf("received[%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x]: %s\n", + sequence[0], sequence[1], sequence[2], + sequence[3], sequence[4], sequence[5], + sequence[6], sequence[7], buffer); + + if (check_command(session, buffer, + disable_client_cert) == 0) { /* reply back */ ret = gnutls_record_send(session, buffer, ret); if (ret < 0) { - fprintf(stderr, - "Error in send(): %s\n", + fprintf(stderr, "Error in send(): %s\n", gnutls_strerror(ret)); break; } @@ -261,12 +249,11 @@ static int pull_timeout_func(gnutls_transport_ptr_t ptr, unsigned int ms) * from */ cli_addr_size = sizeof(cli_addr); - ret = - recvfrom(priv->fd, &c, 1, MSG_PEEK, - (struct sockaddr *)&cli_addr, &cli_addr_size); + ret = recvfrom(priv->fd, &c, 1, MSG_PEEK, (struct sockaddr *)&cli_addr, + &cli_addr_size); if (ret > 0) { - if (cli_addr_size == priv->cli_addr_size - && memcmp(&cli_addr, priv->cli_addr, sizeof(cli_addr)) == 0) + if (cli_addr_size == priv->cli_addr_size && + memcmp(&cli_addr, priv->cli_addr, sizeof(cli_addr)) == 0) return 1; } @@ -291,21 +278,18 @@ static ssize_t pull_func(gnutls_transport_ptr_t p, void *data, size_t size) int ret; cli_addr_size = sizeof(cli_addr); - ret = - recvfrom(priv->fd, data, size, 0, - (struct sockaddr *)&cli_addr, &cli_addr_size); + ret = recvfrom(priv->fd, data, size, 0, (struct sockaddr *)&cli_addr, + &cli_addr_size); if (ret == -1) return ret; - if (cli_addr_size == priv->cli_addr_size - && memcmp(&cli_addr, priv->cli_addr, sizeof(cli_addr)) == 0) + if (cli_addr_size == priv->cli_addr_size && + memcmp(&cli_addr, priv->cli_addr, sizeof(cli_addr)) == 0) return ret; - printf("Denied connection from %s\n", human_addr((struct sockaddr *) - &cli_addr, - sizeof(cli_addr), - buffer, - sizeof(buffer))); + printf("Denied connection from %s\n", + human_addr((struct sockaddr *)&cli_addr, sizeof(cli_addr), + buffer, sizeof(buffer))); gnutls_transport_set_errno(priv->session, EAGAIN); return -1; diff --git a/src/udp-serv.h b/src/udp-serv.h index b32f9dd664..0b06e9740b 100644 --- a/src/udp-serv.h +++ b/src/udp-serv.h @@ -18,15 +18,15 @@ */ #ifndef GNUTLS_SRC_UDP_SERV_H -# define GNUTLS_SRC_UDP_SERV_H +#define GNUTLS_SRC_UDP_SERV_H -# include +#include void udp_server(const char *name, int port, int mtu); gnutls_session_t initialize_session(int dtls); -const char *human_addr(const struct sockaddr *sa, socklen_t salen, - char *buf, size_t buflen); +const char *human_addr(const struct sockaddr *sa, socklen_t salen, char *buf, + size_t buflen); int wait_for_connection(void); int listen_socket(const char *name, int listen_port, int socktype); -#endif /* GNUTLS_SRC_UDP_SERV_H */ +#endif /* GNUTLS_SRC_UDP_SERV_H */ diff --git a/tests/aead-cipher-vec.c b/tests/aead-cipher-vec.c index ff9085f2cd..6f13f39758 100644 --- a/tests/aead-cipher-vec.c +++ b/tests/aead-cipher-vec.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -83,18 +83,16 @@ static void start(const char *name, int algo) fail("gnutls_cipher_init: %s\n", gnutls_strerror(ret)); for (i = 0; i < 2; i++) { - ret = gnutls_aead_cipher_encryptv2(ch, - iv.data, iv.size, - auth_iov, 2, - iov, i + 1, tag, &tag_size); + ret = gnutls_aead_cipher_encryptv2(ch, iv.data, iv.size, + auth_iov, 2, iov, i + 1, tag, + &tag_size); if (ret < 0) fail("could not encrypt data: %s\n", gnutls_strerror(ret)); - ret = gnutls_aead_cipher_decryptv2(ch, - iv.data, iv.size, - auth_iov, 2, - iov, i + 1, tag, tag_size); + ret = gnutls_aead_cipher_decryptv2(ch, iv.data, iv.size, + auth_iov, 2, iov, i + 1, tag, + tag_size); if (ret < 0) fail("could not decrypt data: %s\n", gnutls_strerror(ret)); @@ -113,7 +111,7 @@ void doit(void) ret = global_init(); if (ret < 0) { - fail("Cannot initialize library\n"); /*errcode 1 */ + fail("Cannot initialize library\n"); /*errcode 1 */ } start("aes-128-gcm", GNUTLS_CIPHER_AES_128_GCM); diff --git a/tests/alerts.c b/tests/alerts.c index 53ed541e39..13c18ff5dd 100644 --- a/tests/alerts.c +++ b/tests/alerts.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -36,19 +36,19 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include "cert-common.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "cert-common.h" -# include "utils.h" +#include "utils.h" static void terminate(void); @@ -105,8 +105,7 @@ static void client(int fd, const char *prio, int ign) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client (%s): Handshake has failed (%s)\n\n", prio, @@ -119,20 +118,19 @@ static void client(int fd, const char *prio, int ign) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); - ret = - gnutls_alert_send(session, GNUTLS_AL_WARNING, - GNUTLS_A_USER_CANCELED); + ret = gnutls_alert_send(session, GNUTLS_AL_WARNING, + GNUTLS_A_USER_CANCELED); if (ret < 0) { fail("server: Error sending user cancelled alert: %s\n", gnutls_strerror(ret)); exit(1); } - ret = - gnutls_alert_send(session, GNUTLS_AL_FATAL, GNUTLS_A_DECRYPT_ERROR); + ret = gnutls_alert_send(session, GNUTLS_AL_FATAL, + GNUTLS_A_DECRYPT_ERROR); if (ret < 0) { fail("server: Error sending decrypt error alert: %s\n", gnutls_strerror(ret)); @@ -197,8 +195,7 @@ static void server(int fd, const char *prio, int ign) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -211,13 +208,13 @@ static void server(int fd, const char *prio, int ign) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { do { - ret = - gnutls_record_recv(session, buffer, sizeof(buffer)); + ret = gnutls_record_recv(session, buffer, + sizeof(buffer)); } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret > 0) fail("error receiving alert: ret: %d\n", ret); @@ -230,8 +227,8 @@ static void server(int fd, const char *prio, int ign) do { do { - ret = - gnutls_record_recv(session, buffer, sizeof(buffer)); + ret = gnutls_record_recv(session, buffer, + sizeof(buffer)); } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret > 0) fail("error receiving alert: ret: %d\n", ret); @@ -282,7 +279,8 @@ static void start(const char *prio, int ign) } } -# define AES_GCM "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-GCM:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" +#define AES_GCM \ + "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-GCM:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" static void ch_handler(int sig) { @@ -299,4 +297,4 @@ void doit(void) start(AES_GCM, 0); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/alpn-server-prec.c b/tests/alpn-server-prec.c index b795e583a5..1069530308 100644 --- a/tests/alpn-server-prec.c +++ b/tests/alpn-server-prec.c @@ -22,7 +22,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -37,18 +37,18 @@ int main(int argc, char **argv) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" static void terminate(void); @@ -88,9 +88,10 @@ static void client(int fd, const char *protocol0, const char *protocol1, gnutls_init(&session, GNUTLS_CLIENT); /* Use default priorities */ - gnutls_priority_set_direct(session, - "NONE:+VERS-TLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-TLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", + NULL); if (protocol1) { gnutls_datum_t t[3]; t[0].data = (void *)protocol0; @@ -117,8 +118,7 @@ static void client(int fd, const char *protocol0, const char *protocol1, */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -131,8 +131,8 @@ static void client(int fd, const char *protocol0, const char *protocol1, if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); ret = gnutls_alpn_get_selected_protocol(session, &proto); if (ret < 0) { @@ -141,8 +141,8 @@ static void client(int fd, const char *protocol0, const char *protocol1, } if (debug) { - fprintf(stderr, "selected protocol: %.*s\n", - (int)proto.size, proto.data); + fprintf(stderr, "selected protocol: %.*s\n", (int)proto.size, + proto.data); } gnutls_bye(session, GNUTLS_SHUT_WR); @@ -190,18 +190,18 @@ static void server(int fd, const char *protocol1, const char *protocol2, /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NONE:+VERS-TLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-TLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", + NULL); t[0].data = (void *)protocol1; t[0].size = strlen(protocol1); t[1].data = (void *)protocol2; t[1].size = strlen(protocol2); - ret = - gnutls_alpn_set_protocols(session, t, 2, - GNUTLS_ALPN_SERVER_PRECEDENCE); + ret = gnutls_alpn_set_protocols(session, t, 2, + GNUTLS_ALPN_SERVER_PRECEDENCE); if (ret < 0) { gnutls_perror(ret); exit(1); @@ -213,8 +213,7 @@ static void server(int fd, const char *protocol1, const char *protocol2, do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -227,8 +226,8 @@ static void server(int fd, const char *protocol1, const char *protocol2, if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); ret = gnutls_alpn_get_selected_protocol(session, &selected); if (ret < 0) { @@ -240,9 +239,10 @@ static void server(int fd, const char *protocol1, const char *protocol2, success("Protocol: %.*s\n", (int)selected.size, selected.data); } - if (selected.size != strlen(expected) - || memcmp(selected.data, expected, selected.size) != 0) { - fail("did not select the expected protocol (selected %.*s, expected %s)\n", selected.size, selected.data, expected); + if (selected.size != strlen(expected) || + memcmp(selected.data, expected, selected.size) != 0) { + fail("did not select the expected protocol (selected %.*s, expected %s)\n", + selected.size, selected.data, expected); exit(1); } @@ -311,4 +311,4 @@ void doit(void) start("h2", "http/1.1", "http/1.1", "h3", "http/1.1"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/anonself.c b/tests/anonself.c index f33f563ea2..5a6bdce7ed 100644 --- a/tests/anonself.c +++ b/tests/anonself.c @@ -22,7 +22,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -40,26 +40,26 @@ int main(int argc, char **argv) #else -# include -# include -# include -# include -# if !defined(_WIN32) -# include -# endif -# include -# include -# include +#include +#include +#include +#include +#if !defined(_WIN32) +#include +#endif +#include +#include +#include -# include "utils.h" +#include "utils.h" static void tls_log_func(int level, const char *str) { fprintf(stderr, "|<%d>| %s", level, str); } -# define MSG "Hello TLS" -# define MAX_BUF 1024 +#define MSG "Hello TLS" +#define MAX_BUF 1024 static void client(int sd, const char *prio) { @@ -108,8 +108,8 @@ static void client(int sd, const char *prio) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); ret = gnutls_record_send(session, MSG, sizeof(MSG) - 1); if (ret != sizeof(MSG) - 1) { @@ -128,7 +128,8 @@ static void client(int sd, const char *prio) } if (ret != sizeof(MSG) - 1 || memcmp(buffer, MSG, ret) != 0) { - fail("client: received data of different size! (expected: %d, have: %d)\n", (int)strlen(MSG), ret); + fail("client: received data of different size! (expected: %d, have: %d)\n", + (int)strlen(MSG), ret); goto end; } @@ -142,7 +143,7 @@ static void client(int sd, const char *prio) gnutls_bye(session, GNUTLS_SHUT_RDWR); - end: +end: close(sd); @@ -153,7 +154,7 @@ static void client(int sd, const char *prio) gnutls_global_deinit(); } -# define DH_BITS 1024 +#define DH_BITS 1024 static void server(int sd, const char *prio) { @@ -206,8 +207,8 @@ static void server(int sd, const char *prio) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); if (debug) print_dh_params_info(session); @@ -218,11 +219,11 @@ static void server(int sd, const char *prio) if (ret == 0) { gnutls_packet_deinit(packet); if (debug) - success - ("server: Peer has closed the GnuTLS connection\n"); + success("server: Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0) { - fail("server: Received corrupted data(%d). Closing...\n", ret); + fail("server: Received corrupted data(%d). Closing...\n", + ret); break; } else if (ret > 0) { gnutls_datum_t pdata; @@ -251,8 +252,7 @@ static void server(int sd, const char *prio) success("server: finished\n"); } -static -void start(const char *name, const char *prio) +static void start(const char *name, const char *prio) { pid_t child; int sockets[2], err; @@ -300,4 +300,4 @@ void doit(void) start("default anon-ecdh", "NORMAL:-KX-ALL:+ANON-ECDH"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/atfork.c b/tests/atfork.c index 235a855bfd..654519dc7c 100644 --- a/tests/atfork.c +++ b/tests/atfork.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -29,7 +29,7 @@ #include #include #if !defined(_WIN32) -# include +#include #endif #include @@ -42,12 +42,12 @@ void doit(void) } #else -# include "../lib/atfork.h" -# include "../lib/atfork.c" +#include "../lib/atfork.h" +#include "../lib/atfork.c" /* utils.h must be loaded after gnutls_int.h, as it redefines some * macros from gnulib */ -# include "utils.h" +#include "utils.h" void doit(void) { diff --git a/tests/auto-verify.c b/tests/auto-verify.c index d2c614db5e..7d04259b78 100644 --- a/tests/auto-verify.c +++ b/tests/auto-verify.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -44,138 +44,135 @@ static void tls_log_func(int level, const char *str) } static unsigned char ca_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTQwNDA5MDgwMjM0WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCuLSye8pe3yWKZ\n" - "Yp7tLQ4ImwLqqh1aN7x9pc5spLDj6krVArzkyyYDcWvtQNDjErEfLUrZZrCc4aIl\n" - "oU1Ghb92kI8ofZnHFbj3z5zdcWqiPppj5Y+hRdc4LszTWb+itrD9Ht/D67EK+m7W\n" - "ev6xxUdyiBYUmb2O3CnPZpUVshMRtEe45EDGI5hUgL2n4Msj41htTq8hATYPXgoq\n" - "gQUyXFpKAX5XDCyOG+FC6jmEys7UCRYv3SCl7TPWJ4cm+lHcFI2/OTOCBvMlKN2J\n" - "mWCdfnudZldqthin+8fR9l4nbuutOfPNt1Dj9InDzWZ1W/o4LrjKa7fsvszj2Z5A\n" - "Fn+xN/4zAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" - "ADAdBgNVHQ4EFgQUwRHwbXyPosKNNkBiZduEwL5ZCwswDQYJKoZIhvcNAQELBQAD\n" - "ggEBAEKr0b7WoJL+L8St/LEITU/i7FwFrCP6DkbaNo0kgzPmwnvNmw88MLI6UKwE\n" - "JecnjFhurRBBZ4FA85ucNyizeBnuXqFcyJ20+XziaXGPKV/ugKyYv9KBoTYkQOCh\n" - "nbOthmDqjvy2UYQj0BU2dOywkjUKWhYHEZLBpZYck0Orynxydwil5Ncsz4t3smJw\n" - "ahzCW8SzBFTiO99qQBCH2RH1PbUYzfAnJxZS2VScpcqlu9pr+Qv7r8E3p9qHxnQM\n" - "gO5laWO6lc13rNsbZRrtlCvacsiDSuDnS8EVXm0ih4fAntpRHacPbXZbOPQqJ/+1\n" - "G7/qJ6cDC/9aW+fU80ogTkAoFg4=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t ca_cert = { ca_cert_pem, - sizeof(ca_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwNDA5MDgwMjM0WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCuLSye8pe3yWKZ\n" + "Yp7tLQ4ImwLqqh1aN7x9pc5spLDj6krVArzkyyYDcWvtQNDjErEfLUrZZrCc4aIl\n" + "oU1Ghb92kI8ofZnHFbj3z5zdcWqiPppj5Y+hRdc4LszTWb+itrD9Ht/D67EK+m7W\n" + "ev6xxUdyiBYUmb2O3CnPZpUVshMRtEe45EDGI5hUgL2n4Msj41htTq8hATYPXgoq\n" + "gQUyXFpKAX5XDCyOG+FC6jmEys7UCRYv3SCl7TPWJ4cm+lHcFI2/OTOCBvMlKN2J\n" + "mWCdfnudZldqthin+8fR9l4nbuutOfPNt1Dj9InDzWZ1W/o4LrjKa7fsvszj2Z5A\n" + "Fn+xN/4zAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" + "ADAdBgNVHQ4EFgQUwRHwbXyPosKNNkBiZduEwL5ZCwswDQYJKoZIhvcNAQELBQAD\n" + "ggEBAEKr0b7WoJL+L8St/LEITU/i7FwFrCP6DkbaNo0kgzPmwnvNmw88MLI6UKwE\n" + "JecnjFhurRBBZ4FA85ucNyizeBnuXqFcyJ20+XziaXGPKV/ugKyYv9KBoTYkQOCh\n" + "nbOthmDqjvy2UYQj0BU2dOywkjUKWhYHEZLBpZYck0Orynxydwil5Ncsz4t3smJw\n" + "ahzCW8SzBFTiO99qQBCH2RH1PbUYzfAnJxZS2VScpcqlu9pr+Qv7r8E3p9qHxnQM\n" + "gO5laWO6lc13rNsbZRrtlCvacsiDSuDnS8EVXm0ih4fAntpRHacPbXZbOPQqJ/+1\n" + "G7/qJ6cDC/9aW+fU80ogTkAoFg4=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t ca_cert = { ca_cert_pem, sizeof(ca_cert_pem) }; static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIDOjCCAiKgAwIBAgIMU0T+mwoDu5uVLKeeMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTEwIhgPMjAxNDA0MDkwODAyMzVaGA85OTk5MTIzMTIzNTk1OVow\n" - "EzERMA8GA1UEAxMIc2VydmVyLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" - "AoIBAQDXfvgsMWXHNf3iUaEoZSNztZZr6+UdBkoUhbdWJDR+GwR+GHfnYaYHsuqb\n" - "bNEl/QFI+8Jeth0SmG7TNB+b/AlHFoBm8TwBt7H+Mn6AQIdo872Vs262UkHgbZN6\n" - "dEQeRCgiXmlsOVe+MVpf79Xi32MYz1FZ/ueS6tr8sIDhECThIZkq2eulVjAV86N2\n" - "zQ72Ml1k8rPw4SdK5OFhcXNdXr6CsAol8MmiORKDF0iAZxwtFVc00nBGqQC5rwrN\n" - "3A8czH5TsvyvrcW0mwV2XOVvZM5kFM1T/X0jF6RQHiGGFBYK4s6JZxSSOhJMFYYh\n" - "koPEKsuVZdmBJ2yTTdGumHZfG9LDAgMBAAGjgY0wgYowDAYDVR0TAQH/BAIwADAU\n" - "BgNVHREEDTALgglsb2NhbGhvc3QwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYDVR0P\n" - "AQH/BAUDAwegADAdBgNVHQ4EFgQURXiN5VD5vgqAprhd/37ldGKv4/4wHwYDVR0j\n" - "BBgwFoAU8MUzmkotjSmVa5r1ejMkMQ6BiZYwDQYJKoZIhvcNAQELBQADggEBABSU\n" - "cmMX0nGeg43itPnLjSTIUuYEamRhfsFDwgRYQn5w+BcFG1p0scBRxLAShUEb9A2A\n" - "oEJV4rQDpCn9bcMrMHhTCR5sOlLh/2o9BROjK0+DjQLDkooQK5xa+1GYEiy6QYCx\n" - "QjdCCnMhHh24oP2/vUggRKhevvD2QQFKcCDT6n13RFYm+HX82gIh6SAtRs0oahY5\n" - "k9CM9TYRPzXy+tQqhZisJzc8BLTW/XA97kAJW6+hUhPir7AYR6BKJhNeIxcN/yMy\n" - "jsHzWDLezip/8q+kzw658V5e40hne7ZaJycGUaUdLVnJcpNtBgGE82TRS/XZSQKF\n" - "fpy8FLGcJynqlIOzdKs=\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIDATCCAemgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTQwNDA5MDgwMjM0WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZq3sA+mjFadII\n" - "EMDHfj1fYh+UOUSa8c814E9NfCdYZ9Z11BmPpBeR5mXV12j1DKjkTlqTUL7s4lVR\n" - "RKfyAdCpQIfeXHDeTYYUq2uBnbi5YMG5Y+WbCiYacgRU3IypYrSzaeh1mY7GiEFe\n" - "U/NaImHLCf+TdAvTJ3Fo0QPe5QN2Lrv6l//cqOv7enZ91KRWxClDMM6EAr+C/7dk\n" - "rOTXRrCuH/e/KVBXEJ/YeSYPmBIwolGktRrGdsVagdqYArr4dhJ7VThIVRUX1Ijl\n" - "THCLstI/LuD8WkDccU3ZSdm47f2U43p/+rSO0MiNOXiaskeK56G/9DbJEeETUbzm\n" - "/B2712MVAgMBAAGjZDBiMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" - "ADAdBgNVHQ4EFgQU8MUzmkotjSmVa5r1ejMkMQ6BiZYwHwYDVR0jBBgwFoAUwRHw\n" - "bXyPosKNNkBiZduEwL5ZCwswDQYJKoZIhvcNAQELBQADggEBACKxBPj9u1t52uIF\n" - "eQ2JPb8/u+MBttvSLo0qPKXwpc4q8hNclh66dpqGWiF0iSumsKyKU54r6CIF9Ikm\n" - "t1V1GR9Ll4iTnz3NdIt1w3ns8rSlU5O/dgKysK/1C/5xJWEUYtEO5mnyi4Zaf8FB\n" - "hKmQ1aWF5dTB81PVAQxyCiFEnH7YumK7pJeIpnCOPIqLZLUHfrTUeL8zONF4i5Sb\n" - "7taZ8SQ6b7IaioU+NJ50uT2wy34lsyvCWf76Azezv9bggkdNDo/7ktMgsfRrSyM8\n" - "+MVob5ePGTjKx5yMy/sy2vUkkefwW3RiEss/y2JRb8Hw7nDlA9ttilYKFwGFwRvw\n" - "KRsXqo8=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIIDOjCCAiKgAwIBAgIMU0T+mwoDu5uVLKeeMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTEwIhgPMjAxNDA0MDkwODAyMzVaGA85OTk5MTIzMTIzNTk1OVow\n" + "EzERMA8GA1UEAxMIc2VydmVyLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" + "AoIBAQDXfvgsMWXHNf3iUaEoZSNztZZr6+UdBkoUhbdWJDR+GwR+GHfnYaYHsuqb\n" + "bNEl/QFI+8Jeth0SmG7TNB+b/AlHFoBm8TwBt7H+Mn6AQIdo872Vs262UkHgbZN6\n" + "dEQeRCgiXmlsOVe+MVpf79Xi32MYz1FZ/ueS6tr8sIDhECThIZkq2eulVjAV86N2\n" + "zQ72Ml1k8rPw4SdK5OFhcXNdXr6CsAol8MmiORKDF0iAZxwtFVc00nBGqQC5rwrN\n" + "3A8czH5TsvyvrcW0mwV2XOVvZM5kFM1T/X0jF6RQHiGGFBYK4s6JZxSSOhJMFYYh\n" + "koPEKsuVZdmBJ2yTTdGumHZfG9LDAgMBAAGjgY0wgYowDAYDVR0TAQH/BAIwADAU\n" + "BgNVHREEDTALgglsb2NhbGhvc3QwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYDVR0P\n" + "AQH/BAUDAwegADAdBgNVHQ4EFgQURXiN5VD5vgqAprhd/37ldGKv4/4wHwYDVR0j\n" + "BBgwFoAU8MUzmkotjSmVa5r1ejMkMQ6BiZYwDQYJKoZIhvcNAQELBQADggEBABSU\n" + "cmMX0nGeg43itPnLjSTIUuYEamRhfsFDwgRYQn5w+BcFG1p0scBRxLAShUEb9A2A\n" + "oEJV4rQDpCn9bcMrMHhTCR5sOlLh/2o9BROjK0+DjQLDkooQK5xa+1GYEiy6QYCx\n" + "QjdCCnMhHh24oP2/vUggRKhevvD2QQFKcCDT6n13RFYm+HX82gIh6SAtRs0oahY5\n" + "k9CM9TYRPzXy+tQqhZisJzc8BLTW/XA97kAJW6+hUhPir7AYR6BKJhNeIxcN/yMy\n" + "jsHzWDLezip/8q+kzw658V5e40hne7ZaJycGUaUdLVnJcpNtBgGE82TRS/XZSQKF\n" + "fpy8FLGcJynqlIOzdKs=\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIDATCCAemgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwNDA5MDgwMjM0WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZq3sA+mjFadII\n" + "EMDHfj1fYh+UOUSa8c814E9NfCdYZ9Z11BmPpBeR5mXV12j1DKjkTlqTUL7s4lVR\n" + "RKfyAdCpQIfeXHDeTYYUq2uBnbi5YMG5Y+WbCiYacgRU3IypYrSzaeh1mY7GiEFe\n" + "U/NaImHLCf+TdAvTJ3Fo0QPe5QN2Lrv6l//cqOv7enZ91KRWxClDMM6EAr+C/7dk\n" + "rOTXRrCuH/e/KVBXEJ/YeSYPmBIwolGktRrGdsVagdqYArr4dhJ7VThIVRUX1Ijl\n" + "THCLstI/LuD8WkDccU3ZSdm47f2U43p/+rSO0MiNOXiaskeK56G/9DbJEeETUbzm\n" + "/B2712MVAgMBAAGjZDBiMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" + "ADAdBgNVHQ4EFgQU8MUzmkotjSmVa5r1ejMkMQ6BiZYwHwYDVR0jBBgwFoAUwRHw\n" + "bXyPosKNNkBiZduEwL5ZCwswDQYJKoZIhvcNAQELBQADggEBACKxBPj9u1t52uIF\n" + "eQ2JPb8/u+MBttvSLo0qPKXwpc4q8hNclh66dpqGWiF0iSumsKyKU54r6CIF9Ikm\n" + "t1V1GR9Ll4iTnz3NdIt1w3ns8rSlU5O/dgKysK/1C/5xJWEUYtEO5mnyi4Zaf8FB\n" + "hKmQ1aWF5dTB81PVAQxyCiFEnH7YumK7pJeIpnCOPIqLZLUHfrTUeL8zONF4i5Sb\n" + "7taZ8SQ6b7IaioU+NJ50uT2wy34lsyvCWf76Azezv9bggkdNDo/7ktMgsfRrSyM8\n" + "+MVob5ePGTjKx5yMy/sy2vUkkefwW3RiEss/y2JRb8Hw7nDlA9ttilYKFwGFwRvw\n" + "KRsXqo8=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIEpAIBAAKCAQEA1374LDFlxzX94lGhKGUjc7WWa+vlHQZKFIW3ViQ0fhsEfhh3\n" - "52GmB7Lqm2zRJf0BSPvCXrYdEphu0zQfm/wJRxaAZvE8Abex/jJ+gECHaPO9lbNu\n" - "tlJB4G2TenREHkQoIl5pbDlXvjFaX+/V4t9jGM9RWf7nkura/LCA4RAk4SGZKtnr\n" - "pVYwFfOjds0O9jJdZPKz8OEnSuThYXFzXV6+grAKJfDJojkSgxdIgGccLRVXNNJw\n" - "RqkAua8KzdwPHMx+U7L8r63FtJsFdlzlb2TOZBTNU/19IxekUB4hhhQWCuLOiWcU\n" - "kjoSTBWGIZKDxCrLlWXZgSdsk03Rrph2XxvSwwIDAQABAoIBAB7trDS7ij4DM8MN\n" - "sDGaAnKS91nZ63I0+uDjKCMG4znOKuDmJh9hVnD4bs+L2KC5JTwSVh09ygJnOlC5\n" - "xGegzrwTMK6VpOUiNjujh6BkooqfoPAhZpxoReguEeKbWUN2yMPWBQ9xU3SKpMvs\n" - "IiiDozdmWeiuuxHM/00REA49QO3Gnx2logeB+fcvXXD1UiZV3x0xxSApiJt1sr2r\n" - "NmqSyGdNUgpmnTP8zbKnDaRe5Wj4tj1TCTLE/HZ0tzdRuwlkIqvcpGg1LMtKm5N8\n" - "xIWjTGMFwGjG+OF8LGqHLH+28pI3iMB6QqO2YLwOp+WZKImKP3+Dp3s8lCw8t8cm\n" - "q5/Qc9ECgYEA2xwxm+pFkrFmZNLCakP/6S5AZqpfSBRUlF/uX2pBKO7o6I6aOV9o\n" - "zq2QWYIZfdyD+9MvAFUQ36sWfTVWpGA34WGtsGtcRRygKKTigpJHvBldaPxiuYuk\n" - "xbS54nWUdix/JzyQAy22xJXlp4XJvtFJjHhA2td0XA7tfng9n8jmvEUCgYEA+8cA\n" - "uFIQFbaZ2y6pnOvlVj8OH0f1hZa9M+3q01fWy1rnDAsLrIzJy8TZnBtpDwy9lAun\n" - "Sa6wzu6qeHmF17xwk5U7BCyK2Qj/9KhRLg1mnDebQ/CiLSAaJVnrYFp9Du96fTkN\n" - "ollvbFiGF92QwPTDf2f1gHZQEPwa+f/ox37ad2cCgYEAwMgXpfUD7cOEMeV2BQV7\n" - "XnDBXRM97i9lE38sPmtAlYFPD36Yly4pCt+PCBH9181zmtf+nK47wG/Jw7RwXQQD\n" - "ZpwItBZiArTi/Z/FY9jMoOU4WKznOBVzjjgq7ONDEo6n+Z/BnepUyraQb0q5bNi7\n" - "e4o6ldHHoU/JCeNFZRbgXHkCgYA6vJU9at+XwS6phHxLQHkTIsivoYD0tlLTX4it\n" - "30sby8wk8hq6GWomYHkHwxlCSo2bkRBozxkuXV1ll6wSxUJaG7FV6vJFaaUUtYOi\n" - "w7uRbCOLuQKMlnWjCxQvOUz9g/7GYd39ZvHoi8pUnPrdGPzWpzEN1AwfukCs2/e5\n" - "Oq3KtwKBgQCkHmDU8h0kOfN28f8ZiyjJemQMNoOGiJqnGexaKvsRd+bt4H+7DsWQ\n" - "OnyKm/oR0wCCSmFM5aQc6GgzPD7orueKVYHChbY7HLTWKRHNs6Rlk+6hXJvOld0i\n" - "Cl7KqL2x2ibGMtt4LtSntdzWqa87N7vCWMSTmvd8uLgflBs33xUIiQ==\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIIEpAIBAAKCAQEA1374LDFlxzX94lGhKGUjc7WWa+vlHQZKFIW3ViQ0fhsEfhh3\n" + "52GmB7Lqm2zRJf0BSPvCXrYdEphu0zQfm/wJRxaAZvE8Abex/jJ+gECHaPO9lbNu\n" + "tlJB4G2TenREHkQoIl5pbDlXvjFaX+/V4t9jGM9RWf7nkura/LCA4RAk4SGZKtnr\n" + "pVYwFfOjds0O9jJdZPKz8OEnSuThYXFzXV6+grAKJfDJojkSgxdIgGccLRVXNNJw\n" + "RqkAua8KzdwPHMx+U7L8r63FtJsFdlzlb2TOZBTNU/19IxekUB4hhhQWCuLOiWcU\n" + "kjoSTBWGIZKDxCrLlWXZgSdsk03Rrph2XxvSwwIDAQABAoIBAB7trDS7ij4DM8MN\n" + "sDGaAnKS91nZ63I0+uDjKCMG4znOKuDmJh9hVnD4bs+L2KC5JTwSVh09ygJnOlC5\n" + "xGegzrwTMK6VpOUiNjujh6BkooqfoPAhZpxoReguEeKbWUN2yMPWBQ9xU3SKpMvs\n" + "IiiDozdmWeiuuxHM/00REA49QO3Gnx2logeB+fcvXXD1UiZV3x0xxSApiJt1sr2r\n" + "NmqSyGdNUgpmnTP8zbKnDaRe5Wj4tj1TCTLE/HZ0tzdRuwlkIqvcpGg1LMtKm5N8\n" + "xIWjTGMFwGjG+OF8LGqHLH+28pI3iMB6QqO2YLwOp+WZKImKP3+Dp3s8lCw8t8cm\n" + "q5/Qc9ECgYEA2xwxm+pFkrFmZNLCakP/6S5AZqpfSBRUlF/uX2pBKO7o6I6aOV9o\n" + "zq2QWYIZfdyD+9MvAFUQ36sWfTVWpGA34WGtsGtcRRygKKTigpJHvBldaPxiuYuk\n" + "xbS54nWUdix/JzyQAy22xJXlp4XJvtFJjHhA2td0XA7tfng9n8jmvEUCgYEA+8cA\n" + "uFIQFbaZ2y6pnOvlVj8OH0f1hZa9M+3q01fWy1rnDAsLrIzJy8TZnBtpDwy9lAun\n" + "Sa6wzu6qeHmF17xwk5U7BCyK2Qj/9KhRLg1mnDebQ/CiLSAaJVnrYFp9Du96fTkN\n" + "ollvbFiGF92QwPTDf2f1gHZQEPwa+f/ox37ad2cCgYEAwMgXpfUD7cOEMeV2BQV7\n" + "XnDBXRM97i9lE38sPmtAlYFPD36Yly4pCt+PCBH9181zmtf+nK47wG/Jw7RwXQQD\n" + "ZpwItBZiArTi/Z/FY9jMoOU4WKznOBVzjjgq7ONDEo6n+Z/BnepUyraQb0q5bNi7\n" + "e4o6ldHHoU/JCeNFZRbgXHkCgYA6vJU9at+XwS6phHxLQHkTIsivoYD0tlLTX4it\n" + "30sby8wk8hq6GWomYHkHwxlCSo2bkRBozxkuXV1ll6wSxUJaG7FV6vJFaaUUtYOi\n" + "w7uRbCOLuQKMlnWjCxQvOUz9g/7GYd39ZvHoi8pUnPrdGPzWpzEN1AwfukCs2/e5\n" + "Oq3KtwKBgQCkHmDU8h0kOfN28f8ZiyjJemQMNoOGiJqnGexaKvsRd+bt4H+7DsWQ\n" + "OnyKm/oR0wCCSmFM5aQc6GgzPD7orueKVYHChbY7HLTWKRHNs6Rlk+6hXJvOld0i\n" + "Cl7KqL2x2ibGMtt4LtSntdzWqa87N7vCWMSTmvd8uLgflBs33xUIiQ==\n" + "-----END RSA PRIVATE KEY-----\n"; static unsigned char cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICHjCCAYmgAwIBAgIERiYdNzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTI3WhcNMDgwNDE3MTMyOTI3WjAdMRsw\n" - "GQYDVQQDExJHbnVUTFMgdGVzdCBjbGllbnQwgZwwCwYJKoZIhvcNAQEBA4GMADCB\n" - "iAKBgLtmQ/Xyxde2jMzF3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeL\n" - "ZIkiW8DdU3w77XwEu4C5KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKN\n" - "zj2AC41179gAgY8oBAOgIo1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjdjB0MAwG\n" - "A1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUDAweg\n" - "ADAdBgNVHQ4EFgQUTLkKm/odNON+3svSBxX+odrLaJEwHwYDVR0jBBgwFoAU6Twc\n" - "+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBALujmBJVZnvaTXr9cFRJ\n" - "jpfc/3X7sLUsMvumcDE01ls/cG5mIatmiyEU9qI3jbgUf82z23ON/acwJf875D3/\n" - "U7jyOsBJ44SEQITbin2yUeJMIm1tievvdNXBDfW95AM507ShzP12sfiJkJfjjdhy\n" - "dc8Siq5JojruiMizAf0pA7in\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIICHjCCAYmgAwIBAgIERiYdNzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTI3WhcNMDgwNDE3MTMyOTI3WjAdMRsw\n" + "GQYDVQQDExJHbnVUTFMgdGVzdCBjbGllbnQwgZwwCwYJKoZIhvcNAQEBA4GMADCB\n" + "iAKBgLtmQ/Xyxde2jMzF3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeL\n" + "ZIkiW8DdU3w77XwEu4C5KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKN\n" + "zj2AC41179gAgY8oBAOgIo1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjdjB0MAwG\n" + "A1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUDAweg\n" + "ADAdBgNVHQ4EFgQUTLkKm/odNON+3svSBxX+odrLaJEwHwYDVR0jBBgwFoAU6Twc\n" + "+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBALujmBJVZnvaTXr9cFRJ\n" + "jpfc/3X7sLUsMvumcDE01ls/cG5mIatmiyEU9qI3jbgUf82z23ON/acwJf875D3/\n" + "U7jyOsBJ44SEQITbin2yUeJMIm1tievvdNXBDfW95AM507ShzP12sfiJkJfjjdhy\n" + "dc8Siq5JojruiMizAf0pA7in\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t cli_cert = { cert_pem, sizeof(cert_pem) - 1 }; static unsigned char key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" - "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" - "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" - "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" - "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" - "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" - "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" - "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" - "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" - "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" - "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" - "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" - "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" + "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" + "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" + "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" + "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" + "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" + "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" + "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" + "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" + "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" + "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" + "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" + "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" + "-----END RSA PRIVATE KEY-----\n"; const gnutls_datum_t cli_key = { key_pem, sizeof(key_pem) - 1 }; -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; static void print_verification_res(unsigned int output) { @@ -188,10 +185,8 @@ static void print_verification_res(unsigned int output) success("Verified."); } - ret = - gnutls_certificate_verification_status_print(output, - GNUTLS_CRT_X509, - &pout, 0); + ret = gnutls_certificate_verification_status_print( + output, GNUTLS_CRT_X509, &pout, 0); if (ret < 0) { fprintf(stderr, "error: %s\n", gnutls_strerror(ret)); exit(1); @@ -218,8 +213,7 @@ static const char *get_signature_algo(gnutls_x509_crt_t crt) return gnutls_sign_get_name(ret); } -static int cert_out_callback(gnutls_x509_crt_t cert, - gnutls_x509_crt_t issuer, +static int cert_out_callback(gnutls_x509_crt_t cert, gnutls_x509_crt_t issuer, gnutls_x509_crl_t crl, unsigned int verification_output) { @@ -257,8 +251,7 @@ static int cert_out_callback(gnutls_x509_crt_t cert, gnutls_free(issuer_name.data); ret = gnutls_x509_crt_get_dn3(issuer, &issuer_name, 0); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_get_issuer_dn: %s\n", + fprintf(stderr, "gnutls_x509_crt_get_issuer_dn: %s\n", gnutls_strerror(ret)); exit(1); } @@ -274,8 +267,7 @@ static int cert_out_callback(gnutls_x509_crt_t cert, ret = gnutls_x509_crl_get_issuer_dn3(crl, &issuer_name, 0); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crl_get_issuer_dn: %s\n", + fprintf(stderr, "gnutls_x509_crl_get_issuer_dn: %s\n", gnutls_strerror(ret)); exit(1); } @@ -295,8 +287,8 @@ static int cert_out_callback(gnutls_x509_crt_t cert, exit(1); } } - success("\tChecked against CRL[%s] of: %s\n", - serial.data, issuer_name.data); + success("\tChecked against CRL[%s] of: %s\n", serial.data, + issuer_name.data); } success("\tOutput: "); @@ -311,8 +303,7 @@ static int cert_out_callback(gnutls_x509_crt_t cert, return 0; } -static -void test_failure(const char *name, const char *prio) +static void test_failure(const char *name, const char *prio) { int ret; /* Server stuff. */ @@ -335,10 +326,9 @@ void test_failure(const char *name, const char *prio) to_server_len = 0; to_client_len = 0; - ret = - gnutls_x509_crt_list_import2(&crts, &crts_size, &server_cert, - GNUTLS_X509_FMT_PEM, - GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED); + ret = gnutls_x509_crt_list_import2( + &crts, &crts_size, &server_cert, GNUTLS_X509_FMT_PEM, + GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED); if (ret < 0) { fprintf(stderr, "error: %s\n", gnutls_strerror(ret)); exit(1); @@ -350,8 +340,8 @@ void test_failure(const char *name, const char *prio) exit(1); } - ret = - gnutls_x509_privkey_import(pkey, &server_key, GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_privkey_import(pkey, &server_key, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fprintf(stderr, "error: %s\n", gnutls_strerror(ret)); exit(1); @@ -379,15 +369,13 @@ void test_failure(const char *name, const char *prio) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); - ret = gnutls_certificate_set_x509_key_mem(clientx509cred, - &cli_cert, &cli_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + clientx509cred, &cli_cert, &cli_key, GNUTLS_X509_FMT_PEM); ret = gnutls_init(&client, GNUTLS_CLIENT); if (ret < 0) @@ -433,8 +421,7 @@ void test_failure(const char *name, const char *prio) gnutls_certificate_free_credentials(clientx509cred); } -static -void test_success1(const char *name, const char *prio) +static void test_success1(const char *name, const char *prio) { int ret; /* Server stuff. */ @@ -457,10 +444,9 @@ void test_success1(const char *name, const char *prio) to_server_len = 0; to_client_len = 0; - ret = - gnutls_x509_crt_list_import2(&crts, &crts_size, &server_cert, - GNUTLS_X509_FMT_PEM, - GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED); + ret = gnutls_x509_crt_list_import2( + &crts, &crts_size, &server_cert, GNUTLS_X509_FMT_PEM, + GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED); if (ret < 0) { fprintf(stderr, "error: %s\n", gnutls_strerror(ret)); exit(1); @@ -472,8 +458,8 @@ void test_success1(const char *name, const char *prio) exit(1); } - ret = - gnutls_x509_privkey_import(pkey, &server_key, GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_privkey_import(pkey, &server_key, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fprintf(stderr, "error: %s\n", gnutls_strerror(ret)); exit(1); @@ -501,15 +487,13 @@ void test_success1(const char *name, const char *prio) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); - ret = gnutls_certificate_set_x509_key_mem(clientx509cred, - &cli_cert, &cli_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + clientx509cred, &cli_cert, &cli_key, GNUTLS_X509_FMT_PEM); ret = gnutls_init(&client, GNUTLS_CLIENT); if (ret < 0) @@ -552,8 +536,7 @@ void test_success1(const char *name, const char *prio) gnutls_certificate_free_credentials(clientx509cred); } -static -void test_success2(const char *name, const char *prio) +static void test_success2(const char *name, const char *prio) { int ret; /* Server stuff. */ @@ -575,10 +558,9 @@ void test_success2(const char *name, const char *prio) to_server_len = 0; to_client_len = 0; - ret = - gnutls_x509_crt_list_import2(&crts, &crts_size, &server_cert, - GNUTLS_X509_FMT_PEM, - GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED); + ret = gnutls_x509_crt_list_import2( + &crts, &crts_size, &server_cert, GNUTLS_X509_FMT_PEM, + GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED); if (ret < 0) { fprintf(stderr, "error: %s\n", gnutls_strerror(ret)); exit(1); @@ -590,8 +572,8 @@ void test_success2(const char *name, const char *prio) exit(1); } - ret = - gnutls_x509_privkey_import(pkey, &server_key, GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_privkey_import(pkey, &server_key, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fprintf(stderr, "error: %s\n", gnutls_strerror(ret)); exit(1); @@ -619,15 +601,13 @@ void test_success2(const char *name, const char *prio) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); - ret = gnutls_certificate_set_x509_key_mem(clientx509cred, - &cli_cert, &cli_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + clientx509cred, &cli_cert, &cli_key, GNUTLS_X509_FMT_PEM); ret = gnutls_init(&client, GNUTLS_CLIENT); if (ret < 0) @@ -678,5 +658,4 @@ void doit(void) test_success2("tls1.3", "NORMAL:-VERS-ALL:+VERS-TLS1.3"); gnutls_global_deinit(); - } diff --git a/tests/base64-raw.c b/tests/base64-raw.c index ab525b81b1..75149f8ed0 100644 --- a/tests/base64-raw.c +++ b/tests/base64-raw.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,7 +35,7 @@ /* This checks base64 raw encoding without PEM headers */ -static void encode(const char *test_name, const gnutls_datum_t * raw, +static void encode(const char *test_name, const gnutls_datum_t *raw, const char *expected) { int ret; @@ -49,12 +49,14 @@ static void encode(const char *test_name, const gnutls_datum_t * raw, } if (strlen(expected) != out.size) { - fail("%s: gnutls_pem_base64_encode2: output has incorrect size (%d, expected %d)\n", test_name, (int)out.size, (int)strlen(expected)); + fail("%s: gnutls_pem_base64_encode2: output has incorrect size (%d, expected %d)\n", + test_name, (int)out.size, (int)strlen(expected)); exit(1); } if (strncasecmp(expected, (char *)out.data, out.size) != 0) { - fail("%s: gnutls_pem_base64_encode2: output does not match the expected\n", test_name); + fail("%s: gnutls_pem_base64_encode2: output does not match the expected\n", + test_name); exit(1); } @@ -68,12 +70,14 @@ static void encode(const char *test_name, const gnutls_datum_t * raw, } if (strlen(expected) != out.size) { - fail("%s: gnutls_base64_encode2: output has incorrect size (%d, expected %d)\n", test_name, (int)out.size, (int)strlen(expected)); + fail("%s: gnutls_base64_encode2: output has incorrect size (%d, expected %d)\n", + test_name, (int)out.size, (int)strlen(expected)); exit(1); } if (strncasecmp(expected, (char *)out.data, out.size) != 0) { - fail("%s: gnutls_base64_encode2: output does not match the expected\n", test_name); + fail("%s: gnutls_base64_encode2: output does not match the expected\n", + test_name); exit(1); } @@ -82,7 +86,7 @@ static void encode(const char *test_name, const gnutls_datum_t * raw, return; } -static void encode_new(const char *test_name, const gnutls_datum_t * raw, +static void encode_new(const char *test_name, const gnutls_datum_t *raw, const char *expected) { int ret; @@ -96,12 +100,14 @@ static void encode_new(const char *test_name, const gnutls_datum_t * raw, } if (strlen(expected) != out.size) { - fail("%s: gnutls_base64_encode2: output has incorrect size (%d, expected %d)\n", test_name, (int)out.size, (int)strlen(expected)); + fail("%s: gnutls_base64_encode2: output has incorrect size (%d, expected %d)\n", + test_name, (int)out.size, (int)strlen(expected)); exit(1); } if (strncasecmp(expected, (char *)out.data, out.size) != 0) { - fail("%s: gnutls_base64_encode2: output does not match the expected\n", test_name); + fail("%s: gnutls_base64_encode2: output does not match the expected\n", + test_name); exit(1); } @@ -115,12 +121,14 @@ static void encode_new(const char *test_name, const gnutls_datum_t * raw, } if (strlen(expected) != out.size) { - fail("%s: gnutls_base64_encode2: output has incorrect size (%d, expected %d)\n", test_name, (int)out.size, (int)strlen(expected)); + fail("%s: gnutls_base64_encode2: output has incorrect size (%d, expected %d)\n", + test_name, (int)out.size, (int)strlen(expected)); exit(1); } if (strncasecmp(expected, (char *)out.data, out.size) != 0) { - fail("%s: gnutls_base64_encode2: output does not match the expected\n", test_name); + fail("%s: gnutls_base64_encode2: output does not match the expected\n", + test_name); exit(1); } @@ -136,12 +144,14 @@ static void encode_new(const char *test_name, const gnutls_datum_t * raw, } if (raw->size != out.size) { - fail("%s: gnutls_base64_decode2: output has incorrect size (%d, expected %d)\n", test_name, out.size, raw->size); + fail("%s: gnutls_base64_decode2: output has incorrect size (%d, expected %d)\n", + test_name, out.size, raw->size); exit(1); } if (memcmp(raw->data, out.data, out.size) != 0) { - fail("%s: gnutls_base64_decode2: output does not match the expected\n", test_name); + fail("%s: gnutls_base64_decode2: output does not match the expected\n", + test_name); exit(1); } @@ -150,7 +160,7 @@ static void encode_new(const char *test_name, const gnutls_datum_t * raw, return; } -static void decode_new(const char *test_name, const gnutls_datum_t * raw, +static void decode_new(const char *test_name, const gnutls_datum_t *raw, const char *hex, int res) { int ret; @@ -160,7 +170,7 @@ static void decode_new(const char *test_name, const gnutls_datum_t * raw, in.size = strlen(hex); ret = gnutls_base64_decode2(&in, &out); if (ret < 0) { - if (res == ret) /* expected */ + if (res == ret) /* expected */ return; fail("%s: gnutls_base64_decode2: %d/%s\n", test_name, ret, gnutls_strerror(ret)); @@ -168,17 +178,20 @@ static void decode_new(const char *test_name, const gnutls_datum_t * raw, } if (res != 0) { - fail("%s: gnutls_base64_decode2: expected failure, but succeeded!\n", test_name); + fail("%s: gnutls_base64_decode2: expected failure, but succeeded!\n", + test_name); exit(1); } if (raw->size != out.size) { - fail("%s: gnutls_base64_decode2: output has incorrect size (%d, expected %d)\n", test_name, out.size, raw->size); + fail("%s: gnutls_base64_decode2: output has incorrect size (%d, expected %d)\n", + test_name, out.size, raw->size); exit(1); } if (memcmp(raw->data, out.data, out.size) != 0) { - fail("%s: gnutls_base64_decode2: output does not match the expected\n", test_name); + fail("%s: gnutls_base64_decode2: output does not match the expected\n", + test_name); exit(1); } @@ -194,20 +207,14 @@ struct encode_tests_st { }; struct encode_tests_st encode_tests[] = { - { - .name = "rnd1", - .pem = "9ppGioRpeiiD2lLNYC85eA==", - .raw = {(void *) - "\xf6\x9a\x46\x8a\x84\x69\x7a\x28\x83\xda\x52\xcd\x60\x2f\x39\x78", - 16} - }, - { - .name = "rnd2", - .pem = "LJ/7hUZ3TtPIz2dlc5+YvELe+Q==", - .raw = {(void *) - "\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", - 19} - } + { .name = "rnd1", + .pem = "9ppGioRpeiiD2lLNYC85eA==", + .raw = { (void *)"\xf6\x9a\x46\x8a\x84\x69\x7a\x28\x83\xda\x52\xcd\x60\x2f\x39\x78", + 16 } }, + { .name = "rnd2", + .pem = "LJ/7hUZ3TtPIz2dlc5+YvELe+Q==", + .raw = { (void *)"\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", + 19 } } }; struct decode_tests_st { @@ -218,51 +225,36 @@ struct decode_tests_st { }; struct decode_tests_st decode_tests[] = { - { - .name = "empty", - .pem = "", - .raw = {(void *)"", 0}, - .res = 0}, - { - .name = "dec-rnd1", - .pem = "9ppGioRpeiiD2lLNYC85eA==", - .raw = {(void *) - "\xf6\x9a\x46\x8a\x84\x69\x7a\x28\x83\xda\x52\xcd\x60\x2f\x39\x78", - 16}, - .res = 0}, - { - .name = "dec-rnd2", - .pem = "LJ/7hUZ3TtPIz2dlc5+YvELe+Q==", - .raw = {(void *) - "\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", - 19}, - .res = 0}, - { - .name = "dec-extra-chars", - .pem = "\n\n LJ/7hUZ3TtPIz2dlc5+YvELe+Q== \n", - .raw = {(void *) - "\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", - 19}, - .res = 0}, - { - .name = "dec-spaces", - .pem = " ", - .raw = {(void *)"", 0}, - .res = GNUTLS_E_BASE64_DECODING_ERROR}, - { - .name = "dec-invalid-data", - .pem = "XLJ/7hUZ3TtPIz2dlc5+YvELe+Q==", - .raw = {(void *) - "\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", - 19}, - .res = GNUTLS_E_BASE64_DECODING_ERROR}, - { - .name = "dec-invalid-suffix", - .pem = "LJ/7hUZ3TtPIz2dlc5+YvELe+Q==XXX", - .raw = {(void *) - "\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", - 19}, - .res = GNUTLS_E_BASE64_DECODING_ERROR} + { .name = "empty", .pem = "", .raw = { (void *)"", 0 }, .res = 0 }, + { .name = "dec-rnd1", + .pem = "9ppGioRpeiiD2lLNYC85eA==", + .raw = { (void *)"\xf6\x9a\x46\x8a\x84\x69\x7a\x28\x83\xda\x52\xcd\x60\x2f\x39\x78", + 16 }, + .res = 0 }, + { .name = "dec-rnd2", + .pem = "LJ/7hUZ3TtPIz2dlc5+YvELe+Q==", + .raw = { (void *)"\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", + 19 }, + .res = 0 }, + { .name = "dec-extra-chars", + .pem = "\n\n LJ/7hUZ3TtPIz2dlc5+YvELe+Q== \n", + .raw = { (void *)"\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", + 19 }, + .res = 0 }, + { .name = "dec-spaces", + .pem = " ", + .raw = { (void *)"", 0 }, + .res = GNUTLS_E_BASE64_DECODING_ERROR }, + { .name = "dec-invalid-data", + .pem = "XLJ/7hUZ3TtPIz2dlc5+YvELe+Q==", + .raw = { (void *)"\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", + 19 }, + .res = GNUTLS_E_BASE64_DECODING_ERROR }, + { .name = "dec-invalid-suffix", + .pem = "LJ/7hUZ3TtPIz2dlc5+YvELe+Q==XXX", + .raw = { (void *)"\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", + 19 }, + .res = GNUTLS_E_BASE64_DECODING_ERROR } }; void doit(void) diff --git a/tests/base64.c b/tests/base64.c index 1d6ccbd732..9ff7cf24ab 100644 --- a/tests/base64.c +++ b/tests/base64.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,7 +33,7 @@ #include "utils.h" -static void encode(const char *test_name, const gnutls_datum_t * raw, +static void encode(const char *test_name, const gnutls_datum_t *raw, const char *expected) { int ret; @@ -47,12 +47,14 @@ static void encode(const char *test_name, const gnutls_datum_t * raw, } if (strlen(expected) != out.size) { - fail("%s: gnutls_pem_base64_encode2: output has incorrect size (%d, expected %d)\n", test_name, (int)out.size, (int)strlen(expected)); + fail("%s: gnutls_pem_base64_encode2: output has incorrect size (%d, expected %d)\n", + test_name, (int)out.size, (int)strlen(expected)); exit(1); } if (strncasecmp(expected, (char *)out.data, out.size) != 0) { - fail("%s: gnutls_pem_base64_encode2: output does not match the expected\n", test_name); + fail("%s: gnutls_pem_base64_encode2: output does not match the expected\n", + test_name); exit(1); } @@ -68,12 +70,14 @@ static void encode(const char *test_name, const gnutls_datum_t * raw, } if (raw->size != out.size) { - fail("%s: gnutls_pem_base64_decode2: output has incorrect size (%d, expected %d)\n", test_name, out.size, raw->size); + fail("%s: gnutls_pem_base64_decode2: output has incorrect size (%d, expected %d)\n", + test_name, out.size, raw->size); exit(1); } if (memcmp(raw->data, out.data, out.size) != 0) { - fail("%s: gnutls_pem_base64_decode2: output does not match the expected\n", test_name); + fail("%s: gnutls_pem_base64_decode2: output does not match the expected\n", + test_name); exit(1); } @@ -82,7 +86,7 @@ static void encode(const char *test_name, const gnutls_datum_t * raw, return; } -static void decode(const char *test_name, const gnutls_datum_t * raw, +static void decode(const char *test_name, const gnutls_datum_t *raw, const char *hex, unsigned hex_size, int res) { int ret; @@ -96,7 +100,7 @@ static void decode(const char *test_name, const gnutls_datum_t * raw, ret = gnutls_pem_base64_decode2(test_name, &in, &out); if (ret < 0) { - if (res == ret) /* expected */ + if (res == ret) /* expected */ return; fail("%s: gnutls_pem_base64_decode2: %d/%s\n", test_name, ret, gnutls_strerror(ret)); @@ -104,17 +108,20 @@ static void decode(const char *test_name, const gnutls_datum_t * raw, } if (res != 0) { - fail("%s: gnutls_pem_base64_decode2: expected failure, but succeeded!\n", test_name); + fail("%s: gnutls_pem_base64_decode2: expected failure, but succeeded!\n", + test_name); exit(1); } if (raw->size != out.size) { - fail("%s: gnutls_pem_base64_decode2: output has incorrect size (%d, expected %d)\n", test_name, out.size, raw->size); + fail("%s: gnutls_pem_base64_decode2: output has incorrect size (%d, expected %d)\n", + test_name, out.size, raw->size); exit(1); } if (memcmp(raw->data, out.data, out.size) != 0) { - fail("%s: gnutls_pem_base64_decode2: output does not match the expected\n", test_name); + fail("%s: gnutls_pem_base64_decode2: output does not match the expected\n", + test_name); exit(1); } @@ -125,7 +132,7 @@ static void decode(const char *test_name, const gnutls_datum_t * raw, in.size = strlen(hex); ret = gnutls_pem_base64_decode2(NULL, &in, &out); if (ret < 0) { - if (res == ret) /* expected */ + if (res == ret) /* expected */ return; fail("%s: gnutls_pem_base64_decode2: %d/%s\n", test_name, ret, gnutls_strerror(ret)); @@ -133,17 +140,20 @@ static void decode(const char *test_name, const gnutls_datum_t * raw, } if (res != 0) { - fail("%s: gnutls_pem_base64_decode2: expected failure, but succeeded!\n", test_name); + fail("%s: gnutls_pem_base64_decode2: expected failure, but succeeded!\n", + test_name); exit(1); } if (raw->size != out.size) { - fail("%s: gnutls_pem_base64_decode2: output has incorrect size (%d, expected %d)\n", test_name, out.size, raw->size); + fail("%s: gnutls_pem_base64_decode2: output has incorrect size (%d, expected %d)\n", + test_name, out.size, raw->size); exit(1); } if (memcmp(raw->data, out.data, out.size) != 0) { - fail("%s: gnutls_pem_base64_decode2: output does not match the expected\n", test_name); + fail("%s: gnutls_pem_base64_decode2: output does not match the expected\n", + test_name); exit(1); } @@ -159,22 +169,18 @@ struct encode_tests_st { }; struct encode_tests_st encode_tests[] = { - { - .name = "rnd1", - .pem = "-----BEGIN rnd1-----\n" - "9ppGioRpeiiD2lLNYC85eA==\n" "-----END rnd1-----\n", - .raw = {(void *) - "\xf6\x9a\x46\x8a\x84\x69\x7a\x28\x83\xda\x52\xcd\x60\x2f\x39\x78", - 16} - }, - { - .name = "rnd2", - .pem = "-----BEGIN rnd2-----\n" - "LJ/7hUZ3TtPIz2dlc5+YvELe+Q==\n" "-----END rnd2-----\n", - .raw = {(void *) - "\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", - 19} - } + { .name = "rnd1", + .pem = "-----BEGIN rnd1-----\n" + "9ppGioRpeiiD2lLNYC85eA==\n" + "-----END rnd1-----\n", + .raw = { (void *)"\xf6\x9a\x46\x8a\x84\x69\x7a\x28\x83\xda\x52\xcd\x60\x2f\x39\x78", + 16 } }, + { .name = "rnd2", + .pem = "-----BEGIN rnd2-----\n" + "LJ/7hUZ3TtPIz2dlc5+YvELe+Q==\n" + "-----END rnd2-----\n", + .raw = { (void *)"\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", + 19 } } }; struct decode_tests_st { @@ -186,60 +192,53 @@ struct decode_tests_st { }; struct decode_tests_st decode_tests[] = { - { - .name = "dec-rnd1", - .pem = "-----BEGIN dec-rnd1-----\n" - "9ppGioRpeiiD2lLNYC85eA==\n" "-----END rnd1-----\n", - .raw = {(void *) - "\xf6\x9a\x46\x8a\x84\x69\x7a\x28\x83\xda\x52\xcd\x60\x2f\x39\x78", - 16}, - .res = 0}, - { - .name = "dec-rnd2", - .pem = "-----BEGIN dec-rnd2-----\n" - "LJ/7hUZ3TtPIz2dlc5+YvELe+Q==\n" "-----END rnd2-----\n", - .raw = {(void *) - "\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", - 19}, - .res = 0}, - { - .name = "dec-extra-chars", - .pem = "-----BEGIN dec-extra-chars----- \n\n" - "\n\n LJ/7hUZ3TtPIz2dlc5+YvELe+Q== \n" " -----END rnd2----- \n ", - .raw = {(void *) - "\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", - 19}, - .res = 0}, - { - .name = "dec-invalid-header", - .pem = "-----BEGIN dec-xxx-----\n" - "LJ/7hUZ3TtPIz2dlc5+YvELe+Q==\n" "-----END rnd2-----\n", - .raw = {(void *) - "\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", - 19}, - .res = GNUTLS_E_BASE64_UNEXPECTED_HEADER_ERROR}, - { - .name = "dec-invalid-data", - .pem = "-----BEGIN dec-invalid-data-----\n" - "XLJ/7hUZ3TtPIz2dlc5+YvELe+Q==\n" "-----END rnd2-----\n", - .raw = {(void *) - "\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", - 19}, - .res = GNUTLS_E_BASE64_DECODING_ERROR}, - { - .name = "leak1", - .pem = "-----BEGIN leak1-----E-\x00\x00-----END ", - .pem_size = 34, - .raw = {(void *)"", 0}, - .res = GNUTLS_E_BASE64_DECODING_ERROR}, - { - .name = "dec-invalid-suffix", - .pem = "-----BEGIN dec-invalid-suffix-----\n" - "LJ/7hUZ3TtPIz2dlc5+YvELe+Q==XXX\n" "-----END rnd2-----\n", - .raw = {(void *) - "\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", - 19}, - .res = GNUTLS_E_BASE64_DECODING_ERROR} + { .name = "dec-rnd1", + .pem = "-----BEGIN dec-rnd1-----\n" + "9ppGioRpeiiD2lLNYC85eA==\n" + "-----END rnd1-----\n", + .raw = { (void *)"\xf6\x9a\x46\x8a\x84\x69\x7a\x28\x83\xda\x52\xcd\x60\x2f\x39\x78", + 16 }, + .res = 0 }, + { .name = "dec-rnd2", + .pem = "-----BEGIN dec-rnd2-----\n" + "LJ/7hUZ3TtPIz2dlc5+YvELe+Q==\n" + "-----END rnd2-----\n", + .raw = { (void *)"\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", + 19 }, + .res = 0 }, + { .name = "dec-extra-chars", + .pem = "-----BEGIN dec-extra-chars----- \n\n" + "\n\n LJ/7hUZ3TtPIz2dlc5+YvELe+Q== \n" + " -----END rnd2----- \n ", + .raw = { (void *)"\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", + 19 }, + .res = 0 }, + { .name = "dec-invalid-header", + .pem = "-----BEGIN dec-xxx-----\n" + "LJ/7hUZ3TtPIz2dlc5+YvELe+Q==\n" + "-----END rnd2-----\n", + .raw = { (void *)"\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", + 19 }, + .res = GNUTLS_E_BASE64_UNEXPECTED_HEADER_ERROR }, + { .name = "dec-invalid-data", + .pem = "-----BEGIN dec-invalid-data-----\n" + "XLJ/7hUZ3TtPIz2dlc5+YvELe+Q==\n" + "-----END rnd2-----\n", + .raw = { (void *)"\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", + 19 }, + .res = GNUTLS_E_BASE64_DECODING_ERROR }, + { .name = "leak1", + .pem = "-----BEGIN leak1-----E-\x00\x00-----END ", + .pem_size = 34, + .raw = { (void *)"", 0 }, + .res = GNUTLS_E_BASE64_DECODING_ERROR }, + { .name = "dec-invalid-suffix", + .pem = "-----BEGIN dec-invalid-suffix-----\n" + "LJ/7hUZ3TtPIz2dlc5+YvELe+Q==XXX\n" + "-----END rnd2-----\n", + .raw = { (void *)"\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", + 19 }, + .res = GNUTLS_E_BASE64_DECODING_ERROR } }; void doit(void) diff --git a/tests/buffer.c b/tests/buffer.c index e41e65e037..59a6829c17 100644 --- a/tests/buffer.c +++ b/tests/buffer.c @@ -18,7 +18,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -34,12 +34,30 @@ void doit(void) const char *input; const char *output; } test_data[] = { - {"%20%20", " ",}, - {"%20", " ",}, - {"%2z", "%2z",}, - {"%2", "%2",}, - {"%", "%",}, - {"", "",}, + { + "%20%20", + " ", + }, + { + "%20", + " ", + }, + { + "%2z", + "%2z", + }, + { + "%2", + "%2", + }, + { + "%", + "%", + }, + { + "", + "", + }, }; for (unsigned it = 0; it < countof(test_data); it++) { @@ -49,9 +67,8 @@ void doit(void) _gnutls_buffer_init(&str); - ret = - _gnutls_buffer_append_data(&str, t->input, - strlen(t->input)); + ret = _gnutls_buffer_append_data(&str, t->input, + strlen(t->input)); if (ret < 0) fail("_gnutls_buffer_append_str: %s\n", gnutls_strerror(ret)); diff --git a/tests/cert-common.h b/tests/cert-common.h index 619216e433..33b3ee3b68 100644 --- a/tests/cert-common.h +++ b/tests/cert-common.h @@ -20,9 +20,9 @@ */ #ifndef GNUTLS_TESTS_CERT_COMMON_H -# define GNUTLS_TESTS_CERT_COMMON_H +#define GNUTLS_TESTS_CERT_COMMON_H -# include +#include /* This file contains a lot of common parameters used by legacy and new * tests. The recommended to use for new tests are: @@ -52,1217 +52,1226 @@ */ static char ecc_key[] = - "-----BEGIN EC PRIVATE KEY-----\n" - "MHgCAQEEIQD9KwCA8zZfETJl440wMztH9c74E+VMws/96AVqyslBsaAKBggqhkjO\n" - "PQMBB6FEA0IABDwVbx1IPmRZEyxtBBo4DTBc5D9Vy9kXFUZycZLB+MYzPQQuyMEP\n" - "wFAEe5/JSLVA+m+TgllhXnJXy4MGvcyClME=\n" "-----END EC PRIVATE KEY-----\n"; + "-----BEGIN EC PRIVATE KEY-----\n" + "MHgCAQEEIQD9KwCA8zZfETJl440wMztH9c74E+VMws/96AVqyslBsaAKBggqhkjO\n" + "PQMBB6FEA0IABDwVbx1IPmRZEyxtBBo4DTBc5D9Vy9kXFUZycZLB+MYzPQQuyMEP\n" + "wFAEe5/JSLVA+m+TgllhXnJXy4MGvcyClME=\n" + "-----END EC PRIVATE KEY-----\n"; static char ecc_cert[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIC4DCCAoagAwIBAgIBBzAKBggqhkjOPQQDAjB9MQswCQYDVQQGEwJCRTEPMA0G\n" - "A1UEChMGR251VExTMSUwIwYDVQQLExxHbnVUTFMgY2VydGlmaWNhdGUgYXV0aG9y\n" - "aXR5MQ8wDQYDVQQIEwZMZXV2ZW4xJTAjBgNVBAMTHEdudVRMUyBjZXJ0aWZpY2F0\n" - "ZSBhdXRob3JpdHkwIhgPMjAxMjA5MDEwOTIyMzZaGA8yMDE5MTAwNTA5MjIzNlow\n" - "gbgxCzAJBgNVBAYTAkdSMRIwEAYDVQQKEwlLb2tvIGluYy4xFzAVBgNVBAsTDnNs\n" - "ZWVwaW5nIGRlcHQuMQ8wDQYDVQQIEwZBdHRpa2kxFTATBgNVBAMTDENpbmR5IExh\n" - "dXBlcjEXMBUGCgmSJomT8ixkAQETB2NsYXVwZXIxDDAKBgNVBAwTA0RyLjEPMA0G\n" - "A1UEQRMGamFja2FsMRwwGgYJKoZIhvcNAQkBFg1ub25lQG5vbmUub3JnMFkwEwYH\n" - "KoZIzj0CAQYIKoZIzj0DAQcDQgAEPBVvHUg+ZFkTLG0EGjgNMFzkP1XL2RcVRnJx\n" - "ksH4xjM9BC7IwQ/AUAR7n8lItUD6b5OCWWFeclfLgwa9zIKUwaOBtjCBszAMBgNV\n" - "HRMBAf8EAjAAMD0GA1UdEQQ2MDSCDHd3dy5ub25lLm9yZ4ITd3d3Lm1vcmV0aGFu\n" - "b25lLm9yZ4IJbG9jYWxob3N0hwTAqAEBMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA8G\n" - "A1UdDwEB/wQFAwMHgAAwHQYDVR0OBBYEFKz6R2fGG0F5Elf3rAXBUOKO0A5bMB8G\n" - "A1UdIwQYMBaAFPC0gf6YEr+1KLlkQAPLzB9mTigDMAoGCCqGSM49BAMCA0gAMEUC\n" - "ICgq4CTInkRQ1DaFoI8wmu2KP8445NWRXKouag2WJSFzAiEAx4KxaoZJNVfBBSc4\n" - "bA9XTz/2OnpgAZutUohNNb/tmRE=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_ecc_cert = - { (unsigned char *)ecc_cert, sizeof(ecc_cert) - 1 }; - -const gnutls_datum_t server_ecc_key = - { (unsigned char *)ecc_key, sizeof(ecc_key) - 1 }; + "-----BEGIN CERTIFICATE-----\n" + "MIIC4DCCAoagAwIBAgIBBzAKBggqhkjOPQQDAjB9MQswCQYDVQQGEwJCRTEPMA0G\n" + "A1UEChMGR251VExTMSUwIwYDVQQLExxHbnVUTFMgY2VydGlmaWNhdGUgYXV0aG9y\n" + "aXR5MQ8wDQYDVQQIEwZMZXV2ZW4xJTAjBgNVBAMTHEdudVRMUyBjZXJ0aWZpY2F0\n" + "ZSBhdXRob3JpdHkwIhgPMjAxMjA5MDEwOTIyMzZaGA8yMDE5MTAwNTA5MjIzNlow\n" + "gbgxCzAJBgNVBAYTAkdSMRIwEAYDVQQKEwlLb2tvIGluYy4xFzAVBgNVBAsTDnNs\n" + "ZWVwaW5nIGRlcHQuMQ8wDQYDVQQIEwZBdHRpa2kxFTATBgNVBAMTDENpbmR5IExh\n" + "dXBlcjEXMBUGCgmSJomT8ixkAQETB2NsYXVwZXIxDDAKBgNVBAwTA0RyLjEPMA0G\n" + "A1UEQRMGamFja2FsMRwwGgYJKoZIhvcNAQkBFg1ub25lQG5vbmUub3JnMFkwEwYH\n" + "KoZIzj0CAQYIKoZIzj0DAQcDQgAEPBVvHUg+ZFkTLG0EGjgNMFzkP1XL2RcVRnJx\n" + "ksH4xjM9BC7IwQ/AUAR7n8lItUD6b5OCWWFeclfLgwa9zIKUwaOBtjCBszAMBgNV\n" + "HRMBAf8EAjAAMD0GA1UdEQQ2MDSCDHd3dy5ub25lLm9yZ4ITd3d3Lm1vcmV0aGFu\n" + "b25lLm9yZ4IJbG9jYWxob3N0hwTAqAEBMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA8G\n" + "A1UdDwEB/wQFAwMHgAAwHQYDVR0OBBYEFKz6R2fGG0F5Elf3rAXBUOKO0A5bMB8G\n" + "A1UdIwQYMBaAFPC0gf6YEr+1KLlkQAPLzB9mTigDMAoGCCqGSM49BAMCA0gAMEUC\n" + "ICgq4CTInkRQ1DaFoI8wmu2KP8445NWRXKouag2WJSFzAiEAx4KxaoZJNVfBBSc4\n" + "bA9XTz/2OnpgAZutUohNNb/tmRE=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_ecc_cert = { (unsigned char *)ecc_cert, + sizeof(ecc_cert) - 1 }; + +const gnutls_datum_t server_ecc_key = { (unsigned char *)ecc_key, + sizeof(ecc_key) - 1 }; /* A cert-key pair */ static char pem1_cert[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICHjCCAYmgAwIBAgIERiYdNzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTI3WhcNMDgwNDE3MTMyOTI3WjAdMRsw\n" - "GQYDVQQDExJHbnVUTFMgdGVzdCBjbGllbnQwgZwwCwYJKoZIhvcNAQEBA4GMADCB\n" - "iAKBgLtmQ/Xyxde2jMzF3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeL\n" - "ZIkiW8DdU3w77XwEu4C5KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKN\n" - "zj2AC41179gAgY8oBAOgIo1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjdjB0MAwG\n" - "A1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUDAweg\n" - "ADAdBgNVHQ4EFgQUTLkKm/odNON+3svSBxX+odrLaJEwHwYDVR0jBBgwFoAU6Twc\n" - "+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBALujmBJVZnvaTXr9cFRJ\n" - "jpfc/3X7sLUsMvumcDE01ls/cG5mIatmiyEU9qI3jbgUf82z23ON/acwJf875D3/\n" - "U7jyOsBJ44SEQITbin2yUeJMIm1tievvdNXBDfW95AM507ShzP12sfiJkJfjjdhy\n" - "dc8Siq5JojruiMizAf0pA7in\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIICHjCCAYmgAwIBAgIERiYdNzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTI3WhcNMDgwNDE3MTMyOTI3WjAdMRsw\n" + "GQYDVQQDExJHbnVUTFMgdGVzdCBjbGllbnQwgZwwCwYJKoZIhvcNAQEBA4GMADCB\n" + "iAKBgLtmQ/Xyxde2jMzF3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeL\n" + "ZIkiW8DdU3w77XwEu4C5KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKN\n" + "zj2AC41179gAgY8oBAOgIo1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjdjB0MAwG\n" + "A1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUDAweg\n" + "ADAdBgNVHQ4EFgQUTLkKm/odNON+3svSBxX+odrLaJEwHwYDVR0jBBgwFoAU6Twc\n" + "+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBALujmBJVZnvaTXr9cFRJ\n" + "jpfc/3X7sLUsMvumcDE01ls/cG5mIatmiyEU9qI3jbgUf82z23ON/acwJf875D3/\n" + "U7jyOsBJ44SEQITbin2yUeJMIm1tievvdNXBDfW95AM507ShzP12sfiJkJfjjdhy\n" + "dc8Siq5JojruiMizAf0pA7in\n" + "-----END CERTIFICATE-----\n"; static char pem1_key[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" - "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" - "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" - "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" - "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" - "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" - "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" - "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" - "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" - "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" - "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" - "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" - "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t cert_dat = - { (unsigned char *)pem1_cert, sizeof(pem1_cert) - 1 }; - -const gnutls_datum_t key_dat = - { (unsigned char *)pem1_key, sizeof(pem1_key) - 1 }; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" + "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" + "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" + "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" + "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" + "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" + "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" + "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" + "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" + "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" + "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" + "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" + "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t cert_dat = { (unsigned char *)pem1_cert, + sizeof(pem1_cert) - 1 }; + +const gnutls_datum_t key_dat = { (unsigned char *)pem1_key, + sizeof(pem1_key) - 1 }; /* A server cert/key pair with CA */ static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIDIzCCAgugAwIBAgIMUz8PCR2sdRK56V6OMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTEwIhgPMjAxNDA0MDQxOTU5MDVaGA85OTk5MTIzMTIzNTk1OVow\n" - "EzERMA8GA1UEAxMIc2VydmVyLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" - "AoIBAQDZ3dCzh9gOTOiOb2dtrPu91fYYgC/ey0ACYjQxaru7FZwnuXPhQK9KHsIV\n" - "YRIyo49wjKZddkHet2sbpFAAeETZh8UUWLRb/mupyaSJMycaYCNjLZCUJTztvXxJ\n" - "CCNfbtgvKC+Vu1mu94KBPatslgvnsamH7AiL5wmwRRqdH/Z93XaEvuRG6Zk0Sh9q\n" - "ZMdCboGfjtmGEJ1V+z5CR+IyH4sckzd8WJW6wBSEwgliGaXnc75xKtFWBZV2njNr\n" - "8V1TOYOdLEbiF4wduVExL5TKq2ywNkRpUfK2I1BcWS5D9Te/QT7aSdE08rL6ztmZ\n" - "IhILSrMOfoLnJ4lzXspz3XLlEuhnAgMBAAGjdzB1MAwGA1UdEwEB/wQCMAAwFAYD\n" - "VR0RBA0wC4IJbG9jYWxob3N0MA8GA1UdDwEB/wQFAwMHoAAwHQYDVR0OBBYEFJXR\n" - "raRS5MVhEqaRE42A3S2BIj7UMB8GA1UdIwQYMBaAFP6S7AyMRO2RfkANgo8YsCl8\n" - "JfJkMA0GCSqGSIb3DQEBCwUAA4IBAQCQ62+skMVZYrGbpab8RI9IG6xH8kEndvFj\n" - "J7wBBZCOlcjOj+HQ7a2buF5zGKRwAOSznKcmvZ7l5DPdsd0t5/VT9LKSbQ6+CfGr\n" - "Xs5qPaDJnRhZkOILCvXJ9qyO+79WNMsg9pWnxkTK7aWR5OYE+1Qw1jG681HMkWTm\n" - "nt7et9bdiNNpvA+L55569XKbdtJLs3hn5gEQFgS7EaEj59aC4vzSTFcidowCoa43\n" - "7JmfSfC9YaAIFH2vriyU0QNf2y7cG5Hpkge+U7uMzQrsT77Q3SDB9WkyPAFNSB4Q\n" - "B/r+OtZXOnQhLlMV7h4XGlWruFEaOBVjFHSdMGUh+DtaLvd1bVXI\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIDATCCAemgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTQwNDA0MTk1OTA1WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDvhyQfsUm3T0xK\n" - "jiBXO3H6Y27b7lmCRYZQCmXCl2sUsGDL7V9biavTt3+sorWtH542/cTGDh5n8591\n" - "7rVxAB/VASmN55O3fjZyFGrjusjhXBla0Yxe5rZ/7/Pjrq84T7gc/IXiX9Sums/c\n" - "o9AeoykfhsjV2ubhh4h+8uPsHDTcAFTxq3mQaoldwnW2nmjDFzaKLtQdnyFf41o6\n" - "nsJCK/J9PtpdCID5Zb+eQfu5Yhk1iUHe8a9TOstCHtgBq61YzufDHUQk3zsT+VZM\n" - "20lDvSBnHdWLjxoea587JbkvtH8xRR8ThwABSb98qPnhJ8+A7mpO89QO1wxZM85A\n" - "xEweQlMHAgMBAAGjZDBiMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" - "ADAdBgNVHQ4EFgQU/pLsDIxE7ZF+QA2CjxiwKXwl8mQwHwYDVR0jBBgwFoAUGD0R\n" - "Yr2H7kfjQUcBMxSTCDQnhu0wDQYJKoZIhvcNAQELBQADggEBANEXLUV+Z1PGTn7M\n" - "3rPT/m/EamcrZJ3vFWrnfN91ws5llyRUKNhx6222HECh3xRSxH9YJONsbv2zY6sd\n" - "ztY7lvckL4xOgWAjoCVTx3hqbZjDxpLRsvraw1PlqBHlRQVWLKlEQ55+tId2zgMX\n" - "Z+wxM7FlU/6yWVPODIxrqYQd2KqaEp4aLIklw6Hi4HD6DnQJikjsJ6Noe0qyX1Tx\n" - "uZ8mgP/G47Fe2d2H29kJ1iJ6hp1XOqyWrVIh/jONcnTvWS8aMqS3MU0EJH2Pb1Qa\n" - "KGIvbd/3H9LykFTP/b7Imdv2fZxXIK8jC+jbF1w6rdBCVNA0p30X/jonoC3vynEK\n" - "5cK0cgs=\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIDIzCCAgugAwIBAgIMUz8PCR2sdRK56V6OMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTEwIhgPMjAxNDA0MDQxOTU5MDVaGA85OTk5MTIzMTIzNTk1OVow\n" + "EzERMA8GA1UEAxMIc2VydmVyLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" + "AoIBAQDZ3dCzh9gOTOiOb2dtrPu91fYYgC/ey0ACYjQxaru7FZwnuXPhQK9KHsIV\n" + "YRIyo49wjKZddkHet2sbpFAAeETZh8UUWLRb/mupyaSJMycaYCNjLZCUJTztvXxJ\n" + "CCNfbtgvKC+Vu1mu94KBPatslgvnsamH7AiL5wmwRRqdH/Z93XaEvuRG6Zk0Sh9q\n" + "ZMdCboGfjtmGEJ1V+z5CR+IyH4sckzd8WJW6wBSEwgliGaXnc75xKtFWBZV2njNr\n" + "8V1TOYOdLEbiF4wduVExL5TKq2ywNkRpUfK2I1BcWS5D9Te/QT7aSdE08rL6ztmZ\n" + "IhILSrMOfoLnJ4lzXspz3XLlEuhnAgMBAAGjdzB1MAwGA1UdEwEB/wQCMAAwFAYD\n" + "VR0RBA0wC4IJbG9jYWxob3N0MA8GA1UdDwEB/wQFAwMHoAAwHQYDVR0OBBYEFJXR\n" + "raRS5MVhEqaRE42A3S2BIj7UMB8GA1UdIwQYMBaAFP6S7AyMRO2RfkANgo8YsCl8\n" + "JfJkMA0GCSqGSIb3DQEBCwUAA4IBAQCQ62+skMVZYrGbpab8RI9IG6xH8kEndvFj\n" + "J7wBBZCOlcjOj+HQ7a2buF5zGKRwAOSznKcmvZ7l5DPdsd0t5/VT9LKSbQ6+CfGr\n" + "Xs5qPaDJnRhZkOILCvXJ9qyO+79WNMsg9pWnxkTK7aWR5OYE+1Qw1jG681HMkWTm\n" + "nt7et9bdiNNpvA+L55569XKbdtJLs3hn5gEQFgS7EaEj59aC4vzSTFcidowCoa43\n" + "7JmfSfC9YaAIFH2vriyU0QNf2y7cG5Hpkge+U7uMzQrsT77Q3SDB9WkyPAFNSB4Q\n" + "B/r+OtZXOnQhLlMV7h4XGlWruFEaOBVjFHSdMGUh+DtaLvd1bVXI\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIDATCCAemgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwNDA0MTk1OTA1WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDvhyQfsUm3T0xK\n" + "jiBXO3H6Y27b7lmCRYZQCmXCl2sUsGDL7V9biavTt3+sorWtH542/cTGDh5n8591\n" + "7rVxAB/VASmN55O3fjZyFGrjusjhXBla0Yxe5rZ/7/Pjrq84T7gc/IXiX9Sums/c\n" + "o9AeoykfhsjV2ubhh4h+8uPsHDTcAFTxq3mQaoldwnW2nmjDFzaKLtQdnyFf41o6\n" + "nsJCK/J9PtpdCID5Zb+eQfu5Yhk1iUHe8a9TOstCHtgBq61YzufDHUQk3zsT+VZM\n" + "20lDvSBnHdWLjxoea587JbkvtH8xRR8ThwABSb98qPnhJ8+A7mpO89QO1wxZM85A\n" + "xEweQlMHAgMBAAGjZDBiMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" + "ADAdBgNVHQ4EFgQU/pLsDIxE7ZF+QA2CjxiwKXwl8mQwHwYDVR0jBBgwFoAUGD0R\n" + "Yr2H7kfjQUcBMxSTCDQnhu0wDQYJKoZIhvcNAQELBQADggEBANEXLUV+Z1PGTn7M\n" + "3rPT/m/EamcrZJ3vFWrnfN91ws5llyRUKNhx6222HECh3xRSxH9YJONsbv2zY6sd\n" + "ztY7lvckL4xOgWAjoCVTx3hqbZjDxpLRsvraw1PlqBHlRQVWLKlEQ55+tId2zgMX\n" + "Z+wxM7FlU/6yWVPODIxrqYQd2KqaEp4aLIklw6Hi4HD6DnQJikjsJ6Noe0qyX1Tx\n" + "uZ8mgP/G47Fe2d2H29kJ1iJ6hp1XOqyWrVIh/jONcnTvWS8aMqS3MU0EJH2Pb1Qa\n" + "KGIvbd/3H9LykFTP/b7Imdv2fZxXIK8jC+jbF1w6rdBCVNA0p30X/jonoC3vynEK\n" + "5cK0cgs=\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) - 1 -}; + sizeof(server_cert_pem) - 1 }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIEpQIBAAKCAQEA2d3Qs4fYDkzojm9nbaz7vdX2GIAv3stAAmI0MWq7uxWcJ7lz\n" - "4UCvSh7CFWESMqOPcIymXXZB3rdrG6RQAHhE2YfFFFi0W/5rqcmkiTMnGmAjYy2Q\n" - "lCU87b18SQgjX27YLygvlbtZrveCgT2rbJYL57Gph+wIi+cJsEUanR/2fd12hL7k\n" - "RumZNEofamTHQm6Bn47ZhhCdVfs+QkfiMh+LHJM3fFiVusAUhMIJYhml53O+cSrR\n" - "VgWVdp4za/FdUzmDnSxG4heMHblRMS+UyqtssDZEaVHytiNQXFkuQ/U3v0E+2knR\n" - "NPKy+s7ZmSISC0qzDn6C5yeJc17Kc91y5RLoZwIDAQABAoIBAQCRXAu5HPOsZufq\n" - "0K2DYZz9BdqSckR+M8HbVUZZiksDAeIUJwoHyi6qF2eK+B86JiK4Bz+gsBw2ys3t\n" - "vW2bQqM9N/boIl8D2fZfbCgZWkXGtUonC+mgzk+el4Rq/cEMFVqr6/YDwuKNeJpc\n" - "PJc5dcsvpTvlcjgpj9bJAvJEz2SYiIUpvtG4WNMGGapVZZPDvWn4/isY+75T5oDf\n" - "1X5jG0lN9uoUjcuGuThN7gxjwlRkcvEOPHjXc6rxfrWIDdiz/91V46PwpqVDpRrg\n" - "ig6U7+ckS0Oy2v32x0DaDhwAfDJ2RNc9az6Z+11lmY3LPkjG/p8Klcmgvt4/lwkD\n" - "OYRC5QGRAoGBAPFdud6nmVt9h1DL0o4R6snm6P3K81Ds765VWVmpzJkK3+bwe4PQ\n" - "GQQ0I0zN4hXkDMwHETS+EVWllqkK/d4dsE3volYtyTti8zthIATlgSEJ81x/ChAQ\n" - "vvXxgx+zPUnb1mUwy+X+6urTHe4bxN2ypg6ROIUmT+Hx1ITG40LRRiPTAoGBAOcT\n" - "WR8DTrj42xbxAUpz9vxJ15ZMwuIpk3ShE6+CWqvaXHF22Ju4WFwRNlW2zVLH6UMt\n" - "nNfOzyDoryoiu0+0mg0wSmgdJbtCSHoI2GeiAnjGn5i8flQlPQ8bdwwmU6g6I/EU\n" - "QRbGK/2XLmlrGN52gVy9UX0NsAA5fEOsAJiFj1CdAoGBAN9i3nbq6O2bNVSa/8mL\n" - "XaD1vGe/oQgh8gaIaYSpuXlfbjCAG+C4BZ81XgJkfj3CbfGbDNqimsqI0fKsAJ/F\n" - "HHpVMgrOn3L+Np2bW5YMj0Fzwy+1SCvsQ8C+gJwjOLMV6syGp/+6udMSB55rRv3k\n" - "rPnIf+YDumUke4tTw9wAcgkPAoGASHMkiji7QfuklbjSsslRMyDj21gN8mMevH6U\n" - "cX7pduBsA5dDqu9NpPAwnQdHsSDE3i868d8BykuqQAfLut3hPylY6vPYlLHfj4Oe\n" - "dj+xjrSX7YeMBE34qvfth32s1R4FjtzO25keyc/Q2XSew4FcZftlxVO5Txi3AXC4\n" - "bxnRKXECgYEAva+og7/rK+ZjboJVNxhFrwHp9bXhz4tzrUaWNvJD2vKJ5ZcThHcX\n" - "zCig8W7eXHLPLDhi9aWZ3kUZ1RLhrFc/6dujtVtU9z2w1tmn1I+4Zi6D6L4DzKdg\n" - "nMRLFoXufs/qoaJTqa8sQvKa+ceJAF04+gGtw617cuaZdZ3SYRLR2dk=\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIIEpQIBAAKCAQEA2d3Qs4fYDkzojm9nbaz7vdX2GIAv3stAAmI0MWq7uxWcJ7lz\n" + "4UCvSh7CFWESMqOPcIymXXZB3rdrG6RQAHhE2YfFFFi0W/5rqcmkiTMnGmAjYy2Q\n" + "lCU87b18SQgjX27YLygvlbtZrveCgT2rbJYL57Gph+wIi+cJsEUanR/2fd12hL7k\n" + "RumZNEofamTHQm6Bn47ZhhCdVfs+QkfiMh+LHJM3fFiVusAUhMIJYhml53O+cSrR\n" + "VgWVdp4za/FdUzmDnSxG4heMHblRMS+UyqtssDZEaVHytiNQXFkuQ/U3v0E+2knR\n" + "NPKy+s7ZmSISC0qzDn6C5yeJc17Kc91y5RLoZwIDAQABAoIBAQCRXAu5HPOsZufq\n" + "0K2DYZz9BdqSckR+M8HbVUZZiksDAeIUJwoHyi6qF2eK+B86JiK4Bz+gsBw2ys3t\n" + "vW2bQqM9N/boIl8D2fZfbCgZWkXGtUonC+mgzk+el4Rq/cEMFVqr6/YDwuKNeJpc\n" + "PJc5dcsvpTvlcjgpj9bJAvJEz2SYiIUpvtG4WNMGGapVZZPDvWn4/isY+75T5oDf\n" + "1X5jG0lN9uoUjcuGuThN7gxjwlRkcvEOPHjXc6rxfrWIDdiz/91V46PwpqVDpRrg\n" + "ig6U7+ckS0Oy2v32x0DaDhwAfDJ2RNc9az6Z+11lmY3LPkjG/p8Klcmgvt4/lwkD\n" + "OYRC5QGRAoGBAPFdud6nmVt9h1DL0o4R6snm6P3K81Ds765VWVmpzJkK3+bwe4PQ\n" + "GQQ0I0zN4hXkDMwHETS+EVWllqkK/d4dsE3volYtyTti8zthIATlgSEJ81x/ChAQ\n" + "vvXxgx+zPUnb1mUwy+X+6urTHe4bxN2ypg6ROIUmT+Hx1ITG40LRRiPTAoGBAOcT\n" + "WR8DTrj42xbxAUpz9vxJ15ZMwuIpk3ShE6+CWqvaXHF22Ju4WFwRNlW2zVLH6UMt\n" + "nNfOzyDoryoiu0+0mg0wSmgdJbtCSHoI2GeiAnjGn5i8flQlPQ8bdwwmU6g6I/EU\n" + "QRbGK/2XLmlrGN52gVy9UX0NsAA5fEOsAJiFj1CdAoGBAN9i3nbq6O2bNVSa/8mL\n" + "XaD1vGe/oQgh8gaIaYSpuXlfbjCAG+C4BZ81XgJkfj3CbfGbDNqimsqI0fKsAJ/F\n" + "HHpVMgrOn3L+Np2bW5YMj0Fzwy+1SCvsQ8C+gJwjOLMV6syGp/+6udMSB55rRv3k\n" + "rPnIf+YDumUke4tTw9wAcgkPAoGASHMkiji7QfuklbjSsslRMyDj21gN8mMevH6U\n" + "cX7pduBsA5dDqu9NpPAwnQdHsSDE3i868d8BykuqQAfLut3hPylY6vPYlLHfj4Oe\n" + "dj+xjrSX7YeMBE34qvfth32s1R4FjtzO25keyc/Q2XSew4FcZftlxVO5Txi3AXC4\n" + "bxnRKXECgYEAva+og7/rK+ZjboJVNxhFrwHp9bXhz4tzrUaWNvJD2vKJ5ZcThHcX\n" + "zCig8W7eXHLPLDhi9aWZ3kUZ1RLhrFc/6dujtVtU9z2w1tmn1I+4Zi6D6L4DzKdg\n" + "nMRLFoXufs/qoaJTqa8sQvKa+ceJAF04+gGtw617cuaZdZ3SYRLR2dk=\n" + "-----END RSA PRIVATE KEY-----\n"; const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) - 1 -}; + sizeof(server_key_pem) - 1 }; static unsigned char ca_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTQwNDA0MTk1OTA1WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD46JAPKrTsNTHl\n" - "zD06eIYBF/8Z+TR0wukp9Cdh8Sw77dODLjy/QrVKiDgDZZdyUc8Agsdr86i95O0p\n" - "w19Np3a0wja0VC9uwppZrpuHsrWukwxIBXoViyBc20Y6Ce8j0scCbR10SP565qXC\n" - "i8vr86S4xmQMRZMtwohP/GWQzt45jqkHPYHjdKzwo2b2XI7joDq0dvbr3MSONkGs\n" - "z7A/1Bl3iH5keDTWjqpJRWqXE79IhGOhELy+gG4VLJDGHWCr2mq24b9Kirp+TTxl\n" - "lUwJRbchqUqerlFdt1NgDoGaJyd73Sh0qcZzmEiOI2hGvBtG86tdQ6veC9dl05et\n" - "pM+6RMABAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" - "ADAdBgNVHQ4EFgQUGD0RYr2H7kfjQUcBMxSTCDQnhu0wDQYJKoZIhvcNAQELBQAD\n" - "ggEBALnHMubZ6WJ/XOFyDuo0imwg2onrPas3MuKT4+y0aHY943BgAOEc3jKitRjc\n" - "qhb0IUD+NS7itRwNtCgI3v5Ym5nnQoVk+aOD/D724TjJ9XaPQJzOnuGaZX99VN2F\n" - "sgwAtDXedlDQ+I6KLzLd6VW+UyWTG4qiRjOGDnG2kM1wAEOM27TzHV/YWleGjhtA\n" - "bRHxkioOni5goNlTzazxF4v9VD2uinWrIFyZmF6vQuMm6rKFgq6higAU8uesFo7+\n" - "3qpeRjNrPC4fNJUBvv+PC0WnP0PLnD/rY/ZcTYjLb/vJp1fiMJ5fU7jJklBhX2TE\n" - "tstcP7FUV5HA/s9BxgAh0Z2wyyY=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t ca_cert = { ca_cert_pem, - sizeof(ca_cert_pem) - 1 -}; + "-----BEGIN CERTIFICATE-----\n" + "MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwNDA0MTk1OTA1WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD46JAPKrTsNTHl\n" + "zD06eIYBF/8Z+TR0wukp9Cdh8Sw77dODLjy/QrVKiDgDZZdyUc8Agsdr86i95O0p\n" + "w19Np3a0wja0VC9uwppZrpuHsrWukwxIBXoViyBc20Y6Ce8j0scCbR10SP565qXC\n" + "i8vr86S4xmQMRZMtwohP/GWQzt45jqkHPYHjdKzwo2b2XI7joDq0dvbr3MSONkGs\n" + "z7A/1Bl3iH5keDTWjqpJRWqXE79IhGOhELy+gG4VLJDGHWCr2mq24b9Kirp+TTxl\n" + "lUwJRbchqUqerlFdt1NgDoGaJyd73Sh0qcZzmEiOI2hGvBtG86tdQ6veC9dl05et\n" + "pM+6RMABAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" + "ADAdBgNVHQ4EFgQUGD0RYr2H7kfjQUcBMxSTCDQnhu0wDQYJKoZIhvcNAQELBQAD\n" + "ggEBALnHMubZ6WJ/XOFyDuo0imwg2onrPas3MuKT4+y0aHY943BgAOEc3jKitRjc\n" + "qhb0IUD+NS7itRwNtCgI3v5Ym5nnQoVk+aOD/D724TjJ9XaPQJzOnuGaZX99VN2F\n" + "sgwAtDXedlDQ+I6KLzLd6VW+UyWTG4qiRjOGDnG2kM1wAEOM27TzHV/YWleGjhtA\n" + "bRHxkioOni5goNlTzazxF4v9VD2uinWrIFyZmF6vQuMm6rKFgq6higAU8uesFo7+\n" + "3qpeRjNrPC4fNJUBvv+PC0WnP0PLnD/rY/ZcTYjLb/vJp1fiMJ5fU7jJklBhX2TE\n" + "tstcP7FUV5HA/s9BxgAh0Z2wyyY=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t ca_cert = { ca_cert_pem, sizeof(ca_cert_pem) - 1 }; /* A server cert/key pair with CA */ static unsigned char server2_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIEITCCAomgAwIBAgIMVmajOA3Gh2967f62MA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTAwIBcNMTUxMjA4MDkzMDMyWhgPOTk5OTEyMzEyMzU5NTlaMBMx\n" - "ETAPBgNVBAMTCHNlcnZlci0xMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKC\n" - "AYEApk9rgAWlVEGy9t5Nn9RsvupM3JATJe2ONeGgMjAT++rgjsENwjqNNmEFLZjx\n" - "8VfRjnHoVEIWvMJqeaAeBwP7GiKiDiLkHEK4ZwjJZ7aqy0KIRktDLWvJrZdoJryt\n" - "yMikKVhPHQ9qwh6JRA3qx1FiEcW7ahU2U4/r/fydiUC0wec2UhBd4AJyXzYvFO7o\n" - "SKPkQfzlGBNT55z/Wp9zfOO1w2x/++I+1AoKFFJ1dRI3hyrL/DfOUMoeVkJ6knyZ\n" - "N3TQo+ZjbSkLZlpnAoxGSN8uNcX9q91AuM2zQOg1xPD0ZJvLP3j9BOtYQ7rvkX0U\n" - "3efJXXO+Gq4oCKiPU4ZY6u43BquipzEaeZiSWPS6Xj2Ipn+KO0v77NBxhNP3lpfQ\n" - "YDwZbw1AjnViE+WUS8r2DyM47daTGafqUCXM08kSTCrSWSte96P0jHFnyjtPGrwC\n" - "0KQw1ug4nJxFi9FHZyU+IhczvFthocPuKOAq44//zsKKuPKsJIhA4QXfdVVvm4m+\n" - "RoTZAgMBAAGjdzB1MAwGA1UdEwEB/wQCMAAwFAYDVR0RBA0wC4IJbG9jYWxob3N0\n" - "MA8GA1UdDwEB/wQFAwMHoAAwHQYDVR0OBBYEFCWcdf+x5Ge4ec8WGfoWYcNlaEQF\n" - "MB8GA1UdIwQYMBaAFEt2/L3oAu29JvNzjKv/Xavvp0ufMA0GCSqGSIb3DQEBCwUA\n" - "A4IBgQC/vXr2ecuGhAHJaBxWqay3IxyBgoQUxOMkXcXLMILxXGtIKheVZOJnilvU\n" - "K9/fBy7N3ygUemvblNBfDJG+fA5jTmUQC8UEgeStp0iena3iAJxsGikCIAJKGzBk\n" - "LHiPls2z9uLQXO+ZRlK1E+XfB0/3Mu4dPAPM50TLL8jYLfYzZZchgfhCX51dmic/\n" - "EW4LL+K6LzIHoLV32YEFL9ea4y46Ub0dAX+WEwZYKu5Fu/hk+n34lBYBW1uWzPhK\n" - "JjXVbQQUE4nirzjWr6ch5rDXz1JhhNuuex29EqA3reWtQWnHySU43/uoFxN1jD0r\n" - "bMjyE5li2WU796vKyB0hYBKcOauWJPDdrKFvVs45GH6r84hjAacMq4RKm4P9esuQ\n" - "0GXVaUCLGHP1ss+glFB/k5DJO1nb6hZPOCKsdaO/VbXl5kmcxgvzAoedDTiUJiC5\n" - "URF3vuETfLwew2gE38NrTEPT54S5rYLsp/F6+5nIIhqG0BtaOwIx1VbBlrMnbsx+\n" - "pFLp6h0=\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIID8zCCAlugAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCAXDTE1MTIwODA5MzAzMVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" - "QS0wMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0Q82wj5Dk/me634j\n" - "DnFBbAJ5FGNNeXnBgprRo2tQv8oJYMN/osSVd/03XiWBQnXk7v2aSkfXMqgEAzfv\n" - "0fzWZYyhKSwTvDG48LfnIuF7UrnvnC3xdAOjcQ+E3zUdYYonSn3gRBwIjOK4wFbG\n" - "Q4oelFnPOjWGeasLh++yBNfCa506jgFd9Y1rU5o0r/EIYSQi2aj71E+x3EdkS0Tx\n" - "iKpIGHseuP2ARmmZPLy4YglFBvPiDRi0jdgdWd6UbNk7XJ+xnKa9gVtk3TX7vy5E\n" - "7R1686F66bIe9T1N2Wyf3huJkgwUB2UPpG9rNiOvRLGFxkONeATwiJyzJG9DmtGw\n" - "GbKsyMDU9Rq9Z694tBCnlWlPrQKsZEsnivPIn/2VaANArT1QtsS+EdaXzuIWmIM0\n" - "cdQXf1U1VhzACFpHnFZ6XsOe40qwzj+6RQprHcWnIGP992qiQ6zPF8QPkycTrbhi\n" - "TG7hX59sTTBJva5DNjZnx4H/hOiQub04CMD501JiLQ1ALXGfAgMBAAGjWDBWMA8G\n" - "A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUD\n" - "AwcGADAdBgNVHQ4EFgQUS3b8vegC7b0m83OMq/9dq++nS58wDQYJKoZIhvcNAQEL\n" - "BQADggGBALJv0DUD3Ujb0a9zcgKQIjljFMoA0v5A6+ZoLeHmRTU5udNV9G2AsdSx\n" - "PEH/D7v/GyoR0jApgA0TiAqRuvlc3NsdHBx9tFvgrAFyC7bbJRrf9lP9QlTqkmb7\n" - "a85OYmdiDhtQSyKdtSZpAfP7jVGJqQz5UWbV3CjYfubU+HLIZXEb6m8YCKBFb7l9\n" - "GNrcKK+gFyrQr6KmojzMkJd5PxVBUsYleaf/0QxC7nRbTH/qomJvooI2nLBLA7U3\n" - "VGLL3Og6rpjIWu2dwkvepcnesdrnPq4hJQ+uSfDkthP/qCs/3Nj9bvL73DIAYUc2\n" - "6FUmOK40BRhBhcAIYj+9JDtHncykj0RBjH6eq+goDTSd4gTXmfbzb8p1jjLal8xZ\n" - "PcNzShMpUqkmWe3Otzd98zkOzqiHeO03tBgfA5u+4gInSdQp5eUpE3Uivp9IcNaC\n" - "TMSfIA6roY+p7j1ISlmzXUZuEz9dkJumV0TMmOv6nd+ZufwaDOIuDPad5bG2JFji\n" - "KvV1dLfOfg==\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIEITCCAomgAwIBAgIMVmajOA3Gh2967f62MA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTAwIBcNMTUxMjA4MDkzMDMyWhgPOTk5OTEyMzEyMzU5NTlaMBMx\n" + "ETAPBgNVBAMTCHNlcnZlci0xMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKC\n" + "AYEApk9rgAWlVEGy9t5Nn9RsvupM3JATJe2ONeGgMjAT++rgjsENwjqNNmEFLZjx\n" + "8VfRjnHoVEIWvMJqeaAeBwP7GiKiDiLkHEK4ZwjJZ7aqy0KIRktDLWvJrZdoJryt\n" + "yMikKVhPHQ9qwh6JRA3qx1FiEcW7ahU2U4/r/fydiUC0wec2UhBd4AJyXzYvFO7o\n" + "SKPkQfzlGBNT55z/Wp9zfOO1w2x/++I+1AoKFFJ1dRI3hyrL/DfOUMoeVkJ6knyZ\n" + "N3TQo+ZjbSkLZlpnAoxGSN8uNcX9q91AuM2zQOg1xPD0ZJvLP3j9BOtYQ7rvkX0U\n" + "3efJXXO+Gq4oCKiPU4ZY6u43BquipzEaeZiSWPS6Xj2Ipn+KO0v77NBxhNP3lpfQ\n" + "YDwZbw1AjnViE+WUS8r2DyM47daTGafqUCXM08kSTCrSWSte96P0jHFnyjtPGrwC\n" + "0KQw1ug4nJxFi9FHZyU+IhczvFthocPuKOAq44//zsKKuPKsJIhA4QXfdVVvm4m+\n" + "RoTZAgMBAAGjdzB1MAwGA1UdEwEB/wQCMAAwFAYDVR0RBA0wC4IJbG9jYWxob3N0\n" + "MA8GA1UdDwEB/wQFAwMHoAAwHQYDVR0OBBYEFCWcdf+x5Ge4ec8WGfoWYcNlaEQF\n" + "MB8GA1UdIwQYMBaAFEt2/L3oAu29JvNzjKv/Xavvp0ufMA0GCSqGSIb3DQEBCwUA\n" + "A4IBgQC/vXr2ecuGhAHJaBxWqay3IxyBgoQUxOMkXcXLMILxXGtIKheVZOJnilvU\n" + "K9/fBy7N3ygUemvblNBfDJG+fA5jTmUQC8UEgeStp0iena3iAJxsGikCIAJKGzBk\n" + "LHiPls2z9uLQXO+ZRlK1E+XfB0/3Mu4dPAPM50TLL8jYLfYzZZchgfhCX51dmic/\n" + "EW4LL+K6LzIHoLV32YEFL9ea4y46Ub0dAX+WEwZYKu5Fu/hk+n34lBYBW1uWzPhK\n" + "JjXVbQQUE4nirzjWr6ch5rDXz1JhhNuuex29EqA3reWtQWnHySU43/uoFxN1jD0r\n" + "bMjyE5li2WU796vKyB0hYBKcOauWJPDdrKFvVs45GH6r84hjAacMq4RKm4P9esuQ\n" + "0GXVaUCLGHP1ss+glFB/k5DJO1nb6hZPOCKsdaO/VbXl5kmcxgvzAoedDTiUJiC5\n" + "URF3vuETfLwew2gE38NrTEPT54S5rYLsp/F6+5nIIhqG0BtaOwIx1VbBlrMnbsx+\n" + "pFLp6h0=\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIID8zCCAlugAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCAXDTE1MTIwODA5MzAzMVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0wMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0Q82wj5Dk/me634j\n" + "DnFBbAJ5FGNNeXnBgprRo2tQv8oJYMN/osSVd/03XiWBQnXk7v2aSkfXMqgEAzfv\n" + "0fzWZYyhKSwTvDG48LfnIuF7UrnvnC3xdAOjcQ+E3zUdYYonSn3gRBwIjOK4wFbG\n" + "Q4oelFnPOjWGeasLh++yBNfCa506jgFd9Y1rU5o0r/EIYSQi2aj71E+x3EdkS0Tx\n" + "iKpIGHseuP2ARmmZPLy4YglFBvPiDRi0jdgdWd6UbNk7XJ+xnKa9gVtk3TX7vy5E\n" + "7R1686F66bIe9T1N2Wyf3huJkgwUB2UPpG9rNiOvRLGFxkONeATwiJyzJG9DmtGw\n" + "GbKsyMDU9Rq9Z694tBCnlWlPrQKsZEsnivPIn/2VaANArT1QtsS+EdaXzuIWmIM0\n" + "cdQXf1U1VhzACFpHnFZ6XsOe40qwzj+6RQprHcWnIGP992qiQ6zPF8QPkycTrbhi\n" + "TG7hX59sTTBJva5DNjZnx4H/hOiQub04CMD501JiLQ1ALXGfAgMBAAGjWDBWMA8G\n" + "A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUD\n" + "AwcGADAdBgNVHQ4EFgQUS3b8vegC7b0m83OMq/9dq++nS58wDQYJKoZIhvcNAQEL\n" + "BQADggGBALJv0DUD3Ujb0a9zcgKQIjljFMoA0v5A6+ZoLeHmRTU5udNV9G2AsdSx\n" + "PEH/D7v/GyoR0jApgA0TiAqRuvlc3NsdHBx9tFvgrAFyC7bbJRrf9lP9QlTqkmb7\n" + "a85OYmdiDhtQSyKdtSZpAfP7jVGJqQz5UWbV3CjYfubU+HLIZXEb6m8YCKBFb7l9\n" + "GNrcKK+gFyrQr6KmojzMkJd5PxVBUsYleaf/0QxC7nRbTH/qomJvooI2nLBLA7U3\n" + "VGLL3Og6rpjIWu2dwkvepcnesdrnPq4hJQ+uSfDkthP/qCs/3Nj9bvL73DIAYUc2\n" + "6FUmOK40BRhBhcAIYj+9JDtHncykj0RBjH6eq+goDTSd4gTXmfbzb8p1jjLal8xZ\n" + "PcNzShMpUqkmWe3Otzd98zkOzqiHeO03tBgfA5u+4gInSdQp5eUpE3Uivp9IcNaC\n" + "TMSfIA6roY+p7j1ISlmzXUZuEz9dkJumV0TMmOv6nd+ZufwaDOIuDPad5bG2JFji\n" + "KvV1dLfOfg==\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t server2_cert = { server2_cert_pem, - sizeof(server2_cert_pem) - 1 -}; + sizeof(server2_cert_pem) - 1 }; static unsigned char server2_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIG4wIBAAKCAYEApk9rgAWlVEGy9t5Nn9RsvupM3JATJe2ONeGgMjAT++rgjsEN\n" - "wjqNNmEFLZjx8VfRjnHoVEIWvMJqeaAeBwP7GiKiDiLkHEK4ZwjJZ7aqy0KIRktD\n" - "LWvJrZdoJrytyMikKVhPHQ9qwh6JRA3qx1FiEcW7ahU2U4/r/fydiUC0wec2UhBd\n" - "4AJyXzYvFO7oSKPkQfzlGBNT55z/Wp9zfOO1w2x/++I+1AoKFFJ1dRI3hyrL/DfO\n" - "UMoeVkJ6knyZN3TQo+ZjbSkLZlpnAoxGSN8uNcX9q91AuM2zQOg1xPD0ZJvLP3j9\n" - "BOtYQ7rvkX0U3efJXXO+Gq4oCKiPU4ZY6u43BquipzEaeZiSWPS6Xj2Ipn+KO0v7\n" - "7NBxhNP3lpfQYDwZbw1AjnViE+WUS8r2DyM47daTGafqUCXM08kSTCrSWSte96P0\n" - "jHFnyjtPGrwC0KQw1ug4nJxFi9FHZyU+IhczvFthocPuKOAq44//zsKKuPKsJIhA\n" - "4QXfdVVvm4m+RoTZAgMBAAECggGAS5YpC6SFQcgiaKUcrpnDWvnuOQiaS1Cuo7qK\n" - "LoU/b+2OZhNEB5TI/YAW9GRhAgmhypXmu/TVlLDf56toOlQK2hQHh1lAR7/jQ6Dw\n" - "uNyCv6LbgOdP/uLQZL89rO1wJqNaSRhDzLdnFBcA2BdjL3fDlMRDq7E8Ybo1zdf0\n" - "WZ85CC/ntmCN6fPyu2dK+r6if/FNGtiv3sNaDRiDzlJOEOMFh25WtMpdN83gSuA3\n" - "ViATcLF4yIcsk/do1leckdtjX5sNRIl6b53V0LoXd62BOs9KmrvpZt4MOx8XjPnw\n" - "8P+gvqTA6U7zYGPdIbE6Ri+YJ/NKCND2U02XPdHF2N1TSDafZ7McjHZf53Dr+U2M\n" - "nqLz6wY3SzLR9Puhn9FJHgyBcEaobEDFqWJC3cqNxn1u90bk9XxRflAO99vKb341\n" - "qZXpN+/s9t0z6uL5G6q6s8ta9W0WKuiYelZam91+c6j8BXh1nntfFo7H6UvI8gSl\n" - "axaTwxD3+tEgmpNj9f5+tP75rE1JAoHBAN1vJvnTISX7UEQfgytOszdl90viaSj4\n" - "3gqD0M80OVaYk9ocffIIL/Dv66Wi5Ur9LgEOAfOlA/T67sCKEJ3D227czT0kj17f\n" - "GCWLLlJgNeJ/zbs4eB11ysKPFgW92/NABtyOJBaRHlf2GuGwRGv64kBBdcteg5zQ\n" - "ylNGpgjgf8SGtwIhoOScE9cdpdLO0AeRU/s/bQEnEpAlF08GjuCPjdHPuTVn9/EW\n" - "zlc73WoKUyT6wJsvXMDoiiqDhFvT/C4kvwKBwQDARW4v2SAvxHPPARBCHxre90FL\n" - "B+V+B3MUCP/pySkmVvdmUzm4ftPpIJ5E16ONzH3LYUpSoOIcBgR0ouWawjp3azyf\n" - "U+1k8NT1VCWl745uCMIKT7x3sTqFznkp8UAsE7x2mvD+yze35qSIjaSwDP0IXYQT\n" - "OmsVoY0WkP1OyyqiUObzced/9rWl5ysFa7R9MyXPNS98dViBYx0ORnadBjh7KuuZ\n" - "f9lW2aemW1MGMh2+3dokjpQGo958N9QDaafNRGcCgcAYXvxuMJOMZ52M8d7w7EeD\n" - "SGCwZGnojYN6qslXlMrewgo7zjj6Y3ZLUUyhPU15NGZUzWLfmwDVfKy8WjW792t2\n" - "Ryz7lsOE0I8Kyse9X0Nu+1v8SBnIPEelpDPrS9siaaCXs7k7Fpu9WKPaxRiyvbkb\n" - "E1lQmcVog/5QrgzmGzdUvPL1dBgOMTNp0KSIkCSLQK56j5+Cqfc8ECkBlJozEvmr\n" - "5u3ed+PtD/KD3V3gJuTBxCtgqRTPUoiqZzExHiK6PWcCgcEAguWBy29tWzfKg+48\n" - "bFeSyqLYP8WDdpaJwOUTnMzHiAOC8JXOYQ1vJXKAbWvFPD8wkOqOV8yRwvRRyjow\n" - "SHjcpvpJzkqr/qF6yf5clyiM9dpeh/ia3X250uirUmOdBaT2FGUNltkw+LE76H9N\n" - "1FEzXqOTzCdkSdivHeLdoOvt/Y1IfgpYyaRjLCxB/LHDsczFe9jAmGGnPIcGe/Z6\n" - "wBJBF5Ezzk/c3iTV3wqjbj9mQs/0uBidLBwZ1sWHQD+I7tUXAoHAHXjrwCI5AJTS\n" - "OyK0/85F5x5cbbeWZvU9bgni6IN51j9r12J13qt1bBQE+jQkOKRkvyRtEeQW3Zod\n" - "+zcBcCqU9HSQa7BH7beT6ChEz+lx/OZ+b34MOxwE6BJdQCu1048fD9/xHq8xoQQf\n" - "E+1aSEFaNRfxIOdqNUvyKy+WgWKoMDU96Uw6LU4z9lzOLwKb4LTZhE+qp2lMJ2Ws\n" - "9lH//6DGC2Z42m0Do2uqdxjBclumwqvzdozgsAwKSNkDUMAqPKI5\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIIG4wIBAAKCAYEApk9rgAWlVEGy9t5Nn9RsvupM3JATJe2ONeGgMjAT++rgjsEN\n" + "wjqNNmEFLZjx8VfRjnHoVEIWvMJqeaAeBwP7GiKiDiLkHEK4ZwjJZ7aqy0KIRktD\n" + "LWvJrZdoJrytyMikKVhPHQ9qwh6JRA3qx1FiEcW7ahU2U4/r/fydiUC0wec2UhBd\n" + "4AJyXzYvFO7oSKPkQfzlGBNT55z/Wp9zfOO1w2x/++I+1AoKFFJ1dRI3hyrL/DfO\n" + "UMoeVkJ6knyZN3TQo+ZjbSkLZlpnAoxGSN8uNcX9q91AuM2zQOg1xPD0ZJvLP3j9\n" + "BOtYQ7rvkX0U3efJXXO+Gq4oCKiPU4ZY6u43BquipzEaeZiSWPS6Xj2Ipn+KO0v7\n" + "7NBxhNP3lpfQYDwZbw1AjnViE+WUS8r2DyM47daTGafqUCXM08kSTCrSWSte96P0\n" + "jHFnyjtPGrwC0KQw1ug4nJxFi9FHZyU+IhczvFthocPuKOAq44//zsKKuPKsJIhA\n" + "4QXfdVVvm4m+RoTZAgMBAAECggGAS5YpC6SFQcgiaKUcrpnDWvnuOQiaS1Cuo7qK\n" + "LoU/b+2OZhNEB5TI/YAW9GRhAgmhypXmu/TVlLDf56toOlQK2hQHh1lAR7/jQ6Dw\n" + "uNyCv6LbgOdP/uLQZL89rO1wJqNaSRhDzLdnFBcA2BdjL3fDlMRDq7E8Ybo1zdf0\n" + "WZ85CC/ntmCN6fPyu2dK+r6if/FNGtiv3sNaDRiDzlJOEOMFh25WtMpdN83gSuA3\n" + "ViATcLF4yIcsk/do1leckdtjX5sNRIl6b53V0LoXd62BOs9KmrvpZt4MOx8XjPnw\n" + "8P+gvqTA6U7zYGPdIbE6Ri+YJ/NKCND2U02XPdHF2N1TSDafZ7McjHZf53Dr+U2M\n" + "nqLz6wY3SzLR9Puhn9FJHgyBcEaobEDFqWJC3cqNxn1u90bk9XxRflAO99vKb341\n" + "qZXpN+/s9t0z6uL5G6q6s8ta9W0WKuiYelZam91+c6j8BXh1nntfFo7H6UvI8gSl\n" + "axaTwxD3+tEgmpNj9f5+tP75rE1JAoHBAN1vJvnTISX7UEQfgytOszdl90viaSj4\n" + "3gqD0M80OVaYk9ocffIIL/Dv66Wi5Ur9LgEOAfOlA/T67sCKEJ3D227czT0kj17f\n" + "GCWLLlJgNeJ/zbs4eB11ysKPFgW92/NABtyOJBaRHlf2GuGwRGv64kBBdcteg5zQ\n" + "ylNGpgjgf8SGtwIhoOScE9cdpdLO0AeRU/s/bQEnEpAlF08GjuCPjdHPuTVn9/EW\n" + "zlc73WoKUyT6wJsvXMDoiiqDhFvT/C4kvwKBwQDARW4v2SAvxHPPARBCHxre90FL\n" + "B+V+B3MUCP/pySkmVvdmUzm4ftPpIJ5E16ONzH3LYUpSoOIcBgR0ouWawjp3azyf\n" + "U+1k8NT1VCWl745uCMIKT7x3sTqFznkp8UAsE7x2mvD+yze35qSIjaSwDP0IXYQT\n" + "OmsVoY0WkP1OyyqiUObzced/9rWl5ysFa7R9MyXPNS98dViBYx0ORnadBjh7KuuZ\n" + "f9lW2aemW1MGMh2+3dokjpQGo958N9QDaafNRGcCgcAYXvxuMJOMZ52M8d7w7EeD\n" + "SGCwZGnojYN6qslXlMrewgo7zjj6Y3ZLUUyhPU15NGZUzWLfmwDVfKy8WjW792t2\n" + "Ryz7lsOE0I8Kyse9X0Nu+1v8SBnIPEelpDPrS9siaaCXs7k7Fpu9WKPaxRiyvbkb\n" + "E1lQmcVog/5QrgzmGzdUvPL1dBgOMTNp0KSIkCSLQK56j5+Cqfc8ECkBlJozEvmr\n" + "5u3ed+PtD/KD3V3gJuTBxCtgqRTPUoiqZzExHiK6PWcCgcEAguWBy29tWzfKg+48\n" + "bFeSyqLYP8WDdpaJwOUTnMzHiAOC8JXOYQ1vJXKAbWvFPD8wkOqOV8yRwvRRyjow\n" + "SHjcpvpJzkqr/qF6yf5clyiM9dpeh/ia3X250uirUmOdBaT2FGUNltkw+LE76H9N\n" + "1FEzXqOTzCdkSdivHeLdoOvt/Y1IfgpYyaRjLCxB/LHDsczFe9jAmGGnPIcGe/Z6\n" + "wBJBF5Ezzk/c3iTV3wqjbj9mQs/0uBidLBwZ1sWHQD+I7tUXAoHAHXjrwCI5AJTS\n" + "OyK0/85F5x5cbbeWZvU9bgni6IN51j9r12J13qt1bBQE+jQkOKRkvyRtEeQW3Zod\n" + "+zcBcCqU9HSQa7BH7beT6ChEz+lx/OZ+b34MOxwE6BJdQCu1048fD9/xHq8xoQQf\n" + "E+1aSEFaNRfxIOdqNUvyKy+WgWKoMDU96Uw6LU4z9lzOLwKb4LTZhE+qp2lMJ2Ws\n" + "9lH//6DGC2Z42m0Do2uqdxjBclumwqvzdozgsAwKSNkDUMAqPKI5\n" + "-----END RSA PRIVATE KEY-----\n"; const gnutls_datum_t server2_key = { server2_key_pem, - sizeof(server2_key_pem) - 1 -}; + sizeof(server2_key_pem) - 1 }; static unsigned char ca2_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIID8zCCAlugAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCAXDTE1MTIwODA5MzAzMVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" - "QS0wMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0Q82wj5Dk/me634j\n" - "DnFBbAJ5FGNNeXnBgprRo2tQv8oJYMN/osSVd/03XiWBQnXk7v2aSkfXMqgEAzfv\n" - "0fzWZYyhKSwTvDG48LfnIuF7UrnvnC3xdAOjcQ+E3zUdYYonSn3gRBwIjOK4wFbG\n" - "Q4oelFnPOjWGeasLh++yBNfCa506jgFd9Y1rU5o0r/EIYSQi2aj71E+x3EdkS0Tx\n" - "iKpIGHseuP2ARmmZPLy4YglFBvPiDRi0jdgdWd6UbNk7XJ+xnKa9gVtk3TX7vy5E\n" - "7R1686F66bIe9T1N2Wyf3huJkgwUB2UPpG9rNiOvRLGFxkONeATwiJyzJG9DmtGw\n" - "GbKsyMDU9Rq9Z694tBCnlWlPrQKsZEsnivPIn/2VaANArT1QtsS+EdaXzuIWmIM0\n" - "cdQXf1U1VhzACFpHnFZ6XsOe40qwzj+6RQprHcWnIGP992qiQ6zPF8QPkycTrbhi\n" - "TG7hX59sTTBJva5DNjZnx4H/hOiQub04CMD501JiLQ1ALXGfAgMBAAGjWDBWMA8G\n" - "A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUD\n" - "AwcGADAdBgNVHQ4EFgQUS3b8vegC7b0m83OMq/9dq++nS58wDQYJKoZIhvcNAQEL\n" - "BQADggGBALJv0DUD3Ujb0a9zcgKQIjljFMoA0v5A6+ZoLeHmRTU5udNV9G2AsdSx\n" - "PEH/D7v/GyoR0jApgA0TiAqRuvlc3NsdHBx9tFvgrAFyC7bbJRrf9lP9QlTqkmb7\n" - "a85OYmdiDhtQSyKdtSZpAfP7jVGJqQz5UWbV3CjYfubU+HLIZXEb6m8YCKBFb7l9\n" - "GNrcKK+gFyrQr6KmojzMkJd5PxVBUsYleaf/0QxC7nRbTH/qomJvooI2nLBLA7U3\n" - "VGLL3Og6rpjIWu2dwkvepcnesdrnPq4hJQ+uSfDkthP/qCs/3Nj9bvL73DIAYUc2\n" - "6FUmOK40BRhBhcAIYj+9JDtHncykj0RBjH6eq+goDTSd4gTXmfbzb8p1jjLal8xZ\n" - "PcNzShMpUqkmWe3Otzd98zkOzqiHeO03tBgfA5u+4gInSdQp5eUpE3Uivp9IcNaC\n" - "TMSfIA6roY+p7j1ISlmzXUZuEz9dkJumV0TMmOv6nd+ZufwaDOIuDPad5bG2JFji\n" - "KvV1dLfOfg==\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t ca2_cert = { ca2_cert_pem, - sizeof(ca2_cert_pem) - 1 -}; + "-----BEGIN CERTIFICATE-----\n" + "MIID8zCCAlugAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCAXDTE1MTIwODA5MzAzMVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0wMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0Q82wj5Dk/me634j\n" + "DnFBbAJ5FGNNeXnBgprRo2tQv8oJYMN/osSVd/03XiWBQnXk7v2aSkfXMqgEAzfv\n" + "0fzWZYyhKSwTvDG48LfnIuF7UrnvnC3xdAOjcQ+E3zUdYYonSn3gRBwIjOK4wFbG\n" + "Q4oelFnPOjWGeasLh++yBNfCa506jgFd9Y1rU5o0r/EIYSQi2aj71E+x3EdkS0Tx\n" + "iKpIGHseuP2ARmmZPLy4YglFBvPiDRi0jdgdWd6UbNk7XJ+xnKa9gVtk3TX7vy5E\n" + "7R1686F66bIe9T1N2Wyf3huJkgwUB2UPpG9rNiOvRLGFxkONeATwiJyzJG9DmtGw\n" + "GbKsyMDU9Rq9Z694tBCnlWlPrQKsZEsnivPIn/2VaANArT1QtsS+EdaXzuIWmIM0\n" + "cdQXf1U1VhzACFpHnFZ6XsOe40qwzj+6RQprHcWnIGP992qiQ6zPF8QPkycTrbhi\n" + "TG7hX59sTTBJva5DNjZnx4H/hOiQub04CMD501JiLQ1ALXGfAgMBAAGjWDBWMA8G\n" + "A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUD\n" + "AwcGADAdBgNVHQ4EFgQUS3b8vegC7b0m83OMq/9dq++nS58wDQYJKoZIhvcNAQEL\n" + "BQADggGBALJv0DUD3Ujb0a9zcgKQIjljFMoA0v5A6+ZoLeHmRTU5udNV9G2AsdSx\n" + "PEH/D7v/GyoR0jApgA0TiAqRuvlc3NsdHBx9tFvgrAFyC7bbJRrf9lP9QlTqkmb7\n" + "a85OYmdiDhtQSyKdtSZpAfP7jVGJqQz5UWbV3CjYfubU+HLIZXEb6m8YCKBFb7l9\n" + "GNrcKK+gFyrQr6KmojzMkJd5PxVBUsYleaf/0QxC7nRbTH/qomJvooI2nLBLA7U3\n" + "VGLL3Og6rpjIWu2dwkvepcnesdrnPq4hJQ+uSfDkthP/qCs/3Nj9bvL73DIAYUc2\n" + "6FUmOK40BRhBhcAIYj+9JDtHncykj0RBjH6eq+goDTSd4gTXmfbzb8p1jjLal8xZ\n" + "PcNzShMpUqkmWe3Otzd98zkOzqiHeO03tBgfA5u+4gInSdQp5eUpE3Uivp9IcNaC\n" + "TMSfIA6roY+p7j1ISlmzXUZuEz9dkJumV0TMmOv6nd+ZufwaDOIuDPad5bG2JFji\n" + "KvV1dLfOfg==\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t ca2_cert = { ca2_cert_pem, sizeof(ca2_cert_pem) - 1 }; static unsigned char cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICHjCCAYmgAwIBAgIERiYdNzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTI3WhcNMDgwNDE3MTMyOTI3WjAdMRsw\n" - "GQYDVQQDExJHbnVUTFMgdGVzdCBjbGllbnQwgZwwCwYJKoZIhvcNAQEBA4GMADCB\n" - "iAKBgLtmQ/Xyxde2jMzF3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeL\n" - "ZIkiW8DdU3w77XwEu4C5KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKN\n" - "zj2AC41179gAgY8oBAOgIo1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjdjB0MAwG\n" - "A1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUDAweg\n" - "ADAdBgNVHQ4EFgQUTLkKm/odNON+3svSBxX+odrLaJEwHwYDVR0jBBgwFoAU6Twc\n" - "+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBALujmBJVZnvaTXr9cFRJ\n" - "jpfc/3X7sLUsMvumcDE01ls/cG5mIatmiyEU9qI3jbgUf82z23ON/acwJf875D3/\n" - "U7jyOsBJ44SEQITbin2yUeJMIm1tievvdNXBDfW95AM507ShzP12sfiJkJfjjdhy\n" - "dc8Siq5JojruiMizAf0pA7in\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIICHjCCAYmgAwIBAgIERiYdNzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTI3WhcNMDgwNDE3MTMyOTI3WjAdMRsw\n" + "GQYDVQQDExJHbnVUTFMgdGVzdCBjbGllbnQwgZwwCwYJKoZIhvcNAQEBA4GMADCB\n" + "iAKBgLtmQ/Xyxde2jMzF3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeL\n" + "ZIkiW8DdU3w77XwEu4C5KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKN\n" + "zj2AC41179gAgY8oBAOgIo1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjdjB0MAwG\n" + "A1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUDAweg\n" + "ADAdBgNVHQ4EFgQUTLkKm/odNON+3svSBxX+odrLaJEwHwYDVR0jBBgwFoAU6Twc\n" + "+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBALujmBJVZnvaTXr9cFRJ\n" + "jpfc/3X7sLUsMvumcDE01ls/cG5mIatmiyEU9qI3jbgUf82z23ON/acwJf875D3/\n" + "U7jyOsBJ44SEQITbin2yUeJMIm1tievvdNXBDfW95AM507ShzP12sfiJkJfjjdhy\n" + "dc8Siq5JojruiMizAf0pA7in\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t cli_cert = { cert_pem, sizeof(cert_pem) - 1 }; static unsigned char key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" - "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" - "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" - "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" - "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" - "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" - "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" - "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" - "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" - "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" - "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" - "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" - "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" + "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" + "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" + "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" + "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" + "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" + "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" + "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" + "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" + "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" + "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" + "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" + "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" + "-----END RSA PRIVATE KEY-----\n"; const gnutls_datum_t cli_key = { key_pem, sizeof(key_pem) - 1 }; static char dsa_key_pem[] = - "-----BEGIN DSA PRIVATE KEY-----\n" - "MIIBugIBAAKBgQC5hPVagb4aDcWKc48Mmy+btg5Lw3Qaf2StnfMoxaBHvJtXVvGX\n" - "1X43A+nyTPTji38wo10vu6GiN8LqNY8fsV+mol8B8SM2K+RPLy3dndU6pjmvelF8\n" - "0iWOl3TPHsV7S3ZDgQcfBhS4blgS4ZDiN2/SG+xoxVji5jDgal4sY3jsBwIVAJ9W\n" - "jEhkL/6NqnptltsEXRbvCKVxAoGAYgZ+5Fx2CLdGGl3Xl9QqIfsfMcnS9Po52CfR\n" - "m/wnXacKpxr8U8EvQ8I3yIV/PUyrXYEy+x1eHlQRFiDGgFrZjJtD8N1roPTD8oqc\n" - "OdIcew/v+iiTj9KhIuvc4IqLrSgOz+8Jhek2vYt6UNV79yUNbGARxO9wkM/WG+u7\n" - "jsY+OpcCgYAPiodX8tHC3KzfS4sPi7op9+ED5FX6spgH1v0SsYC89bq0UNR/oA5D\n" - "55/JeBFf5eQMLGtqpDXcvVTlYDaaMdGKWW5rHLq9LrrrfIfv2sjdoeukg+aLrfr6\n" - "jlvXN8gyPpbCPvRD2n2RAg+3vPjvj/dBAF6W3w8IltzqsukGgq/SLwIUS5/r/2ya\n" - "AoNBXjeBjgCGMei2m8E=\n" "-----END DSA PRIVATE KEY-----\n"; + "-----BEGIN DSA PRIVATE KEY-----\n" + "MIIBugIBAAKBgQC5hPVagb4aDcWKc48Mmy+btg5Lw3Qaf2StnfMoxaBHvJtXVvGX\n" + "1X43A+nyTPTji38wo10vu6GiN8LqNY8fsV+mol8B8SM2K+RPLy3dndU6pjmvelF8\n" + "0iWOl3TPHsV7S3ZDgQcfBhS4blgS4ZDiN2/SG+xoxVji5jDgal4sY3jsBwIVAJ9W\n" + "jEhkL/6NqnptltsEXRbvCKVxAoGAYgZ+5Fx2CLdGGl3Xl9QqIfsfMcnS9Po52CfR\n" + "m/wnXacKpxr8U8EvQ8I3yIV/PUyrXYEy+x1eHlQRFiDGgFrZjJtD8N1roPTD8oqc\n" + "OdIcew/v+iiTj9KhIuvc4IqLrSgOz+8Jhek2vYt6UNV79yUNbGARxO9wkM/WG+u7\n" + "jsY+OpcCgYAPiodX8tHC3KzfS4sPi7op9+ED5FX6spgH1v0SsYC89bq0UNR/oA5D\n" + "55/JeBFf5eQMLGtqpDXcvVTlYDaaMdGKWW5rHLq9LrrrfIfv2sjdoeukg+aLrfr6\n" + "jlvXN8gyPpbCPvRD2n2RAg+3vPjvj/dBAF6W3w8IltzqsukGgq/SLwIUS5/r/2ya\n" + "AoNBXjeBjgCGMei2m8E=\n" + "-----END DSA PRIVATE KEY-----\n"; const gnutls_datum_t dsa_key = { (unsigned char *)dsa_key_pem, - sizeof(dsa_key_pem) - 1 -}; + sizeof(dsa_key_pem) - 1 }; static char ca3_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIID+jCCAmKgAwIBAgIIVzGgXgSsTYwwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" - "AxMEQ0EtMzAgFw0xNjA1MTAwODQ4MzBaGA85OTk5MTIzMTIzNTk1OVowDzENMAsG\n" - "A1UEAxMEQ0EtMzCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBALbdxniG\n" - "+2wP/ONeZfvR7AJakVo5deFKIHVTiiBWwhg+HSjd4nfDa+vyTt/wIdldP1PriD1R\n" - "igc8z68+RxPpGfAc197pKlKpO08I0L1RDKnjBWr4fGdCzE6uZ/ZsKVifoIZpdC8M\n" - "2IYpAIMajEtnH53XZ1hTEviXTsneuiCTtap73OeSkL71SrIMkgBmAX17gfX3SxFj\n" - "QUzOs6QMMOa3+8GW7RI+E/SyS1QkOO860dj9XYgOnTL20ibGcWF2XmTiQASI+KmH\n" - "vYJCNJF/8pvmyJRyBHGZO830aBY0+DcS2bLKcyMiWfOJw7WnpaO7zSEC5WFgo4jd\n" - "qroUBQdjQNCSSdrt1yYrAl1Sj2PMxYFX4H545Pr2sMpwC9AnPk9+uucT1Inj9615\n" - "qbuXgFwhkgpK5pnPjzKaHp7ESlJj4/dIPTmhlt5BV+CLh7tSLzVLrddGU+os8Jin\n" - "T42radJ5V51Hn0C1CHIaFAuBCd5XRHXtrKb7WcnwCOxlcvux9h5/847F4wIDAQAB\n" - "o1gwVjAPBgNVHRMBAf8EBTADAQH/MBMGA1UdJQQMMAoGCCsGAQUFBwMJMA8GA1Ud\n" - "DwEB/wQFAwMHBgAwHQYDVR0OBBYEFPmohhljtqQUE2B2DwGaNTbv8bSvMA0GCSqG\n" - "SIb3DQEBCwUAA4IBgQBhBi8dXQMtXH2oqcuHuEj9JkxraAsaJvc1WAoxbiqVcJKc\n" - "VSC0gvoCY3q+NQvuePzw5dzd5JBfkoIsP5U6ATWAUPPqCP+/jRnFqDQlH626mhDG\n" - "VS8W7Ee8z1KWqnKWGv5nkrZ6r3y9bVaNUmY7rytzuct1bI9YkX1kM66vgnU2xeMI\n" - "jDe36/wTtBRVFPSPpE3KL9hxCg3KgPSeSmmIhmQxJ1M6xe00314/GX3lTDt55UdM\n" - "gmldl2LHV+0i1NPCgnuOEFVOiz2nHAnw2LNmvHEDDpPauz2Meeh9aaDeefIh2u/w\n" - "g39WRPhU1mYvmxvYZqA/jwSctiEhuKEBBZSOHxeTjplH1THlIziVnYyVW4sPMiGU\n" - "ajXhTi47H219hx87+bldruOtirbDIslL9RGWqWAkMeGP+hUl1R2zvDukaqIKqIN8\n" - "1/A/EeMoI6/IHb1BpgY2rGs/I/QTb3VTKqQUYv09Hi+itPCdKqamSm8dZMKKaPA0\n" - "fD9yskUMFPBhfj8BvXg=\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIID+jCCAmKgAwIBAgIIVzGgXgSsTYwwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" + "AxMEQ0EtMzAgFw0xNjA1MTAwODQ4MzBaGA85OTk5MTIzMTIzNTk1OVowDzENMAsG\n" + "A1UEAxMEQ0EtMzCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBALbdxniG\n" + "+2wP/ONeZfvR7AJakVo5deFKIHVTiiBWwhg+HSjd4nfDa+vyTt/wIdldP1PriD1R\n" + "igc8z68+RxPpGfAc197pKlKpO08I0L1RDKnjBWr4fGdCzE6uZ/ZsKVifoIZpdC8M\n" + "2IYpAIMajEtnH53XZ1hTEviXTsneuiCTtap73OeSkL71SrIMkgBmAX17gfX3SxFj\n" + "QUzOs6QMMOa3+8GW7RI+E/SyS1QkOO860dj9XYgOnTL20ibGcWF2XmTiQASI+KmH\n" + "vYJCNJF/8pvmyJRyBHGZO830aBY0+DcS2bLKcyMiWfOJw7WnpaO7zSEC5WFgo4jd\n" + "qroUBQdjQNCSSdrt1yYrAl1Sj2PMxYFX4H545Pr2sMpwC9AnPk9+uucT1Inj9615\n" + "qbuXgFwhkgpK5pnPjzKaHp7ESlJj4/dIPTmhlt5BV+CLh7tSLzVLrddGU+os8Jin\n" + "T42radJ5V51Hn0C1CHIaFAuBCd5XRHXtrKb7WcnwCOxlcvux9h5/847F4wIDAQAB\n" + "o1gwVjAPBgNVHRMBAf8EBTADAQH/MBMGA1UdJQQMMAoGCCsGAQUFBwMJMA8GA1Ud\n" + "DwEB/wQFAwMHBgAwHQYDVR0OBBYEFPmohhljtqQUE2B2DwGaNTbv8bSvMA0GCSqG\n" + "SIb3DQEBCwUAA4IBgQBhBi8dXQMtXH2oqcuHuEj9JkxraAsaJvc1WAoxbiqVcJKc\n" + "VSC0gvoCY3q+NQvuePzw5dzd5JBfkoIsP5U6ATWAUPPqCP+/jRnFqDQlH626mhDG\n" + "VS8W7Ee8z1KWqnKWGv5nkrZ6r3y9bVaNUmY7rytzuct1bI9YkX1kM66vgnU2xeMI\n" + "jDe36/wTtBRVFPSPpE3KL9hxCg3KgPSeSmmIhmQxJ1M6xe00314/GX3lTDt55UdM\n" + "gmldl2LHV+0i1NPCgnuOEFVOiz2nHAnw2LNmvHEDDpPauz2Meeh9aaDeefIh2u/w\n" + "g39WRPhU1mYvmxvYZqA/jwSctiEhuKEBBZSOHxeTjplH1THlIziVnYyVW4sPMiGU\n" + "ajXhTi47H219hx87+bldruOtirbDIslL9RGWqWAkMeGP+hUl1R2zvDukaqIKqIN8\n" + "1/A/EeMoI6/IHb1BpgY2rGs/I/QTb3VTKqQUYv09Hi+itPCdKqamSm8dZMKKaPA0\n" + "fD9yskUMFPBhfj8BvXg=\n" + "-----END CERTIFICATE-----\n"; static char ca3_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIG4gIBAAKCAYEAtt3GeIb7bA/8415l+9HsAlqRWjl14UogdVOKIFbCGD4dKN3i\n" - "d8Nr6/JO3/Ah2V0/U+uIPVGKBzzPrz5HE+kZ8BzX3ukqUqk7TwjQvVEMqeMFavh8\n" - "Z0LMTq5n9mwpWJ+ghml0LwzYhikAgxqMS2cfnddnWFMS+JdOyd66IJO1qnvc55KQ\n" - "vvVKsgySAGYBfXuB9fdLEWNBTM6zpAww5rf7wZbtEj4T9LJLVCQ47zrR2P1diA6d\n" - "MvbSJsZxYXZeZOJABIj4qYe9gkI0kX/ym+bIlHIEcZk7zfRoFjT4NxLZsspzIyJZ\n" - "84nDtaelo7vNIQLlYWCjiN2quhQFB2NA0JJJ2u3XJisCXVKPY8zFgVfgfnjk+vaw\n" - "ynAL0Cc+T3665xPUieP3rXmpu5eAXCGSCkrmmc+PMpoensRKUmPj90g9OaGW3kFX\n" - "4IuHu1IvNUut10ZT6izwmKdPjatp0nlXnUefQLUIchoUC4EJ3ldEde2spvtZyfAI\n" - "7GVy+7H2Hn/zjsXjAgMBAAECggGASjfywKJQUwieJA4BKFaICmCF0++0V07Fo7jX\n" - "O87akgpLvXVo4CDRoX7D4oHMyzLcbAwRTInWkp9sz3xgTsVyAJFEUDWkNs52wtoa\n" - "FmxZzm3UmhjmLObgkyKYEVzO3yhSd5s/S4VUMAdeLNfOjx/4phBx4lg9P+XxVV9v\n" - "fZ9VwS7qdpZ25voZafBOJZlBC5PgKFtI/XKiYzEVmgRUqJ+Nr4G5EIlfghYHGsxk\n" - "yzu9Ret3VaxQwwmIO7KY++yV3S4yC4H2A8kmInp+95IeNXND2GEgZJyp0z/7bkd0\n" - "lOtSbYZKEaMZob2IM9gcbAHvG+Oq1349zNtC5d8KyjYcJ4W2BkeHrNiSWHiHq5zA\n" - "dMbvgWs2ydjmpU5DacsP974lDsrt5TO+Cn16ETxDIqklkOqkLInuVmgssjWMbG0F\n" - "qxjM6XgnO6xUizxDJywzWg05J5CCGWydbj/m6Cfns0+jokuCTSuqcAsKBhe6YD4o\n" - "KOdws1egC7Bh+JqCTU1FtazU+THJAoHBAMz+FZrYOJVIhBOHQdttCPtYL3kglPwx\n" - "Tvtryvct7ui76LFCtwsDclQl5wcCl89NQF+9hVpW5t3kSHuM05mFHxvFlx2fTw01\n" - "6z4aXiLiccuc4QZQuTnfSW9OeX285So5rRbEHc8A9Pfa3Mi1OHYCt3jD92r6JGfD\n" - "NQd06vJRgUjjLSBtWvY4usamNWY/lOCJPjSJG8x3TqRyS4e0KtD1rHgJ8I9L2+a1\n" - "MT6E8qy8lf1+5H4hnHfYjSi9/URuYtoVNQKBwQDkXkNaJi30D/6abhdcqm9/Vitr\n" - "bzmhkxDOTTmkaZ/9YH8lfhcbANFuIYvBb+1DSOGtXWy02pidxc3DC1QbxHpjjmd4\n" - "fCe4TCVffMuLZDE+SofbltyQ84mVhEJS3iH0QB5ESS0M+MNn9v92Ah98UK58wWFS\n" - "UUmBvEqVWGDlBoSiyQ0H+B2uWI1h24F7WQYGZppdFCs8YE6ZS0pmEklQ4DrnGd/J\n" - "urXANEa6XE+BG9KF8x0sAM0YH1gHfLmyZrJXybcCgcB2v0kspcxBTfyUg2m2/naR\n" - "gwgdFq63WKj0JAEzJryavR+Sb58xFhIIhNxLx0jBoXKFA3hYWLbsGu2SBIYfDGp0\n" - "4AUl978HXBClrQiTFLHuzTXdPq3NxHb5r2/ZUq89wqNt6LWL0HYXjgUPj0rhsbku\n" - "j/anVbf5E6+IXkYrkONfoZnmivKCZ2Jq6KVOUc6gM2CBdltQGlzIDh2Kwud6nJYI\n" - "A1oC6GK+Rn/8Q2+AeM46RmN+XWISWrOKwmQQXBGPW3ECgcB3pk/Bjtlq02qBPQcu\n" - "fPnYDKzJKEhYuHYIsPtvggvaNFHJsgunEUGpYxgXLG5yX2Amdhl7lEB8AWQyOeBC\n" - "gCnjuXvK67nf3L2EDx2SFdebHG+cBKnhpEfEt7wMMOg3UdTJ0FEzR68R7J6iFLCs\n" - "cJVLNgKon4BU4fNt1hVGSaj6pT4Xm87pRuokiF6J4vW+Ksnb1LJmessTlBgR7KjP\n" - "H/yckrjmt9V8M6ePAsiBC7O8jMkPAghzCBEWMyoUJ6xvRHcCgcAWZFAbb0kCiebN\n" - "twTeVJ53V3hdFpanX1bDCOD+B7QFGqkNpEiF4WqHioSrXVhL9yLROLFUo43eqH4u\n" - "3m1cny0hwWDrkDbuMIMrjHtQRYsDX/0XbwPFr1jxNHggzC6uZXeSKih7xoVFFL/e\n" - "AbsLJbTvoXgn6abfY5JlN45G+P9L23j3/B5PYQUTLllXQxgFGIpnWL0RFCHQuNX6\n" - "xkwfZG91IiOdKlKEddraZb3OppP1j7HsiyaYmwIMtsPc9wa2EsU=\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIIG4gIBAAKCAYEAtt3GeIb7bA/8415l+9HsAlqRWjl14UogdVOKIFbCGD4dKN3i\n" + "d8Nr6/JO3/Ah2V0/U+uIPVGKBzzPrz5HE+kZ8BzX3ukqUqk7TwjQvVEMqeMFavh8\n" + "Z0LMTq5n9mwpWJ+ghml0LwzYhikAgxqMS2cfnddnWFMS+JdOyd66IJO1qnvc55KQ\n" + "vvVKsgySAGYBfXuB9fdLEWNBTM6zpAww5rf7wZbtEj4T9LJLVCQ47zrR2P1diA6d\n" + "MvbSJsZxYXZeZOJABIj4qYe9gkI0kX/ym+bIlHIEcZk7zfRoFjT4NxLZsspzIyJZ\n" + "84nDtaelo7vNIQLlYWCjiN2quhQFB2NA0JJJ2u3XJisCXVKPY8zFgVfgfnjk+vaw\n" + "ynAL0Cc+T3665xPUieP3rXmpu5eAXCGSCkrmmc+PMpoensRKUmPj90g9OaGW3kFX\n" + "4IuHu1IvNUut10ZT6izwmKdPjatp0nlXnUefQLUIchoUC4EJ3ldEde2spvtZyfAI\n" + "7GVy+7H2Hn/zjsXjAgMBAAECggGASjfywKJQUwieJA4BKFaICmCF0++0V07Fo7jX\n" + "O87akgpLvXVo4CDRoX7D4oHMyzLcbAwRTInWkp9sz3xgTsVyAJFEUDWkNs52wtoa\n" + "FmxZzm3UmhjmLObgkyKYEVzO3yhSd5s/S4VUMAdeLNfOjx/4phBx4lg9P+XxVV9v\n" + "fZ9VwS7qdpZ25voZafBOJZlBC5PgKFtI/XKiYzEVmgRUqJ+Nr4G5EIlfghYHGsxk\n" + "yzu9Ret3VaxQwwmIO7KY++yV3S4yC4H2A8kmInp+95IeNXND2GEgZJyp0z/7bkd0\n" + "lOtSbYZKEaMZob2IM9gcbAHvG+Oq1349zNtC5d8KyjYcJ4W2BkeHrNiSWHiHq5zA\n" + "dMbvgWs2ydjmpU5DacsP974lDsrt5TO+Cn16ETxDIqklkOqkLInuVmgssjWMbG0F\n" + "qxjM6XgnO6xUizxDJywzWg05J5CCGWydbj/m6Cfns0+jokuCTSuqcAsKBhe6YD4o\n" + "KOdws1egC7Bh+JqCTU1FtazU+THJAoHBAMz+FZrYOJVIhBOHQdttCPtYL3kglPwx\n" + "Tvtryvct7ui76LFCtwsDclQl5wcCl89NQF+9hVpW5t3kSHuM05mFHxvFlx2fTw01\n" + "6z4aXiLiccuc4QZQuTnfSW9OeX285So5rRbEHc8A9Pfa3Mi1OHYCt3jD92r6JGfD\n" + "NQd06vJRgUjjLSBtWvY4usamNWY/lOCJPjSJG8x3TqRyS4e0KtD1rHgJ8I9L2+a1\n" + "MT6E8qy8lf1+5H4hnHfYjSi9/URuYtoVNQKBwQDkXkNaJi30D/6abhdcqm9/Vitr\n" + "bzmhkxDOTTmkaZ/9YH8lfhcbANFuIYvBb+1DSOGtXWy02pidxc3DC1QbxHpjjmd4\n" + "fCe4TCVffMuLZDE+SofbltyQ84mVhEJS3iH0QB5ESS0M+MNn9v92Ah98UK58wWFS\n" + "UUmBvEqVWGDlBoSiyQ0H+B2uWI1h24F7WQYGZppdFCs8YE6ZS0pmEklQ4DrnGd/J\n" + "urXANEa6XE+BG9KF8x0sAM0YH1gHfLmyZrJXybcCgcB2v0kspcxBTfyUg2m2/naR\n" + "gwgdFq63WKj0JAEzJryavR+Sb58xFhIIhNxLx0jBoXKFA3hYWLbsGu2SBIYfDGp0\n" + "4AUl978HXBClrQiTFLHuzTXdPq3NxHb5r2/ZUq89wqNt6LWL0HYXjgUPj0rhsbku\n" + "j/anVbf5E6+IXkYrkONfoZnmivKCZ2Jq6KVOUc6gM2CBdltQGlzIDh2Kwud6nJYI\n" + "A1oC6GK+Rn/8Q2+AeM46RmN+XWISWrOKwmQQXBGPW3ECgcB3pk/Bjtlq02qBPQcu\n" + "fPnYDKzJKEhYuHYIsPtvggvaNFHJsgunEUGpYxgXLG5yX2Amdhl7lEB8AWQyOeBC\n" + "gCnjuXvK67nf3L2EDx2SFdebHG+cBKnhpEfEt7wMMOg3UdTJ0FEzR68R7J6iFLCs\n" + "cJVLNgKon4BU4fNt1hVGSaj6pT4Xm87pRuokiF6J4vW+Ksnb1LJmessTlBgR7KjP\n" + "H/yckrjmt9V8M6ePAsiBC7O8jMkPAghzCBEWMyoUJ6xvRHcCgcAWZFAbb0kCiebN\n" + "twTeVJ53V3hdFpanX1bDCOD+B7QFGqkNpEiF4WqHioSrXVhL9yLROLFUo43eqH4u\n" + "3m1cny0hwWDrkDbuMIMrjHtQRYsDX/0XbwPFr1jxNHggzC6uZXeSKih7xoVFFL/e\n" + "AbsLJbTvoXgn6abfY5JlN45G+P9L23j3/B5PYQUTLllXQxgFGIpnWL0RFCHQuNX6\n" + "xkwfZG91IiOdKlKEddraZb3OppP1j7HsiyaYmwIMtsPc9wa2EsU=\n" + "-----END RSA PRIVATE KEY-----\n"; const gnutls_datum_t ca3_key = { (unsigned char *)ca3_key_pem, - sizeof(ca3_key_pem) - 1 -}; + sizeof(ca3_key_pem) - 1 }; const gnutls_datum_t ca3_cert = { (unsigned char *)ca3_cert_pem, - sizeof(ca3_cert_pem) - 1 -}; + sizeof(ca3_cert_pem) - 1 }; static char subca3_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIEDTCCAnWgAwIBAgIMV6MdMjWzT9C59ec8MA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTMwIBcNMTYwNTEwMDg0ODMwWhgPOTk5OTEyMzEyMzU5NTlaMBIx\n" - "EDAOBgNVBAMTB3N1YkNBLTMwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIB\n" - "gQCgOcNXzStOnRFoi05aMRLeMB45X4a2srSBul3ULxDSGjIP0EEl//X2WLiope/x\n" - "NL8bPCRpI1sSVXl8Hb1cK3qWNGazVmC7xW07NxL26I86e3/BVRnq8ioVtvPQwEpv\n" - "uI8F97x1vL/n+cfcdkN77NScr5C9jHMVioRvC+qKz9bUBx5DSySV66PR5+wGsJDv\n" - "kfsmjVOgqiTlSWQS5G3nMMq0Rixsc5dP5Wygkbdh9+45UCtObcnHABJrP+GtLiG0\n" - "AOUx6oPzPteZL13erWXg7zYusTarj9rTcdsgR/Im1mIzmD2i7GhJo4Gj0Sk3Rq93\n" - "JyeA+Ay5UPmqcm+dqX00b49MTTv4GtO53kLQSCXYFJ96jcMiXMzBFJD1ROsdk4WU\n" - "ed/tJMHffttDz9j3WcuX9M2nzTT2xlauokjbEAhRDRw5fxCFZh7TbmaH4vysDO9U\n" - "ZXVEXSLKonQ2Lmyso48s/G30VmlSjtPtJqRsv/oPpCO/c0D6BrkHV55B48xfmyIF\n" - "jgECAwEAAaNkMGIwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0G\n" - "A1UdDgQWBBQtMwQbJ3+UBHzH4zVP6SWklOG3oTAfBgNVHSMEGDAWgBT5qIYZY7ak\n" - "FBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAMii5Gx3/d/58oDRy5a0o\n" - "PvQhkU0dKa61NfjjOz9uqxNSilLJE7jGJPaG2tKtC/XU1Ybql2tqQY68kogjKs31\n" - "QC6RFkoZAFouTJt11kzbgVWKewCk3/OrA0/ZkRrAfE0Pma/NITRwTHmTsQOdv/bz\n" - "R+xIPhjKxKrKyJFMG5xb+Q0OKSbd8kDpgYWKob5x2jsNYgEDp8nYSRT45SGw7c7F\n" - "cumkXz2nA6r5NwbnhELvNFK8fzsY+QJKHaAlJ9CclliP1PiiAcl2LQo2gaygWNiD\n" - "+ggnqzy7nqam9rieOOMHls1kKFAFrWy2g/cBhTfS+/7Shpex7NK2GAiujgUV0TZH\n" - "EyEZt6um4gLS9vwUKs/R4XS9VL/bBlfAy2hAVTeUejiRBGeTJkqBu7+c4FdrCByV\n" - "haeQASMYu/lga8eaGL1zJbJe2BQWI754KDYDT9qKNqGlgysr4AVje7z1Y1MQ72Sn\n" - "frzYSQw6BB85CurB6iou3Q+eM4o4g/+xGEuDo0Ne/8ir\n" - "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIEDTCCAnWgAwIBAgIMV6MdMjWzT9C59ec8MA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTMwIBcNMTYwNTEwMDg0ODMwWhgPOTk5OTEyMzEyMzU5NTlaMBIx\n" + "EDAOBgNVBAMTB3N1YkNBLTMwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIB\n" + "gQCgOcNXzStOnRFoi05aMRLeMB45X4a2srSBul3ULxDSGjIP0EEl//X2WLiope/x\n" + "NL8bPCRpI1sSVXl8Hb1cK3qWNGazVmC7xW07NxL26I86e3/BVRnq8ioVtvPQwEpv\n" + "uI8F97x1vL/n+cfcdkN77NScr5C9jHMVioRvC+qKz9bUBx5DSySV66PR5+wGsJDv\n" + "kfsmjVOgqiTlSWQS5G3nMMq0Rixsc5dP5Wygkbdh9+45UCtObcnHABJrP+GtLiG0\n" + "AOUx6oPzPteZL13erWXg7zYusTarj9rTcdsgR/Im1mIzmD2i7GhJo4Gj0Sk3Rq93\n" + "JyeA+Ay5UPmqcm+dqX00b49MTTv4GtO53kLQSCXYFJ96jcMiXMzBFJD1ROsdk4WU\n" + "ed/tJMHffttDz9j3WcuX9M2nzTT2xlauokjbEAhRDRw5fxCFZh7TbmaH4vysDO9U\n" + "ZXVEXSLKonQ2Lmyso48s/G30VmlSjtPtJqRsv/oPpCO/c0D6BrkHV55B48xfmyIF\n" + "jgECAwEAAaNkMGIwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0G\n" + "A1UdDgQWBBQtMwQbJ3+UBHzH4zVP6SWklOG3oTAfBgNVHSMEGDAWgBT5qIYZY7ak\n" + "FBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAMii5Gx3/d/58oDRy5a0o\n" + "PvQhkU0dKa61NfjjOz9uqxNSilLJE7jGJPaG2tKtC/XU1Ybql2tqQY68kogjKs31\n" + "QC6RFkoZAFouTJt11kzbgVWKewCk3/OrA0/ZkRrAfE0Pma/NITRwTHmTsQOdv/bz\n" + "R+xIPhjKxKrKyJFMG5xb+Q0OKSbd8kDpgYWKob5x2jsNYgEDp8nYSRT45SGw7c7F\n" + "cumkXz2nA6r5NwbnhELvNFK8fzsY+QJKHaAlJ9CclliP1PiiAcl2LQo2gaygWNiD\n" + "+ggnqzy7nqam9rieOOMHls1kKFAFrWy2g/cBhTfS+/7Shpex7NK2GAiujgUV0TZH\n" + "EyEZt6um4gLS9vwUKs/R4XS9VL/bBlfAy2hAVTeUejiRBGeTJkqBu7+c4FdrCByV\n" + "haeQASMYu/lga8eaGL1zJbJe2BQWI754KDYDT9qKNqGlgysr4AVje7z1Y1MQ72Sn\n" + "frzYSQw6BB85CurB6iou3Q+eM4o4g/+xGEuDo0Ne/8ir\n" + "-----END CERTIFICATE-----\n"; static char subca3_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIG5AIBAAKCAYEAoDnDV80rTp0RaItOWjES3jAeOV+GtrK0gbpd1C8Q0hoyD9BB\n" - "Jf/19li4qKXv8TS/GzwkaSNbElV5fB29XCt6ljRms1Zgu8VtOzcS9uiPOnt/wVUZ\n" - "6vIqFbbz0MBKb7iPBfe8dby/5/nH3HZDe+zUnK+QvYxzFYqEbwvqis/W1AceQ0sk\n" - "leuj0efsBrCQ75H7Jo1ToKok5UlkEuRt5zDKtEYsbHOXT+VsoJG3YffuOVArTm3J\n" - "xwASaz/hrS4htADlMeqD8z7XmS9d3q1l4O82LrE2q4/a03HbIEfyJtZiM5g9ouxo\n" - "SaOBo9EpN0avdycngPgMuVD5qnJvnal9NG+PTE07+BrTud5C0Egl2BSfeo3DIlzM\n" - "wRSQ9UTrHZOFlHnf7STB337bQ8/Y91nLl/TNp8009sZWrqJI2xAIUQ0cOX8QhWYe\n" - "025mh+L8rAzvVGV1RF0iyqJ0Ni5srKOPLPxt9FZpUo7T7SakbL/6D6Qjv3NA+ga5\n" - "B1eeQePMX5siBY4BAgMBAAECggGAW56MIBHW+L4B7VjzNcmn81tqfP4txxzK8P+D\n" - "lchQAwQtqjM4faUunW5AMVepq7Cwsr8iRuiLtCEiNaG/3QuTrn5KV7RF3jlXa6vj\n" - "cUKsXBGwjPm/t0RAYmhaZPz/04CicBQoNN74kYqYCW2qyxsyvGH8DxdX23J4phMX\n" - "S8brHhTv7iTyx7OV2nqW0YB3cDZ2eaYIsu9355Ce49qxKakR0CHsVxuF447aHbsV\n" - "NLUUCLvZ95/56IwW/DLsNh4R8Z8siEDde8imHyJOVihqrxvoQ7pL0+qB8amsMEVd\n" - "YcUr0ln56Ob5MuO5vD5lAASbOgGUcI/3OWsd2KzquNxKzZaZu+nC1Yh150E1jDEi\n" - "dZIgTtAr39sCx2EwovYwOWrVz66afzN05/0QxuXaoR5IuqbAt7mmaC5wSUGfuAyA\n" - "oy94+JEAb6bb1RPdzcLE5AC6n1zdcOwtuHAajFIppR3He4n4cODaPyqf8pqoCE7s\n" - "fqCa43LLUbPNIEh+E0jFy2lBlqRNAoHBAMY4REQIAUP9PEVtGKi+fvqlBjEn2hzx\n" - "7GuVscvro2U4xk7ZwM1ZffDM9Skuf10+QK15fT4sC4WknJ5MNDY6lkkuPAAaE+Wh\n" - "O6w9Dkz264n2xiGCOEignsAbTkOOZCiWVh9xq4N3o6C9uWUWPOW5bnBx9BzMRi59\n" - "SK5qLTOlJur8fczV/1/sFTUEwBiahERUFqGlOD3t4/z5YuWdFjoXhOh3s60hro8C\n" - "57E4mDuk5sgIh2/i0L9Aob1fnN/Hkl89hwKBwQDO7kNJcRgzbtnK4bX3QWiZVI42\n" - "91YfWtHGqJuqymi8a/4oNBzlBqJECtd0fYcCudadXGtjmf68/BbfwZjZzPOVrnpM\n" - "3XvMgvJgwuppW+Uovvk7eStUGqz1YzEZQZlVSc6p3sB0Lv9EGU5hCejnJmzF36s2\n" - "+KWuzyjkBg4o7fqYAeE2y4tZzGOwRjlOLJQQKQANTv24fOHXCaWBwrkgPloFqkrx\n" - "QPe6Dm7iWdi4xGB3zFZxSZbr0rZ1SmSTn3kbejcCgcEAvoTwYG9NQBsTpitA61gF\n" - "1kVtWSvTwcRpl9KOzNCVAUJ7oOg9H2Ln4N4uucFeW7HtGo/N6EcPYAmjG6dk+8Z+\n" - "EqKkuvhVrX22TEt3BlTCeZ2+PBDcpjnzu/PC2r3u2O/+oURxNPB2TpZsrpOcPrVn\n" - "SB7PIirZPe/fPv0Aq0YOzQeYppv9VCYnEAmb1UoW3VHxWrbiAuw3GTxeaRH+fiGC\n" - "9qmvAjaAgCarqTQbZiCOTS+dddYNC/ZEPy+6KYC52F7bAoHBAJLp5EnDCpyRif0Z\n" - "jLhz7tBVkPaDWdi/AQqa8JIsTHnh7jsa7JzJvfCzBc7FxFHyIOXuFKxNS+deztqj\n" - "t2KCuTm++0ORR/Cl03FRUV3mCWeJVqeb2mBG5B8AAn7c7QD5esltxZN3PnJZySTq\n" - "BTn/NOCzcPqBRBg9KdniVrFGbFD5nKzrjA8AJpKi+NKAocprYYcRWt9dgnXKeoAL\n" - "AKZcvkshYT2xk2+8CYuYoF5lxdun7oNV7NmW60WQwKFyamhQtwKBwE6OM6v8BOL2\n" - "8SkAd0qj0UFMyzJCOhlW5cypdcvvEpiR4H/8m2c8U4iemful3YJ/Hc+KH165KeQM\n" - "3ZBX1w2rwei6cQNtIptMYFBapUzE1Wd0Uyh8OjpHnCYvv/53cZYNSrVtqCD5GE87\n" - "c/snzezAEzWGNm5wl0X+Y3g/mZaYX2rXUgr/dxVGhNHzOodEMz3Sk/Z8ER5n8m5N\n" - "CLo/c/+F0N4e0F7P+haq+Ccj6MNM99HnuJALc1Ke9971YxrNfniGvA==\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIIG5AIBAAKCAYEAoDnDV80rTp0RaItOWjES3jAeOV+GtrK0gbpd1C8Q0hoyD9BB\n" + "Jf/19li4qKXv8TS/GzwkaSNbElV5fB29XCt6ljRms1Zgu8VtOzcS9uiPOnt/wVUZ\n" + "6vIqFbbz0MBKb7iPBfe8dby/5/nH3HZDe+zUnK+QvYxzFYqEbwvqis/W1AceQ0sk\n" + "leuj0efsBrCQ75H7Jo1ToKok5UlkEuRt5zDKtEYsbHOXT+VsoJG3YffuOVArTm3J\n" + "xwASaz/hrS4htADlMeqD8z7XmS9d3q1l4O82LrE2q4/a03HbIEfyJtZiM5g9ouxo\n" + "SaOBo9EpN0avdycngPgMuVD5qnJvnal9NG+PTE07+BrTud5C0Egl2BSfeo3DIlzM\n" + "wRSQ9UTrHZOFlHnf7STB337bQ8/Y91nLl/TNp8009sZWrqJI2xAIUQ0cOX8QhWYe\n" + "025mh+L8rAzvVGV1RF0iyqJ0Ni5srKOPLPxt9FZpUo7T7SakbL/6D6Qjv3NA+ga5\n" + "B1eeQePMX5siBY4BAgMBAAECggGAW56MIBHW+L4B7VjzNcmn81tqfP4txxzK8P+D\n" + "lchQAwQtqjM4faUunW5AMVepq7Cwsr8iRuiLtCEiNaG/3QuTrn5KV7RF3jlXa6vj\n" + "cUKsXBGwjPm/t0RAYmhaZPz/04CicBQoNN74kYqYCW2qyxsyvGH8DxdX23J4phMX\n" + "S8brHhTv7iTyx7OV2nqW0YB3cDZ2eaYIsu9355Ce49qxKakR0CHsVxuF447aHbsV\n" + "NLUUCLvZ95/56IwW/DLsNh4R8Z8siEDde8imHyJOVihqrxvoQ7pL0+qB8amsMEVd\n" + "YcUr0ln56Ob5MuO5vD5lAASbOgGUcI/3OWsd2KzquNxKzZaZu+nC1Yh150E1jDEi\n" + "dZIgTtAr39sCx2EwovYwOWrVz66afzN05/0QxuXaoR5IuqbAt7mmaC5wSUGfuAyA\n" + "oy94+JEAb6bb1RPdzcLE5AC6n1zdcOwtuHAajFIppR3He4n4cODaPyqf8pqoCE7s\n" + "fqCa43LLUbPNIEh+E0jFy2lBlqRNAoHBAMY4REQIAUP9PEVtGKi+fvqlBjEn2hzx\n" + "7GuVscvro2U4xk7ZwM1ZffDM9Skuf10+QK15fT4sC4WknJ5MNDY6lkkuPAAaE+Wh\n" + "O6w9Dkz264n2xiGCOEignsAbTkOOZCiWVh9xq4N3o6C9uWUWPOW5bnBx9BzMRi59\n" + "SK5qLTOlJur8fczV/1/sFTUEwBiahERUFqGlOD3t4/z5YuWdFjoXhOh3s60hro8C\n" + "57E4mDuk5sgIh2/i0L9Aob1fnN/Hkl89hwKBwQDO7kNJcRgzbtnK4bX3QWiZVI42\n" + "91YfWtHGqJuqymi8a/4oNBzlBqJECtd0fYcCudadXGtjmf68/BbfwZjZzPOVrnpM\n" + "3XvMgvJgwuppW+Uovvk7eStUGqz1YzEZQZlVSc6p3sB0Lv9EGU5hCejnJmzF36s2\n" + "+KWuzyjkBg4o7fqYAeE2y4tZzGOwRjlOLJQQKQANTv24fOHXCaWBwrkgPloFqkrx\n" + "QPe6Dm7iWdi4xGB3zFZxSZbr0rZ1SmSTn3kbejcCgcEAvoTwYG9NQBsTpitA61gF\n" + "1kVtWSvTwcRpl9KOzNCVAUJ7oOg9H2Ln4N4uucFeW7HtGo/N6EcPYAmjG6dk+8Z+\n" + "EqKkuvhVrX22TEt3BlTCeZ2+PBDcpjnzu/PC2r3u2O/+oURxNPB2TpZsrpOcPrVn\n" + "SB7PIirZPe/fPv0Aq0YOzQeYppv9VCYnEAmb1UoW3VHxWrbiAuw3GTxeaRH+fiGC\n" + "9qmvAjaAgCarqTQbZiCOTS+dddYNC/ZEPy+6KYC52F7bAoHBAJLp5EnDCpyRif0Z\n" + "jLhz7tBVkPaDWdi/AQqa8JIsTHnh7jsa7JzJvfCzBc7FxFHyIOXuFKxNS+deztqj\n" + "t2KCuTm++0ORR/Cl03FRUV3mCWeJVqeb2mBG5B8AAn7c7QD5esltxZN3PnJZySTq\n" + "BTn/NOCzcPqBRBg9KdniVrFGbFD5nKzrjA8AJpKi+NKAocprYYcRWt9dgnXKeoAL\n" + "AKZcvkshYT2xk2+8CYuYoF5lxdun7oNV7NmW60WQwKFyamhQtwKBwE6OM6v8BOL2\n" + "8SkAd0qj0UFMyzJCOhlW5cypdcvvEpiR4H/8m2c8U4iemful3YJ/Hc+KH165KeQM\n" + "3ZBX1w2rwei6cQNtIptMYFBapUzE1Wd0Uyh8OjpHnCYvv/53cZYNSrVtqCD5GE87\n" + "c/snzezAEzWGNm5wl0X+Y3g/mZaYX2rXUgr/dxVGhNHzOodEMz3Sk/Z8ER5n8m5N\n" + "CLo/c/+F0N4e0F7P+haq+Ccj6MNM99HnuJALc1Ke9971YxrNfniGvA==\n" + "-----END RSA PRIVATE KEY-----\n"; const gnutls_datum_t subca3_key = { (unsigned char *)subca3_key_pem, - sizeof(subca3_key_pem) - 1 -}; + sizeof(subca3_key_pem) - 1 }; const gnutls_datum_t subca3_cert = { (unsigned char *)subca3_cert_pem, - sizeof(subca3_cert_pem) - 1 -}; + sizeof(subca3_cert_pem) - 1 }; static char cli_ca3_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIERjCCAq6gAwIBAgIMV6MdMjZaLvmhsFpSMA0GCSqGSIb3DQEBCwUAMBIxEDAO\n" - "BgNVBAMTB3N1YkNBLTMwIBcNMTYwNTEwMDg1NjM5WhgPOTk5OTEyMzEyMzU5NTla\n" - "MBYxFDASBgNVBAMTC1Rlc3QgY2xpZW50MIIBojANBgkqhkiG9w0BAQEFAAOCAY8A\n" - "MIIBigKCAYEA4QAezvLHuNtTlTQSn1vNaYBrZ5+CzS8/tB2L5G+wWy3Yqqqh1kB+\n" - "gcWN9Ftqv21B1WgRWtjrn4rTJgxl+ogLiLgLIZ6iG/Ye1POFKxxVYYxPXI7spAYa\n" - "CW6/+QjS/18M6NCAHsvhJEMkOY6clIqEqCpLTyaWzJULBBwtpA84pkcLTiNpmfIJ\n" - "Wos9OsYH0hSK2xE/5qu+DkkaKrfS2Cyp61wdhURrX1fdlkBUBt9XH8S5A2bWuQEY\n" - "82GgXxl8HpehkB2RLgpkZQzxopzhoqG2P8IZFQmtOySzRPWtdpy0RJbvmLfZqaEw\n" - "sq3g1jZFXhqUjc5y3vbHta2Xg5/zx0X/FB69j2KZsgUmklYVFG9te7UtSVDgz3U6\n" - "9ed16AULxNqAF2LGhuIEI5+4PikXb+QxaOx/hw1BtEqMzLMbNphILSPBRI+NpTZ2\n" - "PCSedGsQzxsgns/iaLB7q1AIrKLUQlVpy+JNfauYqzvlMNXwMaoNQZDf9oOoFkdT\n" - "P5P8t/gGk2rlAgMBAAGjgZUwgZIwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggr\n" - "BgEFBQcDAjAcBgNVHREEFTATgRFoZWxsb0BleGFtcGxlLm9yZzAPBgNVHQ8BAf8E\n" - "BQMDB4AAMB0GA1UdDgQWBBRdXorh31ji3Vx07Tm7u9jZMbKBajAfBgNVHSMEGDAW\n" - "gBQtMwQbJ3+UBHzH4zVP6SWklOG3oTANBgkqhkiG9w0BAQsFAAOCAYEAPjXZC89d\n" - "2lkc33p5qBTneqXAAZeseBZlSF9Rd798NofXTw0oi235UWCdmPOS4l0z8PBh0ICA\n" - "MY7iUrv5MJeEcvGOq1NFZObsEP+gcpDi3s1otSif9n3ZSR9gDqG1kAlvwOxDW1As\n" - "KuGgwE2vRZN3T20USkcSXvtJ3QD+tIroD9z/Auh2H6LsqOMwSwBo9Alzj7DWLk8G\n" - "mdpQtQU+l/+3pa5MY4MBQM3T3PpK4TdjMVKzKc8lMUeFH/VJSbyQ2kgL7OqavMsH\n" - "jGrm0JCWi2M188EobKVqt2nhQQA7SIogYe4cqx8Q2/7v6RDXZ11QifFKupQ2vXLb\n" - "DZxa4j7YQz4F2m7+PbYbSAs1y4/oiJ32O3BjQC7Oa3OaGFpkipUtrozaa1TM4tab\n" - "kZSyKmSvKG2RxDphl71OZ28tgWjjzJbyG3dbnI3HF1L7YVwHUGFUPhUGuiS7H/b4\n" - "6Zd8Y0P6Cxn/4rUEZZPDpCVt92cjQsWXL45JXpmqwDlaRdSXXoIB2l2D\n" - "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIERjCCAq6gAwIBAgIMV6MdMjZaLvmhsFpSMA0GCSqGSIb3DQEBCwUAMBIxEDAO\n" + "BgNVBAMTB3N1YkNBLTMwIBcNMTYwNTEwMDg1NjM5WhgPOTk5OTEyMzEyMzU5NTla\n" + "MBYxFDASBgNVBAMTC1Rlc3QgY2xpZW50MIIBojANBgkqhkiG9w0BAQEFAAOCAY8A\n" + "MIIBigKCAYEA4QAezvLHuNtTlTQSn1vNaYBrZ5+CzS8/tB2L5G+wWy3Yqqqh1kB+\n" + "gcWN9Ftqv21B1WgRWtjrn4rTJgxl+ogLiLgLIZ6iG/Ye1POFKxxVYYxPXI7spAYa\n" + "CW6/+QjS/18M6NCAHsvhJEMkOY6clIqEqCpLTyaWzJULBBwtpA84pkcLTiNpmfIJ\n" + "Wos9OsYH0hSK2xE/5qu+DkkaKrfS2Cyp61wdhURrX1fdlkBUBt9XH8S5A2bWuQEY\n" + "82GgXxl8HpehkB2RLgpkZQzxopzhoqG2P8IZFQmtOySzRPWtdpy0RJbvmLfZqaEw\n" + "sq3g1jZFXhqUjc5y3vbHta2Xg5/zx0X/FB69j2KZsgUmklYVFG9te7UtSVDgz3U6\n" + "9ed16AULxNqAF2LGhuIEI5+4PikXb+QxaOx/hw1BtEqMzLMbNphILSPBRI+NpTZ2\n" + "PCSedGsQzxsgns/iaLB7q1AIrKLUQlVpy+JNfauYqzvlMNXwMaoNQZDf9oOoFkdT\n" + "P5P8t/gGk2rlAgMBAAGjgZUwgZIwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggr\n" + "BgEFBQcDAjAcBgNVHREEFTATgRFoZWxsb0BleGFtcGxlLm9yZzAPBgNVHQ8BAf8E\n" + "BQMDB4AAMB0GA1UdDgQWBBRdXorh31ji3Vx07Tm7u9jZMbKBajAfBgNVHSMEGDAW\n" + "gBQtMwQbJ3+UBHzH4zVP6SWklOG3oTANBgkqhkiG9w0BAQsFAAOCAYEAPjXZC89d\n" + "2lkc33p5qBTneqXAAZeseBZlSF9Rd798NofXTw0oi235UWCdmPOS4l0z8PBh0ICA\n" + "MY7iUrv5MJeEcvGOq1NFZObsEP+gcpDi3s1otSif9n3ZSR9gDqG1kAlvwOxDW1As\n" + "KuGgwE2vRZN3T20USkcSXvtJ3QD+tIroD9z/Auh2H6LsqOMwSwBo9Alzj7DWLk8G\n" + "mdpQtQU+l/+3pa5MY4MBQM3T3PpK4TdjMVKzKc8lMUeFH/VJSbyQ2kgL7OqavMsH\n" + "jGrm0JCWi2M188EobKVqt2nhQQA7SIogYe4cqx8Q2/7v6RDXZ11QifFKupQ2vXLb\n" + "DZxa4j7YQz4F2m7+PbYbSAs1y4/oiJ32O3BjQC7Oa3OaGFpkipUtrozaa1TM4tab\n" + "kZSyKmSvKG2RxDphl71OZ28tgWjjzJbyG3dbnI3HF1L7YVwHUGFUPhUGuiS7H/b4\n" + "6Zd8Y0P6Cxn/4rUEZZPDpCVt92cjQsWXL45JXpmqwDlaRdSXXoIB2l2D\n" + "-----END CERTIFICATE-----\n"; static char cli_ca3_cert_chain_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIERjCCAq6gAwIBAgIMV6MdMjZaLvmhsFpSMA0GCSqGSIb3DQEBCwUAMBIxEDAO\n" - "BgNVBAMTB3N1YkNBLTMwIBcNMTYwNTEwMDg1NjM5WhgPOTk5OTEyMzEyMzU5NTla\n" - "MBYxFDASBgNVBAMTC1Rlc3QgY2xpZW50MIIBojANBgkqhkiG9w0BAQEFAAOCAY8A\n" - "MIIBigKCAYEA4QAezvLHuNtTlTQSn1vNaYBrZ5+CzS8/tB2L5G+wWy3Yqqqh1kB+\n" - "gcWN9Ftqv21B1WgRWtjrn4rTJgxl+ogLiLgLIZ6iG/Ye1POFKxxVYYxPXI7spAYa\n" - "CW6/+QjS/18M6NCAHsvhJEMkOY6clIqEqCpLTyaWzJULBBwtpA84pkcLTiNpmfIJ\n" - "Wos9OsYH0hSK2xE/5qu+DkkaKrfS2Cyp61wdhURrX1fdlkBUBt9XH8S5A2bWuQEY\n" - "82GgXxl8HpehkB2RLgpkZQzxopzhoqG2P8IZFQmtOySzRPWtdpy0RJbvmLfZqaEw\n" - "sq3g1jZFXhqUjc5y3vbHta2Xg5/zx0X/FB69j2KZsgUmklYVFG9te7UtSVDgz3U6\n" - "9ed16AULxNqAF2LGhuIEI5+4PikXb+QxaOx/hw1BtEqMzLMbNphILSPBRI+NpTZ2\n" - "PCSedGsQzxsgns/iaLB7q1AIrKLUQlVpy+JNfauYqzvlMNXwMaoNQZDf9oOoFkdT\n" - "P5P8t/gGk2rlAgMBAAGjgZUwgZIwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggr\n" - "BgEFBQcDAjAcBgNVHREEFTATgRFoZWxsb0BleGFtcGxlLm9yZzAPBgNVHQ8BAf8E\n" - "BQMDB4AAMB0GA1UdDgQWBBRdXorh31ji3Vx07Tm7u9jZMbKBajAfBgNVHSMEGDAW\n" - "gBQtMwQbJ3+UBHzH4zVP6SWklOG3oTANBgkqhkiG9w0BAQsFAAOCAYEAPjXZC89d\n" - "2lkc33p5qBTneqXAAZeseBZlSF9Rd798NofXTw0oi235UWCdmPOS4l0z8PBh0ICA\n" - "MY7iUrv5MJeEcvGOq1NFZObsEP+gcpDi3s1otSif9n3ZSR9gDqG1kAlvwOxDW1As\n" - "KuGgwE2vRZN3T20USkcSXvtJ3QD+tIroD9z/Auh2H6LsqOMwSwBo9Alzj7DWLk8G\n" - "mdpQtQU+l/+3pa5MY4MBQM3T3PpK4TdjMVKzKc8lMUeFH/VJSbyQ2kgL7OqavMsH\n" - "jGrm0JCWi2M188EobKVqt2nhQQA7SIogYe4cqx8Q2/7v6RDXZ11QifFKupQ2vXLb\n" - "DZxa4j7YQz4F2m7+PbYbSAs1y4/oiJ32O3BjQC7Oa3OaGFpkipUtrozaa1TM4tab\n" - "kZSyKmSvKG2RxDphl71OZ28tgWjjzJbyG3dbnI3HF1L7YVwHUGFUPhUGuiS7H/b4\n" - "6Zd8Y0P6Cxn/4rUEZZPDpCVt92cjQsWXL45JXpmqwDlaRdSXXoIB2l2D\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIEDTCCAnWgAwIBAgIMV6MdMjWzT9C59ec8MA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTMwIBcNMTYwNTEwMDg0ODMwWhgPOTk5OTEyMzEyMzU5NTlaMBIx\n" - "EDAOBgNVBAMTB3N1YkNBLTMwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIB\n" - "gQCgOcNXzStOnRFoi05aMRLeMB45X4a2srSBul3ULxDSGjIP0EEl//X2WLiope/x\n" - "NL8bPCRpI1sSVXl8Hb1cK3qWNGazVmC7xW07NxL26I86e3/BVRnq8ioVtvPQwEpv\n" - "uI8F97x1vL/n+cfcdkN77NScr5C9jHMVioRvC+qKz9bUBx5DSySV66PR5+wGsJDv\n" - "kfsmjVOgqiTlSWQS5G3nMMq0Rixsc5dP5Wygkbdh9+45UCtObcnHABJrP+GtLiG0\n" - "AOUx6oPzPteZL13erWXg7zYusTarj9rTcdsgR/Im1mIzmD2i7GhJo4Gj0Sk3Rq93\n" - "JyeA+Ay5UPmqcm+dqX00b49MTTv4GtO53kLQSCXYFJ96jcMiXMzBFJD1ROsdk4WU\n" - "ed/tJMHffttDz9j3WcuX9M2nzTT2xlauokjbEAhRDRw5fxCFZh7TbmaH4vysDO9U\n" - "ZXVEXSLKonQ2Lmyso48s/G30VmlSjtPtJqRsv/oPpCO/c0D6BrkHV55B48xfmyIF\n" - "jgECAwEAAaNkMGIwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0G\n" - "A1UdDgQWBBQtMwQbJ3+UBHzH4zVP6SWklOG3oTAfBgNVHSMEGDAWgBT5qIYZY7ak\n" - "FBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAMii5Gx3/d/58oDRy5a0o\n" - "PvQhkU0dKa61NfjjOz9uqxNSilLJE7jGJPaG2tKtC/XU1Ybql2tqQY68kogjKs31\n" - "QC6RFkoZAFouTJt11kzbgVWKewCk3/OrA0/ZkRrAfE0Pma/NITRwTHmTsQOdv/bz\n" - "R+xIPhjKxKrKyJFMG5xb+Q0OKSbd8kDpgYWKob5x2jsNYgEDp8nYSRT45SGw7c7F\n" - "cumkXz2nA6r5NwbnhELvNFK8fzsY+QJKHaAlJ9CclliP1PiiAcl2LQo2gaygWNiD\n" - "+ggnqzy7nqam9rieOOMHls1kKFAFrWy2g/cBhTfS+/7Shpex7NK2GAiujgUV0TZH\n" - "EyEZt6um4gLS9vwUKs/R4XS9VL/bBlfAy2hAVTeUejiRBGeTJkqBu7+c4FdrCByV\n" - "haeQASMYu/lga8eaGL1zJbJe2BQWI754KDYDT9qKNqGlgysr4AVje7z1Y1MQ72Sn\n" - "frzYSQw6BB85CurB6iou3Q+eM4o4g/+xGEuDo0Ne/8ir\n" - "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIERjCCAq6gAwIBAgIMV6MdMjZaLvmhsFpSMA0GCSqGSIb3DQEBCwUAMBIxEDAO\n" + "BgNVBAMTB3N1YkNBLTMwIBcNMTYwNTEwMDg1NjM5WhgPOTk5OTEyMzEyMzU5NTla\n" + "MBYxFDASBgNVBAMTC1Rlc3QgY2xpZW50MIIBojANBgkqhkiG9w0BAQEFAAOCAY8A\n" + "MIIBigKCAYEA4QAezvLHuNtTlTQSn1vNaYBrZ5+CzS8/tB2L5G+wWy3Yqqqh1kB+\n" + "gcWN9Ftqv21B1WgRWtjrn4rTJgxl+ogLiLgLIZ6iG/Ye1POFKxxVYYxPXI7spAYa\n" + "CW6/+QjS/18M6NCAHsvhJEMkOY6clIqEqCpLTyaWzJULBBwtpA84pkcLTiNpmfIJ\n" + "Wos9OsYH0hSK2xE/5qu+DkkaKrfS2Cyp61wdhURrX1fdlkBUBt9XH8S5A2bWuQEY\n" + "82GgXxl8HpehkB2RLgpkZQzxopzhoqG2P8IZFQmtOySzRPWtdpy0RJbvmLfZqaEw\n" + "sq3g1jZFXhqUjc5y3vbHta2Xg5/zx0X/FB69j2KZsgUmklYVFG9te7UtSVDgz3U6\n" + "9ed16AULxNqAF2LGhuIEI5+4PikXb+QxaOx/hw1BtEqMzLMbNphILSPBRI+NpTZ2\n" + "PCSedGsQzxsgns/iaLB7q1AIrKLUQlVpy+JNfauYqzvlMNXwMaoNQZDf9oOoFkdT\n" + "P5P8t/gGk2rlAgMBAAGjgZUwgZIwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggr\n" + "BgEFBQcDAjAcBgNVHREEFTATgRFoZWxsb0BleGFtcGxlLm9yZzAPBgNVHQ8BAf8E\n" + "BQMDB4AAMB0GA1UdDgQWBBRdXorh31ji3Vx07Tm7u9jZMbKBajAfBgNVHSMEGDAW\n" + "gBQtMwQbJ3+UBHzH4zVP6SWklOG3oTANBgkqhkiG9w0BAQsFAAOCAYEAPjXZC89d\n" + "2lkc33p5qBTneqXAAZeseBZlSF9Rd798NofXTw0oi235UWCdmPOS4l0z8PBh0ICA\n" + "MY7iUrv5MJeEcvGOq1NFZObsEP+gcpDi3s1otSif9n3ZSR9gDqG1kAlvwOxDW1As\n" + "KuGgwE2vRZN3T20USkcSXvtJ3QD+tIroD9z/Auh2H6LsqOMwSwBo9Alzj7DWLk8G\n" + "mdpQtQU+l/+3pa5MY4MBQM3T3PpK4TdjMVKzKc8lMUeFH/VJSbyQ2kgL7OqavMsH\n" + "jGrm0JCWi2M188EobKVqt2nhQQA7SIogYe4cqx8Q2/7v6RDXZ11QifFKupQ2vXLb\n" + "DZxa4j7YQz4F2m7+PbYbSAs1y4/oiJ32O3BjQC7Oa3OaGFpkipUtrozaa1TM4tab\n" + "kZSyKmSvKG2RxDphl71OZ28tgWjjzJbyG3dbnI3HF1L7YVwHUGFUPhUGuiS7H/b4\n" + "6Zd8Y0P6Cxn/4rUEZZPDpCVt92cjQsWXL45JXpmqwDlaRdSXXoIB2l2D\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIEDTCCAnWgAwIBAgIMV6MdMjWzT9C59ec8MA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTMwIBcNMTYwNTEwMDg0ODMwWhgPOTk5OTEyMzEyMzU5NTlaMBIx\n" + "EDAOBgNVBAMTB3N1YkNBLTMwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIB\n" + "gQCgOcNXzStOnRFoi05aMRLeMB45X4a2srSBul3ULxDSGjIP0EEl//X2WLiope/x\n" + "NL8bPCRpI1sSVXl8Hb1cK3qWNGazVmC7xW07NxL26I86e3/BVRnq8ioVtvPQwEpv\n" + "uI8F97x1vL/n+cfcdkN77NScr5C9jHMVioRvC+qKz9bUBx5DSySV66PR5+wGsJDv\n" + "kfsmjVOgqiTlSWQS5G3nMMq0Rixsc5dP5Wygkbdh9+45UCtObcnHABJrP+GtLiG0\n" + "AOUx6oPzPteZL13erWXg7zYusTarj9rTcdsgR/Im1mIzmD2i7GhJo4Gj0Sk3Rq93\n" + "JyeA+Ay5UPmqcm+dqX00b49MTTv4GtO53kLQSCXYFJ96jcMiXMzBFJD1ROsdk4WU\n" + "ed/tJMHffttDz9j3WcuX9M2nzTT2xlauokjbEAhRDRw5fxCFZh7TbmaH4vysDO9U\n" + "ZXVEXSLKonQ2Lmyso48s/G30VmlSjtPtJqRsv/oPpCO/c0D6BrkHV55B48xfmyIF\n" + "jgECAwEAAaNkMGIwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0G\n" + "A1UdDgQWBBQtMwQbJ3+UBHzH4zVP6SWklOG3oTAfBgNVHSMEGDAWgBT5qIYZY7ak\n" + "FBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAMii5Gx3/d/58oDRy5a0o\n" + "PvQhkU0dKa61NfjjOz9uqxNSilLJE7jGJPaG2tKtC/XU1Ybql2tqQY68kogjKs31\n" + "QC6RFkoZAFouTJt11kzbgVWKewCk3/OrA0/ZkRrAfE0Pma/NITRwTHmTsQOdv/bz\n" + "R+xIPhjKxKrKyJFMG5xb+Q0OKSbd8kDpgYWKob5x2jsNYgEDp8nYSRT45SGw7c7F\n" + "cumkXz2nA6r5NwbnhELvNFK8fzsY+QJKHaAlJ9CclliP1PiiAcl2LQo2gaygWNiD\n" + "+ggnqzy7nqam9rieOOMHls1kKFAFrWy2g/cBhTfS+/7Shpex7NK2GAiujgUV0TZH\n" + "EyEZt6um4gLS9vwUKs/R4XS9VL/bBlfAy2hAVTeUejiRBGeTJkqBu7+c4FdrCByV\n" + "haeQASMYu/lga8eaGL1zJbJe2BQWI754KDYDT9qKNqGlgysr4AVje7z1Y1MQ72Sn\n" + "frzYSQw6BB85CurB6iou3Q+eM4o4g/+xGEuDo0Ne/8ir\n" + "-----END CERTIFICATE-----\n"; static char cli_ca3_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIG5QIBAAKCAYEA4QAezvLHuNtTlTQSn1vNaYBrZ5+CzS8/tB2L5G+wWy3Yqqqh\n" - "1kB+gcWN9Ftqv21B1WgRWtjrn4rTJgxl+ogLiLgLIZ6iG/Ye1POFKxxVYYxPXI7s\n" - "pAYaCW6/+QjS/18M6NCAHsvhJEMkOY6clIqEqCpLTyaWzJULBBwtpA84pkcLTiNp\n" - "mfIJWos9OsYH0hSK2xE/5qu+DkkaKrfS2Cyp61wdhURrX1fdlkBUBt9XH8S5A2bW\n" - "uQEY82GgXxl8HpehkB2RLgpkZQzxopzhoqG2P8IZFQmtOySzRPWtdpy0RJbvmLfZ\n" - "qaEwsq3g1jZFXhqUjc5y3vbHta2Xg5/zx0X/FB69j2KZsgUmklYVFG9te7UtSVDg\n" - "z3U69ed16AULxNqAF2LGhuIEI5+4PikXb+QxaOx/hw1BtEqMzLMbNphILSPBRI+N\n" - "pTZ2PCSedGsQzxsgns/iaLB7q1AIrKLUQlVpy+JNfauYqzvlMNXwMaoNQZDf9oOo\n" - "FkdTP5P8t/gGk2rlAgMBAAECggGBALedC4dC5O3cPodiKVhW6HiSThQQPgQH7Oql\n" - "ugW/h6HA9jHAcbWQiCyK9V9WQvTYyoLHHHKQ1ygpeEpyj741y4PU/XCALja3UU3j\n" - "NOeLhbnHcPRNxpvMRu8vrAYkx1uTS8uqawO2yZJ4IFXAJdOqfrtlWHPNP/7QGl9O\n" - "R4i8yzQWgglQKNtyg2OagWs3NCaikPZZS1aJDN5Hlc0KmkvDlx702zpoLV9vKut0\n" - "r520ITtRpNI72Dq9xIjJQMCa4Yltnuj1OmeJ2C5tTDL8gF/UwsALy01JOaZ9ekCD\n" - "bx/q4DBHXo5OOL4aKCVum8FOFrcaHALeWD1F19VVMuQMjLTAApv2eDL6NMORkrpK\n" - "bEEPfC4mjAtGOzwCkXe+53gXrKxMl+87IPC/FV/YuQRzWGZBCj052ELWqPbzJ9E7\n" - "QybGnSOw8Unoauz76aF0IMiiMu0u7pSp0LVQ+9SVYHhyTdYJfJPburssA3X4UuOX\n" - "KNI7gdOkb0yE883jcGQT+B2fdfrygQKBwQDkajgK6lsTChMeriPy++2MPpto64zW\n" - "2CNMPya5IC23ZFyRXs8UuMbGNTtXd9TXfISXYuGexbPCMXXLA272Bum/wkbf0NBu\n" - "DUVDYr0D4mIrjNb6NdTtFwHHfWCvQlhuVdS3kL9rSDoGO3mgedRpRpVR4Py+1emi\n" - "mMYGHN+UMwPzXmlhmvmONr6ObWebH14DdKyohkBuHVO/2HkET69F0zDOhbM+Wd8V\n" - "hK4PYo2MYV/n4CIf/UbBHjVXx4+EDWGhrNECgcEA/CxWuwr5+RjFGz66o+VM1nt7\n" - "LZgf1oDZKNlf+x6SlGYYCrk1t6yAtc3VbdkGSPsBHBR0WcpU8sMPMNhn5lU/pMp/\n" - "ntBx3LphNWJh3FH4jRkJvhQEZZI/TBIbnxp3C5xOCQr1njMk07vpse4xVhYgNcZf\n" - "9e8V6Ola/1xq+WYjWXVJXBj2cHoF8YZNlPAB38E9gFyU0dUQDjtF4Hfz2EvLniJu\n" - "p92nsT/jsxvEtUAoGAkNBhzXqhRcTAxuzbHbeNHVAoHBAITqKmJvrT+PBUE9JD4o\n" - "yzpo1BZhuzrp2uBrfyUKzI+DHzqYaPgt7b05DKcBXCFom99b8t5pPQkrrtfLz63q\n" - "p+qmKofjAuaHYl6r/kFcYrPk6NQArz6nvKlRFAnoGX1bBMUsvba3+MvXoBb5zdjU\n" - "8d8LhQengqTTMags9Q1QAmSD896QR9exk4FduIRT5GkuY6pNNQDen/VrCkCv/dYr\n" - "5qLGul71/RKQepkJSEUABMbxbeofgCSwZ2oE/kZhYwapgQKBwQD2TySj65PAYBZe\n" - "h0XsQlNsCA6HuVgXv6DdSn16niEUPChtiPxUHHVXnuZCNkHyVOF/mOcQsRWKTUZw\n" - "MmBB1bCleHlxGS6uJ4o9h4wIlDRPNU6Tz59/ynpzBhjerg3rVE/Qe1jvngrxmVEp\n" - "T3v3FwN9IvemE1J2PkB4vr9qPP54KZxvDZ7gu/9EKydqO4fJE0nMMCHYVuEo1XJq\n" - "Tx/pfBc1rXIiGtnpwnrY/l2DoFfJKkYDW3a3lM2WJmqwFXJGr8UCgcArtSJU3ewE\n" - "62J00pX8HJWvOVPrjKfgJvqUmpjLT4/AXNzEEFqij/L98DZU/b1GKGgdSFt3oIii\n" - "8Poeaas8GvtlyRZXONXC1TNzC+dzheF3MQ2euvAwulimvcp/rT1/Dw6ID2PWpthE\n" - "VBpijtoHZ3F2dCYHbYLVlrXC7G4IQ31XUZOujH5xOcZQob815J2+mFsdg/9UBm7c\n" - "uiyti3689G0RW9DM/F+NeJkoEo0D15JweVkSfDcsVTdvNsbeA1Pzzds=\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIIG5QIBAAKCAYEA4QAezvLHuNtTlTQSn1vNaYBrZ5+CzS8/tB2L5G+wWy3Yqqqh\n" + "1kB+gcWN9Ftqv21B1WgRWtjrn4rTJgxl+ogLiLgLIZ6iG/Ye1POFKxxVYYxPXI7s\n" + "pAYaCW6/+QjS/18M6NCAHsvhJEMkOY6clIqEqCpLTyaWzJULBBwtpA84pkcLTiNp\n" + "mfIJWos9OsYH0hSK2xE/5qu+DkkaKrfS2Cyp61wdhURrX1fdlkBUBt9XH8S5A2bW\n" + "uQEY82GgXxl8HpehkB2RLgpkZQzxopzhoqG2P8IZFQmtOySzRPWtdpy0RJbvmLfZ\n" + "qaEwsq3g1jZFXhqUjc5y3vbHta2Xg5/zx0X/FB69j2KZsgUmklYVFG9te7UtSVDg\n" + "z3U69ed16AULxNqAF2LGhuIEI5+4PikXb+QxaOx/hw1BtEqMzLMbNphILSPBRI+N\n" + "pTZ2PCSedGsQzxsgns/iaLB7q1AIrKLUQlVpy+JNfauYqzvlMNXwMaoNQZDf9oOo\n" + "FkdTP5P8t/gGk2rlAgMBAAECggGBALedC4dC5O3cPodiKVhW6HiSThQQPgQH7Oql\n" + "ugW/h6HA9jHAcbWQiCyK9V9WQvTYyoLHHHKQ1ygpeEpyj741y4PU/XCALja3UU3j\n" + "NOeLhbnHcPRNxpvMRu8vrAYkx1uTS8uqawO2yZJ4IFXAJdOqfrtlWHPNP/7QGl9O\n" + "R4i8yzQWgglQKNtyg2OagWs3NCaikPZZS1aJDN5Hlc0KmkvDlx702zpoLV9vKut0\n" + "r520ITtRpNI72Dq9xIjJQMCa4Yltnuj1OmeJ2C5tTDL8gF/UwsALy01JOaZ9ekCD\n" + "bx/q4DBHXo5OOL4aKCVum8FOFrcaHALeWD1F19VVMuQMjLTAApv2eDL6NMORkrpK\n" + "bEEPfC4mjAtGOzwCkXe+53gXrKxMl+87IPC/FV/YuQRzWGZBCj052ELWqPbzJ9E7\n" + "QybGnSOw8Unoauz76aF0IMiiMu0u7pSp0LVQ+9SVYHhyTdYJfJPburssA3X4UuOX\n" + "KNI7gdOkb0yE883jcGQT+B2fdfrygQKBwQDkajgK6lsTChMeriPy++2MPpto64zW\n" + "2CNMPya5IC23ZFyRXs8UuMbGNTtXd9TXfISXYuGexbPCMXXLA272Bum/wkbf0NBu\n" + "DUVDYr0D4mIrjNb6NdTtFwHHfWCvQlhuVdS3kL9rSDoGO3mgedRpRpVR4Py+1emi\n" + "mMYGHN+UMwPzXmlhmvmONr6ObWebH14DdKyohkBuHVO/2HkET69F0zDOhbM+Wd8V\n" + "hK4PYo2MYV/n4CIf/UbBHjVXx4+EDWGhrNECgcEA/CxWuwr5+RjFGz66o+VM1nt7\n" + "LZgf1oDZKNlf+x6SlGYYCrk1t6yAtc3VbdkGSPsBHBR0WcpU8sMPMNhn5lU/pMp/\n" + "ntBx3LphNWJh3FH4jRkJvhQEZZI/TBIbnxp3C5xOCQr1njMk07vpse4xVhYgNcZf\n" + "9e8V6Ola/1xq+WYjWXVJXBj2cHoF8YZNlPAB38E9gFyU0dUQDjtF4Hfz2EvLniJu\n" + "p92nsT/jsxvEtUAoGAkNBhzXqhRcTAxuzbHbeNHVAoHBAITqKmJvrT+PBUE9JD4o\n" + "yzpo1BZhuzrp2uBrfyUKzI+DHzqYaPgt7b05DKcBXCFom99b8t5pPQkrrtfLz63q\n" + "p+qmKofjAuaHYl6r/kFcYrPk6NQArz6nvKlRFAnoGX1bBMUsvba3+MvXoBb5zdjU\n" + "8d8LhQengqTTMags9Q1QAmSD896QR9exk4FduIRT5GkuY6pNNQDen/VrCkCv/dYr\n" + "5qLGul71/RKQepkJSEUABMbxbeofgCSwZ2oE/kZhYwapgQKBwQD2TySj65PAYBZe\n" + "h0XsQlNsCA6HuVgXv6DdSn16niEUPChtiPxUHHVXnuZCNkHyVOF/mOcQsRWKTUZw\n" + "MmBB1bCleHlxGS6uJ4o9h4wIlDRPNU6Tz59/ynpzBhjerg3rVE/Qe1jvngrxmVEp\n" + "T3v3FwN9IvemE1J2PkB4vr9qPP54KZxvDZ7gu/9EKydqO4fJE0nMMCHYVuEo1XJq\n" + "Tx/pfBc1rXIiGtnpwnrY/l2DoFfJKkYDW3a3lM2WJmqwFXJGr8UCgcArtSJU3ewE\n" + "62J00pX8HJWvOVPrjKfgJvqUmpjLT4/AXNzEEFqij/L98DZU/b1GKGgdSFt3oIii\n" + "8Poeaas8GvtlyRZXONXC1TNzC+dzheF3MQ2euvAwulimvcp/rT1/Dw6ID2PWpthE\n" + "VBpijtoHZ3F2dCYHbYLVlrXC7G4IQ31XUZOujH5xOcZQob815J2+mFsdg/9UBm7c\n" + "uiyti3689G0RW9DM/F+NeJkoEo0D15JweVkSfDcsVTdvNsbeA1Pzzds=\n" + "-----END RSA PRIVATE KEY-----\n"; const gnutls_datum_t cli_ca3_key = { (unsigned char *)cli_ca3_key_pem, - sizeof(cli_ca3_key_pem) - 1 -}; + sizeof(cli_ca3_key_pem) - 1 }; const gnutls_datum_t cli_ca3_cert = { (unsigned char *)cli_ca3_cert_pem, - sizeof(cli_ca3_cert_pem) - 1 -}; + sizeof(cli_ca3_cert_pem) - 1 }; -const gnutls_datum_t cli_ca3_cert_chain = - { (unsigned char *)cli_ca3_cert_chain_pem, +const gnutls_datum_t cli_ca3_cert_chain = { + (unsigned char *)cli_ca3_cert_chain_pem, sizeof(cli_ca3_cert_chain_pem) - 1 }; static char clidsa_ca3_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIEMzCCApugAwIBAgIIV+OL0jeIUYkwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" - "AxMEQ0EtMzAgFw0xNjA5MjIwNzQ0MjBaGA85OTk5MTIzMTIzNTk1OVowFTETMBEG\n" - "A1UEAxMKRFNBIGNsaWVudDCCAbcwggErBgcqhkjOOAQBMIIBHgKBgQD6BQw6J3GB\n" - "Lv8xjTjq6flgCLUYf9wNQO1osjl8F3mP3P0ggZd101pwDG34Kdffby+PTB5rpe8Z\n" - "SUx83ozzCiCcxf+kM4B0B0JP7mlqLrdTyPbWTap8sCMtabKnuR7UWdhsB8WU2Ct9\n" - "/IcCEG2dYcmzzWXE6/Pdo45iCd7lv+fl/wIVAM8gQzNh7394wHpNStxbGq9Xe+7z\n" - "AoGAJuUzfmL64dwFgQDmow8BjA5jI4mPiXc9+HDlUG0xXT65tUqHyg5fTSVm8p+q\n" - "WaklZeWTvuDc7KYofGZolG3LxhBKvIXHiUrD5hJ/cE/qcx89oczD7mChHG8k4a+Y\n" - "sr9/gXMFp8/TUsiTXrPLvEedBiAL9isDGC+ibRswfFYqGKYDgYUAAoGBAOFzLEe4\n" - "9nHYysKSgx6o7LadjsWAcLLHvI4EcmRZf7cHW/S/FCHgpnMn7GvnD4xiaysDFA8A\n" - "XEh9QJutRiLcpp14bVkPd0E+1z3v3LDhwVaJ1DofWEMnAsGoRVkAuEBkND6aNoKI\n" - "AuUMvFlnpU8SD5SZrUQkP22jyMj+mxsJntK9o3YwdDAMBgNVHRMBAf8EAjAAMBMG\n" - "A1UdJQQMMAoGCCsGAQUFBwMCMA8GA1UdDwEB/wQFAwMHgAAwHQYDVR0OBBYEFCnQ\n" - "ScP7Ao3G+SjKY0a5DEmNF5X+MB8GA1UdIwQYMBaAFPmohhljtqQUE2B2DwGaNTbv\n" - "8bSvMA0GCSqGSIb3DQEBCwUAA4IBgQArAfKJgKd6Sz7BW0m46T4DxXWsrlYVc76M\n" - "metxnSBDZdWzRbP6dGXGkKH1J2Oftv3kVrRL8amDz7DLRE6pBAUDx+5Es/dheTNA\n" - "juIVZuKzSYoRPtuiO1gHvRPvyV/2HUpnLl+w2qW/Df4ZWlHz6ujuYFzhdWueon+t\n" - "7/JtabcuBxK6gFyNs+A0fHjszpWtZxUXuik1t4y9IcEV6Ig+vWk+GNwVAs5lQenv\n" - "7IhIg1EWxBNiRF3yKINAiyFkM4FcFEPqlbijX9xDorCK2Xn4HLIN2oUQJFYDqVOV\n" - "KGg0rMmeJ8rRZI0ELK89SdPyALe4HQzKnQtzxy45oq+Vv7A8B0lorTMPIq3WKxo4\n" - "mXJdEF2aYxeUsMYBDZOOslBc8UMaUAF8ncrk6eNqJoDZCxElfgDXx4CfM8Lh0V2c\n" - "MDBXeiNUf1HWcCkvnMPGLXZXez/5abnhNIFqDsmRxuhUqlTbarq3CxjAWMjQRb9c\n" - "SWUGHPlOkmEGRv5JB6djjpRFRwtHLNc=\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIEMzCCApugAwIBAgIIV+OL0jeIUYkwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" + "AxMEQ0EtMzAgFw0xNjA5MjIwNzQ0MjBaGA85OTk5MTIzMTIzNTk1OVowFTETMBEG\n" + "A1UEAxMKRFNBIGNsaWVudDCCAbcwggErBgcqhkjOOAQBMIIBHgKBgQD6BQw6J3GB\n" + "Lv8xjTjq6flgCLUYf9wNQO1osjl8F3mP3P0ggZd101pwDG34Kdffby+PTB5rpe8Z\n" + "SUx83ozzCiCcxf+kM4B0B0JP7mlqLrdTyPbWTap8sCMtabKnuR7UWdhsB8WU2Ct9\n" + "/IcCEG2dYcmzzWXE6/Pdo45iCd7lv+fl/wIVAM8gQzNh7394wHpNStxbGq9Xe+7z\n" + "AoGAJuUzfmL64dwFgQDmow8BjA5jI4mPiXc9+HDlUG0xXT65tUqHyg5fTSVm8p+q\n" + "WaklZeWTvuDc7KYofGZolG3LxhBKvIXHiUrD5hJ/cE/qcx89oczD7mChHG8k4a+Y\n" + "sr9/gXMFp8/TUsiTXrPLvEedBiAL9isDGC+ibRswfFYqGKYDgYUAAoGBAOFzLEe4\n" + "9nHYysKSgx6o7LadjsWAcLLHvI4EcmRZf7cHW/S/FCHgpnMn7GvnD4xiaysDFA8A\n" + "XEh9QJutRiLcpp14bVkPd0E+1z3v3LDhwVaJ1DofWEMnAsGoRVkAuEBkND6aNoKI\n" + "AuUMvFlnpU8SD5SZrUQkP22jyMj+mxsJntK9o3YwdDAMBgNVHRMBAf8EAjAAMBMG\n" + "A1UdJQQMMAoGCCsGAQUFBwMCMA8GA1UdDwEB/wQFAwMHgAAwHQYDVR0OBBYEFCnQ\n" + "ScP7Ao3G+SjKY0a5DEmNF5X+MB8GA1UdIwQYMBaAFPmohhljtqQUE2B2DwGaNTbv\n" + "8bSvMA0GCSqGSIb3DQEBCwUAA4IBgQArAfKJgKd6Sz7BW0m46T4DxXWsrlYVc76M\n" + "metxnSBDZdWzRbP6dGXGkKH1J2Oftv3kVrRL8amDz7DLRE6pBAUDx+5Es/dheTNA\n" + "juIVZuKzSYoRPtuiO1gHvRPvyV/2HUpnLl+w2qW/Df4ZWlHz6ujuYFzhdWueon+t\n" + "7/JtabcuBxK6gFyNs+A0fHjszpWtZxUXuik1t4y9IcEV6Ig+vWk+GNwVAs5lQenv\n" + "7IhIg1EWxBNiRF3yKINAiyFkM4FcFEPqlbijX9xDorCK2Xn4HLIN2oUQJFYDqVOV\n" + "KGg0rMmeJ8rRZI0ELK89SdPyALe4HQzKnQtzxy45oq+Vv7A8B0lorTMPIq3WKxo4\n" + "mXJdEF2aYxeUsMYBDZOOslBc8UMaUAF8ncrk6eNqJoDZCxElfgDXx4CfM8Lh0V2c\n" + "MDBXeiNUf1HWcCkvnMPGLXZXez/5abnhNIFqDsmRxuhUqlTbarq3CxjAWMjQRb9c\n" + "SWUGHPlOkmEGRv5JB6djjpRFRwtHLNc=\n" + "-----END CERTIFICATE-----\n"; static char clidsa_ca3_key_pem[] = - "-----BEGIN DSA PRIVATE KEY-----\n" - "MIIBuwIBAAKBgQD6BQw6J3GBLv8xjTjq6flgCLUYf9wNQO1osjl8F3mP3P0ggZd1\n" - "01pwDG34Kdffby+PTB5rpe8ZSUx83ozzCiCcxf+kM4B0B0JP7mlqLrdTyPbWTap8\n" - "sCMtabKnuR7UWdhsB8WU2Ct9/IcCEG2dYcmzzWXE6/Pdo45iCd7lv+fl/wIVAM8g\n" - "QzNh7394wHpNStxbGq9Xe+7zAoGAJuUzfmL64dwFgQDmow8BjA5jI4mPiXc9+HDl\n" - "UG0xXT65tUqHyg5fTSVm8p+qWaklZeWTvuDc7KYofGZolG3LxhBKvIXHiUrD5hJ/\n" - "cE/qcx89oczD7mChHG8k4a+Ysr9/gXMFp8/TUsiTXrPLvEedBiAL9isDGC+ibRsw\n" - "fFYqGKYCgYEA4XMsR7j2cdjKwpKDHqjstp2OxYBwsse8jgRyZFl/twdb9L8UIeCm\n" - "cyfsa+cPjGJrKwMUDwBcSH1Am61GItymnXhtWQ93QT7XPe/csOHBVonUOh9YQycC\n" - "wahFWQC4QGQ0Ppo2gogC5Qy8WWelTxIPlJmtRCQ/baPIyP6bGwme0r0CFDUW6VNf\n" - "FgAdB5hhtag7oTw45a72\n" "-----END DSA PRIVATE KEY-----\n"; + "-----BEGIN DSA PRIVATE KEY-----\n" + "MIIBuwIBAAKBgQD6BQw6J3GBLv8xjTjq6flgCLUYf9wNQO1osjl8F3mP3P0ggZd1\n" + "01pwDG34Kdffby+PTB5rpe8ZSUx83ozzCiCcxf+kM4B0B0JP7mlqLrdTyPbWTap8\n" + "sCMtabKnuR7UWdhsB8WU2Ct9/IcCEG2dYcmzzWXE6/Pdo45iCd7lv+fl/wIVAM8g\n" + "QzNh7394wHpNStxbGq9Xe+7zAoGAJuUzfmL64dwFgQDmow8BjA5jI4mPiXc9+HDl\n" + "UG0xXT65tUqHyg5fTSVm8p+qWaklZeWTvuDc7KYofGZolG3LxhBKvIXHiUrD5hJ/\n" + "cE/qcx89oczD7mChHG8k4a+Ysr9/gXMFp8/TUsiTXrPLvEedBiAL9isDGC+ibRsw\n" + "fFYqGKYCgYEA4XMsR7j2cdjKwpKDHqjstp2OxYBwsse8jgRyZFl/twdb9L8UIeCm\n" + "cyfsa+cPjGJrKwMUDwBcSH1Am61GItymnXhtWQ93QT7XPe/csOHBVonUOh9YQycC\n" + "wahFWQC4QGQ0Ppo2gogC5Qy8WWelTxIPlJmtRCQ/baPIyP6bGwme0r0CFDUW6VNf\n" + "FgAdB5hhtag7oTw45a72\n" + "-----END DSA PRIVATE KEY-----\n"; const gnutls_datum_t clidsa_ca3_key = { (unsigned char *)clidsa_ca3_key_pem, - sizeof(clidsa_ca3_key_pem) - 1 -}; + sizeof(clidsa_ca3_key_pem) - 1 }; const gnutls_datum_t clidsa_ca3_cert = { (unsigned char *)clidsa_ca3_cert_pem, - sizeof(clidsa_ca3_cert_pem) - 1 -}; + sizeof(clidsa_ca3_cert_pem) - 1 }; static char cligost01_ca3_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIC4zCCAUugAwIBAgIIWcZXXAz6FbgwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" - "AxMEQ0EtMzAgFw0xNzA5MjMxMjQ1MTdaGA85OTk5MTIzMTIzNTk1OVowGzEZMBcG\n" - "A1UEAxMQR09TVC0yMDAxIGNsaWVudDBjMBwGBiqFAwICEzASBgcqhQMCAiQABgcq\n" - "hQMCAh4BA0MABEBuvOEDe9xPJY9jsnFckLyQ6B5XeDi4Wo2E4c05im/3iI+rlWGI\n" - "rTc6hMmWca0BVDL0lObZ0ZHb4Vhy0XREgvtro3YwdDAMBgNVHRMBAf8EAjAAMBMG\n" - "A1UdJQQMMAoGCCsGAQUFBwMCMA8GA1UdDwEB/wQFAwMHsAAwHQYDVR0OBBYEFCck\n" - "yCTDt+A6zS8SnMRrgbyjeQmoMB8GA1UdIwQYMBaAFPmohhljtqQUE2B2DwGaNTbv\n" - "8bSvMA0GCSqGSIb3DQEBCwUAA4IBgQACkq/DQhHMEZPL0NwPFpnf2+RDviEuRE+C\n" - "xaOMTbHgxIUSy6xQAaHXK5hNr9xk87OFPPXmNKPl1nVBXrDF0aj+YUVBT2QeJIpA\n" - "APfyjnPtdZpRl3MXrJbQ/VBCdShvmKhspiOkGO6K8ETDeqE57qtPsUaGApfNK7oL\n" - "WgevmnkaQqNTVJglOoB5o5IDNv0JuFEkKSEvCgS25OV+gl0rRHmWDaIdQtDJLQjV\n" - "24b99/woYj0Ql8WfvMUUUYqTX03zmV56k5DgoNusTxKG+r71WQwbeb3XiVjof6I7\n" - "ll3ANTdyf/KrysLx/tk1pNgfangArpAZzbCRejTQVYdVfCf3KDdwXvKlTHy9Jv+p\n" - "ZUSf7kMnBqcUHpbceiyHFCXNAKIdrMDkTJAeee7ktpeYMfdO9oBki+6a8RJjNHIr\n" - "wHe0DcExV7UsokG6jMl8kH7gb7EW0UphL3ncWyY8C4jbtf/q1kci6SZDcapXBpGp\n" - "adJdx9bycdOUm1cGiboUMMPiCA5bO+Q=\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIC4zCCAUugAwIBAgIIWcZXXAz6FbgwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" + "AxMEQ0EtMzAgFw0xNzA5MjMxMjQ1MTdaGA85OTk5MTIzMTIzNTk1OVowGzEZMBcG\n" + "A1UEAxMQR09TVC0yMDAxIGNsaWVudDBjMBwGBiqFAwICEzASBgcqhQMCAiQABgcq\n" + "hQMCAh4BA0MABEBuvOEDe9xPJY9jsnFckLyQ6B5XeDi4Wo2E4c05im/3iI+rlWGI\n" + "rTc6hMmWca0BVDL0lObZ0ZHb4Vhy0XREgvtro3YwdDAMBgNVHRMBAf8EAjAAMBMG\n" + "A1UdJQQMMAoGCCsGAQUFBwMCMA8GA1UdDwEB/wQFAwMHsAAwHQYDVR0OBBYEFCck\n" + "yCTDt+A6zS8SnMRrgbyjeQmoMB8GA1UdIwQYMBaAFPmohhljtqQUE2B2DwGaNTbv\n" + "8bSvMA0GCSqGSIb3DQEBCwUAA4IBgQACkq/DQhHMEZPL0NwPFpnf2+RDviEuRE+C\n" + "xaOMTbHgxIUSy6xQAaHXK5hNr9xk87OFPPXmNKPl1nVBXrDF0aj+YUVBT2QeJIpA\n" + "APfyjnPtdZpRl3MXrJbQ/VBCdShvmKhspiOkGO6K8ETDeqE57qtPsUaGApfNK7oL\n" + "WgevmnkaQqNTVJglOoB5o5IDNv0JuFEkKSEvCgS25OV+gl0rRHmWDaIdQtDJLQjV\n" + "24b99/woYj0Ql8WfvMUUUYqTX03zmV56k5DgoNusTxKG+r71WQwbeb3XiVjof6I7\n" + "ll3ANTdyf/KrysLx/tk1pNgfangArpAZzbCRejTQVYdVfCf3KDdwXvKlTHy9Jv+p\n" + "ZUSf7kMnBqcUHpbceiyHFCXNAKIdrMDkTJAeee7ktpeYMfdO9oBki+6a8RJjNHIr\n" + "wHe0DcExV7UsokG6jMl8kH7gb7EW0UphL3ncWyY8C4jbtf/q1kci6SZDcapXBpGp\n" + "adJdx9bycdOUm1cGiboUMMPiCA5bO+Q=\n" + "-----END CERTIFICATE-----\n"; static char cligost01_ca3_key_pem[] = - "-----BEGIN PRIVATE KEY-----\n" - "MEUCAQAwHAYGKoUDAgITMBIGByqFAwICJAAGByqFAwICHgEEIgQgVPdBJeLrp/Zh\n" - "2tiV6qz9N6HraKTFTKz4alNuGhK2iLM=\n" "-----END PRIVATE KEY-----\n"; + "-----BEGIN PRIVATE KEY-----\n" + "MEUCAQAwHAYGKoUDAgITMBIGByqFAwICJAAGByqFAwICHgEEIgQgVPdBJeLrp/Zh\n" + "2tiV6qz9N6HraKTFTKz4alNuGhK2iLM=\n" + "-----END PRIVATE KEY-----\n"; -const gnutls_datum_t cligost01_ca3_key = - { (unsigned char *)cligost01_ca3_key_pem, +const gnutls_datum_t cligost01_ca3_key = { + (unsigned char *)cligost01_ca3_key_pem, sizeof(cligost01_ca3_key_pem) - 1 }; -const gnutls_datum_t cligost01_ca3_cert = - { (unsigned char *)cligost01_ca3_cert_pem, +const gnutls_datum_t cligost01_ca3_cert = { + (unsigned char *)cligost01_ca3_cert_pem, sizeof(cligost01_ca3_cert_pem) - 1 }; static char cligost12_256_ca3_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIC6jCCAVKgAwIBAgIIWcalgS6c0DMwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" - "AxMEQ0EtMzAgFw0xNzA5MjMxODE4NDJaGA85OTk5MTIzMTIzNTk1OVowHzEdMBsG\n" - "A1UEAxMUR09TVCAyMDEyLzI1NiBjbGllbnQwZjAfBggqhQMHAQEBATATBgcqhQMC\n" - "AiQABggqhQMHAQECAgNDAARArjme5Fb62BC4uPT8vQVim3xTjYY/RVvvUtAfYluY\n" - "o+8Zjz8A8VTFejK0Zok5f1dssbzrrHtRODJZsCuAjypIXqN2MHQwDAYDVR0TAQH/\n" - "BAIwADATBgNVHSUEDDAKBggrBgEFBQcDAjAPBgNVHQ8BAf8EBQMDB7AAMB0GA1Ud\n" - "DgQWBBTzHDVZRnSgaq4M3B7NdLResyKgajAfBgNVHSMEGDAWgBT5qIYZY7akFBNg\n" - "dg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAtAGi0lQdBC9Mp/TdqYFuMIDr\n" - "o/xGbie6Eq33BiqXo6B5DOiPZcE1Mi+y4htefvrEBkN4OLy4PbUHlfEC/ATs3X9S\n" - "cUHucm6gkyzUxTLPYPfTmXD24MRFDAJQKMvX8Pklbi7HyFZVYIQaJfEohaQZmuYR\n" - "S7Z03MW0Cbz6j7LGQl1Pyix78BLKeyLyAzQz63+hCuO46xp7TaGDKGI79Dd6Od0p\n" - "oY/B/MxfuP3RXhHrpjgp+Ev08dYoCH3Snps+TYWSyhkN0VhGRJgE5Tnhdly8XMW3\n" - "WKZqGYmWG+rBtiTgA6FZrw0qYwAsmN3yCo5pE+Ukd0Q5L0tugc0a9HK53AftG/zV\n" - "qf0DI+E4dEnUkVhdEQbW+rujGpAR0sgjgar5Zvwuu92BaV+AFucj7hVP1fqDySmp\n" - "E52EzrFcnCYrZb19aDJKgWevG5Vh6OEcu8Vx/zVFOoTx9ZCXniVLm7PaXyKXdhLv\n" - "Vhg3mi7koFAPGlTiKldJ/LKKPW0yti3I8L/p2F5+\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIC6jCCAVKgAwIBAgIIWcalgS6c0DMwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" + "AxMEQ0EtMzAgFw0xNzA5MjMxODE4NDJaGA85OTk5MTIzMTIzNTk1OVowHzEdMBsG\n" + "A1UEAxMUR09TVCAyMDEyLzI1NiBjbGllbnQwZjAfBggqhQMHAQEBATATBgcqhQMC\n" + "AiQABggqhQMHAQECAgNDAARArjme5Fb62BC4uPT8vQVim3xTjYY/RVvvUtAfYluY\n" + "o+8Zjz8A8VTFejK0Zok5f1dssbzrrHtRODJZsCuAjypIXqN2MHQwDAYDVR0TAQH/\n" + "BAIwADATBgNVHSUEDDAKBggrBgEFBQcDAjAPBgNVHQ8BAf8EBQMDB7AAMB0GA1Ud\n" + "DgQWBBTzHDVZRnSgaq4M3B7NdLResyKgajAfBgNVHSMEGDAWgBT5qIYZY7akFBNg\n" + "dg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAtAGi0lQdBC9Mp/TdqYFuMIDr\n" + "o/xGbie6Eq33BiqXo6B5DOiPZcE1Mi+y4htefvrEBkN4OLy4PbUHlfEC/ATs3X9S\n" + "cUHucm6gkyzUxTLPYPfTmXD24MRFDAJQKMvX8Pklbi7HyFZVYIQaJfEohaQZmuYR\n" + "S7Z03MW0Cbz6j7LGQl1Pyix78BLKeyLyAzQz63+hCuO46xp7TaGDKGI79Dd6Od0p\n" + "oY/B/MxfuP3RXhHrpjgp+Ev08dYoCH3Snps+TYWSyhkN0VhGRJgE5Tnhdly8XMW3\n" + "WKZqGYmWG+rBtiTgA6FZrw0qYwAsmN3yCo5pE+Ukd0Q5L0tugc0a9HK53AftG/zV\n" + "qf0DI+E4dEnUkVhdEQbW+rujGpAR0sgjgar5Zvwuu92BaV+AFucj7hVP1fqDySmp\n" + "E52EzrFcnCYrZb19aDJKgWevG5Vh6OEcu8Vx/zVFOoTx9ZCXniVLm7PaXyKXdhLv\n" + "Vhg3mi7koFAPGlTiKldJ/LKKPW0yti3I8L/p2F5+\n" + "-----END CERTIFICATE-----\n"; static char cligost12_256_ca3_key_pem[] = - "-----BEGIN PRIVATE KEY-----\n" - "MEgCAQAwHwYIKoUDBwEBAQEwEwYHKoUDAgIkAAYIKoUDBwEBAgIEIgQgnA1XIfe2\n" - "V3D0UVFQTRCHolA9v+r5cDt2tlr1gTZbDC8=\n" "-----END PRIVATE KEY-----\n"; + "-----BEGIN PRIVATE KEY-----\n" + "MEgCAQAwHwYIKoUDBwEBAQEwEwYHKoUDAgIkAAYIKoUDBwEBAgIEIgQgnA1XIfe2\n" + "V3D0UVFQTRCHolA9v+r5cDt2tlr1gTZbDC8=\n" + "-----END PRIVATE KEY-----\n"; -const gnutls_datum_t cligost12_256_ca3_key = - { (unsigned char *)cligost12_256_ca3_key_pem, +const gnutls_datum_t cligost12_256_ca3_key = { + (unsigned char *)cligost12_256_ca3_key_pem, sizeof(cligost12_256_ca3_key_pem) - 1 }; -const gnutls_datum_t cligost12_256_ca3_cert = - { (unsigned char *)cligost12_256_ca3_cert_pem, +const gnutls_datum_t cligost12_256_ca3_cert = { + (unsigned char *)cligost12_256_ca3_cert_pem, sizeof(cligost12_256_ca3_cert_pem) - 1 }; static char cligost12_512_ca3_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIDLzCCAZegAwIBAgIIWcalYA16syEwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" - "AxMEQ0EtMzAgFw0xNzA5MjMxODE4MDhaGA85OTk5MTIzMTIzNTk1OVowHzEdMBsG\n" - "A1UEAxMUR09TVCAyMDEyLzUxMiBjbGllbnQwgaowIQYIKoUDBwEBAQIwFQYJKoUD\n" - "BwECAQIBBggqhQMHAQECAwOBhAAEgYCyAdmv9viBTnemLvULAZ9RyaEf37ZAydKj\n" - "E3qLbZ5tTxgLAYhIIGApVPVb5SZxge3u2qY/ekkHjz9Asn5cPQ69wCvce87+2u1f\n" - "XcATUzYvR3UIL25C5BbNjDjGnufhjYAwT6uZ5xQ7j8/Wfr0MZU04O2CSUquKqfrB\n" - "DA81M2HvUqN2MHQwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDAjAP\n" - "BgNVHQ8BAf8EBQMDB7AAMB0GA1UdDgQWBBRYXgWHcQazcPFyxKrgRdfd2IPBozAf\n" - "BgNVHSMEGDAWgBT5qIYZY7akFBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOC\n" - "AYEAUOpvomUtaFQm5O8bEQk/d3ghZLzwfMKRngSq0XbXDi8t+TV+kFvkzJ/hrAOP\n" - "/HPCQdnEvdV2HyZzDb9b8cVegRHPPooKSV8+HCTNVXNKZPRSlE42S5kFIAnAxbs5\n" - "vzGfipp6jQe9dqlCYseikxnE31o3AX7QAlNBaXELu0JnEY5BoJeKoja8XS40b1k9\n" - "kKRwAGkdh1OcAy6pW8AH4m61RMDWFzmPGgcb0JiDNp+9HQDSkG904niU8AlvmoQD\n" - "Q2AVd9mam4NIjmA0hkVuSh+7Tn2XnoGoGxN/+u72qaSUA6ybkbtkIKpMeJ8vciI1\n" - "6GRhBYpI0OuRiAIbDA9WhfCCKwj9ZaIsSSHC7qADRz3bR/89Et1mM40v5jbYNDkV\n" - "1cvlca3+pK3DxNP7y/q3QoUz8++z9VXzsdVHc4wNUyg4E8mjMcdLlRsZbST0WjX+\n" - "IhxAkfOexMu3nJ3EVbjgvox6eIxjiTWr2DP6x666UztrnFSBhhypwKHb8jW7PYJ2\n" - "lWlI\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIDLzCCAZegAwIBAgIIWcalYA16syEwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" + "AxMEQ0EtMzAgFw0xNzA5MjMxODE4MDhaGA85OTk5MTIzMTIzNTk1OVowHzEdMBsG\n" + "A1UEAxMUR09TVCAyMDEyLzUxMiBjbGllbnQwgaowIQYIKoUDBwEBAQIwFQYJKoUD\n" + "BwECAQIBBggqhQMHAQECAwOBhAAEgYCyAdmv9viBTnemLvULAZ9RyaEf37ZAydKj\n" + "E3qLbZ5tTxgLAYhIIGApVPVb5SZxge3u2qY/ekkHjz9Asn5cPQ69wCvce87+2u1f\n" + "XcATUzYvR3UIL25C5BbNjDjGnufhjYAwT6uZ5xQ7j8/Wfr0MZU04O2CSUquKqfrB\n" + "DA81M2HvUqN2MHQwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDAjAP\n" + "BgNVHQ8BAf8EBQMDB7AAMB0GA1UdDgQWBBRYXgWHcQazcPFyxKrgRdfd2IPBozAf\n" + "BgNVHSMEGDAWgBT5qIYZY7akFBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOC\n" + "AYEAUOpvomUtaFQm5O8bEQk/d3ghZLzwfMKRngSq0XbXDi8t+TV+kFvkzJ/hrAOP\n" + "/HPCQdnEvdV2HyZzDb9b8cVegRHPPooKSV8+HCTNVXNKZPRSlE42S5kFIAnAxbs5\n" + "vzGfipp6jQe9dqlCYseikxnE31o3AX7QAlNBaXELu0JnEY5BoJeKoja8XS40b1k9\n" + "kKRwAGkdh1OcAy6pW8AH4m61RMDWFzmPGgcb0JiDNp+9HQDSkG904niU8AlvmoQD\n" + "Q2AVd9mam4NIjmA0hkVuSh+7Tn2XnoGoGxN/+u72qaSUA6ybkbtkIKpMeJ8vciI1\n" + "6GRhBYpI0OuRiAIbDA9WhfCCKwj9ZaIsSSHC7qADRz3bR/89Et1mM40v5jbYNDkV\n" + "1cvlca3+pK3DxNP7y/q3QoUz8++z9VXzsdVHc4wNUyg4E8mjMcdLlRsZbST0WjX+\n" + "IhxAkfOexMu3nJ3EVbjgvox6eIxjiTWr2DP6x666UztrnFSBhhypwKHb8jW7PYJ2\n" + "lWlI\n" + "-----END CERTIFICATE-----\n"; static char cligost12_512_ca3_key_pem[] = - "-----BEGIN PRIVATE KEY-----\n" - "MGoCAQAwIQYIKoUDBwEBAQIwFQYJKoUDBwECAQIBBggqhQMHAQECAwRCBEA9uga7\n" - "LIPp1heDZYj5EozNtbrmsKYMXrFasBIVAFFVQVFd6/+YjttV6Vmx16OFWrM+/ydX\n" - "rB0aUqYPU8w5DUyk\n" "-----END PRIVATE KEY-----\n"; - -const gnutls_datum_t cligost12_512_ca3_key = - { (unsigned char *)cligost12_512_ca3_key_pem, + "-----BEGIN PRIVATE KEY-----\n" + "MGoCAQAwIQYIKoUDBwEBAQIwFQYJKoUDBwECAQIBBggqhQMHAQECAwRCBEA9uga7\n" + "LIPp1heDZYj5EozNtbrmsKYMXrFasBIVAFFVQVFd6/+YjttV6Vmx16OFWrM+/ydX\n" + "rB0aUqYPU8w5DUyk\n" + "-----END PRIVATE KEY-----\n"; + +const gnutls_datum_t cligost12_512_ca3_key = { + (unsigned char *)cligost12_512_ca3_key_pem, sizeof(cligost12_512_ca3_key_pem) - 1 }; -const gnutls_datum_t cligost12_512_ca3_cert = - { (unsigned char *)cligost12_512_ca3_cert_pem, +const gnutls_datum_t cligost12_512_ca3_cert = { + (unsigned char *)cligost12_512_ca3_cert_pem, sizeof(cligost12_512_ca3_cert_pem) - 1 }; static char server_ca3_ecc_key_pem[] = - "-----BEGIN EC PRIVATE KEY-----\n" - "MHgCAQEEIQDn1XFX7QxTKXl2ekfSrEARsq+06ySEeeOB+N0igwcNLqAKBggqhkjO\n" - "PQMBB6FEA0IABG1J5VZy+PMTNJSuog4R3KmhbmIejOZZgPNtxkJcIubJIIO68kkd\n" - "GK04pl/ReivZAwibv+85lpT4sm/9RBVhLZM=\n" "-----END EC PRIVATE KEY-----\n"; - -const gnutls_datum_t server_ca3_ecc_key = - { (unsigned char *)server_ca3_ecc_key_pem, + "-----BEGIN EC PRIVATE KEY-----\n" + "MHgCAQEEIQDn1XFX7QxTKXl2ekfSrEARsq+06ySEeeOB+N0igwcNLqAKBggqhkjO\n" + "PQMBB6FEA0IABG1J5VZy+PMTNJSuog4R3KmhbmIejOZZgPNtxkJcIubJIIO68kkd\n" + "GK04pl/ReivZAwibv+85lpT4sm/9RBVhLZM=\n" + "-----END EC PRIVATE KEY-----\n"; + +const gnutls_datum_t server_ca3_ecc_key = { + (unsigned char *)server_ca3_ecc_key_pem, sizeof(server_ca3_ecc_key_pem) - 1 }; static char server_ca3_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIG5AIBAAKCAYEA2T14maos98C7s/geGZybgqYSxF+5NeTXKWpi9/vXmuIF8n3h\n" - "Uh20mooT2rgVHAzFWy/8H5IcWIiUQl+8KhyJCSuBJ+WhM0gw2uqSPwiOZUm4l3TQ\n" - "xmxS4eW/Brr4X88svJQ4xTTct2m5H1Nu9LZ8xWOZpGMGII7jf0YD6odG/DHE/sVH\n" - "jfceD7kl15jAta97+8uCbjMRPGcxg4VtmkCuSLOkGL9FhC0uYVbwfBnT+V0MEycO\n" - "Bx+Yv2BEu0xDVdkQcs0WPIRUPUmyuWBxxqLM1SSJSLsZub/DdiINXFure7dx57mW\n" - "w2EQwhETIhIoAc/LxGWchbDC4OWeyYjSkhv3/hEfQswyVx4MQXLVfRBHNipkU9T/\n" - "SXiP8WVDpfZSpY3PrfJtFJtwLMeXblpuLXGZuxXnJ2iYk1w/7RBuuKkylrQ7qCO/\n" - "l/TIx3uZb39oCCU9wqCltuEZ+jtX3PaAgp1QItFehSzOF2hudF/TQuuukVRBZF4o\n" - "fExwNYAvZvTSTKw9AgMBAAECggGAel8TMVRYMlOCKJWqtvit7QGJ7s6RMRewUCca\n" - "iuB1ikyp1vgr1argEnGXT4yEb6GOBpjYKByRFRoSkfUFtJ8QXncAMS48CPwwcRDT\n" - "wugZ9lp5ve9Sr4NTiOZ3Hd5yjN3SMIQ6GnR1pGfMnSXNidHGJRa+9IfHas2yvv38\n" - "tL7xMJ0EgBM3BHRgnbDI7VKhs3afm63+0f64RdNHY/PkUpD+2/s9g6czDIq65qAn\n" - "pXCTJJPSenN0hnS5AYzECtGh2JkFjXpF5B7/2pvZjqsy8eyjZURoQFLA5wWhLVr5\n" - "AQDJzeK//D6OMAd6kuLKezQxVIN0F0eC6XKEhEvq96xegQk3aMXk2jCHz6IYV6pm\n" - "zdnfIvP5fIP1HsL8JPiCQqBp7/MoSKlz/DCHH/6iQgQkIhxw/nYJd1+kjhHpm969\n" - "fw6WzzCA7om0CbKhuHjRnnwk1OylqKhTrgfO1mcaEoH90NIszE3j5pwqiPMdv+J0\n" - "k25pjaMDgeOd3bO8SW/oWQEH5LbBAoHBAP7QAaYg4Fsm0zr1Jvup6MsJdsI+2aTh\n" - "4E+hrx/MKsd78mQpRNXvEVIeopp214rzqW/dv/4vMBoV9tRCuw5cJCZCHaeGZ4JF\n" - "pU/+nBliukanL3XMN5Fp74vVthuQp69u3fa6YHHvL2L6EahSrHrbSE4+C5VYOV+Z\n" - "nfKDHD9Vo1zH8Fjxl7JJWI/LgSXCChm6Y9Vq7LviL7hZc4BdCbGJfAfv56oGHavE\n" - "zxU639fBbdhavNl6b9i7AeTD4Ad1KbsFrQKBwQDaQKP0eegbnHfHOdE+mb2aMtVN\n" - "f3BI25VsBoNWD2A0VEFMQClUPMH17OyS2YidYeVbcneef3VlgrIJZvlRsr76LHxP\n" - "vVtEug6ZgX5WS/DiJiZWESVJrGZ+gaeUIONGFObGO+Evvoe5bqSwm2Bu05HONb56\n" - "Q5qx7gfo+kfxHm2vjOOKpc/ceEz2QeJ3rOGoetocmaObHcgFOFO0UC2oyAJ3MAtY\n" - "8SkyiUJ/jDdCZbkVegT9kGe9OLKMpenG058uctECgcEAozqgM8mPrxR576SnakN3\n" - "isjvOJOGXGcNiDVst5PUO6Gcrqj5HYpdsBtL0mMaxDo+ahjFKpET4UH8shBlP1er\n" - "GI717CDfIcZ3lXzmhiSGa0gh0PYXCqGwAAXQ+Gt735fHvIu7yICN/Htw4EDFmJXs\n" - "BaMdTHgNmL4RPg7bA39afM7fmjp5EI6HmuWkP4nDaqPJ3Cb4q4rDQvaaVLpEwWPu\n" - "/i6iWno8e5JBjbn/NnkEYroNi8sw5sc0+VS4qE5XgySpAoHBAMB9bF0tu4nGqVl7\n" - "49FrdO7v0HLGZ/jKOfIJmIIpk3bzrJecqxbRc1v79vbZhwUPl2LdBSU0Uw0RhQaH\n" - "3HKyzH8HByio4DswQbofnJZt6ej7LqqP+qwMsmT24x7hFrHzs0m4/DXIvBnOvM/K\n" - "afW1AY62leVthJ1TS4SuYQ8HAERpZTIeZcKUE4TJvPxB7NBUcdPxqXsgfA4mjKSm\n" - "Zm7K4GnQZOGv6N7aclzeBMq5vtBzSr18RBJ+U/N6TUH/2Q/1UQKBwEPgS+LJCJAs\n" - "qaeBPTgiuzv2a6umQpezxjCispnU5e0sOFHV/f5NVuEZDrdH7WDHAX8nAU8TdDZM\n" - "/fqM4oOZJOY9yVsyXK9dN7YcG6lxlNbC8S4FatDorDr3DxmbeYqEMUfOR+H4VvgR\n" - "OHw+G5gmNHBAh30wDR+bxepSNBAexjo18zbMgNJsdyjU8s562Q7/ejcTgqZYt4nZ\n" - "r6wql68K+fJ1W38b+ENQ46bZZMvAh8z4MZyzBvS8M/grD0WBBwrWLA==\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIIG5AIBAAKCAYEA2T14maos98C7s/geGZybgqYSxF+5NeTXKWpi9/vXmuIF8n3h\n" + "Uh20mooT2rgVHAzFWy/8H5IcWIiUQl+8KhyJCSuBJ+WhM0gw2uqSPwiOZUm4l3TQ\n" + "xmxS4eW/Brr4X88svJQ4xTTct2m5H1Nu9LZ8xWOZpGMGII7jf0YD6odG/DHE/sVH\n" + "jfceD7kl15jAta97+8uCbjMRPGcxg4VtmkCuSLOkGL9FhC0uYVbwfBnT+V0MEycO\n" + "Bx+Yv2BEu0xDVdkQcs0WPIRUPUmyuWBxxqLM1SSJSLsZub/DdiINXFure7dx57mW\n" + "w2EQwhETIhIoAc/LxGWchbDC4OWeyYjSkhv3/hEfQswyVx4MQXLVfRBHNipkU9T/\n" + "SXiP8WVDpfZSpY3PrfJtFJtwLMeXblpuLXGZuxXnJ2iYk1w/7RBuuKkylrQ7qCO/\n" + "l/TIx3uZb39oCCU9wqCltuEZ+jtX3PaAgp1QItFehSzOF2hudF/TQuuukVRBZF4o\n" + "fExwNYAvZvTSTKw9AgMBAAECggGAel8TMVRYMlOCKJWqtvit7QGJ7s6RMRewUCca\n" + "iuB1ikyp1vgr1argEnGXT4yEb6GOBpjYKByRFRoSkfUFtJ8QXncAMS48CPwwcRDT\n" + "wugZ9lp5ve9Sr4NTiOZ3Hd5yjN3SMIQ6GnR1pGfMnSXNidHGJRa+9IfHas2yvv38\n" + "tL7xMJ0EgBM3BHRgnbDI7VKhs3afm63+0f64RdNHY/PkUpD+2/s9g6czDIq65qAn\n" + "pXCTJJPSenN0hnS5AYzECtGh2JkFjXpF5B7/2pvZjqsy8eyjZURoQFLA5wWhLVr5\n" + "AQDJzeK//D6OMAd6kuLKezQxVIN0F0eC6XKEhEvq96xegQk3aMXk2jCHz6IYV6pm\n" + "zdnfIvP5fIP1HsL8JPiCQqBp7/MoSKlz/DCHH/6iQgQkIhxw/nYJd1+kjhHpm969\n" + "fw6WzzCA7om0CbKhuHjRnnwk1OylqKhTrgfO1mcaEoH90NIszE3j5pwqiPMdv+J0\n" + "k25pjaMDgeOd3bO8SW/oWQEH5LbBAoHBAP7QAaYg4Fsm0zr1Jvup6MsJdsI+2aTh\n" + "4E+hrx/MKsd78mQpRNXvEVIeopp214rzqW/dv/4vMBoV9tRCuw5cJCZCHaeGZ4JF\n" + "pU/+nBliukanL3XMN5Fp74vVthuQp69u3fa6YHHvL2L6EahSrHrbSE4+C5VYOV+Z\n" + "nfKDHD9Vo1zH8Fjxl7JJWI/LgSXCChm6Y9Vq7LviL7hZc4BdCbGJfAfv56oGHavE\n" + "zxU639fBbdhavNl6b9i7AeTD4Ad1KbsFrQKBwQDaQKP0eegbnHfHOdE+mb2aMtVN\n" + "f3BI25VsBoNWD2A0VEFMQClUPMH17OyS2YidYeVbcneef3VlgrIJZvlRsr76LHxP\n" + "vVtEug6ZgX5WS/DiJiZWESVJrGZ+gaeUIONGFObGO+Evvoe5bqSwm2Bu05HONb56\n" + "Q5qx7gfo+kfxHm2vjOOKpc/ceEz2QeJ3rOGoetocmaObHcgFOFO0UC2oyAJ3MAtY\n" + "8SkyiUJ/jDdCZbkVegT9kGe9OLKMpenG058uctECgcEAozqgM8mPrxR576SnakN3\n" + "isjvOJOGXGcNiDVst5PUO6Gcrqj5HYpdsBtL0mMaxDo+ahjFKpET4UH8shBlP1er\n" + "GI717CDfIcZ3lXzmhiSGa0gh0PYXCqGwAAXQ+Gt735fHvIu7yICN/Htw4EDFmJXs\n" + "BaMdTHgNmL4RPg7bA39afM7fmjp5EI6HmuWkP4nDaqPJ3Cb4q4rDQvaaVLpEwWPu\n" + "/i6iWno8e5JBjbn/NnkEYroNi8sw5sc0+VS4qE5XgySpAoHBAMB9bF0tu4nGqVl7\n" + "49FrdO7v0HLGZ/jKOfIJmIIpk3bzrJecqxbRc1v79vbZhwUPl2LdBSU0Uw0RhQaH\n" + "3HKyzH8HByio4DswQbofnJZt6ej7LqqP+qwMsmT24x7hFrHzs0m4/DXIvBnOvM/K\n" + "afW1AY62leVthJ1TS4SuYQ8HAERpZTIeZcKUE4TJvPxB7NBUcdPxqXsgfA4mjKSm\n" + "Zm7K4GnQZOGv6N7aclzeBMq5vtBzSr18RBJ+U/N6TUH/2Q/1UQKBwEPgS+LJCJAs\n" + "qaeBPTgiuzv2a6umQpezxjCispnU5e0sOFHV/f5NVuEZDrdH7WDHAX8nAU8TdDZM\n" + "/fqM4oOZJOY9yVsyXK9dN7YcG6lxlNbC8S4FatDorDr3DxmbeYqEMUfOR+H4VvgR\n" + "OHw+G5gmNHBAh30wDR+bxepSNBAexjo18zbMgNJsdyjU8s562Q7/ejcTgqZYt4nZ\n" + "r6wql68K+fJ1W38b+ENQ46bZZMvAh8z4MZyzBvS8M/grD0WBBwrWLA==\n" + "-----END RSA PRIVATE KEY-----\n"; const gnutls_datum_t server_ca3_key = { (unsigned char *)server_ca3_key_pem, - sizeof(server_ca3_key_pem) - 1 -}; + sizeof(server_ca3_key_pem) - 1 }; static char server_ca3_rsa_pss_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIEowIBAAKCAQEAvxOfMAZbqIuVqkPt5s5fyNeuYD09r80oDEN54MS7/tMy+2yk\n" - "rwsX3a1zGLqn47Q59E0QAlheFP5ZXcQgFXVdQwWCn00YtYyGn5uGrzT80PlIAnaG\n" - "yVpjLGci7mU13IpHlLKqQbBaCdiDU1qV/fyy03t0KVdlyzTi3RJoKDU3XTG/eJmy\n" - "bPHuBGzBjtXn4IJkbbe9FL090YJbgu0EqgcVhaon9JOs5cVNGsHZ4zdRo1d9/5zK\n" - "tqaAVCPYECL/OYwTBS0O8kTrkoHwXo08bR0sUhb7enfI827mOOiIyokkzUu1YVyP\n" - "6GMnggmoUa8LaSeO3bsWU9rx1ngWBUQ5hBG5JQIDAQABAoIBAAkoYpfFpjz0u66W\n" - "ZN+MApE4rRXVuZAkcAfub/fy1ePHsYjVUytEh9dLCdokkAlcyO5JhzvlilTNP/E7\n" - "hiIhJuAgcns6EbYZzxX1OUZKbteBKw9bKOibmWc2Zjkwxp0UT4vz6C8PybDxHJIx\n" - "JEExDE0QfKfClZFgroLT8AQFUOr5cy8dY2edh17+rMMeBvJ5Yit3L6hlHjO+5eJA\n" - "E0WzxPrZWIFfAJl484HbZL/kBT8UXqYDTR7MB+qOq8mdKQSLcHwyjvItgvgklEPu\n" - "0Rl626K+R6841FmrXjUEBVtfkS8Osw/+CJDYw6YZwB7W8oLRRhcB7PjMWU5RHAIW\n" - "nZKFWn0CgYEA0qsP7FUemy7kG7cA8qMErt7oWV/DYIMpKaCJC+17vk37OmJbUpbo\n" - "UkfEIY9iT8hcPjP1jAnQf2d0A37zn9B7DTYPhbjbRtNrOSkdrE/u5FeWd4tr9uc7\n" - "JdYhRc6dkPKbVbFFyo7bdHwU0ZLtfhJYKpTYJ3oNvjsiLqBjIHaj2v8CgYEA6DFV\n" - "FKlQL9OnzTnQtu5oDvqHFiaHD1wdPTN9MeNWEFdcf/kd3eVvcRmpenGZaud7jn72\n" - "nhtXXyzc9GlVoKL6R+/1GVexwu477dr2Ci5MwPYGtyh2tJWjgHTad0bT0Jq4Bneu\n" - "ZuXZ0EszfxTmHkUkPlzvUrbPjoJxgb57P0Qfn9sCgYEAnYrTg5c8Jizw5VD74nfK\n" - "nsOP2pZk054CgGDPXB4i9fP3Nngrdx3navDEWZySlrttUA8nR6xnQX+qIJslsZQF\n" - "EaImBYhyYwrkGoEG8b9tFVHy8j9PY/sUHn19sGiNKMJlK7ZATPR8ZSYNo5RPCoLJ\n" - "cD6TTyJVeLdcHqZOuw4+Bx0CgYAvP5qokauXj+JdiJ5IG0thgOlsQHrLTVtF0Oxw\n" - "8mnY+W4BPJgvRzjeMvKhz+wALQqffIaCtd2ZqG9t7OFXxtJXQSUG+ylZGVFonV3j\n" - "xHgp6+aB7uH47VpQEXdDPk5r7I/2APSkS7F/CU55Va9eCYPOjOrGUhz6SuD+HdzG\n" - "iv5EcQKBgDyt221UUieb1sWhCHaKaQ3z8/aJlzs+ge6kSLqoVjcfr5uOKM1O5O72\n" - "bfy00r7B8ky77qXNTtzv2xt9Km/hRptqnCHsgly5OXW8pMcFnf7Kdh3Q+c5UzVlc\n" - "ODwZlaKK2fjp9xr2dNpYjRqyEb1gkC9FJMaxab9OAf+AoQifxncv\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_ca3_rsa_pss_key = - { (unsigned char *)server_ca3_rsa_pss_key_pem, + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIIEowIBAAKCAQEAvxOfMAZbqIuVqkPt5s5fyNeuYD09r80oDEN54MS7/tMy+2yk\n" + "rwsX3a1zGLqn47Q59E0QAlheFP5ZXcQgFXVdQwWCn00YtYyGn5uGrzT80PlIAnaG\n" + "yVpjLGci7mU13IpHlLKqQbBaCdiDU1qV/fyy03t0KVdlyzTi3RJoKDU3XTG/eJmy\n" + "bPHuBGzBjtXn4IJkbbe9FL090YJbgu0EqgcVhaon9JOs5cVNGsHZ4zdRo1d9/5zK\n" + "tqaAVCPYECL/OYwTBS0O8kTrkoHwXo08bR0sUhb7enfI827mOOiIyokkzUu1YVyP\n" + "6GMnggmoUa8LaSeO3bsWU9rx1ngWBUQ5hBG5JQIDAQABAoIBAAkoYpfFpjz0u66W\n" + "ZN+MApE4rRXVuZAkcAfub/fy1ePHsYjVUytEh9dLCdokkAlcyO5JhzvlilTNP/E7\n" + "hiIhJuAgcns6EbYZzxX1OUZKbteBKw9bKOibmWc2Zjkwxp0UT4vz6C8PybDxHJIx\n" + "JEExDE0QfKfClZFgroLT8AQFUOr5cy8dY2edh17+rMMeBvJ5Yit3L6hlHjO+5eJA\n" + "E0WzxPrZWIFfAJl484HbZL/kBT8UXqYDTR7MB+qOq8mdKQSLcHwyjvItgvgklEPu\n" + "0Rl626K+R6841FmrXjUEBVtfkS8Osw/+CJDYw6YZwB7W8oLRRhcB7PjMWU5RHAIW\n" + "nZKFWn0CgYEA0qsP7FUemy7kG7cA8qMErt7oWV/DYIMpKaCJC+17vk37OmJbUpbo\n" + "UkfEIY9iT8hcPjP1jAnQf2d0A37zn9B7DTYPhbjbRtNrOSkdrE/u5FeWd4tr9uc7\n" + "JdYhRc6dkPKbVbFFyo7bdHwU0ZLtfhJYKpTYJ3oNvjsiLqBjIHaj2v8CgYEA6DFV\n" + "FKlQL9OnzTnQtu5oDvqHFiaHD1wdPTN9MeNWEFdcf/kd3eVvcRmpenGZaud7jn72\n" + "nhtXXyzc9GlVoKL6R+/1GVexwu477dr2Ci5MwPYGtyh2tJWjgHTad0bT0Jq4Bneu\n" + "ZuXZ0EszfxTmHkUkPlzvUrbPjoJxgb57P0Qfn9sCgYEAnYrTg5c8Jizw5VD74nfK\n" + "nsOP2pZk054CgGDPXB4i9fP3Nngrdx3navDEWZySlrttUA8nR6xnQX+qIJslsZQF\n" + "EaImBYhyYwrkGoEG8b9tFVHy8j9PY/sUHn19sGiNKMJlK7ZATPR8ZSYNo5RPCoLJ\n" + "cD6TTyJVeLdcHqZOuw4+Bx0CgYAvP5qokauXj+JdiJ5IG0thgOlsQHrLTVtF0Oxw\n" + "8mnY+W4BPJgvRzjeMvKhz+wALQqffIaCtd2ZqG9t7OFXxtJXQSUG+ylZGVFonV3j\n" + "xHgp6+aB7uH47VpQEXdDPk5r7I/2APSkS7F/CU55Va9eCYPOjOrGUhz6SuD+HdzG\n" + "iv5EcQKBgDyt221UUieb1sWhCHaKaQ3z8/aJlzs+ge6kSLqoVjcfr5uOKM1O5O72\n" + "bfy00r7B8ky77qXNTtzv2xt9Km/hRptqnCHsgly5OXW8pMcFnf7Kdh3Q+c5UzVlc\n" + "ODwZlaKK2fjp9xr2dNpYjRqyEb1gkC9FJMaxab9OAf+AoQifxncv\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_ca3_rsa_pss_key = { + (unsigned char *)server_ca3_rsa_pss_key_pem, sizeof(server_ca3_rsa_pss_key_pem) - 1 }; static char server_ca3_rsa_pss_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIEAjCCAjqgAwIBAgIMWSa+iBMb7BVvI0GIMD0GCSqGSIb3DQEBCjAwoA0wCwYJ\n" - "YIZIAWUDBAIBoRowGAYJKoZIhvcNAQEIMAsGCWCGSAFlAwQCAaIDAgEgMA8xDTAL\n" - "BgNVBAMTBENBLTMwHhcNMTkwNDE1MDkyMjIwWhcNNDkxMjMxMDkyMjIwWjANMQsw\n" - "CQYDVQQGEwJHUjCCAVIwPQYJKoZIhvcNAQEKMDCgDTALBglghkgBZQMEAgGhGjAY\n" - "BgkqhkiG9w0BAQgwCwYJYIZIAWUDBAIBogMCASADggEPADCCAQoCggEBAL8TnzAG\n" - "W6iLlapD7ebOX8jXrmA9Pa/NKAxDeeDEu/7TMvtspK8LF92tcxi6p+O0OfRNEAJY\n" - "XhT+WV3EIBV1XUMFgp9NGLWMhp+bhq80/ND5SAJ2hslaYyxnIu5lNdyKR5SyqkGw\n" - "WgnYg1Nalf38stN7dClXZcs04t0SaCg1N10xv3iZsmzx7gRswY7V5+CCZG23vRS9\n" - "PdGCW4LtBKoHFYWqJ/STrOXFTRrB2eM3UaNXff+cyramgFQj2BAi/zmMEwUtDvJE\n" - "65KB8F6NPG0dLFIW+3p3yPNu5jjoiMqJJM1LtWFcj+hjJ4IJqFGvC2knjt27FlPa\n" - "8dZ4FgVEOYQRuSUCAwEAAaNQME4wDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUjFqe\n" - "vO9heHT9V24WV1ovs7pvUvMwHwYDVR0jBBgwFoAU+aiGGWO2pBQTYHYPAZo1Nu/x\n" - "tK8wPQYJKoZIhvcNAQEKMDCgDTALBglghkgBZQMEAgGhGjAYBgkqhkiG9w0BAQgw\n" - "CwYJYIZIAWUDBAIBogMCASADggGBAAgVZdGqSwhaa8c/KuqsnELoK5QlzdSUNZ0O\n" - "J31nVQyOmIJtqR14nMndU0y1iowAoj0osZFYjxjN6e2AqUF7R22uhtxmG6rr0YEi\n" - "XS+rNpbs7+gY/3hK30vo376QL85+U4v4HuTCd+yX8bY9VPqwZBMYO5rcDyXG82xC\n" - "ZKXT/Tr7XD80iMFjyR2cvRAjoZQeXbWzNE4AEm0jNz2F5Qnl6uSgtpDkHYKgr9xq\n" - "yUhm/WNKG86pzBxfcFju4prqBLiwUZh068b6znBAS0wMflrF/lznu01QqDhK6mz3\n" - "cSn5LlzoKjuouAWdZRieqokr1mNiWggmX5n2qKM9FJtDQctsvntCf/freAfy+Xmu\n" - "Tm055R9UzX76mL89eXY92U++HR8Y5IO5lqY1f13rzWK5rJB9qjz/Mamj9xR6Egoa\n" - "hh1ysRItcTCFJI5xKb/i3hHv94U12EH1IfFHofptr1pyCtAeOhJytWPndCiB2m1q\n" - "M2k3tl6cHvlUz7DpgnxNniuQ/dQ4MA==\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_ca3_rsa_pss_cert = - { (unsigned char *)server_ca3_rsa_pss_cert_pem, + "-----BEGIN CERTIFICATE-----\n" + "MIIEAjCCAjqgAwIBAgIMWSa+iBMb7BVvI0GIMD0GCSqGSIb3DQEBCjAwoA0wCwYJ\n" + "YIZIAWUDBAIBoRowGAYJKoZIhvcNAQEIMAsGCWCGSAFlAwQCAaIDAgEgMA8xDTAL\n" + "BgNVBAMTBENBLTMwHhcNMTkwNDE1MDkyMjIwWhcNNDkxMjMxMDkyMjIwWjANMQsw\n" + "CQYDVQQGEwJHUjCCAVIwPQYJKoZIhvcNAQEKMDCgDTALBglghkgBZQMEAgGhGjAY\n" + "BgkqhkiG9w0BAQgwCwYJYIZIAWUDBAIBogMCASADggEPADCCAQoCggEBAL8TnzAG\n" + "W6iLlapD7ebOX8jXrmA9Pa/NKAxDeeDEu/7TMvtspK8LF92tcxi6p+O0OfRNEAJY\n" + "XhT+WV3EIBV1XUMFgp9NGLWMhp+bhq80/ND5SAJ2hslaYyxnIu5lNdyKR5SyqkGw\n" + "WgnYg1Nalf38stN7dClXZcs04t0SaCg1N10xv3iZsmzx7gRswY7V5+CCZG23vRS9\n" + "PdGCW4LtBKoHFYWqJ/STrOXFTRrB2eM3UaNXff+cyramgFQj2BAi/zmMEwUtDvJE\n" + "65KB8F6NPG0dLFIW+3p3yPNu5jjoiMqJJM1LtWFcj+hjJ4IJqFGvC2knjt27FlPa\n" + "8dZ4FgVEOYQRuSUCAwEAAaNQME4wDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUjFqe\n" + "vO9heHT9V24WV1ovs7pvUvMwHwYDVR0jBBgwFoAU+aiGGWO2pBQTYHYPAZo1Nu/x\n" + "tK8wPQYJKoZIhvcNAQEKMDCgDTALBglghkgBZQMEAgGhGjAYBgkqhkiG9w0BAQgw\n" + "CwYJYIZIAWUDBAIBogMCASADggGBAAgVZdGqSwhaa8c/KuqsnELoK5QlzdSUNZ0O\n" + "J31nVQyOmIJtqR14nMndU0y1iowAoj0osZFYjxjN6e2AqUF7R22uhtxmG6rr0YEi\n" + "XS+rNpbs7+gY/3hK30vo376QL85+U4v4HuTCd+yX8bY9VPqwZBMYO5rcDyXG82xC\n" + "ZKXT/Tr7XD80iMFjyR2cvRAjoZQeXbWzNE4AEm0jNz2F5Qnl6uSgtpDkHYKgr9xq\n" + "yUhm/WNKG86pzBxfcFju4prqBLiwUZh068b6znBAS0wMflrF/lznu01QqDhK6mz3\n" + "cSn5LlzoKjuouAWdZRieqokr1mNiWggmX5n2qKM9FJtDQctsvntCf/freAfy+Xmu\n" + "Tm055R9UzX76mL89eXY92U++HR8Y5IO5lqY1f13rzWK5rJB9qjz/Mamj9xR6Egoa\n" + "hh1ysRItcTCFJI5xKb/i3hHv94U12EH1IfFHofptr1pyCtAeOhJytWPndCiB2m1q\n" + "M2k3tl6cHvlUz7DpgnxNniuQ/dQ4MA==\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_ca3_rsa_pss_cert = { + (unsigned char *)server_ca3_rsa_pss_cert_pem, sizeof(server_ca3_rsa_pss_cert_pem) - 1 }; static char server_ca3_rsa_pss2_key_pem[] = - "-----BEGIN PRIVATE KEY-----\n" - "MIIE7AIBADA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3\n" - "DQEBCDALBglghkgBZQMEAgGiAwIBIASCBKYwggSiAgEAAoIBAQCte+3f4Sgy89/R\n" - "LNfx/NazlTgHxL6IXJuL44tutdhxA91vCJt0+ZSShWibsuyF+H09it3G0+3LvE2W\n" - "vkU58ha7ljvCWckPf2+YpsFynNQc0Lw6BThRMQdJpJvI54OdxfhoPjhDnTui/EEj\n" - "/n9MbLo5rAX5ZDIpWa3Vgpl37Q8czjFINCgQ/f8qsD4WabBSbuSnrYDvuASGez4O\n" - "YDAFvM51+4U4GxN7ZKbrDTQcAySU0Fjy+I5eW/BIXd9TeHb6XYJudMQY7rozTijm\n" - "6qbZieahke+FUCgm8BnRXghfcVSswUZEJQkCvF+SdUl3iAYlY/UBzVFsGDSFbID2\n" - "XRtEvrnvAgMBAAECggEATj8COCL+lZSnU1oNgAiQ8eiQn/heE3TpdzvHLMT5/WdH\n" - "3YedTjIvj7J6TxdxVK+SFUrn4oC91VF2EVJ6OLt3A16sT2ldpQ7OT6SOxdn0VZbT\n" - "/rtR/lTFu7JxzTiWhXfAJYxCpkRpnIZ3/vsPgXHcwJxVCXnmof3fyNghzhRu54de\n" - "V5GUwJ6TT3MMYLYKf5ii8Yt9WqeekQF7Hy/kIwz+4CbgR3fDdRXFnRwdNmA4RG3w\n" - "TbwvqR9ApyAictYz4HpZWgYL+cXsH6Fm+/ChZiV9/zvdVVOo+dOAcxx2cWahm/NL\n" - "tksGD7hI5kqD9moi2wiAsGHPa+/rkLxIBm0xvF1veQKBgQDVFKujtQyfzJw5DUPL\n" - "kTCLp+370ZBTK01daKZrpfgw6QrylYljcIq8n1izauElYm5cZ9krMGzvL5ceg49p\n" - "obl1tdCOQJQACrJmLZSuvVfw8TSwHPyOGtRWxhF4miX+ym3yMFqRyN2nXx1iAo5I\n" - "Cz+aGmTfT1zSZkLnfQSjYWZFgwKBgQDQbX2wPavLI+1yWARStqrwVWO1mU0Nixbo\n" - "jHrRlzrKYqtV+0ea6550LtDG5A/zf9MP6439NNHPqs4rnY910odd+xmLdQj2gocB\n" - "IS4nPBE4o1k3L9m+bSw9nyDdJWRkASq4uem6QvyVsQpWUoxzmg5/fwRUlOU8X3pP\n" - "ZLSSpz06JQKBgF4b6AbAwtedFe54tlWlRWyY+Zn7n6Or/1pfCwmGXwyzEJu9gdWC\n" - "cjQGqLVtYg0R4S48y4SwuZwWR8c5UdDUlcWwTHFXgkZWcx5/ySg4BiwrTBrwYncc\n" - "0GWWy0aZxmg23cJWqtmyfnsani6YdGDLXwbf22dpdNSUR75X0AGc1f+jAoGADha4\n" - "nkcs66hcDpSghi7O0zwSZ14bdUTnoYSNcMl2MeQFjORVbMVsipH3jtovsdf8HmFf\n" - "0bPWUuFK2mvmHKLEf7fPfDvHBVLBaXQiuIg46ckw6KgVYefjS68L+6bhaFkj2CTJ\n" - "BcwtYrj65+bgk5fgTwH4+vatoC0cCW3XPuqLGvkCgYAj2NGQAEQ4HkmF55otDocZ\n" - "SkAJFfibyrkKEK+PsQ7dRR/HEc93hvkI0PHpsLx8A3FZ370FAPtiKmnmfabHxEsK\n" - "TWA2DTacq//MzXQrjsx0CpvGId1dOyVZIrwIFM17KmW5HHE37fY4PFZTZVXHAKf6\n" - "nQyUF7m3FUJjavm46KJIhw==\n" "-----END PRIVATE KEY-----\n"; - -const gnutls_datum_t server_ca3_rsa_pss2_key = - { (unsigned char *)server_ca3_rsa_pss2_key_pem, + "-----BEGIN PRIVATE KEY-----\n" + "MIIE7AIBADA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3\n" + "DQEBCDALBglghkgBZQMEAgGiAwIBIASCBKYwggSiAgEAAoIBAQCte+3f4Sgy89/R\n" + "LNfx/NazlTgHxL6IXJuL44tutdhxA91vCJt0+ZSShWibsuyF+H09it3G0+3LvE2W\n" + "vkU58ha7ljvCWckPf2+YpsFynNQc0Lw6BThRMQdJpJvI54OdxfhoPjhDnTui/EEj\n" + "/n9MbLo5rAX5ZDIpWa3Vgpl37Q8czjFINCgQ/f8qsD4WabBSbuSnrYDvuASGez4O\n" + "YDAFvM51+4U4GxN7ZKbrDTQcAySU0Fjy+I5eW/BIXd9TeHb6XYJudMQY7rozTijm\n" + "6qbZieahke+FUCgm8BnRXghfcVSswUZEJQkCvF+SdUl3iAYlY/UBzVFsGDSFbID2\n" + "XRtEvrnvAgMBAAECggEATj8COCL+lZSnU1oNgAiQ8eiQn/heE3TpdzvHLMT5/WdH\n" + "3YedTjIvj7J6TxdxVK+SFUrn4oC91VF2EVJ6OLt3A16sT2ldpQ7OT6SOxdn0VZbT\n" + "/rtR/lTFu7JxzTiWhXfAJYxCpkRpnIZ3/vsPgXHcwJxVCXnmof3fyNghzhRu54de\n" + "V5GUwJ6TT3MMYLYKf5ii8Yt9WqeekQF7Hy/kIwz+4CbgR3fDdRXFnRwdNmA4RG3w\n" + "TbwvqR9ApyAictYz4HpZWgYL+cXsH6Fm+/ChZiV9/zvdVVOo+dOAcxx2cWahm/NL\n" + "tksGD7hI5kqD9moi2wiAsGHPa+/rkLxIBm0xvF1veQKBgQDVFKujtQyfzJw5DUPL\n" + "kTCLp+370ZBTK01daKZrpfgw6QrylYljcIq8n1izauElYm5cZ9krMGzvL5ceg49p\n" + "obl1tdCOQJQACrJmLZSuvVfw8TSwHPyOGtRWxhF4miX+ym3yMFqRyN2nXx1iAo5I\n" + "Cz+aGmTfT1zSZkLnfQSjYWZFgwKBgQDQbX2wPavLI+1yWARStqrwVWO1mU0Nixbo\n" + "jHrRlzrKYqtV+0ea6550LtDG5A/zf9MP6439NNHPqs4rnY910odd+xmLdQj2gocB\n" + "IS4nPBE4o1k3L9m+bSw9nyDdJWRkASq4uem6QvyVsQpWUoxzmg5/fwRUlOU8X3pP\n" + "ZLSSpz06JQKBgF4b6AbAwtedFe54tlWlRWyY+Zn7n6Or/1pfCwmGXwyzEJu9gdWC\n" + "cjQGqLVtYg0R4S48y4SwuZwWR8c5UdDUlcWwTHFXgkZWcx5/ySg4BiwrTBrwYncc\n" + "0GWWy0aZxmg23cJWqtmyfnsani6YdGDLXwbf22dpdNSUR75X0AGc1f+jAoGADha4\n" + "nkcs66hcDpSghi7O0zwSZ14bdUTnoYSNcMl2MeQFjORVbMVsipH3jtovsdf8HmFf\n" + "0bPWUuFK2mvmHKLEf7fPfDvHBVLBaXQiuIg46ckw6KgVYefjS68L+6bhaFkj2CTJ\n" + "BcwtYrj65+bgk5fgTwH4+vatoC0cCW3XPuqLGvkCgYAj2NGQAEQ4HkmF55otDocZ\n" + "SkAJFfibyrkKEK+PsQ7dRR/HEc93hvkI0PHpsLx8A3FZ370FAPtiKmnmfabHxEsK\n" + "TWA2DTacq//MzXQrjsx0CpvGId1dOyVZIrwIFM17KmW5HHE37fY4PFZTZVXHAKf6\n" + "nQyUF7m3FUJjavm46KJIhw==\n" + "-----END PRIVATE KEY-----\n"; + +const gnutls_datum_t server_ca3_rsa_pss2_key = { + (unsigned char *)server_ca3_rsa_pss2_key_pem, sizeof(server_ca3_rsa_pss2_key_pem) - 1 }; static char server_ca3_rsa_pss2_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIID0TCCAjmgAwIBAgIIWXYEJjkAauMwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" - "AxMEQ0EtMzAgFw0xNzA3MjQxNDI4NTVaGA85OTk5MTIzMTIzNTk1OVowADCCAVIw\n" - "PQYJKoZIhvcNAQEKMDCgDTALBglghkgBZQMEAgGhGjAYBgkqhkiG9w0BAQgwCwYJ\n" - "YIZIAWUDBAIBogMCASADggEPADCCAQoCggEBAK177d/hKDLz39Es1/H81rOVOAfE\n" - "vohcm4vji2612HED3W8Im3T5lJKFaJuy7IX4fT2K3cbT7cu8TZa+RTnyFruWO8JZ\n" - "yQ9/b5imwXKc1BzQvDoFOFExB0mkm8jng53F+Gg+OEOdO6L8QSP+f0xsujmsBflk\n" - "MilZrdWCmXftDxzOMUg0KBD9/yqwPhZpsFJu5KetgO+4BIZ7Pg5gMAW8znX7hTgb\n" - "E3tkpusNNBwDJJTQWPL4jl5b8Ehd31N4dvpdgm50xBjuujNOKObqptmJ5qGR74VQ\n" - "KCbwGdFeCF9xVKzBRkQlCQK8X5J1SXeIBiVj9QHNUWwYNIVsgPZdG0S+ue8CAwEA\n" - "AaOBjTCBijAMBgNVHRMBAf8EAjAAMBQGA1UdEQQNMAuCCWxvY2FsaG9zdDATBgNV\n" - "HSUEDDAKBggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDB4AAMB0GA1UdDgQWBBQCiLaK\n" - "LrqB0vaCnoNP1V8QVLlA8jAfBgNVHSMEGDAWgBT5qIYZY7akFBNgdg8BmjU27/G0\n" - "rzANBgkqhkiG9w0BAQsFAAOCAYEANgnTu4nYiv1nH6Iqpnn48CNrGK25ax6FuPvc\n" - "HxOyFFa9jomP8KjyNv3EsmmoBcQBkbRdAX8sFdtbyjILqRLoRMFO7D60BmCitGYH\n" - "MDjEIkG9QjcCo03YIT93SORwnt1qrWh6paOH7Nme+CsgRyXN7iNNur2LgGSilQ7P\n" - "Rs/vr0DdxmlUxUQHDa5GRIvU3FFs4NLC/9sQd3+JGqzDbY7UqLnP5fzn6/PSMKIw\n" - "Gc4IzbJrqjFsyfjQkblM2eBwmkUD3SnTFWqYwUsohGlSxBwKSIyVzlyuoD1FXop7\n" - "lgG8/a1D/ZFa34q8tj24Wnd9zdr/Jrv2g51OSf0VIbQdP92l2kDouobPS/7DTgPI\n" - "D7h52NLVm8cbV1RqxbeS3spZ2OAQn8tLiTwz+abNdsikFjMvfXq61iIv3QASUyUB\n" - "VydSB7stwAUd6wys2H7crmeiMMtgxSjZJtB4GDUCb24a+/a4IgpqxFzGDLE9Ur69\n" - "D8aQbKGJzzih56a2wwc0ZqA0ilGm\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_ca3_rsa_pss2_cert = - { (unsigned char *)server_ca3_rsa_pss2_cert_pem, + "-----BEGIN CERTIFICATE-----\n" + "MIID0TCCAjmgAwIBAgIIWXYEJjkAauMwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" + "AxMEQ0EtMzAgFw0xNzA3MjQxNDI4NTVaGA85OTk5MTIzMTIzNTk1OVowADCCAVIw\n" + "PQYJKoZIhvcNAQEKMDCgDTALBglghkgBZQMEAgGhGjAYBgkqhkiG9w0BAQgwCwYJ\n" + "YIZIAWUDBAIBogMCASADggEPADCCAQoCggEBAK177d/hKDLz39Es1/H81rOVOAfE\n" + "vohcm4vji2612HED3W8Im3T5lJKFaJuy7IX4fT2K3cbT7cu8TZa+RTnyFruWO8JZ\n" + "yQ9/b5imwXKc1BzQvDoFOFExB0mkm8jng53F+Gg+OEOdO6L8QSP+f0xsujmsBflk\n" + "MilZrdWCmXftDxzOMUg0KBD9/yqwPhZpsFJu5KetgO+4BIZ7Pg5gMAW8znX7hTgb\n" + "E3tkpusNNBwDJJTQWPL4jl5b8Ehd31N4dvpdgm50xBjuujNOKObqptmJ5qGR74VQ\n" + "KCbwGdFeCF9xVKzBRkQlCQK8X5J1SXeIBiVj9QHNUWwYNIVsgPZdG0S+ue8CAwEA\n" + "AaOBjTCBijAMBgNVHRMBAf8EAjAAMBQGA1UdEQQNMAuCCWxvY2FsaG9zdDATBgNV\n" + "HSUEDDAKBggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDB4AAMB0GA1UdDgQWBBQCiLaK\n" + "LrqB0vaCnoNP1V8QVLlA8jAfBgNVHSMEGDAWgBT5qIYZY7akFBNgdg8BmjU27/G0\n" + "rzANBgkqhkiG9w0BAQsFAAOCAYEANgnTu4nYiv1nH6Iqpnn48CNrGK25ax6FuPvc\n" + "HxOyFFa9jomP8KjyNv3EsmmoBcQBkbRdAX8sFdtbyjILqRLoRMFO7D60BmCitGYH\n" + "MDjEIkG9QjcCo03YIT93SORwnt1qrWh6paOH7Nme+CsgRyXN7iNNur2LgGSilQ7P\n" + "Rs/vr0DdxmlUxUQHDa5GRIvU3FFs4NLC/9sQd3+JGqzDbY7UqLnP5fzn6/PSMKIw\n" + "Gc4IzbJrqjFsyfjQkblM2eBwmkUD3SnTFWqYwUsohGlSxBwKSIyVzlyuoD1FXop7\n" + "lgG8/a1D/ZFa34q8tj24Wnd9zdr/Jrv2g51OSf0VIbQdP92l2kDouobPS/7DTgPI\n" + "D7h52NLVm8cbV1RqxbeS3spZ2OAQn8tLiTwz+abNdsikFjMvfXq61iIv3QASUyUB\n" + "VydSB7stwAUd6wys2H7crmeiMMtgxSjZJtB4GDUCb24a+/a4IgpqxFzGDLE9Ur69\n" + "D8aQbKGJzzih56a2wwc0ZqA0ilGm\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_ca3_rsa_pss2_cert = { + (unsigned char *)server_ca3_rsa_pss2_cert_pem, sizeof(server_ca3_rsa_pss2_cert_pem) - 1 }; static char cli_ca3_rsa_pss_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIEAjCCAjqgAwIBAgIMWSa+VhOfC8uEpb/cMD0GCSqGSIb3DQEBCjAwoA0wCwYJ\n" - "YIZIAWUDBAIBoRowGAYJKoZIhvcNAQEIMAsGCWCGSAFlAwQCAaIDAgEgMA8xDTAL\n" - "BgNVBAMTBENBLTMwHhcNMDQwMjI5MTUyMTQyWhcNMjQwMjI5MTUyMTQxWjANMQsw\n" - "CQYDVQQGEwJHUjCCAVIwPQYJKoZIhvcNAQEKMDCgDTALBglghkgBZQMEAgGhGjAY\n" - "BgkqhkiG9w0BAQgwCwYJYIZIAWUDBAIBogMCASADggEPADCCAQoCggEBAL8TnzAG\n" - "W6iLlapD7ebOX8jXrmA9Pa/NKAxDeeDEu/7TMvtspK8LF92tcxi6p+O0OfRNEAJY\n" - "XhT+WV3EIBV1XUMFgp9NGLWMhp+bhq80/ND5SAJ2hslaYyxnIu5lNdyKR5SyqkGw\n" - "WgnYg1Nalf38stN7dClXZcs04t0SaCg1N10xv3iZsmzx7gRswY7V5+CCZG23vRS9\n" - "PdGCW4LtBKoHFYWqJ/STrOXFTRrB2eM3UaNXff+cyramgFQj2BAi/zmMEwUtDvJE\n" - "65KB8F6NPG0dLFIW+3p3yPNu5jjoiMqJJM1LtWFcj+hjJ4IJqFGvC2knjt27FlPa\n" - "8dZ4FgVEOYQRuSUCAwEAAaNQME4wDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUjFqe\n" - "vO9heHT9V24WV1ovs7pvUvMwHwYDVR0jBBgwFoAU+aiGGWO2pBQTYHYPAZo1Nu/x\n" - "tK8wPQYJKoZIhvcNAQEKMDCgDTALBglghkgBZQMEAgGhGjAYBgkqhkiG9w0BAQgw\n" - "CwYJYIZIAWUDBAIBogMCASADggGBAI435L6mZnGnCtQdtUBGgypMP2g5VuSBu2lP\n" - "5msLYuK2vPZTCtCLAg2JSsQhVaDDK+V7wtyXIgnEtQWrDE3RQBmWtCWpVrrP7kh3\n" - "ZN751l6+z1UTEg8sVQ7MODbEZCB9+2XXAb50Oh4cO65IfUI5Sqnn2+k3ZPLp280s\n" - "KdlaA4ZzmQSZcgEDWtoch8QiO+HvlXGqjejQUFh1ObBJXpXX5Q7NP5K7ChI82LPJ\n" - "T+rdqTopIgM3nAg9Je7gqsHiPdEdpArKwQq9wMxTmtQECK6KInueaDXuoDs5xg6k\n" - "XYQ1fiS0SI/pJ9xn0SCc6BNmkbfTpmKVwF9MWIyGyzWBhkSSWxsKbh5OuUCWJsyG\n" - "eLOrPK9fVKv/YQCfDHC3F1WI6xtHg7CCD7vvyJv5bFH8LN8YGoZNt1ZfU1lNw7rP\n" - "sRecz45/okiAbk9/SgnpzHInNBBzYu2Ym+yGVO/tIeErPXrnkM7uF9Di/K1n2+zF\n" - "vXOeamGsi2jyiC5LbreWecbMnzi3vQ==\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t cli_ca3_rsa_pss_cert = - { (unsigned char *)cli_ca3_rsa_pss_cert_pem, + "-----BEGIN CERTIFICATE-----\n" + "MIIEAjCCAjqgAwIBAgIMWSa+VhOfC8uEpb/cMD0GCSqGSIb3DQEBCjAwoA0wCwYJ\n" + "YIZIAWUDBAIBoRowGAYJKoZIhvcNAQEIMAsGCWCGSAFlAwQCAaIDAgEgMA8xDTAL\n" + "BgNVBAMTBENBLTMwHhcNMDQwMjI5MTUyMTQyWhcNMjQwMjI5MTUyMTQxWjANMQsw\n" + "CQYDVQQGEwJHUjCCAVIwPQYJKoZIhvcNAQEKMDCgDTALBglghkgBZQMEAgGhGjAY\n" + "BgkqhkiG9w0BAQgwCwYJYIZIAWUDBAIBogMCASADggEPADCCAQoCggEBAL8TnzAG\n" + "W6iLlapD7ebOX8jXrmA9Pa/NKAxDeeDEu/7TMvtspK8LF92tcxi6p+O0OfRNEAJY\n" + "XhT+WV3EIBV1XUMFgp9NGLWMhp+bhq80/ND5SAJ2hslaYyxnIu5lNdyKR5SyqkGw\n" + "WgnYg1Nalf38stN7dClXZcs04t0SaCg1N10xv3iZsmzx7gRswY7V5+CCZG23vRS9\n" + "PdGCW4LtBKoHFYWqJ/STrOXFTRrB2eM3UaNXff+cyramgFQj2BAi/zmMEwUtDvJE\n" + "65KB8F6NPG0dLFIW+3p3yPNu5jjoiMqJJM1LtWFcj+hjJ4IJqFGvC2knjt27FlPa\n" + "8dZ4FgVEOYQRuSUCAwEAAaNQME4wDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUjFqe\n" + "vO9heHT9V24WV1ovs7pvUvMwHwYDVR0jBBgwFoAU+aiGGWO2pBQTYHYPAZo1Nu/x\n" + "tK8wPQYJKoZIhvcNAQEKMDCgDTALBglghkgBZQMEAgGhGjAYBgkqhkiG9w0BAQgw\n" + "CwYJYIZIAWUDBAIBogMCASADggGBAI435L6mZnGnCtQdtUBGgypMP2g5VuSBu2lP\n" + "5msLYuK2vPZTCtCLAg2JSsQhVaDDK+V7wtyXIgnEtQWrDE3RQBmWtCWpVrrP7kh3\n" + "ZN751l6+z1UTEg8sVQ7MODbEZCB9+2XXAb50Oh4cO65IfUI5Sqnn2+k3ZPLp280s\n" + "KdlaA4ZzmQSZcgEDWtoch8QiO+HvlXGqjejQUFh1ObBJXpXX5Q7NP5K7ChI82LPJ\n" + "T+rdqTopIgM3nAg9Je7gqsHiPdEdpArKwQq9wMxTmtQECK6KInueaDXuoDs5xg6k\n" + "XYQ1fiS0SI/pJ9xn0SCc6BNmkbfTpmKVwF9MWIyGyzWBhkSSWxsKbh5OuUCWJsyG\n" + "eLOrPK9fVKv/YQCfDHC3F1WI6xtHg7CCD7vvyJv5bFH8LN8YGoZNt1ZfU1lNw7rP\n" + "sRecz45/okiAbk9/SgnpzHInNBBzYu2Ym+yGVO/tIeErPXrnkM7uF9Di/K1n2+zF\n" + "vXOeamGsi2jyiC5LbreWecbMnzi3vQ==\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t cli_ca3_rsa_pss_cert = { + (unsigned char *)cli_ca3_rsa_pss_cert_pem, sizeof(cli_ca3_rsa_pss_cert_pem) - 1 }; -# define cli_ca3_rsa_pss_key server_ca3_rsa_pss_key +#define cli_ca3_rsa_pss_key server_ca3_rsa_pss_key /* server EdDSA key */ static char server_ca3_eddsa_key_pem[] = - "-----BEGIN PRIVATE KEY-----\n" - "MC4CAQAwBQYDK2VwBCIEIBypI9w1qP3WLaiYuWB7zhA99GTG5UsKZVZqPHNlUaIv\n" - "-----END PRIVATE KEY-----\n"; + "-----BEGIN PRIVATE KEY-----\n" + "MC4CAQAwBQYDK2VwBCIEIBypI9w1qP3WLaiYuWB7zhA99GTG5UsKZVZqPHNlUaIv\n" + "-----END PRIVATE KEY-----\n"; -const gnutls_datum_t server_ca3_eddsa_key = - { (unsigned char *)server_ca3_eddsa_key_pem, +const gnutls_datum_t server_ca3_eddsa_key = { + (unsigned char *)server_ca3_eddsa_key_pem, sizeof(server_ca3_eddsa_key_pem) - 1 }; static char server_ca3_eddsa_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIBEzCBxqADAgECAgxZLBvYDjrxFhfqLoIwBQYDK2VwMA0xCzAJBgNVBAYTAkdS\n" - "MB4XDTA0MDIyOTE1MjE0MloXDTI0MDIyOTE1MjE0MVowDTELMAkGA1UEBhMCR1Iw\n" - "KjAFBgMrZXADIQCrr5izw0GNQSIhwYanuHD7RG7HfiCHe9kipF3SlwnVSKNAMD4w\n" - "DAYDVR0TAQH/BAIwADAPBgNVHQ8BAf8EBQMDB4AAMB0GA1UdDgQWBBSJg0wiKtJf\n" - "jqv1BmHV8w0JD5X2BjAFBgMrZXADQQB94NbYtwGCvyI6EvBZk5xgOyWNdKVy9peh\n" - "KKn/PNiAq4fPNEupyzC3AzE1xLzKLRArAFFDDUjPCwy3OR4js3MF\n" - "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_ca3_eddsa_cert = - { (unsigned char *)server_ca3_eddsa_cert_pem, + "-----BEGIN CERTIFICATE-----\n" + "MIIBEzCBxqADAgECAgxZLBvYDjrxFhfqLoIwBQYDK2VwMA0xCzAJBgNVBAYTAkdS\n" + "MB4XDTA0MDIyOTE1MjE0MloXDTI0MDIyOTE1MjE0MVowDTELMAkGA1UEBhMCR1Iw\n" + "KjAFBgMrZXADIQCrr5izw0GNQSIhwYanuHD7RG7HfiCHe9kipF3SlwnVSKNAMD4w\n" + "DAYDVR0TAQH/BAIwADAPBgNVHQ8BAf8EBQMDB4AAMB0GA1UdDgQWBBSJg0wiKtJf\n" + "jqv1BmHV8w0JD5X2BjAFBgMrZXADQQB94NbYtwGCvyI6EvBZk5xgOyWNdKVy9peh\n" + "KKn/PNiAq4fPNEupyzC3AzE1xLzKLRArAFFDDUjPCwy3OR4js3MF\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_ca3_eddsa_cert = { + (unsigned char *)server_ca3_eddsa_cert_pem, sizeof(server_ca3_eddsa_cert_pem) - 1 }; static char server_ca3_gost01_key_pem[] = - "-----BEGIN PRIVATE KEY-----\n" - "MEUCAQAwHAYGKoUDAgITMBIGByqFAwICJAAGByqFAwICHgEEIgQgR1lBLIr4WBpn\n" - "4MOCH8oxGWb52EPNL3gjNJiQuBQuf6U=\n" "-----END PRIVATE KEY-----\n"; + "-----BEGIN PRIVATE KEY-----\n" + "MEUCAQAwHAYGKoUDAgITMBIGByqFAwICJAAGByqFAwICHgEEIgQgR1lBLIr4WBpn\n" + "4MOCH8oxGWb52EPNL3gjNJiQuBQuf6U=\n" + "-----END PRIVATE KEY-----\n"; -const gnutls_datum_t server_ca3_gost01_key = - { (unsigned char *)server_ca3_gost01_key_pem, +const gnutls_datum_t server_ca3_gost01_key = { + (unsigned char *)server_ca3_gost01_key_pem, sizeof(server_ca3_gost01_key_pem) - 1 }; static char server_ca3_gost01_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIC7TCCAVWgAwIBAgIIWcZJ7xuHksUwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" - "AxMEQ0EtMzAgFw0xOTEwMDgxMDQ2NDBaGA85OTk5MTIzMTIzNTk1OVowDTELMAkG\n" - "A1UEAxMCR1IwYzAcBgYqhQMCAhMwEgYHKoUDAgIkAAYHKoUDAgIeAQNDAARA0Lvp\n" - "9MaoYDxzkURVz71Q3Sw9Wrwa2F483xDd0mOID8CK7JY8C8gz/1dfZniUObT1JMa6\n" - "hkGsQyFvPLD6Vr1bN6OBjTCBijAMBgNVHRMBAf8EAjAAMBQGA1UdEQQNMAuCCWxv\n" - "Y2FsaG9zdDATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDB4AAMB0G\n" - "A1UdDgQWBBSGUfwGWchcx3r3TNANllOEOFkTWDAfBgNVHSMEGDAWgBT5qIYZY7ak\n" - "FBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEACdzEVIyFvPlx2J7Ab4Hq\n" - "Oz0IGk2QaZ4cJkWZxjrPc7u6XCeBah8TEtF12LJ6vXBS+Cf9IF50YIMK/8GjJjs1\n" - "Allwdx79RuWFS2TdnsAjsAWwyKBQITkmv/kXULtExC9ospdGVIeYbdcmufgk023Q\n" - "PJh5LAMXHZ1lrsI1DgBhihgZx86wTAGd8yRC+dratvSbawC0sFan8X1n9R/Fxkzt\n" - "YuLEulh7FZpTWPYu30fyUrpEZVCWPlCzCrSijhCVBhAnT4eEGd7qmU0Oj+khHFNn\n" - "iVJ40/3JG21Yln2t/8uY1YIM2+ISTk4n2gkmXHrRAfNi3bXupdQQyAqRRT7b/Y/y\n" - "jhYzWekGLAvz0qrS78Ls8Kp7TfhIVEcWz9pfo77SmURxT6SDTiet7W5VD+VaS+hW\n" - "jl4L+IGxCsBIY5mWlT8KYTNHG34ln+5W+TfZMGARZFf4ZfQi2lgs3p0oqn6f9c+w\n" - "AdMyo73YqtbmVT2eGB05ezMeRl2Anjfwvj9JinhHMC04\n" - "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_ca3_gost01_cert = - { (unsigned char *)server_ca3_gost01_cert_pem, + "-----BEGIN CERTIFICATE-----\n" + "MIIC7TCCAVWgAwIBAgIIWcZJ7xuHksUwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" + "AxMEQ0EtMzAgFw0xOTEwMDgxMDQ2NDBaGA85OTk5MTIzMTIzNTk1OVowDTELMAkG\n" + "A1UEAxMCR1IwYzAcBgYqhQMCAhMwEgYHKoUDAgIkAAYHKoUDAgIeAQNDAARA0Lvp\n" + "9MaoYDxzkURVz71Q3Sw9Wrwa2F483xDd0mOID8CK7JY8C8gz/1dfZniUObT1JMa6\n" + "hkGsQyFvPLD6Vr1bN6OBjTCBijAMBgNVHRMBAf8EAjAAMBQGA1UdEQQNMAuCCWxv\n" + "Y2FsaG9zdDATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDB4AAMB0G\n" + "A1UdDgQWBBSGUfwGWchcx3r3TNANllOEOFkTWDAfBgNVHSMEGDAWgBT5qIYZY7ak\n" + "FBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEACdzEVIyFvPlx2J7Ab4Hq\n" + "Oz0IGk2QaZ4cJkWZxjrPc7u6XCeBah8TEtF12LJ6vXBS+Cf9IF50YIMK/8GjJjs1\n" + "Allwdx79RuWFS2TdnsAjsAWwyKBQITkmv/kXULtExC9ospdGVIeYbdcmufgk023Q\n" + "PJh5LAMXHZ1lrsI1DgBhihgZx86wTAGd8yRC+dratvSbawC0sFan8X1n9R/Fxkzt\n" + "YuLEulh7FZpTWPYu30fyUrpEZVCWPlCzCrSijhCVBhAnT4eEGd7qmU0Oj+khHFNn\n" + "iVJ40/3JG21Yln2t/8uY1YIM2+ISTk4n2gkmXHrRAfNi3bXupdQQyAqRRT7b/Y/y\n" + "jhYzWekGLAvz0qrS78Ls8Kp7TfhIVEcWz9pfo77SmURxT6SDTiet7W5VD+VaS+hW\n" + "jl4L+IGxCsBIY5mWlT8KYTNHG34ln+5W+TfZMGARZFf4ZfQi2lgs3p0oqn6f9c+w\n" + "AdMyo73YqtbmVT2eGB05ezMeRl2Anjfwvj9JinhHMC04\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_ca3_gost01_cert = { + (unsigned char *)server_ca3_gost01_cert_pem, sizeof(server_ca3_gost01_cert_pem) - 1 }; static char server_ca3_gost12_256_key_pem[] = - "-----BEGIN PRIVATE KEY-----\n" - "MEgCAQAwHwYIKoUDBwEBAQEwEwYHKoUDAgIkAAYIKoUDBwEBAgIEIgQg0+JttJEV\n" - "Ud+XBzX9q13ByKK+j2b+mEmNIo1yB0wGleo=\n" "-----END PRIVATE KEY-----\n"; + "-----BEGIN PRIVATE KEY-----\n" + "MEgCAQAwHwYIKoUDBwEBAQEwEwYHKoUDAgIkAAYIKoUDBwEBAgIEIgQg0+JttJEV\n" + "Ud+XBzX9q13ByKK+j2b+mEmNIo1yB0wGleo=\n" + "-----END PRIVATE KEY-----\n"; -const gnutls_datum_t server_ca3_gost12_256_key = - { (unsigned char *)server_ca3_gost12_256_key_pem, +const gnutls_datum_t server_ca3_gost12_256_key = { + (unsigned char *)server_ca3_gost12_256_key_pem, sizeof(server_ca3_gost12_256_key_pem) - 1 }; static char server_ca3_gost12_256_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIC8DCCAVigAwIBAgIIWcZKgxkCMvcwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" - "AxMEQ0EtMzAgFw0xOTEwMDgxMDQ4MTZaGA85OTk5MTIzMTIzNTk1OVowDTELMAkG\n" - "A1UEAxMCR1IwZjAfBggqhQMHAQEBATATBgcqhQMCAiQABggqhQMHAQECAgNDAARA\n" - "J9sMEEx0JW9QsT5bDqyc0TNcjVg9ZSdp4GkMtShM+OOgyBGrWK3zLP5IzHYSXja8\n" - "373QrJOUvdX7T7TUk5yU5aOBjTCBijAMBgNVHRMBAf8EAjAAMBQGA1UdEQQNMAuC\n" - "CWxvY2FsaG9zdDATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDB4AA\n" - "MB0GA1UdDgQWBBQYSEtdwsYrtnOq6Ya3nt8DgFPCQjAfBgNVHSMEGDAWgBT5qIYZ\n" - "Y7akFBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAR0xtx7MWEP1KyIzM\n" - "4lXKdTyU4Nve5RcgqF82yR/0odqT5MPoaZDvLuRWEcQryztZD3kmRUmPmn1ujSfc\n" - "BbPfRnSutDXcf6imq0/U1/TV/BF3vpS1plltzetvibf8MYetHVFQHUBJDZJHh9h7\n" - "PGwA9SnmnGKFIxFdV6bVOLkPR54Gob9zN3E17KslL19lNtht1pxk9pshwTn35oRY\n" - "uOdxof9F4XjpI/4WbC8kp15QeG8XyZd5JWSl+niNOqYK31+ilQdVBr4RiZSDIcAg\n" - "twS5yV9Ap+R8rM8TLbeT2io4rhdUgmDllUf49zV3t6AbVvbsQfkqXmHXW8uW2WBu\n" - "A8FiXEbIIOb+QIW0ZGwk3BVQ7wdiw1M5w6kYtz5kBtNPxBmc+eu1+e6EAfYbFNr3\n" - "pkxtMk3veYWHb5s3dHZ4/t2Rn85hWqh03CWwCkKTN3qmEs4/XpybbXE/UE49e7u1\n" - "FkpM1bT/0gUNsNt5h3pyUzQZdiB0XbdGGFta3tB3+inIO45h\n" - "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_ca3_gost12_256_cert = - { (unsigned char *)server_ca3_gost12_256_cert_pem, + "-----BEGIN CERTIFICATE-----\n" + "MIIC8DCCAVigAwIBAgIIWcZKgxkCMvcwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" + "AxMEQ0EtMzAgFw0xOTEwMDgxMDQ4MTZaGA85OTk5MTIzMTIzNTk1OVowDTELMAkG\n" + "A1UEAxMCR1IwZjAfBggqhQMHAQEBATATBgcqhQMCAiQABggqhQMHAQECAgNDAARA\n" + "J9sMEEx0JW9QsT5bDqyc0TNcjVg9ZSdp4GkMtShM+OOgyBGrWK3zLP5IzHYSXja8\n" + "373QrJOUvdX7T7TUk5yU5aOBjTCBijAMBgNVHRMBAf8EAjAAMBQGA1UdEQQNMAuC\n" + "CWxvY2FsaG9zdDATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDB4AA\n" + "MB0GA1UdDgQWBBQYSEtdwsYrtnOq6Ya3nt8DgFPCQjAfBgNVHSMEGDAWgBT5qIYZ\n" + "Y7akFBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAR0xtx7MWEP1KyIzM\n" + "4lXKdTyU4Nve5RcgqF82yR/0odqT5MPoaZDvLuRWEcQryztZD3kmRUmPmn1ujSfc\n" + "BbPfRnSutDXcf6imq0/U1/TV/BF3vpS1plltzetvibf8MYetHVFQHUBJDZJHh9h7\n" + "PGwA9SnmnGKFIxFdV6bVOLkPR54Gob9zN3E17KslL19lNtht1pxk9pshwTn35oRY\n" + "uOdxof9F4XjpI/4WbC8kp15QeG8XyZd5JWSl+niNOqYK31+ilQdVBr4RiZSDIcAg\n" + "twS5yV9Ap+R8rM8TLbeT2io4rhdUgmDllUf49zV3t6AbVvbsQfkqXmHXW8uW2WBu\n" + "A8FiXEbIIOb+QIW0ZGwk3BVQ7wdiw1M5w6kYtz5kBtNPxBmc+eu1+e6EAfYbFNr3\n" + "pkxtMk3veYWHb5s3dHZ4/t2Rn85hWqh03CWwCkKTN3qmEs4/XpybbXE/UE49e7u1\n" + "FkpM1bT/0gUNsNt5h3pyUzQZdiB0XbdGGFta3tB3+inIO45h\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_ca3_gost12_256_cert = { + (unsigned char *)server_ca3_gost12_256_cert_pem, sizeof(server_ca3_gost12_256_cert_pem) - 1 }; static char server_ca3_gost12_512_key_pem[] = - "-----BEGIN PRIVATE KEY-----\n" - "MGACAQAwFwYIKoUDBwEBAQIwCwYJKoUDBwECAQIBBEIEQJLtsCFM/m6blvHOJoqS\n" - "FvrFIjlYFAJKVqIc8FoxuCaAmIXxG5sXuTRgx5+m3T6wDca9UYAqMvsIsEREObti\n" - "+W8=\n" "-----END PRIVATE KEY-----\n"; - -const gnutls_datum_t server_ca3_gost12_512_key = - { (unsigned char *)server_ca3_gost12_512_key_pem, + "-----BEGIN PRIVATE KEY-----\n" + "MGACAQAwFwYIKoUDBwEBAQIwCwYJKoUDBwECAQIBBEIEQJLtsCFM/m6blvHOJoqS\n" + "FvrFIjlYFAJKVqIc8FoxuCaAmIXxG5sXuTRgx5+m3T6wDca9UYAqMvsIsEREObti\n" + "+W8=\n" + "-----END PRIVATE KEY-----\n"; + +const gnutls_datum_t server_ca3_gost12_512_key = { + (unsigned char *)server_ca3_gost12_512_key_pem, sizeof(server_ca3_gost12_512_key_pem) - 1 }; static char server_ca3_gost12_512_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIDKzCCAZOgAwIBAgIIWcZKvSvigz0wDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" - "AxMEQ0EtMzAgFw0xOTEwMDgxMTAwNDRaGA85OTk5MTIzMTIzNTk1OVowDTELMAkG\n" - "A1UEAxMCR1IwgaAwFwYIKoUDBwEBAQIwCwYJKoUDBwECAQIBA4GEAASBgDIyIpfh\n" - "R0umZWQl6GEhjjhjZ6cWlYJ41JHo6hx8cLxHopOjSrHEQRxabnfI07e9IjlK0MZu\n" - "oS8ngfbyAEI0LycgiOgDTriO8l10NEM/Yr1l+A5qHsZ9Oh46ijUlPTT6WEZzK/yU\n" - "RQmjg0TQFQUPQrwSfkW8lJzbINwaHCWWqSdxo4GNMIGKMAwGA1UdEwEB/wQCMAAw\n" - "FAYDVR0RBA0wC4IJbG9jYWxob3N0MBMGA1UdJQQMMAoGCCsGAQUFBwMBMA8GA1Ud\n" - "DwEB/wQFAwMHgAAwHQYDVR0OBBYEFF7gSAq4EPp6G8FYvT+ECRRVrGTcMB8GA1Ud\n" - "IwQYMBaAFPmohhljtqQUE2B2DwGaNTbv8bSvMA0GCSqGSIb3DQEBCwUAA4IBgQAO\n" - "kFNTy9UqIkG5tDiW+O8QuV8A+Xvw2CLiIqDvkLhR1FQnXYs5OFquNBLyA2NSR5bk\n" - "OO+68sXj6iB9tGJWhHXo6efwsxR4maxHv7R8Gp6fFysEGtVV1MG+vpNOjoQNreVh\n" - "41D9/FU7eVqe6oSw5DtuUQvwrk3jooT4b9dpk2g1ihY33BrpA+vg9XnvN3+7dDNd\n" - "0xfRXKR9aGhWZsschps9xJqfzx63CZrH14+jHKxYPupSL7d/Akm3MDOf9XLa+vnY\n" - "WG6lHpkvGl0b8A6yxHHqDCctnE+aJGK6lMyZ1cd8GiStgcihussKGKvKsKygAM4J\n" - "zPxBQtTv11qjuyMksq5Gw6ctq/GO/M7eUoi/xf/O9+QOwDO/urocBJYY0BmsQWlR\n" - "VFjuOouE2GN7UPo6VyMiXpe75Wi9CNX/szNF+HnS4hCJGV5kz4ULaJnFxPE/oQwa\n" - "nlFDKO1feGQG0gOyf2jMzY1OD35SYss4Falc18iB3YQKigGkyqb+VeGyE8kq1UY=\n" - "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_ca3_gost12_512_cert = - { (unsigned char *)server_ca3_gost12_512_cert_pem, + "-----BEGIN CERTIFICATE-----\n" + "MIIDKzCCAZOgAwIBAgIIWcZKvSvigz0wDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" + "AxMEQ0EtMzAgFw0xOTEwMDgxMTAwNDRaGA85OTk5MTIzMTIzNTk1OVowDTELMAkG\n" + "A1UEAxMCR1IwgaAwFwYIKoUDBwEBAQIwCwYJKoUDBwECAQIBA4GEAASBgDIyIpfh\n" + "R0umZWQl6GEhjjhjZ6cWlYJ41JHo6hx8cLxHopOjSrHEQRxabnfI07e9IjlK0MZu\n" + "oS8ngfbyAEI0LycgiOgDTriO8l10NEM/Yr1l+A5qHsZ9Oh46ijUlPTT6WEZzK/yU\n" + "RQmjg0TQFQUPQrwSfkW8lJzbINwaHCWWqSdxo4GNMIGKMAwGA1UdEwEB/wQCMAAw\n" + "FAYDVR0RBA0wC4IJbG9jYWxob3N0MBMGA1UdJQQMMAoGCCsGAQUFBwMBMA8GA1Ud\n" + "DwEB/wQFAwMHgAAwHQYDVR0OBBYEFF7gSAq4EPp6G8FYvT+ECRRVrGTcMB8GA1Ud\n" + "IwQYMBaAFPmohhljtqQUE2B2DwGaNTbv8bSvMA0GCSqGSIb3DQEBCwUAA4IBgQAO\n" + "kFNTy9UqIkG5tDiW+O8QuV8A+Xvw2CLiIqDvkLhR1FQnXYs5OFquNBLyA2NSR5bk\n" + "OO+68sXj6iB9tGJWhHXo6efwsxR4maxHv7R8Gp6fFysEGtVV1MG+vpNOjoQNreVh\n" + "41D9/FU7eVqe6oSw5DtuUQvwrk3jooT4b9dpk2g1ihY33BrpA+vg9XnvN3+7dDNd\n" + "0xfRXKR9aGhWZsschps9xJqfzx63CZrH14+jHKxYPupSL7d/Akm3MDOf9XLa+vnY\n" + "WG6lHpkvGl0b8A6yxHHqDCctnE+aJGK6lMyZ1cd8GiStgcihussKGKvKsKygAM4J\n" + "zPxBQtTv11qjuyMksq5Gw6ctq/GO/M7eUoi/xf/O9+QOwDO/urocBJYY0BmsQWlR\n" + "VFjuOouE2GN7UPo6VyMiXpe75Wi9CNX/szNF+HnS4hCJGV5kz4ULaJnFxPE/oQwa\n" + "nlFDKO1feGQG0gOyf2jMzY1OD35SYss4Falc18iB3YQKigGkyqb+VeGyE8kq1UY=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_ca3_gost12_512_cert = { + (unsigned char *)server_ca3_gost12_512_cert_pem, sizeof(server_ca3_gost12_512_cert_pem) - 1 }; /* shares server_ca3 key */ static char server_localhost6_ca3_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIENzCCAp+gAwIBAgIMV6MdMjdkWPp7Um/XMA0GCSqGSIb3DQEBCwUAMBIxEDAO\n" - "BgNVBAMTB3N1YkNBLTMwIBcNMTYwNTEwMDg1MTU1WhgPOTk5OTEyMzEyMzU5NTla\n" - "MAAwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDZPXiZqiz3wLuz+B4Z\n" - "nJuCphLEX7k15NcpamL3+9ea4gXyfeFSHbSaihPauBUcDMVbL/wfkhxYiJRCX7wq\n" - "HIkJK4En5aEzSDDa6pI/CI5lSbiXdNDGbFLh5b8Guvhfzyy8lDjFNNy3abkfU270\n" - "tnzFY5mkYwYgjuN/RgPqh0b8McT+xUeN9x4PuSXXmMC1r3v7y4JuMxE8ZzGDhW2a\n" - "QK5Is6QYv0WELS5hVvB8GdP5XQwTJw4HH5i/YES7TENV2RByzRY8hFQ9SbK5YHHG\n" - "oszVJIlIuxm5v8N2Ig1cW6t7t3HnuZbDYRDCERMiEigBz8vEZZyFsMLg5Z7JiNKS\n" - "G/f+ER9CzDJXHgxBctV9EEc2KmRT1P9JeI/xZUOl9lKljc+t8m0Um3Asx5duWm4t\n" - "cZm7FecnaJiTXD/tEG64qTKWtDuoI7+X9MjHe5lvf2gIJT3CoKW24Rn6O1fc9oCC\n" - "nVAi0V6FLM4XaG50X9NC666RVEFkXih8THA1gC9m9NJMrD0CAwEAAaOBnDCBmTAM\n" - "BgNVHRMBAf8EAjAAMCMGA1UdEQQcMBqCCmxvY2FsaG9zdDaCDHd3dy5ub25lLm9y\n" - "ZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQW\n" - "BBQzneEn04vV/OsF/LXHgWlPXjvZ1jAfBgNVHSMEGDAWgBQtMwQbJ3+UBHzH4zVP\n" - "6SWklOG3oTANBgkqhkiG9w0BAQsFAAOCAYEALXeJO70urguPXDXTPPfqOVZb9NOh\n" - "+1rHRtt1LIr6WxGMLDIuUwwjhExSR/XDnhzgy1G6Zxodsm1FV5aEmDhU9cz0MpkF\n" - "G1ndhGK+Y3Qey9L/8x7yuHoqLfcqiqe5Kxpq9zVfy87M1JC8FuFpRXgnXkbjnPRm\n" - "rDA7d0KtJfU93mmoI1yPDqYcJK6I62waIfRn5AcgGiMr8tT5oreIXPhjxiU15Say\n" - "ETqT0nSx3kB1VTm0K4mByIueGclnb5epUQ/suq9S++QW7Z9DD/8bfehXZaB1lb7r\n" - "jTMFQAzmrR7x53ZwKWry5iu6MXxFnWKTpBdGcgztbj34NM4VLqrdC15c0lj+OJ/3\n" - "0sbJ1YU3XCh6GZ96t3RPevSvimxMZfVquoBrr7/79PKxOnBY+amJYILqjzqvqIvr\n" - "LoPj0OuKmN7XiWINFAgz5/oj8Bq/4vu8Bsu4fwbgMeHt5Z0eIo8XtqblxnCASFDZ\n" - "yrRp0uKt24DKjSiJWnoqc+VjuvFECgGUzdts\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIENzCCAp+gAwIBAgIMV6MdMjdkWPp7Um/XMA0GCSqGSIb3DQEBCwUAMBIxEDAO\n" + "BgNVBAMTB3N1YkNBLTMwIBcNMTYwNTEwMDg1MTU1WhgPOTk5OTEyMzEyMzU5NTla\n" + "MAAwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDZPXiZqiz3wLuz+B4Z\n" + "nJuCphLEX7k15NcpamL3+9ea4gXyfeFSHbSaihPauBUcDMVbL/wfkhxYiJRCX7wq\n" + "HIkJK4En5aEzSDDa6pI/CI5lSbiXdNDGbFLh5b8Guvhfzyy8lDjFNNy3abkfU270\n" + "tnzFY5mkYwYgjuN/RgPqh0b8McT+xUeN9x4PuSXXmMC1r3v7y4JuMxE8ZzGDhW2a\n" + "QK5Is6QYv0WELS5hVvB8GdP5XQwTJw4HH5i/YES7TENV2RByzRY8hFQ9SbK5YHHG\n" + "oszVJIlIuxm5v8N2Ig1cW6t7t3HnuZbDYRDCERMiEigBz8vEZZyFsMLg5Z7JiNKS\n" + "G/f+ER9CzDJXHgxBctV9EEc2KmRT1P9JeI/xZUOl9lKljc+t8m0Um3Asx5duWm4t\n" + "cZm7FecnaJiTXD/tEG64qTKWtDuoI7+X9MjHe5lvf2gIJT3CoKW24Rn6O1fc9oCC\n" + "nVAi0V6FLM4XaG50X9NC666RVEFkXih8THA1gC9m9NJMrD0CAwEAAaOBnDCBmTAM\n" + "BgNVHRMBAf8EAjAAMCMGA1UdEQQcMBqCCmxvY2FsaG9zdDaCDHd3dy5ub25lLm9y\n" + "ZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQW\n" + "BBQzneEn04vV/OsF/LXHgWlPXjvZ1jAfBgNVHSMEGDAWgBQtMwQbJ3+UBHzH4zVP\n" + "6SWklOG3oTANBgkqhkiG9w0BAQsFAAOCAYEALXeJO70urguPXDXTPPfqOVZb9NOh\n" + "+1rHRtt1LIr6WxGMLDIuUwwjhExSR/XDnhzgy1G6Zxodsm1FV5aEmDhU9cz0MpkF\n" + "G1ndhGK+Y3Qey9L/8x7yuHoqLfcqiqe5Kxpq9zVfy87M1JC8FuFpRXgnXkbjnPRm\n" + "rDA7d0KtJfU93mmoI1yPDqYcJK6I62waIfRn5AcgGiMr8tT5oreIXPhjxiU15Say\n" + "ETqT0nSx3kB1VTm0K4mByIueGclnb5epUQ/suq9S++QW7Z9DD/8bfehXZaB1lb7r\n" + "jTMFQAzmrR7x53ZwKWry5iu6MXxFnWKTpBdGcgztbj34NM4VLqrdC15c0lj+OJ/3\n" + "0sbJ1YU3XCh6GZ96t3RPevSvimxMZfVquoBrr7/79PKxOnBY+amJYILqjzqvqIvr\n" + "LoPj0OuKmN7XiWINFAgz5/oj8Bq/4vu8Bsu4fwbgMeHt5Z0eIo8XtqblxnCASFDZ\n" + "yrRp0uKt24DKjSiJWnoqc+VjuvFECgGUzdts\n" + "-----END CERTIFICATE-----\n"; static char server_localhost6_ca3_cert_chain_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIENzCCAp+gAwIBAgIMV6MdMjdkWPp7Um/XMA0GCSqGSIb3DQEBCwUAMBIxEDAO\n" - "BgNVBAMTB3N1YkNBLTMwIBcNMTYwNTEwMDg1MTU1WhgPOTk5OTEyMzEyMzU5NTla\n" - "MAAwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDZPXiZqiz3wLuz+B4Z\n" - "nJuCphLEX7k15NcpamL3+9ea4gXyfeFSHbSaihPauBUcDMVbL/wfkhxYiJRCX7wq\n" - "HIkJK4En5aEzSDDa6pI/CI5lSbiXdNDGbFLh5b8Guvhfzyy8lDjFNNy3abkfU270\n" - "tnzFY5mkYwYgjuN/RgPqh0b8McT+xUeN9x4PuSXXmMC1r3v7y4JuMxE8ZzGDhW2a\n" - "QK5Is6QYv0WELS5hVvB8GdP5XQwTJw4HH5i/YES7TENV2RByzRY8hFQ9SbK5YHHG\n" - "oszVJIlIuxm5v8N2Ig1cW6t7t3HnuZbDYRDCERMiEigBz8vEZZyFsMLg5Z7JiNKS\n" - "G/f+ER9CzDJXHgxBctV9EEc2KmRT1P9JeI/xZUOl9lKljc+t8m0Um3Asx5duWm4t\n" - "cZm7FecnaJiTXD/tEG64qTKWtDuoI7+X9MjHe5lvf2gIJT3CoKW24Rn6O1fc9oCC\n" - "nVAi0V6FLM4XaG50X9NC666RVEFkXih8THA1gC9m9NJMrD0CAwEAAaOBnDCBmTAM\n" - "BgNVHRMBAf8EAjAAMCMGA1UdEQQcMBqCCmxvY2FsaG9zdDaCDHd3dy5ub25lLm9y\n" - "ZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQW\n" - "BBQzneEn04vV/OsF/LXHgWlPXjvZ1jAfBgNVHSMEGDAWgBQtMwQbJ3+UBHzH4zVP\n" - "6SWklOG3oTANBgkqhkiG9w0BAQsFAAOCAYEALXeJO70urguPXDXTPPfqOVZb9NOh\n" - "+1rHRtt1LIr6WxGMLDIuUwwjhExSR/XDnhzgy1G6Zxodsm1FV5aEmDhU9cz0MpkF\n" - "G1ndhGK+Y3Qey9L/8x7yuHoqLfcqiqe5Kxpq9zVfy87M1JC8FuFpRXgnXkbjnPRm\n" - "rDA7d0KtJfU93mmoI1yPDqYcJK6I62waIfRn5AcgGiMr8tT5oreIXPhjxiU15Say\n" - "ETqT0nSx3kB1VTm0K4mByIueGclnb5epUQ/suq9S++QW7Z9DD/8bfehXZaB1lb7r\n" - "jTMFQAzmrR7x53ZwKWry5iu6MXxFnWKTpBdGcgztbj34NM4VLqrdC15c0lj+OJ/3\n" - "0sbJ1YU3XCh6GZ96t3RPevSvimxMZfVquoBrr7/79PKxOnBY+amJYILqjzqvqIvr\n" - "LoPj0OuKmN7XiWINFAgz5/oj8Bq/4vu8Bsu4fwbgMeHt5Z0eIo8XtqblxnCASFDZ\n" - "yrRp0uKt24DKjSiJWnoqc+VjuvFECgGUzdts\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIEDTCCAnWgAwIBAgIMV6MdMjWzT9C59ec8MA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTMwIBcNMTYwNTEwMDg0ODMwWhgPOTk5OTEyMzEyMzU5NTlaMBIx\n" - "EDAOBgNVBAMTB3N1YkNBLTMwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIB\n" - "gQCgOcNXzStOnRFoi05aMRLeMB45X4a2srSBul3ULxDSGjIP0EEl//X2WLiope/x\n" - "NL8bPCRpI1sSVXl8Hb1cK3qWNGazVmC7xW07NxL26I86e3/BVRnq8ioVtvPQwEpv\n" - "uI8F97x1vL/n+cfcdkN77NScr5C9jHMVioRvC+qKz9bUBx5DSySV66PR5+wGsJDv\n" - "kfsmjVOgqiTlSWQS5G3nMMq0Rixsc5dP5Wygkbdh9+45UCtObcnHABJrP+GtLiG0\n" - "AOUx6oPzPteZL13erWXg7zYusTarj9rTcdsgR/Im1mIzmD2i7GhJo4Gj0Sk3Rq93\n" - "JyeA+Ay5UPmqcm+dqX00b49MTTv4GtO53kLQSCXYFJ96jcMiXMzBFJD1ROsdk4WU\n" - "ed/tJMHffttDz9j3WcuX9M2nzTT2xlauokjbEAhRDRw5fxCFZh7TbmaH4vysDO9U\n" - "ZXVEXSLKonQ2Lmyso48s/G30VmlSjtPtJqRsv/oPpCO/c0D6BrkHV55B48xfmyIF\n" - "jgECAwEAAaNkMGIwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0G\n" - "A1UdDgQWBBQtMwQbJ3+UBHzH4zVP6SWklOG3oTAfBgNVHSMEGDAWgBT5qIYZY7ak\n" - "FBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAMii5Gx3/d/58oDRy5a0o\n" - "PvQhkU0dKa61NfjjOz9uqxNSilLJE7jGJPaG2tKtC/XU1Ybql2tqQY68kogjKs31\n" - "QC6RFkoZAFouTJt11kzbgVWKewCk3/OrA0/ZkRrAfE0Pma/NITRwTHmTsQOdv/bz\n" - "R+xIPhjKxKrKyJFMG5xb+Q0OKSbd8kDpgYWKob5x2jsNYgEDp8nYSRT45SGw7c7F\n" - "cumkXz2nA6r5NwbnhELvNFK8fzsY+QJKHaAlJ9CclliP1PiiAcl2LQo2gaygWNiD\n" - "+ggnqzy7nqam9rieOOMHls1kKFAFrWy2g/cBhTfS+/7Shpex7NK2GAiujgUV0TZH\n" - "EyEZt6um4gLS9vwUKs/R4XS9VL/bBlfAy2hAVTeUejiRBGeTJkqBu7+c4FdrCByV\n" - "haeQASMYu/lga8eaGL1zJbJe2BQWI754KDYDT9qKNqGlgysr4AVje7z1Y1MQ72Sn\n" - "frzYSQw6BB85CurB6iou3Q+eM4o4g/+xGEuDo0Ne/8ir\n" - "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_ca3_localhost6_cert = - { (unsigned char *)server_localhost6_ca3_cert_pem, + "-----BEGIN CERTIFICATE-----\n" + "MIIENzCCAp+gAwIBAgIMV6MdMjdkWPp7Um/XMA0GCSqGSIb3DQEBCwUAMBIxEDAO\n" + "BgNVBAMTB3N1YkNBLTMwIBcNMTYwNTEwMDg1MTU1WhgPOTk5OTEyMzEyMzU5NTla\n" + "MAAwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDZPXiZqiz3wLuz+B4Z\n" + "nJuCphLEX7k15NcpamL3+9ea4gXyfeFSHbSaihPauBUcDMVbL/wfkhxYiJRCX7wq\n" + "HIkJK4En5aEzSDDa6pI/CI5lSbiXdNDGbFLh5b8Guvhfzyy8lDjFNNy3abkfU270\n" + "tnzFY5mkYwYgjuN/RgPqh0b8McT+xUeN9x4PuSXXmMC1r3v7y4JuMxE8ZzGDhW2a\n" + "QK5Is6QYv0WELS5hVvB8GdP5XQwTJw4HH5i/YES7TENV2RByzRY8hFQ9SbK5YHHG\n" + "oszVJIlIuxm5v8N2Ig1cW6t7t3HnuZbDYRDCERMiEigBz8vEZZyFsMLg5Z7JiNKS\n" + "G/f+ER9CzDJXHgxBctV9EEc2KmRT1P9JeI/xZUOl9lKljc+t8m0Um3Asx5duWm4t\n" + "cZm7FecnaJiTXD/tEG64qTKWtDuoI7+X9MjHe5lvf2gIJT3CoKW24Rn6O1fc9oCC\n" + "nVAi0V6FLM4XaG50X9NC666RVEFkXih8THA1gC9m9NJMrD0CAwEAAaOBnDCBmTAM\n" + "BgNVHRMBAf8EAjAAMCMGA1UdEQQcMBqCCmxvY2FsaG9zdDaCDHd3dy5ub25lLm9y\n" + "ZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQW\n" + "BBQzneEn04vV/OsF/LXHgWlPXjvZ1jAfBgNVHSMEGDAWgBQtMwQbJ3+UBHzH4zVP\n" + "6SWklOG3oTANBgkqhkiG9w0BAQsFAAOCAYEALXeJO70urguPXDXTPPfqOVZb9NOh\n" + "+1rHRtt1LIr6WxGMLDIuUwwjhExSR/XDnhzgy1G6Zxodsm1FV5aEmDhU9cz0MpkF\n" + "G1ndhGK+Y3Qey9L/8x7yuHoqLfcqiqe5Kxpq9zVfy87M1JC8FuFpRXgnXkbjnPRm\n" + "rDA7d0KtJfU93mmoI1yPDqYcJK6I62waIfRn5AcgGiMr8tT5oreIXPhjxiU15Say\n" + "ETqT0nSx3kB1VTm0K4mByIueGclnb5epUQ/suq9S++QW7Z9DD/8bfehXZaB1lb7r\n" + "jTMFQAzmrR7x53ZwKWry5iu6MXxFnWKTpBdGcgztbj34NM4VLqrdC15c0lj+OJ/3\n" + "0sbJ1YU3XCh6GZ96t3RPevSvimxMZfVquoBrr7/79PKxOnBY+amJYILqjzqvqIvr\n" + "LoPj0OuKmN7XiWINFAgz5/oj8Bq/4vu8Bsu4fwbgMeHt5Z0eIo8XtqblxnCASFDZ\n" + "yrRp0uKt24DKjSiJWnoqc+VjuvFECgGUzdts\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIEDTCCAnWgAwIBAgIMV6MdMjWzT9C59ec8MA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTMwIBcNMTYwNTEwMDg0ODMwWhgPOTk5OTEyMzEyMzU5NTlaMBIx\n" + "EDAOBgNVBAMTB3N1YkNBLTMwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIB\n" + "gQCgOcNXzStOnRFoi05aMRLeMB45X4a2srSBul3ULxDSGjIP0EEl//X2WLiope/x\n" + "NL8bPCRpI1sSVXl8Hb1cK3qWNGazVmC7xW07NxL26I86e3/BVRnq8ioVtvPQwEpv\n" + "uI8F97x1vL/n+cfcdkN77NScr5C9jHMVioRvC+qKz9bUBx5DSySV66PR5+wGsJDv\n" + "kfsmjVOgqiTlSWQS5G3nMMq0Rixsc5dP5Wygkbdh9+45UCtObcnHABJrP+GtLiG0\n" + "AOUx6oPzPteZL13erWXg7zYusTarj9rTcdsgR/Im1mIzmD2i7GhJo4Gj0Sk3Rq93\n" + "JyeA+Ay5UPmqcm+dqX00b49MTTv4GtO53kLQSCXYFJ96jcMiXMzBFJD1ROsdk4WU\n" + "ed/tJMHffttDz9j3WcuX9M2nzTT2xlauokjbEAhRDRw5fxCFZh7TbmaH4vysDO9U\n" + "ZXVEXSLKonQ2Lmyso48s/G30VmlSjtPtJqRsv/oPpCO/c0D6BrkHV55B48xfmyIF\n" + "jgECAwEAAaNkMGIwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0G\n" + "A1UdDgQWBBQtMwQbJ3+UBHzH4zVP6SWklOG3oTAfBgNVHSMEGDAWgBT5qIYZY7ak\n" + "FBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAMii5Gx3/d/58oDRy5a0o\n" + "PvQhkU0dKa61NfjjOz9uqxNSilLJE7jGJPaG2tKtC/XU1Ybql2tqQY68kogjKs31\n" + "QC6RFkoZAFouTJt11kzbgVWKewCk3/OrA0/ZkRrAfE0Pma/NITRwTHmTsQOdv/bz\n" + "R+xIPhjKxKrKyJFMG5xb+Q0OKSbd8kDpgYWKob5x2jsNYgEDp8nYSRT45SGw7c7F\n" + "cumkXz2nA6r5NwbnhELvNFK8fzsY+QJKHaAlJ9CclliP1PiiAcl2LQo2gaygWNiD\n" + "+ggnqzy7nqam9rieOOMHls1kKFAFrWy2g/cBhTfS+/7Shpex7NK2GAiujgUV0TZH\n" + "EyEZt6um4gLS9vwUKs/R4XS9VL/bBlfAy2hAVTeUejiRBGeTJkqBu7+c4FdrCByV\n" + "haeQASMYu/lga8eaGL1zJbJe2BQWI754KDYDT9qKNqGlgysr4AVje7z1Y1MQ72Sn\n" + "frzYSQw6BB85CurB6iou3Q+eM4o4g/+xGEuDo0Ne/8ir\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_ca3_localhost6_cert = { + (unsigned char *)server_localhost6_ca3_cert_pem, sizeof(server_localhost6_ca3_cert_pem) - 1 }; @@ -1273,82 +1282,83 @@ const gnutls_datum_t server_ca3_localhost6_cert_chain = { /* shares server_ca3 key */ static char server_ipaddr_ca3_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIEAzCCAmugAwIBAgIMWNI1ISkCpEsFglgfMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTMwHhcNMDQwMjI5MTUyMTQyWhcNMjQwMjI5MTUyMTQxWjANMQsw\n" - "CQYDVQQGEwJHUjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBANk9eJmq\n" - "LPfAu7P4Hhmcm4KmEsRfuTXk1ylqYvf715riBfJ94VIdtJqKE9q4FRwMxVsv/B+S\n" - "HFiIlEJfvCociQkrgSfloTNIMNrqkj8IjmVJuJd00MZsUuHlvwa6+F/PLLyUOMU0\n" - "3LdpuR9TbvS2fMVjmaRjBiCO439GA+qHRvwxxP7FR433Hg+5JdeYwLWve/vLgm4z\n" - "ETxnMYOFbZpArkizpBi/RYQtLmFW8HwZ0/ldDBMnDgcfmL9gRLtMQ1XZEHLNFjyE\n" - "VD1JsrlgccaizNUkiUi7Gbm/w3YiDVxbq3u3cee5lsNhEMIREyISKAHPy8RlnIWw\n" - "wuDlnsmI0pIb9/4RH0LMMlceDEFy1X0QRzYqZFPU/0l4j/FlQ6X2UqWNz63ybRSb\n" - "cCzHl25abi1xmbsV5ydomJNcP+0QbripMpa0O6gjv5f0yMd7mW9/aAglPcKgpbbh\n" - "Gfo7V9z2gIKdUCLRXoUszhdobnRf00LrrpFUQWReKHxMcDWAL2b00kysPQIDAQAB\n" - "o2EwXzAMBgNVHRMBAf8EAjAAMA8GA1UdEQQIMAaHBH8AAAEwHQYDVR0OBBYEFDOd\n" - "4SfTi9X86wX8tceBaU9eO9nWMB8GA1UdIwQYMBaAFPmohhljtqQUE2B2DwGaNTbv\n" - "8bSvMA0GCSqGSIb3DQEBCwUAA4IBgQCNwaCnuNcrSpKjNI99kwuS2/LRnt40yN0B\n" - "LvN4wnkfEh02LXg2ylXCYZZw59m3w7Cefr1BGLXJjbJTNHASjSOvmurJVEX5sqdX\n" - "zGQs9HzysDvTVHQh1VUWXyj612DUWZoAYYaUg+CiAZLA/ShT+zN/OC8kWa1RXZPt\n" - "BfTM7REBxAOxUEDuL1aa/KkFqXgy3cr795TWqdt0lZ/dk7kHxqZKR7nJ2TcOmYK9\n" - "UdJWnmebDgjlRvXS4CgG8JNzyJtukogSjmp7qsxX9QZ1umUw3Lf7StSdXZT1oIDI\n" - "evLJCTohtE3/ocRlHfQ9l+B8V+8z7YE+0liFwjwUyrYVUpJ2YuPmHHfauTI2JyVX\n" - "Kk9dJopvnkhA6rIvNjkd3N3iWE3ftSkk/PV9Iu7PQ2jtR8JXkPMJfgq0owbxhn5N\n" - "oqQW/zQU7pq4Y9+rvH2qPFSxHGmecBhxetXoAPT66hHJCUTAspF/5DgT6TVMu+Gs\n" - "hiRt+POJ1lVlGUHsF9Z7IE/d+NCESwU=\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIEAzCCAmugAwIBAgIMWNI1ISkCpEsFglgfMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTMwHhcNMDQwMjI5MTUyMTQyWhcNMjQwMjI5MTUyMTQxWjANMQsw\n" + "CQYDVQQGEwJHUjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBANk9eJmq\n" + "LPfAu7P4Hhmcm4KmEsRfuTXk1ylqYvf715riBfJ94VIdtJqKE9q4FRwMxVsv/B+S\n" + "HFiIlEJfvCociQkrgSfloTNIMNrqkj8IjmVJuJd00MZsUuHlvwa6+F/PLLyUOMU0\n" + "3LdpuR9TbvS2fMVjmaRjBiCO439GA+qHRvwxxP7FR433Hg+5JdeYwLWve/vLgm4z\n" + "ETxnMYOFbZpArkizpBi/RYQtLmFW8HwZ0/ldDBMnDgcfmL9gRLtMQ1XZEHLNFjyE\n" + "VD1JsrlgccaizNUkiUi7Gbm/w3YiDVxbq3u3cee5lsNhEMIREyISKAHPy8RlnIWw\n" + "wuDlnsmI0pIb9/4RH0LMMlceDEFy1X0QRzYqZFPU/0l4j/FlQ6X2UqWNz63ybRSb\n" + "cCzHl25abi1xmbsV5ydomJNcP+0QbripMpa0O6gjv5f0yMd7mW9/aAglPcKgpbbh\n" + "Gfo7V9z2gIKdUCLRXoUszhdobnRf00LrrpFUQWReKHxMcDWAL2b00kysPQIDAQAB\n" + "o2EwXzAMBgNVHRMBAf8EAjAAMA8GA1UdEQQIMAaHBH8AAAEwHQYDVR0OBBYEFDOd\n" + "4SfTi9X86wX8tceBaU9eO9nWMB8GA1UdIwQYMBaAFPmohhljtqQUE2B2DwGaNTbv\n" + "8bSvMA0GCSqGSIb3DQEBCwUAA4IBgQCNwaCnuNcrSpKjNI99kwuS2/LRnt40yN0B\n" + "LvN4wnkfEh02LXg2ylXCYZZw59m3w7Cefr1BGLXJjbJTNHASjSOvmurJVEX5sqdX\n" + "zGQs9HzysDvTVHQh1VUWXyj612DUWZoAYYaUg+CiAZLA/ShT+zN/OC8kWa1RXZPt\n" + "BfTM7REBxAOxUEDuL1aa/KkFqXgy3cr795TWqdt0lZ/dk7kHxqZKR7nJ2TcOmYK9\n" + "UdJWnmebDgjlRvXS4CgG8JNzyJtukogSjmp7qsxX9QZ1umUw3Lf7StSdXZT1oIDI\n" + "evLJCTohtE3/ocRlHfQ9l+B8V+8z7YE+0liFwjwUyrYVUpJ2YuPmHHfauTI2JyVX\n" + "Kk9dJopvnkhA6rIvNjkd3N3iWE3ftSkk/PV9Iu7PQ2jtR8JXkPMJfgq0owbxhn5N\n" + "oqQW/zQU7pq4Y9+rvH2qPFSxHGmecBhxetXoAPT66hHJCUTAspF/5DgT6TVMu+Gs\n" + "hiRt+POJ1lVlGUHsF9Z7IE/d+NCESwU=\n" + "-----END CERTIFICATE-----\n"; static char server_ipaddr_ca3_cert_chain_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIEAzCCAmugAwIBAgIMWNI1ISkCpEsFglgfMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTMwHhcNMDQwMjI5MTUyMTQyWhcNMjQwMjI5MTUyMTQxWjANMQsw\n" - "CQYDVQQGEwJHUjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBANk9eJmq\n" - "LPfAu7P4Hhmcm4KmEsRfuTXk1ylqYvf715riBfJ94VIdtJqKE9q4FRwMxVsv/B+S\n" - "HFiIlEJfvCociQkrgSfloTNIMNrqkj8IjmVJuJd00MZsUuHlvwa6+F/PLLyUOMU0\n" - "3LdpuR9TbvS2fMVjmaRjBiCO439GA+qHRvwxxP7FR433Hg+5JdeYwLWve/vLgm4z\n" - "ETxnMYOFbZpArkizpBi/RYQtLmFW8HwZ0/ldDBMnDgcfmL9gRLtMQ1XZEHLNFjyE\n" - "VD1JsrlgccaizNUkiUi7Gbm/w3YiDVxbq3u3cee5lsNhEMIREyISKAHPy8RlnIWw\n" - "wuDlnsmI0pIb9/4RH0LMMlceDEFy1X0QRzYqZFPU/0l4j/FlQ6X2UqWNz63ybRSb\n" - "cCzHl25abi1xmbsV5ydomJNcP+0QbripMpa0O6gjv5f0yMd7mW9/aAglPcKgpbbh\n" - "Gfo7V9z2gIKdUCLRXoUszhdobnRf00LrrpFUQWReKHxMcDWAL2b00kysPQIDAQAB\n" - "o2EwXzAMBgNVHRMBAf8EAjAAMA8GA1UdEQQIMAaHBH8AAAEwHQYDVR0OBBYEFDOd\n" - "4SfTi9X86wX8tceBaU9eO9nWMB8GA1UdIwQYMBaAFPmohhljtqQUE2B2DwGaNTbv\n" - "8bSvMA0GCSqGSIb3DQEBCwUAA4IBgQCNwaCnuNcrSpKjNI99kwuS2/LRnt40yN0B\n" - "LvN4wnkfEh02LXg2ylXCYZZw59m3w7Cefr1BGLXJjbJTNHASjSOvmurJVEX5sqdX\n" - "zGQs9HzysDvTVHQh1VUWXyj612DUWZoAYYaUg+CiAZLA/ShT+zN/OC8kWa1RXZPt\n" - "BfTM7REBxAOxUEDuL1aa/KkFqXgy3cr795TWqdt0lZ/dk7kHxqZKR7nJ2TcOmYK9\n" - "UdJWnmebDgjlRvXS4CgG8JNzyJtukogSjmp7qsxX9QZ1umUw3Lf7StSdXZT1oIDI\n" - "evLJCTohtE3/ocRlHfQ9l+B8V+8z7YE+0liFwjwUyrYVUpJ2YuPmHHfauTI2JyVX\n" - "Kk9dJopvnkhA6rIvNjkd3N3iWE3ftSkk/PV9Iu7PQ2jtR8JXkPMJfgq0owbxhn5N\n" - "oqQW/zQU7pq4Y9+rvH2qPFSxHGmecBhxetXoAPT66hHJCUTAspF/5DgT6TVMu+Gs\n" - "hiRt+POJ1lVlGUHsF9Z7IE/d+NCESwU=\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIEDTCCAnWgAwIBAgIMV6MdMjWzT9C59ec8MA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTMwIBcNMTYwNTEwMDg0ODMwWhgPOTk5OTEyMzEyMzU5NTlaMBIx\n" - "EDAOBgNVBAMTB3N1YkNBLTMwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIB\n" - "gQCgOcNXzStOnRFoi05aMRLeMB45X4a2srSBul3ULxDSGjIP0EEl//X2WLiope/x\n" - "NL8bPCRpI1sSVXl8Hb1cK3qWNGazVmC7xW07NxL26I86e3/BVRnq8ioVtvPQwEpv\n" - "uI8F97x1vL/n+cfcdkN77NScr5C9jHMVioRvC+qKz9bUBx5DSySV66PR5+wGsJDv\n" - "kfsmjVOgqiTlSWQS5G3nMMq0Rixsc5dP5Wygkbdh9+45UCtObcnHABJrP+GtLiG0\n" - "AOUx6oPzPteZL13erWXg7zYusTarj9rTcdsgR/Im1mIzmD2i7GhJo4Gj0Sk3Rq93\n" - "JyeA+Ay5UPmqcm+dqX00b49MTTv4GtO53kLQSCXYFJ96jcMiXMzBFJD1ROsdk4WU\n" - "ed/tJMHffttDz9j3WcuX9M2nzTT2xlauokjbEAhRDRw5fxCFZh7TbmaH4vysDO9U\n" - "ZXVEXSLKonQ2Lmyso48s/G30VmlSjtPtJqRsv/oPpCO/c0D6BrkHV55B48xfmyIF\n" - "jgECAwEAAaNkMGIwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0G\n" - "A1UdDgQWBBQtMwQbJ3+UBHzH4zVP6SWklOG3oTAfBgNVHSMEGDAWgBT5qIYZY7ak\n" - "FBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAMii5Gx3/d/58oDRy5a0o\n" - "PvQhkU0dKa61NfjjOz9uqxNSilLJE7jGJPaG2tKtC/XU1Ybql2tqQY68kogjKs31\n" - "QC6RFkoZAFouTJt11kzbgVWKewCk3/OrA0/ZkRrAfE0Pma/NITRwTHmTsQOdv/bz\n" - "R+xIPhjKxKrKyJFMG5xb+Q0OKSbd8kDpgYWKob5x2jsNYgEDp8nYSRT45SGw7c7F\n" - "cumkXz2nA6r5NwbnhELvNFK8fzsY+QJKHaAlJ9CclliP1PiiAcl2LQo2gaygWNiD\n" - "+ggnqzy7nqam9rieOOMHls1kKFAFrWy2g/cBhTfS+/7Shpex7NK2GAiujgUV0TZH\n" - "EyEZt6um4gLS9vwUKs/R4XS9VL/bBlfAy2hAVTeUejiRBGeTJkqBu7+c4FdrCByV\n" - "haeQASMYu/lga8eaGL1zJbJe2BQWI754KDYDT9qKNqGlgysr4AVje7z1Y1MQ72Sn\n" - "frzYSQw6BB85CurB6iou3Q+eM4o4g/+xGEuDo0Ne/8ir\n" - "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_ca3_ipaddr_cert = - { (unsigned char *)server_ipaddr_ca3_cert_pem, + "-----BEGIN CERTIFICATE-----\n" + "MIIEAzCCAmugAwIBAgIMWNI1ISkCpEsFglgfMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTMwHhcNMDQwMjI5MTUyMTQyWhcNMjQwMjI5MTUyMTQxWjANMQsw\n" + "CQYDVQQGEwJHUjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBANk9eJmq\n" + "LPfAu7P4Hhmcm4KmEsRfuTXk1ylqYvf715riBfJ94VIdtJqKE9q4FRwMxVsv/B+S\n" + "HFiIlEJfvCociQkrgSfloTNIMNrqkj8IjmVJuJd00MZsUuHlvwa6+F/PLLyUOMU0\n" + "3LdpuR9TbvS2fMVjmaRjBiCO439GA+qHRvwxxP7FR433Hg+5JdeYwLWve/vLgm4z\n" + "ETxnMYOFbZpArkizpBi/RYQtLmFW8HwZ0/ldDBMnDgcfmL9gRLtMQ1XZEHLNFjyE\n" + "VD1JsrlgccaizNUkiUi7Gbm/w3YiDVxbq3u3cee5lsNhEMIREyISKAHPy8RlnIWw\n" + "wuDlnsmI0pIb9/4RH0LMMlceDEFy1X0QRzYqZFPU/0l4j/FlQ6X2UqWNz63ybRSb\n" + "cCzHl25abi1xmbsV5ydomJNcP+0QbripMpa0O6gjv5f0yMd7mW9/aAglPcKgpbbh\n" + "Gfo7V9z2gIKdUCLRXoUszhdobnRf00LrrpFUQWReKHxMcDWAL2b00kysPQIDAQAB\n" + "o2EwXzAMBgNVHRMBAf8EAjAAMA8GA1UdEQQIMAaHBH8AAAEwHQYDVR0OBBYEFDOd\n" + "4SfTi9X86wX8tceBaU9eO9nWMB8GA1UdIwQYMBaAFPmohhljtqQUE2B2DwGaNTbv\n" + "8bSvMA0GCSqGSIb3DQEBCwUAA4IBgQCNwaCnuNcrSpKjNI99kwuS2/LRnt40yN0B\n" + "LvN4wnkfEh02LXg2ylXCYZZw59m3w7Cefr1BGLXJjbJTNHASjSOvmurJVEX5sqdX\n" + "zGQs9HzysDvTVHQh1VUWXyj612DUWZoAYYaUg+CiAZLA/ShT+zN/OC8kWa1RXZPt\n" + "BfTM7REBxAOxUEDuL1aa/KkFqXgy3cr795TWqdt0lZ/dk7kHxqZKR7nJ2TcOmYK9\n" + "UdJWnmebDgjlRvXS4CgG8JNzyJtukogSjmp7qsxX9QZ1umUw3Lf7StSdXZT1oIDI\n" + "evLJCTohtE3/ocRlHfQ9l+B8V+8z7YE+0liFwjwUyrYVUpJ2YuPmHHfauTI2JyVX\n" + "Kk9dJopvnkhA6rIvNjkd3N3iWE3ftSkk/PV9Iu7PQ2jtR8JXkPMJfgq0owbxhn5N\n" + "oqQW/zQU7pq4Y9+rvH2qPFSxHGmecBhxetXoAPT66hHJCUTAspF/5DgT6TVMu+Gs\n" + "hiRt+POJ1lVlGUHsF9Z7IE/d+NCESwU=\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIEDTCCAnWgAwIBAgIMV6MdMjWzT9C59ec8MA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTMwIBcNMTYwNTEwMDg0ODMwWhgPOTk5OTEyMzEyMzU5NTlaMBIx\n" + "EDAOBgNVBAMTB3N1YkNBLTMwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIB\n" + "gQCgOcNXzStOnRFoi05aMRLeMB45X4a2srSBul3ULxDSGjIP0EEl//X2WLiope/x\n" + "NL8bPCRpI1sSVXl8Hb1cK3qWNGazVmC7xW07NxL26I86e3/BVRnq8ioVtvPQwEpv\n" + "uI8F97x1vL/n+cfcdkN77NScr5C9jHMVioRvC+qKz9bUBx5DSySV66PR5+wGsJDv\n" + "kfsmjVOgqiTlSWQS5G3nMMq0Rixsc5dP5Wygkbdh9+45UCtObcnHABJrP+GtLiG0\n" + "AOUx6oPzPteZL13erWXg7zYusTarj9rTcdsgR/Im1mIzmD2i7GhJo4Gj0Sk3Rq93\n" + "JyeA+Ay5UPmqcm+dqX00b49MTTv4GtO53kLQSCXYFJ96jcMiXMzBFJD1ROsdk4WU\n" + "ed/tJMHffttDz9j3WcuX9M2nzTT2xlauokjbEAhRDRw5fxCFZh7TbmaH4vysDO9U\n" + "ZXVEXSLKonQ2Lmyso48s/G30VmlSjtPtJqRsv/oPpCO/c0D6BrkHV55B48xfmyIF\n" + "jgECAwEAAaNkMGIwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0G\n" + "A1UdDgQWBBQtMwQbJ3+UBHzH4zVP6SWklOG3oTAfBgNVHSMEGDAWgBT5qIYZY7ak\n" + "FBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAMii5Gx3/d/58oDRy5a0o\n" + "PvQhkU0dKa61NfjjOz9uqxNSilLJE7jGJPaG2tKtC/XU1Ybql2tqQY68kogjKs31\n" + "QC6RFkoZAFouTJt11kzbgVWKewCk3/OrA0/ZkRrAfE0Pma/NITRwTHmTsQOdv/bz\n" + "R+xIPhjKxKrKyJFMG5xb+Q0OKSbd8kDpgYWKob5x2jsNYgEDp8nYSRT45SGw7c7F\n" + "cumkXz2nA6r5NwbnhELvNFK8fzsY+QJKHaAlJ9CclliP1PiiAcl2LQo2gaygWNiD\n" + "+ggnqzy7nqam9rieOOMHls1kKFAFrWy2g/cBhTfS+/7Shpex7NK2GAiujgUV0TZH\n" + "EyEZt6um4gLS9vwUKs/R4XS9VL/bBlfAy2hAVTeUejiRBGeTJkqBu7+c4FdrCByV\n" + "haeQASMYu/lga8eaGL1zJbJe2BQWI754KDYDT9qKNqGlgysr4AVje7z1Y1MQ72Sn\n" + "frzYSQw6BB85CurB6iou3Q+eM4o4g/+xGEuDo0Ne/8ir\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_ca3_ipaddr_cert = { + (unsigned char *)server_ipaddr_ca3_cert_pem, sizeof(server_ipaddr_ca3_cert_pem) - 1 }; @@ -1359,274 +1369,278 @@ const gnutls_datum_t server_ca3_ipaddr_cert_chain = { /* shares server_ca3 key - uses IDNA2003 encoding */ static char server_localhost_utf8_ca3_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIESDCCArCgAwIBAgIMWElUMBlK8XImg3gXMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTMwHhcNMDQwMjI5MTUyMTQyWhcNMjQwMjI5MTUyMTQxWjANMQsw\n" - "CQYDVQQGEwJHUjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBANk9eJmq\n" - "LPfAu7P4Hhmcm4KmEsRfuTXk1ylqYvf715riBfJ94VIdtJqKE9q4FRwMxVsv/B+S\n" - "HFiIlEJfvCociQkrgSfloTNIMNrqkj8IjmVJuJd00MZsUuHlvwa6+F/PLLyUOMU0\n" - "3LdpuR9TbvS2fMVjmaRjBiCO439GA+qHRvwxxP7FR433Hg+5JdeYwLWve/vLgm4z\n" - "ETxnMYOFbZpArkizpBi/RYQtLmFW8HwZ0/ldDBMnDgcfmL9gRLtMQ1XZEHLNFjyE\n" - "VD1JsrlgccaizNUkiUi7Gbm/w3YiDVxbq3u3cee5lsNhEMIREyISKAHPy8RlnIWw\n" - "wuDlnsmI0pIb9/4RH0LMMlceDEFy1X0QRzYqZFPU/0l4j/FlQ6X2UqWNz63ybRSb\n" - "cCzHl25abi1xmbsV5ydomJNcP+0QbripMpa0O6gjv5f0yMd7mW9/aAglPcKgpbbh\n" - "Gfo7V9z2gIKdUCLRXoUszhdobnRf00LrrpFUQWReKHxMcDWAL2b00kysPQIDAQAB\n" - "o4GlMIGiMAwGA1UdEwEB/wQCMAAwUgYDVR0RBEswSYITd3d3LnhuLS1reGF3aGt1\n" - "LmNvbYIieG4tLWZpcXUxYXowM2MxOHQueG4tLW14YWgxYW1vLmNvbYIObG9jYWxo\n" - "b3N0LXV0ZjgwHQYDVR0OBBYEFDOd4SfTi9X86wX8tceBaU9eO9nWMB8GA1UdIwQY\n" - "MBaAFPmohhljtqQUE2B2DwGaNTbv8bSvMA0GCSqGSIb3DQEBCwUAA4IBgQBHHhTy\n" - "X3AjFcrDa27yN5lnfZfrJ1QGdjoxbcGlWuwI5+EsRInxZSvXQVyh+P9YTphdqAMj\n" - "YsGCrzqD6+2SkBhrd7/KbmGZF3zFpqe9IcqS2m2u3Z0q4oNjhai86PIRlTSl+Dm/\n" - "V0T98Fsx/Ec/T509E+HCSYhZgX1A1wCw0jrPJ4UcT9S0jwmP3q8KIXrVAC88tmX3\n" - "eeVOoVI+lccju++fDaSQJFtZ8PVo8Yd8XDb/xu9ijRQNVom+1x70YvRo6jaSsX4k\n" - "Y5gM1w3xTObKvo0YI/ot29DE0gE5xPYuiJOzooTNMBSklsB4sXS3Ehwpp+zuUAHQ\n" - "h9I3os365QeRyB1IaWbO/7WK/zKPFbc3cyQLg8iGGeecH26CJ7vRlxDkvNvhscuh\n" - "6Z3YK5DJdisRx5W3fW+JapAjsTXpYd/Aj4xMFoNXqvU3WaejB1TfQqxgBHw9Tapy\n" - "PexWtASNmu1xcO13LdgN4Oa1OL4P4U9TQVwoCpkjlDSVNLqBC0N5kPmGkOY=\n" - "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_ca3_localhost_utf8_cert = - { (unsigned char *)server_localhost_utf8_ca3_cert_pem, + "-----BEGIN CERTIFICATE-----\n" + "MIIESDCCArCgAwIBAgIMWElUMBlK8XImg3gXMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTMwHhcNMDQwMjI5MTUyMTQyWhcNMjQwMjI5MTUyMTQxWjANMQsw\n" + "CQYDVQQGEwJHUjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBANk9eJmq\n" + "LPfAu7P4Hhmcm4KmEsRfuTXk1ylqYvf715riBfJ94VIdtJqKE9q4FRwMxVsv/B+S\n" + "HFiIlEJfvCociQkrgSfloTNIMNrqkj8IjmVJuJd00MZsUuHlvwa6+F/PLLyUOMU0\n" + "3LdpuR9TbvS2fMVjmaRjBiCO439GA+qHRvwxxP7FR433Hg+5JdeYwLWve/vLgm4z\n" + "ETxnMYOFbZpArkizpBi/RYQtLmFW8HwZ0/ldDBMnDgcfmL9gRLtMQ1XZEHLNFjyE\n" + "VD1JsrlgccaizNUkiUi7Gbm/w3YiDVxbq3u3cee5lsNhEMIREyISKAHPy8RlnIWw\n" + "wuDlnsmI0pIb9/4RH0LMMlceDEFy1X0QRzYqZFPU/0l4j/FlQ6X2UqWNz63ybRSb\n" + "cCzHl25abi1xmbsV5ydomJNcP+0QbripMpa0O6gjv5f0yMd7mW9/aAglPcKgpbbh\n" + "Gfo7V9z2gIKdUCLRXoUszhdobnRf00LrrpFUQWReKHxMcDWAL2b00kysPQIDAQAB\n" + "o4GlMIGiMAwGA1UdEwEB/wQCMAAwUgYDVR0RBEswSYITd3d3LnhuLS1reGF3aGt1\n" + "LmNvbYIieG4tLWZpcXUxYXowM2MxOHQueG4tLW14YWgxYW1vLmNvbYIObG9jYWxo\n" + "b3N0LXV0ZjgwHQYDVR0OBBYEFDOd4SfTi9X86wX8tceBaU9eO9nWMB8GA1UdIwQY\n" + "MBaAFPmohhljtqQUE2B2DwGaNTbv8bSvMA0GCSqGSIb3DQEBCwUAA4IBgQBHHhTy\n" + "X3AjFcrDa27yN5lnfZfrJ1QGdjoxbcGlWuwI5+EsRInxZSvXQVyh+P9YTphdqAMj\n" + "YsGCrzqD6+2SkBhrd7/KbmGZF3zFpqe9IcqS2m2u3Z0q4oNjhai86PIRlTSl+Dm/\n" + "V0T98Fsx/Ec/T509E+HCSYhZgX1A1wCw0jrPJ4UcT9S0jwmP3q8KIXrVAC88tmX3\n" + "eeVOoVI+lccju++fDaSQJFtZ8PVo8Yd8XDb/xu9ijRQNVom+1x70YvRo6jaSsX4k\n" + "Y5gM1w3xTObKvo0YI/ot29DE0gE5xPYuiJOzooTNMBSklsB4sXS3Ehwpp+zuUAHQ\n" + "h9I3os365QeRyB1IaWbO/7WK/zKPFbc3cyQLg8iGGeecH26CJ7vRlxDkvNvhscuh\n" + "6Z3YK5DJdisRx5W3fW+JapAjsTXpYd/Aj4xMFoNXqvU3WaejB1TfQqxgBHw9Tapy\n" + "PexWtASNmu1xcO13LdgN4Oa1OL4P4U9TQVwoCpkjlDSVNLqBC0N5kPmGkOY=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_ca3_localhost_utf8_cert = { + (unsigned char *)server_localhost_utf8_ca3_cert_pem, sizeof(server_localhost_utf8_ca3_cert_pem) - 1 }; /* shared the server_ca3 key, uses raw UTF8 on DnsName */ static char server_localhost_inv_utf8_ca3_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIEQDCCAqigAwIBAgIMV9ZyrTt30lJ2pYe6MA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTMwHhcNMDQwMjI5MTUyMTQyWhcNMjQwMjI5MTUyMTQxWjANMQsw\n" - "CQYDVQQGEwJHUjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBANk9eJmq\n" - "LPfAu7P4Hhmcm4KmEsRfuTXk1ylqYvf715riBfJ94VIdtJqKE9q4FRwMxVsv/B+S\n" - "HFiIlEJfvCociQkrgSfloTNIMNrqkj8IjmVJuJd00MZsUuHlvwa6+F/PLLyUOMU0\n" - "3LdpuR9TbvS2fMVjmaRjBiCO439GA+qHRvwxxP7FR433Hg+5JdeYwLWve/vLgm4z\n" - "ETxnMYOFbZpArkizpBi/RYQtLmFW8HwZ0/ldDBMnDgcfmL9gRLtMQ1XZEHLNFjyE\n" - "VD1JsrlgccaizNUkiUi7Gbm/w3YiDVxbq3u3cee5lsNhEMIREyISKAHPy8RlnIWw\n" - "wuDlnsmI0pIb9/4RH0LMMlceDEFy1X0QRzYqZFPU/0l4j/FlQ6X2UqWNz63ybRSb\n" - "cCzHl25abi1xmbsV5ydomJNcP+0QbripMpa0O6gjv5f0yMd7mW9/aAglPcKgpbbh\n" - "Gfo7V9z2gIKdUCLRXoUszhdobnRf00LrrpFUQWReKHxMcDWAL2b00kysPQIDAQAB\n" - "o4GdMIGaMAwGA1UdEwEB/wQCMAAwSgYDVR0RBEMwQYISd3d3Ls69zq/Ous6/z4Iu\n" - "Y29tghvnroDkvZPkuK3mlocuzrXOvs+Ez4HOsS5jb22CDmxvY2FsaG9zdC11dGY4\n" - "MB0GA1UdDgQWBBQzneEn04vV/OsF/LXHgWlPXjvZ1jAfBgNVHSMEGDAWgBT5qIYZ\n" - "Y7akFBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAkUgmFO2bdws049Nz\n" - "w55UaF7XxG8ER7kKzLCWgw8tuYjcIDKQ+/gD0hUuKBxCbuISdT32gfZTf+ZNKtEg\n" - "7f9Lhr935ZoDCvyYnal1ploqAOu0ZDEXz+cU+OzreJ58J95LYX2we1lPqCYz0qo0\n" - "6FeWrP6H6+azis2ee5XN+b20l/nRl3bNGZDnkl6+b3wPR6rIFaILcEZDl15SMgiW\n" - "PlzJ0s97szWAO2ywLvNPdB66ugOvJY34ivTQOkCDi9css5faN1LcwmqDAeAq4DZt\n" - "mZ8/504D1AUD9szneb2UgD9ZnPr4r45+qzE3lCtvmFGEddJ3c9zQVjnqEKljgG6S\n" - "FdlAVVfxbwoAc24kN6UUEpLiabFoL071pZt1WoHOFA68yBxnC6CO/3vfVSF9Ftg3\n" - "oUPldkvMs8+33YhojDKYXP5USoES2OPdofmq8LnTZj7c6ex+SvlRdOgHg4pd9lX2\n" - "Efwe6rFJaNbKv9C9tWpPIPHRk/YkUIe29VUQR2m7UUpToBca\n" - "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_ca3_localhost_inv_utf8_cert = - { (unsigned char *)server_localhost_inv_utf8_ca3_cert_pem, + "-----BEGIN CERTIFICATE-----\n" + "MIIEQDCCAqigAwIBAgIMV9ZyrTt30lJ2pYe6MA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTMwHhcNMDQwMjI5MTUyMTQyWhcNMjQwMjI5MTUyMTQxWjANMQsw\n" + "CQYDVQQGEwJHUjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBANk9eJmq\n" + "LPfAu7P4Hhmcm4KmEsRfuTXk1ylqYvf715riBfJ94VIdtJqKE9q4FRwMxVsv/B+S\n" + "HFiIlEJfvCociQkrgSfloTNIMNrqkj8IjmVJuJd00MZsUuHlvwa6+F/PLLyUOMU0\n" + "3LdpuR9TbvS2fMVjmaRjBiCO439GA+qHRvwxxP7FR433Hg+5JdeYwLWve/vLgm4z\n" + "ETxnMYOFbZpArkizpBi/RYQtLmFW8HwZ0/ldDBMnDgcfmL9gRLtMQ1XZEHLNFjyE\n" + "VD1JsrlgccaizNUkiUi7Gbm/w3YiDVxbq3u3cee5lsNhEMIREyISKAHPy8RlnIWw\n" + "wuDlnsmI0pIb9/4RH0LMMlceDEFy1X0QRzYqZFPU/0l4j/FlQ6X2UqWNz63ybRSb\n" + "cCzHl25abi1xmbsV5ydomJNcP+0QbripMpa0O6gjv5f0yMd7mW9/aAglPcKgpbbh\n" + "Gfo7V9z2gIKdUCLRXoUszhdobnRf00LrrpFUQWReKHxMcDWAL2b00kysPQIDAQAB\n" + "o4GdMIGaMAwGA1UdEwEB/wQCMAAwSgYDVR0RBEMwQYISd3d3Ls69zq/Ous6/z4Iu\n" + "Y29tghvnroDkvZPkuK3mlocuzrXOvs+Ez4HOsS5jb22CDmxvY2FsaG9zdC11dGY4\n" + "MB0GA1UdDgQWBBQzneEn04vV/OsF/LXHgWlPXjvZ1jAfBgNVHSMEGDAWgBT5qIYZ\n" + "Y7akFBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAkUgmFO2bdws049Nz\n" + "w55UaF7XxG8ER7kKzLCWgw8tuYjcIDKQ+/gD0hUuKBxCbuISdT32gfZTf+ZNKtEg\n" + "7f9Lhr935ZoDCvyYnal1ploqAOu0ZDEXz+cU+OzreJ58J95LYX2we1lPqCYz0qo0\n" + "6FeWrP6H6+azis2ee5XN+b20l/nRl3bNGZDnkl6+b3wPR6rIFaILcEZDl15SMgiW\n" + "PlzJ0s97szWAO2ywLvNPdB66ugOvJY34ivTQOkCDi9css5faN1LcwmqDAeAq4DZt\n" + "mZ8/504D1AUD9szneb2UgD9ZnPr4r45+qzE3lCtvmFGEddJ3c9zQVjnqEKljgG6S\n" + "FdlAVVfxbwoAc24kN6UUEpLiabFoL071pZt1WoHOFA68yBxnC6CO/3vfVSF9Ftg3\n" + "oUPldkvMs8+33YhojDKYXP5USoES2OPdofmq8LnTZj7c6ex+SvlRdOgHg4pd9lX2\n" + "Efwe6rFJaNbKv9C9tWpPIPHRk/YkUIe29VUQR2m7UUpToBca\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_ca3_localhost_inv_utf8_cert = { + (unsigned char *)server_localhost_inv_utf8_ca3_cert_pem, sizeof(server_localhost_inv_utf8_ca3_cert_pem) - 1 }; /* server_ca3_ecc_key */ static char server_localhost_ca3_ecc_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIC8zCCAVugAwIBAgIIV+OO5zqFDkowDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" - "AxMEQ0EtMzAgFw0xNjA5MjIwNzU3MjhaGA85OTk5MTIzMTIzNTk1OVowHTEbMBkG\n" - "A1UEAxMSc2VydmVyIGNlcnRpZmljYXRlMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcD\n" - "QgAEbUnlVnL48xM0lK6iDhHcqaFuYh6M5lmA823GQlwi5skgg7rySR0YrTimX9F6\n" - "K9kDCJu/7zmWlPiyb/1EFWEtk6OBjTCBijAMBgNVHRMBAf8EAjAAMBQGA1UdEQQN\n" - "MAuCCWxvY2FsaG9zdDATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8BAf8EBQMD\n" - "B4AAMB0GA1UdDgQWBBTaH7JGYwVXx31AqONpQsb3l20EqDAfBgNVHSMEGDAWgBT5\n" - "qIYZY7akFBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEATWsYCToPsxxU\n" - "f1zJv3+FKcIGI+8U7akTlnJEk3l9/Gkmkp0tsudtpZb+//rXIem9XVMKDYBEzRxQ\n" - "du3YleqR0Yj13S7piDHPl52PHJGvSHtLg4ooU74ZQcPFxoRxxNahYPb2Mhn0XqKh\n" - "Yc7JHkW53UVusanRmBCQIxI6tVuDO3rB/tQM4ygD9wDeT16xnDhfwemKaskHKM44\n" - "SMJJ9pY2zK1MvX5AZePTikMQqvc3aVfoE8Lv+4SGE/GyzvzaDOSzlwzNM6KBxerw\n" - "1qwnVO/lphUG09X4oXXtOqlAHaIfUmRMqgMPZEtWMszIQo9XimPfoLW3xKVqDWjN\n" - "EhHRLE0CCA/ip3lQ1bUt5EXhC1efPiOdEEYS5mHW7WAMAVi5aS1TzNLoJ4nahBwu\n" - "EeGtmSH4rDZlHTNsiXwvxV3XqWc39TqlgY+NGToyU1tA4+tVtalJ08Q37sFxSUvJ\n" - "Li9LPzU70EyX6WF+9FM45E4/Gt9Oh8btrYyjbyH/K2VI8qPRz5cW\n" - "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_ca3_localhost_ecc_cert = - { (unsigned char *)server_localhost_ca3_ecc_cert_pem, + "-----BEGIN CERTIFICATE-----\n" + "MIIC8zCCAVugAwIBAgIIV+OO5zqFDkowDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" + "AxMEQ0EtMzAgFw0xNjA5MjIwNzU3MjhaGA85OTk5MTIzMTIzNTk1OVowHTEbMBkG\n" + "A1UEAxMSc2VydmVyIGNlcnRpZmljYXRlMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcD\n" + "QgAEbUnlVnL48xM0lK6iDhHcqaFuYh6M5lmA823GQlwi5skgg7rySR0YrTimX9F6\n" + "K9kDCJu/7zmWlPiyb/1EFWEtk6OBjTCBijAMBgNVHRMBAf8EAjAAMBQGA1UdEQQN\n" + "MAuCCWxvY2FsaG9zdDATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8BAf8EBQMD\n" + "B4AAMB0GA1UdDgQWBBTaH7JGYwVXx31AqONpQsb3l20EqDAfBgNVHSMEGDAWgBT5\n" + "qIYZY7akFBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEATWsYCToPsxxU\n" + "f1zJv3+FKcIGI+8U7akTlnJEk3l9/Gkmkp0tsudtpZb+//rXIem9XVMKDYBEzRxQ\n" + "du3YleqR0Yj13S7piDHPl52PHJGvSHtLg4ooU74ZQcPFxoRxxNahYPb2Mhn0XqKh\n" + "Yc7JHkW53UVusanRmBCQIxI6tVuDO3rB/tQM4ygD9wDeT16xnDhfwemKaskHKM44\n" + "SMJJ9pY2zK1MvX5AZePTikMQqvc3aVfoE8Lv+4SGE/GyzvzaDOSzlwzNM6KBxerw\n" + "1qwnVO/lphUG09X4oXXtOqlAHaIfUmRMqgMPZEtWMszIQo9XimPfoLW3xKVqDWjN\n" + "EhHRLE0CCA/ip3lQ1bUt5EXhC1efPiOdEEYS5mHW7WAMAVi5aS1TzNLoJ4nahBwu\n" + "EeGtmSH4rDZlHTNsiXwvxV3XqWc39TqlgY+NGToyU1tA4+tVtalJ08Q37sFxSUvJ\n" + "Li9LPzU70EyX6WF+9FM45E4/Gt9Oh8btrYyjbyH/K2VI8qPRz5cW\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_ca3_localhost_ecc_cert = { + (unsigned char *)server_localhost_ca3_ecc_cert_pem, sizeof(server_localhost_ca3_ecc_cert_pem) - 1 }; /* shares server_ca3 key */ static char server_localhost_ca3_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIEKDCCApCgAwIBAgIMV6MdMjbIDKHKsL32MA0GCSqGSIb3DQEBCwUAMBIxEDAO\n" - "BgNVBAMTB3N1YkNBLTMwIBcNMTYwNTEwMDg1MTE4WhgPOTk5OTEyMzEyMzU5NTla\n" - "MAAwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDZPXiZqiz3wLuz+B4Z\n" - "nJuCphLEX7k15NcpamL3+9ea4gXyfeFSHbSaihPauBUcDMVbL/wfkhxYiJRCX7wq\n" - "HIkJK4En5aEzSDDa6pI/CI5lSbiXdNDGbFLh5b8Guvhfzyy8lDjFNNy3abkfU270\n" - "tnzFY5mkYwYgjuN/RgPqh0b8McT+xUeN9x4PuSXXmMC1r3v7y4JuMxE8ZzGDhW2a\n" - "QK5Is6QYv0WELS5hVvB8GdP5XQwTJw4HH5i/YES7TENV2RByzRY8hFQ9SbK5YHHG\n" - "oszVJIlIuxm5v8N2Ig1cW6t7t3HnuZbDYRDCERMiEigBz8vEZZyFsMLg5Z7JiNKS\n" - "G/f+ER9CzDJXHgxBctV9EEc2KmRT1P9JeI/xZUOl9lKljc+t8m0Um3Asx5duWm4t\n" - "cZm7FecnaJiTXD/tEG64qTKWtDuoI7+X9MjHe5lvf2gIJT3CoKW24Rn6O1fc9oCC\n" - "nVAi0V6FLM4XaG50X9NC666RVEFkXih8THA1gC9m9NJMrD0CAwEAAaOBjTCBijAM\n" - "BgNVHRMBAf8EAjAAMBQGA1UdEQQNMAuCCWxvY2FsaG9zdDATBgNVHSUEDDAKBggr\n" - "BgEFBQcDATAPBgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQWBBQzneEn04vV/OsF/LXH\n" - "gWlPXjvZ1jAfBgNVHSMEGDAWgBQtMwQbJ3+UBHzH4zVP6SWklOG3oTANBgkqhkiG\n" - "9w0BAQsFAAOCAYEASbEdRkK44GUb0Y+80JdYGFV1YuHUAq4QYSwCdrT0hwJrFYI2\n" - "s8+9/ncyzeyY00ryg6tPlKyE5B7ss29l8zcj0WJYsUk5kjV6uCWuo9/rqqPHK6Lc\n" - "Qx1cONR4Vt+gD5TX0nRNuKaHVbBJARZ3YOl2F3nApcR/8boq+WNKGhGkzFMaKV+i\n" - "IDpB0ziBUcb+q257lQGKrBuXl5nCd+PZswB//pZCsIkTF5jFdjeXvOvGDjYAr8rG\n" - "KpoMTskNcBqgi59sJc8djWMbNt+15qH4mSvTUW1caukeJAr4mwHfrSK5k9ezSSp1\n" - "EpbQ2Rp3xpbCgklhtsKHSJZ43sghZvCOxk8G3bRZ1/lW6sXvIPmLkvoeetTLvqYq\n" - "t/+gfv4NJuyZhzuJHbxrxBJ3C9QjqTbpiUumeRQHXLa+vZJUKX7ak1KVubKiOC+x\n" - "wyfgmq6quk5jPgOgMJWLwpA2Rm30wqX4OehXov3stSXFb+qASNOHlEtQdgKzIEX/\n" - "6TXY44pCGHMFO6Kr\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIEKDCCApCgAwIBAgIMV6MdMjbIDKHKsL32MA0GCSqGSIb3DQEBCwUAMBIxEDAO\n" + "BgNVBAMTB3N1YkNBLTMwIBcNMTYwNTEwMDg1MTE4WhgPOTk5OTEyMzEyMzU5NTla\n" + "MAAwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDZPXiZqiz3wLuz+B4Z\n" + "nJuCphLEX7k15NcpamL3+9ea4gXyfeFSHbSaihPauBUcDMVbL/wfkhxYiJRCX7wq\n" + "HIkJK4En5aEzSDDa6pI/CI5lSbiXdNDGbFLh5b8Guvhfzyy8lDjFNNy3abkfU270\n" + "tnzFY5mkYwYgjuN/RgPqh0b8McT+xUeN9x4PuSXXmMC1r3v7y4JuMxE8ZzGDhW2a\n" + "QK5Is6QYv0WELS5hVvB8GdP5XQwTJw4HH5i/YES7TENV2RByzRY8hFQ9SbK5YHHG\n" + "oszVJIlIuxm5v8N2Ig1cW6t7t3HnuZbDYRDCERMiEigBz8vEZZyFsMLg5Z7JiNKS\n" + "G/f+ER9CzDJXHgxBctV9EEc2KmRT1P9JeI/xZUOl9lKljc+t8m0Um3Asx5duWm4t\n" + "cZm7FecnaJiTXD/tEG64qTKWtDuoI7+X9MjHe5lvf2gIJT3CoKW24Rn6O1fc9oCC\n" + "nVAi0V6FLM4XaG50X9NC666RVEFkXih8THA1gC9m9NJMrD0CAwEAAaOBjTCBijAM\n" + "BgNVHRMBAf8EAjAAMBQGA1UdEQQNMAuCCWxvY2FsaG9zdDATBgNVHSUEDDAKBggr\n" + "BgEFBQcDATAPBgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQWBBQzneEn04vV/OsF/LXH\n" + "gWlPXjvZ1jAfBgNVHSMEGDAWgBQtMwQbJ3+UBHzH4zVP6SWklOG3oTANBgkqhkiG\n" + "9w0BAQsFAAOCAYEASbEdRkK44GUb0Y+80JdYGFV1YuHUAq4QYSwCdrT0hwJrFYI2\n" + "s8+9/ncyzeyY00ryg6tPlKyE5B7ss29l8zcj0WJYsUk5kjV6uCWuo9/rqqPHK6Lc\n" + "Qx1cONR4Vt+gD5TX0nRNuKaHVbBJARZ3YOl2F3nApcR/8boq+WNKGhGkzFMaKV+i\n" + "IDpB0ziBUcb+q257lQGKrBuXl5nCd+PZswB//pZCsIkTF5jFdjeXvOvGDjYAr8rG\n" + "KpoMTskNcBqgi59sJc8djWMbNt+15qH4mSvTUW1caukeJAr4mwHfrSK5k9ezSSp1\n" + "EpbQ2Rp3xpbCgklhtsKHSJZ43sghZvCOxk8G3bRZ1/lW6sXvIPmLkvoeetTLvqYq\n" + "t/+gfv4NJuyZhzuJHbxrxBJ3C9QjqTbpiUumeRQHXLa+vZJUKX7ak1KVubKiOC+x\n" + "wyfgmq6quk5jPgOgMJWLwpA2Rm30wqX4OehXov3stSXFb+qASNOHlEtQdgKzIEX/\n" + "6TXY44pCGHMFO6Kr\n" + "-----END CERTIFICATE-----\n"; /* shares server_ca3 key with tlsfeature=5 */ static char server_ca3_tlsfeat_cert_pem[] = - "-----BEGIN CERTIFICATE-----" - "MIIEOjCCAqKgAwIBAgIUYBRfAcvgBUU4jCb8W89sQcPLqswwDQYJKoZIhvcNAQEL" - "BQAwDzENMAsGA1UEAxMEQ0EtMzAgFw0xOTA2MDcyMTA4NDFaGA85OTk5MTIzMTIz" - "NTk1OVowIjEgMB4GA1UEAxMXR251VExTIHRlc3QgY2VydGlmaWNhdGUwggGiMA0G" - "CSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDZPXiZqiz3wLuz+B4ZnJuCphLEX7k1" - "5NcpamL3+9ea4gXyfeFSHbSaihPauBUcDMVbL/wfkhxYiJRCX7wqHIkJK4En5aEz" - "SDDa6pI/CI5lSbiXdNDGbFLh5b8Guvhfzyy8lDjFNNy3abkfU270tnzFY5mkYwYg" - "juN/RgPqh0b8McT+xUeN9x4PuSXXmMC1r3v7y4JuMxE8ZzGDhW2aQK5Is6QYv0WE" - "LS5hVvB8GdP5XQwTJw4HH5i/YES7TENV2RByzRY8hFQ9SbK5YHHGoszVJIlIuxm5" - "v8N2Ig1cW6t7t3HnuZbDYRDCERMiEigBz8vEZZyFsMLg5Z7JiNKSG/f+ER9CzDJX" - "HgxBctV9EEc2KmRT1P9JeI/xZUOl9lKljc+t8m0Um3Asx5duWm4tcZm7FecnaJiT" - "XD/tEG64qTKWtDuoI7+X9MjHe5lvf2gIJT3CoKW24Rn6O1fc9oCCnVAi0V6FLM4X" - "aG50X9NC666RVEFkXih8THA1gC9m9NJMrD0CAwEAAaN5MHcwEQYIKwYBBQUHARgE" - "BTADAgEFMAwGA1UdEwEB/wQCMAAwFAYDVR0RBA0wC4IJbG9jYWxob3N0MB0GA1Ud" - "DgQWBBQzneEn04vV/OsF/LXHgWlPXjvZ1jAfBgNVHSMEGDAWgBT5qIYZY7akFBNg" - "dg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEASMVR+C1x3pBRSRaaIYbFTC0X" - "VXc66iQWDfpTSokLIEN/UVZzLsQw5p1PntPqnRRudDnXS77rNQSZcc4NTFYrzSqW" - "WwdhIXtl3igLg5HMxU80dsr3LfGkzJ1iDS1RR0EGSvFjOE9ZUK0IBdsUvINqpj+l" - "6qxL36yfxamuELIxvgmecIMvLzbe7tUjRXneNvLGsLAJcq5QQmNMCWiyywtHbFa0" - "zbpxKMJmHMk0SbgZHUuFaASlAqVez19rJdzqQcJiw/YrMbbj/b2me1duLQ64dqGL" - "5gKTyDMhk5td53R5uPnr7F6+1u8zRzqA6mBvTfEk4wJ6YmvqdBfC47xT+Ksba6dX" - "Ugz+So2iu0rQxaLEBTZJ/gTXJEUafxUN4wF1ZOnUyltoqLJymhQoceoSwjYobOal" - "FUZEJgFNA7j8tR7J3MtFUaJqFosuPtxhF8/CCPukKV7bRokqh7zK+F21iaQOYvJn" - "AfuOg2g0ZMurGyS/yg8mVsGjh4bho9zPOlhPtFNM" "-----END CERTIFICATE-----"; + "-----BEGIN CERTIFICATE-----" + "MIIEOjCCAqKgAwIBAgIUYBRfAcvgBUU4jCb8W89sQcPLqswwDQYJKoZIhvcNAQEL" + "BQAwDzENMAsGA1UEAxMEQ0EtMzAgFw0xOTA2MDcyMTA4NDFaGA85OTk5MTIzMTIz" + "NTk1OVowIjEgMB4GA1UEAxMXR251VExTIHRlc3QgY2VydGlmaWNhdGUwggGiMA0G" + "CSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDZPXiZqiz3wLuz+B4ZnJuCphLEX7k1" + "5NcpamL3+9ea4gXyfeFSHbSaihPauBUcDMVbL/wfkhxYiJRCX7wqHIkJK4En5aEz" + "SDDa6pI/CI5lSbiXdNDGbFLh5b8Guvhfzyy8lDjFNNy3abkfU270tnzFY5mkYwYg" + "juN/RgPqh0b8McT+xUeN9x4PuSXXmMC1r3v7y4JuMxE8ZzGDhW2aQK5Is6QYv0WE" + "LS5hVvB8GdP5XQwTJw4HH5i/YES7TENV2RByzRY8hFQ9SbK5YHHGoszVJIlIuxm5" + "v8N2Ig1cW6t7t3HnuZbDYRDCERMiEigBz8vEZZyFsMLg5Z7JiNKSG/f+ER9CzDJX" + "HgxBctV9EEc2KmRT1P9JeI/xZUOl9lKljc+t8m0Um3Asx5duWm4tcZm7FecnaJiT" + "XD/tEG64qTKWtDuoI7+X9MjHe5lvf2gIJT3CoKW24Rn6O1fc9oCCnVAi0V6FLM4X" + "aG50X9NC666RVEFkXih8THA1gC9m9NJMrD0CAwEAAaN5MHcwEQYIKwYBBQUHARgE" + "BTADAgEFMAwGA1UdEwEB/wQCMAAwFAYDVR0RBA0wC4IJbG9jYWxob3N0MB0GA1Ud" + "DgQWBBQzneEn04vV/OsF/LXHgWlPXjvZ1jAfBgNVHSMEGDAWgBT5qIYZY7akFBNg" + "dg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEASMVR+C1x3pBRSRaaIYbFTC0X" + "VXc66iQWDfpTSokLIEN/UVZzLsQw5p1PntPqnRRudDnXS77rNQSZcc4NTFYrzSqW" + "WwdhIXtl3igLg5HMxU80dsr3LfGkzJ1iDS1RR0EGSvFjOE9ZUK0IBdsUvINqpj+l" + "6qxL36yfxamuELIxvgmecIMvLzbe7tUjRXneNvLGsLAJcq5QQmNMCWiyywtHbFa0" + "zbpxKMJmHMk0SbgZHUuFaASlAqVez19rJdzqQcJiw/YrMbbj/b2me1duLQ64dqGL" + "5gKTyDMhk5td53R5uPnr7F6+1u8zRzqA6mBvTfEk4wJ6YmvqdBfC47xT+Ksba6dX" + "Ugz+So2iu0rQxaLEBTZJ/gTXJEUafxUN4wF1ZOnUyltoqLJymhQoceoSwjYobOal" + "FUZEJgFNA7j8tR7J3MtFUaJqFosuPtxhF8/CCPukKV7bRokqh7zK+F21iaQOYvJn" + "AfuOg2g0ZMurGyS/yg8mVsGjh4bho9zPOlhPtFNM" + "-----END CERTIFICATE-----"; /* Marked as decrypt-only */ static char server_localhost_ca3_rsa_decrypt_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIEITCCAomgAwIBAgIIWU+IEie6JrYwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" - "AxMEQ0EtMzAgFw0xNzA2MjUwOTUzMjNaGA85OTk5MTIzMTIzNTk1OVowADCCAaIw\n" - "DQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBANk9eJmqLPfAu7P4Hhmcm4KmEsRf\n" - "uTXk1ylqYvf715riBfJ94VIdtJqKE9q4FRwMxVsv/B+SHFiIlEJfvCociQkrgSfl\n" - "oTNIMNrqkj8IjmVJuJd00MZsUuHlvwa6+F/PLLyUOMU03LdpuR9TbvS2fMVjmaRj\n" - "BiCO439GA+qHRvwxxP7FR433Hg+5JdeYwLWve/vLgm4zETxnMYOFbZpArkizpBi/\n" - "RYQtLmFW8HwZ0/ldDBMnDgcfmL9gRLtMQ1XZEHLNFjyEVD1JsrlgccaizNUkiUi7\n" - "Gbm/w3YiDVxbq3u3cee5lsNhEMIREyISKAHPy8RlnIWwwuDlnsmI0pIb9/4RH0LM\n" - "MlceDEFy1X0QRzYqZFPU/0l4j/FlQ6X2UqWNz63ybRSbcCzHl25abi1xmbsV5ydo\n" - "mJNcP+0QbripMpa0O6gjv5f0yMd7mW9/aAglPcKgpbbhGfo7V9z2gIKdUCLRXoUs\n" - "zhdobnRf00LrrpFUQWReKHxMcDWAL2b00kysPQIDAQABo4GNMIGKMAwGA1UdEwEB\n" - "/wQCMAAwFAYDVR0RBA0wC4IJbG9jYWxob3N0MBMGA1UdJQQMMAoGCCsGAQUFBwMB\n" - "MA8GA1UdDwEB/wQFAwMHIAAwHQYDVR0OBBYEFDOd4SfTi9X86wX8tceBaU9eO9nW\n" - "MB8GA1UdIwQYMBaAFPmohhljtqQUE2B2DwGaNTbv8bSvMA0GCSqGSIb3DQEBCwUA\n" - "A4IBgQAaq4+vai/FwYQ2fAjOsHsVV0nR5Zq55tT8Fexrj2/e9gr+bMV4HVxETByy\n" - "fLtMHGYv+8BENDaI2EOHTyKp5O2DNbITJSN7/ZIO4Rsk+N5m2FyF7DV/sAoxhN7R\n" - "mDy/jDtZyeIqKLptOQZbkRv3lf+vtJL3eakpgh5T/j14kT0QjLyJEZB1D9jurUsV\n" - "+fxYxQUpv4YInDeEk5aKfvZNdkEpbv56GYNc15mNiKryXoszdm+TKmHSVFH9wUj3\n" - "KAXBsQdMmZbd0ZFAEi7QV42Pr2x9+PrSE26bE6K31r02/RcxFQdL9E/3O+85S8eN\n" - "yOZoC/PIrm0mKIPn2NBGSKtCG8V1sTHHJyCwqQERp3pkaB7A9biCKExQN1d3Gsbe\n" - "C0R9bYimdbkYM6o7qi7OiLRKpYFgdVYaYEG3DRBpB3R3+EAKk91809tc9ow5xzkx\n" - "lWryqIzutm6rcClAnqeBIZEZIIvqZH8RcPBQEUajNCWRpBsbwF1xdWvIhP2R3y69\n" - "5dOfcuY=\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIEITCCAomgAwIBAgIIWU+IEie6JrYwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" + "AxMEQ0EtMzAgFw0xNzA2MjUwOTUzMjNaGA85OTk5MTIzMTIzNTk1OVowADCCAaIw\n" + "DQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBANk9eJmqLPfAu7P4Hhmcm4KmEsRf\n" + "uTXk1ylqYvf715riBfJ94VIdtJqKE9q4FRwMxVsv/B+SHFiIlEJfvCociQkrgSfl\n" + "oTNIMNrqkj8IjmVJuJd00MZsUuHlvwa6+F/PLLyUOMU03LdpuR9TbvS2fMVjmaRj\n" + "BiCO439GA+qHRvwxxP7FR433Hg+5JdeYwLWve/vLgm4zETxnMYOFbZpArkizpBi/\n" + "RYQtLmFW8HwZ0/ldDBMnDgcfmL9gRLtMQ1XZEHLNFjyEVD1JsrlgccaizNUkiUi7\n" + "Gbm/w3YiDVxbq3u3cee5lsNhEMIREyISKAHPy8RlnIWwwuDlnsmI0pIb9/4RH0LM\n" + "MlceDEFy1X0QRzYqZFPU/0l4j/FlQ6X2UqWNz63ybRSbcCzHl25abi1xmbsV5ydo\n" + "mJNcP+0QbripMpa0O6gjv5f0yMd7mW9/aAglPcKgpbbhGfo7V9z2gIKdUCLRXoUs\n" + "zhdobnRf00LrrpFUQWReKHxMcDWAL2b00kysPQIDAQABo4GNMIGKMAwGA1UdEwEB\n" + "/wQCMAAwFAYDVR0RBA0wC4IJbG9jYWxob3N0MBMGA1UdJQQMMAoGCCsGAQUFBwMB\n" + "MA8GA1UdDwEB/wQFAwMHIAAwHQYDVR0OBBYEFDOd4SfTi9X86wX8tceBaU9eO9nW\n" + "MB8GA1UdIwQYMBaAFPmohhljtqQUE2B2DwGaNTbv8bSvMA0GCSqGSIb3DQEBCwUA\n" + "A4IBgQAaq4+vai/FwYQ2fAjOsHsVV0nR5Zq55tT8Fexrj2/e9gr+bMV4HVxETByy\n" + "fLtMHGYv+8BENDaI2EOHTyKp5O2DNbITJSN7/ZIO4Rsk+N5m2FyF7DV/sAoxhN7R\n" + "mDy/jDtZyeIqKLptOQZbkRv3lf+vtJL3eakpgh5T/j14kT0QjLyJEZB1D9jurUsV\n" + "+fxYxQUpv4YInDeEk5aKfvZNdkEpbv56GYNc15mNiKryXoszdm+TKmHSVFH9wUj3\n" + "KAXBsQdMmZbd0ZFAEi7QV42Pr2x9+PrSE26bE6K31r02/RcxFQdL9E/3O+85S8eN\n" + "yOZoC/PIrm0mKIPn2NBGSKtCG8V1sTHHJyCwqQERp3pkaB7A9biCKExQN1d3Gsbe\n" + "C0R9bYimdbkYM6o7qi7OiLRKpYFgdVYaYEG3DRBpB3R3+EAKk91809tc9ow5xzkx\n" + "lWryqIzutm6rcClAnqeBIZEZIIvqZH8RcPBQEUajNCWRpBsbwF1xdWvIhP2R3y69\n" + "5dOfcuY=\n" + "-----END CERTIFICATE-----\n"; /* Marked as sign-only */ static char server_localhost_ca3_rsa_sign_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIEITCCAomgAwIBAgIIWU+LoyEYfBYwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" - "AxMEQ0EtMzAgFw0xNzA2MjUxMDA4MzZaGA85OTk5MTIzMTIzNTk1OVowADCCAaIw\n" - "DQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBANk9eJmqLPfAu7P4Hhmcm4KmEsRf\n" - "uTXk1ylqYvf715riBfJ94VIdtJqKE9q4FRwMxVsv/B+SHFiIlEJfvCociQkrgSfl\n" - "oTNIMNrqkj8IjmVJuJd00MZsUuHlvwa6+F/PLLyUOMU03LdpuR9TbvS2fMVjmaRj\n" - "BiCO439GA+qHRvwxxP7FR433Hg+5JdeYwLWve/vLgm4zETxnMYOFbZpArkizpBi/\n" - "RYQtLmFW8HwZ0/ldDBMnDgcfmL9gRLtMQ1XZEHLNFjyEVD1JsrlgccaizNUkiUi7\n" - "Gbm/w3YiDVxbq3u3cee5lsNhEMIREyISKAHPy8RlnIWwwuDlnsmI0pIb9/4RH0LM\n" - "MlceDEFy1X0QRzYqZFPU/0l4j/FlQ6X2UqWNz63ybRSbcCzHl25abi1xmbsV5ydo\n" - "mJNcP+0QbripMpa0O6gjv5f0yMd7mW9/aAglPcKgpbbhGfo7V9z2gIKdUCLRXoUs\n" - "zhdobnRf00LrrpFUQWReKHxMcDWAL2b00kysPQIDAQABo4GNMIGKMAwGA1UdEwEB\n" - "/wQCMAAwFAYDVR0RBA0wC4IJbG9jYWxob3N0MBMGA1UdJQQMMAoGCCsGAQUFBwMB\n" - "MA8GA1UdDwEB/wQFAwMHgAAwHQYDVR0OBBYEFDOd4SfTi9X86wX8tceBaU9eO9nW\n" - "MB8GA1UdIwQYMBaAFPmohhljtqQUE2B2DwGaNTbv8bSvMA0GCSqGSIb3DQEBCwUA\n" - "A4IBgQC1cJd/z1CQSyDfUd2uuNDTvA3WXWxNhqHMLitT1GJS6nUez+wCaWT9UfVy\n" - "+56z/eMaVasZPQ8dOKYdPRuzL2l65DKUUaKFOyD+NGvOS08qKY+oVGN1Qbmaxbvt\n" - "6rvzpW9UHn75zLDOUOMrGDkW5L36mMP8I0Y5AcNBrO5yFBvH8MAHr3zO2VvTSt6T\n" - "ZHFrDlV/nL5E+swzrmF6MZXO1mupk/gtelYfRtigwSr51RY+Me3uaGNEQe30JLu6\n" - "0gp6/otBns9qJjSgX9qWIj9iTHq4A2CiHZkb4j3+/TNNGB8dkBV+EvV8I4Bqdk33\n" - "mz4hSjJBLqg2NYZ4TaztWFsgTvGOYncLGl5e4dIqB94ICEFIrWN32JzS61Mu5xlt\n" - "qBh/JOUSdMe6csZrDIw//UhUgLj7KdFO5FhSW3DXEl9PZGWVR+LJ+T3HjomHf+Bb\n" - "ATbBQk+9MkHTiDWxD4FbmPuSC/h4Vh+G1VkyrlClTLW6K/+0DmE2LPJvRV5udpux\n" - "Ar7fYYU=\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIEITCCAomgAwIBAgIIWU+LoyEYfBYwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" + "AxMEQ0EtMzAgFw0xNzA2MjUxMDA4MzZaGA85OTk5MTIzMTIzNTk1OVowADCCAaIw\n" + "DQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBANk9eJmqLPfAu7P4Hhmcm4KmEsRf\n" + "uTXk1ylqYvf715riBfJ94VIdtJqKE9q4FRwMxVsv/B+SHFiIlEJfvCociQkrgSfl\n" + "oTNIMNrqkj8IjmVJuJd00MZsUuHlvwa6+F/PLLyUOMU03LdpuR9TbvS2fMVjmaRj\n" + "BiCO439GA+qHRvwxxP7FR433Hg+5JdeYwLWve/vLgm4zETxnMYOFbZpArkizpBi/\n" + "RYQtLmFW8HwZ0/ldDBMnDgcfmL9gRLtMQ1XZEHLNFjyEVD1JsrlgccaizNUkiUi7\n" + "Gbm/w3YiDVxbq3u3cee5lsNhEMIREyISKAHPy8RlnIWwwuDlnsmI0pIb9/4RH0LM\n" + "MlceDEFy1X0QRzYqZFPU/0l4j/FlQ6X2UqWNz63ybRSbcCzHl25abi1xmbsV5ydo\n" + "mJNcP+0QbripMpa0O6gjv5f0yMd7mW9/aAglPcKgpbbhGfo7V9z2gIKdUCLRXoUs\n" + "zhdobnRf00LrrpFUQWReKHxMcDWAL2b00kysPQIDAQABo4GNMIGKMAwGA1UdEwEB\n" + "/wQCMAAwFAYDVR0RBA0wC4IJbG9jYWxob3N0MBMGA1UdJQQMMAoGCCsGAQUFBwMB\n" + "MA8GA1UdDwEB/wQFAwMHgAAwHQYDVR0OBBYEFDOd4SfTi9X86wX8tceBaU9eO9nW\n" + "MB8GA1UdIwQYMBaAFPmohhljtqQUE2B2DwGaNTbv8bSvMA0GCSqGSIb3DQEBCwUA\n" + "A4IBgQC1cJd/z1CQSyDfUd2uuNDTvA3WXWxNhqHMLitT1GJS6nUez+wCaWT9UfVy\n" + "+56z/eMaVasZPQ8dOKYdPRuzL2l65DKUUaKFOyD+NGvOS08qKY+oVGN1Qbmaxbvt\n" + "6rvzpW9UHn75zLDOUOMrGDkW5L36mMP8I0Y5AcNBrO5yFBvH8MAHr3zO2VvTSt6T\n" + "ZHFrDlV/nL5E+swzrmF6MZXO1mupk/gtelYfRtigwSr51RY+Me3uaGNEQe30JLu6\n" + "0gp6/otBns9qJjSgX9qWIj9iTHq4A2CiHZkb4j3+/TNNGB8dkBV+EvV8I4Bqdk33\n" + "mz4hSjJBLqg2NYZ4TaztWFsgTvGOYncLGl5e4dIqB94ICEFIrWN32JzS61Mu5xlt\n" + "qBh/JOUSdMe6csZrDIw//UhUgLj7KdFO5FhSW3DXEl9PZGWVR+LJ+T3HjomHf+Bb\n" + "ATbBQk+9MkHTiDWxD4FbmPuSC/h4Vh+G1VkyrlClTLW6K/+0DmE2LPJvRV5udpux\n" + "Ar7fYYU=\n" + "-----END CERTIFICATE-----\n"; static char server_localhost_ca3_cert_chain_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIEKDCCApCgAwIBAgIMV6MdMjbIDKHKsL32MA0GCSqGSIb3DQEBCwUAMBIxEDAO\n" - "BgNVBAMTB3N1YkNBLTMwIBcNMTYwNTEwMDg1MTE4WhgPOTk5OTEyMzEyMzU5NTla\n" - "MAAwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDZPXiZqiz3wLuz+B4Z\n" - "nJuCphLEX7k15NcpamL3+9ea4gXyfeFSHbSaihPauBUcDMVbL/wfkhxYiJRCX7wq\n" - "HIkJK4En5aEzSDDa6pI/CI5lSbiXdNDGbFLh5b8Guvhfzyy8lDjFNNy3abkfU270\n" - "tnzFY5mkYwYgjuN/RgPqh0b8McT+xUeN9x4PuSXXmMC1r3v7y4JuMxE8ZzGDhW2a\n" - "QK5Is6QYv0WELS5hVvB8GdP5XQwTJw4HH5i/YES7TENV2RByzRY8hFQ9SbK5YHHG\n" - "oszVJIlIuxm5v8N2Ig1cW6t7t3HnuZbDYRDCERMiEigBz8vEZZyFsMLg5Z7JiNKS\n" - "G/f+ER9CzDJXHgxBctV9EEc2KmRT1P9JeI/xZUOl9lKljc+t8m0Um3Asx5duWm4t\n" - "cZm7FecnaJiTXD/tEG64qTKWtDuoI7+X9MjHe5lvf2gIJT3CoKW24Rn6O1fc9oCC\n" - "nVAi0V6FLM4XaG50X9NC666RVEFkXih8THA1gC9m9NJMrD0CAwEAAaOBjTCBijAM\n" - "BgNVHRMBAf8EAjAAMBQGA1UdEQQNMAuCCWxvY2FsaG9zdDATBgNVHSUEDDAKBggr\n" - "BgEFBQcDATAPBgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQWBBQzneEn04vV/OsF/LXH\n" - "gWlPXjvZ1jAfBgNVHSMEGDAWgBQtMwQbJ3+UBHzH4zVP6SWklOG3oTANBgkqhkiG\n" - "9w0BAQsFAAOCAYEASbEdRkK44GUb0Y+80JdYGFV1YuHUAq4QYSwCdrT0hwJrFYI2\n" - "s8+9/ncyzeyY00ryg6tPlKyE5B7ss29l8zcj0WJYsUk5kjV6uCWuo9/rqqPHK6Lc\n" - "Qx1cONR4Vt+gD5TX0nRNuKaHVbBJARZ3YOl2F3nApcR/8boq+WNKGhGkzFMaKV+i\n" - "IDpB0ziBUcb+q257lQGKrBuXl5nCd+PZswB//pZCsIkTF5jFdjeXvOvGDjYAr8rG\n" - "KpoMTskNcBqgi59sJc8djWMbNt+15qH4mSvTUW1caukeJAr4mwHfrSK5k9ezSSp1\n" - "EpbQ2Rp3xpbCgklhtsKHSJZ43sghZvCOxk8G3bRZ1/lW6sXvIPmLkvoeetTLvqYq\n" - "t/+gfv4NJuyZhzuJHbxrxBJ3C9QjqTbpiUumeRQHXLa+vZJUKX7ak1KVubKiOC+x\n" - "wyfgmq6quk5jPgOgMJWLwpA2Rm30wqX4OehXov3stSXFb+qASNOHlEtQdgKzIEX/\n" - "6TXY44pCGHMFO6Kr\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIEDTCCAnWgAwIBAgIMV6MdMjWzT9C59ec8MA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTMwIBcNMTYwNTEwMDg0ODMwWhgPOTk5OTEyMzEyMzU5NTlaMBIx\n" - "EDAOBgNVBAMTB3N1YkNBLTMwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIB\n" - "gQCgOcNXzStOnRFoi05aMRLeMB45X4a2srSBul3ULxDSGjIP0EEl//X2WLiope/x\n" - "NL8bPCRpI1sSVXl8Hb1cK3qWNGazVmC7xW07NxL26I86e3/BVRnq8ioVtvPQwEpv\n" - "uI8F97x1vL/n+cfcdkN77NScr5C9jHMVioRvC+qKz9bUBx5DSySV66PR5+wGsJDv\n" - "kfsmjVOgqiTlSWQS5G3nMMq0Rixsc5dP5Wygkbdh9+45UCtObcnHABJrP+GtLiG0\n" - "AOUx6oPzPteZL13erWXg7zYusTarj9rTcdsgR/Im1mIzmD2i7GhJo4Gj0Sk3Rq93\n" - "JyeA+Ay5UPmqcm+dqX00b49MTTv4GtO53kLQSCXYFJ96jcMiXMzBFJD1ROsdk4WU\n" - "ed/tJMHffttDz9j3WcuX9M2nzTT2xlauokjbEAhRDRw5fxCFZh7TbmaH4vysDO9U\n" - "ZXVEXSLKonQ2Lmyso48s/G30VmlSjtPtJqRsv/oPpCO/c0D6BrkHV55B48xfmyIF\n" - "jgECAwEAAaNkMGIwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0G\n" - "A1UdDgQWBBQtMwQbJ3+UBHzH4zVP6SWklOG3oTAfBgNVHSMEGDAWgBT5qIYZY7ak\n" - "FBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAMii5Gx3/d/58oDRy5a0o\n" - "PvQhkU0dKa61NfjjOz9uqxNSilLJE7jGJPaG2tKtC/XU1Ybql2tqQY68kogjKs31\n" - "QC6RFkoZAFouTJt11kzbgVWKewCk3/OrA0/ZkRrAfE0Pma/NITRwTHmTsQOdv/bz\n" - "R+xIPhjKxKrKyJFMG5xb+Q0OKSbd8kDpgYWKob5x2jsNYgEDp8nYSRT45SGw7c7F\n" - "cumkXz2nA6r5NwbnhELvNFK8fzsY+QJKHaAlJ9CclliP1PiiAcl2LQo2gaygWNiD\n" - "+ggnqzy7nqam9rieOOMHls1kKFAFrWy2g/cBhTfS+/7Shpex7NK2GAiujgUV0TZH\n" - "EyEZt6um4gLS9vwUKs/R4XS9VL/bBlfAy2hAVTeUejiRBGeTJkqBu7+c4FdrCByV\n" - "haeQASMYu/lga8eaGL1zJbJe2BQWI754KDYDT9qKNqGlgysr4AVje7z1Y1MQ72Sn\n" - "frzYSQw6BB85CurB6iou3Q+eM4o4g/+xGEuDo0Ne/8ir\n" - "-----END CERTIFICATE-----\n"; - -# define server_ca3_cert server_ca3_localhost_cert -# define server_ca3_cert_chain server_ca3_localhost_cert_chain -const gnutls_datum_t server_ca3_localhost_cert = - { (unsigned char *)server_localhost_ca3_cert_pem, + "-----BEGIN CERTIFICATE-----\n" + "MIIEKDCCApCgAwIBAgIMV6MdMjbIDKHKsL32MA0GCSqGSIb3DQEBCwUAMBIxEDAO\n" + "BgNVBAMTB3N1YkNBLTMwIBcNMTYwNTEwMDg1MTE4WhgPOTk5OTEyMzEyMzU5NTla\n" + "MAAwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDZPXiZqiz3wLuz+B4Z\n" + "nJuCphLEX7k15NcpamL3+9ea4gXyfeFSHbSaihPauBUcDMVbL/wfkhxYiJRCX7wq\n" + "HIkJK4En5aEzSDDa6pI/CI5lSbiXdNDGbFLh5b8Guvhfzyy8lDjFNNy3abkfU270\n" + "tnzFY5mkYwYgjuN/RgPqh0b8McT+xUeN9x4PuSXXmMC1r3v7y4JuMxE8ZzGDhW2a\n" + "QK5Is6QYv0WELS5hVvB8GdP5XQwTJw4HH5i/YES7TENV2RByzRY8hFQ9SbK5YHHG\n" + "oszVJIlIuxm5v8N2Ig1cW6t7t3HnuZbDYRDCERMiEigBz8vEZZyFsMLg5Z7JiNKS\n" + "G/f+ER9CzDJXHgxBctV9EEc2KmRT1P9JeI/xZUOl9lKljc+t8m0Um3Asx5duWm4t\n" + "cZm7FecnaJiTXD/tEG64qTKWtDuoI7+X9MjHe5lvf2gIJT3CoKW24Rn6O1fc9oCC\n" + "nVAi0V6FLM4XaG50X9NC666RVEFkXih8THA1gC9m9NJMrD0CAwEAAaOBjTCBijAM\n" + "BgNVHRMBAf8EAjAAMBQGA1UdEQQNMAuCCWxvY2FsaG9zdDATBgNVHSUEDDAKBggr\n" + "BgEFBQcDATAPBgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQWBBQzneEn04vV/OsF/LXH\n" + "gWlPXjvZ1jAfBgNVHSMEGDAWgBQtMwQbJ3+UBHzH4zVP6SWklOG3oTANBgkqhkiG\n" + "9w0BAQsFAAOCAYEASbEdRkK44GUb0Y+80JdYGFV1YuHUAq4QYSwCdrT0hwJrFYI2\n" + "s8+9/ncyzeyY00ryg6tPlKyE5B7ss29l8zcj0WJYsUk5kjV6uCWuo9/rqqPHK6Lc\n" + "Qx1cONR4Vt+gD5TX0nRNuKaHVbBJARZ3YOl2F3nApcR/8boq+WNKGhGkzFMaKV+i\n" + "IDpB0ziBUcb+q257lQGKrBuXl5nCd+PZswB//pZCsIkTF5jFdjeXvOvGDjYAr8rG\n" + "KpoMTskNcBqgi59sJc8djWMbNt+15qH4mSvTUW1caukeJAr4mwHfrSK5k9ezSSp1\n" + "EpbQ2Rp3xpbCgklhtsKHSJZ43sghZvCOxk8G3bRZ1/lW6sXvIPmLkvoeetTLvqYq\n" + "t/+gfv4NJuyZhzuJHbxrxBJ3C9QjqTbpiUumeRQHXLa+vZJUKX7ak1KVubKiOC+x\n" + "wyfgmq6quk5jPgOgMJWLwpA2Rm30wqX4OehXov3stSXFb+qASNOHlEtQdgKzIEX/\n" + "6TXY44pCGHMFO6Kr\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIEDTCCAnWgAwIBAgIMV6MdMjWzT9C59ec8MA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTMwIBcNMTYwNTEwMDg0ODMwWhgPOTk5OTEyMzEyMzU5NTlaMBIx\n" + "EDAOBgNVBAMTB3N1YkNBLTMwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIB\n" + "gQCgOcNXzStOnRFoi05aMRLeMB45X4a2srSBul3ULxDSGjIP0EEl//X2WLiope/x\n" + "NL8bPCRpI1sSVXl8Hb1cK3qWNGazVmC7xW07NxL26I86e3/BVRnq8ioVtvPQwEpv\n" + "uI8F97x1vL/n+cfcdkN77NScr5C9jHMVioRvC+qKz9bUBx5DSySV66PR5+wGsJDv\n" + "kfsmjVOgqiTlSWQS5G3nMMq0Rixsc5dP5Wygkbdh9+45UCtObcnHABJrP+GtLiG0\n" + "AOUx6oPzPteZL13erWXg7zYusTarj9rTcdsgR/Im1mIzmD2i7GhJo4Gj0Sk3Rq93\n" + "JyeA+Ay5UPmqcm+dqX00b49MTTv4GtO53kLQSCXYFJ96jcMiXMzBFJD1ROsdk4WU\n" + "ed/tJMHffttDz9j3WcuX9M2nzTT2xlauokjbEAhRDRw5fxCFZh7TbmaH4vysDO9U\n" + "ZXVEXSLKonQ2Lmyso48s/G30VmlSjtPtJqRsv/oPpCO/c0D6BrkHV55B48xfmyIF\n" + "jgECAwEAAaNkMGIwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0G\n" + "A1UdDgQWBBQtMwQbJ3+UBHzH4zVP6SWklOG3oTAfBgNVHSMEGDAWgBT5qIYZY7ak\n" + "FBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAMii5Gx3/d/58oDRy5a0o\n" + "PvQhkU0dKa61NfjjOz9uqxNSilLJE7jGJPaG2tKtC/XU1Ybql2tqQY68kogjKs31\n" + "QC6RFkoZAFouTJt11kzbgVWKewCk3/OrA0/ZkRrAfE0Pma/NITRwTHmTsQOdv/bz\n" + "R+xIPhjKxKrKyJFMG5xb+Q0OKSbd8kDpgYWKob5x2jsNYgEDp8nYSRT45SGw7c7F\n" + "cumkXz2nA6r5NwbnhELvNFK8fzsY+QJKHaAlJ9CclliP1PiiAcl2LQo2gaygWNiD\n" + "+ggnqzy7nqam9rieOOMHls1kKFAFrWy2g/cBhTfS+/7Shpex7NK2GAiujgUV0TZH\n" + "EyEZt6um4gLS9vwUKs/R4XS9VL/bBlfAy2hAVTeUejiRBGeTJkqBu7+c4FdrCByV\n" + "haeQASMYu/lga8eaGL1zJbJe2BQWI754KDYDT9qKNqGlgysr4AVje7z1Y1MQ72Sn\n" + "frzYSQw6BB85CurB6iou3Q+eM4o4g/+xGEuDo0Ne/8ir\n" + "-----END CERTIFICATE-----\n"; + +#define server_ca3_cert server_ca3_localhost_cert +#define server_ca3_cert_chain server_ca3_localhost_cert_chain +const gnutls_datum_t server_ca3_localhost_cert = { + (unsigned char *)server_localhost_ca3_cert_pem, sizeof(server_localhost_ca3_cert_pem) - 1 }; -const gnutls_datum_t server_ca3_localhost_rsa_decrypt_cert = - { (unsigned char *)server_localhost_ca3_rsa_decrypt_cert_pem, +const gnutls_datum_t server_ca3_localhost_rsa_decrypt_cert = { + (unsigned char *)server_localhost_ca3_rsa_decrypt_cert_pem, sizeof(server_localhost_ca3_rsa_decrypt_cert_pem) - 1 }; -const gnutls_datum_t server_ca3_localhost_rsa_sign_cert = - { (unsigned char *)server_localhost_ca3_rsa_sign_cert_pem, +const gnutls_datum_t server_ca3_localhost_rsa_sign_cert = { + (unsigned char *)server_localhost_ca3_rsa_sign_cert_pem, sizeof(server_localhost_ca3_rsa_sign_cert_pem) - 1 }; -const gnutls_datum_t server_ca3_tlsfeat_cert = - { (unsigned char *)server_ca3_tlsfeat_cert_pem, +const gnutls_datum_t server_ca3_tlsfeat_cert = { + (unsigned char *)server_ca3_tlsfeat_cert_pem, sizeof(server_ca3_tlsfeat_cert_pem) - 1 }; @@ -1637,192 +1651,193 @@ const gnutls_datum_t server_ca3_localhost_cert_chain = { /* shares server_ca3 key */ static char server_localhost_insecure_ca3_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIDFzCCAX+gAwIBAgIIV90eOyTzpOcwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" - "AxMEQ0EtMzAgFw0xNjA5MTcxMDQzMDhaGA85OTk5MTIzMTIzNTk1OVowHjEcMBoG\n" - "A1UEAxMTSW5zZWN1cmUgKDc2OCBiaXRzKTB8MA0GCSqGSIb3DQEBAQUAA2sAMGgC\n" - "YQCuxKP0RG8KHAp7HnqaFpcWnPVl72vmkLvBgC0h3gnVUO3a41//kkLOG0HGUOi6\n" - "77cLNOzRRll9NPi1RwMNTKayA0cv+pJBsoNq/byOeWKJkKOgwTZD6Vi6X3MDtj7e\n" - "3SECAwEAAaOBjTCBijAMBgNVHRMBAf8EAjAAMBQGA1UdEQQNMAuCCWxvY2FsaG9z\n" - "dDATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQW\n" - "BBS4eSAgXUnLYP8HfA9SmoXjOAYLoDAfBgNVHSMEGDAWgBT5qIYZY7akFBNgdg8B\n" - "mjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAFa7J4+vJ7V+4y+CaaATD/WATc9ZV\n" - "ZUITpI6irjWneRPz0u0/3BLprKoCbO0m5QjoBaji1wUbVWpJir+N7QS577ufjwh0\n" - "ViGFn1b3eU0wGPgz8n0B0vo6NifaQl1Df5PBN3Mfa+r0aUK3QYxnlHsXxanYaKzj\n" - "9lpXUq57fpJJFSFASSzGSwkg8xiwlFBre/9jJ8sf1Blhu8M50NkOCdRdwpg/rbMI\n" - "Oukh0pvJQYQfQsgxc/hySWfEtN0TThXLRFMRRcFFeRHK2LXyAo/sNzWJMIou7hBQ\n" - "p1LNlCoUc3TGRKMQToEi+GIgjJx17zADze+1hHHE3aEEVGU9n3Gkj+hxy46LN5ke\n" - "hDox4AzBf4+KaA/vdHGRvZjzhajaMdL6w8FJgmUc26L+kH/rsTuev+PrvqXuuy1W\n" - "c2QqW3gu7oUy+g99TQFeXgyJHqv/cu/M0vhUV9wwHQJdj1bFCEaFW40MmQArXz5D\n" - "F92lL9akoGYmyehqQHeRQsrVRKcCOiv8lgVF\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_ca3_localhost_insecure_cert = - { (unsigned char *)server_localhost_insecure_ca3_cert_pem, + "-----BEGIN CERTIFICATE-----\n" + "MIIDFzCCAX+gAwIBAgIIV90eOyTzpOcwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" + "AxMEQ0EtMzAgFw0xNjA5MTcxMDQzMDhaGA85OTk5MTIzMTIzNTk1OVowHjEcMBoG\n" + "A1UEAxMTSW5zZWN1cmUgKDc2OCBiaXRzKTB8MA0GCSqGSIb3DQEBAQUAA2sAMGgC\n" + "YQCuxKP0RG8KHAp7HnqaFpcWnPVl72vmkLvBgC0h3gnVUO3a41//kkLOG0HGUOi6\n" + "77cLNOzRRll9NPi1RwMNTKayA0cv+pJBsoNq/byOeWKJkKOgwTZD6Vi6X3MDtj7e\n" + "3SECAwEAAaOBjTCBijAMBgNVHRMBAf8EAjAAMBQGA1UdEQQNMAuCCWxvY2FsaG9z\n" + "dDATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQW\n" + "BBS4eSAgXUnLYP8HfA9SmoXjOAYLoDAfBgNVHSMEGDAWgBT5qIYZY7akFBNgdg8B\n" + "mjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAFa7J4+vJ7V+4y+CaaATD/WATc9ZV\n" + "ZUITpI6irjWneRPz0u0/3BLprKoCbO0m5QjoBaji1wUbVWpJir+N7QS577ufjwh0\n" + "ViGFn1b3eU0wGPgz8n0B0vo6NifaQl1Df5PBN3Mfa+r0aUK3QYxnlHsXxanYaKzj\n" + "9lpXUq57fpJJFSFASSzGSwkg8xiwlFBre/9jJ8sf1Blhu8M50NkOCdRdwpg/rbMI\n" + "Oukh0pvJQYQfQsgxc/hySWfEtN0TThXLRFMRRcFFeRHK2LXyAo/sNzWJMIou7hBQ\n" + "p1LNlCoUc3TGRKMQToEi+GIgjJx17zADze+1hHHE3aEEVGU9n3Gkj+hxy46LN5ke\n" + "hDox4AzBf4+KaA/vdHGRvZjzhajaMdL6w8FJgmUc26L+kH/rsTuev+PrvqXuuy1W\n" + "c2QqW3gu7oUy+g99TQFeXgyJHqv/cu/M0vhUV9wwHQJdj1bFCEaFW40MmQArXz5D\n" + "F92lL9akoGYmyehqQHeRQsrVRKcCOiv8lgVF\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_ca3_localhost_insecure_cert = { + (unsigned char *)server_localhost_insecure_ca3_cert_pem, sizeof(server_localhost_insecure_ca3_cert_pem) - 1 }; static char server_ca3_localhost_insecure_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIBywIBAAJhAK7Eo/REbwocCnseepoWlxac9WXva+aQu8GALSHeCdVQ7drjX/+S\n" - "Qs4bQcZQ6Lrvtws07NFGWX00+LVHAw1MprIDRy/6kkGyg2r9vI55YomQo6DBNkPp\n" - "WLpfcwO2Pt7dIQIDAQABAmBd9Md0Dcpoc/TKhfNBnb1yYcWoHJQ0q0DVYXRiDb3Z\n" - "mZ2WHMFCY75YkdzFoj/MKAyrl+n6SJy5V2gwqEEW84pHH2AaAseWsF16rSRz958b\n" - "7seVpNi304tOk4PS7B6+RAUCMQDXiT23wggUir6uVrx0UfHJUcsRltK0qco6Q7o3\n" - "b+uwrIAbaNNg+aAqAXXU5XWdBpcCMQDPlBKn42C/XkAZ11zflbzjrq22ie0gaLKZ\n" - "j92rCaU0/qX4VR8KK6J9PL6ZLoTWqQcCMQCzazhoLmoBh5nBkMxh3BD08FSluLJ/\n" - "19NS+ywZl95P/NjLeFB1qnbsYLjQ1443f9MCMDE/w3FbzC97MCAxbZKKl0c5wXNG\n" - "pCEFViKC9KfI4Q6CwGP75iJmmeW2zM3RMKkxbwIxAIAViD0cQjNL9keUVjtN68pK\n" - "dD2lxHfq5Q1QxCSjl8EnBnjnbFJN9WmK9ztkK00Avg==\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_ca3_localhost_insecure_key = - { (unsigned char *)server_ca3_localhost_insecure_key_pem, + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIIBywIBAAJhAK7Eo/REbwocCnseepoWlxac9WXva+aQu8GALSHeCdVQ7drjX/+S\n" + "Qs4bQcZQ6Lrvtws07NFGWX00+LVHAw1MprIDRy/6kkGyg2r9vI55YomQo6DBNkPp\n" + "WLpfcwO2Pt7dIQIDAQABAmBd9Md0Dcpoc/TKhfNBnb1yYcWoHJQ0q0DVYXRiDb3Z\n" + "mZ2WHMFCY75YkdzFoj/MKAyrl+n6SJy5V2gwqEEW84pHH2AaAseWsF16rSRz958b\n" + "7seVpNi304tOk4PS7B6+RAUCMQDXiT23wggUir6uVrx0UfHJUcsRltK0qco6Q7o3\n" + "b+uwrIAbaNNg+aAqAXXU5XWdBpcCMQDPlBKn42C/XkAZ11zflbzjrq22ie0gaLKZ\n" + "j92rCaU0/qX4VR8KK6J9PL6ZLoTWqQcCMQCzazhoLmoBh5nBkMxh3BD08FSluLJ/\n" + "19NS+ywZl95P/NjLeFB1qnbsYLjQ1443f9MCMDE/w3FbzC97MCAxbZKKl0c5wXNG\n" + "pCEFViKC9KfI4Q6CwGP75iJmmeW2zM3RMKkxbwIxAIAViD0cQjNL9keUVjtN68pK\n" + "dD2lxHfq5Q1QxCSjl8EnBnjnbFJN9WmK9ztkK00Avg==\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_ca3_localhost_insecure_key = { + (unsigned char *)server_ca3_localhost_insecure_key_pem, sizeof(server_ca3_localhost_insecure_key_pem) - 1 }; static char unknown_ca_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIID4DCCAkigAwIBAgIIVyG62RARjncwDQYJKoZIhvcNAQELBQAwFTETMBEGA1UE\n" - "AxMKVW5rbm93biBDQTAgFw0xNjA0MjgwNzI1MTNaGA85OTk5MTIzMTIzNTk1OVow\n" - "FTETMBEGA1UEAxMKVW5rbm93biBDQTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCC\n" - "AYoCggGBALbdxniG+2wP/ONeZfvR7AJakVo5deFKIHVTiiBWwhg+HSjd4nfDa+vy\n" - "Tt/wIdldP1PriD1Rigc8z68+RxPpGfAc197pKlKpO08I0L1RDKnjBWr4fGdCzE6u\n" - "Z/ZsKVifoIZpdC8M2IYpAIMajEtnH53XZ1hTEviXTsneuiCTtap73OeSkL71SrIM\n" - "kgBmAX17gfX3SxFjQUzOs6QMMOa3+8GW7RI+E/SyS1QkOO860dj9XYgOnTL20ibG\n" - "cWF2XmTiQASI+KmHvYJCNJF/8pvmyJRyBHGZO830aBY0+DcS2bLKcyMiWfOJw7Wn\n" - "paO7zSEC5WFgo4jdqroUBQdjQNCSSdrt1yYrAl1Sj2PMxYFX4H545Pr2sMpwC9An\n" - "Pk9+uucT1Inj9615qbuXgFwhkgpK5pnPjzKaHp7ESlJj4/dIPTmhlt5BV+CLh7tS\n" - "LzVLrddGU+os8JinT42radJ5V51Hn0C1CHIaFAuBCd5XRHXtrKb7WcnwCOxlcvux\n" - "9h5/847F4wIDAQABozIwMDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBT5qIYZ\n" - "Y7akFBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAsCXvBLMc1YvZGBbM\n" - "w2YalL7Gyw7t5TIbOhpIhsoWNrE8JNvwfU+xA0/hxA/UkbwwJOjntXFZ9eRIrjHU\n" - "ULhqDZ1fAd7QnUQWuQjImU8XxnPjwgLG/tau9N3jdzJZy482vpytX94KdIQ+hPtC\n" - "xA3fikG5F4cJCfu2RfaTskqikTO5XPzPdSNJiPk01jjh9ICc7cvS9smGxfTuZZOb\n" - "+T1N8SV8uYkvPsiQ4uvO+ksxEdZ/z1jCjLyhnLXPgKdrjIgOb5wPxZUgwrg1n5fM\n" - "Un72D43cnv5ykB2O9lXvPOLXlBz07ZwaiRsXDhh1/kmubOLERaw88bVUydYhE7SU\n" - "eI34cw1eTtlKgFD+r+pPwRAzAkO/aCXVY6CsSLL4GyeXXvpxgngBiT8ArnntLHWd\n" - "U1rpodAAdMBHDZf7Q8CXawI0EAIq0HpHCj3x2brKSf8eFMtl9FuaJ3KvM3ioXKYc\n" - "nva6xGbu1R8UP4+fXCOFdiVixHEQR5k+mqd65vGGxovALAfY\n" - "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIID4DCCAkigAwIBAgIIVyG62RARjncwDQYJKoZIhvcNAQELBQAwFTETMBEGA1UE\n" + "AxMKVW5rbm93biBDQTAgFw0xNjA0MjgwNzI1MTNaGA85OTk5MTIzMTIzNTk1OVow\n" + "FTETMBEGA1UEAxMKVW5rbm93biBDQTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCC\n" + "AYoCggGBALbdxniG+2wP/ONeZfvR7AJakVo5deFKIHVTiiBWwhg+HSjd4nfDa+vy\n" + "Tt/wIdldP1PriD1Rigc8z68+RxPpGfAc197pKlKpO08I0L1RDKnjBWr4fGdCzE6u\n" + "Z/ZsKVifoIZpdC8M2IYpAIMajEtnH53XZ1hTEviXTsneuiCTtap73OeSkL71SrIM\n" + "kgBmAX17gfX3SxFjQUzOs6QMMOa3+8GW7RI+E/SyS1QkOO860dj9XYgOnTL20ibG\n" + "cWF2XmTiQASI+KmHvYJCNJF/8pvmyJRyBHGZO830aBY0+DcS2bLKcyMiWfOJw7Wn\n" + "paO7zSEC5WFgo4jdqroUBQdjQNCSSdrt1yYrAl1Sj2PMxYFX4H545Pr2sMpwC9An\n" + "Pk9+uucT1Inj9615qbuXgFwhkgpK5pnPjzKaHp7ESlJj4/dIPTmhlt5BV+CLh7tS\n" + "LzVLrddGU+os8JinT42radJ5V51Hn0C1CHIaFAuBCd5XRHXtrKb7WcnwCOxlcvux\n" + "9h5/847F4wIDAQABozIwMDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBT5qIYZ\n" + "Y7akFBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAsCXvBLMc1YvZGBbM\n" + "w2YalL7Gyw7t5TIbOhpIhsoWNrE8JNvwfU+xA0/hxA/UkbwwJOjntXFZ9eRIrjHU\n" + "ULhqDZ1fAd7QnUQWuQjImU8XxnPjwgLG/tau9N3jdzJZy482vpytX94KdIQ+hPtC\n" + "xA3fikG5F4cJCfu2RfaTskqikTO5XPzPdSNJiPk01jjh9ICc7cvS9smGxfTuZZOb\n" + "+T1N8SV8uYkvPsiQ4uvO+ksxEdZ/z1jCjLyhnLXPgKdrjIgOb5wPxZUgwrg1n5fM\n" + "Un72D43cnv5ykB2O9lXvPOLXlBz07ZwaiRsXDhh1/kmubOLERaw88bVUydYhE7SU\n" + "eI34cw1eTtlKgFD+r+pPwRAzAkO/aCXVY6CsSLL4GyeXXvpxgngBiT8ArnntLHWd\n" + "U1rpodAAdMBHDZf7Q8CXawI0EAIq0HpHCj3x2brKSf8eFMtl9FuaJ3KvM3ioXKYc\n" + "nva6xGbu1R8UP4+fXCOFdiVixHEQR5k+mqd65vGGxovALAfY\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t unknown_ca_cert = { (unsigned char *)unknown_ca_cert_pem, - sizeof(unknown_ca_cert_pem) - 1 -}; + sizeof(unknown_ca_cert_pem) - 1 }; static const char server_ca3_pkcs12_pem[] = - "-----BEGIN PKCS12-----\n" - "MIIRSgIBAzCCERAGCSqGSIb3DQEHAaCCEQEEghD9MIIQ+TCCCT8GCSqGSIb3DQEH\n" - "BqCCCTAwggksAgEAMIIJJQYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQYwDgQI0Bv/\n" - "MLNNeX0CAggAgIII+PugAg+ZArNedgnhMh2kM1tVj1os+8i0BPh9kQMT4h7qes6e\n" - "Z6c+W4xCnL89p7Bz35riiK2KlJ6YzcTYXzONnmVR8gIEHsvYWwRSB++IE/jx9pCq\n" - "TxN5GIH1tt467EKdc+Y+f4WBXmtk5hF4gTmHG2t3o4HoniNXzcRd+ZSsFj4HGE/c\n" - "iXQY8lXN2PD1/XJsuwpYssKhJ+gI9iLREoyFdd+vG6KhzDvdgdvjWBQY/X5Q5pgF\n" - "kepe9jjokbLqLj+S8eHBQ8KF9B2FKB+RTyYep9zqn5qbN7TOt3+yMH+u+/Jj/GzH\n" - "ZjJNpee45G9CtPgjVS1t2fKjz9SaaKfOjHsH9WD5Sci9aqLRqFs84FlilRl6PyiG\n" - "5g89MiXL5Iu6WFoTM41eIezcyQf0ndakj2clVEfX2pX+e1bXWFzvnc5a933N2loK\n" - "OqJElti6h+T30M2CKEUX6FT5ihaowo5DwCXU3jTFcPMY0htvc4QuZQjBfyb/hGqf\n" - "UqjLGh+VZCmNPSmSkoqZScl8N2Db/DPvIu+cga2jSkFtvMEZVd9O5lN53drU8ONE\n" - "GMgdmJO43j/cnlICy+XpUyPrv055TXUo1gouyg5T1G/imtt0L265VTCxIqRVEsjR\n" - "EQdacLCOPvMohukJAbUTADh/vd3vf/qMINse/y/fPMoLpmtmmZsnZnr1zmIcIXLg\n" - "fLLBVhOz3Vl9RRl1qGbZQBleUUVAabYXbsK1UQHpZ7h2dSWF6ibm13DWRGkJRAVl\n" - "R1dvpwAzR1bhb7rOgTMhmxqADCWh8lcqFt/4ReZofdHmWoxZEopW4m3CghZQM+Ee\n" - "Kz4dYtLGk7W1rg8jnycAtxDwVGh9jMVsvCGypxkgEx+aQ7R+y9t0nu7l61GEnZBt\n" - "uP2EVrChWdFVyH9+YnRRCNaX7lbDtCdOnIrgGeEtNYwzbxUq/kSzllljrkYWQItK\n" - "W+vvMf9NVjTxyJr4kIXenm9ojPO3i485RWECIupdasel2YnPZYjcAKJc4p6nFGVB\n" - "YDs/U32f1BVEXp7pPZOuuzU+ocTswSluwQ0NskuYnDT9w8+LauaqpILRQpCtIIZC\n" - "TEqa7aS7S+f85Jeyt3yGsTNwUuQJZaG5D3Eh7iOB+rJaq3wEwoPlVLURVd8f6Z4H\n" - "t1i0fM2iQA9+FXVkj2B5zr19no0Q8hr/Bb20u9YTT48CfXA7I2IwXSprb8kql0M8\n" - "JmBv6FIDWzXLbGyRR39fX9kKlYMy0eq0ZxXKLLKEnZ1GUwtIeHTYKXG7ezliNaUl\n" - "7UEp3V+bYOddL6uRafEsemdskHtl10RIi3Q3ZX2OksPueMQ5YSOVh4CSPpHsHYGA\n" - "9KWt/PSja+zRGHsGEPX1jic2vHUTxOxI2sOZssnYCYWj/4MDk0xs7M0zdSXEEl5L\n" - "97i5Qx+zv5MPM3yLexG+FllSD6nbPswzG8rHelfRSaK/+AHd0gigrUHqGFOp8B/P\n" - "ml8obqs/LroKVzA109u3LfFlm+JFYeJgqsuoSuLYmJwFe6LNFkmhgGPwhyntqKEx\n" - "zSxgZl91XrgYYuJwn7+CgQx6Dkv7I+SCfJGLBNeAp0Rr+hpYqk0OU9yHBrTLe8T+\n" - "AQhHs4/ScZzRXu5F3dbjZ0PFwOYLo4t/NwUqkL8rCDtn45c1z5oyWhwk7nZMDCT3\n" - "gIpVLf5XDD9f6eXV216oNIL1vxOw0B5GXXsT1KIKTCbBrNl920+GBu3xB44AN7Ik\n" - "A+FhVKT1ZiaoEUKkUIy6I410GprvqDjRGp+Qs2Xitfk/E/3aoZ97cDBLEQOnF/lZ\n" - "mqsczn9XnI+Jp+E8rhTxOMACR2Oa3XuL0+um7Qk+rkS2jcmJy9WniedO2E1EUHoj\n" - "FRwWNjTQQR04Spv3qAc6IP1i8otUzKFkSx6SxH0a5zcm0ERNa6ZyU/jYvRrIGgZC\n" - "kUxtTZbNNIggP3xqU+meRdRUeiOpqL8W3WCJ2FcjpR1FhXZ1sU1/u8pAgMMOhTBZ\n" - "ICHmSjOGZ24kGgWNcLxYQG+qtIH7r6ihd9x/dv0s/Q9DAISv6G8z2YXcBb5EMZW4\n" - "/59z0XL8HFx0/esjB9mHUD/4/Kzp169sJQOvDdmijNaZcDanUa8niBhruuS2KnUB\n" - "iW2SrV6DBx32bjVIPbDJoDmcQWRDsuwpMqRAVtAWrmY5JeNp3zgII0Nr4rUAojWE\n" - "x937fOdIMJu8K1Nst+78DVA4h6jdnUHv5bvOcsVKejjRvSot5vQ/XQPppHlQ73v6\n" - "+Jro0bstYkMpfsbBXHt8tsB6nmZ9i5bv2x7P1nISKgMA4NzzdHFSpwFCmxrBaJen\n" - "XmkoTdQId1O6YlYHJS7fMntNbi60E01bReAVjtY5Q77kqVab/LQI6yJHz01/1KjH\n" - "2MiLixUV6a58FhKOI8Ea/yWSJti549Dqs+AMnwUu56GGT7lBLdT3x4r+SwThUWN2\n" - "aCQoy6rJ5wrsa2OGoO6I5CWHzIov1zlP+oWdKueuGRGTwJdnWm9ZQxTbDJ3QHeBn\n" - "OQXcWNcnQm2lcNfm297EGsClrrKTqmHBR8awpnnMdqzp0+vKiTzrfzGMVWQKoMM/\n" - "74bzAts3+a+sBa5Y34YY+VLPqpXcVR9gY5+xxgYTzI7Ppggn5pNI+lng8B0hjFUU\n" - "o2GNw8uKDVbjWf+ewULWKcCgAaBXXCAOo291TrURABmyR6XnybZwsg9a4yh/kcyk\n" - "aXYLsrmEhfW17ChcGE5LLMzHEeSCUgy+z3yiiP6tD0g/6RFt9Nt57bVndJFqMVcS\n" - "78VdEtQEI11Ty2oeN/+e8XhkZeicvgqgdrDb5jmfGN/F1la0FBnXnJG1fG8qnMMv\n" - "C8V/eRxYanKWr/UwpsC6r/pn+1iTOO3hByg9rWgGSALbgnUFvIfQiSccVoD/lkbh\n" - "TZlsuxhdKXnimi22RO50+0L99TnECu0psQXBDvCzzHSwi3MjPcvrQSPb/ZPSPqd2\n" - "ock7nRDXFn+E04XAOFEuF1Bb5SfEbWHLx0d7uCSieAF9YMBZWvETTOOnDgH3Pe93\n" - "+46a0tp4IdWrZEdUcU+/UpwuKyMGCCAfwKMFCA6i/In/cJAcrpRQJGWVsBERMaVQ\n" - "6Ke/ZwIwggeyBgkqhkiG9w0BBwGgggejBIIHnzCCB5swggeXBgsqhkiG9w0BDAoB\n" - "AqCCBy4wggcqMBwGCiqGSIb3DQEMAQMwDgQIT0kvLiNCahwCAggABIIHCM453Rnc\n" - "ggHPk7un7VHebwwtckSBn7qntGhILQfJ+0xoPHPMHMUoDQ7DRbkcyuqtP0+VoZKa\n" - "yLb2WDpyir/f8cyhZdDSnlb/WK16UaBguYmw8ppN09Lsok9KKNJxdWaHz65kABAh\n" - "pHAX6BpdVFv8dOiWuE/+v0TGsaPpvRvwAy1qNNlErcIgGFs2GCgdVadblKw0lR3p\n" - "t/6lhTRF4xqaPtUx4am2cQlmJyUCxy/XSetSFYaKIUdP5pEbesmYs5SuosCwokkB\n" - "q3fzstm94dIzjoPz/XJp2Ek5lpmoHUO0SOGfSDdmMuCPoICQN+xcR0oD6Kso5MrS\n" - "PepHrrG6KqX9fIR2Y2stEJsuaRYA/1h5CEnHnOWEbr2DBbuXB3HY6a5CrwV3xSCK\n" - "Ek0LcWe6c/+ceBcpIUjte8oaM6jPO0WeknNtDQLz+YNnvIqiT/3u3P8pA6DomJrw\n" - "0NoTm/SNMaKPz5IIBBNIzjMXWopgJ9+/bktwbENA/lO5gQvxLGRuaAZpvQpEbmhB\n" - "9W5ofFelsN/BF0zminlL8w8rFc8AKMKEBg85z/EqDkl02cUQa5XDKe3i0Td04xeZ\n" - "KOzsVqBm42rvCh2OgbNcbXBPqUTklRRKzzCgL/Ej645oTkzRfZxUmLaly5bkjyDm\n" - "vXdLdp2doVQlXboCZDK5hmxkirviYPsrjNzAPd5Uz+4rVB5qrxYTsY+0Rtdpb+J0\n" - "RqM2XFqJnA8ElIljsx7wugEEXt1wwey1JhS/+qybnDCP4f6OCaM5t8TTql2o6Eoh\n" - "DntWfAiq8A8mP43HP3FrGyI/3cpgOEF67Q/nLJFnaf6vwfm15xdq20iOIDZtoGJ7\n" - "VahRpOXNed2Xnv/HFwfPvGZM3lInEOEkC6vKWWDoOrE6kAu739X9lm+lLR0l1ihE\n" - "X8gtilgYU5xzM0ZmRjepLn19jdb18nGEUg2pMNkhEakiDyxLmYBBU43IDRzdYgTe\n" - "GJzakTDw/gNO6buVy+emr+IIW0f8hRSbXFHuw5/lpLZoXNCXuHRyEcGa4RhubrVe\n" - "ycuauZYFSp0JhJe+0OtKkBUHSTkoj1aaOByylq8b38ovbFTZ/JiCsYGsmwOfDiSu\n" - "21Fe1mv8+GtFf+t+H+IQBDv2/SHHWwVExW8hwYwXXZ8wodfpLrF7FWQvEa62/DvN\n" - "nQ4sy+z3IJtoPoGBfKMgLSJaNyuavRpbhy1fYuhUwhnbrH1M3YVgi+CnW8lIn44e\n" - "KoSPf11qTlgXBNVezXPYh6cw0FOObkiiuqSL7/ax34Lbz8vWs1yDs6ni9M7l8VUa\n" - "j0MhBEQDTinzz2L7U/uRGkcHYVNsCAIOaStbKxNx2bnEmFL2TShs6eH1kPAyDJ9N\n" - "SFuqmrboF92KNM1wKjIcthbJxPVJVlI1M0B8HVuU00QTIaJyJoQZuNQ6lyzTudwS\n" - "5F69zmQCaRIN2b04m/237Z4/SXuUwFDdDojoFxJ6m1yA86uUigyOzKGavtZz4tgw\n" - "BTCYcxaoCB2ebqNl3L4oE+gaAweAjtivNbAJswCkQF+LPEbAt8m2BZDo1bI4wAg+\n" - "Mjzs83PkzE3bn6q6Rk8HslnOCS55M6gTPu2zvz/FSaLY29X/5D7QtKJPAw30xUA1\n" - "Wjm3K0tkY/wqWntmJW9zVAaLzvW4iA61D9EuRoY/NChyF6HsLL8BjUEktNBItQ/h\n" - "2kUQnrJeoaaW4nIZz/apiryaFekWWpjudO8zxhxHquK8KpwdXK4c6LCMycTio42J\n" - "rw0/Tbe4noTfxPTJoaG9CaJXTq0rIMWxQprUONdjVih3cADI9V6/aO7/fSU+awFG\n" - "0inoNW6HmAT9ztYsUgRJ+JfiZCc7+h8WY/rrDb15Jj0Jjl4pe2B3S57c5zJ7TgHd\n" - "Zm8ED5uagqAcUIsBIlkNABAuia78tLewFFfCV5mYQUp3fHT6MU9EmPFI3YOuwvhk\n" - "NhscLr0qGIdxK9fS190Al3W5VZiCZ3g6bTwRLkjVChNC6e8u2gxGy6Rx0uxW3c73\n" - "/Spk4oYJ4PAT8GAgO4DJyRg52dFMBSBz4ZLAVR1eVVvPRbV7CSSaGLBLvAp/GFbz\n" - "pZ7sfEeGuiSb0GzcdU7anf+xvmSK/rxHfQPjqZ5EcGG3xhONG/SYwUlrp4GlP6Qs\n" - "ZlRSxsfy9YdIzmf3JhDvVtqK5Uj/wGXlX29NDh+X7mhvCOxCPM19AynXtGWgGFkb\n" - "zd8oaGXbIt/FldsQidEx9UINjtmozl/pB03lFL8wbEF/wBuLx+E1Ite2NCspOJTk\n" - "unw8CZJdUXmdVGo23iOrAziQFrlyPKawoX5iOYot47PQ6vcKiV2fnE5XHUqU2l6K\n" - "DHZbSGfz8vjC9LsAJzhhyZvjxi0LIDwxyt+RqV24cxcz7Qecu4DEy0E/xmYIkdyZ\n" - "SW97f3kIsAgQlku1LesNIk4dyzFWMCMGCSqGSIb3DQEJFTEWBBT9j7rrTvF9BQIR\n" - "akEUSP09N/PaYzAvBgkqhkiG9w0BCRQxIh4gAHMAZQByAHYAZQByAC0AbABvAGMA\n" - "YQBsAGgAbwBzAHQwMTAhMAkGBSsOAwIaBQAEFNeGPUIUl4cjhFet09N6VSCxmfSY\n" - "BAjXfJCHoHZI2QICCAA=\n" "-----END PKCS12-----\n"; - -const gnutls_datum_t server_ca3_pkcs12 = - { (unsigned char *)server_ca3_pkcs12_pem, + "-----BEGIN PKCS12-----\n" + "MIIRSgIBAzCCERAGCSqGSIb3DQEHAaCCEQEEghD9MIIQ+TCCCT8GCSqGSIb3DQEH\n" + "BqCCCTAwggksAgEAMIIJJQYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQYwDgQI0Bv/\n" + "MLNNeX0CAggAgIII+PugAg+ZArNedgnhMh2kM1tVj1os+8i0BPh9kQMT4h7qes6e\n" + "Z6c+W4xCnL89p7Bz35riiK2KlJ6YzcTYXzONnmVR8gIEHsvYWwRSB++IE/jx9pCq\n" + "TxN5GIH1tt467EKdc+Y+f4WBXmtk5hF4gTmHG2t3o4HoniNXzcRd+ZSsFj4HGE/c\n" + "iXQY8lXN2PD1/XJsuwpYssKhJ+gI9iLREoyFdd+vG6KhzDvdgdvjWBQY/X5Q5pgF\n" + "kepe9jjokbLqLj+S8eHBQ8KF9B2FKB+RTyYep9zqn5qbN7TOt3+yMH+u+/Jj/GzH\n" + "ZjJNpee45G9CtPgjVS1t2fKjz9SaaKfOjHsH9WD5Sci9aqLRqFs84FlilRl6PyiG\n" + "5g89MiXL5Iu6WFoTM41eIezcyQf0ndakj2clVEfX2pX+e1bXWFzvnc5a933N2loK\n" + "OqJElti6h+T30M2CKEUX6FT5ihaowo5DwCXU3jTFcPMY0htvc4QuZQjBfyb/hGqf\n" + "UqjLGh+VZCmNPSmSkoqZScl8N2Db/DPvIu+cga2jSkFtvMEZVd9O5lN53drU8ONE\n" + "GMgdmJO43j/cnlICy+XpUyPrv055TXUo1gouyg5T1G/imtt0L265VTCxIqRVEsjR\n" + "EQdacLCOPvMohukJAbUTADh/vd3vf/qMINse/y/fPMoLpmtmmZsnZnr1zmIcIXLg\n" + "fLLBVhOz3Vl9RRl1qGbZQBleUUVAabYXbsK1UQHpZ7h2dSWF6ibm13DWRGkJRAVl\n" + "R1dvpwAzR1bhb7rOgTMhmxqADCWh8lcqFt/4ReZofdHmWoxZEopW4m3CghZQM+Ee\n" + "Kz4dYtLGk7W1rg8jnycAtxDwVGh9jMVsvCGypxkgEx+aQ7R+y9t0nu7l61GEnZBt\n" + "uP2EVrChWdFVyH9+YnRRCNaX7lbDtCdOnIrgGeEtNYwzbxUq/kSzllljrkYWQItK\n" + "W+vvMf9NVjTxyJr4kIXenm9ojPO3i485RWECIupdasel2YnPZYjcAKJc4p6nFGVB\n" + "YDs/U32f1BVEXp7pPZOuuzU+ocTswSluwQ0NskuYnDT9w8+LauaqpILRQpCtIIZC\n" + "TEqa7aS7S+f85Jeyt3yGsTNwUuQJZaG5D3Eh7iOB+rJaq3wEwoPlVLURVd8f6Z4H\n" + "t1i0fM2iQA9+FXVkj2B5zr19no0Q8hr/Bb20u9YTT48CfXA7I2IwXSprb8kql0M8\n" + "JmBv6FIDWzXLbGyRR39fX9kKlYMy0eq0ZxXKLLKEnZ1GUwtIeHTYKXG7ezliNaUl\n" + "7UEp3V+bYOddL6uRafEsemdskHtl10RIi3Q3ZX2OksPueMQ5YSOVh4CSPpHsHYGA\n" + "9KWt/PSja+zRGHsGEPX1jic2vHUTxOxI2sOZssnYCYWj/4MDk0xs7M0zdSXEEl5L\n" + "97i5Qx+zv5MPM3yLexG+FllSD6nbPswzG8rHelfRSaK/+AHd0gigrUHqGFOp8B/P\n" + "ml8obqs/LroKVzA109u3LfFlm+JFYeJgqsuoSuLYmJwFe6LNFkmhgGPwhyntqKEx\n" + "zSxgZl91XrgYYuJwn7+CgQx6Dkv7I+SCfJGLBNeAp0Rr+hpYqk0OU9yHBrTLe8T+\n" + "AQhHs4/ScZzRXu5F3dbjZ0PFwOYLo4t/NwUqkL8rCDtn45c1z5oyWhwk7nZMDCT3\n" + "gIpVLf5XDD9f6eXV216oNIL1vxOw0B5GXXsT1KIKTCbBrNl920+GBu3xB44AN7Ik\n" + "A+FhVKT1ZiaoEUKkUIy6I410GprvqDjRGp+Qs2Xitfk/E/3aoZ97cDBLEQOnF/lZ\n" + "mqsczn9XnI+Jp+E8rhTxOMACR2Oa3XuL0+um7Qk+rkS2jcmJy9WniedO2E1EUHoj\n" + "FRwWNjTQQR04Spv3qAc6IP1i8otUzKFkSx6SxH0a5zcm0ERNa6ZyU/jYvRrIGgZC\n" + "kUxtTZbNNIggP3xqU+meRdRUeiOpqL8W3WCJ2FcjpR1FhXZ1sU1/u8pAgMMOhTBZ\n" + "ICHmSjOGZ24kGgWNcLxYQG+qtIH7r6ihd9x/dv0s/Q9DAISv6G8z2YXcBb5EMZW4\n" + "/59z0XL8HFx0/esjB9mHUD/4/Kzp169sJQOvDdmijNaZcDanUa8niBhruuS2KnUB\n" + "iW2SrV6DBx32bjVIPbDJoDmcQWRDsuwpMqRAVtAWrmY5JeNp3zgII0Nr4rUAojWE\n" + "x937fOdIMJu8K1Nst+78DVA4h6jdnUHv5bvOcsVKejjRvSot5vQ/XQPppHlQ73v6\n" + "+Jro0bstYkMpfsbBXHt8tsB6nmZ9i5bv2x7P1nISKgMA4NzzdHFSpwFCmxrBaJen\n" + "XmkoTdQId1O6YlYHJS7fMntNbi60E01bReAVjtY5Q77kqVab/LQI6yJHz01/1KjH\n" + "2MiLixUV6a58FhKOI8Ea/yWSJti549Dqs+AMnwUu56GGT7lBLdT3x4r+SwThUWN2\n" + "aCQoy6rJ5wrsa2OGoO6I5CWHzIov1zlP+oWdKueuGRGTwJdnWm9ZQxTbDJ3QHeBn\n" + "OQXcWNcnQm2lcNfm297EGsClrrKTqmHBR8awpnnMdqzp0+vKiTzrfzGMVWQKoMM/\n" + "74bzAts3+a+sBa5Y34YY+VLPqpXcVR9gY5+xxgYTzI7Ppggn5pNI+lng8B0hjFUU\n" + "o2GNw8uKDVbjWf+ewULWKcCgAaBXXCAOo291TrURABmyR6XnybZwsg9a4yh/kcyk\n" + "aXYLsrmEhfW17ChcGE5LLMzHEeSCUgy+z3yiiP6tD0g/6RFt9Nt57bVndJFqMVcS\n" + "78VdEtQEI11Ty2oeN/+e8XhkZeicvgqgdrDb5jmfGN/F1la0FBnXnJG1fG8qnMMv\n" + "C8V/eRxYanKWr/UwpsC6r/pn+1iTOO3hByg9rWgGSALbgnUFvIfQiSccVoD/lkbh\n" + "TZlsuxhdKXnimi22RO50+0L99TnECu0psQXBDvCzzHSwi3MjPcvrQSPb/ZPSPqd2\n" + "ock7nRDXFn+E04XAOFEuF1Bb5SfEbWHLx0d7uCSieAF9YMBZWvETTOOnDgH3Pe93\n" + "+46a0tp4IdWrZEdUcU+/UpwuKyMGCCAfwKMFCA6i/In/cJAcrpRQJGWVsBERMaVQ\n" + "6Ke/ZwIwggeyBgkqhkiG9w0BBwGgggejBIIHnzCCB5swggeXBgsqhkiG9w0BDAoB\n" + "AqCCBy4wggcqMBwGCiqGSIb3DQEMAQMwDgQIT0kvLiNCahwCAggABIIHCM453Rnc\n" + "ggHPk7un7VHebwwtckSBn7qntGhILQfJ+0xoPHPMHMUoDQ7DRbkcyuqtP0+VoZKa\n" + "yLb2WDpyir/f8cyhZdDSnlb/WK16UaBguYmw8ppN09Lsok9KKNJxdWaHz65kABAh\n" + "pHAX6BpdVFv8dOiWuE/+v0TGsaPpvRvwAy1qNNlErcIgGFs2GCgdVadblKw0lR3p\n" + "t/6lhTRF4xqaPtUx4am2cQlmJyUCxy/XSetSFYaKIUdP5pEbesmYs5SuosCwokkB\n" + "q3fzstm94dIzjoPz/XJp2Ek5lpmoHUO0SOGfSDdmMuCPoICQN+xcR0oD6Kso5MrS\n" + "PepHrrG6KqX9fIR2Y2stEJsuaRYA/1h5CEnHnOWEbr2DBbuXB3HY6a5CrwV3xSCK\n" + "Ek0LcWe6c/+ceBcpIUjte8oaM6jPO0WeknNtDQLz+YNnvIqiT/3u3P8pA6DomJrw\n" + "0NoTm/SNMaKPz5IIBBNIzjMXWopgJ9+/bktwbENA/lO5gQvxLGRuaAZpvQpEbmhB\n" + "9W5ofFelsN/BF0zminlL8w8rFc8AKMKEBg85z/EqDkl02cUQa5XDKe3i0Td04xeZ\n" + "KOzsVqBm42rvCh2OgbNcbXBPqUTklRRKzzCgL/Ej645oTkzRfZxUmLaly5bkjyDm\n" + "vXdLdp2doVQlXboCZDK5hmxkirviYPsrjNzAPd5Uz+4rVB5qrxYTsY+0Rtdpb+J0\n" + "RqM2XFqJnA8ElIljsx7wugEEXt1wwey1JhS/+qybnDCP4f6OCaM5t8TTql2o6Eoh\n" + "DntWfAiq8A8mP43HP3FrGyI/3cpgOEF67Q/nLJFnaf6vwfm15xdq20iOIDZtoGJ7\n" + "VahRpOXNed2Xnv/HFwfPvGZM3lInEOEkC6vKWWDoOrE6kAu739X9lm+lLR0l1ihE\n" + "X8gtilgYU5xzM0ZmRjepLn19jdb18nGEUg2pMNkhEakiDyxLmYBBU43IDRzdYgTe\n" + "GJzakTDw/gNO6buVy+emr+IIW0f8hRSbXFHuw5/lpLZoXNCXuHRyEcGa4RhubrVe\n" + "ycuauZYFSp0JhJe+0OtKkBUHSTkoj1aaOByylq8b38ovbFTZ/JiCsYGsmwOfDiSu\n" + "21Fe1mv8+GtFf+t+H+IQBDv2/SHHWwVExW8hwYwXXZ8wodfpLrF7FWQvEa62/DvN\n" + "nQ4sy+z3IJtoPoGBfKMgLSJaNyuavRpbhy1fYuhUwhnbrH1M3YVgi+CnW8lIn44e\n" + "KoSPf11qTlgXBNVezXPYh6cw0FOObkiiuqSL7/ax34Lbz8vWs1yDs6ni9M7l8VUa\n" + "j0MhBEQDTinzz2L7U/uRGkcHYVNsCAIOaStbKxNx2bnEmFL2TShs6eH1kPAyDJ9N\n" + "SFuqmrboF92KNM1wKjIcthbJxPVJVlI1M0B8HVuU00QTIaJyJoQZuNQ6lyzTudwS\n" + "5F69zmQCaRIN2b04m/237Z4/SXuUwFDdDojoFxJ6m1yA86uUigyOzKGavtZz4tgw\n" + "BTCYcxaoCB2ebqNl3L4oE+gaAweAjtivNbAJswCkQF+LPEbAt8m2BZDo1bI4wAg+\n" + "Mjzs83PkzE3bn6q6Rk8HslnOCS55M6gTPu2zvz/FSaLY29X/5D7QtKJPAw30xUA1\n" + "Wjm3K0tkY/wqWntmJW9zVAaLzvW4iA61D9EuRoY/NChyF6HsLL8BjUEktNBItQ/h\n" + "2kUQnrJeoaaW4nIZz/apiryaFekWWpjudO8zxhxHquK8KpwdXK4c6LCMycTio42J\n" + "rw0/Tbe4noTfxPTJoaG9CaJXTq0rIMWxQprUONdjVih3cADI9V6/aO7/fSU+awFG\n" + "0inoNW6HmAT9ztYsUgRJ+JfiZCc7+h8WY/rrDb15Jj0Jjl4pe2B3S57c5zJ7TgHd\n" + "Zm8ED5uagqAcUIsBIlkNABAuia78tLewFFfCV5mYQUp3fHT6MU9EmPFI3YOuwvhk\n" + "NhscLr0qGIdxK9fS190Al3W5VZiCZ3g6bTwRLkjVChNC6e8u2gxGy6Rx0uxW3c73\n" + "/Spk4oYJ4PAT8GAgO4DJyRg52dFMBSBz4ZLAVR1eVVvPRbV7CSSaGLBLvAp/GFbz\n" + "pZ7sfEeGuiSb0GzcdU7anf+xvmSK/rxHfQPjqZ5EcGG3xhONG/SYwUlrp4GlP6Qs\n" + "ZlRSxsfy9YdIzmf3JhDvVtqK5Uj/wGXlX29NDh+X7mhvCOxCPM19AynXtGWgGFkb\n" + "zd8oaGXbIt/FldsQidEx9UINjtmozl/pB03lFL8wbEF/wBuLx+E1Ite2NCspOJTk\n" + "unw8CZJdUXmdVGo23iOrAziQFrlyPKawoX5iOYot47PQ6vcKiV2fnE5XHUqU2l6K\n" + "DHZbSGfz8vjC9LsAJzhhyZvjxi0LIDwxyt+RqV24cxcz7Qecu4DEy0E/xmYIkdyZ\n" + "SW97f3kIsAgQlku1LesNIk4dyzFWMCMGCSqGSIb3DQEJFTEWBBT9j7rrTvF9BQIR\n" + "akEUSP09N/PaYzAvBgkqhkiG9w0BCRQxIh4gAHMAZQByAHYAZQByAC0AbABvAGMA\n" + "YQBsAGgAbwBzAHQwMTAhMAkGBSsOAwIaBQAEFNeGPUIUl4cjhFet09N6VSCxmfSY\n" + "BAjXfJCHoHZI2QICCAA=\n" + "-----END PKCS12-----\n"; + +const gnutls_datum_t server_ca3_pkcs12 = { + (unsigned char *)server_ca3_pkcs12_pem, sizeof(server_ca3_pkcs12_pem) - 1 }; /* Raw public-key key material for testing */ static char rawpk_public_key_pem1[] = - "-----BEGIN PUBLIC KEY-----\n" - "MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAyAeBq7Ti7oVExeVT1PqH\n" - "GBXzC+johdeVnZgZRLhDTIaIGODV5F5JhE4NNb1O/DYLlAy5IIO8tfAE2KIxlarN\n" - "H/+AcfV6ZJQSG4SSmhoIGzfdcdjuBmFfdfhO+z/cgqiewh53/fFCQlaJweHhpmim\n" - "/LVL/M/1Rd6Urskv/5jXGG4FVUNfhXKQag0uzWsqcztCPX7Lrqr2BSOmkA1nWzdo\n" - "h5oBuxdooaH9/kwphqJAp03LwtaSStX/yz6Mh+ZqEbBuM4mWw/xKzbEbs7zA+d8s\n" - "ryHXkC8nsdA+h+IRd8bPa/KuWQNfjxXKNPzgmsZddHmHtYtWvAcoIMvtyO23Y2Nh\n" - "N4V0/7fwFLbZtfUBg4pqUl2ktkdwsNguTT1qzJCsYhsHXaqqvHy+5HR2D0w07y2X\n" - "1qCVmfHzBZCM5OhxoeoauE+xu+5nvYrgsgPE0y5Nty0y2MrApg3digaiKUXrI+mE\n" - "VKn9vsQeaVvw9D6PgNQM99HkbGhRMGPOzcHjS/ZeLd1zAgMBAAE=\n" - "-----END PUBLIC KEY-----"; + "-----BEGIN PUBLIC KEY-----\n" + "MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAyAeBq7Ti7oVExeVT1PqH\n" + "GBXzC+johdeVnZgZRLhDTIaIGODV5F5JhE4NNb1O/DYLlAy5IIO8tfAE2KIxlarN\n" + "H/+AcfV6ZJQSG4SSmhoIGzfdcdjuBmFfdfhO+z/cgqiewh53/fFCQlaJweHhpmim\n" + "/LVL/M/1Rd6Urskv/5jXGG4FVUNfhXKQag0uzWsqcztCPX7Lrqr2BSOmkA1nWzdo\n" + "h5oBuxdooaH9/kwphqJAp03LwtaSStX/yz6Mh+ZqEbBuM4mWw/xKzbEbs7zA+d8s\n" + "ryHXkC8nsdA+h+IRd8bPa/KuWQNfjxXKNPzgmsZddHmHtYtWvAcoIMvtyO23Y2Nh\n" + "N4V0/7fwFLbZtfUBg4pqUl2ktkdwsNguTT1qzJCsYhsHXaqqvHy+5HR2D0w07y2X\n" + "1qCVmfHzBZCM5OhxoeoauE+xu+5nvYrgsgPE0y5Nty0y2MrApg3digaiKUXrI+mE\n" + "VKn9vsQeaVvw9D6PgNQM99HkbGhRMGPOzcHjS/ZeLd1zAgMBAAE=\n" + "-----END PUBLIC KEY-----"; const gnutls_datum_t rawpk_public_key1 = { (unsigned char *)rawpk_public_key_pem1, @@ -1830,45 +1845,45 @@ const gnutls_datum_t rawpk_public_key1 = { }; static char rawpk_private_key_pem1[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIG4wIBAAKCAYEAyAeBq7Ti7oVExeVT1PqHGBXzC+johdeVnZgZRLhDTIaIGODV\n" - "5F5JhE4NNb1O/DYLlAy5IIO8tfAE2KIxlarNH/+AcfV6ZJQSG4SSmhoIGzfdcdju\n" - "BmFfdfhO+z/cgqiewh53/fFCQlaJweHhpmim/LVL/M/1Rd6Urskv/5jXGG4FVUNf\n" - "hXKQag0uzWsqcztCPX7Lrqr2BSOmkA1nWzdoh5oBuxdooaH9/kwphqJAp03LwtaS\n" - "StX/yz6Mh+ZqEbBuM4mWw/xKzbEbs7zA+d8sryHXkC8nsdA+h+IRd8bPa/KuWQNf\n" - "jxXKNPzgmsZddHmHtYtWvAcoIMvtyO23Y2NhN4V0/7fwFLbZtfUBg4pqUl2ktkdw\n" - "sNguTT1qzJCsYhsHXaqqvHy+5HR2D0w07y2X1qCVmfHzBZCM5OhxoeoauE+xu+5n\n" - "vYrgsgPE0y5Nty0y2MrApg3digaiKUXrI+mEVKn9vsQeaVvw9D6PgNQM99HkbGhR\n" - "MGPOzcHjS/ZeLd1zAgMBAAECggGBALHiAw3Yscqd11gJpbCMDqF7u4VG3alQ26un\n" - "PClhl++w380H/Q62TriK1LKKpHgj8834NpXUsXg2d4jTTDcmCn6/L9GoFOzmxOeV\n" - "0O2b4sOZvaNl397qrwLxDAPhec7z9yL4B4tcBqmJ3b3+izX6cS3gaC/uG9fDpgN9\n" - "xOKPYBFInhOB86twAz9cc9eXysto0nJvlODDBj/xwUjvso9qydl1Or7PhWvf7Ek+\n" - "H9ur5MUjqOWe/b/xaSWsfTrJzF/ovbRnGbXLIpozIx609TZS4wYSqU5FUjkL0zTB\n" - "bTdb3jgFm/5SHnnThD67zbZavCxiN9wiTs3zeGlxYf8hMeaTkOYiAOR4/1bOTe2J\n" - "ttRA1EcY+i6H0+JOtLkqwj5ka0m3lrH2KD3E/mHs1yfERQx7VVjw9IpeAKmi5lzQ\n" - "v1lhIXiv75Mb0NMsCknGYPLHCyOY5aA2dhR8Wnr67gOYu3ssexLzMKczk5OTzl5c\n" - "PRHJRXDpJqgOYWujF99uCYhnxonO4QKBwQDUQB0s4shWTyOylq7j4rCSbHf2zHDf\n" - "HBYC75wyjQECNQXNk6hp5jJz2BC0XvnO7PYSRXaVauMc/S3V7V7GMsry3uugfwLy\n" - "XNnyRVY4voe5SNt/WAArybNsPNPEIPzgkZmeWvcpoY8ESufPfVW54BvGHt3YjPjI\n" - "gYmFUkpPRUWXfji91NpTlIrsP6jtBTYXGV4kVm+TawP06a6FdCjJQaI7Nm2dwUiX\n" - "Cmf4oFSo8mGxi0wimX+BiLJep2bYnUF2gqMCgcEA8UKESDX3jBpyz59vpSjmfpw1\n" - "AnlEfR6s83W92m0HfEYLulfxq9xA2zaQjy4GbaKVRfLrO2Pj3bZWs89RGXTQVGgq\n" - "ztCLIRsL+M1SQ883e8yx4jwFaqIM+pPpvAjOOOTdpgY33h7w20tgrbzVKeOl1ghC\n" - "IZ+K8C/tIGZXI5/TYppl7csIOoYRtzuRpyDE0tmwy658RfyxzEtfLxJoaLiFXOE0\n" - "zFFrEvT/jto4jN+cwsdnHhxrY9+bVNUNyb9ZH7bxAoHARvcIyjEo+nKLZPKsltT8\n" - "ZHiPw5ynQHGLin/CocQzSiGgRxPPg1jMFZ9wNl5q95ySyZkgBOUv+klMQfKTdYEW\n" - "Cg4uigLtYUtaM36rTV2m03RgrzslE37k1pOf2juNUShdTGztpqW1w6Gnz+AAAZ3E\n" - "q4E2e2jm5WMqL8FLxyVKF1TEc/Pu63MG3+aI/HZ5l0+MAmpD8+4b7I8VItmrqV6g\n" - "d1vDWrN9KcL48E/q/nHL6CjC0+6uiwjBWpRt9o7djFoxAoHAJzK/e1wJVGIXtVQa\n" - "N6Nlj7yhgD1ju1B4mTXQGuUMCkz3KtePFHU8tGExK5I2ySlZR3wobAXWx/cQLzbH\n" - "3nL0RkKGcgPAFyjl0Q7LBulsAllHrZJC7whVQ4E0wLBNkUDeIlNwUE6Go5qjopbD\n" - "q4KpNxUwaXYahNvEkzcNgWQ+XA7p8LDELX4K8tJi39ybHgbwiqdW2ags2xyD4ooD\n" - "HMCeKnEMuwWfd/0GaJdcCMdsGNl9D49eg2OZQTc8fkLwoA6BAoHATQdk3VZwGGn/\n" - "93p9vu189alkshTmir+SOo/ufH5U+j7t8cPeT7psuYAPZWS+Z6KEzvHxj54pAvcp\n" - "mlAngD3+AfHDn/VAtYv5HVcpZ+K2K0X4v8N5HGIubgaebs2oVNz+RAWnd8K2drDG\n" - "NcJV3C+zLziTCwvpGCIy3T/lHjKe+YczjGfhg2e6PgfwhTqPAjuhUZ8wScYo7l7V\n" - "zAhlSL0665IXJ32zX+3LyQFDbkB6pbKy5TU+rX3DmDyj3MSbc3kR\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIIG4wIBAAKCAYEAyAeBq7Ti7oVExeVT1PqHGBXzC+johdeVnZgZRLhDTIaIGODV\n" + "5F5JhE4NNb1O/DYLlAy5IIO8tfAE2KIxlarNH/+AcfV6ZJQSG4SSmhoIGzfdcdju\n" + "BmFfdfhO+z/cgqiewh53/fFCQlaJweHhpmim/LVL/M/1Rd6Urskv/5jXGG4FVUNf\n" + "hXKQag0uzWsqcztCPX7Lrqr2BSOmkA1nWzdoh5oBuxdooaH9/kwphqJAp03LwtaS\n" + "StX/yz6Mh+ZqEbBuM4mWw/xKzbEbs7zA+d8sryHXkC8nsdA+h+IRd8bPa/KuWQNf\n" + "jxXKNPzgmsZddHmHtYtWvAcoIMvtyO23Y2NhN4V0/7fwFLbZtfUBg4pqUl2ktkdw\n" + "sNguTT1qzJCsYhsHXaqqvHy+5HR2D0w07y2X1qCVmfHzBZCM5OhxoeoauE+xu+5n\n" + "vYrgsgPE0y5Nty0y2MrApg3digaiKUXrI+mEVKn9vsQeaVvw9D6PgNQM99HkbGhR\n" + "MGPOzcHjS/ZeLd1zAgMBAAECggGBALHiAw3Yscqd11gJpbCMDqF7u4VG3alQ26un\n" + "PClhl++w380H/Q62TriK1LKKpHgj8834NpXUsXg2d4jTTDcmCn6/L9GoFOzmxOeV\n" + "0O2b4sOZvaNl397qrwLxDAPhec7z9yL4B4tcBqmJ3b3+izX6cS3gaC/uG9fDpgN9\n" + "xOKPYBFInhOB86twAz9cc9eXysto0nJvlODDBj/xwUjvso9qydl1Or7PhWvf7Ek+\n" + "H9ur5MUjqOWe/b/xaSWsfTrJzF/ovbRnGbXLIpozIx609TZS4wYSqU5FUjkL0zTB\n" + "bTdb3jgFm/5SHnnThD67zbZavCxiN9wiTs3zeGlxYf8hMeaTkOYiAOR4/1bOTe2J\n" + "ttRA1EcY+i6H0+JOtLkqwj5ka0m3lrH2KD3E/mHs1yfERQx7VVjw9IpeAKmi5lzQ\n" + "v1lhIXiv75Mb0NMsCknGYPLHCyOY5aA2dhR8Wnr67gOYu3ssexLzMKczk5OTzl5c\n" + "PRHJRXDpJqgOYWujF99uCYhnxonO4QKBwQDUQB0s4shWTyOylq7j4rCSbHf2zHDf\n" + "HBYC75wyjQECNQXNk6hp5jJz2BC0XvnO7PYSRXaVauMc/S3V7V7GMsry3uugfwLy\n" + "XNnyRVY4voe5SNt/WAArybNsPNPEIPzgkZmeWvcpoY8ESufPfVW54BvGHt3YjPjI\n" + "gYmFUkpPRUWXfji91NpTlIrsP6jtBTYXGV4kVm+TawP06a6FdCjJQaI7Nm2dwUiX\n" + "Cmf4oFSo8mGxi0wimX+BiLJep2bYnUF2gqMCgcEA8UKESDX3jBpyz59vpSjmfpw1\n" + "AnlEfR6s83W92m0HfEYLulfxq9xA2zaQjy4GbaKVRfLrO2Pj3bZWs89RGXTQVGgq\n" + "ztCLIRsL+M1SQ883e8yx4jwFaqIM+pPpvAjOOOTdpgY33h7w20tgrbzVKeOl1ghC\n" + "IZ+K8C/tIGZXI5/TYppl7csIOoYRtzuRpyDE0tmwy658RfyxzEtfLxJoaLiFXOE0\n" + "zFFrEvT/jto4jN+cwsdnHhxrY9+bVNUNyb9ZH7bxAoHARvcIyjEo+nKLZPKsltT8\n" + "ZHiPw5ynQHGLin/CocQzSiGgRxPPg1jMFZ9wNl5q95ySyZkgBOUv+klMQfKTdYEW\n" + "Cg4uigLtYUtaM36rTV2m03RgrzslE37k1pOf2juNUShdTGztpqW1w6Gnz+AAAZ3E\n" + "q4E2e2jm5WMqL8FLxyVKF1TEc/Pu63MG3+aI/HZ5l0+MAmpD8+4b7I8VItmrqV6g\n" + "d1vDWrN9KcL48E/q/nHL6CjC0+6uiwjBWpRt9o7djFoxAoHAJzK/e1wJVGIXtVQa\n" + "N6Nlj7yhgD1ju1B4mTXQGuUMCkz3KtePFHU8tGExK5I2ySlZR3wobAXWx/cQLzbH\n" + "3nL0RkKGcgPAFyjl0Q7LBulsAllHrZJC7whVQ4E0wLBNkUDeIlNwUE6Go5qjopbD\n" + "q4KpNxUwaXYahNvEkzcNgWQ+XA7p8LDELX4K8tJi39ybHgbwiqdW2ags2xyD4ooD\n" + "HMCeKnEMuwWfd/0GaJdcCMdsGNl9D49eg2OZQTc8fkLwoA6BAoHATQdk3VZwGGn/\n" + "93p9vu189alkshTmir+SOo/ufH5U+j7t8cPeT7psuYAPZWS+Z6KEzvHxj54pAvcp\n" + "mlAngD3+AfHDn/VAtYv5HVcpZ+K2K0X4v8N5HGIubgaebs2oVNz+RAWnd8K2drDG\n" + "NcJV3C+zLziTCwvpGCIy3T/lHjKe+YczjGfhg2e6PgfwhTqPAjuhUZ8wScYo7l7V\n" + "zAhlSL0665IXJ32zX+3LyQFDbkB6pbKy5TU+rX3DmDyj3MSbc3kR\n" + "-----END RSA PRIVATE KEY-----\n"; const gnutls_datum_t rawpk_private_key1 = { (unsigned char *)rawpk_private_key_pem1, @@ -1876,17 +1891,17 @@ const gnutls_datum_t rawpk_private_key1 = { }; const char rawpk_public_key_pem2[] = - "-----BEGIN PUBLIC KEY-----\n" - "MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0tQAiQ13zWGZMV9YxFo2\n" - "H15yERrkr8KD7z6QheVeatc2+5X0m5/+/o95nmnt6Mlwa27U78QwkHBccOaNkSi7\n" - "HGMopaxatEsF/S30MDmhqOi9R2VtMwDaa2zWH/s2wPHn8efn2/zG0jeXCzNsXFs4\n" - "zNApaZmTJCHaDRUE12adwP5i6GvUb978f27Cm0gnkSWBH9OdVnMunQkm/L16NI3E\n" - "lvcDEEJbqhX2eswHenbhw//LiR1EKRtHEjWywAq5AeHeYNH+2zjff59SGD6Bn+W2\n" - "vPKBhSWCyFDPGRfcYeCX2LFM7+Xx0j+GLzBnkjBhEgdsdLJ7Bt8aDToUJScLxeeP\n" - "oOmL9e0bec20debwF0G/7QMlwRgDjV3sd3u+5RxRCeOh8Xqfbs/tij7tnU93orhc\n" - "MzGjcn5XZ6WicyimuTruNznhKhNp6vmizCpwQAroimaZGV7F/8nvHInTZfpNH/+b\n" - "++gYbddkH+MouxOXcAEUku6vN0JzDgA4qj4Tw7dffXSDAgMBAAE=\n" - "-----END PUBLIC KEY-----\n"; + "-----BEGIN PUBLIC KEY-----\n" + "MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0tQAiQ13zWGZMV9YxFo2\n" + "H15yERrkr8KD7z6QheVeatc2+5X0m5/+/o95nmnt6Mlwa27U78QwkHBccOaNkSi7\n" + "HGMopaxatEsF/S30MDmhqOi9R2VtMwDaa2zWH/s2wPHn8efn2/zG0jeXCzNsXFs4\n" + "zNApaZmTJCHaDRUE12adwP5i6GvUb978f27Cm0gnkSWBH9OdVnMunQkm/L16NI3E\n" + "lvcDEEJbqhX2eswHenbhw//LiR1EKRtHEjWywAq5AeHeYNH+2zjff59SGD6Bn+W2\n" + "vPKBhSWCyFDPGRfcYeCX2LFM7+Xx0j+GLzBnkjBhEgdsdLJ7Bt8aDToUJScLxeeP\n" + "oOmL9e0bec20debwF0G/7QMlwRgDjV3sd3u+5RxRCeOh8Xqfbs/tij7tnU93orhc\n" + "MzGjcn5XZ6WicyimuTruNznhKhNp6vmizCpwQAroimaZGV7F/8nvHInTZfpNH/+b\n" + "++gYbddkH+MouxOXcAEUku6vN0JzDgA4qj4Tw7dffXSDAgMBAAE=\n" + "-----END PUBLIC KEY-----\n"; const gnutls_datum_t rawpk_public_key2 = { (unsigned char *)rawpk_public_key_pem2, @@ -1894,49 +1909,49 @@ const gnutls_datum_t rawpk_public_key2 = { }; const char rawpk_private_key_pem2[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIG4wIBAAKCAYEA0tQAiQ13zWGZMV9YxFo2H15yERrkr8KD7z6QheVeatc2+5X0\n" - "m5/+/o95nmnt6Mlwa27U78QwkHBccOaNkSi7HGMopaxatEsF/S30MDmhqOi9R2Vt\n" - "MwDaa2zWH/s2wPHn8efn2/zG0jeXCzNsXFs4zNApaZmTJCHaDRUE12adwP5i6GvU\n" - "b978f27Cm0gnkSWBH9OdVnMunQkm/L16NI3ElvcDEEJbqhX2eswHenbhw//LiR1E\n" - "KRtHEjWywAq5AeHeYNH+2zjff59SGD6Bn+W2vPKBhSWCyFDPGRfcYeCX2LFM7+Xx\n" - "0j+GLzBnkjBhEgdsdLJ7Bt8aDToUJScLxeePoOmL9e0bec20debwF0G/7QMlwRgD\n" - "jV3sd3u+5RxRCeOh8Xqfbs/tij7tnU93orhcMzGjcn5XZ6WicyimuTruNznhKhNp\n" - "6vmizCpwQAroimaZGV7F/8nvHInTZfpNH/+b++gYbddkH+MouxOXcAEUku6vN0Jz\n" - "DgA4qj4Tw7dffXSDAgMBAAECggGAVD3oFNtv0n48I1FQ++x8Ed7AP3t6g4x7AX8D\n" - "aq0zJAfo7XCG9CRjVL5pv1XefZT4OcVoioHfUefD2E0XpjgbRAWPOVv8Rmxv8TGK\n" - "kDaHFSIid8PcdXPS0vgDO3Y686/1mWCr8eg4XclerlgW5XSB5r0KvyphdB+erHmI\n" - "nLVhNbuwM+TaVvVH+Xd9hWS4grP0u43oIaIWryL4FCd2DEfVlOkQrU+GpxjtizW5\n" - "i0KzhYjRgHFUSgSfSnRwf3IJaOoiIpOma2p7R4dVoQkVGS6bStqPcqSUGVxH2CLu\n" - "TC7B0xZZs2xq6pLVWYXh/J79Ziw76+7qeMwFatzsUPtB6smQvR7016BThY6Cj+ui\n" - "KgTCZGpbb30MCn9/px8P2jXagA9fnPzf31WkdbsnjrYPNe6kkP5snJtz6k3cYex2\n" - "P8WulCS23qjCdVoUcoSDzPiaFtnPR/HcZDpTYuxKuUMoQrqsmRHeF/QRvbXkKFQC\n" - "Kudpfna5CAIT5IaIWwXQp0NfpnNBAoHBAPcnqz2uZaVZO7LiZEMc3cDfiPTp2vhf\n" - "VRYNyvTZIYgAox8k49waEQq6MyD5N2oWyRjWsQ0ta/BqJgMLoG42oyDntp/HGhZC\n" - "SxLQEu4ursFsCE32I4nyt7DD5erzX+H6folRq2BelL6ISwdr1g1wJZ3cCrwGbG/P\n" - "7MUYtSo026K9iXCqv9t7Q3TYe7yECVrxqbOu++C2df8IodehUm5wQZTsysBDfCHZ\n" - "PT9m4Qfaryq/u4N5w8nCt/Ep3JkjqyJL4wKBwQDaX4WbwL6ipyt6k4NZ6dEe0aLT\n" - "yKowO0rAWckr6WbA6kFBV2JWPswdV7gCqSOaae+UVc6cpw07jc39vsFNFGDL6OfC\n" - "HvmjQ2HQ/Mf4RjNTSt1rYpiB7DTqtLCys454OHFxo0UinXUc20+timroLEJbZJ23\n" - "upgAvico9zgCyjiwHoEVCpwZerLcLJk44mSGANiBLMo6YfyWj+PfLOeXu5rs4vhC\n" - "K0JBPdIzXHKwv996qFpy8xBatfO/+CH2NR/D1uECgcB8mATdbWNUfa14umQs6Qpp\n" - "Rsb2IEYA2547Jezgje03cIrLEn/D32gj7kYEI15qHt51pRVQPUuiwQA0nNHdfbGy\n" - "ztzjoy1ldzn9W+OPKv1yCJIPKzwzOKadd8QaM2Jsuyi69O7eABAgFPkt3pDj6Vst\n" - "P1Yx/1L+8uS7X39ErazjV4VHxOw/Kt6Qsul92VoV/Km+KUJUv+awEJv15h92CSUm\n" - "fFChp+OV9LvJkIV0vit783gGCYZH2d98tcu9b5vACF0CgcAZM0rM5ZpaVOZcl+dh\n" - "me0LHHAo9pBFTqJavkHL8nxsKNxs+POdNlQB0tymWfSE3lLKkHhudYy+Yafy72+J\n" - "QJ/HCFKugTqXz6/bGUDOcvN7WjlhKhilbafRqhZ2GOiJESJuVcQlsXwRX3G7eizK\n" - "LElgGKVmzX67HzaPsK/jCokuMeb9kaLgAdvgMrlf6ihlmnVhutR/lk065tIKMDlt\n" - "tjWzvqGdqTZVJxg52yJVKV9V3VXKzCgH/9VoQu9QZWMMC6ECgcEAu2lYMEfbrTYS\n" - "u2ukovL69EnxUfQ76f8/cs3gVsOWRxPN6MFe8pR7lC03orHckGdwVF0uUSbek4F7\n" - "vmZxewPQvVWntGfyL3uhln+xyJbfd/a4YThTDzXIy++jdrKGCVPc9Z+XPWJyc5qM\n" - "fA7FxB9uBfVyHKa3LIsuvyFtSKF38pEVMrL4kTnB++Eg536AOZbYB351dMi0qXzN\n" - "Ljyi36ud0J5l00OZAanLPw7dklZOTYNguCDRhi6k7qpayV7ywLSB\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIIG4wIBAAKCAYEA0tQAiQ13zWGZMV9YxFo2H15yERrkr8KD7z6QheVeatc2+5X0\n" + "m5/+/o95nmnt6Mlwa27U78QwkHBccOaNkSi7HGMopaxatEsF/S30MDmhqOi9R2Vt\n" + "MwDaa2zWH/s2wPHn8efn2/zG0jeXCzNsXFs4zNApaZmTJCHaDRUE12adwP5i6GvU\n" + "b978f27Cm0gnkSWBH9OdVnMunQkm/L16NI3ElvcDEEJbqhX2eswHenbhw//LiR1E\n" + "KRtHEjWywAq5AeHeYNH+2zjff59SGD6Bn+W2vPKBhSWCyFDPGRfcYeCX2LFM7+Xx\n" + "0j+GLzBnkjBhEgdsdLJ7Bt8aDToUJScLxeePoOmL9e0bec20debwF0G/7QMlwRgD\n" + "jV3sd3u+5RxRCeOh8Xqfbs/tij7tnU93orhcMzGjcn5XZ6WicyimuTruNznhKhNp\n" + "6vmizCpwQAroimaZGV7F/8nvHInTZfpNH/+b++gYbddkH+MouxOXcAEUku6vN0Jz\n" + "DgA4qj4Tw7dffXSDAgMBAAECggGAVD3oFNtv0n48I1FQ++x8Ed7AP3t6g4x7AX8D\n" + "aq0zJAfo7XCG9CRjVL5pv1XefZT4OcVoioHfUefD2E0XpjgbRAWPOVv8Rmxv8TGK\n" + "kDaHFSIid8PcdXPS0vgDO3Y686/1mWCr8eg4XclerlgW5XSB5r0KvyphdB+erHmI\n" + "nLVhNbuwM+TaVvVH+Xd9hWS4grP0u43oIaIWryL4FCd2DEfVlOkQrU+GpxjtizW5\n" + "i0KzhYjRgHFUSgSfSnRwf3IJaOoiIpOma2p7R4dVoQkVGS6bStqPcqSUGVxH2CLu\n" + "TC7B0xZZs2xq6pLVWYXh/J79Ziw76+7qeMwFatzsUPtB6smQvR7016BThY6Cj+ui\n" + "KgTCZGpbb30MCn9/px8P2jXagA9fnPzf31WkdbsnjrYPNe6kkP5snJtz6k3cYex2\n" + "P8WulCS23qjCdVoUcoSDzPiaFtnPR/HcZDpTYuxKuUMoQrqsmRHeF/QRvbXkKFQC\n" + "Kudpfna5CAIT5IaIWwXQp0NfpnNBAoHBAPcnqz2uZaVZO7LiZEMc3cDfiPTp2vhf\n" + "VRYNyvTZIYgAox8k49waEQq6MyD5N2oWyRjWsQ0ta/BqJgMLoG42oyDntp/HGhZC\n" + "SxLQEu4ursFsCE32I4nyt7DD5erzX+H6folRq2BelL6ISwdr1g1wJZ3cCrwGbG/P\n" + "7MUYtSo026K9iXCqv9t7Q3TYe7yECVrxqbOu++C2df8IodehUm5wQZTsysBDfCHZ\n" + "PT9m4Qfaryq/u4N5w8nCt/Ep3JkjqyJL4wKBwQDaX4WbwL6ipyt6k4NZ6dEe0aLT\n" + "yKowO0rAWckr6WbA6kFBV2JWPswdV7gCqSOaae+UVc6cpw07jc39vsFNFGDL6OfC\n" + "HvmjQ2HQ/Mf4RjNTSt1rYpiB7DTqtLCys454OHFxo0UinXUc20+timroLEJbZJ23\n" + "upgAvico9zgCyjiwHoEVCpwZerLcLJk44mSGANiBLMo6YfyWj+PfLOeXu5rs4vhC\n" + "K0JBPdIzXHKwv996qFpy8xBatfO/+CH2NR/D1uECgcB8mATdbWNUfa14umQs6Qpp\n" + "Rsb2IEYA2547Jezgje03cIrLEn/D32gj7kYEI15qHt51pRVQPUuiwQA0nNHdfbGy\n" + "ztzjoy1ldzn9W+OPKv1yCJIPKzwzOKadd8QaM2Jsuyi69O7eABAgFPkt3pDj6Vst\n" + "P1Yx/1L+8uS7X39ErazjV4VHxOw/Kt6Qsul92VoV/Km+KUJUv+awEJv15h92CSUm\n" + "fFChp+OV9LvJkIV0vit783gGCYZH2d98tcu9b5vACF0CgcAZM0rM5ZpaVOZcl+dh\n" + "me0LHHAo9pBFTqJavkHL8nxsKNxs+POdNlQB0tymWfSE3lLKkHhudYy+Yafy72+J\n" + "QJ/HCFKugTqXz6/bGUDOcvN7WjlhKhilbafRqhZ2GOiJESJuVcQlsXwRX3G7eizK\n" + "LElgGKVmzX67HzaPsK/jCokuMeb9kaLgAdvgMrlf6ihlmnVhutR/lk065tIKMDlt\n" + "tjWzvqGdqTZVJxg52yJVKV9V3VXKzCgH/9VoQu9QZWMMC6ECgcEAu2lYMEfbrTYS\n" + "u2ukovL69EnxUfQ76f8/cs3gVsOWRxPN6MFe8pR7lC03orHckGdwVF0uUSbek4F7\n" + "vmZxewPQvVWntGfyL3uhln+xyJbfd/a4YThTDzXIy++jdrKGCVPc9Z+XPWJyc5qM\n" + "fA7FxB9uBfVyHKa3LIsuvyFtSKF38pEVMrL4kTnB++Eg536AOZbYB351dMi0qXzN\n" + "Ljyi36ud0J5l00OZAanLPw7dklZOTYNguCDRhi6k7qpayV7ywLSB\n" + "-----END RSA PRIVATE KEY-----\n"; const gnutls_datum_t rawpk_private_key2 = { (unsigned char *)rawpk_private_key_pem2, sizeof(rawpk_private_key_pem2) - 1 }; -#endif /* GNUTLS_TESTS_CERT_COMMON_H */ +#endif /* GNUTLS_TESTS_CERT_COMMON_H */ diff --git a/tests/cert-repro-20170915.h b/tests/cert-repro-20170915.h index 66d7f87fd9..77a94f084e 100644 --- a/tests/cert-repro-20170915.h +++ b/tests/cert-repro-20170915.h @@ -1,384 +1,387 @@ #ifndef GNUTLS_TESTS_CERT_REPRO_20170915_H -# define GNUTLS_TESTS_CERT_REPRO_20170915_H +#define GNUTLS_TESTS_CERT_REPRO_20170915_H static char client_cert_repro_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIILITCCBiegAwIBAgIJAMHDrh3rcjmCMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV\n" - "BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX\n" - "aWRnaXRzIFB0eSBMdGQwHhcNMTcwOTEzMDkzOTE1WhcNMTcwOTE0MDkzOTE1WjBF\n" - "MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50\n" - "ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIFBDANBgkqhkiG9w0BAQEFAAOCBPEAMIIE\n" - "7AKCBOMAxa5Is252x+Q0JMEZoU2DTZVqTPQMFfkv9bLjFCrbtUQCjEB187oPh9HE\n" - "vEqkuC5hVl2H+kPa7u2sYrthPNCdMXd/kVAmSE9iS7sKuV8Z9UERHerP0tp06948\n" - "WpsuDe4iUsKzDLkQwT3x3pnzj0f7WjQkLBx7nr533JEoKpU0Kq6Zh5UHSapJdZ8j\n" - "0y6sAZ9QDYIHvBkXM+L6gsZUOV7dqE5+71e+o+upUZoRkpwowckIjvttCKmoaUSf\n" - "swBm8p9c/8Gwaw+TW90/NiAgjllcu+ON0cFEG/OecmtnfYpIzF14M8eW2QjOA7K5\n" - "1PP2EIYM6sJzZ6EUnCUkLHg8tVyluGNIU+0/pcCK3PK0APahKCLQy0KINcYS8omP\n" - "HUgiXWZLns2WrvJinkhcDqDhIDd5F3cGLdzaps5NKmgRNpZJFGC4qAOj0MFqkU+3\n" - "Lyq81fEKcmrhsATjVptvNDp3/gFiJqNry0YCmS3QnbokugCKPeWcJZyXf9QzVlC/\n" - "NGZGQXN0ncMUkCDEbQcsbYz079Tu4h+/PMFrIoFTqc4DnwbTNOpgnlMHdOZIhwl5\n" - "2lSRjnp/VjyJePpj3Z17eVboVZPs2qcukdCtjUPBZ8+ycIVeDf8aHtu69duS0nCI\n" - "D3zXb7vOtdqcQ4tHY/SmNEVK2wAXZh0e2TUM2PT3OpCce/TBf+u2Rh9t9btv75XI\n" - "8QbY68SlZUTnFZELsE7IPDgdwIERXiIOMfmTL6XNBAkmWEsVQBfHiP55d5B4b/3p\n" - "niQ3RhBr0X8pYh8m0HAZyFGKIU/8egHPEH6EVFQlbzmG/ubNb8JGNwfiATjbr6BW\n" - "L/aF/4lxqL1/gOQ9dtZvK4tys5dIXcSN//CRE/rhUCCl+kg7DuXd9h/xg1QcnnkI\n" - "GymUb67lNFXZx/all9H08ApB9ldufcwaFvWhc37sGWTnaLpEnxNNqlPAr9G9BHZA\n" - "tUezrGSx7+YRJKH61xevuomTeMX+T1HlO/YSKoX2R3Qk9ClWQzrT73cCYhEai5bD\n" - "FO9MX00hRUfXBKl2u8GEzMzwN/1oSWuXMYQbW5NP+UAchBi82ihR2zg2S+Wzl4NC\n" - "Wr7vjwNXaj0e1UKwCxk2ypGx7dX/URe9skttZgr9va8NrW6aNokiTgG6BKq4sfjv\n" - "bqZ3+uAiPg6QnnjLEGizfVGno4+ufky3y5yc3MIgLvrxo8IhHp7iXqf5ebPBdyYo\n" - "BuAhERp7CDBcIDoOFW2xyljwTwpadMCmC2rmJmuwNvxKT1r9EZ/jiqwiVw8zuhYc\n" - "P0LTM5B+OlDrOFVBW9zRF4lSKX30/cR7XaPlGS6WbYTsuuJeUnWsS42jrQiOQH88\n" - "x4zrLcqwkchLl5SBw6ywS0RAszBI8OkHzFmbBIr6Q0vgmfy+ugd6ssv5Ec8Imfg1\n" - "UQdBWclzgWppb8JFBTjY8keqt9bgVfZfV+cOjuMTqOdHP/eu4n2h/6fECwd4sk12\n" - "fyesKgVbtMkMXOkTUCeGIstsrvRX7BAupRISXbl+gAK/Ew0kB4YioXI51FNVO7eI\n" - "kEkZIdWLfr9J2iSxiOuOlghYc4v+CJOFW6/DIBhK96Ih0ygteztuJ4D+GBXXx7h4\n" - "mHygdAk6zPQtZ+nbz9qPOl0rS3F6XOmR7GgcXX6Zxfpj4Afd/7XFR3IntqlHbqNv\n" - "SkkZcIpiiwkCAwEAAaNQME4wHQYDVR0OBBYEFPfXnI4wJZG2AzoMj5AbZHoiTHp9\n" - "MB8GA1UdIwQYMBaAFPfXnI4wJZG2AzoMj5AbZHoiTHp9MAwGA1UdEwQFMAMBAf8w\n" - "DQYJKoZIhvcNAQELBQADggTjACd/BFFw29X5lkQA+o+NqQlkoKhFMjReZgkt9ou8\n" - "zSEhAbbrVMdljUjRAbs0FevIV23MJRv4st//JWl/H/OcUHYfHwTkYD0SZNJ2BDvM\n" - "9K4ItGvwBlYilPxcwQmFCErjJuI164bXDHWEcc69XXK9cfKhV4g8JxEQptE5mHPi\n" - "RcFCvN+Z2h80+c+M6xUGHRUIUHLdih9pOimhwT8msKcLBT3IcFcaBj8KO2Lr6aLK\n" - "/rADUMObkfBF1rMMOUo07GX/bJjt7V4Jj7v7G9OhIh+//a9LVE8sYWzoqAf/hBDE\n" - "vrX/5JRToUIQl6bxaVyDnCGdrUh9qfiRC3sNVKnWksGdPked2V2hUonr2UZZy4E4\n" - "feDcICkeZ9cUvIBmi+oPfWJnQ7Hb3HBToZG4lvsO1EIRJDNv3vXz9HcRFNNkvLE4\n" - "Xidvs/v1e2nTemGFzDyV1hUIevXza4eydgFDrjhWdHFj6HMNaJ0WXINBQ4Vl9AW0\n" - "X3BuPZC9TbLQlUKfJz9GdRjuj9eQtA0pEeToB6ySYePeyQmqTEdO9ufYoa1L0Sdt\n" - "ueOGqQW9BD55sb2lbh53TsyHPgklYKYJ/fJd6Df1ox4DIeFZ/sCTp7GMtgPizcA0\n" - "OYOtamtFL3upLQsr8hu1NWmdX3/qXYUycpt0W0g4F3bKILk6O4gqNYA7AOEWPY7B\n" - "hRD84fU3jHjDfAc2TbL/Zc/54F33SM/NA1WmkYKThlTRy2VQ7yhZKkiluapQ94BL\n" - "umMfyRPSUSNnWJzPLKoZ7701pR2Pc0AWY15zcCuUsNtB1vAnmAeOggBvzwc4xshc\n" - "g1E/VSYXID0Fmn0IF4ZLJdOK8pA9ae5dGj2kmk8Spw/wSSHe+dGDL708L2/q19Za\n" - "rtDOAXLTzjUB/tinQuEk27LhrVKV7TY5mS/HR22glH8PVIZ2X86+9Ad/d2CqWJSV\n" - "ukuuXfzsUuO2ElDz74dH9U7jOYsulo0/0OKR9pjVmmDtAji+Hc1TlSjEOKyuCfqI\n" - "7A+3SorkrEFqWxmOb9Kv2Z+hE/+RF80k3CvNfD8taxIkGUyj8dSlytMitnzS/PA4\n" - "6EwE2Vxsm39CvcWgqSTAaYzC5pLZy3W5ATna0gU6em8bMpliNo4HrIKB6c27/ScY\n" - "OTYc0DK/cpREOFxz3C20agiRVCn7Vt+vdnBqh4yj/l5hhrlZXrn0iDyr67g5E8iL\n" - "enXeGhuOzIJw70OfB/WdVXkmopgBm9J0yVgL7UR8uN0Y5SQCy/4L26YOdxk/fmbE\n" - "bGfsS2AvFZZ4dP0hYmHQO2F0UfQ1iYe9R/cF6TqhtRLuVAXz9wbwNf+pCjJuhg91\n" - "WY9Lpo5onkoUal4e325xAASnsWAMoFnpS+D/VOPmOuWmnjAj8001ueXFCPKb8VK0\n" - "G1dxTZrZs0KPi4xrLSF/5L6n5H7VM6yRnX1BUun96lBzV45P3rAhCy+7r6IHMAqJ\n" - "VuM0+G/s9ZHRnmm3RwM4ufRGF+uSVzcBaVB0iPTXKWPDizBTgowa2CqVGmFalEIm\n" - "XPWqyhXwgctDCre4P0QYKSqoSaZ0aQaoPGZ10K3m12Pq69gmi6aRKhse7MkfQtho\n" - "+3Gix3f5m0hgDjp/v3UApfP+bAObOODGG+MhJJOBJlmZE/B1jwyJpV/YjHi2VRsm\n" - "GkcJOt7A+6vGf1zPNNoB+/fAd6B+\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIILITCCBiegAwIBAgIJAMHDrh3rcjmCMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV\n" + "BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX\n" + "aWRnaXRzIFB0eSBMdGQwHhcNMTcwOTEzMDkzOTE1WhcNMTcwOTE0MDkzOTE1WjBF\n" + "MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50\n" + "ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIFBDANBgkqhkiG9w0BAQEFAAOCBPEAMIIE\n" + "7AKCBOMAxa5Is252x+Q0JMEZoU2DTZVqTPQMFfkv9bLjFCrbtUQCjEB187oPh9HE\n" + "vEqkuC5hVl2H+kPa7u2sYrthPNCdMXd/kVAmSE9iS7sKuV8Z9UERHerP0tp06948\n" + "WpsuDe4iUsKzDLkQwT3x3pnzj0f7WjQkLBx7nr533JEoKpU0Kq6Zh5UHSapJdZ8j\n" + "0y6sAZ9QDYIHvBkXM+L6gsZUOV7dqE5+71e+o+upUZoRkpwowckIjvttCKmoaUSf\n" + "swBm8p9c/8Gwaw+TW90/NiAgjllcu+ON0cFEG/OecmtnfYpIzF14M8eW2QjOA7K5\n" + "1PP2EIYM6sJzZ6EUnCUkLHg8tVyluGNIU+0/pcCK3PK0APahKCLQy0KINcYS8omP\n" + "HUgiXWZLns2WrvJinkhcDqDhIDd5F3cGLdzaps5NKmgRNpZJFGC4qAOj0MFqkU+3\n" + "Lyq81fEKcmrhsATjVptvNDp3/gFiJqNry0YCmS3QnbokugCKPeWcJZyXf9QzVlC/\n" + "NGZGQXN0ncMUkCDEbQcsbYz079Tu4h+/PMFrIoFTqc4DnwbTNOpgnlMHdOZIhwl5\n" + "2lSRjnp/VjyJePpj3Z17eVboVZPs2qcukdCtjUPBZ8+ycIVeDf8aHtu69duS0nCI\n" + "D3zXb7vOtdqcQ4tHY/SmNEVK2wAXZh0e2TUM2PT3OpCce/TBf+u2Rh9t9btv75XI\n" + "8QbY68SlZUTnFZELsE7IPDgdwIERXiIOMfmTL6XNBAkmWEsVQBfHiP55d5B4b/3p\n" + "niQ3RhBr0X8pYh8m0HAZyFGKIU/8egHPEH6EVFQlbzmG/ubNb8JGNwfiATjbr6BW\n" + "L/aF/4lxqL1/gOQ9dtZvK4tys5dIXcSN//CRE/rhUCCl+kg7DuXd9h/xg1QcnnkI\n" + "GymUb67lNFXZx/all9H08ApB9ldufcwaFvWhc37sGWTnaLpEnxNNqlPAr9G9BHZA\n" + "tUezrGSx7+YRJKH61xevuomTeMX+T1HlO/YSKoX2R3Qk9ClWQzrT73cCYhEai5bD\n" + "FO9MX00hRUfXBKl2u8GEzMzwN/1oSWuXMYQbW5NP+UAchBi82ihR2zg2S+Wzl4NC\n" + "Wr7vjwNXaj0e1UKwCxk2ypGx7dX/URe9skttZgr9va8NrW6aNokiTgG6BKq4sfjv\n" + "bqZ3+uAiPg6QnnjLEGizfVGno4+ufky3y5yc3MIgLvrxo8IhHp7iXqf5ebPBdyYo\n" + "BuAhERp7CDBcIDoOFW2xyljwTwpadMCmC2rmJmuwNvxKT1r9EZ/jiqwiVw8zuhYc\n" + "P0LTM5B+OlDrOFVBW9zRF4lSKX30/cR7XaPlGS6WbYTsuuJeUnWsS42jrQiOQH88\n" + "x4zrLcqwkchLl5SBw6ywS0RAszBI8OkHzFmbBIr6Q0vgmfy+ugd6ssv5Ec8Imfg1\n" + "UQdBWclzgWppb8JFBTjY8keqt9bgVfZfV+cOjuMTqOdHP/eu4n2h/6fECwd4sk12\n" + "fyesKgVbtMkMXOkTUCeGIstsrvRX7BAupRISXbl+gAK/Ew0kB4YioXI51FNVO7eI\n" + "kEkZIdWLfr9J2iSxiOuOlghYc4v+CJOFW6/DIBhK96Ih0ygteztuJ4D+GBXXx7h4\n" + "mHygdAk6zPQtZ+nbz9qPOl0rS3F6XOmR7GgcXX6Zxfpj4Afd/7XFR3IntqlHbqNv\n" + "SkkZcIpiiwkCAwEAAaNQME4wHQYDVR0OBBYEFPfXnI4wJZG2AzoMj5AbZHoiTHp9\n" + "MB8GA1UdIwQYMBaAFPfXnI4wJZG2AzoMj5AbZHoiTHp9MAwGA1UdEwQFMAMBAf8w\n" + "DQYJKoZIhvcNAQELBQADggTjACd/BFFw29X5lkQA+o+NqQlkoKhFMjReZgkt9ou8\n" + "zSEhAbbrVMdljUjRAbs0FevIV23MJRv4st//JWl/H/OcUHYfHwTkYD0SZNJ2BDvM\n" + "9K4ItGvwBlYilPxcwQmFCErjJuI164bXDHWEcc69XXK9cfKhV4g8JxEQptE5mHPi\n" + "RcFCvN+Z2h80+c+M6xUGHRUIUHLdih9pOimhwT8msKcLBT3IcFcaBj8KO2Lr6aLK\n" + "/rADUMObkfBF1rMMOUo07GX/bJjt7V4Jj7v7G9OhIh+//a9LVE8sYWzoqAf/hBDE\n" + "vrX/5JRToUIQl6bxaVyDnCGdrUh9qfiRC3sNVKnWksGdPked2V2hUonr2UZZy4E4\n" + "feDcICkeZ9cUvIBmi+oPfWJnQ7Hb3HBToZG4lvsO1EIRJDNv3vXz9HcRFNNkvLE4\n" + "Xidvs/v1e2nTemGFzDyV1hUIevXza4eydgFDrjhWdHFj6HMNaJ0WXINBQ4Vl9AW0\n" + "X3BuPZC9TbLQlUKfJz9GdRjuj9eQtA0pEeToB6ySYePeyQmqTEdO9ufYoa1L0Sdt\n" + "ueOGqQW9BD55sb2lbh53TsyHPgklYKYJ/fJd6Df1ox4DIeFZ/sCTp7GMtgPizcA0\n" + "OYOtamtFL3upLQsr8hu1NWmdX3/qXYUycpt0W0g4F3bKILk6O4gqNYA7AOEWPY7B\n" + "hRD84fU3jHjDfAc2TbL/Zc/54F33SM/NA1WmkYKThlTRy2VQ7yhZKkiluapQ94BL\n" + "umMfyRPSUSNnWJzPLKoZ7701pR2Pc0AWY15zcCuUsNtB1vAnmAeOggBvzwc4xshc\n" + "g1E/VSYXID0Fmn0IF4ZLJdOK8pA9ae5dGj2kmk8Spw/wSSHe+dGDL708L2/q19Za\n" + "rtDOAXLTzjUB/tinQuEk27LhrVKV7TY5mS/HR22glH8PVIZ2X86+9Ad/d2CqWJSV\n" + "ukuuXfzsUuO2ElDz74dH9U7jOYsulo0/0OKR9pjVmmDtAji+Hc1TlSjEOKyuCfqI\n" + "7A+3SorkrEFqWxmOb9Kv2Z+hE/+RF80k3CvNfD8taxIkGUyj8dSlytMitnzS/PA4\n" + "6EwE2Vxsm39CvcWgqSTAaYzC5pLZy3W5ATna0gU6em8bMpliNo4HrIKB6c27/ScY\n" + "OTYc0DK/cpREOFxz3C20agiRVCn7Vt+vdnBqh4yj/l5hhrlZXrn0iDyr67g5E8iL\n" + "enXeGhuOzIJw70OfB/WdVXkmopgBm9J0yVgL7UR8uN0Y5SQCy/4L26YOdxk/fmbE\n" + "bGfsS2AvFZZ4dP0hYmHQO2F0UfQ1iYe9R/cF6TqhtRLuVAXz9wbwNf+pCjJuhg91\n" + "WY9Lpo5onkoUal4e325xAASnsWAMoFnpS+D/VOPmOuWmnjAj8001ueXFCPKb8VK0\n" + "G1dxTZrZs0KPi4xrLSF/5L6n5H7VM6yRnX1BUun96lBzV45P3rAhCy+7r6IHMAqJ\n" + "VuM0+G/s9ZHRnmm3RwM4ufRGF+uSVzcBaVB0iPTXKWPDizBTgowa2CqVGmFalEIm\n" + "XPWqyhXwgctDCre4P0QYKSqoSaZ0aQaoPGZ10K3m12Pq69gmi6aRKhse7MkfQtho\n" + "+3Gix3f5m0hgDjp/v3UApfP+bAObOODGG+MhJJOBJlmZE/B1jwyJpV/YjHi2VRsm\n" + "GkcJOt7A+6vGf1zPNNoB+/fAd6B+\n" + "-----END CERTIFICATE-----\n"; static char client_key_repro_pem[] = - "-----BEGIN PRIVATE KEY-----\n" - "MIIWOwIBADANBgkqhkiG9w0BAQEFAASCFiUwghYhAgEAAoIE4wDFrkizbnbH5DQk\n" - "wRmhTYNNlWpM9AwV+S/1suMUKtu1RAKMQHXzug+H0cS8SqS4LmFWXYf6Q9ru7axi\n" - "u2E80J0xd3+RUCZIT2JLuwq5Xxn1QREd6s/S2nTr3jxamy4N7iJSwrMMuRDBPfHe\n" - "mfOPR/taNCQsHHuevnfckSgqlTQqrpmHlQdJqkl1nyPTLqwBn1ANgge8GRcz4vqC\n" - "xlQ5Xt2oTn7vV76j66lRmhGSnCjByQiO+20IqahpRJ+zAGbyn1z/wbBrD5Nb3T82\n" - "ICCOWVy7443RwUQb855ya2d9ikjMXXgzx5bZCM4DsrnU8/YQhgzqwnNnoRScJSQs\n" - "eDy1XKW4Y0hT7T+lwIrc8rQA9qEoItDLQog1xhLyiY8dSCJdZkuezZau8mKeSFwO\n" - "oOEgN3kXdwYt3Nqmzk0qaBE2lkkUYLioA6PQwWqRT7cvKrzV8QpyauGwBONWm280\n" - "Onf+AWImo2vLRgKZLdCduiS6AIo95ZwlnJd/1DNWUL80ZkZBc3SdwxSQIMRtByxt\n" - "jPTv1O7iH788wWsigVOpzgOfBtM06mCeUwd05kiHCXnaVJGOen9WPIl4+mPdnXt5\n" - "VuhVk+zapy6R0K2NQ8Fnz7JwhV4N/xoe27r125LScIgPfNdvu8612pxDi0dj9KY0\n" - "RUrbABdmHR7ZNQzY9Pc6kJx79MF/67ZGH231u2/vlcjxBtjrxKVlROcVkQuwTsg8\n" - "OB3AgRFeIg4x+ZMvpc0ECSZYSxVAF8eI/nl3kHhv/emeJDdGEGvRfyliHybQcBnI\n" - "UYohT/x6Ac8QfoRUVCVvOYb+5s1vwkY3B+IBONuvoFYv9oX/iXGovX+A5D121m8r\n" - "i3Kzl0hdxI3/8JET+uFQIKX6SDsO5d32H/GDVByeeQgbKZRvruU0VdnH9qWX0fTw\n" - "CkH2V259zBoW9aFzfuwZZOdoukSfE02qU8Cv0b0EdkC1R7OsZLHv5hEkofrXF6+6\n" - "iZN4xf5PUeU79hIqhfZHdCT0KVZDOtPvdwJiERqLlsMU70xfTSFFR9cEqXa7wYTM\n" - "zPA3/WhJa5cxhBtbk0/5QByEGLzaKFHbODZL5bOXg0Javu+PA1dqPR7VQrALGTbK\n" - "kbHt1f9RF72yS21mCv29rw2tbpo2iSJOAboEqrix+O9upnf64CI+DpCeeMsQaLN9\n" - "Uaejj65+TLfLnJzcwiAu+vGjwiEenuJep/l5s8F3JigG4CERGnsIMFwgOg4VbbHK\n" - "WPBPClp0wKYLauYma7A2/EpPWv0Rn+OKrCJXDzO6Fhw/QtMzkH46UOs4VUFb3NEX\n" - "iVIpffT9xHtdo+UZLpZthOy64l5SdaxLjaOtCI5AfzzHjOstyrCRyEuXlIHDrLBL\n" - "RECzMEjw6QfMWZsEivpDS+CZ/L66B3qyy/kRzwiZ+DVRB0FZyXOBamlvwkUFONjy\n" - "R6q31uBV9l9X5w6O4xOo50c/967ifaH/p8QLB3iyTXZ/J6wqBVu0yQxc6RNQJ4Yi\n" - "y2yu9FfsEC6lEhJduX6AAr8TDSQHhiKhcjnUU1U7t4iQSRkh1Yt+v0naJLGI646W\n" - "CFhzi/4Ik4Vbr8MgGEr3oiHTKC17O24ngP4YFdfHuHiYfKB0CTrM9C1n6dvP2o86\n" - "XStLcXpc6ZHsaBxdfpnF+mPgB93/tcVHcie2qUduo29KSRlwimKLCQIDAQABAoIE\n" - "4itvYAoM+4xwWAS7aSZIIdGqQvElroIlfqQ96idEQ4JQrz6h60jiWQc+0DuPKyJN\n" - "DpYrdvVGc5SMJJSNF5CFRgTYfO8w7Th2OOLq9jBE9S8uXNR2A7QQzCAHdLtz3Wqy\n" - "KFiG71CcWVIcikifCyUwa8omKsyGdaMrtqqAOpMgtZWrR5DC7hcBk6KElRqR5rl0\n" - "h+Jv78MkwDRmayTQ7zCr54hTtxBf90ONRGbps3LDXTE3Ouov1IVSwe5fZbevHu+w\n" - "lH6d0GW1xmso8fqylHSyre2a0k6EaLK7lNUPRG4RNG2zG/ZEpKCLjrjBTJO+BxMa\n" - "YTwz/aeHfT/R6WDcCnrPIJqjNgE64AFLjTd/HI4Zos9u1vHSbJtkKkWgdBG7B9H9\n" - "6B+8jJ9kIscknxWXw9+QUMsXHAR3wpNkQRBQTXfxDZ2souZH5na4CPJk0ZtLiLJ5\n" - "hBIf6fcDG/CrtoODVVo6c5aJ0eWYPHnr1yrQ+8Di3X08NlMNVTyBI8aTd2/MCSPY\n" - "eocvlhUVHhPWv6xSjH8mClclIp/239N1Fyz4V1NZ7I5z8UbYd4r4DnedXWjbrB/i\n" - "SphoNMygN9E6CSdgMSyclC53DYR8laW0fYqR2GNg6omow9SD81CSLnCOyVad17h1\n" - "S7YpkqxErisIVnylvQzhuEJ3o4+WWHxTVv9HRxr1bI7u+93sify0cqPyBXTwTDmB\n" - "u9XEjgHvHOJgbR7ONbtWoLpOQVA5xl1x0NpSKFq+JK0wjGdNguMCm3QAFpTo4DxE\n" - "32voxO8KaTzjZMbfI7quGIu2WgkFw43D73XA7iiUDg/AYC03TjF2jM7KLCXdxROg\n" - "35gRFl1AFRfTV39VwxN/pMGNx5mVgxsQDtwPmrbv+rMlTOgn9gBAXw+9P5ClV6bl\n" - "I6BdmNVx2RLf1EnTBYeq8FqEcSX+AkG5+TdP5Oaq/pNdP5s0UzoxI2NyzqZF24kH\n" - "F8ixnTQma8Q0s6TapR0OqLaNCj4EN/jnb4FbKS8h9oGmJTUy6J8lxraChQkUhA5t\n" - "yBOM++NmiaUJQc88uZMAI7+6kBDEUPjZlhJTO3iaWJVZm7i0IErySHQ+Jj12sPuo\n" - "nFtSh3GTjWDGZANufiTy0KJDopTYZp3m+iv3/5KhkbLT/gdM+SoP4mGRVC7ZYbqd\n" - "ibszOv0lbN6zLcQjd7MEMMk4U5N3hDzo+Jfg8zbC/Q3A0GhgDDVhmywL7uyMCj+D\n" - "+JW0T+bqsxbCUHJARSgZMR1tE61GJWJ8M8Nj+7WLeYAnzo8PrrDS1rHTsav6YBUh\n" - "3sjg12UG5nAhMUC+jiL75OOTpzqkzSvcB7nGhLo+0DERtkKuNeUOnfKnEA4W/p5b\n" - "QtEdTlTPMPiaFWLaQ6iw5i+rMJgNJp5oUxe5NILf4aMI3OgjX3yZwqo/vo66EqZG\n" - "9qo6isHr4fj8jy9De5XnECeJyEQMl6Yv4KjuX8t2aGJnAWEUMCEtVJw3Zi+0O7wE\n" - "OPoRBp8noSfPsNNww1nsK85IoaYdcS0fmisom36TOo3pKTZc6ZcpQ4sPUrMJ9aW1\n" - "/UC7lptQcTKgH4FORICXNV/xojIPCFQD3GTZofCFlvebGanv7pzgGp1N6fzuO2eI\n" - "b5bjvy4BNRiV106ltidEZXG2+o6zVNsdNI5zvNNDceFx8mf7EJaVaWOrpp9LEFLS\n" - "ESUBAoICcgDrL2cZ1Om4iMgIAS00cYO9nchWx5s/MdDF7vZgBACjNmEBZoqMpNZb\n" - "NYjbGcIfj1WnWrp7jMoyyWbqoAaQAMyUWTvnD4ftsOAASVbWUpv1FdiqTRlBZVva\n" - "Gqy8rSyZa2H8Pq97mWA9w1zlZOrJMtybpk28iyjRy5TZSV58OM5qO6KlhCy+HHlP\n" - "UCOQZ+AFLOB1BPI4D64uKp9kzadN1g4EQMvF8WnAupU0k20h8CDIUdctxnny62X0\n" - "J5aPhsq04ci1TU+n6WAM/yStTcUAd+JZua4kXymlpDr2zSsqtgz0Axcbe0FVYJG3\n" - "uvDco/fgyAEa9M4gQt3oatQ0LeqqzLM1761JbnGQikExQM8KoCrfGQ6MUzYyL7KU\n" - "VXzuXNvvZHyT5NzKrxaGTcDlY0vvqrxei17kSjfBdss7eH+Tqytzg4SyQab0NvnN\n" - "W5+Rw0opol4El+LRFARERXp+HerFaU3Er8pZqlpnDA/XSlEy5jXJcwCMWABTuuvw\n" - "5nuTw9l1SEpnYm7x/x+P73gCUdOMeGX06w7k2Y3JnUvifJUrh9axMjCIXAMLJM7a\n" - "1EF7reOoJtVN/7slxh1eTAx3xFAZ+iDte5yEqNK375SlVWMm2BnbvG3H50fCx9Lz\n" - "KZ8cOKYKNZ5Q7iImNQ06jjoQzHAI4oJdvjutvm0TZSjDFUBHgcFTgVdZZIXweJSi\n" - "63QRDQdjyoaB3jowDRwP/AWI2o2QzapmG8zEB7gDafbam5IROf0gcj+/rUo9Dlor\n" - "QMI07d0qpHhL+VAcn3b8MI69rv4moB8Kf9RqdRyVJ3hua7pQ24B72KjC93noUrW0\n" - "lILbi65C4AufAoICcgDXLSTE9lkyrSr1Lamb3ag0SWbernBtkkTJPktloD6drQg7\n" - "lsXAFaV62SazBmg2ZtayB9D9HUU276F0sWQbxBD9hO/WGnVOMT7rgu5WMuUKid+H\n" - "oWj5oT+KMPccoPjrsBZHlXvpgtb8M5dp+l1HyRR1YN4J6y6oEhRDoWAApDgA1B29\n" - "nuICrMlMFE0TkNFz7YsiMMkDYAVGbjjPhCJu4eD698Ktopl1BUAKJwfI+6mxDDSu\n" - "+F6z2/0alJYo5Qb6+YsUSOpjCyRwQbahO/3drb4Gv1B5DmiHDhSZ5UwzUQbHdBAE\n" - "9PeColcWJtW5msRuxwZkbE4QGuWzQyBGgmy8bF0hpcaE0nbn0RQEqHHngcrTuu1l\n" - "zte9k8z6BLwYnVFcJyfTjGWqEr0Z5M8gpVNY0OHxuqHTpXMwFigzwEqH5+EHtGGZ\n" - "NN/daeUTyJgU+OFnEtoHfDCRoGrNbW2LgifJeOxvGvczVcF111jfuSehoVvJG1kl\n" - "1iQXwj22HHaDvJFQRDgEMRXnz98UikQwLolfSJF4qKENPdhWq3jmVCjdFLPuvxq4\n" - "q0fGLa19XWPfLZ/Fw0Oyy54Fq8Lm67EkeLouAB3RbSg9fwBNJw0p5XTiHykR5pBa\n" - "b7mkch/+GPrhuA/tsO1U1bFn1ykGswSTiUzdtBbYRXuczX6SoIuJgCqwI2RIZ9cS\n" - "k4bwnAHEcLHlZ2pzaGNRfEjKUnNgXsUo6txi57UXwaugvQ8eQiDQgYXKlj6jNden\n" - "2RwXhBHPFF+FRh0PGcGKOpqjptb3r/EUl2C7RDsXLClhJUpDDWb/0nnn175ODSeM\n" - "DKcHf6d+CBh28n1mumhXAoICcTAiOoKx7cfDztS8kOjr1p+nPEpufdqYMndgKfKK\n" - "vyqoRYBI4VBZqDlwonrdMbrN1iTzT7lbnkJ4r+STLeSpFTXDcZwftJ00FxRX7jrd\n" - "G2g0uWxZbTLSMNNZpELVWoxnyt0aY0XzpRve8RNN7TOSgk4k4kIVZRxTAzrZZkoc\n" - "QjrBy87+Vz3ti/Jsn2q9p77HaYTppz1MEEUImijCYlxu092Q+WOgvhkg1sq05aAN\n" - "ilgVT+nhdjH+dZZbx9fGKZSNpUtd8FCYVf0y9um1Qf2Pi7b7ZqWxCFALZbn/Ubdj\n" - "HRGP1FnehweXRRuKWiN+N4w8wuUmd01pAgvAWX/4ac/dJ0yBqkCeJwYDFcaj0fwF\n" - "veB9O1oC6dOpqW3sdS4/uQ+szEZkj7+3x+9i2HjaMr9xfS4Ibjpg6jphOsUIK2wo\n" - "mzMAFtd40lenLMcX2ne1tWcCASYFg/lwlFL4uVI4g0U2ASGhLNPfJrNyZ4eTgTze\n" - "muGI9PLETATW+9UJBv++FLKJQhkYr0Y+BdKqmzA2WQql1ZAjz5+M2xUJaW+IOet3\n" - "2LvZXs95rXHJbcChsmlCtJZEpGFbVo0rl/UlsWONvSsj4ztXkjggaUgV86FG8Y0Q\n" - "q3IqhXllX22BAi6cNSFMgscSJD3CDyEsuHFkjIPFo6Rd33qaJZKwp5hRmt8aaVZ5\n" - "Ov0BOsRj63nE4/7YG6Alv35wA8lulxAgjr7CwMs6l8CsJxTQ2b7BKashM9GYB3QZ\n" - "HzJVz7BGIiyO1GuHzHeSuzIwCSLbesbw6CRDN+OgfgmfudqnQO0s3NW2B1LqH27P\n" - "DePK+vc0OTIQQ3oa7xFJ7DdprVcCggJyAM8itfKk8tjFukSq4Esa5YDv6AcVBUV1\n" - "OKJBRXNe/ufqWbKDQXnXXKUVxRsxX8B+3s4imBwQwUBRDau32Baid3iVMAt7DNFo\n" - "tpkgQS7Zb4LlljiKOPOVNgVhfYAhtX2s1MW0MMRpH2tIfsmWKZWhDACybww9SXyh\n" - "asBv6Gq1qvOhPb/74rWQf3atVEUxc2+VjAotzFNja7CRCj85g6wZ5Omy98UOcYsk\n" - "srETQXtIR+IXTd/hV8jsTIn531MepcmTzz6HspoFb95gY95yUb/EMNlt8ZmXNShN\n" - "dadwBBqiNVRrdcBP0LQAcrTwTW2OfunkzVJ+r+bw/Y3DYJ5/jw0Tg9OQMbpKoAwo\n" - "SIzzWjLxzr5jg4QtyaDFVtyXEjrftiJvzvbmgDdoMoFqsblLbSBidB6u+nkzG99+\n" - "dNTcluKdZRJ1oj5Jl/ccqViSEVSfANyoWRo7gsWtFyMJ5BoYARUBQxjxbGYOd11p\n" - "IDS9mFkPa7v8h6TUr4nvglh8rdnC/F+4S/Q9DElK4gRz1ZBMPBFtWhw8uEx27HsC\n" - "NjADdBLeixeY/7AlscIk1o2ICUweL1/AyLqlKEltPwHsgWoKja8ajZm86q/IQhID\n" - "NbjPGeVS+cYxnWRxiNO0yPdiNKB0/2BgoRa5Xz4G8YdxbUZZNZV2d0daG9SmPOIJ\n" - "ikmjB3TnnPHWhENtoMieZVUk5xteoirWokUezzN0i3yJvmHVNLJBOyLTXNQvKw6F\n" - "ufD9vj12xHV4r1D0vwYkLMCbbBhvlimjMZxPLe27/dQRmpGn54Zd+EQmTu8lZoeF\n" - "r1E03AVCuf+IyjkXNPMS/7ljManPZMgvSaECggJxdDsg+VIkO4id44ATLjZ006oB\n" - "C2S+xktCmj1/GUXLwn4XkaWJU6C10rADD139hGyoBdWFZeHq2MCNJ2agKYqrPa6O\n" - "qt+GkIDbbQ1AtUqW4xEL3koMhe7g4CpqI0n07orAoqQQGvmrTqhNCOz3ftMQKtkM\n" - "qoiLwbdEU0X0s41vkCDxF52448ZMYQ5327kAa5mMG1lYrS7kQ9tLJ45z7RSw7Pan\n" - "tTi18cLE42kOe/wdaK/nakjNoIUcJC8VqYJ75IOnkxmMrP7wWpigHojLjjG2rCiU\n" - "qYwS+E5f+3WhESvu72DXjCClI/QQ5iQ9+BDtXzfzxVxpNicaAZtAVns/JPMzkVEH\n" - "A4efNXo8CwOMCyqhnKxKuprPAekDwjYyr6fI2iqcfb0TpnuAp9fOkjgkVZIuLAs7\n" - "gsyms9eniaFCGNLAwTkfEjxBVGP/5kSaka9w0Vj6g+mfeqEw2frD1LfEU5l2/F0t\n" - "iFYmtmgxpAnlWOF+Y6dlKqFwZbFiqzSZNMwzn29Lhx7hONJqzMzGhjk7heYwB7A8\n" - "8bloepcbvWcZJ/2dhmfsgk8CXVW22C0jB/nU2NpAcTki3TVAZ40cbt1fTdgS4tRJ\n" - "zR9OgLsjfuTo0LbEPbPDldytP1Xcdw+0hdxdYUv+G2UsdNKAcx+c+9VisogwQ5Ms\n" - "dUuE9B5EJO5cd8hz2w6SJ7Fe0uQHnXM0I+EtycCLcTjyO/ZMkQMZh7Yj37oOB+tJ\n" - "D2uAHdq0IHmBrEQWHOBuhwNNLtu90yfzT8hIPPmoY7ho+qIu+QhD65FLVIu1bU+3\n" - "nfEvcF4wdqMneAh+KlLyZbGSZdhZpD1YjP8cNvcO6w==\n" - "-----END PRIVATE KEY-----\n"; + "-----BEGIN PRIVATE KEY-----\n" + "MIIWOwIBADANBgkqhkiG9w0BAQEFAASCFiUwghYhAgEAAoIE4wDFrkizbnbH5DQk\n" + "wRmhTYNNlWpM9AwV+S/1suMUKtu1RAKMQHXzug+H0cS8SqS4LmFWXYf6Q9ru7axi\n" + "u2E80J0xd3+RUCZIT2JLuwq5Xxn1QREd6s/S2nTr3jxamy4N7iJSwrMMuRDBPfHe\n" + "mfOPR/taNCQsHHuevnfckSgqlTQqrpmHlQdJqkl1nyPTLqwBn1ANgge8GRcz4vqC\n" + "xlQ5Xt2oTn7vV76j66lRmhGSnCjByQiO+20IqahpRJ+zAGbyn1z/wbBrD5Nb3T82\n" + "ICCOWVy7443RwUQb855ya2d9ikjMXXgzx5bZCM4DsrnU8/YQhgzqwnNnoRScJSQs\n" + "eDy1XKW4Y0hT7T+lwIrc8rQA9qEoItDLQog1xhLyiY8dSCJdZkuezZau8mKeSFwO\n" + "oOEgN3kXdwYt3Nqmzk0qaBE2lkkUYLioA6PQwWqRT7cvKrzV8QpyauGwBONWm280\n" + "Onf+AWImo2vLRgKZLdCduiS6AIo95ZwlnJd/1DNWUL80ZkZBc3SdwxSQIMRtByxt\n" + "jPTv1O7iH788wWsigVOpzgOfBtM06mCeUwd05kiHCXnaVJGOen9WPIl4+mPdnXt5\n" + "VuhVk+zapy6R0K2NQ8Fnz7JwhV4N/xoe27r125LScIgPfNdvu8612pxDi0dj9KY0\n" + "RUrbABdmHR7ZNQzY9Pc6kJx79MF/67ZGH231u2/vlcjxBtjrxKVlROcVkQuwTsg8\n" + "OB3AgRFeIg4x+ZMvpc0ECSZYSxVAF8eI/nl3kHhv/emeJDdGEGvRfyliHybQcBnI\n" + "UYohT/x6Ac8QfoRUVCVvOYb+5s1vwkY3B+IBONuvoFYv9oX/iXGovX+A5D121m8r\n" + "i3Kzl0hdxI3/8JET+uFQIKX6SDsO5d32H/GDVByeeQgbKZRvruU0VdnH9qWX0fTw\n" + "CkH2V259zBoW9aFzfuwZZOdoukSfE02qU8Cv0b0EdkC1R7OsZLHv5hEkofrXF6+6\n" + "iZN4xf5PUeU79hIqhfZHdCT0KVZDOtPvdwJiERqLlsMU70xfTSFFR9cEqXa7wYTM\n" + "zPA3/WhJa5cxhBtbk0/5QByEGLzaKFHbODZL5bOXg0Javu+PA1dqPR7VQrALGTbK\n" + "kbHt1f9RF72yS21mCv29rw2tbpo2iSJOAboEqrix+O9upnf64CI+DpCeeMsQaLN9\n" + "Uaejj65+TLfLnJzcwiAu+vGjwiEenuJep/l5s8F3JigG4CERGnsIMFwgOg4VbbHK\n" + "WPBPClp0wKYLauYma7A2/EpPWv0Rn+OKrCJXDzO6Fhw/QtMzkH46UOs4VUFb3NEX\n" + "iVIpffT9xHtdo+UZLpZthOy64l5SdaxLjaOtCI5AfzzHjOstyrCRyEuXlIHDrLBL\n" + "RECzMEjw6QfMWZsEivpDS+CZ/L66B3qyy/kRzwiZ+DVRB0FZyXOBamlvwkUFONjy\n" + "R6q31uBV9l9X5w6O4xOo50c/967ifaH/p8QLB3iyTXZ/J6wqBVu0yQxc6RNQJ4Yi\n" + "y2yu9FfsEC6lEhJduX6AAr8TDSQHhiKhcjnUU1U7t4iQSRkh1Yt+v0naJLGI646W\n" + "CFhzi/4Ik4Vbr8MgGEr3oiHTKC17O24ngP4YFdfHuHiYfKB0CTrM9C1n6dvP2o86\n" + "XStLcXpc6ZHsaBxdfpnF+mPgB93/tcVHcie2qUduo29KSRlwimKLCQIDAQABAoIE\n" + "4itvYAoM+4xwWAS7aSZIIdGqQvElroIlfqQ96idEQ4JQrz6h60jiWQc+0DuPKyJN\n" + "DpYrdvVGc5SMJJSNF5CFRgTYfO8w7Th2OOLq9jBE9S8uXNR2A7QQzCAHdLtz3Wqy\n" + "KFiG71CcWVIcikifCyUwa8omKsyGdaMrtqqAOpMgtZWrR5DC7hcBk6KElRqR5rl0\n" + "h+Jv78MkwDRmayTQ7zCr54hTtxBf90ONRGbps3LDXTE3Ouov1IVSwe5fZbevHu+w\n" + "lH6d0GW1xmso8fqylHSyre2a0k6EaLK7lNUPRG4RNG2zG/ZEpKCLjrjBTJO+BxMa\n" + "YTwz/aeHfT/R6WDcCnrPIJqjNgE64AFLjTd/HI4Zos9u1vHSbJtkKkWgdBG7B9H9\n" + "6B+8jJ9kIscknxWXw9+QUMsXHAR3wpNkQRBQTXfxDZ2souZH5na4CPJk0ZtLiLJ5\n" + "hBIf6fcDG/CrtoODVVo6c5aJ0eWYPHnr1yrQ+8Di3X08NlMNVTyBI8aTd2/MCSPY\n" + "eocvlhUVHhPWv6xSjH8mClclIp/239N1Fyz4V1NZ7I5z8UbYd4r4DnedXWjbrB/i\n" + "SphoNMygN9E6CSdgMSyclC53DYR8laW0fYqR2GNg6omow9SD81CSLnCOyVad17h1\n" + "S7YpkqxErisIVnylvQzhuEJ3o4+WWHxTVv9HRxr1bI7u+93sify0cqPyBXTwTDmB\n" + "u9XEjgHvHOJgbR7ONbtWoLpOQVA5xl1x0NpSKFq+JK0wjGdNguMCm3QAFpTo4DxE\n" + "32voxO8KaTzjZMbfI7quGIu2WgkFw43D73XA7iiUDg/AYC03TjF2jM7KLCXdxROg\n" + "35gRFl1AFRfTV39VwxN/pMGNx5mVgxsQDtwPmrbv+rMlTOgn9gBAXw+9P5ClV6bl\n" + "I6BdmNVx2RLf1EnTBYeq8FqEcSX+AkG5+TdP5Oaq/pNdP5s0UzoxI2NyzqZF24kH\n" + "F8ixnTQma8Q0s6TapR0OqLaNCj4EN/jnb4FbKS8h9oGmJTUy6J8lxraChQkUhA5t\n" + "yBOM++NmiaUJQc88uZMAI7+6kBDEUPjZlhJTO3iaWJVZm7i0IErySHQ+Jj12sPuo\n" + "nFtSh3GTjWDGZANufiTy0KJDopTYZp3m+iv3/5KhkbLT/gdM+SoP4mGRVC7ZYbqd\n" + "ibszOv0lbN6zLcQjd7MEMMk4U5N3hDzo+Jfg8zbC/Q3A0GhgDDVhmywL7uyMCj+D\n" + "+JW0T+bqsxbCUHJARSgZMR1tE61GJWJ8M8Nj+7WLeYAnzo8PrrDS1rHTsav6YBUh\n" + "3sjg12UG5nAhMUC+jiL75OOTpzqkzSvcB7nGhLo+0DERtkKuNeUOnfKnEA4W/p5b\n" + "QtEdTlTPMPiaFWLaQ6iw5i+rMJgNJp5oUxe5NILf4aMI3OgjX3yZwqo/vo66EqZG\n" + "9qo6isHr4fj8jy9De5XnECeJyEQMl6Yv4KjuX8t2aGJnAWEUMCEtVJw3Zi+0O7wE\n" + "OPoRBp8noSfPsNNww1nsK85IoaYdcS0fmisom36TOo3pKTZc6ZcpQ4sPUrMJ9aW1\n" + "/UC7lptQcTKgH4FORICXNV/xojIPCFQD3GTZofCFlvebGanv7pzgGp1N6fzuO2eI\n" + "b5bjvy4BNRiV106ltidEZXG2+o6zVNsdNI5zvNNDceFx8mf7EJaVaWOrpp9LEFLS\n" + "ESUBAoICcgDrL2cZ1Om4iMgIAS00cYO9nchWx5s/MdDF7vZgBACjNmEBZoqMpNZb\n" + "NYjbGcIfj1WnWrp7jMoyyWbqoAaQAMyUWTvnD4ftsOAASVbWUpv1FdiqTRlBZVva\n" + "Gqy8rSyZa2H8Pq97mWA9w1zlZOrJMtybpk28iyjRy5TZSV58OM5qO6KlhCy+HHlP\n" + "UCOQZ+AFLOB1BPI4D64uKp9kzadN1g4EQMvF8WnAupU0k20h8CDIUdctxnny62X0\n" + "J5aPhsq04ci1TU+n6WAM/yStTcUAd+JZua4kXymlpDr2zSsqtgz0Axcbe0FVYJG3\n" + "uvDco/fgyAEa9M4gQt3oatQ0LeqqzLM1761JbnGQikExQM8KoCrfGQ6MUzYyL7KU\n" + "VXzuXNvvZHyT5NzKrxaGTcDlY0vvqrxei17kSjfBdss7eH+Tqytzg4SyQab0NvnN\n" + "W5+Rw0opol4El+LRFARERXp+HerFaU3Er8pZqlpnDA/XSlEy5jXJcwCMWABTuuvw\n" + "5nuTw9l1SEpnYm7x/x+P73gCUdOMeGX06w7k2Y3JnUvifJUrh9axMjCIXAMLJM7a\n" + "1EF7reOoJtVN/7slxh1eTAx3xFAZ+iDte5yEqNK375SlVWMm2BnbvG3H50fCx9Lz\n" + "KZ8cOKYKNZ5Q7iImNQ06jjoQzHAI4oJdvjutvm0TZSjDFUBHgcFTgVdZZIXweJSi\n" + "63QRDQdjyoaB3jowDRwP/AWI2o2QzapmG8zEB7gDafbam5IROf0gcj+/rUo9Dlor\n" + "QMI07d0qpHhL+VAcn3b8MI69rv4moB8Kf9RqdRyVJ3hua7pQ24B72KjC93noUrW0\n" + "lILbi65C4AufAoICcgDXLSTE9lkyrSr1Lamb3ag0SWbernBtkkTJPktloD6drQg7\n" + "lsXAFaV62SazBmg2ZtayB9D9HUU276F0sWQbxBD9hO/WGnVOMT7rgu5WMuUKid+H\n" + "oWj5oT+KMPccoPjrsBZHlXvpgtb8M5dp+l1HyRR1YN4J6y6oEhRDoWAApDgA1B29\n" + "nuICrMlMFE0TkNFz7YsiMMkDYAVGbjjPhCJu4eD698Ktopl1BUAKJwfI+6mxDDSu\n" + "+F6z2/0alJYo5Qb6+YsUSOpjCyRwQbahO/3drb4Gv1B5DmiHDhSZ5UwzUQbHdBAE\n" + "9PeColcWJtW5msRuxwZkbE4QGuWzQyBGgmy8bF0hpcaE0nbn0RQEqHHngcrTuu1l\n" + "zte9k8z6BLwYnVFcJyfTjGWqEr0Z5M8gpVNY0OHxuqHTpXMwFigzwEqH5+EHtGGZ\n" + "NN/daeUTyJgU+OFnEtoHfDCRoGrNbW2LgifJeOxvGvczVcF111jfuSehoVvJG1kl\n" + "1iQXwj22HHaDvJFQRDgEMRXnz98UikQwLolfSJF4qKENPdhWq3jmVCjdFLPuvxq4\n" + "q0fGLa19XWPfLZ/Fw0Oyy54Fq8Lm67EkeLouAB3RbSg9fwBNJw0p5XTiHykR5pBa\n" + "b7mkch/+GPrhuA/tsO1U1bFn1ykGswSTiUzdtBbYRXuczX6SoIuJgCqwI2RIZ9cS\n" + "k4bwnAHEcLHlZ2pzaGNRfEjKUnNgXsUo6txi57UXwaugvQ8eQiDQgYXKlj6jNden\n" + "2RwXhBHPFF+FRh0PGcGKOpqjptb3r/EUl2C7RDsXLClhJUpDDWb/0nnn175ODSeM\n" + "DKcHf6d+CBh28n1mumhXAoICcTAiOoKx7cfDztS8kOjr1p+nPEpufdqYMndgKfKK\n" + "vyqoRYBI4VBZqDlwonrdMbrN1iTzT7lbnkJ4r+STLeSpFTXDcZwftJ00FxRX7jrd\n" + "G2g0uWxZbTLSMNNZpELVWoxnyt0aY0XzpRve8RNN7TOSgk4k4kIVZRxTAzrZZkoc\n" + "QjrBy87+Vz3ti/Jsn2q9p77HaYTppz1MEEUImijCYlxu092Q+WOgvhkg1sq05aAN\n" + "ilgVT+nhdjH+dZZbx9fGKZSNpUtd8FCYVf0y9um1Qf2Pi7b7ZqWxCFALZbn/Ubdj\n" + "HRGP1FnehweXRRuKWiN+N4w8wuUmd01pAgvAWX/4ac/dJ0yBqkCeJwYDFcaj0fwF\n" + "veB9O1oC6dOpqW3sdS4/uQ+szEZkj7+3x+9i2HjaMr9xfS4Ibjpg6jphOsUIK2wo\n" + "mzMAFtd40lenLMcX2ne1tWcCASYFg/lwlFL4uVI4g0U2ASGhLNPfJrNyZ4eTgTze\n" + "muGI9PLETATW+9UJBv++FLKJQhkYr0Y+BdKqmzA2WQql1ZAjz5+M2xUJaW+IOet3\n" + "2LvZXs95rXHJbcChsmlCtJZEpGFbVo0rl/UlsWONvSsj4ztXkjggaUgV86FG8Y0Q\n" + "q3IqhXllX22BAi6cNSFMgscSJD3CDyEsuHFkjIPFo6Rd33qaJZKwp5hRmt8aaVZ5\n" + "Ov0BOsRj63nE4/7YG6Alv35wA8lulxAgjr7CwMs6l8CsJxTQ2b7BKashM9GYB3QZ\n" + "HzJVz7BGIiyO1GuHzHeSuzIwCSLbesbw6CRDN+OgfgmfudqnQO0s3NW2B1LqH27P\n" + "DePK+vc0OTIQQ3oa7xFJ7DdprVcCggJyAM8itfKk8tjFukSq4Esa5YDv6AcVBUV1\n" + "OKJBRXNe/ufqWbKDQXnXXKUVxRsxX8B+3s4imBwQwUBRDau32Baid3iVMAt7DNFo\n" + "tpkgQS7Zb4LlljiKOPOVNgVhfYAhtX2s1MW0MMRpH2tIfsmWKZWhDACybww9SXyh\n" + "asBv6Gq1qvOhPb/74rWQf3atVEUxc2+VjAotzFNja7CRCj85g6wZ5Omy98UOcYsk\n" + "srETQXtIR+IXTd/hV8jsTIn531MepcmTzz6HspoFb95gY95yUb/EMNlt8ZmXNShN\n" + "dadwBBqiNVRrdcBP0LQAcrTwTW2OfunkzVJ+r+bw/Y3DYJ5/jw0Tg9OQMbpKoAwo\n" + "SIzzWjLxzr5jg4QtyaDFVtyXEjrftiJvzvbmgDdoMoFqsblLbSBidB6u+nkzG99+\n" + "dNTcluKdZRJ1oj5Jl/ccqViSEVSfANyoWRo7gsWtFyMJ5BoYARUBQxjxbGYOd11p\n" + "IDS9mFkPa7v8h6TUr4nvglh8rdnC/F+4S/Q9DElK4gRz1ZBMPBFtWhw8uEx27HsC\n" + "NjADdBLeixeY/7AlscIk1o2ICUweL1/AyLqlKEltPwHsgWoKja8ajZm86q/IQhID\n" + "NbjPGeVS+cYxnWRxiNO0yPdiNKB0/2BgoRa5Xz4G8YdxbUZZNZV2d0daG9SmPOIJ\n" + "ikmjB3TnnPHWhENtoMieZVUk5xteoirWokUezzN0i3yJvmHVNLJBOyLTXNQvKw6F\n" + "ufD9vj12xHV4r1D0vwYkLMCbbBhvlimjMZxPLe27/dQRmpGn54Zd+EQmTu8lZoeF\n" + "r1E03AVCuf+IyjkXNPMS/7ljManPZMgvSaECggJxdDsg+VIkO4id44ATLjZ006oB\n" + "C2S+xktCmj1/GUXLwn4XkaWJU6C10rADD139hGyoBdWFZeHq2MCNJ2agKYqrPa6O\n" + "qt+GkIDbbQ1AtUqW4xEL3koMhe7g4CpqI0n07orAoqQQGvmrTqhNCOz3ftMQKtkM\n" + "qoiLwbdEU0X0s41vkCDxF52448ZMYQ5327kAa5mMG1lYrS7kQ9tLJ45z7RSw7Pan\n" + "tTi18cLE42kOe/wdaK/nakjNoIUcJC8VqYJ75IOnkxmMrP7wWpigHojLjjG2rCiU\n" + "qYwS+E5f+3WhESvu72DXjCClI/QQ5iQ9+BDtXzfzxVxpNicaAZtAVns/JPMzkVEH\n" + "A4efNXo8CwOMCyqhnKxKuprPAekDwjYyr6fI2iqcfb0TpnuAp9fOkjgkVZIuLAs7\n" + "gsyms9eniaFCGNLAwTkfEjxBVGP/5kSaka9w0Vj6g+mfeqEw2frD1LfEU5l2/F0t\n" + "iFYmtmgxpAnlWOF+Y6dlKqFwZbFiqzSZNMwzn29Lhx7hONJqzMzGhjk7heYwB7A8\n" + "8bloepcbvWcZJ/2dhmfsgk8CXVW22C0jB/nU2NpAcTki3TVAZ40cbt1fTdgS4tRJ\n" + "zR9OgLsjfuTo0LbEPbPDldytP1Xcdw+0hdxdYUv+G2UsdNKAcx+c+9VisogwQ5Ms\n" + "dUuE9B5EJO5cd8hz2w6SJ7Fe0uQHnXM0I+EtycCLcTjyO/ZMkQMZh7Yj37oOB+tJ\n" + "D2uAHdq0IHmBrEQWHOBuhwNNLtu90yfzT8hIPPmoY7ho+qIu+QhD65FLVIu1bU+3\n" + "nfEvcF4wdqMneAh+KlLyZbGSZdhZpD1YjP8cNvcO6w==\n" + "-----END PRIVATE KEY-----\n"; static char server_key_repro_pem[] = - "-----BEGIN PRIVATE KEY-----\n" - "MIIWMgIBADANBgkqhkiG9w0BAQEFAASCFhwwghYYAgEAAoIE4QDlLopBshMEROYt\n" - "nS3ZM02uRH0dFMreyhCNuoX5EPOsZRgTbGXM3myDqCWuIiFRf10OoSH8yzaT4nYS\n" - "tvz91Do3JM/qHsNXyQP5Ql4NQkfp9sl8gutog1Y3svWM6fpl/mZTPTLAJcW+HPi3\n" - "5GStCgnlXi6U8JLk4mmjuIt0m/O95x0EZ0qmC8Rn7Ijk8VHH24fMX3cWu+LSTQzr\n" - "WAGoBZWcl54EBm03GiUf92MW5CP3JpoTq/cwJ65b103GGC5CEhlFWaKTKQJ8EScu\n" - "ood3AUy7JvN13KIk+lw9cJ7Htw7GPe8ixzrsNaBIyJIiAFkS8iWYjfUGJkifM5XH\n" - "enMAx5UG6hdHWvbkrLL50Dpy46sPJvzNfMiY9ukVOaEMVSlXwHkuwMU/ZxyJL6w/\n" - "r3xS+xHdWQhDBgLFH4zIfUn36eEtDkGQ79B/wvx64M27mm+VLFWaS96lwfpmkmdV\n" - "940V0oTRVMYqIYfAfFX6Sr+U6GYF7Y6Te0vMLNQjHweCR33+1iUO4U21QYNA6ea8\n" - "Fs7wu60J9i+61gYJo+TN3hQPgBS+6R8ZIN7DNA6LRVB0dQtLIYhS7tPXm3sdOfP2\n" - "L72KftzmLYeYm9tDSx8BV9EN6wY3GfP8YJ7RQAwSWowEQLfleMUbI/ZAeIsJAqvo\n" - "dTQtUTDmzXWkk132HDe7bit+IIYSoUl70fOr4sJaF+cjPdWM6WjDUp7uSy//P3ZZ\n" - "gfhI14TWXIEh/0eNvHP5toWctRKXb0D79D5A4fNz79h802fxWDfUg4Ol+qoL8Ms6\n" - "NI3s1LTDDqJITwMQLFFuuUGvUD0x9WP0XHl7m2YcdQg1U1JP7vmMXsoa/zVcgovw\n" - "IFhiA69Umlu8BipEn9xeQjYdyBMBMRMasUjXgQt9OoLv43UqLVzjd1AtRURYZREO\n" - "T86gYU53SHHPvOyTA2U4ZyON0WVzPRLpHrg+9YhaL9bzXgcqtK13Zdj56B3jHgnz\n" - "ge3MmjYvJntGtCGl2D310FaG7GWg775Evh2I4np5nXsA9dnSqySFzAP3rJ/L5pUi\n" - "bQ+QDuYnNwATvRu57Gx3kgmMrMvKooudcpYlrekJUzjS6PfmsHPCYx97rqmeCvGZ\n" - "m8O4PmxC0NDr1MnTuBGjX1IOTuICrzHfoDPa07hxhOwQ35wa1a+aXgQGP3bqTISq\n" - "t9VV6/DWZ1NNsujAbbd+2oSYYhE9e4QZCCnpWQw1cmnwyVhvAVsTzkfDxwDDYBNj\n" - "+L/uG8BaoCuAtA1exDCXiLBwuS9fkwuO26NJoCx/hVih6sIqe7YS2qcubJiByMeU\n" - "YqPO/N7MrJK/psm7WG9Jby62xEYulfU28dYOFdjtFLaUY472Mo6Rxth6R9H/95tc\n" - "DX7ndmPMtYkBUJ91QyGwXLj/QozlH7woVzm7kdZmO5sCu4aezXylPnK7cTVwzTsk\n" - "3moucKsMshh9Sd+baxyVFrXlvntOGkrU0FdHh2aF47eCb5+agu3Aw6PHK+v9XsUR\n" - "FEw6xqqIp9aJsY6VkjM4zcglrrDJbAbujozRAZp7D5XPtSDfBAG7bdeZOCA4DZUE\n" - "QxY2HRJw6OeKLOclaEeCxW1LKBWW/oYbyo/0tK9ND+mk/WUOKXeBA47F+OGZLP2S\n" - "JzMWxJLuvL1XbMzHk/nrtN+mzgg1zbLdwuX9XUGcXQCDL2w3SCECAwEAAQKCBOAZ\n" - "dUIGajGSl9S53GvrZLeMVC9Ru62NcgTEuaOIN0naLKCwB6qHR23mchc9cK0i0HMV\n" - "3PBZlHlLlCxph8oyqBCPb5do+mHYrouydJzd/C7g3nkjS6e6xFwfc9GzBYq7KbdU\n" - "J8grcAa3R6CZTNWiIytWP1ANW2v14PC7LxTOr0Q0JCglBRRVvZjjsnLCe8wJ12kO\n" - "Wsxvyg84LTbyLaSBdZ1Y976l09Dt/gmBs4leUZltKuySoteikcXcjd4l0ynQTRJh\n" - "kcNtdXDBN2aS15sUrSBI6drBjPC2CtmUOZ5psPwDKX4W7uqssohLjXwuKru6Twu+\n" - "FobRWA9ZH/HTZta/j2wOiJJtar1iSYzYEzlq6b9mv331lZby5vqdUPmC1TLyfH75\n" - "opBGqr2Qv6ryqBu3XAxv+iPgzhogq5CH9OLylxhcWOkPoJQYnSBOxgoUfONIPtSD\n" - "f0oMP7ABFOJFumoBspDub+xTYcYiq60hUIxXjjlHD0x3NYsF8zTdceTzo91rIX6c\n" - "WIq5R728yD7JRf9W3oIqSR6kMoIZMAuKktDHqAKl8l9x+yTDqlSzQ8/cH+RRRDhQ\n" - "fhcqLCtQ488l2cfESrNfHk+htC53GzEmhQrD8QePt2JS9qittd+hak2Da20CIJhE\n" - "m4oPP1Sye4l9GQfiwNId0VTwIy6c2CWYvHQ4XoSGLURsbLYUsevE9kLGt2exb3wj\n" - "tlnRPqjmQbZz2uwpq0cmSMBPdnwMUpLPemb9MWAPUlx1oHwJ2Q+iIVJ7C0DQnmwV\n" - "P0aweVfKW8U3gf8B/97UjBuazKwab9Hb6thRESi7E/c2fc9A29JL9vQieE78ch8w\n" - "mEIp8SaT/l09gq6mTSUhYl6k5Z1iNHtrqgRr9uyfB5+fm4P3Hc5GzwCC38sU7rL3\n" - "zO6Dk5z+3VD2T9L+X9vZ6Z9mjvzKylQpZta8d5EAWkUiPaVY8xYcbtNKRahK5zFB\n" - "wgzTya1uFi9C0TBG07OONuT15bagbqjqsrZ6daLxqtiX6CUtNEAp8UWLlR3jW2/r\n" - "p1iE3AeW61MfKCmvsl+J9vZ8Vy+iisFaUVJWfhGFpH5WCO4idQiXZyjfsTAQhPV3\n" - "yBB65LVsXCZWXOiiwmmH3GIvY7fvVTQbM8Rz6FlLr8y8VPACsLJE2OnfRlwZvKaC\n" - "+Iwl1fKq+W457VdtkVMOzwAjWbcUpwuOzoUnuRoWj7hH+CuNwSeWAYWfPB+obhBN\n" - "g01jfzY/GKBoYmu5+5nudwhbKTzt1zJ7aBoq0iJ0yWD12DtQImWiWU7ax2wf9pfe\n" - "lIUL/aUJ2TxZbEYTOl+xeogQkikuSBlNYtM1coOjsXSRCjULW2f9GAl+VT/BA5ld\n" - "SwvRAgBYoC+X3r4IfBha5nrZStllAwMjgtM8VW2ZgMe7he7csY0WbeNNyH856Pe2\n" - "2lT49CjudbBytuPbRJXnuiiCVJnB3Qc8ntTthPIFHVLZRrNex6SGG22ANC27jKz7\n" - "s4Y+JJiAjZMfe2+Nvne3Vd9febCokhzH1HNHOjCx4U4sv2rmmCwGpw1NwRxX7hau\n" - "4cKPXkhH4iCurpG3ZbooN3DRRfNRdXT/G9Klt2HlI8kvdD2PCNtAGOQOHmHzZdKL\n" - "V/HvPkqTCdi+OuSPS9YHeHFZZUpqUZ+7eiyjQ86KzgmNi/TQWR/6IEIYe+k4QMEC\n" - "ggJxAPL6qmGPkdU4spW/FM4NmFG+ApqfisFH1hU/BzGqnL6p7DdfqzcgydyyVC/3\n" - "/j1QsV/2mh81a/Kho1AawHghjxz2k8ekARGic62tAf7pqoZFYtdGXa9hhned+9Ic\n" - "3esSItAUKlhX+XlQ6mZ7XUEbt4+6AhkZtiBgIHAUpoa90M0ru/zUoudUKatTfcAa\n" - "x9C6Uc6kBSIx7L4anGanDHuyivf3tl23UiRH06PHvb/XFCifAb9uXjfZ4+FiZdvR\n" - "7SM5EROtqJSXaMu3E/ZbK3qZSA4MK53Wr7lfKsyfvoDSxbauUPkUr8qsdIoLmIn4\n" - "gSjlFoH7ZFZVGgTB3ZW3DdOEm+7hGVwIHRR+KyM/oQevDspHeQbxWA2gx6MUavPG\n" - "KQVe8dAUVvhP0jktgwCfN/A6S/1yTXYxkmDmjlHUbchyD4hv+/3Z/+5ChAtCjVX2\n" - "+ybqRFAkJbqGeHUonWK1w+qzordT/9i/4Qg46qjVZvfvsEyyABMCptFaV4sPMJbY\n" - "CUFpCLEsQ5eHa+GgTp9V0rXoITsemJjXTAUxnEUjZ6MqfQkFs/CsLAoOaD5YjGdQ\n" - "HmyUEw2sRn4q+iFUlB3rq7BBqVyUrPzI9FajWlKL/Tr472a35uTKEd7Rvm/unY9Y\n" - "P5HM5o9v2hY3jF2qgK6/ksYkrdEVL95BRIXbJ8bk44bwja4eEfAESI7Rpc31bXd+\n" - "iNKnmMaB2A9iyzhZgZd5cTIpLM7rUwO7+IH8sd4gIKHVYUpy/KHJQ9wPy6pwc69R\n" - "MJ6HljhaRtaethkwr4Ehon3fvuQcll0rXfhbh9kN+UfE+77psBPyrLtNTTke6Ucc\n" - "4UkXGwKCAnEA8XaYDScKT2ngP/BPE9Pt/YiDoqhfGPCVMKC3/tiErdeoCk/NW6wF\n" - "00PYmaZVADXZ++kjwFfXv2w52k+8E1TEorUgap2VpAMFGmAasLkey/AuOSHK2zzU\n" - "5BWF2gwu2vDiHDs59brcH2fxGRtF/rHkZIq+fs9uHlIXARq7Wlcuu6ZkFT+qRGOl\n" - "091rFAhPmYZekBQoCjUOqPtxVPoGvdpp8SDjwet8KUBPgY0WEyZ0jGwMl25pCmlL\n" - "DGFXgbUm1dtTCxFyTC7fcp+6GmrT5FwhCBygY7pT8oAqV1C/uyvAcfFkIZAlRZQ+\n" - "FTeK8Kug2XBO1ycD5LrNZEWv91bQsMt1iF3A5PFSMwjcC+s07ZiAfhx0A3HX1sWV\n" - "VvhP+0NdY4aI7YQbUO4eSGiYOr2JPlOIQ9ObApOjQKysTuWTkwcUWCCbsMDk5CrR\n" - "XBrN91X/BJkLvcax0lPNpAko+avEVwxd/MsEKg8Tcc/rZajzVxqYei+fiCB7j2ye\n" - "V1SfpdFbScSoKreEtUEx+3BUVLAmmCmEtsO/d3b7G8yXwakLn05J2Vhw/3yNUdm7\n" - "hOYXMuqrEL2TO8oFTUUKRNRml0m4ymfKrdy1VLgx7wVUNNM/RAZEGFtb1B6VHF3E\n" - "3AHqR22H/aepgBQkN5s+P0eMgVOiEI2KTDGkOye0UgI/+7ZtfjLjGqvqX2X9J6Kk\n" - "QqfNl0jOTmKl0/3zrvAR1AOrTv6EvDxsLOfh3Nlr2I/t0RCzkeb5ECSiHmK9EjrA\n" - "b9cED3fgil2XiY7uyRW+3TpX6PJWSYxOlIaF/6YCy/vj09nQhLdnGQzuIEQLQHJn\n" - "nS+YVXYR0SVzAoICcHnxma8K+dqz8NS8qHldU1O6892cMmwcXHIfRsIDaVU7PITx\n" - "66DoQMcVbLECWkN1iv+paOI+0mVb//WE55Gi7gtQKQyp36t1B29jg7vmk6F9k0SN\n" - "WRla7bx8ulRSDoIagQRDCpl51YewN2OliEDT40Uryj/EqqYG+GCnzIeVHgTKbTdP\n" - "lE5a6+rDJTpTdnLn/4Sgxr7JpZInEtVmAxrVmW8nkAvqpDv3HF13MmDkVYapfpwP\n" - "jROks/x6gLpY2hWyX0KsBg5FCuAqisc6LFEEOqhqLT2y8FAtVfKKPXaz0WyEgbjw\n" - "S+WAtaBOf4jHAjN+/dPQUiQN49f9X/LygurkA8pYiHyqycVuKMIw/eU4U0jro+77\n" - "EwEL7wWGisK7cfzzEJMokhlfHhd6IuQeBFn5OAgD5KJr8JXXQBgLb+mIbQlBgot9\n" - "bDeshE6OYRaCtLtsGUrLSXAaarwJ3SscJC5XZ1NwwdeLPSn+Pq7rIxlN3wIu12Cz\n" - "FPu+xm7Q+cbKt6JvT2Bz4Zxb56W96ZeH4A9RZ9Qe3+DdNJbqtg3w3eOCwGvVw+AG\n" - "2LdXUbPwhs6W5B4EFqfnDR3m/c/afdeiXnFAEvqW11aqmA4fP4ZsIXQGWUgJBcVP\n" - "MLbONzA/5i150bWfyxqzvRUnXbfoiVqqZMQyxlVHt9VoljZDrevhFdu0QLbg+oml\n" - "7LBYwUjjYsP06kAmwsLliYT3RRyLt0FJPqk5Bvb2HZyjKu453x6mqxntWD2gBfBA\n" - "bWE1QDbS5wxWx/rX+2lezWyLDMMJrxs0wTNBJrGfM0uhJzEs5rnljHUbhGjlKWxp\n" - "f40lF5uSSutYsCwZfwKCAnAiRppo64zMHxRlHyCqiN/0qGc/NLVjHeufnoDf3S5g\n" - "WweQhyl4hN/C0JOzo+fXAs3xs3OOvylyE9PWiJEDEXpkOl/iooH2aTNVPiUrxut3\n" - "OZ3mIETigC0cP23juO0ByUXfigy9NAxBLQkNblCuSeRI3WUTLTDNfwui7X+A4HVS\n" - "z9jPJ11tHdQRUhH8Iv3hpjBQNXxFjqiJFkBNNry0QIffYbLS+TGDzYw7sKJcj43l\n" - "zQSwjky83Jt5o2u/js53dw2/uXdHFzRC2ieZzmZLuUQ7GY0u+ukluEnKYT0GPbyw\n" - "r/ptxT91NAjoDB1d8o7/rrCSXAhydI3pWPcUni87mXYSqHRUS2lGs1BBJN87hvVe\n" - "cX2Ka6Oe6ic71D3ORg7ArP1M8f7KqzKDRs2tMPCFd2gVcLlFUV3QNXK0NGSRb2TU\n" - "6bQQECGtveJAN9Ha9UshBPSkuMrPN3Quf9pgLqDNVoUU+GCb883nzwL0SFpal/zj\n" - "A1WbBjlj76A+d1W+PQy/WPoiLjDZZerJbXWbG/IukV40b28Db1FP7efw5qUutPdI\n" - "sgRAUBbjcovq3pqWcLddxftbdl7wTAecI6Z4fU+M89TSf00CPK9h5ZjBcuc9KcKK\n" - "zpUndDvobese6+qsvwCZ4i3ub22AsznP08E/LncH8H+cN0O/3e/74DPi8E90pZaV\n" - "V6gKaLjZ4n18tMM7YWtftyMhB6CKyatONEMiEIEZE16rtTLbncVwVWYF0mAbKvVZ\n" - "9ElLFOsP5mUgux3pcDPgkE6NiUueIccZMkn+WEAlapRRAxOMaa1l9Viu3vF5lWs+\n" - "JBa9X8tVF6hbqMDwCLWYwb8CggJxAMwL6SAeYP9kjq7tkk+TmZVTHDlV4Yw9kWAY\n" - "a9etQ4vJibIkyzrfJXIVmsY+df7m3uaNWnmNe3VuZxLv04sPyL8OMu+PIUct3174\n" - "sNYN5AjmjmuBLvs1vBF8VvQ8+TsH5HjzXYcSQM3OJ1G/GPjsptqHj/w3kLmHsQgW\n" - "Fps5OXWgjQEsVnrRL/Z5D6s4z8OPMRN3KAqb1k4Cp5m32f9bzBIHEPdHc1JLFx0X\n" - "4xFQ4m1Dfbab8/VGnm9mS67zDtJWjxUSeTlR84hONXqzPke5h/W4QGrUgHutm0zb\n" - "ch/CufhsxF6RjiK7EuKqZWZDDj0uxqOlI6X/Exf53KZRLwJlmhdaED5LP8BA2IHt\n" - "nRL7F0uGfaLMP5CCDyN36GjmrlCEilwQQSpJF6QnYEEkLaxjksqTzQ54ZtboLf7O\n" - "HY0iYN1fmuWpf41ljljHe5H58vKDr/oQkANfz6I2lBCdmz7GkmBPmed8XHJSWqs8\n" - "41tyHXPBAQj+1MQtsW0xjl2ajoF7mwrRVHQL0xLVQcwmXqNQyMJ905WRMBhLShRR\n" - "hXipo7nDHDE8jiRyTZGNIg12D6tDLD5tmPXK5Hmzn4pLPWcN6Q9UvWn0PWql31sx\n" - "3dNqZ6PlYyh0b92+pymfDF3TBvZI2PeOICQsiFnqwhMyrV0Ojwt/QxIFudJJf2u4\n" - "7EA14n87SVjMhF1l6BoP4wdqt21uU0UhpyFACCoH2arFFulGJjC2/d5drNq7hSef\n" - "LNMz9MPPkamMWQ6i7vlTlUjAOtIfukre/fG4qyVclTaAiKx6EXt98DSBjPLoMJO7\n" - "3sczn4+LAjtXDT3RX0aUWr+JQABd+g==\n" "-----END PRIVATE KEY-----\n"; + "-----BEGIN PRIVATE KEY-----\n" + "MIIWMgIBADANBgkqhkiG9w0BAQEFAASCFhwwghYYAgEAAoIE4QDlLopBshMEROYt\n" + "nS3ZM02uRH0dFMreyhCNuoX5EPOsZRgTbGXM3myDqCWuIiFRf10OoSH8yzaT4nYS\n" + "tvz91Do3JM/qHsNXyQP5Ql4NQkfp9sl8gutog1Y3svWM6fpl/mZTPTLAJcW+HPi3\n" + "5GStCgnlXi6U8JLk4mmjuIt0m/O95x0EZ0qmC8Rn7Ijk8VHH24fMX3cWu+LSTQzr\n" + "WAGoBZWcl54EBm03GiUf92MW5CP3JpoTq/cwJ65b103GGC5CEhlFWaKTKQJ8EScu\n" + "ood3AUy7JvN13KIk+lw9cJ7Htw7GPe8ixzrsNaBIyJIiAFkS8iWYjfUGJkifM5XH\n" + "enMAx5UG6hdHWvbkrLL50Dpy46sPJvzNfMiY9ukVOaEMVSlXwHkuwMU/ZxyJL6w/\n" + "r3xS+xHdWQhDBgLFH4zIfUn36eEtDkGQ79B/wvx64M27mm+VLFWaS96lwfpmkmdV\n" + "940V0oTRVMYqIYfAfFX6Sr+U6GYF7Y6Te0vMLNQjHweCR33+1iUO4U21QYNA6ea8\n" + "Fs7wu60J9i+61gYJo+TN3hQPgBS+6R8ZIN7DNA6LRVB0dQtLIYhS7tPXm3sdOfP2\n" + "L72KftzmLYeYm9tDSx8BV9EN6wY3GfP8YJ7RQAwSWowEQLfleMUbI/ZAeIsJAqvo\n" + "dTQtUTDmzXWkk132HDe7bit+IIYSoUl70fOr4sJaF+cjPdWM6WjDUp7uSy//P3ZZ\n" + "gfhI14TWXIEh/0eNvHP5toWctRKXb0D79D5A4fNz79h802fxWDfUg4Ol+qoL8Ms6\n" + "NI3s1LTDDqJITwMQLFFuuUGvUD0x9WP0XHl7m2YcdQg1U1JP7vmMXsoa/zVcgovw\n" + "IFhiA69Umlu8BipEn9xeQjYdyBMBMRMasUjXgQt9OoLv43UqLVzjd1AtRURYZREO\n" + "T86gYU53SHHPvOyTA2U4ZyON0WVzPRLpHrg+9YhaL9bzXgcqtK13Zdj56B3jHgnz\n" + "ge3MmjYvJntGtCGl2D310FaG7GWg775Evh2I4np5nXsA9dnSqySFzAP3rJ/L5pUi\n" + "bQ+QDuYnNwATvRu57Gx3kgmMrMvKooudcpYlrekJUzjS6PfmsHPCYx97rqmeCvGZ\n" + "m8O4PmxC0NDr1MnTuBGjX1IOTuICrzHfoDPa07hxhOwQ35wa1a+aXgQGP3bqTISq\n" + "t9VV6/DWZ1NNsujAbbd+2oSYYhE9e4QZCCnpWQw1cmnwyVhvAVsTzkfDxwDDYBNj\n" + "+L/uG8BaoCuAtA1exDCXiLBwuS9fkwuO26NJoCx/hVih6sIqe7YS2qcubJiByMeU\n" + "YqPO/N7MrJK/psm7WG9Jby62xEYulfU28dYOFdjtFLaUY472Mo6Rxth6R9H/95tc\n" + "DX7ndmPMtYkBUJ91QyGwXLj/QozlH7woVzm7kdZmO5sCu4aezXylPnK7cTVwzTsk\n" + "3moucKsMshh9Sd+baxyVFrXlvntOGkrU0FdHh2aF47eCb5+agu3Aw6PHK+v9XsUR\n" + "FEw6xqqIp9aJsY6VkjM4zcglrrDJbAbujozRAZp7D5XPtSDfBAG7bdeZOCA4DZUE\n" + "QxY2HRJw6OeKLOclaEeCxW1LKBWW/oYbyo/0tK9ND+mk/WUOKXeBA47F+OGZLP2S\n" + "JzMWxJLuvL1XbMzHk/nrtN+mzgg1zbLdwuX9XUGcXQCDL2w3SCECAwEAAQKCBOAZ\n" + "dUIGajGSl9S53GvrZLeMVC9Ru62NcgTEuaOIN0naLKCwB6qHR23mchc9cK0i0HMV\n" + "3PBZlHlLlCxph8oyqBCPb5do+mHYrouydJzd/C7g3nkjS6e6xFwfc9GzBYq7KbdU\n" + "J8grcAa3R6CZTNWiIytWP1ANW2v14PC7LxTOr0Q0JCglBRRVvZjjsnLCe8wJ12kO\n" + "Wsxvyg84LTbyLaSBdZ1Y976l09Dt/gmBs4leUZltKuySoteikcXcjd4l0ynQTRJh\n" + "kcNtdXDBN2aS15sUrSBI6drBjPC2CtmUOZ5psPwDKX4W7uqssohLjXwuKru6Twu+\n" + "FobRWA9ZH/HTZta/j2wOiJJtar1iSYzYEzlq6b9mv331lZby5vqdUPmC1TLyfH75\n" + "opBGqr2Qv6ryqBu3XAxv+iPgzhogq5CH9OLylxhcWOkPoJQYnSBOxgoUfONIPtSD\n" + "f0oMP7ABFOJFumoBspDub+xTYcYiq60hUIxXjjlHD0x3NYsF8zTdceTzo91rIX6c\n" + "WIq5R728yD7JRf9W3oIqSR6kMoIZMAuKktDHqAKl8l9x+yTDqlSzQ8/cH+RRRDhQ\n" + "fhcqLCtQ488l2cfESrNfHk+htC53GzEmhQrD8QePt2JS9qittd+hak2Da20CIJhE\n" + "m4oPP1Sye4l9GQfiwNId0VTwIy6c2CWYvHQ4XoSGLURsbLYUsevE9kLGt2exb3wj\n" + "tlnRPqjmQbZz2uwpq0cmSMBPdnwMUpLPemb9MWAPUlx1oHwJ2Q+iIVJ7C0DQnmwV\n" + "P0aweVfKW8U3gf8B/97UjBuazKwab9Hb6thRESi7E/c2fc9A29JL9vQieE78ch8w\n" + "mEIp8SaT/l09gq6mTSUhYl6k5Z1iNHtrqgRr9uyfB5+fm4P3Hc5GzwCC38sU7rL3\n" + "zO6Dk5z+3VD2T9L+X9vZ6Z9mjvzKylQpZta8d5EAWkUiPaVY8xYcbtNKRahK5zFB\n" + "wgzTya1uFi9C0TBG07OONuT15bagbqjqsrZ6daLxqtiX6CUtNEAp8UWLlR3jW2/r\n" + "p1iE3AeW61MfKCmvsl+J9vZ8Vy+iisFaUVJWfhGFpH5WCO4idQiXZyjfsTAQhPV3\n" + "yBB65LVsXCZWXOiiwmmH3GIvY7fvVTQbM8Rz6FlLr8y8VPACsLJE2OnfRlwZvKaC\n" + "+Iwl1fKq+W457VdtkVMOzwAjWbcUpwuOzoUnuRoWj7hH+CuNwSeWAYWfPB+obhBN\n" + "g01jfzY/GKBoYmu5+5nudwhbKTzt1zJ7aBoq0iJ0yWD12DtQImWiWU7ax2wf9pfe\n" + "lIUL/aUJ2TxZbEYTOl+xeogQkikuSBlNYtM1coOjsXSRCjULW2f9GAl+VT/BA5ld\n" + "SwvRAgBYoC+X3r4IfBha5nrZStllAwMjgtM8VW2ZgMe7he7csY0WbeNNyH856Pe2\n" + "2lT49CjudbBytuPbRJXnuiiCVJnB3Qc8ntTthPIFHVLZRrNex6SGG22ANC27jKz7\n" + "s4Y+JJiAjZMfe2+Nvne3Vd9febCokhzH1HNHOjCx4U4sv2rmmCwGpw1NwRxX7hau\n" + "4cKPXkhH4iCurpG3ZbooN3DRRfNRdXT/G9Klt2HlI8kvdD2PCNtAGOQOHmHzZdKL\n" + "V/HvPkqTCdi+OuSPS9YHeHFZZUpqUZ+7eiyjQ86KzgmNi/TQWR/6IEIYe+k4QMEC\n" + "ggJxAPL6qmGPkdU4spW/FM4NmFG+ApqfisFH1hU/BzGqnL6p7DdfqzcgydyyVC/3\n" + "/j1QsV/2mh81a/Kho1AawHghjxz2k8ekARGic62tAf7pqoZFYtdGXa9hhned+9Ic\n" + "3esSItAUKlhX+XlQ6mZ7XUEbt4+6AhkZtiBgIHAUpoa90M0ru/zUoudUKatTfcAa\n" + "x9C6Uc6kBSIx7L4anGanDHuyivf3tl23UiRH06PHvb/XFCifAb9uXjfZ4+FiZdvR\n" + "7SM5EROtqJSXaMu3E/ZbK3qZSA4MK53Wr7lfKsyfvoDSxbauUPkUr8qsdIoLmIn4\n" + "gSjlFoH7ZFZVGgTB3ZW3DdOEm+7hGVwIHRR+KyM/oQevDspHeQbxWA2gx6MUavPG\n" + "KQVe8dAUVvhP0jktgwCfN/A6S/1yTXYxkmDmjlHUbchyD4hv+/3Z/+5ChAtCjVX2\n" + "+ybqRFAkJbqGeHUonWK1w+qzordT/9i/4Qg46qjVZvfvsEyyABMCptFaV4sPMJbY\n" + "CUFpCLEsQ5eHa+GgTp9V0rXoITsemJjXTAUxnEUjZ6MqfQkFs/CsLAoOaD5YjGdQ\n" + "HmyUEw2sRn4q+iFUlB3rq7BBqVyUrPzI9FajWlKL/Tr472a35uTKEd7Rvm/unY9Y\n" + "P5HM5o9v2hY3jF2qgK6/ksYkrdEVL95BRIXbJ8bk44bwja4eEfAESI7Rpc31bXd+\n" + "iNKnmMaB2A9iyzhZgZd5cTIpLM7rUwO7+IH8sd4gIKHVYUpy/KHJQ9wPy6pwc69R\n" + "MJ6HljhaRtaethkwr4Ehon3fvuQcll0rXfhbh9kN+UfE+77psBPyrLtNTTke6Ucc\n" + "4UkXGwKCAnEA8XaYDScKT2ngP/BPE9Pt/YiDoqhfGPCVMKC3/tiErdeoCk/NW6wF\n" + "00PYmaZVADXZ++kjwFfXv2w52k+8E1TEorUgap2VpAMFGmAasLkey/AuOSHK2zzU\n" + "5BWF2gwu2vDiHDs59brcH2fxGRtF/rHkZIq+fs9uHlIXARq7Wlcuu6ZkFT+qRGOl\n" + "091rFAhPmYZekBQoCjUOqPtxVPoGvdpp8SDjwet8KUBPgY0WEyZ0jGwMl25pCmlL\n" + "DGFXgbUm1dtTCxFyTC7fcp+6GmrT5FwhCBygY7pT8oAqV1C/uyvAcfFkIZAlRZQ+\n" + "FTeK8Kug2XBO1ycD5LrNZEWv91bQsMt1iF3A5PFSMwjcC+s07ZiAfhx0A3HX1sWV\n" + "VvhP+0NdY4aI7YQbUO4eSGiYOr2JPlOIQ9ObApOjQKysTuWTkwcUWCCbsMDk5CrR\n" + "XBrN91X/BJkLvcax0lPNpAko+avEVwxd/MsEKg8Tcc/rZajzVxqYei+fiCB7j2ye\n" + "V1SfpdFbScSoKreEtUEx+3BUVLAmmCmEtsO/d3b7G8yXwakLn05J2Vhw/3yNUdm7\n" + "hOYXMuqrEL2TO8oFTUUKRNRml0m4ymfKrdy1VLgx7wVUNNM/RAZEGFtb1B6VHF3E\n" + "3AHqR22H/aepgBQkN5s+P0eMgVOiEI2KTDGkOye0UgI/+7ZtfjLjGqvqX2X9J6Kk\n" + "QqfNl0jOTmKl0/3zrvAR1AOrTv6EvDxsLOfh3Nlr2I/t0RCzkeb5ECSiHmK9EjrA\n" + "b9cED3fgil2XiY7uyRW+3TpX6PJWSYxOlIaF/6YCy/vj09nQhLdnGQzuIEQLQHJn\n" + "nS+YVXYR0SVzAoICcHnxma8K+dqz8NS8qHldU1O6892cMmwcXHIfRsIDaVU7PITx\n" + "66DoQMcVbLECWkN1iv+paOI+0mVb//WE55Gi7gtQKQyp36t1B29jg7vmk6F9k0SN\n" + "WRla7bx8ulRSDoIagQRDCpl51YewN2OliEDT40Uryj/EqqYG+GCnzIeVHgTKbTdP\n" + "lE5a6+rDJTpTdnLn/4Sgxr7JpZInEtVmAxrVmW8nkAvqpDv3HF13MmDkVYapfpwP\n" + "jROks/x6gLpY2hWyX0KsBg5FCuAqisc6LFEEOqhqLT2y8FAtVfKKPXaz0WyEgbjw\n" + "S+WAtaBOf4jHAjN+/dPQUiQN49f9X/LygurkA8pYiHyqycVuKMIw/eU4U0jro+77\n" + "EwEL7wWGisK7cfzzEJMokhlfHhd6IuQeBFn5OAgD5KJr8JXXQBgLb+mIbQlBgot9\n" + "bDeshE6OYRaCtLtsGUrLSXAaarwJ3SscJC5XZ1NwwdeLPSn+Pq7rIxlN3wIu12Cz\n" + "FPu+xm7Q+cbKt6JvT2Bz4Zxb56W96ZeH4A9RZ9Qe3+DdNJbqtg3w3eOCwGvVw+AG\n" + "2LdXUbPwhs6W5B4EFqfnDR3m/c/afdeiXnFAEvqW11aqmA4fP4ZsIXQGWUgJBcVP\n" + "MLbONzA/5i150bWfyxqzvRUnXbfoiVqqZMQyxlVHt9VoljZDrevhFdu0QLbg+oml\n" + "7LBYwUjjYsP06kAmwsLliYT3RRyLt0FJPqk5Bvb2HZyjKu453x6mqxntWD2gBfBA\n" + "bWE1QDbS5wxWx/rX+2lezWyLDMMJrxs0wTNBJrGfM0uhJzEs5rnljHUbhGjlKWxp\n" + "f40lF5uSSutYsCwZfwKCAnAiRppo64zMHxRlHyCqiN/0qGc/NLVjHeufnoDf3S5g\n" + "WweQhyl4hN/C0JOzo+fXAs3xs3OOvylyE9PWiJEDEXpkOl/iooH2aTNVPiUrxut3\n" + "OZ3mIETigC0cP23juO0ByUXfigy9NAxBLQkNblCuSeRI3WUTLTDNfwui7X+A4HVS\n" + "z9jPJ11tHdQRUhH8Iv3hpjBQNXxFjqiJFkBNNry0QIffYbLS+TGDzYw7sKJcj43l\n" + "zQSwjky83Jt5o2u/js53dw2/uXdHFzRC2ieZzmZLuUQ7GY0u+ukluEnKYT0GPbyw\n" + "r/ptxT91NAjoDB1d8o7/rrCSXAhydI3pWPcUni87mXYSqHRUS2lGs1BBJN87hvVe\n" + "cX2Ka6Oe6ic71D3ORg7ArP1M8f7KqzKDRs2tMPCFd2gVcLlFUV3QNXK0NGSRb2TU\n" + "6bQQECGtveJAN9Ha9UshBPSkuMrPN3Quf9pgLqDNVoUU+GCb883nzwL0SFpal/zj\n" + "A1WbBjlj76A+d1W+PQy/WPoiLjDZZerJbXWbG/IukV40b28Db1FP7efw5qUutPdI\n" + "sgRAUBbjcovq3pqWcLddxftbdl7wTAecI6Z4fU+M89TSf00CPK9h5ZjBcuc9KcKK\n" + "zpUndDvobese6+qsvwCZ4i3ub22AsznP08E/LncH8H+cN0O/3e/74DPi8E90pZaV\n" + "V6gKaLjZ4n18tMM7YWtftyMhB6CKyatONEMiEIEZE16rtTLbncVwVWYF0mAbKvVZ\n" + "9ElLFOsP5mUgux3pcDPgkE6NiUueIccZMkn+WEAlapRRAxOMaa1l9Viu3vF5lWs+\n" + "JBa9X8tVF6hbqMDwCLWYwb8CggJxAMwL6SAeYP9kjq7tkk+TmZVTHDlV4Yw9kWAY\n" + "a9etQ4vJibIkyzrfJXIVmsY+df7m3uaNWnmNe3VuZxLv04sPyL8OMu+PIUct3174\n" + "sNYN5AjmjmuBLvs1vBF8VvQ8+TsH5HjzXYcSQM3OJ1G/GPjsptqHj/w3kLmHsQgW\n" + "Fps5OXWgjQEsVnrRL/Z5D6s4z8OPMRN3KAqb1k4Cp5m32f9bzBIHEPdHc1JLFx0X\n" + "4xFQ4m1Dfbab8/VGnm9mS67zDtJWjxUSeTlR84hONXqzPke5h/W4QGrUgHutm0zb\n" + "ch/CufhsxF6RjiK7EuKqZWZDDj0uxqOlI6X/Exf53KZRLwJlmhdaED5LP8BA2IHt\n" + "nRL7F0uGfaLMP5CCDyN36GjmrlCEilwQQSpJF6QnYEEkLaxjksqTzQ54ZtboLf7O\n" + "HY0iYN1fmuWpf41ljljHe5H58vKDr/oQkANfz6I2lBCdmz7GkmBPmed8XHJSWqs8\n" + "41tyHXPBAQj+1MQtsW0xjl2ajoF7mwrRVHQL0xLVQcwmXqNQyMJ905WRMBhLShRR\n" + "hXipo7nDHDE8jiRyTZGNIg12D6tDLD5tmPXK5Hmzn4pLPWcN6Q9UvWn0PWql31sx\n" + "3dNqZ6PlYyh0b92+pymfDF3TBvZI2PeOICQsiFnqwhMyrV0Ojwt/QxIFudJJf2u4\n" + "7EA14n87SVjMhF1l6BoP4wdqt21uU0UhpyFACCoH2arFFulGJjC2/d5drNq7hSef\n" + "LNMz9MPPkamMWQ6i7vlTlUjAOtIfukre/fG4qyVclTaAiKx6EXt98DSBjPLoMJO7\n" + "3sczn4+LAjtXDT3RX0aUWr+JQABd+g==\n" + "-----END PRIVATE KEY-----\n"; static char server_cert_repro_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIILHTCCBiWgAwIBAgIJAKyNy9vjy7TCMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV\n" - "BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX\n" - "aWRnaXRzIFB0eSBMdGQwHhcNMTcwOTEzMTAzNzU0WhcNMTcwOTE0MTAzNzU0WjBF\n" - "MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50\n" - "ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIFAjANBgkqhkiG9w0BAQEFAAOCBO8AMIIE\n" - "6gKCBOEA5S6KQbITBETmLZ0t2TNNrkR9HRTK3soQjbqF+RDzrGUYE2xlzN5sg6gl\n" - "riIhUX9dDqEh/Ms2k+J2Erb8/dQ6NyTP6h7DV8kD+UJeDUJH6fbJfILraINWN7L1\n" - "jOn6Zf5mUz0ywCXFvhz4t+RkrQoJ5V4ulPCS5OJpo7iLdJvzvecdBGdKpgvEZ+yI\n" - "5PFRx9uHzF93Frvi0k0M61gBqAWVnJeeBAZtNxolH/djFuQj9yaaE6v3MCeuW9dN\n" - "xhguQhIZRVmikykCfBEnLqKHdwFMuybzddyiJPpcPXCex7cOxj3vIsc67DWgSMiS\n" - "IgBZEvIlmI31BiZInzOVx3pzAMeVBuoXR1r25Kyy+dA6cuOrDyb8zXzImPbpFTmh\n" - "DFUpV8B5LsDFP2cciS+sP698UvsR3VkIQwYCxR+MyH1J9+nhLQ5BkO/Qf8L8euDN\n" - "u5pvlSxVmkvepcH6ZpJnVfeNFdKE0VTGKiGHwHxV+kq/lOhmBe2Ok3tLzCzUIx8H\n" - "gkd9/tYlDuFNtUGDQOnmvBbO8LutCfYvutYGCaPkzd4UD4AUvukfGSDewzQOi0VQ\n" - "dHULSyGIUu7T15t7HTnz9i+9in7c5i2HmJvbQ0sfAVfRDesGNxnz/GCe0UAMElqM\n" - "BEC35XjFGyP2QHiLCQKr6HU0LVEw5s11pJNd9hw3u24rfiCGEqFJe9Hzq+LCWhfn\n" - "Iz3VjOlow1Ke7ksv/z92WYH4SNeE1lyBIf9Hjbxz+baFnLUSl29A+/Q+QOHzc+/Y\n" - "fNNn8Vg31IODpfqqC/DLOjSN7NS0ww6iSE8DECxRbrlBr1A9MfVj9Fx5e5tmHHUI\n" - "NVNST+75jF7KGv81XIKL8CBYYgOvVJpbvAYqRJ/cXkI2HcgTATETGrFI14ELfTqC\n" - "7+N1Ki1c43dQLUVEWGURDk/OoGFOd0hxz7zskwNlOGcjjdFlcz0S6R64PvWIWi/W\n" - "814HKrStd2XY+egd4x4J84HtzJo2LyZ7RrQhpdg99dBWhuxloO++RL4diOJ6eZ17\n" - "APXZ0qskhcwD96yfy+aVIm0PkA7mJzcAE70buexsd5IJjKzLyqKLnXKWJa3pCVM4\n" - "0uj35rBzwmMfe66pngrxmZvDuD5sQtDQ69TJ07gRo19SDk7iAq8x36Az2tO4cYTs\n" - "EN+cGtWvml4EBj926kyEqrfVVevw1mdTTbLowG23ftqEmGIRPXuEGQgp6VkMNXJp\n" - "8MlYbwFbE85Hw8cAw2ATY/i/7hvAWqArgLQNXsQwl4iwcLkvX5MLjtujSaAsf4VY\n" - "oerCKnu2EtqnLmyYgcjHlGKjzvzezKySv6bJu1hvSW8utsRGLpX1NvHWDhXY7RS2\n" - "lGOO9jKOkcbYekfR//ebXA1+53ZjzLWJAVCfdUMhsFy4/0KM5R+8KFc5u5HWZjub\n" - "AruGns18pT5yu3E1cM07JN5qLnCrDLIYfUnfm2sclRa15b57ThpK1NBXR4dmheO3\n" - "gm+fmoLtwMOjxyvr/V7FERRMOsaqiKfWibGOlZIzOM3IJa6wyWwG7o6M0QGaew+V\n" - "z7Ug3wQBu23XmTggOA2VBEMWNh0ScOjniiznJWhHgsVtSygVlv6GG8qP9LSvTQ/p\n" - "pP1lDil3gQOOxfjhmSz9kiczFsSS7ry9V2zMx5P567Tfps4INc2y3cLl/V1BnF0A\n" - "gy9sN0ghAgMBAAGjUDBOMB0GA1UdDgQWBBT27j2hLGIaF0HRrGTPPxyYPcZiVDAf\n" - "BgNVHSMEGDAWgBT27j2hLGIaF0HRrGTPPxyYPcZiVDAMBgNVHRMEBTADAQH/MA0G\n" - "CSqGSIb3DQEBCwUAA4IE4QABjOzAO+aLbSvGPc5J0dFJV2upqv/lIQuwYkYwiDYn\n" - "jYiKvdldmx9DA4e6l+yE/7yAphz1qviySPzIDl3zsBxoTlUd1ghsm4R7euC827e8\n" - "MsJDMK8CfsXepqcvca2nrNpakDZ+z+e/y+UoAFiDMZhLX8N0a1+5+cQrONMMqEWa\n" - "GRV+SlH2dJHfi1aG981Br5pfoJmQbWRjj8sLM1e2EIe3NovcVDnS//7T3PcDINRM\n" - "M341onBL93/yv/iBevekTkx3FnjLF7qJRRqKX5bc0+H5Fe0sV7ObIEAAFyrRMp/l\n" - "A3AYCZ5vu9ueWdmmyuBZTro6eWyQN4G1WkYVYQMpa8JwOrclpSaa/d5f16u4wRLe\n" - "JguamO/qMbxpaVJPSXXiX+dwyaVow6l7s9O1+jrYDVhJACVP0OIfLtPeBZlbo4T9\n" - "B2XeFbgOZXT9gfz/vsq+pH9rBKrtvXzYAWEThlqjh1qNKfmG3bYwSJhsL5NnVOae\n" - "xZ8VveeDV05VfIQX3NpqK9gxoVMlbMX+zEdRpBak8d4P+wKMrLm2Vg+1MtfMsDes\n" - "bi0i2oHH2ESvY7elv1YTgORXjz6HmzA3L7oaISNgIoxbzVVu1hhBTD4MZXaFHGbW\n" - "E9IpEhHPNK6UHetbxJwN2X2lONEOwoDDzXerrmIjn6yHJetLOBTb0IAdaOvzEmyP\n" - "k4lhXJ9uOd0hdSqAIgKiFrrYNnXvYGMwItQPyI0KXN2e4B/kgZX9L/4SQwIpJuHy\n" - "Voit0WZVCAhIxA4SkYi7X/5qW2t/Kg4kfUxWO6itq8QChikSatkyLVtv9SOksQnm\n" - "2+alnBWhEziN7T4teM1qvj+Deiv3EYPaLBw68jJgKJ55lTt8vbHDWw07WUX7xP6C\n" - "BVKPh8fDH/j95Uyfsv5WxKBfjUFYD/c2R33AClST9iWCmZn2LJm66rzOx/dZ19eH\n" - "BJHeooCCzmk9BMrSLqcuzBaUsKjiKrlYeHa+klqgYhhDQxdxJ1GRUZbEywVc1+FL\n" - "fnDK2edISlUDZ2FsOK+X+bf4g5UhQzhnJZwTZhH3m35tM7AvX3ZpRmSoApbAEbqM\n" - "ndj3v4z7l/VYve/waZjVwLL+lzKTgOKh91RxzJcs34j/pvi9Srf7nif6O9Kf+F7z\n" - "bKKdN4RAypUxv9v0EjSolQ0lpUNQBJNJeepgqLzVNdDaEOAP0g/5LsFscpfawo80\n" - "KRCIJH1+C0OqZpHcu9w99l0/NsVOb50+IUhe1gA+wZDC8puODmacWNCctXG9cojZ\n" - "lcagSLUvh1jt/t6fsl2ObyL64+1RPrvi1A11mtqbUxS4iTa6l45yth+IjbpexVwh\n" - "YJUKTfBnWzS1RNBPJwsn6wRuvIWZT/VdQ5q/lTCWvovKPKg/gnwrlqqErVXgdgyG\n" - "YGdChbh3R4jYgHlUASa/xo5Nes+X2DRy+2OzaHrDKdo2pxwqMtzQjogPVTBOG0r1\n" - "iCNaCF9hLjJakrxsaoLBlb90bJ1ZrlYtqNXwKZphbLvgVELsPCghrwhbV9wdP6Le\n" - "zMnPLeicTSDPiq2nkDUWlbDd5oOhrTORf8gWRuPJVJ+noEkAkQEZkGHRnt3ouio6\n" - "P0BTNfA6e2quOiZ+8YSvWwOlwO2I0z8vy1IPQYIApX3S0UCPSep33u3KdL28O68z\n" - "pNVz4Hd2IpWckRR5ahdK00I=\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIILHTCCBiWgAwIBAgIJAKyNy9vjy7TCMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV\n" + "BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX\n" + "aWRnaXRzIFB0eSBMdGQwHhcNMTcwOTEzMTAzNzU0WhcNMTcwOTE0MTAzNzU0WjBF\n" + "MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50\n" + "ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIFAjANBgkqhkiG9w0BAQEFAAOCBO8AMIIE\n" + "6gKCBOEA5S6KQbITBETmLZ0t2TNNrkR9HRTK3soQjbqF+RDzrGUYE2xlzN5sg6gl\n" + "riIhUX9dDqEh/Ms2k+J2Erb8/dQ6NyTP6h7DV8kD+UJeDUJH6fbJfILraINWN7L1\n" + "jOn6Zf5mUz0ywCXFvhz4t+RkrQoJ5V4ulPCS5OJpo7iLdJvzvecdBGdKpgvEZ+yI\n" + "5PFRx9uHzF93Frvi0k0M61gBqAWVnJeeBAZtNxolH/djFuQj9yaaE6v3MCeuW9dN\n" + "xhguQhIZRVmikykCfBEnLqKHdwFMuybzddyiJPpcPXCex7cOxj3vIsc67DWgSMiS\n" + "IgBZEvIlmI31BiZInzOVx3pzAMeVBuoXR1r25Kyy+dA6cuOrDyb8zXzImPbpFTmh\n" + "DFUpV8B5LsDFP2cciS+sP698UvsR3VkIQwYCxR+MyH1J9+nhLQ5BkO/Qf8L8euDN\n" + "u5pvlSxVmkvepcH6ZpJnVfeNFdKE0VTGKiGHwHxV+kq/lOhmBe2Ok3tLzCzUIx8H\n" + "gkd9/tYlDuFNtUGDQOnmvBbO8LutCfYvutYGCaPkzd4UD4AUvukfGSDewzQOi0VQ\n" + "dHULSyGIUu7T15t7HTnz9i+9in7c5i2HmJvbQ0sfAVfRDesGNxnz/GCe0UAMElqM\n" + "BEC35XjFGyP2QHiLCQKr6HU0LVEw5s11pJNd9hw3u24rfiCGEqFJe9Hzq+LCWhfn\n" + "Iz3VjOlow1Ke7ksv/z92WYH4SNeE1lyBIf9Hjbxz+baFnLUSl29A+/Q+QOHzc+/Y\n" + "fNNn8Vg31IODpfqqC/DLOjSN7NS0ww6iSE8DECxRbrlBr1A9MfVj9Fx5e5tmHHUI\n" + "NVNST+75jF7KGv81XIKL8CBYYgOvVJpbvAYqRJ/cXkI2HcgTATETGrFI14ELfTqC\n" + "7+N1Ki1c43dQLUVEWGURDk/OoGFOd0hxz7zskwNlOGcjjdFlcz0S6R64PvWIWi/W\n" + "814HKrStd2XY+egd4x4J84HtzJo2LyZ7RrQhpdg99dBWhuxloO++RL4diOJ6eZ17\n" + "APXZ0qskhcwD96yfy+aVIm0PkA7mJzcAE70buexsd5IJjKzLyqKLnXKWJa3pCVM4\n" + "0uj35rBzwmMfe66pngrxmZvDuD5sQtDQ69TJ07gRo19SDk7iAq8x36Az2tO4cYTs\n" + "EN+cGtWvml4EBj926kyEqrfVVevw1mdTTbLowG23ftqEmGIRPXuEGQgp6VkMNXJp\n" + "8MlYbwFbE85Hw8cAw2ATY/i/7hvAWqArgLQNXsQwl4iwcLkvX5MLjtujSaAsf4VY\n" + "oerCKnu2EtqnLmyYgcjHlGKjzvzezKySv6bJu1hvSW8utsRGLpX1NvHWDhXY7RS2\n" + "lGOO9jKOkcbYekfR//ebXA1+53ZjzLWJAVCfdUMhsFy4/0KM5R+8KFc5u5HWZjub\n" + "AruGns18pT5yu3E1cM07JN5qLnCrDLIYfUnfm2sclRa15b57ThpK1NBXR4dmheO3\n" + "gm+fmoLtwMOjxyvr/V7FERRMOsaqiKfWibGOlZIzOM3IJa6wyWwG7o6M0QGaew+V\n" + "z7Ug3wQBu23XmTggOA2VBEMWNh0ScOjniiznJWhHgsVtSygVlv6GG8qP9LSvTQ/p\n" + "pP1lDil3gQOOxfjhmSz9kiczFsSS7ry9V2zMx5P567Tfps4INc2y3cLl/V1BnF0A\n" + "gy9sN0ghAgMBAAGjUDBOMB0GA1UdDgQWBBT27j2hLGIaF0HRrGTPPxyYPcZiVDAf\n" + "BgNVHSMEGDAWgBT27j2hLGIaF0HRrGTPPxyYPcZiVDAMBgNVHRMEBTADAQH/MA0G\n" + "CSqGSIb3DQEBCwUAA4IE4QABjOzAO+aLbSvGPc5J0dFJV2upqv/lIQuwYkYwiDYn\n" + "jYiKvdldmx9DA4e6l+yE/7yAphz1qviySPzIDl3zsBxoTlUd1ghsm4R7euC827e8\n" + "MsJDMK8CfsXepqcvca2nrNpakDZ+z+e/y+UoAFiDMZhLX8N0a1+5+cQrONMMqEWa\n" + "GRV+SlH2dJHfi1aG981Br5pfoJmQbWRjj8sLM1e2EIe3NovcVDnS//7T3PcDINRM\n" + "M341onBL93/yv/iBevekTkx3FnjLF7qJRRqKX5bc0+H5Fe0sV7ObIEAAFyrRMp/l\n" + "A3AYCZ5vu9ueWdmmyuBZTro6eWyQN4G1WkYVYQMpa8JwOrclpSaa/d5f16u4wRLe\n" + "JguamO/qMbxpaVJPSXXiX+dwyaVow6l7s9O1+jrYDVhJACVP0OIfLtPeBZlbo4T9\n" + "B2XeFbgOZXT9gfz/vsq+pH9rBKrtvXzYAWEThlqjh1qNKfmG3bYwSJhsL5NnVOae\n" + "xZ8VveeDV05VfIQX3NpqK9gxoVMlbMX+zEdRpBak8d4P+wKMrLm2Vg+1MtfMsDes\n" + "bi0i2oHH2ESvY7elv1YTgORXjz6HmzA3L7oaISNgIoxbzVVu1hhBTD4MZXaFHGbW\n" + "E9IpEhHPNK6UHetbxJwN2X2lONEOwoDDzXerrmIjn6yHJetLOBTb0IAdaOvzEmyP\n" + "k4lhXJ9uOd0hdSqAIgKiFrrYNnXvYGMwItQPyI0KXN2e4B/kgZX9L/4SQwIpJuHy\n" + "Voit0WZVCAhIxA4SkYi7X/5qW2t/Kg4kfUxWO6itq8QChikSatkyLVtv9SOksQnm\n" + "2+alnBWhEziN7T4teM1qvj+Deiv3EYPaLBw68jJgKJ55lTt8vbHDWw07WUX7xP6C\n" + "BVKPh8fDH/j95Uyfsv5WxKBfjUFYD/c2R33AClST9iWCmZn2LJm66rzOx/dZ19eH\n" + "BJHeooCCzmk9BMrSLqcuzBaUsKjiKrlYeHa+klqgYhhDQxdxJ1GRUZbEywVc1+FL\n" + "fnDK2edISlUDZ2FsOK+X+bf4g5UhQzhnJZwTZhH3m35tM7AvX3ZpRmSoApbAEbqM\n" + "ndj3v4z7l/VYve/waZjVwLL+lzKTgOKh91RxzJcs34j/pvi9Srf7nif6O9Kf+F7z\n" + "bKKdN4RAypUxv9v0EjSolQ0lpUNQBJNJeepgqLzVNdDaEOAP0g/5LsFscpfawo80\n" + "KRCIJH1+C0OqZpHcu9w99l0/NsVOb50+IUhe1gA+wZDC8puODmacWNCctXG9cojZ\n" + "lcagSLUvh1jt/t6fsl2ObyL64+1RPrvi1A11mtqbUxS4iTa6l45yth+IjbpexVwh\n" + "YJUKTfBnWzS1RNBPJwsn6wRuvIWZT/VdQ5q/lTCWvovKPKg/gnwrlqqErVXgdgyG\n" + "YGdChbh3R4jYgHlUASa/xo5Nes+X2DRy+2OzaHrDKdo2pxwqMtzQjogPVTBOG0r1\n" + "iCNaCF9hLjJakrxsaoLBlb90bJ1ZrlYtqNXwKZphbLvgVELsPCghrwhbV9wdP6Le\n" + "zMnPLeicTSDPiq2nkDUWlbDd5oOhrTORf8gWRuPJVJ+noEkAkQEZkGHRnt3ouio6\n" + "P0BTNfA6e2quOiZ+8YSvWwOlwO2I0z8vy1IPQYIApX3S0UCPSep33u3KdL28O68z\n" + "pNVz4Hd2IpWckRR5ahdK00I=\n" + "-----END CERTIFICATE-----\n"; -static gnutls_datum_t server_repro_key = - { (void *)server_key_repro_pem, sizeof(server_key_repro_pem) - 1 }; -static gnutls_datum_t server_repro_cert = - { (void *)server_cert_repro_pem, sizeof(server_cert_repro_pem) - 1 }; -static gnutls_datum_t client_repro_key = - { (void *)client_key_repro_pem, sizeof(client_key_repro_pem) - 1 }; -static gnutls_datum_t client_repro_cert = - { (void *)client_cert_repro_pem, sizeof(client_cert_repro_pem) - 1 }; +static gnutls_datum_t server_repro_key = { (void *)server_key_repro_pem, + sizeof(server_key_repro_pem) - 1 }; +static gnutls_datum_t server_repro_cert = { (void *)server_cert_repro_pem, + sizeof(server_cert_repro_pem) - 1 }; +static gnutls_datum_t client_repro_key = { (void *)client_key_repro_pem, + sizeof(client_key_repro_pem) - 1 }; +static gnutls_datum_t client_repro_cert = { (void *)client_cert_repro_pem, + sizeof(client_cert_repro_pem) - 1 }; -#endif /* GNUTLS_TESTS_CERT_REPRO_20170915_H */ +#endif /* GNUTLS_TESTS_CERT_REPRO_20170915_H */ diff --git a/tests/cert-status.c b/tests/cert-status.c index 20cb767297..e3f3f837b4 100644 --- a/tests/cert-status.c +++ b/tests/cert-status.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,20 +35,20 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "utils.h" -# include "cert-common.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "utils.h" +#include "cert-common.h" /* This program tests whether the GNUTLS_CERT_* flags * work as expected. @@ -56,7 +56,7 @@ int main(void) static void server_log_func(int level, const char *str) { -// fprintf (stderr, "server|<%d>| %s", level, str); + // fprintf (stderr, "server|<%d>| %s", level, str); } static void client_log_func(int level, const char *str) @@ -64,7 +64,7 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd, const char *prio) { @@ -98,8 +98,7 @@ static void client(int fd, const char *prio) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { if (debug) { @@ -114,8 +113,8 @@ static void client(int fd, const char *prio) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); close(fd); @@ -158,14 +157,12 @@ static void server(int fd, const char *prio, unsigned status, int expected) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret == expected) { if (debug) - success - ("server: Handshake finished as expected (%d)\n", - ret); + success("server: Handshake finished as expected (%d)\n", + ret); goto finish; } else { fail("expected %d, handshake returned %d\n", expected, ret); @@ -176,9 +173,9 @@ static void server(int fd, const char *prio, unsigned status, int expected) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); - finish: + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); +finish: close(fd); gnutls_deinit(session); @@ -257,4 +254,4 @@ void doit(void) start("NORMAL", GNUTLS_CERT_REQUIRE, GNUTLS_E_CERTIFICATE_REQUIRED); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/cert.c b/tests/cert.c index 199d87d907..0586a954ea 100644 --- a/tests/cert.c +++ b/tests/cert.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include @@ -39,7 +39,7 @@ #define CERT_DIR "certs-interesting" -static int getnextcert(DIR ** dirp, gnutls_datum_t * der, int *exp_ret) +static int getnextcert(DIR **dirp, gnutls_datum_t *der, int *exp_ret) { struct dirent *d; char path[256]; @@ -66,7 +66,7 @@ static int getnextcert(DIR ** dirp, gnutls_datum_t * der, int *exp_ret) #ifdef _DIRENT_HAVE_D_TYPE && d->d_type == DT_REG #endif - ) { + ) { if (strstr(d->d_name, ".der") == 0) continue; if (strstr(d->d_name, ".err") != 0) @@ -84,7 +84,7 @@ static int getnextcert(DIR ** dirp, gnutls_datum_t * der, int *exp_ret) d->d_name); success("Loading errfile %s\n", path); ret = gnutls_load_file(path, &local); - if (ret < 0) { /* not found assume success */ + if (ret < 0) { /* not found assume success */ *exp_ret = 0; } else { *exp_ret = atoi((char *)local.data); @@ -97,7 +97,7 @@ static int getnextcert(DIR ** dirp, gnutls_datum_t * der, int *exp_ret) } while (d != NULL); closedir(*dirp); - return -1; /* finished */ + return -1; /* finished */ } void doit(void) @@ -127,9 +127,8 @@ void doit(void) if (ret == 0) { /* attempt to fully decode */ gnutls_datum_t out; - ret = - gnutls_x509_crt_print(cert, GNUTLS_CRT_PRINT_FULL, - &out); + ret = gnutls_x509_crt_print(cert, GNUTLS_CRT_PRINT_FULL, + &out); if (ret < 0) { fail("print: %s\n", gnutls_strerror(ret)); } diff --git a/tests/cert_verify_inv_utf8.c b/tests/cert_verify_inv_utf8.c index 497a4096bf..adcaacd45f 100644 --- a/tests/cert_verify_inv_utf8.c +++ b/tests/cert_verify_inv_utf8.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,10 +30,10 @@ #include #include #if !defined(_WIN32) -# include -# include -# include -# include +#include +#include +#include +#include #endif #include #include @@ -54,7 +54,7 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "<%d>| %s", level, str); } -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1473674242; if (t) @@ -88,24 +88,22 @@ static void auto_parse(void) assert(gnutls_certificate_allocate_credentials(&clicred) >= 0); - ret = - gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) fail("set_x509_trust_file failed: %s\n", gnutls_strerror(ret)); pcert_list_size = sizeof(pcert_list) / sizeof(pcert_list[0]); - ret = gnutls_pcert_list_import_x509_raw(pcert_list, &pcert_list_size, - &server_ca3_localhost_cert_chain, - GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_pcert_list_import_x509_raw( + pcert_list, &pcert_list_size, &server_ca3_localhost_cert_chain, + GNUTLS_X509_FMT_PEM, 0); if (ret < 0) { fail("error in gnutls_pcert_list_import_x509_raw: %s\n", gnutls_strerror(ret)); } - ret = - gnutls_privkey_import_x509_raw(key, &server_ca3_key, - GNUTLS_X509_FMT_PEM, NULL, 0); + ret = gnutls_privkey_import_x509_raw(key, &server_ca3_key, + GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) { fail("error in key import: %s\n", gnutls_strerror(ret)); } @@ -122,23 +120,22 @@ static void auto_parse(void) assert(gnutls_privkey_init(&second_key) >= 0); pcert_list_size = 2; - ret = gnutls_pcert_list_import_x509_raw(second_pcert, &pcert_list_size, - &server_ca3_localhost_inv_utf8_cert, - GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_pcert_list_import_x509_raw( + second_pcert, &pcert_list_size, + &server_ca3_localhost_inv_utf8_cert, GNUTLS_X509_FMT_PEM, 0); if (ret < 0) { fail("error in gnutls_pcert_list_import_x509_raw: %s\n", gnutls_strerror(ret)); } - ret = - gnutls_privkey_import_x509_raw(second_key, &server_ca3_key, - GNUTLS_X509_FMT_PEM, NULL, 0); + ret = gnutls_privkey_import_x509_raw(second_key, &server_ca3_key, + GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) { fail("error in key import: %s\n", gnutls_strerror(ret)); } - ret = gnutls_certificate_set_key(x509_cred, NULL, 0, second_pcert, - 1, second_key); + ret = gnutls_certificate_set_key(x509_cred, NULL, 0, second_pcert, 1, + second_key); if (ret < 0) { fail("error in gnutls_certificate_set_key: %s\n", gnutls_strerror(ret)); diff --git a/tests/certificate_set_x509_crl.c b/tests/certificate_set_x509_crl.c index 89c72acf67..cbceb0b9d0 100644 --- a/tests/certificate_set_x509_crl.c +++ b/tests/certificate_set_x509_crl.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -32,18 +32,19 @@ #include static char g_crl[] = - "-----BEGIN X509 CRL-----\n" - "MIIB9DCCAV8CAQEwCwYJKoZIhvcNAQEFMIIBCDEXMBUGA1UEChMOVmVyaVNpZ24s\n" - "IEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxRjBEBgNVBAsT\n" - "PXd3dy52ZXJpc2lnbi5jb20vcmVwb3NpdG9yeS9SUEEgSW5jb3JwLiBieSBSZWYu\n" - "LExJQUIuTFREKGMpOTgxHjAcBgNVBAsTFVBlcnNvbmEgTm90IFZhbGlkYXRlZDEm\n" - "MCQGA1UECxMdRGlnaXRhbCBJRCBDbGFzcyAxIC0gTmV0c2NhcGUxGDAWBgNVBAMU\n" - "D1NpbW9uIEpvc2Vmc3NvbjEiMCAGCSqGSIb3DQEJARYTc2ltb25Aam9zZWZzc29u\n" - "Lm9yZxcNMDYxMjI3MDgwMjM0WhcNMDcwMjA3MDgwMjM1WjAjMCECEC4QNwPfRoWd\n" - "elUNpllhhTgXDTA2MTIyNzA4MDIzNFowCwYJKoZIhvcNAQEFA4GBAD0zX+J2hkcc\n" - "Nbrq1Dn5IKL8nXLgPGcHv1I/le1MNo9t1ohGQxB5HnFUkRPAY82fR6Epor4aHgVy\n" - "b+5y+neKN9Kn2mPF4iiun+a4o26CjJ0pArojCL1p8T0yyi9Xxvyc/ezaZ98HiIyP\n" - "c3DGMNR+oUmSjKZ0jIhAYmeLxaPHfQwR\n" "-----END X509 CRL-----\n"; + "-----BEGIN X509 CRL-----\n" + "MIIB9DCCAV8CAQEwCwYJKoZIhvcNAQEFMIIBCDEXMBUGA1UEChMOVmVyaVNpZ24s\n" + "IEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxRjBEBgNVBAsT\n" + "PXd3dy52ZXJpc2lnbi5jb20vcmVwb3NpdG9yeS9SUEEgSW5jb3JwLiBieSBSZWYu\n" + "LExJQUIuTFREKGMpOTgxHjAcBgNVBAsTFVBlcnNvbmEgTm90IFZhbGlkYXRlZDEm\n" + "MCQGA1UECxMdRGlnaXRhbCBJRCBDbGFzcyAxIC0gTmV0c2NhcGUxGDAWBgNVBAMU\n" + "D1NpbW9uIEpvc2Vmc3NvbjEiMCAGCSqGSIb3DQEJARYTc2ltb25Aam9zZWZzc29u\n" + "Lm9yZxcNMDYxMjI3MDgwMjM0WhcNMDcwMjA3MDgwMjM1WjAjMCECEC4QNwPfRoWd\n" + "elUNpllhhTgXDTA2MTIyNzA4MDIzNFowCwYJKoZIhvcNAQEFA4GBAD0zX+J2hkcc\n" + "Nbrq1Dn5IKL8nXLgPGcHv1I/le1MNo9t1ohGQxB5HnFUkRPAY82fR6Epor4aHgVy\n" + "b+5y+neKN9Kn2mPF4iiun+a4o26CjJ0pArojCL1p8T0yyi9Xxvyc/ezaZ98HiIyP\n" + "c3DGMNR+oUmSjKZ0jIhAYmeLxaPHfQwR\n" + "-----END X509 CRL-----\n"; /* Test regression of bug reported by Max Kellermann in Message-ID: <20061211075202.GA1517@roonstrasse.net> to the @@ -53,7 +54,7 @@ int main(void) { int rc; gnutls_certificate_credentials_t crt; - gnutls_datum_t crldatum = { (uint8_t *) g_crl, strlen(g_crl) }; + gnutls_datum_t crldatum = { (uint8_t *)g_crl, strlen(g_crl) }; gnutls_x509_crl_t crl; rc = global_init(); @@ -64,9 +65,8 @@ int main(void) rc = gnutls_certificate_allocate_credentials(&crt); if (rc) { - printf - ("gnutls_certificate_allocate_credentials rc %d: %s\n", - rc, gnutls_strerror(rc)); + printf("gnutls_certificate_allocate_credentials rc %d: %s\n", + rc, gnutls_strerror(rc)); return 1; } @@ -93,8 +93,8 @@ int main(void) rc = gnutls_certificate_set_x509_crl(crt, &crl, 1); if (rc < 0) { - printf("gnutls_certificate_set_x509_crl rc %d: %s\n", - rc, gnutls_strerror(rc)); + printf("gnutls_certificate_set_x509_crl rc %d: %s\n", rc, + gnutls_strerror(rc)); return 1; } diff --git a/tests/certuniqueid.c b/tests/certuniqueid.c index 5351ab677e..c78e6b57f0 100644 --- a/tests/certuniqueid.c +++ b/tests/certuniqueid.c @@ -22,7 +22,7 @@ */ #ifdef HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include "gnutls/gnutls.h" @@ -34,150 +34,83 @@ void doit(void) int ret; unsigned char der[] = { 0x30, 0x82, 0x03, 0x00, 0x30, 0x82, 0x01, 0xec, 0xa0, 0x03, - 0x02, 0x01, - 0x02, 0x02, 0x10, 0xbd, - 0x76, 0xdf, 0x42, 0x47, 0x0a, 0x00, 0x8d, 0x47, 0x3e, 0x74, - 0x3f, 0xa1, - 0xdc, 0x8b, 0xbd, 0x30, - 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1d, 0x05, 0x00, - 0x30, 0x2d, - 0x31, 0x2b, 0x30, 0x29, - 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x22, 0x77, 0x00, 0x32, - 0x00, 0x6b, - 0x00, 0x38, 0x00, 0x72, - 0x00, 0x32, 0x00, 0x2e, 0x00, 0x6d, 0x00, 0x61, 0x00, 0x74, - 0x00, 0x77, - 0x00, 0x73, 0x00, 0x2e, + 0x02, 0x01, 0x02, 0x02, 0x10, 0xbd, 0x76, 0xdf, 0x42, 0x47, + 0x0a, 0x00, 0x8d, 0x47, 0x3e, 0x74, 0x3f, 0xa1, 0xdc, 0x8b, + 0xbd, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1d, + 0x05, 0x00, 0x30, 0x2d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x22, 0x77, 0x00, 0x32, 0x00, 0x6b, + 0x00, 0x38, 0x00, 0x72, 0x00, 0x32, 0x00, 0x2e, 0x00, 0x6d, + 0x00, 0x61, 0x00, 0x74, 0x00, 0x77, 0x00, 0x73, 0x00, 0x2e, 0x00, 0x6e, 0x00, 0x65, 0x00, 0x74, 0x00, 0x00, 0x00, 0x30, - 0x1e, 0x17, - 0x0d, 0x31, 0x30, 0x30, - 0x34, 0x32, 0x38, 0x31, 0x31, 0x34, 0x31, 0x35, 0x34, 0x5a, - 0x17, 0x0d, - 0x31, 0x31, 0x30, 0x34, - 0x32, 0x38, 0x31, 0x31, 0x34, 0x31, 0x35, 0x34, 0x5a, 0x30, - 0x2d, 0x31, - 0x2b, 0x30, 0x29, 0x06, - 0x03, 0x55, 0x04, 0x03, 0x13, 0x22, 0x77, 0x00, 0x32, 0x00, - 0x6b, 0x00, - 0x38, 0x00, 0x72, 0x00, - 0x32, 0x00, 0x2e, 0x00, 0x6d, 0x00, 0x61, 0x00, 0x74, 0x00, - 0x77, 0x00, - 0x73, 0x00, 0x2e, 0x00, + 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x34, 0x32, 0x38, 0x31, + 0x31, 0x34, 0x31, 0x35, 0x34, 0x5a, 0x17, 0x0d, 0x31, 0x31, + 0x30, 0x34, 0x32, 0x38, 0x31, 0x31, 0x34, 0x31, 0x35, 0x34, + 0x5a, 0x30, 0x2d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x22, 0x77, 0x00, 0x32, 0x00, 0x6b, 0x00, + 0x38, 0x00, 0x72, 0x00, 0x32, 0x00, 0x2e, 0x00, 0x6d, 0x00, + 0x61, 0x00, 0x74, 0x00, 0x77, 0x00, 0x73, 0x00, 0x2e, 0x00, 0x6e, 0x00, 0x65, 0x00, 0x74, 0x00, 0x00, 0x00, 0x30, 0x82, - 0x01, 0x22, - 0x30, 0x0d, 0x06, 0x09, - 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, - 0x00, 0x03, - 0x82, 0x01, 0x0f, 0x00, - 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xaa, - 0xd7, 0x32, - 0x26, 0xd7, 0xfc, 0x69, - 0x57, 0x4a, 0x55, 0x08, 0x2b, 0x97, 0xc1, 0x5b, 0x90, 0xfd, - 0xe8, 0xf5, - 0xf7, 0x9e, 0x7d, 0x34, - 0xce, 0xe9, 0xbb, 0x38, 0xa0, 0x9f, 0xec, 0x84, 0x86, 0x3e, - 0x47, 0x2e, - 0x71, 0xd7, 0xc3, 0xbf, + 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, + 0x00, 0xaa, 0xd7, 0x32, 0x26, 0xd7, 0xfc, 0x69, 0x57, 0x4a, + 0x55, 0x08, 0x2b, 0x97, 0xc1, 0x5b, 0x90, 0xfd, 0xe8, 0xf5, + 0xf7, 0x9e, 0x7d, 0x34, 0xce, 0xe9, 0xbb, 0x38, 0xa0, 0x9f, + 0xec, 0x84, 0x86, 0x3e, 0x47, 0x2e, 0x71, 0xd7, 0xc3, 0xbf, 0x89, 0xf3, 0x80, 0xb5, 0x77, 0x80, 0xd3, 0xb0, 0x56, 0x6b, - 0x9c, 0xf4, - 0xd3, 0x42, 0x2b, 0x26, - 0x01, 0x5c, 0x42, 0xef, 0xf6, 0x51, 0x5a, 0xaa, 0x55, 0x6b, - 0x30, 0xd3, - 0x2c, 0xdc, 0xde, 0x36, - 0x4d, 0xdd, 0xf3, 0x5f, 0x59, 0xba, 0x57, 0xd8, 0x39, 0x0f, - 0x5b, 0xd3, - 0xe1, 0x34, 0x39, 0x22, - 0xaa, 0x71, 0x10, 0x59, 0x7a, 0xec, 0x9f, 0x1a, 0xf5, 0xa9, - 0x40, 0xd6, - 0x7b, 0x32, 0x5f, 0x19, - 0x85, 0xc0, 0xfd, 0xa6, 0x6c, 0x32, 0x58, 0xdc, 0x7c, 0x07, - 0x42, 0x36, - 0xd0, 0x57, 0x78, 0x63, + 0x9c, 0xf4, 0xd3, 0x42, 0x2b, 0x26, 0x01, 0x5c, 0x42, 0xef, + 0xf6, 0x51, 0x5a, 0xaa, 0x55, 0x6b, 0x30, 0xd3, 0x2c, 0xdc, + 0xde, 0x36, 0x4d, 0xdd, 0xf3, 0x5f, 0x59, 0xba, 0x57, 0xd8, + 0x39, 0x0f, 0x5b, 0xd3, 0xe1, 0x34, 0x39, 0x22, 0xaa, 0x71, + 0x10, 0x59, 0x7a, 0xec, 0x9f, 0x1a, 0xf5, 0xa9, 0x40, 0xd6, + 0x7b, 0x32, 0x5f, 0x19, 0x85, 0xc0, 0xfd, 0xa6, 0x6c, 0x32, + 0x58, 0xdc, 0x7c, 0x07, 0x42, 0x36, 0xd0, 0x57, 0x78, 0x63, 0x60, 0x92, 0x1d, 0x1f, 0x9d, 0xbd, 0xcc, 0xd7, 0xe3, 0x1a, - 0x57, 0xdb, - 0x70, 0x80, 0x89, 0x36, - 0x39, 0x01, 0x71, 0x5a, 0x2a, 0x05, 0x25, 0x13, 0x80, 0xf8, - 0x49, 0x48, - 0x5f, 0x06, 0xd0, 0xcb, - 0x2c, 0x58, 0x9a, 0xe7, 0x8b, 0x6d, 0x17, 0x2c, 0xb2, 0x97, - 0x2c, 0x15, - 0xc9, 0x73, 0x6d, 0x8f, - 0x4f, 0xf3, 0xf1, 0xb9, 0x70, 0x3f, 0xcb, 0x5f, 0x80, 0x85, - 0x8b, 0xdf, - 0xd2, 0x05, 0x95, 0x1c, - 0xe4, 0x37, 0xee, 0xd2, 0x62, 0x49, 0x08, 0xdf, 0xf6, 0x02, - 0xec, 0xe6, - 0x9a, 0x37, 0xfc, 0x21, + 0x57, 0xdb, 0x70, 0x80, 0x89, 0x36, 0x39, 0x01, 0x71, 0x5a, + 0x2a, 0x05, 0x25, 0x13, 0x80, 0xf8, 0x49, 0x48, 0x5f, 0x06, + 0xd0, 0xcb, 0x2c, 0x58, 0x9a, 0xe7, 0x8b, 0x6d, 0x17, 0x2c, + 0xb2, 0x97, 0x2c, 0x15, 0xc9, 0x73, 0x6d, 0x8f, 0x4f, 0xf3, + 0xf1, 0xb9, 0x70, 0x3f, 0xcb, 0x5f, 0x80, 0x85, 0x8b, 0xdf, + 0xd2, 0x05, 0x95, 0x1c, 0xe4, 0x37, 0xee, 0xd2, 0x62, 0x49, + 0x08, 0xdf, 0xf6, 0x02, 0xec, 0xe6, 0x9a, 0x37, 0xfc, 0x21, 0x7a, 0x98, 0x12, 0x1d, 0x79, 0xbf, 0xc7, 0x0f, 0x0a, 0x20, - 0xf8, 0xef, - 0xa5, 0xc6, 0x0e, 0x94, - 0x5e, 0x17, 0x94, 0x12, 0x42, 0xfe, 0xd7, 0x22, 0xbd, 0x31, - 0x27, 0xc7, - 0xdb, 0x4a, 0x4e, 0x95, - 0xe2, 0xc1, 0xdd, 0xe8, 0x0f, 0x7d, 0x1d, 0xe4, 0xfd, 0xb1, - 0x27, 0x7b, - 0xc1, 0x71, 0xfe, 0x27, - 0x47, 0x89, 0xf4, 0xfc, 0x84, 0xa5, 0x57, 0x5d, 0x21, 0x02, - 0x03, 0x01, - 0x00, 0x01, 0x81, 0x11, - 0x00, 0xbd, 0x8b, 0xdc, 0xa1, 0x3f, 0x74, 0x3e, 0x47, 0x8d, - 0x00, 0x0a, - 0x47, 0x42, 0xdf, 0x76, + 0xf8, 0xef, 0xa5, 0xc6, 0x0e, 0x94, 0x5e, 0x17, 0x94, 0x12, + 0x42, 0xfe, 0xd7, 0x22, 0xbd, 0x31, 0x27, 0xc7, 0xdb, 0x4a, + 0x4e, 0x95, 0xe2, 0xc1, 0xdd, 0xe8, 0x0f, 0x7d, 0x1d, 0xe4, + 0xfd, 0xb1, 0x27, 0x7b, 0xc1, 0x71, 0xfe, 0x27, 0x47, 0x89, + 0xf4, 0xfc, 0x84, 0xa5, 0x57, 0x5d, 0x21, 0x02, 0x03, 0x01, + 0x00, 0x01, 0x81, 0x11, 0x00, 0xbd, 0x8b, 0xdc, 0xa1, 0x3f, + 0x74, 0x3e, 0x47, 0x8d, 0x00, 0x0a, 0x47, 0x42, 0xdf, 0x76, 0xbd, 0x82, 0x11, 0x00, 0xbd, 0x8b, 0xdc, 0xa1, 0x3f, 0x74, - 0x3e, 0x47, - 0x8d, 0x00, 0x0a, 0x47, - 0x42, 0xdf, 0x76, 0xbd, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, - 0x03, 0x02, - 0x1d, 0x05, 0x00, 0x03, - 0x82, 0x01, 0x01, 0x00, 0xa7, 0xb0, 0x66, 0x75, 0x14, 0x7e, - 0x7d, 0xb5, - 0x31, 0xec, 0xb2, 0xeb, - 0x90, 0x80, 0x95, 0x25, 0x59, 0x0f, 0xe4, 0x15, 0x86, 0x2d, - 0x9d, 0xd7, - 0x35, 0xe9, 0x22, 0x74, - 0xe7, 0x85, 0x36, 0x19, 0x4f, 0x27, 0x5c, 0x17, 0x63, 0x7b, - 0x2a, 0xfe, - 0x59, 0xe9, 0x76, 0x77, + 0x3e, 0x47, 0x8d, 0x00, 0x0a, 0x47, 0x42, 0xdf, 0x76, 0xbd, + 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1d, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xa7, 0xb0, 0x66, 0x75, + 0x14, 0x7e, 0x7d, 0xb5, 0x31, 0xec, 0xb2, 0xeb, 0x90, 0x80, + 0x95, 0x25, 0x59, 0x0f, 0xe4, 0x15, 0x86, 0x2d, 0x9d, 0xd7, + 0x35, 0xe9, 0x22, 0x74, 0xe7, 0x85, 0x36, 0x19, 0x4f, 0x27, + 0x5c, 0x17, 0x63, 0x7b, 0x2a, 0xfe, 0x59, 0xe9, 0x76, 0x77, 0xd0, 0xc9, 0x40, 0x78, 0x7c, 0x31, 0x62, 0x1e, 0x87, 0x1b, - 0xc1, 0x19, - 0xef, 0x6f, 0x15, 0xe6, - 0xce, 0x74, 0x84, 0x6d, 0xd6, 0x3b, 0x57, 0xd9, 0xa9, 0x13, - 0xf6, 0x7d, - 0x84, 0xe7, 0x8f, 0xc6, - 0x01, 0x5f, 0xcf, 0xc4, 0x95, 0xc9, 0xde, 0x97, 0x17, 0x43, - 0x12, 0x70, - 0x27, 0xf9, 0xc4, 0xd7, - 0xe1, 0x05, 0xbb, 0x63, 0x87, 0x5f, 0xdc, 0x20, 0xbd, 0xd1, - 0xde, 0xd6, - 0x2d, 0x9f, 0x3f, 0x5d, - 0x0a, 0x27, 0x40, 0x11, 0x5f, 0x5d, 0x54, 0xa7, 0x28, 0xf9, - 0x03, 0x2e, - 0x84, 0x8d, 0x48, 0x60, + 0xc1, 0x19, 0xef, 0x6f, 0x15, 0xe6, 0xce, 0x74, 0x84, 0x6d, + 0xd6, 0x3b, 0x57, 0xd9, 0xa9, 0x13, 0xf6, 0x7d, 0x84, 0xe7, + 0x8f, 0xc6, 0x01, 0x5f, 0xcf, 0xc4, 0x95, 0xc9, 0xde, 0x97, + 0x17, 0x43, 0x12, 0x70, 0x27, 0xf9, 0xc4, 0xd7, 0xe1, 0x05, + 0xbb, 0x63, 0x87, 0x5f, 0xdc, 0x20, 0xbd, 0xd1, 0xde, 0xd6, + 0x2d, 0x9f, 0x3f, 0x5d, 0x0a, 0x27, 0x40, 0x11, 0x5f, 0x5d, + 0x54, 0xa7, 0x28, 0xf9, 0x03, 0x2e, 0x84, 0x8d, 0x48, 0x60, 0xa1, 0x71, 0xa3, 0x46, 0x69, 0xdb, 0x88, 0x7b, 0xc1, 0xb6, - 0x08, 0x2d, - 0xdf, 0x25, 0x9d, 0x32, - 0x76, 0x49, 0x0b, 0xba, 0xab, 0xdd, 0xc3, 0x00, 0x76, 0x8a, - 0x94, 0xd2, - 0x25, 0x43, 0xf0, 0xa9, - 0x98, 0x65, 0x94, 0xc7, 0xdd, 0x7c, 0xd4, 0xe2, 0xe8, 0x33, - 0xe2, 0x9a, - 0xe9, 0x75, 0xf0, 0x0f, - 0x61, 0x86, 0xee, 0x0e, 0xf7, 0x39, 0x6b, 0x30, 0x63, 0xe5, - 0x46, 0xd4, - 0x1c, 0x83, 0xa1, 0x28, - 0x79, 0x76, 0x81, 0x48, 0x38, 0x72, 0xbc, 0x3f, 0x25, 0x53, - 0x31, 0xaa, - 0x02, 0xd1, 0x9b, 0x03, + 0x08, 0x2d, 0xdf, 0x25, 0x9d, 0x32, 0x76, 0x49, 0x0b, 0xba, + 0xab, 0xdd, 0xc3, 0x00, 0x76, 0x8a, 0x94, 0xd2, 0x25, 0x43, + 0xf0, 0xa9, 0x98, 0x65, 0x94, 0xc7, 0xdd, 0x7c, 0xd4, 0xe2, + 0xe8, 0x33, 0xe2, 0x9a, 0xe9, 0x75, 0xf0, 0x0f, 0x61, 0x86, + 0xee, 0x0e, 0xf7, 0x39, 0x6b, 0x30, 0x63, 0xe5, 0x46, 0xd4, + 0x1c, 0x83, 0xa1, 0x28, 0x79, 0x76, 0x81, 0x48, 0x38, 0x72, + 0xbc, 0x3f, 0x25, 0x53, 0x31, 0xaa, 0x02, 0xd1, 0x9b, 0x03, 0xa2, 0x5c, 0x94, 0x21, 0xb3, 0x8e, 0xdf, 0x2a, 0xa5, 0x4c, - 0x65, 0xa2, - 0xf9, 0xac, 0x38, 0x7a, - 0xf9, 0x45, 0xb3, 0xd5, 0xda, 0xe5, 0xb9, 0x56, 0x9e, 0x47, - 0xd5, 0x06, - 0xe6, 0xca, 0xd7, 0x6e, - 0x06, 0xdb, 0x6e, 0xa7, 0x7b, 0x4b, 0x13, 0x40, 0x3c, 0x12, - 0x76, 0x99, - 0x65, 0xb4, 0x54, 0xa1, - 0xd8, 0x21, 0x5c, 0x27 + 0x65, 0xa2, 0xf9, 0xac, 0x38, 0x7a, 0xf9, 0x45, 0xb3, 0xd5, + 0xda, 0xe5, 0xb9, 0x56, 0x9e, 0x47, 0xd5, 0x06, 0xe6, 0xca, + 0xd7, 0x6e, 0x06, 0xdb, 0x6e, 0xa7, 0x7b, 0x4b, 0x13, 0x40, + 0x3c, 0x12, 0x76, 0x99, 0x65, 0xb4, 0x54, 0xa1, 0xd8, 0x21, + 0x5c, 0x27 }; gnutls_datum_t derCert = { der, sizeof(der) }; @@ -185,11 +118,9 @@ void doit(void) gnutls_x509_crt_t cert; int result; - unsigned char expectedId[] = - { 0xbd, 0x8b, 0xdc, 0xa1, 0x3f, 0x74, 0x3e, 0x47, 0x8d, 0x00, - 0x0a, 0x47, - 0x42, 0xdf, 0x76, 0xbd - }; + unsigned char expectedId[] = { 0xbd, 0x8b, 0xdc, 0xa1, 0x3f, 0x74, + 0x3e, 0x47, 0x8d, 0x00, 0x0a, 0x47, + 0x42, 0xdf, 0x76, 0xbd }; char buf[17]; size_t buf_size; diff --git a/tests/chainverify-unsorted.c b/tests/chainverify-unsorted.c index 52291393d8..3b2c5b83c3 100644 --- a/tests/chainverify-unsorted.c +++ b/tests/chainverify-unsorted.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -44,546 +44,554 @@ static void tls_log_func(int level, const char *str) } const char ca_str[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG\n" - "A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz\n" - "cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2\n" - "MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV\n" - "BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt\n" - "YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN\n" - "ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE\n" - "BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is\n" - "I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G\n" - "CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do\n" - "lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc\n" - "AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k\n" - "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG\n" + "A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz\n" + "cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2\n" + "MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV\n" + "BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt\n" + "YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN\n" + "ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE\n" + "BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is\n" + "I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G\n" + "CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do\n" + "lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc\n" + "AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t ca = { (void *)ca_str, sizeof(ca_str) }; /* Chain1 is sorted */ static const char chain1[] = { /* chain[0] */ "-----BEGIN CERTIFICATE-----\n" - "MIIGCDCCBPCgAwIBAgIQakrDGzEQ5utI8PxRo5oXHzANBgkqhkiG9w0BAQUFADCB\n" - "vjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" - "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n" - "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMv\n" - "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0Ew\n" - "HhcNMDcwNTA5MDAwMDAwWhcNMDkwNTA4MjM1OTU5WjCCAUAxEDAOBgNVBAUTBzI0\n" - "OTc4ODYxEzARBgsrBgEEAYI3PAIBAxMCVVMxGTAXBgsrBgEEAYI3PAIBAhMIRGVs\n" - "YXdhcmUxCzAJBgNVBAYTAlVTMQ4wDAYDVQQRFAU5NDA0MzETMBEGA1UECBMKQ2Fs\n" - "aWZvcm5pYTEWMBQGA1UEBxQNTW91bnRhaW4gVmlldzEiMCAGA1UECRQZNDg3IEVh\n" - "c3QgTWlkZGxlZmllbGQgUm9hZDEXMBUGA1UEChQOVmVyaVNpZ24sIEluYy4xJTAj\n" - "BgNVBAsUHFByb2R1Y3Rpb24gU2VjdXJpdHkgU2VydmljZXMxMzAxBgNVBAsUKlRl\n" - "cm1zIG9mIHVzZSBhdCB3d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjEZMBcGA1UE\n" - "AxQQd3d3LnZlcmlzaWduLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA\n" - "xxA35ev879drgQCpENGRQ3ARaCPz/WneT9dtMe3qGNvzXQJs6cjm1Bx8XegyW1gB\n" - "jJX5Zl4WWbr9wpAWZ1YyJ0bEyShIGmkU8fPfbcXYwSyWoWwvE5NRaUB2ztmfAVdv\n" - "OaGMUKxny2Dnj3tAdaQ+FOeRDJJYg6K1hzczq/otOfsCAwEAAaOCAf8wggH7MAkG\n" - "A1UdEwQCMAAwHQYDVR0OBBYEFPFaiZNVR0u6UfVO4MsWVfTXzDhnMAsGA1UdDwQE\n" - "AwIFoDA+BgNVHR8ENzA1MDOgMaAvhi1odHRwOi8vRVZJbnRsLWNybC52ZXJpc2ln\n" - "bi5jb20vRVZJbnRsMjAwNi5jcmwwRAYDVR0gBD0wOzA5BgtghkgBhvhFAQcXBjAq\n" - "MCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMDQGA1Ud\n" - "JQQtMCsGCCsGAQUFBwMBBggrBgEFBQcDAgYJYIZIAYb4QgQBBgorBgEEAYI3CgMD\n" - "MB8GA1UdIwQYMBaAFE5DyB127zdTek/yWG+U8zji1b3fMHYGCCsGAQUFBwEBBGow\n" - "aDArBggrBgEFBQcwAYYfaHR0cDovL0VWSW50bC1vY3NwLnZlcmlzaWduLmNvbTA5\n" - "BggrBgEFBQcwAoYtaHR0cDovL0VWSW50bC1haWEudmVyaXNpZ24uY29tL0VWSW50\n" - "bDIwMDYuY2VyMG0GCCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAh\n" - "MB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dv\n" - "LnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMA0GCSqGSIb3DQEBBQUAA4IBAQBEueAg\n" - "xZJrjGPKAZk1NT8VtTn0yi87i9XUnSOnkFkAuI3THDd+cWbNSUzc5uFJg42GhMK7\n" - "S1Rojm8FHxESovLvimH/w111BKF9wNU2XSOb9KohfYq3GRiQG8O7v9JwIjjLepkc\n" - "iyITx7sYiJ+kwZlrNBwN6TwVHrONg6NzyzSnxCg+XgKRbJu2PqEQb6uQVkYhb+Oq\n" - "Vi9d4by9YqpnuXImSffQ0OZ/6s3Rl6vY08zIPqa6OVfjGs/H45ETblzezcUKpX0L\n" - "cqnOwUB9dVuPhtlX3X/hgz/ROxz96NBwwzha58HUgfEfkVtm+piI6TTI7XxS/7Av\n" - "nKMfhbyFQYPQ6J9g\n" "-----END CERTIFICATE-----\n" - /* chain[1] */ - "-----BEGIN CERTIFICATE-----\n" - "MIIGCjCCBPKgAwIBAgIQESoAbTflEG/WynzD77rMGDANBgkqhkiG9w0BAQUFADCB\n" - "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" - "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n" - "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n" - "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n" - "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBvjEL\n" - "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n" - "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n" - "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMvVmVy\n" - "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0EwggEi\n" - "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9Voi6iDRkZM/NyrDu5xlzxXLZ\n" - "u0W8taj/g74cA9vtibcuEBolvFXKQaGfC88ZXnC5XjlLnjEcX4euKqqoK6IbOxAj\n" - "XxOx3QiMThTag4HjtYzjaO0kZ85Wtqybc5ZE24qMs9bwcZOO23FUSutzWWqPcFEs\n" - "A5+X0cwRerxiDZUqyRx1V+n1x+q6hDXLx4VafuRN4RGXfQ4gNEXb8aIJ6+s9nriW\n" - "Q140SwglHkMaotm3igE0PcP45a9PjP/NZfAjTsWXs1zakByChQ0GDcEitnsopAPD\n" - "TFPRWLxyvAg5/KB2qKjpS26IPeOzMSWMcylIDjJ5Bu09Q/T25On8fb6OCNUfAgMB\n" - "AAGjggH0MIIB8DAdBgNVHQ4EFgQUTkPIHXbvN1N6T/JYb5TzOOLVvd8wEgYDVR0T\n" - "AQH/BAgwBgEB/wIBADA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYc\n" - "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2NwczA9BgNVHR8ENjA0MDKgMKAuhixo\n" - "dHRwOi8vRVZTZWN1cmUtY3JsLnZlcmlzaWduLmNvbS9wY2EzLWc1LmNybDAgBgNV\n" - "HSUEGTAXBglghkgBhvhCBAEGCmCGSAGG+EUBCAEwDgYDVR0PAQH/BAQDAgEGMBEG\n" - "CWCGSAGG+EIBAQQEAwIBBjBtBggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglpbWFn\n" - "ZS9naWYwITAfMAcGBSsOAwIaBBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRw\n" - "Oi8vbG9nby52ZXJpc2lnbi5jb20vdnNsb2dvLmdpZjApBgNVHREEIjAgpB4wHDEa\n" - "MBgGA1UEAxMRQ2xhc3MzQ0EyMDQ4LTEtNDgwPQYIKwYBBQUHAQEEMTAvMC0GCCsG\n" - "AQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5jb20wHwYDVR0j\n" - "BBgwFoAUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwDQYJKoZIhvcNAQEFBQADggEBAFqi\n" - "sb/rjdQ4qIBywtw4Lqyncfkro7tHu21pbxA2mIzHVi67vKtKm3rW8oKT4BT+is6D\n" - "t4Pbk4errGV5Sf1XqbHOCR+6EBXECQ5i4/kKJdVkmPDyqA92Mn6R5hjuvOfa0E6N\n" - "eLvincBZK8DOlQ0kDHLKNF5wIokrSrDxaIfz7kSNKEB3OW5IckUxXWs5DoYC6maZ\n" - "kzEP32fepp+MnUzOcW86Ifa5ND/5btia9z7a84Ffelxtj3z2mXS3/+QXXe1hXqtI\n" - "u5aNZkU5tBIK9nDpnHYiS2DpKhs0Sfei1GfAsSatE7rZhAHBq+GObXAWO3eskZq7\n" - "Gh/aWKfkT8Fhrryi/ks=\n" "-----END CERTIFICATE-----\n" - /* chain[2] */ - "-----BEGIN CERTIFICATE-----\n" - "MIIE/zCCBGigAwIBAgIQY5Jrio9Agv2swDvTeCmmwDANBgkqhkiG9w0BAQUFADBf\n" - "MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT\n" - "LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw\n" - "HhcNMDYxMTA4MDAwMDAwWhcNMjExMTA3MjM1OTU5WjCByjELMAkGA1UEBhMCVVMx\n" - "FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz\n" - "dCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZv\n" - "ciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAz\n" - "IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEi\n" - "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8\n" - "RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbext0uz/o9+B1fs70Pb\n" - "ZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhDY2pSS9KP6HBR\n" - "TdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/\n" - "Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNH\n" - "iDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMB\n" - "AAGjggHKMIIBxjAPBgNVHRMBAf8EBTADAQH/MDEGA1UdHwQqMCgwJqAkoCKGIGh0\n" - "dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA4GA1UdDwEB/wQEAwIBBjBt\n" - "BggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglpbWFnZS9naWYwITAfMAcGBSsOAwIa\n" - "BBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRwOi8vbG9nby52ZXJpc2lnbi5j\n" - "b20vdnNsb2dvLmdpZjA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYc\n" - "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2NwczAdBgNVHQ4EFgQUf9Nlp8Ld7Lvw\n" - "MAnzQzn6Aq8zMTMwgYAGA1UdIwR5MHehY6RhMF8xCzAJBgNVBAYTAlVTMRcwFQYD\n" - "VQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMyBQdWJsaWMgUHJp\n" - "bWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eYIQcLrkHRDZKTS2OMp7A8y6vzAg\n" - "BgNVHSUEGTAXBglghkgBhvhCBAEGCmCGSAGG+EUBCAEwDQYJKoZIhvcNAQEFBQAD\n" - "gYEAUNfnArcMK6xK11/59ADJdeNqKOck4skH3qw6WCAYQxfrcn4eobTInOn5G3Gu\n" - "39g6DapSHmBex2UtZSxvKnJVlWYQgE4P4wGoXdzV69YdCNssXNVVc59DYhDH05dZ\n" - "P4sJH99fucYDkJjUgRUYw35ww0OFwKgUp3CxiizbXxCqEQc=\n" - "-----END CERTIFICATE-----\n" - /* chain[3] (CA) */ + "MIIGCDCCBPCgAwIBAgIQakrDGzEQ5utI8PxRo5oXHzANBgkqhkiG9w0BAQUFADCB\n" + "vjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" + "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n" + "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMv\n" + "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0Ew\n" + "HhcNMDcwNTA5MDAwMDAwWhcNMDkwNTA4MjM1OTU5WjCCAUAxEDAOBgNVBAUTBzI0\n" + "OTc4ODYxEzARBgsrBgEEAYI3PAIBAxMCVVMxGTAXBgsrBgEEAYI3PAIBAhMIRGVs\n" + "YXdhcmUxCzAJBgNVBAYTAlVTMQ4wDAYDVQQRFAU5NDA0MzETMBEGA1UECBMKQ2Fs\n" + "aWZvcm5pYTEWMBQGA1UEBxQNTW91bnRhaW4gVmlldzEiMCAGA1UECRQZNDg3IEVh\n" + "c3QgTWlkZGxlZmllbGQgUm9hZDEXMBUGA1UEChQOVmVyaVNpZ24sIEluYy4xJTAj\n" + "BgNVBAsUHFByb2R1Y3Rpb24gU2VjdXJpdHkgU2VydmljZXMxMzAxBgNVBAsUKlRl\n" + "cm1zIG9mIHVzZSBhdCB3d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjEZMBcGA1UE\n" + "AxQQd3d3LnZlcmlzaWduLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA\n" + "xxA35ev879drgQCpENGRQ3ARaCPz/WneT9dtMe3qGNvzXQJs6cjm1Bx8XegyW1gB\n" + "jJX5Zl4WWbr9wpAWZ1YyJ0bEyShIGmkU8fPfbcXYwSyWoWwvE5NRaUB2ztmfAVdv\n" + "OaGMUKxny2Dnj3tAdaQ+FOeRDJJYg6K1hzczq/otOfsCAwEAAaOCAf8wggH7MAkG\n" + "A1UdEwQCMAAwHQYDVR0OBBYEFPFaiZNVR0u6UfVO4MsWVfTXzDhnMAsGA1UdDwQE\n" + "AwIFoDA+BgNVHR8ENzA1MDOgMaAvhi1odHRwOi8vRVZJbnRsLWNybC52ZXJpc2ln\n" + "bi5jb20vRVZJbnRsMjAwNi5jcmwwRAYDVR0gBD0wOzA5BgtghkgBhvhFAQcXBjAq\n" + "MCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMDQGA1Ud\n" + "JQQtMCsGCCsGAQUFBwMBBggrBgEFBQcDAgYJYIZIAYb4QgQBBgorBgEEAYI3CgMD\n" + "MB8GA1UdIwQYMBaAFE5DyB127zdTek/yWG+U8zji1b3fMHYGCCsGAQUFBwEBBGow\n" + "aDArBggrBgEFBQcwAYYfaHR0cDovL0VWSW50bC1vY3NwLnZlcmlzaWduLmNvbTA5\n" + "BggrBgEFBQcwAoYtaHR0cDovL0VWSW50bC1haWEudmVyaXNpZ24uY29tL0VWSW50\n" + "bDIwMDYuY2VyMG0GCCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAh\n" + "MB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dv\n" + "LnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMA0GCSqGSIb3DQEBBQUAA4IBAQBEueAg\n" + "xZJrjGPKAZk1NT8VtTn0yi87i9XUnSOnkFkAuI3THDd+cWbNSUzc5uFJg42GhMK7\n" + "S1Rojm8FHxESovLvimH/w111BKF9wNU2XSOb9KohfYq3GRiQG8O7v9JwIjjLepkc\n" + "iyITx7sYiJ+kwZlrNBwN6TwVHrONg6NzyzSnxCg+XgKRbJu2PqEQb6uQVkYhb+Oq\n" + "Vi9d4by9YqpnuXImSffQ0OZ/6s3Rl6vY08zIPqa6OVfjGs/H45ETblzezcUKpX0L\n" + "cqnOwUB9dVuPhtlX3X/hgz/ROxz96NBwwzha58HUgfEfkVtm+piI6TTI7XxS/7Av\n" + "nKMfhbyFQYPQ6J9g\n" + "-----END CERTIFICATE-----\n" + /* chain[1] */ + "-----BEGIN CERTIFICATE-----\n" + "MIIGCjCCBPKgAwIBAgIQESoAbTflEG/WynzD77rMGDANBgkqhkiG9w0BAQUFADCB\n" + "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" + "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n" + "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n" + "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n" + "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBvjEL\n" + "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n" + "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n" + "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMvVmVy\n" + "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0EwggEi\n" + "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9Voi6iDRkZM/NyrDu5xlzxXLZ\n" + "u0W8taj/g74cA9vtibcuEBolvFXKQaGfC88ZXnC5XjlLnjEcX4euKqqoK6IbOxAj\n" + "XxOx3QiMThTag4HjtYzjaO0kZ85Wtqybc5ZE24qMs9bwcZOO23FUSutzWWqPcFEs\n" + "A5+X0cwRerxiDZUqyRx1V+n1x+q6hDXLx4VafuRN4RGXfQ4gNEXb8aIJ6+s9nriW\n" + "Q140SwglHkMaotm3igE0PcP45a9PjP/NZfAjTsWXs1zakByChQ0GDcEitnsopAPD\n" + "TFPRWLxyvAg5/KB2qKjpS26IPeOzMSWMcylIDjJ5Bu09Q/T25On8fb6OCNUfAgMB\n" + "AAGjggH0MIIB8DAdBgNVHQ4EFgQUTkPIHXbvN1N6T/JYb5TzOOLVvd8wEgYDVR0T\n" + "AQH/BAgwBgEB/wIBADA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYc\n" + "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2NwczA9BgNVHR8ENjA0MDKgMKAuhixo\n" + "dHRwOi8vRVZTZWN1cmUtY3JsLnZlcmlzaWduLmNvbS9wY2EzLWc1LmNybDAgBgNV\n" + "HSUEGTAXBglghkgBhvhCBAEGCmCGSAGG+EUBCAEwDgYDVR0PAQH/BAQDAgEGMBEG\n" + "CWCGSAGG+EIBAQQEAwIBBjBtBggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglpbWFn\n" + "ZS9naWYwITAfMAcGBSsOAwIaBBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRw\n" + "Oi8vbG9nby52ZXJpc2lnbi5jb20vdnNsb2dvLmdpZjApBgNVHREEIjAgpB4wHDEa\n" + "MBgGA1UEAxMRQ2xhc3MzQ0EyMDQ4LTEtNDgwPQYIKwYBBQUHAQEEMTAvMC0GCCsG\n" + "AQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5jb20wHwYDVR0j\n" + "BBgwFoAUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwDQYJKoZIhvcNAQEFBQADggEBAFqi\n" + "sb/rjdQ4qIBywtw4Lqyncfkro7tHu21pbxA2mIzHVi67vKtKm3rW8oKT4BT+is6D\n" + "t4Pbk4errGV5Sf1XqbHOCR+6EBXECQ5i4/kKJdVkmPDyqA92Mn6R5hjuvOfa0E6N\n" + "eLvincBZK8DOlQ0kDHLKNF5wIokrSrDxaIfz7kSNKEB3OW5IckUxXWs5DoYC6maZ\n" + "kzEP32fepp+MnUzOcW86Ifa5ND/5btia9z7a84Ffelxtj3z2mXS3/+QXXe1hXqtI\n" + "u5aNZkU5tBIK9nDpnHYiS2DpKhs0Sfei1GfAsSatE7rZhAHBq+GObXAWO3eskZq7\n" + "Gh/aWKfkT8Fhrryi/ks=\n" + "-----END CERTIFICATE-----\n" + /* chain[2] */ + "-----BEGIN CERTIFICATE-----\n" + "MIIE/zCCBGigAwIBAgIQY5Jrio9Agv2swDvTeCmmwDANBgkqhkiG9w0BAQUFADBf\n" + "MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT\n" + "LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw\n" + "HhcNMDYxMTA4MDAwMDAwWhcNMjExMTA3MjM1OTU5WjCByjELMAkGA1UEBhMCVVMx\n" + "FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz\n" + "dCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZv\n" + "ciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAz\n" + "IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEi\n" + "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8\n" + "RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbext0uz/o9+B1fs70Pb\n" + "ZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhDY2pSS9KP6HBR\n" + "TdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/\n" + "Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNH\n" + "iDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMB\n" + "AAGjggHKMIIBxjAPBgNVHRMBAf8EBTADAQH/MDEGA1UdHwQqMCgwJqAkoCKGIGh0\n" + "dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA4GA1UdDwEB/wQEAwIBBjBt\n" + "BggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglpbWFnZS9naWYwITAfMAcGBSsOAwIa\n" + "BBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRwOi8vbG9nby52ZXJpc2lnbi5j\n" + "b20vdnNsb2dvLmdpZjA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYc\n" + "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2NwczAdBgNVHQ4EFgQUf9Nlp8Ld7Lvw\n" + "MAnzQzn6Aq8zMTMwgYAGA1UdIwR5MHehY6RhMF8xCzAJBgNVBAYTAlVTMRcwFQYD\n" + "VQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMyBQdWJsaWMgUHJp\n" + "bWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eYIQcLrkHRDZKTS2OMp7A8y6vzAg\n" + "BgNVHSUEGTAXBglghkgBhvhCBAEGCmCGSAGG+EUBCAEwDQYJKoZIhvcNAQEFBQAD\n" + "gYEAUNfnArcMK6xK11/59ADJdeNqKOck4skH3qw6WCAYQxfrcn4eobTInOn5G3Gu\n" + "39g6DapSHmBex2UtZSxvKnJVlWYQgE4P4wGoXdzV69YdCNssXNVVc59DYhDH05dZ\n" + "P4sJH99fucYDkJjUgRUYw35ww0OFwKgUp3CxiizbXxCqEQc=\n" + "-----END CERTIFICATE-----\n" + /* chain[3] (CA) */ "-----BEGIN CERTIFICATE-----\n" - "MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG\n" - "A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz\n" - "cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2\n" - "MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV\n" - "BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt\n" - "YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN\n" - "ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE\n" - "BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is\n" - "I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G\n" - "CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do\n" - "lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc\n" - "AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k\n" - "-----END CERTIFICATE-----\n" + "MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG\n" + "A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz\n" + "cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2\n" + "MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV\n" + "BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt\n" + "YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN\n" + "ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE\n" + "BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is\n" + "I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G\n" + "CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do\n" + "lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc\n" + "AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k\n" + "-----END CERTIFICATE-----\n" }; /* Chain2 is unsorted - reverse order */ static const char chain2[] = { /* chain[0] */ "-----BEGIN CERTIFICATE-----\n" - "MIIGCDCCBPCgAwIBAgIQakrDGzEQ5utI8PxRo5oXHzANBgkqhkiG9w0BAQUFADCB\n" - "vjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" - "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n" - "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMv\n" - "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0Ew\n" - "HhcNMDcwNTA5MDAwMDAwWhcNMDkwNTA4MjM1OTU5WjCCAUAxEDAOBgNVBAUTBzI0\n" - "OTc4ODYxEzARBgsrBgEEAYI3PAIBAxMCVVMxGTAXBgsrBgEEAYI3PAIBAhMIRGVs\n" - "YXdhcmUxCzAJBgNVBAYTAlVTMQ4wDAYDVQQRFAU5NDA0MzETMBEGA1UECBMKQ2Fs\n" - "aWZvcm5pYTEWMBQGA1UEBxQNTW91bnRhaW4gVmlldzEiMCAGA1UECRQZNDg3IEVh\n" - "c3QgTWlkZGxlZmllbGQgUm9hZDEXMBUGA1UEChQOVmVyaVNpZ24sIEluYy4xJTAj\n" - "BgNVBAsUHFByb2R1Y3Rpb24gU2VjdXJpdHkgU2VydmljZXMxMzAxBgNVBAsUKlRl\n" - "cm1zIG9mIHVzZSBhdCB3d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjEZMBcGA1UE\n" - "AxQQd3d3LnZlcmlzaWduLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA\n" - "xxA35ev879drgQCpENGRQ3ARaCPz/WneT9dtMe3qGNvzXQJs6cjm1Bx8XegyW1gB\n" - "jJX5Zl4WWbr9wpAWZ1YyJ0bEyShIGmkU8fPfbcXYwSyWoWwvE5NRaUB2ztmfAVdv\n" - "OaGMUKxny2Dnj3tAdaQ+FOeRDJJYg6K1hzczq/otOfsCAwEAAaOCAf8wggH7MAkG\n" - "A1UdEwQCMAAwHQYDVR0OBBYEFPFaiZNVR0u6UfVO4MsWVfTXzDhnMAsGA1UdDwQE\n" - "AwIFoDA+BgNVHR8ENzA1MDOgMaAvhi1odHRwOi8vRVZJbnRsLWNybC52ZXJpc2ln\n" - "bi5jb20vRVZJbnRsMjAwNi5jcmwwRAYDVR0gBD0wOzA5BgtghkgBhvhFAQcXBjAq\n" - "MCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMDQGA1Ud\n" - "JQQtMCsGCCsGAQUFBwMBBggrBgEFBQcDAgYJYIZIAYb4QgQBBgorBgEEAYI3CgMD\n" - "MB8GA1UdIwQYMBaAFE5DyB127zdTek/yWG+U8zji1b3fMHYGCCsGAQUFBwEBBGow\n" - "aDArBggrBgEFBQcwAYYfaHR0cDovL0VWSW50bC1vY3NwLnZlcmlzaWduLmNvbTA5\n" - "BggrBgEFBQcwAoYtaHR0cDovL0VWSW50bC1haWEudmVyaXNpZ24uY29tL0VWSW50\n" - "bDIwMDYuY2VyMG0GCCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAh\n" - "MB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dv\n" - "LnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMA0GCSqGSIb3DQEBBQUAA4IBAQBEueAg\n" - "xZJrjGPKAZk1NT8VtTn0yi87i9XUnSOnkFkAuI3THDd+cWbNSUzc5uFJg42GhMK7\n" - "S1Rojm8FHxESovLvimH/w111BKF9wNU2XSOb9KohfYq3GRiQG8O7v9JwIjjLepkc\n" - "iyITx7sYiJ+kwZlrNBwN6TwVHrONg6NzyzSnxCg+XgKRbJu2PqEQb6uQVkYhb+Oq\n" - "Vi9d4by9YqpnuXImSffQ0OZ/6s3Rl6vY08zIPqa6OVfjGs/H45ETblzezcUKpX0L\n" - "cqnOwUB9dVuPhtlX3X/hgz/ROxz96NBwwzha58HUgfEfkVtm+piI6TTI7XxS/7Av\n" - "nKMfhbyFQYPQ6J9g\n" "-----END CERTIFICATE-----\n" - /* chain[3] (CA) */ - "-----BEGIN CERTIFICATE-----\n" - "MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG\n" - "A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz\n" - "cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2\n" - "MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV\n" - "BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt\n" - "YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN\n" - "ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE\n" - "BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is\n" - "I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G\n" - "CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do\n" - "lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc\n" - "AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k\n" - "-----END CERTIFICATE-----\n" - /* chain[2] */ - "-----BEGIN CERTIFICATE-----\n" - "MIIE/zCCBGigAwIBAgIQY5Jrio9Agv2swDvTeCmmwDANBgkqhkiG9w0BAQUFADBf\n" - "MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT\n" - "LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw\n" - "HhcNMDYxMTA4MDAwMDAwWhcNMjExMTA3MjM1OTU5WjCByjELMAkGA1UEBhMCVVMx\n" - "FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz\n" - "dCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZv\n" - "ciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAz\n" - "IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEi\n" - "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8\n" - "RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbext0uz/o9+B1fs70Pb\n" - "ZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhDY2pSS9KP6HBR\n" - "TdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/\n" - "Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNH\n" - "iDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMB\n" - "AAGjggHKMIIBxjAPBgNVHRMBAf8EBTADAQH/MDEGA1UdHwQqMCgwJqAkoCKGIGh0\n" - "dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA4GA1UdDwEB/wQEAwIBBjBt\n" - "BggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglpbWFnZS9naWYwITAfMAcGBSsOAwIa\n" - "BBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRwOi8vbG9nby52ZXJpc2lnbi5j\n" - "b20vdnNsb2dvLmdpZjA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYc\n" - "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2NwczAdBgNVHQ4EFgQUf9Nlp8Ld7Lvw\n" - "MAnzQzn6Aq8zMTMwgYAGA1UdIwR5MHehY6RhMF8xCzAJBgNVBAYTAlVTMRcwFQYD\n" - "VQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMyBQdWJsaWMgUHJp\n" - "bWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eYIQcLrkHRDZKTS2OMp7A8y6vzAg\n" - "BgNVHSUEGTAXBglghkgBhvhCBAEGCmCGSAGG+EUBCAEwDQYJKoZIhvcNAQEFBQAD\n" - "gYEAUNfnArcMK6xK11/59ADJdeNqKOck4skH3qw6WCAYQxfrcn4eobTInOn5G3Gu\n" - "39g6DapSHmBex2UtZSxvKnJVlWYQgE4P4wGoXdzV69YdCNssXNVVc59DYhDH05dZ\n" - "P4sJH99fucYDkJjUgRUYw35ww0OFwKgUp3CxiizbXxCqEQc=\n" - "-----END CERTIFICATE-----\n" - /* chain[1] */ + "MIIGCDCCBPCgAwIBAgIQakrDGzEQ5utI8PxRo5oXHzANBgkqhkiG9w0BAQUFADCB\n" + "vjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" + "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n" + "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMv\n" + "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0Ew\n" + "HhcNMDcwNTA5MDAwMDAwWhcNMDkwNTA4MjM1OTU5WjCCAUAxEDAOBgNVBAUTBzI0\n" + "OTc4ODYxEzARBgsrBgEEAYI3PAIBAxMCVVMxGTAXBgsrBgEEAYI3PAIBAhMIRGVs\n" + "YXdhcmUxCzAJBgNVBAYTAlVTMQ4wDAYDVQQRFAU5NDA0MzETMBEGA1UECBMKQ2Fs\n" + "aWZvcm5pYTEWMBQGA1UEBxQNTW91bnRhaW4gVmlldzEiMCAGA1UECRQZNDg3IEVh\n" + "c3QgTWlkZGxlZmllbGQgUm9hZDEXMBUGA1UEChQOVmVyaVNpZ24sIEluYy4xJTAj\n" + "BgNVBAsUHFByb2R1Y3Rpb24gU2VjdXJpdHkgU2VydmljZXMxMzAxBgNVBAsUKlRl\n" + "cm1zIG9mIHVzZSBhdCB3d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjEZMBcGA1UE\n" + "AxQQd3d3LnZlcmlzaWduLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA\n" + "xxA35ev879drgQCpENGRQ3ARaCPz/WneT9dtMe3qGNvzXQJs6cjm1Bx8XegyW1gB\n" + "jJX5Zl4WWbr9wpAWZ1YyJ0bEyShIGmkU8fPfbcXYwSyWoWwvE5NRaUB2ztmfAVdv\n" + "OaGMUKxny2Dnj3tAdaQ+FOeRDJJYg6K1hzczq/otOfsCAwEAAaOCAf8wggH7MAkG\n" + "A1UdEwQCMAAwHQYDVR0OBBYEFPFaiZNVR0u6UfVO4MsWVfTXzDhnMAsGA1UdDwQE\n" + "AwIFoDA+BgNVHR8ENzA1MDOgMaAvhi1odHRwOi8vRVZJbnRsLWNybC52ZXJpc2ln\n" + "bi5jb20vRVZJbnRsMjAwNi5jcmwwRAYDVR0gBD0wOzA5BgtghkgBhvhFAQcXBjAq\n" + "MCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMDQGA1Ud\n" + "JQQtMCsGCCsGAQUFBwMBBggrBgEFBQcDAgYJYIZIAYb4QgQBBgorBgEEAYI3CgMD\n" + "MB8GA1UdIwQYMBaAFE5DyB127zdTek/yWG+U8zji1b3fMHYGCCsGAQUFBwEBBGow\n" + "aDArBggrBgEFBQcwAYYfaHR0cDovL0VWSW50bC1vY3NwLnZlcmlzaWduLmNvbTA5\n" + "BggrBgEFBQcwAoYtaHR0cDovL0VWSW50bC1haWEudmVyaXNpZ24uY29tL0VWSW50\n" + "bDIwMDYuY2VyMG0GCCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAh\n" + "MB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dv\n" + "LnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMA0GCSqGSIb3DQEBBQUAA4IBAQBEueAg\n" + "xZJrjGPKAZk1NT8VtTn0yi87i9XUnSOnkFkAuI3THDd+cWbNSUzc5uFJg42GhMK7\n" + "S1Rojm8FHxESovLvimH/w111BKF9wNU2XSOb9KohfYq3GRiQG8O7v9JwIjjLepkc\n" + "iyITx7sYiJ+kwZlrNBwN6TwVHrONg6NzyzSnxCg+XgKRbJu2PqEQb6uQVkYhb+Oq\n" + "Vi9d4by9YqpnuXImSffQ0OZ/6s3Rl6vY08zIPqa6OVfjGs/H45ETblzezcUKpX0L\n" + "cqnOwUB9dVuPhtlX3X/hgz/ROxz96NBwwzha58HUgfEfkVtm+piI6TTI7XxS/7Av\n" + "nKMfhbyFQYPQ6J9g\n" + "-----END CERTIFICATE-----\n" + /* chain[3] (CA) */ "-----BEGIN CERTIFICATE-----\n" - "MIIGCjCCBPKgAwIBAgIQESoAbTflEG/WynzD77rMGDANBgkqhkiG9w0BAQUFADCB\n" - "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" - "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n" - "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n" - "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n" - "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBvjEL\n" - "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n" - "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n" - "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMvVmVy\n" - "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0EwggEi\n" - "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9Voi6iDRkZM/NyrDu5xlzxXLZ\n" - "u0W8taj/g74cA9vtibcuEBolvFXKQaGfC88ZXnC5XjlLnjEcX4euKqqoK6IbOxAj\n" - "XxOx3QiMThTag4HjtYzjaO0kZ85Wtqybc5ZE24qMs9bwcZOO23FUSutzWWqPcFEs\n" - "A5+X0cwRerxiDZUqyRx1V+n1x+q6hDXLx4VafuRN4RGXfQ4gNEXb8aIJ6+s9nriW\n" - "Q140SwglHkMaotm3igE0PcP45a9PjP/NZfAjTsWXs1zakByChQ0GDcEitnsopAPD\n" - "TFPRWLxyvAg5/KB2qKjpS26IPeOzMSWMcylIDjJ5Bu09Q/T25On8fb6OCNUfAgMB\n" - "AAGjggH0MIIB8DAdBgNVHQ4EFgQUTkPIHXbvN1N6T/JYb5TzOOLVvd8wEgYDVR0T\n" - "AQH/BAgwBgEB/wIBADA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYc\n" - "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2NwczA9BgNVHR8ENjA0MDKgMKAuhixo\n" - "dHRwOi8vRVZTZWN1cmUtY3JsLnZlcmlzaWduLmNvbS9wY2EzLWc1LmNybDAgBgNV\n" - "HSUEGTAXBglghkgBhvhCBAEGCmCGSAGG+EUBCAEwDgYDVR0PAQH/BAQDAgEGMBEG\n" - "CWCGSAGG+EIBAQQEAwIBBjBtBggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglpbWFn\n" - "ZS9naWYwITAfMAcGBSsOAwIaBBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRw\n" - "Oi8vbG9nby52ZXJpc2lnbi5jb20vdnNsb2dvLmdpZjApBgNVHREEIjAgpB4wHDEa\n" - "MBgGA1UEAxMRQ2xhc3MzQ0EyMDQ4LTEtNDgwPQYIKwYBBQUHAQEEMTAvMC0GCCsG\n" - "AQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5jb20wHwYDVR0j\n" - "BBgwFoAUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwDQYJKoZIhvcNAQEFBQADggEBAFqi\n" - "sb/rjdQ4qIBywtw4Lqyncfkro7tHu21pbxA2mIzHVi67vKtKm3rW8oKT4BT+is6D\n" - "t4Pbk4errGV5Sf1XqbHOCR+6EBXECQ5i4/kKJdVkmPDyqA92Mn6R5hjuvOfa0E6N\n" - "eLvincBZK8DOlQ0kDHLKNF5wIokrSrDxaIfz7kSNKEB3OW5IckUxXWs5DoYC6maZ\n" - "kzEP32fepp+MnUzOcW86Ifa5ND/5btia9z7a84Ffelxtj3z2mXS3/+QXXe1hXqtI\n" - "u5aNZkU5tBIK9nDpnHYiS2DpKhs0Sfei1GfAsSatE7rZhAHBq+GObXAWO3eskZq7\n" - "Gh/aWKfkT8Fhrryi/ks=\n" "-----END CERTIFICATE-----\n" + "MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG\n" + "A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz\n" + "cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2\n" + "MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV\n" + "BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt\n" + "YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN\n" + "ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE\n" + "BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is\n" + "I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G\n" + "CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do\n" + "lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc\n" + "AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k\n" + "-----END CERTIFICATE-----\n" + /* chain[2] */ + "-----BEGIN CERTIFICATE-----\n" + "MIIE/zCCBGigAwIBAgIQY5Jrio9Agv2swDvTeCmmwDANBgkqhkiG9w0BAQUFADBf\n" + "MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT\n" + "LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw\n" + "HhcNMDYxMTA4MDAwMDAwWhcNMjExMTA3MjM1OTU5WjCByjELMAkGA1UEBhMCVVMx\n" + "FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz\n" + "dCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZv\n" + "ciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAz\n" + "IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEi\n" + "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8\n" + "RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbext0uz/o9+B1fs70Pb\n" + "ZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhDY2pSS9KP6HBR\n" + "TdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/\n" + "Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNH\n" + "iDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMB\n" + "AAGjggHKMIIBxjAPBgNVHRMBAf8EBTADAQH/MDEGA1UdHwQqMCgwJqAkoCKGIGh0\n" + "dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA4GA1UdDwEB/wQEAwIBBjBt\n" + "BggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglpbWFnZS9naWYwITAfMAcGBSsOAwIa\n" + "BBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRwOi8vbG9nby52ZXJpc2lnbi5j\n" + "b20vdnNsb2dvLmdpZjA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYc\n" + "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2NwczAdBgNVHQ4EFgQUf9Nlp8Ld7Lvw\n" + "MAnzQzn6Aq8zMTMwgYAGA1UdIwR5MHehY6RhMF8xCzAJBgNVBAYTAlVTMRcwFQYD\n" + "VQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMyBQdWJsaWMgUHJp\n" + "bWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eYIQcLrkHRDZKTS2OMp7A8y6vzAg\n" + "BgNVHSUEGTAXBglghkgBhvhCBAEGCmCGSAGG+EUBCAEwDQYJKoZIhvcNAQEFBQAD\n" + "gYEAUNfnArcMK6xK11/59ADJdeNqKOck4skH3qw6WCAYQxfrcn4eobTInOn5G3Gu\n" + "39g6DapSHmBex2UtZSxvKnJVlWYQgE4P4wGoXdzV69YdCNssXNVVc59DYhDH05dZ\n" + "P4sJH99fucYDkJjUgRUYw35ww0OFwKgUp3CxiizbXxCqEQc=\n" + "-----END CERTIFICATE-----\n" + /* chain[1] */ + "-----BEGIN CERTIFICATE-----\n" + "MIIGCjCCBPKgAwIBAgIQESoAbTflEG/WynzD77rMGDANBgkqhkiG9w0BAQUFADCB\n" + "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" + "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n" + "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n" + "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n" + "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBvjEL\n" + "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n" + "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n" + "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMvVmVy\n" + "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0EwggEi\n" + "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9Voi6iDRkZM/NyrDu5xlzxXLZ\n" + "u0W8taj/g74cA9vtibcuEBolvFXKQaGfC88ZXnC5XjlLnjEcX4euKqqoK6IbOxAj\n" + "XxOx3QiMThTag4HjtYzjaO0kZ85Wtqybc5ZE24qMs9bwcZOO23FUSutzWWqPcFEs\n" + "A5+X0cwRerxiDZUqyRx1V+n1x+q6hDXLx4VafuRN4RGXfQ4gNEXb8aIJ6+s9nriW\n" + "Q140SwglHkMaotm3igE0PcP45a9PjP/NZfAjTsWXs1zakByChQ0GDcEitnsopAPD\n" + "TFPRWLxyvAg5/KB2qKjpS26IPeOzMSWMcylIDjJ5Bu09Q/T25On8fb6OCNUfAgMB\n" + "AAGjggH0MIIB8DAdBgNVHQ4EFgQUTkPIHXbvN1N6T/JYb5TzOOLVvd8wEgYDVR0T\n" + "AQH/BAgwBgEB/wIBADA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYc\n" + "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2NwczA9BgNVHR8ENjA0MDKgMKAuhixo\n" + "dHRwOi8vRVZTZWN1cmUtY3JsLnZlcmlzaWduLmNvbS9wY2EzLWc1LmNybDAgBgNV\n" + "HSUEGTAXBglghkgBhvhCBAEGCmCGSAGG+EUBCAEwDgYDVR0PAQH/BAQDAgEGMBEG\n" + "CWCGSAGG+EIBAQQEAwIBBjBtBggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglpbWFn\n" + "ZS9naWYwITAfMAcGBSsOAwIaBBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRw\n" + "Oi8vbG9nby52ZXJpc2lnbi5jb20vdnNsb2dvLmdpZjApBgNVHREEIjAgpB4wHDEa\n" + "MBgGA1UEAxMRQ2xhc3MzQ0EyMDQ4LTEtNDgwPQYIKwYBBQUHAQEEMTAvMC0GCCsG\n" + "AQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5jb20wHwYDVR0j\n" + "BBgwFoAUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwDQYJKoZIhvcNAQEFBQADggEBAFqi\n" + "sb/rjdQ4qIBywtw4Lqyncfkro7tHu21pbxA2mIzHVi67vKtKm3rW8oKT4BT+is6D\n" + "t4Pbk4errGV5Sf1XqbHOCR+6EBXECQ5i4/kKJdVkmPDyqA92Mn6R5hjuvOfa0E6N\n" + "eLvincBZK8DOlQ0kDHLKNF5wIokrSrDxaIfz7kSNKEB3OW5IckUxXWs5DoYC6maZ\n" + "kzEP32fepp+MnUzOcW86Ifa5ND/5btia9z7a84Ffelxtj3z2mXS3/+QXXe1hXqtI\n" + "u5aNZkU5tBIK9nDpnHYiS2DpKhs0Sfei1GfAsSatE7rZhAHBq+GObXAWO3eskZq7\n" + "Gh/aWKfkT8Fhrryi/ks=\n" + "-----END CERTIFICATE-----\n" }; /* Chain3 is unsorted - random order */ static const char chain3[] = { /* chain[0] */ "-----BEGIN CERTIFICATE-----\n" - "MIIGCDCCBPCgAwIBAgIQakrDGzEQ5utI8PxRo5oXHzANBgkqhkiG9w0BAQUFADCB\n" - "vjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" - "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n" - "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMv\n" - "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0Ew\n" - "HhcNMDcwNTA5MDAwMDAwWhcNMDkwNTA4MjM1OTU5WjCCAUAxEDAOBgNVBAUTBzI0\n" - "OTc4ODYxEzARBgsrBgEEAYI3PAIBAxMCVVMxGTAXBgsrBgEEAYI3PAIBAhMIRGVs\n" - "YXdhcmUxCzAJBgNVBAYTAlVTMQ4wDAYDVQQRFAU5NDA0MzETMBEGA1UECBMKQ2Fs\n" - "aWZvcm5pYTEWMBQGA1UEBxQNTW91bnRhaW4gVmlldzEiMCAGA1UECRQZNDg3IEVh\n" - "c3QgTWlkZGxlZmllbGQgUm9hZDEXMBUGA1UEChQOVmVyaVNpZ24sIEluYy4xJTAj\n" - "BgNVBAsUHFByb2R1Y3Rpb24gU2VjdXJpdHkgU2VydmljZXMxMzAxBgNVBAsUKlRl\n" - "cm1zIG9mIHVzZSBhdCB3d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjEZMBcGA1UE\n" - "AxQQd3d3LnZlcmlzaWduLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA\n" - "xxA35ev879drgQCpENGRQ3ARaCPz/WneT9dtMe3qGNvzXQJs6cjm1Bx8XegyW1gB\n" - "jJX5Zl4WWbr9wpAWZ1YyJ0bEyShIGmkU8fPfbcXYwSyWoWwvE5NRaUB2ztmfAVdv\n" - "OaGMUKxny2Dnj3tAdaQ+FOeRDJJYg6K1hzczq/otOfsCAwEAAaOCAf8wggH7MAkG\n" - "A1UdEwQCMAAwHQYDVR0OBBYEFPFaiZNVR0u6UfVO4MsWVfTXzDhnMAsGA1UdDwQE\n" - "AwIFoDA+BgNVHR8ENzA1MDOgMaAvhi1odHRwOi8vRVZJbnRsLWNybC52ZXJpc2ln\n" - "bi5jb20vRVZJbnRsMjAwNi5jcmwwRAYDVR0gBD0wOzA5BgtghkgBhvhFAQcXBjAq\n" - "MCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMDQGA1Ud\n" - "JQQtMCsGCCsGAQUFBwMBBggrBgEFBQcDAgYJYIZIAYb4QgQBBgorBgEEAYI3CgMD\n" - "MB8GA1UdIwQYMBaAFE5DyB127zdTek/yWG+U8zji1b3fMHYGCCsGAQUFBwEBBGow\n" - "aDArBggrBgEFBQcwAYYfaHR0cDovL0VWSW50bC1vY3NwLnZlcmlzaWduLmNvbTA5\n" - "BggrBgEFBQcwAoYtaHR0cDovL0VWSW50bC1haWEudmVyaXNpZ24uY29tL0VWSW50\n" - "bDIwMDYuY2VyMG0GCCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAh\n" - "MB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dv\n" - "LnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMA0GCSqGSIb3DQEBBQUAA4IBAQBEueAg\n" - "xZJrjGPKAZk1NT8VtTn0yi87i9XUnSOnkFkAuI3THDd+cWbNSUzc5uFJg42GhMK7\n" - "S1Rojm8FHxESovLvimH/w111BKF9wNU2XSOb9KohfYq3GRiQG8O7v9JwIjjLepkc\n" - "iyITx7sYiJ+kwZlrNBwN6TwVHrONg6NzyzSnxCg+XgKRbJu2PqEQb6uQVkYhb+Oq\n" - "Vi9d4by9YqpnuXImSffQ0OZ/6s3Rl6vY08zIPqa6OVfjGs/H45ETblzezcUKpX0L\n" - "cqnOwUB9dVuPhtlX3X/hgz/ROxz96NBwwzha58HUgfEfkVtm+piI6TTI7XxS/7Av\n" - "nKMfhbyFQYPQ6J9g\n" "-----END CERTIFICATE-----\n" - /* chain[2] */ - "-----BEGIN CERTIFICATE-----\n" - "MIIE/zCCBGigAwIBAgIQY5Jrio9Agv2swDvTeCmmwDANBgkqhkiG9w0BAQUFADBf\n" - "MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT\n" - "LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw\n" - "HhcNMDYxMTA4MDAwMDAwWhcNMjExMTA3MjM1OTU5WjCByjELMAkGA1UEBhMCVVMx\n" - "FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz\n" - "dCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZv\n" - "ciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAz\n" - "IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEi\n" - "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8\n" - "RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbext0uz/o9+B1fs70Pb\n" - "ZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhDY2pSS9KP6HBR\n" - "TdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/\n" - "Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNH\n" - "iDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMB\n" - "AAGjggHKMIIBxjAPBgNVHRMBAf8EBTADAQH/MDEGA1UdHwQqMCgwJqAkoCKGIGh0\n" - "dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA4GA1UdDwEB/wQEAwIBBjBt\n" - "BggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglpbWFnZS9naWYwITAfMAcGBSsOAwIa\n" - "BBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRwOi8vbG9nby52ZXJpc2lnbi5j\n" - "b20vdnNsb2dvLmdpZjA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYc\n" - "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2NwczAdBgNVHQ4EFgQUf9Nlp8Ld7Lvw\n" - "MAnzQzn6Aq8zMTMwgYAGA1UdIwR5MHehY6RhMF8xCzAJBgNVBAYTAlVTMRcwFQYD\n" - "VQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMyBQdWJsaWMgUHJp\n" - "bWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eYIQcLrkHRDZKTS2OMp7A8y6vzAg\n" - "BgNVHSUEGTAXBglghkgBhvhCBAEGCmCGSAGG+EUBCAEwDQYJKoZIhvcNAQEFBQAD\n" - "gYEAUNfnArcMK6xK11/59ADJdeNqKOck4skH3qw6WCAYQxfrcn4eobTInOn5G3Gu\n" - "39g6DapSHmBex2UtZSxvKnJVlWYQgE4P4wGoXdzV69YdCNssXNVVc59DYhDH05dZ\n" - "P4sJH99fucYDkJjUgRUYw35ww0OFwKgUp3CxiizbXxCqEQc=\n" - "-----END CERTIFICATE-----\n" - /* chain[3] (CA) */ - "-----BEGIN CERTIFICATE-----\n" - "MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG\n" - "A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz\n" - "cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2\n" - "MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV\n" - "BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt\n" - "YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN\n" - "ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE\n" - "BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is\n" - "I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G\n" - "CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do\n" - "lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc\n" - "AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k\n" - "-----END CERTIFICATE-----\n" - /* chain[1] */ + "MIIGCDCCBPCgAwIBAgIQakrDGzEQ5utI8PxRo5oXHzANBgkqhkiG9w0BAQUFADCB\n" + "vjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" + "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n" + "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMv\n" + "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0Ew\n" + "HhcNMDcwNTA5MDAwMDAwWhcNMDkwNTA4MjM1OTU5WjCCAUAxEDAOBgNVBAUTBzI0\n" + "OTc4ODYxEzARBgsrBgEEAYI3PAIBAxMCVVMxGTAXBgsrBgEEAYI3PAIBAhMIRGVs\n" + "YXdhcmUxCzAJBgNVBAYTAlVTMQ4wDAYDVQQRFAU5NDA0MzETMBEGA1UECBMKQ2Fs\n" + "aWZvcm5pYTEWMBQGA1UEBxQNTW91bnRhaW4gVmlldzEiMCAGA1UECRQZNDg3IEVh\n" + "c3QgTWlkZGxlZmllbGQgUm9hZDEXMBUGA1UEChQOVmVyaVNpZ24sIEluYy4xJTAj\n" + "BgNVBAsUHFByb2R1Y3Rpb24gU2VjdXJpdHkgU2VydmljZXMxMzAxBgNVBAsUKlRl\n" + "cm1zIG9mIHVzZSBhdCB3d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjEZMBcGA1UE\n" + "AxQQd3d3LnZlcmlzaWduLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA\n" + "xxA35ev879drgQCpENGRQ3ARaCPz/WneT9dtMe3qGNvzXQJs6cjm1Bx8XegyW1gB\n" + "jJX5Zl4WWbr9wpAWZ1YyJ0bEyShIGmkU8fPfbcXYwSyWoWwvE5NRaUB2ztmfAVdv\n" + "OaGMUKxny2Dnj3tAdaQ+FOeRDJJYg6K1hzczq/otOfsCAwEAAaOCAf8wggH7MAkG\n" + "A1UdEwQCMAAwHQYDVR0OBBYEFPFaiZNVR0u6UfVO4MsWVfTXzDhnMAsGA1UdDwQE\n" + "AwIFoDA+BgNVHR8ENzA1MDOgMaAvhi1odHRwOi8vRVZJbnRsLWNybC52ZXJpc2ln\n" + "bi5jb20vRVZJbnRsMjAwNi5jcmwwRAYDVR0gBD0wOzA5BgtghkgBhvhFAQcXBjAq\n" + "MCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMDQGA1Ud\n" + "JQQtMCsGCCsGAQUFBwMBBggrBgEFBQcDAgYJYIZIAYb4QgQBBgorBgEEAYI3CgMD\n" + "MB8GA1UdIwQYMBaAFE5DyB127zdTek/yWG+U8zji1b3fMHYGCCsGAQUFBwEBBGow\n" + "aDArBggrBgEFBQcwAYYfaHR0cDovL0VWSW50bC1vY3NwLnZlcmlzaWduLmNvbTA5\n" + "BggrBgEFBQcwAoYtaHR0cDovL0VWSW50bC1haWEudmVyaXNpZ24uY29tL0VWSW50\n" + "bDIwMDYuY2VyMG0GCCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAh\n" + "MB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dv\n" + "LnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMA0GCSqGSIb3DQEBBQUAA4IBAQBEueAg\n" + "xZJrjGPKAZk1NT8VtTn0yi87i9XUnSOnkFkAuI3THDd+cWbNSUzc5uFJg42GhMK7\n" + "S1Rojm8FHxESovLvimH/w111BKF9wNU2XSOb9KohfYq3GRiQG8O7v9JwIjjLepkc\n" + "iyITx7sYiJ+kwZlrNBwN6TwVHrONg6NzyzSnxCg+XgKRbJu2PqEQb6uQVkYhb+Oq\n" + "Vi9d4by9YqpnuXImSffQ0OZ/6s3Rl6vY08zIPqa6OVfjGs/H45ETblzezcUKpX0L\n" + "cqnOwUB9dVuPhtlX3X/hgz/ROxz96NBwwzha58HUgfEfkVtm+piI6TTI7XxS/7Av\n" + "nKMfhbyFQYPQ6J9g\n" + "-----END CERTIFICATE-----\n" + /* chain[2] */ + "-----BEGIN CERTIFICATE-----\n" + "MIIE/zCCBGigAwIBAgIQY5Jrio9Agv2swDvTeCmmwDANBgkqhkiG9w0BAQUFADBf\n" + "MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT\n" + "LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw\n" + "HhcNMDYxMTA4MDAwMDAwWhcNMjExMTA3MjM1OTU5WjCByjELMAkGA1UEBhMCVVMx\n" + "FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz\n" + "dCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZv\n" + "ciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAz\n" + "IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEi\n" + "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8\n" + "RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbext0uz/o9+B1fs70Pb\n" + "ZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhDY2pSS9KP6HBR\n" + "TdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/\n" + "Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNH\n" + "iDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMB\n" + "AAGjggHKMIIBxjAPBgNVHRMBAf8EBTADAQH/MDEGA1UdHwQqMCgwJqAkoCKGIGh0\n" + "dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA4GA1UdDwEB/wQEAwIBBjBt\n" + "BggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglpbWFnZS9naWYwITAfMAcGBSsOAwIa\n" + "BBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRwOi8vbG9nby52ZXJpc2lnbi5j\n" + "b20vdnNsb2dvLmdpZjA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYc\n" + "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2NwczAdBgNVHQ4EFgQUf9Nlp8Ld7Lvw\n" + "MAnzQzn6Aq8zMTMwgYAGA1UdIwR5MHehY6RhMF8xCzAJBgNVBAYTAlVTMRcwFQYD\n" + "VQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMyBQdWJsaWMgUHJp\n" + "bWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eYIQcLrkHRDZKTS2OMp7A8y6vzAg\n" + "BgNVHSUEGTAXBglghkgBhvhCBAEGCmCGSAGG+EUBCAEwDQYJKoZIhvcNAQEFBQAD\n" + "gYEAUNfnArcMK6xK11/59ADJdeNqKOck4skH3qw6WCAYQxfrcn4eobTInOn5G3Gu\n" + "39g6DapSHmBex2UtZSxvKnJVlWYQgE4P4wGoXdzV69YdCNssXNVVc59DYhDH05dZ\n" + "P4sJH99fucYDkJjUgRUYw35ww0OFwKgUp3CxiizbXxCqEQc=\n" + "-----END CERTIFICATE-----\n" + /* chain[3] (CA) */ "-----BEGIN CERTIFICATE-----\n" - "MIIGCjCCBPKgAwIBAgIQESoAbTflEG/WynzD77rMGDANBgkqhkiG9w0BAQUFADCB\n" - "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" - "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n" - "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n" - "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n" - "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBvjEL\n" - "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n" - "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n" - "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMvVmVy\n" - "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0EwggEi\n" - "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9Voi6iDRkZM/NyrDu5xlzxXLZ\n" - "u0W8taj/g74cA9vtibcuEBolvFXKQaGfC88ZXnC5XjlLnjEcX4euKqqoK6IbOxAj\n" - "XxOx3QiMThTag4HjtYzjaO0kZ85Wtqybc5ZE24qMs9bwcZOO23FUSutzWWqPcFEs\n" - "A5+X0cwRerxiDZUqyRx1V+n1x+q6hDXLx4VafuRN4RGXfQ4gNEXb8aIJ6+s9nriW\n" - "Q140SwglHkMaotm3igE0PcP45a9PjP/NZfAjTsWXs1zakByChQ0GDcEitnsopAPD\n" - "TFPRWLxyvAg5/KB2qKjpS26IPeOzMSWMcylIDjJ5Bu09Q/T25On8fb6OCNUfAgMB\n" - "AAGjggH0MIIB8DAdBgNVHQ4EFgQUTkPIHXbvN1N6T/JYb5TzOOLVvd8wEgYDVR0T\n" - "AQH/BAgwBgEB/wIBADA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYc\n" - "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2NwczA9BgNVHR8ENjA0MDKgMKAuhixo\n" - "dHRwOi8vRVZTZWN1cmUtY3JsLnZlcmlzaWduLmNvbS9wY2EzLWc1LmNybDAgBgNV\n" - "HSUEGTAXBglghkgBhvhCBAEGCmCGSAGG+EUBCAEwDgYDVR0PAQH/BAQDAgEGMBEG\n" - "CWCGSAGG+EIBAQQEAwIBBjBtBggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglpbWFn\n" - "ZS9naWYwITAfMAcGBSsOAwIaBBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRw\n" - "Oi8vbG9nby52ZXJpc2lnbi5jb20vdnNsb2dvLmdpZjApBgNVHREEIjAgpB4wHDEa\n" - "MBgGA1UEAxMRQ2xhc3MzQ0EyMDQ4LTEtNDgwPQYIKwYBBQUHAQEEMTAvMC0GCCsG\n" - "AQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5jb20wHwYDVR0j\n" - "BBgwFoAUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwDQYJKoZIhvcNAQEFBQADggEBAFqi\n" - "sb/rjdQ4qIBywtw4Lqyncfkro7tHu21pbxA2mIzHVi67vKtKm3rW8oKT4BT+is6D\n" - "t4Pbk4errGV5Sf1XqbHOCR+6EBXECQ5i4/kKJdVkmPDyqA92Mn6R5hjuvOfa0E6N\n" - "eLvincBZK8DOlQ0kDHLKNF5wIokrSrDxaIfz7kSNKEB3OW5IckUxXWs5DoYC6maZ\n" - "kzEP32fepp+MnUzOcW86Ifa5ND/5btia9z7a84Ffelxtj3z2mXS3/+QXXe1hXqtI\n" - "u5aNZkU5tBIK9nDpnHYiS2DpKhs0Sfei1GfAsSatE7rZhAHBq+GObXAWO3eskZq7\n" - "Gh/aWKfkT8Fhrryi/ks=\n" "-----END CERTIFICATE-----\n" + "MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG\n" + "A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz\n" + "cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2\n" + "MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV\n" + "BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt\n" + "YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN\n" + "ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE\n" + "BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is\n" + "I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G\n" + "CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do\n" + "lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc\n" + "AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k\n" + "-----END CERTIFICATE-----\n" + /* chain[1] */ + "-----BEGIN CERTIFICATE-----\n" + "MIIGCjCCBPKgAwIBAgIQESoAbTflEG/WynzD77rMGDANBgkqhkiG9w0BAQUFADCB\n" + "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" + "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n" + "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n" + "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n" + "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBvjEL\n" + "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n" + "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n" + "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMvVmVy\n" + "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0EwggEi\n" + "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9Voi6iDRkZM/NyrDu5xlzxXLZ\n" + "u0W8taj/g74cA9vtibcuEBolvFXKQaGfC88ZXnC5XjlLnjEcX4euKqqoK6IbOxAj\n" + "XxOx3QiMThTag4HjtYzjaO0kZ85Wtqybc5ZE24qMs9bwcZOO23FUSutzWWqPcFEs\n" + "A5+X0cwRerxiDZUqyRx1V+n1x+q6hDXLx4VafuRN4RGXfQ4gNEXb8aIJ6+s9nriW\n" + "Q140SwglHkMaotm3igE0PcP45a9PjP/NZfAjTsWXs1zakByChQ0GDcEitnsopAPD\n" + "TFPRWLxyvAg5/KB2qKjpS26IPeOzMSWMcylIDjJ5Bu09Q/T25On8fb6OCNUfAgMB\n" + "AAGjggH0MIIB8DAdBgNVHQ4EFgQUTkPIHXbvN1N6T/JYb5TzOOLVvd8wEgYDVR0T\n" + "AQH/BAgwBgEB/wIBADA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYc\n" + "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2NwczA9BgNVHR8ENjA0MDKgMKAuhixo\n" + "dHRwOi8vRVZTZWN1cmUtY3JsLnZlcmlzaWduLmNvbS9wY2EzLWc1LmNybDAgBgNV\n" + "HSUEGTAXBglghkgBhvhCBAEGCmCGSAGG+EUBCAEwDgYDVR0PAQH/BAQDAgEGMBEG\n" + "CWCGSAGG+EIBAQQEAwIBBjBtBggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglpbWFn\n" + "ZS9naWYwITAfMAcGBSsOAwIaBBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRw\n" + "Oi8vbG9nby52ZXJpc2lnbi5jb20vdnNsb2dvLmdpZjApBgNVHREEIjAgpB4wHDEa\n" + "MBgGA1UEAxMRQ2xhc3MzQ0EyMDQ4LTEtNDgwPQYIKwYBBQUHAQEEMTAvMC0GCCsG\n" + "AQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5jb20wHwYDVR0j\n" + "BBgwFoAUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwDQYJKoZIhvcNAQEFBQADggEBAFqi\n" + "sb/rjdQ4qIBywtw4Lqyncfkro7tHu21pbxA2mIzHVi67vKtKm3rW8oKT4BT+is6D\n" + "t4Pbk4errGV5Sf1XqbHOCR+6EBXECQ5i4/kKJdVkmPDyqA92Mn6R5hjuvOfa0E6N\n" + "eLvincBZK8DOlQ0kDHLKNF5wIokrSrDxaIfz7kSNKEB3OW5IckUxXWs5DoYC6maZ\n" + "kzEP32fepp+MnUzOcW86Ifa5ND/5btia9z7a84Ffelxtj3z2mXS3/+QXXe1hXqtI\n" + "u5aNZkU5tBIK9nDpnHYiS2DpKhs0Sfei1GfAsSatE7rZhAHBq+GObXAWO3eskZq7\n" + "Gh/aWKfkT8Fhrryi/ks=\n" + "-----END CERTIFICATE-----\n" }; /* Chain4 is unsorted - random order and includes random certs */ static const char chain4[] = { /* chain[0] */ "-----BEGIN CERTIFICATE-----\n" - "MIIGCDCCBPCgAwIBAgIQakrDGzEQ5utI8PxRo5oXHzANBgkqhkiG9w0BAQUFADCB\n" - "vjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" - "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n" - "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMv\n" - "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0Ew\n" - "HhcNMDcwNTA5MDAwMDAwWhcNMDkwNTA4MjM1OTU5WjCCAUAxEDAOBgNVBAUTBzI0\n" - "OTc4ODYxEzARBgsrBgEEAYI3PAIBAxMCVVMxGTAXBgsrBgEEAYI3PAIBAhMIRGVs\n" - "YXdhcmUxCzAJBgNVBAYTAlVTMQ4wDAYDVQQRFAU5NDA0MzETMBEGA1UECBMKQ2Fs\n" - "aWZvcm5pYTEWMBQGA1UEBxQNTW91bnRhaW4gVmlldzEiMCAGA1UECRQZNDg3IEVh\n" - "c3QgTWlkZGxlZmllbGQgUm9hZDEXMBUGA1UEChQOVmVyaVNpZ24sIEluYy4xJTAj\n" - "BgNVBAsUHFByb2R1Y3Rpb24gU2VjdXJpdHkgU2VydmljZXMxMzAxBgNVBAsUKlRl\n" - "cm1zIG9mIHVzZSBhdCB3d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjEZMBcGA1UE\n" - "AxQQd3d3LnZlcmlzaWduLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA\n" - "xxA35ev879drgQCpENGRQ3ARaCPz/WneT9dtMe3qGNvzXQJs6cjm1Bx8XegyW1gB\n" - "jJX5Zl4WWbr9wpAWZ1YyJ0bEyShIGmkU8fPfbcXYwSyWoWwvE5NRaUB2ztmfAVdv\n" - "OaGMUKxny2Dnj3tAdaQ+FOeRDJJYg6K1hzczq/otOfsCAwEAAaOCAf8wggH7MAkG\n" - "A1UdEwQCMAAwHQYDVR0OBBYEFPFaiZNVR0u6UfVO4MsWVfTXzDhnMAsGA1UdDwQE\n" - "AwIFoDA+BgNVHR8ENzA1MDOgMaAvhi1odHRwOi8vRVZJbnRsLWNybC52ZXJpc2ln\n" - "bi5jb20vRVZJbnRsMjAwNi5jcmwwRAYDVR0gBD0wOzA5BgtghkgBhvhFAQcXBjAq\n" - "MCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMDQGA1Ud\n" - "JQQtMCsGCCsGAQUFBwMBBggrBgEFBQcDAgYJYIZIAYb4QgQBBgorBgEEAYI3CgMD\n" - "MB8GA1UdIwQYMBaAFE5DyB127zdTek/yWG+U8zji1b3fMHYGCCsGAQUFBwEBBGow\n" - "aDArBggrBgEFBQcwAYYfaHR0cDovL0VWSW50bC1vY3NwLnZlcmlzaWduLmNvbTA5\n" - "BggrBgEFBQcwAoYtaHR0cDovL0VWSW50bC1haWEudmVyaXNpZ24uY29tL0VWSW50\n" - "bDIwMDYuY2VyMG0GCCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAh\n" - "MB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dv\n" - "LnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMA0GCSqGSIb3DQEBBQUAA4IBAQBEueAg\n" - "xZJrjGPKAZk1NT8VtTn0yi87i9XUnSOnkFkAuI3THDd+cWbNSUzc5uFJg42GhMK7\n" - "S1Rojm8FHxESovLvimH/w111BKF9wNU2XSOb9KohfYq3GRiQG8O7v9JwIjjLepkc\n" - "iyITx7sYiJ+kwZlrNBwN6TwVHrONg6NzyzSnxCg+XgKRbJu2PqEQb6uQVkYhb+Oq\n" - "Vi9d4by9YqpnuXImSffQ0OZ/6s3Rl6vY08zIPqa6OVfjGs/H45ETblzezcUKpX0L\n" - "cqnOwUB9dVuPhtlX3X/hgz/ROxz96NBwwzha58HUgfEfkVtm+piI6TTI7XxS/7Av\n" - "nKMfhbyFQYPQ6J9g\n" "-----END CERTIFICATE-----\n" - /* chain[2] */ - "-----BEGIN CERTIFICATE-----\n" - "MIIE/zCCBGigAwIBAgIQY5Jrio9Agv2swDvTeCmmwDANBgkqhkiG9w0BAQUFADBf\n" - "MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT\n" - "LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw\n" - "HhcNMDYxMTA4MDAwMDAwWhcNMjExMTA3MjM1OTU5WjCByjELMAkGA1UEBhMCVVMx\n" - "FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz\n" - "dCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZv\n" - "ciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAz\n" - "IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEi\n" - "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8\n" - "RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbext0uz/o9+B1fs70Pb\n" - "ZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhDY2pSS9KP6HBR\n" - "TdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/\n" - "Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNH\n" - "iDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMB\n" - "AAGjggHKMIIBxjAPBgNVHRMBAf8EBTADAQH/MDEGA1UdHwQqMCgwJqAkoCKGIGh0\n" - "dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA4GA1UdDwEB/wQEAwIBBjBt\n" - "BggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglpbWFnZS9naWYwITAfMAcGBSsOAwIa\n" - "BBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRwOi8vbG9nby52ZXJpc2lnbi5j\n" - "b20vdnNsb2dvLmdpZjA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYc\n" - "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2NwczAdBgNVHQ4EFgQUf9Nlp8Ld7Lvw\n" - "MAnzQzn6Aq8zMTMwgYAGA1UdIwR5MHehY6RhMF8xCzAJBgNVBAYTAlVTMRcwFQYD\n" - "VQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMyBQdWJsaWMgUHJp\n" - "bWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eYIQcLrkHRDZKTS2OMp7A8y6vzAg\n" - "BgNVHSUEGTAXBglghkgBhvhCBAEGCmCGSAGG+EUBCAEwDQYJKoZIhvcNAQEFBQAD\n" - "gYEAUNfnArcMK6xK11/59ADJdeNqKOck4skH3qw6WCAYQxfrcn4eobTInOn5G3Gu\n" - "39g6DapSHmBex2UtZSxvKnJVlWYQgE4P4wGoXdzV69YdCNssXNVVc59DYhDH05dZ\n" - "P4sJH99fucYDkJjUgRUYw35ww0OFwKgUp3CxiizbXxCqEQc=\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIEczCCA9ygAwIBAgIQeODCPg2RbK2r7/1KoWjWZzANBgkqhkiG9w0BAQUFADCB\n" - "ujEfMB0GA1UEChMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazEXMBUGA1UECxMOVmVy\n" - "aVNpZ24sIEluYy4xMzAxBgNVBAsTKlZlcmlTaWduIEludGVybmF0aW9uYWwgU2Vy\n" - "dmVyIENBIC0gQ2xhc3MgMzFJMEcGA1UECxNAd3d3LnZlcmlzaWduLmNvbS9DUFMg\n" - "SW5jb3JwLmJ5IFJlZi4gTElBQklMSVRZIExURC4oYyk5NyBWZXJpU2lnbjAeFw0w\n" - "ODA2MTAwMDAwMDBaFw0wOTA3MzAyMzU5NTlaMIG2MQswCQYDVQQGEwJERTEPMA0G\n" - "A1UECBMGSGVzc2VuMRowGAYDVQQHFBFGcmFua2Z1cnQgYW0gTWFpbjEsMCoGA1UE\n" - "ChQjU3Bhcmthc3NlbiBJbmZvcm1hdGlrIEdtYkggJiBDby4gS0cxKTAnBgNVBAsU\n" - "IFRlcm1zIG9mIHVzZSBhdCB3d3cudmVyaXNpZ24uY29tMSEwHwYDVQQDFBhoYmNp\n" - "LXBpbnRhbi1ycC5zLWhiY2kuZGUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB\n" - "AK1CdQ9lqmChZWaRAInimuK7I36VImTuAVU0N6BIS4a2BbblkiekbVf15GVHGb6e\n" - "QV06ANN6Nd8XIdfoxi3LoAs8sa+Ku7eoEsRFi/XIU96GgtFlxf3EsVA9RbGdtfer\n" - "9iJGIBae2mJTlk+5LVg2EQr50PJlBuTgiYFc41xs9O2RAgMBAAGjggF6MIIBdjAJ\n" - "BgNVHRMEAjAAMAsGA1UdDwQEAwIFoDBGBgNVHR8EPzA9MDugOaA3hjVodHRwOi8v\n" - "Y3JsLnZlcmlzaWduLmNvbS9DbGFzczNJbnRlcm5hdGlvbmFsU2VydmVyLmNybDBE\n" - "BgNVHSAEPTA7MDkGC2CGSAGG+EUBBxcDMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v\n" - "d3d3LnZlcmlzaWduLmNvbS9ycGEwKAYDVR0lBCEwHwYJYIZIAYb4QgQBBggrBgEF\n" - "BQcDAQYIKwYBBQUHAwIwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRw\n" - "Oi8vb2NzcC52ZXJpc2lnbi5jb20wbgYIKwYBBQUHAQwEYjBgoV6gXDBaMFgwVhYJ\n" - "aW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUS2u5KJYGDLvQUjibKaxLB4shBRgwJhYk\n" - "aHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nbzEuZ2lmMA0GCSqGSIb3DQEB\n" - "BQUAA4GBAJ03R0YAjYzlWm54gMSn6MqJi0mHdLCO2lk3CARwjbg7TEYAZvDsKqTd\n" - "cRuhNk079BqrQ3QapffeN55SAVrc3mzHO54Nla4n5y6x3XIQXVvRjbJGwmWXsdvr\n" - "W899F/pBEN30Tgdbmn7JR/iZlGhIJpY9Us1i7rwQhKYir9ZQBdj3\n" - "-----END CERTIFICATE-----\n" - /* chain[1] */ - "-----BEGIN CERTIFICATE-----\n" - "MIIGCjCCBPKgAwIBAgIQESoAbTflEG/WynzD77rMGDANBgkqhkiG9w0BAQUFADCB\n" - "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" - "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n" - "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n" - "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n" - "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBvjEL\n" - "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n" - "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n" - "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMvVmVy\n" - "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0EwggEi\n" - "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9Voi6iDRkZM/NyrDu5xlzxXLZ\n" - "u0W8taj/g74cA9vtibcuEBolvFXKQaGfC88ZXnC5XjlLnjEcX4euKqqoK6IbOxAj\n" - "XxOx3QiMThTag4HjtYzjaO0kZ85Wtqybc5ZE24qMs9bwcZOO23FUSutzWWqPcFEs\n" - "A5+X0cwRerxiDZUqyRx1V+n1x+q6hDXLx4VafuRN4RGXfQ4gNEXb8aIJ6+s9nriW\n" - "Q140SwglHkMaotm3igE0PcP45a9PjP/NZfAjTsWXs1zakByChQ0GDcEitnsopAPD\n" - "TFPRWLxyvAg5/KB2qKjpS26IPeOzMSWMcylIDjJ5Bu09Q/T25On8fb6OCNUfAgMB\n" - "AAGjggH0MIIB8DAdBgNVHQ4EFgQUTkPIHXbvN1N6T/JYb5TzOOLVvd8wEgYDVR0T\n" - "AQH/BAgwBgEB/wIBADA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYc\n" - "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2NwczA9BgNVHR8ENjA0MDKgMKAuhixo\n" - "dHRwOi8vRVZTZWN1cmUtY3JsLnZlcmlzaWduLmNvbS9wY2EzLWc1LmNybDAgBgNV\n" - "HSUEGTAXBglghkgBhvhCBAEGCmCGSAGG+EUBCAEwDgYDVR0PAQH/BAQDAgEGMBEG\n" - "CWCGSAGG+EIBAQQEAwIBBjBtBggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglpbWFn\n" - "ZS9naWYwITAfMAcGBSsOAwIaBBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRw\n" - "Oi8vbG9nby52ZXJpc2lnbi5jb20vdnNsb2dvLmdpZjApBgNVHREEIjAgpB4wHDEa\n" - "MBgGA1UEAxMRQ2xhc3MzQ0EyMDQ4LTEtNDgwPQYIKwYBBQUHAQEEMTAvMC0GCCsG\n" - "AQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5jb20wHwYDVR0j\n" - "BBgwFoAUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwDQYJKoZIhvcNAQEFBQADggEBAFqi\n" - "sb/rjdQ4qIBywtw4Lqyncfkro7tHu21pbxA2mIzHVi67vKtKm3rW8oKT4BT+is6D\n" - "t4Pbk4errGV5Sf1XqbHOCR+6EBXECQ5i4/kKJdVkmPDyqA92Mn6R5hjuvOfa0E6N\n" - "eLvincBZK8DOlQ0kDHLKNF5wIokrSrDxaIfz7kSNKEB3OW5IckUxXWs5DoYC6maZ\n" - "kzEP32fepp+MnUzOcW86Ifa5ND/5btia9z7a84Ffelxtj3z2mXS3/+QXXe1hXqtI\n" - "u5aNZkU5tBIK9nDpnHYiS2DpKhs0Sfei1GfAsSatE7rZhAHBq+GObXAWO3eskZq7\n" - "Gh/aWKfkT8Fhrryi/ks=\n" "-----END CERTIFICATE-----\n" - /* chain[3] (CA) */ + "MIIGCDCCBPCgAwIBAgIQakrDGzEQ5utI8PxRo5oXHzANBgkqhkiG9w0BAQUFADCB\n" + "vjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" + "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n" + "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMv\n" + "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0Ew\n" + "HhcNMDcwNTA5MDAwMDAwWhcNMDkwNTA4MjM1OTU5WjCCAUAxEDAOBgNVBAUTBzI0\n" + "OTc4ODYxEzARBgsrBgEEAYI3PAIBAxMCVVMxGTAXBgsrBgEEAYI3PAIBAhMIRGVs\n" + "YXdhcmUxCzAJBgNVBAYTAlVTMQ4wDAYDVQQRFAU5NDA0MzETMBEGA1UECBMKQ2Fs\n" + "aWZvcm5pYTEWMBQGA1UEBxQNTW91bnRhaW4gVmlldzEiMCAGA1UECRQZNDg3IEVh\n" + "c3QgTWlkZGxlZmllbGQgUm9hZDEXMBUGA1UEChQOVmVyaVNpZ24sIEluYy4xJTAj\n" + "BgNVBAsUHFByb2R1Y3Rpb24gU2VjdXJpdHkgU2VydmljZXMxMzAxBgNVBAsUKlRl\n" + "cm1zIG9mIHVzZSBhdCB3d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjEZMBcGA1UE\n" + "AxQQd3d3LnZlcmlzaWduLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA\n" + "xxA35ev879drgQCpENGRQ3ARaCPz/WneT9dtMe3qGNvzXQJs6cjm1Bx8XegyW1gB\n" + "jJX5Zl4WWbr9wpAWZ1YyJ0bEyShIGmkU8fPfbcXYwSyWoWwvE5NRaUB2ztmfAVdv\n" + "OaGMUKxny2Dnj3tAdaQ+FOeRDJJYg6K1hzczq/otOfsCAwEAAaOCAf8wggH7MAkG\n" + "A1UdEwQCMAAwHQYDVR0OBBYEFPFaiZNVR0u6UfVO4MsWVfTXzDhnMAsGA1UdDwQE\n" + "AwIFoDA+BgNVHR8ENzA1MDOgMaAvhi1odHRwOi8vRVZJbnRsLWNybC52ZXJpc2ln\n" + "bi5jb20vRVZJbnRsMjAwNi5jcmwwRAYDVR0gBD0wOzA5BgtghkgBhvhFAQcXBjAq\n" + "MCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMDQGA1Ud\n" + "JQQtMCsGCCsGAQUFBwMBBggrBgEFBQcDAgYJYIZIAYb4QgQBBgorBgEEAYI3CgMD\n" + "MB8GA1UdIwQYMBaAFE5DyB127zdTek/yWG+U8zji1b3fMHYGCCsGAQUFBwEBBGow\n" + "aDArBggrBgEFBQcwAYYfaHR0cDovL0VWSW50bC1vY3NwLnZlcmlzaWduLmNvbTA5\n" + "BggrBgEFBQcwAoYtaHR0cDovL0VWSW50bC1haWEudmVyaXNpZ24uY29tL0VWSW50\n" + "bDIwMDYuY2VyMG0GCCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAh\n" + "MB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dv\n" + "LnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMA0GCSqGSIb3DQEBBQUAA4IBAQBEueAg\n" + "xZJrjGPKAZk1NT8VtTn0yi87i9XUnSOnkFkAuI3THDd+cWbNSUzc5uFJg42GhMK7\n" + "S1Rojm8FHxESovLvimH/w111BKF9wNU2XSOb9KohfYq3GRiQG8O7v9JwIjjLepkc\n" + "iyITx7sYiJ+kwZlrNBwN6TwVHrONg6NzyzSnxCg+XgKRbJu2PqEQb6uQVkYhb+Oq\n" + "Vi9d4by9YqpnuXImSffQ0OZ/6s3Rl6vY08zIPqa6OVfjGs/H45ETblzezcUKpX0L\n" + "cqnOwUB9dVuPhtlX3X/hgz/ROxz96NBwwzha58HUgfEfkVtm+piI6TTI7XxS/7Av\n" + "nKMfhbyFQYPQ6J9g\n" + "-----END CERTIFICATE-----\n" + /* chain[2] */ + "-----BEGIN CERTIFICATE-----\n" + "MIIE/zCCBGigAwIBAgIQY5Jrio9Agv2swDvTeCmmwDANBgkqhkiG9w0BAQUFADBf\n" + "MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT\n" + "LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw\n" + "HhcNMDYxMTA4MDAwMDAwWhcNMjExMTA3MjM1OTU5WjCByjELMAkGA1UEBhMCVVMx\n" + "FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz\n" + "dCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZv\n" + "ciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAz\n" + "IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEi\n" + "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8\n" + "RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbext0uz/o9+B1fs70Pb\n" + "ZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhDY2pSS9KP6HBR\n" + "TdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/\n" + "Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNH\n" + "iDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMB\n" + "AAGjggHKMIIBxjAPBgNVHRMBAf8EBTADAQH/MDEGA1UdHwQqMCgwJqAkoCKGIGh0\n" + "dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA4GA1UdDwEB/wQEAwIBBjBt\n" + "BggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglpbWFnZS9naWYwITAfMAcGBSsOAwIa\n" + "BBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRwOi8vbG9nby52ZXJpc2lnbi5j\n" + "b20vdnNsb2dvLmdpZjA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYc\n" + "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2NwczAdBgNVHQ4EFgQUf9Nlp8Ld7Lvw\n" + "MAnzQzn6Aq8zMTMwgYAGA1UdIwR5MHehY6RhMF8xCzAJBgNVBAYTAlVTMRcwFQYD\n" + "VQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMyBQdWJsaWMgUHJp\n" + "bWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eYIQcLrkHRDZKTS2OMp7A8y6vzAg\n" + "BgNVHSUEGTAXBglghkgBhvhCBAEGCmCGSAGG+EUBCAEwDQYJKoZIhvcNAQEFBQAD\n" + "gYEAUNfnArcMK6xK11/59ADJdeNqKOck4skH3qw6WCAYQxfrcn4eobTInOn5G3Gu\n" + "39g6DapSHmBex2UtZSxvKnJVlWYQgE4P4wGoXdzV69YdCNssXNVVc59DYhDH05dZ\n" + "P4sJH99fucYDkJjUgRUYw35ww0OFwKgUp3CxiizbXxCqEQc=\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIEczCCA9ygAwIBAgIQeODCPg2RbK2r7/1KoWjWZzANBgkqhkiG9w0BAQUFADCB\n" + "ujEfMB0GA1UEChMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazEXMBUGA1UECxMOVmVy\n" + "aVNpZ24sIEluYy4xMzAxBgNVBAsTKlZlcmlTaWduIEludGVybmF0aW9uYWwgU2Vy\n" + "dmVyIENBIC0gQ2xhc3MgMzFJMEcGA1UECxNAd3d3LnZlcmlzaWduLmNvbS9DUFMg\n" + "SW5jb3JwLmJ5IFJlZi4gTElBQklMSVRZIExURC4oYyk5NyBWZXJpU2lnbjAeFw0w\n" + "ODA2MTAwMDAwMDBaFw0wOTA3MzAyMzU5NTlaMIG2MQswCQYDVQQGEwJERTEPMA0G\n" + "A1UECBMGSGVzc2VuMRowGAYDVQQHFBFGcmFua2Z1cnQgYW0gTWFpbjEsMCoGA1UE\n" + "ChQjU3Bhcmthc3NlbiBJbmZvcm1hdGlrIEdtYkggJiBDby4gS0cxKTAnBgNVBAsU\n" + "IFRlcm1zIG9mIHVzZSBhdCB3d3cudmVyaXNpZ24uY29tMSEwHwYDVQQDFBhoYmNp\n" + "LXBpbnRhbi1ycC5zLWhiY2kuZGUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB\n" + "AK1CdQ9lqmChZWaRAInimuK7I36VImTuAVU0N6BIS4a2BbblkiekbVf15GVHGb6e\n" + "QV06ANN6Nd8XIdfoxi3LoAs8sa+Ku7eoEsRFi/XIU96GgtFlxf3EsVA9RbGdtfer\n" + "9iJGIBae2mJTlk+5LVg2EQr50PJlBuTgiYFc41xs9O2RAgMBAAGjggF6MIIBdjAJ\n" + "BgNVHRMEAjAAMAsGA1UdDwQEAwIFoDBGBgNVHR8EPzA9MDugOaA3hjVodHRwOi8v\n" + "Y3JsLnZlcmlzaWduLmNvbS9DbGFzczNJbnRlcm5hdGlvbmFsU2VydmVyLmNybDBE\n" + "BgNVHSAEPTA7MDkGC2CGSAGG+EUBBxcDMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v\n" + "d3d3LnZlcmlzaWduLmNvbS9ycGEwKAYDVR0lBCEwHwYJYIZIAYb4QgQBBggrBgEF\n" + "BQcDAQYIKwYBBQUHAwIwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRw\n" + "Oi8vb2NzcC52ZXJpc2lnbi5jb20wbgYIKwYBBQUHAQwEYjBgoV6gXDBaMFgwVhYJ\n" + "aW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUS2u5KJYGDLvQUjibKaxLB4shBRgwJhYk\n" + "aHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nbzEuZ2lmMA0GCSqGSIb3DQEB\n" + "BQUAA4GBAJ03R0YAjYzlWm54gMSn6MqJi0mHdLCO2lk3CARwjbg7TEYAZvDsKqTd\n" + "cRuhNk079BqrQ3QapffeN55SAVrc3mzHO54Nla4n5y6x3XIQXVvRjbJGwmWXsdvr\n" + "W899F/pBEN30Tgdbmn7JR/iZlGhIJpY9Us1i7rwQhKYir9ZQBdj3\n" + "-----END CERTIFICATE-----\n" + /* chain[1] */ "-----BEGIN CERTIFICATE-----\n" - "MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG\n" - "A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz\n" - "cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2\n" - "MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV\n" - "BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt\n" - "YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN\n" - "ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE\n" - "BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is\n" - "I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G\n" - "CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do\n" - "lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc\n" - "AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIDgzCCAuygAwIBAgIQJUuKhThCzONY+MXdriJupDANBgkqhkiG9w0BAQUFADBf\n" - "MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT\n" - "LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw\n" - "HhcNOTcwNDE3MDAwMDAwWhcNMTExMDI0MjM1OTU5WjCBujEfMB0GA1UEChMWVmVy\n" - "aVNpZ24gVHJ1c3QgTmV0d29yazEXMBUGA1UECxMOVmVyaVNpZ24sIEluYy4xMzAx\n" - "BgNVBAsTKlZlcmlTaWduIEludGVybmF0aW9uYWwgU2VydmVyIENBIC0gQ2xhc3Mg\n" - "MzFJMEcGA1UECxNAd3d3LnZlcmlzaWduLmNvbS9DUFMgSW5jb3JwLmJ5IFJlZi4g\n" - "TElBQklMSVRZIExURC4oYyk5NyBWZXJpU2lnbjCBnzANBgkqhkiG9w0BAQEFAAOB\n" - "jQAwgYkCgYEA2IKA6NYZAn0fhRg5JaJlK+G/1AXTvOY2O6rwTGxbtueqPHNFVbLx\n" - "veqXQu2aNAoV1Klc9UAl3dkHwTKydWzEyruj/lYncUOqY/UwPpMo5frxCTvzt01O\n" - "OfdcSVq4wR3Tsor+cDCVQsv+K1GLWjw6+SJPkLICp1OcTzTnqwSye28CAwEAAaOB\n" - "4zCB4DAPBgNVHRMECDAGAQH/AgEAMEQGA1UdIAQ9MDswOQYLYIZIAYb4RQEHAQEw\n" - "KjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL0NQUzA0BgNV\n" - "HSUELTArBggrBgEFBQcDAQYIKwYBBQUHAwIGCWCGSAGG+EIEAQYKYIZIAYb4RQEI\n" - "ATALBgNVHQ8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgEGMDEGA1UdHwQqMCgwJqAk\n" - "oCKGIGh0dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA0GCSqGSIb3DQEB\n" - "BQUAA4GBAAgB7ORolANC8XPxI6I63unx2sZUxCM+hurPajozq+qcBBQHNgYL+Yhv\n" - "1RPuKSvD5HKNRO3RrCAJLeH24RkFOLA9D59/+J4C3IYChmFOJl9en5IeDCSk9dBw\n" - "E88mw0M9SR2egi5SX7w+xmYpAY5Okiy8RnUDgqxz6dl+C2fvVFIa\n" - "-----END CERTIFICATE-----\n" + "MIIGCjCCBPKgAwIBAgIQESoAbTflEG/WynzD77rMGDANBgkqhkiG9w0BAQUFADCB\n" + "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" + "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n" + "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n" + "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n" + "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBvjEL\n" + "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n" + "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n" + "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMvVmVy\n" + "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0EwggEi\n" + "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9Voi6iDRkZM/NyrDu5xlzxXLZ\n" + "u0W8taj/g74cA9vtibcuEBolvFXKQaGfC88ZXnC5XjlLnjEcX4euKqqoK6IbOxAj\n" + "XxOx3QiMThTag4HjtYzjaO0kZ85Wtqybc5ZE24qMs9bwcZOO23FUSutzWWqPcFEs\n" + "A5+X0cwRerxiDZUqyRx1V+n1x+q6hDXLx4VafuRN4RGXfQ4gNEXb8aIJ6+s9nriW\n" + "Q140SwglHkMaotm3igE0PcP45a9PjP/NZfAjTsWXs1zakByChQ0GDcEitnsopAPD\n" + "TFPRWLxyvAg5/KB2qKjpS26IPeOzMSWMcylIDjJ5Bu09Q/T25On8fb6OCNUfAgMB\n" + "AAGjggH0MIIB8DAdBgNVHQ4EFgQUTkPIHXbvN1N6T/JYb5TzOOLVvd8wEgYDVR0T\n" + "AQH/BAgwBgEB/wIBADA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYc\n" + "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2NwczA9BgNVHR8ENjA0MDKgMKAuhixo\n" + "dHRwOi8vRVZTZWN1cmUtY3JsLnZlcmlzaWduLmNvbS9wY2EzLWc1LmNybDAgBgNV\n" + "HSUEGTAXBglghkgBhvhCBAEGCmCGSAGG+EUBCAEwDgYDVR0PAQH/BAQDAgEGMBEG\n" + "CWCGSAGG+EIBAQQEAwIBBjBtBggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglpbWFn\n" + "ZS9naWYwITAfMAcGBSsOAwIaBBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRw\n" + "Oi8vbG9nby52ZXJpc2lnbi5jb20vdnNsb2dvLmdpZjApBgNVHREEIjAgpB4wHDEa\n" + "MBgGA1UEAxMRQ2xhc3MzQ0EyMDQ4LTEtNDgwPQYIKwYBBQUHAQEEMTAvMC0GCCsG\n" + "AQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5jb20wHwYDVR0j\n" + "BBgwFoAUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwDQYJKoZIhvcNAQEFBQADggEBAFqi\n" + "sb/rjdQ4qIBywtw4Lqyncfkro7tHu21pbxA2mIzHVi67vKtKm3rW8oKT4BT+is6D\n" + "t4Pbk4errGV5Sf1XqbHOCR+6EBXECQ5i4/kKJdVkmPDyqA92Mn6R5hjuvOfa0E6N\n" + "eLvincBZK8DOlQ0kDHLKNF5wIokrSrDxaIfz7kSNKEB3OW5IckUxXWs5DoYC6maZ\n" + "kzEP32fepp+MnUzOcW86Ifa5ND/5btia9z7a84Ffelxtj3z2mXS3/+QXXe1hXqtI\n" + "u5aNZkU5tBIK9nDpnHYiS2DpKhs0Sfei1GfAsSatE7rZhAHBq+GObXAWO3eskZq7\n" + "Gh/aWKfkT8Fhrryi/ks=\n" + "-----END CERTIFICATE-----\n" + /* chain[3] (CA) */ + "-----BEGIN CERTIFICATE-----\n" + "MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG\n" + "A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz\n" + "cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2\n" + "MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV\n" + "BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt\n" + "YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN\n" + "ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE\n" + "BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is\n" + "I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G\n" + "CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do\n" + "lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc\n" + "AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIDgzCCAuygAwIBAgIQJUuKhThCzONY+MXdriJupDANBgkqhkiG9w0BAQUFADBf\n" + "MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT\n" + "LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw\n" + "HhcNOTcwNDE3MDAwMDAwWhcNMTExMDI0MjM1OTU5WjCBujEfMB0GA1UEChMWVmVy\n" + "aVNpZ24gVHJ1c3QgTmV0d29yazEXMBUGA1UECxMOVmVyaVNpZ24sIEluYy4xMzAx\n" + "BgNVBAsTKlZlcmlTaWduIEludGVybmF0aW9uYWwgU2VydmVyIENBIC0gQ2xhc3Mg\n" + "MzFJMEcGA1UECxNAd3d3LnZlcmlzaWduLmNvbS9DUFMgSW5jb3JwLmJ5IFJlZi4g\n" + "TElBQklMSVRZIExURC4oYyk5NyBWZXJpU2lnbjCBnzANBgkqhkiG9w0BAQEFAAOB\n" + "jQAwgYkCgYEA2IKA6NYZAn0fhRg5JaJlK+G/1AXTvOY2O6rwTGxbtueqPHNFVbLx\n" + "veqXQu2aNAoV1Klc9UAl3dkHwTKydWzEyruj/lYncUOqY/UwPpMo5frxCTvzt01O\n" + "OfdcSVq4wR3Tsor+cDCVQsv+K1GLWjw6+SJPkLICp1OcTzTnqwSye28CAwEAAaOB\n" + "4zCB4DAPBgNVHRMECDAGAQH/AgEAMEQGA1UdIAQ9MDswOQYLYIZIAYb4RQEHAQEw\n" + "KjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL0NQUzA0BgNV\n" + "HSUELTArBggrBgEFBQcDAQYIKwYBBQUHAwIGCWCGSAGG+EIEAQYKYIZIAYb4RQEI\n" + "ATALBgNVHQ8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgEGMDEGA1UdHwQqMCgwJqAk\n" + "oCKGIGh0dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA0GCSqGSIb3DQEB\n" + "BQUAA4GBAAgB7ORolANC8XPxI6I63unx2sZUxCM+hurPajozq+qcBBQHNgYL+Yhv\n" + "1RPuKSvD5HKNRO3RrCAJLeH24RkFOLA9D59/+J4C3IYChmFOJl9en5IeDCSk9dBw\n" + "E88mw0M9SR2egi5SX7w+xmYpAY5Okiy8RnUDgqxz6dl+C2fvVFIa\n" + "-----END CERTIFICATE-----\n" }; -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1207000800; @@ -600,8 +608,8 @@ void doit(void) gnutls_x509_crt_t *crts; unsigned int crts_size, i; gnutls_x509_trust_list_t tl; - unsigned int status, flags = - GNUTLS_VERIFY_ALLOW_UNSORTED_CHAIN | GNUTLS_VERIFY_ALLOW_BROKEN; + unsigned int status, flags = GNUTLS_VERIFY_ALLOW_UNSORTED_CHAIN | + GNUTLS_VERIFY_ALLOW_BROKEN; unsigned int not_flags = GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN; /* this must be called once in the program @@ -616,9 +624,8 @@ void doit(void) /* test for gnutls_certificate_get_issuer() */ gnutls_x509_trust_list_init(&tl, 0); - ret = - gnutls_x509_trust_list_add_trust_mem(tl, &ca, NULL, - GNUTLS_X509_FMT_PEM, 0, 0); + ret = gnutls_x509_trust_list_add_trust_mem(tl, &ca, NULL, + GNUTLS_X509_FMT_PEM, 0, 0); if (ret < 0) { fail("gnutls_x509_trust_list_add_trust_mem\n"); exit(1); @@ -627,18 +634,16 @@ void doit(void) /* Chain 1 */ data.data = (void *)chain1; data.size = sizeof(chain1); - ret = - gnutls_x509_crt_list_import2(&crts, &crts_size, &data, - GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_x509_crt_list_import2(&crts, &crts_size, &data, + GNUTLS_X509_FMT_PEM, 0); if (ret < 0) { fail("gnutls_x509_crt_list_import2: %s\n", gnutls_strerror(ret)); exit(1); } - ret = - gnutls_x509_trust_list_verify_crt(tl, crts, crts_size, flags, - &status, NULL); + ret = gnutls_x509_trust_list_verify_crt(tl, crts, crts_size, flags, + &status, NULL); if (ret < 0 || status != 0) { fail("gnutls_x509_trust_list_verify_crt - 1\n"); exit(1); @@ -654,27 +659,25 @@ void doit(void) /* verify whether the GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED flag is * considered by gnutls_x509_crt_list_import2() */ - ret = - gnutls_x509_crt_list_import2(&crts, &crts_size, &data, - GNUTLS_X509_FMT_PEM, - GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED); + ret = gnutls_x509_crt_list_import2( + &crts, &crts_size, &data, GNUTLS_X509_FMT_PEM, + GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED); if (ret != GNUTLS_E_CERTIFICATE_LIST_UNSORTED) { - fail("gnutls_x509_crt_list_import2 with flag GNUTLS_E_CERTIFICATE_LIST_UNSORTED on unsorted chain didn't fail: %s\n", gnutls_strerror(ret)); + fail("gnutls_x509_crt_list_import2 with flag GNUTLS_E_CERTIFICATE_LIST_UNSORTED on unsorted chain didn't fail: %s\n", + gnutls_strerror(ret)); exit(1); } - ret = - gnutls_x509_crt_list_import2(&crts, &crts_size, &data, - GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_x509_crt_list_import2(&crts, &crts_size, &data, + GNUTLS_X509_FMT_PEM, 0); if (ret < 0) { fail("gnutls_x509_crt_list_import2: %s\n", gnutls_strerror(ret)); exit(1); } - ret = - gnutls_x509_trust_list_verify_crt(tl, crts, crts_size, flags, - &status, NULL); + ret = gnutls_x509_trust_list_verify_crt(tl, crts, crts_size, flags, + &status, NULL); if (ret < 0 || status != 0) { fail("gnutls_x509_trust_list_verify_crt - 2\n"); exit(1); @@ -687,18 +690,16 @@ void doit(void) /* Chain 3 */ data.data = (void *)chain3; data.size = sizeof(chain3); - ret = - gnutls_x509_crt_list_import2(&crts, &crts_size, &data, - GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_x509_crt_list_import2(&crts, &crts_size, &data, + GNUTLS_X509_FMT_PEM, 0); if (ret < 0) { fail("gnutls_x509_crt_list_import2: %s\n", gnutls_strerror(ret)); exit(1); } - ret = - gnutls_x509_trust_list_verify_crt(tl, crts, crts_size, flags, - &status, NULL); + ret = gnutls_x509_trust_list_verify_crt(tl, crts, crts_size, flags, + &status, NULL); if (ret < 0 || status != 0) { fail("gnutls_x509_trust_list_verify_crt - 3\n"); exit(1); @@ -711,18 +712,16 @@ void doit(void) /* Chain 4 */ data.data = (void *)chain4; data.size = sizeof(chain4); - ret = - gnutls_x509_crt_list_import2(&crts, &crts_size, &data, - GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_x509_crt_list_import2(&crts, &crts_size, &data, + GNUTLS_X509_FMT_PEM, 0); if (ret < 0) { fail("gnutls_x509_crt_list_import2: %s\n", gnutls_strerror(ret)); exit(1); } - ret = - gnutls_x509_trust_list_verify_crt(tl, crts, crts_size, flags, - &status, NULL); + ret = gnutls_x509_trust_list_verify_crt(tl, crts, crts_size, flags, + &status, NULL); if (ret < 0 || status != 0) { fail("gnutls_x509_trust_list_verify_crt - 4\n"); exit(1); @@ -735,18 +734,16 @@ void doit(void) /* Check if an unsorted list would fail if the unsorted flag is not given */ data.data = (void *)chain2; data.size = sizeof(chain2); - ret = - gnutls_x509_crt_list_import2(&crts, &crts_size, &data, - GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_x509_crt_list_import2(&crts, &crts_size, &data, + GNUTLS_X509_FMT_PEM, 0); if (ret < 0) { fail("gnutls_x509_crt_list_import2: %s\n", gnutls_strerror(ret)); exit(1); } - ret = - gnutls_x509_trust_list_verify_crt(tl, crts, crts_size, - not_flags, &status, NULL); + ret = gnutls_x509_trust_list_verify_crt(tl, crts, crts_size, not_flags, + &status, NULL); if (ret < 0 || status == 0) { fail("gnutls_x509_trust_list_verify_crt - 5\n"); exit(1); diff --git a/tests/chainverify.c b/tests/chainverify.c index 9460724fd1..9b19fe67ac 100644 --- a/tests/chainverify.c +++ b/tests/chainverify.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -40,7 +40,7 @@ static time_t then = DEFAULT_THEN; verifying certificates. To avoid a time bomb, we hard code the current time. This should work fine on systems where the library call to time is resolved at run-time. */ -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { if (t) *t = then; @@ -85,7 +85,6 @@ void doit(void) gnutls_global_set_log_level(4711); for (i = 0; chains[i].chain; i++) { - printf("[%d]: Chain '%s'...\n", (int)i, chains[i].name); if (chains[i].notfips && gnutls_fips140_mode_enabled()) { @@ -109,9 +108,8 @@ void doit(void) tmp.data = (unsigned char *)chains[i].chain[j]; tmp.size = strlen(chains[i].chain[j]); - ret = - gnutls_x509_crt_import(certs[j], &tmp, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(certs[j], &tmp, + GNUTLS_X509_FMT_PEM); if (debug > 2) printf("done\n"); if (ret < 0) { @@ -167,11 +165,9 @@ void doit(void) then = DEFAULT_THEN; if (chains[i].purpose == NULL) { - ret = gnutls_x509_crt_list_verify(certs, j, - &ca, 1, NULL, 0, - chains - [i].verify_flags, - &verify_status); + ret = gnutls_x509_crt_list_verify( + certs, j, &ca, 1, NULL, 0, + chains[i].verify_flags, &verify_status); if (ret < 0) { fprintf(stderr, "gnutls_x509_crt_list_verify[%d,%d]: %s\n", @@ -181,12 +177,16 @@ void doit(void) if (verify_status != chains[i].expected_verify_result) { gnutls_datum_t out1, out2; - gnutls_certificate_verification_status_print - (verify_status, GNUTLS_CRT_X509, &out1, 0); - gnutls_certificate_verification_status_print - (chains[i].expected_verify_result, - GNUTLS_CRT_X509, &out2, 0); - fail("chain[%s]:\nverify_status: %d: %s\nexpected: %d: %s\n", chains[i].name, verify_status, out1.data, chains[i].expected_verify_result, out2.data); + gnutls_certificate_verification_status_print( + verify_status, GNUTLS_CRT_X509, &out1, + 0); + gnutls_certificate_verification_status_print( + chains[i].expected_verify_result, + GNUTLS_CRT_X509, &out2, 0); + fail("chain[%s]:\nverify_status: %d: %s\nexpected: %d: %s\n", + chains[i].name, verify_status, out1.data, + chains[i].expected_verify_result, + out2.data); gnutls_free(out1.data); gnutls_free(out2.data); @@ -203,7 +203,6 @@ void doit(void) exit(1); } else if (debug) printf("done\n"); - } gnutls_x509_trust_list_init(&tl, 0); @@ -219,20 +218,13 @@ void doit(void) vdata[0].type = GNUTLS_DT_KEY_PURPOSE_OID; vdata[0].data = (void *)chains[i].purpose; - ret = - gnutls_x509_trust_list_verify_crt2(tl, certs, j, - vdata, 1, - chains - [i].verify_flags, - &verify_status1, - NULL); + ret = gnutls_x509_trust_list_verify_crt2( + tl, certs, j, vdata, 1, chains[i].verify_flags, + &verify_status1, NULL); } else { - ret = - gnutls_x509_trust_list_verify_crt(tl, certs, j, - chains - [i].verify_flags, - &verify_status1, - NULL); + ret = gnutls_x509_trust_list_verify_crt( + tl, certs, j, chains[i].verify_flags, + &verify_status1, NULL); } if (ret < 0) { fprintf(stderr, @@ -244,23 +236,32 @@ void doit(void) if (chains[i].purpose == NULL) { if (verify_status != verify_status1) { gnutls_datum_t out1, out2; - gnutls_certificate_verification_status_print - (verify_status, GNUTLS_CRT_X509, &out1, 0); - gnutls_certificate_verification_status_print - (verify_status1, GNUTLS_CRT_X509, &out2, 0); - fail("chain[%s]:\nverify_status: %d: %s\ntrust list vstatus: %d: %s\n", chains[i].name, verify_status, out1.data, verify_status1, out2.data); + gnutls_certificate_verification_status_print( + verify_status, GNUTLS_CRT_X509, &out1, + 0); + gnutls_certificate_verification_status_print( + verify_status1, GNUTLS_CRT_X509, &out2, + 0); + fail("chain[%s]:\nverify_status: %d: %s\ntrust list vstatus: %d: %s\n", + chains[i].name, verify_status, out1.data, + verify_status1, out2.data); gnutls_free(out1.data); gnutls_free(out2.data); } } else { - if (verify_status1 != chains[i].expected_verify_result) { + if (verify_status1 != + chains[i].expected_verify_result) { gnutls_datum_t out1, out2; - gnutls_certificate_verification_status_print - (verify_status1, GNUTLS_CRT_X509, &out1, 0); - gnutls_certificate_verification_status_print - (chains[i].expected_verify_result, - GNUTLS_CRT_X509, &out2, 0); - fail("chain[%s]:\nverify_status: %d: %s\nexpected: %d: %s\n", chains[i].name, verify_status1, out1.data, chains[i].expected_verify_result, out2.data); + gnutls_certificate_verification_status_print( + verify_status1, GNUTLS_CRT_X509, &out1, + 0); + gnutls_certificate_verification_status_print( + chains[i].expected_verify_result, + GNUTLS_CRT_X509, &out2, 0); + fail("chain[%s]:\nverify_status: %d: %s\nexpected: %d: %s\n", + chains[i].name, verify_status1, out1.data, + chains[i].expected_verify_result, + out2.data); gnutls_free(out1.data); gnutls_free(out2.data); } diff --git a/tests/cipher-alignment.c b/tests/cipher-alignment.c index 65fa6e0fa7..2ed64baad4 100644 --- a/tests/cipher-alignment.c +++ b/tests/cipher-alignment.c @@ -24,7 +24,7 @@ /* Tests whether memory input to ciphers are properly aligned */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -40,24 +40,24 @@ int main(int argc, char **argv) #else -# include -# include -# include -# if !defined(_WIN32) -# include -# endif -# include -# include -# include -# include -# include -# include -# include - -# include "utils.h" - -# include "ex-session-info.c" -# include "ex-x509-info.c" +#include +#include +#include +#if !defined(_WIN32) +#include +#endif +#include +#include +#include +#include +#include +#include +#include + +#include "utils.h" + +#include "ex-session-info.c" +#include "ex-x509-info.c" static pid_t child; @@ -67,56 +67,58 @@ static void tls_log_func(int level, const char *str) str); } -# define MAX_BUF 1024 -# define MSG "Hello TLS" +#define MAX_BUF 1024 +#define MSG "Hello TLS" static unsigned char ca_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIB5zCCAVKgAwIBAgIERiYdJzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTExWhcNMDgwNDE3MTMyOTExWjAZMRcw\n" - "FQYDVQQDEw5HbnVUTFMgdGVzdCBDQTCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA\n" - "vuyYeh1vfmslnuggeEKgZAVmQ5ltSdUY7H25WGSygKMUYZ0KT74v8C780qtcNt9T\n" - "7EPH/N6RvB4BprdssgcQLsthR3XKA84jbjjxNCcaGs33lvOz8A1nf8p3hD+cKfRi\n" - "kfYSW2JazLrtCC4yRCas/SPOUxu78of+3HiTfFm/oXUCAwEAAaNDMEEwDwYDVR0T\n" - "AQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwQAMB0GA1UdDgQWBBTpPBz7rZJu5gak\n" - "Viyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAiaIRqGfp1jPpNeVhABK60SU0KIAy\n" - "njuu7kHq5peUgYn8Jd9zNzExBOEp1VOipGsf6G66oQAhDFp2o8zkz7ZH71zR4HEW\n" - "KoX6n5Emn6DvcEH/9pAhnGxNHJAoS7czTKv/JDZJhkqHxyrE1fuLsg5Qv25DTw7+\n" - "PfqUpIhz5Bbm7J4=\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIB5zCCAVKgAwIBAgIERiYdJzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTExWhcNMDgwNDE3MTMyOTExWjAZMRcw\n" + "FQYDVQQDEw5HbnVUTFMgdGVzdCBDQTCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA\n" + "vuyYeh1vfmslnuggeEKgZAVmQ5ltSdUY7H25WGSygKMUYZ0KT74v8C780qtcNt9T\n" + "7EPH/N6RvB4BprdssgcQLsthR3XKA84jbjjxNCcaGs33lvOz8A1nf8p3hD+cKfRi\n" + "kfYSW2JazLrtCC4yRCas/SPOUxu78of+3HiTfFm/oXUCAwEAAaNDMEEwDwYDVR0T\n" + "AQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwQAMB0GA1UdDgQWBBTpPBz7rZJu5gak\n" + "Viyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAiaIRqGfp1jPpNeVhABK60SU0KIAy\n" + "njuu7kHq5peUgYn8Jd9zNzExBOEp1VOipGsf6G66oQAhDFp2o8zkz7ZH71zR4HEW\n" + "KoX6n5Emn6DvcEH/9pAhnGxNHJAoS7czTKv/JDZJhkqHxyrE1fuLsg5Qv25DTw7+\n" + "PfqUpIhz5Bbm7J4=\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t ca = { ca_pem, sizeof(ca_pem) }; static unsigned char cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICHjCCAYmgAwIBAgIERiYdNzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTI3WhcNMDgwNDE3MTMyOTI3WjAdMRsw\n" - "GQYDVQQDExJHbnVUTFMgdGVzdCBjbGllbnQwgZwwCwYJKoZIhvcNAQEBA4GMADCB\n" - "iAKBgLtmQ/Xyxde2jMzF3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeL\n" - "ZIkiW8DdU3w77XwEu4C5KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKN\n" - "zj2AC41179gAgY8oBAOgIo1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjdjB0MAwG\n" - "A1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUDAweg\n" - "ADAdBgNVHQ4EFgQUTLkKm/odNON+3svSBxX+odrLaJEwHwYDVR0jBBgwFoAU6Twc\n" - "+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBALujmBJVZnvaTXr9cFRJ\n" - "jpfc/3X7sLUsMvumcDE01ls/cG5mIatmiyEU9qI3jbgUf82z23ON/acwJf875D3/\n" - "U7jyOsBJ44SEQITbin2yUeJMIm1tievvdNXBDfW95AM507ShzP12sfiJkJfjjdhy\n" - "dc8Siq5JojruiMizAf0pA7in\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIICHjCCAYmgAwIBAgIERiYdNzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTI3WhcNMDgwNDE3MTMyOTI3WjAdMRsw\n" + "GQYDVQQDExJHbnVUTFMgdGVzdCBjbGllbnQwgZwwCwYJKoZIhvcNAQEBA4GMADCB\n" + "iAKBgLtmQ/Xyxde2jMzF3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeL\n" + "ZIkiW8DdU3w77XwEu4C5KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKN\n" + "zj2AC41179gAgY8oBAOgIo1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjdjB0MAwG\n" + "A1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUDAweg\n" + "ADAdBgNVHQ4EFgQUTLkKm/odNON+3svSBxX+odrLaJEwHwYDVR0jBBgwFoAU6Twc\n" + "+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBALujmBJVZnvaTXr9cFRJ\n" + "jpfc/3X7sLUsMvumcDE01ls/cG5mIatmiyEU9qI3jbgUf82z23ON/acwJf875D3/\n" + "U7jyOsBJ44SEQITbin2yUeJMIm1tievvdNXBDfW95AM507ShzP12sfiJkJfjjdhy\n" + "dc8Siq5JojruiMizAf0pA7in\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t cert = { cert_pem, sizeof(cert_pem) }; static unsigned char key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" - "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" - "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" - "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" - "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" - "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" - "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" - "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" - "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" - "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" - "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" - "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" - "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" + "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" + "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" + "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" + "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" + "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" + "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" + "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" + "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" + "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" + "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" + "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" + "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" + "-----END RSA PRIVATE KEY-----\n"; const gnutls_datum_t key = { key_pem, sizeof(key_pem) }; struct myaes_ctx { @@ -127,15 +129,11 @@ struct myaes_ctx { static unsigned aes_init = 0; -extern int -_gnutls_crypto_register_cipher(gnutls_cipher_algorithm_t algorithm, - int priority, - gnutls_cipher_init_func init, - gnutls_cipher_setkey_func setkey, - gnutls_cipher_setiv_func setiv, - gnutls_cipher_encrypt_func encrypt, - gnutls_cipher_decrypt_func decrypt, - gnutls_cipher_deinit_func deinit); +extern int _gnutls_crypto_register_cipher( + gnutls_cipher_algorithm_t algorithm, int priority, + gnutls_cipher_init_func init, gnutls_cipher_setkey_func setkey, + gnutls_cipher_setiv_func setiv, gnutls_cipher_encrypt_func encrypt, + gnutls_cipher_decrypt_func decrypt, gnutls_cipher_deinit_func deinit); static int myaes_init(gnutls_cipher_algorithm_t algorithm, void **_ctx, int enc) { @@ -175,32 +173,30 @@ static int myaes_setiv(void *_ctx, const void *iv, size_t iv_size) return 0; } -static int -myaes_encrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t dst_size) +static int myaes_encrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t dst_size) { struct myaes_ctx *ctx = _ctx; -# if 0 /* this is under the control of the caller */ +#if 0 /* this is under the control of the caller */ if (((unsigned long)src) % 16 != 0) { fail("encrypt: source is not 16-byte aligned: %lu\n", ((unsigned long)src) % 16); } -# endif +#endif if (((unsigned long)dst) % 16 != 0) { fail("encrypt: dest is not 16-byte aligned: %lu\n", ((unsigned long)dst) % 16); } - cbc_encrypt(&ctx->aes, (nettle_cipher_func *) aes128_encrypt, 16, + cbc_encrypt(&ctx->aes, (nettle_cipher_func *)aes128_encrypt, 16, ctx->iv, src_size, dst, src); return 0; } -static int -myaes_decrypt(void *_ctx, const void *src, size_t src_size, - void *dst, size_t dst_size) +static int myaes_decrypt(void *_ctx, const void *src, size_t src_size, + void *dst, size_t dst_size) { struct myaes_ctx *ctx = _ctx; @@ -209,14 +205,14 @@ myaes_decrypt(void *_ctx, const void *src, size_t src_size, ((unsigned long)src) % 16); } -# if 0 /* this is under the control of the caller */ +#if 0 /* this is under the control of the caller */ if (((unsigned long)dst) % 16 != 0) { fail("decrypt: dest is not 16-byte aligned: %lu\n", ((unsigned long)dst) % 16); } -# endif +#endif - cbc_decrypt(&ctx->aes, (nettle_cipher_func *) aes128_decrypt, 16, + cbc_decrypt(&ctx->aes, (nettle_cipher_func *)aes128_decrypt, 16, ctx->iv, src_size, dst, src); return 0; @@ -272,8 +268,8 @@ static void client(int sd, const char *prio) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* see the Getting peer's information example */ if (debug) @@ -301,8 +297,7 @@ static void client(int sd, const char *prio) ret = gnutls_handshake(session); if (ret == 0) { if (debug) - success - ("client: handshake complete, reading again.\n"); + success("client: handshake complete, reading again.\n"); ret = gnutls_record_recv(session, buffer, MAX_BUF); } else { fail("client: handshake failed.\n"); @@ -328,7 +323,7 @@ static void client(int sd, const char *prio) gnutls_bye(session, GNUTLS_SHUT_RDWR); - end: +end: close(sd); @@ -340,50 +335,47 @@ static void client(int sd, const char *prio) /* This is a sample TLS 1.0 echo server, using X.509 authentication. */ -# define MAX_BUF 1024 +#define MAX_BUF 1024 /* These are global */ static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" - "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" - "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" - "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" - "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" - "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" - "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" - "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" - "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" - "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" - "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" - "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" + "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" + "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" + "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" + "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" + "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" + "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" + "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" + "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" + "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" + "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" + "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" - "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" - "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" - "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" - "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" - "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" - "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" - "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" - "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" - "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" - "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" - "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" - "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" + "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" + "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" + "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" + "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" + "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" + "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" + "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" + "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" + "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" + "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" + "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" + "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; static void server(int sd, const char *prio) { @@ -429,8 +421,8 @@ static void server(int sd, const char *prio) if (debug) { success("server: Handshake was completed\n"); success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); } /* see the Getting peer's information example */ @@ -443,11 +435,11 @@ static void server(int sd, const char *prio) if (ret == 0) { if (debug) - success - ("server: Peer has closed the GnuTLS connection\n"); + success("server: Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0) { - fail("server: Received corrupted data(%d). Closing...\n", ret); + fail("server: Received corrupted data(%d). Closing...\n", + ret); break; } else if (ret > 0) { /* echo data back to the client @@ -468,8 +460,7 @@ static void server(int sd, const char *prio) success("server: finished\n"); } -static -void start(const char *prio) +static void start(const char *prio) { int sockets[2]; int err; @@ -509,10 +500,8 @@ void doit(void) global_init(); ret = _gnutls_crypto_register_cipher(GNUTLS_CIPHER_AES_128_CBC, 1, - myaes_init, - myaes_setkey, - myaes_setiv, - myaes_encrypt, + myaes_init, myaes_setkey, + myaes_setiv, myaes_encrypt, myaes_decrypt, myaes_deinit); if (ret < 0) { fail("%d: cannot register cipher\n", __LINE__); @@ -526,4 +515,4 @@ void doit(void) gnutls_global_deinit(); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/cipher-neg-common.c b/tests/cipher-neg-common.c index 3f7dc2a3f7..cad360274d 100644 --- a/tests/cipher-neg-common.c +++ b/tests/cipher-neg-common.c @@ -30,7 +30,7 @@ typedef struct test_case_st { unsigned not_on_fips; } test_case_st; -static void try(test_case_st * test) +static void try(test_case_st *test) { int sret, cret; gnutls_certificate_credentials_t s_cert_cred; @@ -54,15 +54,15 @@ static void try(test_case_st * test) gnutls_certificate_set_known_dh_params(s_cert_cred, GNUTLS_SEC_PARAM_MEDIUM); - assert(gnutls_certificate_set_x509_key_mem - (s_cert_cred, &server_ca3_localhost_rsa_decrypt_cert, - &server_ca3_key, GNUTLS_X509_FMT_PEM) >= 0); - assert(gnutls_certificate_set_x509_key_mem - (s_cert_cred, &server_ca3_localhost_rsa_sign_cert, - &server_ca3_key, GNUTLS_X509_FMT_PEM) >= 0); - assert(gnutls_certificate_set_x509_key_mem - (s_cert_cred, &server_ca3_localhost_ecc_cert, - &server_ca3_ecc_key, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem( + s_cert_cred, &server_ca3_localhost_rsa_decrypt_cert, + &server_ca3_key, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem( + s_cert_cred, &server_ca3_localhost_rsa_sign_cert, + &server_ca3_key, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem( + s_cert_cred, &server_ca3_localhost_ecc_cert, + &server_ca3_ecc_key, GNUTLS_X509_FMT_PEM) >= 0); gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, c_cert_cred); @@ -86,20 +86,26 @@ static void try(test_case_st * test) char *desc2 = gnutls_session_get_desc(client); if (strcmp(desc1, desc2) != 0) - fail("server and client session description don't match (%s, %s)\n", desc1, desc2); + fail("server and client session description don't match (%s, %s)\n", + desc1, desc2); if (strcmp(desc1, test->desc) != 0) - fail("session and expected session description don't match (%s, %s)\n", desc1, test->desc); + fail("session and expected session description don't match (%s, %s)\n", + desc1, test->desc); gnutls_free(desc1); gnutls_free(desc2); } if (sret != cret) { - fail("%s: client negotiated different cipher than server (%s, %s)!\n", test->name, gnutls_cipher_get_name(cret), gnutls_cipher_get_name(sret)); + fail("%s: client negotiated different cipher than server (%s, %s)!\n", + test->name, gnutls_cipher_get_name(cret), + gnutls_cipher_get_name(sret)); } if (cret != test->cipher) { - fail("%s: negotiated cipher differs with the expected (%s, %s)!\n", test->name, gnutls_cipher_get_name(cret), gnutls_cipher_get_name(test->cipher)); + fail("%s: negotiated cipher differs with the expected (%s, %s)!\n", + test->name, gnutls_cipher_get_name(cret), + gnutls_cipher_get_name(test->cipher)); } if (test->group) { @@ -107,11 +113,15 @@ static void try(test_case_st * test) cret = gnutls_group_get(server); if (sret != cret) { - fail("%s: client negotiated different group than server (%s, %s)!\n", test->name, gnutls_group_get_name(cret), gnutls_group_get_name(sret)); + fail("%s: client negotiated different group than server (%s, %s)!\n", + test->name, gnutls_group_get_name(cret), + gnutls_group_get_name(sret)); } if (cret != test->group) { - fail("%s: negotiated group differs with the expected (%s, %s)!\n", test->name, gnutls_group_get_name(cret), gnutls_group_get_name(test->group)); + fail("%s: negotiated group differs with the expected (%s, %s)!\n", + test->name, gnutls_group_get_name(cret), + gnutls_group_get_name(test->group)); } } diff --git a/tests/cipher-padding.c b/tests/cipher-padding.c index d629a595f9..7572269fca 100644 --- a/tests/cipher-padding.c +++ b/tests/cipher-padding.c @@ -35,8 +35,8 @@ static void tls_log_func(int level, const char *str) #define CLAMP(x, b) (((x) + (b)) / (b)) * (b) -static void -start(gnutls_cipher_algorithm_t algo, size_t plaintext_size, unsigned int flags) +static void start(gnutls_cipher_algorithm_t algo, size_t plaintext_size, + unsigned int flags) { int ret; gnutls_cipher_hd_t ch; @@ -48,8 +48,8 @@ start(gnutls_cipher_algorithm_t algo, size_t plaintext_size, unsigned int flags) size_t size; gnutls_datum_t key, iv; - success("%s %zu %u\n", - gnutls_cipher_get_name(algo), plaintext_size, flags); + success("%s %zu %u\n", gnutls_cipher_get_name(algo), plaintext_size, + flags); block_size = gnutls_cipher_get_block_size(algo); @@ -72,18 +72,16 @@ start(gnutls_cipher_algorithm_t algo, size_t plaintext_size, unsigned int flags) /* Check overflow if PKCS#7 is requested */ if (flags & GNUTLS_CIPHER_PADDING_PKCS7) { - ret = gnutls_cipher_encrypt3(ch, - plaintext, SIZE_MAX, - NULL, &size, flags); + ret = gnutls_cipher_encrypt3(ch, plaintext, SIZE_MAX, NULL, + &size, flags); if (ret != GNUTLS_E_INVALID_REQUEST) { fail("gnutls_cipher_encrypt3 succeeded\n"); } } /* Get the ciphertext size */ - ret = gnutls_cipher_encrypt3(ch, - plaintext, plaintext_size, - NULL, &size, flags); + ret = gnutls_cipher_encrypt3(ch, plaintext, plaintext_size, NULL, &size, + flags); if (ret < 0) { fail("gnutls_cipher_encrypt3 failed\n"); } @@ -93,35 +91,33 @@ start(gnutls_cipher_algorithm_t algo, size_t plaintext_size, unsigned int flags) fail("no padding appended\n"); } if (size != CLAMP(plaintext_size, block_size)) { - fail("size does not match: %zu (expected %zu)\n", - size, CLAMP(plaintext_size, block_size)); + fail("size does not match: %zu (expected %zu)\n", size, + CLAMP(plaintext_size, block_size)); } } else { if (size != plaintext_size) { - fail("size does not match: %zu (expected %zu)\n", - size, plaintext_size); + fail("size does not match: %zu (expected %zu)\n", size, + plaintext_size); } } /* Encrypt with padding */ - ret = gnutls_cipher_encrypt3(ch, - plaintext, plaintext_size, - ciphertext, &size, flags); + ret = gnutls_cipher_encrypt3(ch, plaintext, plaintext_size, ciphertext, + &size, flags); if (ret < 0) { fail("gnutls_cipher_encrypt3 failed\n"); } /* Decrypt with padding */ - ret = gnutls_cipher_decrypt3(ch, - ciphertext, size, - ciphertext, &size, flags); + ret = gnutls_cipher_decrypt3(ch, ciphertext, size, ciphertext, &size, + flags); if (ret < 0) { fail("gnutls_cipher_encrypt3 failed\n"); } if (size != plaintext_size) { - fail("size does not match: %zu (expected %zu)\n", - size, plaintext_size); + fail("size does not match: %zu (expected %zu)\n", size, + plaintext_size); } if (memcmp(ciphertext, plaintext, size) != 0) { diff --git a/tests/ciphersuite-name.c b/tests/ciphersuite-name.c index 9331c34905..8d194190b4 100644 --- a/tests/ciphersuite-name.c +++ b/tests/ciphersuite-name.c @@ -37,8 +37,8 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -static void -start(const char *test_name, const char *prio, const char *expected_name) +static void start(const char *test_name, const char *prio, + const char *expected_name) { int sret, cret; gnutls_certificate_credentials_t scred, ccred; @@ -54,8 +54,7 @@ start(const char *test_name, const char *prio, const char *expected_name) /* Init server */ assert(gnutls_certificate_allocate_credentials(&scred) >= 0); - assert(gnutls_certificate_set_x509_key_mem(scred, - &server_cert, + assert(gnutls_certificate_set_x509_key_mem(scred, &server_cert, &server_key, GNUTLS_X509_FMT_PEM) >= 0); @@ -69,8 +68,8 @@ start(const char *test_name, const char *prio, const char *expected_name) /* Init client */ gnutls_certificate_allocate_credentials(&ccred); - assert(gnutls_certificate_set_x509_trust_mem - (ccred, &ca3_cert, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_trust_mem(ccred, &ca3_cert, + GNUTLS_X509_FMT_PEM) >= 0); gnutls_init(&client, GNUTLS_CLIENT); @@ -86,12 +85,14 @@ start(const char *test_name, const char *prio, const char *expected_name) name = gnutls_ciphersuite_get(server); if (!name || strcmp(name, expected_name) != 0) { - fail("server: gnutls_ciphersuite_get returned %s while %s is expected\n", name, expected_name); + fail("server: gnutls_ciphersuite_get returned %s while %s is expected\n", + name, expected_name); } name = gnutls_ciphersuite_get(client); if (!name || strcmp(name, expected_name) != 0) { - fail("client: gnutls_ciphersuite_get returned %s while %s is expected\n", name, expected_name); + fail("client: gnutls_ciphersuite_get returned %s while %s is expected\n", + name, expected_name); } gnutls_bye(client, GNUTLS_SHUT_WR); diff --git a/tests/client-fastopen.c b/tests/client-fastopen.c index bf3b854a00..17eced7eca 100644 --- a/tests/client-fastopen.c +++ b/tests/client-fastopen.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -39,21 +39,21 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include "cert-common.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "cert-common.h" +#include "utils.h" static void terminate(void); @@ -67,7 +67,7 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd, struct sockaddr *connect_addr, socklen_t connect_addrlen, const char *prio) @@ -103,8 +103,7 @@ static void client(int fd, struct sockaddr *connect_addr, */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed: %s\n", gnutls_strerror(ret)); @@ -116,8 +115,8 @@ static void client(int fd, struct sockaddr *connect_addr, if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { ret = gnutls_record_recv(session, buffer, sizeof(buffer) - 1); @@ -138,7 +137,7 @@ static void client(int fd, struct sockaddr *connect_addr, gnutls_strerror(ret)); } - end: +end: close(fd); @@ -177,9 +176,8 @@ static void server(int fd, const char *prio) gnutls_certificate_allocate_credentials(&xcred); - ret = gnutls_certificate_set_x509_key_mem(xcred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + xcred, &server_cert, &server_key, GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -197,8 +195,7 @@ static void server(int fd, const char *prio) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -211,8 +208,8 @@ static void server(int fd, const char *prio) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* see the Getting peer's information example */ /* print_info(session); */ @@ -252,8 +249,7 @@ static void ch_handler(int sig) return; } -static -void run(const char *name, const char *prio) +static void run(const char *name, const char *prio) { int ret; struct sockaddr_in saddr; @@ -322,4 +318,4 @@ void doit(void) run("tls1.3", "NORMAL:-VERS-ALL:+VERS-TLS1.3"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/client-secrets.h b/tests/client-secrets.h index f53660e6b2..76fefbe783 100644 --- a/tests/client-secrets.h +++ b/tests/client-secrets.h @@ -22,312 +22,312 @@ */ #ifndef GNUTLS_TESTS_CLIENT_SECRETS_H -# define GNUTLS_TESTS_CLIENT_SECRETS_H +#define GNUTLS_TESTS_CLIENT_SECRETS_H static const struct secret client_normal_0[] = { { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - (const uint8_t *) - "\xdc\x47\xf1\x8b\x33\xd6\x08\x26\xa1\xad\xd9\xb0\x81\xee\x32\x01\xb6\xfc\xce\x9a\xa0\x35\xd1\x30\x61\x85\x2d\xff\x3d\xb1\xe5\x49", - (const uint8_t *) - "\x24\x24\xaf\xad\xa8\x0e\x40\xc6\xa1\xc3\x05\xff\x5a\xe5\x04\xb9\xc4\xc2\xff\xd6\x2b\x9a\xb8\x43\x85\x78\x92\x1e\x69\x44\x3d\xe2", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - (const uint8_t *) - "\x03\x38\xcf\x43\x68\x90\x01\x7a\xdb\x06\x7d\x92\x08\xcf\x67\x22\x41\xa7\xd3\xe7\x7e\x3a\xaf\x50\xd6\x5c\xaa\xfe\x90\xa4\x87\xa2", - (const uint8_t *) - "\x5c\x6f\xe8\x8b\xac\x0a\x7b\x04\x76\x9f\xe8\x2a\x7c\x06\x19\x4c\xa7\x51\x5c\xfe\xb9\x31\x25\x0d\x3b\x07\x78\xa9\xdd\x2d\x27\x72", - }, + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + (const uint8_t + *)"\xdc\x47\xf1\x8b\x33\xd6\x08\x26\xa1\xad\xd9\xb0\x81\xee\x32\x01\xb6\xfc\xce\x9a\xa0\x35\xd1\x30\x61\x85\x2d\xff\x3d\xb1\xe5\x49", + (const uint8_t + *)"\x24\x24\xaf\xad\xa8\x0e\x40\xc6\xa1\xc3\x05\xff\x5a\xe5\x04\xb9\xc4\xc2\xff\xd6\x2b\x9a\xb8\x43\x85\x78\x92\x1e\x69\x44\x3d\xe2", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + (const uint8_t + *)"\x03\x38\xcf\x43\x68\x90\x01\x7a\xdb\x06\x7d\x92\x08\xcf\x67\x22\x41\xa7\xd3\xe7\x7e\x3a\xaf\x50\xd6\x5c\xaa\xfe\x90\xa4\x87\xa2", + (const uint8_t + *)"\x5c\x6f\xe8\x8b\xac\x0a\x7b\x04\x76\x9f\xe8\x2a\x7c\x06\x19\x4c\xa7\x51\x5c\xfe\xb9\x31\x25\x0d\x3b\x07\x78\xa9\xdd\x2d\x27\x72", + }, }; static const struct secret client_normal_1[] = { { - GNUTLS_ENCRYPTION_LEVEL_EARLY, - 32, - NULL, - (const uint8_t *) - "\x6f\x16\x97\x8e\x90\x94\x77\x40\x0f\x00\xff\x79\x1c\x15\x20\x19\xeb\xc6\x10\x59\x8f\x92\xac\xab\xe6\xc8\x3c\x12\x30\x94\x91\x12", - }, - { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - (const uint8_t *) - "\xf0\x91\x46\x67\xe1\x36\xb5\xd2\x30\x71\xc9\x1d\xcc\x56\xc3\x9d\xee\xfa\x26\xdb\xe4\xe2\x17\xb7\x3d\xb9\x27\x6a\x7c\xa5\xe7\xa9", - NULL, - }, - { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - NULL, - (const uint8_t *) - "\xe7\xf5\x57\x48\x54\x71\xae\xc0\xba\x8d\x12\x90\xc5\x25\xef\xe3\xc7\xea\x39\x09\x24\xe8\x20\x6d\x03\x8d\x80\x1e\xdd\x24\xbb\x5a", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - (const uint8_t *) - "\xf8\xa9\xd5\xe6\x18\xbb\xb7\x07\x1d\xb3\x8f\x78\x61\x30\x63\x01\xa5\x49\xc6\x05\x92\x7f\x67\x98\x72\x76\x75\xb1\x31\x1f\x14\xf9", - (const uint8_t *) - "\xab\xa3\xf5\x4f\xcc\x3f\xd7\xb7\x23\x73\x51\x6e\x64\xc1\xaa\x6b\xa9\x77\x30\x58\xe6\xd4\xf5\xe9\xa5\xd2\x0d\x35\x42\x65\xda\xf1", - }, + GNUTLS_ENCRYPTION_LEVEL_EARLY, + 32, + NULL, + (const uint8_t + *)"\x6f\x16\x97\x8e\x90\x94\x77\x40\x0f\x00\xff\x79\x1c\x15\x20\x19\xeb\xc6\x10\x59\x8f\x92\xac\xab\xe6\xc8\x3c\x12\x30\x94\x91\x12", + }, + { + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + (const uint8_t + *)"\xf0\x91\x46\x67\xe1\x36\xb5\xd2\x30\x71\xc9\x1d\xcc\x56\xc3\x9d\xee\xfa\x26\xdb\xe4\xe2\x17\xb7\x3d\xb9\x27\x6a\x7c\xa5\xe7\xa9", + NULL, + }, + { + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + NULL, + (const uint8_t + *)"\xe7\xf5\x57\x48\x54\x71\xae\xc0\xba\x8d\x12\x90\xc5\x25\xef\xe3\xc7\xea\x39\x09\x24\xe8\x20\x6d\x03\x8d\x80\x1e\xdd\x24\xbb\x5a", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + (const uint8_t + *)"\xf8\xa9\xd5\xe6\x18\xbb\xb7\x07\x1d\xb3\x8f\x78\x61\x30\x63\x01\xa5\x49\xc6\x05\x92\x7f\x67\x98\x72\x76\x75\xb1\x31\x1f\x14\xf9", + (const uint8_t + *)"\xab\xa3\xf5\x4f\xcc\x3f\xd7\xb7\x23\x73\x51\x6e\x64\xc1\xaa\x6b\xa9\x77\x30\x58\xe6\xd4\xf5\xe9\xa5\xd2\x0d\x35\x42\x65\xda\xf1", + }, }; static const struct secret client_normal_2[] = { { - GNUTLS_ENCRYPTION_LEVEL_EARLY, - 32, - NULL, - (const uint8_t *) - "\x6f\x16\x97\x8e\x90\x94\x77\x40\x0f\x00\xff\x79\x1c\x15\x20\x19\xeb\xc6\x10\x59\x8f\x92\xac\xab\xe6\xc8\x3c\x12\x30\x94\x91\x12", - }, - { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - (const uint8_t *) - "\xf0\x91\x46\x67\xe1\x36\xb5\xd2\x30\x71\xc9\x1d\xcc\x56\xc3\x9d\xee\xfa\x26\xdb\xe4\xe2\x17\xb7\x3d\xb9\x27\x6a\x7c\xa5\xe7\xa9", - NULL, - }, - { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - NULL, - (const uint8_t *) - "\xe7\xf5\x57\x48\x54\x71\xae\xc0\xba\x8d\x12\x90\xc5\x25\xef\xe3\xc7\xea\x39\x09\x24\xe8\x20\x6d\x03\x8d\x80\x1e\xdd\x24\xbb\x5a", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - (const uint8_t *) - "\xd8\xdf\x24\xd6\xe1\xdc\x86\x3b\x88\x3d\x2b\xad\x56\xec\x22\xd4\x5c\xaf\xa9\x24\xa3\x90\x20\xa1\xae\x77\x5c\x7d\xef\x3d\xcc\x5b", - (const uint8_t *) - "\x8d\x02\xe0\xe8\x5f\x9a\xcc\xc7\x8c\x81\x3b\x58\x5f\xa9\xdb\xfd\x98\xb1\x1f\xcc\x3e\x7b\xca\xe7\xef\x05\x4c\x84\x6c\xe1\x11\x25", - }, + GNUTLS_ENCRYPTION_LEVEL_EARLY, + 32, + NULL, + (const uint8_t + *)"\x6f\x16\x97\x8e\x90\x94\x77\x40\x0f\x00\xff\x79\x1c\x15\x20\x19\xeb\xc6\x10\x59\x8f\x92\xac\xab\xe6\xc8\x3c\x12\x30\x94\x91\x12", + }, + { + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + (const uint8_t + *)"\xf0\x91\x46\x67\xe1\x36\xb5\xd2\x30\x71\xc9\x1d\xcc\x56\xc3\x9d\xee\xfa\x26\xdb\xe4\xe2\x17\xb7\x3d\xb9\x27\x6a\x7c\xa5\xe7\xa9", + NULL, + }, + { + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + NULL, + (const uint8_t + *)"\xe7\xf5\x57\x48\x54\x71\xae\xc0\xba\x8d\x12\x90\xc5\x25\xef\xe3\xc7\xea\x39\x09\x24\xe8\x20\x6d\x03\x8d\x80\x1e\xdd\x24\xbb\x5a", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + (const uint8_t + *)"\xd8\xdf\x24\xd6\xe1\xdc\x86\x3b\x88\x3d\x2b\xad\x56\xec\x22\xd4\x5c\xaf\xa9\x24\xa3\x90\x20\xa1\xae\x77\x5c\x7d\xef\x3d\xcc\x5b", + (const uint8_t + *)"\x8d\x02\xe0\xe8\x5f\x9a\xcc\xc7\x8c\x81\x3b\x58\x5f\xa9\xdb\xfd\x98\xb1\x1f\xcc\x3e\x7b\xca\xe7\xef\x05\x4c\x84\x6c\xe1\x11\x25", + }, }; static const struct secret client_small_0[] = { { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - (const uint8_t *) - "\xdc\x47\xf1\x8b\x33\xd6\x08\x26\xa1\xad\xd9\xb0\x81\xee\x32\x01\xb6\xfc\xce\x9a\xa0\x35\xd1\x30\x61\x85\x2d\xff\x3d\xb1\xe5\x49", - (const uint8_t *) - "\x24\x24\xaf\xad\xa8\x0e\x40\xc6\xa1\xc3\x05\xff\x5a\xe5\x04\xb9\xc4\xc2\xff\xd6\x2b\x9a\xb8\x43\x85\x78\x92\x1e\x69\x44\x3d\xe2", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - (const uint8_t *) - "\x03\x38\xcf\x43\x68\x90\x01\x7a\xdb\x06\x7d\x92\x08\xcf\x67\x22\x41\xa7\xd3\xe7\x7e\x3a\xaf\x50\xd6\x5c\xaa\xfe\x90\xa4\x87\xa2", - (const uint8_t *) - "\x5c\x6f\xe8\x8b\xac\x0a\x7b\x04\x76\x9f\xe8\x2a\x7c\x06\x19\x4c\xa7\x51\x5c\xfe\xb9\x31\x25\x0d\x3b\x07\x78\xa9\xdd\x2d\x27\x72", - }, + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + (const uint8_t + *)"\xdc\x47\xf1\x8b\x33\xd6\x08\x26\xa1\xad\xd9\xb0\x81\xee\x32\x01\xb6\xfc\xce\x9a\xa0\x35\xd1\x30\x61\x85\x2d\xff\x3d\xb1\xe5\x49", + (const uint8_t + *)"\x24\x24\xaf\xad\xa8\x0e\x40\xc6\xa1\xc3\x05\xff\x5a\xe5\x04\xb9\xc4\xc2\xff\xd6\x2b\x9a\xb8\x43\x85\x78\x92\x1e\x69\x44\x3d\xe2", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + (const uint8_t + *)"\x03\x38\xcf\x43\x68\x90\x01\x7a\xdb\x06\x7d\x92\x08\xcf\x67\x22\x41\xa7\xd3\xe7\x7e\x3a\xaf\x50\xd6\x5c\xaa\xfe\x90\xa4\x87\xa2", + (const uint8_t + *)"\x5c\x6f\xe8\x8b\xac\x0a\x7b\x04\x76\x9f\xe8\x2a\x7c\x06\x19\x4c\xa7\x51\x5c\xfe\xb9\x31\x25\x0d\x3b\x07\x78\xa9\xdd\x2d\x27\x72", + }, }; static const struct secret client_small_1[] = { { - GNUTLS_ENCRYPTION_LEVEL_EARLY, - 32, - NULL, - (const uint8_t *) - "\x6f\x16\x97\x8e\x90\x94\x77\x40\x0f\x00\xff\x79\x1c\x15\x20\x19\xeb\xc6\x10\x59\x8f\x92\xac\xab\xe6\xc8\x3c\x12\x30\x94\x91\x12", - }, - { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - (const uint8_t *) - "\xf0\x91\x46\x67\xe1\x36\xb5\xd2\x30\x71\xc9\x1d\xcc\x56\xc3\x9d\xee\xfa\x26\xdb\xe4\xe2\x17\xb7\x3d\xb9\x27\x6a\x7c\xa5\xe7\xa9", - NULL, - }, - { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - NULL, - (const uint8_t *) - "\xe7\xf5\x57\x48\x54\x71\xae\xc0\xba\x8d\x12\x90\xc5\x25\xef\xe3\xc7\xea\x39\x09\x24\xe8\x20\x6d\x03\x8d\x80\x1e\xdd\x24\xbb\x5a", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - (const uint8_t *) - "\xf8\xa9\xd5\xe6\x18\xbb\xb7\x07\x1d\xb3\x8f\x78\x61\x30\x63\x01\xa5\x49\xc6\x05\x92\x7f\x67\x98\x72\x76\x75\xb1\x31\x1f\x14\xf9", - (const uint8_t *) - "\xab\xa3\xf5\x4f\xcc\x3f\xd7\xb7\x23\x73\x51\x6e\x64\xc1\xaa\x6b\xa9\x77\x30\x58\xe6\xd4\xf5\xe9\xa5\xd2\x0d\x35\x42\x65\xda\xf1", - }, + GNUTLS_ENCRYPTION_LEVEL_EARLY, + 32, + NULL, + (const uint8_t + *)"\x6f\x16\x97\x8e\x90\x94\x77\x40\x0f\x00\xff\x79\x1c\x15\x20\x19\xeb\xc6\x10\x59\x8f\x92\xac\xab\xe6\xc8\x3c\x12\x30\x94\x91\x12", + }, + { + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + (const uint8_t + *)"\xf0\x91\x46\x67\xe1\x36\xb5\xd2\x30\x71\xc9\x1d\xcc\x56\xc3\x9d\xee\xfa\x26\xdb\xe4\xe2\x17\xb7\x3d\xb9\x27\x6a\x7c\xa5\xe7\xa9", + NULL, + }, + { + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + NULL, + (const uint8_t + *)"\xe7\xf5\x57\x48\x54\x71\xae\xc0\xba\x8d\x12\x90\xc5\x25\xef\xe3\xc7\xea\x39\x09\x24\xe8\x20\x6d\x03\x8d\x80\x1e\xdd\x24\xbb\x5a", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + (const uint8_t + *)"\xf8\xa9\xd5\xe6\x18\xbb\xb7\x07\x1d\xb3\x8f\x78\x61\x30\x63\x01\xa5\x49\xc6\x05\x92\x7f\x67\x98\x72\x76\x75\xb1\x31\x1f\x14\xf9", + (const uint8_t + *)"\xab\xa3\xf5\x4f\xcc\x3f\xd7\xb7\x23\x73\x51\x6e\x64\xc1\xaa\x6b\xa9\x77\x30\x58\xe6\xd4\xf5\xe9\xa5\xd2\x0d\x35\x42\x65\xda\xf1", + }, }; static const struct secret client_small_2[] = { { - GNUTLS_ENCRYPTION_LEVEL_EARLY, - 32, - NULL, - (const uint8_t *) - "\x6f\x16\x97\x8e\x90\x94\x77\x40\x0f\x00\xff\x79\x1c\x15\x20\x19\xeb\xc6\x10\x59\x8f\x92\xac\xab\xe6\xc8\x3c\x12\x30\x94\x91\x12", - }, - { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - (const uint8_t *) - "\xf0\x91\x46\x67\xe1\x36\xb5\xd2\x30\x71\xc9\x1d\xcc\x56\xc3\x9d\xee\xfa\x26\xdb\xe4\xe2\x17\xb7\x3d\xb9\x27\x6a\x7c\xa5\xe7\xa9", - NULL, - }, - { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - NULL, - (const uint8_t *) - "\xe7\xf5\x57\x48\x54\x71\xae\xc0\xba\x8d\x12\x90\xc5\x25\xef\xe3\xc7\xea\x39\x09\x24\xe8\x20\x6d\x03\x8d\x80\x1e\xdd\x24\xbb\x5a", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - (const uint8_t *) - "\xd8\xdf\x24\xd6\xe1\xdc\x86\x3b\x88\x3d\x2b\xad\x56\xec\x22\xd4\x5c\xaf\xa9\x24\xa3\x90\x20\xa1\xae\x77\x5c\x7d\xef\x3d\xcc\x5b", - (const uint8_t *) - "\x8d\x02\xe0\xe8\x5f\x9a\xcc\xc7\x8c\x81\x3b\x58\x5f\xa9\xdb\xfd\x98\xb1\x1f\xcc\x3e\x7b\xca\xe7\xef\x05\x4c\x84\x6c\xe1\x11\x25", - }, + GNUTLS_ENCRYPTION_LEVEL_EARLY, + 32, + NULL, + (const uint8_t + *)"\x6f\x16\x97\x8e\x90\x94\x77\x40\x0f\x00\xff\x79\x1c\x15\x20\x19\xeb\xc6\x10\x59\x8f\x92\xac\xab\xe6\xc8\x3c\x12\x30\x94\x91\x12", + }, + { + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + (const uint8_t + *)"\xf0\x91\x46\x67\xe1\x36\xb5\xd2\x30\x71\xc9\x1d\xcc\x56\xc3\x9d\xee\xfa\x26\xdb\xe4\xe2\x17\xb7\x3d\xb9\x27\x6a\x7c\xa5\xe7\xa9", + NULL, + }, + { + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + NULL, + (const uint8_t + *)"\xe7\xf5\x57\x48\x54\x71\xae\xc0\xba\x8d\x12\x90\xc5\x25\xef\xe3\xc7\xea\x39\x09\x24\xe8\x20\x6d\x03\x8d\x80\x1e\xdd\x24\xbb\x5a", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + (const uint8_t + *)"\xd8\xdf\x24\xd6\xe1\xdc\x86\x3b\x88\x3d\x2b\xad\x56\xec\x22\xd4\x5c\xaf\xa9\x24\xa3\x90\x20\xa1\xae\x77\x5c\x7d\xef\x3d\xcc\x5b", + (const uint8_t + *)"\x8d\x02\xe0\xe8\x5f\x9a\xcc\xc7\x8c\x81\x3b\x58\x5f\xa9\xdb\xfd\x98\xb1\x1f\xcc\x3e\x7b\xca\xe7\xef\x05\x4c\x84\x6c\xe1\x11\x25", + }, }; static const struct secret client_empty_0[] = { { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - (const uint8_t *) - "\xdc\x47\xf1\x8b\x33\xd6\x08\x26\xa1\xad\xd9\xb0\x81\xee\x32\x01\xb6\xfc\xce\x9a\xa0\x35\xd1\x30\x61\x85\x2d\xff\x3d\xb1\xe5\x49", - (const uint8_t *) - "\x24\x24\xaf\xad\xa8\x0e\x40\xc6\xa1\xc3\x05\xff\x5a\xe5\x04\xb9\xc4\xc2\xff\xd6\x2b\x9a\xb8\x43\x85\x78\x92\x1e\x69\x44\x3d\xe2", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - (const uint8_t *) - "\x03\x38\xcf\x43\x68\x90\x01\x7a\xdb\x06\x7d\x92\x08\xcf\x67\x22\x41\xa7\xd3\xe7\x7e\x3a\xaf\x50\xd6\x5c\xaa\xfe\x90\xa4\x87\xa2", - (const uint8_t *) - "\x5c\x6f\xe8\x8b\xac\x0a\x7b\x04\x76\x9f\xe8\x2a\x7c\x06\x19\x4c\xa7\x51\x5c\xfe\xb9\x31\x25\x0d\x3b\x07\x78\xa9\xdd\x2d\x27\x72", - }, + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + (const uint8_t + *)"\xdc\x47\xf1\x8b\x33\xd6\x08\x26\xa1\xad\xd9\xb0\x81\xee\x32\x01\xb6\xfc\xce\x9a\xa0\x35\xd1\x30\x61\x85\x2d\xff\x3d\xb1\xe5\x49", + (const uint8_t + *)"\x24\x24\xaf\xad\xa8\x0e\x40\xc6\xa1\xc3\x05\xff\x5a\xe5\x04\xb9\xc4\xc2\xff\xd6\x2b\x9a\xb8\x43\x85\x78\x92\x1e\x69\x44\x3d\xe2", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + (const uint8_t + *)"\x03\x38\xcf\x43\x68\x90\x01\x7a\xdb\x06\x7d\x92\x08\xcf\x67\x22\x41\xa7\xd3\xe7\x7e\x3a\xaf\x50\xd6\x5c\xaa\xfe\x90\xa4\x87\xa2", + (const uint8_t + *)"\x5c\x6f\xe8\x8b\xac\x0a\x7b\x04\x76\x9f\xe8\x2a\x7c\x06\x19\x4c\xa7\x51\x5c\xfe\xb9\x31\x25\x0d\x3b\x07\x78\xa9\xdd\x2d\x27\x72", + }, }; static const struct secret client_empty_1[] = { { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - (const uint8_t *) - "\xac\xc2\x07\x48\xba\x3d\x59\x2f\x5f\xce\x79\xda\xa6\x04\x4b\x55\x06\x2c\x9f\x0e\xdf\xda\x42\x51\x9d\x0b\xd9\x39\x4b\x8c\xb2\x7e", - (const uint8_t *) - "\x87\x07\x01\xdc\x13\xdc\xb7\x93\x26\x53\xff\xa4\x2d\x28\xed\xca\xef\x5b\xa7\x94\x17\x26\xdf\x1f\x8c\x7b\x79\x32\x55\x5e\xcb\x79", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - (const uint8_t *) - "\x73\x16\xe6\x0a\x66\xe1\x81\xd8\x74\xfa\x25\xe3\xf3\x1a\xf2\x4d\x84\xd6\xc6\x7a\x1b\x27\x79\x0a\x09\x9e\xd2\xd4\x1d\xdf\x0f\x53", - (const uint8_t *) - "\x5f\x8e\xfe\x3e\xa0\x41\x27\x9e\xbb\xba\xf2\xa9\x22\xc6\x06\x58\xb5\xbf\x6e\x29\x3d\x84\x10\x4e\x3f\xe3\xc0\x1f\x7a\x2c\xf5\x21", - }, + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + (const uint8_t + *)"\xac\xc2\x07\x48\xba\x3d\x59\x2f\x5f\xce\x79\xda\xa6\x04\x4b\x55\x06\x2c\x9f\x0e\xdf\xda\x42\x51\x9d\x0b\xd9\x39\x4b\x8c\xb2\x7e", + (const uint8_t + *)"\x87\x07\x01\xdc\x13\xdc\xb7\x93\x26\x53\xff\xa4\x2d\x28\xed\xca\xef\x5b\xa7\x94\x17\x26\xdf\x1f\x8c\x7b\x79\x32\x55\x5e\xcb\x79", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + (const uint8_t + *)"\x73\x16\xe6\x0a\x66\xe1\x81\xd8\x74\xfa\x25\xe3\xf3\x1a\xf2\x4d\x84\xd6\xc6\x7a\x1b\x27\x79\x0a\x09\x9e\xd2\xd4\x1d\xdf\x0f\x53", + (const uint8_t + *)"\x5f\x8e\xfe\x3e\xa0\x41\x27\x9e\xbb\xba\xf2\xa9\x22\xc6\x06\x58\xb5\xbf\x6e\x29\x3d\x84\x10\x4e\x3f\xe3\xc0\x1f\x7a\x2c\xf5\x21", + }, }; static const struct secret client_empty_2[] = { { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - (const uint8_t *) - "\xac\xc2\x07\x48\xba\x3d\x59\x2f\x5f\xce\x79\xda\xa6\x04\x4b\x55\x06\x2c\x9f\x0e\xdf\xda\x42\x51\x9d\x0b\xd9\x39\x4b\x8c\xb2\x7e", - (const uint8_t *) - "\x87\x07\x01\xdc\x13\xdc\xb7\x93\x26\x53\xff\xa4\x2d\x28\xed\xca\xef\x5b\xa7\x94\x17\x26\xdf\x1f\x8c\x7b\x79\x32\x55\x5e\xcb\x79", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - (const uint8_t *) - "\x73\x16\xe6\x0a\x66\xe1\x81\xd8\x74\xfa\x25\xe3\xf3\x1a\xf2\x4d\x84\xd6\xc6\x7a\x1b\x27\x79\x0a\x09\x9e\xd2\xd4\x1d\xdf\x0f\x53", - (const uint8_t *) - "\x5f\x8e\xfe\x3e\xa0\x41\x27\x9e\xbb\xba\xf2\xa9\x22\xc6\x06\x58\xb5\xbf\x6e\x29\x3d\x84\x10\x4e\x3f\xe3\xc0\x1f\x7a\x2c\xf5\x21", - }, + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + (const uint8_t + *)"\xac\xc2\x07\x48\xba\x3d\x59\x2f\x5f\xce\x79\xda\xa6\x04\x4b\x55\x06\x2c\x9f\x0e\xdf\xda\x42\x51\x9d\x0b\xd9\x39\x4b\x8c\xb2\x7e", + (const uint8_t + *)"\x87\x07\x01\xdc\x13\xdc\xb7\x93\x26\x53\xff\xa4\x2d\x28\xed\xca\xef\x5b\xa7\x94\x17\x26\xdf\x1f\x8c\x7b\x79\x32\x55\x5e\xcb\x79", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + (const uint8_t + *)"\x73\x16\xe6\x0a\x66\xe1\x81\xd8\x74\xfa\x25\xe3\xf3\x1a\xf2\x4d\x84\xd6\xc6\x7a\x1b\x27\x79\x0a\x09\x9e\xd2\xd4\x1d\xdf\x0f\x53", + (const uint8_t + *)"\x5f\x8e\xfe\x3e\xa0\x41\x27\x9e\xbb\xba\xf2\xa9\x22\xc6\x06\x58\xb5\xbf\x6e\x29\x3d\x84\x10\x4e\x3f\xe3\xc0\x1f\x7a\x2c\xf5\x21", + }, }; static const struct secret client_explicit_0[] = { { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - (const uint8_t *) - "\xdc\x47\xf1\x8b\x33\xd6\x08\x26\xa1\xad\xd9\xb0\x81\xee\x32\x01\xb6\xfc\xce\x9a\xa0\x35\xd1\x30\x61\x85\x2d\xff\x3d\xb1\xe5\x49", - (const uint8_t *) - "\x24\x24\xaf\xad\xa8\x0e\x40\xc6\xa1\xc3\x05\xff\x5a\xe5\x04\xb9\xc4\xc2\xff\xd6\x2b\x9a\xb8\x43\x85\x78\x92\x1e\x69\x44\x3d\xe2", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - (const uint8_t *) - "\x03\x38\xcf\x43\x68\x90\x01\x7a\xdb\x06\x7d\x92\x08\xcf\x67\x22\x41\xa7\xd3\xe7\x7e\x3a\xaf\x50\xd6\x5c\xaa\xfe\x90\xa4\x87\xa2", - (const uint8_t *) - "\x5c\x6f\xe8\x8b\xac\x0a\x7b\x04\x76\x9f\xe8\x2a\x7c\x06\x19\x4c\xa7\x51\x5c\xfe\xb9\x31\x25\x0d\x3b\x07\x78\xa9\xdd\x2d\x27\x72", - }, + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + (const uint8_t + *)"\xdc\x47\xf1\x8b\x33\xd6\x08\x26\xa1\xad\xd9\xb0\x81\xee\x32\x01\xb6\xfc\xce\x9a\xa0\x35\xd1\x30\x61\x85\x2d\xff\x3d\xb1\xe5\x49", + (const uint8_t + *)"\x24\x24\xaf\xad\xa8\x0e\x40\xc6\xa1\xc3\x05\xff\x5a\xe5\x04\xb9\xc4\xc2\xff\xd6\x2b\x9a\xb8\x43\x85\x78\x92\x1e\x69\x44\x3d\xe2", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + (const uint8_t + *)"\x03\x38\xcf\x43\x68\x90\x01\x7a\xdb\x06\x7d\x92\x08\xcf\x67\x22\x41\xa7\xd3\xe7\x7e\x3a\xaf\x50\xd6\x5c\xaa\xfe\x90\xa4\x87\xa2", + (const uint8_t + *)"\x5c\x6f\xe8\x8b\xac\x0a\x7b\x04\x76\x9f\xe8\x2a\x7c\x06\x19\x4c\xa7\x51\x5c\xfe\xb9\x31\x25\x0d\x3b\x07\x78\xa9\xdd\x2d\x27\x72", + }, }; static const struct secret client_explicit_1[] = { { - GNUTLS_ENCRYPTION_LEVEL_EARLY, - 32, - NULL, - (const uint8_t *) - "\x6f\x16\x97\x8e\x90\x94\x77\x40\x0f\x00\xff\x79\x1c\x15\x20\x19\xeb\xc6\x10\x59\x8f\x92\xac\xab\xe6\xc8\x3c\x12\x30\x94\x91\x12", - }, - { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - (const uint8_t *) - "\xf0\x91\x46\x67\xe1\x36\xb5\xd2\x30\x71\xc9\x1d\xcc\x56\xc3\x9d\xee\xfa\x26\xdb\xe4\xe2\x17\xb7\x3d\xb9\x27\x6a\x7c\xa5\xe7\xa9", - NULL, - }, - { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - NULL, - (const uint8_t *) - "\xe7\xf5\x57\x48\x54\x71\xae\xc0\xba\x8d\x12\x90\xc5\x25\xef\xe3\xc7\xea\x39\x09\x24\xe8\x20\x6d\x03\x8d\x80\x1e\xdd\x24\xbb\x5a", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - (const uint8_t *) - "\xf8\xa9\xd5\xe6\x18\xbb\xb7\x07\x1d\xb3\x8f\x78\x61\x30\x63\x01\xa5\x49\xc6\x05\x92\x7f\x67\x98\x72\x76\x75\xb1\x31\x1f\x14\xf9", - (const uint8_t *) - "\xab\xa3\xf5\x4f\xcc\x3f\xd7\xb7\x23\x73\x51\x6e\x64\xc1\xaa\x6b\xa9\x77\x30\x58\xe6\xd4\xf5\xe9\xa5\xd2\x0d\x35\x42\x65\xda\xf1", - }, + GNUTLS_ENCRYPTION_LEVEL_EARLY, + 32, + NULL, + (const uint8_t + *)"\x6f\x16\x97\x8e\x90\x94\x77\x40\x0f\x00\xff\x79\x1c\x15\x20\x19\xeb\xc6\x10\x59\x8f\x92\xac\xab\xe6\xc8\x3c\x12\x30\x94\x91\x12", + }, + { + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + (const uint8_t + *)"\xf0\x91\x46\x67\xe1\x36\xb5\xd2\x30\x71\xc9\x1d\xcc\x56\xc3\x9d\xee\xfa\x26\xdb\xe4\xe2\x17\xb7\x3d\xb9\x27\x6a\x7c\xa5\xe7\xa9", + NULL, + }, + { + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + NULL, + (const uint8_t + *)"\xe7\xf5\x57\x48\x54\x71\xae\xc0\xba\x8d\x12\x90\xc5\x25\xef\xe3\xc7\xea\x39\x09\x24\xe8\x20\x6d\x03\x8d\x80\x1e\xdd\x24\xbb\x5a", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + (const uint8_t + *)"\xf8\xa9\xd5\xe6\x18\xbb\xb7\x07\x1d\xb3\x8f\x78\x61\x30\x63\x01\xa5\x49\xc6\x05\x92\x7f\x67\x98\x72\x76\x75\xb1\x31\x1f\x14\xf9", + (const uint8_t + *)"\xab\xa3\xf5\x4f\xcc\x3f\xd7\xb7\x23\x73\x51\x6e\x64\xc1\xaa\x6b\xa9\x77\x30\x58\xe6\xd4\xf5\xe9\xa5\xd2\x0d\x35\x42\x65\xda\xf1", + }, }; static const struct secret client_explicit_2[] = { { - GNUTLS_ENCRYPTION_LEVEL_EARLY, - 32, - NULL, - (const uint8_t *) - "\x6f\x16\x97\x8e\x90\x94\x77\x40\x0f\x00\xff\x79\x1c\x15\x20\x19\xeb\xc6\x10\x59\x8f\x92\xac\xab\xe6\xc8\x3c\x12\x30\x94\x91\x12", - }, - { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - (const uint8_t *) - "\xf0\x91\x46\x67\xe1\x36\xb5\xd2\x30\x71\xc9\x1d\xcc\x56\xc3\x9d\xee\xfa\x26\xdb\xe4\xe2\x17\xb7\x3d\xb9\x27\x6a\x7c\xa5\xe7\xa9", - NULL, - }, - { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - NULL, - (const uint8_t *) - "\xe7\xf5\x57\x48\x54\x71\xae\xc0\xba\x8d\x12\x90\xc5\x25\xef\xe3\xc7\xea\x39\x09\x24\xe8\x20\x6d\x03\x8d\x80\x1e\xdd\x24\xbb\x5a", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - (const uint8_t *) - "\xd8\xdf\x24\xd6\xe1\xdc\x86\x3b\x88\x3d\x2b\xad\x56\xec\x22\xd4\x5c\xaf\xa9\x24\xa3\x90\x20\xa1\xae\x77\x5c\x7d\xef\x3d\xcc\x5b", - (const uint8_t *) - "\x8d\x02\xe0\xe8\x5f\x9a\xcc\xc7\x8c\x81\x3b\x58\x5f\xa9\xdb\xfd\x98\xb1\x1f\xcc\x3e\x7b\xca\xe7\xef\x05\x4c\x84\x6c\xe1\x11\x25", - }, + GNUTLS_ENCRYPTION_LEVEL_EARLY, + 32, + NULL, + (const uint8_t + *)"\x6f\x16\x97\x8e\x90\x94\x77\x40\x0f\x00\xff\x79\x1c\x15\x20\x19\xeb\xc6\x10\x59\x8f\x92\xac\xab\xe6\xc8\x3c\x12\x30\x94\x91\x12", + }, + { + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + (const uint8_t + *)"\xf0\x91\x46\x67\xe1\x36\xb5\xd2\x30\x71\xc9\x1d\xcc\x56\xc3\x9d\xee\xfa\x26\xdb\xe4\xe2\x17\xb7\x3d\xb9\x27\x6a\x7c\xa5\xe7\xa9", + NULL, + }, + { + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + NULL, + (const uint8_t + *)"\xe7\xf5\x57\x48\x54\x71\xae\xc0\xba\x8d\x12\x90\xc5\x25\xef\xe3\xc7\xea\x39\x09\x24\xe8\x20\x6d\x03\x8d\x80\x1e\xdd\x24\xbb\x5a", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + (const uint8_t + *)"\xd8\xdf\x24\xd6\xe1\xdc\x86\x3b\x88\x3d\x2b\xad\x56\xec\x22\xd4\x5c\xaf\xa9\x24\xa3\x90\x20\xa1\xae\x77\x5c\x7d\xef\x3d\xcc\x5b", + (const uint8_t + *)"\x8d\x02\xe0\xe8\x5f\x9a\xcc\xc7\x8c\x81\x3b\x58\x5f\xa9\xdb\xfd\x98\xb1\x1f\xcc\x3e\x7b\xca\xe7\xef\x05\x4c\x84\x6c\xe1\x11\x25", + }, }; -#endif /* GNUTLS_TESTS_CLIENT_SECRETS_H */ +#endif /* GNUTLS_TESTS_CLIENT_SECRETS_H */ diff --git a/tests/client-sign-md5-rep.c b/tests/client-sign-md5-rep.c index 08866c838c..3a0c6b4694 100644 --- a/tests/client-sign-md5-rep.c +++ b/tests/client-sign-md5-rep.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -40,19 +40,19 @@ int main(int argc, char **argv) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" -# include "cert-common.h" +#include "utils.h" +#include "cert-common.h" pid_t child; @@ -61,625 +61,458 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s |<%d>| %s", "client", level, str); } -static unsigned char tls1_hello[] = { /* server hello etc. */ - 0x16, 0x03, 0x03, 0x00, 0x39, 0x02, 0x00, 0x00, 0x35, 0x03, 0x03, 0x95, - 0x66, 0x0A, 0x55, 0xBC, - 0x04, 0x84, 0xBD, 0x7E, 0xA6, 0xCE, 0x2B, 0x1C, 0x7B, 0x72, 0x28, 0x0D, - 0x8E, 0x2C, 0x34, 0xC8, - 0xFF, 0x73, 0xBA, 0x6C, 0x9F, 0x20, 0xB9, 0x18, 0xCD, 0x22, 0xCB, 0x00, - 0x00, 0x9E, 0x00, 0x00, - 0x0D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x01, 0x00, 0x01, 0x00, 0x00, 0x23, - 0x00, 0x00, 0x16, 0x03, - 0x03, 0x10, 0xE3, 0x0B, 0x00, 0x10, 0xDF, 0x00, 0x10, 0xDC, 0x00, 0x05, - 0x4F, 0x30, 0x82, 0x05, - 0x4B, 0x30, 0x82, 0x04, 0x33, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, - 0x4C, 0x8E, 0x18, 0x71, - 0x4B, 0x34, 0xE7, 0x5E, 0x8D, 0xAE, 0xFB, 0xE8, 0xF6, 0x4C, 0x3A, 0x82, - 0x30, 0x0D, 0x06, 0x09, - 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x30, - 0x81, 0x90, 0x31, 0x0B, - 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, - 0x1B, 0x30, 0x19, 0x06, - 0x03, 0x55, 0x04, 0x08, 0x13, 0x12, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x72, 0x20, 0x4D, 0x61, - 0x6E, 0x63, 0x68, 0x65, 0x73, 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0E, - 0x06, 0x03, 0x55, 0x04, - 0x07, 0x13, 0x07, 0x53, 0x61, 0x6C, 0x66, 0x6F, 0x72, 0x64, 0x31, 0x1A, - 0x30, 0x18, 0x06, 0x03, - 0x55, 0x04, 0x0A, 0x13, 0x11, 0x43, 0x4F, 0x4D, 0x4F, 0x44, 0x4F, 0x20, - 0x43, 0x41, 0x20, 0x4C, - 0x69, 0x6D, 0x69, 0x74, 0x65, 0x64, 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, - 0x55, 0x04, 0x03, 0x13, - 0x2D, 0x43, 0x4F, 0x4D, 0x4F, 0x44, 0x4F, 0x20, 0x52, 0x53, 0x41, 0x20, - 0x44, 0x6F, 0x6D, 0x61, - 0x69, 0x6E, 0x20, 0x56, 0x61, 0x6C, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6F, - 0x6E, 0x20, 0x53, 0x65, - 0x63, 0x75, 0x72, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, - 0x43, 0x41, 0x30, 0x1E, - 0x17, 0x0D, 0x31, 0x36, 0x30, 0x37, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x5A, 0x17, - 0x0D, 0x31, 0x37, 0x30, 0x39, 0x30, 0x35, 0x32, 0x33, 0x35, 0x39, 0x35, - 0x39, 0x5A, 0x30, 0x59, - 0x31, 0x21, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x18, 0x44, - 0x6F, 0x6D, 0x61, 0x69, - 0x6E, 0x20, 0x43, 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x20, 0x56, 0x61, - 0x6C, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x31, 0x1D, 0x30, 0x1B, 0x06, 0x03, 0x55, 0x04, 0x0B, - 0x13, 0x14, 0x50, 0x6F, - 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x53, 0x53, 0x4C, 0x20, 0x57, 0x69, - 0x6C, 0x64, 0x63, 0x61, - 0x72, 0x64, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, - 0x0C, 0x2A, 0x2E, 0x62, - 0x61, 0x64, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x82, 0x01, - 0x22, 0x30, 0x0D, 0x06, - 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, - 0x03, 0x82, 0x01, 0x0F, - 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xC2, 0x04, - 0xEC, 0xF8, 0x8C, 0xEE, - 0x04, 0xC2, 0xB3, 0xD8, 0x50, 0xD5, 0x70, 0x58, 0xCC, 0x93, 0x18, 0xEB, - 0x5C, 0xA8, 0x68, 0x49, - 0xB0, 0x22, 0xB5, 0xF9, 0x95, 0x9E, 0xB1, 0x2B, 0x2C, 0x76, 0x3E, 0x6C, - 0xC0, 0x4B, 0x60, 0x4C, - 0x4C, 0xEA, 0xB2, 0xB4, 0xC0, 0x0F, 0x80, 0xB6, 0xB0, 0xF9, 0x72, 0xC9, - 0x86, 0x02, 0xF9, 0x5C, - 0x41, 0x5D, 0x13, 0x2B, 0x7F, 0x71, 0xC4, 0x4B, 0xBC, 0xE9, 0x94, 0x2E, - 0x50, 0x37, 0xA6, 0x67, - 0x1C, 0x61, 0x8C, 0xF6, 0x41, 0x42, 0xC5, 0x46, 0xD3, 0x16, 0x87, 0x27, - 0x9F, 0x74, 0xEB, 0x0A, - 0x9D, 0x11, 0x52, 0x26, 0x21, 0x73, 0x6C, 0x84, 0x4C, 0x79, 0x55, 0xE4, - 0xD1, 0x6B, 0xE8, 0x06, - 0x3D, 0x48, 0x15, 0x52, 0xAD, 0xB3, 0x28, 0xDB, 0xAA, 0xFF, 0x6E, 0xFF, - 0x60, 0x95, 0x4A, 0x77, - 0x6B, 0x39, 0xF1, 0x24, 0xD1, 0x31, 0xB6, 0xDD, 0x4D, 0xC0, 0xC4, 0xFC, - 0x53, 0xB9, 0x6D, 0x42, - 0xAD, 0xB5, 0x7C, 0xFE, 0xAE, 0xF5, 0x15, 0xD2, 0x33, 0x48, 0xE7, 0x22, - 0x71, 0xC7, 0xC2, 0x14, - 0x7A, 0x6C, 0x28, 0xEA, 0x37, 0x4A, 0xDF, 0xEA, 0x6C, 0xB5, 0x72, 0xB4, - 0x7E, 0x5A, 0xA2, 0x16, - 0xDC, 0x69, 0xB1, 0x57, 0x44, 0xDB, 0x0A, 0x12, 0xAB, 0xDE, 0xC3, 0x0F, - 0x47, 0x74, 0x5C, 0x41, - 0x22, 0xE1, 0x9A, 0xF9, 0x1B, 0x93, 0xE6, 0xAD, 0x22, 0x06, 0x29, 0x2E, - 0xB1, 0xBA, 0x49, 0x1C, - 0x0C, 0x27, 0x9E, 0xA3, 0xFB, 0x8B, 0xF7, 0x40, 0x72, 0x00, 0xAC, 0x92, - 0x08, 0xD9, 0x8C, 0x57, - 0x84, 0x53, 0x81, 0x05, 0xCB, 0xE6, 0xFE, 0x6B, 0x54, 0x98, 0x40, 0x27, - 0x85, 0xC7, 0x10, 0xBB, - 0x73, 0x70, 0xEF, 0x69, 0x18, 0x41, 0x07, 0x45, 0x55, 0x7C, 0xF9, 0x64, - 0x3F, 0x3D, 0x2C, 0xC3, - 0xA9, 0x7C, 0xEB, 0x93, 0x1A, 0x4C, 0x86, 0xD1, 0xCA, 0x85, 0x02, 0x03, - 0x01, 0x00, 0x01, 0xA3, - 0x82, 0x01, 0xD5, 0x30, 0x82, 0x01, 0xD1, 0x30, 0x1F, 0x06, 0x03, 0x55, - 0x1D, 0x23, 0x04, 0x18, - 0x30, 0x16, 0x80, 0x14, 0x90, 0xAF, 0x6A, 0x3A, 0x94, 0x5A, 0x0B, 0xD8, - 0x90, 0xEA, 0x12, 0x56, - 0x73, 0xDF, 0x43, 0xB4, 0x3A, 0x28, 0xDA, 0xE7, 0x30, 0x1D, 0x06, 0x03, - 0x55, 0x1D, 0x0E, 0x04, - 0x16, 0x04, 0x14, 0x9D, 0xEE, 0xC1, 0x7B, 0x81, 0x0B, 0x3A, 0x47, 0x69, - 0x71, 0x18, 0x7D, 0x11, - 0x37, 0x93, 0xBC, 0xA5, 0x1B, 0x3F, 0xFB, 0x30, 0x0E, 0x06, 0x03, 0x55, - 0x1D, 0x0F, 0x01, 0x01, - 0xFF, 0x04, 0x04, 0x03, 0x02, 0x05, 0xA0, 0x30, 0x0C, 0x06, 0x03, 0x55, - 0x1D, 0x13, 0x01, 0x01, - 0xFF, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x25, - 0x04, 0x16, 0x30, 0x14, - 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, - 0x2B, 0x06, 0x01, 0x05, - 0x05, 0x07, 0x03, 0x02, 0x30, 0x4F, 0x06, 0x03, 0x55, 0x1D, 0x20, 0x04, - 0x48, 0x30, 0x46, 0x30, - 0x3A, 0x06, 0x0B, 0x2B, 0x06, 0x01, 0x04, 0x01, 0xB2, 0x31, 0x01, 0x02, - 0x02, 0x07, 0x30, 0x2B, - 0x30, 0x29, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, - 0x16, 0x1D, 0x68, 0x74, - 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, - 0x2E, 0x63, 0x6F, 0x6D, - 0x6F, 0x64, 0x6F, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x43, 0x50, 0x53, 0x30, - 0x08, 0x06, 0x06, 0x67, - 0x81, 0x0C, 0x01, 0x02, 0x01, 0x30, 0x54, 0x06, 0x03, 0x55, 0x1D, 0x1F, - 0x04, 0x4D, 0x30, 0x4B, - 0x30, 0x49, 0xA0, 0x47, 0xA0, 0x45, 0x86, 0x43, 0x68, 0x74, 0x74, 0x70, - 0x3A, 0x2F, 0x2F, 0x63, - 0x72, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x6F, 0x64, 0x6F, 0x63, 0x61, 0x2E, - 0x63, 0x6F, 0x6D, 0x2F, - 0x43, 0x4F, 0x4D, 0x4F, 0x44, 0x4F, 0x52, 0x53, 0x41, 0x44, 0x6F, 0x6D, - 0x61, 0x69, 0x6E, 0x56, - 0x61, 0x6C, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x53, 0x65, 0x63, - 0x75, 0x72, 0x65, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x6C, 0x30, - 0x81, 0x85, 0x06, 0x08, - 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x79, 0x30, 0x77, - 0x30, 0x4F, 0x06, 0x08, - 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x43, 0x68, 0x74, - 0x74, 0x70, 0x3A, 0x2F, - 0x2F, 0x63, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x6F, 0x64, 0x6F, 0x63, - 0x61, 0x2E, 0x63, 0x6F, - 0x6D, 0x2F, 0x43, 0x4F, 0x4D, 0x4F, 0x44, 0x4F, 0x52, 0x53, 0x41, 0x44, - 0x6F, 0x6D, 0x61, 0x69, - 0x6E, 0x56, 0x61, 0x6C, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x53, - 0x65, 0x63, 0x75, 0x72, - 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x41, 0x2E, 0x63, 0x72, - 0x74, 0x30, 0x24, 0x06, - 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, - 0x74, 0x74, 0x70, 0x3A, - 0x2F, 0x2F, 0x6F, 0x63, 0x73, 0x70, 0x2E, 0x63, 0x6F, 0x6D, 0x6F, 0x64, - 0x6F, 0x63, 0x61, 0x2E, - 0x63, 0x6F, 0x6D, 0x30, 0x23, 0x06, 0x03, 0x55, 0x1D, 0x11, 0x04, 0x1C, - 0x30, 0x1A, 0x82, 0x0C, - 0x2A, 0x2E, 0x62, 0x61, 0x64, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, - 0x82, 0x0A, 0x62, 0x61, - 0x64, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x0D, 0x06, 0x09, - 0x2A, 0x86, 0x48, 0x86, - 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, - 0x75, 0x48, 0x83, 0x88, - 0x9C, 0x55, 0x24, 0x37, 0x30, 0x07, 0xEB, 0x26, 0x68, 0xC8, 0x79, 0x1C, - 0x5C, 0xAE, 0x9A, 0x02, - 0x9A, 0xB5, 0x52, 0x75, 0x44, 0xAC, 0xA9, 0xED, 0x59, 0x65, 0xD0, 0xC6, - 0x47, 0x26, 0x04, 0x8D, - 0x57, 0x89, 0x16, 0x2E, 0x71, 0x18, 0x48, 0x98, 0x68, 0x1C, 0xF6, 0x31, - 0xF5, 0x26, 0x4B, 0xE8, - 0x81, 0x44, 0xB1, 0xFF, 0x5C, 0x65, 0x3D, 0x78, 0x54, 0x94, 0xC3, 0x86, - 0x9D, 0x48, 0x96, 0xE8, - 0x32, 0xAF, 0xE1, 0x8F, 0x94, 0x47, 0xBE, 0x37, 0x8C, 0xC3, 0xED, 0x4D, - 0x97, 0xBB, 0xC6, 0x2A, - 0x37, 0x72, 0x01, 0x3A, 0x8F, 0x82, 0xA4, 0x34, 0x44, 0xC4, 0xC4, 0xF8, - 0x50, 0x24, 0x48, 0x9E, - 0x19, 0xF0, 0xEC, 0xE1, 0xC6, 0x13, 0x44, 0x26, 0xB6, 0x65, 0xE1, 0x62, - 0x49, 0x87, 0xA4, 0xF4, - 0xD8, 0xC4, 0x39, 0x3C, 0x7D, 0x42, 0xC8, 0xA4, 0x2A, 0x54, 0x05, 0xA0, - 0xDC, 0x0A, 0xF8, 0x2B, - 0x22, 0x94, 0x93, 0x78, 0x4E, 0x6A, 0x36, 0x1B, 0xD2, 0xE7, 0xE9, 0xAE, - 0x84, 0xED, 0x13, 0x1D, - 0xA1, 0xF7, 0xA2, 0x83, 0x81, 0x03, 0x4C, 0x9E, 0x21, 0xFB, 0xBF, 0xA8, - 0x30, 0xFE, 0xEB, 0x00, - 0x68, 0xB1, 0x7F, 0xBA, 0x5D, 0xE2, 0x5D, 0xFF, 0x41, 0x1F, 0xD6, 0xF5, - 0xA6, 0x5C, 0x8A, 0xEF, - 0x81, 0x80, 0xC8, 0xF1, 0x52, 0x00, 0x17, 0x9D, 0xD1, 0x96, 0x1A, 0x7D, - 0x5E, 0xD2, 0x83, 0xB3, - 0x82, 0xC2, 0x3D, 0x46, 0x83, 0xA5, 0x1E, 0xB4, 0x36, 0x35, 0x38, 0xC4, - 0x7A, 0x2E, 0xDF, 0x0B, - 0xA1, 0x98, 0x63, 0x58, 0x0B, 0x1E, 0xD0, 0x6D, 0x83, 0x1F, 0xF1, 0x72, - 0x4D, 0x09, 0xAC, 0x96, - 0x1A, 0x0B, 0xE5, 0xF6, 0x34, 0x4C, 0xAB, 0xBC, 0xBC, 0x99, 0x5B, 0x82, - 0x59, 0xE6, 0x6C, 0xD3, - 0xDB, 0x98, 0xE0, 0xCE, 0x95, 0x3B, 0xCF, 0x4E, 0x17, 0xC3, 0xEE, 0x3A, - 0x00, 0x06, 0x0C, 0x30, - 0x82, 0x06, 0x08, 0x30, 0x82, 0x03, 0xF0, 0xA0, 0x03, 0x02, 0x01, 0x02, - 0x02, 0x10, 0x2B, 0x2E, - 0x6E, 0xEA, 0xD9, 0x75, 0x36, 0x6C, 0x14, 0x8A, 0x6E, 0xDB, 0xA3, 0x7C, - 0x8C, 0x07, 0x30, 0x0D, - 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0C, 0x05, - 0x00, 0x30, 0x81, 0x85, - 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, - 0x42, 0x31, 0x1B, 0x30, - 0x19, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x12, 0x47, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x72, 0x20, - 0x4D, 0x61, 0x6E, 0x63, 0x68, 0x65, 0x73, 0x74, 0x65, 0x72, 0x31, 0x10, - 0x30, 0x0E, 0x06, 0x03, - 0x55, 0x04, 0x07, 0x13, 0x07, 0x53, 0x61, 0x6C, 0x66, 0x6F, 0x72, 0x64, - 0x31, 0x1A, 0x30, 0x18, - 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x11, 0x43, 0x4F, 0x4D, 0x4F, 0x44, - 0x4F, 0x20, 0x43, 0x41, - 0x20, 0x4C, 0x69, 0x6D, 0x69, 0x74, 0x65, 0x64, 0x31, 0x2B, 0x30, 0x29, - 0x06, 0x03, 0x55, 0x04, - 0x03, 0x13, 0x22, 0x43, 0x4F, 0x4D, 0x4F, 0x44, 0x4F, 0x20, 0x52, 0x53, - 0x41, 0x20, 0x43, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, - 0x41, 0x75, 0x74, 0x68, - 0x6F, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x34, 0x30, - 0x32, 0x31, 0x32, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x5A, 0x17, 0x0D, 0x32, 0x39, 0x30, 0x32, - 0x31, 0x31, 0x32, 0x33, - 0x35, 0x39, 0x35, 0x39, 0x5A, 0x30, 0x81, 0x90, 0x31, 0x0B, 0x30, 0x09, - 0x06, 0x03, 0x55, 0x04, - 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, 0x1B, 0x30, 0x19, 0x06, 0x03, 0x55, - 0x04, 0x08, 0x13, 0x12, - 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x4D, 0x61, 0x6E, 0x63, - 0x68, 0x65, 0x73, 0x74, - 0x65, 0x72, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, - 0x07, 0x53, 0x61, 0x6C, - 0x66, 0x6F, 0x72, 0x64, 0x31, 0x1A, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, - 0x0A, 0x13, 0x11, 0x43, - 0x4F, 0x4D, 0x4F, 0x44, 0x4F, 0x20, 0x43, 0x41, 0x20, 0x4C, 0x69, 0x6D, - 0x69, 0x74, 0x65, 0x64, - 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2D, 0x43, - 0x4F, 0x4D, 0x4F, 0x44, - 0x4F, 0x20, 0x52, 0x53, 0x41, 0x20, 0x44, 0x6F, 0x6D, 0x61, 0x69, 0x6E, - 0x20, 0x56, 0x61, 0x6C, - 0x69, 0x64, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x53, 0x65, 0x63, 0x75, - 0x72, 0x65, 0x20, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, - 0x30, 0x0D, 0x06, 0x09, - 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, - 0x82, 0x01, 0x0F, 0x00, - 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0x8E, 0xC2, 0x02, - 0x19, 0xE1, 0xA0, 0x59, - 0xA4, 0xEB, 0x38, 0x35, 0x8D, 0x2C, 0xFD, 0x01, 0xD0, 0xD3, 0x49, 0xC0, - 0x64, 0xC7, 0x0B, 0x62, - 0x05, 0x45, 0x16, 0x3A, 0xA8, 0xA0, 0xC0, 0x0C, 0x02, 0x7F, 0x1D, 0xCC, - 0xDB, 0xC4, 0xA1, 0x6D, - 0x77, 0x03, 0xA3, 0x0F, 0x86, 0xF9, 0xE3, 0x06, 0x9C, 0x3E, 0x0B, 0x81, - 0x8A, 0x9B, 0x49, 0x1B, - 0xAD, 0x03, 0xBE, 0xFA, 0x4B, 0xDB, 0x8C, 0x20, 0xED, 0xD5, 0xCE, 0x5E, - 0x65, 0x8E, 0x3E, 0x0D, - 0xAF, 0x4C, 0xC2, 0xB0, 0xB7, 0x45, 0x5E, 0x52, 0x2F, 0x34, 0xDE, 0x48, - 0x24, 0x64, 0xB4, 0x41, - 0xAE, 0x00, 0x97, 0xF7, 0xBE, 0x67, 0xDE, 0x9E, 0xD0, 0x7A, 0xA7, 0x53, - 0x80, 0x3B, 0x7C, 0xAD, - 0xF5, 0x96, 0x55, 0x6F, 0x97, 0x47, 0x0A, 0x7C, 0x85, 0x8B, 0x22, 0x97, - 0x8D, 0xB3, 0x84, 0xE0, - 0x96, 0x57, 0xD0, 0x70, 0x18, 0x60, 0x96, 0x8F, 0xEE, 0x2D, 0x07, 0x93, - 0x9D, 0xA1, 0xBA, 0xCA, - 0xD1, 0xCD, 0x7B, 0xE9, 0xC4, 0x2A, 0x9A, 0x28, 0x21, 0x91, 0x4D, 0x6F, - 0x92, 0x4F, 0x25, 0xA5, - 0xF2, 0x7A, 0x35, 0xDD, 0x26, 0xDC, 0x46, 0xA5, 0xD0, 0xAC, 0x59, 0x35, - 0x8C, 0xFF, 0x4E, 0x91, - 0x43, 0x50, 0x3F, 0x59, 0x93, 0x1E, 0x6C, 0x51, 0x21, 0xEE, 0x58, 0x14, - 0xAB, 0xFE, 0x75, 0x50, - 0x78, 0x3E, 0x4C, 0xB0, 0x1C, 0x86, 0x13, 0xFA, 0x6B, 0x98, 0xBC, 0xE0, - 0x3B, 0x94, 0x1E, 0x85, - 0x52, 0xDC, 0x03, 0x93, 0x24, 0x18, 0x6E, 0xCB, 0x27, 0x51, 0x45, 0xE6, - 0x70, 0xDE, 0x25, 0x43, - 0xA4, 0x0D, 0xE1, 0x4A, 0xA5, 0xED, 0xB6, 0x7E, 0xC8, 0xCD, 0x6D, 0xEE, - 0x2E, 0x1D, 0x27, 0x73, - 0x5D, 0xDC, 0x45, 0x30, 0x80, 0xAA, 0xE3, 0xB2, 0x41, 0x0B, 0xAF, 0xBD, - 0x44, 0x87, 0xDA, 0xB9, - 0xE5, 0x1B, 0x9D, 0x7F, 0xAE, 0xE5, 0x85, 0x82, 0xA5, 0x02, 0x03, 0x01, - 0x00, 0x01, 0xA3, 0x82, - 0x01, 0x65, 0x30, 0x82, 0x01, 0x61, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, - 0x23, 0x04, 0x18, 0x30, - 0x16, 0x80, 0x14, 0xBB, 0xAF, 0x7E, 0x02, 0x3D, 0xFA, 0xA6, 0xF1, 0x3C, - 0x84, 0x8E, 0xAD, 0xEE, - 0x38, 0x98, 0xEC, 0xD9, 0x32, 0x32, 0xD4, 0x30, 0x1D, 0x06, 0x03, 0x55, - 0x1D, 0x0E, 0x04, 0x16, - 0x04, 0x14, 0x90, 0xAF, 0x6A, 0x3A, 0x94, 0x5A, 0x0B, 0xD8, 0x90, 0xEA, - 0x12, 0x56, 0x73, 0xDF, - 0x43, 0xB4, 0x3A, 0x28, 0xDA, 0xE7, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, - 0x0F, 0x01, 0x01, 0xFF, - 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1D, - 0x13, 0x01, 0x01, 0xFF, - 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xFF, 0x02, 0x01, 0x00, 0x30, 0x1D, - 0x06, 0x03, 0x55, 0x1D, - 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, - 0x07, 0x03, 0x01, 0x06, - 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x30, 0x1B, 0x06, - 0x03, 0x55, 0x1D, 0x20, - 0x04, 0x14, 0x30, 0x12, 0x30, 0x06, 0x06, 0x04, 0x55, 0x1D, 0x20, 0x00, - 0x30, 0x08, 0x06, 0x06, - 0x67, 0x81, 0x0C, 0x01, 0x02, 0x01, 0x30, 0x4C, 0x06, 0x03, 0x55, 0x1D, - 0x1F, 0x04, 0x45, 0x30, - 0x43, 0x30, 0x41, 0xA0, 0x3F, 0xA0, 0x3D, 0x86, 0x3B, 0x68, 0x74, 0x74, - 0x70, 0x3A, 0x2F, 0x2F, - 0x63, 0x72, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x6F, 0x64, 0x6F, 0x63, 0x61, - 0x2E, 0x63, 0x6F, 0x6D, - 0x2F, 0x43, 0x4F, 0x4D, 0x4F, 0x44, 0x4F, 0x52, 0x53, 0x41, 0x43, 0x65, - 0x72, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x41, 0x75, 0x74, 0x68, 0x6F, - 0x72, 0x69, 0x74, 0x79, - 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x71, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, - 0x05, 0x07, 0x01, 0x01, - 0x04, 0x65, 0x30, 0x63, 0x30, 0x3B, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, - 0x05, 0x07, 0x30, 0x02, - 0x86, 0x2F, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x74, - 0x2E, 0x63, 0x6F, 0x6D, - 0x6F, 0x64, 0x6F, 0x63, 0x61, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x43, 0x4F, - 0x4D, 0x4F, 0x44, 0x4F, - 0x52, 0x53, 0x41, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, 0x43, - 0x41, 0x2E, 0x63, 0x72, - 0x74, 0x30, 0x24, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, - 0x01, 0x86, 0x18, 0x68, - 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x6F, 0x63, 0x73, 0x70, 0x2E, 0x63, - 0x6F, 0x6D, 0x6F, 0x64, - 0x6F, 0x63, 0x61, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x0D, 0x06, 0x09, 0x2A, - 0x86, 0x48, 0x86, 0xF7, - 0x0D, 0x01, 0x01, 0x0C, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, 0x4E, - 0x2B, 0x76, 0x4F, 0x92, - 0x1C, 0x62, 0x36, 0x89, 0xBA, 0x77, 0xC1, 0x27, 0x05, 0xF4, 0x1C, 0xD6, - 0x44, 0x9D, 0xA9, 0x9A, - 0x3E, 0xAA, 0xD5, 0x66, 0x66, 0x01, 0x3E, 0xEA, 0x49, 0xE6, 0xA2, 0x35, - 0xBC, 0xFA, 0xF6, 0xDD, - 0x95, 0x8E, 0x99, 0x35, 0x98, 0x0E, 0x36, 0x18, 0x75, 0xB1, 0xDD, 0xDD, - 0x50, 0x72, 0x7C, 0xAE, - 0xDC, 0x77, 0x88, 0xCE, 0x0F, 0xF7, 0x90, 0x20, 0xCA, 0xA3, 0x67, 0x2E, - 0x1F, 0x56, 0x7F, 0x7B, - 0xE1, 0x44, 0xEA, 0x42, 0x95, 0xC4, 0x5D, 0x0D, 0x01, 0x50, 0x46, 0x15, - 0xF2, 0x81, 0x89, 0x59, - 0x6C, 0x8A, 0xDD, 0x8C, 0xF1, 0x12, 0xA1, 0x8D, 0x3A, 0x42, 0x8A, 0x98, - 0xF8, 0x4B, 0x34, 0x7B, - 0x27, 0x3B, 0x08, 0xB4, 0x6F, 0x24, 0x3B, 0x72, 0x9D, 0x63, 0x74, 0x58, - 0x3C, 0x1A, 0x6C, 0x3F, - 0x4F, 0xC7, 0x11, 0x9A, 0xC8, 0xA8, 0xF5, 0xB5, 0x37, 0xEF, 0x10, 0x45, - 0xC6, 0x6C, 0xD9, 0xE0, - 0x5E, 0x95, 0x26, 0xB3, 0xEB, 0xAD, 0xA3, 0xB9, 0xEE, 0x7F, 0x0C, 0x9A, - 0x66, 0x35, 0x73, 0x32, - 0x60, 0x4E, 0xE5, 0xDD, 0x8A, 0x61, 0x2C, 0x6E, 0x52, 0x11, 0x77, 0x68, - 0x96, 0xD3, 0x18, 0x75, - 0x51, 0x15, 0x00, 0x1B, 0x74, 0x88, 0xDD, 0xE1, 0xC7, 0x38, 0x04, 0x43, - 0x28, 0xE9, 0x16, 0xFD, - 0xD9, 0x05, 0xD4, 0x5D, 0x47, 0x27, 0x60, 0xD6, 0xFB, 0x38, 0x3B, 0x6C, - 0x72, 0xA2, 0x94, 0xF8, - 0x42, 0x1A, 0xDF, 0xED, 0x6F, 0x06, 0x8C, 0x45, 0xC2, 0x06, 0x00, 0xAA, - 0xE4, 0xE8, 0xDC, 0xD9, - 0xB5, 0xE1, 0x73, 0x78, 0xEC, 0xF6, 0x23, 0xDC, 0xD1, 0xDD, 0x6C, 0x8E, - 0x1A, 0x8F, 0xA5, 0xEA, - 0x54, 0x7C, 0x96, 0xB7, 0xC3, 0xFE, 0x55, 0x8E, 0x8D, 0x49, 0x5E, 0xFC, - 0x64, 0xBB, 0xCF, 0x3E, - 0xBD, 0x96, 0xEB, 0x69, 0xCD, 0xBF, 0xE0, 0x48, 0xF1, 0x62, 0x82, 0x10, - 0xE5, 0x0C, 0x46, 0x57, - 0xF2, 0x33, 0xDA, 0xD0, 0xC8, 0x63, 0xED, 0xC6, 0x1F, 0x94, 0x05, 0x96, - 0x4A, 0x1A, 0x91, 0xD1, - 0xF7, 0xEB, 0xCF, 0x8F, 0x52, 0xAE, 0x0D, 0x08, 0xD9, 0x3E, 0xA8, 0xA0, - 0x51, 0xE9, 0xC1, 0x87, - 0x74, 0xD5, 0xC9, 0xF7, 0x74, 0xAB, 0x2E, 0x53, 0xFB, 0xBB, 0x7A, 0xFB, - 0x97, 0xE2, 0xF8, 0x1F, - 0x26, 0x8F, 0xB3, 0xD2, 0xA0, 0xE0, 0x37, 0x5B, 0x28, 0x3B, 0x31, 0xE5, - 0x0E, 0x57, 0x2D, 0x5A, - 0xB8, 0xAD, 0x79, 0xAC, 0x5E, 0x20, 0x66, 0x1A, 0xA5, 0xB9, 0xA6, 0xB5, - 0x39, 0xC1, 0xF5, 0x98, - 0x43, 0xFF, 0xEE, 0xF9, 0xA7, 0xA7, 0xFD, 0xEE, 0xCA, 0x24, 0x3D, 0x80, - 0x16, 0xC4, 0x17, 0x8F, - 0x8A, 0xC1, 0x60, 0xA1, 0x0C, 0xAE, 0x5B, 0x43, 0x47, 0x91, 0x4B, 0xD5, - 0x9A, 0x17, 0x5F, 0xF9, - 0xD4, 0x87, 0xC1, 0xC2, 0x8C, 0xB7, 0xE7, 0xE2, 0x0F, 0x30, 0x19, 0x37, - 0x86, 0xAC, 0xE0, 0xDC, - 0x42, 0x03, 0xE6, 0x94, 0xA8, 0x9D, 0xAE, 0xFD, 0x0F, 0x24, 0x51, 0x94, - 0xCE, 0x92, 0x08, 0xD1, - 0xFC, 0x50, 0xF0, 0x03, 0x40, 0x7B, 0x88, 0x59, 0xED, 0x0E, 0xDD, 0xAC, - 0xD2, 0x77, 0x82, 0x34, - 0xDC, 0x06, 0x95, 0x02, 0xD8, 0x90, 0xF9, 0x2D, 0xEA, 0x37, 0xD5, 0x1A, - 0x60, 0xD0, 0x67, 0x20, - 0xD7, 0xD8, 0x42, 0x0B, 0x45, 0xAF, 0x82, 0x68, 0xDE, 0xDD, 0x66, 0x24, - 0x37, 0x90, 0x29, 0x94, - 0x19, 0x46, 0x19, 0x25, 0xB8, 0x80, 0xD7, 0xCB, 0xD4, 0x86, 0x28, 0x6A, - 0x44, 0x70, 0x26, 0x23, - 0x62, 0xA9, 0x9F, 0x86, 0x6F, 0xBF, 0xBA, 0x90, 0x70, 0xD2, 0x56, 0x77, - 0x85, 0x78, 0xEF, 0xEA, - 0x25, 0xA9, 0x17, 0xCE, 0x50, 0x72, 0x8C, 0x00, 0x3A, 0xAA, 0xE3, 0xDB, - 0x63, 0x34, 0x9F, 0xF8, - 0x06, 0x71, 0x01, 0xE2, 0x82, 0x20, 0xD4, 0xFE, 0x6F, 0xBD, 0xB1, 0x00, - 0x05, 0x78, 0x30, 0x82, - 0x05, 0x74, 0x30, 0x82, 0x04, 0x5C, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, - 0x10, 0x27, 0x66, 0xEE, - 0x56, 0xEB, 0x49, 0xF3, 0x8E, 0xAB, 0xD7, 0x70, 0xA2, 0xFC, 0x84, 0xDE, - 0x22, 0x30, 0x0D, 0x06, - 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0C, 0x05, 0x00, - 0x30, 0x6F, 0x31, 0x0B, - 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x53, 0x45, 0x31, - 0x14, 0x30, 0x12, 0x06, - 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0B, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, - 0x73, 0x74, 0x20, 0x41, - 0x42, 0x31, 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x1D, - 0x41, 0x64, 0x64, 0x54, - 0x72, 0x75, 0x73, 0x74, 0x20, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6E, 0x61, - 0x6C, 0x20, 0x54, 0x54, - 0x50, 0x20, 0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x31, 0x22, 0x30, - 0x20, 0x06, 0x03, 0x55, - 0x04, 0x03, 0x13, 0x19, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, - 0x20, 0x45, 0x78, 0x74, - 0x65, 0x72, 0x6E, 0x61, 0x6C, 0x20, 0x43, 0x41, 0x20, 0x52, 0x6F, 0x6F, - 0x74, 0x30, 0x1E, 0x17, - 0x0D, 0x30, 0x30, 0x30, 0x35, 0x33, 0x30, 0x31, 0x30, 0x34, 0x38, 0x33, - 0x38, 0x5A, 0x17, 0x0D, - 0x32, 0x30, 0x30, 0x35, 0x33, 0x30, 0x31, 0x30, 0x34, 0x38, 0x33, 0x38, - 0x5A, 0x30, 0x81, 0x85, - 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, - 0x42, 0x31, 0x1B, 0x30, - 0x19, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x12, 0x47, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x72, 0x20, - 0x4D, 0x61, 0x6E, 0x63, 0x68, 0x65, 0x73, 0x74, 0x65, 0x72, 0x31, 0x10, - 0x30, 0x0E, 0x06, 0x03, - 0x55, 0x04, 0x07, 0x13, 0x07, 0x53, 0x61, 0x6C, 0x66, 0x6F, 0x72, 0x64, - 0x31, 0x1A, 0x30, 0x18, - 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x11, 0x43, 0x4F, 0x4D, 0x4F, 0x44, - 0x4F, 0x20, 0x43, 0x41, - 0x20, 0x4C, 0x69, 0x6D, 0x69, 0x74, 0x65, 0x64, 0x31, 0x2B, 0x30, 0x29, - 0x06, 0x03, 0x55, 0x04, - 0x03, 0x13, 0x22, 0x43, 0x4F, 0x4D, 0x4F, 0x44, 0x4F, 0x20, 0x52, 0x53, - 0x41, 0x20, 0x43, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, - 0x41, 0x75, 0x74, 0x68, - 0x6F, 0x72, 0x69, 0x74, 0x79, 0x30, 0x82, 0x02, 0x22, 0x30, 0x0D, 0x06, - 0x09, 0x2A, 0x86, 0x48, - 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0F, - 0x00, 0x30, 0x82, 0x02, - 0x0A, 0x02, 0x82, 0x02, 0x01, 0x00, 0x91, 0xE8, 0x54, 0x92, 0xD2, 0x0A, - 0x56, 0xB1, 0xAC, 0x0D, - 0x24, 0xDD, 0xC5, 0xCF, 0x44, 0x67, 0x74, 0x99, 0x2B, 0x37, 0xA3, 0x7D, - 0x23, 0x70, 0x00, 0x71, - 0xBC, 0x53, 0xDF, 0xC4, 0xFA, 0x2A, 0x12, 0x8F, 0x4B, 0x7F, 0x10, 0x56, - 0xBD, 0x9F, 0x70, 0x72, - 0xB7, 0x61, 0x7F, 0xC9, 0x4B, 0x0F, 0x17, 0xA7, 0x3D, 0xE3, 0xB0, 0x04, - 0x61, 0xEE, 0xFF, 0x11, - 0x97, 0xC7, 0xF4, 0x86, 0x3E, 0x0A, 0xFA, 0x3E, 0x5C, 0xF9, 0x93, 0xE6, - 0x34, 0x7A, 0xD9, 0x14, - 0x6B, 0xE7, 0x9C, 0xB3, 0x85, 0xA0, 0x82, 0x7A, 0x76, 0xAF, 0x71, 0x90, - 0xD7, 0xEC, 0xFD, 0x0D, - 0xFA, 0x9C, 0x6C, 0xFA, 0xDF, 0xB0, 0x82, 0xF4, 0x14, 0x7E, 0xF9, 0xBE, - 0xC4, 0xA6, 0x2F, 0x4F, - 0x7F, 0x99, 0x7F, 0xB5, 0xFC, 0x67, 0x43, 0x72, 0xBD, 0x0C, 0x00, 0xD6, - 0x89, 0xEB, 0x6B, 0x2C, - 0xD3, 0xED, 0x8F, 0x98, 0x1C, 0x14, 0xAB, 0x7E, 0xE5, 0xE3, 0x6E, 0xFC, - 0xD8, 0xA8, 0xE4, 0x92, - 0x24, 0xDA, 0x43, 0x6B, 0x62, 0xB8, 0x55, 0xFD, 0xEA, 0xC1, 0xBC, 0x6C, - 0xB6, 0x8B, 0xF3, 0x0E, - 0x8D, 0x9A, 0xE4, 0x9B, 0x6C, 0x69, 0x99, 0xF8, 0x78, 0x48, 0x30, 0x45, - 0xD5, 0xAD, 0xE1, 0x0D, - 0x3C, 0x45, 0x60, 0xFC, 0x32, 0x96, 0x51, 0x27, 0xBC, 0x67, 0xC3, 0xCA, - 0x2E, 0xB6, 0x6B, 0xEA, - 0x46, 0xC7, 0xC7, 0x20, 0xA0, 0xB1, 0x1F, 0x65, 0xDE, 0x48, 0x08, 0xBA, - 0xA4, 0x4E, 0xA9, 0xF2, - 0x83, 0x46, 0x37, 0x84, 0xEB, 0xE8, 0xCC, 0x81, 0x48, 0x43, 0x67, 0x4E, - 0x72, 0x2A, 0x9B, 0x5C, - 0xBD, 0x4C, 0x1B, 0x28, 0x8A, 0x5C, 0x22, 0x7B, 0xB4, 0xAB, 0x98, 0xD9, - 0xEE, 0xE0, 0x51, 0x83, - 0xC3, 0x09, 0x46, 0x4E, 0x6D, 0x3E, 0x99, 0xFA, 0x95, 0x17, 0xDA, 0x7C, - 0x33, 0x57, 0x41, 0x3C, - 0x8D, 0x51, 0xED, 0x0B, 0xB6, 0x5C, 0xAF, 0x2C, 0x63, 0x1A, 0xDF, 0x57, - 0xC8, 0x3F, 0xBC, 0xE9, - 0x5D, 0xC4, 0x9B, 0xAF, 0x45, 0x99, 0xE2, 0xA3, 0x5A, 0x24, 0xB4, 0xBA, - 0xA9, 0x56, 0x3D, 0xCF, - 0x6F, 0xAA, 0xFF, 0x49, 0x58, 0xBE, 0xF0, 0xA8, 0xFF, 0xF4, 0xB8, 0xAD, - 0xE9, 0x37, 0xFB, 0xBA, - 0xB8, 0xF4, 0x0B, 0x3A, 0xF9, 0xE8, 0x43, 0x42, 0x1E, 0x89, 0xD8, 0x84, - 0xCB, 0x13, 0xF1, 0xD9, - 0xBB, 0xE1, 0x89, 0x60, 0xB8, 0x8C, 0x28, 0x56, 0xAC, 0x14, 0x1D, 0x9C, - 0x0A, 0xE7, 0x71, 0xEB, - 0xCF, 0x0E, 0xDD, 0x3D, 0xA9, 0x96, 0xA1, 0x48, 0xBD, 0x3C, 0xF7, 0xAF, - 0xB5, 0x0D, 0x22, 0x4C, - 0xC0, 0x11, 0x81, 0xEC, 0x56, 0x3B, 0xF6, 0xD3, 0xA2, 0xE2, 0x5B, 0xB7, - 0xB2, 0x04, 0x22, 0x52, - 0x95, 0x80, 0x93, 0x69, 0xE8, 0x8E, 0x4C, 0x65, 0xF1, 0x91, 0x03, 0x2D, - 0x70, 0x74, 0x02, 0xEA, - 0x8B, 0x67, 0x15, 0x29, 0x69, 0x52, 0x02, 0xBB, 0xD7, 0xDF, 0x50, 0x6A, - 0x55, 0x46, 0xBF, 0xA0, - 0xA3, 0x28, 0x61, 0x7F, 0x70, 0xD0, 0xC3, 0xA2, 0xAA, 0x2C, 0x21, 0xAA, - 0x47, 0xCE, 0x28, 0x9C, - 0x06, 0x45, 0x76, 0xBF, 0x82, 0x18, 0x27, 0xB4, 0xD5, 0xAE, 0xB4, 0xCB, - 0x50, 0xE6, 0x6B, 0xF4, - 0x4C, 0x86, 0x71, 0x30, 0xE9, 0xA6, 0xDF, 0x16, 0x86, 0xE0, 0xD8, 0xFF, - 0x40, 0xDD, 0xFB, 0xD0, - 0x42, 0x88, 0x7F, 0xA3, 0x33, 0x3A, 0x2E, 0x5C, 0x1E, 0x41, 0x11, 0x81, - 0x63, 0xCE, 0x18, 0x71, - 0x6B, 0x2B, 0xEC, 0xA6, 0x8A, 0xB7, 0x31, 0x5C, 0x3A, 0x6A, 0x47, 0xE0, - 0xC3, 0x79, 0x59, 0xD6, - 0x20, 0x1A, 0xAF, 0xF2, 0x6A, 0x98, 0xAA, 0x72, 0xBC, 0x57, 0x4A, 0xD2, - 0x4B, 0x9D, 0xBB, 0x10, - 0xFC, 0xB0, 0x4C, 0x41, 0xE5, 0xED, 0x1D, 0x3D, 0x5E, 0x28, 0x9D, 0x9C, - 0xCC, 0xBF, 0xB3, 0x51, - 0xDA, 0xA7, 0x47, 0xE5, 0x84, 0x53, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, - 0x81, 0xF4, 0x30, 0x81, - 0xF1, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, - 0x80, 0x14, 0xAD, 0xBD, - 0x98, 0x7A, 0x34, 0xB4, 0x26, 0xF7, 0xFA, 0xC4, 0x26, 0x54, 0xEF, 0x03, - 0xBD, 0xE0, 0x24, 0xCB, - 0x54, 0x1A, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, - 0x14, 0xBB, 0xAF, 0x7E, - 0x02, 0x3D, 0xFA, 0xA6, 0xF1, 0x3C, 0x84, 0x8E, 0xAD, 0xEE, 0x38, 0x98, - 0xEC, 0xD9, 0x32, 0x32, - 0xD4, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, - 0x04, 0x03, 0x02, 0x01, - 0x86, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, - 0x05, 0x30, 0x03, 0x01, - 0x01, 0xFF, 0x30, 0x11, 0x06, 0x03, 0x55, 0x1D, 0x20, 0x04, 0x0A, 0x30, - 0x08, 0x30, 0x06, 0x06, - 0x04, 0x55, 0x1D, 0x20, 0x00, 0x30, 0x44, 0x06, 0x03, 0x55, 0x1D, 0x1F, - 0x04, 0x3D, 0x30, 0x3B, - 0x30, 0x39, 0xA0, 0x37, 0xA0, 0x35, 0x86, 0x33, 0x68, 0x74, 0x74, 0x70, - 0x3A, 0x2F, 0x2F, 0x63, - 0x72, 0x6C, 0x2E, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, - 0x2E, 0x63, 0x6F, 0x6D, - 0x2F, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, 0x45, 0x78, 0x74, - 0x65, 0x72, 0x6E, 0x61, - 0x6C, 0x43, 0x41, 0x52, 0x6F, 0x6F, 0x74, 0x2E, 0x63, 0x72, 0x6C, 0x30, - 0x35, 0x06, 0x08, 0x2B, - 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x29, 0x30, 0x27, 0x30, - 0x25, 0x06, 0x08, 0x2B, - 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x19, 0x68, 0x74, 0x74, - 0x70, 0x3A, 0x2F, 0x2F, - 0x6F, 0x63, 0x73, 0x70, 0x2E, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75, - 0x73, 0x74, 0x2E, 0x63, - 0x6F, 0x6D, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, - 0x01, 0x01, 0x0C, 0x05, - 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x64, 0xBF, 0x83, 0xF1, 0x5F, 0x9A, - 0x85, 0xD0, 0xCD, 0xB8, - 0xA1, 0x29, 0x57, 0x0D, 0xE8, 0x5A, 0xF7, 0xD1, 0xE9, 0x3E, 0xF2, 0x76, - 0x04, 0x6E, 0xF1, 0x52, - 0x70, 0xBB, 0x1E, 0x3C, 0xFF, 0x4D, 0x0D, 0x74, 0x6A, 0xCC, 0x81, 0x82, - 0x25, 0xD3, 0xC3, 0xA0, - 0x2A, 0x5D, 0x4C, 0xF5, 0xBA, 0x8B, 0xA1, 0x6D, 0xC4, 0x54, 0x09, 0x75, - 0xC7, 0xE3, 0x27, 0x0E, - 0x5D, 0x84, 0x79, 0x37, 0x40, 0x13, 0x77, 0xF5, 0xB4, 0xAC, 0x1C, 0xD0, - 0x3B, 0xAB, 0x17, 0x12, - 0xD6, 0xEF, 0x34, 0x18, 0x7E, 0x2B, 0xE9, 0x79, 0xD3, 0xAB, 0x57, 0x45, - 0x0C, 0xAF, 0x28, 0xFA, - 0xD0, 0xDB, 0xE5, 0x50, 0x95, 0x88, 0xBB, 0xDF, 0x85, 0x57, 0x69, 0x7D, - 0x92, 0xD8, 0x52, 0xCA, - 0x73, 0x81, 0xBF, 0x1C, 0xF3, 0xE6, 0xB8, 0x6E, 0x66, 0x11, 0x05, 0xB3, - 0x1E, 0x94, 0x2D, 0x7F, - 0x91, 0x95, 0x92, 0x59, 0xF1, 0x4C, 0xCE, 0xA3, 0x91, 0x71, 0x4C, 0x7C, - 0x47, 0x0C, 0x3B, 0x0B, - 0x19, 0xF6, 0xA1, 0xB1, 0x6C, 0x86, 0x3E, 0x5C, 0xAA, 0xC4, 0x2E, 0x82, - 0xCB, 0xF9, 0x07, 0x96, - 0xBA, 0x48, 0x4D, 0x90, 0xF2, 0x94, 0xC8, 0xA9, 0x73, 0xA2, 0xEB, 0x06, - 0x7B, 0x23, 0x9D, 0xDE, - 0xA2, 0xF3, 0x4D, 0x55, 0x9F, 0x7A, 0x61, 0x45, 0x98, 0x18, 0x68, 0xC7, - 0x5E, 0x40, 0x6B, 0x23, - 0xF5, 0x79, 0x7A, 0xEF, 0x8C, 0xB5, 0x6B, 0x8B, 0xB7, 0x6F, 0x46, 0xF4, - 0x7B, 0xF1, 0x3D, 0x4B, - 0x04, 0xD8, 0x93, 0x80, 0x59, 0x5A, 0xE0, 0x41, 0x24, 0x1D, 0xB2, 0x8F, - 0x15, 0x60, 0x58, 0x47, - 0xDB, 0xEF, 0x6E, 0x46, 0xFD, 0x15, 0xF5, 0xD9, 0x5F, 0x9A, 0xB3, 0xDB, - 0xD8, 0xB8, 0xE4, 0x40, - 0xB3, 0xCD, 0x97, 0x39, 0xAE, 0x85, 0xBB, 0x1D, 0x8E, 0xBC, 0xDC, 0x87, - 0x9B, 0xD1, 0xA6, 0xEF, - 0xF1, 0x3B, 0x6F, 0x10, 0x38, 0x6F, 0x16, 0x03, 0x03, 0x02, 0x0F, 0x0C, - 0x00, 0x02, 0x0B, 0x00, - 0x80, 0xBB, 0xBC, 0x2D, 0xCA, 0xD8, 0x46, 0x74, 0x90, 0x7C, 0x43, 0xFC, - 0xF5, 0x80, 0xE9, 0xCF, - 0xDB, 0xD9, 0x58, 0xA3, 0xF5, 0x68, 0xB4, 0x2D, 0x4B, 0x08, 0xEE, 0xD4, - 0xEB, 0x0F, 0xB3, 0x50, - 0x4C, 0x6C, 0x03, 0x02, 0x76, 0xE7, 0x10, 0x80, 0x0C, 0x5C, 0xCB, 0xBA, - 0xA8, 0x92, 0x26, 0x14, - 0xC5, 0xBE, 0xEC, 0xA5, 0x65, 0xA5, 0xFD, 0xF1, 0xD2, 0x87, 0xA2, 0xBC, - 0x04, 0x9B, 0xE6, 0x77, - 0x80, 0x60, 0xE9, 0x1A, 0x92, 0xA7, 0x57, 0xE3, 0x04, 0x8F, 0x68, 0xB0, - 0x76, 0xF7, 0xD3, 0x6C, - 0xC8, 0xF2, 0x9B, 0xA5, 0xDF, 0x81, 0xDC, 0x2C, 0xA7, 0x25, 0xEC, 0xE6, - 0x62, 0x70, 0xCC, 0x9A, - 0x50, 0x35, 0xD8, 0xCE, 0xCE, 0xEF, 0x9E, 0xA0, 0x27, 0x4A, 0x63, 0xAB, - 0x1E, 0x58, 0xFA, 0xFD, - 0x49, 0x88, 0xD0, 0xF6, 0x5D, 0x14, 0x67, 0x57, 0xDA, 0x07, 0x1D, 0xF0, - 0x45, 0xCF, 0xE1, 0x6B, - 0x9B, 0x00, 0x01, 0x02, 0x00, 0x80, 0x55, 0xFB, 0xB6, 0x92, 0x5A, 0x0C, - 0x93, 0x56, 0xE8, 0x1C, - 0xCD, 0x23, 0xFC, 0xB9, 0xBE, 0x98, 0x2D, 0x01, 0x4F, 0x35, 0xCE, 0x37, - 0xD0, 0xF8, 0xA0, 0x0C, - 0x42, 0x3B, 0x27, 0x25, 0x10, 0x04, 0x46, 0x02, 0x19, 0x1F, 0xDC, 0xDA, - 0x08, 0x33, 0x42, 0x63, - 0x5F, 0x3C, 0x82, 0x1F, 0xFA, 0x46, 0x9E, 0x34, 0xCB, 0x30, 0xED, 0x55, - 0x11, 0xD7, 0x00, 0x0C, - 0x76, 0x0A, 0x48, 0x0C, 0x1D, 0x7A, 0x13, 0x3D, 0xC6, 0x41, 0xD5, 0x7B, - 0xD5, 0x2A, 0xE0, 0xA3, - 0xB5, 0xAB, 0x0E, 0xBC, 0xD3, 0x17, 0x14, 0xFD, 0x21, 0x8C, 0x78, 0xB1, - 0x4D, 0xF2, 0x5A, 0x44, - 0x89, 0x4E, 0x82, 0x3D, 0x8B, 0xAC, 0x5D, 0x49, 0xB2, 0x19, 0x21, 0x67, - 0xCA, 0x70, 0xC7, 0x8D, - 0x35, 0x89, 0xD1, 0x9D, 0x34, 0xD4, 0x7A, 0xAF, 0x1D, 0x9D, 0x86, 0x0F, - 0xEF, 0x5A, 0x4F, 0x9E, - 0xDA, 0xF5, 0x02, 0x7E, 0x22, 0x67, 0x01, 0x01, 0x01, 0x00, 0x7B, 0x59, - 0x4A, 0x29, 0xF9, 0x9F, - 0x53, 0x41, 0x8B, 0xE6, 0x79, 0xE9, 0xF5, 0x73, 0x7C, 0xC8, 0xE9, 0x40, - 0x1F, 0x39, 0x08, 0x06, - 0x84, 0x3D, 0x80, 0x6B, 0xF0, 0x0C, 0x54, 0xC2, 0x18, 0xD6, 0xAD, 0x53, - 0xFD, 0x7C, 0xB3, 0x8B, - 0xCE, 0x70, 0x4F, 0xCF, 0xFC, 0xEF, 0xC8, 0x2D, 0xE4, 0xD0, 0xC2, 0x7B, - 0x80, 0x57, 0xA2, 0x5F, - 0x7F, 0x36, 0xB0, 0xBC, 0x16, 0xB7, 0xC1, 0xC2, 0x12, 0x96, 0x94, 0x88, - 0x9D, 0x68, 0xD3, 0xDF, - 0xB1, 0x3C, 0xA0, 0x93, 0x3A, 0x4D, 0x90, 0x66, 0x3F, 0xB0, 0x89, 0xE7, - 0x21, 0x58, 0xF0, 0x39, - 0x8B, 0x83, 0x32, 0x93, 0xCB, 0xA9, 0x57, 0x2B, 0x0A, 0x02, 0x5E, 0xF9, - 0xE6, 0x10, 0x9A, 0x7F, - 0x2A, 0x23, 0x3D, 0x5C, 0x3F, 0x38, 0x3A, 0x40, 0x0C, 0x1B, 0x7C, 0x0D, - 0x5D, 0x7C, 0xF1, 0xB2, - 0x88, 0x71, 0xA2, 0x57, 0x02, 0x94, 0x12, 0x45, 0x60, 0xEC, 0xC2, 0xB2, - 0xCB, 0x31, 0xF2, 0xF8, - 0x1B, 0xDD, 0xEA, 0xF6, 0x40, 0xF6, 0x07, 0xEA, 0xC2, 0x71, 0xA6, 0x07, - 0xC8, 0x45, 0xE4, 0xE2, - 0x1D, 0x49, 0x53, 0x40, 0x5B, 0x57, 0x68, 0xA4, 0x81, 0x1C, 0xCB, 0x33, - 0x95, 0x12, 0x0F, 0x4D, - 0xAD, 0x9B, 0x70, 0x53, 0xDC, 0x8B, 0xE6, 0x24, 0x0D, 0x39, 0x83, 0x0E, - 0x17, 0xFB, 0x13, 0xF2, - 0x45, 0x2C, 0x52, 0x44, 0xA3, 0x22, 0x0D, 0x32, 0xDD, 0x21, 0x05, 0x2B, - 0xA1, 0xAC, 0xC4, 0x84, - 0xD7, 0x18, 0x2F, 0xA2, 0xB4, 0xF5, 0x4E, 0xED, 0x72, 0x56, 0xB7, 0x87, - 0x81, 0xF8, 0x51, 0x30, - 0x01, 0xBE, 0x17, 0x31, 0xEE, 0x21, 0xBA, 0x16, 0xAF, 0xEB, 0x0A, 0x54, - 0x69, 0x84, 0xB3, 0xDC, - 0xCA, 0x04, 0xBB, 0x49, 0x84, 0x4C, 0x0F, 0xCE, 0x20, 0xE2, 0x71, 0xF3, - 0x43, 0x26, 0x1D, 0xA4, - 0xAF, 0xAE, 0x3F, 0x9E, 0xA3, 0x44, 0xDC, 0xAE, 0xB7, 0x5B, 0x16, 0x03, - 0x03, 0x00, 0x04, 0x0E, - 0x00, 0x00, 0x00 -}; +static unsigned char tls1_hello + [] = { /* server hello etc. */ + 0x16, 0x03, 0x03, 0x00, 0x39, 0x02, 0x00, 0x00, 0x35, 0x03, 0x03, + 0x95, 0x66, 0x0A, 0x55, 0xBC, 0x04, 0x84, 0xBD, 0x7E, 0xA6, 0xCE, + 0x2B, 0x1C, 0x7B, 0x72, 0x28, 0x0D, 0x8E, 0x2C, 0x34, 0xC8, 0xFF, + 0x73, 0xBA, 0x6C, 0x9F, 0x20, 0xB9, 0x18, 0xCD, 0x22, 0xCB, 0x00, + 0x00, 0x9E, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x01, + 0x00, 0x01, 0x00, 0x00, 0x23, 0x00, 0x00, 0x16, 0x03, 0x03, 0x10, + 0xE3, 0x0B, 0x00, 0x10, 0xDF, 0x00, 0x10, 0xDC, 0x00, 0x05, 0x4F, + 0x30, 0x82, 0x05, 0x4B, 0x30, 0x82, 0x04, 0x33, 0xA0, 0x03, 0x02, + 0x01, 0x02, 0x02, 0x10, 0x4C, 0x8E, 0x18, 0x71, 0x4B, 0x34, 0xE7, + 0x5E, 0x8D, 0xAE, 0xFB, 0xE8, 0xF6, 0x4C, 0x3A, 0x82, 0x30, 0x0D, + 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, + 0x05, 0x00, 0x30, 0x81, 0x90, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, + 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, 0x1B, 0x30, 0x19, + 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x12, 0x47, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x72, 0x20, 0x4D, 0x61, 0x6E, 0x63, 0x68, 0x65, 0x73, + 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, + 0x07, 0x13, 0x07, 0x53, 0x61, 0x6C, 0x66, 0x6F, 0x72, 0x64, 0x31, + 0x1A, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x11, 0x43, + 0x4F, 0x4D, 0x4F, 0x44, 0x4F, 0x20, 0x43, 0x41, 0x20, 0x4C, 0x69, + 0x6D, 0x69, 0x74, 0x65, 0x64, 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x2D, 0x43, 0x4F, 0x4D, 0x4F, 0x44, 0x4F, + 0x20, 0x52, 0x53, 0x41, 0x20, 0x44, 0x6F, 0x6D, 0x61, 0x69, 0x6E, + 0x20, 0x56, 0x61, 0x6C, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6F, 0x6E, + 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D, 0x31, + 0x36, 0x30, 0x37, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x5A, 0x17, 0x0D, 0x31, 0x37, 0x30, 0x39, 0x30, 0x35, 0x32, 0x33, + 0x35, 0x39, 0x35, 0x39, 0x5A, 0x30, 0x59, 0x31, 0x21, 0x30, 0x1F, + 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x18, 0x44, 0x6F, 0x6D, 0x61, + 0x69, 0x6E, 0x20, 0x43, 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x20, + 0x56, 0x61, 0x6C, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x31, 0x1D, + 0x30, 0x1B, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x14, 0x50, 0x6F, + 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x53, 0x53, 0x4C, 0x20, 0x57, + 0x69, 0x6C, 0x64, 0x63, 0x61, 0x72, 0x64, 0x31, 0x15, 0x30, 0x13, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0C, 0x2A, 0x2E, 0x62, 0x61, + 0x64, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x82, 0x01, + 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, + 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, + 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xC2, 0x04, 0xEC, + 0xF8, 0x8C, 0xEE, 0x04, 0xC2, 0xB3, 0xD8, 0x50, 0xD5, 0x70, 0x58, + 0xCC, 0x93, 0x18, 0xEB, 0x5C, 0xA8, 0x68, 0x49, 0xB0, 0x22, 0xB5, + 0xF9, 0x95, 0x9E, 0xB1, 0x2B, 0x2C, 0x76, 0x3E, 0x6C, 0xC0, 0x4B, + 0x60, 0x4C, 0x4C, 0xEA, 0xB2, 0xB4, 0xC0, 0x0F, 0x80, 0xB6, 0xB0, + 0xF9, 0x72, 0xC9, 0x86, 0x02, 0xF9, 0x5C, 0x41, 0x5D, 0x13, 0x2B, + 0x7F, 0x71, 0xC4, 0x4B, 0xBC, 0xE9, 0x94, 0x2E, 0x50, 0x37, 0xA6, + 0x67, 0x1C, 0x61, 0x8C, 0xF6, 0x41, 0x42, 0xC5, 0x46, 0xD3, 0x16, + 0x87, 0x27, 0x9F, 0x74, 0xEB, 0x0A, 0x9D, 0x11, 0x52, 0x26, 0x21, + 0x73, 0x6C, 0x84, 0x4C, 0x79, 0x55, 0xE4, 0xD1, 0x6B, 0xE8, 0x06, + 0x3D, 0x48, 0x15, 0x52, 0xAD, 0xB3, 0x28, 0xDB, 0xAA, 0xFF, 0x6E, + 0xFF, 0x60, 0x95, 0x4A, 0x77, 0x6B, 0x39, 0xF1, 0x24, 0xD1, 0x31, + 0xB6, 0xDD, 0x4D, 0xC0, 0xC4, 0xFC, 0x53, 0xB9, 0x6D, 0x42, 0xAD, + 0xB5, 0x7C, 0xFE, 0xAE, 0xF5, 0x15, 0xD2, 0x33, 0x48, 0xE7, 0x22, + 0x71, 0xC7, 0xC2, 0x14, 0x7A, 0x6C, 0x28, 0xEA, 0x37, 0x4A, 0xDF, + 0xEA, 0x6C, 0xB5, 0x72, 0xB4, 0x7E, 0x5A, 0xA2, 0x16, 0xDC, 0x69, + 0xB1, 0x57, 0x44, 0xDB, 0x0A, 0x12, 0xAB, 0xDE, 0xC3, 0x0F, 0x47, + 0x74, 0x5C, 0x41, 0x22, 0xE1, 0x9A, 0xF9, 0x1B, 0x93, 0xE6, 0xAD, + 0x22, 0x06, 0x29, 0x2E, 0xB1, 0xBA, 0x49, 0x1C, 0x0C, 0x27, 0x9E, + 0xA3, 0xFB, 0x8B, 0xF7, 0x40, 0x72, 0x00, 0xAC, 0x92, 0x08, 0xD9, + 0x8C, 0x57, 0x84, 0x53, 0x81, 0x05, 0xCB, 0xE6, 0xFE, 0x6B, 0x54, + 0x98, 0x40, 0x27, 0x85, 0xC7, 0x10, 0xBB, 0x73, 0x70, 0xEF, 0x69, + 0x18, 0x41, 0x07, 0x45, 0x55, 0x7C, 0xF9, 0x64, 0x3F, 0x3D, 0x2C, + 0xC3, 0xA9, 0x7C, 0xEB, 0x93, 0x1A, 0x4C, 0x86, 0xD1, 0xCA, 0x85, + 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x01, 0xD5, 0x30, 0x82, + 0x01, 0xD1, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, + 0x30, 0x16, 0x80, 0x14, 0x90, 0xAF, 0x6A, 0x3A, 0x94, 0x5A, 0x0B, + 0xD8, 0x90, 0xEA, 0x12, 0x56, 0x73, 0xDF, 0x43, 0xB4, 0x3A, 0x28, + 0xDA, 0xE7, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, + 0x04, 0x14, 0x9D, 0xEE, 0xC1, 0x7B, 0x81, 0x0B, 0x3A, 0x47, 0x69, + 0x71, 0x18, 0x7D, 0x11, 0x37, 0x93, 0xBC, 0xA5, 0x1B, 0x3F, 0xFB, + 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, + 0x04, 0x03, 0x02, 0x05, 0xA0, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, + 0x13, 0x01, 0x01, 0xFF, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1D, 0x06, + 0x03, 0x55, 0x1D, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2B, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2B, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x30, 0x4F, 0x06, 0x03, 0x55, + 0x1D, 0x20, 0x04, 0x48, 0x30, 0x46, 0x30, 0x3A, 0x06, 0x0B, 0x2B, + 0x06, 0x01, 0x04, 0x01, 0xB2, 0x31, 0x01, 0x02, 0x02, 0x07, 0x30, + 0x2B, 0x30, 0x29, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x02, 0x01, 0x16, 0x1D, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, + 0x2F, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x2E, 0x63, 0x6F, 0x6D, + 0x6F, 0x64, 0x6F, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x43, 0x50, 0x53, + 0x30, 0x08, 0x06, 0x06, 0x67, 0x81, 0x0C, 0x01, 0x02, 0x01, 0x30, + 0x54, 0x06, 0x03, 0x55, 0x1D, 0x1F, 0x04, 0x4D, 0x30, 0x4B, 0x30, + 0x49, 0xA0, 0x47, 0xA0, 0x45, 0x86, 0x43, 0x68, 0x74, 0x74, 0x70, + 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x6F, + 0x64, 0x6F, 0x63, 0x61, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x43, 0x4F, + 0x4D, 0x4F, 0x44, 0x4F, 0x52, 0x53, 0x41, 0x44, 0x6F, 0x6D, 0x61, + 0x69, 0x6E, 0x56, 0x61, 0x6C, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6F, + 0x6E, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x81, 0x85, + 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x79, 0x30, 0x77, 0x30, 0x4F, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x30, 0x02, 0x86, 0x43, 0x68, 0x74, 0x74, 0x70, 0x3A, + 0x2F, 0x2F, 0x63, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x6F, 0x64, + 0x6F, 0x63, 0x61, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x43, 0x4F, 0x4D, + 0x4F, 0x44, 0x4F, 0x52, 0x53, 0x41, 0x44, 0x6F, 0x6D, 0x61, 0x69, + 0x6E, 0x56, 0x61, 0x6C, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6F, 0x6E, + 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x74, 0x30, 0x24, 0x06, 0x08, + 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, + 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x6F, 0x63, 0x73, 0x70, 0x2E, + 0x63, 0x6F, 0x6D, 0x6F, 0x64, 0x6F, 0x63, 0x61, 0x2E, 0x63, 0x6F, + 0x6D, 0x30, 0x23, 0x06, 0x03, 0x55, 0x1D, 0x11, 0x04, 0x1C, 0x30, + 0x1A, 0x82, 0x0C, 0x2A, 0x2E, 0x62, 0x61, 0x64, 0x73, 0x73, 0x6C, + 0x2E, 0x63, 0x6F, 0x6D, 0x82, 0x0A, 0x62, 0x61, 0x64, 0x73, 0x73, + 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, + 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x01, 0x00, 0x75, 0x48, 0x83, 0x88, 0x9C, 0x55, 0x24, 0x37, + 0x30, 0x07, 0xEB, 0x26, 0x68, 0xC8, 0x79, 0x1C, 0x5C, 0xAE, 0x9A, + 0x02, 0x9A, 0xB5, 0x52, 0x75, 0x44, 0xAC, 0xA9, 0xED, 0x59, 0x65, + 0xD0, 0xC6, 0x47, 0x26, 0x04, 0x8D, 0x57, 0x89, 0x16, 0x2E, 0x71, + 0x18, 0x48, 0x98, 0x68, 0x1C, 0xF6, 0x31, 0xF5, 0x26, 0x4B, 0xE8, + 0x81, 0x44, 0xB1, 0xFF, 0x5C, 0x65, 0x3D, 0x78, 0x54, 0x94, 0xC3, + 0x86, 0x9D, 0x48, 0x96, 0xE8, 0x32, 0xAF, 0xE1, 0x8F, 0x94, 0x47, + 0xBE, 0x37, 0x8C, 0xC3, 0xED, 0x4D, 0x97, 0xBB, 0xC6, 0x2A, 0x37, + 0x72, 0x01, 0x3A, 0x8F, 0x82, 0xA4, 0x34, 0x44, 0xC4, 0xC4, 0xF8, + 0x50, 0x24, 0x48, 0x9E, 0x19, 0xF0, 0xEC, 0xE1, 0xC6, 0x13, 0x44, + 0x26, 0xB6, 0x65, 0xE1, 0x62, 0x49, 0x87, 0xA4, 0xF4, 0xD8, 0xC4, + 0x39, 0x3C, 0x7D, 0x42, 0xC8, 0xA4, 0x2A, 0x54, 0x05, 0xA0, 0xDC, + 0x0A, 0xF8, 0x2B, 0x22, 0x94, 0x93, 0x78, 0x4E, 0x6A, 0x36, 0x1B, + 0xD2, 0xE7, 0xE9, 0xAE, 0x84, 0xED, 0x13, 0x1D, 0xA1, 0xF7, 0xA2, + 0x83, 0x81, 0x03, 0x4C, 0x9E, 0x21, 0xFB, 0xBF, 0xA8, 0x30, 0xFE, + 0xEB, 0x00, 0x68, 0xB1, 0x7F, 0xBA, 0x5D, 0xE2, 0x5D, 0xFF, 0x41, + 0x1F, 0xD6, 0xF5, 0xA6, 0x5C, 0x8A, 0xEF, 0x81, 0x80, 0xC8, 0xF1, + 0x52, 0x00, 0x17, 0x9D, 0xD1, 0x96, 0x1A, 0x7D, 0x5E, 0xD2, 0x83, + 0xB3, 0x82, 0xC2, 0x3D, 0x46, 0x83, 0xA5, 0x1E, 0xB4, 0x36, 0x35, + 0x38, 0xC4, 0x7A, 0x2E, 0xDF, 0x0B, 0xA1, 0x98, 0x63, 0x58, 0x0B, + 0x1E, 0xD0, 0x6D, 0x83, 0x1F, 0xF1, 0x72, 0x4D, 0x09, 0xAC, 0x96, + 0x1A, 0x0B, 0xE5, 0xF6, 0x34, 0x4C, 0xAB, 0xBC, 0xBC, 0x99, 0x5B, + 0x82, 0x59, 0xE6, 0x6C, 0xD3, 0xDB, 0x98, 0xE0, 0xCE, 0x95, 0x3B, + 0xCF, 0x4E, 0x17, 0xC3, 0xEE, 0x3A, 0x00, 0x06, 0x0C, 0x30, 0x82, + 0x06, 0x08, 0x30, 0x82, 0x03, 0xF0, 0xA0, 0x03, 0x02, 0x01, 0x02, + 0x02, 0x10, 0x2B, 0x2E, 0x6E, 0xEA, 0xD9, 0x75, 0x36, 0x6C, 0x14, + 0x8A, 0x6E, 0xDB, 0xA3, 0x7C, 0x8C, 0x07, 0x30, 0x0D, 0x06, 0x09, + 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0C, 0x05, 0x00, + 0x30, 0x81, 0x85, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, + 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, 0x1B, 0x30, 0x19, 0x06, 0x03, + 0x55, 0x04, 0x08, 0x13, 0x12, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x72, 0x20, 0x4D, 0x61, 0x6E, 0x63, 0x68, 0x65, 0x73, 0x74, 0x65, + 0x72, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, + 0x07, 0x53, 0x61, 0x6C, 0x66, 0x6F, 0x72, 0x64, 0x31, 0x1A, 0x30, + 0x18, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x11, 0x43, 0x4F, 0x4D, + 0x4F, 0x44, 0x4F, 0x20, 0x43, 0x41, 0x20, 0x4C, 0x69, 0x6D, 0x69, + 0x74, 0x65, 0x64, 0x31, 0x2B, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x22, 0x43, 0x4F, 0x4D, 0x4F, 0x44, 0x4F, 0x20, 0x52, + 0x53, 0x41, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, + 0x72, 0x69, 0x74, 0x79, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x34, 0x30, + 0x32, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5A, 0x17, + 0x0D, 0x32, 0x39, 0x30, 0x32, 0x31, 0x31, 0x32, 0x33, 0x35, 0x39, + 0x35, 0x39, 0x5A, 0x30, 0x81, 0x90, 0x31, 0x0B, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, 0x1B, 0x30, + 0x19, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x12, 0x47, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x72, 0x20, 0x4D, 0x61, 0x6E, 0x63, 0x68, 0x65, + 0x73, 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, + 0x04, 0x07, 0x13, 0x07, 0x53, 0x61, 0x6C, 0x66, 0x6F, 0x72, 0x64, + 0x31, 0x1A, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x11, + 0x43, 0x4F, 0x4D, 0x4F, 0x44, 0x4F, 0x20, 0x43, 0x41, 0x20, 0x4C, + 0x69, 0x6D, 0x69, 0x74, 0x65, 0x64, 0x31, 0x36, 0x30, 0x34, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x2D, 0x43, 0x4F, 0x4D, 0x4F, 0x44, + 0x4F, 0x20, 0x52, 0x53, 0x41, 0x20, 0x44, 0x6F, 0x6D, 0x61, 0x69, + 0x6E, 0x20, 0x56, 0x61, 0x6C, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6F, + 0x6E, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, + 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0x8E, 0xC2, 0x02, 0x19, + 0xE1, 0xA0, 0x59, 0xA4, 0xEB, 0x38, 0x35, 0x8D, 0x2C, 0xFD, 0x01, + 0xD0, 0xD3, 0x49, 0xC0, 0x64, 0xC7, 0x0B, 0x62, 0x05, 0x45, 0x16, + 0x3A, 0xA8, 0xA0, 0xC0, 0x0C, 0x02, 0x7F, 0x1D, 0xCC, 0xDB, 0xC4, + 0xA1, 0x6D, 0x77, 0x03, 0xA3, 0x0F, 0x86, 0xF9, 0xE3, 0x06, 0x9C, + 0x3E, 0x0B, 0x81, 0x8A, 0x9B, 0x49, 0x1B, 0xAD, 0x03, 0xBE, 0xFA, + 0x4B, 0xDB, 0x8C, 0x20, 0xED, 0xD5, 0xCE, 0x5E, 0x65, 0x8E, 0x3E, + 0x0D, 0xAF, 0x4C, 0xC2, 0xB0, 0xB7, 0x45, 0x5E, 0x52, 0x2F, 0x34, + 0xDE, 0x48, 0x24, 0x64, 0xB4, 0x41, 0xAE, 0x00, 0x97, 0xF7, 0xBE, + 0x67, 0xDE, 0x9E, 0xD0, 0x7A, 0xA7, 0x53, 0x80, 0x3B, 0x7C, 0xAD, + 0xF5, 0x96, 0x55, 0x6F, 0x97, 0x47, 0x0A, 0x7C, 0x85, 0x8B, 0x22, + 0x97, 0x8D, 0xB3, 0x84, 0xE0, 0x96, 0x57, 0xD0, 0x70, 0x18, 0x60, + 0x96, 0x8F, 0xEE, 0x2D, 0x07, 0x93, 0x9D, 0xA1, 0xBA, 0xCA, 0xD1, + 0xCD, 0x7B, 0xE9, 0xC4, 0x2A, 0x9A, 0x28, 0x21, 0x91, 0x4D, 0x6F, + 0x92, 0x4F, 0x25, 0xA5, 0xF2, 0x7A, 0x35, 0xDD, 0x26, 0xDC, 0x46, + 0xA5, 0xD0, 0xAC, 0x59, 0x35, 0x8C, 0xFF, 0x4E, 0x91, 0x43, 0x50, + 0x3F, 0x59, 0x93, 0x1E, 0x6C, 0x51, 0x21, 0xEE, 0x58, 0x14, 0xAB, + 0xFE, 0x75, 0x50, 0x78, 0x3E, 0x4C, 0xB0, 0x1C, 0x86, 0x13, 0xFA, + 0x6B, 0x98, 0xBC, 0xE0, 0x3B, 0x94, 0x1E, 0x85, 0x52, 0xDC, 0x03, + 0x93, 0x24, 0x18, 0x6E, 0xCB, 0x27, 0x51, 0x45, 0xE6, 0x70, 0xDE, + 0x25, 0x43, 0xA4, 0x0D, 0xE1, 0x4A, 0xA5, 0xED, 0xB6, 0x7E, 0xC8, + 0xCD, 0x6D, 0xEE, 0x2E, 0x1D, 0x27, 0x73, 0x5D, 0xDC, 0x45, 0x30, + 0x80, 0xAA, 0xE3, 0xB2, 0x41, 0x0B, 0xAF, 0xBD, 0x44, 0x87, 0xDA, + 0xB9, 0xE5, 0x1B, 0x9D, 0x7F, 0xAE, 0xE5, 0x85, 0x82, 0xA5, 0x02, + 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x01, 0x65, 0x30, 0x82, 0x01, + 0x61, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0xBB, 0xAF, 0x7E, 0x02, 0x3D, 0xFA, 0xA6, 0xF1, + 0x3C, 0x84, 0x8E, 0xAD, 0xEE, 0x38, 0x98, 0xEC, 0xD9, 0x32, 0x32, + 0xD4, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, + 0x14, 0x90, 0xAF, 0x6A, 0x3A, 0x94, 0x5A, 0x0B, 0xD8, 0x90, 0xEA, + 0x12, 0x56, 0x73, 0xDF, 0x43, 0xB4, 0x3A, 0x28, 0xDA, 0xE7, 0x30, + 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, + 0x03, 0x02, 0x01, 0x86, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1D, 0x13, + 0x01, 0x01, 0xFF, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xFF, 0x02, + 0x01, 0x00, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x25, 0x04, 0x16, + 0x30, 0x14, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, + 0x01, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, + 0x30, 0x1B, 0x06, 0x03, 0x55, 0x1D, 0x20, 0x04, 0x14, 0x30, 0x12, + 0x30, 0x06, 0x06, 0x04, 0x55, 0x1D, 0x20, 0x00, 0x30, 0x08, 0x06, + 0x06, 0x67, 0x81, 0x0C, 0x01, 0x02, 0x01, 0x30, 0x4C, 0x06, 0x03, + 0x55, 0x1D, 0x1F, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, 0xA0, 0x3F, + 0xA0, 0x3D, 0x86, 0x3B, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, + 0x63, 0x72, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x6F, 0x64, 0x6F, 0x63, + 0x61, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x43, 0x4F, 0x4D, 0x4F, 0x44, + 0x4F, 0x52, 0x53, 0x41, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x41, 0x75, 0x74, 0x68, 0x6F, + 0x72, 0x69, 0x74, 0x79, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x71, 0x06, + 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x65, + 0x30, 0x63, 0x30, 0x3B, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x02, 0x86, 0x2F, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, + 0x2F, 0x63, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x6F, 0x64, 0x6F, + 0x63, 0x61, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x43, 0x4F, 0x4D, 0x4F, + 0x44, 0x4F, 0x52, 0x53, 0x41, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, + 0x73, 0x74, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x74, 0x30, 0x24, 0x06, + 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, + 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x6F, 0x63, 0x73, 0x70, + 0x2E, 0x63, 0x6F, 0x6D, 0x6F, 0x64, 0x6F, 0x63, 0x61, 0x2E, 0x63, + 0x6F, 0x6D, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, + 0x0D, 0x01, 0x01, 0x0C, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, + 0x4E, 0x2B, 0x76, 0x4F, 0x92, 0x1C, 0x62, 0x36, 0x89, 0xBA, 0x77, + 0xC1, 0x27, 0x05, 0xF4, 0x1C, 0xD6, 0x44, 0x9D, 0xA9, 0x9A, 0x3E, + 0xAA, 0xD5, 0x66, 0x66, 0x01, 0x3E, 0xEA, 0x49, 0xE6, 0xA2, 0x35, + 0xBC, 0xFA, 0xF6, 0xDD, 0x95, 0x8E, 0x99, 0x35, 0x98, 0x0E, 0x36, + 0x18, 0x75, 0xB1, 0xDD, 0xDD, 0x50, 0x72, 0x7C, 0xAE, 0xDC, 0x77, + 0x88, 0xCE, 0x0F, 0xF7, 0x90, 0x20, 0xCA, 0xA3, 0x67, 0x2E, 0x1F, + 0x56, 0x7F, 0x7B, 0xE1, 0x44, 0xEA, 0x42, 0x95, 0xC4, 0x5D, 0x0D, + 0x01, 0x50, 0x46, 0x15, 0xF2, 0x81, 0x89, 0x59, 0x6C, 0x8A, 0xDD, + 0x8C, 0xF1, 0x12, 0xA1, 0x8D, 0x3A, 0x42, 0x8A, 0x98, 0xF8, 0x4B, + 0x34, 0x7B, 0x27, 0x3B, 0x08, 0xB4, 0x6F, 0x24, 0x3B, 0x72, 0x9D, + 0x63, 0x74, 0x58, 0x3C, 0x1A, 0x6C, 0x3F, 0x4F, 0xC7, 0x11, 0x9A, + 0xC8, 0xA8, 0xF5, 0xB5, 0x37, 0xEF, 0x10, 0x45, 0xC6, 0x6C, 0xD9, + 0xE0, 0x5E, 0x95, 0x26, 0xB3, 0xEB, 0xAD, 0xA3, 0xB9, 0xEE, 0x7F, + 0x0C, 0x9A, 0x66, 0x35, 0x73, 0x32, 0x60, 0x4E, 0xE5, 0xDD, 0x8A, + 0x61, 0x2C, 0x6E, 0x52, 0x11, 0x77, 0x68, 0x96, 0xD3, 0x18, 0x75, + 0x51, 0x15, 0x00, 0x1B, 0x74, 0x88, 0xDD, 0xE1, 0xC7, 0x38, 0x04, + 0x43, 0x28, 0xE9, 0x16, 0xFD, 0xD9, 0x05, 0xD4, 0x5D, 0x47, 0x27, + 0x60, 0xD6, 0xFB, 0x38, 0x3B, 0x6C, 0x72, 0xA2, 0x94, 0xF8, 0x42, + 0x1A, 0xDF, 0xED, 0x6F, 0x06, 0x8C, 0x45, 0xC2, 0x06, 0x00, 0xAA, + 0xE4, 0xE8, 0xDC, 0xD9, 0xB5, 0xE1, 0x73, 0x78, 0xEC, 0xF6, 0x23, + 0xDC, 0xD1, 0xDD, 0x6C, 0x8E, 0x1A, 0x8F, 0xA5, 0xEA, 0x54, 0x7C, + 0x96, 0xB7, 0xC3, 0xFE, 0x55, 0x8E, 0x8D, 0x49, 0x5E, 0xFC, 0x64, + 0xBB, 0xCF, 0x3E, 0xBD, 0x96, 0xEB, 0x69, 0xCD, 0xBF, 0xE0, 0x48, + 0xF1, 0x62, 0x82, 0x10, 0xE5, 0x0C, 0x46, 0x57, 0xF2, 0x33, 0xDA, + 0xD0, 0xC8, 0x63, 0xED, 0xC6, 0x1F, 0x94, 0x05, 0x96, 0x4A, 0x1A, + 0x91, 0xD1, 0xF7, 0xEB, 0xCF, 0x8F, 0x52, 0xAE, 0x0D, 0x08, 0xD9, + 0x3E, 0xA8, 0xA0, 0x51, 0xE9, 0xC1, 0x87, 0x74, 0xD5, 0xC9, 0xF7, + 0x74, 0xAB, 0x2E, 0x53, 0xFB, 0xBB, 0x7A, 0xFB, 0x97, 0xE2, 0xF8, + 0x1F, 0x26, 0x8F, 0xB3, 0xD2, 0xA0, 0xE0, 0x37, 0x5B, 0x28, 0x3B, + 0x31, 0xE5, 0x0E, 0x57, 0x2D, 0x5A, 0xB8, 0xAD, 0x79, 0xAC, 0x5E, + 0x20, 0x66, 0x1A, 0xA5, 0xB9, 0xA6, 0xB5, 0x39, 0xC1, 0xF5, 0x98, + 0x43, 0xFF, 0xEE, 0xF9, 0xA7, 0xA7, 0xFD, 0xEE, 0xCA, 0x24, 0x3D, + 0x80, 0x16, 0xC4, 0x17, 0x8F, 0x8A, 0xC1, 0x60, 0xA1, 0x0C, 0xAE, + 0x5B, 0x43, 0x47, 0x91, 0x4B, 0xD5, 0x9A, 0x17, 0x5F, 0xF9, 0xD4, + 0x87, 0xC1, 0xC2, 0x8C, 0xB7, 0xE7, 0xE2, 0x0F, 0x30, 0x19, 0x37, + 0x86, 0xAC, 0xE0, 0xDC, 0x42, 0x03, 0xE6, 0x94, 0xA8, 0x9D, 0xAE, + 0xFD, 0x0F, 0x24, 0x51, 0x94, 0xCE, 0x92, 0x08, 0xD1, 0xFC, 0x50, + 0xF0, 0x03, 0x40, 0x7B, 0x88, 0x59, 0xED, 0x0E, 0xDD, 0xAC, 0xD2, + 0x77, 0x82, 0x34, 0xDC, 0x06, 0x95, 0x02, 0xD8, 0x90, 0xF9, 0x2D, + 0xEA, 0x37, 0xD5, 0x1A, 0x60, 0xD0, 0x67, 0x20, 0xD7, 0xD8, 0x42, + 0x0B, 0x45, 0xAF, 0x82, 0x68, 0xDE, 0xDD, 0x66, 0x24, 0x37, 0x90, + 0x29, 0x94, 0x19, 0x46, 0x19, 0x25, 0xB8, 0x80, 0xD7, 0xCB, 0xD4, + 0x86, 0x28, 0x6A, 0x44, 0x70, 0x26, 0x23, 0x62, 0xA9, 0x9F, 0x86, + 0x6F, 0xBF, 0xBA, 0x90, 0x70, 0xD2, 0x56, 0x77, 0x85, 0x78, 0xEF, + 0xEA, 0x25, 0xA9, 0x17, 0xCE, 0x50, 0x72, 0x8C, 0x00, 0x3A, 0xAA, + 0xE3, 0xDB, 0x63, 0x34, 0x9F, 0xF8, 0x06, 0x71, 0x01, 0xE2, 0x82, + 0x20, 0xD4, 0xFE, 0x6F, 0xBD, 0xB1, 0x00, 0x05, 0x78, 0x30, 0x82, + 0x05, 0x74, 0x30, 0x82, 0x04, 0x5C, 0xA0, 0x03, 0x02, 0x01, 0x02, + 0x02, 0x10, 0x27, 0x66, 0xEE, 0x56, 0xEB, 0x49, 0xF3, 0x8E, 0xAB, + 0xD7, 0x70, 0xA2, 0xFC, 0x84, 0xDE, 0x22, 0x30, 0x0D, 0x06, 0x09, + 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0C, 0x05, 0x00, + 0x30, 0x6F, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x53, 0x45, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, + 0x04, 0x0A, 0x13, 0x0B, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x41, 0x42, 0x31, 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, + 0x04, 0x0B, 0x13, 0x1D, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6E, 0x61, 0x6C, 0x20, + 0x54, 0x54, 0x50, 0x20, 0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, + 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, + 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45, 0x78, + 0x74, 0x65, 0x72, 0x6E, 0x61, 0x6C, 0x20, 0x43, 0x41, 0x20, 0x52, + 0x6F, 0x6F, 0x74, 0x30, 0x1E, 0x17, 0x0D, 0x30, 0x30, 0x30, 0x35, + 0x33, 0x30, 0x31, 0x30, 0x34, 0x38, 0x33, 0x38, 0x5A, 0x17, 0x0D, + 0x32, 0x30, 0x30, 0x35, 0x33, 0x30, 0x31, 0x30, 0x34, 0x38, 0x33, + 0x38, 0x5A, 0x30, 0x81, 0x85, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, + 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, 0x1B, 0x30, 0x19, + 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x12, 0x47, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x72, 0x20, 0x4D, 0x61, 0x6E, 0x63, 0x68, 0x65, 0x73, + 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, + 0x07, 0x13, 0x07, 0x53, 0x61, 0x6C, 0x66, 0x6F, 0x72, 0x64, 0x31, + 0x1A, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x11, 0x43, + 0x4F, 0x4D, 0x4F, 0x44, 0x4F, 0x20, 0x43, 0x41, 0x20, 0x4C, 0x69, + 0x6D, 0x69, 0x74, 0x65, 0x64, 0x31, 0x2B, 0x30, 0x29, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x22, 0x43, 0x4F, 0x4D, 0x4F, 0x44, 0x4F, + 0x20, 0x52, 0x53, 0x41, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x30, 0x82, 0x02, 0x22, 0x30, + 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0F, 0x00, 0x30, 0x82, 0x02, + 0x0A, 0x02, 0x82, 0x02, 0x01, 0x00, 0x91, 0xE8, 0x54, 0x92, 0xD2, + 0x0A, 0x56, 0xB1, 0xAC, 0x0D, 0x24, 0xDD, 0xC5, 0xCF, 0x44, 0x67, + 0x74, 0x99, 0x2B, 0x37, 0xA3, 0x7D, 0x23, 0x70, 0x00, 0x71, 0xBC, + 0x53, 0xDF, 0xC4, 0xFA, 0x2A, 0x12, 0x8F, 0x4B, 0x7F, 0x10, 0x56, + 0xBD, 0x9F, 0x70, 0x72, 0xB7, 0x61, 0x7F, 0xC9, 0x4B, 0x0F, 0x17, + 0xA7, 0x3D, 0xE3, 0xB0, 0x04, 0x61, 0xEE, 0xFF, 0x11, 0x97, 0xC7, + 0xF4, 0x86, 0x3E, 0x0A, 0xFA, 0x3E, 0x5C, 0xF9, 0x93, 0xE6, 0x34, + 0x7A, 0xD9, 0x14, 0x6B, 0xE7, 0x9C, 0xB3, 0x85, 0xA0, 0x82, 0x7A, + 0x76, 0xAF, 0x71, 0x90, 0xD7, 0xEC, 0xFD, 0x0D, 0xFA, 0x9C, 0x6C, + 0xFA, 0xDF, 0xB0, 0x82, 0xF4, 0x14, 0x7E, 0xF9, 0xBE, 0xC4, 0xA6, + 0x2F, 0x4F, 0x7F, 0x99, 0x7F, 0xB5, 0xFC, 0x67, 0x43, 0x72, 0xBD, + 0x0C, 0x00, 0xD6, 0x89, 0xEB, 0x6B, 0x2C, 0xD3, 0xED, 0x8F, 0x98, + 0x1C, 0x14, 0xAB, 0x7E, 0xE5, 0xE3, 0x6E, 0xFC, 0xD8, 0xA8, 0xE4, + 0x92, 0x24, 0xDA, 0x43, 0x6B, 0x62, 0xB8, 0x55, 0xFD, 0xEA, 0xC1, + 0xBC, 0x6C, 0xB6, 0x8B, 0xF3, 0x0E, 0x8D, 0x9A, 0xE4, 0x9B, 0x6C, + 0x69, 0x99, 0xF8, 0x78, 0x48, 0x30, 0x45, 0xD5, 0xAD, 0xE1, 0x0D, + 0x3C, 0x45, 0x60, 0xFC, 0x32, 0x96, 0x51, 0x27, 0xBC, 0x67, 0xC3, + 0xCA, 0x2E, 0xB6, 0x6B, 0xEA, 0x46, 0xC7, 0xC7, 0x20, 0xA0, 0xB1, + 0x1F, 0x65, 0xDE, 0x48, 0x08, 0xBA, 0xA4, 0x4E, 0xA9, 0xF2, 0x83, + 0x46, 0x37, 0x84, 0xEB, 0xE8, 0xCC, 0x81, 0x48, 0x43, 0x67, 0x4E, + 0x72, 0x2A, 0x9B, 0x5C, 0xBD, 0x4C, 0x1B, 0x28, 0x8A, 0x5C, 0x22, + 0x7B, 0xB4, 0xAB, 0x98, 0xD9, 0xEE, 0xE0, 0x51, 0x83, 0xC3, 0x09, + 0x46, 0x4E, 0x6D, 0x3E, 0x99, 0xFA, 0x95, 0x17, 0xDA, 0x7C, 0x33, + 0x57, 0x41, 0x3C, 0x8D, 0x51, 0xED, 0x0B, 0xB6, 0x5C, 0xAF, 0x2C, + 0x63, 0x1A, 0xDF, 0x57, 0xC8, 0x3F, 0xBC, 0xE9, 0x5D, 0xC4, 0x9B, + 0xAF, 0x45, 0x99, 0xE2, 0xA3, 0x5A, 0x24, 0xB4, 0xBA, 0xA9, 0x56, + 0x3D, 0xCF, 0x6F, 0xAA, 0xFF, 0x49, 0x58, 0xBE, 0xF0, 0xA8, 0xFF, + 0xF4, 0xB8, 0xAD, 0xE9, 0x37, 0xFB, 0xBA, 0xB8, 0xF4, 0x0B, 0x3A, + 0xF9, 0xE8, 0x43, 0x42, 0x1E, 0x89, 0xD8, 0x84, 0xCB, 0x13, 0xF1, + 0xD9, 0xBB, 0xE1, 0x89, 0x60, 0xB8, 0x8C, 0x28, 0x56, 0xAC, 0x14, + 0x1D, 0x9C, 0x0A, 0xE7, 0x71, 0xEB, 0xCF, 0x0E, 0xDD, 0x3D, 0xA9, + 0x96, 0xA1, 0x48, 0xBD, 0x3C, 0xF7, 0xAF, 0xB5, 0x0D, 0x22, 0x4C, + 0xC0, 0x11, 0x81, 0xEC, 0x56, 0x3B, 0xF6, 0xD3, 0xA2, 0xE2, 0x5B, + 0xB7, 0xB2, 0x04, 0x22, 0x52, 0x95, 0x80, 0x93, 0x69, 0xE8, 0x8E, + 0x4C, 0x65, 0xF1, 0x91, 0x03, 0x2D, 0x70, 0x74, 0x02, 0xEA, 0x8B, + 0x67, 0x15, 0x29, 0x69, 0x52, 0x02, 0xBB, 0xD7, 0xDF, 0x50, 0x6A, + 0x55, 0x46, 0xBF, 0xA0, 0xA3, 0x28, 0x61, 0x7F, 0x70, 0xD0, 0xC3, + 0xA2, 0xAA, 0x2C, 0x21, 0xAA, 0x47, 0xCE, 0x28, 0x9C, 0x06, 0x45, + 0x76, 0xBF, 0x82, 0x18, 0x27, 0xB4, 0xD5, 0xAE, 0xB4, 0xCB, 0x50, + 0xE6, 0x6B, 0xF4, 0x4C, 0x86, 0x71, 0x30, 0xE9, 0xA6, 0xDF, 0x16, + 0x86, 0xE0, 0xD8, 0xFF, 0x40, 0xDD, 0xFB, 0xD0, 0x42, 0x88, 0x7F, + 0xA3, 0x33, 0x3A, 0x2E, 0x5C, 0x1E, 0x41, 0x11, 0x81, 0x63, 0xCE, + 0x18, 0x71, 0x6B, 0x2B, 0xEC, 0xA6, 0x8A, 0xB7, 0x31, 0x5C, 0x3A, + 0x6A, 0x47, 0xE0, 0xC3, 0x79, 0x59, 0xD6, 0x20, 0x1A, 0xAF, 0xF2, + 0x6A, 0x98, 0xAA, 0x72, 0xBC, 0x57, 0x4A, 0xD2, 0x4B, 0x9D, 0xBB, + 0x10, 0xFC, 0xB0, 0x4C, 0x41, 0xE5, 0xED, 0x1D, 0x3D, 0x5E, 0x28, + 0x9D, 0x9C, 0xCC, 0xBF, 0xB3, 0x51, 0xDA, 0xA7, 0x47, 0xE5, 0x84, + 0x53, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x81, 0xF4, 0x30, 0x81, + 0xF1, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0xAD, 0xBD, 0x98, 0x7A, 0x34, 0xB4, 0x26, 0xF7, + 0xFA, 0xC4, 0x26, 0x54, 0xEF, 0x03, 0xBD, 0xE0, 0x24, 0xCB, 0x54, + 0x1A, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, + 0x14, 0xBB, 0xAF, 0x7E, 0x02, 0x3D, 0xFA, 0xA6, 0xF1, 0x3C, 0x84, + 0x8E, 0xAD, 0xEE, 0x38, 0x98, 0xEC, 0xD9, 0x32, 0x32, 0xD4, 0x30, + 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, + 0x03, 0x02, 0x01, 0x86, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x1D, 0x13, + 0x01, 0x01, 0xFF, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xFF, 0x30, + 0x11, 0x06, 0x03, 0x55, 0x1D, 0x20, 0x04, 0x0A, 0x30, 0x08, 0x30, + 0x06, 0x06, 0x04, 0x55, 0x1D, 0x20, 0x00, 0x30, 0x44, 0x06, 0x03, + 0x55, 0x1D, 0x1F, 0x04, 0x3D, 0x30, 0x3B, 0x30, 0x39, 0xA0, 0x37, + 0xA0, 0x35, 0x86, 0x33, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, + 0x63, 0x72, 0x6C, 0x2E, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x41, 0x64, 0x64, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6E, 0x61, + 0x6C, 0x43, 0x41, 0x52, 0x6F, 0x6F, 0x74, 0x2E, 0x63, 0x72, 0x6C, + 0x30, 0x35, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, + 0x01, 0x04, 0x29, 0x30, 0x27, 0x30, 0x25, 0x06, 0x08, 0x2B, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x19, 0x68, 0x74, 0x74, + 0x70, 0x3A, 0x2F, 0x2F, 0x6F, 0x63, 0x73, 0x70, 0x2E, 0x75, 0x73, + 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2E, 0x63, 0x6F, 0x6D, + 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, + 0x01, 0x0C, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x64, 0xBF, + 0x83, 0xF1, 0x5F, 0x9A, 0x85, 0xD0, 0xCD, 0xB8, 0xA1, 0x29, 0x57, + 0x0D, 0xE8, 0x5A, 0xF7, 0xD1, 0xE9, 0x3E, 0xF2, 0x76, 0x04, 0x6E, + 0xF1, 0x52, 0x70, 0xBB, 0x1E, 0x3C, 0xFF, 0x4D, 0x0D, 0x74, 0x6A, + 0xCC, 0x81, 0x82, 0x25, 0xD3, 0xC3, 0xA0, 0x2A, 0x5D, 0x4C, 0xF5, + 0xBA, 0x8B, 0xA1, 0x6D, 0xC4, 0x54, 0x09, 0x75, 0xC7, 0xE3, 0x27, + 0x0E, 0x5D, 0x84, 0x79, 0x37, 0x40, 0x13, 0x77, 0xF5, 0xB4, 0xAC, + 0x1C, 0xD0, 0x3B, 0xAB, 0x17, 0x12, 0xD6, 0xEF, 0x34, 0x18, 0x7E, + 0x2B, 0xE9, 0x79, 0xD3, 0xAB, 0x57, 0x45, 0x0C, 0xAF, 0x28, 0xFA, + 0xD0, 0xDB, 0xE5, 0x50, 0x95, 0x88, 0xBB, 0xDF, 0x85, 0x57, 0x69, + 0x7D, 0x92, 0xD8, 0x52, 0xCA, 0x73, 0x81, 0xBF, 0x1C, 0xF3, 0xE6, + 0xB8, 0x6E, 0x66, 0x11, 0x05, 0xB3, 0x1E, 0x94, 0x2D, 0x7F, 0x91, + 0x95, 0x92, 0x59, 0xF1, 0x4C, 0xCE, 0xA3, 0x91, 0x71, 0x4C, 0x7C, + 0x47, 0x0C, 0x3B, 0x0B, 0x19, 0xF6, 0xA1, 0xB1, 0x6C, 0x86, 0x3E, + 0x5C, 0xAA, 0xC4, 0x2E, 0x82, 0xCB, 0xF9, 0x07, 0x96, 0xBA, 0x48, + 0x4D, 0x90, 0xF2, 0x94, 0xC8, 0xA9, 0x73, 0xA2, 0xEB, 0x06, 0x7B, + 0x23, 0x9D, 0xDE, 0xA2, 0xF3, 0x4D, 0x55, 0x9F, 0x7A, 0x61, 0x45, + 0x98, 0x18, 0x68, 0xC7, 0x5E, 0x40, 0x6B, 0x23, 0xF5, 0x79, 0x7A, + 0xEF, 0x8C, 0xB5, 0x6B, 0x8B, 0xB7, 0x6F, 0x46, 0xF4, 0x7B, 0xF1, + 0x3D, 0x4B, 0x04, 0xD8, 0x93, 0x80, 0x59, 0x5A, 0xE0, 0x41, 0x24, + 0x1D, 0xB2, 0x8F, 0x15, 0x60, 0x58, 0x47, 0xDB, 0xEF, 0x6E, 0x46, + 0xFD, 0x15, 0xF5, 0xD9, 0x5F, 0x9A, 0xB3, 0xDB, 0xD8, 0xB8, 0xE4, + 0x40, 0xB3, 0xCD, 0x97, 0x39, 0xAE, 0x85, 0xBB, 0x1D, 0x8E, 0xBC, + 0xDC, 0x87, 0x9B, 0xD1, 0xA6, 0xEF, 0xF1, 0x3B, 0x6F, 0x10, 0x38, + 0x6F, 0x16, 0x03, 0x03, 0x02, 0x0F, 0x0C, 0x00, 0x02, 0x0B, 0x00, + 0x80, 0xBB, 0xBC, 0x2D, 0xCA, 0xD8, 0x46, 0x74, 0x90, 0x7C, 0x43, + 0xFC, 0xF5, 0x80, 0xE9, 0xCF, 0xDB, 0xD9, 0x58, 0xA3, 0xF5, 0x68, + 0xB4, 0x2D, 0x4B, 0x08, 0xEE, 0xD4, 0xEB, 0x0F, 0xB3, 0x50, 0x4C, + 0x6C, 0x03, 0x02, 0x76, 0xE7, 0x10, 0x80, 0x0C, 0x5C, 0xCB, 0xBA, + 0xA8, 0x92, 0x26, 0x14, 0xC5, 0xBE, 0xEC, 0xA5, 0x65, 0xA5, 0xFD, + 0xF1, 0xD2, 0x87, 0xA2, 0xBC, 0x04, 0x9B, 0xE6, 0x77, 0x80, 0x60, + 0xE9, 0x1A, 0x92, 0xA7, 0x57, 0xE3, 0x04, 0x8F, 0x68, 0xB0, 0x76, + 0xF7, 0xD3, 0x6C, 0xC8, 0xF2, 0x9B, 0xA5, 0xDF, 0x81, 0xDC, 0x2C, + 0xA7, 0x25, 0xEC, 0xE6, 0x62, 0x70, 0xCC, 0x9A, 0x50, 0x35, 0xD8, + 0xCE, 0xCE, 0xEF, 0x9E, 0xA0, 0x27, 0x4A, 0x63, 0xAB, 0x1E, 0x58, + 0xFA, 0xFD, 0x49, 0x88, 0xD0, 0xF6, 0x5D, 0x14, 0x67, 0x57, 0xDA, + 0x07, 0x1D, 0xF0, 0x45, 0xCF, 0xE1, 0x6B, 0x9B, 0x00, 0x01, 0x02, + 0x00, 0x80, 0x55, 0xFB, 0xB6, 0x92, 0x5A, 0x0C, 0x93, 0x56, 0xE8, + 0x1C, 0xCD, 0x23, 0xFC, 0xB9, 0xBE, 0x98, 0x2D, 0x01, 0x4F, 0x35, + 0xCE, 0x37, 0xD0, 0xF8, 0xA0, 0x0C, 0x42, 0x3B, 0x27, 0x25, 0x10, + 0x04, 0x46, 0x02, 0x19, 0x1F, 0xDC, 0xDA, 0x08, 0x33, 0x42, 0x63, + 0x5F, 0x3C, 0x82, 0x1F, 0xFA, 0x46, 0x9E, 0x34, 0xCB, 0x30, 0xED, + 0x55, 0x11, 0xD7, 0x00, 0x0C, 0x76, 0x0A, 0x48, 0x0C, 0x1D, 0x7A, + 0x13, 0x3D, 0xC6, 0x41, 0xD5, 0x7B, 0xD5, 0x2A, 0xE0, 0xA3, 0xB5, + 0xAB, 0x0E, 0xBC, 0xD3, 0x17, 0x14, 0xFD, 0x21, 0x8C, 0x78, 0xB1, + 0x4D, 0xF2, 0x5A, 0x44, 0x89, 0x4E, 0x82, 0x3D, 0x8B, 0xAC, 0x5D, + 0x49, 0xB2, 0x19, 0x21, 0x67, 0xCA, 0x70, 0xC7, 0x8D, 0x35, 0x89, + 0xD1, 0x9D, 0x34, 0xD4, 0x7A, 0xAF, 0x1D, 0x9D, 0x86, 0x0F, 0xEF, + 0x5A, 0x4F, 0x9E, 0xDA, 0xF5, 0x02, 0x7E, 0x22, 0x67, 0x01, 0x01, + 0x01, 0x00, 0x7B, 0x59, 0x4A, 0x29, 0xF9, 0x9F, 0x53, 0x41, 0x8B, + 0xE6, 0x79, 0xE9, 0xF5, 0x73, 0x7C, 0xC8, 0xE9, 0x40, 0x1F, 0x39, + 0x08, 0x06, 0x84, 0x3D, 0x80, 0x6B, 0xF0, 0x0C, 0x54, 0xC2, 0x18, + 0xD6, 0xAD, 0x53, 0xFD, 0x7C, 0xB3, 0x8B, 0xCE, 0x70, 0x4F, 0xCF, + 0xFC, 0xEF, 0xC8, 0x2D, 0xE4, 0xD0, 0xC2, 0x7B, 0x80, 0x57, 0xA2, + 0x5F, 0x7F, 0x36, 0xB0, 0xBC, 0x16, 0xB7, 0xC1, 0xC2, 0x12, 0x96, + 0x94, 0x88, 0x9D, 0x68, 0xD3, 0xDF, 0xB1, 0x3C, 0xA0, 0x93, 0x3A, + 0x4D, 0x90, 0x66, 0x3F, 0xB0, 0x89, 0xE7, 0x21, 0x58, 0xF0, 0x39, + 0x8B, 0x83, 0x32, 0x93, 0xCB, 0xA9, 0x57, 0x2B, 0x0A, 0x02, 0x5E, + 0xF9, 0xE6, 0x10, 0x9A, 0x7F, 0x2A, 0x23, 0x3D, 0x5C, 0x3F, 0x38, + 0x3A, 0x40, 0x0C, 0x1B, 0x7C, 0x0D, 0x5D, 0x7C, 0xF1, 0xB2, 0x88, + 0x71, 0xA2, 0x57, 0x02, 0x94, 0x12, 0x45, 0x60, 0xEC, 0xC2, 0xB2, + 0xCB, 0x31, 0xF2, 0xF8, 0x1B, 0xDD, 0xEA, 0xF6, 0x40, 0xF6, 0x07, + 0xEA, 0xC2, 0x71, 0xA6, 0x07, 0xC8, 0x45, 0xE4, 0xE2, 0x1D, 0x49, + 0x53, 0x40, 0x5B, 0x57, 0x68, 0xA4, 0x81, 0x1C, 0xCB, 0x33, 0x95, + 0x12, 0x0F, 0x4D, 0xAD, 0x9B, 0x70, 0x53, 0xDC, 0x8B, 0xE6, 0x24, + 0x0D, 0x39, 0x83, 0x0E, 0x17, 0xFB, 0x13, 0xF2, 0x45, 0x2C, 0x52, + 0x44, 0xA3, 0x22, 0x0D, 0x32, 0xDD, 0x21, 0x05, 0x2B, 0xA1, 0xAC, + 0xC4, 0x84, 0xD7, 0x18, 0x2F, 0xA2, 0xB4, 0xF5, 0x4E, 0xED, 0x72, + 0x56, 0xB7, 0x87, 0x81, 0xF8, 0x51, 0x30, 0x01, 0xBE, 0x17, 0x31, + 0xEE, 0x21, 0xBA, 0x16, 0xAF, 0xEB, 0x0A, 0x54, 0x69, 0x84, 0xB3, + 0xDC, 0xCA, 0x04, 0xBB, 0x49, 0x84, 0x4C, 0x0F, 0xCE, 0x20, 0xE2, + 0x71, 0xF3, 0x43, 0x26, 0x1D, 0xA4, 0xAF, 0xAE, 0x3F, 0x9E, 0xA3, + 0x44, 0xDC, 0xAE, 0xB7, 0x5B, 0x16, 0x03, 0x03, 0x00, 0x04, 0x0E, + 0x00, 0x00, 0x00 + }; static void server(int sd) { @@ -748,9 +581,10 @@ static void client(int sd) /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+DHE-RSA:+AES-128-GCM", - NULL); + gnutls_priority_set_direct( + session, + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+DHE-RSA:+AES-128-GCM", + NULL); gnutls_handshake_set_timeout(session, get_timeout()); gnutls_server_name_set(session, GNUTLS_NAME_DNS, "localhost", strlen("localhost")); @@ -820,4 +654,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/client_dsa_key.c b/tests/client_dsa_key.c index f5e346ee42..95ea654dbb 100644 --- a/tests/client_dsa_key.c +++ b/tests/client_dsa_key.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -28,10 +28,10 @@ #include #include #if !defined(_WIN32) -# include -# include -# include -# include +#include +#include +#include +#include #endif #include #include @@ -67,9 +67,8 @@ void doit(void) assert(gnutls_certificate_allocate_credentials(&cli_cred) >= 0); - ret = - gnutls_certificate_set_x509_trust_mem(cli_cred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(cli_cred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) fail("set_x509_trust_file failed: %s\n", gnutls_strerror(ret)); @@ -88,26 +87,23 @@ void doit(void) gnutls_certificate_set_verify_flags(serv_cred, GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1); - ret = - gnutls_certificate_set_x509_trust_mem(serv_cred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(serv_cred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) fail("set_x509_trust_file failed: %s\n", gnutls_strerror(ret)); - ret = - gnutls_certificate_set_x509_key_mem(serv_cred, - &server_ca3_localhost_cert_chain, - &server_ca3_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + serv_cred, &server_ca3_localhost_cert_chain, &server_ca3_key, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("error in error code\n"); exit(1); } - test_cli_serv_cert(serv_cred, cli_cred, - "NORMAL:+DHE-DSS:+SIGN-DSA-SHA1", - "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.2:-DHE-DSS:+SIGN-DSA-SHA1", - "localhost"); + test_cli_serv_cert( + serv_cred, cli_cred, "NORMAL:+DHE-DSS:+SIGN-DSA-SHA1", + "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.2:-DHE-DSS:+SIGN-DSA-SHA1", + "localhost"); gnutls_certificate_free_credentials(serv_cred); gnutls_certificate_free_credentials(cli_cred); diff --git a/tests/cmocka-common.h b/tests/cmocka-common.h index 8db0e43841..d89c54d0d0 100644 --- a/tests/cmocka-common.h +++ b/tests/cmocka-common.h @@ -1,13 +1,13 @@ #ifndef GNUTLS_TESTS_CMOCKA_COMMON_H -# define GNUTLS_TESTS_CMOCKA_COMMON_H +#define GNUTLS_TESTS_CMOCKA_COMMON_H -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include -# define USE_CMOCKA -# include "eagain-common.h" +#define USE_CMOCKA +#include "eagain-common.h" -#endif /* GNUTLS_TESTS_CMOCKA_COMMON_H */ +#endif /* GNUTLS_TESTS_CMOCKA_COMMON_H */ diff --git a/tests/common-cert-key-exchange.c b/tests/common-cert-key-exchange.c index 243cb12bfd..b0a30941a3 100644 --- a/tests/common-cert-key-exchange.c +++ b/tests/common-cert-key-exchange.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* This program tests the various certificate key exchange methods supported @@ -50,10 +50,10 @@ static void tls_log_func(int level, const char *str) void try_with_key_fail(const char *name, const char *client_prio, int server_err, int client_err, - const gnutls_datum_t * serv_cert, - const gnutls_datum_t * serv_key, - const gnutls_datum_t * cli_cert, - const gnutls_datum_t * cli_key) + const gnutls_datum_t *serv_cert, + const gnutls_datum_t *serv_key, + const gnutls_datum_t *cli_cert, + const gnutls_datum_t *cli_key) { int ret; /* Server stuff. */ @@ -75,16 +75,15 @@ void try_with_key_fail(const char *name, const char *client_prio, /* Init server */ assert(gnutls_certificate_allocate_credentials(&serverx509cred) >= 0); - ret = gnutls_certificate_set_x509_key_mem(serverx509cred, - serv_cert, serv_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + serverx509cred, serv_cert, serv_key, GNUTLS_X509_FMT_PEM); if (ret < 0) fail("Could not set key/cert: %s\n", gnutls_strerror(ret)); assert(gnutls_init(&server, GNUTLS_SERVER) >= 0); if (server_priority) - assert(gnutls_priority_set_direct(server, server_priority, NULL) - >= 0); + assert(gnutls_priority_set_direct(server, server_priority, + NULL) >= 0); else assert(gnutls_priority_set_direct(server, client_prio, NULL) >= 0); @@ -102,9 +101,8 @@ void try_with_key_fail(const char *name, const char *client_prio, exit(1); if (cli_cert) { - gnutls_certificate_set_x509_key_mem(clientx509cred, - cli_cert, cli_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem( + clientx509cred, cli_cert, cli_key, GNUTLS_X509_FMT_PEM); gnutls_certificate_server_set_request(server, GNUTLS_CERT_REQUIRE); } @@ -141,11 +139,10 @@ void try_with_key_fail(const char *name, const char *client_prio, void try_with_rawpk_key_fail(const char *name, const char *client_prio, int server_err, int client_err, - const gnutls_datum_t * serv_cert, - const gnutls_datum_t * serv_key, - unsigned server_ku, - const gnutls_datum_t * cli_cert, - const gnutls_datum_t * cli_key, unsigned client_ku) + const gnutls_datum_t *serv_cert, + const gnutls_datum_t *serv_key, unsigned server_ku, + const gnutls_datum_t *cli_cert, + const gnutls_datum_t *cli_key, unsigned client_ku) { int ret; /* Server stuff. */ @@ -167,8 +164,8 @@ void try_with_rawpk_key_fail(const char *name, const char *client_prio, /* Init server */ gnutls_certificate_allocate_credentials(&server_cred); - ret = gnutls_certificate_set_rawpk_key_mem(server_cred, - serv_cert, serv_key, + ret = gnutls_certificate_set_rawpk_key_mem(server_cred, serv_cert, + serv_key, GNUTLS_X509_FMT_PEM, NULL, server_ku, NULL, 0, 0); if (ret < 0) @@ -176,8 +173,8 @@ void try_with_rawpk_key_fail(const char *name, const char *client_prio, assert(gnutls_init(&server, GNUTLS_SERVER | GNUTLS_ENABLE_RAWPK) >= 0); if (server_priority) - assert(gnutls_priority_set_direct(server, server_priority, NULL) - >= 0); + assert(gnutls_priority_set_direct(server, server_priority, + NULL) >= 0); else assert(gnutls_priority_set_direct(server, client_prio, NULL) >= 0); @@ -194,11 +191,9 @@ void try_with_rawpk_key_fail(const char *name, const char *client_prio, exit(1); if (cli_cert) { - ret = gnutls_certificate_set_rawpk_key_mem(client_cred, - cli_cert, cli_key, - GNUTLS_X509_FMT_PEM, - NULL, client_ku, - NULL, 0, 0); + ret = gnutls_certificate_set_rawpk_key_mem( + client_cred, cli_cert, cli_key, GNUTLS_X509_FMT_PEM, + NULL, client_ku, NULL, 0, 0); if (ret < 0) fail("Could not set key/cert: %s\n", gnutls_strerror(ret)); @@ -240,10 +235,10 @@ void try_with_key_ks(const char *name, const char *client_prio, gnutls_kx_algorithm_t client_kx, gnutls_sign_algorithm_t server_sign_algo, gnutls_sign_algorithm_t client_sign_algo, - const gnutls_datum_t * serv_cert, - const gnutls_datum_t * serv_key, - const gnutls_datum_t * client_cert, - const gnutls_datum_t * client_key, unsigned cert_flags, + const gnutls_datum_t *serv_cert, + const gnutls_datum_t *serv_key, + const gnutls_datum_t *client_cert, + const gnutls_datum_t *client_key, unsigned cert_flags, unsigned exp_group, gnutls_certificate_type_t server_ctype, gnutls_certificate_type_t client_ctype) { @@ -276,9 +271,8 @@ void try_with_key_ks(const char *name, const char *client_prio, // Set server crt creds based on ctype switch (server_ctype) { case GNUTLS_CRT_X509: - ret = gnutls_certificate_set_x509_key_mem(server_cred, - serv_cert, serv_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + server_cred, serv_cert, serv_key, GNUTLS_X509_FMT_PEM); break; case GNUTLS_CRT_RAWPK: ret = gnutls_certificate_set_rawpk_key_mem(server_cred, @@ -306,12 +300,13 @@ void try_with_key_ks(const char *name, const char *client_prio, 0); if (server_priority) - assert(gnutls_priority_set_direct(server, server_priority, NULL) - >= 0); - else - assert(gnutls_priority_set_direct(server, - "NORMAL:+VERS-SSL3.0:+ANON-ECDH:+ANON-DH:+ECDHE-RSA:+DHE-RSA:+RSA:+ECDHE-ECDSA:+CURVE-X25519:+SIGN-EDDSA-ED25519:+CTYPE-ALL", + assert(gnutls_priority_set_direct(server, server_priority, NULL) >= 0); + else + assert(gnutls_priority_set_direct( + server, + "NORMAL:+VERS-SSL3.0:+ANON-ECDH:+ANON-DH:+ECDHE-RSA:+DHE-RSA:+RSA:+ECDHE-ECDSA:+CURVE-X25519:+SIGN-EDDSA-ED25519:+CTYPE-ALL", + NULL) >= 0); gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); gnutls_transport_set_ptr(server, server); @@ -325,18 +320,14 @@ void try_with_key_ks(const char *name, const char *client_prio, // Set client crt creds based on ctype switch (client_ctype) { case GNUTLS_CRT_X509: - gnutls_certificate_set_x509_key_mem(client_cred, - client_cert, - client_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem( + client_cred, client_cert, client_key, + GNUTLS_X509_FMT_PEM); break; case GNUTLS_CRT_RAWPK: - gnutls_certificate_set_rawpk_key_mem(client_cred, - client_cert, - client_key, - GNUTLS_X509_FMT_PEM, - NULL, 0, NULL, 0, - 0); + gnutls_certificate_set_rawpk_key_mem( + client_cred, client_cert, client_key, + GNUTLS_X509_FMT_PEM, NULL, 0, NULL, 0, 0); break; default: fail("Illegal client certificate type given\n"); @@ -362,8 +353,8 @@ void try_with_key_ks(const char *name, const char *client_prio, assert(gnutls_anon_allocate_client_credentials(&c_anoncred) >= 0); assert(gnutls_credentials_set(client, GNUTLS_CRD_ANON, c_anoncred) >= 0); - ret = - gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, client_cred); + ret = gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, + client_cred); if (ret < 0) exit(1); @@ -381,7 +372,9 @@ void try_with_key_ks(const char *name, const char *client_prio, HANDSHAKE(client, server); if (gnutls_kx_get(client) != client_kx) { - fail("%s: got unexpected key exchange algorithm: %s (expected %s)\n", name, gnutls_kx_get_name(gnutls_kx_get(client)), gnutls_kx_get_name(client_kx)); + fail("%s: got unexpected key exchange algorithm: %s (expected %s)\n", + name, gnutls_kx_get_name(gnutls_kx_get(client)), + gnutls_kx_get_name(client_kx)); exit(1); } @@ -390,25 +383,29 @@ void try_with_key_ks(const char *name, const char *client_prio, if (version >= GNUTLS_TLS1_2) { ret = gnutls_sign_algorithm_get(server); if (ret != (int)server_sign_algo) { - fail("%s: got unexpected server signature algorithm: %d/%s\n", name, ret, gnutls_sign_get_name(ret)); + fail("%s: got unexpected server signature algorithm: %d/%s\n", + name, ret, gnutls_sign_get_name(ret)); exit(1); } ret = gnutls_sign_algorithm_get_client(server); if (ret != (int)client_sign_algo) { - fail("%s: got unexpected client signature algorithm: %d/%s\n", name, ret, gnutls_sign_get_name(ret)); + fail("%s: got unexpected client signature algorithm: %d/%s\n", + name, ret, gnutls_sign_get_name(ret)); exit(1); } ret = gnutls_sign_algorithm_get(client); if (ret != (int)server_sign_algo) { - fail("%s: cl: got unexpected server signature algorithm: %d/%s\n", name, ret, gnutls_sign_get_name(ret)); + fail("%s: cl: got unexpected server signature algorithm: %d/%s\n", + name, ret, gnutls_sign_get_name(ret)); exit(1); } ret = gnutls_sign_algorithm_get_client(client); if (ret != (int)client_sign_algo) { - fail("%s: cl: got unexpected client signature algorithm: %d/%s\n", name, ret, gnutls_sign_get_name(ret)); + fail("%s: cl: got unexpected client signature algorithm: %d/%s\n", + name, ret, gnutls_sign_get_name(ret)); exit(1); } } @@ -461,10 +458,10 @@ void dtls_try_with_key_mtu(const char *name, const char *client_prio, gnutls_kx_algorithm_t client_kx, gnutls_sign_algorithm_t server_sign_algo, gnutls_sign_algorithm_t client_sign_algo, - const gnutls_datum_t * serv_cert, - const gnutls_datum_t * serv_key, - const gnutls_datum_t * client_cert, - const gnutls_datum_t * client_key, + const gnutls_datum_t *serv_cert, + const gnutls_datum_t *serv_key, + const gnutls_datum_t *client_cert, + const gnutls_datum_t *client_key, unsigned cert_flags, unsigned smtu) { int ret; @@ -492,9 +489,8 @@ void dtls_try_with_key_mtu(const char *name, const char *client_prio, gnutls_anon_allocate_server_credentials(&s_anoncred); gnutls_certificate_allocate_credentials(&serverx509cred); - ret = gnutls_certificate_set_x509_key_mem(serverx509cred, - serv_cert, serv_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + serverx509cred, serv_cert, serv_key, GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("Could not set key/cert: %s\n", gnutls_strerror(ret)); } @@ -504,17 +500,17 @@ void dtls_try_with_key_mtu(const char *name, const char *client_prio, gnutls_certificate_set_dh_params(serverx509cred, dh_params); gnutls_anon_set_server_dh_params(s_anoncred, dh_params); - assert(gnutls_init - (&server, - GNUTLS_SERVER | GNUTLS_DATAGRAM | GNUTLS_NONBLOCK) >= 0); - assert(gnutls_credentials_set - (server, GNUTLS_CRD_CERTIFICATE, serverx509cred) >= 0); + assert(gnutls_init(&server, GNUTLS_SERVER | GNUTLS_DATAGRAM | + GNUTLS_NONBLOCK) >= 0); + assert(gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, + serverx509cred) >= 0); assert(gnutls_credentials_set(server, GNUTLS_CRD_ANON, s_anoncred) >= 0); - assert(gnutls_priority_set_direct(server, - "NORMAL:+ANON-ECDH:+ANON-DH:+ECDHE-RSA:+DHE-RSA:+RSA:+ECDHE-ECDSA:+CURVE-X25519", - NULL) >= 0); + assert(gnutls_priority_set_direct( + server, + "NORMAL:+ANON-ECDH:+ANON-DH:+ECDHE-RSA:+DHE-RSA:+RSA:+ECDHE-ECDSA:+CURVE-X25519", + NULL) >= 0); gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); gnutls_transport_set_pull_timeout_function(server, @@ -552,18 +548,16 @@ void dtls_try_with_key_mtu(const char *name, const char *client_prio, exit(1); #endif - ret = - gnutls_init(&client, - GNUTLS_CLIENT | GNUTLS_DATAGRAM | GNUTLS_NONBLOCK); + ret = gnutls_init(&client, + GNUTLS_CLIENT | GNUTLS_DATAGRAM | GNUTLS_NONBLOCK); if (ret < 0) exit(1); assert(gnutls_anon_allocate_client_credentials(&c_anoncred) >= 0); assert(gnutls_credentials_set(client, GNUTLS_CRD_ANON, c_anoncred) >= 0); - ret = - gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, - clientx509cred); + ret = gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, + clientx509cred); if (ret < 0) exit(1); @@ -584,7 +578,9 @@ void dtls_try_with_key_mtu(const char *name, const char *client_prio, HANDSHAKE_DTLS(client, server); if (gnutls_kx_get(client) != client_kx) { - fail("%s: got unexpected key exchange algorithm: %s (expected %s)\n", name, gnutls_kx_get_name(gnutls_kx_get(client)), gnutls_kx_get_name(client_kx)); + fail("%s: got unexpected key exchange algorithm: %s (expected %s)\n", + name, gnutls_kx_get_name(gnutls_kx_get(client)), + gnutls_kx_get_name(client_kx)); exit(1); } @@ -593,25 +589,29 @@ void dtls_try_with_key_mtu(const char *name, const char *client_prio, if (version >= GNUTLS_DTLS1_2) { ret = gnutls_sign_algorithm_get(server); if (ret != (int)server_sign_algo) { - fail("%s: got unexpected server signature algorithm: %d/%s\n", name, ret, gnutls_sign_get_name(ret)); + fail("%s: got unexpected server signature algorithm: %d/%s\n", + name, ret, gnutls_sign_get_name(ret)); exit(1); } ret = gnutls_sign_algorithm_get_client(server); if (ret != (int)client_sign_algo) { - fail("%s: got unexpected client signature algorithm: %d/%s\n", name, ret, gnutls_sign_get_name(ret)); + fail("%s: got unexpected client signature algorithm: %d/%s\n", + name, ret, gnutls_sign_get_name(ret)); exit(1); } ret = gnutls_sign_algorithm_get(client); if (ret != (int)server_sign_algo) { - fail("%s: cl: got unexpected server signature algorithm: %d/%s\n", name, ret, gnutls_sign_get_name(ret)); + fail("%s: cl: got unexpected server signature algorithm: %d/%s\n", + name, ret, gnutls_sign_get_name(ret)); exit(1); } ret = gnutls_sign_algorithm_get_client(client); if (ret != (int)client_sign_algo) { - fail("%s: cl: got unexpected client signature algorithm: %d/%s\n", name, ret, gnutls_sign_get_name(ret)); + fail("%s: cl: got unexpected client signature algorithm: %d/%s\n", + name, ret, gnutls_sign_get_name(ret)); exit(1); } } diff --git a/tests/common-cert-key-exchange.h b/tests/common-cert-key-exchange.h index 819ce39d38..18508e3965 100644 --- a/tests/common-cert-key-exchange.h +++ b/tests/common-cert-key-exchange.h @@ -20,70 +20,81 @@ */ #ifndef GNUTLS_TESTS_COMMON_CERT_KEY_EXCHANGE_H -# define GNUTLS_TESTS_COMMON_CERT_KEY_EXCHANGE_H +#define GNUTLS_TESTS_COMMON_CERT_KEY_EXCHANGE_H -# ifdef HAVE_CONFIG_H -# include -# endif +#ifdef HAVE_CONFIG_H +#include +#endif -# include +#include -# define USE_CERT 1 -# define ASK_CERT 2 +#define USE_CERT 1 +#define ASK_CERT 2 extern const char *server_priority; -# define try_x509(name, client_prio, client_kx, server_sign_algo, client_sign_algo) \ - try_with_key(name, client_prio, client_kx, server_sign_algo, client_sign_algo, \ - &server_ca3_localhost_cert, &server_ca3_key, NULL, NULL, 0, GNUTLS_CRT_X509, GNUTLS_CRT_UNKNOWN) - -# define try_rawpk(name, client_prio, client_kx, server_sign_algo, client_sign_algo) \ - try_with_key(name, client_prio, client_kx, server_sign_algo, client_sign_algo, \ - &rawpk_public_key1, &rawpk_private_key1, NULL, NULL, 0, GNUTLS_CRT_RAWPK, GNUTLS_CRT_UNKNOWN) - -# define try_x509_ks(name, client_prio, client_kx, group) \ - try_with_key_ks(name, client_prio, client_kx, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, GNUTLS_SIGN_UNKNOWN, \ - &server_ca3_localhost_cert, &server_ca3_key, NULL, NULL, 0, group, GNUTLS_CRT_X509, GNUTLS_CRT_UNKNOWN) - -# define try_x509_cli(name, client_prio, client_kx, server_sign_algo, client_sign_algo, client_cert) \ - try_with_key(name, client_prio, client_kx, server_sign_algo, client_sign_algo, \ - &server_ca3_localhost_cert, &server_ca3_key, &cli_ca3_cert, &cli_ca3_key, client_cert, GNUTLS_CRT_X509, GNUTLS_CRT_X509) - -# define try_rawpk_cli(name, client_prio, client_kx, server_sign_algo, client_sign_algo, client_cert) \ - try_with_key(name, client_prio, client_kx, server_sign_algo, client_sign_algo, \ - &rawpk_public_key1, &rawpk_private_key1, &rawpk_public_key2, &rawpk_private_key2, client_cert, GNUTLS_CRT_RAWPK, GNUTLS_CRT_RAWPK) +#define try_x509(name, client_prio, client_kx, server_sign_algo, \ + client_sign_algo) \ + try_with_key(name, client_prio, client_kx, server_sign_algo, \ + client_sign_algo, &server_ca3_localhost_cert, \ + &server_ca3_key, NULL, NULL, 0, GNUTLS_CRT_X509, \ + GNUTLS_CRT_UNKNOWN) + +#define try_rawpk(name, client_prio, client_kx, server_sign_algo, \ + client_sign_algo) \ + try_with_key(name, client_prio, client_kx, server_sign_algo, \ + client_sign_algo, &rawpk_public_key1, \ + &rawpk_private_key1, NULL, NULL, 0, GNUTLS_CRT_RAWPK, \ + GNUTLS_CRT_UNKNOWN) + +#define try_x509_ks(name, client_prio, client_kx, group) \ + try_with_key_ks(name, client_prio, client_kx, \ + GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, GNUTLS_SIGN_UNKNOWN, \ + &server_ca3_localhost_cert, &server_ca3_key, NULL, \ + NULL, 0, group, GNUTLS_CRT_X509, GNUTLS_CRT_UNKNOWN) + +#define try_x509_cli(name, client_prio, client_kx, server_sign_algo, \ + client_sign_algo, client_cert) \ + try_with_key(name, client_prio, client_kx, server_sign_algo, \ + client_sign_algo, &server_ca3_localhost_cert, \ + &server_ca3_key, &cli_ca3_cert, &cli_ca3_key, \ + client_cert, GNUTLS_CRT_X509, GNUTLS_CRT_X509) + +#define try_rawpk_cli(name, client_prio, client_kx, server_sign_algo, \ + client_sign_algo, client_cert) \ + try_with_key(name, client_prio, client_kx, server_sign_algo, \ + client_sign_algo, &rawpk_public_key1, \ + &rawpk_private_key1, &rawpk_public_key2, \ + &rawpk_private_key2, client_cert, GNUTLS_CRT_RAWPK, \ + GNUTLS_CRT_RAWPK) void try_with_rawpk_key_fail(const char *name, const char *client_prio, int server_err, int client_err, - const gnutls_datum_t * serv_cert, - const gnutls_datum_t * serv_key, - unsigned server_ku, - const gnutls_datum_t * cli_cert, - const gnutls_datum_t * cli_key, - unsigned client_ku); + const gnutls_datum_t *serv_cert, + const gnutls_datum_t *serv_key, unsigned server_ku, + const gnutls_datum_t *cli_cert, + const gnutls_datum_t *cli_key, unsigned client_ku); void try_with_key_ks(const char *name, const char *client_prio, gnutls_kx_algorithm_t client_kx, gnutls_sign_algorithm_t server_sign_algo, gnutls_sign_algorithm_t client_sign_algo, - const gnutls_datum_t * serv_cert, - const gnutls_datum_t * serv_key, - const gnutls_datum_t * cli_cert, - const gnutls_datum_t * cli_key, unsigned client_cert, + const gnutls_datum_t *serv_cert, + const gnutls_datum_t *serv_key, + const gnutls_datum_t *cli_cert, + const gnutls_datum_t *cli_key, unsigned client_cert, unsigned exp_group, gnutls_certificate_type_t server_ctype, gnutls_certificate_type_t client_ctype); -inline static -void try_with_key(const char *name, const char *client_prio, - gnutls_kx_algorithm_t client_kx, - gnutls_sign_algorithm_t server_sign_algo, - gnutls_sign_algorithm_t client_sign_algo, - const gnutls_datum_t * serv_cert, - const gnutls_datum_t * serv_key, - const gnutls_datum_t * cli_cert, - const gnutls_datum_t * cli_key, unsigned client_cert, - gnutls_certificate_type_t server_ctype, - gnutls_certificate_type_t client_ctype) +inline static void +try_with_key(const char *name, const char *client_prio, + gnutls_kx_algorithm_t client_kx, + gnutls_sign_algorithm_t server_sign_algo, + gnutls_sign_algorithm_t client_sign_algo, + const gnutls_datum_t *serv_cert, const gnutls_datum_t *serv_key, + const gnutls_datum_t *cli_cert, const gnutls_datum_t *cli_key, + unsigned client_cert, gnutls_certificate_type_t server_ctype, + gnutls_certificate_type_t client_ctype) { return try_with_key_ks(name, client_prio, client_kx, server_sign_algo, client_sign_algo, serv_cert, serv_key, cli_cert, @@ -93,30 +104,39 @@ void try_with_key(const char *name, const char *client_prio, void try_with_key_fail(const char *name, const char *client_prio, int server_err, int client_err, - const gnutls_datum_t * serv_cert, - const gnutls_datum_t * serv_key, - const gnutls_datum_t * cli_cert, - const gnutls_datum_t * cli_key); - -# define dtls_try(name, client_prio, client_kx, server_sign_algo, client_sign_algo) \ - dtls_try_with_key(name, client_prio, client_kx, server_sign_algo, client_sign_algo, \ - &server_ca3_localhost_cert, &server_ca3_key, NULL, NULL, 0) - -# define dtls_try_cli(name, client_prio, client_kx, server_sign_algo, client_sign_algo, client_cert) \ - dtls_try_with_key(name, client_prio, client_kx, server_sign_algo, client_sign_algo, \ - &server_ca3_localhost_cert, &server_ca3_key, &cli_ca3_cert, &cli_ca3_key, client_cert) - -# define dtls_try_with_key(name, client_prio, client_kx, server_sign_algo, client_sign_algo, serv_cert, serv_key, cli_cert, cli_key, client_cert) \ - dtls_try_with_key_mtu(name, client_prio, client_kx, server_sign_algo, client_sign_algo, serv_cert, serv_key, cli_cert, cli_key, client_cert, 0) + const gnutls_datum_t *serv_cert, + const gnutls_datum_t *serv_key, + const gnutls_datum_t *cli_cert, + const gnutls_datum_t *cli_key); + +#define dtls_try(name, client_prio, client_kx, server_sign_algo, \ + client_sign_algo) \ + dtls_try_with_key(name, client_prio, client_kx, server_sign_algo, \ + client_sign_algo, &server_ca3_localhost_cert, \ + &server_ca3_key, NULL, NULL, 0) + +#define dtls_try_cli(name, client_prio, client_kx, server_sign_algo, \ + client_sign_algo, client_cert) \ + dtls_try_with_key(name, client_prio, client_kx, server_sign_algo, \ + client_sign_algo, &server_ca3_localhost_cert, \ + &server_ca3_key, &cli_ca3_cert, &cli_ca3_key, \ + client_cert) + +#define dtls_try_with_key(name, client_prio, client_kx, server_sign_algo, \ + client_sign_algo, serv_cert, serv_key, cli_cert, \ + cli_key, client_cert) \ + dtls_try_with_key_mtu(name, client_prio, client_kx, server_sign_algo, \ + client_sign_algo, serv_cert, serv_key, cli_cert, \ + cli_key, client_cert, 0) void dtls_try_with_key_mtu(const char *name, const char *client_prio, gnutls_kx_algorithm_t client_kx, gnutls_sign_algorithm_t server_sign_algo, gnutls_sign_algorithm_t client_sign_algo, - const gnutls_datum_t * serv_cert, - const gnutls_datum_t * serv_key, - const gnutls_datum_t * cli_cert, - const gnutls_datum_t * cli_key, unsigned client_cert, + const gnutls_datum_t *serv_cert, + const gnutls_datum_t *serv_key, + const gnutls_datum_t *cli_cert, + const gnutls_datum_t *cli_key, unsigned client_cert, unsigned mtu); -#endif /* GNUTLS_TESTS_COMMON_CERT_KEY_EXCHANGE_H */ +#endif /* GNUTLS_TESTS_COMMON_CERT_KEY_EXCHANGE_H */ diff --git a/tests/common-key-tests.h b/tests/common-key-tests.h index 6da9ea66bd..b36177bce5 100644 --- a/tests/common-key-tests.h +++ b/tests/common-key-tests.h @@ -20,11 +20,11 @@ */ #ifndef GNUTLS_TESTS_COMMON_KEY_TESTS_H -# define GNUTLS_TESTS_COMMON_KEY_TESTS_H +#define GNUTLS_TESTS_COMMON_KEY_TESTS_H -# include "cert-common.h" +#include "cert-common.h" -# include +#include struct _key_tests_st { const char *name; @@ -37,60 +37,54 @@ struct _key_tests_st { unsigned sign_flags; }; -static const -struct _key_tests_st common_key_tests[] = { - { - .name = "rsa key", - .cert = {(void *)cli_ca3_cert_pem, sizeof(cli_ca3_cert_pem) - 1}, - .key = {(void *)cli_ca3_key_pem, sizeof(cli_ca3_key_pem) - 1}, - .pk = GNUTLS_PK_RSA, - .digest = GNUTLS_DIG_SHA256, - .sigalgo = GNUTLS_SIGN_RSA_SHA256}, - { - .name = "dsa key", - .key = {(void *)clidsa_ca3_key_pem, sizeof(clidsa_ca3_key_pem) - 1}, - .cert = {(void *)clidsa_ca3_cert_pem, sizeof(clidsa_ca3_cert_pem) - 1}, - .pk = GNUTLS_PK_DSA, - .digest = GNUTLS_DIG_SHA1, - .sigalgo = GNUTLS_SIGN_DSA_SHA1}, - { - .name = "ecdsa key", - .key = - {(void *)server_ca3_ecc_key_pem, sizeof(server_ca3_ecc_key_pem) - 1}, - .cert = {(void *)server_localhost_ca3_ecc_cert_pem, - sizeof(server_localhost_ca3_ecc_cert_pem) - 1}, - .pk = GNUTLS_PK_ECDSA, - .digest = GNUTLS_DIG_SHA256, - .sigalgo = GNUTLS_SIGN_ECDSA_SHA256}, - { - .name = "ecdsa key", - .key = - {(void *)server_ca3_ecc_key_pem, sizeof(server_ca3_ecc_key_pem) - 1}, - .cert = {(void *)server_localhost_ca3_ecc_cert_pem, - sizeof(server_localhost_ca3_ecc_cert_pem) - 1}, - .pk = GNUTLS_PK_ECDSA, - .digest = GNUTLS_DIG_SHA256, - .sigalgo = GNUTLS_SIGN_ECDSA_SECP256R1_SHA256}, - { - .name = "rsa pss key", - .key = {(void *)server_ca3_rsa_pss_key_pem, - sizeof(server_ca3_rsa_pss_key_pem) - 1}, - .cert = {(void *)server_ca3_rsa_pss_cert_pem, - sizeof(server_ca3_rsa_pss_cert_pem) - 1}, - .pk = GNUTLS_PK_RSA_PSS, - .digest = GNUTLS_DIG_SHA256, - .sign_flags = GNUTLS_PRIVKEY_SIGN_FLAG_RSA_PSS, - .sigalgo = GNUTLS_SIGN_RSA_PSS_SHA256}, - { - .name = "eddsa key", - .key = {(void *)server_ca3_eddsa_key_pem, - sizeof(server_ca3_eddsa_key_pem) - 1}, - .cert = {(void *)server_ca3_eddsa_cert_pem, - sizeof(server_ca3_eddsa_cert_pem) - 1}, - .pk = GNUTLS_PK_EDDSA_ED25519, - .digest = GNUTLS_DIG_SHA512, - .sigalgo = GNUTLS_SIGN_EDDSA_ED25519, - .data_only = 1} +static const struct _key_tests_st common_key_tests[] = { + { .name = "rsa key", + .cert = { (void *)cli_ca3_cert_pem, sizeof(cli_ca3_cert_pem) - 1 }, + .key = { (void *)cli_ca3_key_pem, sizeof(cli_ca3_key_pem) - 1 }, + .pk = GNUTLS_PK_RSA, + .digest = GNUTLS_DIG_SHA256, + .sigalgo = GNUTLS_SIGN_RSA_SHA256 }, + { .name = "dsa key", + .key = { (void *)clidsa_ca3_key_pem, sizeof(clidsa_ca3_key_pem) - 1 }, + .cert = { (void *)clidsa_ca3_cert_pem, + sizeof(clidsa_ca3_cert_pem) - 1 }, + .pk = GNUTLS_PK_DSA, + .digest = GNUTLS_DIG_SHA1, + .sigalgo = GNUTLS_SIGN_DSA_SHA1 }, + { .name = "ecdsa key", + .key = { (void *)server_ca3_ecc_key_pem, + sizeof(server_ca3_ecc_key_pem) - 1 }, + .cert = { (void *)server_localhost_ca3_ecc_cert_pem, + sizeof(server_localhost_ca3_ecc_cert_pem) - 1 }, + .pk = GNUTLS_PK_ECDSA, + .digest = GNUTLS_DIG_SHA256, + .sigalgo = GNUTLS_SIGN_ECDSA_SHA256 }, + { .name = "ecdsa key", + .key = { (void *)server_ca3_ecc_key_pem, + sizeof(server_ca3_ecc_key_pem) - 1 }, + .cert = { (void *)server_localhost_ca3_ecc_cert_pem, + sizeof(server_localhost_ca3_ecc_cert_pem) - 1 }, + .pk = GNUTLS_PK_ECDSA, + .digest = GNUTLS_DIG_SHA256, + .sigalgo = GNUTLS_SIGN_ECDSA_SECP256R1_SHA256 }, + { .name = "rsa pss key", + .key = { (void *)server_ca3_rsa_pss_key_pem, + sizeof(server_ca3_rsa_pss_key_pem) - 1 }, + .cert = { (void *)server_ca3_rsa_pss_cert_pem, + sizeof(server_ca3_rsa_pss_cert_pem) - 1 }, + .pk = GNUTLS_PK_RSA_PSS, + .digest = GNUTLS_DIG_SHA256, + .sign_flags = GNUTLS_PRIVKEY_SIGN_FLAG_RSA_PSS, + .sigalgo = GNUTLS_SIGN_RSA_PSS_SHA256 }, + { .name = "eddsa key", + .key = { (void *)server_ca3_eddsa_key_pem, + sizeof(server_ca3_eddsa_key_pem) - 1 }, + .cert = { (void *)server_ca3_eddsa_cert_pem, + sizeof(server_ca3_eddsa_cert_pem) - 1 }, + .pk = GNUTLS_PK_EDDSA_ED25519, + .digest = GNUTLS_DIG_SHA512, + .sigalgo = GNUTLS_SIGN_EDDSA_ED25519, + .data_only = 1 } }; -#endif /* GNUTLS_TESTS_COMMON_KEY_TESTS_H */ +#endif /* GNUTLS_TESTS_COMMON_KEY_TESTS_H */ diff --git a/tests/conv-utf8.c b/tests/conv-utf8.c index bee84fea89..9edae83b16 100644 --- a/tests/conv-utf8.c +++ b/tests/conv-utf8.c @@ -33,11 +33,11 @@ #include -int _gnutls_utf8_to_ucs2(const void *data, size_t size, - gnutls_datum_t * output, unsigned be); +int _gnutls_utf8_to_ucs2(const void *data, size_t size, gnutls_datum_t *output, + unsigned be); -int _gnutls_ucs2_to_utf8(const void *data, size_t size, - gnutls_datum_t * output, unsigned be); +int _gnutls_ucs2_to_utf8(const void *data, size_t size, gnutls_datum_t *output, + unsigned be); #define DEBUG @@ -52,65 +52,75 @@ static void PRINT(const char *str, unsigned char *val, unsigned int size) printf("\n"); } #else -# define PRINT(x, y, x) +#define PRINT(x, y, x) #endif -#define UTF8_MATCH(fname, utf8, utf16) \ -static void fname(void **glob_state) \ -{ \ - gnutls_datum_t out; \ - int ret = _gnutls_utf8_to_ucs2(utf8, strlen(utf8), &out, 1); \ - assert_int_equal(ret, 0); \ - if (out.size != sizeof(utf16)-1 || memcmp(utf16, out.data, out.size) != 0) { PRINT("got: ", out.data, out.size); \ - PRINT("expected: ", (unsigned char*)utf16, sizeof(utf16)-1); } \ - assert_int_equal(out.size, sizeof(utf16)-1); \ - assert_memory_equal(utf16, out.data, out.size); \ - gnutls_free(out.data); \ -} +#define UTF8_MATCH(fname, utf8, utf16) \ + static void fname(void **glob_state) \ + { \ + gnutls_datum_t out; \ + int ret = _gnutls_utf8_to_ucs2(utf8, strlen(utf8), &out, 1); \ + assert_int_equal(ret, 0); \ + if (out.size != sizeof(utf16) - 1 || \ + memcmp(utf16, out.data, out.size) != 0) { \ + PRINT("got: ", out.data, out.size); \ + PRINT("expected: ", (unsigned char *)utf16, \ + sizeof(utf16) - 1); \ + } \ + assert_int_equal(out.size, sizeof(utf16) - 1); \ + assert_memory_equal(utf16, out.data, out.size); \ + gnutls_free(out.data); \ + } -#define UTF16_MATCH(fname, utf8, utf16) \ -static void fname(void **glob_state) \ -{ \ - gnutls_datum_t out; \ - int ret = _gnutls_ucs2_to_utf8(utf16, sizeof(utf16)-1, &out, 1); \ - assert_int_equal(ret, 0); \ - if (out.size != strlen(utf8) || memcmp(utf8, out.data, out.size) != 0) { PRINT("got: ", out.data, out.size); \ - PRINT("expected: ", (unsigned char*)utf8, strlen(utf8)); } \ - assert_int_equal(out.size, strlen(utf8)); \ - assert_memory_equal(utf8, out.data, out.size); \ - gnutls_free(out.data); \ -} +#define UTF16_MATCH(fname, utf8, utf16) \ + static void fname(void **glob_state) \ + { \ + gnutls_datum_t out; \ + int ret = _gnutls_ucs2_to_utf8(utf16, sizeof(utf16) - 1, &out, \ + 1); \ + assert_int_equal(ret, 0); \ + if (out.size != strlen(utf8) || \ + memcmp(utf8, out.data, out.size) != 0) { \ + PRINT("got: ", out.data, out.size); \ + PRINT("expected: ", (unsigned char *)utf8, \ + strlen(utf8)); \ + } \ + assert_int_equal(out.size, strlen(utf8)); \ + assert_memory_equal(utf8, out.data, out.size); \ + gnutls_free(out.data); \ + } -#define UTF8_FAIL(fname, utf8, utf8_size) \ -static void fname(void **glob_state) \ -{ \ - gnutls_datum_t out; \ - int ret = _gnutls_utf8_to_ucs2(utf8, utf8_size, &out, 1); \ - assert_int_not_equal(ret, 0); \ -} +#define UTF8_FAIL(fname, utf8, utf8_size) \ + static void fname(void **glob_state) \ + { \ + gnutls_datum_t out; \ + int ret = _gnutls_utf8_to_ucs2(utf8, utf8_size, &out, 1); \ + assert_int_not_equal(ret, 0); \ + } -#define UTF16_FAIL(fname, utf16, utf16_size) \ -static void fname(void **glob_state) \ -{ \ - gnutls_datum_t out; \ - int ret = _gnutls_ucs2_to_utf8(utf16, utf16_size, &out, 1); \ - assert_int_not_equal(ret, 0); \ -} +#define UTF16_FAIL(fname, utf16, utf16_size) \ + static void fname(void **glob_state) \ + { \ + gnutls_datum_t out; \ + int ret = _gnutls_ucs2_to_utf8(utf16, utf16_size, &out, 1); \ + assert_int_not_equal(ret, 0); \ + } UTF8_MATCH(check_utf8_ok1, "abcd", "\x00\x61\x00\x62\x00\x63\x00\x64"); UTF8_MATCH(check_utf8_ok2, "ユーザー別サイト", "\x30\xE6\x30\xFC\x30\xB6\x30\xFC\x52\x25\x30\xB5\x30\xA4\x30\xC8"); UTF8_MATCH(check_utf8_ok3, "简体中文", "\x7B\x80\x4F\x53\x4E\x2D\x65\x87"); -UTF8_MATCH(check_utf8_ok4, "Σὲ γνωρίζω ἀπὸ", - "\x03\xA3\x1F\x72\x00\x20\x03\xB3\x03\xBD\x03\xC9\x03\xC1\x03\xAF\x03\xB6\x03\xC9\x00\x20\x1F\x00\x03\xC0\x1F\x78"); +UTF8_MATCH( + check_utf8_ok4, "Σὲ γνωρίζω ἀπὸ", + "\x03\xA3\x1F\x72\x00\x20\x03\xB3\x03\xBD\x03\xC9\x03\xC1\x03\xAF\x03\xB6\x03\xC9\x00\x20\x1F\x00\x03\xC0\x1F\x78"); UTF16_MATCH(check_utf16_ok1, "abcd", "\x00\x61\x00\x62\x00\x63\x00\x64"); UTF16_MATCH(check_utf16_ok2, "ユーザー別サイト", "\x30\xE6\x30\xFC\x30\xB6\x30\xFC\x52\x25\x30\xB5\x30\xA4\x30\xC8"); -UTF16_MATCH(check_utf16_ok3, "简体中文", - "\x7B\x80\x4F\x53\x4E\x2D\x65\x87"); -UTF16_MATCH(check_utf16_ok4, "Σὲ γνωρίζω ἀπὸ", - "\x03\xA3\x1F\x72\x00\x20\x03\xB3\x03\xBD\x03\xC9\x03\xC1\x03\xAF\x03\xB6\x03\xC9\x00\x20\x1F\x00\x03\xC0\x1F\x78"); +UTF16_MATCH(check_utf16_ok3, "简体中文", "\x7B\x80\x4F\x53\x4E\x2D\x65\x87"); +UTF16_MATCH( + check_utf16_ok4, "Σὲ γνωρίζω ἀπὸ", + "\x03\xA3\x1F\x72\x00\x20\x03\xB3\x03\xBD\x03\xC9\x03\xC1\x03\xAF\x03\xB6\x03\xC9\x00\x20\x1F\x00\x03\xC0\x1F\x78"); UTF8_FAIL(check_utf8_fail1, "\xfe\xff\xaa\x80\xff", 5); UTF8_FAIL(check_utf8_fail2, "\x64\x00\x62\xf3\x64\x65", 6); @@ -118,18 +128,16 @@ UTF16_FAIL(check_utf16_fail1, "\xd8\x00\xdb\xff\x00\x63\x00\x04", 8); int main(void) { - const struct CMUnitTest tests[] = { - cmocka_unit_test(check_utf8_fail1), - cmocka_unit_test(check_utf8_fail2), - cmocka_unit_test(check_utf16_fail1), - cmocka_unit_test(check_utf8_ok1), - cmocka_unit_test(check_utf8_ok2), - cmocka_unit_test(check_utf8_ok3), - cmocka_unit_test(check_utf8_ok4), - cmocka_unit_test(check_utf16_ok1), - cmocka_unit_test(check_utf16_ok2), - cmocka_unit_test(check_utf16_ok3), - cmocka_unit_test(check_utf16_ok4) - }; + const struct CMUnitTest tests[] = { cmocka_unit_test(check_utf8_fail1), + cmocka_unit_test(check_utf8_fail2), + cmocka_unit_test(check_utf16_fail1), + cmocka_unit_test(check_utf8_ok1), + cmocka_unit_test(check_utf8_ok2), + cmocka_unit_test(check_utf8_ok3), + cmocka_unit_test(check_utf8_ok4), + cmocka_unit_test(check_utf16_ok1), + cmocka_unit_test(check_utf16_ok2), + cmocka_unit_test(check_utf16_ok3), + cmocka_unit_test(check_utf16_ok4) }; return cmocka_run_group_tests(tests, NULL, NULL); } diff --git a/tests/crl-basic.c b/tests/crl-basic.c index 1369dbebdb..3002411d83 100644 --- a/tests/crl-basic.c +++ b/tests/crl-basic.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,51 +33,54 @@ #include "utils.h" static const char simple1[] = -/* CRL */ - "-----BEGIN X509 CRL-----\n" - "MIIBmjCBgwIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0wGA8yMDE0\n" - "MDkxMzA5MDUyM1oYDzIwMTUwOTEzMDkwNTIzWjAAoDowODAfBgNVHSMEGDAWgBTx\n" - "Fcb1FYLbhH9yuqg4wlVJUZnYKTAVBgNVHRQEDgIMVBQI0zeJoFHkLaWNMA0GCSqG\n" - "SIb3DQEBCwUAA4IBAQB6SGYePy1MBmtELyWdnlJHlQ4bBgb4vjuLDSfH0X6b4dAS\n" - "MEZws8iA5SaJFIioIP41s3lfQ1Am7GjSoNccHdrLmEcUSTQLwLYaDL8SgxekP5Au\n" - "w8HTu1cz/mnjBBDURq1RvyGNFm6MXf1Rg/bHSea/EpDkn8KY152BT1/46iQ+Uho6\n" - "hz6UUWsTB4Lj25X8F2hlKwQcb3E63Or2XEPBw4rhaCDFAtSZeBaGUUSJ8CLUKXZf\n" - "5b45MjiZ/osgd81tfn3wdQVjDnaQwNtjeRbK+qU0Z4pIKBvHzRS/fZKwTnrK1DLI\n" - "yY/nqBJT/+Q5zdUx5FXp0bwyZuarJ1GHqcES3Rz1\n" "-----END X509 CRL-----\n"; + /* CRL */ + "-----BEGIN X509 CRL-----\n" + "MIIBmjCBgwIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0wGA8yMDE0\n" + "MDkxMzA5MDUyM1oYDzIwMTUwOTEzMDkwNTIzWjAAoDowODAfBgNVHSMEGDAWgBTx\n" + "Fcb1FYLbhH9yuqg4wlVJUZnYKTAVBgNVHRQEDgIMVBQI0zeJoFHkLaWNMA0GCSqG\n" + "SIb3DQEBCwUAA4IBAQB6SGYePy1MBmtELyWdnlJHlQ4bBgb4vjuLDSfH0X6b4dAS\n" + "MEZws8iA5SaJFIioIP41s3lfQ1Am7GjSoNccHdrLmEcUSTQLwLYaDL8SgxekP5Au\n" + "w8HTu1cz/mnjBBDURq1RvyGNFm6MXf1Rg/bHSea/EpDkn8KY152BT1/46iQ+Uho6\n" + "hz6UUWsTB4Lj25X8F2hlKwQcb3E63Or2XEPBw4rhaCDFAtSZeBaGUUSJ8CLUKXZf\n" + "5b45MjiZ/osgd81tfn3wdQVjDnaQwNtjeRbK+qU0Z4pIKBvHzRS/fZKwTnrK1DLI\n" + "yY/nqBJT/+Q5zdUx5FXp0bwyZuarJ1GHqcES3Rz1\n" + "-----END X509 CRL-----\n"; static const char simple1_constraints[] = -/* CRL */ - "-----BEGIN X509 CRL-----\n" - "MIIBmjCBgwIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0wGA8yMDE0\n" - "MDkxMzA4NTkxNloYDzIwMTUwOTEzMDg1OTE2WjAAoDowODAfBgNVHSMEGDAWgBTn\n" - "sISO6h9leKTKtOh/HG0jV03AMzAVBgNVHRQEDgIMVBQHZC2mj6EAgMPSMA0GCSqG\n" - "SIb3DQEBCwUAA4IBAQBHUgtxpOn8EHwlajVYoOh6DFCwIoxBIeUA4518W1cHoV7J\n" - "KMif6lmJRodrcbienDX781QcOaQcNnuu/oBEcoBdbZa0VICzXekIteSwEgGsbRve\n" - "QQFPnZn83I4btse1ly5fdxMsliSM+qRwIyNR18VHXZz9GWYrr4tYWnI2b9XrDnaC\n" - "1b3Ywt7I9pNi0/O0C0rE/37/VvPx6HghnC+un7LtT0Y0n+FQP7dhlMvzHaR8wVxs\n" - "WAzaNvSiJ1rVPzL21iCmQJsRQeDTSJBlzm0lWiU8Nys3ugM2KlERezfp8DkFGA3y\n" - "9Yzpq6gAi39ZK+LjopgGDkrQjxzBIaoe2bcDqB7X\n" "-----END X509 CRL-----\n"; + /* CRL */ + "-----BEGIN X509 CRL-----\n" + "MIIBmjCBgwIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0wGA8yMDE0\n" + "MDkxMzA4NTkxNloYDzIwMTUwOTEzMDg1OTE2WjAAoDowODAfBgNVHSMEGDAWgBTn\n" + "sISO6h9leKTKtOh/HG0jV03AMzAVBgNVHRQEDgIMVBQHZC2mj6EAgMPSMA0GCSqG\n" + "SIb3DQEBCwUAA4IBAQBHUgtxpOn8EHwlajVYoOh6DFCwIoxBIeUA4518W1cHoV7J\n" + "KMif6lmJRodrcbienDX781QcOaQcNnuu/oBEcoBdbZa0VICzXekIteSwEgGsbRve\n" + "QQFPnZn83I4btse1ly5fdxMsliSM+qRwIyNR18VHXZz9GWYrr4tYWnI2b9XrDnaC\n" + "1b3Ywt7I9pNi0/O0C0rE/37/VvPx6HghnC+un7LtT0Y0n+FQP7dhlMvzHaR8wVxs\n" + "WAzaNvSiJ1rVPzL21iCmQJsRQeDTSJBlzm0lWiU8Nys3ugM2KlERezfp8DkFGA3y\n" + "9Yzpq6gAi39ZK+LjopgGDkrQjxzBIaoe2bcDqB7X\n" + "-----END X509 CRL-----\n"; static const char crl_dsa[] = - "-----BEGIN X509 CRL-----\n" - "MIGmMGUwCwYHKoZIzjgEAwUAMDgxCzAJBgNVBAYTAnVzMQwwCgYDVQQKEwNzdW4x\n" - "DDAKBgNVBAsTA2plczENMAsGA1UEAxMEZ3JlZxcNMDUwNTE3MTk1OTQwWhcNMDYw\n" - "NTE3MTk1OTQwWjALBgcqhkjOOAQDBQADMAAwLQIUBBFLGYjUCVrRTGf3GTR6SGs/\n" - "accCFQCUhnSmr+CXCWKq8DtydVwH9FLsRA==\n" "-----END X509 CRL-----\n"; + "-----BEGIN X509 CRL-----\n" + "MIGmMGUwCwYHKoZIzjgEAwUAMDgxCzAJBgNVBAYTAnVzMQwwCgYDVQQKEwNzdW4x\n" + "DDAKBgNVBAsTA2plczENMAsGA1UEAxMEZ3JlZxcNMDUwNTE3MTk1OTQwWhcNMDYw\n" + "NTE3MTk1OTQwWjALBgcqhkjOOAQDBQADMAAwLQIUBBFLGYjUCVrRTGf3GTR6SGs/\n" + "accCFQCUhnSmr+CXCWKq8DtydVwH9FLsRA==\n" + "-----END X509 CRL-----\n"; static const char crl_rsa_sha1[] = - "-----BEGIN X509 CRL-----\n" - "MIIB2zCBxAIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJOTjExMC8GA1UE\n" - "CgwoRWRlbCBDdXJsIEFyY3RpYyBJbGx1ZGl1bSBSZXNlYXJjaCBDbG91ZDElMCMG\n" - "A1UEAwwcTm90aGVybiBOb3doZXJlIFRydXN0IEFuY2hvchcNMTAwNTI3MjEzNzEx\n" - "WhcNMTAwNjI2MjEzNzExWjAZMBcCBguYlPl8ahcNMTAwNTI3MjEzNzExWqAOMAww\n" - "CgYDVR0UBAMCAQEwDQYJKoZIhvcNAQEFBQADggEBAFuPZJ/cNNCeAzkSxVvPPPRX\n" - "Wsv9T6Dt61C5Fmq9eSNN2kRf7/dq5A5nqTIlHbXXiLdj3UqNhUHXe2oA1UpbdHz9\n" - "0JlfwWm1Y/gMr1fh1n0oFebEtCuOgDRpd07Uiz8AqOUBykDNDUlMvVwR9raHL8hj\n" - "NRwzugsfIxl0CvLLqrBpUWMxW3qemk4cWW39yrDdZgKo6eOZAOR3FQYlLIrw6Jcr\n" - "Kmm0PjdcJIfRgJvNysgyx1dIIKe7QXvFTR/QzdHWIWTkiYIW7wUKSzSICvDCr094\n" - "eo3nr3n9BtOqT61Z1m6FGCP6Mm0wFl6xLTCNd6ygfFo7pcAdWlUsdBgKzics0Kc=\n" - "-----END X509 CRL-----\n"; + "-----BEGIN X509 CRL-----\n" + "MIIB2zCBxAIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJOTjExMC8GA1UE\n" + "CgwoRWRlbCBDdXJsIEFyY3RpYyBJbGx1ZGl1bSBSZXNlYXJjaCBDbG91ZDElMCMG\n" + "A1UEAwwcTm90aGVybiBOb3doZXJlIFRydXN0IEFuY2hvchcNMTAwNTI3MjEzNzEx\n" + "WhcNMTAwNjI2MjEzNzExWjAZMBcCBguYlPl8ahcNMTAwNTI3MjEzNzExWqAOMAww\n" + "CgYDVR0UBAMCAQEwDQYJKoZIhvcNAQEFBQADggEBAFuPZJ/cNNCeAzkSxVvPPPRX\n" + "Wsv9T6Dt61C5Fmq9eSNN2kRf7/dq5A5nqTIlHbXXiLdj3UqNhUHXe2oA1UpbdHz9\n" + "0JlfwWm1Y/gMr1fh1n0oFebEtCuOgDRpd07Uiz8AqOUBykDNDUlMvVwR9raHL8hj\n" + "NRwzugsfIxl0CvLLqrBpUWMxW3qemk4cWW39yrDdZgKo6eOZAOR3FQYlLIrw6Jcr\n" + "Kmm0PjdcJIfRgJvNysgyx1dIIKe7QXvFTR/QzdHWIWTkiYIW7wUKSzSICvDCr094\n" + "eo3nr3n9BtOqT61Z1m6FGCP6Mm0wFl6xLTCNd6ygfFo7pcAdWlUsdBgKzics0Kc=\n" + "-----END X509 CRL-----\n"; static struct { const char *name; @@ -91,40 +94,38 @@ static struct { time_t crt_revoke_time; size_t crt_serial_size; const char *crt_serial; -} crl_list[] = { - {.name = "crl-sha256-1", - .crl = simple1, - .sign_algo = GNUTLS_SIGN_RSA_SHA256, - .sign_oid = "1.2.840.113549.1.1.11", - .crt_count = 0, - .this_update = 1410599123, - .next_update = 1442135123}, - {.name = "crl-sha256-2", - .crl = simple1_constraints, - .sign_algo = GNUTLS_SIGN_RSA_SHA256, - .sign_oid = "1.2.840.113549.1.1.11", - .crt_count = 0, - .this_update = 1410598756, - .next_update = 1442134756}, - {.name = "crl-dsa", - .crl = crl_dsa, - .sign_algo = GNUTLS_SIGN_DSA_SHA1, - .sign_oid = "1.2.840.10040.4.3", - .crt_count = 0, - .this_update = 1116359980, - .next_update = 1147895980}, - {.name = "crl-rsa-sha1", - .crl = crl_rsa_sha1, - .sign_algo = GNUTLS_SIGN_RSA_SHA1, - .sign_oid = "1.2.840.113549.1.1.5", - .crt_count = 1, - .this_update = 1274996231, - .next_update = 1277588231, - .crt_revoke_time = 1274996231, - .crt_serial = "\x0b\x98\x94\xf9\x7c\x6a", - .crt_serial_size = 6}, - {NULL, NULL, 0, 0} -}; +} crl_list[] = { { .name = "crl-sha256-1", + .crl = simple1, + .sign_algo = GNUTLS_SIGN_RSA_SHA256, + .sign_oid = "1.2.840.113549.1.1.11", + .crt_count = 0, + .this_update = 1410599123, + .next_update = 1442135123 }, + { .name = "crl-sha256-2", + .crl = simple1_constraints, + .sign_algo = GNUTLS_SIGN_RSA_SHA256, + .sign_oid = "1.2.840.113549.1.1.11", + .crt_count = 0, + .this_update = 1410598756, + .next_update = 1442134756 }, + { .name = "crl-dsa", + .crl = crl_dsa, + .sign_algo = GNUTLS_SIGN_DSA_SHA1, + .sign_oid = "1.2.840.10040.4.3", + .crt_count = 0, + .this_update = 1116359980, + .next_update = 1147895980 }, + { .name = "crl-rsa-sha1", + .crl = crl_rsa_sha1, + .sign_algo = GNUTLS_SIGN_RSA_SHA1, + .sign_oid = "1.2.840.113549.1.1.5", + .crt_count = 1, + .this_update = 1274996231, + .next_update = 1277588231, + .crt_revoke_time = 1274996231, + .crt_serial = "\x0b\x98\x94\xf9\x7c\x6a", + .crt_serial_size = 6 }, + { NULL, NULL, 0, 0 } }; static void tls_log_func(int level, const char *str) { @@ -152,7 +153,6 @@ void doit(void) gnutls_global_set_log_level(4711); for (i = 0; crl_list[i].name; i++) { - if (debug) printf("Chain '%s' (%d)...\n", crl_list[i].name, (int)i); @@ -162,8 +162,7 @@ void doit(void) ret = gnutls_x509_crl_init(&crl); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crl_init[%d]: %s\n", + fprintf(stderr, "gnutls_x509_crl_init[%d]: %s\n", (int)i, gnutls_strerror(ret)); exit(1); } @@ -175,8 +174,7 @@ void doit(void) if (debug > 2) printf("done\n"); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crl_import[%s]: %s\n", + fprintf(stderr, "gnutls_x509_crl_import[%s]: %s\n", crl_list[i].name, gnutls_strerror(ret)); exit(1); } @@ -188,19 +186,22 @@ void doit(void) ret = gnutls_x509_crl_get_signature_algorithm(crl); if (ret != (int)crl_list[i].sign_algo) { - fail("%s: error extracting signature algorithm: %d/%s\n", crl_list[i].name, ret, gnutls_strerror(ret)); + fail("%s: error extracting signature algorithm: %d/%s\n", + crl_list[i].name, ret, gnutls_strerror(ret)); exit(1); } oid_size = sizeof(oid); ret = gnutls_x509_crl_get_signature_oid(crl, oid, &oid_size); if (ret < 0) { - fail("%s: error extracting signature algorithm OID: %s\n", crl_list[i].name, gnutls_strerror(ret)); + fail("%s: error extracting signature algorithm OID: %s\n", + crl_list[i].name, gnutls_strerror(ret)); exit(1); } if (strcmp(oid, crl_list[i].sign_oid) != 0) { - fail("%s: error on the extracted signature algorithm: %s\n", crl_list[i].name, oid); + fail("%s: error on the extracted signature algorithm: %s\n", + crl_list[i].name, oid); exit(1); } @@ -216,20 +217,20 @@ void doit(void) size_t ssize = sizeof(serial); time_t t = 0; - ret = - gnutls_x509_crl_get_crt_serial(crl, 0, serial, - &ssize, &t); + ret = gnutls_x509_crl_get_crt_serial(crl, 0, serial, + &ssize, &t); if (ret < 0) { fail("%s: error on the extracted serial: %d\n", crl_list[i].name, ret); } if (t != crl_list[i].crt_revoke_time) - fail("%s: error on the extracted revocation time: %u\n", crl_list[i].name, (unsigned)t); + fail("%s: error on the extracted revocation time: %u\n", + crl_list[i].name, (unsigned)t); - if (ssize != crl_list[i].crt_serial_size - || memcmp(serial, crl_list[i].crt_serial, - ssize) != 0) { + if (ssize != crl_list[i].crt_serial_size || + memcmp(serial, crl_list[i].crt_serial, ssize) != + 0) { for (i = 0; i < ssize; i++) fprintf(stderr, "%.2x", (unsigned)serial[i]); diff --git a/tests/crl_apis.c b/tests/crl_apis.c index 2189dddfb2..c8d1a18f86 100644 --- a/tests/crl_apis.c +++ b/tests/crl_apis.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -36,7 +36,7 @@ static time_t then = 1207000800; -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { if (t) *t = then; @@ -45,43 +45,44 @@ static time_t mytime(time_t * t) } static unsigned char saved_crl_pem[] = - "-----BEGIN X509 CRL-----\n" - "MIICXzCByAIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0zFw0wODAz\n" - "MzEyMjAwMDBaFw0wODAzMzEyMjAyMDBaMFQwFAIDAQIDFw0wODAzMzEyMjAwMDBa\n" - "MB0CDFejHTI2Wi75obBaUhcNMDgwMzMxMjIwMDAwWjAdAgxXox0yNbNP0Ln15zwX\n" - "DTA4MDMzMTIyMDAwMFqgLzAtMB8GA1UdIwQYMBaAFPmohhljtqQUE2B2DwGaNTbv\n" - "8bSvMAoGA1UdFAQDAgEBMA0GCSqGSIb3DQEBCwUAA4IBgQAFpyifa5AJclRpJfjh\n" - "QOcSoiCJz5QsrGaK5I/UYHcY958hhFjnE2c9g3wYEEt13M2gkgOTXapImPbLXHv+\n" - "cHWGoTqX6+crs7xcC6mFc6JfY7q9O2eP1x386dzCxhsXMti5ml0iOeBpNrMO46Pr\n" - "PuvNaY7OE1UgN0Ha3YjmhP8HtWJSQCMmqIo6vP1/HBSzaXP/cjS7f0WBZemj0eE7\n" - "wwA1GUoUx9wHipvNkCSKy/eQz4fpOJExrvHeb1/N3po9hfZaZJAqR+rsC0j9J+wd\n" - "ZGAdVFKCJUZs0IgsWQqagg0tXGJ8ejdt4yE8zvhhcpf4pcGoYUqtoUPT+Fjnsw7C\n" - "P1GCVZQ2ciGxixljTJFdifhqPshgC1Ytd75MkDYH2RRir/JwypQK9CcqIAOjBzTl\n" - "uk4SkKL2xAIduw6Dz5kAC7G2EM94uODoI/RO5b6eN6Kb/592JrKAfB96jh2wwqW+\n" - "swaA4JPFqNQaiMWW1IXM3VJwXBt8DRSRo46JV5OktvvFRwI=\n" - "-----END X509 CRL-----\n"; + "-----BEGIN X509 CRL-----\n" + "MIICXzCByAIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0zFw0wODAz\n" + "MzEyMjAwMDBaFw0wODAzMzEyMjAyMDBaMFQwFAIDAQIDFw0wODAzMzEyMjAwMDBa\n" + "MB0CDFejHTI2Wi75obBaUhcNMDgwMzMxMjIwMDAwWjAdAgxXox0yNbNP0Ln15zwX\n" + "DTA4MDMzMTIyMDAwMFqgLzAtMB8GA1UdIwQYMBaAFPmohhljtqQUE2B2DwGaNTbv\n" + "8bSvMAoGA1UdFAQDAgEBMA0GCSqGSIb3DQEBCwUAA4IBgQAFpyifa5AJclRpJfjh\n" + "QOcSoiCJz5QsrGaK5I/UYHcY958hhFjnE2c9g3wYEEt13M2gkgOTXapImPbLXHv+\n" + "cHWGoTqX6+crs7xcC6mFc6JfY7q9O2eP1x386dzCxhsXMti5ml0iOeBpNrMO46Pr\n" + "PuvNaY7OE1UgN0Ha3YjmhP8HtWJSQCMmqIo6vP1/HBSzaXP/cjS7f0WBZemj0eE7\n" + "wwA1GUoUx9wHipvNkCSKy/eQz4fpOJExrvHeb1/N3po9hfZaZJAqR+rsC0j9J+wd\n" + "ZGAdVFKCJUZs0IgsWQqagg0tXGJ8ejdt4yE8zvhhcpf4pcGoYUqtoUPT+Fjnsw7C\n" + "P1GCVZQ2ciGxixljTJFdifhqPshgC1Ytd75MkDYH2RRir/JwypQK9CcqIAOjBzTl\n" + "uk4SkKL2xAIduw6Dz5kAC7G2EM94uODoI/RO5b6eN6Kb/592JrKAfB96jh2wwqW+\n" + "swaA4JPFqNQaiMWW1IXM3VJwXBt8DRSRo46JV5OktvvFRwI=\n" + "-----END X509 CRL-----\n"; static unsigned char saved_min_crl_pem[] = - "-----BEGIN X509 CRL-----\n" - "MIICUDCBuQIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0zFw0wODAz\n" - "MzEyMjAwMTBaMFQwFAIDAQIDFw0wODAzMzEyMjAwMTBaMB0CDFejHTI2Wi75obBa\n" - "UhcNMDgwMzMxMjIwMDEwWjAdAgxXox0yNbNP0Ln15zwXDTA4MDMzMTIyMDAxMFqg\n" - "LzAtMB8GA1UdIwQYMBaAFPmohhljtqQUE2B2DwGaNTbv8bSvMAoGA1UdFAQDAgEB\n" - "MA0GCSqGSIb3DQEBCwUAA4IBgQB/Y7MxKf7HpYBoi7N5lNCe7nSd0epQiNPOford\n" - "hGb1ZirZk9m67zg146Cwc0W4ipPzW/OjwgUoVQTm21I7oZj/GPItAABlILd6eRQe\n" - "jYJap0fxiXV7aMRfu2o3qCRGAITQf306H5zJmpdeNxbxzlr3t6IAHBDbLI1WYXiC\n" - "pTHo3wlpwFJEPw5NQ0j6rCAzSH81FHTrEiIOar17uRqeMjbGN6Eo4zjezEx2+ewg\n" - "unsdzx4OWx3KgzsQnyV9EoU6l9jREe519mICx7La6DZkhO4dSPJv6R5jEFitWDNB\n" - "lxZMA5ePrYXuE/3b+Li89R53O+xZxShLQYwBRSHDue44xUv6hh6YNIKDgt4ycIs8\n" - "9JAWsOYJDYUEbAUo+S4sWCU6LzloEvmg7EdJtvJWsScUKK4qbwkDfkBTKjbeBdFj\n" - "w6naZIjzbjMPEe8/T+hmu/txFj3fGj/GzOM1GaJNZ4vMWA4Y6LhB+H1Zf3xK+hV0\n" - "sc0eYw7RpIzEyc9PPz/uM+XabsI=\n" "-----END X509 CRL-----\n"; + "-----BEGIN X509 CRL-----\n" + "MIICUDCBuQIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0zFw0wODAz\n" + "MzEyMjAwMTBaMFQwFAIDAQIDFw0wODAzMzEyMjAwMTBaMB0CDFejHTI2Wi75obBa\n" + "UhcNMDgwMzMxMjIwMDEwWjAdAgxXox0yNbNP0Ln15zwXDTA4MDMzMTIyMDAxMFqg\n" + "LzAtMB8GA1UdIwQYMBaAFPmohhljtqQUE2B2DwGaNTbv8bSvMAoGA1UdFAQDAgEB\n" + "MA0GCSqGSIb3DQEBCwUAA4IBgQB/Y7MxKf7HpYBoi7N5lNCe7nSd0epQiNPOford\n" + "hGb1ZirZk9m67zg146Cwc0W4ipPzW/OjwgUoVQTm21I7oZj/GPItAABlILd6eRQe\n" + "jYJap0fxiXV7aMRfu2o3qCRGAITQf306H5zJmpdeNxbxzlr3t6IAHBDbLI1WYXiC\n" + "pTHo3wlpwFJEPw5NQ0j6rCAzSH81FHTrEiIOar17uRqeMjbGN6Eo4zjezEx2+ewg\n" + "unsdzx4OWx3KgzsQnyV9EoU6l9jREe519mICx7La6DZkhO4dSPJv6R5jEFitWDNB\n" + "lxZMA5ePrYXuE/3b+Li89R53O+xZxShLQYwBRSHDue44xUv6hh6YNIKDgt4ycIs8\n" + "9JAWsOYJDYUEbAUo+S4sWCU6LzloEvmg7EdJtvJWsScUKK4qbwkDfkBTKjbeBdFj\n" + "w6naZIjzbjMPEe8/T+hmu/txFj3fGj/GzOM1GaJNZ4vMWA4Y6LhB+H1Zf3xK+hV0\n" + "sc0eYw7RpIzEyc9PPz/uM+XabsI=\n" + "-----END X509 CRL-----\n"; const gnutls_datum_t saved_crl = { saved_crl_pem, sizeof(saved_crl_pem) - 1 }; -const gnutls_datum_t saved_min_crl = - { saved_min_crl_pem, sizeof(saved_min_crl_pem) - 1 }; +const gnutls_datum_t saved_min_crl = { saved_min_crl_pem, + sizeof(saved_min_crl_pem) - 1 }; -static void append_crt(gnutls_x509_crl_t crl, const gnutls_datum_t * pem) +static void append_crt(gnutls_x509_crl_t crl, const gnutls_datum_t *pem) { gnutls_x509_crt_t crt; int ret; @@ -95,7 +96,7 @@ static void append_crt(gnutls_x509_crl_t crl, const gnutls_datum_t * pem) gnutls_x509_crt_deinit(crt); } -static void append_aki(gnutls_x509_crl_t crl, const gnutls_datum_t * pem) +static void append_aki(gnutls_x509_crl_t crl, const gnutls_datum_t *pem) { gnutls_x509_crt_t crt; int ret; @@ -140,8 +141,8 @@ static void verify_crl(gnutls_x509_crl_t _crl, gnutls_x509_crt_t crt) gnutls_x509_crl_deinit(crl); } -static void sign_crl(gnutls_x509_crl_t crl, const gnutls_datum_t * cert, - const gnutls_datum_t * key) +static void sign_crl(gnutls_x509_crl_t crl, const gnutls_datum_t *cert, + const gnutls_datum_t *key) { gnutls_x509_crt_t crt; gnutls_x509_privkey_t pkey; @@ -201,8 +202,8 @@ static gnutls_x509_crl_t generate_crl(unsigned skip_optional) ret = gnutls_x509_crl_set_number(crl, "\x01", 1); if (ret != 0) - fail("gnutls_x509_crl_set_number %d: %s\n", - ret, gnutls_strerror(ret)); + fail("gnutls_x509_crl_set_number %d: %s\n", ret, + gnutls_strerror(ret)); sign_crl(crl, &ca3_cert, &ca3_key); @@ -210,7 +211,7 @@ static gnutls_x509_crl_t generate_crl(unsigned skip_optional) } static void verify_issuer(gnutls_x509_crl_t crl, - const gnutls_datum_t * issuer_cert) + const gnutls_datum_t *issuer_cert) { #define DN_MAX_LEN (1024) gnutls_x509_crt_t crt; @@ -226,32 +227,33 @@ static void verify_issuer(gnutls_x509_crl_t crl, char *crl_issuer = gnutls_calloc(DN_MAX_LEN, sizeof(char)); assert(crl_issuer != NULL); size_t crl_issuer_size = DN_MAX_LEN; - assert(gnutls_x509_crl_get_issuer_dn(crl, crl_issuer, &crl_issuer_size) - == GNUTLS_E_SUCCESS); - assert(crl_issuer_size == issuer_size - && memcmp(crl_issuer, issuer, issuer_size) == 0); + assert(gnutls_x509_crl_get_issuer_dn( + crl, crl_issuer, &crl_issuer_size) == GNUTLS_E_SUCCESS); + assert(crl_issuer_size == issuer_size && + memcmp(crl_issuer, issuer, issuer_size) == 0); gnutls_datum_t dn; dn.data = NULL; dn.size = 0; assert(gnutls_x509_crl_get_issuer_dn2(crl, &dn) == GNUTLS_E_SUCCESS); - assert(dn.size == issuer_size - && memcmp(dn.data, issuer, issuer_size) == 0); + assert(dn.size == issuer_size && + memcmp(dn.data, issuer, issuer_size) == 0); gnutls_free(dn.data); dn.data = NULL; dn.size = 0; assert(gnutls_x509_crl_get_issuer_dn3(crl, &dn, 0) == GNUTLS_E_SUCCESS); - assert(dn.size == issuer_size - && memcmp(dn.data, issuer, issuer_size) == 0); + assert(dn.size == issuer_size && + memcmp(dn.data, issuer, issuer_size) == 0); gnutls_free(dn.data); dn.data = NULL; dn.size = 0; - assert(gnutls_x509_crl_get_issuer_dn3 - (crl, &dn, GNUTLS_X509_DN_FLAG_COMPAT) == GNUTLS_E_SUCCESS); - assert(dn.size == issuer_size - && memcmp(dn.data, issuer, issuer_size) == 0); + assert(gnutls_x509_crl_get_issuer_dn3(crl, &dn, + GNUTLS_X509_DN_FLAG_COMPAT) == + GNUTLS_E_SUCCESS); + assert(dn.size == issuer_size && + memcmp(dn.data, issuer, issuer_size) == 0); gnutls_free(dn.data); dn.data = NULL; dn.size = 0; @@ -262,7 +264,7 @@ static void verify_issuer(gnutls_x509_crl_t crl, } static void get_dn_by_oid(gnutls_x509_crl_t crl, - const gnutls_datum_t * issuer_cert) + const gnutls_datum_t *issuer_cert) { gnutls_x509_crt_t crt; assert(gnutls_x509_crt_init(&crt) >= 0); @@ -279,8 +281,8 @@ static void get_dn_by_oid(gnutls_x509_crl_t crl, gnutls_x509_crl_get_issuer_dn_by_oid(crl, "2.5.4.3", 0, 0, crl_buf, &crl_buf_size); - assert(crt_buf_size == crl_buf_size - && memcmp(crt_buf, crl_buf, crl_buf_size) == 0); + assert(crt_buf_size == crl_buf_size && + memcmp(crt_buf, crl_buf, crl_buf_size) == 0); gnutls_free(crt_buf); gnutls_free(crl_buf); @@ -294,8 +296,8 @@ static void import_der_crl_list(gnutls_x509_crl_t crl) gnutls_x509_crl_t crl_list; unsigned int crl_list_max = 1; - assert(gnutls_x509_crl_list_import - (&crl_list, &crl_list_max, &out, GNUTLS_X509_FMT_DER, 0) > 0); + assert(gnutls_x509_crl_list_import(&crl_list, &crl_list_max, &out, + GNUTLS_X509_FMT_DER, 0) > 0); gnutls_free(out.data); gnutls_x509_crl_deinit(crl_list); @@ -341,5 +343,4 @@ void doit(void) gnutls_free(out.data); gnutls_x509_crl_deinit(crl); - } diff --git a/tests/crlverify.c b/tests/crlverify.c index 3583236cf6..01ad7be372 100644 --- a/tests/crlverify.c +++ b/tests/crlverify.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,137 +33,140 @@ #include "utils.h" static const char *simple1[] = { -/* CRL */ + /* CRL */ "-----BEGIN X509 CRL-----\n" - "MIIBmjCBgwIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0wGA8yMDE0\n" - "MDkxMzA5MDUyM1oYDzIwMTUwOTEzMDkwNTIzWjAAoDowODAfBgNVHSMEGDAWgBTx\n" - "Fcb1FYLbhH9yuqg4wlVJUZnYKTAVBgNVHRQEDgIMVBQI0zeJoFHkLaWNMA0GCSqG\n" - "SIb3DQEBCwUAA4IBAQB6SGYePy1MBmtELyWdnlJHlQ4bBgb4vjuLDSfH0X6b4dAS\n" - "MEZws8iA5SaJFIioIP41s3lfQ1Am7GjSoNccHdrLmEcUSTQLwLYaDL8SgxekP5Au\n" - "w8HTu1cz/mnjBBDURq1RvyGNFm6MXf1Rg/bHSea/EpDkn8KY152BT1/46iQ+Uho6\n" - "hz6UUWsTB4Lj25X8F2hlKwQcb3E63Or2XEPBw4rhaCDFAtSZeBaGUUSJ8CLUKXZf\n" - "5b45MjiZ/osgd81tfn3wdQVjDnaQwNtjeRbK+qU0Z4pIKBvHzRS/fZKwTnrK1DLI\n" - "yY/nqBJT/+Q5zdUx5FXp0bwyZuarJ1GHqcES3Rz1\n" - "-----END X509 CRL-----\n", -/* CA - cert_signing_key only */ + "MIIBmjCBgwIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0wGA8yMDE0\n" + "MDkxMzA5MDUyM1oYDzIwMTUwOTEzMDkwNTIzWjAAoDowODAfBgNVHSMEGDAWgBTx\n" + "Fcb1FYLbhH9yuqg4wlVJUZnYKTAVBgNVHRQEDgIMVBQI0zeJoFHkLaWNMA0GCSqG\n" + "SIb3DQEBCwUAA4IBAQB6SGYePy1MBmtELyWdnlJHlQ4bBgb4vjuLDSfH0X6b4dAS\n" + "MEZws8iA5SaJFIioIP41s3lfQ1Am7GjSoNccHdrLmEcUSTQLwLYaDL8SgxekP5Au\n" + "w8HTu1cz/mnjBBDURq1RvyGNFm6MXf1Rg/bHSea/EpDkn8KY152BT1/46iQ+Uho6\n" + "hz6UUWsTB4Lj25X8F2hlKwQcb3E63Or2XEPBw4rhaCDFAtSZeBaGUUSJ8CLUKXZf\n" + "5b45MjiZ/osgd81tfn3wdQVjDnaQwNtjeRbK+qU0Z4pIKBvHzRS/fZKwTnrK1DLI\n" + "yY/nqBJT/+Q5zdUx5FXp0bwyZuarJ1GHqcES3Rz1\n" + "-----END X509 CRL-----\n", + /* CA - cert_signing_key only */ "-----BEGIN CERTIFICATE-----\n" - "MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTQwOTEzMDkwNTIzWhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCybbzvQTOmfwlA\n" - "+q8F/4ms42nhl5lo1lK6JCvE7jZdhqZNXE8e1eNACrU6rCxRQynDhOyAOCLQAAul\n" - "ivNMCW+SFN0IkSYXSRM8aWIDOZT8FyWB3yJSyvi3+SMgm7OYHFW8htH8qaIv0xJf\n" - "1h/ADBE62j9uaQIg7qSn6pVHMDHaITAbPg3y6II1iP3W28Vj/rtvK9yoZu4AThSD\n" - "Vdjl8WT4b4VOBbmioSNCDjx2C73+HLM2eUsdumCVcjWD9gkvCKkqTbOVplGRvCzO\n" - "sKNVGJamH9eGOjF2Az9XuYR+m7jWdIyTitLtbliyFiWwFguQ7BAPVnUS3TSKoLKL\n" - "X9WRGDIVAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcG\n" - "ADAdBgNVHQ4EFgQU8RXG9RWC24R/crqoOMJVSVGZ2CkwDQYJKoZIhvcNAQELBQAD\n" - "ggEBAASDvSD6Gt9E/IANgJ2lq7cvqKHhK/S0crpBHmzouLU1YANAbva8vZ2iVsgP\n" - "ojj5+QKosXgZM67g1u4Vr/Kt7APwYDVV9NlfE7BLSaksaQbh6J464rJ8pXONW6xP\n" - "z6tl/Pm1RqXuxzgnUv700OFuxBnnbglz9aQk5eS7kag8bfUx8MfN5gbW34nB79fn\n" - "5943Z8DmcDfUQZRY66v4S/NAYs7s96ABMB18u9Ct6KqGP/LKfDt2bgeTE/1b68T+\n" - "xmYF8N+JsJ3qP4lqBHgHLUL945nEoG8yDPIiZw3pmw1SyS0ktoVASynAh3W5j//r\n" - "d9Uk2Ojqo2tp/lJ0LCuQ3nWeM2Y=\n" "-----END CERTIFICATE-----\n" + "MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwOTEzMDkwNTIzWhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCybbzvQTOmfwlA\n" + "+q8F/4ms42nhl5lo1lK6JCvE7jZdhqZNXE8e1eNACrU6rCxRQynDhOyAOCLQAAul\n" + "ivNMCW+SFN0IkSYXSRM8aWIDOZT8FyWB3yJSyvi3+SMgm7OYHFW8htH8qaIv0xJf\n" + "1h/ADBE62j9uaQIg7qSn6pVHMDHaITAbPg3y6II1iP3W28Vj/rtvK9yoZu4AThSD\n" + "Vdjl8WT4b4VOBbmioSNCDjx2C73+HLM2eUsdumCVcjWD9gkvCKkqTbOVplGRvCzO\n" + "sKNVGJamH9eGOjF2Az9XuYR+m7jWdIyTitLtbliyFiWwFguQ7BAPVnUS3TSKoLKL\n" + "X9WRGDIVAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcG\n" + "ADAdBgNVHQ4EFgQU8RXG9RWC24R/crqoOMJVSVGZ2CkwDQYJKoZIhvcNAQELBQAD\n" + "ggEBAASDvSD6Gt9E/IANgJ2lq7cvqKHhK/S0crpBHmzouLU1YANAbva8vZ2iVsgP\n" + "ojj5+QKosXgZM67g1u4Vr/Kt7APwYDVV9NlfE7BLSaksaQbh6J464rJ8pXONW6xP\n" + "z6tl/Pm1RqXuxzgnUv700OFuxBnnbglz9aQk5eS7kag8bfUx8MfN5gbW34nB79fn\n" + "5943Z8DmcDfUQZRY66v4S/NAYs7s96ABMB18u9Ct6KqGP/LKfDt2bgeTE/1b68T+\n" + "xmYF8N+JsJ3qP4lqBHgHLUL945nEoG8yDPIiZw3pmw1SyS0ktoVASynAh3W5j//r\n" + "d9Uk2Ojqo2tp/lJ0LCuQ3nWeM2Y=\n" + "-----END CERTIFICATE-----\n" }; static const char *simple1_broken[] = { -/* CRL with some bits flipped */ + /* CRL with some bits flipped */ "-----BEGIN X509 CRL-----\n" - "MIIBmjCBgwIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0wGA8yMDE0\n" - "MDkxMzA5MDUyM1oYDzIwMTUwOTEzMDkwNTIzWjAAoDowODAfBgNVHSMEGDAWgBTx\n" - "Fcb1FYLbhH9yuqg4wlVJUZnYKTAVBgNVHRQEDgIMVBQI0zeJoFHkLaWNMA0GCSqG\n" - "SIb3DQEBCwUAA4IBAQB6SGYePy1MBmtELyWdnlJHlQ4bBgb4vjuLDSfH0X6b4dAS\n" - "MEZws8iA5SaJFIioIP41s3lfQ1Am7GjSoNccHdrLmEcUSTQLwLYaDL8SgxekP5Au\n" - "w8HTu1cz/mnjBBDURq1RvyGNFm6MXf1Rg/bHSea/EpDkn8KY152BT1/46iQ+Uho6\n" - "hz6UUWsTB4Lj25X8F3hlKwQcb3E63Or2XEPBw4rhaCDFAtSZeBaGUUSJ8CLUKXZf\n" - "5b45MjiZ/osgd81tfn3wdQVjDnaQwNtjeRbK+qU0Z4pIKBvHzRS/fZKwTnrK1DLI\n" - "yY/nqBJT/+Q5zdUx5FXp0bwyZuarJ1GHqcES3Rz1\n" - "-----END X509 CRL-----\n", -/* CA - cert_signing_key only */ + "MIIBmjCBgwIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0wGA8yMDE0\n" + "MDkxMzA5MDUyM1oYDzIwMTUwOTEzMDkwNTIzWjAAoDowODAfBgNVHSMEGDAWgBTx\n" + "Fcb1FYLbhH9yuqg4wlVJUZnYKTAVBgNVHRQEDgIMVBQI0zeJoFHkLaWNMA0GCSqG\n" + "SIb3DQEBCwUAA4IBAQB6SGYePy1MBmtELyWdnlJHlQ4bBgb4vjuLDSfH0X6b4dAS\n" + "MEZws8iA5SaJFIioIP41s3lfQ1Am7GjSoNccHdrLmEcUSTQLwLYaDL8SgxekP5Au\n" + "w8HTu1cz/mnjBBDURq1RvyGNFm6MXf1Rg/bHSea/EpDkn8KY152BT1/46iQ+Uho6\n" + "hz6UUWsTB4Lj25X8F3hlKwQcb3E63Or2XEPBw4rhaCDFAtSZeBaGUUSJ8CLUKXZf\n" + "5b45MjiZ/osgd81tfn3wdQVjDnaQwNtjeRbK+qU0Z4pIKBvHzRS/fZKwTnrK1DLI\n" + "yY/nqBJT/+Q5zdUx5FXp0bwyZuarJ1GHqcES3Rz1\n" + "-----END X509 CRL-----\n", + /* CA - cert_signing_key only */ "-----BEGIN CERTIFICATE-----\n" - "MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTQwOTEzMDkwNTIzWhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCybbzvQTOmfwlA\n" - "+q8F/4ms42nhl5lo1lK6JCvE7jZdhqZNXE8e1eNACrU6rCxRQynDhOyAOCLQAAul\n" - "ivNMCW+SFN0IkSYXSRM8aWIDOZT8FyWB3yJSyvi3+SMgm7OYHFW8htH8qaIv0xJf\n" - "1h/ADBE62j9uaQIg7qSn6pVHMDHaITAbPg3y6II1iP3W28Vj/rtvK9yoZu4AThSD\n" - "Vdjl8WT4b4VOBbmioSNCDjx2C73+HLM2eUsdumCVcjWD9gkvCKkqTbOVplGRvCzO\n" - "sKNVGJamH9eGOjF2Az9XuYR+m7jWdIyTitLtbliyFiWwFguQ7BAPVnUS3TSKoLKL\n" - "X9WRGDIVAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcG\n" - "ADAdBgNVHQ4EFgQU8RXG9RWC24R/crqoOMJVSVGZ2CkwDQYJKoZIhvcNAQELBQAD\n" - "ggEBAASDvSD6Gt9E/IANgJ2lq7cvqKHhK/S0crpBHmzouLU1YANAbva8vZ2iVsgP\n" - "ojj5+QKosXgZM67g1u4Vr/Kt7APwYDVV9NlfE7BLSaksaQbh6J464rJ8pXONW6xP\n" - "z6tl/Pm1RqXuxzgnUv700OFuxBnnbglz9aQk5eS7kag8bfUx8MfN5gbW34nB79fn\n" - "5943Z8DmcDfUQZRY66v4S/NAYs7s96ABMB18u9Ct6KqGP/LKfDt2bgeTE/1b68T+\n" - "xmYF8N+JsJ3qP4lqBHgHLUL945nEoG8yDPIiZw3pmw1SyS0ktoVASynAh3W5j//r\n" - "d9Uk2Ojqo2tp/lJ0LCuQ3nWeM2Y=\n" "-----END CERTIFICATE-----\n" + "MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwOTEzMDkwNTIzWhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCybbzvQTOmfwlA\n" + "+q8F/4ms42nhl5lo1lK6JCvE7jZdhqZNXE8e1eNACrU6rCxRQynDhOyAOCLQAAul\n" + "ivNMCW+SFN0IkSYXSRM8aWIDOZT8FyWB3yJSyvi3+SMgm7OYHFW8htH8qaIv0xJf\n" + "1h/ADBE62j9uaQIg7qSn6pVHMDHaITAbPg3y6II1iP3W28Vj/rtvK9yoZu4AThSD\n" + "Vdjl8WT4b4VOBbmioSNCDjx2C73+HLM2eUsdumCVcjWD9gkvCKkqTbOVplGRvCzO\n" + "sKNVGJamH9eGOjF2Az9XuYR+m7jWdIyTitLtbliyFiWwFguQ7BAPVnUS3TSKoLKL\n" + "X9WRGDIVAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcG\n" + "ADAdBgNVHQ4EFgQU8RXG9RWC24R/crqoOMJVSVGZ2CkwDQYJKoZIhvcNAQELBQAD\n" + "ggEBAASDvSD6Gt9E/IANgJ2lq7cvqKHhK/S0crpBHmzouLU1YANAbva8vZ2iVsgP\n" + "ojj5+QKosXgZM67g1u4Vr/Kt7APwYDVV9NlfE7BLSaksaQbh6J464rJ8pXONW6xP\n" + "z6tl/Pm1RqXuxzgnUv700OFuxBnnbglz9aQk5eS7kag8bfUx8MfN5gbW34nB79fn\n" + "5943Z8DmcDfUQZRY66v4S/NAYs7s96ABMB18u9Ct6KqGP/LKfDt2bgeTE/1b68T+\n" + "xmYF8N+JsJ3qP4lqBHgHLUL945nEoG8yDPIiZw3pmw1SyS0ktoVASynAh3W5j//r\n" + "d9Uk2Ojqo2tp/lJ0LCuQ3nWeM2Y=\n" + "-----END CERTIFICATE-----\n" }; static const char *simple1_constraints[] = { -/* CRL */ + /* CRL */ "-----BEGIN X509 CRL-----\n" - "MIIBmjCBgwIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0wGA8yMDE0\n" - "MDkxMzA4NTkxNloYDzIwMTUwOTEzMDg1OTE2WjAAoDowODAfBgNVHSMEGDAWgBTn\n" - "sISO6h9leKTKtOh/HG0jV03AMzAVBgNVHRQEDgIMVBQHZC2mj6EAgMPSMA0GCSqG\n" - "SIb3DQEBCwUAA4IBAQBHUgtxpOn8EHwlajVYoOh6DFCwIoxBIeUA4518W1cHoV7J\n" - "KMif6lmJRodrcbienDX781QcOaQcNnuu/oBEcoBdbZa0VICzXekIteSwEgGsbRve\n" - "QQFPnZn83I4btse1ly5fdxMsliSM+qRwIyNR18VHXZz9GWYrr4tYWnI2b9XrDnaC\n" - "1b3Ywt7I9pNi0/O0C0rE/37/VvPx6HghnC+un7LtT0Y0n+FQP7dhlMvzHaR8wVxs\n" - "WAzaNvSiJ1rVPzL21iCmQJsRQeDTSJBlzm0lWiU8Nys3ugM2KlERezfp8DkFGA3y\n" - "9Yzpq6gAi39ZK+LjopgGDkrQjxzBIaoe2bcDqB7X\n" - "-----END X509 CRL-----\n", -/* CA - cert_signing_key only */ + "MIIBmjCBgwIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0wGA8yMDE0\n" + "MDkxMzA4NTkxNloYDzIwMTUwOTEzMDg1OTE2WjAAoDowODAfBgNVHSMEGDAWgBTn\n" + "sISO6h9leKTKtOh/HG0jV03AMzAVBgNVHRQEDgIMVBQHZC2mj6EAgMPSMA0GCSqG\n" + "SIb3DQEBCwUAA4IBAQBHUgtxpOn8EHwlajVYoOh6DFCwIoxBIeUA4518W1cHoV7J\n" + "KMif6lmJRodrcbienDX781QcOaQcNnuu/oBEcoBdbZa0VICzXekIteSwEgGsbRve\n" + "QQFPnZn83I4btse1ly5fdxMsliSM+qRwIyNR18VHXZz9GWYrr4tYWnI2b9XrDnaC\n" + "1b3Ywt7I9pNi0/O0C0rE/37/VvPx6HghnC+un7LtT0Y0n+FQP7dhlMvzHaR8wVxs\n" + "WAzaNvSiJ1rVPzL21iCmQJsRQeDTSJBlzm0lWiU8Nys3ugM2KlERezfp8DkFGA3y\n" + "9Yzpq6gAi39ZK+LjopgGDkrQjxzBIaoe2bcDqB7X\n" + "-----END X509 CRL-----\n", + /* CA - cert_signing_key only */ "-----BEGIN CERTIFICATE-----\n" - "MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTQwOTEzMDg1OTE2WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7AVMcGmvenCAt\n" - "14Yi2zi6In2vjNakbzDfUa5xaG8oD73h4P8zP2TQqDmUBAAi5EdXoF5/crpgnGY3\n" - "oyUEFYnT7GTI/FO+RxZz9jCLvY3hpeuJcofsFny8n0ARL9WiFKuAEvrZkg+6V3Fh\n" - "TC9bCOFsGVTaLiUoi/nkD9IUgCkybFTqZM+8tLT4/gCMFNs9e0ANa5F+wtvS0bjy\n" - "LLozq6+XpzEXlL3UNKJq9cf02zHjb9ftlMDykRRkGPzppBSfOCJAMOX/BBNpWznJ\n" - "I1bg0m/6X3+SDO3j0PKLVc7BWWTnXXHb4rznwcRZm8zJiKKFE0GDOijzpT6Dl/gX\n" - "JI0lroeJAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" - "ADAdBgNVHQ4EFgQU57CEjuofZXikyrTofxxtI1dNwDMwDQYJKoZIhvcNAQELBQAD\n" - "ggEBALPFKXFauyO0R7Y+zhpiqYe1ms4qU9aprr/x4GMG4ByZ0i0FK8Kh+L5BsNQA\n" - "FsEMeEEmKTHKzkMHfvTJ6y/K6P9rTVY7W2MqlX8IXM02L3fg0zn7Xd9CtCG1nnzh\n" - "fQMf/K/9Xqiotjlrgo8noEZksGPIvDPXXY98dd0clGnBvw2HwiG4h+csr4i9y7CH\n" - "tpnTRJnfzdqDYIh8vnM0tIJbXbe5DBLHnmnx15FQB1apFNa87gdBHAnkHCXrV1vC\n" - "oZXEeUL/zW2ax+ALOglM82dwex2qV9jgcsWfq1Y2JBlVT1QPpbAooCnjvBhmPCjX\n" - "qYkVfApeRr4QAwwkLnyfSKNLHco=\n" "-----END CERTIFICATE-----\n" + "MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwOTEzMDg1OTE2WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7AVMcGmvenCAt\n" + "14Yi2zi6In2vjNakbzDfUa5xaG8oD73h4P8zP2TQqDmUBAAi5EdXoF5/crpgnGY3\n" + "oyUEFYnT7GTI/FO+RxZz9jCLvY3hpeuJcofsFny8n0ARL9WiFKuAEvrZkg+6V3Fh\n" + "TC9bCOFsGVTaLiUoi/nkD9IUgCkybFTqZM+8tLT4/gCMFNs9e0ANa5F+wtvS0bjy\n" + "LLozq6+XpzEXlL3UNKJq9cf02zHjb9ftlMDykRRkGPzppBSfOCJAMOX/BBNpWznJ\n" + "I1bg0m/6X3+SDO3j0PKLVc7BWWTnXXHb4rznwcRZm8zJiKKFE0GDOijzpT6Dl/gX\n" + "JI0lroeJAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" + "ADAdBgNVHQ4EFgQU57CEjuofZXikyrTofxxtI1dNwDMwDQYJKoZIhvcNAQELBQAD\n" + "ggEBALPFKXFauyO0R7Y+zhpiqYe1ms4qU9aprr/x4GMG4ByZ0i0FK8Kh+L5BsNQA\n" + "FsEMeEEmKTHKzkMHfvTJ6y/K6P9rTVY7W2MqlX8IXM02L3fg0zn7Xd9CtCG1nnzh\n" + "fQMf/K/9Xqiotjlrgo8noEZksGPIvDPXXY98dd0clGnBvw2HwiG4h+csr4i9y7CH\n" + "tpnTRJnfzdqDYIh8vnM0tIJbXbe5DBLHnmnx15FQB1apFNa87gdBHAnkHCXrV1vC\n" + "oZXEeUL/zW2ax+ALOglM82dwex2qV9jgcsWfq1Y2JBlVT1QPpbAooCnjvBhmPCjX\n" + "qYkVfApeRr4QAwwkLnyfSKNLHco=\n" + "-----END CERTIFICATE-----\n" }; static const char *simple1_fail[] = { -/* CRL */ + /* CRL */ "-----BEGIN X509 CRL-----\n" - "MIIBmjCBgwIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0wGA8yMDE0\n" - "MDkxMzA4NTkxNloYDzIwMTUwOTEzMDg1OTE2WjAAoDowODAfBgNVHSMEGDAWgBTn\n" - "sISO6h9leKTKtOh/HG0jV03AMzAVBgNVHRQEDgIMVBQHZC2mj6EAgMPSMA0GCSqG\n" - "SIb3DQEBCwUAA4IBAQBHUgtxpOn8EHwlajVYoOh6DFCwIoxBIeUA4518W1cHoV7J\n" - "KMif6lmJRodrcbienDX781QcOaQcNnuu/oBEcoBdbZa0VICzXekIteSwEgGsbRve\n" - "QQFPnZn83I4btse1ly5fdxMsliSM+qRwIyNR18VHXZz9GWYrr4tYWnI2b9XrDnaC\n" - "1b3Ywt7I9pNi0/O0C0rE/37/VvPx6HghnC+un7LtT0Y0n+FQP7dhlMvzHaR8wVxs\n" - "WAzaNvSiJ1rVPzL21iCmQJsRQeDTSJBlzm0lWiU8Nys3ugM2KlERezfp8DkFGA3y\n" - "9Yzpq6gAi39ZK+LjopgGDkrQjxzBIaoe2bcDqB7X\n" - "-----END X509 CRL-----\n", -/* CA (unrelated to CRL) */ + "MIIBmjCBgwIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0wGA8yMDE0\n" + "MDkxMzA4NTkxNloYDzIwMTUwOTEzMDg1OTE2WjAAoDowODAfBgNVHSMEGDAWgBTn\n" + "sISO6h9leKTKtOh/HG0jV03AMzAVBgNVHRQEDgIMVBQHZC2mj6EAgMPSMA0GCSqG\n" + "SIb3DQEBCwUAA4IBAQBHUgtxpOn8EHwlajVYoOh6DFCwIoxBIeUA4518W1cHoV7J\n" + "KMif6lmJRodrcbienDX781QcOaQcNnuu/oBEcoBdbZa0VICzXekIteSwEgGsbRve\n" + "QQFPnZn83I4btse1ly5fdxMsliSM+qRwIyNR18VHXZz9GWYrr4tYWnI2b9XrDnaC\n" + "1b3Ywt7I9pNi0/O0C0rE/37/VvPx6HghnC+un7LtT0Y0n+FQP7dhlMvzHaR8wVxs\n" + "WAzaNvSiJ1rVPzL21iCmQJsRQeDTSJBlzm0lWiU8Nys3ugM2KlERezfp8DkFGA3y\n" + "9Yzpq6gAi39ZK+LjopgGDkrQjxzBIaoe2bcDqB7X\n" + "-----END X509 CRL-----\n", + /* CA (unrelated to CRL) */ "-----BEGIN CERTIFICATE-----\n" - "MIIDFTCCAf2gAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTQwODI2MTEwODUyWhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+iPUnEs+qmj2U\n" - "Rz8plNAE/CpeUxUfNNVonluu4DzulsxAJMN78g+Oqx+ggdkECZxHLISkzErMgiuv\n" - "bG+nr9yxjyHH2YoOAgzgknar5JkOBkKp1bIvyA950ZSygMFEHX1qoaM+F/1/DKjG\n" - "NmMCNUpR0c4m+K22s72LnrpMLMmCZU0fnqngb1+F+iZE6emhcX5Z5D0QTJTAeiYK\n" - "ArnO0rpVEvU0o3nwe3dDrT0YyoCYrzCsCOKUa2wFtkOzLZKJbMBRMflL+fBmtj/Q\n" - "7xUe7ox62ZEqSD7W+Po48/mIuSOhx7u+yToBZ60wKGz9OkQ/JwykkK5ZgI+nPWGT\n" - "1au1K4V7AgMBAAGjeDB2MA8GA1UdEwEB/wQFMAMBAf8wEgYDVR0eAQH/BAgwBqEE\n" - "MAKCADAPBgNVHQ8BAf8EBQMDBwQAMB0GA1UdDgQWBBSgAJcc9Q5KDpAhkrMORPJS\n" - "boq3vzAfBgNVHSMEGDAWgBQ/lKQpHoyEFz7J+Wn6eT5qxgYQpjANBgkqhkiG9w0B\n" - "AQsFAAOCAQEAoMeZ0cnHes8bWRHLvrGc6wpwVnxYx2CBF9Xd3k4YMNunwBF9oM+T\n" - "ZYSMo4k7C1XZ154avBIyiCne3eU7/oHG1nkqY9ndN5LMyL8KFOniETBY3BdKtlGA\n" - "N+pDiQsrWG6mtqQ+kHFJICnGEDDByGB2eH+oAS+8gNtSfamLuTWYMI6ANjA9OWan\n" - "rkIA7ta97UiH2flvKRctqvZ0n6Vp3n3aUc53FkAbTnxOCBNCBx/veCgD/r74WbcY\n" - "jiwh2RE//3D3Oo7zhUlwQEWQSa/7poG5e6bl7oj4JYjpwSmESCYokT83Iqeb9lwO\n" - "D+dr9zs1tCudW9xz3sUg6IBXhZ4UvegTNg==\n" - "-----END CERTIFICATE-----\n" + "MIIDFTCCAf2gAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwODI2MTEwODUyWhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+iPUnEs+qmj2U\n" + "Rz8plNAE/CpeUxUfNNVonluu4DzulsxAJMN78g+Oqx+ggdkECZxHLISkzErMgiuv\n" + "bG+nr9yxjyHH2YoOAgzgknar5JkOBkKp1bIvyA950ZSygMFEHX1qoaM+F/1/DKjG\n" + "NmMCNUpR0c4m+K22s72LnrpMLMmCZU0fnqngb1+F+iZE6emhcX5Z5D0QTJTAeiYK\n" + "ArnO0rpVEvU0o3nwe3dDrT0YyoCYrzCsCOKUa2wFtkOzLZKJbMBRMflL+fBmtj/Q\n" + "7xUe7ox62ZEqSD7W+Po48/mIuSOhx7u+yToBZ60wKGz9OkQ/JwykkK5ZgI+nPWGT\n" + "1au1K4V7AgMBAAGjeDB2MA8GA1UdEwEB/wQFMAMBAf8wEgYDVR0eAQH/BAgwBqEE\n" + "MAKCADAPBgNVHQ8BAf8EBQMDBwQAMB0GA1UdDgQWBBSgAJcc9Q5KDpAhkrMORPJS\n" + "boq3vzAfBgNVHSMEGDAWgBQ/lKQpHoyEFz7J+Wn6eT5qxgYQpjANBgkqhkiG9w0B\n" + "AQsFAAOCAQEAoMeZ0cnHes8bWRHLvrGc6wpwVnxYx2CBF9Xd3k4YMNunwBF9oM+T\n" + "ZYSMo4k7C1XZ154avBIyiCne3eU7/oHG1nkqY9ndN5LMyL8KFOniETBY3BdKtlGA\n" + "N+pDiQsrWG6mtqQ+kHFJICnGEDDByGB2eH+oAS+8gNtSfamLuTWYMI6ANjA9OWan\n" + "rkIA7ta97UiH2flvKRctqvZ0n6Vp3n3aUc53FkAbTnxOCBNCBx/veCgD/r74WbcY\n" + "jiwh2RE//3D3Oo7zhUlwQEWQSa/7poG5e6bl7oj4JYjpwSmESCYokT83Iqeb9lwO\n" + "D+dr9zs1tCudW9xz3sUg6IBXhZ4UvegTNg==\n" + "-----END CERTIFICATE-----\n" }; static struct { @@ -172,23 +175,22 @@ static struct { const char **ca; unsigned int verify_flags; unsigned int expected_verify_result; -} crl_list[] = { - {"simple-success", &simple1[0], &simple1[1], - 0, 0}, - {"simple-constraints", &simple1_constraints[0], &simple1_constraints[1], - 0, GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE | GNUTLS_CERT_INVALID}, - {"simple-broken", &simple1_broken[0], &simple1_broken[1], - 0, GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNATURE_FAILURE}, - {"simple-fail", &simple1_fail[0], &simple1_fail[1], - 0, GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_NOT_FOUND}, - {NULL, NULL, NULL, 0, 0} -}; +} crl_list[] = { { "simple-success", &simple1[0], &simple1[1], 0, 0 }, + { "simple-constraints", &simple1_constraints[0], + &simple1_constraints[1], 0, + GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE | + GNUTLS_CERT_INVALID }, + { "simple-broken", &simple1_broken[0], &simple1_broken[1], 0, + GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNATURE_FAILURE }, + { "simple-fail", &simple1_fail[0], &simple1_fail[1], 0, + GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_NOT_FOUND }, + { NULL, NULL, NULL, 0, 0 } }; /* GnuTLS internally calls time() to find out the current time when verifying certificates. To avoid a time bomb, we hard code the current time. This should work fine on systems where the library call to time is resolved at run-time. */ -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1410599367; @@ -233,7 +235,6 @@ void doit(void) gnutls_global_set_log_level(4711); for (i = 0; crl_list[i].name; i++) { - if (debug) printf("Chain '%s' (%d)...\n", crl_list[i].name, (int)i); @@ -243,8 +244,7 @@ void doit(void) ret = gnutls_x509_crl_init(&crl); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crl_init[%d]: %s\n", + fprintf(stderr, "gnutls_x509_crl_init[%d]: %s\n", (int)i, gnutls_strerror(ret)); exit(1); } @@ -256,8 +256,7 @@ void doit(void) if (debug > 2) printf("done\n"); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crl_import[%s]: %s\n", + fprintf(stderr, "gnutls_x509_crl_import[%s]: %s\n", crl_list[i].name, gnutls_strerror(ret)); exit(1); } @@ -298,27 +297,24 @@ void doit(void) if (debug) printf("\tVerifying..."); - ret = - gnutls_x509_crl_verify(crl, &ca, 1, - crl_list[i].verify_flags, - &verify_status); + ret = gnutls_x509_crl_verify( + crl, &ca, 1, crl_list[i].verify_flags, &verify_status); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_list_verify[%d]: %s\n", + fprintf(stderr, "gnutls_x509_crt_list_verify[%d]: %s\n", (int)i, gnutls_strerror(ret)); exit(1); } if (verify_status != crl_list[i].expected_verify_result) { gnutls_datum_t out1, out2; - gnutls_certificate_verification_status_print - (verify_status, GNUTLS_CRT_X509, &out1, 0); - gnutls_certificate_verification_status_print(crl_list - [i]. - expected_verify_result, - GNUTLS_CRT_X509, - &out2, 0); - fail("chain[%s]:\nverify_status: %d: %s\nexpected: %d: %s\n", crl_list[i].name, verify_status, out1.data, crl_list[i].expected_verify_result, out2.data); + gnutls_certificate_verification_status_print( + verify_status, GNUTLS_CRT_X509, &out1, 0); + gnutls_certificate_verification_status_print( + crl_list[i].expected_verify_result, + GNUTLS_CRT_X509, &out2, 0); + fail("chain[%s]:\nverify_status: %d: %s\nexpected: %d: %s\n", + crl_list[i].name, verify_status, out1.data, + crl_list[i].expected_verify_result, out2.data); gnutls_free(out1.data); gnutls_free(out2.data); @@ -336,10 +332,9 @@ void doit(void) } /* make sure that the two functions don't diverge */ - ret = - gnutls_x509_trust_list_add_crls(tl, &crl, 1, - GNUTLS_TL_VERIFY_CRL, - crl_list[i].verify_flags); + ret = gnutls_x509_trust_list_add_crls(tl, &crl, 1, + GNUTLS_TL_VERIFY_CRL, + crl_list[i].verify_flags); if (crl_list[i].expected_verify_result == 0 && ret < 0) { fprintf(stderr, "gnutls_x509_trust_list_add_crls[%d]: %s\n", diff --git a/tests/crq-basic.c b/tests/crq-basic.c index ff8c3ef49b..c939e67f1b 100644 --- a/tests/crq-basic.c +++ b/tests/crq-basic.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,40 +33,42 @@ #include "utils.h" static const char csr1[] = - "-----BEGIN CERTIFICATE REQUEST-----\n" - "MIICrDCCAZQCAQAwZzELMAkGA1UEBhMCTk4xMTAvBgNVBAoMKEVkZWwgQ3VybCBB\n" - "cmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQxJTAjBgNVBAMMHE5vdGhlcm4g\n" - "Tm93aGVyZSBUcnVzdCBBbmNob3IwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" - "AoIBAQDBqQrvdgZ9/ng68Q5AbcJbro+Nf/DViZ5CKvAXlNkuZ8ctARyVo7GmhtQS\n" - "PEc6cOZ7HxEG03Ou38okGQPkYgrrZ9Tc750t4IJ3/iowWvtX5bhPNlJML1etEmqU\n" - "PuRIp62lwDrQTgCZiI+9SnC+O1tr/15vKW0Mp1VK4kPnSQ+ZVFlogTTYqfvIDRRa\n" - "QMtwHvU7wEI5BvljrdkpFFOvQhAdGJW2FYrYQdg3MQqXWhsQkKwd/25xM2t+iBgg\n" - "7b41/+dpSAXAeC4ERvTCjU1wbkL6k+vOEjvR9c4/KVyMvVmD5KHBPI4+OFXzmRiw\n" - "3/Z0yY4o9DgNRSDW28BzouaMbpifAgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEA\n" - "eFMy55kFke/e9mrGloRUh1o8dxmzSiVwVCw5DTZQzTFNAMSOZXIId8k2IeHSUd84\n" - "ZyJ1UNyJn2EFcwgaYaMtvZ8xMWR2W0C7lBvOOcjvWmiGze9F2Z5XMQzL8cjkK4jW\n" - "RKIq9b0W6TC8lLO5F2eJpW6BoTQ8cBCDiVIDlCm7xZxPRjHowuyM0Tpewq2PltC1\n" - "p8DbQipZWl5LPaHBSZSmIuUgOBU9porH/Vn0oWXxYfts59103VJY5YKkdz0PiqqA\n" - "5kWYCMFDZyL+nZ2aIol4r8nXkN9MuPOU12aHqPGcDlaGS2i5zfm2Ywsg110k+NCk\n" - "AmqhjnrQjvJhif3rGO4+qw==\n" "-----END CERTIFICATE REQUEST-----\n"; + "-----BEGIN CERTIFICATE REQUEST-----\n" + "MIICrDCCAZQCAQAwZzELMAkGA1UEBhMCTk4xMTAvBgNVBAoMKEVkZWwgQ3VybCBB\n" + "cmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQxJTAjBgNVBAMMHE5vdGhlcm4g\n" + "Tm93aGVyZSBUcnVzdCBBbmNob3IwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" + "AoIBAQDBqQrvdgZ9/ng68Q5AbcJbro+Nf/DViZ5CKvAXlNkuZ8ctARyVo7GmhtQS\n" + "PEc6cOZ7HxEG03Ou38okGQPkYgrrZ9Tc750t4IJ3/iowWvtX5bhPNlJML1etEmqU\n" + "PuRIp62lwDrQTgCZiI+9SnC+O1tr/15vKW0Mp1VK4kPnSQ+ZVFlogTTYqfvIDRRa\n" + "QMtwHvU7wEI5BvljrdkpFFOvQhAdGJW2FYrYQdg3MQqXWhsQkKwd/25xM2t+iBgg\n" + "7b41/+dpSAXAeC4ERvTCjU1wbkL6k+vOEjvR9c4/KVyMvVmD5KHBPI4+OFXzmRiw\n" + "3/Z0yY4o9DgNRSDW28BzouaMbpifAgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEA\n" + "eFMy55kFke/e9mrGloRUh1o8dxmzSiVwVCw5DTZQzTFNAMSOZXIId8k2IeHSUd84\n" + "ZyJ1UNyJn2EFcwgaYaMtvZ8xMWR2W0C7lBvOOcjvWmiGze9F2Z5XMQzL8cjkK4jW\n" + "RKIq9b0W6TC8lLO5F2eJpW6BoTQ8cBCDiVIDlCm7xZxPRjHowuyM0Tpewq2PltC1\n" + "p8DbQipZWl5LPaHBSZSmIuUgOBU9porH/Vn0oWXxYfts59103VJY5YKkdz0PiqqA\n" + "5kWYCMFDZyL+nZ2aIol4r8nXkN9MuPOU12aHqPGcDlaGS2i5zfm2Ywsg110k+NCk\n" + "AmqhjnrQjvJhif3rGO4+qw==\n" + "-----END CERTIFICATE REQUEST-----\n"; static const char csr2[] = - "-----BEGIN NEW CERTIFICATE REQUEST-----\n" - "MIICrjCCAZYCAQAwJDEiMCAGA1UEAxMZZGhjcC0yLTEyNy5icnEucmVkaGF0LmNv\n" - "bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANiEAXIHON8p4YpVRH+X\n" - "OM546stpyzL5xKdxbRUlfK0pWoqm3iqenRUf43eb9W8RDTx6UhuY21RFETzlYT4r\n" - "+yVXOlvm8K5FLepNcjbqDJb9hngFm2q8u+OM3GKBiyeH43lUMC6/YksqPeEzsmKD\n" - "UlD7rkm9CK8GRyXEsCruFaQ0VA8XB6XK9Av/jfOrGT/gTdmNGKu/fZmoJsjBJh+g\n" - "Yobsi60YyWeuXw2s5zVga73cK1v0JG2ltjZy0M7qSO+CCJa24huO8uvJ4GPOfi/Q\n" - "MPZbsHaZAqrHLQQMfxXJ73gXq7FLIMnCcstWfiagE5QlFZUGj9AnicgiCpMTZMIq\n" - "miECAwEAAaBFMBMGCSqGSIb3DQEJBzEGEwQxMjM0MC4GCSqGSIb3DQEJDjEhMB8w\n" - "DAYDVR0TAQH/BAIwADAPBgNVHQ8BAf8EBQMDB6AAMA0GCSqGSIb3DQEBCwUAA4IB\n" - "AQAqYOqsS3xnfEzLIis3krcjzHGykXxfvnyREDijBIqyXF10lSrmb2byvoIfOuoc\n" - "pSmdT8MaIUTmKnZI4+htEPYcsAMwF2cXL1D2kvJhE0EKHbmv1E0QbJWmbnVz99bs\n" - "GIcFN1die0SYHLgf64bOxKOyq5V8hAaE/lS2yLT7Tf/6+nweYOuE9ONH7KD7zpQo\n" - "LyhsjhH0px75Ftej+yQWEElfokZrNu7iHuwcue3efySlMfpT9G/p4MhQQjFQySkK\n" - "ev17H0d3KBdtcqWjxaS3jDAzmuz6SZwdUxSDkWuqchyAozeBpI+SbIPOgfKHsYc+\n" - "yRKga0201rRJi4NKvt8iqj5r\n" "-----END NEW CERTIFICATE REQUEST-----\n"; + "-----BEGIN NEW CERTIFICATE REQUEST-----\n" + "MIICrjCCAZYCAQAwJDEiMCAGA1UEAxMZZGhjcC0yLTEyNy5icnEucmVkaGF0LmNv\n" + "bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANiEAXIHON8p4YpVRH+X\n" + "OM546stpyzL5xKdxbRUlfK0pWoqm3iqenRUf43eb9W8RDTx6UhuY21RFETzlYT4r\n" + "+yVXOlvm8K5FLepNcjbqDJb9hngFm2q8u+OM3GKBiyeH43lUMC6/YksqPeEzsmKD\n" + "UlD7rkm9CK8GRyXEsCruFaQ0VA8XB6XK9Av/jfOrGT/gTdmNGKu/fZmoJsjBJh+g\n" + "Yobsi60YyWeuXw2s5zVga73cK1v0JG2ltjZy0M7qSO+CCJa24huO8uvJ4GPOfi/Q\n" + "MPZbsHaZAqrHLQQMfxXJ73gXq7FLIMnCcstWfiagE5QlFZUGj9AnicgiCpMTZMIq\n" + "miECAwEAAaBFMBMGCSqGSIb3DQEJBzEGEwQxMjM0MC4GCSqGSIb3DQEJDjEhMB8w\n" + "DAYDVR0TAQH/BAIwADAPBgNVHQ8BAf8EBQMDB6AAMA0GCSqGSIb3DQEBCwUAA4IB\n" + "AQAqYOqsS3xnfEzLIis3krcjzHGykXxfvnyREDijBIqyXF10lSrmb2byvoIfOuoc\n" + "pSmdT8MaIUTmKnZI4+htEPYcsAMwF2cXL1D2kvJhE0EKHbmv1E0QbJWmbnVz99bs\n" + "GIcFN1die0SYHLgf64bOxKOyq5V8hAaE/lS2yLT7Tf/6+nweYOuE9ONH7KD7zpQo\n" + "LyhsjhH0px75Ftej+yQWEElfokZrNu7iHuwcue3efySlMfpT9G/p4MhQQjFQySkK\n" + "ev17H0d3KBdtcqWjxaS3jDAzmuz6SZwdUxSDkWuqchyAozeBpI+SbIPOgfKHsYc+\n" + "yRKga0201rRJi4NKvt8iqj5r\n" + "-----END NEW CERTIFICATE REQUEST-----\n"; static struct { const char *name; @@ -76,25 +78,25 @@ static struct { const char *sign_oid; unsigned pk_algo; const char *pk_oid; -} crq_list[] = { - {.name = "crl-1", - .crq = csr1, - .sign_algo = GNUTLS_SIGN_RSA_SHA256, - .sign_oid = "1.2.840.113549.1.1.11", - .pk_algo = GNUTLS_PK_RSA, - .pk_oid = "1.2.840.113549.1.1.1", - .version = 1, - }, - {.name = "crl-2", - .crq = csr2, - .sign_algo = GNUTLS_SIGN_RSA_SHA256, - .sign_oid = "1.2.840.113549.1.1.11", - .pk_algo = GNUTLS_PK_RSA, - .pk_oid = "1.2.840.113549.1.1.1", - .version = 1, - }, - {NULL, NULL, 0, 0} -}; +} crq_list[] = { { + .name = "crl-1", + .crq = csr1, + .sign_algo = GNUTLS_SIGN_RSA_SHA256, + .sign_oid = "1.2.840.113549.1.1.11", + .pk_algo = GNUTLS_PK_RSA, + .pk_oid = "1.2.840.113549.1.1.1", + .version = 1, + }, + { + .name = "crl-2", + .crq = csr2, + .sign_algo = GNUTLS_SIGN_RSA_SHA256, + .sign_oid = "1.2.840.113549.1.1.11", + .pk_algo = GNUTLS_PK_RSA, + .pk_oid = "1.2.840.113549.1.1.1", + .version = 1, + }, + { NULL, NULL, 0, 0 } }; static void tls_log_func(int level, const char *str) { @@ -122,7 +124,6 @@ void doit(void) gnutls_global_set_log_level(4711); for (i = 0; crq_list[i].name; i++) { - if (debug) printf("Chain '%s' (%d)...\n", crq_list[i].name, (int)i); @@ -132,8 +133,7 @@ void doit(void) ret = gnutls_x509_crq_init(&crq); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crq_init[%d]: %s\n", + fprintf(stderr, "gnutls_x509_crq_init[%d]: %s\n", (int)i, gnutls_strerror(ret)); exit(1); } @@ -145,8 +145,7 @@ void doit(void) if (debug > 2) printf("done\n"); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crq_import[%s]: %s\n", + fprintf(stderr, "gnutls_x509_crq_import[%s]: %s\n", crq_list[i].name, gnutls_strerror(ret)); exit(1); } @@ -158,19 +157,22 @@ void doit(void) ret = gnutls_x509_crq_get_signature_algorithm(crq); if (ret != (int)crq_list[i].sign_algo) { - fail("%s: error extracting signature algorithm: %d/%s\n", crq_list[i].name, ret, gnutls_strerror(ret)); + fail("%s: error extracting signature algorithm: %d/%s\n", + crq_list[i].name, ret, gnutls_strerror(ret)); exit(1); } oid_size = sizeof(oid); ret = gnutls_x509_crq_get_signature_oid(crq, oid, &oid_size); if (ret < 0) { - fail("%s: error extracting signature algorithm OID: %s\n", crq_list[i].name, gnutls_strerror(ret)); + fail("%s: error extracting signature algorithm OID: %s\n", + crq_list[i].name, gnutls_strerror(ret)); exit(1); } if (strcmp(oid, crq_list[i].sign_oid) != 0) { - fail("%s: error on the extracted signature algorithm: %s\n", crq_list[i].name, oid); + fail("%s: error on the extracted signature algorithm: %s\n", + crq_list[i].name, oid); exit(1); } diff --git a/tests/crq_apis.c b/tests/crq_apis.c index f41eacd8c4..ce91ac12d0 100644 --- a/tests/crq_apis.c +++ b/tests/crq_apis.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -38,42 +38,43 @@ static void tls_log_func(int level, const char *str) } static unsigned char saved_crq_pem[] = - "-----BEGIN NEW CERTIFICATE REQUEST-----\n" - "MIICSDCCAbECAQAwKzEOMAwGA1UEAxMFbmlrb3MxGTAXBgNVBAoTEG5vbmUgdG8s\n" - "IG1lbnRpb24wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALtmQ/Xyxde2jMzF\n" - "3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeLZIkiW8DdU3w77XwEu4C5\n" - "KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKNzj2AC41179gAgY8oBAOg\n" - "Io1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGggdwwEgYJKoZIhvcNAQkHMQUTA2Zv\n" - "bzCBxQYJKoZIhvcNAQkOMYG3MIG0MA8GA1UdEwEB/wQFMAMCAQAwDQYDVR0PAQH/\n" - "BAMDAQAwIwYDVR0RBBwwGoIDYXBhggNmb2+CDnhuLS1reGF3aGsuY29tMB0GA1Ud\n" - "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjALBgQqAwQFBAPK/v8wFAYILQOCiPS5\n" - "FwUBAf8EBcr+//r+MCsGA1UdEAQkMCKADzIwMTkwNzA5MDQyODI2WoEPMjAxOTA3\n" - "MDkwNzE1MDZaMA0GCSqGSIb3DQEBCwUAA4GBAD5WboLhAYvbStlK1UwvB4b2vmJP\n" - "mfl7S/VmaeBFX8w0lpZTCTCRuB0WJek6YPfXyRsUUJsjWElZeEE0N8V+eQ3oz4um\n" - "N2QCk4Zrc5FRyCkKUe+qaqQhB1ho01ZQDMgkj2B10tubhdrKf17QCzgKEp+5VR46\n" - "Bme4HDJqbHlH+O0y\n" "-----END NEW CERTIFICATE REQUEST-----\n"; + "-----BEGIN NEW CERTIFICATE REQUEST-----\n" + "MIICSDCCAbECAQAwKzEOMAwGA1UEAxMFbmlrb3MxGTAXBgNVBAoTEG5vbmUgdG8s\n" + "IG1lbnRpb24wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALtmQ/Xyxde2jMzF\n" + "3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeLZIkiW8DdU3w77XwEu4C5\n" + "KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKNzj2AC41179gAgY8oBAOg\n" + "Io1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGggdwwEgYJKoZIhvcNAQkHMQUTA2Zv\n" + "bzCBxQYJKoZIhvcNAQkOMYG3MIG0MA8GA1UdEwEB/wQFMAMCAQAwDQYDVR0PAQH/\n" + "BAMDAQAwIwYDVR0RBBwwGoIDYXBhggNmb2+CDnhuLS1reGF3aGsuY29tMB0GA1Ud\n" + "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjALBgQqAwQFBAPK/v8wFAYILQOCiPS5\n" + "FwUBAf8EBcr+//r+MCsGA1UdEAQkMCKADzIwMTkwNzA5MDQyODI2WoEPMjAxOTA3\n" + "MDkwNzE1MDZaMA0GCSqGSIb3DQEBCwUAA4GBAD5WboLhAYvbStlK1UwvB4b2vmJP\n" + "mfl7S/VmaeBFX8w0lpZTCTCRuB0WJek6YPfXyRsUUJsjWElZeEE0N8V+eQ3oz4um\n" + "N2QCk4Zrc5FRyCkKUe+qaqQhB1ho01ZQDMgkj2B10tubhdrKf17QCzgKEp+5VR46\n" + "Bme4HDJqbHlH+O0y\n" + "-----END NEW CERTIFICATE REQUEST-----\n"; const gnutls_datum_t saved_crq = { saved_crq_pem, sizeof(saved_crq_pem) - 1 }; static unsigned char key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" - "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" - "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" - "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" - "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" - "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" - "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" - "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" - "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" - "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" - "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" - "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" - "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" + "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" + "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" + "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" + "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" + "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" + "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" + "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" + "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" + "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" + "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" + "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" + "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" + "-----END RSA PRIVATE KEY-----\n"; const gnutls_datum_t key = { key_pem, sizeof(key_pem) - 1 }; -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1207000800; @@ -137,9 +138,8 @@ static gnutls_x509_crq_t generate_crq(void) fail("%d: gnutls_x509_crq_get_challenge_password %d: %s\n", __LINE__, ret, gnutls_strerror(ret)); - ret = - gnutls_x509_crq_set_dn(crq, "o = none to\\, mention,cn = nikos", - &err); + ret = gnutls_x509_crq_set_dn(crq, "o = none to\\, mention,cn = nikos", + &err); if (ret < 0) { fail("gnutls_x509_crq_set_dn: %s, %s\n", gnutls_strerror(ret), err); @@ -152,7 +152,8 @@ static gnutls_x509_crq_t generate_crq(void) s = 0; ret = gnutls_x509_crq_get_challenge_password(crq, NULL, &s); if (ret != GNUTLS_E_SHORT_MEMORY_BUFFER || s != 4) - fail("%d: gnutls_x509_crq_get_challenge_password %d: %s (passlen: %d)\n", __LINE__, ret, gnutls_strerror(ret), (int)s); + fail("%d: gnutls_x509_crq_get_challenge_password %d: %s (passlen: %d)\n", + __LINE__, ret, gnutls_strerror(ret), (int)s); s = 10; ret = gnutls_x509_crq_get_challenge_password(crq, smallbuf, &s); @@ -170,15 +171,13 @@ static gnutls_x509_crq_t generate_crq(void) if (ret != 0) fail("gnutls_x509_crq_get_extension_data\n"); - ret = gnutls_x509_crq_set_subject_alt_name(crq, GNUTLS_SAN_DNSNAME, - "foo", 3, - GNUTLS_FSAN_APPEND); + ret = gnutls_x509_crq_set_subject_alt_name( + crq, GNUTLS_SAN_DNSNAME, "foo", 3, GNUTLS_FSAN_APPEND); if (ret != 0) fail("gnutls_x509_crq_set_subject_alt_name\n"); - ret = gnutls_x509_crq_set_subject_alt_name(crq, GNUTLS_SAN_DNSNAME, - "bar", 3, - GNUTLS_FSAN_APPEND); + ret = gnutls_x509_crq_set_subject_alt_name( + crq, GNUTLS_SAN_DNSNAME, "bar", 3, GNUTLS_FSAN_APPEND); if (ret != 0) fail("gnutls_x509_crq_set_subject_alt_name\n"); @@ -187,9 +186,8 @@ static gnutls_x509_crq_t generate_crq(void) if (ret != 0) fail("gnutls_x509_crq_set_subject_alt_name\n"); - ret = gnutls_x509_crq_set_subject_alt_name(crq, GNUTLS_SAN_DNSNAME, - "foo", 3, - GNUTLS_FSAN_APPEND); + ret = gnutls_x509_crq_set_subject_alt_name( + crq, GNUTLS_SAN_DNSNAME, "foo", 3, GNUTLS_FSAN_APPEND); if (ret != 0) fail("gnutls_x509_crq_set_subject_alt_name\n"); @@ -213,9 +211,8 @@ static gnutls_x509_crq_t generate_crq(void) fail("gnutls_x509_crq_get_key_purpose_oid %d\n", ret); s = 0; - ret = - gnutls_x509_crq_set_key_purpose_oid(crq, - GNUTLS_KP_TLS_WWW_SERVER, 0); + ret = gnutls_x509_crq_set_key_purpose_oid(crq, GNUTLS_KP_TLS_WWW_SERVER, + 0); if (ret != 0) fail("gnutls_x509_crq_set_key_purpose_oid %d\n", ret); @@ -225,9 +222,8 @@ static gnutls_x509_crq_t generate_crq(void) fail("gnutls_x509_crq_get_key_purpose_oid %d\n", ret); s = 0; - ret = - gnutls_x509_crq_set_key_purpose_oid(crq, - GNUTLS_KP_TLS_WWW_CLIENT, 1); + ret = gnutls_x509_crq_set_key_purpose_oid(crq, GNUTLS_KP_TLS_WWW_CLIENT, + 1); if (ret != 0) fail("gnutls_x509_crq_set_key_purpose_oid2 %d\n", ret); @@ -236,16 +232,14 @@ static gnutls_x509_crq_t generate_crq(void) #define EXT_DATA1 "\xCA\xFE\xFF" #define EXT_DATA2 "\xCA\xFE\xFF\xFA\xFE" /* test writing arbitrary extensions */ - ret = - gnutls_x509_crq_set_extension_by_oid(crq, EXT_ID1, EXT_DATA1, - sizeof(EXT_DATA1) - 1, 0); + ret = gnutls_x509_crq_set_extension_by_oid(crq, EXT_ID1, EXT_DATA1, + sizeof(EXT_DATA1) - 1, 0); if (ret != 0) fail("gnutls_x509_crq_set_extension_by_oid %s\n", gnutls_strerror(ret)); - ret = - gnutls_x509_crq_set_extension_by_oid(crq, EXT_ID2, EXT_DATA2, - sizeof(EXT_DATA2) - 1, 1); + ret = gnutls_x509_crq_set_extension_by_oid(crq, EXT_ID2, EXT_DATA2, + sizeof(EXT_DATA2) - 1, 1); if (ret != 0) fail("gnutls_x509_crq_set_extension_by_oid %s\n", gnutls_strerror(ret)); @@ -269,14 +263,14 @@ static gnutls_x509_crq_t generate_crq(void) /* test reading the arb. extensions */ crit = -1; - ret = - gnutls_x509_crq_get_extension_by_oid2(crq, EXT_ID1, 0, &out, &crit); + ret = gnutls_x509_crq_get_extension_by_oid2(crq, EXT_ID1, 0, &out, + &crit); if (ret < 0) fail("gnutls_x509_crq_get_extension_by_oid2: %s\n", gnutls_strerror(ret)); - if (out.size != sizeof(EXT_DATA1) - 1 - || memcmp(out.data, EXT_DATA1, out.size) != 0) { + if (out.size != sizeof(EXT_DATA1) - 1 || + memcmp(out.data, EXT_DATA1, out.size) != 0) { fail("ext1 doesn't match\n"); } if (crit != 0) { @@ -285,14 +279,14 @@ static gnutls_x509_crq_t generate_crq(void) gnutls_free(out.data); crit = -1; - ret = - gnutls_x509_crq_get_extension_by_oid2(crq, EXT_ID2, 0, &out, &crit); + ret = gnutls_x509_crq_get_extension_by_oid2(crq, EXT_ID2, 0, &out, + &crit); if (ret < 0) fail("gnutls_x509_crq_get_extension_by_oid2: %s\n", gnutls_strerror(ret)); - if (out.size != sizeof(EXT_DATA2) - 1 - || memcmp(out.data, EXT_DATA2, out.size) != 0) { + if (out.size != sizeof(EXT_DATA2) - 1 || + memcmp(out.data, EXT_DATA2, out.size) != 0) { fail("ext2 doesn't match\n"); } if (crit != 1) { @@ -344,8 +338,8 @@ static void test_crq(gnutls_x509_crq_t crq) assert(pathlen == 0); s = sizeof(buf); - ret = - gnutls_x509_crq_get_subject_alt_name(crq, 0, buf, &s, &type, &crit); + ret = gnutls_x509_crq_get_subject_alt_name(crq, 0, buf, &s, &type, + &crit); assert(ret >= 0); assert(s == 3); assert(memcmp(buf, "apa", s) == 0); @@ -353,16 +347,16 @@ static void test_crq(gnutls_x509_crq_t crq) assert(crit == 0); s = sizeof(buf); - ret = - gnutls_x509_crq_get_subject_alt_name(crq, 1, buf, &s, &type, &crit); + ret = gnutls_x509_crq_get_subject_alt_name(crq, 1, buf, &s, &type, + &crit); assert(ret >= 0); assert(s == 3); assert(memcmp(buf, "foo", s) == 0); assert(type == GNUTLS_SAN_DNSNAME); assert(crit == 0); - ret = - gnutls_x509_crq_get_private_key_usage_period(crq, &t1, &t2, &crit); + ret = gnutls_x509_crq_get_private_key_usage_period(crq, &t1, &t2, + &crit); if (ret < 0) fail("gnutls_x509_crq_get_private_key_usage_period: %s\n", gnutls_strerror(ret)); @@ -408,9 +402,8 @@ static void run_set_extensions(gnutls_x509_crq_t crq) if (ret != 0) fail("gnutls_x509_crt_set_crq: %s\n", gnutls_strerror(ret)); - ret = - gnutls_x509_crt_set_issuer_dn(crt, "o = big\\, and one, cn = my CA", - &err); + ret = gnutls_x509_crt_set_issuer_dn( + crt, "o = big\\, and one, cn = my CA", &err); if (ret < 0) { fail("gnutls_x509_crt_set_issuer_dn: %s, %s\n", gnutls_strerror(ret), err); @@ -488,9 +481,8 @@ static void run_set_extension_by_oid(gnutls_x509_crq_t crq) if (ret != 0) fail("gnutls_x509_crt_set_crq: %s\n", gnutls_strerror(ret)); - ret = - gnutls_x509_crt_set_issuer_dn(crt, "o = big\\, and one,cn = my CA", - &err); + ret = gnutls_x509_crt_set_issuer_dn( + crt, "o = big\\, and one,cn = my CA", &err); if (ret < 0) { fail("gnutls_x509_crt_set_issuer_dn: %s, %s\n", gnutls_strerror(ret), err); @@ -500,10 +492,8 @@ static void run_set_extension_by_oid(gnutls_x509_crq_t crq) if (ret != 0) fail("gnutls_x509_crt_set_version\n"); - ret = - gnutls_x509_crt_set_crq_extension_by_oid(crt, crq, - GNUTLS_X509EXT_OID_EXTENDED_KEY_USAGE, - 0); + ret = gnutls_x509_crt_set_crq_extension_by_oid( + crt, crq, GNUTLS_X509EXT_OID_EXTENDED_KEY_USAGE, 0); if (ret != 0) fail("gnutls_x509_crt_set_crq_extension_by_oid\n"); @@ -521,22 +511,21 @@ static void run_set_extension_by_oid(gnutls_x509_crq_t crq) for (i = 0;; i++) { oid_size = sizeof(oid); - ret = - gnutls_x509_crq_get_extension_info(crq, i, oid, &oid_size, - NULL); + ret = gnutls_x509_crq_get_extension_info(crq, i, oid, &oid_size, + NULL); if (ret < 0) fail("loop: ext not found: %s\n", gnutls_strerror(ret)); if (strcmp(oid, GNUTLS_X509EXT_OID_EXTENDED_KEY_USAGE) == 0) { - ret = - gnutls_x509_crq_get_extension_data2(crq, 3, &out2); + ret = gnutls_x509_crq_get_extension_data2(crq, 3, + &out2); if (ret != 0) fail("gnutls_x509_crt_get_extension_data2\n"); break; } - } - if (out.size != out2.size || memcmp(out.data, out2.data, out.size) != 0) { + if (out.size != out2.size || + memcmp(out.data, out2.data, out.size) != 0) { fail("memcmp %d, %d\n", out.size, out2.size); } diff --git a/tests/crq_key_id.c b/tests/crq_key_id.c index 5c1bed5084..9c7aad3c7d 100644 --- a/tests/crq_key_id.c +++ b/tests/crq_key_id.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -61,7 +61,8 @@ void doit(void) if (debug) gnutls_global_set_log_level(4711); - for (algorithm = GNUTLS_PK_RSA; algorithm <= GNUTLS_PK_DSA; algorithm++) { + for (algorithm = GNUTLS_PK_RSA; algorithm <= GNUTLS_PK_DSA; + algorithm++) { ret = gnutls_x509_crq_init(&crq); if (ret < 0) fail("gnutls_x509_crq_init: %d: %s\n", ret, @@ -82,8 +83,8 @@ void doit(void) ret = gnutls_x509_privkey_generate(pkey, algorithm, 2048, 0); if (ret < 0) { fail("gnutls_x509_privkey_generate (%s): %d: %s\n", - gnutls_pk_algorithm_get_name(algorithm), - ret, gnutls_strerror(ret)); + gnutls_pk_algorithm_get_name(algorithm), ret, + gnutls_strerror(ret)); } else if (debug) { success("Key[%s] generation ok: %d\n", gnutls_pk_algorithm_get_name(algorithm), ret); @@ -93,15 +94,16 @@ void doit(void) ret = gnutls_x509_privkey_get_key_id(pkey, 0, pkey_key_id, &pkey_key_id_len); if (ret != GNUTLS_E_SHORT_MEMORY_BUFFER) { - fail("gnutls_x509_privkey_get_key_id incorrectly returns %d: %s\n", ret, gnutls_strerror(ret)); + fail("gnutls_x509_privkey_get_key_id incorrectly returns %d: %s\n", + ret, gnutls_strerror(ret)); } pkey_key_id = malloc(sizeof(unsigned char) * pkey_key_id_len); - ret = - gnutls_x509_privkey_get_key_id(pkey, 0, pkey_key_id, - &pkey_key_id_len); + ret = gnutls_x509_privkey_get_key_id(pkey, 0, pkey_key_id, + &pkey_key_id_len); if (ret != GNUTLS_E_SUCCESS) { - fail("gnutls_x509_privkey_get_key_id incorrectly returns %d: %s\n", ret, gnutls_strerror(ret)); + fail("gnutls_x509_privkey_get_key_id incorrectly returns %d: %s\n", + ret, gnutls_strerror(ret)); } ret = gnutls_x509_crq_set_version(crq, 1); @@ -116,10 +118,8 @@ void doit(void) gnutls_strerror(ret)); } - ret = - gnutls_x509_crq_set_dn_by_oid(crq, - GNUTLS_OID_X520_COMMON_NAME, - 0, "CN-Test", 7); + ret = gnutls_x509_crq_set_dn_by_oid( + crq, GNUTLS_OID_X520_COMMON_NAME, 0, "CN-Test", 7); if (ret < 0) { fail("gnutls_x509_crq_set_dn_by_oid: %d: %s\n", ret, gnutls_strerror(ret)); @@ -131,9 +131,8 @@ void doit(void) gnutls_strerror(ret)); } - ret = - gnutls_x509_crq_privkey_sign(crq, abs_pkey, - GNUTLS_DIG_SHA256, 0); + ret = gnutls_x509_crq_privkey_sign(crq, abs_pkey, + GNUTLS_DIG_SHA256, 0); if (ret < 0) { fail("gnutls_x509_crq_sign: %d: %s\n", ret, gnutls_strerror(ret)); @@ -146,19 +145,19 @@ void doit(void) } crq_key_id_len = 0; - ret = - gnutls_x509_crq_get_key_id(crq, 0, crq_key_id, - &crq_key_id_len); + ret = gnutls_x509_crq_get_key_id(crq, 0, crq_key_id, + &crq_key_id_len); if (ret != GNUTLS_E_SHORT_MEMORY_BUFFER) { - fail("gnutls_x509_crq_get_key_id incorrectly returns %d: %s\n", ret, gnutls_strerror(ret)); + fail("gnutls_x509_crq_get_key_id incorrectly returns %d: %s\n", + ret, gnutls_strerror(ret)); } crq_key_id = malloc(sizeof(unsigned char) * crq_key_id_len); - ret = - gnutls_x509_crq_get_key_id(crq, 0, crq_key_id, - &crq_key_id_len); + ret = gnutls_x509_crq_get_key_id(crq, 0, crq_key_id, + &crq_key_id_len); if (ret != GNUTLS_E_SUCCESS) { - fail("gnutls_x509_crq_get_key_id incorrectly returns %d: %s\n", ret, gnutls_strerror(ret)); + fail("gnutls_x509_crq_get_key_id incorrectly returns %d: %s\n", + ret, gnutls_strerror(ret)); } if (crq_key_id_len == pkey_key_id_len) { diff --git a/tests/crt_apis.c b/tests/crt_apis.c index b985214e15..dab14704e8 100644 --- a/tests/crt_apis.c +++ b/tests/crt_apis.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -37,20 +37,21 @@ #include "cert-common.h" static unsigned char saved_crt_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICWTCCAcKgAwIBAgIDChEAMA0GCSqGSIb3DQEBCwUAMCsxDjAMBgNVBAMTBW5p\n" - "a29zMRkwFwYDVQQKExBub25lIHRvLCBtZW50aW9uMCAXDTA4MDMzMTIyMDAwMFoY\n" - "Dzk5OTkxMjMxMjM1OTU5WjArMQ4wDAYDVQQDEwVuaWtvczEZMBcGA1UEChMQbm9u\n" - "ZSB0bywgbWVudGlvbjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAu2ZD9fLF\n" - "17aMzMXf9Yg7sclLag6hrSBQQAiAoU9co9D4bM/mPPfsBHYTF4tkiSJbwN1TfDvt\n" - "fAS7gLkovo6bxo6gpRLL9Vceoue7tzNJn+O7Sq5qTWj/yRHiMo3OPYALjXXv2ACB\n" - "jygEA6AijWEEB/q2N30hB0nSCWFpmJCjWKkCAwEAAYEFAAABAgOCBQAEAwIBo3sw\n" - "eTAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDA3BgNVHREEMDAuiAQqAwQF\n" - "ghF4bi0tbXhhYTRhczZkLmNvbYETdGVzdEB4bi0ta3hhd2hrLm9yZzAgBgNVHSUB\n" - "Af8EFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADgYEAXE4Y\n" - "kO1M8RrC5qT7rs9zYoMVELPtirENuuGW8d4RFppvMDg8kpqWOo0ASkAa1ZeYSukE\n" - "m5KCEEyQ1UT00Vbr0Addn17y52RKMUzFhMmmu706MAvyutk51GmRgLusdbuEjgkn\n" - "jv3WmT8StaS7bFMw99hWCKDBPV9EE9M7zRHP0Js=\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIICWTCCAcKgAwIBAgIDChEAMA0GCSqGSIb3DQEBCwUAMCsxDjAMBgNVBAMTBW5p\n" + "a29zMRkwFwYDVQQKExBub25lIHRvLCBtZW50aW9uMCAXDTA4MDMzMTIyMDAwMFoY\n" + "Dzk5OTkxMjMxMjM1OTU5WjArMQ4wDAYDVQQDEwVuaWtvczEZMBcGA1UEChMQbm9u\n" + "ZSB0bywgbWVudGlvbjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAu2ZD9fLF\n" + "17aMzMXf9Yg7sclLag6hrSBQQAiAoU9co9D4bM/mPPfsBHYTF4tkiSJbwN1TfDvt\n" + "fAS7gLkovo6bxo6gpRLL9Vceoue7tzNJn+O7Sq5qTWj/yRHiMo3OPYALjXXv2ACB\n" + "jygEA6AijWEEB/q2N30hB0nSCWFpmJCjWKkCAwEAAYEFAAABAgOCBQAEAwIBo3sw\n" + "eTAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDA3BgNVHREEMDAuiAQqAwQF\n" + "ghF4bi0tbXhhYTRhczZkLmNvbYETdGVzdEB4bi0ta3hhd2hrLm9yZzAgBgNVHSUB\n" + "Af8EFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADgYEAXE4Y\n" + "kO1M8RrC5qT7rs9zYoMVELPtirENuuGW8d4RFppvMDg8kpqWOo0ASkAa1ZeYSukE\n" + "m5KCEEyQ1UT00Vbr0Addn17y52RKMUzFhMmmu706MAvyutk51GmRgLusdbuEjgkn\n" + "jv3WmT8StaS7bFMw99hWCKDBPV9EE9M7zRHP0Js=\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t saved_crt = { saved_crt_pem, sizeof(saved_crt_pem) - 1 }; @@ -59,7 +60,7 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "|<%d>| %s", level, str); } -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1207000800; @@ -101,8 +102,8 @@ void doit(void) if (ret != 0) fail("gnutls_x509_crt_init\n"); - ret = - gnutls_x509_crt_import(crt2, &server_ecc_cert, GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(crt2, &server_ecc_cert, + GNUTLS_X509_FMT_PEM); if (ret != 0) fail("gnutls_x509_crt_import\n"); @@ -145,9 +146,8 @@ void doit(void) if (ret != 0) fail("gnutls_x509_crt_set_key_usage %d\n", ret); - ret = - gnutls_x509_crt_set_dn(crt, "o = none to\\, mention,cn = nikos", - &err); + ret = gnutls_x509_crt_set_dn(crt, "o = none to\\, mention,cn = nikos", + &err); if (ret < 0) { fail("gnutls_x509_crt_set_dn: %s, %s\n", gnutls_strerror(ret), err); @@ -166,8 +166,7 @@ void doit(void) ret = gnutls_x509_crt_set_subject_alt_name(crt, GNUTLS_SAN_RFC822NAME, "ινβάλιντ@bar.org", - strlen - ("ινβάλιντ@bar.org"), + strlen("ινβάλιντ@bar.org"), 1); if (ret != GNUTLS_E_INVALID_UTF8_EMAIL) fail("gnutls_x509_crt_set_subject_alt_name\n"); @@ -177,9 +176,10 @@ void doit(void) if (ret != 0) fail("gnutls_x509_crt_set_subject_alt_name\n"); - ret = gnutls_x509_crt_set_subject_alt_name(crt, GNUTLS_SAN_IPADDRESS, - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01", - 16, 1); + ret = gnutls_x509_crt_set_subject_alt_name( + crt, GNUTLS_SAN_IPADDRESS, + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01", + 16, 1); if (ret != 0) fail("gnutls_x509_crt_set_subject_alt_name\n"); @@ -188,16 +188,15 @@ void doit(void) if (ret != 0) fail("gnutls_x509_crt_set_subject_alt_name\n"); - ret = - gnutls_x509_crt_set_subject_alt_name(crt, GNUTLS_SAN_REGISTERED_ID, - REGISTERED_OID, - strlen(REGISTERED_OID), 0); + ret = gnutls_x509_crt_set_subject_alt_name(crt, + GNUTLS_SAN_REGISTERED_ID, + REGISTERED_OID, + strlen(REGISTERED_OID), 0); if (ret != 0) fail("gnutls_x509_crt_set_subject_alt_name\n"); - ret = gnutls_x509_crt_set_subject_alt_name(crt, GNUTLS_SAN_DNSNAME, - "απαλό.com", - strlen("απαλό.com"), 1); + ret = gnutls_x509_crt_set_subject_alt_name( + crt, GNUTLS_SAN_DNSNAME, "απαλό.com", strlen("απαλό.com"), 1); #if defined(HAVE_LIBIDN2) || defined(HAVE_LIBIDN) if (ret != 0) fail("gnutls_x509_crt_set_subject_alt_name: %s\n", @@ -205,8 +204,7 @@ void doit(void) ret = gnutls_x509_crt_set_subject_alt_name(crt, GNUTLS_SAN_RFC822NAME, "test@νίκο.org", - strlen("test@νίκο.org"), - 1); + strlen("test@νίκο.org"), 1); if (ret != 0) fail("gnutls_x509_crt_set_subject_alt_name\n"); #else @@ -221,9 +219,8 @@ void doit(void) fail("gnutls_x509_crt_get_key_purpose_oid %d\n", ret); s = 0; - ret = - gnutls_x509_crt_set_key_purpose_oid(crt, - GNUTLS_KP_TLS_WWW_SERVER, 0); + ret = gnutls_x509_crt_set_key_purpose_oid(crt, GNUTLS_KP_TLS_WWW_SERVER, + 0); if (ret != 0) fail("gnutls_x509_crt_set_key_purpose_oid %d\n", ret); @@ -233,33 +230,28 @@ void doit(void) fail("gnutls_x509_crt_get_key_purpose_oid %d\n", ret); s = 0; - ret = - gnutls_x509_crt_set_key_purpose_oid(crt, - GNUTLS_KP_TLS_WWW_CLIENT, 1); + ret = gnutls_x509_crt_set_key_purpose_oid(crt, GNUTLS_KP_TLS_WWW_CLIENT, + 1); if (ret != 0) fail("gnutls_x509_crt_set_key_purpose_oid2 %d\n", ret); /* in the end this will be ignored as the issuer will be set * by gnutls_x509_crt_sign2() */ - ret = - gnutls_x509_crt_set_issuer_dn(crt, "cn = my CA, o = big\\, and one", - &err); + ret = gnutls_x509_crt_set_issuer_dn( + crt, "cn = my CA, o = big\\, and one", &err); if (ret < 0) { fail("gnutls_x509_crt_set_issuer_dn: %s, %s\n", gnutls_strerror(ret), err); } #define ISSUER_UNIQUE_ID "\x00\x01\x02\x03" #define SUBJECT_UNIQUE_ID "\x04\x03\x02\x01" - ret = - gnutls_x509_crt_set_issuer_unique_id(crt, ISSUER_UNIQUE_ID, - sizeof(ISSUER_UNIQUE_ID) - 1); + ret = gnutls_x509_crt_set_issuer_unique_id( + crt, ISSUER_UNIQUE_ID, sizeof(ISSUER_UNIQUE_ID) - 1); if (ret < 0) fail("error: %s\n", gnutls_strerror(ret)); - ret = - gnutls_x509_crt_set_subject_unique_id(crt, SUBJECT_UNIQUE_ID, - sizeof(SUBJECT_UNIQUE_ID) - - 1); + ret = gnutls_x509_crt_set_subject_unique_id( + crt, SUBJECT_UNIQUE_ID, sizeof(SUBJECT_UNIQUE_ID) - 1); if (ret < 0) fail("error: %s\n", gnutls_strerror(ret)); @@ -373,16 +365,16 @@ void doit(void) /* check whether the PEM output matches gnutls_x509_crt_export2 */ s = sizeof(large_buf); - assert(gnutls_x509_crt_export(crt, GNUTLS_X509_FMT_PEM, large_buf, &s) - == 0); + assert(gnutls_x509_crt_export(crt, GNUTLS_X509_FMT_PEM, large_buf, + &s) == 0); assert(s == out.size); assert(memcmp(large_buf, out.data, out.size) == 0); gnutls_free(out.data); /* check whether the der out length differs */ s = sizeof(large_buf); - assert(gnutls_x509_crt_export(crt, GNUTLS_X509_FMT_DER, large_buf, &s) - == 0); + assert(gnutls_x509_crt_export(crt, GNUTLS_X509_FMT_DER, large_buf, + &s) == 0); assert(gnutls_x509_crt_export2(crt, GNUTLS_X509_FMT_DER, &out) >= 0); assert(s == out.size); @@ -401,9 +393,8 @@ void doit(void) i = 0; do { s = sizeof(buf); - ret = - gnutls_x509_crt_get_subject_alt_name2(crt2, i++, buf, &s, - &san_type, NULL); + ret = gnutls_x509_crt_get_subject_alt_name2(crt2, i++, buf, &s, + &san_type, NULL); if (ret < 0) fail("gnutls_x509_crt_get_subject_alt_name2: %s\n", gnutls_strerror(ret)); diff --git a/tests/crt_inv_write.c b/tests/crt_inv_write.c index 4d7f6247ea..0db9c87dcb 100644 --- a/tests/crt_inv_write.c +++ b/tests/crt_inv_write.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -41,7 +41,7 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "|<%d>| %s", level, str); } -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1207000800; @@ -102,18 +102,19 @@ static void do_crt_with_exts(unsigned version) if (ret != 0) fail("gnutls_x509_crt_set_key\n"); - ret = gnutls_x509_crt_set_basic_constraints(crt, 0, -1); /* invalid for V1 */ + ret = gnutls_x509_crt_set_basic_constraints(crt, 0, + -1); /* invalid for V1 */ if (ret < 0) { fail("error\n"); } - ret = gnutls_x509_crt_set_key_usage(crt, GNUTLS_KEY_DIGITAL_SIGNATURE); /* inv for V1 */ + ret = gnutls_x509_crt_set_key_usage( + crt, GNUTLS_KEY_DIGITAL_SIGNATURE); /* inv for V1 */ if (ret != 0) fail("gnutls_x509_crt_set_key_usage %d\n", ret); - ret = - gnutls_x509_crt_set_dn(crt, "o = none to\\, mention,cn = nikos", - &err); + ret = gnutls_x509_crt_set_dn(crt, "o = none to\\, mention,cn = nikos", + &err); if (ret < 0) { fail("gnutls_x509_crt_set_dn: %s, %s\n", gnutls_strerror(ret), err); @@ -122,8 +123,8 @@ static void do_crt_with_exts(unsigned version) ret = gnutls_x509_crt_sign2(crt, crt, pkey, GNUTLS_DIG_SHA256, 0); if (ret != GNUTLS_E_X509_CERTIFICATE_ERROR) { gnutls_datum_t out; - assert(gnutls_x509_crt_export2(crt, GNUTLS_X509_FMT_PEM, &out) - >= 0); + assert(gnutls_x509_crt_export2(crt, GNUTLS_X509_FMT_PEM, + &out) >= 0); printf("%s\n\n", out.data); fail("gnutls_x509_crt_sign2: %s\n", gnutls_strerror(ret)); @@ -191,9 +192,8 @@ static void do_v1_invalid_crt(void) fail("error\n"); } - ret = - gnutls_x509_crt_set_dn(crt, "o = none to\\, mention,cn = nikos", - &err); + ret = gnutls_x509_crt_set_dn(crt, "o = none to\\, mention,cn = nikos", + &err); if (ret < 0) { fail("gnutls_x509_crt_set_dn: %s, %s\n", gnutls_strerror(ret), err); @@ -202,8 +202,8 @@ static void do_v1_invalid_crt(void) ret = gnutls_x509_crt_sign2(crt, crt, pkey, GNUTLS_DIG_SHA256, 0); if (ret != GNUTLS_E_X509_CERTIFICATE_ERROR) { gnutls_datum_t out; - assert(gnutls_x509_crt_export2(crt, GNUTLS_X509_FMT_PEM, &out) - >= 0); + assert(gnutls_x509_crt_export2(crt, GNUTLS_X509_FMT_PEM, + &out) >= 0); printf("%s\n\n", out.data); fail("gnutls_x509_crt_sign2: %s\n", gnutls_strerror(ret)); diff --git a/tests/crt_type-neg-common.c b/tests/crt_type-neg-common.c index 8e6a5dc78e..5f3637e695 100644 --- a/tests/crt_type-neg-common.c +++ b/tests/crt_type-neg-common.c @@ -24,9 +24,9 @@ #include // Credential type flags -#define CRED_EMPTY 1<<0 -#define CRED_X509 1<<1 -#define CRED_RAWPK 1<<2 +#define CRED_EMPTY 1 << 0 +#define CRED_X509 1 << 1 +#define CRED_RAWPK 1 << 2 // Test case definition typedef struct test_case_st { @@ -44,15 +44,19 @@ typedef struct test_case_st { bool request_cli_crt; bool cli_srv_may_diverge; // only needed when may_diverge is true - gnutls_certificate_type_t expected_cli_cli_ctype; // negotiated cli ctype on the client - gnutls_certificate_type_t expected_srv_cli_ctype; // negotiated cli ctype on the server - gnutls_certificate_type_t expected_cli_srv_ctype; // negotiated srv ctype on the client - gnutls_certificate_type_t expected_srv_srv_ctype; // negotiated srv ctype on the server + gnutls_certificate_type_t + expected_cli_cli_ctype; // negotiated cli ctype on the client + gnutls_certificate_type_t + expected_srv_cli_ctype; // negotiated cli ctype on the server + gnutls_certificate_type_t + expected_cli_srv_ctype; // negotiated srv ctype on the client + gnutls_certificate_type_t + expected_srv_srv_ctype; // negotiated srv ctype on the server } test_case_st; -static void try(test_case_st * test) +static void try(test_case_st *test) { - int sret, cret; // Needed for HANDSHAKE macro + int sret, cret; // Needed for HANDSHAKE macro /* To hold negotiated certificate types */ gnutls_certificate_type_t srv_srv_ctype, srv_cli_ctype; gnutls_certificate_type_t cli_srv_ctype, cli_cli_ctype; @@ -71,15 +75,15 @@ static void try(test_case_st * test) // Init client/server if (test->init_flags_cli) { - assert(gnutls_init - (&client, GNUTLS_CLIENT | test->init_flags_cli) >= 0); + assert(gnutls_init(&client, + GNUTLS_CLIENT | test->init_flags_cli) >= 0); } else { assert(gnutls_init(&client, GNUTLS_CLIENT) >= 0); } if (test->init_flags_srv) { - assert(gnutls_init - (&server, GNUTLS_SERVER | test->init_flags_srv) >= 0); + assert(gnutls_init(&server, + GNUTLS_SERVER | test->init_flags_srv) >= 0); } else { assert(gnutls_init(&server, GNUTLS_SERVER) >= 0); } @@ -92,16 +96,16 @@ static void try(test_case_st * test) } else { // Test for using X509 cli credentials if (test->set_cli_creds & CRED_X509) { - assert(gnutls_certificate_set_x509_key_mem - (client_creds, &cli_ca3_cert, &cli_ca3_key, - GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem( + client_creds, &cli_ca3_cert, + &cli_ca3_key, GNUTLS_X509_FMT_PEM) >= 0); } // Test for using RawPubKey cli credentials if (test->set_cli_creds & CRED_RAWPK) { - assert(gnutls_certificate_set_rawpk_key_mem - (client_creds, &rawpk_public_key1, - &rawpk_private_key1, GNUTLS_X509_FMT_PEM, NULL, - 0, NULL, 0, 0) >= 0); + assert(gnutls_certificate_set_rawpk_key_mem( + client_creds, &rawpk_public_key1, + &rawpk_private_key1, GNUTLS_X509_FMT_PEM, + NULL, 0, NULL, 0, 0) >= 0); } // -- Add extra ctype creds here in the future -- @@ -117,26 +121,30 @@ static void try(test_case_st * test) } else { // Test for using X509 srv credentials if (test->set_srv_creds & CRED_X509) { - assert(gnutls_certificate_set_x509_key_mem - (server_creds, - &server_ca3_localhost_rsa_decrypt_cert, - &server_ca3_key, GNUTLS_X509_FMT_PEM) >= 0); - assert(gnutls_certificate_set_x509_key_mem - (server_creds, &server_ca3_localhost_ecc_cert, - &server_ca3_ecc_key, GNUTLS_X509_FMT_PEM) >= 0); - assert(gnutls_certificate_set_x509_key_mem - (server_creds, - &server_ca3_localhost_rsa_sign_cert, - &server_ca3_key, GNUTLS_X509_FMT_PEM) >= 0); - gnutls_certificate_set_known_dh_params(server_creds, - GNUTLS_SEC_PARAM_MEDIUM); + assert(gnutls_certificate_set_x509_key_mem( + server_creds, + &server_ca3_localhost_rsa_decrypt_cert, + &server_ca3_key, + GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem( + server_creds, + &server_ca3_localhost_ecc_cert, + &server_ca3_ecc_key, + GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem( + server_creds, + &server_ca3_localhost_rsa_sign_cert, + &server_ca3_key, + GNUTLS_X509_FMT_PEM) >= 0); + gnutls_certificate_set_known_dh_params( + server_creds, GNUTLS_SEC_PARAM_MEDIUM); } // Test for using RawPubKey srv credentials if (test->set_srv_creds & CRED_RAWPK) { - assert(gnutls_certificate_set_rawpk_key_mem - (server_creds, &rawpk_public_key2, - &rawpk_private_key2, GNUTLS_X509_FMT_PEM, NULL, - 0, NULL, 0, 0) >= 0); + assert(gnutls_certificate_set_rawpk_key_mem( + server_creds, &rawpk_public_key2, + &rawpk_private_key2, GNUTLS_X509_FMT_PEM, + NULL, 0, NULL, 0, 0) >= 0); } // -- Add extra ctype creds here in the future -- @@ -173,65 +181,105 @@ static void try(test_case_st * test) HANDSHAKE(client, server); /* Get the negotiated certificate types */ - srv_srv_ctype = - gnutls_certificate_type_get2(server, GNUTLS_CTYPE_SERVER); - srv_cli_ctype = - gnutls_certificate_type_get2(server, GNUTLS_CTYPE_CLIENT); - cli_srv_ctype = - gnutls_certificate_type_get2(client, GNUTLS_CTYPE_SERVER); - cli_cli_ctype = - gnutls_certificate_type_get2(client, GNUTLS_CTYPE_CLIENT); + srv_srv_ctype = gnutls_certificate_type_get2( + server, GNUTLS_CTYPE_SERVER); + srv_cli_ctype = gnutls_certificate_type_get2( + server, GNUTLS_CTYPE_CLIENT); + cli_srv_ctype = gnutls_certificate_type_get2( + client, GNUTLS_CTYPE_SERVER); + cli_cli_ctype = gnutls_certificate_type_get2( + client, GNUTLS_CTYPE_CLIENT); // For debugging if (debug) { success("Srv srv ctype: %s\n", - gnutls_certificate_type_get_name - (srv_srv_ctype)); + gnutls_certificate_type_get_name( + srv_srv_ctype)); success("Srv cli ctype: %s\n", - gnutls_certificate_type_get_name - (srv_cli_ctype)); + gnutls_certificate_type_get_name( + srv_cli_ctype)); success("Cli srv ctype: %s\n", - gnutls_certificate_type_get_name - (cli_srv_ctype)); + gnutls_certificate_type_get_name( + cli_srv_ctype)); success("Cli srv ctype: %s\n", - gnutls_certificate_type_get_name - (cli_cli_ctype)); + gnutls_certificate_type_get_name( + cli_cli_ctype)); } /* Check whether the negotiated certificate types match the expected results */ if (test->cli_srv_may_diverge) { // Matching expected client ctype at client if (cli_cli_ctype != test->expected_cli_cli_ctype) { - fail("%s: negotiated client ctype at client diffs the expected (%s, %s)!\n", test->name, gnutls_certificate_type_get_name(cli_cli_ctype), gnutls_certificate_type_get_name(test->expected_cli_cli_ctype)); + fail("%s: negotiated client ctype at client diffs the expected (%s, %s)!\n", + test->name, + gnutls_certificate_type_get_name( + cli_cli_ctype), + gnutls_certificate_type_get_name( + test->expected_cli_cli_ctype)); } // Matching expected server ctype at client if (cli_srv_ctype != test->expected_cli_srv_ctype) { - fail("%s: negotiated server ctype at client diffs the expected (%s, %s)!\n", test->name, gnutls_certificate_type_get_name(cli_srv_ctype), gnutls_certificate_type_get_name(test->expected_cli_srv_ctype)); + fail("%s: negotiated server ctype at client diffs the expected (%s, %s)!\n", + test->name, + gnutls_certificate_type_get_name( + cli_srv_ctype), + gnutls_certificate_type_get_name( + test->expected_cli_srv_ctype)); } // Matching expected client ctype at server if (srv_cli_ctype != test->expected_srv_cli_ctype) { - fail("%s: negotiated client ctype at server diffs the expected (%s, %s)!\n", test->name, gnutls_certificate_type_get_name(srv_cli_ctype), gnutls_certificate_type_get_name(test->expected_srv_cli_ctype)); + fail("%s: negotiated client ctype at server diffs the expected (%s, %s)!\n", + test->name, + gnutls_certificate_type_get_name( + srv_cli_ctype), + gnutls_certificate_type_get_name( + test->expected_srv_cli_ctype)); } // Matching expected server ctype at server if (srv_srv_ctype != test->expected_srv_srv_ctype) { - fail("%s: negotiated client ctype at client diffs the expected (%s, %s)!\n", test->name, gnutls_certificate_type_get_name(srv_srv_ctype), gnutls_certificate_type_get_name(test->expected_srv_srv_ctype)); + fail("%s: negotiated client ctype at client diffs the expected (%s, %s)!\n", + test->name, + gnutls_certificate_type_get_name( + srv_srv_ctype), + gnutls_certificate_type_get_name( + test->expected_srv_srv_ctype)); } } else { // Matching server ctype if (srv_srv_ctype != cli_srv_ctype) { - fail("%s: client negotiated different server ctype than server (%s, %s)!\n", test->name, gnutls_certificate_type_get_name(cli_srv_ctype), gnutls_certificate_type_get_name(srv_srv_ctype)); + fail("%s: client negotiated different server ctype than server (%s, %s)!\n", + test->name, + gnutls_certificate_type_get_name( + cli_srv_ctype), + gnutls_certificate_type_get_name( + srv_srv_ctype)); } // Matching client ctype if (srv_cli_ctype != cli_cli_ctype) { - fail("%s: client negotiated different client ctype than server (%s, %s)!\n", test->name, gnutls_certificate_type_get_name(cli_cli_ctype), gnutls_certificate_type_get_name(srv_cli_ctype)); + fail("%s: client negotiated different client ctype than server (%s, %s)!\n", + test->name, + gnutls_certificate_type_get_name( + cli_cli_ctype), + gnutls_certificate_type_get_name( + srv_cli_ctype)); } // Matching expected server ctype if (srv_srv_ctype != test->expected_srv_ctype) { - fail("%s: negotiated server ctype diffs the expected (%s, %s)!\n", test->name, gnutls_certificate_type_get_name(srv_srv_ctype), gnutls_certificate_type_get_name(test->expected_srv_ctype)); + fail("%s: negotiated server ctype diffs the expected (%s, %s)!\n", + test->name, + gnutls_certificate_type_get_name( + srv_srv_ctype), + gnutls_certificate_type_get_name( + test->expected_srv_ctype)); } // Matching expected client ctype if (srv_cli_ctype != test->expected_cli_ctype) { - fail("%s: negotiated client ctype diffs the expected (%s, %s)!\n", test->name, gnutls_certificate_type_get_name(srv_cli_ctype), gnutls_certificate_type_get_name(test->expected_cli_ctype)); + fail("%s: negotiated client ctype diffs the expected (%s, %s)!\n", + test->name, + gnutls_certificate_type_get_name( + srv_cli_ctype), + gnutls_certificate_type_get_name( + test->expected_cli_ctype)); } /* Check whether the API functions return the correct cert types for OURS and PEERS */ @@ -239,11 +287,11 @@ static void try(test_case_st * test) gnutls_certificate_type_get2(server, GNUTLS_CTYPE_OURS)); assert(srv_srv_ctype == - gnutls_certificate_type_get2(client, - GNUTLS_CTYPE_PEERS)); + gnutls_certificate_type_get2( + client, GNUTLS_CTYPE_PEERS)); assert(cli_cli_ctype == - gnutls_certificate_type_get2(server, - GNUTLS_CTYPE_PEERS)); + gnutls_certificate_type_get2( + server, GNUTLS_CTYPE_PEERS)); assert(cli_cli_ctype == gnutls_certificate_type_get2(client, GNUTLS_CTYPE_OURS)); diff --git a/tests/custom-urls-override.c b/tests/custom-urls-override.c index aa3de7bdad..e089446cdd 100644 --- a/tests/custom-urls-override.c +++ b/tests/custom-urls-override.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,21 +35,21 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include "cert-common.h" - -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "cert-common.h" + +#include "utils.h" static void terminate(void); static unsigned url_used = 0; @@ -99,8 +99,8 @@ static void client(int fd) gnutls_init(&session, GNUTLS_CLIENT); /* Use default priorities */ - assert(gnutls_priority_set_direct - (session, "NORMAL:-VERS-ALL:+VERS-TLS1.2", NULL) >= 0); + assert(gnutls_priority_set_direct( + session, "NORMAL:-VERS-ALL:+VERS-TLS1.2", NULL) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -110,8 +110,7 @@ static void client(int fd) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -124,8 +123,8 @@ static void client(int fd) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); gnutls_bye(session, GNUTLS_SHUT_WR); @@ -158,10 +157,8 @@ static void server(int fd) */ gnutls_certificate_allocate_credentials(&x509_cred); - ret = - gnutls_certificate_set_x509_key_file(x509_cred, "system:cert", - "system:key", - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_file( + x509_cred, "system:cert", "system:key", GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("server: gnutls_certificate_set_x509_key_file (%s)\n\n", gnutls_strerror(ret)); @@ -173,8 +170,8 @@ static void server(int fd) /* avoid calling all the priority functions, since the defaults * are adequate. */ - assert(gnutls_priority_set_direct - (session, "NORMAL:-VERS-ALL:+VERS-TLS1.2", NULL) >= 0); + assert(gnutls_priority_set_direct( + session, "NORMAL:-VERS-ALL:+VERS-TLS1.2", NULL) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -182,8 +179,7 @@ static void server(int fd) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -196,8 +192,8 @@ static void server(int fd) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); if (url_used != 2) { fail("The callbacks were not used\n"); @@ -219,12 +215,10 @@ static void server(int fd) success("server: finished\n"); } -const gnutls_custom_url_st custom_url_st = { - .name = "system:", - .name_size = sizeof("system:") - 1, - .import_key = url_import_key, - .import_crt = url_import_crt -}; +const gnutls_custom_url_st custom_url_st = { .name = "system:", + .name_size = sizeof("system:") - 1, + .import_key = url_import_key, + .import_crt = url_import_crt }; static void start(void) { @@ -285,4 +279,4 @@ void doit(void) start(); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/custom-urls.c b/tests/custom-urls.c index 168ab030d1..045f585d3a 100644 --- a/tests/custom-urls.c +++ b/tests/custom-urls.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,21 +35,21 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "cert-common.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cert-common.h" +#include "utils.h" static void terminate(void); @@ -96,8 +96,8 @@ static void client(int fd) gnutls_init(&session, GNUTLS_CLIENT); /* Use default priorities */ - assert(gnutls_priority_set_direct - (session, "NORMAL:-VERS-ALL:+VERS-TLS1.2", NULL) >= 0); + assert(gnutls_priority_set_direct( + session, "NORMAL:-VERS-ALL:+VERS-TLS1.2", NULL) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -107,8 +107,7 @@ static void client(int fd) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -121,8 +120,8 @@ static void client(int fd) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); gnutls_bye(session, GNUTLS_SHUT_WR); @@ -154,19 +153,16 @@ static void server(int fd) /* this must be called once in the program */ gnutls_certificate_allocate_credentials(&x509_cred); - ret = - gnutls_certificate_set_x509_key_file(x509_cred, "nomyurl:cert", - "nomyurl:key", - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_file( + x509_cred, "nomyurl:cert", "nomyurl:key", GNUTLS_X509_FMT_PEM); if (ret != GNUTLS_E_FILE_ERROR) { - fail("server: gnutls_certificate_set_x509_key_file unexpected error (%s)\n\n", gnutls_strerror(ret)); + fail("server: gnutls_certificate_set_x509_key_file unexpected error (%s)\n\n", + gnutls_strerror(ret)); terminate(); } - ret = - gnutls_certificate_set_x509_key_file(x509_cred, "myurl:cert", - "myurl:key", - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_file( + x509_cred, "myurl:cert", "myurl:key", GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("server: gnutls_certificate_set_x509_key_file (%s)\n\n", gnutls_strerror(ret)); @@ -178,8 +174,8 @@ static void server(int fd) /* avoid calling all the priority functions, since the defaults * are adequate. */ - assert(gnutls_priority_set_direct - (session, "NORMAL:-VERS-ALL:+VERS-TLS1.2", NULL) >= 0); + assert(gnutls_priority_set_direct( + session, "NORMAL:-VERS-ALL:+VERS-TLS1.2", NULL) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -187,8 +183,7 @@ static void server(int fd) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -201,8 +196,8 @@ static void server(int fd) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* do not wait for the peer to close the connection. */ @@ -219,12 +214,10 @@ static void server(int fd) success("server: finished\n"); } -const gnutls_custom_url_st custom_url_st = { - .name = "myurl:", - .name_size = sizeof("myurl:") - 1, - .import_key = url_import_key, - .import_crt = url_import_crt -}; +const gnutls_custom_url_st custom_url_st = { .name = "myurl:", + .name_size = sizeof("myurl:") - 1, + .import_key = url_import_key, + .import_crt = url_import_crt }; static void start(void) { @@ -285,4 +278,4 @@ void doit(void) start(); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/cve-2008-4989.c b/tests/cve-2008-4989.c index d204a0cf27..43a94e296e 100644 --- a/tests/cve-2008-4989.c +++ b/tests/cve-2008-4989.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -37,111 +37,112 @@ static const char *pem_certs[] = { "-----BEGIN CERTIFICATE-----\n" - "MIIB6zCCAVQCCQCgwnB/k0WZrDANBgkqhkiG9w0BAQUFADA9MQswCQYDVQQGEwJE\n" - "RTEXMBUGA1UEChMOR05VIFRMUyBBdHRhY2sxFTATBgNVBAMTDGludGVybWVkaWF0\n" - "ZTAeFw0wODExMDMxMjA1MDRaFw0wODEyMDMxMjA1MDRaMDcxCzAJBgNVBAYTAkRF\n" - "MRcwFQYDVQQKEw5HTlUgVExTIEF0dGFjazEPMA0GA1UEAxMGc2VydmVyMIGfMA0G\n" - "CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDKdL9g5ErMLOLRCjiomZlNLhy0moWGaKIW\n" - "aX6vyUIfh8d6FcArHoKoqhmX7ckvod50sOYPojQesDpl7gVaQNA6Ntr1VCcuNPef\n" - "UKWtEwL0Qu9JbPnUoIYd7mAaqVQgFp6W6yzV/dp63LH4XSdzBMhpZ/EU6vZoE8Sv\n" - "VLdqj5r6jwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAH4QRR7sZEbjW00tXYk/3O/Z\n" - "96AxJNg0F78W5B68gaJrLJ7DTE2RTglscuEq1+2Jyb4AIziwXpYqxgwcP91QpH97\n" - "XfwdXIcyjYvVLHiKmkQj2zJTY7MeyiEQQ2it8VstZG2fYmi2EiMZIEnyJ2JJ7bA7\n" - "bF7pG7Cg3oEHUM0H5KUU\n" "-----END CERTIFICATE-----\n", + "MIIB6zCCAVQCCQCgwnB/k0WZrDANBgkqhkiG9w0BAQUFADA9MQswCQYDVQQGEwJE\n" + "RTEXMBUGA1UEChMOR05VIFRMUyBBdHRhY2sxFTATBgNVBAMTDGludGVybWVkaWF0\n" + "ZTAeFw0wODExMDMxMjA1MDRaFw0wODEyMDMxMjA1MDRaMDcxCzAJBgNVBAYTAkRF\n" + "MRcwFQYDVQQKEw5HTlUgVExTIEF0dGFjazEPMA0GA1UEAxMGc2VydmVyMIGfMA0G\n" + "CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDKdL9g5ErMLOLRCjiomZlNLhy0moWGaKIW\n" + "aX6vyUIfh8d6FcArHoKoqhmX7ckvod50sOYPojQesDpl7gVaQNA6Ntr1VCcuNPef\n" + "UKWtEwL0Qu9JbPnUoIYd7mAaqVQgFp6W6yzV/dp63LH4XSdzBMhpZ/EU6vZoE8Sv\n" + "VLdqj5r6jwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAH4QRR7sZEbjW00tXYk/3O/Z\n" + "96AxJNg0F78W5B68gaJrLJ7DTE2RTglscuEq1+2Jyb4AIziwXpYqxgwcP91QpH97\n" + "XfwdXIcyjYvVLHiKmkQj2zJTY7MeyiEQQ2it8VstZG2fYmi2EiMZIEnyJ2JJ7bA7\n" + "bF7pG7Cg3oEHUM0H5KUU\n" + "-----END CERTIFICATE-----\n", "-----BEGIN CERTIFICATE-----\n" - "MIICADCCAWmgAwIBAgIJAIZ4nkHQAqTFMA0GCSqGSIb3DQEBBQUAMDUxCzAJBgNV\n" - "BAYTAkRFMRcwFQYDVQQKEw5HTlUgVExTIEF0dGFjazENMAsGA1UEAxMEcm9vdDAe\n" - "Fw0wODExMDMxMjA0NDVaFw0wODEyMDMxMjA0NDVaMD0xCzAJBgNVBAYTAkRFMRcw\n" - "FQYDVQQKEw5HTlUgVExTIEF0dGFjazEVMBMGA1UEAxMMaW50ZXJtZWRpYXRlMIGf\n" - "MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDvBpW8sAhIuUmNvcBE6wv/q7MtM1Z9\n" - "2I1SDL8eJ8I2nPg6BlCX+OIqNruynj8J7uPEQ04ZLwLxNXoyZa8057YFyrKLOvoj\n" - "5IfBtidsLWYv6PO3qqHJXVvwGdS7PKMuUlsjucCRyXVgQ07ODF7piqoVFi9KD99w\n" - "AU5+9plGrZNP/wIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUA\n" - "A4GBAGPg+M+8MsB6zHN2o+jAtyqovrTTwmzVWEgfEH/aHC9+imGZRQ5lFNc2vdny\n" - "AgaJ9/izO5S6Ibb5zUowN2WhoUJOVipuQa2m9AviOgheoU7tmANC9ylm/pRkKy/0\n" - "n5UVzlKxDhRp/xBb7MWOw3KEQjiAf2Z3wCLcCPUqcJUdJC4v\n" - "-----END CERTIFICATE-----\n", + "MIICADCCAWmgAwIBAgIJAIZ4nkHQAqTFMA0GCSqGSIb3DQEBBQUAMDUxCzAJBgNV\n" + "BAYTAkRFMRcwFQYDVQQKEw5HTlUgVExTIEF0dGFjazENMAsGA1UEAxMEcm9vdDAe\n" + "Fw0wODExMDMxMjA0NDVaFw0wODEyMDMxMjA0NDVaMD0xCzAJBgNVBAYTAkRFMRcw\n" + "FQYDVQQKEw5HTlUgVExTIEF0dGFjazEVMBMGA1UEAxMMaW50ZXJtZWRpYXRlMIGf\n" + "MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDvBpW8sAhIuUmNvcBE6wv/q7MtM1Z9\n" + "2I1SDL8eJ8I2nPg6BlCX+OIqNruynj8J7uPEQ04ZLwLxNXoyZa8057YFyrKLOvoj\n" + "5IfBtidsLWYv6PO3qqHJXVvwGdS7PKMuUlsjucCRyXVgQ07ODF7piqoVFi9KD99w\n" + "AU5+9plGrZNP/wIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUA\n" + "A4GBAGPg+M+8MsB6zHN2o+jAtyqovrTTwmzVWEgfEH/aHC9+imGZRQ5lFNc2vdny\n" + "AgaJ9/izO5S6Ibb5zUowN2WhoUJOVipuQa2m9AviOgheoU7tmANC9ylm/pRkKy/0\n" + "n5UVzlKxDhRp/xBb7MWOw3KEQjiAf2Z3wCLcCPUqcJUdJC4v\n" + "-----END CERTIFICATE-----\n", "-----BEGIN CERTIFICATE-----\n" - "MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUF\n" - "ADCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYG\n" - "A1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UE\n" - "CxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl\n" - "IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYx\n" - "MTE3MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTAT\n" - "BgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT\n" - "ZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJ\n" - "bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0\n" - "ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" - "AoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQ\n" - "LZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29\n" - "dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk6KHYcWUNo1F7\n" - "7rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/KaAcd\n" - "HJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR3\n" - "2HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA\n" - "MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7\n" - "W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7OR\n" - "tvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE\n" - "uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQ\n" - "aEfZYGDm/Ac9IiAXxPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqd\n" - "E8hhuvU5HIe6uL17In/2/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+\n" - "MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+\n" - "fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA==\n" - "-----END CERTIFICATE-----\n" + "MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUF\n" + "ADCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYG\n" + "A1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UE\n" + "CxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl\n" + "IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYx\n" + "MTE3MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTAT\n" + "BgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT\n" + "ZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJ\n" + "bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0\n" + "ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" + "AoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQ\n" + "LZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29\n" + "dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk6KHYcWUNo1F7\n" + "7rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/KaAcd\n" + "HJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR3\n" + "2HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA\n" + "MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7\n" + "W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7OR\n" + "tvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE\n" + "uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQ\n" + "aEfZYGDm/Ac9IiAXxPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqd\n" + "E8hhuvU5HIe6uL17In/2/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+\n" + "MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+\n" + "fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA==\n" + "-----END CERTIFICATE-----\n" }; static const char *pem_ca = { "-----BEGIN CERTIFICATE-----\n" - "MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUF\n" - "ADCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYG\n" - "A1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UE\n" - "CxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl\n" - "IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYx\n" - "MTE3MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTAT\n" - "BgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT\n" - "ZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJ\n" - "bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0\n" - "ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" - "AoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQ\n" - "LZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29\n" - "dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk6KHYcWUNo1F7\n" - "7rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/KaAcd\n" - "HJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR3\n" - "2HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA\n" - "MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7\n" - "W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7OR\n" - "tvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE\n" - "uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQ\n" - "aEfZYGDm/Ac9IiAXxPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqd\n" - "E8hhuvU5HIe6uL17In/2/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+\n" - "MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+\n" - "fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA==\n" - "-----END CERTIFICATE-----\n" + "MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUF\n" + "ADCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYG\n" + "A1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UE\n" + "CxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl\n" + "IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYx\n" + "MTE3MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTAT\n" + "BgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT\n" + "ZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJ\n" + "bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0\n" + "ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" + "AoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQ\n" + "LZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29\n" + "dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk6KHYcWUNo1F7\n" + "7rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/KaAcd\n" + "HJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR3\n" + "2HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA\n" + "MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7\n" + "W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7OR\n" + "tvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE\n" + "uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQ\n" + "aEfZYGDm/Ac9IiAXxPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqd\n" + "E8hhuvU5HIe6uL17In/2/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+\n" + "MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+\n" + "fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA==\n" + "-----END CERTIFICATE-----\n" }; -#define CHAIN_LENGTH (sizeof (pem_certs) / sizeof (pem_certs[0])) +#define CHAIN_LENGTH (sizeof(pem_certs) / sizeof(pem_certs[0])) static const char *pem_self_cert = { "-----BEGIN CERTIFICATE-----\n" - "MIIDgjCCAmygAwIBAgIBADALBgkqhkiG9w0BAQUwSzELMAkGA1UEBhMCQlIxFDAS\n" - "BgNVBAoTC01pbmFzIExpdnJlMSYwJAYDVQQDEx1UaGFkZXUgTGltYSBkZSBTb3V6\n" - "YSBDYXNjYXJkbzAeFw0wODA1MzAxOTUzNDNaFw0wODExMjYxOTUzNDNaMEsxCzAJ\n" - "BgNVBAYTAkJSMRQwEgYDVQQKEwtNaW5hcyBMaXZyZTEmMCQGA1UEAxMdVGhhZGV1\n" - "IExpbWEgZGUgU291emEgQ2FzY2FyZG8wggEfMAsGCSqGSIb3DQEBAQOCAQ4AMIIB\n" - "CQKCAQC4D934O6wrXJbMyu1w8gu6nN0aNUDGqrX9UgaB/4xVuYhPlhjH0z9Dqic9\n" - "0pEZmyNCjQmzDSg/hnlY3fBG0i9Iel2oYn1UB4SdcJ2qGkLS87y2ZbMTS1oyMR7/\n" - "y9l3WGEWqwgjIvOjGstcZo0rCIF8Qr21QGX22KWg2HXlMaZyA9bGtJ+L+x6f2hoo\n" - "yIPCA30VMvIgHjOSPQJF3iJFE4Uxq1PQ65W91NyI6/bRKFOmFdCUJW8tqqvntYP8\n" - "hEE08wGlKimFNv7CqZuRI8QuOnhZ7pBXkyvQpW8yHrORlOHxSjkNQKjddt92TCJb\n" - "1q6eKv2CtCuDLgCuIy0Onr4U9n+hAgMBAAGjeDB2MA8GA1UdEwEB/wQFMAMBAf8w\n" - "HgYDVR0RBBcwFYITbWFpbC5taW5hc2xpdnJlLm9yZzATBgNVHSUEDDAKBggrBgEF\n" - "BQcDATAPBgNVHQ8BAf8EBQMDB6QAMB0GA1UdDgQWBBQ/5v42y0jBHUKEfqpPmr5a\n" - "WsjCGjALBgkqhkiG9w0BAQUDggEBAC/WfO2yK3vM9bG0qFEj8sd0cWiapMhf5PtH\n" - "jigcPb/OKqSFQVXpAdNiUclPRP79Ih3CuWiXfZ/CW0+k2Z8tyy6AnEQItWvoVh/b\n" - "8lS7Ph/f9JUYHp2DtgsQWcNQbrUZOPFBu8J4MD6cDWG5Uxwl3YASg30ZdmMDNT8B\n" - "HshYz0HUOAhYwVSI3J/f7LFhD5OpjSroHgE7wA9UJrerAp9f7e3e9D7kNQ8DlvLP\n" - "kz6Jh+5M/xD3JO1yl+evaCp3LA+z4M2xiNvtzkAEgj3t6RaJ81Sh5XGiooDYZ14R\n" - "DgEBYLTUfBYBPzoaahPEdG/f0kUjUBJ34fkBUSjJKURPTHJfDfA=\n" - "-----END CERTIFICATE-----\n" + "MIIDgjCCAmygAwIBAgIBADALBgkqhkiG9w0BAQUwSzELMAkGA1UEBhMCQlIxFDAS\n" + "BgNVBAoTC01pbmFzIExpdnJlMSYwJAYDVQQDEx1UaGFkZXUgTGltYSBkZSBTb3V6\n" + "YSBDYXNjYXJkbzAeFw0wODA1MzAxOTUzNDNaFw0wODExMjYxOTUzNDNaMEsxCzAJ\n" + "BgNVBAYTAkJSMRQwEgYDVQQKEwtNaW5hcyBMaXZyZTEmMCQGA1UEAxMdVGhhZGV1\n" + "IExpbWEgZGUgU291emEgQ2FzY2FyZG8wggEfMAsGCSqGSIb3DQEBAQOCAQ4AMIIB\n" + "CQKCAQC4D934O6wrXJbMyu1w8gu6nN0aNUDGqrX9UgaB/4xVuYhPlhjH0z9Dqic9\n" + "0pEZmyNCjQmzDSg/hnlY3fBG0i9Iel2oYn1UB4SdcJ2qGkLS87y2ZbMTS1oyMR7/\n" + "y9l3WGEWqwgjIvOjGstcZo0rCIF8Qr21QGX22KWg2HXlMaZyA9bGtJ+L+x6f2hoo\n" + "yIPCA30VMvIgHjOSPQJF3iJFE4Uxq1PQ65W91NyI6/bRKFOmFdCUJW8tqqvntYP8\n" + "hEE08wGlKimFNv7CqZuRI8QuOnhZ7pBXkyvQpW8yHrORlOHxSjkNQKjddt92TCJb\n" + "1q6eKv2CtCuDLgCuIy0Onr4U9n+hAgMBAAGjeDB2MA8GA1UdEwEB/wQFMAMBAf8w\n" + "HgYDVR0RBBcwFYITbWFpbC5taW5hc2xpdnJlLm9yZzATBgNVHSUEDDAKBggrBgEF\n" + "BQcDATAPBgNVHQ8BAf8EBQMDB6QAMB0GA1UdDgQWBBQ/5v42y0jBHUKEfqpPmr5a\n" + "WsjCGjALBgkqhkiG9w0BAQUDggEBAC/WfO2yK3vM9bG0qFEj8sd0cWiapMhf5PtH\n" + "jigcPb/OKqSFQVXpAdNiUclPRP79Ih3CuWiXfZ/CW0+k2Z8tyy6AnEQItWvoVh/b\n" + "8lS7Ph/f9JUYHp2DtgsQWcNQbrUZOPFBu8J4MD6cDWG5Uxwl3YASg30ZdmMDNT8B\n" + "HshYz0HUOAhYwVSI3J/f7LFhD5OpjSroHgE7wA9UJrerAp9f7e3e9D7kNQ8DlvLP\n" + "kz6Jh+5M/xD3JO1yl+evaCp3LA+z4M2xiNvtzkAEgj3t6RaJ81Sh5XGiooDYZ14R\n" + "DgEBYLTUfBYBPzoaahPEdG/f0kUjUBJ34fkBUSjJKURPTHJfDfA=\n" + "-----END CERTIFICATE-----\n" }; int main(int argc, char *argv[]) @@ -163,16 +164,16 @@ int main(int argc, char *argv[]) for (i = 0; i < CHAIN_LENGTH; i++) { ret = gnutls_x509_crt_init(&certs[i]); if (ret < 0) { - fprintf(stderr, "gnutls_x509_crt_init[%d]: %s", - (int)i, gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_crt_init[%d]: %s", (int)i, + gnutls_strerror(ret)); exit(1); } tmp.data = (unsigned char *)pem_certs[i]; tmp.size = strlen(pem_certs[i]); - ret = - gnutls_x509_crt_import(certs[i], &tmp, GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(certs[i], &tmp, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fprintf(stderr, "gnutls_x509_crt_import[%d]: %s", (int)i, gnutls_strerror(ret)); @@ -197,15 +198,13 @@ int main(int argc, char *argv[]) exit(1); } - ret = gnutls_x509_crt_list_verify(certs, CHAIN_LENGTH, - &ca, 1, - NULL, 0, + ret = gnutls_x509_crt_list_verify(certs, CHAIN_LENGTH, &ca, 1, NULL, 0, GNUTLS_VERIFY_DISABLE_TIME_CHECKS | - GNUTLS_VERIFY_ALLOW_BROKEN, + GNUTLS_VERIFY_ALLOW_BROKEN, &verify_status); if (ret < 0) { - fprintf(stderr, "gnutls_x509_crt_list_verify[%d]: %s", - (int)i, gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_crt_list_verify[%d]: %s", (int)i, + gnutls_strerror(ret)); exit(1); } @@ -238,14 +237,12 @@ int main(int argc, char *argv[]) gnutls_strerror(ret)); exit(1); } - ret = gnutls_x509_crt_list_verify(&self_cert, 1, - &self_cert, 1, - NULL, 0, + ret = gnutls_x509_crt_list_verify(&self_cert, 1, &self_cert, 1, NULL, 0, GNUTLS_VERIFY_DISABLE_TIME_CHECKS, &verify_status); if (ret < 0) { - fprintf(stderr, "gnutls_x509_crt_list_verify[%d]: %s", - (int)i, gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_crt_list_verify[%d]: %s", (int)i, + gnutls_strerror(ret)); exit(1); } diff --git a/tests/cve-2009-1415.c b/tests/cve-2009-1415.c index 8827bd2d7d..50e76691bb 100644 --- a/tests/cve-2009-1415.c +++ b/tests/cve-2009-1415.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* @@ -49,30 +49,29 @@ #include static char dsa_cert[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIDbzCCAtqgAwIBAgIERiYdRTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTQxWhcNMDgwNDE3MTMyOTQxWjA3MRsw\n" - "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" - "Lm9yZzCCAbQwggEpBgcqhkjOOAQBMIIBHAKBgLmE9VqBvhoNxYpzjwybL5u2DkvD\n" - "dBp/ZK2d8yjFoEe8m1dW8ZfVfjcD6fJM9OOLfzCjXS+7oaI3wuo1jx+xX6aiXwHx\n" - "IzYr5E8vLd2d1TqmOa96UXzSJY6XdM8exXtLdkOBBx8GFLhuWBLhkOI3b9Ib7GjF\n" - "WOLmMOBqXixjeOwHAhSfVoxIZC/+jap6bZbbBF0W7wilcQKBgGIGfuRcdgi3Rhpd\n" - "15fUKiH7HzHJ0vT6Odgn0Zv8J12nCqca/FPBL0PCN8iFfz1Mq12BMvsdXh5UERYg\n" - "xoBa2YybQ/Dda6D0w/KKnDnSHHsP7/ook4/SoSLr3OCKi60oDs/vCYXpNr2LelDV\n" - "e/clDWxgEcTvcJDP1hvru47GPjqXA4GEAAKBgA+Kh1fy0cLcrN9Liw+Luin34QPk\n" - "VfqymAfW/RKxgLz1urRQ1H+gDkPnn8l4EV/l5Awsa2qkNdy9VOVgNpox0YpZbmsc\n" - "ur0uuut8h+/ayN2h66SD5out+vqOW9c3yDI+lsI+9EPafZECD7e8+O+P90EAXpbf\n" - "DwiW3Oqy6QaCr9Ivo4GTMIGQMAwGA1UdEwEB/wQCMAAwGgYDVR0RBBMwEYIPdGVz\n" - "dC5nbnV0bHMub3JnMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA8GA1UdDwEB/wQFAwMH\n" - "gAAwHQYDVR0OBBYEFL/su87Y6HtwVuzz0SuS1tSZClvzMB8GA1UdIwQYMBaAFOk8\n" - "HPutkm7mBqRWLKLhwFMnyPKVMAsGCSqGSIb3DQEBBQOBgQBCsrnfD1xzh8/Eih1f\n" - "x+M0lPoX1Re5L2ElHI6DJpHYOBPwf9glwxnet2+avzgUQDUFwUSxOhodpyeaACXD\n" - "o0gGVpcH8sOBTQ+aTdM37hGkPxoXjtIkR/LgG5nP2H2JRd5TkW8l13JdM4MJFB4W\n" - "QcDzQ8REwidsfh9uKAluk1c/KQ==\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t dsa_cert_dat = { - (void *)dsa_cert, sizeof(dsa_cert) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIIDbzCCAtqgAwIBAgIERiYdRTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTQxWhcNMDgwNDE3MTMyOTQxWjA3MRsw\n" + "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" + "Lm9yZzCCAbQwggEpBgcqhkjOOAQBMIIBHAKBgLmE9VqBvhoNxYpzjwybL5u2DkvD\n" + "dBp/ZK2d8yjFoEe8m1dW8ZfVfjcD6fJM9OOLfzCjXS+7oaI3wuo1jx+xX6aiXwHx\n" + "IzYr5E8vLd2d1TqmOa96UXzSJY6XdM8exXtLdkOBBx8GFLhuWBLhkOI3b9Ib7GjF\n" + "WOLmMOBqXixjeOwHAhSfVoxIZC/+jap6bZbbBF0W7wilcQKBgGIGfuRcdgi3Rhpd\n" + "15fUKiH7HzHJ0vT6Odgn0Zv8J12nCqca/FPBL0PCN8iFfz1Mq12BMvsdXh5UERYg\n" + "xoBa2YybQ/Dda6D0w/KKnDnSHHsP7/ook4/SoSLr3OCKi60oDs/vCYXpNr2LelDV\n" + "e/clDWxgEcTvcJDP1hvru47GPjqXA4GEAAKBgA+Kh1fy0cLcrN9Liw+Luin34QPk\n" + "VfqymAfW/RKxgLz1urRQ1H+gDkPnn8l4EV/l5Awsa2qkNdy9VOVgNpox0YpZbmsc\n" + "ur0uuut8h+/ayN2h66SD5out+vqOW9c3yDI+lsI+9EPafZECD7e8+O+P90EAXpbf\n" + "DwiW3Oqy6QaCr9Ivo4GTMIGQMAwGA1UdEwEB/wQCMAAwGgYDVR0RBBMwEYIPdGVz\n" + "dC5nbnV0bHMub3JnMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA8GA1UdDwEB/wQFAwMH\n" + "gAAwHQYDVR0OBBYEFL/su87Y6HtwVuzz0SuS1tSZClvzMB8GA1UdIwQYMBaAFOk8\n" + "HPutkm7mBqRWLKLhwFMnyPKVMAsGCSqGSIb3DQEBBQOBgQBCsrnfD1xzh8/Eih1f\n" + "x+M0lPoX1Re5L2ElHI6DJpHYOBPwf9glwxnet2+avzgUQDUFwUSxOhodpyeaACXD\n" + "o0gGVpcH8sOBTQ+aTdM37hGkPxoXjtIkR/LgG5nP2H2JRd5TkW8l13JdM4MJFB4W\n" + "QcDzQ8REwidsfh9uKAluk1c/KQ==\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t dsa_cert_dat = { (void *)dsa_cert, sizeof(dsa_cert) }; int main(void) { @@ -100,9 +99,8 @@ int main(void) if (ret < 0) return 1; - ret = - gnutls_pubkey_verify_data2(pubkey, GNUTLS_SIGN_DSA_SHA1, 0, &data, - &sig); + ret = gnutls_pubkey_verify_data2(pubkey, GNUTLS_SIGN_DSA_SHA1, 0, &data, + &sig); if (ret < 0 && ret != GNUTLS_E_PK_SIG_VERIFY_FAILED) return 1; diff --git a/tests/cve-2009-1416.c b/tests/cve-2009-1416.c index a06f56bb34..ba74857b73 100644 --- a/tests/cve-2009-1416.c +++ b/tests/cve-2009-1416.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* diff --git a/tests/dane-strcodes.c b/tests/dane-strcodes.c index 4ea3182777..4bf7e96af4 100644 --- a/tests/dane-strcodes.c +++ b/tests/dane-strcodes.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,8 +35,7 @@ * non null value. */ -static -void _check_unique_non_null(int line, int i, const char *val) +static void _check_unique_non_null(int line, int i, const char *val) { static char previous_val[128]; diff --git a/tests/dane.c b/tests/dane.c index 258163f0e7..37b792145a 100644 --- a/tests/dane.c +++ b/tests/dane.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -43,435 +43,412 @@ struct data_entry_st { int bogus; const char *cert; const char *ca; - unsigned expected_status; /* if cert is non-null */ - int expected_verify_ret; /* if cert is non-null */ + unsigned expected_status; /* if cert is non-null */ + int expected_verify_ret; /* if cert is non-null */ }; const struct data_entry_st data_entries[] = { - { - .name = "Entry parsing", - .queries = { - (char *) - "\x00\x00\x01\x19\x40\x0b\xe5\xb7\xa3\x1f\xb7\x33\x91\x77\x00\x78\x9d\x2f\x0a\x24\x71\xc0\xc9\xd5\x06\xc0\xe5\x04\xc0\x6c\x16\xd7\xcb\x17\xc0", - (char *) - "\x03\x00\x01\x03\x32\xaa\x2d\x58\xb3\xe0\x54\x4b\x65\x65\x64\x38\x93\x70\x68\xba\x44\xce\x2f\x14\x46\x9c\x4f\x50\xc9\xcc\x69\x33\xc8\x08\xd3", - (char *) - "\x03\x01\x01\x46\x25\x73\x19\x5c\x86\xe8\x61\xab\xab\x8e\xcc\xfb\xc7\xf0\x48\x69\x58\xef\xdf\xf9\x44\x9a\xc1\x07\x29\xb3\xa0\xf9\x06\xf3\x88", - NULL}, - .q_size = {35, 35, 35, 0}, - .expected_ret = 0, - .no_queries = 3, - .secure = 1, - .bogus = 0}, - { /* as the previous but with first byte invalid */ - .name = "Cert verification (single entry)", - .queries = { - (char *) - "\x03\x01\x01\x54\x4f\x28\x4d\x66\xaf\x2d\xe0\x8c\x17\xe7\x48\x6a\xed\xfa\x2e\x00\xaa\x1a\xc6\xbb\xf3\xaf\x5c\xa6\x2b\x55\xab\x7a\xc2\x69\xbe", - NULL}, - .q_size = {35, 35, 35, 0}, - .expected_ret = 0, - .no_queries = 1, - .secure = 1, - .bogus = 0, - .expected_verify_ret = 0, - .expected_status = 0, - .cert = "-----BEGIN CERTIFICATE-----\n" - "MIIE+DCCA+CgAwIBAgISESHVV5p9ybDcuT+A7ITU5IQYMA0GCSqGSIb3DQEBCwUA\n" - "MGAxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTYwNAYD\n" - "VQQDEy1HbG9iYWxTaWduIERvbWFpbiBWYWxpZGF0aW9uIENBIC0gU0hBMjU2IC0g\n" - "RzIwHhcNMTUxMDIxMDkxOTAwWhcNMTYxMjE4MTY1NDU2WjA8MSEwHwYDVQQLExhE\n" - "b21haW4gQ29udHJvbCBWYWxpZGF0ZWQxFzAVBgNVBAMMDioubmxuZXRsYWJzLm5s\n" - "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzHpmwd7SC6vLKde0IcYD\n" - "rrVcSSZFNrmP6Wtw5rR7KTBGfj70lCzo1Tu4KzOeFL23cB/Y8kWPojw73eYM+lnr\n" - "woZmdG28q+nYeZYRNjFpeLmwK87bpWxw760FrdQSdPrgM9uZS02AWD8PWIWZQ+0X\n" - "5XbkgSSjgSRAeT6Ki+8r9TcA+rgUv208kHVgFrBqeNQ//oRojN/7tBbbXrVTy37W\n" - "yWLCijExfBzQSsamZqskwhmzYyCJOXCqHUGh/Nyt9WvcX4YE7ogba33M7EQX2C37\n" - "ZH+XcmHGdhhLahuMoAm39mchN8TwY7R6DtmvM/WhDdc4dkEWjvrUnGYQhajsKVIZ\n" - "oQIDAQABo4IBzjCCAcowDgYDVR0PAQH/BAQDAgWgMEkGA1UdIARCMEAwPgYGZ4EM\n" - "AQIBMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3Jl\n" - "cG9zaXRvcnkvMCcGA1UdEQQgMB6CDioubmxuZXRsYWJzLm5sggxubG5ldGxhYnMu\n" - "bmwwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwQwYD\n" - "VR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9ncy9nc2Rv\n" - "bWFpbnZhbHNoYTJnMi5jcmwwgZQGCCsGAQUFBwEBBIGHMIGEMEcGCCsGAQUFBzAC\n" - "hjtodHRwOi8vc2VjdXJlLmdsb2JhbHNpZ24uY29tL2NhY2VydC9nc2RvbWFpbnZh\n" - "bHNoYTJnMnIxLmNydDA5BggrBgEFBQcwAYYtaHR0cDovL29jc3AyLmdsb2JhbHNp\n" - "Z24uY29tL2dzZG9tYWludmFsc2hhMmcyMB0GA1UdDgQWBBR8k4wtqr2L7in153sI\n" - "aE9Eo+ZB5zAfBgNVHSMEGDAWgBTqTnzUgC3lFYGGJoyCbcCYpM+XDzANBgkqhkiG\n" - "9w0BAQsFAAOCAQEAHgjG+iHJ8INGp/J0VskjmMItSdcTJhsQbAf1Pz1eu87cXhFa\n" - "Vro1xRN9KcsKhnd6TbflDpZkM0g9kX1nGZUWLxMmDbx6N/Y+0X9XHBkgTcVgo1gn\n" - "DkzBfMq/Qmy6Szl+RqNinvM2VjkjreWP2AFmIvbZxjMQDAtSs+5l1Qd+xR3Qxrim\n" - "5XFIaS7lR8ediLKO0trf7TcbXYZ72u3pxVxm7y2Vzi4mC+lcEcc6409b1yeSRbx/\n" - "9N6pYa8Uk3ZaeR6hZHx/g448vVwAqmKrsyJZOayDwHxrFeFWPfJSrFlT8kLmkr5A\n" - "VKOWjR5fslCGWqONiFHhyujZocIw03v5+kD9lw==\n" - "-----END CERTIFICATE-----\n"}, - { - .name = "Cert verification (multi entries)", - .queries = { - (char *) - "\x00\x00\x01\x19\x40\x0b\xe5\xb7\xa3\x1f\xb7\x33\x91\x77\x00\x78\x9d\x2f\x0a\x24\x71\xc0\xc9\xd5\x06\xc0\xe5\x04\xc0\x6c\x16\xd7\xcb\x17\xc0", - (char *) - "\x03\x01\x01\x54\x4f\x28\x4d\x66\xaf\x2d\xe0\x8c\x17\xe7\x48\x6a\xed\xfa\x2e\x00\xaa\x1a\xc6\xbb\xf3\xaf\x5c\xa6\x2b\x55\xab\x7a\xc2\x69\xbe", - (char *) - "\x03\x00\x01\x03\x32\xaa\x2d\x58\xb3\xe0\x54\x4b\x65\x65\x64\x38\x93\x70\x68\xba\x44\xce\x2f\x14\x46\x9c\x4f\x50\xc9\xcc\x69\x33\xc8\x08\xd3", - NULL}, - .q_size = {35, 35, 35, 0}, - .expected_ret = 0, - .no_queries = 3, - .secure = 1, - .bogus = 0, - .expected_verify_ret = 0, - .expected_status = 0, - .cert = "-----BEGIN CERTIFICATE-----\n" - "MIIE+DCCA+CgAwIBAgISESHVV5p9ybDcuT+A7ITU5IQYMA0GCSqGSIb3DQEBCwUA\n" - "MGAxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTYwNAYD\n" - "VQQDEy1HbG9iYWxTaWduIERvbWFpbiBWYWxpZGF0aW9uIENBIC0gU0hBMjU2IC0g\n" - "RzIwHhcNMTUxMDIxMDkxOTAwWhcNMTYxMjE4MTY1NDU2WjA8MSEwHwYDVQQLExhE\n" - "b21haW4gQ29udHJvbCBWYWxpZGF0ZWQxFzAVBgNVBAMMDioubmxuZXRsYWJzLm5s\n" - "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzHpmwd7SC6vLKde0IcYD\n" - "rrVcSSZFNrmP6Wtw5rR7KTBGfj70lCzo1Tu4KzOeFL23cB/Y8kWPojw73eYM+lnr\n" - "woZmdG28q+nYeZYRNjFpeLmwK87bpWxw760FrdQSdPrgM9uZS02AWD8PWIWZQ+0X\n" - "5XbkgSSjgSRAeT6Ki+8r9TcA+rgUv208kHVgFrBqeNQ//oRojN/7tBbbXrVTy37W\n" - "yWLCijExfBzQSsamZqskwhmzYyCJOXCqHUGh/Nyt9WvcX4YE7ogba33M7EQX2C37\n" - "ZH+XcmHGdhhLahuMoAm39mchN8TwY7R6DtmvM/WhDdc4dkEWjvrUnGYQhajsKVIZ\n" - "oQIDAQABo4IBzjCCAcowDgYDVR0PAQH/BAQDAgWgMEkGA1UdIARCMEAwPgYGZ4EM\n" - "AQIBMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3Jl\n" - "cG9zaXRvcnkvMCcGA1UdEQQgMB6CDioubmxuZXRsYWJzLm5sggxubG5ldGxhYnMu\n" - "bmwwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwQwYD\n" - "VR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9ncy9nc2Rv\n" - "bWFpbnZhbHNoYTJnMi5jcmwwgZQGCCsGAQUFBwEBBIGHMIGEMEcGCCsGAQUFBzAC\n" - "hjtodHRwOi8vc2VjdXJlLmdsb2JhbHNpZ24uY29tL2NhY2VydC9nc2RvbWFpbnZh\n" - "bHNoYTJnMnIxLmNydDA5BggrBgEFBQcwAYYtaHR0cDovL29jc3AyLmdsb2JhbHNp\n" - "Z24uY29tL2dzZG9tYWludmFsc2hhMmcyMB0GA1UdDgQWBBR8k4wtqr2L7in153sI\n" - "aE9Eo+ZB5zAfBgNVHSMEGDAWgBTqTnzUgC3lFYGGJoyCbcCYpM+XDzANBgkqhkiG\n" - "9w0BAQsFAAOCAQEAHgjG+iHJ8INGp/J0VskjmMItSdcTJhsQbAf1Pz1eu87cXhFa\n" - "Vro1xRN9KcsKhnd6TbflDpZkM0g9kX1nGZUWLxMmDbx6N/Y+0X9XHBkgTcVgo1gn\n" - "DkzBfMq/Qmy6Szl+RqNinvM2VjkjreWP2AFmIvbZxjMQDAtSs+5l1Qd+xR3Qxrim\n" - "5XFIaS7lR8ediLKO0trf7TcbXYZ72u3pxVxm7y2Vzi4mC+lcEcc6409b1yeSRbx/\n" - "9N6pYa8Uk3ZaeR6hZHx/g448vVwAqmKrsyJZOayDwHxrFeFWPfJSrFlT8kLmkr5A\n" - "VKOWjR5fslCGWqONiFHhyujZocIw03v5+kD9lw==\n" - "-----END CERTIFICATE-----\n"}, - { - .name = "Cert verification (invalid hash)", - .queries = { - (char *) - "\x03\x01\x01\x54\x4f\x28\x4d\x66\xaf\x2d\xe0\x8c\x17\xe7\x49\x6a\xed\xfa\x2e\x00\xaa\x1a\xc6\xbb\xf3\xaf\x5c\xa6\x2b\x55\xab\x7a\xc2\x69\xbe", - NULL}, - .q_size = {35, 0}, - .expected_ret = 0, - .no_queries = 1, - .secure = 1, - .bogus = 0, - .expected_verify_ret = 0, - .expected_status = DANE_VERIFY_CERT_DIFFERS, - .cert = "-----BEGIN CERTIFICATE-----\n" - "MIIE+DCCA+CgAwIBAgISESHVV5p9ybDcuT+A7ITU5IQYMA0GCSqGSIb3DQEBCwUA\n" - "MGAxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTYwNAYD\n" - "VQQDEy1HbG9iYWxTaWduIERvbWFpbiBWYWxpZGF0aW9uIENBIC0gU0hBMjU2IC0g\n" - "RzIwHhcNMTUxMDIxMDkxOTAwWhcNMTYxMjE4MTY1NDU2WjA8MSEwHwYDVQQLExhE\n" - "b21haW4gQ29udHJvbCBWYWxpZGF0ZWQxFzAVBgNVBAMMDioubmxuZXRsYWJzLm5s\n" - "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzHpmwd7SC6vLKde0IcYD\n" - "rrVcSSZFNrmP6Wtw5rR7KTBGfj70lCzo1Tu4KzOeFL23cB/Y8kWPojw73eYM+lnr\n" - "woZmdG28q+nYeZYRNjFpeLmwK87bpWxw760FrdQSdPrgM9uZS02AWD8PWIWZQ+0X\n" - "5XbkgSSjgSRAeT6Ki+8r9TcA+rgUv208kHVgFrBqeNQ//oRojN/7tBbbXrVTy37W\n" - "yWLCijExfBzQSsamZqskwhmzYyCJOXCqHUGh/Nyt9WvcX4YE7ogba33M7EQX2C37\n" - "ZH+XcmHGdhhLahuMoAm39mchN8TwY7R6DtmvM/WhDdc4dkEWjvrUnGYQhajsKVIZ\n" - "oQIDAQABo4IBzjCCAcowDgYDVR0PAQH/BAQDAgWgMEkGA1UdIARCMEAwPgYGZ4EM\n" - "AQIBMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3Jl\n" - "cG9zaXRvcnkvMCcGA1UdEQQgMB6CDioubmxuZXRsYWJzLm5sggxubG5ldGxhYnMu\n" - "bmwwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwQwYD\n" - "VR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9ncy9nc2Rv\n" - "bWFpbnZhbHNoYTJnMi5jcmwwgZQGCCsGAQUFBwEBBIGHMIGEMEcGCCsGAQUFBzAC\n" - "hjtodHRwOi8vc2VjdXJlLmdsb2JhbHNpZ24uY29tL2NhY2VydC9nc2RvbWFpbnZh\n" - "bHNoYTJnMnIxLmNydDA5BggrBgEFBQcwAYYtaHR0cDovL29jc3AyLmdsb2JhbHNp\n" - "Z24uY29tL2dzZG9tYWludmFsc2hhMmcyMB0GA1UdDgQWBBR8k4wtqr2L7in153sI\n" - "aE9Eo+ZB5zAfBgNVHSMEGDAWgBTqTnzUgC3lFYGGJoyCbcCYpM+XDzANBgkqhkiG\n" - "9w0BAQsFAAOCAQEAHgjG+iHJ8INGp/J0VskjmMItSdcTJhsQbAf1Pz1eu87cXhFa\n" - "Vro1xRN9KcsKhnd6TbflDpZkM0g9kX1nGZUWLxMmDbx6N/Y+0X9XHBkgTcVgo1gn\n" - "DkzBfMq/Qmy6Szl+RqNinvM2VjkjreWP2AFmIvbZxjMQDAtSs+5l1Qd+xR3Qxrim\n" - "5XFIaS7lR8ediLKO0trf7TcbXYZ72u3pxVxm7y2Vzi4mC+lcEcc6409b1yeSRbx/\n" - "9N6pYa8Uk3ZaeR6hZHx/g448vVwAqmKrsyJZOayDwHxrFeFWPfJSrFlT8kLmkr5A\n" - "VKOWjR5fslCGWqONiFHhyujZocIw03v5+kD9lw==\n" - "-----END CERTIFICATE-----\n"}, - { - .name = "Cert verification (bogus data)", - .queries = { - (char *) - "\x00\x00\x01\x19\x40\x0b\xe5\xb7\xa3\x1f\xb7\x33\x91\x77\x00\x78\x9d\x2f\x0a\x24\x71\xc0\xc9\xd5\x06\xc0\xe5\x04\xc0\x6c\x16\xd7\xcb\x17\xc0", - NULL}, - .q_size = {35, 0}, - .expected_ret = 0, - .no_queries = 1, - .secure = 1, - .bogus = 0, - .expected_verify_ret = DANE_E_REQUESTED_DATA_NOT_AVAILABLE, - .expected_status = -1, - .cert = "-----BEGIN CERTIFICATE-----\n" - "MIIE+DCCA+CgAwIBAgISESHVV5p9ybDcuT+A7ITU5IQYMA0GCSqGSIb3DQEBCwUA\n" - "MGAxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTYwNAYD\n" - "VQQDEy1HbG9iYWxTaWduIERvbWFpbiBWYWxpZGF0aW9uIENBIC0gU0hBMjU2IC0g\n" - "RzIwHhcNMTUxMDIxMDkxOTAwWhcNMTYxMjE4MTY1NDU2WjA8MSEwHwYDVQQLExhE\n" - "b21haW4gQ29udHJvbCBWYWxpZGF0ZWQxFzAVBgNVBAMMDioubmxuZXRsYWJzLm5s\n" - "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzHpmwd7SC6vLKde0IcYD\n" - "rrVcSSZFNrmP6Wtw5rR7KTBGfj70lCzo1Tu4KzOeFL23cB/Y8kWPojw73eYM+lnr\n" - "woZmdG28q+nYeZYRNjFpeLmwK87bpWxw760FrdQSdPrgM9uZS02AWD8PWIWZQ+0X\n" - "5XbkgSSjgSRAeT6Ki+8r9TcA+rgUv208kHVgFrBqeNQ//oRojN/7tBbbXrVTy37W\n" - "yWLCijExfBzQSsamZqskwhmzYyCJOXCqHUGh/Nyt9WvcX4YE7ogba33M7EQX2C37\n" - "ZH+XcmHGdhhLahuMoAm39mchN8TwY7R6DtmvM/WhDdc4dkEWjvrUnGYQhajsKVIZ\n" - "oQIDAQABo4IBzjCCAcowDgYDVR0PAQH/BAQDAgWgMEkGA1UdIARCMEAwPgYGZ4EM\n" - "AQIBMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3Jl\n" - "cG9zaXRvcnkvMCcGA1UdEQQgMB6CDioubmxuZXRsYWJzLm5sggxubG5ldGxhYnMu\n" - "bmwwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwQwYD\n" - "VR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9ncy9nc2Rv\n" - "bWFpbnZhbHNoYTJnMi5jcmwwgZQGCCsGAQUFBwEBBIGHMIGEMEcGCCsGAQUFBzAC\n" - "hjtodHRwOi8vc2VjdXJlLmdsb2JhbHNpZ24uY29tL2NhY2VydC9nc2RvbWFpbnZh\n" - "bHNoYTJnMnIxLmNydDA5BggrBgEFBQcwAYYtaHR0cDovL29jc3AyLmdsb2JhbHNp\n" - "Z24uY29tL2dzZG9tYWludmFsc2hhMmcyMB0GA1UdDgQWBBR8k4wtqr2L7in153sI\n" - "aE9Eo+ZB5zAfBgNVHSMEGDAWgBTqTnzUgC3lFYGGJoyCbcCYpM+XDzANBgkqhkiG\n" - "9w0BAQsFAAOCAQEAHgjG+iHJ8INGp/J0VskjmMItSdcTJhsQbAf1Pz1eu87cXhFa\n" - "Vro1xRN9KcsKhnd6TbflDpZkM0g9kX1nGZUWLxMmDbx6N/Y+0X9XHBkgTcVgo1gn\n" - "DkzBfMq/Qmy6Szl+RqNinvM2VjkjreWP2AFmIvbZxjMQDAtSs+5l1Qd+xR3Qxrim\n" - "5XFIaS7lR8ediLKO0trf7TcbXYZ72u3pxVxm7y2Vzi4mC+lcEcc6409b1yeSRbx/\n" - "9N6pYa8Uk3ZaeR6hZHx/g448vVwAqmKrsyJZOayDwHxrFeFWPfJSrFlT8kLmkr5A\n" - "VKOWjR5fslCGWqONiFHhyujZocIw03v5+kD9lw==\n" - "-----END CERTIFICATE-----\n"}, - { - .name = "CA verification (valid)", - .queries = { - (char *) - "\x00\x00\x01\x19\x40\x0b\xe5\xb7\xa3\x1f\xb7\x33\x91\x77\x00\x78\x9d\x2f\x0a\x24\x71\xc0\xc9\xd5\x06\xc0\xe5\x04\xc0\x6c\x16\xd7\xcb\x17\xc0", - NULL}, - .q_size = {35, 0}, - .expected_ret = 0, - .no_queries = 1, - .secure = 1, - .bogus = 0, - .expected_verify_ret = 0, - .expected_status = 0, - .cert = "-----BEGIN CERTIFICATE-----\n" - "MIIGXjCCBUagAwIBAgIQBNO3A71kyzonos0JsLRHrjANBgkqhkiG9w0BAQsFADBw\n" - "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n" - "d3cuZGlnaWNlcnQuY29tMS8wLQYDVQQDEyZEaWdpQ2VydCBTSEEyIEhpZ2ggQXNz\n" - "dXJhbmNlIFNlcnZlciBDQTAeFw0xNDA0MjIwMDAwMDBaFw0xNzA0MjYxMjAwMDBa\n" - "MG0xCzAJBgNVBAYTAlVTMRcwFQYDVQQIEw5Ob3J0aCBDYXJvbGluYTEQMA4GA1UE\n" - "BxMHUmFsZWlnaDEVMBMGA1UEChMMUmVkIEhhdCBJbmMuMRwwGgYDVQQDDBMqLmZl\n" - "ZG9yYXByb2plY3Qub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA\n" - "vpd22JvToGSgnx2CBtfdoqvraQWNpQ1aXd/PSM0PVIqEjutrKJF7Xhr7DgHRLOhy\n" - "ko1CzfSp5n6nB7raqDq2kddWgqL3tuyb+lSwdQRGuJZsWW3CCwzR3VNRQUnPldpd\n" - "vqHVSkjHkIZYVcZ2FnMYWEa43ESnmgiQGBg4G+T7/9Pv+10SQ+fOE175GWZKHkJm\n" - "vJZAjIO2uxvJ/rCq3YQI6hdAsclIiSZ4X8UXWt0IMjp/RdCCnv+SS4XCirZ/IDqM\n" - "H+WdMllD0/cbgIOr4SXEuUPEJcI5NziuILe05RefFeZXoC6dxNWr8BvAjxxrZtpS\n" - "/7OMwE+WYkVIH8fkgCTVfsa2ZOvMM5CWzxqWKhbFsbw6EGSVIIUtI3C28i3rjLjr\n" - "XZ/94k3pf3i/u6DzUmlWm8psn6XZXru0+FKPTrmeDluyuxJsgzudk8mF8Cjw/Oc0\n" - "IHVg6Qw/Dm/OM9cAVqmb6ld3GF+QlkzTwurEGKeGj8s8Td0WoPOf6apB/PIaDIu1\n" - "rJphTVyGNqfKqMFFOwqH/M9CVtaEfwYqT9aB8OSE8MtFe3L1WypEq4tK8VUtoi98\n" - "0S9mz4fxathakM+js1eyup/uz0W4cKIFbONLgod0g1arMmSB1Ox7GD6qaUC6zKr8\n" - "hWcKMROSg8VFYMhqwGR2k64knXDsVH1mAOgRbJabr3ECAwEAAaOCAfUwggHxMB8G\n" - "A1UdIwQYMBaAFFFo/5CvAgd1PMzZZWRiohK4WXI7MB0GA1UdDgQWBBRaTFeTslW8\n" - "sjOiEWQkQoHtHefJIjAxBgNVHREEKjAoghMqLmZlZG9yYXByb2plY3Qub3JnghFm\n" - "ZWRvcmFwcm9qZWN0Lm9yZzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB\n" - "BQUHAwEGCCsGAQUFBwMCMHUGA1UdHwRuMGwwNKAyoDCGLmh0dHA6Ly9jcmwzLmRp\n" - "Z2ljZXJ0LmNvbS9zaGEyLWhhLXNlcnZlci1nMi5jcmwwNKAyoDCGLmh0dHA6Ly9j\n" - "cmw0LmRpZ2ljZXJ0LmNvbS9zaGEyLWhhLXNlcnZlci1nMi5jcmwwQgYDVR0gBDsw\n" - "OTA3BglghkgBhv1sAQEwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNl\n" - "cnQuY29tL0NQUzCBgwYIKwYBBQUHAQEEdzB1MCQGCCsGAQUFBzABhhhodHRwOi8v\n" - "b2NzcC5kaWdpY2VydC5jb20wTQYIKwYBBQUHMAKGQWh0dHA6Ly9jYWNlcnRzLmRp\n" - "Z2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJIaWdoQXNzdXJhbmNlU2VydmVyQ0EuY3J0\n" - "MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggEBADSBIYR5GwUfYTHlXeej\n" - "tgOMbGIiBD1YPBNlP7vLiGc9+Z4rUxWy/TkL7WUFJf1L88ph1CUQ8TbRjLz2RqL8\n" - "snkFWjMsH9ddnwTO4zkCtTjC9fu+broPkmvzmHq2hlXuiDz9G7XvjtbtPujrrKOz\n" - "o1pPAEl5c4B0ANaYL0OMUDhvskJguVMC5S/ZNuvNg6k3jkKZWGZPfcxgcZoPvBM8\n" - "oIjImGyUMpy7bqRPp4K2xoN530GjoXg8OWIvyAwA06ENLZrU1fcSJsvH2gZVzk8s\n" - "EvqFNFnOJN3aQ21imUjAesJ9dXSeCpscDDHqwzmRPuj2/QgtpMCmSZf34mdEzDIJ\n" - "hrA=\n" "-----END CERTIFICATE-----\n", - .ca = "-----BEGIN CERTIFICATE-----\n" - "MIIEsTCCA5mgAwIBAgIQBOHnpNxc8vNtwCtCuF0VnzANBgkqhkiG9w0BAQsFADBs\n" - "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n" - "d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j\n" - "ZSBFViBSb290IENBMB4XDTEzMTAyMjEyMDAwMFoXDTI4MTAyMjEyMDAwMFowcDEL\n" - "MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3\n" - "LmRpZ2ljZXJ0LmNvbTEvMC0GA1UEAxMmRGlnaUNlcnQgU0hBMiBIaWdoIEFzc3Vy\n" - "YW5jZSBTZXJ2ZXIgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2\n" - "4C/CJAbIbQRf1+8KZAayfSImZRauQkCbztyfn3YHPsMwVYcZuU+UDlqUH1VWtMIC\n" - "Kq/QmO4LQNfE0DtyyBSe75CxEamu0si4QzrZCwvV1ZX1QK/IHe1NnF9Xt4ZQaJn1\n" - "itrSxwUfqJfJ3KSxgoQtxq2lnMcZgqaFD15EWCo3j/018QsIJzJa9buLnqS9UdAn\n" - "4t07QjOjBSjEuyjMmqwrIw14xnvmXnG3Sj4I+4G3FhahnSMSTeXXkgisdaScus0X\n" - "sh5ENWV/UyU50RwKmmMbGZJ0aAo3wsJSSMs5WqK24V3B3aAguCGikyZvFEohQcft\n" - "bZvySC/zA/WiaJJTL17jAgMBAAGjggFJMIIBRTASBgNVHRMBAf8ECDAGAQH/AgEA\n" - "MA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw\n" - "NAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy\n" - "dC5jb20wSwYDVR0fBEQwQjBAoD6gPIY6aHR0cDovL2NybDQuZGlnaWNlcnQuY29t\n" - "L0RpZ2lDZXJ0SGlnaEFzc3VyYW5jZUVWUm9vdENBLmNybDA9BgNVHSAENjA0MDIG\n" - "BFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQ\n" - "UzAdBgNVHQ4EFgQUUWj/kK8CB3U8zNllZGKiErhZcjswHwYDVR0jBBgwFoAUsT7D\n" - "aQP4v0cB1JgmGggC72NkK8MwDQYJKoZIhvcNAQELBQADggEBABiKlYkD5m3fXPwd\n" - "aOpKj4PWUS+Na0QWnqxj9dJubISZi6qBcYRb7TROsLd5kinMLYBq8I4g4Xmk/gNH\n" - "E+r1hspZcX30BJZr01lYPf7TMSVcGDiEo+afgv2MW5gxTs14nhr9hctJqvIni5ly\n" - "/D6q1UEL2tU2ob8cbkdJf17ZSHwD2f2LSaCYJkJA69aSEaRkCldUxPUd1gJea6zu\n" - "xICaEnL6VpPX/78whQYwvwt/Tv9XBZ0k7YXDK/umdaisLRbvfXknsuvCnQsH6qqF\n" - "0wGjIChBWUMo0oHjqvbsezt3tkBigAVBRQHvFwY+3sAzm2fTYS5yh+Rp/BIAV0Ae\n" - "cPUeybQ=\n" "-----END CERTIFICATE-----\n"}, - { - .name = "CA verification (invalid)", - .queries = { - (char *) - "\x00\x00\x01\x19\x40\x0b\xe5\xb7\xa3\x1f\xb7\x33\x92\x77\x00\x78\x9d\x2f\x0a\x24\x71\xc0\xc9\xd5\x06\xc0\xe5\x04\xc0\x6c\x16\xd7\xcb\x17\xc0", - NULL}, - .q_size = {35, 0}, - .expected_ret = 0, - .no_queries = 1, - .secure = 1, - .bogus = 0, - .expected_verify_ret = 0, - .expected_status = DANE_VERIFY_CA_CONSTRAINTS_VIOLATED, - .cert = "-----BEGIN CERTIFICATE-----\n" - "MIIGXjCCBUagAwIBAgIQBNO3A71kyzonos0JsLRHrjANBgkqhkiG9w0BAQsFADBw\n" - "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n" - "d3cuZGlnaWNlcnQuY29tMS8wLQYDVQQDEyZEaWdpQ2VydCBTSEEyIEhpZ2ggQXNz\n" - "dXJhbmNlIFNlcnZlciBDQTAeFw0xNDA0MjIwMDAwMDBaFw0xNzA0MjYxMjAwMDBa\n" - "MG0xCzAJBgNVBAYTAlVTMRcwFQYDVQQIEw5Ob3J0aCBDYXJvbGluYTEQMA4GA1UE\n" - "BxMHUmFsZWlnaDEVMBMGA1UEChMMUmVkIEhhdCBJbmMuMRwwGgYDVQQDDBMqLmZl\n" - "ZG9yYXByb2plY3Qub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA\n" - "vpd22JvToGSgnx2CBtfdoqvraQWNpQ1aXd/PSM0PVIqEjutrKJF7Xhr7DgHRLOhy\n" - "ko1CzfSp5n6nB7raqDq2kddWgqL3tuyb+lSwdQRGuJZsWW3CCwzR3VNRQUnPldpd\n" - "vqHVSkjHkIZYVcZ2FnMYWEa43ESnmgiQGBg4G+T7/9Pv+10SQ+fOE175GWZKHkJm\n" - "vJZAjIO2uxvJ/rCq3YQI6hdAsclIiSZ4X8UXWt0IMjp/RdCCnv+SS4XCirZ/IDqM\n" - "H+WdMllD0/cbgIOr4SXEuUPEJcI5NziuILe05RefFeZXoC6dxNWr8BvAjxxrZtpS\n" - "/7OMwE+WYkVIH8fkgCTVfsa2ZOvMM5CWzxqWKhbFsbw6EGSVIIUtI3C28i3rjLjr\n" - "XZ/94k3pf3i/u6DzUmlWm8psn6XZXru0+FKPTrmeDluyuxJsgzudk8mF8Cjw/Oc0\n" - "IHVg6Qw/Dm/OM9cAVqmb6ld3GF+QlkzTwurEGKeGj8s8Td0WoPOf6apB/PIaDIu1\n" - "rJphTVyGNqfKqMFFOwqH/M9CVtaEfwYqT9aB8OSE8MtFe3L1WypEq4tK8VUtoi98\n" - "0S9mz4fxathakM+js1eyup/uz0W4cKIFbONLgod0g1arMmSB1Ox7GD6qaUC6zKr8\n" - "hWcKMROSg8VFYMhqwGR2k64knXDsVH1mAOgRbJabr3ECAwEAAaOCAfUwggHxMB8G\n" - "A1UdIwQYMBaAFFFo/5CvAgd1PMzZZWRiohK4WXI7MB0GA1UdDgQWBBRaTFeTslW8\n" - "sjOiEWQkQoHtHefJIjAxBgNVHREEKjAoghMqLmZlZG9yYXByb2plY3Qub3JnghFm\n" - "ZWRvcmFwcm9qZWN0Lm9yZzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB\n" - "BQUHAwEGCCsGAQUFBwMCMHUGA1UdHwRuMGwwNKAyoDCGLmh0dHA6Ly9jcmwzLmRp\n" - "Z2ljZXJ0LmNvbS9zaGEyLWhhLXNlcnZlci1nMi5jcmwwNKAyoDCGLmh0dHA6Ly9j\n" - "cmw0LmRpZ2ljZXJ0LmNvbS9zaGEyLWhhLXNlcnZlci1nMi5jcmwwQgYDVR0gBDsw\n" - "OTA3BglghkgBhv1sAQEwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNl\n" - "cnQuY29tL0NQUzCBgwYIKwYBBQUHAQEEdzB1MCQGCCsGAQUFBzABhhhodHRwOi8v\n" - "b2NzcC5kaWdpY2VydC5jb20wTQYIKwYBBQUHMAKGQWh0dHA6Ly9jYWNlcnRzLmRp\n" - "Z2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJIaWdoQXNzdXJhbmNlU2VydmVyQ0EuY3J0\n" - "MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggEBADSBIYR5GwUfYTHlXeej\n" - "tgOMbGIiBD1YPBNlP7vLiGc9+Z4rUxWy/TkL7WUFJf1L88ph1CUQ8TbRjLz2RqL8\n" - "snkFWjMsH9ddnwTO4zkCtTjC9fu+broPkmvzmHq2hlXuiDz9G7XvjtbtPujrrKOz\n" - "o1pPAEl5c4B0ANaYL0OMUDhvskJguVMC5S/ZNuvNg6k3jkKZWGZPfcxgcZoPvBM8\n" - "oIjImGyUMpy7bqRPp4K2xoN530GjoXg8OWIvyAwA06ENLZrU1fcSJsvH2gZVzk8s\n" - "EvqFNFnOJN3aQ21imUjAesJ9dXSeCpscDDHqwzmRPuj2/QgtpMCmSZf34mdEzDIJ\n" - "hrA=\n" "-----END CERTIFICATE-----\n", - .ca = "-----BEGIN CERTIFICATE-----\n" - "MIIEsTCCA5mgAwIBAgIQBOHnpNxc8vNtwCtCuF0VnzANBgkqhkiG9w0BAQsFADBs\n" - "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n" - "d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j\n" - "ZSBFViBSb290IENBMB4XDTEzMTAyMjEyMDAwMFoXDTI4MTAyMjEyMDAwMFowcDEL\n" - "MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3\n" - "LmRpZ2ljZXJ0LmNvbTEvMC0GA1UEAxMmRGlnaUNlcnQgU0hBMiBIaWdoIEFzc3Vy\n" - "YW5jZSBTZXJ2ZXIgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2\n" - "4C/CJAbIbQRf1+8KZAayfSImZRauQkCbztyfn3YHPsMwVYcZuU+UDlqUH1VWtMIC\n" - "Kq/QmO4LQNfE0DtyyBSe75CxEamu0si4QzrZCwvV1ZX1QK/IHe1NnF9Xt4ZQaJn1\n" - "itrSxwUfqJfJ3KSxgoQtxq2lnMcZgqaFD15EWCo3j/018QsIJzJa9buLnqS9UdAn\n" - "4t07QjOjBSjEuyjMmqwrIw14xnvmXnG3Sj4I+4G3FhahnSMSTeXXkgisdaScus0X\n" - "sh5ENWV/UyU50RwKmmMbGZJ0aAo3wsJSSMs5WqK24V3B3aAguCGikyZvFEohQcft\n" - "bZvySC/zA/WiaJJTL17jAgMBAAGjggFJMIIBRTASBgNVHRMBAf8ECDAGAQH/AgEA\n" - "MA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw\n" - "NAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy\n" - "dC5jb20wSwYDVR0fBEQwQjBAoD6gPIY6aHR0cDovL2NybDQuZGlnaWNlcnQuY29t\n" - "L0RpZ2lDZXJ0SGlnaEFzc3VyYW5jZUVWUm9vdENBLmNybDA9BgNVHSAENjA0MDIG\n" - "BFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQ\n" - "UzAdBgNVHQ4EFgQUUWj/kK8CB3U8zNllZGKiErhZcjswHwYDVR0jBBgwFoAUsT7D\n" - "aQP4v0cB1JgmGggC72NkK8MwDQYJKoZIhvcNAQELBQADggEBABiKlYkD5m3fXPwd\n" - "aOpKj4PWUS+Na0QWnqxj9dJubISZi6qBcYRb7TROsLd5kinMLYBq8I4g4Xmk/gNH\n" - "E+r1hspZcX30BJZr01lYPf7TMSVcGDiEo+afgv2MW5gxTs14nhr9hctJqvIni5ly\n" - "/D6q1UEL2tU2ob8cbkdJf17ZSHwD2f2LSaCYJkJA69aSEaRkCldUxPUd1gJea6zu\n" - "xICaEnL6VpPX/78whQYwvwt/Tv9XBZ0k7YXDK/umdaisLRbvfXknsuvCnQsH6qqF\n" - "0wGjIChBWUMo0oHjqvbsezt3tkBigAVBRQHvFwY+3sAzm2fTYS5yh+Rp/BIAV0Ae\n" - "cPUeybQ=\n" "-----END CERTIFICATE-----\n"}, - { /* as the previous but with first byte invalid */ - .name = "CA verification (multiple entries)", - .queries = { - (char *) - "\x00\x00\x01\x19\x40\x0b\xe5\xb7\xa3\x1f\xb7\x33\x91\x77\x00\x78\x9d\x2f\x0a\x24\x71\xc0\xc9\xd5\x06\xc0\xe5\x04\xc0\x6c\x16\xd7\xcb\x17\xc0", - (char *) - "\x03\x01\x01\x54\x4f\x28\x4d\x66\xaf\x2d\xe0\x8c\x17\xe7\x48\x6a\xed\xfa\x2e\x00\xaa\x1a\xc6\xbb\xf3\xaf\x5c\xa6\x2b\x55\xab\x7a\xc2\x69\xbe", - (char *) - "\x00\x00\x01\x19\x40\x0b\xe5\xb7\xa3\x1f\xb7\x33\x91\x77\x00\x78\x9d\x2f\x0a\x24\x71\xc0\xc9\xd5\x06\xc0\xe5\x04\xc0\x6c\x16\xd7\xcb\x17\xc0", - (char *) - "\x03\x00\x01\x03\x32\xaa\x2d\x58\xb3\xe0\x54\x4b\x65\x65\x64\x38\x93\x70\x68\xba\x44\xce\x2f\x14\x46\x9c\x4f\x50\xc9\xcc\x69\x33\xc8\x08\xd3", - NULL}, - .q_size = {35, 35, 35, 35, 0}, - .expected_ret = 0, - .no_queries = 4, - .secure = 1, - .bogus = 0, - .expected_verify_ret = 0, - .expected_status = 0, - .cert = "-----BEGIN CERTIFICATE-----\n" - "MIIGXjCCBUagAwIBAgIQBNO3A71kyzonos0JsLRHrjANBgkqhkiG9w0BAQsFADBw\n" - "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n" - "d3cuZGlnaWNlcnQuY29tMS8wLQYDVQQDEyZEaWdpQ2VydCBTSEEyIEhpZ2ggQXNz\n" - "dXJhbmNlIFNlcnZlciBDQTAeFw0xNDA0MjIwMDAwMDBaFw0xNzA0MjYxMjAwMDBa\n" - "MG0xCzAJBgNVBAYTAlVTMRcwFQYDVQQIEw5Ob3J0aCBDYXJvbGluYTEQMA4GA1UE\n" - "BxMHUmFsZWlnaDEVMBMGA1UEChMMUmVkIEhhdCBJbmMuMRwwGgYDVQQDDBMqLmZl\n" - "ZG9yYXByb2plY3Qub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA\n" - "vpd22JvToGSgnx2CBtfdoqvraQWNpQ1aXd/PSM0PVIqEjutrKJF7Xhr7DgHRLOhy\n" - "ko1CzfSp5n6nB7raqDq2kddWgqL3tuyb+lSwdQRGuJZsWW3CCwzR3VNRQUnPldpd\n" - "vqHVSkjHkIZYVcZ2FnMYWEa43ESnmgiQGBg4G+T7/9Pv+10SQ+fOE175GWZKHkJm\n" - "vJZAjIO2uxvJ/rCq3YQI6hdAsclIiSZ4X8UXWt0IMjp/RdCCnv+SS4XCirZ/IDqM\n" - "H+WdMllD0/cbgIOr4SXEuUPEJcI5NziuILe05RefFeZXoC6dxNWr8BvAjxxrZtpS\n" - "/7OMwE+WYkVIH8fkgCTVfsa2ZOvMM5CWzxqWKhbFsbw6EGSVIIUtI3C28i3rjLjr\n" - "XZ/94k3pf3i/u6DzUmlWm8psn6XZXru0+FKPTrmeDluyuxJsgzudk8mF8Cjw/Oc0\n" - "IHVg6Qw/Dm/OM9cAVqmb6ld3GF+QlkzTwurEGKeGj8s8Td0WoPOf6apB/PIaDIu1\n" - "rJphTVyGNqfKqMFFOwqH/M9CVtaEfwYqT9aB8OSE8MtFe3L1WypEq4tK8VUtoi98\n" - "0S9mz4fxathakM+js1eyup/uz0W4cKIFbONLgod0g1arMmSB1Ox7GD6qaUC6zKr8\n" - "hWcKMROSg8VFYMhqwGR2k64knXDsVH1mAOgRbJabr3ECAwEAAaOCAfUwggHxMB8G\n" - "A1UdIwQYMBaAFFFo/5CvAgd1PMzZZWRiohK4WXI7MB0GA1UdDgQWBBRaTFeTslW8\n" - "sjOiEWQkQoHtHefJIjAxBgNVHREEKjAoghMqLmZlZG9yYXByb2plY3Qub3JnghFm\n" - "ZWRvcmFwcm9qZWN0Lm9yZzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB\n" - "BQUHAwEGCCsGAQUFBwMCMHUGA1UdHwRuMGwwNKAyoDCGLmh0dHA6Ly9jcmwzLmRp\n" - "Z2ljZXJ0LmNvbS9zaGEyLWhhLXNlcnZlci1nMi5jcmwwNKAyoDCGLmh0dHA6Ly9j\n" - "cmw0LmRpZ2ljZXJ0LmNvbS9zaGEyLWhhLXNlcnZlci1nMi5jcmwwQgYDVR0gBDsw\n" - "OTA3BglghkgBhv1sAQEwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNl\n" - "cnQuY29tL0NQUzCBgwYIKwYBBQUHAQEEdzB1MCQGCCsGAQUFBzABhhhodHRwOi8v\n" - "b2NzcC5kaWdpY2VydC5jb20wTQYIKwYBBQUHMAKGQWh0dHA6Ly9jYWNlcnRzLmRp\n" - "Z2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJIaWdoQXNzdXJhbmNlU2VydmVyQ0EuY3J0\n" - "MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggEBADSBIYR5GwUfYTHlXeej\n" - "tgOMbGIiBD1YPBNlP7vLiGc9+Z4rUxWy/TkL7WUFJf1L88ph1CUQ8TbRjLz2RqL8\n" - "snkFWjMsH9ddnwTO4zkCtTjC9fu+broPkmvzmHq2hlXuiDz9G7XvjtbtPujrrKOz\n" - "o1pPAEl5c4B0ANaYL0OMUDhvskJguVMC5S/ZNuvNg6k3jkKZWGZPfcxgcZoPvBM8\n" - "oIjImGyUMpy7bqRPp4K2xoN530GjoXg8OWIvyAwA06ENLZrU1fcSJsvH2gZVzk8s\n" - "EvqFNFnOJN3aQ21imUjAesJ9dXSeCpscDDHqwzmRPuj2/QgtpMCmSZf34mdEzDIJ\n" - "hrA=\n" "-----END CERTIFICATE-----\n", - .ca = "-----BEGIN CERTIFICATE-----\n" - "MIIEsTCCA5mgAwIBAgIQBOHnpNxc8vNtwCtCuF0VnzANBgkqhkiG9w0BAQsFADBs\n" - "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n" - "d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j\n" - "ZSBFViBSb290IENBMB4XDTEzMTAyMjEyMDAwMFoXDTI4MTAyMjEyMDAwMFowcDEL\n" - "MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3\n" - "LmRpZ2ljZXJ0LmNvbTEvMC0GA1UEAxMmRGlnaUNlcnQgU0hBMiBIaWdoIEFzc3Vy\n" - "YW5jZSBTZXJ2ZXIgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2\n" - "4C/CJAbIbQRf1+8KZAayfSImZRauQkCbztyfn3YHPsMwVYcZuU+UDlqUH1VWtMIC\n" - "Kq/QmO4LQNfE0DtyyBSe75CxEamu0si4QzrZCwvV1ZX1QK/IHe1NnF9Xt4ZQaJn1\n" - "itrSxwUfqJfJ3KSxgoQtxq2lnMcZgqaFD15EWCo3j/018QsIJzJa9buLnqS9UdAn\n" - "4t07QjOjBSjEuyjMmqwrIw14xnvmXnG3Sj4I+4G3FhahnSMSTeXXkgisdaScus0X\n" - "sh5ENWV/UyU50RwKmmMbGZJ0aAo3wsJSSMs5WqK24V3B3aAguCGikyZvFEohQcft\n" - "bZvySC/zA/WiaJJTL17jAgMBAAGjggFJMIIBRTASBgNVHRMBAf8ECDAGAQH/AgEA\n" - "MA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw\n" - "NAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy\n" - "dC5jb20wSwYDVR0fBEQwQjBAoD6gPIY6aHR0cDovL2NybDQuZGlnaWNlcnQuY29t\n" - "L0RpZ2lDZXJ0SGlnaEFzc3VyYW5jZUVWUm9vdENBLmNybDA9BgNVHSAENjA0MDIG\n" - "BFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQ\n" - "UzAdBgNVHQ4EFgQUUWj/kK8CB3U8zNllZGKiErhZcjswHwYDVR0jBBgwFoAUsT7D\n" - "aQP4v0cB1JgmGggC72NkK8MwDQYJKoZIhvcNAQELBQADggEBABiKlYkD5m3fXPwd\n" - "aOpKj4PWUS+Na0QWnqxj9dJubISZi6qBcYRb7TROsLd5kinMLYBq8I4g4Xmk/gNH\n" - "E+r1hspZcX30BJZr01lYPf7TMSVcGDiEo+afgv2MW5gxTs14nhr9hctJqvIni5ly\n" - "/D6q1UEL2tU2ob8cbkdJf17ZSHwD2f2LSaCYJkJA69aSEaRkCldUxPUd1gJea6zu\n" - "xICaEnL6VpPX/78whQYwvwt/Tv9XBZ0k7YXDK/umdaisLRbvfXknsuvCnQsH6qqF\n" - "0wGjIChBWUMo0oHjqvbsezt3tkBigAVBRQHvFwY+3sAzm2fTYS5yh+Rp/BIAV0Ae\n" - "cPUeybQ=\n" "-----END CERTIFICATE-----\n"} + { .name = "Entry parsing", + .queries = { (char *)"\x00\x00\x01\x19\x40\x0b\xe5\xb7\xa3\x1f\xb7\x33\x91\x77\x00\x78\x9d\x2f\x0a\x24\x71\xc0\xc9\xd5\x06\xc0\xe5\x04\xc0\x6c\x16\xd7\xcb\x17\xc0", + (char *)"\x03\x00\x01\x03\x32\xaa\x2d\x58\xb3\xe0\x54\x4b\x65\x65\x64\x38\x93\x70\x68\xba\x44\xce\x2f\x14\x46\x9c\x4f\x50\xc9\xcc\x69\x33\xc8\x08\xd3", + (char *)"\x03\x01\x01\x46\x25\x73\x19\x5c\x86\xe8\x61\xab\xab\x8e\xcc\xfb\xc7\xf0\x48\x69\x58\xef\xdf\xf9\x44\x9a\xc1\x07\x29\xb3\xa0\xf9\x06\xf3\x88", + NULL }, + .q_size = { 35, 35, 35, 0 }, + .expected_ret = 0, + .no_queries = 3, + .secure = 1, + .bogus = 0 }, + { /* as the previous but with first byte invalid */ + .name = "Cert verification (single entry)", + .queries = { (char *)"\x03\x01\x01\x54\x4f\x28\x4d\x66\xaf\x2d\xe0\x8c\x17\xe7\x48\x6a\xed\xfa\x2e\x00\xaa\x1a\xc6\xbb\xf3\xaf\x5c\xa6\x2b\x55\xab\x7a\xc2\x69\xbe", + NULL }, + .q_size = { 35, 35, 35, 0 }, + .expected_ret = 0, + .no_queries = 1, + .secure = 1, + .bogus = 0, + .expected_verify_ret = 0, + .expected_status = 0, + .cert = "-----BEGIN CERTIFICATE-----\n" + "MIIE+DCCA+CgAwIBAgISESHVV5p9ybDcuT+A7ITU5IQYMA0GCSqGSIb3DQEBCwUA\n" + "MGAxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTYwNAYD\n" + "VQQDEy1HbG9iYWxTaWduIERvbWFpbiBWYWxpZGF0aW9uIENBIC0gU0hBMjU2IC0g\n" + "RzIwHhcNMTUxMDIxMDkxOTAwWhcNMTYxMjE4MTY1NDU2WjA8MSEwHwYDVQQLExhE\n" + "b21haW4gQ29udHJvbCBWYWxpZGF0ZWQxFzAVBgNVBAMMDioubmxuZXRsYWJzLm5s\n" + "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzHpmwd7SC6vLKde0IcYD\n" + "rrVcSSZFNrmP6Wtw5rR7KTBGfj70lCzo1Tu4KzOeFL23cB/Y8kWPojw73eYM+lnr\n" + "woZmdG28q+nYeZYRNjFpeLmwK87bpWxw760FrdQSdPrgM9uZS02AWD8PWIWZQ+0X\n" + "5XbkgSSjgSRAeT6Ki+8r9TcA+rgUv208kHVgFrBqeNQ//oRojN/7tBbbXrVTy37W\n" + "yWLCijExfBzQSsamZqskwhmzYyCJOXCqHUGh/Nyt9WvcX4YE7ogba33M7EQX2C37\n" + "ZH+XcmHGdhhLahuMoAm39mchN8TwY7R6DtmvM/WhDdc4dkEWjvrUnGYQhajsKVIZ\n" + "oQIDAQABo4IBzjCCAcowDgYDVR0PAQH/BAQDAgWgMEkGA1UdIARCMEAwPgYGZ4EM\n" + "AQIBMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3Jl\n" + "cG9zaXRvcnkvMCcGA1UdEQQgMB6CDioubmxuZXRsYWJzLm5sggxubG5ldGxhYnMu\n" + "bmwwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwQwYD\n" + "VR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9ncy9nc2Rv\n" + "bWFpbnZhbHNoYTJnMi5jcmwwgZQGCCsGAQUFBwEBBIGHMIGEMEcGCCsGAQUFBzAC\n" + "hjtodHRwOi8vc2VjdXJlLmdsb2JhbHNpZ24uY29tL2NhY2VydC9nc2RvbWFpbnZh\n" + "bHNoYTJnMnIxLmNydDA5BggrBgEFBQcwAYYtaHR0cDovL29jc3AyLmdsb2JhbHNp\n" + "Z24uY29tL2dzZG9tYWludmFsc2hhMmcyMB0GA1UdDgQWBBR8k4wtqr2L7in153sI\n" + "aE9Eo+ZB5zAfBgNVHSMEGDAWgBTqTnzUgC3lFYGGJoyCbcCYpM+XDzANBgkqhkiG\n" + "9w0BAQsFAAOCAQEAHgjG+iHJ8INGp/J0VskjmMItSdcTJhsQbAf1Pz1eu87cXhFa\n" + "Vro1xRN9KcsKhnd6TbflDpZkM0g9kX1nGZUWLxMmDbx6N/Y+0X9XHBkgTcVgo1gn\n" + "DkzBfMq/Qmy6Szl+RqNinvM2VjkjreWP2AFmIvbZxjMQDAtSs+5l1Qd+xR3Qxrim\n" + "5XFIaS7lR8ediLKO0trf7TcbXYZ72u3pxVxm7y2Vzi4mC+lcEcc6409b1yeSRbx/\n" + "9N6pYa8Uk3ZaeR6hZHx/g448vVwAqmKrsyJZOayDwHxrFeFWPfJSrFlT8kLmkr5A\n" + "VKOWjR5fslCGWqONiFHhyujZocIw03v5+kD9lw==\n" + "-----END CERTIFICATE-----\n" }, + { .name = "Cert verification (multi entries)", + .queries = { (char *)"\x00\x00\x01\x19\x40\x0b\xe5\xb7\xa3\x1f\xb7\x33\x91\x77\x00\x78\x9d\x2f\x0a\x24\x71\xc0\xc9\xd5\x06\xc0\xe5\x04\xc0\x6c\x16\xd7\xcb\x17\xc0", + (char *)"\x03\x01\x01\x54\x4f\x28\x4d\x66\xaf\x2d\xe0\x8c\x17\xe7\x48\x6a\xed\xfa\x2e\x00\xaa\x1a\xc6\xbb\xf3\xaf\x5c\xa6\x2b\x55\xab\x7a\xc2\x69\xbe", + (char *)"\x03\x00\x01\x03\x32\xaa\x2d\x58\xb3\xe0\x54\x4b\x65\x65\x64\x38\x93\x70\x68\xba\x44\xce\x2f\x14\x46\x9c\x4f\x50\xc9\xcc\x69\x33\xc8\x08\xd3", + NULL }, + .q_size = { 35, 35, 35, 0 }, + .expected_ret = 0, + .no_queries = 3, + .secure = 1, + .bogus = 0, + .expected_verify_ret = 0, + .expected_status = 0, + .cert = "-----BEGIN CERTIFICATE-----\n" + "MIIE+DCCA+CgAwIBAgISESHVV5p9ybDcuT+A7ITU5IQYMA0GCSqGSIb3DQEBCwUA\n" + "MGAxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTYwNAYD\n" + "VQQDEy1HbG9iYWxTaWduIERvbWFpbiBWYWxpZGF0aW9uIENBIC0gU0hBMjU2IC0g\n" + "RzIwHhcNMTUxMDIxMDkxOTAwWhcNMTYxMjE4MTY1NDU2WjA8MSEwHwYDVQQLExhE\n" + "b21haW4gQ29udHJvbCBWYWxpZGF0ZWQxFzAVBgNVBAMMDioubmxuZXRsYWJzLm5s\n" + "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzHpmwd7SC6vLKde0IcYD\n" + "rrVcSSZFNrmP6Wtw5rR7KTBGfj70lCzo1Tu4KzOeFL23cB/Y8kWPojw73eYM+lnr\n" + "woZmdG28q+nYeZYRNjFpeLmwK87bpWxw760FrdQSdPrgM9uZS02AWD8PWIWZQ+0X\n" + "5XbkgSSjgSRAeT6Ki+8r9TcA+rgUv208kHVgFrBqeNQ//oRojN/7tBbbXrVTy37W\n" + "yWLCijExfBzQSsamZqskwhmzYyCJOXCqHUGh/Nyt9WvcX4YE7ogba33M7EQX2C37\n" + "ZH+XcmHGdhhLahuMoAm39mchN8TwY7R6DtmvM/WhDdc4dkEWjvrUnGYQhajsKVIZ\n" + "oQIDAQABo4IBzjCCAcowDgYDVR0PAQH/BAQDAgWgMEkGA1UdIARCMEAwPgYGZ4EM\n" + "AQIBMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3Jl\n" + "cG9zaXRvcnkvMCcGA1UdEQQgMB6CDioubmxuZXRsYWJzLm5sggxubG5ldGxhYnMu\n" + "bmwwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwQwYD\n" + "VR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9ncy9nc2Rv\n" + "bWFpbnZhbHNoYTJnMi5jcmwwgZQGCCsGAQUFBwEBBIGHMIGEMEcGCCsGAQUFBzAC\n" + "hjtodHRwOi8vc2VjdXJlLmdsb2JhbHNpZ24uY29tL2NhY2VydC9nc2RvbWFpbnZh\n" + "bHNoYTJnMnIxLmNydDA5BggrBgEFBQcwAYYtaHR0cDovL29jc3AyLmdsb2JhbHNp\n" + "Z24uY29tL2dzZG9tYWludmFsc2hhMmcyMB0GA1UdDgQWBBR8k4wtqr2L7in153sI\n" + "aE9Eo+ZB5zAfBgNVHSMEGDAWgBTqTnzUgC3lFYGGJoyCbcCYpM+XDzANBgkqhkiG\n" + "9w0BAQsFAAOCAQEAHgjG+iHJ8INGp/J0VskjmMItSdcTJhsQbAf1Pz1eu87cXhFa\n" + "Vro1xRN9KcsKhnd6TbflDpZkM0g9kX1nGZUWLxMmDbx6N/Y+0X9XHBkgTcVgo1gn\n" + "DkzBfMq/Qmy6Szl+RqNinvM2VjkjreWP2AFmIvbZxjMQDAtSs+5l1Qd+xR3Qxrim\n" + "5XFIaS7lR8ediLKO0trf7TcbXYZ72u3pxVxm7y2Vzi4mC+lcEcc6409b1yeSRbx/\n" + "9N6pYa8Uk3ZaeR6hZHx/g448vVwAqmKrsyJZOayDwHxrFeFWPfJSrFlT8kLmkr5A\n" + "VKOWjR5fslCGWqONiFHhyujZocIw03v5+kD9lw==\n" + "-----END CERTIFICATE-----\n" }, + { .name = "Cert verification (invalid hash)", + .queries = { (char *)"\x03\x01\x01\x54\x4f\x28\x4d\x66\xaf\x2d\xe0\x8c\x17\xe7\x49\x6a\xed\xfa\x2e\x00\xaa\x1a\xc6\xbb\xf3\xaf\x5c\xa6\x2b\x55\xab\x7a\xc2\x69\xbe", + NULL }, + .q_size = { 35, 0 }, + .expected_ret = 0, + .no_queries = 1, + .secure = 1, + .bogus = 0, + .expected_verify_ret = 0, + .expected_status = DANE_VERIFY_CERT_DIFFERS, + .cert = "-----BEGIN CERTIFICATE-----\n" + "MIIE+DCCA+CgAwIBAgISESHVV5p9ybDcuT+A7ITU5IQYMA0GCSqGSIb3DQEBCwUA\n" + "MGAxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTYwNAYD\n" + "VQQDEy1HbG9iYWxTaWduIERvbWFpbiBWYWxpZGF0aW9uIENBIC0gU0hBMjU2IC0g\n" + "RzIwHhcNMTUxMDIxMDkxOTAwWhcNMTYxMjE4MTY1NDU2WjA8MSEwHwYDVQQLExhE\n" + "b21haW4gQ29udHJvbCBWYWxpZGF0ZWQxFzAVBgNVBAMMDioubmxuZXRsYWJzLm5s\n" + "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzHpmwd7SC6vLKde0IcYD\n" + "rrVcSSZFNrmP6Wtw5rR7KTBGfj70lCzo1Tu4KzOeFL23cB/Y8kWPojw73eYM+lnr\n" + "woZmdG28q+nYeZYRNjFpeLmwK87bpWxw760FrdQSdPrgM9uZS02AWD8PWIWZQ+0X\n" + "5XbkgSSjgSRAeT6Ki+8r9TcA+rgUv208kHVgFrBqeNQ//oRojN/7tBbbXrVTy37W\n" + "yWLCijExfBzQSsamZqskwhmzYyCJOXCqHUGh/Nyt9WvcX4YE7ogba33M7EQX2C37\n" + "ZH+XcmHGdhhLahuMoAm39mchN8TwY7R6DtmvM/WhDdc4dkEWjvrUnGYQhajsKVIZ\n" + "oQIDAQABo4IBzjCCAcowDgYDVR0PAQH/BAQDAgWgMEkGA1UdIARCMEAwPgYGZ4EM\n" + "AQIBMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3Jl\n" + "cG9zaXRvcnkvMCcGA1UdEQQgMB6CDioubmxuZXRsYWJzLm5sggxubG5ldGxhYnMu\n" + "bmwwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwQwYD\n" + "VR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9ncy9nc2Rv\n" + "bWFpbnZhbHNoYTJnMi5jcmwwgZQGCCsGAQUFBwEBBIGHMIGEMEcGCCsGAQUFBzAC\n" + "hjtodHRwOi8vc2VjdXJlLmdsb2JhbHNpZ24uY29tL2NhY2VydC9nc2RvbWFpbnZh\n" + "bHNoYTJnMnIxLmNydDA5BggrBgEFBQcwAYYtaHR0cDovL29jc3AyLmdsb2JhbHNp\n" + "Z24uY29tL2dzZG9tYWludmFsc2hhMmcyMB0GA1UdDgQWBBR8k4wtqr2L7in153sI\n" + "aE9Eo+ZB5zAfBgNVHSMEGDAWgBTqTnzUgC3lFYGGJoyCbcCYpM+XDzANBgkqhkiG\n" + "9w0BAQsFAAOCAQEAHgjG+iHJ8INGp/J0VskjmMItSdcTJhsQbAf1Pz1eu87cXhFa\n" + "Vro1xRN9KcsKhnd6TbflDpZkM0g9kX1nGZUWLxMmDbx6N/Y+0X9XHBkgTcVgo1gn\n" + "DkzBfMq/Qmy6Szl+RqNinvM2VjkjreWP2AFmIvbZxjMQDAtSs+5l1Qd+xR3Qxrim\n" + "5XFIaS7lR8ediLKO0trf7TcbXYZ72u3pxVxm7y2Vzi4mC+lcEcc6409b1yeSRbx/\n" + "9N6pYa8Uk3ZaeR6hZHx/g448vVwAqmKrsyJZOayDwHxrFeFWPfJSrFlT8kLmkr5A\n" + "VKOWjR5fslCGWqONiFHhyujZocIw03v5+kD9lw==\n" + "-----END CERTIFICATE-----\n" }, + { .name = "Cert verification (bogus data)", + .queries = { (char *)"\x00\x00\x01\x19\x40\x0b\xe5\xb7\xa3\x1f\xb7\x33\x91\x77\x00\x78\x9d\x2f\x0a\x24\x71\xc0\xc9\xd5\x06\xc0\xe5\x04\xc0\x6c\x16\xd7\xcb\x17\xc0", + NULL }, + .q_size = { 35, 0 }, + .expected_ret = 0, + .no_queries = 1, + .secure = 1, + .bogus = 0, + .expected_verify_ret = DANE_E_REQUESTED_DATA_NOT_AVAILABLE, + .expected_status = -1, + .cert = "-----BEGIN CERTIFICATE-----\n" + "MIIE+DCCA+CgAwIBAgISESHVV5p9ybDcuT+A7ITU5IQYMA0GCSqGSIb3DQEBCwUA\n" + "MGAxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTYwNAYD\n" + "VQQDEy1HbG9iYWxTaWduIERvbWFpbiBWYWxpZGF0aW9uIENBIC0gU0hBMjU2IC0g\n" + "RzIwHhcNMTUxMDIxMDkxOTAwWhcNMTYxMjE4MTY1NDU2WjA8MSEwHwYDVQQLExhE\n" + "b21haW4gQ29udHJvbCBWYWxpZGF0ZWQxFzAVBgNVBAMMDioubmxuZXRsYWJzLm5s\n" + "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzHpmwd7SC6vLKde0IcYD\n" + "rrVcSSZFNrmP6Wtw5rR7KTBGfj70lCzo1Tu4KzOeFL23cB/Y8kWPojw73eYM+lnr\n" + "woZmdG28q+nYeZYRNjFpeLmwK87bpWxw760FrdQSdPrgM9uZS02AWD8PWIWZQ+0X\n" + "5XbkgSSjgSRAeT6Ki+8r9TcA+rgUv208kHVgFrBqeNQ//oRojN/7tBbbXrVTy37W\n" + "yWLCijExfBzQSsamZqskwhmzYyCJOXCqHUGh/Nyt9WvcX4YE7ogba33M7EQX2C37\n" + "ZH+XcmHGdhhLahuMoAm39mchN8TwY7R6DtmvM/WhDdc4dkEWjvrUnGYQhajsKVIZ\n" + "oQIDAQABo4IBzjCCAcowDgYDVR0PAQH/BAQDAgWgMEkGA1UdIARCMEAwPgYGZ4EM\n" + "AQIBMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3Jl\n" + "cG9zaXRvcnkvMCcGA1UdEQQgMB6CDioubmxuZXRsYWJzLm5sggxubG5ldGxhYnMu\n" + "bmwwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwQwYD\n" + "VR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9ncy9nc2Rv\n" + "bWFpbnZhbHNoYTJnMi5jcmwwgZQGCCsGAQUFBwEBBIGHMIGEMEcGCCsGAQUFBzAC\n" + "hjtodHRwOi8vc2VjdXJlLmdsb2JhbHNpZ24uY29tL2NhY2VydC9nc2RvbWFpbnZh\n" + "bHNoYTJnMnIxLmNydDA5BggrBgEFBQcwAYYtaHR0cDovL29jc3AyLmdsb2JhbHNp\n" + "Z24uY29tL2dzZG9tYWludmFsc2hhMmcyMB0GA1UdDgQWBBR8k4wtqr2L7in153sI\n" + "aE9Eo+ZB5zAfBgNVHSMEGDAWgBTqTnzUgC3lFYGGJoyCbcCYpM+XDzANBgkqhkiG\n" + "9w0BAQsFAAOCAQEAHgjG+iHJ8INGp/J0VskjmMItSdcTJhsQbAf1Pz1eu87cXhFa\n" + "Vro1xRN9KcsKhnd6TbflDpZkM0g9kX1nGZUWLxMmDbx6N/Y+0X9XHBkgTcVgo1gn\n" + "DkzBfMq/Qmy6Szl+RqNinvM2VjkjreWP2AFmIvbZxjMQDAtSs+5l1Qd+xR3Qxrim\n" + "5XFIaS7lR8ediLKO0trf7TcbXYZ72u3pxVxm7y2Vzi4mC+lcEcc6409b1yeSRbx/\n" + "9N6pYa8Uk3ZaeR6hZHx/g448vVwAqmKrsyJZOayDwHxrFeFWPfJSrFlT8kLmkr5A\n" + "VKOWjR5fslCGWqONiFHhyujZocIw03v5+kD9lw==\n" + "-----END CERTIFICATE-----\n" }, + { .name = "CA verification (valid)", + .queries = { (char *)"\x00\x00\x01\x19\x40\x0b\xe5\xb7\xa3\x1f\xb7\x33\x91\x77\x00\x78\x9d\x2f\x0a\x24\x71\xc0\xc9\xd5\x06\xc0\xe5\x04\xc0\x6c\x16\xd7\xcb\x17\xc0", + NULL }, + .q_size = { 35, 0 }, + .expected_ret = 0, + .no_queries = 1, + .secure = 1, + .bogus = 0, + .expected_verify_ret = 0, + .expected_status = 0, + .cert = "-----BEGIN CERTIFICATE-----\n" + "MIIGXjCCBUagAwIBAgIQBNO3A71kyzonos0JsLRHrjANBgkqhkiG9w0BAQsFADBw\n" + "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n" + "d3cuZGlnaWNlcnQuY29tMS8wLQYDVQQDEyZEaWdpQ2VydCBTSEEyIEhpZ2ggQXNz\n" + "dXJhbmNlIFNlcnZlciBDQTAeFw0xNDA0MjIwMDAwMDBaFw0xNzA0MjYxMjAwMDBa\n" + "MG0xCzAJBgNVBAYTAlVTMRcwFQYDVQQIEw5Ob3J0aCBDYXJvbGluYTEQMA4GA1UE\n" + "BxMHUmFsZWlnaDEVMBMGA1UEChMMUmVkIEhhdCBJbmMuMRwwGgYDVQQDDBMqLmZl\n" + "ZG9yYXByb2plY3Qub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA\n" + "vpd22JvToGSgnx2CBtfdoqvraQWNpQ1aXd/PSM0PVIqEjutrKJF7Xhr7DgHRLOhy\n" + "ko1CzfSp5n6nB7raqDq2kddWgqL3tuyb+lSwdQRGuJZsWW3CCwzR3VNRQUnPldpd\n" + "vqHVSkjHkIZYVcZ2FnMYWEa43ESnmgiQGBg4G+T7/9Pv+10SQ+fOE175GWZKHkJm\n" + "vJZAjIO2uxvJ/rCq3YQI6hdAsclIiSZ4X8UXWt0IMjp/RdCCnv+SS4XCirZ/IDqM\n" + "H+WdMllD0/cbgIOr4SXEuUPEJcI5NziuILe05RefFeZXoC6dxNWr8BvAjxxrZtpS\n" + "/7OMwE+WYkVIH8fkgCTVfsa2ZOvMM5CWzxqWKhbFsbw6EGSVIIUtI3C28i3rjLjr\n" + "XZ/94k3pf3i/u6DzUmlWm8psn6XZXru0+FKPTrmeDluyuxJsgzudk8mF8Cjw/Oc0\n" + "IHVg6Qw/Dm/OM9cAVqmb6ld3GF+QlkzTwurEGKeGj8s8Td0WoPOf6apB/PIaDIu1\n" + "rJphTVyGNqfKqMFFOwqH/M9CVtaEfwYqT9aB8OSE8MtFe3L1WypEq4tK8VUtoi98\n" + "0S9mz4fxathakM+js1eyup/uz0W4cKIFbONLgod0g1arMmSB1Ox7GD6qaUC6zKr8\n" + "hWcKMROSg8VFYMhqwGR2k64knXDsVH1mAOgRbJabr3ECAwEAAaOCAfUwggHxMB8G\n" + "A1UdIwQYMBaAFFFo/5CvAgd1PMzZZWRiohK4WXI7MB0GA1UdDgQWBBRaTFeTslW8\n" + "sjOiEWQkQoHtHefJIjAxBgNVHREEKjAoghMqLmZlZG9yYXByb2plY3Qub3JnghFm\n" + "ZWRvcmFwcm9qZWN0Lm9yZzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB\n" + "BQUHAwEGCCsGAQUFBwMCMHUGA1UdHwRuMGwwNKAyoDCGLmh0dHA6Ly9jcmwzLmRp\n" + "Z2ljZXJ0LmNvbS9zaGEyLWhhLXNlcnZlci1nMi5jcmwwNKAyoDCGLmh0dHA6Ly9j\n" + "cmw0LmRpZ2ljZXJ0LmNvbS9zaGEyLWhhLXNlcnZlci1nMi5jcmwwQgYDVR0gBDsw\n" + "OTA3BglghkgBhv1sAQEwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNl\n" + "cnQuY29tL0NQUzCBgwYIKwYBBQUHAQEEdzB1MCQGCCsGAQUFBzABhhhodHRwOi8v\n" + "b2NzcC5kaWdpY2VydC5jb20wTQYIKwYBBQUHMAKGQWh0dHA6Ly9jYWNlcnRzLmRp\n" + "Z2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJIaWdoQXNzdXJhbmNlU2VydmVyQ0EuY3J0\n" + "MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggEBADSBIYR5GwUfYTHlXeej\n" + "tgOMbGIiBD1YPBNlP7vLiGc9+Z4rUxWy/TkL7WUFJf1L88ph1CUQ8TbRjLz2RqL8\n" + "snkFWjMsH9ddnwTO4zkCtTjC9fu+broPkmvzmHq2hlXuiDz9G7XvjtbtPujrrKOz\n" + "o1pPAEl5c4B0ANaYL0OMUDhvskJguVMC5S/ZNuvNg6k3jkKZWGZPfcxgcZoPvBM8\n" + "oIjImGyUMpy7bqRPp4K2xoN530GjoXg8OWIvyAwA06ENLZrU1fcSJsvH2gZVzk8s\n" + "EvqFNFnOJN3aQ21imUjAesJ9dXSeCpscDDHqwzmRPuj2/QgtpMCmSZf34mdEzDIJ\n" + "hrA=\n" + "-----END CERTIFICATE-----\n", + .ca = "-----BEGIN CERTIFICATE-----\n" + "MIIEsTCCA5mgAwIBAgIQBOHnpNxc8vNtwCtCuF0VnzANBgkqhkiG9w0BAQsFADBs\n" + "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n" + "d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j\n" + "ZSBFViBSb290IENBMB4XDTEzMTAyMjEyMDAwMFoXDTI4MTAyMjEyMDAwMFowcDEL\n" + "MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3\n" + "LmRpZ2ljZXJ0LmNvbTEvMC0GA1UEAxMmRGlnaUNlcnQgU0hBMiBIaWdoIEFzc3Vy\n" + "YW5jZSBTZXJ2ZXIgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2\n" + "4C/CJAbIbQRf1+8KZAayfSImZRauQkCbztyfn3YHPsMwVYcZuU+UDlqUH1VWtMIC\n" + "Kq/QmO4LQNfE0DtyyBSe75CxEamu0si4QzrZCwvV1ZX1QK/IHe1NnF9Xt4ZQaJn1\n" + "itrSxwUfqJfJ3KSxgoQtxq2lnMcZgqaFD15EWCo3j/018QsIJzJa9buLnqS9UdAn\n" + "4t07QjOjBSjEuyjMmqwrIw14xnvmXnG3Sj4I+4G3FhahnSMSTeXXkgisdaScus0X\n" + "sh5ENWV/UyU50RwKmmMbGZJ0aAo3wsJSSMs5WqK24V3B3aAguCGikyZvFEohQcft\n" + "bZvySC/zA/WiaJJTL17jAgMBAAGjggFJMIIBRTASBgNVHRMBAf8ECDAGAQH/AgEA\n" + "MA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw\n" + "NAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy\n" + "dC5jb20wSwYDVR0fBEQwQjBAoD6gPIY6aHR0cDovL2NybDQuZGlnaWNlcnQuY29t\n" + "L0RpZ2lDZXJ0SGlnaEFzc3VyYW5jZUVWUm9vdENBLmNybDA9BgNVHSAENjA0MDIG\n" + "BFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQ\n" + "UzAdBgNVHQ4EFgQUUWj/kK8CB3U8zNllZGKiErhZcjswHwYDVR0jBBgwFoAUsT7D\n" + "aQP4v0cB1JgmGggC72NkK8MwDQYJKoZIhvcNAQELBQADggEBABiKlYkD5m3fXPwd\n" + "aOpKj4PWUS+Na0QWnqxj9dJubISZi6qBcYRb7TROsLd5kinMLYBq8I4g4Xmk/gNH\n" + "E+r1hspZcX30BJZr01lYPf7TMSVcGDiEo+afgv2MW5gxTs14nhr9hctJqvIni5ly\n" + "/D6q1UEL2tU2ob8cbkdJf17ZSHwD2f2LSaCYJkJA69aSEaRkCldUxPUd1gJea6zu\n" + "xICaEnL6VpPX/78whQYwvwt/Tv9XBZ0k7YXDK/umdaisLRbvfXknsuvCnQsH6qqF\n" + "0wGjIChBWUMo0oHjqvbsezt3tkBigAVBRQHvFwY+3sAzm2fTYS5yh+Rp/BIAV0Ae\n" + "cPUeybQ=\n" + "-----END CERTIFICATE-----\n" }, + { .name = "CA verification (invalid)", + .queries = { (char *)"\x00\x00\x01\x19\x40\x0b\xe5\xb7\xa3\x1f\xb7\x33\x92\x77\x00\x78\x9d\x2f\x0a\x24\x71\xc0\xc9\xd5\x06\xc0\xe5\x04\xc0\x6c\x16\xd7\xcb\x17\xc0", + NULL }, + .q_size = { 35, 0 }, + .expected_ret = 0, + .no_queries = 1, + .secure = 1, + .bogus = 0, + .expected_verify_ret = 0, + .expected_status = DANE_VERIFY_CA_CONSTRAINTS_VIOLATED, + .cert = "-----BEGIN CERTIFICATE-----\n" + "MIIGXjCCBUagAwIBAgIQBNO3A71kyzonos0JsLRHrjANBgkqhkiG9w0BAQsFADBw\n" + "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n" + "d3cuZGlnaWNlcnQuY29tMS8wLQYDVQQDEyZEaWdpQ2VydCBTSEEyIEhpZ2ggQXNz\n" + "dXJhbmNlIFNlcnZlciBDQTAeFw0xNDA0MjIwMDAwMDBaFw0xNzA0MjYxMjAwMDBa\n" + "MG0xCzAJBgNVBAYTAlVTMRcwFQYDVQQIEw5Ob3J0aCBDYXJvbGluYTEQMA4GA1UE\n" + "BxMHUmFsZWlnaDEVMBMGA1UEChMMUmVkIEhhdCBJbmMuMRwwGgYDVQQDDBMqLmZl\n" + "ZG9yYXByb2plY3Qub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA\n" + "vpd22JvToGSgnx2CBtfdoqvraQWNpQ1aXd/PSM0PVIqEjutrKJF7Xhr7DgHRLOhy\n" + "ko1CzfSp5n6nB7raqDq2kddWgqL3tuyb+lSwdQRGuJZsWW3CCwzR3VNRQUnPldpd\n" + "vqHVSkjHkIZYVcZ2FnMYWEa43ESnmgiQGBg4G+T7/9Pv+10SQ+fOE175GWZKHkJm\n" + "vJZAjIO2uxvJ/rCq3YQI6hdAsclIiSZ4X8UXWt0IMjp/RdCCnv+SS4XCirZ/IDqM\n" + "H+WdMllD0/cbgIOr4SXEuUPEJcI5NziuILe05RefFeZXoC6dxNWr8BvAjxxrZtpS\n" + "/7OMwE+WYkVIH8fkgCTVfsa2ZOvMM5CWzxqWKhbFsbw6EGSVIIUtI3C28i3rjLjr\n" + "XZ/94k3pf3i/u6DzUmlWm8psn6XZXru0+FKPTrmeDluyuxJsgzudk8mF8Cjw/Oc0\n" + "IHVg6Qw/Dm/OM9cAVqmb6ld3GF+QlkzTwurEGKeGj8s8Td0WoPOf6apB/PIaDIu1\n" + "rJphTVyGNqfKqMFFOwqH/M9CVtaEfwYqT9aB8OSE8MtFe3L1WypEq4tK8VUtoi98\n" + "0S9mz4fxathakM+js1eyup/uz0W4cKIFbONLgod0g1arMmSB1Ox7GD6qaUC6zKr8\n" + "hWcKMROSg8VFYMhqwGR2k64knXDsVH1mAOgRbJabr3ECAwEAAaOCAfUwggHxMB8G\n" + "A1UdIwQYMBaAFFFo/5CvAgd1PMzZZWRiohK4WXI7MB0GA1UdDgQWBBRaTFeTslW8\n" + "sjOiEWQkQoHtHefJIjAxBgNVHREEKjAoghMqLmZlZG9yYXByb2plY3Qub3JnghFm\n" + "ZWRvcmFwcm9qZWN0Lm9yZzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB\n" + "BQUHAwEGCCsGAQUFBwMCMHUGA1UdHwRuMGwwNKAyoDCGLmh0dHA6Ly9jcmwzLmRp\n" + "Z2ljZXJ0LmNvbS9zaGEyLWhhLXNlcnZlci1nMi5jcmwwNKAyoDCGLmh0dHA6Ly9j\n" + "cmw0LmRpZ2ljZXJ0LmNvbS9zaGEyLWhhLXNlcnZlci1nMi5jcmwwQgYDVR0gBDsw\n" + "OTA3BglghkgBhv1sAQEwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNl\n" + "cnQuY29tL0NQUzCBgwYIKwYBBQUHAQEEdzB1MCQGCCsGAQUFBzABhhhodHRwOi8v\n" + "b2NzcC5kaWdpY2VydC5jb20wTQYIKwYBBQUHMAKGQWh0dHA6Ly9jYWNlcnRzLmRp\n" + "Z2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJIaWdoQXNzdXJhbmNlU2VydmVyQ0EuY3J0\n" + "MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggEBADSBIYR5GwUfYTHlXeej\n" + "tgOMbGIiBD1YPBNlP7vLiGc9+Z4rUxWy/TkL7WUFJf1L88ph1CUQ8TbRjLz2RqL8\n" + "snkFWjMsH9ddnwTO4zkCtTjC9fu+broPkmvzmHq2hlXuiDz9G7XvjtbtPujrrKOz\n" + "o1pPAEl5c4B0ANaYL0OMUDhvskJguVMC5S/ZNuvNg6k3jkKZWGZPfcxgcZoPvBM8\n" + "oIjImGyUMpy7bqRPp4K2xoN530GjoXg8OWIvyAwA06ENLZrU1fcSJsvH2gZVzk8s\n" + "EvqFNFnOJN3aQ21imUjAesJ9dXSeCpscDDHqwzmRPuj2/QgtpMCmSZf34mdEzDIJ\n" + "hrA=\n" + "-----END CERTIFICATE-----\n", + .ca = "-----BEGIN CERTIFICATE-----\n" + "MIIEsTCCA5mgAwIBAgIQBOHnpNxc8vNtwCtCuF0VnzANBgkqhkiG9w0BAQsFADBs\n" + "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n" + "d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j\n" + "ZSBFViBSb290IENBMB4XDTEzMTAyMjEyMDAwMFoXDTI4MTAyMjEyMDAwMFowcDEL\n" + "MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3\n" + "LmRpZ2ljZXJ0LmNvbTEvMC0GA1UEAxMmRGlnaUNlcnQgU0hBMiBIaWdoIEFzc3Vy\n" + "YW5jZSBTZXJ2ZXIgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2\n" + "4C/CJAbIbQRf1+8KZAayfSImZRauQkCbztyfn3YHPsMwVYcZuU+UDlqUH1VWtMIC\n" + "Kq/QmO4LQNfE0DtyyBSe75CxEamu0si4QzrZCwvV1ZX1QK/IHe1NnF9Xt4ZQaJn1\n" + "itrSxwUfqJfJ3KSxgoQtxq2lnMcZgqaFD15EWCo3j/018QsIJzJa9buLnqS9UdAn\n" + "4t07QjOjBSjEuyjMmqwrIw14xnvmXnG3Sj4I+4G3FhahnSMSTeXXkgisdaScus0X\n" + "sh5ENWV/UyU50RwKmmMbGZJ0aAo3wsJSSMs5WqK24V3B3aAguCGikyZvFEohQcft\n" + "bZvySC/zA/WiaJJTL17jAgMBAAGjggFJMIIBRTASBgNVHRMBAf8ECDAGAQH/AgEA\n" + "MA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw\n" + "NAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy\n" + "dC5jb20wSwYDVR0fBEQwQjBAoD6gPIY6aHR0cDovL2NybDQuZGlnaWNlcnQuY29t\n" + "L0RpZ2lDZXJ0SGlnaEFzc3VyYW5jZUVWUm9vdENBLmNybDA9BgNVHSAENjA0MDIG\n" + "BFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQ\n" + "UzAdBgNVHQ4EFgQUUWj/kK8CB3U8zNllZGKiErhZcjswHwYDVR0jBBgwFoAUsT7D\n" + "aQP4v0cB1JgmGggC72NkK8MwDQYJKoZIhvcNAQELBQADggEBABiKlYkD5m3fXPwd\n" + "aOpKj4PWUS+Na0QWnqxj9dJubISZi6qBcYRb7TROsLd5kinMLYBq8I4g4Xmk/gNH\n" + "E+r1hspZcX30BJZr01lYPf7TMSVcGDiEo+afgv2MW5gxTs14nhr9hctJqvIni5ly\n" + "/D6q1UEL2tU2ob8cbkdJf17ZSHwD2f2LSaCYJkJA69aSEaRkCldUxPUd1gJea6zu\n" + "xICaEnL6VpPX/78whQYwvwt/Tv9XBZ0k7YXDK/umdaisLRbvfXknsuvCnQsH6qqF\n" + "0wGjIChBWUMo0oHjqvbsezt3tkBigAVBRQHvFwY+3sAzm2fTYS5yh+Rp/BIAV0Ae\n" + "cPUeybQ=\n" + "-----END CERTIFICATE-----\n" }, + { /* as the previous but with first byte invalid */ + .name = "CA verification (multiple entries)", + .queries = { (char *)"\x00\x00\x01\x19\x40\x0b\xe5\xb7\xa3\x1f\xb7\x33\x91\x77\x00\x78\x9d\x2f\x0a\x24\x71\xc0\xc9\xd5\x06\xc0\xe5\x04\xc0\x6c\x16\xd7\xcb\x17\xc0", + (char *)"\x03\x01\x01\x54\x4f\x28\x4d\x66\xaf\x2d\xe0\x8c\x17\xe7\x48\x6a\xed\xfa\x2e\x00\xaa\x1a\xc6\xbb\xf3\xaf\x5c\xa6\x2b\x55\xab\x7a\xc2\x69\xbe", + (char *)"\x00\x00\x01\x19\x40\x0b\xe5\xb7\xa3\x1f\xb7\x33\x91\x77\x00\x78\x9d\x2f\x0a\x24\x71\xc0\xc9\xd5\x06\xc0\xe5\x04\xc0\x6c\x16\xd7\xcb\x17\xc0", + (char *)"\x03\x00\x01\x03\x32\xaa\x2d\x58\xb3\xe0\x54\x4b\x65\x65\x64\x38\x93\x70\x68\xba\x44\xce\x2f\x14\x46\x9c\x4f\x50\xc9\xcc\x69\x33\xc8\x08\xd3", + NULL }, + .q_size = { 35, 35, 35, 35, 0 }, + .expected_ret = 0, + .no_queries = 4, + .secure = 1, + .bogus = 0, + .expected_verify_ret = 0, + .expected_status = 0, + .cert = "-----BEGIN CERTIFICATE-----\n" + "MIIGXjCCBUagAwIBAgIQBNO3A71kyzonos0JsLRHrjANBgkqhkiG9w0BAQsFADBw\n" + "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n" + "d3cuZGlnaWNlcnQuY29tMS8wLQYDVQQDEyZEaWdpQ2VydCBTSEEyIEhpZ2ggQXNz\n" + "dXJhbmNlIFNlcnZlciBDQTAeFw0xNDA0MjIwMDAwMDBaFw0xNzA0MjYxMjAwMDBa\n" + "MG0xCzAJBgNVBAYTAlVTMRcwFQYDVQQIEw5Ob3J0aCBDYXJvbGluYTEQMA4GA1UE\n" + "BxMHUmFsZWlnaDEVMBMGA1UEChMMUmVkIEhhdCBJbmMuMRwwGgYDVQQDDBMqLmZl\n" + "ZG9yYXByb2plY3Qub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA\n" + "vpd22JvToGSgnx2CBtfdoqvraQWNpQ1aXd/PSM0PVIqEjutrKJF7Xhr7DgHRLOhy\n" + "ko1CzfSp5n6nB7raqDq2kddWgqL3tuyb+lSwdQRGuJZsWW3CCwzR3VNRQUnPldpd\n" + "vqHVSkjHkIZYVcZ2FnMYWEa43ESnmgiQGBg4G+T7/9Pv+10SQ+fOE175GWZKHkJm\n" + "vJZAjIO2uxvJ/rCq3YQI6hdAsclIiSZ4X8UXWt0IMjp/RdCCnv+SS4XCirZ/IDqM\n" + "H+WdMllD0/cbgIOr4SXEuUPEJcI5NziuILe05RefFeZXoC6dxNWr8BvAjxxrZtpS\n" + "/7OMwE+WYkVIH8fkgCTVfsa2ZOvMM5CWzxqWKhbFsbw6EGSVIIUtI3C28i3rjLjr\n" + "XZ/94k3pf3i/u6DzUmlWm8psn6XZXru0+FKPTrmeDluyuxJsgzudk8mF8Cjw/Oc0\n" + "IHVg6Qw/Dm/OM9cAVqmb6ld3GF+QlkzTwurEGKeGj8s8Td0WoPOf6apB/PIaDIu1\n" + "rJphTVyGNqfKqMFFOwqH/M9CVtaEfwYqT9aB8OSE8MtFe3L1WypEq4tK8VUtoi98\n" + "0S9mz4fxathakM+js1eyup/uz0W4cKIFbONLgod0g1arMmSB1Ox7GD6qaUC6zKr8\n" + "hWcKMROSg8VFYMhqwGR2k64knXDsVH1mAOgRbJabr3ECAwEAAaOCAfUwggHxMB8G\n" + "A1UdIwQYMBaAFFFo/5CvAgd1PMzZZWRiohK4WXI7MB0GA1UdDgQWBBRaTFeTslW8\n" + "sjOiEWQkQoHtHefJIjAxBgNVHREEKjAoghMqLmZlZG9yYXByb2plY3Qub3JnghFm\n" + "ZWRvcmFwcm9qZWN0Lm9yZzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB\n" + "BQUHAwEGCCsGAQUFBwMCMHUGA1UdHwRuMGwwNKAyoDCGLmh0dHA6Ly9jcmwzLmRp\n" + "Z2ljZXJ0LmNvbS9zaGEyLWhhLXNlcnZlci1nMi5jcmwwNKAyoDCGLmh0dHA6Ly9j\n" + "cmw0LmRpZ2ljZXJ0LmNvbS9zaGEyLWhhLXNlcnZlci1nMi5jcmwwQgYDVR0gBDsw\n" + "OTA3BglghkgBhv1sAQEwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNl\n" + "cnQuY29tL0NQUzCBgwYIKwYBBQUHAQEEdzB1MCQGCCsGAQUFBzABhhhodHRwOi8v\n" + "b2NzcC5kaWdpY2VydC5jb20wTQYIKwYBBQUHMAKGQWh0dHA6Ly9jYWNlcnRzLmRp\n" + "Z2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJIaWdoQXNzdXJhbmNlU2VydmVyQ0EuY3J0\n" + "MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggEBADSBIYR5GwUfYTHlXeej\n" + "tgOMbGIiBD1YPBNlP7vLiGc9+Z4rUxWy/TkL7WUFJf1L88ph1CUQ8TbRjLz2RqL8\n" + "snkFWjMsH9ddnwTO4zkCtTjC9fu+broPkmvzmHq2hlXuiDz9G7XvjtbtPujrrKOz\n" + "o1pPAEl5c4B0ANaYL0OMUDhvskJguVMC5S/ZNuvNg6k3jkKZWGZPfcxgcZoPvBM8\n" + "oIjImGyUMpy7bqRPp4K2xoN530GjoXg8OWIvyAwA06ENLZrU1fcSJsvH2gZVzk8s\n" + "EvqFNFnOJN3aQ21imUjAesJ9dXSeCpscDDHqwzmRPuj2/QgtpMCmSZf34mdEzDIJ\n" + "hrA=\n" + "-----END CERTIFICATE-----\n", + .ca = "-----BEGIN CERTIFICATE-----\n" + "MIIEsTCCA5mgAwIBAgIQBOHnpNxc8vNtwCtCuF0VnzANBgkqhkiG9w0BAQsFADBs\n" + "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n" + "d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j\n" + "ZSBFViBSb290IENBMB4XDTEzMTAyMjEyMDAwMFoXDTI4MTAyMjEyMDAwMFowcDEL\n" + "MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3\n" + "LmRpZ2ljZXJ0LmNvbTEvMC0GA1UEAxMmRGlnaUNlcnQgU0hBMiBIaWdoIEFzc3Vy\n" + "YW5jZSBTZXJ2ZXIgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2\n" + "4C/CJAbIbQRf1+8KZAayfSImZRauQkCbztyfn3YHPsMwVYcZuU+UDlqUH1VWtMIC\n" + "Kq/QmO4LQNfE0DtyyBSe75CxEamu0si4QzrZCwvV1ZX1QK/IHe1NnF9Xt4ZQaJn1\n" + "itrSxwUfqJfJ3KSxgoQtxq2lnMcZgqaFD15EWCo3j/018QsIJzJa9buLnqS9UdAn\n" + "4t07QjOjBSjEuyjMmqwrIw14xnvmXnG3Sj4I+4G3FhahnSMSTeXXkgisdaScus0X\n" + "sh5ENWV/UyU50RwKmmMbGZJ0aAo3wsJSSMs5WqK24V3B3aAguCGikyZvFEohQcft\n" + "bZvySC/zA/WiaJJTL17jAgMBAAGjggFJMIIBRTASBgNVHRMBAf8ECDAGAQH/AgEA\n" + "MA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw\n" + "NAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy\n" + "dC5jb20wSwYDVR0fBEQwQjBAoD6gPIY6aHR0cDovL2NybDQuZGlnaWNlcnQuY29t\n" + "L0RpZ2lDZXJ0SGlnaEFzc3VyYW5jZUVWUm9vdENBLmNybDA9BgNVHSAENjA0MDIG\n" + "BFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQ\n" + "UzAdBgNVHQ4EFgQUUWj/kK8CB3U8zNllZGKiErhZcjswHwYDVR0jBBgwFoAUsT7D\n" + "aQP4v0cB1JgmGggC72NkK8MwDQYJKoZIhvcNAQELBQADggEBABiKlYkD5m3fXPwd\n" + "aOpKj4PWUS+Na0QWnqxj9dJubISZi6qBcYRb7TROsLd5kinMLYBq8I4g4Xmk/gNH\n" + "E+r1hspZcX30BJZr01lYPf7TMSVcGDiEo+afgv2MW5gxTs14nhr9hctJqvIni5ly\n" + "/D6q1UEL2tU2ob8cbkdJf17ZSHwD2f2LSaCYJkJA69aSEaRkCldUxPUd1gJea6zu\n" + "xICaEnL6VpPX/78whQYwvwt/Tv9XBZ0k7YXDK/umdaisLRbvfXknsuvCnQsH6qqF\n" + "0wGjIChBWUMo0oHjqvbsezt3tkBigAVBRQHvFwY+3sAzm2fTYS5yh+Rp/BIAV0Ae\n" + "cPUeybQ=\n" + "-----END CERTIFICATE-----\n" } }; -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1461671166; @@ -481,7 +458,7 @@ static time_t mytime(time_t * t) return then; } -static void crt_to_der(gnutls_datum_t * chain, const char *pem, unsigned size) +static void crt_to_der(gnutls_datum_t *chain, const char *pem, unsigned size) { int ret; gnutls_x509_crt_t crt; @@ -527,19 +504,17 @@ static void dane_raw_check(void) success("running test[%d]: %s\n", j, data_entries[j].name); - ret = - dane_raw_tlsa(s, &r, data_entries[j].queries, - data_entries[j].q_size, - data_entries[j].secure, - data_entries[j].bogus); + ret = dane_raw_tlsa(s, &r, data_entries[j].queries, + data_entries[j].q_size, + data_entries[j].secure, + data_entries[j].bogus); if (ret != data_entries[j].expected_ret) { fail("test[%d]: %d: %s\n", j, __LINE__, dane_strerror(ret)); } - ret = - dane_query_to_raw_tlsa(r, &entries, &r_data, &r_data_len, - &secure, &bogus); + ret = dane_query_to_raw_tlsa(r, &entries, &r_data, &r_data_len, + &secure, &bogus); if (ret < 0) { fail("test[%d]: %d: %s\n", j, __LINE__, dane_strerror(ret)); @@ -559,14 +534,13 @@ static void dane_raw_check(void) fail("test[%d]: %d: %s\n", j, __LINE__, dane_strerror(ret)); - if (memcmp - (r_data[i], data_entries[j].queries[i], - r_data_len[i]) != 0) + if (memcmp(r_data[i], data_entries[j].queries[i], + r_data_len[i]) != 0) fail("test[%d]: %d: %s\n", j, __LINE__, dane_strerror(ret)); } - if (data_entries[j].cert) { /* verify cert */ + if (data_entries[j].cert) { /* verify cert */ gnutls_datum_t chain[2]; unsigned status = 0; unsigned chain_size = 1; @@ -580,18 +554,19 @@ static void dane_raw_check(void) chain_size++; } - ret = - dane_verify_crt_raw(NULL, chain, chain_size, - GNUTLS_CRT_X509, r, 0, 0, - &status); + ret = dane_verify_crt_raw(NULL, chain, chain_size, + GNUTLS_CRT_X509, r, 0, 0, + &status); if (ret != data_entries[j].expected_verify_ret) fail("test[%d]: %d: %s\n", j, __LINE__, dane_strerror(ret)); - if (ret >= 0 - && status != data_entries[j].expected_status) { - fail("tests[%d]: expected verif. status %x, got %x\n", j, data_entries[j].expected_status, status); + if (ret >= 0 && + status != data_entries[j].expected_status) { + fail("tests[%d]: expected verif. status %x, got %x\n", + j, data_entries[j].expected_status, + status); } free(chain[0].data); if (chain_size == 2) diff --git a/tests/datefudge-check.c b/tests/datefudge-check.c index 366b8b0625..c78a504264 100644 --- a/tests/datefudge-check.c +++ b/tests/datefudge-check.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include diff --git a/tests/dh-compute.c b/tests/dh-compute.c index 9fbd3bbb7d..84629879fd 100644 --- a/tests/dh-compute.c +++ b/tests/dh-compute.c @@ -22,7 +22,7 @@ /* This program tests functionality of DH exchanges */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,16 +33,15 @@ #ifdef ENABLE_FIPS140 int _gnutls_dh_generate_key(gnutls_dh_params_t dh_params, - gnutls_datum_t * priv_key, - gnutls_datum_t * pub_key); + gnutls_datum_t *priv_key, gnutls_datum_t *pub_key); int _gnutls_dh_compute_key(gnutls_dh_params_t dh_params, - const gnutls_datum_t * priv_key, - const gnutls_datum_t * pub_key, - const gnutls_datum_t * peer_key, gnutls_datum_t * Z); + const gnutls_datum_t *priv_key, + const gnutls_datum_t *pub_key, + const gnutls_datum_t *peer_key, gnutls_datum_t *Z); -static void params(gnutls_dh_params_t * dh_params, const gnutls_datum_t * p, - const gnutls_datum_t * q, const gnutls_datum_t * g) +static void params(gnutls_dh_params_t *dh_params, const gnutls_datum_t *p, + const gnutls_datum_t *q, const gnutls_datum_t *g) { int ret; @@ -55,8 +54,8 @@ static void params(gnutls_dh_params_t * dh_params, const gnutls_datum_t * p, fail("error\n"); } -static void genkey(const gnutls_dh_params_t dh_params, - gnutls_datum_t * priv_key, gnutls_datum_t * pub_key) +static void genkey(const gnutls_dh_params_t dh_params, gnutls_datum_t *priv_key, + gnutls_datum_t *pub_key) { int ret; @@ -66,17 +65,17 @@ static void genkey(const gnutls_dh_params_t dh_params, } static void compute_key(const char *name, const gnutls_dh_params_t dh_params, - const gnutls_datum_t * priv_key, - const gnutls_datum_t * pub_key, - const gnutls_datum_t * peer_key, int expect_error, - gnutls_datum_t * result, bool expect_success) + const gnutls_datum_t *priv_key, + const gnutls_datum_t *pub_key, + const gnutls_datum_t *peer_key, int expect_error, + gnutls_datum_t *result, bool expect_success) { gnutls_datum_t Z = { 0 }; bool success; int ret; - ret = _gnutls_dh_compute_key(dh_params, priv_key, pub_key, - peer_key, &Z); + ret = _gnutls_dh_compute_key(dh_params, priv_key, pub_key, peer_key, + &Z); if (expect_error != ret) fail("%s: error %d (expected %d)\n", name, ret, expect_error); @@ -104,57 +103,57 @@ void doit(void) { struct dh_test_data test_data[] = { { - "[y == 0]", - gnutls_ffdhe_2048_group_prime, - gnutls_ffdhe_2048_group_q, - gnutls_ffdhe_2048_group_generator, - {(void *)"\x00", 1}, - GNUTLS_E_MPI_SCAN_FAILED, - GNUTLS_FIPS140_OP_APPROVED, - /* does not reach _wrap_nettle_pk_derive */ - GNUTLS_FIPS140_OP_INITIAL, - }, + "[y == 0]", + gnutls_ffdhe_2048_group_prime, + gnutls_ffdhe_2048_group_q, + gnutls_ffdhe_2048_group_generator, + { (void *)"\x00", 1 }, + GNUTLS_E_MPI_SCAN_FAILED, + GNUTLS_FIPS140_OP_APPROVED, + /* does not reach _wrap_nettle_pk_derive */ + GNUTLS_FIPS140_OP_INITIAL, + }, { - "[y < 2]", - gnutls_ffdhe_2048_group_prime, - gnutls_ffdhe_2048_group_q, - gnutls_ffdhe_2048_group_generator, - {(void *)"\x01", 1}, - GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER, - GNUTLS_FIPS140_OP_APPROVED, - GNUTLS_FIPS140_OP_ERROR, - }, + "[y < 2]", + gnutls_ffdhe_2048_group_prime, + gnutls_ffdhe_2048_group_q, + gnutls_ffdhe_2048_group_generator, + { (void *)"\x01", 1 }, + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER, + GNUTLS_FIPS140_OP_APPROVED, + GNUTLS_FIPS140_OP_ERROR, + }, { - "[y > p - 2]", - gnutls_ffdhe_2048_group_prime, - gnutls_ffdhe_2048_group_q, - gnutls_ffdhe_2048_group_generator, - gnutls_ffdhe_2048_group_prime, - GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER, - GNUTLS_FIPS140_OP_APPROVED, - GNUTLS_FIPS140_OP_ERROR, - }, + "[y > p - 2]", + gnutls_ffdhe_2048_group_prime, + gnutls_ffdhe_2048_group_q, + gnutls_ffdhe_2048_group_generator, + gnutls_ffdhe_2048_group_prime, + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER, + GNUTLS_FIPS140_OP_APPROVED, + GNUTLS_FIPS140_OP_ERROR, + }, { - "[y ^ q mod p == 1]", - gnutls_ffdhe_2048_group_prime, - gnutls_ffdhe_2048_group_q, - gnutls_ffdhe_2048_group_generator, - gnutls_ffdhe_2048_group_q, - GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER, - GNUTLS_FIPS140_OP_APPROVED, - GNUTLS_FIPS140_OP_ERROR, - }, + "[y ^ q mod p == 1]", + gnutls_ffdhe_2048_group_prime, + gnutls_ffdhe_2048_group_q, + gnutls_ffdhe_2048_group_generator, + gnutls_ffdhe_2048_group_q, + GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER, + GNUTLS_FIPS140_OP_APPROVED, + GNUTLS_FIPS140_OP_ERROR, + }, { - "Legal Input", - gnutls_ffdhe_2048_group_prime, - gnutls_ffdhe_2048_group_q, - gnutls_ffdhe_2048_group_generator, - {(void *)"\x02", 1}, - 0, - GNUTLS_FIPS140_OP_APPROVED, - GNUTLS_FIPS140_OP_APPROVED, - }, - {NULL} + "Legal Input", + gnutls_ffdhe_2048_group_prime, + gnutls_ffdhe_2048_group_q, + gnutls_ffdhe_2048_group_generator, + { (void *)"\x02", 1 }, + 0, + GNUTLS_FIPS140_OP_APPROVED, + GNUTLS_FIPS140_OP_APPROVED, + }, + { NULL } }; for (int i = 0; test_data[i].name != NULL; i++) { @@ -184,9 +183,9 @@ void doit(void) success("%s compute_key\n", test_data[i].name); fips_push_context(fips_context); - compute_key(test_data[i].name, dh_params, &priv_key, - &pub_key, &test_data[i].peer_key, - test_data[i].expected_error, NULL, 0); + compute_key(test_data[i].name, dh_params, &priv_key, &pub_key, + &test_data[i].peer_key, test_data[i].expected_error, + NULL, 0); fips_pop_context(fips_context, test_data[i].fips_state_compute_key); diff --git a/tests/dh-params.c b/tests/dh-params.c index 54bce137c7..e17cdd7c53 100644 --- a/tests/dh-params.c +++ b/tests/dh-params.c @@ -22,7 +22,7 @@ /* This program tests functionality in gnutls_dh_params structure */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -34,7 +34,7 @@ #include "cert-common.h" #include "utils.h" -static int compare(gnutls_datum_t * d1, gnutls_datum_t * d2) +static int compare(gnutls_datum_t *d1, gnutls_datum_t *d2) { gnutls_datum_t t1, t2; t1.data = d1->data; @@ -73,8 +73,8 @@ void doit(void) assert(gnutls_dh_params_init(&tmp_params) >= 0); assert(gnutls_x509_privkey_init(&privkey) >= 0); - ret = - gnutls_x509_privkey_import(privkey, &dsa_key, GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_privkey_import(privkey, &dsa_key, + GNUTLS_X509_FMT_PEM); if (ret < 0) fail("error in %s: %d\n", __FILE__, __LINE__); @@ -89,9 +89,8 @@ void doit(void) if (ret < 0) fail("error in %s: %d\n", __FILE__, __LINE__); - ret = - gnutls_x509_privkey_export_dsa_raw(privkey, &p2, &q, &g2, NULL, - NULL); + ret = gnutls_x509_privkey_export_dsa_raw(privkey, &p2, &q, &g2, NULL, + NULL); if (ret < 0) fail("error in %s: %d\n", __FILE__, __LINE__); diff --git a/tests/dhepskself.c b/tests/dhepskself.c index a7caa38381..a983156287 100644 --- a/tests/dhepskself.c +++ b/tests/dhepskself.c @@ -23,7 +23,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -39,22 +39,22 @@ int main(int argc, char **argv) #else -# include -# include -# include -# if !defined(_WIN32) -# include -# endif -# include -# include +#include +#include +#include +#if !defined(_WIN32) +#include +#endif +#include +#include -# include "utils.h" +#include "utils.h" /* A very basic TLS client, with PSK authentication. */ -# define MAX_BUF 1024 -# define MSG "Hello TLS" +#define MAX_BUF 1024 +#define MSG "Hello TLS" static void tls_log_func(int level, const char *str) { @@ -84,9 +84,8 @@ static void client(int sd) gnutls_init(&session, GNUTLS_CLIENT); /* Use default priorities */ - gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.2:+DHE-PSK", - NULL); + gnutls_priority_set_direct( + session, "NORMAL:-VERS-ALL:+VERS-TLS1.2:+DHE-PSK", NULL); /* put the anonymous credentials to the current session */ @@ -130,7 +129,7 @@ static void client(int sd) gnutls_bye(session, GNUTLS_SHUT_RDWR); - end: +end: close(sd); @@ -144,7 +143,7 @@ static void client(int sd) /* This is a sample TLS 1.0 echo server, for PSK authentication. */ -# define MAX_BUF 1024 +#define MAX_BUF 1024 /* These are global */ gnutls_psk_server_credentials_t server_pskcred; @@ -158,9 +157,8 @@ static gnutls_session_t initialize_tls_session(void) /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.2:+DHE-PSK", - NULL); + gnutls_priority_set_direct( + session, "NORMAL:-VERS-ALL:+VERS-TLS1.2:+DHE-PSK", NULL); gnutls_handshake_set_timeout(session, get_timeout()); gnutls_credentials_set(session, GNUTLS_CRD_PSK, server_pskcred); @@ -183,8 +181,8 @@ static int generate_dh_params(void) GNUTLS_X509_FMT_PEM); } -static int -pskfunc(gnutls_session_t session, const char *username, gnutls_datum_t * key) +static int pskfunc(gnutls_session_t session, const char *username, + gnutls_datum_t *key) { if (debug) printf("psk callback to get %s's password\n", username); @@ -244,11 +242,11 @@ static void server(int sd) if (ret == 0) { if (debug) - success - ("server: Peer has closed the GnuTLS connection\n"); + success("server: Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0) { - fail("server: Received corrupted data(%d). Closing...\n", ret); + fail("server: Received corrupted data(%d). Closing...\n", + ret); break; } else if (ret > 0) { /* echo data back to the client @@ -306,4 +304,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/dhex509self.c b/tests/dhex509self.c index 548a97ba11..edfdf3bdc8 100644 --- a/tests/dhex509self.c +++ b/tests/dhex509self.c @@ -23,7 +23,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -40,19 +40,19 @@ int main(int argc, char **argv) #else -# include -# include -# include -# if !defined(_WIN32) -# include -# endif -# include -# include +#include +#include +#include +#if !defined(_WIN32) +#include +#endif +#include +#include -# include "utils.h" +#include "utils.h" -# include "ex-session-info.c" -# include "ex-x509-info.c" +#include "ex-session-info.c" +#include "ex-x509-info.c" pid_t child; @@ -65,8 +65,8 @@ static void tls_log_func(int level, const char *str) /* A very basic TLS client, with anonymous authentication. */ -# define MAX_BUF 1024 -# define MSG "Hello TLS" +#define MAX_BUF 1024 +#define MSG "Hello TLS" static void client(int sd) { @@ -96,9 +96,9 @@ static void client(int sd) gnutls_init(&session, GNUTLS_CLIENT); /* Use default priorities */ - gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+DHE-RSA", - NULL); + gnutls_priority_set_direct( + session, "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+DHE-RSA", + NULL); /* put the x509 credentials to the current session */ @@ -120,8 +120,8 @@ static void client(int sd) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* see the Getting peer's information example */ if (debug) @@ -129,9 +129,8 @@ static void client(int sd) print_dh_params_info(session); - ret = - gnutls_credentials_get(session, GNUTLS_CRD_CERTIFICATE, - (void **)&tst_cred); + ret = gnutls_credentials_get(session, GNUTLS_CRD_CERTIFICATE, + (void **)&tst_cred); if (ret < 0) { fail("client: gnutls_credentials_get failed: %s\n", gnutls_strerror(ret)); @@ -162,8 +161,7 @@ static void client(int sd) ret = gnutls_handshake(session); if (ret == 0) { if (debug) - success - ("client: handshake complete, reading again.\n"); + success("client: handshake complete, reading again.\n"); ret = gnutls_record_recv(session, buffer, MAX_BUF); } else { fail("client: handshake failed.\n"); @@ -189,7 +187,7 @@ static void client(int sd) gnutls_bye(session, GNUTLS_SHUT_RDWR); - end: +end: close(sd); @@ -203,8 +201,8 @@ static void client(int sd) /* This is a sample TLS 1.0 echo server, using X.509 authentication. */ -# define MAX_BUF 1024 -# define DH_BITS 1024 +#define MAX_BUF 1024 +#define DH_BITS 1024 /* These are global */ gnutls_certificate_credentials_t x509_cred; @@ -218,9 +216,9 @@ static gnutls_session_t initialize_tls_session(void) /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+DHE-RSA", - NULL); + gnutls_priority_set_direct( + session, "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+DHE-RSA", + NULL); gnutls_handshake_set_timeout(session, get_timeout()); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -292,8 +290,8 @@ static void server(int sd) if (debug) { success("server: Handshake was completed\n"); success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); } /* see the Getting peer's information example */ @@ -308,19 +306,18 @@ static void server(int sd) if (ret == 0) { if (debug) - success - ("server: Peer has closed the GnuTLS connection\n"); + success("server: Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0) { - fail("server: Received corrupted data(%d). Closing...\n", ret); + fail("server: Received corrupted data(%d). Closing...\n", + ret); break; } else if (ret > 0) { - gnutls_certificate_server_set_request(session, - GNUTLS_CERT_REQUEST); + gnutls_certificate_server_set_request( + session, GNUTLS_CERT_REQUEST); if (debug) - success - ("server: got data, forcing rehandshake.\n"); + success("server: got data, forcing rehandshake.\n"); ret = gnutls_rehandshake(session); if (ret < 0) { @@ -394,4 +391,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/dn.c b/tests/dn.c index 2719942a53..1dd145d204 100644 --- a/tests/dn.c +++ b/tests/dn.c @@ -19,7 +19,7 @@ */ #ifdef HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include @@ -29,34 +29,35 @@ #include "utils.h" static char pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIE8jCCAtqgAwIBAgIDAkQVMA0GCSqGSIb3DQEBBQUAMHkxEDAOBgNVBAoTB1Jv\n" - "b3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEiMCAGA1UEAxMZ\n" - "Q0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJARYSc3VwcG9y\n" - "dEBjYWNlcnQub3JnMB4XDTA2MDUxNTE1MjEzMVoXDTA3MDUxNTE1MjEzMVowPjEY\n" - "MBYGA1UEAxMPQ0FjZXJ0IFdvVCBVc2VyMSIwIAYJKoZIhvcNAQkBFhNzaW1vbkBq\n" - "b3NlZnNzb24ub3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuddO\n" - "vxr7gfof8Ejtk/EOC16m0UdymQhwQwfPM5wWKJCJK9l5GoXSHe+s/+6HPLhXo2do\n" - "byUS6X3w7ODO6MGnlWALJUapUa2LinofYwYWFVlOlwyuN2lW+xQgeQjn24R8Glzl\n" - "KQ2f5C9JOE3RSGnHr7VH/6JJy+rPovh+gqKHjt9UH6Su1LFEQGUg+x+CVPAluYty\n" - "ECfHdAad2Gcbgn3vkMyKEF6VAKR/G9uDb7bBVuA73UWkUtDi3dekM882UqH5HQRj\n" - "mGYoGJk49PQ52jGftXNIDyHDOYWXTl9W64dHKRGaW0LOrkLrodjMPdudTvSsoWzK\n" - "DpMMdHLsFx2/+MAsPwIDAQABo4G9MIG6MAwGA1UdEwEB/wQCMAAwVgYJYIZIAYb4\n" - "QgENBEkWR1RvIGdldCB5b3VyIG93biBjZXJ0aWZpY2F0ZSBmb3IgRlJFRSBoZWFk\n" - "IG92ZXIgdG8gaHR0cDovL3d3dy5DQWNlcnQub3JnMDIGCCsGAQUFBwEBBCYwJDAi\n" - "BggrBgEFBQcwAYYWaHR0cDovL29jc3AuY2FjZXJ0Lm9yZzAeBgNVHREEFzAVgRNz\n" - "aW1vbkBqb3NlZnNzb24ub3JnMA0GCSqGSIb3DQEBBQUAA4ICAQCXhyNfM8ozU2Jw\n" - "H+XEDgrt3lUgnUbXQC+AGXdj4ZIJXQfHOCCQxZOO6Oe9V0rxldO3M5tQi92yRjci\n" - "aa892MCVPxTkJLR0h4Kx4JfeTtSvl+9nWPSRrZbPTdWZ3ecnCyrfLfEas6pZp1ur\n" - "lJkaEksAg5dGNrvJGPqBbF6A44b1wlBTCHEBZy2n/7Qml7Nhydymq2nFhDtlQJ6X\n" - "w+6juM85vaEII6kuNatk2OcMJG9R0JxbC0e+PPI1jk7wuAz4WIMyj+ZudGNOTWKN\n" - "3ohK9v0/EE1/S+KMy3T7fzMkbKkwAQZzQNoDf8bSzvDwtZsoudA4Kcloz8a/iKEH\n" - "C9nKYBU8sFBd1cYV7ocFhN2awvuVnBlfsEN4eO5TRA50hmLxwt5D8Vs2v55n1kl6\n" - "7PBo6H2ZMfbQcws731k4RpOqQcU+2yl/wBlDChOOO95mbJ31tqMh27yIjIemgD6Z\n" - "jxL92AgHPzSFy/nyqmZ1ADcnB5fC5WsEYyr9tPM1gpjJEsi95YIBrO7Uyt4tj5U3\n" - "dYDvbU+Mg1r0gJi61wciuyAllwKfu9aqkCjJKQGHrTimWzRa6RPygaojWIEmap89\n" - "bHarWgDg9CKVP1DggVkcD838s//kE1Vl2DReyfAtEQ1agSXLFncgxL+yOi1o3lcq\n" - "+dmDgpDn168TY1Iug80uVKg7AfkLrA==\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIE8jCCAtqgAwIBAgIDAkQVMA0GCSqGSIb3DQEBBQUAMHkxEDAOBgNVBAoTB1Jv\n" + "b3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEiMCAGA1UEAxMZ\n" + "Q0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJARYSc3VwcG9y\n" + "dEBjYWNlcnQub3JnMB4XDTA2MDUxNTE1MjEzMVoXDTA3MDUxNTE1MjEzMVowPjEY\n" + "MBYGA1UEAxMPQ0FjZXJ0IFdvVCBVc2VyMSIwIAYJKoZIhvcNAQkBFhNzaW1vbkBq\n" + "b3NlZnNzb24ub3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuddO\n" + "vxr7gfof8Ejtk/EOC16m0UdymQhwQwfPM5wWKJCJK9l5GoXSHe+s/+6HPLhXo2do\n" + "byUS6X3w7ODO6MGnlWALJUapUa2LinofYwYWFVlOlwyuN2lW+xQgeQjn24R8Glzl\n" + "KQ2f5C9JOE3RSGnHr7VH/6JJy+rPovh+gqKHjt9UH6Su1LFEQGUg+x+CVPAluYty\n" + "ECfHdAad2Gcbgn3vkMyKEF6VAKR/G9uDb7bBVuA73UWkUtDi3dekM882UqH5HQRj\n" + "mGYoGJk49PQ52jGftXNIDyHDOYWXTl9W64dHKRGaW0LOrkLrodjMPdudTvSsoWzK\n" + "DpMMdHLsFx2/+MAsPwIDAQABo4G9MIG6MAwGA1UdEwEB/wQCMAAwVgYJYIZIAYb4\n" + "QgENBEkWR1RvIGdldCB5b3VyIG93biBjZXJ0aWZpY2F0ZSBmb3IgRlJFRSBoZWFk\n" + "IG92ZXIgdG8gaHR0cDovL3d3dy5DQWNlcnQub3JnMDIGCCsGAQUFBwEBBCYwJDAi\n" + "BggrBgEFBQcwAYYWaHR0cDovL29jc3AuY2FjZXJ0Lm9yZzAeBgNVHREEFzAVgRNz\n" + "aW1vbkBqb3NlZnNzb24ub3JnMA0GCSqGSIb3DQEBBQUAA4ICAQCXhyNfM8ozU2Jw\n" + "H+XEDgrt3lUgnUbXQC+AGXdj4ZIJXQfHOCCQxZOO6Oe9V0rxldO3M5tQi92yRjci\n" + "aa892MCVPxTkJLR0h4Kx4JfeTtSvl+9nWPSRrZbPTdWZ3ecnCyrfLfEas6pZp1ur\n" + "lJkaEksAg5dGNrvJGPqBbF6A44b1wlBTCHEBZy2n/7Qml7Nhydymq2nFhDtlQJ6X\n" + "w+6juM85vaEII6kuNatk2OcMJG9R0JxbC0e+PPI1jk7wuAz4WIMyj+ZudGNOTWKN\n" + "3ohK9v0/EE1/S+KMy3T7fzMkbKkwAQZzQNoDf8bSzvDwtZsoudA4Kcloz8a/iKEH\n" + "C9nKYBU8sFBd1cYV7ocFhN2awvuVnBlfsEN4eO5TRA50hmLxwt5D8Vs2v55n1kl6\n" + "7PBo6H2ZMfbQcws731k4RpOqQcU+2yl/wBlDChOOO95mbJ31tqMh27yIjIemgD6Z\n" + "jxL92AgHPzSFy/nyqmZ1ADcnB5fC5WsEYyr9tPM1gpjJEsi95YIBrO7Uyt4tj5U3\n" + "dYDvbU+Mg1r0gJi61wciuyAllwKfu9aqkCjJKQGHrTimWzRa6RPygaojWIEmap89\n" + "bHarWgDg9CKVP1DggVkcD838s//kE1Vl2DReyfAtEQ1agSXLFncgxL+yOi1o3lcq\n" + "+dmDgpDn168TY1Iug80uVKg7AfkLrA==\n" + "-----END CERTIFICATE-----\n"; static void print_dn(gnutls_x509_dn_t dn) { @@ -76,10 +77,9 @@ static void print_dn(gnutls_x509_dn_t dn) if (ret < 0) fail("get_rdn_ava %d\n", ret); if (debug) - printf - ("dn[%d][%d] OID=%.*s\n\tDATA=%.*s\n", - i, j, ava.oid.size, ava.oid.data, - ava.value.size, ava.value.data); + printf("dn[%d][%d] OID=%.*s\n\tDATA=%.*s\n", i, + j, ava.oid.size, ava.oid.data, + ava.value.size, ava.value.data); } } @@ -121,10 +121,11 @@ void doit(void) if (ret < 0) fail("gnutls_x509_dn_get_str %d\n", ret); - if (strdn.size != 44 - || strcmp((char *)strdn.data, - "CN=CAcert WoT User,EMAIL=simon@josefsson.org") != 0) { - fail("gnutls_x509_dn_get_str string comparison failed: '%s'/%d\n", strdn.data, strdn.size); + if (strdn.size != 44 || + strcmp((char *)strdn.data, + "CN=CAcert WoT User,EMAIL=simon@josefsson.org") != 0) { + fail("gnutls_x509_dn_get_str string comparison failed: '%s'/%d\n", + strdn.data, strdn.size); } gnutls_free(strdn.data); @@ -132,10 +133,11 @@ void doit(void) ret = gnutls_x509_dn_get_str2(xdn, &strdn, 0); if (ret < 0) fail("gnutls_x509_dn_get_str2 %d\n", ret); - if (strdn.size != 44 - || strcmp((char *)strdn.data, - "EMAIL=simon@josefsson.org,CN=CAcert WoT User") != 0) { - fail("gnutls_x509_dn_get_str2 string comparison failed: '%s'/%d\n", strdn.data, strdn.size); + if (strdn.size != 44 || + strcmp((char *)strdn.data, + "EMAIL=simon@josefsson.org,CN=CAcert WoT User") != 0) { + fail("gnutls_x509_dn_get_str2 string comparison failed: '%s'/%d\n", + strdn.data, strdn.size); } gnutls_free(strdn.data); @@ -143,10 +145,11 @@ void doit(void) ret = gnutls_x509_dn_get_str2(xdn, &strdn, GNUTLS_X509_DN_FLAG_COMPAT); if (ret < 0) fail("gnutls_x509_dn_get_str2 %d\n", ret); - if (strdn.size != 44 - || strcmp((char *)strdn.data, - "CN=CAcert WoT User,EMAIL=simon@josefsson.org") != 0) { - fail("gnutls_x509_dn_get_str2 string comparison failed: '%s'/%d\n", strdn.data, strdn.size); + if (strdn.size != 44 || + strcmp((char *)strdn.data, + "CN=CAcert WoT User,EMAIL=simon@josefsson.org") != 0) { + fail("gnutls_x509_dn_get_str2 string comparison failed: '%s'/%d\n", + strdn.data, strdn.size); } gnutls_free(strdn.data); diff --git a/tests/dn2.c b/tests/dn2.c index 31915d5f1c..d236ece9e6 100644 --- a/tests/dn2.c +++ b/tests/dn2.c @@ -19,7 +19,7 @@ */ #ifdef HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include @@ -29,41 +29,42 @@ #include "utils.h" static char pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIFpzCCBI+gAwIBAgIQSOyh48ZYvgTFR8HspnpkMzANBgkqhkiG9w0BAQUFADCB\n" - "vjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" - "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n" - "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMv\n" - "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0Ew\n" - "HhcNMDgxMTEzMDAwMDAwWhcNMDkxMTEzMjM1OTU5WjCB6zETMBEGCysGAQQBgjc8\n" - "AgEDEwJERTEZMBcGCysGAQQBgjc8AgEBFAhNdWVuY2hlbjEbMBkGA1UEDxMSVjEu\n" - "MCwgQ2xhdXNlIDUuKGIpMRMwEQYDVQQFEwpIUkIgMTQ0MjYxMQswCQYDVQQGEwJE\n" - "RTEOMAwGA1UEERQFODA4MDcxEDAOBgNVBAgTB0JhdmFyaWExETAPBgNVBAcUCE11\n" - "ZW5jaGVuMR0wGwYDVQQJFBRGcmFua2Z1cnRlciBSaW5nIDEyOTERMA8GA1UEChQI\n" - "R01YIEdtYkgxEzARBgNVBAMUCnd3dy5nbXguZGUwgZ8wDQYJKoZIhvcNAQEBBQAD\n" - "gY0AMIGJAoGBAN/ZbLu17YtZo2OGnOfQDwhQlCvks2c+5nJDXjnCHI/ykSGlPH4G\n" - "5qc7/TScNV1/g0bUTRCA11+aVkvf6haRZfgwbxpY1iySNv8eOlm52QAfh3diJQ9N\n" - "5LxQblLHMRxXSFCJThl4BYAt70YdNMT9mVD21xx6ae+m3xEuco31aV7ZAgMBAAGj\n" - "ggH0MIIB8DAJBgNVHRMEAjAAMB0GA1UdDgQWBBTW4UAZN3wEg5TRWaoM1angbgOX\n" - "tjALBgNVHQ8EBAMCBaAwRAYDVR0gBD0wOzA5BgtghkgBhvhFAQcXBjAqMCgGCCsG\n" - "AQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMD4GA1UdHwQ3MDUw\n" - "M6AxoC+GLWh0dHA6Ly9FVkludGwtY3JsLnZlcmlzaWduLmNvbS9FVkludGwyMDA2\n" - "LmNybDAoBgNVHSUEITAfBggrBgEFBQcDAQYIKwYBBQUHAwIGCWCGSAGG+EIEATAf\n" - "BgNVHSMEGDAWgBROQ8gddu83U3pP8lhvlPM44tW93zB2BggrBgEFBQcBAQRqMGgw\n" - "KwYIKwYBBQUHMAGGH2h0dHA6Ly9FVkludGwtb2NzcC52ZXJpc2lnbi5jb20wOQYI\n" - "KwYBBQUHMAKGLWh0dHA6Ly9FVkludGwtYWlhLnZlcmlzaWduLmNvbS9FVkludGwy\n" - "MDA2LmNlcjBuBggrBgEFBQcBDARiMGChXqBcMFowWDBWFglpbWFnZS9naWYwITAf\n" - "MAcGBSsOAwIaBBRLa7kolgYMu9BSOJsprEsHiyEFGDAmFiRodHRwOi8vbG9nby52\n" - "ZXJpc2lnbi5jb20vdnNsb2dvMS5naWYwDQYJKoZIhvcNAQEFBQADggEBAKpNJQYO\n" - "JTp34I24kvRF01WpOWOmfBx4K1gqruda/7U0UZqgTgBJVvwraKf6WeTZpHRqDCTw\n" - "iwySv7jil+gLMT0qIZxL1pII90z71tz08h8xYi1MOLeciG87O9C5pteL/iEtiMxB\n" - "96B6WWBo9mzgwSM1d8LDhrarZ7uQhm+kBAMyEXhmDnCPWhvExvxJzjEmOlxjThyP\n" - "2yvIgfLyDfplRe+jUbsY7YNe08eEyoLRq1jwPuRWTaEx2gA7C6pq45747/HkJrtF\n" - "ya3ULM/AJv6Nj6pobxzQ5rEkUGEwKavu7GMjLrSMnHrbVCiQrn1v6c7B9nSPA31L\n" - "/do1TDFI0vSl5+M=\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIFpzCCBI+gAwIBAgIQSOyh48ZYvgTFR8HspnpkMzANBgkqhkiG9w0BAQUFADCB\n" + "vjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" + "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n" + "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMv\n" + "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0Ew\n" + "HhcNMDgxMTEzMDAwMDAwWhcNMDkxMTEzMjM1OTU5WjCB6zETMBEGCysGAQQBgjc8\n" + "AgEDEwJERTEZMBcGCysGAQQBgjc8AgEBFAhNdWVuY2hlbjEbMBkGA1UEDxMSVjEu\n" + "MCwgQ2xhdXNlIDUuKGIpMRMwEQYDVQQFEwpIUkIgMTQ0MjYxMQswCQYDVQQGEwJE\n" + "RTEOMAwGA1UEERQFODA4MDcxEDAOBgNVBAgTB0JhdmFyaWExETAPBgNVBAcUCE11\n" + "ZW5jaGVuMR0wGwYDVQQJFBRGcmFua2Z1cnRlciBSaW5nIDEyOTERMA8GA1UEChQI\n" + "R01YIEdtYkgxEzARBgNVBAMUCnd3dy5nbXguZGUwgZ8wDQYJKoZIhvcNAQEBBQAD\n" + "gY0AMIGJAoGBAN/ZbLu17YtZo2OGnOfQDwhQlCvks2c+5nJDXjnCHI/ykSGlPH4G\n" + "5qc7/TScNV1/g0bUTRCA11+aVkvf6haRZfgwbxpY1iySNv8eOlm52QAfh3diJQ9N\n" + "5LxQblLHMRxXSFCJThl4BYAt70YdNMT9mVD21xx6ae+m3xEuco31aV7ZAgMBAAGj\n" + "ggH0MIIB8DAJBgNVHRMEAjAAMB0GA1UdDgQWBBTW4UAZN3wEg5TRWaoM1angbgOX\n" + "tjALBgNVHQ8EBAMCBaAwRAYDVR0gBD0wOzA5BgtghkgBhvhFAQcXBjAqMCgGCCsG\n" + "AQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMD4GA1UdHwQ3MDUw\n" + "M6AxoC+GLWh0dHA6Ly9FVkludGwtY3JsLnZlcmlzaWduLmNvbS9FVkludGwyMDA2\n" + "LmNybDAoBgNVHSUEITAfBggrBgEFBQcDAQYIKwYBBQUHAwIGCWCGSAGG+EIEATAf\n" + "BgNVHSMEGDAWgBROQ8gddu83U3pP8lhvlPM44tW93zB2BggrBgEFBQcBAQRqMGgw\n" + "KwYIKwYBBQUHMAGGH2h0dHA6Ly9FVkludGwtb2NzcC52ZXJpc2lnbi5jb20wOQYI\n" + "KwYBBQUHMAKGLWh0dHA6Ly9FVkludGwtYWlhLnZlcmlzaWduLmNvbS9FVkludGwy\n" + "MDA2LmNlcjBuBggrBgEFBQcBDARiMGChXqBcMFowWDBWFglpbWFnZS9naWYwITAf\n" + "MAcGBSsOAwIaBBRLa7kolgYMu9BSOJsprEsHiyEFGDAmFiRodHRwOi8vbG9nby52\n" + "ZXJpc2lnbi5jb20vdnNsb2dvMS5naWYwDQYJKoZIhvcNAQEFBQADggEBAKpNJQYO\n" + "JTp34I24kvRF01WpOWOmfBx4K1gqruda/7U0UZqgTgBJVvwraKf6WeTZpHRqDCTw\n" + "iwySv7jil+gLMT0qIZxL1pII90z71tz08h8xYi1MOLeciG87O9C5pteL/iEtiMxB\n" + "96B6WWBo9mzgwSM1d8LDhrarZ7uQhm+kBAMyEXhmDnCPWhvExvxJzjEmOlxjThyP\n" + "2yvIgfLyDfplRe+jUbsY7YNe08eEyoLRq1jwPuRWTaEx2gA7C6pq45747/HkJrtF\n" + "ya3ULM/AJv6Nj6pobxzQ5rEkUGEwKavu7GMjLrSMnHrbVCiQrn1v6c7B9nSPA31L\n" + "/do1TDFI0vSl5+M=\n" + "-----END CERTIFICATE-----\n"; static const char *info = - "subject `CN=www.gmx.de,O=GMX GmbH,street=Frankfurter Ring 129,L=Muenchen,ST=Bavaria,postalCode=80807,C=DE,serialNumber=HRB 144261,businessCategory=V1.0\\, Clause 5.(b),jurisdictionOfIncorporationLocalityName=Muenchen,jurisdictionOfIncorporationCountryName=DE', issuer `CN=VeriSign Class 3 Extended Validation SSL SGC CA,OU=Terms of use at https://www.verisign.com/rpa (c)06,OU=VeriSign Trust Network,O=VeriSign\\, Inc.,C=US', serial 0x48eca1e3c658be04c547c1eca67a6433, RSA key 1024 bits, signed using RSA-SHA1 (broken!), activated `2008-11-13 00:00:00 UTC', expires `2009-11-13 23:59:59 UTC', pin-sha256=\"sVjloAiiqTbOeTkJWYtVweNaVPijLP/X95L96gJOSvk=\""; + "subject `CN=www.gmx.de,O=GMX GmbH,street=Frankfurter Ring 129,L=Muenchen,ST=Bavaria,postalCode=80807,C=DE,serialNumber=HRB 144261,businessCategory=V1.0\\, Clause 5.(b),jurisdictionOfIncorporationLocalityName=Muenchen,jurisdictionOfIncorporationCountryName=DE', issuer `CN=VeriSign Class 3 Extended Validation SSL SGC CA,OU=Terms of use at https://www.verisign.com/rpa (c)06,OU=VeriSign Trust Network,O=VeriSign\\, Inc.,C=US', serial 0x48eca1e3c658be04c547c1eca67a6433, RSA key 1024 bits, signed using RSA-SHA1 (broken!), activated `2008-11-13 00:00:00 UTC', expires `2009-11-13 23:59:59 UTC', pin-sha256=\"sVjloAiiqTbOeTkJWYtVweNaVPijLP/X95L96gJOSvk=\""; void doit(void) { @@ -90,7 +91,8 @@ void doit(void) /* When allowing SHA1, the output is different: no broken! string */ #ifndef ALLOW_SHA1 - if (out.size != strlen(info) || strcasecmp((char *)out.data, info) != 0) { + if (out.size != strlen(info) || + strcasecmp((char *)out.data, info) != 0) { fprintf(stderr, "comparison fail (%d/%d)\nexpected: %s\n\n got: %.*s\n\n", out.size, (int)strlen(info), info, out.size, out.data); diff --git a/tests/dss-sig-val.c b/tests/dss-sig-val.c index b6f58bc53b..2397bf26ca 100644 --- a/tests/dss-sig-val.c +++ b/tests/dss-sig-val.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,8 +33,8 @@ #include "utils.h" -static void encode(const char *test_name, const gnutls_datum_t * sig, - const gnutls_datum_t * r, const gnutls_datum_t * s) +static void encode(const char *test_name, const gnutls_datum_t *sig, + const gnutls_datum_t *r, const gnutls_datum_t *s) { int ret; gnutls_datum_t tmp_r, tmp_s, tmp_sig; @@ -46,13 +46,15 @@ static void encode(const char *test_name, const gnutls_datum_t * sig, exit(1); } - if (tmp_r.size != r->size || memcmp(r->data, tmp_r.data, r->size) != 0) { + if (tmp_r.size != r->size || + memcmp(r->data, tmp_r.data, r->size) != 0) { fail("%s: gnutls_decode_rs_value: r doesn't match\n", test_name); exit(1); } - if (tmp_s.size != s->size || memcmp(s->data, tmp_s.data, s->size) != 0) { + if (tmp_s.size != s->size || + memcmp(s->data, tmp_s.data, s->size) != 0) { fail("%s: gnutls_decode_rs_value: s doesn't match\n", test_name); exit(1); @@ -69,8 +71,8 @@ static void encode(const char *test_name, const gnutls_datum_t * sig, exit(1); } - if (tmp_sig.size != sig->size - || memcmp(sig->data, tmp_sig.data, sig->size) != 0) { + if (tmp_sig.size != sig->size || + memcmp(sig->data, tmp_sig.data, sig->size) != 0) { fail("%s: gnutls_encode_rs_value: sig doesn't match\n", test_name); exit(1); @@ -89,117 +91,102 @@ struct encode_tests_st { }; struct encode_tests_st encode_tests[] = { - { - .name = "test1", - .sig = {(unsigned char *) - "\x30\x46\x02\x21\x00\xe8\xa4\x26\x96\x2c\x32\xc6\x92\x55\x71\x31\xd7\x10\x35\x92\x60\x85\x34\xf0\x65\x03\x08\x2e\x38\x2b\xc8\x28\x67\xde\x10\x7c\xf5\x02\x21\x00\xc9\x8e\x56\x4f\xb1\x62\xe1\x74\xbe\x8c\x9d\xff\x04\x88\x75\x76\x63\x91\x8a\xd6\x9d\x41\x76\xef\xe2\xb5\x8e\xbb\xa8\x88\xba\x9f", - 72}, - .r = {(unsigned char *) - "\x00\xe8\xa4\x26\x96\x2c\x32\xc6\x92\x55\x71\x31\xd7\x10\x35\x92\x60\x85\x34\xf0\x65\x03\x08\x2e\x38\x2b\xc8\x28\x67\xde\x10\x7c\xf5", - 33}, - .s = {(unsigned char *) - "\x00\xc9\x8e\x56\x4f\xb1\x62\xe1\x74\xbe\x8c\x9d\xff\x04\x88\x75\x76\x63\x91\x8a\xd6\x9d\x41\x76\xef\xe2\xb5\x8e\xbb\xa8\x88\xba\x9f", - 33} - }, - { - .name = "test2", - .sig = {(unsigned char *) - "\x30\x44\x02\x20\x07\xd2\x7f\xd0\xef\x77\xa8\x29\x31\x9b\x46\x01\xb3\xaf\x66\xac\x33\x48\x15\x94\xb8\x80\xa1\x97\x71\x8f\x4a\x32\x43\x12\xec\x1f\x02\x20\x37\x06\x13\xbe\x4c\x6d\xdd\xcd\xa1\x4c\x88\xc5\x66\x85\x81\xf5\x50\x41\xb1\x4a\xee\x29\xce\x73\x2c\x09\xff\xba\xe3\x5e\x8a\x12", - 70}, - .r = {(unsigned char *) - "\x07\xd2\x7f\xd0\xef\x77\xa8\x29\x31\x9b\x46\x01\xb3\xaf\x66\xac\x33\x48\x15\x94\xb8\x80\xa1\x97\x71\x8f\x4a\x32\x43\x12\xec\x1f", - 32}, - .s = {(unsigned char *) - "\x37\x06\x13\xbe\x4c\x6d\xdd\xcd\xa1\x4c\x88\xc5\x66\x85\x81\xf5\x50\x41\xb1\x4a\xee\x29\xce\x73\x2c\x09\xff\xba\xe3\x5e\x8a\x12", - 32} - }, - { - .name = "test3", - .sig = {(unsigned char *) - "\x30\x44\x02\x20\x57\x53\x71\xfd\x9c\xb5\x96\xc2\xc5\xc7\x59\xce\x2f\xc2\xbe\x8f\xdc\x22\xf9\xab\x38\xdc\x57\x81\xfb\x34\x78\x12\xae\x88\x9a\x50\x02\x20\x60\x6b\xd4\x5b\xd6\x32\x05\xae\x1f\xe6\x08\xf4\x73\x0f\x42\xbc\x32\x55\x1f\x8d\xea\x81\xec\x2b\x4a\x0b\x8c\x0f\xb1\xbe\x5f\x9b", - 70}, - .r = {(unsigned char *) - "\x57\x53\x71\xfd\x9c\xb5\x96\xc2\xc5\xc7\x59\xce\x2f\xc2\xbe\x8f\xdc\x22\xf9\xab\x38\xdc\x57\x81\xfb\x34\x78\x12\xae\x88\x9a\x50", - 32}, - .s = {(unsigned char *) - "\x60\x6b\xd4\x5b\xd6\x32\x05\xae\x1f\xe6\x08\xf4\x73\x0f\x42\xbc\x32\x55\x1f\x8d\xea\x81\xec\x2b\x4a\x0b\x8c\x0f\xb1\xbe\x5f\x9b", - 32} - - }, - { - .name = "test4", - .sig = {(unsigned char *) - "\x30\x46\x02\x21\x00\xe7\xdd\x79\x58\x96\xf6\x12\x05\xc1\x7a\x44\xd6\xdf\xde\x83\xe9\xb6\x30\xa7\xff\x02\x85\x97\x34\x5a\xcd\x2f\xae\xbd\xc6\x5d\xde\x02\x21\x00\xb5\x64\xbc\x53\x97\xc5\x64\x6f\x6b\x81\xe7\x4d\xad\x36\x29\x50\xd1\x62\x91\x65\x51\xf0\xc4\xa5\x28\x80\x20\x51\x9b\xce\xcc\xc8", - 72}, - .r = {(unsigned char *) - "\x00\xe7\xdd\x79\x58\x96\xf6\x12\x05\xc1\x7a\x44\xd6\xdf\xde\x83\xe9\xb6\x30\xa7\xff\x02\x85\x97\x34\x5a\xcd\x2f\xae\xbd\xc6\x5d\xde", - 33}, - .s = {(unsigned char *) - "\x00\xb5\x64\xbc\x53\x97\xc5\x64\x6f\x6b\x81\xe7\x4d\xad\x36\x29\x50\xd1\x62\x91\x65\x51\xf0\xc4\xa5\x28\x80\x20\x51\x9b\xce\xcc\xc8", - 33} - }, - { - .name = "test5", - .sig = {(unsigned char *) - "\x30\x45\x02\x20\x54\xce\x1b\x8d\x63\x5d\xa4\xdb\x26\x58\x1c\x8f\xf0\xb0\x6d\xf3\x2f\x6a\xdb\x83\xcf\x7e\xe7\xda\x98\x52\xa6\x5f\x1f\xc9\x50\x73\x02\x21\x00\xfa\xb9\x6a\x18\xd4\xc6\x45\x3c\xf2\xbf\xc2\x3d\x15\x0d\xc6\xd4\x0c\x78\x52\x12\xec\xb5\x3c\xf5\xe0\x8a\xbf\x6c\x11\xd3\xfd\x4f", - 71}, - .r = {(unsigned char *) - "\x54\xce\x1b\x8d\x63\x5d\xa4\xdb\x26\x58\x1c\x8f\xf0\xb0\x6d\xf3\x2f\x6a\xdb\x83\xcf\x7e\xe7\xda\x98\x52\xa6\x5f\x1f\xc9\x50\x73", - 32}, - .s = {(unsigned char *) - "\x00\xfa\xb9\x6a\x18\xd4\xc6\x45\x3c\xf2\xbf\xc2\x3d\x15\x0d\xc6\xd4\x0c\x78\x52\x12\xec\xb5\x3c\xf5\xe0\x8a\xbf\x6c\x11\xd3\xfd\x4f", - 33} - }, - { - .name = "test6", - .sig = {(unsigned char *) - "\x30\x45\x02\x20\x3b\x77\x03\xcf\x8f\xe7\x92\xf1\x6a\x68\x3b\xcd\xb7\x21\x5b\x80\xcd\x00\x75\x65\x38\x31\x8c\xc2\x9b\x92\x6a\x1a\x02\x4b\xd8\x73\x02\x21\x00\xd9\x88\x28\x68\xae\x31\x5d\x95\xa4\x8b\x5e\x3a\x95\x24\x7b\x0d\x07\xaa\xc4\xe0\xeb\xb1\xf1\x89\xc0\xab\x4d\x88\x15\x84\x5f\x01", - 71}, - .r = {(unsigned char *) - "\x3b\x77\x03\xcf\x8f\xe7\x92\xf1\x6a\x68\x3b\xcd\xb7\x21\x5b\x80\xcd\x00\x75\x65\x38\x31\x8c\xc2\x9b\x92\x6a\x1a\x02\x4b\xd8\x73", - 32}, - .s = {(unsigned char *) - "\x00\xd9\x88\x28\x68\xae\x31\x5d\x95\xa4\x8b\x5e\x3a\x95\x24\x7b\x0d\x07\xaa\xc4\xe0\xeb\xb1\xf1\x89\xc0\xab\x4d\x88\x15\x84\x5f\x01", - 33} - }, - { - .name = "test7", - .sig = {(unsigned char *) - "\x30\x45\x02\x20\x22\xa1\xbf\x7d\xcd\x7b\x5e\xab\xa0\x08\x20\xe5\xcc\x22\x34\x61\xf1\x1f\xd0\x3a\x32\xc3\x61\x19\xcf\xe4\xeb\xff\x66\xe6\x51\xa1\x02\x21\x00\x9d\x62\xcb\x04\x3e\xb6\x1f\xc1\x2e\x52\xd4\x73\x7f\xbd\xa5\x9c\x29\x49\x75\x6d\x08\xf9\xcb\x74\xd7\x41\xdc\xcb\x66\x4d\x9a\x77", - 71}, - .r = {(unsigned char *) - "\x22\xa1\xbf\x7d\xcd\x7b\x5e\xab\xa0\x08\x20\xe5\xcc\x22\x34\x61\xf1\x1f\xd0\x3a\x32\xc3\x61\x19\xcf\xe4\xeb\xff\x66\xe6\x51\xa1", - 32}, - .s = {(unsigned char *) - "\x00\x9d\x62\xcb\x04\x3e\xb6\x1f\xc1\x2e\x52\xd4\x73\x7f\xbd\xa5\x9c\x29\x49\x75\x6d\x08\xf9\xcb\x74\xd7\x41\xdc\xcb\x66\x4d\x9a\x77", - 33} - }, - { - .name = "test8", - .sig = {(unsigned char *) - "\x30\x44\x02\x20\x41\xc9\x32\x16\x2e\x6f\x0c\x1f\x0f\x81\xc0\x0f\x01\x50\x31\x75\x10\x55\x25\x45\x2a\x75\xb1\xdf\x91\x8e\xdf\x24\x30\xf2\xa8\x5f\x02\x20\x07\x80\xa7\x9b\xb8\x1c\x4f\x6e\xc4\x97\x5c\xb7\x9e\x61\x2a\xf0\xfc\x16\xdd\xe7\xa3\xcc\x15\x99\x68\x08\x8e\x85\x60\x9d\x34\xf8", - 70}, - .r = {(unsigned char *) - "\x41\xc9\x32\x16\x2e\x6f\x0c\x1f\x0f\x81\xc0\x0f\x01\x50\x31\x75\x10\x55\x25\x45\x2a\x75\xb1\xdf\x91\x8e\xdf\x24\x30\xf2\xa8\x5f", - 32}, - .s = {(unsigned char *) - "\x07\x80\xa7\x9b\xb8\x1c\x4f\x6e\xc4\x97\x5c\xb7\x9e\x61\x2a\xf0\xfc\x16\xdd\xe7\xa3\xcc\x15\x99\x68\x08\x8e\x85\x60\x9d\x34\xf8", - 32} - - }, - { - .name = "test9", - .sig = {(unsigned char *) - "\x30\x46\x02\x21\x00\xbe\xa1\x01\x12\x64\x1d\x66\x5a\x68\x4a\xa0\xd5\x7e\x3e\x0c\x83\x51\xaa\x21\x9a\x0f\x7b\x38\xf0\xc0\x8b\xc5\xba\xfe\x25\x83\x51\x02\x21\x00\xfb\xea\x25\x74\x78\xd3\xaa\x91\x7b\xc8\x49\x26\x22\x26\xc7\x72\x6b\x25\xfd\x05\xac\x71\x5d\xeb\x1d\xc5\xaa\x4e\xc9\x6e\x34\xb5", - 72}, - .r = {(unsigned char *) - "\x00\xbe\xa1\x01\x12\x64\x1d\x66\x5a\x68\x4a\xa0\xd5\x7e\x3e\x0c\x83\x51\xaa\x21\x9a\x0f\x7b\x38\xf0\xc0\x8b\xc5\xba\xfe\x25\x83\x51", - 33}, - .s = {(unsigned char *) - "\x00\xfb\xea\x25\x74\x78\xd3\xaa\x91\x7b\xc8\x49\x26\x22\x26\xc7\x72\x6b\x25\xfd\x05\xac\x71\x5d\xeb\x1d\xc5\xaa\x4e\xc9\x6e\x34\xb5", - 33} - - } + { .name = "test1", + .sig = { (unsigned char + *)"\x30\x46\x02\x21\x00\xe8\xa4\x26\x96\x2c\x32\xc6\x92\x55\x71\x31\xd7\x10\x35\x92\x60\x85\x34\xf0\x65\x03\x08\x2e\x38\x2b\xc8\x28\x67\xde\x10\x7c\xf5\x02\x21\x00\xc9\x8e\x56\x4f\xb1\x62\xe1\x74\xbe\x8c\x9d\xff\x04\x88\x75\x76\x63\x91\x8a\xd6\x9d\x41\x76\xef\xe2\xb5\x8e\xbb\xa8\x88\xba\x9f", + 72 }, + .r = { (unsigned char + *)"\x00\xe8\xa4\x26\x96\x2c\x32\xc6\x92\x55\x71\x31\xd7\x10\x35\x92\x60\x85\x34\xf0\x65\x03\x08\x2e\x38\x2b\xc8\x28\x67\xde\x10\x7c\xf5", + 33 }, + .s = { (unsigned char + *)"\x00\xc9\x8e\x56\x4f\xb1\x62\xe1\x74\xbe\x8c\x9d\xff\x04\x88\x75\x76\x63\x91\x8a\xd6\x9d\x41\x76\xef\xe2\xb5\x8e\xbb\xa8\x88\xba\x9f", + 33 } }, + { .name = "test2", + .sig = { (unsigned char + *)"\x30\x44\x02\x20\x07\xd2\x7f\xd0\xef\x77\xa8\x29\x31\x9b\x46\x01\xb3\xaf\x66\xac\x33\x48\x15\x94\xb8\x80\xa1\x97\x71\x8f\x4a\x32\x43\x12\xec\x1f\x02\x20\x37\x06\x13\xbe\x4c\x6d\xdd\xcd\xa1\x4c\x88\xc5\x66\x85\x81\xf5\x50\x41\xb1\x4a\xee\x29\xce\x73\x2c\x09\xff\xba\xe3\x5e\x8a\x12", + 70 }, + .r = { (unsigned char + *)"\x07\xd2\x7f\xd0\xef\x77\xa8\x29\x31\x9b\x46\x01\xb3\xaf\x66\xac\x33\x48\x15\x94\xb8\x80\xa1\x97\x71\x8f\x4a\x32\x43\x12\xec\x1f", + 32 }, + .s = { (unsigned char + *)"\x37\x06\x13\xbe\x4c\x6d\xdd\xcd\xa1\x4c\x88\xc5\x66\x85\x81\xf5\x50\x41\xb1\x4a\xee\x29\xce\x73\x2c\x09\xff\xba\xe3\x5e\x8a\x12", + 32 } }, + { .name = "test3", + .sig = { (unsigned char + *)"\x30\x44\x02\x20\x57\x53\x71\xfd\x9c\xb5\x96\xc2\xc5\xc7\x59\xce\x2f\xc2\xbe\x8f\xdc\x22\xf9\xab\x38\xdc\x57\x81\xfb\x34\x78\x12\xae\x88\x9a\x50\x02\x20\x60\x6b\xd4\x5b\xd6\x32\x05\xae\x1f\xe6\x08\xf4\x73\x0f\x42\xbc\x32\x55\x1f\x8d\xea\x81\xec\x2b\x4a\x0b\x8c\x0f\xb1\xbe\x5f\x9b", + 70 }, + .r = { (unsigned char + *)"\x57\x53\x71\xfd\x9c\xb5\x96\xc2\xc5\xc7\x59\xce\x2f\xc2\xbe\x8f\xdc\x22\xf9\xab\x38\xdc\x57\x81\xfb\x34\x78\x12\xae\x88\x9a\x50", + 32 }, + .s = { (unsigned char + *)"\x60\x6b\xd4\x5b\xd6\x32\x05\xae\x1f\xe6\x08\xf4\x73\x0f\x42\xbc\x32\x55\x1f\x8d\xea\x81\xec\x2b\x4a\x0b\x8c\x0f\xb1\xbe\x5f\x9b", + 32 } + + }, + { .name = "test4", + .sig = { (unsigned char + *)"\x30\x46\x02\x21\x00\xe7\xdd\x79\x58\x96\xf6\x12\x05\xc1\x7a\x44\xd6\xdf\xde\x83\xe9\xb6\x30\xa7\xff\x02\x85\x97\x34\x5a\xcd\x2f\xae\xbd\xc6\x5d\xde\x02\x21\x00\xb5\x64\xbc\x53\x97\xc5\x64\x6f\x6b\x81\xe7\x4d\xad\x36\x29\x50\xd1\x62\x91\x65\x51\xf0\xc4\xa5\x28\x80\x20\x51\x9b\xce\xcc\xc8", + 72 }, + .r = { (unsigned char + *)"\x00\xe7\xdd\x79\x58\x96\xf6\x12\x05\xc1\x7a\x44\xd6\xdf\xde\x83\xe9\xb6\x30\xa7\xff\x02\x85\x97\x34\x5a\xcd\x2f\xae\xbd\xc6\x5d\xde", + 33 }, + .s = { (unsigned char + *)"\x00\xb5\x64\xbc\x53\x97\xc5\x64\x6f\x6b\x81\xe7\x4d\xad\x36\x29\x50\xd1\x62\x91\x65\x51\xf0\xc4\xa5\x28\x80\x20\x51\x9b\xce\xcc\xc8", + 33 } }, + { .name = "test5", + .sig = { (unsigned char + *)"\x30\x45\x02\x20\x54\xce\x1b\x8d\x63\x5d\xa4\xdb\x26\x58\x1c\x8f\xf0\xb0\x6d\xf3\x2f\x6a\xdb\x83\xcf\x7e\xe7\xda\x98\x52\xa6\x5f\x1f\xc9\x50\x73\x02\x21\x00\xfa\xb9\x6a\x18\xd4\xc6\x45\x3c\xf2\xbf\xc2\x3d\x15\x0d\xc6\xd4\x0c\x78\x52\x12\xec\xb5\x3c\xf5\xe0\x8a\xbf\x6c\x11\xd3\xfd\x4f", + 71 }, + .r = { (unsigned char + *)"\x54\xce\x1b\x8d\x63\x5d\xa4\xdb\x26\x58\x1c\x8f\xf0\xb0\x6d\xf3\x2f\x6a\xdb\x83\xcf\x7e\xe7\xda\x98\x52\xa6\x5f\x1f\xc9\x50\x73", + 32 }, + .s = { (unsigned char + *)"\x00\xfa\xb9\x6a\x18\xd4\xc6\x45\x3c\xf2\xbf\xc2\x3d\x15\x0d\xc6\xd4\x0c\x78\x52\x12\xec\xb5\x3c\xf5\xe0\x8a\xbf\x6c\x11\xd3\xfd\x4f", + 33 } }, + { .name = "test6", + .sig = { (unsigned char + *)"\x30\x45\x02\x20\x3b\x77\x03\xcf\x8f\xe7\x92\xf1\x6a\x68\x3b\xcd\xb7\x21\x5b\x80\xcd\x00\x75\x65\x38\x31\x8c\xc2\x9b\x92\x6a\x1a\x02\x4b\xd8\x73\x02\x21\x00\xd9\x88\x28\x68\xae\x31\x5d\x95\xa4\x8b\x5e\x3a\x95\x24\x7b\x0d\x07\xaa\xc4\xe0\xeb\xb1\xf1\x89\xc0\xab\x4d\x88\x15\x84\x5f\x01", + 71 }, + .r = { (unsigned char + *)"\x3b\x77\x03\xcf\x8f\xe7\x92\xf1\x6a\x68\x3b\xcd\xb7\x21\x5b\x80\xcd\x00\x75\x65\x38\x31\x8c\xc2\x9b\x92\x6a\x1a\x02\x4b\xd8\x73", + 32 }, + .s = { (unsigned char + *)"\x00\xd9\x88\x28\x68\xae\x31\x5d\x95\xa4\x8b\x5e\x3a\x95\x24\x7b\x0d\x07\xaa\xc4\xe0\xeb\xb1\xf1\x89\xc0\xab\x4d\x88\x15\x84\x5f\x01", + 33 } }, + { .name = "test7", + .sig = { (unsigned char + *)"\x30\x45\x02\x20\x22\xa1\xbf\x7d\xcd\x7b\x5e\xab\xa0\x08\x20\xe5\xcc\x22\x34\x61\xf1\x1f\xd0\x3a\x32\xc3\x61\x19\xcf\xe4\xeb\xff\x66\xe6\x51\xa1\x02\x21\x00\x9d\x62\xcb\x04\x3e\xb6\x1f\xc1\x2e\x52\xd4\x73\x7f\xbd\xa5\x9c\x29\x49\x75\x6d\x08\xf9\xcb\x74\xd7\x41\xdc\xcb\x66\x4d\x9a\x77", + 71 }, + .r = { (unsigned char + *)"\x22\xa1\xbf\x7d\xcd\x7b\x5e\xab\xa0\x08\x20\xe5\xcc\x22\x34\x61\xf1\x1f\xd0\x3a\x32\xc3\x61\x19\xcf\xe4\xeb\xff\x66\xe6\x51\xa1", + 32 }, + .s = { (unsigned char + *)"\x00\x9d\x62\xcb\x04\x3e\xb6\x1f\xc1\x2e\x52\xd4\x73\x7f\xbd\xa5\x9c\x29\x49\x75\x6d\x08\xf9\xcb\x74\xd7\x41\xdc\xcb\x66\x4d\x9a\x77", + 33 } }, + { .name = "test8", + .sig = { (unsigned char + *)"\x30\x44\x02\x20\x41\xc9\x32\x16\x2e\x6f\x0c\x1f\x0f\x81\xc0\x0f\x01\x50\x31\x75\x10\x55\x25\x45\x2a\x75\xb1\xdf\x91\x8e\xdf\x24\x30\xf2\xa8\x5f\x02\x20\x07\x80\xa7\x9b\xb8\x1c\x4f\x6e\xc4\x97\x5c\xb7\x9e\x61\x2a\xf0\xfc\x16\xdd\xe7\xa3\xcc\x15\x99\x68\x08\x8e\x85\x60\x9d\x34\xf8", + 70 }, + .r = { (unsigned char + *)"\x41\xc9\x32\x16\x2e\x6f\x0c\x1f\x0f\x81\xc0\x0f\x01\x50\x31\x75\x10\x55\x25\x45\x2a\x75\xb1\xdf\x91\x8e\xdf\x24\x30\xf2\xa8\x5f", + 32 }, + .s = { (unsigned char + *)"\x07\x80\xa7\x9b\xb8\x1c\x4f\x6e\xc4\x97\x5c\xb7\x9e\x61\x2a\xf0\xfc\x16\xdd\xe7\xa3\xcc\x15\x99\x68\x08\x8e\x85\x60\x9d\x34\xf8", + 32 } + + }, + { .name = "test9", + .sig = { (unsigned char + *)"\x30\x46\x02\x21\x00\xbe\xa1\x01\x12\x64\x1d\x66\x5a\x68\x4a\xa0\xd5\x7e\x3e\x0c\x83\x51\xaa\x21\x9a\x0f\x7b\x38\xf0\xc0\x8b\xc5\xba\xfe\x25\x83\x51\x02\x21\x00\xfb\xea\x25\x74\x78\xd3\xaa\x91\x7b\xc8\x49\x26\x22\x26\xc7\x72\x6b\x25\xfd\x05\xac\x71\x5d\xeb\x1d\xc5\xaa\x4e\xc9\x6e\x34\xb5", + 72 }, + .r = { (unsigned char + *)"\x00\xbe\xa1\x01\x12\x64\x1d\x66\x5a\x68\x4a\xa0\xd5\x7e\x3e\x0c\x83\x51\xaa\x21\x9a\x0f\x7b\x38\xf0\xc0\x8b\xc5\xba\xfe\x25\x83\x51", + 33 }, + .s = { (unsigned char + *)"\x00\xfb\xea\x25\x74\x78\xd3\xaa\x91\x7b\xc8\x49\x26\x22\x26\xc7\x72\x6b\x25\xfd\x05\xac\x71\x5d\xeb\x1d\xc5\xaa\x4e\xc9\x6e\x34\xb5", + 33 } + + } }; void doit(void) diff --git a/tests/dtls-client-with-seccomp.c b/tests/dtls-client-with-seccomp.c index b738b0c554..3816ec0631 100644 --- a/tests/dtls-client-with-seccomp.c +++ b/tests/dtls-client-with-seccomp.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,20 +35,20 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "cert-common.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cert-common.h" +#include "utils.h" static void terminate(void); @@ -62,7 +62,7 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static ssize_t push(gnutls_transport_ptr_t tr, const void *data, size_t len) { @@ -111,8 +111,7 @@ static void client(int fd, const char *prio) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -125,8 +124,8 @@ static void client(int fd, const char *prio) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { ret = gnutls_record_recv(session, buffer, sizeof(buffer) - 1); @@ -147,7 +146,7 @@ static void client(int fd, const char *prio) gnutls_strerror(ret)); } - end: +end: close(fd); @@ -188,9 +187,8 @@ static void server(int fd, const char *prio) gnutls_certificate_allocate_credentials(&xcred); - ret = gnutls_certificate_set_x509_key_mem(xcred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + xcred, &server_cert, &server_key, GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -210,8 +208,7 @@ static void server(int fd, const char *prio) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -224,8 +221,8 @@ static void server(int fd, const char *prio) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* see the Getting peer's information example */ /* print_info(session); */ @@ -260,8 +257,7 @@ static void server(int fd, const char *prio) success("server: finished\n"); } -static -void run(const char *name, const char *prio) +static void run(const char *name, const char *prio) { int fd[2]; int ret; @@ -302,4 +298,4 @@ void doit(void) { run("dtls1.2", "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-DTLS1.2"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/dtls-etm.c b/tests/dtls-etm.c index 86e613ff3b..53d70a6c5c 100644 --- a/tests/dtls-etm.c +++ b/tests/dtls-etm.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,20 +35,20 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "utils.h" -# include "cert-common.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "utils.h" +#include "cert-common.h" static void terminate(void); @@ -68,7 +68,7 @@ static void client_log_func(int level, const char *str) /* A very basic TLS client, with anonymous authentication. */ -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd, const char *prio, unsigned etm) { @@ -107,8 +107,7 @@ static void client(int fd, const char *prio, unsigned etm) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -121,8 +120,8 @@ static void client(int fd, const char *prio, unsigned etm) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); if (etm != 0 && gnutls_session_etm_status(session) == 0) { fail("client: EtM was not negotiated with %s!\n", prio); @@ -132,13 +131,12 @@ static void client(int fd, const char *prio, unsigned etm) exit(1); } - if (etm != 0 - && ((gnutls_session_get_flags(session) & GNUTLS_SFLAGS_ETM) == 0)) { + if (etm != 0 && + ((gnutls_session_get_flags(session) & GNUTLS_SFLAGS_ETM) == 0)) { fail("client: EtM was not negotiated with %s!\n", prio); exit(1); - } else if (etm == 0 - && ((gnutls_session_get_flags(session) & GNUTLS_SFLAGS_ETM) - != 0)) { + } else if (etm == 0 && ((gnutls_session_get_flags(session) & + GNUTLS_SFLAGS_ETM) != 0)) { fail("client: EtM was negotiated with %s!\n", prio); exit(1); } @@ -162,7 +160,7 @@ static void client(int fd, const char *prio, unsigned etm) gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); @@ -240,13 +238,12 @@ static void server(int fd, const char *prio, unsigned etm) exit(1); } - if (etm != 0 - && ((gnutls_session_get_flags(session) & GNUTLS_SFLAGS_ETM) == 0)) { + if (etm != 0 && + ((gnutls_session_get_flags(session) & GNUTLS_SFLAGS_ETM) == 0)) { fail("server: EtM was not negotiated with %s!\n", prio); exit(1); - } else if (etm == 0 - && ((gnutls_session_get_flags(session) & GNUTLS_SFLAGS_ETM) - != 0)) { + } else if (etm == 0 && ((gnutls_session_get_flags(session) & + GNUTLS_SFLAGS_ETM) != 0)) { fail("server: EtM was negotiated with %s!\n", prio); exit(1); } @@ -256,13 +253,13 @@ static void server(int fd, const char *prio, unsigned etm) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { do { - ret = - gnutls_record_send(session, buffer, sizeof(buffer)); + ret = gnutls_record_send(session, buffer, + sizeof(buffer)); } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) { @@ -271,8 +268,7 @@ static void server(int fd, const char *prio, unsigned etm) terminate(); } to_send++; - } - while (to_send < 64); + } while (to_send < 64); to_send = -1; /* do not wait for the peer to close the connection. @@ -321,9 +317,12 @@ static void start(const char *prio, unsigned etm) } } -# define AES_CBC "NONE:+VERS-DTLS1.0:-CIPHER-ALL:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" -# define AES_CBC_SHA256 "NONE:+VERS-DTLS1.2:-CIPHER-ALL:+RSA:+AES-128-CBC:+AES-256-CBC:+SHA256:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" -# define AES_GCM "NONE:+VERS-DTLS1.2:-CIPHER-ALL:+RSA:+AES-128-GCM:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" +#define AES_CBC \ + "NONE:+VERS-DTLS1.0:-CIPHER-ALL:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" +#define AES_CBC_SHA256 \ + "NONE:+VERS-DTLS1.2:-CIPHER-ALL:+RSA:+AES-128-CBC:+AES-256-CBC:+SHA256:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" +#define AES_GCM \ + "NONE:+VERS-DTLS1.2:-CIPHER-ALL:+RSA:+AES-128-GCM:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" static void ch_handler(int sig) { @@ -342,4 +341,4 @@ void doit(void) start(AES_GCM, 0); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/dtls-handshake-versions.c b/tests/dtls-handshake-versions.c index a447e9e76e..63f1ea67ec 100644 --- a/tests/dtls-handshake-versions.c +++ b/tests/dtls-handshake-versions.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -66,9 +66,8 @@ static void try(unsigned char major, unsigned char minor, int ret1, int ret2) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER | GNUTLS_DATAGRAM | GNUTLS_NONBLOCK); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); @@ -86,15 +85,13 @@ static void try(unsigned char major, unsigned char minor, int ret1, int ret2) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); - ret = - gnutls_init(&client, - GNUTLS_CLIENT | GNUTLS_DATAGRAM | GNUTLS_NONBLOCK); + ret = gnutls_init(&client, + GNUTLS_CLIENT | GNUTLS_DATAGRAM | GNUTLS_NONBLOCK); if (ret < 0) exit(1); diff --git a/tests/dtls-max-record.c b/tests/dtls-max-record.c index d37f226b8f..fd845f48f0 100644 --- a/tests/dtls-max-record.c +++ b/tests/dtls-max-record.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -32,7 +32,9 @@ #include #include "utils.h" -#define SERVER_PUSH_ADD if (len > 512 + 5+8+32) fail("max record set to 512, len: %d\n", (int)len); +#define SERVER_PUSH_ADD \ + if (len > 512 + 5 + 8 + 32) \ + fail("max record set to 512, len: %d\n", (int)len); #include "eagain-common.h" #include "cert-common.h" @@ -47,8 +49,7 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -static -void run(const char *prio) +static void run(const char *prio) { global_init(); @@ -70,9 +71,8 @@ void run(const char *prio) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server2_cert, &server2_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server2_cert, + &server2_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER | GNUTLS_DATAGRAM | GNUTLS_NONBLOCK); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); @@ -90,15 +90,13 @@ void run(const char *prio) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca2_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca2_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); - ret = - gnutls_init(&client, - GNUTLS_CLIENT | GNUTLS_DATAGRAM | GNUTLS_NONBLOCK); + ret = gnutls_init(&client, + GNUTLS_CLIENT | GNUTLS_DATAGRAM | GNUTLS_NONBLOCK); if (ret < 0) exit(1); diff --git a/tests/dtls-pthread.c b/tests/dtls-pthread.c index 2fa486b0e7..2f7c7ec2e1 100644 --- a/tests/dtls-pthread.c +++ b/tests/dtls-pthread.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,11 +33,11 @@ #include #include #ifndef _WIN32 -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include #endif #include #include "utils.h" @@ -67,10 +67,10 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -# define MSG "hello1111" -# define MSG2 "xxxxxxxxxxxx" +#define MSG "hello1111" +#define MSG2 "xxxxxxxxxxxx" -# define NO_MSGS 128 +#define NO_MSGS 128 static void *recv_thread(void *arg) { @@ -81,8 +81,8 @@ static void *recv_thread(void *arg) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); for (i = 0; i < NO_MSGS; i++) { /* the peer should reflect our messages */ @@ -91,9 +91,10 @@ static void *recv_thread(void *arg) } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) fail("client: recv failed: %s\n", gnutls_strerror(ret)); - if (ret != sizeof(MSG) - 1 - || memcmp(buf, MSG, sizeof(MSG) - 1) != 0) { - fail("client: recv failed; not the expected values (got: %d, exp: %d)\n", ret, (int)sizeof(MSG) - 1); + if (ret != sizeof(MSG) - 1 || + memcmp(buf, MSG, sizeof(MSG) - 1) != 0) { + fail("client: recv failed; not the expected values (got: %d, exp: %d)\n", + ret, (int)sizeof(MSG) - 1); } if (debug) @@ -107,7 +108,8 @@ static void *recv_thread(void *arg) if (ret < 0) fail("client: recv2 failed: %s\n", gnutls_strerror(ret)); - if (ret != sizeof(MSG2) - 1 || memcmp(buf, MSG2, sizeof(MSG2) - 1) != 0) { + if (ret != sizeof(MSG2) - 1 || + memcmp(buf, MSG2, sizeof(MSG2) - 1) != 0) { fail("client: recv2 failed; not the expected values\n"); } @@ -119,8 +121,7 @@ static void *recv_thread(void *arg) pthread_exit(0); } -static -void do_thread_stuff(gnutls_session_t session) +static void do_thread_stuff(gnutls_session_t session) { int ret; unsigned i; @@ -226,15 +227,14 @@ static void client(int fd, const char *prio, unsigned do_thread, assert(gnutls_priority_set_direct(session, prio, NULL) >= 0); - assert(gnutls_credentials_set - (session, GNUTLS_CRD_CERTIFICATE, x509_cred) >= 0); + assert(gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, + x509_cred) >= 0); gnutls_transport_set_int(session, fd); do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed: %s\n", gnutls_strerror(ret)); @@ -265,13 +265,13 @@ static void server(int fd, const char *prio, unsigned do_thread) global_init(); -# if 0 +#if 0 if (debug) { side = "server"; gnutls_global_set_log_function(tls_log_func); gnutls_global_set_log_level(4711); } -# endif +#endif assert(gnutls_certificate_allocate_credentials(&x509_cred) >= 0); assert(gnutls_certificate_set_x509_key_mem(x509_cred, &server_cert, @@ -303,8 +303,8 @@ static void server(int fd, const char *prio, unsigned do_thread) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); if (do_thread) do_thread_stuff(session); @@ -322,9 +322,8 @@ static void server(int fd, const char *prio, unsigned do_thread) success("server: finished\n"); } -static -void run(const char *str, const char *prio, unsigned do_thread, - unsigned false_start) +static void run(const char *str, const char *prio, unsigned do_thread, + unsigned false_start) { int fd[2]; int ret; @@ -372,4 +371,4 @@ void doit(void) run("dtls1.2 false start, threaded server", "NORMAL:-VERS-ALL:+VERS-DTLS1.2", 1, 1); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/dtls-rehandshake-anon.c b/tests/dtls-rehandshake-anon.c index 3a8c60ed59..822bdf88fb 100644 --- a/tests/dtls-rehandshake-anon.c +++ b/tests/dtls-rehandshake-anon.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,17 +35,17 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" static void terminate(void); @@ -65,8 +65,8 @@ static void client_log_func(int level, const char *str) /* A very basic TLS client, with anonymous authentication. */ -# define MAX_BUF 1024 -# define MSG "Hello TLS" +#define MAX_BUF 1024 +#define MSG "Hello TLS" static ssize_t push(gnutls_transport_ptr_t tr, const void *data, size_t len) { @@ -99,9 +99,10 @@ static void client(int fd, int server_init) gnutls_dtls_set_mtu(session, 1500); /* Use default priorities */ - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", + NULL); /* put the anonymous credentials to the current session */ @@ -114,8 +115,7 @@ static void client(int fd, int server_init) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -128,8 +128,8 @@ static void client(int fd, int server_init) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); if (!server_init) { sec_sleep(60); @@ -137,8 +137,7 @@ static void client(int fd, int server_init) success("Initiating client rehandshake\n"); do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("2nd client gnutls_handshake: %s\n", @@ -158,12 +157,10 @@ static void client(int fd, int server_init) } else if (ret < 0) { if (server_init && ret == GNUTLS_E_REHANDSHAKE) { if (debug) - success - ("Initiating rehandshake due to server request\n"); + success("Initiating rehandshake due to server request\n"); do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); } if (ret != 0) { @@ -177,7 +174,7 @@ static void client(int fd, int server_init) } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); @@ -223,9 +220,10 @@ static void server(int fd, int server_init) /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", + NULL); gnutls_credentials_set(session, GNUTLS_CRD_ANON, anoncred); @@ -234,8 +232,7 @@ static void server(int fd, int server_init) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -248,8 +245,8 @@ static void server(int fd, int server_init) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* see the Getting peer's information example */ /* print_info(session); */ @@ -267,8 +264,7 @@ static void server(int fd, int server_init) success("server: Initiating rehandshake\n"); do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("server: 2nd gnutls_handshake: %s\n", @@ -286,34 +282,31 @@ static void server(int fd, int server_init) if (ret == 0) { if (debug) - success - ("server: Peer has closed the GnuTLS connection\n"); + success("server: Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0) { if (!server_init && ret == GNUTLS_E_REHANDSHAKE) { if (debug) - success - ("Initiating rehandshake due to client request\n"); + success("Initiating rehandshake due to client request\n"); do { ret = gnutls_handshake(session); - } - while (ret < 0 - && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && + gnutls_error_is_fatal(ret) == 0); if (ret == 0) break; } - fail("server: Received corrupted data(%s). Closing...\n", gnutls_strerror(ret)); + fail("server: Received corrupted data(%s). Closing...\n", + gnutls_strerror(ret)); terminate(); } else if (ret > 0) { /* echo data back to the client */ do { - ret = - gnutls_record_send(session, buffer, - strlen(buffer)); - } while (ret == GNUTLS_E_AGAIN - || ret == GNUTLS_E_INTERRUPTED); + ret = gnutls_record_send(session, buffer, + strlen(buffer)); + } while (ret == GNUTLS_E_AGAIN || + ret == GNUTLS_E_INTERRUPTED); } } @@ -370,4 +363,4 @@ void doit(void) start(1); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/dtls-rehandshake-cert-2.c b/tests/dtls-rehandshake-cert-2.c index 2f39ae672f..9bc6226107 100644 --- a/tests/dtls-rehandshake-cert-2.c +++ b/tests/dtls-rehandshake-cert-2.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,19 +35,19 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "cert-common.h" -# include "utils.h" +#include "cert-common.h" +#include "utils.h" static void terminate(void); @@ -69,8 +69,8 @@ static void client_log_func(int level, const char *str) * certificates. */ -# define MAX_BUF 1024 -# define MSG "Hello TLS" +#define MAX_BUF 1024 +#define MSG "Hello TLS" static ssize_t push(gnutls_transport_ptr_t tr, const void *data, size_t len) { @@ -115,8 +115,7 @@ static void client(int fd, int server_init, const char *prio) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -129,8 +128,8 @@ static void client(int fd, int server_init, const char *prio) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* update priorities to allow cert auth */ snprintf(buffer, sizeof(buffer), "%s:+ECDHE-RSA", prio); @@ -142,8 +141,7 @@ static void client(int fd, int server_init, const char *prio) success("Initiating client rehandshake\n"); do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("2nd client gnutls_handshake: %s\n", @@ -163,12 +161,10 @@ static void client(int fd, int server_init, const char *prio) } else if (ret < 0) { if (server_init && ret == GNUTLS_E_REHANDSHAKE) { if (debug) - success - ("Initiating rehandshake due to server request\n"); + success("Initiating rehandshake due to server request\n"); do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); } if (ret != 0) { @@ -182,7 +178,7 @@ static void client(int fd, int server_init, const char *prio) } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); @@ -224,8 +220,8 @@ static void server(int fd, int server_init, const char *prio) assert(gnutls_anon_allocate_server_credentials(&anoncred) >= 0); assert(gnutls_certificate_allocate_credentials(&serverx509cred) >= 0); - assert(gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, + assert(gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM) >= 0); gnutls_init(&session, GNUTLS_SERVER | GNUTLS_DATAGRAM); @@ -245,8 +241,7 @@ static void server(int fd, int server_init, const char *prio) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -259,8 +254,8 @@ static void server(int fd, int server_init, const char *prio) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); if (gnutls_kx_get(session) != GNUTLS_KX_ANON_ECDH) { fail("did not negotiate an anonymous ciphersuite on initial auth\n"); @@ -282,8 +277,7 @@ static void server(int fd, int server_init, const char *prio) success("server: Initiating rehandshake\n"); do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("server: 2nd gnutls_handshake: %s\n", @@ -301,34 +295,31 @@ static void server(int fd, int server_init, const char *prio) if (ret == 0) { if (debug) - success - ("server: Peer has closed the GnuTLS connection\n"); + success("server: Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0) { if (!server_init && ret == GNUTLS_E_REHANDSHAKE) { if (debug) - success - ("Initiating rehandshake due to client request\n"); + success("Initiating rehandshake due to client request\n"); do { ret = gnutls_handshake(session); - } - while (ret < 0 - && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && + gnutls_error_is_fatal(ret) == 0); if (ret == 0) break; } - fail("server: Received corrupted data(%s). Closing...\n", gnutls_strerror(ret)); + fail("server: Received corrupted data(%s). Closing...\n", + gnutls_strerror(ret)); terminate(); } else if (ret > 0) { /* echo data back to the client */ do { - ret = - gnutls_record_send(session, buffer, - strlen(buffer)); - } while (ret == GNUTLS_E_AGAIN - || ret == GNUTLS_E_INTERRUPTED); + ret = gnutls_record_send(session, buffer, + strlen(buffer)); + } while (ret == GNUTLS_E_AGAIN || + ret == GNUTLS_E_INTERRUPTED); } } @@ -392,4 +383,4 @@ void doit(void) "NONE:+VERS-DTLS1.2:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+CURVE-ALL"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/dtls-rehandshake-cert-3.c b/tests/dtls-rehandshake-cert-3.c index b5f3a73ba4..3581d39566 100644 --- a/tests/dtls-rehandshake-cert-3.c +++ b/tests/dtls-rehandshake-cert-3.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -36,23 +36,23 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "cert-common.h" -# include "utils.h" +#include "cert-common.h" +#include "utils.h" -# define MTU 1500 -# define MAX_BUF 4096 -# define MSG "Hello TLS" +#define MTU 1500 +#define MAX_BUF 4096 +#define MSG "Hello TLS" static int server_fd = -1; static char pkt_buf[MAX_BUF]; @@ -139,8 +139,7 @@ static void client(int fd, const char *prio) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -153,8 +152,8 @@ static void client(int fd, const char *prio) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* update priorities to allow cert auth */ snprintf(buffer, sizeof(buffer), "%s:+ECDHE-RSA", prio); @@ -171,12 +170,10 @@ static void client(int fd, const char *prio) } else if (ret < 0) { if (ret == GNUTLS_E_REHANDSHAKE) { if (debug) - success - ("Initiating rehandshake due to server request\n"); + success("Initiating rehandshake due to server request\n"); do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); } if (ret != 0) { @@ -190,7 +187,7 @@ static void client(int fd, const char *prio) } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); @@ -232,8 +229,8 @@ static void server(int fd, const char *prio) assert(gnutls_anon_allocate_server_credentials(&anoncred) >= 0); assert(gnutls_certificate_allocate_credentials(&serverx509cred) >= 0); - assert(gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, + assert(gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM) >= 0); gnutls_init(&session, GNUTLS_SERVER | GNUTLS_DATAGRAM); @@ -253,8 +250,7 @@ static void server(int fd, const char *prio) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -267,8 +263,8 @@ static void server(int fd, const char *prio) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); if (gnutls_kx_get(session) != GNUTLS_KX_ANON_ECDH) { fail("did not negotiate an anonymous ciphersuite on initial auth\n"); @@ -289,8 +285,7 @@ static void server(int fd, const char *prio) success("server: Initiating rehandshake\n"); do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("server: 2nd gnutls_handshake: %s\n", @@ -307,21 +302,20 @@ static void server(int fd, const char *prio) if (ret == 0) { if (debug) - success - ("server: Peer has closed the GnuTLS connection\n"); + success("server: Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0) { - fail("server: Received corrupted data(%s). Closing...\n", gnutls_strerror(ret)); + fail("server: Received corrupted data(%s). Closing...\n", + gnutls_strerror(ret)); terminate(); } else if (ret > 0) { /* echo data back to the client */ do { - ret = - gnutls_record_send(session, buffer, - strlen(buffer)); - } while (ret == GNUTLS_E_AGAIN - || ret == GNUTLS_E_INTERRUPTED); + ret = gnutls_record_send(session, buffer, + strlen(buffer)); + } while (ret == GNUTLS_E_AGAIN || + ret == GNUTLS_E_INTERRUPTED); } } @@ -380,8 +374,7 @@ static void start(const char *prio) void doit(void) { - start - ("NONE:+VERS-DTLS1.2:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+CURVE-ALL"); + start("NONE:+VERS-DTLS1.2:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+CURVE-ALL"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/dtls-rehandshake-cert.c b/tests/dtls-rehandshake-cert.c index cc29950a6c..f8f1083aea 100644 --- a/tests/dtls-rehandshake-cert.c +++ b/tests/dtls-rehandshake-cert.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,19 +35,19 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "cert-common.h" -# include "utils.h" +#include "cert-common.h" +#include "utils.h" static void terminate(void); @@ -68,8 +68,8 @@ static void client_log_func(int level, const char *str) * certificates. */ -# define MAX_BUF 1024 -# define MSG "Hello TLS" +#define MAX_BUF 1024 +#define MSG "Hello TLS" static ssize_t push(gnutls_transport_ptr_t tr, const void *data, size_t len) { @@ -112,8 +112,7 @@ static void client(int fd, int server_init, const char *prio) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -126,8 +125,8 @@ static void client(int fd, int server_init, const char *prio) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); if (!server_init) { sec_sleep(60); @@ -135,8 +134,7 @@ static void client(int fd, int server_init, const char *prio) success("Initiating client rehandshake\n"); do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("2nd client gnutls_handshake: %s\n", @@ -156,12 +154,10 @@ static void client(int fd, int server_init, const char *prio) } else if (ret < 0) { if (server_init && ret == GNUTLS_E_REHANDSHAKE) { if (debug) - success - ("Initiating rehandshake due to server request\n"); + success("Initiating rehandshake due to server request\n"); do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); } if (ret != 0) { @@ -175,7 +171,7 @@ static void client(int fd, int server_init, const char *prio) } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); @@ -214,8 +210,8 @@ static void server(int fd, int server_init, const char *prio) } assert(gnutls_certificate_allocate_credentials(&serverx509cred) >= 0); - assert(gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, + assert(gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM) >= 0); gnutls_init(&session, GNUTLS_SERVER | GNUTLS_DATAGRAM); @@ -234,8 +230,7 @@ static void server(int fd, int server_init, const char *prio) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -248,8 +243,8 @@ static void server(int fd, int server_init, const char *prio) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* see the Getting peer's information example */ /* print_info(session); */ @@ -267,8 +262,7 @@ static void server(int fd, int server_init, const char *prio) success("server: Initiating rehandshake\n"); do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("server: 2nd gnutls_handshake: %s\n", @@ -286,34 +280,31 @@ static void server(int fd, int server_init, const char *prio) if (ret == 0) { if (debug) - success - ("server: Peer has closed the GnuTLS connection\n"); + success("server: Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0) { if (!server_init && ret == GNUTLS_E_REHANDSHAKE) { if (debug) - success - ("Initiating rehandshake due to client request\n"); + success("Initiating rehandshake due to client request\n"); do { ret = gnutls_handshake(session); - } - while (ret < 0 - && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && + gnutls_error_is_fatal(ret) == 0); if (ret == 0) break; } - fail("server: Received corrupted data(%s). Closing...\n", gnutls_strerror(ret)); + fail("server: Received corrupted data(%s). Closing...\n", + gnutls_strerror(ret)); terminate(); } else if (ret > 0) { /* echo data back to the client */ do { - ret = - gnutls_record_send(session, buffer, - strlen(buffer)); - } while (ret == GNUTLS_E_AGAIN - || ret == GNUTLS_E_INTERRUPTED); + ret = gnutls_record_send(session, buffer, + strlen(buffer)); + } while (ret == GNUTLS_E_AGAIN || + ret == GNUTLS_E_INTERRUPTED); } } @@ -372,4 +363,4 @@ void doit(void) "NONE:+VERS-DTLS1.2:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+CURVE-ALL"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/dtls-repro-20170915.c b/tests/dtls-repro-20170915.c index 88351c61d9..adc92f3e71 100644 --- a/tests/dtls-repro-20170915.c +++ b/tests/dtls-repro-20170915.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* This program tests the various certificate key exchange methods supported @@ -39,12 +39,12 @@ void doit(void) { global_init(); - dtls_try_with_key_mtu("DTLS 1.2 with cli-cert", - "NONE:+VERS-DTLS1.0:+MAC-ALL:+KX-ALL:+CIPHER-ALL:+SIGN-ALL:+COMP-ALL:+CURVE-ALL", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_SHA256, - GNUTLS_SIGN_RSA_SHA256, &server_repro_cert, - &server_repro_key, &client_repro_cert, - &client_repro_key, USE_CERT, 1452); + dtls_try_with_key_mtu( + "DTLS 1.2 with cli-cert", + "NONE:+VERS-DTLS1.0:+MAC-ALL:+KX-ALL:+CIPHER-ALL:+SIGN-ALL:+COMP-ALL:+CURVE-ALL", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_SHA256, + GNUTLS_SIGN_RSA_SHA256, &server_repro_cert, &server_repro_key, + &client_repro_cert, &client_repro_key, USE_CERT, 1452); gnutls_global_deinit(); } diff --git a/tests/dtls-session-ticket-lost.c b/tests/dtls-session-ticket-lost.c index e174563204..51d4b85de3 100644 --- a/tests/dtls-session-ticket-lost.c +++ b/tests/dtls-session-ticket-lost.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,20 +35,20 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "cert-common.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cert-common.h" +#include "utils.h" /* This program is a reproducer for issue #543; the timeout * of DTLS handshake when a NewSessionTicket is lost. @@ -64,7 +64,7 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd, const char *prio) { @@ -89,8 +89,7 @@ static void client(int fd, const char *prio) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed: %s\n", gnutls_strerror(ret)); @@ -112,8 +111,8 @@ static void client(int fd, const char *prio) gnutls_certificate_free_credentials(x509_cred); } -static ssize_t -server_push(gnutls_transport_ptr_t tr, const void *data, size_t len) +static ssize_t server_push(gnutls_transport_ptr_t tr, const void *data, + size_t len) { const uint8_t *d = data; static int dropped = 0; @@ -184,7 +183,7 @@ static void server(int fd, const char *prio) if (ret != 0) fail("error waiting for EOF: %s\n", gnutls_strerror(ret)); - end: +end: close(fd); gnutls_deinit(session); gnutls_free(skey.data); @@ -200,8 +199,7 @@ static void ch_handler(int sig) return; } -static -void start(const char *prio) +static void start(const char *prio) { int fd[2]; int ret, status = 0; @@ -244,4 +242,4 @@ void doit(void) start("NORMAL:-VERS-ALL:+VERS-DTLS1.2"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/dtls-sliding-window.c b/tests/dtls-sliding-window.c index c24e45df8c..32dbea16f0 100644 --- a/tests/dtls-sliding-window.c +++ b/tests/dtls-sliding-window.c @@ -48,14 +48,12 @@ int _dtls_record_check(struct record_parameters_st *rp, uint64_t _seq); #define DTLS_SW_NO_INCLUDES #include "../lib/dtls-sw.c" -#define RESET_WINDOW \ - memset(&state, 0, sizeof(state)) +#define RESET_WINDOW memset(&state, 0, sizeof(state)) -#define SET_WINDOW_NEXT(x) \ - state.dtls_sw_next = (((x)&DTLS_SEQ_NUM_MASK)) +#define SET_WINDOW_NEXT(x) state.dtls_sw_next = (((x)&DTLS_SEQ_NUM_MASK)) #define SET_WINDOW_LAST_RECV(x) \ - t = x; \ + t = x; \ state.dtls_sw_have_recv = 1 static void check_dtls_window_uninit_0(void **glob_state) diff --git a/tests/dtls-with-seccomp.c b/tests/dtls-with-seccomp.c index 8cee86b74f..8be05e7825 100644 --- a/tests/dtls-with-seccomp.c +++ b/tests/dtls-with-seccomp.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,20 +35,20 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "cert-common.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cert-common.h" +#include "utils.h" static void terminate(void); @@ -62,7 +62,7 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static ssize_t push(gnutls_transport_ptr_t tr, const void *data, size_t len) { @@ -104,8 +104,7 @@ static void client(int fd, const char *prio) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -118,8 +117,8 @@ static void client(int fd, const char *prio) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { ret = gnutls_record_recv(session, buffer, sizeof(buffer) - 1); @@ -140,7 +139,7 @@ static void client(int fd, const char *prio) gnutls_strerror(ret)); } - end: +end: close(fd); @@ -181,9 +180,8 @@ static void server(int fd, const char *prio) gnutls_certificate_allocate_credentials(&xcred); - ret = gnutls_certificate_set_x509_key_mem(xcred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + xcred, &server_cert, &server_key, GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -206,8 +204,7 @@ static void server(int fd, const char *prio) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -220,8 +217,8 @@ static void server(int fd, const char *prio) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* see the Getting peer's information example */ /* print_info(session); */ @@ -256,8 +253,7 @@ static void server(int fd, const char *prio) success("server: finished\n"); } -static -void run(const char *name, const char *prio) +static void run(const char *name, const char *prio) { int fd[2]; int ret; @@ -301,4 +297,4 @@ void doit(void) run("default", "NORMAL"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/dtls/dtls-stress.c b/tests/dtls/dtls-stress.c index 088c84723d..2ed41eeaf7 100644 --- a/tests/dtls/dtls-stress.c +++ b/tests/dtls/dtls-stress.c @@ -107,8 +107,9 @@ // {{{ types -# define log(fmt, ...) \ - if (debug) fprintf(stdout, "%i %s| "fmt, run_id, role_name, ##__VA_ARGS__) +#define log(fmt, ...) \ + if (debug) \ + fprintf(stdout, "%i %s| " fmt, run_id, role_name, ##__VA_ARGS__) typedef struct { int count; @@ -126,113 +127,114 @@ typedef void (*filter_fn)(gnutls_transport_ptr_t, const unsigned char *, typedef int (*match_fn)(const unsigned char *, size_t); -enum role { SERVER, CLIENT }; +enum role { + SERVER, + CLIENT +}; // }}} // {{{ static data -static int permutations2[2][2] -= { {0, 1}, {1, 0} }; +static int permutations2[2][2] = { { 0, 1 }, { 1, 0 } }; -static const char *permutation_names2[] -= { "01", "10", 0 }; +static const char *permutation_names2[] = { "01", "10", 0 }; -static int permutations3[6][3] -= { {0, 1, 2}, {0, 2, 1}, {1, 0, 2}, {1, 2, 0}, {2, 0, 1}, {2, 1, 0} }; +static int permutations3[6][3] = { { 0, 1, 2 }, { 0, 2, 1 }, { 1, 0, 2 }, + { 1, 2, 0 }, { 2, 0, 1 }, { 2, 1, 0 } }; -static const char *permutation_names3[] -= { "012", "021", "102", "120", "201", "210", 0 }; +static const char *permutation_names3[] = { "012", "021", "102", "120", + "201", "210", 0 }; static int permutations5[120][5] = { - {0, 1, 2, 3, 4}, {0, 2, 1, 3, 4}, {1, 0, 2, 3, 4}, {1, 2, 0, 3, 4}, - {2, 0, 1, 3, 4}, {2, 1, 0, 3, 4}, {0, 1, 3, 2, 4}, {0, 2, 3, 1, 4}, - {1, 0, 3, 2, 4}, {1, 2, 3, 0, 4}, {2, 0, 3, 1, 4}, {2, 1, 3, 0, 4}, - {0, 3, 1, 2, 4}, {0, 3, 2, 1, 4}, {1, 3, 0, 2, 4}, {1, 3, 2, 0, 4}, - {2, 3, 0, 1, 4}, {2, 3, 1, 0, 4}, {3, 0, 1, 2, 4}, {3, 0, 2, 1, 4}, - {3, 1, 0, 2, 4}, {3, 1, 2, 0, 4}, {3, 2, 0, 1, 4}, {3, 2, 1, 0, 4}, - {0, 1, 2, 4, 3}, {0, 2, 1, 4, 3}, {1, 0, 2, 4, 3}, {1, 2, 0, 4, 3}, - {2, 0, 1, 4, 3}, {2, 1, 0, 4, 3}, {0, 1, 3, 4, 2}, {0, 2, 3, 4, 1}, - {1, 0, 3, 4, 2}, {1, 2, 3, 4, 0}, {2, 0, 3, 4, 1}, {2, 1, 3, 4, 0}, - {0, 3, 1, 4, 2}, {0, 3, 2, 4, 1}, {1, 3, 0, 4, 2}, {1, 3, 2, 4, 0}, - {2, 3, 0, 4, 1}, {2, 3, 1, 4, 0}, {3, 0, 1, 4, 2}, {3, 0, 2, 4, 1}, - {3, 1, 0, 4, 2}, {3, 1, 2, 4, 0}, {3, 2, 0, 4, 1}, {3, 2, 1, 4, 0}, - {0, 1, 4, 2, 3}, {0, 2, 4, 1, 3}, {1, 0, 4, 2, 3}, {1, 2, 4, 0, 3}, - {2, 0, 4, 1, 3}, {2, 1, 4, 0, 3}, {0, 1, 4, 3, 2}, {0, 2, 4, 3, 1}, - {1, 0, 4, 3, 2}, {1, 2, 4, 3, 0}, {2, 0, 4, 3, 1}, {2, 1, 4, 3, 0}, - {0, 3, 4, 1, 2}, {0, 3, 4, 2, 1}, {1, 3, 4, 0, 2}, {1, 3, 4, 2, 0}, - {2, 3, 4, 0, 1}, {2, 3, 4, 1, 0}, {3, 0, 4, 1, 2}, {3, 0, 4, 2, 1}, - {3, 1, 4, 0, 2}, {3, 1, 4, 2, 0}, {3, 2, 4, 0, 1}, {3, 2, 4, 1, 0}, - {0, 4, 1, 2, 3}, {0, 4, 2, 1, 3}, {1, 4, 0, 2, 3}, {1, 4, 2, 0, 3}, - {2, 4, 0, 1, 3}, {2, 4, 1, 0, 3}, {0, 4, 1, 3, 2}, {0, 4, 2, 3, 1}, - {1, 4, 0, 3, 2}, {1, 4, 2, 3, 0}, {2, 4, 0, 3, 1}, {2, 4, 1, 3, 0}, - {0, 4, 3, 1, 2}, {0, 4, 3, 2, 1}, {1, 4, 3, 0, 2}, {1, 4, 3, 2, 0}, - {2, 4, 3, 0, 1}, {2, 4, 3, 1, 0}, {3, 4, 0, 1, 2}, {3, 4, 0, 2, 1}, - {3, 4, 1, 0, 2}, {3, 4, 1, 2, 0}, {3, 4, 2, 0, 1}, {3, 4, 2, 1, 0}, - {4, 0, 1, 2, 3}, {4, 0, 2, 1, 3}, {4, 1, 0, 2, 3}, {4, 1, 2, 0, 3}, - {4, 2, 0, 1, 3}, {4, 2, 1, 0, 3}, {4, 0, 1, 3, 2}, {4, 0, 2, 3, 1}, - {4, 1, 0, 3, 2}, {4, 1, 2, 3, 0}, {4, 2, 0, 3, 1}, {4, 2, 1, 3, 0}, - {4, 0, 3, 1, 2}, {4, 0, 3, 2, 1}, {4, 1, 3, 0, 2}, {4, 1, 3, 2, 0}, - {4, 2, 3, 0, 1}, {4, 2, 3, 1, 0}, {4, 3, 0, 1, 2}, {4, 3, 0, 2, 1}, - {4, 3, 1, 0, 2}, {4, 3, 1, 2, 0}, {4, 3, 2, 0, 1}, {4, 3, 2, 1, 0} -}; - -static const char *permutation_names5[] - = { "01234", "02134", "10234", "12034", "20134", "21034", "01324", - "02314", "10324", "12304", "20314", "21304", "03124", "03214", - "13024", "13204", "23014", "23104", "30124", "30214", "31024", - "31204", "32014", "32104", "01243", "02143", "10243", "12043", - "20143", "21043", "01342", "02341", "10342", "12340", "20341", - "21340", "03142", "03241", "13042", "13240", "23041", "23140", - "30142", "30241", "31042", "31240", "32041", "32140", "01423", - "02413", "10423", "12403", "20413", "21403", "01432", "02431", - "10432", "12430", "20431", "21430", "03412", "03421", "13402", - "13420", "23401", "23410", "30412", "30421", "31402", "31420", - "32401", "32410", "04123", "04213", "14023", "14203", "24013", - "24103", "04132", "04231", "14032", "14230", "24031", "24130", - "04312", "04321", "14302", "14320", "24301", "24310", "34012", - "34021", "34102", "34120", "34201", "34210", "40123", "40213", - "41023", "41203", "42013", "42103", "40132", "40231", "41032", - "41230", "42031", "42130", "40312", "40321", "41302", "41320", - "42301", "42310", "43012", "43021", "43102", "43120", "43201", - "43210", 0 -}; - -static const char *filter_names[8] - = { "SHello", - "SKeyExchange", - "SHelloDone", - "CKeyExchange", - "CChangeCipherSpec", - "CFinished", - "SChangeCipherSpec", - "SFinished" -}; - -static const char *filter_names_resume[] - = { "SHello", - "SChangeCipherSpec", - "SFinished", - "CChangeCipherSpec", - "CFinished" + { 0, 1, 2, 3, 4 }, { 0, 2, 1, 3, 4 }, { 1, 0, 2, 3, 4 }, + { 1, 2, 0, 3, 4 }, { 2, 0, 1, 3, 4 }, { 2, 1, 0, 3, 4 }, + { 0, 1, 3, 2, 4 }, { 0, 2, 3, 1, 4 }, { 1, 0, 3, 2, 4 }, + { 1, 2, 3, 0, 4 }, { 2, 0, 3, 1, 4 }, { 2, 1, 3, 0, 4 }, + { 0, 3, 1, 2, 4 }, { 0, 3, 2, 1, 4 }, { 1, 3, 0, 2, 4 }, + { 1, 3, 2, 0, 4 }, { 2, 3, 0, 1, 4 }, { 2, 3, 1, 0, 4 }, + { 3, 0, 1, 2, 4 }, { 3, 0, 2, 1, 4 }, { 3, 1, 0, 2, 4 }, + { 3, 1, 2, 0, 4 }, { 3, 2, 0, 1, 4 }, { 3, 2, 1, 0, 4 }, + { 0, 1, 2, 4, 3 }, { 0, 2, 1, 4, 3 }, { 1, 0, 2, 4, 3 }, + { 1, 2, 0, 4, 3 }, { 2, 0, 1, 4, 3 }, { 2, 1, 0, 4, 3 }, + { 0, 1, 3, 4, 2 }, { 0, 2, 3, 4, 1 }, { 1, 0, 3, 4, 2 }, + { 1, 2, 3, 4, 0 }, { 2, 0, 3, 4, 1 }, { 2, 1, 3, 4, 0 }, + { 0, 3, 1, 4, 2 }, { 0, 3, 2, 4, 1 }, { 1, 3, 0, 4, 2 }, + { 1, 3, 2, 4, 0 }, { 2, 3, 0, 4, 1 }, { 2, 3, 1, 4, 0 }, + { 3, 0, 1, 4, 2 }, { 3, 0, 2, 4, 1 }, { 3, 1, 0, 4, 2 }, + { 3, 1, 2, 4, 0 }, { 3, 2, 0, 4, 1 }, { 3, 2, 1, 4, 0 }, + { 0, 1, 4, 2, 3 }, { 0, 2, 4, 1, 3 }, { 1, 0, 4, 2, 3 }, + { 1, 2, 4, 0, 3 }, { 2, 0, 4, 1, 3 }, { 2, 1, 4, 0, 3 }, + { 0, 1, 4, 3, 2 }, { 0, 2, 4, 3, 1 }, { 1, 0, 4, 3, 2 }, + { 1, 2, 4, 3, 0 }, { 2, 0, 4, 3, 1 }, { 2, 1, 4, 3, 0 }, + { 0, 3, 4, 1, 2 }, { 0, 3, 4, 2, 1 }, { 1, 3, 4, 0, 2 }, + { 1, 3, 4, 2, 0 }, { 2, 3, 4, 0, 1 }, { 2, 3, 4, 1, 0 }, + { 3, 0, 4, 1, 2 }, { 3, 0, 4, 2, 1 }, { 3, 1, 4, 0, 2 }, + { 3, 1, 4, 2, 0 }, { 3, 2, 4, 0, 1 }, { 3, 2, 4, 1, 0 }, + { 0, 4, 1, 2, 3 }, { 0, 4, 2, 1, 3 }, { 1, 4, 0, 2, 3 }, + { 1, 4, 2, 0, 3 }, { 2, 4, 0, 1, 3 }, { 2, 4, 1, 0, 3 }, + { 0, 4, 1, 3, 2 }, { 0, 4, 2, 3, 1 }, { 1, 4, 0, 3, 2 }, + { 1, 4, 2, 3, 0 }, { 2, 4, 0, 3, 1 }, { 2, 4, 1, 3, 0 }, + { 0, 4, 3, 1, 2 }, { 0, 4, 3, 2, 1 }, { 1, 4, 3, 0, 2 }, + { 1, 4, 3, 2, 0 }, { 2, 4, 3, 0, 1 }, { 2, 4, 3, 1, 0 }, + { 3, 4, 0, 1, 2 }, { 3, 4, 0, 2, 1 }, { 3, 4, 1, 0, 2 }, + { 3, 4, 1, 2, 0 }, { 3, 4, 2, 0, 1 }, { 3, 4, 2, 1, 0 }, + { 4, 0, 1, 2, 3 }, { 4, 0, 2, 1, 3 }, { 4, 1, 0, 2, 3 }, + { 4, 1, 2, 0, 3 }, { 4, 2, 0, 1, 3 }, { 4, 2, 1, 0, 3 }, + { 4, 0, 1, 3, 2 }, { 4, 0, 2, 3, 1 }, { 4, 1, 0, 3, 2 }, + { 4, 1, 2, 3, 0 }, { 4, 2, 0, 3, 1 }, { 4, 2, 1, 3, 0 }, + { 4, 0, 3, 1, 2 }, { 4, 0, 3, 2, 1 }, { 4, 1, 3, 0, 2 }, + { 4, 1, 3, 2, 0 }, { 4, 2, 3, 0, 1 }, { 4, 2, 3, 1, 0 }, + { 4, 3, 0, 1, 2 }, { 4, 3, 0, 2, 1 }, { 4, 3, 1, 0, 2 }, + { 4, 3, 1, 2, 0 }, { 4, 3, 2, 0, 1 }, { 4, 3, 2, 1, 0 } }; -static const char *filter_names_full[12] - = { "SHello", - "SCertificate", - "SKeyExchange", - "SCertificateRequest", - "SHelloDone", - "CCertificate", - "CKeyExchange", - "CCertificateVerify", - "CChangeCipherSpec", - "CFinished", - "SChangeCipherSpec", - "SFinished" +static const char *permutation_names5[] = { + "01234", "02134", "10234", "12034", "20134", "21034", "01324", "02314", + "10324", "12304", "20314", "21304", "03124", "03214", "13024", "13204", + "23014", "23104", "30124", "30214", "31024", "31204", "32014", "32104", + "01243", "02143", "10243", "12043", "20143", "21043", "01342", "02341", + "10342", "12340", "20341", "21340", "03142", "03241", "13042", "13240", + "23041", "23140", "30142", "30241", "31042", "31240", "32041", "32140", + "01423", "02413", "10423", "12403", "20413", "21403", "01432", "02431", + "10432", "12430", "20431", "21430", "03412", "03421", "13402", "13420", + "23401", "23410", "30412", "30421", "31402", "31420", "32401", "32410", + "04123", "04213", "14023", "14203", "24013", "24103", "04132", "04231", + "14032", "14230", "24031", "24130", "04312", "04321", "14302", "14320", + "24301", "24310", "34012", "34021", "34102", "34120", "34201", "34210", + "40123", "40213", "41023", "41203", "42013", "42103", "40132", "40231", + "41032", "41230", "42031", "42130", "40312", "40321", "41302", "41320", + "42301", "42310", "43012", "43021", "43102", "43120", "43201", "43210", + 0 }; -# include "cert-common.h" +static const char *filter_names[8] = { "SHello", + "SKeyExchange", + "SHelloDone", + "CKeyExchange", + "CChangeCipherSpec", + "CFinished", + "SChangeCipherSpec", + "SFinished" }; + +static const char *filter_names_resume[] = { "SHello", "SChangeCipherSpec", + "SFinished", "CChangeCipherSpec", + "CFinished" }; + +static const char *filter_names_full[12] = { "SHello", + "SCertificate", + "SKeyExchange", + "SCertificateRequest", + "SHelloDone", + "CCertificate", + "CKeyExchange", + "CCertificateVerify", + "CChangeCipherSpec", + "CFinished", + "SChangeCipherSpec", + "SFinished" }; + +#include "cert-common.h" // }}} @@ -240,7 +242,7 @@ static const char *filter_names_full[12] enum role role; -# define role_name (role == SERVER ? "server" : "client") +#define role_name (role == SERVER ? "server" : "client") int debug; int nonblock; @@ -281,8 +283,8 @@ static void drop(const char *packet) static int _process_error(int loc, int code, int die) { if (code < 0 && (die || code != GNUTLS_E_AGAIN)) { - fprintf(stdout, "%i <%s tls> line %i: %s", run_id, - role_name, loc, gnutls_strerror(code)); + fprintf(stdout, "%i <%s tls> line %i: %s", run_id, role_name, + loc, gnutls_strerror(code)); if (gnutls_error_is_fatal(code) || die) { fprintf(stdout, " (fatal)\n"); exit(1); @@ -293,8 +295,8 @@ static int _process_error(int loc, int code, int die) return code; } -# define die_on_error(code) _process_error(__LINE__, code, 1) -# define process_error(code) _process_error(__LINE__, code, 0) +#define die_on_error(code) _process_error(__LINE__, code, 1) +#define process_error(code) _process_error(__LINE__, code, 0) static void _process_error_or_timeout(int loc, int err, time_t tdiff) { @@ -308,7 +310,8 @@ static void _process_error_or_timeout(int loc, int err, time_t tdiff) } } -# define process_error_or_timeout(code, tdiff) _process_error_or_timeout(__LINE__, code, tdiff) +#define process_error_or_timeout(code, tdiff) \ + _process_error_or_timeout(__LINE__, code, tdiff) static void rperror(const char *name) { @@ -334,29 +337,58 @@ filter_packet_state_t state_packet_ServerChangeCipherSpec = { 0 }; filter_packet_state_t state_packet_ServerFinished = { 0 }; filter_packet_state_t state_packet_ServerFinishedResume = { 0 }; -static filter_permute_state_t state_permute_ServerHello = - { 0, {{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}}, 0, 0 }; -static filter_permute_state_t state_permute_ServerHelloFull = - { 0, {{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}}, 0, 0 }; -static filter_permute_state_t state_permute_ServerFinished = - { 0, {{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}}, 0, 0 }; -static filter_permute_state_t state_permute_ServerFinishedResume = - { 0, {{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}}, 0, 0 }; -static filter_permute_state_t state_permute_ClientFinished = - { 0, {{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}}, 0, 0 }; -static filter_permute_state_t state_permute_ClientFinishedResume = - { 0, {{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}}, 0, 0 }; -static filter_permute_state_t state_permute_ClientFinishedFull = - { 0, {{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}}, 0, 0 }; +static filter_permute_state_t state_permute_ServerHello = { + 0, + { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } }, + 0, + 0 +}; +static filter_permute_state_t state_permute_ServerHelloFull = { + 0, + { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } }, + 0, + 0 +}; +static filter_permute_state_t state_permute_ServerFinished = { + 0, + { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } }, + 0, + 0 +}; +static filter_permute_state_t state_permute_ServerFinishedResume = { + 0, + { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } }, + 0, + 0 +}; +static filter_permute_state_t state_permute_ClientFinished = { + 0, + { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } }, + 0, + 0 +}; +static filter_permute_state_t state_permute_ClientFinishedResume = { + 0, + { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } }, + 0, + 0 +}; +static filter_permute_state_t state_permute_ClientFinishedFull = { + 0, + { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } }, + 0, + 0 +}; filter_fn filter_chain[32]; int filter_current_idx; -static void filter_permute_state_free_buffer(filter_permute_state_t * state) +static void filter_permute_state_free_buffer(filter_permute_state_t *state) { unsigned int i; - for (i = 0; i < sizeof(state->packets) / sizeof(state->packets[0]); i++) { + for (i = 0; i < sizeof(state->packets) / sizeof(state->packets[0]); + i++) { free(state->packets[i].data); state->packets[i].data = NULL; } @@ -436,7 +468,7 @@ static void filter_run_next(gnutls_transport_ptr_t fd, if (fn) { fn(fd, buffer, len); } else { - ret = send((int)(intptr_t) fd, buffer, len, 0); + ret = send((int)(intptr_t)fd, buffer, len, 0); } filter_current_idx--; @@ -445,7 +477,7 @@ static void filter_run_next(gnutls_transport_ptr_t fd, memcpy(rbuffer, buffer, len); rbuffer_size = len; } else if (rbuffer_size != 0) { - send((int)(intptr_t) fd, rbuffer, rbuffer_size, 0); + send((int)(intptr_t)fd, rbuffer, rbuffer_size, 0); if (len < sizeof(rbuffer) && len > rbuffer_size) { memcpy(rbuffer, buffer, len); rbuffer_size = len; @@ -460,52 +492,52 @@ static void filter_run_next(gnutls_transport_ptr_t fd, static int match_ServerHello(const unsigned char *buffer, size_t len) { - return role == SERVER && len >= 13 + 1 && buffer[0] == 22 - && buffer[13] == 2; + return role == SERVER && len >= 13 + 1 && buffer[0] == 22 && + buffer[13] == 2; } static int match_ServerCertificate(const unsigned char *buffer, size_t len) { - return role == SERVER && len >= 13 + 1 && buffer[0] == 22 - && buffer[13] == 11; + return role == SERVER && len >= 13 + 1 && buffer[0] == 22 && + buffer[13] == 11; } static int match_ServerKeyExchange(const unsigned char *buffer, size_t len) { - return role == SERVER && len >= 13 + 1 && buffer[0] == 22 - && buffer[13] == 12; + return role == SERVER && len >= 13 + 1 && buffer[0] == 22 && + buffer[13] == 12; } static int match_ServerCertificateRequest(const unsigned char *buffer, size_t len) { - return role == SERVER && len >= 13 + 1 && buffer[0] == 22 - && buffer[13] == 13; + return role == SERVER && len >= 13 + 1 && buffer[0] == 22 && + buffer[13] == 13; } static int match_ServerHelloDone(const unsigned char *buffer, size_t len) { - return role == SERVER && len >= 13 + 1 && buffer[0] == 22 - && buffer[13] == 14; + return role == SERVER && len >= 13 + 1 && buffer[0] == 22 && + buffer[13] == 14; } static int match_ClientCertificate(const unsigned char *buffer, size_t len) { - return role == CLIENT && len >= 13 + 1 && buffer[0] == 22 - && buffer[13] == 11; + return role == CLIENT && len >= 13 + 1 && buffer[0] == 22 && + buffer[13] == 11; } static int match_ClientKeyExchange(const unsigned char *buffer, size_t len) { - return role == CLIENT && len >= 13 + 1 && buffer[0] == 22 - && buffer[13] == 16; + return role == CLIENT && len >= 13 + 1 && buffer[0] == 22 && + buffer[13] == 16; } static int match_ClientCertificateVerify(const unsigned char *buffer, size_t len) { - return role == CLIENT && len >= 13 + 1 && buffer[0] == 22 - && buffer[13] == 15; + return role == CLIENT && len >= 13 + 1 && buffer[0] == 22 && + buffer[13] == 15; } static int match_ClientChangeCipherSpec(const unsigned char *buffer, size_t len) @@ -532,35 +564,36 @@ static int match_ServerFinished(const unsigned char *buffer, size_t len) // {{{ packet drop filters -# define FILTER_DROP_COUNT 3 -# define DECLARE_FILTER(packet) \ - static void filter_packet_##packet(gnutls_transport_ptr_t fd, \ - const unsigned char* buffer, size_t len) \ - { \ - if (match_##packet(buffer, len) && (state_packet_##packet).count++ < FILTER_DROP_COUNT) { \ - drop(#packet); \ - } else { \ - filter_run_next(fd, buffer, len); \ - } \ +#define FILTER_DROP_COUNT 3 +#define DECLARE_FILTER(packet) \ + static void filter_packet_##packet(gnutls_transport_ptr_t fd, \ + const unsigned char *buffer, \ + size_t len) \ + { \ + if (match_##packet(buffer, len) && \ + (state_packet_##packet).count++ < FILTER_DROP_COUNT) { \ + drop(#packet); \ + } else { \ + filter_run_next(fd, buffer, len); \ + } \ } DECLARE_FILTER(ServerHello) - DECLARE_FILTER(ServerCertificate) - DECLARE_FILTER(ServerKeyExchange) - DECLARE_FILTER(ServerCertificateRequest) - DECLARE_FILTER(ServerHelloDone) - DECLARE_FILTER(ClientCertificate) - DECLARE_FILTER(ClientKeyExchange) - DECLARE_FILTER(ClientCertificateVerify) - DECLARE_FILTER(ClientChangeCipherSpec) - DECLARE_FILTER(ClientFinished) - DECLARE_FILTER(ServerChangeCipherSpec) - DECLARE_FILTER(ServerFinished) +DECLARE_FILTER(ServerCertificate) +DECLARE_FILTER(ServerKeyExchange) +DECLARE_FILTER(ServerCertificateRequest) +DECLARE_FILTER(ServerHelloDone) +DECLARE_FILTER(ClientCertificate) +DECLARE_FILTER(ClientKeyExchange) +DECLARE_FILTER(ClientCertificateVerify) +DECLARE_FILTER(ClientChangeCipherSpec) +DECLARE_FILTER(ClientFinished) +DECLARE_FILTER(ServerChangeCipherSpec) +DECLARE_FILTER(ServerFinished) // }}} // {{{ flight permutation filters -static void filter_permute_state_run(filter_permute_state_t * state, - int packetCount, - gnutls_transport_ptr_t fd, +static void filter_permute_state_run(filter_permute_state_t *state, + int packetCount, gnutls_transport_ptr_t fd, const unsigned char *buffer, size_t len) { unsigned char *data; @@ -587,57 +620,62 @@ static void filter_permute_state_run(filter_permute_state_t * state, } } -# define DECLARE_PERMUTE(flight) \ - static void filter_permute_##flight(gnutls_transport_ptr_t fd, \ - const unsigned char* buffer, size_t len) \ - { \ - int count = sizeof(permute_match_##flight) / sizeof(permute_match_##flight[0]); \ - int i; \ - for (i = 0; i < count; i++) { \ - if (permute_match_##flight[i](buffer, len)) { \ - filter_permute_state_run(&state_permute_##flight, count, fd, buffer, len); \ - return; \ - } \ - } \ - filter_run_next(fd, buffer, len); \ +#define DECLARE_PERMUTE(flight) \ + static void filter_permute_##flight(gnutls_transport_ptr_t fd, \ + const unsigned char *buffer, \ + size_t len) \ + { \ + int count = sizeof(permute_match_##flight) / \ + sizeof(permute_match_##flight[0]); \ + int i; \ + for (i = 0; i < count; i++) { \ + if (permute_match_##flight[i](buffer, len)) { \ + filter_permute_state_run( \ + &state_permute_##flight, count, fd, \ + buffer, len); \ + return; \ + } \ + } \ + filter_run_next(fd, buffer, len); \ } -static match_fn permute_match_ServerHello[] = - { match_ServerHello, match_ServerKeyExchange, match_ServerHelloDone }; +static match_fn permute_match_ServerHello[] = { match_ServerHello, + match_ServerKeyExchange, + match_ServerHelloDone }; -static match_fn permute_match_ServerHelloFull[] = - { match_ServerHello, match_ServerCertificate, match_ServerKeyExchange, +static match_fn permute_match_ServerHelloFull[] = { + match_ServerHello, match_ServerCertificate, match_ServerKeyExchange, match_ServerCertificateRequest, match_ServerHelloDone }; -static match_fn permute_match_ServerFinished[] = - { match_ServerChangeCipherSpec, match_ServerFinished }; - -static match_fn permute_match_ServerFinishedResume[] = - { match_ServerHello, match_ServerChangeCipherSpec, match_ServerFinished }; +static match_fn permute_match_ServerFinished[] = { match_ServerChangeCipherSpec, + match_ServerFinished }; -static match_fn permute_match_ClientFinished[] = - { match_ClientKeyExchange, match_ClientChangeCipherSpec, - match_ClientFinished +static match_fn permute_match_ServerFinishedResume[] = { + match_ServerHello, match_ServerChangeCipherSpec, match_ServerFinished }; -static match_fn permute_match_ClientFinishedResume[] = - { match_ClientChangeCipherSpec, match_ClientFinished +static match_fn permute_match_ClientFinished[] = { match_ClientKeyExchange, + match_ClientChangeCipherSpec, + match_ClientFinished }; + +static match_fn permute_match_ClientFinishedResume[] = { + match_ClientChangeCipherSpec, match_ClientFinished }; -static match_fn permute_match_ClientFinishedFull[] = - { match_ClientCertificate, match_ClientKeyExchange, +static match_fn permute_match_ClientFinishedFull[] = { + match_ClientCertificate, match_ClientKeyExchange, match_ClientCertificateVerify, match_ClientChangeCipherSpec, match_ClientFinished }; DECLARE_PERMUTE(ServerHello) - DECLARE_PERMUTE(ServerHelloFull) - DECLARE_PERMUTE(ServerFinishedResume) - DECLARE_PERMUTE(ServerFinished) - DECLARE_PERMUTE(ClientFinished) - DECLARE_PERMUTE(ClientFinishedResume) - DECLARE_PERMUTE(ClientFinishedFull) +DECLARE_PERMUTE(ServerHelloFull) +DECLARE_PERMUTE(ServerFinishedResume) +DECLARE_PERMUTE(ServerFinished) +DECLARE_PERMUTE(ClientFinished) +DECLARE_PERMUTE(ClientFinishedResume) +DECLARE_PERMUTE(ClientFinishedFull) // }}} // {{{ emergency deadlock resolution time bomb timer_t killtimer_tid = 0; @@ -645,7 +683,7 @@ timer_t killtimer_tid = 0; static void killtimer_set(void) { struct sigevent sig; - struct itimerspec tout = { {0, 0}, {2 * timeout_seconds, 0} }; + struct itimerspec tout = { { 0, 0 }, { 2 * timeout_seconds, 0 } }; if (killtimer_tid != 0) { timer_delete(killtimer_tid); @@ -680,8 +718,8 @@ static void await(int fd, int timeout) { if (nonblock) { struct pollfd p = { fd, POLLIN, 0 }; - if (poll(&p, 1, timeout) < 0 && errno != EAGAIN - && errno != EINTR) { + if (poll(&p, 1, timeout) < 0 && errno != EAGAIN && + errno != EINTR) { rperror("poll"); exit(3); } @@ -698,17 +736,17 @@ static void cred_init(void) static void session_init(int sock, int server) { - gnutls_init(&session, - GNUTLS_DATAGRAM | (server ? GNUTLS_SERVER : GNUTLS_CLIENT) - | GNUTLS_NONBLOCK * nonblock); + gnutls_init(&session, GNUTLS_DATAGRAM | + (server ? GNUTLS_SERVER : GNUTLS_CLIENT) | + GNUTLS_NONBLOCK * nonblock); gnutls_priority_set_direct(session, "NORMAL:+ECDHE-RSA:+ANON-ECDH", 0); gnutls_transport_set_int(session, sock); if (full) { gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, cred); if (server) { - gnutls_certificate_server_set_request(session, - GNUTLS_CERT_REQUIRE); + gnutls_certificate_server_set_request( + session, GNUTLS_CERT_REQUIRE); } } else if (server) { gnutls_anon_server_credentials_t acred; @@ -787,9 +825,8 @@ static void client(int sock) do { await(sock, -1); - len = - process_error(gnutls_record_recv - (session, buffer, sizeof(buffer))); + len = process_error(gnutls_record_recv(session, buffer, + sizeof(buffer))); } while (len < 0); log("received data\n"); @@ -807,9 +844,8 @@ static void client(int sock) do { await(sock, -1); - len = - process_error(gnutls_record_recv - (session, buffer, sizeof(buffer))); + len = process_error(gnutls_record_recv(session, buffer, + sizeof(buffer))); } while (len < 0); log("received data\n"); @@ -820,7 +856,6 @@ static void client(int sock) exit(1); } } - } static gnutls_datum_t saved_data = { NULL, 0 }; @@ -923,9 +958,8 @@ static void server(int sock) do { await(sock, -1); - len = - process_error(gnutls_record_recv - (session, buffer, sizeof(buffer))); + len = process_error(gnutls_record_recv(session, buffer, + sizeof(buffer))); } while (len < 0); log("received data\n"); @@ -940,9 +974,8 @@ static void server(int sock) do { await(sock, -1); - len = - process_error(gnutls_record_recv - (session, buffer, sizeof(buffer))); + len = process_error(gnutls_record_recv(session, buffer, + sizeof(buffer))); } while (len < 0); log("received data\n"); @@ -959,7 +992,7 @@ static void server(int sock) // {{{ test running/handling itself -# if 0 +#if 0 static void udp_sockpair(int *socks) { struct sockaddr_in6 sa = @@ -976,7 +1009,7 @@ static void udp_sockpair(int *socks) connect(socks[1], (struct sockaddr *)&sa, sizeof(sa)); connect(socks[0], (struct sockaddr *)&sb, sizeof(sb)); } -# endif +#endif static int run_test(void) { @@ -996,21 +1029,23 @@ static int run_test(void) if (!(pid1 = fork())) { role = SERVER; - server(fds[1]); // noreturn + server(fds[1]); // noreturn } else if (pid1 < 0) { rperror("fork server"); exit(2); } if (!(pid2 = fork())) { role = CLIENT; - client(fds[0]); // noreturn + client(fds[0]); // noreturn } else if (pid2 < 0) { rperror("fork client"); exit(2); } - while (waitpid(pid2, &status2, 0) < 0 && errno == EINTR) ; + while (waitpid(pid2, &status2, 0) < 0 && errno == EINTR) + ; kill(pid1, 15); - while (waitpid(pid1, 0, 0) < 0 && errno == EINTR) ; + while (waitpid(pid1, 0, 0) < 0 && errno == EINTR) + ; close(fds[0]); close(fds[1]); @@ -1022,39 +1057,33 @@ static int run_test(void) } } -static filter_fn filters[] - = { filter_packet_ServerHello, - filter_packet_ServerKeyExchange, - filter_packet_ServerHelloDone, - filter_packet_ClientKeyExchange, - filter_packet_ClientChangeCipherSpec, - filter_packet_ClientFinished, - filter_packet_ServerChangeCipherSpec, - filter_packet_ServerFinished -}; - -static filter_fn filters_resume[] - = { filter_packet_ServerHello, - filter_packet_ServerChangeCipherSpec, - filter_packet_ServerFinished, - filter_packet_ClientChangeCipherSpec, - filter_packet_ClientFinished -}; - -static filter_fn filters_full[] - = { filter_packet_ServerHello, - filter_packet_ServerCertificate, - filter_packet_ServerKeyExchange, - filter_packet_ServerCertificateRequest, - filter_packet_ServerHelloDone, - filter_packet_ClientCertificate, - filter_packet_ClientKeyExchange, - filter_packet_ClientCertificateVerify, - filter_packet_ClientChangeCipherSpec, - filter_packet_ClientFinished, - filter_packet_ServerChangeCipherSpec, - filter_packet_ServerFinished -}; +static filter_fn filters[] = { filter_packet_ServerHello, + filter_packet_ServerKeyExchange, + filter_packet_ServerHelloDone, + filter_packet_ClientKeyExchange, + filter_packet_ClientChangeCipherSpec, + filter_packet_ClientFinished, + filter_packet_ServerChangeCipherSpec, + filter_packet_ServerFinished }; + +static filter_fn filters_resume[] = { filter_packet_ServerHello, + filter_packet_ServerChangeCipherSpec, + filter_packet_ServerFinished, + filter_packet_ClientChangeCipherSpec, + filter_packet_ClientFinished }; + +static filter_fn filters_full[] = { filter_packet_ServerHello, + filter_packet_ServerCertificate, + filter_packet_ServerKeyExchange, + filter_packet_ServerCertificateRequest, + filter_packet_ServerHelloDone, + filter_packet_ClientCertificate, + filter_packet_ClientKeyExchange, + filter_packet_ClientCertificateVerify, + filter_packet_ClientChangeCipherSpec, + filter_packet_ClientFinished, + filter_packet_ServerChangeCipherSpec, + filter_packet_ServerFinished }; static int run_one_test(int dropMode, int serverFinishedPermute, int serverHelloPermute, int clientFinishedPermute) @@ -1079,7 +1108,7 @@ static int run_one_test(int dropMode, int serverFinishedPermute, local_filters = filters_resume; local_filter_names = filter_names_resume; filter_count = - sizeof(filters_resume) / sizeof(filters_resume[0]); + sizeof(filters_resume) / sizeof(filters_resume[0]); client_finished_permutation_names = permutation_names2; server_finished_permutation_names = permutation_names3; server_hello_permutation_names = NULL; @@ -1092,51 +1121,52 @@ static int run_one_test(int dropMode, int serverFinishedPermute, server_hello_permutation_names = permutation_names3; } - run_id = - ((dropMode * 2 + serverFinishedPermute) * (full ? 120 : 6) + - serverHelloPermute) * (full ? 120 : 6) + clientFinishedPermute; + run_id = ((dropMode * 2 + serverFinishedPermute) * (full ? 120 : 6) + + serverHelloPermute) * + (full ? 120 : 6) + + clientFinishedPermute; filter_clear_state(); if (full) { filter_chain[fnIdx++] = filter_permute_ServerHelloFull; state_permute_ServerHelloFull.order = - permutations5[serverHelloPermute]; + permutations5[serverHelloPermute]; filter_chain[fnIdx++] = filter_permute_ClientFinishedFull; state_permute_ClientFinishedFull.order = - permutations5[clientFinishedPermute]; + permutations5[clientFinishedPermute]; filter_chain[fnIdx++] = filter_permute_ServerFinished; state_permute_ServerFinished.order = - permutations2[serverFinishedPermute]; + permutations2[serverFinishedPermute]; } else if (resume) { filter_chain[fnIdx++] = filter_permute_ServerFinishedResume; state_permute_ServerFinishedResume.order = - permutations3[serverFinishedPermute]; + permutations3[serverFinishedPermute]; filter_chain[fnIdx++] = filter_permute_ClientFinishedResume; state_permute_ClientFinishedResume.order = - permutations2[clientFinishedPermute]; + permutations2[clientFinishedPermute]; } else { filter_chain[fnIdx++] = filter_permute_ServerHello; state_permute_ServerHello.order = - permutations3[serverHelloPermute]; + permutations3[serverHelloPermute]; filter_chain[fnIdx++] = filter_permute_ClientFinished; state_permute_ClientFinished.order = - permutations3[clientFinishedPermute]; + permutations3[clientFinishedPermute]; filter_chain[fnIdx++] = filter_permute_ServerFinished; state_permute_ServerFinished.order = - permutations2[serverFinishedPermute]; + permutations2[serverFinishedPermute]; } if (dropMode) { for (filterIdx = 0; filterIdx < filter_count; filterIdx++) { if (dropMode & (1 << filterIdx)) { filter_chain[fnIdx++] = - local_filters[filterIdx]; + local_filters[filterIdx]; } } } @@ -1186,7 +1216,7 @@ static int run_test_by_id(int id) { int pscale = full ? 120 : 6; int dropMode, serverFinishedPermute, serverHelloPermute, - clientFinishedPermute; + clientFinishedPermute; clientFinishedPermute = id % pscale; id /= pscale; @@ -1199,8 +1229,8 @@ static int run_test_by_id(int id) dropMode = id; - return run_one_test(dropMode, serverFinishedPermute, - serverHelloPermute, clientFinishedPermute); + return run_one_test(dropMode, serverFinishedPermute, serverHelloPermute, + clientFinishedPermute); } int *job_pids; @@ -1265,9 +1295,8 @@ static int run_tests_from_id_list(int childcount) while ((ret = fscanf(stdin, "%i\n", &test_id)) > 0) { int pid; - if (test_id < 0 - || test_id > - 2 * (full ? 120 * 120 * (1 << 12) : 6 * 6 * 256)) { + if (test_id < 0 || test_id > 2 * (full ? 120 * 120 * (1 << 12) : + 6 * 6 * 256)) { fprintf(stderr, "Invalid test id %i\n", test_id); break; } @@ -1295,7 +1324,7 @@ static int run_tests_from_id_list(int childcount) static int run_all_tests(int childcount) { int dropMode, serverFinishedPermute, serverHelloPermute, - clientFinishedPermute; + clientFinishedPermute; int result = 0; for (dropMode = 0; dropMode != 1 << (full ? 12 : 8); dropMode++) @@ -1305,24 +1334,23 @@ static int run_all_tests(int childcount) serverHelloPermute < (full ? 120 : 6); serverHelloPermute++) for (clientFinishedPermute = 0; - clientFinishedPermute < - (full ? 120 : 6); + clientFinishedPermute < (full ? 120 : 6); clientFinishedPermute++) { int pid; if (!(pid = fork())) { - exit(run_one_test - (dropMode, - serverFinishedPermute, - serverHelloPermute, - clientFinishedPermute)); + exit(run_one_test( + dropMode, + serverFinishedPermute, + serverHelloPermute, + clientFinishedPermute)); } else if (pid < 0) { rperror("fork"); result = 4; break; } else { register_child(pid); - result |= - wait_children(childcount); + result |= wait_children( + childcount); } } @@ -1366,17 +1394,17 @@ int main(int argc, const char *argv[]) run_to_end = 1; job_limit = 1; -# define NEXT_ARG(name) \ - do { \ - if (++arg >= argc) { \ +#define NEXT_ARG(name) \ + do { \ + if (++arg >= argc) { \ fprintf(stderr, "No argument for -" #name "\n"); \ - exit(8); \ - } \ + exit(8); \ + } \ } while (0); -# define FAIL_ARG(name) \ - do { \ +#define FAIL_ARG(name) \ + do { \ fprintf(stderr, "Invalid argument for -" #name "\n"); \ - exit(8); \ + exit(8); \ } while (0); for (arg = 1; arg < argc; arg++) { @@ -1459,10 +1487,10 @@ int main(int argc, const char *argv[]) } NEXT_ARG(shello); - if (!parse_permutation - (argv[arg], - full ? permutation_names5 : - permutation_names3, &serverHelloPermute)) { + if (!parse_permutation(argv[arg], + full ? permutation_names5 : + permutation_names3, + &serverHelloPermute)) { FAIL_ARG(shell); } single++; @@ -1473,8 +1501,8 @@ int main(int argc, const char *argv[]) pname = permutation_names3; else pname = permutation_names2; - if (!parse_permutation - (argv[arg], pname, &serverFinishedPermute)) { + if (!parse_permutation(argv[arg], pname, + &serverFinishedPermute)) { FAIL_ARG(cfinished); } single++; @@ -1487,8 +1515,8 @@ int main(int argc, const char *argv[]) pname = permutation_names2; else pname = permutation_names3; - if (!parse_permutation - (argv[arg], pname, &clientFinishedPermute)) { + if (!parse_permutation(argv[arg], pname, + &clientFinishedPermute)) { FAIL_ARG(cfinished); } single++; @@ -1499,24 +1527,21 @@ int main(int argc, const char *argv[]) if (full) { local_filter_names = filter_names_full; - filter_count = - sizeof(filters_full) / - sizeof(filters_full[0]); + filter_count = sizeof(filters_full) / + sizeof(filters_full[0]); } else if (resume) { local_filter_names = filter_names_resume; - filter_count = - sizeof(filters_resume) / - sizeof(filters_resume[0]); + filter_count = sizeof(filters_resume) / + sizeof(filters_resume[0]); } else { local_filter_names = filter_names; filter_count = - sizeof(filters) / sizeof(filters[0]); + sizeof(filters) / sizeof(filters[0]); } for (drop = 0; drop < filter_count; drop++) { - if (strcmp - (local_filter_names[drop], - argv[arg]) == 0) { + if (strcmp(local_filter_names[drop], + argv[arg]) == 0) { dropMode |= (1 << drop); break; } @@ -1563,7 +1588,7 @@ int main(int argc, const char *argv[]) // vim: foldmethod=marker -#else /* NO POSIX TIMERS */ +#else /* NO POSIX TIMERS */ int main(int argc, const char *argv[]) { diff --git a/tests/dtls1-2-mtu-check.c b/tests/dtls1-2-mtu-check.c index b8788dc8b2..3c3a4ba7c6 100644 --- a/tests/dtls1-2-mtu-check.c +++ b/tests/dtls1-2-mtu-check.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* This program tests the MTU calculation in various cipher/mac algorithm combinations @@ -37,8 +37,7 @@ #include "utils.h" #include -#define myfail(fmt, ...) \ - fail("%s: "fmt, name, ##__VA_ARGS__) +#define myfail(fmt, ...) fail("%s: " fmt, name, ##__VA_ARGS__) static void tls_log_func(int level, const char *str) { @@ -69,18 +68,18 @@ static void dtls_mtu_try(const char *name, const char *client_prio, /* Init server */ assert(gnutls_certificate_allocate_credentials(&serverx509cred) >= 0); - assert(gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, + assert(gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM) >= 0); - assert(gnutls_init - (&server, - GNUTLS_SERVER | GNUTLS_DATAGRAM | GNUTLS_NONBLOCK) >= 0); + assert(gnutls_init(&server, GNUTLS_SERVER | GNUTLS_DATAGRAM | + GNUTLS_NONBLOCK) >= 0); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); - assert(gnutls_priority_set_direct(server, - "NORMAL:+ANON-ECDH:+ANON-DH:+3DES-CBC:+ECDHE-RSA:+DHE-RSA:+RSA:+ECDHE-ECDSA:+SHA256:+CURVE-X25519", - NULL) >= 0); + assert(gnutls_priority_set_direct( + server, + "NORMAL:+ANON-ECDH:+ANON-DH:+3DES-CBC:+ECDHE-RSA:+DHE-RSA:+RSA:+ECDHE-ECDSA:+SHA256:+CURVE-X25519", + NULL) >= 0); gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); gnutls_transport_set_pull_timeout_function(server, @@ -89,15 +88,14 @@ static void dtls_mtu_try(const char *name, const char *client_prio, /* Init client */ - ret = - gnutls_init(&client, - GNUTLS_CLIENT | GNUTLS_DATAGRAM | GNUTLS_NONBLOCK); + ret = gnutls_init(&client, + GNUTLS_CLIENT | GNUTLS_DATAGRAM | GNUTLS_NONBLOCK); if (ret < 0) exit(1); assert(gnutls_certificate_allocate_credentials(&clientx509cred) >= 0); - assert(gnutls_certificate_set_x509_trust_mem - (clientx509cred, &ca_cert, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM) >= 0); assert(gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, clientx509cred) >= 0); @@ -130,9 +128,8 @@ static void dtls_mtu_try(const char *name, const char *client_prio, memset(msg, 1, dmtu + 1); ret = gnutls_record_send(client, msg, dmtu + 1); if (ret != (int)GNUTLS_E_LARGE_PACKET) { - myfail - ("could send larger packet than MTU (%d), ret: %d\n", - dmtu, ret); + myfail("could send larger packet than MTU (%d), ret: %d\n", + dmtu, ret); } ret = gnutls_record_send(client, msg, dmtu); @@ -158,7 +155,8 @@ static void dtls_mtu_try(const char *name, const char *client_prio, dmtu = gnutls_dtls_get_data_mtu(client); if (dmtu != link_mtu) { if (gnutls_mac_get(client) == GNUTLS_MAC_AEAD) - fail("%s: got MTU (%d) which does not match expected (%d)\n", name, dmtu, link_mtu); + fail("%s: got MTU (%d) which does not match expected (%d)\n", + name, dmtu, link_mtu); else if (dmtu < link_mtu) fail("%s: got MTU (%d) smaller than expected (%d)\n", name, dmtu, link_mtu); @@ -186,174 +184,226 @@ void doit(void) global_init(); /* check padding in CBC */ - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1500, 1435); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1501", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1501, 1451); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1502", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1502, 1451); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1503", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1503, 1451); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1504", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1504, 1451); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1505", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1505, 1451); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1506", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1506, 1451); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1507", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1507, 1451); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1508", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1508, 1451); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1509", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1509, 1451); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1510", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1510, 1451); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1511", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1511, 1451); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1512", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1512, 1451); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1513", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1513, 1451); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1514", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1514, 1451); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1515", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1515, 1451); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1516", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1516, 1451); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1517", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1517, 1467); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1518", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1518, 1467); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1519", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1519, 1467); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1520", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1520, 1467); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1521", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1521, 1467); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1522", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1522, 1467); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1523", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1523, 1467); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1524", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1524, 1467); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1525", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1525, 1467); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1526", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1526, 1467); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1536", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1536, 1483); - - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA256", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA256", - 1500, 1423); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1500, 1435); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1501", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1501, 1451); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1502", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1502, 1451); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1503", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1503, 1451); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1504", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1504, 1451); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1505", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1505, 1451); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1506", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1506, 1451); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1507", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1507, 1451); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1508", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1508, 1451); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1509", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1509, 1451); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1510", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1510, 1451); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1511", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1511, 1451); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1512", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1512, 1451); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1513", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1513, 1451); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1514", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1514, 1451); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1515", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1515, 1451); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1516", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1516, 1451); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1517", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1517, 1467); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1518", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1518, 1467); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1519", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1519, 1467); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1520", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1520, 1467); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1521", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1521, 1467); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1522", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1522, 1467); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1523", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1523, 1467); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1524", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1524, 1467); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1525", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1525, 1467); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1526", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1526, 1467); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1536", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1536, 1483); + + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA256", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA256", + 1500, 1423); if (!gnutls_fips140_mode_enabled()) - dtls_mtu_try("DTLS 1.2 with 3DES-CBC-HMAC-SHA1", - "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+3DES-CBC:-MAC-ALL:+SHA1", - 1500, 1451); + dtls_mtu_try( + "DTLS 1.2 with 3DES-CBC-HMAC-SHA1", + "NORMAL:%NO_ETM:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+3DES-CBC:-MAC-ALL:+SHA1", + 1500, 1451); /* check non-CBC ciphers */ dtls_mtu_try("DTLS 1.2 with AES-128-GCM", "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-GCM", 1500, 1463); if (!gnutls_fips140_mode_enabled()) - dtls_mtu_try("DTLS 1.2 with CHACHA20-POLY1305", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+CHACHA20-POLY1305", - 1500, 1471); + dtls_mtu_try( + "DTLS 1.2 with CHACHA20-POLY1305", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+CHACHA20-POLY1305", + 1500, 1471); /* check EtM CBC */ - dtls_mtu_try("DTLS 1.2/EtM with AES-128-CBC-HMAC-SHA1", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1500, 1439); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1501", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1501, 1439); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1502", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1502, 1439); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1503", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1503, 1439); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1504", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1504, 1439); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1505", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1505, 1455); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1506", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1506, 1455); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1507", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1507, 1455); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1508", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1508, 1455); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1509", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1509, 1455); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1510", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1510, 1455); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1511", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1511, 1455); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1512", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1512, 1455); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1513", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1513, 1455); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1514", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1514, 1455); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1515", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1515, 1455); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1516", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1516, 1455); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1517", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1517, 1455); - dtls_mtu_try("DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1518", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", - 1518, 1455); - - dtls_mtu_try("DTLS 1.2/EtM with AES-128-CBC-HMAC-SHA256", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA256", - 1500, 1423); + dtls_mtu_try( + "DTLS 1.2/EtM with AES-128-CBC-HMAC-SHA1", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1500, 1439); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1501", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1501, 1439); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1502", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1502, 1439); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1503", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1503, 1439); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1504", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1504, 1439); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1505", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1505, 1455); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1506", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1506, 1455); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1507", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1507, 1455); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1508", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1508, 1455); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1509", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1509, 1455); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1510", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1510, 1455); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1511", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1511, 1455); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1512", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1512, 1455); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1513", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1513, 1455); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1514", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1514, 1455); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1515", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1515, 1455); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1516", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1516, 1455); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1517", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1517, 1455); + dtls_mtu_try( + "DTLS 1.2 with AES-128-CBC-HMAC-SHA1 - mtu:1518", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA1", + 1518, 1455); + + dtls_mtu_try( + "DTLS 1.2/EtM with AES-128-CBC-HMAC-SHA256", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+AES-128-CBC:-MAC-ALL:+SHA256", + 1500, 1423); if (!gnutls_fips140_mode_enabled()) - dtls_mtu_try("DTLS 1.2/EtM with 3DES-CBC-HMAC-SHA1", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+3DES-CBC:-MAC-ALL:+SHA1", - 1500, 1455); + dtls_mtu_try( + "DTLS 1.2/EtM with 3DES-CBC-HMAC-SHA1", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-CIPHER-ALL:+3DES-CBC:-MAC-ALL:+SHA1", + 1500, 1455); gnutls_global_deinit(); } diff --git a/tests/dtls10-cert-key-exchange.c b/tests/dtls10-cert-key-exchange.c index 44b47b2596..0aa541e0e9 100644 --- a/tests/dtls10-cert-key-exchange.c +++ b/tests/dtls10-cert-key-exchange.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* This program tests the various certificate key exchange methods supported @@ -49,10 +49,11 @@ void doit(void) "NORMAL:-VERS-ALL:+VERS-DTLS1.0:-KX-ALL:+DHE-RSA", GNUTLS_KX_DHE_RSA, GNUTLS_SIGN_RSA_SHA256, GNUTLS_SIGN_UNKNOWN); - dtls_try("DTLS 1.0 with ecdhe x25519 rsa no cert", - "NORMAL:-VERS-ALL:+VERS-DTLS1.0:-KX-ALL:+ECDHE-RSA:-CURVE-ALL:+CURVE-X25519", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_SHA256, - GNUTLS_SIGN_UNKNOWN); + dtls_try( + "DTLS 1.0 with ecdhe x25519 rsa no cert", + "NORMAL:-VERS-ALL:+VERS-DTLS1.0:-KX-ALL:+ECDHE-RSA:-CURVE-ALL:+CURVE-X25519", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_SHA256, + GNUTLS_SIGN_UNKNOWN); dtls_try("DTLS 1.0 with ecdhe rsa no cert", "NORMAL:-VERS-ALL:+VERS-DTLS1.0:-KX-ALL:+ECDHE-RSA", GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_SHA256, diff --git a/tests/dtls12-cert-key-exchange.c b/tests/dtls12-cert-key-exchange.c index 9058ea2b67..d6e0574084 100644 --- a/tests/dtls12-cert-key-exchange.c +++ b/tests/dtls12-cert-key-exchange.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* This program tests the various certificate key exchange methods supported @@ -49,10 +49,11 @@ void doit(void) "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-KX-ALL:+DHE-RSA", GNUTLS_KX_DHE_RSA, GNUTLS_SIGN_RSA_SHA256, GNUTLS_SIGN_UNKNOWN); - dtls_try("DTLS 1.2 with ecdhe x25519 rsa no-cli-cert", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-KX-ALL:+ECDHE-RSA:-CURVE-ALL:+CURVE-X25519", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_SHA256, - GNUTLS_SIGN_UNKNOWN); + dtls_try( + "DTLS 1.2 with ecdhe x25519 rsa no-cli-cert", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-KX-ALL:+ECDHE-RSA:-CURVE-ALL:+CURVE-X25519", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_SHA256, + GNUTLS_SIGN_UNKNOWN); dtls_try("DTLS 1.2 with ecdhe rsa no-cli-cert", "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-KX-ALL:+ECDHE-RSA", GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_SHA256, @@ -63,19 +64,22 @@ void doit(void) GNUTLS_SIGN_UNKNOWN, &server_ca3_localhost_ecc_cert, &server_ca3_ecc_key, NULL, NULL, 0); - dtls_try("DTLS 1.2 with ecdhe rsa-pss sig no-cli-cert", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA256", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, - GNUTLS_SIGN_UNKNOWN); - dtls_try("DTLS 1.2 with ecdhe rsa-pss no-cli-cert", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA256", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, - GNUTLS_SIGN_UNKNOWN); - dtls_try_with_key("TLS 1.2 with ecdhe rsa-pss/rsa-pss no-cli-cert", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-SHA256", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, - GNUTLS_SIGN_UNKNOWN, &server_ca3_rsa_pss_cert, - &server_ca3_rsa_pss_key, NULL, NULL, 0); + dtls_try( + "DTLS 1.2 with ecdhe rsa-pss sig no-cli-cert", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA256", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, + GNUTLS_SIGN_UNKNOWN); + dtls_try( + "DTLS 1.2 with ecdhe rsa-pss no-cli-cert", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA256", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, + GNUTLS_SIGN_UNKNOWN); + dtls_try_with_key( + "TLS 1.2 with ecdhe rsa-pss/rsa-pss no-cli-cert", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-SHA256", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, + GNUTLS_SIGN_UNKNOWN, &server_ca3_rsa_pss_cert, + &server_ca3_rsa_pss_key, NULL, NULL, 0); dtls_try("DTLS 1.2 with rsa no-cli-cert", "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-KX-ALL:+RSA", GNUTLS_KX_RSA, GNUTLS_SIGN_UNKNOWN, GNUTLS_SIGN_UNKNOWN); @@ -106,16 +110,18 @@ void doit(void) &server_ca3_localhost_ecc_cert, &server_ca3_ecc_key, USE_CERT); - dtls_try_cli("DTLS 1.2 with ecdhe-rsa-pss cli-cert", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA256", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, - GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, USE_CERT); - dtls_try_with_key("DTLS 1.2 with ecdhe-rsa-pss/rsa-pss cli-cert", - "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-SHA256", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, - GNUTLS_SIGN_RSA_PSS_SHA256, &server_ca3_rsa_pss_cert, - &server_ca3_rsa_pss_key, &cli_ca3_rsa_pss_cert, - &cli_ca3_rsa_pss_key, USE_CERT); + dtls_try_cli( + "DTLS 1.2 with ecdhe-rsa-pss cli-cert", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA256", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, + GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, USE_CERT); + dtls_try_with_key( + "DTLS 1.2 with ecdhe-rsa-pss/rsa-pss cli-cert", + "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-SHA256", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, + GNUTLS_SIGN_RSA_PSS_SHA256, &server_ca3_rsa_pss_cert, + &server_ca3_rsa_pss_key, &cli_ca3_rsa_pss_cert, + &cli_ca3_rsa_pss_key, USE_CERT); dtls_try_cli("DTLS 1.2 with dhe-rsa ask cli-cert", "NORMAL:-VERS-ALL:+VERS-DTLS1.2:-KX-ALL:+DHE-RSA", GNUTLS_KX_DHE_RSA, GNUTLS_SIGN_RSA_SHA256, diff --git a/tests/duplicate-extensions.c b/tests/duplicate-extensions.c index 54a4a7bb15..9cfad5df25 100644 --- a/tests/duplicate-extensions.c +++ b/tests/duplicate-extensions.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -37,18 +37,18 @@ int main(int argc, char **argv) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" -# include "cert-common.h" +#include "utils.h" +#include "cert-common.h" pid_t child; @@ -62,29 +62,29 @@ static void tls_log_func(int level, const char *str) */ static unsigned char tls1_hello[] = - "\x16\x03\x01\x01\x5e\x01\x00\x01\x5a\x03\x03\x59\x41\x25\x0e\x19" - "\x02\x56\xa2\xe4\x97\x00\xea\x18\xd2\xb0\x00\xb9\xa2\x8a\x61\xb3" - "\xdd\x65\xed\xfd\x03\xaf\x93\x8d\xb2\x15\xf3\x00\x00\xd4\xc0\x30" - "\xcc\xa8\xc0\x8b\xc0\x14\xc0\x28\xc0\x77\xc0\x2f\xc0\x8a\xc0\x13" - "\xc0\x27\xc0\x76\xc0\x12\xc0\x2c\xc0\xad\xcc\xa9\xc0\x87\xc0\x0a" - "\xc0\x24\xc0\x73\xc0\x2b\xc0\xac\xc0\x86\xc0\x09\xc0\x23\xc0\x72" - "\xc0\x08\x00\x9d\xc0\x9d\xc0\x7b\x00\x35\x00\x3d\x00\x84\x00\xc0" - "\x00\x9c\xc0\x9c\xc0\x7a\x00\x2f\x00\x3c\x00\x41\x00\xba\x00\x0a" - "\x00\x9f\xc0\x9f\xcc\xaa\xc0\x7d\x00\x39\x00\x6b\x00\x88\x00\xc4" - "\x00\x9e\xc0\x9e\xc0\x7c\x00\x33\x00\x67\x00\x45\x00\xbe\x00\x16" - "\x00\xa3\xc0\x81\x00\x38\x00\x6a\x00\x87\x00\xc3\x00\xa2\xc0\x80" - "\x00\x32\x00\x40\x00\x44\x00\xbd\x00\x13\x00\xa9\xc0\xa5\xcc\xab" - "\xc0\x8f\x00\x8d\x00\xaf\xc0\x95\x00\xa8\xc0\xa4\xc0\x8e\x00\x8c" - "\x00\xae\xc0\x94\x00\x8b\x00\xab\xc0\xa7\xcc\xad\xc0\x91\x00\x91" - "\x00\xb3\xc0\x97\x00\xaa\xc0\xa6\xc0\x90\x00\x90\x00\xb2\xc0\x96" - "\x00\x8f\xcc\xac\xc0\x36\xc0\x38\xc0\x9b\xc0\x35\xc0\x37\xc0\x9a" - "\xc0\x34\x01\x00\x00\x5d\x00\x17\x00\x00\x00\x16\x00\x00\x00\x05" - "\x00\x05\x01\x00\x00\x00\x00\x00\x00\x00\x13\x00\x11\x00\x00\x0e" - "\x77\x77\x77\x2e\x61\x6d\x61\x7a\x6f\x6e\x2e\x63\x6f\x6d\xff\x01" - "\x00\x01\x00\x00\x23\x00\x00\x00\x0b\x00\x02\x01\x00\x00\x0b\x00" - "\x02\x01\x00\x00\x0d\x00\x16\x00\x14\x04\x01\x04\x03\x05\x01\x05" - "\x03\x06\x01\x06\x03\x03\x01\x03\x03\x02\x01\x02\x03\x00\x0a\x00" - "\x02\x00\x17"; + "\x16\x03\x01\x01\x5e\x01\x00\x01\x5a\x03\x03\x59\x41\x25\x0e\x19" + "\x02\x56\xa2\xe4\x97\x00\xea\x18\xd2\xb0\x00\xb9\xa2\x8a\x61\xb3" + "\xdd\x65\xed\xfd\x03\xaf\x93\x8d\xb2\x15\xf3\x00\x00\xd4\xc0\x30" + "\xcc\xa8\xc0\x8b\xc0\x14\xc0\x28\xc0\x77\xc0\x2f\xc0\x8a\xc0\x13" + "\xc0\x27\xc0\x76\xc0\x12\xc0\x2c\xc0\xad\xcc\xa9\xc0\x87\xc0\x0a" + "\xc0\x24\xc0\x73\xc0\x2b\xc0\xac\xc0\x86\xc0\x09\xc0\x23\xc0\x72" + "\xc0\x08\x00\x9d\xc0\x9d\xc0\x7b\x00\x35\x00\x3d\x00\x84\x00\xc0" + "\x00\x9c\xc0\x9c\xc0\x7a\x00\x2f\x00\x3c\x00\x41\x00\xba\x00\x0a" + "\x00\x9f\xc0\x9f\xcc\xaa\xc0\x7d\x00\x39\x00\x6b\x00\x88\x00\xc4" + "\x00\x9e\xc0\x9e\xc0\x7c\x00\x33\x00\x67\x00\x45\x00\xbe\x00\x16" + "\x00\xa3\xc0\x81\x00\x38\x00\x6a\x00\x87\x00\xc3\x00\xa2\xc0\x80" + "\x00\x32\x00\x40\x00\x44\x00\xbd\x00\x13\x00\xa9\xc0\xa5\xcc\xab" + "\xc0\x8f\x00\x8d\x00\xaf\xc0\x95\x00\xa8\xc0\xa4\xc0\x8e\x00\x8c" + "\x00\xae\xc0\x94\x00\x8b\x00\xab\xc0\xa7\xcc\xad\xc0\x91\x00\x91" + "\x00\xb3\xc0\x97\x00\xaa\xc0\xa6\xc0\x90\x00\x90\x00\xb2\xc0\x96" + "\x00\x8f\xcc\xac\xc0\x36\xc0\x38\xc0\x9b\xc0\x35\xc0\x37\xc0\x9a" + "\xc0\x34\x01\x00\x00\x5d\x00\x17\x00\x00\x00\x16\x00\x00\x00\x05" + "\x00\x05\x01\x00\x00\x00\x00\x00\x00\x00\x13\x00\x11\x00\x00\x0e" + "\x77\x77\x77\x2e\x61\x6d\x61\x7a\x6f\x6e\x2e\x63\x6f\x6d\xff\x01" + "\x00\x01\x00\x00\x23\x00\x00\x00\x0b\x00\x02\x01\x00\x00\x0b\x00" + "\x02\x01\x00\x00\x0d\x00\x16\x00\x14\x04\x01\x04\x03\x05\x01\x05" + "\x03\x06\x01\x06\x03\x03\x01\x03\x03\x02\x01\x02\x03\x00\x0a\x00" + "\x02\x00\x17"; static void client(int sd) { @@ -161,9 +161,10 @@ static void server(int sd) /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.0:+VERS-TLS1.1:+VERS-TLS1.2", - NULL); + gnutls_priority_set_direct( + session, + "NORMAL:-VERS-ALL:+VERS-TLS1.0:+VERS-TLS1.1:+VERS-TLS1.2", + NULL); gnutls_handshake_set_timeout(session, get_timeout()); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -225,4 +226,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/eagain-auto-auth.c b/tests/eagain-auto-auth.c index ede4c848aa..35ff7f3845 100644 --- a/tests/eagain-auto-auth.c +++ b/tests/eagain-auto-auth.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -45,15 +45,16 @@ static void tls_log_func(int level, const char *str) } #define MAX_BUF 1024 -#define MSG "Hello TLS, and hi and how are you and more data here... and more... and even more and even more more data..." +#define MSG \ + "Hello TLS, and hi and how are you and more data here... and more... and even more and even more more data..." static unsigned int cert_asked = 0; static int cert_callback(gnutls_session_t session, - const gnutls_datum_t * req_ca_rdn, int nreqs, - const gnutls_pk_algorithm_t * sign_algos, - int sign_algos_length, gnutls_pcert_st ** pcert, - unsigned int *pcert_length, gnutls_privkey_t * pkey) + const gnutls_datum_t *req_ca_rdn, int nreqs, + const gnutls_pk_algorithm_t *sign_algos, + int sign_algos_length, gnutls_pcert_st **pcert, + unsigned int *pcert_length, gnutls_privkey_t *pkey) { cert_asked = 1; *pcert_length = 0; @@ -83,20 +84,20 @@ static void async_handshake(void **glob_state, const char *prio, unsigned rehsk) gnutls_global_set_log_function(tls_log_func); /* Init server */ - assert_return_code(gnutls_certificate_allocate_credentials - (&serverx509cred), 0); - assert_return_code(gnutls_certificate_set_x509_key_mem - (serverx509cred, &server_cert, &server_key, - GNUTLS_X509_FMT_PEM), 0); + assert_return_code( + gnutls_certificate_allocate_credentials(&serverx509cred), 0); + assert_return_code(gnutls_certificate_set_x509_key_mem( + serverx509cred, &server_cert, &server_key, + GNUTLS_X509_FMT_PEM), + 0); ret = gnutls_init(&server, GNUTLS_SERVER | GNUTLS_POST_HANDSHAKE_AUTH); assert_return_code(ret, 0); ret = gnutls_priority_set_direct(server, prio, NULL); assert_return_code(ret, 0); - ret = - gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, - serverx509cred); + ret = gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, + serverx509cred); assert_return_code(ret, 0); gnutls_transport_set_push_function(server, server_push); @@ -111,16 +112,13 @@ static void async_handshake(void **glob_state, const char *prio, unsigned rehsk) gnutls_certificate_set_retrieve_function2(clientx509cred, cert_callback); - ret = - gnutls_init(&client, - GNUTLS_CLIENT | GNUTLS_AUTO_REAUTH | - GNUTLS_POST_HANDSHAKE_AUTH); + ret = gnutls_init(&client, GNUTLS_CLIENT | GNUTLS_AUTO_REAUTH | + GNUTLS_POST_HANDSHAKE_AUTH); ret = gnutls_priority_set_direct(client, prio, NULL); assert_return_code(ret, 0); - ret = - gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, - clientx509cred); + ret = gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, + clientx509cred); assert_return_code(ret, 0); gnutls_transport_set_push_function(client, client_push); @@ -135,8 +133,8 @@ static void async_handshake(void **glob_state, const char *prio, unsigned rehsk) do { sret = gnutls_rehandshake(server); - } while (sret == GNUTLS_E_AGAIN - || sret == GNUTLS_E_INTERRUPTED); + } while (sret == GNUTLS_E_AGAIN || + sret == GNUTLS_E_INTERRUPTED); assert_true(sret == 0); assert_true(gnutls_record_get_direction(server) == 1); @@ -158,13 +156,14 @@ static void async_handshake(void **glob_state, const char *prio, unsigned rehsk) sret = gnutls_handshake(server); if (sret == GNUTLS_E_INTERRUPTED) sret = GNUTLS_E_AGAIN; - assert_true(sret == GNUTLS_E_AGAIN - || sret == 0); + assert_true(sret == GNUTLS_E_AGAIN || + sret == 0); } /* we are done in client side */ - if (hstarted && gnutls_record_get_direction(client) == 0 - && to_client_len == 0) + if (hstarted && + gnutls_record_get_direction(client) == 0 && + to_client_len == 0) cret = 0; if (cret == GNUTLS_E_AGAIN) { @@ -203,8 +202,8 @@ static void async_handshake(void **glob_state, const char *prio, unsigned rehsk) } /* we are done in client side */ - if (gnutls_record_get_direction(client) == 0 - && to_client_len == 0) + if (gnutls_record_get_direction(client) == 0 && + to_client_len == 0) cret = 0; } while (cret == GNUTLS_E_AGAIN || sret == GNUTLS_E_AGAIN); } diff --git a/tests/eagain-common.h b/tests/eagain-common.h index c7c49f4ac2..8fadb3a40f 100644 --- a/tests/eagain-common.h +++ b/tests/eagain-common.h @@ -1,172 +1,174 @@ #ifndef GNUTLS_TESTS_EAGAIN_COMMON_H -# define GNUTLS_TESTS_EAGAIN_COMMON_H +#define GNUTLS_TESTS_EAGAIN_COMMON_H -# include -# include -# include +#include +#include +#include -# define min(x,y) ((x)<(y)?(x):(y)) +#define min(x, y) ((x) < (y) ? (x) : (y)) extern const char *side; -# ifdef USE_CMOCKA -# define failure() fail() -# define client_transfer_failure(r) {fprintf(stderr, "client transfer failure: %s\n", gnutls_strerror(r)); fail();} -# define server_transfer_failure(r) {fprintf(stderr, "server transfer failure: %s\n", gnutls_strerror(r)); fail();} -# define switch_side(str) -# else -# define failure() fail("Handshake failed\n") -# define client_transfer_failure(r) fail("client transfer failure: %s\n", gnutls_strerror(r)) -# define server_transfer_failure(r) fail("client transfer failure: %s\n", gnutls_strerror(r)) -# define switch_side(str) side = str -# endif - -# define HANDSHAKE_EXPECT(c, s, clierr, serverr) \ - sret = cret = GNUTLS_E_AGAIN; \ - do \ - { \ - if (cret == GNUTLS_E_AGAIN) \ - { \ - switch_side("client"); \ - cret = gnutls_handshake (c); \ - if (cret == GNUTLS_E_INTERRUPTED) cret = GNUTLS_E_AGAIN; \ - } \ - if (sret == GNUTLS_E_AGAIN) \ - { \ - switch_side("server"); \ - sret = gnutls_handshake (s); \ - if (sret == GNUTLS_E_INTERRUPTED) sret = GNUTLS_E_AGAIN; \ - } \ - } \ - while ((cret == GNUTLS_E_AGAIN || (cret == 0 && sret == GNUTLS_E_AGAIN)) && (sret == GNUTLS_E_AGAIN || (sret == 0 && cret == GNUTLS_E_AGAIN))); \ - if ((clierr != -1 && cret != clierr) || (serverr != -1 && sret != serverr)) \ - { \ - fprintf(stderr, "client[%d]: %s\n", cret, gnutls_strerror(cret)); \ - fprintf(stderr, "server[%d]: %s\n", sret, gnutls_strerror(sret)); \ - failure(); \ - } - -# define HANDSHAKE(c, s) \ - HANDSHAKE_EXPECT(c,s,0,0) - -# define HANDSHAKE_DTLS_EXPECT(c, s, clierr, serverr) \ - sret = cret = GNUTLS_E_AGAIN; \ - do \ - { \ - if (cret == GNUTLS_E_LARGE_PACKET) \ - { \ - unsigned int mtu = gnutls_dtls_get_mtu(s); \ - gnutls_dtls_set_mtu(s, mtu/2); \ - } \ - if (cret < 0 && gnutls_error_is_fatal(cret) == 0) \ - { \ - switch_side("client"); \ - cret = gnutls_handshake (c); \ - } \ - if (sret == GNUTLS_E_LARGE_PACKET) \ - { \ - unsigned int mtu = gnutls_dtls_get_mtu(s); \ - gnutls_dtls_set_mtu(s, mtu/2); \ - } \ - if (sret < 0 && gnutls_error_is_fatal(sret) == 0) \ - { \ - switch_side("server"); \ - sret = gnutls_handshake (s); \ - } \ - } \ - while (((gnutls_error_is_fatal(cret) == 0 && gnutls_error_is_fatal(sret) == 0)) && (cret < 0 || sret < 0)); \ - if (cret != clierr || sret != serverr) \ - { \ - fprintf(stderr, "client: %s\n", gnutls_strerror(cret)); \ - fprintf(stderr, "server: %s\n", gnutls_strerror(sret)); \ - failure(); \ - } - -# define HANDSHAKE_DTLS(c, s) \ - HANDSHAKE_DTLS_EXPECT(c,s,0,0) - -# define HANDSHAKE(c, s) \ - HANDSHAKE_EXPECT(c,s,0,0) - -# define TRANSFER2(c, s, msg, msglen, buf, buflen, retry_send_with_null) { \ - int _ret; \ - switch_side("client"); \ - _ret = record_send_loop (c, msg, msglen, retry_send_with_null); \ - \ - if (_ret < 0) client_transfer_failure(_ret); \ - \ - do \ - { \ - do \ - { \ - switch_side("server"); \ - _ret = gnutls_record_recv (s, buf, buflen); \ - } \ - while(_ret == GNUTLS_E_AGAIN); \ - if (_ret <= 0) \ - { \ - server_transfer_failure(_ret); \ - } \ - else \ - { \ - transferred += _ret; \ - } \ - switch_side("server"); \ - _ret = record_send_loop (server, msg, msglen, retry_send_with_null); \ - if (_ret < 0) server_transfer_failure(_ret); \ - do \ - { \ - switch_side("client"); \ - _ret = gnutls_record_recv (client, buf, buflen); \ - } \ - while(_ret == GNUTLS_E_AGAIN); \ - if (_ret <= 0) \ - { \ - client_transfer_failure(_ret); \ - } \ - else \ - { \ - if (msglen != _ret || memcmp (buf, msg, msglen) != 0) \ - { \ - failure(); \ - } \ - /* echo back */ \ - switch_side("client"); \ - _ret = record_send_loop (client, buf, msglen, retry_send_with_null); \ - if (_ret < 0) client_transfer_failure(_ret); \ - transferred += _ret; \ - } \ - } \ - while (transferred < 70000); \ - } - -# define EMPTY_BUF(s, c, buf, buflen) \ - { \ - switch_side("client"); int _ret = 0; \ - while((_ret == GNUTLS_E_AGAIN && to_server_len > 0) || to_server_len > 0) \ - { \ - switch_side("server"); \ - _ret = gnutls_record_recv (s, buf, buflen); \ - } \ - if (_ret < 0 && _ret !=GNUTLS_E_AGAIN) \ - { \ - server_transfer_failure(_ret); \ - } \ - switch_side("server"); _ret = 0; \ - while((to_client_len > 0 && _ret == GNUTLS_E_AGAIN) || to_client_len > 0) \ - { \ - switch_side("client"); \ - _ret = gnutls_record_recv (client, buf, buflen); \ - } \ - if (_ret < 0 && _ret !=GNUTLS_E_AGAIN) \ - { \ - client_transfer_failure(_ret); \ - } \ - } - -# define TRANSFER(c, s, msg, msglen, buf, buflen) \ - TRANSFER2(c, s, msg, msglen, buf, buflen, 0); \ - TRANSFER2(c, s, msg, msglen, buf, buflen, 1) +#ifdef USE_CMOCKA +#define failure() fail() +#define client_transfer_failure(r) \ + { \ + fprintf(stderr, "client transfer failure: %s\n", \ + gnutls_strerror(r)); \ + fail(); \ + } +#define server_transfer_failure(r) \ + { \ + fprintf(stderr, "server transfer failure: %s\n", \ + gnutls_strerror(r)); \ + fail(); \ + } +#define switch_side(str) +#else +#define failure() fail("Handshake failed\n") +#define client_transfer_failure(r) \ + fail("client transfer failure: %s\n", gnutls_strerror(r)) +#define server_transfer_failure(r) \ + fail("client transfer failure: %s\n", gnutls_strerror(r)) +#define switch_side(str) side = str +#endif + +#define HANDSHAKE_EXPECT(c, s, clierr, serverr) \ + sret = cret = GNUTLS_E_AGAIN; \ + do { \ + if (cret == GNUTLS_E_AGAIN) { \ + switch_side("client"); \ + cret = gnutls_handshake(c); \ + if (cret == GNUTLS_E_INTERRUPTED) \ + cret = GNUTLS_E_AGAIN; \ + } \ + if (sret == GNUTLS_E_AGAIN) { \ + switch_side("server"); \ + sret = gnutls_handshake(s); \ + if (sret == GNUTLS_E_INTERRUPTED) \ + sret = GNUTLS_E_AGAIN; \ + } \ + } while ((cret == GNUTLS_E_AGAIN || \ + (cret == 0 && sret == GNUTLS_E_AGAIN)) && \ + (sret == GNUTLS_E_AGAIN || \ + (sret == 0 && cret == GNUTLS_E_AGAIN))); \ + if ((clierr != -1 && cret != clierr) || \ + (serverr != -1 && sret != serverr)) { \ + fprintf(stderr, "client[%d]: %s\n", cret, \ + gnutls_strerror(cret)); \ + fprintf(stderr, "server[%d]: %s\n", sret, \ + gnutls_strerror(sret)); \ + failure(); \ + } + +#define HANDSHAKE(c, s) HANDSHAKE_EXPECT(c, s, 0, 0) + +#define HANDSHAKE_DTLS_EXPECT(c, s, clierr, serverr) \ + sret = cret = GNUTLS_E_AGAIN; \ + do { \ + if (cret == GNUTLS_E_LARGE_PACKET) { \ + unsigned int mtu = gnutls_dtls_get_mtu(s); \ + gnutls_dtls_set_mtu(s, mtu / 2); \ + } \ + if (cret < 0 && gnutls_error_is_fatal(cret) == 0) { \ + switch_side("client"); \ + cret = gnutls_handshake(c); \ + } \ + if (sret == GNUTLS_E_LARGE_PACKET) { \ + unsigned int mtu = gnutls_dtls_get_mtu(s); \ + gnutls_dtls_set_mtu(s, mtu / 2); \ + } \ + if (sret < 0 && gnutls_error_is_fatal(sret) == 0) { \ + switch_side("server"); \ + sret = gnutls_handshake(s); \ + } \ + } while (((gnutls_error_is_fatal(cret) == 0 && \ + gnutls_error_is_fatal(sret) == 0)) && \ + (cret < 0 || sret < 0)); \ + if (cret != clierr || sret != serverr) { \ + fprintf(stderr, "client: %s\n", gnutls_strerror(cret)); \ + fprintf(stderr, "server: %s\n", gnutls_strerror(sret)); \ + failure(); \ + } + +#define HANDSHAKE_DTLS(c, s) HANDSHAKE_DTLS_EXPECT(c, s, 0, 0) + +#define HANDSHAKE(c, s) HANDSHAKE_EXPECT(c, s, 0, 0) + +#define TRANSFER2(c, s, msg, msglen, buf, buflen, retry_send_with_null) \ + { \ + int _ret; \ + switch_side("client"); \ + _ret = record_send_loop(c, msg, msglen, retry_send_with_null); \ + \ + if (_ret < 0) \ + client_transfer_failure(_ret); \ + \ + do { \ + do { \ + switch_side("server"); \ + _ret = gnutls_record_recv(s, buf, buflen); \ + } while (_ret == GNUTLS_E_AGAIN); \ + if (_ret <= 0) { \ + server_transfer_failure(_ret); \ + } else { \ + transferred += _ret; \ + } \ + switch_side("server"); \ + _ret = record_send_loop(server, msg, msglen, \ + retry_send_with_null); \ + if (_ret < 0) \ + server_transfer_failure(_ret); \ + do { \ + switch_side("client"); \ + _ret = gnutls_record_recv(client, buf, \ + buflen); \ + } while (_ret == GNUTLS_E_AGAIN); \ + if (_ret <= 0) { \ + client_transfer_failure(_ret); \ + } else { \ + if (msglen != _ret || \ + memcmp(buf, msg, msglen) != 0) { \ + failure(); \ + } \ + /* echo back */ \ + switch_side("client"); \ + _ret = record_send_loop(client, buf, msglen, \ + retry_send_with_null); \ + if (_ret < 0) \ + client_transfer_failure(_ret); \ + transferred += _ret; \ + } \ + } while (transferred < 70000); \ + } + +#define EMPTY_BUF(s, c, buf, buflen) \ + { \ + switch_side("client"); \ + int _ret = 0; \ + while ((_ret == GNUTLS_E_AGAIN && to_server_len > 0) || \ + to_server_len > 0) { \ + switch_side("server"); \ + _ret = gnutls_record_recv(s, buf, buflen); \ + } \ + if (_ret < 0 && _ret != GNUTLS_E_AGAIN) { \ + server_transfer_failure(_ret); \ + } \ + switch_side("server"); \ + _ret = 0; \ + while ((to_client_len > 0 && _ret == GNUTLS_E_AGAIN) || \ + to_client_len > 0) { \ + switch_side("client"); \ + _ret = gnutls_record_recv(client, buf, buflen); \ + } \ + if (_ret < 0 && _ret != GNUTLS_E_AGAIN) { \ + client_transfer_failure(_ret); \ + } \ + } + +#define TRANSFER(c, s, msg, msglen, buf, buflen) \ + TRANSFER2(c, s, msg, msglen, buf, buflen, 0); \ + TRANSFER2(c, s, msg, msglen, buf, buflen, 1) static char to_server[64 * 1024]; static size_t to_server_len = 0; @@ -174,21 +176,20 @@ static size_t to_server_len = 0; static char to_client[64 * 1024]; static size_t to_client_len = 0; -# ifdef RANDOMIZE -# define RETURN_RND_EAGAIN(session) \ - unsigned int rnd = time(0); \ - if (rnd++ % 3 == 0) \ - { \ - gnutls_transport_set_errno (session, EAGAIN); \ - return -1; \ - } -# else -# define RETURN_RND_EAGAIN(session) -# endif - -# ifndef IGNORE_PUSH -static ssize_t -client_push(gnutls_transport_ptr_t tr, const void *data, size_t len) +#ifdef RANDOMIZE +#define RETURN_RND_EAGAIN(session) \ + unsigned int rnd = time(0); \ + if (rnd++ % 3 == 0) { \ + gnutls_transport_set_errno(session, EAGAIN); \ + return -1; \ + } +#else +#define RETURN_RND_EAGAIN(session) +#endif + +#ifndef IGNORE_PUSH +static ssize_t client_push(gnutls_transport_ptr_t tr, const void *data, + size_t len) { size_t newlen; RETURN_RND_EAGAIN(tr); @@ -198,26 +199,26 @@ client_push(gnutls_transport_ptr_t tr, const void *data, size_t len) newlen = to_server_len + len; memcpy(to_server + to_server_len, data, len); to_server_len = newlen; -# ifdef EAGAIN_DEBUG +#ifdef EAGAIN_DEBUG fprintf(stderr, "eagain: pushed %d bytes to server (avail: %d)\n", (int)len, (int)to_server_len); -# endif +#endif return len; } -# endif +#endif static ssize_t client_pull(gnutls_transport_ptr_t tr, void *data, size_t len) { RETURN_RND_EAGAIN(tr); if (to_client_len == 0) { -# ifdef EAGAIN_DEBUG +#ifdef EAGAIN_DEBUG fprintf(stderr, "eagain: Not enough data by server (asked for: %d, have: %d)\n", (int)len, (int)to_client_len); -# endif - gnutls_transport_set_errno((gnutls_session_t) tr, EAGAIN); +#endif + gnutls_transport_set_errno((gnutls_session_t)tr, EAGAIN); return -1; } @@ -227,10 +228,10 @@ static ssize_t client_pull(gnutls_transport_ptr_t tr, void *data, size_t len) memmove(to_client, to_client + len, to_client_len - len); to_client_len -= len; -# ifdef EAGAIN_DEBUG +#ifdef EAGAIN_DEBUG fprintf(stderr, "eagain: pulled %d bytes by client (avail: %d)\n", (int)len, (int)to_client_len); -# endif +#endif return len; } @@ -240,20 +241,20 @@ static ssize_t server_pull(gnutls_transport_ptr_t tr, void *data, size_t len) RETURN_RND_EAGAIN(tr); if (to_server_len == 0) { -# ifdef EAGAIN_DEBUG +#ifdef EAGAIN_DEBUG fprintf(stderr, "eagain: Not enough data by client (asked for: %d, have: %d)\n", (int)len, (int)to_server_len); -# endif - gnutls_transport_set_errno((gnutls_session_t) tr, EAGAIN); +#endif + gnutls_transport_set_errno((gnutls_session_t)tr, EAGAIN); return -1; } len = min(len, to_server_len); -# ifdef EAGAIN_DEBUG +#ifdef EAGAIN_DEBUG fprintf(stderr, "eagain: pulled %d bytes by server (avail: %d)\n", (int)len, (int)to_server_len); -# endif +#endif memcpy(data, to_server, len); memmove(to_server, to_server + len, to_server_len - len); @@ -262,32 +263,32 @@ static ssize_t server_pull(gnutls_transport_ptr_t tr, void *data, size_t len) return len; } -# ifndef IGNORE_PUSH -static ssize_t -server_push(gnutls_transport_ptr_t tr, const void *data, size_t len) +#ifndef IGNORE_PUSH +static ssize_t server_push(gnutls_transport_ptr_t tr, const void *data, + size_t len) { size_t newlen; RETURN_RND_EAGAIN(tr); -// hexprint (data, len); + // hexprint (data, len); len = min(len, sizeof(to_client) - to_client_len); newlen = to_client_len + len; memcpy(to_client + to_client_len, data, len); to_client_len = newlen; -# ifdef EAGAIN_DEBUG +#ifdef EAGAIN_DEBUG fprintf(stderr, "eagain: pushed %d bytes to client (avail: %d)\n", (int)len, (int)to_client_len); -# endif +#endif -# ifdef SERVER_PUSH_ADD +#ifdef SERVER_PUSH_ADD SERVER_PUSH_ADD -# endif - return len; +#endif + return len; } -# endif +#endif /* inline is used to avoid a gcc warning if used in mini-eagain */ inline static int server_pull_timeout_func(gnutls_transport_ptr_t ptr, @@ -296,15 +297,15 @@ inline static int server_pull_timeout_func(gnutls_transport_ptr_t ptr, int ret; if (to_server_len > 0) - ret = 1; /* available data */ + ret = 1; /* available data */ else - ret = 0; /* timeout */ + ret = 0; /* timeout */ -# ifdef EAGAIN_DEBUG +#ifdef EAGAIN_DEBUG fprintf(stderr, "eagain: server_pull_timeout: %d (avail: cli %d, serv %d)\n", ret, (int)to_client_len, (int)to_server_len); -# endif +#endif return ret; } @@ -319,11 +320,11 @@ inline static int client_pull_timeout_func(gnutls_transport_ptr_t ptr, else ret = 0; -# ifdef EAGAIN_DEBUG +#ifdef EAGAIN_DEBUG fprintf(stderr, "eagain: client_pull_timeout: %d (avail: cli %d, serv %d)\n", ret, (int)to_client_len, (int)to_server_len); -# endif +#endif return ret; } @@ -334,9 +335,8 @@ inline static void reset_buffers(void) to_client_len = 0; } -inline static int record_send_loop(gnutls_session_t session, - const void *data, size_t sizeofdata, - int use_null_on_retry) +inline static int record_send_loop(gnutls_session_t session, const void *data, + size_t sizeofdata, int use_null_on_retry) { int ret; const void *retry_data; @@ -358,4 +358,4 @@ inline static int record_send_loop(gnutls_session_t session, return ret; } -#endif /* GNUTLS_TESTS_EAGAIN_COMMON_H */ +#endif /* GNUTLS_TESTS_EAGAIN_COMMON_H */ diff --git a/tests/eagain.c b/tests/eagain.c index eb46ec61ca..15f3ab88ec 100644 --- a/tests/eagain.c +++ b/tests/eagain.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -44,7 +44,8 @@ static void tls_log_func(int level, const char *str) } #define MAX_BUF 1024 -#define MSG "Hello TLS, and hi and how are you and more data here... and more... and even more and even more more data..." +#define MSG \ + "Hello TLS, and hi and how are you and more data here... and more... and even more and even more more data..." static void async_handshake(void **glob_state, const char *prio, unsigned rehsk) { @@ -65,20 +66,20 @@ static void async_handshake(void **glob_state, const char *prio, unsigned rehsk) gnutls_global_set_log_function(tls_log_func); /* Init server */ - assert_return_code(gnutls_certificate_allocate_credentials - (&serverx509cred), 0); - assert_return_code(gnutls_certificate_set_x509_key_mem - (serverx509cred, &server_cert, &server_key, - GNUTLS_X509_FMT_PEM), 0); + assert_return_code( + gnutls_certificate_allocate_credentials(&serverx509cred), 0); + assert_return_code(gnutls_certificate_set_x509_key_mem( + serverx509cred, &server_cert, &server_key, + GNUTLS_X509_FMT_PEM), + 0); ret = gnutls_init(&server, GNUTLS_SERVER); assert_return_code(ret, 0); ret = gnutls_priority_set_direct(server, prio, NULL); assert_return_code(ret, 0); - ret = - gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, - serverx509cred); + ret = gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, + serverx509cred); assert_return_code(ret, 0); gnutls_transport_set_push_function(server, server_push); @@ -94,9 +95,8 @@ static void async_handshake(void **glob_state, const char *prio, unsigned rehsk) ret = gnutls_priority_set_direct(client, prio, NULL); assert_return_code(ret, 0); - ret = - gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, - clientx509cred); + ret = gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, + clientx509cred); assert_return_code(ret, 0); gnutls_transport_set_push_function(client, client_push); diff --git a/tests/ecdh-compute.c b/tests/ecdh-compute.c index 4831bec918..f0536c41cd 100644 --- a/tests/ecdh-compute.c +++ b/tests/ecdh-compute.c @@ -22,7 +22,7 @@ /* This program tests functionality of DH exchanges */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -32,18 +32,16 @@ #include "utils.h" #ifdef ENABLE_FIPS140 -int _gnutls_ecdh_compute_key(gnutls_ecc_curve_t curve, - const gnutls_datum_t * x, const gnutls_datum_t * y, - const gnutls_datum_t * k, - const gnutls_datum_t * peer_x, - const gnutls_datum_t * peer_y, gnutls_datum_t * Z); - -int _gnutls_ecdh_generate_key(gnutls_ecc_curve_t curve, - gnutls_datum_t * x, gnutls_datum_t * y, - gnutls_datum_t * k); - -static void genkey(gnutls_ecc_curve_t curve, gnutls_datum_t * x, - gnutls_datum_t * y, gnutls_datum_t * key) +int _gnutls_ecdh_compute_key(gnutls_ecc_curve_t curve, const gnutls_datum_t *x, + const gnutls_datum_t *y, const gnutls_datum_t *k, + const gnutls_datum_t *peer_x, + const gnutls_datum_t *peer_y, gnutls_datum_t *Z); + +int _gnutls_ecdh_generate_key(gnutls_ecc_curve_t curve, gnutls_datum_t *x, + gnutls_datum_t *y, gnutls_datum_t *k); + +static void genkey(gnutls_ecc_curve_t curve, gnutls_datum_t *x, + gnutls_datum_t *y, gnutls_datum_t *key) { int ret; @@ -52,12 +50,11 @@ static void genkey(gnutls_ecc_curve_t curve, gnutls_datum_t * x, fail("error\n"); } -static void compute_key(gnutls_ecc_curve_t curve, const gnutls_datum_t * x, - const gnutls_datum_t * y, const gnutls_datum_t * key, - const gnutls_datum_t * peer_x, - const gnutls_datum_t * peer_y, - int expect_error, - gnutls_datum_t * result, bool expect_success) +static void compute_key(gnutls_ecc_curve_t curve, const gnutls_datum_t *x, + const gnutls_datum_t *y, const gnutls_datum_t *key, + const gnutls_datum_t *peer_x, + const gnutls_datum_t *peer_y, int expect_error, + gnutls_datum_t *result, bool expect_success) { gnutls_datum_t Z = { 0 }; bool success; @@ -90,83 +87,101 @@ void doit(void) { struct dh_test_data test_data[] = { { - /* x == 0, y == 0 */ - GNUTLS_ECC_CURVE_SECP256R1, - {0}, {0}, {0}, - {(void *)"\x00", 1}, - {(void *)"\x00", 1}, - /* Should be GNUTLS_E_PK_INVALID_PUBKEY but mpi scan + /* x == 0, y == 0 */ + GNUTLS_ECC_CURVE_SECP256R1, + { 0 }, + { 0 }, + { 0 }, + { (void *)"\x00", 1 }, + { (void *)"\x00", 1 }, + /* Should be GNUTLS_E_PK_INVALID_PUBKEY but mpi scan * balks on values of 0 */ - GNUTLS_E_MPI_SCAN_FAILED, - }, + GNUTLS_E_MPI_SCAN_FAILED, + }, { - /* x > p -1 */ - GNUTLS_ECC_CURVE_SECP256R1, - {0}, {0}, {0}, - {(void *)"\xff\xff\xff\xff\x00\x00\x00\x01" - "\x00\x00\x00\x00\x00\x00\x00\x00" - "\x00\x00\x00\x00\xff\xff\xff\xff" - "\xff\xff\xff\xff\xff\xff\xff\xff", 1}, - {(void *)"\x02", 1}, - GNUTLS_E_PK_INVALID_PUBKEY, - }, + /* x > p -1 */ + GNUTLS_ECC_CURVE_SECP256R1, + { 0 }, + { 0 }, + { 0 }, + { (void *)"\xff\xff\xff\xff\x00\x00\x00\x01" + "\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff", + 1 }, + { (void *)"\x02", 1 }, + GNUTLS_E_PK_INVALID_PUBKEY, + }, { - /* y > p -1 */ - GNUTLS_ECC_CURVE_SECP256R1, - {0}, {0}, {0}, - {(void *)"\x02", 1}, - {(void *)"\xff\xff\xff\xff\x00\x00\x00\x01" - "\x00\x00\x00\x00\x00\x00\x00\x00" - "\x00\x00\x00\x00\xff\xff\xff\xff" - "\xff\xff\xff\xff\xff\xff\xff\xff", 1}, - GNUTLS_E_PK_INVALID_PUBKEY, - }, + /* y > p -1 */ + GNUTLS_ECC_CURVE_SECP256R1, + { 0 }, + { 0 }, + { 0 }, + { (void *)"\x02", 1 }, + { (void *)"\xff\xff\xff\xff\x00\x00\x00\x01" + "\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff", + 1 }, + GNUTLS_E_PK_INVALID_PUBKEY, + }, { - /* From CAVS tests */ - GNUTLS_ECC_CURVE_SECP521R1, - {(void *)"\xac\xbe\x4a\xd4\xf6\x73\x44\x0a" - "\xfc\x31\xf0\xb0\x3d\x28\xd4\xd5" - "\x14\xbe\x7b\xdd\x7a\x31\xb0\x32" - "\xec\x27\x27\x17\xa5\x7d\xc2\x6c" - "\xc4\xc9\x56\x29\xdb\x2d\x8c\x05" - "\x86\x2b\xe6\x15\xc6\x06\x28\xa3" - "\x24\xf2\x01\x7f\x98\xbd\xf9\x11" - "\xcc\xf8\x83\x5e\x43\x9e\xb2\xc1" "\x88", 65}, - {(void *)"\xd6\x9b\x29\xa2\x37\x82\x36\x92" - "\xe8\xdb\x90\xa3\x25\x68\x67\x6c" - "\x92\xff\x3d\x23\x85\xe2\xfd\x13" - "\x16\x12\x72\xb3\x4b\x55\x88\x72" - "\xb0\x35\xab\xb5\x10\x89\x52\x5f" - "\x42\x9f\x53\x02\x60\x80\xc3\xd5" - "\x36\x6e\xe9\xdd\x28\xae\xd2\x38" - "\xab\xbe\x68\x6a\x54\x3e\x19\xf2" "\x77", 65}, - {(void *)"\xd7\xdd\x17\x7c\xb9\x7f\x19\x09" - "\xbe\x56\x79\xba\x38\x7b\xee\x64" - "\xf7\xb4\x08\x4a\x4f\xaa\x6c\x31" - "\x8b\x82\xe9\xf2\xf7\x50\xc5\xc1" - "\x82\x26\x20\xd4\x88\x25\x0b\xf6" - "\xb4\x14\xea\x9b\x2c\x07\x93\x50" - "\xb9\xad\x78\x0a\x5e\xc6\xa6\xf8" - "\xb2\x9f\xa1\xc4\x76\xce\x1d\xa9" "\xf5", 65}, - {(void *)"\x01\x41\xbe\x1a\xfa\x21\x99\xc9" - "\xb2\x2d\xaa\x0a\xff\x90\xb2\x67" - "\x18\xa2\x67\x04\x7e\xae\x28\x40" - "\xe8\xbc\xa0\xbd\x0c\x75\x41\x51" - "\xf1\xa0\x4d\xcf\x09\xa5\x4f\x1e" - "\x13\x5e\xa0\xdd\x13\xed\x86\x74" - "\x05\xc0\xcb\x6d\xac\x14\x6a\x24" - "\xb8\xdc\xf3\x78\xed\xed\x5d\xcd" "\x57\x5b", 66}, - {(void *)"\x19\x52\xbd\x5d\xe6\x26\x40\xc3" - "\xfc\x8c\xc1\x55\xe2\x9c\x71\x14" - "\x5e\xdc\x62\x1c\x3a\x94\x4e\x55" - "\x56\x75\xf7\x45\x6e\xa4\x9e\x94" - "\xb8\xfe\xda\xd4\xac\x7d\x76\xc5" - "\xb4\x65\xed\xb4\x49\x34\x71\x14" - "\xdb\x8f\x10\x90\xa3\x05\x02\xdc" - "\x86\x92\x6c\xbe\x9b\x57\x32\xe3" "\x2c", 65}, - 0, - }, - {0} + /* From CAVS tests */ + GNUTLS_ECC_CURVE_SECP521R1, + { (void *)"\xac\xbe\x4a\xd4\xf6\x73\x44\x0a" + "\xfc\x31\xf0\xb0\x3d\x28\xd4\xd5" + "\x14\xbe\x7b\xdd\x7a\x31\xb0\x32" + "\xec\x27\x27\x17\xa5\x7d\xc2\x6c" + "\xc4\xc9\x56\x29\xdb\x2d\x8c\x05" + "\x86\x2b\xe6\x15\xc6\x06\x28\xa3" + "\x24\xf2\x01\x7f\x98\xbd\xf9\x11" + "\xcc\xf8\x83\x5e\x43\x9e\xb2\xc1" + "\x88", + 65 }, + { (void *)"\xd6\x9b\x29\xa2\x37\x82\x36\x92" + "\xe8\xdb\x90\xa3\x25\x68\x67\x6c" + "\x92\xff\x3d\x23\x85\xe2\xfd\x13" + "\x16\x12\x72\xb3\x4b\x55\x88\x72" + "\xb0\x35\xab\xb5\x10\x89\x52\x5f" + "\x42\x9f\x53\x02\x60\x80\xc3\xd5" + "\x36\x6e\xe9\xdd\x28\xae\xd2\x38" + "\xab\xbe\x68\x6a\x54\x3e\x19\xf2" + "\x77", + 65 }, + { (void *)"\xd7\xdd\x17\x7c\xb9\x7f\x19\x09" + "\xbe\x56\x79\xba\x38\x7b\xee\x64" + "\xf7\xb4\x08\x4a\x4f\xaa\x6c\x31" + "\x8b\x82\xe9\xf2\xf7\x50\xc5\xc1" + "\x82\x26\x20\xd4\x88\x25\x0b\xf6" + "\xb4\x14\xea\x9b\x2c\x07\x93\x50" + "\xb9\xad\x78\x0a\x5e\xc6\xa6\xf8" + "\xb2\x9f\xa1\xc4\x76\xce\x1d\xa9" + "\xf5", + 65 }, + { (void *)"\x01\x41\xbe\x1a\xfa\x21\x99\xc9" + "\xb2\x2d\xaa\x0a\xff\x90\xb2\x67" + "\x18\xa2\x67\x04\x7e\xae\x28\x40" + "\xe8\xbc\xa0\xbd\x0c\x75\x41\x51" + "\xf1\xa0\x4d\xcf\x09\xa5\x4f\x1e" + "\x13\x5e\xa0\xdd\x13\xed\x86\x74" + "\x05\xc0\xcb\x6d\xac\x14\x6a\x24" + "\xb8\xdc\xf3\x78\xed\xed\x5d\xcd" + "\x57\x5b", + 66 }, + { (void *)"\x19\x52\xbd\x5d\xe6\x26\x40\xc3" + "\xfc\x8c\xc1\x55\xe2\x9c\x71\x14" + "\x5e\xdc\x62\x1c\x3a\x94\x4e\x55" + "\x56\x75\xf7\x45\x6e\xa4\x9e\x94" + "\xb8\xfe\xda\xd4\xac\x7d\x76\xc5" + "\xb4\x65\xed\xb4\x49\x34\x71\x14" + "\xdb\x8f\x10\x90\xa3\x05\x02\xdc" + "\x86\x92\x6c\xbe\x9b\x57\x32\xe3" + "\x2c", + 65 }, + 0, + }, + { 0 } }; for (int i = 0; test_data[i].curve != 0; i++) { @@ -181,8 +196,7 @@ void doit(void) } compute_key(test_data[i].curve, &x, &y, &key, - &test_data[i].peer_x, - &test_data[i].peer_y, + &test_data[i].peer_x, &test_data[i].peer_y, test_data[i].expected_error, NULL, 0); if (test_data[i].key.data == NULL) { diff --git a/tests/empty_retrieve_function.c b/tests/empty_retrieve_function.c index 35e2de913f..d1a0aa9718 100644 --- a/tests/empty_retrieve_function.c +++ b/tests/empty_retrieve_function.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -36,23 +36,18 @@ * return no certificates. */ -static int cert_cb1(gnutls_session_t session, - const gnutls_datum_t * req_ca_rdn, - int nreqs, - const gnutls_pk_algorithm_t * pk_algos, - int pk_algos_length, gnutls_retr2_st * retr) +static int cert_cb1(gnutls_session_t session, const gnutls_datum_t *req_ca_rdn, + int nreqs, const gnutls_pk_algorithm_t *pk_algos, + int pk_algos_length, gnutls_retr2_st *retr) { memset(retr, 0, sizeof(*retr)); return 0; } -static int cert_cb2(gnutls_session_t session, - const gnutls_datum_t * req_ca_rdn, - int nreqs, - const gnutls_pk_algorithm_t * pk_algos, - int pk_algos_length, - gnutls_pcert_st ** pcert, - unsigned int *pcert_length, gnutls_privkey_t * privkey) +static int cert_cb2(gnutls_session_t session, const gnutls_datum_t *req_ca_rdn, + int nreqs, const gnutls_pk_algorithm_t *pk_algos, + int pk_algos_length, gnutls_pcert_st **pcert, + unsigned int *pcert_length, gnutls_privkey_t *privkey) { *pcert_length = 0; *privkey = NULL; @@ -63,11 +58,9 @@ static int cert_cb2(gnutls_session_t session, static int cert_cb3(gnutls_session_t session, const struct gnutls_cert_retr_st *info, - gnutls_pcert_st ** certs, - unsigned int *pcert_length, - gnutls_ocsp_data_st ** ocsp, - unsigned int *ocsp_length, - gnutls_privkey_t * privkey, unsigned int *flags) + gnutls_pcert_st **certs, unsigned int *pcert_length, + gnutls_ocsp_data_st **ocsp, unsigned int *ocsp_length, + gnutls_privkey_t *privkey, unsigned int *flags) { *privkey = NULL; *ocsp_length = 0; @@ -96,11 +89,9 @@ void doit(void) gnutls_certificate_allocate_credentials(&x509_cred); - ret = - gnutls_certificate_set_x509_key_mem(x509_cred, - &server_ca3_localhost_cert_chain, - &server_ca3_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + x509_cred, &server_ca3_localhost_cert_chain, &server_ca3_key, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("error in error code\n"); exit(1); diff --git a/tests/fallback-scsv.c b/tests/fallback-scsv.c index 632d05211e..fbe0da9b21 100644 --- a/tests/fallback-scsv.c +++ b/tests/fallback-scsv.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,20 +35,20 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "utils.h" -# include "cert-common.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "utils.h" +#include "cert-common.h" static void terminate(void); @@ -68,7 +68,7 @@ static void client_log_func(int level, const char *str) /* This tests whether the fallback SCSV is working as intended. */ -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd, const char *prio, unsigned expect_fail) { @@ -101,8 +101,7 @@ static void client(int fd, const char *prio, unsigned expect_fail) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (expect_fail) { goto end; @@ -119,8 +118,8 @@ static void client(int fd, const char *prio, unsigned expect_fail) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { do { @@ -141,7 +140,7 @@ static void client(int fd, const char *prio, unsigned expect_fail) gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); @@ -202,8 +201,7 @@ static void server(int fd, const char *prio, unsigned expect_fail) if (expect_fail) { if (ret == GNUTLS_E_INAPPROPRIATE_FALLBACK) { if (debug) - success - ("server: received inappropriate fallback error\n"); + success("server: received inappropriate fallback error\n"); goto cleanup; } else { fail("server: received unexpected error: %s\n", @@ -224,13 +222,13 @@ static void server(int fd, const char *prio, unsigned expect_fail) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { do { - ret = - gnutls_record_send(session, buffer, sizeof(buffer)); + ret = gnutls_record_send(session, buffer, + sizeof(buffer)); } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) { @@ -239,14 +237,13 @@ static void server(int fd, const char *prio, unsigned expect_fail) terminate(); } to_send++; - } - while (to_send < 64); + } while (to_send < 64); to_send = -1; /* do not wait for the peer to close the connection. */ gnutls_bye(session, GNUTLS_SHUT_WR); - cleanup: +cleanup: close(fd); gnutls_deinit(session); @@ -318,4 +315,4 @@ void doit(void) 0); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/fips-mode-pthread.c b/tests/fips-mode-pthread.c index cf52c6d90b..08b463bb26 100644 --- a/tests/fips-mode-pthread.c +++ b/tests/fips-mode-pthread.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,11 +33,11 @@ #include #include #ifndef _WIN32 -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include #endif #include "utils.h" @@ -70,7 +70,8 @@ static void *test_set_per_thread(void *arg) mode = gnutls_fips140_mode_enabled(); if (mode != data->mode) - fail("%d: gnutls_fips140_mode_enabled: wrong mode returned (%d, exp: %d)\n", data->line, mode, data->mode); + fail("%d: gnutls_fips140_mode_enabled: wrong mode returned (%d, exp: %d)\n", + data->line, mode, data->mode); if (data->set_mode) gnutls_fips140_set_mode(data->set_mode, @@ -78,17 +79,19 @@ static void *test_set_per_thread(void *arg) mode = gnutls_fips140_mode_enabled(); if (mode != data->set_mode) { - fail("%d: gnutls_fips140_mode_enabled: wrong mode returned after set (%d, exp: %d)\n", data->line, mode, data->set_mode); + fail("%d: gnutls_fips140_mode_enabled: wrong mode returned after set (%d, exp: %d)\n", + data->line, mode, data->set_mode); } /* reset mode */ gnutls_fips140_set_mode(data->mode, GNUTLS_FIPS140_SET_MODE_THREAD); mode = gnutls_fips140_mode_enabled(); if (mode != data->mode) - fail("%d: gnutls_fips140_mode_enabled: wrong mode returned after set (%d, exp: %d)\n", data->line, mode, data->mode); + fail("%d: gnutls_fips140_mode_enabled: wrong mode returned after set (%d, exp: %d)\n", + data->line, mode, data->mode); - ret = gnutls_hmac_fast(GNUTLS_MAC_MD5, "keykeykey", 9, "abcdefgh", - 8, digest); + ret = gnutls_hmac_fast(GNUTLS_MAC_MD5, "keykeykey", 9, "abcdefgh", 8, + digest); if (mode == GNUTLS_FIPS140_STRICT && ret >= 0) { fail("gnutls_hmac_fast(MD5): succeeded in strict mode!\n"); } else if (mode != GNUTLS_FIPS140_STRICT && ret < 0) { @@ -101,7 +104,7 @@ static void *test_set_per_thread(void *arg) pthread_exit(0); } -# define MAX_THREADS 48 +#define MAX_THREADS 48 void doit(void) { @@ -137,9 +140,8 @@ void doit(void) else data[i].set_mode = GNUTLS_FIPS140_STRICT; - ret = - pthread_create(&data[i].id, NULL, test_set_per_thread, - &data[i]); + ret = pthread_create(&data[i].id, NULL, test_set_per_thread, + &data[i]); if (ret != 0) { abort(); } @@ -156,7 +158,8 @@ void doit(void) /* main thread should be in the same state */ if (mode != gnutls_fips140_mode_enabled()) - fail("gnutls_fips140_mode_enabled: main thread changed mode (%d, exp: %d)\n", gnutls_fips140_mode_enabled(), mode); + fail("gnutls_fips140_mode_enabled: main thread changed mode (%d, exp: %d)\n", + gnutls_fips140_mode_enabled(), mode); success("checking whether global changes are seen in threads\n"); /* Test if changes globally are visible in threads */ @@ -167,9 +170,8 @@ void doit(void) data[i].line = __LINE__; data[i].mode = mode; data[i].set_mode = GNUTLS_FIPS140_LAX; - ret = - pthread_create(&data[i].id, NULL, test_set_per_thread, - &data[i]); + ret = pthread_create(&data[i].id, NULL, test_set_per_thread, + &data[i]); if (ret != 0) abort(); } @@ -182,14 +184,14 @@ void doit(void) } if (mode != gnutls_fips140_mode_enabled()) - fail("gnutls_fips140_mode_enabled: main thread changed mode (%d, exp: %d)\n", gnutls_fips140_mode_enabled(), mode); + fail("gnutls_fips140_mode_enabled: main thread changed mode (%d, exp: %d)\n", + gnutls_fips140_mode_enabled(), mode); gnutls_fips140_set_mode(GNUTLS_FIPS140_SELFTESTS, 0); if (GNUTLS_FIPS140_SELFTESTS == gnutls_fips140_mode_enabled()) fail("gnutls_fips140_mode_enabled: setting to GNUTLS_FIPS140_SELFTESTS succeeded!\n"); free(data); - } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/fips-rsa-sizes.c b/tests/fips-rsa-sizes.c index 13089e3741..377761643a 100644 --- a/tests/fips-rsa-sizes.c +++ b/tests/fips-rsa-sizes.c @@ -26,16 +26,16 @@ #include #include -void generate_successfully(gnutls_privkey_t * privkey, gnutls_pubkey_t * pubkey, +void generate_successfully(gnutls_privkey_t *privkey, gnutls_pubkey_t *pubkey, unsigned int size); -void generate_unsuccessfully(gnutls_privkey_t * privkey, - gnutls_pubkey_t * pubkey, unsigned int size); +void generate_unsuccessfully(gnutls_privkey_t *privkey, gnutls_pubkey_t *pubkey, + unsigned int size); void sign_verify_successfully(gnutls_privkey_t privkey, gnutls_pubkey_t pubkey); void sign_verify_unsuccessfully(gnutls_privkey_t privkey, gnutls_pubkey_t pubkey); void nosign_verify(gnutls_privkey_t privkey, gnutls_pubkey_t pubkey); -void generate_successfully(gnutls_privkey_t * privkey, gnutls_pubkey_t * pubkey, +void generate_successfully(gnutls_privkey_t *privkey, gnutls_pubkey_t *pubkey, unsigned int size) { int ret; @@ -72,8 +72,8 @@ void generate_successfully(gnutls_privkey_t * privkey, gnutls_pubkey_t * pubkey, gnutls_fips140_context_deinit(fips_context); } -void generate_unsuccessfully(gnutls_privkey_t * privkey, - gnutls_pubkey_t * pubkey, unsigned int size) +void generate_unsuccessfully(gnutls_privkey_t *privkey, gnutls_pubkey_t *pubkey, + unsigned int size) { int ret; gnutls_x509_privkey_t xprivkey; @@ -134,8 +134,7 @@ void sign_verify_successfully(gnutls_privkey_t privkey, gnutls_pubkey_t pubkey) gnutls_datum_t signature; gnutls_datum_t plaintext = { - .data = (unsigned char *const)"Hello world!", - .size = 12 + .data = (unsigned char *const)"Hello world!", .size = 12 }; assert(gnutls_fips140_context_init(&fips_context) == 0); @@ -167,8 +166,7 @@ void sign_verify_unsuccessfully(gnutls_privkey_t privkey, gnutls_datum_t signature; gnutls_datum_t plaintext = { - .data = (unsigned char *const)"Hello world!", - .size = 12 + .data = (unsigned char *const)"Hello world!", .size = 12 }; assert(gnutls_fips140_context_init(&fips_context) == 0); @@ -201,8 +199,7 @@ void nosign_verify(gnutls_privkey_t privkey, gnutls_pubkey_t pubkey) gnutls_datum_t signature; gnutls_datum_t plaintext = { - .data = (unsigned char *const)"Hello world!", - .size = 12 + .data = (unsigned char *const)"Hello world!", .size = 12 }; assert(gnutls_fips140_context_init(&fips_context) == 0); @@ -248,7 +245,7 @@ void doit(void) if (gnutls_fips140_mode_enabled() == 0) { success("We are not in FIPS140 mode\n"); - exit(77); /* SKIP */ + exit(77); /* SKIP */ } assert(gnutls_fips140_context_init(&fips_context) == 0); diff --git a/tests/fips-test.c b/tests/fips-test.c index 86d1aa8811..97a729d292 100644 --- a/tests/fips-test.c +++ b/tests/fips-test.c @@ -26,7 +26,7 @@ static uint8_t key_data[64]; static uint8_t iv_data[16]; static gnutls_fips140_context_t fips_context; -static const gnutls_datum_t data = {.data = (unsigned char *)"foo", 3 }; +static const gnutls_datum_t data = { .data = (unsigned char *)"foo", 3 }; static const uint8_t rsa2342_sha1_sig_data[] = { 0x9b, 0x3e, 0x15, 0x36, 0xec, 0x9d, 0x51, 0xd7, 0xa2, 0xb1, 0x3a, 0x15, @@ -76,9 +76,8 @@ static const gnutls_datum_t ecc256_sha1_sig = { .size = sizeof(ecc256_sha1_sig_data), }; -static void -import_keypair(gnutls_privkey_t * privkey, gnutls_pubkey_t * pubkey, - const char *filename) +static void import_keypair(gnutls_privkey_t *privkey, gnutls_pubkey_t *pubkey, + const char *filename) { const char *srcdir; char path[256]; @@ -125,7 +124,6 @@ import_keypair(gnutls_privkey_t * privkey, gnutls_pubkey_t * pubkey, if (ret < 0) { fail("gnutls_pubkey_import_privkey failed\n"); } - } static void test_aead_cipher_approved(gnutls_cipher_algorithm_t cipher) @@ -211,10 +209,9 @@ static void test_cipher_disallowed(gnutls_cipher_algorithm_t cipher) FIPS_POP_CONTEXT(ERROR); } -static void -test_ccm_cipher(gnutls_cipher_algorithm_t cipher, size_t tag_length, - bool expect_encryption_fail, - gnutls_fips140_operation_state_t expected_state) +static void test_ccm_cipher(gnutls_cipher_algorithm_t cipher, size_t tag_length, + bool expect_encryption_fail, + gnutls_fips140_operation_state_t expected_state) { int ret; unsigned key_size = gnutls_cipher_get_key_size(cipher); @@ -237,15 +234,14 @@ test_ccm_cipher(gnutls_cipher_algorithm_t cipher, size_t tag_length, length = sizeof(buffer); ret = gnutls_aead_cipher_encrypt(h, iv_data, gnutls_cipher_get_iv_size(cipher), - NULL, 0, tag_length, - buffer, length - tag_length, - buffer, &length); + NULL, 0, tag_length, buffer, + length - tag_length, buffer, &length); if (expect_encryption_fail) { if (ret != GNUTLS_E_INVALID_REQUEST) { fail("gnutls_aead_cipher_encrypt(%s) returned %d " "while %d is expected\n", - gnutls_cipher_get_name(cipher), - ret, GNUTLS_E_INVALID_REQUEST); + gnutls_cipher_get_name(cipher), ret, + GNUTLS_E_INVALID_REQUEST); } } else if (ret < 0) { fail("gnutls_aead_cipher_encrypt failed for %s\n", @@ -257,14 +253,14 @@ test_ccm_cipher(gnutls_cipher_algorithm_t cipher, size_t tag_length, length = sizeof(buffer); ret = gnutls_aead_cipher_decrypt(h, iv_data, gnutls_cipher_get_iv_size(cipher), - NULL, 0, tag_length, - buffer, length, buffer, &length); + NULL, 0, tag_length, buffer, length, + buffer, &length); if (expect_encryption_fail) { if (ret != GNUTLS_E_INVALID_REQUEST) { fail("gnutls_aead_cipher_decrypt(%s) returned %d " "while %d is expected\n", - gnutls_cipher_get_name(cipher), - ret, GNUTLS_E_INVALID_REQUEST); + gnutls_cipher_get_name(cipher), ret, + GNUTLS_E_INVALID_REQUEST); } } else if (ret < 0) { fail("gnutls_aead_cipher_decrypt failed for %s\n", @@ -285,19 +281,19 @@ static inline void test_ciphers(void) /* Check for all allowed Tlen */ for (i = 4; i <= 16; i += 2) { - test_ccm_cipher(GNUTLS_CIPHER_AES_128_CCM, i, - false, GNUTLS_FIPS140_OP_APPROVED); - test_ccm_cipher(GNUTLS_CIPHER_AES_256_CCM, i, - false, GNUTLS_FIPS140_OP_APPROVED); - } - test_ccm_cipher(GNUTLS_CIPHER_AES_128_CCM, 3, - true, GNUTLS_FIPS140_OP_ERROR); - test_ccm_cipher(GNUTLS_CIPHER_AES_256_CCM, 3, - true, GNUTLS_FIPS140_OP_ERROR); - test_ccm_cipher(GNUTLS_CIPHER_AES_128_CCM, 5, - true, GNUTLS_FIPS140_OP_ERROR); - test_ccm_cipher(GNUTLS_CIPHER_AES_256_CCM, 5, - true, GNUTLS_FIPS140_OP_ERROR); + test_ccm_cipher(GNUTLS_CIPHER_AES_128_CCM, i, false, + GNUTLS_FIPS140_OP_APPROVED); + test_ccm_cipher(GNUTLS_CIPHER_AES_256_CCM, i, false, + GNUTLS_FIPS140_OP_APPROVED); + } + test_ccm_cipher(GNUTLS_CIPHER_AES_128_CCM, 3, true, + GNUTLS_FIPS140_OP_ERROR); + test_ccm_cipher(GNUTLS_CIPHER_AES_256_CCM, 3, true, + GNUTLS_FIPS140_OP_ERROR); + test_ccm_cipher(GNUTLS_CIPHER_AES_128_CCM, 5, true, + GNUTLS_FIPS140_OP_ERROR); + test_ccm_cipher(GNUTLS_CIPHER_AES_256_CCM, 5, true, + GNUTLS_FIPS140_OP_ERROR); test_aead_cipher_approved(GNUTLS_CIPHER_AES_128_CCM_8); test_aead_cipher_approved(GNUTLS_CIPHER_AES_256_CCM_8); @@ -432,8 +428,8 @@ void doit(void) /* HMAC with key equal to or longer than 112 bits: approved */ FIPS_PUSH_CONTEXT(); - ret = gnutls_hmac_fast(GNUTLS_MAC_SHA256, key.data, key.size, - data.data, data.size, hmac); + ret = gnutls_hmac_fast(GNUTLS_MAC_SHA256, key.data, key.size, data.data, + data.size, hmac); if (ret < 0) { fail("gnutls_hmac_fast failed\n"); } @@ -441,8 +437,8 @@ void doit(void) /* HMAC with key shorter than 112 bits: not approved */ FIPS_PUSH_CONTEXT(); - ret = gnutls_hmac_fast(GNUTLS_MAC_SHA256, key.data, 13, - data.data, data.size, hmac); + ret = gnutls_hmac_fast(GNUTLS_MAC_SHA256, key.data, 13, data.data, + data.size, hmac); if (ret < 0) { fail("gnutls_hmac_fast failed\n"); } @@ -450,8 +446,8 @@ void doit(void) /* PBKDF2 with key equal to or longer than 112 bits: approved */ FIPS_PUSH_CONTEXT(); - ret = gnutls_pbkdf2(GNUTLS_MAC_SHA256, &key, &iv, 1000, - &pbkdf2, sizeof(pbkdf2)); + ret = gnutls_pbkdf2(GNUTLS_MAC_SHA256, &key, &iv, 1000, &pbkdf2, + sizeof(pbkdf2)); if (ret < 0) { fail("gnutls_pbkdf2 failed\n"); } @@ -460,8 +456,8 @@ void doit(void) /* PBKDF2 with key shorter than 112 bits: not approved */ FIPS_PUSH_CONTEXT(); key.size = 13; - ret = gnutls_pbkdf2(GNUTLS_MAC_SHA256, &key, &iv, 1000, - &pbkdf2, sizeof(pbkdf2)); + ret = gnutls_pbkdf2(GNUTLS_MAC_SHA256, &key, &iv, 1000, &pbkdf2, + sizeof(pbkdf2)); if (ret < 0) { fail("gnutls_pbkdf2 failed\n"); } @@ -470,8 +466,8 @@ void doit(void) /* PBKDF2 with iteration count lower than 1000: not approved */ FIPS_PUSH_CONTEXT(); - ret = gnutls_pbkdf2(GNUTLS_MAC_SHA256, &key, &iv, 999, - &pbkdf2, sizeof(pbkdf2)); + ret = gnutls_pbkdf2(GNUTLS_MAC_SHA256, &key, &iv, 999, &pbkdf2, + sizeof(pbkdf2)); if (ret < 0) { fail("gnutls_pbkdf2 failed\n"); } @@ -480,8 +476,8 @@ void doit(void) /* PBKDF2 with salt shorter than 16 bytes: not approved */ FIPS_PUSH_CONTEXT(); iv.size = 13; - ret = gnutls_pbkdf2(GNUTLS_MAC_SHA256, &key, &iv, 1000, - &pbkdf2, sizeof(pbkdf2)); + ret = gnutls_pbkdf2(GNUTLS_MAC_SHA256, &key, &iv, 1000, &pbkdf2, + sizeof(pbkdf2)); if (ret < 0) { fail("gnutls_pbkdf2 failed\n"); } @@ -543,11 +539,12 @@ void doit(void) if (ret < 0) { fail("gnutls_privkey_init failed\n"); } - bits = - gnutls_sec_param_to_pk_bits(GNUTLS_PK_RSA, GNUTLS_SEC_PARAM_MEDIUM); + bits = gnutls_sec_param_to_pk_bits(GNUTLS_PK_RSA, + GNUTLS_SEC_PARAM_MEDIUM); ret = gnutls_x509_privkey_generate(xprivkey, GNUTLS_PK_RSA, bits, 0); if (ret < 0) { - fail("gnutls_x509_privkey_generate failed (%d) for %u-bit key\n", ret, bits); + fail("gnutls_x509_privkey_generate failed (%d) for %u-bit key\n", + ret, bits); } gnutls_x509_privkey_deinit(xprivkey); FIPS_POP_CONTEXT(APPROVED); @@ -560,7 +557,8 @@ void doit(void) } ret = gnutls_x509_privkey_generate(xprivkey, GNUTLS_PK_RSA, 512, 0); if (ret != GNUTLS_E_PK_GENERATION_ERROR) { - fail("gnutls_x509_privkey_generate succeeded (%d) for 512-bit key\n", ret); + fail("gnutls_x509_privkey_generate succeeded (%d) for 512-bit key\n", + ret); } gnutls_x509_privkey_deinit(xprivkey); FIPS_POP_CONTEXT(ERROR); @@ -572,8 +570,8 @@ void doit(void) /* Create a signature with 2432-bit RSA and SHA256; approved */ FIPS_PUSH_CONTEXT(); - ret = gnutls_privkey_sign_data(privkey, GNUTLS_DIG_SHA256, 0, - &data, &signature); + ret = gnutls_privkey_sign_data(privkey, GNUTLS_DIG_SHA256, 0, &data, + &signature); if (ret < 0) { fail("gnutls_privkey_sign_data failed\n"); } @@ -591,8 +589,8 @@ void doit(void) /* Create a signature with 2432-bit RSA and SHA-1; not approved */ FIPS_PUSH_CONTEXT(); - ret = gnutls_privkey_sign_data(privkey, GNUTLS_DIG_SHA1, 0, - &data, &signature); + ret = gnutls_privkey_sign_data(privkey, GNUTLS_DIG_SHA1, 0, &data, + &signature); if (ret < 0) { fail("gnutls_privkey_sign_data failed\n"); } @@ -618,8 +616,8 @@ void doit(void) /* Create a signature with 512-bit RSA and SHA256; not approved */ FIPS_PUSH_CONTEXT(); - ret = gnutls_privkey_sign_data(privkey, GNUTLS_DIG_SHA256, 0, - &data, &signature); + ret = gnutls_privkey_sign_data(privkey, GNUTLS_DIG_SHA256, 0, &data, + &signature); if (ret < 0) { fail("gnutls_privkey_sign_data failed\n"); } @@ -663,8 +661,8 @@ void doit(void) /* Create a signature with ECDSA and SHA256 (old API); approved */ FIPS_PUSH_CONTEXT(); - ret = gnutls_privkey_sign_data(privkey, GNUTLS_DIG_SHA256, 0, - &data, &signature); + ret = gnutls_privkey_sign_data(privkey, GNUTLS_DIG_SHA256, 0, &data, + &signature); if (ret < 0) { fail("gnutls_privkey_sign_data failed\n"); } @@ -723,8 +721,8 @@ void doit(void) /* Create a signature with ECDSA and SHA-1 (old API); not approved */ FIPS_PUSH_CONTEXT(); - ret = gnutls_privkey_sign_data(privkey, GNUTLS_DIG_SHA1, 0, - &data, &signature); + ret = gnutls_privkey_sign_data(privkey, GNUTLS_DIG_SHA1, 0, &data, + &signature); if (ret < 0) { fail("gnutls_privkey_sign_data failed\n"); } diff --git a/tests/global-init-override.c b/tests/global-init-override.c index ae2f50a323..730da4e380 100644 --- a/tests/global-init-override.c +++ b/tests/global-init-override.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -49,8 +49,8 @@ struct gnutls_subject_alt_names_st { /* gnutls_subject_alt_names_init() is called by gnutls_x509_crt_init(). * We override it here to test if weak symbols work at all. */ -__attribute__((visibility("protected"))) -int gnutls_subject_alt_names_init(gnutls_subject_alt_names_t * sans) +__attribute__((visibility("protected"))) int +gnutls_subject_alt_names_init(gnutls_subject_alt_names_t *sans) { weak_symbol_works = 1; @@ -64,7 +64,6 @@ int gnutls_subject_alt_names_init(gnutls_subject_alt_names_t * sans) GNUTLS_SKIP_GLOBAL_INIT void doit(void) { - int ret; gnutls_x509_crt_t crt; diff --git a/tests/global-init.c b/tests/global-init.c index c4cae39236..02f5fec178 100644 --- a/tests/global-init.c +++ b/tests/global-init.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include diff --git a/tests/gnutls-ids.c b/tests/gnutls-ids.c index 5559ef0bac..e521053971 100644 --- a/tests/gnutls-ids.c +++ b/tests/gnutls-ids.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include diff --git a/tests/gnutls-strcodes.c b/tests/gnutls-strcodes.c index 0f1f5efe02..d0fd58038d 100644 --- a/tests/gnutls-strcodes.c +++ b/tests/gnutls-strcodes.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -37,15 +37,13 @@ unsigned _gnutls_ecc_curve_is_supported(gnutls_ecc_curve_t); * non null value. */ -static -void _check_non_null(int line, int i, const char *val) +static void _check_non_null(int line, int i, const char *val) { if (val == NULL) fail("issue in line %d, item %d\n", line, i); } -static -void _check_unique_non_null(int line, int i, const char *val) +static void _check_unique_non_null(int line, int i, const char *val) { static char previous_val[128]; @@ -59,8 +57,7 @@ void _check_unique_non_null(int line, int i, const char *val) snprintf(previous_val, sizeof(previous_val), "%s", val); } -static -void _check_unique(int line, int i, const char *val) +static void _check_unique(int line, int i, const char *val) { static char previous_val[128]; @@ -115,18 +112,18 @@ void doit(void) check_non_null(gnutls_sec_param_get_name(i)); } - check_non_null(gnutls_certificate_verification_profile_get_name - (GNUTLS_PROFILE_VERY_WEAK)); - check_non_null(gnutls_certificate_verification_profile_get_name - (GNUTLS_PROFILE_LOW)); - check_non_null(gnutls_certificate_verification_profile_get_name - (GNUTLS_PROFILE_LEGACY)); - check_non_null(gnutls_certificate_verification_profile_get_name - (GNUTLS_PROFILE_MEDIUM)); - check_non_null(gnutls_certificate_verification_profile_get_name - (GNUTLS_PROFILE_HIGH)); - check_non_null(gnutls_certificate_verification_profile_get_name - (GNUTLS_PROFILE_ULTRA)); + check_non_null(gnutls_certificate_verification_profile_get_name( + GNUTLS_PROFILE_VERY_WEAK)); + check_non_null(gnutls_certificate_verification_profile_get_name( + GNUTLS_PROFILE_LOW)); + check_non_null(gnutls_certificate_verification_profile_get_name( + GNUTLS_PROFILE_LEGACY)); + check_non_null(gnutls_certificate_verification_profile_get_name( + GNUTLS_PROFILE_MEDIUM)); + check_non_null(gnutls_certificate_verification_profile_get_name( + GNUTLS_PROFILE_HIGH)); + check_non_null(gnutls_certificate_verification_profile_get_name( + GNUTLS_PROFILE_ULTRA)); for (i = GNUTLS_ECC_CURVE_INVALID + 1; i <= GNUTLS_ECC_CURVE_MAX; i++) { if (_gnutls_ecc_curve_is_supported(i) == 0) @@ -134,9 +131,9 @@ void doit(void) check_unique_non_null(gnutls_ecc_curve_get_name(i)); if (i == GNUTLS_ECC_CURVE_X25519) - continue; /* no oid yet */ + continue; /* no oid yet */ if (i == GNUTLS_ECC_CURVE_X448) - continue; /* no oid yet */ + continue; /* no oid yet */ check_unique_non_null(gnutls_ecc_curve_get_oid(i)); } diff --git a/tests/gnutls_ext_raw_parse.c b/tests/gnutls_ext_raw_parse.c index 6c44315123..8bd6e4337f 100644 --- a/tests/gnutls_ext_raw_parse.c +++ b/tests/gnutls_ext_raw_parse.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,27 +35,27 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "utils.h" -# include "cert-common.h" -# include "tls13/ext-parse.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "utils.h" +#include "cert-common.h" +#include "tls13/ext-parse.h" /* This program tests gnutls_ext_raw_parse with GNUTLS_EXT_RAW_FLAG_TLS_CLIENT_HELLO * flag. */ -# define HOSTNAME "example.com" +#define HOSTNAME "example.com" static void server_log_func(int level, const char *str) { @@ -74,7 +74,7 @@ static unsigned bare_version = 0; static int ext_callback(void *ctx, unsigned tls_id, const unsigned char *data, unsigned size) { - if (tls_id == 0) { /* server name */ + if (tls_id == 0) { /* server name */ /* very interesting extension, 4 bytes of sizes * and 1 byte of type. */ unsigned esize = (data[0] << 8) | data[1]; @@ -106,15 +106,15 @@ static int ext_callback(void *ctx, unsigned tls_id, const unsigned char *data, static int handshake_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { int ret; if (htype == GNUTLS_HANDSHAKE_CLIENT_HELLO && post) { if (bare_version) { - ret = - gnutls_ext_raw_parse(NULL, ext_callback, msg, - GNUTLS_EXT_RAW_FLAG_TLS_CLIENT_HELLO); + ret = gnutls_ext_raw_parse( + NULL, ext_callback, msg, + GNUTLS_EXT_RAW_FLAG_TLS_CLIENT_HELLO); } else { unsigned pos; gnutls_datum_t mmsg; @@ -126,8 +126,8 @@ static int handshake_callback(gnutls_session_t session, unsigned int htype, mmsg.data = &msg->data[pos]; mmsg.size = msg->size - pos; - ret = - gnutls_ext_raw_parse(NULL, ext_callback, &mmsg, 0); + ret = gnutls_ext_raw_parse(NULL, ext_callback, &mmsg, + 0); } assert(ret >= 0); } @@ -161,15 +161,14 @@ static void client(int fd) gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); gnutls_transport_set_int(session, fd); - assert(gnutls_server_name_set - (session, GNUTLS_NAME_DNS, HOSTNAME, strlen(HOSTNAME)) >= 0); + assert(gnutls_server_name_set(session, GNUTLS_NAME_DNS, HOSTNAME, + strlen(HOSTNAME)) >= 0); /* Perform the TLS handshake */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret == GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM) { /* success */ @@ -185,12 +184,12 @@ static void client(int fd) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); @@ -251,15 +250,15 @@ static void server(int fd) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); assert(found_server_name != 0); assert(found_status_req != 0); gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); gnutls_deinit(session); @@ -321,4 +320,4 @@ void doit(void) start(1); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/gnutls_ext_raw_parse_dtls.c b/tests/gnutls_ext_raw_parse_dtls.c index 2b0abc876d..144baeb4a5 100644 --- a/tests/gnutls_ext_raw_parse_dtls.c +++ b/tests/gnutls_ext_raw_parse_dtls.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,27 +35,27 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "utils.h" -# include "cert-common.h" -# include "tls13/ext-parse.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "utils.h" +#include "cert-common.h" +#include "tls13/ext-parse.h" /* This program tests gnutls_ext_raw_parse with GNUTLS_EXT_RAW_FLAG_TLS_CLIENT_HELLO * flag. */ -# define HOSTNAME "example.com" +#define HOSTNAME "example.com" static void server_log_func(int level, const char *str) { @@ -73,7 +73,7 @@ static unsigned found_status_req = 0; static int ext_callback(void *ctx, unsigned tls_id, const unsigned char *data, unsigned size) { - if (tls_id == 0) { /* server name */ + if (tls_id == 0) { /* server name */ /* very interesting extension, 4 bytes of sizes * and 1 byte of type. */ unsigned esize = (data[0] << 8) | data[1]; @@ -105,14 +105,14 @@ static int ext_callback(void *ctx, unsigned tls_id, const unsigned char *data, static int handshake_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { int ret; if (htype == GNUTLS_HANDSHAKE_CLIENT_HELLO && post) { - ret = - gnutls_ext_raw_parse(NULL, ext_callback, msg, - GNUTLS_EXT_RAW_FLAG_DTLS_CLIENT_HELLO); + ret = gnutls_ext_raw_parse( + NULL, ext_callback, msg, + GNUTLS_EXT_RAW_FLAG_DTLS_CLIENT_HELLO); assert(ret >= 0); } @@ -139,21 +139,20 @@ static void client(int fd) gnutls_init(&session, GNUTLS_CLIENT | GNUTLS_DATAGRAM); gnutls_handshake_set_timeout(session, get_timeout()); - assert(gnutls_priority_set_direct - (session, "NORMAL:-VERS-ALL:+VERS-DTLS1.2", NULL) >= 0); + assert(gnutls_priority_set_direct( + session, "NORMAL:-VERS-ALL:+VERS-DTLS1.2", NULL) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); gnutls_transport_set_int(session, fd); - assert(gnutls_server_name_set - (session, GNUTLS_NAME_DNS, HOSTNAME, strlen(HOSTNAME)) >= 0); + assert(gnutls_server_name_set(session, GNUTLS_NAME_DNS, HOSTNAME, + strlen(HOSTNAME)) >= 0); /* Perform the TLS handshake */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret == GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM) { /* success */ @@ -169,12 +168,12 @@ static void client(int fd) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); @@ -212,8 +211,8 @@ static void server(int fd) GNUTLS_HOOK_POST, handshake_callback); - assert(gnutls_priority_set_direct - (session, "NORMAL:-VERS-ALL:+VERS-DTLS1.2", NULL) >= 0); + assert(gnutls_priority_set_direct( + session, "NORMAL:-VERS-ALL:+VERS-DTLS1.2", NULL) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -232,15 +231,15 @@ static void server(int fd) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); assert(found_server_name != 0); assert(found_status_req != 0); gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); gnutls_deinit(session); @@ -294,4 +293,4 @@ void doit(void) return; } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/gnutls_hmac_fast.c b/tests/gnutls_hmac_fast.c index 2a0b75cf17..89bff56a19 100644 --- a/tests/gnutls_hmac_fast.c +++ b/tests/gnutls_hmac_fast.c @@ -18,7 +18,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -42,13 +42,13 @@ void doit(void) if (debug) gnutls_global_set_log_level(4711); - err = - gnutls_hmac_fast(GNUTLS_MAC_SHA1, "keykeykey", 9, "abcdefgh", - 8, digest); + err = gnutls_hmac_fast(GNUTLS_MAC_SHA1, "keykeykey", 9, "abcdefgh", 8, + digest); if (err < 0) fail("gnutls_hmac_fast(SHA1) failed: %d\n", err); else { - if (memcmp(digest, "\x58\x93\x7a\x58\xfe\xea\x82\xf8" + if (memcmp(digest, + "\x58\x93\x7a\x58\xfe\xea\x82\xf8" "\x0e\x64\x62\x01\x40\x2b\x2c\xed\x5d\x54\xc1\xfa", 20) == 0) { if (debug) @@ -64,14 +64,15 @@ void doit(void) gnutls_fips140_set_mode(GNUTLS_FIPS140_LOG, 0); } - err = - gnutls_hmac_fast(GNUTLS_MAC_MD5, "keykeykey", 9, "abcdefgh", 8, - digest); + err = gnutls_hmac_fast(GNUTLS_MAC_MD5, "keykeykey", 9, "abcdefgh", 8, + digest); if (err < 0) fail("gnutls_hmac_fast(MD5) failed: %d\n", err); else { - if (memcmp(digest, "\x3c\xb0\x9d\x83\x28\x01\xef\xc0" - "\x7b\xb3\xaf\x42\x69\xe5\x93\x9a", 16) == 0) { + if (memcmp(digest, + "\x3c\xb0\x9d\x83\x28\x01\xef\xc0" + "\x7b\xb3\xaf\x42\x69\xe5\x93\x9a", + 16) == 0) { if (debug) success("gnutls_hmac_fast(MD5) OK\n"); } else { @@ -80,9 +81,8 @@ void doit(void) } } - err = - gnutls_hmac_fast(GNUTLS_MAC_AES_GMAC_128, "keykeykeykeykeyk", 16, - "abcdefghabc", 8, digest); + err = gnutls_hmac_fast(GNUTLS_MAC_AES_GMAC_128, "keykeykeykeykeyk", 16, + "abcdefghabc", 8, digest); if (err >= 0) fail("gnutls_hmac_fast(GMAC-128) succeeded unexpectedly: %d\n", err); @@ -91,10 +91,9 @@ void doit(void) else if (debug) success("gnutls_hmac_fast(GMAC-128) OK\n"); - err = - gnutls_hmac_fast(GNUTLS_MAC_AES_GMAC_192, - "keykeykeykeykeykeykeykey", 24, "abcdefghabc", 8, - digest); + err = gnutls_hmac_fast(GNUTLS_MAC_AES_GMAC_192, + "keykeykeykeykeykeykeykey", 24, "abcdefghabc", 8, + digest); if (err >= 0) fail("gnutls_hmac_fast(GMAC-192) succeeded unexpectedly: %d\n", err); @@ -103,10 +102,9 @@ void doit(void) else if (debug) success("gnutls_hmac_fast(GMAC-192) OK\n"); - err = - gnutls_hmac_fast(GNUTLS_MAC_AES_GMAC_256, - "keykeykeykeykeykeykeykeykeykeyke", 32, - "abcdefghabc", 8, digest); + err = gnutls_hmac_fast(GNUTLS_MAC_AES_GMAC_256, + "keykeykeykeykeykeykeykeykeykeyke", 32, + "abcdefghabc", 8, digest); if (err >= 0) fail("gnutls_hmac_fast(GMAC-256) succeeded unexpectedly: %d\n", err); @@ -115,9 +113,8 @@ void doit(void) else if (debug) success("gnutls_hmac_fast(GMAC-256) OK\n"); - err = - gnutls_hmac_fast(GNUTLS_MAC_UMAC_96, "keykeykeykeykeyk", 16, - "abcdefghabc", 8, digest); + err = gnutls_hmac_fast(GNUTLS_MAC_UMAC_96, "keykeykeykeykeyk", 16, + "abcdefghabc", 8, digest); if (err >= 0) fail("gnutls_hmac_fast(UMAC-96) succeeded unexpectedly: %d\n", err); @@ -126,9 +123,8 @@ void doit(void) else if (debug) success("gnutls_hmac_fast(UMAC-96) OK\n"); - err = - gnutls_hmac_fast(GNUTLS_MAC_UMAC_128, "keykeykeykeykeyk", 16, - "abcdefghabc", 8, digest); + err = gnutls_hmac_fast(GNUTLS_MAC_UMAC_128, "keykeykeykeykeyk", 16, + "abcdefghabc", 8, digest); if (err >= 0) fail("gnutls_hmac_fast(UMAC-128) succeeded unexpectedly: %d\n", err); diff --git a/tests/gnutls_ktls.c b/tests/gnutls_ktls.c index 13d6dace5c..0103a51a2b 100644 --- a/tests/gnutls_ktls.c +++ b/tests/gnutls_ktls.c @@ -1,5 +1,5 @@ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -14,23 +14,23 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "cert-common.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cert-common.h" +#include "utils.h" static void server_log_func(int level, const char *str) { @@ -42,8 +42,8 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define MAX_BUF 1024 -# define MSG "Hello world!" +#define MAX_BUF 1024 +#define MSG "Hello world!" static void client(int fd, const char *prio) { @@ -72,8 +72,7 @@ static void client(int fd, const char *prio) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -92,8 +91,7 @@ static void client(int fd, const char *prio) memset(buffer, 0, sizeof(buffer)); do { ret = gnutls_record_recv(session, buffer, sizeof(buffer)); - } - while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); + } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret == 0) { success("client: Peer has closed the TLS connection\n"); @@ -115,8 +113,7 @@ static void client(int fd, const char *prio) memset(buffer, 0, sizeof(buffer)); do { ret = gnutls_record_recv(session, buffer, sizeof(buffer)); - } - while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); + } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret == 0) { success("client: Peer has closed the TLS connection\n"); @@ -141,7 +138,7 @@ static void client(int fd, const char *prio) } ret = 0; - end: +end: close(fd); @@ -177,9 +174,8 @@ static void server(int fd, const char *prio) } gnutls_certificate_allocate_credentials(&x509_cred); - ret = gnutls_certificate_set_x509_key_mem(x509_cred, &server_cert, - &server_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + x509_cred, &server_cert, &server_key, GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -194,8 +190,7 @@ static void server(int fd, const char *prio) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("server: Handshake has failed (%s)\n\n", @@ -242,8 +237,8 @@ static void server(int fd, const char *prio) } do { - ret = - gnutls_record_send_file(session, fileno(fp), &offset, 512); + ret = gnutls_record_send_file(session, fileno(fp), &offset, + 512); } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) { @@ -258,7 +253,7 @@ static void server(int fd, const char *prio) gnutls_strerror(ret)); ret = 0; - end: +end: close(fd); gnutls_deinit(session); @@ -360,4 +355,4 @@ void doit(void) run("NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+CHACHA20-POLY1305"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/gnutls_ocsp_resp_list_import2.c b/tests/gnutls_ocsp_resp_list_import2.c index 787496e7bc..258002db4b 100644 --- a/tests/gnutls_ocsp_resp_list_import2.c +++ b/tests/gnutls_ocsp_resp_list_import2.c @@ -22,7 +22,7 @@ /* This tests key import for gnutls_ocsp_resp_t APIs */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,12 +35,11 @@ #include "ocsp-common.h" #include "utils.h" -#define testfail(fmt, ...) \ - fail("%s: "fmt, name, ##__VA_ARGS__) +#define testfail(fmt, ...) fail("%s: " fmt, name, ##__VA_ARGS__) -static void load_list(const char *name, const gnutls_datum_t * txt, - unsigned int nocsps, - int format, unsigned flags, int exp_err) +static void load_list(const char *name, const gnutls_datum_t *txt, + unsigned int nocsps, int format, unsigned flags, + int exp_err) { gnutls_ocsp_resp_t *ocsps; unsigned int i, size; @@ -75,172 +74,168 @@ typedef struct test_st { } test_st; static const char long_chain_pem[] = - "-----BEGIN OCSP RESPONSE-----\n" - "MIICOgoBAKCCAjMwggIvBgkrBgEFBQcwAQEEggIgMIICHDCBhaEUMBIxEDAOBgNV\n" - "BAMTB3N1YkNBLTMYDzIwMTcxMDE4MTIyMDQ5WjBcMFowRTAJBgUrDgMCGgUABBSy\n" - "5lyOboNLvRHZl/o2k1merVwVxAQUnpHsjKokWyLg6BHo6aSRtZEmAPECDFejHTI3\n" - "ZFj6e1Jv14IAGA8yMDE3MTAxODEyMjA0OVowDQYJKoZIhvcNAQELBQADggGBAJg8\n" - "/9F2k7DdQsqMfU+f53gUHZAlZzRRPPYQfrmMGfSaMmr9W3fpCrLNMV4PWxGndTh7\n" - "AforaCwUb6+QyWlnE3B4UUQLphaEawnDJ/8GJZAnCIcjyxpWYZ4onEIZ6pN8BRQE\n" - "f8ccQN01xlB5RtdqsVmvxtoM0husO0YJDnsCwwFVXulPEFgWuFSoVLsx65lkc+4/\n" - "RM67+QrbNpBRgKrhb8MAE2WANjpjSAVSf5GWsH9T/F2HDG5crApFIoNywK9e21zk\n" - "qYAWQ6tVcps3QbvvIEXVy/jOqVASeaxuwHmkdBz4SNT83LvaNnJGBTKXTGukPKAO\n" - "t6xJpFLwrNWNhgfbw2fklWJSMzMtAEkjzBJi+4kn1SfLdcTLYBf9Tnoq1wsJhAMg\n" - "OFNzcWb8ZJxuGh7FXgytneM38sL8oTEmLKHfBRnWGOglfCMj3olvXpjotrIlKDAS\n" - "GbGElY+PZXUtkKiN2cNAecjIodzQFgL+YL6jWKLEuuWGT/MvRrliL83kGmKDdg==\n" - "-----END OCSP RESPONSE-----\n" - "-----BEGIN OCSP RESPONSE-----\n" - "MIICNwoBAKCCAjAwggIsBgkrBgEFBQcwAQEEggIdMIICGTCBgqERMA8xDTALBgNV\n" - "BAMTBENBLTMYDzIwMTcxMDE4MTIzODUyWjBcMFowRTAJBgUrDgMCGgUABBS3yg+r\n" - "3G+4sJZ6FayYCg8Z/qQS3gQUHoXtf55x+gidN0hDoBLv5arh44oCDFejHTI1s0/Q\n" - "ufXnPIIAGA8yMDE3MTAxODEyMzg1MlowDQYJKoZIhvcNAQELBQADggGBALMParB9\n" - "K97DlT4FmMdPScoT7oAAsar4XxKLU9+oraht7H+WTAYSpnCxh/ugR17G0jtzTzIw\n" - "nLQFAyR9MDYKp4Om4YqQ7r+43DiIqKVU25WcrVifUbtkR+LbjH+Bk1UHvFE8mCOX\n" - "ZB+cmQyjGap1RX0dnj2Wm48vUwqp71nA8AYcXL575xZ4rb9DDhaoV2h3S0Zlu4IN\n" - "btuDIVsxJ53kqkGjjVB4/R0RtqCXOI2ThMK3SfDWqwzF9tYA763VVXi+g+w3oyv4\n" - "ZtP8QUWOVUY4azpElX1wqoO8znUjxs1AzROLUeLPK8GMLVIZLP361J2kLgcj0Gdq\n" - "GIVH5N54p6bl5OgSUP3EdKbFRZyCVZ2n8Der3Cf9PtfvGV7Ze4Cv/CCN6rJkk54P\n" - "6auP6pEJg0ESGC5fop5HFCyVM+W/ot0A1cxN0+cHYlqB1NQholLqe3psDjJ2EoIK\n" - "LtN5dRLO6z5L74CwwiJ1SeLh8XyJtr/ee9RnFB56XCzO7lyhbHPx/VT6Qw==\n" - "-----END OCSP RESPONSE-----\n" - "-----BEGIN OCSP RESPONSE-----\n" - "MIIGUwoBAKCCBkwwggZIBgkrBgEFBQcwAQEEggY5MIIGNTCBhaEUMBIxEDAOBgNV\n" - "BAMTB3N1YkNBLTMYDzIwMTcxMDE4MTIwOTMwWjBcMFowRTAJBgUrDgMCGgUABBSy\n" - "5lyOboNLvRHZl/o2k1merVwVxAQUnpHsjKokWyLg6BHo6aSRtZEmAPECDFejHTI2\n" - "yAyhyrC99oIAGA8yMDE3MTAxODEyMDkzMFowDQYJKoZIhvcNAQENBQADggGBAFZk\n" - "KxCq5yZ/8X+Glw4YtHWSZRIrRp8+lpjkqxDRDuoI4qUBdaRbdqxJK57xSvJ5Ok4V\n" - "gf9N02WOrkq7MzWLD7ZdMu/14SW/vVIdmfI04Ps4NGya71OykMb7daCMvGuO2N4z\n" - "5G/yrfKiT8JYR+JobTo6swqCPaSFAFg+ADWdax//n66wmuLHDpqzfFLp2lBXNXJx\n" - "gafAQCjqK84JRx2xgEFZ9l3TPOoR2BO5DzJqKXK+wcMbtUxNDaHV8MTsxVqTQXoB\n" - "JLN6cYKjxghCkQ5r54YLr77fB1qMNfhffy9gBN0q8g3AHG+gMICkNYPTw8w1Rjbr\n" - "6bE8CI/MXcrZrz7UWLuQXe8BnNk+Vn7PE6oRxCLSoJ8b6fB4cDvMIX1rRpc/Owxb\n" - "j6gockpBTebdLr3xpB6iopRurTPCVtMpz3VeNVnrB3gjCyBO62ErRncKn6RXqEVF\n" - "bo+01Zz8hHjDgtm2p9V24CMJK5p8fLVthJ0fRwyc1oYr3fT6l+dy50JSdOhNAaCC\n" - "BBUwggQRMIIEDTCCAnWgAwIBAgIMV6MdMjWzT9C59ec8MA0GCSqGSIb3DQEBCwUA\n" - "MA8xDTALBgNVBAMTBENBLTMwIBcNMTYwNTEwMDg0ODMwWhgPOTk5OTEyMzEyMzU5\n" - "NTlaMBIxEDAOBgNVBAMTB3N1YkNBLTMwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAw\n" - "ggGKAoIBgQCgOcNXzStOnRFoi05aMRLeMB45X4a2srSBul3ULxDSGjIP0EEl//X2\n" - "WLiope/xNL8bPCRpI1sSVXl8Hb1cK3qWNGazVmC7xW07NxL26I86e3/BVRnq8ioV\n" - "tvPQwEpvuI8F97x1vL/n+cfcdkN77NScr5C9jHMVioRvC+qKz9bUBx5DSySV66PR\n" - "5+wGsJDvkfsmjVOgqiTlSWQS5G3nMMq0Rixsc5dP5Wygkbdh9+45UCtObcnHABJr\n" - "P+GtLiG0AOUx6oPzPteZL13erWXg7zYusTarj9rTcdsgR/Im1mIzmD2i7GhJo4Gj\n" - "0Sk3Rq93JyeA+Ay5UPmqcm+dqX00b49MTTv4GtO53kLQSCXYFJ96jcMiXMzBFJD1\n" - "ROsdk4WUed/tJMHffttDz9j3WcuX9M2nzTT2xlauokjbEAhRDRw5fxCFZh7TbmaH\n" - "4vysDO9UZXVEXSLKonQ2Lmyso48s/G30VmlSjtPtJqRsv/oPpCO/c0D6BrkHV55B\n" - "48xfmyIFjgECAwEAAaNkMGIwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMD\n" - "BwYAMB0GA1UdDgQWBBQtMwQbJ3+UBHzH4zVP6SWklOG3oTAfBgNVHSMEGDAWgBT5\n" - "qIYZY7akFBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAMii5Gx3/d/58\n" - "oDRy5a0oPvQhkU0dKa61NfjjOz9uqxNSilLJE7jGJPaG2tKtC/XU1Ybql2tqQY68\n" - "kogjKs31QC6RFkoZAFouTJt11kzbgVWKewCk3/OrA0/ZkRrAfE0Pma/NITRwTHmT\n" - "sQOdv/bzR+xIPhjKxKrKyJFMG5xb+Q0OKSbd8kDpgYWKob5x2jsNYgEDp8nYSRT4\n" - "5SGw7c7FcumkXz2nA6r5NwbnhELvNFK8fzsY+QJKHaAlJ9CclliP1PiiAcl2LQo2\n" - "gaygWNiD+ggnqzy7nqam9rieOOMHls1kKFAFrWy2g/cBhTfS+/7Shpex7NK2GAiu\n" - "jgUV0TZHEyEZt6um4gLS9vwUKs/R4XS9VL/bBlfAy2hAVTeUejiRBGeTJkqBu7+c\n" - "4FdrCByVhaeQASMYu/lga8eaGL1zJbJe2BQWI754KDYDT9qKNqGlgysr4AVje7z1\n" - "Y1MQ72SnfrzYSQw6BB85CurB6iou3Q+eM4o4g/+xGEuDo0Ne/8ir\n" - "-----END OCSP RESPONSE-----\n"; - -static const char bad_long_chain_pem[] = /* second response is broken */ - "-----BEGIN OCSP RESPONSE-----\n" - "MIICOgoBAKCCAjMwggIvBgkrBgEFBQcwAQEEggIgMIICHDCBhaEUMBIxEDAOBgNV\n" - "BAMTB3N1YkNBLTMYDzIwMTcxMDE4MTIyMDQ5WjBcMFowRTAJBgUrDgMCGgUABBSy\n" - "5lyOboNLvRHZl/o2k1merVwVxAQUnpHsjKokWyLg6BHo6aSRtZEmAPECDFejHTI3\n" - "ZFj6e1Jv14IAGA8yMDE3MTAxODEyMjA0OVowDQYJKoZIhvcNAQELBQADggGBAJg8\n" - "/9F2k7DdQsqMfU+f53gUHZAlZzRRPPYQfrmMGfSaMmr9W3fpCrLNMV4PWxGndTh7\n" - "AforaCwUb6+QyWlnE3B4UUQLphaEawnDJ/8GJZAnCIcjyxpWYZ4onEIZ6pN8BRQE\n" - "f8ccQN01xlB5RtdqsVmvxtoM0husO0YJDnsCwwFVXulPEFgWuFSoVLsx65lkc+4/\n" - "RM67+QrbNpBRgKrhb8MAE2WANjpjSAVSf5GWsH9T/F2HDG5crApFIoNywK9e21zk\n" - "qYAWQ6tVcps3QbvvIEXVy/jOqVASeaxuwHmkdBz4SNT83LvaNnJGBTKXTGukPKAO\n" - "t6xJpFLwrNWNhgfbw2fklWJSMzMtAEkjzBJi+4kn1SfLdcTLYBf9Tnoq1wsJhAMg\n" - "OFNzcWb8ZJxuGh7FXgytneM38sL8oTEmLKHfBRnWGOglfCMj3olvXpjotrIlKDAS\n" - "GbGElY+PZXUtkKiN2cNAecjIodzQFgL+YL6jWKLEuuWGT/MvRrliL83kGmKDdg==\n" - "-----END OCSP RESPONSE-----\n" - "-----BEGIN OCSP RESPONSE-----\n" - "MIICNwoBAKCCAjAwggIsBgkrBgEFBQcwAQEEggIdMIICGTCBgqERMA8xDTALBgNV\n" - "BAMTBENBLTMYDzIwMTcxMDE4MTIzODUyWjBcMFowRTAJBgUrDgMCGgUABBS3yg+r\n" - "3G+4sJZ6FayYCg8Z/qQS3gQUHoXtf55x+gidN0hDoBLv5arh44oCDFejHTI1s0/Q\n" - "ufXnPIIAGA8yMDE3MTAxODEyMzg1MlowDQYJKoZIhvcNAQELBQADggGBALMParB9\n" - "K97DlT4FmMdPScoT7oAAsar4XxKLU9+oraht7H+WTAYSpnCxh/ugR1fG0jtzTzIw\n" - "nLQFAyR9MDYKp4Om4YqQ7r+43DiIqKVU25WcrVifUbtkR+LbjH+Bk1UHvFE8mCOX\n" - "ZB+cmQyjGap1RX0dnj2Wm48vwwqp71nA8AYcXL575xZ4rb9DDhaoV2h3S0Zlu4IN\n" - "btuDIVsxJ53kqkGjjVB4/R0RtqCXOI2ThMK3SfDWqwzF9tYA763VVXi+g+w3oyv4\n" - "ZtP8QUWOVUY4azpzlX1wqoO8znUjxs1AzROLUeLPK8GMLVIZLP361J2kLgcj0Gdq\n" - "GIVH5N54p6bl5OgSUP3EdKbFRZyCVZ2n8Der3Cf9PtfvGV7Ze4Cv/CCN6rJkk54P\n" - "6auP6pEJg0ESGC5fop5HFCyVM+W/ot0A1cxN0+cHYlqB1NQholLqe3psDjJ2EoIK\n" - "LtN5dRLO6z5L74CwwiJ1SeLh8XyJtr/ee9RnFB56XCzO7lyhbHPx/VT6Qw==\n" - "-----END OCSP RESPONSE-----\n" - "-----BEGIN OCSP RESPONSE-----\n" - "MIIGUwoBAKCCBkwwggZIBgkrBgEFBQcwAQEEggY5MIIGNTCBhaEUMBIxEDAOBgNV\n" - "BAMTB3N1YkNBLTMYDzIwMTcxMDE4MTIwOTMwWjBcMFowRTAJBgUrDgMCGgUABBSy\n" - "5lyOboNLvRHZl/o2k1merVwVxAQUnpHsjKokWyLg6BHo6aSRtZEmAPECDFejHTI2\n" - "yAyhyrC99oIAGA8yMDE3MTAxODEyMDkzMFowDQYJKoZIhvcNAQENBQADggGBAFZk\n" - "KxCq5yZ/8X+Glw4YtHWSZRIrRp8+lpjkqxDRDuoI4qUBdaRbdqxJK57xSvJ5Ok4V\n" - "gf9N02WOrkq7MzWLD7ZdMu/14SW/vVIdmfI04Ps4NGya71OykMb7daCMvGuO2N4z\n" - "5G/yrfKiT8JYR+JobTo6swqCPaSFAFg+ADWdax//n66wmuLHDpqzfFLp2lBXNXJx\n" - "gafAQCjqK84JRx2xgEFZ9l3TPOoR2BO5DzJqKXK+wcMbtUxNDaHV8MTsxVqTQXoB\n" - "JLN6cYKjxghCkQ5r54YLr77fB1qMNfhffy9gBN0q8g3AHG+gMICkNYPTw8w1Rjbr\n" - "6bE8CI/MXcrZrz7UWLuQXe8BnNk+Vn7PE6oRxCLSoJ8b6fB4cDvMIX1rRpc/Owxb\n" - "j6gockpBTebdLr3xpB6iopRurTPCVtMpz3VeNVnrB3gjCyBO62ErRncKn6RXqEVF\n" - "bo+01Zz8hHjDgtm2p9V24CMJK5p8fLVthJ0fRwyc1oYr3fT6l+dy50JSdOhNAaCC\n" - "BBUwggQRMIIEDTCCAnWgAwIBAgIMV6MdMjWzT9C59ec8MA0GCSqGSIb3DQEBCwUA\n" - "MA8xDTALBgNVBAMTBENBLTMwIBcNMTYwNTEwMDg0ODMwWhgPOTk5OTEyMzEyMzU5\n" - "NTlaMBIxEDAOBgNVBAMTB3N1YkNBLTMwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAw\n" - "ggGKAoIBgQCgOcNXzStOnRFoi05aMRLeMB45X4a2srSBul3ULxDSGjIP0EEl//X2\n" - "WLiope/xNL8bPCRpI1sSVXl8Hb1cK3qWNGazVmC7xW07NxL26I86e3/BVRnq8ioV\n" - "tvPQwEpvuI8F97x1vL/n+cfcdkN77NScr5C9jHMVioRvC+qKz9bUBx5DSySV66PR\n" - "5+wGsJDvkfsmjVOgqiTlSWQS5G3nMMq0Rixsc5dP5Wygkbdh9+45UCtObcnHABJr\n" - "P+GtLiG0AOUx6oPzPteZL13erWXg7zYusTarj9rTcdsgR/Im1mIzmD2i7GhJo4Gj\n" - "0Sk3Rq93JyeA+Ay5UPmqcm+dqX00b49MTTv4GtO53kLQSCXYFJ96jcMiXMzBFJD1\n" - "ROsdk4WUed/tJMHffttDz9j3WcuX9M2nzTT2xlauokjbEAhRDRw5fxCFZh7TbmaH\n" - "4vysDO9UZXVEXSLKonQ2Lmyso48s/G30VmlSjtPtJqRsv/oPpCO/c0D6BrkHV55B\n" - "48xfmyIFjgECAwEAAaNkMGIwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMD\n" - "BwYAMB0GA1UdDgQWBBQtMwQbJ3+UBHzH4zVP6SWklOG3oTAfBgNVHSMEGDAWgBT5\n" - "qIYZY7akFBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAMii5Gx3/d/58\n" - "oDRy5a0oPvQhkU0dKa61NfjjOz9uqxNSilLJE7jGJPaG2tKtC/XU1Ybql2tqQY68\n" - "kogjKs31QC6RFkoZAFouTJt11kzbgVWKewCk3/OrA0/ZkRrAfE0Pma/NITRwTHmT\n" - "sQOdv/bzR+xIPhjKxKrKyJFMG5xb+Q0OKSbd8kDpgYWKob5x2jsNYgEDp8nYSRT4\n" - "5SGw7c7FcumkXz2nA6r5NwbnhELvNFK8fzsY+QJKHaAlJ9CclliP1PiiAcl2LQo2\n" - "gaygWNiD+ggnqzy7nqam9rieOOMHls1kKFAFrWy2g/cBhTfS+/7Shpex7NK2GAiu\n" - "jgUV0TZHEyEZt6um4gLS9vwUKs/R4XS9VL/bBlfAy2hAVTeUejiRBGeTJkqBu7+c\n" - "4FdrCByVhaeQASMYu/lga8eaGL1zJbJe2BQWI754KDYDT9qKNqGlgysr4AVje7z1\n" - "Y1MQ72SnfrzYSQw6BB85CurB6iou3Q+eM4o4g/+xGEuDo0Ne/8ir\n" - "-----END OCSP RESPONSE-----\n"; - -static const gnutls_datum_t long_chain = { - (void *)long_chain_pem, sizeof(long_chain_pem) - 1 -}; - -static const gnutls_datum_t bad_long_chain = { - (void *)bad_long_chain_pem, sizeof(bad_long_chain_pem) - 1 -}; - -static const gnutls_datum_t no_chain = { - (void *)" ", 1 -}; + "-----BEGIN OCSP RESPONSE-----\n" + "MIICOgoBAKCCAjMwggIvBgkrBgEFBQcwAQEEggIgMIICHDCBhaEUMBIxEDAOBgNV\n" + "BAMTB3N1YkNBLTMYDzIwMTcxMDE4MTIyMDQ5WjBcMFowRTAJBgUrDgMCGgUABBSy\n" + "5lyOboNLvRHZl/o2k1merVwVxAQUnpHsjKokWyLg6BHo6aSRtZEmAPECDFejHTI3\n" + "ZFj6e1Jv14IAGA8yMDE3MTAxODEyMjA0OVowDQYJKoZIhvcNAQELBQADggGBAJg8\n" + "/9F2k7DdQsqMfU+f53gUHZAlZzRRPPYQfrmMGfSaMmr9W3fpCrLNMV4PWxGndTh7\n" + "AforaCwUb6+QyWlnE3B4UUQLphaEawnDJ/8GJZAnCIcjyxpWYZ4onEIZ6pN8BRQE\n" + "f8ccQN01xlB5RtdqsVmvxtoM0husO0YJDnsCwwFVXulPEFgWuFSoVLsx65lkc+4/\n" + "RM67+QrbNpBRgKrhb8MAE2WANjpjSAVSf5GWsH9T/F2HDG5crApFIoNywK9e21zk\n" + "qYAWQ6tVcps3QbvvIEXVy/jOqVASeaxuwHmkdBz4SNT83LvaNnJGBTKXTGukPKAO\n" + "t6xJpFLwrNWNhgfbw2fklWJSMzMtAEkjzBJi+4kn1SfLdcTLYBf9Tnoq1wsJhAMg\n" + "OFNzcWb8ZJxuGh7FXgytneM38sL8oTEmLKHfBRnWGOglfCMj3olvXpjotrIlKDAS\n" + "GbGElY+PZXUtkKiN2cNAecjIodzQFgL+YL6jWKLEuuWGT/MvRrliL83kGmKDdg==\n" + "-----END OCSP RESPONSE-----\n" + "-----BEGIN OCSP RESPONSE-----\n" + "MIICNwoBAKCCAjAwggIsBgkrBgEFBQcwAQEEggIdMIICGTCBgqERMA8xDTALBgNV\n" + "BAMTBENBLTMYDzIwMTcxMDE4MTIzODUyWjBcMFowRTAJBgUrDgMCGgUABBS3yg+r\n" + "3G+4sJZ6FayYCg8Z/qQS3gQUHoXtf55x+gidN0hDoBLv5arh44oCDFejHTI1s0/Q\n" + "ufXnPIIAGA8yMDE3MTAxODEyMzg1MlowDQYJKoZIhvcNAQELBQADggGBALMParB9\n" + "K97DlT4FmMdPScoT7oAAsar4XxKLU9+oraht7H+WTAYSpnCxh/ugR17G0jtzTzIw\n" + "nLQFAyR9MDYKp4Om4YqQ7r+43DiIqKVU25WcrVifUbtkR+LbjH+Bk1UHvFE8mCOX\n" + "ZB+cmQyjGap1RX0dnj2Wm48vUwqp71nA8AYcXL575xZ4rb9DDhaoV2h3S0Zlu4IN\n" + "btuDIVsxJ53kqkGjjVB4/R0RtqCXOI2ThMK3SfDWqwzF9tYA763VVXi+g+w3oyv4\n" + "ZtP8QUWOVUY4azpElX1wqoO8znUjxs1AzROLUeLPK8GMLVIZLP361J2kLgcj0Gdq\n" + "GIVH5N54p6bl5OgSUP3EdKbFRZyCVZ2n8Der3Cf9PtfvGV7Ze4Cv/CCN6rJkk54P\n" + "6auP6pEJg0ESGC5fop5HFCyVM+W/ot0A1cxN0+cHYlqB1NQholLqe3psDjJ2EoIK\n" + "LtN5dRLO6z5L74CwwiJ1SeLh8XyJtr/ee9RnFB56XCzO7lyhbHPx/VT6Qw==\n" + "-----END OCSP RESPONSE-----\n" + "-----BEGIN OCSP RESPONSE-----\n" + "MIIGUwoBAKCCBkwwggZIBgkrBgEFBQcwAQEEggY5MIIGNTCBhaEUMBIxEDAOBgNV\n" + "BAMTB3N1YkNBLTMYDzIwMTcxMDE4MTIwOTMwWjBcMFowRTAJBgUrDgMCGgUABBSy\n" + "5lyOboNLvRHZl/o2k1merVwVxAQUnpHsjKokWyLg6BHo6aSRtZEmAPECDFejHTI2\n" + "yAyhyrC99oIAGA8yMDE3MTAxODEyMDkzMFowDQYJKoZIhvcNAQENBQADggGBAFZk\n" + "KxCq5yZ/8X+Glw4YtHWSZRIrRp8+lpjkqxDRDuoI4qUBdaRbdqxJK57xSvJ5Ok4V\n" + "gf9N02WOrkq7MzWLD7ZdMu/14SW/vVIdmfI04Ps4NGya71OykMb7daCMvGuO2N4z\n" + "5G/yrfKiT8JYR+JobTo6swqCPaSFAFg+ADWdax//n66wmuLHDpqzfFLp2lBXNXJx\n" + "gafAQCjqK84JRx2xgEFZ9l3TPOoR2BO5DzJqKXK+wcMbtUxNDaHV8MTsxVqTQXoB\n" + "JLN6cYKjxghCkQ5r54YLr77fB1qMNfhffy9gBN0q8g3AHG+gMICkNYPTw8w1Rjbr\n" + "6bE8CI/MXcrZrz7UWLuQXe8BnNk+Vn7PE6oRxCLSoJ8b6fB4cDvMIX1rRpc/Owxb\n" + "j6gockpBTebdLr3xpB6iopRurTPCVtMpz3VeNVnrB3gjCyBO62ErRncKn6RXqEVF\n" + "bo+01Zz8hHjDgtm2p9V24CMJK5p8fLVthJ0fRwyc1oYr3fT6l+dy50JSdOhNAaCC\n" + "BBUwggQRMIIEDTCCAnWgAwIBAgIMV6MdMjWzT9C59ec8MA0GCSqGSIb3DQEBCwUA\n" + "MA8xDTALBgNVBAMTBENBLTMwIBcNMTYwNTEwMDg0ODMwWhgPOTk5OTEyMzEyMzU5\n" + "NTlaMBIxEDAOBgNVBAMTB3N1YkNBLTMwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAw\n" + "ggGKAoIBgQCgOcNXzStOnRFoi05aMRLeMB45X4a2srSBul3ULxDSGjIP0EEl//X2\n" + "WLiope/xNL8bPCRpI1sSVXl8Hb1cK3qWNGazVmC7xW07NxL26I86e3/BVRnq8ioV\n" + "tvPQwEpvuI8F97x1vL/n+cfcdkN77NScr5C9jHMVioRvC+qKz9bUBx5DSySV66PR\n" + "5+wGsJDvkfsmjVOgqiTlSWQS5G3nMMq0Rixsc5dP5Wygkbdh9+45UCtObcnHABJr\n" + "P+GtLiG0AOUx6oPzPteZL13erWXg7zYusTarj9rTcdsgR/Im1mIzmD2i7GhJo4Gj\n" + "0Sk3Rq93JyeA+Ay5UPmqcm+dqX00b49MTTv4GtO53kLQSCXYFJ96jcMiXMzBFJD1\n" + "ROsdk4WUed/tJMHffttDz9j3WcuX9M2nzTT2xlauokjbEAhRDRw5fxCFZh7TbmaH\n" + "4vysDO9UZXVEXSLKonQ2Lmyso48s/G30VmlSjtPtJqRsv/oPpCO/c0D6BrkHV55B\n" + "48xfmyIFjgECAwEAAaNkMGIwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMD\n" + "BwYAMB0GA1UdDgQWBBQtMwQbJ3+UBHzH4zVP6SWklOG3oTAfBgNVHSMEGDAWgBT5\n" + "qIYZY7akFBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAMii5Gx3/d/58\n" + "oDRy5a0oPvQhkU0dKa61NfjjOz9uqxNSilLJE7jGJPaG2tKtC/XU1Ybql2tqQY68\n" + "kogjKs31QC6RFkoZAFouTJt11kzbgVWKewCk3/OrA0/ZkRrAfE0Pma/NITRwTHmT\n" + "sQOdv/bzR+xIPhjKxKrKyJFMG5xb+Q0OKSbd8kDpgYWKob5x2jsNYgEDp8nYSRT4\n" + "5SGw7c7FcumkXz2nA6r5NwbnhELvNFK8fzsY+QJKHaAlJ9CclliP1PiiAcl2LQo2\n" + "gaygWNiD+ggnqzy7nqam9rieOOMHls1kKFAFrWy2g/cBhTfS+/7Shpex7NK2GAiu\n" + "jgUV0TZHEyEZt6um4gLS9vwUKs/R4XS9VL/bBlfAy2hAVTeUejiRBGeTJkqBu7+c\n" + "4FdrCByVhaeQASMYu/lga8eaGL1zJbJe2BQWI754KDYDT9qKNqGlgysr4AVje7z1\n" + "Y1MQ72SnfrzYSQw6BB85CurB6iou3Q+eM4o4g/+xGEuDo0Ne/8ir\n" + "-----END OCSP RESPONSE-----\n"; + +static const char bad_long_chain_pem[] = /* second response is broken */ + "-----BEGIN OCSP RESPONSE-----\n" + "MIICOgoBAKCCAjMwggIvBgkrBgEFBQcwAQEEggIgMIICHDCBhaEUMBIxEDAOBgNV\n" + "BAMTB3N1YkNBLTMYDzIwMTcxMDE4MTIyMDQ5WjBcMFowRTAJBgUrDgMCGgUABBSy\n" + "5lyOboNLvRHZl/o2k1merVwVxAQUnpHsjKokWyLg6BHo6aSRtZEmAPECDFejHTI3\n" + "ZFj6e1Jv14IAGA8yMDE3MTAxODEyMjA0OVowDQYJKoZIhvcNAQELBQADggGBAJg8\n" + "/9F2k7DdQsqMfU+f53gUHZAlZzRRPPYQfrmMGfSaMmr9W3fpCrLNMV4PWxGndTh7\n" + "AforaCwUb6+QyWlnE3B4UUQLphaEawnDJ/8GJZAnCIcjyxpWYZ4onEIZ6pN8BRQE\n" + "f8ccQN01xlB5RtdqsVmvxtoM0husO0YJDnsCwwFVXulPEFgWuFSoVLsx65lkc+4/\n" + "RM67+QrbNpBRgKrhb8MAE2WANjpjSAVSf5GWsH9T/F2HDG5crApFIoNywK9e21zk\n" + "qYAWQ6tVcps3QbvvIEXVy/jOqVASeaxuwHmkdBz4SNT83LvaNnJGBTKXTGukPKAO\n" + "t6xJpFLwrNWNhgfbw2fklWJSMzMtAEkjzBJi+4kn1SfLdcTLYBf9Tnoq1wsJhAMg\n" + "OFNzcWb8ZJxuGh7FXgytneM38sL8oTEmLKHfBRnWGOglfCMj3olvXpjotrIlKDAS\n" + "GbGElY+PZXUtkKiN2cNAecjIodzQFgL+YL6jWKLEuuWGT/MvRrliL83kGmKDdg==\n" + "-----END OCSP RESPONSE-----\n" + "-----BEGIN OCSP RESPONSE-----\n" + "MIICNwoBAKCCAjAwggIsBgkrBgEFBQcwAQEEggIdMIICGTCBgqERMA8xDTALBgNV\n" + "BAMTBENBLTMYDzIwMTcxMDE4MTIzODUyWjBcMFowRTAJBgUrDgMCGgUABBS3yg+r\n" + "3G+4sJZ6FayYCg8Z/qQS3gQUHoXtf55x+gidN0hDoBLv5arh44oCDFejHTI1s0/Q\n" + "ufXnPIIAGA8yMDE3MTAxODEyMzg1MlowDQYJKoZIhvcNAQELBQADggGBALMParB9\n" + "K97DlT4FmMdPScoT7oAAsar4XxKLU9+oraht7H+WTAYSpnCxh/ugR1fG0jtzTzIw\n" + "nLQFAyR9MDYKp4Om4YqQ7r+43DiIqKVU25WcrVifUbtkR+LbjH+Bk1UHvFE8mCOX\n" + "ZB+cmQyjGap1RX0dnj2Wm48vwwqp71nA8AYcXL575xZ4rb9DDhaoV2h3S0Zlu4IN\n" + "btuDIVsxJ53kqkGjjVB4/R0RtqCXOI2ThMK3SfDWqwzF9tYA763VVXi+g+w3oyv4\n" + "ZtP8QUWOVUY4azpzlX1wqoO8znUjxs1AzROLUeLPK8GMLVIZLP361J2kLgcj0Gdq\n" + "GIVH5N54p6bl5OgSUP3EdKbFRZyCVZ2n8Der3Cf9PtfvGV7Ze4Cv/CCN6rJkk54P\n" + "6auP6pEJg0ESGC5fop5HFCyVM+W/ot0A1cxN0+cHYlqB1NQholLqe3psDjJ2EoIK\n" + "LtN5dRLO6z5L74CwwiJ1SeLh8XyJtr/ee9RnFB56XCzO7lyhbHPx/VT6Qw==\n" + "-----END OCSP RESPONSE-----\n" + "-----BEGIN OCSP RESPONSE-----\n" + "MIIGUwoBAKCCBkwwggZIBgkrBgEFBQcwAQEEggY5MIIGNTCBhaEUMBIxEDAOBgNV\n" + "BAMTB3N1YkNBLTMYDzIwMTcxMDE4MTIwOTMwWjBcMFowRTAJBgUrDgMCGgUABBSy\n" + "5lyOboNLvRHZl/o2k1merVwVxAQUnpHsjKokWyLg6BHo6aSRtZEmAPECDFejHTI2\n" + "yAyhyrC99oIAGA8yMDE3MTAxODEyMDkzMFowDQYJKoZIhvcNAQENBQADggGBAFZk\n" + "KxCq5yZ/8X+Glw4YtHWSZRIrRp8+lpjkqxDRDuoI4qUBdaRbdqxJK57xSvJ5Ok4V\n" + "gf9N02WOrkq7MzWLD7ZdMu/14SW/vVIdmfI04Ps4NGya71OykMb7daCMvGuO2N4z\n" + "5G/yrfKiT8JYR+JobTo6swqCPaSFAFg+ADWdax//n66wmuLHDpqzfFLp2lBXNXJx\n" + "gafAQCjqK84JRx2xgEFZ9l3TPOoR2BO5DzJqKXK+wcMbtUxNDaHV8MTsxVqTQXoB\n" + "JLN6cYKjxghCkQ5r54YLr77fB1qMNfhffy9gBN0q8g3AHG+gMICkNYPTw8w1Rjbr\n" + "6bE8CI/MXcrZrz7UWLuQXe8BnNk+Vn7PE6oRxCLSoJ8b6fB4cDvMIX1rRpc/Owxb\n" + "j6gockpBTebdLr3xpB6iopRurTPCVtMpz3VeNVnrB3gjCyBO62ErRncKn6RXqEVF\n" + "bo+01Zz8hHjDgtm2p9V24CMJK5p8fLVthJ0fRwyc1oYr3fT6l+dy50JSdOhNAaCC\n" + "BBUwggQRMIIEDTCCAnWgAwIBAgIMV6MdMjWzT9C59ec8MA0GCSqGSIb3DQEBCwUA\n" + "MA8xDTALBgNVBAMTBENBLTMwIBcNMTYwNTEwMDg0ODMwWhgPOTk5OTEyMzEyMzU5\n" + "NTlaMBIxEDAOBgNVBAMTB3N1YkNBLTMwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAw\n" + "ggGKAoIBgQCgOcNXzStOnRFoi05aMRLeMB45X4a2srSBul3ULxDSGjIP0EEl//X2\n" + "WLiope/xNL8bPCRpI1sSVXl8Hb1cK3qWNGazVmC7xW07NxL26I86e3/BVRnq8ioV\n" + "tvPQwEpvuI8F97x1vL/n+cfcdkN77NScr5C9jHMVioRvC+qKz9bUBx5DSySV66PR\n" + "5+wGsJDvkfsmjVOgqiTlSWQS5G3nMMq0Rixsc5dP5Wygkbdh9+45UCtObcnHABJr\n" + "P+GtLiG0AOUx6oPzPteZL13erWXg7zYusTarj9rTcdsgR/Im1mIzmD2i7GhJo4Gj\n" + "0Sk3Rq93JyeA+Ay5UPmqcm+dqX00b49MTTv4GtO53kLQSCXYFJ96jcMiXMzBFJD1\n" + "ROsdk4WUed/tJMHffttDz9j3WcuX9M2nzTT2xlauokjbEAhRDRw5fxCFZh7TbmaH\n" + "4vysDO9UZXVEXSLKonQ2Lmyso48s/G30VmlSjtPtJqRsv/oPpCO/c0D6BrkHV55B\n" + "48xfmyIFjgECAwEAAaNkMGIwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMD\n" + "BwYAMB0GA1UdDgQWBBQtMwQbJ3+UBHzH4zVP6SWklOG3oTAfBgNVHSMEGDAWgBT5\n" + "qIYZY7akFBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAMii5Gx3/d/58\n" + "oDRy5a0oPvQhkU0dKa61NfjjOz9uqxNSilLJE7jGJPaG2tKtC/XU1Ybql2tqQY68\n" + "kogjKs31QC6RFkoZAFouTJt11kzbgVWKewCk3/OrA0/ZkRrAfE0Pma/NITRwTHmT\n" + "sQOdv/bzR+xIPhjKxKrKyJFMG5xb+Q0OKSbd8kDpgYWKob5x2jsNYgEDp8nYSRT4\n" + "5SGw7c7FcumkXz2nA6r5NwbnhELvNFK8fzsY+QJKHaAlJ9CclliP1PiiAcl2LQo2\n" + "gaygWNiD+ggnqzy7nqam9rieOOMHls1kKFAFrWy2g/cBhTfS+/7Shpex7NK2GAiu\n" + "jgUV0TZHEyEZt6um4gLS9vwUKs/R4XS9VL/bBlfAy2hAVTeUejiRBGeTJkqBu7+c\n" + "4FdrCByVhaeQASMYu/lga8eaGL1zJbJe2BQWI754KDYDT9qKNqGlgysr4AVje7z1\n" + "Y1MQ72SnfrzYSQw6BB85CurB6iou3Q+eM4o4g/+xGEuDo0Ne/8ir\n" + "-----END OCSP RESPONSE-----\n"; + +static const gnutls_datum_t long_chain = { (void *)long_chain_pem, + sizeof(long_chain_pem) - 1 }; + +static const gnutls_datum_t bad_long_chain = { (void *)bad_long_chain_pem, + sizeof(bad_long_chain_pem) - 1 }; + +static const gnutls_datum_t no_chain = { (void *)" ", 1 }; static const test_st tests[] = { - {.name = "load no ocsps", - .ocsps = &no_chain, - .nocsps = 0, - .flags = 0, - .format = GNUTLS_X509_FMT_PEM, - .exp_err = GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE}, - {.name = "load of 3 ocsps, with expected failure", - .ocsps = &bad_long_chain, - .nocsps = 3, - .flags = 0, - .format = GNUTLS_X509_FMT_PEM, - .exp_err = GNUTLS_E_ASN1_TAG_ERROR}, - {.name = "load 3 ocsps", - .ocsps = &long_chain, - .nocsps = 3, - .format = GNUTLS_X509_FMT_PEM, - .flags = 0}, - {.name = "load 1 DER ocsp", - .ocsps = &ocsp_subca3_unknown, - .nocsps = 1, - .format = GNUTLS_X509_FMT_DER, - .flags = 0} + { .name = "load no ocsps", + .ocsps = &no_chain, + .nocsps = 0, + .flags = 0, + .format = GNUTLS_X509_FMT_PEM, + .exp_err = GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE }, + { .name = "load of 3 ocsps, with expected failure", + .ocsps = &bad_long_chain, + .nocsps = 3, + .flags = 0, + .format = GNUTLS_X509_FMT_PEM, + .exp_err = GNUTLS_E_ASN1_TAG_ERROR }, + { .name = "load 3 ocsps", + .ocsps = &long_chain, + .nocsps = 3, + .format = GNUTLS_X509_FMT_PEM, + .flags = 0 }, + { .name = "load 1 DER ocsp", + .ocsps = &ocsp_subca3_unknown, + .nocsps = 1, + .format = GNUTLS_X509_FMT_DER, + .flags = 0 } }; void doit(void) diff --git a/tests/gnutls_record_overhead.c b/tests/gnutls_record_overhead.c index c5de442564..d6e4e23225 100644 --- a/tests/gnutls_record_overhead.c +++ b/tests/gnutls_record_overhead.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* This is a unit test of _gnutls_record_overhead. */ @@ -49,53 +49,54 @@ /* #pragma doesn't work to suppress preprocessor warnings like -Wunused-macros. * So we just use the above defined macros here. */ -#if defined _gnutls_debug_log && defined gnutls_assert && defined gnutls_assert_val -# include "../lib/algorithms.h" +#if defined _gnutls_debug_log && defined gnutls_assert && \ + defined gnutls_assert_val +#include "../lib/algorithms.h" #endif -unsigned _gnutls_record_overhead(const version_entry_st * ver, - const cipher_entry_st * cipher, - const mac_entry_st * mac, unsigned max); +unsigned _gnutls_record_overhead(const version_entry_st *ver, + const cipher_entry_st *cipher, + const mac_entry_st *mac, unsigned max); -#define OVERHEAD(v, c, m) \ - _gnutls_record_overhead(version_to_entry(v), cipher_to_entry(c), mac_to_entry(m), \ - 0) +#define OVERHEAD(v, c, m) \ + _gnutls_record_overhead(version_to_entry(v), cipher_to_entry(c), \ + mac_to_entry(m), 0) -#define MAX_OVERHEAD(v, c, m) \ - _gnutls_record_overhead(version_to_entry(v), cipher_to_entry(c), mac_to_entry(m), \ - 1) +#define MAX_OVERHEAD(v, c, m) \ + _gnutls_record_overhead(version_to_entry(v), cipher_to_entry(c), \ + mac_to_entry(m), 1) static void check_aes_gcm(void **glob_state) { const unsigned ov = 16 + 8; /* Under AES-GCM the overhead is constant */ - assert_int_equal(OVERHEAD - (GNUTLS_TLS1_2, GNUTLS_CIPHER_AES_128_GCM, - GNUTLS_MAC_AEAD), ov); - assert_int_equal(MAX_OVERHEAD - (GNUTLS_TLS1_2, GNUTLS_CIPHER_AES_128_GCM, - GNUTLS_MAC_AEAD), ov); + assert_int_equal(OVERHEAD(GNUTLS_TLS1_2, GNUTLS_CIPHER_AES_128_GCM, + GNUTLS_MAC_AEAD), + ov); + assert_int_equal(MAX_OVERHEAD(GNUTLS_TLS1_2, GNUTLS_CIPHER_AES_128_GCM, + GNUTLS_MAC_AEAD), + ov); } static void check_tls13_aes_gcm(void **glob_state) { const unsigned ov = 16 + 1; /* Under AES-GCM the overhead is constant */ - assert_int_equal(OVERHEAD - (GNUTLS_TLS1_3, GNUTLS_CIPHER_AES_128_GCM, - GNUTLS_MAC_AEAD), ov); - assert_int_equal(MAX_OVERHEAD - (GNUTLS_TLS1_3, GNUTLS_CIPHER_AES_128_GCM, - GNUTLS_MAC_AEAD), ov); + assert_int_equal(OVERHEAD(GNUTLS_TLS1_3, GNUTLS_CIPHER_AES_128_GCM, + GNUTLS_MAC_AEAD), + ov); + assert_int_equal(MAX_OVERHEAD(GNUTLS_TLS1_3, GNUTLS_CIPHER_AES_128_GCM, + GNUTLS_MAC_AEAD), + ov); } static void check_aes_sha1_min(void **glob_state) { const unsigned mac = 20; const unsigned block = 16; - assert_int_equal(OVERHEAD - (GNUTLS_TLS1_2, GNUTLS_CIPHER_AES_128_CBC, - GNUTLS_MAC_SHA1), 1 + mac + block); + assert_int_equal(OVERHEAD(GNUTLS_TLS1_2, GNUTLS_CIPHER_AES_128_CBC, + GNUTLS_MAC_SHA1), + 1 + mac + block); } static void check_aes_sha1_max(void **glob_state) @@ -103,9 +104,9 @@ static void check_aes_sha1_max(void **glob_state) const unsigned mac = 20; const unsigned block = 16; - assert_int_equal(MAX_OVERHEAD - (GNUTLS_TLS1_2, GNUTLS_CIPHER_AES_128_CBC, - GNUTLS_MAC_SHA1), block + mac + block); + assert_int_equal(MAX_OVERHEAD(GNUTLS_TLS1_2, GNUTLS_CIPHER_AES_128_CBC, + GNUTLS_MAC_SHA1), + block + mac + block); } int main(void) diff --git a/tests/gnutls_session_set_id.c b/tests/gnutls_session_set_id.c index db878a2a9c..099378e52a 100644 --- a/tests/gnutls_session_set_id.c +++ b/tests/gnutls_session_set_id.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -66,8 +66,8 @@ static gnutls_datum_t wrap_db_fetch(void *dbf, gnutls_datum_t key) unsigned *try_resume = dbf; gnutls_datum_t r = { NULL, 0 }; - if (key.size != test_id.size - || memcmp(test_id.data, key.data, test_id.size) != 0) + if (key.size != test_id.size || + memcmp(test_id.data, key.data, test_id.size) != 0) fail("received ID does not match the expected\n"); if (!(*try_resume)) @@ -107,8 +107,8 @@ static void start(const char *test, unsigned try_resume) gnutls_global_set_log_level(6); assert(gnutls_certificate_allocate_credentials(&serverx509cred) >= 0); - assert(gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, + assert(gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM) >= 0); assert(gnutls_init(&server, GNUTLS_SERVER) >= 0); @@ -124,15 +124,15 @@ static void start(const char *test, unsigned try_resume) gnutls_db_set_ptr(server, &try_resume); assert(gnutls_certificate_allocate_credentials(&clientx509cred) >= 0); - assert(gnutls_certificate_set_x509_trust_mem - (clientx509cred, &ca_cert, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM) >= 0); assert(gnutls_init(&client, GNUTLS_CLIENT) >= 0); assert(gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, clientx509cred) >= 0); - assert(gnutls_priority_set_direct - (client, "NORMAL:-VERS-ALL:+VERS-TLS1.2", NULL) >= 0); + assert(gnutls_priority_set_direct( + client, "NORMAL:-VERS-ALL:+VERS-TLS1.2", NULL) >= 0); gnutls_transport_set_push_function(client, client_push); gnutls_transport_set_pull_function(client, client_pull); gnutls_transport_set_ptr(client, client); @@ -170,8 +170,8 @@ static void start(const char *test, unsigned try_resume) assert(gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, clientx509cred) >= 0); - assert(gnutls_priority_set_direct - (client, "NORMAL:-VERS-ALL:+VERS-TLS1.2", NULL) >= 0); + assert(gnutls_priority_set_direct( + client, "NORMAL:-VERS-ALL:+VERS-TLS1.2", NULL) >= 0); gnutls_transport_set_push_function(client, client_push); gnutls_transport_set_pull_function(client, client_pull); gnutls_transport_set_ptr(client, client); diff --git a/tests/gnutls_x509_crq_sign.c b/tests/gnutls_x509_crq_sign.c index 685e30623d..fa641ede90 100644 --- a/tests/gnutls_x509_crq_sign.c +++ b/tests/gnutls_x509_crq_sign.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -34,38 +34,39 @@ #include "utils.h" static unsigned char saved_crq_pem[] = - "-----BEGIN NEW CERTIFICATE REQUEST-----\n" - "MIIBgzCB7QIBADAAMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7ZkP18sXX\n" - "tozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y89+wEdhMXi2SJIlvA3VN8O+18\n" - "BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpNaP/JEeIyjc49gAuNde/YAIGP\n" - "KAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQABoEQwQgYJKoZIhvcNAQkOMTUw\n" - "MzAPBgNVHRMBAf8EBTADAgEAMA0GA1UdDwEB/wQDAwEAMBEGA1UdEQEB/wQHMAWC\n" - "A2ZvbzANBgkqhkiG9w0BAQsFAAOBgQBKFQhbmY8RJBPiXm80PmYnZH7WaMeaOLJZ\n" - "JBVjsmdjFtDbgHaY9Vizrbh9jFM8iyvw01y+FZqCt2kSzvaPRoQad06NCV00oN6W\n" - "mG2iRKBSwVEX7JleigliK3M3Y5dlHV77CC1Or9BGC9Rbx9n9mV6z/NAWW5LyPHb5\n" - "gf4oXM6OPw==\n" "-----END NEW CERTIFICATE REQUEST-----\n"; + "-----BEGIN NEW CERTIFICATE REQUEST-----\n" + "MIIBgzCB7QIBADAAMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7ZkP18sXX\n" + "tozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y89+wEdhMXi2SJIlvA3VN8O+18\n" + "BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpNaP/JEeIyjc49gAuNde/YAIGP\n" + "KAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQABoEQwQgYJKoZIhvcNAQkOMTUw\n" + "MzAPBgNVHRMBAf8EBTADAgEAMA0GA1UdDwEB/wQDAwEAMBEGA1UdEQEB/wQHMAWC\n" + "A2ZvbzANBgkqhkiG9w0BAQsFAAOBgQBKFQhbmY8RJBPiXm80PmYnZH7WaMeaOLJZ\n" + "JBVjsmdjFtDbgHaY9Vizrbh9jFM8iyvw01y+FZqCt2kSzvaPRoQad06NCV00oN6W\n" + "mG2iRKBSwVEX7JleigliK3M3Y5dlHV77CC1Or9BGC9Rbx9n9mV6z/NAWW5LyPHb5\n" + "gf4oXM6OPw==\n" + "-----END NEW CERTIFICATE REQUEST-----\n"; const gnutls_datum_t saved_crq = { saved_crq_pem, sizeof(saved_crq_pem) - 1 }; static unsigned char key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" - "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" - "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" - "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" - "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" - "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" - "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" - "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" - "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" - "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" - "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" - "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" - "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" + "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" + "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" + "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" + "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" + "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" + "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" + "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" + "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" + "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" + "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" + "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" + "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" + "-----END RSA PRIVATE KEY-----\n"; const gnutls_datum_t key = { key_pem, sizeof(key_pem) - 1 }; -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1207000800; @@ -129,7 +130,7 @@ static gnutls_x509_crq_t generate_crq(void) return crq; } -static void verify_crq(const gnutls_datum_t * pem) +static void verify_crq(const gnutls_datum_t *pem) { gnutls_x509_crq_t crq; diff --git a/tests/gnutls_x509_crt_list_import.c b/tests/gnutls_x509_crt_list_import.c index 3a53e1a80d..2c83e593ba 100644 --- a/tests/gnutls_x509_crt_list_import.c +++ b/tests/gnutls_x509_crt_list_import.c @@ -22,7 +22,7 @@ /* This tests key import for gnutls_x509_privkey_t APIs */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -37,15 +37,13 @@ #include "cert-common.h" #include "utils.h" -#define testfail(fmt, ...) \ - fail("%s: "fmt, name, ##__VA_ARGS__) +#define testfail(fmt, ...) fail("%s: " fmt, name, ##__VA_ARGS__) #define MAX_CERTS 8 -static void load_list(const char *name, const gnutls_datum_t * txt, - unsigned int ncerts, - unsigned int max1, - unsigned int max2, unsigned flags, int exp_err) +static void load_list(const char *name, const gnutls_datum_t *txt, + unsigned int ncerts, unsigned int max1, unsigned int max2, + unsigned flags, int exp_err) { gnutls_x509_crt_t certs[MAX_CERTS]; unsigned int max, i; @@ -60,13 +58,12 @@ static void load_list(const char *name, const gnutls_datum_t * txt, else max = MAX_CERTS; - retry: - ret = - gnutls_x509_crt_list_import(certs, &max, txt, GNUTLS_X509_FMT_PEM, - flags); +retry: + ret = gnutls_x509_crt_list_import(certs, &max, txt, GNUTLS_X509_FMT_PEM, + flags); if (ret < 0) { - if (retried == 0 && ret == GNUTLS_E_SHORT_MEMORY_BUFFER && max2 - && max2 != max) { + if (retried == 0 && ret == GNUTLS_E_SHORT_MEMORY_BUFFER && + max2 && max2 != max) { max = max2; retried = 1; goto retry; @@ -85,9 +82,9 @@ static void load_list(const char *name, const gnutls_datum_t * txt, max, ncerts); if (ret != (int)ncerts) - testfail - ("imported number (%d) doesn't match return value (%d)\n", - ncerts, ret); + testfail( + "imported number (%d) doesn't match return value (%d)\n", + ncerts, ret); return; } @@ -104,249 +101,250 @@ typedef struct test_st { static const char long_chain_pem[] = { "-----BEGIN CERTIFICATE-----\n" - "MIIDQDCCAiigAwIBAgIMU/xyoxPcYVSaqH7/MA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTMwIhgPMjAxNDA4MjYxMTQyMjdaGA85OTk5MTIzMTIzNTk1OVow\n" - "EzERMA8GA1UEChMIc2VydmVyLTQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" - "AoIBAQDkemVOFdbhBX1qwjxQHr3LmPktNEVBmXjrIvyp++dN7gCYzubnpiLcBE+B\n" - "S2b+ppxBYm9ynKijhGrO+lZPCQRXWmqUg4YDfvnEqM4n04dCE98jN4IhwvWZyP3p\n" - "+U8Ra9mVIBAY2MReo1dcJQHNmo560xzxioHsGNQHAfYgVRHiE5hIXchYbWCkBrKt\n" - "XOoSSTmfgCF3L22p6S1q143VoKUr/C9zqinZo6feGAiTprj6YH0tHswjGBbxTFLb\n" - "q3ThbGDR5FNYL5q0FvQRNbjoF4oFitZ3P1Qkrzq7VIJd9k8J1C3g/16U2dDTKqRX\n" - "ejX7maFZ6oRZJASsRSowEs4wTfRpAgMBAAGjgZMwgZAwDAYDVR0TAQH/BAIwADAa\n" - "BgNVHREEEzARgg93d3cuZXhhbXBsZS5jb20wEwYDVR0lBAwwCgYIKwYBBQUHAwEw\n" - "DwYDVR0PAQH/BAUDAwegADAdBgNVHQ4EFgQUAEYPmcA7S/KChiet+Z6+RRmogiww\n" - "HwYDVR0jBBgwFoAUjxZogHO3y4VdOLuibQHsQYdsGgwwDQYJKoZIhvcNAQELBQAD\n" - "ggEBABlA3npOWwl3eBycaLVOsmdPS+fUwhLnF8hxoyKpHe/33k1nIxd7iiqNZ3iw\n" - "6pAjnuRUCjajU+mlx6ekrmga8mpmeD6JH0I3lq+mrPeCeFXm8gc1yJpcFJ/C2l4o\n" - "+3HNY7RJKcfoQxIbiKOtZ6x9E0aYuk3s1Um3Pf8GLwENoou7Stg5qHsLbkN/GBuP\n" - "n3p/4iqik2k7VblldDe3oCob5vMp0qrAEhlNl2Fn65rcB4+bp1EiC1Z+y6X8DpRb\n" - "NomKUsOiGcbFjQ4ptT6fePmPHX1mgDCx+5/22cyBUYElefYP7Xzr+C8tqqO3JFKe\n" - "hqEmQRsll9bkqpu2dh83c3i9u4g=\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIDATCCAemgAwIBAgIBAzANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0y\n" - "MCIYDzIwMTQwODI2MTE0MjI3WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC/4ofaL+ilmmM+\n" - "bGaFRy5GYQXtkD8sA3+/GWsunR928fQS68Zh6iWU+gPm52i7Gfbh7piKWA5Tb63w\n" - "unbS6dPsfPSvgRMZGKJpzxqVcBQAnTS4MuDPlXNg3K3HMyVtbxekII8jFeGEJuCL\n" - "mBMT4dI48IZRzj+2mir38w2cQPfomaKtjg2jMokG8Z9/4+SU9VJCcY1/yZk8fCbS\n" - "dBbwhnDq10yvhPCHgX6KMYmoJr28CYgH29Q9sDP1XN3VvAx5X+PtW/6pyF0U5E2e\n" - "gRzVv7Hr3FJKvytbNxRMCoy2YOyvsTP0fIhiXdtkulTKXyiq4cxA+aYByOu1FjU4\n" - "NicWbiZ/AgMBAAGjZDBiMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" - "ADAdBgNVHQ4EFgQUjxZogHO3y4VdOLuibQHsQYdsGgwwHwYDVR0jBBgwFoAUwAx0\n" - "aL2SrsoSZcZUuFlq0O17BSgwDQYJKoZIhvcNAQELBQADggEBAGQvj8SquT31w8JK\n" - "tHDL4hWOU0EwVwWl4aYsvP17WspiFIIHKApPFfQOD0/Wg9zB48ble5ZSwKA3Vc3B\n" - "DJgd77HgVAd/Nu1TS5TFDKhpuvFPJVpJ3cqt3pTsVGMzf6GRz5kG3Ly/pBgkqiMG\n" - "gv6vTlEvzNe4FcnhNBEaRKpK5Hc5+GnxtfVoki3tjG5u+oa9/OwzAT+7IOyiIKHw\n" - "7F4Cm56QAWMJgVNm329AjZrJLeNuKoQWGueNew4dOe/zlYEaVMG4So74twXQwIAB\n" - "Zko7+wk6eI4CkI4Zair36s1jLkCF8xnL8FExTT3sg6B6KBHaNUuwc67WPILVuFuc\n" - "VfVBOd8=\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIDMzCCAhugAwIBAgIBAjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0x\n" - "MCIYDzIwMTQwODI2MTE0MjI3WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIf3as4EONSgWu\n" - "Mbm9w3DbKd/su1UWlrYrcpVqmU3MKD5jXBxyoThSBWxmq1+wcNDmE1on6pHY1aad\n" - "k3188JKMC83wEcyQXaiH3DlTYFXXkkI+JJNUGlfAMSoXG248SpoCIOhCETUG03iP\n" - "Z3AZludaHYsv4akAh1Kl6qn66+bKM53l/YhoQDxhoGaYvO8ZSwKnx5DEiq447jpW\n" - "M+sUFe38RPaMjHpyc1GRctvQDzJGm+8ZRujYDH+fGNzVDDlRyRnsVanFGNdyfhmy\n" - "BN2D2+2VEvzAWlaGg2wQN8gF3+luavIVEgETXODZPa5FF7ulmQmhqGrZcw6WtDmY\n" - "hUbNmbL7AgMBAAGjgZUwgZIwDwYDVR0TAQH/BAUwAwEB/zAuBgNVHR4BAf8EJDAi\n" - "oA8wDYILZXhhbXBsZS5jb22hDzANggtleGFtcGxlLm9yZzAPBgNVHQ8BAf8EBQMD\n" - "BwQAMB0GA1UdDgQWBBTADHRovZKuyhJlxlS4WWrQ7XsFKDAfBgNVHSMEGDAWgBTg\n" - "+khaP8UOjcwSKVxgT+zhh0aWPDANBgkqhkiG9w0BAQsFAAOCAQEASq5yBiib8FPk\n" - "oRONZ4COgGqjXvigeOBRgbHf9AfagpoYDbOKDQS8Iwt9VHZfJxdcJ1OuM1aQqXlN\n" - "dUyf+JdR/24Nv1yrhL+dEfRGka6Db96YuPsbetVhNIiMm2teXDIPgGzAKuTm4xPA\n" - "6zyNVy5AwfDQ5hIZ+EUsfOoerIElNyAbh66law4MWuiv4oyX4u49m5lxLuL6mFpR\n" - "CIZYWjZMa0MJvWMKGm/AhpfEOkbT58Fg5YmxhnKMk6ps1eR6mh3NgH1IbUqvEYNC\n" - "eS42X3kAMxEDseBOMths0gxeLL+IHdQpXnAjZppW8zEIcN3yfknul35r8R6Qt9aK\n" - "q5+/m1ADBw==\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIDATCCAemgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTQwODI2MTE0MjI2WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIe0eOnLaV750K\n" - "4+mVaAftRrJp8t68KJivcRFpkl0ucQs6gwNf9EsVkHineOR3RXypjJ7Hsv+4PIKp\n" - "BhEOTprYUKcBaxHK/NIezV6NrO1AwuD6MtJDQF9jGpSy0F3eRUoBCjVYhTl+JxcZ\n" - "hGHPJd8WMeanQWY4xG4gTwtpjF3tPU5+JGQwLk5SbcLicM2QMG3CapZinOGK3/XC\n" - "Fjsvf5ZhxnixayhfiX/n9BmeP1yxz7YORNYPlL8z1CcLZqJsyjZnNkVwNvl4ft9I\n" - "FOKBLoOTSGocHFIFXh5b50GG6QHgvN+TiAwdpfRTUskWVg8VVIh7ymgDoI2jQhk4\n" - "EeMaZHd/AgMBAAGjZDBiMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" - "ADAdBgNVHQ4EFgQU4PpIWj/FDo3MEilcYE/s4YdGljwwHwYDVR0jBBgwFoAU6XJK\n" - "EOUYTuioWHG+1YBuz0yPFmowDQYJKoZIhvcNAQELBQADggEBAJOCrGvbeRqPj+uL\n" - "2FIfbkYZAx2nGl3RVv5ZK2YeDpU1udxLihc6Sr67OZbiA4QMKxwgI7pupuwXmyql\n" - "vs9dWnNpjzgfc0OqqzVdOFlfw8ew2DQb2sUXCcIkwqXb/pBQ9BvcgdDASu+rm74j\n" - "JWDZlhcqeVhZROKfpsjsl+lHgZ7kANwHtUJg/WvK8J971hgElqeBO1O97cGkw/in\n" - "e8ooK9Lxk3Td+WdI8C7juCYiwsGqFEKuj7b6937uzvpFmm1fYDdOHhTMcHTHIVTr\n" - "uxSSurQ4XSDF6Iuel3+IdpLL79UYJ7Cf4IhBWj0EloF6xWTA6nUYl3gzKpx1Tg1U\n" - "x2+26YY=\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTQwODI2MTE0MjI2WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqLuVrTyiqz+Zs\n" - "9Qw5V2Z1y1YSWU6aRDMs+34rP2gwT41C69HBh2LLRS04iJUVQydwnEJukwKlTNRn\n" - "1lEpvWgtYmySWA2SyI4xkVzCXgwv0k7WyLwa39hfNY1rXAqhDTL8VO0nXxi8hCMW\n" - "ohaXcvsieglhN5uwu6voEdY3Gwtx4V8ysDJ2P9EBo49ZHdpBOv+3YLDxbWZuL/tI\n" - "nYkBUHHfWGhUHsRsu0EGob3SFnfiooCbE/vtmn9rUuBEQDqOjOg3el/aTPJzcMi/\n" - "RTz+8ho17ZrQRKHZGKWq9Skank+2X9FZoYKFCUlBm6RVud1R54QYZEIj7W9ujQLN\n" - "LJrcIwBDAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" - "ADAdBgNVHQ4EFgQU6XJKEOUYTuioWHG+1YBuz0yPFmowDQYJKoZIhvcNAQELBQAD\n" - "ggEBAEeXYGhZ8fWDpCGfSGEDX8FTqLwfDXxw18ZJjQJwus7bsJ9K/hAXnasXrn0f\n" - "TJ+uJi8muqzP1V376mSUzlwXIzLZCtbwRdDhJJYRrLvf5zfHxHeDgvDALn+1AduF\n" - "G/GzCVIFsYNSMdKGwNRp6Ucgl43BPZs6Swn2DXrxxW7Gng+8dvUS2XGLLdH6q1O3\n" - "U1EgJilng+VXx9Rg3yCs5xDiehASySsM6MN/+v+Ouf9lkoQCEgrtlW5Lb/neOBlA\n" - "aS8PPQuKkIEggNd8hW88YWQOJXMiCAgFppVp5B1Vbghn9IDJQISx/AXAoDXQvQfE\n" - "bdOzcKFyDuklHl2IQPnYTFxm/G8=\n" "-----END CERTIFICATE-----\n" -}; - -static const char bad_long_chain_pem[] = { /* 3rd-cert is broken */ + "MIIDQDCCAiigAwIBAgIMU/xyoxPcYVSaqH7/MA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTMwIhgPMjAxNDA4MjYxMTQyMjdaGA85OTk5MTIzMTIzNTk1OVow\n" + "EzERMA8GA1UEChMIc2VydmVyLTQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" + "AoIBAQDkemVOFdbhBX1qwjxQHr3LmPktNEVBmXjrIvyp++dN7gCYzubnpiLcBE+B\n" + "S2b+ppxBYm9ynKijhGrO+lZPCQRXWmqUg4YDfvnEqM4n04dCE98jN4IhwvWZyP3p\n" + "+U8Ra9mVIBAY2MReo1dcJQHNmo560xzxioHsGNQHAfYgVRHiE5hIXchYbWCkBrKt\n" + "XOoSSTmfgCF3L22p6S1q143VoKUr/C9zqinZo6feGAiTprj6YH0tHswjGBbxTFLb\n" + "q3ThbGDR5FNYL5q0FvQRNbjoF4oFitZ3P1Qkrzq7VIJd9k8J1C3g/16U2dDTKqRX\n" + "ejX7maFZ6oRZJASsRSowEs4wTfRpAgMBAAGjgZMwgZAwDAYDVR0TAQH/BAIwADAa\n" + "BgNVHREEEzARgg93d3cuZXhhbXBsZS5jb20wEwYDVR0lBAwwCgYIKwYBBQUHAwEw\n" + "DwYDVR0PAQH/BAUDAwegADAdBgNVHQ4EFgQUAEYPmcA7S/KChiet+Z6+RRmogiww\n" + "HwYDVR0jBBgwFoAUjxZogHO3y4VdOLuibQHsQYdsGgwwDQYJKoZIhvcNAQELBQAD\n" + "ggEBABlA3npOWwl3eBycaLVOsmdPS+fUwhLnF8hxoyKpHe/33k1nIxd7iiqNZ3iw\n" + "6pAjnuRUCjajU+mlx6ekrmga8mpmeD6JH0I3lq+mrPeCeFXm8gc1yJpcFJ/C2l4o\n" + "+3HNY7RJKcfoQxIbiKOtZ6x9E0aYuk3s1Um3Pf8GLwENoou7Stg5qHsLbkN/GBuP\n" + "n3p/4iqik2k7VblldDe3oCob5vMp0qrAEhlNl2Fn65rcB4+bp1EiC1Z+y6X8DpRb\n" + "NomKUsOiGcbFjQ4ptT6fePmPHX1mgDCx+5/22cyBUYElefYP7Xzr+C8tqqO3JFKe\n" + "hqEmQRsll9bkqpu2dh83c3i9u4g=\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIDATCCAemgAwIBAgIBAzANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0y\n" + "MCIYDzIwMTQwODI2MTE0MjI3WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC/4ofaL+ilmmM+\n" + "bGaFRy5GYQXtkD8sA3+/GWsunR928fQS68Zh6iWU+gPm52i7Gfbh7piKWA5Tb63w\n" + "unbS6dPsfPSvgRMZGKJpzxqVcBQAnTS4MuDPlXNg3K3HMyVtbxekII8jFeGEJuCL\n" + "mBMT4dI48IZRzj+2mir38w2cQPfomaKtjg2jMokG8Z9/4+SU9VJCcY1/yZk8fCbS\n" + "dBbwhnDq10yvhPCHgX6KMYmoJr28CYgH29Q9sDP1XN3VvAx5X+PtW/6pyF0U5E2e\n" + "gRzVv7Hr3FJKvytbNxRMCoy2YOyvsTP0fIhiXdtkulTKXyiq4cxA+aYByOu1FjU4\n" + "NicWbiZ/AgMBAAGjZDBiMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" + "ADAdBgNVHQ4EFgQUjxZogHO3y4VdOLuibQHsQYdsGgwwHwYDVR0jBBgwFoAUwAx0\n" + "aL2SrsoSZcZUuFlq0O17BSgwDQYJKoZIhvcNAQELBQADggEBAGQvj8SquT31w8JK\n" + "tHDL4hWOU0EwVwWl4aYsvP17WspiFIIHKApPFfQOD0/Wg9zB48ble5ZSwKA3Vc3B\n" + "DJgd77HgVAd/Nu1TS5TFDKhpuvFPJVpJ3cqt3pTsVGMzf6GRz5kG3Ly/pBgkqiMG\n" + "gv6vTlEvzNe4FcnhNBEaRKpK5Hc5+GnxtfVoki3tjG5u+oa9/OwzAT+7IOyiIKHw\n" + "7F4Cm56QAWMJgVNm329AjZrJLeNuKoQWGueNew4dOe/zlYEaVMG4So74twXQwIAB\n" + "Zko7+wk6eI4CkI4Zair36s1jLkCF8xnL8FExTT3sg6B6KBHaNUuwc67WPILVuFuc\n" + "VfVBOd8=\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIDMzCCAhugAwIBAgIBAjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0x\n" + "MCIYDzIwMTQwODI2MTE0MjI3WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIf3as4EONSgWu\n" + "Mbm9w3DbKd/su1UWlrYrcpVqmU3MKD5jXBxyoThSBWxmq1+wcNDmE1on6pHY1aad\n" + "k3188JKMC83wEcyQXaiH3DlTYFXXkkI+JJNUGlfAMSoXG248SpoCIOhCETUG03iP\n" + "Z3AZludaHYsv4akAh1Kl6qn66+bKM53l/YhoQDxhoGaYvO8ZSwKnx5DEiq447jpW\n" + "M+sUFe38RPaMjHpyc1GRctvQDzJGm+8ZRujYDH+fGNzVDDlRyRnsVanFGNdyfhmy\n" + "BN2D2+2VEvzAWlaGg2wQN8gF3+luavIVEgETXODZPa5FF7ulmQmhqGrZcw6WtDmY\n" + "hUbNmbL7AgMBAAGjgZUwgZIwDwYDVR0TAQH/BAUwAwEB/zAuBgNVHR4BAf8EJDAi\n" + "oA8wDYILZXhhbXBsZS5jb22hDzANggtleGFtcGxlLm9yZzAPBgNVHQ8BAf8EBQMD\n" + "BwQAMB0GA1UdDgQWBBTADHRovZKuyhJlxlS4WWrQ7XsFKDAfBgNVHSMEGDAWgBTg\n" + "+khaP8UOjcwSKVxgT+zhh0aWPDANBgkqhkiG9w0BAQsFAAOCAQEASq5yBiib8FPk\n" + "oRONZ4COgGqjXvigeOBRgbHf9AfagpoYDbOKDQS8Iwt9VHZfJxdcJ1OuM1aQqXlN\n" + "dUyf+JdR/24Nv1yrhL+dEfRGka6Db96YuPsbetVhNIiMm2teXDIPgGzAKuTm4xPA\n" + "6zyNVy5AwfDQ5hIZ+EUsfOoerIElNyAbh66law4MWuiv4oyX4u49m5lxLuL6mFpR\n" + "CIZYWjZMa0MJvWMKGm/AhpfEOkbT58Fg5YmxhnKMk6ps1eR6mh3NgH1IbUqvEYNC\n" + "eS42X3kAMxEDseBOMths0gxeLL+IHdQpXnAjZppW8zEIcN3yfknul35r8R6Qt9aK\n" + "q5+/m1ADBw==\n" + "-----END CERTIFICATE-----\n" "-----BEGIN CERTIFICATE-----\n" - "MIIDQDCCAiigAwIBAgIMU/xyoxPcYVSaqH7/MA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTMwIhgPMjAxNDA4MjYxMTQyMjdaGA85OTk5MTIzMTIzNTk1OVow\n" - "EzERMA8GA1UEChMIc2VydmVyLTQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" - "AoIBAQDkemVOFdbhBX1qwjxQHr3LmPktNEVBmXjrIvyp++dN7gCYzubnpiLcBE+B\n" - "S2b+ppxBYm9ynKijhGrO+lZPCQRXWmqUg4YDfvnEqM4n04dCE98jN4IhwvWZyP3p\n" - "+U8Ra9mVIBAY2MReo1dcJQHNmo560xzxioHsGNQHAfYgVRHiE5hIXchYbWCkBrKt\n" - "XOoSSTmfgCF3L22p6S1q143VoKUr/C9zqinZo6feGAiTprj6YH0tHswjGBbxTFLb\n" - "q3ThbGDR5FNYL5q0FvQRNbjoF4oFitZ3P1Qkrzq7VIJd9k8J1C3g/16U2dDTKqRX\n" - "ejX7maFZ6oRZJASsRSowEs4wTfRpAgMBAAGjgZMwgZAwDAYDVR0TAQH/BAIwADAa\n" - "BgNVHREEEzARgg93d3cuZXhhbXBsZS5jb20wEwYDVR0lBAwwCgYIKwYBBQUHAwEw\n" - "DwYDVR0PAQH/BAUDAwegADAdBgNVHQ4EFgQUAEYPmcA7S/KChiet+Z6+RRmogiww\n" - "HwYDVR0jBBgwFoAUjxZogHO3y4VdOLuibQHsQYdsGgwwDQYJKoZIhvcNAQELBQAD\n" - "ggEBABlA3npOWwl3eBycaLVOsmdPS+fUwhLnF8hxoyKpHe/33k1nIxd7iiqNZ3iw\n" - "6pAjnuRUCjajU+mlx6ekrmga8mpmeD6JH0I3lq+mrPeCeFXm8gc1yJpcFJ/C2l4o\n" - "+3HNY7RJKcfoQxIbiKOtZ6x9E0aYuk3s1Um3Pf8GLwENoou7Stg5qHsLbkN/GBuP\n" - "n3p/4iqik2k7VblldDe3oCob5vMp0qrAEhlNl2Fn65rcB4+bp1EiC1Z+y6X8DpRb\n" - "NomKUsOiGcbFjQ4ptT6fePmPHX1mgDCx+5/22cyBUYElefYP7Xzr+C8tqqO3JFKe\n" - "hqEmQRsll9bkqpu2dh83c3i9u4g=\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIDATCCAemgAwIBAgIBAzANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0y\n" - "MCIYDzIwMTQwODI2MTE0MjI3WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC/4ofaL+ilmmM+\n" - "bGaFRy5GYQXtkD8sA3+/GWsunR928fQS68Zh6iWU+gPm52i7Gfbh7piKWA5Tb63w\n" - "unbS6dPsfPSvgRMZGKJpzxqVcBQAnTS4MuDPlXNg3K3HMyVtbxekII8jFeGEJuCL\n" - "mBMT4dI48IZRzj+2mir38w2cQPfomaKtjg2jMokG8Z9/4+SU9VJCcY1/yZk8fCbS\n" - "dBbwhnDq10yvhPCHgX6KMYmoJr28CYgH29Q9sDP1XN3VvAx5X+PtW/6pyF0U5E2e\n" - "gRzVv7Hr3FJKvytbNxRMCoy2YOyvsTP0fIhiXdtkulTKXyiq4cxA+aYByOu1FjU4\n" - "NicWbiZ/AgMBAAGjZDBiMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" - "ADAdBgNVHQ4EFgQUjxZogHO3y4VdOLuibQHsQYdsGgwwHwYDVR0jBBgwFoAUwAx0\n" - "aL2SrsoSZcZUuFlq0O17BSgwDQYJKoZIhvcNAQELBQADggEBAGQvj8SquT31w8JK\n" - "tHDL4hWOU0EwVwWl4aYsvP17WspiFIIHKApPFfQOD0/Wg9zB48ble5ZSwKA3Vc3B\n" - "DJgd77HgVAd/Nu1TS5TFDKhpuvFPJVpJ3cqt3pTsVGMzf6GRz5kG3Ly/pBgkqiMG\n" - "gv6vTlEvzNe4FcnhNBEaRKpK5Hc5+GnxtfVoki3tjG5u+oa9/OwzAT+7IOyiIKHw\n" - "7F4Cm56QAWMJgVNm329AjZrJLeNuKoQWGueNew4dOe/zlYEaVMG4So74twXQwIAB\n" - "Zko7+wk6eI4CkI4Zair36s1jLkCF8xnL8FExTT3sg6B6KBHaNUuwc67WPILVuFuc\n" - "VfVBOd8=\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "XXIDMzCCAhugAwIBAgIBAjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0x\n" - "MCIYDzIwMTQwODI2MTE0MjI3WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIf3as4EONSgWu\n" - "Mbm9w3DbKd/su1UWlrYrcpVqmU3MKD5jXBxyoThSBWxmq1+wcNDmE1on6pHY1aad\n" - "k3188JKMC83wEcyQXaiH3DlTYFXXkkI+JJNUGlfAMSoXG248SpoCIOhCETUG03iP\n" - "Z3AZludaHYsvQQXXh1Kl6qn66+bKM53l/YhoQDxhoGaYvO8ZSwKnx5DEiq447jpW\n" - "M+sUFe38RPaMQQXXc1GRctvQDzJGm+8ZRujYDH+fGNzVDDlRyRnsVanFGNdyfhmy\n" - "BN2D2+2VEvzAQQXXg2wQN8gF3+luavIVEgETXODZPa5FF7ulmQmhqGrZcw6WtDmY\n" - "hUbNmbL7AgMBQQXXgZUwgZIwDwYDVR0TAQH/BAUwAwEB/zAuBgNVHR4BAf8EJDAi\n" - "oA8wDYILZXhhQQBsZS5jb22hDzANggtleGFtcGxlLm9yZzAPBgNVHQ8BAf8EBQMD\n" - "BwQAMB0GA1UdQQQWBBTADHRovZKuyhJlxlS4WWrQ7XsFKDAfBgNVHSMEGDAWgBTg\n" - "+khaP8UOjcwSQQxgT+zhh0aWPDANBgkqhkiG9w0BAQsFAAOCAQEASq5yBiib8FPk\n" - "oRONZ4COgGqjQQigeOBRgbHf9AfagpoYDbOKDQS8Iwt9VHZfJxdcJ1OuM1aQqXlN\n" - "dUyf+JdR/24NQQyrhL+dEfRGka6Db96YuPsbetVhNIiMm2teXDIPgGzAKuTm4xPA\n" - "6zyNVy5AwfDQQQIZ+EUsfOoerIElNyAbh66law4MWuiv4oyX4u49m5lxLuL6mFpR\n" - "CIZYWjZMa0MJQQMKGm/AhpfEOkbT58Fg5YmxhnKMk6ps1eR6mh3NgH1IbUqvEYNC\n" - "eS42X3kAMxEDQQBOMths0gxeLL+IHdQpXnAjZppW8zEIcN3yfknul35r8R6Qt9aK\n" - "q5+/m1ADBw==\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIDATCCAemgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTQwODI2MTE0MjI2WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIe0eOnLaV750K\n" - "4+mVaAftRrJp8t68KJivcRFpkl0ucQs6gwNf9EsVkHineOR3RXypjJ7Hsv+4PIKp\n" - "BhEOTprYUKcBaxHK/NIezV6NrO1AwuD6MtJDQF9jGpSy0F3eRUoBCjVYhTl+JxcZ\n" - "hGHPJd8WMeanQWY4xG4gTwtpjF3tPU5+JGQwLk5SbcLicM2QMG3CapZinOGK3/XC\n" - "Fjsvf5ZhxnixayhfiX/n9BmeP1yxz7YORNYPlL8z1CcLZqJsyjZnNkVwNvl4ft9I\n" - "FOKBLoOTSGocHFIFXh5b50GG6QHgvN+TiAwdpfRTUskWVg8VVIh7ymgDoI2jQhk4\n" - "EeMaZHd/AgMBAAGjZDBiMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" - "ADAdBgNVHQ4EFgQU4PpIWj/FDo3MEilcYE/s4YdGljwwHwYDVR0jBBgwFoAU6XJK\n" - "EOUYTuioWHG+1YBuz0yPFmowDQYJKoZIhvcNAQELBQADggEBAJOCrGvbeRqPj+uL\n" - "2FIfbkYZAx2nGl3RVv5ZK2YeDpU1udxLihc6Sr67OZbiA4QMKxwgI7pupuwXmyql\n" - "vs9dWnNpjzgfc0OqqzVdOFlfw8ew2DQb2sUXCcIkwqXb/pBQ9BvcgdDASu+rm74j\n" - "JWDZlhcqeVhZROKfpsjsl+lHgZ7kANwHtUJg/WvK8J971hgElqeBO1O97cGkw/in\n" - "e8ooK9Lxk3Td+WdI8C7juCYiwsGqFEKuj7b6937uzvpFmm1fYDdOHhTMcHTHIVTr\n" - "uxSSurQ4XSDF6Iuel3+IdpLL79UYJ7Cf4IhBWj0EloF6xWTA6nUYl3gzKpx1Tg1U\n" - "x2+26YY=\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTQwODI2MTE0MjI2WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqLuVrTyiqz+Zs\n" - "9Qw5V2Z1y1YSWU6aRDMs+34rP2gwT41C69HBh2LLRS04iJUVQydwnEJukwKlTNRn\n" - "1lEpvWgtYmySWA2SyI4xkVzCXgwv0k7WyLwa39hfNY1rXAqhDTL8VO0nXxi8hCMW\n" - "ohaXcvsieglhN5uwu6voEdY3Gwtx4V8ysDJ2P9EBo49ZHdpBOv+3YLDxbWZuL/tI\n" - "nYkBUHHfWGhUHsRsu0EGob3SFnfiooCbE/vtmn9rUuBEQDqOjOg3el/aTPJzcMi/\n" - "RTz+8ho17ZrQRKHZGKWq9Skank+2X9FZoYKFCUlBm6RVud1R54QYZEIj7W9ujQLN\n" - "LJrcIwBDAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" - "ADAdBgNVHQ4EFgQU6XJKEOUYTuioWHG+1YBuz0yPFmowDQYJKoZIhvcNAQELBQAD\n" - "ggEBAEeXYGhZ8fWDpCGfSGEDX8FTqLwfDXxw18ZJjQJwus7bsJ9K/hAXnasXrn0f\n" - "TJ+uJi8muqzP1V376mSUzlwXIzLZCtbwRdDhJJYRrLvf5zfHxHeDgvDALn+1AduF\n" - "G/GzCVIFsYNSMdKGwNRp6Ucgl43BPZs6Swn2DXrxxW7Gng+8dvUS2XGLLdH6q1O3\n" - "U1EgJilng+VXx9Rg3yCs5xDiehASySsM6MN/+v+Ouf9lkoQCEgrtlW5Lb/neOBlA\n" - "aS8PPQuKkIEggNd8hW88YWQOJXMiCAgFppVp5B1Vbghn9IDJQISx/AXAoDXQvQfE\n" - "bdOzcKFyDuklHl2IQPnYTFxm/G8=\n" "-----END CERTIFICATE-----\n" + "MIIDATCCAemgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwODI2MTE0MjI2WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIe0eOnLaV750K\n" + "4+mVaAftRrJp8t68KJivcRFpkl0ucQs6gwNf9EsVkHineOR3RXypjJ7Hsv+4PIKp\n" + "BhEOTprYUKcBaxHK/NIezV6NrO1AwuD6MtJDQF9jGpSy0F3eRUoBCjVYhTl+JxcZ\n" + "hGHPJd8WMeanQWY4xG4gTwtpjF3tPU5+JGQwLk5SbcLicM2QMG3CapZinOGK3/XC\n" + "Fjsvf5ZhxnixayhfiX/n9BmeP1yxz7YORNYPlL8z1CcLZqJsyjZnNkVwNvl4ft9I\n" + "FOKBLoOTSGocHFIFXh5b50GG6QHgvN+TiAwdpfRTUskWVg8VVIh7ymgDoI2jQhk4\n" + "EeMaZHd/AgMBAAGjZDBiMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" + "ADAdBgNVHQ4EFgQU4PpIWj/FDo3MEilcYE/s4YdGljwwHwYDVR0jBBgwFoAU6XJK\n" + "EOUYTuioWHG+1YBuz0yPFmowDQYJKoZIhvcNAQELBQADggEBAJOCrGvbeRqPj+uL\n" + "2FIfbkYZAx2nGl3RVv5ZK2YeDpU1udxLihc6Sr67OZbiA4QMKxwgI7pupuwXmyql\n" + "vs9dWnNpjzgfc0OqqzVdOFlfw8ew2DQb2sUXCcIkwqXb/pBQ9BvcgdDASu+rm74j\n" + "JWDZlhcqeVhZROKfpsjsl+lHgZ7kANwHtUJg/WvK8J971hgElqeBO1O97cGkw/in\n" + "e8ooK9Lxk3Td+WdI8C7juCYiwsGqFEKuj7b6937uzvpFmm1fYDdOHhTMcHTHIVTr\n" + "uxSSurQ4XSDF6Iuel3+IdpLL79UYJ7Cf4IhBWj0EloF6xWTA6nUYl3gzKpx1Tg1U\n" + "x2+26YY=\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwODI2MTE0MjI2WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqLuVrTyiqz+Zs\n" + "9Qw5V2Z1y1YSWU6aRDMs+34rP2gwT41C69HBh2LLRS04iJUVQydwnEJukwKlTNRn\n" + "1lEpvWgtYmySWA2SyI4xkVzCXgwv0k7WyLwa39hfNY1rXAqhDTL8VO0nXxi8hCMW\n" + "ohaXcvsieglhN5uwu6voEdY3Gwtx4V8ysDJ2P9EBo49ZHdpBOv+3YLDxbWZuL/tI\n" + "nYkBUHHfWGhUHsRsu0EGob3SFnfiooCbE/vtmn9rUuBEQDqOjOg3el/aTPJzcMi/\n" + "RTz+8ho17ZrQRKHZGKWq9Skank+2X9FZoYKFCUlBm6RVud1R54QYZEIj7W9ujQLN\n" + "LJrcIwBDAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" + "ADAdBgNVHQ4EFgQU6XJKEOUYTuioWHG+1YBuz0yPFmowDQYJKoZIhvcNAQELBQAD\n" + "ggEBAEeXYGhZ8fWDpCGfSGEDX8FTqLwfDXxw18ZJjQJwus7bsJ9K/hAXnasXrn0f\n" + "TJ+uJi8muqzP1V376mSUzlwXIzLZCtbwRdDhJJYRrLvf5zfHxHeDgvDALn+1AduF\n" + "G/GzCVIFsYNSMdKGwNRp6Ucgl43BPZs6Swn2DXrxxW7Gng+8dvUS2XGLLdH6q1O3\n" + "U1EgJilng+VXx9Rg3yCs5xDiehASySsM6MN/+v+Ouf9lkoQCEgrtlW5Lb/neOBlA\n" + "aS8PPQuKkIEggNd8hW88YWQOJXMiCAgFppVp5B1Vbghn9IDJQISx/AXAoDXQvQfE\n" + "bdOzcKFyDuklHl2IQPnYTFxm/G8=\n" + "-----END CERTIFICATE-----\n" }; -static const gnutls_datum_t long_chain = { - (void *)long_chain_pem, sizeof(long_chain_pem) - 1 -}; +static const char bad_long_chain_pem + [] = { /* 3rd-cert is broken */ + "-----BEGIN CERTIFICATE-----\n" + "MIIDQDCCAiigAwIBAgIMU/xyoxPcYVSaqH7/MA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTMwIhgPMjAxNDA4MjYxMTQyMjdaGA85OTk5MTIzMTIzNTk1OVow\n" + "EzERMA8GA1UEChMIc2VydmVyLTQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" + "AoIBAQDkemVOFdbhBX1qwjxQHr3LmPktNEVBmXjrIvyp++dN7gCYzubnpiLcBE+B\n" + "S2b+ppxBYm9ynKijhGrO+lZPCQRXWmqUg4YDfvnEqM4n04dCE98jN4IhwvWZyP3p\n" + "+U8Ra9mVIBAY2MReo1dcJQHNmo560xzxioHsGNQHAfYgVRHiE5hIXchYbWCkBrKt\n" + "XOoSSTmfgCF3L22p6S1q143VoKUr/C9zqinZo6feGAiTprj6YH0tHswjGBbxTFLb\n" + "q3ThbGDR5FNYL5q0FvQRNbjoF4oFitZ3P1Qkrzq7VIJd9k8J1C3g/16U2dDTKqRX\n" + "ejX7maFZ6oRZJASsRSowEs4wTfRpAgMBAAGjgZMwgZAwDAYDVR0TAQH/BAIwADAa\n" + "BgNVHREEEzARgg93d3cuZXhhbXBsZS5jb20wEwYDVR0lBAwwCgYIKwYBBQUHAwEw\n" + "DwYDVR0PAQH/BAUDAwegADAdBgNVHQ4EFgQUAEYPmcA7S/KChiet+Z6+RRmogiww\n" + "HwYDVR0jBBgwFoAUjxZogHO3y4VdOLuibQHsQYdsGgwwDQYJKoZIhvcNAQELBQAD\n" + "ggEBABlA3npOWwl3eBycaLVOsmdPS+fUwhLnF8hxoyKpHe/33k1nIxd7iiqNZ3iw\n" + "6pAjnuRUCjajU+mlx6ekrmga8mpmeD6JH0I3lq+mrPeCeFXm8gc1yJpcFJ/C2l4o\n" + "+3HNY7RJKcfoQxIbiKOtZ6x9E0aYuk3s1Um3Pf8GLwENoou7Stg5qHsLbkN/GBuP\n" + "n3p/4iqik2k7VblldDe3oCob5vMp0qrAEhlNl2Fn65rcB4+bp1EiC1Z+y6X8DpRb\n" + "NomKUsOiGcbFjQ4ptT6fePmPHX1mgDCx+5/22cyBUYElefYP7Xzr+C8tqqO3JFKe\n" + "hqEmQRsll9bkqpu2dh83c3i9u4g=\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIDATCCAemgAwIBAgIBAzANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0y\n" + "MCIYDzIwMTQwODI2MTE0MjI3WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC/4ofaL+ilmmM+\n" + "bGaFRy5GYQXtkD8sA3+/GWsunR928fQS68Zh6iWU+gPm52i7Gfbh7piKWA5Tb63w\n" + "unbS6dPsfPSvgRMZGKJpzxqVcBQAnTS4MuDPlXNg3K3HMyVtbxekII8jFeGEJuCL\n" + "mBMT4dI48IZRzj+2mir38w2cQPfomaKtjg2jMokG8Z9/4+SU9VJCcY1/yZk8fCbS\n" + "dBbwhnDq10yvhPCHgX6KMYmoJr28CYgH29Q9sDP1XN3VvAx5X+PtW/6pyF0U5E2e\n" + "gRzVv7Hr3FJKvytbNxRMCoy2YOyvsTP0fIhiXdtkulTKXyiq4cxA+aYByOu1FjU4\n" + "NicWbiZ/AgMBAAGjZDBiMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" + "ADAdBgNVHQ4EFgQUjxZogHO3y4VdOLuibQHsQYdsGgwwHwYDVR0jBBgwFoAUwAx0\n" + "aL2SrsoSZcZUuFlq0O17BSgwDQYJKoZIhvcNAQELBQADggEBAGQvj8SquT31w8JK\n" + "tHDL4hWOU0EwVwWl4aYsvP17WspiFIIHKApPFfQOD0/Wg9zB48ble5ZSwKA3Vc3B\n" + "DJgd77HgVAd/Nu1TS5TFDKhpuvFPJVpJ3cqt3pTsVGMzf6GRz5kG3Ly/pBgkqiMG\n" + "gv6vTlEvzNe4FcnhNBEaRKpK5Hc5+GnxtfVoki3tjG5u+oa9/OwzAT+7IOyiIKHw\n" + "7F4Cm56QAWMJgVNm329AjZrJLeNuKoQWGueNew4dOe/zlYEaVMG4So74twXQwIAB\n" + "Zko7+wk6eI4CkI4Zair36s1jLkCF8xnL8FExTT3sg6B6KBHaNUuwc67WPILVuFuc\n" + "VfVBOd8=\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "XXIDMzCCAhugAwIBAgIBAjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0x\n" + "MCIYDzIwMTQwODI2MTE0MjI3WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIf3as4EONSgWu\n" + "Mbm9w3DbKd/su1UWlrYrcpVqmU3MKD5jXBxyoThSBWxmq1+wcNDmE1on6pHY1aad\n" + "k3188JKMC83wEcyQXaiH3DlTYFXXkkI+JJNUGlfAMSoXG248SpoCIOhCETUG03iP\n" + "Z3AZludaHYsvQQXXh1Kl6qn66+bKM53l/YhoQDxhoGaYvO8ZSwKnx5DEiq447jpW\n" + "M+sUFe38RPaMQQXXc1GRctvQDzJGm+8ZRujYDH+fGNzVDDlRyRnsVanFGNdyfhmy\n" + "BN2D2+2VEvzAQQXXg2wQN8gF3+luavIVEgETXODZPa5FF7ulmQmhqGrZcw6WtDmY\n" + "hUbNmbL7AgMBQQXXgZUwgZIwDwYDVR0TAQH/BAUwAwEB/zAuBgNVHR4BAf8EJDAi\n" + "oA8wDYILZXhhQQBsZS5jb22hDzANggtleGFtcGxlLm9yZzAPBgNVHQ8BAf8EBQMD\n" + "BwQAMB0GA1UdQQQWBBTADHRovZKuyhJlxlS4WWrQ7XsFKDAfBgNVHSMEGDAWgBTg\n" + "+khaP8UOjcwSQQxgT+zhh0aWPDANBgkqhkiG9w0BAQsFAAOCAQEASq5yBiib8FPk\n" + "oRONZ4COgGqjQQigeOBRgbHf9AfagpoYDbOKDQS8Iwt9VHZfJxdcJ1OuM1aQqXlN\n" + "dUyf+JdR/24NQQyrhL+dEfRGka6Db96YuPsbetVhNIiMm2teXDIPgGzAKuTm4xPA\n" + "6zyNVy5AwfDQQQIZ+EUsfOoerIElNyAbh66law4MWuiv4oyX4u49m5lxLuL6mFpR\n" + "CIZYWjZMa0MJQQMKGm/AhpfEOkbT58Fg5YmxhnKMk6ps1eR6mh3NgH1IbUqvEYNC\n" + "eS42X3kAMxEDQQBOMths0gxeLL+IHdQpXnAjZppW8zEIcN3yfknul35r8R6Qt9aK\n" + "q5+/m1ADBw==\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIDATCCAemgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwODI2MTE0MjI2WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIe0eOnLaV750K\n" + "4+mVaAftRrJp8t68KJivcRFpkl0ucQs6gwNf9EsVkHineOR3RXypjJ7Hsv+4PIKp\n" + "BhEOTprYUKcBaxHK/NIezV6NrO1AwuD6MtJDQF9jGpSy0F3eRUoBCjVYhTl+JxcZ\n" + "hGHPJd8WMeanQWY4xG4gTwtpjF3tPU5+JGQwLk5SbcLicM2QMG3CapZinOGK3/XC\n" + "Fjsvf5ZhxnixayhfiX/n9BmeP1yxz7YORNYPlL8z1CcLZqJsyjZnNkVwNvl4ft9I\n" + "FOKBLoOTSGocHFIFXh5b50GG6QHgvN+TiAwdpfRTUskWVg8VVIh7ymgDoI2jQhk4\n" + "EeMaZHd/AgMBAAGjZDBiMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" + "ADAdBgNVHQ4EFgQU4PpIWj/FDo3MEilcYE/s4YdGljwwHwYDVR0jBBgwFoAU6XJK\n" + "EOUYTuioWHG+1YBuz0yPFmowDQYJKoZIhvcNAQELBQADggEBAJOCrGvbeRqPj+uL\n" + "2FIfbkYZAx2nGl3RVv5ZK2YeDpU1udxLihc6Sr67OZbiA4QMKxwgI7pupuwXmyql\n" + "vs9dWnNpjzgfc0OqqzVdOFlfw8ew2DQb2sUXCcIkwqXb/pBQ9BvcgdDASu+rm74j\n" + "JWDZlhcqeVhZROKfpsjsl+lHgZ7kANwHtUJg/WvK8J971hgElqeBO1O97cGkw/in\n" + "e8ooK9Lxk3Td+WdI8C7juCYiwsGqFEKuj7b6937uzvpFmm1fYDdOHhTMcHTHIVTr\n" + "uxSSurQ4XSDF6Iuel3+IdpLL79UYJ7Cf4IhBWj0EloF6xWTA6nUYl3gzKpx1Tg1U\n" + "x2+26YY=\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwODI2MTE0MjI2WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqLuVrTyiqz+Zs\n" + "9Qw5V2Z1y1YSWU6aRDMs+34rP2gwT41C69HBh2LLRS04iJUVQydwnEJukwKlTNRn\n" + "1lEpvWgtYmySWA2SyI4xkVzCXgwv0k7WyLwa39hfNY1rXAqhDTL8VO0nXxi8hCMW\n" + "ohaXcvsieglhN5uwu6voEdY3Gwtx4V8ysDJ2P9EBo49ZHdpBOv+3YLDxbWZuL/tI\n" + "nYkBUHHfWGhUHsRsu0EGob3SFnfiooCbE/vtmn9rUuBEQDqOjOg3el/aTPJzcMi/\n" + "RTz+8ho17ZrQRKHZGKWq9Skank+2X9FZoYKFCUlBm6RVud1R54QYZEIj7W9ujQLN\n" + "LJrcIwBDAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" + "ADAdBgNVHQ4EFgQU6XJKEOUYTuioWHG+1YBuz0yPFmowDQYJKoZIhvcNAQELBQAD\n" + "ggEBAEeXYGhZ8fWDpCGfSGEDX8FTqLwfDXxw18ZJjQJwus7bsJ9K/hAXnasXrn0f\n" + "TJ+uJi8muqzP1V376mSUzlwXIzLZCtbwRdDhJJYRrLvf5zfHxHeDgvDALn+1AduF\n" + "G/GzCVIFsYNSMdKGwNRp6Ucgl43BPZs6Swn2DXrxxW7Gng+8dvUS2XGLLdH6q1O3\n" + "U1EgJilng+VXx9Rg3yCs5xDiehASySsM6MN/+v+Ouf9lkoQCEgrtlW5Lb/neOBlA\n" + "aS8PPQuKkIEggNd8hW88YWQOJXMiCAgFppVp5B1Vbghn9IDJQISx/AXAoDXQvQfE\n" + "bdOzcKFyDuklHl2IQPnYTFxm/G8=\n" + "-----END CERTIFICATE-----\n" + }; -static const gnutls_datum_t bad_long_chain = { - (void *)bad_long_chain_pem, sizeof(bad_long_chain_pem) - 1 -}; +static const gnutls_datum_t long_chain = { (void *)long_chain_pem, + sizeof(long_chain_pem) - 1 }; + +static const gnutls_datum_t bad_long_chain = { (void *)bad_long_chain_pem, + sizeof(bad_long_chain_pem) - 1 }; static const test_st tests[] = { - {.name = "load 5 certs", - .certs = &long_chain, - .ncerts = 5, - .flags = 0}, - {.name = "partial load of 5 certs, with expected failure", - .certs = &bad_long_chain, - .ncerts = 5, - .flags = 0, - .exp_err = GNUTLS_E_ASN1_TAG_ERROR}, - {.name = "load 2 certs out of 5", - .certs = &long_chain, - .max1 = 2, - .ncerts = 2, - .flags = 0}, - {.name = "load 1 cert out of 5", - .certs = &long_chain, - .ncerts = 1, - .max1 = 1, - .max2 = 0, - .flags = 0}, - {.name = "load 2 certs with fail if exceed", - .certs = &long_chain, - .ncerts = 2, - .max1 = 2, - .flags = GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED, - .exp_err = GNUTLS_E_SHORT_MEMORY_BUFFER}, - {.name = "load 2 certs with fail if exceed and retry", - .certs = &long_chain, - .ncerts = 5, - .max1 = 1, - .max2 = 6, - .exp_err = 0, - .flags = GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED}, - {.name = "load certs, fail due to size, and retry, and fail again", - .certs = &long_chain, - .max1 = 1, - .max2 = 3, - .ncerts = 5, - .flags = GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED, - .exp_err = GNUTLS_E_SHORT_MEMORY_BUFFER} + { .name = "load 5 certs", + .certs = &long_chain, + .ncerts = 5, + .flags = 0 }, + { .name = "partial load of 5 certs, with expected failure", + .certs = &bad_long_chain, + .ncerts = 5, + .flags = 0, + .exp_err = GNUTLS_E_ASN1_TAG_ERROR }, + { .name = "load 2 certs out of 5", + .certs = &long_chain, + .max1 = 2, + .ncerts = 2, + .flags = 0 }, + { .name = "load 1 cert out of 5", + .certs = &long_chain, + .ncerts = 1, + .max1 = 1, + .max2 = 0, + .flags = 0 }, + { .name = "load 2 certs with fail if exceed", + .certs = &long_chain, + .ncerts = 2, + .max1 = 2, + .flags = GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED, + .exp_err = GNUTLS_E_SHORT_MEMORY_BUFFER }, + { .name = "load 2 certs with fail if exceed and retry", + .certs = &long_chain, + .ncerts = 5, + .max1 = 1, + .max2 = 6, + .exp_err = 0, + .flags = GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED }, + { .name = "load certs, fail due to size, and retry, and fail again", + .certs = &long_chain, + .max1 = 1, + .max2 = 3, + .ncerts = 5, + .flags = GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED, + .exp_err = GNUTLS_E_SHORT_MEMORY_BUFFER } }; void doit(void) diff --git a/tests/gnutls_x509_crt_sign.c b/tests/gnutls_x509_crt_sign.c index c4fac7b793..29c3237f2b 100644 --- a/tests/gnutls_x509_crt_sign.c +++ b/tests/gnutls_x509_crt_sign.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -37,19 +37,20 @@ #include "cert-common.h" static unsigned char saved_crt_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICIjCCAYugAwIBAgIDChEAMA0GCSqGSIb3DQEBCwUAMCsxDjAMBgNVBAMTBW5p\n" - "a29zMRkwFwYDVQQKExBub25lIHRvLCBtZW50aW9uMCAXDTA4MDMzMTIyMDAwMFoY\n" - "Dzk5OTkxMjMxMjM1OTU5WjArMQ4wDAYDVQQDEwVuaWtvczEZMBcGA1UEChMQbm9u\n" - "ZSB0bywgbWVudGlvbjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAu2ZD9fLF\n" - "17aMzMXf9Yg7sclLag6hrSBQQAiAoU9co9D4bM/mPPfsBHYTF4tkiSJbwN1TfDvt\n" - "fAS7gLkovo6bxo6gpRLL9Vceoue7tzNJn+O7Sq5qTWj/yRHiMo3OPYALjXXv2ACB\n" - "jygEA6AijWEEB/q2N30hB0nSCWFpmJCjWKkCAwEAAaNSMFAwDAYDVR0TAQH/BAIw\n" - "ADAOBgNVHQ8BAf8EBAMCB4AwDgYDVR0RBAcwBYIDYXBhMCAGA1UdJQEB/wQWMBQG\n" - "CCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOBgQCiZrNQBktpWsND\n" - "MsH9kdwscx1ybGoeRibdngltnwzIjcl5T+D52fADzKHpuvwq6m5qHUz/f/872E3w\n" - "AKw9YX7n9316fTydee22/WyNGmP5r6E82Inu6wQpgkrOsgfhs/jNDGEhOw/G1lwZ\n" - "dAtaww1V7OEVK1WufVUtQ3rQzxYPcQ==\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIICIjCCAYugAwIBAgIDChEAMA0GCSqGSIb3DQEBCwUAMCsxDjAMBgNVBAMTBW5p\n" + "a29zMRkwFwYDVQQKExBub25lIHRvLCBtZW50aW9uMCAXDTA4MDMzMTIyMDAwMFoY\n" + "Dzk5OTkxMjMxMjM1OTU5WjArMQ4wDAYDVQQDEwVuaWtvczEZMBcGA1UEChMQbm9u\n" + "ZSB0bywgbWVudGlvbjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAu2ZD9fLF\n" + "17aMzMXf9Yg7sclLag6hrSBQQAiAoU9co9D4bM/mPPfsBHYTF4tkiSJbwN1TfDvt\n" + "fAS7gLkovo6bxo6gpRLL9Vceoue7tzNJn+O7Sq5qTWj/yRHiMo3OPYALjXXv2ACB\n" + "jygEA6AijWEEB/q2N30hB0nSCWFpmJCjWKkCAwEAAaNSMFAwDAYDVR0TAQH/BAIw\n" + "ADAOBgNVHQ8BAf8EBAMCB4AwDgYDVR0RBAcwBYIDYXBhMCAGA1UdJQEB/wQWMBQG\n" + "CCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOBgQCiZrNQBktpWsND\n" + "MsH9kdwscx1ybGoeRibdngltnwzIjcl5T+D52fADzKHpuvwq6m5qHUz/f/872E3w\n" + "AKw9YX7n9316fTydee22/WyNGmP5r6E82Inu6wQpgkrOsgfhs/jNDGEhOw/G1lwZ\n" + "dAtaww1V7OEVK1WufVUtQ3rQzxYPcQ==\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t saved_crt = { saved_crt_pem, sizeof(saved_crt_pem) - 1 }; @@ -58,7 +59,7 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "|<%d>| %s", level, str); } -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1207000800; @@ -96,8 +97,8 @@ void doit(void) if (ret != 0) fail("gnutls_x509_crt_init\n"); - ret = - gnutls_x509_crt_import(crt2, &server_ecc_cert, GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(crt2, &server_ecc_cert, + GNUTLS_X509_FMT_PEM); if (ret != 0) fail("gnutls_x509_crt_import\n"); @@ -140,9 +141,8 @@ void doit(void) if (ret != 0) fail("gnutls_x509_crt_set_key_usage %d\n", ret); - ret = - gnutls_x509_crt_set_dn(crt, "o = none to\\, mention,cn = nikos", - &err); + ret = gnutls_x509_crt_set_dn(crt, "o = none to\\, mention,cn = nikos", + &err); if (ret < 0) { fail("gnutls_x509_crt_set_dn: %s, %s\n", gnutls_strerror(ret), err); @@ -164,9 +164,10 @@ void doit(void) if (ret != 0) fail("gnutls_x509_crt_set_subject_alt_name\n"); - ret = gnutls_x509_crt_set_subject_alt_name(crt, GNUTLS_SAN_IPADDRESS, - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01", - 16, 1); + ret = gnutls_x509_crt_set_subject_alt_name( + crt, GNUTLS_SAN_IPADDRESS, + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01", + 16, 1); if (ret != 0) fail("gnutls_x509_crt_set_subject_alt_name\n"); @@ -181,9 +182,8 @@ void doit(void) fail("gnutls_x509_crt_get_key_purpose_oid %d\n", ret); s = 0; - ret = - gnutls_x509_crt_set_key_purpose_oid(crt, - GNUTLS_KP_TLS_WWW_SERVER, 0); + ret = gnutls_x509_crt_set_key_purpose_oid(crt, GNUTLS_KP_TLS_WWW_SERVER, + 0); if (ret != 0) fail("gnutls_x509_crt_set_key_purpose_oid %d\n", ret); @@ -193,17 +193,15 @@ void doit(void) fail("gnutls_x509_crt_get_key_purpose_oid %d\n", ret); s = 0; - ret = - gnutls_x509_crt_set_key_purpose_oid(crt, - GNUTLS_KP_TLS_WWW_CLIENT, 1); + ret = gnutls_x509_crt_set_key_purpose_oid(crt, GNUTLS_KP_TLS_WWW_CLIENT, + 1); if (ret != 0) fail("gnutls_x509_crt_set_key_purpose_oid2 %d\n", ret); /* in the end this will be ignored as the issuer will be set * by gnutls_x509_crt_sign2() */ - ret = - gnutls_x509_crt_set_issuer_dn(crt, "cn = my CA, o = big\\, and one", - &err); + ret = gnutls_x509_crt_set_issuer_dn( + crt, "cn = my CA, o = big\\, and one", &err); if (ret < 0) { fail("gnutls_x509_crt_set_issuer_dn: %s, %s\n", gnutls_strerror(ret), err); diff --git a/tests/gnutls_x509_privkey_import.c b/tests/gnutls_x509_privkey_import.c index 1861370608..462358259a 100644 --- a/tests/gnutls_x509_privkey_import.c +++ b/tests/gnutls_x509_privkey_import.c @@ -22,7 +22,7 @@ /* This tests key import for gnutls_x509_privkey_t APIs */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -37,13 +37,9 @@ #include "cert-common.h" #include "utils.h" -#define testfail(fmt, ...) \ - fail("%s: "fmt, name, ##__VA_ARGS__) +#define testfail(fmt, ...) fail("%s: " fmt, name, ##__VA_ARGS__) -const gnutls_datum_t raw_data = { - (void *)"hello there", - 11 -}; +const gnutls_datum_t raw_data = { (void *)"hello there", 11 }; static int sign_verify_data(gnutls_x509_privkey_t pkey, gnutls_sign_algorithm_t algo) @@ -60,8 +56,8 @@ static int sign_verify_data(gnutls_x509_privkey_t pkey, if (ret < 0) fail("gnutls_privkey_import_x509\n"); - ret = gnutls_privkey_sign_data2(privkey, algo, 0, - &raw_data, &signature); + ret = gnutls_privkey_sign_data2(privkey, algo, 0, &raw_data, + &signature); if (ret < 0) { ret = -1; goto cleanup; @@ -83,7 +79,7 @@ static int sign_verify_data(gnutls_x509_privkey_t pkey, } ret = 0; - cleanup: +cleanup: if (pubkey) gnutls_pubkey_deinit(pubkey); gnutls_privkey_deinit(privkey); @@ -92,7 +88,7 @@ static int sign_verify_data(gnutls_x509_privkey_t pkey, return ret; } -static void load_privkey(const char *name, const gnutls_datum_t * txtkey, +static void load_privkey(const char *name, const gnutls_datum_t *txtkey, gnutls_pk_algorithm_t pk, gnutls_sign_algorithm_t sig, int exp_key_err) { @@ -106,8 +102,8 @@ static void load_privkey(const char *name, const gnutls_datum_t * txtkey, ret = gnutls_x509_privkey_import(tmp, txtkey, GNUTLS_X509_FMT_PEM); if (ret < 0) { if (exp_key_err) { - testfail - ("did not fail in key import, although expected\n"); + testfail( + "did not fail in key import, although expected\n"); } testfail("gnutls_privkey_import: %s\n", gnutls_strerror(ret)); @@ -129,7 +125,7 @@ static void load_privkey(const char *name, const gnutls_datum_t * txtkey, return; } -static void load_privkey_in_der(const char *name, const gnutls_datum_t * txtkey, +static void load_privkey_in_der(const char *name, const gnutls_datum_t *txtkey, gnutls_pk_algorithm_t pk, gnutls_sign_algorithm_t sig, int exp_key_err) { @@ -152,8 +148,8 @@ static void load_privkey_in_der(const char *name, const gnutls_datum_t * txtkey, if (ret < 0) { if (exp_key_err) { - testfail - ("did not fail in key import, although expected\n"); + testfail( + "did not fail in key import, although expected\n"); } testfail("gnutls_privkey_import: %s\n", gnutls_strerror(ret)); @@ -183,33 +179,36 @@ typedef struct test_st { int exp_key_err; } test_st; -static const test_st tests[] = { - {.name = "ecc key", - .pk = GNUTLS_PK_ECDSA, - .sig = GNUTLS_SIGN_ECDSA_SHA256, - .key = &server_ca3_ecc_key, - }, - {.name = "rsa-sign key", - .pk = GNUTLS_PK_RSA, - .sig = GNUTLS_SIGN_RSA_SHA384, - .key = &server_ca3_key, - }, - {.name = "rsa-pss-sign key (PKCS#8)", - .pk = GNUTLS_PK_RSA_PSS, - .sig = GNUTLS_SIGN_RSA_PSS_SHA256, - .key = &server_ca3_rsa_pss2_key, - }, - {.name = "dsa key", - .pk = GNUTLS_PK_DSA, - .sig = GNUTLS_SIGN_DSA_SHA1, - .key = &dsa_key, - }, - {.name = "ed25519 key (PKCS#8)", - .pk = GNUTLS_PK_EDDSA_ED25519, - .sig = GNUTLS_SIGN_EDDSA_ED25519, - .key = &server_ca3_eddsa_key, - } -}; +static const test_st tests[] = { { + .name = "ecc key", + .pk = GNUTLS_PK_ECDSA, + .sig = GNUTLS_SIGN_ECDSA_SHA256, + .key = &server_ca3_ecc_key, + }, + { + .name = "rsa-sign key", + .pk = GNUTLS_PK_RSA, + .sig = GNUTLS_SIGN_RSA_SHA384, + .key = &server_ca3_key, + }, + { + .name = "rsa-pss-sign key (PKCS#8)", + .pk = GNUTLS_PK_RSA_PSS, + .sig = GNUTLS_SIGN_RSA_PSS_SHA256, + .key = &server_ca3_rsa_pss2_key, + }, + { + .name = "dsa key", + .pk = GNUTLS_PK_DSA, + .sig = GNUTLS_SIGN_DSA_SHA1, + .key = &dsa_key, + }, + { + .name = "ed25519 key (PKCS#8)", + .pk = GNUTLS_PK_EDDSA_ED25519, + .sig = GNUTLS_SIGN_EDDSA_ED25519, + .key = &server_ca3_eddsa_key, + } }; void doit(void) { diff --git a/tests/handshake-false-start.c b/tests/handshake-false-start.c index 07cca827d0..84c2a1d84c 100644 --- a/tests/handshake-false-start.c +++ b/tests/handshake-false-start.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -50,8 +50,9 @@ enum { TESTNO_MAX }; -#define myfail(fmt, ...) \ - fail("%s%s %d: "fmt, dtls?"dtls":"tls", name, testno, ##__VA_ARGS__) +#define myfail(fmt, ...) \ + fail("%s%s %d: " fmt, dtls ? "dtls" : "tls", name, testno, \ + ##__VA_ARGS__) static void try(const char *name, unsigned testno, unsigned fs, const char *prio, unsigned dhsize, unsigned dtls) @@ -68,10 +69,10 @@ static void try(const char *name, unsigned testno, unsigned fs, gnutls_certificate_credentials_t clientx509cred; gnutls_session_t client; int cret = GNUTLS_E_AGAIN; - const gnutls_datum_t p3_2048 = - { (void *)pkcs3_2048, strlen(pkcs3_2048) }; - const gnutls_datum_t p3_3072 = - { (void *)pkcs3_3072, strlen(pkcs3_3072) }; + const gnutls_datum_t p3_2048 = { (void *)pkcs3_2048, + strlen(pkcs3_2048) }; + const gnutls_datum_t p3_3072 = { (void *)pkcs3_3072, + strlen(pkcs3_3072) }; gnutls_dh_params_t dh_params; unsigned flags = 0; @@ -101,11 +102,10 @@ static void try(const char *name, unsigned testno, unsigned fs, gnutls_anon_set_server_dh_params(serveranoncred, dh_params); gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_ecc_cert, &server_ecc_key, + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_ecc_cert, + &server_ecc_key, GNUTLS_X509_FMT_PEM); gnutls_certificate_set_dh_params(serverx509cred, dh_params); @@ -128,15 +128,13 @@ static void try(const char *name, unsigned testno, unsigned fs, if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); - ret = - gnutls_init(&client, - GNUTLS_CLIENT | GNUTLS_ENABLE_FALSE_START | flags); + ret = gnutls_init(&client, + GNUTLS_CLIENT | GNUTLS_ENABLE_FALSE_START | flags); if (ret < 0) exit(1); @@ -161,20 +159,20 @@ static void try(const char *name, unsigned testno, unsigned fs, HANDSHAKE(client, server); - if ((gnutls_session_get_flags(client) & GNUTLS_SFLAGS_FALSE_START) - && !fs) { + if ((gnutls_session_get_flags(client) & GNUTLS_SFLAGS_FALSE_START) && + !fs) { myfail("false start occurred but not expected\n"); } - if (!(gnutls_session_get_flags(client) & GNUTLS_SFLAGS_FALSE_START) - && fs) { + if (!(gnutls_session_get_flags(client) & GNUTLS_SFLAGS_FALSE_START) && + fs) { myfail("false start expected but not happened\n"); } if (testno == TEST_SEND_RECV) { side = "client"; - ret = - gnutls_record_send(client, TESTDATA, sizeof(TESTDATA) - 1); + ret = gnutls_record_send(client, TESTDATA, + sizeof(TESTDATA) - 1); if (ret < 0) { myfail("error sending false start data: %s\n", gnutls_strerror(ret)); @@ -198,8 +196,8 @@ static void try(const char *name, unsigned testno, unsigned fs, } /* check handshake completion */ - ret = - gnutls_record_send(server, TESTDATA, sizeof(TESTDATA) - 1); + ret = gnutls_record_send(server, TESTDATA, + sizeof(TESTDATA) - 1); if (ret < 0) { myfail("error sending false start data: %s\n", gnutls_strerror(ret)); @@ -208,8 +206,8 @@ static void try(const char *name, unsigned testno, unsigned fs, side = "client"; do { - ret = - gnutls_record_recv(client, buffer, sizeof(buffer)); + ret = gnutls_record_recv(client, buffer, + sizeof(buffer)); } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) { myfail("error receiving data: %s\n", @@ -217,8 +215,8 @@ static void try(const char *name, unsigned testno, unsigned fs, } } else if (testno == TEST_RECV_SEND) { side = "server"; - ret = - gnutls_record_send(server, TESTDATA, sizeof(TESTDATA) - 1); + ret = gnutls_record_send(server, TESTDATA, + sizeof(TESTDATA) - 1); if (ret < 0) { myfail("error sending false start data: %s\n", gnutls_strerror(ret)); @@ -244,9 +242,8 @@ static void try(const char *name, unsigned testno, unsigned fs, /* explicit completion by caller */ ret = gnutls_handshake(client); if (ret != GNUTLS_E_HANDSHAKE_DURING_FALSE_START) { - myfail - ("error in explicit handshake after false start: %s\n", - gnutls_strerror(ret)); + myfail("error in explicit handshake after false start: %s\n", + gnutls_strerror(ret)); exit(1); } @@ -266,7 +263,7 @@ static void try(const char *name, unsigned testno, unsigned fs, } success("%5s%s \tok\n", dtls ? "dtls-" : "tls-", name); - exit: +exit: gnutls_deinit(client); gnutls_deinit(server); diff --git a/tests/handshake-large-cert.c b/tests/handshake-large-cert.c index 44cf144f28..6d4f557573 100644 --- a/tests/handshake-large-cert.c +++ b/tests/handshake-large-cert.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -36,18 +36,18 @@ int main(int argc, char **argv) #else -# include -# include -# include -# if !defined(_WIN32) -# include -# include -# endif -# include -# include -# include +#include +#include +#include +#if !defined(_WIN32) +#include +#include +#endif +#include +#include +#include -# include "utils.h" +#include "utils.h" /* This test checks whether a large certificate packet can be sent by * server and received by client. */ @@ -111,40 +111,39 @@ static void client(int sd, const char *prio) } static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIEowIBAAKCAQEAwJo7662RNezA254WRsXlbuzkPV5eNX7pX5Pj66T8/RKfz7rL\n" - "GpKs4fNxhhIMSUDjy2KbEQXPUH9MWROgU8V//CfcnagLYCHtniqRE+eXv0fCLwWU\n" - "SrA8n0qCBj94/NMA4kSmHf6dE5YdjDSpukyza5IshAuxZ32MDevE3JqMjvnZ5vY7\n" - "drJSfal0V5gof3/7J41ZVxl+WJph50e2pY1E27/hY8q5yQ3DXnE5kTQjX664ozQ8\n" - "UPtqGfkr4YjYe4e6PUWAjU27mQng0O0K+/w8gg6xBxN/AH3U7dg5/cY5IKDsN+Iq\n" - "4UrcCgXWjhosv9IlIXqzK7IBMMphPmRMCLMH2QIDAQABAoIBAGpOdxZdZdH6zHQr\n" - "rKYBouJ39H5+8MbcNtmfWmT9WvogZn8U3ffbz3qjkRxsJ8XjABiJY4egyk3nBXAB\n" - "KjQyxbKbGeUXFLhJ4cq0OgFfid11MRQdIz2aSsutJ1llfVUm7cz2ES5rE6305Hg3\n" - "tRr0LPAJ7XIwtgmmPUCNysnsr/pVrmPLfAnl/CfbLF2v/SfpbSpkgUTrZCNUMC44\n" - "929K4c7cFEM4SP6pUad6MipPzY/SmxZ9yhX3MsROcLp+XLCOOJhhkqoB6LWiess2\n" - "d7odweFRZ0Q0gBD/9EMMy3J5iUwfasf8b5n7z8AgPg9CeB+p/As2/RhRPXnwlS0A\n" - "2KrxWQECgYEA0wM+5fJeL91s19vozCqi3mKVXTv68aL9iQJQNJc4UQm+yu7JvMn9\n" - "koPri74QUpYkmyttaJsGNc90Oj54rSsR/cmEFJKgHOEAYSLeVetyO2XNoQvKdyB9\n" - "UVof6joMLxQ368YCahfz4ogHTQqpzN0BD2TTnKXwCXQDikN/EBb4fHkCgYEA6aov\n" - "8XVIVlxUY4VB/9PQ03OwxTLi+zTJMFJvNJozkat6MLJjAv2zxMt2kmlb0xx3wftD\n" - "VJKHIQCeZmU8qWEZS0G58OPg+TPvQPqdnZmRz3bGfW6F++IDAqV4DEhQ+zXQL8Js\n" - "j9+ocre+s0zXq1HkHgemBGOHy5/jN9cXnH3XTmECgYATRFiZ5mdzN2SY0RuQiNQW\n" - "OiopOTDQn3FG8U8hfi1GOP2Syfrhog/lMOZw/AnBgLQW9wAmbQFEKI0URGAAb85U\n" - "vfGxbzHvcRv3wpdKgRUNF16PNeRmvDC1HOWNHX+/TLlObeYKieVa6dDA2Bho/ET8\n" - "gthPlVc1hcJM/Zy8e1x1AQKBgQCuLDiugGDaVtpkkIlAu8/WPk9Ovv6oh5FMHrZb\n" - "/HFiLPLY56+cJCZjE9Kfkj9rHrY59yQaH1rwg7iO1PmhvAoRqb2DTSl+OHMn+WeR\n" - "eU5R2dRc3QysU60wxMy2QxVyG4vCfedUW0ABuutAVZARWOp0Y/khHluzscu57O/h\n" - "q3/ZIQKBgEXHmOjftWrkWV+/zfZT64k2Z1g7s3dpXW/SFK9jPrt6oqI1GNkYz6Ds\n" - "O1dUiPsNXDCLytUtvYrvrT3rJaPjJDRU2HrN/cYdxXgf6HSEr3Cdcpqyp/5rOOxD\n" - "ALEix6R4MZlsQV8FfgWjvTAET7NtY303JrCdFPqIigwl/PFGPLiB\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIIEowIBAAKCAQEAwJo7662RNezA254WRsXlbuzkPV5eNX7pX5Pj66T8/RKfz7rL\n" + "GpKs4fNxhhIMSUDjy2KbEQXPUH9MWROgU8V//CfcnagLYCHtniqRE+eXv0fCLwWU\n" + "SrA8n0qCBj94/NMA4kSmHf6dE5YdjDSpukyza5IshAuxZ32MDevE3JqMjvnZ5vY7\n" + "drJSfal0V5gof3/7J41ZVxl+WJph50e2pY1E27/hY8q5yQ3DXnE5kTQjX664ozQ8\n" + "UPtqGfkr4YjYe4e6PUWAjU27mQng0O0K+/w8gg6xBxN/AH3U7dg5/cY5IKDsN+Iq\n" + "4UrcCgXWjhosv9IlIXqzK7IBMMphPmRMCLMH2QIDAQABAoIBAGpOdxZdZdH6zHQr\n" + "rKYBouJ39H5+8MbcNtmfWmT9WvogZn8U3ffbz3qjkRxsJ8XjABiJY4egyk3nBXAB\n" + "KjQyxbKbGeUXFLhJ4cq0OgFfid11MRQdIz2aSsutJ1llfVUm7cz2ES5rE6305Hg3\n" + "tRr0LPAJ7XIwtgmmPUCNysnsr/pVrmPLfAnl/CfbLF2v/SfpbSpkgUTrZCNUMC44\n" + "929K4c7cFEM4SP6pUad6MipPzY/SmxZ9yhX3MsROcLp+XLCOOJhhkqoB6LWiess2\n" + "d7odweFRZ0Q0gBD/9EMMy3J5iUwfasf8b5n7z8AgPg9CeB+p/As2/RhRPXnwlS0A\n" + "2KrxWQECgYEA0wM+5fJeL91s19vozCqi3mKVXTv68aL9iQJQNJc4UQm+yu7JvMn9\n" + "koPri74QUpYkmyttaJsGNc90Oj54rSsR/cmEFJKgHOEAYSLeVetyO2XNoQvKdyB9\n" + "UVof6joMLxQ368YCahfz4ogHTQqpzN0BD2TTnKXwCXQDikN/EBb4fHkCgYEA6aov\n" + "8XVIVlxUY4VB/9PQ03OwxTLi+zTJMFJvNJozkat6MLJjAv2zxMt2kmlb0xx3wftD\n" + "VJKHIQCeZmU8qWEZS0G58OPg+TPvQPqdnZmRz3bGfW6F++IDAqV4DEhQ+zXQL8Js\n" + "j9+ocre+s0zXq1HkHgemBGOHy5/jN9cXnH3XTmECgYATRFiZ5mdzN2SY0RuQiNQW\n" + "OiopOTDQn3FG8U8hfi1GOP2Syfrhog/lMOZw/AnBgLQW9wAmbQFEKI0URGAAb85U\n" + "vfGxbzHvcRv3wpdKgRUNF16PNeRmvDC1HOWNHX+/TLlObeYKieVa6dDA2Bho/ET8\n" + "gthPlVc1hcJM/Zy8e1x1AQKBgQCuLDiugGDaVtpkkIlAu8/WPk9Ovv6oh5FMHrZb\n" + "/HFiLPLY56+cJCZjE9Kfkj9rHrY59yQaH1rwg7iO1PmhvAoRqb2DTSl+OHMn+WeR\n" + "eU5R2dRc3QysU60wxMy2QxVyG4vCfedUW0ABuutAVZARWOp0Y/khHluzscu57O/h\n" + "q3/ZIQKBgEXHmOjftWrkWV+/zfZT64k2Z1g7s3dpXW/SFK9jPrt6oqI1GNkYz6Ds\n" + "O1dUiPsNXDCLytUtvYrvrT3rJaPjJDRU2HrN/cYdxXgf6HSEr3Cdcpqyp/5rOOxD\n" + "ALEix6R4MZlsQV8FfgWjvTAET7NtY303JrCdFPqIigwl/PFGPLiB\n" + "-----END RSA PRIVATE KEY-----\n"; static void server(int sd, const char *prio) { gnutls_certificate_credentials_t serverx509cred; const gnutls_datum_t key = { server_key_pem, - sizeof(server_key_pem) - 1 - }; + sizeof(server_key_pem) - 1 }; int ret; gnutls_session_t session; gnutls_datum_t cert; @@ -166,8 +165,7 @@ static void server(int sd, const char *prio) assert(gnutls_load_file(cert_path, &cert) >= 0); assert(gnutls_certificate_allocate_credentials(&serverx509cred) >= 0); - assert(gnutls_certificate_set_x509_key_mem(serverx509cred, - &cert, &key, + assert(gnutls_certificate_set_x509_key_mem(serverx509cred, &cert, &key, GNUTLS_X509_FMT_PEM) >= 0); gnutls_free(cert.data); @@ -208,8 +206,7 @@ static void server(int sd, const char *prio) success("server: finished\n"); } -static -void start(const char *name, const char *prio) +static void start(const char *name, const char *prio) { pid_t child; int sockets[2]; @@ -255,4 +252,4 @@ void doit(void) start("default", "NORMAL"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/handshake-large-packet.c b/tests/handshake-large-packet.c index 8e2d2833e0..02bcd4bca3 100644 --- a/tests/handshake-large-packet.c +++ b/tests/handshake-large-packet.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -36,19 +36,19 @@ int main(int argc, char **argv) #else -# include -# include -# include -# if !defined(_WIN32) -# include -# include -# endif -# include -# include -# include +#include +#include +#include +#if !defined(_WIN32) +#include +#include +#endif +#include +#include +#include -# include "utils.h" -# include "cert-common.h" +#include "utils.h" +#include "cert-common.h" /* This test checks whether a large handshake packet is accepted by client * and by server. (large is around 64kb) @@ -60,16 +60,16 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -# define TLSEXT_TYPE1 0xFA -# define TLSEXT_TYPE2 0xFB -# define TLSEXT_TYPE3 0xFC -# define TLSEXT_TYPE4 0xFD -# define TLSEXT_TYPE5 0xFE +#define TLSEXT_TYPE1 0xFA +#define TLSEXT_TYPE2 0xFB +#define TLSEXT_TYPE3 0xFC +#define TLSEXT_TYPE4 0xFD +#define TLSEXT_TYPE5 0xFE static int TLSEXT_TYPE_server_sent = 0; static int TLSEXT_TYPE_client_received = 0; -# define MAX_SIZE (12*1024) +#define MAX_SIZE (12 * 1024) static int ext_recv_client_params(gnutls_session_t session, const unsigned char *buf, size_t buflen) @@ -79,7 +79,7 @@ static int ext_recv_client_params(gnutls_session_t session, TLSEXT_TYPE_client_received++; - return 0; //Success + return 0; //Success } static int ext_send_client_params(gnutls_session_t session, @@ -97,7 +97,7 @@ static int ext_send_client_params(gnutls_session_t session, static int ext_recv_server_params(gnutls_session_t session, const unsigned char *buf, size_t buflen) { - return 0; //Success + return 0; //Success } static int ext_send_server_params(gnutls_session_t session, @@ -183,7 +183,7 @@ static void client(int sd, const char *prio) gnutls_bye(session, GNUTLS_SHUT_RDWR); - end: +end: close(sd); gnutls_deinit(session); @@ -209,9 +209,8 @@ static void server(int sd, const char *prio) side = "server"; gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&session, GNUTLS_SERVER); @@ -278,8 +277,7 @@ static void server(int sd, const char *prio) success("server: finished\n"); } -static -void start(const char *prio) +static void start(const char *prio) { pid_t child; int sockets[2]; @@ -325,4 +323,4 @@ void doit(void) start("NORMAL"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/handshake-timeout.c b/tests/handshake-timeout.c index 53087aff70..150988e1c4 100644 --- a/tests/handshake-timeout.c +++ b/tests/handshake-timeout.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -37,17 +37,17 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" /* This program tests whether the handshake timeout value is enforced. */ @@ -83,9 +83,8 @@ static void client(int fd, int tmo_ms) gnutls_handshake_set_timeout(session, tmo_ms); /* Use default priorities */ - gnutls_priority_set_direct(session, - "NORMAL:+ANON-ECDH:-VERS-ALL:+VERS-TLS1.2", - NULL); + gnutls_priority_set_direct( + session, "NORMAL:+ANON-ECDH:-VERS-ALL:+VERS-TLS1.2", NULL); /* put the anonymous credentials to the current session */ @@ -97,8 +96,7 @@ static void client(int fd, int tmo_ms) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); gnutls_deinit(session); gnutls_anon_free_client_credentials(anoncred); @@ -147,9 +145,8 @@ static void server(int fd, int tmo_ms) /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NORMAL:+ANON-ECDH:-VERS-ALL:+VERS-TLS1.2", - NULL); + gnutls_priority_set_direct( + session, "NORMAL:+ANON-ECDH:-VERS-ALL:+VERS-TLS1.2", NULL); gnutls_credentials_set(session, GNUTLS_CRD_ANON, anoncred); @@ -159,12 +156,12 @@ static void server(int fd, int tmo_ms) char buf[32]; // read until client closes connection - while (read(fd, buf, sizeof(buf)) > 0) ; + while (read(fd, buf, sizeof(buf)) > 0) + ; } else { do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret == 0) gnutls_bye(session, GNUTLS_SHUT_RDWR); @@ -234,4 +231,4 @@ void doit(void) start(1000); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/handshake-versions.c b/tests/handshake-versions.c index 38b83a398e..09b027d563 100644 --- a/tests/handshake-versions.c +++ b/tests/handshake-versions.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -65,9 +65,8 @@ static void try(unsigned char major, unsigned char minor, int ret1, int ret2) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); @@ -83,9 +82,8 @@ static void try(unsigned char major, unsigned char minor, int ret1, int ret2) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); diff --git a/tests/handshake-write.c b/tests/handshake-write.c index f1385039da..8e5cd603f3 100644 --- a/tests/handshake-write.c +++ b/tests/handshake-write.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -47,10 +47,11 @@ static void tls_log_func(int level, const char *str) } #define MAX_BUF 1024 -#define MSG "Hello TLS, and hi and how are you and more data here... and more... and even more and even more more data..." +#define MSG \ + "Hello TLS, and hi and how are you and more data here... and more... and even more and even more more data..." -static ssize_t -error_push(gnutls_transport_ptr_t tr, const void *data, size_t len) +static ssize_t error_push(gnutls_transport_ptr_t tr, const void *data, + size_t len) { fail("push_func called unexpectedly"); return -1; @@ -62,11 +63,10 @@ static ssize_t error_pull(gnutls_transport_ptr_t tr, void *data, size_t len) return -1; } -static int -handshake_read_func(gnutls_session_t session, - gnutls_record_encryption_level_t level, - gnutls_handshake_description_t htype, - const void *data, size_t data_size) +static int handshake_read_func(gnutls_session_t session, + gnutls_record_encryption_level_t level, + gnutls_handshake_description_t htype, + const void *data, size_t data_size) { gnutls_session_t peer = gnutls_session_get_ptr(session); @@ -98,10 +98,9 @@ static void run(const char *name, const char *prio) /* Init server */ assert(gnutls_certificate_allocate_credentials(&scred) >= 0); - assert(gnutls_certificate_set_x509_key_mem(scred, - &server_ca3_localhost_cert, - &server_ca3_key, - GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem( + scred, &server_ca3_localhost_cert, &server_ca3_key, + GNUTLS_X509_FMT_PEM) >= 0); assert(gnutls_init(&server, GNUTLS_SERVER) >= 0); assert(gnutls_priority_set_direct(server, prio, NULL) >= 0); @@ -112,8 +111,8 @@ static void run(const char *name, const char *prio) /* Init client */ assert(gnutls_certificate_allocate_credentials(&ccred) >= 0); - assert(gnutls_certificate_set_x509_trust_mem - (ccred, &ca3_cert, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_trust_mem(ccred, &ca3_cert, + GNUTLS_X509_FMT_PEM) >= 0); gnutls_init(&client, GNUTLS_CLIENT); assert(gnutls_priority_set_direct(client, prio, NULL) >= 0); diff --git a/tests/hex.c b/tests/hex.c index c5b3b6a58d..9443408210 100644 --- a/tests/hex.c +++ b/tests/hex.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,7 +33,7 @@ #include "utils.h" -static void encode(const char *test_name, const gnutls_datum_t * raw, +static void encode(const char *test_name, const gnutls_datum_t *raw, const char *expected) { int ret; @@ -47,12 +47,14 @@ static void encode(const char *test_name, const gnutls_datum_t * raw, } if (strlen(expected) != out.size) { - fail("%s: gnutls_hex_encode2: output has incorrect size (%d, expected %d)\n", test_name, (int)out.size, (int)strlen(expected)); + fail("%s: gnutls_hex_encode2: output has incorrect size (%d, expected %d)\n", + test_name, (int)out.size, (int)strlen(expected)); exit(1); } if (strncasecmp(expected, (char *)out.data, out.size) != 0) { - fail("%s: gnutls_hex_encode2: output does not match the expected\n", test_name); + fail("%s: gnutls_hex_encode2: output does not match the expected\n", + test_name); exit(1); } @@ -68,12 +70,14 @@ static void encode(const char *test_name, const gnutls_datum_t * raw, } if (raw->size != out.size) { - fail("%s: gnutls_hex_decode2: output has incorrect size (%d, expected %d)\n", test_name, out.size, raw->size); + fail("%s: gnutls_hex_decode2: output has incorrect size (%d, expected %d)\n", + test_name, out.size, raw->size); exit(1); } if (memcmp(raw->data, out.data, out.size) != 0) { - fail("%s: gnutls_hex_decode2: output does not match the expected\n", test_name); + fail("%s: gnutls_hex_decode2: output does not match the expected\n", + test_name); exit(1); } @@ -82,7 +86,7 @@ static void encode(const char *test_name, const gnutls_datum_t * raw, return; } -static void decode(const char *test_name, const gnutls_datum_t * raw, +static void decode(const char *test_name, const gnutls_datum_t *raw, const char *hex, int res) { int ret; @@ -92,7 +96,7 @@ static void decode(const char *test_name, const gnutls_datum_t * raw, in.size = strlen(hex); ret = gnutls_hex_decode2(&in, &out); if (ret < 0) { - if (res == ret) /* expected */ + if (res == ret) /* expected */ return; fail("%s: gnutls_hex_decode2: %d/%s\n", test_name, ret, gnutls_strerror(ret)); @@ -100,17 +104,20 @@ static void decode(const char *test_name, const gnutls_datum_t * raw, } if (res != 0) { - fail("%s: gnutls_hex_decode2: expected failure, but succeeded!\n", test_name); + fail("%s: gnutls_hex_decode2: expected failure, but succeeded!\n", + test_name); exit(1); } if (raw->size != out.size) { - fail("%s: gnutls_hex_decode2: output has incorrect size (%d, expected %d)\n", test_name, out.size, raw->size); + fail("%s: gnutls_hex_decode2: output has incorrect size (%d, expected %d)\n", + test_name, out.size, raw->size); exit(1); } if (memcmp(raw->data, out.data, out.size) != 0) { - fail("%s: gnutls_hex_decode2: output does not match the expected\n", test_name); + fail("%s: gnutls_hex_decode2: output does not match the expected\n", + test_name); exit(1); } @@ -119,7 +126,7 @@ static void decode(const char *test_name, const gnutls_datum_t * raw, return; } -static void decode2(const char *test_name, const gnutls_datum_t * raw, +static void decode2(const char *test_name, const gnutls_datum_t *raw, const char *hex, int res) { int ret; @@ -129,7 +136,7 @@ static void decode2(const char *test_name, const gnutls_datum_t * raw, outlen = sizeof(output); ret = gnutls_hex2bin(hex, strlen(hex), output, &outlen); if (ret < 0) { - if (res == ret) /* expected */ + if (res == ret) /* expected */ return; fail("%s: gnutls_hex2bin: %d/%s\n", test_name, ret, gnutls_strerror(ret)); @@ -143,7 +150,8 @@ static void decode2(const char *test_name, const gnutls_datum_t * raw, } if (raw->size != outlen) { - fail("%s: gnutls_hex2bin: output has incorrect size (%d, expected %d)\n", test_name, (int)outlen, raw->size); + fail("%s: gnutls_hex2bin: output has incorrect size (%d, expected %d)\n", + test_name, (int)outlen, raw->size); exit(1); } @@ -163,20 +171,14 @@ struct encode_tests_st { }; struct encode_tests_st encode_tests[] = { - { - .name = "rnd1", - .hex = "f69a468a84697a2883da52cd602f3978", - .raw = {(void *) - "\xf6\x9a\x46\x8a\x84\x69\x7a\x28\x83\xda\x52\xcd\x60\x2f\x39\x78", - 16} - }, - { - .name = "rnd2", - .hex = "2c9ffb8546774ed3c8cf6765739f98bc42def9", - .raw = {(void *) - "\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", - 19} - } + { .name = "rnd1", + .hex = "f69a468a84697a2883da52cd602f3978", + .raw = { (void *)"\xf6\x9a\x46\x8a\x84\x69\x7a\x28\x83\xda\x52\xcd\x60\x2f\x39\x78", + 16 } }, + { .name = "rnd2", + .hex = "2c9ffb8546774ed3c8cf6765739f98bc42def9", + .raw = { (void *)"\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", + 19 } } }; struct decode_tests_st { @@ -188,38 +190,30 @@ struct decode_tests_st { }; struct decode_tests_st decode_tests[] = { - { - .name = "dec-rnd1", - .hex = "f69a468a84697a2883da52cd602f3978", - .raw = {(void *) - "\xf6\x9a\x46\x8a\x84\x69\x7a\x28\x83\xda\x52\xcd\x60\x2f\x39\x78", - 16}, - .res = 0, - .hex2bin_res = 0}, - { - .name = "dec-rnd2", - .hex = "2c9ffb8546774ed3c8cf6765739f98bc42def9", - .raw = {(void *) - "\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", - 19}, - .res = 0, - .hex2bin_res = 0}, - { - .name = "dec-colon", - .hex = "2c:9f:fb:85:46:77:4e:d3:c8:cf:67:65:73:9f:98:bc:42:de:f9", - .raw = {(void *) - "\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", - 19}, - .res = GNUTLS_E_PARSING_ERROR, - .hex2bin_res = 0}, - { - .name = "dec-odd-len", - .hex = "2c9ffb8546774ed3c8cf6765739f98bc42def9a", - .raw = {(void *) - "\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", - 19}, - .res = GNUTLS_E_PARSING_ERROR, - .hex2bin_res = GNUTLS_E_PARSING_ERROR} + { .name = "dec-rnd1", + .hex = "f69a468a84697a2883da52cd602f3978", + .raw = { (void *)"\xf6\x9a\x46\x8a\x84\x69\x7a\x28\x83\xda\x52\xcd\x60\x2f\x39\x78", + 16 }, + .res = 0, + .hex2bin_res = 0 }, + { .name = "dec-rnd2", + .hex = "2c9ffb8546774ed3c8cf6765739f98bc42def9", + .raw = { (void *)"\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", + 19 }, + .res = 0, + .hex2bin_res = 0 }, + { .name = "dec-colon", + .hex = "2c:9f:fb:85:46:77:4e:d3:c8:cf:67:65:73:9f:98:bc:42:de:f9", + .raw = { (void *)"\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", + 19 }, + .res = GNUTLS_E_PARSING_ERROR, + .hex2bin_res = 0 }, + { .name = "dec-odd-len", + .hex = "2c9ffb8546774ed3c8cf6765739f98bc42def9a", + .raw = { (void *)"\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", + 19 }, + .res = GNUTLS_E_PARSING_ERROR, + .hex2bin_res = GNUTLS_E_PARSING_ERROR } }; void doit(void) diff --git a/tests/hex.h b/tests/hex.h index f388059c51..091ec21592 100644 --- a/tests/hex.h +++ b/tests/hex.h @@ -20,11 +20,11 @@ */ #ifndef GNUTLS_TESTS_HEX_H -# define GNUTLS_TESTS_HEX_H +#define GNUTLS_TESTS_HEX_H -# include -# include -# include +#include +#include +#include inline static gnutls_datum_t SHEX(const char *hex) { @@ -47,4 +47,4 @@ inline static gnutls_datum_t SDATA(const char *txt) return output; } -#endif /* GNUTLS_TESTS_HEX_H */ +#endif /* GNUTLS_TESTS_HEX_H */ diff --git a/tests/hostname-check-utf8.c b/tests/hostname-check-utf8.c index 7304fedc5c..0c7dcf385d 100644 --- a/tests/hostname-check-utf8.c +++ b/tests/hostname-check-utf8.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,7 +30,7 @@ #if defined(HAVE_LIBIDN2) /* to obtain version */ -# include +#include #endif #include "utils.h" @@ -40,62 +40,63 @@ certificates. */ -char pem_inv_utf8_dns[] = "\n" - " Subject Alternative Name (not critical):\n" - " DNSname: γγγ.τόστ.gr\n" - " DNSname: τέστ.gr\n" - " DNSname: *.teχ.gr\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIDWzCCAkOgAwIBAgIMU/SjEDp2nsS3kX9vMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTAwIhgPMjAxNDA4MjAxMzMwNTZaGA85OTk5MTIzMTIzNTk1OVow\n" - "EzERMA8GA1UEAxMIc2VydmVyLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" - "AoIBAQDggz41h9PcOjL7UOqx0FfZNtqoRhYQn6bVQqCehwERMDlR4QOqK3LRqE2B\n" - "cYyVlcdS63tnNFjYCLCz3/CV4rcJBNI3hfFZHUza70iFQ72xMvcgFPyl7UmXqIne\n" - "8swJ9jLMKou350ztPhshhXORqKxaDHBMcgD/Ade3Yxo2N1smsyINK+riged7A4QD\n" - "O9IgR9eERQbFrHGz+WgUUgoLFLF4DN1ANpWuZcOV1f9bRB8ADPyKo1yZY1sJj1gE\n" - "JRRsiOZLSLZ9D/1MLM7BXPuxWmWlJAGfNvrcXX/7FHe6QxC5gi1C6ZUEIZCne+Is\n" - "HpDNoz/A9vDn6iXZJBFXKyijNpVfAgMBAAGjga4wgaswDAYDVR0TAQH/BAIwADA1\n" - "BgNVHREELjAsghLOs86zzrMuz4TPjM+Dz4QuZ3KCC8+Ezq3Pg8+ELmdyggkqLnRl\n" - "z4cuZ3IwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYDVR0PAQH/BAUDAwegADAdBgNV\n" - "HQ4EFgQUvjD8gT+By/Xj/n+SGCVvL/KVElMwHwYDVR0jBBgwFoAUhU7w94kERpAh\n" - "6DEIh3nEVJnwSaUwDQYJKoZIhvcNAQELBQADggEBAIKuSREAd6ZdcS+slbx+hvew\n" - "IRBz5QGlCCjR4Oj5arIwFGnh0GdvAgzPa3qn6ReG1gvpe8k3X6Z2Yevw+DubLZNG\n" - "9CsfLfDIg2wUm05cuQdQG+gTSBVqw56jWf/JFXXwzhnbjX3c2QtepFsvkOnlWGFE\n" - "uVX6AiPfiNChVxnb4e1xpxOt6W/su19ar5J7rdDrdyVVm/ioSKvXhbBXI4f8NF2x\n" - "wTEzbtl99HyjbLIRRCWpUU277khHLr8SSFqdSr100zIkdiB72LfPXAHVld1onV2z\n" - "PPFYVMsnY+fuxIsTVErX3bLj6v67Bs3BNzagFUlyJl5rBGwn73UafNWz3BYDyxY=\n" - "-----END CERTIFICATE-----\n"; +char pem_inv_utf8_dns[] = + "\n" + " Subject Alternative Name (not critical):\n" + " DNSname: γγγ.τόστ.gr\n" + " DNSname: τέστ.gr\n" + " DNSname: *.teχ.gr\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIDWzCCAkOgAwIBAgIMU/SjEDp2nsS3kX9vMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTAwIhgPMjAxNDA4MjAxMzMwNTZaGA85OTk5MTIzMTIzNTk1OVow\n" + "EzERMA8GA1UEAxMIc2VydmVyLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" + "AoIBAQDggz41h9PcOjL7UOqx0FfZNtqoRhYQn6bVQqCehwERMDlR4QOqK3LRqE2B\n" + "cYyVlcdS63tnNFjYCLCz3/CV4rcJBNI3hfFZHUza70iFQ72xMvcgFPyl7UmXqIne\n" + "8swJ9jLMKou350ztPhshhXORqKxaDHBMcgD/Ade3Yxo2N1smsyINK+riged7A4QD\n" + "O9IgR9eERQbFrHGz+WgUUgoLFLF4DN1ANpWuZcOV1f9bRB8ADPyKo1yZY1sJj1gE\n" + "JRRsiOZLSLZ9D/1MLM7BXPuxWmWlJAGfNvrcXX/7FHe6QxC5gi1C6ZUEIZCne+Is\n" + "HpDNoz/A9vDn6iXZJBFXKyijNpVfAgMBAAGjga4wgaswDAYDVR0TAQH/BAIwADA1\n" + "BgNVHREELjAsghLOs86zzrMuz4TPjM+Dz4QuZ3KCC8+Ezq3Pg8+ELmdyggkqLnRl\n" + "z4cuZ3IwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYDVR0PAQH/BAUDAwegADAdBgNV\n" + "HQ4EFgQUvjD8gT+By/Xj/n+SGCVvL/KVElMwHwYDVR0jBBgwFoAUhU7w94kERpAh\n" + "6DEIh3nEVJnwSaUwDQYJKoZIhvcNAQELBQADggEBAIKuSREAd6ZdcS+slbx+hvew\n" + "IRBz5QGlCCjR4Oj5arIwFGnh0GdvAgzPa3qn6ReG1gvpe8k3X6Z2Yevw+DubLZNG\n" + "9CsfLfDIg2wUm05cuQdQG+gTSBVqw56jWf/JFXXwzhnbjX3c2QtepFsvkOnlWGFE\n" + "uVX6AiPfiNChVxnb4e1xpxOt6W/su19ar5J7rdDrdyVVm/ioSKvXhbBXI4f8NF2x\n" + "wTEzbtl99HyjbLIRRCWpUU277khHLr8SSFqdSr100zIkdiB72LfPXAHVld1onV2z\n" + "PPFYVMsnY+fuxIsTVErX3bLj6v67Bs3BNzagFUlyJl5rBGwn73UafNWz3BYDyxY=\n" + "-----END CERTIFICATE-----\n"; char pem_utf8_dns[] = - "Subject Alternative Name (not critical):\n" - " DNSname: xn--oxaaa.xn--4xabb4a.gr (γγγ.τόστ.gr)\n" - " DNSname: xn--ixa8bbc.gr (τέστ.gr)\n" - " DNSname: *.xn--te-8bc.gr (*.teχ.gr)\n" - "\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIEFTCCAn2gAwIBAgIMWElZgiWN43F5pluiMA0GCSqGSIb3DQEBCwUAMA0xCzAJ\n" - "BgNVBAYTAkdSMB4XDTA0MDIyOTE1MjE0MloXDTI0MDIyOTE1MjE0MVowDTELMAkG\n" - "A1UEBhMCR1IwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC23cZ4hvts\n" - "D/zjXmX70ewCWpFaOXXhSiB1U4ogVsIYPh0o3eJ3w2vr8k7f8CHZXT9T64g9UYoH\n" - "PM+vPkcT6RnwHNfe6SpSqTtPCNC9UQyp4wVq+HxnQsxOrmf2bClYn6CGaXQvDNiG\n" - "KQCDGoxLZx+d12dYUxL4l07J3rogk7Wqe9znkpC+9UqyDJIAZgF9e4H190sRY0FM\n" - "zrOkDDDmt/vBlu0SPhP0sktUJDjvOtHY/V2IDp0y9tImxnFhdl5k4kAEiPiph72C\n" - "QjSRf/Kb5siUcgRxmTvN9GgWNPg3EtmyynMjIlnzicO1p6Wju80hAuVhYKOI3aq6\n" - "FAUHY0DQkkna7dcmKwJdUo9jzMWBV+B+eOT69rDKcAvQJz5PfrrnE9SJ4/eteam7\n" - "l4BcIZIKSuaZz48ymh6exEpSY+P3SD05oZbeQVfgi4e7Ui81S63XRlPqLPCYp0+N\n" - "q2nSeVedR59AtQhyGhQLgQneV0R17aym+1nJ8AjsZXL7sfYef/OOxeMCAwEAAaN1\n" - "MHMwDAYDVR0TAQH/BAIwADBEBgNVHREEPTA7ghh4bi0tb3hhYWEueG4tLTR4YWJi\n" - "NGEuZ3KCDnhuLS1peGE4YmJjLmdygg8qLnhuLS10ZS04YmMuZ3IwHQYDVR0OBBYE\n" - "FPmohhljtqQUE2B2DwGaNTbv8bSvMA0GCSqGSIb3DQEBCwUAA4IBgQAOAECgc096\n" - "3WH7G83bRmVDooGATNP0v3cmYebVu3RL77/vlCO3UOS9lVxEwlF/6V1u3OqEqwUy\n" - "EzGInEAmqR/VIoubIVrFqzaMMjfCHdKPuyWeCb3ylp0o2lxRKbC9m/Bu8Iv5rZdN\n" - "fTZVyJbp1Ddw4GhM0UZ/IK3h8J8UtarSijhha0UX9EwQo4wi1NRpc2nxRGy7xUHG\n" - "GqUCFBe6cgKBEBRWh3Gha5UgwqkapA9eGGmb7CRzOHZA0raIcxwb2w2Htf7ziE1G\n" - "UBdo0ZtpVYq/EDggP4XIvqHb8bJVFuOiu2xf71JoPgjg4+1CEj+vgkI4j/RGDjZ/\n" - "bQ66XHY2EbCjhSLoCGpY924frilrFL3cMofdMguxtsONwUotYmCF6VI/EtELvIdf\n" - "NbdaPqI2524oBDlD98DTJa5mGoaFUyJGotcK3e9fniIxbVW8/Ykwhqbj+9wKjYEP\n" - "ywY/9UOj+wjwULkIxK9g91yGLRDAO/6xzCF5ly5i4oXBqKLAKZ7vBTU=\n" - "-----END CERTIFICATE-----\n"; + "Subject Alternative Name (not critical):\n" + " DNSname: xn--oxaaa.xn--4xabb4a.gr (γγγ.τόστ.gr)\n" + " DNSname: xn--ixa8bbc.gr (τέστ.gr)\n" + " DNSname: *.xn--te-8bc.gr (*.teχ.gr)\n" + "\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIEFTCCAn2gAwIBAgIMWElZgiWN43F5pluiMA0GCSqGSIb3DQEBCwUAMA0xCzAJ\n" + "BgNVBAYTAkdSMB4XDTA0MDIyOTE1MjE0MloXDTI0MDIyOTE1MjE0MVowDTELMAkG\n" + "A1UEBhMCR1IwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC23cZ4hvts\n" + "D/zjXmX70ewCWpFaOXXhSiB1U4ogVsIYPh0o3eJ3w2vr8k7f8CHZXT9T64g9UYoH\n" + "PM+vPkcT6RnwHNfe6SpSqTtPCNC9UQyp4wVq+HxnQsxOrmf2bClYn6CGaXQvDNiG\n" + "KQCDGoxLZx+d12dYUxL4l07J3rogk7Wqe9znkpC+9UqyDJIAZgF9e4H190sRY0FM\n" + "zrOkDDDmt/vBlu0SPhP0sktUJDjvOtHY/V2IDp0y9tImxnFhdl5k4kAEiPiph72C\n" + "QjSRf/Kb5siUcgRxmTvN9GgWNPg3EtmyynMjIlnzicO1p6Wju80hAuVhYKOI3aq6\n" + "FAUHY0DQkkna7dcmKwJdUo9jzMWBV+B+eOT69rDKcAvQJz5PfrrnE9SJ4/eteam7\n" + "l4BcIZIKSuaZz48ymh6exEpSY+P3SD05oZbeQVfgi4e7Ui81S63XRlPqLPCYp0+N\n" + "q2nSeVedR59AtQhyGhQLgQneV0R17aym+1nJ8AjsZXL7sfYef/OOxeMCAwEAAaN1\n" + "MHMwDAYDVR0TAQH/BAIwADBEBgNVHREEPTA7ghh4bi0tb3hhYWEueG4tLTR4YWJi\n" + "NGEuZ3KCDnhuLS1peGE4YmJjLmdygg8qLnhuLS10ZS04YmMuZ3IwHQYDVR0OBBYE\n" + "FPmohhljtqQUE2B2DwGaNTbv8bSvMA0GCSqGSIb3DQEBCwUAA4IBgQAOAECgc096\n" + "3WH7G83bRmVDooGATNP0v3cmYebVu3RL77/vlCO3UOS9lVxEwlF/6V1u3OqEqwUy\n" + "EzGInEAmqR/VIoubIVrFqzaMMjfCHdKPuyWeCb3ylp0o2lxRKbC9m/Bu8Iv5rZdN\n" + "fTZVyJbp1Ddw4GhM0UZ/IK3h8J8UtarSijhha0UX9EwQo4wi1NRpc2nxRGy7xUHG\n" + "GqUCFBe6cgKBEBRWh3Gha5UgwqkapA9eGGmb7CRzOHZA0raIcxwb2w2Htf7ziE1G\n" + "UBdo0ZtpVYq/EDggP4XIvqHb8bJVFuOiu2xf71JoPgjg4+1CEj+vgkI4j/RGDjZ/\n" + "bQ66XHY2EbCjhSLoCGpY924frilrFL3cMofdMguxtsONwUotYmCF6VI/EtELvIdf\n" + "NbdaPqI2524oBDlD98DTJa5mGoaFUyJGotcK3e9fniIxbVW8/Ykwhqbj+9wKjYEP\n" + "ywY/9UOj+wjwULkIxK9g91yGLRDAO/6xzCF5ly5i4oXBqKLAKZ7vBTU=\n" + "-----END CERTIFICATE-----\n"; void doit(void) { diff --git a/tests/hostname-check.c b/tests/hostname-check.c index 358350dd24..3cccae8139 100644 --- a/tests/hostname-check.c +++ b/tests/hostname-check.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -40,754 +40,769 @@ * dns_name = .example.net * dns_name = .example.edu.gr */ -char wildcards[] = "-----BEGIN CERTIFICATE-----" - "MIICwDCCAimgAwIBAgICPd8wDQYJKoZIhvcNAQELBQAwVTEOMAwGA1UEAwwFKi5j" - "b20xETAPBgNVBAsTCENBIGRlcHQuMRIwEAYDVQQKEwlLb2tvIGluYy4xDzANBgNV" - "BAgTBkF0dGlraTELMAkGA1UEBhMCR1IwIhgPMjAxNDAzMTkxMzI4MDhaGA85OTk5" - "MTIzMTIzNTk1OVowVTEOMAwGA1UEAwwFKi5jb20xETAPBgNVBAsTCENBIGRlcHQu" - "MRIwEAYDVQQKEwlLb2tvIGluYy4xDzANBgNVBAgTBkF0dGlraTELMAkGA1UEBhMC" - "R1IwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKXGznVDhL9kngInE/EDWfd5" - "LZLtfC9QpAPxLXm5hosFfjq7RKqvhM8TmB4cSjj3My16n3LUa20msDE3cBD7QunY" - "nRhlfhlJ/AWWBGiDHneGv+315RI7E/4zGJwaeh1pr0cCYHofuejP28g0MFGWPYyW" - "XAC8Yd4ID7E2IX+pAOMFAgMBAAGjgZowgZcwDAYDVR0TAQH/BAIwADBCBgNVHREE" - "OzA5gg93d3cuZXhhbXBsZS5jb22CBSoub3Jngg0qLmV4YW1wbGUubmV0ghAqLmV4" - "YW1wbGUuZWR1LmdyMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA8GA1UdDwEB/wQFAwMH" - "oAAwHQYDVR0OBBYEFF1ArfDOlECVi36ZlB2SVCLKcjZfMA0GCSqGSIb3DQEBCwUA" - "A4GBAGcDnJIJFqjaDMk806xkfz7/FtbHYkj18ma3l7wgp27jeO/QDYunns5pqbqV" - "sxaKuPKLdWQdfIG7l4+TUnm/Hue6h2PFgbAyZtZbHlAtpEmLoSCmYlFqbRNqux0z" - "F5H1ocGzmbu1WQYXMlY1FYBvRDrAk7Wxt09WLdajH00S/fPT" - "-----END CERTIFICATE-----"; +char wildcards[] = + "-----BEGIN CERTIFICATE-----" + "MIICwDCCAimgAwIBAgICPd8wDQYJKoZIhvcNAQELBQAwVTEOMAwGA1UEAwwFKi5j" + "b20xETAPBgNVBAsTCENBIGRlcHQuMRIwEAYDVQQKEwlLb2tvIGluYy4xDzANBgNV" + "BAgTBkF0dGlraTELMAkGA1UEBhMCR1IwIhgPMjAxNDAzMTkxMzI4MDhaGA85OTk5" + "MTIzMTIzNTk1OVowVTEOMAwGA1UEAwwFKi5jb20xETAPBgNVBAsTCENBIGRlcHQu" + "MRIwEAYDVQQKEwlLb2tvIGluYy4xDzANBgNVBAgTBkF0dGlraTELMAkGA1UEBhMC" + "R1IwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKXGznVDhL9kngInE/EDWfd5" + "LZLtfC9QpAPxLXm5hosFfjq7RKqvhM8TmB4cSjj3My16n3LUa20msDE3cBD7QunY" + "nRhlfhlJ/AWWBGiDHneGv+315RI7E/4zGJwaeh1pr0cCYHofuejP28g0MFGWPYyW" + "XAC8Yd4ID7E2IX+pAOMFAgMBAAGjgZowgZcwDAYDVR0TAQH/BAIwADBCBgNVHREE" + "OzA5gg93d3cuZXhhbXBsZS5jb22CBSoub3Jngg0qLmV4YW1wbGUubmV0ghAqLmV4" + "YW1wbGUuZWR1LmdyMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA8GA1UdDwEB/wQFAwMH" + "oAAwHQYDVR0OBBYEFF1ArfDOlECVi36ZlB2SVCLKcjZfMA0GCSqGSIb3DQEBCwUA" + "A4GBAGcDnJIJFqjaDMk806xkfz7/FtbHYkj18ma3l7wgp27jeO/QDYunns5pqbqV" + "sxaKuPKLdWQdfIG7l4+TUnm/Hue6h2PFgbAyZtZbHlAtpEmLoSCmYlFqbRNqux0z" + "F5H1ocGzmbu1WQYXMlY1FYBvRDrAk7Wxt09WLdajH00S/fPT" + "-----END CERTIFICATE-----"; /* Certificate with no SAN nor CN. */ char pem1[] = - "X.509 Certificate Information:\n" - " Version: 3\n" - " Serial Number (hex): 00\n" - " Issuer: O=GnuTLS hostname check test CA\n" - " Validity:\n" - " Not Before: Fri Feb 16 12:59:09 UTC 2007\n" - " Not After: Fri Mar 30 12:59:13 UTC 2007\n" - " Subject: O=GnuTLS hostname check test CA\n" - " Subject Public Key Algorithm: RSA\n" - " Modulus (bits 1024):\n" - " be:ec:98:7a:1d:6f:7e:6b:25:9e:e8:20:78:42:a0:64\n" - " 05:66:43:99:6d:49:d5:18:ec:7d:b9:58:64:b2:80:a3\n" - " 14:61:9d:0a:4f:be:2f:f0:2e:fc:d2:ab:5c:36:df:53\n" - " ec:43:c7:fc:de:91:bc:1e:01:a6:b7:6c:b2:07:10:2e\n" - " cb:61:47:75:ca:03:ce:23:6e:38:f1:34:27:1a:1a:cd\n" - " f7:96:f3:b3:f0:0d:67:7f:ca:77:84:3f:9c:29:f4:62\n" - " 91:f6:12:5b:62:5a:cc:ba:ed:08:2e:32:44:26:ac:fd\n" - " 23:ce:53:1b:bb:f2:87:fe:dc:78:93:7c:59:bf:a1:75\n" - " Exponent:\n" - " 01:00:01\n" - " Extensions:\n" - " Basic Constraints (critical):\n" - " Certificate Authority (CA): TRUE\n" - " Subject Key Identifier (not critical):\n" - " e93c1cfbad926ee606a4562ca2e1c05327c8f295\n" - " Signature Algorithm: RSA-SHA\n" - " Signature:\n" - " 7b:e8:11:6c:15:3f:f9:01:a0:f1:28:0c:62:50:58:f8\n" - " 92:44:fb:bf:ab:20:8a:3b:81:ca:e5:68:60:71:df:2b\n" - " e8:50:58:82:32:ef:fb:6e:4a:72:2c:c9:37:4f:88:1d\n" - " d7:1b:68:5b:db:83:1b:1a:f3:b4:8e:e0:88:03:e2:43\n" - " 91:be:d8:b1:ca:f2:62:ec:a1:fd:1a:c8:41:8c:fe:53\n" - " 1b:be:03:c9:a1:3d:f4:ae:57:fc:44:a6:34:bb:2c:2e\n" - " a7:56:14:1f:89:e9:3a:ec:1f:a3:da:d7:a1:94:3b:72\n" - " 1d:12:71:b9:65:a1:85:a2:4c:3a:d1:2c:e9:e9:ea:1c\n" - "Other Information:\n" - " MD5 fingerprint:\n" - " fd845ded8c28ba5e78d6c1844ceafd24\n" - " SHA-1 fingerprint:\n" - " 0bae431dda3cae76012b82276e4cd92ad7961798\n" - " Public Key ID:\n" - " e93c1cfbad926ee606a4562ca2e1c05327c8f295\n" - "\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIB8TCCAVygAwIBAgIBADALBgkqhkiG9w0BAQUwKDEmMCQGA1UEChMdR251VExT\n" - "IGhvc3RuYW1lIGNoZWNrIHRlc3QgQ0EwHhcNMDcwMjE2MTI1OTA5WhcNMDcwMzMw\n" - "MTI1OTEzWjAoMSYwJAYDVQQKEx1HbnVUTFMgaG9zdG5hbWUgY2hlY2sgdGVzdCBD\n" - "QTCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGAvuyYeh1vfmslnuggeEKgZAVmQ5lt\n" - "SdUY7H25WGSygKMUYZ0KT74v8C780qtcNt9T7EPH/N6RvB4BprdssgcQLsthR3XK\n" - "A84jbjjxNCcaGs33lvOz8A1nf8p3hD+cKfRikfYSW2JazLrtCC4yRCas/SPOUxu7\n" - "8of+3HiTfFm/oXUCAwEAAaMyMDAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU\n" - "6Twc+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBAHvoEWwVP/kBoPEo\n" - "DGJQWPiSRPu/qyCKO4HK5Whgcd8r6FBYgjLv+25KcizJN0+IHdcbaFvbgxsa87SO\n" - "4IgD4kORvtixyvJi7KH9GshBjP5TG74DyaE99K5X/ESmNLssLqdWFB+J6TrsH6Pa\n" - "16GUO3IdEnG5ZaGFokw60Szp6eoc\n" "-----END CERTIFICATE-----\n"; + "X.509 Certificate Information:\n" + " Version: 3\n" + " Serial Number (hex): 00\n" + " Issuer: O=GnuTLS hostname check test CA\n" + " Validity:\n" + " Not Before: Fri Feb 16 12:59:09 UTC 2007\n" + " Not After: Fri Mar 30 12:59:13 UTC 2007\n" + " Subject: O=GnuTLS hostname check test CA\n" + " Subject Public Key Algorithm: RSA\n" + " Modulus (bits 1024):\n" + " be:ec:98:7a:1d:6f:7e:6b:25:9e:e8:20:78:42:a0:64\n" + " 05:66:43:99:6d:49:d5:18:ec:7d:b9:58:64:b2:80:a3\n" + " 14:61:9d:0a:4f:be:2f:f0:2e:fc:d2:ab:5c:36:df:53\n" + " ec:43:c7:fc:de:91:bc:1e:01:a6:b7:6c:b2:07:10:2e\n" + " cb:61:47:75:ca:03:ce:23:6e:38:f1:34:27:1a:1a:cd\n" + " f7:96:f3:b3:f0:0d:67:7f:ca:77:84:3f:9c:29:f4:62\n" + " 91:f6:12:5b:62:5a:cc:ba:ed:08:2e:32:44:26:ac:fd\n" + " 23:ce:53:1b:bb:f2:87:fe:dc:78:93:7c:59:bf:a1:75\n" + " Exponent:\n" + " 01:00:01\n" + " Extensions:\n" + " Basic Constraints (critical):\n" + " Certificate Authority (CA): TRUE\n" + " Subject Key Identifier (not critical):\n" + " e93c1cfbad926ee606a4562ca2e1c05327c8f295\n" + " Signature Algorithm: RSA-SHA\n" + " Signature:\n" + " 7b:e8:11:6c:15:3f:f9:01:a0:f1:28:0c:62:50:58:f8\n" + " 92:44:fb:bf:ab:20:8a:3b:81:ca:e5:68:60:71:df:2b\n" + " e8:50:58:82:32:ef:fb:6e:4a:72:2c:c9:37:4f:88:1d\n" + " d7:1b:68:5b:db:83:1b:1a:f3:b4:8e:e0:88:03:e2:43\n" + " 91:be:d8:b1:ca:f2:62:ec:a1:fd:1a:c8:41:8c:fe:53\n" + " 1b:be:03:c9:a1:3d:f4:ae:57:fc:44:a6:34:bb:2c:2e\n" + " a7:56:14:1f:89:e9:3a:ec:1f:a3:da:d7:a1:94:3b:72\n" + " 1d:12:71:b9:65:a1:85:a2:4c:3a:d1:2c:e9:e9:ea:1c\n" + "Other Information:\n" + " MD5 fingerprint:\n" + " fd845ded8c28ba5e78d6c1844ceafd24\n" + " SHA-1 fingerprint:\n" + " 0bae431dda3cae76012b82276e4cd92ad7961798\n" + " Public Key ID:\n" + " e93c1cfbad926ee606a4562ca2e1c05327c8f295\n" + "\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIB8TCCAVygAwIBAgIBADALBgkqhkiG9w0BAQUwKDEmMCQGA1UEChMdR251VExT\n" + "IGhvc3RuYW1lIGNoZWNrIHRlc3QgQ0EwHhcNMDcwMjE2MTI1OTA5WhcNMDcwMzMw\n" + "MTI1OTEzWjAoMSYwJAYDVQQKEx1HbnVUTFMgaG9zdG5hbWUgY2hlY2sgdGVzdCBD\n" + "QTCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGAvuyYeh1vfmslnuggeEKgZAVmQ5lt\n" + "SdUY7H25WGSygKMUYZ0KT74v8C780qtcNt9T7EPH/N6RvB4BprdssgcQLsthR3XK\n" + "A84jbjjxNCcaGs33lvOz8A1nf8p3hD+cKfRikfYSW2JazLrtCC4yRCas/SPOUxu7\n" + "8of+3HiTfFm/oXUCAwEAAaMyMDAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU\n" + "6Twc+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBAHvoEWwVP/kBoPEo\n" + "DGJQWPiSRPu/qyCKO4HK5Whgcd8r6FBYgjLv+25KcizJN0+IHdcbaFvbgxsa87SO\n" + "4IgD4kORvtixyvJi7KH9GshBjP5TG74DyaE99K5X/ESmNLssLqdWFB+J6TrsH6Pa\n" + "16GUO3IdEnG5ZaGFokw60Szp6eoc\n" + "-----END CERTIFICATE-----\n"; /* Certificate with CN but no SAN. */ char pem2[] = - "X.509 Certificate Information:\n" - " Version: 3\n" - " Serial Number (hex): 00\n" - " Issuer: CN=www.example.org\n" - " Validity:\n" - " Not Before: Fri Feb 16 13:30:30 UTC 2007\n" - " Not After: Fri Mar 30 13:30:32 UTC 2007\n" - " Subject: CN=www.example.org\n" - " Subject Public Key Algorithm: RSA\n" - " Modulus (bits 1024):\n" - " be:ec:98:7a:1d:6f:7e:6b:25:9e:e8:20:78:42:a0:64\n" - " 05:66:43:99:6d:49:d5:18:ec:7d:b9:58:64:b2:80:a3\n" - " 14:61:9d:0a:4f:be:2f:f0:2e:fc:d2:ab:5c:36:df:53\n" - " ec:43:c7:fc:de:91:bc:1e:01:a6:b7:6c:b2:07:10:2e\n" - " cb:61:47:75:ca:03:ce:23:6e:38:f1:34:27:1a:1a:cd\n" - " f7:96:f3:b3:f0:0d:67:7f:ca:77:84:3f:9c:29:f4:62\n" - " 91:f6:12:5b:62:5a:cc:ba:ed:08:2e:32:44:26:ac:fd\n" - " 23:ce:53:1b:bb:f2:87:fe:dc:78:93:7c:59:bf:a1:75\n" - " Exponent:\n" - " 01:00:01\n" - " Extensions:\n" - " Basic Constraints (critical):\n" - " Certificate Authority (CA): TRUE\n" - " Subject Key Identifier (not critical):\n" - " e93c1cfbad926ee606a4562ca2e1c05327c8f295\n" - " Signature Algorithm: RSA-SHA\n" - " Signature:\n" - " b0:4e:ac:fb:89:12:36:27:f3:72:b8:1a:57:dc:bf:f3\n" - " a9:27:de:15:75:94:4f:65:cc:3a:59:12:4b:91:0e:28\n" - " b9:8d:d3:6e:ac:5d:a8:3e:b9:35:81:0c:8f:c7:95:72\n" - " d9:51:61:06:00:c6:aa:68:54:c8:52:3f:b6:1f:21:92\n" - " c8:fd:15:50:15:ac:d4:18:29:a1:ff:c9:25:5a:ce:5e\n" - " 11:7f:82:b2:94:8c:44:3c:3f:de:d7:3b:ff:1c:da:9c\n" - " 81:fa:63:e1:a7:67:ee:aa:fa:d0:c9:2f:66:1b:5e:af\n" - " 46:8c:f9:53:55:e7:80:7e:74:95:98:d4:2d:5f:94:ab\n" - "Other Information:\n" - " MD5 fingerprint:\n" - " 30cda7de4f0360892547974f45111ac1\n" - " SHA-1 fingerprint:\n" - " 39e3f8fec6a8d842390b6536998a957c1a6b7322\n" - " Public Key ID:\n" - " e93c1cfbad926ee606a4562ca2e1c05327c8f295\n" - "\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIB1TCCAUCgAwIBAgIBADALBgkqhkiG9w0BAQUwGjEYMBYGA1UEAxMPd3d3LmV4\n" - "YW1wbGUub3JnMB4XDTA3MDIxNjEzMzAzMFoXDTA3MDMzMDEzMzAzMlowGjEYMBYG\n" - "A1UEAxMPd3d3LmV4YW1wbGUub3JnMIGcMAsGCSqGSIb3DQEBAQOBjAAwgYgCgYC+\n" - "7Jh6HW9+ayWe6CB4QqBkBWZDmW1J1RjsfblYZLKAoxRhnQpPvi/wLvzSq1w231Ps\n" - "Q8f83pG8HgGmt2yyBxAuy2FHdcoDziNuOPE0JxoazfeW87PwDWd/yneEP5wp9GKR\n" - "9hJbYlrMuu0ILjJEJqz9I85TG7vyh/7ceJN8Wb+hdQIDAQABozIwMDAPBgNVHRMB\n" - "Af8EBTADAQH/MB0GA1UdDgQWBBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG\n" - "9w0BAQUDgYEAsE6s+4kSNifzcrgaV9y/86kn3hV1lE9lzDpZEkuRDii5jdNurF2o\n" - "Prk1gQyPx5Vy2VFhBgDGqmhUyFI/th8hksj9FVAVrNQYKaH/ySVazl4Rf4KylIxE\n" - "PD/e1zv/HNqcgfpj4adn7qr60MkvZhter0aM+VNV54B+dJWY1C1flKs=\n" - "-----END CERTIFICATE-----\n"; + "X.509 Certificate Information:\n" + " Version: 3\n" + " Serial Number (hex): 00\n" + " Issuer: CN=www.example.org\n" + " Validity:\n" + " Not Before: Fri Feb 16 13:30:30 UTC 2007\n" + " Not After: Fri Mar 30 13:30:32 UTC 2007\n" + " Subject: CN=www.example.org\n" + " Subject Public Key Algorithm: RSA\n" + " Modulus (bits 1024):\n" + " be:ec:98:7a:1d:6f:7e:6b:25:9e:e8:20:78:42:a0:64\n" + " 05:66:43:99:6d:49:d5:18:ec:7d:b9:58:64:b2:80:a3\n" + " 14:61:9d:0a:4f:be:2f:f0:2e:fc:d2:ab:5c:36:df:53\n" + " ec:43:c7:fc:de:91:bc:1e:01:a6:b7:6c:b2:07:10:2e\n" + " cb:61:47:75:ca:03:ce:23:6e:38:f1:34:27:1a:1a:cd\n" + " f7:96:f3:b3:f0:0d:67:7f:ca:77:84:3f:9c:29:f4:62\n" + " 91:f6:12:5b:62:5a:cc:ba:ed:08:2e:32:44:26:ac:fd\n" + " 23:ce:53:1b:bb:f2:87:fe:dc:78:93:7c:59:bf:a1:75\n" + " Exponent:\n" + " 01:00:01\n" + " Extensions:\n" + " Basic Constraints (critical):\n" + " Certificate Authority (CA): TRUE\n" + " Subject Key Identifier (not critical):\n" + " e93c1cfbad926ee606a4562ca2e1c05327c8f295\n" + " Signature Algorithm: RSA-SHA\n" + " Signature:\n" + " b0:4e:ac:fb:89:12:36:27:f3:72:b8:1a:57:dc:bf:f3\n" + " a9:27:de:15:75:94:4f:65:cc:3a:59:12:4b:91:0e:28\n" + " b9:8d:d3:6e:ac:5d:a8:3e:b9:35:81:0c:8f:c7:95:72\n" + " d9:51:61:06:00:c6:aa:68:54:c8:52:3f:b6:1f:21:92\n" + " c8:fd:15:50:15:ac:d4:18:29:a1:ff:c9:25:5a:ce:5e\n" + " 11:7f:82:b2:94:8c:44:3c:3f:de:d7:3b:ff:1c:da:9c\n" + " 81:fa:63:e1:a7:67:ee:aa:fa:d0:c9:2f:66:1b:5e:af\n" + " 46:8c:f9:53:55:e7:80:7e:74:95:98:d4:2d:5f:94:ab\n" + "Other Information:\n" + " MD5 fingerprint:\n" + " 30cda7de4f0360892547974f45111ac1\n" + " SHA-1 fingerprint:\n" + " 39e3f8fec6a8d842390b6536998a957c1a6b7322\n" + " Public Key ID:\n" + " e93c1cfbad926ee606a4562ca2e1c05327c8f295\n" + "\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIB1TCCAUCgAwIBAgIBADALBgkqhkiG9w0BAQUwGjEYMBYGA1UEAxMPd3d3LmV4\n" + "YW1wbGUub3JnMB4XDTA3MDIxNjEzMzAzMFoXDTA3MDMzMDEzMzAzMlowGjEYMBYG\n" + "A1UEAxMPd3d3LmV4YW1wbGUub3JnMIGcMAsGCSqGSIb3DQEBAQOBjAAwgYgCgYC+\n" + "7Jh6HW9+ayWe6CB4QqBkBWZDmW1J1RjsfblYZLKAoxRhnQpPvi/wLvzSq1w231Ps\n" + "Q8f83pG8HgGmt2yyBxAuy2FHdcoDziNuOPE0JxoazfeW87PwDWd/yneEP5wp9GKR\n" + "9hJbYlrMuu0ILjJEJqz9I85TG7vyh/7ceJN8Wb+hdQIDAQABozIwMDAPBgNVHRMB\n" + "Af8EBTADAQH/MB0GA1UdDgQWBBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG\n" + "9w0BAQUDgYEAsE6s+4kSNifzcrgaV9y/86kn3hV1lE9lzDpZEkuRDii5jdNurF2o\n" + "Prk1gQyPx5Vy2VFhBgDGqmhUyFI/th8hksj9FVAVrNQYKaH/ySVazl4Rf4KylIxE\n" + "PD/e1zv/HNqcgfpj4adn7qr60MkvZhter0aM+VNV54B+dJWY1C1flKs=\n" + "-----END CERTIFICATE-----\n"; /* Certificate with SAN but no CN. */ char pem3[] = - "X.509 Certificate Information:" - " Version: 3\n" - " Serial Number (hex): 00\n" - " Issuer: O=GnuTLS hostname check test CA\n" - " Validity:\n" - " Not Before: Fri Feb 16 13:36:27 UTC 2007\n" - " Not After: Fri Mar 30 13:36:29 UTC 2007\n" - " Subject: O=GnuTLS hostname check test CA\n" - " Subject Public Key Algorithm: RSA\n" - " Modulus (bits 1024):\n" - " be:ec:98:7a:1d:6f:7e:6b:25:9e:e8:20:78:42:a0:64\n" - " 05:66:43:99:6d:49:d5:18:ec:7d:b9:58:64:b2:80:a3\n" - " 14:61:9d:0a:4f:be:2f:f0:2e:fc:d2:ab:5c:36:df:53\n" - " ec:43:c7:fc:de:91:bc:1e:01:a6:b7:6c:b2:07:10:2e\n" - " cb:61:47:75:ca:03:ce:23:6e:38:f1:34:27:1a:1a:cd\n" - " f7:96:f3:b3:f0:0d:67:7f:ca:77:84:3f:9c:29:f4:62\n" - " 91:f6:12:5b:62:5a:cc:ba:ed:08:2e:32:44:26:ac:fd\n" - " 23:ce:53:1b:bb:f2:87:fe:dc:78:93:7c:59:bf:a1:75\n" - " Exponent:\n" - " 01:00:01\n" - " Extensions:\n" - " Basic Constraints (critical):\n" - " Certificate Authority (CA): TRUE\n" - " Subject Alternative Name (not critical):\n" - " DNSname: www.example.org\n" - " Key Purpose (not critical):\n" - " TLS WWW Server.\n" - " Subject Key Identifier (not critical):\n" - " e93c1cfbad926ee606a4562ca2e1c05327c8f295\n" - " Signature Algorithm: RSA-SHA\n" - " Signature:\n" - " a1:30:bc:01:b3:0f:98:7f:8e:76:7d:23:87:34:15:7f\n" - " a6:ae:a1:fb:87:75:e3:e8:1a:e5:5e:03:5d:bf:44:75\n" - " 46:4f:d2:a1:28:50:84:49:6d:3b:e0:bc:4e:de:79:85\n" - " fa:e1:07:b7:6e:0c:14:04:4a:82:b9:f3:22:6a:bc:99\n" - " 14:20:3b:49:1f:e4:97:d9:ea:eb:73:9a:83:a6:cc:b8\n" - " 55:fb:52:8e:5f:86:7c:9d:fa:af:03:76:ae:97:e0:64\n" - " 50:59:73:22:99:55:cf:da:59:31:0a:e8:6d:a0:53:bc\n" - " 39:63:2e:ac:92:4a:e9:8b:1e:d0:03:df:33:bb:4e:88\n" - "Other Information:\n" - " MD5 fingerprint:\n" - " df3f57d00c8149bd826b177d6ea4f369\n" - " SHA-1 fingerprint:\n" - " e95e56e2acac305f72ea6f698c11624663a595bd\n" - " Public Key ID:\n" - " e93c1cfbad926ee606a4562ca2e1c05327c8f295\n" - "\n" - "-----BEGIN CERTIFICATE-----\n" - "MIICIjCCAY2gAwIBAgIBADALBgkqhkiG9w0BAQUwKDEmMCQGA1UEChMdR251VExT\n" - "IGhvc3RuYW1lIGNoZWNrIHRlc3QgQ0EwHhcNMDcwMjE2MTMzNjI3WhcNMDcwMzMw\n" - "MTMzNjI5WjAoMSYwJAYDVQQKEx1HbnVUTFMgaG9zdG5hbWUgY2hlY2sgdGVzdCBD\n" - "QTCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGAvuyYeh1vfmslnuggeEKgZAVmQ5lt\n" - "SdUY7H25WGSygKMUYZ0KT74v8C780qtcNt9T7EPH/N6RvB4BprdssgcQLsthR3XK\n" - "A84jbjjxNCcaGs33lvOz8A1nf8p3hD+cKfRikfYSW2JazLrtCC4yRCas/SPOUxu7\n" - "8of+3HiTfFm/oXUCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAaBgNVHREEEzAR\n" - "gg93d3cuZXhhbXBsZS5vcmcwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHQYDVR0OBBYE\n" - "FOk8HPutkm7mBqRWLKLhwFMnyPKVMAsGCSqGSIb3DQEBBQOBgQChMLwBsw+Yf452\n" - "fSOHNBV/pq6h+4d14+ga5V4DXb9EdUZP0qEoUIRJbTvgvE7eeYX64Qe3bgwUBEqC\n" - "ufMiaryZFCA7SR/kl9nq63Oag6bMuFX7Uo5fhnyd+q8Ddq6X4GRQWXMimVXP2lkx\n" - "CuhtoFO8OWMurJJK6Yse0APfM7tOiA==\n" "-----END CERTIFICATE-----\n"; + "X.509 Certificate Information:" + " Version: 3\n" + " Serial Number (hex): 00\n" + " Issuer: O=GnuTLS hostname check test CA\n" + " Validity:\n" + " Not Before: Fri Feb 16 13:36:27 UTC 2007\n" + " Not After: Fri Mar 30 13:36:29 UTC 2007\n" + " Subject: O=GnuTLS hostname check test CA\n" + " Subject Public Key Algorithm: RSA\n" + " Modulus (bits 1024):\n" + " be:ec:98:7a:1d:6f:7e:6b:25:9e:e8:20:78:42:a0:64\n" + " 05:66:43:99:6d:49:d5:18:ec:7d:b9:58:64:b2:80:a3\n" + " 14:61:9d:0a:4f:be:2f:f0:2e:fc:d2:ab:5c:36:df:53\n" + " ec:43:c7:fc:de:91:bc:1e:01:a6:b7:6c:b2:07:10:2e\n" + " cb:61:47:75:ca:03:ce:23:6e:38:f1:34:27:1a:1a:cd\n" + " f7:96:f3:b3:f0:0d:67:7f:ca:77:84:3f:9c:29:f4:62\n" + " 91:f6:12:5b:62:5a:cc:ba:ed:08:2e:32:44:26:ac:fd\n" + " 23:ce:53:1b:bb:f2:87:fe:dc:78:93:7c:59:bf:a1:75\n" + " Exponent:\n" + " 01:00:01\n" + " Extensions:\n" + " Basic Constraints (critical):\n" + " Certificate Authority (CA): TRUE\n" + " Subject Alternative Name (not critical):\n" + " DNSname: www.example.org\n" + " Key Purpose (not critical):\n" + " TLS WWW Server.\n" + " Subject Key Identifier (not critical):\n" + " e93c1cfbad926ee606a4562ca2e1c05327c8f295\n" + " Signature Algorithm: RSA-SHA\n" + " Signature:\n" + " a1:30:bc:01:b3:0f:98:7f:8e:76:7d:23:87:34:15:7f\n" + " a6:ae:a1:fb:87:75:e3:e8:1a:e5:5e:03:5d:bf:44:75\n" + " 46:4f:d2:a1:28:50:84:49:6d:3b:e0:bc:4e:de:79:85\n" + " fa:e1:07:b7:6e:0c:14:04:4a:82:b9:f3:22:6a:bc:99\n" + " 14:20:3b:49:1f:e4:97:d9:ea:eb:73:9a:83:a6:cc:b8\n" + " 55:fb:52:8e:5f:86:7c:9d:fa:af:03:76:ae:97:e0:64\n" + " 50:59:73:22:99:55:cf:da:59:31:0a:e8:6d:a0:53:bc\n" + " 39:63:2e:ac:92:4a:e9:8b:1e:d0:03:df:33:bb:4e:88\n" + "Other Information:\n" + " MD5 fingerprint:\n" + " df3f57d00c8149bd826b177d6ea4f369\n" + " SHA-1 fingerprint:\n" + " e95e56e2acac305f72ea6f698c11624663a595bd\n" + " Public Key ID:\n" + " e93c1cfbad926ee606a4562ca2e1c05327c8f295\n" + "\n" + "-----BEGIN CERTIFICATE-----\n" + "MIICIjCCAY2gAwIBAgIBADALBgkqhkiG9w0BAQUwKDEmMCQGA1UEChMdR251VExT\n" + "IGhvc3RuYW1lIGNoZWNrIHRlc3QgQ0EwHhcNMDcwMjE2MTMzNjI3WhcNMDcwMzMw\n" + "MTMzNjI5WjAoMSYwJAYDVQQKEx1HbnVUTFMgaG9zdG5hbWUgY2hlY2sgdGVzdCBD\n" + "QTCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGAvuyYeh1vfmslnuggeEKgZAVmQ5lt\n" + "SdUY7H25WGSygKMUYZ0KT74v8C780qtcNt9T7EPH/N6RvB4BprdssgcQLsthR3XK\n" + "A84jbjjxNCcaGs33lvOz8A1nf8p3hD+cKfRikfYSW2JazLrtCC4yRCas/SPOUxu7\n" + "8of+3HiTfFm/oXUCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAaBgNVHREEEzAR\n" + "gg93d3cuZXhhbXBsZS5vcmcwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHQYDVR0OBBYE\n" + "FOk8HPutkm7mBqRWLKLhwFMnyPKVMAsGCSqGSIb3DQEBBQOBgQChMLwBsw+Yf452\n" + "fSOHNBV/pq6h+4d14+ga5V4DXb9EdUZP0qEoUIRJbTvgvE7eeYX64Qe3bgwUBEqC\n" + "ufMiaryZFCA7SR/kl9nq63Oag6bMuFX7Uo5fhnyd+q8Ddq6X4GRQWXMimVXP2lkx\n" + "CuhtoFO8OWMurJJK6Yse0APfM7tOiA==\n" + "-----END CERTIFICATE-----\n"; /* Certificate with wildcard SAN but no CN. */ char pem4[] = - "X.509 Certificate Information:\n" - " Version: 3\n" - " Serial Number (hex): 00\n" - " Issuer:\n" - " Validity:\n" - " Not Before: Fri Feb 16 13:40:10 UTC 2007\n" - " Not After: Fri Mar 30 13:40:12 UTC 2007\n" - " Subject:\n" - " Subject Public Key Algorithm: RSA\n" - " Modulus (bits 1024):\n" - " be:ec:98:7a:1d:6f:7e:6b:25:9e:e8:20:78:42:a0:64\n" - " 05:66:43:99:6d:49:d5:18:ec:7d:b9:58:64:b2:80:a3\n" - " 14:61:9d:0a:4f:be:2f:f0:2e:fc:d2:ab:5c:36:df:53\n" - " ec:43:c7:fc:de:91:bc:1e:01:a6:b7:6c:b2:07:10:2e\n" - " cb:61:47:75:ca:03:ce:23:6e:38:f1:34:27:1a:1a:cd\n" - " f7:96:f3:b3:f0:0d:67:7f:ca:77:84:3f:9c:29:f4:62\n" - " 91:f6:12:5b:62:5a:cc:ba:ed:08:2e:32:44:26:ac:fd\n" - " 23:ce:53:1b:bb:f2:87:fe:dc:78:93:7c:59:bf:a1:75\n" - " Exponent:\n" - " 01:00:01\n" - " Extensions:\n" - " Basic Constraints (critical):\n" - " Certificate Authority (CA): TRUE\n" - " Subject Alternative Name (not critical):\n" - " DNSname: *.example.org\n" - " Key Purpose (not critical):\n" - " TLS WWW Server.\n" - " Subject Key Identifier (not critical):\n" - " e93c1cfbad926ee606a4562ca2e1c05327c8f295\n" - " Signature Algorithm: RSA-SHA\n" - " Signature:\n" - " b1:62:e5:e3:0b:a5:99:58:b0:1c:5c:f5:d1:3f:7c:bb\n" - " 67:e1:43:c5:d7:a2:5c:db:f2:5a:f3:03:fc:76:e4:4d\n" - " c1:a0:89:36:24:82:a4:a1:ad:f5:83:e3:96:75:f4:c4\n" - " f3:eb:ff:3a:9b:da:d2:2c:58:d4:10:37:50:33:d1:39\n" - " 53:71:9e:48:2d:b2:5b:27:ce:1e:d9:d5:36:59:ac:17\n" - " 3a:83:cc:59:6b:8f:6a:24:b8:9f:f0:e6:14:03:23:5a\n" - " 87:e7:33:10:32:11:58:a2:bb:f1:e5:5a:88:87:bb:80\n" - " 1b:b6:bb:12:18:cb:15:d5:3a:fc:99:e4:42:5a:ba:45\n" - "Other Information:\n" - " MD5 fingerprint:\n" - " a411da7b0fa064d214116d5f94e06c24\n" - " SHA-1 fingerprint:\n" - " 3596e796c73ed096d762ab3d440a9ab55a386b3b\n" - " Public Key ID:\n" - " e93c1cfbad926ee606a4562ca2e1c05327c8f295\n" - "\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIB0DCCATugAwIBAgIBADALBgkqhkiG9w0BAQUwADAeFw0wNzAyMTYxMzQwMTBa\n" - "Fw0wNzAzMzAxMzQwMTJaMAAwgZwwCwYJKoZIhvcNAQEBA4GMADCBiAKBgL7smHod\n" - "b35rJZ7oIHhCoGQFZkOZbUnVGOx9uVhksoCjFGGdCk++L/Au/NKrXDbfU+xDx/ze\n" - "kbweAaa3bLIHEC7LYUd1ygPOI2448TQnGhrN95bzs/ANZ3/Kd4Q/nCn0YpH2Elti\n" - "Wsy67QguMkQmrP0jzlMbu/KH/tx4k3xZv6F1AgMBAAGjYTBfMA8GA1UdEwEB/wQF\n" - "MAMBAf8wGAYDVR0RBBEwD4INKi5leGFtcGxlLm9yZzATBgNVHSUEDDAKBggrBgEF\n" - "BQcDATAdBgNVHQ4EFgQU6Twc+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEF\n" - "A4GBALFi5eMLpZlYsBxc9dE/fLtn4UPF16Jc2/Ja8wP8duRNwaCJNiSCpKGt9YPj\n" - "lnX0xPPr/zqb2tIsWNQQN1Az0TlTcZ5ILbJbJ84e2dU2WawXOoPMWWuPaiS4n/Dm\n" - "FAMjWofnMxAyEViiu/HlWoiHu4AbtrsSGMsV1Tr8meRCWrpF\n" - "-----END CERTIFICATE-----\n"; + "X.509 Certificate Information:\n" + " Version: 3\n" + " Serial Number (hex): 00\n" + " Issuer:\n" + " Validity:\n" + " Not Before: Fri Feb 16 13:40:10 UTC 2007\n" + " Not After: Fri Mar 30 13:40:12 UTC 2007\n" + " Subject:\n" + " Subject Public Key Algorithm: RSA\n" + " Modulus (bits 1024):\n" + " be:ec:98:7a:1d:6f:7e:6b:25:9e:e8:20:78:42:a0:64\n" + " 05:66:43:99:6d:49:d5:18:ec:7d:b9:58:64:b2:80:a3\n" + " 14:61:9d:0a:4f:be:2f:f0:2e:fc:d2:ab:5c:36:df:53\n" + " ec:43:c7:fc:de:91:bc:1e:01:a6:b7:6c:b2:07:10:2e\n" + " cb:61:47:75:ca:03:ce:23:6e:38:f1:34:27:1a:1a:cd\n" + " f7:96:f3:b3:f0:0d:67:7f:ca:77:84:3f:9c:29:f4:62\n" + " 91:f6:12:5b:62:5a:cc:ba:ed:08:2e:32:44:26:ac:fd\n" + " 23:ce:53:1b:bb:f2:87:fe:dc:78:93:7c:59:bf:a1:75\n" + " Exponent:\n" + " 01:00:01\n" + " Extensions:\n" + " Basic Constraints (critical):\n" + " Certificate Authority (CA): TRUE\n" + " Subject Alternative Name (not critical):\n" + " DNSname: *.example.org\n" + " Key Purpose (not critical):\n" + " TLS WWW Server.\n" + " Subject Key Identifier (not critical):\n" + " e93c1cfbad926ee606a4562ca2e1c05327c8f295\n" + " Signature Algorithm: RSA-SHA\n" + " Signature:\n" + " b1:62:e5:e3:0b:a5:99:58:b0:1c:5c:f5:d1:3f:7c:bb\n" + " 67:e1:43:c5:d7:a2:5c:db:f2:5a:f3:03:fc:76:e4:4d\n" + " c1:a0:89:36:24:82:a4:a1:ad:f5:83:e3:96:75:f4:c4\n" + " f3:eb:ff:3a:9b:da:d2:2c:58:d4:10:37:50:33:d1:39\n" + " 53:71:9e:48:2d:b2:5b:27:ce:1e:d9:d5:36:59:ac:17\n" + " 3a:83:cc:59:6b:8f:6a:24:b8:9f:f0:e6:14:03:23:5a\n" + " 87:e7:33:10:32:11:58:a2:bb:f1:e5:5a:88:87:bb:80\n" + " 1b:b6:bb:12:18:cb:15:d5:3a:fc:99:e4:42:5a:ba:45\n" + "Other Information:\n" + " MD5 fingerprint:\n" + " a411da7b0fa064d214116d5f94e06c24\n" + " SHA-1 fingerprint:\n" + " 3596e796c73ed096d762ab3d440a9ab55a386b3b\n" + " Public Key ID:\n" + " e93c1cfbad926ee606a4562ca2e1c05327c8f295\n" + "\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIB0DCCATugAwIBAgIBADALBgkqhkiG9w0BAQUwADAeFw0wNzAyMTYxMzQwMTBa\n" + "Fw0wNzAzMzAxMzQwMTJaMAAwgZwwCwYJKoZIhvcNAQEBA4GMADCBiAKBgL7smHod\n" + "b35rJZ7oIHhCoGQFZkOZbUnVGOx9uVhksoCjFGGdCk++L/Au/NKrXDbfU+xDx/ze\n" + "kbweAaa3bLIHEC7LYUd1ygPOI2448TQnGhrN95bzs/ANZ3/Kd4Q/nCn0YpH2Elti\n" + "Wsy67QguMkQmrP0jzlMbu/KH/tx4k3xZv6F1AgMBAAGjYTBfMA8GA1UdEwEB/wQF\n" + "MAMBAf8wGAYDVR0RBBEwD4INKi5leGFtcGxlLm9yZzATBgNVHSUEDDAKBggrBgEF\n" + "BQcDATAdBgNVHQ4EFgQU6Twc+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEF\n" + "A4GBALFi5eMLpZlYsBxc9dE/fLtn4UPF16Jc2/Ja8wP8duRNwaCJNiSCpKGt9YPj\n" + "lnX0xPPr/zqb2tIsWNQQN1Az0TlTcZ5ILbJbJ84e2dU2WawXOoPMWWuPaiS4n/Dm\n" + "FAMjWofnMxAyEViiu/HlWoiHu4AbtrsSGMsV1Tr8meRCWrpF\n" + "-----END CERTIFICATE-----\n"; #ifdef SUPPORT_COMPLEX_WILDCARDS /* Certificate with multiple wildcards SAN but no CN. */ char pem6[] = - "X.509 Certificate Information:\n" - " Version: 3\n" - " Serial Number (hex): 00\n" - " Validity:\n" - " Not Before: Sat May 3 11:00:51 UTC 2008\n" - " Not After: Sat May 17 11:00:54 UTC 2008\n" - " Subject: O=GnuTLS hostname check test CA\n" - " Subject Public Key Algorithm: RSA\n" - " Modulus (bits 1024):\n" - " d2:05:c1:65:cb:bd:1e:2e:eb:7b:87:07:94:4c:93:33\n" - " f3:81:83:7d:32:1b:71:4e:4e:7f:c7:bc:bf:4b:2f:f2\n" - " 49:b5:cf:bf:c0:b8:e8:29:cc:f3:61:bd:2e:1d:e4:e8\n" - " 19:dd:c5:bd:2e:f0:35:b1:fd:30:d7:f5:a8:7c:83:9a\n" - " 13:9e:bf:25:ed:08:a6:05:9e:7b:4e:23:59:c3:0e:5a\n" - " f3:bf:54:c7:dc:d4:13:57:a1:0f:a2:9e:c8:ab:75:66\n" - " de:07:84:8d:68:ad:71:04:e0:9c:bd:cb:f6:08:7a:97\n" - " 42:f8:10:94:29:01:4a:7e:61:d7:04:21:05:4c:f1:07\n" - " Exponent:\n" - " 01:00:01\n" - " Extensions:\n" - " Basic Constraints (critical):\n" - " Certificate Authority (CA): TRUE\n" - " Subject Alternative Name (not critical):\n" - " DNSname: *.*.example.org\n" - " Key Purpose (not critical):\n" - " TLS WWW Server.\n" - " Subject Key Identifier (not critical):\n" - " 5493e6599b283b4529378818aef9a4abbf4d9918\n" - "Other Information:\n" - " Public Key ID:\n" - " 5493e6599b283b4529378818aef9a4abbf4d9918\n" - "\n" - "-----BEGIN CERTIFICATE-----\n" - "MIICIjCCAY2gAwIBAgIBADALBgkqhkiG9w0BAQUwKDEmMCQGA1UEChMdR251VExT\n" - "IGhvc3RuYW1lIGNoZWNrIHRlc3QgQ0EwHhcNMDgwNTAzMTEwMDUxWhcNMDgwNTE3\n" - "MTEwMDU0WjAoMSYwJAYDVQQKEx1HbnVUTFMgaG9zdG5hbWUgY2hlY2sgdGVzdCBD\n" - "QTCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA0gXBZcu9Hi7re4cHlEyTM/OBg30y\n" - "G3FOTn/HvL9LL/JJtc+/wLjoKczzYb0uHeToGd3FvS7wNbH9MNf1qHyDmhOevyXt\n" - "CKYFnntOI1nDDlrzv1TH3NQTV6EPop7Iq3Vm3geEjWitcQTgnL3L9gh6l0L4EJQp\n" - "AUp+YdcEIQVM8QcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAaBgNVHREEEzAR\n" - "gg8qLiouZXhhbXBsZS5vcmcwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHQYDVR0OBBYE\n" - "FFST5lmbKDtFKTeIGK75pKu/TZkYMAsGCSqGSIb3DQEBBQOBgQAQ9PStleVvfmlK\n" - "wRs8RE/oOO+ouC3qLdnumNEITMRFh8Q12/X4yMLD3CH0aQ/hvHcP26PxAWzpNutk\n" - "swNx7AzsCu6pN1t1aI3jLgo8e4/zZi57e8QcRuXZPDJxtJxVhJZX/C4pSz802WhS\n" - "64NgtpHEMu9JUHFhtRwPcvVGYqPUUA==\n" "-----END CERTIFICATE-----\n"; + "X.509 Certificate Information:\n" + " Version: 3\n" + " Serial Number (hex): 00\n" + " Validity:\n" + " Not Before: Sat May 3 11:00:51 UTC 2008\n" + " Not After: Sat May 17 11:00:54 UTC 2008\n" + " Subject: O=GnuTLS hostname check test CA\n" + " Subject Public Key Algorithm: RSA\n" + " Modulus (bits 1024):\n" + " d2:05:c1:65:cb:bd:1e:2e:eb:7b:87:07:94:4c:93:33\n" + " f3:81:83:7d:32:1b:71:4e:4e:7f:c7:bc:bf:4b:2f:f2\n" + " 49:b5:cf:bf:c0:b8:e8:29:cc:f3:61:bd:2e:1d:e4:e8\n" + " 19:dd:c5:bd:2e:f0:35:b1:fd:30:d7:f5:a8:7c:83:9a\n" + " 13:9e:bf:25:ed:08:a6:05:9e:7b:4e:23:59:c3:0e:5a\n" + " f3:bf:54:c7:dc:d4:13:57:a1:0f:a2:9e:c8:ab:75:66\n" + " de:07:84:8d:68:ad:71:04:e0:9c:bd:cb:f6:08:7a:97\n" + " 42:f8:10:94:29:01:4a:7e:61:d7:04:21:05:4c:f1:07\n" + " Exponent:\n" + " 01:00:01\n" + " Extensions:\n" + " Basic Constraints (critical):\n" + " Certificate Authority (CA): TRUE\n" + " Subject Alternative Name (not critical):\n" + " DNSname: *.*.example.org\n" + " Key Purpose (not critical):\n" + " TLS WWW Server.\n" + " Subject Key Identifier (not critical):\n" + " 5493e6599b283b4529378818aef9a4abbf4d9918\n" + "Other Information:\n" + " Public Key ID:\n" + " 5493e6599b283b4529378818aef9a4abbf4d9918\n" + "\n" + "-----BEGIN CERTIFICATE-----\n" + "MIICIjCCAY2gAwIBAgIBADALBgkqhkiG9w0BAQUwKDEmMCQGA1UEChMdR251VExT\n" + "IGhvc3RuYW1lIGNoZWNrIHRlc3QgQ0EwHhcNMDgwNTAzMTEwMDUxWhcNMDgwNTE3\n" + "MTEwMDU0WjAoMSYwJAYDVQQKEx1HbnVUTFMgaG9zdG5hbWUgY2hlY2sgdGVzdCBD\n" + "QTCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA0gXBZcu9Hi7re4cHlEyTM/OBg30y\n" + "G3FOTn/HvL9LL/JJtc+/wLjoKczzYb0uHeToGd3FvS7wNbH9MNf1qHyDmhOevyXt\n" + "CKYFnntOI1nDDlrzv1TH3NQTV6EPop7Iq3Vm3geEjWitcQTgnL3L9gh6l0L4EJQp\n" + "AUp+YdcEIQVM8QcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAaBgNVHREEEzAR\n" + "gg8qLiouZXhhbXBsZS5vcmcwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHQYDVR0OBBYE\n" + "FFST5lmbKDtFKTeIGK75pKu/TZkYMAsGCSqGSIb3DQEBBQOBgQAQ9PStleVvfmlK\n" + "wRs8RE/oOO+ouC3qLdnumNEITMRFh8Q12/X4yMLD3CH0aQ/hvHcP26PxAWzpNutk\n" + "swNx7AzsCu6pN1t1aI3jLgo8e4/zZi57e8QcRuXZPDJxtJxVhJZX/C4pSz802WhS\n" + "64NgtpHEMu9JUHFhtRwPcvVGYqPUUA==\n" + "-----END CERTIFICATE-----\n"; /* Certificate with prefixed and suffixed wildcard SAN but no CN. */ char pem7[] = - "X.509 Certificate Information:\n" - " Version: 3\n" - " Serial Number (hex): 00\n" - " Validity:\n" - " Not Before: Sat May 3 11:02:43 UTC 2008\n" - " Not After: Sat May 17 11:02:45 UTC 2008\n" - " Subject: O=GnuTLS hostname check test CA\n" - " Subject Public Key Algorithm: RSA\n" - " Modulus (bits 1024):\n" - " d2:05:c1:65:cb:bd:1e:2e:eb:7b:87:07:94:4c:93:33\n" - " f3:81:83:7d:32:1b:71:4e:4e:7f:c7:bc:bf:4b:2f:f2\n" - " 49:b5:cf:bf:c0:b8:e8:29:cc:f3:61:bd:2e:1d:e4:e8\n" - " 19:dd:c5:bd:2e:f0:35:b1:fd:30:d7:f5:a8:7c:83:9a\n" - " 13:9e:bf:25:ed:08:a6:05:9e:7b:4e:23:59:c3:0e:5a\n" - " f3:bf:54:c7:dc:d4:13:57:a1:0f:a2:9e:c8:ab:75:66\n" - " de:07:84:8d:68:ad:71:04:e0:9c:bd:cb:f6:08:7a:97\n" - " 42:f8:10:94:29:01:4a:7e:61:d7:04:21:05:4c:f1:07\n" - " Exponent:\n" - " 01:00:01\n" - " Extensions:\n" - " Basic Constraints (critical):\n" - " Certificate Authority (CA): TRUE\n" - " Subject Alternative Name (not critical):\n" - " DNSname: foo*bar.example.org\n" - " Key Purpose (not critical):\n" - " TLS WWW Server.\n" - " Subject Key Identifier (not critical):\n" - " 5493e6599b283b4529378818aef9a4abbf4d9918\n" - "Other Information:\n" - " Public Key ID:\n" - " 5493e6599b283b4529378818aef9a4abbf4d9918\n" - "\n" - "-----BEGIN CERTIFICATE-----\n" - "MIICJjCCAZGgAwIBAgIBADALBgkqhkiG9w0BAQUwKDEmMCQGA1UEChMdR251VExT\n" - "IGhvc3RuYW1lIGNoZWNrIHRlc3QgQ0EwHhcNMDgwNTAzMTEwMjQzWhcNMDgwNTE3\n" - "MTEwMjQ1WjAoMSYwJAYDVQQKEx1HbnVUTFMgaG9zdG5hbWUgY2hlY2sgdGVzdCBD\n" - "QTCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA0gXBZcu9Hi7re4cHlEyTM/OBg30y\n" - "G3FOTn/HvL9LL/JJtc+/wLjoKczzYb0uHeToGd3FvS7wNbH9MNf1qHyDmhOevyXt\n" - "CKYFnntOI1nDDlrzv1TH3NQTV6EPop7Iq3Vm3geEjWitcQTgnL3L9gh6l0L4EJQp\n" - "AUp+YdcEIQVM8QcCAwEAAaNnMGUwDwYDVR0TAQH/BAUwAwEB/zAeBgNVHREEFzAV\n" - "ghNmb28qYmFyLmV4YW1wbGUub3JnMBMGA1UdJQQMMAoGCCsGAQUFBwMBMB0GA1Ud\n" - "DgQWBBRUk+ZZmyg7RSk3iBiu+aSrv02ZGDALBgkqhkiG9w0BAQUDgYEAPPNe38jc\n" - "8NsZQVKKLYc1Y4y8LRPhvnxkSnlcGa1RzYZY1s12BZ6OVIfyxD1Z9BcNdqRSq7bQ\n" - "kEicsGp5ugGQTNq6aSlzYOUD9/fUP3jDsH7HVb36aCF3waGCQWj+pLqK0LYcW2p/\n" - "xnr5+z4YevFBhn7l/fMhg8TzKejxYm7TECg=\n" "-----END CERTIFICATE-----\n"; + "X.509 Certificate Information:\n" + " Version: 3\n" + " Serial Number (hex): 00\n" + " Validity:\n" + " Not Before: Sat May 3 11:02:43 UTC 2008\n" + " Not After: Sat May 17 11:02:45 UTC 2008\n" + " Subject: O=GnuTLS hostname check test CA\n" + " Subject Public Key Algorithm: RSA\n" + " Modulus (bits 1024):\n" + " d2:05:c1:65:cb:bd:1e:2e:eb:7b:87:07:94:4c:93:33\n" + " f3:81:83:7d:32:1b:71:4e:4e:7f:c7:bc:bf:4b:2f:f2\n" + " 49:b5:cf:bf:c0:b8:e8:29:cc:f3:61:bd:2e:1d:e4:e8\n" + " 19:dd:c5:bd:2e:f0:35:b1:fd:30:d7:f5:a8:7c:83:9a\n" + " 13:9e:bf:25:ed:08:a6:05:9e:7b:4e:23:59:c3:0e:5a\n" + " f3:bf:54:c7:dc:d4:13:57:a1:0f:a2:9e:c8:ab:75:66\n" + " de:07:84:8d:68:ad:71:04:e0:9c:bd:cb:f6:08:7a:97\n" + " 42:f8:10:94:29:01:4a:7e:61:d7:04:21:05:4c:f1:07\n" + " Exponent:\n" + " 01:00:01\n" + " Extensions:\n" + " Basic Constraints (critical):\n" + " Certificate Authority (CA): TRUE\n" + " Subject Alternative Name (not critical):\n" + " DNSname: foo*bar.example.org\n" + " Key Purpose (not critical):\n" + " TLS WWW Server.\n" + " Subject Key Identifier (not critical):\n" + " 5493e6599b283b4529378818aef9a4abbf4d9918\n" + "Other Information:\n" + " Public Key ID:\n" + " 5493e6599b283b4529378818aef9a4abbf4d9918\n" + "\n" + "-----BEGIN CERTIFICATE-----\n" + "MIICJjCCAZGgAwIBAgIBADALBgkqhkiG9w0BAQUwKDEmMCQGA1UEChMdR251VExT\n" + "IGhvc3RuYW1lIGNoZWNrIHRlc3QgQ0EwHhcNMDgwNTAzMTEwMjQzWhcNMDgwNTE3\n" + "MTEwMjQ1WjAoMSYwJAYDVQQKEx1HbnVUTFMgaG9zdG5hbWUgY2hlY2sgdGVzdCBD\n" + "QTCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA0gXBZcu9Hi7re4cHlEyTM/OBg30y\n" + "G3FOTn/HvL9LL/JJtc+/wLjoKczzYb0uHeToGd3FvS7wNbH9MNf1qHyDmhOevyXt\n" + "CKYFnntOI1nDDlrzv1TH3NQTV6EPop7Iq3Vm3geEjWitcQTgnL3L9gh6l0L4EJQp\n" + "AUp+YdcEIQVM8QcCAwEAAaNnMGUwDwYDVR0TAQH/BAUwAwEB/zAeBgNVHREEFzAV\n" + "ghNmb28qYmFyLmV4YW1wbGUub3JnMBMGA1UdJQQMMAoGCCsGAQUFBwMBMB0GA1Ud\n" + "DgQWBBRUk+ZZmyg7RSk3iBiu+aSrv02ZGDALBgkqhkiG9w0BAQUDgYEAPPNe38jc\n" + "8NsZQVKKLYc1Y4y8LRPhvnxkSnlcGa1RzYZY1s12BZ6OVIfyxD1Z9BcNdqRSq7bQ\n" + "kEicsGp5ugGQTNq6aSlzYOUD9/fUP3jDsH7HVb36aCF3waGCQWj+pLqK0LYcW2p/\n" + "xnr5+z4YevFBhn7l/fMhg8TzKejxYm7TECg=\n" + "-----END CERTIFICATE-----\n"; #endif /* Certificate with ending wildcard SAN but no CN. */ char pem8[] = - "X.509 Certificate Information:\n" - " Version: 3\n" - " Serial Number (hex): 00\n" - " Validity:\n" - " Not Before: Sat May 3 11:24:38 UTC 2008\n" - " Not After: Sat May 17 11:24:40 UTC 2008\n" - " Subject: O=GnuTLS hostname check test CA\n" - " Subject Public Key Algorithm: RSA\n" - " Modulus (bits 1024):\n" - " d2:05:c1:65:cb:bd:1e:2e:eb:7b:87:07:94:4c:93:33\n" - " f3:81:83:7d:32:1b:71:4e:4e:7f:c7:bc:bf:4b:2f:f2\n" - " 49:b5:cf:bf:c0:b8:e8:29:cc:f3:61:bd:2e:1d:e4:e8\n" - " 19:dd:c5:bd:2e:f0:35:b1:fd:30:d7:f5:a8:7c:83:9a\n" - " 13:9e:bf:25:ed:08:a6:05:9e:7b:4e:23:59:c3:0e:5a\n" - " f3:bf:54:c7:dc:d4:13:57:a1:0f:a2:9e:c8:ab:75:66\n" - " de:07:84:8d:68:ad:71:04:e0:9c:bd:cb:f6:08:7a:97\n" - " 42:f8:10:94:29:01:4a:7e:61:d7:04:21:05:4c:f1:07\n" - " Exponent:\n" - " 01:00:01\n" - " Extensions:\n" - " Basic Constraints (critical):\n" - " Certificate Authority (CA): TRUE\n" - " Subject Alternative Name (not critical):\n" - " DNSname: www.example.*\n" - " Key Purpose (not critical):\n" - " TLS WWW Server.\n" - " Subject Key Identifier (not critical):\n" - " 5493e6599b283b4529378818aef9a4abbf4d9918\n" - "Other Information:\n" - " Public Key ID:\n" - " 5493e6599b283b4529378818aef9a4abbf4d9918\n" - "\n" - "-----BEGIN CERTIFICATE-----\n" - "MIICIDCCAYugAwIBAgIBADALBgkqhkiG9w0BAQUwKDEmMCQGA1UEChMdR251VExT\n" - "IGhvc3RuYW1lIGNoZWNrIHRlc3QgQ0EwHhcNMDgwNTAzMTEyNDM4WhcNMDgwNTE3\n" - "MTEyNDQwWjAoMSYwJAYDVQQKEx1HbnVUTFMgaG9zdG5hbWUgY2hlY2sgdGVzdCBD\n" - "QTCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA0gXBZcu9Hi7re4cHlEyTM/OBg30y\n" - "G3FOTn/HvL9LL/JJtc+/wLjoKczzYb0uHeToGd3FvS7wNbH9MNf1qHyDmhOevyXt\n" - "CKYFnntOI1nDDlrzv1TH3NQTV6EPop7Iq3Vm3geEjWitcQTgnL3L9gh6l0L4EJQp\n" - "AUp+YdcEIQVM8QcCAwEAAaNhMF8wDwYDVR0TAQH/BAUwAwEB/zAYBgNVHREEETAP\n" - "gg13d3cuZXhhbXBsZS4qMBMGA1UdJQQMMAoGCCsGAQUFBwMBMB0GA1UdDgQWBBRU\n" - "k+ZZmyg7RSk3iBiu+aSrv02ZGDALBgkqhkiG9w0BAQUDgYEAZ7gLXtXwFW61dSAM\n" - "0Qt6IN68WBH7LCzetSF8ofG1WVUImCUU3pqXhXYtPGTrswOh2AavWTRbzVTtrFvf\n" - "WJg09Z7H6I70RPvAYGsK9t9qJ/4TPoYTGYQgsTbVpkv13O54O6jzemd8Zws/xMH5\n" - "7/q6C7P5OUmGOtfVe7UVDY0taQM=\n" "-----END CERTIFICATE-----\n"; + "X.509 Certificate Information:\n" + " Version: 3\n" + " Serial Number (hex): 00\n" + " Validity:\n" + " Not Before: Sat May 3 11:24:38 UTC 2008\n" + " Not After: Sat May 17 11:24:40 UTC 2008\n" + " Subject: O=GnuTLS hostname check test CA\n" + " Subject Public Key Algorithm: RSA\n" + " Modulus (bits 1024):\n" + " d2:05:c1:65:cb:bd:1e:2e:eb:7b:87:07:94:4c:93:33\n" + " f3:81:83:7d:32:1b:71:4e:4e:7f:c7:bc:bf:4b:2f:f2\n" + " 49:b5:cf:bf:c0:b8:e8:29:cc:f3:61:bd:2e:1d:e4:e8\n" + " 19:dd:c5:bd:2e:f0:35:b1:fd:30:d7:f5:a8:7c:83:9a\n" + " 13:9e:bf:25:ed:08:a6:05:9e:7b:4e:23:59:c3:0e:5a\n" + " f3:bf:54:c7:dc:d4:13:57:a1:0f:a2:9e:c8:ab:75:66\n" + " de:07:84:8d:68:ad:71:04:e0:9c:bd:cb:f6:08:7a:97\n" + " 42:f8:10:94:29:01:4a:7e:61:d7:04:21:05:4c:f1:07\n" + " Exponent:\n" + " 01:00:01\n" + " Extensions:\n" + " Basic Constraints (critical):\n" + " Certificate Authority (CA): TRUE\n" + " Subject Alternative Name (not critical):\n" + " DNSname: www.example.*\n" + " Key Purpose (not critical):\n" + " TLS WWW Server.\n" + " Subject Key Identifier (not critical):\n" + " 5493e6599b283b4529378818aef9a4abbf4d9918\n" + "Other Information:\n" + " Public Key ID:\n" + " 5493e6599b283b4529378818aef9a4abbf4d9918\n" + "\n" + "-----BEGIN CERTIFICATE-----\n" + "MIICIDCCAYugAwIBAgIBADALBgkqhkiG9w0BAQUwKDEmMCQGA1UEChMdR251VExT\n" + "IGhvc3RuYW1lIGNoZWNrIHRlc3QgQ0EwHhcNMDgwNTAzMTEyNDM4WhcNMDgwNTE3\n" + "MTEyNDQwWjAoMSYwJAYDVQQKEx1HbnVUTFMgaG9zdG5hbWUgY2hlY2sgdGVzdCBD\n" + "QTCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA0gXBZcu9Hi7re4cHlEyTM/OBg30y\n" + "G3FOTn/HvL9LL/JJtc+/wLjoKczzYb0uHeToGd3FvS7wNbH9MNf1qHyDmhOevyXt\n" + "CKYFnntOI1nDDlrzv1TH3NQTV6EPop7Iq3Vm3geEjWitcQTgnL3L9gh6l0L4EJQp\n" + "AUp+YdcEIQVM8QcCAwEAAaNhMF8wDwYDVR0TAQH/BAUwAwEB/zAYBgNVHREEETAP\n" + "gg13d3cuZXhhbXBsZS4qMBMGA1UdJQQMMAoGCCsGAQUFBwMBMB0GA1UdDgQWBBRU\n" + "k+ZZmyg7RSk3iBiu+aSrv02ZGDALBgkqhkiG9w0BAQUDgYEAZ7gLXtXwFW61dSAM\n" + "0Qt6IN68WBH7LCzetSF8ofG1WVUImCUU3pqXhXYtPGTrswOh2AavWTRbzVTtrFvf\n" + "WJg09Z7H6I70RPvAYGsK9t9qJ/4TPoYTGYQgsTbVpkv13O54O6jzemd8Zws/xMH5\n" + "7/q6C7P5OUmGOtfVe7UVDY0taQM=\n" + "-----END CERTIFICATE-----\n"; /* Certificate with SAN and CN but for different names. */ char pem9[] = - "X.509 Certificate Information:\n" - " Version: 3\n" - " Serial Number (hex): 4a827d5c\n" - " Issuer: O=GnuTLS hostname check test CA,CN=foo.example.org\n" - " Validity:\n" - " Not Before: Wed Aug 12 08:29:17 UTC 2009\n" - " Not After: Thu Aug 13 08:29:23 UTC 2009\n" - " Subject: O=GnuTLS hostname check test CA,CN=foo.example.org\n" - " Subject Public Key Algorithm: RSA\n" - " Modulus (bits 1024):\n" - " bb:66:43:f5:f2:c5:d7:b6:8c:cc:c5:df:f5:88:3b:b1\n" - " c9:4b:6a:0e:a1:ad:20:50:40:08:80:a1:4f:5c:a3:d0\n" - " f8:6c:cf:e6:3c:f7:ec:04:76:13:17:8b:64:89:22:5b\n" - " c0:dd:53:7c:3b:ed:7c:04:bb:80:b9:28:be:8e:9b:c6\n" - " 8e:a0:a5:12:cb:f5:57:1e:a2:e7:bb:b7:33:49:9f:e3\n" - " bb:4a:ae:6a:4d:68:ff:c9:11:e2:32:8d:ce:3d:80:0b\n" - " 8d:75:ef:d8:00:81:8f:28:04:03:a0:22:8d:61:04:07\n" - " fa:b6:37:7d:21:07:49:d2:09:61:69:98:90:a3:58:a9\n" - " Exponent (bits 24):\n" - " 01:00:01\n" - " Extensions:\n" - " Basic Constraints (critical):\n" - " Certificate Authority (CA): TRUE\n" - " Subject Alternative Name (not critical):\n" - " DNSname: bar.example.org\n" - " Key Purpose (not critical):\n" - " TLS WWW Server.\n" - " Subject Key Identifier (not critical):\n" - " 4cb90a9bfa1d34e37edecbd20715fea1dacb6891\n" - " Signature Algorithm: RSA-SHA\n" - " Signature:\n" - " a2:1f:d2:90:5f:c9:1c:6f:92:1d:c5:0b:ac:b0:17:23\n" - " c5:67:46:94:6f:0f:62:7d:66:4c:28:ff:b7:10:73:60\n" - " ae:0e:a2:47:82:83:bb:89:0d:f1:16:5e:f9:5b:35:4b\n" - " ce:ee:5e:d0:ad:b5:8b:cc:37:b3:ac:4d:1b:58:c2:4f\n" - " 1c:7f:c6:ac:3d:25:18:67:37:f0:27:11:9b:2c:20:b6\n" - " 78:24:21:a6:77:44:e7:1a:e5:f6:bf:45:84:32:81:67\n" - " af:8d:96:26:f7:39:31:6b:63:c5:15:9d:e0:a0:9a:1e\n" - " 96:12:cb:ad:85:cb:a7:d4:86:ac:d8:f5:e9:a4:2b:20\n" - "Other Information:\n" - " MD5 fingerprint:\n" - " f27b18092c7497f206e70f504eee0f8e\n" - " SHA-1 fingerprint:\n" - " bebdac9d0dd54e8f044642e0f065fae5d75ca6e5\n" - " Public Key ID:\n" - " 4cb90a9bfa1d34e37edecbd20715fea1dacb6891\n" - "\n" - "-----BEGIN CERTIFICATE-----\n" - "MIICWTCCAcSgAwIBAgIESoJ9XDALBgkqhkiG9w0BAQUwQjEmMCQGA1UEChMdR251\n" - "VExTIGhvc3RuYW1lIGNoZWNrIHRlc3QgQ0ExGDAWBgNVBAMTD2Zvby5leGFtcGxl\n" - "Lm9yZzAeFw0wOTA4MTIwODI5MTdaFw0wOTA4MTMwODI5MjNaMEIxJjAkBgNVBAoT\n" - "HUdudVRMUyBob3N0bmFtZSBjaGVjayB0ZXN0IENBMRgwFgYDVQQDEw9mb28uZXhh\n" - "bXBsZS5vcmcwgZwwCwYJKoZIhvcNAQEBA4GMADCBiAKBgLtmQ/Xyxde2jMzF3/WI\n" - "O7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeLZIkiW8DdU3w77XwEu4C5KL6O\n" - "m8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKNzj2AC41179gAgY8oBAOgIo1h\n" - "BAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wGgYD\n" - "VR0RBBMwEYIPYmFyLmV4YW1wbGUub3JnMBMGA1UdJQQMMAoGCCsGAQUFBwMBMB0G\n" - "A1UdDgQWBBRMuQqb+h00437ey9IHFf6h2stokTALBgkqhkiG9w0BAQUDgYEAoh/S\n" - "kF/JHG+SHcULrLAXI8VnRpRvD2J9Zkwo/7cQc2CuDqJHgoO7iQ3xFl75WzVLzu5e\n" - "0K21i8w3s6xNG1jCTxx/xqw9JRhnN/AnEZssILZ4JCGmd0TnGuX2v0WEMoFnr42W\n" - "Jvc5MWtjxRWd4KCaHpYSy62Fy6fUhqzY9emkKyA=\n" "-----END CERTIFICATE-----\n"; + "X.509 Certificate Information:\n" + " Version: 3\n" + " Serial Number (hex): 4a827d5c\n" + " Issuer: O=GnuTLS hostname check test CA,CN=foo.example.org\n" + " Validity:\n" + " Not Before: Wed Aug 12 08:29:17 UTC 2009\n" + " Not After: Thu Aug 13 08:29:23 UTC 2009\n" + " Subject: O=GnuTLS hostname check test CA,CN=foo.example.org\n" + " Subject Public Key Algorithm: RSA\n" + " Modulus (bits 1024):\n" + " bb:66:43:f5:f2:c5:d7:b6:8c:cc:c5:df:f5:88:3b:b1\n" + " c9:4b:6a:0e:a1:ad:20:50:40:08:80:a1:4f:5c:a3:d0\n" + " f8:6c:cf:e6:3c:f7:ec:04:76:13:17:8b:64:89:22:5b\n" + " c0:dd:53:7c:3b:ed:7c:04:bb:80:b9:28:be:8e:9b:c6\n" + " 8e:a0:a5:12:cb:f5:57:1e:a2:e7:bb:b7:33:49:9f:e3\n" + " bb:4a:ae:6a:4d:68:ff:c9:11:e2:32:8d:ce:3d:80:0b\n" + " 8d:75:ef:d8:00:81:8f:28:04:03:a0:22:8d:61:04:07\n" + " fa:b6:37:7d:21:07:49:d2:09:61:69:98:90:a3:58:a9\n" + " Exponent (bits 24):\n" + " 01:00:01\n" + " Extensions:\n" + " Basic Constraints (critical):\n" + " Certificate Authority (CA): TRUE\n" + " Subject Alternative Name (not critical):\n" + " DNSname: bar.example.org\n" + " Key Purpose (not critical):\n" + " TLS WWW Server.\n" + " Subject Key Identifier (not critical):\n" + " 4cb90a9bfa1d34e37edecbd20715fea1dacb6891\n" + " Signature Algorithm: RSA-SHA\n" + " Signature:\n" + " a2:1f:d2:90:5f:c9:1c:6f:92:1d:c5:0b:ac:b0:17:23\n" + " c5:67:46:94:6f:0f:62:7d:66:4c:28:ff:b7:10:73:60\n" + " ae:0e:a2:47:82:83:bb:89:0d:f1:16:5e:f9:5b:35:4b\n" + " ce:ee:5e:d0:ad:b5:8b:cc:37:b3:ac:4d:1b:58:c2:4f\n" + " 1c:7f:c6:ac:3d:25:18:67:37:f0:27:11:9b:2c:20:b6\n" + " 78:24:21:a6:77:44:e7:1a:e5:f6:bf:45:84:32:81:67\n" + " af:8d:96:26:f7:39:31:6b:63:c5:15:9d:e0:a0:9a:1e\n" + " 96:12:cb:ad:85:cb:a7:d4:86:ac:d8:f5:e9:a4:2b:20\n" + "Other Information:\n" + " MD5 fingerprint:\n" + " f27b18092c7497f206e70f504eee0f8e\n" + " SHA-1 fingerprint:\n" + " bebdac9d0dd54e8f044642e0f065fae5d75ca6e5\n" + " Public Key ID:\n" + " 4cb90a9bfa1d34e37edecbd20715fea1dacb6891\n" + "\n" + "-----BEGIN CERTIFICATE-----\n" + "MIICWTCCAcSgAwIBAgIESoJ9XDALBgkqhkiG9w0BAQUwQjEmMCQGA1UEChMdR251\n" + "VExTIGhvc3RuYW1lIGNoZWNrIHRlc3QgQ0ExGDAWBgNVBAMTD2Zvby5leGFtcGxl\n" + "Lm9yZzAeFw0wOTA4MTIwODI5MTdaFw0wOTA4MTMwODI5MjNaMEIxJjAkBgNVBAoT\n" + "HUdudVRMUyBob3N0bmFtZSBjaGVjayB0ZXN0IENBMRgwFgYDVQQDEw9mb28uZXhh\n" + "bXBsZS5vcmcwgZwwCwYJKoZIhvcNAQEBA4GMADCBiAKBgLtmQ/Xyxde2jMzF3/WI\n" + "O7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeLZIkiW8DdU3w77XwEu4C5KL6O\n" + "m8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKNzj2AC41179gAgY8oBAOgIo1h\n" + "BAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wGgYD\n" + "VR0RBBMwEYIPYmFyLmV4YW1wbGUub3JnMBMGA1UdJQQMMAoGCCsGAQUFBwMBMB0G\n" + "A1UdDgQWBBRMuQqb+h00437ey9IHFf6h2stokTALBgkqhkiG9w0BAQUDgYEAoh/S\n" + "kF/JHG+SHcULrLAXI8VnRpRvD2J9Zkwo/7cQc2CuDqJHgoO7iQ3xFl75WzVLzu5e\n" + "0K21i8w3s6xNG1jCTxx/xqw9JRhnN/AnEZssILZ4JCGmd0TnGuX2v0WEMoFnr42W\n" + "Jvc5MWtjxRWd4KCaHpYSy62Fy6fUhqzY9emkKyA=\n" + "-----END CERTIFICATE-----\n"; /* Certificate with SAN and CN that match iff you truncate the SAN to the embedded NUL. See . */ char pem10[] = - "X.509 Certificate Information:\n" - " Version: 3\n" - " Serial Number (hex): 0b5d0a870d09\n" - " Issuer: C=NN,O=Edel Curl Arctic Illudium Research Cloud,CN=Northern Nowhere Trust Anchor\n" - " Validity:\n" - " Not Before: Tue Aug 04 22:07:33 UTC 2009\n" - " Not After: Sat Oct 21 22:07:33 UTC 2017\n" - " Subject: C=NN,O=Edel Curl Arctic Illudium Research Cloud,CN=localhost\n" - " Subject Public Key Algorithm: RSA\n" - " Modulus (bits 1024):\n" - " be:67:3b:b4:ea:c0:85:b4:c3:56:c1:a4:96:23:36:f5\n" - " c6:77:aa:ad:e5:c1:dd:ce:c1:9a:97:07:dd:16:90:eb\n" - " f0:38:b5:95:6b:a6:0f:b9:73:4e:7d:82:57:ab:5f:b5\n" - " ba:5c:a0:48:8c:82:77:fd:67:d8:53:44:61:86:a5:06\n" - " 19:bf:73:51:68:2e:1a:0a:c5:05:39:ca:3d:ca:83:ed\n" - " 07:fe:ae:b7:73:1d:60:dd:ab:9e:0e:7e:02:f3:68:42\n" - " 93:27:c8:5f:c5:fa:cb:a9:84:06:2f:f3:66:bd:de:7d\n" - " 29:82:57:47:e4:a9:df:bf:8b:bc:c0:46:33:5a:7b:87\n" - " Exponent (bits 24):\n" - " 01:00:01\n" - " Extensions:\n" - " Subject Alternative Name (not critical):\n" - "warning: SAN contains an embedded NUL, replacing with '!'\n" - " DNSname: localhost!h\n" - " Key Usage (not critical):\n" - " Key encipherment.\n" - " Key Purpose (not critical):\n" - " TLS WWW Server.\n" - " Subject Key Identifier (not critical):\n" - " 0c37a3db0f73b3388a69d36eb3a7d6d8774eda67\n" - " Authority Key Identifier (not critical):\n" - " 126b24d24a68b7a1b01ccdbfd64ccc405b7fe040\n" - " Basic Constraints (critical):\n" - " Certificate Authority (CA): FALSE\n" - " Signature Algorithm: RSA-SHA\n" - " Signature:\n" - " 88:a0:17:77:77:bf:c1:8a:18:4e:a3:94:6e:45:18:31\n" - " fa:2f:7b:1f:ee:95:20:d1:cd:40:df:ee:f0:45:2e:e9\n" - " e6:cf:c8:77:bd:85:16:d7:9f:18:52:78:3f:ea:9c:86\n" - " 62:6e:db:90:b0:cd:f1:c1:6f:2d:87:4a:a0:be:b3:dc\n" - " 6d:e4:6b:d1:da:b9:10:25:7e:35:1f:1b:aa:a7:09:2f\n" - " 84:77:27:b0:48:a8:6d:54:57:38:35:22:34:03:0f:d4\n" - " 5d:ab:1c:72:15:b1:d9:89:56:10:12:fb:7d:0d:18:12\n" - " a9:0a:38:dc:93:cf:69:ff:75:86:9e:e3:6b:eb:92:6c\n" - " 55:16:d5:65:8b:d7:9c:5e:4b:82:c8:92:6c:8b:e6:18\n" - " a2:f8:8c:65:aa:b6:eb:23:ed:cb:99:db:fc:8b:8e:1d\n" - " 7a:39:c9:f5:7b:7f:58:7b:ed:01:6c:3c:40:ec:e3:a9\n" - " 5f:c4:3d:cb:81:17:03:6d:2d:d7:bd:00:5f:c4:79:f2\n" - " fb:ab:c6:0e:a2:01:8b:a1:42:73:de:96:29:3e:bf:d7\n" - " d9:51:a7:d4:98:07:7f:f0:f4:cd:00:a1:e1:ac:6c:05\n" - " ac:ab:93:1b:b0:5c:2c:13:ad:ff:27:dc:80:99:34:66\n" - " bd:e3:31:54:d5:b6:3f:ce:d4:08:a3:52:28:61:5e:bd\n" - "Other Information:\n" - " MD5 fingerprint:\n" - " 0b4d6d944200cdd1639008b24dc0fe0a\n" - " SHA-1 fingerprint:\n" - " ce85660f5451b0cc12f525577f0eb9411a20c76b\n" - " Public Key ID:\n" - " a1d18c15e65c7c4935512eeea7ca5d3e6baad4e1\n" - "\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIDQzCCAiugAwIBAgIGC10Khw0JMA0GCSqGSIb3DQEBBQUAMGcxCzAJBgNVBAYT\n" - "Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo\n" - "IENsb3VkMSUwIwYDVQQDDBxOb3RoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yMB4X\n" - "DTA5MDgwNDIyMDczM1oXDTE3MTAyMTIyMDczM1owVDELMAkGA1UEBhMCTk4xMTAv\n" - "BgNVBAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQx\n" - "EjAQBgNVBAMMCWxvY2FsaG9zdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA\n" - "vmc7tOrAhbTDVsGkliM29cZ3qq3lwd3OwZqXB90WkOvwOLWVa6YPuXNOfYJXq1+1\n" - "ulygSIyCd/1n2FNEYYalBhm/c1FoLhoKxQU5yj3Kg+0H/q63cx1g3aueDn4C82hC\n" - "kyfIX8X6y6mEBi/zZr3efSmCV0fkqd+/i7zARjNae4cCAwEAAaOBizCBiDAWBgNV\n" - "HREEDzANggtsb2NhbGhvc3QAaDALBgNVHQ8EBAMCBSAwEwYDVR0lBAwwCgYIKwYB\n" - "BQUHAwEwHQYDVR0OBBYEFAw3o9sPc7M4imnTbrOn1th3TtpnMB8GA1UdIwQYMBaA\n" - "FBJrJNJKaLehsBzNv9ZMzEBbf+BAMAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEF\n" - "BQADggEBAIigF3d3v8GKGE6jlG5FGDH6L3sf7pUg0c1A3+7wRS7p5s/Id72FFtef\n" - "GFJ4P+qchmJu25CwzfHBby2HSqC+s9xt5GvR2rkQJX41HxuqpwkvhHcnsEiobVRX\n" - "ODUiNAMP1F2rHHIVsdmJVhAS+30NGBKpCjjck89p/3WGnuNr65JsVRbVZYvXnF5L\n" - "gsiSbIvmGKL4jGWqtusj7cuZ2/yLjh16Ocn1e39Ye+0BbDxA7OOpX8Q9y4EXA20t\n" - "170AX8R58vurxg6iAYuhQnPelik+v9fZUafUmAd/8PTNAKHhrGwFrKuTG7BcLBOt\n" - "/yfcgJk0Zr3jMVTVtj/O1AijUihhXr0=\n" "-----END CERTIFICATE-----\n"; - -char pem_too_many[] = "\n" - " Subject: C=BE,CN=******************.gnutls.org\n" - "\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIDljCCAk6gAwIBAgIETcMNdjANBgkqhkiG9w0BAQsFADA6MQswCQYDVQQGEwJC\n" - "RTErMCkGA1UEAxMiKioqKioqKioqKioqKioqKioqKioqKiouZ251dGxzLm9yZzAe\n" - "Fw0xMTA1MDUyMDQ5NTlaFw02NDAxMTUyMDUwMDJaMDoxCzAJBgNVBAYTAkJFMSsw\n" - "KQYDVQQDEyIqKioqKioqKioqKioqKioqKioqKioqKi5nbnV0bHMub3JnMIIBUjAN\n" - "BgkqhkiG9w0BAQEFAAOCAT8AMIIBOgKCATEA3c+X0qUdld2GGNjEua2mDLSdttz6\n" - "3CHhOmI0B+gzsuiX7ixB0hLxX+3kdv9lJh4Mx0EVaV8N+a2JFI3q1xZSmkfBuwAC\n" - "5IhFc3ikrts4w8YH0mQOh+10jGvEwAJQfE6m0Vjp5RMJqdta6usPBoBcCe+UyOn7\n" - "Ny514ayTrZs3E0tmOnYz2MTXTPthyJIhB/zfqYhU5KOpR9JsuOM5iRGIOC2i3D5e\n" - "SqmkjtUfstDdQTzaEGieRxtlAqLFKHMCgwMJ/fUpfpfcKk5LqnlGRnCGG5u49oq+\n" - "KYd9X9qll2vvyEMJQ+IfihZ+HVBd9doC7vLDKkjmazDqAtfvrIsMuMGF2L98hage\n" - "g75cJi55e0f1Sj9mYpL9QSC2LADwUsomBi18z3pQfQ/L3ZcgyG/k4FD04wIDAQAB\n" - "o0QwQjAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMBMB0GA1UdDgQW\n" - "BBSSU9ZxufhoqrNT9o31OUVmnKflMTANBgkqhkiG9w0BAQsFAAOCATEAUMK435LP\n" - "0XpmpWLBBuC6VLLIsAGmXRv7odw8sG9fOctalsbK3zd9pDOaoFI/128GOmlTp1aC\n" - "n4a/pZ9G5wTKRvdxVqecdYkozDtAS35uwCSQPU/P12Oug6kA4NNJDxF3FGm5eov6\n" - "SnZDL0Qlhat9y0yOakaOkVNwESAwgUEYClZeR45htvH5oP48XEgwqHQ9jPS2MXAe\n" - "QLBjqqeYzIvWqwT4z14tIkN0VWWqqVo/dzV+lfNwQy0UL8iWVYnks8wKs2SBkVHx\n" - "41wBR3uCgCDwlYGDLIG1cm0n7mXrnE7KNcrwQKXL8WGNRAVvx5MVO1vDoWPyQ1Y4\n" - "sDdnQiVER9ee/KxO6IgCTGh+nCBTSSYgLX2E/m789quPvzyi9Hf/go28he6E3dSK\n" - "q7/LRSxaZenB/Q==\n" "-----END CERTIFICATE-----\n"; - -char pem_ips[] = "\n" - "X.509 Certificate Information:\n" - " Version: 3\n" - " Serial Number (hex): 00\n" - " Issuer: CN=server-0\n" - " Validity:\n" - " Not Before: Fri Jun 27 09:14:36 UTC 2014\n" - " Not After: Fri Dec 31 23:59:59 UTC 9999\n" - " Subject: CN=server-0\n" - " Subject Public Key Algorithm: RSA\n" - " Algorithm Security Level: Medium (2048 bits)\n" - " Modulus (bits 2048):\n" - " 00:c1:56:12:f6:c3:c7:e3:4c:7e:ff:04:4e:88:1d:67\n" - " a7:f3:4d:64:cc:12:a7:ff:50:aa:5c:31:b9:3c:d1:d1\n" - " ba:78:2c:7d:dd:54:4a:cd:5a:f2:38:8b:b2:c5:26:7e\n" - " 25:05:36:b6:92:e6:1d:c3:00:39:a0:c5:1c:b5:63:3d\n" - " 00:e9:b4:b5:75:a7:14:b1:ff:a0:03:9d:ba:77:da:e5\n" - " de:21:fb:56:da:06:9d:84:57:53:3d:08:45:45:20:fd\n" - " e7:60:65:2e:55:60:db:d3:91:da:64:ff:c4:42:42:54\n" - " 77:cb:47:54:68:1e:b4:62:ad:8a:3c:0a:28:89:cb:d3\n" - " 81:d3:15:9a:1d:67:90:51:83:90:6d:fb:a1:0e:54:6b\n" - " 29:d7:ef:79:19:14:f6:0d:82:73:8f:79:58:0e:af:0e\n" - " cc:bd:17:ab:b5:a2:1f:76:a1:9f:4b:7b:e8:f9:7b:28\n" - " 56:cc:f1:5b:0e:93:c9:e5:44:2f:2d:0a:22:7d:0b:2b\n" - " 30:84:c3:1e:d6:4d:63:5b:41:51:83:d4:b5:09:f4:cc\n" - " ab:ad:51:1b:8e:a1:f6:b1:27:5b:43:3c:bc:ae:10:93\n" - " d4:ce:3b:10:ca:3f:22:dd:9e:a8:3f:4a:a6:a8:cd:8f\n" - " d0:6a:e0:40:26:28:0f:af:0e:13:e1:ac:b9:ac:41:cc\n" - " 5d\n" - " Exponent (bits 24):\n" - " 01:00:01\n" - " Extensions:\n" - " Basic Constraints (critical):\n" - " Certificate Authority (CA): TRUE\n" - " Subject Alternative Name (not critical):\n" - " IPAddress: 127.0.0.1\n" - " IPAddress: 192.168.5.1\n" - " IPAddress: 10.100.2.5\n" - " IPAddress: 0:0:0:0:0:0:0:1\n" - " IPAddress: fe80:0:0:0:3e97:eff:fe18:359a\n" - " Key Usage (critical):\n" - " Certificate signing.\n" - " Subject Key Identifier (not critical):\n" - " bd3d0b6cab6b33d8a8e1ed15b7ab17587cc2a09f\n" - " Signature Algorithm: RSA-SHA256\n" - " Signature:\n" - " 02:22:52:4b:69:e5:4f:f8:17:0a:46:34:d1:ec:6b:f5\n" - " ae:5b:fc:e2:00:ca:1f:f0:1d:74:91:9c:85:0a:a7:06\n" - " 3d:fa:93:0d:35:85:ea:3e:01:9f:9e:bc:52:72:95:b2\n" - " 8a:3a:78:6e:d2:5d:4d:60:88:2b:be:6f:68:75:c7:19\n" - " ac:c9:ea:ab:74:f6:62:4d:30:1e:87:e4:70:1e:96:f4\n" - " 0b:48:ef:c9:28:14:6f:fa:c1:7b:d3:ef:b3:d8:52:90\n" - " 5d:20:d0:aa:8b:10:ab:74:86:46:be:cb:6c:93:54:60\n" - " bc:6e:d6:4d:b2:1e:25:65:38:52:5b:6c:b4:57:8f:0f\n" - " 26:4f:36:ea:42:eb:71:68:93:f3:a9:7a:66:5c:b6:07\n" - " 7d:15:b5:f4:b8:5c:7c:e0:cd:d0:fa:5b:2a:6b:fd:4c\n" - " 71:12:45:d0:37:9e:cf:90:59:6e:fd:ba:3a:8b:ca:37\n" - " 01:cc:6f:e0:32:c7:9e:a4:ea:61:2c:e5:ad:66:73:80\n" - " 5c:5e:0c:44:ec:c2:74:b8:fe:6e:66:af:76:cc:30:10\n" - " 1f:3a:ac:34:36:e6:5b:72:f3:ee:5a:68:c3:43:37:56\n" - " c3:08:02:3c:96:1c:27:18:d0:38:fa:d7:51:4e:82:7d\n" - " fc:81:a2:23:c5:05:80:0e:b4:ba:d3:19:39:74:9c:74\n" - "Other Information:\n" - " SHA1 fingerprint:\n" - " 43536dd4198f6064c117c3825020b14c108f9a34\n" - " SHA256 fingerprint:\n" - " 5ab6626aa069da15650edcfff7305767ff5b8d338289f851a624ea89b50ff06a\n" - " Public Key ID:\n" - " bd3d0b6cab6b33d8a8e1ed15b7ab17587cc2a09f\n" - " Public key's random art:\n" - " +--[ RSA 2048]----+\n" - " | |\n" - " | . |\n" - " | . + |\n" - " | . .= . |\n" - " | .S+oo |\n" - " | E+.+ |\n" - " | . +. *.o |\n" - " | . oo.=..+ o |\n" - " | ooo.+Bo . |\n" - " +-----------------+\n" - "\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIDKzCCAhOgAwIBAgIBADANBgkqhkiG9w0BAQsFADATMREwDwYDVQQDEwhzZXJ2\n" - "ZXItMDAiGA8yMDE0MDYyNzA5MTQzNloYDzk5OTkxMjMxMjM1OTU5WjATMREwDwYD\n" - "VQQDEwhzZXJ2ZXItMDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMFW\n" - "EvbDx+NMfv8ETogdZ6fzTWTMEqf/UKpcMbk80dG6eCx93VRKzVryOIuyxSZ+JQU2\n" - "tpLmHcMAOaDFHLVjPQDptLV1pxSx/6ADnbp32uXeIftW2gadhFdTPQhFRSD952Bl\n" - "LlVg29OR2mT/xEJCVHfLR1RoHrRirYo8CiiJy9OB0xWaHWeQUYOQbfuhDlRrKdfv\n" - "eRkU9g2Cc495WA6vDsy9F6u1oh92oZ9Le+j5eyhWzPFbDpPJ5UQvLQoifQsrMITD\n" - "HtZNY1tBUYPUtQn0zKutURuOofaxJ1tDPLyuEJPUzjsQyj8i3Z6oP0qmqM2P0Grg\n" - "QCYoD68OE+GsuaxBzF0CAwEAAaOBhTCBgjAPBgNVHRMBAf8EBTADAQH/MD8GA1Ud\n" - "EQQ4MDaHBH8AAAGHBMCoBQGHBApkAgWHEAAAAAAAAAAAAAAAAAAAAAGHEP6AAAAA\n" - "AAAAPpcO//4YNZowDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQUvT0LbKtrM9io\n" - "4e0Vt6sXWHzCoJ8wDQYJKoZIhvcNAQELBQADggEBAAIiUktp5U/4FwpGNNHsa/Wu\n" - "W/ziAMof8B10kZyFCqcGPfqTDTWF6j4Bn568UnKVsoo6eG7SXU1giCu+b2h1xxms\n" - "yeqrdPZiTTAeh+RwHpb0C0jvySgUb/rBe9Pvs9hSkF0g0KqLEKt0hka+y2yTVGC8\n" - "btZNsh4lZThSW2y0V48PJk826kLrcWiT86l6Zly2B30VtfS4XHzgzdD6Wypr/Uxx\n" - "EkXQN57PkFlu/bo6i8o3Acxv4DLHnqTqYSzlrWZzgFxeDETswnS4/m5mr3bMMBAf\n" - "Oqw0NuZbcvPuWmjDQzdWwwgCPJYcJxjQOPrXUU6CffyBoiPFBYAOtLrTGTl0nHQ=\n" - "-----END CERTIFICATE-----\n" ""; - -char multi_cns[] = "\n" - "Subject: CN=www.example.com,CN=www.example2.com,CN=www.example3.com\n" - "\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIDXzCCAkegAwIBAgIMU+p6uAg2JlqRhAbAMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTAwIhgPMjAxNDA4MTIyMDM2MDhaGA85OTk5MTIzMTIzNTk1OVow\n" - "UDEYMBYGA1UEAxMPd3d3LmV4YW1wbGUuY29tMRkwFwYDVQQDExB3d3cuZXhhbXBs\n" - "ZTIuY29tMRkwFwYDVQQDExB3d3cuZXhhbXBsZTMuY29tMIIBIjANBgkqhkiG9w0B\n" - "AQEFAAOCAQ8AMIIBCgKCAQEAqP5QQUqIS2lquM8hYbDHljqHBDWlGtr167DDPwix\n" - "oIlnq84Xr1zI5zpJ2t/3U5kGTbRJiVroQCh3cVhiQyGTPSJPK+CJGi3diw5Vc2rK\n" - "oAPxaFtaxvE36mLLH2SSuc49b6hhlRpXdWE0TgnsvJojL5V20/CZI23T27fl+DjT\n" - "MduU92qH8wdCgp7q3sHZvtvTZuFM+edYvKZjhUz8P7JwiamG0A2UH+NiyicdAOxc\n" - "+lfwfoyetJdTHLfwxdCXT4X91xGd9eOW9lIL5BqLuAArODTcmHDmiXpXEO/sEyHq\n" - "L96Eawjon0Gz4IRNq7/kwDjSPJOIN0GHq6DtNmXl6J0C5wIDAQABo3YwdDAMBgNV\n" - "HRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA8GA1UdDwEB/wQFAwMHoAAw\n" - "HQYDVR0OBBYEFH6NTStc4XH/M74Meat1sT2o53fUMB8GA1UdIwQYMBaAFK8aMLKE\n" - "hAwWmkzQxRkQ1/efnumUMA0GCSqGSIb3DQEBCwUAA4IBAQBdHknM+rddB0ET+UI2\n" - "Or8qSNjkqBHwsZqb4hJozXFS35a1CJPQuxPzY13eHpiIfmdWL2EpKnLOU8vtAW9e\n" - "qpozMGDyrAuZhxsXUtInbF15C+Yuw9/sqCPK44b5DCtDf6J/N8m8FvdwqO803z1D\n" - "MGcSpES5I68+N3dwSRFYNpSLA1ul5MSlnmoffml959kx9hZNcI4N/UqkO1LMCKXX\n" - "Nf8kGFyLdPjANcIwL5sqP+Dp4HP3wdf7Ny+KFCZ6zDbpa53gb3G0naMdllK8BMfI\n" - "AQ4Y07zSA4K1QMdxeqaMgPIcCDLoKiMXAXNa42+K04F6SOkTjsVx9b5m0oynLt0u\n" - "MUjE\n" "-----END CERTIFICATE-----\n"; + "X.509 Certificate Information:\n" + " Version: 3\n" + " Serial Number (hex): 0b5d0a870d09\n" + " Issuer: C=NN,O=Edel Curl Arctic Illudium Research Cloud,CN=Northern Nowhere Trust Anchor\n" + " Validity:\n" + " Not Before: Tue Aug 04 22:07:33 UTC 2009\n" + " Not After: Sat Oct 21 22:07:33 UTC 2017\n" + " Subject: C=NN,O=Edel Curl Arctic Illudium Research Cloud,CN=localhost\n" + " Subject Public Key Algorithm: RSA\n" + " Modulus (bits 1024):\n" + " be:67:3b:b4:ea:c0:85:b4:c3:56:c1:a4:96:23:36:f5\n" + " c6:77:aa:ad:e5:c1:dd:ce:c1:9a:97:07:dd:16:90:eb\n" + " f0:38:b5:95:6b:a6:0f:b9:73:4e:7d:82:57:ab:5f:b5\n" + " ba:5c:a0:48:8c:82:77:fd:67:d8:53:44:61:86:a5:06\n" + " 19:bf:73:51:68:2e:1a:0a:c5:05:39:ca:3d:ca:83:ed\n" + " 07:fe:ae:b7:73:1d:60:dd:ab:9e:0e:7e:02:f3:68:42\n" + " 93:27:c8:5f:c5:fa:cb:a9:84:06:2f:f3:66:bd:de:7d\n" + " 29:82:57:47:e4:a9:df:bf:8b:bc:c0:46:33:5a:7b:87\n" + " Exponent (bits 24):\n" + " 01:00:01\n" + " Extensions:\n" + " Subject Alternative Name (not critical):\n" + "warning: SAN contains an embedded NUL, replacing with '!'\n" + " DNSname: localhost!h\n" + " Key Usage (not critical):\n" + " Key encipherment.\n" + " Key Purpose (not critical):\n" + " TLS WWW Server.\n" + " Subject Key Identifier (not critical):\n" + " 0c37a3db0f73b3388a69d36eb3a7d6d8774eda67\n" + " Authority Key Identifier (not critical):\n" + " 126b24d24a68b7a1b01ccdbfd64ccc405b7fe040\n" + " Basic Constraints (critical):\n" + " Certificate Authority (CA): FALSE\n" + " Signature Algorithm: RSA-SHA\n" + " Signature:\n" + " 88:a0:17:77:77:bf:c1:8a:18:4e:a3:94:6e:45:18:31\n" + " fa:2f:7b:1f:ee:95:20:d1:cd:40:df:ee:f0:45:2e:e9\n" + " e6:cf:c8:77:bd:85:16:d7:9f:18:52:78:3f:ea:9c:86\n" + " 62:6e:db:90:b0:cd:f1:c1:6f:2d:87:4a:a0:be:b3:dc\n" + " 6d:e4:6b:d1:da:b9:10:25:7e:35:1f:1b:aa:a7:09:2f\n" + " 84:77:27:b0:48:a8:6d:54:57:38:35:22:34:03:0f:d4\n" + " 5d:ab:1c:72:15:b1:d9:89:56:10:12:fb:7d:0d:18:12\n" + " a9:0a:38:dc:93:cf:69:ff:75:86:9e:e3:6b:eb:92:6c\n" + " 55:16:d5:65:8b:d7:9c:5e:4b:82:c8:92:6c:8b:e6:18\n" + " a2:f8:8c:65:aa:b6:eb:23:ed:cb:99:db:fc:8b:8e:1d\n" + " 7a:39:c9:f5:7b:7f:58:7b:ed:01:6c:3c:40:ec:e3:a9\n" + " 5f:c4:3d:cb:81:17:03:6d:2d:d7:bd:00:5f:c4:79:f2\n" + " fb:ab:c6:0e:a2:01:8b:a1:42:73:de:96:29:3e:bf:d7\n" + " d9:51:a7:d4:98:07:7f:f0:f4:cd:00:a1:e1:ac:6c:05\n" + " ac:ab:93:1b:b0:5c:2c:13:ad:ff:27:dc:80:99:34:66\n" + " bd:e3:31:54:d5:b6:3f:ce:d4:08:a3:52:28:61:5e:bd\n" + "Other Information:\n" + " MD5 fingerprint:\n" + " 0b4d6d944200cdd1639008b24dc0fe0a\n" + " SHA-1 fingerprint:\n" + " ce85660f5451b0cc12f525577f0eb9411a20c76b\n" + " Public Key ID:\n" + " a1d18c15e65c7c4935512eeea7ca5d3e6baad4e1\n" + "\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIDQzCCAiugAwIBAgIGC10Khw0JMA0GCSqGSIb3DQEBBQUAMGcxCzAJBgNVBAYT\n" + "Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo\n" + "IENsb3VkMSUwIwYDVQQDDBxOb3RoZXJuIE5vd2hlcmUgVHJ1c3QgQW5jaG9yMB4X\n" + "DTA5MDgwNDIyMDczM1oXDTE3MTAyMTIyMDczM1owVDELMAkGA1UEBhMCTk4xMTAv\n" + "BgNVBAoMKEVkZWwgQ3VybCBBcmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQx\n" + "EjAQBgNVBAMMCWxvY2FsaG9zdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA\n" + "vmc7tOrAhbTDVsGkliM29cZ3qq3lwd3OwZqXB90WkOvwOLWVa6YPuXNOfYJXq1+1\n" + "ulygSIyCd/1n2FNEYYalBhm/c1FoLhoKxQU5yj3Kg+0H/q63cx1g3aueDn4C82hC\n" + "kyfIX8X6y6mEBi/zZr3efSmCV0fkqd+/i7zARjNae4cCAwEAAaOBizCBiDAWBgNV\n" + "HREEDzANggtsb2NhbGhvc3QAaDALBgNVHQ8EBAMCBSAwEwYDVR0lBAwwCgYIKwYB\n" + "BQUHAwEwHQYDVR0OBBYEFAw3o9sPc7M4imnTbrOn1th3TtpnMB8GA1UdIwQYMBaA\n" + "FBJrJNJKaLehsBzNv9ZMzEBbf+BAMAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEF\n" + "BQADggEBAIigF3d3v8GKGE6jlG5FGDH6L3sf7pUg0c1A3+7wRS7p5s/Id72FFtef\n" + "GFJ4P+qchmJu25CwzfHBby2HSqC+s9xt5GvR2rkQJX41HxuqpwkvhHcnsEiobVRX\n" + "ODUiNAMP1F2rHHIVsdmJVhAS+30NGBKpCjjck89p/3WGnuNr65JsVRbVZYvXnF5L\n" + "gsiSbIvmGKL4jGWqtusj7cuZ2/yLjh16Ocn1e39Ye+0BbDxA7OOpX8Q9y4EXA20t\n" + "170AX8R58vurxg6iAYuhQnPelik+v9fZUafUmAd/8PTNAKHhrGwFrKuTG7BcLBOt\n" + "/yfcgJk0Zr3jMVTVtj/O1AijUihhXr0=\n" + "-----END CERTIFICATE-----\n"; + +char pem_too_many[] = + "\n" + " Subject: C=BE,CN=******************.gnutls.org\n" + "\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIDljCCAk6gAwIBAgIETcMNdjANBgkqhkiG9w0BAQsFADA6MQswCQYDVQQGEwJC\n" + "RTErMCkGA1UEAxMiKioqKioqKioqKioqKioqKioqKioqKiouZ251dGxzLm9yZzAe\n" + "Fw0xMTA1MDUyMDQ5NTlaFw02NDAxMTUyMDUwMDJaMDoxCzAJBgNVBAYTAkJFMSsw\n" + "KQYDVQQDEyIqKioqKioqKioqKioqKioqKioqKioqKi5nbnV0bHMub3JnMIIBUjAN\n" + "BgkqhkiG9w0BAQEFAAOCAT8AMIIBOgKCATEA3c+X0qUdld2GGNjEua2mDLSdttz6\n" + "3CHhOmI0B+gzsuiX7ixB0hLxX+3kdv9lJh4Mx0EVaV8N+a2JFI3q1xZSmkfBuwAC\n" + "5IhFc3ikrts4w8YH0mQOh+10jGvEwAJQfE6m0Vjp5RMJqdta6usPBoBcCe+UyOn7\n" + "Ny514ayTrZs3E0tmOnYz2MTXTPthyJIhB/zfqYhU5KOpR9JsuOM5iRGIOC2i3D5e\n" + "SqmkjtUfstDdQTzaEGieRxtlAqLFKHMCgwMJ/fUpfpfcKk5LqnlGRnCGG5u49oq+\n" + "KYd9X9qll2vvyEMJQ+IfihZ+HVBd9doC7vLDKkjmazDqAtfvrIsMuMGF2L98hage\n" + "g75cJi55e0f1Sj9mYpL9QSC2LADwUsomBi18z3pQfQ/L3ZcgyG/k4FD04wIDAQAB\n" + "o0QwQjAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMBMB0GA1UdDgQW\n" + "BBSSU9ZxufhoqrNT9o31OUVmnKflMTANBgkqhkiG9w0BAQsFAAOCATEAUMK435LP\n" + "0XpmpWLBBuC6VLLIsAGmXRv7odw8sG9fOctalsbK3zd9pDOaoFI/128GOmlTp1aC\n" + "n4a/pZ9G5wTKRvdxVqecdYkozDtAS35uwCSQPU/P12Oug6kA4NNJDxF3FGm5eov6\n" + "SnZDL0Qlhat9y0yOakaOkVNwESAwgUEYClZeR45htvH5oP48XEgwqHQ9jPS2MXAe\n" + "QLBjqqeYzIvWqwT4z14tIkN0VWWqqVo/dzV+lfNwQy0UL8iWVYnks8wKs2SBkVHx\n" + "41wBR3uCgCDwlYGDLIG1cm0n7mXrnE7KNcrwQKXL8WGNRAVvx5MVO1vDoWPyQ1Y4\n" + "sDdnQiVER9ee/KxO6IgCTGh+nCBTSSYgLX2E/m789quPvzyi9Hf/go28he6E3dSK\n" + "q7/LRSxaZenB/Q==\n" + "-----END CERTIFICATE-----\n"; + +char pem_ips[] = + "\n" + "X.509 Certificate Information:\n" + " Version: 3\n" + " Serial Number (hex): 00\n" + " Issuer: CN=server-0\n" + " Validity:\n" + " Not Before: Fri Jun 27 09:14:36 UTC 2014\n" + " Not After: Fri Dec 31 23:59:59 UTC 9999\n" + " Subject: CN=server-0\n" + " Subject Public Key Algorithm: RSA\n" + " Algorithm Security Level: Medium (2048 bits)\n" + " Modulus (bits 2048):\n" + " 00:c1:56:12:f6:c3:c7:e3:4c:7e:ff:04:4e:88:1d:67\n" + " a7:f3:4d:64:cc:12:a7:ff:50:aa:5c:31:b9:3c:d1:d1\n" + " ba:78:2c:7d:dd:54:4a:cd:5a:f2:38:8b:b2:c5:26:7e\n" + " 25:05:36:b6:92:e6:1d:c3:00:39:a0:c5:1c:b5:63:3d\n" + " 00:e9:b4:b5:75:a7:14:b1:ff:a0:03:9d:ba:77:da:e5\n" + " de:21:fb:56:da:06:9d:84:57:53:3d:08:45:45:20:fd\n" + " e7:60:65:2e:55:60:db:d3:91:da:64:ff:c4:42:42:54\n" + " 77:cb:47:54:68:1e:b4:62:ad:8a:3c:0a:28:89:cb:d3\n" + " 81:d3:15:9a:1d:67:90:51:83:90:6d:fb:a1:0e:54:6b\n" + " 29:d7:ef:79:19:14:f6:0d:82:73:8f:79:58:0e:af:0e\n" + " cc:bd:17:ab:b5:a2:1f:76:a1:9f:4b:7b:e8:f9:7b:28\n" + " 56:cc:f1:5b:0e:93:c9:e5:44:2f:2d:0a:22:7d:0b:2b\n" + " 30:84:c3:1e:d6:4d:63:5b:41:51:83:d4:b5:09:f4:cc\n" + " ab:ad:51:1b:8e:a1:f6:b1:27:5b:43:3c:bc:ae:10:93\n" + " d4:ce:3b:10:ca:3f:22:dd:9e:a8:3f:4a:a6:a8:cd:8f\n" + " d0:6a:e0:40:26:28:0f:af:0e:13:e1:ac:b9:ac:41:cc\n" + " 5d\n" + " Exponent (bits 24):\n" + " 01:00:01\n" + " Extensions:\n" + " Basic Constraints (critical):\n" + " Certificate Authority (CA): TRUE\n" + " Subject Alternative Name (not critical):\n" + " IPAddress: 127.0.0.1\n" + " IPAddress: 192.168.5.1\n" + " IPAddress: 10.100.2.5\n" + " IPAddress: 0:0:0:0:0:0:0:1\n" + " IPAddress: fe80:0:0:0:3e97:eff:fe18:359a\n" + " Key Usage (critical):\n" + " Certificate signing.\n" + " Subject Key Identifier (not critical):\n" + " bd3d0b6cab6b33d8a8e1ed15b7ab17587cc2a09f\n" + " Signature Algorithm: RSA-SHA256\n" + " Signature:\n" + " 02:22:52:4b:69:e5:4f:f8:17:0a:46:34:d1:ec:6b:f5\n" + " ae:5b:fc:e2:00:ca:1f:f0:1d:74:91:9c:85:0a:a7:06\n" + " 3d:fa:93:0d:35:85:ea:3e:01:9f:9e:bc:52:72:95:b2\n" + " 8a:3a:78:6e:d2:5d:4d:60:88:2b:be:6f:68:75:c7:19\n" + " ac:c9:ea:ab:74:f6:62:4d:30:1e:87:e4:70:1e:96:f4\n" + " 0b:48:ef:c9:28:14:6f:fa:c1:7b:d3:ef:b3:d8:52:90\n" + " 5d:20:d0:aa:8b:10:ab:74:86:46:be:cb:6c:93:54:60\n" + " bc:6e:d6:4d:b2:1e:25:65:38:52:5b:6c:b4:57:8f:0f\n" + " 26:4f:36:ea:42:eb:71:68:93:f3:a9:7a:66:5c:b6:07\n" + " 7d:15:b5:f4:b8:5c:7c:e0:cd:d0:fa:5b:2a:6b:fd:4c\n" + " 71:12:45:d0:37:9e:cf:90:59:6e:fd:ba:3a:8b:ca:37\n" + " 01:cc:6f:e0:32:c7:9e:a4:ea:61:2c:e5:ad:66:73:80\n" + " 5c:5e:0c:44:ec:c2:74:b8:fe:6e:66:af:76:cc:30:10\n" + " 1f:3a:ac:34:36:e6:5b:72:f3:ee:5a:68:c3:43:37:56\n" + " c3:08:02:3c:96:1c:27:18:d0:38:fa:d7:51:4e:82:7d\n" + " fc:81:a2:23:c5:05:80:0e:b4:ba:d3:19:39:74:9c:74\n" + "Other Information:\n" + " SHA1 fingerprint:\n" + " 43536dd4198f6064c117c3825020b14c108f9a34\n" + " SHA256 fingerprint:\n" + " 5ab6626aa069da15650edcfff7305767ff5b8d338289f851a624ea89b50ff06a\n" + " Public Key ID:\n" + " bd3d0b6cab6b33d8a8e1ed15b7ab17587cc2a09f\n" + " Public key's random art:\n" + " +--[ RSA 2048]----+\n" + " | |\n" + " | . |\n" + " | . + |\n" + " | . .= . |\n" + " | .S+oo |\n" + " | E+.+ |\n" + " | . +. *.o |\n" + " | . oo.=..+ o |\n" + " | ooo.+Bo . |\n" + " +-----------------+\n" + "\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIDKzCCAhOgAwIBAgIBADANBgkqhkiG9w0BAQsFADATMREwDwYDVQQDEwhzZXJ2\n" + "ZXItMDAiGA8yMDE0MDYyNzA5MTQzNloYDzk5OTkxMjMxMjM1OTU5WjATMREwDwYD\n" + "VQQDEwhzZXJ2ZXItMDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMFW\n" + "EvbDx+NMfv8ETogdZ6fzTWTMEqf/UKpcMbk80dG6eCx93VRKzVryOIuyxSZ+JQU2\n" + "tpLmHcMAOaDFHLVjPQDptLV1pxSx/6ADnbp32uXeIftW2gadhFdTPQhFRSD952Bl\n" + "LlVg29OR2mT/xEJCVHfLR1RoHrRirYo8CiiJy9OB0xWaHWeQUYOQbfuhDlRrKdfv\n" + "eRkU9g2Cc495WA6vDsy9F6u1oh92oZ9Le+j5eyhWzPFbDpPJ5UQvLQoifQsrMITD\n" + "HtZNY1tBUYPUtQn0zKutURuOofaxJ1tDPLyuEJPUzjsQyj8i3Z6oP0qmqM2P0Grg\n" + "QCYoD68OE+GsuaxBzF0CAwEAAaOBhTCBgjAPBgNVHRMBAf8EBTADAQH/MD8GA1Ud\n" + "EQQ4MDaHBH8AAAGHBMCoBQGHBApkAgWHEAAAAAAAAAAAAAAAAAAAAAGHEP6AAAAA\n" + "AAAAPpcO//4YNZowDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQUvT0LbKtrM9io\n" + "4e0Vt6sXWHzCoJ8wDQYJKoZIhvcNAQELBQADggEBAAIiUktp5U/4FwpGNNHsa/Wu\n" + "W/ziAMof8B10kZyFCqcGPfqTDTWF6j4Bn568UnKVsoo6eG7SXU1giCu+b2h1xxms\n" + "yeqrdPZiTTAeh+RwHpb0C0jvySgUb/rBe9Pvs9hSkF0g0KqLEKt0hka+y2yTVGC8\n" + "btZNsh4lZThSW2y0V48PJk826kLrcWiT86l6Zly2B30VtfS4XHzgzdD6Wypr/Uxx\n" + "EkXQN57PkFlu/bo6i8o3Acxv4DLHnqTqYSzlrWZzgFxeDETswnS4/m5mr3bMMBAf\n" + "Oqw0NuZbcvPuWmjDQzdWwwgCPJYcJxjQOPrXUU6CffyBoiPFBYAOtLrTGTl0nHQ=\n" + "-----END CERTIFICATE-----\n" + ""; + +char multi_cns[] = + "\n" + "Subject: CN=www.example.com,CN=www.example2.com,CN=www.example3.com\n" + "\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIDXzCCAkegAwIBAgIMU+p6uAg2JlqRhAbAMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTAwIhgPMjAxNDA4MTIyMDM2MDhaGA85OTk5MTIzMTIzNTk1OVow\n" + "UDEYMBYGA1UEAxMPd3d3LmV4YW1wbGUuY29tMRkwFwYDVQQDExB3d3cuZXhhbXBs\n" + "ZTIuY29tMRkwFwYDVQQDExB3d3cuZXhhbXBsZTMuY29tMIIBIjANBgkqhkiG9w0B\n" + "AQEFAAOCAQ8AMIIBCgKCAQEAqP5QQUqIS2lquM8hYbDHljqHBDWlGtr167DDPwix\n" + "oIlnq84Xr1zI5zpJ2t/3U5kGTbRJiVroQCh3cVhiQyGTPSJPK+CJGi3diw5Vc2rK\n" + "oAPxaFtaxvE36mLLH2SSuc49b6hhlRpXdWE0TgnsvJojL5V20/CZI23T27fl+DjT\n" + "MduU92qH8wdCgp7q3sHZvtvTZuFM+edYvKZjhUz8P7JwiamG0A2UH+NiyicdAOxc\n" + "+lfwfoyetJdTHLfwxdCXT4X91xGd9eOW9lIL5BqLuAArODTcmHDmiXpXEO/sEyHq\n" + "L96Eawjon0Gz4IRNq7/kwDjSPJOIN0GHq6DtNmXl6J0C5wIDAQABo3YwdDAMBgNV\n" + "HRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA8GA1UdDwEB/wQFAwMHoAAw\n" + "HQYDVR0OBBYEFH6NTStc4XH/M74Meat1sT2o53fUMB8GA1UdIwQYMBaAFK8aMLKE\n" + "hAwWmkzQxRkQ1/efnumUMA0GCSqGSIb3DQEBCwUAA4IBAQBdHknM+rddB0ET+UI2\n" + "Or8qSNjkqBHwsZqb4hJozXFS35a1CJPQuxPzY13eHpiIfmdWL2EpKnLOU8vtAW9e\n" + "qpozMGDyrAuZhxsXUtInbF15C+Yuw9/sqCPK44b5DCtDf6J/N8m8FvdwqO803z1D\n" + "MGcSpES5I68+N3dwSRFYNpSLA1ul5MSlnmoffml959kx9hZNcI4N/UqkO1LMCKXX\n" + "Nf8kGFyLdPjANcIwL5sqP+Dp4HP3wdf7Ny+KFCZ6zDbpa53gb3G0naMdllK8BMfI\n" + "AQ4Y07zSA4K1QMdxeqaMgPIcCDLoKiMXAXNa42+K04F6SOkTjsVx9b5m0oynLt0u\n" + "MUjE\n" + "-----END CERTIFICATE-----\n"; char txt_ip_in_names[] = - "Subject: CN=172.15.1.1\n" - "Subject Alternative Name (not critical):\n" - " DNSname: 172.15.2.1\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIEJDCCAoygAwIBAgIMWQXA/TIEZUXpwL2dMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTEwIBcNMTcwNDMwMTA0ODI5WhgPOTk5OTEyMzEyMzU5NTlaMBUx\n" - "EzARBgNVBAMTCjE3Mi4xNS4xLjEwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGK\n" - "AoIBgQDP3DsT65aY+fHi6FivWbypF71T9UjAGYcho7XXPUCvBr6xQbyERZjb08qn\n" - "RPvVDaiLeDfVve44gSho70t+fxMsCYZqkf9HN4aUzuxx2fHgMBCwyrhgm9zZ/zgA\n" - "D92oXOPem2mKNjPavXtthqvgvwu6HmpJDd+YYR7FFbkgZswrqjd+lg0z+PGt5Xee\n" - "LW3amPZINyc5Rai+LMlYIU29YK9G+CM3XVPQ8ygsQva+4/YoU1DVQRXFYTO1ERdn\n" - "QDV9kmJKvQOxbjchNkLLMdBWee/WpJtBDE4KcidAsbd/6eUIINVAD7Nm5uE39mDv\n" - "2ld4vup4j4A5dQNVhUd6iIYfkkwp9NnGMNGpgvSudPSHH8sFlfxXD8ysbD2wHeXL\n" - "S0Q4Ejypij7tEzy5KdUWqft1QqClHawc2hZ9KKnCHW3xoUsAWxcTIlsgqUUJOkXR\n" - "Qij2N+0SKrn6M6DSOiklCCunLUCUCceM7fiwYndhNFm5YvZq+m+Afnvxk5V7RnBu\n" - "DLoxPxkCAwEAAaN4MHYwDAYDVR0TAQH/BAIwADAVBgNVHREEDjAMggoxNzIuMTUu\n" - "Mi4xMA8GA1UdDwEB/wQFAwMHoAAwHQYDVR0OBBYEFFqnqgPcjDWmHm0PJNxKNeEx\n" - "Msk1MB8GA1UdIwQYMBaAFOnh1ZODb8QbrqHBHpWyyrEVTpanMA0GCSqGSIb3DQEB\n" - "CwUAA4IBgQArsZSxJdZ1W+y3m+y6f1Me3FB/XUscpHQ9cS0wlaikeqBvIru5zp7U\n" - "tLT8qRS7Q8fxsL6LWiOmW5Izi4A51DYJQ9bUEqSIbp9SIV78u5v0oO1bnb7d5SV+\n" - "BZm/zYuox2uTT9PSoB+iqQXUJ7brWdKe0NdPAzRpM928CqWJLPw0gn41GOIPN6wS\n" - "IH29CvqRABkxzIsI8IcxHb3/F+DxTnq6aICoWe2XPeL+RqB7moP6YAC9W/r+hds2\n" - "m8Gok+rGuG3VXk2vc/j1LRnGZfpCQV2L7e7b5eLyQ2Ce46fnxkQSTt4tc0//FTfr\n" - "6X9624hAOV6MSlkPHNBwVE42z8KsxJfPxeHX+YzFBXqBiQ/r/TvOHDt5Tsny6lXh\n" - "TDqlJ3NwdS/K9PAlLqhDiZwwakUS9lEY6IC7biP7mxNM8npzlqogfS07XTJgGxgb\n" - "FtcITJKW0NPA8cnyEAt9jcgaDWw/xbVV+pIytFuGL8pjHEQ4H9Ymu6ifLNlkyu/e\n" - "3XYCeqo17QE=\n" "-----END CERTIFICATE-----\n"; + "Subject: CN=172.15.1.1\n" + "Subject Alternative Name (not critical):\n" + " DNSname: 172.15.2.1\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIEJDCCAoygAwIBAgIMWQXA/TIEZUXpwL2dMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTEwIBcNMTcwNDMwMTA0ODI5WhgPOTk5OTEyMzEyMzU5NTlaMBUx\n" + "EzARBgNVBAMTCjE3Mi4xNS4xLjEwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGK\n" + "AoIBgQDP3DsT65aY+fHi6FivWbypF71T9UjAGYcho7XXPUCvBr6xQbyERZjb08qn\n" + "RPvVDaiLeDfVve44gSho70t+fxMsCYZqkf9HN4aUzuxx2fHgMBCwyrhgm9zZ/zgA\n" + "D92oXOPem2mKNjPavXtthqvgvwu6HmpJDd+YYR7FFbkgZswrqjd+lg0z+PGt5Xee\n" + "LW3amPZINyc5Rai+LMlYIU29YK9G+CM3XVPQ8ygsQva+4/YoU1DVQRXFYTO1ERdn\n" + "QDV9kmJKvQOxbjchNkLLMdBWee/WpJtBDE4KcidAsbd/6eUIINVAD7Nm5uE39mDv\n" + "2ld4vup4j4A5dQNVhUd6iIYfkkwp9NnGMNGpgvSudPSHH8sFlfxXD8ysbD2wHeXL\n" + "S0Q4Ejypij7tEzy5KdUWqft1QqClHawc2hZ9KKnCHW3xoUsAWxcTIlsgqUUJOkXR\n" + "Qij2N+0SKrn6M6DSOiklCCunLUCUCceM7fiwYndhNFm5YvZq+m+Afnvxk5V7RnBu\n" + "DLoxPxkCAwEAAaN4MHYwDAYDVR0TAQH/BAIwADAVBgNVHREEDjAMggoxNzIuMTUu\n" + "Mi4xMA8GA1UdDwEB/wQFAwMHoAAwHQYDVR0OBBYEFFqnqgPcjDWmHm0PJNxKNeEx\n" + "Msk1MB8GA1UdIwQYMBaAFOnh1ZODb8QbrqHBHpWyyrEVTpanMA0GCSqGSIb3DQEB\n" + "CwUAA4IBgQArsZSxJdZ1W+y3m+y6f1Me3FB/XUscpHQ9cS0wlaikeqBvIru5zp7U\n" + "tLT8qRS7Q8fxsL6LWiOmW5Izi4A51DYJQ9bUEqSIbp9SIV78u5v0oO1bnb7d5SV+\n" + "BZm/zYuox2uTT9PSoB+iqQXUJ7brWdKe0NdPAzRpM928CqWJLPw0gn41GOIPN6wS\n" + "IH29CvqRABkxzIsI8IcxHb3/F+DxTnq6aICoWe2XPeL+RqB7moP6YAC9W/r+hds2\n" + "m8Gok+rGuG3VXk2vc/j1LRnGZfpCQV2L7e7b5eLyQ2Ce46fnxkQSTt4tc0//FTfr\n" + "6X9624hAOV6MSlkPHNBwVE42z8KsxJfPxeHX+YzFBXqBiQ/r/TvOHDt5Tsny6lXh\n" + "TDqlJ3NwdS/K9PAlLqhDiZwwakUS9lEY6IC7biP7mxNM8npzlqogfS07XTJgGxgb\n" + "FtcITJKW0NPA8cnyEAt9jcgaDWw/xbVV+pIytFuGL8pjHEQ4H9Ymu6ifLNlkyu/e\n" + "3XYCeqo17QE=\n" + "-----END CERTIFICATE-----\n"; char txt_ip_in_cn[] = - "CN=172.15.1.1\n" - "-----BEGIN CERTIFICATE-----\n" - "MIICCDCCAXGgAwIBAgIMWQXCYQfV3T9BXL4hMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTEwIBcNMTcwNDMwMTA1NDI1WhgPOTk5OTEyMzEyMzU5NTlaMBUx\n" - "EzARBgNVBAMTCjE3Mi4xNS4xLjEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB\n" - "AM5hibrtVPezTZ018YR3DG+r71pTmfxVD1hWMAywQTMdut11Cg16dBtU/WJ6X3YF\n" - "b3MAtrJf7eHnaxPneY7j590eOcqiDmb0skUATuZrX4Su0QMP4ygTcXlzMAxOFYwQ\n" - "pd3d9LQiUxCVlg7fPI7BiqyWA1igBB34OaVbV0GHuJBVAgMBAAGjYTBfMAwGA1Ud\n" - "EwEB/wQCMAAwDwYDVR0PAQH/BAUDAwegADAdBgNVHQ4EFgQUSXWLgTdjnYj1kv1g\n" - "TEGZep6b0MMwHwYDVR0jBBgwFoAU3rLZPebH2OG+u4iAlJ+zbDif4GYwDQYJKoZI\n" - "hvcNAQELBQADgYEAifPWTjcErYbxCqRZW5JhwaosOFHCJVboPsLrIM8W0HEJgqet\n" - "TwarBBiE0mzQKU3GtjGj1ZSxUI/jBg9bzC+fs25VtdlC9nIxi5tSDI/HOoBBgXNr\n" - "f0+Un2eHAxFcRZPWdPy1/mn83NUMnjquuA/HHcju+pcoZrEwAI3PPQHgsGQ=\n" - "-----END CERTIFICATE-----\n"; + "CN=172.15.1.1\n" + "-----BEGIN CERTIFICATE-----\n" + "MIICCDCCAXGgAwIBAgIMWQXCYQfV3T9BXL4hMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTEwIBcNMTcwNDMwMTA1NDI1WhgPOTk5OTEyMzEyMzU5NTlaMBUx\n" + "EzARBgNVBAMTCjE3Mi4xNS4xLjEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB\n" + "AM5hibrtVPezTZ018YR3DG+r71pTmfxVD1hWMAywQTMdut11Cg16dBtU/WJ6X3YF\n" + "b3MAtrJf7eHnaxPneY7j590eOcqiDmb0skUATuZrX4Su0QMP4ygTcXlzMAxOFYwQ\n" + "pd3d9LQiUxCVlg7fPI7BiqyWA1igBB34OaVbV0GHuJBVAgMBAAGjYTBfMAwGA1Ud\n" + "EwEB/wQCMAAwDwYDVR0PAQH/BAUDAwegADAdBgNVHQ4EFgQUSXWLgTdjnYj1kv1g\n" + "TEGZep6b0MMwHwYDVR0jBBgwFoAU3rLZPebH2OG+u4iAlJ+zbDif4GYwDQYJKoZI\n" + "hvcNAQELBQADgYEAifPWTjcErYbxCqRZW5JhwaosOFHCJVboPsLrIM8W0HEJgqet\n" + "TwarBBiE0mzQKU3GtjGj1ZSxUI/jBg9bzC+fs25VtdlC9nIxi5tSDI/HOoBBgXNr\n" + "f0+Un2eHAxFcRZPWdPy1/mn83NUMnjquuA/HHcju+pcoZrEwAI3PPQHgsGQ=\n" + "-----END CERTIFICATE-----\n"; void doit(void) { @@ -900,9 +915,8 @@ void doit(void) fail("%d: Hostname incorrectly does not match (%d)\n", __LINE__, ret); - ret = - gnutls_x509_crt_check_hostname2(x509, "www.example.org", - GNUTLS_VERIFY_DO_NOT_ALLOW_WILDCARDS); + ret = gnutls_x509_crt_check_hostname2( + x509, "www.example.org", GNUTLS_VERIFY_DO_NOT_ALLOW_WILDCARDS); if (ret) fail("%d: Hostname incorrectly matches (%d)\n", __LINE__, ret); @@ -1033,10 +1047,11 @@ void doit(void) if (ret < 0) fail("%d: gnutls_x509_crt_import: %d\n", __LINE__, ret); - ret = - gnutls_x509_crt_check_hostname(x509, "localhost.gnutls.gnutls.org"); + ret = gnutls_x509_crt_check_hostname(x509, + "localhost.gnutls.gnutls.org"); if (ret) - fail("%d: Hostname verification should have failed (too many wildcards)\n", __LINE__); + fail("%d: Hostname verification should have failed (too many wildcards)\n", + __LINE__); if (debug) success("Testing pem-ips...\n"); @@ -1082,21 +1097,18 @@ void doit(void) fail("%d: Hostname incorrectly matches (%d)\n", __LINE__, ret); /* test flag GNUTLS_VERIFY_DO_NOT_ALLOW_IP_MATCHES */ - ret = - gnutls_x509_crt_check_hostname2(x509, "127.0.0.1", - GNUTLS_VERIFY_DO_NOT_ALLOW_IP_MATCHES); + ret = gnutls_x509_crt_check_hostname2( + x509, "127.0.0.1", GNUTLS_VERIFY_DO_NOT_ALLOW_IP_MATCHES); if (ret) fail("%d: Hostname incorrectly matches (%d)\n", __LINE__, ret); - ret = - gnutls_x509_crt_check_hostname2(x509, "::1", - GNUTLS_VERIFY_DO_NOT_ALLOW_IP_MATCHES); + ret = gnutls_x509_crt_check_hostname2( + x509, "::1", GNUTLS_VERIFY_DO_NOT_ALLOW_IP_MATCHES); if (ret) fail("%d: Hostname incorrectly matches (%d)\n", __LINE__, ret); - ret = - gnutls_x509_crt_check_hostname2(x509, "127.0.0.2", - GNUTLS_VERIFY_DO_NOT_ALLOW_IP_MATCHES); + ret = gnutls_x509_crt_check_hostname2( + x509, "127.0.0.2", GNUTLS_VERIFY_DO_NOT_ALLOW_IP_MATCHES); if (ret) fail("%d: Hostname incorrectly matches (%d)\n", __LINE__, ret); diff --git a/tests/id-on-xmppAddr.c b/tests/id-on-xmppAddr.c index 35025f6e87..512123678a 100644 --- a/tests/id-on-xmppAddr.c +++ b/tests/id-on-xmppAddr.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include @@ -30,7 +30,13 @@ #include "utils.h" -#define should_succeed(f) do{ int ret##__LINE__ = (f); if(ret##__LINE__ < 0) { fail(#f " failed %d\n", ret##__LINE__); } }while(0) +#define should_succeed(f) \ + do { \ + int ret##__LINE__ = (f); \ + if (ret##__LINE__ < 0) { \ + fail(#f " failed %d\n", ret##__LINE__); \ + } \ + } while (0) void doit(void) { @@ -42,7 +48,7 @@ void doit(void) char path[256]; const char *src; const char *id_on_xmppAddr = - "very.long.username@so.the.asn1.length.is.a.valid.ascii.character"; + "very.long.username@so.the.asn1.length.is.a.valid.ascii.character"; src = getenv("srcdir"); if (src == NULL) @@ -56,11 +62,10 @@ void doit(void) should_succeed(gnutls_x509_crt_init(&cert)); should_succeed(gnutls_load_file(path, &data)); - should_succeed(gnutls_x509_crt_import - (cert, &data, GNUTLS_X509_FMT_PEM)); - ret = - gnutls_x509_crt_get_subject_alt_name(cert, 0, name, &name_len, - NULL); + should_succeed( + gnutls_x509_crt_import(cert, &data, GNUTLS_X509_FMT_PEM)); + ret = gnutls_x509_crt_get_subject_alt_name(cert, 0, name, &name_len, + NULL); if (ret != GNUTLS_SAN_OTHERNAME_XMPP) fail("did not recognize GNUTLS_SAN_OTHERNAME_XMPP"); diff --git a/tests/infoaccess.c b/tests/infoaccess.c index 46253f6134..ff06f8c709 100644 --- a/tests/infoaccess.c +++ b/tests/infoaccess.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -32,43 +32,43 @@ #include "utils.h" static char cert_with_aia_data[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJC\n" - "TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0\n" - "aWZpY2F0aW9uIEF1dGhvcml0eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0\n" - "aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAzMTkxODMzMzNaFw0yMTAzMTcxODMz\n" - "MzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUw\n" - "IwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVR\n" - "dW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG\n" - "9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Yp\n" - "li4kVEAkOPcahdxYTMukJ0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2D\n" - "rOpm2RgbaIr1VxqYuvXtdj182d6UajtLF8HVj71lODqV0D1VNk7feVcxKh7YWWVJ\n" - "WCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeLYzcS19Dsw3sgQUSj7cug\n" - "F+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWenAScOospU\n" - "xbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCC\n" - "Ak4wPQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVv\n" - "dmFkaXNvZmZzaG9yZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREw\n" - "ggENMIIBCQYJKwYBBAG+WAABMIH7MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNl\n" - "IG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBh\n" - "c3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFy\n" - "ZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh\n" - "Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYI\n" - "KwYBBQUHAgEWFmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3T\n" - "KbkGGew5Oanwl4Rqy+/fMIGuBgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rq\n" - "y+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1p\n" - "dGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYD\n" - "VQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6tlCL\n" - "MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSk\n" - "fnIYj9lofFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf8\n" - "7C9TqnN7Az10buYWnuulLsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1R\n" - "cHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2xgI4JVrmcGmD+XcHXetwReNDWXcG31a0y\n" - "mQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi5upZIof4l/UO/erMkqQW\n" - "xFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi5nrQNiOK\n" - "SnQ2+Q==\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t cert_with_aia = { - (void *)cert_with_aia_data, sizeof(cert_with_aia_data) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJC\n" + "TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0\n" + "aWZpY2F0aW9uIEF1dGhvcml0eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0\n" + "aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAzMTkxODMzMzNaFw0yMTAzMTcxODMz\n" + "MzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUw\n" + "IwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVR\n" + "dW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG\n" + "9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Yp\n" + "li4kVEAkOPcahdxYTMukJ0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2D\n" + "rOpm2RgbaIr1VxqYuvXtdj182d6UajtLF8HVj71lODqV0D1VNk7feVcxKh7YWWVJ\n" + "WCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeLYzcS19Dsw3sgQUSj7cug\n" + "F+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWenAScOospU\n" + "xbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCC\n" + "Ak4wPQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVv\n" + "dmFkaXNvZmZzaG9yZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREw\n" + "ggENMIIBCQYJKwYBBAG+WAABMIH7MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNl\n" + "IG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBh\n" + "c3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFy\n" + "ZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh\n" + "Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYI\n" + "KwYBBQUHAgEWFmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3T\n" + "KbkGGew5Oanwl4Rqy+/fMIGuBgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rq\n" + "y+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1p\n" + "dGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYD\n" + "VQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6tlCL\n" + "MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSk\n" + "fnIYj9lofFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf8\n" + "7C9TqnN7Az10buYWnuulLsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1R\n" + "cHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2xgI4JVrmcGmD+XcHXetwReNDWXcG31a0y\n" + "mQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi5upZIof4l/UO/erMkqQW\n" + "xFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi5nrQNiOK\n" + "SnQ2+Q==\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t cert_with_aia = { (void *)cert_with_aia_data, + sizeof(cert_with_aia_data) }; void doit(void) { @@ -110,8 +110,8 @@ void doit(void) } /* test basic query with null output */ - ret = gnutls_x509_crt_get_authority_info_access - (crt, 0, GNUTLS_IA_ACCESSMETHOD_OID, NULL, NULL); + ret = gnutls_x509_crt_get_authority_info_access( + crt, 0, GNUTLS_IA_ACCESSMETHOD_OID, NULL, NULL); if (ret < 0) { fail("gnutls_x509_crt_get_authority_info_access " "GNUTLS_IA_ACCESSMETHOD_OID null output critical\n"); @@ -120,8 +120,8 @@ void doit(void) /* test same as previous but also check that critical flag is correct */ - ret = gnutls_x509_crt_get_authority_info_access - (crt, 0, GNUTLS_IA_ACCESSMETHOD_OID, NULL, &critical); + ret = gnutls_x509_crt_get_authority_info_access( + crt, 0, GNUTLS_IA_ACCESSMETHOD_OID, NULL, &critical); if (ret < 0) { fail("gnutls_x509_crt_get_authority_info_access " "GNUTLS_IA_ACCESSMETHOD_OID null output\n"); @@ -130,13 +130,14 @@ void doit(void) if (critical != 0) { fail("gnutls_x509_crt_get_authority_info_access " - "critical failed: %d\n", critical); + "critical failed: %d\n", + critical); exit(1); } /* basic query of another type */ - ret = gnutls_x509_crt_get_authority_info_access - (crt, 0, GNUTLS_IA_ACCESSLOCATION_GENERALNAME_TYPE, NULL, NULL); + ret = gnutls_x509_crt_get_authority_info_access( + crt, 0, GNUTLS_IA_ACCESSLOCATION_GENERALNAME_TYPE, NULL, NULL); if (ret < 0) { fail("gnutls_x509_crt_get_authority_info_access " "GNUTLS_IA_ACCESSLOCATION_GENERALNAME_TYPE null output\n"); @@ -144,8 +145,8 @@ void doit(void) } /* basic query of another type, with out-of-bound sequence */ - ret = gnutls_x509_crt_get_authority_info_access - (crt, 1, GNUTLS_IA_ACCESSLOCATION_GENERALNAME_TYPE, NULL, NULL); + ret = gnutls_x509_crt_get_authority_info_access( + crt, 1, GNUTLS_IA_ACCESSLOCATION_GENERALNAME_TYPE, NULL, NULL); if (ret != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { fail("gnutls_x509_crt_get_authority_info_access " "GNUTLS_IA_ACCESSLOCATION_GENERALNAME_TYPE out-of-bounds\n"); @@ -153,8 +154,8 @@ void doit(void) } /* basic query and check output value */ - ret = gnutls_x509_crt_get_authority_info_access - (crt, 0, GNUTLS_IA_ACCESSMETHOD_OID, &data, NULL); + ret = gnutls_x509_crt_get_authority_info_access( + crt, 0, GNUTLS_IA_ACCESSMETHOD_OID, &data, NULL); if (ret < 0) { fail("gnutls_x509_crt_get_authority_info_access " "GNUTLS_IA_ACCESSMETHOD_OID\n"); @@ -168,8 +169,8 @@ void doit(void) gnutls_free(data.data); /* basic query of another type and check output value */ - ret = gnutls_x509_crt_get_authority_info_access - (crt, 0, GNUTLS_IA_ACCESSLOCATION_GENERALNAME_TYPE, &data, NULL); + ret = gnutls_x509_crt_get_authority_info_access( + crt, 0, GNUTLS_IA_ACCESSLOCATION_GENERALNAME_TYPE, &data, NULL); if (ret < 0) { fail("gnutls_x509_crt_get_authority_info_access " "GNUTLS_IA_ACCESSLOCATION_GENERALNAME_TYPE\n"); @@ -183,30 +184,30 @@ void doit(void) gnutls_free(data.data); /* specific query */ - ret = gnutls_x509_crt_get_authority_info_access - (crt, 0, GNUTLS_IA_URI, &data, NULL); + ret = gnutls_x509_crt_get_authority_info_access(crt, 0, GNUTLS_IA_URI, + &data, NULL); if (ret < 0) { fail("gnutls_x509_crt_get_authority_info_access GNUTLS_IA_URI\n"); exit(1); } - if (memcmp - ("https://ocsp.quovadisoffshore.com", data.data, data.size) != 0) { + if (memcmp("https://ocsp.quovadisoffshore.com", data.data, data.size) != + 0) { fail("memcmp URI value failed\n"); exit(1); } gnutls_free(data.data); /* even more specific query */ - ret = gnutls_x509_crt_get_authority_info_access - (crt, 0, GNUTLS_IA_OCSP_URI, &data, NULL); + ret = gnutls_x509_crt_get_authority_info_access( + crt, 0, GNUTLS_IA_OCSP_URI, &data, NULL); if (ret < 0) { fail("gnutls_x509_crt_get_authority_info_access GNUTLS_IA_OCSP_URI\n"); exit(1); } - if (memcmp - ("https://ocsp.quovadisoffshore.com", data.data, data.size) != 0) { + if (memcmp("https://ocsp.quovadisoffshore.com", data.data, data.size) != + 0) { fail("memcmp URI value failed\n"); exit(1); } @@ -215,5 +216,4 @@ void doit(void) gnutls_x509_crt_deinit(crt); gnutls_global_deinit(); - } diff --git a/tests/init_roundtrip.c b/tests/init_roundtrip.c index 17918e73e5..b179728341 100644 --- a/tests/init_roundtrip.c +++ b/tests/init_roundtrip.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include diff --git a/tests/insecure_key.c b/tests/insecure_key.c index 167b02d07e..10540b1954 100644 --- a/tests/insecure_key.c +++ b/tests/insecure_key.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,10 +30,10 @@ #include #include #if !defined(_WIN32) -# include -# include -# include -# include +#include +#include +#include +#include #endif #include #include @@ -54,7 +54,7 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "<%d>| %s", level, str); } -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1474109119; if (t) @@ -83,25 +83,21 @@ void doit(void) assert(gnutls_certificate_allocate_credentials(&clicred) >= 0); assert(gnutls_certificate_allocate_credentials(&x509_cred) >= 0); - ret = - gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) fail("set_x509_trust_file failed: %s\n", gnutls_strerror(ret)); - ret = - gnutls_certificate_set_x509_key_mem2(x509_cred, - &server_ca3_localhost_insecure_cert, - &server_ca3_localhost_insecure_key, - GNUTLS_X509_FMT_PEM, NULL, 0); + ret = gnutls_certificate_set_x509_key_mem2( + x509_cred, &server_ca3_localhost_insecure_cert, + &server_ca3_localhost_insecure_key, GNUTLS_X509_FMT_PEM, NULL, + 0); if (ret < 0) fail("%s\n", gnutls_strerror(ret)); - ret = - gnutls_certificate_set_x509_key_mem2(x509_cred, - &server_ca3_localhost6_cert_chain, - &server_ca3_key, - GNUTLS_X509_FMT_PEM, NULL, 0); + ret = gnutls_certificate_set_x509_key_mem2( + x509_cred, &server_ca3_localhost6_cert_chain, &server_ca3_key, + GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) fail("%s\n", gnutls_strerror(ret)); diff --git a/tests/iov.c b/tests/iov.c index 6e9467f302..550476ec3e 100644 --- a/tests/iov.c +++ b/tests/iov.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include "gnutls_int.h" @@ -43,131 +43,97 @@ struct test_st { size_t expcnt; }; -static const giovec_t iov16[] = { - {(void *)"0123456789012345", 16}, - {(void *)"0123456789012345", 16}, - {(void *)"0123456789012345", 16}, - {(void *)"0123456789012345", 16} -}; - -static const struct exp_st exp16_64[] = { - {64, 4, 0}, - {0, 0, 0} -}; - -static const struct exp_st exp16_32[] = { - {32, 2, 0}, - {32, 4, 0}, - {0, 0, 0} -}; - -static const struct exp_st exp16_16[] = { - {16, 1, 0}, - {16, 2, 0}, - {16, 3, 0}, - {16, 4, 0}, - {0, 0, 0} -}; - -static const struct exp_st exp16_4[] = { - {16, 1, 0}, - {16, 2, 0}, - {16, 3, 0}, - {16, 4, 0}, - {0, 0, 0} -}; - -static const struct exp_st exp16_3[] = { - {15, 0, 15}, - {3, 1, 2}, - {12, 1, 14}, - {3, 2, 1}, - {15, 3, 0}, - {15, 3, 15}, - {1, 4, 0}, - {0, 0, 0} -}; - -static const giovec_t iov8[] = { - {(void *)"01234567", 8}, - {(void *)"01234567", 8}, - {(void *)"01234567", 8}, - {(void *)"01234567", 8} -}; - -static const struct exp_st exp8_64[] = { - {32, 4, 0}, - {0, 0, 0} -}; - -static const giovec_t iov_odd[] = { - {(void *)"0", 1}, - {(void *)"012", 3}, - {(void *)"01234", 5}, - {(void *)"0123456", 7}, - {(void *)"012345678", 9}, - {(void *)"01234567890", 11}, - {(void *)"0123456789012", 13}, - {(void *)"012345678901234", 15} -}; - -static const struct exp_st exp_odd_16[] = { - {16, 4, 0}, - {16, 5, 7}, - {16, 6, 12}, - {16, 8, 0}, - {0, 0, 0} -}; - -static const giovec_t iov_skip[] = { - {(void *)"0123456789012345", 16}, - {(void *)"01234567", 8}, - {(void *)"", 0}, - {(void *)"", 0}, - {(void *)"0123456789012345", 16} -}; - -static const struct exp_st exp_skip_16[] = { - {16, 1, 0}, - {16, 4, 8}, - {8, 5, 0}, - {0, 0, 0} -}; - -static const giovec_t iov_empty[] = { - {(void *)"", 0}, - {(void *)"", 0}, - {(void *)"", 0}, - {(void *)"", 0} -}; - -static const struct exp_st exp_empty_16[] = { - {0, 0, 0} -}; +static const giovec_t iov16[] = { { (void *)"0123456789012345", 16 }, + { (void *)"0123456789012345", 16 }, + { (void *)"0123456789012345", 16 }, + { (void *)"0123456789012345", 16 } }; + +static const struct exp_st exp16_64[] = { { 64, 4, 0 }, { 0, 0, 0 } }; + +static const struct exp_st exp16_32[] = { { 32, 2, 0 }, + { 32, 4, 0 }, + { 0, 0, 0 } }; + +static const struct exp_st exp16_16[] = { { 16, 1, 0 }, + { 16, 2, 0 }, + { 16, 3, 0 }, + { 16, 4, 0 }, + { 0, 0, 0 } }; + +static const struct exp_st exp16_4[] = { { 16, 1, 0 }, + { 16, 2, 0 }, + { 16, 3, 0 }, + { 16, 4, 0 }, + { 0, 0, 0 } }; + +static const struct exp_st exp16_3[] = { { 15, 0, 15 }, { 3, 1, 2 }, + { 12, 1, 14 }, { 3, 2, 1 }, + { 15, 3, 0 }, { 15, 3, 15 }, + { 1, 4, 0 }, { 0, 0, 0 } }; + +static const giovec_t iov8[] = { { (void *)"01234567", 8 }, + { (void *)"01234567", 8 }, + { (void *)"01234567", 8 }, + { (void *)"01234567", 8 } }; + +static const struct exp_st exp8_64[] = { { 32, 4, 0 }, { 0, 0, 0 } }; + +static const giovec_t iov_odd[] = { { (void *)"0", 1 }, + { (void *)"012", 3 }, + { (void *)"01234", 5 }, + { (void *)"0123456", 7 }, + { (void *)"012345678", 9 }, + { (void *)"01234567890", 11 }, + { (void *)"0123456789012", 13 }, + { (void *)"012345678901234", 15 } }; + +static const struct exp_st exp_odd_16[] = { { 16, 4, 0 }, + { 16, 5, 7 }, + { 16, 6, 12 }, + { 16, 8, 0 }, + { 0, 0, 0 } }; + +static const giovec_t iov_skip[] = { { (void *)"0123456789012345", 16 }, + { (void *)"01234567", 8 }, + { (void *)"", 0 }, + { (void *)"", 0 }, + { (void *)"0123456789012345", 16 } }; + +static const struct exp_st exp_skip_16[] = { { 16, 1, 0 }, + { 16, 4, 8 }, + { 8, 5, 0 }, + { 0, 0, 0 } }; + +static const giovec_t iov_empty[] = { { (void *)"", 0 }, + { (void *)"", 0 }, + { (void *)"", 0 }, + { (void *)"", 0 } }; + +static const struct exp_st exp_empty_16[] = { { 0, 0, 0 } }; static const struct test_st tests[] = { - {"16/64", iov16, sizeof(iov16) / sizeof(iov16[0]), 64, - exp16_64, sizeof(exp16_64) / sizeof(exp16_64[0])}, - {"16/32", iov16, sizeof(iov16) / sizeof(iov16[0]), 32, - exp16_32, sizeof(exp16_32) / sizeof(exp16_32[0])}, - {"16/16", iov16, sizeof(iov16) / sizeof(iov16[0]), 16, - exp16_16, sizeof(exp16_16) / sizeof(exp16_16[0])}, - {"16/4", iov16, sizeof(iov16) / sizeof(iov16[0]), 4, - exp16_4, sizeof(exp16_4) / sizeof(exp16_4[0])}, - {"16/3", iov16, sizeof(iov16) / sizeof(iov16[0]), 3, - exp16_3, sizeof(exp16_3) / sizeof(exp16_3[0])}, - {"8/64", iov8, sizeof(iov8) / sizeof(iov8[0]), 64, - exp8_64, sizeof(exp8_64) / sizeof(exp8_64[0])}, - {"odd/16", iov_odd, sizeof(iov_odd) / sizeof(iov_odd[0]), 16, - exp_odd_16, sizeof(exp_odd_16) / sizeof(exp_odd_16[0])}, - {"skip/16", iov_skip, sizeof(iov_skip) / sizeof(iov_skip[0]), 16, - exp_skip_16, sizeof(exp_skip_16) / sizeof(exp_skip_16[0])}, - {"empty/16", iov_empty, sizeof(iov_empty) / sizeof(iov_empty[0]), 16, - exp_empty_16, sizeof(exp_empty_16) / sizeof(exp_empty_16[0])}, -}; - -static void -copy(giovec_t * dst, uint8_t * buffer, const giovec_t * src, size_t iovcnt) + { "16/64", iov16, sizeof(iov16) / sizeof(iov16[0]), 64, exp16_64, + sizeof(exp16_64) / sizeof(exp16_64[0]) }, + { "16/32", iov16, sizeof(iov16) / sizeof(iov16[0]), 32, exp16_32, + sizeof(exp16_32) / sizeof(exp16_32[0]) }, + { "16/16", iov16, sizeof(iov16) / sizeof(iov16[0]), 16, exp16_16, + sizeof(exp16_16) / sizeof(exp16_16[0]) }, + { "16/4", iov16, sizeof(iov16) / sizeof(iov16[0]), 4, exp16_4, + sizeof(exp16_4) / sizeof(exp16_4[0]) }, + { "16/3", iov16, sizeof(iov16) / sizeof(iov16[0]), 3, exp16_3, + sizeof(exp16_3) / sizeof(exp16_3[0]) }, + { "8/64", iov8, sizeof(iov8) / sizeof(iov8[0]), 64, exp8_64, + sizeof(exp8_64) / sizeof(exp8_64[0]) }, + { "odd/16", iov_odd, sizeof(iov_odd) / sizeof(iov_odd[0]), 16, + exp_odd_16, sizeof(exp_odd_16) / sizeof(exp_odd_16[0]) }, + { "skip/16", iov_skip, sizeof(iov_skip) / sizeof(iov_skip[0]), 16, + exp_skip_16, sizeof(exp_skip_16) / sizeof(exp_skip_16[0]) }, + { "empty/16", iov_empty, sizeof(iov_empty) / sizeof(iov_empty[0]), 16, + exp_empty_16, sizeof(exp_empty_16) / sizeof(exp_empty_16[0]) }, +}; + +static void copy(giovec_t *dst, uint8_t *buffer, const giovec_t *src, + size_t iovcnt) { uint8_t *p = buffer; size_t i; @@ -180,7 +146,7 @@ copy(giovec_t * dst, uint8_t * buffer, const giovec_t * src, size_t iovcnt) } } -static void translate(uint8_t * data, size_t len) +static void translate(uint8_t *data, size_t len) { for (; len > 0; len--) { uint8_t *p = &data[len - 1]; @@ -209,19 +175,18 @@ void doit(void) copy(iov, buffer, tests[i].iov, tests[i].iovcnt); success("%s\n", tests[i].name); - assert(_gnutls_iov_iter_init(&iter, - iov, tests[i].iovcnt, + assert(_gnutls_iov_iter_init(&iter, iov, tests[i].iovcnt, tests[i].block_size) == 0); for (j = 0; j < tests[i].expcnt; j++) { ssize_t ret; ret = _gnutls_iov_iter_next(&iter, &data); if (ret != exp[j].ret) - fail("iov_iter_next: %d != %d\n", - (int)ret, (int)exp[j].ret); + fail("iov_iter_next: %d != %d\n", (int)ret, + (int)exp[j].ret); else if (debug) - success("iov_iter_next: %d == %d\n", - (int)ret, (int)exp[j].ret); + success("iov_iter_next: %d == %d\n", (int)ret, + (int)exp[j].ret); if (ret == 0) break; if (ret > 0) { diff --git a/tests/ip-check.c b/tests/ip-check.c index 0b50b143bd..48e0267f96 100644 --- a/tests/ip-check.c +++ b/tests/ip-check.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -34,107 +34,109 @@ * name-constraints-ip.c for lower level checks. */ -char pem_ips[] = "\n" - "X.509 Certificate Information:\n" - " Version: 3\n" - " Serial Number (hex): 00\n" - " Issuer: CN=server-0\n" - " Validity:\n" - " Not Before: Fri Jun 27 09:14:36 UTC 2014\n" - " Not After: Fri Dec 31 23:59:59 UTC 9999\n" - " Subject: CN=server-0\n" - " Subject Public Key Algorithm: RSA\n" - " Algorithm Security Level: Medium (2048 bits)\n" - " Modulus (bits 2048):\n" - " 00:c1:56:12:f6:c3:c7:e3:4c:7e:ff:04:4e:88:1d:67\n" - " a7:f3:4d:64:cc:12:a7:ff:50:aa:5c:31:b9:3c:d1:d1\n" - " ba:78:2c:7d:dd:54:4a:cd:5a:f2:38:8b:b2:c5:26:7e\n" - " 25:05:36:b6:92:e6:1d:c3:00:39:a0:c5:1c:b5:63:3d\n" - " 00:e9:b4:b5:75:a7:14:b1:ff:a0:03:9d:ba:77:da:e5\n" - " de:21:fb:56:da:06:9d:84:57:53:3d:08:45:45:20:fd\n" - " e7:60:65:2e:55:60:db:d3:91:da:64:ff:c4:42:42:54\n" - " 77:cb:47:54:68:1e:b4:62:ad:8a:3c:0a:28:89:cb:d3\n" - " 81:d3:15:9a:1d:67:90:51:83:90:6d:fb:a1:0e:54:6b\n" - " 29:d7:ef:79:19:14:f6:0d:82:73:8f:79:58:0e:af:0e\n" - " cc:bd:17:ab:b5:a2:1f:76:a1:9f:4b:7b:e8:f9:7b:28\n" - " 56:cc:f1:5b:0e:93:c9:e5:44:2f:2d:0a:22:7d:0b:2b\n" - " 30:84:c3:1e:d6:4d:63:5b:41:51:83:d4:b5:09:f4:cc\n" - " ab:ad:51:1b:8e:a1:f6:b1:27:5b:43:3c:bc:ae:10:93\n" - " d4:ce:3b:10:ca:3f:22:dd:9e:a8:3f:4a:a6:a8:cd:8f\n" - " d0:6a:e0:40:26:28:0f:af:0e:13:e1:ac:b9:ac:41:cc\n" - " 5d\n" - " Exponent (bits 24):\n" - " 01:00:01\n" - " Extensions:\n" - " Basic Constraints (critical):\n" - " Certificate Authority (CA): TRUE\n" - " Subject Alternative Name (not critical):\n" - " IPAddress: 127.0.0.1\n" - " IPAddress: 192.168.5.1\n" - " IPAddress: 10.100.2.5\n" - " IPAddress: 0:0:0:0:0:0:0:1\n" - " IPAddress: fe80:0:0:0:3e97:eff:fe18:359a\n" - " Key Usage (critical):\n" - " Certificate signing.\n" - " Subject Key Identifier (not critical):\n" - " bd3d0b6cab6b33d8a8e1ed15b7ab17587cc2a09f\n" - " Signature Algorithm: RSA-SHA256\n" - " Signature:\n" - " 02:22:52:4b:69:e5:4f:f8:17:0a:46:34:d1:ec:6b:f5\n" - " ae:5b:fc:e2:00:ca:1f:f0:1d:74:91:9c:85:0a:a7:06\n" - " 3d:fa:93:0d:35:85:ea:3e:01:9f:9e:bc:52:72:95:b2\n" - " 8a:3a:78:6e:d2:5d:4d:60:88:2b:be:6f:68:75:c7:19\n" - " ac:c9:ea:ab:74:f6:62:4d:30:1e:87:e4:70:1e:96:f4\n" - " 0b:48:ef:c9:28:14:6f:fa:c1:7b:d3:ef:b3:d8:52:90\n" - " 5d:20:d0:aa:8b:10:ab:74:86:46:be:cb:6c:93:54:60\n" - " bc:6e:d6:4d:b2:1e:25:65:38:52:5b:6c:b4:57:8f:0f\n" - " 26:4f:36:ea:42:eb:71:68:93:f3:a9:7a:66:5c:b6:07\n" - " 7d:15:b5:f4:b8:5c:7c:e0:cd:d0:fa:5b:2a:6b:fd:4c\n" - " 71:12:45:d0:37:9e:cf:90:59:6e:fd:ba:3a:8b:ca:37\n" - " 01:cc:6f:e0:32:c7:9e:a4:ea:61:2c:e5:ad:66:73:80\n" - " 5c:5e:0c:44:ec:c2:74:b8:fe:6e:66:af:76:cc:30:10\n" - " 1f:3a:ac:34:36:e6:5b:72:f3:ee:5a:68:c3:43:37:56\n" - " c3:08:02:3c:96:1c:27:18:d0:38:fa:d7:51:4e:82:7d\n" - " fc:81:a2:23:c5:05:80:0e:b4:ba:d3:19:39:74:9c:74\n" - "Other Information:\n" - " SHA1 fingerprint:\n" - " 43536dd4198f6064c117c3825020b14c108f9a34\n" - " SHA256 fingerprint:\n" - " 5ab6626aa069da15650edcfff7305767ff5b8d338289f851a624ea89b50ff06a\n" - " Public Key ID:\n" - " bd3d0b6cab6b33d8a8e1ed15b7ab17587cc2a09f\n" - " Public key's random art:\n" - " +--[ RSA 2048]----+\n" - " | |\n" - " | . |\n" - " | . + |\n" - " | . .= . |\n" - " | .S+oo |\n" - " | E+.+ |\n" - " | . +. *.o |\n" - " | . oo.=..+ o |\n" - " | ooo.+Bo . |\n" - " +-----------------+\n" - "\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIDKzCCAhOgAwIBAgIBADANBgkqhkiG9w0BAQsFADATMREwDwYDVQQDEwhzZXJ2\n" - "ZXItMDAiGA8yMDE0MDYyNzA5MTQzNloYDzk5OTkxMjMxMjM1OTU5WjATMREwDwYD\n" - "VQQDEwhzZXJ2ZXItMDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMFW\n" - "EvbDx+NMfv8ETogdZ6fzTWTMEqf/UKpcMbk80dG6eCx93VRKzVryOIuyxSZ+JQU2\n" - "tpLmHcMAOaDFHLVjPQDptLV1pxSx/6ADnbp32uXeIftW2gadhFdTPQhFRSD952Bl\n" - "LlVg29OR2mT/xEJCVHfLR1RoHrRirYo8CiiJy9OB0xWaHWeQUYOQbfuhDlRrKdfv\n" - "eRkU9g2Cc495WA6vDsy9F6u1oh92oZ9Le+j5eyhWzPFbDpPJ5UQvLQoifQsrMITD\n" - "HtZNY1tBUYPUtQn0zKutURuOofaxJ1tDPLyuEJPUzjsQyj8i3Z6oP0qmqM2P0Grg\n" - "QCYoD68OE+GsuaxBzF0CAwEAAaOBhTCBgjAPBgNVHRMBAf8EBTADAQH/MD8GA1Ud\n" - "EQQ4MDaHBH8AAAGHBMCoBQGHBApkAgWHEAAAAAAAAAAAAAAAAAAAAAGHEP6AAAAA\n" - "AAAAPpcO//4YNZowDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQUvT0LbKtrM9io\n" - "4e0Vt6sXWHzCoJ8wDQYJKoZIhvcNAQELBQADggEBAAIiUktp5U/4FwpGNNHsa/Wu\n" - "W/ziAMof8B10kZyFCqcGPfqTDTWF6j4Bn568UnKVsoo6eG7SXU1giCu+b2h1xxms\n" - "yeqrdPZiTTAeh+RwHpb0C0jvySgUb/rBe9Pvs9hSkF0g0KqLEKt0hka+y2yTVGC8\n" - "btZNsh4lZThSW2y0V48PJk826kLrcWiT86l6Zly2B30VtfS4XHzgzdD6Wypr/Uxx\n" - "EkXQN57PkFlu/bo6i8o3Acxv4DLHnqTqYSzlrWZzgFxeDETswnS4/m5mr3bMMBAf\n" - "Oqw0NuZbcvPuWmjDQzdWwwgCPJYcJxjQOPrXUU6CffyBoiPFBYAOtLrTGTl0nHQ=\n" - "-----END CERTIFICATE-----\n" ""; +char pem_ips[] = + "\n" + "X.509 Certificate Information:\n" + " Version: 3\n" + " Serial Number (hex): 00\n" + " Issuer: CN=server-0\n" + " Validity:\n" + " Not Before: Fri Jun 27 09:14:36 UTC 2014\n" + " Not After: Fri Dec 31 23:59:59 UTC 9999\n" + " Subject: CN=server-0\n" + " Subject Public Key Algorithm: RSA\n" + " Algorithm Security Level: Medium (2048 bits)\n" + " Modulus (bits 2048):\n" + " 00:c1:56:12:f6:c3:c7:e3:4c:7e:ff:04:4e:88:1d:67\n" + " a7:f3:4d:64:cc:12:a7:ff:50:aa:5c:31:b9:3c:d1:d1\n" + " ba:78:2c:7d:dd:54:4a:cd:5a:f2:38:8b:b2:c5:26:7e\n" + " 25:05:36:b6:92:e6:1d:c3:00:39:a0:c5:1c:b5:63:3d\n" + " 00:e9:b4:b5:75:a7:14:b1:ff:a0:03:9d:ba:77:da:e5\n" + " de:21:fb:56:da:06:9d:84:57:53:3d:08:45:45:20:fd\n" + " e7:60:65:2e:55:60:db:d3:91:da:64:ff:c4:42:42:54\n" + " 77:cb:47:54:68:1e:b4:62:ad:8a:3c:0a:28:89:cb:d3\n" + " 81:d3:15:9a:1d:67:90:51:83:90:6d:fb:a1:0e:54:6b\n" + " 29:d7:ef:79:19:14:f6:0d:82:73:8f:79:58:0e:af:0e\n" + " cc:bd:17:ab:b5:a2:1f:76:a1:9f:4b:7b:e8:f9:7b:28\n" + " 56:cc:f1:5b:0e:93:c9:e5:44:2f:2d:0a:22:7d:0b:2b\n" + " 30:84:c3:1e:d6:4d:63:5b:41:51:83:d4:b5:09:f4:cc\n" + " ab:ad:51:1b:8e:a1:f6:b1:27:5b:43:3c:bc:ae:10:93\n" + " d4:ce:3b:10:ca:3f:22:dd:9e:a8:3f:4a:a6:a8:cd:8f\n" + " d0:6a:e0:40:26:28:0f:af:0e:13:e1:ac:b9:ac:41:cc\n" + " 5d\n" + " Exponent (bits 24):\n" + " 01:00:01\n" + " Extensions:\n" + " Basic Constraints (critical):\n" + " Certificate Authority (CA): TRUE\n" + " Subject Alternative Name (not critical):\n" + " IPAddress: 127.0.0.1\n" + " IPAddress: 192.168.5.1\n" + " IPAddress: 10.100.2.5\n" + " IPAddress: 0:0:0:0:0:0:0:1\n" + " IPAddress: fe80:0:0:0:3e97:eff:fe18:359a\n" + " Key Usage (critical):\n" + " Certificate signing.\n" + " Subject Key Identifier (not critical):\n" + " bd3d0b6cab6b33d8a8e1ed15b7ab17587cc2a09f\n" + " Signature Algorithm: RSA-SHA256\n" + " Signature:\n" + " 02:22:52:4b:69:e5:4f:f8:17:0a:46:34:d1:ec:6b:f5\n" + " ae:5b:fc:e2:00:ca:1f:f0:1d:74:91:9c:85:0a:a7:06\n" + " 3d:fa:93:0d:35:85:ea:3e:01:9f:9e:bc:52:72:95:b2\n" + " 8a:3a:78:6e:d2:5d:4d:60:88:2b:be:6f:68:75:c7:19\n" + " ac:c9:ea:ab:74:f6:62:4d:30:1e:87:e4:70:1e:96:f4\n" + " 0b:48:ef:c9:28:14:6f:fa:c1:7b:d3:ef:b3:d8:52:90\n" + " 5d:20:d0:aa:8b:10:ab:74:86:46:be:cb:6c:93:54:60\n" + " bc:6e:d6:4d:b2:1e:25:65:38:52:5b:6c:b4:57:8f:0f\n" + " 26:4f:36:ea:42:eb:71:68:93:f3:a9:7a:66:5c:b6:07\n" + " 7d:15:b5:f4:b8:5c:7c:e0:cd:d0:fa:5b:2a:6b:fd:4c\n" + " 71:12:45:d0:37:9e:cf:90:59:6e:fd:ba:3a:8b:ca:37\n" + " 01:cc:6f:e0:32:c7:9e:a4:ea:61:2c:e5:ad:66:73:80\n" + " 5c:5e:0c:44:ec:c2:74:b8:fe:6e:66:af:76:cc:30:10\n" + " 1f:3a:ac:34:36:e6:5b:72:f3:ee:5a:68:c3:43:37:56\n" + " c3:08:02:3c:96:1c:27:18:d0:38:fa:d7:51:4e:82:7d\n" + " fc:81:a2:23:c5:05:80:0e:b4:ba:d3:19:39:74:9c:74\n" + "Other Information:\n" + " SHA1 fingerprint:\n" + " 43536dd4198f6064c117c3825020b14c108f9a34\n" + " SHA256 fingerprint:\n" + " 5ab6626aa069da15650edcfff7305767ff5b8d338289f851a624ea89b50ff06a\n" + " Public Key ID:\n" + " bd3d0b6cab6b33d8a8e1ed15b7ab17587cc2a09f\n" + " Public key's random art:\n" + " +--[ RSA 2048]----+\n" + " | |\n" + " | . |\n" + " | . + |\n" + " | . .= . |\n" + " | .S+oo |\n" + " | E+.+ |\n" + " | . +. *.o |\n" + " | . oo.=..+ o |\n" + " | ooo.+Bo . |\n" + " +-----------------+\n" + "\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIDKzCCAhOgAwIBAgIBADANBgkqhkiG9w0BAQsFADATMREwDwYDVQQDEwhzZXJ2\n" + "ZXItMDAiGA8yMDE0MDYyNzA5MTQzNloYDzk5OTkxMjMxMjM1OTU5WjATMREwDwYD\n" + "VQQDEwhzZXJ2ZXItMDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMFW\n" + "EvbDx+NMfv8ETogdZ6fzTWTMEqf/UKpcMbk80dG6eCx93VRKzVryOIuyxSZ+JQU2\n" + "tpLmHcMAOaDFHLVjPQDptLV1pxSx/6ADnbp32uXeIftW2gadhFdTPQhFRSD952Bl\n" + "LlVg29OR2mT/xEJCVHfLR1RoHrRirYo8CiiJy9OB0xWaHWeQUYOQbfuhDlRrKdfv\n" + "eRkU9g2Cc495WA6vDsy9F6u1oh92oZ9Le+j5eyhWzPFbDpPJ5UQvLQoifQsrMITD\n" + "HtZNY1tBUYPUtQn0zKutURuOofaxJ1tDPLyuEJPUzjsQyj8i3Z6oP0qmqM2P0Grg\n" + "QCYoD68OE+GsuaxBzF0CAwEAAaOBhTCBgjAPBgNVHRMBAf8EBTADAQH/MD8GA1Ud\n" + "EQQ4MDaHBH8AAAGHBMCoBQGHBApkAgWHEAAAAAAAAAAAAAAAAAAAAAGHEP6AAAAA\n" + "AAAAPpcO//4YNZowDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQUvT0LbKtrM9io\n" + "4e0Vt6sXWHzCoJ8wDQYJKoZIhvcNAQELBQADggEBAAIiUktp5U/4FwpGNNHsa/Wu\n" + "W/ziAMof8B10kZyFCqcGPfqTDTWF6j4Bn568UnKVsoo6eG7SXU1giCu+b2h1xxms\n" + "yeqrdPZiTTAeh+RwHpb0C0jvySgUb/rBe9Pvs9hSkF0g0KqLEKt0hka+y2yTVGC8\n" + "btZNsh4lZThSW2y0V48PJk826kLrcWiT86l6Zly2B30VtfS4XHzgzdD6Wypr/Uxx\n" + "EkXQN57PkFlu/bo6i8o3Acxv4DLHnqTqYSzlrWZzgFxeDETswnS4/m5mr3bMMBAf\n" + "Oqw0NuZbcvPuWmjDQzdWwwgCPJYcJxjQOPrXUU6CffyBoiPFBYAOtLrTGTl0nHQ=\n" + "-----END CERTIFICATE-----\n" + ""; void doit(void) { @@ -185,31 +187,34 @@ void doit(void) fail("%d: Hostname incorrectly does not match (%d)\n", __LINE__, ret); - ret = - gnutls_x509_crt_check_ip(x509, (unsigned char *)"\x7f\x00\x00\x02", - 4, 0); + ret = gnutls_x509_crt_check_ip( + x509, (unsigned char *)"\x7f\x00\x00\x02", 4, 0); if (ret) fail("%d: IP incorrectly matches (%d)\n", __LINE__, ret); - ret = - gnutls_x509_crt_check_ip(x509, (unsigned char *)"\x7f\x00\x00\x01", - 4, 0); + ret = gnutls_x509_crt_check_ip( + x509, (unsigned char *)"\x7f\x00\x00\x01", 4, 0); if (!ret) fail("%d: IP incorrectly does not match (%d)\n", __LINE__, ret); - ret = - gnutls_x509_crt_check_ip(x509, (unsigned char *)"\xc0\xa8\x05\x01", - 4, 0); + ret = gnutls_x509_crt_check_ip( + x509, (unsigned char *)"\xc0\xa8\x05\x01", 4, 0); if (!ret) fail("%d: IP incorrectly does not match (%d)\n", __LINE__, ret); - ret = gnutls_x509_crt_check_ip(x509, (unsigned char *) - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01", 16, 0); + ret = gnutls_x509_crt_check_ip( + x509, + (unsigned char + *)"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01", + 16, 0); if (!ret) fail("%d: IP incorrectly does not match (%d)\n", __LINE__, ret); - ret = gnutls_x509_crt_check_ip(x509, (unsigned char *) - "\xfe\x80\x00\x00\x00\x00\x00\x00\x3e\x97\x0e\xff\xfe\x18\x35\x9a", 16, 0); + ret = gnutls_x509_crt_check_ip( + x509, + (unsigned char + *)"\xfe\x80\x00\x00\x00\x00\x00\x00\x3e\x97\x0e\xff\xfe\x18\x35\x9a", + 16, 0); if (!ret) fail("%d: IP incorrectly does not match (%d)\n", __LINE__, ret); diff --git a/tests/ip-utils.c b/tests/ip-utils.c index 5718953f86..3d05470bc2 100644 --- a/tests/ip-utils.c +++ b/tests/ip-utils.c @@ -32,28 +32,29 @@ #include #ifndef _WIN32 -# include -# include +#include +#include -# define BUILD_IN_TESTS -# include "../lib/x509/ip-in-cidr.h" +#define BUILD_IN_TESTS +#include "../lib/x509/ip-in-cidr.h" -# define _MATCH_FUNC(fname, CIDR, IP, status) \ -static void fname(void **glob_state) \ -{ \ - gnutls_datum_t dcidr; \ - const char cidr[] = CIDR; \ - const char ip[] = IP; \ - char xip[4]; \ - gnutls_datum_t dip = {(unsigned char*)xip, sizeof(xip)}; \ - assert_int_equal(gnutls_x509_cidr_to_rfc5280(cidr, &dcidr), 0); \ - assert_int_equal(inet_pton(AF_INET, ip, xip), 1); \ - assert_int_equal(ip_in_cidr(&dip, &dcidr), status); \ - gnutls_free(dcidr.data); \ -} +#define _MATCH_FUNC(fname, CIDR, IP, status) \ + static void fname(void **glob_state) \ + { \ + gnutls_datum_t dcidr; \ + const char cidr[] = CIDR; \ + const char ip[] = IP; \ + char xip[4]; \ + gnutls_datum_t dip = { (unsigned char *)xip, sizeof(xip) }; \ + assert_int_equal(gnutls_x509_cidr_to_rfc5280(cidr, &dcidr), \ + 0); \ + assert_int_equal(inet_pton(AF_INET, ip, xip), 1); \ + assert_int_equal(ip_in_cidr(&dip, &dcidr), status); \ + gnutls_free(dcidr.data); \ + } -# define MATCH_FUNC_OK(fname, CIDR, IP) _MATCH_FUNC(fname, CIDR, IP, 1) -# define MATCH_FUNC_NOT_OK(fname, CIDR, IP) _MATCH_FUNC(fname, CIDR, IP, 0) +#define MATCH_FUNC_OK(fname, CIDR, IP) _MATCH_FUNC(fname, CIDR, IP, 1) +#define MATCH_FUNC_NOT_OK(fname, CIDR, IP) _MATCH_FUNC(fname, CIDR, IP, 0) MATCH_FUNC_OK(check_ip1_match, "192.168.1.0/24", "192.168.1.128"); MATCH_FUNC_OK(check_ip2_match, "192.168.1.0/24", "192.168.1.1"); @@ -69,34 +70,39 @@ MATCH_FUNC_NOT_OK(check_ip5_not_match, "192.168.1.0/28", "192.168.1.64"); MATCH_FUNC_NOT_OK(check_ip6_not_match, "192.168.1.0/24", "10.0.0.0"); MATCH_FUNC_NOT_OK(check_ip7_not_match, "192.168.1.0/24", "192.169.1.0"); -# define CIDR_MATCH(fname, CIDR, EXPECTED) \ -static void fname(void **glob_state) \ -{ \ - gnutls_datum_t dcidr; \ - const char cidr[] = CIDR; \ - assert_int_equal(gnutls_x509_cidr_to_rfc5280(cidr, &dcidr), 0); \ - assert_memory_equal(EXPECTED, dcidr.data, dcidr.size); \ - gnutls_free(dcidr.data); \ -} +#define CIDR_MATCH(fname, CIDR, EXPECTED) \ + static void fname(void **glob_state) \ + { \ + gnutls_datum_t dcidr; \ + const char cidr[] = CIDR; \ + assert_int_equal(gnutls_x509_cidr_to_rfc5280(cidr, &dcidr), \ + 0); \ + assert_memory_equal(EXPECTED, dcidr.data, dcidr.size); \ + gnutls_free(dcidr.data); \ + } -# define CIDR_FAIL(fname, CIDR) \ -static void fname(void **glob_state) \ -{ \ - gnutls_datum_t dcidr; \ - const char cidr[] = CIDR; \ - assert_int_not_equal(gnutls_x509_cidr_to_rfc5280(cidr, &dcidr), 0); \ -} +#define CIDR_FAIL(fname, CIDR) \ + static void fname(void **glob_state) \ + { \ + gnutls_datum_t dcidr; \ + const char cidr[] = CIDR; \ + assert_int_not_equal( \ + gnutls_x509_cidr_to_rfc5280(cidr, &dcidr), 0); \ + } CIDR_MATCH(check_cidr_ok1, "0.0.0.0/32", "\x00\x00\x00\x00\xff\xff\xff\xff"); CIDR_MATCH(check_cidr_ok2, "192.168.1.1/12", "\xc0\xa0\x00\x00\xff\xf0\x00\x00"); CIDR_MATCH(check_cidr_ok3, "192.168.1.1/0", "\x00\x00\x00\x00\x00\x00\x00\x00"); -CIDR_MATCH(check_cidr_ok4, "::/19", - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); -CIDR_MATCH(check_cidr_ok5, "::1/128", - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"); -CIDR_MATCH(check_cidr_ok6, "2001:db8::/48", - "\x20\x01\x0d\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); +CIDR_MATCH( + check_cidr_ok4, "::/19", + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); +CIDR_MATCH( + check_cidr_ok5, "::1/128", + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"); +CIDR_MATCH( + check_cidr_ok6, "2001:db8::/48", + "\x20\x01\x0d\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"); CIDR_FAIL(check_cidr_fail1, "0.0.0.0/100"); CIDR_FAIL(check_cidr_fail2, "1.2.3.4/-1"); diff --git a/tests/kdf-api.c b/tests/kdf-api.c index c496cf2993..d476482fa5 100644 --- a/tests/kdf-api.c +++ b/tests/kdf-api.c @@ -35,12 +35,9 @@ static gnutls_fips140_context_t fips_context; -static void -test_hkdf(gnutls_mac_algorithm_t mac, - const char *ikm_hex, - const char *salt_hex, - const char *info_hex, - size_t length, const char *prk_hex, const char *okm_hex) +static void test_hkdf(gnutls_mac_algorithm_t mac, const char *ikm_hex, + const char *salt_hex, const char *info_hex, size_t length, + const char *prk_hex, const char *okm_hex) { gnutls_datum_t hex; gnutls_datum_t ikm; @@ -73,8 +70,8 @@ test_hkdf(gnutls_mac_algorithm_t mac, assert(gnutls_hex_encode2(&prk, &hex) >= 0); if (strcmp((char *)hex.data, prk_hex)) - fail("prk doesn't match: %s != %s\n", - (char *)hex.data, prk_hex); + fail("prk doesn't match: %s != %s\n", (char *)hex.data, + prk_hex); gnutls_free(hex.data); @@ -101,8 +98,8 @@ test_hkdf(gnutls_mac_algorithm_t mac, assert(gnutls_hex_encode2(&okm, &hex) >= 0); if (strcmp((char *)hex.data, okm_hex)) - fail("okm doesn't match: %s != %s\n", - (char *)hex.data, okm_hex); + fail("okm doesn't match: %s != %s\n", (char *)hex.data, + okm_hex); gnutls_free(hex.data); } @@ -126,14 +123,10 @@ is_mac_algo_hmac_approved_in_fips(gnutls_mac_algorithm_t algo) } } -static void -test_pbkdf2(gnutls_mac_algorithm_t mac, - const char *ikm_hex, - const char *salt_hex, - unsigned iter_count, - size_t length, - const char *okm_hex, - gnutls_fips140_operation_state_t expected_state) +static void test_pbkdf2(gnutls_mac_algorithm_t mac, const char *ikm_hex, + const char *salt_hex, unsigned iter_count, + size_t length, const char *okm_hex, + gnutls_fips140_operation_state_t expected_state) { gnutls_datum_t hex; gnutls_datum_t ikm; @@ -162,8 +155,8 @@ test_pbkdf2(gnutls_mac_algorithm_t mac, assert(gnutls_hex_encode2(&okm, &hex) >= 0); if (strcmp((char *)hex.data, okm_hex)) - fail("okm doesn't match: %s != %s\n", - (char *)hex.data, okm_hex); + fail("okm doesn't match: %s != %s\n", (char *)hex.data, + okm_hex); gnutls_free(hex.data); } @@ -177,24 +170,25 @@ void doit(void) test_hkdf(GNUTLS_MAC_SHA256, "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b" "0b0b0b0b0b0b", - "000102030405060708090a0b0c", - "f0f1f2f3f4f5f6f7f8f9", - 42, + "000102030405060708090a0b0c", "f0f1f2f3f4f5f6f7f8f9", 42, "077709362c2e32df0ddc3f0dc47bba63" "90b6c73bb50f9c3122ec844ad7c2b3e5", "3cb25f25faacd57a90434f64d0362f2a" - "2d2d0a90cf1a5a4c5db02d56ecc4c5bf" "34007208d5b887185865"); + "2d2d0a90cf1a5a4c5db02d56ecc4c5bf" + "34007208d5b887185865"); /* Test vector from RFC 6070. More thorough testing is done * in nettle. */ - test_pbkdf2(GNUTLS_MAC_SHA1, "70617373776f7264", /* "password" */ - "73616c74", /* "salt" */ - 4096, 20, "4b007901b765489abead49d926f721d065a429c1", - /* Key sizes and output sizes less than 112-bit are not approved. */ - GNUTLS_FIPS140_OP_NOT_APPROVED); - - test_pbkdf2(GNUTLS_MAC_AES_CMAC_128, "70617373776f726470617373776f7264", /* "passwordpassword" */ - "73616c74", /* "salt" */ + test_pbkdf2( + GNUTLS_MAC_SHA1, "70617373776f7264", /* "password" */ + "73616c74", /* "salt" */ + 4096, 20, "4b007901b765489abead49d926f721d065a429c1", + /* Key sizes and output sizes less than 112-bit are not approved. */ + GNUTLS_FIPS140_OP_NOT_APPROVED); + + test_pbkdf2(GNUTLS_MAC_AES_CMAC_128, + "70617373776f726470617373776f7264", /* "passwordpassword" */ + "73616c74", /* "salt" */ 4096, 20, "c4c112c6e1e3b8757640603dec78825ff87605a7", /* Use of AES-CMAC in PBKDF2 is not supported in ACVP. */ GNUTLS_FIPS140_OP_NOT_APPROVED); diff --git a/tests/key-export-pkcs8.c b/tests/key-export-pkcs8.c index f4e07af687..cf0a985291 100644 --- a/tests/key-export-pkcs8.c +++ b/tests/key-export-pkcs8.c @@ -18,7 +18,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -32,52 +32,52 @@ #include unsigned char dsa_p[] = - "\x00\xb9\x84\xf5\x5a\x81\xbe\x1a\x0d\xc5\x8a\x73\x8f\x0c\x9b\x2f\x9b\xb6\x0e\x4b\xc3\x74\x1a\x7f\x64\xad\x9d\xf3\x28\xc5\xa0\x47\xbc\x9b\x57\x56\xf1\x97\xd5\x7e\x37\x03\xe9\xf2\x4c\xf4\xe3\x8b\x7f\x30\xa3\x5d\x2f\xbb\xa1\xa2\x37\xc2\xea\x35\x8f\x1f\xb1\x5f\xa6\xa2\x5f\x01\xf1\x23\x36\x2b\xe4\x4f\x2f\x2d\xdd\x9d\xd5\x3a\xa6\x39\xaf\x7a\x51\x7c\xd2\x25\x8e\x97\x74\xcf\x1e\xc5\x7b\x4b\x76\x43\x81\x07\x1f\x06\x14\xb8\x6e\x58\x12\xe1\x90\xe2\x37\x6f\xd2\x1b\xec\x68\xc5\x58\xe2\xe6\x30\xe0\x6a\x5e\x2c\x63\x78\xec\x07"; + "\x00\xb9\x84\xf5\x5a\x81\xbe\x1a\x0d\xc5\x8a\x73\x8f\x0c\x9b\x2f\x9b\xb6\x0e\x4b\xc3\x74\x1a\x7f\x64\xad\x9d\xf3\x28\xc5\xa0\x47\xbc\x9b\x57\x56\xf1\x97\xd5\x7e\x37\x03\xe9\xf2\x4c\xf4\xe3\x8b\x7f\x30\xa3\x5d\x2f\xbb\xa1\xa2\x37\xc2\xea\x35\x8f\x1f\xb1\x5f\xa6\xa2\x5f\x01\xf1\x23\x36\x2b\xe4\x4f\x2f\x2d\xdd\x9d\xd5\x3a\xa6\x39\xaf\x7a\x51\x7c\xd2\x25\x8e\x97\x74\xcf\x1e\xc5\x7b\x4b\x76\x43\x81\x07\x1f\x06\x14\xb8\x6e\x58\x12\xe1\x90\xe2\x37\x6f\xd2\x1b\xec\x68\xc5\x58\xe2\xe6\x30\xe0\x6a\x5e\x2c\x63\x78\xec\x07"; unsigned char dsa_q[] = - "\x00\x9f\x56\x8c\x48\x64\x2f\xfe\x8d\xaa\x7a\x6d\x96\xdb\x04\x5d\x16\xef\x08\xa5\x71"; + "\x00\x9f\x56\x8c\x48\x64\x2f\xfe\x8d\xaa\x7a\x6d\x96\xdb\x04\x5d\x16\xef\x08\xa5\x71"; unsigned char dsa_g[] = - "\x62\x06\x7e\xe4\x5c\x76\x08\xb7\x46\x1a\x5d\xd7\x97\xd4\x2a\x21\xfb\x1f\x31\xc9\xd2\xf4\xfa\x39\xd8\x27\xd1\x9b\xfc\x27\x5d\xa7\x0a\xa7\x1a\xfc\x53\xc1\x2f\x43\xc2\x37\xc8\x85\x7f\x3d\x4c\xab\x5d\x81\x32\xfb\x1d\x5e\x1e\x54\x11\x16\x20\xc6\x80\x5a\xd9\x8c\x9b\x43\xf0\xdd\x6b\xa0\xf4\xc3\xf2\x8a\x9c\x39\xd2\x1c\x7b\x0f\xef\xfa\x28\x93\x8f\xd2\xa1\x22\xeb\xdc\xe0\x8a\x8b\xad\x28\x0e\xcf\xef\x09\x85\xe9\x36\xbd\x8b\x7a\x50\xd5\x7b\xf7\x25\x0d\x6c\x60\x11\xc4\xef\x70\x90\xcf\xd6\x1b\xeb\xbb\x8e\xc6\x3e\x3a\x97"; + "\x62\x06\x7e\xe4\x5c\x76\x08\xb7\x46\x1a\x5d\xd7\x97\xd4\x2a\x21\xfb\x1f\x31\xc9\xd2\xf4\xfa\x39\xd8\x27\xd1\x9b\xfc\x27\x5d\xa7\x0a\xa7\x1a\xfc\x53\xc1\x2f\x43\xc2\x37\xc8\x85\x7f\x3d\x4c\xab\x5d\x81\x32\xfb\x1d\x5e\x1e\x54\x11\x16\x20\xc6\x80\x5a\xd9\x8c\x9b\x43\xf0\xdd\x6b\xa0\xf4\xc3\xf2\x8a\x9c\x39\xd2\x1c\x7b\x0f\xef\xfa\x28\x93\x8f\xd2\xa1\x22\xeb\xdc\xe0\x8a\x8b\xad\x28\x0e\xcf\xef\x09\x85\xe9\x36\xbd\x8b\x7a\x50\xd5\x7b\xf7\x25\x0d\x6c\x60\x11\xc4\xef\x70\x90\xcf\xd6\x1b\xeb\xbb\x8e\xc6\x3e\x3a\x97"; unsigned char dsa_y[] = - "\x0f\x8a\x87\x57\xf2\xd1\xc2\xdc\xac\xdf\x4b\x8b\x0f\x8b\xba\x29\xf7\xe1\x03\xe4\x55\xfa\xb2\x98\x07\xd6\xfd\x12\xb1\x80\xbc\xf5\xba\xb4\x50\xd4\x7f\xa0\x0e\x43\xe7\x9f\xc9\x78\x11\x5f\xe5\xe4\x0c\x2c\x6b\x6a\xa4\x35\xdc\xbd\x54\xe5\x60\x36\x9a\x31\xd1\x8a\x59\x6e\x6b\x1c\xba\xbd\x2e\xba\xeb\x7c\x87\xef\xda\xc8\xdd\xa1\xeb\xa4\x83\xe6\x8b\xad\xfa\xfa\x8e\x5b\xd7\x37\xc8\x32\x3e\x96\xc2\x3e\xf4\x43\xda\x7d\x91\x02\x0f\xb7\xbc\xf8\xef\x8f\xf7\x41\x00\x5e\x96\xdf\x0f\x08\x96\xdc\xea\xb2\xe9\x06\x82\xaf\xd2\x2f"; + "\x0f\x8a\x87\x57\xf2\xd1\xc2\xdc\xac\xdf\x4b\x8b\x0f\x8b\xba\x29\xf7\xe1\x03\xe4\x55\xfa\xb2\x98\x07\xd6\xfd\x12\xb1\x80\xbc\xf5\xba\xb4\x50\xd4\x7f\xa0\x0e\x43\xe7\x9f\xc9\x78\x11\x5f\xe5\xe4\x0c\x2c\x6b\x6a\xa4\x35\xdc\xbd\x54\xe5\x60\x36\x9a\x31\xd1\x8a\x59\x6e\x6b\x1c\xba\xbd\x2e\xba\xeb\x7c\x87\xef\xda\xc8\xdd\xa1\xeb\xa4\x83\xe6\x8b\xad\xfa\xfa\x8e\x5b\xd7\x37\xc8\x32\x3e\x96\xc2\x3e\xf4\x43\xda\x7d\x91\x02\x0f\xb7\xbc\xf8\xef\x8f\xf7\x41\x00\x5e\x96\xdf\x0f\x08\x96\xdc\xea\xb2\xe9\x06\x82\xaf\xd2\x2f"; unsigned char dsa_x[] = - "\x4b\x9f\xeb\xff\x6c\x9a\x02\x83\x41\x5e\x37\x81\x8e\x00\x86\x31\xe8\xb6\x9b\xc1"; + "\x4b\x9f\xeb\xff\x6c\x9a\x02\x83\x41\x5e\x37\x81\x8e\x00\x86\x31\xe8\xb6\x9b\xc1"; unsigned char rsa_m[] = - "\x00\xbb\x66\x43\xf5\xf2\xc5\xd7\xb6\x8c\xcc\xc5\xdf\xf5\x88\x3b\xb1\xc9\x4b\x6a\x0e\xa1\xad\x20\x50\x40\x08\x80\xa1\x4f\x5c\xa3\xd0\xf8\x6c\xcf\xe6\x3c\xf7\xec\x04\x76\x13\x17\x8b\x64\x89\x22\x5b\xc0\xdd\x53\x7c\x3b\xed\x7c\x04\xbb\x80\xb9\x28\xbe\x8e\x9b\xc6\x8e\xa0\xa5\x12\xcb\xf5\x57\x1e\xa2\xe7\xbb\xb7\x33\x49\x9f\xe3\xbb\x4a\xae\x6a\x4d\x68\xff\xc9\x11\xe2\x32\x8d\xce\x3d\x80\x0b\x8d\x75\xef\xd8\x00\x81\x8f\x28\x04\x03\xa0\x22\x8d\x61\x04\x07\xfa\xb6\x37\x7d\x21\x07\x49\xd2\x09\x61\x69\x98\x90\xa3\x58\xa9"; + "\x00\xbb\x66\x43\xf5\xf2\xc5\xd7\xb6\x8c\xcc\xc5\xdf\xf5\x88\x3b\xb1\xc9\x4b\x6a\x0e\xa1\xad\x20\x50\x40\x08\x80\xa1\x4f\x5c\xa3\xd0\xf8\x6c\xcf\xe6\x3c\xf7\xec\x04\x76\x13\x17\x8b\x64\x89\x22\x5b\xc0\xdd\x53\x7c\x3b\xed\x7c\x04\xbb\x80\xb9\x28\xbe\x8e\x9b\xc6\x8e\xa0\xa5\x12\xcb\xf5\x57\x1e\xa2\xe7\xbb\xb7\x33\x49\x9f\xe3\xbb\x4a\xae\x6a\x4d\x68\xff\xc9\x11\xe2\x32\x8d\xce\x3d\x80\x0b\x8d\x75\xef\xd8\x00\x81\x8f\x28\x04\x03\xa0\x22\x8d\x61\x04\x07\xfa\xb6\x37\x7d\x21\x07\x49\xd2\x09\x61\x69\x98\x90\xa3\x58\xa9"; unsigned char rsa_e[] = "\x01\x00\x01"; unsigned char rsa_d[] = - "\x0e\x99\x80\x44\x6e\x42\x43\x14\xbe\x01\xeb\x0d\x90\x69\xa9\x6a\xe7\xa9\x88\x2c\xf5\x24\x11\x7f\x27\x09\xf2\x89\x7e\xaf\x13\x35\x21\xd1\x8a\x5d\xdf\xd4\x99\xce\xdc\x2b\x0f\x1b\xc5\x3c\x98\xd0\x68\xa5\x65\x8e\x69\x75\xce\x42\x69\x20\x35\x6c\xaa\xf1\xdd\xc9\x57\x6c\x7b\xc3\x3e\x42\x7e\xa1\xc3\x8c\x76\xa7\x9a\xe8\x81\xdb\xe1\x84\x82\xf5\x99\xd5\xa8\xee\x35\x9e\x54\x94\xc5\x44\xa0\x7b\xcc\xb7\x4c\x3e\xcd\xf2\x49\xdb\x5c\x21\x06\x85\xf6\x75\x00\x43\x62\x89\x12\xf9\x5d\x90\xed\xe6\xfd\xb4\x49\x14\x4a\x79\xe2\x4d"; + "\x0e\x99\x80\x44\x6e\x42\x43\x14\xbe\x01\xeb\x0d\x90\x69\xa9\x6a\xe7\xa9\x88\x2c\xf5\x24\x11\x7f\x27\x09\xf2\x89\x7e\xaf\x13\x35\x21\xd1\x8a\x5d\xdf\xd4\x99\xce\xdc\x2b\x0f\x1b\xc5\x3c\x98\xd0\x68\xa5\x65\x8e\x69\x75\xce\x42\x69\x20\x35\x6c\xaa\xf1\xdd\xc9\x57\x6c\x7b\xc3\x3e\x42\x7e\xa1\xc3\x8c\x76\xa7\x9a\xe8\x81\xdb\xe1\x84\x82\xf5\x99\xd5\xa8\xee\x35\x9e\x54\x94\xc5\x44\xa0\x7b\xcc\xb7\x4c\x3e\xcd\xf2\x49\xdb\x5c\x21\x06\x85\xf6\x75\x00\x43\x62\x89\x12\xf9\x5d\x90\xed\xe6\xfd\xb4\x49\x14\x4a\x79\xe2\x4d"; unsigned char rsa_p[] = - "\x00\xd8\xcb\xe4\x65\x4e\x6c\x11\x0f\xa8\x72\xed\x4b\x4c\x8d\x1d\x07\xdc\x24\x99\x25\xe4\x3c\xb2\xf3\x02\xc4\x72\xe6\x3a\x5b\x86\xf4\x7d\x54\x2a\x4e\x79\x64\x16\x1f\x45\x3b\x17\x9e\x2a\x94\x90\x90\x59\xe7\x0b\x95\xd4\xbf\xa9\x47\xd1\x0a\x71\xaf\x3d\x6b\xed\x55"; + "\x00\xd8\xcb\xe4\x65\x4e\x6c\x11\x0f\xa8\x72\xed\x4b\x4c\x8d\x1d\x07\xdc\x24\x99\x25\xe4\x3c\xb2\xf3\x02\xc4\x72\xe6\x3a\x5b\x86\xf4\x7d\x54\x2a\x4e\x79\x64\x16\x1f\x45\x3b\x17\x9e\x2a\x94\x90\x90\x59\xe7\x0b\x95\xd4\xbf\xa9\x47\xd1\x0a\x71\xaf\x3d\x6b\xed\x55"; unsigned char rsa_q[] = - "\x00\xdd\x49\x81\x7a\x5c\x04\xbf\x6b\xbd\x70\x05\x35\x42\x32\xa3\x9b\x08\xee\xd4\x98\x17\x6e\xb8\xc4\xa2\x12\xbe\xdc\x1e\x72\xd0\x44\x84\x5c\xf0\x30\x35\x04\xfd\x4e\xb0\xcc\xd6\x6f\x40\xcb\x16\x13\x58\xbc\x57\xf7\x77\x48\xe5\x0c\x0d\x14\x9b\x66\x6e\xd8\xde\x05"; + "\x00\xdd\x49\x81\x7a\x5c\x04\xbf\x6b\xbd\x70\x05\x35\x42\x32\xa3\x9b\x08\xee\xd4\x98\x17\x6e\xb8\xc4\xa2\x12\xbe\xdc\x1e\x72\xd0\x44\x84\x5c\xf0\x30\x35\x04\xfd\x4e\xb0\xcc\xd6\x6f\x40\xcb\x16\x13\x58\xbc\x57\xf7\x77\x48\xe5\x0c\x0d\x14\x9b\x66\x6e\xd8\xde\x05"; unsigned char rsa_u[] = - "\x4a\x74\x5c\x95\x83\x54\xa3\xb0\x71\x35\xba\x02\x3a\x7d\x4a\x8c\x2d\x9a\x26\x77\x60\x36\x28\xd4\xb1\x7d\x8a\x06\xf8\x89\xa2\xef\xb1\x66\x46\x7d\xb9\xd4\xde\xbc\xa3\xbe\x46\xfa\x62\xe1\x63\x82\xdc\xdb\x64\x36\x47\x59\x00\xa8\xf3\xf7\x0e\xb4\xe0\x66\x3d\xd9"; + "\x4a\x74\x5c\x95\x83\x54\xa3\xb0\x71\x35\xba\x02\x3a\x7d\x4a\x8c\x2d\x9a\x26\x77\x60\x36\x28\xd4\xb1\x7d\x8a\x06\xf8\x89\xa2\xef\xb1\x66\x46\x7d\xb9\xd4\xde\xbc\xa3\xbe\x46\xfa\x62\xe1\x63\x82\xdc\xdb\x64\x36\x47\x59\x00\xa8\xf3\xf7\x0e\xb4\xe0\x66\x3d\xd9"; unsigned char rsa_e1[] = - "\x45\x20\x96\x5e\x1b\x28\x68\x34\x46\xf1\x06\x6b\x09\x28\xc1\xc5\xfc\xd3\x0a\xa6\x43\x65\x7b\x65\xf3\x4e\xf2\x98\x28\xa9\x80\x99\xba\xd0\xb8\x80\xb7\x42\x4b\xaf\x82\xe2\xb9\xc0\x2c\x31\x9c\xfa\xfa\x3f\xaa\xb9\x06\xd2\x6a\x46\xc5\x08\x00\x81\xf1\x22\xd5\xd5"; + "\x45\x20\x96\x5e\x1b\x28\x68\x34\x46\xf1\x06\x6b\x09\x28\xc1\xc5\xfc\xd3\x0a\xa6\x43\x65\x7b\x65\xf3\x4e\xf2\x98\x28\xa9\x80\x99\xba\xd0\xb8\x80\xb7\x42\x4b\xaf\x82\xe2\xb9\xc0\x2c\x31\x9c\xfa\xfa\x3f\xaa\xb9\x06\xd2\x6a\x46\xc5\x08\x00\x81\xf1\x22\xd5\xd5"; unsigned char rsa_e2[] = - "\x00\xa6\x50\x60\xa7\xfe\x10\xf3\x6d\x9e\x6b\x5a\xfe\xb4\x4a\x2a\xfc\x92\xb2\x2d\xc6\x41\x96\x4d\xf8\x3b\x77\xab\x4a\xf4\xf7\x85\xe0\x79\x3b\x00\xaa\xba\xae\x8d\x53\x5f\x3e\x14\xcc\x78\xfe\x2a\x11\x50\x57\xfe\x25\x57\xd9\xc9\x8c\x4d\x28\x77\xc3\x7c\xfc\x31\xa1"; + "\x00\xa6\x50\x60\xa7\xfe\x10\xf3\x6d\x9e\x6b\x5a\xfe\xb4\x4a\x2a\xfc\x92\xb2\x2d\xc6\x41\x96\x4d\xf8\x3b\x77\xab\x4a\xf4\xf7\x85\xe0\x79\x3b\x00\xaa\xba\xae\x8d\x53\x5f\x3e\x14\xcc\x78\xfe\x2a\x11\x50\x57\xfe\x25\x57\xd9\xc9\x8c\x4d\x28\x77\xc3\x7c\xfc\x31\xa1"; unsigned char ecc_x[] = - "\x3c\x15\x6f\x1d\x48\x3e\x64\x59\x13\x2c\x6d\x04\x1a\x38\x0d\x30\x5c\xe4\x3f\x55\xcb\xd9\x17\x15\x46\x72\x71\x92\xc1\xf8\xc6\x33"; + "\x3c\x15\x6f\x1d\x48\x3e\x64\x59\x13\x2c\x6d\x04\x1a\x38\x0d\x30\x5c\xe4\x3f\x55\xcb\xd9\x17\x15\x46\x72\x71\x92\xc1\xf8\xc6\x33"; unsigned char ecc_y[] = - "\x3d\x04\x2e\xc8\xc1\x0f\xc0\x50\x04\x7b\x9f\xc9\x48\xb5\x40\xfa\x6f\x93\x82\x59\x61\x5e\x72\x57\xcb\x83\x06\xbd\xcc\x82\x94\xc1"; + "\x3d\x04\x2e\xc8\xc1\x0f\xc0\x50\x04\x7b\x9f\xc9\x48\xb5\x40\xfa\x6f\x93\x82\x59\x61\x5e\x72\x57\xcb\x83\x06\xbd\xcc\x82\x94\xc1"; unsigned char ecc_k[] = - "\x00\xfd\x2b\x00\x80\xf3\x36\x5f\x11\x32\x65\xe3\x8d\x30\x33\x3b\x47\xf5\xce\xf8\x13\xe5\x4c\xc2\xcf\xfd\xe8\x05\x6a\xca\xc9\x41\xb1"; + "\x00\xfd\x2b\x00\x80\xf3\x36\x5f\x11\x32\x65\xe3\x8d\x30\x33\x3b\x47\xf5\xce\xf8\x13\xe5\x4c\xc2\xcf\xfd\xe8\x05\x6a\xca\xc9\x41\xb1"; unsigned char false_ed25519_x[] = - "\xac\xac\x9a\xb3\xc3\x41\x8d\x41\x22\x21\xc1\x84\xa7\xb8\x70\xfb\x44\x6e\xc7\x7e\x20\x87\x7b\xd9\x22\xa4\x5d\xd2\x97\x09\xd5\x48"; + "\xac\xac\x9a\xb3\xc3\x41\x8d\x41\x22\x21\xc1\x84\xa7\xb8\x70\xfb\x44\x6e\xc7\x7e\x20\x87\x7b\xd9\x22\xa4\x5d\xd2\x97\x09\xd5\x48"; unsigned char ed25519_x[] = - "\xab\xaf\x98\xb3\xc3\x41\x8d\x41\x22\x21\xc1\x86\xa7\xb8\x70\xfb\x44\x6e\xc7\x7e\x20\x87\x7b\xd9\x22\xa4\x5d\xd2\x97\x09\xd5\x48"; + "\xab\xaf\x98\xb3\xc3\x41\x8d\x41\x22\x21\xc1\x86\xa7\xb8\x70\xfb\x44\x6e\xc7\x7e\x20\x87\x7b\xd9\x22\xa4\x5d\xd2\x97\x09\xd5\x48"; unsigned char ed25519_k[] = - "\x1c\xa9\x23\xdc\x35\xa8\xfd\xd6\x2d\xa8\x98\xb9\x60\x7b\xce\x10\x3d\xf4\x64\xc6\xe5\x4b\x0a\x65\x56\x6a\x3c\x73\x65\x51\xa2\x2f"; + "\x1c\xa9\x23\xdc\x35\xa8\xfd\xd6\x2d\xa8\x98\xb9\x60\x7b\xce\x10\x3d\xf4\x64\xc6\xe5\x4b\x0a\x65\x56\x6a\x3c\x73\x65\x51\xa2\x2f"; unsigned char gost_x[] = - "\xd0\xbb\xe9\xf4\xc6\xa8\x60\x3c\x73\x91\x44\x55\xcf\xbd\x50\xdd\x2c\x3d\x5a\xbc\x1a\xd8\x5e\x3c\xdf\x10\xdd\xd2\x63\x88\x0f\xc0"; + "\xd0\xbb\xe9\xf4\xc6\xa8\x60\x3c\x73\x91\x44\x55\xcf\xbd\x50\xdd\x2c\x3d\x5a\xbc\x1a\xd8\x5e\x3c\xdf\x10\xdd\xd2\x63\x88\x0f\xc0"; unsigned char gost_y[] = - "\x8a\xec\x96\x3c\x0b\xc8\x33\xff\x57\x5f\x66\x78\x94\x39\xb4\xf5\x24\xc6\xba\x86\x41\xac\x43\x21\x6f\x3c\xb0\xfa\x56\xbd\x5b\x37"; + "\x8a\xec\x96\x3c\x0b\xc8\x33\xff\x57\x5f\x66\x78\x94\x39\xb4\xf5\x24\xc6\xba\x86\x41\xac\x43\x21\x6f\x3c\xb0\xfa\x56\xbd\x5b\x37"; unsigned char gost_k[] = - "\x47\x59\x41\x2c\x8a\xf8\x58\x1a\x67\xe0\xc3\x82\x1f\xca\x31\x19\x66\xf9\xd8\x43\xcd\x2f\x78\x23\x34\x98\x90\xb8\x14\x2e\x7f\xa5"; + "\x47\x59\x41\x2c\x8a\xf8\x58\x1a\x67\xe0\xc3\x82\x1f\xca\x31\x19\x66\xf9\xd8\x43\xcd\x2f\x78\x23\x34\x98\x90\xb8\x14\x2e\x7f\xa5"; gnutls_datum_t _dsa_p = { dsa_p, sizeof(dsa_p) - 1 }; gnutls_datum_t _dsa_q = { dsa_q, sizeof(dsa_q) - 1 }; @@ -98,8 +98,8 @@ gnutls_datum_t _ecc_x = { ecc_x, sizeof(ecc_x) - 1 }; gnutls_datum_t _ecc_y = { ecc_y, sizeof(ecc_y) - 1 }; gnutls_datum_t _ecc_k = { ecc_k, sizeof(ecc_k) - 1 }; -gnutls_datum_t _false_ed25519_x = - { false_ed25519_x, sizeof(false_ed25519_x) - 1 }; +gnutls_datum_t _false_ed25519_x = { false_ed25519_x, + sizeof(false_ed25519_x) - 1 }; gnutls_datum_t _ed25519_x = { ed25519_x, sizeof(ed25519_x) - 1 }; gnutls_datum_t _ed25519_k = { ed25519_k, sizeof(ed25519_k) - 1 }; @@ -107,8 +107,7 @@ gnutls_datum_t _gost_x = { gost_x, sizeof(gost_x) - 1 }; gnutls_datum_t _gost_y = { gost_y, sizeof(gost_y) - 1 }; gnutls_datum_t _gost_k = { gost_k, sizeof(gost_k) - 1 }; -static -int check_dsa(void) +static int check_dsa(void) { gnutls_x509_privkey_t key; gnutls_datum_t out; @@ -120,15 +119,13 @@ int check_dsa(void) if (ret < 0) fail("error\n"); - ret = - gnutls_x509_privkey_import_dsa_raw(key, &_dsa_p, &_dsa_q, &_dsa_g, - &_dsa_y, &_dsa_x); + ret = gnutls_x509_privkey_import_dsa_raw(key, &_dsa_p, &_dsa_q, &_dsa_g, + &_dsa_y, &_dsa_x); if (ret < 0) fail("error\n"); - ret = - gnutls_x509_privkey_export2_pkcs8(key, GNUTLS_X509_FMT_DER, NULL, 0, - &out); + ret = gnutls_x509_privkey_export2_pkcs8(key, GNUTLS_X509_FMT_DER, NULL, + 0, &out); if (ret < 0 || out.size == 0) fail("error in pkcs8 export\n"); gnutls_free(out.data); @@ -138,8 +135,7 @@ int check_dsa(void) return 0; } -static -int check_rsa(void) +static int check_rsa(void) { gnutls_x509_privkey_t key; gnutls_datum_t out; @@ -152,16 +148,14 @@ int check_rsa(void) if (ret < 0) fail("error\n"); - ret = - gnutls_x509_privkey_import_rsa_raw2(key, &_rsa_m, &_rsa_e, &_rsa_d, - &_rsa_p, &_rsa_q, &_rsa_u, - &_rsa_e1, &_rsa_e2); + ret = gnutls_x509_privkey_import_rsa_raw2(key, &_rsa_m, &_rsa_e, + &_rsa_d, &_rsa_p, &_rsa_q, + &_rsa_u, &_rsa_e1, &_rsa_e2); if (ret < 0) fail("error\n"); - ret = - gnutls_x509_privkey_export2_pkcs8(key, GNUTLS_X509_FMT_DER, NULL, 0, - &out); + ret = gnutls_x509_privkey_export2_pkcs8(key, GNUTLS_X509_FMT_DER, NULL, + 0, &out); if (ret < 0 || out.size == 0) fail("error in pkcs8 export\n"); gnutls_free(out.data); @@ -171,8 +165,7 @@ int check_rsa(void) return 0; } -static -int check_ed25519(void) +static int check_ed25519(void) { gnutls_x509_privkey_t key; gnutls_datum_t out; @@ -185,15 +178,13 @@ int check_ed25519(void) if (ret < 0) fail("error\n"); - ret = - gnutls_x509_privkey_import_ecc_raw(key, GNUTLS_ECC_CURVE_ED25519, - &_ed25519_x, NULL, &_ed25519_k); + ret = gnutls_x509_privkey_import_ecc_raw( + key, GNUTLS_ECC_CURVE_ED25519, &_ed25519_x, NULL, &_ed25519_k); if (ret < 0) fail("error\n"); - ret = - gnutls_x509_privkey_export2_pkcs8(key, GNUTLS_X509_FMT_DER, NULL, 0, - &out); + ret = gnutls_x509_privkey_export2_pkcs8(key, GNUTLS_X509_FMT_DER, NULL, + 0, &out); if (ret < 0 || out.size == 0) fail("error in pkcs8 export\n"); gnutls_free(out.data); @@ -203,8 +194,7 @@ int check_ed25519(void) return 0; } -static -int check_gost(void) +static int check_gost(void) { #ifdef ENABLE_GOST gnutls_x509_privkey_t key; @@ -218,18 +208,14 @@ int check_gost(void) if (ret < 0) fail("error\n"); - ret = - gnutls_x509_privkey_import_gost_raw(key, - GNUTLS_ECC_CURVE_GOST256CPXA, - GNUTLS_DIG_GOSTR_94, - GNUTLS_GOST_PARAMSET_CP_A, - &_gost_x, &_gost_y, &_gost_k); + ret = gnutls_x509_privkey_import_gost_raw( + key, GNUTLS_ECC_CURVE_GOST256CPXA, GNUTLS_DIG_GOSTR_94, + GNUTLS_GOST_PARAMSET_CP_A, &_gost_x, &_gost_y, &_gost_k); if (ret < 0) fail("error\n"); - ret = - gnutls_x509_privkey_export2_pkcs8(key, GNUTLS_X509_FMT_DER, NULL, 0, - &out); + ret = gnutls_x509_privkey_export2_pkcs8(key, GNUTLS_X509_FMT_DER, NULL, + 0, &out); if (ret < 0 || out.size == 0) fail("error in pkcs8 export\n"); gnutls_free(out.data); @@ -240,8 +226,7 @@ int check_gost(void) return 0; } -static -int check_ecc(void) +static int check_ecc(void) { gnutls_x509_privkey_t key; gnutls_datum_t out; @@ -254,15 +239,13 @@ int check_ecc(void) if (ret < 0) fail("error\n"); - ret = - gnutls_x509_privkey_import_ecc_raw(key, GNUTLS_ECC_CURVE_SECP256R1, - &_ecc_x, &_ecc_y, &_ecc_k); + ret = gnutls_x509_privkey_import_ecc_raw( + key, GNUTLS_ECC_CURVE_SECP256R1, &_ecc_x, &_ecc_y, &_ecc_k); if (ret < 0) fail("error\n"); - ret = - gnutls_x509_privkey_export2_pkcs8(key, GNUTLS_X509_FMT_PEM, NULL, 0, - &out); + ret = gnutls_x509_privkey_export2_pkcs8(key, GNUTLS_X509_FMT_PEM, NULL, + 0, &out); if (ret < 0 || out.size == 0) fail("error in pkcs8 export\n"); diff --git a/tests/key-import-export.c b/tests/key-import-export.c index fcc0c4f54f..cec48e92e8 100644 --- a/tests/key-import-export.c +++ b/tests/key-import-export.c @@ -18,7 +18,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,25 +35,23 @@ #include "cert-common.h" static char rsa_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" - "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" - "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" - "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" - "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" - "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" - "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" - "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" - "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" - "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" - "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" - "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" - "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t rsa_key = { (void *)rsa_key_pem, - sizeof(rsa_key_pem) -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" + "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" + "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" + "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" + "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" + "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" + "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" + "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" + "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" + "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" + "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" + "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" + "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t rsa_key = { (void *)rsa_key_pem, sizeof(rsa_key_pem) }; static void dump(const char *name, unsigned char *buf, int buf_size) { @@ -65,52 +63,52 @@ static void dump(const char *name, unsigned char *buf, int buf_size) } unsigned char dsa_p[] = - "\x00\xb9\x84\xf5\x5a\x81\xbe\x1a\x0d\xc5\x8a\x73\x8f\x0c\x9b\x2f\x9b\xb6\x0e\x4b\xc3\x74\x1a\x7f\x64\xad\x9d\xf3\x28\xc5\xa0\x47\xbc\x9b\x57\x56\xf1\x97\xd5\x7e\x37\x03\xe9\xf2\x4c\xf4\xe3\x8b\x7f\x30\xa3\x5d\x2f\xbb\xa1\xa2\x37\xc2\xea\x35\x8f\x1f\xb1\x5f\xa6\xa2\x5f\x01\xf1\x23\x36\x2b\xe4\x4f\x2f\x2d\xdd\x9d\xd5\x3a\xa6\x39\xaf\x7a\x51\x7c\xd2\x25\x8e\x97\x74\xcf\x1e\xc5\x7b\x4b\x76\x43\x81\x07\x1f\x06\x14\xb8\x6e\x58\x12\xe1\x90\xe2\x37\x6f\xd2\x1b\xec\x68\xc5\x58\xe2\xe6\x30\xe0\x6a\x5e\x2c\x63\x78\xec\x07"; + "\x00\xb9\x84\xf5\x5a\x81\xbe\x1a\x0d\xc5\x8a\x73\x8f\x0c\x9b\x2f\x9b\xb6\x0e\x4b\xc3\x74\x1a\x7f\x64\xad\x9d\xf3\x28\xc5\xa0\x47\xbc\x9b\x57\x56\xf1\x97\xd5\x7e\x37\x03\xe9\xf2\x4c\xf4\xe3\x8b\x7f\x30\xa3\x5d\x2f\xbb\xa1\xa2\x37\xc2\xea\x35\x8f\x1f\xb1\x5f\xa6\xa2\x5f\x01\xf1\x23\x36\x2b\xe4\x4f\x2f\x2d\xdd\x9d\xd5\x3a\xa6\x39\xaf\x7a\x51\x7c\xd2\x25\x8e\x97\x74\xcf\x1e\xc5\x7b\x4b\x76\x43\x81\x07\x1f\x06\x14\xb8\x6e\x58\x12\xe1\x90\xe2\x37\x6f\xd2\x1b\xec\x68\xc5\x58\xe2\xe6\x30\xe0\x6a\x5e\x2c\x63\x78\xec\x07"; unsigned char dsa_q[] = - "\x00\x9f\x56\x8c\x48\x64\x2f\xfe\x8d\xaa\x7a\x6d\x96\xdb\x04\x5d\x16\xef\x08\xa5\x71"; + "\x00\x9f\x56\x8c\x48\x64\x2f\xfe\x8d\xaa\x7a\x6d\x96\xdb\x04\x5d\x16\xef\x08\xa5\x71"; unsigned char dsa_g[] = - "\x62\x06\x7e\xe4\x5c\x76\x08\xb7\x46\x1a\x5d\xd7\x97\xd4\x2a\x21\xfb\x1f\x31\xc9\xd2\xf4\xfa\x39\xd8\x27\xd1\x9b\xfc\x27\x5d\xa7\x0a\xa7\x1a\xfc\x53\xc1\x2f\x43\xc2\x37\xc8\x85\x7f\x3d\x4c\xab\x5d\x81\x32\xfb\x1d\x5e\x1e\x54\x11\x16\x20\xc6\x80\x5a\xd9\x8c\x9b\x43\xf0\xdd\x6b\xa0\xf4\xc3\xf2\x8a\x9c\x39\xd2\x1c\x7b\x0f\xef\xfa\x28\x93\x8f\xd2\xa1\x22\xeb\xdc\xe0\x8a\x8b\xad\x28\x0e\xcf\xef\x09\x85\xe9\x36\xbd\x8b\x7a\x50\xd5\x7b\xf7\x25\x0d\x6c\x60\x11\xc4\xef\x70\x90\xcf\xd6\x1b\xeb\xbb\x8e\xc6\x3e\x3a\x97"; + "\x62\x06\x7e\xe4\x5c\x76\x08\xb7\x46\x1a\x5d\xd7\x97\xd4\x2a\x21\xfb\x1f\x31\xc9\xd2\xf4\xfa\x39\xd8\x27\xd1\x9b\xfc\x27\x5d\xa7\x0a\xa7\x1a\xfc\x53\xc1\x2f\x43\xc2\x37\xc8\x85\x7f\x3d\x4c\xab\x5d\x81\x32\xfb\x1d\x5e\x1e\x54\x11\x16\x20\xc6\x80\x5a\xd9\x8c\x9b\x43\xf0\xdd\x6b\xa0\xf4\xc3\xf2\x8a\x9c\x39\xd2\x1c\x7b\x0f\xef\xfa\x28\x93\x8f\xd2\xa1\x22\xeb\xdc\xe0\x8a\x8b\xad\x28\x0e\xcf\xef\x09\x85\xe9\x36\xbd\x8b\x7a\x50\xd5\x7b\xf7\x25\x0d\x6c\x60\x11\xc4\xef\x70\x90\xcf\xd6\x1b\xeb\xbb\x8e\xc6\x3e\x3a\x97"; unsigned char dsa_y[] = - "\x0f\x8a\x87\x57\xf2\xd1\xc2\xdc\xac\xdf\x4b\x8b\x0f\x8b\xba\x29\xf7\xe1\x03\xe4\x55\xfa\xb2\x98\x07\xd6\xfd\x12\xb1\x80\xbc\xf5\xba\xb4\x50\xd4\x7f\xa0\x0e\x43\xe7\x9f\xc9\x78\x11\x5f\xe5\xe4\x0c\x2c\x6b\x6a\xa4\x35\xdc\xbd\x54\xe5\x60\x36\x9a\x31\xd1\x8a\x59\x6e\x6b\x1c\xba\xbd\x2e\xba\xeb\x7c\x87\xef\xda\xc8\xdd\xa1\xeb\xa4\x83\xe6\x8b\xad\xfa\xfa\x8e\x5b\xd7\x37\xc8\x32\x3e\x96\xc2\x3e\xf4\x43\xda\x7d\x91\x02\x0f\xb7\xbc\xf8\xef\x8f\xf7\x41\x00\x5e\x96\xdf\x0f\x08\x96\xdc\xea\xb2\xe9\x06\x82\xaf\xd2\x2f"; + "\x0f\x8a\x87\x57\xf2\xd1\xc2\xdc\xac\xdf\x4b\x8b\x0f\x8b\xba\x29\xf7\xe1\x03\xe4\x55\xfa\xb2\x98\x07\xd6\xfd\x12\xb1\x80\xbc\xf5\xba\xb4\x50\xd4\x7f\xa0\x0e\x43\xe7\x9f\xc9\x78\x11\x5f\xe5\xe4\x0c\x2c\x6b\x6a\xa4\x35\xdc\xbd\x54\xe5\x60\x36\x9a\x31\xd1\x8a\x59\x6e\x6b\x1c\xba\xbd\x2e\xba\xeb\x7c\x87\xef\xda\xc8\xdd\xa1\xeb\xa4\x83\xe6\x8b\xad\xfa\xfa\x8e\x5b\xd7\x37\xc8\x32\x3e\x96\xc2\x3e\xf4\x43\xda\x7d\x91\x02\x0f\xb7\xbc\xf8\xef\x8f\xf7\x41\x00\x5e\x96\xdf\x0f\x08\x96\xdc\xea\xb2\xe9\x06\x82\xaf\xd2\x2f"; unsigned char dsa_x[] = - "\x4b\x9f\xeb\xff\x6c\x9a\x02\x83\x41\x5e\x37\x81\x8e\x00\x86\x31\xe8\xb6\x9b\xc1"; + "\x4b\x9f\xeb\xff\x6c\x9a\x02\x83\x41\x5e\x37\x81\x8e\x00\x86\x31\xe8\xb6\x9b\xc1"; unsigned char rsa_m[] = - "\x00\xbb\x66\x43\xf5\xf2\xc5\xd7\xb6\x8c\xcc\xc5\xdf\xf5\x88\x3b\xb1\xc9\x4b\x6a\x0e\xa1\xad\x20\x50\x40\x08\x80\xa1\x4f\x5c\xa3\xd0\xf8\x6c\xcf\xe6\x3c\xf7\xec\x04\x76\x13\x17\x8b\x64\x89\x22\x5b\xc0\xdd\x53\x7c\x3b\xed\x7c\x04\xbb\x80\xb9\x28\xbe\x8e\x9b\xc6\x8e\xa0\xa5\x12\xcb\xf5\x57\x1e\xa2\xe7\xbb\xb7\x33\x49\x9f\xe3\xbb\x4a\xae\x6a\x4d\x68\xff\xc9\x11\xe2\x32\x8d\xce\x3d\x80\x0b\x8d\x75\xef\xd8\x00\x81\x8f\x28\x04\x03\xa0\x22\x8d\x61\x04\x07\xfa\xb6\x37\x7d\x21\x07\x49\xd2\x09\x61\x69\x98\x90\xa3\x58\xa9"; + "\x00\xbb\x66\x43\xf5\xf2\xc5\xd7\xb6\x8c\xcc\xc5\xdf\xf5\x88\x3b\xb1\xc9\x4b\x6a\x0e\xa1\xad\x20\x50\x40\x08\x80\xa1\x4f\x5c\xa3\xd0\xf8\x6c\xcf\xe6\x3c\xf7\xec\x04\x76\x13\x17\x8b\x64\x89\x22\x5b\xc0\xdd\x53\x7c\x3b\xed\x7c\x04\xbb\x80\xb9\x28\xbe\x8e\x9b\xc6\x8e\xa0\xa5\x12\xcb\xf5\x57\x1e\xa2\xe7\xbb\xb7\x33\x49\x9f\xe3\xbb\x4a\xae\x6a\x4d\x68\xff\xc9\x11\xe2\x32\x8d\xce\x3d\x80\x0b\x8d\x75\xef\xd8\x00\x81\x8f\x28\x04\x03\xa0\x22\x8d\x61\x04\x07\xfa\xb6\x37\x7d\x21\x07\x49\xd2\x09\x61\x69\x98\x90\xa3\x58\xa9"; unsigned char rsa_e[] = "\x01\x00\x01"; unsigned char rsa_d[] = - "\x0e\x99\x80\x44\x6e\x42\x43\x14\xbe\x01\xeb\x0d\x90\x69\xa9\x6a\xe7\xa9\x88\x2c\xf5\x24\x11\x7f\x27\x09\xf2\x89\x7e\xaf\x13\x35\x21\xd1\x8a\x5d\xdf\xd4\x99\xce\xdc\x2b\x0f\x1b\xc5\x3c\x98\xd0\x68\xa5\x65\x8e\x69\x75\xce\x42\x69\x20\x35\x6c\xaa\xf1\xdd\xc9\x57\x6c\x7b\xc3\x3e\x42\x7e\xa1\xc3\x8c\x76\xa7\x9a\xe8\x81\xdb\xe1\x84\x82\xf5\x99\xd5\xa8\xee\x35\x9e\x54\x94\xc5\x44\xa0\x7b\xcc\xb7\x4c\x3e\xcd\xf2\x49\xdb\x5c\x21\x06\x85\xf6\x75\x00\x43\x62\x89\x12\xf9\x5d\x90\xed\xe6\xfd\xb4\x49\x14\x4a\x79\xe2\x4d"; + "\x0e\x99\x80\x44\x6e\x42\x43\x14\xbe\x01\xeb\x0d\x90\x69\xa9\x6a\xe7\xa9\x88\x2c\xf5\x24\x11\x7f\x27\x09\xf2\x89\x7e\xaf\x13\x35\x21\xd1\x8a\x5d\xdf\xd4\x99\xce\xdc\x2b\x0f\x1b\xc5\x3c\x98\xd0\x68\xa5\x65\x8e\x69\x75\xce\x42\x69\x20\x35\x6c\xaa\xf1\xdd\xc9\x57\x6c\x7b\xc3\x3e\x42\x7e\xa1\xc3\x8c\x76\xa7\x9a\xe8\x81\xdb\xe1\x84\x82\xf5\x99\xd5\xa8\xee\x35\x9e\x54\x94\xc5\x44\xa0\x7b\xcc\xb7\x4c\x3e\xcd\xf2\x49\xdb\x5c\x21\x06\x85\xf6\x75\x00\x43\x62\x89\x12\xf9\x5d\x90\xed\xe6\xfd\xb4\x49\x14\x4a\x79\xe2\x4d"; unsigned char rsa_p[] = - "\x00\xd8\xcb\xe4\x65\x4e\x6c\x11\x0f\xa8\x72\xed\x4b\x4c\x8d\x1d\x07\xdc\x24\x99\x25\xe4\x3c\xb2\xf3\x02\xc4\x72\xe6\x3a\x5b\x86\xf4\x7d\x54\x2a\x4e\x79\x64\x16\x1f\x45\x3b\x17\x9e\x2a\x94\x90\x90\x59\xe7\x0b\x95\xd4\xbf\xa9\x47\xd1\x0a\x71\xaf\x3d\x6b\xed\x55"; + "\x00\xd8\xcb\xe4\x65\x4e\x6c\x11\x0f\xa8\x72\xed\x4b\x4c\x8d\x1d\x07\xdc\x24\x99\x25\xe4\x3c\xb2\xf3\x02\xc4\x72\xe6\x3a\x5b\x86\xf4\x7d\x54\x2a\x4e\x79\x64\x16\x1f\x45\x3b\x17\x9e\x2a\x94\x90\x90\x59\xe7\x0b\x95\xd4\xbf\xa9\x47\xd1\x0a\x71\xaf\x3d\x6b\xed\x55"; unsigned char rsa_q[] = - "\x00\xdd\x49\x81\x7a\x5c\x04\xbf\x6b\xbd\x70\x05\x35\x42\x32\xa3\x9b\x08\xee\xd4\x98\x17\x6e\xb8\xc4\xa2\x12\xbe\xdc\x1e\x72\xd0\x44\x84\x5c\xf0\x30\x35\x04\xfd\x4e\xb0\xcc\xd6\x6f\x40\xcb\x16\x13\x58\xbc\x57\xf7\x77\x48\xe5\x0c\x0d\x14\x9b\x66\x6e\xd8\xde\x05"; + "\x00\xdd\x49\x81\x7a\x5c\x04\xbf\x6b\xbd\x70\x05\x35\x42\x32\xa3\x9b\x08\xee\xd4\x98\x17\x6e\xb8\xc4\xa2\x12\xbe\xdc\x1e\x72\xd0\x44\x84\x5c\xf0\x30\x35\x04\xfd\x4e\xb0\xcc\xd6\x6f\x40\xcb\x16\x13\x58\xbc\x57\xf7\x77\x48\xe5\x0c\x0d\x14\x9b\x66\x6e\xd8\xde\x05"; unsigned char rsa_u[] = - "\x4a\x74\x5c\x95\x83\x54\xa3\xb0\x71\x35\xba\x02\x3a\x7d\x4a\x8c\x2d\x9a\x26\x77\x60\x36\x28\xd4\xb1\x7d\x8a\x06\xf8\x89\xa2\xef\xb1\x66\x46\x7d\xb9\xd4\xde\xbc\xa3\xbe\x46\xfa\x62\xe1\x63\x82\xdc\xdb\x64\x36\x47\x59\x00\xa8\xf3\xf7\x0e\xb4\xe0\x66\x3d\xd9"; + "\x4a\x74\x5c\x95\x83\x54\xa3\xb0\x71\x35\xba\x02\x3a\x7d\x4a\x8c\x2d\x9a\x26\x77\x60\x36\x28\xd4\xb1\x7d\x8a\x06\xf8\x89\xa2\xef\xb1\x66\x46\x7d\xb9\xd4\xde\xbc\xa3\xbe\x46\xfa\x62\xe1\x63\x82\xdc\xdb\x64\x36\x47\x59\x00\xa8\xf3\xf7\x0e\xb4\xe0\x66\x3d\xd9"; unsigned char rsa_e1[] = - "\x45\x20\x96\x5e\x1b\x28\x68\x34\x46\xf1\x06\x6b\x09\x28\xc1\xc5\xfc\xd3\x0a\xa6\x43\x65\x7b\x65\xf3\x4e\xf2\x98\x28\xa9\x80\x99\xba\xd0\xb8\x80\xb7\x42\x4b\xaf\x82\xe2\xb9\xc0\x2c\x31\x9c\xfa\xfa\x3f\xaa\xb9\x06\xd2\x6a\x46\xc5\x08\x00\x81\xf1\x22\xd5\xd5"; + "\x45\x20\x96\x5e\x1b\x28\x68\x34\x46\xf1\x06\x6b\x09\x28\xc1\xc5\xfc\xd3\x0a\xa6\x43\x65\x7b\x65\xf3\x4e\xf2\x98\x28\xa9\x80\x99\xba\xd0\xb8\x80\xb7\x42\x4b\xaf\x82\xe2\xb9\xc0\x2c\x31\x9c\xfa\xfa\x3f\xaa\xb9\x06\xd2\x6a\x46\xc5\x08\x00\x81\xf1\x22\xd5\xd5"; unsigned char rsa_e2[] = - "\x00\xa6\x50\x60\xa7\xfe\x10\xf3\x6d\x9e\x6b\x5a\xfe\xb4\x4a\x2a\xfc\x92\xb2\x2d\xc6\x41\x96\x4d\xf8\x3b\x77\xab\x4a\xf4\xf7\x85\xe0\x79\x3b\x00\xaa\xba\xae\x8d\x53\x5f\x3e\x14\xcc\x78\xfe\x2a\x11\x50\x57\xfe\x25\x57\xd9\xc9\x8c\x4d\x28\x77\xc3\x7c\xfc\x31\xa1"; + "\x00\xa6\x50\x60\xa7\xfe\x10\xf3\x6d\x9e\x6b\x5a\xfe\xb4\x4a\x2a\xfc\x92\xb2\x2d\xc6\x41\x96\x4d\xf8\x3b\x77\xab\x4a\xf4\xf7\x85\xe0\x79\x3b\x00\xaa\xba\xae\x8d\x53\x5f\x3e\x14\xcc\x78\xfe\x2a\x11\x50\x57\xfe\x25\x57\xd9\xc9\x8c\x4d\x28\x77\xc3\x7c\xfc\x31\xa1"; unsigned char ecc_x[] = - "\x3c\x15\x6f\x1d\x48\x3e\x64\x59\x13\x2c\x6d\x04\x1a\x38\x0d\x30\x5c\xe4\x3f\x55\xcb\xd9\x17\x15\x46\x72\x71\x92\xc1\xf8\xc6\x33"; + "\x3c\x15\x6f\x1d\x48\x3e\x64\x59\x13\x2c\x6d\x04\x1a\x38\x0d\x30\x5c\xe4\x3f\x55\xcb\xd9\x17\x15\x46\x72\x71\x92\xc1\xf8\xc6\x33"; unsigned char ecc_y[] = - "\x3d\x04\x2e\xc8\xc1\x0f\xc0\x50\x04\x7b\x9f\xc9\x48\xb5\x40\xfa\x6f\x93\x82\x59\x61\x5e\x72\x57\xcb\x83\x06\xbd\xcc\x82\x94\xc1"; + "\x3d\x04\x2e\xc8\xc1\x0f\xc0\x50\x04\x7b\x9f\xc9\x48\xb5\x40\xfa\x6f\x93\x82\x59\x61\x5e\x72\x57\xcb\x83\x06\xbd\xcc\x82\x94\xc1"; unsigned char ecc_k[] = - "\x00\xfd\x2b\x00\x80\xf3\x36\x5f\x11\x32\x65\xe3\x8d\x30\x33\x3b\x47\xf5\xce\xf8\x13\xe5\x4c\xc2\xcf\xfd\xe8\x05\x6a\xca\xc9\x41\xb1"; + "\x00\xfd\x2b\x00\x80\xf3\x36\x5f\x11\x32\x65\xe3\x8d\x30\x33\x3b\x47\xf5\xce\xf8\x13\xe5\x4c\xc2\xcf\xfd\xe8\x05\x6a\xca\xc9\x41\xb1"; unsigned char false_ed25519_x[] = - "\xac\xac\x9a\xb3\xc3\x41\x8d\x41\x22\x21\xc1\x84\xa7\xb8\x70\xfb\x44\x6e\xc7\x7e\x20\x87\x7b\xd9\x22\xa4\x5d\xd2\x97\x09\xd5\x48"; + "\xac\xac\x9a\xb3\xc3\x41\x8d\x41\x22\x21\xc1\x84\xa7\xb8\x70\xfb\x44\x6e\xc7\x7e\x20\x87\x7b\xd9\x22\xa4\x5d\xd2\x97\x09\xd5\x48"; unsigned char ed25519_x[] = - "\xab\xaf\x98\xb3\xc3\x41\x8d\x41\x22\x21\xc1\x86\xa7\xb8\x70\xfb\x44\x6e\xc7\x7e\x20\x87\x7b\xd9\x22\xa4\x5d\xd2\x97\x09\xd5\x48"; + "\xab\xaf\x98\xb3\xc3\x41\x8d\x41\x22\x21\xc1\x86\xa7\xb8\x70\xfb\x44\x6e\xc7\x7e\x20\x87\x7b\xd9\x22\xa4\x5d\xd2\x97\x09\xd5\x48"; unsigned char ed25519_k[] = - "\x1c\xa9\x23\xdc\x35\xa8\xfd\xd6\x2d\xa8\x98\xb9\x60\x7b\xce\x10\x3d\xf4\x64\xc6\xe5\x4b\x0a\x65\x56\x6a\x3c\x73\x65\x51\xa2\x2f"; + "\x1c\xa9\x23\xdc\x35\xa8\xfd\xd6\x2d\xa8\x98\xb9\x60\x7b\xce\x10\x3d\xf4\x64\xc6\xe5\x4b\x0a\x65\x56\x6a\x3c\x73\x65\x51\xa2\x2f"; unsigned char gost_x[] = - "\xd0\xbb\xe9\xf4\xc6\xa8\x60\x3c\x73\x91\x44\x55\xcf\xbd\x50\xdd\x2c\x3d\x5a\xbc\x1a\xd8\x5e\x3c\xdf\x10\xdd\xd2\x63\x88\x0f\xc0"; + "\xd0\xbb\xe9\xf4\xc6\xa8\x60\x3c\x73\x91\x44\x55\xcf\xbd\x50\xdd\x2c\x3d\x5a\xbc\x1a\xd8\x5e\x3c\xdf\x10\xdd\xd2\x63\x88\x0f\xc0"; unsigned char gost_y[] = - "\x8a\xec\x96\x3c\x0b\xc8\x33\xff\x57\x5f\x66\x78\x94\x39\xb4\xf5\x24\xc6\xba\x86\x41\xac\x43\x21\x6f\x3c\xb0\xfa\x56\xbd\x5b\x37"; + "\x8a\xec\x96\x3c\x0b\xc8\x33\xff\x57\x5f\x66\x78\x94\x39\xb4\xf5\x24\xc6\xba\x86\x41\xac\x43\x21\x6f\x3c\xb0\xfa\x56\xbd\x5b\x37"; unsigned char gost_k[] = - "\x47\x59\x41\x2c\x8a\xf8\x58\x1a\x67\xe0\xc3\x82\x1f\xca\x31\x19\x66\xf9\xd8\x43\xcd\x2f\x78\x23\x34\x98\x90\xb8\x14\x2e\x7f\xa5"; + "\x47\x59\x41\x2c\x8a\xf8\x58\x1a\x67\xe0\xc3\x82\x1f\xca\x31\x19\x66\xf9\xd8\x43\xcd\x2f\x78\x23\x34\x98\x90\xb8\x14\x2e\x7f\xa5"; gnutls_datum_t _dsa_p = { dsa_p, sizeof(dsa_p) - 1 }; gnutls_datum_t _dsa_q = { dsa_q, sizeof(dsa_q) - 1 }; @@ -131,8 +129,8 @@ gnutls_datum_t _ecc_x = { ecc_x, sizeof(ecc_x) - 1 }; gnutls_datum_t _ecc_y = { ecc_y, sizeof(ecc_y) - 1 }; gnutls_datum_t _ecc_k = { ecc_k, sizeof(ecc_k) - 1 }; -gnutls_datum_t _false_ed25519_x = - { false_ed25519_x, sizeof(false_ed25519_x) - 1 }; +gnutls_datum_t _false_ed25519_x = { false_ed25519_x, + sizeof(false_ed25519_x) - 1 }; gnutls_datum_t _ed25519_x = { ed25519_x, sizeof(ed25519_x) - 1 }; gnutls_datum_t _ed25519_k = { ed25519_k, sizeof(ed25519_k) - 1 }; @@ -142,12 +140,12 @@ gnutls_datum_t _gost_k = { gost_k, sizeof(gost_k) - 1 }; unsigned char ecc_params[] = "\x06\x08\x2a\x86\x48\xce\x3d\x03\x01\x07"; unsigned char ecc_point[] = - "\x04\x41\x04\x3c\x15\x6f\x1d\x48\x3e\x64\x59\x13\x2c\x6d\x04\x1a\x38\x0d\x30\x5c\xe4\x3f\x55\xcb\xd9\x17\x15\x46\x72\x71\x92\xc1\xf8\xc6\x33\x3d\x04\x2e\xc8\xc1\x0f\xc0\x50\x04\x7b\x9f\xc9\x48\xb5\x40\xfa\x6f\x93\x82\x59\x61\x5e\x72\x57\xcb\x83\x06\xbd\xcc\x82\x94\xc1"; + "\x04\x41\x04\x3c\x15\x6f\x1d\x48\x3e\x64\x59\x13\x2c\x6d\x04\x1a\x38\x0d\x30\x5c\xe4\x3f\x55\xcb\xd9\x17\x15\x46\x72\x71\x92\xc1\xf8\xc6\x33\x3d\x04\x2e\xc8\xc1\x0f\xc0\x50\x04\x7b\x9f\xc9\x48\xb5\x40\xfa\x6f\x93\x82\x59\x61\x5e\x72\x57\xcb\x83\x06\xbd\xcc\x82\x94\xc1"; static int _gnutls_privkey_export2_pkcs8(gnutls_privkey_t key, gnutls_x509_crt_fmt_t f, const char *password, unsigned flags, - gnutls_datum_t * out) + gnutls_datum_t *out) { gnutls_x509_privkey_t xkey; int ret; @@ -164,8 +162,8 @@ static int _gnutls_privkey_export2_pkcs8(gnutls_privkey_t key, return ret; } -#define CMP(name, dat, v) cmp(name, __LINE__, dat, v, sizeof(v)-1) -static int cmp(const char *name, int line, gnutls_datum_t * v1, +#define CMP(name, dat, v) cmp(name, __LINE__, dat, v, sizeof(v) - 1) +static int cmp(const char *name, int line, gnutls_datum_t *v1, unsigned char *v2, unsigned size) { if (size != v1->size) { @@ -185,8 +183,8 @@ static int cmp(const char *name, int line, gnutls_datum_t * v1, } /* leading zero on v2 is ignored */ -#define CMP_NO_LZ(name, dat, v) cmp_no_lz(name, __LINE__, dat, v, sizeof(v)-1) -static int cmp_no_lz(const char *name, int line, gnutls_datum_t * v1, +#define CMP_NO_LZ(name, dat, v) cmp_no_lz(name, __LINE__, dat, v, sizeof(v) - 1) +static int cmp_no_lz(const char *name, int line, gnutls_datum_t *v1, unsigned char *i2, unsigned size) { gnutls_datum_t v2; @@ -214,8 +212,7 @@ static int cmp_no_lz(const char *name, int line, gnutls_datum_t * v1, return 0; } -static -int check_x509_privkey(void) +static int check_x509_privkey(void) { gnutls_x509_privkey_t key; gnutls_datum_t p, q, g, y, x; @@ -258,9 +255,8 @@ int check_x509_privkey(void) if (ret < 0) fail("error\n"); - ret = - gnutls_x509_privkey_export_rsa_raw2(key, &m, &e, &d, &p, &q, &u, - &e1, &e2); + ret = gnutls_x509_privkey_export_rsa_raw2(key, &m, &e, &d, &p, &q, &u, + &e1, &e2); if (ret < 0) fail("error\n"); @@ -287,9 +283,8 @@ int check_x509_privkey(void) if (ret < 0) fail("error\n"); - ret = - gnutls_x509_privkey_import(key, &server_ecc_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_privkey_import(key, &server_ecc_key, + GNUTLS_X509_FMT_PEM); if (ret < 0) fail("error\n"); @@ -312,19 +307,15 @@ int check_x509_privkey(void) return 0; } -static -int check_privkey_import_export(void) +static int check_privkey_import_export(void) { static const struct rsa_privkey_opt_args { gnutls_datum_t *_u, *_e1, *_e2; } rsa_opt_args[] = { - {NULL, NULL, NULL}, - {NULL, &_rsa_e1, &_rsa_e2}, - {NULL, &_rsa_e1, NULL}, - {NULL, NULL, &_rsa_e2}, - {&_rsa_u, NULL, NULL}, - {&_rsa_u, &_rsa_e1, NULL}, - {&_rsa_u, NULL, &_rsa_e2}, + { NULL, NULL, NULL }, { NULL, &_rsa_e1, &_rsa_e2 }, + { NULL, &_rsa_e1, NULL }, { NULL, NULL, &_rsa_e2 }, + { &_rsa_u, NULL, NULL }, { &_rsa_u, &_rsa_e1, NULL }, + { &_rsa_u, NULL, &_rsa_e2 }, }; gnutls_privkey_t key; gnutls_datum_t p, q, g, y, x; @@ -343,9 +334,8 @@ int check_privkey_import_export(void) if (ret < 0) fail("error\n"); - ret = - gnutls_privkey_import_dsa_raw(key, &_dsa_p, &_dsa_q, &_dsa_g, - &_dsa_y, &_dsa_x); + ret = gnutls_privkey_import_dsa_raw(key, &_dsa_p, &_dsa_q, &_dsa_g, + &_dsa_y, &_dsa_x); if (ret < 0) fail("error\n"); @@ -364,9 +354,8 @@ int check_privkey_import_export(void) gnutls_free(y.data); gnutls_free(x.data); - ret = - gnutls_privkey_export_dsa_raw2(key, &p, &q, &g, &y, &x, - GNUTLS_EXPORT_FLAG_NO_LZ); + ret = gnutls_privkey_export_dsa_raw2(key, &p, &q, &g, &y, &x, + GNUTLS_EXPORT_FLAG_NO_LZ); if (ret < 0) fail("error: %s\n", gnutls_strerror(ret)); @@ -387,9 +376,8 @@ int check_privkey_import_export(void) if (ret < 0) fail("error\n"); - ret = - gnutls_privkey_import_dsa_raw(key, &_dsa_p, &_dsa_q, &_dsa_g, NULL, - &_dsa_x); + ret = gnutls_privkey_import_dsa_raw(key, &_dsa_p, &_dsa_q, &_dsa_g, + NULL, &_dsa_x); if (ret < 0) fail("error\n"); @@ -417,12 +405,11 @@ int check_privkey_import_export(void) if (ret < 0) fail("error\n"); - ret = - gnutls_privkey_import_rsa_raw(key, &_rsa_m, &_rsa_e, - &_rsa_d, &_rsa_p, &_rsa_q, - rsa_opt_args[i]._u, - rsa_opt_args[i]._e1, - rsa_opt_args[i]._e2); + ret = gnutls_privkey_import_rsa_raw(key, &_rsa_m, &_rsa_e, + &_rsa_d, &_rsa_p, &_rsa_q, + rsa_opt_args[i]._u, + rsa_opt_args[i]._e1, + rsa_opt_args[i]._e2); if (ret < 0) fail("error\n"); @@ -434,15 +421,13 @@ int check_privkey_import_export(void) if (ret < 0) fail("error\n"); - ret = - gnutls_privkey_import_rsa_raw(key, &_rsa_m, &_rsa_e, NULL, &_rsa_p, - &_rsa_q, NULL, NULL, NULL); + ret = gnutls_privkey_import_rsa_raw(key, &_rsa_m, &_rsa_e, NULL, + &_rsa_p, &_rsa_q, NULL, NULL, NULL); if (ret < 0) fail("error\n"); - ret = - gnutls_privkey_export_rsa_raw2(key, &m, &e, &d, &p, &q, &u, &e1, - &e2, 0); + ret = gnutls_privkey_export_rsa_raw2(key, &m, &e, &d, &p, &q, &u, &e1, + &e2, 0); if (ret < 0) fail("error\n"); @@ -470,16 +455,14 @@ int check_privkey_import_export(void) fail("error\n"); /* Import/export */ - ret = - gnutls_privkey_import_rsa_raw(key, &_rsa_m, &_rsa_e, &_rsa_d, - &_rsa_p, &_rsa_q, &_rsa_u, &_rsa_e1, - &_rsa_e2); + ret = gnutls_privkey_import_rsa_raw(key, &_rsa_m, &_rsa_e, &_rsa_d, + &_rsa_p, &_rsa_q, &_rsa_u, &_rsa_e1, + &_rsa_e2); if (ret < 0) fail("error\n"); - ret = - gnutls_privkey_export_rsa_raw2(key, &m, &e, &d, &p, &q, &u, &e1, - &e2, 0); + ret = gnutls_privkey_export_rsa_raw2(key, &m, &e, &d, &p, &q, &u, &e1, + &e2, 0); if (ret < 0) fail("error\n"); @@ -500,9 +483,8 @@ int check_privkey_import_export(void) gnutls_free(e1.data); gnutls_free(e2.data); - ret = - gnutls_privkey_export_rsa_raw2(key, &m, &e, &d, &p, &q, &u, &e1, - &e2, GNUTLS_EXPORT_FLAG_NO_LZ); + ret = gnutls_privkey_export_rsa_raw2(key, &m, &e, &d, &p, &q, &u, &e1, + &e2, GNUTLS_EXPORT_FLAG_NO_LZ); if (ret < 0) fail("error\n"); @@ -529,9 +511,8 @@ int check_privkey_import_export(void) if (ret < 0) fail("error\n"); - ret = - gnutls_privkey_import_ecc_raw(key, GNUTLS_ECC_CURVE_SECP256R1, - &_ecc_x, &_ecc_y, &_ecc_k); + ret = gnutls_privkey_import_ecc_raw(key, GNUTLS_ECC_CURVE_SECP256R1, + &_ecc_x, &_ecc_y, &_ecc_k); if (ret < 0) fail("error\n"); @@ -550,9 +531,8 @@ int check_privkey_import_export(void) gnutls_free(y.data); gnutls_free(p.data); - ret = - gnutls_privkey_export_ecc_raw2(key, &curve, &x, &y, &p, - GNUTLS_EXPORT_FLAG_NO_LZ); + ret = gnutls_privkey_export_ecc_raw2(key, &curve, &x, &y, &p, + GNUTLS_EXPORT_FLAG_NO_LZ); if (ret < 0) fail("error\n"); @@ -574,15 +554,13 @@ int check_privkey_import_export(void) fail("error\n"); /* test whether an invalid size would fail */ - ret = - gnutls_privkey_import_ecc_raw(key, GNUTLS_ECC_CURVE_ED25519, - &_rsa_m, NULL, &_rsa_m); + ret = gnutls_privkey_import_ecc_raw(key, GNUTLS_ECC_CURVE_ED25519, + &_rsa_m, NULL, &_rsa_m); if (ret != GNUTLS_E_INVALID_REQUEST) fail("error\n"); - ret = - gnutls_privkey_import_ecc_raw(key, GNUTLS_ECC_CURVE_ED25519, - &_ed25519_x, NULL, &_ed25519_k); + ret = gnutls_privkey_import_ecc_raw(key, GNUTLS_ECC_CURVE_ED25519, + &_ed25519_x, NULL, &_ed25519_k); if (ret < 0) fail("error\n"); @@ -608,9 +586,9 @@ int check_privkey_import_export(void) if (ret < 0) fail("error\n"); - ret = - gnutls_privkey_import_ecc_raw(key, GNUTLS_ECC_CURVE_ED25519, - &_false_ed25519_x, NULL, &_ed25519_k); + ret = gnutls_privkey_import_ecc_raw(key, GNUTLS_ECC_CURVE_ED25519, + &_false_ed25519_x, NULL, + &_ed25519_k); if (ret < 0) fail("error\n"); @@ -626,17 +604,15 @@ int check_privkey_import_export(void) if (ret < 0) fail("error\n"); - ret = - gnutls_privkey_import_gost_raw(key, GNUTLS_ECC_CURVE_GOST256CPXA, - GNUTLS_DIG_GOSTR_94, - GNUTLS_GOST_PARAMSET_CP_A, &_gost_x, - &_gost_y, &_gost_k); + ret = gnutls_privkey_import_gost_raw(key, GNUTLS_ECC_CURVE_GOST256CPXA, + GNUTLS_DIG_GOSTR_94, + GNUTLS_GOST_PARAMSET_CP_A, + &_gost_x, &_gost_y, &_gost_k); if (ret < 0) fail("error\n"); - ret = - gnutls_privkey_export_gost_raw2(key, &curve, &digest, ¶mset, &x, - &y, &p, 0); + ret = gnutls_privkey_export_gost_raw2(key, &curve, &digest, ¶mset, + &x, &y, &p, 0); if (ret < 0) fail("error\n"); @@ -660,9 +636,9 @@ int check_privkey_import_export(void) gnutls_free(y.data); gnutls_free(p.data); - ret = - gnutls_privkey_export_gost_raw2(key, &curve, &digest, ¶mset, &x, - &y, &p, GNUTLS_EXPORT_FLAG_NO_LZ); + ret = gnutls_privkey_export_gost_raw2(key, &curve, &digest, ¶mset, + &x, &y, &p, + GNUTLS_EXPORT_FLAG_NO_LZ); if (ret < 0) fail("error\n"); @@ -691,8 +667,7 @@ int check_privkey_import_export(void) return 0; } -static -int check_dsa(void) +static int check_dsa(void) { gnutls_privkey_t key; gnutls_pubkey_t pub; @@ -711,9 +686,8 @@ int check_dsa(void) if (ret < 0) fail("error\n"); - ret = - gnutls_privkey_import_x509_raw(key, &dsa_key, GNUTLS_X509_FMT_PEM, - 0, 0); + ret = gnutls_privkey_import_x509_raw(key, &dsa_key, GNUTLS_X509_FMT_PEM, + 0, 0); if (ret < 0) fail("error\n"); @@ -734,9 +708,8 @@ int check_dsa(void) gnutls_free(g.data); gnutls_free(y.data); - ret = - gnutls_pubkey_export_dsa_raw2(pub, &p, &q, &g, &y, - GNUTLS_EXPORT_FLAG_NO_LZ); + ret = gnutls_pubkey_export_dsa_raw2(pub, &p, &q, &g, &y, + GNUTLS_EXPORT_FLAG_NO_LZ); if (ret < 0) fail("error\n"); @@ -763,9 +736,8 @@ int check_dsa(void) gnutls_free(y.data); gnutls_free(x.data); - ret = - _gnutls_privkey_export2_pkcs8(key, GNUTLS_X509_FMT_DER, NULL, 0, - &x); + ret = _gnutls_privkey_export2_pkcs8(key, GNUTLS_X509_FMT_DER, NULL, 0, + &x); if (ret < 0 || x.size == 0) fail("error in pkcs8 export\n"); gnutls_free(x.data); @@ -776,8 +748,7 @@ int check_dsa(void) return 0; } -static -int check_rsa(void) +static int check_rsa(void) { gnutls_privkey_t key; gnutls_pubkey_t pub; @@ -795,9 +766,8 @@ int check_rsa(void) if (ret < 0) fail("error\n"); - ret = - gnutls_privkey_import_x509_raw(key, &rsa_key, GNUTLS_X509_FMT_PEM, - 0, 0); + ret = gnutls_privkey_import_x509_raw(key, &rsa_key, GNUTLS_X509_FMT_PEM, + 0, 0); if (ret < 0) fail("error\n"); @@ -814,9 +784,8 @@ int check_rsa(void) gnutls_free(m.data); gnutls_free(e.data); - ret = - gnutls_pubkey_export_rsa_raw2(pub, &m, &e, - GNUTLS_EXPORT_FLAG_NO_LZ); + ret = gnutls_pubkey_export_rsa_raw2(pub, &m, &e, + GNUTLS_EXPORT_FLAG_NO_LZ); if (ret < 0) fail("error\n"); @@ -825,9 +794,8 @@ int check_rsa(void) gnutls_free(m.data); gnutls_free(e.data); - ret = - gnutls_privkey_export_rsa_raw(key, &m, &e, &d, &p, &q, &u, &e1, - &e2); + ret = gnutls_privkey_export_rsa_raw(key, &m, &e, &d, &p, &q, &u, &e1, + &e2); if (ret < 0) fail("error\n"); @@ -848,9 +816,8 @@ int check_rsa(void) gnutls_free(e1.data); gnutls_free(e2.data); - ret = - _gnutls_privkey_export2_pkcs8(key, GNUTLS_X509_FMT_DER, NULL, 0, - &m); + ret = _gnutls_privkey_export2_pkcs8(key, GNUTLS_X509_FMT_DER, NULL, 0, + &m); if (ret < 0 || m.size == 0) fail("error in pkcs8 export\n"); gnutls_free(m.data); @@ -861,8 +828,7 @@ int check_rsa(void) return 0; } -static -int check_ecc(void) +static int check_ecc(void) { gnutls_privkey_t key; gnutls_pubkey_t pub; @@ -881,9 +847,8 @@ int check_ecc(void) if (ret < 0) fail("error\n"); - ret = - gnutls_privkey_import_x509_raw(key, &server_ecc_key, - GNUTLS_X509_FMT_PEM, 0, 0); + ret = gnutls_privkey_import_x509_raw(key, &server_ecc_key, + GNUTLS_X509_FMT_PEM, 0, 0); if (ret < 0) fail("error\n"); @@ -904,9 +869,8 @@ int check_ecc(void) gnutls_free(x.data); gnutls_free(y.data); - ret = - gnutls_pubkey_export_ecc_raw2(pub, &curve, &x, &y, - GNUTLS_EXPORT_FLAG_NO_LZ); + ret = gnutls_pubkey_export_ecc_raw2(pub, &curve, &x, &y, + GNUTLS_EXPORT_FLAG_NO_LZ); if (ret < 0) fail("error\n"); @@ -935,9 +899,8 @@ int check_ecc(void) gnutls_free(y.data); gnutls_free(k.data); - ret = - _gnutls_privkey_export2_pkcs8(key, GNUTLS_X509_FMT_DER, NULL, 0, - &x); + ret = _gnutls_privkey_export2_pkcs8(key, GNUTLS_X509_FMT_DER, NULL, 0, + &x); if (ret < 0 || x.size == 0) fail("error in pkcs8 export\n"); gnutls_free(x.data); @@ -978,8 +941,7 @@ int check_ecc(void) return 0; } -static -int check_ed25519(void) +static int check_ed25519(void) { gnutls_privkey_t key; gnutls_pubkey_t pub; @@ -998,9 +960,8 @@ int check_ed25519(void) if (ret < 0) fail("error\n"); - ret = - gnutls_privkey_import_x509_raw(key, &server_ca3_eddsa_key, - GNUTLS_X509_FMT_PEM, 0, 0); + ret = gnutls_privkey_import_x509_raw(key, &server_ca3_eddsa_key, + GNUTLS_X509_FMT_PEM, 0, 0); if (ret < 0) fail("error\n"); @@ -1050,9 +1011,8 @@ int check_ed25519(void) fail("expected NULL value in Y\n"); } - ret = - _gnutls_privkey_export2_pkcs8(key, GNUTLS_X509_FMT_DER, NULL, 0, - &x); + ret = _gnutls_privkey_export2_pkcs8(key, GNUTLS_X509_FMT_DER, NULL, 0, + &x); if (ret < 0 || x.size == 0) fail("error in pkcs8 export\n"); gnutls_free(x.data); @@ -1070,8 +1030,7 @@ int check_ed25519(void) return 0; } -static -int check_gost(void) +static int check_gost(void) { #ifdef ENABLE_GOST gnutls_privkey_t key; @@ -1093,9 +1052,8 @@ int check_gost(void) if (ret < 0) fail("error\n"); - ret = - gnutls_privkey_import_x509_raw(key, &server_ca3_gost01_key, - GNUTLS_X509_FMT_PEM, 0, 0); + ret = gnutls_privkey_import_x509_raw(key, &server_ca3_gost01_key, + GNUTLS_X509_FMT_PEM, 0, 0); if (ret < 0) fail("error\n"); @@ -1103,9 +1061,8 @@ int check_gost(void) if (ret < 0) fail("error\n"); - ret = - gnutls_pubkey_export_gost_raw2(pub, &curve, &digest, ¶mset, &x, - &y, 0); + ret = gnutls_pubkey_export_gost_raw2(pub, &curve, &digest, ¶mset, + &x, &y, 0); if (ret < 0) fail("error\n"); @@ -1127,9 +1084,8 @@ int check_gost(void) gnutls_free(x.data); gnutls_free(y.data); - ret = - gnutls_pubkey_export_gost_raw2(pub, &curve, &digest, ¶mset, &x, - &y, GNUTLS_EXPORT_FLAG_NO_LZ); + ret = gnutls_pubkey_export_gost_raw2(pub, &curve, &digest, ¶mset, + &x, &y, GNUTLS_EXPORT_FLAG_NO_LZ); if (ret < 0) fail("error\n"); @@ -1152,9 +1108,8 @@ int check_gost(void) gnutls_free(y.data); /* check the private key export */ - ret = - gnutls_privkey_export_gost_raw2(key, &curve, &digest, ¶mset, &x, - &y, &k, 0); + ret = gnutls_privkey_export_gost_raw2(key, &curve, &digest, ¶mset, + &x, &y, &k, 0); if (ret < 0) fail("error\n"); @@ -1178,9 +1133,8 @@ int check_gost(void) gnutls_free(y.data); gnutls_free(k.data); - ret = - _gnutls_privkey_export2_pkcs8(key, GNUTLS_X509_FMT_DER, NULL, 0, - &x); + ret = _gnutls_privkey_export2_pkcs8(key, GNUTLS_X509_FMT_DER, NULL, 0, + &x); if (ret < 0 || x.size == 0) fail("error in pkcs8 export\n"); gnutls_free(x.data); diff --git a/tests/key-material-dtls.c b/tests/key-material-dtls.c index 32ea05a913..fb8332255e 100644 --- a/tests/key-material-dtls.c +++ b/tests/key-material-dtls.c @@ -19,7 +19,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -34,17 +34,17 @@ int main(int argc, char **argv) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" static void terminate(void); @@ -68,7 +68,7 @@ static pid_t child; /* A very basic DTLS client, with anonymous authentication, that negotiates SRTP */ -static void dump(const char *name, uint8_t * data, unsigned data_size) +static void dump(const char *name, uint8_t *data, unsigned data_size) { unsigned i; @@ -118,9 +118,10 @@ static void client(int fd) gnutls_init(&session, GNUTLS_CLIENT | GNUTLS_DATAGRAM); /* Use default priorities */ - ret = gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS1.0:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-NULL:+ANON-DH:+ANON-ECDH:+CURVE-ALL", - &err); + ret = gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS1.0:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-NULL:+ANON-DH:+ANON-ECDH:+CURVE-ALL", + &err); if (ret < 0) { fail("client: priority set failed (%s): %s\n", gnutls_strerror(ret), err); @@ -137,8 +138,7 @@ static void client(int fd) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed: %s\n", strerror(ret)); @@ -150,8 +150,8 @@ static void client(int fd) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); ret = gnutls_cipher_get(session); if (ret != GNUTLS_CIPHER_AES_128_CBC) { @@ -182,9 +182,8 @@ static void client(int fd) p = key_material; /* check whether the key material matches our calculations */ - ret = - gnutls_record_get_state(session, 0, &mac_key, &iv, &cipher_key, - wseq_number); + ret = gnutls_record_get_state(session, 0, &mac_key, &iv, &cipher_key, + wseq_number); if (ret < 0) { fprintf(stderr, "error in %d\n", __LINE__); gnutls_perror(ret); @@ -197,9 +196,8 @@ static void client(int fd) exit(1); } - ret = - gnutls_record_get_state(session, 1, &read_mac_key, &read_iv, - &read_cipher_key, rseq_number); + ret = gnutls_record_get_state(session, 1, &read_mac_key, &read_iv, + &read_cipher_key, rseq_number); if (ret < 0) { fprintf(stderr, "error in %d\n", __LINE__); gnutls_perror(ret); @@ -212,8 +210,8 @@ static void client(int fd) exit(1); } - if (hash_size != mac_key.size - || memcmp(p, mac_key.data, hash_size) != 0) { + if (hash_size != mac_key.size || + memcmp(p, mac_key.data, hash_size) != 0) { dump("MAC:", mac_key.data, mac_key.size); dump("Block:", key_material, block_size); fprintf(stderr, "error in %d\n", __LINE__); @@ -221,8 +219,8 @@ static void client(int fd) } p += hash_size; - if (hash_size != read_mac_key.size - || memcmp(p, read_mac_key.data, hash_size) != 0) { + if (hash_size != read_mac_key.size || + memcmp(p, read_mac_key.data, hash_size) != 0) { dump("MAC:", read_mac_key.data, read_mac_key.size); dump("Block:", key_material, block_size); fprintf(stderr, "error in %d\n", __LINE__); @@ -230,15 +228,15 @@ static void client(int fd) } p += hash_size; - if (key_size != cipher_key.size - || memcmp(p, cipher_key.data, key_size) != 0) { + if (key_size != cipher_key.size || + memcmp(p, cipher_key.data, key_size) != 0) { fprintf(stderr, "error in %d\n", __LINE__); exit(1); } p += key_size; - if (key_size != read_cipher_key.size - || memcmp(p, read_cipher_key.data, key_size) != 0) { + if (key_size != read_cipher_key.size || + memcmp(p, read_cipher_key.data, key_size) != 0) { fprintf(stderr, "error in %d\n", __LINE__); exit(1); } @@ -253,8 +251,8 @@ static void client(int fd) } memset(wseq_number, 0xAA, sizeof(wseq_number)); - ret = - gnutls_record_get_state(session, 0, NULL, NULL, NULL, wseq_number); + ret = gnutls_record_get_state(session, 0, NULL, NULL, NULL, + wseq_number); if (ret < 0) { fprintf(stderr, "error in %d\n", __LINE__); gnutls_perror(ret); @@ -268,8 +266,8 @@ static void client(int fd) } memset(rseq_number, 0xAA, sizeof(rseq_number)); - ret = - gnutls_record_get_state(session, 1, NULL, NULL, NULL, rseq_number); + ret = gnutls_record_get_state(session, 1, NULL, NULL, NULL, + rseq_number); if (ret < 0) { fprintf(stderr, "error in %d\n", __LINE__); gnutls_perror(ret); @@ -320,9 +318,8 @@ static void server(int fd) /* avoid calling all the priority functions, since the defaults * are adequate. */ - ret = gnutls_priority_set_direct(session, - "NORMAL:+VERS-DTLS1.0:+ANON-DH:+ANON-ECDH", - NULL); + ret = gnutls_priority_set_direct( + session, "NORMAL:+VERS-DTLS1.0:+ANON-DH:+ANON-ECDH", NULL); if (ret < 0) { fail("server: priority set failed (%s)\n\n", gnutls_strerror(ret)); @@ -335,8 +332,7 @@ static void server(int fd) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -349,13 +345,13 @@ static void server(int fd) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { ret = gnutls_record_recv(session, buf, sizeof(buf)); - } while (ret > 0 || ret == GNUTLS_E_AGAIN - || ret == GNUTLS_E_INTERRUPTED); + } while (ret > 0 || ret == GNUTLS_E_AGAIN || + ret == GNUTLS_E_INTERRUPTED); if (ret < 0) { fail("error: %s\n", gnutls_strerror(ret)); @@ -414,4 +410,4 @@ void doit(void) start(); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/key-material-set-dtls.c b/tests/key-material-set-dtls.c index b6bafbf816..058fed5481 100644 --- a/tests/key-material-set-dtls.c +++ b/tests/key-material-set-dtls.c @@ -19,7 +19,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -34,18 +34,18 @@ int main(int argc, char **argv) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" static void terminate(void); @@ -104,9 +104,10 @@ static void client(int fd) gnutls_record_set_timeout(session, 10000); /* Use default priorities */ - ret = gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS1.0:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-NULL:+ANON-DH:+ANON-ECDH:+CURVE-ALL", - &err); + ret = gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS1.0:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-NULL:+ANON-DH:+ANON-ECDH:+CURVE-ALL", + &err); if (ret < 0) { fail("client: priority set failed (%s): %s\n", gnutls_strerror(ret), err); @@ -123,8 +124,7 @@ static void client(int fd) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed: %s\n", strerror(ret)); @@ -136,8 +136,8 @@ static void client(int fd) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); ret = gnutls_cipher_get(session); if (ret != GNUTLS_CIPHER_AES_128_CBC) { @@ -154,16 +154,16 @@ static void client(int fd) } /* save state */ - ret = - gnutls_record_get_state(session, 0, NULL, NULL, NULL, wseq_number); + ret = gnutls_record_get_state(session, 0, NULL, NULL, NULL, + wseq_number); if (ret < 0) { fprintf(stderr, "error in %d\n", __LINE__); gnutls_perror(ret); exit(1); } - ret = - gnutls_record_get_state(session, 1, NULL, NULL, NULL, rseq_number); + ret = gnutls_record_get_state(session, 1, NULL, NULL, NULL, + rseq_number); if (ret < 0) { fprintf(stderr, "error in %d\n", __LINE__); gnutls_perror(ret); @@ -258,9 +258,8 @@ static void server(int fd) /* avoid calling all the priority functions, since the defaults * are adequate. */ - ret = gnutls_priority_set_direct(session, - "NORMAL:+VERS-DTLS1.0:+ANON-DH:+ANON-ECDH", - NULL); + ret = gnutls_priority_set_direct( + session, "NORMAL:+VERS-DTLS1.0:+ANON-DH:+ANON-ECDH", NULL); if (ret < 0) { fail("server: priority set failed (%s)\n\n", gnutls_strerror(ret)); @@ -273,8 +272,7 @@ static void server(int fd) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -287,18 +285,18 @@ static void server(int fd) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* save state */ - ret = - gnutls_record_get_state(session, 0, NULL, NULL, NULL, wseq_number); + ret = gnutls_record_get_state(session, 0, NULL, NULL, NULL, + wseq_number); if (ret < 0) { fail("error in %d\n", __LINE__); } - ret = - gnutls_record_get_state(session, 1, NULL, NULL, NULL, rseq_number); + ret = gnutls_record_get_state(session, 1, NULL, NULL, NULL, + rseq_number); if (ret < 0) { fail("error in %d\n", __LINE__); } @@ -396,4 +394,4 @@ void doit(void) start(); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/key-openssl.c b/tests/key-openssl.c index 2120a7d456..5e51b91dbd 100644 --- a/tests/key-openssl.c +++ b/tests/key-openssl.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -38,87 +38,87 @@ static void tls_log_func(int level, const char *str) } static char plain_key[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIEpQIBAAKCAQEA2d3Qs4fYDkzojm9nbaz7vdX2GIAv3stAAmI0MWq7uxWcJ7lz\n" - "4UCvSh7CFWESMqOPcIymXXZB3rdrG6RQAHhE2YfFFFi0W/5rqcmkiTMnGmAjYy2Q\n" - "lCU87b18SQgjX27YLygvlbtZrveCgT2rbJYL57Gph+wIi+cJsEUanR/2fd12hL7k\n" - "RumZNEofamTHQm6Bn47ZhhCdVfs+QkfiMh+LHJM3fFiVusAUhMIJYhml53O+cSrR\n" - "VgWVdp4za/FdUzmDnSxG4heMHblRMS+UyqtssDZEaVHytiNQXFkuQ/U3v0E+2knR\n" - "NPKy+s7ZmSISC0qzDn6C5yeJc17Kc91y5RLoZwIDAQABAoIBAQCRXAu5HPOsZufq\n" - "0K2DYZz9BdqSckR+M8HbVUZZiksDAeIUJwoHyi6qF2eK+B86JiK4Bz+gsBw2ys3t\n" - "vW2bQqM9N/boIl8D2fZfbCgZWkXGtUonC+mgzk+el4Rq/cEMFVqr6/YDwuKNeJpc\n" - "PJc5dcsvpTvlcjgpj9bJAvJEz2SYiIUpvtG4WNMGGapVZZPDvWn4/isY+75T5oDf\n" - "1X5jG0lN9uoUjcuGuThN7gxjwlRkcvEOPHjXc6rxfrWIDdiz/91V46PwpqVDpRrg\n" - "ig6U7+ckS0Oy2v32x0DaDhwAfDJ2RNc9az6Z+11lmY3LPkjG/p8Klcmgvt4/lwkD\n" - "OYRC5QGRAoGBAPFdud6nmVt9h1DL0o4R6snm6P3K81Ds765VWVmpzJkK3+bwe4PQ\n" - "GQQ0I0zN4hXkDMwHETS+EVWllqkK/d4dsE3volYtyTti8zthIATlgSEJ81x/ChAQ\n" - "vvXxgx+zPUnb1mUwy+X+6urTHe4bxN2ypg6ROIUmT+Hx1ITG40LRRiPTAoGBAOcT\n" - "WR8DTrj42xbxAUpz9vxJ15ZMwuIpk3ShE6+CWqvaXHF22Ju4WFwRNlW2zVLH6UMt\n" - "nNfOzyDoryoiu0+0mg0wSmgdJbtCSHoI2GeiAnjGn5i8flQlPQ8bdwwmU6g6I/EU\n" - "QRbGK/2XLmlrGN52gVy9UX0NsAA5fEOsAJiFj1CdAoGBAN9i3nbq6O2bNVSa/8mL\n" - "XaD1vGe/oQgh8gaIaYSpuXlfbjCAG+C4BZ81XgJkfj3CbfGbDNqimsqI0fKsAJ/F\n" - "HHpVMgrOn3L+Np2bW5YMj0Fzwy+1SCvsQ8C+gJwjOLMV6syGp/+6udMSB55rRv3k\n" - "rPnIf+YDumUke4tTw9wAcgkPAoGASHMkiji7QfuklbjSsslRMyDj21gN8mMevH6U\n" - "cX7pduBsA5dDqu9NpPAwnQdHsSDE3i868d8BykuqQAfLut3hPylY6vPYlLHfj4Oe\n" - "dj+xjrSX7YeMBE34qvfth32s1R4FjtzO25keyc/Q2XSew4FcZftlxVO5Txi3AXC4\n" - "bxnRKXECgYEAva+og7/rK+ZjboJVNxhFrwHp9bXhz4tzrUaWNvJD2vKJ5ZcThHcX\n" - "zCig8W7eXHLPLDhi9aWZ3kUZ1RLhrFc/6dujtVtU9z2w1tmn1I+4Zi6D6L4DzKdg\n" - "nMRLFoXufs/qoaJTqa8sQvKa+ceJAF04+gGtw617cuaZdZ3SYRLR2dk=\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIIEpQIBAAKCAQEA2d3Qs4fYDkzojm9nbaz7vdX2GIAv3stAAmI0MWq7uxWcJ7lz\n" + "4UCvSh7CFWESMqOPcIymXXZB3rdrG6RQAHhE2YfFFFi0W/5rqcmkiTMnGmAjYy2Q\n" + "lCU87b18SQgjX27YLygvlbtZrveCgT2rbJYL57Gph+wIi+cJsEUanR/2fd12hL7k\n" + "RumZNEofamTHQm6Bn47ZhhCdVfs+QkfiMh+LHJM3fFiVusAUhMIJYhml53O+cSrR\n" + "VgWVdp4za/FdUzmDnSxG4heMHblRMS+UyqtssDZEaVHytiNQXFkuQ/U3v0E+2knR\n" + "NPKy+s7ZmSISC0qzDn6C5yeJc17Kc91y5RLoZwIDAQABAoIBAQCRXAu5HPOsZufq\n" + "0K2DYZz9BdqSckR+M8HbVUZZiksDAeIUJwoHyi6qF2eK+B86JiK4Bz+gsBw2ys3t\n" + "vW2bQqM9N/boIl8D2fZfbCgZWkXGtUonC+mgzk+el4Rq/cEMFVqr6/YDwuKNeJpc\n" + "PJc5dcsvpTvlcjgpj9bJAvJEz2SYiIUpvtG4WNMGGapVZZPDvWn4/isY+75T5oDf\n" + "1X5jG0lN9uoUjcuGuThN7gxjwlRkcvEOPHjXc6rxfrWIDdiz/91V46PwpqVDpRrg\n" + "ig6U7+ckS0Oy2v32x0DaDhwAfDJ2RNc9az6Z+11lmY3LPkjG/p8Klcmgvt4/lwkD\n" + "OYRC5QGRAoGBAPFdud6nmVt9h1DL0o4R6snm6P3K81Ds765VWVmpzJkK3+bwe4PQ\n" + "GQQ0I0zN4hXkDMwHETS+EVWllqkK/d4dsE3volYtyTti8zthIATlgSEJ81x/ChAQ\n" + "vvXxgx+zPUnb1mUwy+X+6urTHe4bxN2ypg6ROIUmT+Hx1ITG40LRRiPTAoGBAOcT\n" + "WR8DTrj42xbxAUpz9vxJ15ZMwuIpk3ShE6+CWqvaXHF22Ju4WFwRNlW2zVLH6UMt\n" + "nNfOzyDoryoiu0+0mg0wSmgdJbtCSHoI2GeiAnjGn5i8flQlPQ8bdwwmU6g6I/EU\n" + "QRbGK/2XLmlrGN52gVy9UX0NsAA5fEOsAJiFj1CdAoGBAN9i3nbq6O2bNVSa/8mL\n" + "XaD1vGe/oQgh8gaIaYSpuXlfbjCAG+C4BZ81XgJkfj3CbfGbDNqimsqI0fKsAJ/F\n" + "HHpVMgrOn3L+Np2bW5YMj0Fzwy+1SCvsQ8C+gJwjOLMV6syGp/+6udMSB55rRv3k\n" + "rPnIf+YDumUke4tTw9wAcgkPAoGASHMkiji7QfuklbjSsslRMyDj21gN8mMevH6U\n" + "cX7pduBsA5dDqu9NpPAwnQdHsSDE3i868d8BykuqQAfLut3hPylY6vPYlLHfj4Oe\n" + "dj+xjrSX7YeMBE34qvfth32s1R4FjtzO25keyc/Q2XSew4FcZftlxVO5Txi3AXC4\n" + "bxnRKXECgYEAva+og7/rK+ZjboJVNxhFrwHp9bXhz4tzrUaWNvJD2vKJ5ZcThHcX\n" + "zCig8W7eXHLPLDhi9aWZ3kUZ1RLhrFc/6dujtVtU9z2w1tmn1I+4Zi6D6L4DzKdg\n" + "nMRLFoXufs/qoaJTqa8sQvKa+ceJAF04+gGtw617cuaZdZ3SYRLR2dk=\n" + "-----END RSA PRIVATE KEY-----\n"; const char key1[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "Proc-Type: 4,ENCRYPTED\n" - "DEK-Info: DES-EDE3-CBC,82B2F7684A1713F8\n" - "\n" - "1zzOuu89dfFc2UkFCtSJBsBeEFxV8wE84OSxoWu4aYkPhl1LR08BchaTbjeLTP0b\n" - "t961vVpva0ekJkwGDEgmqlGjmhJq9y2sJfq7IeYa8OdTilfGrG1xeJ1QGBi6SCfR\n" - "s/PhkMxwGBtrZ2Z7bEcLT5dQKmKRqsthnClQggmngvk7zX7bPk0hKQKvf+FDxt6x\n" - "hzEaF3k9juU6vAVVSakrZ4QDqk9MUuTGHx0ksTDcC4EESS0l3Ybuum/rAzR4lQKR\n" - "4OLmAeYBDl+l/PSMllfd5x/z1YXYoiAbkpT4ix0lyZJgHrvrYIeUtJk2ODiMHezL\n" - "9BbK7EobtOGmrDLUNVX5BpdaExkWMGkioqzs2QqD/VkKu8RcNSsHVGqkdWKuhzXo\n" - "wcczQ+RiHckN2uy/zApubEWZNLPeDQ499kaF+QdZ+h4RM6E1r1Gu+A==\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "Proc-Type: 4,ENCRYPTED\n" + "DEK-Info: DES-EDE3-CBC,82B2F7684A1713F8\n" + "\n" + "1zzOuu89dfFc2UkFCtSJBsBeEFxV8wE84OSxoWu4aYkPhl1LR08BchaTbjeLTP0b\n" + "t961vVpva0ekJkwGDEgmqlGjmhJq9y2sJfq7IeYa8OdTilfGrG1xeJ1QGBi6SCfR\n" + "s/PhkMxwGBtrZ2Z7bEcLT5dQKmKRqsthnClQggmngvk7zX7bPk0hKQKvf+FDxt6x\n" + "hzEaF3k9juU6vAVVSakrZ4QDqk9MUuTGHx0ksTDcC4EESS0l3Ybuum/rAzR4lQKR\n" + "4OLmAeYBDl+l/PSMllfd5x/z1YXYoiAbkpT4ix0lyZJgHrvrYIeUtJk2ODiMHezL\n" + "9BbK7EobtOGmrDLUNVX5BpdaExkWMGkioqzs2QqD/VkKu8RcNSsHVGqkdWKuhzXo\n" + "wcczQ+RiHckN2uy/zApubEWZNLPeDQ499kaF+QdZ+h4RM6E1r1Gu+A==\n" + "-----END RSA PRIVATE KEY-----\n"; const char key2[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "Proc-Type: 4,ENCRYPTED\n" - "DEK-Info: AES-128-CBC,2A57FF97B701B3F760145D7446929481\n" - "\n" - "mGAPhSw48wZBnkHOhfMDg8yL2IBgMuTmeKE4xoHi7T6isHBNfkqMd0iJ+DJP/OKb\n" - "t+7lkKjj/xQ7w/bOBvBxlfRe4MW6+ejCdAFD9XSolW6WN6CEJPMI4UtmOK5inqcC\n" - "8l2l54f/VGrVN9uavU3KlXCjrd3Jp9B0Mu4Zh/UU4+EWs9rJAZfLIn+vHZ3OHetx\n" - "g74LdV7nC7lt/fjxc1caNIfgHs40dUt9FVrnJvAtkcNMtcjX/D+L8ZrLgQzIWFcs\n" - "WAbUZj7Me22mCli3RPET7Je37K59IzfWgbWFCGaNu3X02g5xtCfdcn/Uqy9eofH0\n" - "YjKRhpgXPeGJCkoRqDeUHQNPpVP5HrzDZMVK3E4DC03C8qvgsYvuwYt3KkbG2fuA\n" - "F3bDyqlxSOm7uxF/K3YzI44v8/D8GGnLBTpN+ANBdiY=\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "Proc-Type: 4,ENCRYPTED\n" + "DEK-Info: AES-128-CBC,2A57FF97B701B3F760145D7446929481\n" + "\n" + "mGAPhSw48wZBnkHOhfMDg8yL2IBgMuTmeKE4xoHi7T6isHBNfkqMd0iJ+DJP/OKb\n" + "t+7lkKjj/xQ7w/bOBvBxlfRe4MW6+ejCdAFD9XSolW6WN6CEJPMI4UtmOK5inqcC\n" + "8l2l54f/VGrVN9uavU3KlXCjrd3Jp9B0Mu4Zh/UU4+EWs9rJAZfLIn+vHZ3OHetx\n" + "g74LdV7nC7lt/fjxc1caNIfgHs40dUt9FVrnJvAtkcNMtcjX/D+L8ZrLgQzIWFcs\n" + "WAbUZj7Me22mCli3RPET7Je37K59IzfWgbWFCGaNu3X02g5xtCfdcn/Uqy9eofH0\n" + "YjKRhpgXPeGJCkoRqDeUHQNPpVP5HrzDZMVK3E4DC03C8qvgsYvuwYt3KkbG2fuA\n" + "F3bDyqlxSOm7uxF/K3YzI44v8/D8GGnLBTpN+ANBdiY=\n" + "-----END RSA PRIVATE KEY-----\n"; const char key_lowercase_iv[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "Proc-Type: 4,ENCRYPTED\n" - "DEK-Info: AES-256-CBC,c1967f64f92d5c4ef302537b7b50b98f\n" - "\n" - "iRHj/BbuyHodcEt/cPduzhxOUCwe+o77j7DOepAb7rasr7uRDjFcB2DeB4yvog5q\n" - "M46pB5NVqegJCTcFht/90OKXprt2m04ntsCEXXfJ/NQIYP3NsLM+aNiWUL1cxPiZ\n" - "6fWp6uaR165F+T5vBRmo6dS3wowHeiHZMiSGuM6CbW+AO5R31og9cUuP2e02GPbq\n" - "ZCGyU8RnA6c1caCql/T/5WOIjyaFpJhigBnQc6EoVi3C6XULBQ1Ut9A8gw3gVWda\n" - "NBF8sHfwXyKuPhWLZwOM7ZewIOvnesezwW7Tpf2LfMBIe1YQixdsBgM1RvhEN2bl\n" - "mYR1L1zfr94z/fWDztq1MYtCBPUJcgrjNLb80xv1qq5hZorTM9gjAeLfT4x9I6/m\n" - "57ohSPIR3bXgRZuefjxBhQYthUPcZ+qktrbURcvHNLs=\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "Proc-Type: 4,ENCRYPTED\n" + "DEK-Info: AES-256-CBC,c1967f64f92d5c4ef302537b7b50b98f\n" + "\n" + "iRHj/BbuyHodcEt/cPduzhxOUCwe+o77j7DOepAb7rasr7uRDjFcB2DeB4yvog5q\n" + "M46pB5NVqegJCTcFht/90OKXprt2m04ntsCEXXfJ/NQIYP3NsLM+aNiWUL1cxPiZ\n" + "6fWp6uaR165F+T5vBRmo6dS3wowHeiHZMiSGuM6CbW+AO5R31og9cUuP2e02GPbq\n" + "ZCGyU8RnA6c1caCql/T/5WOIjyaFpJhigBnQc6EoVi3C6XULBQ1Ut9A8gw3gVWda\n" + "NBF8sHfwXyKuPhWLZwOM7ZewIOvnesezwW7Tpf2LfMBIe1YQixdsBgM1RvhEN2bl\n" + "mYR1L1zfr94z/fWDztq1MYtCBPUJcgrjNLb80xv1qq5hZorTM9gjAeLfT4x9I6/m\n" + "57ohSPIR3bXgRZuefjxBhQYthUPcZ+qktrbURcvHNLs=\n" + "-----END RSA PRIVATE KEY-----\n"; static int good_pwd_cb(void *userdata, int attempt, const char *token_url, - const char *token_label, unsigned int flags, - char *pin, size_t pin_max) + const char *token_label, unsigned int flags, char *pin, + size_t pin_max) { snprintf(pin, pin_max, "%s", "123456"); return 0; } static int bad_pwd_cb(void *userdata, int attempt, const char *token_url, - const char *token_label, unsigned int flags, - char *pin, size_t pin_max) + const char *token_label, unsigned int flags, char *pin, + size_t pin_max) { snprintf(pin, pin_max, "%s", "bad"); return 0; @@ -174,9 +174,8 @@ void doit(void) key.data = (void *)key1; key.size = sizeof(key1); - ret = - gnutls_x509_privkey_import2(pkey, &key, GNUTLS_X509_FMT_PEM, - "123456", 0); + ret = gnutls_x509_privkey_import2(pkey, &key, GNUTLS_X509_FMT_PEM, + "123456", 0); if (ret < 0) { fail("gnutls_x509_privkey_import2: %s\n", gnutls_strerror(ret)); } @@ -189,9 +188,8 @@ void doit(void) key.data = (void *)plain_key; key.size = sizeof(plain_key); - ret = - gnutls_x509_privkey_import2(pkey, &key, GNUTLS_X509_FMT_PEM, - "123456", 0); + ret = gnutls_x509_privkey_import2(pkey, &key, GNUTLS_X509_FMT_PEM, + "123456", 0); if (ret < 0) { fail("gnutls_x509_privkey_import2: %s\n", gnutls_strerror(ret)); } @@ -204,8 +202,8 @@ void doit(void) key.data = (void *)key1; key.size = sizeof(key1); - ret = gnutls_x509_privkey_import2(pkey, &key, GNUTLS_X509_FMT_PEM, - NULL, 0); + ret = gnutls_x509_privkey_import2(pkey, &key, GNUTLS_X509_FMT_PEM, NULL, + 0); if (ret != GNUTLS_E_DECRYPTION_FAILED) { fail("gnutls_x509_privkey_import2 (expect decrypt fail): %s\n", gnutls_strerror(ret)); @@ -219,9 +217,8 @@ void doit(void) key.data = (void *)key_lowercase_iv; key.size = sizeof(key_lowercase_iv); - ret = - gnutls_x509_privkey_import2(pkey, &key, GNUTLS_X509_FMT_PEM, - "123456", 0); + ret = gnutls_x509_privkey_import2(pkey, &key, GNUTLS_X509_FMT_PEM, + "123456", 0); if (ret < 0) { fail("gnutls_x509_privkey_import2: %s\n", gnutls_strerror(ret)); } @@ -260,8 +257,8 @@ void doit(void) gnutls_x509_privkey_set_pin_function(pkey, good_pwd_cb, NULL); key.data = (void *)key1; key.size = sizeof(key1); - ret = gnutls_x509_privkey_import2(pkey, &key, GNUTLS_X509_FMT_PEM, - NULL, 0); + ret = gnutls_x509_privkey_import2(pkey, &key, GNUTLS_X509_FMT_PEM, NULL, + 0); if (ret < 0) { fail("gnutls_x509_privkey_import2 (good pin): %s\n", gnutls_strerror(ret)); @@ -276,8 +273,8 @@ void doit(void) gnutls_x509_privkey_set_pin_function(pkey, bad_pwd_cb, NULL); key.data = (void *)key1; key.size = sizeof(key1); - ret = gnutls_x509_privkey_import2(pkey, &key, GNUTLS_X509_FMT_PEM, - NULL, 0); + ret = gnutls_x509_privkey_import2(pkey, &key, GNUTLS_X509_FMT_PEM, NULL, + 0); if (ret != GNUTLS_E_DECRYPTION_FAILED) { fail("gnutls_x509_privkey_import2 (bad pin): %s\n", gnutls_strerror(ret)); diff --git a/tests/key-usage-ecdhe-rsa.c b/tests/key-usage-ecdhe-rsa.c index bb43b6abcd..140dd7bb30 100644 --- a/tests/key-usage-ecdhe-rsa.c +++ b/tests/key-usage-ecdhe-rsa.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -45,66 +45,64 @@ static void tls_log_func(int level, const char *str) } static unsigned char encryption_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIDoTCCAgmgAwIBAgIIWD7Wvx22i+gwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" - "AxMEQ0EtMzAgFw0xNjExMzAxMzQwMTZaGA85OTk5MTIzMTIzNTk1OVowADCCASIw\n" - "DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM3XiAz9NK/9K4mciW5cioUfOrH8\n" - "W5QlnzgODc5O9vKypx+2Y42BmVArdTNox9ypyQHs4Tf1RVs8MkKLLRPVPvFTTwsB\n" - "sYYR0WwtjLaUAG6uEQOkQ1tKnkPveR+7Yaz/WurUTFH/6tt9PLkjUa2MFClJfQyA\n" - "+Ip0DOChfZVWDmKEsGxf0+HDrUwI6Yrue6Xjq4MtQ644vxYuIZrEU53bExNrZ7y9\n" - "fvwsYa86eNBO3lEierVnusFqvngsXzuhHMTh7Dd1kdewWnNX9cFyXFPU1oxpEqgD\n" - "9b/WOELpt4/Vyi6GAKthroTADOrgqIS4yVv/IwTE+I75820inSJBXwpVi9sCAwEA\n" - "AaOBjTCBijAMBgNVHRMBAf8EAjAAMBQGA1UdEQQNMAuCCWxvY2FsaG9zdDATBgNV\n" - "HSUEDDAKBggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDByAAMB0GA1UdDgQWBBThAci6\n" - "ST9MfTP8KV4xkB0p2hgsyjAfBgNVHSMEGDAWgBT5qIYZY7akFBNgdg8BmjU27/G0\n" - "rzANBgkqhkiG9w0BAQsFAAOCAYEAQSaXhGYE0VvpFidR+txfhRXZhoIyO6bCxrOE\n" - "WFTdglZ3XE9/avlONa18hAVmMqBXJFKiTIMou2qQu7dJ80dMphQPFSOgVTwNP5yD\n" - "MM0iJHSlcBweukA3+Jfo3lbGSYOGh3D157XwPQ5+dKFSgzFWdQApDAZ2Y5wg1mlD\n" - "riapOliMXEBHuKaBEAGYHLNQEUoutc/8lpv7FrE8YPp2J5f/kBlL21ygHNCNbRQZ\n" - "XTTajRgY5dg0R7CPM1wkyk/K1Lke2BgteF4FWlKTzh3b42swWJAlW9oDcqA8xRHu\n" - "cvU+7PKs3SpXky6dGC+rgWMfV99z00gNICdZJrqTRTd6JvMa+Q8QCChHtyE40LWe\n" - "MXFfeQW2kWD+q2CUAiY5K/fk4p74w4TtHuln3/+IZd+fwMfq9eD9524n+61AoTvm\n" - "FM9vezUEwybmHVTx+390aiY2SaAxl4BCopauOgpBTnj8Rcd5dMO3qEW4+QaXKMlU\n" - "wIEPoaEfCDQ/XXy0bM5zFUFWgTNX\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIDoTCCAgmgAwIBAgIIWD7Wvx22i+gwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" + "AxMEQ0EtMzAgFw0xNjExMzAxMzQwMTZaGA85OTk5MTIzMTIzNTk1OVowADCCASIw\n" + "DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM3XiAz9NK/9K4mciW5cioUfOrH8\n" + "W5QlnzgODc5O9vKypx+2Y42BmVArdTNox9ypyQHs4Tf1RVs8MkKLLRPVPvFTTwsB\n" + "sYYR0WwtjLaUAG6uEQOkQ1tKnkPveR+7Yaz/WurUTFH/6tt9PLkjUa2MFClJfQyA\n" + "+Ip0DOChfZVWDmKEsGxf0+HDrUwI6Yrue6Xjq4MtQ644vxYuIZrEU53bExNrZ7y9\n" + "fvwsYa86eNBO3lEierVnusFqvngsXzuhHMTh7Dd1kdewWnNX9cFyXFPU1oxpEqgD\n" + "9b/WOELpt4/Vyi6GAKthroTADOrgqIS4yVv/IwTE+I75820inSJBXwpVi9sCAwEA\n" + "AaOBjTCBijAMBgNVHRMBAf8EAjAAMBQGA1UdEQQNMAuCCWxvY2FsaG9zdDATBgNV\n" + "HSUEDDAKBggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDByAAMB0GA1UdDgQWBBThAci6\n" + "ST9MfTP8KV4xkB0p2hgsyjAfBgNVHSMEGDAWgBT5qIYZY7akFBNgdg8BmjU27/G0\n" + "rzANBgkqhkiG9w0BAQsFAAOCAYEAQSaXhGYE0VvpFidR+txfhRXZhoIyO6bCxrOE\n" + "WFTdglZ3XE9/avlONa18hAVmMqBXJFKiTIMou2qQu7dJ80dMphQPFSOgVTwNP5yD\n" + "MM0iJHSlcBweukA3+Jfo3lbGSYOGh3D157XwPQ5+dKFSgzFWdQApDAZ2Y5wg1mlD\n" + "riapOliMXEBHuKaBEAGYHLNQEUoutc/8lpv7FrE8YPp2J5f/kBlL21ygHNCNbRQZ\n" + "XTTajRgY5dg0R7CPM1wkyk/K1Lke2BgteF4FWlKTzh3b42swWJAlW9oDcqA8xRHu\n" + "cvU+7PKs3SpXky6dGC+rgWMfV99z00gNICdZJrqTRTd6JvMa+Q8QCChHtyE40LWe\n" + "MXFfeQW2kWD+q2CUAiY5K/fk4p74w4TtHuln3/+IZd+fwMfq9eD9524n+61AoTvm\n" + "FM9vezUEwybmHVTx+390aiY2SaAxl4BCopauOgpBTnj8Rcd5dMO3qEW4+QaXKMlU\n" + "wIEPoaEfCDQ/XXy0bM5zFUFWgTNX\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t enc_cert = { encryption_cert_pem, - sizeof(encryption_cert_pem) - 1 -}; + sizeof(encryption_cert_pem) - 1 }; static unsigned char encryption_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIEpgIBAAKCAQEAzdeIDP00r/0riZyJblyKhR86sfxblCWfOA4Nzk728rKnH7Zj\n" - "jYGZUCt1M2jH3KnJAezhN/VFWzwyQostE9U+8VNPCwGxhhHRbC2MtpQAbq4RA6RD\n" - "W0qeQ+95H7thrP9a6tRMUf/q2308uSNRrYwUKUl9DID4inQM4KF9lVYOYoSwbF/T\n" - "4cOtTAjpiu57peOrgy1Drji/Fi4hmsRTndsTE2tnvL1+/Cxhrzp40E7eUSJ6tWe6\n" - "wWq+eCxfO6EcxOHsN3WR17Bac1f1wXJcU9TWjGkSqAP1v9Y4Qum3j9XKLoYAq2Gu\n" - "hMAM6uCohLjJW/8jBMT4jvnzbSKdIkFfClWL2wIDAQABAoIBAQC70D11xI6PSUux\n" - "St/mj49gOYdfoOeaO92T0tbr+AbAmRt+Bve8xJQznwNX/fHmOBCMriss2KEIxtsA\n" - "9mYR44+Dt8S2QTxOHPHdZ44thMsEMdSaYwWGRYY0bEszFdDgfTnibASbCQusaw+9\n" - "ySkcVWSL616qyv57rbmWOCMS4CtN3Sk982mtzSdCkJ8tiq6n3C60QPom/zo5TBS5\n" - "vaJ70NRnj7Zuq9VPwNKOwhkYW9OUZsAmdwLqenmsLfQEnZnu/ielJ10LI8SrQG5x\n" - "lANdYRD07W5lpwImJCELUqK5X2iw5ii6/4vl/Si/WcL4pRFpuCOCp1B8SDuSkOKS\n" - "zebU/Z3hAoGBAPvIN/WlSQ+Iy5TNGsnV5B96Xvl8YrXVInJZ7z4MOrPgyvN8mQXX\n" - "sQ6D01H2tba3mWt0S16lWwBsOll5LDBj5kcvp+4702xUxoOap79wXPS1Ibi+uXlO\n" - "5c7V3pa7r2nw7YQL+ehYpgBdaVaYdAnHKn0Mo7zMd+yjNnQEfEcDwNFxAoGBANFK\n" - "S7y327IEms1wdn0hb1r812PKsn464j4xbnfnrAYzE2cttgLSYsRRYNMo++ZS9Y3v\n" - "3MZGmgOsKRgpbblxhUxNY5pKeHcXKUy1YtaGJVpeQwI8u69Th9tUDS2/yt7Op4/0\n" - "p5115DTEfmvKzF//PH7GtX5Ox/JoNSHaPcORT0wLAoGBANXYEZ8zCMCG4NG6+hue\n" - "7KfHmU6wVG43XZBdzhKW9Gy+aeEvXBBYR2saj6q3rVJI0acwGKuEKaxMP6qqfduD\n" - "nZusYCa47TK/NfOksQCpgGneRYvRgVoEpq5reyfutGd4V2KlgVXTpPn+XG9OAJAl\n" - "dnLK/25lAx4a6S7UeHEgQO4hAoGBAKyfch6jK3MGd0RxuVl2RWmv2Fw36MdS/B6+\n" - "GNaPYITwhdV5j4F+U/aHBKzGRhbwYBcFO3zS6N+UlYSXTyhAqOiJgFjXicr4cJkT\n" - "lwVIOfDyhKSIwWlYJVtTVVdhtQvXOb/z1Hh8r5CSbY+tAqs/U39hmHsosaSQLRrR\n" - "7lWrOdOHAoGBAIndZqW8HHfUk5Y6ZlbDzz/GRi81nrU3p2Ii1M17PLFyFhKZcPyM\n" - "kJDhqStyWEQKN7Xig0uxGvGAFYTBsILmoS/XAFnRpfcmNkF7hXRGHuHFRopZuIic\n" - "gZ9oloj50/wHdTSU/MExRExhC7DUom2DzihUz3a5uqWOK/SnpfNeIJPs\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIIEpgIBAAKCAQEAzdeIDP00r/0riZyJblyKhR86sfxblCWfOA4Nzk728rKnH7Zj\n" + "jYGZUCt1M2jH3KnJAezhN/VFWzwyQostE9U+8VNPCwGxhhHRbC2MtpQAbq4RA6RD\n" + "W0qeQ+95H7thrP9a6tRMUf/q2308uSNRrYwUKUl9DID4inQM4KF9lVYOYoSwbF/T\n" + "4cOtTAjpiu57peOrgy1Drji/Fi4hmsRTndsTE2tnvL1+/Cxhrzp40E7eUSJ6tWe6\n" + "wWq+eCxfO6EcxOHsN3WR17Bac1f1wXJcU9TWjGkSqAP1v9Y4Qum3j9XKLoYAq2Gu\n" + "hMAM6uCohLjJW/8jBMT4jvnzbSKdIkFfClWL2wIDAQABAoIBAQC70D11xI6PSUux\n" + "St/mj49gOYdfoOeaO92T0tbr+AbAmRt+Bve8xJQznwNX/fHmOBCMriss2KEIxtsA\n" + "9mYR44+Dt8S2QTxOHPHdZ44thMsEMdSaYwWGRYY0bEszFdDgfTnibASbCQusaw+9\n" + "ySkcVWSL616qyv57rbmWOCMS4CtN3Sk982mtzSdCkJ8tiq6n3C60QPom/zo5TBS5\n" + "vaJ70NRnj7Zuq9VPwNKOwhkYW9OUZsAmdwLqenmsLfQEnZnu/ielJ10LI8SrQG5x\n" + "lANdYRD07W5lpwImJCELUqK5X2iw5ii6/4vl/Si/WcL4pRFpuCOCp1B8SDuSkOKS\n" + "zebU/Z3hAoGBAPvIN/WlSQ+Iy5TNGsnV5B96Xvl8YrXVInJZ7z4MOrPgyvN8mQXX\n" + "sQ6D01H2tba3mWt0S16lWwBsOll5LDBj5kcvp+4702xUxoOap79wXPS1Ibi+uXlO\n" + "5c7V3pa7r2nw7YQL+ehYpgBdaVaYdAnHKn0Mo7zMd+yjNnQEfEcDwNFxAoGBANFK\n" + "S7y327IEms1wdn0hb1r812PKsn464j4xbnfnrAYzE2cttgLSYsRRYNMo++ZS9Y3v\n" + "3MZGmgOsKRgpbblxhUxNY5pKeHcXKUy1YtaGJVpeQwI8u69Th9tUDS2/yt7Op4/0\n" + "p5115DTEfmvKzF//PH7GtX5Ox/JoNSHaPcORT0wLAoGBANXYEZ8zCMCG4NG6+hue\n" + "7KfHmU6wVG43XZBdzhKW9Gy+aeEvXBBYR2saj6q3rVJI0acwGKuEKaxMP6qqfduD\n" + "nZusYCa47TK/NfOksQCpgGneRYvRgVoEpq5reyfutGd4V2KlgVXTpPn+XG9OAJAl\n" + "dnLK/25lAx4a6S7UeHEgQO4hAoGBAKyfch6jK3MGd0RxuVl2RWmv2Fw36MdS/B6+\n" + "GNaPYITwhdV5j4F+U/aHBKzGRhbwYBcFO3zS6N+UlYSXTyhAqOiJgFjXicr4cJkT\n" + "lwVIOfDyhKSIwWlYJVtTVVdhtQvXOb/z1Hh8r5CSbY+tAqs/U39hmHsosaSQLRrR\n" + "7lWrOdOHAoGBAIndZqW8HHfUk5Y6ZlbDzz/GRi81nrU3p2Ii1M17PLFyFhKZcPyM\n" + "kJDhqStyWEQKN7Xig0uxGvGAFYTBsILmoS/XAFnRpfcmNkF7hXRGHuHFRopZuIic\n" + "gZ9oloj50/wHdTSU/MExRExhC7DUom2DzihUz3a5uqWOK/SnpfNeIJPs\n" + "-----END RSA PRIVATE KEY-----\n"; const gnutls_datum_t enc_key = { encryption_key_pem, - sizeof(encryption_key_pem) - 1 -}; + sizeof(encryption_key_pem) - 1 }; -static -void server_check(void) +static void server_check(void) { int ret; /* Server stuff. */ @@ -124,15 +122,14 @@ void server_check(void) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &enc_cert, &enc_key, + gnutls_certificate_set_x509_key_mem(serverx509cred, &enc_cert, &enc_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); - gnutls_priority_set_direct(server, - "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2", - NULL); + gnutls_priority_set_direct( + server, "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2", + NULL); gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); gnutls_transport_set_ptr(server, server); @@ -142,9 +139,8 @@ void server_check(void) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -157,9 +153,8 @@ void server_check(void) if (ret < 0) exit(1); - gnutls_priority_set_direct(client, - "NORMAL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2", - NULL); + gnutls_priority_set_direct( + client, "NORMAL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2", NULL); gnutls_transport_set_push_function(client, client_push); gnutls_transport_set_pull_function(client, client_pull); gnutls_transport_set_ptr(client, client); @@ -182,12 +177,11 @@ void server_check(void) static gnutls_privkey_t g_pkey = NULL; static gnutls_pcert_st *g_pcert = NULL; -static int -cert_callback(gnutls_session_t session, - const gnutls_datum_t * req_ca_rdn, int nreqs, - const gnutls_pk_algorithm_t * sign_algos, - int sign_algos_length, gnutls_pcert_st ** pcert, - unsigned int *pcert_length, gnutls_privkey_t * pkey) +static int cert_callback(gnutls_session_t session, + const gnutls_datum_t *req_ca_rdn, int nreqs, + const gnutls_pk_algorithm_t *sign_algos, + int sign_algos_length, gnutls_pcert_st **pcert, + unsigned int *pcert_length, gnutls_privkey_t *pkey) { int ret; gnutls_pcert_st *p; @@ -198,9 +192,8 @@ cert_callback(gnutls_session_t session, if (p == NULL) return -1; - ret = - gnutls_pcert_import_x509_raw(p, &enc_cert, - GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_pcert_import_x509_raw(p, &enc_cert, + GNUTLS_X509_FMT_PEM, 0); if (ret < 0) return -1; @@ -208,10 +201,8 @@ cert_callback(gnutls_session_t session, if (ret < 0) return -1; - ret = - gnutls_privkey_import_x509_raw(lkey, &enc_key, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_privkey_import_x509_raw( + lkey, &enc_key, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) return -1; @@ -229,8 +220,7 @@ cert_callback(gnutls_session_t session, return 0; } -static -void client_check(void) +static void client_check(void) { int ret; /* Server stuff. */ @@ -255,9 +245,10 @@ void client_check(void) gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); - gnutls_priority_set_direct(server, - "NORMAL:-KX-ALL:+ECDHE-RSA:%DEBUG_ALLOW_KEY_USAGE_VIOLATIONS:-VERS-ALL:+VERS-TLS1.2", - NULL); + gnutls_priority_set_direct( + server, + "NORMAL:-KX-ALL:+ECDHE-RSA:%DEBUG_ALLOW_KEY_USAGE_VIOLATIONS:-VERS-ALL:+VERS-TLS1.2", + NULL); gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); gnutls_transport_set_ptr(server, server); @@ -267,9 +258,8 @@ void client_check(void) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -282,9 +272,8 @@ void client_check(void) if (ret < 0) exit(1); - gnutls_priority_set_direct(client, - "NORMAL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2", - NULL); + gnutls_priority_set_direct( + client, "NORMAL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2", NULL); gnutls_transport_set_push_function(client, client_push); gnutls_transport_set_pull_function(client, client_pull); gnutls_transport_set_ptr(client, client); diff --git a/tests/key-usage-rsa.c b/tests/key-usage-rsa.c index 42fdaa5d70..17c864b9c5 100644 --- a/tests/key-usage-rsa.c +++ b/tests/key-usage-rsa.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -44,107 +44,100 @@ static void tls_log_func(int level, const char *str) } static unsigned char ca_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIC8zCCAdugAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCAXDTE1MDgxNDA5MzUxMVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" - "QS0wMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4O2BYEx/hl7URXhb\n" - "52erURO6HrlfacZjG0fQ2WqRcJJTqg2baAbA7+1SLdhphZ+KJDypEjJWmOgbaehI\n" - "hlK7zDZb+0r0uXlUQ11mgf7FcCDQoJBmC1dcN3o6zPeXg5hkWV+ZV2h7hhJTwkRc\n" - "C4DXTbaDKy8PNiC0MRMOGjeMfnL26oaxzuHNgH4u1J02+XUZ0UcSDrUc52O1lJ02\n" - "i1SbD+fTNBgmFQADXyAllZYJ/xwbxf44TFhQjiOvVpz/9EB2+/x5H0r1YvwKGY6v\n" - "5mfkUsEAE5+uxDXdZT84ltEKkAjbZ9cIgdmXRuD4mkyo3NHLh7oHCdsRRE/S/rZe\n" - "ikmGpQIDAQABo1gwVjAPBgNVHRMBAf8EBTADAQH/MBMGA1UdJQQMMAoGCCsGAQUF\n" - "BwMJMA8GA1UdDwEB/wQFAwMHBgAwHQYDVR0OBBYEFEvjsNoFTfqDEKbcwFnxKId+\n" - "ZQP8MA0GCSqGSIb3DQEBCwUAA4IBAQAKrbc6hER0xAjn5driLNyoz0JJr5P07PDI\n" - "d8AR3ZC56DSJNdvKDqdFIvAoo/JePCTFSdhbaqu+08MoTtRK5TKqjRiDiG4XCxiz\n" - "Ado7QouS+ZgDP1Uxv8j2YWeSpkusD+oIEK96wbeDaYi0ENbLWbm9zWqvHaaEYn4c\n" - "ov78n+7VvP3I2OFuJ0EPy+r55GPxSCRCh6apL78yAc6TfcyOwwTihvCF5ejCqRg/\n" - "T1As5NCCpdYP2nejRymjO6wMRsRFBX9+gndO9qVQZJr8zBTw8k8/pMtDubjkYqEv\n" - "qRME4/3q8+Sm8HlZ8FPpcU9XbLl+ASd+SWr8jCTGLSxF2hME8Lgg\n" - "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t ca_cert = { ca_cert_pem, - sizeof(ca_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIIC8zCCAdugAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCAXDTE1MDgxNDA5MzUxMVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0wMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4O2BYEx/hl7URXhb\n" + "52erURO6HrlfacZjG0fQ2WqRcJJTqg2baAbA7+1SLdhphZ+KJDypEjJWmOgbaehI\n" + "hlK7zDZb+0r0uXlUQ11mgf7FcCDQoJBmC1dcN3o6zPeXg5hkWV+ZV2h7hhJTwkRc\n" + "C4DXTbaDKy8PNiC0MRMOGjeMfnL26oaxzuHNgH4u1J02+XUZ0UcSDrUc52O1lJ02\n" + "i1SbD+fTNBgmFQADXyAllZYJ/xwbxf44TFhQjiOvVpz/9EB2+/x5H0r1YvwKGY6v\n" + "5mfkUsEAE5+uxDXdZT84ltEKkAjbZ9cIgdmXRuD4mkyo3NHLh7oHCdsRRE/S/rZe\n" + "ikmGpQIDAQABo1gwVjAPBgNVHRMBAf8EBTADAQH/MBMGA1UdJQQMMAoGCCsGAQUF\n" + "BwMJMA8GA1UdDwEB/wQFAwMHBgAwHQYDVR0OBBYEFEvjsNoFTfqDEKbcwFnxKId+\n" + "ZQP8MA0GCSqGSIb3DQEBCwUAA4IBAQAKrbc6hER0xAjn5driLNyoz0JJr5P07PDI\n" + "d8AR3ZC56DSJNdvKDqdFIvAoo/JePCTFSdhbaqu+08MoTtRK5TKqjRiDiG4XCxiz\n" + "Ado7QouS+ZgDP1Uxv8j2YWeSpkusD+oIEK96wbeDaYi0ENbLWbm9zWqvHaaEYn4c\n" + "ov78n+7VvP3I2OFuJ0EPy+r55GPxSCRCh6apL78yAc6TfcyOwwTihvCF5ejCqRg/\n" + "T1As5NCCpdYP2nejRymjO6wMRsRFBX9+gndO9qVQZJr8zBTw8k8/pMtDubjkYqEv\n" + "qRME4/3q8+Sm8HlZ8FPpcU9XbLl+ASd+SWr8jCTGLSxF2hME8Lgg\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t ca_cert = { ca_cert_pem, sizeof(ca_cert_pem) }; static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIDITCCAgmgAwIBAgIMVc22UBIVIpQdKaDeMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTAwIBcNMTUwODE0MDkzNTEyWhgPOTk5OTEyMzEyMzU5NTlaMBMx\n" - "ETAPBgNVBAMTCHNlcnZlci0xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC\n" - "AQEAvhX+gDD8GkLW0GVH5C+AdbCFKAcj0tG+S+OuCpDp8NGZN4GXtbljUk5U82ha\n" - "nyq52eJCptCSspXNKq6Hn0H/eSXlRndnIblB49Dqy6kHq0i1ysmrbdbe9BWrUqeU\n" - "uKSZ8O98ANzHfVDOxCvhqGfytvrgudfk5JZxqAD2CXU6R5AjG60cnR49xGkplfKS\n" - "31fpdshDkQMm+w2hfa97wqjrTbQ7K4SIgB9AYbRNvHd8PAo6fxXrLaBPZkQu9AiP\n" - "D+sEz5bGrhzlIwz5SdcGAjuysB1WAygrWcTZ2zvX96lVTMhRF4umo8Rd1rzapB6G\n" - "Uj64cKtkyJjcGV54Ifd6E/lmDwIDAQABo3cwdTAMBgNVHRMBAf8EAjAAMBQGA1Ud\n" - "EQQNMAuCCWxvY2FsaG9zdDAPBgNVHQ8BAf8EBQMDB4AAMB0GA1UdDgQWBBSTZZoN\n" - "JNpaTuLaiXd+abUidelNDDAfBgNVHSMEGDAWgBRL47DaBU36gxCm3MBZ8SiHfmUD\n" - "/DANBgkqhkiG9w0BAQsFAAOCAQEANot3py74nzCijhKilXyHz44LnpzbZGxMzbdr\n" - "gK9maqqfiOWJMohOmSezYvMItudDn/Z3Bu7xzDxchDF80sBN+4UiDxl47uYbNl6o\n" - "UFfpFu4GmO0HfeWkbM1ZqVJGBa6zOCkc3aw0LK7O2YRcBcsjzdIPQpePf/jRpppJ\n" - "mz4qShtGa37Vfv4XxoXFPJdfil3uXl8Pe3qo+f8+DiMIIuxzKyQatu0DP4CjuEf1\n" - "6sgcBFbeUMAJsCh0qFbqObWyOe9XxFEukLMPV7s2EKnRcY7Xhyuf6wyNI/oPkmon\n" - "+m/yxJVZSWkpERsyXW1ZkR0Xw2KnJ4bzdQkDTs73ijOd4jFQvA==\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIC8zCCAdugAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCAXDTE1MDgxNDA5MzUxMVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" - "QS0wMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4O2BYEx/hl7URXhb\n" - "52erURO6HrlfacZjG0fQ2WqRcJJTqg2baAbA7+1SLdhphZ+KJDypEjJWmOgbaehI\n" - "hlK7zDZb+0r0uXlUQ11mgf7FcCDQoJBmC1dcN3o6zPeXg5hkWV+ZV2h7hhJTwkRc\n" - "C4DXTbaDKy8PNiC0MRMOGjeMfnL26oaxzuHNgH4u1J02+XUZ0UcSDrUc52O1lJ02\n" - "i1SbD+fTNBgmFQADXyAllZYJ/xwbxf44TFhQjiOvVpz/9EB2+/x5H0r1YvwKGY6v\n" - "5mfkUsEAE5+uxDXdZT84ltEKkAjbZ9cIgdmXRuD4mkyo3NHLh7oHCdsRRE/S/rZe\n" - "ikmGpQIDAQABo1gwVjAPBgNVHRMBAf8EBTADAQH/MBMGA1UdJQQMMAoGCCsGAQUF\n" - "BwMJMA8GA1UdDwEB/wQFAwMHBgAwHQYDVR0OBBYEFEvjsNoFTfqDEKbcwFnxKId+\n" - "ZQP8MA0GCSqGSIb3DQEBCwUAA4IBAQAKrbc6hER0xAjn5driLNyoz0JJr5P07PDI\n" - "d8AR3ZC56DSJNdvKDqdFIvAoo/JePCTFSdhbaqu+08MoTtRK5TKqjRiDiG4XCxiz\n" - "Ado7QouS+ZgDP1Uxv8j2YWeSpkusD+oIEK96wbeDaYi0ENbLWbm9zWqvHaaEYn4c\n" - "ov78n+7VvP3I2OFuJ0EPy+r55GPxSCRCh6apL78yAc6TfcyOwwTihvCF5ejCqRg/\n" - "T1As5NCCpdYP2nejRymjO6wMRsRFBX9+gndO9qVQZJr8zBTw8k8/pMtDubjkYqEv\n" - "qRME4/3q8+Sm8HlZ8FPpcU9XbLl+ASd+SWr8jCTGLSxF2hME8Lgg\n" - "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIIDITCCAgmgAwIBAgIMVc22UBIVIpQdKaDeMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTAwIBcNMTUwODE0MDkzNTEyWhgPOTk5OTEyMzEyMzU5NTlaMBMx\n" + "ETAPBgNVBAMTCHNlcnZlci0xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC\n" + "AQEAvhX+gDD8GkLW0GVH5C+AdbCFKAcj0tG+S+OuCpDp8NGZN4GXtbljUk5U82ha\n" + "nyq52eJCptCSspXNKq6Hn0H/eSXlRndnIblB49Dqy6kHq0i1ysmrbdbe9BWrUqeU\n" + "uKSZ8O98ANzHfVDOxCvhqGfytvrgudfk5JZxqAD2CXU6R5AjG60cnR49xGkplfKS\n" + "31fpdshDkQMm+w2hfa97wqjrTbQ7K4SIgB9AYbRNvHd8PAo6fxXrLaBPZkQu9AiP\n" + "D+sEz5bGrhzlIwz5SdcGAjuysB1WAygrWcTZ2zvX96lVTMhRF4umo8Rd1rzapB6G\n" + "Uj64cKtkyJjcGV54Ifd6E/lmDwIDAQABo3cwdTAMBgNVHRMBAf8EAjAAMBQGA1Ud\n" + "EQQNMAuCCWxvY2FsaG9zdDAPBgNVHQ8BAf8EBQMDB4AAMB0GA1UdDgQWBBSTZZoN\n" + "JNpaTuLaiXd+abUidelNDDAfBgNVHSMEGDAWgBRL47DaBU36gxCm3MBZ8SiHfmUD\n" + "/DANBgkqhkiG9w0BAQsFAAOCAQEANot3py74nzCijhKilXyHz44LnpzbZGxMzbdr\n" + "gK9maqqfiOWJMohOmSezYvMItudDn/Z3Bu7xzDxchDF80sBN+4UiDxl47uYbNl6o\n" + "UFfpFu4GmO0HfeWkbM1ZqVJGBa6zOCkc3aw0LK7O2YRcBcsjzdIPQpePf/jRpppJ\n" + "mz4qShtGa37Vfv4XxoXFPJdfil3uXl8Pe3qo+f8+DiMIIuxzKyQatu0DP4CjuEf1\n" + "6sgcBFbeUMAJsCh0qFbqObWyOe9XxFEukLMPV7s2EKnRcY7Xhyuf6wyNI/oPkmon\n" + "+m/yxJVZSWkpERsyXW1ZkR0Xw2KnJ4bzdQkDTs73ijOd4jFQvA==\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIC8zCCAdugAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCAXDTE1MDgxNDA5MzUxMVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0wMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4O2BYEx/hl7URXhb\n" + "52erURO6HrlfacZjG0fQ2WqRcJJTqg2baAbA7+1SLdhphZ+KJDypEjJWmOgbaehI\n" + "hlK7zDZb+0r0uXlUQ11mgf7FcCDQoJBmC1dcN3o6zPeXg5hkWV+ZV2h7hhJTwkRc\n" + "C4DXTbaDKy8PNiC0MRMOGjeMfnL26oaxzuHNgH4u1J02+XUZ0UcSDrUc52O1lJ02\n" + "i1SbD+fTNBgmFQADXyAllZYJ/xwbxf44TFhQjiOvVpz/9EB2+/x5H0r1YvwKGY6v\n" + "5mfkUsEAE5+uxDXdZT84ltEKkAjbZ9cIgdmXRuD4mkyo3NHLh7oHCdsRRE/S/rZe\n" + "ikmGpQIDAQABo1gwVjAPBgNVHRMBAf8EBTADAQH/MBMGA1UdJQQMMAoGCCsGAQUF\n" + "BwMJMA8GA1UdDwEB/wQFAwMHBgAwHQYDVR0OBBYEFEvjsNoFTfqDEKbcwFnxKId+\n" + "ZQP8MA0GCSqGSIb3DQEBCwUAA4IBAQAKrbc6hER0xAjn5driLNyoz0JJr5P07PDI\n" + "d8AR3ZC56DSJNdvKDqdFIvAoo/JePCTFSdhbaqu+08MoTtRK5TKqjRiDiG4XCxiz\n" + "Ado7QouS+ZgDP1Uxv8j2YWeSpkusD+oIEK96wbeDaYi0ENbLWbm9zWqvHaaEYn4c\n" + "ov78n+7VvP3I2OFuJ0EPy+r55GPxSCRCh6apL78yAc6TfcyOwwTihvCF5ejCqRg/\n" + "T1As5NCCpdYP2nejRymjO6wMRsRFBX9+gndO9qVQZJr8zBTw8k8/pMtDubjkYqEv\n" + "qRME4/3q8+Sm8HlZ8FPpcU9XbLl+ASd+SWr8jCTGLSxF2hME8Lgg\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIEowIBAAKCAQEAvhX+gDD8GkLW0GVH5C+AdbCFKAcj0tG+S+OuCpDp8NGZN4GX\n" - "tbljUk5U82hanyq52eJCptCSspXNKq6Hn0H/eSXlRndnIblB49Dqy6kHq0i1ysmr\n" - "bdbe9BWrUqeUuKSZ8O98ANzHfVDOxCvhqGfytvrgudfk5JZxqAD2CXU6R5AjG60c\n" - "nR49xGkplfKS31fpdshDkQMm+w2hfa97wqjrTbQ7K4SIgB9AYbRNvHd8PAo6fxXr\n" - "LaBPZkQu9AiPD+sEz5bGrhzlIwz5SdcGAjuysB1WAygrWcTZ2zvX96lVTMhRF4um\n" - "o8Rd1rzapB6GUj64cKtkyJjcGV54Ifd6E/lmDwIDAQABAoIBAQCPPDOSlVbi0wrb\n" - "7fXGVKUQCfvMtdSgv7wNo3s6KwidltNFqDmRjijxlGUfJbtjxOZW8NAYs4JXX9pC\n" - "F1HLCAhiWdPyzXbBSsAD0yGaZbyJrTiPnne3RPqsIsf+eJjwqdf2Xf+rBrKsE4A7\n" - "AnYAWJPknhdI8w5f0Z3DYzYC2nsYAI/FvJCpQvs9qMfVznctzcLUpvquDYrkDaFA\n" - "Rk14xQ8zhXKSugx1N2QAabk9YhMIDgBRHvZkQfBYJ/bNhfpLveQZX14QLn++EuFZ\n" - "F0QpoOtJhWNZDbDdroud2G821dl5bLKsKx0cD63Bsz1uV8vUQF0F2xx8t64SPhz9\n" - "zC/eZB+BAoGBAM57D4Nav1zreqBJZnWVtR7qr54AIg3nKccFPXLeezhI1iJi07tn\n" - "Fc2YdP+5NzRAVBOBKaMwuJ4ZdLnclsKD8A/LzMgerRfuV6EDHOPKAgWISU/+Up6x\n" - "Q5tQ2ocPjQFHb5gK3Le9lMkBHt1j6ZIptUIXTqzzwKYSDDYkdMCmSyBXAoGBAOus\n" - "XvHE/DIV6idE4k590nq+o9OdMet+LWUzmyTjlbVhPZ09vTSHs+3U1Fe4te6aNUI+\n" - "KkhizCHMvx+M0uzCwy31TDdLe9QbmtkQet0AAX/Qsb5IQrDi5iLl7UuvZMa7tCUe\n" - "R0puBRBzvZg4LQWDgJ9U4fO3YO0c3VBRpicQbvUJAoGAFN6bUst5TAsA+fJxSLE4\n" - "/Ub7OR0KVB1pO5RsAZA7JBU4j4EtpWNl8MHYEYDG86EM3mvPqY7jGhe4lJCXLFHp\n" - "ka8no5J2LFUKxltqMBva2HRN9Kff8eo4yxoA/GW1+ssdnGB8rpWa1DYoyHeww/Uz\n" - "PNreONzqO97XHSHSKyajsUECgYAe/3ENg8dYHyHJQHozsMD6fBC4SLjELLhz0zHY\n" - "zEZosP2VrQUx35d+9LtpPlZPp+DRcbPGCZin6XJKCA/GLGfXp6f6reb/oxHe8xf1\n" - "8YZA9YYrbP24nl9+v5dSmSM8MHwlVbIyy/3GiDKrzte9HerRCi0eDUSma2GAqvyb\n" - "rsGpYQKBgCj7dXo0LKYaEJ17NXCD6Cu7gMP9haYo0HHfkhBnIgYs/Cytgnedzp6k\n" - "kRcVr4yllg5yEgiqPvg+PyuL1sm0epQ85qeYOaR2CsbN6mYnwX8/8LLZ7Ep4v3vv\n" - "m0SlmY5Hgw6lit1DOr1HDoZZKzbpT3H//TrMMhvBPdcBQwjcHMHl\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; - -static -void server_check(void) + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIIEowIBAAKCAQEAvhX+gDD8GkLW0GVH5C+AdbCFKAcj0tG+S+OuCpDp8NGZN4GX\n" + "tbljUk5U82hanyq52eJCptCSspXNKq6Hn0H/eSXlRndnIblB49Dqy6kHq0i1ysmr\n" + "bdbe9BWrUqeUuKSZ8O98ANzHfVDOxCvhqGfytvrgudfk5JZxqAD2CXU6R5AjG60c\n" + "nR49xGkplfKS31fpdshDkQMm+w2hfa97wqjrTbQ7K4SIgB9AYbRNvHd8PAo6fxXr\n" + "LaBPZkQu9AiPD+sEz5bGrhzlIwz5SdcGAjuysB1WAygrWcTZ2zvX96lVTMhRF4um\n" + "o8Rd1rzapB6GUj64cKtkyJjcGV54Ifd6E/lmDwIDAQABAoIBAQCPPDOSlVbi0wrb\n" + "7fXGVKUQCfvMtdSgv7wNo3s6KwidltNFqDmRjijxlGUfJbtjxOZW8NAYs4JXX9pC\n" + "F1HLCAhiWdPyzXbBSsAD0yGaZbyJrTiPnne3RPqsIsf+eJjwqdf2Xf+rBrKsE4A7\n" + "AnYAWJPknhdI8w5f0Z3DYzYC2nsYAI/FvJCpQvs9qMfVznctzcLUpvquDYrkDaFA\n" + "Rk14xQ8zhXKSugx1N2QAabk9YhMIDgBRHvZkQfBYJ/bNhfpLveQZX14QLn++EuFZ\n" + "F0QpoOtJhWNZDbDdroud2G821dl5bLKsKx0cD63Bsz1uV8vUQF0F2xx8t64SPhz9\n" + "zC/eZB+BAoGBAM57D4Nav1zreqBJZnWVtR7qr54AIg3nKccFPXLeezhI1iJi07tn\n" + "Fc2YdP+5NzRAVBOBKaMwuJ4ZdLnclsKD8A/LzMgerRfuV6EDHOPKAgWISU/+Up6x\n" + "Q5tQ2ocPjQFHb5gK3Le9lMkBHt1j6ZIptUIXTqzzwKYSDDYkdMCmSyBXAoGBAOus\n" + "XvHE/DIV6idE4k590nq+o9OdMet+LWUzmyTjlbVhPZ09vTSHs+3U1Fe4te6aNUI+\n" + "KkhizCHMvx+M0uzCwy31TDdLe9QbmtkQet0AAX/Qsb5IQrDi5iLl7UuvZMa7tCUe\n" + "R0puBRBzvZg4LQWDgJ9U4fO3YO0c3VBRpicQbvUJAoGAFN6bUst5TAsA+fJxSLE4\n" + "/Ub7OR0KVB1pO5RsAZA7JBU4j4EtpWNl8MHYEYDG86EM3mvPqY7jGhe4lJCXLFHp\n" + "ka8no5J2LFUKxltqMBva2HRN9Kff8eo4yxoA/GW1+ssdnGB8rpWa1DYoyHeww/Uz\n" + "PNreONzqO97XHSHSKyajsUECgYAe/3ENg8dYHyHJQHozsMD6fBC4SLjELLhz0zHY\n" + "zEZosP2VrQUx35d+9LtpPlZPp+DRcbPGCZin6XJKCA/GLGfXp6f6reb/oxHe8xf1\n" + "8YZA9YYrbP24nl9+v5dSmSM8MHwlVbIyy/3GiDKrzte9HerRCi0eDUSma2GAqvyb\n" + "rsGpYQKBgCj7dXo0LKYaEJ17NXCD6Cu7gMP9haYo0HHfkhBnIgYs/Cytgnedzp6k\n" + "kRcVr4yllg5yEgiqPvg+PyuL1sm0epQ85qeYOaR2CsbN6mYnwX8/8LLZ7Ep4v3vv\n" + "m0SlmY5Hgw6lit1DOr1HDoZZKzbpT3H//TrMMhvBPdcBQwjcHMHl\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; + +static void server_check(void) { int ret; /* Server stuff. */ @@ -164,15 +157,13 @@ void server_check(void) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); - gnutls_priority_set_direct(server, - "NORMAL:-KX-ALL:+RSA:-VERS-ALL:+VERS-TLS1.2", - NULL); + gnutls_priority_set_direct( + server, "NORMAL:-KX-ALL:+RSA:-VERS-ALL:+VERS-TLS1.2", NULL); gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); gnutls_transport_set_ptr(server, server); @@ -182,9 +173,8 @@ void server_check(void) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -221,12 +211,11 @@ void server_check(void) static gnutls_privkey_t g_pkey = NULL; static gnutls_pcert_st *g_pcert = NULL; -static int -cert_callback(gnutls_session_t session, - const gnutls_datum_t * req_ca_rdn, int nreqs, - const gnutls_pk_algorithm_t * sign_algos, - int sign_algos_length, gnutls_pcert_st ** pcert, - unsigned int *pcert_length, gnutls_privkey_t * pkey) +static int cert_callback(gnutls_session_t session, + const gnutls_datum_t *req_ca_rdn, int nreqs, + const gnutls_pk_algorithm_t *sign_algos, + int sign_algos_length, gnutls_pcert_st **pcert, + unsigned int *pcert_length, gnutls_privkey_t *pkey) { int ret; gnutls_pcert_st *p; @@ -237,9 +226,8 @@ cert_callback(gnutls_session_t session, if (p == NULL) return -1; - ret = - gnutls_pcert_import_x509_raw(p, &server_cert, - GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_pcert_import_x509_raw(p, &server_cert, + GNUTLS_X509_FMT_PEM, 0); if (ret < 0) return -1; @@ -247,10 +235,8 @@ cert_callback(gnutls_session_t session, if (ret < 0) return -1; - ret = - gnutls_privkey_import_x509_raw(lkey, &server_key, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_privkey_import_x509_raw( + lkey, &server_key, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) return -1; @@ -268,8 +254,7 @@ cert_callback(gnutls_session_t session, return 0; } -static -void client_check(void) +static void client_check(void) { int ret; /* Server stuff. */ @@ -294,9 +279,10 @@ void client_check(void) gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); - gnutls_priority_set_direct(server, - "NORMAL:-KX-ALL:+RSA:%DEBUG_ALLOW_KEY_USAGE_VIOLATIONS:-VERS-ALL:+VERS-TLS1.2", - NULL); + gnutls_priority_set_direct( + server, + "NORMAL:-KX-ALL:+RSA:%DEBUG_ALLOW_KEY_USAGE_VIOLATIONS:-VERS-ALL:+VERS-TLS1.2", + NULL); gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); gnutls_transport_set_ptr(server, server); @@ -306,9 +292,8 @@ void client_check(void) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); diff --git a/tests/keylog-env.c b/tests/keylog-env.c index 408f04a48b..46320dd87a 100644 --- a/tests/keylog-env.c +++ b/tests/keylog-env.c @@ -20,7 +20,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -29,10 +29,10 @@ #include #include #if !defined(_WIN32) -# include -# include -# include -# include +#include +#include +#include +#include #endif #include #include @@ -90,8 +90,8 @@ static void search_for_str(const char *filename, const char *label, fail("file should contain %s\n", label); } -static void run(const char *filename, const char *prio, - const char **included, const char **excluded) +static void run(const char *filename, const char *prio, const char **included, + const char **excluded) { gnutls_certificate_credentials_t x509_cred; gnutls_certificate_credentials_t clicred; @@ -117,19 +117,16 @@ static void run(const char *filename, const char *prio, assert(gnutls_certificate_allocate_credentials(&x509_cred) >= 0); assert(gnutls_certificate_allocate_credentials(&clicred) >= 0); - ret = - gnutls_certificate_set_x509_key_mem(x509_cred, - &server_ca3_localhost_cert_chain, - &server_ca3_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + x509_cred, &server_ca3_localhost_cert_chain, &server_ca3_key, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("error in error code\n"); exit(1); } - ret = - gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) fail("set_x509_trust_file failed: %s\n", gnutls_strerror(ret)); diff --git a/tests/keylog-func.c b/tests/keylog-func.c index 980c34844a..faf74c8154 100644 --- a/tests/keylog-func.c +++ b/tests/keylog-func.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -37,18 +37,18 @@ int main(int argc, char **argv) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "cert-common.h" -# include "utils.h" +#include "cert-common.h" +#include "utils.h" /* This program tests whether a keylog function is called. */ @@ -69,21 +69,18 @@ const char *side = ""; /* These are global */ static pid_t child; -# define MAX_BUF 1024 -# define MSG "Hello TLS" +#define MAX_BUF 1024 +#define MSG "Hello TLS" -static int -keylog_func(gnutls_session_t session, - const char *label, const gnutls_datum_t * secret) +static int keylog_func(gnutls_session_t session, const char *label, + const gnutls_datum_t *secret) { unsigned int *call_count = gnutls_session_get_ptr(session); - static const char *exp_labels[] = { - "CLIENT_HANDSHAKE_TRAFFIC_SECRET", - "SERVER_HANDSHAKE_TRAFFIC_SECRET", - "EXPORTER_SECRET", - "CLIENT_TRAFFIC_SECRET_0", - "SERVER_TRAFFIC_SECRET_0" - }; + static const char *exp_labels[] = { "CLIENT_HANDSHAKE_TRAFFIC_SECRET", + "SERVER_HANDSHAKE_TRAFFIC_SECRET", + "EXPORTER_SECRET", + "CLIENT_TRAFFIC_SECRET_0", + "SERVER_TRAFFIC_SECRET_0" }; if (*call_count >= sizeof(exp_labels) / sizeof(exp_labels[0])) fail("unexpected secret at call count %u\n", *call_count); @@ -144,8 +141,7 @@ static void client(int fd, const char *prio, unsigned int exp_call_count) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) fail("client: Handshake failed: %s\n", gnutls_strerror(ret)); @@ -156,8 +152,8 @@ static void client(int fd, const char *prio, unsigned int exp_call_count) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); gnutls_record_send(session, MSG, strlen(MSG)); @@ -180,8 +176,8 @@ static void client(int fd, const char *prio, unsigned int exp_call_count) } if (call_count != exp_call_count) - fail("secret hook is not called %u times (%u)\n", - call_count, exp_call_count); + fail("secret hook is not called %u times (%u)\n", call_count, + exp_call_count); gnutls_bye(session, GNUTLS_SHUT_WR); @@ -220,18 +216,18 @@ static void server(int fd, const char *prio, unsigned int exp_call_count) /* avoid calling all the priority functions, since the defaults * are adequate. */ - ret = gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-KX-ALL:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA384:-GROUP-ALL:+GROUP-SECP256R1", - NULL); + ret = gnutls_priority_set_direct( + session, + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-KX-ALL:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA384:-GROUP-ALL:+GROUP-SECP256R1", + NULL); if (ret < 0) { fail("server: priority set failed (%s)\n\n", gnutls_strerror(ret)); terminate(); } - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, serverx509cred); gnutls_transport_set_int(session, fd); @@ -240,8 +236,7 @@ static void server(int fd, const char *prio, unsigned int exp_call_count) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -254,8 +249,8 @@ static void server(int fd, const char *prio, unsigned int exp_call_count) } if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); memset(buffer, 0, MAX_BUF + 1); @@ -265,8 +260,7 @@ static void server(int fd, const char *prio, unsigned int exp_call_count) if (ret == 0) { if (debug) - success - ("server: Peer has closed the GnuTLS connection\n"); + success("server: Peer has closed the GnuTLS connection\n"); } else if (ret < 0) { fail("server: Received corrupted data(%d). Closing...\n", ret); } else if (ret > 0) { @@ -276,8 +270,8 @@ static void server(int fd, const char *prio, unsigned int exp_call_count) } if (call_count != exp_call_count) - fail("secret hook is not called %u times (%u)\n", - call_count, exp_call_count); + fail("secret hook is not called %u times (%u)\n", call_count, + exp_call_count); /* do not wait for the peer to close the connection. */ @@ -344,4 +338,4 @@ void doit(void) run("NORMAL:-VERS-ALL:+VERS-TLS1.3", 5); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/ktls_keyupdate.c b/tests/ktls_keyupdate.c index 5844c56497..e3c51ec369 100644 --- a/tests/ktls_keyupdate.c +++ b/tests/ktls_keyupdate.c @@ -18,7 +18,7 @@ // along with GnuTLS. If not, see . #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -50,73 +50,77 @@ int main(void) #else -# define MAX_BUF 1024 -# define MSG "Hello world!" - -# define HANDSHAKE(session, name, ret)\ -{\ - do {\ - ret = gnutls_handshake(session);\ - }\ - while (ret < 0 && gnutls_error_is_fatal(ret) == 0);\ - if (ret < 0) {\ - fail("%s: Handshake failed\n", name);\ - goto end;\ - }\ -} +#define MAX_BUF 1024 +#define MSG "Hello world!" + +#define HANDSHAKE(session, name, ret) \ + { \ + do { \ + ret = gnutls_handshake(session); \ + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); \ + if (ret < 0) { \ + fail("%s: Handshake failed\n", name); \ + goto end; \ + } \ + } -# define SEND_MSG(session, name, ret)\ -{\ - do {\ - ret = gnutls_record_send(session, MSG, strlen(MSG)+1);\ - } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED);\ - if (ret < 0) {\ - fail("%s: data sending has failed (%s)\n",name,\ - gnutls_strerror(ret));\ - goto end;\ - }\ -} +#define SEND_MSG(session, name, ret) \ + { \ + do { \ + ret = gnutls_record_send(session, MSG, \ + strlen(MSG) + 1); \ + } while (ret == GNUTLS_E_AGAIN || \ + ret == GNUTLS_E_INTERRUPTED); \ + if (ret < 0) { \ + fail("%s: data sending has failed (%s)\n", name, \ + gnutls_strerror(ret)); \ + goto end; \ + } \ + } -# define RECV_MSG(session, name, buffer, buffer_len, ret)\ -{\ - memset(buffer, 0, sizeof(buffer));\ - do{\ - ret = gnutls_record_recv(session, buffer, sizeof(buffer));\ - }\ - while(ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED);\ - if (ret == 0) {\ - success("%s: Peer has closed the TLS connection\n", name);\ - goto end;\ - } else if (ret < 0) {\ - fail("%s: Error -> %s\n", name, gnutls_strerror(ret));\ - goto end;\ - }\ - if(strncmp(buffer, MSG, ret)){\ - fail("%s: Message doesn't match\n", name);\ - goto end;\ - }\ -} +#define RECV_MSG(session, name, buffer, buffer_len, ret) \ + { \ + memset(buffer, 0, sizeof(buffer)); \ + do { \ + ret = gnutls_record_recv(session, buffer, \ + sizeof(buffer)); \ + } while (ret == GNUTLS_E_AGAIN || \ + ret == GNUTLS_E_INTERRUPTED); \ + if (ret == 0) { \ + success("%s: Peer has closed the TLS connection\n", \ + name); \ + goto end; \ + } else if (ret < 0) { \ + fail("%s: Error -> %s\n", name, gnutls_strerror(ret)); \ + goto end; \ + } \ + if (strncmp(buffer, MSG, ret)) { \ + fail("%s: Message doesn't match\n", name); \ + goto end; \ + } \ + } -# define KEY_UPDATE(session, name, peer_req, ret)\ -{\ - do {\ - ret = gnutls_session_key_update(session, peer_req);\ - } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED);\ - if (ret < 0) {\ - fail("%s: key update has failed (%s)\n", name, \ - gnutls_strerror(ret));\ - goto end;\ - }\ -} +#define KEY_UPDATE(session, name, peer_req, ret) \ + { \ + do { \ + ret = gnutls_session_key_update(session, peer_req); \ + } while (ret == GNUTLS_E_AGAIN || \ + ret == GNUTLS_E_INTERRUPTED); \ + if (ret < 0) { \ + fail("%s: key update has failed (%s)\n", name, \ + gnutls_strerror(ret)); \ + goto end; \ + } \ + } -# define CHECK_KTLS_ENABLED(session, ret)\ -{\ - ret = gnutls_transport_is_ktls_enabled(session);\ - if (!(ret & GNUTLS_KTLS_RECV)){\ - fail("client: KTLS was not properly initialized\n");\ - goto end;\ - }\ -} +#define CHECK_KTLS_ENABLED(session, ret) \ + { \ + ret = gnutls_transport_is_ktls_enabled(session); \ + if (!(ret & GNUTLS_KTLS_RECV)) { \ + fail("client: KTLS was not properly initialized\n"); \ + goto end; \ + } \ + } static void server_log_func(int level, const char *str) { @@ -158,28 +162,28 @@ static void client(int fd, const char *prio, int pipe) HANDSHAKE(session, name, ret); CHECK_KTLS_ENABLED(session, ret) - // Test 0: Try sending/receiving data - RECV_MSG(session, name, buffer, MAX_BUF + 1, ret) - SEND_MSG(session, name, ret) - CHECK_KTLS_ENABLED(session, ret) - // Test 1: Servers does key update - read(pipe, &foo, 1); + // Test 0: Try sending/receiving data + RECV_MSG(session, name, buffer, MAX_BUF + 1, ret) + SEND_MSG(session, name, ret) + CHECK_KTLS_ENABLED(session, ret) + // Test 1: Servers does key update + read(pipe, &foo, 1); RECV_MSG(session, name, buffer, MAX_BUF + 1, ret) - SEND_MSG(session, name, ret) - CHECK_KTLS_ENABLED(session, ret) - // Test 2: Does key update witch request - read(pipe, &foo, 1); + SEND_MSG(session, name, ret) + CHECK_KTLS_ENABLED(session, ret) + // Test 2: Does key update witch request + read(pipe, &foo, 1); RECV_MSG(session, name, buffer, MAX_BUF + 1, ret) - SEND_MSG(session, name, ret) - CHECK_KTLS_ENABLED(session, ret) - ret = gnutls_bye(session, GNUTLS_SHUT_RDWR); + SEND_MSG(session, name, ret) + CHECK_KTLS_ENABLED(session, ret) + ret = gnutls_bye(session, GNUTLS_SHUT_RDWR); if (ret < 0) { fail("client: error in closing session: %s\n", gnutls_strerror(ret)); } ret = 0; - end: +end: close(fd); @@ -218,9 +222,8 @@ static void server(int fd, const char *prio, int pipe) } gnutls_certificate_allocate_credentials(&x509_cred); - ret = gnutls_certificate_set_x509_key_mem(x509_cred, &server_cert, - &server_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + x509_cred, &server_cert, &server_key, GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -234,31 +237,31 @@ static void server(int fd, const char *prio, int pipe) gnutls_transport_set_int(session, fd); HANDSHAKE(session, name, ret) - CHECK_KTLS_ENABLED(session, ret) - success("Test 0: sending/receiving data\n"); + CHECK_KTLS_ENABLED(session, ret) + success("Test 0: sending/receiving data\n"); SEND_MSG(session, name, ret) - RECV_MSG(session, name, buffer, MAX_BUF + 1, ret) - CHECK_KTLS_ENABLED(session, ret) - success("Test 1: server key update without request\n"); + RECV_MSG(session, name, buffer, MAX_BUF + 1, ret) + CHECK_KTLS_ENABLED(session, ret) + success("Test 1: server key update without request\n"); KEY_UPDATE(session, name, 0, ret) - write(pipe, &bar, 1); + write(pipe, &bar, 1); SEND_MSG(session, name, ret) - RECV_MSG(session, name, buffer, MAX_BUF + 1, ret) - CHECK_KTLS_ENABLED(session, ret) - success("Test 2: server key update with request\n"); + RECV_MSG(session, name, buffer, MAX_BUF + 1, ret) + CHECK_KTLS_ENABLED(session, ret) + success("Test 2: server key update with request\n"); KEY_UPDATE(session, name, GNUTLS_KU_PEER, ret) - write(pipe, &bar, 1); + write(pipe, &bar, 1); SEND_MSG(session, name, ret) - RECV_MSG(session, name, buffer, MAX_BUF + 1, ret) - CHECK_KTLS_ENABLED(session, ret) - ret = gnutls_bye(session, GNUTLS_SHUT_RDWR); + RECV_MSG(session, name, buffer, MAX_BUF + 1, ret) + CHECK_KTLS_ENABLED(session, ret) + ret = gnutls_bye(session, GNUTLS_SHUT_RDWR); if (ret < 0) { fail("server: error in closing session: %s\n", gnutls_strerror(ret)); } ret = 0; - end: +end: close(fd); gnutls_deinit(session); @@ -287,7 +290,7 @@ static void run(const char *prio) int listener; int fd; - int sync_pipe[2]; //used for synchronization + int sync_pipe[2]; //used for synchronization pipe(sync_pipe); success("running ktls test with %s\n", prio); @@ -362,4 +365,4 @@ void doit(void) run("NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-256-GCM"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/long-session-id.c b/tests/long-session-id.c index 86858bd780..155e7f3834 100644 --- a/tests/long-session-id.c +++ b/tests/long-session-id.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,17 +35,17 @@ void doit(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "utils.h" /* This program tests the robustness of record * decoding. @@ -57,45 +57,42 @@ static void client_log_func(int level, const char *str) } static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" - "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" - "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" - "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" - "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" - "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" - "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" - "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" - "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" - "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" - "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" - "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" + "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" + "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" + "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" + "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" + "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" + "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" + "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" + "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" + "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" + "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" + "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" - "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" - "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" - "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" - "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" - "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" - "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" - "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" - "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" - "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" - "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" - "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" - "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" + "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" + "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" + "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" + "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" + "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" + "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" + "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" + "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" + "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" + "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" + "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" + "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; /* A very basic TLS client, with anonymous authentication. */ @@ -132,8 +129,7 @@ static void client(int fd, const char *prio) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); r = gnutls_ecc_curve_get(session); if (r == 0xffffffff) { @@ -152,7 +148,7 @@ static void client(int fd, const char *prio) kill(getpid(), SIGSEGV); } - cleanup: +cleanup: close(fd); gnutls_deinit(session); @@ -169,10 +165,13 @@ static void server(int fd, const char *prio) { int ret; uint8_t id[255]; - uint8_t buffer[] = "\x16\x03\x01\x01\x25" "\x02\x00\x01\x21" "\x03\x01" /*Server Version */ - /*Random */ - "\x00\x00\x00\x00\x01\x00\x00\x00\x00\x01\x00\x00\x00\x00\x01\x00\x00\x00\x00\x01\x00\x00\x00\x00\x01\x00\x00\x00\x00\x01\x00\x00" - /*SessionID */ "\xfe"; + uint8_t buffer[] = + "\x16\x03\x01\x01\x25" + "\x02\x00\x01\x21" + "\x03\x01" /*Server Version */ + /*Random */ + "\x00\x00\x00\x00\x01\x00\x00\x00\x00\x01\x00\x00\x00\x00\x01\x00\x00\x00\x00\x01\x00\x00\x00\x00\x01\x00\x00\x00\x00\x01\x00\x00" + /*SessionID */ "\xfe"; ret = read(fd, id, sizeof(id)); if (ret < 0) { @@ -245,4 +244,4 @@ void doit(void) start("NORMAL:-VERS-ALL:+VERS-TLS1.2"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/mini-alpn.c b/tests/mini-alpn.c index 97e1478851..55b03a6e21 100644 --- a/tests/mini-alpn.c +++ b/tests/mini-alpn.c @@ -18,7 +18,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,18 +33,18 @@ int main(int argc, char **argv) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" static void terminate(void); @@ -90,9 +90,10 @@ static void client(int fd, const char *protocol0, const char *protocol2, gnutls_init(&session, GNUTLS_CLIENT); /* Use default priorities */ - gnutls_priority_set_direct(session, - "NONE:+VERS-TLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-TLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", + NULL); if (protocol1) { gnutls_datum_t t[3]; t[0].data = (void *)protocol0; @@ -119,8 +120,7 @@ static void client(int fd, const char *protocol0, const char *protocol2, */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -133,8 +133,8 @@ static void client(int fd, const char *protocol0, const char *protocol2, if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); ret = gnutls_alpn_get_selected_protocol(session, &proto); if (ret < 0) { @@ -143,8 +143,8 @@ static void client(int fd, const char *protocol0, const char *protocol2, } if (debug) { - fprintf(stderr, "selected protocol: %.*s\n", - (int)proto.size, proto.data); + fprintf(stderr, "selected protocol: %.*s\n", (int)proto.size, + proto.data); } gnutls_bye(session, GNUTLS_SHUT_WR); @@ -191,9 +191,10 @@ static void server(int fd, const char *protocol1, const char *protocol2) /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NONE:+VERS-TLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-TLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", + NULL); t[0].data = (void *)protocol1; t[0].size = strlen(protocol1); @@ -212,8 +213,7 @@ static void server(int fd, const char *protocol1, const char *protocol2) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -226,8 +226,8 @@ static void server(int fd, const char *protocol1, const char *protocol2) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); ret = gnutls_alpn_get_selected_protocol(session, &selected); if (ret < 0) { @@ -239,9 +239,10 @@ static void server(int fd, const char *protocol1, const char *protocol2) success("Protocol: %.*s\n", (int)selected.size, selected.data); } - if (selected.size != strlen(protocol1) - || memcmp(selected.data, protocol1, selected.size) != 0) { - fail("did not select the expected protocol (selected %.*s, expected %s)\n", selected.size, selected.data, protocol1); + if (selected.size != strlen(protocol1) || + memcmp(selected.data, protocol1, selected.size) != 0) { + fail("did not select the expected protocol (selected %.*s, expected %s)\n", + selected.size, selected.data, protocol1); exit(1); } @@ -301,4 +302,4 @@ void doit(void) start("spdy/3", "spdy/2"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/mini-chain-unsorted.c b/tests/mini-chain-unsorted.c index b012fbb97c..e02f71bed4 100644 --- a/tests/mini-chain-unsorted.c +++ b/tests/mini-chain-unsorted.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,18 +35,18 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" /* This program tests whether the import functions sort the * chain. @@ -58,122 +58,121 @@ static void client_log_func(int level, const char *str) } static unsigned char server_cert_pem[] = -/* 0 */ "-----BEGIN CERTIFICATE-----\n" - "MIIDIzCCAgugAwIBAgIMVHc8lDcqr/T62g5oMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTIwIhgPMjAxNDExMjcxNTAwMzZaGA85OTk5MTIzMTIzNTk1OVow\n" - "EzERMA8GA1UEAxMIc2VydmVyLTMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" - "AoIBAQCsfFrZmOxA7ijkppwPtakc8ecuBRr9Dr4pe/alC/OXVZsZlAlnR0xd53XF\n" - "uUPwo9Ga2q7iY8+8yPRNs8gfl6IrHvUUtaukWdMlQq5nhRFaPgOzHOEZGGEUk3UF\n" - "R/8lld6xQFoe7FvHwQ5cIkIl0cN/I4jiUb9fQhRwcBPjmQbCisYXUZDe8KtCnkjw\n" - "ZZfOp7UclWPm+hv4G3cfeRUUis0Xf8sScjLAam7ojkGL9CeETXl1JGSqqmVN7svN\n" - "yDsiQebCSrA4wCt+ENe9rE6Cme6dEv+U4lyx4oijn4sNvPwwgmu+/g6XjhE6IWBL\n" - "kWXLJ1K4rixbqt3d3+H7IAFiX99bAgMBAAGjdzB1MAwGA1UdEwEB/wQCMAAwFAYD\n" - "VR0RBA0wC4IJbG9jYWxob3N0MA8GA1UdDwEB/wQFAwMHoAAwHQYDVR0OBBYEFNt6\n" - "DwawLeNaZ+5LMNBdeTVWZsmOMB8GA1UdIwQYMBaAFCjlkQq5yKVHzXPQLahHCcmS\n" - "AJRpMA0GCSqGSIb3DQEBCwUAA4IBAQClbMnEQpHwwqcdrGKiNXQYyJDClVfQFTlh\n" - "fTU2qUx8gfyP+1yR0lqsdremSzSjLPM6LmcJLAdu7GhL32Lc3068CCzDtd6vJDGf\n" - "vO1eudcixbAf7NuELCZM08wLuJvKQFlNYFSVZSb04habhcwgowsiy0YC+dF9XQKa\n" - "5YDGvOuMTqqKt5Wph+izCGQ+6WyRZQp2CIFWo0vBCYFaslaA/TBnsldIuACJFmg9\n" - "kmspW97ROmNr1jfQNyBVWjd1EER80zZCngXq4+JnP1tppJNcYFhHeqSGQCqASehY\n" - "CC7ITbKAK8IdwU4gVk7R92rOKyrFPimc1UwObNpxbL5jizZqemW7\n" - "-----END CERTIFICATE-----\n" -/* 3 */ "-----BEGIN CERTIFICATE-----\n" - "MIIC9TCCAd2gAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTQxMTI3MTUwMDM2WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC16A/jNGbd6oP3\n" - "t/neq6hlWopjKEPnM9FMZgPSNVsKtQEb1dOx2EDCuP3rC2POogAjo0NuE/SZtM0N\n" - "Nyf+X3QdjwcFdugMLTXGmGlEhCeWhSEjLwrd6eapdHzwpV0Ag22CvzoKEQenu92+\n" - "TI1MN/1j3XOgnOP3t4q5TeSZn7XtAMCBqt9b+LJT5XJ/sF6b1sH803HqV3CZ6ga+\n" - "kFY+uDcpImQEJNZi/B1xYObSHF+frg4SyeqjxiV9vmFHhRgLmD96iVukQTC/RPX3\n" - "ntl0wGBjpmglUVdcAJdZL7L2um1T1n3u+jS3U5FW7+MOnnTGqRT2pcYtHHLg2GDf\n" - "SSUpeuphAgMBAAGjWDBWMA8GA1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYB\n" - "BQUHAwkwDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQU1aTwaphaQJeRY+IF9NNT\n" - "mHHpIQ0wDQYJKoZIhvcNAQELBQADggEBAGUjVPu4aeel7UmgUvjBEpGbw6j9wKRL\n" - "4vVgGllKWH0diISEjPcJv0dTDJs4ZbY7KAEc4DRCl1QwNFsuASP5BlMSrWo+eGiC\n" - "oxsndY2EIpHAheLHXkVwbOwM5VRN2IhlcmVtHM370luvJjNa1MXy1p1/VEjGS794\n" - "FgtMOm9yILCM8WqwRHOY/mAOu/9iY/Zfqfobm+IfqgBmQMOLAIMKJffh15meTDRi\n" - "W3QXdf/khr1T3JEJ55t1WxcC1cWV4FnecUU4wlKs1mBghV+/8cgbYjoIdUAsYsdv\n" - "SjySP3B65XXw9G3MmHOjNoRpF7Oeea8tN+zxw3xFx/a9Uq19BdOlrHE=\n" - "-----END CERTIFICATE-----\n" -/* 1 */ "-----BEGIN CERTIFICATE-----\n" - "MIIDFjCCAf6gAwIBAgIBAjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0x\n" - "MCIYDzIwMTQxMTI3MTUwMDM2WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDOnFo6ntaysv14\n" - "ewFwkm+mbE/8hEiZEcMNnWNSJb9tgpATLgu9LefStzRIvzns4OyLL77TEz8Gl8gJ\n" - "syfba2aIKxLveO1jpqQSfkcVlufa/GHspPKMkHMjz1UB+fQEAazAjVKHoofemKxW\n" - "0TtLeuL0LoE4g452Yy60vxRNwOs7WPZ5lktIQTYZTYcEjiiVlrRXXGgo9qCSfG4n\n" - "B+TmlraGHHPlKINcsOJnZOOZ6qHx+ZpqeCvuD7apiPcVzfLhxdJFoznY4r/bdCZT\n" - "ehChrKCYk5DmaPRBW0TLWoYrny745SG9U8XzTkKYaCDLhyMvn1oMrRVdbwO3/e6q\n" - "DbEvbpUrAgMBAAGjeTB3MA8GA1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYB\n" - "BQUHAwkwDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQUKOWRCrnIpUfNc9AtqEcJ\n" - "yZIAlGkwHwYDVR0jBBgwFoAUarsjXomEecxGrV0LDBX8Dy+vh68wDQYJKoZIhvcN\n" - "AQELBQADggEBAKgo2SIyLywamhcqLnhxCXgx0SHJgmEVD7CvPgTISZisg5yMS77G\n" - "WqtHbyo7kOYIjbrzVRGOsijKmgCgqNTQXSMbWUfDOV93q82nV0bjQtnvZKMc0+OM\n" - "/cB5PA7BFKvVrpYGefFQtrgkFhHSoUwDtpJAdYJPWgUMiqpvDuQdD/d6FQ18rb7w\n" - "QuIIvUeHaawm8HLrJ5JZoy7BnryY4SEFqGSTeNWp4CyeTeQPAcCdZ3NlnSDV1RM2\n" - "QelcD8S6GAp8l8LcF1zqiaoqWVYdeVnO6Doabx/IP7ZxctcdaEAdUQYjJ/dG3A2p\n" - "wpf3tVoOBKFByhdBrz7uda09sq57+AmvQdk=\n" "-----END CERTIFICATE-----\n" -/* 2 */ "-----BEGIN CERTIFICATE-----\n" - "MIIDFjCCAf6gAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTQxMTI3MTUwMDM2WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDft9fjnipXU+WO\n" - "NsIhqVgTkwQPWklvuJbAphYa0oCm/+S0dvalVEq9RMqV+sUtqrZ55LsHxvtD1iu9\n" - "03kf/FcqaAjSVZBt6n8JIfl4xyi//FYizamm2KEsBCEsUCH6iJGMGXfYAWgpMJ/6\n" - "yHwikBDI0Ea5ckIW58eWHI6Hmd11DTSy6OGNnOFqyEe3S/m1zTtNNGiA0VcSyAjg\n" - "98zaWGQHaQuqczqfoMz0dB5ly0mw2LfVxCPM8Z8xH1S9TNVqWnKu483Gp+2TkeKl\n" - "bJ5dI1XMihaxFq6xf9OsULGtMd8biRNxl8f8zsfd0A9LoPJWKdp345OJ33ULwogI\n" - "M6kUMw63AgMBAAGjeTB3MA8GA1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYB\n" - "BQUHAwkwDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQUarsjXomEecxGrV0LDBX8\n" - "Dy+vh68wHwYDVR0jBBgwFoAU1aTwaphaQJeRY+IF9NNTmHHpIQ0wDQYJKoZIhvcN\n" - "AQELBQADggEBALGbNfhgr46cnDIbvPxXmNmMm840oVc9n5pW4be9emTWO67zkqll\n" - "KBjLbEAZTVSsjqPh8357iR5nVAen23eVYD5eGkuDZZAP3kvfVNVNCTQAEm0XDAse\n" - "kxbxL0ZWezMbC/U8R3tFSDZOCb/bM+wCKg1hX5My0+utKAmhbwlYQY9fKyhZCUdv\n" - "GnO3f5JInJDH2FmG80RouZ8Av6CjOwfChz+SPTgrMsbTugYWX9SVQ8oRF+N7cudC\n" - "7XlvScNQKlbzmMl2zLQOrL78djCLVdU70bZcpq1o7L/R59YNAB+4fGH8rTWZMYQB\n" - "rSoCPlyNAYAqMPXPsUFV/ngeYNSbpTz3SGA=\n" "-----END CERTIFICATE-----\n" "\n"; - -const gnutls_datum_t server_cert = { - server_cert_pem, - sizeof(server_cert_pem) -}; + /* 0 */ + "-----BEGIN CERTIFICATE-----\n" + "MIIDIzCCAgugAwIBAgIMVHc8lDcqr/T62g5oMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTIwIhgPMjAxNDExMjcxNTAwMzZaGA85OTk5MTIzMTIzNTk1OVow\n" + "EzERMA8GA1UEAxMIc2VydmVyLTMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" + "AoIBAQCsfFrZmOxA7ijkppwPtakc8ecuBRr9Dr4pe/alC/OXVZsZlAlnR0xd53XF\n" + "uUPwo9Ga2q7iY8+8yPRNs8gfl6IrHvUUtaukWdMlQq5nhRFaPgOzHOEZGGEUk3UF\n" + "R/8lld6xQFoe7FvHwQ5cIkIl0cN/I4jiUb9fQhRwcBPjmQbCisYXUZDe8KtCnkjw\n" + "ZZfOp7UclWPm+hv4G3cfeRUUis0Xf8sScjLAam7ojkGL9CeETXl1JGSqqmVN7svN\n" + "yDsiQebCSrA4wCt+ENe9rE6Cme6dEv+U4lyx4oijn4sNvPwwgmu+/g6XjhE6IWBL\n" + "kWXLJ1K4rixbqt3d3+H7IAFiX99bAgMBAAGjdzB1MAwGA1UdEwEB/wQCMAAwFAYD\n" + "VR0RBA0wC4IJbG9jYWxob3N0MA8GA1UdDwEB/wQFAwMHoAAwHQYDVR0OBBYEFNt6\n" + "DwawLeNaZ+5LMNBdeTVWZsmOMB8GA1UdIwQYMBaAFCjlkQq5yKVHzXPQLahHCcmS\n" + "AJRpMA0GCSqGSIb3DQEBCwUAA4IBAQClbMnEQpHwwqcdrGKiNXQYyJDClVfQFTlh\n" + "fTU2qUx8gfyP+1yR0lqsdremSzSjLPM6LmcJLAdu7GhL32Lc3068CCzDtd6vJDGf\n" + "vO1eudcixbAf7NuELCZM08wLuJvKQFlNYFSVZSb04habhcwgowsiy0YC+dF9XQKa\n" + "5YDGvOuMTqqKt5Wph+izCGQ+6WyRZQp2CIFWo0vBCYFaslaA/TBnsldIuACJFmg9\n" + "kmspW97ROmNr1jfQNyBVWjd1EER80zZCngXq4+JnP1tppJNcYFhHeqSGQCqASehY\n" + "CC7ITbKAK8IdwU4gVk7R92rOKyrFPimc1UwObNpxbL5jizZqemW7\n" + "-----END CERTIFICATE-----\n" + /* 3 */ "-----BEGIN CERTIFICATE-----\n" + "MIIC9TCCAd2gAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQxMTI3MTUwMDM2WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC16A/jNGbd6oP3\n" + "t/neq6hlWopjKEPnM9FMZgPSNVsKtQEb1dOx2EDCuP3rC2POogAjo0NuE/SZtM0N\n" + "Nyf+X3QdjwcFdugMLTXGmGlEhCeWhSEjLwrd6eapdHzwpV0Ag22CvzoKEQenu92+\n" + "TI1MN/1j3XOgnOP3t4q5TeSZn7XtAMCBqt9b+LJT5XJ/sF6b1sH803HqV3CZ6ga+\n" + "kFY+uDcpImQEJNZi/B1xYObSHF+frg4SyeqjxiV9vmFHhRgLmD96iVukQTC/RPX3\n" + "ntl0wGBjpmglUVdcAJdZL7L2um1T1n3u+jS3U5FW7+MOnnTGqRT2pcYtHHLg2GDf\n" + "SSUpeuphAgMBAAGjWDBWMA8GA1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYB\n" + "BQUHAwkwDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQU1aTwaphaQJeRY+IF9NNT\n" + "mHHpIQ0wDQYJKoZIhvcNAQELBQADggEBAGUjVPu4aeel7UmgUvjBEpGbw6j9wKRL\n" + "4vVgGllKWH0diISEjPcJv0dTDJs4ZbY7KAEc4DRCl1QwNFsuASP5BlMSrWo+eGiC\n" + "oxsndY2EIpHAheLHXkVwbOwM5VRN2IhlcmVtHM370luvJjNa1MXy1p1/VEjGS794\n" + "FgtMOm9yILCM8WqwRHOY/mAOu/9iY/Zfqfobm+IfqgBmQMOLAIMKJffh15meTDRi\n" + "W3QXdf/khr1T3JEJ55t1WxcC1cWV4FnecUU4wlKs1mBghV+/8cgbYjoIdUAsYsdv\n" + "SjySP3B65XXw9G3MmHOjNoRpF7Oeea8tN+zxw3xFx/a9Uq19BdOlrHE=\n" + "-----END CERTIFICATE-----\n" + /* 1 */ "-----BEGIN CERTIFICATE-----\n" + "MIIDFjCCAf6gAwIBAgIBAjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0x\n" + "MCIYDzIwMTQxMTI3MTUwMDM2WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDOnFo6ntaysv14\n" + "ewFwkm+mbE/8hEiZEcMNnWNSJb9tgpATLgu9LefStzRIvzns4OyLL77TEz8Gl8gJ\n" + "syfba2aIKxLveO1jpqQSfkcVlufa/GHspPKMkHMjz1UB+fQEAazAjVKHoofemKxW\n" + "0TtLeuL0LoE4g452Yy60vxRNwOs7WPZ5lktIQTYZTYcEjiiVlrRXXGgo9qCSfG4n\n" + "B+TmlraGHHPlKINcsOJnZOOZ6qHx+ZpqeCvuD7apiPcVzfLhxdJFoznY4r/bdCZT\n" + "ehChrKCYk5DmaPRBW0TLWoYrny745SG9U8XzTkKYaCDLhyMvn1oMrRVdbwO3/e6q\n" + "DbEvbpUrAgMBAAGjeTB3MA8GA1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYB\n" + "BQUHAwkwDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQUKOWRCrnIpUfNc9AtqEcJ\n" + "yZIAlGkwHwYDVR0jBBgwFoAUarsjXomEecxGrV0LDBX8Dy+vh68wDQYJKoZIhvcN\n" + "AQELBQADggEBAKgo2SIyLywamhcqLnhxCXgx0SHJgmEVD7CvPgTISZisg5yMS77G\n" + "WqtHbyo7kOYIjbrzVRGOsijKmgCgqNTQXSMbWUfDOV93q82nV0bjQtnvZKMc0+OM\n" + "/cB5PA7BFKvVrpYGefFQtrgkFhHSoUwDtpJAdYJPWgUMiqpvDuQdD/d6FQ18rb7w\n" + "QuIIvUeHaawm8HLrJ5JZoy7BnryY4SEFqGSTeNWp4CyeTeQPAcCdZ3NlnSDV1RM2\n" + "QelcD8S6GAp8l8LcF1zqiaoqWVYdeVnO6Doabx/IP7ZxctcdaEAdUQYjJ/dG3A2p\n" + "wpf3tVoOBKFByhdBrz7uda09sq57+AmvQdk=\n" + "-----END CERTIFICATE-----\n" + /* 2 */ "-----BEGIN CERTIFICATE-----\n" + "MIIDFjCCAf6gAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQxMTI3MTUwMDM2WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDft9fjnipXU+WO\n" + "NsIhqVgTkwQPWklvuJbAphYa0oCm/+S0dvalVEq9RMqV+sUtqrZ55LsHxvtD1iu9\n" + "03kf/FcqaAjSVZBt6n8JIfl4xyi//FYizamm2KEsBCEsUCH6iJGMGXfYAWgpMJ/6\n" + "yHwikBDI0Ea5ckIW58eWHI6Hmd11DTSy6OGNnOFqyEe3S/m1zTtNNGiA0VcSyAjg\n" + "98zaWGQHaQuqczqfoMz0dB5ly0mw2LfVxCPM8Z8xH1S9TNVqWnKu483Gp+2TkeKl\n" + "bJ5dI1XMihaxFq6xf9OsULGtMd8biRNxl8f8zsfd0A9LoPJWKdp345OJ33ULwogI\n" + "M6kUMw63AgMBAAGjeTB3MA8GA1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYB\n" + "BQUHAwkwDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQUarsjXomEecxGrV0LDBX8\n" + "Dy+vh68wHwYDVR0jBBgwFoAU1aTwaphaQJeRY+IF9NNTmHHpIQ0wDQYJKoZIhvcN\n" + "AQELBQADggEBALGbNfhgr46cnDIbvPxXmNmMm840oVc9n5pW4be9emTWO67zkqll\n" + "KBjLbEAZTVSsjqPh8357iR5nVAen23eVYD5eGkuDZZAP3kvfVNVNCTQAEm0XDAse\n" + "kxbxL0ZWezMbC/U8R3tFSDZOCb/bM+wCKg1hX5My0+utKAmhbwlYQY9fKyhZCUdv\n" + "GnO3f5JInJDH2FmG80RouZ8Av6CjOwfChz+SPTgrMsbTugYWX9SVQ8oRF+N7cudC\n" + "7XlvScNQKlbzmMl2zLQOrL78djCLVdU70bZcpq1o7L/R59YNAB+4fGH8rTWZMYQB\n" + "rSoCPlyNAYAqMPXPsUFV/ngeYNSbpTz3SGA=\n" + "-----END CERTIFICATE-----\n" + "\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIEowIBAAKCAQEArHxa2ZjsQO4o5KacD7WpHPHnLgUa/Q6+KXv2pQvzl1WbGZQJ\n" - "Z0dMXed1xblD8KPRmtqu4mPPvMj0TbPIH5eiKx71FLWrpFnTJUKuZ4URWj4Dsxzh\n" - "GRhhFJN1BUf/JZXesUBaHuxbx8EOXCJCJdHDfyOI4lG/X0IUcHAT45kGworGF1GQ\n" - "3vCrQp5I8GWXzqe1HJVj5vob+Bt3H3kVFIrNF3/LEnIywGpu6I5Bi/QnhE15dSRk\n" - "qqplTe7Lzcg7IkHmwkqwOMArfhDXvaxOgpnunRL/lOJcseKIo5+LDbz8MIJrvv4O\n" - "l44ROiFgS5FlyydSuK4sW6rd3d/h+yABYl/fWwIDAQABAoIBAQCL0vc25C/I5wfB\n" - "a4qhdYsVCsh0VvEs6TGgoXwtCYY7TMtBre79iR/QE902HtyDi9lT5ijVH0J88I6T\n" - "GsWFTr/Iovzb//WXcrWmw+prwsRxWkpXfXbAiDHSo0K+uEGOr3JqUBd+b+5q/QZu\n" - "C9uBmw0W2LCTft9bEk9NYp3M5/VB6DaQbk//b7E9KFc7nFgzeQaSYHu9NBSLGZ2e\n" - "HqvzotiwlI6yfWTPm/esipXWaB4zqesx0TedoNK9SUAFdFBEHTyqm5RoGotjNLoM\n" - "bN08Fj3qOJekjPGBrMu37UKoRGdaTyPlmCGZ0+HN2F4kuaUGE8HHnUU3VIA3lTMh\n" - "LGt8jYpxAoGBAMsr8XlLsGFUgntHbCe5GhNKd9RJtRH1+zNw88ilfjttpxjggcL7\n" - "KGbcCK1VOhuD0Ud1pTklYFOUckZY6y1b4nUkp5SG4w8OiIcIZeE9erKwprnHa9RF\n" - "cewMtYhJ68evPrbM9UHEkTbdNBI4Cv561cY80pnsMTxy9al/aM23SLIJAoGBANlV\n" - "0J/lUuA4Lsvrtu/IriwUguMIBw7hC5gBIU58K9Xpo6fr55VTt6OALDrY5zbCPf38\n" - "pGMZgPsP3FG61BycA7jWB01Y++3COYKNKQtddWuY0SqCVS7Mdt6DwpYwUD7gRDY3\n" - "aIHMUP45glYEVnHgpwNM09f+ldiK4TnCJuKYRM9DAoGAYM3NPlf78EQN76M2Oy8M\n" - "54gh1DpSVf539CirXzzLCpHSfh3qdfapZ2kLkVr8VsPV4VCCqtnOLcSbNj2DwJb5\n" - "LYuLdU9XvILWNlCgClP6tE1LA1WrYPa9sxTTId7mwrwTC5JYgT+hWRzIhK3DP0FT\n" - "viKYzdImG4FC38HfM7VSo9ECgYBiP+wnTKlxmZR2NWIm9ibe4IrnDYr7S/tMxT4E\n" - "WBgNBSkp0XiIxibfcCMOm12zII6b0mmSL0ZiuSHVhMs8/76jAYadjdud+U68WQo0\n" - "DBT4BkaQnAjcNiyKnTALa13rfsD3bYb+HpqCwwbL0fwuUOvPjxy5qWqeUPJOhRnF\n" - "GCcLNwKBgHtDlVG5lJqtNty4aL9oBgcP0VcY/73Dx+l25DhprdlTHsjg+ue0rpjA\n" - "ieq7o2hENu6MA1AQ8o+BP6SlRuhYmvzh7vVbs3qFjnslaMCveHZDITN/0NJqF9xO\n" - "IeKrLzOIboyQw/sMSrPIPYILgXP0YnueteOgPUSZEcrqPIJI08Sb\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIIEowIBAAKCAQEArHxa2ZjsQO4o5KacD7WpHPHnLgUa/Q6+KXv2pQvzl1WbGZQJ\n" + "Z0dMXed1xblD8KPRmtqu4mPPvMj0TbPIH5eiKx71FLWrpFnTJUKuZ4URWj4Dsxzh\n" + "GRhhFJN1BUf/JZXesUBaHuxbx8EOXCJCJdHDfyOI4lG/X0IUcHAT45kGworGF1GQ\n" + "3vCrQp5I8GWXzqe1HJVj5vob+Bt3H3kVFIrNF3/LEnIywGpu6I5Bi/QnhE15dSRk\n" + "qqplTe7Lzcg7IkHmwkqwOMArfhDXvaxOgpnunRL/lOJcseKIo5+LDbz8MIJrvv4O\n" + "l44ROiFgS5FlyydSuK4sW6rd3d/h+yABYl/fWwIDAQABAoIBAQCL0vc25C/I5wfB\n" + "a4qhdYsVCsh0VvEs6TGgoXwtCYY7TMtBre79iR/QE902HtyDi9lT5ijVH0J88I6T\n" + "GsWFTr/Iovzb//WXcrWmw+prwsRxWkpXfXbAiDHSo0K+uEGOr3JqUBd+b+5q/QZu\n" + "C9uBmw0W2LCTft9bEk9NYp3M5/VB6DaQbk//b7E9KFc7nFgzeQaSYHu9NBSLGZ2e\n" + "HqvzotiwlI6yfWTPm/esipXWaB4zqesx0TedoNK9SUAFdFBEHTyqm5RoGotjNLoM\n" + "bN08Fj3qOJekjPGBrMu37UKoRGdaTyPlmCGZ0+HN2F4kuaUGE8HHnUU3VIA3lTMh\n" + "LGt8jYpxAoGBAMsr8XlLsGFUgntHbCe5GhNKd9RJtRH1+zNw88ilfjttpxjggcL7\n" + "KGbcCK1VOhuD0Ud1pTklYFOUckZY6y1b4nUkp5SG4w8OiIcIZeE9erKwprnHa9RF\n" + "cewMtYhJ68evPrbM9UHEkTbdNBI4Cv561cY80pnsMTxy9al/aM23SLIJAoGBANlV\n" + "0J/lUuA4Lsvrtu/IriwUguMIBw7hC5gBIU58K9Xpo6fr55VTt6OALDrY5zbCPf38\n" + "pGMZgPsP3FG61BycA7jWB01Y++3COYKNKQtddWuY0SqCVS7Mdt6DwpYwUD7gRDY3\n" + "aIHMUP45glYEVnHgpwNM09f+ldiK4TnCJuKYRM9DAoGAYM3NPlf78EQN76M2Oy8M\n" + "54gh1DpSVf539CirXzzLCpHSfh3qdfapZ2kLkVr8VsPV4VCCqtnOLcSbNj2DwJb5\n" + "LYuLdU9XvILWNlCgClP6tE1LA1WrYPa9sxTTId7mwrwTC5JYgT+hWRzIhK3DP0FT\n" + "viKYzdImG4FC38HfM7VSo9ECgYBiP+wnTKlxmZR2NWIm9ibe4IrnDYr7S/tMxT4E\n" + "WBgNBSkp0XiIxibfcCMOm12zII6b0mmSL0ZiuSHVhMs8/76jAYadjdud+U68WQo0\n" + "DBT4BkaQnAjcNiyKnTALa13rfsD3bYb+HpqCwwbL0fwuUOvPjxy5qWqeUPJOhRnF\n" + "GCcLNwKBgHtDlVG5lJqtNty4aL9oBgcP0VcY/73Dx+l25DhprdlTHsjg+ue0rpjA\n" + "ieq7o2hENu6MA1AQ8o+BP6SlRuhYmvzh7vVbs3qFjnslaMCveHZDITN/0NJqF9xO\n" + "IeKrLzOIboyQw/sMSrPIPYILgXP0YnueteOgPUSZEcrqPIJI08Sb\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; /* A very basic TLS client, with anonymous authentication. */ -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd) { @@ -197,10 +196,10 @@ static void client(int fd) gnutls_init(&session, GNUTLS_CLIENT); /* Use default priorities */ - ret = - gnutls_priority_set_direct(session, - "NONE:+VERS-TLS1.0:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-NULL:+RSA", - &p); + ret = gnutls_priority_set_direct( + session, + "NONE:+VERS-TLS1.0:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-NULL:+RSA", + &p); if (ret < 0) { fail("error in setting priority: %s\n", p); exit(1); @@ -216,8 +215,7 @@ static void client(int fd) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { if (debug) { @@ -232,8 +230,8 @@ static void client(int fd) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); close(fd); @@ -264,18 +262,18 @@ static void server(int fd) /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NONE:+VERS-TLS1.0:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-NULL:+RSA", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-TLS1.0:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-NULL:+RSA", + NULL); if (debug) { gnutls_global_set_log_level(4711); } gnutls_certificate_allocate_credentials(&x509_cred); - ret = gnutls_certificate_set_x509_key_mem(x509_cred, &server_cert, - &server_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + x509_cred, &server_cert, &server_key, GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("server: gnutls_certificate_set_x509_key_mem: %s\n", gnutls_strerror(ret)); @@ -288,16 +286,15 @@ static void server(int fd) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (debug) success("server: Handshake was completed\n"); if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); close(fd); gnutls_deinit(session); @@ -357,4 +354,4 @@ void doit(void) start(); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/mini-dtls-discard.c b/tests/mini-dtls-discard.c index 121374f0d4..69fe5ce92d 100644 --- a/tests/mini-dtls-discard.c +++ b/tests/mini-dtls-discard.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,26 +35,26 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" -# define TXT1 "hello there" -# define TXT1_SIZE (sizeof(TXT1)-1) +#define TXT1 "hello there" +#define TXT1_SIZE (sizeof(TXT1) - 1) -# define TXT2 "2hello there" -# define TXT2_SIZE (sizeof(TXT2)-1) +#define TXT2 "2hello there" +#define TXT2_SIZE (sizeof(TXT2) - 1) static void terminate(void); @@ -68,7 +68,7 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static ssize_t push(gnutls_transport_ptr_t tr, const void *data, size_t len) { @@ -118,8 +118,7 @@ static void client(int fd, const char *prio) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -132,8 +131,8 @@ static void client(int fd, const char *prio) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); gnutls_transport_set_push_function(session, push); do { @@ -206,8 +205,7 @@ static void server(int fd, const char *prio) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -220,8 +218,8 @@ static void server(int fd, const char *prio) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* see the Getting peer's information example */ /* print_info(session); */ @@ -258,8 +256,7 @@ static void server(int fd, const char *prio) success("server: finished\n"); } -static -void start(const char *prio) +static void start(const char *prio) { int fd[2]; int ret; @@ -295,10 +292,8 @@ void start(const char *prio) void doit(void) { - start - ("NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL"); - start - ("NONE:+VERS-DTLS1.2:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL"); + start("NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL"); + start("NONE:+VERS-DTLS1.2:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/mini-dtls-fork.c b/tests/mini-dtls-fork.c index 9985dd06f4..3c5ca1d02a 100644 --- a/tests/mini-dtls-fork.c +++ b/tests/mini-dtls-fork.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,10 +33,10 @@ #include #include #ifndef _WIN32 -# include -# include -# include -# include +#include +#include +#include +#include #endif #include "utils.h" @@ -74,39 +74,36 @@ static void tls_log_func(int level, const char *str) } static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICHzCCAaWgAwIBAgIBCTAKBggqhkjOPQQDAjA+MQswCQYDVQQGEwJOTDERMA8G\n" - "A1UEChMIUG9sYXJTU0wxHDAaBgNVBAMTE1BvbGFyc3NsIFRlc3QgRUMgQ0EwHhcN\n" - "MTMwOTI0MTU1MjA0WhcNMjMwOTIyMTU1MjA0WjA0MQswCQYDVQQGEwJOTDERMA8G\n" - "A1UEChMIUG9sYXJTU0wxEjAQBgNVBAMTCWxvY2FsaG9zdDBZMBMGByqGSM49AgEG\n" - "CCqGSM49AwEHA0IABDfMVtl2CR5acj7HWS3/IG7ufPkGkXTQrRS192giWWKSTuUA\n" - "2CMR/+ov0jRdXRa9iojCa3cNVc2KKg76Aci07f+jgZ0wgZowCQYDVR0TBAIwADAd\n" - "BgNVHQ4EFgQUUGGlj9QH2deCAQzlZX+MY0anE74wbgYDVR0jBGcwZYAUnW0gJEkB\n" - "PyvLeLUZvH4kydv7NnyhQqRAMD4xCzAJBgNVBAYTAk5MMREwDwYDVQQKEwhQb2xh\n" - "clNTTDEcMBoGA1UEAxMTUG9sYXJzc2wgVGVzdCBFQyBDQYIJAMFD4n5iQ8zoMAoG\n" - "CCqGSM49BAMCA2gAMGUCMQCaLFzXptui5WQN8LlO3ddh1hMxx6tzgLvT03MTVK2S\n" - "C12r0Lz3ri/moSEpNZWqPjkCMCE2f53GXcYLqyfyJR078c/xNSUU5+Xxl7VZ414V\n" - "fGa5kHvHARBPc8YAIVIqDvHH1Q==\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICHzCCAaWgAwIBAgIBCTAKBggqhkjOPQQDAjA+MQswCQYDVQQGEwJOTDERMA8G\n" + "A1UEChMIUG9sYXJTU0wxHDAaBgNVBAMTE1BvbGFyc3NsIFRlc3QgRUMgQ0EwHhcN\n" + "MTMwOTI0MTU1MjA0WhcNMjMwOTIyMTU1MjA0WjA0MQswCQYDVQQGEwJOTDERMA8G\n" + "A1UEChMIUG9sYXJTU0wxEjAQBgNVBAMTCWxvY2FsaG9zdDBZMBMGByqGSM49AgEG\n" + "CCqGSM49AwEHA0IABDfMVtl2CR5acj7HWS3/IG7ufPkGkXTQrRS192giWWKSTuUA\n" + "2CMR/+ov0jRdXRa9iojCa3cNVc2KKg76Aci07f+jgZ0wgZowCQYDVR0TBAIwADAd\n" + "BgNVHQ4EFgQUUGGlj9QH2deCAQzlZX+MY0anE74wbgYDVR0jBGcwZYAUnW0gJEkB\n" + "PyvLeLUZvH4kydv7NnyhQqRAMD4xCzAJBgNVBAYTAk5MMREwDwYDVQQKEwhQb2xh\n" + "clNTTDEcMBoGA1UEAxMTUG9sYXJzc2wgVGVzdCBFQyBDQYIJAMFD4n5iQ8zoMAoG\n" + "CCqGSM49BAMCA2gAMGUCMQCaLFzXptui5WQN8LlO3ddh1hMxx6tzgLvT03MTVK2S\n" + "C12r0Lz3ri/moSEpNZWqPjkCMCE2f53GXcYLqyfyJR078c/xNSUU5+Xxl7VZ414V\n" + "fGa5kHvHARBPc8YAIVIqDvHH1Q==\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN EC PRIVATE KEY-----\n" - "MHcCAQEEIPEqEyB2AnCoPL/9U/YDHvdqXYbIogTywwyp6/UfDw6noAoGCCqGSM49\n" - "AwEHoUQDQgAEN8xW2XYJHlpyPsdZLf8gbu58+QaRdNCtFLX3aCJZYpJO5QDYIxH/\n" - "6i/SNF1dFr2KiMJrdw1VzYoqDvoByLTt/w==\n" "-----END EC PRIVATE KEY-----\n"; + "-----BEGIN EC PRIVATE KEY-----\n" + "MHcCAQEEIPEqEyB2AnCoPL/9U/YDHvdqXYbIogTywwyp6/UfDw6noAoGCCqGSM49\n" + "AwEHoUQDQgAEN8xW2XYJHlpyPsdZLf8gbu58+QaRdNCtFLX3aCJZYpJO5QDYIxH/\n" + "6i/SNF1dFr2KiMJrdw1VzYoqDvoByLTt/w==\n" + "-----END EC PRIVATE KEY-----\n"; -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; -# define MSG "hello1111" -# define MSG2 "xxxxxxxxxxxx" +#define MSG "hello1111" +#define MSG2 "xxxxxxxxxxxx" -static -void do_fork_stuff(gnutls_session_t session) +static void do_fork_stuff(gnutls_session_t session) { pid_t pid; int ret; @@ -119,13 +116,13 @@ void do_fork_stuff(gnutls_session_t session) } else if (pid != 0) { if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); sec_sleep(1); /* the server should reflect our messages */ ret = gnutls_record_recv(session, buf, sizeof(buf)); - if (ret != sizeof(MSG) - 1 - || memcmp(buf, MSG, sizeof(MSG) - 1) != 0) { + if (ret != sizeof(MSG) - 1 || + memcmp(buf, MSG, sizeof(MSG) - 1) != 0) { fail("client: recv failed: %s\n", gnutls_strerror(ret)); exit(1); } @@ -135,8 +132,8 @@ void do_fork_stuff(gnutls_session_t session) } ret = gnutls_record_recv(session, buf, sizeof(buf)); - if (ret != sizeof(MSG2) - 1 - || memcmp(buf, MSG2, sizeof(MSG2) - 1) != 0) { + if (ret != sizeof(MSG2) - 1 || + memcmp(buf, MSG2, sizeof(MSG2) - 1) != 0) { fail("client: recv2 failed: %s\n", gnutls_strerror(ret)); exit(1); @@ -152,7 +149,7 @@ void do_fork_stuff(gnutls_session_t session) gnutls_strerror(ret)); exit(1); } - } else if (pid == 0) { /* child */ + } else if (pid == 0) { /* child */ ret = gnutls_record_send(session, MSG, sizeof(MSG) - 1); if (ret != sizeof(MSG) - 1) { fail("client: send failed: %s\n", gnutls_strerror(ret)); @@ -230,9 +227,10 @@ static void client(int fd, unsigned do_fork) //gnutls_transport_set_push_function(session, push); /* Use default priorities */ - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS-ALL:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ECDHE-ECDSA:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS-ALL:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ECDHE-ECDSA:+CURVE-ALL", + NULL); /* put the anonymous credentials to the current session */ @@ -244,8 +242,7 @@ static void client(int fd, unsigned do_fork) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -281,13 +278,13 @@ static void server(int fd, unsigned do_fork) */ global_init(); -# if 0 +#if 0 if (debug) { side = "server"; gnutls_global_set_log_function(tls_log_func); gnutls_global_set_log_level(4711); } -# endif +#endif gnutls_certificate_allocate_credentials(&x509_cred); gnutls_certificate_set_x509_key_mem(x509_cred, &server_cert, @@ -301,9 +298,10 @@ static void server(int fd, unsigned do_fork) /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS1.2:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ECDHE-ECDSA:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS1.2:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ECDHE-ECDSA:+CURVE-ALL", + NULL); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -324,8 +322,8 @@ static void server(int fd, unsigned do_fork) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); if (do_fork) do_fork_stuff(session); @@ -343,8 +341,7 @@ static void server(int fd, unsigned do_fork) success("server: finished\n"); } -static -void run(unsigned do_fork) +static void run(unsigned do_fork) { int fd[2]; int ret; @@ -383,4 +380,4 @@ void doit(void) run(0); run(1); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/mini-dtls-heartbeat.c b/tests/mini-dtls-heartbeat.c index b541683cac..8c5d4db225 100644 --- a/tests/mini-dtls-heartbeat.c +++ b/tests/mini-dtls-heartbeat.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,18 +35,18 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" static void terminate(void); @@ -69,7 +69,7 @@ static pid_t child; /* A very basic DTLS client, with anonymous authentication, that exchanges heartbeats. */ -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd, int server_init) { @@ -95,9 +95,10 @@ static void client(int fd, int server_init) gnutls_dtls_set_mtu(session, 1500); /* Use default priorities */ - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", + NULL); /* put the anonymous credentials to the current session */ @@ -109,8 +110,7 @@ static void client(int fd, int server_init) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -123,18 +123,17 @@ static void client(int fd, int server_init) if (debug) success("client: DTLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); if (!server_init) { do { - ret = - gnutls_record_recv(session, buffer, sizeof(buffer)); + ret = gnutls_record_recv(session, buffer, + sizeof(buffer)); if (ret == GNUTLS_E_HEARTBEAT_PING_RECEIVED) { if (debug) - success - ("Ping received. Replying with pong.\n"); + success("Ping received. Replying with pong.\n"); ret2 = gnutls_heartbeat_pong(session, 0); if (ret2 < 0) { fail("pong: %s\n", @@ -142,9 +141,8 @@ static void client(int fd, int server_init) exit(1); } } - } - while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED - || ret == GNUTLS_E_HEARTBEAT_PING_RECEIVED); + } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED || + ret == GNUTLS_E_HEARTBEAT_PING_RECEIVED); if (ret < 0) { fail("recv: %s\n", gnutls_strerror(ret)); @@ -152,14 +150,12 @@ static void client(int fd, int server_init) } } else { do { - ret = - gnutls_heartbeat_ping(session, 256, 5, - GNUTLS_HEARTBEAT_WAIT); + ret = gnutls_heartbeat_ping(session, 256, 5, + GNUTLS_HEARTBEAT_WAIT); if (debug) success("Ping sent.\n"); - } - while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); + } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) { fail("ping: %s\n", gnutls_strerror(ret)); @@ -189,9 +185,10 @@ static gnutls_session_t initialize_tls_session(void) /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", + NULL); return session; } @@ -229,8 +226,7 @@ static void server(int fd, int server_init) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -243,21 +239,20 @@ static void server(int fd, int server_init) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* see the Getting peer's information example */ /* print_info(session); */ if (server_init) { do { - ret = - gnutls_record_recv(session, buffer, sizeof(buffer)); + ret = gnutls_record_recv(session, buffer, + sizeof(buffer)); if (ret == GNUTLS_E_HEARTBEAT_PING_RECEIVED) { if (debug) - success - ("Ping received. Replying with pong.\n"); + success("Ping received. Replying with pong.\n"); ret2 = gnutls_heartbeat_pong(session, 0); if (ret2 < 0) { fail("pong: %s\n", @@ -265,19 +260,16 @@ static void server(int fd, int server_init) terminate(); } } - } - while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED - || ret == GNUTLS_E_HEARTBEAT_PING_RECEIVED); + } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED || + ret == GNUTLS_E_HEARTBEAT_PING_RECEIVED); } else { do { - ret = - gnutls_heartbeat_ping(session, 256, 5, - GNUTLS_HEARTBEAT_WAIT); + ret = gnutls_heartbeat_ping(session, 256, 5, + GNUTLS_HEARTBEAT_WAIT); if (debug) success("Ping sent.\n"); - } - while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); + } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) { fail("ping: %s\n", gnutls_strerror(ret)); @@ -340,4 +332,4 @@ void doit(void) start(1); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/mini-dtls-hello-verify-48.c b/tests/mini-dtls-hello-verify-48.c index d16116612a..b37a0d78e5 100644 --- a/tests/mini-dtls-hello-verify-48.c +++ b/tests/mini-dtls-hello-verify-48.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -41,20 +41,20 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "utils.h" static void server_log_func(int level, const char *str) { @@ -66,7 +66,7 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static ssize_t push(gnutls_transport_ptr_t tr, const void *data, size_t len) { @@ -98,9 +98,10 @@ static void client(int fd) gnutls_handshake_set_timeout(session, get_timeout()); /* Use default priorities */ - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS-ALL:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS-ALL:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", + NULL); /* put the anonymous credentials to the current session */ @@ -113,8 +114,7 @@ static void client(int fd) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { success("client: Handshake failed as expected\n"); @@ -125,7 +125,7 @@ static void client(int fd) goto exit; } - exit: +exit: gnutls_deinit(session); gnutls_anon_free_client_credentials(anoncred); @@ -136,12 +136,11 @@ static void client(int fd) /* These are global */ pid_t child; -# define CLI_ADDR (void*)"test" -# define CLI_ADDR_LEN 4 +#define CLI_ADDR (void *)"test" +#define CLI_ADDR_LEN 4 -static -ssize_t recv_timeout(int sockfd, void *buf, size_t len, unsigned flags, - unsigned sec) +static ssize_t recv_timeout(int sockfd, void *buf, size_t len, unsigned flags, + unsigned sec) { int ret; struct timeval tv; @@ -165,7 +164,7 @@ ssize_t recv_timeout(int sockfd, void *buf, size_t len, unsigned flags, return recv(sockfd, buf, len, flags); } -# define SERV_TIMEOUT 30 +#define SERV_TIMEOUT 30 static void server(int fd) { @@ -201,9 +200,10 @@ static void server(int fd) /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", + NULL); gnutls_credentials_set(session, GNUTLS_CRD_ANON, anoncred); @@ -211,9 +211,8 @@ static void server(int fd) gnutls_transport_set_push_function(session, push); for (;;) { - ret = - recv_timeout(fd, buffer, sizeof(buffer), MSG_PEEK, - SERV_TIMEOUT); + ret = recv_timeout(fd, buffer, sizeof(buffer), MSG_PEEK, + SERV_TIMEOUT); if (ret < 0) { if (try != 0) { success("Server was terminated as expected!\n"); @@ -228,20 +227,16 @@ static void server(int fd) memset(&prestate, 0, sizeof(prestate)); prestate.record_seq = 105791312; prestate.hsk_write_seq = 67166359; - ret = - gnutls_dtls_cookie_verify(&cookie_key, CLI_ADDR, - CLI_ADDR_LEN, buffer, ret, - &prestate); - if (ret < 0) { /* cookie not valid */ + ret = gnutls_dtls_cookie_verify(&cookie_key, CLI_ADDR, + CLI_ADDR_LEN, buffer, ret, + &prestate); + if (ret < 0) { /* cookie not valid */ if (debug) success("Sending hello verify request\n"); - ret = - gnutls_dtls_cookie_send(&cookie_key, CLI_ADDR, - CLI_ADDR_LEN, - &prestate, - (gnutls_transport_ptr_t) - (long)fd, push); + ret = gnutls_dtls_cookie_send( + &cookie_key, CLI_ADDR, CLI_ADDR_LEN, &prestate, + (gnutls_transport_ptr_t)(long)fd, push); if (ret < 0) { fail("Cannot send data\n"); exit(1); @@ -266,7 +261,7 @@ static void server(int fd) fail("Shouldn't have reached here\n"); exit(1); - exit: +exit: gnutls_deinit(session); gnutls_free(cookie_key.data); @@ -309,4 +304,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/mini-dtls-hello-verify.c b/tests/mini-dtls-hello-verify.c index 0eb8172180..f6c814c573 100644 --- a/tests/mini-dtls-hello-verify.c +++ b/tests/mini-dtls-hello-verify.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,18 +35,18 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" static void terminate(void); @@ -66,7 +66,7 @@ static void client_log_func(int level, const char *str) /* A very basic TLS client, with anonymous authentication. */ -# define MAX_BUF 1024 +#define MAX_BUF 1024 static ssize_t push(gnutls_transport_ptr_t tr, const void *data, size_t len) { @@ -99,9 +99,10 @@ static void client(int fd) gnutls_handshake_set_timeout(session, get_timeout()); /* Use default priorities */ - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS-ALL:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS-ALL:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", + NULL); /* put the anonymous credentials to the current session */ @@ -114,8 +115,7 @@ static void client(int fd) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -128,8 +128,8 @@ static void client(int fd) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { ret = gnutls_record_recv(session, buffer, MAX_BUF); @@ -146,7 +146,7 @@ static void client(int fd) gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); @@ -169,8 +169,8 @@ static void terminate(void) exit(1); } -# define CLI_ADDR (void*)"test" -# define CLI_ADDR_LEN 4 +#define CLI_ADDR (void *)"test" +#define CLI_ADDR_LEN 4 static void server(int fd) { @@ -205,9 +205,10 @@ static void server(int fd) /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", + NULL); gnutls_credentials_set(session, GNUTLS_CRD_ANON, anoncred); @@ -222,20 +223,16 @@ static void server(int fd) } memset(&prestate, 0, sizeof(prestate)); - ret = - gnutls_dtls_cookie_verify(&cookie_key, CLI_ADDR, - CLI_ADDR_LEN, buffer, ret, - &prestate); - if (ret < 0) { /* cookie not valid */ + ret = gnutls_dtls_cookie_verify(&cookie_key, CLI_ADDR, + CLI_ADDR_LEN, buffer, ret, + &prestate); + if (ret < 0) { /* cookie not valid */ if (debug) success("Sending hello verify request\n"); - ret = - gnutls_dtls_cookie_send(&cookie_key, CLI_ADDR, - CLI_ADDR_LEN, - &prestate, - (gnutls_transport_ptr_t) - (long)fd, push); + ret = gnutls_dtls_cookie_send( + &cookie_key, CLI_ADDR, CLI_ADDR_LEN, &prestate, + (gnutls_transport_ptr_t)(long)fd, push); if (ret < 0) { fail("Cannot send data\n"); terminate(); @@ -261,8 +258,7 @@ static void server(int fd) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -275,8 +271,8 @@ static void server(int fd) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* see the Getting peer's information example */ /* print_info(session); */ @@ -343,4 +339,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/mini-dtls-large.c b/tests/mini-dtls-large.c index 6e8270247e..1c67386fe9 100644 --- a/tests/mini-dtls-large.c +++ b/tests/mini-dtls-large.c @@ -18,7 +18,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,17 +33,17 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" static void terminate(void); @@ -66,8 +66,8 @@ static pid_t child; /* A very basic DTLS client, with anonymous authentication, that exchanges heartbeats. */ -# define MAX_BUF 24*1024 -# define MAX_MTU 20*1024 +#define MAX_BUF 24 * 1024 +#define MAX_MTU 20 * 1024 static void client(int fd) { @@ -93,9 +93,10 @@ static void client(int fd) gnutls_dtls_set_mtu(session, 1500); /* Use default priorities */ - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", + NULL); /* put the anonymous credentials to the current session */ @@ -107,8 +108,7 @@ static void client(int fd) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -121,13 +121,13 @@ static void client(int fd) if (debug) success("client: DTLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { ret = gnutls_record_recv(session, buffer, sizeof(buffer)); - } - while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED || ret > 0); + } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED || + ret > 0); if (ret < 0) { fail("recv: %s\n", gnutls_strerror(ret)); @@ -174,9 +174,10 @@ static void server(int fd) /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", + NULL); gnutls_credentials_set(session, GNUTLS_CRD_ANON, anoncred); @@ -184,8 +185,7 @@ static void server(int fd) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -198,8 +198,8 @@ static void server(int fd) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* see the Getting peer's information example */ /* print_info(session); */ @@ -207,50 +207,44 @@ static void server(int fd) /* avoid uninitialized warnings */ memset(buffer, 1, sizeof(buffer)); - ret = - gnutls_record_send(session, buffer, - gnutls_dtls_get_data_mtu(session) + 12); + ret = gnutls_record_send(session, buffer, + gnutls_dtls_get_data_mtu(session) + 12); if (ret != GNUTLS_E_LARGE_PACKET) { terminate(); fail("send[%d]: %s\n", __LINE__, gnutls_strerror(ret)); } - ret = - gnutls_record_send(session, buffer, - gnutls_dtls_get_data_mtu(session) + 5048); + ret = gnutls_record_send(session, buffer, + gnutls_dtls_get_data_mtu(session) + 5048); if (ret != GNUTLS_E_LARGE_PACKET) { terminate(); fail("send[%d]: %s\n", __LINE__, gnutls_strerror(ret)); } - ret = - gnutls_record_send(session, buffer, - gnutls_dtls_get_data_mtu(session)); + ret = gnutls_record_send(session, buffer, + gnutls_dtls_get_data_mtu(session)); if (ret < 0) { terminate(); fail("send[%d]: %s\n", __LINE__, gnutls_strerror(ret)); } gnutls_dtls_set_mtu(session, MAX_MTU); - ret = - gnutls_record_send(session, buffer, - gnutls_dtls_get_data_mtu(session) + 12); + ret = gnutls_record_send(session, buffer, + gnutls_dtls_get_data_mtu(session) + 12); if (ret != GNUTLS_E_LARGE_PACKET) { terminate(); fail("send[%d]: %s\n", __LINE__, gnutls_strerror(ret)); } - ret = - gnutls_record_send(session, buffer, - gnutls_dtls_get_data_mtu(session) + 5048); + ret = gnutls_record_send(session, buffer, + gnutls_dtls_get_data_mtu(session) + 5048); if (ret != GNUTLS_E_LARGE_PACKET) { terminate(); fail("send[%d]: %s\n", __LINE__, gnutls_strerror(ret)); } - ret = - gnutls_record_send(session, buffer, - gnutls_dtls_get_data_mtu(session)); + ret = gnutls_record_send(session, buffer, + gnutls_dtls_get_data_mtu(session)); if (ret > 16384 || ret < 0) { terminate(); fail("send[%d]: %s\n", __LINE__, gnutls_strerror(ret)); @@ -259,9 +253,8 @@ static void server(int fd) /* test cork and uncork */ gnutls_record_cork(session); - ret = - gnutls_record_send(session, buffer, - gnutls_dtls_get_data_mtu(session)); + ret = gnutls_record_send(session, buffer, + gnutls_dtls_get_data_mtu(session)); if (ret < 0) { terminate(); fail("send[%d]: %s\n", __LINE__, gnutls_strerror(ret)); @@ -275,17 +268,15 @@ static void server(int fd) gnutls_record_cork(session); - ret = - gnutls_record_send(session, buffer, - gnutls_dtls_get_data_mtu(session) - 16); + ret = gnutls_record_send(session, buffer, + gnutls_dtls_get_data_mtu(session) - 16); if (ret < 0) { terminate(); fail("send[%d]: %s\n", __LINE__, gnutls_strerror(ret)); } - ret = - gnutls_record_send(session, buffer, - gnutls_dtls_get_data_mtu(session)); + ret = gnutls_record_send(session, buffer, + gnutls_dtls_get_data_mtu(session)); if (ret != GNUTLS_E_LARGE_PACKET) { terminate(); fail("send[%d]: %s\n", __LINE__, gnutls_strerror(ret)); @@ -349,4 +340,4 @@ void doit(void) start(); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/mini-dtls-lowmtu.c b/tests/mini-dtls-lowmtu.c index 2aed25913e..44afee7645 100644 --- a/tests/mini-dtls-lowmtu.c +++ b/tests/mini-dtls-lowmtu.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -37,18 +37,18 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" static void terminate(void); @@ -67,38 +67,36 @@ static void client_log_func(int level, const char *str) } static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICHzCCAaWgAwIBAgIBCTAKBggqhkjOPQQDAjA+MQswCQYDVQQGEwJOTDERMA8G\n" - "A1UEChMIUG9sYXJTU0wxHDAaBgNVBAMTE1BvbGFyc3NsIFRlc3QgRUMgQ0EwHhcN\n" - "MTMwOTI0MTU1MjA0WhcNMjMwOTIyMTU1MjA0WjA0MQswCQYDVQQGEwJOTDERMA8G\n" - "A1UEChMIUG9sYXJTU0wxEjAQBgNVBAMTCWxvY2FsaG9zdDBZMBMGByqGSM49AgEG\n" - "CCqGSM49AwEHA0IABDfMVtl2CR5acj7HWS3/IG7ufPkGkXTQrRS192giWWKSTuUA\n" - "2CMR/+ov0jRdXRa9iojCa3cNVc2KKg76Aci07f+jgZ0wgZowCQYDVR0TBAIwADAd\n" - "BgNVHQ4EFgQUUGGlj9QH2deCAQzlZX+MY0anE74wbgYDVR0jBGcwZYAUnW0gJEkB\n" - "PyvLeLUZvH4kydv7NnyhQqRAMD4xCzAJBgNVBAYTAk5MMREwDwYDVQQKEwhQb2xh\n" - "clNTTDEcMBoGA1UEAxMTUG9sYXJzc2wgVGVzdCBFQyBDQYIJAMFD4n5iQ8zoMAoG\n" - "CCqGSM49BAMCA2gAMGUCMQCaLFzXptui5WQN8LlO3ddh1hMxx6tzgLvT03MTVK2S\n" - "C12r0Lz3ri/moSEpNZWqPjkCMCE2f53GXcYLqyfyJR078c/xNSUU5+Xxl7VZ414V\n" - "fGa5kHvHARBPc8YAIVIqDvHH1Q==\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICHzCCAaWgAwIBAgIBCTAKBggqhkjOPQQDAjA+MQswCQYDVQQGEwJOTDERMA8G\n" + "A1UEChMIUG9sYXJTU0wxHDAaBgNVBAMTE1BvbGFyc3NsIFRlc3QgRUMgQ0EwHhcN\n" + "MTMwOTI0MTU1MjA0WhcNMjMwOTIyMTU1MjA0WjA0MQswCQYDVQQGEwJOTDERMA8G\n" + "A1UEChMIUG9sYXJTU0wxEjAQBgNVBAMTCWxvY2FsaG9zdDBZMBMGByqGSM49AgEG\n" + "CCqGSM49AwEHA0IABDfMVtl2CR5acj7HWS3/IG7ufPkGkXTQrRS192giWWKSTuUA\n" + "2CMR/+ov0jRdXRa9iojCa3cNVc2KKg76Aci07f+jgZ0wgZowCQYDVR0TBAIwADAd\n" + "BgNVHQ4EFgQUUGGlj9QH2deCAQzlZX+MY0anE74wbgYDVR0jBGcwZYAUnW0gJEkB\n" + "PyvLeLUZvH4kydv7NnyhQqRAMD4xCzAJBgNVBAYTAk5MMREwDwYDVQQKEwhQb2xh\n" + "clNTTDEcMBoGA1UEAxMTUG9sYXJzc2wgVGVzdCBFQyBDQYIJAMFD4n5iQ8zoMAoG\n" + "CCqGSM49BAMCA2gAMGUCMQCaLFzXptui5WQN8LlO3ddh1hMxx6tzgLvT03MTVK2S\n" + "C12r0Lz3ri/moSEpNZWqPjkCMCE2f53GXcYLqyfyJR078c/xNSUU5+Xxl7VZ414V\n" + "fGa5kHvHARBPc8YAIVIqDvHH1Q==\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN EC PRIVATE KEY-----\n" - "MHcCAQEEIPEqEyB2AnCoPL/9U/YDHvdqXYbIogTywwyp6/UfDw6noAoGCCqGSM49\n" - "AwEHoUQDQgAEN8xW2XYJHlpyPsdZLf8gbu58+QaRdNCtFLX3aCJZYpJO5QDYIxH/\n" - "6i/SNF1dFr2KiMJrdw1VzYoqDvoByLTt/w==\n" "-----END EC PRIVATE KEY-----\n"; + "-----BEGIN EC PRIVATE KEY-----\n" + "MHcCAQEEIPEqEyB2AnCoPL/9U/YDHvdqXYbIogTywwyp6/UfDw6noAoGCCqGSM49\n" + "AwEHoUQDQgAEN8xW2XYJHlpyPsdZLf8gbu58+QaRdNCtFLX3aCJZYpJO5QDYIxH/\n" + "6i/SNF1dFr2KiMJrdw1VzYoqDvoByLTt/w==\n" + "-----END EC PRIVATE KEY-----\n"; -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; /* A very basic TLS client, with anonymous authentication. */ -# define MAX_BUF 1024 +#define MAX_BUF 1024 static int mtu = 0; @@ -124,7 +122,7 @@ static void client(int fd, const char *prio) /* Initialize TLS session */ gnutls_init(&session, GNUTLS_CLIENT | GNUTLS_DATAGRAM); -// gnutls_dtls_set_mtu(session, 104); + // gnutls_dtls_set_mtu(session, 104); /* Use default priorities */ gnutls_priority_set_direct(session, prio, NULL); @@ -140,8 +138,7 @@ static void client(int fd, const char *prio) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed: %s (%d)\n", @@ -154,8 +151,8 @@ static void client(int fd, const char *prio) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { do { @@ -176,7 +173,7 @@ static void client(int fd, const char *prio) gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); @@ -237,8 +234,7 @@ static void server(int fd, const char *prio) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -251,14 +247,13 @@ static void server(int fd, const char *prio) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); mtu = gnutls_dtls_get_mtu(session); do { - ret = - gnutls_record_send(session, buffer, - gnutls_dtls_get_data_mtu(session)); + ret = gnutls_record_send(session, buffer, + gnutls_dtls_get_data_mtu(session)); } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) { fail("Error sending packet: %s\n", gnutls_strerror(ret)); @@ -311,7 +306,8 @@ static void start(const char *prio) } } -# define AES_GCM "NONE:+VERS-DTLS1.2:-CIPHER-ALL:+ECDHE-ECDSA:+AES-128-GCM:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" +#define AES_GCM \ + "NONE:+VERS-DTLS1.2:-CIPHER-ALL:+ECDHE-ECDSA:+AES-128-GCM:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" static void ch_handler(int sig) { @@ -328,4 +324,4 @@ void doit(void) start(AES_GCM); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/mini-dtls-mtu.c b/tests/mini-dtls-mtu.c index cb31fb05c0..5eb804582a 100644 --- a/tests/mini-dtls-mtu.c +++ b/tests/mini-dtls-mtu.c @@ -18,7 +18,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -31,13 +31,13 @@ #include #include #ifndef _WIN32 -# include -# include -# include +#include +#include +#include #endif #include "utils.h" -#define SERVER_MTU 500 +#define SERVER_MTU 500 #ifdef _WIN32 @@ -48,7 +48,7 @@ void doit(void) #else -# include +#include /* Tests whether packing multiple DTLS records in a single UDP packet * will be handled correctly. @@ -62,33 +62,31 @@ static void tls_log_func(int level, const char *str) } static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICHzCCAaWgAwIBAgIBCTAKBggqhkjOPQQDAjA+MQswCQYDVQQGEwJOTDERMA8G\n" - "A1UEChMIUG9sYXJTU0wxHDAaBgNVBAMTE1BvbGFyc3NsIFRlc3QgRUMgQ0EwHhcN\n" - "MTMwOTI0MTU1MjA0WhcNMjMwOTIyMTU1MjA0WjA0MQswCQYDVQQGEwJOTDERMA8G\n" - "A1UEChMIUG9sYXJTU0wxEjAQBgNVBAMTCWxvY2FsaG9zdDBZMBMGByqGSM49AgEG\n" - "CCqGSM49AwEHA0IABDfMVtl2CR5acj7HWS3/IG7ufPkGkXTQrRS192giWWKSTuUA\n" - "2CMR/+ov0jRdXRa9iojCa3cNVc2KKg76Aci07f+jgZ0wgZowCQYDVR0TBAIwADAd\n" - "BgNVHQ4EFgQUUGGlj9QH2deCAQzlZX+MY0anE74wbgYDVR0jBGcwZYAUnW0gJEkB\n" - "PyvLeLUZvH4kydv7NnyhQqRAMD4xCzAJBgNVBAYTAk5MMREwDwYDVQQKEwhQb2xh\n" - "clNTTDEcMBoGA1UEAxMTUG9sYXJzc2wgVGVzdCBFQyBDQYIJAMFD4n5iQ8zoMAoG\n" - "CCqGSM49BAMCA2gAMGUCMQCaLFzXptui5WQN8LlO3ddh1hMxx6tzgLvT03MTVK2S\n" - "C12r0Lz3ri/moSEpNZWqPjkCMCE2f53GXcYLqyfyJR078c/xNSUU5+Xxl7VZ414V\n" - "fGa5kHvHARBPc8YAIVIqDvHH1Q==\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICHzCCAaWgAwIBAgIBCTAKBggqhkjOPQQDAjA+MQswCQYDVQQGEwJOTDERMA8G\n" + "A1UEChMIUG9sYXJTU0wxHDAaBgNVBAMTE1BvbGFyc3NsIFRlc3QgRUMgQ0EwHhcN\n" + "MTMwOTI0MTU1MjA0WhcNMjMwOTIyMTU1MjA0WjA0MQswCQYDVQQGEwJOTDERMA8G\n" + "A1UEChMIUG9sYXJTU0wxEjAQBgNVBAMTCWxvY2FsaG9zdDBZMBMGByqGSM49AgEG\n" + "CCqGSM49AwEHA0IABDfMVtl2CR5acj7HWS3/IG7ufPkGkXTQrRS192giWWKSTuUA\n" + "2CMR/+ov0jRdXRa9iojCa3cNVc2KKg76Aci07f+jgZ0wgZowCQYDVR0TBAIwADAd\n" + "BgNVHQ4EFgQUUGGlj9QH2deCAQzlZX+MY0anE74wbgYDVR0jBGcwZYAUnW0gJEkB\n" + "PyvLeLUZvH4kydv7NnyhQqRAMD4xCzAJBgNVBAYTAk5MMREwDwYDVQQKEwhQb2xh\n" + "clNTTDEcMBoGA1UEAxMTUG9sYXJzc2wgVGVzdCBFQyBDQYIJAMFD4n5iQ8zoMAoG\n" + "CCqGSM49BAMCA2gAMGUCMQCaLFzXptui5WQN8LlO3ddh1hMxx6tzgLvT03MTVK2S\n" + "C12r0Lz3ri/moSEpNZWqPjkCMCE2f53GXcYLqyfyJR078c/xNSUU5+Xxl7VZ414V\n" + "fGa5kHvHARBPc8YAIVIqDvHH1Q==\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN EC PRIVATE KEY-----\n" - "MHcCAQEEIPEqEyB2AnCoPL/9U/YDHvdqXYbIogTywwyp6/UfDw6noAoGCCqGSM49\n" - "AwEHoUQDQgAEN8xW2XYJHlpyPsdZLf8gbu58+QaRdNCtFLX3aCJZYpJO5QDYIxH/\n" - "6i/SNF1dFr2KiMJrdw1VzYoqDvoByLTt/w==\n" "-----END EC PRIVATE KEY-----\n"; + "-----BEGIN EC PRIVATE KEY-----\n" + "MHcCAQEEIPEqEyB2AnCoPL/9U/YDHvdqXYbIogTywwyp6/UfDw6noAoGCCqGSM49\n" + "AwEHoUQDQgAEN8xW2XYJHlpyPsdZLf8gbu58+QaRdNCtFLX3aCJZYpJO5QDYIxH/\n" + "6i/SNF1dFr2KiMJrdw1VzYoqDvoByLTt/w==\n" + "-----END EC PRIVATE KEY-----\n"; -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; static int client_pull_timeout(gnutls_transport_ptr_t ptr, unsigned int ms) { @@ -117,7 +115,8 @@ static ssize_t client_pull(gnutls_transport_ptr_t ptr, void *data, size_t len) ret = recv(fd, data, len, 0); if (ret > SERVER_MTU) { - fail("client: packet size beyond server MTU, got %d bytes, expect max. %d bytes\n", (int)ret, SERVER_MTU); + fail("client: packet size beyond server MTU, got %d bytes, expect max. %d bytes\n", + (int)ret, SERVER_MTU); exit(1); } @@ -148,9 +147,10 @@ static void client(int fd) gnutls_handshake_set_timeout(session, get_timeout()); /* Use default priorities */ - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS-ALL:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ECDHE-ECDSA:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS-ALL:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ECDHE-ECDSA:+CURVE-ALL", + NULL); /* put the anonymous credentials to the current session */ @@ -165,8 +165,7 @@ static void client(int fd) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -179,8 +178,8 @@ static void client(int fd) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); gnutls_bye(session, GNUTLS_SHUT_WR); @@ -232,9 +231,10 @@ static void server(int fd) /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS1.2:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ECDHE-ECDSA:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS1.2:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ECDHE-ECDSA:+CURVE-ALL", + NULL); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -242,8 +242,7 @@ static void server(int fd) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -256,8 +255,8 @@ static void server(int fd) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* do not wait for the peer to close the connection. */ @@ -309,4 +308,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/mini-dtls-record-asym.c b/tests/mini-dtls-record-asym.c index 0082abdec7..42c425cbd4 100644 --- a/tests/mini-dtls-record-asym.c +++ b/tests/mini-dtls-record-asym.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -43,12 +43,12 @@ void doit(void) #else -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include /* Tests whether packing multiple DTLS records in a single UDP packet * will be handled correctly, as well as an asymmetry in MTU sizes @@ -77,7 +77,7 @@ static ssize_t push(gnutls_transport_ptr_t tr, const void *data, size_t len) memcpy(&buffer[buffer_size], data, len); buffer_size += len; - if (d[0] == 22) { /* handshake */ + if (d[0] == 22) { /* handshake */ if (d[13] == GNUTLS_HANDSHAKE_CERTIFICATE_PKT || d[13] == GNUTLS_HANDSHAKE_CERTIFICATE_STATUS || d[13] == GNUTLS_HANDSHAKE_SERVER_KEY_EXCHANGE || @@ -86,17 +86,15 @@ static ssize_t push(gnutls_transport_ptr_t tr, const void *data, size_t len) d[13] == GNUTLS_HANDSHAKE_NEW_SESSION_TICKET || d[13] == GNUTLS_HANDSHAKE_CERTIFICATE_VERIFY || d[13] == GNUTLS_HANDSHAKE_CLIENT_KEY_EXCHANGE) { - if (debug) fprintf(stderr, "caching: %s (buffer: %d)\n", - gnutls_handshake_description_get_name(d - [13]), + gnutls_handshake_description_get_name( + d[13]), buffer_size); return len; } else if (debug) { fprintf(stderr, "sending: %s\n", gnutls_handshake_description_get_name(d[13])); - } } @@ -112,33 +110,31 @@ static ssize_t push(gnutls_transport_ptr_t tr, const void *data, size_t len) } static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICHzCCAaWgAwIBAgIBCTAKBggqhkjOPQQDAjA+MQswCQYDVQQGEwJOTDERMA8G\n" - "A1UEChMIUG9sYXJTU0wxHDAaBgNVBAMTE1BvbGFyc3NsIFRlc3QgRUMgQ0EwHhcN\n" - "MTMwOTI0MTU1MjA0WhcNMjMwOTIyMTU1MjA0WjA0MQswCQYDVQQGEwJOTDERMA8G\n" - "A1UEChMIUG9sYXJTU0wxEjAQBgNVBAMTCWxvY2FsaG9zdDBZMBMGByqGSM49AgEG\n" - "CCqGSM49AwEHA0IABDfMVtl2CR5acj7HWS3/IG7ufPkGkXTQrRS192giWWKSTuUA\n" - "2CMR/+ov0jRdXRa9iojCa3cNVc2KKg76Aci07f+jgZ0wgZowCQYDVR0TBAIwADAd\n" - "BgNVHQ4EFgQUUGGlj9QH2deCAQzlZX+MY0anE74wbgYDVR0jBGcwZYAUnW0gJEkB\n" - "PyvLeLUZvH4kydv7NnyhQqRAMD4xCzAJBgNVBAYTAk5MMREwDwYDVQQKEwhQb2xh\n" - "clNTTDEcMBoGA1UEAxMTUG9sYXJzc2wgVGVzdCBFQyBDQYIJAMFD4n5iQ8zoMAoG\n" - "CCqGSM49BAMCA2gAMGUCMQCaLFzXptui5WQN8LlO3ddh1hMxx6tzgLvT03MTVK2S\n" - "C12r0Lz3ri/moSEpNZWqPjkCMCE2f53GXcYLqyfyJR078c/xNSUU5+Xxl7VZ414V\n" - "fGa5kHvHARBPc8YAIVIqDvHH1Q==\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICHzCCAaWgAwIBAgIBCTAKBggqhkjOPQQDAjA+MQswCQYDVQQGEwJOTDERMA8G\n" + "A1UEChMIUG9sYXJTU0wxHDAaBgNVBAMTE1BvbGFyc3NsIFRlc3QgRUMgQ0EwHhcN\n" + "MTMwOTI0MTU1MjA0WhcNMjMwOTIyMTU1MjA0WjA0MQswCQYDVQQGEwJOTDERMA8G\n" + "A1UEChMIUG9sYXJTU0wxEjAQBgNVBAMTCWxvY2FsaG9zdDBZMBMGByqGSM49AgEG\n" + "CCqGSM49AwEHA0IABDfMVtl2CR5acj7HWS3/IG7ufPkGkXTQrRS192giWWKSTuUA\n" + "2CMR/+ov0jRdXRa9iojCa3cNVc2KKg76Aci07f+jgZ0wgZowCQYDVR0TBAIwADAd\n" + "BgNVHQ4EFgQUUGGlj9QH2deCAQzlZX+MY0anE74wbgYDVR0jBGcwZYAUnW0gJEkB\n" + "PyvLeLUZvH4kydv7NnyhQqRAMD4xCzAJBgNVBAYTAk5MMREwDwYDVQQKEwhQb2xh\n" + "clNTTDEcMBoGA1UEAxMTUG9sYXJzc2wgVGVzdCBFQyBDQYIJAMFD4n5iQ8zoMAoG\n" + "CCqGSM49BAMCA2gAMGUCMQCaLFzXptui5WQN8LlO3ddh1hMxx6tzgLvT03MTVK2S\n" + "C12r0Lz3ri/moSEpNZWqPjkCMCE2f53GXcYLqyfyJR078c/xNSUU5+Xxl7VZ414V\n" + "fGa5kHvHARBPc8YAIVIqDvHH1Q==\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN EC PRIVATE KEY-----\n" - "MHcCAQEEIPEqEyB2AnCoPL/9U/YDHvdqXYbIogTywwyp6/UfDw6noAoGCCqGSM49\n" - "AwEHoUQDQgAEN8xW2XYJHlpyPsdZLf8gbu58+QaRdNCtFLX3aCJZYpJO5QDYIxH/\n" - "6i/SNF1dFr2KiMJrdw1VzYoqDvoByLTt/w==\n" "-----END EC PRIVATE KEY-----\n"; + "-----BEGIN EC PRIVATE KEY-----\n" + "MHcCAQEEIPEqEyB2AnCoPL/9U/YDHvdqXYbIogTywwyp6/UfDw6noAoGCCqGSM49\n" + "AwEHoUQDQgAEN8xW2XYJHlpyPsdZLf8gbu58+QaRdNCtFLX3aCJZYpJO5QDYIxH/\n" + "6i/SNF1dFr2KiMJrdw1VzYoqDvoByLTt/w==\n" + "-----END EC PRIVATE KEY-----\n"; -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; static void client(int fd, unsigned cache) { @@ -168,9 +164,10 @@ static void client(int fd, unsigned cache) //gnutls_transport_set_push_function(session, push); /* Use default priorities */ - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS-ALL:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ECDHE-ECDSA:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS-ALL:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ECDHE-ECDSA:+CURVE-ALL", + NULL); /* put the anonymous credentials to the current session */ @@ -189,8 +186,8 @@ static void client(int fd, unsigned cache) ret = gnutls_handshake(session); - if (ret == GNUTLS_E_AGAIN - && gnutls_record_get_direction(session) == 0) { + if (ret == GNUTLS_E_AGAIN && + gnutls_record_get_direction(session) == 0) { int rv; pfd.fd = fd; pfd.events = POLLIN; @@ -206,8 +203,7 @@ static void client(int fd, unsigned cache) fail("test %d: No data were received.\n", cache); } - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -220,8 +216,8 @@ static void client(int fd, unsigned cache) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); gnutls_bye(session, GNUTLS_SHUT_WR); @@ -256,13 +252,13 @@ static void server(int fd, unsigned cache) */ global_init(); -# if 0 +#if 0 if (debug) { side = "server"; gnutls_global_set_log_function(tls_log_func); gnutls_global_set_log_level(4711); } -# endif +#endif gnutls_certificate_allocate_credentials(&x509_cred); gnutls_certificate_set_x509_key_mem(x509_cred, &server_cert, @@ -278,9 +274,10 @@ static void server(int fd, unsigned cache) /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS1.2:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ECDHE-ECDSA:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS1.2:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ECDHE-ECDSA:+CURVE-ALL", + NULL); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -301,8 +298,8 @@ static void server(int fd, unsigned cache) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* do not wait for the peer to close the connection. */ @@ -319,8 +316,7 @@ static void server(int fd, unsigned cache) success("server: finished\n"); } -static -void run(unsigned cache) +static void run(unsigned cache) { int fd[2]; int ret; @@ -359,4 +355,4 @@ void doit(void) run(0); run(1); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/mini-dtls-record.c b/tests/mini-dtls-record.c index 8ab32c681f..81e753de01 100644 --- a/tests/mini-dtls-record.c +++ b/tests/mini-dtls-record.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -36,19 +36,19 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" static int test_finished = 0; static void terminate(void); @@ -82,16 +82,14 @@ static pid_t child; /* A test client/server app for DTLS duplicate packet detection. */ -# define MAX_BUF 1024 +#define MAX_BUF 1024 -# define MAX_SEQ 128 +#define MAX_SEQ 128 -static int msg_seq[] = - { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 16, 5, 32, 11, 11, 11, 11, 12, - 10, 13, 14, 15, 16, 17, 19, 20, 18, 22, 24, 23, 25, 26, 27, 29, 28, - 29, 29, 30, 31, 32, 33, 34, 35, 37, 36, 38, 39, 42, 37, 40, 41, 41, - -1 -}; +static int msg_seq[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 16, 5, + 32, 11, 11, 11, 11, 12, 10, 13, 14, 15, 16, 17, 19, 20, + 18, 22, 24, 23, 25, 26, 27, 29, 28, 29, 29, 30, 31, 32, + 33, 34, 35, 37, 36, 38, 39, 42, 37, 40, 41, 41, -1 }; static unsigned int current = 0; static unsigned int pos = 0; @@ -118,14 +116,11 @@ static ssize_t odd_push(gnutls_transport_ptr_t tr, const void *data, size_t len) for (i = pos; i <= current; i++) { if (stored_messages[msg_seq[i]] != NULL) { do { - ret = - send((long int)tr, - stored_messages[msg_seq - [i]], - stored_sizes[msg_seq[i]], 0); - } - while (ret == -1 - && (errno == EAGAIN || errno == EINTR)); + ret = send((long int)tr, + stored_messages[msg_seq[i]], + stored_sizes[msg_seq[i]], 0); + } while (ret == -1 && + (errno == EAGAIN || errno == EINTR)); pos++; } else break; @@ -133,8 +128,7 @@ static ssize_t odd_push(gnutls_transport_ptr_t tr, const void *data, size_t len) } else if (msg_seq[current] == (int)current) { do { ret = send((long int)tr, data, len, 0); - } - while (ret == -1 && (errno == EAGAIN || errno == EINTR)); + } while (ret == -1 && (errno == EAGAIN || errno == EINTR)); current++; pos++; @@ -142,12 +136,10 @@ static ssize_t odd_push(gnutls_transport_ptr_t tr, const void *data, size_t len) return ret; } else if (stored_messages[msg_seq[current]] != NULL) { do { - ret = - send((long int)tr, - stored_messages[msg_seq[current]], - stored_sizes[msg_seq[current]], 0); - } - while (ret == -1 && (errno == EAGAIN || errno == EINTR)); + ret = send((long int)tr, + stored_messages[msg_seq[current]], + stored_sizes[msg_seq[current]], 0); + } while (ret == -1 && (errno == EAGAIN || errno == EINTR)); current++; pos++; return ret; @@ -164,11 +156,10 @@ static ssize_t n_push(gnutls_transport_ptr_t tr, const void *data, size_t len) } /* The first five messages are handshake. Thus corresponds to msg_seq+5 */ -static int recv_msg_seq[] = - { 1, 2, 3, 4, 5, 6, 12, 28, 7, 8, 9, 10, 11, 13, 15, 16, 14, 18, 20, - 19, 21, 22, 23, 25, 24, 26, 27, 29, 30, 31, 33, 32, 34, 35, 38, 36, 37, - -1 -}; +static int recv_msg_seq[] = { 1, 2, 3, 4, 5, 6, 12, 28, 7, 8, + 9, 10, 11, 13, 15, 16, 14, 18, 20, 19, + 21, 22, 23, 25, 24, 26, 27, 29, 30, 31, + 33, 32, 34, 35, 38, 36, 37, -1 }; static void client(int fd) { @@ -183,7 +174,7 @@ static void client(int fd) /* Need to enable anonymous KX specifically. */ -/* gnutls_global_set_audit_log_function (tls_audit_log_func); */ + /* gnutls_global_set_audit_log_function (tls_audit_log_func); */ global_init(); if (debug) { @@ -202,9 +193,10 @@ static void client(int fd) gnutls_dtls_set_mtu(session, 1500); /* Use default priorities */ - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", + NULL); /* put the anonymous credentials to the current session */ @@ -216,8 +208,7 @@ static void client(int fd) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -232,17 +223,15 @@ static void client(int fd) if (debug) success("client: DTLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { - ret = - gnutls_record_recv_seq(session, buffer, sizeof(buffer), - seq); + ret = gnutls_record_recv_seq(session, buffer, sizeof(buffer), + seq); if (ret > 0) { - useq = - seq[7] | (seq[6] << 8) | (seq[5] << 16) | - (seq[4] << 24); + useq = seq[7] | (seq[6] << 8) | (seq[5] << 16) | + (seq[4] << 24); if (debug) success("received %u\n", (unsigned int)useq); @@ -251,16 +240,17 @@ static void client(int fd) fail("received message sequence differs\n"); exit(1); } - if (((uint32_t) recv_msg_seq[current]) != useq) { - fail("received message sequence differs (current: %u, got: %u, expected: %u)\n", (unsigned)current, (unsigned)useq, (unsigned)recv_msg_seq[current]); + if (((uint32_t)recv_msg_seq[current]) != useq) { + fail("received message sequence differs (current: %u, got: %u, expected: %u)\n", + (unsigned)current, (unsigned)useq, + (unsigned)recv_msg_seq[current]); exit(1); } current++; } - } - while ((ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED - || ret > 0)); + } while ((ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED || + ret > 0)); gnutls_bye(session, GNUTLS_SHUT_WR); @@ -308,17 +298,17 @@ static void server(int fd) /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", + NULL); gnutls_credentials_set(session, GNUTLS_CRD_ANON, anoncred); gnutls_transport_set_int(session, fd); do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -331,28 +321,25 @@ static void server(int fd) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); gnutls_record_recv(session, &c, 1); do { do { ret = gnutls_record_send(session, &c, 1); - } - while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); + } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) { fail("send: %s\n", gnutls_strerror(ret)); terminate(); } - } - while (test_finished == 0); + } while (test_finished == 0); gnutls_transport_set_push_function(session, n_push); do { ret = gnutls_bye(session, GNUTLS_SHUT_WR); - } - while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); + } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); close(fd); gnutls_deinit(session); @@ -404,4 +391,4 @@ void doit(void) start(); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/mini-dtls-srtp.c b/tests/mini-dtls-srtp.c index d8c6c362bc..e6e758a9ba 100644 --- a/tests/mini-dtls-srtp.c +++ b/tests/mini-dtls-srtp.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,18 +35,18 @@ int main(int argc, char **argv) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" static void terminate(void); @@ -66,7 +66,7 @@ static void client_log_func(int level, const char *str) /* These are global */ static pid_t child; -# define MAX_KEY_MATERIAL 64*4 +#define MAX_KEY_MATERIAL 64 * 4 /* A very basic DTLS client, with anonymous authentication, that negotiates SRTP */ @@ -96,19 +96,16 @@ static void client(int fd, int profile) gnutls_dtls_set_mtu(session, 1500); /* Use default priorities */ - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", + NULL); if (profile) - ret = - gnutls_srtp_set_profile_direct(session, - "SRTP_AES128_CM_HMAC_SHA1_80", - NULL); + ret = gnutls_srtp_set_profile_direct( + session, "SRTP_AES128_CM_HMAC_SHA1_80", NULL); else - ret = - gnutls_srtp_set_profile_direct(session, - "SRTP_NULL_HMAC_SHA1_80", - NULL); + ret = gnutls_srtp_set_profile_direct( + session, "SRTP_NULL_HMAC_SHA1_80", NULL); if (ret < 0) { gnutls_perror(ret); exit(1); @@ -124,8 +121,7 @@ static void client(int fd, int profile) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -138,12 +134,11 @@ static void client(int fd, int profile) if (debug) success("client: DTLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); - ret = - gnutls_srtp_get_keys(session, km, sizeof(km), &cli_key, - &cli_salt, &server_key, &server_salt); + ret = gnutls_srtp_get_keys(session, km, sizeof(km), &cli_key, &cli_salt, + &server_key, &server_salt); if (ret < 0) { gnutls_perror(ret); exit(1); @@ -214,20 +209,17 @@ static void server(int fd, int profile) /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", + NULL); if (profile) - ret = - gnutls_srtp_set_profile_direct(session, - "SRTP_AES128_CM_HMAC_SHA1_80", - NULL); + ret = gnutls_srtp_set_profile_direct( + session, "SRTP_AES128_CM_HMAC_SHA1_80", NULL); else - ret = - gnutls_srtp_set_profile_direct(session, - "SRTP_NULL_HMAC_SHA1_80", - NULL); + ret = gnutls_srtp_set_profile_direct( + session, "SRTP_NULL_HMAC_SHA1_80", NULL); if (ret < 0) { gnutls_perror(ret); exit(1); @@ -239,8 +231,7 @@ static void server(int fd, int profile) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -253,12 +244,11 @@ static void server(int fd, int profile) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); - ret = - gnutls_srtp_get_keys(session, km, sizeof(km), &cli_key, - &cli_salt, &server_key, &server_salt); + ret = gnutls_srtp_get_keys(session, km, sizeof(km), &cli_key, &cli_salt, + &server_key, &server_salt); if (ret < 0) { gnutls_perror(ret); exit(1); @@ -337,4 +327,4 @@ void doit(void) start(1); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/mini-dtls0-9.c b/tests/mini-dtls0-9.c index f532135024..be592f7f49 100644 --- a/tests/mini-dtls0-9.c +++ b/tests/mini-dtls0-9.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,18 +35,18 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" static void terminate(void); @@ -66,7 +66,7 @@ static void client_log_func(int level, const char *str) /* A very basic DTLS client handling DTLS 0.9 which sets premaster secret. */ -# define MAX_BUF 1024 +#define MAX_BUF 1024 static ssize_t push(gnutls_transport_ptr_t tr, const void *data, size_t len) { @@ -75,8 +75,8 @@ static ssize_t push(gnutls_transport_ptr_t tr, const void *data, size_t len) return send(fd, data, len, 0); } -static gnutls_datum_t master = { (void *) - "\x44\x66\x44\xa9\xb6\x29\xed\x6e\xd6\x93\x15\xdb\xf0\x7d\x4b\x2e\x18\xb1\x9d\xed\xff\x6a\x86\x76\xc9\x0e\x16\xab\xc2\x10\xbb\x17\x99\x24\xb1\xd9\xb9\x95\xe7\xea\xea\xea\xea\xea\xff\xaa\xac", +static gnutls_datum_t master = { + (void *)"\x44\x66\x44\xa9\xb6\x29\xed\x6e\xd6\x93\x15\xdb\xf0\x7d\x4b\x2e\x18\xb1\x9d\xed\xff\x6a\x86\x76\xc9\x0e\x16\xab\xc2\x10\xbb\x17\x99\x24\xb1\xd9\xb9\x95\xe7\xea\xea\xea\xea\xea\xff\xaa\xac", 48 }; static gnutls_datum_t sess_id = { (void *)"\xd9\xb9\x95\xe7\xea", 5 }; @@ -104,13 +104,13 @@ static void client(int fd, int proto, int cipher, int mac) gnutls_handshake_set_timeout(session, get_timeout()); /* Use default priorities */ - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS0.9:+COMP-NULL:+AES-128-GCM:+AEAD:+AES-128-CBC:+SHA1:+RSA:%COMPAT", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS0.9:+COMP-NULL:+AES-128-GCM:+AEAD:+AES-128-CBC:+SHA1:+RSA:%COMPAT", + NULL); - ret = gnutls_session_set_premaster(session, GNUTLS_CLIENT, - proto, GNUTLS_KX_RSA, - cipher, mac, + ret = gnutls_session_set_premaster(session, GNUTLS_CLIENT, proto, + GNUTLS_KX_RSA, cipher, mac, GNUTLS_COMP_NULL, &master, &sess_id); if (ret < 0) { fail("client: gnutls_session_set_premaster failed: %s\n", @@ -127,8 +127,7 @@ static void client(int fd, int proto, int cipher, int mac) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -141,8 +140,8 @@ static void client(int fd, int proto, int cipher, int mac) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { ret = gnutls_record_recv(session, buffer, sizeof(buffer) - 1); @@ -159,7 +158,7 @@ static void client(int fd, int proto, int cipher, int mac) gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); @@ -210,13 +209,13 @@ static void server(int fd, int proto, int cipher, int mac) /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS0.9:+COMP-NULL:+AES-128-CBC:+AES-128-GCM:+AEAD:+SHA1:+RSA:%COMPAT", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS0.9:+COMP-NULL:+AES-128-CBC:+AES-128-GCM:+AEAD:+SHA1:+RSA:%COMPAT", + NULL); - ret = gnutls_session_set_premaster(session, GNUTLS_SERVER, - proto, GNUTLS_KX_RSA, - cipher, mac, + ret = gnutls_session_set_premaster(session, GNUTLS_SERVER, proto, + GNUTLS_KX_RSA, cipher, mac, GNUTLS_COMP_NULL, &master, &sess_id); if (ret < 0) { fail("server: gnutls_session_set_premaster failed: %s\n", @@ -231,8 +230,7 @@ static void server(int fd, int proto, int cipher, int mac) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -245,8 +243,8 @@ static void server(int fd, int proto, int cipher, int mac) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* see the Getting peer's information example */ /* print_info(session); */ @@ -322,4 +320,4 @@ void doit(void) run(GNUTLS_DTLS0_9, GNUTLS_CIPHER_AES_128_GCM, GNUTLS_MAC_AEAD); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/mini-eagain-dtls.c b/tests/mini-eagain-dtls.c index 771f8691a5..f13c1bf6b3 100644 --- a/tests/mini-eagain-dtls.c +++ b/tests/mini-eagain-dtls.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -43,7 +43,8 @@ static void tls_log_func(int level, const char *str) static int handshake = 0; #define MAX_BUF 1024 -#define MSG "Hello TLS, and hi and how are you and more data here... and more... and even more and even more more data..." +#define MSG \ + "Hello TLS, and hi and how are you and more data here... and more... and even more and even more more data..." void doit(void) { @@ -72,10 +73,10 @@ void doit(void) gnutls_dh_params_import_pkcs3(dh_params, &p3, GNUTLS_X509_FMT_PEM); gnutls_anon_set_server_dh_params(s_anoncred, dh_params); gnutls_init(&server, GNUTLS_SERVER | GNUTLS_DATAGRAM | GNUTLS_NONBLOCK); - ret = - gnutls_priority_set_direct(server, - "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-DH", - NULL); + ret = gnutls_priority_set_direct( + server, + "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-DH", + NULL); if (ret < 0) exit(1); gnutls_credentials_set(server, GNUTLS_CRD_ANON, s_anoncred); @@ -88,10 +89,10 @@ void doit(void) /* Init client */ gnutls_anon_allocate_client_credentials(&c_anoncred); gnutls_init(&client, GNUTLS_CLIENT | GNUTLS_DATAGRAM | GNUTLS_NONBLOCK); - cret = - gnutls_priority_set_direct(client, - "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-DH", - NULL); + cret = gnutls_priority_set_direct( + client, + "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-DH", + NULL); if (cret < 0) exit(1); gnutls_credentials_set(client, GNUTLS_CRD_ANON, c_anoncred); @@ -110,8 +111,7 @@ void doit(void) do { ret = gnutls_record_send(client, MSG, strlen(MSG)); - } - while (ret == GNUTLS_E_AGAIN); + } while (ret == GNUTLS_E_AGAIN); msglen = strlen(MSG); TRANSFER(client, server, MSG, msglen, buffer, MAX_BUF); diff --git a/tests/mini-emsgsize-dtls.c b/tests/mini-emsgsize-dtls.c index 665f3a73f8..0ca6a54613 100644 --- a/tests/mini-emsgsize-dtls.c +++ b/tests/mini-emsgsize-dtls.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -45,15 +45,16 @@ static void tls_log_func(int level, const char *str) static int handshake = 0; #define MAX_BUF 1024 -#define MSG "Hello TLS, and hi and how are you and more data here... and more... and even more and even more more data..." +#define MSG \ + "Hello TLS, and hi and how are you and more data here... and more... and even more and even more more data..." -static ssize_t -client_push_300(gnutls_transport_ptr_t tr, const void *data, size_t len) +static ssize_t client_push_300(gnutls_transport_ptr_t tr, const void *data, + size_t len) { size_t newlen; if (len > 300) { - gnutls_transport_set_errno((gnutls_session_t) tr, EMSGSIZE); + gnutls_transport_set_errno((gnutls_session_t)tr, EMSGSIZE); return -1; } @@ -69,13 +70,13 @@ client_push_300(gnutls_transport_ptr_t tr, const void *data, size_t len) return len; } -static ssize_t -server_push_300(gnutls_transport_ptr_t tr, const void *data, size_t len) +static ssize_t server_push_300(gnutls_transport_ptr_t tr, const void *data, + size_t len) { size_t newlen; if (len > 300) { - gnutls_transport_set_errno((gnutls_session_t) tr, EMSGSIZE); + gnutls_transport_set_errno((gnutls_session_t)tr, EMSGSIZE); return -1; } @@ -119,10 +120,10 @@ void doit(void) gnutls_dh_params_import_pkcs3(dh_params, &p3, GNUTLS_X509_FMT_PEM); gnutls_anon_set_server_dh_params(s_anoncred, dh_params); gnutls_init(&server, GNUTLS_SERVER | GNUTLS_DATAGRAM | GNUTLS_NONBLOCK); - ret = - gnutls_priority_set_direct(server, - "NONE:+VERS-DTLS1.2:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-DH", - NULL); + ret = gnutls_priority_set_direct( + server, + "NONE:+VERS-DTLS1.2:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-DH", + NULL); if (ret < 0) exit(1); gnutls_credentials_set(server, GNUTLS_CRD_ANON, s_anoncred); @@ -135,10 +136,10 @@ void doit(void) /* Init client */ gnutls_anon_allocate_client_credentials(&c_anoncred); gnutls_init(&client, GNUTLS_CLIENT | GNUTLS_DATAGRAM | GNUTLS_NONBLOCK); - cret = - gnutls_priority_set_direct(client, - "NONE:+VERS-DTLS1.2:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-DH", - NULL); + cret = gnutls_priority_set_direct( + client, + "NONE:+VERS-DTLS1.2:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-DH", + NULL); if (cret < 0) exit(1); gnutls_credentials_set(client, GNUTLS_CRD_ANON, c_anoncred); @@ -162,8 +163,7 @@ void doit(void) do { ret = gnutls_record_send(client, MSG, strlen(MSG)); - } - while (ret == GNUTLS_E_AGAIN); + } while (ret == GNUTLS_E_AGAIN); msglen = strlen(MSG); TRANSFER(client, server, MSG, msglen, buffer, MAX_BUF); diff --git a/tests/mini-global-load.c b/tests/mini-global-load.c index 7330317395..4c649ed7d1 100644 --- a/tests/mini-global-load.c +++ b/tests/mini-global-load.c @@ -23,7 +23,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -42,45 +42,42 @@ static void tls_log_func(int level, const char *str) } static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" - "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" - "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" - "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" - "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" - "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" - "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" - "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" - "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" - "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" - "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" - "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" + "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" + "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" + "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" + "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" + "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" + "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" + "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" + "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" + "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" + "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" + "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" - "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" - "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" - "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" - "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" - "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" - "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" - "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" - "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" - "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" - "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" - "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" - "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" + "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" + "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" + "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" + "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" + "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" + "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" + "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" + "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" + "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" + "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" + "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" + "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; static void start(const char *prio) { @@ -102,9 +99,8 @@ static void start(const char *prio) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); gnutls_priority_set_direct(server, prio, NULL); diff --git a/tests/mini-key-material.c b/tests/mini-key-material.c index ffb0e88180..0b93d183be 100644 --- a/tests/mini-key-material.c +++ b/tests/mini-key-material.c @@ -18,7 +18,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,17 +33,17 @@ int main(int argc, char **argv) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" static void terminate(void); @@ -67,7 +67,7 @@ static pid_t child; /* A very basic DTLS client, with anonymous authentication, that negotiates SRTP */ -static void dump(const char *name, uint8_t * data, unsigned data_size) +static void dump(const char *name, uint8_t *data, unsigned data_size) { unsigned i; @@ -117,9 +117,10 @@ static void client(int fd) gnutls_init(&session, GNUTLS_CLIENT); /* Use default priorities */ - ret = gnutls_priority_set_direct(session, - "NONE:+VERS-TLS1.0:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-NULL:+ANON-DH:+ANON-ECDH:+CURVE-ALL", - &err); + ret = gnutls_priority_set_direct( + session, + "NONE:+VERS-TLS1.0:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-NULL:+ANON-DH:+ANON-ECDH:+CURVE-ALL", + &err); if (ret < 0) { fail("client: priority set failed (%s): %s\n", gnutls_strerror(ret), err); @@ -136,8 +137,7 @@ static void client(int fd) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed: %s\n", strerror(ret)); @@ -149,8 +149,8 @@ static void client(int fd) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); ret = gnutls_cipher_get(session); if (ret != GNUTLS_CIPHER_AES_128_CBC) { @@ -181,9 +181,8 @@ static void client(int fd) p = key_material; /* check whether the key material matches our calculations */ - ret = - gnutls_record_get_state(session, 0, &mac_key, &iv, &cipher_key, - wseq_number); + ret = gnutls_record_get_state(session, 0, &mac_key, &iv, &cipher_key, + wseq_number); if (ret < 0) { fprintf(stderr, "error in %d\n", __LINE__); gnutls_perror(ret); @@ -196,9 +195,8 @@ static void client(int fd) exit(1); } - ret = - gnutls_record_get_state(session, 1, &read_mac_key, &read_iv, - &read_cipher_key, rseq_number); + ret = gnutls_record_get_state(session, 1, &read_mac_key, &read_iv, + &read_cipher_key, rseq_number); if (ret < 0) { fprintf(stderr, "error in %d\n", __LINE__); gnutls_perror(ret); @@ -211,8 +209,8 @@ static void client(int fd) exit(1); } - if (hash_size != mac_key.size - || memcmp(p, mac_key.data, hash_size) != 0) { + if (hash_size != mac_key.size || + memcmp(p, mac_key.data, hash_size) != 0) { dump("MAC:", mac_key.data, mac_key.size); dump("Block:", key_material, block_size); fprintf(stderr, "error in %d\n", __LINE__); @@ -220,8 +218,8 @@ static void client(int fd) } p += hash_size; - if (hash_size != read_mac_key.size - || memcmp(p, read_mac_key.data, hash_size) != 0) { + if (hash_size != read_mac_key.size || + memcmp(p, read_mac_key.data, hash_size) != 0) { dump("MAC:", read_mac_key.data, read_mac_key.size); dump("Block:", key_material, block_size); fprintf(stderr, "error in %d\n", __LINE__); @@ -229,15 +227,15 @@ static void client(int fd) } p += hash_size; - if (key_size != cipher_key.size - || memcmp(p, cipher_key.data, key_size) != 0) { + if (key_size != cipher_key.size || + memcmp(p, cipher_key.data, key_size) != 0) { fprintf(stderr, "error in %d\n", __LINE__); exit(1); } p += key_size; - if (key_size != read_cipher_key.size - || memcmp(p, read_cipher_key.data, key_size) != 0) { + if (key_size != read_cipher_key.size || + memcmp(p, read_cipher_key.data, key_size) != 0) { fprintf(stderr, "error in %d\n", __LINE__); exit(1); } @@ -262,8 +260,8 @@ static void client(int fd) } } - ret = - gnutls_record_get_state(session, 0, NULL, NULL, NULL, wseq_number); + ret = gnutls_record_get_state(session, 0, NULL, NULL, NULL, + wseq_number); if (ret < 0) { fprintf(stderr, "error in %d\n", __LINE__); gnutls_perror(ret); @@ -276,8 +274,8 @@ static void client(int fd) exit(1); } - ret = - gnutls_record_get_state(session, 1, NULL, NULL, NULL, rseq_number); + ret = gnutls_record_get_state(session, 1, NULL, NULL, NULL, + rseq_number); if (ret < 0) { fprintf(stderr, "error in %d\n", __LINE__); gnutls_perror(ret); @@ -328,9 +326,9 @@ static void server(int fd) /* avoid calling all the priority functions, since the defaults * are adequate. */ - ret = gnutls_priority_set_direct(session, - "NORMAL:+ANON-DH:+ANON-ECDH:-VERS-ALL:+VERS-TLS1.0", - NULL); + ret = gnutls_priority_set_direct( + session, "NORMAL:+ANON-DH:+ANON-ECDH:-VERS-ALL:+VERS-TLS1.0", + NULL); if (ret < 0) { fail("server: priority set failed (%s)\n\n", gnutls_strerror(ret)); @@ -343,8 +341,7 @@ static void server(int fd) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -357,8 +354,8 @@ static void server(int fd) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { ret = gnutls_record_recv(session, buf, sizeof(buf)); @@ -421,4 +418,4 @@ void doit(void) start(); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/mini-loss-time.c b/tests/mini-loss-time.c index 505b3baafe..8e23b96137 100644 --- a/tests/mini-loss-time.c +++ b/tests/mini-loss-time.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -36,17 +36,17 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" /* This program tests whether a DTLS handshake would timeout * in the expected time. @@ -135,9 +135,10 @@ static void client(int fd, unsigned timeout) gnutls_dtls_set_timeouts(session, 1 * 1000, timeout * 1000); /* Use default priorities */ - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", + NULL); /* put the anonymous credentials to the current session */ @@ -151,9 +152,8 @@ static void client(int fd, unsigned timeout) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 - && (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED)); + } while (ret < 0 && + (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED)); gnutls_deinit(session); gnutls_anon_free_client_credentials(anoncred); @@ -198,9 +198,10 @@ static void server(int fd, int packet, unsigned timeout) /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", + NULL); gnutls_credentials_set(session, GNUTLS_CRD_ANON, anoncred); @@ -212,9 +213,8 @@ static void server(int fd, int packet, unsigned timeout) do { ret = gnutls_handshake(session); - } - while (ret < 0 - && (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED)); + } while (ret < 0 && + (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED)); gnutls_deinit(session); gnutls_anon_free_server_credentials(anoncred); @@ -291,7 +291,8 @@ static void ch_handler(int sig) void doit(void) { time_t tstart, tstop; - int tries = 5; /* we try multiple times because in very busy systems the suite may fail to finish on time */ + int tries = + 5; /* we try multiple times because in very busy systems the suite may fail to finish on time */ signal(SIGCHLD, ch_handler); signal(SIGPIPE, SIG_IGN); @@ -335,4 +336,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/mini-overhead.c b/tests/mini-overhead.c index b698877b02..5be9f6e3d9 100644 --- a/tests/mini-overhead.c +++ b/tests/mini-overhead.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,18 +35,18 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" static void terminate(void); @@ -56,7 +56,7 @@ static void terminate(void); static void server_log_func(int level, const char *str) { -// fprintf (stderr, "server|<%d>| %s", level, str); + // fprintf (stderr, "server|<%d>| %s", level, str); } static void client_log_func(int level, const char *str) @@ -65,51 +65,48 @@ static void client_log_func(int level, const char *str) } static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" - "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" - "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" - "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" - "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" - "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" - "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" - "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" - "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" - "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" - "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" - "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" + "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" + "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" + "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" + "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" + "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" + "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" + "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" + "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" + "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" + "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" + "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" - "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" - "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" - "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" - "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" - "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" - "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" - "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" - "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" - "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" - "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" - "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" - "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" + "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" + "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" + "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" + "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" + "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" + "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" + "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" + "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" + "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" + "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" + "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" + "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; /* A very basic TLS client, with anonymous authentication. */ -# define MAX_BUF 1024 -# define MTU 1500 +#define MAX_BUF 1024 +#define MTU 1500 static void client(int fd, const char *prio, unsigned overhead) { @@ -151,8 +148,7 @@ static void client(int fd, const char *prio, unsigned overhead) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed for %s\n", prio); @@ -165,15 +161,15 @@ static void client(int fd, const char *prio, unsigned overhead) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); gnutls_dtls_set_mtu(session, MTU); ret = gnutls_dtls_get_data_mtu(session); if (MTU - ret != (int)overhead) { - fail("overhead for %s is %d, expected %u\n", prio, - MTU - ret, overhead); + fail("overhead for %s is %d, expected %u\n", prio, MTU - ret, + overhead); exit(1); } @@ -244,8 +240,7 @@ static void server(int fd, const char *prio) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -258,8 +253,8 @@ static void server(int fd, const char *prio) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); close(fd); gnutls_deinit(session); @@ -319,20 +314,17 @@ void doit(void) /* overhead for CBC depends on MTU */ /* 13 + 20(sha1) + 16(iv) + 16(pad) */ - start - ("NONE:+VERS-DTLS1.0:%NO_ETM:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-NULL:+RSA", - 65); + start("NONE:+VERS-DTLS1.0:%NO_ETM:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-NULL:+RSA", + 65); /* 13 + 20(sha1) + 8(iv) + 8(max pad) */ if (!gnutls_fips140_mode_enabled()) - start - ("NONE:+VERS-DTLS1.0:+3DES-CBC:%NO_ETM:+SHA1:+SIGN-ALL:+COMP-NULL:+RSA", - 49); + start("NONE:+VERS-DTLS1.0:+3DES-CBC:%NO_ETM:+SHA1:+SIGN-ALL:+COMP-NULL:+RSA", + 49); /* 13 + 16(tag) + 4(iv) */ - start - ("NONE:+VERS-DTLS1.2:+AES-128-GCM:%NO_ETM:+AEAD:+SIGN-ALL:+COMP-NULL:+RSA", - 37); + start("NONE:+VERS-DTLS1.2:+AES-128-GCM:%NO_ETM:+AEAD:+SIGN-ALL:+COMP-NULL:+RSA", + 37); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/mini-record-2.c b/tests/mini-record-2.c index 37b1e87671..18baddce24 100644 --- a/tests/mini-record-2.c +++ b/tests/mini-record-2.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,18 +35,18 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" static void terminate(void); @@ -65,50 +65,47 @@ static void client_log_func(int level, const char *str) } static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" - "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" - "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" - "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" - "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" - "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" - "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" - "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" - "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" - "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" - "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" - "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" + "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" + "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" + "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" + "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" + "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" + "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" + "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" + "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" + "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" + "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" + "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" - "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" - "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" - "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" - "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" - "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" - "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" - "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" - "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" - "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" - "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" - "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" - "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" + "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" + "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" + "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" + "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" + "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" + "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" + "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" + "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" + "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" + "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" + "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" + "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; /* A very basic TLS client, with anonymous authentication. */ -# define MAX_BUF 24*1024 +#define MAX_BUF 24 * 1024 static void client(int fd, const char *prio, int ign) { @@ -154,8 +151,7 @@ static void client(int fd, const char *prio, int ign) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client (%s): Handshake has failed (%s)\n\n", prio, @@ -168,8 +164,8 @@ static void client(int fd, const char *prio, int ign) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* Test sending */ for (i = 1; i < 16384; i++) { @@ -191,11 +187,12 @@ static void client(int fd, const char *prio, int ign) } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) { - fail("server (%s): Error sending %d byte packet: %s\n", - prio, i, gnutls_strerror(ret)); + fail("server (%s): Error sending %d byte packet: %s\n", prio, i, + gnutls_strerror(ret)); exit(1); } else if (ign == 0 && ret != 16384) { - fail("server (%s): Error sending %d byte packet; sent %d bytes instead of 16384\n", prio, i, ret); + fail("server (%s): Error sending %d byte packet; sent %d bytes instead of 16384\n", + prio, i, ret); exit(1); } @@ -226,7 +223,7 @@ static void client(int fd, const char *prio, int ign) } } - end: +end: close(fd); @@ -292,8 +289,7 @@ static void server(int fd, const char *prio, int ign) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -306,8 +302,8 @@ static void server(int fd, const char *prio, int ign) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* Here we do both a receive and a send test because if valgrind * detects an error on the peer, the main process will never know. @@ -349,11 +345,12 @@ static void server(int fd, const char *prio, int ign) } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) { - fail("server (%s): Error sending %d byte packet: %s\n", - prio, i, gnutls_strerror(ret)); + fail("server (%s): Error sending %d byte packet: %s\n", prio, i, + gnutls_strerror(ret)); terminate(); } else if (ign == 0 && ret != 16384) { - fail("server (%s): Error sending %d byte packet; sent %d bytes instead of 16384\n", prio, i, ret); + fail("server (%s): Error sending %d byte packet; sent %d bytes instead of 16384\n", + prio, i, ret); terminate(); } @@ -406,22 +403,34 @@ static void start(const char *name, const char *prio, int ign) } } -# define AES_CBC "NONE:+VERS-TLS1.0:-CIPHER-ALL:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" -# define AES_CBC_SHA256 "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-CBC:+AES-256-CBC:+SHA256:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" -# define AES_GCM "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-GCM:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" -# define AES_CCM "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-CCM:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" -# define AES_CCM_8 "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-CCM-8:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" - -# define ARCFOUR_SHA1 "NONE:+VERS-TLS1.0:-CIPHER-ALL:+ARCFOUR-128:+SHA1:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" -# define ARCFOUR_MD5 "NONE:+VERS-TLS1.0:-CIPHER-ALL:+ARCFOUR-128:+MD5:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL:+RSA" - -# define NULL_SHA1 "NONE:+VERS-TLS1.0:-CIPHER-ALL:+NULL:+SHA1:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+RSA:+CURVE-ALL" - -# define CHACHA_POLY1305 "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+CHACHA20-POLY1305:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ECDHE-RSA:+CURVE-ALL" - -# define TLS13_AES_GCM "NONE:+VERS-TLS1.3:-CIPHER-ALL:+RSA:+AES-128-GCM:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+GROUP-ALL" -# define TLS13_AES_CCM "NONE:+VERS-TLS1.3:-CIPHER-ALL:+RSA:+AES-128-CCM:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+GROUP-ALL" -# define TLS13_CHACHA_POLY1305 "NONE:+VERS-TLS1.3:-CIPHER-ALL:+RSA:+CHACHA20-POLY1305:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+GROUP-ALL" +#define AES_CBC \ + "NONE:+VERS-TLS1.0:-CIPHER-ALL:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" +#define AES_CBC_SHA256 \ + "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-CBC:+AES-256-CBC:+SHA256:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" +#define AES_GCM \ + "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-GCM:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" +#define AES_CCM \ + "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-CCM:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" +#define AES_CCM_8 \ + "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-CCM-8:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" + +#define ARCFOUR_SHA1 \ + "NONE:+VERS-TLS1.0:-CIPHER-ALL:+ARCFOUR-128:+SHA1:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" +#define ARCFOUR_MD5 \ + "NONE:+VERS-TLS1.0:-CIPHER-ALL:+ARCFOUR-128:+MD5:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL:+RSA" + +#define NULL_SHA1 \ + "NONE:+VERS-TLS1.0:-CIPHER-ALL:+NULL:+SHA1:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+RSA:+CURVE-ALL" + +#define CHACHA_POLY1305 \ + "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+CHACHA20-POLY1305:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ECDHE-RSA:+CURVE-ALL" + +#define TLS13_AES_GCM \ + "NONE:+VERS-TLS1.3:-CIPHER-ALL:+RSA:+AES-128-GCM:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+GROUP-ALL" +#define TLS13_AES_CCM \ + "NONE:+VERS-TLS1.3:-CIPHER-ALL:+RSA:+AES-128-CCM:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+GROUP-ALL" +#define TLS13_CHACHA_POLY1305 \ + "NONE:+VERS-TLS1.3:-CIPHER-ALL:+RSA:+CHACHA20-POLY1305:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+GROUP-ALL" static void ch_handler(int sig) { @@ -449,7 +458,6 @@ void doit(void) start("tls13-aes-gcm", TLS13_AES_GCM, 0); start("tls13-aes-ccm", TLS13_AES_CCM, 0); - } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/mini-record-failure.c b/tests/mini-record-failure.c index 67d2551733..4db6e0123a 100644 --- a/tests/mini-record-failure.c +++ b/tests/mini-record-failure.c @@ -22,7 +22,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -37,18 +37,18 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include "cert-common.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "cert-common.h" +#include "utils.h" static void terminate(void); @@ -69,8 +69,8 @@ static void client_log_func(int level, const char *str) static int modify = 0; -static ssize_t -client_push(gnutls_transport_ptr_t tr, const void *data, size_t len) +static ssize_t client_push(gnutls_transport_ptr_t tr, const void *data, + size_t len) { unsigned int fd = (long)tr; @@ -87,7 +87,7 @@ client_push(gnutls_transport_ptr_t tr, const void *data, size_t len) } } -# define MAX_BUF 24*1024 +#define MAX_BUF 24 * 1024 static void client(int fd, const char *prio, int ign) { @@ -133,8 +133,7 @@ static void client(int fd, const char *prio, int ign) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client (%s): Handshake has failed (%s)\n\n", prio, @@ -147,8 +146,8 @@ static void client(int fd, const char *prio, int ign) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); modify = 1; do { @@ -227,8 +226,7 @@ static void server(int fd, const char *prio, int ign) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -241,8 +239,8 @@ static void server(int fd, const char *prio, int ign) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* Here we do both a receive and a send test because if valgrind * detects an error on the peer, the main process will never know. @@ -304,22 +302,33 @@ static void start(const char *name, const char *prio, int ign) } } -# define AES_CBC "NONE:+VERS-TLS1.0:-CIPHER-ALL:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" -# define AES_CBC_SHA256 "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-CBC:+AES-256-CBC:+SHA256:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" -# define AES_GCM "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-GCM:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" -# define AES_CCM "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-CCM:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" -# define AES_CCM_8 "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-CCM-8:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" - -# define ARCFOUR_SHA1 "NONE:+VERS-TLS1.0:-CIPHER-ALL:+ARCFOUR-128:+SHA1:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" -# define ARCFOUR_MD5 "NONE:+VERS-TLS1.0:-CIPHER-ALL:+ARCFOUR-128:+MD5:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL:+RSA" - -# define NULL_SHA1 "NONE:+VERS-TLS1.0:-CIPHER-ALL:+NULL:+SHA1:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+RSA:+CURVE-ALL" - -# define NO_ETM ":%NO_ETM" - -# define TLS13_AES_GCM "NONE:+VERS-TLS1.3:-CIPHER-ALL:+RSA:+AES-128-GCM:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+GROUP-ALL" -# define TLS13_AES_CCM "NONE:+VERS-TLS1.3:-CIPHER-ALL:+RSA:+AES-128-CCM:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+GROUP-ALL" -# define TLS13_CHACHA_POLY1305 "NONE:+VERS-TLS1.3:-CIPHER-ALL:+RSA:+CHACHA20-POLY1305:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+GROUP-ALL" +#define AES_CBC \ + "NONE:+VERS-TLS1.0:-CIPHER-ALL:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" +#define AES_CBC_SHA256 \ + "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-CBC:+AES-256-CBC:+SHA256:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" +#define AES_GCM \ + "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-GCM:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" +#define AES_CCM \ + "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-CCM:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" +#define AES_CCM_8 \ + "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-CCM-8:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" + +#define ARCFOUR_SHA1 \ + "NONE:+VERS-TLS1.0:-CIPHER-ALL:+ARCFOUR-128:+SHA1:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" +#define ARCFOUR_MD5 \ + "NONE:+VERS-TLS1.0:-CIPHER-ALL:+ARCFOUR-128:+MD5:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL:+RSA" + +#define NULL_SHA1 \ + "NONE:+VERS-TLS1.0:-CIPHER-ALL:+NULL:+SHA1:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+RSA:+CURVE-ALL" + +#define NO_ETM ":%NO_ETM" + +#define TLS13_AES_GCM \ + "NONE:+VERS-TLS1.3:-CIPHER-ALL:+RSA:+AES-128-GCM:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+GROUP-ALL" +#define TLS13_AES_CCM \ + "NONE:+VERS-TLS1.3:-CIPHER-ALL:+RSA:+AES-128-CCM:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+GROUP-ALL" +#define TLS13_CHACHA_POLY1305 \ + "NONE:+VERS-TLS1.3:-CIPHER-ALL:+RSA:+CHACHA20-POLY1305:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+GROUP-ALL" static void ch_handler(int sig) { @@ -363,4 +372,4 @@ void doit(void) start("tls13-aes-ccm", TLS13_AES_CCM, 0); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/mini-record-range.c b/tests/mini-record-range.c index c5e2578f88..908230de82 100644 --- a/tests/mini-record-range.c +++ b/tests/mini-record-range.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,22 +35,22 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "cert-common.h" -# include "utils.h" - -# define MAX_BUF 1024 -# define HIGH(x) (3*x) +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cert-common.h" +#include "utils.h" + +#define MAX_BUF 1024 +#define HIGH(x) (3 * x) static void terminate(void); static int to_send; static size_t total; @@ -117,8 +117,7 @@ static void client(int fd, const char *prio) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -131,8 +130,8 @@ static void client(int fd, const char *prio) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { do { @@ -153,7 +152,7 @@ static void client(int fd, const char *prio) gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); @@ -219,8 +218,7 @@ static void server(int fd, const char *prio) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -233,8 +231,8 @@ static void server(int fd, const char *prio) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); gnutls_transport_set_push_function(session, push); @@ -246,9 +244,8 @@ static void server(int fd, const char *prio) do { total = 0; do { - ret = - gnutls_record_send_range(session, buffer, - sizeof(buffer), &range); + ret = gnutls_record_send_range(session, buffer, + sizeof(buffer), &range); } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) { @@ -263,8 +260,7 @@ static void server(int fd, const char *prio) } to_send++; - } - while (to_send < 4); + } while (to_send < 4); to_send = -1; /* do not wait for the peer to close the connection. @@ -313,8 +309,9 @@ static void start(const char *prio) } } -# define AES_CBC "NONE:+VERS-TLS1.2:+AES-128-CBC:+MAC-ALL:+SIGN-ALL:+ANON-ECDH:+CURVE-ALL" -# define AES_GCM "NONE:+VERS-TLS1.3:+AES-256-GCM:+AEAD:+SIGN-ALL:+GROUP-ALL" +#define AES_CBC \ + "NONE:+VERS-TLS1.2:+AES-128-CBC:+MAC-ALL:+SIGN-ALL:+ANON-ECDH:+CURVE-ALL" +#define AES_GCM "NONE:+VERS-TLS1.3:+AES-256-GCM:+AEAD:+SIGN-ALL:+GROUP-ALL" static void ch_handler(int sig) { @@ -332,4 +329,4 @@ void doit(void) start(AES_GCM); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/mini-record.c b/tests/mini-record.c index 10f464b2e2..154836671c 100644 --- a/tests/mini-record.c +++ b/tests/mini-record.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -36,19 +36,19 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" -# include "cert-common.h" +#include "utils.h" +#include "cert-common.h" static void terminate(void); @@ -66,7 +66,7 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static int to_send = -1; static int mtu = 0; @@ -78,10 +78,10 @@ static ssize_t push(gnutls_transport_ptr_t tr, const void *data, size_t len) return send(fd, data, len, 0); } -# define RECORD_HEADER_SIZE (5+8) +#define RECORD_HEADER_SIZE (5 + 8) -static ssize_t -push_crippled(gnutls_transport_ptr_t tr, const void *data, size_t len) +static ssize_t push_crippled(gnutls_transport_ptr_t tr, const void *data, + size_t len) { int fd = (long int)tr; int _len, ret; @@ -90,11 +90,11 @@ push_crippled(gnutls_transport_ptr_t tr, const void *data, size_t len) if (to_send == -1) return send(fd, data, len, 0); else { -# if 0 +#if 0 _len = ((uint8_t *) data)[11] << 8 | ((uint8_t *) data)[12]; fprintf(stderr, "mtu: %d, len: %d", mtu, (int)_len); fprintf(stderr, " send: %d\n", (int)to_send); -# endif +#endif _len = to_send; _data[11] = _len >> 8; @@ -154,8 +154,7 @@ static void client(int fd, const char *prio) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -168,8 +167,8 @@ static void client(int fd, const char *prio) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* make sure we are not blocked forever */ gnutls_record_set_timeout(session, 10000); @@ -193,7 +192,7 @@ static void client(int fd, const char *prio) gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); @@ -260,8 +259,7 @@ static void server(int fd, const char *prio) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -274,15 +272,15 @@ static void server(int fd, const char *prio) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); mtu = gnutls_dtls_get_mtu(session); do { - usleep(10000); /* some systems like FreeBSD have their buffers full during this send */ + usleep(10000); /* some systems like FreeBSD have their buffers full during this send */ do { - ret = - gnutls_record_send(session, buffer, sizeof(buffer)); + ret = gnutls_record_send(session, buffer, + sizeof(buffer)); } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) { @@ -291,8 +289,7 @@ static void server(int fd, const char *prio) terminate(); } to_send++; - } - while (to_send < 64); + } while (to_send < 64); to_send = -1; @@ -344,12 +341,18 @@ static void start(const char *name, const char *prio) } } -# define AES_CBC "NONE:+VERS-DTLS1.0:-CIPHER-ALL:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" -# define AES_CBC_SHA256 "NONE:+VERS-DTLS1.2:-CIPHER-ALL:+RSA:+AES-128-CBC:+AES-256-CBC:+SHA256:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" -# define AES_GCM "NONE:+VERS-DTLS1.2:-CIPHER-ALL:+RSA:+AES-128-GCM:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" -# define AES_CCM "NONE:+VERS-DTLS1.2:-CIPHER-ALL:+RSA:+AES-128-CCM:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" -# define AES_CCM_8 "NONE:+VERS-DTLS1.2:-CIPHER-ALL:+RSA:+AES-128-CCM-8:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" -# define CHACHA_POLY1305 "NONE:+VERS-DTLS1.2:-CIPHER-ALL:+RSA:+CHACHA20-POLY1305:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ECDHE-RSA:+CURVE-ALL" +#define AES_CBC \ + "NONE:+VERS-DTLS1.0:-CIPHER-ALL:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" +#define AES_CBC_SHA256 \ + "NONE:+VERS-DTLS1.2:-CIPHER-ALL:+RSA:+AES-128-CBC:+AES-256-CBC:+SHA256:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" +#define AES_GCM \ + "NONE:+VERS-DTLS1.2:-CIPHER-ALL:+RSA:+AES-128-GCM:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" +#define AES_CCM \ + "NONE:+VERS-DTLS1.2:-CIPHER-ALL:+RSA:+AES-128-CCM:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" +#define AES_CCM_8 \ + "NONE:+VERS-DTLS1.2:-CIPHER-ALL:+RSA:+AES-128-CCM-8:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" +#define CHACHA_POLY1305 \ + "NONE:+VERS-DTLS1.2:-CIPHER-ALL:+RSA:+CHACHA20-POLY1305:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ECDHE-RSA:+CURVE-ALL" static void ch_handler(int sig) { @@ -371,4 +374,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/mini-server-name.c b/tests/mini-server-name.c index e2d73c52e0..0aa7baeb9e 100644 --- a/tests/mini-server-name.c +++ b/tests/mini-server-name.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -37,20 +37,20 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void terminate(void); /* This program tests gnutls_server_name_set() and gnutls_server_name_get(). @@ -115,8 +115,7 @@ static void client(const char *test_name, const char *prio, int fd, */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { if (server_err < 0) @@ -130,12 +129,12 @@ static void client(const char *test_name, const char *prio, int fd, if (debug) test_success("TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); gnutls_bye(session, GNUTLS_SHUT_WR); - cleanup: +cleanup: close(fd); gnutls_deinit(session); @@ -197,8 +196,7 @@ static void server(const char *test_name, const char *prio, int fd, do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { if (exp_err == ret) goto cleanup; @@ -213,15 +211,15 @@ static void server(const char *test_name, const char *prio, int fd, if (debug) test_success("TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); buffer_size = sizeof(buffer); ret = gnutls_server_name_get(session, buffer, &buffer_size, &type, 0); - if ((name == NULL || name[0] == 0) - && (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE - || ret == GNUTLS_E_IDNA_ERROR)) { + if ((name == NULL || name[0] == 0) && + (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE || + ret == GNUTLS_E_IDNA_ERROR)) { /* expected */ if (debug) test_success("empty name matches\n"); @@ -229,19 +227,19 @@ static void server(const char *test_name, const char *prio, int fd, test_fail("server_name: %s/%d\n", gnutls_strerror(ret), ret); } else { if (name == NULL || name[0] == 0) { - test_fail - ("did not receive the expected name: got: %s\n", - buffer); + test_fail( + "did not receive the expected name: got: %s\n", + buffer); exit(1); } if (buffer_size != strlen(buffer)) { - test_fail - ("received name '%s/%d/%d', with embedded null\n", - buffer, (int)buffer_size, (int)strlen(buffer)); + test_fail( + "received name '%s/%d/%d', with embedded null\n", + buffer, (int)buffer_size, (int)strlen(buffer)); exit(1); } - if (name_len != buffer_size - || memcmp(name, buffer, name_len) != 0) { + if (name_len != buffer_size || + memcmp(name, buffer, name_len) != 0) { test_fail("received name '%s/%d', expected '%s/%d'\n", buffer, (int)buffer_size, name, (int)name_len); @@ -254,7 +252,7 @@ static void server(const char *test_name, const char *prio, int fd, /* do not wait for the peer to close the connection. */ gnutls_bye(session, GNUTLS_SHUT_WR); - cleanup: +cleanup: close(fd); gnutls_deinit(session); @@ -311,9 +309,9 @@ static void ch_handler(int sig) return; } -# define PRIO_TLS12 "NORMAL:-VERS-ALL:+VERS-TLS1.2" -# define PRIO_TLS13 "NORMAL:-VERS-ALL:+VERS-TLS1.3" -# define PRIO_NORMAL "NORMAL" +#define PRIO_TLS12 "NORMAL:-VERS-ALL:+VERS-TLS1.2" +#define PRIO_TLS13 "NORMAL:-VERS-ALL:+VERS-TLS1.3" +#define PRIO_NORMAL "NORMAL" void doit(void) { @@ -360,4 +358,4 @@ void doit(void) GNUTLS_E_RECEIVED_DISALLOWED_NAME); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/mini-session-verify-function.c b/tests/mini-session-verify-function.c index 152d204580..c187fe1b4a 100644 --- a/tests/mini-session-verify-function.c +++ b/tests/mini-session-verify-function.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -55,14 +55,16 @@ static int server_callback(gnutls_session_t session) if (gnutls_handshake_get_last_in(session) != GNUTLS_HANDSHAKE_CERTIFICATE_PKT) { fail("client's last input message was unexpected: %s\n", - gnutls_handshake_description_get_name - (gnutls_handshake_get_last_in(session))); + gnutls_handshake_description_get_name( + gnutls_handshake_get_last_in(session))); exit(1); } if (gnutls_handshake_get_last_out(session) != GNUTLS_HANDSHAKE_SERVER_HELLO_DONE) { - fail("client's last output message was unexpected: %s\n", gnutls_handshake_description_get_name(gnutls_handshake_get_last_out(session))); + fail("client's last output message was unexpected: %s\n", + gnutls_handshake_description_get_name( + gnutls_handshake_get_last_out(session))); exit(1); } } @@ -75,48 +77,44 @@ static void tls_log_func(int level, const char *str) } static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" - "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" - "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" - "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" - "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" - "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" - "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" - "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" - "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" - "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" - "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" - "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" + "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" + "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" + "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" + "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" + "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" + "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" + "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" + "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" + "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" + "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" + "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" - "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" - "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" - "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" - "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" - "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" - "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" - "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" - "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" - "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" - "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" - "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" - "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; - -static -void test_success1(const char *prio) + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" + "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" + "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" + "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" + "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" + "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" + "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" + "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" + "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" + "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" + "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" + "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" + "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; + +static void test_success1(const char *prio) { /* Server stuff. */ gnutls_certificate_credentials_t serverx509cred; @@ -136,9 +134,8 @@ void test_success1(const char *prio) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); assert(gnutls_priority_set_direct(server, prio, NULL) >= 0); @@ -176,8 +173,7 @@ void test_success1(const char *prio) fail("Client certificate verify callback wasn't called\n"); } -static -void test_failure_client(const char *prio) +static void test_failure_client(const char *prio) { /* Server stuff. */ gnutls_certificate_credentials_t serverx509cred; @@ -199,9 +195,8 @@ void test_failure_client(const char *prio) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); assert(gnutls_priority_set_direct(server, prio, NULL) >= 0); @@ -235,8 +230,7 @@ void test_failure_client(const char *prio) __func__); } -static -void test_failure_server(const char *prio) +static void test_failure_server(const char *prio) { /* Server stuff. */ gnutls_certificate_credentials_t serverx509cred; @@ -258,9 +252,8 @@ void test_failure_server(const char *prio) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); assert(gnutls_priority_set_direct(server, prio, NULL) >= 0); diff --git a/tests/mini-termination.c b/tests/mini-termination.c index 92dac747ea..09dc5bae79 100644 --- a/tests/mini-termination.c +++ b/tests/mini-termination.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,18 +35,18 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" static void terminate(void); @@ -56,7 +56,7 @@ static void terminate(void); static void server_log_func(int level, const char *str) { -// fprintf (stderr, "server|<%d>| %s", level, str); + // fprintf (stderr, "server|<%d>| %s", level, str); } static void client_log_func(int level, const char *str) @@ -65,50 +65,47 @@ static void client_log_func(int level, const char *str) } static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" - "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" - "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" - "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" - "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" - "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" - "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" - "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" - "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" - "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" - "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" - "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" + "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" + "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" + "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" + "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" + "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" + "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" + "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" + "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" + "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" + "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" + "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" - "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" - "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" - "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" - "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" - "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" - "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" - "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" - "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" - "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" - "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" - "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" - "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" + "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" + "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" + "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" + "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" + "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" + "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" + "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" + "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" + "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" + "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" + "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" + "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; /* A very basic TLS client, with anonymous authentication. */ -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd, const char *prio) { @@ -147,8 +144,7 @@ static void client(int fd, const char *prio) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -161,8 +157,8 @@ static void client(int fd, const char *prio) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { do { ret = gnutls_record_recv(session, buffer, MAX_BUF); @@ -179,7 +175,7 @@ static void client(int fd, const char *prio) exit(1); } - end: +end: close(fd); gnutls_deinit(session); @@ -238,8 +234,7 @@ static void server(int fd, const char *prio) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -252,8 +247,8 @@ static void server(int fd, const char *prio) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); close(fd); gnutls_deinit(session); @@ -316,4 +311,4 @@ void doit(void) start("NORMAL"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/mini-tls-nonblock.c b/tests/mini-tls-nonblock.c index 42260dd09a..853f841fbd 100644 --- a/tests/mini-tls-nonblock.c +++ b/tests/mini-tls-nonblock.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,19 +35,19 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" static void terminate(void); @@ -57,7 +57,7 @@ static void terminate(void); static void server_log_func(int level, const char *str) { -// fprintf (stderr, "server|<%d>| %s", level, str); + // fprintf (stderr, "server|<%d>| %s", level, str); } static void client_log_func(int level, const char *str) @@ -66,50 +66,47 @@ static void client_log_func(int level, const char *str) } static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" - "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" - "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" - "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" - "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" - "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" - "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" - "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" - "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" - "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" - "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" - "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" + "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" + "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" + "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" + "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" + "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" + "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" + "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" + "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" + "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" + "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" + "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" - "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" - "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" - "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" - "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" - "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" - "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" - "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" - "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" - "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" - "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" - "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" - "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" + "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" + "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" + "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" + "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" + "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" + "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" + "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" + "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" + "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" + "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" + "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" + "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; /* A very basic TLS client, with anonymous authentication. */ -# define MAX_BUF 1024 +#define MAX_BUF 1024 static const char *g_msg = ""; static ssize_t my_pull(gnutls_transport_ptr_t tr, void *data, size_t len) @@ -179,8 +176,7 @@ static void client(int fd, const char *msg, const char *prio, unsigned expl) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -193,8 +189,8 @@ static void client(int fd, const char *msg, const char *prio, unsigned expl) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); close(fd); @@ -257,8 +253,7 @@ static void server(int fd, const char *prio, unsigned expl) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -271,8 +266,8 @@ static void server(int fd, const char *prio, unsigned expl) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); close(fd); gnutls_deinit(session); @@ -327,9 +322,9 @@ static void ch_handler(int sig) return; } -# ifndef GNUTLS_NONBLOCK -# error GNUTLS_NONBLOCK should have been defined -# endif +#ifndef GNUTLS_NONBLOCK +#error GNUTLS_NONBLOCK should have been defined +#endif void doit(void) { @@ -349,4 +344,4 @@ void doit(void) start("TLS-no flag", "NORMAL", 0); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/mini-x509-2.c b/tests/mini-x509-2.c index 27f7f6a51d..10ff2b2682 100644 --- a/tests/mini-x509-2.c +++ b/tests/mini-x509-2.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -43,141 +43,137 @@ static void tls_log_func(int level, const char *str) } static unsigned char ca_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTQwNDA5MDgwMjM0WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCuLSye8pe3yWKZ\n" - "Yp7tLQ4ImwLqqh1aN7x9pc5spLDj6krVArzkyyYDcWvtQNDjErEfLUrZZrCc4aIl\n" - "oU1Ghb92kI8ofZnHFbj3z5zdcWqiPppj5Y+hRdc4LszTWb+itrD9Ht/D67EK+m7W\n" - "ev6xxUdyiBYUmb2O3CnPZpUVshMRtEe45EDGI5hUgL2n4Msj41htTq8hATYPXgoq\n" - "gQUyXFpKAX5XDCyOG+FC6jmEys7UCRYv3SCl7TPWJ4cm+lHcFI2/OTOCBvMlKN2J\n" - "mWCdfnudZldqthin+8fR9l4nbuutOfPNt1Dj9InDzWZ1W/o4LrjKa7fsvszj2Z5A\n" - "Fn+xN/4zAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" - "ADAdBgNVHQ4EFgQUwRHwbXyPosKNNkBiZduEwL5ZCwswDQYJKoZIhvcNAQELBQAD\n" - "ggEBAEKr0b7WoJL+L8St/LEITU/i7FwFrCP6DkbaNo0kgzPmwnvNmw88MLI6UKwE\n" - "JecnjFhurRBBZ4FA85ucNyizeBnuXqFcyJ20+XziaXGPKV/ugKyYv9KBoTYkQOCh\n" - "nbOthmDqjvy2UYQj0BU2dOywkjUKWhYHEZLBpZYck0Orynxydwil5Ncsz4t3smJw\n" - "ahzCW8SzBFTiO99qQBCH2RH1PbUYzfAnJxZS2VScpcqlu9pr+Qv7r8E3p9qHxnQM\n" - "gO5laWO6lc13rNsbZRrtlCvacsiDSuDnS8EVXm0ih4fAntpRHacPbXZbOPQqJ/+1\n" - "G7/qJ6cDC/9aW+fU80ogTkAoFg4=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t ca_cert = { ca_cert_pem, - sizeof(ca_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwNDA5MDgwMjM0WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCuLSye8pe3yWKZ\n" + "Yp7tLQ4ImwLqqh1aN7x9pc5spLDj6krVArzkyyYDcWvtQNDjErEfLUrZZrCc4aIl\n" + "oU1Ghb92kI8ofZnHFbj3z5zdcWqiPppj5Y+hRdc4LszTWb+itrD9Ht/D67EK+m7W\n" + "ev6xxUdyiBYUmb2O3CnPZpUVshMRtEe45EDGI5hUgL2n4Msj41htTq8hATYPXgoq\n" + "gQUyXFpKAX5XDCyOG+FC6jmEys7UCRYv3SCl7TPWJ4cm+lHcFI2/OTOCBvMlKN2J\n" + "mWCdfnudZldqthin+8fR9l4nbuutOfPNt1Dj9InDzWZ1W/o4LrjKa7fsvszj2Z5A\n" + "Fn+xN/4zAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" + "ADAdBgNVHQ4EFgQUwRHwbXyPosKNNkBiZduEwL5ZCwswDQYJKoZIhvcNAQELBQAD\n" + "ggEBAEKr0b7WoJL+L8St/LEITU/i7FwFrCP6DkbaNo0kgzPmwnvNmw88MLI6UKwE\n" + "JecnjFhurRBBZ4FA85ucNyizeBnuXqFcyJ20+XziaXGPKV/ugKyYv9KBoTYkQOCh\n" + "nbOthmDqjvy2UYQj0BU2dOywkjUKWhYHEZLBpZYck0Orynxydwil5Ncsz4t3smJw\n" + "ahzCW8SzBFTiO99qQBCH2RH1PbUYzfAnJxZS2VScpcqlu9pr+Qv7r8E3p9qHxnQM\n" + "gO5laWO6lc13rNsbZRrtlCvacsiDSuDnS8EVXm0ih4fAntpRHacPbXZbOPQqJ/+1\n" + "G7/qJ6cDC/9aW+fU80ogTkAoFg4=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t ca_cert = { ca_cert_pem, sizeof(ca_cert_pem) }; static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIDOjCCAiKgAwIBAgIMU0T+mwoDu5uVLKeeMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTEwIhgPMjAxNDA0MDkwODAyMzVaGA85OTk5MTIzMTIzNTk1OVow\n" - "EzERMA8GA1UEAxMIc2VydmVyLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" - "AoIBAQDXfvgsMWXHNf3iUaEoZSNztZZr6+UdBkoUhbdWJDR+GwR+GHfnYaYHsuqb\n" - "bNEl/QFI+8Jeth0SmG7TNB+b/AlHFoBm8TwBt7H+Mn6AQIdo872Vs262UkHgbZN6\n" - "dEQeRCgiXmlsOVe+MVpf79Xi32MYz1FZ/ueS6tr8sIDhECThIZkq2eulVjAV86N2\n" - "zQ72Ml1k8rPw4SdK5OFhcXNdXr6CsAol8MmiORKDF0iAZxwtFVc00nBGqQC5rwrN\n" - "3A8czH5TsvyvrcW0mwV2XOVvZM5kFM1T/X0jF6RQHiGGFBYK4s6JZxSSOhJMFYYh\n" - "koPEKsuVZdmBJ2yTTdGumHZfG9LDAgMBAAGjgY0wgYowDAYDVR0TAQH/BAIwADAU\n" - "BgNVHREEDTALgglsb2NhbGhvc3QwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYDVR0P\n" - "AQH/BAUDAwegADAdBgNVHQ4EFgQURXiN5VD5vgqAprhd/37ldGKv4/4wHwYDVR0j\n" - "BBgwFoAU8MUzmkotjSmVa5r1ejMkMQ6BiZYwDQYJKoZIhvcNAQELBQADggEBABSU\n" - "cmMX0nGeg43itPnLjSTIUuYEamRhfsFDwgRYQn5w+BcFG1p0scBRxLAShUEb9A2A\n" - "oEJV4rQDpCn9bcMrMHhTCR5sOlLh/2o9BROjK0+DjQLDkooQK5xa+1GYEiy6QYCx\n" - "QjdCCnMhHh24oP2/vUggRKhevvD2QQFKcCDT6n13RFYm+HX82gIh6SAtRs0oahY5\n" - "k9CM9TYRPzXy+tQqhZisJzc8BLTW/XA97kAJW6+hUhPir7AYR6BKJhNeIxcN/yMy\n" - "jsHzWDLezip/8q+kzw658V5e40hne7ZaJycGUaUdLVnJcpNtBgGE82TRS/XZSQKF\n" - "fpy8FLGcJynqlIOzdKs=\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIDATCCAemgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTQwNDA5MDgwMjM0WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZq3sA+mjFadII\n" - "EMDHfj1fYh+UOUSa8c814E9NfCdYZ9Z11BmPpBeR5mXV12j1DKjkTlqTUL7s4lVR\n" - "RKfyAdCpQIfeXHDeTYYUq2uBnbi5YMG5Y+WbCiYacgRU3IypYrSzaeh1mY7GiEFe\n" - "U/NaImHLCf+TdAvTJ3Fo0QPe5QN2Lrv6l//cqOv7enZ91KRWxClDMM6EAr+C/7dk\n" - "rOTXRrCuH/e/KVBXEJ/YeSYPmBIwolGktRrGdsVagdqYArr4dhJ7VThIVRUX1Ijl\n" - "THCLstI/LuD8WkDccU3ZSdm47f2U43p/+rSO0MiNOXiaskeK56G/9DbJEeETUbzm\n" - "/B2712MVAgMBAAGjZDBiMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" - "ADAdBgNVHQ4EFgQU8MUzmkotjSmVa5r1ejMkMQ6BiZYwHwYDVR0jBBgwFoAUwRHw\n" - "bXyPosKNNkBiZduEwL5ZCwswDQYJKoZIhvcNAQELBQADggEBACKxBPj9u1t52uIF\n" - "eQ2JPb8/u+MBttvSLo0qPKXwpc4q8hNclh66dpqGWiF0iSumsKyKU54r6CIF9Ikm\n" - "t1V1GR9Ll4iTnz3NdIt1w3ns8rSlU5O/dgKysK/1C/5xJWEUYtEO5mnyi4Zaf8FB\n" - "hKmQ1aWF5dTB81PVAQxyCiFEnH7YumK7pJeIpnCOPIqLZLUHfrTUeL8zONF4i5Sb\n" - "7taZ8SQ6b7IaioU+NJ50uT2wy34lsyvCWf76Azezv9bggkdNDo/7ktMgsfRrSyM8\n" - "+MVob5ePGTjKx5yMy/sy2vUkkefwW3RiEss/y2JRb8Hw7nDlA9ttilYKFwGFwRvw\n" - "KRsXqo8=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIIDOjCCAiKgAwIBAgIMU0T+mwoDu5uVLKeeMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTEwIhgPMjAxNDA0MDkwODAyMzVaGA85OTk5MTIzMTIzNTk1OVow\n" + "EzERMA8GA1UEAxMIc2VydmVyLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" + "AoIBAQDXfvgsMWXHNf3iUaEoZSNztZZr6+UdBkoUhbdWJDR+GwR+GHfnYaYHsuqb\n" + "bNEl/QFI+8Jeth0SmG7TNB+b/AlHFoBm8TwBt7H+Mn6AQIdo872Vs262UkHgbZN6\n" + "dEQeRCgiXmlsOVe+MVpf79Xi32MYz1FZ/ueS6tr8sIDhECThIZkq2eulVjAV86N2\n" + "zQ72Ml1k8rPw4SdK5OFhcXNdXr6CsAol8MmiORKDF0iAZxwtFVc00nBGqQC5rwrN\n" + "3A8czH5TsvyvrcW0mwV2XOVvZM5kFM1T/X0jF6RQHiGGFBYK4s6JZxSSOhJMFYYh\n" + "koPEKsuVZdmBJ2yTTdGumHZfG9LDAgMBAAGjgY0wgYowDAYDVR0TAQH/BAIwADAU\n" + "BgNVHREEDTALgglsb2NhbGhvc3QwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYDVR0P\n" + "AQH/BAUDAwegADAdBgNVHQ4EFgQURXiN5VD5vgqAprhd/37ldGKv4/4wHwYDVR0j\n" + "BBgwFoAU8MUzmkotjSmVa5r1ejMkMQ6BiZYwDQYJKoZIhvcNAQELBQADggEBABSU\n" + "cmMX0nGeg43itPnLjSTIUuYEamRhfsFDwgRYQn5w+BcFG1p0scBRxLAShUEb9A2A\n" + "oEJV4rQDpCn9bcMrMHhTCR5sOlLh/2o9BROjK0+DjQLDkooQK5xa+1GYEiy6QYCx\n" + "QjdCCnMhHh24oP2/vUggRKhevvD2QQFKcCDT6n13RFYm+HX82gIh6SAtRs0oahY5\n" + "k9CM9TYRPzXy+tQqhZisJzc8BLTW/XA97kAJW6+hUhPir7AYR6BKJhNeIxcN/yMy\n" + "jsHzWDLezip/8q+kzw658V5e40hne7ZaJycGUaUdLVnJcpNtBgGE82TRS/XZSQKF\n" + "fpy8FLGcJynqlIOzdKs=\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIDATCCAemgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwNDA5MDgwMjM0WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZq3sA+mjFadII\n" + "EMDHfj1fYh+UOUSa8c814E9NfCdYZ9Z11BmPpBeR5mXV12j1DKjkTlqTUL7s4lVR\n" + "RKfyAdCpQIfeXHDeTYYUq2uBnbi5YMG5Y+WbCiYacgRU3IypYrSzaeh1mY7GiEFe\n" + "U/NaImHLCf+TdAvTJ3Fo0QPe5QN2Lrv6l//cqOv7enZ91KRWxClDMM6EAr+C/7dk\n" + "rOTXRrCuH/e/KVBXEJ/YeSYPmBIwolGktRrGdsVagdqYArr4dhJ7VThIVRUX1Ijl\n" + "THCLstI/LuD8WkDccU3ZSdm47f2U43p/+rSO0MiNOXiaskeK56G/9DbJEeETUbzm\n" + "/B2712MVAgMBAAGjZDBiMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" + "ADAdBgNVHQ4EFgQU8MUzmkotjSmVa5r1ejMkMQ6BiZYwHwYDVR0jBBgwFoAUwRHw\n" + "bXyPosKNNkBiZduEwL5ZCwswDQYJKoZIhvcNAQELBQADggEBACKxBPj9u1t52uIF\n" + "eQ2JPb8/u+MBttvSLo0qPKXwpc4q8hNclh66dpqGWiF0iSumsKyKU54r6CIF9Ikm\n" + "t1V1GR9Ll4iTnz3NdIt1w3ns8rSlU5O/dgKysK/1C/5xJWEUYtEO5mnyi4Zaf8FB\n" + "hKmQ1aWF5dTB81PVAQxyCiFEnH7YumK7pJeIpnCOPIqLZLUHfrTUeL8zONF4i5Sb\n" + "7taZ8SQ6b7IaioU+NJ50uT2wy34lsyvCWf76Azezv9bggkdNDo/7ktMgsfRrSyM8\n" + "+MVob5ePGTjKx5yMy/sy2vUkkefwW3RiEss/y2JRb8Hw7nDlA9ttilYKFwGFwRvw\n" + "KRsXqo8=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIEpAIBAAKCAQEA1374LDFlxzX94lGhKGUjc7WWa+vlHQZKFIW3ViQ0fhsEfhh3\n" - "52GmB7Lqm2zRJf0BSPvCXrYdEphu0zQfm/wJRxaAZvE8Abex/jJ+gECHaPO9lbNu\n" - "tlJB4G2TenREHkQoIl5pbDlXvjFaX+/V4t9jGM9RWf7nkura/LCA4RAk4SGZKtnr\n" - "pVYwFfOjds0O9jJdZPKz8OEnSuThYXFzXV6+grAKJfDJojkSgxdIgGccLRVXNNJw\n" - "RqkAua8KzdwPHMx+U7L8r63FtJsFdlzlb2TOZBTNU/19IxekUB4hhhQWCuLOiWcU\n" - "kjoSTBWGIZKDxCrLlWXZgSdsk03Rrph2XxvSwwIDAQABAoIBAB7trDS7ij4DM8MN\n" - "sDGaAnKS91nZ63I0+uDjKCMG4znOKuDmJh9hVnD4bs+L2KC5JTwSVh09ygJnOlC5\n" - "xGegzrwTMK6VpOUiNjujh6BkooqfoPAhZpxoReguEeKbWUN2yMPWBQ9xU3SKpMvs\n" - "IiiDozdmWeiuuxHM/00REA49QO3Gnx2logeB+fcvXXD1UiZV3x0xxSApiJt1sr2r\n" - "NmqSyGdNUgpmnTP8zbKnDaRe5Wj4tj1TCTLE/HZ0tzdRuwlkIqvcpGg1LMtKm5N8\n" - "xIWjTGMFwGjG+OF8LGqHLH+28pI3iMB6QqO2YLwOp+WZKImKP3+Dp3s8lCw8t8cm\n" - "q5/Qc9ECgYEA2xwxm+pFkrFmZNLCakP/6S5AZqpfSBRUlF/uX2pBKO7o6I6aOV9o\n" - "zq2QWYIZfdyD+9MvAFUQ36sWfTVWpGA34WGtsGtcRRygKKTigpJHvBldaPxiuYuk\n" - "xbS54nWUdix/JzyQAy22xJXlp4XJvtFJjHhA2td0XA7tfng9n8jmvEUCgYEA+8cA\n" - "uFIQFbaZ2y6pnOvlVj8OH0f1hZa9M+3q01fWy1rnDAsLrIzJy8TZnBtpDwy9lAun\n" - "Sa6wzu6qeHmF17xwk5U7BCyK2Qj/9KhRLg1mnDebQ/CiLSAaJVnrYFp9Du96fTkN\n" - "ollvbFiGF92QwPTDf2f1gHZQEPwa+f/ox37ad2cCgYEAwMgXpfUD7cOEMeV2BQV7\n" - "XnDBXRM97i9lE38sPmtAlYFPD36Yly4pCt+PCBH9181zmtf+nK47wG/Jw7RwXQQD\n" - "ZpwItBZiArTi/Z/FY9jMoOU4WKznOBVzjjgq7ONDEo6n+Z/BnepUyraQb0q5bNi7\n" - "e4o6ldHHoU/JCeNFZRbgXHkCgYA6vJU9at+XwS6phHxLQHkTIsivoYD0tlLTX4it\n" - "30sby8wk8hq6GWomYHkHwxlCSo2bkRBozxkuXV1ll6wSxUJaG7FV6vJFaaUUtYOi\n" - "w7uRbCOLuQKMlnWjCxQvOUz9g/7GYd39ZvHoi8pUnPrdGPzWpzEN1AwfukCs2/e5\n" - "Oq3KtwKBgQCkHmDU8h0kOfN28f8ZiyjJemQMNoOGiJqnGexaKvsRd+bt4H+7DsWQ\n" - "OnyKm/oR0wCCSmFM5aQc6GgzPD7orueKVYHChbY7HLTWKRHNs6Rlk+6hXJvOld0i\n" - "Cl7KqL2x2ibGMtt4LtSntdzWqa87N7vCWMSTmvd8uLgflBs33xUIiQ==\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIIEpAIBAAKCAQEA1374LDFlxzX94lGhKGUjc7WWa+vlHQZKFIW3ViQ0fhsEfhh3\n" + "52GmB7Lqm2zRJf0BSPvCXrYdEphu0zQfm/wJRxaAZvE8Abex/jJ+gECHaPO9lbNu\n" + "tlJB4G2TenREHkQoIl5pbDlXvjFaX+/V4t9jGM9RWf7nkura/LCA4RAk4SGZKtnr\n" + "pVYwFfOjds0O9jJdZPKz8OEnSuThYXFzXV6+grAKJfDJojkSgxdIgGccLRVXNNJw\n" + "RqkAua8KzdwPHMx+U7L8r63FtJsFdlzlb2TOZBTNU/19IxekUB4hhhQWCuLOiWcU\n" + "kjoSTBWGIZKDxCrLlWXZgSdsk03Rrph2XxvSwwIDAQABAoIBAB7trDS7ij4DM8MN\n" + "sDGaAnKS91nZ63I0+uDjKCMG4znOKuDmJh9hVnD4bs+L2KC5JTwSVh09ygJnOlC5\n" + "xGegzrwTMK6VpOUiNjujh6BkooqfoPAhZpxoReguEeKbWUN2yMPWBQ9xU3SKpMvs\n" + "IiiDozdmWeiuuxHM/00REA49QO3Gnx2logeB+fcvXXD1UiZV3x0xxSApiJt1sr2r\n" + "NmqSyGdNUgpmnTP8zbKnDaRe5Wj4tj1TCTLE/HZ0tzdRuwlkIqvcpGg1LMtKm5N8\n" + "xIWjTGMFwGjG+OF8LGqHLH+28pI3iMB6QqO2YLwOp+WZKImKP3+Dp3s8lCw8t8cm\n" + "q5/Qc9ECgYEA2xwxm+pFkrFmZNLCakP/6S5AZqpfSBRUlF/uX2pBKO7o6I6aOV9o\n" + "zq2QWYIZfdyD+9MvAFUQ36sWfTVWpGA34WGtsGtcRRygKKTigpJHvBldaPxiuYuk\n" + "xbS54nWUdix/JzyQAy22xJXlp4XJvtFJjHhA2td0XA7tfng9n8jmvEUCgYEA+8cA\n" + "uFIQFbaZ2y6pnOvlVj8OH0f1hZa9M+3q01fWy1rnDAsLrIzJy8TZnBtpDwy9lAun\n" + "Sa6wzu6qeHmF17xwk5U7BCyK2Qj/9KhRLg1mnDebQ/CiLSAaJVnrYFp9Du96fTkN\n" + "ollvbFiGF92QwPTDf2f1gHZQEPwa+f/ox37ad2cCgYEAwMgXpfUD7cOEMeV2BQV7\n" + "XnDBXRM97i9lE38sPmtAlYFPD36Yly4pCt+PCBH9181zmtf+nK47wG/Jw7RwXQQD\n" + "ZpwItBZiArTi/Z/FY9jMoOU4WKznOBVzjjgq7ONDEo6n+Z/BnepUyraQb0q5bNi7\n" + "e4o6ldHHoU/JCeNFZRbgXHkCgYA6vJU9at+XwS6phHxLQHkTIsivoYD0tlLTX4it\n" + "30sby8wk8hq6GWomYHkHwxlCSo2bkRBozxkuXV1ll6wSxUJaG7FV6vJFaaUUtYOi\n" + "w7uRbCOLuQKMlnWjCxQvOUz9g/7GYd39ZvHoi8pUnPrdGPzWpzEN1AwfukCs2/e5\n" + "Oq3KtwKBgQCkHmDU8h0kOfN28f8ZiyjJemQMNoOGiJqnGexaKvsRd+bt4H+7DsWQ\n" + "OnyKm/oR0wCCSmFM5aQc6GgzPD7orueKVYHChbY7HLTWKRHNs6Rlk+6hXJvOld0i\n" + "Cl7KqL2x2ibGMtt4LtSntdzWqa87N7vCWMSTmvd8uLgflBs33xUIiQ==\n" + "-----END RSA PRIVATE KEY-----\n"; static unsigned char cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICHjCCAYmgAwIBAgIERiYdNzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTI3WhcNMDgwNDE3MTMyOTI3WjAdMRsw\n" - "GQYDVQQDExJHbnVUTFMgdGVzdCBjbGllbnQwgZwwCwYJKoZIhvcNAQEBA4GMADCB\n" - "iAKBgLtmQ/Xyxde2jMzF3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeL\n" - "ZIkiW8DdU3w77XwEu4C5KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKN\n" - "zj2AC41179gAgY8oBAOgIo1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjdjB0MAwG\n" - "A1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUDAweg\n" - "ADAdBgNVHQ4EFgQUTLkKm/odNON+3svSBxX+odrLaJEwHwYDVR0jBBgwFoAU6Twc\n" - "+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBALujmBJVZnvaTXr9cFRJ\n" - "jpfc/3X7sLUsMvumcDE01ls/cG5mIatmiyEU9qI3jbgUf82z23ON/acwJf875D3/\n" - "U7jyOsBJ44SEQITbin2yUeJMIm1tievvdNXBDfW95AM507ShzP12sfiJkJfjjdhy\n" - "dc8Siq5JojruiMizAf0pA7in\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIICHjCCAYmgAwIBAgIERiYdNzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTI3WhcNMDgwNDE3MTMyOTI3WjAdMRsw\n" + "GQYDVQQDExJHbnVUTFMgdGVzdCBjbGllbnQwgZwwCwYJKoZIhvcNAQEBA4GMADCB\n" + "iAKBgLtmQ/Xyxde2jMzF3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeL\n" + "ZIkiW8DdU3w77XwEu4C5KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKN\n" + "zj2AC41179gAgY8oBAOgIo1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjdjB0MAwG\n" + "A1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUDAweg\n" + "ADAdBgNVHQ4EFgQUTLkKm/odNON+3svSBxX+odrLaJEwHwYDVR0jBBgwFoAU6Twc\n" + "+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBALujmBJVZnvaTXr9cFRJ\n" + "jpfc/3X7sLUsMvumcDE01ls/cG5mIatmiyEU9qI3jbgUf82z23ON/acwJf875D3/\n" + "U7jyOsBJ44SEQITbin2yUeJMIm1tievvdNXBDfW95AM507ShzP12sfiJkJfjjdhy\n" + "dc8Siq5JojruiMizAf0pA7in\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t cli_cert = { cert_pem, sizeof(cert_pem) - 1 }; static unsigned char key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" - "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" - "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" - "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" - "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" - "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" - "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" - "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" - "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" - "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" - "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" - "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" - "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" + "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" + "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" + "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" + "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" + "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" + "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" + "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" + "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" + "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" + "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" + "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" + "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" + "-----END RSA PRIVATE KEY-----\n"; const gnutls_datum_t cli_key = { key_pem, sizeof(key_pem) - 1 }; -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; -static -void start(const char *prio) +static void start(const char *prio) { int ret; /* Server stuff. */ @@ -201,10 +197,9 @@ void start(const char *prio) if (debug) gnutls_global_set_log_level(2); - ret = - gnutls_x509_crt_list_import2(&crts, &crts_size, &server_cert, - GNUTLS_X509_FMT_PEM, - GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED); + ret = gnutls_x509_crt_list_import2( + &crts, &crts_size, &server_cert, GNUTLS_X509_FMT_PEM, + GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED); if (ret < 0) { fprintf(stderr, "error: %s\n", gnutls_strerror(ret)); exit(1); @@ -216,8 +211,8 @@ void start(const char *prio) exit(1); } - ret = - gnutls_x509_privkey_import(pkey, &server_key, GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_privkey_import(pkey, &server_key, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fprintf(stderr, "error: %s\n", gnutls_strerror(ret)); exit(1); @@ -245,15 +240,13 @@ void start(const char *prio) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); - ret = gnutls_certificate_set_x509_key_mem(clientx509cred, - &cli_cert, &cli_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + clientx509cred, &cli_cert, &cli_key, GNUTLS_X509_FMT_PEM); ret = gnutls_init(&client, GNUTLS_CLIENT); if (ret < 0) @@ -284,9 +277,8 @@ void start(const char *prio) } gnutls_x509_crt_init(&crt); - ret = - gnutls_x509_crt_import(crt, &server_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(crt, &server_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("gnutls_x509_crt_import: %s\n", gnutls_strerror(ret)); @@ -302,8 +294,8 @@ void start(const char *prio) assert(ret == 0); gnutls_x509_crt_deinit(crt); - if (scert.size != mcert->size - || memcmp(scert.data, mcert->data, mcert->size) != 0) { + if (scert.size != mcert->size || + memcmp(scert.data, mcert->data, mcert->size) != 0) { fail("gnutls_certificate_get_ours output doesn't match cert\n"); exit(1); } @@ -325,8 +317,8 @@ void start(const char *prio) } gnutls_x509_crt_init(&crt); - ret = - gnutls_x509_crt_import(crt, &cli_cert, GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(crt, &cli_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("gnutls_x509_crt_import: %s\n", gnutls_strerror(ret)); @@ -342,8 +334,8 @@ void start(const char *prio) assert(ret == 0); gnutls_x509_crt_deinit(crt); - if (ccert.size != mcert->size - || memcmp(ccert.data, mcert->data, mcert->size) != 0) { + if (ccert.size != mcert->size || + memcmp(ccert.data, mcert->data, mcert->size) != 0) { fail("gnutls_certificate_get_ours output doesn't match cert\n"); exit(1); } @@ -440,9 +432,8 @@ void start(const char *prio) exit(1); } - status = - gnutls_ocsp_status_request_is_checked(client, - GNUTLS_OCSP_SR_IS_AVAIL); + status = gnutls_ocsp_status_request_is_checked( + client, GNUTLS_OCSP_SR_IS_AVAIL); if (status != 0) { fprintf(stderr, "gnutls_ocsp_status_request_is_checked: unexpected value (%u)\n", diff --git a/tests/mini-x509-callbacks-intr.c b/tests/mini-x509-callbacks-intr.c index 3ea7aa2499..4060103c1b 100644 --- a/tests/mini-x509-callbacks-intr.c +++ b/tests/mini-x509-callbacks-intr.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -79,48 +79,44 @@ static void tls_log_func(int level, const char *str) } static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" - "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" - "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" - "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" - "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" - "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" - "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" - "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" - "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" - "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" - "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" - "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" + "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" + "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" + "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" + "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" + "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" + "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" + "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" + "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" + "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" + "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" + "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" - "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" - "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" - "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" - "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" - "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" - "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" - "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" - "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" - "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" - "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" - "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" - "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; - -static -void start(const char *prio) + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" + "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" + "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" + "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" + "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" + "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" + "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" + "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" + "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" + "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" + "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" + "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" + "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; + +static void start(const char *prio) { /* Server stuff. */ gnutls_certificate_credentials_t serverx509cred; @@ -144,9 +140,8 @@ void start(const char *prio) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); gnutls_priority_set_direct(server, "NORMAL", NULL); @@ -155,8 +150,8 @@ void start(const char *prio) gnutls_transport_set_ptr(server, server); gnutls_certificate_set_verify_function(serverx509cred, server_callback); gnutls_certificate_server_set_request(server, GNUTLS_CERT_REQUEST); - gnutls_handshake_set_post_client_hello_function(server, - post_client_hello_callback); + gnutls_handshake_set_post_client_hello_function( + server, post_client_hello_callback); /* Init client */ gnutls_certificate_allocate_credentials(&clientx509cred); diff --git a/tests/mini-x509-callbacks.c b/tests/mini-x509-callbacks.c index 3a25a01015..d70f01ffd4 100644 --- a/tests/mini-x509-callbacks.c +++ b/tests/mini-x509-callbacks.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -61,8 +61,8 @@ static void verify_alpn(gnutls_session_t session) exit(1); } - if (strlen(str) != selected.size - || memcmp(str, selected.data, selected.size) != 0) { + if (strlen(str) != selected.size || + memcmp(str, selected.data, selected.size) != 0) { fail("expected protocol %s, got %.*s\n", str, selected.size, selected.data); exit(1); @@ -95,7 +95,7 @@ unsigned int msg_order[] = { static int handshake_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * rawmsg) + const gnutls_datum_t *rawmsg) { static unsigned idx = 0; unsigned int msg; @@ -112,13 +112,15 @@ static int handshake_callback(gnutls_session_t session, unsigned int htype, if (incoming != 0) { msg = gnutls_handshake_get_last_in(session); if (msg != htype) { - fail("last input message was not recorded (exp: %d, found: %d) \n", msg, htype); + fail("last input message was not recorded (exp: %d, found: %d) \n", + msg, htype); exit(1); } } else { msg = gnutls_handshake_get_last_out(session); if (msg != htype) { - fail("last output message was not recorded (exp: %d, found: %d) \n", msg, htype); + fail("last output message was not recorded (exp: %d, found: %d) \n", + msg, htype); exit(1); } } @@ -153,45 +155,42 @@ static void tls_log_func(int level, const char *str) } static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" - "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" - "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" - "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" - "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" - "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" - "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" - "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" - "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" - "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" - "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" - "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" + "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" + "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" + "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" + "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" + "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" + "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" + "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" + "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" + "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" + "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" + "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" - "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" - "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" - "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" - "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" - "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" - "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" - "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" - "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" - "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" - "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" - "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" - "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" + "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" + "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" + "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" + "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" + "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" + "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" + "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" + "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" + "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" + "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" + "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" + "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; static void append_alpn(gnutls_session_t session) { @@ -211,8 +210,7 @@ static void append_alpn(gnutls_session_t session) } } -static -void start(const char *prio, unsigned check_order) +static void start(const char *prio, unsigned check_order) { /* Server stuff. */ gnutls_certificate_credentials_t serverx509cred; @@ -237,9 +235,8 @@ void start(const char *prio, unsigned check_order) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); gnutls_priority_set_direct(server, prio, NULL); @@ -248,8 +245,8 @@ void start(const char *prio, unsigned check_order) gnutls_transport_set_ptr(server, server); gnutls_certificate_set_verify_function(serverx509cred, server_callback); gnutls_certificate_server_set_request(server, GNUTLS_CERT_REQUEST); - gnutls_handshake_set_post_client_hello_function(server, - post_client_hello_callback); + gnutls_handshake_set_post_client_hello_function( + server, post_client_hello_callback); if (check_order) gnutls_handshake_set_hook_function(server, GNUTLS_HANDSHAKE_ANY, GNUTLS_HOOK_POST, diff --git a/tests/mini-x509-cas.c b/tests/mini-x509-cas.c index 08b40329e8..4fd9e16e13 100644 --- a/tests/mini-x509-cas.c +++ b/tests/mini-x509-cas.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -43,8 +43,7 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -static -void start(const char *prio) +static void start(const char *prio) { const char *ca_file; /* Server stuff. */ @@ -71,12 +70,10 @@ void start(const char *prio) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); - ret = - gnutls_certificate_set_x509_trust_file(serverx509cred, ca_file, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_file(serverx509cred, ca_file, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fprintf(stderr, "%s\n", gnutls_strerror(ret)); exit(1); diff --git a/tests/mini-x509-ipaddr.c b/tests/mini-x509-ipaddr.c index 7d6fc2e0f8..a85144066a 100644 --- a/tests/mini-x509-ipaddr.c +++ b/tests/mini-x509-ipaddr.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -41,7 +41,7 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1490171562; @@ -100,9 +100,8 @@ void doit(void) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -124,7 +123,6 @@ void doit(void) /* attempt to verify */ { - /* try hostname - which is invalid */ memset(data, 0, sizeof(data)); @@ -186,15 +184,14 @@ void doit(void) } if (status != 0) { - assert(gnutls_certificate_verification_status_print - (status, GNUTLS_CRT_X509, &t, 0) >= 0); + assert(gnutls_certificate_verification_status_print( + status, GNUTLS_CRT_X509, &t, 0) >= 0); fail("could not verify: %s/%.4x!\n", t.data, status); } /* try the other verification functions */ - ret = - gnutls_certificate_verify_peers3(client, "127.0.0.1", - &status); + ret = gnutls_certificate_verify_peers3(client, "127.0.0.1", + &status); if (ret < 0) { fail("could not verify certificate: %s\n", gnutls_strerror(ret)); @@ -202,21 +199,20 @@ void doit(void) } if (status != 0) { - assert(gnutls_certificate_verification_status_print - (status, GNUTLS_CRT_X509, &t, 0) >= 0); + assert(gnutls_certificate_verification_status_print( + status, GNUTLS_CRT_X509, &t, 0) >= 0); fail("could not verify: %s/%.4x!\n", t.data, status); } } { /* change the flags */ - gnutls_certificate_set_verify_flags(clientx509cred, - GNUTLS_VERIFY_DO_NOT_ALLOW_IP_MATCHES); + gnutls_certificate_set_verify_flags( + clientx509cred, GNUTLS_VERIFY_DO_NOT_ALLOW_IP_MATCHES); /* now the compatibility option should fail */ - ret = - gnutls_certificate_verify_peers3(client, "127.0.0.1", - &status); + ret = gnutls_certificate_verify_peers3(client, "127.0.0.1", + &status); if (ret < 0) { fail("could not verify certificate: %s\n", gnutls_strerror(ret)); @@ -266,8 +262,8 @@ void doit(void) } if (status != 0) { - assert(gnutls_certificate_verification_status_print - (status, GNUTLS_CRT_X509, &t, 0) >= 0); + assert(gnutls_certificate_verification_status_print( + status, GNUTLS_CRT_X509, &t, 0) >= 0); fail("could not verify: %s/%.4x!\n", t.data, status); } } diff --git a/tests/mini-x509.c b/tests/mini-x509.c index 4aa1d5f4e2..d358c20b01 100644 --- a/tests/mini-x509.c +++ b/tests/mini-x509.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -40,7 +40,7 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1461671166; @@ -50,8 +50,7 @@ static time_t mytime(time_t * t) return then; } -static -void start(const char *prio, unsigned expect_max) +static void start(const char *prio, unsigned expect_max) { int ret; /* Server stuff. */ @@ -75,9 +74,8 @@ void start(const char *prio, unsigned expect_max) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); @@ -91,9 +89,8 @@ void start(const char *prio, unsigned expect_max) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -181,9 +178,8 @@ void start(const char *prio, unsigned expect_max) } /* check gnutls_certificate_verify_peers3 */ - ret = - gnutls_certificate_verify_peers3(client, "localhost1", - &status); + ret = gnutls_certificate_verify_peers3(client, "localhost1", + &status); if (ret < 0) { fail("could not verify certificate: %s\n", gnutls_strerror(ret)); @@ -195,9 +191,8 @@ void start(const char *prio, unsigned expect_max) exit(1); } - ret = - gnutls_certificate_verify_peers3(client, "localhost", - &status); + ret = gnutls_certificate_verify_peers3(client, "localhost", + &status); if (ret < 0) { fail("could not verify certificate: %s\n", gnutls_strerror(ret)); @@ -235,7 +230,7 @@ void start(const char *prio, unsigned expect_max) if (sizeof(time_t) >= 8) { t = gnutls_certificate_expiration_time_peers(client); - if (t != (time_t) 253402300799UL) { + if (t != (time_t)253402300799UL) { fail("unexpected expiration time: %lu\n", (long unsigned)t); } @@ -252,12 +247,14 @@ void start(const char *prio, unsigned expect_max) if (gnutls_protocol_get_version(client) == GNUTLS_TLS1_2) { ret = gnutls_session_ext_master_secret_status(client); if (ret != 1) { - fail("Extended master secret wasn't negotiated by default (client ret: %d)\n", ret); + fail("Extended master secret wasn't negotiated by default (client ret: %d)\n", + ret); } ret = gnutls_session_ext_master_secret_status(server); if (ret != 1) { - fail("Extended master secret wasn't negotiated by default (server ret: %d)\n", ret); + fail("Extended master secret wasn't negotiated by default (server ret: %d)\n", + ret); } } diff --git a/tests/missingissuer.c b/tests/missingissuer.c index 5a7ccaabbd..5f3a5364bb 100644 --- a/tests/missingissuer.c +++ b/tests/missingissuer.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -43,7 +43,7 @@ static time_t then = DEFAULT_THEN; verifying certificates. To avoid a time bomb, we hard code the current time. This should work fine on systems where the library call to time is resolved at run-time. */ -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { if (t) *t = then; @@ -63,7 +63,7 @@ struct getissuer_data { static int getissuer_callback(gnutls_x509_trust_list_t tlist, const gnutls_x509_crt_t crt, - gnutls_x509_crt_t ** issuers, + gnutls_x509_crt_t **issuers, unsigned int *issuers_size) { gnutls_datum_t tmp; @@ -94,13 +94,14 @@ static int getissuer_callback(gnutls_x509_trust_list_t tlist, assert(gnutls_x509_crt_print(crt, GNUTLS_CRT_PRINT_ONELINE, &tmp) >= 0); if (debug) - printf("\t Certificate missing issuer is: %.*s\n", - tmp.size, tmp.data); + printf("\t Certificate missing issuer is: %.*s\n", tmp.size, + tmp.data); gnutls_free(tmp.data); for (i = 0; i < *issuers_size; i++) { - assert(gnutls_x509_crt_print - ((*issuers)[i], GNUTLS_CRT_PRINT_ONELINE, &tmp) >= 0); + assert(gnutls_x509_crt_print((*issuers)[i], + GNUTLS_CRT_PRINT_ONELINE, + &tmp) >= 0); if (debug) printf("\t Appended issuer certificate is: %.*s\n", @@ -163,9 +164,8 @@ void doit(void) tmp.data = (unsigned char *)chains[i].chain[j]; tmp.size = strlen(chains[i].chain[j]); - ret = - gnutls_x509_crt_import(certs[j], &tmp, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(certs[j], &tmp, + GNUTLS_X509_FMT_PEM); if (debug > 2) printf("done\n"); if (ret < 0) { @@ -226,8 +226,8 @@ void doit(void) data.insert = chains[i].insert; gnutls_x509_trust_list_set_ptr(tl, &data); - gnutls_x509_trust_list_set_getissuer_function(tl, - getissuer_callback); + gnutls_x509_trust_list_set_getissuer_function( + tl, getissuer_callback); ret = gnutls_x509_trust_list_verify_crt(tl, certs, j, chains[i].verify_flags, @@ -241,12 +241,14 @@ void doit(void) if (verify_status != chains[i].expected_verify_result) { gnutls_datum_t out1, out2; - gnutls_certificate_verification_status_print - (verify_status, GNUTLS_CRT_X509, &out1, 0); - gnutls_certificate_verification_status_print - (chains[i].expected_verify_result, - GNUTLS_CRT_X509, &out2, 0); - fail("chain[%s]:\nverify_status: %d: %s\nexpected: %d: %s\n", chains[i].name, verify_status, out1.data, chains[i].expected_verify_result, out2.data); + gnutls_certificate_verification_status_print( + verify_status, GNUTLS_CRT_X509, &out1, 0); + gnutls_certificate_verification_status_print( + chains[i].expected_verify_result, + GNUTLS_CRT_X509, &out2, 0); + fail("chain[%s]:\nverify_status: %d: %s\nexpected: %d: %s\n", + chains[i].name, verify_status, out1.data, + chains[i].expected_verify_result, out2.data); gnutls_free(out1.data); gnutls_free(out2.data); diff --git a/tests/missingissuer_aia.c b/tests/missingissuer_aia.c index 8070331909..0fe8879ade 100644 --- a/tests/missingissuer_aia.c +++ b/tests/missingissuer_aia.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -43,7 +43,7 @@ static time_t then = DEFAULT_THEN; verifying certificates. To avoid a time bomb, we hard code the current time. This should work fine on systems where the library call to time is resolved at run-time. */ -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { if (t) *t = then; @@ -58,7 +58,7 @@ static void tls_log_func(int level, const char *str) static int getissuer_callback(gnutls_x509_trust_list_t tlist, const gnutls_x509_crt_t crt, - gnutls_x509_crt_t ** issuers, + gnutls_x509_crt_t **issuers, unsigned int *issuers_size) { int ret; @@ -69,13 +69,12 @@ static int getissuer_callback(gnutls_x509_trust_list_t tlist, assert(gnutls_x509_crt_print(crt, GNUTLS_CRT_PRINT_ONELINE, &tmp) >= 0); if (debug) - printf("\t Certificate missing issuer is: %.*s\n", - tmp.size, tmp.data); + printf("\t Certificate missing issuer is: %.*s\n", tmp.size, + tmp.data); gnutls_free(tmp.data); - ret = gnutls_x509_crt_get_authority_info_access(crt, 1, - GNUTLS_IA_CAISSUERS_URI, - &aia, NULL); + ret = gnutls_x509_crt_get_authority_info_access( + crt, 1, GNUTLS_IA_CAISSUERS_URI, &aia, NULL); if (ret < 0) { fprintf(stderr, "error: %s\n", gnutls_strerror(ret)); return -1; @@ -98,8 +97,9 @@ static int getissuer_callback(gnutls_x509_trust_list_t tlist, } for (i = 0; i < *issuers_size; i++) { - assert(gnutls_x509_crt_print - (*issuers[i], GNUTLS_CRT_PRINT_ONELINE, &tmp) >= 0); + assert(gnutls_x509_crt_print(*issuers[i], + GNUTLS_CRT_PRINT_ONELINE, + &tmp) >= 0); if (debug) printf("\t Appended missing certificate is: %.*s\n", @@ -145,8 +145,7 @@ void doit(void) ret = gnutls_x509_crt_init(&certs[j]); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_init[%d]: %s\n", + fprintf(stderr, "gnutls_x509_crt_init[%d]: %s\n", (int)j, gnutls_strerror(ret)); exit(1); } @@ -154,21 +153,20 @@ void doit(void) tmp.data = (unsigned char *)missing_cert_aia[j]; tmp.size = strlen(missing_cert_aia[j]); - ret = - gnutls_x509_crt_import(certs[j], &tmp, GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(certs[j], &tmp, + GNUTLS_X509_FMT_PEM); if (debug > 2) printf("done\n"); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_import[%d]: %s\n", + fprintf(stderr, "gnutls_x509_crt_import[%d]: %s\n", (int)j, gnutls_strerror(ret)); exit(1); } gnutls_x509_crt_print(certs[j], GNUTLS_CRT_PRINT_ONELINE, &tmp); if (debug) - printf("\tCertificate %d: %.*s\n", (int)j, - tmp.size, tmp.data); + printf("\tCertificate %d: %.*s\n", (int)j, tmp.size, + tmp.data); gnutls_free(tmp.data); } @@ -212,16 +210,16 @@ void doit(void) gnutls_x509_trust_list_set_getissuer_function(tl, getissuer_callback); - ret = gnutls_x509_trust_list_verify_crt(tl, certs, MAX_CHAIN, - 0, &verify_status, NULL); + ret = gnutls_x509_trust_list_verify_crt(tl, certs, MAX_CHAIN, 0, + &verify_status, NULL); if (ret < 0) { fail("gnutls_x509_crt_list_verify: %s\n", gnutls_strerror(ret)); } if (verify_status) { gnutls_datum_t out; - gnutls_certificate_verification_status_print - (verify_status, GNUTLS_CRT_X509, &out, 0); + gnutls_certificate_verification_status_print( + verify_status, GNUTLS_CRT_X509, &out, 0); fail("verification failed: %s\n", out.data); gnutls_free(out.data); } diff --git a/tests/mpi.c b/tests/mpi.c index bc1d731a6d..39e856ba73 100644 --- a/tests/mpi.c +++ b/tests/mpi.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include diff --git a/tests/multi-alerts.c b/tests/multi-alerts.c index 7412d48fa1..1ca2521519 100644 --- a/tests/multi-alerts.c +++ b/tests/multi-alerts.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -41,18 +41,18 @@ int main(int argc, char **argv) #else -# include -# include -# include -# if !defined(_WIN32) -# include -# endif -# include -# include -# include +#include +#include +#include +#if !defined(_WIN32) +#include +#endif +#include +#include +#include -# include "utils.h" -# include "cert-common.h" +#include "utils.h" +#include "cert-common.h" pid_t child; @@ -62,46 +62,46 @@ static void tls_log_func(int level, const char *str) str); } -static unsigned char tls_hello[] = - "\x16\x03\x01\x01\x38\x01\x00\x01" - "\x34\x03\x03\xfc\x77\xa8\xc7\x46" - "\xf7\xfd\x04\x5b\x3c\xc6\xfa\xa4" - "\xea\x3e\xfa\x76\x99\xfe\x1a\x2e" - "\xe0\x79\x17\xb2\x27\x06\xc4\x5c" - "\xd8\x78\x31\x00\x00\xb6\xc0\x30" - "\xc0\x2c\xc0\x28\xc0\x24\xc0\x14" - "\xc0\x0a\x00\xa5\x00\xa3\x00\xa1" - "\x00\x9f\x00\x6b\x00\x6a\x00\x69" - "\x00\x68\x00\x39\x00\x38\x00\x37" - "\x00\x36\x00\x88\x00\x87\x00\x86" - "\x00\x85\xc0\x32\xc0\x2e\xc0\x2a" - "\xc0\x26\xc0\x0f\xc0\x05\x00\x9d" - "\x00\x3d\x00\x35\x00\x84\xc0\x2f" - "\xc0\x2b\xc0\x27\xc0\x23\xc0\x13" - "\xc0\x09\x00\xa4\x00\xa2\x00\xa0" - "\x00\x9e\x00\x67\x00\x40\x00\x3f" - "\x00\x3e\x00\x33\x00\x32\x00\x31" - "\x00\x30\x00\x9a\x00\x99\x00\x98" - "\x00\x97\x00\x45\x00\x44\x00\x43" - "\x00\x42\xc0\x31\xc0\x2d\xc0\x29" - "\xc0\x25\xc0\x0e\xc0\x04\x00\x9c" - "\x00\x3c\x00\x2f\x00\x96\x00\x41" - "\x00\x07\xc0\x11\xc0\x07\xc0\x0c" - "\xc0\x02\x00\x05\x00\x04\xc0\x12" - "\xc0\x08\x00\x16\x00\x13\x00\x10" - "\x00\x0d\xc0\x0d\xc0\x03\x00\x0a" - "\x00\x15\x00\x12\x00\x0f\x00\x0c" - "\x00\x09\x00\xff\x01\x00\x00\x55" - "\x00\x0b\x00\x04\x03\x00\x01\x02" - "\x00\x0a\x00\x1c\x00\x1a\x00\x17" - "\x00\x19\x00\x1c\x00\x1b\x00\x18" - "\x00\x1a\x00\x16\x00\x0e\x00\x0d" - "\x00\x0b\x00\x0c\x00\x09\x00\x0a" - "\x00\x23\x00\x00\x00\x0d\x00\x20" - "\x00\x1e\x06\x01\x06\x02\x06\x03" - "\x05\x01\x05\x02\x05\x03\x04\x01" - "\x04\x02\x04\x03\x03\x01\x03\x02" - "\x03\x03\x02\x01\x02\x02\x02\x03" "\x00\x0f\x00\x01\x01"; +static unsigned char tls_hello[] = "\x16\x03\x01\x01\x38\x01\x00\x01" + "\x34\x03\x03\xfc\x77\xa8\xc7\x46" + "\xf7\xfd\x04\x5b\x3c\xc6\xfa\xa4" + "\xea\x3e\xfa\x76\x99\xfe\x1a\x2e" + "\xe0\x79\x17\xb2\x27\x06\xc4\x5c" + "\xd8\x78\x31\x00\x00\xb6\xc0\x30" + "\xc0\x2c\xc0\x28\xc0\x24\xc0\x14" + "\xc0\x0a\x00\xa5\x00\xa3\x00\xa1" + "\x00\x9f\x00\x6b\x00\x6a\x00\x69" + "\x00\x68\x00\x39\x00\x38\x00\x37" + "\x00\x36\x00\x88\x00\x87\x00\x86" + "\x00\x85\xc0\x32\xc0\x2e\xc0\x2a" + "\xc0\x26\xc0\x0f\xc0\x05\x00\x9d" + "\x00\x3d\x00\x35\x00\x84\xc0\x2f" + "\xc0\x2b\xc0\x27\xc0\x23\xc0\x13" + "\xc0\x09\x00\xa4\x00\xa2\x00\xa0" + "\x00\x9e\x00\x67\x00\x40\x00\x3f" + "\x00\x3e\x00\x33\x00\x32\x00\x31" + "\x00\x30\x00\x9a\x00\x99\x00\x98" + "\x00\x97\x00\x45\x00\x44\x00\x43" + "\x00\x42\xc0\x31\xc0\x2d\xc0\x29" + "\xc0\x25\xc0\x0e\xc0\x04\x00\x9c" + "\x00\x3c\x00\x2f\x00\x96\x00\x41" + "\x00\x07\xc0\x11\xc0\x07\xc0\x0c" + "\xc0\x02\x00\x05\x00\x04\xc0\x12" + "\xc0\x08\x00\x16\x00\x13\x00\x10" + "\x00\x0d\xc0\x0d\xc0\x03\x00\x0a" + "\x00\x15\x00\x12\x00\x0f\x00\x0c" + "\x00\x09\x00\xff\x01\x00\x00\x55" + "\x00\x0b\x00\x04\x03\x00\x01\x02" + "\x00\x0a\x00\x1c\x00\x1a\x00\x17" + "\x00\x19\x00\x1c\x00\x1b\x00\x18" + "\x00\x1a\x00\x16\x00\x0e\x00\x0d" + "\x00\x0b\x00\x0c\x00\x09\x00\x0a" + "\x00\x23\x00\x00\x00\x0d\x00\x20" + "\x00\x1e\x06\x01\x06\x02\x06\x03" + "\x05\x01\x05\x02\x05\x03\x04\x01" + "\x04\x02\x04\x03\x03\x01\x03\x02" + "\x03\x03\x02\x01\x02\x02\x02\x03" + "\x00\x0f\x00\x01\x01"; static unsigned char tls_alert[] = "\x15\x03\x03\x00\x02\x00\x0A"; @@ -162,8 +162,8 @@ static void server(int sd) /* avoid calling all the priority functions, since the defaults * are adequate. */ - assert(gnutls_priority_set_direct - (session, "NORMAL:-VERS-ALL:+VERS-TLS1.2", NULL) >= 0); + assert(gnutls_priority_set_direct( + session, "NORMAL:-VERS-ALL:+VERS-TLS1.2", NULL) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -174,8 +174,8 @@ static void server(int sd) loops++; if (loops > 64) fail("Too many loops in the handshake!\n"); - } while (ret == GNUTLS_E_INTERRUPTED || ret == GNUTLS_E_AGAIN - || ret == GNUTLS_E_WARNING_ALERT_RECEIVED); + } while (ret == GNUTLS_E_INTERRUPTED || ret == GNUTLS_E_AGAIN || + ret == GNUTLS_E_WARNING_ALERT_RECEIVED); if (ret >= 0) { fail("server: Handshake succeeded unexpectedly\n"); @@ -231,4 +231,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/naked-alerts.c b/tests/naked-alerts.c index 73331f72fc..69392ef358 100644 --- a/tests/naked-alerts.c +++ b/tests/naked-alerts.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -40,18 +40,18 @@ int main(int argc, char **argv) #else -# include -# include -# include -# if !defined(_WIN32) -# include -# endif -# include -# include -# include +#include +#include +#include +#if !defined(_WIN32) +#include +#endif +#include +#include +#include -# include "utils.h" -# include "cert-common.h" +#include "utils.h" +#include "cert-common.h" pid_t child; @@ -111,8 +111,8 @@ static void server(int sd) /* avoid calling all the priority functions, since the defaults * are adequate. */ - assert(gnutls_priority_set_direct - (session, "NORMAL:-VERS-ALL:+VERS-TLS1.2", NULL) >= 0); + assert(gnutls_priority_set_direct( + session, "NORMAL:-VERS-ALL:+VERS-TLS1.2", NULL) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -123,11 +123,12 @@ static void server(int sd) loops++; if (loops > 64) fail("Too many loops in the handshake!\n"); - } while (ret == GNUTLS_E_INTERRUPTED || ret == GNUTLS_E_AGAIN - || ret == GNUTLS_E_WARNING_ALERT_RECEIVED); + } while (ret == GNUTLS_E_INTERRUPTED || ret == GNUTLS_E_AGAIN || + ret == GNUTLS_E_WARNING_ALERT_RECEIVED); if (ret != GNUTLS_E_UNEXPECTED_PACKET) { - fail("server: Handshake didn't fail with expected code (failed with %d)\n", ret); + fail("server: Handshake didn't fail with expected code (failed with %d)\n", + ret); } close(sd); @@ -174,4 +175,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/name-constraints-ip.c b/tests/name-constraints-ip.c index 00d10c03b2..cdc27fe4b2 100644 --- a/tests/name-constraints-ip.c +++ b/tests/name-constraints-ip.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -47,10 +47,9 @@ typedef struct test_vars_t { /* just declaration: function is exported privately from lib/x509/name_constraints.c (declared in lib/x509/x509_int.h) but including the header breaks includes */ -extern int _gnutls_x509_name_constraints_merge(gnutls_x509_name_constraints_t - nc, - gnutls_x509_name_constraints_t - nc2); +extern int +_gnutls_x509_name_constraints_merge(gnutls_x509_name_constraints_t nc, + gnutls_x509_name_constraints_t nc2); static void check_for_error(int ret) { @@ -62,7 +61,7 @@ static void check_for_error(int ret) #define IP_REJECTED 0 static void check_test_result(int ret, int expected_outcome, - gnutls_datum_t * tested_ip) + gnutls_datum_t *tested_ip) { if (expected_outcome == IP_ACCEPTED ? ret == 0 : ret != 0) { char ip_out[48]; @@ -78,7 +77,7 @@ static void check_test_result(int ret, int expected_outcome, } } -static void parse_cidr(const char *cidr, gnutls_datum_t * datum) +static void parse_cidr(const char *cidr, gnutls_datum_t *datum) { if (datum->data != NULL) { gnutls_free(datum->data); @@ -93,30 +92,31 @@ static void tls_log_func(int level, const char *str) } static unsigned char cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1Ix\n" - "RDBCBgNVBAoTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1\n" - "dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1p\n" - "YyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIFJvb3RDQSAyMDExMB4XDTExMTIw\n" - "NjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYTAkdSMUQwQgYDVQQK\n" - "EztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIENl\n" - "cnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl\n" - "c2VhcmNoIEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEB\n" - "BQADggEPADCCAQoCggEBAKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPz\n" - "dYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJ\n" - "fel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa71HFK9+WXesyHgLacEns\n" - "bgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u8yBRQlqD\n" - "75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSP\n" - "FEDH3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNV\n" - "HRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp\n" - "5dgTBCPuQSUwRwYDVR0eBEAwPqA8MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQu\n" - "b3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQub3JnMA0GCSqGSIb3DQEBBQUA\n" - "A4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVtXdMiKahsog2p\n" - "6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8\n" - "TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7\n" - "dIsXRSZMFpGD/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8Acys\n" - "Nnq/onN694/BtZqhFLKPM58N7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXI\n" - "l7WdmplNsDz4SgCbZN2fOUvRJ9e4\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1Ix\n" + "RDBCBgNVBAoTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1\n" + "dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1p\n" + "YyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIFJvb3RDQSAyMDExMB4XDTExMTIw\n" + "NjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYTAkdSMUQwQgYDVQQK\n" + "EztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIENl\n" + "cnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl\n" + "c2VhcmNoIEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEB\n" + "BQADggEPADCCAQoCggEBAKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPz\n" + "dYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJ\n" + "fel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa71HFK9+WXesyHgLacEns\n" + "bgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u8yBRQlqD\n" + "75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSP\n" + "FEDH3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNV\n" + "HRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp\n" + "5dgTBCPuQSUwRwYDVR0eBEAwPqA8MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQu\n" + "b3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQub3JnMA0GCSqGSIb3DQEBBQUA\n" + "A4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVtXdMiKahsog2p\n" + "6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8\n" + "TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7\n" + "dIsXRSZMFpGD/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8Acys\n" + "Nnq/onN694/BtZqhFLKPM58N7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXI\n" + "l7WdmplNsDz4SgCbZN2fOUvRJ9e4\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t cert = { cert_pem, sizeof(cert_pem) }; @@ -125,8 +125,8 @@ const gnutls_datum_t cert = { cert_pem, sizeof(cert_pem) }; static void check_generation_reading_basic_checking(void **glob_state) { int ret; - gnutls_x509_name_constraints_t nc = ((test_vars_t *) * glob_state)->nc; - gnutls_datum_t *ip = &(((test_vars_t *) * glob_state)->ip); + gnutls_x509_name_constraints_t nc = ((test_vars_t *)*glob_state)->nc; + gnutls_datum_t *ip = &(((test_vars_t *)*glob_state)->ip); unsigned int i, num_permitted, num_excluded, type; gnutls_x509_crt_t crt; @@ -146,30 +146,26 @@ static void check_generation_reading_basic_checking(void **glob_state) num_permitted = num_excluded = 0; parse_cidr("203.0.113.0/24", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc, GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc, GNUTLS_SAN_IPADDRESS, ip); num_permitted++; check_for_error(ret); parse_cidr("2001:DB8::/32", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc, GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc, GNUTLS_SAN_IPADDRESS, ip); num_permitted++; check_for_error(ret); parse_cidr("203.0.113.0/26", ip); - ret = - gnutls_x509_name_constraints_add_excluded(nc, GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_excluded( + nc, GNUTLS_SAN_IPADDRESS, ip); num_excluded++; check_for_error(ret); parse_cidr("2001:DB8::/34", ip); - ret = - gnutls_x509_name_constraints_add_excluded(nc, GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_excluded( + nc, GNUTLS_SAN_IPADDRESS, ip); num_excluded++; check_for_error(ret); @@ -177,17 +173,15 @@ static void check_generation_reading_basic_checking(void **glob_state) parse_cidr("2001:DB8::/34", ip); ip->data[30] = 2; - ret = - gnutls_x509_name_constraints_add_excluded(nc, GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_excluded( + nc, GNUTLS_SAN_IPADDRESS, ip); if (ret == 0) fail_msg("Checking invalid network mask should have failed."); parse_cidr("2001:DB8::/34", ip); ip->size = 31; - ret = - gnutls_x509_name_constraints_add_permitted(nc, GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc, GNUTLS_SAN_IPADDRESS, ip); if (ret == 0) fail_msg("Checking invalid IP size should have failed."); @@ -198,9 +192,8 @@ static void check_generation_reading_basic_checking(void **glob_state) i = 0; do { - ret = - gnutls_x509_name_constraints_get_permitted(nc, i++, &type, - &name); + ret = gnutls_x509_name_constraints_get_permitted(nc, i++, &type, + &name); #ifdef DEBUG _gnutls_cidr_to_string(name.data, name.size, ip_out, sizeof(ip_out)); @@ -209,16 +202,15 @@ static void check_generation_reading_basic_checking(void **glob_state) } while (ret == 0); if (i - 1 != num_permitted) { - fail_msg - ("Could not read all constraints; read %d, expected %d\n", - i - 1, num_permitted); + fail_msg( + "Could not read all constraints; read %d, expected %d\n", + i - 1, num_permitted); } i = 0; do { - ret = - gnutls_x509_name_constraints_get_excluded(nc, i++, &type, - &name); + ret = gnutls_x509_name_constraints_get_excluded(nc, i++, &type, + &name); #ifdef DEBUG _gnutls_cidr_to_string(name.data, name.size, ip_out, sizeof(ip_out)); @@ -227,40 +219,40 @@ static void check_generation_reading_basic_checking(void **glob_state) } while (ret == 0); if (i - 1 != num_excluded) { - fail_msg - ("Could not read all excluded constraints; read %d, expected %d\n", - i - 1, num_excluded); + fail_msg( + "Could not read all excluded constraints; read %d, expected %d\n", + i - 1, num_excluded); } /* 3: test the name constraints check function */ parse_cidr("203.0.113.250/32", ip); - ip->size = 4; // strip network mask + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_ACCEPTED, ip); parse_cidr("203.0.114.0/32", ip); - ip->size = 4; // strip network mask + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); parse_cidr("203.0.113.10/32", ip); - ip->size = 4; // strip network mask + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); parse_cidr("2001:DB8:4000::/128", ip); - ip->size = 16; // strip network mask + ip->size = 16; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_ACCEPTED, ip); parse_cidr("2001:DB9::/128", ip); - ip->size = 16; // strip network mask + ip->size = 16; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); parse_cidr("2001:DB8:10::/128", ip); - ip->size = 16; // strip network mask + ip->size = 16; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); @@ -271,22 +263,21 @@ static void check_universal_constraint_checking(void **glob_state) { /* 3b setting universal constraint */ int ret; - gnutls_x509_name_constraints_t nc = ((test_vars_t *) * glob_state)->nc; - gnutls_datum_t *ip = &(((test_vars_t *) * glob_state)->ip); + gnutls_x509_name_constraints_t nc = ((test_vars_t *)*glob_state)->nc; + gnutls_datum_t *ip = &(((test_vars_t *)*glob_state)->ip); parse_cidr("2001:DB8::/0", ip); - ret = - gnutls_x509_name_constraints_add_excluded(nc, GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_excluded( + nc, GNUTLS_SAN_IPADDRESS, ip); check_for_error(ret); parse_cidr("2001:DB8:10::/128", ip); - ip->size = 16; // strip network mask + ip->size = 16; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); parse_cidr("::/128", ip); - ip->size = 16; // strip network mask + ip->size = 16; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); } @@ -299,37 +290,33 @@ static void check_simple_intersection(void **glob_state) * A B C */ int ret; - gnutls_x509_name_constraints_t nc = ((test_vars_t *) * glob_state)->nc; - gnutls_x509_name_constraints_t nc2 = - ((test_vars_t *) * glob_state)->nc2; - gnutls_datum_t *ip = &(((test_vars_t *) * glob_state)->ip); + gnutls_x509_name_constraints_t nc = ((test_vars_t *)*glob_state)->nc; + gnutls_x509_name_constraints_t nc2 = ((test_vars_t *)*glob_state)->nc2; + gnutls_datum_t *ip = &(((test_vars_t *)*glob_state)->ip); parse_cidr("203.0.113.0/24", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc, GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc, GNUTLS_SAN_IPADDRESS, ip); check_for_error(ret); parse_cidr("203.0.113.0/26", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc2, - GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc2, GNUTLS_SAN_IPADDRESS, ip); check_for_error(ret); ret = _gnutls_x509_name_constraints_merge(nc, nc2); check_for_error(ret); - parse_cidr("203.0.113.2/32", ip); // A - ip->size = 4; // strip network mask + parse_cidr("203.0.113.2/32", ip); // A + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_ACCEPTED, ip); - parse_cidr("203.0.113.250/32", ip); // B - ip->size = 4; // strip network mask + parse_cidr("203.0.113.250/32", ip); // B + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("203.0.114.0/32", ip); // C - ip->size = 4; // strip network mask + parse_cidr("203.0.114.0/32", ip); // C + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); } @@ -342,37 +329,33 @@ static void check_empty_intersection(void **glob_state) * A B C */ int ret; - gnutls_x509_name_constraints_t nc = ((test_vars_t *) * glob_state)->nc; - gnutls_x509_name_constraints_t nc2 = - ((test_vars_t *) * glob_state)->nc2; - gnutls_datum_t *ip = &(((test_vars_t *) * glob_state)->ip); + gnutls_x509_name_constraints_t nc = ((test_vars_t *)*glob_state)->nc; + gnutls_x509_name_constraints_t nc2 = ((test_vars_t *)*glob_state)->nc2; + gnutls_datum_t *ip = &(((test_vars_t *)*glob_state)->ip); parse_cidr("127.0.113.0/24", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc, GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc, GNUTLS_SAN_IPADDRESS, ip); check_for_error(ret); parse_cidr("255.0.113.0/24", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc2, - GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc2, GNUTLS_SAN_IPADDRESS, ip); check_for_error(ret); ret = _gnutls_x509_name_constraints_merge(nc, nc2); check_for_error(ret); - parse_cidr("127.0.113.2/32", ip); // A - ip->size = 4; // strip network mask + parse_cidr("127.0.113.2/32", ip); // A + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("255.0.0.2/32", ip); // B - ip->size = 4; // strip network mask + parse_cidr("255.0.0.2/32", ip); // B + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("255.0.113.2/32", ip); // C - ip->size = 4; // strip network mask + parse_cidr("255.0.113.2/32", ip); // C + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); } @@ -385,48 +368,42 @@ static void check_mediocre_intersection(void **glob_state) * A B C D */ int ret; - gnutls_x509_name_constraints_t nc = ((test_vars_t *) * glob_state)->nc; - gnutls_x509_name_constraints_t nc2 = - ((test_vars_t *) * glob_state)->nc2; - gnutls_datum_t *ip = &(((test_vars_t *) * glob_state)->ip); + gnutls_x509_name_constraints_t nc = ((test_vars_t *)*glob_state)->nc; + gnutls_x509_name_constraints_t nc2 = ((test_vars_t *)*glob_state)->nc2; + gnutls_datum_t *ip = &(((test_vars_t *)*glob_state)->ip); parse_cidr("127.0.113.0/24", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc, GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc, GNUTLS_SAN_IPADDRESS, ip); check_for_error(ret); parse_cidr("127.0.113.0/26", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc2, - GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc2, GNUTLS_SAN_IPADDRESS, ip); check_for_error(ret); parse_cidr("255.0.113.0/24", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc2, - GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc2, GNUTLS_SAN_IPADDRESS, ip); check_for_error(ret); ret = _gnutls_x509_name_constraints_merge(nc, nc2); check_for_error(ret); - parse_cidr("127.0.113.2/32", ip); // A - ip->size = 4; // strip network mask + parse_cidr("127.0.113.2/32", ip); // A + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_ACCEPTED, ip); - parse_cidr("127.0.113.250/32", ip); // B - ip->size = 4; // strip network mask + parse_cidr("127.0.113.250/32", ip); // B + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("255.0.0.2/32", ip); // C - ip->size = 4; // strip network mask + parse_cidr("255.0.0.2/32", ip); // C + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("255.0.113.2/32", ip); // D - ip->size = 4; // strip network mask + parse_cidr("255.0.113.2/32", ip); // D + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); } @@ -439,79 +416,70 @@ static void check_difficult_intersection(void **glob_state) * A B C D E F G H */ int ret; - gnutls_x509_name_constraints_t nc = ((test_vars_t *) * glob_state)->nc; - gnutls_x509_name_constraints_t nc2 = - ((test_vars_t *) * glob_state)->nc2; - gnutls_datum_t *ip = &(((test_vars_t *) * glob_state)->ip); + gnutls_x509_name_constraints_t nc = ((test_vars_t *)*glob_state)->nc; + gnutls_x509_name_constraints_t nc2 = ((test_vars_t *)*glob_state)->nc2; + gnutls_datum_t *ip = &(((test_vars_t *)*glob_state)->ip); parse_cidr("0.0.0.0/3", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc, GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc, GNUTLS_SAN_IPADDRESS, ip); check_for_error(ret); parse_cidr("88.0.0.0/5", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc, GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc, GNUTLS_SAN_IPADDRESS, ip); check_for_error(ret); parse_cidr("0.0.0.0/5", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc2, - GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc2, GNUTLS_SAN_IPADDRESS, ip); check_for_error(ret); parse_cidr("16.0.0.0/5", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc2, - GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc2, GNUTLS_SAN_IPADDRESS, ip); check_for_error(ret); parse_cidr("64.0.0.0/3", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc2, - GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc2, GNUTLS_SAN_IPADDRESS, ip); check_for_error(ret); ret = _gnutls_x509_name_constraints_merge(nc, nc2); check_for_error(ret); - parse_cidr("0.0.113.2/32", ip); // A - ip->size = 4; // strip network mask + parse_cidr("0.0.113.2/32", ip); // A + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_ACCEPTED, ip); - parse_cidr("15.255.255.255/32", ip); // B - ip->size = 4; // strip network mask + parse_cidr("15.255.255.255/32", ip); // B + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("16.0.0.0/32", ip); // C - ip->size = 4; // strip network mask + parse_cidr("16.0.0.0/32", ip); // C + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_ACCEPTED, ip); - parse_cidr("31.12.25.2/32", ip); // D - ip->size = 4; // strip network mask + parse_cidr("31.12.25.2/32", ip); // D + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("63.255.255.255/32", ip); // E - ip->size = 4; // strip network mask + parse_cidr("63.255.255.255/32", ip); // E + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("64.0.0.0/32", ip); // F - ip->size = 4; // strip network mask + parse_cidr("64.0.0.0/32", ip); // F + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("89.125.7.187/32", ip); // G - ip->size = 4; // strip network mask + parse_cidr("89.125.7.187/32", ip); // G + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_ACCEPTED, ip); - parse_cidr("96.0.0.0/32", ip); // H - ip->size = 4; // strip network mask + parse_cidr("96.0.0.0/32", ip); // H + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); } @@ -524,62 +492,57 @@ static void check_ipv6_intersection(void **glob_state) * A B C D E F G */ int ret; - gnutls_x509_name_constraints_t nc = ((test_vars_t *) * glob_state)->nc; - gnutls_x509_name_constraints_t nc2 = - ((test_vars_t *) * glob_state)->nc2; - gnutls_datum_t *ip = &(((test_vars_t *) * glob_state)->ip); + gnutls_x509_name_constraints_t nc = ((test_vars_t *)*glob_state)->nc; + gnutls_x509_name_constraints_t nc2 = ((test_vars_t *)*glob_state)->nc2; + gnutls_datum_t *ip = &(((test_vars_t *)*glob_state)->ip); parse_cidr("affb::/16", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc, GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc, GNUTLS_SAN_IPADDRESS, ip); check_for_error(ret); parse_cidr("affd:0000::/20", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc, GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc, GNUTLS_SAN_IPADDRESS, ip); check_for_error(ret); parse_cidr("affb:aa00::/24", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc2, - GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc2, GNUTLS_SAN_IPADDRESS, ip); check_for_error(ret); ret = _gnutls_x509_name_constraints_merge(nc, nc2); check_for_error(ret); - parse_cidr("affa:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128", ip); // A - ip->size = 16; // strip network mask + parse_cidr("affa:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128", ip); // A + ip->size = 16; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("affb:a500::/128", ip); // B - ip->size = 16; // strip network mask + parse_cidr("affb:a500::/128", ip); // B + ip->size = 16; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("affb:aa00::/128", ip); // C - ip->size = 16; // strip network mask + parse_cidr("affb:aa00::/128", ip); // C + ip->size = 16; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_ACCEPTED, ip); - parse_cidr("affb:ab01::/128", ip); // D - ip->size = 16; // strip network mask + parse_cidr("affb:ab01::/128", ip); // D + ip->size = 16; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("affc::/128", ip); // E - ip->size = 16; // strip network mask + parse_cidr("affc::/128", ip); // E + ip->size = 16; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("affd:0fff::/128", ip); // F - ip->size = 16; // strip network mask + parse_cidr("affd:0fff::/128", ip); // F + ip->size = 16; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("affd:1000::/128", ip); // G - ip->size = 16; // strip network mask + parse_cidr("affd:1000::/128", ip); // G + ip->size = 16; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); } @@ -596,52 +559,47 @@ static void check_empty_ipv4_intersection_ipv6_remains(void **glob_state) * D E */ int ret; - gnutls_x509_name_constraints_t nc = ((test_vars_t *) * glob_state)->nc; - gnutls_x509_name_constraints_t nc2 = - ((test_vars_t *) * glob_state)->nc2; - gnutls_datum_t *ip = &(((test_vars_t *) * glob_state)->ip); + gnutls_x509_name_constraints_t nc = ((test_vars_t *)*glob_state)->nc; + gnutls_x509_name_constraints_t nc2 = ((test_vars_t *)*glob_state)->nc2; + gnutls_datum_t *ip = &(((test_vars_t *)*glob_state)->ip); parse_cidr("127.0.113.0/24", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc, GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc, GNUTLS_SAN_IPADDRESS, ip); check_for_error(ret); parse_cidr("bfa6::/16", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc, GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc, GNUTLS_SAN_IPADDRESS, ip); check_for_error(ret); parse_cidr("255.0.113.0/24", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc2, - GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc2, GNUTLS_SAN_IPADDRESS, ip); check_for_error(ret); ret = _gnutls_x509_name_constraints_merge(nc, nc2); check_for_error(ret); - parse_cidr("127.0.113.2/32", ip); // A - ip->size = 4; // strip network mask + parse_cidr("127.0.113.2/32", ip); // A + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("255.0.0.2/32", ip); // B - ip->size = 4; // strip network mask + parse_cidr("255.0.0.2/32", ip); // B + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("255.0.113.2/32", ip); // C - ip->size = 4; // strip network mask + parse_cidr("255.0.113.2/32", ip); // C + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("bfa6:ab01::/128", ip); // D - ip->size = 16; // strip network mask + parse_cidr("bfa6:ab01::/128", ip); // D + ip->size = 16; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("bfa7::/128", ip); // E - ip->size = 16; // strip network mask + parse_cidr("bfa7::/128", ip); // E + ip->size = 16; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); } @@ -659,63 +617,56 @@ static void check_empty_ipv4v6_intersections(void **glob_state) * D E F */ int ret; - gnutls_x509_name_constraints_t nc = ((test_vars_t *) * glob_state)->nc; - gnutls_x509_name_constraints_t nc2 = - ((test_vars_t *) * glob_state)->nc2; - gnutls_datum_t *ip = &(((test_vars_t *) * glob_state)->ip); + gnutls_x509_name_constraints_t nc = ((test_vars_t *)*glob_state)->nc; + gnutls_x509_name_constraints_t nc2 = ((test_vars_t *)*glob_state)->nc2; + gnutls_datum_t *ip = &(((test_vars_t *)*glob_state)->ip); parse_cidr("127.0.113.0/24", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc, GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc, GNUTLS_SAN_IPADDRESS, ip); check_for_error(ret); parse_cidr("bfa6::/16", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc, GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc, GNUTLS_SAN_IPADDRESS, ip); check_for_error(ret); parse_cidr("255.0.113.0/24", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc2, - GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc2, GNUTLS_SAN_IPADDRESS, ip); check_for_error(ret); parse_cidr("cfa6::/16", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc2, - GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc2, GNUTLS_SAN_IPADDRESS, ip); check_for_error(ret); ret = _gnutls_x509_name_constraints_merge(nc, nc2); check_for_error(ret); - parse_cidr("127.0.113.2/32", ip); // A - ip->size = 4; // strip network mask + parse_cidr("127.0.113.2/32", ip); // A + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("255.0.0.2/32", ip); // B - ip->size = 4; // strip network mask + parse_cidr("255.0.0.2/32", ip); // B + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("255.0.113.2/32", ip); // C - ip->size = 4; // strip network mask + parse_cidr("255.0.113.2/32", ip); // C + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("bfa6:ab01::/128", ip); // D - ip->size = 16; // strip network mask + parse_cidr("bfa6:ab01::/128", ip); // D + ip->size = 16; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("bfa7::/128", ip); // E - ip->size = 16; // strip network mask + parse_cidr("bfa7::/128", ip); // E + ip->size = 16; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("cfa7:00cc::/128", ip); // F - ip->size = 16; // strip network mask + parse_cidr("cfa7:00cc::/128", ip); // F + ip->size = 16; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); } @@ -731,42 +682,38 @@ static void check_ipv4v6_single_constraint_each(void **glob_state) * C D */ int ret; - gnutls_x509_name_constraints_t nc = ((test_vars_t *) * glob_state)->nc; - gnutls_x509_name_constraints_t nc2 = - ((test_vars_t *) * glob_state)->nc2; - gnutls_datum_t *ip = &(((test_vars_t *) * glob_state)->ip); + gnutls_x509_name_constraints_t nc = ((test_vars_t *)*glob_state)->nc; + gnutls_x509_name_constraints_t nc2 = ((test_vars_t *)*glob_state)->nc2; + gnutls_datum_t *ip = &(((test_vars_t *)*glob_state)->ip); parse_cidr("127.0.113.0/24", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc, GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc, GNUTLS_SAN_IPADDRESS, ip); check_for_error(ret); parse_cidr("bfa6::/16", ip); - ret = - gnutls_x509_name_constraints_add_permitted(nc2, - GNUTLS_SAN_IPADDRESS, - ip); + ret = gnutls_x509_name_constraints_add_permitted( + nc2, GNUTLS_SAN_IPADDRESS, ip); check_for_error(ret); ret = _gnutls_x509_name_constraints_merge(nc, nc2); check_for_error(ret); - parse_cidr("127.0.113.2/32", ip); // A - ip->size = 4; // strip network mask + parse_cidr("127.0.113.2/32", ip); // A + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("255.0.0.2/32", ip); // B - ip->size = 4; // strip network mask + parse_cidr("255.0.0.2/32", ip); // B + ip->size = 4; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("bfa6:ab01::/128", ip); // C - ip->size = 16; // strip network mask + parse_cidr("bfa6:ab01::/128", ip); // C + ip->size = 16; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); - parse_cidr("bfa7::/128", ip); // D - ip->size = 16; // strip network mask + parse_cidr("bfa7::/128", ip); // D + ip->size = 16; // strip network mask ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_IPADDRESS, ip); check_test_result(ret, IP_REJECTED, ip); } @@ -802,10 +749,11 @@ static int teardown(void **state) int main(int argc, char **argv) { const struct CMUnitTest tests[] = { - cmocka_unit_test_setup_teardown - (check_generation_reading_basic_checking, setup, teardown), - cmocka_unit_test_setup_teardown - (check_universal_constraint_checking, setup, teardown), + cmocka_unit_test_setup_teardown( + check_generation_reading_basic_checking, setup, + teardown), + cmocka_unit_test_setup_teardown( + check_universal_constraint_checking, setup, teardown), cmocka_unit_test_setup_teardown(check_simple_intersection, setup, teardown), cmocka_unit_test_setup_teardown(check_empty_intersection, setup, @@ -816,13 +764,13 @@ int main(int argc, char **argv) setup, teardown), cmocka_unit_test_setup_teardown(check_ipv6_intersection, setup, teardown), - cmocka_unit_test_setup_teardown - (check_empty_ipv4_intersection_ipv6_remains, setup, - teardown), - cmocka_unit_test_setup_teardown - (check_empty_ipv4v6_intersections, setup, teardown), - cmocka_unit_test_setup_teardown - (check_ipv4v6_single_constraint_each, setup, teardown) + cmocka_unit_test_setup_teardown( + check_empty_ipv4_intersection_ipv6_remains, setup, + teardown), + cmocka_unit_test_setup_teardown( + check_empty_ipv4v6_intersections, setup, teardown), + cmocka_unit_test_setup_teardown( + check_ipv4v6_single_constraint_each, setup, teardown) }; cmocka_run_group_tests(tests, NULL, NULL); } diff --git a/tests/name-constraints-merge.c b/tests/name-constraints-merge.c index 0321e166ec..d14019342e 100644 --- a/tests/name-constraints-merge.c +++ b/tests/name-constraints-merge.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -48,18 +48,20 @@ static void check_for_error(int ret) #define NAME_REJECTED 0 static void check_test_result(int suite, int ret, int expected_outcome, - gnutls_datum_t * tested_data) + gnutls_datum_t *tested_data) { if (expected_outcome == NAME_ACCEPTED ? ret == 0 : ret != 0) { if (expected_outcome == NAME_ACCEPTED) { - fail("Checking \"%.*s\" should have succeeded (suite %d).\n", tested_data->size, tested_data->data, suite); + fail("Checking \"%.*s\" should have succeeded (suite %d).\n", + tested_data->size, tested_data->data, suite); } else { - fail("Checking \"%.*s\" should have failed (suite %d).\n", tested_data->size, tested_data->data, suite); + fail("Checking \"%.*s\" should have failed (suite %d).\n", + tested_data->size, tested_data->data, suite); } } } -static void set_name(const char *name, gnutls_datum_t * datum) +static void set_name(const char *name, gnutls_datum_t *datum) { datum->data = (unsigned char *)name; datum->size = strlen((char *)name); @@ -96,34 +98,28 @@ void doit(void) check_for_error(ret); set_name("org", &name); - ret = - gnutls_x509_name_constraints_add_permitted(nc1, GNUTLS_SAN_DNSNAME, - &name); + ret = gnutls_x509_name_constraints_add_permitted( + nc1, GNUTLS_SAN_DNSNAME, &name); check_for_error(ret); set_name("ccc.com", &name); - ret = - gnutls_x509_name_constraints_add_permitted(nc1, GNUTLS_SAN_DNSNAME, - &name); + ret = gnutls_x509_name_constraints_add_permitted( + nc1, GNUTLS_SAN_DNSNAME, &name); check_for_error(ret); set_name("ccc.com", &name); - ret = - gnutls_x509_name_constraints_add_permitted(nc1, - GNUTLS_SAN_RFC822NAME, - &name); + ret = gnutls_x509_name_constraints_add_permitted( + nc1, GNUTLS_SAN_RFC822NAME, &name); check_for_error(ret); set_name("org", &name); - ret = - gnutls_x509_name_constraints_add_permitted(nc2, GNUTLS_SAN_DNSNAME, - &name); + ret = gnutls_x509_name_constraints_add_permitted( + nc2, GNUTLS_SAN_DNSNAME, &name); check_for_error(ret); set_name("aaa.bbb.ccc.com", &name); - ret = - gnutls_x509_name_constraints_add_permitted(nc2, GNUTLS_SAN_DNSNAME, - &name); + ret = gnutls_x509_name_constraints_add_permitted( + nc2, GNUTLS_SAN_DNSNAME, &name); check_for_error(ret); ret = _gnutls_x509_name_constraints_merge(nc1, nc2); @@ -131,66 +127,64 @@ void doit(void) /* unrelated */ set_name("xxx.example.com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); set_name("example.org", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_ACCEPTED, &name); set_name("com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); set_name("xxx.com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); set_name("ccc.com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); /* check intersection of permitted */ set_name("xxx.aaa.bbb.ccc.com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_ACCEPTED, &name); set_name("aaa.bbb.ccc.com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_ACCEPTED, &name); set_name("xxx.bbb.ccc.com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); set_name("xxx.ccc.com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); set_name("ccc.com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); set_name("ccc.com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_RFC822NAME, - &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_RFC822NAME, + &name); check_test_result(suite, ret, NAME_ACCEPTED, &name); set_name("xxx.ccc.com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_RFC822NAME, - &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_RFC822NAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); gnutls_x509_name_constraints_deinit(nc1); @@ -209,43 +203,41 @@ void doit(void) check_for_error(ret); set_name("example.com", &name); - ret = - gnutls_x509_name_constraints_add_excluded(nc1, GNUTLS_SAN_DNSNAME, - &name); + ret = gnutls_x509_name_constraints_add_excluded(nc1, GNUTLS_SAN_DNSNAME, + &name); check_for_error(ret); set_name("example.net", &name); - ret = - gnutls_x509_name_constraints_add_excluded(nc2, GNUTLS_SAN_DNSNAME, - &name); + ret = gnutls_x509_name_constraints_add_excluded(nc2, GNUTLS_SAN_DNSNAME, + &name); check_for_error(ret); ret = _gnutls_x509_name_constraints_merge(nc1, nc2); check_for_error(ret); set_name("xxx.example.com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); set_name("xxx.example.net", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); set_name("example.com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); set_name("example.net", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); set_name("example.org", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_ACCEPTED, &name); gnutls_x509_name_constraints_deinit(nc1); @@ -265,43 +257,41 @@ void doit(void) check_for_error(ret); set_name("one.example.com", &name); - ret = - gnutls_x509_name_constraints_add_permitted(nc1, GNUTLS_SAN_DNSNAME, - &name); + ret = gnutls_x509_name_constraints_add_permitted( + nc1, GNUTLS_SAN_DNSNAME, &name); check_for_error(ret); set_name("two.example.com", &name); - ret = - gnutls_x509_name_constraints_add_permitted(nc2, GNUTLS_SAN_DNSNAME, - &name); + ret = gnutls_x509_name_constraints_add_permitted( + nc2, GNUTLS_SAN_DNSNAME, &name); check_for_error(ret); ret = _gnutls_x509_name_constraints_merge(nc1, nc2); check_for_error(ret); set_name("one.example.com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); set_name("two.example.com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); set_name("three.example.com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); set_name("example.com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); set_name("org", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); gnutls_x509_name_constraints_deinit(nc1); @@ -322,49 +312,46 @@ void doit(void) check_for_error(ret); set_name("foo.com", &name); - ret = - gnutls_x509_name_constraints_add_permitted(nc1, GNUTLS_SAN_DNSNAME, - &name); + ret = gnutls_x509_name_constraints_add_permitted( + nc1, GNUTLS_SAN_DNSNAME, &name); check_for_error(ret); set_name("bar.com", &name); - ret = - gnutls_x509_name_constraints_add_permitted(nc1, GNUTLS_SAN_DNSNAME, - &name); + ret = gnutls_x509_name_constraints_add_permitted( + nc1, GNUTLS_SAN_DNSNAME, &name); check_for_error(ret); set_name("sub.foo.com", &name); - ret = - gnutls_x509_name_constraints_add_permitted(nc2, GNUTLS_SAN_DNSNAME, - &name); + ret = gnutls_x509_name_constraints_add_permitted( + nc2, GNUTLS_SAN_DNSNAME, &name); check_for_error(ret); ret = _gnutls_x509_name_constraints_merge(nc1, nc2); check_for_error(ret); set_name("foo.com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); set_name("bar.com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); set_name("sub.foo.com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_ACCEPTED, &name); set_name("anothersub.foo.com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); set_name("com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); gnutls_x509_name_constraints_deinit(nc1); @@ -386,50 +373,46 @@ void doit(void) check_for_error(ret); set_name("three.example.com", &name); - ret = - gnutls_x509_name_constraints_add_permitted(nc1, GNUTLS_SAN_DNSNAME, - &name); + ret = gnutls_x509_name_constraints_add_permitted( + nc1, GNUTLS_SAN_DNSNAME, &name); check_for_error(ret); set_name("redhat.com", &name); - ret = - gnutls_x509_name_constraints_add_permitted(nc1, - GNUTLS_SAN_RFC822NAME, - &name); + ret = gnutls_x509_name_constraints_add_permitted( + nc1, GNUTLS_SAN_RFC822NAME, &name); check_for_error(ret); set_name("four.example.com", &name); - ret = - gnutls_x509_name_constraints_add_permitted(nc2, GNUTLS_SAN_DNSNAME, - &name); + ret = gnutls_x509_name_constraints_add_permitted( + nc2, GNUTLS_SAN_DNSNAME, &name); check_for_error(ret); ret = _gnutls_x509_name_constraints_merge(nc1, nc2); check_for_error(ret); set_name("three.example.com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); set_name("four.example.com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); set_name("five.example.com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); set_name("example.com", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); set_name("org", &name); - ret = - gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, &name); + ret = gnutls_x509_name_constraints_check(nc1, GNUTLS_SAN_DNSNAME, + &name); check_test_result(suite, ret, NAME_REJECTED, &name); gnutls_x509_name_constraints_deinit(nc1); diff --git a/tests/name-constraints.c b/tests/name-constraints.c index c1c0706da8..3488105ad1 100644 --- a/tests/name-constraints.c +++ b/tests/name-constraints.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -48,7 +48,7 @@ static void check_for_error(int ret) #define NAME_REJECTED 0 static void check_test_result(int ret, int expected_outcome, - gnutls_datum_t * tested_data) + gnutls_datum_t *tested_data) { if (expected_outcome == NAME_ACCEPTED ? ret == 0 : ret != 0) { if (expected_outcome == NAME_ACCEPTED) { @@ -61,7 +61,7 @@ static void check_test_result(int ret, int expected_outcome, } } -static void set_name(const char *name, gnutls_datum_t * datum) +static void set_name(const char *name, gnutls_datum_t *datum) { datum->data = (unsigned char *)name; datum->size = strlen((char *)name); @@ -73,48 +73,49 @@ static void tls_log_func(int level, const char *str) } static unsigned char cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1Ix\n" - "RDBCBgNVBAoTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1\n" - "dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1p\n" - "YyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIFJvb3RDQSAyMDExMB4XDTExMTIw\n" - "NjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYTAkdSMUQwQgYDVQQK\n" - "EztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIENl\n" - "cnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl\n" - "c2VhcmNoIEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEB\n" - "BQADggEPADCCAQoCggEBAKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPz\n" - "dYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJ\n" - "fel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa71HFK9+WXesyHgLacEns\n" - "bgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u8yBRQlqD\n" - "75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSP\n" - "FEDH3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNV\n" - "HRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp\n" - "5dgTBCPuQSUwRwYDVR0eBEAwPqA8MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQu\n" - "b3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQub3JnMA0GCSqGSIb3DQEBBQUA\n" - "A4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVtXdMiKahsog2p\n" - "6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8\n" - "TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7\n" - "dIsXRSZMFpGD/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8Acys\n" - "Nnq/onN694/BtZqhFLKPM58N7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXI\n" - "l7WdmplNsDz4SgCbZN2fOUvRJ9e4\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1Ix\n" + "RDBCBgNVBAoTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1\n" + "dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1p\n" + "YyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIFJvb3RDQSAyMDExMB4XDTExMTIw\n" + "NjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYTAkdSMUQwQgYDVQQK\n" + "EztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIENl\n" + "cnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl\n" + "c2VhcmNoIEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEB\n" + "BQADggEPADCCAQoCggEBAKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPz\n" + "dYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJ\n" + "fel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa71HFK9+WXesyHgLacEns\n" + "bgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u8yBRQlqD\n" + "75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSP\n" + "FEDH3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNV\n" + "HRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp\n" + "5dgTBCPuQSUwRwYDVR0eBEAwPqA8MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQu\n" + "b3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQub3JnMA0GCSqGSIb3DQEBBQUA\n" + "A4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVtXdMiKahsog2p\n" + "6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8\n" + "TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7\n" + "dIsXRSZMFpGD/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8Acys\n" + "Nnq/onN694/BtZqhFLKPM58N7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXI\n" + "l7WdmplNsDz4SgCbZN2fOUvRJ9e4\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t cert = { cert_pem, sizeof(cert_pem) }; const gnutls_datum_t name1 = { (void *)"com", 3 }; -const gnutls_datum_t name2 = - { (void *)"example.com", sizeof("example.com") - 1 }; -const gnutls_datum_t name3 = - { (void *)"another.example.com", sizeof("another.example.com") - 1 }; +const gnutls_datum_t name2 = { (void *)"example.com", + sizeof("example.com") - 1 }; +const gnutls_datum_t name3 = { (void *)"another.example.com", + sizeof("another.example.com") - 1 }; const gnutls_datum_t name4 = { (void *)".gr", 3 }; -const gnutls_datum_t mail1 = - { (void *)"example.com", sizeof("example.com") - 1 }; -const gnutls_datum_t mail2 = - { (void *)".example.net", sizeof(".example.net") - 1 }; -const gnutls_datum_t mail3 = - { (void *)"nmav@redhat.com", sizeof("nmav@redhat.com") - 1 }; -const gnutls_datum_t mail4 = - { (void *)"koko.example.net", sizeof("koko.example.net") - 1 }; +const gnutls_datum_t mail1 = { (void *)"example.com", + sizeof("example.com") - 1 }; +const gnutls_datum_t mail2 = { (void *)".example.net", + sizeof(".example.net") - 1 }; +const gnutls_datum_t mail3 = { (void *)"nmav@redhat.com", + sizeof("nmav@redhat.com") - 1 }; +const gnutls_datum_t mail4 = { (void *)"koko.example.net", + sizeof("koko.example.net") - 1 }; void doit(void) { @@ -149,12 +150,12 @@ void doit(void) i = 0; do { - ret = - gnutls_x509_name_constraints_get_permitted(nc, i++, &type, - &name); + ret = gnutls_x509_name_constraints_get_permitted(nc, i++, &type, + &name); if (ret >= 0 && i == 2) { - if (name.size != 3 || memcmp(name.data, ".eu", 3) != 0) { + if (name.size != 3 || + memcmp(name.data, ".eu", 3) != 0) { fail("error reading 2nd constraint\n"); } } @@ -183,60 +184,48 @@ void doit(void) check_for_error(ret); permitted++; - ret = - gnutls_x509_name_constraints_add_permitted(nc, GNUTLS_SAN_DNSNAME, - &name1); + ret = gnutls_x509_name_constraints_add_permitted(nc, GNUTLS_SAN_DNSNAME, + &name1); check_for_error(ret); excluded++; - ret = - gnutls_x509_name_constraints_add_excluded(nc, GNUTLS_SAN_DNSNAME, - &name2); + ret = gnutls_x509_name_constraints_add_excluded(nc, GNUTLS_SAN_DNSNAME, + &name2); check_for_error(ret); excluded++; - ret = - gnutls_x509_name_constraints_add_excluded(nc, GNUTLS_SAN_DNSNAME, - &name3); + ret = gnutls_x509_name_constraints_add_excluded(nc, GNUTLS_SAN_DNSNAME, + &name3); check_for_error(ret); permitted++; - ret = - gnutls_x509_name_constraints_add_permitted(nc, GNUTLS_SAN_DNSNAME, - &name4); + ret = gnutls_x509_name_constraints_add_permitted(nc, GNUTLS_SAN_DNSNAME, + &name4); check_for_error(ret); excluded++; - ret = - gnutls_x509_name_constraints_add_excluded(nc, GNUTLS_SAN_URI, - &name3); + ret = gnutls_x509_name_constraints_add_excluded(nc, GNUTLS_SAN_URI, + &name3); check_for_error(ret); permitted++; - ret = - gnutls_x509_name_constraints_add_permitted(nc, - GNUTLS_SAN_RFC822NAME, - &mail1); + ret = gnutls_x509_name_constraints_add_permitted( + nc, GNUTLS_SAN_RFC822NAME, &mail1); check_for_error(ret); permitted++; - ret = - gnutls_x509_name_constraints_add_permitted(nc, - GNUTLS_SAN_RFC822NAME, - &mail2); + ret = gnutls_x509_name_constraints_add_permitted( + nc, GNUTLS_SAN_RFC822NAME, &mail2); check_for_error(ret); permitted++; - ret = - gnutls_x509_name_constraints_add_permitted(nc, - GNUTLS_SAN_RFC822NAME, - &mail3); + ret = gnutls_x509_name_constraints_add_permitted( + nc, GNUTLS_SAN_RFC822NAME, &mail3); check_for_error(ret); excluded++; - ret = - gnutls_x509_name_constraints_add_excluded(nc, GNUTLS_SAN_RFC822NAME, - &mail4); + ret = gnutls_x509_name_constraints_add_excluded( + nc, GNUTLS_SAN_RFC822NAME, &mail4); check_for_error(ret); ret = gnutls_x509_crt_set_name_constraints(crt, nc, 1); @@ -246,13 +235,12 @@ void doit(void) i = 0; do { - ret = - gnutls_x509_name_constraints_get_permitted(nc, i++, &type, - &name); + ret = gnutls_x509_name_constraints_get_permitted(nc, i++, &type, + &name); if (ret >= 0 && i == 1) { - if (name.size != name1.size - || memcmp(name.data, name1.data, name1.size) != 0) { + if (name.size != name1.size || + memcmp(name.data, name1.data, name1.size) != 0) { fail("%d: error reading 1st constraint\n", __LINE__); } @@ -266,26 +254,28 @@ void doit(void) i = 0; do { - ret = - gnutls_x509_name_constraints_get_excluded(nc, i++, &type, - &name); + ret = gnutls_x509_name_constraints_get_excluded(nc, i++, &type, + &name); if (ret >= 0 && i == 1) { - if (name.size != name2.size - || memcmp(name.data, name2.data, name2.size) != 0) { - fail("%d: error reading 1st excluded constraint\n", __LINE__); + if (name.size != name2.size || + memcmp(name.data, name2.data, name2.size) != 0) { + fail("%d: error reading 1st excluded constraint\n", + __LINE__); } } if (ret >= 0 && i == 2) { - if (name.size != name3.size - || memcmp(name.data, name3.data, name3.size) != 0) { - fail("%d: error reading 1st excluded constraint\n", __LINE__); + if (name.size != name3.size || + memcmp(name.data, name3.data, name3.size) != 0) { + fail("%d: error reading 1st excluded constraint\n", + __LINE__); } } } while (ret == 0); if (i - 1 != excluded) { - fail("Could not read all excluded constraints; read %d, expected %d\n", i - 1, excluded); + fail("Could not read all excluded constraints; read %d, expected %d\n", + i - 1, excluded); } /* 3: test the name constraints check function */ @@ -298,39 +288,33 @@ void doit(void) /* Test e-mails */ set_name("nmav@redhat.com", &name); - ret = - gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_RFC822NAME, - &name); + ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_RFC822NAME, + &name); check_test_result(ret, NAME_ACCEPTED, &name); set_name("nmav@radhat.com", &name); - ret = - gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_RFC822NAME, - &name); + ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_RFC822NAME, + &name); check_test_result(ret, NAME_REJECTED, &name); set_name("nmav@example.com", &name); - ret = - gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_RFC822NAME, - &name); + ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_RFC822NAME, + &name); check_test_result(ret, NAME_ACCEPTED, &name); set_name("nmav@test.example.net", &name); - ret = - gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_RFC822NAME, - &name); + ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_RFC822NAME, + &name); check_test_result(ret, NAME_ACCEPTED, &name); set_name("nmav@example.net", &name); - ret = - gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_RFC822NAME, - &name); + ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_RFC822NAME, + &name); check_test_result(ret, NAME_REJECTED, &name); set_name("nmav@koko.example.net", &name); - ret = - gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_RFC822NAME, - &name); + ret = gnutls_x509_name_constraints_check(nc, GNUTLS_SAN_RFC822NAME, + &name); check_test_result(ret, NAME_REJECTED, &name); /* This name constraints structure does have an excluded URI so @@ -370,9 +354,8 @@ void doit(void) check_for_error(ret); set_name("", &name); - ret = - gnutls_x509_name_constraints_add_excluded(nc, GNUTLS_SAN_DNSNAME, - &name); + ret = gnutls_x509_name_constraints_add_excluded(nc, GNUTLS_SAN_DNSNAME, + &name); check_for_error(ret); set_name("example.net", &name); diff --git a/tests/no-extensions.c b/tests/no-extensions.c index bb543b59bb..2aa99bd64b 100644 --- a/tests/no-extensions.c +++ b/tests/no-extensions.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -46,7 +46,7 @@ static void tls_log_func(int level, const char *str) static int server_handshake_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { unsigned pos; gnutls_datum_t mmsg; @@ -58,7 +58,7 @@ static int server_handshake_callback(gnutls_session_t session, assert(msg->size >= HANDSHAKE_SESSION_ID_POS); pos = HANDSHAKE_SESSION_ID_POS; SKIP8(pos, msg->size); - pos += 3; /* ciphersuite + compression */ + pos += 3; /* ciphersuite + compression */ mmsg.data = &msg->data[pos]; mmsg.size = msg->size - pos; @@ -77,7 +77,7 @@ static int server_handshake_callback(gnutls_session_t session, static int client_handshake_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { unsigned pos; gnutls_datum_t mmsg; @@ -107,8 +107,7 @@ static int client_handshake_callback(gnutls_session_t session, return 0; } -static -void start(const char *prio, gnutls_protocol_t exp_version) +static void start(const char *prio, gnutls_protocol_t exp_version) { int ret; /* Server stuff. */ @@ -130,9 +129,8 @@ void start(const char *prio, gnutls_protocol_t exp_version) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); @@ -151,9 +149,8 @@ void start(const char *prio, gnutls_protocol_t exp_version) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); diff --git a/tests/no-signal.c b/tests/no-signal.c index c1ea0e18dc..61a2b259a6 100644 --- a/tests/no-signal.c +++ b/tests/no-signal.c @@ -18,7 +18,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -34,34 +34,33 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# ifndef MSG_NOSIGNAL +#ifndef MSG_NOSIGNAL int main(void) { exit(77); } -# else +#else -# include "utils.h" +#include "utils.h" -static -void sigpipe(int sig) +static void sigpipe(int sig) { _exit(2); } -# define BUF_SIZE 64 +#define BUF_SIZE 64 static void client(int fd) { @@ -86,9 +85,10 @@ static void client(int fd) gnutls_handshake_set_timeout(session, get_timeout()); /* Use default priorities */ - gnutls_priority_set_direct(session, - "NONE:+VERS-TLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-TLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", + NULL); /* put the anonymous credentials to the current session */ @@ -100,9 +100,8 @@ static void client(int fd) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 - && (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED)); + } while (ret < 0 && + (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED)); ret = gnutls_record_recv(session, buf, sizeof(buf)); if (ret < 0 || ret != sizeof(buf)) { @@ -157,9 +156,10 @@ static void server(int fd) /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NONE:+VERS-TLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-TLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL", + NULL); gnutls_credentials_set(session, GNUTLS_CRD_ANON, anoncred); @@ -167,9 +167,8 @@ static void server(int fd) do { ret = gnutls_handshake(session); - } - while (ret < 0 - && (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED)); + } while (ret < 0 && + (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED)); if (ret < 0) { fail("error in handshake: %s\n", gnutls_strerror(ret)); @@ -189,7 +188,6 @@ static void server(int fd) gnutls_deinit(session); gnutls_anon_free_server_credentials(anoncred); gnutls_global_deinit(); - } static void start(void) @@ -241,5 +239,5 @@ void doit(void) start(); } -# endif /* MSG_NOSIGNAL */ -#endif /* _WIN32 */ +#endif /* MSG_NOSIGNAL */ +#endif /* _WIN32 */ diff --git a/tests/no-status-request.c b/tests/no-status-request.c index 8f1933cc60..953ea68239 100644 --- a/tests/no-status-request.c +++ b/tests/no-status-request.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,28 +35,29 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "cert-common.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cert-common.h" +#include "utils.h" /* This program tests that the client does not send the * status request extension if GNUTLS_NO_STATUS_REQUEST is set */ -# define RESP "\x30\x82\x06\x8C\x0A\x01\x00\xA0\x82\x06\x85\x30\x82\x06\x81\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x06\x72\x30\x82\x06\x6E\x30\x82\x01\x07\xA1\x69\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\x30\x64\x30\x62\x30\x3A\x30\x09\x06\x05\x2B\x0E\x03\x02\x1A\x05\x00\x04\x14\x13\x9D\xA0\x9E\xF4\x32\xAB\x8F\xE2\x89\x56\x67\xFA\xD0\xD4\xE3\x35\x86\x71\xB9\x04\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\x02\x01\x1D\x80\x00\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\xA0\x11\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x39\x32\x38\x5A\xA1\x23\x30\x21\x30\x1F\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x02\x04\x12\x04\x10\x16\x89\x7D\x91\x3A\xB5\x25\xA4\x45\xFE\xC9\xFD\xC2\xE5\x08\xA4\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x4E\xAD\x6B\x2B\xF7\xF2\xBF\xA9\x23\x1E\x3A\x0B\x06\xDB\x55\x53\x2B\x64\x54\x11\x32\xBF\x60\xF7\x4F\xE0\x8E\x9B\xA0\xA2\x4C\x79\xC3\x2A\xE0\x43\xF7\x40\x1A\xDC\xB9\xB4\x25\xEF\x48\x01\x97\x8C\xF5\x1E\xDB\xD1\x30\x37\x73\x69\xD6\xA7\x7A\x2D\x8E\xDE\x5C\xAA\xEA\x39\xB9\x52\xAA\x25\x1E\x74\x7D\xF9\x78\x95\x8A\x92\x1F\x98\x21\xF4\x60\x7F\xD3\x28\xEE\x47\x9C\xBF\xE2\x5D\xF6\x3F\x68\x0A\xD6\xFF\x08\xC1\xDC\x95\x1E\x29\xD7\x3E\x85\xD5\x65\xA4\x4B\xC0\xAF\xC3\x78\xAB\x06\x98\x88\x19\x8A\x64\xA6\x83\x91\x87\x13\xDB\x17\xCC\x46\xBD\xAB\x4E\xC7\x16\xD1\xF8\x35\xFD\x27\xC8\xF6\x6B\xEB\x37\xB8\x08\x6F\xE2\x6F\xB4\x7E\xD5\x68\xDB\x7F\x5D\x5E\x36\x38\xF2\x77\x59\x13\xE7\x3E\x4D\x67\x5F\xDB\xA2\xF5\x5D\x7C\xBF\xBD\xB5\x37\x33\x51\x36\x63\xF8\x21\x1E\xFC\x73\x8F\x32\x69\xBB\x97\xA7\xBD\xF1\xB6\xE0\x40\x09\x68\xEA\xD5\x93\xB8\xBB\x39\x8D\xA8\x16\x1B\xBF\x04\x7A\xBC\x18\x43\x01\xE9\x3C\x19\x5C\x4D\x4B\x98\xD8\x23\x37\x39\xA4\xC4\xDD\xED\x9C\xEC\x37\xAB\x66\x44\x9B\xE7\x5B\x5D\x32\xA2\xDB\xA6\x0B\x3B\x8C\xE1\xF5\xDB\xCB\x7D\x58\xA0\x82\x04\x4B\x30\x82\x04\x47\x30\x82\x04\x43\x30\x82\x03\x2B\xA0\x03\x02\x01\x02\x02\x01\x1E\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x30\x1E\x17\x0D\x30\x39\x31\x31\x32\x34\x31\x32\x35\x31\x35\x33\x5A\x17\x0D\x31\x34\x31\x31\x32\x33\x31\x32\x35\x31\x35\x33\x5A\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x82\x01\x22\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00\x03\x82\x01\x0F\x00\x30\x82\x01\x0A\x02\x82\x01\x01\x00\xBC\x05\x3E\x4B\xBE\xC6\xB1\x33\x48\x0E\xC3\xD4\x0C\xEF\x83\x0B\xBD\xBC\x57\x5F\x14\xEF\xF5\x6D\x0B\xFF\xFA\x01\x9C\xFA\x21\x6D\x5C\xAE\x79\x29\x74\xFE\xBD\xAB\x70\x87\x98\x6B\x48\x35\x79\xE3\xE0\xC1\x14\x41\x1F\x0A\xF7\xE7\xA3\xA6\xDA\x6B\xFF\xCD\x74\xE9\x95\x00\x38\xAA\xD6\x3A\x60\xC6\x64\xA1\xE6\x02\x39\x58\x4E\xFD\xF2\x78\x08\x63\xB6\xD7\x7A\x96\x79\x62\x18\x39\xEE\x27\x8D\x3B\xA2\x3D\x48\x88\xDB\x43\xD6\x6A\x77\x20\x6A\x27\x39\x50\xE0\x02\x50\x19\xF2\x7A\xCF\x78\x23\x99\x01\xD4\xE5\xB1\xD1\x31\xE6\x6B\x84\xAF\xD0\x77\x41\x46\x85\xB0\x3B\xE6\x6A\x00\x0F\x3B\x7E\x95\x7F\x59\xA8\x22\xE8\x49\x49\x05\xC8\xCB\x6C\xEE\x47\xA7\x2D\xC9\x74\x5B\xEB\x8C\xD5\x99\xC2\xE2\x70\xDB\xEA\x87\x43\x84\x0E\x4F\x83\x1C\xA6\xEB\x1F\x22\x38\x17\x69\x9B\x72\x12\x95\x48\x71\xB2\x7B\x92\x73\x52\xAB\xE3\x1A\xA5\xD3\xF4\x44\x14\xBA\xC3\x35\xDA\x91\x6C\x7D\xB4\xC2\x00\x07\xD8\x0A\x51\xF1\x0D\x4C\xD9\x7A\xD1\x99\xE6\xA8\x8D\x0A\x80\xA8\x91\xDD\x8A\xA2\x6B\xF6\xDB\xB0\x3E\xC9\x71\xA9\xE0\x39\xC3\xA3\x58\x0D\x87\xD0\xB2\xA7\x9C\xB7\x69\x02\x03\x01\x00\x01\xA3\x82\x01\x1A\x30\x82\x01\x16\x30\x09\x06\x03\x55\x1D\x13\x04\x02\x30\x00\x30\x0B\x06\x03\x55\x1D\x0F\x04\x04\x03\x02\x03\xA8\x30\x1D\x06\x03\x55\x1D\x0E\x04\x16\x04\x14\x34\x91\x6E\x91\x32\xBF\x35\x25\x43\xCC\x28\x74\xEF\x82\xC2\x57\x92\x79\x13\x73\x30\x6D\x06\x03\x55\x1D\x23\x04\x66\x30\x64\x80\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\xA1\x49\xA4\x47\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x82\x01\x00\x30\x1E\x06\x03\x55\x1D\x11\x04\x17\x30\x15\x82\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x13\x06\x03\x55\x1D\x25\x04\x0C\x30\x0A\x06\x08\x2B\x06\x01\x05\x05\x07\x03\x09\x30\x39\x06\x03\x55\x1D\x1F\x04\x32\x30\x30\x30\x2E\xA0\x2C\xA0\x2A\x86\x28\x68\x74\x74\x70\x3A\x2F\x2F\x63\x72\x6C\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x2F\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x63\x72\x6C\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x03\x82\x01\x01\x00\x6D\x78\xD7\x66\x90\xA6\xEB\xDD\xB5\x09\x48\xA4\xDA\x27\xFA\xAC\xB1\xBC\x8F\x8C\xBE\xCC\x8C\x09\xA2\x40\x0D\x6C\x4A\xAE\x72\x22\x1E\xC8\xAF\x6D\xF1\x12\xAF\xD7\x40\x51\x79\xD4\xDD\xB2\x0C\xDB\x97\x84\xB6\x24\xD5\xF5\xA8\xBB\xC0\x4B\xF9\x7F\x71\xF7\xB0\x65\x42\x4A\x7D\xFE\x76\x7E\x05\xD2\x46\xB8\x7D\xB3\x39\x4C\x5C\xB1\xFA\xB9\xEE\x3B\x70\x33\x39\x57\x1A\xB9\x95\x51\x33\x00\x25\x1B\x4C\xAA\xB4\xA7\x55\xAF\x63\x6D\x6F\x88\x17\x6A\x7F\xB0\x97\xDE\x49\x14\x6A\x27\x6A\xB0\x42\x80\xD6\xA6\x9B\xEF\x04\x5E\x11\x7D\xD5\x8E\x54\x20\xA2\x76\xD4\x66\x58\xAC\x9C\x12\xD3\xF5\xCA\x54\x98\xCA\x21\xEC\xC1\x55\xA1\x2F\x68\x0B\x5D\x04\x50\xD2\x5E\x70\x25\xD8\x13\xD9\x44\x51\x0E\x8A\x42\x08\x18\x84\xE6\x61\xCE\x5A\x7D\x7B\x81\x35\x90\xC3\xD4\x9D\x19\xB6\x37\xEE\x8F\x63\x5C\xDA\xD8\xF0\x64\x60\x39\xEB\x9B\x1C\x54\x66\x75\x76\xB5\x0A\x58\xB9\x3F\x91\xE1\x21\x9C\xA0\x50\x15\x97\xB6\x7E\x41\xBC\xD0\xC4\x21\x4C\xF5\xD7\xF0\x13\xF8\x77\xE9\x74\xC4\x8A\x0E\x20\x17\x32\xAE\x38\xC2\xA5\xA8\x62\x85\x17\xB1\xA2\xD3\x22\x9F\x95\xB7\xA3\x4C" -# define RESP_SIZE (sizeof(RESP) - 1) -# define MAX_BUF 1024 +#define RESP \ + "\x30\x82\x06\x8C\x0A\x01\x00\xA0\x82\x06\x85\x30\x82\x06\x81\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x06\x72\x30\x82\x06\x6E\x30\x82\x01\x07\xA1\x69\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\x30\x64\x30\x62\x30\x3A\x30\x09\x06\x05\x2B\x0E\x03\x02\x1A\x05\x00\x04\x14\x13\x9D\xA0\x9E\xF4\x32\xAB\x8F\xE2\x89\x56\x67\xFA\xD0\xD4\xE3\x35\x86\x71\xB9\x04\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\x02\x01\x1D\x80\x00\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\xA0\x11\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x39\x32\x38\x5A\xA1\x23\x30\x21\x30\x1F\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x02\x04\x12\x04\x10\x16\x89\x7D\x91\x3A\xB5\x25\xA4\x45\xFE\xC9\xFD\xC2\xE5\x08\xA4\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x4E\xAD\x6B\x2B\xF7\xF2\xBF\xA9\x23\x1E\x3A\x0B\x06\xDB\x55\x53\x2B\x64\x54\x11\x32\xBF\x60\xF7\x4F\xE0\x8E\x9B\xA0\xA2\x4C\x79\xC3\x2A\xE0\x43\xF7\x40\x1A\xDC\xB9\xB4\x25\xEF\x48\x01\x97\x8C\xF5\x1E\xDB\xD1\x30\x37\x73\x69\xD6\xA7\x7A\x2D\x8E\xDE\x5C\xAA\xEA\x39\xB9\x52\xAA\x25\x1E\x74\x7D\xF9\x78\x95\x8A\x92\x1F\x98\x21\xF4\x60\x7F\xD3\x28\xEE\x47\x9C\xBF\xE2\x5D\xF6\x3F\x68\x0A\xD6\xFF\x08\xC1\xDC\x95\x1E\x29\xD7\x3E\x85\xD5\x65\xA4\x4B\xC0\xAF\xC3\x78\xAB\x06\x98\x88\x19\x8A\x64\xA6\x83\x91\x87\x13\xDB\x17\xCC\x46\xBD\xAB\x4E\xC7\x16\xD1\xF8\x35\xFD\x27\xC8\xF6\x6B\xEB\x37\xB8\x08\x6F\xE2\x6F\xB4\x7E\xD5\x68\xDB\x7F\x5D\x5E\x36\x38\xF2\x77\x59\x13\xE7\x3E\x4D\x67\x5F\xDB\xA2\xF5\x5D\x7C\xBF\xBD\xB5\x37\x33\x51\x36\x63\xF8\x21\x1E\xFC\x73\x8F\x32\x69\xBB\x97\xA7\xBD\xF1\xB6\xE0\x40\x09\x68\xEA\xD5\x93\xB8\xBB\x39\x8D\xA8\x16\x1B\xBF\x04\x7A\xBC\x18\x43\x01\xE9\x3C\x19\x5C\x4D\x4B\x98\xD8\x23\x37\x39\xA4\xC4\xDD\xED\x9C\xEC\x37\xAB\x66\x44\x9B\xE7\x5B\x5D\x32\xA2\xDB\xA6\x0B\x3B\x8C\xE1\xF5\xDB\xCB\x7D\x58\xA0\x82\x04\x4B\x30\x82\x04\x47\x30\x82\x04\x43\x30\x82\x03\x2B\xA0\x03\x02\x01\x02\x02\x01\x1E\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x30\x1E\x17\x0D\x30\x39\x31\x31\x32\x34\x31\x32\x35\x31\x35\x33\x5A\x17\x0D\x31\x34\x31\x31\x32\x33\x31\x32\x35\x31\x35\x33\x5A\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x82\x01\x22\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00\x03\x82\x01\x0F\x00\x30\x82\x01\x0A\x02\x82\x01\x01\x00\xBC\x05\x3E\x4B\xBE\xC6\xB1\x33\x48\x0E\xC3\xD4\x0C\xEF\x83\x0B\xBD\xBC\x57\x5F\x14\xEF\xF5\x6D\x0B\xFF\xFA\x01\x9C\xFA\x21\x6D\x5C\xAE\x79\x29\x74\xFE\xBD\xAB\x70\x87\x98\x6B\x48\x35\x79\xE3\xE0\xC1\x14\x41\x1F\x0A\xF7\xE7\xA3\xA6\xDA\x6B\xFF\xCD\x74\xE9\x95\x00\x38\xAA\xD6\x3A\x60\xC6\x64\xA1\xE6\x02\x39\x58\x4E\xFD\xF2\x78\x08\x63\xB6\xD7\x7A\x96\x79\x62\x18\x39\xEE\x27\x8D\x3B\xA2\x3D\x48\x88\xDB\x43\xD6\x6A\x77\x20\x6A\x27\x39\x50\xE0\x02\x50\x19\xF2\x7A\xCF\x78\x23\x99\x01\xD4\xE5\xB1\xD1\x31\xE6\x6B\x84\xAF\xD0\x77\x41\x46\x85\xB0\x3B\xE6\x6A\x00\x0F\x3B\x7E\x95\x7F\x59\xA8\x22\xE8\x49\x49\x05\xC8\xCB\x6C\xEE\x47\xA7\x2D\xC9\x74\x5B\xEB\x8C\xD5\x99\xC2\xE2\x70\xDB\xEA\x87\x43\x84\x0E\x4F\x83\x1C\xA6\xEB\x1F\x22\x38\x17\x69\x9B\x72\x12\x95\x48\x71\xB2\x7B\x92\x73\x52\xAB\xE3\x1A\xA5\xD3\xF4\x44\x14\xBA\xC3\x35\xDA\x91\x6C\x7D\xB4\xC2\x00\x07\xD8\x0A\x51\xF1\x0D\x4C\xD9\x7A\xD1\x99\xE6\xA8\x8D\x0A\x80\xA8\x91\xDD\x8A\xA2\x6B\xF6\xDB\xB0\x3E\xC9\x71\xA9\xE0\x39\xC3\xA3\x58\x0D\x87\xD0\xB2\xA7\x9C\xB7\x69\x02\x03\x01\x00\x01\xA3\x82\x01\x1A\x30\x82\x01\x16\x30\x09\x06\x03\x55\x1D\x13\x04\x02\x30\x00\x30\x0B\x06\x03\x55\x1D\x0F\x04\x04\x03\x02\x03\xA8\x30\x1D\x06\x03\x55\x1D\x0E\x04\x16\x04\x14\x34\x91\x6E\x91\x32\xBF\x35\x25\x43\xCC\x28\x74\xEF\x82\xC2\x57\x92\x79\x13\x73\x30\x6D\x06\x03\x55\x1D\x23\x04\x66\x30\x64\x80\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\xA1\x49\xA4\x47\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x82\x01\x00\x30\x1E\x06\x03\x55\x1D\x11\x04\x17\x30\x15\x82\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x13\x06\x03\x55\x1D\x25\x04\x0C\x30\x0A\x06\x08\x2B\x06\x01\x05\x05\x07\x03\x09\x30\x39\x06\x03\x55\x1D\x1F\x04\x32\x30\x30\x30\x2E\xA0\x2C\xA0\x2A\x86\x28\x68\x74\x74\x70\x3A\x2F\x2F\x63\x72\x6C\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x2F\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x63\x72\x6C\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x03\x82\x01\x01\x00\x6D\x78\xD7\x66\x90\xA6\xEB\xDD\xB5\x09\x48\xA4\xDA\x27\xFA\xAC\xB1\xBC\x8F\x8C\xBE\xCC\x8C\x09\xA2\x40\x0D\x6C\x4A\xAE\x72\x22\x1E\xC8\xAF\x6D\xF1\x12\xAF\xD7\x40\x51\x79\xD4\xDD\xB2\x0C\xDB\x97\x84\xB6\x24\xD5\xF5\xA8\xBB\xC0\x4B\xF9\x7F\x71\xF7\xB0\x65\x42\x4A\x7D\xFE\x76\x7E\x05\xD2\x46\xB8\x7D\xB3\x39\x4C\x5C\xB1\xFA\xB9\xEE\x3B\x70\x33\x39\x57\x1A\xB9\x95\x51\x33\x00\x25\x1B\x4C\xAA\xB4\xA7\x55\xAF\x63\x6D\x6F\x88\x17\x6A\x7F\xB0\x97\xDE\x49\x14\x6A\x27\x6A\xB0\x42\x80\xD6\xA6\x9B\xEF\x04\x5E\x11\x7D\xD5\x8E\x54\x20\xA2\x76\xD4\x66\x58\xAC\x9C\x12\xD3\xF5\xCA\x54\x98\xCA\x21\xEC\xC1\x55\xA1\x2F\x68\x0B\x5D\x04\x50\xD2\x5E\x70\x25\xD8\x13\xD9\x44\x51\x0E\x8A\x42\x08\x18\x84\xE6\x61\xCE\x5A\x7D\x7B\x81\x35\x90\xC3\xD4\x9D\x19\xB6\x37\xEE\x8F\x63\x5C\xDA\xD8\xF0\x64\x60\x39\xEB\x9B\x1C\x54\x66\x75\x76\xB5\x0A\x58\xB9\x3F\x91\xE1\x21\x9C\xA0\x50\x15\x97\xB6\x7E\x41\xBC\xD0\xC4\x21\x4C\xF5\xD7\xF0\x13\xF8\x77\xE9\x74\xC4\x8A\x0E\x20\x17\x32\xAE\x38\xC2\xA5\xA8\x62\x85\x17\xB1\xA2\xD3\x22\x9F\x95\xB7\xA3\x4C" +#define RESP_SIZE (sizeof(RESP) - 1) +#define MAX_BUF 1024 static void server_log_func(int level, const char *str) { @@ -70,13 +71,13 @@ static void client_log_func(int level, const char *str) static int handshake_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { fail("received status request\n"); } static int status_func(gnutls_session_t session, void *ptr, - gnutls_datum_t * resp) + gnutls_datum_t *resp) { resp->data = gnutls_malloc(RESP_SIZE); if (resp->data == NULL) @@ -119,13 +120,13 @@ static void client(int fd, const char *prio, int flags) else if (debug) success("client: Handshake was completed\n"); - assert(! - (gnutls_session_get_flags(session) & - GNUTLS_SFLAGS_CLI_REQUESTED_OCSP)); + assert(!(gnutls_session_get_flags(session) & + GNUTLS_SFLAGS_CLI_REQUESTED_OCSP)); if (debug) - success("client: TLS version is: %s\n", gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + success("client: TLS version is: %s\n", + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { do @@ -142,7 +143,7 @@ static void client(int fd, const char *prio, int flags) gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); gnutls_deinit(session); @@ -184,20 +185,20 @@ static void server(int fd, const char *prio) if (ret < 0) goto end; - assert(! - (gnutls_session_get_flags(session) & - GNUTLS_SFLAGS_CLI_REQUESTED_OCSP)); + assert(!(gnutls_session_get_flags(session) & + GNUTLS_SFLAGS_CLI_REQUESTED_OCSP)); if (debug) success("server: Handshake was completed\n"); if (debug) - success("server: TLS version is: %s\n", gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + success("server: TLS version is: %s\n", + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); gnutls_deinit(session); gnutls_certificate_free_credentials(x509_cred); @@ -252,4 +253,4 @@ void doit(void) start("NORMAL:-VERS-ALL:+VERS-TLS1.3:%NO_STATUS_REQUEST", 0); start("NORMAL:%NO_STATUS_REQUEST", 0); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/nul-in-x509-names.c b/tests/nul-in-x509-names.c index cab3d76ebe..8bb384c7f9 100644 --- a/tests/nul-in-x509-names.c +++ b/tests/nul-in-x509-names.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,59 +35,58 @@ certs that trigger this bug. */ static char badguy_nul_cn_data[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIDjTCCAnWgAwIBAgIBATANBgkqhkiG9w0BAQUFADB0MQswCQYDVQQGEwJHQjES\n" - "MBAGA1UECBMJQmVya3NoaXJlMRAwDgYDVQQHEwdOZXdidXJ5MRcwFQYDVQQKEw5N\n" - "eSBDb21wYW55IEx0ZDELMAkGA1UECxMCQ0ExGTAXBgNVBAMTEE5VTEwtZnJpZW5k\n" - "bHkgQ0EwHhcNMDkwODA0MDczMzQzWhcNMTkwODAyMDczMzQzWjAjMSEwHwYDVQQD\n" - "Exh3d3cuYmFuay5jb20ALmJhZGd1eS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IB\n" - "DwAwggEKAoIBAQDNJnCWqaZdPpztDwgVWnwXJWhorxO5rUH6ElTihHJ9WNHiQELB\n" - "We0FPaoQU3AAiDp3oMBWnqx9ISpxRFEIvBcH2qijdtxRvBuK9gIaVb9GtERrJ16+\n" - "5ReLVrLGgjYRg6i/9y8NF/bNR7VvK6ZBto0zX+rqi7Ea4pk4/1lbCqFxE8o3P7mw\n" - "HpGayJM1DErgnfTSYcdOW0EKfDFUmdv1Zc6A08ICN2T9VBJ76qyFWVwX4S720Kjy\n" - "0C6UWS/Cpl/aB957LhQH7eQnJDedCS6x+VpIuYAkQ+bLx24139VpNP/m1p7odmZu\n" - "X1kBPJY77HILPB6VD85oE5wi3Ru1RChQSgV/AgMBAAGjezB5MAkGA1UdEwQCMAAw\n" - "LAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0G\n" - "A1UdDgQWBBQzFSS+2mY6BovZJzQ6r2JA5JVmXTAfBgNVHSMEGDAWgBQKaTlfnTAE\n" - "GAguAg7m6p2yJvbiajANBgkqhkiG9w0BAQUFAAOCAQEAMmUjH8jZU4SC0ArrFFEk\n" - "A7xsGypa/hvw6GkMKxmGz38ydtgr0s+LxNG2W5xgo5kuknIGzt6L0qLSiXwTqQtO\n" - "vhIJ5dYoOqynJlaUfxPuZH3elGB1wbxVl9SqE44C2LCwcFOuGFPOqrIshT7j8+Em\n" - "8/pc7vh7C8Y5tQQzXq64Xg5mzKjAag3sYMHF2TnqvRuPHH0WOLHoyDcBqkuZ3+QP\n" - "EL5h7prPzScFRgBg2Gp0CDI8i5ABagczDGyQ2+r7ahcadrtzFCfhpH7V3TCxXfIO\n" - "qtSy1Uz2T5EqB/Q3wc9IGcX+fpKWqN9QajGSo7EU/kHMSWKYTerFugUtScMicu9B\n" - "CQ==\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t badguy_nul_cn = { - (void *)badguy_nul_cn_data, sizeof(badguy_nul_cn_data) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIIDjTCCAnWgAwIBAgIBATANBgkqhkiG9w0BAQUFADB0MQswCQYDVQQGEwJHQjES\n" + "MBAGA1UECBMJQmVya3NoaXJlMRAwDgYDVQQHEwdOZXdidXJ5MRcwFQYDVQQKEw5N\n" + "eSBDb21wYW55IEx0ZDELMAkGA1UECxMCQ0ExGTAXBgNVBAMTEE5VTEwtZnJpZW5k\n" + "bHkgQ0EwHhcNMDkwODA0MDczMzQzWhcNMTkwODAyMDczMzQzWjAjMSEwHwYDVQQD\n" + "Exh3d3cuYmFuay5jb20ALmJhZGd1eS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IB\n" + "DwAwggEKAoIBAQDNJnCWqaZdPpztDwgVWnwXJWhorxO5rUH6ElTihHJ9WNHiQELB\n" + "We0FPaoQU3AAiDp3oMBWnqx9ISpxRFEIvBcH2qijdtxRvBuK9gIaVb9GtERrJ16+\n" + "5ReLVrLGgjYRg6i/9y8NF/bNR7VvK6ZBto0zX+rqi7Ea4pk4/1lbCqFxE8o3P7mw\n" + "HpGayJM1DErgnfTSYcdOW0EKfDFUmdv1Zc6A08ICN2T9VBJ76qyFWVwX4S720Kjy\n" + "0C6UWS/Cpl/aB957LhQH7eQnJDedCS6x+VpIuYAkQ+bLx24139VpNP/m1p7odmZu\n" + "X1kBPJY77HILPB6VD85oE5wi3Ru1RChQSgV/AgMBAAGjezB5MAkGA1UdEwQCMAAw\n" + "LAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0G\n" + "A1UdDgQWBBQzFSS+2mY6BovZJzQ6r2JA5JVmXTAfBgNVHSMEGDAWgBQKaTlfnTAE\n" + "GAguAg7m6p2yJvbiajANBgkqhkiG9w0BAQUFAAOCAQEAMmUjH8jZU4SC0ArrFFEk\n" + "A7xsGypa/hvw6GkMKxmGz38ydtgr0s+LxNG2W5xgo5kuknIGzt6L0qLSiXwTqQtO\n" + "vhIJ5dYoOqynJlaUfxPuZH3elGB1wbxVl9SqE44C2LCwcFOuGFPOqrIshT7j8+Em\n" + "8/pc7vh7C8Y5tQQzXq64Xg5mzKjAag3sYMHF2TnqvRuPHH0WOLHoyDcBqkuZ3+QP\n" + "EL5h7prPzScFRgBg2Gp0CDI8i5ABagczDGyQ2+r7ahcadrtzFCfhpH7V3TCxXfIO\n" + "qtSy1Uz2T5EqB/Q3wc9IGcX+fpKWqN9QajGSo7EU/kHMSWKYTerFugUtScMicu9B\n" + "CQ==\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t badguy_nul_cn = { (void *)badguy_nul_cn_data, + sizeof(badguy_nul_cn_data) }; static char badguy_nul_san_data[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIDrTCCApWgAwIBAgIBADANBgkqhkiG9w0BAQUFADB0MQswCQYDVQQGEwJHQjES\n" - "MBAGA1UECBMJQmVya3NoaXJlMRAwDgYDVQQHEwdOZXdidXJ5MRcwFQYDVQQKEw5N\n" - "eSBDb21wYW55IEx0ZDELMAkGA1UECxMCQ0ExGTAXBgNVBAMTEE5VTEwtZnJpZW5k\n" - "bHkgQ0EwHhcNMDkwODA0MDY1MzA1WhcNMTkwODAyMDY1MzA1WjAZMRcwFQYDVQQD\n" - "Ew53d3cuYmFkZ3V5LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\n" - "AM0mcJappl0+nO0PCBVafBclaGivE7mtQfoSVOKEcn1Y0eJAQsFZ7QU9qhBTcACI\n" - "OnegwFaerH0hKnFEUQi8FwfaqKN23FG8G4r2AhpVv0a0RGsnXr7lF4tWssaCNhGD\n" - "qL/3Lw0X9s1HtW8rpkG2jTNf6uqLsRrimTj/WVsKoXETyjc/ubAekZrIkzUMSuCd\n" - "9NJhx05bQQp8MVSZ2/VlzoDTwgI3ZP1UEnvqrIVZXBfhLvbQqPLQLpRZL8KmX9oH\n" - "3nsuFAft5CckN50JLrH5Wki5gCRD5svHbjXf1Wk0/+bWnuh2Zm5fWQE8ljvscgs8\n" - "HpUPzmgTnCLdG7VEKFBKBX8CAwEAAaOBpDCBoTAJBgNVHRMEAjAAMCwGCWCGSAGG\n" - "+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU\n" - "MxUkvtpmOgaL2Sc0Oq9iQOSVZl0wHwYDVR0jBBgwFoAUCmk5X50wBBgILgIO5uqd\n" - "sib24mowJgYDVR0RBB8wHYIbd3d3LmJhbmsuY29tAHd3dy5iYWRndXkuY29tMA0G\n" - "CSqGSIb3DQEBBQUAA4IBAQAnbn2zqYZSV2qgxjBsHpQJp2+t/hGfvjKNAXuLlGbX\n" - "fLaxkPzk9bYyvGxxI7EYiNZHvNoHx15GcTrmQG7Bfx1WlnBl2FGp3J6lBgCY5x4Q\n" - "vIK6AOVOog8+7Irdb8bJweztbXwxPmaHR6GLFTwhfuwheD0hcHK6cMNk+B1P2dAn\n" - "PD5+olmuvprTAESncjrjP8ibxY+xlP4AD264FIjxA1CRUa/wHve4WqRXNS3xrciu\n" - "3SlhFH3q0TSAXBv960PcIW3GRPk7VHbEkVuspI5y59gk/6dawO8nw9fk+X9VjQ0w\n" - "7KLZbch29L6UPRIySpFP28PndgdaEpcYtxUAmFkhiT41\n" - "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t badguy_nul_san = { - (void *)badguy_nul_san_data, sizeof(badguy_nul_san_data) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIIDrTCCApWgAwIBAgIBADANBgkqhkiG9w0BAQUFADB0MQswCQYDVQQGEwJHQjES\n" + "MBAGA1UECBMJQmVya3NoaXJlMRAwDgYDVQQHEwdOZXdidXJ5MRcwFQYDVQQKEw5N\n" + "eSBDb21wYW55IEx0ZDELMAkGA1UECxMCQ0ExGTAXBgNVBAMTEE5VTEwtZnJpZW5k\n" + "bHkgQ0EwHhcNMDkwODA0MDY1MzA1WhcNMTkwODAyMDY1MzA1WjAZMRcwFQYDVQQD\n" + "Ew53d3cuYmFkZ3V5LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\n" + "AM0mcJappl0+nO0PCBVafBclaGivE7mtQfoSVOKEcn1Y0eJAQsFZ7QU9qhBTcACI\n" + "OnegwFaerH0hKnFEUQi8FwfaqKN23FG8G4r2AhpVv0a0RGsnXr7lF4tWssaCNhGD\n" + "qL/3Lw0X9s1HtW8rpkG2jTNf6uqLsRrimTj/WVsKoXETyjc/ubAekZrIkzUMSuCd\n" + "9NJhx05bQQp8MVSZ2/VlzoDTwgI3ZP1UEnvqrIVZXBfhLvbQqPLQLpRZL8KmX9oH\n" + "3nsuFAft5CckN50JLrH5Wki5gCRD5svHbjXf1Wk0/+bWnuh2Zm5fWQE8ljvscgs8\n" + "HpUPzmgTnCLdG7VEKFBKBX8CAwEAAaOBpDCBoTAJBgNVHRMEAjAAMCwGCWCGSAGG\n" + "+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU\n" + "MxUkvtpmOgaL2Sc0Oq9iQOSVZl0wHwYDVR0jBBgwFoAUCmk5X50wBBgILgIO5uqd\n" + "sib24mowJgYDVR0RBB8wHYIbd3d3LmJhbmsuY29tAHd3dy5iYWRndXkuY29tMA0G\n" + "CSqGSIb3DQEBBQUAA4IBAQAnbn2zqYZSV2qgxjBsHpQJp2+t/hGfvjKNAXuLlGbX\n" + "fLaxkPzk9bYyvGxxI7EYiNZHvNoHx15GcTrmQG7Bfx1WlnBl2FGp3J6lBgCY5x4Q\n" + "vIK6AOVOog8+7Irdb8bJweztbXwxPmaHR6GLFTwhfuwheD0hcHK6cMNk+B1P2dAn\n" + "PD5+olmuvprTAESncjrjP8ibxY+xlP4AD264FIjxA1CRUa/wHve4WqRXNS3xrciu\n" + "3SlhFH3q0TSAXBv960PcIW3GRPk7VHbEkVuspI5y59gk/6dawO8nw9fk+X9VjQ0w\n" + "7KLZbch29L6UPRIySpFP28PndgdaEpcYtxUAmFkhiT41\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t badguy_nul_san = { (void *)badguy_nul_san_data, + sizeof(badguy_nul_san_data) }; void doit(void) { @@ -115,8 +114,7 @@ void doit(void) ret = gnutls_x509_crt_check_hostname(crt, "www.bank.com"); if (ret == 0) { if (debug) - success - ("gnutls_x509_crt_check_hostname OK (NUL-IN-CN)"); + success("gnutls_x509_crt_check_hostname OK (NUL-IN-CN)"); } else { fail("gnutls_x509_crt_check_hostname BROKEN (NUL-IN-CN)"); } @@ -130,8 +128,7 @@ void doit(void) ret = gnutls_x509_crt_check_hostname(crt, "www.bank.com"); if (ret == 0) { if (debug) - success - ("gnutls_x509_crt_check_hostname OK (NUL-IN-SAN)"); + success("gnutls_x509_crt_check_hostname OK (NUL-IN-SAN)"); } else { fail("gnutls_x509_crt_check_hostname BROKEN (NUL-IN-SAN)"); } @@ -139,5 +136,4 @@ void doit(void) gnutls_x509_crt_deinit(crt); gnutls_global_deinit(); - } diff --git a/tests/null_retrieve_function.c b/tests/null_retrieve_function.c index eb156e9646..7a51e9ee8b 100644 --- a/tests/null_retrieve_function.c +++ b/tests/null_retrieve_function.c @@ -19,7 +19,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,33 +35,26 @@ * function. */ -static int cert_cb1(gnutls_session_t session, - const gnutls_datum_t * req_ca_rdn, - int nreqs, - const gnutls_pk_algorithm_t * pk_algos, - int pk_algos_length, gnutls_retr2_st * retr) +static int cert_cb1(gnutls_session_t session, const gnutls_datum_t *req_ca_rdn, + int nreqs, const gnutls_pk_algorithm_t *pk_algos, + int pk_algos_length, gnutls_retr2_st *retr) { return -1; } -static int cert_cb2(gnutls_session_t session, - const gnutls_datum_t * req_ca_rdn, - int nreqs, - const gnutls_pk_algorithm_t * pk_algos, - int pk_algos_length, - gnutls_pcert_st ** pcert, - unsigned int *pcert_length, gnutls_privkey_t * privkey) +static int cert_cb2(gnutls_session_t session, const gnutls_datum_t *req_ca_rdn, + int nreqs, const gnutls_pk_algorithm_t *pk_algos, + int pk_algos_length, gnutls_pcert_st **pcert, + unsigned int *pcert_length, gnutls_privkey_t *privkey) { return -1; } static int cert_cb3(gnutls_session_t session, const struct gnutls_cert_retr_st *info, - gnutls_pcert_st ** certs, - unsigned int *pcert_length, - gnutls_ocsp_data_st ** ocsp, - unsigned int *ocsp_length, - gnutls_privkey_t * privkey, unsigned int *flags) + gnutls_pcert_st **certs, unsigned int *pcert_length, + gnutls_ocsp_data_st **ocsp, unsigned int *ocsp_length, + gnutls_privkey_t *privkey, unsigned int *flags) { return -1; } @@ -87,11 +80,9 @@ void doit(void) gnutls_certificate_allocate_credentials(&x509_cred); - ret = - gnutls_certificate_set_x509_key_mem(x509_cred, - &server_ca3_localhost_cert_chain, - &server_ca3_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + x509_cred, &server_ca3_localhost_cert_chain, &server_ca3_key, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("error in error code\n"); exit(1); diff --git a/tests/ocsp-common.h b/tests/ocsp-common.h index 4d8ef9ab39..14c0207650 100644 --- a/tests/ocsp-common.h +++ b/tests/ocsp-common.h @@ -21,110 +21,86 @@ */ #ifndef GNUTLS_TESTS_OCSP_COMMON_H -# define GNUTLS_TESTS_OCSP_COMMON_H +#define GNUTLS_TESTS_OCSP_COMMON_H -# if defined __clang__ || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-variable" -# endif +#if defined __clang__ || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunused-variable" +#endif /* Date for responses to be valid */ -# define OCSP_RESP_DATE 1508329639 +#define OCSP_RESP_DATE 1508329639 /* ocsp response with unknown status for * server_ca3_localhost6_cert. Signed with * RSA-SHA256. */ static const char _ocsp_ca3_localhost6_unknown[] = { - 0x30, 0x82, 0x02, 0x3A, 0x0A, 0x01, 0x00, 0xA0, - 0x82, 0x02, 0x33, 0x30, 0x82, 0x02, 0x2F, 0x06, - 0x09, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, - 0x01, 0x01, 0x04, 0x82, 0x02, 0x20, 0x30, 0x82, - 0x02, 0x1C, 0x30, 0x81, 0x85, 0xA1, 0x14, 0x30, - 0x12, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, - 0x04, 0x03, 0x13, 0x07, 0x73, 0x75, 0x62, 0x43, - 0x41, 0x2D, 0x33, 0x18, 0x0F, 0x32, 0x30, 0x31, - 0x37, 0x31, 0x30, 0x31, 0x38, 0x31, 0x32, 0x32, - 0x30, 0x34, 0x39, 0x5A, 0x30, 0x5C, 0x30, 0x5A, - 0x30, 0x45, 0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E, - 0x03, 0x02, 0x1A, 0x05, 0x00, 0x04, 0x14, 0xB2, - 0xE6, 0x5C, 0x8E, 0x6E, 0x83, 0x4B, 0xBD, 0x11, - 0xD9, 0x97, 0xFA, 0x36, 0x93, 0x59, 0x9E, 0xAD, - 0x5C, 0x15, 0xC4, 0x04, 0x14, 0x9E, 0x91, 0xEC, - 0x8C, 0xAA, 0x24, 0x5B, 0x22, 0xE0, 0xE8, 0x11, - 0xE8, 0xE9, 0xA4, 0x91, 0xB5, 0x91, 0x26, 0x00, - 0xF1, 0x02, 0x0C, 0x57, 0xA3, 0x1D, 0x32, 0x37, - 0x64, 0x58, 0xFA, 0x7B, 0x52, 0x6F, 0xD7, 0x82, - 0x00, 0x18, 0x0F, 0x32, 0x30, 0x31, 0x37, 0x31, - 0x30, 0x31, 0x38, 0x31, 0x32, 0x32, 0x30, 0x34, - 0x39, 0x5A, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, - 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, - 0x00, 0x03, 0x82, 0x01, 0x81, 0x00, 0x98, 0x3C, - 0xFF, 0xD1, 0x76, 0x93, 0xB0, 0xDD, 0x42, 0xCA, - 0x8C, 0x7D, 0x4F, 0x9F, 0xE7, 0x78, 0x14, 0x1D, - 0x90, 0x25, 0x67, 0x34, 0x51, 0x3C, 0xF6, 0x10, - 0x7E, 0xB9, 0x8C, 0x19, 0xF4, 0x9A, 0x32, 0x6A, - 0xFD, 0x5B, 0x77, 0xE9, 0x0A, 0xB2, 0xCD, 0x31, - 0x5E, 0x0F, 0x5B, 0x11, 0xA7, 0x75, 0x38, 0x7B, - 0x01, 0xFA, 0x2B, 0x68, 0x2C, 0x14, 0x6F, 0xAF, - 0x90, 0xC9, 0x69, 0x67, 0x13, 0x70, 0x78, 0x51, - 0x44, 0x0B, 0xA6, 0x16, 0x84, 0x6B, 0x09, 0xC3, - 0x27, 0xFF, 0x06, 0x25, 0x90, 0x27, 0x08, 0x87, - 0x23, 0xCB, 0x1A, 0x56, 0x61, 0x9E, 0x28, 0x9C, - 0x42, 0x19, 0xEA, 0x93, 0x7C, 0x05, 0x14, 0x04, - 0x7F, 0xC7, 0x1C, 0x40, 0xDD, 0x35, 0xC6, 0x50, - 0x79, 0x46, 0xD7, 0x6A, 0xB1, 0x59, 0xAF, 0xC6, - 0xDA, 0x0C, 0xD2, 0x1B, 0xAC, 0x3B, 0x46, 0x09, - 0x0E, 0x7B, 0x02, 0xC3, 0x01, 0x55, 0x5E, 0xE9, - 0x4F, 0x10, 0x58, 0x16, 0xB8, 0x54, 0xA8, 0x54, - 0xBB, 0x31, 0xEB, 0x99, 0x64, 0x73, 0xEE, 0x3F, - 0x44, 0xCE, 0xBB, 0xF9, 0x0A, 0xDB, 0x36, 0x90, - 0x51, 0x80, 0xAA, 0xE1, 0x6F, 0xC3, 0x00, 0x13, - 0x65, 0x80, 0x36, 0x3A, 0x63, 0x48, 0x05, 0x52, - 0x7F, 0x91, 0x96, 0xB0, 0x7F, 0x53, 0xFC, 0x5D, - 0x87, 0x0C, 0x6E, 0x5C, 0xAC, 0x0A, 0x45, 0x22, - 0x83, 0x72, 0xC0, 0xAF, 0x5E, 0xDB, 0x5C, 0xE4, - 0xA9, 0x80, 0x16, 0x43, 0xAB, 0x55, 0x72, 0x9B, - 0x37, 0x41, 0xBB, 0xEF, 0x20, 0x45, 0xD5, 0xCB, - 0xF8, 0xCE, 0xA9, 0x50, 0x12, 0x79, 0xAC, 0x6E, - 0xC0, 0x79, 0xA4, 0x74, 0x1C, 0xF8, 0x48, 0xD4, - 0xFC, 0xDC, 0xBB, 0xDA, 0x36, 0x72, 0x46, 0x05, - 0x32, 0x97, 0x4C, 0x6B, 0xA4, 0x3C, 0xA0, 0x0E, - 0xB7, 0xAC, 0x49, 0xA4, 0x52, 0xF0, 0xAC, 0xD5, - 0x8D, 0x86, 0x07, 0xDB, 0xC3, 0x67, 0xE4, 0x95, - 0x62, 0x52, 0x33, 0x33, 0x2D, 0x00, 0x49, 0x23, - 0xCC, 0x12, 0x62, 0xFB, 0x89, 0x27, 0xD5, 0x27, - 0xCB, 0x75, 0xC4, 0xCB, 0x60, 0x17, 0xFD, 0x4E, - 0x7A, 0x2A, 0xD7, 0x0B, 0x09, 0x84, 0x03, 0x20, - 0x38, 0x53, 0x73, 0x71, 0x66, 0xFC, 0x64, 0x9C, - 0x6E, 0x1A, 0x1E, 0xC5, 0x5E, 0x0C, 0xAD, 0x9D, - 0xE3, 0x37, 0xF2, 0xC2, 0xFC, 0xA1, 0x31, 0x26, - 0x2C, 0xA1, 0xDF, 0x05, 0x19, 0xD6, 0x18, 0xE8, - 0x25, 0x7C, 0x23, 0x23, 0xDE, 0x89, 0x6F, 0x5E, - 0x98, 0xE8, 0xB6, 0xB2, 0x25, 0x28, 0x30, 0x12, - 0x19, 0xB1, 0x84, 0x95, 0x8F, 0x8F, 0x65, 0x75, - 0x2D, 0x90, 0xA8, 0x8D, 0xD9, 0xC3, 0x40, 0x79, - 0xC8, 0xC8, 0xA1, 0xDC, 0xD0, 0x16, 0x02, 0xFE, - 0x60, 0xBE, 0xA3, 0x58, 0xA2, 0xC4, 0xBA, 0xE5, - 0x86, 0x4F, 0xF3, 0x2F, 0x46, 0xB9, 0x62, 0x2F, - 0xCD, 0xE4, 0x1A, 0x62, 0x83, 0x76 + 0x30, 0x82, 0x02, 0x3A, 0x0A, 0x01, 0x00, 0xA0, 0x82, 0x02, 0x33, 0x30, + 0x82, 0x02, 0x2F, 0x06, 0x09, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, + 0x01, 0x01, 0x04, 0x82, 0x02, 0x20, 0x30, 0x82, 0x02, 0x1C, 0x30, 0x81, + 0x85, 0xA1, 0x14, 0x30, 0x12, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x07, 0x73, 0x75, 0x62, 0x43, 0x41, 0x2D, 0x33, 0x18, + 0x0F, 0x32, 0x30, 0x31, 0x37, 0x31, 0x30, 0x31, 0x38, 0x31, 0x32, 0x32, + 0x30, 0x34, 0x39, 0x5A, 0x30, 0x5C, 0x30, 0x5A, 0x30, 0x45, 0x30, 0x09, + 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0x04, 0x14, 0xB2, + 0xE6, 0x5C, 0x8E, 0x6E, 0x83, 0x4B, 0xBD, 0x11, 0xD9, 0x97, 0xFA, 0x36, + 0x93, 0x59, 0x9E, 0xAD, 0x5C, 0x15, 0xC4, 0x04, 0x14, 0x9E, 0x91, 0xEC, + 0x8C, 0xAA, 0x24, 0x5B, 0x22, 0xE0, 0xE8, 0x11, 0xE8, 0xE9, 0xA4, 0x91, + 0xB5, 0x91, 0x26, 0x00, 0xF1, 0x02, 0x0C, 0x57, 0xA3, 0x1D, 0x32, 0x37, + 0x64, 0x58, 0xFA, 0x7B, 0x52, 0x6F, 0xD7, 0x82, 0x00, 0x18, 0x0F, 0x32, + 0x30, 0x31, 0x37, 0x31, 0x30, 0x31, 0x38, 0x31, 0x32, 0x32, 0x30, 0x34, + 0x39, 0x5A, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, + 0x01, 0x01, 0x0B, 0x05, 0x00, 0x03, 0x82, 0x01, 0x81, 0x00, 0x98, 0x3C, + 0xFF, 0xD1, 0x76, 0x93, 0xB0, 0xDD, 0x42, 0xCA, 0x8C, 0x7D, 0x4F, 0x9F, + 0xE7, 0x78, 0x14, 0x1D, 0x90, 0x25, 0x67, 0x34, 0x51, 0x3C, 0xF6, 0x10, + 0x7E, 0xB9, 0x8C, 0x19, 0xF4, 0x9A, 0x32, 0x6A, 0xFD, 0x5B, 0x77, 0xE9, + 0x0A, 0xB2, 0xCD, 0x31, 0x5E, 0x0F, 0x5B, 0x11, 0xA7, 0x75, 0x38, 0x7B, + 0x01, 0xFA, 0x2B, 0x68, 0x2C, 0x14, 0x6F, 0xAF, 0x90, 0xC9, 0x69, 0x67, + 0x13, 0x70, 0x78, 0x51, 0x44, 0x0B, 0xA6, 0x16, 0x84, 0x6B, 0x09, 0xC3, + 0x27, 0xFF, 0x06, 0x25, 0x90, 0x27, 0x08, 0x87, 0x23, 0xCB, 0x1A, 0x56, + 0x61, 0x9E, 0x28, 0x9C, 0x42, 0x19, 0xEA, 0x93, 0x7C, 0x05, 0x14, 0x04, + 0x7F, 0xC7, 0x1C, 0x40, 0xDD, 0x35, 0xC6, 0x50, 0x79, 0x46, 0xD7, 0x6A, + 0xB1, 0x59, 0xAF, 0xC6, 0xDA, 0x0C, 0xD2, 0x1B, 0xAC, 0x3B, 0x46, 0x09, + 0x0E, 0x7B, 0x02, 0xC3, 0x01, 0x55, 0x5E, 0xE9, 0x4F, 0x10, 0x58, 0x16, + 0xB8, 0x54, 0xA8, 0x54, 0xBB, 0x31, 0xEB, 0x99, 0x64, 0x73, 0xEE, 0x3F, + 0x44, 0xCE, 0xBB, 0xF9, 0x0A, 0xDB, 0x36, 0x90, 0x51, 0x80, 0xAA, 0xE1, + 0x6F, 0xC3, 0x00, 0x13, 0x65, 0x80, 0x36, 0x3A, 0x63, 0x48, 0x05, 0x52, + 0x7F, 0x91, 0x96, 0xB0, 0x7F, 0x53, 0xFC, 0x5D, 0x87, 0x0C, 0x6E, 0x5C, + 0xAC, 0x0A, 0x45, 0x22, 0x83, 0x72, 0xC0, 0xAF, 0x5E, 0xDB, 0x5C, 0xE4, + 0xA9, 0x80, 0x16, 0x43, 0xAB, 0x55, 0x72, 0x9B, 0x37, 0x41, 0xBB, 0xEF, + 0x20, 0x45, 0xD5, 0xCB, 0xF8, 0xCE, 0xA9, 0x50, 0x12, 0x79, 0xAC, 0x6E, + 0xC0, 0x79, 0xA4, 0x74, 0x1C, 0xF8, 0x48, 0xD4, 0xFC, 0xDC, 0xBB, 0xDA, + 0x36, 0x72, 0x46, 0x05, 0x32, 0x97, 0x4C, 0x6B, 0xA4, 0x3C, 0xA0, 0x0E, + 0xB7, 0xAC, 0x49, 0xA4, 0x52, 0xF0, 0xAC, 0xD5, 0x8D, 0x86, 0x07, 0xDB, + 0xC3, 0x67, 0xE4, 0x95, 0x62, 0x52, 0x33, 0x33, 0x2D, 0x00, 0x49, 0x23, + 0xCC, 0x12, 0x62, 0xFB, 0x89, 0x27, 0xD5, 0x27, 0xCB, 0x75, 0xC4, 0xCB, + 0x60, 0x17, 0xFD, 0x4E, 0x7A, 0x2A, 0xD7, 0x0B, 0x09, 0x84, 0x03, 0x20, + 0x38, 0x53, 0x73, 0x71, 0x66, 0xFC, 0x64, 0x9C, 0x6E, 0x1A, 0x1E, 0xC5, + 0x5E, 0x0C, 0xAD, 0x9D, 0xE3, 0x37, 0xF2, 0xC2, 0xFC, 0xA1, 0x31, 0x26, + 0x2C, 0xA1, 0xDF, 0x05, 0x19, 0xD6, 0x18, 0xE8, 0x25, 0x7C, 0x23, 0x23, + 0xDE, 0x89, 0x6F, 0x5E, 0x98, 0xE8, 0xB6, 0xB2, 0x25, 0x28, 0x30, 0x12, + 0x19, 0xB1, 0x84, 0x95, 0x8F, 0x8F, 0x65, 0x75, 0x2D, 0x90, 0xA8, 0x8D, + 0xD9, 0xC3, 0x40, 0x79, 0xC8, 0xC8, 0xA1, 0xDC, 0xD0, 0x16, 0x02, 0xFE, + 0x60, 0xBE, 0xA3, 0x58, 0xA2, 0xC4, 0xBA, 0xE5, 0x86, 0x4F, 0xF3, 0x2F, + 0x46, 0xB9, 0x62, 0x2F, 0xCD, 0xE4, 0x1A, 0x62, 0x83, 0x76 }; const char _ocsp_ca3_localhost6_unknown_pem[] = - "-----BEGIN OCSP RESPONSE-----\n" - "MIICOgoBAKCCAjMwggIvBgkrBgEFBQcwAQEEggIgMIICHDCBhaEUMBIxEDAOBgNV\n" - "BAMTB3N1YkNBLTMYDzIwMTcxMDE4MTIyMDQ5WjBcMFowRTAJBgUrDgMCGgUABBSy\n" - "5lyOboNLvRHZl/o2k1merVwVxAQUnpHsjKokWyLg6BHo6aSRtZEmAPECDFejHTI3\n" - "ZFj6e1Jv14IAGA8yMDE3MTAxODEyMjA0OVowDQYJKoZIhvcNAQELBQADggGBAJg8\n" - "/9F2k7DdQsqMfU+f53gUHZAlZzRRPPYQfrmMGfSaMmr9W3fpCrLNMV4PWxGndTh7\n" - "AforaCwUb6+QyWlnE3B4UUQLphaEawnDJ/8GJZAnCIcjyxpWYZ4onEIZ6pN8BRQE\n" - "f8ccQN01xlB5RtdqsVmvxtoM0husO0YJDnsCwwFVXulPEFgWuFSoVLsx65lkc+4/\n" - "RM67+QrbNpBRgKrhb8MAE2WANjpjSAVSf5GWsH9T/F2HDG5crApFIoNywK9e21zk\n" - "qYAWQ6tVcps3QbvvIEXVy/jOqVASeaxuwHmkdBz4SNT83LvaNnJGBTKXTGukPKAO\n" - "t6xJpFLwrNWNhgfbw2fklWJSMzMtAEkjzBJi+4kn1SfLdcTLYBf9Tnoq1wsJhAMg\n" - "OFNzcWb8ZJxuGh7FXgytneM38sL8oTEmLKHfBRnWGOglfCMj3olvXpjotrIlKDAS\n" - "GbGElY+PZXUtkKiN2cNAecjIodzQFgL+YL6jWKLEuuWGT/MvRrliL83kGmKDdg==\n" - "-----END OCSP RESPONSE-----"; + "-----BEGIN OCSP RESPONSE-----\n" + "MIICOgoBAKCCAjMwggIvBgkrBgEFBQcwAQEEggIgMIICHDCBhaEUMBIxEDAOBgNV\n" + "BAMTB3N1YkNBLTMYDzIwMTcxMDE4MTIyMDQ5WjBcMFowRTAJBgUrDgMCGgUABBSy\n" + "5lyOboNLvRHZl/o2k1merVwVxAQUnpHsjKokWyLg6BHo6aSRtZEmAPECDFejHTI3\n" + "ZFj6e1Jv14IAGA8yMDE3MTAxODEyMjA0OVowDQYJKoZIhvcNAQELBQADggGBAJg8\n" + "/9F2k7DdQsqMfU+f53gUHZAlZzRRPPYQfrmMGfSaMmr9W3fpCrLNMV4PWxGndTh7\n" + "AforaCwUb6+QyWlnE3B4UUQLphaEawnDJ/8GJZAnCIcjyxpWYZ4onEIZ6pN8BRQE\n" + "f8ccQN01xlB5RtdqsVmvxtoM0husO0YJDnsCwwFVXulPEFgWuFSoVLsx65lkc+4/\n" + "RM67+QrbNpBRgKrhb8MAE2WANjpjSAVSf5GWsH9T/F2HDG5crApFIoNywK9e21zk\n" + "qYAWQ6tVcps3QbvvIEXVy/jOqVASeaxuwHmkdBz4SNT83LvaNnJGBTKXTGukPKAO\n" + "t6xJpFLwrNWNhgfbw2fklWJSMzMtAEkjzBJi+4kn1SfLdcTLYBf9Tnoq1wsJhAMg\n" + "OFNzcWb8ZJxuGh7FXgytneM38sL8oTEmLKHfBRnWGOglfCMj3olvXpjotrIlKDAS\n" + "GbGElY+PZXUtkKiN2cNAecjIodzQFgL+YL6jWKLEuuWGT/MvRrliL83kGmKDdg==\n" + "-----END OCSP RESPONSE-----"; static gnutls_datum_t ocsp_ca3_localhost6_unknown = { (void *)_ocsp_ca3_localhost6_unknown, @@ -141,226 +117,159 @@ static gnutls_datum_t ocsp_ca3_localhost6_unknown_pem = { * RSA-SHA512. */ static const char _ocsp_ca3_localhost_unknown[] = { - 0x30, 0x82, 0x06, 0x53, 0x0A, 0x01, 0x00, 0xA0, - 0x82, 0x06, 0x4C, 0x30, 0x82, 0x06, 0x48, 0x06, - 0x09, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, - 0x01, 0x01, 0x04, 0x82, 0x06, 0x39, 0x30, 0x82, - 0x06, 0x35, 0x30, 0x81, 0x85, 0xA1, 0x14, 0x30, - 0x12, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, - 0x04, 0x03, 0x13, 0x07, 0x73, 0x75, 0x62, 0x43, - 0x41, 0x2D, 0x33, 0x18, 0x0F, 0x32, 0x30, 0x31, - 0x37, 0x31, 0x30, 0x31, 0x38, 0x31, 0x32, 0x30, - 0x39, 0x33, 0x30, 0x5A, 0x30, 0x5C, 0x30, 0x5A, - 0x30, 0x45, 0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E, - 0x03, 0x02, 0x1A, 0x05, 0x00, 0x04, 0x14, 0xB2, - 0xE6, 0x5C, 0x8E, 0x6E, 0x83, 0x4B, 0xBD, 0x11, - 0xD9, 0x97, 0xFA, 0x36, 0x93, 0x59, 0x9E, 0xAD, - 0x5C, 0x15, 0xC4, 0x04, 0x14, 0x9E, 0x91, 0xEC, - 0x8C, 0xAA, 0x24, 0x5B, 0x22, 0xE0, 0xE8, 0x11, - 0xE8, 0xE9, 0xA4, 0x91, 0xB5, 0x91, 0x26, 0x00, - 0xF1, 0x02, 0x0C, 0x57, 0xA3, 0x1D, 0x32, 0x36, - 0xC8, 0x0C, 0xA1, 0xCA, 0xB0, 0xBD, 0xF6, 0x82, - 0x00, 0x18, 0x0F, 0x32, 0x30, 0x31, 0x37, 0x31, - 0x30, 0x31, 0x38, 0x31, 0x32, 0x30, 0x39, 0x33, - 0x30, 0x5A, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, - 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0D, 0x05, - 0x00, 0x03, 0x82, 0x01, 0x81, 0x00, 0x56, 0x64, - 0x2B, 0x10, 0xAA, 0xE7, 0x26, 0x7F, 0xF1, 0x7F, - 0x86, 0x97, 0x0E, 0x18, 0xB4, 0x75, 0x92, 0x65, - 0x12, 0x2B, 0x46, 0x9F, 0x3E, 0x96, 0x98, 0xE4, - 0xAB, 0x10, 0xD1, 0x0E, 0xEA, 0x08, 0xE2, 0xA5, - 0x01, 0x75, 0xA4, 0x5B, 0x76, 0xAC, 0x49, 0x2B, - 0x9E, 0xF1, 0x4A, 0xF2, 0x79, 0x3A, 0x4E, 0x15, - 0x81, 0xFF, 0x4D, 0xD3, 0x65, 0x8E, 0xAE, 0x4A, - 0xBB, 0x33, 0x35, 0x8B, 0x0F, 0xB6, 0x5D, 0x32, - 0xEF, 0xF5, 0xE1, 0x25, 0xBF, 0xBD, 0x52, 0x1D, - 0x99, 0xF2, 0x34, 0xE0, 0xFB, 0x38, 0x34, 0x6C, - 0x9A, 0xEF, 0x53, 0xB2, 0x90, 0xC6, 0xFB, 0x75, - 0xA0, 0x8C, 0xBC, 0x6B, 0x8E, 0xD8, 0xDE, 0x33, - 0xE4, 0x6F, 0xF2, 0xAD, 0xF2, 0xA2, 0x4F, 0xC2, - 0x58, 0x47, 0xE2, 0x68, 0x6D, 0x3A, 0x3A, 0xB3, - 0x0A, 0x82, 0x3D, 0xA4, 0x85, 0x00, 0x58, 0x3E, - 0x00, 0x35, 0x9D, 0x6B, 0x1F, 0xFF, 0x9F, 0xAE, - 0xB0, 0x9A, 0xE2, 0xC7, 0x0E, 0x9A, 0xB3, 0x7C, - 0x52, 0xE9, 0xDA, 0x50, 0x57, 0x35, 0x72, 0x71, - 0x81, 0xA7, 0xC0, 0x40, 0x28, 0xEA, 0x2B, 0xCE, - 0x09, 0x47, 0x1D, 0xB1, 0x80, 0x41, 0x59, 0xF6, - 0x5D, 0xD3, 0x3C, 0xEA, 0x11, 0xD8, 0x13, 0xB9, - 0x0F, 0x32, 0x6A, 0x29, 0x72, 0xBE, 0xC1, 0xC3, - 0x1B, 0xB5, 0x4C, 0x4D, 0x0D, 0xA1, 0xD5, 0xF0, - 0xC4, 0xEC, 0xC5, 0x5A, 0x93, 0x41, 0x7A, 0x01, - 0x24, 0xB3, 0x7A, 0x71, 0x82, 0xA3, 0xC6, 0x08, - 0x42, 0x91, 0x0E, 0x6B, 0xE7, 0x86, 0x0B, 0xAF, - 0xBE, 0xDF, 0x07, 0x5A, 0x8C, 0x35, 0xF8, 0x5F, - 0x7F, 0x2F, 0x60, 0x04, 0xDD, 0x2A, 0xF2, 0x0D, - 0xC0, 0x1C, 0x6F, 0xA0, 0x30, 0x80, 0xA4, 0x35, - 0x83, 0xD3, 0xC3, 0xCC, 0x35, 0x46, 0x36, 0xEB, - 0xE9, 0xB1, 0x3C, 0x08, 0x8F, 0xCC, 0x5D, 0xCA, - 0xD9, 0xAF, 0x3E, 0xD4, 0x58, 0xBB, 0x90, 0x5D, - 0xEF, 0x01, 0x9C, 0xD9, 0x3E, 0x56, 0x7E, 0xCF, - 0x13, 0xAA, 0x11, 0xC4, 0x22, 0xD2, 0xA0, 0x9F, - 0x1B, 0xE9, 0xF0, 0x78, 0x70, 0x3B, 0xCC, 0x21, - 0x7D, 0x6B, 0x46, 0x97, 0x3F, 0x3B, 0x0C, 0x5B, - 0x8F, 0xA8, 0x28, 0x72, 0x4A, 0x41, 0x4D, 0xE6, - 0xDD, 0x2E, 0xBD, 0xF1, 0xA4, 0x1E, 0xA2, 0xA2, - 0x94, 0x6E, 0xAD, 0x33, 0xC2, 0x56, 0xD3, 0x29, - 0xCF, 0x75, 0x5E, 0x35, 0x59, 0xEB, 0x07, 0x78, - 0x23, 0x0B, 0x20, 0x4E, 0xEB, 0x61, 0x2B, 0x46, - 0x77, 0x0A, 0x9F, 0xA4, 0x57, 0xA8, 0x45, 0x45, - 0x6E, 0x8F, 0xB4, 0xD5, 0x9C, 0xFC, 0x84, 0x78, - 0xC3, 0x82, 0xD9, 0xB6, 0xA7, 0xD5, 0x76, 0xE0, - 0x23, 0x09, 0x2B, 0x9A, 0x7C, 0x7C, 0xB5, 0x6D, - 0x84, 0x9D, 0x1F, 0x47, 0x0C, 0x9C, 0xD6, 0x86, - 0x2B, 0xDD, 0xF4, 0xFA, 0x97, 0xE7, 0x72, 0xE7, - 0x42, 0x52, 0x74, 0xE8, 0x4D, 0x01, 0xA0, 0x82, - 0x04, 0x15, 0x30, 0x82, 0x04, 0x11, 0x30, 0x82, - 0x04, 0x0D, 0x30, 0x82, 0x02, 0x75, 0xA0, 0x03, - 0x02, 0x01, 0x02, 0x02, 0x0C, 0x57, 0xA3, 0x1D, - 0x32, 0x35, 0xB3, 0x4F, 0xD0, 0xB9, 0xF5, 0xE7, - 0x3C, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, - 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, - 0x30, 0x0F, 0x31, 0x0D, 0x30, 0x0B, 0x06, 0x03, - 0x55, 0x04, 0x03, 0x13, 0x04, 0x43, 0x41, 0x2D, - 0x33, 0x30, 0x20, 0x17, 0x0D, 0x31, 0x36, 0x30, - 0x35, 0x31, 0x30, 0x30, 0x38, 0x34, 0x38, 0x33, - 0x30, 0x5A, 0x18, 0x0F, 0x39, 0x39, 0x39, 0x39, - 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x35, 0x39, - 0x35, 0x39, 0x5A, 0x30, 0x12, 0x31, 0x10, 0x30, - 0x0E, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x07, - 0x73, 0x75, 0x62, 0x43, 0x41, 0x2D, 0x33, 0x30, - 0x82, 0x01, 0xA2, 0x30, 0x0D, 0x06, 0x09, 0x2A, - 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, - 0x05, 0x00, 0x03, 0x82, 0x01, 0x8F, 0x00, 0x30, - 0x82, 0x01, 0x8A, 0x02, 0x82, 0x01, 0x81, 0x00, - 0xA0, 0x39, 0xC3, 0x57, 0xCD, 0x2B, 0x4E, 0x9D, - 0x11, 0x68, 0x8B, 0x4E, 0x5A, 0x31, 0x12, 0xDE, - 0x30, 0x1E, 0x39, 0x5F, 0x86, 0xB6, 0xB2, 0xB4, - 0x81, 0xBA, 0x5D, 0xD4, 0x2F, 0x10, 0xD2, 0x1A, - 0x32, 0x0F, 0xD0, 0x41, 0x25, 0xFF, 0xF5, 0xF6, - 0x58, 0xB8, 0xA8, 0xA5, 0xEF, 0xF1, 0x34, 0xBF, - 0x1B, 0x3C, 0x24, 0x69, 0x23, 0x5B, 0x12, 0x55, - 0x79, 0x7C, 0x1D, 0xBD, 0x5C, 0x2B, 0x7A, 0x96, - 0x34, 0x66, 0xB3, 0x56, 0x60, 0xBB, 0xC5, 0x6D, - 0x3B, 0x37, 0x12, 0xF6, 0xE8, 0x8F, 0x3A, 0x7B, - 0x7F, 0xC1, 0x55, 0x19, 0xEA, 0xF2, 0x2A, 0x15, - 0xB6, 0xF3, 0xD0, 0xC0, 0x4A, 0x6F, 0xB8, 0x8F, - 0x05, 0xF7, 0xBC, 0x75, 0xBC, 0xBF, 0xE7, 0xF9, - 0xC7, 0xDC, 0x76, 0x43, 0x7B, 0xEC, 0xD4, 0x9C, - 0xAF, 0x90, 0xBD, 0x8C, 0x73, 0x15, 0x8A, 0x84, - 0x6F, 0x0B, 0xEA, 0x8A, 0xCF, 0xD6, 0xD4, 0x07, - 0x1E, 0x43, 0x4B, 0x24, 0x95, 0xEB, 0xA3, 0xD1, - 0xE7, 0xEC, 0x06, 0xB0, 0x90, 0xEF, 0x91, 0xFB, - 0x26, 0x8D, 0x53, 0xA0, 0xAA, 0x24, 0xE5, 0x49, - 0x64, 0x12, 0xE4, 0x6D, 0xE7, 0x30, 0xCA, 0xB4, - 0x46, 0x2C, 0x6C, 0x73, 0x97, 0x4F, 0xE5, 0x6C, - 0xA0, 0x91, 0xB7, 0x61, 0xF7, 0xEE, 0x39, 0x50, - 0x2B, 0x4E, 0x6D, 0xC9, 0xC7, 0x00, 0x12, 0x6B, - 0x3F, 0xE1, 0xAD, 0x2E, 0x21, 0xB4, 0x00, 0xE5, - 0x31, 0xEA, 0x83, 0xF3, 0x3E, 0xD7, 0x99, 0x2F, - 0x5D, 0xDE, 0xAD, 0x65, 0xE0, 0xEF, 0x36, 0x2E, - 0xB1, 0x36, 0xAB, 0x8F, 0xDA, 0xD3, 0x71, 0xDB, - 0x20, 0x47, 0xF2, 0x26, 0xD6, 0x62, 0x33, 0x98, - 0x3D, 0xA2, 0xEC, 0x68, 0x49, 0xA3, 0x81, 0xA3, - 0xD1, 0x29, 0x37, 0x46, 0xAF, 0x77, 0x27, 0x27, - 0x80, 0xF8, 0x0C, 0xB9, 0x50, 0xF9, 0xAA, 0x72, - 0x6F, 0x9D, 0xA9, 0x7D, 0x34, 0x6F, 0x8F, 0x4C, - 0x4D, 0x3B, 0xF8, 0x1A, 0xD3, 0xB9, 0xDE, 0x42, - 0xD0, 0x48, 0x25, 0xD8, 0x14, 0x9F, 0x7A, 0x8D, - 0xC3, 0x22, 0x5C, 0xCC, 0xC1, 0x14, 0x90, 0xF5, - 0x44, 0xEB, 0x1D, 0x93, 0x85, 0x94, 0x79, 0xDF, - 0xED, 0x24, 0xC1, 0xDF, 0x7E, 0xDB, 0x43, 0xCF, - 0xD8, 0xF7, 0x59, 0xCB, 0x97, 0xF4, 0xCD, 0xA7, - 0xCD, 0x34, 0xF6, 0xC6, 0x56, 0xAE, 0xA2, 0x48, - 0xDB, 0x10, 0x08, 0x51, 0x0D, 0x1C, 0x39, 0x7F, - 0x10, 0x85, 0x66, 0x1E, 0xD3, 0x6E, 0x66, 0x87, - 0xE2, 0xFC, 0xAC, 0x0C, 0xEF, 0x54, 0x65, 0x75, - 0x44, 0x5D, 0x22, 0xCA, 0xA2, 0x74, 0x36, 0x2E, - 0x6C, 0xAC, 0xA3, 0x8F, 0x2C, 0xFC, 0x6D, 0xF4, - 0x56, 0x69, 0x52, 0x8E, 0xD3, 0xED, 0x26, 0xA4, - 0x6C, 0xBF, 0xFA, 0x0F, 0xA4, 0x23, 0xBF, 0x73, - 0x40, 0xFA, 0x06, 0xB9, 0x07, 0x57, 0x9E, 0x41, - 0xE3, 0xCC, 0x5F, 0x9B, 0x22, 0x05, 0x8E, 0x01, - 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x64, 0x30, - 0x62, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x1D, 0x13, - 0x01, 0x01, 0xFF, 0x04, 0x05, 0x30, 0x03, 0x01, - 0x01, 0xFF, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x1D, - 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x05, 0x03, 0x03, - 0x07, 0x06, 0x00, 0x30, 0x1D, 0x06, 0x03, 0x55, - 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x2D, 0x33, - 0x04, 0x1B, 0x27, 0x7F, 0x94, 0x04, 0x7C, 0xC7, - 0xE3, 0x35, 0x4F, 0xE9, 0x25, 0xA4, 0x94, 0xE1, - 0xB7, 0xA1, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, - 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xF9, - 0xA8, 0x86, 0x19, 0x63, 0xB6, 0xA4, 0x14, 0x13, - 0x60, 0x76, 0x0F, 0x01, 0x9A, 0x35, 0x36, 0xEF, - 0xF1, 0xB4, 0xAF, 0x30, 0x0D, 0x06, 0x09, 0x2A, - 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, - 0x05, 0x00, 0x03, 0x82, 0x01, 0x81, 0x00, 0x32, - 0x28, 0xB9, 0x1B, 0x1D, 0xFF, 0x77, 0xFE, 0x7C, - 0xA0, 0x34, 0x72, 0xE5, 0xAD, 0x28, 0x3E, 0xF4, - 0x21, 0x91, 0x4D, 0x1D, 0x29, 0xAE, 0xB5, 0x35, - 0xF8, 0xE3, 0x3B, 0x3F, 0x6E, 0xAB, 0x13, 0x52, - 0x8A, 0x52, 0xC9, 0x13, 0xB8, 0xC6, 0x24, 0xF6, - 0x86, 0xDA, 0xD2, 0xAD, 0x0B, 0xF5, 0xD4, 0xD5, - 0x86, 0xEA, 0x97, 0x6B, 0x6A, 0x41, 0x8E, 0xBC, - 0x92, 0x88, 0x23, 0x2A, 0xCD, 0xF5, 0x40, 0x2E, - 0x91, 0x16, 0x4A, 0x19, 0x00, 0x5A, 0x2E, 0x4C, - 0x9B, 0x75, 0xD6, 0x4C, 0xDB, 0x81, 0x55, 0x8A, - 0x7B, 0x00, 0xA4, 0xDF, 0xF3, 0xAB, 0x03, 0x4F, - 0xD9, 0x91, 0x1A, 0xC0, 0x7C, 0x4D, 0x0F, 0x99, - 0xAF, 0xCD, 0x21, 0x34, 0x70, 0x4C, 0x79, 0x93, - 0xB1, 0x03, 0x9D, 0xBF, 0xF6, 0xF3, 0x47, 0xEC, - 0x48, 0x3E, 0x18, 0xCA, 0xC4, 0xAA, 0xCA, 0xC8, - 0x91, 0x4C, 0x1B, 0x9C, 0x5B, 0xF9, 0x0D, 0x0E, - 0x29, 0x26, 0xDD, 0xF2, 0x40, 0xE9, 0x81, 0x85, - 0x8A, 0xA1, 0xBE, 0x71, 0xDA, 0x3B, 0x0D, 0x62, - 0x01, 0x03, 0xA7, 0xC9, 0xD8, 0x49, 0x14, 0xF8, - 0xE5, 0x21, 0xB0, 0xED, 0xCE, 0xC5, 0x72, 0xE9, - 0xA4, 0x5F, 0x3D, 0xA7, 0x03, 0xAA, 0xF9, 0x37, - 0x06, 0xE7, 0x84, 0x42, 0xEF, 0x34, 0x52, 0xBC, - 0x7F, 0x3B, 0x18, 0xF9, 0x02, 0x4A, 0x1D, 0xA0, - 0x25, 0x27, 0xD0, 0x9C, 0x96, 0x58, 0x8F, 0xD4, - 0xF8, 0xA2, 0x01, 0xC9, 0x76, 0x2D, 0x0A, 0x36, - 0x81, 0xAC, 0xA0, 0x58, 0xD8, 0x83, 0xFA, 0x08, - 0x27, 0xAB, 0x3C, 0xBB, 0x9E, 0xA6, 0xA6, 0xF6, - 0xB8, 0x9E, 0x38, 0xE3, 0x07, 0x96, 0xCD, 0x64, - 0x28, 0x50, 0x05, 0xAD, 0x6C, 0xB6, 0x83, 0xF7, - 0x01, 0x85, 0x37, 0xD2, 0xFB, 0xFE, 0xD2, 0x86, - 0x97, 0xB1, 0xEC, 0xD2, 0xB6, 0x18, 0x08, 0xAE, - 0x8E, 0x05, 0x15, 0xD1, 0x36, 0x47, 0x13, 0x21, - 0x19, 0xB7, 0xAB, 0xA6, 0xE2, 0x02, 0xD2, 0xF6, - 0xFC, 0x14, 0x2A, 0xCF, 0xD1, 0xE1, 0x74, 0xBD, - 0x54, 0xBF, 0xDB, 0x06, 0x57, 0xC0, 0xCB, 0x68, - 0x40, 0x55, 0x37, 0x94, 0x7A, 0x38, 0x91, 0x04, - 0x67, 0x93, 0x26, 0x4A, 0x81, 0xBB, 0xBF, 0x9C, - 0xE0, 0x57, 0x6B, 0x08, 0x1C, 0x95, 0x85, 0xA7, - 0x90, 0x01, 0x23, 0x18, 0xBB, 0xF9, 0x60, 0x6B, - 0xC7, 0x9A, 0x18, 0xBD, 0x73, 0x25, 0xB2, 0x5E, - 0xD8, 0x14, 0x16, 0x23, 0xBE, 0x78, 0x28, 0x36, - 0x03, 0x4F, 0xDA, 0x8A, 0x36, 0xA1, 0xA5, 0x83, - 0x2B, 0x2B, 0xE0, 0x05, 0x63, 0x7B, 0xBC, 0xF5, - 0x63, 0x53, 0x10, 0xEF, 0x64, 0xA7, 0x7E, 0xBC, - 0xD8, 0x49, 0x0C, 0x3A, 0x04, 0x1F, 0x39, 0x0A, - 0xEA, 0xC1, 0xEA, 0x2A, 0x2E, 0xDD, 0x0F, 0x9E, - 0x33, 0x8A, 0x38, 0x83, 0xFF, 0xB1, 0x18, 0x4B, - 0x83, 0xA3, 0x43, 0x5E, 0xFF, 0xC8, 0xAB + 0x30, 0x82, 0x06, 0x53, 0x0A, 0x01, 0x00, 0xA0, 0x82, 0x06, 0x4C, 0x30, + 0x82, 0x06, 0x48, 0x06, 0x09, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, + 0x01, 0x01, 0x04, 0x82, 0x06, 0x39, 0x30, 0x82, 0x06, 0x35, 0x30, 0x81, + 0x85, 0xA1, 0x14, 0x30, 0x12, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x07, 0x73, 0x75, 0x62, 0x43, 0x41, 0x2D, 0x33, 0x18, + 0x0F, 0x32, 0x30, 0x31, 0x37, 0x31, 0x30, 0x31, 0x38, 0x31, 0x32, 0x30, + 0x39, 0x33, 0x30, 0x5A, 0x30, 0x5C, 0x30, 0x5A, 0x30, 0x45, 0x30, 0x09, + 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0x04, 0x14, 0xB2, + 0xE6, 0x5C, 0x8E, 0x6E, 0x83, 0x4B, 0xBD, 0x11, 0xD9, 0x97, 0xFA, 0x36, + 0x93, 0x59, 0x9E, 0xAD, 0x5C, 0x15, 0xC4, 0x04, 0x14, 0x9E, 0x91, 0xEC, + 0x8C, 0xAA, 0x24, 0x5B, 0x22, 0xE0, 0xE8, 0x11, 0xE8, 0xE9, 0xA4, 0x91, + 0xB5, 0x91, 0x26, 0x00, 0xF1, 0x02, 0x0C, 0x57, 0xA3, 0x1D, 0x32, 0x36, + 0xC8, 0x0C, 0xA1, 0xCA, 0xB0, 0xBD, 0xF6, 0x82, 0x00, 0x18, 0x0F, 0x32, + 0x30, 0x31, 0x37, 0x31, 0x30, 0x31, 0x38, 0x31, 0x32, 0x30, 0x39, 0x33, + 0x30, 0x5A, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, + 0x01, 0x01, 0x0D, 0x05, 0x00, 0x03, 0x82, 0x01, 0x81, 0x00, 0x56, 0x64, + 0x2B, 0x10, 0xAA, 0xE7, 0x26, 0x7F, 0xF1, 0x7F, 0x86, 0x97, 0x0E, 0x18, + 0xB4, 0x75, 0x92, 0x65, 0x12, 0x2B, 0x46, 0x9F, 0x3E, 0x96, 0x98, 0xE4, + 0xAB, 0x10, 0xD1, 0x0E, 0xEA, 0x08, 0xE2, 0xA5, 0x01, 0x75, 0xA4, 0x5B, + 0x76, 0xAC, 0x49, 0x2B, 0x9E, 0xF1, 0x4A, 0xF2, 0x79, 0x3A, 0x4E, 0x15, + 0x81, 0xFF, 0x4D, 0xD3, 0x65, 0x8E, 0xAE, 0x4A, 0xBB, 0x33, 0x35, 0x8B, + 0x0F, 0xB6, 0x5D, 0x32, 0xEF, 0xF5, 0xE1, 0x25, 0xBF, 0xBD, 0x52, 0x1D, + 0x99, 0xF2, 0x34, 0xE0, 0xFB, 0x38, 0x34, 0x6C, 0x9A, 0xEF, 0x53, 0xB2, + 0x90, 0xC6, 0xFB, 0x75, 0xA0, 0x8C, 0xBC, 0x6B, 0x8E, 0xD8, 0xDE, 0x33, + 0xE4, 0x6F, 0xF2, 0xAD, 0xF2, 0xA2, 0x4F, 0xC2, 0x58, 0x47, 0xE2, 0x68, + 0x6D, 0x3A, 0x3A, 0xB3, 0x0A, 0x82, 0x3D, 0xA4, 0x85, 0x00, 0x58, 0x3E, + 0x00, 0x35, 0x9D, 0x6B, 0x1F, 0xFF, 0x9F, 0xAE, 0xB0, 0x9A, 0xE2, 0xC7, + 0x0E, 0x9A, 0xB3, 0x7C, 0x52, 0xE9, 0xDA, 0x50, 0x57, 0x35, 0x72, 0x71, + 0x81, 0xA7, 0xC0, 0x40, 0x28, 0xEA, 0x2B, 0xCE, 0x09, 0x47, 0x1D, 0xB1, + 0x80, 0x41, 0x59, 0xF6, 0x5D, 0xD3, 0x3C, 0xEA, 0x11, 0xD8, 0x13, 0xB9, + 0x0F, 0x32, 0x6A, 0x29, 0x72, 0xBE, 0xC1, 0xC3, 0x1B, 0xB5, 0x4C, 0x4D, + 0x0D, 0xA1, 0xD5, 0xF0, 0xC4, 0xEC, 0xC5, 0x5A, 0x93, 0x41, 0x7A, 0x01, + 0x24, 0xB3, 0x7A, 0x71, 0x82, 0xA3, 0xC6, 0x08, 0x42, 0x91, 0x0E, 0x6B, + 0xE7, 0x86, 0x0B, 0xAF, 0xBE, 0xDF, 0x07, 0x5A, 0x8C, 0x35, 0xF8, 0x5F, + 0x7F, 0x2F, 0x60, 0x04, 0xDD, 0x2A, 0xF2, 0x0D, 0xC0, 0x1C, 0x6F, 0xA0, + 0x30, 0x80, 0xA4, 0x35, 0x83, 0xD3, 0xC3, 0xCC, 0x35, 0x46, 0x36, 0xEB, + 0xE9, 0xB1, 0x3C, 0x08, 0x8F, 0xCC, 0x5D, 0xCA, 0xD9, 0xAF, 0x3E, 0xD4, + 0x58, 0xBB, 0x90, 0x5D, 0xEF, 0x01, 0x9C, 0xD9, 0x3E, 0x56, 0x7E, 0xCF, + 0x13, 0xAA, 0x11, 0xC4, 0x22, 0xD2, 0xA0, 0x9F, 0x1B, 0xE9, 0xF0, 0x78, + 0x70, 0x3B, 0xCC, 0x21, 0x7D, 0x6B, 0x46, 0x97, 0x3F, 0x3B, 0x0C, 0x5B, + 0x8F, 0xA8, 0x28, 0x72, 0x4A, 0x41, 0x4D, 0xE6, 0xDD, 0x2E, 0xBD, 0xF1, + 0xA4, 0x1E, 0xA2, 0xA2, 0x94, 0x6E, 0xAD, 0x33, 0xC2, 0x56, 0xD3, 0x29, + 0xCF, 0x75, 0x5E, 0x35, 0x59, 0xEB, 0x07, 0x78, 0x23, 0x0B, 0x20, 0x4E, + 0xEB, 0x61, 0x2B, 0x46, 0x77, 0x0A, 0x9F, 0xA4, 0x57, 0xA8, 0x45, 0x45, + 0x6E, 0x8F, 0xB4, 0xD5, 0x9C, 0xFC, 0x84, 0x78, 0xC3, 0x82, 0xD9, 0xB6, + 0xA7, 0xD5, 0x76, 0xE0, 0x23, 0x09, 0x2B, 0x9A, 0x7C, 0x7C, 0xB5, 0x6D, + 0x84, 0x9D, 0x1F, 0x47, 0x0C, 0x9C, 0xD6, 0x86, 0x2B, 0xDD, 0xF4, 0xFA, + 0x97, 0xE7, 0x72, 0xE7, 0x42, 0x52, 0x74, 0xE8, 0x4D, 0x01, 0xA0, 0x82, + 0x04, 0x15, 0x30, 0x82, 0x04, 0x11, 0x30, 0x82, 0x04, 0x0D, 0x30, 0x82, + 0x02, 0x75, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x0C, 0x57, 0xA3, 0x1D, + 0x32, 0x35, 0xB3, 0x4F, 0xD0, 0xB9, 0xF5, 0xE7, 0x3C, 0x30, 0x0D, 0x06, + 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, + 0x30, 0x0F, 0x31, 0x0D, 0x30, 0x0B, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x04, 0x43, 0x41, 0x2D, 0x33, 0x30, 0x20, 0x17, 0x0D, 0x31, 0x36, 0x30, + 0x35, 0x31, 0x30, 0x30, 0x38, 0x34, 0x38, 0x33, 0x30, 0x5A, 0x18, 0x0F, + 0x39, 0x39, 0x39, 0x39, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x35, 0x39, + 0x35, 0x39, 0x5A, 0x30, 0x12, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x07, 0x73, 0x75, 0x62, 0x43, 0x41, 0x2D, 0x33, 0x30, + 0x82, 0x01, 0xA2, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, + 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x8F, 0x00, 0x30, + 0x82, 0x01, 0x8A, 0x02, 0x82, 0x01, 0x81, 0x00, 0xA0, 0x39, 0xC3, 0x57, + 0xCD, 0x2B, 0x4E, 0x9D, 0x11, 0x68, 0x8B, 0x4E, 0x5A, 0x31, 0x12, 0xDE, + 0x30, 0x1E, 0x39, 0x5F, 0x86, 0xB6, 0xB2, 0xB4, 0x81, 0xBA, 0x5D, 0xD4, + 0x2F, 0x10, 0xD2, 0x1A, 0x32, 0x0F, 0xD0, 0x41, 0x25, 0xFF, 0xF5, 0xF6, + 0x58, 0xB8, 0xA8, 0xA5, 0xEF, 0xF1, 0x34, 0xBF, 0x1B, 0x3C, 0x24, 0x69, + 0x23, 0x5B, 0x12, 0x55, 0x79, 0x7C, 0x1D, 0xBD, 0x5C, 0x2B, 0x7A, 0x96, + 0x34, 0x66, 0xB3, 0x56, 0x60, 0xBB, 0xC5, 0x6D, 0x3B, 0x37, 0x12, 0xF6, + 0xE8, 0x8F, 0x3A, 0x7B, 0x7F, 0xC1, 0x55, 0x19, 0xEA, 0xF2, 0x2A, 0x15, + 0xB6, 0xF3, 0xD0, 0xC0, 0x4A, 0x6F, 0xB8, 0x8F, 0x05, 0xF7, 0xBC, 0x75, + 0xBC, 0xBF, 0xE7, 0xF9, 0xC7, 0xDC, 0x76, 0x43, 0x7B, 0xEC, 0xD4, 0x9C, + 0xAF, 0x90, 0xBD, 0x8C, 0x73, 0x15, 0x8A, 0x84, 0x6F, 0x0B, 0xEA, 0x8A, + 0xCF, 0xD6, 0xD4, 0x07, 0x1E, 0x43, 0x4B, 0x24, 0x95, 0xEB, 0xA3, 0xD1, + 0xE7, 0xEC, 0x06, 0xB0, 0x90, 0xEF, 0x91, 0xFB, 0x26, 0x8D, 0x53, 0xA0, + 0xAA, 0x24, 0xE5, 0x49, 0x64, 0x12, 0xE4, 0x6D, 0xE7, 0x30, 0xCA, 0xB4, + 0x46, 0x2C, 0x6C, 0x73, 0x97, 0x4F, 0xE5, 0x6C, 0xA0, 0x91, 0xB7, 0x61, + 0xF7, 0xEE, 0x39, 0x50, 0x2B, 0x4E, 0x6D, 0xC9, 0xC7, 0x00, 0x12, 0x6B, + 0x3F, 0xE1, 0xAD, 0x2E, 0x21, 0xB4, 0x00, 0xE5, 0x31, 0xEA, 0x83, 0xF3, + 0x3E, 0xD7, 0x99, 0x2F, 0x5D, 0xDE, 0xAD, 0x65, 0xE0, 0xEF, 0x36, 0x2E, + 0xB1, 0x36, 0xAB, 0x8F, 0xDA, 0xD3, 0x71, 0xDB, 0x20, 0x47, 0xF2, 0x26, + 0xD6, 0x62, 0x33, 0x98, 0x3D, 0xA2, 0xEC, 0x68, 0x49, 0xA3, 0x81, 0xA3, + 0xD1, 0x29, 0x37, 0x46, 0xAF, 0x77, 0x27, 0x27, 0x80, 0xF8, 0x0C, 0xB9, + 0x50, 0xF9, 0xAA, 0x72, 0x6F, 0x9D, 0xA9, 0x7D, 0x34, 0x6F, 0x8F, 0x4C, + 0x4D, 0x3B, 0xF8, 0x1A, 0xD3, 0xB9, 0xDE, 0x42, 0xD0, 0x48, 0x25, 0xD8, + 0x14, 0x9F, 0x7A, 0x8D, 0xC3, 0x22, 0x5C, 0xCC, 0xC1, 0x14, 0x90, 0xF5, + 0x44, 0xEB, 0x1D, 0x93, 0x85, 0x94, 0x79, 0xDF, 0xED, 0x24, 0xC1, 0xDF, + 0x7E, 0xDB, 0x43, 0xCF, 0xD8, 0xF7, 0x59, 0xCB, 0x97, 0xF4, 0xCD, 0xA7, + 0xCD, 0x34, 0xF6, 0xC6, 0x56, 0xAE, 0xA2, 0x48, 0xDB, 0x10, 0x08, 0x51, + 0x0D, 0x1C, 0x39, 0x7F, 0x10, 0x85, 0x66, 0x1E, 0xD3, 0x6E, 0x66, 0x87, + 0xE2, 0xFC, 0xAC, 0x0C, 0xEF, 0x54, 0x65, 0x75, 0x44, 0x5D, 0x22, 0xCA, + 0xA2, 0x74, 0x36, 0x2E, 0x6C, 0xAC, 0xA3, 0x8F, 0x2C, 0xFC, 0x6D, 0xF4, + 0x56, 0x69, 0x52, 0x8E, 0xD3, 0xED, 0x26, 0xA4, 0x6C, 0xBF, 0xFA, 0x0F, + 0xA4, 0x23, 0xBF, 0x73, 0x40, 0xFA, 0x06, 0xB9, 0x07, 0x57, 0x9E, 0x41, + 0xE3, 0xCC, 0x5F, 0x9B, 0x22, 0x05, 0x8E, 0x01, 0x02, 0x03, 0x01, 0x00, + 0x01, 0xA3, 0x64, 0x30, 0x62, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x1D, 0x13, + 0x01, 0x01, 0xFF, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xFF, 0x30, 0x0F, + 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x05, 0x03, 0x03, + 0x07, 0x06, 0x00, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, + 0x04, 0x14, 0x2D, 0x33, 0x04, 0x1B, 0x27, 0x7F, 0x94, 0x04, 0x7C, 0xC7, + 0xE3, 0x35, 0x4F, 0xE9, 0x25, 0xA4, 0x94, 0xE1, 0xB7, 0xA1, 0x30, 0x1F, + 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xF9, + 0xA8, 0x86, 0x19, 0x63, 0xB6, 0xA4, 0x14, 0x13, 0x60, 0x76, 0x0F, 0x01, + 0x9A, 0x35, 0x36, 0xEF, 0xF1, 0xB4, 0xAF, 0x30, 0x0D, 0x06, 0x09, 0x2A, + 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x81, 0x00, 0x32, 0x28, 0xB9, 0x1B, 0x1D, 0xFF, 0x77, 0xFE, 0x7C, + 0xA0, 0x34, 0x72, 0xE5, 0xAD, 0x28, 0x3E, 0xF4, 0x21, 0x91, 0x4D, 0x1D, + 0x29, 0xAE, 0xB5, 0x35, 0xF8, 0xE3, 0x3B, 0x3F, 0x6E, 0xAB, 0x13, 0x52, + 0x8A, 0x52, 0xC9, 0x13, 0xB8, 0xC6, 0x24, 0xF6, 0x86, 0xDA, 0xD2, 0xAD, + 0x0B, 0xF5, 0xD4, 0xD5, 0x86, 0xEA, 0x97, 0x6B, 0x6A, 0x41, 0x8E, 0xBC, + 0x92, 0x88, 0x23, 0x2A, 0xCD, 0xF5, 0x40, 0x2E, 0x91, 0x16, 0x4A, 0x19, + 0x00, 0x5A, 0x2E, 0x4C, 0x9B, 0x75, 0xD6, 0x4C, 0xDB, 0x81, 0x55, 0x8A, + 0x7B, 0x00, 0xA4, 0xDF, 0xF3, 0xAB, 0x03, 0x4F, 0xD9, 0x91, 0x1A, 0xC0, + 0x7C, 0x4D, 0x0F, 0x99, 0xAF, 0xCD, 0x21, 0x34, 0x70, 0x4C, 0x79, 0x93, + 0xB1, 0x03, 0x9D, 0xBF, 0xF6, 0xF3, 0x47, 0xEC, 0x48, 0x3E, 0x18, 0xCA, + 0xC4, 0xAA, 0xCA, 0xC8, 0x91, 0x4C, 0x1B, 0x9C, 0x5B, 0xF9, 0x0D, 0x0E, + 0x29, 0x26, 0xDD, 0xF2, 0x40, 0xE9, 0x81, 0x85, 0x8A, 0xA1, 0xBE, 0x71, + 0xDA, 0x3B, 0x0D, 0x62, 0x01, 0x03, 0xA7, 0xC9, 0xD8, 0x49, 0x14, 0xF8, + 0xE5, 0x21, 0xB0, 0xED, 0xCE, 0xC5, 0x72, 0xE9, 0xA4, 0x5F, 0x3D, 0xA7, + 0x03, 0xAA, 0xF9, 0x37, 0x06, 0xE7, 0x84, 0x42, 0xEF, 0x34, 0x52, 0xBC, + 0x7F, 0x3B, 0x18, 0xF9, 0x02, 0x4A, 0x1D, 0xA0, 0x25, 0x27, 0xD0, 0x9C, + 0x96, 0x58, 0x8F, 0xD4, 0xF8, 0xA2, 0x01, 0xC9, 0x76, 0x2D, 0x0A, 0x36, + 0x81, 0xAC, 0xA0, 0x58, 0xD8, 0x83, 0xFA, 0x08, 0x27, 0xAB, 0x3C, 0xBB, + 0x9E, 0xA6, 0xA6, 0xF6, 0xB8, 0x9E, 0x38, 0xE3, 0x07, 0x96, 0xCD, 0x64, + 0x28, 0x50, 0x05, 0xAD, 0x6C, 0xB6, 0x83, 0xF7, 0x01, 0x85, 0x37, 0xD2, + 0xFB, 0xFE, 0xD2, 0x86, 0x97, 0xB1, 0xEC, 0xD2, 0xB6, 0x18, 0x08, 0xAE, + 0x8E, 0x05, 0x15, 0xD1, 0x36, 0x47, 0x13, 0x21, 0x19, 0xB7, 0xAB, 0xA6, + 0xE2, 0x02, 0xD2, 0xF6, 0xFC, 0x14, 0x2A, 0xCF, 0xD1, 0xE1, 0x74, 0xBD, + 0x54, 0xBF, 0xDB, 0x06, 0x57, 0xC0, 0xCB, 0x68, 0x40, 0x55, 0x37, 0x94, + 0x7A, 0x38, 0x91, 0x04, 0x67, 0x93, 0x26, 0x4A, 0x81, 0xBB, 0xBF, 0x9C, + 0xE0, 0x57, 0x6B, 0x08, 0x1C, 0x95, 0x85, 0xA7, 0x90, 0x01, 0x23, 0x18, + 0xBB, 0xF9, 0x60, 0x6B, 0xC7, 0x9A, 0x18, 0xBD, 0x73, 0x25, 0xB2, 0x5E, + 0xD8, 0x14, 0x16, 0x23, 0xBE, 0x78, 0x28, 0x36, 0x03, 0x4F, 0xDA, 0x8A, + 0x36, 0xA1, 0xA5, 0x83, 0x2B, 0x2B, 0xE0, 0x05, 0x63, 0x7B, 0xBC, 0xF5, + 0x63, 0x53, 0x10, 0xEF, 0x64, 0xA7, 0x7E, 0xBC, 0xD8, 0x49, 0x0C, 0x3A, + 0x04, 0x1F, 0x39, 0x0A, 0xEA, 0xC1, 0xEA, 0x2A, 0x2E, 0xDD, 0x0F, 0x9E, + 0x33, 0x8A, 0x38, 0x83, 0xFF, 0xB1, 0x18, 0x4B, 0x83, 0xA3, 0x43, 0x5E, + 0xFF, 0xC8, 0xAB }; const char _ocsp_ca3_localhost_unknown_pem[] = - "-----BEGIN OCSP RESPONSE-----\n" - "MIICNwoBAKCCAjAwggIsBgkrBgEFBQcwAQEEggIdMIICGTCBgqERMA8xDTALBgNV\n" - "BAMTBENBLTMYDzIwMTcxMDE4MTIzODUyWjBcMFowRTAJBgUrDgMCGgUABBS3yg+r\n" - "3G+4sJZ6FayYCg8Z/qQS3gQUHoXtf55x+gidN0hDoBLv5arh44oCDFejHTI1s0/Q\n" - "ufXnPIIAGA8yMDE3MTAxODEyMzg1MlowDQYJKoZIhvcNAQELBQADggGBALMParB9\n" - "K97DlT4FmMdPScoT7oAAsar4XxKLU9+oraht7H+WTAYSpnCxh/ugR17G0jtzTzIw\n" - "nLQFAyR9MDYKp4Om4YqQ7r+43DiIqKVU25WcrVifUbtkR+LbjH+Bk1UHvFE8mCOX\n" - "ZB+cmQyjGap1RX0dnj2Wm48vUwqp71nA8AYcXL575xZ4rb9DDhaoV2h3S0Zlu4IN\n" - "btuDIVsxJ53kqkGjjVB4/R0RtqCXOI2ThMK3SfDWqwzF9tYA763VVXi+g+w3oyv4\n" - "ZtP8QUWOVUY4azpElX1wqoO8znUjxs1AzROLUeLPK8GMLVIZLP361J2kLgcj0Gdq\n" - "GIVH5N54p6bl5OgSUP3EdKbFRZyCVZ2n8Der3Cf9PtfvGV7Ze4Cv/CCN6rJkk54P\n" - "6auP6pEJg0ESGC5fop5HFCyVM+W/ot0A1cxN0+cHYlqB1NQholLqe3psDjJ2EoIK\n" - "LtN5dRLO6z5L74CwwiJ1SeLh8XyJtr/ee9RnFB56XCzO7lyhbHPx/VT6Qw==\n" - "-----END OCSP RESPONSE-----"; + "-----BEGIN OCSP RESPONSE-----\n" + "MIICNwoBAKCCAjAwggIsBgkrBgEFBQcwAQEEggIdMIICGTCBgqERMA8xDTALBgNV\n" + "BAMTBENBLTMYDzIwMTcxMDE4MTIzODUyWjBcMFowRTAJBgUrDgMCGgUABBS3yg+r\n" + "3G+4sJZ6FayYCg8Z/qQS3gQUHoXtf55x+gidN0hDoBLv5arh44oCDFejHTI1s0/Q\n" + "ufXnPIIAGA8yMDE3MTAxODEyMzg1MlowDQYJKoZIhvcNAQELBQADggGBALMParB9\n" + "K97DlT4FmMdPScoT7oAAsar4XxKLU9+oraht7H+WTAYSpnCxh/ugR17G0jtzTzIw\n" + "nLQFAyR9MDYKp4Om4YqQ7r+43DiIqKVU25WcrVifUbtkR+LbjH+Bk1UHvFE8mCOX\n" + "ZB+cmQyjGap1RX0dnj2Wm48vUwqp71nA8AYcXL575xZ4rb9DDhaoV2h3S0Zlu4IN\n" + "btuDIVsxJ53kqkGjjVB4/R0RtqCXOI2ThMK3SfDWqwzF9tYA763VVXi+g+w3oyv4\n" + "ZtP8QUWOVUY4azpElX1wqoO8znUjxs1AzROLUeLPK8GMLVIZLP361J2kLgcj0Gdq\n" + "GIVH5N54p6bl5OgSUP3EdKbFRZyCVZ2n8Der3Cf9PtfvGV7Ze4Cv/CCN6rJkk54P\n" + "6auP6pEJg0ESGC5fop5HFCyVM+W/ot0A1cxN0+cHYlqB1NQholLqe3psDjJ2EoIK\n" + "LtN5dRLO6z5L74CwwiJ1SeLh8XyJtr/ee9RnFB56XCzO7lyhbHPx/VT6Qw==\n" + "-----END OCSP RESPONSE-----"; static gnutls_datum_t ocsp_ca3_localhost_unknown = { (void *)_ocsp_ca3_localhost_unknown, sizeof(_ocsp_ca3_localhost_unknown) @@ -376,78 +285,54 @@ static gnutls_datum_t ocsp_ca3_localhost_unknown_pem = { * RSA-SHA1. */ static const char _ocsp_ca3_localhost_unknown_sha1[] = { - 0x30, 0x82, 0x02, 0x3A, 0x0A, 0x01, 0x00, 0xA0, - 0x82, 0x02, 0x33, 0x30, 0x82, 0x02, 0x2F, 0x06, - 0x09, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, - 0x01, 0x01, 0x04, 0x82, 0x02, 0x20, 0x30, 0x82, - 0x02, 0x1C, 0x30, 0x81, 0x85, 0xA1, 0x14, 0x30, - 0x12, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, - 0x04, 0x03, 0x13, 0x07, 0x73, 0x75, 0x62, 0x43, - 0x41, 0x2D, 0x33, 0x18, 0x0F, 0x32, 0x30, 0x31, - 0x37, 0x31, 0x30, 0x31, 0x38, 0x31, 0x32, 0x32, - 0x32, 0x30, 0x36, 0x5A, 0x30, 0x5C, 0x30, 0x5A, - 0x30, 0x45, 0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E, - 0x03, 0x02, 0x1A, 0x05, 0x00, 0x04, 0x14, 0xB2, - 0xE6, 0x5C, 0x8E, 0x6E, 0x83, 0x4B, 0xBD, 0x11, - 0xD9, 0x97, 0xFA, 0x36, 0x93, 0x59, 0x9E, 0xAD, - 0x5C, 0x15, 0xC4, 0x04, 0x14, 0x9E, 0x91, 0xEC, - 0x8C, 0xAA, 0x24, 0x5B, 0x22, 0xE0, 0xE8, 0x11, - 0xE8, 0xE9, 0xA4, 0x91, 0xB5, 0x91, 0x26, 0x00, - 0xF1, 0x02, 0x0C, 0x57, 0xA3, 0x1D, 0x32, 0x36, - 0xC8, 0x0C, 0xA1, 0xCA, 0xB0, 0xBD, 0xF6, 0x82, - 0x00, 0x18, 0x0F, 0x32, 0x30, 0x31, 0x37, 0x31, - 0x30, 0x31, 0x38, 0x31, 0x32, 0x32, 0x32, 0x30, - 0x36, 0x5A, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, - 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, - 0x00, 0x03, 0x82, 0x01, 0x81, 0x00, 0x29, 0x91, - 0xFA, 0x87, 0x8F, 0x4D, 0xC2, 0x25, 0x67, 0x4F, - 0x2A, 0x39, 0xF9, 0xDA, 0x05, 0x4A, 0x8E, 0xBC, - 0x72, 0xB7, 0x8B, 0xF1, 0x6C, 0x77, 0x5E, 0x2F, - 0x0F, 0xA4, 0xEC, 0x7F, 0xD6, 0x63, 0xEA, 0x39, - 0x17, 0x6F, 0xAA, 0x4B, 0x86, 0x46, 0x0E, 0xB2, - 0xE1, 0x65, 0x1C, 0xEC, 0x97, 0x05, 0x00, 0x4D, - 0xAC, 0xBA, 0xA5, 0xD4, 0x1B, 0xB8, 0x4A, 0x05, - 0x94, 0x6C, 0xC9, 0xE1, 0x41, 0x5B, 0x44, 0x4F, - 0x39, 0x9C, 0xF7, 0xAF, 0x04, 0x31, 0x1A, 0x5B, - 0xF8, 0x5E, 0x42, 0xDA, 0xEA, 0xFF, 0x25, 0x67, - 0x75, 0x3E, 0x46, 0xC4, 0x7D, 0x31, 0x74, 0xBD, - 0x19, 0xFF, 0x11, 0x7F, 0x21, 0x39, 0x4D, 0xE3, - 0x07, 0x2F, 0xF4, 0xF5, 0x6B, 0xE7, 0x10, 0xF8, - 0x6C, 0x57, 0x7B, 0x83, 0x84, 0xCD, 0x3D, 0x61, - 0xFD, 0x91, 0x87, 0x03, 0x03, 0xDD, 0x7A, 0x60, - 0xF9, 0x1D, 0x82, 0xE9, 0xD9, 0x4B, 0xC9, 0xF2, - 0x6F, 0xE5, 0x09, 0xCC, 0xEC, 0x63, 0xD7, 0xC1, - 0xED, 0x54, 0x6D, 0x03, 0xC8, 0xC5, 0x92, 0xBC, - 0x22, 0x11, 0xCD, 0x3A, 0x2E, 0x51, 0xCD, 0x5F, - 0xA5, 0xB5, 0xA3, 0x5C, 0x8D, 0x54, 0x92, 0x85, - 0x6B, 0x92, 0x2A, 0x23, 0x5E, 0xFB, 0x35, 0xFB, - 0x23, 0xDA, 0x17, 0x16, 0x6D, 0xB2, 0xFB, 0xD8, - 0x8D, 0x43, 0x9F, 0x36, 0xE9, 0x5E, 0xA2, 0xCB, - 0xA5, 0x2D, 0xAE, 0xDD, 0x63, 0xFC, 0x53, 0x90, - 0xB5, 0x54, 0x82, 0x7C, 0xBD, 0x08, 0xD7, 0x4E, - 0xEA, 0x11, 0x84, 0x3C, 0x5B, 0x63, 0x06, 0xA5, - 0x2C, 0x8B, 0x09, 0x13, 0xC7, 0x04, 0x5F, 0xAF, - 0x73, 0xB1, 0x89, 0x40, 0x12, 0xEA, 0x9C, 0x56, - 0xC6, 0x08, 0x39, 0xD4, 0xAA, 0x1F, 0xAF, 0x74, - 0x78, 0xCC, 0x84, 0xC2, 0x8A, 0xE8, 0x0B, 0xCD, - 0xD3, 0x2D, 0xCD, 0x98, 0x2E, 0x8D, 0xAB, 0x59, - 0xFC, 0xCF, 0x4C, 0x1A, 0x30, 0xED, 0x8E, 0x3F, - 0xF8, 0xC7, 0xBD, 0xE3, 0x64, 0x94, 0x0C, 0xFC, - 0x24, 0x85, 0x35, 0x0A, 0x0E, 0x65, 0xA7, 0x2C, - 0x0B, 0x80, 0xB9, 0xB0, 0x97, 0xA5, 0x70, 0xE0, - 0x12, 0x86, 0x69, 0x74, 0x22, 0xEA, 0xE3, 0x11, - 0x4B, 0x34, 0xB1, 0xFB, 0x24, 0xEE, 0x00, 0x73, - 0x71, 0x33, 0x74, 0x62, 0x64, 0x10, 0xDD, 0x5A, - 0x3A, 0x10, 0xA3, 0x8E, 0x36, 0x03, 0x0D, 0x17, - 0xE3, 0x72, 0x29, 0xAE, 0x5A, 0xBD, 0x2E, 0xE0, - 0xFD, 0xB1, 0xDF, 0x8F, 0x2C, 0x24, 0xCF, 0xB9, - 0x10, 0x99, 0x68, 0xA2, 0x55, 0x01, 0x1E, 0xFB, - 0x9B, 0x14, 0x4C, 0x1E, 0xB4, 0x59, 0x79, 0xB7, - 0x8F, 0x07, 0x28, 0x3E, 0xB4, 0x2E, 0x8F, 0x91, - 0x51, 0xFD, 0x8F, 0x12, 0x8D, 0xC6, 0x57, 0x7B, - 0x87, 0xEF, 0x9C, 0x8B, 0x90, 0xD3, 0xA5, 0xB0, - 0xBE, 0x4B, 0xFA, 0x33, 0x54, 0x87, 0x81, 0xCF, - 0x96, 0x9A, 0xD3, 0xDC, 0xA9, 0xB6 + 0x30, 0x82, 0x02, 0x3A, 0x0A, 0x01, 0x00, 0xA0, 0x82, 0x02, 0x33, 0x30, + 0x82, 0x02, 0x2F, 0x06, 0x09, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, + 0x01, 0x01, 0x04, 0x82, 0x02, 0x20, 0x30, 0x82, 0x02, 0x1C, 0x30, 0x81, + 0x85, 0xA1, 0x14, 0x30, 0x12, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x07, 0x73, 0x75, 0x62, 0x43, 0x41, 0x2D, 0x33, 0x18, + 0x0F, 0x32, 0x30, 0x31, 0x37, 0x31, 0x30, 0x31, 0x38, 0x31, 0x32, 0x32, + 0x32, 0x30, 0x36, 0x5A, 0x30, 0x5C, 0x30, 0x5A, 0x30, 0x45, 0x30, 0x09, + 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0x04, 0x14, 0xB2, + 0xE6, 0x5C, 0x8E, 0x6E, 0x83, 0x4B, 0xBD, 0x11, 0xD9, 0x97, 0xFA, 0x36, + 0x93, 0x59, 0x9E, 0xAD, 0x5C, 0x15, 0xC4, 0x04, 0x14, 0x9E, 0x91, 0xEC, + 0x8C, 0xAA, 0x24, 0x5B, 0x22, 0xE0, 0xE8, 0x11, 0xE8, 0xE9, 0xA4, 0x91, + 0xB5, 0x91, 0x26, 0x00, 0xF1, 0x02, 0x0C, 0x57, 0xA3, 0x1D, 0x32, 0x36, + 0xC8, 0x0C, 0xA1, 0xCA, 0xB0, 0xBD, 0xF6, 0x82, 0x00, 0x18, 0x0F, 0x32, + 0x30, 0x31, 0x37, 0x31, 0x30, 0x31, 0x38, 0x31, 0x32, 0x32, 0x32, 0x30, + 0x36, 0x5A, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, + 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x81, 0x00, 0x29, 0x91, + 0xFA, 0x87, 0x8F, 0x4D, 0xC2, 0x25, 0x67, 0x4F, 0x2A, 0x39, 0xF9, 0xDA, + 0x05, 0x4A, 0x8E, 0xBC, 0x72, 0xB7, 0x8B, 0xF1, 0x6C, 0x77, 0x5E, 0x2F, + 0x0F, 0xA4, 0xEC, 0x7F, 0xD6, 0x63, 0xEA, 0x39, 0x17, 0x6F, 0xAA, 0x4B, + 0x86, 0x46, 0x0E, 0xB2, 0xE1, 0x65, 0x1C, 0xEC, 0x97, 0x05, 0x00, 0x4D, + 0xAC, 0xBA, 0xA5, 0xD4, 0x1B, 0xB8, 0x4A, 0x05, 0x94, 0x6C, 0xC9, 0xE1, + 0x41, 0x5B, 0x44, 0x4F, 0x39, 0x9C, 0xF7, 0xAF, 0x04, 0x31, 0x1A, 0x5B, + 0xF8, 0x5E, 0x42, 0xDA, 0xEA, 0xFF, 0x25, 0x67, 0x75, 0x3E, 0x46, 0xC4, + 0x7D, 0x31, 0x74, 0xBD, 0x19, 0xFF, 0x11, 0x7F, 0x21, 0x39, 0x4D, 0xE3, + 0x07, 0x2F, 0xF4, 0xF5, 0x6B, 0xE7, 0x10, 0xF8, 0x6C, 0x57, 0x7B, 0x83, + 0x84, 0xCD, 0x3D, 0x61, 0xFD, 0x91, 0x87, 0x03, 0x03, 0xDD, 0x7A, 0x60, + 0xF9, 0x1D, 0x82, 0xE9, 0xD9, 0x4B, 0xC9, 0xF2, 0x6F, 0xE5, 0x09, 0xCC, + 0xEC, 0x63, 0xD7, 0xC1, 0xED, 0x54, 0x6D, 0x03, 0xC8, 0xC5, 0x92, 0xBC, + 0x22, 0x11, 0xCD, 0x3A, 0x2E, 0x51, 0xCD, 0x5F, 0xA5, 0xB5, 0xA3, 0x5C, + 0x8D, 0x54, 0x92, 0x85, 0x6B, 0x92, 0x2A, 0x23, 0x5E, 0xFB, 0x35, 0xFB, + 0x23, 0xDA, 0x17, 0x16, 0x6D, 0xB2, 0xFB, 0xD8, 0x8D, 0x43, 0x9F, 0x36, + 0xE9, 0x5E, 0xA2, 0xCB, 0xA5, 0x2D, 0xAE, 0xDD, 0x63, 0xFC, 0x53, 0x90, + 0xB5, 0x54, 0x82, 0x7C, 0xBD, 0x08, 0xD7, 0x4E, 0xEA, 0x11, 0x84, 0x3C, + 0x5B, 0x63, 0x06, 0xA5, 0x2C, 0x8B, 0x09, 0x13, 0xC7, 0x04, 0x5F, 0xAF, + 0x73, 0xB1, 0x89, 0x40, 0x12, 0xEA, 0x9C, 0x56, 0xC6, 0x08, 0x39, 0xD4, + 0xAA, 0x1F, 0xAF, 0x74, 0x78, 0xCC, 0x84, 0xC2, 0x8A, 0xE8, 0x0B, 0xCD, + 0xD3, 0x2D, 0xCD, 0x98, 0x2E, 0x8D, 0xAB, 0x59, 0xFC, 0xCF, 0x4C, 0x1A, + 0x30, 0xED, 0x8E, 0x3F, 0xF8, 0xC7, 0xBD, 0xE3, 0x64, 0x94, 0x0C, 0xFC, + 0x24, 0x85, 0x35, 0x0A, 0x0E, 0x65, 0xA7, 0x2C, 0x0B, 0x80, 0xB9, 0xB0, + 0x97, 0xA5, 0x70, 0xE0, 0x12, 0x86, 0x69, 0x74, 0x22, 0xEA, 0xE3, 0x11, + 0x4B, 0x34, 0xB1, 0xFB, 0x24, 0xEE, 0x00, 0x73, 0x71, 0x33, 0x74, 0x62, + 0x64, 0x10, 0xDD, 0x5A, 0x3A, 0x10, 0xA3, 0x8E, 0x36, 0x03, 0x0D, 0x17, + 0xE3, 0x72, 0x29, 0xAE, 0x5A, 0xBD, 0x2E, 0xE0, 0xFD, 0xB1, 0xDF, 0x8F, + 0x2C, 0x24, 0xCF, 0xB9, 0x10, 0x99, 0x68, 0xA2, 0x55, 0x01, 0x1E, 0xFB, + 0x9B, 0x14, 0x4C, 0x1E, 0xB4, 0x59, 0x79, 0xB7, 0x8F, 0x07, 0x28, 0x3E, + 0xB4, 0x2E, 0x8F, 0x91, 0x51, 0xFD, 0x8F, 0x12, 0x8D, 0xC6, 0x57, 0x7B, + 0x87, 0xEF, 0x9C, 0x8B, 0x90, 0xD3, 0xA5, 0xB0, 0xBE, 0x4B, 0xFA, 0x33, + 0x54, 0x87, 0x81, 0xCF, 0x96, 0x9A, 0xD3, 0xDC, 0xA9, 0xB6 }; static gnutls_datum_t ocsp_ca3_localhost_unknown_sha1 = { @@ -460,121 +345,96 @@ static gnutls_datum_t ocsp_ca3_localhost_unknown_sha1 = { * RSA-SHA256. */ static const char _ocsp_subca3_unknown[] = { - 0x30, 0x82, 0x02, 0x37, 0x0A, 0x01, 0x00, 0xA0, - 0x82, 0x02, 0x30, 0x30, 0x82, 0x02, 0x2C, 0x06, - 0x09, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, - 0x01, 0x01, 0x04, 0x82, 0x02, 0x1D, 0x30, 0x82, - 0x02, 0x19, 0x30, 0x81, 0x82, 0xA1, 0x11, 0x30, - 0x0F, 0x31, 0x0D, 0x30, 0x0B, 0x06, 0x03, 0x55, - 0x04, 0x03, 0x13, 0x04, 0x43, 0x41, 0x2D, 0x33, - 0x18, 0x0F, 0x32, 0x30, 0x31, 0x37, 0x31, 0x30, - 0x31, 0x38, 0x31, 0x32, 0x33, 0x38, 0x35, 0x32, - 0x5A, 0x30, 0x5C, 0x30, 0x5A, 0x30, 0x45, 0x30, - 0x09, 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, - 0x05, 0x00, 0x04, 0x14, 0xB7, 0xCA, 0x0F, 0xAB, - 0xDC, 0x6F, 0xB8, 0xB0, 0x96, 0x7A, 0x15, 0xAC, - 0x98, 0x0A, 0x0F, 0x19, 0xFE, 0xA4, 0x12, 0xDE, - 0x04, 0x14, 0x1E, 0x85, 0xED, 0x7F, 0x9E, 0x71, - 0xFA, 0x08, 0x9D, 0x37, 0x48, 0x43, 0xA0, 0x12, - 0xEF, 0xE5, 0xAA, 0xE1, 0xE3, 0x8A, 0x02, 0x0C, - 0x57, 0xA3, 0x1D, 0x32, 0x35, 0xB3, 0x4F, 0xD0, - 0xB9, 0xF5, 0xE7, 0x3C, 0x82, 0x00, 0x18, 0x0F, - 0x32, 0x30, 0x31, 0x37, 0x31, 0x30, 0x31, 0x38, - 0x31, 0x32, 0x33, 0x38, 0x35, 0x32, 0x5A, 0x30, - 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, - 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x03, 0x82, - 0x01, 0x81, 0x00, 0xB3, 0x0F, 0x6A, 0xB0, 0x7D, - 0x2B, 0xDE, 0xC3, 0x95, 0x3E, 0x05, 0x98, 0xC7, - 0x4F, 0x49, 0xCA, 0x13, 0xEE, 0x80, 0x00, 0xB1, - 0xAA, 0xF8, 0x5F, 0x12, 0x8B, 0x53, 0xDF, 0xA8, - 0xAD, 0xA8, 0x6D, 0xEC, 0x7F, 0x96, 0x4C, 0x06, - 0x12, 0xA6, 0x70, 0xB1, 0x87, 0xFB, 0xA0, 0x47, - 0x5E, 0xC6, 0xD2, 0x3B, 0x73, 0x4F, 0x32, 0x30, - 0x9C, 0xB4, 0x05, 0x03, 0x24, 0x7D, 0x30, 0x36, - 0x0A, 0xA7, 0x83, 0xA6, 0xE1, 0x8A, 0x90, 0xEE, - 0xBF, 0xB8, 0xDC, 0x38, 0x88, 0xA8, 0xA5, 0x54, - 0xDB, 0x95, 0x9C, 0xAD, 0x58, 0x9F, 0x51, 0xBB, - 0x64, 0x47, 0xE2, 0xDB, 0x8C, 0x7F, 0x81, 0x93, - 0x55, 0x07, 0xBC, 0x51, 0x3C, 0x98, 0x23, 0x97, - 0x64, 0x1F, 0x9C, 0x99, 0x0C, 0xA3, 0x19, 0xAA, - 0x75, 0x45, 0x7D, 0x1D, 0x9E, 0x3D, 0x96, 0x9B, - 0x8F, 0x2F, 0x53, 0x0A, 0xA9, 0xEF, 0x59, 0xC0, - 0xF0, 0x06, 0x1C, 0x5C, 0xBE, 0x7B, 0xE7, 0x16, - 0x78, 0xAD, 0xBF, 0x43, 0x0E, 0x16, 0xA8, 0x57, - 0x68, 0x77, 0x4B, 0x46, 0x65, 0xBB, 0x82, 0x0D, - 0x6E, 0xDB, 0x83, 0x21, 0x5B, 0x31, 0x27, 0x9D, - 0xE4, 0xAA, 0x41, 0xA3, 0x8D, 0x50, 0x78, 0xFD, - 0x1D, 0x11, 0xB6, 0xA0, 0x97, 0x38, 0x8D, 0x93, - 0x84, 0xC2, 0xB7, 0x49, 0xF0, 0xD6, 0xAB, 0x0C, - 0xC5, 0xF6, 0xD6, 0x00, 0xEF, 0xAD, 0xD5, 0x55, - 0x78, 0xBE, 0x83, 0xEC, 0x37, 0xA3, 0x2B, 0xF8, - 0x66, 0xD3, 0xFC, 0x41, 0x45, 0x8E, 0x55, 0x46, - 0x38, 0x6B, 0x3A, 0x44, 0x95, 0x7D, 0x70, 0xAA, - 0x83, 0xBC, 0xCE, 0x75, 0x23, 0xC6, 0xCD, 0x40, - 0xCD, 0x13, 0x8B, 0x51, 0xE2, 0xCF, 0x2B, 0xC1, - 0x8C, 0x2D, 0x52, 0x19, 0x2C, 0xFD, 0xFA, 0xD4, - 0x9D, 0xA4, 0x2E, 0x07, 0x23, 0xD0, 0x67, 0x6A, - 0x18, 0x85, 0x47, 0xE4, 0xDE, 0x78, 0xA7, 0xA6, - 0xE5, 0xE4, 0xE8, 0x12, 0x50, 0xFD, 0xC4, 0x74, - 0xA6, 0xC5, 0x45, 0x9C, 0x82, 0x55, 0x9D, 0xA7, - 0xF0, 0x37, 0xAB, 0xDC, 0x27, 0xFD, 0x3E, 0xD7, - 0xEF, 0x19, 0x5E, 0xD9, 0x7B, 0x80, 0xAF, 0xFC, - 0x20, 0x8D, 0xEA, 0xB2, 0x64, 0x93, 0x9E, 0x0F, - 0xE9, 0xAB, 0x8F, 0xEA, 0x91, 0x09, 0x83, 0x41, - 0x12, 0x18, 0x2E, 0x5F, 0xA2, 0x9E, 0x47, 0x14, - 0x2C, 0x95, 0x33, 0xE5, 0xBF, 0xA2, 0xDD, 0x00, - 0xD5, 0xCC, 0x4D, 0xD3, 0xE7, 0x07, 0x62, 0x5A, - 0x81, 0xD4, 0xD4, 0x21, 0xA2, 0x52, 0xEA, 0x7B, - 0x7A, 0x6C, 0x0E, 0x32, 0x76, 0x12, 0x82, 0x0A, - 0x2E, 0xD3, 0x79, 0x75, 0x12, 0xCE, 0xEB, 0x3E, - 0x4B, 0xEF, 0x80, 0xB0, 0xC2, 0x22, 0x75, 0x49, - 0xE2, 0xE1, 0xF1, 0x7C, 0x89, 0xB6, 0xBF, 0xDE, - 0x7B, 0xD4, 0x67, 0x14, 0x1E, 0x7A, 0x5C, 0x2C, - 0xCE, 0xEE, 0x5C, 0xA1, 0x6C, 0x73, 0xF1, 0xFD, - 0x54, 0xFA, 0x43 + 0x30, 0x82, 0x02, 0x37, 0x0A, 0x01, 0x00, 0xA0, 0x82, 0x02, 0x30, 0x30, + 0x82, 0x02, 0x2C, 0x06, 0x09, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, + 0x01, 0x01, 0x04, 0x82, 0x02, 0x1D, 0x30, 0x82, 0x02, 0x19, 0x30, 0x81, + 0x82, 0xA1, 0x11, 0x30, 0x0F, 0x31, 0x0D, 0x30, 0x0B, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x04, 0x43, 0x41, 0x2D, 0x33, 0x18, 0x0F, 0x32, 0x30, + 0x31, 0x37, 0x31, 0x30, 0x31, 0x38, 0x31, 0x32, 0x33, 0x38, 0x35, 0x32, + 0x5A, 0x30, 0x5C, 0x30, 0x5A, 0x30, 0x45, 0x30, 0x09, 0x06, 0x05, 0x2B, + 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0x04, 0x14, 0xB7, 0xCA, 0x0F, 0xAB, + 0xDC, 0x6F, 0xB8, 0xB0, 0x96, 0x7A, 0x15, 0xAC, 0x98, 0x0A, 0x0F, 0x19, + 0xFE, 0xA4, 0x12, 0xDE, 0x04, 0x14, 0x1E, 0x85, 0xED, 0x7F, 0x9E, 0x71, + 0xFA, 0x08, 0x9D, 0x37, 0x48, 0x43, 0xA0, 0x12, 0xEF, 0xE5, 0xAA, 0xE1, + 0xE3, 0x8A, 0x02, 0x0C, 0x57, 0xA3, 0x1D, 0x32, 0x35, 0xB3, 0x4F, 0xD0, + 0xB9, 0xF5, 0xE7, 0x3C, 0x82, 0x00, 0x18, 0x0F, 0x32, 0x30, 0x31, 0x37, + 0x31, 0x30, 0x31, 0x38, 0x31, 0x32, 0x33, 0x38, 0x35, 0x32, 0x5A, 0x30, + 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x81, 0x00, 0xB3, 0x0F, 0x6A, 0xB0, 0x7D, + 0x2B, 0xDE, 0xC3, 0x95, 0x3E, 0x05, 0x98, 0xC7, 0x4F, 0x49, 0xCA, 0x13, + 0xEE, 0x80, 0x00, 0xB1, 0xAA, 0xF8, 0x5F, 0x12, 0x8B, 0x53, 0xDF, 0xA8, + 0xAD, 0xA8, 0x6D, 0xEC, 0x7F, 0x96, 0x4C, 0x06, 0x12, 0xA6, 0x70, 0xB1, + 0x87, 0xFB, 0xA0, 0x47, 0x5E, 0xC6, 0xD2, 0x3B, 0x73, 0x4F, 0x32, 0x30, + 0x9C, 0xB4, 0x05, 0x03, 0x24, 0x7D, 0x30, 0x36, 0x0A, 0xA7, 0x83, 0xA6, + 0xE1, 0x8A, 0x90, 0xEE, 0xBF, 0xB8, 0xDC, 0x38, 0x88, 0xA8, 0xA5, 0x54, + 0xDB, 0x95, 0x9C, 0xAD, 0x58, 0x9F, 0x51, 0xBB, 0x64, 0x47, 0xE2, 0xDB, + 0x8C, 0x7F, 0x81, 0x93, 0x55, 0x07, 0xBC, 0x51, 0x3C, 0x98, 0x23, 0x97, + 0x64, 0x1F, 0x9C, 0x99, 0x0C, 0xA3, 0x19, 0xAA, 0x75, 0x45, 0x7D, 0x1D, + 0x9E, 0x3D, 0x96, 0x9B, 0x8F, 0x2F, 0x53, 0x0A, 0xA9, 0xEF, 0x59, 0xC0, + 0xF0, 0x06, 0x1C, 0x5C, 0xBE, 0x7B, 0xE7, 0x16, 0x78, 0xAD, 0xBF, 0x43, + 0x0E, 0x16, 0xA8, 0x57, 0x68, 0x77, 0x4B, 0x46, 0x65, 0xBB, 0x82, 0x0D, + 0x6E, 0xDB, 0x83, 0x21, 0x5B, 0x31, 0x27, 0x9D, 0xE4, 0xAA, 0x41, 0xA3, + 0x8D, 0x50, 0x78, 0xFD, 0x1D, 0x11, 0xB6, 0xA0, 0x97, 0x38, 0x8D, 0x93, + 0x84, 0xC2, 0xB7, 0x49, 0xF0, 0xD6, 0xAB, 0x0C, 0xC5, 0xF6, 0xD6, 0x00, + 0xEF, 0xAD, 0xD5, 0x55, 0x78, 0xBE, 0x83, 0xEC, 0x37, 0xA3, 0x2B, 0xF8, + 0x66, 0xD3, 0xFC, 0x41, 0x45, 0x8E, 0x55, 0x46, 0x38, 0x6B, 0x3A, 0x44, + 0x95, 0x7D, 0x70, 0xAA, 0x83, 0xBC, 0xCE, 0x75, 0x23, 0xC6, 0xCD, 0x40, + 0xCD, 0x13, 0x8B, 0x51, 0xE2, 0xCF, 0x2B, 0xC1, 0x8C, 0x2D, 0x52, 0x19, + 0x2C, 0xFD, 0xFA, 0xD4, 0x9D, 0xA4, 0x2E, 0x07, 0x23, 0xD0, 0x67, 0x6A, + 0x18, 0x85, 0x47, 0xE4, 0xDE, 0x78, 0xA7, 0xA6, 0xE5, 0xE4, 0xE8, 0x12, + 0x50, 0xFD, 0xC4, 0x74, 0xA6, 0xC5, 0x45, 0x9C, 0x82, 0x55, 0x9D, 0xA7, + 0xF0, 0x37, 0xAB, 0xDC, 0x27, 0xFD, 0x3E, 0xD7, 0xEF, 0x19, 0x5E, 0xD9, + 0x7B, 0x80, 0xAF, 0xFC, 0x20, 0x8D, 0xEA, 0xB2, 0x64, 0x93, 0x9E, 0x0F, + 0xE9, 0xAB, 0x8F, 0xEA, 0x91, 0x09, 0x83, 0x41, 0x12, 0x18, 0x2E, 0x5F, + 0xA2, 0x9E, 0x47, 0x14, 0x2C, 0x95, 0x33, 0xE5, 0xBF, 0xA2, 0xDD, 0x00, + 0xD5, 0xCC, 0x4D, 0xD3, 0xE7, 0x07, 0x62, 0x5A, 0x81, 0xD4, 0xD4, 0x21, + 0xA2, 0x52, 0xEA, 0x7B, 0x7A, 0x6C, 0x0E, 0x32, 0x76, 0x12, 0x82, 0x0A, + 0x2E, 0xD3, 0x79, 0x75, 0x12, 0xCE, 0xEB, 0x3E, 0x4B, 0xEF, 0x80, 0xB0, + 0xC2, 0x22, 0x75, 0x49, 0xE2, 0xE1, 0xF1, 0x7C, 0x89, 0xB6, 0xBF, 0xDE, + 0x7B, 0xD4, 0x67, 0x14, 0x1E, 0x7A, 0x5C, 0x2C, 0xCE, 0xEE, 0x5C, 0xA1, + 0x6C, 0x73, 0xF1, 0xFD, 0x54, 0xFA, 0x43 }; const char _ocsp_subca3_unknown_pem[] = - "-----BEGIN OCSP RESPONSE-----\n" - "MIIGUwoBAKCCBkwwggZIBgkrBgEFBQcwAQEEggY5MIIGNTCBhaEUMBIxEDAOBgNV\n" - "BAMTB3N1YkNBLTMYDzIwMTcxMDE4MTIwOTMwWjBcMFowRTAJBgUrDgMCGgUABBSy\n" - "5lyOboNLvRHZl/o2k1merVwVxAQUnpHsjKokWyLg6BHo6aSRtZEmAPECDFejHTI2\n" - "yAyhyrC99oIAGA8yMDE3MTAxODEyMDkzMFowDQYJKoZIhvcNAQENBQADggGBAFZk\n" - "KxCq5yZ/8X+Glw4YtHWSZRIrRp8+lpjkqxDRDuoI4qUBdaRbdqxJK57xSvJ5Ok4V\n" - "gf9N02WOrkq7MzWLD7ZdMu/14SW/vVIdmfI04Ps4NGya71OykMb7daCMvGuO2N4z\n" - "5G/yrfKiT8JYR+JobTo6swqCPaSFAFg+ADWdax//n66wmuLHDpqzfFLp2lBXNXJx\n" - "gafAQCjqK84JRx2xgEFZ9l3TPOoR2BO5DzJqKXK+wcMbtUxNDaHV8MTsxVqTQXoB\n" - "JLN6cYKjxghCkQ5r54YLr77fB1qMNfhffy9gBN0q8g3AHG+gMICkNYPTw8w1Rjbr\n" - "6bE8CI/MXcrZrz7UWLuQXe8BnNk+Vn7PE6oRxCLSoJ8b6fB4cDvMIX1rRpc/Owxb\n" - "j6gockpBTebdLr3xpB6iopRurTPCVtMpz3VeNVnrB3gjCyBO62ErRncKn6RXqEVF\n" - "bo+01Zz8hHjDgtm2p9V24CMJK5p8fLVthJ0fRwyc1oYr3fT6l+dy50JSdOhNAaCC\n" - "BBUwggQRMIIEDTCCAnWgAwIBAgIMV6MdMjWzT9C59ec8MA0GCSqGSIb3DQEBCwUA\n" - "MA8xDTALBgNVBAMTBENBLTMwIBcNMTYwNTEwMDg0ODMwWhgPOTk5OTEyMzEyMzU5\n" - "NTlaMBIxEDAOBgNVBAMTB3N1YkNBLTMwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAw\n" - "ggGKAoIBgQCgOcNXzStOnRFoi05aMRLeMB45X4a2srSBul3ULxDSGjIP0EEl//X2\n" - "WLiope/xNL8bPCRpI1sSVXl8Hb1cK3qWNGazVmC7xW07NxL26I86e3/BVRnq8ioV\n" - "tvPQwEpvuI8F97x1vL/n+cfcdkN77NScr5C9jHMVioRvC+qKz9bUBx5DSySV66PR\n" - "5+wGsJDvkfsmjVOgqiTlSWQS5G3nMMq0Rixsc5dP5Wygkbdh9+45UCtObcnHABJr\n" - "P+GtLiG0AOUx6oPzPteZL13erWXg7zYusTarj9rTcdsgR/Im1mIzmD2i7GhJo4Gj\n" - "0Sk3Rq93JyeA+Ay5UPmqcm+dqX00b49MTTv4GtO53kLQSCXYFJ96jcMiXMzBFJD1\n" - "ROsdk4WUed/tJMHffttDz9j3WcuX9M2nzTT2xlauokjbEAhRDRw5fxCFZh7TbmaH\n" - "4vysDO9UZXVEXSLKonQ2Lmyso48s/G30VmlSjtPtJqRsv/oPpCO/c0D6BrkHV55B\n" - "48xfmyIFjgECAwEAAaNkMGIwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMD\n" - "BwYAMB0GA1UdDgQWBBQtMwQbJ3+UBHzH4zVP6SWklOG3oTAfBgNVHSMEGDAWgBT5\n" - "qIYZY7akFBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAMii5Gx3/d/58\n" - "oDRy5a0oPvQhkU0dKa61NfjjOz9uqxNSilLJE7jGJPaG2tKtC/XU1Ybql2tqQY68\n" - "kogjKs31QC6RFkoZAFouTJt11kzbgVWKewCk3/OrA0/ZkRrAfE0Pma/NITRwTHmT\n" - "sQOdv/bzR+xIPhjKxKrKyJFMG5xb+Q0OKSbd8kDpgYWKob5x2jsNYgEDp8nYSRT4\n" - "5SGw7c7FcumkXz2nA6r5NwbnhELvNFK8fzsY+QJKHaAlJ9CclliP1PiiAcl2LQo2\n" - "gaygWNiD+ggnqzy7nqam9rieOOMHls1kKFAFrWy2g/cBhTfS+/7Shpex7NK2GAiu\n" - "jgUV0TZHEyEZt6um4gLS9vwUKs/R4XS9VL/bBlfAy2hAVTeUejiRBGeTJkqBu7+c\n" - "4FdrCByVhaeQASMYu/lga8eaGL1zJbJe2BQWI754KDYDT9qKNqGlgysr4AVje7z1\n" - "Y1MQ72SnfrzYSQw6BB85CurB6iou3Q+eM4o4g/+xGEuDo0Ne/8ir\n" - "-----END OCSP RESPONSE-----\n"; + "-----BEGIN OCSP RESPONSE-----\n" + "MIIGUwoBAKCCBkwwggZIBgkrBgEFBQcwAQEEggY5MIIGNTCBhaEUMBIxEDAOBgNV\n" + "BAMTB3N1YkNBLTMYDzIwMTcxMDE4MTIwOTMwWjBcMFowRTAJBgUrDgMCGgUABBSy\n" + "5lyOboNLvRHZl/o2k1merVwVxAQUnpHsjKokWyLg6BHo6aSRtZEmAPECDFejHTI2\n" + "yAyhyrC99oIAGA8yMDE3MTAxODEyMDkzMFowDQYJKoZIhvcNAQENBQADggGBAFZk\n" + "KxCq5yZ/8X+Glw4YtHWSZRIrRp8+lpjkqxDRDuoI4qUBdaRbdqxJK57xSvJ5Ok4V\n" + "gf9N02WOrkq7MzWLD7ZdMu/14SW/vVIdmfI04Ps4NGya71OykMb7daCMvGuO2N4z\n" + "5G/yrfKiT8JYR+JobTo6swqCPaSFAFg+ADWdax//n66wmuLHDpqzfFLp2lBXNXJx\n" + "gafAQCjqK84JRx2xgEFZ9l3TPOoR2BO5DzJqKXK+wcMbtUxNDaHV8MTsxVqTQXoB\n" + "JLN6cYKjxghCkQ5r54YLr77fB1qMNfhffy9gBN0q8g3AHG+gMICkNYPTw8w1Rjbr\n" + "6bE8CI/MXcrZrz7UWLuQXe8BnNk+Vn7PE6oRxCLSoJ8b6fB4cDvMIX1rRpc/Owxb\n" + "j6gockpBTebdLr3xpB6iopRurTPCVtMpz3VeNVnrB3gjCyBO62ErRncKn6RXqEVF\n" + "bo+01Zz8hHjDgtm2p9V24CMJK5p8fLVthJ0fRwyc1oYr3fT6l+dy50JSdOhNAaCC\n" + "BBUwggQRMIIEDTCCAnWgAwIBAgIMV6MdMjWzT9C59ec8MA0GCSqGSIb3DQEBCwUA\n" + "MA8xDTALBgNVBAMTBENBLTMwIBcNMTYwNTEwMDg0ODMwWhgPOTk5OTEyMzEyMzU5\n" + "NTlaMBIxEDAOBgNVBAMTB3N1YkNBLTMwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAw\n" + "ggGKAoIBgQCgOcNXzStOnRFoi05aMRLeMB45X4a2srSBul3ULxDSGjIP0EEl//X2\n" + "WLiope/xNL8bPCRpI1sSVXl8Hb1cK3qWNGazVmC7xW07NxL26I86e3/BVRnq8ioV\n" + "tvPQwEpvuI8F97x1vL/n+cfcdkN77NScr5C9jHMVioRvC+qKz9bUBx5DSySV66PR\n" + "5+wGsJDvkfsmjVOgqiTlSWQS5G3nMMq0Rixsc5dP5Wygkbdh9+45UCtObcnHABJr\n" + "P+GtLiG0AOUx6oPzPteZL13erWXg7zYusTarj9rTcdsgR/Im1mIzmD2i7GhJo4Gj\n" + "0Sk3Rq93JyeA+Ay5UPmqcm+dqX00b49MTTv4GtO53kLQSCXYFJ96jcMiXMzBFJD1\n" + "ROsdk4WUed/tJMHffttDz9j3WcuX9M2nzTT2xlauokjbEAhRDRw5fxCFZh7TbmaH\n" + "4vysDO9UZXVEXSLKonQ2Lmyso48s/G30VmlSjtPtJqRsv/oPpCO/c0D6BrkHV55B\n" + "48xfmyIFjgECAwEAAaNkMGIwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMD\n" + "BwYAMB0GA1UdDgQWBBQtMwQbJ3+UBHzH4zVP6SWklOG3oTAfBgNVHSMEGDAWgBT5\n" + "qIYZY7akFBNgdg8BmjU27/G0rzANBgkqhkiG9w0BAQsFAAOCAYEAMii5Gx3/d/58\n" + "oDRy5a0oPvQhkU0dKa61NfjjOz9uqxNSilLJE7jGJPaG2tKtC/XU1Ybql2tqQY68\n" + "kogjKs31QC6RFkoZAFouTJt11kzbgVWKewCk3/OrA0/ZkRrAfE0Pma/NITRwTHmT\n" + "sQOdv/bzR+xIPhjKxKrKyJFMG5xb+Q0OKSbd8kDpgYWKob5x2jsNYgEDp8nYSRT4\n" + "5SGw7c7FcumkXz2nA6r5NwbnhELvNFK8fzsY+QJKHaAlJ9CclliP1PiiAcl2LQo2\n" + "gaygWNiD+ggnqzy7nqam9rieOOMHls1kKFAFrWy2g/cBhTfS+/7Shpex7NK2GAiu\n" + "jgUV0TZHEyEZt6um4gLS9vwUKs/R4XS9VL/bBlfAy2hAVTeUejiRBGeTJkqBu7+c\n" + "4FdrCByVhaeQASMYu/lga8eaGL1zJbJe2BQWI754KDYDT9qKNqGlgysr4AVje7z1\n" + "Y1MQ72SnfrzYSQw6BB85CurB6iou3Q+eM4o4g/+xGEuDo0Ne/8ir\n" + "-----END OCSP RESPONSE-----\n"; -static gnutls_datum_t ocsp_subca3_unknown = { - (void *)_ocsp_subca3_unknown, sizeof(_ocsp_subca3_unknown) -}; +static gnutls_datum_t ocsp_subca3_unknown = { (void *)_ocsp_subca3_unknown, + sizeof(_ocsp_subca3_unknown) }; static gnutls_datum_t ocsp_subca3_unknown_pem = { (void *)_ocsp_subca3_unknown_pem, sizeof(_ocsp_subca3_unknown_pem) - 1 @@ -586,90 +446,90 @@ static gnutls_datum_t ocsp_subca3_unknown_pem = { */ const char _ocsp_cli_ca3_good_pem[] = - "-----BEGIN OCSP RESPONSE-----" - "MIIGPQoBAKCCBjYwggYyBgkrBgEFBQcwAQEEggYjMIIGHzCBgqERMA8xDTALBgNV" - "BAMTBENBLTMYDzIwMTkwOTIwMjAwMjMxWjBcMFowRTAJBgUrDgMCGgUABBSy5lyO" - "boNLvRHZl/o2k1merVwVxAQUnpHsjKokWyLg6BHo6aSRtZEmAPECDFejHTI2Wi75" - "obBaUoAAGA8yMDE5MDkyMDIwMDIzMVowDQYJKoZIhvcNAQELBQADggGBAC80EWal" - "PkJ29i/sZsO49hRolZXCMb1bjI0yxwhoH2Hk8Z0L41N0WFRphPqrDr8Dm3uRMcdx" - "n3xre+bxM0WL44mUMxptdYUcAwfb1M2gSQVhRvhvIfiMQZlkMYle4RPdVQN9nxmC" - "WbZD0WJmXQuYpFWYDVQkcL6f5Tlex5a8M/v/ihFBecs3wfstD1Bu4mD7nA8O/tGa" - "u0JQXxHnIM7FBOm73HccoxE5in307WEJtK1yTiUjwjlvl05hdWIzdydRToB6dNLL" - "MtgoFkKIX4aF6fkv1We4zooFdzlQanGdompaSDRGgMEONMZsQdWAs6Nmk+98f6cR" - "V426fFq3i6MLctLbwB5cOvvKbf9+P14KMD+bzcglupWqgJhNAmQlWksjWgMjfcCV" - "w4xATkcHnbMLlQ6ikORcXdkAbbhx8O0jJG1MdiUxErPOkOmKz2Nq14OYVYZII0t/" - "tbzuVGrYtNde4OM2mt9KSOY9rqX1wgKWOUPQW/FzOQvlAaiIwSQtrha/JaCCBAIw" - "ggP+MIID+jCCAmKgAwIBAgIIVzGgXgSsTYwwDQYJKoZIhvcNAQELBQAwDzENMAsG" - "A1UEAxMEQ0EtMzAgFw0xNjA1MTAwODQ4MzBaGA85OTk5MTIzMTIzNTk1OVowDzEN" - "MAsGA1UEAxMEQ0EtMzCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBALbd" - "xniG+2wP/ONeZfvR7AJakVo5deFKIHVTiiBWwhg+HSjd4nfDa+vyTt/wIdldP1Pr" - "iD1Rigc8z68+RxPpGfAc197pKlKpO08I0L1RDKnjBWr4fGdCzE6uZ/ZsKVifoIZp" - "dC8M2IYpAIMajEtnH53XZ1hTEviXTsneuiCTtap73OeSkL71SrIMkgBmAX17gfX3" - "SxFjQUzOs6QMMOa3+8GW7RI+E/SyS1QkOO860dj9XYgOnTL20ibGcWF2XmTiQASI" - "+KmHvYJCNJF/8pvmyJRyBHGZO830aBY0+DcS2bLKcyMiWfOJw7WnpaO7zSEC5WFg" - "o4jdqroUBQdjQNCSSdrt1yYrAl1Sj2PMxYFX4H545Pr2sMpwC9AnPk9+uucT1Inj" - "9615qbuXgFwhkgpK5pnPjzKaHp7ESlJj4/dIPTmhlt5BV+CLh7tSLzVLrddGU+os" - "8JinT42radJ5V51Hn0C1CHIaFAuBCd5XRHXtrKb7WcnwCOxlcvux9h5/847F4wID" - "AQABo1gwVjAPBgNVHRMBAf8EBTADAQH/MBMGA1UdJQQMMAoGCCsGAQUFBwMJMA8G" - "A1UdDwEB/wQFAwMHBgAwHQYDVR0OBBYEFPmohhljtqQUE2B2DwGaNTbv8bSvMA0G" - "CSqGSIb3DQEBCwUAA4IBgQBhBi8dXQMtXH2oqcuHuEj9JkxraAsaJvc1WAoxbiqV" - "cJKcVSC0gvoCY3q+NQvuePzw5dzd5JBfkoIsP5U6ATWAUPPqCP+/jRnFqDQlH626" - "mhDGVS8W7Ee8z1KWqnKWGv5nkrZ6r3y9bVaNUmY7rytzuct1bI9YkX1kM66vgnU2" - "xeMIjDe36/wTtBRVFPSPpE3KL9hxCg3KgPSeSmmIhmQxJ1M6xe00314/GX3lTDt5" - "5UdMgmldl2LHV+0i1NPCgnuOEFVOiz2nHAnw2LNmvHEDDpPauz2Meeh9aaDeefIh" - "2u/wg39WRPhU1mYvmxvYZqA/jwSctiEhuKEBBZSOHxeTjplH1THlIziVnYyVW4sP" - "MiGUajXhTi47H219hx87+bldruOtirbDIslL9RGWqWAkMeGP+hUl1R2zvDukaqIK" - "qIN81/A/EeMoI6/IHb1BpgY2rGs/I/QTb3VTKqQUYv09Hi+itPCdKqamSm8dZMKK" - "aPA0fD9yskUMFPBhfj8BvXg=" "-----END OCSP RESPONSE-----"; + "-----BEGIN OCSP RESPONSE-----" + "MIIGPQoBAKCCBjYwggYyBgkrBgEFBQcwAQEEggYjMIIGHzCBgqERMA8xDTALBgNV" + "BAMTBENBLTMYDzIwMTkwOTIwMjAwMjMxWjBcMFowRTAJBgUrDgMCGgUABBSy5lyO" + "boNLvRHZl/o2k1merVwVxAQUnpHsjKokWyLg6BHo6aSRtZEmAPECDFejHTI2Wi75" + "obBaUoAAGA8yMDE5MDkyMDIwMDIzMVowDQYJKoZIhvcNAQELBQADggGBAC80EWal" + "PkJ29i/sZsO49hRolZXCMb1bjI0yxwhoH2Hk8Z0L41N0WFRphPqrDr8Dm3uRMcdx" + "n3xre+bxM0WL44mUMxptdYUcAwfb1M2gSQVhRvhvIfiMQZlkMYle4RPdVQN9nxmC" + "WbZD0WJmXQuYpFWYDVQkcL6f5Tlex5a8M/v/ihFBecs3wfstD1Bu4mD7nA8O/tGa" + "u0JQXxHnIM7FBOm73HccoxE5in307WEJtK1yTiUjwjlvl05hdWIzdydRToB6dNLL" + "MtgoFkKIX4aF6fkv1We4zooFdzlQanGdompaSDRGgMEONMZsQdWAs6Nmk+98f6cR" + "V426fFq3i6MLctLbwB5cOvvKbf9+P14KMD+bzcglupWqgJhNAmQlWksjWgMjfcCV" + "w4xATkcHnbMLlQ6ikORcXdkAbbhx8O0jJG1MdiUxErPOkOmKz2Nq14OYVYZII0t/" + "tbzuVGrYtNde4OM2mt9KSOY9rqX1wgKWOUPQW/FzOQvlAaiIwSQtrha/JaCCBAIw" + "ggP+MIID+jCCAmKgAwIBAgIIVzGgXgSsTYwwDQYJKoZIhvcNAQELBQAwDzENMAsG" + "A1UEAxMEQ0EtMzAgFw0xNjA1MTAwODQ4MzBaGA85OTk5MTIzMTIzNTk1OVowDzEN" + "MAsGA1UEAxMEQ0EtMzCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBALbd" + "xniG+2wP/ONeZfvR7AJakVo5deFKIHVTiiBWwhg+HSjd4nfDa+vyTt/wIdldP1Pr" + "iD1Rigc8z68+RxPpGfAc197pKlKpO08I0L1RDKnjBWr4fGdCzE6uZ/ZsKVifoIZp" + "dC8M2IYpAIMajEtnH53XZ1hTEviXTsneuiCTtap73OeSkL71SrIMkgBmAX17gfX3" + "SxFjQUzOs6QMMOa3+8GW7RI+E/SyS1QkOO860dj9XYgOnTL20ibGcWF2XmTiQASI" + "+KmHvYJCNJF/8pvmyJRyBHGZO830aBY0+DcS2bLKcyMiWfOJw7WnpaO7zSEC5WFg" + "o4jdqroUBQdjQNCSSdrt1yYrAl1Sj2PMxYFX4H545Pr2sMpwC9AnPk9+uucT1Inj" + "9615qbuXgFwhkgpK5pnPjzKaHp7ESlJj4/dIPTmhlt5BV+CLh7tSLzVLrddGU+os" + "8JinT42radJ5V51Hn0C1CHIaFAuBCd5XRHXtrKb7WcnwCOxlcvux9h5/847F4wID" + "AQABo1gwVjAPBgNVHRMBAf8EBTADAQH/MBMGA1UdJQQMMAoGCCsGAQUFBwMJMA8G" + "A1UdDwEB/wQFAwMHBgAwHQYDVR0OBBYEFPmohhljtqQUE2B2DwGaNTbv8bSvMA0G" + "CSqGSIb3DQEBCwUAA4IBgQBhBi8dXQMtXH2oqcuHuEj9JkxraAsaJvc1WAoxbiqV" + "cJKcVSC0gvoCY3q+NQvuePzw5dzd5JBfkoIsP5U6ATWAUPPqCP+/jRnFqDQlH626" + "mhDGVS8W7Ee8z1KWqnKWGv5nkrZ6r3y9bVaNUmY7rytzuct1bI9YkX1kM66vgnU2" + "xeMIjDe36/wTtBRVFPSPpE3KL9hxCg3KgPSeSmmIhmQxJ1M6xe00314/GX3lTDt5" + "5UdMgmldl2LHV+0i1NPCgnuOEFVOiz2nHAnw2LNmvHEDDpPauz2Meeh9aaDeefIh" + "2u/wg39WRPhU1mYvmxvYZqA/jwSctiEhuKEBBZSOHxeTjplH1THlIziVnYyVW4sP" + "MiGUajXhTi47H219hx87+bldruOtirbDIslL9RGWqWAkMeGP+hUl1R2zvDukaqIK" + "qIN81/A/EeMoI6/IHb1BpgY2rGs/I/QTb3VTKqQUYv09Hi+itPCdKqamSm8dZMKK" + "aPA0fD9yskUMFPBhfj8BvXg=" + "-----END OCSP RESPONSE-----"; static gnutls_datum_t ocsp_cli_ca3_good_pem = { (void *)_ocsp_cli_ca3_good_pem, sizeof(_ocsp_cli_ca3_good_pem) }; const char _ocsp_cli_ca3_bad_pem[] = - "-----BEGIN OCSP RESPONSE-----" - "MIIGTgoBAKCCBkcwggZDBgkrBgEFBQcwAQEEggY0MIIGMDCBk6ERMA8xDTALBgNV" - "BAMTBENBLTMYDzIwMTkwOTIwMjAwMTIxWjBtMGswRTAJBgUrDgMCGgUABBSy5lyO" - "boNLvRHZl/o2k1merVwVxAQUnpHsjKokWyLg6BHo6aSRtZEmAPECDFejHTI2Wi75" - "obBaUqERGA8yMDE5MDUyMjEzNTEwMVoYDzIwMTkwOTIwMjAwMTIxWjANBgkqhkiG" - "9w0BAQsFAAOCAYEAdCpwIfVu7z2CW3G7IzRSAMBLxu1e/trNdmlKPpx9ptKVWISr" - "2Fbro6D73HE0/IoTkZXqmUNoEjK0Os3Z/FIlbRuDql0dLkK/KornsvFRD7SemW2z" - "Z93GIX4JUBJQJW5iYjKBq9xn31IKEhjn9Zhtsfe7a9vK9mnW5oefeIiRLqfmcS09" - "mclyvTI1aGPcfkSSdabywpKFFETwX1LBIyBhNL9cV07nf0xntOrv5xfLTjyM2uVt" - "1A4F87xJJG2OX3YJXtf2yuXh1JTAMlUOOrICq1ejXos0AW7iJMzuOkBmXuGHjbBA" - "1zcSHJF6eZK4iaasdKd4q+coI9x0IdtNohT0a++R4jwFyKlINMVxB8L3xL9l+Fxz" - "+bNlJt3oZSYAx3CmcFMbScN3LmmHXrsKc6BhuHmgLEhpU9qnnDmUTaJdIWtTHIrq" - "St+IjvU77wnBscIxQaY0p120rwbqFF9ZUWnbgzsxYqJJ8+qW6oESV5ezWF7bg2YI" - "d6W38uy7ibW/10froIIEAjCCA/4wggP6MIICYqADAgECAghXMaBeBKxNjDANBgkq" - "hkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0zMCAXDTE2MDUxMDA4NDgzMFoYDzk5" - "OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRDQS0zMIIBojANBgkqhkiG9w0BAQEF" - "AAOCAY8AMIIBigKCAYEAtt3GeIb7bA/8415l+9HsAlqRWjl14UogdVOKIFbCGD4d" - "KN3id8Nr6/JO3/Ah2V0/U+uIPVGKBzzPrz5HE+kZ8BzX3ukqUqk7TwjQvVEMqeMF" - "avh8Z0LMTq5n9mwpWJ+ghml0LwzYhikAgxqMS2cfnddnWFMS+JdOyd66IJO1qnvc" - "55KQvvVKsgySAGYBfXuB9fdLEWNBTM6zpAww5rf7wZbtEj4T9LJLVCQ47zrR2P1d" - "iA6dMvbSJsZxYXZeZOJABIj4qYe9gkI0kX/ym+bIlHIEcZk7zfRoFjT4NxLZsspz" - "IyJZ84nDtaelo7vNIQLlYWCjiN2quhQFB2NA0JJJ2u3XJisCXVKPY8zFgVfgfnjk" - "+vawynAL0Cc+T3665xPUieP3rXmpu5eAXCGSCkrmmc+PMpoensRKUmPj90g9OaGW" - "3kFX4IuHu1IvNUut10ZT6izwmKdPjatp0nlXnUefQLUIchoUC4EJ3ldEde2spvtZ" - "yfAI7GVy+7H2Hn/zjsXjAgMBAAGjWDBWMA8GA1UdEwEB/wQFMAMBAf8wEwYDVR0l" - "BAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQU+aiGGWO2" - "pBQTYHYPAZo1Nu/xtK8wDQYJKoZIhvcNAQELBQADggGBAGEGLx1dAy1cfaipy4e4" - "SP0mTGtoCxom9zVYCjFuKpVwkpxVILSC+gJjer41C+54/PDl3N3kkF+Sgiw/lToB" - "NYBQ8+oI/7+NGcWoNCUfrbqaEMZVLxbsR7zPUpaqcpYa/meStnqvfL1tVo1SZjuv" - "K3O5y3Vsj1iRfWQzrq+CdTbF4wiMN7fr/BO0FFUU9I+kTcov2HEKDcqA9J5KaYiG" - "ZDEnUzrF7TTfXj8ZfeVMO3nlR0yCaV2XYsdX7SLU08KCe44QVU6LPaccCfDYs2a8" - "cQMOk9q7PYx56H1poN558iHa7/CDf1ZE+FTWZi+bG9hmoD+PBJy2ISG4oQEFlI4f" - "F5OOmUfVMeUjOJWdjJVbiw8yIZRqNeFOLjsfbX2HHzv5uV2u462KtsMiyUv1EZap" - "YCQx4Y/6FSXVHbO8O6Rqogqog3zX8D8R4ygjr8gdvUGmBjasaz8j9BNvdVMqpBRi" - "/T0eL6K08J0qpqZKbx1kwopo8DR8P3KyRQwU8GF+PwG9eA==" - "-----END OCSP RESPONSE-----"; + "-----BEGIN OCSP RESPONSE-----" + "MIIGTgoBAKCCBkcwggZDBgkrBgEFBQcwAQEEggY0MIIGMDCBk6ERMA8xDTALBgNV" + "BAMTBENBLTMYDzIwMTkwOTIwMjAwMTIxWjBtMGswRTAJBgUrDgMCGgUABBSy5lyO" + "boNLvRHZl/o2k1merVwVxAQUnpHsjKokWyLg6BHo6aSRtZEmAPECDFejHTI2Wi75" + "obBaUqERGA8yMDE5MDUyMjEzNTEwMVoYDzIwMTkwOTIwMjAwMTIxWjANBgkqhkiG" + "9w0BAQsFAAOCAYEAdCpwIfVu7z2CW3G7IzRSAMBLxu1e/trNdmlKPpx9ptKVWISr" + "2Fbro6D73HE0/IoTkZXqmUNoEjK0Os3Z/FIlbRuDql0dLkK/KornsvFRD7SemW2z" + "Z93GIX4JUBJQJW5iYjKBq9xn31IKEhjn9Zhtsfe7a9vK9mnW5oefeIiRLqfmcS09" + "mclyvTI1aGPcfkSSdabywpKFFETwX1LBIyBhNL9cV07nf0xntOrv5xfLTjyM2uVt" + "1A4F87xJJG2OX3YJXtf2yuXh1JTAMlUOOrICq1ejXos0AW7iJMzuOkBmXuGHjbBA" + "1zcSHJF6eZK4iaasdKd4q+coI9x0IdtNohT0a++R4jwFyKlINMVxB8L3xL9l+Fxz" + "+bNlJt3oZSYAx3CmcFMbScN3LmmHXrsKc6BhuHmgLEhpU9qnnDmUTaJdIWtTHIrq" + "St+IjvU77wnBscIxQaY0p120rwbqFF9ZUWnbgzsxYqJJ8+qW6oESV5ezWF7bg2YI" + "d6W38uy7ibW/10froIIEAjCCA/4wggP6MIICYqADAgECAghXMaBeBKxNjDANBgkq" + "hkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0zMCAXDTE2MDUxMDA4NDgzMFoYDzk5" + "OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRDQS0zMIIBojANBgkqhkiG9w0BAQEF" + "AAOCAY8AMIIBigKCAYEAtt3GeIb7bA/8415l+9HsAlqRWjl14UogdVOKIFbCGD4d" + "KN3id8Nr6/JO3/Ah2V0/U+uIPVGKBzzPrz5HE+kZ8BzX3ukqUqk7TwjQvVEMqeMF" + "avh8Z0LMTq5n9mwpWJ+ghml0LwzYhikAgxqMS2cfnddnWFMS+JdOyd66IJO1qnvc" + "55KQvvVKsgySAGYBfXuB9fdLEWNBTM6zpAww5rf7wZbtEj4T9LJLVCQ47zrR2P1d" + "iA6dMvbSJsZxYXZeZOJABIj4qYe9gkI0kX/ym+bIlHIEcZk7zfRoFjT4NxLZsspz" + "IyJZ84nDtaelo7vNIQLlYWCjiN2quhQFB2NA0JJJ2u3XJisCXVKPY8zFgVfgfnjk" + "+vawynAL0Cc+T3665xPUieP3rXmpu5eAXCGSCkrmmc+PMpoensRKUmPj90g9OaGW" + "3kFX4IuHu1IvNUut10ZT6izwmKdPjatp0nlXnUefQLUIchoUC4EJ3ldEde2spvtZ" + "yfAI7GVy+7H2Hn/zjsXjAgMBAAGjWDBWMA8GA1UdEwEB/wQFMAMBAf8wEwYDVR0l" + "BAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQU+aiGGWO2" + "pBQTYHYPAZo1Nu/xtK8wDQYJKoZIhvcNAQELBQADggGBAGEGLx1dAy1cfaipy4e4" + "SP0mTGtoCxom9zVYCjFuKpVwkpxVILSC+gJjer41C+54/PDl3N3kkF+Sgiw/lToB" + "NYBQ8+oI/7+NGcWoNCUfrbqaEMZVLxbsR7zPUpaqcpYa/meStnqvfL1tVo1SZjuv" + "K3O5y3Vsj1iRfWQzrq+CdTbF4wiMN7fr/BO0FFUU9I+kTcov2HEKDcqA9J5KaYiG" + "ZDEnUzrF7TTfXj8ZfeVMO3nlR0yCaV2XYsdX7SLU08KCe44QVU6LPaccCfDYs2a8" + "cQMOk9q7PYx56H1poN558iHa7/CDf1ZE+FTWZi+bG9hmoD+PBJy2ISG4oQEFlI4f" + "F5OOmUfVMeUjOJWdjJVbiw8yIZRqNeFOLjsfbX2HHzv5uV2u462KtsMiyUv1EZap" + "YCQx4Y/6FSXVHbO8O6Rqogqog3zX8D8R4ygjr8gdvUGmBjasaz8j9BNvdVMqpBRi" + "/T0eL6K08J0qpqZKbx1kwopo8DR8P3KyRQwU8GF+PwG9eA==" + "-----END OCSP RESPONSE-----"; -static gnutls_datum_t ocsp_cli_ca3_bad_pem = { - (void *)_ocsp_cli_ca3_bad_pem, sizeof(_ocsp_cli_ca3_bad_pem) -}; +static gnutls_datum_t ocsp_cli_ca3_bad_pem = { (void *)_ocsp_cli_ca3_bad_pem, + sizeof(_ocsp_cli_ca3_bad_pem) }; -# if defined __clang__ || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) -# pragma GCC diagnostic pop -# endif +#if defined __clang__ || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) +#pragma GCC diagnostic pop +#endif -#endif /* GNUTLS_TESTS_OCSP_COMMON_H */ +#endif /* GNUTLS_TESTS_OCSP_COMMON_H */ diff --git a/tests/ocsp-filename-memleak.c b/tests/ocsp-filename-memleak.c index decc5b4b55..2c51c522ca 100644 --- a/tests/ocsp-filename-memleak.c +++ b/tests/ocsp-filename-memleak.c @@ -24,7 +24,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -49,10 +49,10 @@ void doit(void) gnutls_certificate_allocate_credentials(&x509_cred); /* The file does not need to exist for this test */ - gnutls_certificate_set_ocsp_status_request_file - (x509_cred, "ocsp-status.der", 0); - gnutls_certificate_set_ocsp_status_request_file - (x509_cred, "ocsp-status.der", 0); + gnutls_certificate_set_ocsp_status_request_file(x509_cred, + "ocsp-status.der", 0); + gnutls_certificate_set_ocsp_status_request_file(x509_cred, + "ocsp-status.der", 0); gnutls_certificate_free_credentials(x509_cred); } diff --git a/tests/ocsp.c b/tests/ocsp.c index 14c5b846f5..20be4cc6cb 100644 --- a/tests/ocsp.c +++ b/tests/ocsp.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -38,9 +38,8 @@ static time_t _then = 1332548220; -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { - if (t) *t = _then; @@ -54,434 +53,442 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "|<%d>| %s", level, str); } -#define REQ1 "\x30\x67\x30\x65\x30\x3e\x30\x3c\x30\x3a\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04\x14\x13\x9d\xa0\x9e\xf4\x32\xab\x8f\xe2\x89\x56\x67\xfa\xd0\xd4\xe3\x35\x86\x71\xb9\x04\x14\x5d\xa7\xdd\x70\x06\x51\x32\x7e\xe7\xb6\x6d\xb3\xb5\xe5\xe0\x60\xea\x2e\x4d\xef\x02\x01\x1d\xa2\x23\x30\x21\x30\x1f\x06\x09\x2b\x06\x01\x05\x05\x07\x30\x01\x02\x04\x12\x04\x10\x35\xc5\xe3\x50\xc3\xcf\x04\x33\xcc\x9e\x06\x3a\x9a\x18\x80\xcc" +#define REQ1 \ + "\x30\x67\x30\x65\x30\x3e\x30\x3c\x30\x3a\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04\x14\x13\x9d\xa0\x9e\xf4\x32\xab\x8f\xe2\x89\x56\x67\xfa\xd0\xd4\xe3\x35\x86\x71\xb9\x04\x14\x5d\xa7\xdd\x70\x06\x51\x32\x7e\xe7\xb6\x6d\xb3\xb5\xe5\xe0\x60\xea\x2e\x4d\xef\x02\x01\x1d\xa2\x23\x30\x21\x30\x1f\x06\x09\x2b\x06\x01\x05\x05\x07\x30\x01\x02\x04\x12\x04\x10\x35\xc5\xe3\x50\xc3\xcf\x04\x33\xcc\x9e\x06\x3a\x9a\x18\x80\xcc" static const gnutls_datum_t req1 = { (unsigned char *)REQ1, sizeof(REQ1) - 1 }; -#define REQ1INFO \ - "OCSP Request Information:\n" \ - " Version: 1\n" \ - " Request List:\n" \ - " Certificate ID:\n" \ - " Hash Algorithm: SHA1\n" \ - " Issuer Name Hash: 139da09ef432ab8fe2895667fad0d4e3358671b9\n" \ - " Issuer Key Hash: 5da7dd700651327ee7b66db3b5e5e060ea2e4def\n" \ - " Serial Number: 1d\n" \ - " Extensions:\n" \ - " Nonce: 35c5e350c3cf0433cc9e063a9a1880cc\n" - -#define REQ1NONCE "\x04\x10\x35\xc5\xe3\x50\xc3\xcf\x04\x33\xcc\x9e\x06\x3a\x9a\x18\x80\xcc" - -#define REQ1INH "\x13\x9d\xa0\x9e\xf4\x32\xab\x8f\xe2\x89\x56\x67\xfa\xd0\xd4\xe3\x35\x86\x71\xb9" -#define REQ1IKH "\x5d\xa7\xdd\x70\x06\x51\x32\x7e\xe7\xb6\x6d\xb3\xb5\xe5\xe0\x60\xea\x2e\x4d\xef" +#define REQ1INFO \ + "OCSP Request Information:\n" \ + " Version: 1\n" \ + " Request List:\n" \ + " Certificate ID:\n" \ + " Hash Algorithm: SHA1\n" \ + " Issuer Name Hash: 139da09ef432ab8fe2895667fad0d4e3358671b9\n" \ + " Issuer Key Hash: 5da7dd700651327ee7b66db3b5e5e060ea2e4def\n" \ + " Serial Number: 1d\n" \ + " Extensions:\n" \ + " Nonce: 35c5e350c3cf0433cc9e063a9a1880cc\n" + +#define REQ1NONCE \ + "\x04\x10\x35\xc5\xe3\x50\xc3\xcf\x04\x33\xcc\x9e\x06\x3a\x9a\x18\x80\xcc" + +#define REQ1INH \ + "\x13\x9d\xa0\x9e\xf4\x32\xab\x8f\xe2\x89\x56\x67\xfa\xd0\xd4\xe3\x35\x86\x71\xb9" +#define REQ1IKH \ + "\x5d\xa7\xdd\x70\x06\x51\x32\x7e\xe7\xb6\x6d\xb3\xb5\xe5\xe0\x60\xea\x2e\x4d\xef" #define REQ1SN "\x1d" /* sample response */ #define RESP1 "\x30\x03\x0a\x01\x01" -static const gnutls_datum_t resp1 = - { (unsigned char *)RESP1, sizeof(RESP1) - 1 }; - -#define RESP1INFO \ - "OCSP Response Information:\n" \ - " Response Status: malformedRequest\n" - -#define RESP2 "\x30\x82\x06\x8C\x0A\x01\x00\xA0\x82\x06\x85\x30\x82\x06\x81\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x06\x72\x30\x82\x06\x6E\x30\x82\x01\x07\xA1\x69\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\x30\x64\x30\x62\x30\x3A\x30\x09\x06\x05\x2B\x0E\x03\x02\x1A\x05\x00\x04\x14\x13\x9D\xA0\x9E\xF4\x32\xAB\x8F\xE2\x89\x56\x67\xFA\xD0\xD4\xE3\x35\x86\x71\xB9\x04\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\x02\x01\x1D\x80\x00\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\xA0\x11\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x39\x32\x38\x5A\xA1\x23\x30\x21\x30\x1F\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x02\x04\x12\x04\x10\x16\x89\x7D\x91\x3A\xB5\x25\xA4\x45\xFE\xC9\xFD\xC2\xE5\x08\xA4\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x4E\xAD\x6B\x2B\xF7\xF2\xBF\xA9\x23\x1E\x3A\x0B\x06\xDB\x55\x53\x2B\x64\x54\x11\x32\xBF\x60\xF7\x4F\xE0\x8E\x9B\xA0\xA2\x4C\x79\xC3\x2A\xE0\x43\xF7\x40\x1A\xDC\xB9\xB4\x25\xEF\x48\x01\x97\x8C\xF5\x1E\xDB\xD1\x30\x37\x73\x69\xD6\xA7\x7A\x2D\x8E\xDE\x5C\xAA\xEA\x39\xB9\x52\xAA\x25\x1E\x74\x7D\xF9\x78\x95\x8A\x92\x1F\x98\x21\xF4\x60\x7F\xD3\x28\xEE\x47\x9C\xBF\xE2\x5D\xF6\x3F\x68\x0A\xD6\xFF\x08\xC1\xDC\x95\x1E\x29\xD7\x3E\x85\xD5\x65\xA4\x4B\xC0\xAF\xC3\x78\xAB\x06\x98\x88\x19\x8A\x64\xA6\x83\x91\x87\x13\xDB\x17\xCC\x46\xBD\xAB\x4E\xC7\x16\xD1\xF8\x35\xFD\x27\xC8\xF6\x6B\xEB\x37\xB8\x08\x6F\xE2\x6F\xB4\x7E\xD5\x68\xDB\x7F\x5D\x5E\x36\x38\xF2\x77\x59\x13\xE7\x3E\x4D\x67\x5F\xDB\xA2\xF5\x5D\x7C\xBF\xBD\xB5\x37\x33\x51\x36\x63\xF8\x21\x1E\xFC\x73\x8F\x32\x69\xBB\x97\xA7\xBD\xF1\xB6\xE0\x40\x09\x68\xEA\xD5\x93\xB8\xBB\x39\x8D\xA8\x16\x1B\xBF\x04\x7A\xBC\x18\x43\x01\xE9\x3C\x19\x5C\x4D\x4B\x98\xD8\x23\x37\x39\xA4\xC4\xDD\xED\x9C\xEC\x37\xAB\x66\x44\x9B\xE7\x5B\x5D\x32\xA2\xDB\xA6\x0B\x3B\x8C\xE1\xF5\xDB\xCB\x7D\x58\xA0\x82\x04\x4B\x30\x82\x04\x47\x30\x82\x04\x43\x30\x82\x03\x2B\xA0\x03\x02\x01\x02\x02\x01\x1E\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x30\x1E\x17\x0D\x30\x39\x31\x31\x32\x34\x31\x32\x35\x31\x35\x33\x5A\x17\x0D\x31\x34\x31\x31\x32\x33\x31\x32\x35\x31\x35\x33\x5A\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x82\x01\x22\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00\x03\x82\x01\x0F\x00\x30\x82\x01\x0A\x02\x82\x01\x01\x00\xBC\x05\x3E\x4B\xBE\xC6\xB1\x33\x48\x0E\xC3\xD4\x0C\xEF\x83\x0B\xBD\xBC\x57\x5F\x14\xEF\xF5\x6D\x0B\xFF\xFA\x01\x9C\xFA\x21\x6D\x5C\xAE\x79\x29\x74\xFE\xBD\xAB\x70\x87\x98\x6B\x48\x35\x79\xE3\xE0\xC1\x14\x41\x1F\x0A\xF7\xE7\xA3\xA6\xDA\x6B\xFF\xCD\x74\xE9\x95\x00\x38\xAA\xD6\x3A\x60\xC6\x64\xA1\xE6\x02\x39\x58\x4E\xFD\xF2\x78\x08\x63\xB6\xD7\x7A\x96\x79\x62\x18\x39\xEE\x27\x8D\x3B\xA2\x3D\x48\x88\xDB\x43\xD6\x6A\x77\x20\x6A\x27\x39\x50\xE0\x02\x50\x19\xF2\x7A\xCF\x78\x23\x99\x01\xD4\xE5\xB1\xD1\x31\xE6\x6B\x84\xAF\xD0\x77\x41\x46\x85\xB0\x3B\xE6\x6A\x00\x0F\x3B\x7E\x95\x7F\x59\xA8\x22\xE8\x49\x49\x05\xC8\xCB\x6C\xEE\x47\xA7\x2D\xC9\x74\x5B\xEB\x8C\xD5\x99\xC2\xE2\x70\xDB\xEA\x87\x43\x84\x0E\x4F\x83\x1C\xA6\xEB\x1F\x22\x38\x17\x69\x9B\x72\x12\x95\x48\x71\xB2\x7B\x92\x73\x52\xAB\xE3\x1A\xA5\xD3\xF4\x44\x14\xBA\xC3\x35\xDA\x91\x6C\x7D\xB4\xC2\x00\x07\xD8\x0A\x51\xF1\x0D\x4C\xD9\x7A\xD1\x99\xE6\xA8\x8D\x0A\x80\xA8\x91\xDD\x8A\xA2\x6B\xF6\xDB\xB0\x3E\xC9\x71\xA9\xE0\x39\xC3\xA3\x58\x0D\x87\xD0\xB2\xA7\x9C\xB7\x69\x02\x03\x01\x00\x01\xA3\x82\x01\x1A\x30\x82\x01\x16\x30\x09\x06\x03\x55\x1D\x13\x04\x02\x30\x00\x30\x0B\x06\x03\x55\x1D\x0F\x04\x04\x03\x02\x03\xA8\x30\x1D\x06\x03\x55\x1D\x0E\x04\x16\x04\x14\x34\x91\x6E\x91\x32\xBF\x35\x25\x43\xCC\x28\x74\xEF\x82\xC2\x57\x92\x79\x13\x73\x30\x6D\x06\x03\x55\x1D\x23\x04\x66\x30\x64\x80\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\xA1\x49\xA4\x47\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x82\x01\x00\x30\x1E\x06\x03\x55\x1D\x11\x04\x17\x30\x15\x82\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x13\x06\x03\x55\x1D\x25\x04\x0C\x30\x0A\x06\x08\x2B\x06\x01\x05\x05\x07\x03\x09\x30\x39\x06\x03\x55\x1D\x1F\x04\x32\x30\x30\x30\x2E\xA0\x2C\xA0\x2A\x86\x28\x68\x74\x74\x70\x3A\x2F\x2F\x63\x72\x6C\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x2F\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x63\x72\x6C\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x03\x82\x01\x01\x00\x6D\x78\xD7\x66\x90\xA6\xEB\xDD\xB5\x09\x48\xA4\xDA\x27\xFA\xAC\xB1\xBC\x8F\x8C\xBE\xCC\x8C\x09\xA2\x40\x0D\x6C\x4A\xAE\x72\x22\x1E\xC8\xAF\x6D\xF1\x12\xAF\xD7\x40\x51\x79\xD4\xDD\xB2\x0C\xDB\x97\x84\xB6\x24\xD5\xF5\xA8\xBB\xC0\x4B\xF9\x7F\x71\xF7\xB0\x65\x42\x4A\x7D\xFE\x76\x7E\x05\xD2\x46\xB8\x7D\xB3\x39\x4C\x5C\xB1\xFA\xB9\xEE\x3B\x70\x33\x39\x57\x1A\xB9\x95\x51\x33\x00\x25\x1B\x4C\xAA\xB4\xA7\x55\xAF\x63\x6D\x6F\x88\x17\x6A\x7F\xB0\x97\xDE\x49\x14\x6A\x27\x6A\xB0\x42\x80\xD6\xA6\x9B\xEF\x04\x5E\x11\x7D\xD5\x8E\x54\x20\xA2\x76\xD4\x66\x58\xAC\x9C\x12\xD3\xF5\xCA\x54\x98\xCA\x21\xEC\xC1\x55\xA1\x2F\x68\x0B\x5D\x04\x50\xD2\x5E\x70\x25\xD8\x13\xD9\x44\x51\x0E\x8A\x42\x08\x18\x84\xE6\x61\xCE\x5A\x7D\x7B\x81\x35\x90\xC3\xD4\x9D\x19\xB6\x37\xEE\x8F\x63\x5C\xDA\xD8\xF0\x64\x60\x39\xEB\x9B\x1C\x54\x66\x75\x76\xB5\x0A\x58\xB9\x3F\x91\xE1\x21\x9C\xA0\x50\x15\x97\xB6\x7E\x41\xBC\xD0\xC4\x21\x4C\xF5\xD7\xF0\x13\xF8\x77\xE9\x74\xC4\x8A\x0E\x20\x17\x32\xAE\x38\xC2\xA5\xA8\x62\x85\x17\xB1\xA2\xD3\x22\x9F\x95\xB7\xA3\x4C" - -#define RESP2INFO \ - "OCSP Response Information:\n" \ - " Response Status: Successful\n" \ - " Response Type: Basic OCSP Response\n" \ - " Version: 1\n" \ - " Responder ID: CN=ocsp.strongswan.org,OU=OCSP Signing Authority,O=Linux strongSwan,C=CH\n" \ - " Produced At: Tue Sep 27 09:54:28 UTC 2011\n" \ - " Responses:\n" \ - " Certificate ID:\n" \ - " Hash Algorithm: SHA1\n" \ - " Issuer Name Hash: 139da09ef432ab8fe2895667fad0d4e3358671b9\n" \ - " Issuer Key Hash: 5da7dd700651327ee7b66db3b5e5e060ea2e4def\n" \ - " Serial Number: 1d\n" \ - " Certificate Status: good\n" \ - " This Update: Tue Sep 27 09:54:28 UTC 2011\n" \ - " Next Update: Tue Sep 27 09:59:28 UTC 2011\n" \ - " Extensions:\n" \ - " Nonce: 16897d913ab525a445fec9fdc2e508a4\n" \ - " Signature Algorithm: RSA-SHA1\n" \ - " Signature:\n" \ - " 4e:ad:6b:2b:f7:f2:bf:a9:23:1e:3a:0b:06:db:55:53\n" \ - " 2b:64:54:11:32:bf:60:f7:4f:e0:8e:9b:a0:a2:4c:79\n" \ - " c3:2a:e0:43:f7:40:1a:dc:b9:b4:25:ef:48:01:97:8c\n" \ - " f5:1e:db:d1:30:37:73:69:d6:a7:7a:2d:8e:de:5c:aa\n" \ - " ea:39:b9:52:aa:25:1e:74:7d:f9:78:95:8a:92:1f:98\n" \ - " 21:f4:60:7f:d3:28:ee:47:9c:bf:e2:5d:f6:3f:68:0a\n" \ - " d6:ff:08:c1:dc:95:1e:29:d7:3e:85:d5:65:a4:4b:c0\n" \ - " af:c3:78:ab:06:98:88:19:8a:64:a6:83:91:87:13:db\n" \ - " 17:cc:46:bd:ab:4e:c7:16:d1:f8:35:fd:27:c8:f6:6b\n" \ - " eb:37:b8:08:6f:e2:6f:b4:7e:d5:68:db:7f:5d:5e:36\n" \ - " 38:f2:77:59:13:e7:3e:4d:67:5f:db:a2:f5:5d:7c:bf\n" \ - " bd:b5:37:33:51:36:63:f8:21:1e:fc:73:8f:32:69:bb\n" \ - " 97:a7:bd:f1:b6:e0:40:09:68:ea:d5:93:b8:bb:39:8d\n" \ - " a8:16:1b:bf:04:7a:bc:18:43:01:e9:3c:19:5c:4d:4b\n" \ - " 98:d8:23:37:39:a4:c4:dd:ed:9c:ec:37:ab:66:44:9b\n" \ - " e7:5b:5d:32:a2:db:a6:0b:3b:8c:e1:f5:db:cb:7d:58\n" - /* cut */ - -static const gnutls_datum_t resp2 = - { (unsigned char *)RESP2, sizeof(RESP2) - 1 }; - -#define RESP3 "\x30\x82\x01\xd3\x0a\x01\x00\xa0\x82\x01\xcc\x30\x82\x01\xc8\x06\x09\x2b\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x01\xb9\x30\x82\x01\xb5\x30\x81\x9e\xa2\x16\x04\x14\x50\xea\x73\x89\xdb\x29\xfb\x10\x8f\x9e\xe5\x01\x20\xd4\xde\x79\x99\x48\x83\xf7\x18\x0f\x32\x30\x31\x34\x30\x39\x30\x34\x30\x35\x34\x39\x30\x30\x5a\x30\x73\x30\x71\x30\x49\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04\x14\xed\x48\xad\xdd\xcb\x7b\x00\xe2\x0e\x84\x2a\xa9\xb4\x09\xf1\xac\x30\x34\xcf\x96\x04\x14\x50\xea\x73\x89\xdb\x29\xfb\x10\x8f\x9e\xe5\x01\x20\xd4\xde\x79\x99\x48\x83\xf7\x02\x10\x02\x01\x48\x91\x5d\xfd\x5e\xb6\xe0\x02\x90\xa9\x67\xb0\xe4\x64\x80\x00\x18\x0f\x32\x30\x31\x34\x30\x39\x30\x34\x30\x35\x34\x39\x30\x30\x5a\xa0\x11\x18\x0f\x32\x30\x31\x34\x30\x39\x31\x31\x30\x36\x30\x34\x30\x30\x5a\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x6e\x5e\x5e\x81\xff\x3f\x4d\xc7\x53\xc7\x1b\xf3\xd3\x1d\xdc\x9a\xc7\xce\x77\x2c\x67\x56\x13\x98\x91\x02\x01\x76\xdc\x48\xb2\x1f\x9b\x17\xea\xbf\x2c\x0a\xf5\x1d\x98\x90\x3c\x5f\x55\xc2\xff\x4b\x9a\xbc\xa6\x83\x9e\xab\x2b\xeb\x9d\x01\xea\x3b\x5f\xbe\x03\x29\x70\x63\x2a\xa4\x1d\xa8\xab\x69\xb2\x64\xba\x5d\x73\x91\x5c\x92\xf3\x69\xd4\xc9\x39\x9c\x7c\x7d\xa2\x47\x92\xc2\x56\xfe\xa1\x0d\x4a\x69\xff\xda\x48\xc5\x5e\xd8\xab\x39\x88\x6a\x06\xfa\x07\x57\xd6\x48\xb5\xce\xc9\x5f\xa5\x96\xfe\x37\x18\x5e\x7f\x35\x51\xc1\x9e\x79\x5a\x26\xba\x67\x67\x38\x2a\x80\x75\x42\x99\x68\x3e\xec\x2f\x7e\x2d\xa1\xa6\xbe\x9f\x01\x51\x22\x88\x3a\xc9\x9c\xed\x51\xef\x21\x66\x7e\xa9\xd0\x3f\x13\x9c\xbb\xd2\x94\x14\x6f\x4b\xd9\xc4\xf5\x2c\xf5\x7d\x07\x68\xf3\x51\xac\xda\xc2\x09\x66\xa9\x3d\xed\xad\x02\x4d\x9c\x11\x29\x1a\x54\xfb\x1e\x7e\x36\xf4\xbb\x0d\x08\x8c\x6a\x42\x08\x10\x29\x08\x7c\x56\x0b\x18\x47\xff\x87\x11\xfd\xb2\xfb\xc9\x22\x7f\xe3\x1f\x7b\xf9\x98\xaa\x3a\x32\xb6\x2f\x02\xba\xb6\xc1\xdc\xc3\x5d\xb5\x4b\xae\x5d\x29\x6a\x31\xde\xcd" - -#define RESP3INFO "OCSP Response Information:\n" \ -" Response Status: Successful\n" \ -" Response Type: Basic OCSP Response\n" \ -" Version: 1\n" \ -" Responder Key ID: 50ea7389db29fb108f9ee50120d4de79994883f7\n" \ -" Produced At: Thu Sep 04 05:49:00 UTC 2014\n" \ -" Responses:\n" \ -" Certificate ID:\n" \ -" Hash Algorithm: SHA1\n" \ -" Issuer Name Hash: ed48adddcb7b00e20e842aa9b409f1ac3034cf96\n" \ -" Issuer Key Hash: 50ea7389db29fb108f9ee50120d4de79994883f7\n" \ -" Serial Number: 020148915dfd5eb6e00290a967b0e464\n" \ -" Certificate Status: good\n" \ -" This Update: Thu Sep 04 05:49:00 UTC 2014\n" \ -" Next Update: Thu Sep 11 06:04:00 UTC 2014\n" \ -" Extensions:\n" \ -" Signature Algorithm: RSA-SHA1\n" \ -" Signature:\n" \ -" 6e:5e:5e:81:ff:3f:4d:c7:53:c7:1b:f3:d3:1d:dc:9a\n" \ -" c7:ce:77:2c:67:56:13:98:91:02:01:76:dc:48:b2:1f\n" \ -" 9b:17:ea:bf:2c:0a:f5:1d:98:90:3c:5f:55:c2:ff:4b\n" \ -" 9a:bc:a6:83:9e:ab:2b:eb:9d:01:ea:3b:5f:be:03:29\n" \ -" 70:63:2a:a4:1d:a8:ab:69:b2:64:ba:5d:73:91:5c:92\n" \ -" f3:69:d4:c9:39:9c:7c:7d:a2:47:92:c2:56:fe:a1:0d\n" \ -" 4a:69:ff:da:48:c5:5e:d8:ab:39:88:6a:06:fa:07:57\n" \ -" d6:48:b5:ce:c9:5f:a5:96:fe:37:18:5e:7f:35:51:c1\n" \ -" 9e:79:5a:26:ba:67:67:38:2a:80:75:42:99:68:3e:ec\n" \ -" 2f:7e:2d:a1:a6:be:9f:01:51:22:88:3a:c9:9c:ed:51\n" \ -" ef:21:66:7e:a9:d0:3f:13:9c:bb:d2:94:14:6f:4b:d9\n" \ -" c4:f5:2c:f5:7d:07:68:f3:51:ac:da:c2:09:66:a9:3d\n" \ -" ed:ad:02:4d:9c:11:29:1a:54:fb:1e:7e:36:f4:bb:0d\n" \ -" 08:8c:6a:42:08:10:29:08:7c:56:0b:18:47:ff:87:11\n" \ -" fd:b2:fb:c9:22:7f:e3:1f:7b:f9:98:aa:3a:32:b6:2f\n" \ -" 02:ba:b6:c1:dc:c3:5d:b5:4b:ae:5d:29:6a:31:de:cd\n" - -static const gnutls_datum_t resp3 = - { (unsigned char *)RESP3, sizeof(RESP3) - 1 }; +static const gnutls_datum_t resp1 = { (unsigned char *)RESP1, + sizeof(RESP1) - 1 }; + +#define RESP1INFO \ + "OCSP Response Information:\n" \ + " Response Status: malformedRequest\n" + +#define RESP2 \ + "\x30\x82\x06\x8C\x0A\x01\x00\xA0\x82\x06\x85\x30\x82\x06\x81\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x06\x72\x30\x82\x06\x6E\x30\x82\x01\x07\xA1\x69\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\x30\x64\x30\x62\x30\x3A\x30\x09\x06\x05\x2B\x0E\x03\x02\x1A\x05\x00\x04\x14\x13\x9D\xA0\x9E\xF4\x32\xAB\x8F\xE2\x89\x56\x67\xFA\xD0\xD4\xE3\x35\x86\x71\xB9\x04\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\x02\x01\x1D\x80\x00\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\xA0\x11\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x39\x32\x38\x5A\xA1\x23\x30\x21\x30\x1F\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x02\x04\x12\x04\x10\x16\x89\x7D\x91\x3A\xB5\x25\xA4\x45\xFE\xC9\xFD\xC2\xE5\x08\xA4\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x4E\xAD\x6B\x2B\xF7\xF2\xBF\xA9\x23\x1E\x3A\x0B\x06\xDB\x55\x53\x2B\x64\x54\x11\x32\xBF\x60\xF7\x4F\xE0\x8E\x9B\xA0\xA2\x4C\x79\xC3\x2A\xE0\x43\xF7\x40\x1A\xDC\xB9\xB4\x25\xEF\x48\x01\x97\x8C\xF5\x1E\xDB\xD1\x30\x37\x73\x69\xD6\xA7\x7A\x2D\x8E\xDE\x5C\xAA\xEA\x39\xB9\x52\xAA\x25\x1E\x74\x7D\xF9\x78\x95\x8A\x92\x1F\x98\x21\xF4\x60\x7F\xD3\x28\xEE\x47\x9C\xBF\xE2\x5D\xF6\x3F\x68\x0A\xD6\xFF\x08\xC1\xDC\x95\x1E\x29\xD7\x3E\x85\xD5\x65\xA4\x4B\xC0\xAF\xC3\x78\xAB\x06\x98\x88\x19\x8A\x64\xA6\x83\x91\x87\x13\xDB\x17\xCC\x46\xBD\xAB\x4E\xC7\x16\xD1\xF8\x35\xFD\x27\xC8\xF6\x6B\xEB\x37\xB8\x08\x6F\xE2\x6F\xB4\x7E\xD5\x68\xDB\x7F\x5D\x5E\x36\x38\xF2\x77\x59\x13\xE7\x3E\x4D\x67\x5F\xDB\xA2\xF5\x5D\x7C\xBF\xBD\xB5\x37\x33\x51\x36\x63\xF8\x21\x1E\xFC\x73\x8F\x32\x69\xBB\x97\xA7\xBD\xF1\xB6\xE0\x40\x09\x68\xEA\xD5\x93\xB8\xBB\x39\x8D\xA8\x16\x1B\xBF\x04\x7A\xBC\x18\x43\x01\xE9\x3C\x19\x5C\x4D\x4B\x98\xD8\x23\x37\x39\xA4\xC4\xDD\xED\x9C\xEC\x37\xAB\x66\x44\x9B\xE7\x5B\x5D\x32\xA2\xDB\xA6\x0B\x3B\x8C\xE1\xF5\xDB\xCB\x7D\x58\xA0\x82\x04\x4B\x30\x82\x04\x47\x30\x82\x04\x43\x30\x82\x03\x2B\xA0\x03\x02\x01\x02\x02\x01\x1E\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x30\x1E\x17\x0D\x30\x39\x31\x31\x32\x34\x31\x32\x35\x31\x35\x33\x5A\x17\x0D\x31\x34\x31\x31\x32\x33\x31\x32\x35\x31\x35\x33\x5A\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x82\x01\x22\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00\x03\x82\x01\x0F\x00\x30\x82\x01\x0A\x02\x82\x01\x01\x00\xBC\x05\x3E\x4B\xBE\xC6\xB1\x33\x48\x0E\xC3\xD4\x0C\xEF\x83\x0B\xBD\xBC\x57\x5F\x14\xEF\xF5\x6D\x0B\xFF\xFA\x01\x9C\xFA\x21\x6D\x5C\xAE\x79\x29\x74\xFE\xBD\xAB\x70\x87\x98\x6B\x48\x35\x79\xE3\xE0\xC1\x14\x41\x1F\x0A\xF7\xE7\xA3\xA6\xDA\x6B\xFF\xCD\x74\xE9\x95\x00\x38\xAA\xD6\x3A\x60\xC6\x64\xA1\xE6\x02\x39\x58\x4E\xFD\xF2\x78\x08\x63\xB6\xD7\x7A\x96\x79\x62\x18\x39\xEE\x27\x8D\x3B\xA2\x3D\x48\x88\xDB\x43\xD6\x6A\x77\x20\x6A\x27\x39\x50\xE0\x02\x50\x19\xF2\x7A\xCF\x78\x23\x99\x01\xD4\xE5\xB1\xD1\x31\xE6\x6B\x84\xAF\xD0\x77\x41\x46\x85\xB0\x3B\xE6\x6A\x00\x0F\x3B\x7E\x95\x7F\x59\xA8\x22\xE8\x49\x49\x05\xC8\xCB\x6C\xEE\x47\xA7\x2D\xC9\x74\x5B\xEB\x8C\xD5\x99\xC2\xE2\x70\xDB\xEA\x87\x43\x84\x0E\x4F\x83\x1C\xA6\xEB\x1F\x22\x38\x17\x69\x9B\x72\x12\x95\x48\x71\xB2\x7B\x92\x73\x52\xAB\xE3\x1A\xA5\xD3\xF4\x44\x14\xBA\xC3\x35\xDA\x91\x6C\x7D\xB4\xC2\x00\x07\xD8\x0A\x51\xF1\x0D\x4C\xD9\x7A\xD1\x99\xE6\xA8\x8D\x0A\x80\xA8\x91\xDD\x8A\xA2\x6B\xF6\xDB\xB0\x3E\xC9\x71\xA9\xE0\x39\xC3\xA3\x58\x0D\x87\xD0\xB2\xA7\x9C\xB7\x69\x02\x03\x01\x00\x01\xA3\x82\x01\x1A\x30\x82\x01\x16\x30\x09\x06\x03\x55\x1D\x13\x04\x02\x30\x00\x30\x0B\x06\x03\x55\x1D\x0F\x04\x04\x03\x02\x03\xA8\x30\x1D\x06\x03\x55\x1D\x0E\x04\x16\x04\x14\x34\x91\x6E\x91\x32\xBF\x35\x25\x43\xCC\x28\x74\xEF\x82\xC2\x57\x92\x79\x13\x73\x30\x6D\x06\x03\x55\x1D\x23\x04\x66\x30\x64\x80\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\xA1\x49\xA4\x47\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x82\x01\x00\x30\x1E\x06\x03\x55\x1D\x11\x04\x17\x30\x15\x82\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x13\x06\x03\x55\x1D\x25\x04\x0C\x30\x0A\x06\x08\x2B\x06\x01\x05\x05\x07\x03\x09\x30\x39\x06\x03\x55\x1D\x1F\x04\x32\x30\x30\x30\x2E\xA0\x2C\xA0\x2A\x86\x28\x68\x74\x74\x70\x3A\x2F\x2F\x63\x72\x6C\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x2F\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x63\x72\x6C\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x03\x82\x01\x01\x00\x6D\x78\xD7\x66\x90\xA6\xEB\xDD\xB5\x09\x48\xA4\xDA\x27\xFA\xAC\xB1\xBC\x8F\x8C\xBE\xCC\x8C\x09\xA2\x40\x0D\x6C\x4A\xAE\x72\x22\x1E\xC8\xAF\x6D\xF1\x12\xAF\xD7\x40\x51\x79\xD4\xDD\xB2\x0C\xDB\x97\x84\xB6\x24\xD5\xF5\xA8\xBB\xC0\x4B\xF9\x7F\x71\xF7\xB0\x65\x42\x4A\x7D\xFE\x76\x7E\x05\xD2\x46\xB8\x7D\xB3\x39\x4C\x5C\xB1\xFA\xB9\xEE\x3B\x70\x33\x39\x57\x1A\xB9\x95\x51\x33\x00\x25\x1B\x4C\xAA\xB4\xA7\x55\xAF\x63\x6D\x6F\x88\x17\x6A\x7F\xB0\x97\xDE\x49\x14\x6A\x27\x6A\xB0\x42\x80\xD6\xA6\x9B\xEF\x04\x5E\x11\x7D\xD5\x8E\x54\x20\xA2\x76\xD4\x66\x58\xAC\x9C\x12\xD3\xF5\xCA\x54\x98\xCA\x21\xEC\xC1\x55\xA1\x2F\x68\x0B\x5D\x04\x50\xD2\x5E\x70\x25\xD8\x13\xD9\x44\x51\x0E\x8A\x42\x08\x18\x84\xE6\x61\xCE\x5A\x7D\x7B\x81\x35\x90\xC3\xD4\x9D\x19\xB6\x37\xEE\x8F\x63\x5C\xDA\xD8\xF0\x64\x60\x39\xEB\x9B\x1C\x54\x66\x75\x76\xB5\x0A\x58\xB9\x3F\x91\xE1\x21\x9C\xA0\x50\x15\x97\xB6\x7E\x41\xBC\xD0\xC4\x21\x4C\xF5\xD7\xF0\x13\xF8\x77\xE9\x74\xC4\x8A\x0E\x20\x17\x32\xAE\x38\xC2\xA5\xA8\x62\x85\x17\xB1\xA2\xD3\x22\x9F\x95\xB7\xA3\x4C" + +#define RESP2INFO \ + "OCSP Response Information:\n" \ + " Response Status: Successful\n" \ + " Response Type: Basic OCSP Response\n" \ + " Version: 1\n" \ + " Responder ID: CN=ocsp.strongswan.org,OU=OCSP Signing Authority,O=Linux strongSwan,C=CH\n" \ + " Produced At: Tue Sep 27 09:54:28 UTC 2011\n" \ + " Responses:\n" \ + " Certificate ID:\n" \ + " Hash Algorithm: SHA1\n" \ + " Issuer Name Hash: 139da09ef432ab8fe2895667fad0d4e3358671b9\n" \ + " Issuer Key Hash: 5da7dd700651327ee7b66db3b5e5e060ea2e4def\n" \ + " Serial Number: 1d\n" \ + " Certificate Status: good\n" \ + " This Update: Tue Sep 27 09:54:28 UTC 2011\n" \ + " Next Update: Tue Sep 27 09:59:28 UTC 2011\n" \ + " Extensions:\n" \ + " Nonce: 16897d913ab525a445fec9fdc2e508a4\n" \ + " Signature Algorithm: RSA-SHA1\n" \ + " Signature:\n" \ + " 4e:ad:6b:2b:f7:f2:bf:a9:23:1e:3a:0b:06:db:55:53\n" \ + " 2b:64:54:11:32:bf:60:f7:4f:e0:8e:9b:a0:a2:4c:79\n" \ + " c3:2a:e0:43:f7:40:1a:dc:b9:b4:25:ef:48:01:97:8c\n" \ + " f5:1e:db:d1:30:37:73:69:d6:a7:7a:2d:8e:de:5c:aa\n" \ + " ea:39:b9:52:aa:25:1e:74:7d:f9:78:95:8a:92:1f:98\n" \ + " 21:f4:60:7f:d3:28:ee:47:9c:bf:e2:5d:f6:3f:68:0a\n" \ + " d6:ff:08:c1:dc:95:1e:29:d7:3e:85:d5:65:a4:4b:c0\n" \ + " af:c3:78:ab:06:98:88:19:8a:64:a6:83:91:87:13:db\n" \ + " 17:cc:46:bd:ab:4e:c7:16:d1:f8:35:fd:27:c8:f6:6b\n" \ + " eb:37:b8:08:6f:e2:6f:b4:7e:d5:68:db:7f:5d:5e:36\n" \ + " 38:f2:77:59:13:e7:3e:4d:67:5f:db:a2:f5:5d:7c:bf\n" \ + " bd:b5:37:33:51:36:63:f8:21:1e:fc:73:8f:32:69:bb\n" \ + " 97:a7:bd:f1:b6:e0:40:09:68:ea:d5:93:b8:bb:39:8d\n" \ + " a8:16:1b:bf:04:7a:bc:18:43:01:e9:3c:19:5c:4d:4b\n" \ + " 98:d8:23:37:39:a4:c4:dd:ed:9c:ec:37:ab:66:44:9b\n" \ + " e7:5b:5d:32:a2:db:a6:0b:3b:8c:e1:f5:db:cb:7d:58\n" +/* cut */ + +static const gnutls_datum_t resp2 = { (unsigned char *)RESP2, + sizeof(RESP2) - 1 }; + +#define RESP3 \ + "\x30\x82\x01\xd3\x0a\x01\x00\xa0\x82\x01\xcc\x30\x82\x01\xc8\x06\x09\x2b\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x01\xb9\x30\x82\x01\xb5\x30\x81\x9e\xa2\x16\x04\x14\x50\xea\x73\x89\xdb\x29\xfb\x10\x8f\x9e\xe5\x01\x20\xd4\xde\x79\x99\x48\x83\xf7\x18\x0f\x32\x30\x31\x34\x30\x39\x30\x34\x30\x35\x34\x39\x30\x30\x5a\x30\x73\x30\x71\x30\x49\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04\x14\xed\x48\xad\xdd\xcb\x7b\x00\xe2\x0e\x84\x2a\xa9\xb4\x09\xf1\xac\x30\x34\xcf\x96\x04\x14\x50\xea\x73\x89\xdb\x29\xfb\x10\x8f\x9e\xe5\x01\x20\xd4\xde\x79\x99\x48\x83\xf7\x02\x10\x02\x01\x48\x91\x5d\xfd\x5e\xb6\xe0\x02\x90\xa9\x67\xb0\xe4\x64\x80\x00\x18\x0f\x32\x30\x31\x34\x30\x39\x30\x34\x30\x35\x34\x39\x30\x30\x5a\xa0\x11\x18\x0f\x32\x30\x31\x34\x30\x39\x31\x31\x30\x36\x30\x34\x30\x30\x5a\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x6e\x5e\x5e\x81\xff\x3f\x4d\xc7\x53\xc7\x1b\xf3\xd3\x1d\xdc\x9a\xc7\xce\x77\x2c\x67\x56\x13\x98\x91\x02\x01\x76\xdc\x48\xb2\x1f\x9b\x17\xea\xbf\x2c\x0a\xf5\x1d\x98\x90\x3c\x5f\x55\xc2\xff\x4b\x9a\xbc\xa6\x83\x9e\xab\x2b\xeb\x9d\x01\xea\x3b\x5f\xbe\x03\x29\x70\x63\x2a\xa4\x1d\xa8\xab\x69\xb2\x64\xba\x5d\x73\x91\x5c\x92\xf3\x69\xd4\xc9\x39\x9c\x7c\x7d\xa2\x47\x92\xc2\x56\xfe\xa1\x0d\x4a\x69\xff\xda\x48\xc5\x5e\xd8\xab\x39\x88\x6a\x06\xfa\x07\x57\xd6\x48\xb5\xce\xc9\x5f\xa5\x96\xfe\x37\x18\x5e\x7f\x35\x51\xc1\x9e\x79\x5a\x26\xba\x67\x67\x38\x2a\x80\x75\x42\x99\x68\x3e\xec\x2f\x7e\x2d\xa1\xa6\xbe\x9f\x01\x51\x22\x88\x3a\xc9\x9c\xed\x51\xef\x21\x66\x7e\xa9\xd0\x3f\x13\x9c\xbb\xd2\x94\x14\x6f\x4b\xd9\xc4\xf5\x2c\xf5\x7d\x07\x68\xf3\x51\xac\xda\xc2\x09\x66\xa9\x3d\xed\xad\x02\x4d\x9c\x11\x29\x1a\x54\xfb\x1e\x7e\x36\xf4\xbb\x0d\x08\x8c\x6a\x42\x08\x10\x29\x08\x7c\x56\x0b\x18\x47\xff\x87\x11\xfd\xb2\xfb\xc9\x22\x7f\xe3\x1f\x7b\xf9\x98\xaa\x3a\x32\xb6\x2f\x02\xba\xb6\xc1\xdc\xc3\x5d\xb5\x4b\xae\x5d\x29\x6a\x31\xde\xcd" + +#define RESP3INFO \ + "OCSP Response Information:\n" \ + " Response Status: Successful\n" \ + " Response Type: Basic OCSP Response\n" \ + " Version: 1\n" \ + " Responder Key ID: 50ea7389db29fb108f9ee50120d4de79994883f7\n" \ + " Produced At: Thu Sep 04 05:49:00 UTC 2014\n" \ + " Responses:\n" \ + " Certificate ID:\n" \ + " Hash Algorithm: SHA1\n" \ + " Issuer Name Hash: ed48adddcb7b00e20e842aa9b409f1ac3034cf96\n" \ + " Issuer Key Hash: 50ea7389db29fb108f9ee50120d4de79994883f7\n" \ + " Serial Number: 020148915dfd5eb6e00290a967b0e464\n" \ + " Certificate Status: good\n" \ + " This Update: Thu Sep 04 05:49:00 UTC 2014\n" \ + " Next Update: Thu Sep 11 06:04:00 UTC 2014\n" \ + " Extensions:\n" \ + " Signature Algorithm: RSA-SHA1\n" \ + " Signature:\n" \ + " 6e:5e:5e:81:ff:3f:4d:c7:53:c7:1b:f3:d3:1d:dc:9a\n" \ + " c7:ce:77:2c:67:56:13:98:91:02:01:76:dc:48:b2:1f\n" \ + " 9b:17:ea:bf:2c:0a:f5:1d:98:90:3c:5f:55:c2:ff:4b\n" \ + " 9a:bc:a6:83:9e:ab:2b:eb:9d:01:ea:3b:5f:be:03:29\n" \ + " 70:63:2a:a4:1d:a8:ab:69:b2:64:ba:5d:73:91:5c:92\n" \ + " f3:69:d4:c9:39:9c:7c:7d:a2:47:92:c2:56:fe:a1:0d\n" \ + " 4a:69:ff:da:48:c5:5e:d8:ab:39:88:6a:06:fa:07:57\n" \ + " d6:48:b5:ce:c9:5f:a5:96:fe:37:18:5e:7f:35:51:c1\n" \ + " 9e:79:5a:26:ba:67:67:38:2a:80:75:42:99:68:3e:ec\n" \ + " 2f:7e:2d:a1:a6:be:9f:01:51:22:88:3a:c9:9c:ed:51\n" \ + " ef:21:66:7e:a9:d0:3f:13:9c:bb:d2:94:14:6f:4b:d9\n" \ + " c4:f5:2c:f5:7d:07:68:f3:51:ac:da:c2:09:66:a9:3d\n" \ + " ed:ad:02:4d:9c:11:29:1a:54:fb:1e:7e:36:f4:bb:0d\n" \ + " 08:8c:6a:42:08:10:29:08:7c:56:0b:18:47:ff:87:11\n" \ + " fd:b2:fb:c9:22:7f:e3:1f:7b:f9:98:aa:3a:32:b6:2f\n" \ + " 02:ba:b6:c1:dc:c3:5d:b5:4b:ae:5d:29:6a:31:de:cd\n" + +static const gnutls_datum_t resp3 = { (unsigned char *)RESP3, + sizeof(RESP3) - 1 }; static unsigned char issuer_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIDuDCCAqCgAwIBAgIBADANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJDSDEZ\n" - "MBcGA1UEChMQTGludXggc3Ryb25nU3dhbjEbMBkGA1UEAxMSc3Ryb25nU3dhbiBS\n" - "b290IENBMB4XDTA0MDkxMDEwMDExOFoXDTE5MDkwNzEwMDExOFowRTELMAkGA1UE\n" - "BhMCQ0gxGTAXBgNVBAoTEExpbnV4IHN0cm9uZ1N3YW4xGzAZBgNVBAMTEnN0cm9u\n" - "Z1N3YW4gUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL/y\n" - "X2LqPVZuWLPIeknK86xhz6ljd3NNhC2z+P1uoCP3sBMuZiZQEjFzhnKcbXxCeo2f\n" - "FnvhOOjrrisSuVkzuu82oxXD3fIkzuS7m9V4E10EZzgmKWIf+WuNRfbgAuUINmLc\n" - "4YGAXBQLPyzpP4Ou48hhz/YQo58Bics6PHy5v34qCVROIXDvqhj91P8g+pS+F21/\n" - "7P+CH2jRcVIEHZtG8M/PweTPQ95dPzpYd2Ov6SZ/U7EWmbMmT8VcUYn1aChxFmy5\n" - "gweVBWlkH6MP+1DeE0/tL5c87xo5KCeGK8Tdqpe7sBRC4pPEEHDQciTUvkeuJ1Pr\n" - "K+1LwdqRxo7HgMRiDw8CAwEAAaOBsjCBrzASBgNVHRMBAf8ECDAGAQH/AgEBMAsG\n" - "A1UdDwQEAwIBBjAdBgNVHQ4EFgQUXafdcAZRMn7ntm2zteXgYOouTe8wbQYDVR0j\n" - "BGYwZIAUXafdcAZRMn7ntm2zteXgYOouTe+hSaRHMEUxCzAJBgNVBAYTAkNIMRkw\n" - "FwYDVQQKExBMaW51eCBzdHJvbmdTd2FuMRswGQYDVQQDExJzdHJvbmdTd2FuIFJv\n" - "b3QgQ0GCAQAwDQYJKoZIhvcNAQELBQADggEBACOSmqEBtBLR9aV3UyCI8gmzR5in\n" - "Lte9aUXXS+qis6F2h2Stf4sN+Nl6Gj7REC6SpfEH4wWdwiUL5J0CJhyoOjQuDl3n\n" - "1Dw3dE4/zqMZdyDKEYTU75TmvusNJBdGsLkrf7EATAjoi/nrTOYPPhSUZvPp/D+Y\n" - "vORJ9Ej51GXlK1nwEB5iA8+tDYniNQn6BD1MEgIejzK+fbiy7braZB1kqhoEr2Si\n" - "7luBSnU912sw494E88a2EWbmMvg2TVHPNzCpVkpNk7kifCiwmw9VldkqYy9y/lCa\n" - "Epyp7lTfKw7cbD04Vk8QJW782L6Csuxkl346b17wmOqn8AZips3tFsuAY3w=\n" - "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIDuDCCAqCgAwIBAgIBADANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJDSDEZ\n" + "MBcGA1UEChMQTGludXggc3Ryb25nU3dhbjEbMBkGA1UEAxMSc3Ryb25nU3dhbiBS\n" + "b290IENBMB4XDTA0MDkxMDEwMDExOFoXDTE5MDkwNzEwMDExOFowRTELMAkGA1UE\n" + "BhMCQ0gxGTAXBgNVBAoTEExpbnV4IHN0cm9uZ1N3YW4xGzAZBgNVBAMTEnN0cm9u\n" + "Z1N3YW4gUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL/y\n" + "X2LqPVZuWLPIeknK86xhz6ljd3NNhC2z+P1uoCP3sBMuZiZQEjFzhnKcbXxCeo2f\n" + "FnvhOOjrrisSuVkzuu82oxXD3fIkzuS7m9V4E10EZzgmKWIf+WuNRfbgAuUINmLc\n" + "4YGAXBQLPyzpP4Ou48hhz/YQo58Bics6PHy5v34qCVROIXDvqhj91P8g+pS+F21/\n" + "7P+CH2jRcVIEHZtG8M/PweTPQ95dPzpYd2Ov6SZ/U7EWmbMmT8VcUYn1aChxFmy5\n" + "gweVBWlkH6MP+1DeE0/tL5c87xo5KCeGK8Tdqpe7sBRC4pPEEHDQciTUvkeuJ1Pr\n" + "K+1LwdqRxo7HgMRiDw8CAwEAAaOBsjCBrzASBgNVHRMBAf8ECDAGAQH/AgEBMAsG\n" + "A1UdDwQEAwIBBjAdBgNVHQ4EFgQUXafdcAZRMn7ntm2zteXgYOouTe8wbQYDVR0j\n" + "BGYwZIAUXafdcAZRMn7ntm2zteXgYOouTe+hSaRHMEUxCzAJBgNVBAYTAkNIMRkw\n" + "FwYDVQQKExBMaW51eCBzdHJvbmdTd2FuMRswGQYDVQQDExJzdHJvbmdTd2FuIFJv\n" + "b3QgQ0GCAQAwDQYJKoZIhvcNAQELBQADggEBACOSmqEBtBLR9aV3UyCI8gmzR5in\n" + "Lte9aUXXS+qis6F2h2Stf4sN+Nl6Gj7REC6SpfEH4wWdwiUL5J0CJhyoOjQuDl3n\n" + "1Dw3dE4/zqMZdyDKEYTU75TmvusNJBdGsLkrf7EATAjoi/nrTOYPPhSUZvPp/D+Y\n" + "vORJ9Ej51GXlK1nwEB5iA8+tDYniNQn6BD1MEgIejzK+fbiy7braZB1kqhoEr2Si\n" + "7luBSnU912sw494E88a2EWbmMvg2TVHPNzCpVkpNk7kifCiwmw9VldkqYy9y/lCa\n" + "Epyp7lTfKw7cbD04Vk8QJW782L6Csuxkl346b17wmOqn8AZips3tFsuAY3w=\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t issuer_data = { issuer_pem, sizeof(issuer_pem) }; static unsigned char subject_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIEIjCCAwqgAwIBAgIBHTANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJDSDEZ\n" - "MBcGA1UEChMQTGludXggc3Ryb25nU3dhbjEbMBkGA1UEAxMSc3Ryb25nU3dhbiBS\n" - "b290IENBMB4XDTA5MDgyNzEwNDQ1MVoXDTE0MDgyNjEwNDQ1MVowWjELMAkGA1UE\n" - "BhMCQ0gxGTAXBgNVBAoTEExpbnV4IHN0cm9uZ1N3YW4xETAPBgNVBAsTCFJlc2Vh\n" - "cmNoMR0wGwYDVQQDFBRjYXJvbEBzdHJvbmdzd2FuLm9yZzCCASIwDQYJKoZIhvcN\n" - "AQEBBQADggEPADCCAQoCggEBANBdWU+BF7x4lyo+xHnr4UAOU89yQQuT5vdPoXzx\n" - "6kRPsjYAuuktgXR+SaLkQHw/YRgDPSKj5nzmmlOQf/rWRr+8O2q+C92aUICmkNvZ\n" - "Gamo5w2WlOMZ6T5dk2Hv+QM6xT/GzWyVr1dMYu/7tywD1Bw7aW/HqkRESDu6q95V\n" - "Wu+Lzg6XlxCNEez0YsZrN/fC6BL2qzKAqMBbIHFW8OOnh+nEY4IF5AzkZnFrw12G\n" - "I72Z882pw97lyKwZhSz/GMQFBJx+rnNdw5P1IJwTlG5PUdoDCte/Mcr1iiA+zOov\n" - "x55x1GoGxduoXWU5egrf1MtalRf9Pc8Xr4q3WEKTAmsZrVECAwEAAaOCAQYwggEC\n" - "MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgOoMB0GA1UdDgQWBBQfoamI2WSMtaCiVGQ5\n" - "tPI9dF1ufDBtBgNVHSMEZjBkgBRdp91wBlEyfue2bbO15eBg6i5N76FJpEcwRTEL\n" - "MAkGA1UEBhMCQ0gxGTAXBgNVBAoTEExpbnV4IHN0cm9uZ1N3YW4xGzAZBgNVBAMT\n" - "EnN0cm9uZ1N3YW4gUm9vdCBDQYIBADAfBgNVHREEGDAWgRRjYXJvbEBzdHJvbmdz\n" - "d2FuLm9yZzA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vY3JsLnN0cm9uZ3N3YW4u\n" - "b3JnL3N0cm9uZ3N3YW4uY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQC8pqX3KrSzKeul\n" - "GdzydAV4hGwYB3WiB02oJ2nh5MJBu7J0Kn4IVkvLUHSSZhSRxx55tQZfdYqtXVS7\n" - "ZuyG+6rV7sb595SIRwfkLAdjbvv0yZIl4xx8j50K3yMR+9aXW1NSGPEkb8BjBUMr\n" - "F2kjGTOqomo8OIzyI369z9kJrtEhnS37nHcdpewZC1wHcWfJ6wd9wxmz2dVXmgVQ\n" - "L2BjXd/BcpLFaIC4h7jMXQ5FURjnU7K9xSa4T8PpR6FrQhOcIYBXAp94GiM8JqmK\n" - "ZBGUpeP+3cy4i3DV18Kyr64Q4XZlzhZClNE43sgMqiX88dc3znpDzT7T51j+d+9k\n" - "Rf5Z0GOR\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIEIjCCAwqgAwIBAgIBHTANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJDSDEZ\n" + "MBcGA1UEChMQTGludXggc3Ryb25nU3dhbjEbMBkGA1UEAxMSc3Ryb25nU3dhbiBS\n" + "b290IENBMB4XDTA5MDgyNzEwNDQ1MVoXDTE0MDgyNjEwNDQ1MVowWjELMAkGA1UE\n" + "BhMCQ0gxGTAXBgNVBAoTEExpbnV4IHN0cm9uZ1N3YW4xETAPBgNVBAsTCFJlc2Vh\n" + "cmNoMR0wGwYDVQQDFBRjYXJvbEBzdHJvbmdzd2FuLm9yZzCCASIwDQYJKoZIhvcN\n" + "AQEBBQADggEPADCCAQoCggEBANBdWU+BF7x4lyo+xHnr4UAOU89yQQuT5vdPoXzx\n" + "6kRPsjYAuuktgXR+SaLkQHw/YRgDPSKj5nzmmlOQf/rWRr+8O2q+C92aUICmkNvZ\n" + "Gamo5w2WlOMZ6T5dk2Hv+QM6xT/GzWyVr1dMYu/7tywD1Bw7aW/HqkRESDu6q95V\n" + "Wu+Lzg6XlxCNEez0YsZrN/fC6BL2qzKAqMBbIHFW8OOnh+nEY4IF5AzkZnFrw12G\n" + "I72Z882pw97lyKwZhSz/GMQFBJx+rnNdw5P1IJwTlG5PUdoDCte/Mcr1iiA+zOov\n" + "x55x1GoGxduoXWU5egrf1MtalRf9Pc8Xr4q3WEKTAmsZrVECAwEAAaOCAQYwggEC\n" + "MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgOoMB0GA1UdDgQWBBQfoamI2WSMtaCiVGQ5\n" + "tPI9dF1ufDBtBgNVHSMEZjBkgBRdp91wBlEyfue2bbO15eBg6i5N76FJpEcwRTEL\n" + "MAkGA1UEBhMCQ0gxGTAXBgNVBAoTEExpbnV4IHN0cm9uZ1N3YW4xGzAZBgNVBAMT\n" + "EnN0cm9uZ1N3YW4gUm9vdCBDQYIBADAfBgNVHREEGDAWgRRjYXJvbEBzdHJvbmdz\n" + "d2FuLm9yZzA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vY3JsLnN0cm9uZ3N3YW4u\n" + "b3JnL3N0cm9uZ3N3YW4uY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQC8pqX3KrSzKeul\n" + "GdzydAV4hGwYB3WiB02oJ2nh5MJBu7J0Kn4IVkvLUHSSZhSRxx55tQZfdYqtXVS7\n" + "ZuyG+6rV7sb595SIRwfkLAdjbvv0yZIl4xx8j50K3yMR+9aXW1NSGPEkb8BjBUMr\n" + "F2kjGTOqomo8OIzyI369z9kJrtEhnS37nHcdpewZC1wHcWfJ6wd9wxmz2dVXmgVQ\n" + "L2BjXd/BcpLFaIC4h7jMXQ5FURjnU7K9xSa4T8PpR6FrQhOcIYBXAp94GiM8JqmK\n" + "ZBGUpeP+3cy4i3DV18Kyr64Q4XZlzhZClNE43sgMqiX88dc3znpDzT7T51j+d+9k\n" + "Rf5Z0GOR\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t subject_data = { subject_pem, sizeof(subject_pem) }; /* For testing verify functions. */ -#define BLOG_RESP "\x30\x82\x06\xF8\x0A\x01\x00\xA0\x82\x06\xF1\x30\x82\x06\xED\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x06\xDE\x30\x82\x06\xDA\x30\x82\x01\x25\xA1\x7E\x30\x7C\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x41\x55\x31\x0C\x30\x0A\x06\x03\x55\x04\x08\x13\x03\x4E\x53\x57\x31\x0F\x30\x0D\x06\x03\x55\x04\x07\x13\x06\x53\x79\x64\x6E\x65\x79\x31\x14\x30\x12\x06\x03\x55\x04\x0A\x13\x0B\x43\x41\x63\x65\x72\x74\x20\x49\x6E\x63\x2E\x31\x1E\x30\x1C\x06\x03\x55\x04\x0B\x13\x15\x53\x65\x72\x76\x65\x72\x20\x41\x64\x6D\x69\x6E\x69\x73\x74\x72\x61\x74\x69\x6F\x6E\x31\x18\x30\x16\x06\x03\x55\x04\x03\x13\x0F\x6F\x63\x73\x70\x2E\x63\x61\x63\x65\x72\x74\x2E\x6F\x72\x67\x18\x0F\x32\x30\x31\x32\x30\x31\x31\x33\x30\x38\x35\x30\x34\x32\x5A\x30\x66\x30\x64\x30\x3C\x30\x09\x06\x05\x2B\x0E\x03\x02\x1A\x05\x00\x04\x14\xF2\x2A\x62\x16\x93\xA6\xDA\x5A\xD0\xB9\x8D\x3A\x13\x5E\x35\xD1\xEB\x18\x36\x61\x04\x14\x75\xA8\x71\x60\x4C\x88\x13\xF0\x78\xD9\x89\x77\xB5\x6D\xC5\x89\xDF\xBC\xB1\x7A\x02\x03\x00\xBC\xE0\x80\x00\x18\x0F\x32\x30\x31\x32\x30\x31\x31\x33\x30\x37\x32\x30\x34\x39\x5A\xA0\x11\x18\x0F\x32\x30\x31\x32\x30\x31\x31\x35\x30\x38\x35\x30\x34\x32\x5A\xA1\x2A\x30\x28\x30\x26\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x02\x04\x19\x04\x17\x73\x69\xD2\xC5\x6F\xC7\x7E\x2E\xB0\x2F\xCC\xC3\xE2\x80\xD6\x2A\xCE\xD3\xDE\x8F\x27\x1B\xB2\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x3E\x50\x9D\xE9\xA2\xE0\xCA\x33\x88\x9B\x28\x7E\xE7\xA4\xAF\xDA\xBB\x75\x2D\xD9\x66\xA6\xD5\xFA\x17\x56\xC0\x3B\xDD\x74\xB6\x7E\x42\x2C\x28\xD0\x73\x91\x54\x69\xFA\xCF\xD8\xC7\x74\x1C\x5D\xBC\x8E\xCD\xE3\x0E\xD5\x3F\x80\x71\x9C\x95\x53\xC4\xD1\x95\x63\x5D\x72\xCE\xCC\x77\x9D\x7C\xAD\x47\x3F\x34\xDA\x90\x80\xC5\x15\xE1\x2B\xEE\x98\x57\xA3\xA7\x9F\xA2\xC3\xF5\x5E\xF7\x13\x26\x52\xDA\x09\x38\x5B\x18\x91\x07\x38\xCF\x09\xDA\x08\xED\x80\x4F\x26\x3A\xB9\xBE\xF6\xED\x65\x3F\xB1\x3A\x6D\xA3\x87\x22\xA3\x2A\xA5\x99\xCC\x06\xF3\x5A\xD5\x34\xFB\x9E\x32\x28\xC3\x3E\xF4\xAF\x33\x02\xCF\x6A\x74\x73\x17\x24\x17\x41\x0D\x7E\x86\x79\x83\x34\xE8\x82\x0A\x0D\x21\xED\xCB\x3B\xB7\x31\x64\xC9\xB6\x1E\xC7\x0C\x75\xCE\xBA\xB7\xDC\xB2\x67\x96\x2B\xAD\xBF\x86\x22\x81\x54\x66\xBA\x68\x89\xD7\x7E\x35\x60\x93\xEC\x6B\xD8\x59\x23\xA0\xD0\x95\x55\x8F\x93\x52\x48\x4E\x48\xCB\x92\xE9\x67\x71\x60\x07\xC9\xA3\x3B\xAC\xD1\xEA\x5B\x71\xDB\xC1\x94\x79\x85\x55\x8C\x03\x61\x9E\xC7\xD6\x32\x40\xFA\xDD\xF6\xC9\xF8\xE0\xFF\x4D\xAC\x54\xED\x61\xFE\xB2\xA0\x82\x04\x99\x30\x82\x04\x95\x30\x82\x04\x91\x30\x82\x02\x79\xA0\x03\x02\x01\x02\x02\x03\x00\xDC\xA6\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00\x30\x54\x31\x14\x30\x12\x06\x03\x55\x04\x0A\x13\x0B\x43\x41\x63\x65\x72\x74\x20\x49\x6E\x63\x2E\x31\x1E\x30\x1C\x06\x03\x55\x04\x0B\x13\x15\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x43\x41\x63\x65\x72\x74\x2E\x6F\x72\x67\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x43\x41\x63\x65\x72\x74\x20\x43\x6C\x61\x73\x73\x20\x33\x20\x52\x6F\x6F\x74\x30\x1E\x17\x0D\x31\x31\x30\x38\x32\x33\x30\x30\x30\x38\x33\x37\x5A\x17\x0D\x31\x33\x30\x38\x32\x32\x30\x30\x30\x38\x33\x37\x5A\x30\x7C\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x41\x55\x31\x0C\x30\x0A\x06\x03\x55\x04\x08\x13\x03\x4E\x53\x57\x31\x0F\x30\x0D\x06\x03\x55\x04\x07\x13\x06\x53\x79\x64\x6E\x65\x79\x31\x14\x30\x12\x06\x03\x55\x04\x0A\x13\x0B\x43\x41\x63\x65\x72\x74\x20\x49\x6E\x63\x2E\x31\x1E\x30\x1C\x06\x03\x55\x04\x0B\x13\x15\x53\x65\x72\x76\x65\x72\x20\x41\x64\x6D\x69\x6E\x69\x73\x74\x72\x61\x74\x69\x6F\x6E\x31\x18\x30\x16\x06\x03\x55\x04\x03\x13\x0F\x6F\x63\x73\x70\x2E\x63\x61\x63\x65\x72\x74\x2E\x6F\x72\x67\x30\x82\x01\x22\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00\x03\x82\x01\x0F\x00\x30\x82\x01\x0A\x02\x82\x01\x01\x00\x9C\xC6\xD4\x6F\xE4\x23\xC7\xC3\x70\x4B\x75\x1F\xE4\xFC\xAE\xF6\x62\xC4\x60\xA1\xD6\xCF\xF9\x47\x40\x38\xD9\xAF\x06\xF5\xB3\x87\x09\xBA\x07\xC8\x7A\x3B\xE3\x3A\xE2\xC1\x6B\xDB\x0E\x9B\x7B\xB4\x98\x04\x40\x88\xC8\xE4\x20\x34\x9D\x5F\x94\xAE\x0C\xA0\x05\xA1\x74\x10\x3F\x1F\x93\x6D\xC5\xA0\xCE\x29\xB0\x2A\x03\x6E\xED\x3B\xD1\x9A\x7A\xF7\x0F\xA7\xB7\x39\xD7\xC3\xB4\xDE\x15\x67\x94\xF2\xEF\xB0\xDD\x5F\xE3\xC9\xD8\xD2\x34\x0E\x5D\x44\xDF\xBF\x99\xD8\x5E\x60\xF4\x39\x24\x8A\xFD\x5D\xC8\x46\x8D\x0A\xB1\x60\x7A\x4F\xD5\x27\x30\x60\x9E\x13\x06\xF8\x3A\xAA\xB3\xBB\x33\x34\x6F\x84\x81\x7E\x5C\xCC\x12\x89\xF2\xFE\x6E\x93\x83\xFA\x8B\xEE\xAB\x36\x4C\xB6\x40\xA9\xEE\xFB\xF8\x16\x5A\x55\xD1\x64\x0D\x49\xDA\x04\xDE\xD1\xC8\xCA\xEE\x5F\x24\xB1\x79\x78\xB3\x9A\x88\x13\xDD\x68\x51\x39\xE9\x68\x31\xAF\xD7\xF8\x4D\x35\x6D\x60\x58\x04\x42\xBB\x55\x92\x18\xF6\x98\x01\xA5\x74\x3B\xBC\x36\xDB\x20\x68\x18\xB8\x85\xD4\x8B\x6D\x30\x87\x4D\xD6\x33\x2D\x7A\x54\x36\x1D\x57\x42\x14\x5C\x7A\x62\x74\xD5\x1E\x2B\xD5\xBF\x04\xF3\xFF\xEC\x03\xC1\x02\x03\x01\x00\x01\xA3\x44\x30\x42\x30\x0C\x06\x03\x55\x1D\x13\x01\x01\xFF\x04\x02\x30\x00\x30\x27\x06\x03\x55\x1D\x25\x04\x20\x30\x1E\x06\x08\x2B\x06\x01\x05\x05\x07\x03\x02\x06\x08\x2B\x06\x01\x05\x05\x07\x03\x01\x06\x08\x2B\x06\x01\x05\x05\x07\x03\x09\x30\x09\x06\x03\x55\x1D\x11\x04\x02\x30\x00\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00\x03\x82\x02\x01\x00\x50\xDD\x63\xB7\x1A\x6F\x91\x4C\xE8\x7F\x82\x1A\x27\x04\x81\x05\xBB\xA6\x69\xAC\x41\x7B\x62\xFC\x4B\x08\xDC\x60\xCF\xB2\x5A\xF1\xB4\xB5\x27\x69\x6B\x12\xE4\x07\xC8\x16\xCE\x3B\x42\xCC\x02\x90\x66\x0E\x79\xB8\x6C\x4B\x90\x00\xC5\x66\x64\x92\x2B\x2B\x48\x0E\x84\xC2\x6D\xBF\xA5\xDE\x16\xE3\xBD\x19\xF5\x5C\x93\xA1\x86\x7F\xD9\x89\x78\x6A\x3F\x83\xF0\xAA\xF8\xEA\x1D\xA4\x13\xF7\x2A\x15\x4C\x51\x9C\xC4\xB0\xBE\x58\x66\xCF\x4C\x6C\x3D\x31\xE5\xF9\x54\x21\xCD\xA1\x30\x01\x6A\xB3\x1A\x48\x85\x34\x93\xB8\xF9\x15\x19\x48\x34\x8D\x73\xE7\x03\x50\xAF\xDE\x50\xC7\x62\xAF\x25\x22\x2B\xF6\xE8\x37\x2E\xE4\x71\xA9\x5C\x26\xEA\x79\xCB\x04\x29\x73\x6B\x8F\xDF\x1F\x5C\x41\x52\xC0\x36\xAA\xD7\x7D\x8E\x44\x54\x98\x06\x4C\x63\xA6\x0B\x01\x94\x5D\x0C\x5C\xD4\xCF\xCB\x0B\x7B\x2D\x56\xCC\xBF\x97\x7F\x15\x24\x1D\xBA\xEA\xB7\x97\xB0\x32\xAD\xFC\xEA\x6D\x94\x39\x7A\xE3\x25\x54\xFC\x4A\xF5\x3D\xBD\x2E\xD5\x31\x07\x49\x24\xCC\x92\x69\x0E\x79\xB9\xDF\xDB\x36\xBF\x04\x44\x15\xD0\x46\x99\x8C\xD2\x4C\x94\x38\x0E\x10\x64\x13\xAB\xD9\x1B\x54\x02\x31\x56\x20\xEE\x69\x95\xDF\x39\xBB\xE9\xA7\x6D\xC3\x23\x86\x0B\xD6\x34\x40\x37\xC3\xD4\x41\xA8\x2E\x71\x1D\x6E\x5B\xD7\xC5\x9F\x2A\xE6\x02\x80\xAE\x0A\x28\x69\x63\x4B\x89\x2E\xBD\x4F\x42\x58\xFB\x86\x9A\xA2\x18\xDC\xC6\x32\xC1\x46\xBA\x28\xD2\x8B\xCE\x56\x63\x04\x80\x51\x51\x39\x00\x3B\x00\xB9\x5F\x67\xFA\x90\x1E\xDA\x76\xB5\x31\xA5\xBD\x11\xD2\x5F\xDA\x5D\xD5\xF7\xEE\xAB\xC0\x62\x74\x60\x47\x32\x42\xFD\xB2\x2E\x04\x3A\x2E\xF2\xC8\xB3\x41\xA3\xBD\xFE\x94\x5F\xEF\x6E\xD7\x92\x7C\x1D\x04\xF0\xC6\x53\x8E\x46\xDC\x30\x3A\x35\x5F\x1A\x4B\xEA\x3B\x00\x8B\x97\xB5\xB9\xCE\x71\x6E\x5C\xD5\xA0\x0B\xB1\x33\x08\x89\x61\x23\xCF\x97\x9F\x8F\x9A\x50\xB5\xEC\xCE\x40\x8D\x82\x95\x8B\x79\x26\x66\xF3\xF4\x70\xD8\xEE\x58\xDD\x75\x29\xD5\x6A\x91\x51\x7A\x17\xBC\x4F\xD4\xA3\x45\x7B\x84\xE7\xBE\x69\x53\xC1\xE2\x5C\xC8\x45\xA0\x3A\xEC\xDF\x8A\x1E\xC1\x18\x84\x8B\x7A\x4E\x4E\x9E\x3A\x26\xFE\x5D\x22\xD4\xC5\x14\xBE\xEE\x06\xEB\x05\x4A\x66\xC9\xA4\xB3\x68\x04\xB0\x5D\x25\x54\xB3\x05\xED\x41\xF0\x65\x69\x6D\xA5\x4E\xB7\x97\xD8\xD8\xF5" +#define BLOG_RESP \ + "\x30\x82\x06\xF8\x0A\x01\x00\xA0\x82\x06\xF1\x30\x82\x06\xED\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x06\xDE\x30\x82\x06\xDA\x30\x82\x01\x25\xA1\x7E\x30\x7C\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x41\x55\x31\x0C\x30\x0A\x06\x03\x55\x04\x08\x13\x03\x4E\x53\x57\x31\x0F\x30\x0D\x06\x03\x55\x04\x07\x13\x06\x53\x79\x64\x6E\x65\x79\x31\x14\x30\x12\x06\x03\x55\x04\x0A\x13\x0B\x43\x41\x63\x65\x72\x74\x20\x49\x6E\x63\x2E\x31\x1E\x30\x1C\x06\x03\x55\x04\x0B\x13\x15\x53\x65\x72\x76\x65\x72\x20\x41\x64\x6D\x69\x6E\x69\x73\x74\x72\x61\x74\x69\x6F\x6E\x31\x18\x30\x16\x06\x03\x55\x04\x03\x13\x0F\x6F\x63\x73\x70\x2E\x63\x61\x63\x65\x72\x74\x2E\x6F\x72\x67\x18\x0F\x32\x30\x31\x32\x30\x31\x31\x33\x30\x38\x35\x30\x34\x32\x5A\x30\x66\x30\x64\x30\x3C\x30\x09\x06\x05\x2B\x0E\x03\x02\x1A\x05\x00\x04\x14\xF2\x2A\x62\x16\x93\xA6\xDA\x5A\xD0\xB9\x8D\x3A\x13\x5E\x35\xD1\xEB\x18\x36\x61\x04\x14\x75\xA8\x71\x60\x4C\x88\x13\xF0\x78\xD9\x89\x77\xB5\x6D\xC5\x89\xDF\xBC\xB1\x7A\x02\x03\x00\xBC\xE0\x80\x00\x18\x0F\x32\x30\x31\x32\x30\x31\x31\x33\x30\x37\x32\x30\x34\x39\x5A\xA0\x11\x18\x0F\x32\x30\x31\x32\x30\x31\x31\x35\x30\x38\x35\x30\x34\x32\x5A\xA1\x2A\x30\x28\x30\x26\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x02\x04\x19\x04\x17\x73\x69\xD2\xC5\x6F\xC7\x7E\x2E\xB0\x2F\xCC\xC3\xE2\x80\xD6\x2A\xCE\xD3\xDE\x8F\x27\x1B\xB2\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x3E\x50\x9D\xE9\xA2\xE0\xCA\x33\x88\x9B\x28\x7E\xE7\xA4\xAF\xDA\xBB\x75\x2D\xD9\x66\xA6\xD5\xFA\x17\x56\xC0\x3B\xDD\x74\xB6\x7E\x42\x2C\x28\xD0\x73\x91\x54\x69\xFA\xCF\xD8\xC7\x74\x1C\x5D\xBC\x8E\xCD\xE3\x0E\xD5\x3F\x80\x71\x9C\x95\x53\xC4\xD1\x95\x63\x5D\x72\xCE\xCC\x77\x9D\x7C\xAD\x47\x3F\x34\xDA\x90\x80\xC5\x15\xE1\x2B\xEE\x98\x57\xA3\xA7\x9F\xA2\xC3\xF5\x5E\xF7\x13\x26\x52\xDA\x09\x38\x5B\x18\x91\x07\x38\xCF\x09\xDA\x08\xED\x80\x4F\x26\x3A\xB9\xBE\xF6\xED\x65\x3F\xB1\x3A\x6D\xA3\x87\x22\xA3\x2A\xA5\x99\xCC\x06\xF3\x5A\xD5\x34\xFB\x9E\x32\x28\xC3\x3E\xF4\xAF\x33\x02\xCF\x6A\x74\x73\x17\x24\x17\x41\x0D\x7E\x86\x79\x83\x34\xE8\x82\x0A\x0D\x21\xED\xCB\x3B\xB7\x31\x64\xC9\xB6\x1E\xC7\x0C\x75\xCE\xBA\xB7\xDC\xB2\x67\x96\x2B\xAD\xBF\x86\x22\x81\x54\x66\xBA\x68\x89\xD7\x7E\x35\x60\x93\xEC\x6B\xD8\x59\x23\xA0\xD0\x95\x55\x8F\x93\x52\x48\x4E\x48\xCB\x92\xE9\x67\x71\x60\x07\xC9\xA3\x3B\xAC\xD1\xEA\x5B\x71\xDB\xC1\x94\x79\x85\x55\x8C\x03\x61\x9E\xC7\xD6\x32\x40\xFA\xDD\xF6\xC9\xF8\xE0\xFF\x4D\xAC\x54\xED\x61\xFE\xB2\xA0\x82\x04\x99\x30\x82\x04\x95\x30\x82\x04\x91\x30\x82\x02\x79\xA0\x03\x02\x01\x02\x02\x03\x00\xDC\xA6\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00\x30\x54\x31\x14\x30\x12\x06\x03\x55\x04\x0A\x13\x0B\x43\x41\x63\x65\x72\x74\x20\x49\x6E\x63\x2E\x31\x1E\x30\x1C\x06\x03\x55\x04\x0B\x13\x15\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x43\x41\x63\x65\x72\x74\x2E\x6F\x72\x67\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x43\x41\x63\x65\x72\x74\x20\x43\x6C\x61\x73\x73\x20\x33\x20\x52\x6F\x6F\x74\x30\x1E\x17\x0D\x31\x31\x30\x38\x32\x33\x30\x30\x30\x38\x33\x37\x5A\x17\x0D\x31\x33\x30\x38\x32\x32\x30\x30\x30\x38\x33\x37\x5A\x30\x7C\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x41\x55\x31\x0C\x30\x0A\x06\x03\x55\x04\x08\x13\x03\x4E\x53\x57\x31\x0F\x30\x0D\x06\x03\x55\x04\x07\x13\x06\x53\x79\x64\x6E\x65\x79\x31\x14\x30\x12\x06\x03\x55\x04\x0A\x13\x0B\x43\x41\x63\x65\x72\x74\x20\x49\x6E\x63\x2E\x31\x1E\x30\x1C\x06\x03\x55\x04\x0B\x13\x15\x53\x65\x72\x76\x65\x72\x20\x41\x64\x6D\x69\x6E\x69\x73\x74\x72\x61\x74\x69\x6F\x6E\x31\x18\x30\x16\x06\x03\x55\x04\x03\x13\x0F\x6F\x63\x73\x70\x2E\x63\x61\x63\x65\x72\x74\x2E\x6F\x72\x67\x30\x82\x01\x22\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00\x03\x82\x01\x0F\x00\x30\x82\x01\x0A\x02\x82\x01\x01\x00\x9C\xC6\xD4\x6F\xE4\x23\xC7\xC3\x70\x4B\x75\x1F\xE4\xFC\xAE\xF6\x62\xC4\x60\xA1\xD6\xCF\xF9\x47\x40\x38\xD9\xAF\x06\xF5\xB3\x87\x09\xBA\x07\xC8\x7A\x3B\xE3\x3A\xE2\xC1\x6B\xDB\x0E\x9B\x7B\xB4\x98\x04\x40\x88\xC8\xE4\x20\x34\x9D\x5F\x94\xAE\x0C\xA0\x05\xA1\x74\x10\x3F\x1F\x93\x6D\xC5\xA0\xCE\x29\xB0\x2A\x03\x6E\xED\x3B\xD1\x9A\x7A\xF7\x0F\xA7\xB7\x39\xD7\xC3\xB4\xDE\x15\x67\x94\xF2\xEF\xB0\xDD\x5F\xE3\xC9\xD8\xD2\x34\x0E\x5D\x44\xDF\xBF\x99\xD8\x5E\x60\xF4\x39\x24\x8A\xFD\x5D\xC8\x46\x8D\x0A\xB1\x60\x7A\x4F\xD5\x27\x30\x60\x9E\x13\x06\xF8\x3A\xAA\xB3\xBB\x33\x34\x6F\x84\x81\x7E\x5C\xCC\x12\x89\xF2\xFE\x6E\x93\x83\xFA\x8B\xEE\xAB\x36\x4C\xB6\x40\xA9\xEE\xFB\xF8\x16\x5A\x55\xD1\x64\x0D\x49\xDA\x04\xDE\xD1\xC8\xCA\xEE\x5F\x24\xB1\x79\x78\xB3\x9A\x88\x13\xDD\x68\x51\x39\xE9\x68\x31\xAF\xD7\xF8\x4D\x35\x6D\x60\x58\x04\x42\xBB\x55\x92\x18\xF6\x98\x01\xA5\x74\x3B\xBC\x36\xDB\x20\x68\x18\xB8\x85\xD4\x8B\x6D\x30\x87\x4D\xD6\x33\x2D\x7A\x54\x36\x1D\x57\x42\x14\x5C\x7A\x62\x74\xD5\x1E\x2B\xD5\xBF\x04\xF3\xFF\xEC\x03\xC1\x02\x03\x01\x00\x01\xA3\x44\x30\x42\x30\x0C\x06\x03\x55\x1D\x13\x01\x01\xFF\x04\x02\x30\x00\x30\x27\x06\x03\x55\x1D\x25\x04\x20\x30\x1E\x06\x08\x2B\x06\x01\x05\x05\x07\x03\x02\x06\x08\x2B\x06\x01\x05\x05\x07\x03\x01\x06\x08\x2B\x06\x01\x05\x05\x07\x03\x09\x30\x09\x06\x03\x55\x1D\x11\x04\x02\x30\x00\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00\x03\x82\x02\x01\x00\x50\xDD\x63\xB7\x1A\x6F\x91\x4C\xE8\x7F\x82\x1A\x27\x04\x81\x05\xBB\xA6\x69\xAC\x41\x7B\x62\xFC\x4B\x08\xDC\x60\xCF\xB2\x5A\xF1\xB4\xB5\x27\x69\x6B\x12\xE4\x07\xC8\x16\xCE\x3B\x42\xCC\x02\x90\x66\x0E\x79\xB8\x6C\x4B\x90\x00\xC5\x66\x64\x92\x2B\x2B\x48\x0E\x84\xC2\x6D\xBF\xA5\xDE\x16\xE3\xBD\x19\xF5\x5C\x93\xA1\x86\x7F\xD9\x89\x78\x6A\x3F\x83\xF0\xAA\xF8\xEA\x1D\xA4\x13\xF7\x2A\x15\x4C\x51\x9C\xC4\xB0\xBE\x58\x66\xCF\x4C\x6C\x3D\x31\xE5\xF9\x54\x21\xCD\xA1\x30\x01\x6A\xB3\x1A\x48\x85\x34\x93\xB8\xF9\x15\x19\x48\x34\x8D\x73\xE7\x03\x50\xAF\xDE\x50\xC7\x62\xAF\x25\x22\x2B\xF6\xE8\x37\x2E\xE4\x71\xA9\x5C\x26\xEA\x79\xCB\x04\x29\x73\x6B\x8F\xDF\x1F\x5C\x41\x52\xC0\x36\xAA\xD7\x7D\x8E\x44\x54\x98\x06\x4C\x63\xA6\x0B\x01\x94\x5D\x0C\x5C\xD4\xCF\xCB\x0B\x7B\x2D\x56\xCC\xBF\x97\x7F\x15\x24\x1D\xBA\xEA\xB7\x97\xB0\x32\xAD\xFC\xEA\x6D\x94\x39\x7A\xE3\x25\x54\xFC\x4A\xF5\x3D\xBD\x2E\xD5\x31\x07\x49\x24\xCC\x92\x69\x0E\x79\xB9\xDF\xDB\x36\xBF\x04\x44\x15\xD0\x46\x99\x8C\xD2\x4C\x94\x38\x0E\x10\x64\x13\xAB\xD9\x1B\x54\x02\x31\x56\x20\xEE\x69\x95\xDF\x39\xBB\xE9\xA7\x6D\xC3\x23\x86\x0B\xD6\x34\x40\x37\xC3\xD4\x41\xA8\x2E\x71\x1D\x6E\x5B\xD7\xC5\x9F\x2A\xE6\x02\x80\xAE\x0A\x28\x69\x63\x4B\x89\x2E\xBD\x4F\x42\x58\xFB\x86\x9A\xA2\x18\xDC\xC6\x32\xC1\x46\xBA\x28\xD2\x8B\xCE\x56\x63\x04\x80\x51\x51\x39\x00\x3B\x00\xB9\x5F\x67\xFA\x90\x1E\xDA\x76\xB5\x31\xA5\xBD\x11\xD2\x5F\xDA\x5D\xD5\xF7\xEE\xAB\xC0\x62\x74\x60\x47\x32\x42\xFD\xB2\x2E\x04\x3A\x2E\xF2\xC8\xB3\x41\xA3\xBD\xFE\x94\x5F\xEF\x6E\xD7\x92\x7C\x1D\x04\xF0\xC6\x53\x8E\x46\xDC\x30\x3A\x35\x5F\x1A\x4B\xEA\x3B\x00\x8B\x97\xB5\xB9\xCE\x71\x6E\x5C\xD5\xA0\x0B\xB1\x33\x08\x89\x61\x23\xCF\x97\x9F\x8F\x9A\x50\xB5\xEC\xCE\x40\x8D\x82\x95\x8B\x79\x26\x66\xF3\xF4\x70\xD8\xEE\x58\xDD\x75\x29\xD5\x6A\x91\x51\x7A\x17\xBC\x4F\xD4\xA3\x45\x7B\x84\xE7\xBE\x69\x53\xC1\xE2\x5C\xC8\x45\xA0\x3A\xEC\xDF\x8A\x1E\xC1\x18\x84\x8B\x7A\x4E\x4E\x9E\x3A\x26\xFE\x5D\x22\xD4\xC5\x14\xBE\xEE\x06\xEB\x05\x4A\x66\xC9\xA4\xB3\x68\x04\xB0\x5D\x25\x54\xB3\x05\xED\x41\xF0\x65\x69\x6D\xA5\x4E\xB7\x97\xD8\xD8\xF5" -static const gnutls_datum_t blog_resp = - { (unsigned char *)BLOG_RESP, sizeof(BLOG_RESP) - 1 }; +static const gnutls_datum_t blog_resp = { (unsigned char *)BLOG_RESP, + sizeof(BLOG_RESP) - 1 }; static unsigned char blog_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIE8DCCAtigAwIBAgIDALzgMA0GCSqGSIb3DQEBBQUAMFQxFDASBgNVBAoTC0NB\n" - "Y2VydCBJbmMuMR4wHAYDVQQLExVodHRwOi8vd3d3LkNBY2VydC5vcmcxHDAaBgNV\n" - "BAMTE0NBY2VydCBDbGFzcyAzIFJvb3QwHhcNMTAxMTE2MjI1MjMzWhcNMTIxMTE1\n" - "MjI1MjMzWjAdMRswGQYDVQQDExJibG9nLmpvc2Vmc3Nvbi5vcmcwggEiMA0GCSqG\n" - "SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBKA6bm/Kip0i00vU+BOmUF2MBDTwps41c\n" - "xKN5bDn7usWZj8loi6BHRPE2WzCVPnPRD1FJXBc4rXL8zZWrCRe1b4A+l8NjPN2o\n" - "uUgJvYLXYQ2hXkvxlPBQPKNOudaOAVsahpyxk6g6Z3mskOfqPhxvjutHvMC4fOsJ\n" - "1+FstMzvg5SpDd4uYM9m0UK8pbEUSuwW+fxyWqhciSi7kJtdrD6bwx3ub3t9GFkM\n" - "9uTzImIslTq19w8AHQsTICNnmNwfUGF5XMUIuxun0HlFt2KUP5G3Qg9Cd18wZFql\n" - "RQJvLA3nbVFtmN3M3yKXnGSsEn38ZJvC+UxFuSfYJN9UwgoG6gwhAgMBAAGjggEA\n" - "MIH9MAwGA1UdEwEB/wQCMAAwNAYDVR0lBC0wKwYIKwYBBQUHAwIGCCsGAQUFBwMB\n" - "BglghkgBhvhCBAEGCisGAQQBgjcKAwMwCwYDVR0PBAQDAgWgMDMGCCsGAQUFBwEB\n" - "BCcwJTAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuY2FjZXJ0Lm9yZy8wdQYDVR0R\n" - "BG4wbIISYmxvZy5qb3NlZnNzb24ub3JnoCAGCCsGAQUFBwgFoBQMEmJsb2cuam9z\n" - "ZWZzc29uLm9yZ4ISYmxvZy5qb3NlZnNzb24ub3JnoCAGCCsGAQUFBwgFoBQMEmJs\n" - "b2cuam9zZWZzc29uLm9yZzANBgkqhkiG9w0BAQUFAAOCAgEACQX0KziT81G0XJ4C\n" - "SlVumGN0KcVPDjtiUYskMpUvyLF951Q4Uuih0Aa9c0LynyZq8yqr6sW5OTmnRfSU\n" - "DuUK5IH+IPq5PU7qteQSIy+63yjMQ+1wye1zfCWI+MyaS54AOn6uZObsr4grq41i\n" - "sTwnX8OF/z15dQBjDR18WoehsnbuMz3Ld7+w5UcVWRGDzTyZ7JrYisEywQ7TXcoK\n" - "1IlhD1TqwFucH7lIr4mPWNjL7Nw0sw11HN0Syt9H3upcq6lqyEI0ygfNZ9cdxvmX\n" - "WqOBxxLc6G/87G4nGW4jw3WrCX7LqSmChlR3SbEC1UhWpaQMQ+mOU5+vXon7blRV\n" - "zGJ/1wK8mKu3fKw9rm5TQ1xfJuRABbzsD3BrrUaHlREQQ+i6SCPVFGer6oeAaxyv\n" - "so0NCbmBQkcpmUUl0COIR/Lh/YT78PjIEfxaUnUlaZXvCbKPKP2cM8LY7ltEaTgJ\n" - "4W6sZi3QNFySzd4sz7J/YhY/jGjqku7TfpN/GOheW8AzKTBlm3WLps1YXys4TKrB\n" - "0RStfaPfRJI1PeSlrWl6+kQu/5O8WA8NK0JZ/0Jc4d5LNrtUXo4VU9XCthrxLkgL\n" - "3XWgZKFrqJd1UeJJ7OvkRYfI1c5i4oAP5ksuF0SHTpqnXE8K39kUnUx3B+ItJlZP\n" - "VXTFhXRc06QwYqYXuYSAmj7/GJk=\n" "-----END CERTIFICATE-----\n"; -const gnutls_datum_t blog_cert_data = { blog_cert_pem, - sizeof(blog_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIIE8DCCAtigAwIBAgIDALzgMA0GCSqGSIb3DQEBBQUAMFQxFDASBgNVBAoTC0NB\n" + "Y2VydCBJbmMuMR4wHAYDVQQLExVodHRwOi8vd3d3LkNBY2VydC5vcmcxHDAaBgNV\n" + "BAMTE0NBY2VydCBDbGFzcyAzIFJvb3QwHhcNMTAxMTE2MjI1MjMzWhcNMTIxMTE1\n" + "MjI1MjMzWjAdMRswGQYDVQQDExJibG9nLmpvc2Vmc3Nvbi5vcmcwggEiMA0GCSqG\n" + "SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBKA6bm/Kip0i00vU+BOmUF2MBDTwps41c\n" + "xKN5bDn7usWZj8loi6BHRPE2WzCVPnPRD1FJXBc4rXL8zZWrCRe1b4A+l8NjPN2o\n" + "uUgJvYLXYQ2hXkvxlPBQPKNOudaOAVsahpyxk6g6Z3mskOfqPhxvjutHvMC4fOsJ\n" + "1+FstMzvg5SpDd4uYM9m0UK8pbEUSuwW+fxyWqhciSi7kJtdrD6bwx3ub3t9GFkM\n" + "9uTzImIslTq19w8AHQsTICNnmNwfUGF5XMUIuxun0HlFt2KUP5G3Qg9Cd18wZFql\n" + "RQJvLA3nbVFtmN3M3yKXnGSsEn38ZJvC+UxFuSfYJN9UwgoG6gwhAgMBAAGjggEA\n" + "MIH9MAwGA1UdEwEB/wQCMAAwNAYDVR0lBC0wKwYIKwYBBQUHAwIGCCsGAQUFBwMB\n" + "BglghkgBhvhCBAEGCisGAQQBgjcKAwMwCwYDVR0PBAQDAgWgMDMGCCsGAQUFBwEB\n" + "BCcwJTAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuY2FjZXJ0Lm9yZy8wdQYDVR0R\n" + "BG4wbIISYmxvZy5qb3NlZnNzb24ub3JnoCAGCCsGAQUFBwgFoBQMEmJsb2cuam9z\n" + "ZWZzc29uLm9yZ4ISYmxvZy5qb3NlZnNzb24ub3JnoCAGCCsGAQUFBwgFoBQMEmJs\n" + "b2cuam9zZWZzc29uLm9yZzANBgkqhkiG9w0BAQUFAAOCAgEACQX0KziT81G0XJ4C\n" + "SlVumGN0KcVPDjtiUYskMpUvyLF951Q4Uuih0Aa9c0LynyZq8yqr6sW5OTmnRfSU\n" + "DuUK5IH+IPq5PU7qteQSIy+63yjMQ+1wye1zfCWI+MyaS54AOn6uZObsr4grq41i\n" + "sTwnX8OF/z15dQBjDR18WoehsnbuMz3Ld7+w5UcVWRGDzTyZ7JrYisEywQ7TXcoK\n" + "1IlhD1TqwFucH7lIr4mPWNjL7Nw0sw11HN0Syt9H3upcq6lqyEI0ygfNZ9cdxvmX\n" + "WqOBxxLc6G/87G4nGW4jw3WrCX7LqSmChlR3SbEC1UhWpaQMQ+mOU5+vXon7blRV\n" + "zGJ/1wK8mKu3fKw9rm5TQ1xfJuRABbzsD3BrrUaHlREQQ+i6SCPVFGer6oeAaxyv\n" + "so0NCbmBQkcpmUUl0COIR/Lh/YT78PjIEfxaUnUlaZXvCbKPKP2cM8LY7ltEaTgJ\n" + "4W6sZi3QNFySzd4sz7J/YhY/jGjqku7TfpN/GOheW8AzKTBlm3WLps1YXys4TKrB\n" + "0RStfaPfRJI1PeSlrWl6+kQu/5O8WA8NK0JZ/0Jc4d5LNrtUXo4VU9XCthrxLkgL\n" + "3XWgZKFrqJd1UeJJ7OvkRYfI1c5i4oAP5ksuF0SHTpqnXE8K39kUnUx3B+ItJlZP\n" + "VXTFhXRc06QwYqYXuYSAmj7/GJk=\n" + "-----END CERTIFICATE-----\n"; +const gnutls_datum_t blog_cert_data = { blog_cert_pem, sizeof(blog_cert_pem) }; static unsigned char blog_issuer_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIHWTCCBUGgAwIBAgIDCkGKMA0GCSqGSIb3DQEBCwUAMHkxEDAOBgNVBAoTB1Jv\n" - "b3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEiMCAGA1UEAxMZ\n" - "Q0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJARYSc3VwcG9y\n" - "dEBjYWNlcnQub3JnMB4XDTExMDUyMzE3NDgwMloXDTIxMDUyMDE3NDgwMlowVDEU\n" - "MBIGA1UEChMLQ0FjZXJ0IEluYy4xHjAcBgNVBAsTFWh0dHA6Ly93d3cuQ0FjZXJ0\n" - "Lm9yZzEcMBoGA1UEAxMTQ0FjZXJ0IENsYXNzIDMgUm9vdDCCAiIwDQYJKoZIhvcN\n" - "AQEBBQADggIPADCCAgoCggIBAKtJNRFIfNImflOUz0Op3SjXQiqL84d4GVh8D57a\n" - "iX3h++tykA10oZZkq5+gJJlz2uJVdscXe/UErEa4w75/ZI0QbCTzYZzA8pD6Ueb1\n" - "aQFjww9W4kpCz+JEjCUoqMV5CX1GuYrz6fM0KQhF5Byfy5QEHIGoFLOYZcRD7E6C\n" - "jQnRvapbjZLQ7N6QxX8KwuPr5jFaXnQ+lzNZ6MMDPWAzv/fRb0fEze5ig1JuLgia\n" - "pNkVGJGmhZJHsK5I6223IeyFGmhyNav/8BBdwPSUp2rVO5J+TJAFfpPBLIukjmJ0\n" - "FXFuC3ED6q8VOJrU0gVyb4z5K+taciX5OUbjchs+BMNkJyIQKopPWKcDrb60LhPt\n" - "XapI19V91Cp7XPpGBFDkzA5CW4zt2/LP/JaT4NsRNlRiNDiPDGCbO5dWOK3z0luL\n" - "oFvqTpa4fNfVoIZwQNORKbeiPK31jLvPGpKK5DR7wNhsX+kKwsOnIJpa3yxdUly6\n" - "R9Wb7yQocDggL9V/KcCyQQNokszgnMyXS0XvOhAKq3A6mJVwrTWx6oUrpByAITGp\n" - "rmB6gCZIALgBwJNjVSKRPFbnr9s6JfOPMVTqJouBWfmh0VMRxXudA/Z0EeBtsSw/\n" - "LIaRmXGapneLNGDRFLQsrJ2vjBDTn8Rq+G8T/HNZ92ZCdB6K4/jc0m+YnMtHmJVA\n" - "BfvpAgMBAAGjggINMIICCTAdBgNVHQ4EFgQUdahxYEyIE/B42Yl3tW3Fid+8sXow\n" - "gaMGA1UdIwSBmzCBmIAUFrUyG9TH8+DmjvO90rA67rI5GNGhfaR7MHkxEDAOBgNV\n" - "BAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEiMCAG\n" - "A1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJARYS\n" - "c3VwcG9ydEBjYWNlcnQub3JnggEAMA8GA1UdEwEB/wQFMAMBAf8wXQYIKwYBBQUH\n" - "AQEEUTBPMCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5DQWNlcnQub3JnLzAoBggr\n" - "BgEFBQcwAoYcaHR0cDovL3d3dy5DQWNlcnQub3JnL2NhLmNydDBKBgNVHSAEQzBB\n" - "MD8GCCsGAQQBgZBKMDMwMQYIKwYBBQUHAgEWJWh0dHA6Ly93d3cuQ0FjZXJ0Lm9y\n" - "Zy9pbmRleC5waHA/aWQ9MTAwNAYJYIZIAYb4QgEIBCcWJWh0dHA6Ly93d3cuQ0Fj\n" - "ZXJ0Lm9yZy9pbmRleC5waHA/aWQ9MTAwUAYJYIZIAYb4QgENBEMWQVRvIGdldCB5\n" - "b3VyIG93biBjZXJ0aWZpY2F0ZSBmb3IgRlJFRSwgZ28gdG8gaHR0cDovL3d3dy5D\n" - "QWNlcnQub3JnMA0GCSqGSIb3DQEBCwUAA4ICAQApKIWuRKm5r6R5E/CooyuXYPNc\n" - "7uMvwfbiZqARrjY3OnYVBFPqQvX56sAV2KaC2eRhrnILKVyQQ+hBsuF32wITRHhH\n" - "Va9Y/MyY9kW50SD42CEH/m2qc9SzxgfpCYXMO/K2viwcJdVxjDm1Luq+GIG6sJO4\n" - "D+Pm1yaMMVpyA4RS5qb1MyJFCsgLDYq4Nm+QCaGrvdfVTi5xotSu+qdUK+s1jVq3\n" - "VIgv7nSf7UgWyg1I0JTTrKSi9iTfkuO960NAkW4cGI5WtIIS86mTn9S8nK2cde5a\n" - "lxuV53QtHA+wLJef+6kzOXrnAzqSjiL2jA3k2X4Ndhj3AfnvlpaiVXPAPHG0HRpW\n" - "Q7fDCo1y/OIQCQtBzoyUoPkD/XFzS4pXM+WOdH4VAQDmzEoc53+VGS3FpQyLu7Xt\n" - "hbNc09+4ufLKxw0BFKxwWMWMjTPUnWajGlCVI/xI4AZDEtnNp4Y5LzZyo4AQ5OHz\n" - "0ctbGsDkgJp8E3MGT9ujayQKurMcvEp4u+XjdTilSKeiHq921F73OIZWWonO1sOn\n" - "ebJSoMbxhbQljPI/lrMQ2Y1sVzufb4Y6GIIiNsiwkTjbKqGTqoQ/9SdlrnPVyNXT\n" - "d+pLncdBu8fA46A/5H2kjXPmEkvfoXNzczqA6NXLji/L6hOn1kGLrPo8idck9U60\n" - "4GGSt/M3mMS+lqO3ig==\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIHWTCCBUGgAwIBAgIDCkGKMA0GCSqGSIb3DQEBCwUAMHkxEDAOBgNVBAoTB1Jv\n" + "b3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEiMCAGA1UEAxMZ\n" + "Q0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJARYSc3VwcG9y\n" + "dEBjYWNlcnQub3JnMB4XDTExMDUyMzE3NDgwMloXDTIxMDUyMDE3NDgwMlowVDEU\n" + "MBIGA1UEChMLQ0FjZXJ0IEluYy4xHjAcBgNVBAsTFWh0dHA6Ly93d3cuQ0FjZXJ0\n" + "Lm9yZzEcMBoGA1UEAxMTQ0FjZXJ0IENsYXNzIDMgUm9vdDCCAiIwDQYJKoZIhvcN\n" + "AQEBBQADggIPADCCAgoCggIBAKtJNRFIfNImflOUz0Op3SjXQiqL84d4GVh8D57a\n" + "iX3h++tykA10oZZkq5+gJJlz2uJVdscXe/UErEa4w75/ZI0QbCTzYZzA8pD6Ueb1\n" + "aQFjww9W4kpCz+JEjCUoqMV5CX1GuYrz6fM0KQhF5Byfy5QEHIGoFLOYZcRD7E6C\n" + "jQnRvapbjZLQ7N6QxX8KwuPr5jFaXnQ+lzNZ6MMDPWAzv/fRb0fEze5ig1JuLgia\n" + "pNkVGJGmhZJHsK5I6223IeyFGmhyNav/8BBdwPSUp2rVO5J+TJAFfpPBLIukjmJ0\n" + "FXFuC3ED6q8VOJrU0gVyb4z5K+taciX5OUbjchs+BMNkJyIQKopPWKcDrb60LhPt\n" + "XapI19V91Cp7XPpGBFDkzA5CW4zt2/LP/JaT4NsRNlRiNDiPDGCbO5dWOK3z0luL\n" + "oFvqTpa4fNfVoIZwQNORKbeiPK31jLvPGpKK5DR7wNhsX+kKwsOnIJpa3yxdUly6\n" + "R9Wb7yQocDggL9V/KcCyQQNokszgnMyXS0XvOhAKq3A6mJVwrTWx6oUrpByAITGp\n" + "rmB6gCZIALgBwJNjVSKRPFbnr9s6JfOPMVTqJouBWfmh0VMRxXudA/Z0EeBtsSw/\n" + "LIaRmXGapneLNGDRFLQsrJ2vjBDTn8Rq+G8T/HNZ92ZCdB6K4/jc0m+YnMtHmJVA\n" + "BfvpAgMBAAGjggINMIICCTAdBgNVHQ4EFgQUdahxYEyIE/B42Yl3tW3Fid+8sXow\n" + "gaMGA1UdIwSBmzCBmIAUFrUyG9TH8+DmjvO90rA67rI5GNGhfaR7MHkxEDAOBgNV\n" + "BAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEiMCAG\n" + "A1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJARYS\n" + "c3VwcG9ydEBjYWNlcnQub3JnggEAMA8GA1UdEwEB/wQFMAMBAf8wXQYIKwYBBQUH\n" + "AQEEUTBPMCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5DQWNlcnQub3JnLzAoBggr\n" + "BgEFBQcwAoYcaHR0cDovL3d3dy5DQWNlcnQub3JnL2NhLmNydDBKBgNVHSAEQzBB\n" + "MD8GCCsGAQQBgZBKMDMwMQYIKwYBBQUHAgEWJWh0dHA6Ly93d3cuQ0FjZXJ0Lm9y\n" + "Zy9pbmRleC5waHA/aWQ9MTAwNAYJYIZIAYb4QgEIBCcWJWh0dHA6Ly93d3cuQ0Fj\n" + "ZXJ0Lm9yZy9pbmRleC5waHA/aWQ9MTAwUAYJYIZIAYb4QgENBEMWQVRvIGdldCB5\n" + "b3VyIG93biBjZXJ0aWZpY2F0ZSBmb3IgRlJFRSwgZ28gdG8gaHR0cDovL3d3dy5D\n" + "QWNlcnQub3JnMA0GCSqGSIb3DQEBCwUAA4ICAQApKIWuRKm5r6R5E/CooyuXYPNc\n" + "7uMvwfbiZqARrjY3OnYVBFPqQvX56sAV2KaC2eRhrnILKVyQQ+hBsuF32wITRHhH\n" + "Va9Y/MyY9kW50SD42CEH/m2qc9SzxgfpCYXMO/K2viwcJdVxjDm1Luq+GIG6sJO4\n" + "D+Pm1yaMMVpyA4RS5qb1MyJFCsgLDYq4Nm+QCaGrvdfVTi5xotSu+qdUK+s1jVq3\n" + "VIgv7nSf7UgWyg1I0JTTrKSi9iTfkuO960NAkW4cGI5WtIIS86mTn9S8nK2cde5a\n" + "lxuV53QtHA+wLJef+6kzOXrnAzqSjiL2jA3k2X4Ndhj3AfnvlpaiVXPAPHG0HRpW\n" + "Q7fDCo1y/OIQCQtBzoyUoPkD/XFzS4pXM+WOdH4VAQDmzEoc53+VGS3FpQyLu7Xt\n" + "hbNc09+4ufLKxw0BFKxwWMWMjTPUnWajGlCVI/xI4AZDEtnNp4Y5LzZyo4AQ5OHz\n" + "0ctbGsDkgJp8E3MGT9ujayQKurMcvEp4u+XjdTilSKeiHq921F73OIZWWonO1sOn\n" + "ebJSoMbxhbQljPI/lrMQ2Y1sVzufb4Y6GIIiNsiwkTjbKqGTqoQ/9SdlrnPVyNXT\n" + "d+pLncdBu8fA46A/5H2kjXPmEkvfoXNzczqA6NXLji/L6hOn1kGLrPo8idck9U60\n" + "4GGSt/M3mMS+lqO3ig==\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t blog_issuer_data = { blog_issuer_pem, - sizeof(blog_issuer_pem) -}; + sizeof(blog_issuer_pem) }; static unsigned char blog_signer_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIEkTCCAnmgAwIBAgIDANymMA0GCSqGSIb3DQEBBQUAMFQxFDASBgNVBAoTC0NB\n" - "Y2VydCBJbmMuMR4wHAYDVQQLExVodHRwOi8vd3d3LkNBY2VydC5vcmcxHDAaBgNV\n" - "BAMTE0NBY2VydCBDbGFzcyAzIFJvb3QwHhcNMTEwODIzMDAwODM3WhcNMTMwODIy\n" - "MDAwODM3WjB8MQswCQYDVQQGEwJBVTEMMAoGA1UECBMDTlNXMQ8wDQYDVQQHEwZT\n" - "eWRuZXkxFDASBgNVBAoTC0NBY2VydCBJbmMuMR4wHAYDVQQLExVTZXJ2ZXIgQWRt\n" - "aW5pc3RyYXRpb24xGDAWBgNVBAMTD29jc3AuY2FjZXJ0Lm9yZzCCASIwDQYJKoZI\n" - "hvcNAQEBBQADggEPADCCAQoCggEBAJzG1G/kI8fDcEt1H+T8rvZixGCh1s/5R0A4\n" - "2a8G9bOHCboHyHo74zriwWvbDpt7tJgEQIjI5CA0nV+UrgygBaF0ED8fk23FoM4p\n" - "sCoDbu070Zp69w+ntznXw7TeFWeU8u+w3V/jydjSNA5dRN+/mdheYPQ5JIr9XchG\n" - "jQqxYHpP1ScwYJ4TBvg6qrO7MzRvhIF+XMwSifL+bpOD+ovuqzZMtkCp7vv4FlpV\n" - "0WQNSdoE3tHIyu5fJLF5eLOaiBPdaFE56Wgxr9f4TTVtYFgEQrtVkhj2mAGldDu8\n" - "NtsgaBi4hdSLbTCHTdYzLXpUNh1XQhRcemJ01R4r1b8E8//sA8ECAwEAAaNEMEIw\n" - "DAYDVR0TAQH/BAIwADAnBgNVHSUEIDAeBggrBgEFBQcDAgYIKwYBBQUHAwEGCCsG\n" - "AQUFBwMJMAkGA1UdEQQCMAAwDQYJKoZIhvcNAQEFBQADggIBAFDdY7cab5FM6H+C\n" - "GicEgQW7pmmsQXti/EsI3GDPslrxtLUnaWsS5AfIFs47QswCkGYOebhsS5AAxWZk\n" - "kisrSA6Ewm2/pd4W470Z9VyToYZ/2Yl4aj+D8Kr46h2kE/cqFUxRnMSwvlhmz0xs\n" - "PTHl+VQhzaEwAWqzGkiFNJO4+RUZSDSNc+cDUK/eUMdiryUiK/boNy7kcalcJup5\n" - "ywQpc2uP3x9cQVLANqrXfY5EVJgGTGOmCwGUXQxc1M/LC3stVsy/l38VJB266reX\n" - "sDKt/OptlDl64yVU/Er1Pb0u1TEHSSTMkmkOebnf2za/BEQV0EaZjNJMlDgOEGQT\n" - "q9kbVAIxViDuaZXfObvpp23DI4YL1jRAN8PUQagucR1uW9fFnyrmAoCuCihpY0uJ\n" - "Lr1PQlj7hpqiGNzGMsFGuijSi85WYwSAUVE5ADsAuV9n+pAe2na1MaW9EdJf2l3V\n" - "9+6rwGJ0YEcyQv2yLgQ6LvLIs0Gjvf6UX+9u15J8HQTwxlOORtwwOjVfGkvqOwCL\n" - "l7W5znFuXNWgC7EzCIlhI8+Xn4+aULXszkCNgpWLeSZm8/Rw2O5Y3XUp1WqRUXoX\n" - "vE/Uo0V7hOe+aVPB4lzIRaA67N+KHsEYhIt6Tk6eOib+XSLUxRS+7gbrBUpmyaSz\n" - "aASwXSVUswXtQfBlaW2lTreX2Nj1\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIEkTCCAnmgAwIBAgIDANymMA0GCSqGSIb3DQEBBQUAMFQxFDASBgNVBAoTC0NB\n" + "Y2VydCBJbmMuMR4wHAYDVQQLExVodHRwOi8vd3d3LkNBY2VydC5vcmcxHDAaBgNV\n" + "BAMTE0NBY2VydCBDbGFzcyAzIFJvb3QwHhcNMTEwODIzMDAwODM3WhcNMTMwODIy\n" + "MDAwODM3WjB8MQswCQYDVQQGEwJBVTEMMAoGA1UECBMDTlNXMQ8wDQYDVQQHEwZT\n" + "eWRuZXkxFDASBgNVBAoTC0NBY2VydCBJbmMuMR4wHAYDVQQLExVTZXJ2ZXIgQWRt\n" + "aW5pc3RyYXRpb24xGDAWBgNVBAMTD29jc3AuY2FjZXJ0Lm9yZzCCASIwDQYJKoZI\n" + "hvcNAQEBBQADggEPADCCAQoCggEBAJzG1G/kI8fDcEt1H+T8rvZixGCh1s/5R0A4\n" + "2a8G9bOHCboHyHo74zriwWvbDpt7tJgEQIjI5CA0nV+UrgygBaF0ED8fk23FoM4p\n" + "sCoDbu070Zp69w+ntznXw7TeFWeU8u+w3V/jydjSNA5dRN+/mdheYPQ5JIr9XchG\n" + "jQqxYHpP1ScwYJ4TBvg6qrO7MzRvhIF+XMwSifL+bpOD+ovuqzZMtkCp7vv4FlpV\n" + "0WQNSdoE3tHIyu5fJLF5eLOaiBPdaFE56Wgxr9f4TTVtYFgEQrtVkhj2mAGldDu8\n" + "NtsgaBi4hdSLbTCHTdYzLXpUNh1XQhRcemJ01R4r1b8E8//sA8ECAwEAAaNEMEIw\n" + "DAYDVR0TAQH/BAIwADAnBgNVHSUEIDAeBggrBgEFBQcDAgYIKwYBBQUHAwEGCCsG\n" + "AQUFBwMJMAkGA1UdEQQCMAAwDQYJKoZIhvcNAQEFBQADggIBAFDdY7cab5FM6H+C\n" + "GicEgQW7pmmsQXti/EsI3GDPslrxtLUnaWsS5AfIFs47QswCkGYOebhsS5AAxWZk\n" + "kisrSA6Ewm2/pd4W470Z9VyToYZ/2Yl4aj+D8Kr46h2kE/cqFUxRnMSwvlhmz0xs\n" + "PTHl+VQhzaEwAWqzGkiFNJO4+RUZSDSNc+cDUK/eUMdiryUiK/boNy7kcalcJup5\n" + "ywQpc2uP3x9cQVLANqrXfY5EVJgGTGOmCwGUXQxc1M/LC3stVsy/l38VJB266reX\n" + "sDKt/OptlDl64yVU/Er1Pb0u1TEHSSTMkmkOebnf2za/BEQV0EaZjNJMlDgOEGQT\n" + "q9kbVAIxViDuaZXfObvpp23DI4YL1jRAN8PUQagucR1uW9fFnyrmAoCuCihpY0uJ\n" + "Lr1PQlj7hpqiGNzGMsFGuijSi85WYwSAUVE5ADsAuV9n+pAe2na1MaW9EdJf2l3V\n" + "9+6rwGJ0YEcyQv2yLgQ6LvLIs0Gjvf6UX+9u15J8HQTwxlOORtwwOjVfGkvqOwCL\n" + "l7W5znFuXNWgC7EzCIlhI8+Xn4+aULXszkCNgpWLeSZm8/Rw2O5Y3XUp1WqRUXoX\n" + "vE/Uo0V7hOe+aVPB4lzIRaA67N+KHsEYhIt6Tk6eOib+XSLUxRS+7gbrBUpmyaSz\n" + "aASwXSVUswXtQfBlaW2lTreX2Nj1\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t blog_signer_data = { blog_signer_pem, - sizeof(blog_signer_pem) -}; + sizeof(blog_signer_pem) }; static unsigned char long_resp_signer_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIE3zCCA8egAwIBAgIQPZqC0NHDL2/ghF+ZEe5TQjANBgkqhkiG9w0BAQUFADCB\n" - "tTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" - "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n" - "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykxMDEvMC0GA1UEAxMm\n" - "VmVyaVNpZ24gQ2xhc3MgMyBTZWN1cmUgU2VydmVyIENBIC0gRzMwHhcNMTQwOTEy\n" - "MDAwMDAwWhcNMTQxMjExMjM1OTU5WjCBhzELMAkGA1UEBhMCVVMxFzAVBgNVBAoT\n" - "DlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3Jr\n" - "MT4wPAYDVQQDEzVWZXJpU2lnbiBDbGFzcyAzIFNlY3VyZSBTZXJ2ZXIgQ0EgLSBH\n" - "MyBPQ1NQIFJlc3BvbmRlcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\n" - "ALbm3lapt756SdAuFIelnhbtZvin09w/iS38GoMpR9A326dcSiKwmk7LYnLEkgQI\n" - "mb5g4Nx6+nkQuhZoJiSxvqoPTgwt1nZtQ4v1weitmI1elgOSin+YrrjxPCpiYrFp\n" - "j3qwbMz2K5ktlXl/2FeY5XWYuzz4ZscfxPF1mb1Nd5C7I+rZOE7nj7m9aQPEczgp\n" - "hfZbMBb5kceeuskBkGyv05PwYbSkPTA4bzNA5dKT2ZsXzp+XC92EssV2smRiR/A1\n" - "ai0uLUZeB4bJgICs6PNxPUaLt1Sn2gBgi+iw3039/8aAbx52FJm1yVv3MRDtaVqR\n" - "l1kWCnyG/VLEhP1YcyeAC0cCAwEAAaOCARUwggERMAkGA1UdEwQCMAAwgawGA1Ud\n" - "IASBpDCBoTCBngYLYIZIAYb4RQEHFwMwgY4wKAYIKwYBBQUHAgEWHGh0dHBzOi8v\n" - "d3d3LnZlcmlzaWduLmNvbS9DUFMwYgYIKwYBBQUHAgIwVjAVFg5WZXJpU2lnbiwg\n" - "SW5jLjADAgEBGj1WZXJpU2lnbidzIENQUyBpbmNvcnAuIGJ5IHJlZmVyZW5jZSBs\n" - "aWFiLiBsdGQuIChjKTk3IFZlcmlTaWduMBMGA1UdJQQMMAoGCCsGAQUFBwMJMAsG\n" - "A1UdDwQEAwIHgDAPBgkrBgEFBQcwAQUEAgUAMCIGA1UdEQQbMBmkFzAVMRMwEQYD\n" - "VQQDEwpUR1YtQi0xNzk4MA0GCSqGSIb3DQEBBQUAA4IBAQCM8gJSyR4O8S5m52za\n" - "FSzMfAcai+j5AqoRhYmY/+n/Hs/2bAdPy/6a+ukWGwhWZQRYLNr7SSSBkuSuVk/W\n" - "zZX9VJmxAt1WzFRrXvgFyjSDtnqtg89LJbUOz5hG95d/scgb3ndv5Ey5193H/b8T\n" - "O6GZ933J0O3X6qk4bnMBDUPFXgyn0Xfv0jeYzOa/Tu2IPpcf0ugogbrZscsIZWFy\n" - "jFlwHnFGpd2k1GXaFRPqxk+qtLAxJtjN+DfkmxGNoIAv1hHXpBhDhuzTpnmXVf32\n" - "YfFIyYfRt/x/Z4hztF/MZ41QxJdZIqvCMooi1GAgeG2jkXLx+x6ppfhkN7+zOF8A\n" - "4W5J\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIE3zCCA8egAwIBAgIQPZqC0NHDL2/ghF+ZEe5TQjANBgkqhkiG9w0BAQUFADCB\n" + "tTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" + "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n" + "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykxMDEvMC0GA1UEAxMm\n" + "VmVyaVNpZ24gQ2xhc3MgMyBTZWN1cmUgU2VydmVyIENBIC0gRzMwHhcNMTQwOTEy\n" + "MDAwMDAwWhcNMTQxMjExMjM1OTU5WjCBhzELMAkGA1UEBhMCVVMxFzAVBgNVBAoT\n" + "DlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3Jr\n" + "MT4wPAYDVQQDEzVWZXJpU2lnbiBDbGFzcyAzIFNlY3VyZSBTZXJ2ZXIgQ0EgLSBH\n" + "MyBPQ1NQIFJlc3BvbmRlcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\n" + "ALbm3lapt756SdAuFIelnhbtZvin09w/iS38GoMpR9A326dcSiKwmk7LYnLEkgQI\n" + "mb5g4Nx6+nkQuhZoJiSxvqoPTgwt1nZtQ4v1weitmI1elgOSin+YrrjxPCpiYrFp\n" + "j3qwbMz2K5ktlXl/2FeY5XWYuzz4ZscfxPF1mb1Nd5C7I+rZOE7nj7m9aQPEczgp\n" + "hfZbMBb5kceeuskBkGyv05PwYbSkPTA4bzNA5dKT2ZsXzp+XC92EssV2smRiR/A1\n" + "ai0uLUZeB4bJgICs6PNxPUaLt1Sn2gBgi+iw3039/8aAbx52FJm1yVv3MRDtaVqR\n" + "l1kWCnyG/VLEhP1YcyeAC0cCAwEAAaOCARUwggERMAkGA1UdEwQCMAAwgawGA1Ud\n" + "IASBpDCBoTCBngYLYIZIAYb4RQEHFwMwgY4wKAYIKwYBBQUHAgEWHGh0dHBzOi8v\n" + "d3d3LnZlcmlzaWduLmNvbS9DUFMwYgYIKwYBBQUHAgIwVjAVFg5WZXJpU2lnbiwg\n" + "SW5jLjADAgEBGj1WZXJpU2lnbidzIENQUyBpbmNvcnAuIGJ5IHJlZmVyZW5jZSBs\n" + "aWFiLiBsdGQuIChjKTk3IFZlcmlTaWduMBMGA1UdJQQMMAoGCCsGAQUFBwMJMAsG\n" + "A1UdDwQEAwIHgDAPBgkrBgEFBQcwAQUEAgUAMCIGA1UdEQQbMBmkFzAVMRMwEQYD\n" + "VQQDEwpUR1YtQi0xNzk4MA0GCSqGSIb3DQEBBQUAA4IBAQCM8gJSyR4O8S5m52za\n" + "FSzMfAcai+j5AqoRhYmY/+n/Hs/2bAdPy/6a+ukWGwhWZQRYLNr7SSSBkuSuVk/W\n" + "zZX9VJmxAt1WzFRrXvgFyjSDtnqtg89LJbUOz5hG95d/scgb3ndv5Ey5193H/b8T\n" + "O6GZ933J0O3X6qk4bnMBDUPFXgyn0Xfv0jeYzOa/Tu2IPpcf0ugogbrZscsIZWFy\n" + "jFlwHnFGpd2k1GXaFRPqxk+qtLAxJtjN+DfkmxGNoIAv1hHXpBhDhuzTpnmXVf32\n" + "YfFIyYfRt/x/Z4hztF/MZ41QxJdZIqvCMooi1GAgeG2jkXLx+x6ppfhkN7+zOF8A\n" + "4W5J\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t long_resp_signer_data = { long_resp_signer_pem, - sizeof(long_resp_signer_pem) -}; + sizeof(long_resp_signer_pem) }; static unsigned char long_resp_str[] = - "\x30\x82\x06\xbe\x0a\x01\x00\xa0\x82\x06\xb7\x30\x82\x06\xb3\x06" - "\x09\x2b\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x06\xa4\x30\x82" - "\x06\xa0\x30\x81\x9e\xa2\x16\x04\x14\x81\x75\x7a\x7e\x22\xc8\xa4" - "\x4c\xdf\x9f\x2d\x3f\x87\x61\xaf\x57\xe1\xaf\x4f\xd9\x18\x0f\x32" - "\x30\x31\x34\x31\x31\x31\x30\x32\x30\x33\x33\x31\x37\x5a\x30\x73" - "\x30\x71\x30\x49\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04" - "\x14\x0c\x81\x29\x38\x74\xb2\x96\x29\x10\x7e\xd8\x35\x62\x52\x64" - "\x04\x53\x0d\xe0\x83\x04\x14\x0d\x44\x5c\x16\x53\x44\xc1\x82\x7e" - "\x1d\x20\xab\x25\xf4\x01\x63\xd8\xbe\x79\xa5\x02\x10\x4e\xeb\x31" - "\x09\x63\x39\x4e\x8e\xa0\x4e\x70\x9c\xa9\x1d\xcd\xa6\x80\x00\x18" - "\x0f\x32\x30\x31\x34\x31\x31\x31\x30\x32\x30\x33\x33\x31\x37\x5a" - "\xa0\x11\x18\x0f\x32\x30\x31\x34\x31\x31\x31\x37\x32\x30\x33\x33" - "\x31\x37\x5a\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05" - "\x05\x00\x03\x82\x01\x01\x00\x67\xf8\x80\x8d\x1b\x17\x3d\xbe\x81" - "\xf4\x3e\x74\x6d\x65\x5d\x9c\xdf\xd7\xdc\x7c\xd5\x23\x75\x24\xaa" - "\x55\x8f\xa5\x99\xf8\x27\xd6\x69\x8e\x5a\x25\x0d\x5e\x1e\x49\xfc" - "\x50\x98\x7b\xe7\x49\xfb\x05\xa5\x04\x46\xb7\x5e\xf6\x20\x46\x18" - "\xd5\xdc\x70\xd8\x99\x2b\x64\x12\xae\x74\x8e\xa1\xdb\x0e\x9f\x11" - "\x47\xdf\x87\x6e\x9d\xb9\x13\xaa\x66\x33\x8c\xf3\x3d\xed\x33\x57" - "\x7d\x4c\x82\x21\xc6\x18\x67\x56\xbe\x46\x78\xa8\xec\xd0\x5b\xc0" - "\x2d\xb6\xee\x5a\xd8\xbf\xc3\xea\x49\xcd\x6d\x01\x97\x6e\x3a\x81" - "\x0f\x06\x16\xb4\x1e\x15\x08\x5c\x46\x35\x44\xa4\x06\x84\x32\xaa" - "\x1b\xb7\xc2\x97\xbf\xfd\xc8\xe2\x6b\x7a\xa2\x40\x3b\x50\x59\xd2" - "\xbe\xa2\x26\x09\xea\xf7\xc1\x9e\x89\x1d\x34\x79\xc3\xba\xa6\xb8" - "\x09\x92\xc8\xee\xa4\xe2\xe2\x32\x43\x48\xc8\xf6\x69\xe5\xde\x33" - "\x75\xe8\x38\x8a\xb0\xda\x19\x38\x75\x39\xab\xd6\x3f\x70\xcc\x4e" - "\x45\x16\x2a\x82\x32\x8e\x48\x92\xa4\x1f\xe9\x46\x85\x18\x78\xa7" - "\x46\xf7\x11\x9e\x37\x95\x1a\xc3\x30\x2d\x90\x6a\xc3\xfd\x95\x81" - "\x6b\xb1\xcb\x12\x26\x9e\xe4\xd3\x2a\xc1\xdf\x82\x57\xf2\x21\xea" - "\x6a\x16\x12\x40\x94\xe1\xc9\xa0\x82\x04\xe7\x30\x82\x04\xe3\x30" - "\x82\x04\xdf\x30\x82\x03\xc7\xa0\x03\x02\x01\x02\x02\x10\x3d\x9a" - "\x82\xd0\xd1\xc3\x2f\x6f\xe0\x84\x5f\x99\x11\xee\x53\x42\x30\x0d" - "\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x81\xb5" - "\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x17\x30" - "\x15\x06\x03\x55\x04\x0a\x13\x0e\x56\x65\x72\x69\x53\x69\x67\x6e" - "\x2c\x20\x49\x6e\x63\x2e\x31\x1f\x30\x1d\x06\x03\x55\x04\x0b\x13" - "\x16\x56\x65\x72\x69\x53\x69\x67\x6e\x20\x54\x72\x75\x73\x74\x20" - "\x4e\x65\x74\x77\x6f\x72\x6b\x31\x3b\x30\x39\x06\x03\x55\x04\x0b" - "\x13\x32\x54\x65\x72\x6d\x73\x20\x6f\x66\x20\x75\x73\x65\x20\x61" - "\x74\x20\x68\x74\x74\x70\x73\x3a\x2f\x2f\x77\x77\x77\x2e\x76\x65" - "\x72\x69\x73\x69\x67\x6e\x2e\x63\x6f\x6d\x2f\x72\x70\x61\x20\x28" - "\x63\x29\x31\x30\x31\x2f\x30\x2d\x06\x03\x55\x04\x03\x13\x26\x56" - "\x65\x72\x69\x53\x69\x67\x6e\x20\x43\x6c\x61\x73\x73\x20\x33\x20" - "\x53\x65\x63\x75\x72\x65\x20\x53\x65\x72\x76\x65\x72\x20\x43\x41" - "\x20\x2d\x20\x47\x33\x30\x1e\x17\x0d\x31\x34\x30\x39\x31\x32\x30" - "\x30\x30\x30\x30\x30\x5a\x17\x0d\x31\x34\x31\x32\x31\x31\x32\x33" - "\x35\x39\x35\x39\x5a\x30\x81\x87\x31\x0b\x30\x09\x06\x03\x55\x04" - "\x06\x13\x02\x55\x53\x31\x17\x30\x15\x06\x03\x55\x04\x0a\x13\x0e" - "\x56\x65\x72\x69\x53\x69\x67\x6e\x2c\x20\x49\x6e\x63\x2e\x31\x1f" - "\x30\x1d\x06\x03\x55\x04\x0b\x13\x16\x56\x65\x72\x69\x53\x69\x67" - "\x6e\x20\x54\x72\x75\x73\x74\x20\x4e\x65\x74\x77\x6f\x72\x6b\x31" - "\x3e\x30\x3c\x06\x03\x55\x04\x03\x13\x35\x56\x65\x72\x69\x53\x69" - "\x67\x6e\x20\x43\x6c\x61\x73\x73\x20\x33\x20\x53\x65\x63\x75\x72" - "\x65\x20\x53\x65\x72\x76\x65\x72\x20\x43\x41\x20\x2d\x20\x47\x33" - "\x20\x4f\x43\x53\x50\x20\x52\x65\x73\x70\x6f\x6e\x64\x65\x72\x30" - "\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01" - "\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00" - "\xb6\xe6\xde\x56\xa9\xb7\xbe\x7a\x49\xd0\x2e\x14\x87\xa5\x9e\x16" - "\xed\x66\xf8\xa7\xd3\xdc\x3f\x89\x2d\xfc\x1a\x83\x29\x47\xd0\x37" - "\xdb\xa7\x5c\x4a\x22\xb0\x9a\x4e\xcb\x62\x72\xc4\x92\x04\x08\x99" - "\xbe\x60\xe0\xdc\x7a\xfa\x79\x10\xba\x16\x68\x26\x24\xb1\xbe\xaa" - "\x0f\x4e\x0c\x2d\xd6\x76\x6d\x43\x8b\xf5\xc1\xe8\xad\x98\x8d\x5e" - "\x96\x03\x92\x8a\x7f\x98\xae\xb8\xf1\x3c\x2a\x62\x62\xb1\x69\x8f" - "\x7a\xb0\x6c\xcc\xf6\x2b\x99\x2d\x95\x79\x7f\xd8\x57\x98\xe5\x75" - "\x98\xbb\x3c\xf8\x66\xc7\x1f\xc4\xf1\x75\x99\xbd\x4d\x77\x90\xbb" - "\x23\xea\xd9\x38\x4e\xe7\x8f\xb9\xbd\x69\x03\xc4\x73\x38\x29\x85" - "\xf6\x5b\x30\x16\xf9\x91\xc7\x9e\xba\xc9\x01\x90\x6c\xaf\xd3\x93" - "\xf0\x61\xb4\xa4\x3d\x30\x38\x6f\x33\x40\xe5\xd2\x93\xd9\x9b\x17" - "\xce\x9f\x97\x0b\xdd\x84\xb2\xc5\x76\xb2\x64\x62\x47\xf0\x35\x6a" - "\x2d\x2e\x2d\x46\x5e\x07\x86\xc9\x80\x80\xac\xe8\xf3\x71\x3d\x46" - "\x8b\xb7\x54\xa7\xda\x00\x60\x8b\xe8\xb0\xdf\x4d\xfd\xff\xc6\x80" - "\x6f\x1e\x76\x14\x99\xb5\xc9\x5b\xf7\x31\x10\xed\x69\x5a\x91\x97" - "\x59\x16\x0a\x7c\x86\xfd\x52\xc4\x84\xfd\x58\x73\x27\x80\x0b\x47" - "\x02\x03\x01\x00\x01\xa3\x82\x01\x15\x30\x82\x01\x11\x30\x09\x06" - "\x03\x55\x1d\x13\x04\x02\x30\x00\x30\x81\xac\x06\x03\x55\x1d\x20" - "\x04\x81\xa4\x30\x81\xa1\x30\x81\x9e\x06\x0b\x60\x86\x48\x01\x86" - "\xf8\x45\x01\x07\x17\x03\x30\x81\x8e\x30\x28\x06\x08\x2b\x06\x01" - "\x05\x05\x07\x02\x01\x16\x1c\x68\x74\x74\x70\x73\x3a\x2f\x2f\x77" - "\x77\x77\x2e\x76\x65\x72\x69\x73\x69\x67\x6e\x2e\x63\x6f\x6d\x2f" - "\x43\x50\x53\x30\x62\x06\x08\x2b\x06\x01\x05\x05\x07\x02\x02\x30" - "\x56\x30\x15\x16\x0e\x56\x65\x72\x69\x53\x69\x67\x6e\x2c\x20\x49" - "\x6e\x63\x2e\x30\x03\x02\x01\x01\x1a\x3d\x56\x65\x72\x69\x53\x69" - "\x67\x6e\x27\x73\x20\x43\x50\x53\x20\x69\x6e\x63\x6f\x72\x70\x2e" - "\x20\x62\x79\x20\x72\x65\x66\x65\x72\x65\x6e\x63\x65\x20\x6c\x69" - "\x61\x62\x2e\x20\x6c\x74\x64\x2e\x20\x28\x63\x29\x39\x37\x20\x56" - "\x65\x72\x69\x53\x69\x67\x6e\x30\x13\x06\x03\x55\x1d\x25\x04\x0c" - "\x30\x0a\x06\x08\x2b\x06\x01\x05\x05\x07\x03\x09\x30\x0b\x06\x03" - "\x55\x1d\x0f\x04\x04\x03\x02\x07\x80\x30\x0f\x06\x09\x2b\x06\x01" - "\x05\x05\x07\x30\x01\x05\x04\x02\x05\x00\x30\x22\x06\x03\x55\x1d" - "\x11\x04\x1b\x30\x19\xa4\x17\x30\x15\x31\x13\x30\x11\x06\x03\x55" - "\x04\x03\x13\x0a\x54\x47\x56\x2d\x42\x2d\x31\x37\x39\x38\x30\x0d" - "\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01" - "\x01\x00\x8c\xf2\x02\x52\xc9\x1e\x0e\xf1\x2e\x66\xe7\x6c\xda\x15" - "\x2c\xcc\x7c\x07\x1a\x8b\xe8\xf9\x02\xaa\x11\x85\x89\x98\xff\xe9" - "\xff\x1e\xcf\xf6\x6c\x07\x4f\xcb\xfe\x9a\xfa\xe9\x16\x1b\x08\x56" - "\x65\x04\x58\x2c\xda\xfb\x49\x24\x81\x92\xe4\xae\x56\x4f\xd6\xcd" - "\x95\xfd\x54\x99\xb1\x02\xdd\x56\xcc\x54\x6b\x5e\xf8\x05\xca\x34" - "\x83\xb6\x7a\xad\x83\xcf\x4b\x25\xb5\x0e\xcf\x98\x46\xf7\x97\x7f" - "\xb1\xc8\x1b\xde\x77\x6f\xe4\x4c\xb9\xd7\xdd\xc7\xfd\xbf\x13\x3b" - "\xa1\x99\xf7\x7d\xc9\xd0\xed\xd7\xea\xa9\x38\x6e\x73\x01\x0d\x43" - "\xc5\x5e\x0c\xa7\xd1\x77\xef\xd2\x37\x98\xcc\xe6\xbf\x4e\xed\x88" - "\x3e\x97\x1f\xd2\xe8\x28\x81\xba\xd9\xb1\xcb\x08\x65\x61\x72\x8c" - "\x59\x70\x1e\x71\x46\xa5\xdd\xa4\xd4\x65\xda\x15\x13\xea\xc6\x4f" - "\xaa\xb4\xb0\x31\x26\xd8\xcd\xf8\x37\xe4\x9b\x11\x8d\xa0\x80\x2f" - "\xd6\x11\xd7\xa4\x18\x43\x86\xec\xd3\xa6\x79\x97\x55\xfd\xf6\x61" - "\xf1\x48\xc9\x87\xd1\xb7\xfc\x7f\x67\x88\x73\xb4\x5f\xcc\x67\x8d" - "\x50\xc4\x97\x59\x22\xab\xc2\x32\x8a\x22\xd4\x60\x20\x78\x6d\xa3" - "\x91\x72\xf1\xfb\x1e\xa9\xa5\xf8\x64\x37\xbf\xb3\x38\x5f\x00\xe1" - "\x6e\x49"; + "\x30\x82\x06\xbe\x0a\x01\x00\xa0\x82\x06\xb7\x30\x82\x06\xb3\x06" + "\x09\x2b\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x06\xa4\x30\x82" + "\x06\xa0\x30\x81\x9e\xa2\x16\x04\x14\x81\x75\x7a\x7e\x22\xc8\xa4" + "\x4c\xdf\x9f\x2d\x3f\x87\x61\xaf\x57\xe1\xaf\x4f\xd9\x18\x0f\x32" + "\x30\x31\x34\x31\x31\x31\x30\x32\x30\x33\x33\x31\x37\x5a\x30\x73" + "\x30\x71\x30\x49\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04" + "\x14\x0c\x81\x29\x38\x74\xb2\x96\x29\x10\x7e\xd8\x35\x62\x52\x64" + "\x04\x53\x0d\xe0\x83\x04\x14\x0d\x44\x5c\x16\x53\x44\xc1\x82\x7e" + "\x1d\x20\xab\x25\xf4\x01\x63\xd8\xbe\x79\xa5\x02\x10\x4e\xeb\x31" + "\x09\x63\x39\x4e\x8e\xa0\x4e\x70\x9c\xa9\x1d\xcd\xa6\x80\x00\x18" + "\x0f\x32\x30\x31\x34\x31\x31\x31\x30\x32\x30\x33\x33\x31\x37\x5a" + "\xa0\x11\x18\x0f\x32\x30\x31\x34\x31\x31\x31\x37\x32\x30\x33\x33" + "\x31\x37\x5a\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05" + "\x05\x00\x03\x82\x01\x01\x00\x67\xf8\x80\x8d\x1b\x17\x3d\xbe\x81" + "\xf4\x3e\x74\x6d\x65\x5d\x9c\xdf\xd7\xdc\x7c\xd5\x23\x75\x24\xaa" + "\x55\x8f\xa5\x99\xf8\x27\xd6\x69\x8e\x5a\x25\x0d\x5e\x1e\x49\xfc" + "\x50\x98\x7b\xe7\x49\xfb\x05\xa5\x04\x46\xb7\x5e\xf6\x20\x46\x18" + "\xd5\xdc\x70\xd8\x99\x2b\x64\x12\xae\x74\x8e\xa1\xdb\x0e\x9f\x11" + "\x47\xdf\x87\x6e\x9d\xb9\x13\xaa\x66\x33\x8c\xf3\x3d\xed\x33\x57" + "\x7d\x4c\x82\x21\xc6\x18\x67\x56\xbe\x46\x78\xa8\xec\xd0\x5b\xc0" + "\x2d\xb6\xee\x5a\xd8\xbf\xc3\xea\x49\xcd\x6d\x01\x97\x6e\x3a\x81" + "\x0f\x06\x16\xb4\x1e\x15\x08\x5c\x46\x35\x44\xa4\x06\x84\x32\xaa" + "\x1b\xb7\xc2\x97\xbf\xfd\xc8\xe2\x6b\x7a\xa2\x40\x3b\x50\x59\xd2" + "\xbe\xa2\x26\x09\xea\xf7\xc1\x9e\x89\x1d\x34\x79\xc3\xba\xa6\xb8" + "\x09\x92\xc8\xee\xa4\xe2\xe2\x32\x43\x48\xc8\xf6\x69\xe5\xde\x33" + "\x75\xe8\x38\x8a\xb0\xda\x19\x38\x75\x39\xab\xd6\x3f\x70\xcc\x4e" + "\x45\x16\x2a\x82\x32\x8e\x48\x92\xa4\x1f\xe9\x46\x85\x18\x78\xa7" + "\x46\xf7\x11\x9e\x37\x95\x1a\xc3\x30\x2d\x90\x6a\xc3\xfd\x95\x81" + "\x6b\xb1\xcb\x12\x26\x9e\xe4\xd3\x2a\xc1\xdf\x82\x57\xf2\x21\xea" + "\x6a\x16\x12\x40\x94\xe1\xc9\xa0\x82\x04\xe7\x30\x82\x04\xe3\x30" + "\x82\x04\xdf\x30\x82\x03\xc7\xa0\x03\x02\x01\x02\x02\x10\x3d\x9a" + "\x82\xd0\xd1\xc3\x2f\x6f\xe0\x84\x5f\x99\x11\xee\x53\x42\x30\x0d" + "\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x81\xb5" + "\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x17\x30" + "\x15\x06\x03\x55\x04\x0a\x13\x0e\x56\x65\x72\x69\x53\x69\x67\x6e" + "\x2c\x20\x49\x6e\x63\x2e\x31\x1f\x30\x1d\x06\x03\x55\x04\x0b\x13" + "\x16\x56\x65\x72\x69\x53\x69\x67\x6e\x20\x54\x72\x75\x73\x74\x20" + "\x4e\x65\x74\x77\x6f\x72\x6b\x31\x3b\x30\x39\x06\x03\x55\x04\x0b" + "\x13\x32\x54\x65\x72\x6d\x73\x20\x6f\x66\x20\x75\x73\x65\x20\x61" + "\x74\x20\x68\x74\x74\x70\x73\x3a\x2f\x2f\x77\x77\x77\x2e\x76\x65" + "\x72\x69\x73\x69\x67\x6e\x2e\x63\x6f\x6d\x2f\x72\x70\x61\x20\x28" + "\x63\x29\x31\x30\x31\x2f\x30\x2d\x06\x03\x55\x04\x03\x13\x26\x56" + "\x65\x72\x69\x53\x69\x67\x6e\x20\x43\x6c\x61\x73\x73\x20\x33\x20" + "\x53\x65\x63\x75\x72\x65\x20\x53\x65\x72\x76\x65\x72\x20\x43\x41" + "\x20\x2d\x20\x47\x33\x30\x1e\x17\x0d\x31\x34\x30\x39\x31\x32\x30" + "\x30\x30\x30\x30\x30\x5a\x17\x0d\x31\x34\x31\x32\x31\x31\x32\x33" + "\x35\x39\x35\x39\x5a\x30\x81\x87\x31\x0b\x30\x09\x06\x03\x55\x04" + "\x06\x13\x02\x55\x53\x31\x17\x30\x15\x06\x03\x55\x04\x0a\x13\x0e" + "\x56\x65\x72\x69\x53\x69\x67\x6e\x2c\x20\x49\x6e\x63\x2e\x31\x1f" + "\x30\x1d\x06\x03\x55\x04\x0b\x13\x16\x56\x65\x72\x69\x53\x69\x67" + "\x6e\x20\x54\x72\x75\x73\x74\x20\x4e\x65\x74\x77\x6f\x72\x6b\x31" + "\x3e\x30\x3c\x06\x03\x55\x04\x03\x13\x35\x56\x65\x72\x69\x53\x69" + "\x67\x6e\x20\x43\x6c\x61\x73\x73\x20\x33\x20\x53\x65\x63\x75\x72" + "\x65\x20\x53\x65\x72\x76\x65\x72\x20\x43\x41\x20\x2d\x20\x47\x33" + "\x20\x4f\x43\x53\x50\x20\x52\x65\x73\x70\x6f\x6e\x64\x65\x72\x30" + "\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01" + "\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00" + "\xb6\xe6\xde\x56\xa9\xb7\xbe\x7a\x49\xd0\x2e\x14\x87\xa5\x9e\x16" + "\xed\x66\xf8\xa7\xd3\xdc\x3f\x89\x2d\xfc\x1a\x83\x29\x47\xd0\x37" + "\xdb\xa7\x5c\x4a\x22\xb0\x9a\x4e\xcb\x62\x72\xc4\x92\x04\x08\x99" + "\xbe\x60\xe0\xdc\x7a\xfa\x79\x10\xba\x16\x68\x26\x24\xb1\xbe\xaa" + "\x0f\x4e\x0c\x2d\xd6\x76\x6d\x43\x8b\xf5\xc1\xe8\xad\x98\x8d\x5e" + "\x96\x03\x92\x8a\x7f\x98\xae\xb8\xf1\x3c\x2a\x62\x62\xb1\x69\x8f" + "\x7a\xb0\x6c\xcc\xf6\x2b\x99\x2d\x95\x79\x7f\xd8\x57\x98\xe5\x75" + "\x98\xbb\x3c\xf8\x66\xc7\x1f\xc4\xf1\x75\x99\xbd\x4d\x77\x90\xbb" + "\x23\xea\xd9\x38\x4e\xe7\x8f\xb9\xbd\x69\x03\xc4\x73\x38\x29\x85" + "\xf6\x5b\x30\x16\xf9\x91\xc7\x9e\xba\xc9\x01\x90\x6c\xaf\xd3\x93" + "\xf0\x61\xb4\xa4\x3d\x30\x38\x6f\x33\x40\xe5\xd2\x93\xd9\x9b\x17" + "\xce\x9f\x97\x0b\xdd\x84\xb2\xc5\x76\xb2\x64\x62\x47\xf0\x35\x6a" + "\x2d\x2e\x2d\x46\x5e\x07\x86\xc9\x80\x80\xac\xe8\xf3\x71\x3d\x46" + "\x8b\xb7\x54\xa7\xda\x00\x60\x8b\xe8\xb0\xdf\x4d\xfd\xff\xc6\x80" + "\x6f\x1e\x76\x14\x99\xb5\xc9\x5b\xf7\x31\x10\xed\x69\x5a\x91\x97" + "\x59\x16\x0a\x7c\x86\xfd\x52\xc4\x84\xfd\x58\x73\x27\x80\x0b\x47" + "\x02\x03\x01\x00\x01\xa3\x82\x01\x15\x30\x82\x01\x11\x30\x09\x06" + "\x03\x55\x1d\x13\x04\x02\x30\x00\x30\x81\xac\x06\x03\x55\x1d\x20" + "\x04\x81\xa4\x30\x81\xa1\x30\x81\x9e\x06\x0b\x60\x86\x48\x01\x86" + "\xf8\x45\x01\x07\x17\x03\x30\x81\x8e\x30\x28\x06\x08\x2b\x06\x01" + "\x05\x05\x07\x02\x01\x16\x1c\x68\x74\x74\x70\x73\x3a\x2f\x2f\x77" + "\x77\x77\x2e\x76\x65\x72\x69\x73\x69\x67\x6e\x2e\x63\x6f\x6d\x2f" + "\x43\x50\x53\x30\x62\x06\x08\x2b\x06\x01\x05\x05\x07\x02\x02\x30" + "\x56\x30\x15\x16\x0e\x56\x65\x72\x69\x53\x69\x67\x6e\x2c\x20\x49" + "\x6e\x63\x2e\x30\x03\x02\x01\x01\x1a\x3d\x56\x65\x72\x69\x53\x69" + "\x67\x6e\x27\x73\x20\x43\x50\x53\x20\x69\x6e\x63\x6f\x72\x70\x2e" + "\x20\x62\x79\x20\x72\x65\x66\x65\x72\x65\x6e\x63\x65\x20\x6c\x69" + "\x61\x62\x2e\x20\x6c\x74\x64\x2e\x20\x28\x63\x29\x39\x37\x20\x56" + "\x65\x72\x69\x53\x69\x67\x6e\x30\x13\x06\x03\x55\x1d\x25\x04\x0c" + "\x30\x0a\x06\x08\x2b\x06\x01\x05\x05\x07\x03\x09\x30\x0b\x06\x03" + "\x55\x1d\x0f\x04\x04\x03\x02\x07\x80\x30\x0f\x06\x09\x2b\x06\x01" + "\x05\x05\x07\x30\x01\x05\x04\x02\x05\x00\x30\x22\x06\x03\x55\x1d" + "\x11\x04\x1b\x30\x19\xa4\x17\x30\x15\x31\x13\x30\x11\x06\x03\x55" + "\x04\x03\x13\x0a\x54\x47\x56\x2d\x42\x2d\x31\x37\x39\x38\x30\x0d" + "\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01" + "\x01\x00\x8c\xf2\x02\x52\xc9\x1e\x0e\xf1\x2e\x66\xe7\x6c\xda\x15" + "\x2c\xcc\x7c\x07\x1a\x8b\xe8\xf9\x02\xaa\x11\x85\x89\x98\xff\xe9" + "\xff\x1e\xcf\xf6\x6c\x07\x4f\xcb\xfe\x9a\xfa\xe9\x16\x1b\x08\x56" + "\x65\x04\x58\x2c\xda\xfb\x49\x24\x81\x92\xe4\xae\x56\x4f\xd6\xcd" + "\x95\xfd\x54\x99\xb1\x02\xdd\x56\xcc\x54\x6b\x5e\xf8\x05\xca\x34" + "\x83\xb6\x7a\xad\x83\xcf\x4b\x25\xb5\x0e\xcf\x98\x46\xf7\x97\x7f" + "\xb1\xc8\x1b\xde\x77\x6f\xe4\x4c\xb9\xd7\xdd\xc7\xfd\xbf\x13\x3b" + "\xa1\x99\xf7\x7d\xc9\xd0\xed\xd7\xea\xa9\x38\x6e\x73\x01\x0d\x43" + "\xc5\x5e\x0c\xa7\xd1\x77\xef\xd2\x37\x98\xcc\xe6\xbf\x4e\xed\x88" + "\x3e\x97\x1f\xd2\xe8\x28\x81\xba\xd9\xb1\xcb\x08\x65\x61\x72\x8c" + "\x59\x70\x1e\x71\x46\xa5\xdd\xa4\xd4\x65\xda\x15\x13\xea\xc6\x4f" + "\xaa\xb4\xb0\x31\x26\xd8\xcd\xf8\x37\xe4\x9b\x11\x8d\xa0\x80\x2f" + "\xd6\x11\xd7\xa4\x18\x43\x86\xec\xd3\xa6\x79\x97\x55\xfd\xf6\x61" + "\xf1\x48\xc9\x87\xd1\xb7\xfc\x7f\x67\x88\x73\xb4\x5f\xcc\x67\x8d" + "\x50\xc4\x97\x59\x22\xab\xc2\x32\x8a\x22\xd4\x60\x20\x78\x6d\xa3" + "\x91\x72\xf1\xfb\x1e\xa9\xa5\xf8\x64\x37\xbf\xb3\x38\x5f\x00\xe1" + "\x6e\x49"; gnutls_datum_t long_resp = { long_resp_str, sizeof(long_resp_str) - 1 }; @@ -809,9 +816,8 @@ static void ocsp_invalid_calls(void) exit(1); } - rc = gnutls_ocsp_resp_get_responder_raw_id(resp, - GNUTLS_OCSP_RESP_ID_KEY, - &dat); + rc = gnutls_ocsp_resp_get_responder_raw_id( + resp, GNUTLS_OCSP_RESP_ID_KEY, &dat); if (rc != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { fail("gnutls_ocsp_resp_get_responder_raw_id %s\n", gnutls_strerror(rc)); @@ -858,8 +864,7 @@ static void req_parse(void) /* check nonce */ { gnutls_datum_t expect = { (unsigned char *)REQ1NONCE + 2, - sizeof(REQ1NONCE) - 3 - }; + sizeof(REQ1NONCE) - 3 }; gnutls_datum_t got; unsigned int critical; @@ -894,8 +899,8 @@ static void req_parse(void) if (strlen(REQ1INFO) != d.size || memcmp(REQ1INFO, d.data, strlen(REQ1INFO)) != 0) { printf("expected (len %ld):\n%s\ngot (len %d):\n%.*s\n", - strlen(REQ1INFO), REQ1INFO, (int)d.size, - (int)d.size, d.data); + strlen(REQ1INFO), REQ1INFO, (int)d.size, (int)d.size, + d.data); fail("ocsp request print failed\n"); exit(1); } @@ -1011,8 +1016,8 @@ static void req_parse(void) exit(1); } - if (n2.size == got.size - && memcmp(n1.data, n2.data, n1.size) == 0) { + if (n2.size == got.size && + memcmp(n1.data, n2.data, n1.size) == 0) { fail("ocsp request random nonce memcmp failed\n"); exit(1); } @@ -1045,13 +1050,11 @@ static void req_addcert_id(void) /* add ocsp request nonce */ { - gnutls_datum_t nonce = - { (unsigned char *)REQ1NONCE, sizeof(REQ1NONCE) - 1 }; + gnutls_datum_t nonce = { (unsigned char *)REQ1NONCE, + sizeof(REQ1NONCE) - 1 }; - ret = - gnutls_ocsp_req_set_extension(req, - "1.3.6.1.5.5.7.48.1.2", - 0, &nonce); + ret = gnutls_ocsp_req_set_extension(req, "1.3.6.1.5.5.7.48.1.2", + 0, &nonce); if (ret != 0) { fail("gnutls_ocsp_req_set_extension %d\n", ret); exit(1); @@ -1060,12 +1063,12 @@ static void req_addcert_id(void) /* add cert_id */ { - gnutls_datum_t issuer_name_hash = - { (unsigned char *)REQ1INH, sizeof(REQ1INH) - 1 }; - gnutls_datum_t issuer_key_hash = - { (unsigned char *)REQ1IKH, sizeof(REQ1IKH) - 1 }; - gnutls_datum_t serial_number = - { (unsigned char *)REQ1SN, sizeof(REQ1SN) - 1 }; + gnutls_datum_t issuer_name_hash = { (unsigned char *)REQ1INH, + sizeof(REQ1INH) - 1 }; + gnutls_datum_t issuer_key_hash = { (unsigned char *)REQ1IKH, + sizeof(REQ1IKH) - 1 }; + gnutls_datum_t serial_number = { (unsigned char *)REQ1SN, + sizeof(REQ1SN) - 1 }; ret = gnutls_ocsp_req_add_cert_id(req, GNUTLS_DIG_SHA1, &issuer_name_hash, @@ -1088,8 +1091,8 @@ static void req_addcert_id(void) if (strlen(REQ1INFO) != d.size || memcmp(REQ1INFO, d.data, strlen(REQ1INFO)) != 0) { printf("expected (len %ld):\n%s\ngot (len %d):\n%.*s\n", - strlen(REQ1INFO), REQ1INFO, (int)d.size, - (int)d.size, d.data); + strlen(REQ1INFO), REQ1INFO, (int)d.size, (int)d.size, + d.data); fail("ocsp request print failed\n"); exit(1); } @@ -1134,13 +1137,11 @@ static void req_addcert(void) /* add ocsp request nonce */ { - gnutls_datum_t nonce = - { (unsigned char *)REQ1NONCE, sizeof(REQ1NONCE) - 1 }; + gnutls_datum_t nonce = { (unsigned char *)REQ1NONCE, + sizeof(REQ1NONCE) - 1 }; - ret = - gnutls_ocsp_req_set_extension(req, - "1.3.6.1.5.5.7.48.1.2", - 0, &nonce); + ret = gnutls_ocsp_req_set_extension(req, "1.3.6.1.5.5.7.48.1.2", + 0, &nonce); if (ret != 0) { fail("gnutls_ocsp_req_set_extension %d\n", ret); exit(1); @@ -1163,24 +1164,22 @@ static void req_addcert(void) exit(1); } - ret = - gnutls_x509_crt_import(issuer, &issuer_data, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(issuer, &issuer_data, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("gnutls_x509_crt_import (issuer) %d\n", ret); exit(1); } - ret = - gnutls_x509_crt_import(subject, &subject_data, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(subject, &subject_data, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("gnutls_x509_crt_import (subject) %d\n", ret); exit(1); } - ret = gnutls_ocsp_req_add_cert(req, GNUTLS_DIG_SHA1, - issuer, subject); + ret = gnutls_ocsp_req_add_cert(req, GNUTLS_DIG_SHA1, issuer, + subject); if (ret != 0) { fail("gnutls_ocsp_add_cert %d\n", ret); exit(1); @@ -1201,8 +1200,8 @@ static void req_addcert(void) if (strlen(REQ1INFO) != d.size || memcmp(REQ1INFO, d.data, strlen(REQ1INFO)) != 0) { printf("expected (len %ld):\n%s\ngot (len %d):\n%.*s\n", - strlen(REQ1INFO), REQ1INFO, (int)d.size, - (int)d.size, d.data); + strlen(REQ1INFO), REQ1INFO, (int)d.size, (int)d.size, + d.data); fail("ocsp request print failed\n"); exit(1); } @@ -1265,9 +1264,8 @@ static void check_ocsp_resp(gnutls_ocsp_resp_t resp) gnutls_strerror(ret)); } - ret = gnutls_ocsp_resp_get_single(resp, 0, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - &revocation_reason); + ret = gnutls_ocsp_resp_get_single(resp, 0, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, &revocation_reason); if (ret < 0) { fail("error in gnutls_ocsp_resp_get_single: %s\n", gnutls_strerror(ret)); @@ -1310,8 +1308,8 @@ static void resp_import(void) if (strlen(RESP1INFO) != d.size || memcmp(RESP1INFO, d.data, strlen(RESP1INFO)) != 0) { printf("expected (len %ld):\n%s\ngot (len %d):\n%.*s\n", - strlen(RESP1INFO), RESP1INFO, (int)d.size, - (int)d.size, d.data); + strlen(RESP1INFO), RESP1INFO, (int)d.size, (int)d.size, + d.data); fail("ocsp response print failed\n"); exit(1); } @@ -1337,8 +1335,8 @@ static void resp_import(void) if (memcmp(RESP2INFO, d.data, strlen(RESP2INFO)) != 0) { printf("expected (len %ld):\n%s\ngot (len %d):\n%.*s\n", - strlen(RESP2INFO), RESP2INFO, (int)d.size, - (int)d.size, d.data); + strlen(RESP2INFO), RESP2INFO, (int)d.size, (int)d.size, + d.data); fail("ocsp response print failed\n"); exit(1); } @@ -1373,8 +1371,8 @@ static void resp_import(void) if (memcmp(RESP3INFO, d.data, strlen(RESP3INFO)) != 0) { printf("expected (len %ld):\n%s\ngot (len %d):\n%.*s\n", - strlen(RESP3INFO), RESP3INFO, (int)d.size, - (int)d.size, d.data); + strlen(RESP3INFO), RESP3INFO, (int)d.size, (int)d.size, + d.data); fail("ocsp response 3 print failed\n"); exit(1); } @@ -1427,24 +1425,22 @@ static void resp_verify(void) exit(1); } - ret = - gnutls_x509_crt_import(cert, &blog_cert_data, GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(cert, &blog_cert_data, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("gnutls_x509_crt_import (cert) %d\n", ret); exit(1); } - ret = - gnutls_x509_crt_import(issuer, &blog_issuer_data, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(issuer, &blog_issuer_data, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("gnutls_x509_crt_import (issuer) %d\n", ret); exit(1); } - ret = - gnutls_x509_crt_import(signer, &blog_signer_data, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(signer, &blog_signer_data, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("gnutls_x509_crt_import (signer) %d\n", ret); exit(1); @@ -1465,9 +1461,8 @@ static void resp_verify(void) /* check direct verify with cert (should fail) */ - ret = - gnutls_ocsp_resp_verify_direct(resp, cert, &verify, - GNUTLS_VERIFY_ALLOW_BROKEN); + ret = gnutls_ocsp_resp_verify_direct(resp, cert, &verify, + GNUTLS_VERIFY_ALLOW_BROKEN); if (ret < 0) { fail("gnutls_ocsp_resp_verify_direct (cert) %d\n", ret); exit(1); @@ -1492,9 +1487,8 @@ static void resp_verify(void) exit(1); } - ret = - gnutls_ocsp_resp_verify(resp, list, &verify, - GNUTLS_VERIFY_ALLOW_BROKEN); + ret = gnutls_ocsp_resp_verify(resp, list, &verify, + GNUTLS_VERIFY_ALLOW_BROKEN); if (ret < 0) { fail("gnutls_ocsp_resp_verify (issuer) %d\n", ret); exit(1); @@ -1548,9 +1542,8 @@ static void resp_verify(void) exit(1); } - ret = - gnutls_ocsp_resp_verify(resp, list, &verify, - GNUTLS_VERIFY_ALLOW_BROKEN); + ret = gnutls_ocsp_resp_verify(resp, list, &verify, + GNUTLS_VERIFY_ALLOW_BROKEN); if (ret < 0) { fail("gnutls_ocsp_resp_verify (issuer) %d\n", ret); exit(1); @@ -1640,9 +1633,8 @@ static void long_resp_check(void) exit(1); } - ret = - gnutls_x509_crt_import(signer, &long_resp_signer_data, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(signer, &long_resp_signer_data, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("gnutls_x509_crt_import (cert) %d\n", ret); exit(1); diff --git a/tests/oids.c b/tests/oids.c index fd95f7006b..77fb7a055e 100644 --- a/tests/oids.c +++ b/tests/oids.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -32,21 +32,21 @@ #include "utils.h" -#define SELF_TEST_SIG(x) \ - ret = gnutls_oid_to_sign(gnutls_sign_get_oid(x)); \ - if (ret != x) { \ +#define SELF_TEST_SIG(x) \ + ret = gnutls_oid_to_sign(gnutls_sign_get_oid(x)); \ + if (ret != x) { \ fail("error testing %s\n", gnutls_sign_get_name(x)); \ } -#define SELF_TEST_PK(x) \ - ret = gnutls_oid_to_pk(gnutls_pk_get_oid(x)); \ - if (ret != x) { \ +#define SELF_TEST_PK(x) \ + ret = gnutls_oid_to_pk(gnutls_pk_get_oid(x)); \ + if (ret != x) { \ fail("error testing %s\n", gnutls_pk_get_name(x)); \ } -#define SELF_TEST_DIG(x) \ - ret = gnutls_oid_to_digest(gnutls_digest_get_oid(x)); \ - if (ret != x) { \ +#define SELF_TEST_DIG(x) \ + ret = gnutls_oid_to_digest(gnutls_digest_get_oid(x)); \ + if (ret != x) { \ fail("error testing %s\n", gnutls_digest_get_name(x)); \ } diff --git a/tests/openconnect-dtls12.c b/tests/openconnect-dtls12.c index dab7ed647a..722961ed82 100644 --- a/tests/openconnect-dtls12.c +++ b/tests/openconnect-dtls12.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,19 +35,19 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" static void server_log_func(int level, const char *str) { @@ -62,7 +62,7 @@ static void client_log_func(int level, const char *str) /* A DTLS client handling DTLS 1.2 resumption under AnyConnect protocol which sets premaster secret. */ -# define MAX_BUF 1024 +#define MAX_BUF 1024 static ssize_t push(gnutls_transport_ptr_t tr, const void *data, size_t len) { @@ -71,8 +71,8 @@ static ssize_t push(gnutls_transport_ptr_t tr, const void *data, size_t len) return send(fd, data, len, 0); } -static gnutls_datum_t master = { (void *) - "\x44\x66\x44\xa9\xb6\x29\xed\x6e\xd6\x93\x15\xdb\xf0\x7d\x4b\x2e\x18\xb1\x9d\xed\xff\x6a\x86\x76\xc9\x0e\x16\xab\xc2\x10\xbb\x17\x99\x24\xb1\xd9\xb9\x95\xe7\xea\xea\xea\xea\xea\xff\xaa\xac", +static gnutls_datum_t master = { + (void *)"\x44\x66\x44\xa9\xb6\x29\xed\x6e\xd6\x93\x15\xdb\xf0\x7d\x4b\x2e\x18\xb1\x9d\xed\xff\x6a\x86\x76\xc9\x0e\x16\xab\xc2\x10\xbb\x17\x99\x24\xb1\xd9\xb9\x95\xe7\xea\xea\xea\xea\xea\xff\xaa\xac", 48 }; static gnutls_datum_t sess_id = { (void *)"\xd9\xb9\x95\xe7\xea", 5 }; @@ -101,9 +101,9 @@ static void client(int fd, const char *prio, int proto, int cipher, int kx, assert(gnutls_priority_set_direct(session, prio, NULL) >= 0); - ret = gnutls_session_set_premaster(session, GNUTLS_CLIENT, - proto, kx, cipher, mac, - GNUTLS_COMP_NULL, &master, &sess_id); + ret = gnutls_session_set_premaster(session, GNUTLS_CLIENT, proto, kx, + cipher, mac, GNUTLS_COMP_NULL, + &master, &sess_id); if (ret < 0) { fail("client: gnutls_session_set_premaster failed: %s\n", gnutls_strerror(ret)); @@ -119,8 +119,7 @@ static void client(int fd, const char *prio, int proto, int cipher, int kx, */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -144,8 +143,8 @@ static void client(int fd, const char *prio, int proto, int cipher, int kx, if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { ret = gnutls_record_recv(session, buffer, sizeof(buffer) - 1); @@ -162,7 +161,7 @@ static void client(int fd, const char *prio, int proto, int cipher, int kx, gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); @@ -201,9 +200,9 @@ static void server(int fd, const char *prio, int proto, int cipher, int kx, */ assert(gnutls_priority_set_direct(session, prio, NULL) >= 0); - ret = gnutls_session_set_premaster(session, GNUTLS_SERVER, - proto, kx, cipher, mac, - GNUTLS_COMP_NULL, &master, &sess_id); + ret = gnutls_session_set_premaster(session, GNUTLS_SERVER, proto, kx, + cipher, mac, GNUTLS_COMP_NULL, + &master, &sess_id); if (ret < 0) { fail("server: gnutls_session_set_premaster failed: %s\n", gnutls_strerror(ret)); @@ -217,8 +216,7 @@ static void server(int fd, const char *prio, int proto, int cipher, int kx, do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -230,8 +228,8 @@ static void server(int fd, const char *prio, int proto, int cipher, int kx, if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* see the Getting peer's information example */ /* print_info(session); */ @@ -324,4 +322,4 @@ void doit(void) GNUTLS_MAC_AEAD, "(DTLS1.2)-(RSA)-(AES-256-GCM)"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/openssl.c b/tests/openssl.c index 604d58d002..5dff1e32f4 100644 --- a/tests/openssl.c +++ b/tests/openssl.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -49,8 +49,10 @@ void doit(void) MD5_Update(&c, "abc", 3); MD5_Final(&(md[0]), &c); - if (memcmp(md, "\x90\x01\x50\x98\x3c\xd2\x4f\xb0" - "\xd6\x96\x3f\x7d\x28\xe1\x7f\x72", sizeof(md)) != 0) { + if (memcmp(md, + "\x90\x01\x50\x98\x3c\xd2\x4f\xb0" + "\xd6\x96\x3f\x7d\x28\xe1\x7f\x72", + sizeof(md)) != 0) { hexprint(md, sizeof(md)); fail("MD5 failure\n"); } else if (debug) diff --git a/tests/parse_ca.c b/tests/parse_ca.c index ff8cb63509..9fe5996a2c 100644 --- a/tests/parse_ca.c +++ b/tests/parse_ca.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -28,31 +28,32 @@ #include "utils.h" static char castr[] = - "-----BEGIN CERTIFICATE-----\r\n" - "MIIB5zCCAVKgAwIBAgIERiYdJzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\r\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTExWhcNMDgwNDE3MTMyOTExWjAZMRcw\r\n" - "FQYDVQQDEw5HbnVUTFMgdGVzdCBDQTCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA\r\n" - "vuyYeh1vfmslnuggeEKgZAVmQ5ltSdUY7H25WGSygKMUYZ0KT74v8C780qtcNt9T\r\n" - "7EPH/N6RvB4BprdssgcQLsthR3XKA84jbjjxNCcaGs33lvOz8A1nf8p3hD+cKfRi\r\n" - "kfYSW2JazLrtCC4yRCas/SPOUxu78of+3HiTfFm/oXUCAwEAAaNDMEEwDwYDVR0T\r\n" - "AQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwQAMB0GA1UdDgQWBBTpPBz7rZJu5gak\r\n" - "Viyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAiaIRqGfp1jPpNeVhABK60SU0KIAy\r\n" - "njuu7kHq5peUgYn8Jd9zNzExBOEp1VOipGsf6G66oQAhDFp2o8zkz7ZH71zR4HEW\r\n" - "KoX6n5Emn6DvcEH/9pAhnGxNHJAoS7czTKv/JDZJhkqHxyrE1fuLsg5Qv25DTw7+\r\n" - "PfqUpIhz5Bbm7J4=\r\n" - "-----END CERTIFICATE-----\r\n" - "-----BEGIN CERTIFICATE-----\r\n" - "MIIB5zCCAVKgAwIBAgIERiYdJzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\r\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTExWhcNMDgwNDE3MTMyOTExWjAZMRcw\r\n" - "FQYDVQQDEw5HbnVUTFMgdGVzdCBDQTCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA\r\n" - "vuyYeh1vfmslnuggeEKgZAVmQ5ltSdUY7H25WGSygKMUYZ0KT74v8C780qtcNt9T\r\n" - "7EPH/N6RvB4BprdssgcQLsthR3XKA84jbjjxNCcaGs33lvOz8A1nf8p3hD+cKfRi\r\n" - "kfYSW2JazLrtCC4yRCas/SPOUxu78of+3HiTfFm/oXUCAwEAAaNDMEEwDwYDVR0T\r\n" - "AQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwQAMB0GA1UdDgQWBBTpPBz7rZJu5gak\r\n" - "Viyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAiaIRqGfp1jPpNeVhABK60SU0KIAy\r\n" - "njuu7kHq5peUgYn8Jd9zNzExBOEp1VOipGsf6G66oQAhDFp2o8zkz7ZH71zR4HEW\r\n" - "KoX6n5Emn6DvcEH/9pAhnGxNHJAoS7czTKv/JDZJhkqHxyrE1fuLsg5Qv25DTw7+\r\n" - "PfqUpIhz5Bbm7J4=\r\n" "-----END CERTIFICATE-----\r\n"; + "-----BEGIN CERTIFICATE-----\r\n" + "MIIB5zCCAVKgAwIBAgIERiYdJzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\r\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTExWhcNMDgwNDE3MTMyOTExWjAZMRcw\r\n" + "FQYDVQQDEw5HbnVUTFMgdGVzdCBDQTCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA\r\n" + "vuyYeh1vfmslnuggeEKgZAVmQ5ltSdUY7H25WGSygKMUYZ0KT74v8C780qtcNt9T\r\n" + "7EPH/N6RvB4BprdssgcQLsthR3XKA84jbjjxNCcaGs33lvOz8A1nf8p3hD+cKfRi\r\n" + "kfYSW2JazLrtCC4yRCas/SPOUxu78of+3HiTfFm/oXUCAwEAAaNDMEEwDwYDVR0T\r\n" + "AQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwQAMB0GA1UdDgQWBBTpPBz7rZJu5gak\r\n" + "Viyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAiaIRqGfp1jPpNeVhABK60SU0KIAy\r\n" + "njuu7kHq5peUgYn8Jd9zNzExBOEp1VOipGsf6G66oQAhDFp2o8zkz7ZH71zR4HEW\r\n" + "KoX6n5Emn6DvcEH/9pAhnGxNHJAoS7czTKv/JDZJhkqHxyrE1fuLsg5Qv25DTw7+\r\n" + "PfqUpIhz5Bbm7J4=\r\n" + "-----END CERTIFICATE-----\r\n" + "-----BEGIN CERTIFICATE-----\r\n" + "MIIB5zCCAVKgAwIBAgIERiYdJzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\r\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTExWhcNMDgwNDE3MTMyOTExWjAZMRcw\r\n" + "FQYDVQQDEw5HbnVUTFMgdGVzdCBDQTCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA\r\n" + "vuyYeh1vfmslnuggeEKgZAVmQ5ltSdUY7H25WGSygKMUYZ0KT74v8C780qtcNt9T\r\n" + "7EPH/N6RvB4BprdssgcQLsthR3XKA84jbjjxNCcaGs33lvOz8A1nf8p3hD+cKfRi\r\n" + "kfYSW2JazLrtCC4yRCas/SPOUxu78of+3HiTfFm/oXUCAwEAAaNDMEEwDwYDVR0T\r\n" + "AQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwQAMB0GA1UdDgQWBBTpPBz7rZJu5gak\r\n" + "Viyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAiaIRqGfp1jPpNeVhABK60SU0KIAy\r\n" + "njuu7kHq5peUgYn8Jd9zNzExBOEp1VOipGsf6G66oQAhDFp2o8zkz7ZH71zR4HEW\r\n" + "KoX6n5Emn6DvcEH/9pAhnGxNHJAoS7czTKv/JDZJhkqHxyrE1fuLsg5Qv25DTw7+\r\n" + "PfqUpIhz5Bbm7J4=\r\n" + "-----END CERTIFICATE-----\r\n"; void doit(void) { diff --git a/tests/pcert-list.c b/tests/pcert-list.c index 66244a8891..a90d14fd7a 100644 --- a/tests/pcert-list.c +++ b/tests/pcert-list.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,222 +35,218 @@ /* This tests functions related to pcert-lists */ -#define CERT0 \ -"-----BEGIN CERTIFICATE-----\n" \ -"MIIEITCCAomgAwIBAgIMVsXM+TCHHodT4TxYMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" \ -"BgNVBAMTBENBLTIwIBcNMTYwMjE4MTM1NDAxWhgPOTk5OTEyMzEyMzU5NTlaMBMx\n" \ -"ETAPBgNVBAMTCHNlcnZlci0zMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKC\n" \ -"AYEAs6z83Jg9XjIuBb87zm6uuBjGG+45IpSw6gRgU/1izgBUofefrkdvjhpneBYU\n" \ -"7PySNxTcyKUe1ZijKAYwck5jE76Y/xKNdMffgYqXOusCij7xutssdtvYw7yJjUHv\n" \ -"43+zqbydONRNebO8qw1/BGXzKCsAE83iYumxJxSkwTsq04Kp9vrfW6zaTpa3VGq5\n" \ -"wYPBT+neszrT9/E/Bn+QJh66US+EYnl+TlI5XTp4J0XqGP8PB1OYG/WPPjdRgv7j\n" \ -"C/dSsEaLmV2YdQWjPRqZ+hxQbRJbLaJ9b7czBSdK1lhefAKshUEV+SGQI2MzEVGW\n" \ -"lP4tLpIhiy33fNWpnkhbxxsa/NnIS2Vb8JvQidKdgQLsJL8hRJ/it41B4JGiaBnM\n" \ -"uQmIwr+DFbVs2ibm2VlV1oNB1DrFOAYNURSIUJM0th+Wj4vI9hnwIVeUY/u3Dk5V\n" \ -"bhks+JfbPLmbJ7Tx9JiBCes7isuxNCtWrWRDUQj71IqCc2+iV86Q+gw3rcpLeLYN\n" \ -"yv3PAgMBAAGjdzB1MAwGA1UdEwEB/wQCMAAwFAYDVR0RBA0wC4IJbG9jYWxob3N0\n" \ -"MA8GA1UdDwEB/wQFAwMHoAAwHQYDVR0OBBYEFEnsKuMM/IbHLD1TnAK78YwFx0VF\n" \ -"MB8GA1UdIwQYMBaAFFGRr1BCIq0AHmB59tUBsghMjvz/MA0GCSqGSIb3DQEBCwUA\n" \ -"A4IBgQB0i38qq4/os7MIhUFnBFD/eduk5B+jaGvPTM8lsZJ/17BbiMBc5dyxjMVY\n" \ -"WYsm+KI5XEddBEqMYYwjdO/aoJzFLkkDu7E+UnygVZmMdQONuoyeQ/IrLk3l3zGi\n" \ -"JJlylxFBNkns+a4AnXwSAv/ZiZapjQQUX378IxOpZuqzELAPqCkqp/6LyJApDiVV\n" \ -"9av7WWySG5Wtp8lNs8o8l8ZxU14++fwo1euH0mQ4AM2DGLAhQSdOqChmROWt4MPd\n" \ -"7raaO8dl6wMI83OgOHIhZlvlmmZTYqbpPXYm/2lM9ePBU/bkA7Y/X7HFDbTIBH9Y\n" \ -"rkVZyq3FYPUtYRyqQXa8s730MQBxGmVZkKptCZjLDziZF4sAZGX78EyDeSl3Z3Jg\n" \ -"I5JGLsdznHlhqEx8hNJnYtINVv1arn2UHO7p3/cB8VXt2UdQP+YJYdVzCvT4WW1E\n" \ -"PvzTI6JbcwDpOs0MxRIrXrhgEZWylk0W93FO1WErd1+Sn3LZqvrtyXLzYB9wCl1I\n" \ -"A34kGlE=\n" \ -"-----END CERTIFICATE-----\n" +#define CERT0 \ + "-----BEGIN CERTIFICATE-----\n" \ + "MIIEITCCAomgAwIBAgIMVsXM+TCHHodT4TxYMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" \ + "BgNVBAMTBENBLTIwIBcNMTYwMjE4MTM1NDAxWhgPOTk5OTEyMzEyMzU5NTlaMBMx\n" \ + "ETAPBgNVBAMTCHNlcnZlci0zMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKC\n" \ + "AYEAs6z83Jg9XjIuBb87zm6uuBjGG+45IpSw6gRgU/1izgBUofefrkdvjhpneBYU\n" \ + "7PySNxTcyKUe1ZijKAYwck5jE76Y/xKNdMffgYqXOusCij7xutssdtvYw7yJjUHv\n" \ + "43+zqbydONRNebO8qw1/BGXzKCsAE83iYumxJxSkwTsq04Kp9vrfW6zaTpa3VGq5\n" \ + "wYPBT+neszrT9/E/Bn+QJh66US+EYnl+TlI5XTp4J0XqGP8PB1OYG/WPPjdRgv7j\n" \ + "C/dSsEaLmV2YdQWjPRqZ+hxQbRJbLaJ9b7czBSdK1lhefAKshUEV+SGQI2MzEVGW\n" \ + "lP4tLpIhiy33fNWpnkhbxxsa/NnIS2Vb8JvQidKdgQLsJL8hRJ/it41B4JGiaBnM\n" \ + "uQmIwr+DFbVs2ibm2VlV1oNB1DrFOAYNURSIUJM0th+Wj4vI9hnwIVeUY/u3Dk5V\n" \ + "bhks+JfbPLmbJ7Tx9JiBCes7isuxNCtWrWRDUQj71IqCc2+iV86Q+gw3rcpLeLYN\n" \ + "yv3PAgMBAAGjdzB1MAwGA1UdEwEB/wQCMAAwFAYDVR0RBA0wC4IJbG9jYWxob3N0\n" \ + "MA8GA1UdDwEB/wQFAwMHoAAwHQYDVR0OBBYEFEnsKuMM/IbHLD1TnAK78YwFx0VF\n" \ + "MB8GA1UdIwQYMBaAFFGRr1BCIq0AHmB59tUBsghMjvz/MA0GCSqGSIb3DQEBCwUA\n" \ + "A4IBgQB0i38qq4/os7MIhUFnBFD/eduk5B+jaGvPTM8lsZJ/17BbiMBc5dyxjMVY\n" \ + "WYsm+KI5XEddBEqMYYwjdO/aoJzFLkkDu7E+UnygVZmMdQONuoyeQ/IrLk3l3zGi\n" \ + "JJlylxFBNkns+a4AnXwSAv/ZiZapjQQUX378IxOpZuqzELAPqCkqp/6LyJApDiVV\n" \ + "9av7WWySG5Wtp8lNs8o8l8ZxU14++fwo1euH0mQ4AM2DGLAhQSdOqChmROWt4MPd\n" \ + "7raaO8dl6wMI83OgOHIhZlvlmmZTYqbpPXYm/2lM9ePBU/bkA7Y/X7HFDbTIBH9Y\n" \ + "rkVZyq3FYPUtYRyqQXa8s730MQBxGmVZkKptCZjLDziZF4sAZGX78EyDeSl3Z3Jg\n" \ + "I5JGLsdznHlhqEx8hNJnYtINVv1arn2UHO7p3/cB8VXt2UdQP+YJYdVzCvT4WW1E\n" \ + "PvzTI6JbcwDpOs0MxRIrXrhgEZWylk0W93FO1WErd1+Sn3LZqvrtyXLzYB9wCl1I\n" \ + "A34kGlE=\n" \ + "-----END CERTIFICATE-----\n" -static unsigned char server_cert_pem[] = - CERT0 - "-----BEGIN CERTIFICATE-----\n" - "MIIEFDCCAnygAwIBAgIBAjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0x\n" - "MCAXDTE2MDIxODEzNTQwMVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" - "QS0yMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAu1/IharA+97QfzDj\n" - "UXEBl9TAFqHkN9B5erj1yhMlwPAakreStR8VvuCx46TA3gP7sbUYU811T+2D5/GU\n" - "u7YuMWsFeSmGWvbxa/tKTpXoEM0bNV+rIbxAcfgtxbARZDocv8gxfG/70vc2dSDh\n" - "KgZCoMQyO6qGLRdsoPAf+De7YD8sKS7Q3d3Xnfyv4AVnDkbAVFsZhu4lQFuWXyfG\n" - "Sl95TT94wLDLdf/Gf/F0nNsv6+D6yb15afhJKdqo6PH19gsyE0U3zj6c/7abha2W\n" - "fvVe6hVbaW1HLDZdHZnjlJHamNFdrOHI5Xi+SJO7/3MWvdTzdMVFBDfS5o7TvYyS\n" - "pu6iTmVeJvJ1OpXV7Lw1M2dSTW9RJLzUF3fXYOsuh32qMel9IzhnVh8Veyl0I0WL\n" - "hThmkF73mGWcVq4lMPXwEnwYJtRLeH5HWvG3rgmb7m827XMNnqKE0NOkPH63OUqJ\n" - "0h4b6PBb6wiOgnsC3yZIf0KgB0gToySvmD6MyJsmbN9rQit1AgMBAAGjeTB3MA8G\n" - "A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUD\n" - "AwcEADAdBgNVHQ4EFgQUUZGvUEIirQAeYHn21QGyCEyO/P8wHwYDVR0jBBgwFoAU\n" - "v9x1k1GrVS0yXKvMzD7k/zInm9gwDQYJKoZIhvcNAQELBQADggGBAIwUNzAo7Efm\n" - "X8dVGz6OEsfZ/RPIeYxZ5cmqWwcZ4oLBv55xGJNG+nIcgLMA2L6ybtFiK2nKtqy4\n" - "hMv/P6qvjX5vVQGVgLclvMkDkmXWVdqkTYDX7cSe/Bv6qIS2KBaVo87r2DIWN8Zu\n" - "J3w0U3RcD6ilXVmqvARLeKWBPrCep0DJvg/BEAFSjCgHImrpZdzm6NuUr1eYCfgN\n" - "HPwUj5Ivyy9ioPRXGzzHQH6T1p/xIRbuhqTGRUin3MqGQlFseBJ2qXPf6uQmCaWZ\n" - "tFp4oWLJThqVmlvHViPDy235roYSKkJXH4qxjbhuv0pgUZOzmSsG7YA/oYNGDm6I\n" - "bEvids1r45PjYDHctB4QLhXNY3SJVgMog1KuVCK6JQL8F8XP5Sup1qW4ed/WvXwe\n" - "PBTOWbE/ENnxF2/nQLwnr80cgVx8rAE5sxubNNQVHu/6NonPzGUhTHXmGleuXPbb\n" - "Mjv4x9s3QftWUVJb7b8GUt5bMAthqo7Y47Jed1kKIt2PAm0SNBMYrw==\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIEFDCCAnygAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCAXDTE2MDIxODEzNTQwMVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" - "QS0xMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0QG/LnrMV5vsE3G7\n" - "mGVYr33PFQ/WojwKg1C8GGH9aaIn+VMuBS2d1/mwtM9axoje1uQzwKp/hPT+N3Z3\n" - "qmFWeX8somDwowNDWN3skST4ob/M4aSlfP6OhNeIfBNvPTz3GtsbOtN5TkOX7Nf2\n" - "+mfFm09xMHQ3z4yyGNmKG/oxGKY2WDe93hp0rlIZ6ihMPcsCHwWLfja3SAT4AcXs\n" - "TFrTxEnaTYuVxcRcoW7lEDtcCyGbPfszo/rEQfJxwxRF46Yoz6rrCSkXOzLhQa4v\n" - "PPsZJ6ltNqkCtSrnhcCl3SC9JqdI4e7lGsnDylq4evi8RtOYknVOqDwv0q/9DI2+\n" - "rhFUy4I0Ah9H2T7dC01KIOjGiHyThCgkt2Nee/AXFflpN2Ws7/SGALdx6Vy3OkVo\n" - "NkHYxlKKn/06Yp8XlNPR64EqxeJqPW9Pf742EJUCOeavu5wPWJtLQr03JyKWoeZf\n" - "IYT/HwZUJveqEBU1EKeZRSvrRwHnmzQJuxyUhj/2C92QF5edAgMBAAGjeTB3MA8G\n" - "A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUD\n" - "AwcEADAdBgNVHQ4EFgQUv9x1k1GrVS0yXKvMzD7k/zInm9gwHwYDVR0jBBgwFoAU\n" - "2iUEUyXy7fPzZtc8ktanTiDzjuUwDQYJKoZIhvcNAQELBQADggGBAC9X5og786Il\n" - "CUKj4FpZrqgfN+Cwf1EebW1tX1iKYASGo8t7JS0Btt3ycVpx04JSJy5WM9cQNFU0\n" - "5vimaG0qAsWhHXljhmM0mr4ruW1Jw6KAuqw0V/JJ0oYRZaYnvi6UsoJJjq8YcatW\n" - "5ixtKr928933kYD71sMZBN7Um7ictDq0M2oaW4k0/Yt4Uqb9fv20E4EHKEpETMUR\n" - "FviTIjONdVsAVj4lxuS3u1Nt7B5ayYCkgFabME28ud6EazelwZWZwBRGiuPr6634\n" - "f8lZtnscRVU5oQb6DjkyD/SM+1ue6/wpNapoH7BimnvCcRmLvsG34vlyt7QC0BRO\n" - "cRmEPZCq8hIUIuD0x836FRNUSjjMVi2Dj+QjeNolpKgUjRF/h2yKmDRB2A7WAV5g\n" - "It7RRjMnkm3pvKj2d7/qb5OaccO4uoAq333PRAX0RLYT5yosFGq+RN8+WCnzuGsB\n" - "hCe33/7HCC6mO0/vsrQuRvECvAasznN9mF3t+ZXMvcsqTcOq4Iag1A==\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIID8zCCAlugAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCAXDTE2MDIxODEzNTQwMFoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" - "QS0wMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0MYBHVUjwlQH7Mvn\n" - "4viHyEONr+7M0+fLntPITQHihE8gxU3LpqAUpl7felAA4k0sJTaXvnZA+E1DCcIq\n" - "zksAhK3Qr8zZeCKNM41U1klcCh2+3IoGjg+CcQisb8gtiiXybH3qXYFgi3ww2YFG\n" - "cIjJAciZj8qLfwMhMcBPMx4IDHR7gdWH9V0xUZZiBkk7x3PBIWCr2FKD0877yR9t\n" - "wjlQ4Fbw5NW9j7WaUgeY2LV7iTtBH0bZ7D/04KsYdct6lKhUkzSUBg/bAUWCFp1j\n" - "ouFhzyqMf3jFDrcejxPKlRk15e9SkQYD/7dTpudXwbL9ugZfoP1xDRgslEyfyU/Q\n" - "DEyG5mlXjVBRiGvL+dfxRNw2E5xLpESt2rlMiBhe1cv8+XL5D6z/WBwDfBNUzoQR\n" - "X15YHK2NgNNHQ8u8GLtUbp3ZXaeKgj8fdR3UoRTqWgpy2vjVM3vN1xXFVTo13MJ8\n" - "isLXH/QNUR4tnOytDp1HyK2ybHkfXB1a0RMBwM5XDVD2LhPFAgMBAAGjWDBWMA8G\n" - "A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUD\n" - "AwcGADAdBgNVHQ4EFgQU2iUEUyXy7fPzZtc8ktanTiDzjuUwDQYJKoZIhvcNAQEL\n" - "BQADggGBAJrJujtXifCeySYWbnJlraec63Zgqfv4SZIEdLt5GFLdpjk2WCxhFrN3\n" - "n6JZgI2aUWin2OL1VA1hfddAPUSHOCV8nP/Vu1f/BEaeQjEVS2AOF7T+eQSTNQtN\n" - "MkTTi0UKKXZjIIXiW4YXDs2b22JIOXkL9rFyrvN4vvbIp/jwLWx5UTHFtsktMkai\n" - "MteJBobd69ra7kdX43EkUKrgSDNpMQn10y3w4ziPDsLZ9sWaRxESbXWqDn4A7J9t\n" - "prfxut+s/3rsZgpt4s2FsswymfuW8DhzH1EjfV1Tb32blpgz/40sIRbU158Wh1UH\n" - "/DGQ6RVX0RcRt7ce7QCYTROD/yHYPVucqLfRpVNJ3oujGYaMgnSSuxEOsfwx5u+P\n" - "8USIxyQNR9cX/gQswzs3Ouj1rXBnjiSS1YXWZXvqHsUamJ8O7qpnqkL2Ti64O0HA\n" - "wdTtAcDO0BTHvanKZojLZm8nStvTvFpSVh7z+8Fu0A5zAcHsDj4vLABsdPDsXUTr\n" - "kb2G3Yy/UA==\n" "-----END CERTIFICATE-----\n"; +static unsigned char server_cert_pem[] = CERT0 + "-----BEGIN CERTIFICATE-----\n" + "MIIEFDCCAnygAwIBAgIBAjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0x\n" + "MCAXDTE2MDIxODEzNTQwMVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0yMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAu1/IharA+97QfzDj\n" + "UXEBl9TAFqHkN9B5erj1yhMlwPAakreStR8VvuCx46TA3gP7sbUYU811T+2D5/GU\n" + "u7YuMWsFeSmGWvbxa/tKTpXoEM0bNV+rIbxAcfgtxbARZDocv8gxfG/70vc2dSDh\n" + "KgZCoMQyO6qGLRdsoPAf+De7YD8sKS7Q3d3Xnfyv4AVnDkbAVFsZhu4lQFuWXyfG\n" + "Sl95TT94wLDLdf/Gf/F0nNsv6+D6yb15afhJKdqo6PH19gsyE0U3zj6c/7abha2W\n" + "fvVe6hVbaW1HLDZdHZnjlJHamNFdrOHI5Xi+SJO7/3MWvdTzdMVFBDfS5o7TvYyS\n" + "pu6iTmVeJvJ1OpXV7Lw1M2dSTW9RJLzUF3fXYOsuh32qMel9IzhnVh8Veyl0I0WL\n" + "hThmkF73mGWcVq4lMPXwEnwYJtRLeH5HWvG3rgmb7m827XMNnqKE0NOkPH63OUqJ\n" + "0h4b6PBb6wiOgnsC3yZIf0KgB0gToySvmD6MyJsmbN9rQit1AgMBAAGjeTB3MA8G\n" + "A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUD\n" + "AwcEADAdBgNVHQ4EFgQUUZGvUEIirQAeYHn21QGyCEyO/P8wHwYDVR0jBBgwFoAU\n" + "v9x1k1GrVS0yXKvMzD7k/zInm9gwDQYJKoZIhvcNAQELBQADggGBAIwUNzAo7Efm\n" + "X8dVGz6OEsfZ/RPIeYxZ5cmqWwcZ4oLBv55xGJNG+nIcgLMA2L6ybtFiK2nKtqy4\n" + "hMv/P6qvjX5vVQGVgLclvMkDkmXWVdqkTYDX7cSe/Bv6qIS2KBaVo87r2DIWN8Zu\n" + "J3w0U3RcD6ilXVmqvARLeKWBPrCep0DJvg/BEAFSjCgHImrpZdzm6NuUr1eYCfgN\n" + "HPwUj5Ivyy9ioPRXGzzHQH6T1p/xIRbuhqTGRUin3MqGQlFseBJ2qXPf6uQmCaWZ\n" + "tFp4oWLJThqVmlvHViPDy235roYSKkJXH4qxjbhuv0pgUZOzmSsG7YA/oYNGDm6I\n" + "bEvids1r45PjYDHctB4QLhXNY3SJVgMog1KuVCK6JQL8F8XP5Sup1qW4ed/WvXwe\n" + "PBTOWbE/ENnxF2/nQLwnr80cgVx8rAE5sxubNNQVHu/6NonPzGUhTHXmGleuXPbb\n" + "Mjv4x9s3QftWUVJb7b8GUt5bMAthqo7Y47Jed1kKIt2PAm0SNBMYrw==\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIEFDCCAnygAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCAXDTE2MDIxODEzNTQwMVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0xMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0QG/LnrMV5vsE3G7\n" + "mGVYr33PFQ/WojwKg1C8GGH9aaIn+VMuBS2d1/mwtM9axoje1uQzwKp/hPT+N3Z3\n" + "qmFWeX8somDwowNDWN3skST4ob/M4aSlfP6OhNeIfBNvPTz3GtsbOtN5TkOX7Nf2\n" + "+mfFm09xMHQ3z4yyGNmKG/oxGKY2WDe93hp0rlIZ6ihMPcsCHwWLfja3SAT4AcXs\n" + "TFrTxEnaTYuVxcRcoW7lEDtcCyGbPfszo/rEQfJxwxRF46Yoz6rrCSkXOzLhQa4v\n" + "PPsZJ6ltNqkCtSrnhcCl3SC9JqdI4e7lGsnDylq4evi8RtOYknVOqDwv0q/9DI2+\n" + "rhFUy4I0Ah9H2T7dC01KIOjGiHyThCgkt2Nee/AXFflpN2Ws7/SGALdx6Vy3OkVo\n" + "NkHYxlKKn/06Yp8XlNPR64EqxeJqPW9Pf742EJUCOeavu5wPWJtLQr03JyKWoeZf\n" + "IYT/HwZUJveqEBU1EKeZRSvrRwHnmzQJuxyUhj/2C92QF5edAgMBAAGjeTB3MA8G\n" + "A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUD\n" + "AwcEADAdBgNVHQ4EFgQUv9x1k1GrVS0yXKvMzD7k/zInm9gwHwYDVR0jBBgwFoAU\n" + "2iUEUyXy7fPzZtc8ktanTiDzjuUwDQYJKoZIhvcNAQELBQADggGBAC9X5og786Il\n" + "CUKj4FpZrqgfN+Cwf1EebW1tX1iKYASGo8t7JS0Btt3ycVpx04JSJy5WM9cQNFU0\n" + "5vimaG0qAsWhHXljhmM0mr4ruW1Jw6KAuqw0V/JJ0oYRZaYnvi6UsoJJjq8YcatW\n" + "5ixtKr928933kYD71sMZBN7Um7ictDq0M2oaW4k0/Yt4Uqb9fv20E4EHKEpETMUR\n" + "FviTIjONdVsAVj4lxuS3u1Nt7B5ayYCkgFabME28ud6EazelwZWZwBRGiuPr6634\n" + "f8lZtnscRVU5oQb6DjkyD/SM+1ue6/wpNapoH7BimnvCcRmLvsG34vlyt7QC0BRO\n" + "cRmEPZCq8hIUIuD0x836FRNUSjjMVi2Dj+QjeNolpKgUjRF/h2yKmDRB2A7WAV5g\n" + "It7RRjMnkm3pvKj2d7/qb5OaccO4uoAq333PRAX0RLYT5yosFGq+RN8+WCnzuGsB\n" + "hCe33/7HCC6mO0/vsrQuRvECvAasznN9mF3t+ZXMvcsqTcOq4Iag1A==\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIID8zCCAlugAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCAXDTE2MDIxODEzNTQwMFoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0wMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0MYBHVUjwlQH7Mvn\n" + "4viHyEONr+7M0+fLntPITQHihE8gxU3LpqAUpl7felAA4k0sJTaXvnZA+E1DCcIq\n" + "zksAhK3Qr8zZeCKNM41U1klcCh2+3IoGjg+CcQisb8gtiiXybH3qXYFgi3ww2YFG\n" + "cIjJAciZj8qLfwMhMcBPMx4IDHR7gdWH9V0xUZZiBkk7x3PBIWCr2FKD0877yR9t\n" + "wjlQ4Fbw5NW9j7WaUgeY2LV7iTtBH0bZ7D/04KsYdct6lKhUkzSUBg/bAUWCFp1j\n" + "ouFhzyqMf3jFDrcejxPKlRk15e9SkQYD/7dTpudXwbL9ugZfoP1xDRgslEyfyU/Q\n" + "DEyG5mlXjVBRiGvL+dfxRNw2E5xLpESt2rlMiBhe1cv8+XL5D6z/WBwDfBNUzoQR\n" + "X15YHK2NgNNHQ8u8GLtUbp3ZXaeKgj8fdR3UoRTqWgpy2vjVM3vN1xXFVTo13MJ8\n" + "isLXH/QNUR4tnOytDp1HyK2ybHkfXB1a0RMBwM5XDVD2LhPFAgMBAAGjWDBWMA8G\n" + "A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUD\n" + "AwcGADAdBgNVHQ4EFgQU2iUEUyXy7fPzZtc8ktanTiDzjuUwDQYJKoZIhvcNAQEL\n" + "BQADggGBAJrJujtXifCeySYWbnJlraec63Zgqfv4SZIEdLt5GFLdpjk2WCxhFrN3\n" + "n6JZgI2aUWin2OL1VA1hfddAPUSHOCV8nP/Vu1f/BEaeQjEVS2AOF7T+eQSTNQtN\n" + "MkTTi0UKKXZjIIXiW4YXDs2b22JIOXkL9rFyrvN4vvbIp/jwLWx5UTHFtsktMkai\n" + "MteJBobd69ra7kdX43EkUKrgSDNpMQn10y3w4ziPDsLZ9sWaRxESbXWqDn4A7J9t\n" + "prfxut+s/3rsZgpt4s2FsswymfuW8DhzH1EjfV1Tb32blpgz/40sIRbU158Wh1UH\n" + "/DGQ6RVX0RcRt7ce7QCYTROD/yHYPVucqLfRpVNJ3oujGYaMgnSSuxEOsfwx5u+P\n" + "8USIxyQNR9cX/gQswzs3Ouj1rXBnjiSS1YXWZXvqHsUamJ8O7qpnqkL2Ti64O0HA\n" + "wdTtAcDO0BTHvanKZojLZm8nStvTvFpSVh7z+8Fu0A5zAcHsDj4vLABsdPDsXUTr\n" + "kb2G3Yy/UA==\n" + "-----END CERTIFICATE-----\n"; -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; -static unsigned char unsorted_server_cert_pem[] = - CERT0 - "-----BEGIN CERTIFICATE-----\n" - "MIIEFDCCAnygAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCAXDTE2MDIxODEzNTQwMVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" - "QS0xMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0QG/LnrMV5vsE3G7\n" - "mGVYr33PFQ/WojwKg1C8GGH9aaIn+VMuBS2d1/mwtM9axoje1uQzwKp/hPT+N3Z3\n" - "qmFWeX8somDwowNDWN3skST4ob/M4aSlfP6OhNeIfBNvPTz3GtsbOtN5TkOX7Nf2\n" - "+mfFm09xMHQ3z4yyGNmKG/oxGKY2WDe93hp0rlIZ6ihMPcsCHwWLfja3SAT4AcXs\n" - "TFrTxEnaTYuVxcRcoW7lEDtcCyGbPfszo/rEQfJxwxRF46Yoz6rrCSkXOzLhQa4v\n" - "PPsZJ6ltNqkCtSrnhcCl3SC9JqdI4e7lGsnDylq4evi8RtOYknVOqDwv0q/9DI2+\n" - "rhFUy4I0Ah9H2T7dC01KIOjGiHyThCgkt2Nee/AXFflpN2Ws7/SGALdx6Vy3OkVo\n" - "NkHYxlKKn/06Yp8XlNPR64EqxeJqPW9Pf742EJUCOeavu5wPWJtLQr03JyKWoeZf\n" - "IYT/HwZUJveqEBU1EKeZRSvrRwHnmzQJuxyUhj/2C92QF5edAgMBAAGjeTB3MA8G\n" - "A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUD\n" - "AwcEADAdBgNVHQ4EFgQUv9x1k1GrVS0yXKvMzD7k/zInm9gwHwYDVR0jBBgwFoAU\n" - "2iUEUyXy7fPzZtc8ktanTiDzjuUwDQYJKoZIhvcNAQELBQADggGBAC9X5og786Il\n" - "CUKj4FpZrqgfN+Cwf1EebW1tX1iKYASGo8t7JS0Btt3ycVpx04JSJy5WM9cQNFU0\n" - "5vimaG0qAsWhHXljhmM0mr4ruW1Jw6KAuqw0V/JJ0oYRZaYnvi6UsoJJjq8YcatW\n" - "5ixtKr928933kYD71sMZBN7Um7ictDq0M2oaW4k0/Yt4Uqb9fv20E4EHKEpETMUR\n" - "FviTIjONdVsAVj4lxuS3u1Nt7B5ayYCkgFabME28ud6EazelwZWZwBRGiuPr6634\n" - "f8lZtnscRVU5oQb6DjkyD/SM+1ue6/wpNapoH7BimnvCcRmLvsG34vlyt7QC0BRO\n" - "cRmEPZCq8hIUIuD0x836FRNUSjjMVi2Dj+QjeNolpKgUjRF/h2yKmDRB2A7WAV5g\n" - "It7RRjMnkm3pvKj2d7/qb5OaccO4uoAq333PRAX0RLYT5yosFGq+RN8+WCnzuGsB\n" - "hCe33/7HCC6mO0/vsrQuRvECvAasznN9mF3t+ZXMvcsqTcOq4Iag1A==\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIID8zCCAlugAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCAXDTE2MDIxODEzNTQwMFoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" - "QS0wMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0MYBHVUjwlQH7Mvn\n" - "4viHyEONr+7M0+fLntPITQHihE8gxU3LpqAUpl7felAA4k0sJTaXvnZA+E1DCcIq\n" - "zksAhK3Qr8zZeCKNM41U1klcCh2+3IoGjg+CcQisb8gtiiXybH3qXYFgi3ww2YFG\n" - "cIjJAciZj8qLfwMhMcBPMx4IDHR7gdWH9V0xUZZiBkk7x3PBIWCr2FKD0877yR9t\n" - "wjlQ4Fbw5NW9j7WaUgeY2LV7iTtBH0bZ7D/04KsYdct6lKhUkzSUBg/bAUWCFp1j\n" - "ouFhzyqMf3jFDrcejxPKlRk15e9SkQYD/7dTpudXwbL9ugZfoP1xDRgslEyfyU/Q\n" - "DEyG5mlXjVBRiGvL+dfxRNw2E5xLpESt2rlMiBhe1cv8+XL5D6z/WBwDfBNUzoQR\n" - "X15YHK2NgNNHQ8u8GLtUbp3ZXaeKgj8fdR3UoRTqWgpy2vjVM3vN1xXFVTo13MJ8\n" - "isLXH/QNUR4tnOytDp1HyK2ybHkfXB1a0RMBwM5XDVD2LhPFAgMBAAGjWDBWMA8G\n" - "A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUD\n" - "AwcGADAdBgNVHQ4EFgQU2iUEUyXy7fPzZtc8ktanTiDzjuUwDQYJKoZIhvcNAQEL\n" - "BQADggGBAJrJujtXifCeySYWbnJlraec63Zgqfv4SZIEdLt5GFLdpjk2WCxhFrN3\n" - "n6JZgI2aUWin2OL1VA1hfddAPUSHOCV8nP/Vu1f/BEaeQjEVS2AOF7T+eQSTNQtN\n" - "MkTTi0UKKXZjIIXiW4YXDs2b22JIOXkL9rFyrvN4vvbIp/jwLWx5UTHFtsktMkai\n" - "MteJBobd69ra7kdX43EkUKrgSDNpMQn10y3w4ziPDsLZ9sWaRxESbXWqDn4A7J9t\n" - "prfxut+s/3rsZgpt4s2FsswymfuW8DhzH1EjfV1Tb32blpgz/40sIRbU158Wh1UH\n" - "/DGQ6RVX0RcRt7ce7QCYTROD/yHYPVucqLfRpVNJ3oujGYaMgnSSuxEOsfwx5u+P\n" - "8USIxyQNR9cX/gQswzs3Ouj1rXBnjiSS1YXWZXvqHsUamJ8O7qpnqkL2Ti64O0HA\n" - "wdTtAcDO0BTHvanKZojLZm8nStvTvFpSVh7z+8Fu0A5zAcHsDj4vLABsdPDsXUTr\n" - "kb2G3Yy/UA==\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIEFDCCAnygAwIBAgIBAjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0x\n" - "MCAXDTE2MDIxODEzNTQwMVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" - "QS0yMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAu1/IharA+97QfzDj\n" - "UXEBl9TAFqHkN9B5erj1yhMlwPAakreStR8VvuCx46TA3gP7sbUYU811T+2D5/GU\n" - "u7YuMWsFeSmGWvbxa/tKTpXoEM0bNV+rIbxAcfgtxbARZDocv8gxfG/70vc2dSDh\n" - "KgZCoMQyO6qGLRdsoPAf+De7YD8sKS7Q3d3Xnfyv4AVnDkbAVFsZhu4lQFuWXyfG\n" - "Sl95TT94wLDLdf/Gf/F0nNsv6+D6yb15afhJKdqo6PH19gsyE0U3zj6c/7abha2W\n" - "fvVe6hVbaW1HLDZdHZnjlJHamNFdrOHI5Xi+SJO7/3MWvdTzdMVFBDfS5o7TvYyS\n" - "pu6iTmVeJvJ1OpXV7Lw1M2dSTW9RJLzUF3fXYOsuh32qMel9IzhnVh8Veyl0I0WL\n" - "hThmkF73mGWcVq4lMPXwEnwYJtRLeH5HWvG3rgmb7m827XMNnqKE0NOkPH63OUqJ\n" - "0h4b6PBb6wiOgnsC3yZIf0KgB0gToySvmD6MyJsmbN9rQit1AgMBAAGjeTB3MA8G\n" - "A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUD\n" - "AwcEADAdBgNVHQ4EFgQUUZGvUEIirQAeYHn21QGyCEyO/P8wHwYDVR0jBBgwFoAU\n" - "v9x1k1GrVS0yXKvMzD7k/zInm9gwDQYJKoZIhvcNAQELBQADggGBAIwUNzAo7Efm\n" - "X8dVGz6OEsfZ/RPIeYxZ5cmqWwcZ4oLBv55xGJNG+nIcgLMA2L6ybtFiK2nKtqy4\n" - "hMv/P6qvjX5vVQGVgLclvMkDkmXWVdqkTYDX7cSe/Bv6qIS2KBaVo87r2DIWN8Zu\n" - "J3w0U3RcD6ilXVmqvARLeKWBPrCep0DJvg/BEAFSjCgHImrpZdzm6NuUr1eYCfgN\n" - "HPwUj5Ivyy9ioPRXGzzHQH6T1p/xIRbuhqTGRUin3MqGQlFseBJ2qXPf6uQmCaWZ\n" - "tFp4oWLJThqVmlvHViPDy235roYSKkJXH4qxjbhuv0pgUZOzmSsG7YA/oYNGDm6I\n" - "bEvids1r45PjYDHctB4QLhXNY3SJVgMog1KuVCK6JQL8F8XP5Sup1qW4ed/WvXwe\n" - "PBTOWbE/ENnxF2/nQLwnr80cgVx8rAE5sxubNNQVHu/6NonPzGUhTHXmGleuXPbb\n" - "Mjv4x9s3QftWUVJb7b8GUt5bMAthqo7Y47Jed1kKIt2PAm0SNBMYrw==\n" - "-----END CERTIFICATE-----\n"; +static unsigned char unsorted_server_cert_pem[] = CERT0 + "-----BEGIN CERTIFICATE-----\n" + "MIIEFDCCAnygAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCAXDTE2MDIxODEzNTQwMVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0xMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0QG/LnrMV5vsE3G7\n" + "mGVYr33PFQ/WojwKg1C8GGH9aaIn+VMuBS2d1/mwtM9axoje1uQzwKp/hPT+N3Z3\n" + "qmFWeX8somDwowNDWN3skST4ob/M4aSlfP6OhNeIfBNvPTz3GtsbOtN5TkOX7Nf2\n" + "+mfFm09xMHQ3z4yyGNmKG/oxGKY2WDe93hp0rlIZ6ihMPcsCHwWLfja3SAT4AcXs\n" + "TFrTxEnaTYuVxcRcoW7lEDtcCyGbPfszo/rEQfJxwxRF46Yoz6rrCSkXOzLhQa4v\n" + "PPsZJ6ltNqkCtSrnhcCl3SC9JqdI4e7lGsnDylq4evi8RtOYknVOqDwv0q/9DI2+\n" + "rhFUy4I0Ah9H2T7dC01KIOjGiHyThCgkt2Nee/AXFflpN2Ws7/SGALdx6Vy3OkVo\n" + "NkHYxlKKn/06Yp8XlNPR64EqxeJqPW9Pf742EJUCOeavu5wPWJtLQr03JyKWoeZf\n" + "IYT/HwZUJveqEBU1EKeZRSvrRwHnmzQJuxyUhj/2C92QF5edAgMBAAGjeTB3MA8G\n" + "A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUD\n" + "AwcEADAdBgNVHQ4EFgQUv9x1k1GrVS0yXKvMzD7k/zInm9gwHwYDVR0jBBgwFoAU\n" + "2iUEUyXy7fPzZtc8ktanTiDzjuUwDQYJKoZIhvcNAQELBQADggGBAC9X5og786Il\n" + "CUKj4FpZrqgfN+Cwf1EebW1tX1iKYASGo8t7JS0Btt3ycVpx04JSJy5WM9cQNFU0\n" + "5vimaG0qAsWhHXljhmM0mr4ruW1Jw6KAuqw0V/JJ0oYRZaYnvi6UsoJJjq8YcatW\n" + "5ixtKr928933kYD71sMZBN7Um7ictDq0M2oaW4k0/Yt4Uqb9fv20E4EHKEpETMUR\n" + "FviTIjONdVsAVj4lxuS3u1Nt7B5ayYCkgFabME28ud6EazelwZWZwBRGiuPr6634\n" + "f8lZtnscRVU5oQb6DjkyD/SM+1ue6/wpNapoH7BimnvCcRmLvsG34vlyt7QC0BRO\n" + "cRmEPZCq8hIUIuD0x836FRNUSjjMVi2Dj+QjeNolpKgUjRF/h2yKmDRB2A7WAV5g\n" + "It7RRjMnkm3pvKj2d7/qb5OaccO4uoAq333PRAX0RLYT5yosFGq+RN8+WCnzuGsB\n" + "hCe33/7HCC6mO0/vsrQuRvECvAasznN9mF3t+ZXMvcsqTcOq4Iag1A==\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIID8zCCAlugAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCAXDTE2MDIxODEzNTQwMFoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0wMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0MYBHVUjwlQH7Mvn\n" + "4viHyEONr+7M0+fLntPITQHihE8gxU3LpqAUpl7felAA4k0sJTaXvnZA+E1DCcIq\n" + "zksAhK3Qr8zZeCKNM41U1klcCh2+3IoGjg+CcQisb8gtiiXybH3qXYFgi3ww2YFG\n" + "cIjJAciZj8qLfwMhMcBPMx4IDHR7gdWH9V0xUZZiBkk7x3PBIWCr2FKD0877yR9t\n" + "wjlQ4Fbw5NW9j7WaUgeY2LV7iTtBH0bZ7D/04KsYdct6lKhUkzSUBg/bAUWCFp1j\n" + "ouFhzyqMf3jFDrcejxPKlRk15e9SkQYD/7dTpudXwbL9ugZfoP1xDRgslEyfyU/Q\n" + "DEyG5mlXjVBRiGvL+dfxRNw2E5xLpESt2rlMiBhe1cv8+XL5D6z/WBwDfBNUzoQR\n" + "X15YHK2NgNNHQ8u8GLtUbp3ZXaeKgj8fdR3UoRTqWgpy2vjVM3vN1xXFVTo13MJ8\n" + "isLXH/QNUR4tnOytDp1HyK2ybHkfXB1a0RMBwM5XDVD2LhPFAgMBAAGjWDBWMA8G\n" + "A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUD\n" + "AwcGADAdBgNVHQ4EFgQU2iUEUyXy7fPzZtc8ktanTiDzjuUwDQYJKoZIhvcNAQEL\n" + "BQADggGBAJrJujtXifCeySYWbnJlraec63Zgqfv4SZIEdLt5GFLdpjk2WCxhFrN3\n" + "n6JZgI2aUWin2OL1VA1hfddAPUSHOCV8nP/Vu1f/BEaeQjEVS2AOF7T+eQSTNQtN\n" + "MkTTi0UKKXZjIIXiW4YXDs2b22JIOXkL9rFyrvN4vvbIp/jwLWx5UTHFtsktMkai\n" + "MteJBobd69ra7kdX43EkUKrgSDNpMQn10y3w4ziPDsLZ9sWaRxESbXWqDn4A7J9t\n" + "prfxut+s/3rsZgpt4s2FsswymfuW8DhzH1EjfV1Tb32blpgz/40sIRbU158Wh1UH\n" + "/DGQ6RVX0RcRt7ce7QCYTROD/yHYPVucqLfRpVNJ3oujGYaMgnSSuxEOsfwx5u+P\n" + "8USIxyQNR9cX/gQswzs3Ouj1rXBnjiSS1YXWZXvqHsUamJ8O7qpnqkL2Ti64O0HA\n" + "wdTtAcDO0BTHvanKZojLZm8nStvTvFpSVh7z+8Fu0A5zAcHsDj4vLABsdPDsXUTr\n" + "kb2G3Yy/UA==\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIEFDCCAnygAwIBAgIBAjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0x\n" + "MCAXDTE2MDIxODEzNTQwMVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0yMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAu1/IharA+97QfzDj\n" + "UXEBl9TAFqHkN9B5erj1yhMlwPAakreStR8VvuCx46TA3gP7sbUYU811T+2D5/GU\n" + "u7YuMWsFeSmGWvbxa/tKTpXoEM0bNV+rIbxAcfgtxbARZDocv8gxfG/70vc2dSDh\n" + "KgZCoMQyO6qGLRdsoPAf+De7YD8sKS7Q3d3Xnfyv4AVnDkbAVFsZhu4lQFuWXyfG\n" + "Sl95TT94wLDLdf/Gf/F0nNsv6+D6yb15afhJKdqo6PH19gsyE0U3zj6c/7abha2W\n" + "fvVe6hVbaW1HLDZdHZnjlJHamNFdrOHI5Xi+SJO7/3MWvdTzdMVFBDfS5o7TvYyS\n" + "pu6iTmVeJvJ1OpXV7Lw1M2dSTW9RJLzUF3fXYOsuh32qMel9IzhnVh8Veyl0I0WL\n" + "hThmkF73mGWcVq4lMPXwEnwYJtRLeH5HWvG3rgmb7m827XMNnqKE0NOkPH63OUqJ\n" + "0h4b6PBb6wiOgnsC3yZIf0KgB0gToySvmD6MyJsmbN9rQit1AgMBAAGjeTB3MA8G\n" + "A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUD\n" + "AwcEADAdBgNVHQ4EFgQUUZGvUEIirQAeYHn21QGyCEyO/P8wHwYDVR0jBBgwFoAU\n" + "v9x1k1GrVS0yXKvMzD7k/zInm9gwDQYJKoZIhvcNAQELBQADggGBAIwUNzAo7Efm\n" + "X8dVGz6OEsfZ/RPIeYxZ5cmqWwcZ4oLBv55xGJNG+nIcgLMA2L6ybtFiK2nKtqy4\n" + "hMv/P6qvjX5vVQGVgLclvMkDkmXWVdqkTYDX7cSe/Bv6qIS2KBaVo87r2DIWN8Zu\n" + "J3w0U3RcD6ilXVmqvARLeKWBPrCep0DJvg/BEAFSjCgHImrpZdzm6NuUr1eYCfgN\n" + "HPwUj5Ivyy9ioPRXGzzHQH6T1p/xIRbuhqTGRUin3MqGQlFseBJ2qXPf6uQmCaWZ\n" + "tFp4oWLJThqVmlvHViPDy235roYSKkJXH4qxjbhuv0pgUZOzmSsG7YA/oYNGDm6I\n" + "bEvids1r45PjYDHctB4QLhXNY3SJVgMog1KuVCK6JQL8F8XP5Sup1qW4ed/WvXwe\n" + "PBTOWbE/ENnxF2/nQLwnr80cgVx8rAE5sxubNNQVHu/6NonPzGUhTHXmGleuXPbb\n" + "Mjv4x9s3QftWUVJb7b8GUt5bMAthqo7Y47Jed1kKIt2PAm0SNBMYrw==\n" + "-----END CERTIFICATE-----\n"; -const gnutls_datum_t unsorted_server_cert = { unsorted_server_cert_pem, - sizeof(unsorted_server_cert_pem) +const gnutls_datum_t unsorted_server_cert = { + unsorted_server_cert_pem, sizeof(unsorted_server_cert_pem) }; const gnutls_datum_t single_server_cert = { server_cert_pem, - sizeof(CERT0) - 1 -}; + sizeof(CERT0) - 1 }; -static unsigned char isolated_server_cert_pem[] = - CERT0 - "-----BEGIN CERTIFICATE-----\n" - "MIID8zCCAlugAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCAXDTE2MDIxODEzNTQwMFoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" - "QS0wMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0MYBHVUjwlQH7Mvn\n" - "4viHyEONr+7M0+fLntPITQHihE8gxU3LpqAUpl7felAA4k0sJTaXvnZA+E1DCcIq\n" - "zksAhK3Qr8zZeCKNM41U1klcCh2+3IoGjg+CcQisb8gtiiXybH3qXYFgi3ww2YFG\n" - "cIjJAciZj8qLfwMhMcBPMx4IDHR7gdWH9V0xUZZiBkk7x3PBIWCr2FKD0877yR9t\n" - "wjlQ4Fbw5NW9j7WaUgeY2LV7iTtBH0bZ7D/04KsYdct6lKhUkzSUBg/bAUWCFp1j\n" - "ouFhzyqMf3jFDrcejxPKlRk15e9SkQYD/7dTpudXwbL9ugZfoP1xDRgslEyfyU/Q\n" - "DEyG5mlXjVBRiGvL+dfxRNw2E5xLpESt2rlMiBhe1cv8+XL5D6z/WBwDfBNUzoQR\n" - "X15YHK2NgNNHQ8u8GLtUbp3ZXaeKgj8fdR3UoRTqWgpy2vjVM3vN1xXFVTo13MJ8\n" - "isLXH/QNUR4tnOytDp1HyK2ybHkfXB1a0RMBwM5XDVD2LhPFAgMBAAGjWDBWMA8G\n" - "A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUD\n" - "AwcGADAdBgNVHQ4EFgQU2iUEUyXy7fPzZtc8ktanTiDzjuUwDQYJKoZIhvcNAQEL\n" - "BQADggGBAJrJujtXifCeySYWbnJlraec63Zgqfv4SZIEdLt5GFLdpjk2WCxhFrN3\n" - "n6JZgI2aUWin2OL1VA1hfddAPUSHOCV8nP/Vu1f/BEaeQjEVS2AOF7T+eQSTNQtN\n" - "MkTTi0UKKXZjIIXiW4YXDs2b22JIOXkL9rFyrvN4vvbIp/jwLWx5UTHFtsktMkai\n" - "MteJBobd69ra7kdX43EkUKrgSDNpMQn10y3w4ziPDsLZ9sWaRxESbXWqDn4A7J9t\n" - "prfxut+s/3rsZgpt4s2FsswymfuW8DhzH1EjfV1Tb32blpgz/40sIRbU158Wh1UH\n" - "/DGQ6RVX0RcRt7ce7QCYTROD/yHYPVucqLfRpVNJ3oujGYaMgnSSuxEOsfwx5u+P\n" - "8USIxyQNR9cX/gQswzs3Ouj1rXBnjiSS1YXWZXvqHsUamJ8O7qpnqkL2Ti64O0HA\n" - "wdTtAcDO0BTHvanKZojLZm8nStvTvFpSVh7z+8Fu0A5zAcHsDj4vLABsdPDsXUTr\n" - "kb2G3Yy/UA==\n" "-----END CERTIFICATE-----\n"; +static unsigned char isolated_server_cert_pem[] = CERT0 + "-----BEGIN CERTIFICATE-----\n" + "MIID8zCCAlugAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCAXDTE2MDIxODEzNTQwMFoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0wMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0MYBHVUjwlQH7Mvn\n" + "4viHyEONr+7M0+fLntPITQHihE8gxU3LpqAUpl7felAA4k0sJTaXvnZA+E1DCcIq\n" + "zksAhK3Qr8zZeCKNM41U1klcCh2+3IoGjg+CcQisb8gtiiXybH3qXYFgi3ww2YFG\n" + "cIjJAciZj8qLfwMhMcBPMx4IDHR7gdWH9V0xUZZiBkk7x3PBIWCr2FKD0877yR9t\n" + "wjlQ4Fbw5NW9j7WaUgeY2LV7iTtBH0bZ7D/04KsYdct6lKhUkzSUBg/bAUWCFp1j\n" + "ouFhzyqMf3jFDrcejxPKlRk15e9SkQYD/7dTpudXwbL9ugZfoP1xDRgslEyfyU/Q\n" + "DEyG5mlXjVBRiGvL+dfxRNw2E5xLpESt2rlMiBhe1cv8+XL5D6z/WBwDfBNUzoQR\n" + "X15YHK2NgNNHQ8u8GLtUbp3ZXaeKgj8fdR3UoRTqWgpy2vjVM3vN1xXFVTo13MJ8\n" + "isLXH/QNUR4tnOytDp1HyK2ybHkfXB1a0RMBwM5XDVD2LhPFAgMBAAGjWDBWMA8G\n" + "A1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYDVR0PAQH/BAUD\n" + "AwcGADAdBgNVHQ4EFgQU2iUEUyXy7fPzZtc8ktanTiDzjuUwDQYJKoZIhvcNAQEL\n" + "BQADggGBAJrJujtXifCeySYWbnJlraec63Zgqfv4SZIEdLt5GFLdpjk2WCxhFrN3\n" + "n6JZgI2aUWin2OL1VA1hfddAPUSHOCV8nP/Vu1f/BEaeQjEVS2AOF7T+eQSTNQtN\n" + "MkTTi0UKKXZjIIXiW4YXDs2b22JIOXkL9rFyrvN4vvbIp/jwLWx5UTHFtsktMkai\n" + "MteJBobd69ra7kdX43EkUKrgSDNpMQn10y3w4ziPDsLZ9sWaRxESbXWqDn4A7J9t\n" + "prfxut+s/3rsZgpt4s2FsswymfuW8DhzH1EjfV1Tb32blpgz/40sIRbU158Wh1UH\n" + "/DGQ6RVX0RcRt7ce7QCYTROD/yHYPVucqLfRpVNJ3oujGYaMgnSSuxEOsfwx5u+P\n" + "8USIxyQNR9cX/gQswzs3Ouj1rXBnjiSS1YXWZXvqHsUamJ8O7qpnqkL2Ti64O0HA\n" + "wdTtAcDO0BTHvanKZojLZm8nStvTvFpSVh7z+8Fu0A5zAcHsDj4vLABsdPDsXUTr\n" + "kb2G3Yy/UA==\n" + "-----END CERTIFICATE-----\n"; -const gnutls_datum_t isolated_server_cert = { isolated_server_cert_pem, - sizeof(isolated_server_cert_pem) +const gnutls_datum_t isolated_server_cert = { + isolated_server_cert_pem, sizeof(isolated_server_cert_pem) }; void doit(void) @@ -316,12 +312,11 @@ void doit(void) gnutls_pcert_deinit(&pcert_list[i]); pcert_list_size = 16; - flags = - GNUTLS_X509_CRT_LIST_SORT | GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED; - ret = - gnutls_pcert_list_import_x509_raw(pcert_list, &pcert_list_size, - &server_cert, GNUTLS_X509_FMT_PEM, - flags); + flags = GNUTLS_X509_CRT_LIST_SORT | + GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED; + ret = gnutls_pcert_list_import_x509_raw(pcert_list, &pcert_list_size, + &server_cert, + GNUTLS_X509_FMT_PEM, flags); if (ret != 0 || pcert_list_size != 4) { fail("the combined import failed\n"); } @@ -331,14 +326,14 @@ void doit(void) /* try the unsorted list */ pcert_list_size = 16; - flags = - GNUTLS_X509_CRT_LIST_SORT | GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED; - ret = - gnutls_pcert_list_import_x509_raw(pcert_list, &pcert_list_size, - &unsorted_server_cert, - GNUTLS_X509_FMT_PEM, flags); + flags = GNUTLS_X509_CRT_LIST_SORT | + GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED; + ret = gnutls_pcert_list_import_x509_raw(pcert_list, &pcert_list_size, + &unsorted_server_cert, + GNUTLS_X509_FMT_PEM, flags); if (ret < 0 || pcert_list_size != 4) { - fail("the combined import failed for the unsorted list (%d): %s\n", pcert_list_size, gnutls_strerror(ret)); + fail("the combined import failed for the unsorted list (%d): %s\n", + pcert_list_size, gnutls_strerror(ret)); } for (i = 0; i < pcert_list_size; i++) @@ -346,14 +341,14 @@ void doit(void) /* try the single cert list */ pcert_list_size = 16; - flags = - GNUTLS_X509_CRT_LIST_SORT | GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED; - ret = - gnutls_pcert_list_import_x509_raw(pcert_list, &pcert_list_size, - &single_server_cert, - GNUTLS_X509_FMT_PEM, flags); + flags = GNUTLS_X509_CRT_LIST_SORT | + GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED; + ret = gnutls_pcert_list_import_x509_raw(pcert_list, &pcert_list_size, + &single_server_cert, + GNUTLS_X509_FMT_PEM, flags); if (ret < 0 || pcert_list_size != 1) { - fail("the combined import failed for the single cert (%d): %s\n", pcert_list_size, gnutls_strerror(ret)); + fail("the combined import failed for the single cert (%d): %s\n", + pcert_list_size, gnutls_strerror(ret)); } for (i = 0; i < pcert_list_size; i++) @@ -361,14 +356,14 @@ void doit(void) /* try the single final cert list */ pcert_list_size = 16; - flags = - GNUTLS_X509_CRT_LIST_SORT | GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED; - ret = - gnutls_pcert_list_import_x509_raw(pcert_list, &pcert_list_size, - &isolated_server_cert, - GNUTLS_X509_FMT_PEM, flags); + flags = GNUTLS_X509_CRT_LIST_SORT | + GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED; + ret = gnutls_pcert_list_import_x509_raw(pcert_list, &pcert_list_size, + &isolated_server_cert, + GNUTLS_X509_FMT_PEM, flags); if (ret < 0 || pcert_list_size != 1) { - fail("the combined import failed for the isolated cert (%d): %s\n", pcert_list_size, gnutls_strerror(ret)); + fail("the combined import failed for the isolated cert (%d): %s\n", + pcert_list_size, gnutls_strerror(ret)); } for (i = 0; i < pcert_list_size; i++) diff --git a/tests/pkcs1-digest-info.c b/tests/pkcs1-digest-info.c index f137361c66..ea8d62758b 100644 --- a/tests/pkcs1-digest-info.c +++ b/tests/pkcs1-digest-info.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -36,7 +36,7 @@ #include "utils.h" static void encode(const char *test_name, gnutls_digest_algorithm_t hash, - const gnutls_datum_t * raw, const gnutls_datum_t * expected) + const gnutls_datum_t *raw, const gnutls_datum_t *expected) { int ret; gnutls_datum_t out; @@ -53,13 +53,15 @@ static void encode(const char *test_name, gnutls_digest_algorithm_t hash, if (expected->size != out.size) { hexprint(out.data, out.size); - fail("%s: gnutls_encode_ber_digest_info: output has incorrect size (%d, expected %d)\n", test_name, (int)out.size, expected->size); + fail("%s: gnutls_encode_ber_digest_info: output has incorrect size (%d, expected %d)\n", + test_name, (int)out.size, expected->size); exit(1); } if (memcmp(expected->data, out.data, out.size) != 0) { hexprint(out.data, out.size); - fail("%s: gnutls_encode_ber_digest_info: output does not match the expected\n", test_name); + fail("%s: gnutls_encode_ber_digest_info: output does not match the expected\n", + test_name); exit(1); } @@ -72,17 +74,20 @@ static void encode(const char *test_name, gnutls_digest_algorithm_t hash, } if (thash != hash) { - fail("%s: gnutls_decode_ber_digest_info: wrong hash, got: %d, expected %d\n", test_name, (int)thash, (int)hash); + fail("%s: gnutls_decode_ber_digest_info: wrong hash, got: %d, expected %d\n", + test_name, (int)thash, (int)hash); exit(1); } if (raw->size != digest_size) { - fail("%s: gnutls_decode_ber_digest_info: output has incorrect size (%d, expected %d)\n", test_name, digest_size, raw->size); + fail("%s: gnutls_decode_ber_digest_info: output has incorrect size (%d, expected %d)\n", + test_name, digest_size, raw->size); exit(1); } if (memcmp(raw->data, digest, digest_size) != 0) { - fail("%s: gnutls_decode_ber_digest_info: output does not match the expected\n", test_name); + fail("%s: gnutls_decode_ber_digest_info: output does not match the expected\n", + test_name); exit(1); } @@ -92,8 +97,7 @@ static void encode(const char *test_name, gnutls_digest_algorithm_t hash, } static void decode(const char *test_name, gnutls_digest_algorithm_t hash, - const gnutls_datum_t * raw, const gnutls_datum_t * di, - int res) + const gnutls_datum_t *raw, const gnutls_datum_t *di, int res) { int ret; uint8_t digest[128]; @@ -113,17 +117,20 @@ static void decode(const char *test_name, gnutls_digest_algorithm_t hash, } if (thash != hash) { - fail("%s: gnutls_decode_ber_digest_info: wrong hash, got: %d, expected %d\n", test_name, (int)thash, (int)hash); + fail("%s: gnutls_decode_ber_digest_info: wrong hash, got: %d, expected %d\n", + test_name, (int)thash, (int)hash); exit(1); } if (raw->size != digest_size) { - fail("%s: gnutls_decode_ber_digest_info: output has incorrect size (%d, expected %d)\n", test_name, digest_size, raw->size); + fail("%s: gnutls_decode_ber_digest_info: output has incorrect size (%d, expected %d)\n", + test_name, digest_size, raw->size); exit(1); } if (memcmp(raw->data, digest, digest_size) != 0) { - fail("%s: gnutls_decode_ber_digest_info: output does not match the expected\n", test_name); + fail("%s: gnutls_decode_ber_digest_info: output does not match the expected\n", + test_name); exit(1); } @@ -138,26 +145,18 @@ struct encode_tests_st { }; struct encode_tests_st encode_tests[] = { - { - .name = "rnd1", - .hash = GNUTLS_DIG_SHA1, - .raw = {(void *) - "\xf6\x9a\x46\x8a\x84\x69\x7a\x28\x83\xda\x52\xcd\x60\x2f\x39\x78\xff\xa1\x32\x12", - 20}, - .di = {(void *) - "\x30\x21\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04\x14\xf6\x9a\x46\x8a\x84\x69\x7a\x28\x83\xda\x52\xcd\x60\x2f\x39\x78\xff\xa1\x32\x12", - 35} - }, - { - .name = "rnd2", - .hash = GNUTLS_DIG_SHA256, - .raw = {(void *) - "\x0b\x68\xdf\x4b\x27\xac\xc5\xc5\x52\x43\x74\x32\x39\x5c\x1e\xf5\x6a\xe2\x19\x5a\x58\x75\x81\xa5\x6a\xf5\xbf\x98\x85\xe3\xf9\x25", - 32}, - .di = {(void *) - "\x30\x31\x30\x0d\x06\x09\x60\x86\x48\x01\x65\x03\x04\x02\x01\x05\x00\x04\x20\x0b\x68\xdf\x4b\x27\xac\xc5\xc5\x52\x43\x74\x32\x39\x5c\x1e\xf5\x6a\xe2\x19\x5a\x58\x75\x81\xa5\x6a\xf5\xbf\x98\x85\xe3\xf9\x25", - 51} - } + { .name = "rnd1", + .hash = GNUTLS_DIG_SHA1, + .raw = { (void *)"\xf6\x9a\x46\x8a\x84\x69\x7a\x28\x83\xda\x52\xcd\x60\x2f\x39\x78\xff\xa1\x32\x12", + 20 }, + .di = { (void *)"\x30\x21\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04\x14\xf6\x9a\x46\x8a\x84\x69\x7a\x28\x83\xda\x52\xcd\x60\x2f\x39\x78\xff\xa1\x32\x12", + 35 } }, + { .name = "rnd2", + .hash = GNUTLS_DIG_SHA256, + .raw = { (void *)"\x0b\x68\xdf\x4b\x27\xac\xc5\xc5\x52\x43\x74\x32\x39\x5c\x1e\xf5\x6a\xe2\x19\x5a\x58\x75\x81\xa5\x6a\xf5\xbf\x98\x85\xe3\xf9\x25", + 32 }, + .di = { (void *)"\x30\x31\x30\x0d\x06\x09\x60\x86\x48\x01\x65\x03\x04\x02\x01\x05\x00\x04\x20\x0b\x68\xdf\x4b\x27\xac\xc5\xc5\x52\x43\x74\x32\x39\x5c\x1e\xf5\x6a\xe2\x19\x5a\x58\x75\x81\xa5\x6a\xf5\xbf\x98\x85\xe3\xf9\x25", + 51 } } }; struct decode_tests_st { @@ -170,57 +169,44 @@ struct decode_tests_st { struct decode_tests_st decode_tests[] = { { - .name = "dec-rnd1", - .hash = GNUTLS_DIG_SHA1, - .di = {(void *) - "\x30\x21\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04\x14\xf6\x9a\x46\x8a\x84\x69\x7a\x28\x83\xda\x52\xcd\x60\x2f\x39\x78\xff\xa1\x32\x12", - 35}, - .raw = {(void *) - "\xf6\x9a\x46\x8a\x84\x69\x7a\x28\x83\xda\x52\xcd\x60\x2f\x39\x78\xff\xa1\x32\x12", - 20}, - .res = 0, - }, - { - .name = "dec-rnd2", - .hash = GNUTLS_DIG_SHA256, - .raw = {(void *) - "\x0b\x68\xdf\x4b\x27\xac\xc5\xc5\x52\x43\x74\x32\x39\x5c\x1e\xf5\x6a\xe2\x19\x5a\x58\x75\x81\xa5\x6a\xf5\xbf\x98\x85\xe3\xf9\x25", - 32}, - .di = {(void *) - "\x30\x31\x30\x0d\x06\x09\x60\x86\x48\x01\x65\x03\x04\x02\x01\x05\x00\x04\x20\x0b\x68\xdf\x4b\x27\xac\xc5\xc5\x52\x43\x74\x32\x39\x5c\x1e\xf5\x6a\xe2\x19\x5a\x58\x75\x81\xa5\x6a\xf5\xbf\x98\x85\xe3\xf9\x25", - 51}, - .res = 0, - }, - { - .name = "dec-wrong-tag", - .hash = GNUTLS_DIG_SHA256, - .raw = {(void *) - "\x0b\x68\xdf\x4b\x27\xac\xc5\xc5\x52\x43\x74\x32\x39\x5c\x1e\xf5\x6a\xe2\x19\x5a\x58\x75\x81\xa5\x6a\xf5\xbf\x98\x85\xe3\xf9\x25", - 32}, - .di = {(void *) - "\x31\x31\x30\x0d\x06\x09\x60\x86\x48\x01\x65\x03\x04\x02\x01\x05\x00\x04\x20\x0b\x68\xdf\x4b\x27\xac\xc5\xc5\x52\x43\x74\x32\x39\x5c\x1e\xf5\x6a\xe2\x19\x5a\x58\x75\x81\xa5\x6a\xf5\xbf\x98\x85\xe3\xf9\x25", - 51}, - .res = GNUTLS_E_ASN1_TAG_ERROR}, - { - .name = "dec-wrong-der", - .hash = GNUTLS_DIG_SHA256, - .raw = {(void *) - "\x0b\x68\xdf\x4b\x27\xac\xc5\xc5\x52\x43\x74\x32\x39\x5c\x1e\xf5\x6a\xe2\x19\x5a\x58\x75\x81\xa5\x6a\xf5\xbf\x98\x85\xe3\xf9\x25", - 32}, - .di = {(void *) - "\x30\x31\x30\x0c\x06\x09\x60\x86\x48\x01\x65\x03\x04\x02\x01\x05\x00\x04\x20\x0b\x68\xdf\x4b\x27\xac\xc5\xc5\x52\x43\x74\x32\x39\x5c\x1e\xf5\x6a\xe2\x19\x5a\x58\x75\x81\xa5\x6a\xf5\xbf\x98\x86\xe3\xf9\x25", - 51}, - .res = GNUTLS_E_ASN1_DER_ERROR}, + .name = "dec-rnd1", + .hash = GNUTLS_DIG_SHA1, + .di = { (void *)"\x30\x21\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04\x14\xf6\x9a\x46\x8a\x84\x69\x7a\x28\x83\xda\x52\xcd\x60\x2f\x39\x78\xff\xa1\x32\x12", + 35 }, + .raw = { (void *)"\xf6\x9a\x46\x8a\x84\x69\x7a\x28\x83\xda\x52\xcd\x60\x2f\x39\x78\xff\xa1\x32\x12", + 20 }, + .res = 0, + }, { - .name = "dec-wrong-hash", - .hash = GNUTLS_DIG_SHA256, - .raw = {(void *) - "\x0b\x68\xdf\x4b\x27\xac\xc5\xc5\x52\x43\x74\x32\x39\x5c\x1e\xf5\x6a\xe2\x19\x5a\x58\x75\x81\xa5\x6a\xf5\xbf\x98\x85\xe3\xf9\x25", - 32}, - .di = {(void *) - "\x30\x31\x30\x0d\x06\x09\x61\x86\x48\x01\x65\x03\x04\x02\x01\x05\x00\x04\x20\x0b\x68\xdf\x4b\x27\xac\xc5\xc5\x52\x43\x74\x32\x39\x5c\x1e\xf5\x6a\xe2\x19\x5a\x58\x75\x81\xa5\x6a\xf5\xbf\x98\x86\xe3\xf9\x25", - 51}, - .res = GNUTLS_E_UNKNOWN_HASH_ALGORITHM}, + .name = "dec-rnd2", + .hash = GNUTLS_DIG_SHA256, + .raw = { (void *)"\x0b\x68\xdf\x4b\x27\xac\xc5\xc5\x52\x43\x74\x32\x39\x5c\x1e\xf5\x6a\xe2\x19\x5a\x58\x75\x81\xa5\x6a\xf5\xbf\x98\x85\xe3\xf9\x25", + 32 }, + .di = { (void *)"\x30\x31\x30\x0d\x06\x09\x60\x86\x48\x01\x65\x03\x04\x02\x01\x05\x00\x04\x20\x0b\x68\xdf\x4b\x27\xac\xc5\xc5\x52\x43\x74\x32\x39\x5c\x1e\xf5\x6a\xe2\x19\x5a\x58\x75\x81\xa5\x6a\xf5\xbf\x98\x85\xe3\xf9\x25", + 51 }, + .res = 0, + }, + { .name = "dec-wrong-tag", + .hash = GNUTLS_DIG_SHA256, + .raw = { (void *)"\x0b\x68\xdf\x4b\x27\xac\xc5\xc5\x52\x43\x74\x32\x39\x5c\x1e\xf5\x6a\xe2\x19\x5a\x58\x75\x81\xa5\x6a\xf5\xbf\x98\x85\xe3\xf9\x25", + 32 }, + .di = { (void *)"\x31\x31\x30\x0d\x06\x09\x60\x86\x48\x01\x65\x03\x04\x02\x01\x05\x00\x04\x20\x0b\x68\xdf\x4b\x27\xac\xc5\xc5\x52\x43\x74\x32\x39\x5c\x1e\xf5\x6a\xe2\x19\x5a\x58\x75\x81\xa5\x6a\xf5\xbf\x98\x85\xe3\xf9\x25", + 51 }, + .res = GNUTLS_E_ASN1_TAG_ERROR }, + { .name = "dec-wrong-der", + .hash = GNUTLS_DIG_SHA256, + .raw = { (void *)"\x0b\x68\xdf\x4b\x27\xac\xc5\xc5\x52\x43\x74\x32\x39\x5c\x1e\xf5\x6a\xe2\x19\x5a\x58\x75\x81\xa5\x6a\xf5\xbf\x98\x85\xe3\xf9\x25", + 32 }, + .di = { (void *)"\x30\x31\x30\x0c\x06\x09\x60\x86\x48\x01\x65\x03\x04\x02\x01\x05\x00\x04\x20\x0b\x68\xdf\x4b\x27\xac\xc5\xc5\x52\x43\x74\x32\x39\x5c\x1e\xf5\x6a\xe2\x19\x5a\x58\x75\x81\xa5\x6a\xf5\xbf\x98\x86\xe3\xf9\x25", + 51 }, + .res = GNUTLS_E_ASN1_DER_ERROR }, + { .name = "dec-wrong-hash", + .hash = GNUTLS_DIG_SHA256, + .raw = { (void *)"\x0b\x68\xdf\x4b\x27\xac\xc5\xc5\x52\x43\x74\x32\x39\x5c\x1e\xf5\x6a\xe2\x19\x5a\x58\x75\x81\xa5\x6a\xf5\xbf\x98\x85\xe3\xf9\x25", + 32 }, + .di = { (void *)"\x30\x31\x30\x0d\x06\x09\x61\x86\x48\x01\x65\x03\x04\x02\x01\x05\x00\x04\x20\x0b\x68\xdf\x4b\x27\xac\xc5\xc5\x52\x43\x74\x32\x39\x5c\x1e\xf5\x6a\xe2\x19\x5a\x58\x75\x81\xa5\x6a\xf5\xbf\x98\x86\xe3\xf9\x25", + 51 }, + .res = GNUTLS_E_UNKNOWN_HASH_ALGORITHM }, }; void doit(void) diff --git a/tests/pkcs11/distrust-after.c b/tests/pkcs11/distrust-after.c index 05165baa5a..c95e8720d6 100644 --- a/tests/pkcs11/distrust-after.c +++ b/tests/pkcs11/distrust-after.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -36,14 +36,14 @@ int main(void) #else -# include -# include -# include -# include +#include +#include +#include +#include -# include "cert-common.h" -# include "pkcs11/softhsm.h" -# include "utils.h" +#include "cert-common.h" +#include "pkcs11/softhsm.h" +#include "utils.h" /* This program tests that CKA_NSS_SERVER_DISTRUST_AFTER is honored * while validating certificate chain. @@ -54,64 +54,64 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "server|<%d>| %s", level, str); } -# define PIN "1234" +#define PIN "1234" -# define CONFIG_NAME "softhsm-distrust-after" -# define CONFIG CONFIG_NAME".config" +#define CONFIG_NAME "softhsm-distrust-after" +#define CONFIG CONFIG_NAME ".config" static const unsigned char chain_pem[] = - "-----BEGIN CERTIFICATE-----" - "MIID5zCCAp+gAwIBAgIUIXzLE8ObVwBGHepbjMWRwW/NpDgwDQYJKoZIhvcNAQEL" - "BQAwGTEXMBUGA1UEAxMOR251VExTIHRlc3QgQ0EwIBcNMjMwMzE0MTAwNDAzWhgP" - "OTk5OTEyMzEyMzU5NTlaMDcxGzAZBgNVBAoTEkdudVRMUyB0ZXN0IHNlcnZlcjEY" - "MBYGA1UEAxMPdGVzdC5nbnV0bHMub3JnMIIBUjANBgkqhkiG9w0BAQEFAAOCAT8A" - "MIIBOgKCATEAtGsnmCWvwf8eyrB+9Ni87UOGZ1Rd2rQewpBfgzwCEfwTcoWyiKRl" - "QQt2XyO+ip/+eUtzOy7HSzy/FsmXVTUX86FySzDC4CeUEvNWAObOgksRXaQem/r6" - "uRsqTRi1uqXmDMeoqKFtqoiE3JYOsmwcNarnx5Q9+dXHwqINS7NuevcIX8UJzRWT" - "GveY3ypMZokk7R/QFmOBZaVYO6HNJWKbmYFUCBcY7HwvCKI7KFcynRdHCob7YrFB" - "meb73qjqIH7zG+666pohZCmS8q1z5RkFnTdT4hGfGF8iuuKLDQCMni+nhz1Avkqi" - "pZIIDC5hwFh8mpnh1qyDOSXPPhvt66NtncvFON7Bx26bNBS+MD6CkB65Spp25O8z" - "DEaiMXL2w2EL+KpnifSl5XY3oSmfgHmqdQIDAQABo4GmMIGjMAwGA1UdEwEB/wQC" - "MAAwGgYDVR0RBBMwEYIPdGVzdC5nbnV0bHMub3JnMCcGA1UdJQQgMB4GCCsGAQUF" - "BwMBBggrBgEFBQcDAwYIKwYBBQUHAwQwDgYDVR0PAQH/BAQDAgWgMB0GA1UdDgQW" - "BBRIIzRTCokxOEpa6sq20qbezh0rGDAfBgNVHSMEGDAWgBQedyNtZzEfkQebli/s" - "/MhG/ozhAzANBgkqhkiG9w0BAQsFAAOCATEAYbQLlr74D62lPEevV/HWLOMG8taY" - "gPld7Z5VApIhsJa913Jya7AOsW+lz48LX3QNTc8Xgj7FVwQeNP1GtBZXCe6U73KB" - "Z+qp1rIEwn2cQVmFG+ShxmUA/gxxmWql2BAORNd5ZCVOcZbMh9uwWjhIQN/SImtW" - "x3ebFgV5N7GPFbw+5NUITLXoLrD7Bixv3iQS8hWwmAmmPZbHAENRauL6jYSjniru" - "SSFYjzJ1trJB6VgpJ2yWfKdcGZmB3osnGshWbayVOaprbH0AWKwOZ/d7sAldjdVw" - "ZsaOhA+6NbvpKYZuw6Tdt0+VmUwGC1ATJGpc0dEXRBaFlt/e+gqQ43Mo+YwiMDYq" - "LDU5nLC6uTSZLtgQHTqb32xmQ/D/y6NkUTH3f4OcxPGxBRVBHjOTk6MhRA==" - "-----END CERTIFICATE-----" - "-----BEGIN CERTIFICATE-----" - "MIIDjTCCAkWgAwIBAgIUejTcfGbOAc9l4IBW+kpAN6A7Sj4wDQYJKoZIhvcNAQEL" - "BQAwGTEXMBUGA1UEAxMOR251VExTIHRlc3QgQ0EwIBcNMjMwMzE0MDk1NzU1WhgP" - "OTk5OTEyMzEyMzU5NTlaMBkxFzAVBgNVBAMTDkdudVRMUyB0ZXN0IENBMIIBUjAN" - "BgkqhkiG9w0BAQEFAAOCAT8AMIIBOgKCATEAnORCsX1unl//fy2d1054XduIg/3C" - "qVBaT3Hca65SEoDwh0KiPtQoOgZLdKY2cobGs/ojYtOjcs0KnlPYdmtjEh6WEhuJ" - "U95v4TQdC4OLMiE56eIGq252hZAbHoTL84Q14DxQWGuzQK830iml7fbw2WcIcRQ8" - "vFGs8SzfXw63+MI6Fq6iMAQIqP08WzGmRRzL5wvCiPhCVkrPmwbXoABub6AAsYwW" - "PJB91M9/lx5gFH5k9/iPfi3s2Kg3F8MOcppqFYjxDSnsfiz6eMh1+bYVIAo367vG" - "VYHigXMEZC2FezlwIHaZzpEoFlY3a7LFJ00yrjQ910r8UE+CEMTYzE40D0olCMo7" - "FA9RCjeO3bUIoYaIdVTUGWEGHWSeoxGei9Gkm6u+ASj8f+i0jxdD2qXsewIDAQAB" - "o2swaTAPBgNVHRMBAf8EBTADAQH/MCcGA1UdJQQgMB4GCCsGAQUFBwMBBggrBgEF" - "BQcDAwYIKwYBBQUHAwQwDgYDVR0PAQH/BAQDAgIEMB0GA1UdDgQWBBQedyNtZzEf" - "kQebli/s/MhG/ozhAzANBgkqhkiG9w0BAQsFAAOCATEAa37UdOTvdUfRGwjrodhE" - "tEnRnfrwfQ61RMK5GY07UAks7CjdeWFDLoQfv9oP9kH122hEGAA683xg/CH5OeN0" - "8zrayQKqwcH40SJQDzc748lTgxUIDaf2rrkoF8butpaDaI0fageqjlEvCeZZSuIC" - "KCfZK9NPN47DknuerjOTwrWxvXYRepfSo8VVbjRj8R4qsgJsmJZYQfrAg0XrnKf/" - "UibNPXRCYABsxH4ZFtivg93LaQ05z4IrPSWGOTDQxNBoEC0DVGfSc8XElP0MkF/K" - "BIPsl3Rt2oFNhfViF9Gpzy9Dj1P1kMD6kE7nBDiRBUPNJZBiJSGVTMZTMc2tg42W" - "QcUYnUUzOpQWg1tcOZy4s+EuJ0bEWhSkFfSN3ENxsHXNCYYHgeadATcGbzTxD6ib" - "eA==" "-----END CERTIFICATE-----"; - -static const gnutls_datum_t chain = { - (unsigned char *)chain_pem, sizeof(chain_pem) - 1 -}; - -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) + "-----BEGIN CERTIFICATE-----" + "MIID5zCCAp+gAwIBAgIUIXzLE8ObVwBGHepbjMWRwW/NpDgwDQYJKoZIhvcNAQEL" + "BQAwGTEXMBUGA1UEAxMOR251VExTIHRlc3QgQ0EwIBcNMjMwMzE0MTAwNDAzWhgP" + "OTk5OTEyMzEyMzU5NTlaMDcxGzAZBgNVBAoTEkdudVRMUyB0ZXN0IHNlcnZlcjEY" + "MBYGA1UEAxMPdGVzdC5nbnV0bHMub3JnMIIBUjANBgkqhkiG9w0BAQEFAAOCAT8A" + "MIIBOgKCATEAtGsnmCWvwf8eyrB+9Ni87UOGZ1Rd2rQewpBfgzwCEfwTcoWyiKRl" + "QQt2XyO+ip/+eUtzOy7HSzy/FsmXVTUX86FySzDC4CeUEvNWAObOgksRXaQem/r6" + "uRsqTRi1uqXmDMeoqKFtqoiE3JYOsmwcNarnx5Q9+dXHwqINS7NuevcIX8UJzRWT" + "GveY3ypMZokk7R/QFmOBZaVYO6HNJWKbmYFUCBcY7HwvCKI7KFcynRdHCob7YrFB" + "meb73qjqIH7zG+666pohZCmS8q1z5RkFnTdT4hGfGF8iuuKLDQCMni+nhz1Avkqi" + "pZIIDC5hwFh8mpnh1qyDOSXPPhvt66NtncvFON7Bx26bNBS+MD6CkB65Spp25O8z" + "DEaiMXL2w2EL+KpnifSl5XY3oSmfgHmqdQIDAQABo4GmMIGjMAwGA1UdEwEB/wQC" + "MAAwGgYDVR0RBBMwEYIPdGVzdC5nbnV0bHMub3JnMCcGA1UdJQQgMB4GCCsGAQUF" + "BwMBBggrBgEFBQcDAwYIKwYBBQUHAwQwDgYDVR0PAQH/BAQDAgWgMB0GA1UdDgQW" + "BBRIIzRTCokxOEpa6sq20qbezh0rGDAfBgNVHSMEGDAWgBQedyNtZzEfkQebli/s" + "/MhG/ozhAzANBgkqhkiG9w0BAQsFAAOCATEAYbQLlr74D62lPEevV/HWLOMG8taY" + "gPld7Z5VApIhsJa913Jya7AOsW+lz48LX3QNTc8Xgj7FVwQeNP1GtBZXCe6U73KB" + "Z+qp1rIEwn2cQVmFG+ShxmUA/gxxmWql2BAORNd5ZCVOcZbMh9uwWjhIQN/SImtW" + "x3ebFgV5N7GPFbw+5NUITLXoLrD7Bixv3iQS8hWwmAmmPZbHAENRauL6jYSjniru" + "SSFYjzJ1trJB6VgpJ2yWfKdcGZmB3osnGshWbayVOaprbH0AWKwOZ/d7sAldjdVw" + "ZsaOhA+6NbvpKYZuw6Tdt0+VmUwGC1ATJGpc0dEXRBaFlt/e+gqQ43Mo+YwiMDYq" + "LDU5nLC6uTSZLtgQHTqb32xmQ/D/y6NkUTH3f4OcxPGxBRVBHjOTk6MhRA==" + "-----END CERTIFICATE-----" + "-----BEGIN CERTIFICATE-----" + "MIIDjTCCAkWgAwIBAgIUejTcfGbOAc9l4IBW+kpAN6A7Sj4wDQYJKoZIhvcNAQEL" + "BQAwGTEXMBUGA1UEAxMOR251VExTIHRlc3QgQ0EwIBcNMjMwMzE0MDk1NzU1WhgP" + "OTk5OTEyMzEyMzU5NTlaMBkxFzAVBgNVBAMTDkdudVRMUyB0ZXN0IENBMIIBUjAN" + "BgkqhkiG9w0BAQEFAAOCAT8AMIIBOgKCATEAnORCsX1unl//fy2d1054XduIg/3C" + "qVBaT3Hca65SEoDwh0KiPtQoOgZLdKY2cobGs/ojYtOjcs0KnlPYdmtjEh6WEhuJ" + "U95v4TQdC4OLMiE56eIGq252hZAbHoTL84Q14DxQWGuzQK830iml7fbw2WcIcRQ8" + "vFGs8SzfXw63+MI6Fq6iMAQIqP08WzGmRRzL5wvCiPhCVkrPmwbXoABub6AAsYwW" + "PJB91M9/lx5gFH5k9/iPfi3s2Kg3F8MOcppqFYjxDSnsfiz6eMh1+bYVIAo367vG" + "VYHigXMEZC2FezlwIHaZzpEoFlY3a7LFJ00yrjQ910r8UE+CEMTYzE40D0olCMo7" + "FA9RCjeO3bUIoYaIdVTUGWEGHWSeoxGei9Gkm6u+ASj8f+i0jxdD2qXsewIDAQAB" + "o2swaTAPBgNVHRMBAf8EBTADAQH/MCcGA1UdJQQgMB4GCCsGAQUFBwMBBggrBgEF" + "BQcDAwYIKwYBBQUHAwQwDgYDVR0PAQH/BAQDAgIEMB0GA1UdDgQWBBQedyNtZzEf" + "kQebli/s/MhG/ozhAzANBgkqhkiG9w0BAQsFAAOCATEAa37UdOTvdUfRGwjrodhE" + "tEnRnfrwfQ61RMK5GY07UAks7CjdeWFDLoQfv9oP9kH122hEGAA683xg/CH5OeN0" + "8zrayQKqwcH40SJQDzc748lTgxUIDaf2rrkoF8butpaDaI0fageqjlEvCeZZSuIC" + "KCfZK9NPN47DknuerjOTwrWxvXYRepfSo8VVbjRj8R4qsgJsmJZYQfrAg0XrnKf/" + "UibNPXRCYABsxH4ZFtivg93LaQ05z4IrPSWGOTDQxNBoEC0DVGfSc8XElP0MkF/K" + "BIPsl3Rt2oFNhfViF9Gpzy9Dj1P1kMD6kE7nBDiRBUPNJZBiJSGVTMZTMc2tg42W" + "QcUYnUUzOpQWg1tcOZy4s+EuJ0bEWhSkFfSN3ENxsHXNCYYHgeadATcGbzTxD6ib" + "eA==" + "-----END CERTIFICATE-----"; + +static const gnutls_datum_t chain = { (unsigned char *)chain_pem, + sizeof(chain_pem) - 1 }; + +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (attempt == 0) { strcpy(pin, PIN); @@ -154,23 +154,22 @@ static void test(const char *provider, const char *purpose, bool succeeds) fail("gnutls_pkcs11_token_init: %s\n", gnutls_strerror(ret)); } - ret = - gnutls_pkcs11_token_set_pin(SOFTHSM_URL, NULL, PIN, - GNUTLS_PIN_USER); + ret = gnutls_pkcs11_token_set_pin(SOFTHSM_URL, NULL, PIN, + GNUTLS_PIN_USER); if (ret < 0) { fail("gnutls_pkcs11_token_set_pin: %s\n", gnutls_strerror(ret)); } gnutls_x509_trust_list_init(&tl, 0); - ret = gnutls_x509_trust_list_add_trust_file(tl, SOFTHSM_URL, NULL, - 0, 0, 0); + ret = gnutls_x509_trust_list_add_trust_file(tl, SOFTHSM_URL, NULL, 0, 0, + 0); if (ret < 0) { fail("gnutls_x509_trust_list_add_trust_file\n"); } - ret = gnutls_x509_crt_list_import2(&certs, &count, - &chain, GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_x509_crt_list_import2(&certs, &count, &chain, + GNUTLS_X509_FMT_PEM, 0); if (ret < 0) { fail("gnutls_x509_crt_import: %s\n", gnutls_strerror(ret)); } @@ -178,10 +177,11 @@ static void test(const char *provider, const char *purpose, bool succeeds) assert(count == 2); /* Use the ICA (instead of the actual root CA) for simplicity. */ - ret = gnutls_pkcs11_copy_x509_crt(SOFTHSM_URL, certs[1], "ca", - GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED | - GNUTLS_PKCS11_OBJ_FLAG_MARK_CA | - GNUTLS_PKCS11_OBJ_FLAG_LOGIN_SO); + ret = gnutls_pkcs11_copy_x509_crt( + SOFTHSM_URL, certs[1], "ca", + GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED | + GNUTLS_PKCS11_OBJ_FLAG_MARK_CA | + GNUTLS_PKCS11_OBJ_FLAG_LOGIN_SO); if (ret < 0) { fail("gnutls_pkcs11_copy_x509_crt: %s\n", gnutls_strerror(ret)); } @@ -189,8 +189,8 @@ static void test(const char *provider, const char *purpose, bool succeeds) vdata.type = GNUTLS_DT_KEY_PURPOSE_OID; vdata.data = (void *)purpose; - ret = gnutls_x509_trust_list_verify_crt2(tl, certs, 1, &vdata, 1, - 0, &status, NULL); + ret = gnutls_x509_trust_list_verify_crt2(tl, certs, 1, &vdata, 1, 0, + &status, NULL); if (ret < 0) { fail("gnutls_x509_trust_list_verify_crt2: %s\n", gnutls_strerror(ret)); @@ -236,16 +236,18 @@ void doit(void) set_softhsm_conf(CONFIG); snprintf(buf, sizeof(buf), - "%s --init-token --slot 0 --label test --so-pin " PIN " --pin " - PIN, bin); + "%s --init-token --slot 0 --label test --so-pin " PIN + " --pin " PIN, + bin); system(buf); test(lib, GNUTLS_KP_TLS_WWW_SERVER, true); set_softhsm_conf(CONFIG); snprintf(buf, sizeof(buf), - "%s --init-token --slot 0 --label test --so-pin " PIN " --pin " - PIN, bin); + "%s --init-token --slot 0 --label test --so-pin " PIN + " --pin " PIN, + bin); system(buf); test(lib, GNUTLS_KP_EMAIL_PROTECTION, true); @@ -257,18 +259,20 @@ void doit(void) set_softhsm_conf(CONFIG); snprintf(buf, sizeof(buf), - "%s --init-token --slot 0 --label test --so-pin " PIN " --pin " - PIN, bin); + "%s --init-token --slot 0 --label test --so-pin " PIN + " --pin " PIN, + bin); system(buf); test(lib, GNUTLS_KP_TLS_WWW_SERVER, false); set_softhsm_conf(CONFIG); snprintf(buf, sizeof(buf), - "%s --init-token --slot 0 --label test --so-pin " PIN " --pin " - PIN, bin); + "%s --init-token --slot 0 --label test --so-pin " PIN + " --pin " PIN, + bin); system(buf); test(lib, GNUTLS_KP_EMAIL_PROTECTION, true); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/pkcs11/gnutls_pcert_list_import_x509_file.c b/tests/pkcs11/gnutls_pcert_list_import_x509_file.c index 6554609ab4..b6d79c81f6 100644 --- a/tests/pkcs11/gnutls_pcert_list_import_x509_file.c +++ b/tests/pkcs11/gnutls_pcert_list_import_x509_file.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -41,7 +41,7 @@ */ #define CONFIG_NAME "softhsm-import-url" -#define CONFIG CONFIG_NAME".config" +#define CONFIG CONFIG_NAME ".config" #include "../test-chains.h" @@ -52,9 +52,9 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "|<%d>| %s", level, str); } -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (attempt == 0) { strcpy(pin, PIN); @@ -63,7 +63,7 @@ int pin_func(void *userdata, int attempt, const char *url, const char *label, return -1; } -static int comp_cert(gnutls_pcert_st * pcert, unsigned i) +static int comp_cert(gnutls_pcert_st *pcert, unsigned i) { int ret; gnutls_datum_t data; @@ -109,10 +109,10 @@ static void load_cert(const char *url, unsigned i) fail("error[%d]: %s\n", i, gnutls_strerror(ret)); snprintf(name, sizeof(name), "cert-%d", i); - ret = - gnutls_pkcs11_copy_x509_crt(url, crt, name, - GNUTLS_PKCS11_OBJ_FLAG_LOGIN | - GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE); + ret = gnutls_pkcs11_copy_x509_crt( + url, crt, name, + GNUTLS_PKCS11_OBJ_FLAG_LOGIN | + GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE); if (ret < 0) fail("error[%d]: %s\n", i, gnutls_strerror(ret)); @@ -173,8 +173,9 @@ void doit(void) set_softhsm_conf(CONFIG); snprintf(buf, sizeof(buf), - "%s --init-token --slot 0 --label test --so-pin " PIN " --pin " - PIN, bin); + "%s --init-token --slot 0 --label test --so-pin " PIN + " --pin " PIN, + bin); system(buf); ret = gnutls_pkcs11_add_provider(lib, NULL); @@ -189,9 +190,8 @@ void doit(void) fail("gnutls_pkcs11_token_init: %s\n", gnutls_strerror(ret)); } - ret = - gnutls_pkcs11_token_set_pin(SOFTHSM_URL, NULL, PIN, - GNUTLS_PIN_USER); + ret = gnutls_pkcs11_token_set_pin(SOFTHSM_URL, NULL, PIN, + GNUTLS_PIN_USER); if (ret < 0) { fail("gnutls_pkcs11_token_set_pin: %s\n", gnutls_strerror(ret)); } @@ -201,19 +201,17 @@ void doit(void) success("import from URI\n"); pcerts_size = 2; - ret = - gnutls_pcert_list_import_x509_file(pcerts, &pcerts_size, - SOFTHSM_URL ";object=cert-0", - GNUTLS_X509_FMT_PEM, pin_func, - NULL, 0); + ret = gnutls_pcert_list_import_x509_file(pcerts, &pcerts_size, + SOFTHSM_URL ";object=cert-0", + GNUTLS_X509_FMT_PEM, pin_func, + NULL, 0); assert(ret == GNUTLS_E_SHORT_MEMORY_BUFFER); pcerts_size = sizeof(pcerts) / sizeof(pcerts[0]); - ret = - gnutls_pcert_list_import_x509_file(pcerts, &pcerts_size, - SOFTHSM_URL ";object=cert-0", - GNUTLS_X509_FMT_PEM, pin_func, - NULL, 0); + ret = gnutls_pcert_list_import_x509_file(pcerts, &pcerts_size, + SOFTHSM_URL ";object=cert-0", + GNUTLS_X509_FMT_PEM, pin_func, + NULL, 0); if (ret < 0) fail("cannot load certs: %s\n", gnutls_strerror(ret)); diff --git a/tests/pkcs11/gnutls_x509_crt_list_import_url.c b/tests/pkcs11/gnutls_x509_crt_list_import_url.c index 3767bb6a26..5debfe2b09 100644 --- a/tests/pkcs11/gnutls_x509_crt_list_import_url.c +++ b/tests/pkcs11/gnutls_x509_crt_list_import_url.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -41,7 +41,7 @@ */ #define CONFIG_NAME "x509-crt-list-import-url" -#define CONFIG CONFIG_NAME".config" +#define CONFIG CONFIG_NAME ".config" #include "../test-chains.h" @@ -52,9 +52,9 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "|<%d>| %s", level, str); } -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (attempt == 0) { strcpy(pin, PIN); @@ -104,10 +104,10 @@ static void load_cert(const char *url, unsigned i) fail("error[%d]: %s\n", i, gnutls_strerror(ret)); snprintf(name, sizeof(name), "cert-%d", i); - ret = - gnutls_pkcs11_copy_x509_crt(url, crt, name, - GNUTLS_PKCS11_OBJ_FLAG_LOGIN | - GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE); + ret = gnutls_pkcs11_copy_x509_crt( + url, crt, name, + GNUTLS_PKCS11_OBJ_FLAG_LOGIN | + GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE); if (ret < 0) fail("error[%d]: %s\n", i, gnutls_strerror(ret)); @@ -153,8 +153,9 @@ void doit(void) set_softhsm_conf(CONFIG); snprintf(buf, sizeof(buf), - "%s --init-token --slot 0 --label test --so-pin " PIN " --pin " - PIN, bin); + "%s --init-token --slot 0 --label test --so-pin " PIN + " --pin " PIN, + bin); system(buf); ret = gnutls_pkcs11_add_provider(lib, NULL); @@ -169,9 +170,8 @@ void doit(void) fail("gnutls_pkcs11_token_init: %s\n", gnutls_strerror(ret)); } - ret = - gnutls_pkcs11_token_set_pin(SOFTHSM_URL, NULL, PIN, - GNUTLS_PIN_USER); + ret = gnutls_pkcs11_token_set_pin(SOFTHSM_URL, NULL, PIN, + GNUTLS_PIN_USER); if (ret < 0) { fail("gnutls_pkcs11_token_set_pin: %s\n", gnutls_strerror(ret)); } @@ -180,19 +180,17 @@ void doit(void) gnutls_pkcs11_set_pin_function(NULL, NULL); /* try importing without login */ - ret = - gnutls_x509_crt_list_import_url(&crts, &crts_size, - SOFTHSM_URL ";object=cert-0", - pin_func, NULL, 0); + ret = gnutls_x509_crt_list_import_url(&crts, &crts_size, + SOFTHSM_URL ";object=cert-0", + pin_func, NULL, 0); if (ret != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) fail("cannot load certs: %s\n", gnutls_strerror(ret)); /* try importing with login */ - ret = - gnutls_x509_crt_list_import_url(&crts, &crts_size, - SOFTHSM_URL ";object=cert-0", - pin_func, NULL, - GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + ret = gnutls_x509_crt_list_import_url(&crts, &crts_size, + SOFTHSM_URL ";object=cert-0", + pin_func, NULL, + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) fail("cannot load certs: %s\n", gnutls_strerror(ret)); diff --git a/tests/pkcs11/list-objects.c b/tests/pkcs11/list-objects.c index 5cc727f766..890e76b6e5 100644 --- a/tests/pkcs11/list-objects.c +++ b/tests/pkcs11/list-objects.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -48,9 +48,9 @@ static void tls_log_func(int level, const char *str) static const char *opt_pin; -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (attempt == 0) { strcpy(pin, opt_pin); @@ -124,9 +124,8 @@ int main(int argc, char **argv) flags = 0; } - ret = - gnutls_pkcs11_obj_list_import_url2(&crt_list, &crt_list_size, - url, attrs, obj_flags); + ret = gnutls_pkcs11_obj_list_import_url2(&crt_list, &crt_list_size, url, + attrs, obj_flags); if (ret != 0) { fprintf(stderr, "error at %d: %s\n", __LINE__, gnutls_strerror(ret)); diff --git a/tests/pkcs11/list-tokens.c b/tests/pkcs11/list-tokens.c index a32ca326e4..8fa4b58035 100644 --- a/tests/pkcs11/list-tokens.c +++ b/tests/pkcs11/list-tokens.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -47,10 +47,9 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "|<%d>| %s", level, str); } -int -_gnutls_pkcs11_token_get_url(unsigned int seq, - gnutls_pkcs11_url_type_t detailed, char **url, - unsigned flags); +int _gnutls_pkcs11_token_get_url(unsigned int seq, + gnutls_pkcs11_url_type_t detailed, char **url, + unsigned flags); int main(int argc, char **argv) { @@ -83,8 +82,8 @@ int main(int argc, char **argv) break; case 'm': /* initialize manually - i.e., do no module loading */ - ret = - gnutls_pkcs11_init(GNUTLS_PKCS11_FLAG_MANUAL, NULL); + ret = gnutls_pkcs11_init(GNUTLS_PKCS11_FLAG_MANUAL, + NULL); if (ret != 0) { fprintf(stderr, "error at %d: %s\n", __LINE__, gnutls_strerror(ret)); @@ -122,9 +121,8 @@ int main(int argc, char **argv) break; case 't': /* do trusted module loading */ - ret = - gnutls_pkcs11_init(GNUTLS_PKCS11_FLAG_AUTO_TRUSTED, - NULL); + ret = gnutls_pkcs11_init( + GNUTLS_PKCS11_FLAG_AUTO_TRUSTED, NULL); if (ret != 0) { fprintf(stderr, "error at %d: %s\n", __LINE__, gnutls_strerror(ret)); @@ -134,12 +132,13 @@ int main(int argc, char **argv) case 'v': /* do verification which should trigger trusted module loading */ assert(gnutls_x509_crt_init(&crt) >= 0); - assert(gnutls_x509_crt_import - (crt, &ca3_cert, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_x509_crt_import(crt, &ca3_cert, + GNUTLS_X509_FMT_PEM) >= + 0); assert(gnutls_x509_trust_list_init(&tl, 0) >= 0); - assert(gnutls_x509_trust_list_add_system_trust(tl, 0, 0) - >= 0); + assert(gnutls_x509_trust_list_add_system_trust(tl, 0, + 0) >= 0); gnutls_x509_trust_list_verify_crt2(tl, &crt, 1, NULL, 0, 0, &status, NULL); gnutls_x509_trust_list_deinit(tl, 1); diff --git a/tests/pkcs11/pkcs11-cert-import-url-exts.c b/tests/pkcs11/pkcs11-cert-import-url-exts.c index d5f3a3b18c..6e0b20050d 100644 --- a/tests/pkcs11/pkcs11-cert-import-url-exts.c +++ b/tests/pkcs11/pkcs11-cert-import-url-exts.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -38,12 +38,12 @@ /* Tests the certificate extension override in "trusted" PKCS#11 modules */ #ifdef _WIN32 -# define P11LIB "libpkcs11mock1.dll" +#define P11LIB "libpkcs11mock1.dll" #else -# define P11LIB "libpkcs11mock1.so" +#define P11LIB "libpkcs11mock1.so" #endif -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1424466893; @@ -92,16 +92,16 @@ void doit(void) assert(gnutls_x509_crt_init(&ocrt) >= 0); /* check high level certificate functions */ - ret = - gnutls_x509_crt_import_url(crt, "pkcs11:type=cert;object=cert1", 0); + ret = gnutls_x509_crt_import_url(crt, "pkcs11:type=cert;object=cert1", + 0); if (ret < 0) { fail("%d: %s\n", ret, gnutls_strerror(ret)); exit(1); } - ret = - gnutls_x509_crt_import_url(ocrt, "pkcs11:type=cert;object=cert1", - GNUTLS_PKCS11_OBJ_FLAG_OVERWRITE_TRUSTMOD_EXT); + ret = gnutls_x509_crt_import_url( + ocrt, "pkcs11:type=cert;object=cert1", + GNUTLS_PKCS11_OBJ_FLAG_OVERWRITE_TRUSTMOD_EXT); if (ret < 0) { fail("%d: %s\n", ret, gnutls_strerror(ret)); exit(1); @@ -129,9 +129,8 @@ void doit(void) exit(1); } - if (keyusage != - (GNUTLS_KEY_KEY_ENCIPHERMENT | GNUTLS_KEY_ENCIPHER_ONLY | - GNUTLS_KEY_KEY_CERT_SIGN)) { + if (keyusage != (GNUTLS_KEY_KEY_ENCIPHERMENT | + GNUTLS_KEY_ENCIPHER_ONLY | GNUTLS_KEY_KEY_CERT_SIGN)) { fail("Extension does not have the expected key usage!\n"); } diff --git a/tests/pkcs11/pkcs11-cert-import-url4-exts.c b/tests/pkcs11/pkcs11-cert-import-url4-exts.c index af20493fa3..7119af8f6a 100644 --- a/tests/pkcs11/pkcs11-cert-import-url4-exts.c +++ b/tests/pkcs11/pkcs11-cert-import-url4-exts.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -38,12 +38,12 @@ /* Tests the certificate extension override in "trusted" PKCS#11 modules */ #ifdef _WIN32 -# define P11LIB "libpkcs11mock1.dll" +#define P11LIB "libpkcs11mock1.dll" #else -# define P11LIB "libpkcs11mock1.so" +#define P11LIB "libpkcs11mock1.so" #endif -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1424466893; @@ -96,19 +96,16 @@ void doit(void) assert(gnutls_x509_crt_init(&ocrt) >= 0); /* check low level certificate import functions */ - ret = - gnutls_pkcs11_obj_list_import_url4(&plist, &plist_size, - "pkcs11:type=cert;object=cert1", - 0); + ret = gnutls_pkcs11_obj_list_import_url4( + &plist, &plist_size, "pkcs11:type=cert;object=cert1", 0); if (ret < 0) { fail("%d: %s\n", ret, gnutls_strerror(ret)); exit(1); } - ret = - gnutls_pkcs11_obj_list_import_url4(&plist2, &plist2_size, - "pkcs11:type=cert;object=cert1", - GNUTLS_PKCS11_OBJ_FLAG_OVERWRITE_TRUSTMOD_EXT); + ret = gnutls_pkcs11_obj_list_import_url4( + &plist2, &plist2_size, "pkcs11:type=cert;object=cert1", + GNUTLS_PKCS11_OBJ_FLAG_OVERWRITE_TRUSTMOD_EXT); if (ret < 0) { fail("%d: %s\n", ret, gnutls_strerror(ret)); exit(1); @@ -158,9 +155,8 @@ void doit(void) exit(1); } - if (keyusage != - (GNUTLS_KEY_KEY_ENCIPHERMENT | GNUTLS_KEY_ENCIPHER_ONLY | - GNUTLS_KEY_KEY_CERT_SIGN)) { + if (keyusage != (GNUTLS_KEY_KEY_ENCIPHERMENT | + GNUTLS_KEY_ENCIPHER_ONLY | GNUTLS_KEY_KEY_CERT_SIGN)) { fail("Extension does not have the expected key usage!\n"); } diff --git a/tests/pkcs11/pkcs11-chainverify.c b/tests/pkcs11/pkcs11-chainverify.c index e84ca8f850..235fc92cd9 100644 --- a/tests/pkcs11/pkcs11-chainverify.c +++ b/tests/pkcs11/pkcs11-chainverify.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -44,7 +44,7 @@ static time_t then = DEFAULT_THEN; verifying certificates. To avoid a time bomb, we hard code the current time. This should work fine on systems where the library call to time is resolved at run-time. */ -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { if (t) *t = then; @@ -57,9 +57,9 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "|<%d>| %s", level, str); } -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (attempt == 0) { strcpy(pin, "1234"); @@ -80,7 +80,7 @@ void doit(void) if (gnutls_fips140_mode_enabled()) exit(77); - /* The overloading of time() seems to work in linux (ELF?) + /* The overloading of time() seems to work in linux (ELF?) * systems only. Disable it on windows. */ #ifdef _WIN32 @@ -104,9 +104,10 @@ void doit(void) gnutls_global_set_log_level(4711); set_softhsm_conf(CONFIG); - snprintf(buf, sizeof(buf), - "%s --init-token --slot 0 --label test --so-pin 1234 --pin 1234", - bin); + snprintf( + buf, sizeof(buf), + "%s --init-token --slot 0 --label test --so-pin 1234 --pin 1234", + bin); system(buf); ret = gnutls_pkcs11_add_provider(lib, "trusted"); @@ -153,9 +154,8 @@ void doit(void) tmp.data = (unsigned char *)chains[i].chain[j]; tmp.size = strlen(chains[i].chain[j]); - ret = - gnutls_x509_crt_import(certs[j], &tmp, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(certs[j], &tmp, + GNUTLS_X509_FMT_PEM); if (debug > 2) printf("done\n"); if (ret < 0) { @@ -213,12 +213,11 @@ void doit(void) } /* write CA certificate to softhsm */ - ret = - gnutls_pkcs11_copy_x509_crt(SOFTHSM_URL, ca, "test-ca", - GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED - | GNUTLS_PKCS11_OBJ_FLAG_MARK_CA - | - GNUTLS_PKCS11_OBJ_FLAG_LOGIN_SO); + ret = gnutls_pkcs11_copy_x509_crt( + SOFTHSM_URL, ca, "test-ca", + GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED | + GNUTLS_PKCS11_OBJ_FLAG_MARK_CA | + GNUTLS_PKCS11_OBJ_FLAG_LOGIN_SO); if (ret < 0) { fail("gnutls_pkcs11_copy_x509_crt: %s\n", gnutls_strerror(ret)); @@ -226,9 +225,8 @@ void doit(void) gnutls_x509_trust_list_init(&tl, 0); - ret = - gnutls_x509_trust_list_add_trust_file(tl, SOFTHSM_URL, NULL, - 0, 0, 0); + ret = gnutls_x509_trust_list_add_trust_file(tl, SOFTHSM_URL, + NULL, 0, 0, 0); if (ret < 0) { fail("gnutls_x509_trust_list_add_trust_file: %s\n", gnutls_strerror(ret)); @@ -242,21 +240,19 @@ void doit(void) /* test trust list iteration */ get_ca_iter = NULL; - while (gnutls_x509_trust_list_iter_get_ca - (tl, &get_ca_iter, &get_ca_crt) == 0) { - ret = - gnutls_x509_crt_export2(get_ca_crt, - GNUTLS_X509_FMT_PEM, - &get_ca_datum_test); + while (gnutls_x509_trust_list_iter_get_ca(tl, &get_ca_iter, + &get_ca_crt) == 0) { + ret = gnutls_x509_crt_export2(get_ca_crt, + GNUTLS_X509_FMT_PEM, + &get_ca_datum_test); if (ret < 0) { fail("gnutls_x509_crt_export2: %s\n", gnutls_strerror(ret)); exit(1); } - ret = - gnutls_x509_crt_export2(ca, GNUTLS_X509_FMT_PEM, - &get_ca_datum); + ret = gnutls_x509_crt_export2(ca, GNUTLS_X509_FMT_PEM, + &get_ca_datum); if (ret < 0) { fail("gnutls_x509_crt_export2: %s\n", gnutls_strerror(ret)); @@ -266,7 +262,9 @@ void doit(void) if (get_ca_datum_test.size != get_ca_datum.size || memcmp(get_ca_datum_test.data, get_ca_datum.data, get_ca_datum.size) != 0) { - fail("gnutls_x509_trist_list_iter_get_ca: Unexpected certificate (%u != %u):\n\n%s\n\nvs.\n\n%s", get_ca_datum.size, get_ca_datum_test.size, get_ca_datum.data, get_ca_datum_test.data); + fail("gnutls_x509_trist_list_iter_get_ca: Unexpected certificate (%u != %u):\n\n%s\n\nvs.\n\n%s", + get_ca_datum.size, get_ca_datum_test.size, + get_ca_datum.data, get_ca_datum_test.data); exit(1); } @@ -284,12 +282,9 @@ void doit(void) then = DEFAULT_THEN; /* make sure that the two functions don't diverge */ - ret = gnutls_x509_trust_list_verify_crt2(tl, certs, j, - vdata, - chains[i].purpose == - NULL ? 0 : 1, - chains[i].verify_flags, - &verify_status, NULL); + ret = gnutls_x509_trust_list_verify_crt2( + tl, certs, j, vdata, chains[i].purpose == NULL ? 0 : 1, + chains[i].verify_flags, &verify_status, NULL); if (ret < 0) { fprintf(stderr, "gnutls_x509_crt_list_verify[%d,%d]: %s\n", @@ -299,14 +294,14 @@ void doit(void) if (verify_status != chains[i].expected_verify_result) { gnutls_datum_t out1, out2; - gnutls_certificate_verification_status_print - (verify_status, GNUTLS_CRT_X509, &out1, 0); - gnutls_certificate_verification_status_print(chains - [i]. - expected_verify_result, - GNUTLS_CRT_X509, - &out2, 0); - fail("chain[%s]:\nverify_status: %d: %s\nexpected: %d: %s\n", chains[i].name, verify_status, out1.data, chains[i].expected_verify_result, out2.data); + gnutls_certificate_verification_status_print( + verify_status, GNUTLS_CRT_X509, &out1, 0); + gnutls_certificate_verification_status_print( + chains[i].expected_verify_result, + GNUTLS_CRT_X509, &out2, 0); + fail("chain[%s]:\nverify_status: %d: %s\nexpected: %d: %s\n", + chains[i].name, verify_status, out1.data, + chains[i].expected_verify_result, out2.data); gnutls_free(out1.data); gnutls_free(out2.data); diff --git a/tests/pkcs11/pkcs11-combo.c b/tests/pkcs11/pkcs11-combo.c index 7a15b13b21..777a299de4 100644 --- a/tests/pkcs11/pkcs11-combo.c +++ b/tests/pkcs11/pkcs11-combo.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -41,132 +41,133 @@ #include "softhsm.h" #define NAME "softhsm-combo" -#define CONFIG NAME".config" +#define CONFIG NAME ".config" /* These CAs have the same DN */ static const char *ca_list[MAX_CHAIN] = { "-----BEGIN CERTIFICATE-----\n" - "MIIHSjCCBjKgAwIBAgIKYRHt9wABAAAAFTANBgkqhkiG9w0BAQUFADBSMQswCQYD\n" - "VQQGEwJVUzEaMBgGA1UEChMRSW50ZWwgQ29ycG9yYXRpb24xJzAlBgNVBAMTHklu\n" - "dGVsIEludHJhbmV0IEJhc2ljIFBvbGljeSBDQTAeFw0xMzAyMDQyMTUyMThaFw0x\n" - "ODA1MjQxOTU5MzlaMFYxCzAJBgNVBAYTAlVTMRowGAYDVQQKExFJbnRlbCBDb3Jw\n" - "b3JhdGlvbjErMCkGA1UEAxMiSW50ZWwgSW50cmFuZXQgQmFzaWMgSXNzdWluZyBD\n" - "QSAyQjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALn3ogjraWSmK5Wb\n" - "/4e9mENA1F36FBVemaG7L93ZhRRXq4UV0PQM5/4TOe9KAaOlX+a2cuULeeUtN9Rk\n" - "V/nHAVzSWlqc/NTMJfuI/1AD7ICNejQFYLxDMXGjR7eAHtiMz0iTMp9u6YTw4WXh\n" - "WffqTPiqUZ6DEWsMic9dM9yw/JqzycKClLcTD1OCvtw7Fx4tNTu6/ngrYJcTo29e\n" - "BBh/DupgtgnYPYuExEkHmucb4VIDdjfRkPo/BdNqrUSYfYqnUDj5mH+hPzIgppsZ\n" - "Rw0S5PUZGuC1f+Zok+4vZPR+hGG3Pdm2LTUEWSnurlhyfBoM+0yxeHsmL9aHU7zt\n" - "EIzVmKUCAwEAAaOCBBwwggQYMBIGCSsGAQQBgjcVAQQFAgMCAAIwIwYJKwYBBAGC\n" - "NxUCBBYEFMqHyYZOx6LYwRwZ+5vjOyIl9hENMB0GA1UdDgQWBBQ4Y3b6tgU6qVlP\n" - "SoeNoIO3fpE6CzAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMC\n" - "AYYwEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNVHSMEGDAWgBRp6zCRHAOAgE4RFYhG\n" - "pOJBmtNpHzCCAaIGA1UdHwSCAZkwggGVMIIBkaCCAY2gggGJhlFodHRwOi8vd3d3\n" - "LmludGVsLmNvbS9yZXBvc2l0b3J5L0NSTC9JbnRlbCUyMEludHJhbmV0JTIwQmFz\n" - "aWMlMjBQb2xpY3klMjBDQSgxKS5jcmyGWmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuaW50\n" - "ZWwuY29tL3JlcG9zaXRvcnkvQ1JML0ludGVsJTIwSW50cmFuZXQlMjBCYXNpYyUy\n" - "MFBvbGljeSUyMENBKDEpLmNybIaB12xkYXA6Ly8vQ049SW50ZWwlMjBJbnRyYW5l\n" - "dCUyMEJhc2ljJTIwUG9saWN5JTIwQ0EoMSksQ049bWNzaWJwY2EsQ049Q0RQLENO\n" - "PVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZpZ3Vy\n" - "YXRpb24sREM9Y29ycCxEQz1pbnRlbCxEQz1jb20/Y2VydGlmaWNhdGVSZXZvY2F0\n" - "aW9uTGlzdD9iYXNlP29iamVjdENsYXNzPWNSTERpc3RyaWJ1dGlvblBvaW50MIIB\n" - "uQYIKwYBBQUHAQEEggGrMIIBpzBmBggrBgEFBQcwAoZaaHR0cDovL3d3dy5pbnRl\n" - "bC5jb20vcmVwb3NpdG9yeS9jZXJ0aWZpY2F0ZXMvSW50ZWwlMjBJbnRyYW5ldCUy\n" - "MEJhc2ljJTIwUG9saWN5JTIwQ0EoMSkuY3J0MG8GCCsGAQUFBzAChmNodHRwOi8v\n" - "Y2VydGlmaWNhdGVzLmludGVsLmNvbS9yZXBvc2l0b3J5L2NlcnRpZmljYXRlcy9J\n" - "bnRlbCUyMEludHJhbmV0JTIwQmFzaWMlMjBQb2xpY3klMjBDQSgxKS5jcnQwgcsG\n" - "CCsGAQUFBzAChoG+bGRhcDovLy9DTj1JbnRlbCUyMEludHJhbmV0JTIwQmFzaWMl\n" - "MjBQb2xpY3klMjBDQSxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMs\n" - "Q049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1jb3JwLERDPWludGVsLERD\n" - "PWNvbT9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2VydGlmaWNhdGlv\n" - "bkF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAQEAsj8cHt2jSAmnIGulE9jXooAc\n" - "qH2xehlI+ko/al+nDnBzbjDYYjVS52XitYg8JGo6j72ijiGlGb/03FcQJRBZmUH6\n" - "znktx2rGTm4IdjL8quhvHthlzXXCozL8GMeeOuZ5rzHlhapKx764a5RuZtyx89uS\n" - "9cECon6oLGesXjFJ8Xrq6ecHZrQwJUpmvZalwvloKACAWqBh8yV12WDnUNZhtp8N\n" - "8rqeJZoy/lXGnTxsSSodO/5Y/CxYJM4W6u4WgvXNJSjO/0qWvb64S+pVLjBzwI+Y\n" - "X6oLqmBovRp1lGPOLjkXZi3EKDR8DmzhtpJq2677RtYowewnFedQ+exH9cXoJw==\n" - "-----END CERTIFICATE-----", + "MIIHSjCCBjKgAwIBAgIKYRHt9wABAAAAFTANBgkqhkiG9w0BAQUFADBSMQswCQYD\n" + "VQQGEwJVUzEaMBgGA1UEChMRSW50ZWwgQ29ycG9yYXRpb24xJzAlBgNVBAMTHklu\n" + "dGVsIEludHJhbmV0IEJhc2ljIFBvbGljeSBDQTAeFw0xMzAyMDQyMTUyMThaFw0x\n" + "ODA1MjQxOTU5MzlaMFYxCzAJBgNVBAYTAlVTMRowGAYDVQQKExFJbnRlbCBDb3Jw\n" + "b3JhdGlvbjErMCkGA1UEAxMiSW50ZWwgSW50cmFuZXQgQmFzaWMgSXNzdWluZyBD\n" + "QSAyQjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALn3ogjraWSmK5Wb\n" + "/4e9mENA1F36FBVemaG7L93ZhRRXq4UV0PQM5/4TOe9KAaOlX+a2cuULeeUtN9Rk\n" + "V/nHAVzSWlqc/NTMJfuI/1AD7ICNejQFYLxDMXGjR7eAHtiMz0iTMp9u6YTw4WXh\n" + "WffqTPiqUZ6DEWsMic9dM9yw/JqzycKClLcTD1OCvtw7Fx4tNTu6/ngrYJcTo29e\n" + "BBh/DupgtgnYPYuExEkHmucb4VIDdjfRkPo/BdNqrUSYfYqnUDj5mH+hPzIgppsZ\n" + "Rw0S5PUZGuC1f+Zok+4vZPR+hGG3Pdm2LTUEWSnurlhyfBoM+0yxeHsmL9aHU7zt\n" + "EIzVmKUCAwEAAaOCBBwwggQYMBIGCSsGAQQBgjcVAQQFAgMCAAIwIwYJKwYBBAGC\n" + "NxUCBBYEFMqHyYZOx6LYwRwZ+5vjOyIl9hENMB0GA1UdDgQWBBQ4Y3b6tgU6qVlP\n" + "SoeNoIO3fpE6CzAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMC\n" + "AYYwEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNVHSMEGDAWgBRp6zCRHAOAgE4RFYhG\n" + "pOJBmtNpHzCCAaIGA1UdHwSCAZkwggGVMIIBkaCCAY2gggGJhlFodHRwOi8vd3d3\n" + "LmludGVsLmNvbS9yZXBvc2l0b3J5L0NSTC9JbnRlbCUyMEludHJhbmV0JTIwQmFz\n" + "aWMlMjBQb2xpY3klMjBDQSgxKS5jcmyGWmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuaW50\n" + "ZWwuY29tL3JlcG9zaXRvcnkvQ1JML0ludGVsJTIwSW50cmFuZXQlMjBCYXNpYyUy\n" + "MFBvbGljeSUyMENBKDEpLmNybIaB12xkYXA6Ly8vQ049SW50ZWwlMjBJbnRyYW5l\n" + "dCUyMEJhc2ljJTIwUG9saWN5JTIwQ0EoMSksQ049bWNzaWJwY2EsQ049Q0RQLENO\n" + "PVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZpZ3Vy\n" + "YXRpb24sREM9Y29ycCxEQz1pbnRlbCxEQz1jb20/Y2VydGlmaWNhdGVSZXZvY2F0\n" + "aW9uTGlzdD9iYXNlP29iamVjdENsYXNzPWNSTERpc3RyaWJ1dGlvblBvaW50MIIB\n" + "uQYIKwYBBQUHAQEEggGrMIIBpzBmBggrBgEFBQcwAoZaaHR0cDovL3d3dy5pbnRl\n" + "bC5jb20vcmVwb3NpdG9yeS9jZXJ0aWZpY2F0ZXMvSW50ZWwlMjBJbnRyYW5ldCUy\n" + "MEJhc2ljJTIwUG9saWN5JTIwQ0EoMSkuY3J0MG8GCCsGAQUFBzAChmNodHRwOi8v\n" + "Y2VydGlmaWNhdGVzLmludGVsLmNvbS9yZXBvc2l0b3J5L2NlcnRpZmljYXRlcy9J\n" + "bnRlbCUyMEludHJhbmV0JTIwQmFzaWMlMjBQb2xpY3klMjBDQSgxKS5jcnQwgcsG\n" + "CCsGAQUFBzAChoG+bGRhcDovLy9DTj1JbnRlbCUyMEludHJhbmV0JTIwQmFzaWMl\n" + "MjBQb2xpY3klMjBDQSxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMs\n" + "Q049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1jb3JwLERDPWludGVsLERD\n" + "PWNvbT9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2VydGlmaWNhdGlv\n" + "bkF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAQEAsj8cHt2jSAmnIGulE9jXooAc\n" + "qH2xehlI+ko/al+nDnBzbjDYYjVS52XitYg8JGo6j72ijiGlGb/03FcQJRBZmUH6\n" + "znktx2rGTm4IdjL8quhvHthlzXXCozL8GMeeOuZ5rzHlhapKx764a5RuZtyx89uS\n" + "9cECon6oLGesXjFJ8Xrq6ecHZrQwJUpmvZalwvloKACAWqBh8yV12WDnUNZhtp8N\n" + "8rqeJZoy/lXGnTxsSSodO/5Y/CxYJM4W6u4WgvXNJSjO/0qWvb64S+pVLjBzwI+Y\n" + "X6oLqmBovRp1lGPOLjkXZi3EKDR8DmzhtpJq2677RtYowewnFedQ+exH9cXoJw==\n" + "-----END CERTIFICATE-----", "-----BEGIN CERTIFICATE-----\n" - "MIIHSjCCBjKgAwIBAgIKYRXxrQABAAAAETANBgkqhkiG9w0BAQUFADBSMQswCQYD\n" - "VQQGEwJVUzEaMBgGA1UEChMRSW50ZWwgQ29ycG9yYXRpb24xJzAlBgNVBAMTHklu\n" - "dGVsIEludHJhbmV0IEJhc2ljIFBvbGljeSBDQTAeFw0wOTA1MTUxODQyNDVaFw0x\n" - "NTA1MTUxODUyNDVaMFYxCzAJBgNVBAYTAlVTMRowGAYDVQQKExFJbnRlbCBDb3Jw\n" - "b3JhdGlvbjErMCkGA1UEAxMiSW50ZWwgSW50cmFuZXQgQmFzaWMgSXNzdWluZyBD\n" - "QSAyQjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbJOXtXYgfyoch6\n" - "ip5SSjijOXvpIjBxbTl5EGH/VYHmpM2O6SRlKh/uy77QS9m84sRWCJLr8cWwX9oH\n" - "qSmIylgcWvDpVNHx4v506DTTrbK0sbYRQYXRajOzJKeTt7NLeLrngyl45FrI9VAT\n" - "3yqp/2BCG1dUwcBha3dB2UbTkFOMt9o/gqoL6KvgswYMs/oGc/OIjeozdYuhnBT2\n" - "YlT9Ge5pfhOJWXh4DJbxnTmWwRUKq0MXFn0S00KQ/BZOTkc/5DibUmbmMrYi8ra4\n" - "Z2bpnoTq0WNA99O2Lk8IgmkqPdi6HwZwKCE/x01qwP8zo76rvN8sbW9pj2WzS1WF\n" - "tSDPeZECAwEAAaOCBBwwggQYMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYE\n" - "FPwbdyds7Cm03lobLKmI6q59npi+MAsGA1UdDwQEAwIBhjASBgkrBgEEAYI3FQEE\n" - "BQIDAQABMCMGCSsGAQQBgjcVAgQWBBRT1n27C6cZL4QFHaUX2nFSCPxhtTAZBgkr\n" - "BgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAfBgNVHSMEGDAWgBRp6zCRHAOAgE4RFYhG\n" - "pOJBmtNpHzCCAaIGA1UdHwSCAZkwggGVMIIBkaCCAY2gggGJhlFodHRwOi8vd3d3\n" - "LmludGVsLmNvbS9yZXBvc2l0b3J5L0NSTC9JbnRlbCUyMEludHJhbmV0JTIwQmFz\n" - "aWMlMjBQb2xpY3klMjBDQSgxKS5jcmyGWmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuaW50\n" - "ZWwuY29tL3JlcG9zaXRvcnkvQ1JML0ludGVsJTIwSW50cmFuZXQlMjBCYXNpYyUy\n" - "MFBvbGljeSUyMENBKDEpLmNybIaB12xkYXA6Ly8vQ049SW50ZWwlMjBJbnRyYW5l\n" - "dCUyMEJhc2ljJTIwUG9saWN5JTIwQ0EoMSksQ049bWNzaWJwY2EsQ049Q0RQLENO\n" - "PVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZpZ3Vy\n" - "YXRpb24sREM9Y29ycCxEQz1pbnRlbCxEQz1jb20/Y2VydGlmaWNhdGVSZXZvY2F0\n" - "aW9uTGlzdD9iYXNlP29iamVjdENsYXNzPWNSTERpc3RyaWJ1dGlvblBvaW50MIIB\n" - "uQYIKwYBBQUHAQEEggGrMIIBpzBmBggrBgEFBQcwAoZaaHR0cDovL3d3dy5pbnRl\n" - "bC5jb20vcmVwb3NpdG9yeS9jZXJ0aWZpY2F0ZXMvSW50ZWwlMjBJbnRyYW5ldCUy\n" - "MEJhc2ljJTIwUG9saWN5JTIwQ0EoMSkuY3J0MG8GCCsGAQUFBzAChmNodHRwOi8v\n" - "Y2VydGlmaWNhdGVzLmludGVsLmNvbS9yZXBvc2l0b3J5L2NlcnRpZmljYXRlcy9J\n" - "bnRlbCUyMEludHJhbmV0JTIwQmFzaWMlMjBQb2xpY3klMjBDQSgxKS5jcnQwgcsG\n" - "CCsGAQUFBzAChoG+bGRhcDovLy9DTj1JbnRlbCUyMEludHJhbmV0JTIwQmFzaWMl\n" - "MjBQb2xpY3klMjBDQSxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMs\n" - "Q049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1jb3JwLERDPWludGVsLERD\n" - "PWNvbT9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2VydGlmaWNhdGlv\n" - "bkF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAQEArlAkrJXyMCssqAJT3PqnY7wt\n" - "sirq1fTMrVrHdmkpBKDXBQnDcTW1zfZtOPV/QDm3UsFwDBbGq+j/7U9qZ1zYHkv+\n" - "wrBpeFM6dlca/sgegGGAhYnQQwmlSzNXCKHMBltMjT61X8rVjyt1XJnucgat9rnT\n" - "2j8pztqoViVnORsGfT6DDB/bz/6bFKw4FMp1wDaJI7dKh5NUggvH36owTWI7JUvq\n" - "yJ8OI2qmjXrlqGexfwvltIkEk8xzuMIHWQoR8sERL2qf3nb2VYq1s1LbH5uCkZ0l\n" - "w/xgwFbbwjaGJ3TFOmkVKYU77nXSkfK9EXae0UZRU0WmX4t5NNt8jiL56TPpsw==\n" - "-----END CERTIFICATE-----\n", + "MIIHSjCCBjKgAwIBAgIKYRXxrQABAAAAETANBgkqhkiG9w0BAQUFADBSMQswCQYD\n" + "VQQGEwJVUzEaMBgGA1UEChMRSW50ZWwgQ29ycG9yYXRpb24xJzAlBgNVBAMTHklu\n" + "dGVsIEludHJhbmV0IEJhc2ljIFBvbGljeSBDQTAeFw0wOTA1MTUxODQyNDVaFw0x\n" + "NTA1MTUxODUyNDVaMFYxCzAJBgNVBAYTAlVTMRowGAYDVQQKExFJbnRlbCBDb3Jw\n" + "b3JhdGlvbjErMCkGA1UEAxMiSW50ZWwgSW50cmFuZXQgQmFzaWMgSXNzdWluZyBD\n" + "QSAyQjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbJOXtXYgfyoch6\n" + "ip5SSjijOXvpIjBxbTl5EGH/VYHmpM2O6SRlKh/uy77QS9m84sRWCJLr8cWwX9oH\n" + "qSmIylgcWvDpVNHx4v506DTTrbK0sbYRQYXRajOzJKeTt7NLeLrngyl45FrI9VAT\n" + "3yqp/2BCG1dUwcBha3dB2UbTkFOMt9o/gqoL6KvgswYMs/oGc/OIjeozdYuhnBT2\n" + "YlT9Ge5pfhOJWXh4DJbxnTmWwRUKq0MXFn0S00KQ/BZOTkc/5DibUmbmMrYi8ra4\n" + "Z2bpnoTq0WNA99O2Lk8IgmkqPdi6HwZwKCE/x01qwP8zo76rvN8sbW9pj2WzS1WF\n" + "tSDPeZECAwEAAaOCBBwwggQYMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYE\n" + "FPwbdyds7Cm03lobLKmI6q59npi+MAsGA1UdDwQEAwIBhjASBgkrBgEEAYI3FQEE\n" + "BQIDAQABMCMGCSsGAQQBgjcVAgQWBBRT1n27C6cZL4QFHaUX2nFSCPxhtTAZBgkr\n" + "BgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAfBgNVHSMEGDAWgBRp6zCRHAOAgE4RFYhG\n" + "pOJBmtNpHzCCAaIGA1UdHwSCAZkwggGVMIIBkaCCAY2gggGJhlFodHRwOi8vd3d3\n" + "LmludGVsLmNvbS9yZXBvc2l0b3J5L0NSTC9JbnRlbCUyMEludHJhbmV0JTIwQmFz\n" + "aWMlMjBQb2xpY3klMjBDQSgxKS5jcmyGWmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuaW50\n" + "ZWwuY29tL3JlcG9zaXRvcnkvQ1JML0ludGVsJTIwSW50cmFuZXQlMjBCYXNpYyUy\n" + "MFBvbGljeSUyMENBKDEpLmNybIaB12xkYXA6Ly8vQ049SW50ZWwlMjBJbnRyYW5l\n" + "dCUyMEJhc2ljJTIwUG9saWN5JTIwQ0EoMSksQ049bWNzaWJwY2EsQ049Q0RQLENO\n" + "PVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZpZ3Vy\n" + "YXRpb24sREM9Y29ycCxEQz1pbnRlbCxEQz1jb20/Y2VydGlmaWNhdGVSZXZvY2F0\n" + "aW9uTGlzdD9iYXNlP29iamVjdENsYXNzPWNSTERpc3RyaWJ1dGlvblBvaW50MIIB\n" + "uQYIKwYBBQUHAQEEggGrMIIBpzBmBggrBgEFBQcwAoZaaHR0cDovL3d3dy5pbnRl\n" + "bC5jb20vcmVwb3NpdG9yeS9jZXJ0aWZpY2F0ZXMvSW50ZWwlMjBJbnRyYW5ldCUy\n" + "MEJhc2ljJTIwUG9saWN5JTIwQ0EoMSkuY3J0MG8GCCsGAQUFBzAChmNodHRwOi8v\n" + "Y2VydGlmaWNhdGVzLmludGVsLmNvbS9yZXBvc2l0b3J5L2NlcnRpZmljYXRlcy9J\n" + "bnRlbCUyMEludHJhbmV0JTIwQmFzaWMlMjBQb2xpY3klMjBDQSgxKS5jcnQwgcsG\n" + "CCsGAQUFBzAChoG+bGRhcDovLy9DTj1JbnRlbCUyMEludHJhbmV0JTIwQmFzaWMl\n" + "MjBQb2xpY3klMjBDQSxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMs\n" + "Q049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1jb3JwLERDPWludGVsLERD\n" + "PWNvbT9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2VydGlmaWNhdGlv\n" + "bkF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAQEArlAkrJXyMCssqAJT3PqnY7wt\n" + "sirq1fTMrVrHdmkpBKDXBQnDcTW1zfZtOPV/QDm3UsFwDBbGq+j/7U9qZ1zYHkv+\n" + "wrBpeFM6dlca/sgegGGAhYnQQwmlSzNXCKHMBltMjT61X8rVjyt1XJnucgat9rnT\n" + "2j8pztqoViVnORsGfT6DDB/bz/6bFKw4FMp1wDaJI7dKh5NUggvH36owTWI7JUvq\n" + "yJ8OI2qmjXrlqGexfwvltIkEk8xzuMIHWQoR8sERL2qf3nb2VYq1s1LbH5uCkZ0l\n" + "w/xgwFbbwjaGJ3TFOmkVKYU77nXSkfK9EXae0UZRU0WmX4t5NNt8jiL56TPpsw==\n" + "-----END CERTIFICATE-----\n", "-----BEGIN CERTIFICATE-----\n" - "MIIHIzCCBgugAwIBAgIKYRok3wABAAAADDANBgkqhkiG9w0BAQUFADBSMQswCQYD\n" - "VQQGEwJVUzEaMBgGA1UEChMRSW50ZWwgQ29ycG9yYXRpb24xJzAlBgNVBAMTHklu\n" - "dGVsIEludHJhbmV0IEJhc2ljIFBvbGljeSBDQTAeFw0wNjA1MjQxOTU2MDFaFw0x\n" - "MjA1MjQyMDA2MDFaMFYxCzAJBgNVBAYTAlVTMRowGAYDVQQKExFJbnRlbCBDb3Jw\n" - "b3JhdGlvbjErMCkGA1UEAxMiSW50ZWwgSW50cmFuZXQgQmFzaWMgSXNzdWluZyBD\n" - "QSAyQjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANE2pFSB0XqXoRWF\n" - "N7bzDesBAcTGEqcr6GVA+sMcJ5Vt17S8vGesmO2RgP6I49Q58nIhUnT054arUlOx\n" - "NKYbAEiVyGOK5zV2mZS4oW2UazfcpsV1uuO3j02UbzX+qcxQdNqoAHxwoB4nRJuU\n" - "Ijio45jWAssDbD8IKHZpmqRI5wUzbibkWnTZEc0YFO6iF40sNtqVr+uInP07PkQn\n" - "1Ttkyw6isa5Dhcyq6lTVOjnlj29bFYbZxN1uuDnTpUMVeov8oQv5wLyLrDVd1sMg\n" - "Njr2oofepZ8KjF3DKCkfsUekCHA9Pr2K/4hStd/nSwvIdNjCjfznqYadkB6wQ99a\n" - "hTX4uJkCAwEAAaOCA/UwggPxMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYE\n" - "FJunwCR+/af8p76CGTyhUZc3l/4DMAsGA1UdDwQEAwIBhjAQBgkrBgEEAYI3FQEE\n" - "AwIBADAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAfBgNVHSMEGDAWgBRp6zCR\n" - "HAOAgE4RFYhGpOJBmtNpHzCCAaIGA1UdHwSCAZkwggGVMIIBkaCCAY2gggGJhlFo\n" - "dHRwOi8vd3d3LmludGVsLmNvbS9yZXBvc2l0b3J5L0NSTC9JbnRlbCUyMEludHJh\n" - "bmV0JTIwQmFzaWMlMjBQb2xpY3klMjBDQSgxKS5jcmyGWmh0dHA6Ly9jZXJ0aWZp\n" - "Y2F0ZXMuaW50ZWwuY29tL3JlcG9zaXRvcnkvQ1JML0ludGVsJTIwSW50cmFuZXQl\n" - "MjBCYXNpYyUyMFBvbGljeSUyMENBKDEpLmNybIaB12xkYXA6Ly8vQ049SW50ZWwl\n" - "MjBJbnRyYW5ldCUyMEJhc2ljJTIwUG9saWN5JTIwQ0EoMSksQ049bWNzaWJwY2Es\n" - "Q049Q0RQLENOPVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENO\n" - "PUNvbmZpZ3VyYXRpb24sREM9Y29ycCxEQz1pbnRlbCxEQz1jb20/Y2VydGlmaWNh\n" - "dGVSZXZvY2F0aW9uTGlzdD9iYXNlP29iamVjdENsYXNzPWNSTERpc3RyaWJ1dGlv\n" - "blBvaW50MIIBuQYIKwYBBQUHAQEEggGrMIIBpzBmBggrBgEFBQcwAoZaaHR0cDov\n" - "L3d3dy5pbnRlbC5jb20vcmVwb3NpdG9yeS9jZXJ0aWZpY2F0ZXMvSW50ZWwlMjBJ\n" - "bnRyYW5ldCUyMEJhc2ljJTIwUG9saWN5JTIwQ0EoMSkuY3J0MG8GCCsGAQUFBzAC\n" - "hmNodHRwOi8vY2VydGlmaWNhdGVzLmludGVsLmNvbS9yZXBvc2l0b3J5L2NlcnRp\n" - "ZmljYXRlcy9JbnRlbCUyMEludHJhbmV0JTIwQmFzaWMlMjBQb2xpY3klMjBDQSgx\n" - "KS5jcnQwgcsGCCsGAQUFBzAChoG+bGRhcDovLy9DTj1JbnRlbCUyMEludHJhbmV0\n" - "JTIwQmFzaWMlMjBQb2xpY3klMjBDQSxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIw\n" - "U2VydmljZXMsQ049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1jb3JwLERD\n" - "PWludGVsLERDPWNvbT9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2Vy\n" - "dGlmaWNhdGlvbkF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAQEAe3SmN0lsGF0h\n" - "zq+NANnUD4YJS31UqreVm4kJv07+9CTBtlB0AVqJ2RcjRosdQmrbhx7R0WwcXSdR\n" - "QnRGhaoDVRNehKiz3Grp6ehJr9LInhCp6WtOeKRlOSb2xgRDJCtzCi07TuAb9h2I\n" - "urpmndeA4NEbPYL1GYEBpKYawUcFCq5yTv0YgZXy53DdBDv9ygRWYGEk7/gPgvCu\n" - "2O1GNs9n25goy+3/aMkHnUyl3MOtiooXJR7eKOEgTPHNe42LQ9KuUz5SoZQN8vSL\n" - "r49IRDC4dgMkGvsC5h0+ftixQ66ni6QJe6SNcpSZrpW5vBE9J+vtDI0gTyq2SYPo\n" - "0fiS3V8p4g==\n" "-----END CERTIFICATE-----\n", + "MIIHIzCCBgugAwIBAgIKYRok3wABAAAADDANBgkqhkiG9w0BAQUFADBSMQswCQYD\n" + "VQQGEwJVUzEaMBgGA1UEChMRSW50ZWwgQ29ycG9yYXRpb24xJzAlBgNVBAMTHklu\n" + "dGVsIEludHJhbmV0IEJhc2ljIFBvbGljeSBDQTAeFw0wNjA1MjQxOTU2MDFaFw0x\n" + "MjA1MjQyMDA2MDFaMFYxCzAJBgNVBAYTAlVTMRowGAYDVQQKExFJbnRlbCBDb3Jw\n" + "b3JhdGlvbjErMCkGA1UEAxMiSW50ZWwgSW50cmFuZXQgQmFzaWMgSXNzdWluZyBD\n" + "QSAyQjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANE2pFSB0XqXoRWF\n" + "N7bzDesBAcTGEqcr6GVA+sMcJ5Vt17S8vGesmO2RgP6I49Q58nIhUnT054arUlOx\n" + "NKYbAEiVyGOK5zV2mZS4oW2UazfcpsV1uuO3j02UbzX+qcxQdNqoAHxwoB4nRJuU\n" + "Ijio45jWAssDbD8IKHZpmqRI5wUzbibkWnTZEc0YFO6iF40sNtqVr+uInP07PkQn\n" + "1Ttkyw6isa5Dhcyq6lTVOjnlj29bFYbZxN1uuDnTpUMVeov8oQv5wLyLrDVd1sMg\n" + "Njr2oofepZ8KjF3DKCkfsUekCHA9Pr2K/4hStd/nSwvIdNjCjfznqYadkB6wQ99a\n" + "hTX4uJkCAwEAAaOCA/UwggPxMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYE\n" + "FJunwCR+/af8p76CGTyhUZc3l/4DMAsGA1UdDwQEAwIBhjAQBgkrBgEEAYI3FQEE\n" + "AwIBADAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAfBgNVHSMEGDAWgBRp6zCR\n" + "HAOAgE4RFYhGpOJBmtNpHzCCAaIGA1UdHwSCAZkwggGVMIIBkaCCAY2gggGJhlFo\n" + "dHRwOi8vd3d3LmludGVsLmNvbS9yZXBvc2l0b3J5L0NSTC9JbnRlbCUyMEludHJh\n" + "bmV0JTIwQmFzaWMlMjBQb2xpY3klMjBDQSgxKS5jcmyGWmh0dHA6Ly9jZXJ0aWZp\n" + "Y2F0ZXMuaW50ZWwuY29tL3JlcG9zaXRvcnkvQ1JML0ludGVsJTIwSW50cmFuZXQl\n" + "MjBCYXNpYyUyMFBvbGljeSUyMENBKDEpLmNybIaB12xkYXA6Ly8vQ049SW50ZWwl\n" + "MjBJbnRyYW5ldCUyMEJhc2ljJTIwUG9saWN5JTIwQ0EoMSksQ049bWNzaWJwY2Es\n" + "Q049Q0RQLENOPVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENO\n" + "PUNvbmZpZ3VyYXRpb24sREM9Y29ycCxEQz1pbnRlbCxEQz1jb20/Y2VydGlmaWNh\n" + "dGVSZXZvY2F0aW9uTGlzdD9iYXNlP29iamVjdENsYXNzPWNSTERpc3RyaWJ1dGlv\n" + "blBvaW50MIIBuQYIKwYBBQUHAQEEggGrMIIBpzBmBggrBgEFBQcwAoZaaHR0cDov\n" + "L3d3dy5pbnRlbC5jb20vcmVwb3NpdG9yeS9jZXJ0aWZpY2F0ZXMvSW50ZWwlMjBJ\n" + "bnRyYW5ldCUyMEJhc2ljJTIwUG9saWN5JTIwQ0EoMSkuY3J0MG8GCCsGAQUFBzAC\n" + "hmNodHRwOi8vY2VydGlmaWNhdGVzLmludGVsLmNvbS9yZXBvc2l0b3J5L2NlcnRp\n" + "ZmljYXRlcy9JbnRlbCUyMEludHJhbmV0JTIwQmFzaWMlMjBQb2xpY3klMjBDQSgx\n" + "KS5jcnQwgcsGCCsGAQUFBzAChoG+bGRhcDovLy9DTj1JbnRlbCUyMEludHJhbmV0\n" + "JTIwQmFzaWMlMjBQb2xpY3klMjBDQSxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIw\n" + "U2VydmljZXMsQ049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1jb3JwLERD\n" + "PWludGVsLERDPWNvbT9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2Vy\n" + "dGlmaWNhdGlvbkF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAQEAe3SmN0lsGF0h\n" + "zq+NANnUD4YJS31UqreVm4kJv07+9CTBtlB0AVqJ2RcjRosdQmrbhx7R0WwcXSdR\n" + "QnRGhaoDVRNehKiz3Grp6ehJr9LInhCp6WtOeKRlOSb2xgRDJCtzCi07TuAb9h2I\n" + "urpmndeA4NEbPYL1GYEBpKYawUcFCq5yTv0YgZXy53DdBDv9ygRWYGEk7/gPgvCu\n" + "2O1GNs9n25goy+3/aMkHnUyl3MOtiooXJR7eKOEgTPHNe42LQ9KuUz5SoZQN8vSL\n" + "r49IRDC4dgMkGvsC5h0+ftixQ66ni6QJe6SNcpSZrpW5vBE9J+vtDI0gTyq2SYPo\n" + "0fiS3V8p4g==\n" + "-----END CERTIFICATE-----\n", NULL }; @@ -174,7 +175,7 @@ static const char *ca_list[MAX_CHAIN] = { verifying certificates. To avoid a time bomb, we hard code the current time. This should work fine on systems where the library call to time is resolved at run-time. */ -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1256803113; @@ -191,9 +192,9 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "|<%d>| %s", level, str); } -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (attempt == 0) { strcpy(pin, PIN); @@ -219,7 +220,7 @@ void doit(void) if (gnutls_fips140_mode_enabled()) exit(77); - /* The overloading of time() seems to work in linux (ELF?) + /* The overloading of time() seems to work in linux (ELF?) * systems only. Disable it on windows. */ #ifdef _WIN32 @@ -243,8 +244,9 @@ void doit(void) set_softhsm_conf(CONFIG); snprintf(buf, sizeof(buf), - "%s --init-token --slot 0 --label test --so-pin " PIN " --pin " - PIN, bin); + "%s --init-token --slot 0 --label test --so-pin " PIN + " --pin " PIN, + bin); system(buf); ret = gnutls_pkcs11_add_provider(lib, "trusted"); @@ -260,8 +262,7 @@ void doit(void) ret = gnutls_x509_crt_init(&certs[j]); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_init[%d,%d]: %s\n", + fprintf(stderr, "gnutls_x509_crt_init[%d,%d]: %s\n", (int)3, (int)j, gnutls_strerror(ret)); exit(1); } @@ -269,21 +270,20 @@ void doit(void) tmp.data = (unsigned char *)ca_list[j]; tmp.size = strlen(ca_list[j]); - ret = - gnutls_x509_crt_import(certs[j], &tmp, GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(certs[j], &tmp, + GNUTLS_X509_FMT_PEM); if (debug > 2) printf("done\n"); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_import[%d]: %s\n", + fprintf(stderr, "gnutls_x509_crt_import[%d]: %s\n", (int)j, gnutls_strerror(ret)); exit(1); } gnutls_x509_crt_print(certs[j], GNUTLS_CRT_PRINT_ONELINE, &tmp); if (debug) - printf("\tCertificate %d: %.*s\n", (int)j, - tmp.size, tmp.data); + printf("\tCertificate %d: %.*s\n", (int)j, tmp.size, + tmp.data); gnutls_free(tmp.data); } @@ -351,11 +351,10 @@ void doit(void) for (j = 0; ca_list[j]; j++) { char name[64]; snprintf(name, sizeof(name), "test-ca%d", j); - ret = - gnutls_pkcs11_copy_x509_crt(SOFTHSM_URL, certs[j], name, - GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED - | - GNUTLS_PKCS11_OBJ_FLAG_LOGIN_SO); + ret = gnutls_pkcs11_copy_x509_crt( + SOFTHSM_URL, certs[j], name, + GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED | + GNUTLS_PKCS11_OBJ_FLAG_LOGIN_SO); if (ret < 0) { fail("gnutls_pkcs11_copy_x509_crt: %s\n", gnutls_strerror(ret)); @@ -365,9 +364,8 @@ void doit(void) gnutls_x509_trust_list_init(&tl, 0); - ret = - gnutls_x509_trust_list_add_trust_file(tl, SOFTHSM_URL, NULL, 0, 0, - 0); + ret = gnutls_x509_trust_list_add_trust_file(tl, SOFTHSM_URL, NULL, 0, 0, + 0); if (ret < 0) { fail("gnutls_x509_trust_list_add_trust_file\n"); exit(1); @@ -380,28 +378,26 @@ void doit(void) } /* extract the issuer of the certificate */ - ret = - gnutls_x509_trust_list_get_issuer(tl, end, &issuer, - GNUTLS_TL_GET_COPY); + ret = gnutls_x509_trust_list_get_issuer(tl, end, &issuer, + GNUTLS_TL_GET_COPY); if (ret < 0) { fail("gnutls_x509_trust_list_get_issuer should have succeeded\n"); exit(1); } gnutls_x509_crt_deinit(issuer); - ret = - gnutls_pkcs11_crt_is_known(SOFTHSM_URL, ca, - GNUTLS_PKCS11_OBJ_FLAG_COMPARE_KEY | - GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED); + ret = gnutls_pkcs11_crt_is_known( + SOFTHSM_URL, ca, + GNUTLS_PKCS11_OBJ_FLAG_COMPARE_KEY | + GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED); if (ret != 0) { fail("gnutls_pkcs11_crt_is_known should have failed!\n"); exit(1); } - ret = gnutls_x509_trust_list_verify_crt2(tl, &end, 1, - NULL, 0, - GNUTLS_VERIFY_DISABLE_TIME_CHECKS, - &verify_status, NULL); + ret = gnutls_x509_trust_list_verify_crt2( + tl, &end, 1, NULL, 0, GNUTLS_VERIFY_DISABLE_TIME_CHECKS, + &verify_status, NULL); if (ret < 0) { fail("gnutls_x509_trust_list_verify_crt2 should have succeeded\n"); exit(1); diff --git a/tests/pkcs11/pkcs11-ec-privkey-test.c b/tests/pkcs11/pkcs11-ec-privkey-test.c index 20ab233eaf..1d3f90c33e 100644 --- a/tests/pkcs11/pkcs11-ec-privkey-test.c +++ b/tests/pkcs11/pkcs11-ec-privkey-test.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -37,7 +37,7 @@ #include "softhsm.h" #define CONFIG_NAME "softhsm-privkey-ecdsa-test" -#define CONFIG CONFIG_NAME".config" +#define CONFIG CONFIG_NAME ".config" /* Tests whether signing with PKCS#11 may produce signed (invalid) * INTEGER values in DSASignatureValue. */ @@ -53,9 +53,9 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "|<%d>| %s", level, str); } -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (attempt == 0) { strcpy(pin, PIN); @@ -64,8 +64,8 @@ int pin_func(void *userdata, int attempt, const char *url, const char *label, return -1; } -int _gnutls_decode_ber_rs_raw(const gnutls_datum_t * sig_value, - gnutls_datum_t * r, gnutls_datum_t * s); +int _gnutls_decode_ber_rs_raw(const gnutls_datum_t *sig_value, + gnutls_datum_t *r, gnutls_datum_t *s); void doit(void) { @@ -102,8 +102,9 @@ void doit(void) set_softhsm_conf(CONFIG); snprintf(buf, sizeof(buf), - "%s --init-token --slot 0 --label test --so-pin " PIN " --pin " - PIN, bin); + "%s --init-token --slot 0 --label test --so-pin " PIN + " --pin " PIN, + bin); system(buf); ret = gnutls_pkcs11_add_provider(lib, "trusted"); @@ -115,16 +116,16 @@ void doit(void) ret = gnutls_x509_crt_init(&crt); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_init: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_crt_init: %s\n", + gnutls_strerror(ret)); exit(1); } - ret = - gnutls_x509_crt_import(crt, &server_ecc_cert, GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(crt, &server_ecc_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_import: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_crt_import: %s\n", + gnutls_strerror(ret)); exit(1); } @@ -137,17 +138,15 @@ void doit(void) ret = gnutls_x509_privkey_init(&key); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_privkey_init: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_privkey_init: %s\n", + gnutls_strerror(ret)); exit(1); } - ret = - gnutls_x509_privkey_import(key, &server_ecc_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_privkey_import(key, &server_ecc_key, + GNUTLS_X509_FMT_PEM); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_privkey_import: %s\n", + fprintf(stderr, "gnutls_x509_privkey_import: %s\n", gnutls_strerror(ret)); exit(1); } @@ -159,9 +158,8 @@ void doit(void) exit(1); } - ret = - gnutls_pkcs11_token_set_pin(SOFTHSM_URL, NULL, PIN, - GNUTLS_PIN_USER); + ret = gnutls_pkcs11_token_set_pin(SOFTHSM_URL, NULL, PIN, + GNUTLS_PIN_USER); if (ret < 0) { fail("gnutls_pkcs11_token_set_pin: %s\n", gnutls_strerror(ret)); exit(1); @@ -169,20 +167,18 @@ void doit(void) ret = gnutls_pkcs11_copy_x509_crt(SOFTHSM_URL, crt, "cert", GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE | - GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { fail("gnutls_pkcs11_copy_x509_crt: %s\n", gnutls_strerror(ret)); exit(1); } - ret = - gnutls_pkcs11_copy_x509_privkey(SOFTHSM_URL, key, "cert", - GNUTLS_KEY_DIGITAL_SIGNATURE | - GNUTLS_KEY_KEY_ENCIPHERMENT, - GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE - | - GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE - | GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + ret = gnutls_pkcs11_copy_x509_privkey( + SOFTHSM_URL, key, "cert", + GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT, + GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE | + GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE | + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { fail("gnutls_pkcs11_copy_x509_privkey: %s\n", gnutls_strerror(ret)); @@ -193,9 +189,9 @@ void doit(void) assert(gnutls_pubkey_init(&pubkey) == 0); assert(gnutls_pubkey_import_x509(pubkey, crt, 0) == 0); - ret = gnutls_pkcs11_copy_pubkey(SOFTHSM_URL, pubkey, "cert", NULL, - GNUTLS_KEY_DIGITAL_SIGNATURE | - GNUTLS_KEY_KEY_ENCIPHERMENT, 0); + ret = gnutls_pkcs11_copy_pubkey( + SOFTHSM_URL, pubkey, "cert", NULL, + GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT, 0); if (ret < 0) { fail("gnutls_pkcs11_copy_pubkey: %s\n", gnutls_strerror(ret)); } @@ -207,11 +203,9 @@ void doit(void) assert(gnutls_privkey_init(&pkey) == 0); - ret = - gnutls_privkey_import_pkcs11_url(pkey, - SOFTHSM_URL - ";object=cert;object-type=private;pin-value=" - PIN); + ret = gnutls_privkey_import_pkcs11_url( + pkey, + SOFTHSM_URL ";object=cert;object-type=private;pin-value=" PIN); if (ret < 0) { fprintf(stderr, "error in %d: %s\n", __LINE__, gnutls_strerror(ret)); @@ -221,11 +215,10 @@ void doit(void) /* Try to read the public key with public key URI */ assert(gnutls_pubkey_init(&pubkey3) == 0); - ret = - gnutls_pubkey_import_pkcs11_url(pubkey3, - SOFTHSM_URL - ";object=cert;object-type=public;pin-value=" - PIN, 0); + ret = gnutls_pubkey_import_pkcs11_url( + pubkey3, + SOFTHSM_URL ";object=cert;object-type=public;pin-value=" PIN, + 0); if (ret < 0) { fail("error in gnutls_pubkey_import_pkcs11_url: %s\n", gnutls_strerror(ret)); @@ -234,11 +227,9 @@ void doit(void) /* Try to read the public key with certificate URI */ assert(gnutls_pubkey_init(&pubkey4) == 0); - ret = - gnutls_pubkey_import_pkcs11_url(pubkey4, - SOFTHSM_URL - ";object=cert;object-type=cert;pin-value=" - PIN, 0); + ret = gnutls_pubkey_import_pkcs11_url( + pubkey4, + SOFTHSM_URL ";object=cert;object-type=cert;pin-value=" PIN, 0); if (ret < 0) { fail("error in gnutls_pubkey_import_pkcs11_url: %s\n", gnutls_strerror(ret)); @@ -250,8 +241,8 @@ void doit(void) pk = gnutls_pubkey_get_pk_algorithm(pubkey, NULL); assert(gnutls_pubkey_init(&pubkey2) == 0); - assert(gnutls_pubkey_import_x509_raw - (pubkey2, &server_ecc_cert, GNUTLS_X509_FMT_PEM, 0) == 0); + assert(gnutls_pubkey_import_x509_raw(pubkey2, &server_ecc_cert, + GNUTLS_X509_FMT_PEM, 0) == 0); for (i = 0; i < 100; i++) { gnutls_datum_t r = { NULL, 0 }; @@ -259,8 +250,8 @@ void doit(void) /* check whether privkey and pubkey are operational * by signing and verifying */ - assert(gnutls_privkey_sign_data - (pkey, GNUTLS_DIG_SHA256, 0, &testdata, &sig) == 0); + assert(gnutls_privkey_sign_data(pkey, GNUTLS_DIG_SHA256, 0, + &testdata, &sig) == 0); assert(_gnutls_decode_ber_rs_raw(&sig, &r, &s) == 0); if (r.data[0] >= 0x80) { @@ -272,14 +263,15 @@ void doit(void) } /* verify against the raw pubkey */ - assert(gnutls_pubkey_verify_data2 - (pubkey2, gnutls_pk_to_sign(pk, GNUTLS_DIG_SHA256), 0, - &testdata, &sig) == 0); + assert(gnutls_pubkey_verify_data2( + pubkey2, + gnutls_pk_to_sign(pk, GNUTLS_DIG_SHA256), 0, + &testdata, &sig) == 0); /* verify against the pubkey in PKCS #11 */ - assert(gnutls_pubkey_verify_data2 - (pubkey, gnutls_pk_to_sign(pk, GNUTLS_DIG_SHA256), 0, - &testdata, &sig) == 0); + assert(gnutls_pubkey_verify_data2( + pubkey, gnutls_pk_to_sign(pk, GNUTLS_DIG_SHA256), + 0, &testdata, &sig) == 0); gnutls_free(sig.data); gnutls_free(r.data); diff --git a/tests/pkcs11/pkcs11-eddsa-privkey-test.c b/tests/pkcs11/pkcs11-eddsa-privkey-test.c index 478125a761..c1bc81e5e9 100644 --- a/tests/pkcs11/pkcs11-eddsa-privkey-test.c +++ b/tests/pkcs11/pkcs11-eddsa-privkey-test.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -37,7 +37,7 @@ #include "softhsm.h" #define CONFIG_NAME "softhsm-privkey-eddsa-test" -#define CONFIG CONFIG_NAME".config" +#define CONFIG CONFIG_NAME ".config" /* Tests whether signing with PKCS#11 and EDDSA would * generate valid signatures */ @@ -53,9 +53,9 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "|<%d>| %s", level, str); } -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (attempt == 0) { strcpy(pin, PIN); @@ -64,8 +64,9 @@ int pin_func(void *userdata, int attempt, const char *url, const char *label, return -1; } -#define myfail(fmt, ...) \ - fail("%s (iter %d): "fmt, gnutls_sign_get_name(sigalgo), i, ##__VA_ARGS__) +#define myfail(fmt, ...) \ + fail("%s (iter %d): " fmt, gnutls_sign_get_name(sigalgo), i, \ + ##__VA_ARGS__) static unsigned verify_eddsa_presence(void) { @@ -75,10 +76,9 @@ static unsigned verify_eddsa_presence(void) i = 0; do { - ret = - gnutls_pkcs11_token_get_mechanism("pkcs11:", i++, - &mechanism); - if (ret >= 0 && mechanism == 0x1057 /* CKM_EDDSA */ ) + ret = gnutls_pkcs11_token_get_mechanism("pkcs11:", i++, + &mechanism); + if (ret >= 0 && mechanism == 0x1057 /* CKM_EDDSA */) return 1; } while (ret >= 0); @@ -121,8 +121,9 @@ void doit(void) set_softhsm_conf(CONFIG); snprintf(buf, sizeof(buf), - "%s --init-token --slot 0 --label test --so-pin " PIN " --pin " - PIN, bin); + "%s --init-token --slot 0 --label test --so-pin " PIN + " --pin " PIN, + bin); system(buf); ret = gnutls_pkcs11_add_provider(lib, NULL); @@ -140,9 +141,8 @@ void doit(void) if (ret < 0) fail("gnutls_x509_crt_init: %s\n", gnutls_strerror(ret)); - ret = - gnutls_x509_crt_import(crt, &server_ca3_eddsa_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(crt, &server_ca3_eddsa_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) fail("gnutls_x509_crt_import: %s\n", gnutls_strerror(ret)); @@ -158,9 +158,8 @@ void doit(void) fail("gnutls_x509_privkey_init: %s\n", gnutls_strerror(ret)); } - ret = - gnutls_x509_privkey_import(key, &server_ca3_eddsa_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_privkey_import(key, &server_ca3_eddsa_key, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("gnutls_x509_privkey_import: %s\n", gnutls_strerror(ret)); } @@ -171,28 +170,25 @@ void doit(void) fail("gnutls_pkcs11_token_init: %s\n", gnutls_strerror(ret)); } - ret = - gnutls_pkcs11_token_set_pin(SOFTHSM_URL, NULL, PIN, - GNUTLS_PIN_USER); + ret = gnutls_pkcs11_token_set_pin(SOFTHSM_URL, NULL, PIN, + GNUTLS_PIN_USER); if (ret < 0) { fail("gnutls_pkcs11_token_set_pin: %s\n", gnutls_strerror(ret)); } ret = gnutls_pkcs11_copy_x509_crt(SOFTHSM_URL, crt, "cert", GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE | - GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { fail("gnutls_pkcs11_copy_x509_crt: %s\n", gnutls_strerror(ret)); } - ret = - gnutls_pkcs11_copy_x509_privkey(SOFTHSM_URL, key, "cert", - GNUTLS_KEY_DIGITAL_SIGNATURE | - GNUTLS_KEY_KEY_ENCIPHERMENT, - GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE - | - GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE - | GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + ret = gnutls_pkcs11_copy_x509_privkey( + SOFTHSM_URL, key, "cert", + GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT, + GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE | + GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE | + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { fail("gnutls_pkcs11_copy_x509_privkey: %s\n", gnutls_strerror(ret)); @@ -202,9 +198,9 @@ void doit(void) assert(gnutls_pubkey_init(&pubkey) == 0); assert(gnutls_pubkey_import_x509(pubkey, crt, 0) == 0); - ret = gnutls_pkcs11_copy_pubkey(SOFTHSM_URL, pubkey, "cert", NULL, - GNUTLS_KEY_DIGITAL_SIGNATURE | - GNUTLS_KEY_KEY_ENCIPHERMENT, 0); + ret = gnutls_pkcs11_copy_pubkey( + SOFTHSM_URL, pubkey, "cert", NULL, + GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT, 0); if (ret < 0) { fail("gnutls_pkcs11_copy_pubkey: %s\n", gnutls_strerror(ret)); } @@ -216,11 +212,9 @@ void doit(void) assert(gnutls_privkey_init(&pkey) == 0); - ret = - gnutls_privkey_import_pkcs11_url(pkey, - SOFTHSM_URL - ";object=cert;object-type=private;pin-value=" - PIN); + ret = gnutls_privkey_import_pkcs11_url( + pkey, + SOFTHSM_URL ";object=cert;object-type=private;pin-value=" PIN); if (ret < 0) { fail("error in gnutls_privkey_import_pkcs11_url: %s\n", gnutls_strerror(ret)); @@ -229,11 +223,10 @@ void doit(void) /* Try to read the public key with public key URI */ assert(gnutls_pubkey_init(&pubkey3) == 0); - ret = - gnutls_pubkey_import_pkcs11_url(pubkey3, - SOFTHSM_URL - ";object=cert;object-type=public;pin-value=" - PIN, 0); + ret = gnutls_pubkey_import_pkcs11_url( + pubkey3, + SOFTHSM_URL ";object=cert;object-type=public;pin-value=" PIN, + 0); if (ret < 0) { fail("error in gnutls_pubkey_import_pkcs11_url: %s\n", gnutls_strerror(ret)); @@ -242,11 +235,9 @@ void doit(void) /* Try to read the public key with certificate URI */ assert(gnutls_pubkey_init(&pubkey4) == 0); - ret = - gnutls_pubkey_import_pkcs11_url(pubkey4, - SOFTHSM_URL - ";object=cert;object-type=cert;pin-value=" - PIN, 0); + ret = gnutls_pubkey_import_pkcs11_url( + pubkey4, + SOFTHSM_URL ";object=cert;object-type=cert;pin-value=" PIN, 0); if (ret < 0) { fail("error in gnutls_pubkey_import_pkcs11_url: %s\n", gnutls_strerror(ret)); @@ -256,8 +247,8 @@ void doit(void) assert(gnutls_pubkey_import_privkey(pubkey, pkey, 0, 0) == 0); assert(gnutls_pubkey_init(&pubkey2) == 0); - assert(gnutls_pubkey_import_x509_raw - (pubkey2, &server_ca3_eddsa_cert, GNUTLS_X509_FMT_PEM, 0) == 0); + assert(gnutls_pubkey_import_x509_raw(pubkey2, &server_ca3_eddsa_cert, + GNUTLS_X509_FMT_PEM, 0) == 0); /* this is the algorithm supported by the certificate */ sigalgo = GNUTLS_SIGN_EDDSA_ED25519; @@ -265,24 +256,21 @@ void doit(void) for (i = 0; i < 20; i++) { /* check whether privkey and pubkey are operational * by signing and verifying */ - ret = - gnutls_privkey_sign_data2(pkey, sigalgo, 0, - &testdata, &sig); + ret = gnutls_privkey_sign_data2(pkey, sigalgo, 0, &testdata, + &sig); if (ret < 0) myfail("Error signing data %s\n", gnutls_strerror(ret)); /* verify against the pubkey in PKCS #11 */ - ret = - gnutls_pubkey_verify_data2(pubkey, sigalgo, 0, - &testdata, &sig); + ret = gnutls_pubkey_verify_data2(pubkey, sigalgo, 0, &testdata, + &sig); if (ret < 0) myfail("Error verifying data1: %s\n", gnutls_strerror(ret)); /* verify against the raw pubkey */ - ret = - gnutls_pubkey_verify_data2(pubkey2, sigalgo, 0, - &testdata, &sig); + ret = gnutls_pubkey_verify_data2(pubkey2, sigalgo, 0, &testdata, + &sig); if (ret < 0) myfail("Error verifying data2: %s\n", gnutls_strerror(ret)); diff --git a/tests/pkcs11/pkcs11-get-exts.c b/tests/pkcs11/pkcs11-get-exts.c index 9af48373b1..a2a3d99802 100644 --- a/tests/pkcs11/pkcs11-get-exts.c +++ b/tests/pkcs11/pkcs11-get-exts.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -38,9 +38,9 @@ /* Tests the gnutls_pkcs11_obj_get_exts API */ #ifdef _WIN32 -# define P11LIB "libpkcs11mock1.dll" +#define P11LIB "libpkcs11mock1.dll" #else -# define P11LIB "libpkcs11mock1.so" +#define P11LIB "libpkcs11mock1.so" #endif void doit(void) @@ -81,9 +81,8 @@ void doit(void) assert(gnutls_pkcs11_obj_init(&obj) >= 0); /* check extensions */ - ret = - gnutls_pkcs11_obj_import_url(obj, "pkcs11:type=cert;object=cert1", - 0); + ret = gnutls_pkcs11_obj_import_url(obj, "pkcs11:type=cert;object=cert1", + 0); if (ret < 0) { fail("%d: %s\n", ret, gnutls_strerror(ret)); exit(1); @@ -108,9 +107,8 @@ void doit(void) { unsigned ca; int pathlen; - ret = - gnutls_x509_ext_import_basic_constraints(&exts[0].data, &ca, - &pathlen); + ret = gnutls_x509_ext_import_basic_constraints(&exts[0].data, + &ca, &pathlen); if (ret < 0) { fail("%d: %s\n", ret, gnutls_strerror(ret)); exit(1); @@ -129,8 +127,8 @@ void doit(void) { unsigned keyusage; - ret = - gnutls_x509_ext_import_key_usage(&exts[1].data, &keyusage); + ret = gnutls_x509_ext_import_key_usage(&exts[1].data, + &keyusage); if (ret < 0) { fail("%d: %s\n", ret, gnutls_strerror(ret)); exit(1); diff --git a/tests/pkcs11/pkcs11-get-issuer.c b/tests/pkcs11/pkcs11-get-issuer.c index 4eb19d2a04..5c032b34a2 100644 --- a/tests/pkcs11/pkcs11-get-issuer.c +++ b/tests/pkcs11/pkcs11-get-issuer.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -42,7 +42,7 @@ verifying certificates. To avoid a time bomb, we hard code the current time. This should work fine on systems where the library call to time is resolved at run-time. */ -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1256803113; @@ -59,9 +59,9 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "|<%d>| %s", level, str); } -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (attempt == 0) { strcpy(pin, PIN); @@ -87,7 +87,7 @@ void doit(void) if (gnutls_fips140_mode_enabled()) exit(77); - /* The overloading of time() seems to work in linux (ELF?) + /* The overloading of time() seems to work in linux (ELF?) * systems only. Disable it on windows. */ #ifdef _WIN32 @@ -127,8 +127,9 @@ void doit(void) set_softhsm_conf(CONFIG); snprintf(buf, sizeof(buf), - "%s --init-token --slot 0 --label test --so-pin " PIN " --pin " - PIN, bin); + "%s --init-token --slot 0 --label test --so-pin " PIN + " --pin " PIN, + bin); system(buf); ret = gnutls_pkcs11_add_provider(lib, "trusted"); @@ -144,8 +145,7 @@ void doit(void) ret = gnutls_x509_crt_init(&certs[j]); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_init[%d,%d]: %s\n", + fprintf(stderr, "gnutls_x509_crt_init[%d,%d]: %s\n", (int)3, (int)j, gnutls_strerror(ret)); exit(1); } @@ -153,21 +153,20 @@ void doit(void) tmp.data = (unsigned char *)chains[idx].chain[j]; tmp.size = strlen(chains[idx].chain[j]); - ret = - gnutls_x509_crt_import(certs[j], &tmp, GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(certs[j], &tmp, + GNUTLS_X509_FMT_PEM); if (debug > 2) printf("done\n"); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_import[%s,%d]: %s\n", + fprintf(stderr, "gnutls_x509_crt_import[%s,%d]: %s\n", chains[idx].name, (int)j, gnutls_strerror(ret)); exit(1); } gnutls_x509_crt_print(certs[j], GNUTLS_CRT_PRINT_ONELINE, &tmp); if (debug) - printf("\tCertificate %d: %.*s\n", (int)j, - tmp.size, tmp.data); + printf("\tCertificate %d: %.*s\n", (int)j, tmp.size, + tmp.data); gnutls_free(tmp.data); } @@ -210,10 +209,10 @@ void doit(void) } /* write CA certificate to softhsm */ - ret = - gnutls_pkcs11_copy_x509_crt(SOFTHSM_URL, ca, "test-ca", - GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED | - GNUTLS_PKCS11_OBJ_FLAG_LOGIN_SO); + ret = gnutls_pkcs11_copy_x509_crt( + SOFTHSM_URL, ca, "test-ca", + GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED | + GNUTLS_PKCS11_OBJ_FLAG_LOGIN_SO); if (ret < 0) { fail("gnutls_pkcs11_copy_x509_crt: %s\n", gnutls_strerror(ret)); exit(1); @@ -221,9 +220,8 @@ void doit(void) gnutls_x509_trust_list_init(&tl, 0); - ret = - gnutls_x509_trust_list_add_trust_file(tl, SOFTHSM_URL, NULL, 0, 0, - 0); + ret = gnutls_x509_trust_list_add_trust_file(tl, SOFTHSM_URL, NULL, 0, 0, + 0); if (ret < 0) { fail("gnutls_x509_trust_list_add_trust_file\n"); exit(1); @@ -231,9 +229,8 @@ void doit(void) /* extract the issuer of the certificate */ issuer = NULL; - ret = - gnutls_x509_trust_list_get_issuer(tl, certs[2], &issuer, - GNUTLS_TL_GET_COPY); + ret = gnutls_x509_trust_list_get_issuer(tl, certs[2], &issuer, + GNUTLS_TL_GET_COPY); if (ret < 0) { fail("error in gnutls_x509_trust_list_get_issuer\n"); exit(1); diff --git a/tests/pkcs11/pkcs11-get-raw-issuer-exts.c b/tests/pkcs11/pkcs11-get-raw-issuer-exts.c index f0e36e733b..adf5c6e93c 100644 --- a/tests/pkcs11/pkcs11-get-raw-issuer-exts.c +++ b/tests/pkcs11/pkcs11-get-raw-issuer-exts.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -40,12 +40,12 @@ */ #ifdef _WIN32 -# define P11LIB "libpkcs11mock1.dll" +#define P11LIB "libpkcs11mock1.dll" #else -# define P11LIB "libpkcs11mock1.so" +#define P11LIB "libpkcs11mock1.so" #endif -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1424466893; @@ -95,17 +95,16 @@ void doit(void) assert(gnutls_x509_crt_init(&ocrt) >= 0); /* check high level certificate functions */ - ret = - gnutls_x509_crt_import_url(crt, "pkcs11:type=cert;object=cert1", 0); + ret = gnutls_x509_crt_import_url(crt, "pkcs11:type=cert;object=cert1", + 0); if (ret < 0) { fail("%d: %s\n", ret, gnutls_strerror(ret)); exit(1); } - ret = - gnutls_pkcs11_get_raw_issuer("pkcs11:", crt, &issuer, - GNUTLS_X509_FMT_DER, - GNUTLS_PKCS11_OBJ_FLAG_OVERWRITE_TRUSTMOD_EXT); + ret = gnutls_pkcs11_get_raw_issuer( + "pkcs11:", crt, &issuer, GNUTLS_X509_FMT_DER, + GNUTLS_PKCS11_OBJ_FLAG_OVERWRITE_TRUSTMOD_EXT); if (ret < 0) { fail("%d: %s\n", ret, gnutls_strerror(ret)); exit(1); @@ -139,9 +138,8 @@ void doit(void) exit(1); } - if (keyusage != - (GNUTLS_KEY_KEY_ENCIPHERMENT | GNUTLS_KEY_ENCIPHER_ONLY | - GNUTLS_KEY_KEY_CERT_SIGN)) { + if (keyusage != (GNUTLS_KEY_KEY_ENCIPHERMENT | + GNUTLS_KEY_ENCIPHER_ONLY | GNUTLS_KEY_KEY_CERT_SIGN)) { fail("Extension does not have the expected key usage!\n"); } diff --git a/tests/pkcs11/pkcs11-import-url-privkey.c b/tests/pkcs11/pkcs11-import-url-privkey.c index caaa82d419..ebdffe04ad 100644 --- a/tests/pkcs11/pkcs11-import-url-privkey.c +++ b/tests/pkcs11/pkcs11-import-url-privkey.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -39,16 +39,16 @@ * some problematic cases. */ #ifdef ALL_CAPS_URI -# define PURI "PKCS11:" +#define PURI "PKCS11:" #else -# define PURI "pkcs11:" +#define PURI "pkcs11:" #endif #ifdef _WIN32 -# define P11LIB "libpkcs11mock1.dll" +#define P11LIB "libpkcs11mock1.dll" #else -# include -# define P11LIB "libpkcs11mock1.so" +#include +#define P11LIB "libpkcs11mock1.so" #endif void doit(void) @@ -81,9 +81,9 @@ void doit(void) exit(1); } - ret = - gnutls_pkcs11_obj_list_import_url4(&obj_list, &obj_list_size, PURI, - GNUTLS_PKCS11_OBJ_FLAG_PRIVKEY); + ret = gnutls_pkcs11_obj_list_import_url4( + &obj_list, &obj_list_size, PURI, + GNUTLS_PKCS11_OBJ_FLAG_PRIVKEY); if (ret < 0) { fail("%d: %s\n", ret, gnutls_strerror(ret)); exit(1); @@ -113,10 +113,9 @@ void doit(void) *pflags = MOCK_FLAG_BROKEN_GET_ATTRIBUTES; - ret = - gnutls_pkcs11_obj_list_import_url4(&obj_list, - &obj_list_size, PURI, - GNUTLS_PKCS11_OBJ_FLAG_PRIVKEY); + ret = gnutls_pkcs11_obj_list_import_url4( + &obj_list, &obj_list_size, PURI, + GNUTLS_PKCS11_OBJ_FLAG_PRIVKEY); if (ret < 0) { fail("%d: %s\n", ret, gnutls_strerror(ret)); exit(1); diff --git a/tests/pkcs11/pkcs11-import-with-pin.c b/tests/pkcs11/pkcs11-import-with-pin.c index cb1aadd3d4..c6f06c0610 100644 --- a/tests/pkcs11/pkcs11-import-with-pin.c +++ b/tests/pkcs11/pkcs11-import-with-pin.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -40,7 +40,7 @@ * pin-value or pin-source. */ #define CONFIG_NAME "softhsm-import-with-pin" -#define CONFIG CONFIG_NAME".config" +#define CONFIG CONFIG_NAME ".config" #include "../cert-common.h" @@ -53,9 +53,9 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "|<%d>| %s", level, str); } -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (attempt == 0) { strcpy(pin, PIN); @@ -102,8 +102,9 @@ void doit(void) set_softhsm_conf(CONFIG); snprintf(buf, sizeof(buf), - "%s --init-token --slot 0 --label test --so-pin " PIN " --pin " - PIN, bin); + "%s --init-token --slot 0 --label test --so-pin " PIN + " --pin " PIN, + bin); system(buf); ret = gnutls_pkcs11_add_provider(lib, "trusted"); @@ -114,15 +115,14 @@ void doit(void) ret = gnutls_x509_privkey_init(&key); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_privkey_init: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_privkey_init: %s\n", + gnutls_strerror(ret)); exit(1); } ret = gnutls_x509_privkey_import(key, &server_key, GNUTLS_X509_FMT_PEM); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_privkey_import: %s\n", + fprintf(stderr, "gnutls_x509_privkey_import: %s\n", gnutls_strerror(ret)); exit(1); } @@ -134,22 +134,19 @@ void doit(void) exit(1); } - ret = - gnutls_pkcs11_token_set_pin(SOFTHSM_URL, NULL, PIN, - GNUTLS_PIN_USER); + ret = gnutls_pkcs11_token_set_pin(SOFTHSM_URL, NULL, PIN, + GNUTLS_PIN_USER); if (ret < 0) { fail("gnutls_pkcs11_token_set_pin: %s\n", gnutls_strerror(ret)); exit(1); } - ret = - gnutls_pkcs11_copy_x509_privkey(SOFTHSM_URL, key, "cert", - GNUTLS_KEY_DIGITAL_SIGNATURE | - GNUTLS_KEY_KEY_ENCIPHERMENT, - GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE - | - GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE - | GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + ret = gnutls_pkcs11_copy_x509_privkey( + SOFTHSM_URL, key, "cert", + GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT, + GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE | + GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE | + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { fail("gnutls_pkcs11_copy_x509_privkey: %s\n", gnutls_strerror(ret)); @@ -163,10 +160,9 @@ void doit(void) /* Test 1 * Try importing with wrong pin-value */ - ret = - gnutls_privkey_import_pkcs11_url(pkey, - SOFTHSM_URL - ";object=cert;object-type=private;pin-value=XXXX"); + ret = gnutls_privkey_import_pkcs11_url( + pkey, + SOFTHSM_URL ";object=cert;object-type=private;pin-value=XXXX"); if (ret != GNUTLS_E_PKCS11_PIN_ERROR) { fprintf(stderr, "unexpected error in %d: %s\n", __LINE__, gnutls_strerror(ret)); @@ -177,11 +173,9 @@ void doit(void) /* Test 2 * Try importing with pin-value */ - ret = - gnutls_privkey_import_pkcs11_url(pkey, - SOFTHSM_URL - ";object=cert;object-type=private;pin-value=" - PIN); + ret = gnutls_privkey_import_pkcs11_url( + pkey, + SOFTHSM_URL ";object=cert;object-type=private;pin-value=" PIN); if (ret < 0) { fprintf(stderr, "error in %d: %s\n", __LINE__, gnutls_strerror(ret)); @@ -189,8 +183,8 @@ void doit(void) } /* check whether privkey is operational by signing */ - assert(gnutls_privkey_sign_data - (pkey, GNUTLS_DIG_SHA256, 0, &testdata, &sig) == 0); + assert(gnutls_privkey_sign_data(pkey, GNUTLS_DIG_SHA256, 0, &testdata, + &sig) == 0); gnutls_free(sig.data); gnutls_privkey_deinit(pkey); @@ -230,8 +224,8 @@ void doit(void) } /* check whether privkey is operational by signing */ - assert(gnutls_privkey_sign_data - (pkey, GNUTLS_DIG_SHA256, 0, &testdata, &sig) == 0); + assert(gnutls_privkey_sign_data(pkey, GNUTLS_DIG_SHA256, 0, &testdata, + &sig) == 0); gnutls_free(sig.data); gnutls_privkey_deinit(pkey); diff --git a/tests/pkcs11/pkcs11-is-known.c b/tests/pkcs11/pkcs11-is-known.c index 7301be35f7..fc471e3f1c 100644 --- a/tests/pkcs11/pkcs11-is-known.c +++ b/tests/pkcs11/pkcs11-is-known.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -38,276 +38,278 @@ #define MAX_CHAIN 16 -#define OBJ_URL SOFTHSM_URL";object=test-ca0;object-type=cert" +#define OBJ_URL SOFTHSM_URL ";object=test-ca0;object-type=cert" #define CONFIG "softhsm-issuer2.config" /* These CAs have the same DN */ static const char *ca_list[MAX_CHAIN] = { "-----BEGIN CERTIFICATE-----\n" - "MIIHSjCCBjKgAwIBAgIKYRHt9wABAAAAFTANBgkqhkiG9w0BAQUFADBSMQswCQYD\n" - "VQQGEwJVUzEaMBgGA1UEChMRSW50ZWwgQ29ycG9yYXRpb24xJzAlBgNVBAMTHklu\n" - "dGVsIEludHJhbmV0IEJhc2ljIFBvbGljeSBDQTAeFw0xMzAyMDQyMTUyMThaFw0x\n" - "ODA1MjQxOTU5MzlaMFYxCzAJBgNVBAYTAlVTMRowGAYDVQQKExFJbnRlbCBDb3Jw\n" - "b3JhdGlvbjErMCkGA1UEAxMiSW50ZWwgSW50cmFuZXQgQmFzaWMgSXNzdWluZyBD\n" - "QSAyQjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALn3ogjraWSmK5Wb\n" - "/4e9mENA1F36FBVemaG7L93ZhRRXq4UV0PQM5/4TOe9KAaOlX+a2cuULeeUtN9Rk\n" - "V/nHAVzSWlqc/NTMJfuI/1AD7ICNejQFYLxDMXGjR7eAHtiMz0iTMp9u6YTw4WXh\n" - "WffqTPiqUZ6DEWsMic9dM9yw/JqzycKClLcTD1OCvtw7Fx4tNTu6/ngrYJcTo29e\n" - "BBh/DupgtgnYPYuExEkHmucb4VIDdjfRkPo/BdNqrUSYfYqnUDj5mH+hPzIgppsZ\n" - "Rw0S5PUZGuC1f+Zok+4vZPR+hGG3Pdm2LTUEWSnurlhyfBoM+0yxeHsmL9aHU7zt\n" - "EIzVmKUCAwEAAaOCBBwwggQYMBIGCSsGAQQBgjcVAQQFAgMCAAIwIwYJKwYBBAGC\n" - "NxUCBBYEFMqHyYZOx6LYwRwZ+5vjOyIl9hENMB0GA1UdDgQWBBQ4Y3b6tgU6qVlP\n" - "SoeNoIO3fpE6CzAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMC\n" - "AYYwEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNVHSMEGDAWgBRp6zCRHAOAgE4RFYhG\n" - "pOJBmtNpHzCCAaIGA1UdHwSCAZkwggGVMIIBkaCCAY2gggGJhlFodHRwOi8vd3d3\n" - "LmludGVsLmNvbS9yZXBvc2l0b3J5L0NSTC9JbnRlbCUyMEludHJhbmV0JTIwQmFz\n" - "aWMlMjBQb2xpY3klMjBDQSgxKS5jcmyGWmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuaW50\n" - "ZWwuY29tL3JlcG9zaXRvcnkvQ1JML0ludGVsJTIwSW50cmFuZXQlMjBCYXNpYyUy\n" - "MFBvbGljeSUyMENBKDEpLmNybIaB12xkYXA6Ly8vQ049SW50ZWwlMjBJbnRyYW5l\n" - "dCUyMEJhc2ljJTIwUG9saWN5JTIwQ0EoMSksQ049bWNzaWJwY2EsQ049Q0RQLENO\n" - "PVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZpZ3Vy\n" - "YXRpb24sREM9Y29ycCxEQz1pbnRlbCxEQz1jb20/Y2VydGlmaWNhdGVSZXZvY2F0\n" - "aW9uTGlzdD9iYXNlP29iamVjdENsYXNzPWNSTERpc3RyaWJ1dGlvblBvaW50MIIB\n" - "uQYIKwYBBQUHAQEEggGrMIIBpzBmBggrBgEFBQcwAoZaaHR0cDovL3d3dy5pbnRl\n" - "bC5jb20vcmVwb3NpdG9yeS9jZXJ0aWZpY2F0ZXMvSW50ZWwlMjBJbnRyYW5ldCUy\n" - "MEJhc2ljJTIwUG9saWN5JTIwQ0EoMSkuY3J0MG8GCCsGAQUFBzAChmNodHRwOi8v\n" - "Y2VydGlmaWNhdGVzLmludGVsLmNvbS9yZXBvc2l0b3J5L2NlcnRpZmljYXRlcy9J\n" - "bnRlbCUyMEludHJhbmV0JTIwQmFzaWMlMjBQb2xpY3klMjBDQSgxKS5jcnQwgcsG\n" - "CCsGAQUFBzAChoG+bGRhcDovLy9DTj1JbnRlbCUyMEludHJhbmV0JTIwQmFzaWMl\n" - "MjBQb2xpY3klMjBDQSxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMs\n" - "Q049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1jb3JwLERDPWludGVsLERD\n" - "PWNvbT9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2VydGlmaWNhdGlv\n" - "bkF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAQEAsj8cHt2jSAmnIGulE9jXooAc\n" - "qH2xehlI+ko/al+nDnBzbjDYYjVS52XitYg8JGo6j72ijiGlGb/03FcQJRBZmUH6\n" - "znktx2rGTm4IdjL8quhvHthlzXXCozL8GMeeOuZ5rzHlhapKx764a5RuZtyx89uS\n" - "9cECon6oLGesXjFJ8Xrq6ecHZrQwJUpmvZalwvloKACAWqBh8yV12WDnUNZhtp8N\n" - "8rqeJZoy/lXGnTxsSSodO/5Y/CxYJM4W6u4WgvXNJSjO/0qWvb64S+pVLjBzwI+Y\n" - "X6oLqmBovRp1lGPOLjkXZi3EKDR8DmzhtpJq2677RtYowewnFedQ+exH9cXoJw==\n" - "-----END CERTIFICATE-----", + "MIIHSjCCBjKgAwIBAgIKYRHt9wABAAAAFTANBgkqhkiG9w0BAQUFADBSMQswCQYD\n" + "VQQGEwJVUzEaMBgGA1UEChMRSW50ZWwgQ29ycG9yYXRpb24xJzAlBgNVBAMTHklu\n" + "dGVsIEludHJhbmV0IEJhc2ljIFBvbGljeSBDQTAeFw0xMzAyMDQyMTUyMThaFw0x\n" + "ODA1MjQxOTU5MzlaMFYxCzAJBgNVBAYTAlVTMRowGAYDVQQKExFJbnRlbCBDb3Jw\n" + "b3JhdGlvbjErMCkGA1UEAxMiSW50ZWwgSW50cmFuZXQgQmFzaWMgSXNzdWluZyBD\n" + "QSAyQjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALn3ogjraWSmK5Wb\n" + "/4e9mENA1F36FBVemaG7L93ZhRRXq4UV0PQM5/4TOe9KAaOlX+a2cuULeeUtN9Rk\n" + "V/nHAVzSWlqc/NTMJfuI/1AD7ICNejQFYLxDMXGjR7eAHtiMz0iTMp9u6YTw4WXh\n" + "WffqTPiqUZ6DEWsMic9dM9yw/JqzycKClLcTD1OCvtw7Fx4tNTu6/ngrYJcTo29e\n" + "BBh/DupgtgnYPYuExEkHmucb4VIDdjfRkPo/BdNqrUSYfYqnUDj5mH+hPzIgppsZ\n" + "Rw0S5PUZGuC1f+Zok+4vZPR+hGG3Pdm2LTUEWSnurlhyfBoM+0yxeHsmL9aHU7zt\n" + "EIzVmKUCAwEAAaOCBBwwggQYMBIGCSsGAQQBgjcVAQQFAgMCAAIwIwYJKwYBBAGC\n" + "NxUCBBYEFMqHyYZOx6LYwRwZ+5vjOyIl9hENMB0GA1UdDgQWBBQ4Y3b6tgU6qVlP\n" + "SoeNoIO3fpE6CzAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMC\n" + "AYYwEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNVHSMEGDAWgBRp6zCRHAOAgE4RFYhG\n" + "pOJBmtNpHzCCAaIGA1UdHwSCAZkwggGVMIIBkaCCAY2gggGJhlFodHRwOi8vd3d3\n" + "LmludGVsLmNvbS9yZXBvc2l0b3J5L0NSTC9JbnRlbCUyMEludHJhbmV0JTIwQmFz\n" + "aWMlMjBQb2xpY3klMjBDQSgxKS5jcmyGWmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuaW50\n" + "ZWwuY29tL3JlcG9zaXRvcnkvQ1JML0ludGVsJTIwSW50cmFuZXQlMjBCYXNpYyUy\n" + "MFBvbGljeSUyMENBKDEpLmNybIaB12xkYXA6Ly8vQ049SW50ZWwlMjBJbnRyYW5l\n" + "dCUyMEJhc2ljJTIwUG9saWN5JTIwQ0EoMSksQ049bWNzaWJwY2EsQ049Q0RQLENO\n" + "PVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZpZ3Vy\n" + "YXRpb24sREM9Y29ycCxEQz1pbnRlbCxEQz1jb20/Y2VydGlmaWNhdGVSZXZvY2F0\n" + "aW9uTGlzdD9iYXNlP29iamVjdENsYXNzPWNSTERpc3RyaWJ1dGlvblBvaW50MIIB\n" + "uQYIKwYBBQUHAQEEggGrMIIBpzBmBggrBgEFBQcwAoZaaHR0cDovL3d3dy5pbnRl\n" + "bC5jb20vcmVwb3NpdG9yeS9jZXJ0aWZpY2F0ZXMvSW50ZWwlMjBJbnRyYW5ldCUy\n" + "MEJhc2ljJTIwUG9saWN5JTIwQ0EoMSkuY3J0MG8GCCsGAQUFBzAChmNodHRwOi8v\n" + "Y2VydGlmaWNhdGVzLmludGVsLmNvbS9yZXBvc2l0b3J5L2NlcnRpZmljYXRlcy9J\n" + "bnRlbCUyMEludHJhbmV0JTIwQmFzaWMlMjBQb2xpY3klMjBDQSgxKS5jcnQwgcsG\n" + "CCsGAQUFBzAChoG+bGRhcDovLy9DTj1JbnRlbCUyMEludHJhbmV0JTIwQmFzaWMl\n" + "MjBQb2xpY3klMjBDQSxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMs\n" + "Q049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1jb3JwLERDPWludGVsLERD\n" + "PWNvbT9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2VydGlmaWNhdGlv\n" + "bkF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAQEAsj8cHt2jSAmnIGulE9jXooAc\n" + "qH2xehlI+ko/al+nDnBzbjDYYjVS52XitYg8JGo6j72ijiGlGb/03FcQJRBZmUH6\n" + "znktx2rGTm4IdjL8quhvHthlzXXCozL8GMeeOuZ5rzHlhapKx764a5RuZtyx89uS\n" + "9cECon6oLGesXjFJ8Xrq6ecHZrQwJUpmvZalwvloKACAWqBh8yV12WDnUNZhtp8N\n" + "8rqeJZoy/lXGnTxsSSodO/5Y/CxYJM4W6u4WgvXNJSjO/0qWvb64S+pVLjBzwI+Y\n" + "X6oLqmBovRp1lGPOLjkXZi3EKDR8DmzhtpJq2677RtYowewnFedQ+exH9cXoJw==\n" + "-----END CERTIFICATE-----", "-----BEGIN CERTIFICATE-----\n" - "MIIHSjCCBjKgAwIBAgIKYRXxrQABAAAAETANBgkqhkiG9w0BAQUFADBSMQswCQYD\n" - "VQQGEwJVUzEaMBgGA1UEChMRSW50ZWwgQ29ycG9yYXRpb24xJzAlBgNVBAMTHklu\n" - "dGVsIEludHJhbmV0IEJhc2ljIFBvbGljeSBDQTAeFw0wOTA1MTUxODQyNDVaFw0x\n" - "NTA1MTUxODUyNDVaMFYxCzAJBgNVBAYTAlVTMRowGAYDVQQKExFJbnRlbCBDb3Jw\n" - "b3JhdGlvbjErMCkGA1UEAxMiSW50ZWwgSW50cmFuZXQgQmFzaWMgSXNzdWluZyBD\n" - "QSAyQjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbJOXtXYgfyoch6\n" - "ip5SSjijOXvpIjBxbTl5EGH/VYHmpM2O6SRlKh/uy77QS9m84sRWCJLr8cWwX9oH\n" - "qSmIylgcWvDpVNHx4v506DTTrbK0sbYRQYXRajOzJKeTt7NLeLrngyl45FrI9VAT\n" - "3yqp/2BCG1dUwcBha3dB2UbTkFOMt9o/gqoL6KvgswYMs/oGc/OIjeozdYuhnBT2\n" - "YlT9Ge5pfhOJWXh4DJbxnTmWwRUKq0MXFn0S00KQ/BZOTkc/5DibUmbmMrYi8ra4\n" - "Z2bpnoTq0WNA99O2Lk8IgmkqPdi6HwZwKCE/x01qwP8zo76rvN8sbW9pj2WzS1WF\n" - "tSDPeZECAwEAAaOCBBwwggQYMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYE\n" - "FPwbdyds7Cm03lobLKmI6q59npi+MAsGA1UdDwQEAwIBhjASBgkrBgEEAYI3FQEE\n" - "BQIDAQABMCMGCSsGAQQBgjcVAgQWBBRT1n27C6cZL4QFHaUX2nFSCPxhtTAZBgkr\n" - "BgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAfBgNVHSMEGDAWgBRp6zCRHAOAgE4RFYhG\n" - "pOJBmtNpHzCCAaIGA1UdHwSCAZkwggGVMIIBkaCCAY2gggGJhlFodHRwOi8vd3d3\n" - "LmludGVsLmNvbS9yZXBvc2l0b3J5L0NSTC9JbnRlbCUyMEludHJhbmV0JTIwQmFz\n" - "aWMlMjBQb2xpY3klMjBDQSgxKS5jcmyGWmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuaW50\n" - "ZWwuY29tL3JlcG9zaXRvcnkvQ1JML0ludGVsJTIwSW50cmFuZXQlMjBCYXNpYyUy\n" - "MFBvbGljeSUyMENBKDEpLmNybIaB12xkYXA6Ly8vQ049SW50ZWwlMjBJbnRyYW5l\n" - "dCUyMEJhc2ljJTIwUG9saWN5JTIwQ0EoMSksQ049bWNzaWJwY2EsQ049Q0RQLENO\n" - "PVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZpZ3Vy\n" - "YXRpb24sREM9Y29ycCxEQz1pbnRlbCxEQz1jb20/Y2VydGlmaWNhdGVSZXZvY2F0\n" - "aW9uTGlzdD9iYXNlP29iamVjdENsYXNzPWNSTERpc3RyaWJ1dGlvblBvaW50MIIB\n" - "uQYIKwYBBQUHAQEEggGrMIIBpzBmBggrBgEFBQcwAoZaaHR0cDovL3d3dy5pbnRl\n" - "bC5jb20vcmVwb3NpdG9yeS9jZXJ0aWZpY2F0ZXMvSW50ZWwlMjBJbnRyYW5ldCUy\n" - "MEJhc2ljJTIwUG9saWN5JTIwQ0EoMSkuY3J0MG8GCCsGAQUFBzAChmNodHRwOi8v\n" - "Y2VydGlmaWNhdGVzLmludGVsLmNvbS9yZXBvc2l0b3J5L2NlcnRpZmljYXRlcy9J\n" - "bnRlbCUyMEludHJhbmV0JTIwQmFzaWMlMjBQb2xpY3klMjBDQSgxKS5jcnQwgcsG\n" - "CCsGAQUFBzAChoG+bGRhcDovLy9DTj1JbnRlbCUyMEludHJhbmV0JTIwQmFzaWMl\n" - "MjBQb2xpY3klMjBDQSxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMs\n" - "Q049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1jb3JwLERDPWludGVsLERD\n" - "PWNvbT9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2VydGlmaWNhdGlv\n" - "bkF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAQEArlAkrJXyMCssqAJT3PqnY7wt\n" - "sirq1fTMrVrHdmkpBKDXBQnDcTW1zfZtOPV/QDm3UsFwDBbGq+j/7U9qZ1zYHkv+\n" - "wrBpeFM6dlca/sgegGGAhYnQQwmlSzNXCKHMBltMjT61X8rVjyt1XJnucgat9rnT\n" - "2j8pztqoViVnORsGfT6DDB/bz/6bFKw4FMp1wDaJI7dKh5NUggvH36owTWI7JUvq\n" - "yJ8OI2qmjXrlqGexfwvltIkEk8xzuMIHWQoR8sERL2qf3nb2VYq1s1LbH5uCkZ0l\n" - "w/xgwFbbwjaGJ3TFOmkVKYU77nXSkfK9EXae0UZRU0WmX4t5NNt8jiL56TPpsw==\n" - "-----END CERTIFICATE-----\n", + "MIIHSjCCBjKgAwIBAgIKYRXxrQABAAAAETANBgkqhkiG9w0BAQUFADBSMQswCQYD\n" + "VQQGEwJVUzEaMBgGA1UEChMRSW50ZWwgQ29ycG9yYXRpb24xJzAlBgNVBAMTHklu\n" + "dGVsIEludHJhbmV0IEJhc2ljIFBvbGljeSBDQTAeFw0wOTA1MTUxODQyNDVaFw0x\n" + "NTA1MTUxODUyNDVaMFYxCzAJBgNVBAYTAlVTMRowGAYDVQQKExFJbnRlbCBDb3Jw\n" + "b3JhdGlvbjErMCkGA1UEAxMiSW50ZWwgSW50cmFuZXQgQmFzaWMgSXNzdWluZyBD\n" + "QSAyQjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbJOXtXYgfyoch6\n" + "ip5SSjijOXvpIjBxbTl5EGH/VYHmpM2O6SRlKh/uy77QS9m84sRWCJLr8cWwX9oH\n" + "qSmIylgcWvDpVNHx4v506DTTrbK0sbYRQYXRajOzJKeTt7NLeLrngyl45FrI9VAT\n" + "3yqp/2BCG1dUwcBha3dB2UbTkFOMt9o/gqoL6KvgswYMs/oGc/OIjeozdYuhnBT2\n" + "YlT9Ge5pfhOJWXh4DJbxnTmWwRUKq0MXFn0S00KQ/BZOTkc/5DibUmbmMrYi8ra4\n" + "Z2bpnoTq0WNA99O2Lk8IgmkqPdi6HwZwKCE/x01qwP8zo76rvN8sbW9pj2WzS1WF\n" + "tSDPeZECAwEAAaOCBBwwggQYMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYE\n" + "FPwbdyds7Cm03lobLKmI6q59npi+MAsGA1UdDwQEAwIBhjASBgkrBgEEAYI3FQEE\n" + "BQIDAQABMCMGCSsGAQQBgjcVAgQWBBRT1n27C6cZL4QFHaUX2nFSCPxhtTAZBgkr\n" + "BgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAfBgNVHSMEGDAWgBRp6zCRHAOAgE4RFYhG\n" + "pOJBmtNpHzCCAaIGA1UdHwSCAZkwggGVMIIBkaCCAY2gggGJhlFodHRwOi8vd3d3\n" + "LmludGVsLmNvbS9yZXBvc2l0b3J5L0NSTC9JbnRlbCUyMEludHJhbmV0JTIwQmFz\n" + "aWMlMjBQb2xpY3klMjBDQSgxKS5jcmyGWmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuaW50\n" + "ZWwuY29tL3JlcG9zaXRvcnkvQ1JML0ludGVsJTIwSW50cmFuZXQlMjBCYXNpYyUy\n" + "MFBvbGljeSUyMENBKDEpLmNybIaB12xkYXA6Ly8vQ049SW50ZWwlMjBJbnRyYW5l\n" + "dCUyMEJhc2ljJTIwUG9saWN5JTIwQ0EoMSksQ049bWNzaWJwY2EsQ049Q0RQLENO\n" + "PVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZpZ3Vy\n" + "YXRpb24sREM9Y29ycCxEQz1pbnRlbCxEQz1jb20/Y2VydGlmaWNhdGVSZXZvY2F0\n" + "aW9uTGlzdD9iYXNlP29iamVjdENsYXNzPWNSTERpc3RyaWJ1dGlvblBvaW50MIIB\n" + "uQYIKwYBBQUHAQEEggGrMIIBpzBmBggrBgEFBQcwAoZaaHR0cDovL3d3dy5pbnRl\n" + "bC5jb20vcmVwb3NpdG9yeS9jZXJ0aWZpY2F0ZXMvSW50ZWwlMjBJbnRyYW5ldCUy\n" + "MEJhc2ljJTIwUG9saWN5JTIwQ0EoMSkuY3J0MG8GCCsGAQUFBzAChmNodHRwOi8v\n" + "Y2VydGlmaWNhdGVzLmludGVsLmNvbS9yZXBvc2l0b3J5L2NlcnRpZmljYXRlcy9J\n" + "bnRlbCUyMEludHJhbmV0JTIwQmFzaWMlMjBQb2xpY3klMjBDQSgxKS5jcnQwgcsG\n" + "CCsGAQUFBzAChoG+bGRhcDovLy9DTj1JbnRlbCUyMEludHJhbmV0JTIwQmFzaWMl\n" + "MjBQb2xpY3klMjBDQSxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMs\n" + "Q049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1jb3JwLERDPWludGVsLERD\n" + "PWNvbT9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2VydGlmaWNhdGlv\n" + "bkF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAQEArlAkrJXyMCssqAJT3PqnY7wt\n" + "sirq1fTMrVrHdmkpBKDXBQnDcTW1zfZtOPV/QDm3UsFwDBbGq+j/7U9qZ1zYHkv+\n" + "wrBpeFM6dlca/sgegGGAhYnQQwmlSzNXCKHMBltMjT61X8rVjyt1XJnucgat9rnT\n" + "2j8pztqoViVnORsGfT6DDB/bz/6bFKw4FMp1wDaJI7dKh5NUggvH36owTWI7JUvq\n" + "yJ8OI2qmjXrlqGexfwvltIkEk8xzuMIHWQoR8sERL2qf3nb2VYq1s1LbH5uCkZ0l\n" + "w/xgwFbbwjaGJ3TFOmkVKYU77nXSkfK9EXae0UZRU0WmX4t5NNt8jiL56TPpsw==\n" + "-----END CERTIFICATE-----\n", "-----BEGIN CERTIFICATE-----\n" - "MIIHIzCCBgugAwIBAgIKYRok3wABAAAADDANBgkqhkiG9w0BAQUFADBSMQswCQYD\n" - "VQQGEwJVUzEaMBgGA1UEChMRSW50ZWwgQ29ycG9yYXRpb24xJzAlBgNVBAMTHklu\n" - "dGVsIEludHJhbmV0IEJhc2ljIFBvbGljeSBDQTAeFw0wNjA1MjQxOTU2MDFaFw0x\n" - "MjA1MjQyMDA2MDFaMFYxCzAJBgNVBAYTAlVTMRowGAYDVQQKExFJbnRlbCBDb3Jw\n" - "b3JhdGlvbjErMCkGA1UEAxMiSW50ZWwgSW50cmFuZXQgQmFzaWMgSXNzdWluZyBD\n" - "QSAyQjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANE2pFSB0XqXoRWF\n" - "N7bzDesBAcTGEqcr6GVA+sMcJ5Vt17S8vGesmO2RgP6I49Q58nIhUnT054arUlOx\n" - "NKYbAEiVyGOK5zV2mZS4oW2UazfcpsV1uuO3j02UbzX+qcxQdNqoAHxwoB4nRJuU\n" - "Ijio45jWAssDbD8IKHZpmqRI5wUzbibkWnTZEc0YFO6iF40sNtqVr+uInP07PkQn\n" - "1Ttkyw6isa5Dhcyq6lTVOjnlj29bFYbZxN1uuDnTpUMVeov8oQv5wLyLrDVd1sMg\n" - "Njr2oofepZ8KjF3DKCkfsUekCHA9Pr2K/4hStd/nSwvIdNjCjfznqYadkB6wQ99a\n" - "hTX4uJkCAwEAAaOCA/UwggPxMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYE\n" - "FJunwCR+/af8p76CGTyhUZc3l/4DMAsGA1UdDwQEAwIBhjAQBgkrBgEEAYI3FQEE\n" - "AwIBADAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAfBgNVHSMEGDAWgBRp6zCR\n" - "HAOAgE4RFYhGpOJBmtNpHzCCAaIGA1UdHwSCAZkwggGVMIIBkaCCAY2gggGJhlFo\n" - "dHRwOi8vd3d3LmludGVsLmNvbS9yZXBvc2l0b3J5L0NSTC9JbnRlbCUyMEludHJh\n" - "bmV0JTIwQmFzaWMlMjBQb2xpY3klMjBDQSgxKS5jcmyGWmh0dHA6Ly9jZXJ0aWZp\n" - "Y2F0ZXMuaW50ZWwuY29tL3JlcG9zaXRvcnkvQ1JML0ludGVsJTIwSW50cmFuZXQl\n" - "MjBCYXNpYyUyMFBvbGljeSUyMENBKDEpLmNybIaB12xkYXA6Ly8vQ049SW50ZWwl\n" - "MjBJbnRyYW5ldCUyMEJhc2ljJTIwUG9saWN5JTIwQ0EoMSksQ049bWNzaWJwY2Es\n" - "Q049Q0RQLENOPVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENO\n" - "PUNvbmZpZ3VyYXRpb24sREM9Y29ycCxEQz1pbnRlbCxEQz1jb20/Y2VydGlmaWNh\n" - "dGVSZXZvY2F0aW9uTGlzdD9iYXNlP29iamVjdENsYXNzPWNSTERpc3RyaWJ1dGlv\n" - "blBvaW50MIIBuQYIKwYBBQUHAQEEggGrMIIBpzBmBggrBgEFBQcwAoZaaHR0cDov\n" - "L3d3dy5pbnRlbC5jb20vcmVwb3NpdG9yeS9jZXJ0aWZpY2F0ZXMvSW50ZWwlMjBJ\n" - "bnRyYW5ldCUyMEJhc2ljJTIwUG9saWN5JTIwQ0EoMSkuY3J0MG8GCCsGAQUFBzAC\n" - "hmNodHRwOi8vY2VydGlmaWNhdGVzLmludGVsLmNvbS9yZXBvc2l0b3J5L2NlcnRp\n" - "ZmljYXRlcy9JbnRlbCUyMEludHJhbmV0JTIwQmFzaWMlMjBQb2xpY3klMjBDQSgx\n" - "KS5jcnQwgcsGCCsGAQUFBzAChoG+bGRhcDovLy9DTj1JbnRlbCUyMEludHJhbmV0\n" - "JTIwQmFzaWMlMjBQb2xpY3klMjBDQSxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIw\n" - "U2VydmljZXMsQ049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1jb3JwLERD\n" - "PWludGVsLERDPWNvbT9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2Vy\n" - "dGlmaWNhdGlvbkF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAQEAe3SmN0lsGF0h\n" - "zq+NANnUD4YJS31UqreVm4kJv07+9CTBtlB0AVqJ2RcjRosdQmrbhx7R0WwcXSdR\n" - "QnRGhaoDVRNehKiz3Grp6ehJr9LInhCp6WtOeKRlOSb2xgRDJCtzCi07TuAb9h2I\n" - "urpmndeA4NEbPYL1GYEBpKYawUcFCq5yTv0YgZXy53DdBDv9ygRWYGEk7/gPgvCu\n" - "2O1GNs9n25goy+3/aMkHnUyl3MOtiooXJR7eKOEgTPHNe42LQ9KuUz5SoZQN8vSL\n" - "r49IRDC4dgMkGvsC5h0+ftixQ66ni6QJe6SNcpSZrpW5vBE9J+vtDI0gTyq2SYPo\n" - "0fiS3V8p4g==\n" "-----END CERTIFICATE-----\n", + "MIIHIzCCBgugAwIBAgIKYRok3wABAAAADDANBgkqhkiG9w0BAQUFADBSMQswCQYD\n" + "VQQGEwJVUzEaMBgGA1UEChMRSW50ZWwgQ29ycG9yYXRpb24xJzAlBgNVBAMTHklu\n" + "dGVsIEludHJhbmV0IEJhc2ljIFBvbGljeSBDQTAeFw0wNjA1MjQxOTU2MDFaFw0x\n" + "MjA1MjQyMDA2MDFaMFYxCzAJBgNVBAYTAlVTMRowGAYDVQQKExFJbnRlbCBDb3Jw\n" + "b3JhdGlvbjErMCkGA1UEAxMiSW50ZWwgSW50cmFuZXQgQmFzaWMgSXNzdWluZyBD\n" + "QSAyQjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANE2pFSB0XqXoRWF\n" + "N7bzDesBAcTGEqcr6GVA+sMcJ5Vt17S8vGesmO2RgP6I49Q58nIhUnT054arUlOx\n" + "NKYbAEiVyGOK5zV2mZS4oW2UazfcpsV1uuO3j02UbzX+qcxQdNqoAHxwoB4nRJuU\n" + "Ijio45jWAssDbD8IKHZpmqRI5wUzbibkWnTZEc0YFO6iF40sNtqVr+uInP07PkQn\n" + "1Ttkyw6isa5Dhcyq6lTVOjnlj29bFYbZxN1uuDnTpUMVeov8oQv5wLyLrDVd1sMg\n" + "Njr2oofepZ8KjF3DKCkfsUekCHA9Pr2K/4hStd/nSwvIdNjCjfznqYadkB6wQ99a\n" + "hTX4uJkCAwEAAaOCA/UwggPxMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYE\n" + "FJunwCR+/af8p76CGTyhUZc3l/4DMAsGA1UdDwQEAwIBhjAQBgkrBgEEAYI3FQEE\n" + "AwIBADAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAfBgNVHSMEGDAWgBRp6zCR\n" + "HAOAgE4RFYhGpOJBmtNpHzCCAaIGA1UdHwSCAZkwggGVMIIBkaCCAY2gggGJhlFo\n" + "dHRwOi8vd3d3LmludGVsLmNvbS9yZXBvc2l0b3J5L0NSTC9JbnRlbCUyMEludHJh\n" + "bmV0JTIwQmFzaWMlMjBQb2xpY3klMjBDQSgxKS5jcmyGWmh0dHA6Ly9jZXJ0aWZp\n" + "Y2F0ZXMuaW50ZWwuY29tL3JlcG9zaXRvcnkvQ1JML0ludGVsJTIwSW50cmFuZXQl\n" + "MjBCYXNpYyUyMFBvbGljeSUyMENBKDEpLmNybIaB12xkYXA6Ly8vQ049SW50ZWwl\n" + "MjBJbnRyYW5ldCUyMEJhc2ljJTIwUG9saWN5JTIwQ0EoMSksQ049bWNzaWJwY2Es\n" + "Q049Q0RQLENOPVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENO\n" + "PUNvbmZpZ3VyYXRpb24sREM9Y29ycCxEQz1pbnRlbCxEQz1jb20/Y2VydGlmaWNh\n" + "dGVSZXZvY2F0aW9uTGlzdD9iYXNlP29iamVjdENsYXNzPWNSTERpc3RyaWJ1dGlv\n" + "blBvaW50MIIBuQYIKwYBBQUHAQEEggGrMIIBpzBmBggrBgEFBQcwAoZaaHR0cDov\n" + "L3d3dy5pbnRlbC5jb20vcmVwb3NpdG9yeS9jZXJ0aWZpY2F0ZXMvSW50ZWwlMjBJ\n" + "bnRyYW5ldCUyMEJhc2ljJTIwUG9saWN5JTIwQ0EoMSkuY3J0MG8GCCsGAQUFBzAC\n" + "hmNodHRwOi8vY2VydGlmaWNhdGVzLmludGVsLmNvbS9yZXBvc2l0b3J5L2NlcnRp\n" + "ZmljYXRlcy9JbnRlbCUyMEludHJhbmV0JTIwQmFzaWMlMjBQb2xpY3klMjBDQSgx\n" + "KS5jcnQwgcsGCCsGAQUFBzAChoG+bGRhcDovLy9DTj1JbnRlbCUyMEludHJhbmV0\n" + "JTIwQmFzaWMlMjBQb2xpY3klMjBDQSxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIw\n" + "U2VydmljZXMsQ049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1jb3JwLERD\n" + "PWludGVsLERDPWNvbT9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2Vy\n" + "dGlmaWNhdGlvbkF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAQEAe3SmN0lsGF0h\n" + "zq+NANnUD4YJS31UqreVm4kJv07+9CTBtlB0AVqJ2RcjRosdQmrbhx7R0WwcXSdR\n" + "QnRGhaoDVRNehKiz3Grp6ehJr9LInhCp6WtOeKRlOSb2xgRDJCtzCi07TuAb9h2I\n" + "urpmndeA4NEbPYL1GYEBpKYawUcFCq5yTv0YgZXy53DdBDv9ygRWYGEk7/gPgvCu\n" + "2O1GNs9n25goy+3/aMkHnUyl3MOtiooXJR7eKOEgTPHNe42LQ9KuUz5SoZQN8vSL\n" + "r49IRDC4dgMkGvsC5h0+ftixQ66ni6QJe6SNcpSZrpW5vBE9J+vtDI0gTyq2SYPo\n" + "0fiS3V8p4g==\n" + "-----END CERTIFICATE-----\n", NULL }; /* this certificate has the same CN as one of the CAs above */ static const char same_dn_cert_str[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIHSjCCBjKgAwIBAgIKYRHt9wABAAAAFTANBgkqhkiG9w0BAQUFADBSMQswCQYD\n" - "VQQGEwJVUzEaMBgGA1UEChMRSW50ZWwgQ29ycG9yYXRpb24xJzAlBgNVBAMTHklu\n" - "dGVsIEludHJhbmV0IEJvc2FjIFBvbGljeSBDQTAeFw0xMzAyMDQyMTUyMThaFw0x\n" - "ODA1MjQxOTU5MzlaMFYxCzAJBgNVBAYTAlVTMRowGAYDVQQKExFJbnRlbCBDb3Jw\n" - "b3JhdGlvbjErMCkGA1UEAxMiSW50ZWwgSW50cmFuZXQgQmFzaWMgSXNzdWluZyBD\n" - "QSAyQjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALn3ogjraWSmK5Wb\n" - "/4e9mENA1F36FBVemaG7L93ZhRRXq4UV0PQM5/4TOe9KAaOlX+a2cuULeeUtN9Rk\n" - "V/nHAVzSWlqc/NTMJfuI/1AD7ICNejQFYLxDMXGjR7eAHtiMz0iTMp9u6YTw4WXh\n" - "WffqTPiqUZ6DEWsMic9dM9yw/JqzycKClLcTD1OCvtw7Fx4tNTu6/ngrYJcTo29e\n" - "BBh/DupgtgnYPYuExEkHmucb4VIDdjfRkPo/BdNqrUSYfYqnUDj5mH+hPzIgppsZ\n" - "Rw0S5PUZGuC1f+Zok+4vZPR+hGG3Pdm2LTUEWSnurlhyfBoM+0yxeHsmL9aHU7zt\n" - "EIzVmKUCAwEAAaOCBBwwggQYMBIGCSsGAQQBgjcVAQQFAgMCAAIwIwYJKwYBBAGC\n" - "NxUCBBYEFMqHyYZOx6LYwRwZ+5vjOyIl9hENMB0GA1UdDgQWBBQ4Y3b6tgU6qVlP\n" - "SoeNoIO3fpE6CzAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMC\n" - "AYYwEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNVHSMEGDAWgBRp6zCRHAOAgE4RFYhG\n" - "pOJBmtNpHzCCAaIGA1UdHwSCAZkwggGVMIIBkaCCAY2gggGJhlFodHRwOi8vd3d3\n" - "LmludGVsLmNvbS9yZXBvc2l0b3J5L1hYWC9JbnRlbCUyMEludHJhbmV0JTIwQmFz\n" - "aWMlMjBQb2xpY3klMjBDQSgxKS5jcmyGWmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuaW50\n" - "ZWwuY29tL3JlcG9zaXRvcnkvQ1JML0ludGVsJTIwSW50cmFuZXQlMjBCYXNpYyUy\n" - "MFBvbGljeSUyMENBKDEpLmNybIaB12xkYXA6Ly8vQ049SW50ZWwlMjBJbnRyYW5l\n" - "dCUyMEJhc2ljJTIwUG9saWN5JTIwQ0EoMSksQ049bWNzaWJwY2EsQ049Q0RQLENO\n" - "PVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZpZ3Vy\n" - "YXRpb24sREM9Y29ycCxEQz1pbnRlbCxEQz1jb20/Y2VydGlmaWNhdGVSZXZvY2F0\n" - "aW9uTGlzdD9iYXNlP29iamVjdENsYXNzPWNSTERpc3RyaWJ1dGlvblBvaW50MIIB\n" - "uQYIKwYBBQUHAQEEggGrMIIBpzBmBggrBgEFBQcwAoZaaHR0cDovL3d3dy5pbnRl\n" - "bC5jb20vcmVwb3NpdG9yeS9jZXJ0aWZpY2F0ZXMvSW50ZWwlMjBJbnRyYW5ldCUy\n" - "MEJhc2ljJTIwUG9saWN5JTIwQ0EoMSkuY3J0MG8GCCsGAQUFBzAChmNodHRwOi8v\n" - "Y2VydGlmaWNhdGVzLmludGVsLmNvbS9yZXBvc2l0b3J5L2NlcnRpZmljYXRlcy9J\n" - "bnRlbCUyMEludHJhbmV0JTIwQmFzaWMlMjBQb2xpY3klMjBDQSgxKS5jcnQwgcsG\n" - "CCsGAQUFBzAChoG+bGRhcDovLy9DTj1JbnRlbCUyMEludHJhbmV0JTIwQmFzaWMl\n" - "MjBQb2xpY3klMjBDQSxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMs\n" - "Q049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1jb3JwLERDPWludGVsLERD\n" - "PWNvbT9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2VydGlmaWNhdGlv\n" - "bkF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAQEAsj8cHt2jSAmnIGulE9jXooAc\n" - "qH2xehlI+ko/al+nDnBzbjDYYjVS52XitYg8JGo6j72ijiGlGb/03FcQJRBZmUH6\n" - "znktx2rGTm4IdjL8quhvHthlzXXCozL8GMeeOuZ5rzHlhapKx764a5RuZtyx89uS\n" - "9cECon6oLGesXjFJ8Xrq6ecHZrQwJUpmvZalwvloKACAWqBh8yV12WDnUNZhtp8N\n" - "8rqeJZoy/lXGnTxsSSodO/5Y/CxYJM4W6u4WgvXNJSjO/0qWvb64S+pVLjBzwI+Y\n" - "X6oLqmBovRp1lGPOLjkXZi3EKDR8DmzhtpJq2677RtYowewnFedQ+exH9cXoJw==\n" - "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIHSjCCBjKgAwIBAgIKYRHt9wABAAAAFTANBgkqhkiG9w0BAQUFADBSMQswCQYD\n" + "VQQGEwJVUzEaMBgGA1UEChMRSW50ZWwgQ29ycG9yYXRpb24xJzAlBgNVBAMTHklu\n" + "dGVsIEludHJhbmV0IEJvc2FjIFBvbGljeSBDQTAeFw0xMzAyMDQyMTUyMThaFw0x\n" + "ODA1MjQxOTU5MzlaMFYxCzAJBgNVBAYTAlVTMRowGAYDVQQKExFJbnRlbCBDb3Jw\n" + "b3JhdGlvbjErMCkGA1UEAxMiSW50ZWwgSW50cmFuZXQgQmFzaWMgSXNzdWluZyBD\n" + "QSAyQjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALn3ogjraWSmK5Wb\n" + "/4e9mENA1F36FBVemaG7L93ZhRRXq4UV0PQM5/4TOe9KAaOlX+a2cuULeeUtN9Rk\n" + "V/nHAVzSWlqc/NTMJfuI/1AD7ICNejQFYLxDMXGjR7eAHtiMz0iTMp9u6YTw4WXh\n" + "WffqTPiqUZ6DEWsMic9dM9yw/JqzycKClLcTD1OCvtw7Fx4tNTu6/ngrYJcTo29e\n" + "BBh/DupgtgnYPYuExEkHmucb4VIDdjfRkPo/BdNqrUSYfYqnUDj5mH+hPzIgppsZ\n" + "Rw0S5PUZGuC1f+Zok+4vZPR+hGG3Pdm2LTUEWSnurlhyfBoM+0yxeHsmL9aHU7zt\n" + "EIzVmKUCAwEAAaOCBBwwggQYMBIGCSsGAQQBgjcVAQQFAgMCAAIwIwYJKwYBBAGC\n" + "NxUCBBYEFMqHyYZOx6LYwRwZ+5vjOyIl9hENMB0GA1UdDgQWBBQ4Y3b6tgU6qVlP\n" + "SoeNoIO3fpE6CzAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMC\n" + "AYYwEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNVHSMEGDAWgBRp6zCRHAOAgE4RFYhG\n" + "pOJBmtNpHzCCAaIGA1UdHwSCAZkwggGVMIIBkaCCAY2gggGJhlFodHRwOi8vd3d3\n" + "LmludGVsLmNvbS9yZXBvc2l0b3J5L1hYWC9JbnRlbCUyMEludHJhbmV0JTIwQmFz\n" + "aWMlMjBQb2xpY3klMjBDQSgxKS5jcmyGWmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuaW50\n" + "ZWwuY29tL3JlcG9zaXRvcnkvQ1JML0ludGVsJTIwSW50cmFuZXQlMjBCYXNpYyUy\n" + "MFBvbGljeSUyMENBKDEpLmNybIaB12xkYXA6Ly8vQ049SW50ZWwlMjBJbnRyYW5l\n" + "dCUyMEJhc2ljJTIwUG9saWN5JTIwQ0EoMSksQ049bWNzaWJwY2EsQ049Q0RQLENO\n" + "PVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZpZ3Vy\n" + "YXRpb24sREM9Y29ycCxEQz1pbnRlbCxEQz1jb20/Y2VydGlmaWNhdGVSZXZvY2F0\n" + "aW9uTGlzdD9iYXNlP29iamVjdENsYXNzPWNSTERpc3RyaWJ1dGlvblBvaW50MIIB\n" + "uQYIKwYBBQUHAQEEggGrMIIBpzBmBggrBgEFBQcwAoZaaHR0cDovL3d3dy5pbnRl\n" + "bC5jb20vcmVwb3NpdG9yeS9jZXJ0aWZpY2F0ZXMvSW50ZWwlMjBJbnRyYW5ldCUy\n" + "MEJhc2ljJTIwUG9saWN5JTIwQ0EoMSkuY3J0MG8GCCsGAQUFBzAChmNodHRwOi8v\n" + "Y2VydGlmaWNhdGVzLmludGVsLmNvbS9yZXBvc2l0b3J5L2NlcnRpZmljYXRlcy9J\n" + "bnRlbCUyMEludHJhbmV0JTIwQmFzaWMlMjBQb2xpY3klMjBDQSgxKS5jcnQwgcsG\n" + "CCsGAQUFBzAChoG+bGRhcDovLy9DTj1JbnRlbCUyMEludHJhbmV0JTIwQmFzaWMl\n" + "MjBQb2xpY3klMjBDQSxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMs\n" + "Q049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1jb3JwLERDPWludGVsLERD\n" + "PWNvbT9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2VydGlmaWNhdGlv\n" + "bkF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAQEAsj8cHt2jSAmnIGulE9jXooAc\n" + "qH2xehlI+ko/al+nDnBzbjDYYjVS52XitYg8JGo6j72ijiGlGb/03FcQJRBZmUH6\n" + "znktx2rGTm4IdjL8quhvHthlzXXCozL8GMeeOuZ5rzHlhapKx764a5RuZtyx89uS\n" + "9cECon6oLGesXjFJ8Xrq6ecHZrQwJUpmvZalwvloKACAWqBh8yV12WDnUNZhtp8N\n" + "8rqeJZoy/lXGnTxsSSodO/5Y/CxYJM4W6u4WgvXNJSjO/0qWvb64S+pVLjBzwI+Y\n" + "X6oLqmBovRp1lGPOLjkXZi3EKDR8DmzhtpJq2677RtYowewnFedQ+exH9cXoJw==\n" + "-----END CERTIFICATE-----\n"; /* this certificate has the same subject and issuer DNs and serial as one of the CAs above */ static const char same_issuer_cert_str[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIHSjCCBjKgAwIBAgIKYRHt9wABAAAAFTANBgkqhkiG9w0BAQUFADBSMQswCQYD\n" - "VQQGEwJVUzEaMBgGA1UEChMRSW50ZWwgQ29ycG9yYXRpb24xJzAlBgNVBAMTHklu\n" - "dGVsIEludHJhbmV0IEJhc2ljIFBvbGljeSBDQTAeFw0xMzAyMDQyMTUyMThaFw0x\n" - "ODA1MjQxOTU5MzlaMFYxCzAJBgNVBAYTAlVTMRowGAYDVQQKExFJbnRlbCBDb3Jw\n" - "b3JhdGlvbjErMCkGA1UEAxMiSW50ZWwgSW50cmFuZXQgQmFzaWMgSXNzdWluZyBD\n" - "QSAyQjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALn3ogjraWSmK5Wb\n" - "/4e9mENA1F36FBVemaG7L93ZhRRXq4UV0PQM5/4TOe9KAaOlX+a2cuULeeUtN9Rk\n" - "V/nHAVzSWlqc/NTMJfuI/1AD7ICNejQFYLxDMXGjR7eAHtiMz0iTMp9u6YTw4WXh\n" - "WffqTPiqUZ6DEWsMic9dM9yw/JqzycKClLcTD1OCvtw7Fx4tNTu6/ngrYJcTo29e\n" - "BBh/DupgtgnYPYuExEkHmucb4VIDdjfRkPo/BdNqrUSYfYqnUDj5mH+hPzIgppsZ\n" - "Rw0S5PUZGuC1f+Zok+4vZPR+hGG3Pdm2LTUEWSnurlhyfBoM+0yxeHsmL9aHU7zt\n" - "EIzVmKUCAwEAAaOCBBwwggQYMBIGCSsGAQQBgjcVAQQFAgMCAAIwIwYJKwYBBAGC\n" - "NxUCBBYEFMqHyYZOx6LYwRwZ+5vjOyIl9hENMB0GA1UdDgQWBBQ4Y3b6tgU6qVlP\n" - "SoeNoIO3fpE6CzAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMC\n" - "AYYwEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNVHSMEGDAWgBRp6zCRHAOAgE4RFYhG\n" - "pOJBmtNpHzCCAaIGA1UdHwSCAZkwggGVMIIBkaCCAY2gggGJhlFodHRwOi8vd3d3\n" - "LmludGVsLmNvbS9yZXBvc2l0b3J5L1hYWC9JbnRlbCUyMEludHJhbmV0JTIwQmFz\n" - "aWMlMjBQb2xpY3klMjBDQSgxKS5jcmyGWmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuaW50\n" - "ZWwuY29tL3JlcG9zaXRvcnkvQ1JML0ludGVsJTIwSW50cmFuZXQlMjBCYXNpYyUy\n" - "MFBvbGljeSUyMENBKDEpLmNybIaB12xkYXA6Ly8vQ049SW50ZWwlMjBJbnRyYW5l\n" - "dCUyMEJhc2ljJTIwUG9saWN5JTIwQ0EoMSksQ049bWNzaWJwY2EsQ049Q0RQLENO\n" - "PVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZpZ3Vy\n" - "YXRpb24sREM9Y29ycCxEQz1pbnRlbCxEQz1jb20/Y2VydGlmaWNhdGVSZXZvY2F0\n" - "aW9uTGlzdD9iYXNlP29iamVjdENsYXNzPWNSTERpc3RyaWJ1dGlvblBvaW50MIIB\n" - "uQYIKwYBBQUHAQEEggGrMIIBpzBmBggrBgEFBQcwAoZaaHR0cDovL3d3dy5pbnRl\n" - "bC5jb20vcmVwb3NpdG9yeS9jZXJ0aWZpY2F0ZXMvSW50ZWwlMjBJbnRyYW5ldCUy\n" - "MEJhc2ljJTIwUG9saWN5JTIwQ0EoMSkuY3J0MG8GCCsGAQUFBzAChmNodHRwOi8v\n" - "Y2VydGlmaWNhdGVzLmludGVsLmNvbS9yZXBvc2l0b3J5L2NlcnRpZmljYXRlcy9J\n" - "bnRlbCUyMEludHJhbmV0JTIwQmFzaWMlMjBQb2xpY3klMjBDQSgxKS5jcnQwgcsG\n" - "CCsGAQUFBzAChoG+bGRhcDovLy9DTj1JbnRlbCUyMEludHJhbmV0JTIwQmFzaWMl\n" - "MjBQb2xpY3klMjBDQSxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMs\n" - "Q049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1jb3JwLERDPWludGVsLERD\n" - "PWNvbT9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2VydGlmaWNhdGlv\n" - "bkF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAQEAsj8cHt2jSAmnIGulE9jXooAc\n" - "qH2xehlI+ko/al+nDnBzbjDYYjVS52XitYg8JGo6j72ijiGlGb/03FcQJRBZmUH6\n" - "znktx2rGTm4IdjL8quhvHthlzXXCozL8GMeeOuZ5rzHlhapKx764a5RuZtyx89uS\n" - "9cECon6oLGesXjFJ8Xrq6ecHZrQwJUpmvZalwvloKACAWqBh8yV12WDnUNZhtp8N\n" - "8rqeJZoy/lXGnTxsSSodO/5Y/CxYJM4W6u4WgvXNJSjO/0qWvb64S+pVLjBzwI+Y\n" - "X6oLqmBovRp1lGPOLjkXZi3EKDR8DmzhtpJq2677RtYowewnFedQ+exH9cXoJw==\n" - "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIHSjCCBjKgAwIBAgIKYRHt9wABAAAAFTANBgkqhkiG9w0BAQUFADBSMQswCQYD\n" + "VQQGEwJVUzEaMBgGA1UEChMRSW50ZWwgQ29ycG9yYXRpb24xJzAlBgNVBAMTHklu\n" + "dGVsIEludHJhbmV0IEJhc2ljIFBvbGljeSBDQTAeFw0xMzAyMDQyMTUyMThaFw0x\n" + "ODA1MjQxOTU5MzlaMFYxCzAJBgNVBAYTAlVTMRowGAYDVQQKExFJbnRlbCBDb3Jw\n" + "b3JhdGlvbjErMCkGA1UEAxMiSW50ZWwgSW50cmFuZXQgQmFzaWMgSXNzdWluZyBD\n" + "QSAyQjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALn3ogjraWSmK5Wb\n" + "/4e9mENA1F36FBVemaG7L93ZhRRXq4UV0PQM5/4TOe9KAaOlX+a2cuULeeUtN9Rk\n" + "V/nHAVzSWlqc/NTMJfuI/1AD7ICNejQFYLxDMXGjR7eAHtiMz0iTMp9u6YTw4WXh\n" + "WffqTPiqUZ6DEWsMic9dM9yw/JqzycKClLcTD1OCvtw7Fx4tNTu6/ngrYJcTo29e\n" + "BBh/DupgtgnYPYuExEkHmucb4VIDdjfRkPo/BdNqrUSYfYqnUDj5mH+hPzIgppsZ\n" + "Rw0S5PUZGuC1f+Zok+4vZPR+hGG3Pdm2LTUEWSnurlhyfBoM+0yxeHsmL9aHU7zt\n" + "EIzVmKUCAwEAAaOCBBwwggQYMBIGCSsGAQQBgjcVAQQFAgMCAAIwIwYJKwYBBAGC\n" + "NxUCBBYEFMqHyYZOx6LYwRwZ+5vjOyIl9hENMB0GA1UdDgQWBBQ4Y3b6tgU6qVlP\n" + "SoeNoIO3fpE6CzAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMC\n" + "AYYwEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNVHSMEGDAWgBRp6zCRHAOAgE4RFYhG\n" + "pOJBmtNpHzCCAaIGA1UdHwSCAZkwggGVMIIBkaCCAY2gggGJhlFodHRwOi8vd3d3\n" + "LmludGVsLmNvbS9yZXBvc2l0b3J5L1hYWC9JbnRlbCUyMEludHJhbmV0JTIwQmFz\n" + "aWMlMjBQb2xpY3klMjBDQSgxKS5jcmyGWmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuaW50\n" + "ZWwuY29tL3JlcG9zaXRvcnkvQ1JML0ludGVsJTIwSW50cmFuZXQlMjBCYXNpYyUy\n" + "MFBvbGljeSUyMENBKDEpLmNybIaB12xkYXA6Ly8vQ049SW50ZWwlMjBJbnRyYW5l\n" + "dCUyMEJhc2ljJTIwUG9saWN5JTIwQ0EoMSksQ049bWNzaWJwY2EsQ049Q0RQLENO\n" + "PVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZpZ3Vy\n" + "YXRpb24sREM9Y29ycCxEQz1pbnRlbCxEQz1jb20/Y2VydGlmaWNhdGVSZXZvY2F0\n" + "aW9uTGlzdD9iYXNlP29iamVjdENsYXNzPWNSTERpc3RyaWJ1dGlvblBvaW50MIIB\n" + "uQYIKwYBBQUHAQEEggGrMIIBpzBmBggrBgEFBQcwAoZaaHR0cDovL3d3dy5pbnRl\n" + "bC5jb20vcmVwb3NpdG9yeS9jZXJ0aWZpY2F0ZXMvSW50ZWwlMjBJbnRyYW5ldCUy\n" + "MEJhc2ljJTIwUG9saWN5JTIwQ0EoMSkuY3J0MG8GCCsGAQUFBzAChmNodHRwOi8v\n" + "Y2VydGlmaWNhdGVzLmludGVsLmNvbS9yZXBvc2l0b3J5L2NlcnRpZmljYXRlcy9J\n" + "bnRlbCUyMEludHJhbmV0JTIwQmFzaWMlMjBQb2xpY3klMjBDQSgxKS5jcnQwgcsG\n" + "CCsGAQUFBzAChoG+bGRhcDovLy9DTj1JbnRlbCUyMEludHJhbmV0JTIwQmFzaWMl\n" + "MjBQb2xpY3klMjBDQSxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMs\n" + "Q049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1jb3JwLERDPWludGVsLERD\n" + "PWNvbT9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2VydGlmaWNhdGlv\n" + "bkF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAQEAsj8cHt2jSAmnIGulE9jXooAc\n" + "qH2xehlI+ko/al+nDnBzbjDYYjVS52XitYg8JGo6j72ijiGlGb/03FcQJRBZmUH6\n" + "znktx2rGTm4IdjL8quhvHthlzXXCozL8GMeeOuZ5rzHlhapKx764a5RuZtyx89uS\n" + "9cECon6oLGesXjFJ8Xrq6ecHZrQwJUpmvZalwvloKACAWqBh8yV12WDnUNZhtp8N\n" + "8rqeJZoy/lXGnTxsSSodO/5Y/CxYJM4W6u4WgvXNJSjO/0qWvb64S+pVLjBzwI+Y\n" + "X6oLqmBovRp1lGPOLjkXZi3EKDR8DmzhtpJq2677RtYowewnFedQ+exH9cXoJw==\n" + "-----END CERTIFICATE-----\n"; /* this certificate is issued by one of the above */ static const char intermediate_str[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIH4DCCBsigAwIBAgIKFpIKYgACAAJ8lTANBgkqhkiG9w0BAQUFADBWMQswCQYD\n" - "VQQGEwJVUzEaMBgGA1UEChMRSW50ZWwgQ29ycG9yYXRpb24xKzApBgNVBAMTIklu\n" - "dGVsIEludHJhbmV0IEJhc2ljIElzc3VpbmcgQ0EgMkIwHhcNMTQwMTA4MTc0MTM5\n" - "WhcNMTcwMTA3MTc0MTM5WjB1MQswCQYDVQQGEwJJRTELMAkGA1UEBxMCSVIxGjAY\n" - "BgNVBAoTEUludGVsIENvcnBvcmF0aW9uMQswCQYDVQQLEwJJVDEWMBQGA1UEAxMN\n" - "dnBuLmludGVsLmNvbTEYMBYGA1UEAxMPc2NzaXIuaW50ZWwuY29tMIIBIjANBgkq\n" - "hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAi3WoORH5ITJ2lpcgCHex1HBUnmN/bb6s\n" - "sS1Arm50NEHMlqGfbsdCxq2iodMvrGWvdRAPaf/7Ii1UwUhEzxyKYAXC3KRAgioh\n" - "C0pvGmAFq1ciDYRhANPlW92lIgkt83WwGtOcES2u36VmUxBfdQe6rO3ldoZHVofY\n" - "uIG/ubBVLz0NhWMaRYSUzTv/4PKJ4paIS7COUROYsyKwc5wNjTcR2PB7RRW+YHgM\n" - "FkvqPpLjLAGpHdN+wuPNLlUcyzkZVhhXxvQJ9gc5hw/LLQvbmeiGIZCvOVy3ZSfi\n" - "cGw2jkbqKcFttVV52Wild3ZigALZtkKuFnGw5DEIfk4EAZhG8eHfFQIDAQABo4IE\n" - "jzCCBIswCwYDVR0PBAQDAgWgMB0GA1UdDgQWBBR4EAIG7OggvIFAhrB8m0eyhCKV\n" - "GzAfBgNVHSMEGDAWgBQ4Y3b6tgU6qVlPSoeNoIO3fpE6CzCCAbkGA1UdHwSCAbAw\n" - "ggGsMIIBqKCCAaSgggGghoHibGRhcDovLy9DTj1JbnRlbCUyMEludHJhbmV0JTIw\n" - "QmFzaWMlMjBJc3N1aW5nJTIwQ0ElMjAyQigyKSxDTj1BWlNNQ1NJQkVDQTAyLENO\n" - "PUNEUCxDTj1QdWJsaWMlMjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNlcyxDTj1D\n" - "b25maWd1cmF0aW9uLERDPWNvcnAsREM9aW50ZWwsREM9Y29tP2NlcnRpZmljYXRl\n" - "UmV2b2NhdGlvbkxpc3Q/YmFzZT9vYmplY3RDbGFzcz1jUkxEaXN0cmlidXRpb25Q\n" - "b2ludIZXaHR0cDovL3d3dy5pbnRlbC5jb20vcmVwb3NpdG9yeS9DUkwvSW50ZWwl\n" - "MjBJbnRyYW5ldCUyMEJhc2ljJTIwSXNzdWluZyUyMENBJTIwMkIoMikuY3JshmBo\n" - "dHRwOi8vY2VydGlmaWNhdGVzLmludGVsLmNvbS9yZXBvc2l0b3J5L0NSTC9JbnRl\n" - "bCUyMEludHJhbmV0JTIwQmFzaWMlMjBJc3N1aW5nJTIwQ0ElMjAyQigyKS5jcmww\n" - "ggHLBggrBgEFBQcBAQSCAb0wggG5MIHRBggrBgEFBQcwAoaBxGxkYXA6Ly8vQ049\n" - "SW50ZWwlMjBJbnRyYW5ldCUyMEJhc2ljJTIwSXNzdWluZyUyMENBJTIwMkIsQ049\n" - "QUlBLENOPVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNv\n" - "bmZpZ3VyYXRpb24sREM9Y29ycCxEQz1pbnRlbCxEQz1jb20/Y0FDZXJ0aWZpY2F0\n" - "ZT9iYXNlP29iamVjdENsYXNzPWNlcnRpZmljYXRpb25BdXRob3JpdHkwbAYIKwYB\n" - "BQUHMAKGYGh0dHA6Ly93d3cuaW50ZWwuY29tL3JlcG9zaXRvcnkvY2VydGlmaWNh\n" - "dGVzL0ludGVsJTIwSW50cmFuZXQlMjBCYXNpYyUyMElzc3VpbmclMjBDQSUyMDJC\n" - "KDIpLmNydDB1BggrBgEFBQcwAoZpaHR0cDovL2NlcnRpZmljYXRlcy5pbnRlbC5j\n" - "b20vcmVwb3NpdG9yeS9jZXJ0aWZpY2F0ZXMvSW50ZWwlMjBJbnRyYW5ldCUyMEJh\n" - "c2ljJTIwSXNzdWluZyUyMENBJTIwMkIoMikuY3J0MD0GCSsGAQQBgjcVBwQwMC4G\n" - "JisGAQQBgjcVCIbDjHWEmeVRg/2BKIWOn1OCkcAJZ4eC0UGC37J5AgFkAgERMB0G\n" - "A1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAnBgkrBgEEAYI3FQoEGjAYMAoG\n" - "CCsGAQUFBwMCMAoGCCsGAQUFBwMBMCkGA1UdEQQiMCCCD3Njc2lyLmludGVsLmNv\n" - "bYINdnBuLmludGVsLmNvbTANBgkqhkiG9w0BAQUFAAOCAQEALjO591IHOTt28HZ9\n" - "+Vm2TJp8EJSgWW3luKFAAPUOxix5FgK7mqNQk1052qV8NCQKqChO64f6kl3R29Pp\n" - "yv0ALYaxdYZXkxPuts05gwu9caeH9fK6vGTRk5pWygVIsobS2MypCYFs9VftFw5d\n" - "EPUAOsigQmkBC+k+icYzZDjm4HBGd0mTHwniNsKkkjxSnF4UGH9OYp4+hs9/pWly\n" - "19X4gVWwuxKB59TOe/tVxHBt57zZA3zYyXG+VPzVmklmYLPxVFcmeUDOjWU3x3Wp\n" - "0D5YUmvQlsd4+73IYw0BrvB42bQEFDUU/v0u6mwluk1m0LEdm+jlM/YCbrAgA3O8\n" - "eV1xMQ==\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIH4DCCBsigAwIBAgIKFpIKYgACAAJ8lTANBgkqhkiG9w0BAQUFADBWMQswCQYD\n" + "VQQGEwJVUzEaMBgGA1UEChMRSW50ZWwgQ29ycG9yYXRpb24xKzApBgNVBAMTIklu\n" + "dGVsIEludHJhbmV0IEJhc2ljIElzc3VpbmcgQ0EgMkIwHhcNMTQwMTA4MTc0MTM5\n" + "WhcNMTcwMTA3MTc0MTM5WjB1MQswCQYDVQQGEwJJRTELMAkGA1UEBxMCSVIxGjAY\n" + "BgNVBAoTEUludGVsIENvcnBvcmF0aW9uMQswCQYDVQQLEwJJVDEWMBQGA1UEAxMN\n" + "dnBuLmludGVsLmNvbTEYMBYGA1UEAxMPc2NzaXIuaW50ZWwuY29tMIIBIjANBgkq\n" + "hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAi3WoORH5ITJ2lpcgCHex1HBUnmN/bb6s\n" + "sS1Arm50NEHMlqGfbsdCxq2iodMvrGWvdRAPaf/7Ii1UwUhEzxyKYAXC3KRAgioh\n" + "C0pvGmAFq1ciDYRhANPlW92lIgkt83WwGtOcES2u36VmUxBfdQe6rO3ldoZHVofY\n" + "uIG/ubBVLz0NhWMaRYSUzTv/4PKJ4paIS7COUROYsyKwc5wNjTcR2PB7RRW+YHgM\n" + "FkvqPpLjLAGpHdN+wuPNLlUcyzkZVhhXxvQJ9gc5hw/LLQvbmeiGIZCvOVy3ZSfi\n" + "cGw2jkbqKcFttVV52Wild3ZigALZtkKuFnGw5DEIfk4EAZhG8eHfFQIDAQABo4IE\n" + "jzCCBIswCwYDVR0PBAQDAgWgMB0GA1UdDgQWBBR4EAIG7OggvIFAhrB8m0eyhCKV\n" + "GzAfBgNVHSMEGDAWgBQ4Y3b6tgU6qVlPSoeNoIO3fpE6CzCCAbkGA1UdHwSCAbAw\n" + "ggGsMIIBqKCCAaSgggGghoHibGRhcDovLy9DTj1JbnRlbCUyMEludHJhbmV0JTIw\n" + "QmFzaWMlMjBJc3N1aW5nJTIwQ0ElMjAyQigyKSxDTj1BWlNNQ1NJQkVDQTAyLENO\n" + "PUNEUCxDTj1QdWJsaWMlMjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNlcyxDTj1D\n" + "b25maWd1cmF0aW9uLERDPWNvcnAsREM9aW50ZWwsREM9Y29tP2NlcnRpZmljYXRl\n" + "UmV2b2NhdGlvbkxpc3Q/YmFzZT9vYmplY3RDbGFzcz1jUkxEaXN0cmlidXRpb25Q\n" + "b2ludIZXaHR0cDovL3d3dy5pbnRlbC5jb20vcmVwb3NpdG9yeS9DUkwvSW50ZWwl\n" + "MjBJbnRyYW5ldCUyMEJhc2ljJTIwSXNzdWluZyUyMENBJTIwMkIoMikuY3JshmBo\n" + "dHRwOi8vY2VydGlmaWNhdGVzLmludGVsLmNvbS9yZXBvc2l0b3J5L0NSTC9JbnRl\n" + "bCUyMEludHJhbmV0JTIwQmFzaWMlMjBJc3N1aW5nJTIwQ0ElMjAyQigyKS5jcmww\n" + "ggHLBggrBgEFBQcBAQSCAb0wggG5MIHRBggrBgEFBQcwAoaBxGxkYXA6Ly8vQ049\n" + "SW50ZWwlMjBJbnRyYW5ldCUyMEJhc2ljJTIwSXNzdWluZyUyMENBJTIwMkIsQ049\n" + "QUlBLENOPVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNv\n" + "bmZpZ3VyYXRpb24sREM9Y29ycCxEQz1pbnRlbCxEQz1jb20/Y0FDZXJ0aWZpY2F0\n" + "ZT9iYXNlP29iamVjdENsYXNzPWNlcnRpZmljYXRpb25BdXRob3JpdHkwbAYIKwYB\n" + "BQUHMAKGYGh0dHA6Ly93d3cuaW50ZWwuY29tL3JlcG9zaXRvcnkvY2VydGlmaWNh\n" + "dGVzL0ludGVsJTIwSW50cmFuZXQlMjBCYXNpYyUyMElzc3VpbmclMjBDQSUyMDJC\n" + "KDIpLmNydDB1BggrBgEFBQcwAoZpaHR0cDovL2NlcnRpZmljYXRlcy5pbnRlbC5j\n" + "b20vcmVwb3NpdG9yeS9jZXJ0aWZpY2F0ZXMvSW50ZWwlMjBJbnRyYW5ldCUyMEJh\n" + "c2ljJTIwSXNzdWluZyUyMENBJTIwMkIoMikuY3J0MD0GCSsGAQQBgjcVBwQwMC4G\n" + "JisGAQQBgjcVCIbDjHWEmeVRg/2BKIWOn1OCkcAJZ4eC0UGC37J5AgFkAgERMB0G\n" + "A1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAnBgkrBgEEAYI3FQoEGjAYMAoG\n" + "CCsGAQUFBwMCMAoGCCsGAQUFBwMBMCkGA1UdEQQiMCCCD3Njc2lyLmludGVsLmNv\n" + "bYINdnBuLmludGVsLmNvbTANBgkqhkiG9w0BAQUFAAOCAQEALjO591IHOTt28HZ9\n" + "+Vm2TJp8EJSgWW3luKFAAPUOxix5FgK7mqNQk1052qV8NCQKqChO64f6kl3R29Pp\n" + "yv0ALYaxdYZXkxPuts05gwu9caeH9fK6vGTRk5pWygVIsobS2MypCYFs9VftFw5d\n" + "EPUAOsigQmkBC+k+icYzZDjm4HBGd0mTHwniNsKkkjxSnF4UGH9OYp4+hs9/pWly\n" + "19X4gVWwuxKB59TOe/tVxHBt57zZA3zYyXG+VPzVmklmYLPxVFcmeUDOjWU3x3Wp\n" + "0D5YUmvQlsd4+73IYw0BrvB42bQEFDUU/v0u6mwluk1m0LEdm+jlM/YCbrAgA3O8\n" + "eV1xMQ==\n" + "-----END CERTIFICATE-----\n"; /* GnuTLS internally calls time() to find out the current time when verifying certificates. To avoid a time bomb, we hard code the current time. This should work fine on systems where the library call to time is resolved at run-time. */ -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1412850586; @@ -324,9 +326,9 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "|<%d>| %s", level, str); } -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (attempt == 0) { strcpy(pin, PIN); @@ -351,7 +353,7 @@ void doit(void) if (gnutls_fips140_mode_enabled()) exit(77); - /* The overloading of time() seems to work in linux (ELF?) + /* The overloading of time() seems to work in linux (ELF?) * systems only. Disable it on windows. */ #ifdef _WIN32 @@ -375,8 +377,9 @@ void doit(void) set_softhsm_conf(CONFIG); snprintf(buf, sizeof(buf), - "%s --init-token --slot 0 --label test --so-pin " PIN " --pin " - PIN, bin); + "%s --init-token --slot 0 --label test --so-pin " PIN + " --pin " PIN, + bin); system(buf); ret = gnutls_pkcs11_add_provider(lib, "trusted"); @@ -392,8 +395,7 @@ void doit(void) ret = gnutls_x509_crt_init(&certs[j]); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_init[%d,%d]: %s\n", + fprintf(stderr, "gnutls_x509_crt_init[%d,%d]: %s\n", (int)3, (int)j, gnutls_strerror(ret)); exit(1); } @@ -401,21 +403,20 @@ void doit(void) tmp.data = (unsigned char *)ca_list[j]; tmp.size = strlen(ca_list[j]); - ret = - gnutls_x509_crt_import(certs[j], &tmp, GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(certs[j], &tmp, + GNUTLS_X509_FMT_PEM); if (debug > 2) printf("done\n"); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_import[%d]: %s\n", + fprintf(stderr, "gnutls_x509_crt_import[%d]: %s\n", (int)j, gnutls_strerror(ret)); exit(1); } gnutls_x509_crt_print(certs[j], GNUTLS_CRT_PRINT_ONELINE, &tmp); if (debug) - printf("\tCertificate %d: %.*s\n", (int)j, - tmp.size, tmp.data); + printf("\tCertificate %d: %.*s\n", (int)j, tmp.size, + tmp.data); gnutls_free(tmp.data); } @@ -485,12 +486,11 @@ void doit(void) for (j = 0; ca_list[j]; j++) { char name[64]; snprintf(name, sizeof(name), "test-ca%d", j); - ret = - gnutls_pkcs11_copy_x509_crt(SOFTHSM_URL, certs[j], name, - GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED - | GNUTLS_PKCS11_OBJ_FLAG_MARK_CA - | - GNUTLS_PKCS11_OBJ_FLAG_LOGIN_SO); + ret = gnutls_pkcs11_copy_x509_crt( + SOFTHSM_URL, certs[j], name, + GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED | + GNUTLS_PKCS11_OBJ_FLAG_MARK_CA | + GNUTLS_PKCS11_OBJ_FLAG_LOGIN_SO); if (ret < 0) { fail("gnutls_pkcs11_copy_x509_crt: %s\n", gnutls_strerror(ret)); @@ -503,14 +503,14 @@ void doit(void) ret = gnutls_x509_trust_list_add_trust_file(tl, OBJ_URL, NULL, 0, 0, 0); if (ret != 1) { - fail("gnutls_x509_trust_list_add_trust_file (with expl. object 0): %d\n", ret); + fail("gnutls_x509_trust_list_add_trust_file (with expl. object 0): %d\n", + ret); exit(1); } /* extract the issuer of the certificate */ - ret = - gnutls_x509_trust_list_get_issuer(tl, intermediate, &issuer, - GNUTLS_TL_GET_COPY); + ret = gnutls_x509_trust_list_get_issuer(tl, intermediate, &issuer, + GNUTLS_TL_GET_COPY); if (ret < 0) { fail("gnutls_x509_trust_list_get_issuer (with expl. object) should have succeeded\n"); exit(1); @@ -523,46 +523,44 @@ void doit(void) */ gnutls_x509_trust_list_init(&tl, 0); - ret = - gnutls_x509_trust_list_add_trust_file(tl, SOFTHSM_URL, NULL, 0, 0, - 0); + ret = gnutls_x509_trust_list_add_trust_file(tl, SOFTHSM_URL, NULL, 0, 0, + 0); if (ret < 0) { fail("gnutls_x509_trust_list_add_trust_file\n"); exit(1); } /* extract the issuer of the certificate */ - ret = - gnutls_x509_trust_list_get_issuer(tl, intermediate, &issuer, - GNUTLS_TL_GET_COPY); + ret = gnutls_x509_trust_list_get_issuer(tl, intermediate, &issuer, + GNUTLS_TL_GET_COPY); if (ret < 0) { fail("gnutls_x509_trust_list_get_issuer should have succeeded\n"); exit(1); } gnutls_x509_crt_deinit(issuer); - ret = - gnutls_pkcs11_crt_is_known(SOFTHSM_URL, certs[2], - GNUTLS_PKCS11_OBJ_FLAG_COMPARE_KEY | - GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED); + ret = gnutls_pkcs11_crt_is_known( + SOFTHSM_URL, certs[2], + GNUTLS_PKCS11_OBJ_FLAG_COMPARE_KEY | + GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED); if (ret == 0) { fail("error in gnutls_pkcs11_crt_is_known - 0\n"); exit(1); } - ret = - gnutls_pkcs11_crt_is_known(SOFTHSM_URL, certs[0], - GNUTLS_PKCS11_OBJ_FLAG_COMPARE | - GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED); + ret = gnutls_pkcs11_crt_is_known( + SOFTHSM_URL, certs[0], + GNUTLS_PKCS11_OBJ_FLAG_COMPARE | + GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED); if (ret == 0) { fail("error in gnutls_pkcs11_crt_is_known - 0\n"); exit(1); } - ret = - gnutls_pkcs11_crt_is_known(SOFTHSM_URL, certs[1], - GNUTLS_PKCS11_OBJ_FLAG_COMPARE | - GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED); + ret = gnutls_pkcs11_crt_is_known( + SOFTHSM_URL, certs[1], + GNUTLS_PKCS11_OBJ_FLAG_COMPARE | + GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED); if (ret == 0) { fail("error in gnutls_pkcs11_crt_is_known - 0\n"); exit(1); @@ -603,54 +601,53 @@ void doit(void) } /* these are invalid certificates but their key matches existing keys, the following should work */ - ret = - gnutls_pkcs11_crt_is_known(SOFTHSM_URL, same_dn, - GNUTLS_PKCS11_OBJ_FLAG_COMPARE_KEY | - GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED); + ret = gnutls_pkcs11_crt_is_known( + SOFTHSM_URL, same_dn, + GNUTLS_PKCS11_OBJ_FLAG_COMPARE_KEY | + GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED); if (ret == 0) { fail("error in gnutls_pkcs11_crt_is_known - did not find a cert that does match key\n"); exit(1); } - ret = - gnutls_pkcs11_crt_is_known(SOFTHSM_URL, same_issuer, - GNUTLS_PKCS11_OBJ_FLAG_COMPARE_KEY | - GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED); + ret = gnutls_pkcs11_crt_is_known( + SOFTHSM_URL, same_issuer, + GNUTLS_PKCS11_OBJ_FLAG_COMPARE_KEY | + GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED); if (ret == 0) { fail("error in gnutls_pkcs11_crt_is_known - did not find a cert that does match key\n"); exit(1); } /* The following check whether the RETRIEVE_TRUSTED implies compare of the certificate */ - ret = - gnutls_pkcs11_crt_is_known(SOFTHSM_URL, same_dn, - GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED); + ret = gnutls_pkcs11_crt_is_known( + SOFTHSM_URL, same_dn, GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED); if (ret != 0) { fail("error in gnutls_pkcs11_crt_is_known - found a cert that doesn't match\n"); exit(1); } - ret = - gnutls_pkcs11_crt_is_known(SOFTHSM_URL, same_issuer, - GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED); + ret = gnutls_pkcs11_crt_is_known( + SOFTHSM_URL, same_issuer, + GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED); if (ret != 0) { fail("error in gnutls_pkcs11_crt_is_known - found a cert that doesn't match\n"); exit(1); } - ret = - gnutls_pkcs11_crt_is_known(SOFTHSM_URL, same_dn, - GNUTLS_PKCS11_OBJ_FLAG_COMPARE | - GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED); + ret = gnutls_pkcs11_crt_is_known( + SOFTHSM_URL, same_dn, + GNUTLS_PKCS11_OBJ_FLAG_COMPARE | + GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED); if (ret != 0) { fail("error in gnutls_pkcs11_crt_is_known - found a cert that doesn't match\n"); exit(1); } - ret = - gnutls_pkcs11_crt_is_known(SOFTHSM_URL, same_issuer, - GNUTLS_PKCS11_OBJ_FLAG_COMPARE | - GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED); + ret = gnutls_pkcs11_crt_is_known( + SOFTHSM_URL, same_issuer, + GNUTLS_PKCS11_OBJ_FLAG_COMPARE | + GNUTLS_PKCS11_OBJ_FLAG_RETRIEVE_TRUSTED); if (ret != 0) { fail("error in gnutls_pkcs11_crt_is_known - found a cert that doesn't match\n"); exit(1); diff --git a/tests/pkcs11/pkcs11-mechanisms.c b/tests/pkcs11/pkcs11-mechanisms.c index 464abfc831..f35c1ee469 100644 --- a/tests/pkcs11/pkcs11-mechanisms.c +++ b/tests/pkcs11/pkcs11-mechanisms.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -41,12 +41,12 @@ #if defined(HAVE___REGISTER_ATFORK) -# ifdef _WIN32 -# define P11LIB "libpkcs11mock1.dll" -# else -# include -# define P11LIB "libpkcs11mock1.so" -# endif +#ifdef _WIN32 +#define P11LIB "libpkcs11mock1.dll" +#else +#include +#define P11LIB "libpkcs11mock1.so" +#endif static void tls_log_func(int level, const char *str) { @@ -91,11 +91,11 @@ void doit(void) if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) break; success("mech: %lu\n", mech); - ret = - gnutls_pkcs11_token_check_mechanism("pkcs11:", mech, NULL, - 0, 0); + ret = gnutls_pkcs11_token_check_mechanism("pkcs11:", mech, NULL, + 0, 0); if (ret == 0) { - fail("mechanism %ld was reported are supported, but is not found!\n", mech); + fail("mechanism %ld was reported are supported, but is not found!\n", + mech); } } if (debug) diff --git a/tests/pkcs11/pkcs11-mock-ext.h b/tests/pkcs11/pkcs11-mock-ext.h index 83f64b5d36..fc952ba2ad 100644 --- a/tests/pkcs11/pkcs11-mock-ext.h +++ b/tests/pkcs11/pkcs11-mock-ext.h @@ -20,13 +20,13 @@ */ #ifndef PKCS11_MOCK_EXT_H -# define PKCS11_MOCK_EXT_H +#define PKCS11_MOCK_EXT_H /* This flag instructs the module to return CKR_OK on sensitive * objects */ -# define MOCK_FLAG_BROKEN_GET_ATTRIBUTES 1 -# define MOCK_FLAG_ALWAYS_AUTH (1<<1) +#define MOCK_FLAG_BROKEN_GET_ATTRIBUTES 1 +#define MOCK_FLAG_ALWAYS_AUTH (1 << 1) /* simulate the safenet HSMs always auth behavior */ -# define MOCK_FLAG_SAFENET_ALWAYS_AUTH (1<<2) +#define MOCK_FLAG_SAFENET_ALWAYS_AUTH (1 << 2) #endif diff --git a/tests/pkcs11/pkcs11-mock.c b/tests/pkcs11/pkcs11-mock.c index b264ebc2f3..957e0cc2e7 100644 --- a/tests/pkcs11/pkcs11-mock.c +++ b/tests/pkcs11/pkcs11-mock.c @@ -32,118 +32,118 @@ unsigned int pkcs11_mock_flags = 0; * module. */ const char mock_certificate[] = - "\x30\x82\x03\x97\x30\x82\x02\x4f\xa0\x03\x02\x01\x02\x02\x04\x4d" - "\xa7\x54\x21\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b" - "\x05\x00\x30\x32\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x42" - "\x45\x31\x0f\x30\x0d\x06\x03\x55\x04\x0a\x13\x06\x47\x6e\x75\x54" - "\x4c\x53\x31\x12\x30\x10\x06\x03\x55\x04\x03\x13\x09\x6c\x6f\x63" - "\x61\x6c\x68\x6f\x73\x74\x30\x1e\x17\x0d\x31\x31\x30\x34\x31\x34" - "\x32\x30\x30\x38\x30\x32\x5a\x17\x0d\x33\x38\x30\x38\x32\x39\x32" - "\x30\x30\x38\x30\x34\x5a\x30\x32\x31\x0b\x30\x09\x06\x03\x55\x04" - "\x06\x13\x02\x42\x45\x31\x0f\x30\x0d\x06\x03\x55\x04\x0a\x13\x06" - "\x47\x6e\x75\x54\x4c\x53\x31\x12\x30\x10\x06\x03\x55\x04\x03\x13" - "\x09\x6c\x6f\x63\x61\x6c\x68\x6f\x73\x74\x30\x82\x01\x52\x30\x0d" - "\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01" - "\x3f\x00\x30\x82\x01\x3a\x02\x82\x01\x31\x00\xdd\xcf\x97\xd2\xa5" - "\x1d\x95\xdd\x86\x18\xd8\xc4\xb9\xad\xa6\x0c\xb4\x9d\xb6\xdc\xfa" - "\xdc\x21\xe1\x3a\x62\x34\x07\xe8\x33\xb2\xe8\x97\xee\x2c\x41\xd2" - "\x12\xf1\x5f\xed\xe4\x76\xff\x65\x26\x1e\x0c\xc7\x41\x15\x69\x5f" - "\x0d\xf9\xad\x89\x14\x8d\xea\xd7\x16\x52\x9a\x47\xc1\xbb\x00\x02" - "\xe4\x88\x45\x73\x78\xa4\xae\xdb\x38\xc3\xc6\x07\xd2\x64\x0e\x87" - "\xed\x74\x8c\x6b\xc4\xc0\x02\x50\x7c\x4e\xa6\xd1\x58\xe9\xe5\x13" - "\x09\xa9\xdb\x5a\xea\xeb\x0f\x06\x80\x5c\x09\xef\x94\xc8\xe9\xfb" - "\x37\x2e\x75\xe1\xac\x93\xad\x9b\x37\x13\x4b\x66\x3a\x76\x33\xd8" - "\xc4\xd7\x4c\xfb\x61\xc8\x92\x21\x07\xfc\xdf\xa9\x88\x54\xe4\xa3" - "\xa9\x47\xd2\x6c\xb8\xe3\x39\x89\x11\x88\x38\x2d\xa2\xdc\x3e\x5e" - "\x4a\xa9\xa4\x8e\xd5\x1f\xb2\xd0\xdd\x41\x3c\xda\x10\x68\x9e\x47" - "\x1b\x65\x02\xa2\xc5\x28\x73\x02\x83\x03\x09\xfd\xf5\x29\x7e\x97" - "\xdc\x2a\x4e\x4b\xaa\x79\x46\x46\x70\x86\x1b\x9b\xb8\xf6\x8a\xbe" - "\x29\x87\x7d\x5f\xda\xa5\x97\x6b\xef\xc8\x43\x09\x43\xe2\x1f\x8a" - "\x16\x7e\x1d\x50\x5d\xf5\xda\x02\xee\xf2\xc3\x2a\x48\xe6\x6b\x30" - "\xea\x02\xd7\xef\xac\x8b\x0c\xb8\xc1\x85\xd8\xbf\x7c\x85\xa8\x1e" - "\x83\xbe\x5c\x26\x2e\x79\x7b\x47\xf5\x4a\x3f\x66\x62\x92\xfd\x41" - "\x20\xb6\x2c\x00\xf0\x52\xca\x26\x06\x2d\x7c\xcf\x7a\x50\x7d\x0f" - "\xcb\xdd\x97\x20\xc8\x6f\xe4\xe0\x50\xf4\xe3\x02\x03\x01\x00\x01" - "\xa3\x55\x30\x53\x30\x0c\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x02" - "\x30\x00\x30\x13\x06\x03\x55\x1d\x25\x04\x0c\x30\x0a\x06\x08\x2b" - "\x06\x01\x05\x05\x07\x03\x01\x30\x0f\x06\x03\x55\x1d\x0f\x01\x01" - "\xff\x04\x05\x03\x03\x07\xa0\x00\x30\x1d\x06\x03\x55\x1d\x0e\x04" - "\x16\x04\x14\x92\x53\xd6\x71\xb9\xf8\x68\xaa\xb3\x53\xf6\x8d\xf5" - "\x39\x45\x66\x9c\xa7\xe5\x31\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7" - "\x0d\x01\x01\x0b\x05\x00\x03\x82\x01\x31\x00\x98\xbf\x48\x89\xc1" - "\xe6\xe6\x15\x13\xcc\xfc\xba\xed\xa0\x89\xe5\x86\x45\x30\x73\x68" - "\xb2\x79\x1f\x88\x02\x80\xfb\x2d\xc9\xb8\x21\x55\x8d\xc5\xb7\x56" - "\x1b\xcf\xc3\x76\xee\xd0\xf0\xd9\x22\x3a\x63\x92\xc5\x04\x86\x70" - "\x1e\x42\x33\x2a\x3b\xc4\x14\x08\xc5\x42\x92\x73\x7c\x3e\x39\xc0" - "\xee\x34\xc7\x33\x16\x5f\x93\xae\xcf\x1f\x9a\x30\x09\x51\xfe\x2d" - "\x94\x9c\x28\xad\x2a\x7e\xe4\x14\x81\x45\x6b\x0d\xd7\x11\x21\xfc" - "\xdb\x27\x17\x74\xb4\xcc\x94\x1a\x6e\x9e\x7b\x58\xa9\xe0\x06\x8d" - "\xda\x5f\x60\xe1\xb8\x6f\x28\x68\xb6\x58\xbe\xc5\xac\x36\x47\x37" - "\xf6\xa8\x38\x74\x23\x81\xf3\x22\xbe\x61\xff\x08\x08\x87\xeb\xc2" - "\x8f\x29\x25\x75\x5d\x4c\xeb\xd5\x09\x28\xab\x7b\x99\xf9\x69\x08" - "\xa2\xc6\x02\xd2\x2e\xcd\xfa\xf1\x19\xce\x3f\x44\x6a\xa1\x4b\xa8" - "\x56\xd5\x11\xae\x44\xe3\x68\x05\x50\x57\x8d\x72\x0f\xc7\x21\xdb" - "\x8f\xa3\x50\x78\x5d\x5a\x39\xcb\x90\x3d\x52\x43\x33\xbf\xea\x89" - "\x07\x1a\x92\xcc\x85\x27\xa8\x3d\x34\xb8\x5b\x52\xee\xef\x20\xb9" - "\xb6\xff\xea\xc5\x90\xd3\x47\xc5\x51\x90\xe2\xe6\x3e\x52\xb9\x1e" - "\x79\x18\xbe\xfd\xe2\x24\xbe\x47\x32\x5a\xb0\x03\x6b\xaa\xdb\xc3" - "\xdb\xf6\x60\x44\x08\xb6\x2c\x19\x47\xa2\xf0\x43\x7f\xf0\x07\x97" - "\x57\xab\xec\xa0\xb8\x6a\x49\xce\x08\xe6\xc3\x4d\xf2\xa4\xe9\xb8" - "\x43\xe7\xf0\x84\xd7\x1a\x72\x14\x5d\x82\x1a"; + "\x30\x82\x03\x97\x30\x82\x02\x4f\xa0\x03\x02\x01\x02\x02\x04\x4d" + "\xa7\x54\x21\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b" + "\x05\x00\x30\x32\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x42" + "\x45\x31\x0f\x30\x0d\x06\x03\x55\x04\x0a\x13\x06\x47\x6e\x75\x54" + "\x4c\x53\x31\x12\x30\x10\x06\x03\x55\x04\x03\x13\x09\x6c\x6f\x63" + "\x61\x6c\x68\x6f\x73\x74\x30\x1e\x17\x0d\x31\x31\x30\x34\x31\x34" + "\x32\x30\x30\x38\x30\x32\x5a\x17\x0d\x33\x38\x30\x38\x32\x39\x32" + "\x30\x30\x38\x30\x34\x5a\x30\x32\x31\x0b\x30\x09\x06\x03\x55\x04" + "\x06\x13\x02\x42\x45\x31\x0f\x30\x0d\x06\x03\x55\x04\x0a\x13\x06" + "\x47\x6e\x75\x54\x4c\x53\x31\x12\x30\x10\x06\x03\x55\x04\x03\x13" + "\x09\x6c\x6f\x63\x61\x6c\x68\x6f\x73\x74\x30\x82\x01\x52\x30\x0d" + "\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01" + "\x3f\x00\x30\x82\x01\x3a\x02\x82\x01\x31\x00\xdd\xcf\x97\xd2\xa5" + "\x1d\x95\xdd\x86\x18\xd8\xc4\xb9\xad\xa6\x0c\xb4\x9d\xb6\xdc\xfa" + "\xdc\x21\xe1\x3a\x62\x34\x07\xe8\x33\xb2\xe8\x97\xee\x2c\x41\xd2" + "\x12\xf1\x5f\xed\xe4\x76\xff\x65\x26\x1e\x0c\xc7\x41\x15\x69\x5f" + "\x0d\xf9\xad\x89\x14\x8d\xea\xd7\x16\x52\x9a\x47\xc1\xbb\x00\x02" + "\xe4\x88\x45\x73\x78\xa4\xae\xdb\x38\xc3\xc6\x07\xd2\x64\x0e\x87" + "\xed\x74\x8c\x6b\xc4\xc0\x02\x50\x7c\x4e\xa6\xd1\x58\xe9\xe5\x13" + "\x09\xa9\xdb\x5a\xea\xeb\x0f\x06\x80\x5c\x09\xef\x94\xc8\xe9\xfb" + "\x37\x2e\x75\xe1\xac\x93\xad\x9b\x37\x13\x4b\x66\x3a\x76\x33\xd8" + "\xc4\xd7\x4c\xfb\x61\xc8\x92\x21\x07\xfc\xdf\xa9\x88\x54\xe4\xa3" + "\xa9\x47\xd2\x6c\xb8\xe3\x39\x89\x11\x88\x38\x2d\xa2\xdc\x3e\x5e" + "\x4a\xa9\xa4\x8e\xd5\x1f\xb2\xd0\xdd\x41\x3c\xda\x10\x68\x9e\x47" + "\x1b\x65\x02\xa2\xc5\x28\x73\x02\x83\x03\x09\xfd\xf5\x29\x7e\x97" + "\xdc\x2a\x4e\x4b\xaa\x79\x46\x46\x70\x86\x1b\x9b\xb8\xf6\x8a\xbe" + "\x29\x87\x7d\x5f\xda\xa5\x97\x6b\xef\xc8\x43\x09\x43\xe2\x1f\x8a" + "\x16\x7e\x1d\x50\x5d\xf5\xda\x02\xee\xf2\xc3\x2a\x48\xe6\x6b\x30" + "\xea\x02\xd7\xef\xac\x8b\x0c\xb8\xc1\x85\xd8\xbf\x7c\x85\xa8\x1e" + "\x83\xbe\x5c\x26\x2e\x79\x7b\x47\xf5\x4a\x3f\x66\x62\x92\xfd\x41" + "\x20\xb6\x2c\x00\xf0\x52\xca\x26\x06\x2d\x7c\xcf\x7a\x50\x7d\x0f" + "\xcb\xdd\x97\x20\xc8\x6f\xe4\xe0\x50\xf4\xe3\x02\x03\x01\x00\x01" + "\xa3\x55\x30\x53\x30\x0c\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x02" + "\x30\x00\x30\x13\x06\x03\x55\x1d\x25\x04\x0c\x30\x0a\x06\x08\x2b" + "\x06\x01\x05\x05\x07\x03\x01\x30\x0f\x06\x03\x55\x1d\x0f\x01\x01" + "\xff\x04\x05\x03\x03\x07\xa0\x00\x30\x1d\x06\x03\x55\x1d\x0e\x04" + "\x16\x04\x14\x92\x53\xd6\x71\xb9\xf8\x68\xaa\xb3\x53\xf6\x8d\xf5" + "\x39\x45\x66\x9c\xa7\xe5\x31\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7" + "\x0d\x01\x01\x0b\x05\x00\x03\x82\x01\x31\x00\x98\xbf\x48\x89\xc1" + "\xe6\xe6\x15\x13\xcc\xfc\xba\xed\xa0\x89\xe5\x86\x45\x30\x73\x68" + "\xb2\x79\x1f\x88\x02\x80\xfb\x2d\xc9\xb8\x21\x55\x8d\xc5\xb7\x56" + "\x1b\xcf\xc3\x76\xee\xd0\xf0\xd9\x22\x3a\x63\x92\xc5\x04\x86\x70" + "\x1e\x42\x33\x2a\x3b\xc4\x14\x08\xc5\x42\x92\x73\x7c\x3e\x39\xc0" + "\xee\x34\xc7\x33\x16\x5f\x93\xae\xcf\x1f\x9a\x30\x09\x51\xfe\x2d" + "\x94\x9c\x28\xad\x2a\x7e\xe4\x14\x81\x45\x6b\x0d\xd7\x11\x21\xfc" + "\xdb\x27\x17\x74\xb4\xcc\x94\x1a\x6e\x9e\x7b\x58\xa9\xe0\x06\x8d" + "\xda\x5f\x60\xe1\xb8\x6f\x28\x68\xb6\x58\xbe\xc5\xac\x36\x47\x37" + "\xf6\xa8\x38\x74\x23\x81\xf3\x22\xbe\x61\xff\x08\x08\x87\xeb\xc2" + "\x8f\x29\x25\x75\x5d\x4c\xeb\xd5\x09\x28\xab\x7b\x99\xf9\x69\x08" + "\xa2\xc6\x02\xd2\x2e\xcd\xfa\xf1\x19\xce\x3f\x44\x6a\xa1\x4b\xa8" + "\x56\xd5\x11\xae\x44\xe3\x68\x05\x50\x57\x8d\x72\x0f\xc7\x21\xdb" + "\x8f\xa3\x50\x78\x5d\x5a\x39\xcb\x90\x3d\x52\x43\x33\xbf\xea\x89" + "\x07\x1a\x92\xcc\x85\x27\xa8\x3d\x34\xb8\x5b\x52\xee\xef\x20\xb9" + "\xb6\xff\xea\xc5\x90\xd3\x47\xc5\x51\x90\xe2\xe6\x3e\x52\xb9\x1e" + "\x79\x18\xbe\xfd\xe2\x24\xbe\x47\x32\x5a\xb0\x03\x6b\xaa\xdb\xc3" + "\xdb\xf6\x60\x44\x08\xb6\x2c\x19\x47\xa2\xf0\x43\x7f\xf0\x07\x97" + "\x57\xab\xec\xa0\xb8\x6a\x49\xce\x08\xe6\xc3\x4d\xf2\xa4\xe9\xb8" + "\x43\xe7\xf0\x84\xd7\x1a\x72\x14\x5d\x82\x1a"; /* ca == true */ const char mock_cert_ext1[] = - "\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff"; + "\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff"; /* GNUTLS_KEY_ENCIPHER_ONLY | GNUTLS_KEY_KEY_ENCIPHERMENT | GNUTLS_KEY_KEY_CERT_SIGN */ const char mock_cert_ext2[] = - "\x30\x0f\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x05\x03\x03\x07\x25\x00"; + "\x30\x0f\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x05\x03\x03\x07\x25\x00"; const char mock_pubkey[] = - "\x30\x82\x01\x52\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01" - "\x01\x05\x00\x03\x82\x01\x3f\x00\x30\x82\x01\x3a\x02\x82\x01\x31" - "\x00\xdd\xcf\x97\xd2\xa5\x1d\x95\xdd\x86\x18\xd8\xc4\xb9\xad\xa6" - "\x0c\xb4\x9d\xb6\xdc\xfa\xdc\x21\xe1\x3a\x62\x34\x07\xe8\x33\xb2" - "\xe8\x97\xee\x2c\x41\xd2\x12\xf1\x5f\xed\xe4\x76\xff\x65\x26\x1e" - "\x0c\xc7\x41\x15\x69\x5f\x0d\xf9\xad\x89\x14\x8d\xea\xd7\x16\x52" - "\x9a\x47\xc1\xbb\x00\x02\xe4\x88\x45\x73\x78\xa4\xae\xdb\x38\xc3" - "\xc6\x07\xd2\x64\x0e\x87\xed\x74\x8c\x6b\xc4\xc0\x02\x50\x7c\x4e" - "\xa6\xd1\x58\xe9\xe5\x13\x09\xa9\xdb\x5a\xea\xeb\x0f\x06\x80\x5c" - "\x09\xef\x94\xc8\xe9\xfb\x37\x2e\x75\xe1\xac\x93\xad\x9b\x37\x13" - "\x4b\x66\x3a\x76\x33\xd8\xc4\xd7\x4c\xfb\x61\xc8\x92\x21\x07\xfc" - "\xdf\xa9\x88\x54\xe4\xa3\xa9\x47\xd2\x6c\xb8\xe3\x39\x89\x11\x88" - "\x38\x2d\xa2\xdc\x3e\x5e\x4a\xa9\xa4\x8e\xd5\x1f\xb2\xd0\xdd\x41" - "\x3c\xda\x10\x68\x9e\x47\x1b\x65\x02\xa2\xc5\x28\x73\x02\x83\x03" - "\x09\xfd\xf5\x29\x7e\x97\xdc\x2a\x4e\x4b\xaa\x79\x46\x46\x70\x86" - "\x1b\x9b\xb8\xf6\x8a\xbe\x29\x87\x7d\x5f\xda\xa5\x97\x6b\xef\xc8" - "\x43\x09\x43\xe2\x1f\x8a\x16\x7e\x1d\x50\x5d\xf5\xda\x02\xee\xf2" - "\xc3\x2a\x48\xe6\x6b\x30\xea\x02\xd7\xef\xac\x8b\x0c\xb8\xc1\x85" - "\xd8\xbf\x7c\x85\xa8\x1e\x83\xbe\x5c\x26\x2e\x79\x7b\x47\xf5\x4a" - "\x3f\x66\x62\x92\xfd\x41\x20\xb6\x2c\x00\xf0\x52\xca\x26\x06\x2d" - "\x7c\xcf\x7a\x50\x7d\x0f\xcb\xdd\x97\x20\xc8\x6f\xe4\xe0\x50\xf4" - "\xe3\x02\x03\x01\x00\x01"; + "\x30\x82\x01\x52\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01" + "\x01\x05\x00\x03\x82\x01\x3f\x00\x30\x82\x01\x3a\x02\x82\x01\x31" + "\x00\xdd\xcf\x97\xd2\xa5\x1d\x95\xdd\x86\x18\xd8\xc4\xb9\xad\xa6" + "\x0c\xb4\x9d\xb6\xdc\xfa\xdc\x21\xe1\x3a\x62\x34\x07\xe8\x33\xb2" + "\xe8\x97\xee\x2c\x41\xd2\x12\xf1\x5f\xed\xe4\x76\xff\x65\x26\x1e" + "\x0c\xc7\x41\x15\x69\x5f\x0d\xf9\xad\x89\x14\x8d\xea\xd7\x16\x52" + "\x9a\x47\xc1\xbb\x00\x02\xe4\x88\x45\x73\x78\xa4\xae\xdb\x38\xc3" + "\xc6\x07\xd2\x64\x0e\x87\xed\x74\x8c\x6b\xc4\xc0\x02\x50\x7c\x4e" + "\xa6\xd1\x58\xe9\xe5\x13\x09\xa9\xdb\x5a\xea\xeb\x0f\x06\x80\x5c" + "\x09\xef\x94\xc8\xe9\xfb\x37\x2e\x75\xe1\xac\x93\xad\x9b\x37\x13" + "\x4b\x66\x3a\x76\x33\xd8\xc4\xd7\x4c\xfb\x61\xc8\x92\x21\x07\xfc" + "\xdf\xa9\x88\x54\xe4\xa3\xa9\x47\xd2\x6c\xb8\xe3\x39\x89\x11\x88" + "\x38\x2d\xa2\xdc\x3e\x5e\x4a\xa9\xa4\x8e\xd5\x1f\xb2\xd0\xdd\x41" + "\x3c\xda\x10\x68\x9e\x47\x1b\x65\x02\xa2\xc5\x28\x73\x02\x83\x03" + "\x09\xfd\xf5\x29\x7e\x97\xdc\x2a\x4e\x4b\xaa\x79\x46\x46\x70\x86" + "\x1b\x9b\xb8\xf6\x8a\xbe\x29\x87\x7d\x5f\xda\xa5\x97\x6b\xef\xc8" + "\x43\x09\x43\xe2\x1f\x8a\x16\x7e\x1d\x50\x5d\xf5\xda\x02\xee\xf2" + "\xc3\x2a\x48\xe6\x6b\x30\xea\x02\xd7\xef\xac\x8b\x0c\xb8\xc1\x85" + "\xd8\xbf\x7c\x85\xa8\x1e\x83\xbe\x5c\x26\x2e\x79\x7b\x47\xf5\x4a" + "\x3f\x66\x62\x92\xfd\x41\x20\xb6\x2c\x00\xf0\x52\xca\x26\x06\x2d" + "\x7c\xcf\x7a\x50\x7d\x0f\xcb\xdd\x97\x20\xc8\x6f\xe4\xe0\x50\xf4" + "\xe3\x02\x03\x01\x00\x01"; const char mock_public_exponent[] = "\x01\x00\x01"; const char mock_modulus[] = - "\xDD\xCF\x97\xD2\xA5\x1D\x95\xDD\x86\x18\xD8\xC4\xB9\xAD\xA6\x0C" - "\xB4\x9D\xB6\xDC\xFA\xDC\x21\xE1\x3A\x62\x34\x07\xE8\x33\xB2\xE8" - "\x97\xEE\x2C\x41\xD2\x12\xF1\x5F\xED\xE4\x76\xFF\x65\x26\x1E\x0C" - "\xC7\x41\x15\x69\x5F\x0D\xF9\xAD\x89\x14\x8D\xEA\xD7\x16\x52\x9A" - "\x47\xC1\xBB\x00\x02\xE4\x88\x45\x73\x78\xA4\xAE\xDB\x38\xC3\xC6" - "\x07\xD2\x64\x0E\x87\xED\x74\x8C\x6B\xC4\xC0\x02\x50\x7C\x4E\xA6" - "\xD1\x58\xE9\xE5\x13\x09\xA9\xDB\x5A\xEA\xEB\x0F\x06\x80\x5C\x09" - "\xEF\x94\xC8\xE9\xFB\x37\x2E\x75\xE1\xAC\x93\xAD\x9B\x37\x13\x4B" - "\x66\x3A\x76\x33\xD8\xC4\xD7\x4C\xFB\x61\xC8\x92\x21\x07\xFC\xDF" - "\xA9\x88\x54\xE4\xA3\xA9\x47\xD2\x6C\xB8\xE3\x39\x89\x11\x88\x38" - "\x2D\xA2\xDC\x3E\x5E\x4A\xA9\xA4\x8E\xD5\x1F\xB2\xD0\xDD\x41\x3C" - "\xDA\x10\x68\x9E\x47\x1B\x65\x02\xA2\xC5\x28\x73\x02\x83\x03\x09" - "\xFD\xF5\x29\x7E\x97\xDC\x2A\x4E\x4B\xAA\x79\x46\x46\x70\x86\x1B" - "\x9B\xB8\xF6\x8A\xBE\x29\x87\x7D\x5F\xDA\xA5\x97\x6B\xEF\xC8\x43" - "\x09\x43\xE2\x1F\x8A\x16\x7E\x1D\x50\x5D\xF5\xDA\x02\xEE\xF2\xC3" - "\x2A\x48\xE6\x6B\x30\xEA\x02\xD7\xEF\xAC\x8B\x0C\xB8\xC1\x85\xD8" - "\xBF\x7C\x85\xA8\x1E\x83\xBE\x5C\x26\x2E\x79\x7B\x47\xF5\x4A\x3F" - "\x66\x62\x92\xFD\x41\x20\xB6\x2C\x00\xF0\x52\xCA\x26\x06\x2D\x7C" - "\xCF\x7A\x50\x7D\x0F\xCB\xDD\x97\x20\xC8\x6F\xE4\xE0\x50\xF4\xE3"; + "\xDD\xCF\x97\xD2\xA5\x1D\x95\xDD\x86\x18\xD8\xC4\xB9\xAD\xA6\x0C" + "\xB4\x9D\xB6\xDC\xFA\xDC\x21\xE1\x3A\x62\x34\x07\xE8\x33\xB2\xE8" + "\x97\xEE\x2C\x41\xD2\x12\xF1\x5F\xED\xE4\x76\xFF\x65\x26\x1E\x0C" + "\xC7\x41\x15\x69\x5F\x0D\xF9\xAD\x89\x14\x8D\xEA\xD7\x16\x52\x9A" + "\x47\xC1\xBB\x00\x02\xE4\x88\x45\x73\x78\xA4\xAE\xDB\x38\xC3\xC6" + "\x07\xD2\x64\x0E\x87\xED\x74\x8C\x6B\xC4\xC0\x02\x50\x7C\x4E\xA6" + "\xD1\x58\xE9\xE5\x13\x09\xA9\xDB\x5A\xEA\xEB\x0F\x06\x80\x5C\x09" + "\xEF\x94\xC8\xE9\xFB\x37\x2E\x75\xE1\xAC\x93\xAD\x9B\x37\x13\x4B" + "\x66\x3A\x76\x33\xD8\xC4\xD7\x4C\xFB\x61\xC8\x92\x21\x07\xFC\xDF" + "\xA9\x88\x54\xE4\xA3\xA9\x47\xD2\x6C\xB8\xE3\x39\x89\x11\x88\x38" + "\x2D\xA2\xDC\x3E\x5E\x4A\xA9\xA4\x8E\xD5\x1F\xB2\xD0\xDD\x41\x3C" + "\xDA\x10\x68\x9E\x47\x1B\x65\x02\xA2\xC5\x28\x73\x02\x83\x03\x09" + "\xFD\xF5\x29\x7E\x97\xDC\x2A\x4E\x4B\xAA\x79\x46\x46\x70\x86\x1B" + "\x9B\xB8\xF6\x8A\xBE\x29\x87\x7D\x5F\xDA\xA5\x97\x6B\xEF\xC8\x43" + "\x09\x43\xE2\x1F\x8A\x16\x7E\x1D\x50\x5D\xF5\xDA\x02\xEE\xF2\xC3" + "\x2A\x48\xE6\x6B\x30\xEA\x02\xD7\xEF\xAC\x8B\x0C\xB8\xC1\x85\xD8" + "\xBF\x7C\x85\xA8\x1E\x83\xBE\x5C\x26\x2E\x79\x7B\x47\xF5\x4A\x3F" + "\x66\x62\x92\xFD\x41\x20\xB6\x2C\x00\xF0\x52\xCA\x26\x06\x2D\x7C" + "\xCF\x7A\x50\x7D\x0F\xCB\xDD\x97\x20\xC8\x6F\xE4\xE0\x50\xF4\xE3"; const char mock_subject[] = - "DN: C=US, O=Test Government, OU=Test Department, OU=Test Agency/serialNumber="; + "DN: C=US, O=Test Government, OU=Test Department, OU=Test Agency/serialNumber="; CK_BBOOL pkcs11_mock_initialized = CK_FALSE; CK_BBOOL pkcs11_mock_session_opened = CK_FALSE; @@ -151,80 +151,78 @@ CK_BBOOL pkcs11_mock_session_reauth = CK_FALSE; static session_ptr_st *mock_session = NULL; -CK_FUNCTION_LIST pkcs11_mock_functions = { - {2, 20}, - &C_Initialize, - &C_Finalize, - &C_GetInfo, - &C_GetFunctionList, - &C_GetSlotList, - &C_GetSlotInfo, - &C_GetTokenInfo, - &C_GetMechanismList, - &C_GetMechanismInfo, - &C_InitToken, - &C_InitPIN, - &C_SetPIN, - &C_OpenSession, - &C_CloseSession, - &C_CloseAllSessions, - &C_GetSessionInfo, - &C_GetOperationState, - &C_SetOperationState, - &C_Login, - &C_Logout, - &C_CreateObject, - &C_CopyObject, - &C_DestroyObject, - &C_GetObjectSize, - &C_GetAttributeValue, - &C_SetAttributeValue, - &C_FindObjectsInit, - &C_FindObjects, - &C_FindObjectsFinal, - &C_EncryptInit, - &C_Encrypt, - &C_EncryptUpdate, - &C_EncryptFinal, - &C_DecryptInit, - &C_Decrypt, - &C_DecryptUpdate, - &C_DecryptFinal, - &C_DigestInit, - &C_Digest, - &C_DigestUpdate, - &C_DigestKey, - &C_DigestFinal, - &C_SignInit, - &C_Sign, - &C_SignUpdate, - &C_SignFinal, - &C_SignRecoverInit, - &C_SignRecover, - &C_VerifyInit, - &C_Verify, - &C_VerifyUpdate, - &C_VerifyFinal, - &C_VerifyRecoverInit, - &C_VerifyRecover, - &C_DigestEncryptUpdate, - &C_DecryptDigestUpdate, - &C_SignEncryptUpdate, - &C_DecryptVerifyUpdate, - &C_GenerateKey, - &C_GenerateKeyPair, - &C_WrapKey, - &C_UnwrapKey, - &C_DeriveKey, - &C_SeedRandom, - &C_GenerateRandom, - &C_GetFunctionStatus, - &C_CancelFunction, - &C_WaitForSlotEvent -}; +CK_FUNCTION_LIST pkcs11_mock_functions = { { 2, 20 }, + &C_Initialize, + &C_Finalize, + &C_GetInfo, + &C_GetFunctionList, + &C_GetSlotList, + &C_GetSlotInfo, + &C_GetTokenInfo, + &C_GetMechanismList, + &C_GetMechanismInfo, + &C_InitToken, + &C_InitPIN, + &C_SetPIN, + &C_OpenSession, + &C_CloseSession, + &C_CloseAllSessions, + &C_GetSessionInfo, + &C_GetOperationState, + &C_SetOperationState, + &C_Login, + &C_Logout, + &C_CreateObject, + &C_CopyObject, + &C_DestroyObject, + &C_GetObjectSize, + &C_GetAttributeValue, + &C_SetAttributeValue, + &C_FindObjectsInit, + &C_FindObjects, + &C_FindObjectsFinal, + &C_EncryptInit, + &C_Encrypt, + &C_EncryptUpdate, + &C_EncryptFinal, + &C_DecryptInit, + &C_Decrypt, + &C_DecryptUpdate, + &C_DecryptFinal, + &C_DigestInit, + &C_Digest, + &C_DigestUpdate, + &C_DigestKey, + &C_DigestFinal, + &C_SignInit, + &C_Sign, + &C_SignUpdate, + &C_SignFinal, + &C_SignRecoverInit, + &C_SignRecover, + &C_VerifyInit, + &C_Verify, + &C_VerifyUpdate, + &C_VerifyFinal, + &C_VerifyRecoverInit, + &C_VerifyRecover, + &C_DigestEncryptUpdate, + &C_DecryptDigestUpdate, + &C_SignEncryptUpdate, + &C_DecryptVerifyUpdate, + &C_GenerateKey, + &C_GenerateKeyPair, + &C_WrapKey, + &C_UnwrapKey, + &C_DeriveKey, + &C_SeedRandom, + &C_GenerateRandom, + &C_GetFunctionStatus, + &C_CancelFunction, + &C_WaitForSlotEvent }; #if defined(HAVE___REGISTER_ATFORK) -extern int __register_atfork(void (*)(void), void(*)(void), void (*)(void), +extern int __register_atfork(void (*)(void), void (*)(void), void (*)(void), void *); extern void *__dso_handle; static unsigned registered_fork_handler = 0; @@ -236,7 +234,7 @@ static void fork_handler(void) if (mock_session) { mock_session->state = CKS_RO_PUBLIC_SESSION; mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_NONE; + PKCS11_MOCK_CK_OPERATION_NONE; free(mock_session->find_label); } free(mock_session); @@ -244,7 +242,8 @@ static void fork_handler(void) } #endif -CK_DEFINE_FUNCTION(CK_RV, C_Initialize) (CK_VOID_PTR pInitArgs) { +CK_DEFINE_FUNCTION(CK_RV, C_Initialize)(CK_VOID_PTR pInitArgs) +{ if (CK_TRUE == pkcs11_mock_initialized) return CKR_CRYPTOKI_ALREADY_INITIALIZED; @@ -260,7 +259,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_Initialize) (CK_VOID_PTR pInitArgs) { return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_Finalize) (CK_VOID_PTR pReserved) { +CK_DEFINE_FUNCTION(CK_RV, C_Finalize)(CK_VOID_PTR pReserved) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; @@ -271,7 +271,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_Finalize) (CK_VOID_PTR pReserved) { return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_GetInfo) (CK_INFO_PTR pInfo) { +CK_DEFINE_FUNCTION(CK_RV, C_GetInfo)(CK_INFO_PTR pInfo) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; @@ -295,8 +296,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_GetInfo) (CK_INFO_PTR pInfo) { return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, - C_GetFunctionList) (CK_FUNCTION_LIST_PTR_PTR ppFunctionList) +CK_DEFINE_FUNCTION(CK_RV, C_GetFunctionList) +(CK_FUNCTION_LIST_PTR_PTR ppFunctionList) { if (NULL == ppFunctionList) return CKR_ARGUMENTS_BAD; @@ -306,9 +307,9 @@ CK_DEFINE_FUNCTION(CK_RV, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_GetSlotList) (CK_BBOOL tokenPresent, - CK_SLOT_ID_PTR pSlotList, - CK_ULONG_PTR pulCount) { +CK_DEFINE_FUNCTION(CK_RV, C_GetSlotList) +(CK_BBOOL tokenPresent, CK_SLOT_ID_PTR pSlotList, CK_ULONG_PTR pulCount) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; @@ -330,8 +331,9 @@ CK_DEFINE_FUNCTION(CK_RV, C_GetSlotList) (CK_BBOOL tokenPresent, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_GetSlotInfo) (CK_SLOT_ID slotID, - CK_SLOT_INFO_PTR pInfo) { +CK_DEFINE_FUNCTION(CK_RV, C_GetSlotInfo) +(CK_SLOT_ID slotID, CK_SLOT_INFO_PTR pInfo) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; @@ -357,8 +359,9 @@ CK_DEFINE_FUNCTION(CK_RV, C_GetSlotInfo) (CK_SLOT_ID slotID, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_GetTokenInfo) (CK_SLOT_ID slotID, - CK_TOKEN_INFO_PTR pInfo) { +CK_DEFINE_FUNCTION(CK_RV, C_GetTokenInfo) +(CK_SLOT_ID slotID, CK_TOKEN_INFO_PTR pInfo) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; @@ -380,9 +383,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_GetTokenInfo) (CK_SLOT_ID slotID, memset(pInfo->serialNumber, ' ', sizeof(pInfo->serialNumber)); memcpy(pInfo->serialNumber, PKCS11_MOCK_CK_TOKEN_INFO_SERIAL_NUMBER, strlen(PKCS11_MOCK_CK_TOKEN_INFO_SERIAL_NUMBER)); - pInfo->flags = - CKF_RNG | CKF_LOGIN_REQUIRED | CKF_USER_PIN_INITIALIZED | - CKF_TOKEN_INITIALIZED; + pInfo->flags = CKF_RNG | CKF_LOGIN_REQUIRED | CKF_USER_PIN_INITIALIZED | + CKF_TOKEN_INITIALIZED; if (pkcs11_mock_flags & MOCK_FLAG_SAFENET_ALWAYS_AUTH) pInfo->flags &= ~CKF_LOGIN_REQUIRED; @@ -390,9 +392,9 @@ CK_DEFINE_FUNCTION(CK_RV, C_GetTokenInfo) (CK_SLOT_ID slotID, pInfo->ulMaxSessionCount = CK_EFFECTIVELY_INFINITE; pInfo->ulSessionCount = (CK_TRUE == pkcs11_mock_session_opened) ? 1 : 0; pInfo->ulMaxRwSessionCount = CK_EFFECTIVELY_INFINITE; - if ((CK_TRUE == pkcs11_mock_session_opened) - && ((CKS_RO_PUBLIC_SESSION != mock_session->state) - && (CKS_RO_USER_FUNCTIONS != mock_session->state))) + if ((CK_TRUE == pkcs11_mock_session_opened) && + ((CKS_RO_PUBLIC_SESSION != mock_session->state) && + (CKS_RO_USER_FUNCTIONS != mock_session->state))) pInfo->ulRwSessionCount = 1; else pInfo->ulRwSessionCount = 0; @@ -411,10 +413,9 @@ CK_DEFINE_FUNCTION(CK_RV, C_GetTokenInfo) (CK_SLOT_ID slotID, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_GetMechanismList) (CK_SLOT_ID slotID, - CK_MECHANISM_TYPE_PTR - pMechanismList, - CK_ULONG_PTR pulCount) { +CK_DEFINE_FUNCTION(CK_RV, C_GetMechanismList) +(CK_SLOT_ID slotID, CK_MECHANISM_TYPE_PTR pMechanismList, CK_ULONG_PTR pulCount) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; @@ -446,9 +447,9 @@ CK_DEFINE_FUNCTION(CK_RV, C_GetMechanismList) (CK_SLOT_ID slotID, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_GetMechanismInfo) (CK_SLOT_ID slotID, - CK_MECHANISM_TYPE type, - CK_MECHANISM_INFO_PTR pInfo) { +CK_DEFINE_FUNCTION(CK_RV, C_GetMechanismInfo) +(CK_SLOT_ID slotID, CK_MECHANISM_TYPE type, CK_MECHANISM_INFO_PTR pInfo) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; @@ -468,9 +469,9 @@ CK_DEFINE_FUNCTION(CK_RV, C_GetMechanismInfo) (CK_SLOT_ID slotID, case CKM_RSA_PKCS: pInfo->ulMinKeySize = 1024; pInfo->ulMaxKeySize = 1024; - pInfo->flags = - CKF_ENCRYPT | CKF_DECRYPT | CKF_SIGN | CKF_SIGN_RECOVER | - CKF_VERIFY | CKF_VERIFY_RECOVER | CKF_WRAP | CKF_UNWRAP; + pInfo->flags = CKF_ENCRYPT | CKF_DECRYPT | CKF_SIGN | + CKF_SIGN_RECOVER | CKF_VERIFY | + CKF_VERIFY_RECOVER | CKF_WRAP | CKF_UNWRAP; break; case CKM_SHA1_RSA_PKCS: @@ -522,9 +523,10 @@ CK_DEFINE_FUNCTION(CK_RV, C_GetMechanismInfo) (CK_SLOT_ID slotID, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_InitToken) (CK_SLOT_ID slotID, CK_UTF8CHAR_PTR pPin, - CK_ULONG ulPinLen, - CK_UTF8CHAR_PTR pLabel) { +CK_DEFINE_FUNCTION(CK_RV, C_InitToken) +(CK_SLOT_ID slotID, CK_UTF8CHAR_PTR pPin, CK_ULONG ulPinLen, + CK_UTF8CHAR_PTR pLabel) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; @@ -534,8 +536,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_InitToken) (CK_SLOT_ID slotID, CK_UTF8CHAR_PTR pPin, if (NULL == pPin) return CKR_ARGUMENTS_BAD; - if ((ulPinLen < PKCS11_MOCK_CK_TOKEN_INFO_MIN_PIN_LEN) - || (ulPinLen > PKCS11_MOCK_CK_TOKEN_INFO_MAX_PIN_LEN)) + if ((ulPinLen < PKCS11_MOCK_CK_TOKEN_INFO_MIN_PIN_LEN) || + (ulPinLen > PKCS11_MOCK_CK_TOKEN_INFO_MAX_PIN_LEN)) return CKR_PIN_LEN_RANGE; if (NULL == pLabel) @@ -547,13 +549,14 @@ CK_DEFINE_FUNCTION(CK_RV, C_InitToken) (CK_SLOT_ID slotID, CK_UTF8CHAR_PTR pPin, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_InitPIN) (CK_SESSION_HANDLE hSession, - CK_UTF8CHAR_PTR pPin, CK_ULONG ulPinLen) { +CK_DEFINE_FUNCTION(CK_RV, C_InitPIN) +(CK_SESSION_HANDLE hSession, CK_UTF8CHAR_PTR pPin, CK_ULONG ulPinLen) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (CKS_RW_SO_FUNCTIONS != mock_session->state) @@ -562,49 +565,49 @@ CK_DEFINE_FUNCTION(CK_RV, C_InitPIN) (CK_SESSION_HANDLE hSession, if (NULL == pPin) return CKR_ARGUMENTS_BAD; - if ((ulPinLen < PKCS11_MOCK_CK_TOKEN_INFO_MIN_PIN_LEN) - || (ulPinLen > PKCS11_MOCK_CK_TOKEN_INFO_MAX_PIN_LEN)) + if ((ulPinLen < PKCS11_MOCK_CK_TOKEN_INFO_MIN_PIN_LEN) || + (ulPinLen > PKCS11_MOCK_CK_TOKEN_INFO_MAX_PIN_LEN)) return CKR_PIN_LEN_RANGE; return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_SetPIN) (CK_SESSION_HANDLE hSession, - CK_UTF8CHAR_PTR pOldPin, CK_ULONG ulOldLen, - CK_UTF8CHAR_PTR pNewPin, - CK_ULONG ulNewLen) { +CK_DEFINE_FUNCTION(CK_RV, C_SetPIN) +(CK_SESSION_HANDLE hSession, CK_UTF8CHAR_PTR pOldPin, CK_ULONG ulOldLen, + CK_UTF8CHAR_PTR pNewPin, CK_ULONG ulNewLen) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; - if ((CKS_RO_PUBLIC_SESSION == mock_session->state) - || (CKS_RO_USER_FUNCTIONS == mock_session->state)) + if ((CKS_RO_PUBLIC_SESSION == mock_session->state) || + (CKS_RO_USER_FUNCTIONS == mock_session->state)) return CKR_SESSION_READ_ONLY; if (NULL == pOldPin) return CKR_ARGUMENTS_BAD; - if ((ulOldLen < PKCS11_MOCK_CK_TOKEN_INFO_MIN_PIN_LEN) - || (ulOldLen > PKCS11_MOCK_CK_TOKEN_INFO_MAX_PIN_LEN)) + if ((ulOldLen < PKCS11_MOCK_CK_TOKEN_INFO_MIN_PIN_LEN) || + (ulOldLen > PKCS11_MOCK_CK_TOKEN_INFO_MAX_PIN_LEN)) return CKR_PIN_LEN_RANGE; if (NULL == pNewPin) return CKR_ARGUMENTS_BAD; - if ((ulNewLen < PKCS11_MOCK_CK_TOKEN_INFO_MIN_PIN_LEN) - || (ulNewLen > PKCS11_MOCK_CK_TOKEN_INFO_MAX_PIN_LEN)) + if ((ulNewLen < PKCS11_MOCK_CK_TOKEN_INFO_MIN_PIN_LEN) || + (ulNewLen > PKCS11_MOCK_CK_TOKEN_INFO_MAX_PIN_LEN)) return CKR_PIN_LEN_RANGE; return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_OpenSession) (CK_SLOT_ID slotID, CK_FLAGS flags, - CK_VOID_PTR pApplication, - CK_NOTIFY Notify, - CK_SESSION_HANDLE_PTR phSession) { +CK_DEFINE_FUNCTION(CK_RV, C_OpenSession) +(CK_SLOT_ID slotID, CK_FLAGS flags, CK_VOID_PTR pApplication, CK_NOTIFY Notify, + CK_SESSION_HANDLE_PTR phSession) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; if (CK_TRUE == pkcs11_mock_session_opened) @@ -629,9 +632,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_OpenSession) (CK_SLOT_ID slotID, CK_FLAGS flags, if (mock_session == NULL) return CKR_HOST_MEMORY; - mock_session->state = - (flags & CKF_RW_SESSION) ? CKS_RW_PUBLIC_SESSION : - CKS_RO_PUBLIC_SESSION; + mock_session->state = (flags & CKF_RW_SESSION) ? CKS_RW_PUBLIC_SESSION : + CKS_RO_PUBLIC_SESSION; mock_session->find_op.find_result = CKR_OBJECT_HANDLE_INVALID; mock_session->find_op.active_operation = PKCS11_MOCK_CK_OPERATION_NONE; @@ -642,12 +644,13 @@ CK_DEFINE_FUNCTION(CK_RV, C_OpenSession) (CK_SLOT_ID slotID, CK_FLAGS flags, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_CloseSession) (CK_SESSION_HANDLE hSession) { +CK_DEFINE_FUNCTION(CK_RV, C_CloseSession)(CK_SESSION_HANDLE hSession) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; pkcs11_mock_session_opened = CK_FALSE; @@ -661,17 +664,19 @@ CK_DEFINE_FUNCTION(CK_RV, C_CloseSession) (CK_SESSION_HANDLE hSession) { return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_CloseAllSessions) (CK_SLOT_ID slotID) { +CK_DEFINE_FUNCTION(CK_RV, C_CloseAllSessions)(CK_SLOT_ID slotID) +{ return C_CloseSession(PKCS11_MOCK_CK_SESSION_ID); } -CK_DEFINE_FUNCTION(CK_RV, C_GetSessionInfo) (CK_SESSION_HANDLE hSession, - CK_SESSION_INFO_PTR pInfo) { +CK_DEFINE_FUNCTION(CK_RV, C_GetSessionInfo) +(CK_SESSION_HANDLE hSession, CK_SESSION_INFO_PTR pInfo) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pInfo) @@ -680,23 +685,23 @@ CK_DEFINE_FUNCTION(CK_RV, C_GetSessionInfo) (CK_SESSION_HANDLE hSession, pInfo->slotID = PKCS11_MOCK_CK_SLOT_ID; pInfo->state = mock_session->state; pInfo->flags = CKF_SERIAL_SESSION; - if ((mock_session->state != CKS_RO_PUBLIC_SESSION) - && (mock_session->state != CKS_RO_USER_FUNCTIONS)) + if ((mock_session->state != CKS_RO_PUBLIC_SESSION) && + (mock_session->state != CKS_RO_USER_FUNCTIONS)) pInfo->flags = pInfo->flags | CKF_RW_SESSION; pInfo->ulDeviceError = 0; return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_GetOperationState) (CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pOperationState, - CK_ULONG_PTR - pulOperationStateLen) { +CK_DEFINE_FUNCTION(CK_RV, C_GetOperationState) +(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pOperationState, + CK_ULONG_PTR pulOperationStateLen) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pulOperationStateLen) @@ -715,17 +720,16 @@ CK_DEFINE_FUNCTION(CK_RV, C_GetOperationState) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_SetOperationState) (CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pOperationState, - CK_ULONG ulOperationStateLen, - CK_OBJECT_HANDLE hEncryptionKey, - CK_OBJECT_HANDLE - hAuthenticationKey) { +CK_DEFINE_FUNCTION(CK_RV, C_SetOperationState) +(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pOperationState, + CK_ULONG ulOperationStateLen, CK_OBJECT_HANDLE hEncryptionKey, + CK_OBJECT_HANDLE hAuthenticationKey) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pOperationState) @@ -741,27 +745,28 @@ CK_DEFINE_FUNCTION(CK_RV, C_SetOperationState) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_Login) (CK_SESSION_HANDLE hSession, - CK_USER_TYPE userType, CK_UTF8CHAR_PTR pPin, - CK_ULONG ulPinLen) { +CK_DEFINE_FUNCTION(CK_RV, C_Login) +(CK_SESSION_HANDLE hSession, CK_USER_TYPE userType, CK_UTF8CHAR_PTR pPin, + CK_ULONG ulPinLen) +{ CK_RV rv = CKR_OK; if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; - if ((pkcs11_mock_flags & MOCK_FLAG_SAFENET_ALWAYS_AUTH) - && userType == CKU_CONTEXT_SPECIFIC) { + if ((pkcs11_mock_flags & MOCK_FLAG_SAFENET_ALWAYS_AUTH) && + userType == CKU_CONTEXT_SPECIFIC) { return CKR_USER_TYPE_INVALID; } - if ((pkcs11_mock_flags & MOCK_FLAG_ALWAYS_AUTH) - || (pkcs11_mock_flags & MOCK_FLAG_SAFENET_ALWAYS_AUTH)) { - if ((CKU_CONTEXT_SPECIFIC != userType) && (CKU_SO != userType) - && (CKU_USER != userType)) + if ((pkcs11_mock_flags & MOCK_FLAG_ALWAYS_AUTH) || + (pkcs11_mock_flags & MOCK_FLAG_SAFENET_ALWAYS_AUTH)) { + if ((CKU_CONTEXT_SPECIFIC != userType) && + (CKU_SO != userType) && (CKU_USER != userType)) return CKR_USER_TYPE_INVALID; } else if ((CKU_SO != userType) && (CKU_USER != userType)) { return CKR_USER_TYPE_INVALID; @@ -770,8 +775,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_Login) (CK_SESSION_HANDLE hSession, if (NULL == pPin) return CKR_ARGUMENTS_BAD; - if ((ulPinLen < PKCS11_MOCK_CK_TOKEN_INFO_MIN_PIN_LEN) - || (ulPinLen > PKCS11_MOCK_CK_TOKEN_INFO_MAX_PIN_LEN)) + if ((ulPinLen < PKCS11_MOCK_CK_TOKEN_INFO_MIN_PIN_LEN) || + (ulPinLen > PKCS11_MOCK_CK_TOKEN_INFO_MAX_PIN_LEN)) return CKR_PIN_LEN_RANGE; switch (mock_session->state) { @@ -787,32 +792,30 @@ CK_DEFINE_FUNCTION(CK_RV, C_Login) (CK_SESSION_HANDLE hSession, case CKS_RO_USER_FUNCTIONS: case CKS_RW_USER_FUNCTIONS: - rv = (CKU_SO == - userType) ? CKR_USER_ANOTHER_ALREADY_LOGGED_IN : - CKR_USER_ALREADY_LOGGED_IN; + rv = (CKU_SO == userType) ? CKR_USER_ANOTHER_ALREADY_LOGGED_IN : + CKR_USER_ALREADY_LOGGED_IN; break; case CKS_RW_PUBLIC_SESSION: - mock_session->state = - (CKU_SO == - userType) ? CKS_RW_SO_FUNCTIONS : CKS_RW_USER_FUNCTIONS; + mock_session->state = (CKU_SO == userType) ? + CKS_RW_SO_FUNCTIONS : + CKS_RW_USER_FUNCTIONS; break; case CKS_RW_SO_FUNCTIONS: - rv = (CKU_SO == - userType) ? CKR_USER_ALREADY_LOGGED_IN : - CKR_USER_ANOTHER_ALREADY_LOGGED_IN; + rv = (CKU_SO == userType) ? CKR_USER_ALREADY_LOGGED_IN : + CKR_USER_ANOTHER_ALREADY_LOGGED_IN; break; } - if ((pkcs11_mock_flags & MOCK_FLAG_ALWAYS_AUTH - || pkcs11_mock_flags & MOCK_FLAG_SAFENET_ALWAYS_AUTH) - && rv == CKR_USER_ALREADY_LOGGED_IN) { + if ((pkcs11_mock_flags & MOCK_FLAG_ALWAYS_AUTH || + pkcs11_mock_flags & MOCK_FLAG_SAFENET_ALWAYS_AUTH) && + rv == CKR_USER_ALREADY_LOGGED_IN) { rv = 0; } @@ -820,32 +823,33 @@ CK_DEFINE_FUNCTION(CK_RV, C_Login) (CK_SESSION_HANDLE hSession, return rv; } -CK_DEFINE_FUNCTION(CK_RV, C_Logout) (CK_SESSION_HANDLE hSession) { +CK_DEFINE_FUNCTION(CK_RV, C_Logout)(CK_SESSION_HANDLE hSession) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; - if ((mock_session->state == CKS_RO_PUBLIC_SESSION) - || (mock_session->state == CKS_RW_PUBLIC_SESSION)) + if ((mock_session->state == CKS_RO_PUBLIC_SESSION) || + (mock_session->state == CKS_RW_PUBLIC_SESSION)) return CKR_USER_NOT_LOGGED_IN; return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_CreateObject) (CK_SESSION_HANDLE hSession, - CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulCount, - CK_OBJECT_HANDLE_PTR phObject) { +CK_DEFINE_FUNCTION(CK_RV, C_CreateObject) +(CK_SESSION_HANDLE hSession, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, + CK_OBJECT_HANDLE_PTR phObject) +{ CK_ULONG i = 0; if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pTemplate) @@ -870,18 +874,17 @@ CK_DEFINE_FUNCTION(CK_RV, C_CreateObject) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_CopyObject) (CK_SESSION_HANDLE hSession, - CK_OBJECT_HANDLE hObject, - CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulCount, - CK_OBJECT_HANDLE_PTR phNewObject) { +CK_DEFINE_FUNCTION(CK_RV, C_CopyObject) +(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, + CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, CK_OBJECT_HANDLE_PTR phNewObject) +{ CK_ULONG i = 0; if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (PKCS11_MOCK_CK_OBJECT_HANDLE_DATA != hObject) @@ -905,13 +908,14 @@ CK_DEFINE_FUNCTION(CK_RV, C_CopyObject) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_DestroyObject) (CK_SESSION_HANDLE hSession, - CK_OBJECT_HANDLE hObject) { +CK_DEFINE_FUNCTION(CK_RV, C_DestroyObject) +(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if ((PKCS11_MOCK_CK_OBJECT_HANDLE_DATA != hObject) && @@ -923,14 +927,14 @@ CK_DEFINE_FUNCTION(CK_RV, C_DestroyObject) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_GetObjectSize) (CK_SESSION_HANDLE hSession, - CK_OBJECT_HANDLE hObject, - CK_ULONG_PTR pulSize) { +CK_DEFINE_FUNCTION(CK_RV, C_GetObjectSize) +(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, CK_ULONG_PTR pulSize) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if ((PKCS11_MOCK_CK_OBJECT_HANDLE_DATA != hObject) && @@ -947,17 +951,17 @@ CK_DEFINE_FUNCTION(CK_RV, C_GetObjectSize) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_GetAttributeValue) (CK_SESSION_HANDLE hSession, - CK_OBJECT_HANDLE hObject, - CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulCount) { +CK_DEFINE_FUNCTION(CK_RV, C_GetAttributeValue) +(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, + CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount) +{ CK_ULONG i = 0; if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if ((PKCS11_MOCK_CK_OBJECT_HANDLE_DATA != hObject) && @@ -976,18 +980,18 @@ CK_DEFINE_FUNCTION(CK_RV, C_GetAttributeValue) (CK_SESSION_HANDLE hSession, for (i = 0; i < ulCount; i++) { if (CKA_PUBLIC_KEY_INFO == pTemplate[i].type && - (PKCS11_MOCK_CK_OBJECT_HANDLE_CERTIFICATE == hObject - || PKCS11_MOCK_CK_OBJECT_HANDLE_PUBLIC_KEY == hObject)) { + (PKCS11_MOCK_CK_OBJECT_HANDLE_CERTIFICATE == hObject || + PKCS11_MOCK_CK_OBJECT_HANDLE_PUBLIC_KEY == hObject)) { if (pTemplate[i].ulValueLen < sizeof(mock_pubkey) - 1) { pTemplate[i].ulValueLen = - sizeof(mock_pubkey) - 1; + sizeof(mock_pubkey) - 1; if (pTemplate[i].pValue == NULL) return CKR_OK; else return CKR_BUFFER_TOO_SMALL; } pTemplate[i].ulValueLen = - (CK_ULONG) sizeof(mock_pubkey) - 1; + (CK_ULONG)sizeof(mock_pubkey) - 1; memcpy(pTemplate[i].pValue, mock_pubkey, pTemplate[i].ulValueLen); } else if (CKA_CLASS == pTemplate[i].type) { @@ -1001,9 +1005,10 @@ CK_DEFINE_FUNCTION(CK_RV, C_GetAttributeValue) (CK_SESSION_HANDLE hSession, pTemplate[i].ulValueLen = sizeof(hObject); } else if (CKA_PUBLIC_EXPONENT == pTemplate[i].type && - (PKCS11_MOCK_CK_OBJECT_HANDLE_PUBLIC_KEY == hObject - || PKCS11_MOCK_CK_OBJECT_HANDLE_PRIVATE_KEY == - hObject)) { + (PKCS11_MOCK_CK_OBJECT_HANDLE_PUBLIC_KEY == + hObject || + PKCS11_MOCK_CK_OBJECT_HANDLE_PRIVATE_KEY == + hObject)) { if (NULL != pTemplate[i].pValue) { if (pTemplate[i].ulValueLen < sizeof(mock_public_exponent) - 1) @@ -1012,16 +1017,16 @@ CK_DEFINE_FUNCTION(CK_RV, C_GetAttributeValue) (CK_SESSION_HANDLE hSession, memcpy(pTemplate[i].pValue, mock_public_exponent, sizeof(mock_public_exponent) - - 1); + 1); } pTemplate[i].ulValueLen = - sizeof(mock_public_exponent) - 1; - } else if (CKA_MODULUS == pTemplate[i].type - && (PKCS11_MOCK_CK_OBJECT_HANDLE_PUBLIC_KEY == - hObject - || PKCS11_MOCK_CK_OBJECT_HANDLE_PRIVATE_KEY == - hObject)) { + sizeof(mock_public_exponent) - 1; + } else if (CKA_MODULUS == pTemplate[i].type && + (PKCS11_MOCK_CK_OBJECT_HANDLE_PUBLIC_KEY == + hObject || + PKCS11_MOCK_CK_OBJECT_HANDLE_PRIVATE_KEY == + hObject)) { if (NULL != pTemplate[i].pValue) { if (pTemplate[i].ulValueLen < sizeof(mock_modulus) - 1) @@ -1033,9 +1038,9 @@ CK_DEFINE_FUNCTION(CK_RV, C_GetAttributeValue) (CK_SESSION_HANDLE hSession, } pTemplate[i].ulValueLen = sizeof(mock_modulus) - 1; - } else if (CKA_SUBJECT == pTemplate[i].type - && PKCS11_MOCK_CK_OBJECT_HANDLE_CERTIFICATE == - hObject) { + } else if (CKA_SUBJECT == pTemplate[i].type && + PKCS11_MOCK_CK_OBJECT_HANDLE_CERTIFICATE == + hObject) { if (NULL != pTemplate[i].pValue) { if (pTemplate[i].ulValueLen < strlen(mock_subject)) @@ -1055,12 +1060,11 @@ CK_DEFINE_FUNCTION(CK_RV, C_GetAttributeValue) (CK_SESSION_HANDLE hSession, else memcpy(pTemplate[i].pValue, PKCS11_MOCK_CK_OBJECT_CKA_LABEL, - strlen - (PKCS11_MOCK_CK_OBJECT_CKA_LABEL)); + strlen(PKCS11_MOCK_CK_OBJECT_CKA_LABEL)); } pTemplate[i].ulValueLen = - strlen(PKCS11_MOCK_CK_OBJECT_CKA_LABEL); + strlen(PKCS11_MOCK_CK_OBJECT_CKA_LABEL); } else if (CKA_KEY_TYPE == pTemplate[i].type) { CK_KEY_TYPE t; if (pTemplate[i].ulValueLen != sizeof(CK_KEY_TYPE)) @@ -1090,20 +1094,19 @@ CK_DEFINE_FUNCTION(CK_RV, C_GetAttributeValue) (CK_SESSION_HANDLE hSession, else memcpy(pTemplate[i].pValue, PKCS11_MOCK_CK_OBJECT_CKA_LABEL, - strlen - (PKCS11_MOCK_CK_OBJECT_CKA_LABEL)); + strlen(PKCS11_MOCK_CK_OBJECT_CKA_LABEL)); } pTemplate[i].ulValueLen = - strlen(PKCS11_MOCK_CK_OBJECT_CKA_LABEL); + strlen(PKCS11_MOCK_CK_OBJECT_CKA_LABEL); } else if (CKA_CERTIFICATE_CATEGORY == pTemplate[i].type) { - CK_ULONG t = 2; /* authority */ + CK_ULONG t = 2; /* authority */ if (pTemplate[i].ulValueLen < sizeof(CK_ULONG)) return CKR_BUFFER_TOO_SMALL; memcpy(pTemplate[i].pValue, &t, sizeof(CK_ULONG)); } else if (CKA_VALUE == pTemplate[i].type) { - if (PKCS11_MOCK_CK_OBJECT_HANDLE_CERTIFICATE_EXTENSION - == hObject) { + if (PKCS11_MOCK_CK_OBJECT_HANDLE_CERTIFICATE_EXTENSION == + hObject) { const void *obj; unsigned obj_len; @@ -1122,7 +1125,7 @@ CK_DEFINE_FUNCTION(CK_RV, C_GetAttributeValue) (CK_SESSION_HANDLE hSession, else return CKR_BUFFER_TOO_SMALL; } - pTemplate[i].ulValueLen = (CK_ULONG) obj_len; + pTemplate[i].ulValueLen = (CK_ULONG)obj_len; memcpy(pTemplate[i].pValue, obj, pTemplate[i].ulValueLen); } else if (PKCS11_MOCK_CK_OBJECT_HANDLE_CERTIFICATE == @@ -1130,14 +1133,14 @@ CK_DEFINE_FUNCTION(CK_RV, C_GetAttributeValue) (CK_SESSION_HANDLE hSession, if (pTemplate[i].ulValueLen < sizeof(mock_certificate) - 1) { pTemplate[i].ulValueLen = - sizeof(mock_certificate) - 1; + sizeof(mock_certificate) - 1; if (pTemplate[i].pValue == NULL) return CKR_OK; else return CKR_BUFFER_TOO_SMALL; } pTemplate[i].ulValueLen = - (CK_ULONG) sizeof(mock_certificate) - 1; + (CK_ULONG)sizeof(mock_certificate) - 1; memcpy(pTemplate[i].pValue, mock_certificate, pTemplate[i].ulValueLen); } else if (PKCS11_MOCK_CK_OBJECT_HANDLE_PUBLIC_KEY == @@ -1145,39 +1148,36 @@ CK_DEFINE_FUNCTION(CK_RV, C_GetAttributeValue) (CK_SESSION_HANDLE hSession, if (pTemplate[i].ulValueLen < sizeof(mock_pubkey) - 1) { pTemplate[i].ulValueLen = - sizeof(mock_pubkey) - 1; + sizeof(mock_pubkey) - 1; if (pTemplate[i].pValue == NULL) return CKR_OK; else return CKR_BUFFER_TOO_SMALL; } pTemplate[i].ulValueLen = - (CK_ULONG) sizeof(mock_pubkey) - 1; + (CK_ULONG)sizeof(mock_pubkey) - 1; memcpy(pTemplate[i].pValue, mock_pubkey, pTemplate[i].ulValueLen); } else if (PKCS11_MOCK_CK_OBJECT_HANDLE_PRIVATE_KEY == hObject) { - pTemplate[i].ulValueLen = (CK_ULONG) - 1; - if (! - (pkcs11_mock_flags & - MOCK_FLAG_BROKEN_GET_ATTRIBUTES)) { + pTemplate[i].ulValueLen = (CK_ULONG)-1; + if (!(pkcs11_mock_flags & + MOCK_FLAG_BROKEN_GET_ATTRIBUTES)) { return CKR_ATTRIBUTE_SENSITIVE; } } else { if (NULL != pTemplate[i].pValue) { if (pTemplate[i].ulValueLen < - strlen - (PKCS11_MOCK_CK_OBJECT_CKA_VALUE)) + strlen(PKCS11_MOCK_CK_OBJECT_CKA_VALUE)) return CKR_BUFFER_TOO_SMALL; else memcpy(pTemplate[i].pValue, PKCS11_MOCK_CK_OBJECT_CKA_VALUE, - strlen - (PKCS11_MOCK_CK_OBJECT_CKA_VALUE)); + strlen(PKCS11_MOCK_CK_OBJECT_CKA_VALUE)); } pTemplate[i].ulValueLen = - strlen(PKCS11_MOCK_CK_OBJECT_CKA_VALUE); + strlen(PKCS11_MOCK_CK_OBJECT_CKA_VALUE); } } else { return CKR_ATTRIBUTE_TYPE_INVALID; @@ -1187,17 +1187,17 @@ CK_DEFINE_FUNCTION(CK_RV, C_GetAttributeValue) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_SetAttributeValue) (CK_SESSION_HANDLE hSession, - CK_OBJECT_HANDLE hObject, - CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulCount) { +CK_DEFINE_FUNCTION(CK_RV, C_SetAttributeValue) +(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, + CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount) +{ CK_ULONG i = 0; if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if ((PKCS11_MOCK_CK_OBJECT_HANDLE_DATA != hObject) && @@ -1213,8 +1213,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_SetAttributeValue) (CK_SESSION_HANDLE hSession, return CKR_ARGUMENTS_BAD; for (i = 0; i < ulCount; i++) { - if ((CKA_LABEL == pTemplate[i].type) - || (CKA_VALUE == pTemplate[i].type)) { + if ((CKA_LABEL == pTemplate[i].type) || + (CKA_VALUE == pTemplate[i].type)) { if (NULL == pTemplate[i].pValue) return CKR_ATTRIBUTE_VALUE_INVALID; @@ -1228,9 +1228,9 @@ CK_DEFINE_FUNCTION(CK_RV, C_SetAttributeValue) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_FindObjectsInit) (CK_SESSION_HANDLE hSession, - CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulCount) { +CK_DEFINE_FUNCTION(CK_RV, C_FindObjectsInit) +(CK_SESSION_HANDLE hSession, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount) +{ CK_ULONG i = 0; CK_ULONG_PTR cka_class_value = NULL; @@ -1241,8 +1241,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_FindObjectsInit) (CK_SESSION_HANDLE hSession, mock_session->find_op.active_operation) return CKR_OPERATION_ACTIVE; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pTemplate) @@ -1261,44 +1261,43 @@ CK_DEFINE_FUNCTION(CK_RV, C_FindObjectsInit) (CK_SESSION_HANDLE hSession, if (CKA_LABEL == pTemplate[i].type) { free(mock_session->find_label); - mock_session->find_label = - strndup(pTemplate[i].pValue, - pTemplate[i].ulValueLen); + mock_session->find_label = strndup( + pTemplate[i].pValue, pTemplate[i].ulValueLen); } else if (CKA_CLASS == pTemplate[i].type) { if (sizeof(CK_ULONG) != pTemplate[i].ulValueLen) return CKR_ATTRIBUTE_VALUE_INVALID; - cka_class_value = (CK_ULONG_PTR) pTemplate[i].pValue; + cka_class_value = (CK_ULONG_PTR)pTemplate[i].pValue; switch (*cka_class_value) { case CKO_DATA: mock_session->find_op.find_result = - PKCS11_MOCK_CK_OBJECT_HANDLE_DATA; + PKCS11_MOCK_CK_OBJECT_HANDLE_DATA; mock_session->find_op.remaining_data = 2; break; case CKO_SECRET_KEY: mock_session->find_op.find_result = - PKCS11_MOCK_CK_OBJECT_HANDLE_SECRET_KEY; + PKCS11_MOCK_CK_OBJECT_HANDLE_SECRET_KEY; mock_session->find_op.remaining_data = 1; break; case CKO_CERTIFICATE: mock_session->find_op.find_result = - PKCS11_MOCK_CK_OBJECT_HANDLE_CERTIFICATE; + PKCS11_MOCK_CK_OBJECT_HANDLE_CERTIFICATE; mock_session->find_op.remaining_data = 1; break; case CKO_PUBLIC_KEY: mock_session->find_op.find_result = - PKCS11_MOCK_CK_OBJECT_HANDLE_PUBLIC_KEY; + PKCS11_MOCK_CK_OBJECT_HANDLE_PUBLIC_KEY; mock_session->find_op.remaining_data = 1; break; case CKO_PRIVATE_KEY: mock_session->find_op.find_result = - PKCS11_MOCK_CK_OBJECT_HANDLE_PRIVATE_KEY; + PKCS11_MOCK_CK_OBJECT_HANDLE_PRIVATE_KEY; mock_session->find_op.remaining_data = 1; break; case CKO_X_CERTIFICATE_EXTENSION: mock_session->find_op.find_result = - PKCS11_MOCK_CK_OBJECT_HANDLE_CERTIFICATE_EXTENSION; + PKCS11_MOCK_CK_OBJECT_HANDLE_CERTIFICATE_EXTENSION; mock_session->find_op.remaining_data = 2; break; } @@ -1310,11 +1309,10 @@ CK_DEFINE_FUNCTION(CK_RV, C_FindObjectsInit) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_FindObjects) (CK_SESSION_HANDLE hSession, - CK_OBJECT_HANDLE_PTR phObject, - CK_ULONG ulMaxObjectCount, - CK_ULONG_PTR pulObjectCount) { - +CK_DEFINE_FUNCTION(CK_RV, C_FindObjects) +(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE_PTR phObject, + CK_ULONG ulMaxObjectCount, CK_ULONG_PTR pulObjectCount) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; @@ -1322,8 +1320,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_FindObjects) (CK_SESSION_HANDLE hSession, mock_session->find_op.active_operation) return CKR_OPERATION_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if ((NULL == phObject) && (0 < ulMaxObjectCount)) @@ -1371,7 +1369,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_FindObjects) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_FindObjectsFinal) (CK_SESSION_HANDLE hSession) { +CK_DEFINE_FUNCTION(CK_RV, C_FindObjectsFinal)(CK_SESSION_HANDLE hSession) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; @@ -1379,8 +1378,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_FindObjectsFinal) (CK_SESSION_HANDLE hSession) { mock_session->find_op.active_operation) return CKR_OPERATION_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; mock_session->find_op.active_operation = PKCS11_MOCK_CK_OPERATION_NONE; @@ -1388,22 +1387,22 @@ CK_DEFINE_FUNCTION(CK_RV, C_FindObjectsFinal) (CK_SESSION_HANDLE hSession) { return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_EncryptInit) (CK_SESSION_HANDLE hSession, - CK_MECHANISM_PTR pMechanism, - CK_OBJECT_HANDLE hKey) { +CK_DEFINE_FUNCTION(CK_RV, C_EncryptInit) +(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; if ((PKCS11_MOCK_CK_OPERATION_NONE != - mock_session->find_op.active_operation) - && (PKCS11_MOCK_CK_OPERATION_DIGEST != - mock_session->find_op.active_operation) - && (PKCS11_MOCK_CK_OPERATION_SIGN != - mock_session->find_op.active_operation)) + mock_session->find_op.active_operation) && + (PKCS11_MOCK_CK_OPERATION_DIGEST != + mock_session->find_op.active_operation) && + (PKCS11_MOCK_CK_OPERATION_SIGN != + mock_session->find_op.active_operation)) return CKR_OPERATION_ACTIVE; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pMechanism) @@ -1412,8 +1411,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_EncryptInit) (CK_SESSION_HANDLE hSession, switch (pMechanism->mechanism) { case CKM_RSA_PKCS: - if ((NULL != pMechanism->pParameter) - || (0 != pMechanism->ulParameterLen)) + if ((NULL != pMechanism->pParameter) || + (0 != pMechanism->ulParameterLen)) return CKR_MECHANISM_PARAM_INVALID; if (PKCS11_MOCK_CK_OBJECT_HANDLE_PUBLIC_KEY != hKey) @@ -1436,8 +1435,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_EncryptInit) (CK_SESSION_HANDLE hSession, #endif case CKM_DES3_CBC: - if ((NULL == pMechanism->pParameter) - || (8 != pMechanism->ulParameterLen)) + if ((NULL == pMechanism->pParameter) || + (8 != pMechanism->ulParameterLen)) return CKR_MECHANISM_PARAM_INVALID; if (PKCS11_MOCK_CK_OBJECT_HANDLE_SECRET_KEY != hKey) @@ -1447,8 +1446,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_EncryptInit) (CK_SESSION_HANDLE hSession, case CKM_AES_CBC: - if ((NULL == pMechanism->pParameter) - || (16 != pMechanism->ulParameterLen)) + if ((NULL == pMechanism->pParameter) || + (16 != pMechanism->ulParameterLen)) return CKR_MECHANISM_PARAM_INVALID; if (PKCS11_MOCK_CK_OBJECT_HANDLE_SECRET_KEY != hKey) @@ -1464,15 +1463,15 @@ CK_DEFINE_FUNCTION(CK_RV, C_EncryptInit) (CK_SESSION_HANDLE hSession, switch (mock_session->find_op.active_operation) { case PKCS11_MOCK_CK_OPERATION_NONE: mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_ENCRYPT; + PKCS11_MOCK_CK_OPERATION_ENCRYPT; break; case PKCS11_MOCK_CK_OPERATION_DIGEST: mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_DIGEST_ENCRYPT; + PKCS11_MOCK_CK_OPERATION_DIGEST_ENCRYPT; break; case PKCS11_MOCK_CK_OPERATION_SIGN: mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_SIGN_ENCRYPT; + PKCS11_MOCK_CK_OPERATION_SIGN_ENCRYPT; break; default: return CKR_FUNCTION_FAILED; @@ -1481,10 +1480,10 @@ CK_DEFINE_FUNCTION(CK_RV, C_EncryptInit) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_Encrypt) (CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pData, CK_ULONG ulDataLen, - CK_BYTE_PTR pEncryptedData, - CK_ULONG_PTR pulEncryptedDataLen) { +CK_DEFINE_FUNCTION(CK_RV, C_Encrypt) +(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, + CK_BYTE_PTR pEncryptedData, CK_ULONG_PTR pulEncryptedDataLen) +{ CK_ULONG i = 0; if (CK_FALSE == pkcs11_mock_initialized) @@ -1494,8 +1493,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_Encrypt) (CK_SESSION_HANDLE hSession, mock_session->find_op.active_operation) return CKR_OPERATION_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pData) @@ -1515,7 +1514,7 @@ CK_DEFINE_FUNCTION(CK_RV, C_Encrypt) (CK_SESSION_HANDLE hSession, pEncryptedData[i] = pData[i] ^ 0xAB; mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_NONE; + PKCS11_MOCK_CK_OPERATION_NONE; } } @@ -1524,11 +1523,10 @@ CK_DEFINE_FUNCTION(CK_RV, C_Encrypt) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_EncryptUpdate) (CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pPart, - CK_ULONG ulPartLen, - CK_BYTE_PTR pEncryptedPart, - CK_ULONG_PTR pulEncryptedPartLen) { +CK_DEFINE_FUNCTION(CK_RV, C_EncryptUpdate) +(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen, + CK_BYTE_PTR pEncryptedPart, CK_ULONG_PTR pulEncryptedPartLen) +{ CK_ULONG i = 0; if (CK_FALSE == pkcs11_mock_initialized) @@ -1538,8 +1536,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_EncryptUpdate) (CK_SESSION_HANDLE hSession, mock_session->find_op.active_operation) return CKR_OPERATION_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pPart) @@ -1565,23 +1563,23 @@ CK_DEFINE_FUNCTION(CK_RV, C_EncryptUpdate) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_EncryptFinal) (CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pLastEncryptedPart, - CK_ULONG_PTR pulLastEncryptedPartLen) +CK_DEFINE_FUNCTION(CK_RV, C_EncryptFinal) +(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pLastEncryptedPart, + CK_ULONG_PTR pulLastEncryptedPartLen) { if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; if ((PKCS11_MOCK_CK_OPERATION_ENCRYPT != - mock_session->find_op.active_operation) - && (PKCS11_MOCK_CK_OPERATION_DIGEST_ENCRYPT != - mock_session->find_op.active_operation) - && (PKCS11_MOCK_CK_OPERATION_SIGN_ENCRYPT != - mock_session->find_op.active_operation)) + mock_session->find_op.active_operation) && + (PKCS11_MOCK_CK_OPERATION_DIGEST_ENCRYPT != + mock_session->find_op.active_operation) && + (PKCS11_MOCK_CK_OPERATION_SIGN_ENCRYPT != + mock_session->find_op.active_operation)) return CKR_OPERATION_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pulLastEncryptedPartLen) @@ -1591,15 +1589,15 @@ CK_DEFINE_FUNCTION(CK_RV, C_EncryptFinal) (CK_SESSION_HANDLE hSession, switch (mock_session->find_op.active_operation) { case PKCS11_MOCK_CK_OPERATION_ENCRYPT: mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_NONE; + PKCS11_MOCK_CK_OPERATION_NONE; break; case PKCS11_MOCK_CK_OPERATION_DIGEST_ENCRYPT: mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_DIGEST; + PKCS11_MOCK_CK_OPERATION_DIGEST; break; case PKCS11_MOCK_CK_OPERATION_SIGN_ENCRYPT: mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_SIGN; + PKCS11_MOCK_CK_OPERATION_SIGN; break; default: return CKR_FUNCTION_FAILED; @@ -1611,26 +1609,26 @@ CK_DEFINE_FUNCTION(CK_RV, C_EncryptFinal) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_DecryptInit) (CK_SESSION_HANDLE hSession, - CK_MECHANISM_PTR pMechanism, - CK_OBJECT_HANDLE hKey) { +CK_DEFINE_FUNCTION(CK_RV, C_DecryptInit) +(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if ((PKCS11_MOCK_CK_OPERATION_NONE != - mock_session->find_op.active_operation) - && (PKCS11_MOCK_CK_OPERATION_DIGEST != - mock_session->find_op.active_operation) - && (PKCS11_MOCK_CK_OPERATION_VERIFY != - mock_session->find_op.active_operation)) + mock_session->find_op.active_operation) && + (PKCS11_MOCK_CK_OPERATION_DIGEST != + mock_session->find_op.active_operation) && + (PKCS11_MOCK_CK_OPERATION_VERIFY != + mock_session->find_op.active_operation)) return CKR_OPERATION_ACTIVE; - if (pkcs11_mock_flags & MOCK_FLAG_ALWAYS_AUTH - || pkcs11_mock_flags & MOCK_FLAG_SAFENET_ALWAYS_AUTH) { + if (pkcs11_mock_flags & MOCK_FLAG_ALWAYS_AUTH || + pkcs11_mock_flags & MOCK_FLAG_SAFENET_ALWAYS_AUTH) { mock_session->state = CKS_RO_PUBLIC_SESSION; pkcs11_mock_session_reauth = 0; } @@ -1641,8 +1639,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_DecryptInit) (CK_SESSION_HANDLE hSession, switch (pMechanism->mechanism) { case CKM_RSA_PKCS: - if ((NULL != pMechanism->pParameter) - || (0 != pMechanism->ulParameterLen)) + if ((NULL != pMechanism->pParameter) || + (0 != pMechanism->ulParameterLen)) return CKR_MECHANISM_PARAM_INVALID; if (PKCS11_MOCK_CK_OBJECT_HANDLE_PRIVATE_KEY != hKey) @@ -1664,8 +1662,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_DecryptInit) (CK_SESSION_HANDLE hSession, #endif case CKM_DES3_CBC: - if ((NULL == pMechanism->pParameter) - || (8 != pMechanism->ulParameterLen)) + if ((NULL == pMechanism->pParameter) || + (8 != pMechanism->ulParameterLen)) return CKR_MECHANISM_PARAM_INVALID; if (PKCS11_MOCK_CK_OBJECT_HANDLE_SECRET_KEY != hKey) @@ -1675,8 +1673,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_DecryptInit) (CK_SESSION_HANDLE hSession, case CKM_AES_CBC: - if ((NULL == pMechanism->pParameter) - || (16 != pMechanism->ulParameterLen)) + if ((NULL == pMechanism->pParameter) || + (16 != pMechanism->ulParameterLen)) return CKR_MECHANISM_PARAM_INVALID; if (PKCS11_MOCK_CK_OBJECT_HANDLE_SECRET_KEY != hKey) @@ -1692,15 +1690,15 @@ CK_DEFINE_FUNCTION(CK_RV, C_DecryptInit) (CK_SESSION_HANDLE hSession, switch (mock_session->find_op.active_operation) { case PKCS11_MOCK_CK_OPERATION_NONE: mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_DECRYPT; + PKCS11_MOCK_CK_OPERATION_DECRYPT; break; case PKCS11_MOCK_CK_OPERATION_DIGEST: mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_DECRYPT_DIGEST; + PKCS11_MOCK_CK_OPERATION_DECRYPT_DIGEST; break; case PKCS11_MOCK_CK_OPERATION_VERIFY: mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_DECRYPT_VERIFY; + PKCS11_MOCK_CK_OPERATION_DECRYPT_VERIFY; break; default: return CKR_FUNCTION_FAILED; @@ -1709,31 +1707,30 @@ CK_DEFINE_FUNCTION(CK_RV, C_DecryptInit) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_Decrypt) (CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pEncryptedData, - CK_ULONG ulEncryptedDataLen, - CK_BYTE_PTR pData, - CK_ULONG_PTR pulDataLen) { +CK_DEFINE_FUNCTION(CK_RV, C_Decrypt) +(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedData, + CK_ULONG ulEncryptedDataLen, CK_BYTE_PTR pData, CK_ULONG_PTR pulDataLen) +{ CK_ULONG i = 0; if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (PKCS11_MOCK_CK_OPERATION_DECRYPT != mock_session->find_op.active_operation) return CKR_OPERATION_NOT_INITIALIZED; - if (pkcs11_mock_flags & MOCK_FLAG_ALWAYS_AUTH - || pkcs11_mock_flags & MOCK_FLAG_SAFENET_ALWAYS_AUTH) { + if (pkcs11_mock_flags & MOCK_FLAG_ALWAYS_AUTH || + pkcs11_mock_flags & MOCK_FLAG_SAFENET_ALWAYS_AUTH) { if (!pkcs11_mock_session_reauth) { return CKR_USER_NOT_LOGGED_IN; } - if ((pkcs11_mock_flags & MOCK_FLAG_ALWAYS_AUTH) - && pData != NULL) { + if ((pkcs11_mock_flags & MOCK_FLAG_ALWAYS_AUTH) && + pData != NULL) { pkcs11_mock_session_reauth = 0; } } @@ -1755,7 +1752,7 @@ CK_DEFINE_FUNCTION(CK_RV, C_Decrypt) (CK_SESSION_HANDLE hSession, pData[i] = pEncryptedData[i] ^ 0xAB; mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_NONE; + PKCS11_MOCK_CK_OPERATION_NONE; } } @@ -1764,18 +1761,17 @@ CK_DEFINE_FUNCTION(CK_RV, C_Decrypt) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_DecryptUpdate) (CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pEncryptedPart, - CK_ULONG ulEncryptedPartLen, - CK_BYTE_PTR pPart, - CK_ULONG_PTR pulPartLen) { +CK_DEFINE_FUNCTION(CK_RV, C_DecryptUpdate) +(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedPart, + CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart, CK_ULONG_PTR pulPartLen) +{ CK_ULONG i = 0; if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (PKCS11_MOCK_CK_OPERATION_DECRYPT != @@ -1805,22 +1801,22 @@ CK_DEFINE_FUNCTION(CK_RV, C_DecryptUpdate) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_DecryptFinal) (CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pLastPart, - CK_ULONG_PTR pulLastPartLen) { +CK_DEFINE_FUNCTION(CK_RV, C_DecryptFinal) +(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pLastPart, CK_ULONG_PTR pulLastPartLen) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if ((PKCS11_MOCK_CK_OPERATION_DECRYPT != - mock_session->find_op.active_operation) - && (PKCS11_MOCK_CK_OPERATION_DECRYPT_DIGEST != - mock_session->find_op.active_operation) - && (PKCS11_MOCK_CK_OPERATION_DECRYPT_VERIFY != - mock_session->find_op.active_operation)) + mock_session->find_op.active_operation) && + (PKCS11_MOCK_CK_OPERATION_DECRYPT_DIGEST != + mock_session->find_op.active_operation) && + (PKCS11_MOCK_CK_OPERATION_DECRYPT_VERIFY != + mock_session->find_op.active_operation)) return CKR_OPERATION_NOT_INITIALIZED; if (NULL == pulLastPartLen) @@ -1830,15 +1826,15 @@ CK_DEFINE_FUNCTION(CK_RV, C_DecryptFinal) (CK_SESSION_HANDLE hSession, switch (mock_session->find_op.active_operation) { case PKCS11_MOCK_CK_OPERATION_DECRYPT: mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_NONE; + PKCS11_MOCK_CK_OPERATION_NONE; break; case PKCS11_MOCK_CK_OPERATION_DECRYPT_DIGEST: mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_DIGEST; + PKCS11_MOCK_CK_OPERATION_DIGEST; break; case PKCS11_MOCK_CK_OPERATION_DECRYPT_VERIFY: mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_VERIFY; + PKCS11_MOCK_CK_OPERATION_VERIFY; break; default: return CKR_FUNCTION_FAILED; @@ -1850,21 +1846,22 @@ CK_DEFINE_FUNCTION(CK_RV, C_DecryptFinal) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_DigestInit) (CK_SESSION_HANDLE hSession, - CK_MECHANISM_PTR pMechanism) { +CK_DEFINE_FUNCTION(CK_RV, C_DigestInit) +(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; if ((PKCS11_MOCK_CK_OPERATION_NONE != - mock_session->find_op.active_operation) - && (PKCS11_MOCK_CK_OPERATION_ENCRYPT != - mock_session->find_op.active_operation) - && (PKCS11_MOCK_CK_OPERATION_DECRYPT != - mock_session->find_op.active_operation)) + mock_session->find_op.active_operation) && + (PKCS11_MOCK_CK_OPERATION_ENCRYPT != + mock_session->find_op.active_operation) && + (PKCS11_MOCK_CK_OPERATION_DECRYPT != + mock_session->find_op.active_operation)) return CKR_OPERATION_ACTIVE; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pMechanism) @@ -1873,22 +1870,22 @@ CK_DEFINE_FUNCTION(CK_RV, C_DigestInit) (CK_SESSION_HANDLE hSession, if (CKM_SHA_1 != pMechanism->mechanism) return CKR_MECHANISM_INVALID; - if ((NULL != pMechanism->pParameter) - || (0 != pMechanism->ulParameterLen)) + if ((NULL != pMechanism->pParameter) || + (0 != pMechanism->ulParameterLen)) return CKR_MECHANISM_PARAM_INVALID; switch (mock_session->find_op.active_operation) { case PKCS11_MOCK_CK_OPERATION_NONE: mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_DIGEST; + PKCS11_MOCK_CK_OPERATION_DIGEST; break; case PKCS11_MOCK_CK_OPERATION_ENCRYPT: mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_DIGEST_ENCRYPT; + PKCS11_MOCK_CK_OPERATION_DIGEST_ENCRYPT; break; case PKCS11_MOCK_CK_OPERATION_DECRYPT: mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_DECRYPT_DIGEST; + PKCS11_MOCK_CK_OPERATION_DECRYPT_DIGEST; break; default: return CKR_FUNCTION_FAILED; @@ -1897,14 +1894,13 @@ CK_DEFINE_FUNCTION(CK_RV, C_DigestInit) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_Digest) (CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pData, CK_ULONG ulDataLen, - CK_BYTE_PTR pDigest, - CK_ULONG_PTR pulDigestLen) { - CK_BYTE hash[20] = - { 0x7B, 0x50, 0x2C, 0x3A, 0x1F, 0x48, 0xC8, 0x60, 0x9A, 0xE2, 0x12, - 0xCD, 0xFB, 0x63, 0x9D, 0xEE, 0x39, 0x67, 0x3F, 0x5E - }; +CK_DEFINE_FUNCTION(CK_RV, C_Digest) +(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, + CK_BYTE_PTR pDigest, CK_ULONG_PTR pulDigestLen) +{ + CK_BYTE hash[20] = { 0x7B, 0x50, 0x2C, 0x3A, 0x1F, 0x48, 0xC8, + 0x60, 0x9A, 0xE2, 0x12, 0xCD, 0xFB, 0x63, + 0x9D, 0xEE, 0x39, 0x67, 0x3F, 0x5E }; if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; @@ -1913,8 +1909,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_Digest) (CK_SESSION_HANDLE hSession, mock_session->find_op.active_operation) return CKR_OPERATION_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pData) @@ -1932,7 +1928,7 @@ CK_DEFINE_FUNCTION(CK_RV, C_Digest) (CK_SESSION_HANDLE hSession, } else { memcpy(pDigest, hash, sizeof(hash)); mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_NONE; + PKCS11_MOCK_CK_OPERATION_NONE; } } @@ -1941,9 +1937,9 @@ CK_DEFINE_FUNCTION(CK_RV, C_Digest) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_DigestUpdate) (CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pPart, - CK_ULONG ulPartLen) { +CK_DEFINE_FUNCTION(CK_RV, C_DigestUpdate) +(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; @@ -1951,8 +1947,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_DigestUpdate) (CK_SESSION_HANDLE hSession, mock_session->find_op.active_operation) return CKR_OPERATION_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pPart) @@ -1964,8 +1960,9 @@ CK_DEFINE_FUNCTION(CK_RV, C_DigestUpdate) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_DigestKey) (CK_SESSION_HANDLE hSession, - CK_OBJECT_HANDLE hKey) { +CK_DEFINE_FUNCTION(CK_RV, C_DigestKey) +(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hKey) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; @@ -1973,8 +1970,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_DigestKey) (CK_SESSION_HANDLE hSession, mock_session->find_op.active_operation) return CKR_OPERATION_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (PKCS11_MOCK_CK_OBJECT_HANDLE_SECRET_KEY != hKey) @@ -1983,27 +1980,26 @@ CK_DEFINE_FUNCTION(CK_RV, C_DigestKey) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_DigestFinal) (CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pDigest, - CK_ULONG_PTR pulDigestLen) { - CK_BYTE hash[20] = - { 0x7B, 0x50, 0x2C, 0x3A, 0x1F, 0x48, 0xC8, 0x60, 0x9A, 0xE2, 0x12, - 0xCD, 0xFB, 0x63, 0x9D, 0xEE, 0x39, 0x67, 0x3F, 0x5E - }; +CK_DEFINE_FUNCTION(CK_RV, C_DigestFinal) +(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pDigest, CK_ULONG_PTR pulDigestLen) +{ + CK_BYTE hash[20] = { 0x7B, 0x50, 0x2C, 0x3A, 0x1F, 0x48, 0xC8, + 0x60, 0x9A, 0xE2, 0x12, 0xCD, 0xFB, 0x63, + 0x9D, 0xEE, 0x39, 0x67, 0x3F, 0x5E }; if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; if ((PKCS11_MOCK_CK_OPERATION_DIGEST != - mock_session->find_op.active_operation) - && (PKCS11_MOCK_CK_OPERATION_DIGEST_ENCRYPT != - mock_session->find_op.active_operation) - && (PKCS11_MOCK_CK_OPERATION_DECRYPT_DIGEST != - mock_session->find_op.active_operation)) + mock_session->find_op.active_operation) && + (PKCS11_MOCK_CK_OPERATION_DIGEST_ENCRYPT != + mock_session->find_op.active_operation) && + (PKCS11_MOCK_CK_OPERATION_DECRYPT_DIGEST != + mock_session->find_op.active_operation)) return CKR_OPERATION_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pulDigestLen) @@ -2018,15 +2014,15 @@ CK_DEFINE_FUNCTION(CK_RV, C_DigestFinal) (CK_SESSION_HANDLE hSession, switch (mock_session->find_op.active_operation) { case PKCS11_MOCK_CK_OPERATION_DIGEST: mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_NONE; + PKCS11_MOCK_CK_OPERATION_NONE; break; case PKCS11_MOCK_CK_OPERATION_DIGEST_ENCRYPT: mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_ENCRYPT; + PKCS11_MOCK_CK_OPERATION_ENCRYPT; break; case PKCS11_MOCK_CK_OPERATION_DECRYPT_DIGEST: mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_DECRYPT; + PKCS11_MOCK_CK_OPERATION_DECRYPT; break; default: return CKR_FUNCTION_FAILED; @@ -2039,24 +2035,24 @@ CK_DEFINE_FUNCTION(CK_RV, C_DigestFinal) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_SignInit) (CK_SESSION_HANDLE hSession, - CK_MECHANISM_PTR pMechanism, - CK_OBJECT_HANDLE hKey) { +CK_DEFINE_FUNCTION(CK_RV, C_SignInit) +(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if ((PKCS11_MOCK_CK_OPERATION_NONE != - mock_session->find_op.active_operation) - && (PKCS11_MOCK_CK_OPERATION_ENCRYPT != - mock_session->find_op.active_operation)) + mock_session->find_op.active_operation) && + (PKCS11_MOCK_CK_OPERATION_ENCRYPT != + mock_session->find_op.active_operation)) return CKR_OPERATION_ACTIVE; - if (pkcs11_mock_flags & MOCK_FLAG_ALWAYS_AUTH - || pkcs11_mock_flags & MOCK_FLAG_SAFENET_ALWAYS_AUTH) { + if (pkcs11_mock_flags & MOCK_FLAG_ALWAYS_AUTH || + pkcs11_mock_flags & MOCK_FLAG_SAFENET_ALWAYS_AUTH) { mock_session->state = CKS_RO_PUBLIC_SESSION; pkcs11_mock_session_reauth = 0; } @@ -2064,10 +2060,10 @@ CK_DEFINE_FUNCTION(CK_RV, C_SignInit) (CK_SESSION_HANDLE hSession, if (NULL == pMechanism) return CKR_ARGUMENTS_BAD; - if ((CKM_RSA_PKCS == pMechanism->mechanism) - || (CKM_SHA1_RSA_PKCS == pMechanism->mechanism)) { - if ((NULL != pMechanism->pParameter) - || (0 != pMechanism->ulParameterLen)) + if ((CKM_RSA_PKCS == pMechanism->mechanism) || + (CKM_SHA1_RSA_PKCS == pMechanism->mechanism)) { + if ((NULL != pMechanism->pParameter) || + (0 != pMechanism->ulParameterLen)) return CKR_MECHANISM_PARAM_INVALID; if (PKCS11_MOCK_CK_OBJECT_HANDLE_PRIVATE_KEY != hKey) @@ -2079,20 +2075,20 @@ CK_DEFINE_FUNCTION(CK_RV, C_SignInit) (CK_SESSION_HANDLE hSession, if (PKCS11_MOCK_CK_OPERATION_NONE == mock_session->find_op.active_operation) mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_SIGN; + PKCS11_MOCK_CK_OPERATION_SIGN; else mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_SIGN_ENCRYPT; + PKCS11_MOCK_CK_OPERATION_SIGN_ENCRYPT; return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_Sign) (CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pData, CK_ULONG ulDataLen, - CK_BYTE_PTR pSignature, - CK_ULONG_PTR pulSignatureLen) { - CK_BYTE signature[10] = - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 }; +CK_DEFINE_FUNCTION(CK_RV, C_Sign) +(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, + CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen) +{ + CK_BYTE signature[10] = { 0x00, 0x01, 0x02, 0x03, 0x04, + 0x05, 0x06, 0x07, 0x08, 0x09 }; if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; @@ -2101,18 +2097,18 @@ CK_DEFINE_FUNCTION(CK_RV, C_Sign) (CK_SESSION_HANDLE hSession, mock_session->find_op.active_operation) return CKR_OPERATION_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; - if (pkcs11_mock_flags & MOCK_FLAG_ALWAYS_AUTH - || pkcs11_mock_flags & MOCK_FLAG_SAFENET_ALWAYS_AUTH) { + if (pkcs11_mock_flags & MOCK_FLAG_ALWAYS_AUTH || + pkcs11_mock_flags & MOCK_FLAG_SAFENET_ALWAYS_AUTH) { if (!pkcs11_mock_session_reauth) { return CKR_USER_NOT_LOGGED_IN; } - if ((pkcs11_mock_flags & MOCK_FLAG_ALWAYS_AUTH) - && pSignature != NULL) { + if ((pkcs11_mock_flags & MOCK_FLAG_ALWAYS_AUTH) && + pSignature != NULL) { pkcs11_mock_session_reauth = 0; } } @@ -2132,7 +2128,7 @@ CK_DEFINE_FUNCTION(CK_RV, C_Sign) (CK_SESSION_HANDLE hSession, } else { memcpy(pSignature, signature, sizeof(signature)); mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_NONE; + PKCS11_MOCK_CK_OPERATION_NONE; } } @@ -2141,9 +2137,9 @@ CK_DEFINE_FUNCTION(CK_RV, C_Sign) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_SignUpdate) (CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pPart, - CK_ULONG ulPartLen) { +CK_DEFINE_FUNCTION(CK_RV, C_SignUpdate) +(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; @@ -2151,8 +2147,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_SignUpdate) (CK_SESSION_HANDLE hSession, mock_session->find_op.active_operation) return CKR_OPERATION_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pPart) @@ -2164,23 +2160,24 @@ CK_DEFINE_FUNCTION(CK_RV, C_SignUpdate) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_SignFinal) (CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pSignature, - CK_ULONG_PTR pulSignatureLen) { - CK_BYTE signature[10] = - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 }; +CK_DEFINE_FUNCTION(CK_RV, C_SignFinal) +(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, + CK_ULONG_PTR pulSignatureLen) +{ + CK_BYTE signature[10] = { 0x00, 0x01, 0x02, 0x03, 0x04, + 0x05, 0x06, 0x07, 0x08, 0x09 }; if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; if ((PKCS11_MOCK_CK_OPERATION_SIGN != - mock_session->find_op.active_operation) - && (PKCS11_MOCK_CK_OPERATION_SIGN_ENCRYPT != - mock_session->find_op.active_operation)) + mock_session->find_op.active_operation) && + (PKCS11_MOCK_CK_OPERATION_SIGN_ENCRYPT != + mock_session->find_op.active_operation)) return CKR_OPERATION_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pulSignatureLen) @@ -2195,10 +2192,10 @@ CK_DEFINE_FUNCTION(CK_RV, C_SignFinal) (CK_SESSION_HANDLE hSession, if (PKCS11_MOCK_CK_OPERATION_SIGN == mock_session->find_op.active_operation) mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_NONE; + PKCS11_MOCK_CK_OPERATION_NONE; else mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_ENCRYPT; + PKCS11_MOCK_CK_OPERATION_ENCRYPT; } } @@ -2207,14 +2204,14 @@ CK_DEFINE_FUNCTION(CK_RV, C_SignFinal) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_SignRecoverInit) (CK_SESSION_HANDLE hSession, - CK_MECHANISM_PTR pMechanism, - CK_OBJECT_HANDLE hKey) { +CK_DEFINE_FUNCTION(CK_RV, C_SignRecoverInit) +(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (PKCS11_MOCK_CK_OPERATION_NONE != @@ -2225,8 +2222,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_SignRecoverInit) (CK_SESSION_HANDLE hSession, return CKR_ARGUMENTS_BAD; if (CKM_RSA_PKCS == pMechanism->mechanism) { - if ((NULL != pMechanism->pParameter) - || (0 != pMechanism->ulParameterLen)) + if ((NULL != pMechanism->pParameter) || + (0 != pMechanism->ulParameterLen)) return CKR_MECHANISM_PARAM_INVALID; if (PKCS11_MOCK_CK_OBJECT_HANDLE_PRIVATE_KEY != hKey) @@ -2236,15 +2233,15 @@ CK_DEFINE_FUNCTION(CK_RV, C_SignRecoverInit) (CK_SESSION_HANDLE hSession, } mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_SIGN_RECOVER; + PKCS11_MOCK_CK_OPERATION_SIGN_RECOVER; return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_SignRecover) (CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pData, CK_ULONG ulDataLen, - CK_BYTE_PTR pSignature, - CK_ULONG_PTR pulSignatureLen) { +CK_DEFINE_FUNCTION(CK_RV, C_SignRecover) +(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, + CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen) +{ CK_ULONG i = 0; if (CK_FALSE == pkcs11_mock_initialized) @@ -2254,8 +2251,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_SignRecover) (CK_SESSION_HANDLE hSession, mock_session->find_op.active_operation) return CKR_OPERATION_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pData) @@ -2275,7 +2272,7 @@ CK_DEFINE_FUNCTION(CK_RV, C_SignRecover) (CK_SESSION_HANDLE hSession, pSignature[i] = pData[i] ^ 0xAB; mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_NONE; + PKCS11_MOCK_CK_OPERATION_NONE; } } @@ -2284,29 +2281,29 @@ CK_DEFINE_FUNCTION(CK_RV, C_SignRecover) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_VerifyInit) (CK_SESSION_HANDLE hSession, - CK_MECHANISM_PTR pMechanism, - CK_OBJECT_HANDLE hKey) { +CK_DEFINE_FUNCTION(CK_RV, C_VerifyInit) +(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if ((PKCS11_MOCK_CK_OPERATION_NONE != - mock_session->find_op.active_operation) - && (PKCS11_MOCK_CK_OPERATION_DECRYPT != - mock_session->find_op.active_operation)) + mock_session->find_op.active_operation) && + (PKCS11_MOCK_CK_OPERATION_DECRYPT != + mock_session->find_op.active_operation)) return CKR_OPERATION_ACTIVE; if (NULL == pMechanism) return CKR_ARGUMENTS_BAD; - if ((CKM_RSA_PKCS == pMechanism->mechanism) - || (CKM_SHA1_RSA_PKCS == pMechanism->mechanism)) { - if ((NULL != pMechanism->pParameter) - || (0 != pMechanism->ulParameterLen)) + if ((CKM_RSA_PKCS == pMechanism->mechanism) || + (CKM_SHA1_RSA_PKCS == pMechanism->mechanism)) { + if ((NULL != pMechanism->pParameter) || + (0 != pMechanism->ulParameterLen)) return CKR_MECHANISM_PARAM_INVALID; if (PKCS11_MOCK_CK_OBJECT_HANDLE_PUBLIC_KEY != hKey) @@ -2318,20 +2315,20 @@ CK_DEFINE_FUNCTION(CK_RV, C_VerifyInit) (CK_SESSION_HANDLE hSession, if (PKCS11_MOCK_CK_OPERATION_NONE == mock_session->find_op.active_operation) mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_VERIFY; + PKCS11_MOCK_CK_OPERATION_VERIFY; else mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_DECRYPT_VERIFY; + PKCS11_MOCK_CK_OPERATION_DECRYPT_VERIFY; return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_Verify) (CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pData, CK_ULONG ulDataLen, - CK_BYTE_PTR pSignature, - CK_ULONG ulSignatureLen) { - CK_BYTE signature[10] = - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 }; +CK_DEFINE_FUNCTION(CK_RV, C_Verify) +(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, + CK_BYTE_PTR pSignature, CK_ULONG ulSignatureLen) +{ + CK_BYTE signature[10] = { 0x00, 0x01, 0x02, 0x03, 0x04, + 0x05, 0x06, 0x07, 0x08, 0x09 }; if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; @@ -2340,8 +2337,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_Verify) (CK_SESSION_HANDLE hSession, mock_session->find_op.active_operation) return CKR_OPERATION_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pData) @@ -2367,9 +2364,9 @@ CK_DEFINE_FUNCTION(CK_RV, C_Verify) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_VerifyUpdate) (CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pPart, - CK_ULONG ulPartLen) { +CK_DEFINE_FUNCTION(CK_RV, C_VerifyUpdate) +(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; @@ -2377,8 +2374,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_VerifyUpdate) (CK_SESSION_HANDLE hSession, mock_session->find_op.active_operation) return CKR_OPERATION_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pPart) @@ -2390,23 +2387,23 @@ CK_DEFINE_FUNCTION(CK_RV, C_VerifyUpdate) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_VerifyFinal) (CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pSignature, - CK_ULONG ulSignatureLen) { - CK_BYTE signature[10] = - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 }; +CK_DEFINE_FUNCTION(CK_RV, C_VerifyFinal) +(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, CK_ULONG ulSignatureLen) +{ + CK_BYTE signature[10] = { 0x00, 0x01, 0x02, 0x03, 0x04, + 0x05, 0x06, 0x07, 0x08, 0x09 }; if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; if ((PKCS11_MOCK_CK_OPERATION_VERIFY != - mock_session->find_op.active_operation) - && (PKCS11_MOCK_CK_OPERATION_DECRYPT_VERIFY != - mock_session->find_op.active_operation)) + mock_session->find_op.active_operation) && + (PKCS11_MOCK_CK_OPERATION_DECRYPT_VERIFY != + mock_session->find_op.active_operation)) return CKR_OPERATION_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pSignature) @@ -2424,22 +2421,22 @@ CK_DEFINE_FUNCTION(CK_RV, C_VerifyFinal) (CK_SESSION_HANDLE hSession, if (PKCS11_MOCK_CK_OPERATION_VERIFY == mock_session->find_op.active_operation) mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_NONE; + PKCS11_MOCK_CK_OPERATION_NONE; else mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_DECRYPT; + PKCS11_MOCK_CK_OPERATION_DECRYPT; return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_VerifyRecoverInit) (CK_SESSION_HANDLE hSession, - CK_MECHANISM_PTR pMechanism, - CK_OBJECT_HANDLE hKey) { +CK_DEFINE_FUNCTION(CK_RV, C_VerifyRecoverInit) +(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (PKCS11_MOCK_CK_OPERATION_NONE != @@ -2450,8 +2447,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_VerifyRecoverInit) (CK_SESSION_HANDLE hSession, return CKR_ARGUMENTS_BAD; if (CKM_RSA_PKCS == pMechanism->mechanism) { - if ((NULL != pMechanism->pParameter) - || (0 != pMechanism->ulParameterLen)) + if ((NULL != pMechanism->pParameter) || + (0 != pMechanism->ulParameterLen)) return CKR_MECHANISM_PARAM_INVALID; if (PKCS11_MOCK_CK_OBJECT_HANDLE_PUBLIC_KEY != hKey) @@ -2461,16 +2458,15 @@ CK_DEFINE_FUNCTION(CK_RV, C_VerifyRecoverInit) (CK_SESSION_HANDLE hSession, } mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_VERIFY_RECOVER; + PKCS11_MOCK_CK_OPERATION_VERIFY_RECOVER; return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_VerifyRecover) (CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pSignature, - CK_ULONG ulSignatureLen, - CK_BYTE_PTR pData, - CK_ULONG_PTR pulDataLen) { +CK_DEFINE_FUNCTION(CK_RV, C_VerifyRecover) +(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, CK_ULONG ulSignatureLen, + CK_BYTE_PTR pData, CK_ULONG_PTR pulDataLen) +{ CK_ULONG i = 0; if (CK_FALSE == pkcs11_mock_initialized) @@ -2480,8 +2476,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_VerifyRecover) (CK_SESSION_HANDLE hSession, mock_session->find_op.active_operation) return CKR_OPERATION_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pSignature) @@ -2501,7 +2497,7 @@ CK_DEFINE_FUNCTION(CK_RV, C_VerifyRecover) (CK_SESSION_HANDLE hSession, pData[i] = pSignature[i] ^ 0xAB; mock_session->find_op.active_operation = - PKCS11_MOCK_CK_OPERATION_NONE; + PKCS11_MOCK_CK_OPERATION_NONE; } } @@ -2510,12 +2506,10 @@ CK_DEFINE_FUNCTION(CK_RV, C_VerifyRecover) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_DigestEncryptUpdate) (CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pPart, - CK_ULONG ulPartLen, - CK_BYTE_PTR pEncryptedPart, - CK_ULONG_PTR - pulEncryptedPartLen) { +CK_DEFINE_FUNCTION(CK_RV, C_DigestEncryptUpdate) +(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen, + CK_BYTE_PTR pEncryptedPart, CK_ULONG_PTR pulEncryptedPartLen) +{ CK_ULONG i = 0; if (CK_FALSE == pkcs11_mock_initialized) @@ -2525,8 +2519,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_DigestEncryptUpdate) (CK_SESSION_HANDLE hSession, mock_session->find_op.active_operation) return CKR_OPERATION_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pPart) @@ -2552,18 +2546,17 @@ CK_DEFINE_FUNCTION(CK_RV, C_DigestEncryptUpdate) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_DecryptDigestUpdate) (CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pEncryptedPart, - CK_ULONG ulEncryptedPartLen, - CK_BYTE_PTR pPart, - CK_ULONG_PTR pulPartLen) { +CK_DEFINE_FUNCTION(CK_RV, C_DecryptDigestUpdate) +(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedPart, + CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart, CK_ULONG_PTR pulPartLen) +{ CK_ULONG i = 0; if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (PKCS11_MOCK_CK_OPERATION_DECRYPT_DIGEST != @@ -2593,19 +2586,17 @@ CK_DEFINE_FUNCTION(CK_RV, C_DecryptDigestUpdate) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_SignEncryptUpdate) (CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pPart, - CK_ULONG ulPartLen, - CK_BYTE_PTR pEncryptedPart, - CK_ULONG_PTR - pulEncryptedPartLen) { +CK_DEFINE_FUNCTION(CK_RV, C_SignEncryptUpdate) +(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen, + CK_BYTE_PTR pEncryptedPart, CK_ULONG_PTR pulEncryptedPartLen) +{ CK_ULONG i = 0; if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (PKCS11_MOCK_CK_OPERATION_SIGN_ENCRYPT != @@ -2635,18 +2626,17 @@ CK_DEFINE_FUNCTION(CK_RV, C_SignEncryptUpdate) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_DecryptVerifyUpdate) (CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pEncryptedPart, - CK_ULONG ulEncryptedPartLen, - CK_BYTE_PTR pPart, - CK_ULONG_PTR pulPartLen) { +CK_DEFINE_FUNCTION(CK_RV, C_DecryptVerifyUpdate) +(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedPart, + CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart, CK_ULONG_PTR pulPartLen) +{ CK_ULONG i = 0; if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (PKCS11_MOCK_CK_OPERATION_DECRYPT_VERIFY != @@ -2676,18 +2666,17 @@ CK_DEFINE_FUNCTION(CK_RV, C_DecryptVerifyUpdate) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_GenerateKey) (CK_SESSION_HANDLE hSession, - CK_MECHANISM_PTR pMechanism, - CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulCount, - CK_OBJECT_HANDLE_PTR phKey) { +CK_DEFINE_FUNCTION(CK_RV, C_GenerateKey) +(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, + CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, CK_OBJECT_HANDLE_PTR phKey) +{ CK_ULONG i = 0; if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pMechanism) @@ -2696,8 +2685,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_GenerateKey) (CK_SESSION_HANDLE hSession, if (CKM_DES3_KEY_GEN != pMechanism->mechanism) return CKR_MECHANISM_INVALID; - if ((NULL != pMechanism->pParameter) - || (0 != pMechanism->ulParameterLen)) + if ((NULL != pMechanism->pParameter) || + (0 != pMechanism->ulParameterLen)) return CKR_MECHANISM_PARAM_INVALID; if (NULL == pTemplate) @@ -2722,26 +2711,19 @@ CK_DEFINE_FUNCTION(CK_RV, C_GenerateKey) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_GenerateKeyPair) (CK_SESSION_HANDLE hSession, - CK_MECHANISM_PTR pMechanism, - CK_ATTRIBUTE_PTR - pPublicKeyTemplate, - CK_ULONG - ulPublicKeyAttributeCount, - CK_ATTRIBUTE_PTR - pPrivateKeyTemplate, - CK_ULONG - ulPrivateKeyAttributeCount, - CK_OBJECT_HANDLE_PTR phPublicKey, - CK_OBJECT_HANDLE_PTR phPrivateKey) +CK_DEFINE_FUNCTION(CK_RV, C_GenerateKeyPair) +(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, + CK_ATTRIBUTE_PTR pPublicKeyTemplate, CK_ULONG ulPublicKeyAttributeCount, + CK_ATTRIBUTE_PTR pPrivateKeyTemplate, CK_ULONG ulPrivateKeyAttributeCount, + CK_OBJECT_HANDLE_PTR phPublicKey, CK_OBJECT_HANDLE_PTR phPrivateKey) { CK_ULONG i = 0; if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pMechanism) @@ -2750,8 +2732,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_GenerateKeyPair) (CK_SESSION_HANDLE hSession, if (CKM_RSA_PKCS_KEY_PAIR_GEN != pMechanism->mechanism) return CKR_MECHANISM_INVALID; - if ((NULL != pMechanism->pParameter) - || (0 != pMechanism->ulParameterLen)) + if ((NULL != pMechanism->pParameter) || + (0 != pMechanism->ulParameterLen)) return CKR_MECHANISM_PARAM_INVALID; if (NULL == pPublicKeyTemplate) @@ -2794,20 +2776,19 @@ CK_DEFINE_FUNCTION(CK_RV, C_GenerateKeyPair) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_WrapKey) (CK_SESSION_HANDLE hSession, - CK_MECHANISM_PTR pMechanism, - CK_OBJECT_HANDLE hWrappingKey, - CK_OBJECT_HANDLE hKey, - CK_BYTE_PTR pWrappedKey, - CK_ULONG_PTR pulWrappedKeyLen) { - CK_BYTE wrappedKey[10] = - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 }; +CK_DEFINE_FUNCTION(CK_RV, C_WrapKey) +(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, + CK_OBJECT_HANDLE hWrappingKey, CK_OBJECT_HANDLE hKey, CK_BYTE_PTR pWrappedKey, + CK_ULONG_PTR pulWrappedKeyLen) +{ + CK_BYTE wrappedKey[10] = { 0x00, 0x01, 0x02, 0x03, 0x04, + 0x05, 0x06, 0x07, 0x08, 0x09 }; if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pMechanism) @@ -2816,8 +2797,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_WrapKey) (CK_SESSION_HANDLE hSession, if (CKM_RSA_PKCS != pMechanism->mechanism) return CKR_MECHANISM_INVALID; - if ((NULL != pMechanism->pParameter) - || (0 != pMechanism->ulParameterLen)) + if ((NULL != pMechanism->pParameter) || + (0 != pMechanism->ulParameterLen)) return CKR_MECHANISM_PARAM_INVALID; if (PKCS11_MOCK_CK_OBJECT_HANDLE_PUBLIC_KEY != hWrappingKey) @@ -2838,21 +2819,19 @@ CK_DEFINE_FUNCTION(CK_RV, C_WrapKey) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_UnwrapKey) (CK_SESSION_HANDLE hSession, - CK_MECHANISM_PTR pMechanism, - CK_OBJECT_HANDLE hUnwrappingKey, - CK_BYTE_PTR pWrappedKey, - CK_ULONG ulWrappedKeyLen, - CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulAttributeCount, - CK_OBJECT_HANDLE_PTR phKey) { +CK_DEFINE_FUNCTION(CK_RV, C_UnwrapKey) +(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, + CK_OBJECT_HANDLE hUnwrappingKey, CK_BYTE_PTR pWrappedKey, + CK_ULONG ulWrappedKeyLen, CK_ATTRIBUTE_PTR pTemplate, + CK_ULONG ulAttributeCount, CK_OBJECT_HANDLE_PTR phKey) +{ CK_ULONG i = 0; if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pMechanism) @@ -2861,8 +2840,8 @@ CK_DEFINE_FUNCTION(CK_RV, C_UnwrapKey) (CK_SESSION_HANDLE hSession, if (CKM_RSA_PKCS != pMechanism->mechanism) return CKR_MECHANISM_INVALID; - if ((NULL != pMechanism->pParameter) - || (0 != pMechanism->ulParameterLen)) + if ((NULL != pMechanism->pParameter) || + (0 != pMechanism->ulParameterLen)) return CKR_MECHANISM_PARAM_INVALID; if (PKCS11_MOCK_CK_OBJECT_HANDLE_PRIVATE_KEY != hUnwrappingKey) @@ -2896,23 +2875,22 @@ CK_DEFINE_FUNCTION(CK_RV, C_UnwrapKey) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_DeriveKey) (CK_SESSION_HANDLE hSession, - CK_MECHANISM_PTR pMechanism, - CK_OBJECT_HANDLE hBaseKey, - CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulAttributeCount, - CK_OBJECT_HANDLE_PTR phKey) { +CK_DEFINE_FUNCTION(CK_RV, C_DeriveKey) +(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, + CK_OBJECT_HANDLE hBaseKey, CK_ATTRIBUTE_PTR pTemplate, + CK_ULONG ulAttributeCount, CK_OBJECT_HANDLE_PTR phKey) +{ return CKR_GENERAL_ERROR; } -CK_DEFINE_FUNCTION(CK_RV, C_SeedRandom) (CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pSeed, - CK_ULONG ulSeedLen) { +CK_DEFINE_FUNCTION(CK_RV, C_SeedRandom) +(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSeed, CK_ULONG ulSeedLen) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == pSeed) @@ -2924,14 +2902,14 @@ CK_DEFINE_FUNCTION(CK_RV, C_SeedRandom) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_GenerateRandom) (CK_SESSION_HANDLE hSession, - CK_BYTE_PTR RandomData, - CK_ULONG ulRandomLen) { +CK_DEFINE_FUNCTION(CK_RV, C_GenerateRandom) +(CK_SESSION_HANDLE hSession, CK_BYTE_PTR RandomData, CK_ULONG ulRandomLen) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; if (NULL == RandomData) @@ -2945,31 +2923,33 @@ CK_DEFINE_FUNCTION(CK_RV, C_GenerateRandom) (CK_SESSION_HANDLE hSession, return CKR_OK; } -CK_DEFINE_FUNCTION(CK_RV, C_GetFunctionStatus) (CK_SESSION_HANDLE hSession) { +CK_DEFINE_FUNCTION(CK_RV, C_GetFunctionStatus)(CK_SESSION_HANDLE hSession) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; return CKR_FUNCTION_NOT_PARALLEL; } -CK_DEFINE_FUNCTION(CK_RV, C_CancelFunction) (CK_SESSION_HANDLE hSession) { +CK_DEFINE_FUNCTION(CK_RV, C_CancelFunction)(CK_SESSION_HANDLE hSession) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; - if ((CK_FALSE == pkcs11_mock_session_opened) - || (PKCS11_MOCK_CK_SESSION_ID != hSession)) + if ((CK_FALSE == pkcs11_mock_session_opened) || + (PKCS11_MOCK_CK_SESSION_ID != hSession)) return CKR_SESSION_HANDLE_INVALID; return CKR_FUNCTION_NOT_PARALLEL; } -CK_DEFINE_FUNCTION(CK_RV, C_WaitForSlotEvent) (CK_FLAGS flags, - CK_SLOT_ID_PTR pSlot, - CK_VOID_PTR pReserved) { +CK_DEFINE_FUNCTION(CK_RV, C_WaitForSlotEvent) +(CK_FLAGS flags, CK_SLOT_ID_PTR pSlot, CK_VOID_PTR pReserved) +{ if (CK_FALSE == pkcs11_mock_initialized) return CKR_CRYPTOKI_NOT_INITIALIZED; diff --git a/tests/pkcs11/pkcs11-mock.h b/tests/pkcs11/pkcs11-mock.h index ef1d4ed91e..b83c77b674 100644 --- a/tests/pkcs11/pkcs11-mock.h +++ b/tests/pkcs11/pkcs11-mock.h @@ -28,14 +28,14 @@ #define CK_PTR * #define CK_DEFINE_FUNCTION(returnType, name) returnType name #define CK_DECLARE_FUNCTION(returnType, name) returnType name -#define CK_DECLARE_FUNCTION_POINTER(returnType, name) returnType (* name) -#define CK_CALLBACK_FUNCTION(returnType, name) returnType (* name) +#define CK_DECLARE_FUNCTION_POINTER(returnType, name) returnType(*name) +#define CK_CALLBACK_FUNCTION(returnType, name) returnType(*name) #include #include #ifndef NULL_PTR -# define NULL_PTR 0 +#define NULL_PTR 0 #endif #define IGNORE(P) (void)(P) diff --git a/tests/pkcs11/pkcs11-mock2.c b/tests/pkcs11/pkcs11-mock2.c index 0e9cab819f..8e62fb5c0f 100644 --- a/tests/pkcs11/pkcs11-mock2.c +++ b/tests/pkcs11/pkcs11-mock2.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -43,18 +43,18 @@ static CK_C_GetMechanismInfo base_C_GetMechanismInfo; static CK_FUNCTION_LIST override_funcs; #ifdef __sun -# pragma fini(mock_deinit) -# pragma init(mock_init) -# define _CONSTRUCTOR -# define _DESTRUCTOR +#pragma fini(mock_deinit) +#pragma init(mock_init) +#define _CONSTRUCTOR +#define _DESTRUCTOR #else -# define _CONSTRUCTOR __attribute__((constructor)) -# define _DESTRUCTOR __attribute__((destructor)) +#define _CONSTRUCTOR __attribute__((constructor)) +#define _DESTRUCTOR __attribute__((destructor)) #endif -static CK_RV -override_C_GetMechanismInfo(CK_SLOT_ID slot_id, - CK_MECHANISM_TYPE type, CK_MECHANISM_INFO * info) +static CK_RV override_C_GetMechanismInfo(CK_SLOT_ID slot_id, + CK_MECHANISM_TYPE type, + CK_MECHANISM_INFO *info) { if (type == CKM_RSA_PKCS_PSS) return CKR_MECHANISM_INVALID; @@ -62,7 +62,7 @@ override_C_GetMechanismInfo(CK_SLOT_ID slot_id, return base_C_GetMechanismInfo(slot_id, type, info); } -CK_RV C_GetFunctionList(CK_FUNCTION_LIST ** function_list) +CK_RV C_GetFunctionList(CK_FUNCTION_LIST **function_list) { CK_C_GetFunctionList func; CK_FUNCTION_LIST *funcs; diff --git a/tests/pkcs11/pkcs11-mock3.c b/tests/pkcs11/pkcs11-mock3.c index dffe300ee0..047a517a77 100644 --- a/tests/pkcs11/pkcs11-mock3.c +++ b/tests/pkcs11/pkcs11-mock3.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -44,13 +44,13 @@ static CK_C_GetAttributeValue base_C_GetAttributeValue; static CK_FUNCTION_LIST override_funcs; #ifdef __sun -# pragma fini(mock_deinit) -# pragma init(mock_init) -# define _CONSTRUCTOR -# define _DESTRUCTOR +#pragma fini(mock_deinit) +#pragma init(mock_init) +#define _CONSTRUCTOR +#define _DESTRUCTOR #else -# define _CONSTRUCTOR __attribute__((constructor)) -# define _DESTRUCTOR __attribute__((destructor)) +#define _CONSTRUCTOR __attribute__((constructor)) +#define _DESTRUCTOR __attribute__((destructor)) #endif /* Should be a date before the activation time of chain[0] in @@ -58,10 +58,10 @@ static CK_FUNCTION_LIST override_funcs; */ #define DISTRUST_AFTER "230314000000Z" -static CK_RV -override_C_GetAttributeValue(CK_SESSION_HANDLE hSession, - CK_OBJECT_HANDLE hObject, - CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount) +static CK_RV override_C_GetAttributeValue(CK_SESSION_HANDLE hSession, + CK_OBJECT_HANDLE hObject, + CK_ATTRIBUTE_PTR pTemplate, + CK_ULONG ulCount) { CK_ATTRIBUTE *template; CK_ULONG count = 0, i, offset = ulCount; @@ -89,17 +89,17 @@ override_C_GetAttributeValue(CK_SESSION_HANDLE hSession, if (offset < ulCount) { if (!pTemplate[offset].pValue) { pTemplate[offset].ulValueLen = - sizeof(DISTRUST_AFTER) - 1; + sizeof(DISTRUST_AFTER) - 1; } else if (pTemplate[offset].ulValueLen < sizeof(DISTRUST_AFTER) - 1) { pTemplate[offset].ulValueLen = - CK_UNAVAILABLE_INFORMATION; + CK_UNAVAILABLE_INFORMATION; rv = CKR_BUFFER_TOO_SMALL; } else { memcpy(pTemplate[offset].pValue, DISTRUST_AFTER, sizeof(DISTRUST_AFTER) - 1); pTemplate[offset].ulValueLen = - sizeof(DISTRUST_AFTER) - 1; + sizeof(DISTRUST_AFTER) - 1; } } @@ -112,7 +112,7 @@ override_C_GetAttributeValue(CK_SESSION_HANDLE hSession, return rv; } -CK_RV C_GetFunctionList(CK_FUNCTION_LIST ** function_list) +CK_RV C_GetFunctionList(CK_FUNCTION_LIST **function_list) { CK_C_GetFunctionList func; CK_FUNCTION_LIST *funcs; diff --git a/tests/pkcs11/pkcs11-obj-import.c b/tests/pkcs11/pkcs11-obj-import.c index 07c1a30292..9004b27f95 100644 --- a/tests/pkcs11/pkcs11-obj-import.c +++ b/tests/pkcs11/pkcs11-obj-import.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -34,7 +34,7 @@ #include #define CONFIG_NAME "softhsm-obj-import" -#define CONFIG CONFIG_NAME".config" +#define CONFIG CONFIG_NAME ".config" #include "../utils.h" #include "softhsm.h" @@ -51,9 +51,9 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "|<%d>| %s", level, str); } -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (attempt == 0) { strcpy(pin, PIN); @@ -93,8 +93,9 @@ void doit(void) set_softhsm_conf(CONFIG); snprintf(buf, sizeof(buf), - "%s --init-token --slot 0 --label test --so-pin " PIN " --pin " - PIN, bin); + "%s --init-token --slot 0 --label test --so-pin " PIN + " --pin " PIN, + bin); system(buf); ret = gnutls_pkcs11_add_provider(lib, NULL); @@ -106,15 +107,15 @@ void doit(void) ret = gnutls_x509_crt_init(&crt); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_init: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_crt_init: %s\n", + gnutls_strerror(ret)); exit(1); } ret = gnutls_x509_crt_import(crt, &server_cert, GNUTLS_X509_FMT_PEM); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_import: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_crt_import: %s\n", + gnutls_strerror(ret)); exit(1); } @@ -132,17 +133,17 @@ void doit(void) exit(1); } - ret = - gnutls_pkcs11_token_set_pin(SOFTHSM_URL, NULL, PIN, - GNUTLS_PIN_USER); + ret = gnutls_pkcs11_token_set_pin(SOFTHSM_URL, NULL, PIN, + GNUTLS_PIN_USER); if (ret < 0) { fail("gnutls_pkcs11_token_set_pin: %s\n", gnutls_strerror(ret)); exit(1); } - ret = gnutls_pkcs11_copy_x509_crt(SOFTHSM_URL, crt, "cert", - GNUTLS_PKCS11_OBJ_FLAG_MARK_NOT_PRIVATE - | GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + ret = gnutls_pkcs11_copy_x509_crt( + SOFTHSM_URL, crt, "cert", + GNUTLS_PKCS11_OBJ_FLAG_MARK_NOT_PRIVATE | + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { fail("gnutls_pkcs11_copy_x509_crt: %s\n", gnutls_strerror(ret)); exit(1); @@ -159,8 +160,8 @@ void doit(void) exit(1); } - assert(gnutls_pkcs11_obj_export_url - (obj, GNUTLS_PKCS11_URL_GENERIC, &url) >= 0); + assert(gnutls_pkcs11_obj_export_url(obj, GNUTLS_PKCS11_URL_GENERIC, + &url) >= 0); assert(url != NULL); gnutls_free(url); @@ -186,76 +187,76 @@ void doit(void) /* The ID is constant and copied from the certificate */ buf_size = sizeof(buf); - assert(gnutls_pkcs11_obj_get_info - (obj, GNUTLS_PKCS11_OBJ_ID_HEX, buf, &buf_size) >= 0); + assert(gnutls_pkcs11_obj_get_info(obj, GNUTLS_PKCS11_OBJ_ID_HEX, buf, + &buf_size) >= 0); assert(buf_size == 60); - assert(memcmp - (buf, - "95:d1:ad:a4:52:e4:c5:61:12:a6:91:13:8d:80:dd:2d:81:22:3e:d4", - 60) == 0); + assert(memcmp(buf, + "95:d1:ad:a4:52:e4:c5:61:12:a6:91:13:8d:80:dd:2d:81:22:3e:d4", + 60) == 0); /* label */ buf_size = sizeof(buf); - assert(gnutls_pkcs11_obj_get_info - (obj, GNUTLS_PKCS11_OBJ_LABEL, buf, &buf_size) >= 0); + assert(gnutls_pkcs11_obj_get_info(obj, GNUTLS_PKCS11_OBJ_LABEL, buf, + &buf_size) >= 0); assert(buf_size == 4); assert(memcmp(buf, "cert", 4) == 0); /* token-label */ buf_size = sizeof(buf); - assert(gnutls_pkcs11_obj_get_info - (obj, GNUTLS_PKCS11_OBJ_TOKEN_LABEL, buf, &buf_size) >= 0); + assert(gnutls_pkcs11_obj_get_info(obj, GNUTLS_PKCS11_OBJ_TOKEN_LABEL, + buf, &buf_size) >= 0); assert(buf_size == 4); assert(memcmp(buf, "test", 4) == 0); /* token-serial */ buf_size = sizeof(buf); - assert(gnutls_pkcs11_obj_get_info - (obj, GNUTLS_PKCS11_OBJ_TOKEN_SERIAL, buf, &buf_size) >= 0); + assert(gnutls_pkcs11_obj_get_info(obj, GNUTLS_PKCS11_OBJ_TOKEN_SERIAL, + buf, &buf_size) >= 0); assert(buf_size != 0); assert(strlen(buf) != 0); /* token-model */ buf_size = sizeof(buf); - assert(gnutls_pkcs11_obj_get_info - (obj, GNUTLS_PKCS11_OBJ_TOKEN_MODEL, buf, &buf_size) >= 0); + assert(gnutls_pkcs11_obj_get_info(obj, GNUTLS_PKCS11_OBJ_TOKEN_MODEL, + buf, &buf_size) >= 0); assert(buf_size != 0); assert(strlen(buf) != 0); /* token-manufacturer */ buf_size = sizeof(buf); - assert(gnutls_pkcs11_obj_get_info - (obj, GNUTLS_PKCS11_OBJ_TOKEN_MANUFACTURER, buf, - &buf_size) >= 0); + assert(gnutls_pkcs11_obj_get_info(obj, + GNUTLS_PKCS11_OBJ_TOKEN_MANUFACTURER, + buf, &buf_size) >= 0); assert(buf_size != 0); assert(strlen(buf) != 0); /* token-ID */ buf_size = sizeof(buf); - assert(gnutls_pkcs11_obj_get_info - (obj, GNUTLS_PKCS11_OBJ_ID, buf, &buf_size) >= 0); + assert(gnutls_pkcs11_obj_get_info(obj, GNUTLS_PKCS11_OBJ_ID, buf, + &buf_size) >= 0); assert(buf_size != 0); /* library description */ buf_size = sizeof(buf); - assert(gnutls_pkcs11_obj_get_info - (obj, GNUTLS_PKCS11_OBJ_LIBRARY_DESCRIPTION, buf, - &buf_size) >= 0); + assert(gnutls_pkcs11_obj_get_info(obj, + GNUTLS_PKCS11_OBJ_LIBRARY_DESCRIPTION, + buf, &buf_size) >= 0); assert(buf_size != 0); assert(strlen(buf) != 0); /* library manufacturer */ buf_size = sizeof(buf); - assert(gnutls_pkcs11_obj_get_info - (obj, GNUTLS_PKCS11_OBJ_LIBRARY_MANUFACTURER, buf, - &buf_size) >= 0); + assert(gnutls_pkcs11_obj_get_info( + obj, GNUTLS_PKCS11_OBJ_LIBRARY_MANUFACTURER, buf, + &buf_size) >= 0); assert(buf_size != 0); assert(strlen(buf) != 0); /* library version */ buf_size = sizeof(buf); - assert(gnutls_pkcs11_obj_get_info - (obj, GNUTLS_PKCS11_OBJ_LIBRARY_VERSION, buf, &buf_size) >= 0); + assert(gnutls_pkcs11_obj_get_info(obj, + GNUTLS_PKCS11_OBJ_LIBRARY_VERSION, + buf, &buf_size) >= 0); assert(buf_size != 0); assert(strlen(buf) != 0); diff --git a/tests/pkcs11/pkcs11-obj-raw.c b/tests/pkcs11/pkcs11-obj-raw.c index 5080cdaedd..e4598c80f8 100644 --- a/tests/pkcs11/pkcs11-obj-raw.c +++ b/tests/pkcs11/pkcs11-obj-raw.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -34,7 +34,7 @@ #include #include #ifndef CRYPTOKI_GNU -# define CRYPTOKI_GNU +#define CRYPTOKI_GNU #endif #include @@ -44,23 +44,23 @@ #if defined(HAVE___REGISTER_ATFORK) -# ifdef _WIN32 -# define P11LIB "libpkcs11mock1.dll" -# else -# include -# define P11LIB "libpkcs11mock1.so" -# endif +#ifdef _WIN32 +#define P11LIB "libpkcs11mock1.dll" +#else +#include +#define P11LIB "libpkcs11mock1.so" +#endif static void tls_log_func(int level, const char *str) { fprintf(stderr, "|<%d>| %s", level, str); } -# define PIN "1234" +#define PIN "1234" -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (attempt == 0) { strcpy(pin, PIN); @@ -86,8 +86,8 @@ void doit(void) ck_rv_t rv; gnutls_datum_t data; - data.data = (void *) - "\x38\x17\x0c\x08\xcb\x45\x8f\xd4\x87\x9c\x34\xb6\xf6\x08\x29\x4c\x50\x31\x2b\xbb"; + data.data = + (void *)"\x38\x17\x0c\x08\xcb\x45\x8f\xd4\x87\x9c\x34\xb6\xf6\x08\x29\x4c\x50\x31\x2b\xbb"; data.size = 20; ret = global_init(); @@ -121,20 +121,19 @@ void doit(void) gnutls_pkcs11_obj_set_pin_function(obj, pin_func, NULL); /* unknown object */ - ret = - gnutls_pkcs11_obj_import_url(obj, - "pkcs11:token=unknown;object=invalid;type=private", - GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + ret = gnutls_pkcs11_obj_import_url( + obj, "pkcs11:token=unknown;object=invalid;type=private", + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); assert(ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); - ret = - gnutls_pkcs11_obj_import_url(obj, "pkcs11:object=test;type=private", - GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + ret = gnutls_pkcs11_obj_import_url(obj, + "pkcs11:object=test;type=private", + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); assert(ret >= 0); ret = gnutls_pkcs11_obj_get_ptr(obj, (void **)&mod, (void *)&session, - (void *)&ohandle, - &slot_id, GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + (void *)&ohandle, &slot_id, + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { fail("%d: %s\n", ret, gnutls_strerror(ret)); exit(1); diff --git a/tests/pkcs11/pkcs11-pin-func.c b/tests/pkcs11/pkcs11-pin-func.c index 17081f0ae4..087e80afd2 100644 --- a/tests/pkcs11/pkcs11-pin-func.c +++ b/tests/pkcs11/pkcs11-pin-func.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -31,9 +31,9 @@ #include #include -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (attempt == 0) { strcpy(pin, "xxx"); diff --git a/tests/pkcs11/pkcs11-privkey-always-auth.c b/tests/pkcs11/pkcs11-privkey-always-auth.c index 5cbf46dcc0..5fcc2a69da 100644 --- a/tests/pkcs11/pkcs11-privkey-always-auth.c +++ b/tests/pkcs11/pkcs11-privkey-always-auth.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -45,8 +45,8 @@ void doit(void) #else -# include "utils.h" -# include "pkcs11-mock-ext.h" +#include "utils.h" +#include "pkcs11-mock-ext.h" /* Tests whether a gnutls_privkey_t will work properly with a key marked * as always authenticate */ @@ -54,17 +54,17 @@ void doit(void) static unsigned pin_called = 0; static const char *_pin = "1234"; -# include -# define P11LIB "libpkcs11mock1.so" +#include +#define P11LIB "libpkcs11mock1.so" static void tls_log_func(int level, const char *str) { fprintf(stderr, "|<%d>| %s", level, str); } -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (_pin == NULL) return -1; @@ -106,8 +106,8 @@ void doit(void) *pflags = MOCK_FLAG_ALWAYS_AUTH; } - data.data = (void *) - "\x38\x17\x0c\x08\xcb\x45\x8f\xd4\x87\x9c\x34\xb6\xf6\x08\x29\x4c\x50\x31\x2b\xbb"; + data.data = + (void *)"\x38\x17\x0c\x08\xcb\x45\x8f\xd4\x87\x9c\x34\xb6\xf6\x08\x29\x4c\x50\x31\x2b\xbb"; data.size = 20; ret = global_init(); @@ -137,9 +137,9 @@ void doit(void) gnutls_pkcs11_obj_set_pin_function(obj, pin_func, NULL); - ret = - gnutls_pkcs11_obj_import_url(obj, "pkcs11:object=test;type=private", - GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + ret = gnutls_pkcs11_obj_import_url(obj, + "pkcs11:object=test;type=private", + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); assert(ret >= 0); ret = gnutls_pkcs11_obj_get_flags(obj, &flags); @@ -155,9 +155,8 @@ void doit(void) gnutls_privkey_set_pin_function(key, pin_func, NULL); - ret = - gnutls_privkey_import_url(key, "pkcs11:object=test", - GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + ret = gnutls_privkey_import_url(key, "pkcs11:object=test", + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { fail("%d: %s\n", ret, gnutls_strerror(ret)); exit(1); diff --git a/tests/pkcs11/pkcs11-privkey-export.c b/tests/pkcs11/pkcs11-privkey-export.c index 7d7f6e88c3..4ae6e1ba05 100644 --- a/tests/pkcs11/pkcs11-privkey-export.c +++ b/tests/pkcs11/pkcs11-privkey-export.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -39,10 +39,10 @@ #define PIN "1234" #ifdef _WIN32 -# define P11LIB "libpkcs11mock1.dll" +#define P11LIB "libpkcs11mock1.dll" #else -# include -# define P11LIB "libpkcs11mock1.so" +#include +#define P11LIB "libpkcs11mock1.so" #endif static void tls_log_func(int level, const char *str) @@ -50,9 +50,9 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "|<%d>| %s", level, str); } -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (attempt == 0) { strcpy(pin, PIN); @@ -103,9 +103,8 @@ void doit(void) gnutls_privkey_set_pin_function(key, pin_func, NULL); - ret = - gnutls_privkey_import_url(key, "pkcs11:object=test", - GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + ret = gnutls_privkey_import_url(key, "pkcs11:object=test", + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { fail("%d: %s\n", ret, gnutls_strerror(ret)); exit(1); @@ -130,8 +129,8 @@ void doit(void) ret = gnutls_pubkey_init(&pub); assert(ret >= 0); - ret = - gnutls_pubkey_import_url(pub, "pkcs11:object=test;type=public", 0); + ret = gnutls_pubkey_import_url(pub, "pkcs11:object=test;type=public", + 0); if (ret < 0) { fail("%d: %s\n", ret, gnutls_strerror(ret)); exit(1); diff --git a/tests/pkcs11/pkcs11-privkey-fork-reinit.c b/tests/pkcs11/pkcs11-privkey-fork-reinit.c index 634d9652bd..152a498502 100644 --- a/tests/pkcs11/pkcs11-privkey-fork-reinit.c +++ b/tests/pkcs11/pkcs11-privkey-fork-reinit.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -42,22 +42,22 @@ #if defined(HAVE___REGISTER_ATFORK) -# define PIN "1234" -# ifdef _WIN32 -# define P11LIB "libpkcs11mock1.dll" -# else -# include -# define P11LIB "libpkcs11mock1.so" -# endif +#define PIN "1234" +#ifdef _WIN32 +#define P11LIB "libpkcs11mock1.dll" +#else +#include +#define P11LIB "libpkcs11mock1.so" +#endif static void tls_log_func(int level, const char *str) { fprintf(stderr, "|<%d>| %s", level, str); } -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (attempt == 0) { strcpy(pin, PIN); @@ -74,8 +74,8 @@ void doit(void) gnutls_datum_t sig = { NULL, 0 }, data; pid_t pid; - data.data = (void *) - "\x38\x17\x0c\x08\xcb\x45\x8f\xd4\x87\x9c\x34\xb6\xf6\x08\x29\x4c\x50\x31\x2b\xbb"; + data.data = + (void *)"\x38\x17\x0c\x08\xcb\x45\x8f\xd4\x87\x9c\x34\xb6\xf6\x08\x29\x4c\x50\x31\x2b\xbb"; data.size = 20; ret = global_init(); @@ -109,9 +109,8 @@ void doit(void) gnutls_privkey_set_pin_function(key, pin_func, NULL); - ret = - gnutls_privkey_import_url(key, "pkcs11:object=test", - GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + ret = gnutls_privkey_import_url(key, "pkcs11:object=test", + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { fail("%d: %s\n", ret, gnutls_strerror(ret)); exit(1); @@ -135,14 +134,13 @@ void doit(void) WEXITSTATUS(status)); exit(1); } - } else { /* child */ + } else { /* child */ ret = gnutls_pkcs11_reinit(); assert(ret == 0); - ret = - gnutls_privkey_sign_hash(key, GNUTLS_DIG_SHA1, 0, &data, - &sig); + ret = gnutls_privkey_sign_hash(key, GNUTLS_DIG_SHA1, 0, &data, + &sig); if (ret < 0) { fail("%d: %s\n", ret, gnutls_strerror(ret)); exit(1); diff --git a/tests/pkcs11/pkcs11-privkey-fork.c b/tests/pkcs11/pkcs11-privkey-fork.c index 65f2c9bfe9..1d053baab2 100644 --- a/tests/pkcs11/pkcs11-privkey-fork.c +++ b/tests/pkcs11/pkcs11-privkey-fork.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -42,22 +42,22 @@ #if defined(HAVE___REGISTER_ATFORK) -# define PIN "1234" -# ifdef _WIN32 -# define P11LIB "libpkcs11mock1.dll" -# else -# include -# define P11LIB "libpkcs11mock1.so" -# endif +#define PIN "1234" +#ifdef _WIN32 +#define P11LIB "libpkcs11mock1.dll" +#else +#include +#define P11LIB "libpkcs11mock1.so" +#endif static void tls_log_func(int level, const char *str) { fprintf(stderr, "|<%d>| %s", level, str); } -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (attempt == 0) { strcpy(pin, PIN); @@ -74,8 +74,8 @@ void doit(void) gnutls_datum_t sig = { NULL, 0 }, data; pid_t pid; - data.data = (void *) - "\x38\x17\x0c\x08\xcb\x45\x8f\xd4\x87\x9c\x34\xb6\xf6\x08\x29\x4c\x50\x31\x2b\xbb"; + data.data = + (void *)"\x38\x17\x0c\x08\xcb\x45\x8f\xd4\x87\x9c\x34\xb6\xf6\x08\x29\x4c\x50\x31\x2b\xbb"; data.size = 20; ret = global_init(); @@ -109,9 +109,8 @@ void doit(void) gnutls_privkey_set_pin_function(key, pin_func, NULL); - ret = - gnutls_privkey_import_url(key, "pkcs11:object=test", - GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + ret = gnutls_privkey_import_url(key, "pkcs11:object=test", + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { fail("%d: %s\n", ret, gnutls_strerror(ret)); exit(1); @@ -135,10 +134,9 @@ void doit(void) WEXITSTATUS(status)); exit(1); } - } else { /* child */ - ret = - gnutls_privkey_sign_hash(key, GNUTLS_DIG_SHA1, 0, &data, - &sig); + } else { /* child */ + ret = gnutls_privkey_sign_hash(key, GNUTLS_DIG_SHA1, 0, &data, + &sig); if (ret < 0) { fail("%d: %s\n", ret, gnutls_strerror(ret)); exit(1); diff --git a/tests/pkcs11/pkcs11-privkey-generate.c b/tests/pkcs11/pkcs11-privkey-generate.c index b7106dbc66..2a58bc9df9 100644 --- a/tests/pkcs11/pkcs11-privkey-generate.c +++ b/tests/pkcs11/pkcs11-privkey-generate.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -45,13 +45,13 @@ void doit(void) #else -# include "../utils.h" -# include "softhsm.h" -# include +#include "../utils.h" +#include "softhsm.h" +#include -# define CONFIG_NAME "softhsm-generate" -# define CONFIG CONFIG_NAME".config" -# define PIN "1234" +#define CONFIG_NAME "softhsm-generate" +#define CONFIG CONFIG_NAME ".config" +#define PIN "1234" /* Tests whether a gnutls_privkey_generate3 will work generate a key * which is marked as sensitive. */ @@ -64,9 +64,9 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "|<%d>| %s", level, str); } -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (_pin == NULL) return -1; @@ -104,8 +104,9 @@ void doit(void) set_softhsm_conf(CONFIG); snprintf(buf, sizeof(buf), - "%s --init-token --slot 0 --label test --so-pin " PIN " --pin " - PIN, bin); + "%s --init-token --slot 0 --label test --so-pin " PIN + " --pin " PIN, + bin); system(buf); ret = gnutls_pkcs11_init(GNUTLS_PKCS11_FLAG_MANUAL, NULL); @@ -123,11 +124,10 @@ void doit(void) gnutls_pkcs11_set_pin_function(pin_func, NULL); /* generate sensitive */ - ret = - gnutls_pkcs11_privkey_generate3("pkcs11:token=test", GNUTLS_PK_RSA, - 2048, "testkey", NULL, - GNUTLS_X509_FMT_DER, &out, 0, - GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + ret = gnutls_pkcs11_privkey_generate3("pkcs11:token=test", + GNUTLS_PK_RSA, 2048, "testkey", + NULL, GNUTLS_X509_FMT_DER, &out, + 0, GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { fail("%d: %s\n", ret, gnutls_strerror(ret)); exit(1); @@ -137,9 +137,9 @@ void doit(void) assert(out.size > 0); gnutls_pkcs11_obj_set_pin_function(obj, pin_func, NULL); - assert(gnutls_pkcs11_obj_import_url - (obj, "pkcs11:token=test;object=testkey;type=private", - GNUTLS_PKCS11_OBJ_FLAG_LOGIN) >= 0); + assert(gnutls_pkcs11_obj_import_url( + obj, "pkcs11:token=test;object=testkey;type=private", + GNUTLS_PKCS11_OBJ_FLAG_LOGIN) >= 0); assert(gnutls_pkcs11_obj_get_flags(obj, &flags) >= 0); @@ -150,12 +150,11 @@ void doit(void) gnutls_pkcs11_obj_deinit(obj); /* generate non-sensitive */ - ret = - gnutls_pkcs11_privkey_generate3("pkcs11:token=test", GNUTLS_PK_RSA, - 2048, "testkey2", NULL, - GNUTLS_X509_FMT_DER, &out, 0, - GNUTLS_PKCS11_OBJ_FLAG_LOGIN | - GNUTLS_PKCS11_OBJ_FLAG_MARK_NOT_SENSITIVE); + ret = gnutls_pkcs11_privkey_generate3( + "pkcs11:token=test", GNUTLS_PK_RSA, 2048, "testkey2", NULL, + GNUTLS_X509_FMT_DER, &out, 0, + GNUTLS_PKCS11_OBJ_FLAG_LOGIN | + GNUTLS_PKCS11_OBJ_FLAG_MARK_NOT_SENSITIVE); if (ret < 0) { fail("%d: %s\n", ret, gnutls_strerror(ret)); exit(1); @@ -165,9 +164,9 @@ void doit(void) assert(out.size > 0); gnutls_pkcs11_obj_set_pin_function(obj, pin_func, NULL); - assert(gnutls_pkcs11_obj_import_url - (obj, "pkcs11:token=test;object=testkey2;type=private", - GNUTLS_PKCS11_OBJ_FLAG_LOGIN) >= 0); + assert(gnutls_pkcs11_obj_import_url( + obj, "pkcs11:token=test;object=testkey2;type=private", + GNUTLS_PKCS11_OBJ_FLAG_LOGIN) >= 0); assert(gnutls_pkcs11_obj_get_flags(obj, &flags) >= 0); diff --git a/tests/pkcs11/pkcs11-privkey-pthread.c b/tests/pkcs11/pkcs11-privkey-pthread.c index ebe6bef7a6..5e464c9519 100644 --- a/tests/pkcs11/pkcs11-privkey-pthread.c +++ b/tests/pkcs11/pkcs11-privkey-pthread.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,11 +35,11 @@ #include #include #ifndef _WIN32 -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include #endif #include "utils.h" @@ -52,20 +52,20 @@ void doit(void) #else -# ifdef _WIN32 -# define P11LIB "libpkcs11mock1.dll" -# else -# include -# define P11LIB "libpkcs11mock1.so" -# endif +#ifdef _WIN32 +#define P11LIB "libpkcs11mock1.dll" +#else +#include +#define P11LIB "libpkcs11mock1.so" +#endif /* Tests whether we can use gnutls_privkey_sign() under multiple threads * with the same key when PKCS#11 is in use. */ -# include "../cert-common.h" +#include "../cert-common.h" -# define PIN "1234" +#define PIN "1234" static const gnutls_datum_t testdata = { (void *)"test test", 9 }; @@ -74,9 +74,9 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "|<%d>| %s", level, str); } -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (attempt == 0) { strcpy(pin, PIN); @@ -96,9 +96,8 @@ static void *start_thread(void *arg) int ret; gnutls_datum_t sig; - ret = - gnutls_privkey_sign_data(data->pkey, GNUTLS_DIG_SHA256, 0, - &testdata, &sig); + ret = gnutls_privkey_sign_data(data->pkey, GNUTLS_DIG_SHA256, 0, + &testdata, &sig); if (ret < 0) pthread_exit((void *)-2); @@ -107,10 +106,9 @@ static void *start_thread(void *arg) pthread_exit(0); } -# define MAX_THREADS 48 +#define MAX_THREADS 48 -static -void do_thread_stuff(gnutls_privkey_t pkey) +static void do_thread_stuff(gnutls_privkey_t pkey) { int ret; thread_data_st *data; @@ -136,7 +134,6 @@ void do_thread_stuff(gnutls_privkey_t pkey) } } free(data); - } void doit(void) @@ -171,9 +168,8 @@ void doit(void) assert(gnutls_privkey_init(&pkey) == 0); - ret = - gnutls_privkey_import_url(pkey, "pkcs11:object=test", - GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + ret = gnutls_privkey_import_url(pkey, "pkcs11:object=test", + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { fprintf(stderr, "error in %d: %s\n", __LINE__, gnutls_strerror(ret)); @@ -192,7 +188,7 @@ void doit(void) do_thread_stuff(pkey); - cleanup: +cleanup: gnutls_privkey_deinit(pkey); } diff --git a/tests/pkcs11/pkcs11-privkey-safenet-always-auth.c b/tests/pkcs11/pkcs11-privkey-safenet-always-auth.c index 79f41ffec5..4755098418 100644 --- a/tests/pkcs11/pkcs11-privkey-safenet-always-auth.c +++ b/tests/pkcs11/pkcs11-privkey-safenet-always-auth.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -45,8 +45,8 @@ void doit(void) #else -# include "utils.h" -# include "pkcs11-mock-ext.h" +#include "utils.h" +#include "pkcs11-mock-ext.h" /* Tests whether a gnutls_privkey_t will work properly with a key marked * as always authenticate, but on the safenet HSMs where CKA_ALWAYS_AUTHENTICATE @@ -55,17 +55,17 @@ void doit(void) static unsigned pin_called = 0; static const char *_pin = "1234"; -# include -# define P11LIB "libpkcs11mock1.so" +#include +#define P11LIB "libpkcs11mock1.so" static void tls_log_func(int level, const char *str) { fprintf(stderr, "|<%d>| %s", level, str); } -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (_pin == NULL) return -1; @@ -105,8 +105,8 @@ void doit(void) *pflags = MOCK_FLAG_SAFENET_ALWAYS_AUTH; } - data.data = (void *) - "\x38\x17\x0c\x08\xcb\x45\x8f\xd4\x87\x9c\x34\xb6\xf6\x08\x29\x4c\x50\x31\x2b\xbb"; + data.data = + (void *)"\x38\x17\x0c\x08\xcb\x45\x8f\xd4\x87\x9c\x34\xb6\xf6\x08\x29\x4c\x50\x31\x2b\xbb"; data.size = 20; ret = global_init(); @@ -136,9 +136,8 @@ void doit(void) gnutls_privkey_set_pin_function(key, pin_func, NULL); - ret = - gnutls_privkey_import_url(key, "pkcs11:object=test", - GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + ret = gnutls_privkey_import_url(key, "pkcs11:object=test", + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { fail("%d: %s\n", ret, gnutls_strerror(ret)); exit(1); diff --git a/tests/pkcs11/pkcs11-privkey.c b/tests/pkcs11/pkcs11-privkey.c index c1b5f2fe8b..952fce9149 100644 --- a/tests/pkcs11/pkcs11-privkey.c +++ b/tests/pkcs11/pkcs11-privkey.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -39,55 +39,52 @@ * the provided password as PIN when PKCS #11 keys are imported */ #define CONFIG_NAME "softhsm-privkey" -#define CONFIG CONFIG_NAME".config" +#define CONFIG CONFIG_NAME ".config" static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICdDCCAd2gAwIBAgIBAzANBgkqhkiG9w0BAQsFADAaMQswCQYDVQQDEwJDQTEL\n" - "MAkGA1UEBhMCQ1owIhgPMjAxMzExMTAwODI1MjdaGA8yMDIwMTIxMzA4MjUyN1ow\n" - "HjEPMA0GA1UEAxMGQ2xpZW50MQswCQYDVQQGEwJDWjCBnzANBgkqhkiG9w0BAQEF\n" - "AAOBjQAwgYkCgYEAvQRIzvKyhr3tqmB4Pe+91DWSFayaNtcrDIT597bhxugVYW8o\n" - "jB206kx5aknAMA3PQGYcGqkLrt+nsJcmOIXDZsC6P4zeOSsF1PPhDAoX3bkUr2lF\n" - "MEt374eKdg1yvyhRxt4DOR6aD4gkC7fVtaYdgV6yXpJGMHV05LBIgQ7QtykCAwEA\n" - "AaOBwTCBvjAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMCMBgGA1Ud\n" - "EQQRMA+BDW5vbmVAbm9uZS5vcmcwDwYDVR0PAQH/BAUDAweAADAdBgNVHQ4EFgQU\n" - "Dbinh11GaaJcTyOpmxPYuttsiGowHwYDVR0jBBgwFoAUEg7aURJAVq70HG3MobA9\n" - "KGF+MwEwLgYDVR0fBCcwJTAjoCGgH4YdaHR0cDovL3d3dy5nZXRjcmwuY3JsL2dl\n" - "dGNybC8wDQYJKoZIhvcNAQELBQADgYEAN/Henso+5zzuFQWTpJXlUsWtRQAFhRY3\n" - "WVt3xtnyPs4pF/LKBp3Ov0GLGBkz5YlyJGFNESSyUviMsH7g7rJM8i7Bph6BQTE9\n" - "XdqbZPc0opfms4EHjmlXj5HQ0f0yoxHnLk43CR+vmbn0JPuurnEKAwjznAJR8GxI\n" - "R2MRyMxdGqs=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICdDCCAd2gAwIBAgIBAzANBgkqhkiG9w0BAQsFADAaMQswCQYDVQQDEwJDQTEL\n" + "MAkGA1UEBhMCQ1owIhgPMjAxMzExMTAwODI1MjdaGA8yMDIwMTIxMzA4MjUyN1ow\n" + "HjEPMA0GA1UEAxMGQ2xpZW50MQswCQYDVQQGEwJDWjCBnzANBgkqhkiG9w0BAQEF\n" + "AAOBjQAwgYkCgYEAvQRIzvKyhr3tqmB4Pe+91DWSFayaNtcrDIT597bhxugVYW8o\n" + "jB206kx5aknAMA3PQGYcGqkLrt+nsJcmOIXDZsC6P4zeOSsF1PPhDAoX3bkUr2lF\n" + "MEt374eKdg1yvyhRxt4DOR6aD4gkC7fVtaYdgV6yXpJGMHV05LBIgQ7QtykCAwEA\n" + "AaOBwTCBvjAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMCMBgGA1Ud\n" + "EQQRMA+BDW5vbmVAbm9uZS5vcmcwDwYDVR0PAQH/BAUDAweAADAdBgNVHQ4EFgQU\n" + "Dbinh11GaaJcTyOpmxPYuttsiGowHwYDVR0jBBgwFoAUEg7aURJAVq70HG3MobA9\n" + "KGF+MwEwLgYDVR0fBCcwJTAjoCGgH4YdaHR0cDovL3d3dy5nZXRjcmwuY3JsL2dl\n" + "dGNybC8wDQYJKoZIhvcNAQELBQADgYEAN/Henso+5zzuFQWTpJXlUsWtRQAFhRY3\n" + "WVt3xtnyPs4pF/LKBp3Ov0GLGBkz5YlyJGFNESSyUviMsH7g7rJM8i7Bph6BQTE9\n" + "XdqbZPc0opfms4EHjmlXj5HQ0f0yoxHnLk43CR+vmbn0JPuurnEKAwjznAJR8GxI\n" + "R2MRyMxdGqs=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXQIBAAKBgQC9BEjO8rKGve2qYHg9773UNZIVrJo21ysMhPn3tuHG6BVhbyiM\n" - "HbTqTHlqScAwDc9AZhwaqQuu36ewlyY4hcNmwLo/jN45KwXU8+EMChfduRSvaUUw\n" - "S3fvh4p2DXK/KFHG3gM5HpoPiCQLt9W1ph2BXrJekkYwdXTksEiBDtC3KQIDAQAB\n" - "AoGBAKXrseIAB5jh9lPeNQ7heXhjwiXGiuTjAkYOIMNDRXPuXH5YLna4yQv3L4mO\n" - "zecg6DI2sCrzA29xoukP9ZweR4RUK2cS4/QggH9UgWP0QUpvj4nogyRkh7UrWyVV\n" - "xbboHcmgqWgNLR8GrEZqlpOWFiT+f+QAx783/khvP5QLNp6BAkEA3YvvqfPpepdv\n" - "UC/Uk/8LbVK0LGTSu2ynyl1fMbos9lkJNFdfPM31K6DHeqziIGSoWCSjAsN/e8V7\n" - "MU7egWtI+QJBANppSlO+PTYHWKeOWE7NkM1yVHxAiav9Oott0JywAH8RarfyTuCB\n" - "iyMJP8Rv920GsciDY4dyx0MBJF0tiH+5G7ECQQDQbU5UPbxyMPXwIo+DjHZbq2sG\n" - "OPRoj5hrsdxVFCoouSsHqwtWUQ1Otjv1FaDHiOs3wX/6oaHV97wmb2S1rRFBAkAq\n" - "prELFXVinaCkZ9m62c3TMOZqtTetTHAoVjOMxZnzNnV+omTg1qtTFjVLqQnKUqpZ\n" - "G79N7g4XeZueTov/VSihAkAwGeDXvQ8NlrBlZACCKp1sUqaJptuJ438Qwztbl3Pq\n" - "E6/8TD5yXtrLt9S2LNAFw1i7LVksUB8IbQNTuuwV7LYI\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXQIBAAKBgQC9BEjO8rKGve2qYHg9773UNZIVrJo21ysMhPn3tuHG6BVhbyiM\n" + "HbTqTHlqScAwDc9AZhwaqQuu36ewlyY4hcNmwLo/jN45KwXU8+EMChfduRSvaUUw\n" + "S3fvh4p2DXK/KFHG3gM5HpoPiCQLt9W1ph2BXrJekkYwdXTksEiBDtC3KQIDAQAB\n" + "AoGBAKXrseIAB5jh9lPeNQ7heXhjwiXGiuTjAkYOIMNDRXPuXH5YLna4yQv3L4mO\n" + "zecg6DI2sCrzA29xoukP9ZweR4RUK2cS4/QggH9UgWP0QUpvj4nogyRkh7UrWyVV\n" + "xbboHcmgqWgNLR8GrEZqlpOWFiT+f+QAx783/khvP5QLNp6BAkEA3YvvqfPpepdv\n" + "UC/Uk/8LbVK0LGTSu2ynyl1fMbos9lkJNFdfPM31K6DHeqziIGSoWCSjAsN/e8V7\n" + "MU7egWtI+QJBANppSlO+PTYHWKeOWE7NkM1yVHxAiav9Oott0JywAH8RarfyTuCB\n" + "iyMJP8Rv920GsciDY4dyx0MBJF0tiH+5G7ECQQDQbU5UPbxyMPXwIo+DjHZbq2sG\n" + "OPRoj5hrsdxVFCoouSsHqwtWUQ1Otjv1FaDHiOs3wX/6oaHV97wmb2S1rRFBAkAq\n" + "prELFXVinaCkZ9m62c3TMOZqtTetTHAoVjOMxZnzNnV+omTg1qtTFjVLqQnKUqpZ\n" + "G79N7g4XeZueTov/VSihAkAwGeDXvQ8NlrBlZACCKp1sUqaJptuJ438Qwztbl3Pq\n" + "E6/8TD5yXtrLt9S2LNAFw1i7LVksUB8IbQNTuuwV7LYI\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; /* GnuTLS internally calls time() to find out the current time when verifying certificates. To avoid a time bomb, we hard code the current time. This should work fine on systems where the library call to time is resolved at run-time. */ -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1412850586; @@ -104,9 +101,9 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "|<%d>| %s", level, str); } -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (attempt == 0) { strcpy(pin, PIN); @@ -129,7 +126,7 @@ void doit(void) if (gnutls_fips140_mode_enabled()) exit(77); - /* The overloading of time() seems to work in linux (ELF?) + /* The overloading of time() seems to work in linux (ELF?) * systems only. Disable it on windows. */ #ifdef _WIN32 @@ -153,8 +150,9 @@ void doit(void) set_softhsm_conf(CONFIG); snprintf(buf, sizeof(buf), - "%s --init-token --slot 0 --label test --so-pin " PIN " --pin " - PIN, bin); + "%s --init-token --slot 0 --label test --so-pin " PIN + " --pin " PIN, + bin); system(buf); ret = gnutls_pkcs11_add_provider(lib, "trusted"); @@ -166,15 +164,15 @@ void doit(void) ret = gnutls_x509_crt_init(&crt); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_init: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_crt_init: %s\n", + gnutls_strerror(ret)); exit(1); } ret = gnutls_x509_crt_import(crt, &server_cert, GNUTLS_X509_FMT_PEM); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_import: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_crt_import: %s\n", + gnutls_strerror(ret)); exit(1); } @@ -187,15 +185,14 @@ void doit(void) ret = gnutls_x509_privkey_init(&key); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_privkey_init: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_privkey_init: %s\n", + gnutls_strerror(ret)); exit(1); } ret = gnutls_x509_privkey_import(key, &server_key, GNUTLS_X509_FMT_PEM); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_privkey_import: %s\n", + fprintf(stderr, "gnutls_x509_privkey_import: %s\n", gnutls_strerror(ret)); exit(1); } @@ -207,9 +204,8 @@ void doit(void) exit(1); } - ret = - gnutls_pkcs11_token_set_pin(SOFTHSM_URL, NULL, PIN, - GNUTLS_PIN_USER); + ret = gnutls_pkcs11_token_set_pin(SOFTHSM_URL, NULL, PIN, + GNUTLS_PIN_USER); if (ret < 0) { fail("gnutls_pkcs11_token_set_pin: %s\n", gnutls_strerror(ret)); exit(1); @@ -217,20 +213,18 @@ void doit(void) ret = gnutls_pkcs11_copy_x509_crt(SOFTHSM_URL, crt, "cert", GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE | - GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { fail("gnutls_pkcs11_copy_x509_crt: %s\n", gnutls_strerror(ret)); exit(1); } - ret = - gnutls_pkcs11_copy_x509_privkey(SOFTHSM_URL, key, "cert", - GNUTLS_KEY_DIGITAL_SIGNATURE | - GNUTLS_KEY_KEY_ENCIPHERMENT, - GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE - | - GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE - | GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + ret = gnutls_pkcs11_copy_x509_privkey( + SOFTHSM_URL, key, "cert", + GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT, + GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE | + GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE | + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { fail("gnutls_pkcs11_copy_x509_privkey: %s\n", gnutls_strerror(ret)); @@ -251,13 +245,9 @@ void doit(void) exit(1); } - ret = - gnutls_certificate_set_x509_key_file2(cred, - SOFTHSM_URL - ";object=cert;object-type=cert", - SOFTHSM_URL - ";object=cert;object-type=private", - 0, PIN, 0); + ret = gnutls_certificate_set_x509_key_file2( + cred, SOFTHSM_URL ";object=cert;object-type=cert", + SOFTHSM_URL ";object=cert;object-type=private", 0, PIN, 0); if (ret < 0) { fail("gnutls_certificate_set_x509_key_file2: %s\n", gnutls_strerror(ret)); diff --git a/tests/pkcs11/pkcs11-pubkey-import-ecdsa.c b/tests/pkcs11/pkcs11-pubkey-import-ecdsa.c index 5362524183..b85b0abde3 100644 --- a/tests/pkcs11/pkcs11-pubkey-import-ecdsa.c +++ b/tests/pkcs11/pkcs11-pubkey-import-ecdsa.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,7 +30,7 @@ #include "softhsm.h" #define CONFIG_NAME "softhsm-pubkey-import-ecdsa" -#define CONFIG CONFIG_NAME".config" +#define CONFIG CONFIG_NAME ".config" #include "pkcs11-pubkey-import.c" diff --git a/tests/pkcs11/pkcs11-pubkey-import-rsa.c b/tests/pkcs11/pkcs11-pubkey-import-rsa.c index 682efa6bf3..ec5521ce69 100644 --- a/tests/pkcs11/pkcs11-pubkey-import-rsa.c +++ b/tests/pkcs11/pkcs11-pubkey-import-rsa.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -29,7 +29,7 @@ #include #define CONFIG_NAME "softhsm-pubkey-import-rsa" -#define CONFIG CONFIG_NAME".config" +#define CONFIG CONFIG_NAME ".config" #include "pkcs11-pubkey-import.c" diff --git a/tests/pkcs11/pkcs11-pubkey-import.c b/tests/pkcs11/pkcs11-pubkey-import.c index 12db744dbe..9bbe67e10b 100644 --- a/tests/pkcs11/pkcs11-pubkey-import.c +++ b/tests/pkcs11/pkcs11-pubkey-import.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -50,9 +50,9 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "|<%d>| %s", level, str); } -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (attempt == 0) { strcpy(pin, PIN); @@ -93,8 +93,9 @@ static void try(int rsa) set_softhsm_conf(CONFIG); snprintf(buf, sizeof(buf), - "%s --init-token --slot 0 --label test --so-pin " PIN " --pin " - PIN, bin); + "%s --init-token --slot 0 --label test --so-pin " PIN + " --pin " PIN, + bin); system(buf); ret = gnutls_pkcs11_add_provider(lib, "trusted"); @@ -106,17 +107,16 @@ static void try(int rsa) ret = gnutls_x509_crt_init(&crt); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_init: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_crt_init: %s\n", + gnutls_strerror(ret)); exit(1); } - ret = - gnutls_x509_crt_import(crt, rsa ? &server_cert : &server_ecc_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(crt, rsa ? &server_cert : &server_ecc_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_import: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_crt_import: %s\n", + gnutls_strerror(ret)); exit(1); } @@ -129,17 +129,15 @@ static void try(int rsa) ret = gnutls_x509_privkey_init(&key); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_privkey_init: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_privkey_init: %s\n", + gnutls_strerror(ret)); exit(1); } - ret = - gnutls_x509_privkey_import(key, rsa ? &server_key : &server_ecc_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_privkey_import( + key, rsa ? &server_key : &server_ecc_key, GNUTLS_X509_FMT_PEM); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_privkey_import: %s\n", + fprintf(stderr, "gnutls_x509_privkey_import: %s\n", gnutls_strerror(ret)); exit(1); } @@ -151,9 +149,8 @@ static void try(int rsa) exit(1); } - ret = - gnutls_pkcs11_token_set_pin(SOFTHSM_URL, NULL, PIN, - GNUTLS_PIN_USER); + ret = gnutls_pkcs11_token_set_pin(SOFTHSM_URL, NULL, PIN, + GNUTLS_PIN_USER); if (ret < 0) { fail("gnutls_pkcs11_token_set_pin: %s\n", gnutls_strerror(ret)); exit(1); @@ -161,20 +158,18 @@ static void try(int rsa) ret = gnutls_pkcs11_copy_x509_crt(SOFTHSM_URL, crt, "cert", GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE | - GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { fail("gnutls_pkcs11_copy_x509_crt: %s\n", gnutls_strerror(ret)); exit(1); } - ret = - gnutls_pkcs11_copy_x509_privkey(SOFTHSM_URL, key, "cert", - GNUTLS_KEY_DIGITAL_SIGNATURE | - GNUTLS_KEY_KEY_ENCIPHERMENT, - GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE - | - GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE - | GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + ret = gnutls_pkcs11_copy_x509_privkey( + SOFTHSM_URL, key, "cert", + GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT, + GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE | + GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE | + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { fail("gnutls_pkcs11_copy_x509_privkey: %s\n", gnutls_strerror(ret)); @@ -187,11 +182,9 @@ static void try(int rsa) assert(gnutls_privkey_init(&pkey) == 0); - ret = - gnutls_privkey_import_pkcs11_url(pkey, - SOFTHSM_URL - ";object=cert;object-type=private;pin-value=" - PIN); + ret = gnutls_privkey_import_pkcs11_url( + pkey, + SOFTHSM_URL ";object=cert;object-type=private;pin-value=" PIN); if (ret < 0) { fprintf(stderr, "error in %d: %s\n", __LINE__, gnutls_strerror(ret)); @@ -205,22 +198,22 @@ static void try(int rsa) /* check whether privkey and pubkey are operational * by signing and verifying */ - assert(gnutls_privkey_sign_data - (pkey, GNUTLS_DIG_SHA256, 0, &testdata, &sig) == 0); + assert(gnutls_privkey_sign_data(pkey, GNUTLS_DIG_SHA256, 0, &testdata, + &sig) == 0); /* verify against the raw pubkey */ assert(gnutls_pubkey_init(&pubkey2) == 0); - assert(gnutls_pubkey_import_x509_raw - (pubkey2, rsa ? &server_cert : &server_ecc_cert, - GNUTLS_X509_FMT_PEM, 0) == 0); - assert(gnutls_pubkey_verify_data2 - (pubkey2, gnutls_pk_to_sign(pk, GNUTLS_DIG_SHA256), 0, &testdata, - &sig) == 0); + assert(gnutls_pubkey_import_x509_raw( + pubkey2, rsa ? &server_cert : &server_ecc_cert, + GNUTLS_X509_FMT_PEM, 0) == 0); + assert(gnutls_pubkey_verify_data2( + pubkey2, gnutls_pk_to_sign(pk, GNUTLS_DIG_SHA256), 0, + &testdata, &sig) == 0); /* verify against the pubkey in PKCS #11 */ - assert(gnutls_pubkey_verify_data2 - (pubkey, gnutls_pk_to_sign(pk, GNUTLS_DIG_SHA256), 0, &testdata, - &sig) == 0); + assert(gnutls_pubkey_verify_data2( + pubkey, gnutls_pk_to_sign(pk, GNUTLS_DIG_SHA256), 0, + &testdata, &sig) == 0); gnutls_free(sig.data); diff --git a/tests/pkcs11/pkcs11-rsa-pss-privkey-test.c b/tests/pkcs11/pkcs11-rsa-pss-privkey-test.c index 40cb381f09..e812a4b9ce 100644 --- a/tests/pkcs11/pkcs11-rsa-pss-privkey-test.c +++ b/tests/pkcs11/pkcs11-rsa-pss-privkey-test.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -37,7 +37,7 @@ #include "softhsm.h" #define CONFIG_NAME "softhsm-privkey-rsa-pss-test" -#define CONFIG CONFIG_NAME".config" +#define CONFIG CONFIG_NAME ".config" /* Tests whether signing with PKCS#11 and RSA-PSS would * generate valid signatures */ @@ -53,9 +53,9 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "|<%d>| %s", level, str); } -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (attempt == 0) { strcpy(pin, PIN); @@ -64,8 +64,9 @@ int pin_func(void *userdata, int attempt, const char *url, const char *label, return -1; } -#define myfail(fmt, ...) \ - fail("%s (iter %d): "fmt, gnutls_sign_get_name(sigalgo), i, ##__VA_ARGS__) +#define myfail(fmt, ...) \ + fail("%s (iter %d): " fmt, gnutls_sign_get_name(sigalgo), i, \ + ##__VA_ARGS__) static unsigned verify_rsa_pss_presence(void) { @@ -75,10 +76,9 @@ static unsigned verify_rsa_pss_presence(void) i = 0; do { - ret = - gnutls_pkcs11_token_get_mechanism("pkcs11:", i++, - &mechanism); - if (ret >= 0 && mechanism == 0xd /* CKM_RSA_PKCS_PSS */ ) + ret = gnutls_pkcs11_token_get_mechanism("pkcs11:", i++, + &mechanism); + if (ret >= 0 && mechanism == 0xd /* CKM_RSA_PKCS_PSS */) return 1; } while (ret >= 0); @@ -118,8 +118,9 @@ void doit(void) set_softhsm_conf(CONFIG); snprintf(buf, sizeof(buf), - "%s --init-token --slot 0 --label test --so-pin " PIN " --pin " - PIN, bin); + "%s --init-token --slot 0 --label test --so-pin " PIN + " --pin " PIN, + bin); system(buf); ret = gnutls_pkcs11_add_provider(lib, NULL); @@ -137,17 +138,16 @@ void doit(void) ret = gnutls_x509_crt_init(&crt); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_init: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_crt_init: %s\n", + gnutls_strerror(ret)); exit(1); } - ret = - gnutls_x509_crt_import(crt, &cli_ca3_rsa_pss_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(crt, &cli_ca3_rsa_pss_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_import: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_crt_import: %s\n", + gnutls_strerror(ret)); exit(1); } @@ -160,17 +160,15 @@ void doit(void) ret = gnutls_x509_privkey_init(&key); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_privkey_init: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_privkey_init: %s\n", + gnutls_strerror(ret)); exit(1); } - ret = - gnutls_x509_privkey_import(key, &cli_ca3_rsa_pss_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_privkey_import(key, &cli_ca3_rsa_pss_key, + GNUTLS_X509_FMT_PEM); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_privkey_import: %s\n", + fprintf(stderr, "gnutls_x509_privkey_import: %s\n", gnutls_strerror(ret)); exit(1); } @@ -182,9 +180,8 @@ void doit(void) exit(1); } - ret = - gnutls_pkcs11_token_set_pin(SOFTHSM_URL, NULL, PIN, - GNUTLS_PIN_USER); + ret = gnutls_pkcs11_token_set_pin(SOFTHSM_URL, NULL, PIN, + GNUTLS_PIN_USER); if (ret < 0) { fail("gnutls_pkcs11_token_set_pin: %s\n", gnutls_strerror(ret)); exit(1); @@ -192,20 +189,18 @@ void doit(void) ret = gnutls_pkcs11_copy_x509_crt(SOFTHSM_URL, crt, "cert", GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE | - GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { fail("gnutls_pkcs11_copy_x509_crt: %s\n", gnutls_strerror(ret)); exit(1); } - ret = - gnutls_pkcs11_copy_x509_privkey(SOFTHSM_URL, key, "cert", - GNUTLS_KEY_DIGITAL_SIGNATURE | - GNUTLS_KEY_KEY_ENCIPHERMENT, - GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE - | - GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE - | GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + ret = gnutls_pkcs11_copy_x509_privkey( + SOFTHSM_URL, key, "cert", + GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT, + GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE | + GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE | + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { fail("gnutls_pkcs11_copy_x509_privkey: %s\n", gnutls_strerror(ret)); @@ -218,11 +213,9 @@ void doit(void) assert(gnutls_privkey_init(&pkey) == 0); - ret = - gnutls_privkey_import_pkcs11_url(pkey, - SOFTHSM_URL - ";object=cert;object-type=private;pin-value=" - PIN); + ret = gnutls_privkey_import_pkcs11_url( + pkey, + SOFTHSM_URL ";object=cert;object-type=private;pin-value=" PIN); if (ret < 0) { fprintf(stderr, "error in %d: %s\n", __LINE__, gnutls_strerror(ret)); @@ -233,8 +226,8 @@ void doit(void) assert(gnutls_pubkey_import_privkey(pubkey, pkey, 0, 0) == 0); assert(gnutls_pubkey_init(&pubkey2) == 0); - assert(gnutls_pubkey_import_x509_raw - (pubkey2, &cli_ca3_rsa_pss_cert, GNUTLS_X509_FMT_PEM, 0) == 0); + assert(gnutls_pubkey_import_x509_raw(pubkey2, &cli_ca3_rsa_pss_cert, + GNUTLS_X509_FMT_PEM, 0) == 0); /* this is the algorithm supported by the certificate */ sigalgo = GNUTLS_SIGN_RSA_PSS_SHA256; @@ -242,24 +235,21 @@ void doit(void) for (i = 0; i < 20; i++) { /* check whether privkey and pubkey are operational * by signing and verifying */ - ret = - gnutls_privkey_sign_data2(pkey, sigalgo, 0, - &testdata, &sig); + ret = gnutls_privkey_sign_data2(pkey, sigalgo, 0, &testdata, + &sig); if (ret < 0) myfail("Error signing data %s\n", gnutls_strerror(ret)); /* verify against the pubkey in PKCS #11 */ - ret = - gnutls_pubkey_verify_data2(pubkey, sigalgo, 0, - &testdata, &sig); + ret = gnutls_pubkey_verify_data2(pubkey, sigalgo, 0, &testdata, + &sig); if (ret < 0) myfail("Error verifying data1: %s\n", gnutls_strerror(ret)); /* verify against the raw pubkey */ - ret = - gnutls_pubkey_verify_data2(pubkey2, sigalgo, 0, - &testdata, &sig); + ret = gnutls_pubkey_verify_data2(pubkey2, sigalgo, 0, &testdata, + &sig); if (ret < 0) myfail("Error verifying data2: %s\n", gnutls_strerror(ret)); diff --git a/tests/pkcs11/pkcs11-token-raw.c b/tests/pkcs11/pkcs11-token-raw.c index 1c2b4d3d5d..05d31d94f5 100644 --- a/tests/pkcs11/pkcs11-token-raw.c +++ b/tests/pkcs11/pkcs11-token-raw.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -34,7 +34,7 @@ #include #include #ifndef CRYPTOKI_GNU -# define CRYPTOKI_GNU +#define CRYPTOKI_GNU #endif #include @@ -44,19 +44,19 @@ #if defined(HAVE___REGISTER_ATFORK) -# ifdef _WIN32 -# define P11LIB "libpkcs11mock1.dll" -# else -# include -# define P11LIB "libpkcs11mock1.so" -# endif +#ifdef _WIN32 +#define P11LIB "libpkcs11mock1.dll" +#else +#include +#define P11LIB "libpkcs11mock1.so" +#endif static void tls_log_func(int level, const char *str) { fprintf(stderr, "|<%d>| %s", level, str); } -# define TOKEN_NAME "whatever" +#define TOKEN_NAME "whatever" void doit(void) { int ret; @@ -100,9 +100,8 @@ void doit(void) size_t size = 1; char *buf = gnutls_malloc(size); assert(buf != NULL); - ret = gnutls_pkcs11_token_get_info(url, - GNUTLS_PKCS11_TOKEN_LABEL, - buf, &size); + ret = gnutls_pkcs11_token_get_info( + url, GNUTLS_PKCS11_TOKEN_LABEL, buf, &size); assert(ret == GNUTLS_E_SHORT_MEMORY_BUFFER); assert(size == strlen(TOKEN_NAME) + 1); @@ -110,18 +109,16 @@ void doit(void) size -= 1; buf = gnutls_realloc(buf, size); assert(buf != NULL); - ret = gnutls_pkcs11_token_get_info(url, - GNUTLS_PKCS11_TOKEN_LABEL, - buf, &size); + ret = gnutls_pkcs11_token_get_info( + url, GNUTLS_PKCS11_TOKEN_LABEL, buf, &size); assert(ret == GNUTLS_E_SHORT_MEMORY_BUFFER); assert(size == strlen(TOKEN_NAME) + 1); /* Testing an exactly fitting buffer */ buf = gnutls_realloc(buf, size); assert(buf != NULL); - ret = gnutls_pkcs11_token_get_info(url, - GNUTLS_PKCS11_TOKEN_LABEL, - buf, &size); + ret = gnutls_pkcs11_token_get_info( + url, GNUTLS_PKCS11_TOKEN_LABEL, buf, &size); assert(ret == 0); assert(strcmp(buf, TOKEN_NAME) == 0); assert(size == strlen(TOKEN_NAME)); @@ -129,13 +126,12 @@ void doit(void) gnutls_free(buf); } - ret = - gnutls_pkcs11_token_get_ptr("pkcs11:token=invalid", (void **)&mod, - &slot_id, 0); + ret = gnutls_pkcs11_token_get_ptr("pkcs11:token=invalid", (void **)&mod, + &slot_id, 0); assert(ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); - ret = - gnutls_pkcs11_token_get_ptr("pkcs11:", (void **)&mod, &slot_id, 0); + ret = gnutls_pkcs11_token_get_ptr("pkcs11:", (void **)&mod, &slot_id, + 0); if (ret < 0) { fail("%d: %s\n", ret, gnutls_strerror(ret)); exit(1); diff --git a/tests/pkcs11/softhsm.h b/tests/pkcs11/softhsm.h index 9a13cc304b..29dfd0f0a1 100644 --- a/tests/pkcs11/softhsm.h +++ b/tests/pkcs11/softhsm.h @@ -18,31 +18,33 @@ */ #ifndef SOFTHSM_H -# define SOFTHSM_H - -# include - -# define SOFTHSM_V2 - -# ifdef SOFTHSM_V1 -# define SOFTHSM_URL "pkcs11:model=SoftHSM;manufacturer=SoftHSM;serial=1;token=test" -# define LIB1 "/usr/lib64/pkcs11/libsofthsm.so" -# define LIB2 "/usr/lib/pkcs11/libsofthsm.so" -# define LIB3 "/usr/lib/softhsm/libsofthsm.so" -# define LIB4 "/usr/local/lib/softhsm/libsofthsm.so" -# define SOFTHSM_BIN1 "/usr/bin/softhsm" -# define SOFTHSM_BIN2 "/usr/local/bin/softhsm" -# define SOFTHSM_ENV "SOFTHSM_CONF" -# else -# define SOFTHSM_URL "pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;token=test" -# define LIB1 "/usr/lib64/pkcs11/libsofthsm2.so" -# define LIB2 "/usr/lib/pkcs11/libsofthsm2.so" -# define LIB3 "/usr/lib/softhsm/libsofthsm2.so" -# define LIB4 "/usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so" -# define SOFTHSM_BIN1 "/usr/bin/softhsm2-util" -# define SOFTHSM_BIN2 "/usr/local/bin/softhsm2-util" -# define SOFTHSM_ENV "SOFTHSM2_CONF" -# endif +#define SOFTHSM_H + +#include + +#define SOFTHSM_V2 + +#ifdef SOFTHSM_V1 +#define SOFTHSM_URL \ + "pkcs11:model=SoftHSM;manufacturer=SoftHSM;serial=1;token=test" +#define LIB1 "/usr/lib64/pkcs11/libsofthsm.so" +#define LIB2 "/usr/lib/pkcs11/libsofthsm.so" +#define LIB3 "/usr/lib/softhsm/libsofthsm.so" +#define LIB4 "/usr/local/lib/softhsm/libsofthsm.so" +#define SOFTHSM_BIN1 "/usr/bin/softhsm" +#define SOFTHSM_BIN2 "/usr/local/bin/softhsm" +#define SOFTHSM_ENV "SOFTHSM_CONF" +#else +#define SOFTHSM_URL \ + "pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;token=test" +#define LIB1 "/usr/lib64/pkcs11/libsofthsm2.so" +#define LIB2 "/usr/lib/pkcs11/libsofthsm2.so" +#define LIB3 "/usr/lib/softhsm/libsofthsm2.so" +#define LIB4 "/usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so" +#define SOFTHSM_BIN1 "/usr/bin/softhsm2-util" +#define SOFTHSM_BIN2 "/usr/local/bin/softhsm2-util" +#define SOFTHSM_ENV "SOFTHSM2_CONF" +#endif inline static const char *softhsm_lib(void) { @@ -80,8 +82,7 @@ inline static const char *softhsm_bin(void) return bin; } -static -void set_softhsm_conf(const char *config) +static void set_softhsm_conf(const char *config) { char buf[128]; char db_dir[128]; @@ -96,11 +97,11 @@ void set_softhsm_conf(const char *config) fprintf(stderr, "error writing %s\n", config); exit(1); } -# ifdef SOFTHSM_V1 +#ifdef SOFTHSM_V1 remove(db_dir); snprintf(buf, sizeof(buf), "0:./%s\n", db_dir); fputs(buf, fp); -# else +#else fputs("directories.tokendir = ", fp); fputs(db_dir, fp); fputs("\n", fp); @@ -113,7 +114,7 @@ void set_softhsm_conf(const char *config) snprintf(buf, sizeof(buf), "rm -rf %s\n", db_dir); system(buf); mkdir(db_dir, 0755); -# endif +#endif fclose(fp); setenv(SOFTHSM_ENV, config, 0); diff --git a/tests/pkcs11/tls-neg-pkcs11-key.c b/tests/pkcs11/tls-neg-pkcs11-key.c index 812378610b..4adcd58724 100644 --- a/tests/pkcs11/tls-neg-pkcs11-key.c +++ b/tests/pkcs11/tls-neg-pkcs11-key.c @@ -22,7 +22,7 @@ /* This tests TLS negotiation using the gnutls_privkey_import_ext2() APIs */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,9 +30,9 @@ #include #include #ifndef _WIN32 -# include -# include -# include +#include +#include +#include #endif #include #include @@ -50,11 +50,10 @@ static void tls_log_func(int level, const char *str) } #define CONFIG_NAME "softhsm-neg" -#define CONFIG CONFIG_NAME".config" +#define CONFIG CONFIG_NAME ".config" #define PIN "1234" -#define testfail(fmt, ...) \ - fail("%s: "fmt, name, ##__VA_ARGS__) +#define testfail(fmt, ...) fail("%s: " fmt, name, ##__VA_ARGS__) static unsigned verify_eddsa_presence(void) { @@ -64,10 +63,9 @@ static unsigned verify_eddsa_presence(void) i = 0; do { - ret = - gnutls_pkcs11_token_get_mechanism("pkcs11:", i++, - &mechanism); - if (ret >= 0 && mechanism == 0x1057 /* CKM_EDDSA */ ) + ret = gnutls_pkcs11_token_get_mechanism("pkcs11:", i++, + &mechanism); + if (ret >= 0 && mechanism == 0x1057 /* CKM_EDDSA */) return 1; } while (ret >= 0); @@ -75,7 +73,7 @@ static unsigned verify_eddsa_presence(void) } static gnutls_privkey_t load_virt_privkey(const char *name, - const gnutls_datum_t * txtkey, + const gnutls_datum_t *txtkey, int exp_key_err, unsigned needs_decryption) { @@ -97,11 +95,11 @@ static gnutls_privkey_t load_virt_privkey(const char *name, else flags = GNUTLS_KEY_DIGITAL_SIGNATURE; - ret = gnutls_pkcs11_copy_x509_privkey(SOFTHSM_URL, tmp, "key", flags, - GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE - | - GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE - | GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + ret = gnutls_pkcs11_copy_x509_privkey( + SOFTHSM_URL, tmp, "key", flags, + GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE | + GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE | + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); gnutls_x509_privkey_deinit(tmp); if (ret < 0) { @@ -132,13 +130,12 @@ static gnutls_privkey_t load_virt_privkey(const char *name, return privkey; } -static -void try_with_key(const char *name, const char *client_prio, - gnutls_kx_algorithm_t client_kx, - gnutls_sign_algorithm_t server_sign_algo, - gnutls_sign_algorithm_t client_sign_algo, - const gnutls_datum_t * serv_cert, - gnutls_privkey_t key, int exp_serv_err) +static void try_with_key(const char *name, const char *client_prio, + gnutls_kx_algorithm_t client_kx, + gnutls_sign_algorithm_t server_sign_algo, + gnutls_sign_algorithm_t client_sign_algo, + const gnutls_datum_t *serv_cert, gnutls_privkey_t key, + int exp_serv_err) { int ret; gnutls_pcert_st pcert_list[4]; @@ -180,9 +177,10 @@ void try_with_key(const char *name, const char *client_prio, gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, s_xcred); - assert(gnutls_priority_set_direct(server, - "NORMAL:+VERS-SSL3.0:+ANON-ECDH:+ANON-DH:+ECDHE-RSA:+DHE-RSA:+RSA:+ECDHE-ECDSA:+CURVE-X25519:+SIGN-EDDSA-ED25519", - NULL) >= 0); + assert(gnutls_priority_set_direct( + server, + "NORMAL:+VERS-SSL3.0:+ANON-ECDH:+ANON-DH:+ECDHE-RSA:+DHE-RSA:+RSA:+ECDHE-ECDSA:+CURVE-X25519:+SIGN-EDDSA-ED25519", + NULL) >= 0); gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); gnutls_transport_set_ptr(server, server); @@ -219,10 +217,10 @@ void try_with_key(const char *name, const char *client_prio, } if (gnutls_kx_get(client) != client_kx) { - testfail - ("%s: got unexpected key exchange algorithm: %s (expected %s)\n", - name, gnutls_kx_get_name(gnutls_kx_get(client)), - gnutls_kx_get_name(client_kx)); + testfail( + "%s: got unexpected key exchange algorithm: %s (expected %s)\n", + name, gnutls_kx_get_name(gnutls_kx_get(client)), + gnutls_kx_get_name(client_kx)); exit(1); } @@ -231,33 +229,33 @@ void try_with_key(const char *name, const char *client_prio, if (version >= GNUTLS_TLS1_2) { ret = gnutls_sign_algorithm_get(server); if (ret != (int)server_sign_algo && server_sign_algo != 0) { - testfail - ("%s: got unexpected server signature algorithm: %d/%s\n", - name, ret, gnutls_sign_get_name(ret)); + testfail( + "%s: got unexpected server signature algorithm: %d/%s\n", + name, ret, gnutls_sign_get_name(ret)); exit(1); } ret = gnutls_sign_algorithm_get_client(server); if (ret != (int)client_sign_algo && client_sign_algo != 0) { - testfail - ("%s: got unexpected client signature algorithm: %d/%s\n", - name, ret, gnutls_sign_get_name(ret)); + testfail( + "%s: got unexpected client signature algorithm: %d/%s\n", + name, ret, gnutls_sign_get_name(ret)); exit(1); } ret = gnutls_sign_algorithm_get(client); if (ret != (int)server_sign_algo && server_sign_algo != 0) { - testfail - ("%s: cl: got unexpected server signature algorithm: %d/%s\n", - name, ret, gnutls_sign_get_name(ret)); + testfail( + "%s: cl: got unexpected server signature algorithm: %d/%s\n", + name, ret, gnutls_sign_get_name(ret)); exit(1); } ret = gnutls_sign_algorithm_get_client(client); if (ret != (int)client_sign_algo && client_sign_algo != 0) { - testfail - ("%s: cl: got unexpected client signature algorithm: %d/%s\n", - name, ret, gnutls_sign_get_name(ret)); + testfail( + "%s: cl: got unexpected client signature algorithm: %d/%s\n", + name, ret, gnutls_sign_get_name(ret)); exit(1); } } @@ -265,7 +263,7 @@ void try_with_key(const char *name, const char *client_prio, gnutls_bye(client, GNUTLS_SHUT_RDWR); gnutls_bye(server, GNUTLS_SHUT_RDWR); - cleanup: +cleanup: gnutls_deinit(client); gnutls_deinit(server); @@ -289,130 +287,127 @@ typedef struct test_st { } test_st; static const test_st tests[] = { - {.name = "tls1.2: rsa-decryption key", - .pk = GNUTLS_PK_RSA, - .prio = "NORMAL:-KX-ALL:+RSA:-VERS-TLS-ALL:+VERS-TLS1.2", - .cert = &server_ca3_localhost_rsa_decrypt_cert, - .key = &server_ca3_key, - .exp_kx = GNUTLS_KX_RSA, - .needs_decryption = 1}, - {.name = "tls1.2: rsa-decryption key, signatures prioritized", - .pk = GNUTLS_PK_RSA, - .prio = - "NORMAL:-KX-ALL:+ECDHE-RSA:+RSA:-VERS-TLS-ALL:+VERS-TLS1.2:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA256", - .cert = &server_ca3_localhost_cert, - .key = &server_ca3_key, - .exp_kx = GNUTLS_KX_RSA, - .needs_decryption = 1}, - {.name = "tls1.2: ecc key", - .pk = GNUTLS_PK_ECDSA, - .prio = - "NORMAL:-KX-ALL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.2", - .cert = &server_ca3_localhost_ecc_cert, - .key = &server_ca3_ecc_key, - .exp_kx = GNUTLS_KX_ECDHE_ECDSA}, - {.name = "tls1.2: rsa-sign key", - .pk = GNUTLS_PK_RSA, - .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.2", - .cert = &server_ca3_localhost_cert, - .key = &server_ca3_key, - .exp_kx = GNUTLS_KX_ECDHE_RSA}, - {.name = "tls1.2: rsa-sign key with rsa-pss sigs prioritized", - .pk = GNUTLS_PK_RSA, - .prio = - "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-SIGN-ALL:+SIGN-RSA-PSS-SHA256:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA512:+SIGN-RSA-SHA256:+SIGN-RSA-SHA384:+SIGN-RSA-SHA512:-VERS-TLS-ALL:+VERS-TLS1.2", - .cert = &server_ca3_localhost_cert, - .key = &server_ca3_key, - .exp_kx = GNUTLS_KX_ECDHE_RSA}, - {.name = "tls1.2: rsa-pss-sign key", - .pk = GNUTLS_PK_RSA_PSS, - .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.2", - .cert = &server_ca3_rsa_pss2_cert, - .key = &server_ca3_rsa_pss2_key, - .exp_kx = GNUTLS_KX_ECDHE_RSA, - .requires_pkcs11_pss = 1, - }, - {.name = "tls1.2: rsa-pss cert, rsa-sign key", - .pk = GNUTLS_PK_RSA, - .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.2", - .cert = &server_ca3_rsa_pss_cert, - .key = &server_ca3_rsa_pss_key, - .exp_kx = GNUTLS_KX_ECDHE_RSA, - .requires_pkcs11_pss = 1, - }, - {.name = "tls1.2: rsa-pss cert, rsa-sign key no PSS signatures", - .pk = GNUTLS_PK_RSA, - .prio = - "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.2:-SIGN-RSA-PSS-SHA256:-SIGN-RSA-PSS-SHA384:-SIGN-RSA-PSS-SHA512:-SIGN-RSA-PSS-RSAE-SHA256:-SIGN-RSA-PSS-RSAE-SHA384:-SIGN-RSA-PSS-RSAE-SHA512", - .cert = &server_ca3_rsa_pss_cert, - .key = &server_ca3_rsa_pss_key, - .exp_kx = GNUTLS_KX_ECDHE_RSA, - .exp_serv_err = GNUTLS_E_NO_CIPHER_SUITES}, - {.name = "tls1.2: ed25519 cert, ed25519 key", - .pk = GNUTLS_PK_EDDSA_ED25519, - .needs_eddsa = 1, - .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA", - .cert = &server_ca3_eddsa_cert, - .key = &server_ca3_eddsa_key, - .exp_kx = GNUTLS_KX_ECDHE_RSA, - .nofips = 1}, - {.name = "tls1.3: ecc key", - .pk = GNUTLS_PK_ECDSA, - .prio = - "NORMAL:-KX-ALL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.3", - .cert = &server_ca3_localhost_ecc_cert, - .key = &server_ca3_ecc_key, - .exp_kx = GNUTLS_KX_ECDHE_RSA}, - {.name = "tls1.3: rsa-sign key", - .pk = GNUTLS_PK_RSA, - .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.3", - .cert = &server_ca3_localhost_cert, - .key = &server_ca3_key, - .exp_kx = GNUTLS_KX_ECDHE_RSA}, - {.name = "tls1.3: rsa-sign key with rsa-pss sigs prioritized", - .pk = GNUTLS_PK_RSA, - .prio = - "NORMAL:-SIGN-ALL:+SIGN-RSA-PSS-SHA256:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA512:+SIGN-RSA-PSS-RSAE-SHA256:+SIGN-RSA-PSS-RSAE-SHA384:+SIGN-RSA-PSS-RSAE-SHA512:-VERS-TLS-ALL:+VERS-TLS1.3", - .cert = &server_ca3_localhost_cert, - .key = &server_ca3_key, - .exp_kx = GNUTLS_KX_ECDHE_RSA}, - {.name = "tls1.3: rsa-pss-sign key", - .pk = GNUTLS_PK_RSA_PSS, - .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.3", - .cert = &server_ca3_rsa_pss2_cert, - .key = &server_ca3_rsa_pss2_key, - .exp_kx = GNUTLS_KX_ECDHE_RSA, - .requires_pkcs11_pss = 1, - }, - {.name = "tls1.3: rsa-pss cert, rsa-sign key", - .pk = GNUTLS_PK_RSA, - .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.3", - .cert = &server_ca3_rsa_pss_cert, - .key = &server_ca3_rsa_pss_key, - .exp_kx = GNUTLS_KX_ECDHE_RSA, - .requires_pkcs11_pss = 1, - }, - {.name = "tls1.3: rsa-pss cert, rsa-sign key no PSS signatures", - .pk = GNUTLS_PK_RSA, - .prio = - "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.3:-SIGN-RSA-PSS-SHA256:-SIGN-RSA-PSS-SHA384:-SIGN-RSA-PSS-SHA512:-SIGN-RSA-PSS-RSAE-SHA256:-SIGN-RSA-PSS-RSAE-SHA384:-SIGN-RSA-PSS-RSAE-SHA512", - .cert = &server_ca3_rsa_pss_cert, - .key = &server_ca3_rsa_pss_key, - .exp_kx = GNUTLS_KX_ECDHE_RSA, - .exp_serv_err = GNUTLS_E_NO_CIPHER_SUITES}, - {.name = "tls1.3: ed25519 cert, ed25519 key", - .needs_eddsa = 1, - .pk = GNUTLS_PK_EDDSA_ED25519, - .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA", - .cert = &server_ca3_eddsa_cert, - .key = &server_ca3_eddsa_key, - .exp_kx = GNUTLS_KX_ECDHE_RSA, - .nofips = 1} + { .name = "tls1.2: rsa-decryption key", + .pk = GNUTLS_PK_RSA, + .prio = "NORMAL:-KX-ALL:+RSA:-VERS-TLS-ALL:+VERS-TLS1.2", + .cert = &server_ca3_localhost_rsa_decrypt_cert, + .key = &server_ca3_key, + .exp_kx = GNUTLS_KX_RSA, + .needs_decryption = 1 }, + { .name = "tls1.2: rsa-decryption key, signatures prioritized", + .pk = GNUTLS_PK_RSA, + .prio = "NORMAL:-KX-ALL:+ECDHE-RSA:+RSA:-VERS-TLS-ALL:+VERS-TLS1.2:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA256", + .cert = &server_ca3_localhost_cert, + .key = &server_ca3_key, + .exp_kx = GNUTLS_KX_RSA, + .needs_decryption = 1 }, + { .name = "tls1.2: ecc key", + .pk = GNUTLS_PK_ECDSA, + .prio = "NORMAL:-KX-ALL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.2", + .cert = &server_ca3_localhost_ecc_cert, + .key = &server_ca3_ecc_key, + .exp_kx = GNUTLS_KX_ECDHE_ECDSA }, + { .name = "tls1.2: rsa-sign key", + .pk = GNUTLS_PK_RSA, + .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.2", + .cert = &server_ca3_localhost_cert, + .key = &server_ca3_key, + .exp_kx = GNUTLS_KX_ECDHE_RSA }, + { .name = "tls1.2: rsa-sign key with rsa-pss sigs prioritized", + .pk = GNUTLS_PK_RSA, + .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-SIGN-ALL:+SIGN-RSA-PSS-SHA256:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA512:+SIGN-RSA-SHA256:+SIGN-RSA-SHA384:+SIGN-RSA-SHA512:-VERS-TLS-ALL:+VERS-TLS1.2", + .cert = &server_ca3_localhost_cert, + .key = &server_ca3_key, + .exp_kx = GNUTLS_KX_ECDHE_RSA }, + { + .name = "tls1.2: rsa-pss-sign key", + .pk = GNUTLS_PK_RSA_PSS, + .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.2", + .cert = &server_ca3_rsa_pss2_cert, + .key = &server_ca3_rsa_pss2_key, + .exp_kx = GNUTLS_KX_ECDHE_RSA, + .requires_pkcs11_pss = 1, + }, + { + .name = "tls1.2: rsa-pss cert, rsa-sign key", + .pk = GNUTLS_PK_RSA, + .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.2", + .cert = &server_ca3_rsa_pss_cert, + .key = &server_ca3_rsa_pss_key, + .exp_kx = GNUTLS_KX_ECDHE_RSA, + .requires_pkcs11_pss = 1, + }, + { .name = "tls1.2: rsa-pss cert, rsa-sign key no PSS signatures", + .pk = GNUTLS_PK_RSA, + .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.2:-SIGN-RSA-PSS-SHA256:-SIGN-RSA-PSS-SHA384:-SIGN-RSA-PSS-SHA512:-SIGN-RSA-PSS-RSAE-SHA256:-SIGN-RSA-PSS-RSAE-SHA384:-SIGN-RSA-PSS-RSAE-SHA512", + .cert = &server_ca3_rsa_pss_cert, + .key = &server_ca3_rsa_pss_key, + .exp_kx = GNUTLS_KX_ECDHE_RSA, + .exp_serv_err = GNUTLS_E_NO_CIPHER_SUITES }, + { .name = "tls1.2: ed25519 cert, ed25519 key", + .pk = GNUTLS_PK_EDDSA_ED25519, + .needs_eddsa = 1, + .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA", + .cert = &server_ca3_eddsa_cert, + .key = &server_ca3_eddsa_key, + .exp_kx = GNUTLS_KX_ECDHE_RSA, + .nofips = 1 }, + { .name = "tls1.3: ecc key", + .pk = GNUTLS_PK_ECDSA, + .prio = "NORMAL:-KX-ALL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.3", + .cert = &server_ca3_localhost_ecc_cert, + .key = &server_ca3_ecc_key, + .exp_kx = GNUTLS_KX_ECDHE_RSA }, + { .name = "tls1.3: rsa-sign key", + .pk = GNUTLS_PK_RSA, + .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.3", + .cert = &server_ca3_localhost_cert, + .key = &server_ca3_key, + .exp_kx = GNUTLS_KX_ECDHE_RSA }, + { .name = "tls1.3: rsa-sign key with rsa-pss sigs prioritized", + .pk = GNUTLS_PK_RSA, + .prio = "NORMAL:-SIGN-ALL:+SIGN-RSA-PSS-SHA256:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA512:+SIGN-RSA-PSS-RSAE-SHA256:+SIGN-RSA-PSS-RSAE-SHA384:+SIGN-RSA-PSS-RSAE-SHA512:-VERS-TLS-ALL:+VERS-TLS1.3", + .cert = &server_ca3_localhost_cert, + .key = &server_ca3_key, + .exp_kx = GNUTLS_KX_ECDHE_RSA }, + { + .name = "tls1.3: rsa-pss-sign key", + .pk = GNUTLS_PK_RSA_PSS, + .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.3", + .cert = &server_ca3_rsa_pss2_cert, + .key = &server_ca3_rsa_pss2_key, + .exp_kx = GNUTLS_KX_ECDHE_RSA, + .requires_pkcs11_pss = 1, + }, + { + .name = "tls1.3: rsa-pss cert, rsa-sign key", + .pk = GNUTLS_PK_RSA, + .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.3", + .cert = &server_ca3_rsa_pss_cert, + .key = &server_ca3_rsa_pss_key, + .exp_kx = GNUTLS_KX_ECDHE_RSA, + .requires_pkcs11_pss = 1, + }, + { .name = "tls1.3: rsa-pss cert, rsa-sign key no PSS signatures", + .pk = GNUTLS_PK_RSA, + .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.3:-SIGN-RSA-PSS-SHA256:-SIGN-RSA-PSS-SHA384:-SIGN-RSA-PSS-SHA512:-SIGN-RSA-PSS-RSAE-SHA256:-SIGN-RSA-PSS-RSAE-SHA384:-SIGN-RSA-PSS-RSAE-SHA512", + .cert = &server_ca3_rsa_pss_cert, + .key = &server_ca3_rsa_pss_key, + .exp_kx = GNUTLS_KX_ECDHE_RSA, + .exp_serv_err = GNUTLS_E_NO_CIPHER_SUITES }, + { .name = "tls1.3: ed25519 cert, ed25519 key", + .needs_eddsa = 1, + .pk = GNUTLS_PK_EDDSA_ED25519, + .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA", + .cert = &server_ca3_eddsa_cert, + .key = &server_ca3_eddsa_key, + .exp_kx = GNUTLS_KX_ECDHE_RSA, + .nofips = 1 } }; -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (attempt == 0) { strcpy(pin, PIN); @@ -422,7 +417,7 @@ int pin_func(void *userdata, int attempt, const char *url, const char *label, } #ifndef CKM_RSA_PKCS_PSS -# define CKM_RSA_PKCS_PSS (0xdUL) +#define CKM_RSA_PKCS_PSS (0xdUL) #endif void doit(void) @@ -453,8 +448,9 @@ void doit(void) gnutls_pkcs11_set_pin_function(pin_func, NULL); set_softhsm_conf(CONFIG); snprintf(buf, sizeof(buf), - "%s --init-token --slot 0 --label test --so-pin " PIN " --pin " - PIN, bin); + "%s --init-token --slot 0 --label test --so-pin " PIN + " --pin " PIN, + bin); system(buf); ret = gnutls_pkcs11_add_provider(lib, NULL); @@ -474,10 +470,8 @@ void doit(void) success("checking: %s\n", tests[i].name); if (tests[i].requires_pkcs11_pss) { - ret = - gnutls_pkcs11_token_check_mechanism("pkcs11:", - CKM_RSA_PKCS_PSS, - NULL, 0, 0); + ret = gnutls_pkcs11_token_check_mechanism( + "pkcs11:", CKM_RSA_PKCS_PSS, NULL, 0, 0); if (ret == 0) { fprintf(stderr, "softhsm2 doesn't support CKM_RSA_PKCS_PSS; skipping test\n"); @@ -485,17 +479,15 @@ void doit(void) } } - privkey = - load_virt_privkey(tests[i].name, tests[i].key, - tests[i].exp_key_err, - tests[i].needs_decryption); + privkey = load_virt_privkey(tests[i].name, tests[i].key, + tests[i].exp_key_err, + tests[i].needs_decryption); if (privkey == NULL && tests[i].exp_key_err < 0) continue; assert(privkey != 0); - try_with_key(tests[i].name, tests[i].prio, - tests[i].exp_kx, 0, 0, - tests[i].cert, privkey, tests[i].exp_serv_err); + try_with_key(tests[i].name, tests[i].prio, tests[i].exp_kx, 0, + 0, tests[i].cert, privkey, tests[i].exp_serv_err); gnutls_pkcs11_delete_url(SOFTHSM_URL ";object=key", GNUTLS_PKCS11_OBJ_FLAG_LOGIN); diff --git a/tests/pkcs11/tls-neg-pkcs11-no-key.c b/tests/pkcs11/tls-neg-pkcs11-no-key.c index b6df8d2605..d31e44fe99 100644 --- a/tests/pkcs11/tls-neg-pkcs11-no-key.c +++ b/tests/pkcs11/tls-neg-pkcs11-no-key.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,22 +35,22 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "cert-common.h" -# include "tls13/ext-parse.h" -# include "pkcs11/softhsm.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cert-common.h" +#include "tls13/ext-parse.h" +#include "pkcs11/softhsm.h" +#include "utils.h" /* This program tests that TLS 1.3 is disabled as expected. */ @@ -65,16 +65,16 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define P11LIB "libpkcs11mock2.so" +#define P11LIB "libpkcs11mock2.so" -# define PIN "1234" +#define PIN "1234" -# define CONFIG_NAME "softhsm-neg-no-key" -# define CONFIG CONFIG_NAME".config" +#define CONFIG_NAME "softhsm-neg-no-key" +#define CONFIG CONFIG_NAME ".config" -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (attempt == 0) { strcpy(pin, PIN); @@ -100,9 +100,8 @@ static void client(int fd) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(x509_cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(x509_cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -112,15 +111,13 @@ static void client(int fd) gnutls_handshake_set_timeout(session, get_timeout()); - ret = - gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); + ret = gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, + x509_cred); if (ret < 0) fail("cannot set credentials\n"); - ret = - gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2", - NULL); + ret = gnutls_priority_set_direct( + session, "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2", NULL); if (ret < 0) fail("cannot set priorities\n"); @@ -130,8 +127,7 @@ static void client(int fd) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret != 0) fail("handshake failed: %s\n", gnutls_strerror(ret)); @@ -198,16 +194,16 @@ static void server(int fd) ret = gnutls_x509_crt_init(&crt); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_init: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_crt_init: %s\n", + gnutls_strerror(ret)); exit(1); } - ret = - gnutls_x509_crt_import(crt, &server_ca3_cert, GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(crt, &server_ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_import: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_crt_import: %s\n", + gnutls_strerror(ret)); exit(1); } @@ -220,17 +216,15 @@ static void server(int fd) ret = gnutls_x509_privkey_init(&key); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_privkey_init: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_privkey_init: %s\n", + gnutls_strerror(ret)); exit(1); } - ret = - gnutls_x509_privkey_import(key, &server_ca3_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_privkey_import(key, &server_ca3_key, + GNUTLS_X509_FMT_PEM); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_privkey_import: %s\n", + fprintf(stderr, "gnutls_x509_privkey_import: %s\n", gnutls_strerror(ret)); exit(1); } @@ -242,9 +236,8 @@ static void server(int fd) exit(1); } - ret = - gnutls_pkcs11_token_set_pin(SOFTHSM_URL, NULL, PIN, - GNUTLS_PIN_USER); + ret = gnutls_pkcs11_token_set_pin(SOFTHSM_URL, NULL, PIN, + GNUTLS_PIN_USER); if (ret < 0) { fail("gnutls_pkcs11_token_set_pin: %s\n", gnutls_strerror(ret)); exit(1); @@ -252,20 +245,18 @@ static void server(int fd) ret = gnutls_pkcs11_copy_x509_crt(SOFTHSM_URL, crt, "cert", GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE | - GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { fail("gnutls_pkcs11_copy_x509_crt: %s\n", gnutls_strerror(ret)); exit(1); } - ret = - gnutls_pkcs11_copy_x509_privkey(SOFTHSM_URL, key, "cert", - GNUTLS_KEY_DIGITAL_SIGNATURE | - GNUTLS_KEY_KEY_ENCIPHERMENT, - GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE - | - GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE - | GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + ret = gnutls_pkcs11_copy_x509_privkey( + SOFTHSM_URL, key, "cert", + GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT, + GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE | + GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE | + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { fail("gnutls_pkcs11_copy_x509_privkey: %s\n", gnutls_strerror(ret)); @@ -281,22 +272,19 @@ static void server(int fd) gnutls_handshake_set_timeout(session, get_timeout()); - assert(gnutls_certificate_set_x509_key_file(x509_cred, - SOFTHSM_URL - ";object=cert;object-type=cert", - SOFTHSM_URL - ";object=cert;object-type=private;pin-value=" - PIN, - GNUTLS_X509_FMT_DER) >= 0); + assert(gnutls_certificate_set_x509_key_file( + x509_cred, SOFTHSM_URL ";object=cert;object-type=cert", + SOFTHSM_URL + ";object=cert;object-type=private;pin-value=" PIN, + GNUTLS_X509_FMT_DER) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2", - NULL); + gnutls_priority_set_direct( + session, "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2", NULL); gnutls_transport_set_int(session, fd); @@ -351,8 +339,9 @@ void doit(void) set_softhsm_conf(CONFIG); snprintf(buf, sizeof(buf), - "%s --init-token --slot 0 --label test --so-pin " PIN " --pin " - PIN, bin); + "%s --init-token --slot 0 --label test --so-pin " PIN + " --pin " PIN, + bin); system(buf); signal(SIGCHLD, SIG_IGN); @@ -383,6 +372,5 @@ void doit(void) client(fd[1]); exit(0); } - } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/pkcs12_encode.c b/tests/pkcs12_encode.c index 48ab4f13c5..87b30bdf26 100644 --- a/tests/pkcs12_encode.c +++ b/tests/pkcs12_encode.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,34 +33,36 @@ #include static char client_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICHjCCAYmgAwIBAgIERiYdNzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTI3WhcNMDgwNDE3MTMyOTI3WjAdMRsw\n" - "GQYDVQQDExJHbnVUTFMgdGVzdCBjbGllbnQwgZwwCwYJKoZIhvcNAQEBA4GMADCB\n" - "iAKBgLtmQ/Xyxde2jMzF3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeL\n" - "ZIkiW8DdU3w77XwEu4C5KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKN\n" - "zj2AC41179gAgY8oBAOgIo1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjdjB0MAwG\n" - "A1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUDAweg\n" - "ADAdBgNVHQ4EFgQUTLkKm/odNON+3svSBxX+odrLaJEwHwYDVR0jBBgwFoAU6Twc\n" - "+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBALujmBJVZnvaTXr9cFRJ\n" - "jpfc/3X7sLUsMvumcDE01ls/cG5mIatmiyEU9qI3jbgUf82z23ON/acwJf875D3/\n" - "U7jyOsBJ44SEQITbin2yUeJMIm1tievvdNXBDfW95AM507ShzP12sfiJkJfjjdhy\n" - "dc8Siq5JojruiMizAf0pA7in\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIICHjCCAYmgAwIBAgIERiYdNzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTI3WhcNMDgwNDE3MTMyOTI3WjAdMRsw\n" + "GQYDVQQDExJHbnVUTFMgdGVzdCBjbGllbnQwgZwwCwYJKoZIhvcNAQEBA4GMADCB\n" + "iAKBgLtmQ/Xyxde2jMzF3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeL\n" + "ZIkiW8DdU3w77XwEu4C5KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKN\n" + "zj2AC41179gAgY8oBAOgIo1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjdjB0MAwG\n" + "A1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUDAweg\n" + "ADAdBgNVHQ4EFgQUTLkKm/odNON+3svSBxX+odrLaJEwHwYDVR0jBBgwFoAU6Twc\n" + "+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBALujmBJVZnvaTXr9cFRJ\n" + "jpfc/3X7sLUsMvumcDE01ls/cG5mIatmiyEU9qI3jbgUf82z23ON/acwJf875D3/\n" + "U7jyOsBJ44SEQITbin2yUeJMIm1tievvdNXBDfW95AM507ShzP12sfiJkJfjjdhy\n" + "dc8Siq5JojruiMizAf0pA7in\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t client_dat = { (void *)client_pem, sizeof(client_pem) }; static char ca_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIB5zCCAVKgAwIBAgIERiYdJzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTExWhcNMDgwNDE3MTMyOTExWjAZMRcw\n" - "FQYDVQQDEw5HbnVUTFMgdGVzdCBDQTCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA\n" - "vuyYeh1vfmslnuggeEKgZAVmQ5ltSdUY7H25WGSygKMUYZ0KT74v8C780qtcNt9T\n" - "7EPH/N6RvB4BprdssgcQLsthR3XKA84jbjjxNCcaGs33lvOz8A1nf8p3hD+cKfRi\n" - "kfYSW2JazLrtCC4yRCas/SPOUxu78of+3HiTfFm/oXUCAwEAAaNDMEEwDwYDVR0T\n" - "AQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwQAMB0GA1UdDgQWBBTpPBz7rZJu5gak\n" - "Viyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAiaIRqGfp1jPpNeVhABK60SU0KIAy\n" - "njuu7kHq5peUgYn8Jd9zNzExBOEp1VOipGsf6G66oQAhDFp2o8zkz7ZH71zR4HEW\n" - "KoX6n5Emn6DvcEH/9pAhnGxNHJAoS7czTKv/JDZJhkqHxyrE1fuLsg5Qv25DTw7+\n" - "PfqUpIhz5Bbm7J4=\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIB5zCCAVKgAwIBAgIERiYdJzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTExWhcNMDgwNDE3MTMyOTExWjAZMRcw\n" + "FQYDVQQDEw5HbnVUTFMgdGVzdCBDQTCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA\n" + "vuyYeh1vfmslnuggeEKgZAVmQ5ltSdUY7H25WGSygKMUYZ0KT74v8C780qtcNt9T\n" + "7EPH/N6RvB4BprdssgcQLsthR3XKA84jbjjxNCcaGs33lvOz8A1nf8p3hD+cKfRi\n" + "kfYSW2JazLrtCC4yRCas/SPOUxu78of+3HiTfFm/oXUCAwEAAaNDMEEwDwYDVR0T\n" + "AQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwQAMB0GA1UdDgQWBBTpPBz7rZJu5gak\n" + "Viyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAiaIRqGfp1jPpNeVhABK60SU0KIAy\n" + "njuu7kHq5peUgYn8Jd9zNzExBOEp1VOipGsf6G66oQAhDFp2o8zkz7ZH71zR4HEW\n" + "KoX6n5Emn6DvcEH/9pAhnGxNHJAoS7czTKv/JDZJhkqHxyrE1fuLsg5Qv25DTw7+\n" + "PfqUpIhz5Bbm7J4=\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t ca_dat = { (void *)ca_pem, sizeof(ca_pem) }; static void tls_log_func(int level, const char *str) @@ -153,7 +155,7 @@ void doit(void) tests[n_tests].bag_encrypt_flags = GNUTLS_PKCS_USE_PKCS12_RC2_40; if (gnutls_fips140_mode_enabled()) { tests[n_tests].bag_encrypt_expected = - GNUTLS_E_UNWANTED_ALGORITHM; + GNUTLS_E_UNWANTED_ALGORITHM; } else { tests[n_tests].bag_encrypt_expected = 0; } @@ -177,9 +179,8 @@ void doit(void) indx = ret; - ret = gnutls_pkcs12_bag_set_friendly_name(bag, indx, - tests - [i].friendly_name); + ret = gnutls_pkcs12_bag_set_friendly_name( + bag, indx, tests[i].friendly_name); if (ret < 0) { fprintf(stderr, "set_friendly_name: %s (%d)\n", gnutls_strerror(ret), ret); @@ -187,8 +188,8 @@ void doit(void) } size = sizeof(key_id_buf); - ret = gnutls_x509_crt_get_key_id(tests[i].crt, 0, - key_id_buf, &size); + ret = gnutls_x509_crt_get_key_id(tests[i].crt, 0, key_id_buf, + &size); if (ret < 0) { fprintf(stderr, "get_key_id: %s (%d)\n", gnutls_strerror(ret), ret); diff --git a/tests/pkcs12_s2k.c b/tests/pkcs12_s2k.c index dbb52a7f4d..ed97771591 100644 --- a/tests/pkcs12_s2k.c +++ b/tests/pkcs12_s2k.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -38,20 +38,20 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "|<%d>| %s", level, str); } -static const unsigned char *salt[3] = - { (void *)"salt1", (void *)"ltsa22", (void *)"balt33" }; +static const unsigned char *salt[3] = { (void *)"salt1", (void *)"ltsa22", + (void *)"balt33" }; static const char *pw[3] = { "secret1", "verysecret2", "veryverysecret3" }; static const char *values[] = { -/* 1.0 */ + /* 1.0 */ "85a3c676a66f0960f4807144a28c8d61a0001b81846f301a1ac164289879972f", -/* 1.2 */ + /* 1.2 */ "e659da7d5989733a3d268e0bf7752c35c116e5c75919449a98f6812f82a15b16", -/* 1.2 */ + /* 1.2 */ "878b8a88bf6166ce803b7498822205b1ac82870d3aec20807148779375a61f1e", -/* 2.0 */ + /* 2.0 */ "1c845be764371d633c7fd1056967a9940385e110e85b58f826d39ae8561a0019", -/* 2.1 */ + /* 2.1 */ "de8dd3ffd59b65d3d5f59a1f71d7add582741f7752a786c045953e727e4465c0", /* 2.2 */ #ifndef PKCS12_BROKEN_KEYGEN @@ -61,9 +61,9 @@ static const char *values[] = { #endif /* 3.0 */ "1c165e5a291a1539f3dbcf82a3e6ed566eb9d50ad4b0b3b57b599b08f0531236", -/* 3.1 */ + /* 3.1 */ "5c9abee3cde31656eedfc131b7c2f8061032a3c705961ee2306a826c8b4b1a76", -/* 3.2 */ + /* 3.2 */ "a9c94e0acdaeaea54d1b1b681c3b64916396a352dea7ffe635fb2c11d8502e98" }; @@ -76,55 +76,26 @@ static struct { size_t iter; size_t keylen; const char *key; -} tv[] = { - { - 1, "smeg", (void *)"\x0A\x58\xCF\x64\x53\x0D\x82\x3F", 1, - 24, - "8aaae6297b6cb04642ab5b077851284eb7128f1a2a7fbca3"}, { - 2, "smeg", - (void *) - "\x0A\x58\xCF\x64\x53\x0D\x82\x3F", - 1, - 8, - "79993dfe048d3b76"}, - { - 1, "smeg", (void *)"\x64\x2B\x99\xAB\x44\xFB\x4B\x1F", 1, - 24, - "f3a95fec48d7711e985cfe67908c5ab79fa3d7c5caa5d966"}, { - 2, "smeg", - (void *) - "\x64\x2B\x99\xAB\x44\xFB\x4B\x1F", - 1, - 8, - "c0a38d64a79bea1d"}, - { - 3, "smeg", (void *)"\x3D\x83\xC0\xE4\x54\x6A\xC1\x40", 1, - 20, "8d967d88f6caa9d714800ab3d48051d63f73a312"}, { - 1, "queeg", - (void *) - "\x05\xDE\xC9\x59\xAC\xFF\x72\xF7", - 1000, 24, - "ed2034e36328830ff09df1e1a07dd357185dac0d4f9eb3d4"}, { - 2, - "queeg", - (void *) - "\x05\xDE\xC9\x59\xAC\xFF\x72\xF7", - 1000, - 8, - "11dedad7758d4860"}, - { - 1, "queeg", (void *)"\x16\x82\xC0\xFC\x5B\x3F\x7E\xC5", - 1000, 24, - "483dd6e919d7de2e8e648ba8f862f3fbfbdc2bcb2c02957f"}, { - 2, "queeg", - (void *) - "\x16\x82\xC0\xFC\x5B\x3F\x7E\xC5", - 1000, 8, - "9d461d1b00355c50"}, - { - 3, "queeg", (void *)"\x26\x32\x16\xFC\xC2\xFA\xB3\x1C", - 1000, 20, "5ec4c7a80df652294c3925b6489a7ab857c83476"} -}; +} tv[] = { { 1, "smeg", (void *)"\x0A\x58\xCF\x64\x53\x0D\x82\x3F", 1, 24, + "8aaae6297b6cb04642ab5b077851284eb7128f1a2a7fbca3" }, + { 2, "smeg", (void *)"\x0A\x58\xCF\x64\x53\x0D\x82\x3F", 1, 8, + "79993dfe048d3b76" }, + { 1, "smeg", (void *)"\x64\x2B\x99\xAB\x44\xFB\x4B\x1F", 1, 24, + "f3a95fec48d7711e985cfe67908c5ab79fa3d7c5caa5d966" }, + { 2, "smeg", (void *)"\x64\x2B\x99\xAB\x44\xFB\x4B\x1F", 1, 8, + "c0a38d64a79bea1d" }, + { 3, "smeg", (void *)"\x3D\x83\xC0\xE4\x54\x6A\xC1\x40", 1, 20, + "8d967d88f6caa9d714800ab3d48051d63f73a312" }, + { 1, "queeg", (void *)"\x05\xDE\xC9\x59\xAC\xFF\x72\xF7", 1000, 24, + "ed2034e36328830ff09df1e1a07dd357185dac0d4f9eb3d4" }, + { 2, "queeg", (void *)"\x05\xDE\xC9\x59\xAC\xFF\x72\xF7", 1000, 8, + "11dedad7758d4860" }, + { 1, "queeg", (void *)"\x16\x82\xC0\xFC\x5B\x3F\x7E\xC5", 1000, 24, + "483dd6e919d7de2e8e648ba8f862f3fbfbdc2bcb2c02957f" }, + { 2, "queeg", (void *)"\x16\x82\xC0\xFC\x5B\x3F\x7E\xC5", 1000, 8, + "9d461d1b00355c50" }, + { 3, "queeg", (void *)"\x26\x32\x16\xFC\xC2\xFA\xB3\x1C", 1000, 20, + "5ec4c7a80df652294c3925b6489a7ab857c83476" } }; void doit(void) { @@ -142,25 +113,23 @@ void doit(void) x = 0; for (i = 1; i < 4; i++) { for (j = 0; j < 3; j++) { - rc = _gnutls_pkcs12_string_to_key(mac_to_entry - (GNUTLS_MAC_SHA1), i, - salt[j], - strlen((char *) - salt[j]), - j + i + 15, pw[j], - sizeof(key), key); + rc = _gnutls_pkcs12_string_to_key( + mac_to_entry(GNUTLS_MAC_SHA1), i, salt[j], + strlen((char *)salt[j]), j + i + 15, pw[j], + sizeof(key), key); if (rc < 0) - fail("_gnutls_pkcs12_string_to_key failed[0]: %d\n", rc); + fail("_gnutls_pkcs12_string_to_key failed[0]: %d\n", + rc); - if (strcmp(_gnutls_bin2hex(key, sizeof(key), - tmp, sizeof(tmp), NULL), + if (strcmp(_gnutls_bin2hex(key, sizeof(key), tmp, + sizeof(tmp), NULL), values[x]) != 0) fail("_gnutls_pkcs12_string_to_key failed[1]\n"); if (debug) printf("ij: %d.%d: %s\n", i, j, - _gnutls_bin2hex(key, sizeof(key), - tmp, sizeof(tmp), NULL)); + _gnutls_bin2hex(key, sizeof(key), tmp, + sizeof(tmp), NULL)); x++; } } @@ -176,8 +145,8 @@ void doit(void) fail("_gnutls_pkcs12_string_to_key failed[2]: %d\n", rc); - if (memcmp(_gnutls_bin2hex(key, tv[i].keylen, - tmp, sizeof(tmp), NULL), + if (memcmp(_gnutls_bin2hex(key, tv[i].keylen, tmp, sizeof(tmp), + NULL), tv[i].key, tv[i].keylen) != 0) fail("_gnutls_pkcs12_string_to_key failed[3]\n"); diff --git a/tests/pkcs12_s2k_pem.c b/tests/pkcs12_s2k_pem.c index 75ea40b41d..df4a38349f 100644 --- a/tests/pkcs12_s2k_pem.c +++ b/tests/pkcs12_s2k_pem.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* @@ -38,195 +38,195 @@ #include #include -#define X_9607 \ - "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" \ - "MIICojAcBgoqhkiG9w0BDAEDMA4ECL9rjpW835n6AgIIAASCAoAjs558e/tWq5ho\n" \ - "X3uYORURfasssTfqyZoSaTmEWJGbW7T+QK+ebZ8CyMVbR1ORD3rd6r7cWLsX3Ju0\n" \ - "hGncPFVpwCtwApZKnWCunj4KcsRuWdm1vAauRV2CDkykMzNlsJzAw+BPFKi2B7HL\n" \ - "xn5JymtqrGZF6zRDWW1x1WD3HYlq4FoNuSmNFu4fV0EyalIopIyNmZAY40lQ/FTM\n" \ - "LkTsnH2brIYHV1Bnzd/lXpXLli29OE/4WsPBTvhJLZGbJXp8ExwGuxfDnTFCPS9G\n" \ - "9uOjaBgerl2zjsdPNXBfn8hDNrs7MDqR9aC6rZR0yE1maEPv0YnnzDGRYZl6+j2K\n" \ - "FfWDMGET6SSimYCcZJwr0/xZAdw5e323k1xniCNVfbQhCQ09Cl6XoDI8IK23O8g+\n" \ - "R9o8gCikl98fJlpKjHaKfnscSE0hMzOjyAbYjFxWAlzjffzR5o+P6955dhREpCWy\n" \ - "kL2EOL2VmYfzGG4J62p9U88MXhCLuFOuHL/wtGzXwGnyqZyeZ5p2fYloGPEMVsX7\n" \ - "zHupLUpVZFe4kOBGI/IPWbc2iQTvzDtx9Jvxo5vWmyEwL8C7P/f9+zsIaXiM3Onz\n" \ - "F5qwQfCojesuelGPAfXJxJRLaHicva90+IyRFBSMKxgt3EdHER/R7huA//jzzQp9\n" \ - "eItmiv2UwAafeiPEDT74n6yBCTMPc++cJsMWL0SNIX4jYep55bgzbgGB8t/nQ0Ho\n" \ - "7/1KF1sAO3klAkrcTwL4pX2vLMa//W/H/AAQ2FL/Q+CAP7K5X2rlZxdkFlMuL3Dr\n" \ - "I0UqiStjznkoOeWjj6YT3jOvKGLWHPXqxTkW9Ln4fDvAoI9eq6UWHjf7gLYXxe/q\n" \ - "tTpNnYdy\n" \ - "-----END ENCRYPTED PRIVATE KEY-----\n" +#define X_9607 \ + "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" \ + "MIICojAcBgoqhkiG9w0BDAEDMA4ECL9rjpW835n6AgIIAASCAoAjs558e/tWq5ho\n" \ + "X3uYORURfasssTfqyZoSaTmEWJGbW7T+QK+ebZ8CyMVbR1ORD3rd6r7cWLsX3Ju0\n" \ + "hGncPFVpwCtwApZKnWCunj4KcsRuWdm1vAauRV2CDkykMzNlsJzAw+BPFKi2B7HL\n" \ + "xn5JymtqrGZF6zRDWW1x1WD3HYlq4FoNuSmNFu4fV0EyalIopIyNmZAY40lQ/FTM\n" \ + "LkTsnH2brIYHV1Bnzd/lXpXLli29OE/4WsPBTvhJLZGbJXp8ExwGuxfDnTFCPS9G\n" \ + "9uOjaBgerl2zjsdPNXBfn8hDNrs7MDqR9aC6rZR0yE1maEPv0YnnzDGRYZl6+j2K\n" \ + "FfWDMGET6SSimYCcZJwr0/xZAdw5e323k1xniCNVfbQhCQ09Cl6XoDI8IK23O8g+\n" \ + "R9o8gCikl98fJlpKjHaKfnscSE0hMzOjyAbYjFxWAlzjffzR5o+P6955dhREpCWy\n" \ + "kL2EOL2VmYfzGG4J62p9U88MXhCLuFOuHL/wtGzXwGnyqZyeZ5p2fYloGPEMVsX7\n" \ + "zHupLUpVZFe4kOBGI/IPWbc2iQTvzDtx9Jvxo5vWmyEwL8C7P/f9+zsIaXiM3Onz\n" \ + "F5qwQfCojesuelGPAfXJxJRLaHicva90+IyRFBSMKxgt3EdHER/R7huA//jzzQp9\n" \ + "eItmiv2UwAafeiPEDT74n6yBCTMPc++cJsMWL0SNIX4jYep55bgzbgGB8t/nQ0Ho\n" \ + "7/1KF1sAO3klAkrcTwL4pX2vLMa//W/H/AAQ2FL/Q+CAP7K5X2rlZxdkFlMuL3Dr\n" \ + "I0UqiStjznkoOeWjj6YT3jOvKGLWHPXqxTkW9Ln4fDvAoI9eq6UWHjf7gLYXxe/q\n" \ + "tTpNnYdy\n" \ + "-----END ENCRYPTED PRIVATE KEY-----\n" -#define X_9671 \ - "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" \ - "MIICojAcBgoqhkiG9w0BDAEDMA4ECA7RZbNgWxdHAgIIAASCAoAq1B5klspIe7B/\n" \ - "R1pKifO1/29OsAQn9blIbaJ9fg62ivA3QGL0uApZ6eNFz6JEZyiRITJYhgLaWwov\n" \ - "mqKT9NiQ6iiemgxWLSSdvEXVOMRZB17F9PncpEiIBpnrisdD7h9MpS63LuJdEtiK\n" \ - "jpPwFwV3orFJceurq/R3ql2aKYc9MZSzkKd71QImgHYWv+IPCctl40/PZV08yKMn\n" \ - "RCMVFb/YYUrzaWSerroyjz4Kr8V0nEyKpk4YLv7o7WPGn4x8X30z0BRCA9CBwzHY\n" \ - "JMxu1FhOGXr6nx1XeaoCOt9JV8GWb+VzkATABPzFG915ULz0ma1petQyb18QyBsl\n" \ - "K9NZETrGzDYiNxkjqILhY6IRneB97C4kCH55qhXHFk5fjiWndpQ6+BFKqlCqm6Up\n" \ - "d1EF3uuKN+vY6xQbGCgFE4FHL46nb2YaoaqhPp4dj4qnRSllgBvmZbGTd243lAbT\n" \ - "J4dh/gzRwQYdIwbvcNVi9GGSOy/fezAwwXu3ZD9BqqqoCQJajrILuovbcPThy71k\n" \ - "H5EaegQ1rB+0/sn91JUb6w4pwN/54gzZGaz2F0/2xB9u57+PIMC9R8dU7uW/xWfA\n" \ - "WN7YTzPDNfevbx/LIa6VR5gsiRqCnthSsGvWFquRatMv1JrDfFUywFU9zk9W+iA2\n" \ - "rtNpXV140+/BDfHbYYrUIaklJsNP0FRXKpPw9wPHHmbOjHfFK+o8PrtOp3HUsCJm\n" \ - "2VpQtbNl66+rPLZLsbXhuJ5eY/BpRvrj6rDFPs19OAvYyrIsuQY8IdbZyGSKsq4u\n" \ - "UBsHZgPBh718EtWFFrsTNxMlRKoh5MwUSqkLXeDduAFG4N7nhQpDHQ5/KRPrYOMK\n" \ - "ixB1lLUK\n" \ - "-----END ENCRYPTED PRIVATE KEY-----\n" +#define X_9671 \ + "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" \ + "MIICojAcBgoqhkiG9w0BDAEDMA4ECA7RZbNgWxdHAgIIAASCAoAq1B5klspIe7B/\n" \ + "R1pKifO1/29OsAQn9blIbaJ9fg62ivA3QGL0uApZ6eNFz6JEZyiRITJYhgLaWwov\n" \ + "mqKT9NiQ6iiemgxWLSSdvEXVOMRZB17F9PncpEiIBpnrisdD7h9MpS63LuJdEtiK\n" \ + "jpPwFwV3orFJceurq/R3ql2aKYc9MZSzkKd71QImgHYWv+IPCctl40/PZV08yKMn\n" \ + "RCMVFb/YYUrzaWSerroyjz4Kr8V0nEyKpk4YLv7o7WPGn4x8X30z0BRCA9CBwzHY\n" \ + "JMxu1FhOGXr6nx1XeaoCOt9JV8GWb+VzkATABPzFG915ULz0ma1petQyb18QyBsl\n" \ + "K9NZETrGzDYiNxkjqILhY6IRneB97C4kCH55qhXHFk5fjiWndpQ6+BFKqlCqm6Up\n" \ + "d1EF3uuKN+vY6xQbGCgFE4FHL46nb2YaoaqhPp4dj4qnRSllgBvmZbGTd243lAbT\n" \ + "J4dh/gzRwQYdIwbvcNVi9GGSOy/fezAwwXu3ZD9BqqqoCQJajrILuovbcPThy71k\n" \ + "H5EaegQ1rB+0/sn91JUb6w4pwN/54gzZGaz2F0/2xB9u57+PIMC9R8dU7uW/xWfA\n" \ + "WN7YTzPDNfevbx/LIa6VR5gsiRqCnthSsGvWFquRatMv1JrDfFUywFU9zk9W+iA2\n" \ + "rtNpXV140+/BDfHbYYrUIaklJsNP0FRXKpPw9wPHHmbOjHfFK+o8PrtOp3HUsCJm\n" \ + "2VpQtbNl66+rPLZLsbXhuJ5eY/BpRvrj6rDFPs19OAvYyrIsuQY8IdbZyGSKsq4u\n" \ + "UBsHZgPBh718EtWFFrsTNxMlRKoh5MwUSqkLXeDduAFG4N7nhQpDHQ5/KRPrYOMK\n" \ + "ixB1lLUK\n" \ + "-----END ENCRYPTED PRIVATE KEY-----\n" -#define X_9925 \ - "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" \ - "MIICojAcBgoqhkiG9w0BDAEDMA4ECDnNkmSKl37mAgIIAASCAoAwttidBRLnnjti\n" \ - "b5BEsc8cO2vzImhJbYCrVDjkTpmS6IYD4FsC8KFDdQJrEYIptrwXn4uDWDUu6bxB\n" \ - "pb02Pj70gZiWBDU+ki1kIbsNc67rNpJfUlIU+po3UovSmrazqcHoW2IftvZo9hDF\n" \ - "FWVjc0D2fSWeaNwS7dimWxoLy1udof6n0c8UxvfnOgfSLg3qwWzc0+iMrbkvRFX5\n" \ - "9+vDCnetQ7ythKldnC5xQxShxaNF4O26D0VXdR9VYbQLslSHAzQi2wJ7Hh1fi62J\n" \ - "VUHvRNOcwhSadwNfQEtvIWoi6LfsUadvvhFAAbeSfQpSfD4iXgfcr3U2WIvjtOcL\n" \ - "cZg9HqRhGzgEuC7FLoov1re7xq3uifw+04qu8i9/fk7hUrldZCrCSKTc6GqsiY8x\n" \ - "JGOcNUgklzy6kbgIWp9O2C5Bxp1WmfnbNSMM9Z9UFTdbEa4Kz7SYd+1a8j1OWlq1\n" \ - "93AcEpD0+fpKuEs+S1RF7RRAs/Ais0VcOmgye0TLvKkhockxl4KT0SbOTeKnmxJ3\n" \ - "RSnPcHUb62EZuhHqpoHi+zjHH56sVy3RhcYsDKIh1Xh7JPGTysflOIno7ABK8Tu7\n" \ - "IcnAOCoBVTjXC5eSSeC3irvZSILHC1tBG8r1C1aSLFmxpOTCqRUwhtbw/FSqEngl\n" \ - "5pvwTz4gquyjCPjIAWlCscAbeqpBxNsmnJ0AGlaesd9/uxrWUScTnAIc+NUB9o8w\n" \ - "i+zXbOqhbKxWGfrQAo+qZtAchQ6EGxXuIxnSRlAEZtsrJt6/FXJaOIb5MvcXA/sQ\n" \ - "O2p1r9W2OZM8Jco2ftALygUFPDiIuELaiTQ8HE1heUZWy+M9gXV6wCGhIVtRYyCg\n" \ - "SSQ62gp7\n" \ - "-----END ENCRYPTED PRIVATE KEY-----\n" +#define X_9925 \ + "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" \ + "MIICojAcBgoqhkiG9w0BDAEDMA4ECDnNkmSKl37mAgIIAASCAoAwttidBRLnnjti\n" \ + "b5BEsc8cO2vzImhJbYCrVDjkTpmS6IYD4FsC8KFDdQJrEYIptrwXn4uDWDUu6bxB\n" \ + "pb02Pj70gZiWBDU+ki1kIbsNc67rNpJfUlIU+po3UovSmrazqcHoW2IftvZo9hDF\n" \ + "FWVjc0D2fSWeaNwS7dimWxoLy1udof6n0c8UxvfnOgfSLg3qwWzc0+iMrbkvRFX5\n" \ + "9+vDCnetQ7ythKldnC5xQxShxaNF4O26D0VXdR9VYbQLslSHAzQi2wJ7Hh1fi62J\n" \ + "VUHvRNOcwhSadwNfQEtvIWoi6LfsUadvvhFAAbeSfQpSfD4iXgfcr3U2WIvjtOcL\n" \ + "cZg9HqRhGzgEuC7FLoov1re7xq3uifw+04qu8i9/fk7hUrldZCrCSKTc6GqsiY8x\n" \ + "JGOcNUgklzy6kbgIWp9O2C5Bxp1WmfnbNSMM9Z9UFTdbEa4Kz7SYd+1a8j1OWlq1\n" \ + "93AcEpD0+fpKuEs+S1RF7RRAs/Ais0VcOmgye0TLvKkhockxl4KT0SbOTeKnmxJ3\n" \ + "RSnPcHUb62EZuhHqpoHi+zjHH56sVy3RhcYsDKIh1Xh7JPGTysflOIno7ABK8Tu7\n" \ + "IcnAOCoBVTjXC5eSSeC3irvZSILHC1tBG8r1C1aSLFmxpOTCqRUwhtbw/FSqEngl\n" \ + "5pvwTz4gquyjCPjIAWlCscAbeqpBxNsmnJ0AGlaesd9/uxrWUScTnAIc+NUB9o8w\n" \ + "i+zXbOqhbKxWGfrQAo+qZtAchQ6EGxXuIxnSRlAEZtsrJt6/FXJaOIb5MvcXA/sQ\n" \ + "O2p1r9W2OZM8Jco2ftALygUFPDiIuELaiTQ8HE1heUZWy+M9gXV6wCGhIVtRYyCg\n" \ + "SSQ62gp7\n" \ + "-----END ENCRYPTED PRIVATE KEY-----\n" -#define X_9926 \ - "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" \ - "MIICojAcBgoqhkiG9w0BDAEDMA4ECE8YpbN3dz05AgIIAASCAoC1wuyUEZs/FSTB\n" \ - "llt567hf1L+wiQ24L49ZvLutwb0nkilLHNXUo95mpLfzjnr7ZBbsIPV0RTdxjIKX\n" \ - "IdRD9SzMxeMUJ82obmgE2tTeOi7PqONX838Lmj3ocUR+aFBFTR1V7G2gMpQEapPX\n" \ - "gjv3kgwG5DCSj15NG8ybT4ZHWURyc/57dn0JWXc9/XUbm/+lvwwsuu9YvQ5Z76jE\n" \ - "ufiS8OCHNo1nPMCsUIw6herr2OfC5pj2H1/6bC7L/NPZJ7OM/IQoQOcNxiwx8rBS\n" \ - "zChy7dvPbJYmd5N+066mZiyFGxQwjPziXmqJztnB34P0Yp9dsiE1M+fo//f+QkFW\n" \ - "3HDMJmb+becnUAjiWuQCT/YqNjC4iHn35Jb2COPsV5KPsSaQ+6IaN4vWx7ifvHGD\n" \ - "KzkFcKQ1Be1EiOnUGBqhW4r7ASFKMtqGlTRBoc8PVMdFIpadejGW31Csz5gussa2\n" \ - "OcOLO8kULsT9QsuWyayG4SuTweClCaJ/nGJ/nDnocVPbucqRQBFn9ZRQ0VSLhDLe\n" \ - "B3HYRx3sJ9U+Xay9cgR09hMQ2ZaR/NxYlRshKEt+iiYOS42eMyMXVKfBwQwxl9Lf\n" \ - "ESBz7GF2nOT5VSSgJlAf3nbfhUABgq2zzoybKlFVpnq49Z79rB4b+lkP8jIhV5GA\n" \ - "/aUXssvs68FsqbG+T1nBnFWkJL49XENOrwDApzGllVbtaruoIe9t+qBF6rXVSjWQ\n" \ - "ZATZaSD3gOaM4Oyv+lso4GuONXkaXQRdpBmPLChdLMkcopQOQZtlKU2+rzi4Nm4X\n" \ - "lAAsR4sXmIGYJ3EgQrTDE+igMNr8o2qHIh81zqP7nWtkfTEfFqud6zoGK5aiZ4ma\n" \ - "0StcnRpp\n" \ - "-----END ENCRYPTED PRIVATE KEY-----\n" +#define X_9926 \ + "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" \ + "MIICojAcBgoqhkiG9w0BDAEDMA4ECE8YpbN3dz05AgIIAASCAoC1wuyUEZs/FSTB\n" \ + "llt567hf1L+wiQ24L49ZvLutwb0nkilLHNXUo95mpLfzjnr7ZBbsIPV0RTdxjIKX\n" \ + "IdRD9SzMxeMUJ82obmgE2tTeOi7PqONX838Lmj3ocUR+aFBFTR1V7G2gMpQEapPX\n" \ + "gjv3kgwG5DCSj15NG8ybT4ZHWURyc/57dn0JWXc9/XUbm/+lvwwsuu9YvQ5Z76jE\n" \ + "ufiS8OCHNo1nPMCsUIw6herr2OfC5pj2H1/6bC7L/NPZJ7OM/IQoQOcNxiwx8rBS\n" \ + "zChy7dvPbJYmd5N+066mZiyFGxQwjPziXmqJztnB34P0Yp9dsiE1M+fo//f+QkFW\n" \ + "3HDMJmb+becnUAjiWuQCT/YqNjC4iHn35Jb2COPsV5KPsSaQ+6IaN4vWx7ifvHGD\n" \ + "KzkFcKQ1Be1EiOnUGBqhW4r7ASFKMtqGlTRBoc8PVMdFIpadejGW31Csz5gussa2\n" \ + "OcOLO8kULsT9QsuWyayG4SuTweClCaJ/nGJ/nDnocVPbucqRQBFn9ZRQ0VSLhDLe\n" \ + "B3HYRx3sJ9U+Xay9cgR09hMQ2ZaR/NxYlRshKEt+iiYOS42eMyMXVKfBwQwxl9Lf\n" \ + "ESBz7GF2nOT5VSSgJlAf3nbfhUABgq2zzoybKlFVpnq49Z79rB4b+lkP8jIhV5GA\n" \ + "/aUXssvs68FsqbG+T1nBnFWkJL49XENOrwDApzGllVbtaruoIe9t+qBF6rXVSjWQ\n" \ + "ZATZaSD3gOaM4Oyv+lso4GuONXkaXQRdpBmPLChdLMkcopQOQZtlKU2+rzi4Nm4X\n" \ + "lAAsR4sXmIGYJ3EgQrTDE+igMNr8o2qHIh81zqP7nWtkfTEfFqud6zoGK5aiZ4ma\n" \ + "0StcnRpp\n" \ + "-----END ENCRYPTED PRIVATE KEY-----\n" -#define X_9927 \ - "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" \ - "MIICojAcBgoqhkiG9w0BDAEDMA4ECC6HV5s66uQrAgIIAASCAoAgQMR7E4EoMQSq\n" \ - "kFslHKebFtjtrCqEPW5lADxpJg8+FNOT6GCCnu8yslrmMa4l/MIs8jfkoKhP9O8W\n" \ - "IjQpwG5IGr0ZyfxYPZFTatrQ7+MvtMoQMBTxVt20oW4kT3tTF4KDf0BUsB9JCoET\n" \ - "DehlFSPTjDJav8fGbdEMhfbY6+6iBodnW7a3Ibil+7CQGeRIGDO7mEu5rBbI1fJb\n" \ - "tGEHkCd6Gvv20r/EIi6Fol9Fwc5eKxgFioIuZo3Tmqrr/9g09sv+qwkzoNFmpqby\n" \ - "AqCbgOOsckc3AXm4xZ7AX7zNSFXbfhiX1EyVvhwfJ6jiqHr32K8o5I4Cb/lzpB+q\n" \ - "WPMU/rF5bsTj0+/eySx8zkIUF/Jst9E+XtzlTFtMVzNpFYfzg3E+0qnT8KJtZJGr\n" \ - "Azz9aCNidjkjRVHUubrZ5qbjrv1eAYnFkgyw+UTyIJBeec6CRH5zob22ZMb5jKFz\n" \ - "d9reY1LZ38cQIoKThPdv9vKRVEd1I7T5MKv656+QegfqA7Kefwa0uK+TvvqBLTd1\n" \ - "mxgtkDvrID3PLZK9tVsOLMJcY1PFCNHB6T2EghMVEmMnROVLCqIN+MeraLhHemUe\n" \ - "rf6HFlOcYPV+5V8gI/DM2Fw/V+YgCzv380Z6HouZ4K1nwvEf53renettQmKxK/Fd\n" \ - "X74KqRSs6FtANdVUziGkrvNfssRjjLHxD08VfLAcpijRfNslxDIXQIASWqn3TPFY\n" \ - "uDs32vonOVrj2Zy8fIBRmENmGe5b/jnp055NLo6MWCFR3hmmeFBuXk6o1K6io3Le\n" \ - "oaeWr7BJFIxXZZ8zNUlBLGZinY50oM09DFOpiAUTQtkm8NuAThLcqmWvbw8LWmL4\n" \ - "ed6Pdtej\n" \ - "-----END ENCRYPTED PRIVATE KEY-----\n" +#define X_9927 \ + "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" \ + "MIICojAcBgoqhkiG9w0BDAEDMA4ECC6HV5s66uQrAgIIAASCAoAgQMR7E4EoMQSq\n" \ + "kFslHKebFtjtrCqEPW5lADxpJg8+FNOT6GCCnu8yslrmMa4l/MIs8jfkoKhP9O8W\n" \ + "IjQpwG5IGr0ZyfxYPZFTatrQ7+MvtMoQMBTxVt20oW4kT3tTF4KDf0BUsB9JCoET\n" \ + "DehlFSPTjDJav8fGbdEMhfbY6+6iBodnW7a3Ibil+7CQGeRIGDO7mEu5rBbI1fJb\n" \ + "tGEHkCd6Gvv20r/EIi6Fol9Fwc5eKxgFioIuZo3Tmqrr/9g09sv+qwkzoNFmpqby\n" \ + "AqCbgOOsckc3AXm4xZ7AX7zNSFXbfhiX1EyVvhwfJ6jiqHr32K8o5I4Cb/lzpB+q\n" \ + "WPMU/rF5bsTj0+/eySx8zkIUF/Jst9E+XtzlTFtMVzNpFYfzg3E+0qnT8KJtZJGr\n" \ + "Azz9aCNidjkjRVHUubrZ5qbjrv1eAYnFkgyw+UTyIJBeec6CRH5zob22ZMb5jKFz\n" \ + "d9reY1LZ38cQIoKThPdv9vKRVEd1I7T5MKv656+QegfqA7Kefwa0uK+TvvqBLTd1\n" \ + "mxgtkDvrID3PLZK9tVsOLMJcY1PFCNHB6T2EghMVEmMnROVLCqIN+MeraLhHemUe\n" \ + "rf6HFlOcYPV+5V8gI/DM2Fw/V+YgCzv380Z6HouZ4K1nwvEf53renettQmKxK/Fd\n" \ + "X74KqRSs6FtANdVUziGkrvNfssRjjLHxD08VfLAcpijRfNslxDIXQIASWqn3TPFY\n" \ + "uDs32vonOVrj2Zy8fIBRmENmGe5b/jnp055NLo6MWCFR3hmmeFBuXk6o1K6io3Le\n" \ + "oaeWr7BJFIxXZZ8zNUlBLGZinY50oM09DFOpiAUTQtkm8NuAThLcqmWvbw8LWmL4\n" \ + "ed6Pdtej\n" \ + "-----END ENCRYPTED PRIVATE KEY-----\n" -#define X_9928 \ - "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" \ - "MIICojAcBgoqhkiG9w0BDAEDMA4ECC1OO648bIPcAgIIAASCAoDiQoIuNdleFu2V\n" \ - "I8MUwZ6I0Om2+2yHSrk7Jxd0mbIYnT832dVsWg53SkcBYggnN1bByej0qtf2pdBx\n" \ - "EKsOjU9T6XmOZyFjJKX6MK6syqFYI4Y67OzdiDS8FVMCYX8NhhsYlE1aqvBjvnjq\n" \ - "tgpR0pJg8uJ3FmUu1N/6ayjGtI9JbZFt+BkqbZxIfdaZhlXx1vgU2MtuxDultlJu\n" \ - "rjvzcCGG0z0GcVEmXUwVccvLqwnL6UnYkVAmhCzj4UvxYsMt6Dp8FPSQi54jmZKx\n" \ - "4LAOGGGZcKoOTJYCrUkW2RAV/GzbhT1kOJR2/Pw21Yw/WkVKyNE8LHghu6xr3pXy\n" \ - "MPmCn0fE751Vjefb6NOYIjvmMexaZVzBCZ6kuxEQBlGDi15lohnpZLcFilS7l5IY\n" \ - "nWZJ9qPX19O0RG9NgQ4xpxoPBdrxqP5HuieKgvAZ7RXDXeKlW/4z/Fo2dBjPc0YJ\n" \ - "Y5QPOK+i2Zux9VtMbxkXBeO7KsiosNQthFP+HitlIs72MHUsBZucEnZ9ny0S+blG\n" \ - "gKYK9xuuAPGscqaI6fcicFOc0ZmphMn5YP6D0nN9esqo44s9JX7SyLRPuHW+dH0/\n" \ - "Bdg9LikS8ROBs3Yuy9ksGHMbMsguum3mOwiY8f2NXQwVs3b7VfkIDMbYAjMGcriE\n" \ - "CsW1Z4EzQP2qCFVJYz6S3xSsKtgg3QeWKCtvGRJDbzCnaQGCrrHzyBlGZzr5NJkr\n" \ - "4x7MxbWppvVTMySJ+Y3V2DR+Q1nW5P7qzWaY9tE9d8unCym5C/S2CE/39jQ9zMmL\n" \ - "56qvh2swSrCEKInhQyqV+4msSYVElrQY0DGbg/N6TsKvN37zCqKKBIxhyb/5b2Kv\n" \ - "QvN7D2Ch\n" \ - "-----END ENCRYPTED PRIVATE KEY-----\n" +#define X_9928 \ + "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" \ + "MIICojAcBgoqhkiG9w0BDAEDMA4ECC1OO648bIPcAgIIAASCAoDiQoIuNdleFu2V\n" \ + "I8MUwZ6I0Om2+2yHSrk7Jxd0mbIYnT832dVsWg53SkcBYggnN1bByej0qtf2pdBx\n" \ + "EKsOjU9T6XmOZyFjJKX6MK6syqFYI4Y67OzdiDS8FVMCYX8NhhsYlE1aqvBjvnjq\n" \ + "tgpR0pJg8uJ3FmUu1N/6ayjGtI9JbZFt+BkqbZxIfdaZhlXx1vgU2MtuxDultlJu\n" \ + "rjvzcCGG0z0GcVEmXUwVccvLqwnL6UnYkVAmhCzj4UvxYsMt6Dp8FPSQi54jmZKx\n" \ + "4LAOGGGZcKoOTJYCrUkW2RAV/GzbhT1kOJR2/Pw21Yw/WkVKyNE8LHghu6xr3pXy\n" \ + "MPmCn0fE751Vjefb6NOYIjvmMexaZVzBCZ6kuxEQBlGDi15lohnpZLcFilS7l5IY\n" \ + "nWZJ9qPX19O0RG9NgQ4xpxoPBdrxqP5HuieKgvAZ7RXDXeKlW/4z/Fo2dBjPc0YJ\n" \ + "Y5QPOK+i2Zux9VtMbxkXBeO7KsiosNQthFP+HitlIs72MHUsBZucEnZ9ny0S+blG\n" \ + "gKYK9xuuAPGscqaI6fcicFOc0ZmphMn5YP6D0nN9esqo44s9JX7SyLRPuHW+dH0/\n" \ + "Bdg9LikS8ROBs3Yuy9ksGHMbMsguum3mOwiY8f2NXQwVs3b7VfkIDMbYAjMGcriE\n" \ + "CsW1Z4EzQP2qCFVJYz6S3xSsKtgg3QeWKCtvGRJDbzCnaQGCrrHzyBlGZzr5NJkr\n" \ + "4x7MxbWppvVTMySJ+Y3V2DR+Q1nW5P7qzWaY9tE9d8unCym5C/S2CE/39jQ9zMmL\n" \ + "56qvh2swSrCEKInhQyqV+4msSYVElrQY0DGbg/N6TsKvN37zCqKKBIxhyb/5b2Kv\n" \ + "QvN7D2Ch\n" \ + "-----END ENCRYPTED PRIVATE KEY-----\n" -#define X_9929 \ - "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" \ - "MIICojAcBgoqhkiG9w0BDAEDMA4ECAPza28YOfuMAgIIAASCAoBg+t7v3fo4gOZX\n" \ - "+/IY3xln+5pVj6LKXXgHWydK25TLD3oxlrecVKmnWWZuQIcPVosItr+KfwRMfkY5\n" \ - "BKUQZyu02ZO/u9cXe3XsmZLpiWAXVCaRfHhXkZ24PxQGIVikDc8KyHEAhX/P+e9m\n" \ - "jJEneTP+hdQvZmJGKKqOG95HkqlnH5KJhM8W7BjDgPBeCjaBcc9AzCWX+WdY4Nbn\n" \ - "LONjhe0nXPuVArLayru67q62LUf/NZOM6j7gbYe0ki94rXddabpOIGBhf9qP1pWc\n" \ - "m5RBntEOtlbuosUYhlOpse91SBM2nHnOzM1fIxX6J9p/AlctvtB+Zoqx4OEwbRxT\n" \ - "hNpCUo+3rwmAAOz6CntGHpmfFKrzc0r37aoSjnlQJKTxDRJHN43+eqbdtNpaQfDH\n" \ - "0pS4o84oO3/CgnJ45Bx3HJXNlg3YvKhHWav8wtHX085URoc8h/OJ3PiKBi7+5AYR\n" \ - "CLAaJjtTC0ReaOXjyGfhzzuux7UDl+MW0D69vaz2t7HSR2tQ4tYnA4fciqirSKdL\n" \ - "wFgewXRNxNkQKo149YfE2weMGXW/DYGRXl8RMUwGsur10nesfUBZfLPYW014rDm+\n" \ - "QjGa2bcYJMUnAtUz1ctaQNV8T4HM3SwXABSbuczDGM4FpFCd51tjJDh8vxdmZpGJ\n" \ - "KEhWsvXcrlzBpVyW5CX/TixVYzautBdOM2cN+yniLjHAkHBWCF39LoAQatbHNFSq\n" \ - "FpADIpMiGFyGMxf029s2JgdNvkgR2aUL0ed2hGP9kKyLio+RNF5HD7mbbBM4d06P\n" \ - "t79aRgHvQAOeHJPfz9LleOoRUpg1gb8jmLDtKkWe+JGtsEDCPeb0HTvlL4ttGrZ4\n" \ - "LoIPCVbz\n" \ - "-----END ENCRYPTED PRIVATE KEY-----\n" +#define X_9929 \ + "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" \ + "MIICojAcBgoqhkiG9w0BDAEDMA4ECAPza28YOfuMAgIIAASCAoBg+t7v3fo4gOZX\n" \ + "+/IY3xln+5pVj6LKXXgHWydK25TLD3oxlrecVKmnWWZuQIcPVosItr+KfwRMfkY5\n" \ + "BKUQZyu02ZO/u9cXe3XsmZLpiWAXVCaRfHhXkZ24PxQGIVikDc8KyHEAhX/P+e9m\n" \ + "jJEneTP+hdQvZmJGKKqOG95HkqlnH5KJhM8W7BjDgPBeCjaBcc9AzCWX+WdY4Nbn\n" \ + "LONjhe0nXPuVArLayru67q62LUf/NZOM6j7gbYe0ki94rXddabpOIGBhf9qP1pWc\n" \ + "m5RBntEOtlbuosUYhlOpse91SBM2nHnOzM1fIxX6J9p/AlctvtB+Zoqx4OEwbRxT\n" \ + "hNpCUo+3rwmAAOz6CntGHpmfFKrzc0r37aoSjnlQJKTxDRJHN43+eqbdtNpaQfDH\n" \ + "0pS4o84oO3/CgnJ45Bx3HJXNlg3YvKhHWav8wtHX085URoc8h/OJ3PiKBi7+5AYR\n" \ + "CLAaJjtTC0ReaOXjyGfhzzuux7UDl+MW0D69vaz2t7HSR2tQ4tYnA4fciqirSKdL\n" \ + "wFgewXRNxNkQKo149YfE2weMGXW/DYGRXl8RMUwGsur10nesfUBZfLPYW014rDm+\n" \ + "QjGa2bcYJMUnAtUz1ctaQNV8T4HM3SwXABSbuczDGM4FpFCd51tjJDh8vxdmZpGJ\n" \ + "KEhWsvXcrlzBpVyW5CX/TixVYzautBdOM2cN+yniLjHAkHBWCF39LoAQatbHNFSq\n" \ + "FpADIpMiGFyGMxf029s2JgdNvkgR2aUL0ed2hGP9kKyLio+RNF5HD7mbbBM4d06P\n" \ + "t79aRgHvQAOeHJPfz9LleOoRUpg1gb8jmLDtKkWe+JGtsEDCPeb0HTvlL4ttGrZ4\n" \ + "LoIPCVbz\n" \ + "-----END ENCRYPTED PRIVATE KEY-----\n" -#define X_9930 \ - "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" \ - "MIICojAcBgoqhkiG9w0BDAEDMA4ECM70GUHLNxJ7AgIIAASCAoBSzIR/pzL/Kz0k\n" \ - "QYJburqvHquGAa/xevMdelJdqAKPfqMuaOOhbZUkpp1Yf/jswyrzImgOnkb2stO8\n" \ - "hsa3gTZLk3j1LA5JXb89Pm+dqv1gXWJco7dnq8JJEhTt7Mr6rm/P1uV9UBXlgv+E\n" \ - "2F+b8GBDikMw38zqRGtg3GPjFaZKcL7tqwRm390t57cWSbqLLaNmRIxcf5TARHEs\n" \ - "TZEU+BHF2JoFE7rXPdUJAJwsw35C5JS4DXwEUBVoEeI3jXl3yDOqu20uekbrndL5\n" \ - "seACup8mQp5nHUBNk6RMg7/8/hqeRU9IFyCstvFqjtvbPvJLEML8jSyd+XoZU1tm\n" \ - "VpnU7KcN3bSN/BK4QzChGr5sD/2rteceBIJjDsHR7FjHJQIKlTxMok3taM84knnw\n" \ - "QcO0T0vbsmUqbs1MltGcUgm3p6Jp/NyeHZGfDqu4TEZcHE+mrNVVReRHL3O55UpC\n" \ - "AyZeJDu9nQKe62Y6oGcOUOuZkoodfh9M1V44f9guOv5b+2VIFgUIZTOVHLkmb3Nx\n" \ - "r6rUn2++N02II7zkvR1aHILZw/JnqHQC5bpK6qlTNUN3kNy5DHg4iAHGuKUxksK0\n" \ - "qziPL/VYfos0/81O4mNI3yo3D2WA6usgy+MZyDY0u4uAbcz4irE1ACHj3cgBHx2j\n" \ - "RemyLdgPX+kPXr5wKHKk4U93nIgZXbshuuG5CrwtJqXslx6dG6FYChaUJsc/kCga\n" \ - "JFkHnOZk3tMxxyVBaBKUnyFxbxFBORgYGGAEKJ4RYT0ge8sSkVo4NNsNjLw74+d6\n" \ - "zlt7NLEhDn+IuaocYejf4Do5W+jIfkpZXF/w6DRHyJ3l2CHV/c9AN/lltTQYIg4Y\n" \ - "twhxefdG\n" \ - "-----END ENCRYPTED PRIVATE KEY-----\n" +#define X_9930 \ + "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" \ + "MIICojAcBgoqhkiG9w0BDAEDMA4ECM70GUHLNxJ7AgIIAASCAoBSzIR/pzL/Kz0k\n" \ + "QYJburqvHquGAa/xevMdelJdqAKPfqMuaOOhbZUkpp1Yf/jswyrzImgOnkb2stO8\n" \ + "hsa3gTZLk3j1LA5JXb89Pm+dqv1gXWJco7dnq8JJEhTt7Mr6rm/P1uV9UBXlgv+E\n" \ + "2F+b8GBDikMw38zqRGtg3GPjFaZKcL7tqwRm390t57cWSbqLLaNmRIxcf5TARHEs\n" \ + "TZEU+BHF2JoFE7rXPdUJAJwsw35C5JS4DXwEUBVoEeI3jXl3yDOqu20uekbrndL5\n" \ + "seACup8mQp5nHUBNk6RMg7/8/hqeRU9IFyCstvFqjtvbPvJLEML8jSyd+XoZU1tm\n" \ + "VpnU7KcN3bSN/BK4QzChGr5sD/2rteceBIJjDsHR7FjHJQIKlTxMok3taM84knnw\n" \ + "QcO0T0vbsmUqbs1MltGcUgm3p6Jp/NyeHZGfDqu4TEZcHE+mrNVVReRHL3O55UpC\n" \ + "AyZeJDu9nQKe62Y6oGcOUOuZkoodfh9M1V44f9guOv5b+2VIFgUIZTOVHLkmb3Nx\n" \ + "r6rUn2++N02II7zkvR1aHILZw/JnqHQC5bpK6qlTNUN3kNy5DHg4iAHGuKUxksK0\n" \ + "qziPL/VYfos0/81O4mNI3yo3D2WA6usgy+MZyDY0u4uAbcz4irE1ACHj3cgBHx2j\n" \ + "RemyLdgPX+kPXr5wKHKk4U93nIgZXbshuuG5CrwtJqXslx6dG6FYChaUJsc/kCga\n" \ + "JFkHnOZk3tMxxyVBaBKUnyFxbxFBORgYGGAEKJ4RYT0ge8sSkVo4NNsNjLw74+d6\n" \ + "zlt7NLEhDn+IuaocYejf4Do5W+jIfkpZXF/w6DRHyJ3l2CHV/c9AN/lltTQYIg4Y\n" \ + "twhxefdG\n" \ + "-----END ENCRYPTED PRIVATE KEY-----\n" -#define X_9931 \ - "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" \ - "MIICojAcBgoqhkiG9w0BDAEDMA4ECO6DyRswVDToAgIIAASCAoB3xqmr0evfZnxk\n" \ - "Gq/DsbmwGVpO1BQnv+50u8+roflrmHp+TdX/gkPdXDQCqqpK/2J/oaGMCtKEiO8R\n" \ - "/pxSKcCX3+7leF01FF4z3rEcTVRej0mR6IAzk5QZR4Y0jXzay7Quj2zFJQTASdRy\n" \ - "6o9HQt5YuDyMFY30yjungmg6sYLBLZ2XypCJYH3eUQx9BjwsbGqVnXRQ6oezL5tD\n" \ - "K+tRH41OK2pzFqhnpRvbfPtNDmUnMLUnahGBubRzNQgHE0iNGIYpOawpVabj15H2\n" \ - "4lQ9KBREaqLqiV/VMPFYcRd8tBjE2pRs3yhJ9bjl73gdh6qVvcXIqBBQcRtNbpQ/\n" \ - "WKFzVz5dMCEzS+LhMT2m0GtTYqn8IqRuDgF7P8+347k4wKvrA2XgwP0bvh+IBb4e\n" \ - "nMQuJaKsnMZZPgAPqfIqWsn3cw27iEb5ros+My4KMlMbKBvH2HTXx5YkYJfbRLJ1\n" \ - "oe0mUxshTSOJeOjsfkStsP7QCSIvVb76t2Jo6HKIXEylXFAzj39lea6aysx6KX4c\n" \ - "aC/9XDlhqs0GGcJE3ILbiePTWWiASWjS08ggQasMZsT4VYUaIl3ti1N1cK9xwkaD\n" \ - "BE12JvWEtPd7MtGouPGijXycAtNgPw17vWg/3O11vTKDAHse90dOOpqYpXFN9Cfi\n" \ - "wa72WOkxFEZDuzV/dmjXX1WN82MoXs7pkHLvTgCmdydQ0ZJABYZj1+ZnF5eR6zLo\n" \ - "LAJnV3gOY0DGLORuoifEWMRlzDyYQOBN9smK9xKDtA6CHUuB9jRHKBevQrFy4+Ed\n" \ - "trCmsp9qXPzGvmJOA1YEgnZZPvXjAB7TCv2VrftKgebzbQE2mOoF1YcT1PIB7dFL\n" \ - "AopQ9gdD\n" \ - "-----END ENCRYPTED PRIVATE KEY-----\n" +#define X_9931 \ + "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" \ + "MIICojAcBgoqhkiG9w0BDAEDMA4ECO6DyRswVDToAgIIAASCAoB3xqmr0evfZnxk\n" \ + "Gq/DsbmwGVpO1BQnv+50u8+roflrmHp+TdX/gkPdXDQCqqpK/2J/oaGMCtKEiO8R\n" \ + "/pxSKcCX3+7leF01FF4z3rEcTVRej0mR6IAzk5QZR4Y0jXzay7Quj2zFJQTASdRy\n" \ + "6o9HQt5YuDyMFY30yjungmg6sYLBLZ2XypCJYH3eUQx9BjwsbGqVnXRQ6oezL5tD\n" \ + "K+tRH41OK2pzFqhnpRvbfPtNDmUnMLUnahGBubRzNQgHE0iNGIYpOawpVabj15H2\n" \ + "4lQ9KBREaqLqiV/VMPFYcRd8tBjE2pRs3yhJ9bjl73gdh6qVvcXIqBBQcRtNbpQ/\n" \ + "WKFzVz5dMCEzS+LhMT2m0GtTYqn8IqRuDgF7P8+347k4wKvrA2XgwP0bvh+IBb4e\n" \ + "nMQuJaKsnMZZPgAPqfIqWsn3cw27iEb5ros+My4KMlMbKBvH2HTXx5YkYJfbRLJ1\n" \ + "oe0mUxshTSOJeOjsfkStsP7QCSIvVb76t2Jo6HKIXEylXFAzj39lea6aysx6KX4c\n" \ + "aC/9XDlhqs0GGcJE3ILbiePTWWiASWjS08ggQasMZsT4VYUaIl3ti1N1cK9xwkaD\n" \ + "BE12JvWEtPd7MtGouPGijXycAtNgPw17vWg/3O11vTKDAHse90dOOpqYpXFN9Cfi\n" \ + "wa72WOkxFEZDuzV/dmjXX1WN82MoXs7pkHLvTgCmdydQ0ZJABYZj1+ZnF5eR6zLo\n" \ + "LAJnV3gOY0DGLORuoifEWMRlzDyYQOBN9smK9xKDtA6CHUuB9jRHKBevQrFy4+Ed\n" \ + "trCmsp9qXPzGvmJOA1YEgnZZPvXjAB7TCv2VrftKgebzbQE2mOoF1YcT1PIB7dFL\n" \ + "AopQ9gdD\n" \ + "-----END ENCRYPTED PRIVATE KEY-----\n" -#define X_9932 \ - "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" \ - "MIICojAcBgoqhkiG9w0BDAEDMA4ECEKkETmhIXPkAgIIAASCAoBzNPQiMSQC6RSk\n" \ - "5Lk5cAbP1r//rE3IA0MNVy2ZwM4UZAQYHCxHkMpParGXwKt3/me064RXRwKOg9UT\n" \ - "nGx5/2A/AI2061A5M0KPVFE41IWQWoVGaiCaAzUDSF2Y+SL9yuLVqEES0gDQgUv5\n" \ - "uVnGyrbSo7sT8MSdvBuzdgmVluiaEVQhfwWJ9f8Q+ebQ1WVkeftzCe9yp1PLj8Yl\n" \ - "VCQ6X5qXqsApJ34Y62wXGqNbEvBkRyKbSqfqMI837tAVdMCdbsEE7wavzxGW6F9h\n" \ - "+igbPZO1NSzY0FZX1eQYqKZxfbkQmyDPLFT2S7BVv2wmihnC/SeZTcOoM+QoWG9j\n" \ - "XNLr1oqbeNxOnELmOXSrOekzbI7GhUcphYEIOBG/4B7ZP3cZ6TEw1EygXUan09XZ\n" \ - "Uz/CFbBTfX1uXHkMSzWwowXpx12vjH78KrRn69WBMGn/YjUheDLjwCDhJQK2CRDH\n" \ - "LbNBvZ7ezy1qHX90jrIdQnQzAoynu1OCfbd+84U2VifAszTcRvPMdiLlJh9MeyFY\n" \ - "8xDmmeNYGTVuDvAuzTlqbGablgQJu80VZ8CgQSW/0x7+oPozichza9tOd19aMDJ4\n" \ - "f8REy/9DAn1jRq/Cy/JFQoTpq3NtcWf9+NPHCwOMjaL63m6fIPXw6s9hnq8WMVIS\n" \ - "mtf5Jkvf402+8jhw1IqTVJasOMTRn62KsRt9a4JcWtorECA42wZGXjge3K9HYk4T\n" \ - "IVXq39VmeRP/9WveDwjkIThMl+0v5fl6Baaz/krXOIRfL6LV3RpkqPF4j/wneXgZ\n" \ - "7cMySs/FL96y6A+yJv281IQadYCqj7nPy92IYESQIcYjA8nd8hvsOxpnaMjXZjui\n" \ - "UWl07o3w\n" \ - "-----END ENCRYPTED PRIVATE KEY-----\n" +#define X_9932 \ + "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" \ + "MIICojAcBgoqhkiG9w0BDAEDMA4ECEKkETmhIXPkAgIIAASCAoBzNPQiMSQC6RSk\n" \ + "5Lk5cAbP1r//rE3IA0MNVy2ZwM4UZAQYHCxHkMpParGXwKt3/me064RXRwKOg9UT\n" \ + "nGx5/2A/AI2061A5M0KPVFE41IWQWoVGaiCaAzUDSF2Y+SL9yuLVqEES0gDQgUv5\n" \ + "uVnGyrbSo7sT8MSdvBuzdgmVluiaEVQhfwWJ9f8Q+ebQ1WVkeftzCe9yp1PLj8Yl\n" \ + "VCQ6X5qXqsApJ34Y62wXGqNbEvBkRyKbSqfqMI837tAVdMCdbsEE7wavzxGW6F9h\n" \ + "+igbPZO1NSzY0FZX1eQYqKZxfbkQmyDPLFT2S7BVv2wmihnC/SeZTcOoM+QoWG9j\n" \ + "XNLr1oqbeNxOnELmOXSrOekzbI7GhUcphYEIOBG/4B7ZP3cZ6TEw1EygXUan09XZ\n" \ + "Uz/CFbBTfX1uXHkMSzWwowXpx12vjH78KrRn69WBMGn/YjUheDLjwCDhJQK2CRDH\n" \ + "LbNBvZ7ezy1qHX90jrIdQnQzAoynu1OCfbd+84U2VifAszTcRvPMdiLlJh9MeyFY\n" \ + "8xDmmeNYGTVuDvAuzTlqbGablgQJu80VZ8CgQSW/0x7+oPozichza9tOd19aMDJ4\n" \ + "f8REy/9DAn1jRq/Cy/JFQoTpq3NtcWf9+NPHCwOMjaL63m6fIPXw6s9hnq8WMVIS\n" \ + "mtf5Jkvf402+8jhw1IqTVJasOMTRn62KsRt9a4JcWtorECA42wZGXjge3K9HYk4T\n" \ + "IVXq39VmeRP/9WveDwjkIThMl+0v5fl6Baaz/krXOIRfL6LV3RpkqPF4j/wneXgZ\n" \ + "7cMySs/FL96y6A+yJv281IQadYCqj7nPy92IYESQIcYjA8nd8hvsOxpnaMjXZjui\n" \ + "UWl07o3w\n" \ + "-----END ENCRYPTED PRIVATE KEY-----\n" static struct { const char *name; @@ -234,31 +234,11 @@ static struct { const char *pkcs12key; int expected_result; } keys[] = { - { - "x_9607", "123456", X_9607, 0}, { - "x_9671", "123456", X_9671, 0}, { - "x_9925", - "123456", - X_9925, - 0}, { - "x_9926", - "123456", - X_9926, - 0}, - { - "x_9927", "123456", X_9927, 0}, { - "x_9928", "123456", X_9928, 0}, { - "x_9929", - "123456", - X_9929, - 0}, { - "x_9930", - "123456", - X_9930, - 0}, - { - "x_9931", "123456", X_9931, 0}, { - "x_9932", "123456", X_9932, 0} + { "x_9607", "123456", X_9607, 0 }, { "x_9671", "123456", X_9671, 0 }, + { "x_9925", "123456", X_9925, 0 }, { "x_9926", "123456", X_9926, 0 }, + { "x_9927", "123456", X_9927, 0 }, { "x_9928", "123456", X_9928, 0 }, + { "x_9929", "123456", X_9929, 0 }, { "x_9930", "123456", X_9930, 0 }, + { "x_9931", "123456", X_9931, 0 }, { "x_9932", "123456", X_9932, 0 } }; int main(void) @@ -282,9 +262,8 @@ int main(void) tmp.data = (unsigned char *)keys[i].pkcs12key; tmp.size = strlen((char *)tmp.data); - ret = gnutls_x509_privkey_import_pkcs8(key, &tmp, - GNUTLS_X509_FMT_PEM, - keys[i].password, 0); + ret = gnutls_x509_privkey_import_pkcs8( + key, &tmp, GNUTLS_X509_FMT_PEM, keys[i].password, 0); gnutls_x509_privkey_deinit(key); if (ret != keys[i].expected_result) { @@ -292,7 +271,6 @@ int main(void) gnutls_strerror(ret)); return 1; } - } gnutls_global_deinit(); diff --git a/tests/pkcs12_simple.c b/tests/pkcs12_simple.c index d411ed83c8..d18c44d918 100644 --- a/tests/pkcs12_simple.c +++ b/tests/pkcs12_simple.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -66,9 +66,8 @@ void doit(void) filename = "pkcs12-decode/pkcs12_5certs.p12"; if (debug) - success - ("Reading PKCS#12 blob from `%s' using password `%s'.\n", - filename, password); + success("Reading PKCS#12 blob from `%s' using password `%s'.\n", + filename, password); ret = gnutls_load_file(filename, &data); if (ret < 0) @@ -82,10 +81,9 @@ void doit(void) if (debug) success("Read file OK\n"); - ret = - gnutls_pkcs12_simple_parse(pkcs12, password, &pkey, &chain, - &chain_size, &extras, &extras_size, - NULL, 0); + ret = gnutls_pkcs12_simple_parse(pkcs12, password, &pkey, &chain, + &chain_size, &extras, &extras_size, + NULL, 0); if (ret < 0) fail("pkcs12_simple_parse failed %d: %s\n", ret, gnutls_strerror(ret)); @@ -134,9 +132,8 @@ void doit(void) fail("gnutls_x509_privkey_init failed %d: %s\n", ret, gnutls_strerror(ret)); - ret = - gnutls_x509_privkey_import2(pkey, &data, GNUTLS_X509_FMT_DER, - password, 0); + ret = gnutls_x509_privkey_import2(pkey, &data, GNUTLS_X509_FMT_DER, + password, 0); if (ret < 0) fail("gnutls_x509_privkey_import2 failed %d: %s\n", ret, gnutls_strerror(ret)); diff --git a/tests/pkcs7-cat-parse.c b/tests/pkcs7-cat-parse.c index 4059818ee9..286ce66660 100644 --- a/tests/pkcs7-cat-parse.c +++ b/tests/pkcs7-cat-parse.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -34,51 +34,51 @@ #include "utils.h" const char pkcs7_data[] = - "-----BEGIN PKCS7-----\n" - "MIIHSwYJKoZIhvcNAQcCoIIHPDCCBzgCAQExCzAJBgUrDgMCGgUAMIICNwYJKwYB\n" - "BAGCNwoBoIICKDCCAiQwDAYKKwYBBAGCNwwBAQQQu/ZNvyszUkS6h2Pwl4hELRcN\n" - "MTYxMDExMTcxMzAyWjAOBgorBgEEAYI3DAECBQAwggGVMIIBkQRSRQA1ADIAMgAx\n" - "ADUANAAwAEQAQwA0AEIAOQA3ADQARgA1ADQARABCADQARQAzADkAMABCAEYARgA0\n" - "ADEAMwAyADMAOQA5AEMAOAAwADMANwAAADGCATkwQAYKKwYBBAGCNwwCATEyMDAe\n" - "CABGAGkAbABlAgQQAQABBB5zAGEAbQBiAGEAcAAxADAAMAAwAC4AaQBuAGYAAAAw\n" - "RQYKKwYBBAGCNwIBBDE3MDUwEAYKKwYBBAGCNwIBGaICgAAwITAJBgUrDgMCGgUA\n" - "BBTlIhVA3EuXT1TbTjkL/0EyOZyANzBKBgorBgEEAYI3DAIBMTwwOh4MAE8AUwBB\n" - "AHQAdAByAgQQAQABBCQyADoANgAuADAALAAyADoANgAuADEALAAyADoANgAuADQA\n" - "AAAwYgYKKwYBBAGCNwwCAjFUMFIeTAB7AEQARQAzADUAMQBBADQAMgAtADgARQA1\n" - "ADkALQAxADEARAAwAC0AOABDADQANwAtADAAMABDADAANABGAEMAMgA5ADUARQBF\n" - "AH0CAgIAoEowSDBGBgorBgEEAYI3DAIBBDgwNh4EAE8AUwIEEAEAAQQoVgBpAHMA\n" - "dABhAFgAOAA2ACwANwBYADgANgAsADEAMABYADgANgAAAKCCAwwwggMIMIIB8KAD\n" - "AgECAhAWVsiyv5uzsk5vNBHNz/C1MA0GCSqGSIb3DQEBBQUAMC0xKzApBgNVBAMT\n" - "IldES1Rlc3RDZXJ0IGFzbiwxMzEyMDY3OTU0ODA0ODM0NTMwHhcNMTYxMDExMTcx\n" - "MjI4WhcNMjYxMDExMDAwMDAwWjAtMSswKQYDVQQDEyJXREtUZXN0Q2VydCBhc24s\n" - "MTMxMjA2Nzk1NDgwNDgzNDUzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC\n" - "AQEApD6uPRvnduA8nsL3gd/OdTZzk+p0P9vAQ9kVbRFG39/UuSIIm7nyNO47Tu7h\n" - "CBuK8q5zwY31naKaOkLJMwTpUonI/rwFEhrt7EwFNi2aRVeyEbqLlwCzFK5rJGzP\n" - "wDp4vcKpWPsqD5mOKBOXOIbQt5l8MiKM91iRqvwEEg1Eba8hKF3P/MHT2ZaxMy4O\n" - "QdJdgjovSQfqihA5qG1wwXXTQvWeQHvt1TO+vUNTcnbO0YnIuG+c0WDljn4UVLYo\n" - "2HFk1c7MkTfYX3OzdUbxXpMsHbbQun2XU2v+yQRgViHUDe4G6pGz4ur/aN52DEFk\n" - "qIUCAeJWBhG4pQvMCl20L/19DwIDAQABoyQwIjALBgNVHQ8EBAMCBDAwEwYDVR0l\n" - "BAwwCgYIKwYBBQUHAwMwDQYJKoZIhvcNAQEFBQADggEBAE5t7t5lXUYJGh8xu412\n" - "yREBlUxQT4Uid9Kc/GmmwiQvinKMWwjdowxtfnRR/ZzrbD5AVVQIaM6JSgzLEH3x\n" - "0geN9FqMxcaJVksnUcx9iqWm94bznoPz9FXlgQ+e6lx9vCEP1butyUhj7m8yi0pk\n" - "D8nXwf8cszaPY2tjqMa8o77/W6pDUjIGJHNIsZJwIN/qJT3Sxs9Nb8qwLfjKB7Fp\n" - "aLgC9BAb73rWdW2uQSGtWO9Bvf7/fcgOk2Su1CFZTf/ZoqFbtTQ+Qwl92buUFmTl\n" - "yo9gVmPHXZWfeYaIDwTen2FI43WmLEsge8Xlfv+TpFLTby2BWnKgtxBsHA6L9Fem\n" - "xrwxggHZMIIB1QIBATBBMC0xKzApBgNVBAMTIldES1Rlc3RDZXJ0IGFzbiwxMzEy\n" - "MDY3OTU0ODA0ODM0NTMCEBZWyLK/m7OyTm80Ec3P8LUwCQYFKw4DAhoFAKBvMBAG\n" - "CisGAQQBgjcCAQwxAjAAMBgGCSqGSIb3DQEJAzELBgkrBgEEAYI3CgEwHAYKKwYB\n" - "BAGCNwIBCzEOMAwGCisGAQQBgjcCARUwIwYJKoZIhvcNAQkEMRYEFJBgjwiqs2u+\n" - "74y1Cb725gOFBYr6MA0GCSqGSIb3DQEBAQUABIIBAI4vlVYFKOLdIfs/7kx9ADl5\n" - "zaniHZMgjKiLAljglGCzkfO46IMdOP9/KfmTTTwWBtaP9s7fv9O0XGyOl2qH8Ufg\n" - "2d+0iS7CI8CqwF1Q8NLPYrSl2peKAPNibfIVbLR2+RUJ7zHxevdVou9Dt36A59mW\n" - "BZ78THyix0mVJ1ZivfzFwarChq5S4YI2fpbugTFftlr8YkRB78ki5J2sXICkcWtU\n" - "JRBZqhvsFlsghRWbUKyp20YyPNTgaGelumFj57OLGCVGAejxme/iF8EkmrUV8zs/\n" - "FKuAqJdZ8QPdLD5sKyOL8a19md0tYpCV2ThOWD8okm8PrSMfz4fWlIKpTOi/KE0=\n" - "-----END PKCS7-----\n"; + "-----BEGIN PKCS7-----\n" + "MIIHSwYJKoZIhvcNAQcCoIIHPDCCBzgCAQExCzAJBgUrDgMCGgUAMIICNwYJKwYB\n" + "BAGCNwoBoIICKDCCAiQwDAYKKwYBBAGCNwwBAQQQu/ZNvyszUkS6h2Pwl4hELRcN\n" + "MTYxMDExMTcxMzAyWjAOBgorBgEEAYI3DAECBQAwggGVMIIBkQRSRQA1ADIAMgAx\n" + "ADUANAAwAEQAQwA0AEIAOQA3ADQARgA1ADQARABCADQARQAzADkAMABCAEYARgA0\n" + "ADEAMwAyADMAOQA5AEMAOAAwADMANwAAADGCATkwQAYKKwYBBAGCNwwCATEyMDAe\n" + "CABGAGkAbABlAgQQAQABBB5zAGEAbQBiAGEAcAAxADAAMAAwAC4AaQBuAGYAAAAw\n" + "RQYKKwYBBAGCNwIBBDE3MDUwEAYKKwYBBAGCNwIBGaICgAAwITAJBgUrDgMCGgUA\n" + "BBTlIhVA3EuXT1TbTjkL/0EyOZyANzBKBgorBgEEAYI3DAIBMTwwOh4MAE8AUwBB\n" + "AHQAdAByAgQQAQABBCQyADoANgAuADAALAAyADoANgAuADEALAAyADoANgAuADQA\n" + "AAAwYgYKKwYBBAGCNwwCAjFUMFIeTAB7AEQARQAzADUAMQBBADQAMgAtADgARQA1\n" + "ADkALQAxADEARAAwAC0AOABDADQANwAtADAAMABDADAANABGAEMAMgA5ADUARQBF\n" + "AH0CAgIAoEowSDBGBgorBgEEAYI3DAIBBDgwNh4EAE8AUwIEEAEAAQQoVgBpAHMA\n" + "dABhAFgAOAA2ACwANwBYADgANgAsADEAMABYADgANgAAAKCCAwwwggMIMIIB8KAD\n" + "AgECAhAWVsiyv5uzsk5vNBHNz/C1MA0GCSqGSIb3DQEBBQUAMC0xKzApBgNVBAMT\n" + "IldES1Rlc3RDZXJ0IGFzbiwxMzEyMDY3OTU0ODA0ODM0NTMwHhcNMTYxMDExMTcx\n" + "MjI4WhcNMjYxMDExMDAwMDAwWjAtMSswKQYDVQQDEyJXREtUZXN0Q2VydCBhc24s\n" + "MTMxMjA2Nzk1NDgwNDgzNDUzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC\n" + "AQEApD6uPRvnduA8nsL3gd/OdTZzk+p0P9vAQ9kVbRFG39/UuSIIm7nyNO47Tu7h\n" + "CBuK8q5zwY31naKaOkLJMwTpUonI/rwFEhrt7EwFNi2aRVeyEbqLlwCzFK5rJGzP\n" + "wDp4vcKpWPsqD5mOKBOXOIbQt5l8MiKM91iRqvwEEg1Eba8hKF3P/MHT2ZaxMy4O\n" + "QdJdgjovSQfqihA5qG1wwXXTQvWeQHvt1TO+vUNTcnbO0YnIuG+c0WDljn4UVLYo\n" + "2HFk1c7MkTfYX3OzdUbxXpMsHbbQun2XU2v+yQRgViHUDe4G6pGz4ur/aN52DEFk\n" + "qIUCAeJWBhG4pQvMCl20L/19DwIDAQABoyQwIjALBgNVHQ8EBAMCBDAwEwYDVR0l\n" + "BAwwCgYIKwYBBQUHAwMwDQYJKoZIhvcNAQEFBQADggEBAE5t7t5lXUYJGh8xu412\n" + "yREBlUxQT4Uid9Kc/GmmwiQvinKMWwjdowxtfnRR/ZzrbD5AVVQIaM6JSgzLEH3x\n" + "0geN9FqMxcaJVksnUcx9iqWm94bznoPz9FXlgQ+e6lx9vCEP1butyUhj7m8yi0pk\n" + "D8nXwf8cszaPY2tjqMa8o77/W6pDUjIGJHNIsZJwIN/qJT3Sxs9Nb8qwLfjKB7Fp\n" + "aLgC9BAb73rWdW2uQSGtWO9Bvf7/fcgOk2Su1CFZTf/ZoqFbtTQ+Qwl92buUFmTl\n" + "yo9gVmPHXZWfeYaIDwTen2FI43WmLEsge8Xlfv+TpFLTby2BWnKgtxBsHA6L9Fem\n" + "xrwxggHZMIIB1QIBATBBMC0xKzApBgNVBAMTIldES1Rlc3RDZXJ0IGFzbiwxMzEy\n" + "MDY3OTU0ODA0ODM0NTMCEBZWyLK/m7OyTm80Ec3P8LUwCQYFKw4DAhoFAKBvMBAG\n" + "CisGAQQBgjcCAQwxAjAAMBgGCSqGSIb3DQEJAzELBgkrBgEEAYI3CgEwHAYKKwYB\n" + "BAGCNwIBCzEOMAwGCisGAQQBgjcCARUwIwYJKoZIhvcNAQkEMRYEFJBgjwiqs2u+\n" + "74y1Cb725gOFBYr6MA0GCSqGSIb3DQEBAQUABIIBAI4vlVYFKOLdIfs/7kx9ADl5\n" + "zaniHZMgjKiLAljglGCzkfO46IMdOP9/KfmTTTwWBtaP9s7fv9O0XGyOl2qH8Ufg\n" + "2d+0iS7CI8CqwF1Q8NLPYrSl2peKAPNibfIVbLR2+RUJ7zHxevdVou9Dt36A59mW\n" + "BZ78THyix0mVJ1ZivfzFwarChq5S4YI2fpbugTFftlr8YkRB78ki5J2sXICkcWtU\n" + "JRBZqhvsFlsghRWbUKyp20YyPNTgaGelumFj57OLGCVGAejxme/iF8EkmrUV8zs/\n" + "FKuAqJdZ8QPdLD5sKyOL8a19md0tYpCV2ThOWD8okm8PrSMfz4fWlIKpTOi/KE0=\n" + "-----END PKCS7-----\n"; const unsigned char der_content[] = - "\x30\x82\x02\x24\x30\x0c\x06\x0a\x2b\x06\x01\x04\x01\x82\x37\x0c\x01\x01\x04\x10\xbb\xf6\x4d\xbf\x2b\x33\x52\x44\xba\x87\x63\xf0\x97\x88\x44\x2d\x17\x0d\x31\x36\x31\x30\x31\x31\x31\x37\x31\x33\x30\x32\x5a\x30\x0e\x06\x0a\x2b\x06\x01\x04\x01\x82\x37\x0c\x01\x02\x05\x00\x30\x82\x01\x95\x30\x82\x01\x91\x04\x52\x45\x00\x35\x00\x32\x00\x32\x00\x31\x00\x35\x00\x34\x00\x30\x00\x44\x00\x43\x00\x34\x00\x42\x00\x39\x00\x37\x00\x34\x00\x46\x00\x35\x00\x34\x00\x44\x00\x42\x00\x34\x00\x45\x00\x33\x00\x39\x00\x30\x00\x42\x00\x46\x00\x46\x00\x34\x00\x31\x00\x33\x00\x32\x00\x33\x00\x39\x00\x39\x00\x43\x00\x38\x00\x30\x00\x33\x00\x37\x00\x00\x00\x31\x82\x01\x39\x30\x40\x06\x0a\x2b\x06\x01\x04\x01\x82\x37\x0c\x02\x01\x31\x32\x30\x30\x1e\x08\x00\x46\x00\x69\x00\x6c\x00\x65\x02\x04\x10\x01\x00\x01\x04\x1e\x73\x00\x61\x00\x6d\x00\x62\x00\x61\x00\x70\x00\x31\x00\x30\x00\x30\x00\x30\x00\x2e\x00\x69\x00\x6e\x00\x66\x00\x00\x00\x30\x45\x06\x0a\x2b\x06\x01\x04\x01\x82\x37\x02\x01\x04\x31\x37\x30\x35\x30\x10\x06\x0a\x2b\x06\x01\x04\x01\x82\x37\x02\x01\x19\xa2\x02\x80\x00\x30\x21\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04\x14\xe5\x22\x15\x40\xdc\x4b\x97\x4f\x54\xdb\x4e\x39\x0b\xff\x41\x32\x39\x9c\x80\x37\x30\x4a\x06\x0a\x2b\x06\x01\x04\x01\x82\x37\x0c\x02\x01\x31\x3c\x30\x3a\x1e\x0c\x00\x4f\x00\x53\x00\x41\x00\x74\x00\x74\x00\x72\x02\x04\x10\x01\x00\x01\x04\x24\x32\x00\x3a\x00\x36\x00\x2e\x00\x30\x00\x2c\x00\x32\x00\x3a\x00\x36\x00\x2e\x00\x31\x00\x2c\x00\x32\x00\x3a\x00\x36\x00\x2e\x00\x34\x00\x00\x00\x30\x62\x06\x0a\x2b\x06\x01\x04\x01\x82\x37\x0c\x02\x02\x31\x54\x30\x52\x1e\x4c\x00\x7b\x00\x44\x00\x45\x00\x33\x00\x35\x00\x31\x00\x41\x00\x34\x00\x32\x00\x2d\x00\x38\x00\x45\x00\x35\x00\x39\x00\x2d\x00\x31\x00\x31\x00\x44\x00\x30\x00\x2d\x00\x38\x00\x43\x00\x34\x00\x37\x00\x2d\x00\x30\x00\x30\x00\x43\x00\x30\x00\x34\x00\x46\x00\x43\x00\x32\x00\x39\x00\x35\x00\x45\x00\x45\x00\x7d\x02\x02\x02\x00\xa0\x4a\x30\x48\x30\x46\x06\x0a\x2b\x06\x01\x04\x01\x82\x37\x0c\x02\x01\x04\x38\x30\x36\x1e\x04\x00\x4f\x00\x53\x02\x04\x10\x01\x00\x01\x04\x28\x56\x00\x69\x00\x73\x00\x74\x00\x61\x00\x58\x00\x38\x00\x36\x00\x2c\x00\x37\x00\x58\x00\x38\x00\x36\x00\x2c\x00\x31\x00\x30\x00\x58\x00\x38\x00\x36\x00\x00\x00"; -#define der_content_size (sizeof(der_content)-1) + "\x30\x82\x02\x24\x30\x0c\x06\x0a\x2b\x06\x01\x04\x01\x82\x37\x0c\x01\x01\x04\x10\xbb\xf6\x4d\xbf\x2b\x33\x52\x44\xba\x87\x63\xf0\x97\x88\x44\x2d\x17\x0d\x31\x36\x31\x30\x31\x31\x31\x37\x31\x33\x30\x32\x5a\x30\x0e\x06\x0a\x2b\x06\x01\x04\x01\x82\x37\x0c\x01\x02\x05\x00\x30\x82\x01\x95\x30\x82\x01\x91\x04\x52\x45\x00\x35\x00\x32\x00\x32\x00\x31\x00\x35\x00\x34\x00\x30\x00\x44\x00\x43\x00\x34\x00\x42\x00\x39\x00\x37\x00\x34\x00\x46\x00\x35\x00\x34\x00\x44\x00\x42\x00\x34\x00\x45\x00\x33\x00\x39\x00\x30\x00\x42\x00\x46\x00\x46\x00\x34\x00\x31\x00\x33\x00\x32\x00\x33\x00\x39\x00\x39\x00\x43\x00\x38\x00\x30\x00\x33\x00\x37\x00\x00\x00\x31\x82\x01\x39\x30\x40\x06\x0a\x2b\x06\x01\x04\x01\x82\x37\x0c\x02\x01\x31\x32\x30\x30\x1e\x08\x00\x46\x00\x69\x00\x6c\x00\x65\x02\x04\x10\x01\x00\x01\x04\x1e\x73\x00\x61\x00\x6d\x00\x62\x00\x61\x00\x70\x00\x31\x00\x30\x00\x30\x00\x30\x00\x2e\x00\x69\x00\x6e\x00\x66\x00\x00\x00\x30\x45\x06\x0a\x2b\x06\x01\x04\x01\x82\x37\x02\x01\x04\x31\x37\x30\x35\x30\x10\x06\x0a\x2b\x06\x01\x04\x01\x82\x37\x02\x01\x19\xa2\x02\x80\x00\x30\x21\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04\x14\xe5\x22\x15\x40\xdc\x4b\x97\x4f\x54\xdb\x4e\x39\x0b\xff\x41\x32\x39\x9c\x80\x37\x30\x4a\x06\x0a\x2b\x06\x01\x04\x01\x82\x37\x0c\x02\x01\x31\x3c\x30\x3a\x1e\x0c\x00\x4f\x00\x53\x00\x41\x00\x74\x00\x74\x00\x72\x02\x04\x10\x01\x00\x01\x04\x24\x32\x00\x3a\x00\x36\x00\x2e\x00\x30\x00\x2c\x00\x32\x00\x3a\x00\x36\x00\x2e\x00\x31\x00\x2c\x00\x32\x00\x3a\x00\x36\x00\x2e\x00\x34\x00\x00\x00\x30\x62\x06\x0a\x2b\x06\x01\x04\x01\x82\x37\x0c\x02\x02\x31\x54\x30\x52\x1e\x4c\x00\x7b\x00\x44\x00\x45\x00\x33\x00\x35\x00\x31\x00\x41\x00\x34\x00\x32\x00\x2d\x00\x38\x00\x45\x00\x35\x00\x39\x00\x2d\x00\x31\x00\x31\x00\x44\x00\x30\x00\x2d\x00\x38\x00\x43\x00\x34\x00\x37\x00\x2d\x00\x30\x00\x30\x00\x43\x00\x30\x00\x34\x00\x46\x00\x43\x00\x32\x00\x39\x00\x35\x00\x45\x00\x45\x00\x7d\x02\x02\x02\x00\xa0\x4a\x30\x48\x30\x46\x06\x0a\x2b\x06\x01\x04\x01\x82\x37\x0c\x02\x01\x04\x38\x30\x36\x1e\x04\x00\x4f\x00\x53\x02\x04\x10\x01\x00\x01\x04\x28\x56\x00\x69\x00\x73\x00\x74\x00\x61\x00\x58\x00\x38\x00\x36\x00\x2c\x00\x37\x00\x58\x00\x38\x00\x36\x00\x2c\x00\x31\x00\x30\x00\x58\x00\x38\x00\x36\x00\x00\x00"; +#define der_content_size (sizeof(der_content) - 1) const gnutls_datum_t pkcs7_pem = { (void *)pkcs7_data, sizeof(pkcs7_data) - 1 }; static void tls_log_func(int level, const char *str) @@ -118,9 +118,8 @@ void doit(void) assert(strcmp(oid, "1.3.6.1.4.1.311.10.1") == 0); - ret = - gnutls_pkcs7_get_embedded_data(pkcs7, GNUTLS_PKCS7_EDATA_GET_RAW, - &data); + ret = gnutls_pkcs7_get_embedded_data(pkcs7, GNUTLS_PKCS7_EDATA_GET_RAW, + &data); if (ret < 0) { fail("error in gnutls_pkcs7_get_embedded_data: %s\n", gnutls_strerror(ret)); diff --git a/tests/pkcs7-gen.c b/tests/pkcs7-gen.c index 2d23570754..8020afa76c 100644 --- a/tests/pkcs7-gen.c +++ b/tests/pkcs7-gen.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,41 +33,42 @@ #include "utils.h" static char pem1_cert[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICHjCCAYmgAwIBAgIERiYdNzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTI3WhcNMDgwNDE3MTMyOTI3WjAdMRsw\n" - "GQYDVQQDExJHbnVUTFMgdGVzdCBjbGllbnQwgZwwCwYJKoZIhvcNAQEBA4GMADCB\n" - "iAKBgLtmQ/Xyxde2jMzF3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeL\n" - "ZIkiW8DdU3w77XwEu4C5KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKN\n" - "zj2AC41179gAgY8oBAOgIo1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjdjB0MAwG\n" - "A1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUDAweg\n" - "ADAdBgNVHQ4EFgQUTLkKm/odNON+3svSBxX+odrLaJEwHwYDVR0jBBgwFoAU6Twc\n" - "+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBALujmBJVZnvaTXr9cFRJ\n" - "jpfc/3X7sLUsMvumcDE01ls/cG5mIatmiyEU9qI3jbgUf82z23ON/acwJf875D3/\n" - "U7jyOsBJ44SEQITbin2yUeJMIm1tievvdNXBDfW95AM507ShzP12sfiJkJfjjdhy\n" - "dc8Siq5JojruiMizAf0pA7in\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIICHjCCAYmgAwIBAgIERiYdNzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTI3WhcNMDgwNDE3MTMyOTI3WjAdMRsw\n" + "GQYDVQQDExJHbnVUTFMgdGVzdCBjbGllbnQwgZwwCwYJKoZIhvcNAQEBA4GMADCB\n" + "iAKBgLtmQ/Xyxde2jMzF3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeL\n" + "ZIkiW8DdU3w77XwEu4C5KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKN\n" + "zj2AC41179gAgY8oBAOgIo1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjdjB0MAwG\n" + "A1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUDAweg\n" + "ADAdBgNVHQ4EFgQUTLkKm/odNON+3svSBxX+odrLaJEwHwYDVR0jBBgwFoAU6Twc\n" + "+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBALujmBJVZnvaTXr9cFRJ\n" + "jpfc/3X7sLUsMvumcDE01ls/cG5mIatmiyEU9qI3jbgUf82z23ON/acwJf875D3/\n" + "U7jyOsBJ44SEQITbin2yUeJMIm1tievvdNXBDfW95AM507ShzP12sfiJkJfjjdhy\n" + "dc8Siq5JojruiMizAf0pA7in\n" + "-----END CERTIFICATE-----\n"; static char pem1_key[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" - "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" - "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" - "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" - "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" - "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" - "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" - "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" - "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" - "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" - "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" - "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" - "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" + "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" + "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" + "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" + "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" + "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" + "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" + "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" + "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" + "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" + "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" + "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" + "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" + "-----END RSA PRIVATE KEY-----\n"; const gnutls_datum_t cert = { (void *)pem1_cert, sizeof(pem1_cert) - 1 }; const gnutls_datum_t key = { (void *)pem1_key, sizeof(pem1_key) - 1 }; -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1199142000; @@ -115,9 +116,8 @@ void doit(void) exit(1); } - ret = - gnutls_privkey_import_x509_raw(pkey, &key, GNUTLS_X509_FMT_PEM, 0, - 0); + ret = gnutls_privkey_import_x509_raw(pkey, &key, GNUTLS_X509_FMT_PEM, 0, + 0); if (ret < 0) { fail("error in %d: %s\n", __LINE__, gnutls_strerror(ret)); exit(1); @@ -136,33 +136,29 @@ void doit(void) exit(1); } - ret = - gnutls_pkcs7_add_attr(&list1, "1.2.3.4", &data1, - GNUTLS_PKCS7_ATTR_ENCODE_OCTET_STRING); + ret = gnutls_pkcs7_add_attr(&list1, "1.2.3.4", &data1, + GNUTLS_PKCS7_ATTR_ENCODE_OCTET_STRING); if (ret < 0) { fail("error in %d: %s\n", __LINE__, gnutls_strerror(ret)); exit(1); } - ret = - gnutls_pkcs7_add_attr(&list1, "2.3.4", &data2, - GNUTLS_PKCS7_ATTR_ENCODE_OCTET_STRING); + ret = gnutls_pkcs7_add_attr(&list1, "2.3.4", &data2, + GNUTLS_PKCS7_ATTR_ENCODE_OCTET_STRING); if (ret < 0) { fail("error in %d: %s\n", __LINE__, gnutls_strerror(ret)); exit(1); } - ret = - gnutls_pkcs7_add_attr(&list2, "2.3.4", &data3, - GNUTLS_PKCS7_ATTR_ENCODE_OCTET_STRING); + ret = gnutls_pkcs7_add_attr(&list2, "2.3.4", &data3, + GNUTLS_PKCS7_ATTR_ENCODE_OCTET_STRING); if (ret < 0) { fail("error in %d: %s\n", __LINE__, gnutls_strerror(ret)); exit(1); } - ret = - gnutls_pkcs7_sign(pkcs7, crt, pkey, &data3, list1, list2, - GNUTLS_DIG_SHA256, 0); + ret = gnutls_pkcs7_sign(pkcs7, crt, pkey, &data3, list1, list2, + GNUTLS_DIG_SHA256, 0); if (ret < 0) { fail("error in %d: %s\n", __LINE__, gnutls_strerror(ret)); exit(1); @@ -213,46 +209,43 @@ void doit(void) } gnutls_free(data.data); - ret = - gnutls_pkcs7_get_attr(info.signed_attrs, 2, &oid, &data, - GNUTLS_PKCS7_ATTR_ENCODE_OCTET_STRING); + ret = gnutls_pkcs7_get_attr(info.signed_attrs, 2, &oid, &data, + GNUTLS_PKCS7_ATTR_ENCODE_OCTET_STRING); if (ret < 0) { fail("error in %d: %s\n", __LINE__, gnutls_strerror(ret)); exit(1); } - if (strcmp(oid, "1.2.3.4") != 0 || data.size != data1.size - || memcmp(data.data, data1.data, data.size) != 0) { + if (strcmp(oid, "1.2.3.4") != 0 || data.size != data1.size || + memcmp(data.data, data1.data, data.size) != 0) { fail("error in %d: %s\n", __LINE__, oid); exit(1); } gnutls_free(data.data); - ret = - gnutls_pkcs7_get_attr(info.signed_attrs, 3, &oid, &data, - GNUTLS_PKCS7_ATTR_ENCODE_OCTET_STRING); + ret = gnutls_pkcs7_get_attr(info.signed_attrs, 3, &oid, &data, + GNUTLS_PKCS7_ATTR_ENCODE_OCTET_STRING); if (ret < 0) { fail("error in %d: %s\n", __LINE__, gnutls_strerror(ret)); exit(1); } - if (strcmp(oid, "2.3.4") != 0 || data.size != data2.size - || memcmp(data.data, data2.data, data.size) != 0) { + if (strcmp(oid, "2.3.4") != 0 || data.size != data2.size || + memcmp(data.data, data2.data, data.size) != 0) { fail("error in %d: %s\n", __LINE__, oid); exit(1); } gnutls_free(data.data); - ret = - gnutls_pkcs7_get_attr(info.unsigned_attrs, 0, &oid, &data, - GNUTLS_PKCS7_ATTR_ENCODE_OCTET_STRING); + ret = gnutls_pkcs7_get_attr(info.unsigned_attrs, 0, &oid, &data, + GNUTLS_PKCS7_ATTR_ENCODE_OCTET_STRING); if (ret < 0) { fail("error in %d: %s\n", __LINE__, gnutls_strerror(ret)); exit(1); } - if (strcmp(oid, "2.3.4") != 0 || data.size != data3.size - || memcmp(data.data, data3.data, data.size) != 0) { + if (strcmp(oid, "2.3.4") != 0 || data.size != data3.size || + memcmp(data.data, data3.data, data.size) != 0) { fail("error in %d: %s\n", __LINE__, oid); exit(1); } diff --git a/tests/pkcs7-verify-double-free.c b/tests/pkcs7-verify-double-free.c index f75b46a7a5..2aab7b6105 100644 --- a/tests/pkcs7-verify-double-free.c +++ b/tests/pkcs7-verify-double-free.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,127 +30,129 @@ #include "utils.h" static char rca_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIDCjCCAfKgAwIBAgIBATANBgkqhkiG9w0BAQsFADAVMRMwEQYDVQQKDApFeGFt\n" - "cGxlIENBMCAXDTE3MDcyMTE0NDMzNloYDzIyMjIwNzIxMTQ0MzM2WjAVMRMwEQYD\n" - "VQQKDApFeGFtcGxlIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n" - "v8hnKPJ/IA0SQB/A/a0Uh+npZ67vsgIMrtTQo0r0kJkmkBz5323xO3DVuJfB3QmX\n" - "v9zvoeCQLuDvWar5Aixfxgm6s5Q+yPvJj9t3NebDrU+Y4+qyewBIJUF8EF/5iBPC\n" - "ZHONmzbfIRWvQWGGgb2CRcOHp2J7AY/QLB6LsWPaLjs/DHva28Q13JaTTHIpdu8v\n" - "t6vHr0nXf66DN4MvtoF3N+o+v3snJCMsfXOqASi4tbWR7gtOfCfiz9uBjh0W2Dut\n" - "/jclBQkJkLe6esNSM+f4YiOpctVDjmfj8yoHCp394vt0wFqhG38wsTFAyVP6qIcf\n" - "5zoSu9ovEt2cTkhnZHjiiwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud\n" - "DwEB/wQEAwIBBjAdBgNVHQ4EFgQUhjeO6Uc5imbjOl2I2ltVA27Hu9YwHwYDVR0j\n" - "BBgwFoAUhjeO6Uc5imbjOl2I2ltVA27Hu9YwDQYJKoZIhvcNAQELBQADggEBAD+r\n" - "i/7FsbG0OFKGF2+JOnth6NjJQcMfM8LiglqAuBUijrv7vltoZ0Z3FJH1Vi4OeMXn\n" - "l7X/9tWUve0uFl75MfjDrf0+lCEdYRY1LCba2BrUgpbbkLywVUdnbsvndehegCgS\n" - "jss2/zys3Hlo3ZaHlTMQ/NQ4nrxcxkjOvkZSEOqgxJTLpzm6pr7YUts4k6c6lNiB\n" - "FSiJiDzsJCmWR9C3fBbUlfDfTJYGN3JwqX270KchXDElo8gNoDnF7jBMpLFFSEKm\n" - "MyfbNLX/srh+CEfZaN/OZV4A3MQ0L8vQEp6M4CJhvRLIuMVabZ2coJ0AzystrOMU\n" - "LirBWjg89RoAjFQ7bTE=\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIDCjCCAfKgAwIBAgIBATANBgkqhkiG9w0BAQsFADAVMRMwEQYDVQQKDApFeGFt\n" + "cGxlIENBMCAXDTE3MDcyMTE0NDMzNloYDzIyMjIwNzIxMTQ0MzM2WjAVMRMwEQYD\n" + "VQQKDApFeGFtcGxlIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n" + "v8hnKPJ/IA0SQB/A/a0Uh+npZ67vsgIMrtTQo0r0kJkmkBz5323xO3DVuJfB3QmX\n" + "v9zvoeCQLuDvWar5Aixfxgm6s5Q+yPvJj9t3NebDrU+Y4+qyewBIJUF8EF/5iBPC\n" + "ZHONmzbfIRWvQWGGgb2CRcOHp2J7AY/QLB6LsWPaLjs/DHva28Q13JaTTHIpdu8v\n" + "t6vHr0nXf66DN4MvtoF3N+o+v3snJCMsfXOqASi4tbWR7gtOfCfiz9uBjh0W2Dut\n" + "/jclBQkJkLe6esNSM+f4YiOpctVDjmfj8yoHCp394vt0wFqhG38wsTFAyVP6qIcf\n" + "5zoSu9ovEt2cTkhnZHjiiwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud\n" + "DwEB/wQEAwIBBjAdBgNVHQ4EFgQUhjeO6Uc5imbjOl2I2ltVA27Hu9YwHwYDVR0j\n" + "BBgwFoAUhjeO6Uc5imbjOl2I2ltVA27Hu9YwDQYJKoZIhvcNAQELBQADggEBAD+r\n" + "i/7FsbG0OFKGF2+JOnth6NjJQcMfM8LiglqAuBUijrv7vltoZ0Z3FJH1Vi4OeMXn\n" + "l7X/9tWUve0uFl75MfjDrf0+lCEdYRY1LCba2BrUgpbbkLywVUdnbsvndehegCgS\n" + "jss2/zys3Hlo3ZaHlTMQ/NQ4nrxcxkjOvkZSEOqgxJTLpzm6pr7YUts4k6c6lNiB\n" + "FSiJiDzsJCmWR9C3fBbUlfDfTJYGN3JwqX270KchXDElo8gNoDnF7jBMpLFFSEKm\n" + "MyfbNLX/srh+CEfZaN/OZV4A3MQ0L8vQEp6M4CJhvRLIuMVabZ2coJ0AzystrOMU\n" + "LirBWjg89RoAjFQ7bTE=\n" + "-----END CERTIFICATE-----\n"; static char ca_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIDFzCCAf+gAwIBAgIBAjANBgkqhkiG9w0BAQsFADAVMRMwEQYDVQQKDApFeGFt\n" - "cGxlIENBMCAXDTE3MDcyMTE0NDQzNFoYDzIyMjIwNzIxMTQ0NDM0WjAiMSAwHgYD\n" - "VQQKDBdFeGFtcGxlIGludGVybWVkaWF0ZSBDQTCCASIwDQYJKoZIhvcNAQEBBQAD\n" - "ggEPADCCAQoCggEBAKb9ACB8u//sP6MfNU1OsVw68xz3eTPLgKxS0vpqexm6iGVg\n" - "ug/o9uYRLzqiEukv/eyz9WzHmY7sqlOJjOFdv92+SaNg79Jc51WHPFXgea4/qyfr\n" - "4y14PGs0SNxm6T44sXurUs7cXydQVUgnq2VCaWFOTUdxXoAWkV8r8GaUoPD/klVz\n" - "RqxSZVETmX1XBKhsMnnov41kRwVph2C+VfUspsbaUZaz/o/S1/nokhXRACzKsMBr\n" - "obqiGxbY35uVzsmbAW5ErhQz98AWJL3Bub1fsEMXg6OEMmPH4AtX888dTIYZNw0E\n" - "bUIESspz1kjJQTtVQDHTprhwz16YiSVeUonlLgMCAwEAAaNjMGEwDwYDVR0TAQH/\n" - "BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFPBjxDWjMhjXERirKF9O\n" - "o/5Cllc5MB8GA1UdIwQYMBaAFIY3julHOYpm4zpdiNpbVQNux7vWMA0GCSqGSIb3\n" - "DQEBCwUAA4IBAQCTm+vv3hBa6lL5IT+Fw8aTxQ2Ne7mZ5oyazhvXYwwfKNMX3SML\n" - "W2JdPaL64ZwbxxxYvW401o5Z0CEgru3YFrsqB/hEdl0Uf8UWWJmE1rRa+miTmbjt\n" - "lrLNCWdrs6CiwvsPITTHg7jevB4KyZYsTSxQFcyr3N3xF+6EmOTC4IkhPPnXYXcp\n" - "248ih+WOavSYoRvzgB/Dip1WnPYU2mfIV3O8JReRryngA0TzWCLPLUoWR3R4jwtC\n" - "+1uSLoqaenz3qv3F1WEbke37az9YJuXx/5D8CqFQiZ62TUUtI6fYd8mkMBM4Qfh6\n" - "NW9XrCkI9wlpL5K9HllhuW0BhKeJkuPpyQ2p\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIDFzCCAf+gAwIBAgIBAjANBgkqhkiG9w0BAQsFADAVMRMwEQYDVQQKDApFeGFt\n" + "cGxlIENBMCAXDTE3MDcyMTE0NDQzNFoYDzIyMjIwNzIxMTQ0NDM0WjAiMSAwHgYD\n" + "VQQKDBdFeGFtcGxlIGludGVybWVkaWF0ZSBDQTCCASIwDQYJKoZIhvcNAQEBBQAD\n" + "ggEPADCCAQoCggEBAKb9ACB8u//sP6MfNU1OsVw68xz3eTPLgKxS0vpqexm6iGVg\n" + "ug/o9uYRLzqiEukv/eyz9WzHmY7sqlOJjOFdv92+SaNg79Jc51WHPFXgea4/qyfr\n" + "4y14PGs0SNxm6T44sXurUs7cXydQVUgnq2VCaWFOTUdxXoAWkV8r8GaUoPD/klVz\n" + "RqxSZVETmX1XBKhsMnnov41kRwVph2C+VfUspsbaUZaz/o/S1/nokhXRACzKsMBr\n" + "obqiGxbY35uVzsmbAW5ErhQz98AWJL3Bub1fsEMXg6OEMmPH4AtX888dTIYZNw0E\n" + "bUIESspz1kjJQTtVQDHTprhwz16YiSVeUonlLgMCAwEAAaNjMGEwDwYDVR0TAQH/\n" + "BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFPBjxDWjMhjXERirKF9O\n" + "o/5Cllc5MB8GA1UdIwQYMBaAFIY3julHOYpm4zpdiNpbVQNux7vWMA0GCSqGSIb3\n" + "DQEBCwUAA4IBAQCTm+vv3hBa6lL5IT+Fw8aTxQ2Ne7mZ5oyazhvXYwwfKNMX3SML\n" + "W2JdPaL64ZwbxxxYvW401o5Z0CEgru3YFrsqB/hEdl0Uf8UWWJmE1rRa+miTmbjt\n" + "lrLNCWdrs6CiwvsPITTHg7jevB4KyZYsTSxQFcyr3N3xF+6EmOTC4IkhPPnXYXcp\n" + "248ih+WOavSYoRvzgB/Dip1WnPYU2mfIV3O8JReRryngA0TzWCLPLUoWR3R4jwtC\n" + "+1uSLoqaenz3qv3F1WEbke37az9YJuXx/5D8CqFQiZ62TUUtI6fYd8mkMBM4Qfh6\n" + "NW9XrCkI9wlpL5K9HllhuW0BhKeJkuPpyQ2p\n" + "-----END CERTIFICATE-----\n"; static char ee_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIDIjCCAgqgAwIBAgIBATANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQKDBdFeGFt\n" - "cGxlIGludGVybWVkaWF0ZSBDQTAgFw0yMjA3MjExNDQ1MzdaGA8yMjIyMDcyMTE0\n" - "NDUzN1owFTETMBEGA1UEAwwKSm9obiBTbWl0aDCCASIwDQYJKoZIhvcNAQEBBQAD\n" - "ggEPADCCAQoCggEBAMb1uuxppBFY+WVD45iyHUq7DkIJNNOI/JRaybVJfPktWq2E\n" - "eNe7XhV05KKnqZTbDO2iYqNHqGhZ8pz/IstDRTZP3z/q1vXTG0P9Gx28rEy5TaUY\n" - "QjtD+ZoFUQm0ORMDBjd8jikqtJ87hKeuOPMH4rzdydotMaPQSm7KLzHBGBr6gg7z\n" - "g1IxPWkhMyHapoMqqrhjwjzoTY97UIXpZTEoIA+KpEC8f9CciBtL0i1MPBjWozB6\n" - "Jma9q5iEwZXuRr3cnPYeIPlK2drgDZCMuSFcYiT8ApLw5OhKqY1m2EvfZ2ox2s9R\n" - "68/HzYdPi3kZwiNEtlBvMlpt5yKBJAflp76d7DkCAwEAAaNuMGwwCwYDVR0PBAQD\n" - "AgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAdBgNVHQ4EFgQUc+Mi\n" - "kr8WMCk00SQo+P2iggp/oQkwHwYDVR0jBBgwFoAU8GPENaMyGNcRGKsoX06j/kKW\n" - "VzkwDQYJKoZIhvcNAQELBQADggEBAKU9+CUR0Jcfybd1+8Aqgh1RH96yQygnVuyt\n" - "Na9rFz4fM3ij9tGXDHXrkZw8bW1dWLU9quu8zeTxKxc3aiDIw739Alz0tukttDo7\n" - "dW7YqIb77zsIsWB9p7G9dlxT6ieUy+5IKk69BbeK8KR0vAciAG4KVQxPhuPy/LGX\n" - "PzqlJIJ4h61s3UOroReHPB1keLZgpORqrvtpClOmABH9TLFRJA/WFg8Q2XYB/p0x\n" - "l/pWiaoBC+8wK9cDoMUK5yOwXeuCLffCb+UlAD0+z/qxJ2pisE8E9X8rRKRrWI+i\n" - "G7LtJCEn86EQK8KuRlJxKgj8lClZhoULB0oL4jbblBuNow9WRmM=\n" - "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIDIjCCAgqgAwIBAgIBATANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQKDBdFeGFt\n" + "cGxlIGludGVybWVkaWF0ZSBDQTAgFw0yMjA3MjExNDQ1MzdaGA8yMjIyMDcyMTE0\n" + "NDUzN1owFTETMBEGA1UEAwwKSm9obiBTbWl0aDCCASIwDQYJKoZIhvcNAQEBBQAD\n" + "ggEPADCCAQoCggEBAMb1uuxppBFY+WVD45iyHUq7DkIJNNOI/JRaybVJfPktWq2E\n" + "eNe7XhV05KKnqZTbDO2iYqNHqGhZ8pz/IstDRTZP3z/q1vXTG0P9Gx28rEy5TaUY\n" + "QjtD+ZoFUQm0ORMDBjd8jikqtJ87hKeuOPMH4rzdydotMaPQSm7KLzHBGBr6gg7z\n" + "g1IxPWkhMyHapoMqqrhjwjzoTY97UIXpZTEoIA+KpEC8f9CciBtL0i1MPBjWozB6\n" + "Jma9q5iEwZXuRr3cnPYeIPlK2drgDZCMuSFcYiT8ApLw5OhKqY1m2EvfZ2ox2s9R\n" + "68/HzYdPi3kZwiNEtlBvMlpt5yKBJAflp76d7DkCAwEAAaNuMGwwCwYDVR0PBAQD\n" + "AgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAdBgNVHQ4EFgQUc+Mi\n" + "kr8WMCk00SQo+P2iggp/oQkwHwYDVR0jBBgwFoAU8GPENaMyGNcRGKsoX06j/kKW\n" + "VzkwDQYJKoZIhvcNAQELBQADggEBAKU9+CUR0Jcfybd1+8Aqgh1RH96yQygnVuyt\n" + "Na9rFz4fM3ij9tGXDHXrkZw8bW1dWLU9quu8zeTxKxc3aiDIw739Alz0tukttDo7\n" + "dW7YqIb77zsIsWB9p7G9dlxT6ieUy+5IKk69BbeK8KR0vAciAG4KVQxPhuPy/LGX\n" + "PzqlJIJ4h61s3UOroReHPB1keLZgpORqrvtpClOmABH9TLFRJA/WFg8Q2XYB/p0x\n" + "l/pWiaoBC+8wK9cDoMUK5yOwXeuCLffCb+UlAD0+z/qxJ2pisE8E9X8rRKRrWI+i\n" + "G7LtJCEn86EQK8KuRlJxKgj8lClZhoULB0oL4jbblBuNow9WRmM=\n" + "-----END CERTIFICATE-----\n"; static char msg_pem[] = - "-----BEGIN PKCS7-----\n" - "MIIK2QYJKoZIhvcNAQcCoIIKyjCCCsYCAQExDTALBglghkgBZQMEAgEwCwYJKoZI\n" - "hvcNAQcBoIIJTzCCAwowggHyoAMCAQICAQEwDQYJKoZIhvcNAQELBQAwFTETMBEG\n" - "A1UECgwKRXhhbXBsZSBDQTAgFw0xNzA3MjExNDQzMjFaGA8yMjIyMDcyMTE0NDMy\n" - "MVowFTETMBEGA1UECgwKRXhhbXBsZSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\n" - "ADCCAQoCggEBAL51eyE4j8wAKQKMGlO9HEY2iaGvsdPSJmidSdmCi1jnNK39Lx4Y\n" - "31h279hSHF5wtI6VM91HHfeLf1mjEZHlKrXXJQzBPLpbHWapD778drHBitOP8e56\n" - "fDMIfofLV4tkMk8690vPe4cJH1UHGspMyz6EQF9kPRaW80XtMV/6dalgL/9Esmaw\n" - "XBNPJAS1VutDuXQkJ/3/rWFLmkpYHHtGPjX782YRmT1s+VOVTsLqmKx0TEL8A381\n" - "bbElHPUAMjPcyWR5qqA8KWnS5Dwqk3LwI0AvuhQytCq0S7Xl4DXauvxwTRXv0UU7\n" - "W8r3MLAw9DnlnJiD/RFjw5rbGO3wMePk/qUCAwEAAaNjMGEwDwYDVR0TAQH/BAUw\n" - "AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFIh2KRoKJoe2VtpOwWMkRAkR\n" - "mLWKMB8GA1UdIwQYMBaAFIh2KRoKJoe2VtpOwWMkRAkRmLWKMA0GCSqGSIb3DQEB\n" - "CwUAA4IBAQBovvlOjoy0MCT5U0eWfcPQQjY4Ssrn3IiPNlVkqSNo+FHX+2baTLVQ\n" - "5QTHxwXwzdIJiwtjFWDdGEQXqmuIvnFG+u/whGbeg6oQygfnQ5Y+q6epOxCsPgLQ\n" - "mKKEaF7mvh8DauUx4QSbYCNGCctOZuB1vlN9bJ3/5QbH+2pFPOfCr5CAyPDwHo6S\n" - "qO3yPcutRwT9xS7gXEHM9HhLp+DmdCGh4eVBPiFilyZm1d92lWxU8oxoSfXgzDT/\n" - "GCzlMykNZNs4JD9QmiRClP/3U0dQbOhah/Fda+N+L90xaqEgGcvwKKZa3pzo59pl\n" - "BbkcIP4YPyHeinwkgAn5UVJg9DOxNCS0MIIDFzCCAf+gAwIBAgIBAjANBgkqhkiG\n" - "9w0BAQsFADAVMRMwEQYDVQQKDApFeGFtcGxlIENBMCAXDTE3MDcyMTE0NDQxM1oY\n" - "DzIyMjIwNzIxMTQ0NDEzWjAiMSAwHgYDVQQKDBdFeGFtcGxlIGludGVybWVkaWF0\n" - "ZSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMPFDEvDANwvhviu\n" - "pwXTvaKyxyX94jVu1wgAhIRyQBVRiMbrn8MEufLG8oA0vKd8s92gv/lWe1jFb2rn\n" - "91jMkZWsjWjiJFD6SzqFfBo+XxOGikEqO1MAf92UqavmSGlXVRG1Vy7T7dWibZP0\n" - "WODhHYWayR0Y6owSz5IqNfrHXzDME+lSJxHgRFI7pK+b0OgiVmvyXDKFPvyU6GrP\n" - "lxXDi/XbjyPvC5gpiwtTgm+s8KERwmdlfZUNjkh2PpHx1g1joijHT3wIvO/Pek1E\n" - "C+Xs6w3XxGgL6TTL7FDuv4AjZVX9KK66/yBhX3aN8bkqAg+hs9XNk3zzWC0XEFOS\n" - "Qoh2va0CAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw\n" - "HQYDVR0OBBYEFHwi/7dUWGjkMWJctOm7MCjjQj1cMB8GA1UdIwQYMBaAFIh2KRoK\n" - "Joe2VtpOwWMkRAkRmLWKMA0GCSqGSIb3DQEBCwUAA4IBAQCF6sHCBdYRwBwvfCve\n" - "og9cPnmPqZrG4AtmSvtoSsMvgvKb/4z3/gG8oPtTBkeRcAHoMoEp/oA+B2ylwIAc\n" - "S5U7jx+lYH/Pqih0X/OcOLbaMv8uzGSGQxk+L9LuuIT6E/THfRRIPEvkDkzC+/uk\n" - "7vUbG17bSEWeF0o/6sjzAY2aH1jnbCDyu0UC78GXkc6bZ5QlH98uLMDMrOmqcZjS\n" - "JFfvuRDQyKV5yBdBkYaobsIWSQDsgYxJzf/2y8c3r+HXqT+jhrXPWJ3btgMPxpu7\n" - "E8KmoFgp9EM+48oYlXJ66rk08/KjaVmgN7R+Hm3e2+MFT2kme4fBKalLjcazTe3x\n" - "0FisMIIDIjCCAgqgAwIBAgIBATANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQKDBdF\n" - "eGFtcGxlIGludGVybWVkaWF0ZSBDQTAgFw0yMjA3MjExNDQ1MzBaGA8yMjIyMDcy\n" - "MTE0NDUzMVowFTETMBEGA1UEAwwKSm9obiBTbWl0aDCCASIwDQYJKoZIhvcNAQEB\n" - "BQADggEPADCCAQoCggEBAMjhSqhdD5RjmOm6W3hG7zkgKBP9whRN/SipcdEMlkgc\n" - "F/U3QMu66qIfKwheNdWalC1JLtruLDWP92ysa6Vw+CCG8aSax1AgB//RKQB7kgPA\n" - "9js9hi/oCdBmCv2HJxhWSLz+MVoxgzW4C7S9FenI+btxe/99Uw4nOw7kwjsYDLKr\n" - "tMw8myv7aCW/63CuBYGtohiZupM3RI3kKFcZots+KRPLlZpjv+I2h9xSln8VxKNb\n" - "XiMrYwGfHB7iX7ghe1TvFjKatEUhsqa7AvIq7nfe/cyq97f0ODQO814njgZtk5iQ\n" - "JVavXHdhTVaypt1HdAFMuHX5UATylHxx9tRCgSIijUsCAwEAAaNuMGwwCwYDVR0P\n" - "BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAdBgNVHQ4EFgQU\n" - "31+vHl4E/2Jpnwinbzf+d7usshcwHwYDVR0jBBgwFoAUfCL/t1RYaOQxYly06bsw\n" - "KONCPVwwDQYJKoZIhvcNAQELBQADggEBAAWe63DcNwmleQ3INFGDJZ/m2I/R/cBa\n" - "nnrxgR5Ey1ljHdA/x1z1JLTGmGVwqGExs5DNG9Q//Pmc9pZ1yPa8J4Xf8AvFcmkY\n" - "mWoH1HvW0xu/RF1UN5SAoD2PRQ+Vq4OSPD58IlEu/u4o1wZV7Wl91Cv6VNpiAb63\n" - "j9PA1YacOpOtcRqG59Vuj9HFm9f30ejHVo2+KJcpo290cR3Zg4fOm8mtjeMdt/QS\n" - "Atq+RqPAQ7yxqvEEv8zPIZj2kAOQm3mh/yYqBrR68lQUD/dBTP7ApIZkhUK3XK6U\n" - "nf9JvoF6Fn2+Cnqb//FLBgHSnoeqeQNwDLUXTsD02iYxHzJrhokSY4YxggFQMIIB\n" - "TAIBATAnMCIxIDAeBgNVBAoMF0V4YW1wbGUgaW50ZXJtZWRpYXRlIENBAgEBMAsG\n" - "CWCGSAFlAwQCATANBgkqhkiG9w0BAQEFAASCAQATHg6wNsBcs/Ub1GQfKwTpKCk5\n" - "8QXuNnZ0u7b6mKgrSY2Gf47fpL2aRgaR+BAQncbctu5EH/IL38pWjaGtOhFAj/5q\n" - "7luVQW11kuyJN3Bd/dtLqawWOwMmAIEigw6X50l5ZHnEVzFfxt+RKTNhk4XWVtbi\n" - "2iIlITOplW0rnvxYAwCxKL9ocaB7etK8au7ixMxbFp75Ts4iLX8dhlAFdCuFCk8k\n" - "B8mi9HHuwr3QYRqMPW61hu1wBL3yB8eoZNOwPXb0gkIh6ZvgptxgQzm/cc+Iw9fP\n" - "QkR0fTM7ElJ5QZmSV98AUbZDHmDvpmcjcUxfSPMc3IoT8T300usRu7QHqKJi\n" - "-----END PKCS7-----\n"; + "-----BEGIN PKCS7-----\n" + "MIIK2QYJKoZIhvcNAQcCoIIKyjCCCsYCAQExDTALBglghkgBZQMEAgEwCwYJKoZI\n" + "hvcNAQcBoIIJTzCCAwowggHyoAMCAQICAQEwDQYJKoZIhvcNAQELBQAwFTETMBEG\n" + "A1UECgwKRXhhbXBsZSBDQTAgFw0xNzA3MjExNDQzMjFaGA8yMjIyMDcyMTE0NDMy\n" + "MVowFTETMBEGA1UECgwKRXhhbXBsZSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\n" + "ADCCAQoCggEBAL51eyE4j8wAKQKMGlO9HEY2iaGvsdPSJmidSdmCi1jnNK39Lx4Y\n" + "31h279hSHF5wtI6VM91HHfeLf1mjEZHlKrXXJQzBPLpbHWapD778drHBitOP8e56\n" + "fDMIfofLV4tkMk8690vPe4cJH1UHGspMyz6EQF9kPRaW80XtMV/6dalgL/9Esmaw\n" + "XBNPJAS1VutDuXQkJ/3/rWFLmkpYHHtGPjX782YRmT1s+VOVTsLqmKx0TEL8A381\n" + "bbElHPUAMjPcyWR5qqA8KWnS5Dwqk3LwI0AvuhQytCq0S7Xl4DXauvxwTRXv0UU7\n" + "W8r3MLAw9DnlnJiD/RFjw5rbGO3wMePk/qUCAwEAAaNjMGEwDwYDVR0TAQH/BAUw\n" + "AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFIh2KRoKJoe2VtpOwWMkRAkR\n" + "mLWKMB8GA1UdIwQYMBaAFIh2KRoKJoe2VtpOwWMkRAkRmLWKMA0GCSqGSIb3DQEB\n" + "CwUAA4IBAQBovvlOjoy0MCT5U0eWfcPQQjY4Ssrn3IiPNlVkqSNo+FHX+2baTLVQ\n" + "5QTHxwXwzdIJiwtjFWDdGEQXqmuIvnFG+u/whGbeg6oQygfnQ5Y+q6epOxCsPgLQ\n" + "mKKEaF7mvh8DauUx4QSbYCNGCctOZuB1vlN9bJ3/5QbH+2pFPOfCr5CAyPDwHo6S\n" + "qO3yPcutRwT9xS7gXEHM9HhLp+DmdCGh4eVBPiFilyZm1d92lWxU8oxoSfXgzDT/\n" + "GCzlMykNZNs4JD9QmiRClP/3U0dQbOhah/Fda+N+L90xaqEgGcvwKKZa3pzo59pl\n" + "BbkcIP4YPyHeinwkgAn5UVJg9DOxNCS0MIIDFzCCAf+gAwIBAgIBAjANBgkqhkiG\n" + "9w0BAQsFADAVMRMwEQYDVQQKDApFeGFtcGxlIENBMCAXDTE3MDcyMTE0NDQxM1oY\n" + "DzIyMjIwNzIxMTQ0NDEzWjAiMSAwHgYDVQQKDBdFeGFtcGxlIGludGVybWVkaWF0\n" + "ZSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMPFDEvDANwvhviu\n" + "pwXTvaKyxyX94jVu1wgAhIRyQBVRiMbrn8MEufLG8oA0vKd8s92gv/lWe1jFb2rn\n" + "91jMkZWsjWjiJFD6SzqFfBo+XxOGikEqO1MAf92UqavmSGlXVRG1Vy7T7dWibZP0\n" + "WODhHYWayR0Y6owSz5IqNfrHXzDME+lSJxHgRFI7pK+b0OgiVmvyXDKFPvyU6GrP\n" + "lxXDi/XbjyPvC5gpiwtTgm+s8KERwmdlfZUNjkh2PpHx1g1joijHT3wIvO/Pek1E\n" + "C+Xs6w3XxGgL6TTL7FDuv4AjZVX9KK66/yBhX3aN8bkqAg+hs9XNk3zzWC0XEFOS\n" + "Qoh2va0CAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw\n" + "HQYDVR0OBBYEFHwi/7dUWGjkMWJctOm7MCjjQj1cMB8GA1UdIwQYMBaAFIh2KRoK\n" + "Joe2VtpOwWMkRAkRmLWKMA0GCSqGSIb3DQEBCwUAA4IBAQCF6sHCBdYRwBwvfCve\n" + "og9cPnmPqZrG4AtmSvtoSsMvgvKb/4z3/gG8oPtTBkeRcAHoMoEp/oA+B2ylwIAc\n" + "S5U7jx+lYH/Pqih0X/OcOLbaMv8uzGSGQxk+L9LuuIT6E/THfRRIPEvkDkzC+/uk\n" + "7vUbG17bSEWeF0o/6sjzAY2aH1jnbCDyu0UC78GXkc6bZ5QlH98uLMDMrOmqcZjS\n" + "JFfvuRDQyKV5yBdBkYaobsIWSQDsgYxJzf/2y8c3r+HXqT+jhrXPWJ3btgMPxpu7\n" + "E8KmoFgp9EM+48oYlXJ66rk08/KjaVmgN7R+Hm3e2+MFT2kme4fBKalLjcazTe3x\n" + "0FisMIIDIjCCAgqgAwIBAgIBATANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQKDBdF\n" + "eGFtcGxlIGludGVybWVkaWF0ZSBDQTAgFw0yMjA3MjExNDQ1MzBaGA8yMjIyMDcy\n" + "MTE0NDUzMVowFTETMBEGA1UEAwwKSm9obiBTbWl0aDCCASIwDQYJKoZIhvcNAQEB\n" + "BQADggEPADCCAQoCggEBAMjhSqhdD5RjmOm6W3hG7zkgKBP9whRN/SipcdEMlkgc\n" + "F/U3QMu66qIfKwheNdWalC1JLtruLDWP92ysa6Vw+CCG8aSax1AgB//RKQB7kgPA\n" + "9js9hi/oCdBmCv2HJxhWSLz+MVoxgzW4C7S9FenI+btxe/99Uw4nOw7kwjsYDLKr\n" + "tMw8myv7aCW/63CuBYGtohiZupM3RI3kKFcZots+KRPLlZpjv+I2h9xSln8VxKNb\n" + "XiMrYwGfHB7iX7ghe1TvFjKatEUhsqa7AvIq7nfe/cyq97f0ODQO814njgZtk5iQ\n" + "JVavXHdhTVaypt1HdAFMuHX5UATylHxx9tRCgSIijUsCAwEAAaNuMGwwCwYDVR0P\n" + "BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAdBgNVHQ4EFgQU\n" + "31+vHl4E/2Jpnwinbzf+d7usshcwHwYDVR0jBBgwFoAUfCL/t1RYaOQxYly06bsw\n" + "KONCPVwwDQYJKoZIhvcNAQELBQADggEBAAWe63DcNwmleQ3INFGDJZ/m2I/R/cBa\n" + "nnrxgR5Ey1ljHdA/x1z1JLTGmGVwqGExs5DNG9Q//Pmc9pZ1yPa8J4Xf8AvFcmkY\n" + "mWoH1HvW0xu/RF1UN5SAoD2PRQ+Vq4OSPD58IlEu/u4o1wZV7Wl91Cv6VNpiAb63\n" + "j9PA1YacOpOtcRqG59Vuj9HFm9f30ejHVo2+KJcpo290cR3Zg4fOm8mtjeMdt/QS\n" + "Atq+RqPAQ7yxqvEEv8zPIZj2kAOQm3mh/yYqBrR68lQUD/dBTP7ApIZkhUK3XK6U\n" + "nf9JvoF6Fn2+Cnqb//FLBgHSnoeqeQNwDLUXTsD02iYxHzJrhokSY4YxggFQMIIB\n" + "TAIBATAnMCIxIDAeBgNVBAoMF0V4YW1wbGUgaW50ZXJtZWRpYXRlIENBAgEBMAsG\n" + "CWCGSAFlAwQCATANBgkqhkiG9w0BAQEFAASCAQATHg6wNsBcs/Ub1GQfKwTpKCk5\n" + "8QXuNnZ0u7b6mKgrSY2Gf47fpL2aRgaR+BAQncbctu5EH/IL38pWjaGtOhFAj/5q\n" + "7luVQW11kuyJN3Bd/dtLqawWOwMmAIEigw6X50l5ZHnEVzFfxt+RKTNhk4XWVtbi\n" + "2iIlITOplW0rnvxYAwCxKL9ocaB7etK8au7ixMxbFp75Ts4iLX8dhlAFdCuFCk8k\n" + "B8mi9HHuwr3QYRqMPW61hu1wBL3yB8eoZNOwPXb0gkIh6ZvgptxgQzm/cc+Iw9fP\n" + "QkR0fTM7ElJ5QZmSV98AUbZDHmDvpmcjcUxfSPMc3IoT8T300usRu7QHqKJi\n" + "-----END PKCS7-----\n"; const gnutls_datum_t rca_datum = { (void *)rca_pem, sizeof(rca_pem) - 1 }; const gnutls_datum_t ca_datum = { (void *)ca_pem, sizeof(ca_pem) - 1 }; @@ -162,12 +164,13 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s |<%d>| %s", "err", level, str); } -#define CHECK(X)\ -{\ - r = X;\ - if (r < 0)\ - fail("error in %d: %s\n", __LINE__, gnutls_strerror(r));\ -}\ +#define CHECK(X) \ + { \ + r = X; \ + if (r < 0) \ + fail("error in %d: %s\n", __LINE__, \ + gnutls_strerror(r)); \ + } void doit(void) { @@ -185,8 +188,8 @@ void doit(void) } // Import certificates CHECK(gnutls_x509_crt_init(&rca_cert)); - CHECK(gnutls_x509_crt_import - (rca_cert, &rca_datum, GNUTLS_X509_FMT_PEM)); + CHECK(gnutls_x509_crt_import(rca_cert, &rca_datum, + GNUTLS_X509_FMT_PEM)); CHECK(gnutls_x509_crt_init(&ca_cert)); CHECK(gnutls_x509_crt_import(ca_cert, &ca_datum, GNUTLS_X509_FMT_PEM)); CHECK(gnutls_x509_crt_init(&ee_cert)); @@ -194,8 +197,8 @@ void doit(void) // Setup trust store CHECK(gnutls_x509_trust_list_init(&tlist, 0)); - CHECK(gnutls_x509_trust_list_add_named_crt - (tlist, rca_cert, "rca", 3, 0)); + CHECK(gnutls_x509_trust_list_add_named_crt(tlist, rca_cert, "rca", 3, + 0)); CHECK(gnutls_x509_trust_list_add_named_crt(tlist, ca_cert, "ca", 2, 0)); CHECK(gnutls_x509_trust_list_add_named_crt(tlist, ee_cert, "ee", 2, 0)); diff --git a/tests/pkcs7.c b/tests/pkcs7.c index 11bb2f121d..dfd5f48c36 100644 --- a/tests/pkcs7.c +++ b/tests/pkcs7.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include @@ -40,7 +40,7 @@ #define CERT_DIR "pkcs7-interesting" -static int getnextfile(DIR ** dirp, gnutls_datum_t * der, int *exp_ret) +static int getnextfile(DIR **dirp, gnutls_datum_t *der, int *exp_ret) { struct dirent *d; char path[256]; @@ -67,7 +67,7 @@ static int getnextfile(DIR ** dirp, gnutls_datum_t * der, int *exp_ret) #ifdef _DIRENT_HAVE_D_TYPE && d->d_type == DT_REG #endif - ) { + ) { if (strstr(d->d_name, ".der") == 0) continue; if (strstr(d->d_name, ".err") != 0) @@ -85,7 +85,7 @@ static int getnextfile(DIR ** dirp, gnutls_datum_t * der, int *exp_ret) d->d_name); success("Loading errfile %s\n", path); ret = gnutls_load_file(path, &local); - if (ret < 0) { /* not found assume success */ + if (ret < 0) { /* not found assume success */ *exp_ret = 0; } else { *exp_ret = atoi((char *)local.data); @@ -98,7 +98,7 @@ static int getnextfile(DIR ** dirp, gnutls_datum_t * der, int *exp_ret) } while (d != NULL); closedir(*dirp); - return -1; /* finished */ + return -1; /* finished */ } void doit(void) @@ -125,9 +125,8 @@ void doit(void) if (ret == 0) { /* attempt to fully decode */ gnutls_datum_t out; - ret = - gnutls_pkcs7_print(cert, GNUTLS_CRT_PRINT_FULL, - &out); + ret = gnutls_pkcs7_print(cert, GNUTLS_CRT_PRINT_FULL, + &out); if (ret < 0) { fail("print: %s\n", gnutls_strerror(ret)); } diff --git a/tests/pkcs8-key-decode-encrypted.c b/tests/pkcs8-key-decode-encrypted.c index 9afb75ad6b..59f9768d07 100644 --- a/tests/pkcs8-key-decode-encrypted.c +++ b/tests/pkcs8-key-decode-encrypted.c @@ -27,38 +27,35 @@ #include "utils.h" -#define PRIVATE_KEY \ - "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" \ +#define PRIVATE_KEY \ + "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" \ "MIHeMEkGCSqGSIb3DQEFDTA8MBsGCSqGSIb3DQEFDDAOBAiebBrnqPv4owICCAAw\n" \ "HQYJYIZIAWUDBAEqBBBykFR6i1My/DYFBYrz1lmABIGQ3XGpp3+v/ENC1S+X7Ay6\n" \ "JoquYKuMw6yUmWoGFvPIPA9UWqMve2Uj4l2l96Sywd6iNFP63ow6pIq4wUP6REuY\n" \ "ZhCgoAOQomeFqhAhkw6QJCygp5vw2rh9OZ5tiP/Ko6IDTA2rSas91nepHpQOb247\n" \ - "zta5XzXb5TRkBsVU8tAPADP+wS/vBCS05ne1wmhdD6c6\n" \ + "zta5XzXb5TRkBsVU8tAPADP+wS/vBCS05ne1wmhdD6c6\n" \ "-----END ENCRYPTED PRIVATE KEY-----\n" static int test_decode(void) { gnutls_x509_privkey_t key; - const gnutls_datum_t data = { - (unsigned char *)PRIVATE_KEY, - strlen(PRIVATE_KEY) - }; + const gnutls_datum_t data = { (unsigned char *)PRIVATE_KEY, + strlen(PRIVATE_KEY) }; int err; if ((err = gnutls_x509_privkey_init(&key)) < 0) { fail("Failed to init key %s\n", gnutls_strerror(err)); } - err = gnutls_x509_privkey_import_pkcs8(key, &data, - GNUTLS_X509_FMT_PEM, "", 0); + err = gnutls_x509_privkey_import_pkcs8(key, &data, GNUTLS_X509_FMT_PEM, + "", 0); if (err != GNUTLS_E_DECRYPTION_FAILED) { fail("Unexpected error code: %s/%d\n", gnutls_strerror(err), err); } - err = gnutls_x509_privkey_import_pkcs8(key, &data, - GNUTLS_X509_FMT_PEM, "password", - 0); + err = gnutls_x509_privkey_import_pkcs8(key, &data, GNUTLS_X509_FMT_PEM, + "password", 0); if (err != 0) { fail("Unexpected error code: %s\n", gnutls_strerror(err)); } diff --git a/tests/pkcs8-key-decode.c b/tests/pkcs8-key-decode.c index 177d0aa795..f8b5b8e729 100644 --- a/tests/pkcs8-key-decode.c +++ b/tests/pkcs8-key-decode.c @@ -27,33 +27,31 @@ #include "utils.h" -#define PRIVATE_KEY \ - "-----BEGIN PRIVATE KEY-----\n" \ - "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALVcr\n" \ - "BL40Tm6yq88FBhJNw1aaoCjmtg0l4dWQZ/e9Fimx4ARxFpT+ji4FE\n" \ - "Cgl9s/SGqC+1nvlkm9ViSo0j7MKDbnDB+VRHDvMAzQhA2X7e8M0n9\n" \ - "rPolUY2lIVC83q0BBaOBkCj2RSmT2xTEbbC2xLukSrg2WP/ihVOxc\n" \ - "kXRuyFtzAgMBAAECgYB7slBexDwXrtItAMIH6m/U+LUpNe0Xx48OL\n" \ - "IOn4a4whNgO/o84uIwygUK27ZGFZT0kAGAk8CdF9hA6ArcbQ62s1H\n" \ - "myxrUbF9/mrLsQw1NEqpuUk9Ay2Tx5U/wPx35S3W/X2AvR/ZpTnCn\n" \ - "2q/7ym9fyiSoj86drD7BTvmKXlOnOwQJBAPOFMp4mMa9NGpGuEssO\n" \ - "m3Uwbp6lhcP0cA9MK+iOmeANpoKWfBdk5O34VbmeXnGYWEkrnX+9J\n" \ - "bM4wVhnnBWtgBMCQQC+qAEmvwcfhauERKYznMVUVksyeuhxhCe7EK\n" \ - "mPh+U2+g0WwdKvGDgO0PPt1gq0ILEjspMDeMHVdTwkaVBo/uMhAkA\n" \ - "Z5SsZyCP2aTOPFDypXRdI4eqRcjaEPOUBq27r3uYb/jeboVb2weLa\n" \ - "L1MmVuHiIHoa5clswPdWVI2y0em2IGoDAkBPSp/v9VKJEZabk9Frd\n" \ - "a+7u4fanrM9QrEjY3KhduslSilXZZSxrWjjAJPyPiqFb3M8XXA26W\n" \ - "nz1KYGnqYKhLcBAkB7dt57n9xfrhDpuyVEv+Uv1D3VVAhZlsaZ5Pp\n" \ - "dcrhrkJn2sa/+O8OKvdrPSeeu/N5WwYhJf61+CPoenMp7IFci\n" \ - "-----END PRIVATE KEY-----\n" +#define PRIVATE_KEY \ + "-----BEGIN PRIVATE KEY-----\n" \ + "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALVcr\n" \ + "BL40Tm6yq88FBhJNw1aaoCjmtg0l4dWQZ/e9Fimx4ARxFpT+ji4FE\n" \ + "Cgl9s/SGqC+1nvlkm9ViSo0j7MKDbnDB+VRHDvMAzQhA2X7e8M0n9\n" \ + "rPolUY2lIVC83q0BBaOBkCj2RSmT2xTEbbC2xLukSrg2WP/ihVOxc\n" \ + "kXRuyFtzAgMBAAECgYB7slBexDwXrtItAMIH6m/U+LUpNe0Xx48OL\n" \ + "IOn4a4whNgO/o84uIwygUK27ZGFZT0kAGAk8CdF9hA6ArcbQ62s1H\n" \ + "myxrUbF9/mrLsQw1NEqpuUk9Ay2Tx5U/wPx35S3W/X2AvR/ZpTnCn\n" \ + "2q/7ym9fyiSoj86drD7BTvmKXlOnOwQJBAPOFMp4mMa9NGpGuEssO\n" \ + "m3Uwbp6lhcP0cA9MK+iOmeANpoKWfBdk5O34VbmeXnGYWEkrnX+9J\n" \ + "bM4wVhnnBWtgBMCQQC+qAEmvwcfhauERKYznMVUVksyeuhxhCe7EK\n" \ + "mPh+U2+g0WwdKvGDgO0PPt1gq0ILEjspMDeMHVdTwkaVBo/uMhAkA\n" \ + "Z5SsZyCP2aTOPFDypXRdI4eqRcjaEPOUBq27r3uYb/jeboVb2weLa\n" \ + "L1MmVuHiIHoa5clswPdWVI2y0em2IGoDAkBPSp/v9VKJEZabk9Frd\n" \ + "a+7u4fanrM9QrEjY3KhduslSilXZZSxrWjjAJPyPiqFb3M8XXA26W\n" \ + "nz1KYGnqYKhLcBAkB7dt57n9xfrhDpuyVEv+Uv1D3VVAhZlsaZ5Pp\n" \ + "dcrhrkJn2sa/+O8OKvdrPSeeu/N5WwYhJf61+CPoenMp7IFci\n" \ + "-----END PRIVATE KEY-----\n" static int test_load(void) { gnutls_x509_privkey_t key; - const gnutls_datum_t data = { - (unsigned char *)PRIVATE_KEY, - strlen(PRIVATE_KEY) - }; + const gnutls_datum_t data = { (unsigned char *)PRIVATE_KEY, + strlen(PRIVATE_KEY) }; int err; if ((err = gnutls_x509_privkey_init(&key)) < 0) { diff --git a/tests/post-client-hello-change-prio.c b/tests/post-client-hello-change-prio.c index 6999cbe617..7a25cd5b90 100644 --- a/tests/post-client-hello-change-prio.c +++ b/tests/post-client-hello-change-prio.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -44,8 +44,8 @@ const char *override_prio = NULL; static int post_client_hello_callback(gnutls_session_t session) { if (override_prio) { - assert(gnutls_priority_set_direct(session, override_prio, NULL) - >= 0); + assert(gnutls_priority_set_direct(session, override_prio, + NULL) >= 0); } pch_ok = 1; return 0; @@ -56,9 +56,8 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -static -void start(const char *name, const char *client_prio, const char *server_prio, - int expected) +static void start(const char *name, const char *client_prio, + const char *server_prio, int expected) { /* Server stuff. */ gnutls_certificate_credentials_t serverx509cred; @@ -81,8 +80,8 @@ void start(const char *name, const char *client_prio, const char *server_prio, /* Init server */ assert(gnutls_certificate_allocate_credentials(&serverx509cred) >= 0); - assert(gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, + assert(gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM) >= 0); assert(gnutls_init(&server, GNUTLS_SERVER) >= 0); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); @@ -90,8 +89,8 @@ void start(const char *name, const char *client_prio, const char *server_prio, gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); gnutls_transport_set_ptr(server, server); - gnutls_handshake_set_post_client_hello_function(server, - post_client_hello_callback); + gnutls_handshake_set_post_client_hello_function( + server, post_client_hello_callback); assert(gnutls_certificate_allocate_credentials(&clientx509cred) >= 0); assert(gnutls_init(&client, GNUTLS_CLIENT) >= 0); @@ -149,9 +148,8 @@ void doit(void) "NORMAL:-VERS-ALL:+VERS-TLS1.2", "NORMAL:-VERS-TLS1.2:-VERS-TLS1.1:-VERS-TLS1.0:-VERS-SSL3.0", -1); override_prio = "NORMAL:-VERS-ALL:+VERS-TLS1.2"; - start - ("client tls1.2-only, server tls1.2-disabled initially, but allow it afterwards", - "NORMAL:-VERS-ALL:+VERS-TLS1.2", - "NORMAL:-VERS-TLS1.2:-VERS-TLS1.1:-VERS-TLS1.0:-VERS-SSL3.0", - GNUTLS_TLS1_2); + start("client tls1.2-only, server tls1.2-disabled initially, but allow it afterwards", + "NORMAL:-VERS-ALL:+VERS-TLS1.2", + "NORMAL:-VERS-TLS1.2:-VERS-TLS1.1:-VERS-TLS1.0:-VERS-SSL3.0", + GNUTLS_TLS1_2); } diff --git a/tests/prf.c b/tests/prf.c index a2987ca187..f4b8af5158 100644 --- a/tests/prf.c +++ b/tests/prf.c @@ -18,7 +18,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,18 +33,18 @@ int main(int argc, char **argv) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" static void terminate(void); @@ -66,94 +66,89 @@ static void client_log_func(int level, const char *str) static pid_t child; static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIDIzCCAgugAwIBAgIMUz8PCR2sdRK56V6OMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTEwIhgPMjAxNDA0MDQxOTU5MDVaGA85OTk5MTIzMTIzNTk1OVow\n" - "EzERMA8GA1UEAxMIc2VydmVyLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" - "AoIBAQDZ3dCzh9gOTOiOb2dtrPu91fYYgC/ey0ACYjQxaru7FZwnuXPhQK9KHsIV\n" - "YRIyo49wjKZddkHet2sbpFAAeETZh8UUWLRb/mupyaSJMycaYCNjLZCUJTztvXxJ\n" - "CCNfbtgvKC+Vu1mu94KBPatslgvnsamH7AiL5wmwRRqdH/Z93XaEvuRG6Zk0Sh9q\n" - "ZMdCboGfjtmGEJ1V+z5CR+IyH4sckzd8WJW6wBSEwgliGaXnc75xKtFWBZV2njNr\n" - "8V1TOYOdLEbiF4wduVExL5TKq2ywNkRpUfK2I1BcWS5D9Te/QT7aSdE08rL6ztmZ\n" - "IhILSrMOfoLnJ4lzXspz3XLlEuhnAgMBAAGjdzB1MAwGA1UdEwEB/wQCMAAwFAYD\n" - "VR0RBA0wC4IJbG9jYWxob3N0MA8GA1UdDwEB/wQFAwMHoAAwHQYDVR0OBBYEFJXR\n" - "raRS5MVhEqaRE42A3S2BIj7UMB8GA1UdIwQYMBaAFP6S7AyMRO2RfkANgo8YsCl8\n" - "JfJkMA0GCSqGSIb3DQEBCwUAA4IBAQCQ62+skMVZYrGbpab8RI9IG6xH8kEndvFj\n" - "J7wBBZCOlcjOj+HQ7a2buF5zGKRwAOSznKcmvZ7l5DPdsd0t5/VT9LKSbQ6+CfGr\n" - "Xs5qPaDJnRhZkOILCvXJ9qyO+79WNMsg9pWnxkTK7aWR5OYE+1Qw1jG681HMkWTm\n" - "nt7et9bdiNNpvA+L55569XKbdtJLs3hn5gEQFgS7EaEj59aC4vzSTFcidowCoa43\n" - "7JmfSfC9YaAIFH2vriyU0QNf2y7cG5Hpkge+U7uMzQrsT77Q3SDB9WkyPAFNSB4Q\n" - "B/r+OtZXOnQhLlMV7h4XGlWruFEaOBVjFHSdMGUh+DtaLvd1bVXI\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIDATCCAemgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTQwNDA0MTk1OTA1WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDvhyQfsUm3T0xK\n" - "jiBXO3H6Y27b7lmCRYZQCmXCl2sUsGDL7V9biavTt3+sorWtH542/cTGDh5n8591\n" - "7rVxAB/VASmN55O3fjZyFGrjusjhXBla0Yxe5rZ/7/Pjrq84T7gc/IXiX9Sums/c\n" - "o9AeoykfhsjV2ubhh4h+8uPsHDTcAFTxq3mQaoldwnW2nmjDFzaKLtQdnyFf41o6\n" - "nsJCK/J9PtpdCID5Zb+eQfu5Yhk1iUHe8a9TOstCHtgBq61YzufDHUQk3zsT+VZM\n" - "20lDvSBnHdWLjxoea587JbkvtH8xRR8ThwABSb98qPnhJ8+A7mpO89QO1wxZM85A\n" - "xEweQlMHAgMBAAGjZDBiMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" - "ADAdBgNVHQ4EFgQU/pLsDIxE7ZF+QA2CjxiwKXwl8mQwHwYDVR0jBBgwFoAUGD0R\n" - "Yr2H7kfjQUcBMxSTCDQnhu0wDQYJKoZIhvcNAQELBQADggEBANEXLUV+Z1PGTn7M\n" - "3rPT/m/EamcrZJ3vFWrnfN91ws5llyRUKNhx6222HECh3xRSxH9YJONsbv2zY6sd\n" - "ztY7lvckL4xOgWAjoCVTx3hqbZjDxpLRsvraw1PlqBHlRQVWLKlEQ55+tId2zgMX\n" - "Z+wxM7FlU/6yWVPODIxrqYQd2KqaEp4aLIklw6Hi4HD6DnQJikjsJ6Noe0qyX1Tx\n" - "uZ8mgP/G47Fe2d2H29kJ1iJ6hp1XOqyWrVIh/jONcnTvWS8aMqS3MU0EJH2Pb1Qa\n" - "KGIvbd/3H9LykFTP/b7Imdv2fZxXIK8jC+jbF1w6rdBCVNA0p30X/jonoC3vynEK\n" - "5cK0cgs=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIIDIzCCAgugAwIBAgIMUz8PCR2sdRK56V6OMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTEwIhgPMjAxNDA0MDQxOTU5MDVaGA85OTk5MTIzMTIzNTk1OVow\n" + "EzERMA8GA1UEAxMIc2VydmVyLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" + "AoIBAQDZ3dCzh9gOTOiOb2dtrPu91fYYgC/ey0ACYjQxaru7FZwnuXPhQK9KHsIV\n" + "YRIyo49wjKZddkHet2sbpFAAeETZh8UUWLRb/mupyaSJMycaYCNjLZCUJTztvXxJ\n" + "CCNfbtgvKC+Vu1mu94KBPatslgvnsamH7AiL5wmwRRqdH/Z93XaEvuRG6Zk0Sh9q\n" + "ZMdCboGfjtmGEJ1V+z5CR+IyH4sckzd8WJW6wBSEwgliGaXnc75xKtFWBZV2njNr\n" + "8V1TOYOdLEbiF4wduVExL5TKq2ywNkRpUfK2I1BcWS5D9Te/QT7aSdE08rL6ztmZ\n" + "IhILSrMOfoLnJ4lzXspz3XLlEuhnAgMBAAGjdzB1MAwGA1UdEwEB/wQCMAAwFAYD\n" + "VR0RBA0wC4IJbG9jYWxob3N0MA8GA1UdDwEB/wQFAwMHoAAwHQYDVR0OBBYEFJXR\n" + "raRS5MVhEqaRE42A3S2BIj7UMB8GA1UdIwQYMBaAFP6S7AyMRO2RfkANgo8YsCl8\n" + "JfJkMA0GCSqGSIb3DQEBCwUAA4IBAQCQ62+skMVZYrGbpab8RI9IG6xH8kEndvFj\n" + "J7wBBZCOlcjOj+HQ7a2buF5zGKRwAOSznKcmvZ7l5DPdsd0t5/VT9LKSbQ6+CfGr\n" + "Xs5qPaDJnRhZkOILCvXJ9qyO+79WNMsg9pWnxkTK7aWR5OYE+1Qw1jG681HMkWTm\n" + "nt7et9bdiNNpvA+L55569XKbdtJLs3hn5gEQFgS7EaEj59aC4vzSTFcidowCoa43\n" + "7JmfSfC9YaAIFH2vriyU0QNf2y7cG5Hpkge+U7uMzQrsT77Q3SDB9WkyPAFNSB4Q\n" + "B/r+OtZXOnQhLlMV7h4XGlWruFEaOBVjFHSdMGUh+DtaLvd1bVXI\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIDATCCAemgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwNDA0MTk1OTA1WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDvhyQfsUm3T0xK\n" + "jiBXO3H6Y27b7lmCRYZQCmXCl2sUsGDL7V9biavTt3+sorWtH542/cTGDh5n8591\n" + "7rVxAB/VASmN55O3fjZyFGrjusjhXBla0Yxe5rZ/7/Pjrq84T7gc/IXiX9Sums/c\n" + "o9AeoykfhsjV2ubhh4h+8uPsHDTcAFTxq3mQaoldwnW2nmjDFzaKLtQdnyFf41o6\n" + "nsJCK/J9PtpdCID5Zb+eQfu5Yhk1iUHe8a9TOstCHtgBq61YzufDHUQk3zsT+VZM\n" + "20lDvSBnHdWLjxoea587JbkvtH8xRR8ThwABSb98qPnhJ8+A7mpO89QO1wxZM85A\n" + "xEweQlMHAgMBAAGjZDBiMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" + "ADAdBgNVHQ4EFgQU/pLsDIxE7ZF+QA2CjxiwKXwl8mQwHwYDVR0jBBgwFoAUGD0R\n" + "Yr2H7kfjQUcBMxSTCDQnhu0wDQYJKoZIhvcNAQELBQADggEBANEXLUV+Z1PGTn7M\n" + "3rPT/m/EamcrZJ3vFWrnfN91ws5llyRUKNhx6222HECh3xRSxH9YJONsbv2zY6sd\n" + "ztY7lvckL4xOgWAjoCVTx3hqbZjDxpLRsvraw1PlqBHlRQVWLKlEQ55+tId2zgMX\n" + "Z+wxM7FlU/6yWVPODIxrqYQd2KqaEp4aLIklw6Hi4HD6DnQJikjsJ6Noe0qyX1Tx\n" + "uZ8mgP/G47Fe2d2H29kJ1iJ6hp1XOqyWrVIh/jONcnTvWS8aMqS3MU0EJH2Pb1Qa\n" + "KGIvbd/3H9LykFTP/b7Imdv2fZxXIK8jC+jbF1w6rdBCVNA0p30X/jonoC3vynEK\n" + "5cK0cgs=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIEpQIBAAKCAQEA2d3Qs4fYDkzojm9nbaz7vdX2GIAv3stAAmI0MWq7uxWcJ7lz\n" - "4UCvSh7CFWESMqOPcIymXXZB3rdrG6RQAHhE2YfFFFi0W/5rqcmkiTMnGmAjYy2Q\n" - "lCU87b18SQgjX27YLygvlbtZrveCgT2rbJYL57Gph+wIi+cJsEUanR/2fd12hL7k\n" - "RumZNEofamTHQm6Bn47ZhhCdVfs+QkfiMh+LHJM3fFiVusAUhMIJYhml53O+cSrR\n" - "VgWVdp4za/FdUzmDnSxG4heMHblRMS+UyqtssDZEaVHytiNQXFkuQ/U3v0E+2knR\n" - "NPKy+s7ZmSISC0qzDn6C5yeJc17Kc91y5RLoZwIDAQABAoIBAQCRXAu5HPOsZufq\n" - "0K2DYZz9BdqSckR+M8HbVUZZiksDAeIUJwoHyi6qF2eK+B86JiK4Bz+gsBw2ys3t\n" - "vW2bQqM9N/boIl8D2fZfbCgZWkXGtUonC+mgzk+el4Rq/cEMFVqr6/YDwuKNeJpc\n" - "PJc5dcsvpTvlcjgpj9bJAvJEz2SYiIUpvtG4WNMGGapVZZPDvWn4/isY+75T5oDf\n" - "1X5jG0lN9uoUjcuGuThN7gxjwlRkcvEOPHjXc6rxfrWIDdiz/91V46PwpqVDpRrg\n" - "ig6U7+ckS0Oy2v32x0DaDhwAfDJ2RNc9az6Z+11lmY3LPkjG/p8Klcmgvt4/lwkD\n" - "OYRC5QGRAoGBAPFdud6nmVt9h1DL0o4R6snm6P3K81Ds765VWVmpzJkK3+bwe4PQ\n" - "GQQ0I0zN4hXkDMwHETS+EVWllqkK/d4dsE3volYtyTti8zthIATlgSEJ81x/ChAQ\n" - "vvXxgx+zPUnb1mUwy+X+6urTHe4bxN2ypg6ROIUmT+Hx1ITG40LRRiPTAoGBAOcT\n" - "WR8DTrj42xbxAUpz9vxJ15ZMwuIpk3ShE6+CWqvaXHF22Ju4WFwRNlW2zVLH6UMt\n" - "nNfOzyDoryoiu0+0mg0wSmgdJbtCSHoI2GeiAnjGn5i8flQlPQ8bdwwmU6g6I/EU\n" - "QRbGK/2XLmlrGN52gVy9UX0NsAA5fEOsAJiFj1CdAoGBAN9i3nbq6O2bNVSa/8mL\n" - "XaD1vGe/oQgh8gaIaYSpuXlfbjCAG+C4BZ81XgJkfj3CbfGbDNqimsqI0fKsAJ/F\n" - "HHpVMgrOn3L+Np2bW5YMj0Fzwy+1SCvsQ8C+gJwjOLMV6syGp/+6udMSB55rRv3k\n" - "rPnIf+YDumUke4tTw9wAcgkPAoGASHMkiji7QfuklbjSsslRMyDj21gN8mMevH6U\n" - "cX7pduBsA5dDqu9NpPAwnQdHsSDE3i868d8BykuqQAfLut3hPylY6vPYlLHfj4Oe\n" - "dj+xjrSX7YeMBE34qvfth32s1R4FjtzO25keyc/Q2XSew4FcZftlxVO5Txi3AXC4\n" - "bxnRKXECgYEAva+og7/rK+ZjboJVNxhFrwHp9bXhz4tzrUaWNvJD2vKJ5ZcThHcX\n" - "zCig8W7eXHLPLDhi9aWZ3kUZ1RLhrFc/6dujtVtU9z2w1tmn1I+4Zi6D6L4DzKdg\n" - "nMRLFoXufs/qoaJTqa8sQvKa+ceJAF04+gGtw617cuaZdZ3SYRLR2dk=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; - -static const -gnutls_datum_t hrnd = { (void *) - "\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIIEpQIBAAKCAQEA2d3Qs4fYDkzojm9nbaz7vdX2GIAv3stAAmI0MWq7uxWcJ7lz\n" + "4UCvSh7CFWESMqOPcIymXXZB3rdrG6RQAHhE2YfFFFi0W/5rqcmkiTMnGmAjYy2Q\n" + "lCU87b18SQgjX27YLygvlbtZrveCgT2rbJYL57Gph+wIi+cJsEUanR/2fd12hL7k\n" + "RumZNEofamTHQm6Bn47ZhhCdVfs+QkfiMh+LHJM3fFiVusAUhMIJYhml53O+cSrR\n" + "VgWVdp4za/FdUzmDnSxG4heMHblRMS+UyqtssDZEaVHytiNQXFkuQ/U3v0E+2knR\n" + "NPKy+s7ZmSISC0qzDn6C5yeJc17Kc91y5RLoZwIDAQABAoIBAQCRXAu5HPOsZufq\n" + "0K2DYZz9BdqSckR+M8HbVUZZiksDAeIUJwoHyi6qF2eK+B86JiK4Bz+gsBw2ys3t\n" + "vW2bQqM9N/boIl8D2fZfbCgZWkXGtUonC+mgzk+el4Rq/cEMFVqr6/YDwuKNeJpc\n" + "PJc5dcsvpTvlcjgpj9bJAvJEz2SYiIUpvtG4WNMGGapVZZPDvWn4/isY+75T5oDf\n" + "1X5jG0lN9uoUjcuGuThN7gxjwlRkcvEOPHjXc6rxfrWIDdiz/91V46PwpqVDpRrg\n" + "ig6U7+ckS0Oy2v32x0DaDhwAfDJ2RNc9az6Z+11lmY3LPkjG/p8Klcmgvt4/lwkD\n" + "OYRC5QGRAoGBAPFdud6nmVt9h1DL0o4R6snm6P3K81Ds765VWVmpzJkK3+bwe4PQ\n" + "GQQ0I0zN4hXkDMwHETS+EVWllqkK/d4dsE3volYtyTti8zthIATlgSEJ81x/ChAQ\n" + "vvXxgx+zPUnb1mUwy+X+6urTHe4bxN2ypg6ROIUmT+Hx1ITG40LRRiPTAoGBAOcT\n" + "WR8DTrj42xbxAUpz9vxJ15ZMwuIpk3ShE6+CWqvaXHF22Ju4WFwRNlW2zVLH6UMt\n" + "nNfOzyDoryoiu0+0mg0wSmgdJbtCSHoI2GeiAnjGn5i8flQlPQ8bdwwmU6g6I/EU\n" + "QRbGK/2XLmlrGN52gVy9UX0NsAA5fEOsAJiFj1CdAoGBAN9i3nbq6O2bNVSa/8mL\n" + "XaD1vGe/oQgh8gaIaYSpuXlfbjCAG+C4BZ81XgJkfj3CbfGbDNqimsqI0fKsAJ/F\n" + "HHpVMgrOn3L+Np2bW5YMj0Fzwy+1SCvsQ8C+gJwjOLMV6syGp/+6udMSB55rRv3k\n" + "rPnIf+YDumUke4tTw9wAcgkPAoGASHMkiji7QfuklbjSsslRMyDj21gN8mMevH6U\n" + "cX7pduBsA5dDqu9NpPAwnQdHsSDE3i868d8BykuqQAfLut3hPylY6vPYlLHfj4Oe\n" + "dj+xjrSX7YeMBE34qvfth32s1R4FjtzO25keyc/Q2XSew4FcZftlxVO5Txi3AXC4\n" + "bxnRKXECgYEAva+og7/rK+ZjboJVNxhFrwHp9bXhz4tzrUaWNvJD2vKJ5ZcThHcX\n" + "zCig8W7eXHLPLDhi9aWZ3kUZ1RLhrFc/6dujtVtU9z2w1tmn1I+4Zi6D6L4DzKdg\n" + "nMRLFoXufs/qoaJTqa8sQvKa+ceJAF04+gGtw617cuaZdZ3SYRLR2dk=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; + +static const gnutls_datum_t hrnd = { + (void *)"\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 32 }; -static const -gnutls_datum_t hsrnd = { (void *) - "\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", +static const gnutls_datum_t hsrnd = { + (void *)"\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 32 }; -static void dump(const char *name, const uint8_t * data, unsigned data_size) +static void dump(const char *name, const uint8_t *data, unsigned data_size) { unsigned i; @@ -163,44 +158,51 @@ static void dump(const char *name, const uint8_t * data, unsigned data_size) fprintf(stderr, "\n"); } -static gnutls_datum_t master = { (void *) - "\x44\x66\x44\xa9\xb6\x29\xed\x6e\xd6\x93\x15\xdb\xf0\x7d\x4b\x2e\x18\xb1\x9d\xed\xff\x6a\x86\x76\xc9\x0e\x16\xab\xc2\x10\xbb\x17\x99\x24\xb1\xd9\xb9\x95\xe7\xea\xea\xea\xea\xea\xff\xaa\xac", +static gnutls_datum_t master = { + (void *)"\x44\x66\x44\xa9\xb6\x29\xed\x6e\xd6\x93\x15\xdb\xf0\x7d\x4b\x2e\x18\xb1\x9d\xed\xff\x6a\x86\x76\xc9\x0e\x16\xab\xc2\x10\xbb\x17\x99\x24\xb1\xd9\xb9\x95\xe7\xea\xea\xea\xea\xea\xff\xaa\xac", 48 }; static gnutls_datum_t sess_id = { (void *)"\xd9\xb9\x95\xe7\xea", 5 }; -# define TRY(label_size, label, extra_size, extra, size, exp) \ - { \ - ret = gnutls_prf_rfc5705(session, label_size, label, extra_size, extra, size, \ - (void*)key_material); \ - if (ret < 0) { \ - fprintf(stderr, "gnutls_prf_rfc5705: error in %d\n", __LINE__); \ - gnutls_perror(ret); \ - exit(1); \ - } \ - if (memcmp(key_material, exp, size) != 0) { \ - fprintf(stderr, "gnutls_prf_rfc5705: output doesn't match for '%s'\n", label); \ - dump("got ", key_material, size); \ - dump("expected ", exp, size); \ - exit(1); \ - } \ +#define TRY(label_size, label, extra_size, extra, size, exp) \ + { \ + ret = gnutls_prf_rfc5705(session, label_size, label, \ + extra_size, extra, size, \ + (void *)key_material); \ + if (ret < 0) { \ + fprintf(stderr, "gnutls_prf_rfc5705: error in %d\n", \ + __LINE__); \ + gnutls_perror(ret); \ + exit(1); \ + } \ + if (memcmp(key_material, exp, size) != 0) { \ + fprintf(stderr, \ + "gnutls_prf_rfc5705: output doesn't match for '%s'\n", \ + label); \ + dump("got ", key_material, size); \ + dump("expected ", exp, size); \ + exit(1); \ + } \ } -# define TRY_OLD(label_size, label, extra_size, extra, size, exp) \ - { \ - ret = gnutls_prf(session, label_size, label, 1, extra_size, extra, size, \ - (void*)key_material); \ - if (ret < 0) { \ - fprintf(stderr, "gnutls_prf: error in %d\n", __LINE__); \ - gnutls_perror(ret); \ - exit(1); \ - } \ - if (memcmp(key_material, exp, size) != 0) { \ - fprintf(stderr, "gnutls_prf: output doesn't match for '%s'\n", label); \ - dump("got ", key_material, size); \ - dump("expected ", exp, size); \ - exit(1); \ - } \ +#define TRY_OLD(label_size, label, extra_size, extra, size, exp) \ + { \ + ret = gnutls_prf(session, label_size, label, 1, extra_size, \ + extra, size, (void *)key_material); \ + if (ret < 0) { \ + fprintf(stderr, "gnutls_prf: error in %d\n", \ + __LINE__); \ + gnutls_perror(ret); \ + exit(1); \ + } \ + if (memcmp(key_material, exp, size) != 0) { \ + fprintf(stderr, \ + "gnutls_prf: output doesn't match for '%s'\n", \ + label); \ + dump("got ", key_material, size); \ + dump("expected ", exp, size); \ + exit(1); \ + } \ } static void check_prfs(gnutls_session_t session) { @@ -208,19 +210,19 @@ static void check_prfs(gnutls_session_t session) unsigned char key_material2[512]; int ret; - TRY(13, "key expansion", 0, NULL, 34, (uint8_t *) - "\xcf\x3e\x1c\x03\x47\x1a\xdf\x4a\x8e\x74\xc6\xda\xcd\xda\x22\xa4\x8e\xa5\xf7\x62\xef\xd6\x47\xe7\x41\x20\xea\x44\xb8\x5d\x66\x87\x0a\x61"); - TRY(6, "hello", 0, NULL, 31, (uint8_t *) - "\x83\x6c\xc7\x8e\x1b\x62\xc7\x06\x17\x99\x37\x95\x2e\xb8\x42\x5c\x42\xcd\x75\x65\x2c\xa3\x16\x2b\xab\x0a\xcf\xfc\xc8\x90\x30"); - TRY(7, "context", 5, "abcd\xfa", 31, (uint8_t *) - "\x5b\xc7\x72\xe9\xda\xe4\x79\x3e\xfe\x9a\xc5\x6f\xf4\x8d\x5a\xfe\x4c\x8d\x16\xa7\xf0\x13\x13\xf1\x93\xdd\x4b\x43\x65\xc1\x94"); - TRY(12, "null-context", 0, "", 31, (uint8_t *) - "\xd7\xb6\xff\x3d\xf7\xbe\x0e\xf2\xd0\xbf\x55\x0b\x56\xac\xfb\x3c\x1d\x5c\xaa\xa8\x71\x45\xf5\xd5\x71\x35\xa2\x35\x83\xc2\xe0"); + TRY(13, "key expansion", 0, NULL, 34, + (uint8_t *)"\xcf\x3e\x1c\x03\x47\x1a\xdf\x4a\x8e\x74\xc6\xda\xcd\xda\x22\xa4\x8e\xa5\xf7\x62\xef\xd6\x47\xe7\x41\x20\xea\x44\xb8\x5d\x66\x87\x0a\x61"); + TRY(6, "hello", 0, NULL, 31, + (uint8_t *)"\x83\x6c\xc7\x8e\x1b\x62\xc7\x06\x17\x99\x37\x95\x2e\xb8\x42\x5c\x42\xcd\x75\x65\x2c\xa3\x16\x2b\xab\x0a\xcf\xfc\xc8\x90\x30"); + TRY(7, "context", 5, "abcd\xfa", 31, + (uint8_t *)"\x5b\xc7\x72\xe9\xda\xe4\x79\x3e\xfe\x9a\xc5\x6f\xf4\x8d\x5a\xfe\x4c\x8d\x16\xa7\xf0\x13\x13\xf1\x93\xdd\x4b\x43\x65\xc1\x94"); + TRY(12, "null-context", 0, "", 31, + (uint8_t *)"\xd7\xb6\xff\x3d\xf7\xbe\x0e\xf2\xd0\xbf\x55\x0b\x56\xac\xfb\x3c\x1d\x5c\xaa\xa8\x71\x45\xf5\xd5\x71\x35\xa2\x35\x83\xc2\xe0"); - TRY_OLD(6, "hello", 0, NULL, 31, (uint8_t *) - "\x53\x35\x9b\x1c\xbf\xf2\x50\x85\xa1\xbc\x42\xfb\x45\x92\xc3\xbe\x20\x24\x24\xe2\xeb\x6e\xf7\x4f\xc0\xee\xe3\xaa\x46\x36\xfd"); - TRY_OLD(7, "context", 5, "abcd\xfa", 31, (uint8_t *) - "\x5f\x75\xb7\x61\x76\x4c\x1e\x86\x4b\x7d\x2e\x6c\x09\x91\xfd\x1e\xe6\xe8\xee\xf9\x86\x6a\x80\xfe\xf3\xbe\x96\xd0\x47\xf5\x9e"); + TRY_OLD(6, "hello", 0, NULL, 31, + (uint8_t *)"\x53\x35\x9b\x1c\xbf\xf2\x50\x85\xa1\xbc\x42\xfb\x45\x92\xc3\xbe\x20\x24\x24\xe2\xeb\x6e\xf7\x4f\xc0\xee\xe3\xaa\x46\x36\xfd"); + TRY_OLD(7, "context", 5, "abcd\xfa", 31, + (uint8_t *)"\x5f\x75\xb7\x61\x76\x4c\x1e\x86\x4b\x7d\x2e\x6c\x09\x91\xfd\x1e\xe6\xe8\xee\xf9\x86\x6a\x80\xfe\xf3\xbe\x96\xd0\x47\xf5\x9e"); /* check whether gnutls_prf matches gnutls_prf_rfc5705 when no context is given */ ret = gnutls_prf(session, 4, "aaaa", 0, 0, NULL, 64, @@ -281,9 +283,10 @@ static void client(int fd) } /* Use default priorities */ - ret = gnutls_priority_set_direct(session, - "NONE:+VERS-TLS1.0:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-NULL:+RSA", - &err); + ret = gnutls_priority_set_direct( + session, + "NONE:+VERS-TLS1.0:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-NULL:+RSA", + &err); if (ret < 0) { fail("client: priority set failed (%s): %s\n", gnutls_strerror(ret), err); @@ -298,11 +301,10 @@ static void client(int fd) gnutls_handshake_set_random(session, &hrnd); gnutls_transport_set_int(session, fd); - if (gnutls_prf - (session, 4, "aaaa", 0, 0, NULL, sizeof(err), - (char *)&err) != GNUTLS_E_INVALID_REQUEST - || gnutls_prf_rfc5705(session, 4, "aaaa", 0, NULL, sizeof(err), - (char *)&err) != GNUTLS_E_INVALID_REQUEST) { + if (gnutls_prf(session, 4, "aaaa", 0, 0, NULL, sizeof(err), + (char *)&err) != GNUTLS_E_INVALID_REQUEST || + gnutls_prf_rfc5705(session, 4, "aaaa", 0, NULL, sizeof(err), + (char *)&err) != GNUTLS_E_INVALID_REQUEST) { fprintf(stderr, "unexpected prf error code\n"); exit(1); } @@ -311,8 +313,7 @@ static void client(int fd) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed: %s\n", strerror(ret)); @@ -324,8 +325,8 @@ static void client(int fd) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); ret = gnutls_cipher_get(session); if (ret != GNUTLS_CIPHER_AES_128_CBC) { @@ -394,9 +395,8 @@ static void server(int fd) /* avoid calling all the priority functions, since the defaults * are adequate. */ - ret = gnutls_priority_set_direct(session, - "NORMAL:-KX-ALL:+RSA:%NO_SESSION_HASH", - NULL); + ret = gnutls_priority_set_direct( + session, "NORMAL:-KX-ALL:+RSA:%NO_SESSION_HASH", NULL); if (ret < 0) { fail("server: priority set failed (%s)\n\n", gnutls_strerror(ret)); @@ -414,9 +414,8 @@ static void server(int fd) exit(1); } - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, serverx509cred); gnutls_handshake_set_random(session, &hsrnd); @@ -424,8 +423,7 @@ static void server(int fd) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -438,8 +436,8 @@ static void server(int fd) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* do not wait for the peer to close the connection. */ @@ -495,4 +493,4 @@ void doit(void) start(); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/priorities-groups.c b/tests/priorities-groups.c index a4fe228748..b75d03f065 100644 --- a/tests/priorities-groups.c +++ b/tests/priorities-groups.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,9 +30,9 @@ #include "utils.h" -static void -try_prio(const char *prio, unsigned group_size, const unsigned int *group_list, - unsigned curve_size, const unsigned int *curve_list) +static void try_prio(const char *prio, unsigned group_size, + const unsigned int *group_list, unsigned curve_size, + const unsigned int *curve_list) { int ret; gnutls_priority_t p; @@ -101,9 +101,9 @@ void doit(void) list1[2] = GNUTLS_GROUP_FFDHE2048; list2[0] = GNUTLS_ECC_CURVE_SECP256R1; list2[1] = GNUTLS_ECC_CURVE_SECP384R1; - try_prio - ("NORMAL:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-SECP384R1:+GROUP-FFDHE2048", - 3, list1, 2, list2); + try_prio( + "NORMAL:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-SECP384R1:+GROUP-FFDHE2048", + 3, list1, 2, list2); memset(list1, 0, sizeof(list1)); memset(list2, 0, sizeof(list2)); @@ -113,7 +113,7 @@ void doit(void) list1[3] = GNUTLS_GROUP_FFDHE3072; list2[0] = GNUTLS_ECC_CURVE_SECP521R1; list2[1] = GNUTLS_ECC_CURVE_SECP384R1; - try_prio - ("NORMAL:-CURVE-ALL:+CURVE-SECP521R1:+GROUP-SECP384R1:+GROUP-FFDHE2048:+GROUP-FFDHE3072", - 4, list1, 2, list2); + try_prio( + "NORMAL:-CURVE-ALL:+CURVE-SECP521R1:+GROUP-SECP384R1:+GROUP-FFDHE2048:+GROUP-FFDHE3072", + 4, list1, 2, list2); } diff --git a/tests/priorities.c b/tests/priorities.c index 45d187e542..738859f062 100644 --- a/tests/priorities.c +++ b/tests/priorities.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -31,9 +31,8 @@ #include "utils.h" -static void -try_prio(const char *prio, unsigned expected_cs, unsigned expected_ciphers, - unsigned line) +static void try_prio(const char *prio, unsigned expected_cs, + unsigned expected_ciphers, unsigned line) { int ret; gnutls_priority_t p; @@ -61,7 +60,6 @@ try_prio(const char *prio, unsigned expected_cs, unsigned expected_ciphers, count++; /* fprintf(stderr, "%s\n", gnutls_cipher_suite_info(si, NULL, NULL, NULL, NULL, NULL)); */ } - } ret = gnutls_priority_cipher_list(p, &t); @@ -114,7 +112,7 @@ void doit(void) int sec256_cs = 12; int normal_cs = 29; int pfs_cs = 23; - int null_normal_cs = 28; /* disables TLS1.3 CS */ + int null_normal_cs = 28; /* disables TLS1.3 CS */ int normal_ciphers = 7; if (gnutls_fips140_mode_enabled()) { @@ -131,10 +129,15 @@ void doit(void) if (!gnutls_fips140_mode_enabled()) { try_prio("PFS", pfs_cs, normal_ciphers, __LINE__); - try_prio("NORMAL:+CIPHER-ALL", normal_cs, 7, __LINE__); /* all (except null) */ - try_prio("NORMAL:-CIPHER-ALL:+NULL", null, 1, __LINE__); /* null */ - try_prio("NORMAL:-CIPHER-ALL:+NULL:+CIPHER-ALL", null_normal_cs, 8, __LINE__); /* should be null + all */ - try_prio("NORMAL:-CIPHER-ALL:+NULL:+CIPHER-ALL:-CIPHER-ALL:+AES-128-CBC", 4, 1, __LINE__); /* should be null + all */ + try_prio("NORMAL:+CIPHER-ALL", normal_cs, 7, + __LINE__); /* all (except null) */ + try_prio("NORMAL:-CIPHER-ALL:+NULL", null, 1, + __LINE__); /* null */ + try_prio("NORMAL:-CIPHER-ALL:+NULL:+CIPHER-ALL", null_normal_cs, + 8, __LINE__); /* should be null + all */ + try_prio( + "NORMAL:-CIPHER-ALL:+NULL:+CIPHER-ALL:-CIPHER-ALL:+AES-128-CBC", + 4, 1, __LINE__); /* should be null + all */ #ifdef ENABLE_GOST try_prio("NONE:+VERS-TLS1.2:+GOST", 1, 1, __LINE__); #endif @@ -143,17 +146,19 @@ void doit(void) try_prio("PERFORMANCE", normal_cs, normal_ciphers, __LINE__); try_prio("SECURE256", sec256_cs, 4, __LINE__); try_prio("SECURE128", sec128_cs, 7, __LINE__); - try_prio("SECURE128:+SECURE256", sec128_cs, 7, __LINE__); /* should be the same as SECURE128 */ - try_prio("SECURE128:+SECURE256:+NORMAL", normal_cs, 7, __LINE__); /* should be the same as NORMAL */ + try_prio("SECURE128:+SECURE256", sec128_cs, 7, + __LINE__); /* should be the same as SECURE128 */ + try_prio("SECURE128:+SECURE256:+NORMAL", normal_cs, 7, + __LINE__); /* should be the same as NORMAL */ try_prio("SUITEB192", 1, 1, __LINE__); try_prio("SUITEB128", 2, 2, __LINE__); /* check legacy strings */ try_prio("NORMAL:+RSA-EXPORT:+ARCFOUR-40", normal_cs, normal_ciphers, __LINE__); - try_prio_err - ("NORMAL:-VERS-ALL:+VERS-TLS1.2:-SIGN-ALL:+SIGN-ECDSA-SECP256R1-SHA256", - GNUTLS_E_NO_PRIORITIES_WERE_SET); + try_prio_err( + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-SIGN-ALL:+SIGN-ECDSA-SECP256R1-SHA256", + GNUTLS_E_NO_PRIORITIES_WERE_SET); try_prio_err("NORMAL:-VERS-ALL:+VERS-TLS1.2:-SIGN-ALL", GNUTLS_E_NO_PRIORITIES_WERE_SET); try_prio_err("NORMAL:-VERS-ALL:+VERS-DTLS1.2:-SIGN-ALL", diff --git a/tests/priority-init2.c b/tests/priority-init2.c index 3165fa0ad0..13fc6a1424 100644 --- a/tests/priority-init2.c +++ b/tests/priority-init2.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -83,8 +83,8 @@ static void start(struct test_st *test) gnutls_global_set_log_level(6); assert(gnutls_certificate_allocate_credentials(&serverx509cred) >= 0); - assert(gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, + assert(gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM) >= 0); assert(gnutls_init(&server, GNUTLS_SERVER) >= 0); @@ -94,15 +94,16 @@ static void start(struct test_st *test) if (ret < 0) fail("error: %s\n", gnutls_strerror(ret)); } else { - ret = - gnutls_priority_init2(&cache, test->add_prio, &ep, - GNUTLS_PRIORITY_INIT_DEF_APPEND); + ret = gnutls_priority_init2(&cache, test->add_prio, &ep, + GNUTLS_PRIORITY_INIT_DEF_APPEND); if (ret < 0) { if (test->exp_err == ret) { - if (strchr(_gnutls_default_priority_string, '@') - != 0) { + if (strchr(_gnutls_default_priority_string, + '@') != 0) { if (ep != test->add_prio) { - fail("error expected error on start of string[%d]: %s\n", test->err_pos, test->add_prio); + fail("error expected error on start of string[%d]: %s\n", + test->err_pos, + test->add_prio); } } else { if (ep - test->add_prio != @@ -110,7 +111,9 @@ static void start(struct test_st *test) fprintf(stderr, "diff: %d\n", (int)(ep - test->add_prio)); - fail("error expected error on different position[%d]: %s\n", test->err_pos, test->add_prio); + fail("error expected error on different position[%d]: %s\n", + test->err_pos, + test->add_prio); } } goto cleanup; @@ -129,9 +132,8 @@ static void start(struct test_st *test) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -169,8 +171,8 @@ static void start(struct test_st *test) if (test->exp_vers != gnutls_protocol_get_version(server)) { fail("expected version %s, got %s\n", gnutls_protocol_get_name(test->exp_vers), - gnutls_protocol_get_name - (gnutls_protocol_get_version(server))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(server))); } } @@ -247,7 +249,7 @@ static void start(struct test_st *test) gnutls_deinit(client); gnutls_certificate_free_credentials(clientx509cred); - cleanup: +cleanup: gnutls_priority_deinit(cache); gnutls_deinit(server); @@ -258,42 +260,36 @@ static void start(struct test_st *test) } struct test_st tests[] = { - { - .name = "additional flag", - .def_prio = "NORMAL", - .add_prio = "%FORCE_ETM", - .exp_err = 0}, - { - .name = "additional flag typo1", - .def_prio = "NORMAL", - .add_prio = ":%FORCE_ETM", - .exp_err = GNUTLS_E_INVALID_REQUEST, - .err_pos = 0}, - { - .name = "additional flag typo2", - .def_prio = "NORMAL", - .add_prio = "%FORCE_ETM::%NO_TICKETS", - .exp_err = GNUTLS_E_INVALID_REQUEST, - .err_pos = 11}, - { - .name = "additional flag typo3", - .def_prio = "NORMAL", - .add_prio = "%FORCE_ETM:%%NO_TICKETS", - .exp_err = GNUTLS_E_INVALID_REQUEST, - .err_pos = 11}, - { - .name = "additional flag typo3 (with resolved def prio)", - .def_prio = "@HELLO", - .add_prio = "%FORCE_ETM:%%NO_TICKETS", - .exp_err = GNUTLS_E_INVALID_REQUEST, - .err_pos = 0}, - { - .name = "additional flag for version (functional)", - .def_prio = "NORMAL", - .add_prio = "-VERS-ALL:+VERS-TLS1.1", - .exp_etm = 1, - .exp_err = 0, - .exp_vers = GNUTLS_TLS1_1} + { .name = "additional flag", + .def_prio = "NORMAL", + .add_prio = "%FORCE_ETM", + .exp_err = 0 }, + { .name = "additional flag typo1", + .def_prio = "NORMAL", + .add_prio = ":%FORCE_ETM", + .exp_err = GNUTLS_E_INVALID_REQUEST, + .err_pos = 0 }, + { .name = "additional flag typo2", + .def_prio = "NORMAL", + .add_prio = "%FORCE_ETM::%NO_TICKETS", + .exp_err = GNUTLS_E_INVALID_REQUEST, + .err_pos = 11 }, + { .name = "additional flag typo3", + .def_prio = "NORMAL", + .add_prio = "%FORCE_ETM:%%NO_TICKETS", + .exp_err = GNUTLS_E_INVALID_REQUEST, + .err_pos = 11 }, + { .name = "additional flag typo3 (with resolved def prio)", + .def_prio = "@HELLO", + .add_prio = "%FORCE_ETM:%%NO_TICKETS", + .exp_err = GNUTLS_E_INVALID_REQUEST, + .err_pos = 0 }, + { .name = "additional flag for version (functional)", + .def_prio = "NORMAL", + .add_prio = "-VERS-ALL:+VERS-TLS1.1", + .exp_etm = 1, + .exp_err = 0, + .exp_vers = GNUTLS_TLS1_1 } }; void doit(void) diff --git a/tests/priority-mix.c b/tests/priority-mix.c index 45181e18a7..20ea83cbaa 100644 --- a/tests/priority-mix.c +++ b/tests/priority-mix.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -41,7 +41,7 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1461671166; @@ -76,9 +76,8 @@ void doit(void) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); @@ -93,9 +92,8 @@ void doit(void) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -108,8 +106,8 @@ void doit(void) if (ret < 0) exit(1); - assert(gnutls_priority_set_direct(client, - "PFS:%PROFILE_ULTRA", NULL) >= 0); + assert(gnutls_priority_set_direct(client, "PFS:%PROFILE_ULTRA", NULL) >= + 0); assert(gnutls_priority_set_direct(client, "NORMAL", NULL) >= 0); gnutls_transport_set_push_function(client, client_push); gnutls_transport_set_pull_function(client, client_pull); @@ -132,9 +130,8 @@ void doit(void) { unsigned status; - ret = - gnutls_certificate_verify_peers3(client, "localhost", - &status); + ret = gnutls_certificate_verify_peers3(client, "localhost", + &status); if (ret < 0) { fail("could not verify certificate: %s\n", gnutls_strerror(ret)); diff --git a/tests/priority-set.c b/tests/priority-set.c index 81825628cf..f712f454d0 100644 --- a/tests/priority-set.c +++ b/tests/priority-set.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -45,7 +45,7 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1461671166; @@ -80,9 +80,8 @@ void doit(void) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); @@ -97,9 +96,8 @@ void doit(void) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); diff --git a/tests/priority-set2.c b/tests/priority-set2.c index c4c7ca63f9..421fdc9c36 100644 --- a/tests/priority-set2.c +++ b/tests/priority-set2.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -45,7 +45,7 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1461671166; @@ -80,9 +80,8 @@ void doit(void) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); @@ -97,9 +96,8 @@ void doit(void) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); diff --git a/tests/privkey-keygen.c b/tests/privkey-keygen.c index f7e6319479..6bc8059d37 100644 --- a/tests/privkey-keygen.c +++ b/tests/privkey-keygen.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -42,9 +42,9 @@ static int sec_param[MAX_TRIES] = #ifdef ENABLE_FIPS140 -{ GNUTLS_SEC_PARAM_MEDIUM, GNUTLS_SEC_PARAM_HIGH }; + { GNUTLS_SEC_PARAM_MEDIUM, GNUTLS_SEC_PARAM_HIGH }; #else -{ GNUTLS_SEC_PARAM_LOW, GNUTLS_SEC_PARAM_MEDIUM }; + { GNUTLS_SEC_PARAM_LOW, GNUTLS_SEC_PARAM_MEDIUM }; #endif static void tls_log_func(int level, const char *str) @@ -52,10 +52,7 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s |<%d>| %s", "privkey-keygen", level, str); } -const gnutls_datum_t raw_data = { - (void *)"hello there", - 11 -}; +const gnutls_datum_t raw_data = { (void *)"hello there", 11 }; static void sign_verify_data(gnutls_pk_algorithm_t algorithm, gnutls_x509_privkey_t pkey) @@ -87,18 +84,17 @@ static void sign_verify_data(gnutls_pk_algorithm_t algorithm, vflags |= GNUTLS_VERIFY_ALLOW_BROKEN; /* sign arbitrary data */ - ret = gnutls_privkey_sign_data(privkey, digest, 0, - &raw_data, &signature); + ret = gnutls_privkey_sign_data(privkey, digest, 0, &raw_data, + &signature); if (ret < 0) fail("gnutls_privkey_sign_data\n"); /* verify data */ - ret = - gnutls_pubkey_verify_data2(pubkey, - gnutls_pk_to_sign - (gnutls_pubkey_get_pk_algorithm - (pubkey, NULL), digest), vflags, - &raw_data, &signature); + ret = gnutls_pubkey_verify_data2( + pubkey, + gnutls_pk_to_sign(gnutls_pubkey_get_pk_algorithm(pubkey, NULL), + digest), + vflags, &raw_data, &signature); if (ret < 0) fail("gnutls_pubkey_verify_data2\n"); @@ -172,17 +168,21 @@ void doit(void) } FIPS_PUSH_CONTEXT(); - ret = - gnutls_x509_privkey_generate(pkey, algorithm, - gnutls_sec_param_to_pk_bits - (algorithm, - sec_param[i]), 0); + ret = gnutls_x509_privkey_generate( + pkey, algorithm, + gnutls_sec_param_to_pk_bits(algorithm, + sec_param[i]), + 0); if (ret < 0) { - fail("gnutls_x509_privkey_generate (%s-%d): %s (%d)\n", gnutls_pk_algorithm_get_name(algorithm), gnutls_sec_param_to_pk_bits(algorithm, sec_param[i]), gnutls_strerror(ret), ret); + fail("gnutls_x509_privkey_generate (%s-%d): %s (%d)\n", + gnutls_pk_algorithm_get_name(algorithm), + gnutls_sec_param_to_pk_bits(algorithm, + sec_param[i]), + gnutls_strerror(ret), ret); } else if (debug) { success("Key[%s] generation ok: %d\n", - gnutls_pk_algorithm_get_name - (algorithm), ret); + gnutls_pk_algorithm_get_name(algorithm), + ret); } if (is_approved_pk_algo(algorithm)) { FIPS_POP_CONTEXT(APPROVED); @@ -192,7 +192,9 @@ void doit(void) ret = gnutls_x509_privkey_verify_params(pkey); if (ret < 0) { - fail("gnutls_x509_privkey_generate (%s): %s (%d)\n", gnutls_pk_algorithm_get_name(algorithm), gnutls_strerror(ret), ret); + fail("gnutls_x509_privkey_generate (%s): %s (%d)\n", + gnutls_pk_algorithm_get_name(algorithm), + gnutls_strerror(ret), ret); } /* include test of cpy */ @@ -205,7 +207,9 @@ void doit(void) ret = gnutls_x509_privkey_verify_params(pkey); if (ret < 0) { - fail("gnutls_x509_privkey_generate after cpy (%s): %s (%d)\n", gnutls_pk_algorithm_get_name(algorithm), gnutls_strerror(ret), ret); + fail("gnutls_x509_privkey_generate after cpy (%s): %s (%d)\n", + gnutls_pk_algorithm_get_name(algorithm), + gnutls_strerror(ret), ret); } FIPS_PUSH_CONTEXT(); diff --git a/tests/privkey-verify-broken.c b/tests/privkey-verify-broken.c index a9f72cc254..8937eadeeb 100644 --- a/tests/privkey-verify-broken.c +++ b/tests/privkey-verify-broken.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -39,10 +39,7 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "|<%d>| %s", level, str); } -const gnutls_datum_t raw_data = { - (void *)"hello there", - 11 -}; +const gnutls_datum_t raw_data = { (void *)"hello there", 11 }; static int sign_verify_data(gnutls_x509_privkey_t pkey, gnutls_sign_algorithm_t algo, unsigned vflags) @@ -68,8 +65,8 @@ static int sign_verify_data(gnutls_x509_privkey_t pkey, if (ret < 0) fail("gnutls_pubkey_import_x509\n"); - ret = gnutls_privkey_sign_data(privkey, dig, sflags, - &raw_data, &signature); + ret = gnutls_privkey_sign_data(privkey, dig, sflags, &raw_data, + &signature); if (ret < 0) { ret = -1; goto cleanup; @@ -82,15 +79,15 @@ static int sign_verify_data(gnutls_x509_privkey_t pkey, if (ret < 0) fail("gnutls_pubkey_import_privkey\n"); - ret = gnutls_pubkey_verify_data2(pubkey, algo, - vflags, &raw_data, &signature); + ret = gnutls_pubkey_verify_data2(pubkey, algo, vflags, &raw_data, + &signature); if (ret < 0) { ret = -1; goto cleanup; } ret = 0; - cleanup: +cleanup: if (pubkey) gnutls_pubkey_deinit(pubkey); gnutls_privkey_deinit(privkey); @@ -129,13 +126,12 @@ void doit(void) fail("succeeded verification with MD5!\n"); if (!gnutls_fips140_mode_enabled()) { - if (sign_verify_data - (pkey, GNUTLS_SIGN_RSA_MD5, - GNUTLS_VERIFY_ALLOW_SIGN_RSA_MD5) < 0) + if (sign_verify_data(pkey, GNUTLS_SIGN_RSA_MD5, + GNUTLS_VERIFY_ALLOW_SIGN_RSA_MD5) < 0) fail("failed verification with MD5 and override flags!\n"); - if (sign_verify_data - (pkey, GNUTLS_SIGN_RSA_MD5, GNUTLS_VERIFY_ALLOW_BROKEN) < 0) + if (sign_verify_data(pkey, GNUTLS_SIGN_RSA_MD5, + GNUTLS_VERIFY_ALLOW_BROKEN) < 0) fail("failed verification with MD5 and override flags2!\n"); } diff --git a/tests/protocol-set-allowlist.c b/tests/protocol-set-allowlist.c index f75261e4f7..6fb9665c21 100644 --- a/tests/protocol-set-allowlist.c +++ b/tests/protocol-set-allowlist.c @@ -53,9 +53,12 @@ * connect -> connection established: (TLS1.1)-(RSA)-(AES-128-CBC)-(SHA1) */ -#define _assert(cond, format, ...) if (!(cond)) \ +#define _assert(cond, format, ...) \ + if (!(cond)) \ _fail("Assertion `" #cond "` failed: " format "\n", ##__VA_ARGS__) -#define _check(cond) if (!(cond)) _fail("Assertion `" #cond "` failed.") +#define _check(cond) \ + if (!(cond)) \ + _fail("Assertion `" #cond "` failed.") unsigned parse_port(const char *port_str); gnutls_protocol_t parse_protocol(const char *name); @@ -130,23 +133,21 @@ void cmd_connect(const char *ca_file, unsigned port) return; } - _check(gnutls_server_name_set(session, GNUTLS_NAME_DNS, - "example.com", + _check(gnutls_server_name_set(session, GNUTLS_NAME_DNS, "example.com", strlen("example.com")) >= 0); gnutls_session_set_verify_cert(session, "example.com", 0); _check(gnutls_certificate_allocate_credentials(&cred) >= 0); - _check(gnutls_certificate_set_x509_trust_file(cred, - ca_file, - GNUTLS_X509_FMT_PEM) == - 1); + _check(gnutls_certificate_set_x509_trust_file( + cred, ca_file, GNUTLS_X509_FMT_PEM) == 1); _check(gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, cred) >= 0); sock = tcp_connect("127.0.0.1", port); _assert(sock != -1, "Connection to 127.0.0.1:%u has failed!", port); - _assert(setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, - &sock_flags, sizeof(int)) == 0, "setsockopt failed"); + _assert(setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, &sock_flags, + sizeof(int)) == 0, + "setsockopt failed"); gnutls_transport_set_int(session, sock); gnutls_handshake_set_timeout(session, GNUTLS_DEFAULT_HANDSHAKE_TIMEOUT); @@ -175,9 +176,9 @@ void cmd_protocol_set_disabled(const char *name) int ret; ret = gnutls_protocol_set_enabled(parse_protocol(name), 0); printf("protocol_set_disabled %s -> %s\n", name, - ret == 0 ? "OK" : + ret == 0 ? "OK" : ret == GNUTLS_E_INVALID_REQUEST ? "INVALID_REQUEST" : - gnutls_strerror(ret)); + gnutls_strerror(ret)); } void cmd_protocol_set_enabled(const char *name) @@ -185,9 +186,9 @@ void cmd_protocol_set_enabled(const char *name) int ret; ret = gnutls_protocol_set_enabled(parse_protocol(name), 1); printf("protocol_set_enabled %s -> %s\n", name, - ret == 0 ? "OK" : + ret == 0 ? "OK" : ret == GNUTLS_E_INVALID_REQUEST ? "INVALID_REQUEST" : - gnutls_strerror(ret)); + gnutls_strerror(ret)); } void cmd_reinit(void) diff --git a/tests/psk-file.c b/tests/psk-file.c index e2868407b3..d9c6453f03 100644 --- a/tests/psk-file.c +++ b/tests/psk-file.c @@ -23,7 +23,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -40,18 +40,18 @@ int main(int argc, char **argv) #else -# include -# include -# include -# if !defined(_WIN32) -# include -# endif -# include -# include -# include -# include +#include +#include +#include +#if !defined(_WIN32) +#include +#endif +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" static char hexchar(unsigned int val) { @@ -94,11 +94,11 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -# define MAX_BUF 1024 -# define MSG "Hello TLS" +#define MAX_BUF 1024 +#define MSG "Hello TLS" -static void client(int sd, const char *prio, const gnutls_datum_t * user, - const gnutls_datum_t * key, unsigned expect_hint, +static void client(int sd, const char *prio, const gnutls_datum_t *user, + const gnutls_datum_t *key, unsigned expect_hint, int expect_fail, int exp_kx, unsigned binary_user) { int ret, ii, kx; @@ -196,7 +196,7 @@ static void client(int sd, const char *prio, const gnutls_datum_t * user, gnutls_kx_get_name(exp_kx), gnutls_kx_get_name(kx)); } - end: +end: close(sd); @@ -210,9 +210,9 @@ static void client(int sd, const char *prio, const gnutls_datum_t * user, /* This is a sample TLS 1.0 echo server, for PSK authentication. */ -# define MAX_BUF 1024 +#define MAX_BUF 1024 -static void server(int sd, const char *prio, const gnutls_datum_t * user, +static void server(int sd, const char *prio, const gnutls_datum_t *user, bool no_cred, int expect_fail, int exp_kx, unsigned binary_user) { @@ -241,7 +241,8 @@ static void server(int sd, const char *prio, const gnutls_datum_t * user, gnutls_psk_set_server_credentials_hint(server_pskcred, "hint"); ret = gnutls_psk_set_server_credentials_file(server_pskcred, psk_file); if (ret < 0) { - fail("server: gnutls_psk_set_server_credentials_file failed (%s)\n\n", gnutls_strerror(ret)); + fail("server: gnutls_psk_set_server_credentials_file failed (%s)\n\n", + gnutls_strerror(ret)); return; } @@ -262,8 +263,9 @@ static void server(int sd, const char *prio, const gnutls_datum_t * user, * test client reads our fatal alert, otherwise it might exit * with GNUTLS_E_PUSH_ERROR instead */ gnutls_session_force_valid(session); - while ((gnutls_record_recv_seq(session, buf, sizeof(buf), seq)) - >= 0) ; + while ((gnutls_record_recv_seq(session, buf, sizeof(buf), + seq)) >= 0) + ; if (expect_fail) { if (ret != expect_fail) { @@ -273,9 +275,8 @@ static void server(int sd, const char *prio, const gnutls_datum_t * user, } if (debug) - success - ("server: Handshake has failed - expected (%s)\n\n", - gnutls_strerror(ret)); + success("server: Handshake has failed - expected (%s)\n\n", + gnutls_strerror(ret)); } else { fail("server: Handshake has failed (%s)\n\n", gnutls_strerror(ret)); @@ -295,11 +296,11 @@ static void server(int sd, const char *prio, const gnutls_datum_t * user, if (ret == 0) { if (debug) - success - ("server: Peer has closed the GnuTLS connection\n"); + success("server: Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0) { - fail("server: Received corrupted data(%d). Closing...\n", ret); + fail("server: Received corrupted data(%d). Closing...\n", + ret); break; } else if (ret > 0) { /* echo data back to the client @@ -324,8 +325,8 @@ static void server(int sd, const char *prio, const gnutls_datum_t * user, if (binary_user) { char pskid_bin[1024], userdata_bin[1024]; - if (gnutls_psk_server_get_username2 - (session, &pskid_binary)) + if (gnutls_psk_server_get_username2(session, + &pskid_binary)) fail("server: Could not get binary pskid\n"); if (memcmp(pskid_binary.data, user->data, user->size) != @@ -334,13 +335,15 @@ static void server(int sd, const char *prio, const gnutls_datum_t * user, sizeof(userdata_bin)); hex_encode(pskid_binary.data, pskid_binary.size, pskid_bin, sizeof(pskid_bin)); - fail("server: binary username (%s) does not match expected (%s)\n", pskid_bin, userdata_bin); + fail("server: binary username (%s) does not match expected (%s)\n", + pskid_bin, userdata_bin); } } else { pskid = gnutls_psk_server_get_username(session); - if (pskid == NULL - || strcmp(pskid, (const char *)user->data) != 0) { - fail("server: username (%s), does not match expected (%s)\n", pskid, (const char *)user->data); + if (pskid == NULL || + strcmp(pskid, (const char *)user->data) != 0) { + fail("server: username (%s), does not match expected (%s)\n", + pskid, (const char *)user->data); } } } @@ -350,7 +353,7 @@ static void server(int sd, const char *prio, const gnutls_datum_t * user, gnutls_kx_get_name(exp_kx), gnutls_kx_get_name(kx)); } - end: +end: close(sd); gnutls_deinit(session); @@ -363,7 +366,7 @@ static void server(int sd, const char *prio, const gnutls_datum_t * user, } static void print_user(const char *caption, const char *prio, - const gnutls_datum_t * user, unsigned binary_user) + const gnutls_datum_t *user, unsigned binary_user) { char hexuser[100]; @@ -375,11 +378,11 @@ static void print_user(const char *caption, const char *prio, (const char *)user->data); } -static -void run_test3(const char *prio, const char *sprio, const gnutls_datum_t * user, - const gnutls_datum_t * key, bool no_cred, unsigned expect_hint, - int exp_kx, int expect_fail_cli, int expect_fail_serv, - unsigned binary_user) +static void run_test3(const char *prio, const char *sprio, + const gnutls_datum_t *user, const gnutls_datum_t *key, + bool no_cred, unsigned expect_hint, int exp_kx, + int expect_fail_cli, int expect_fail_serv, + unsigned binary_user) { pid_t child; int err; @@ -422,37 +425,34 @@ void run_test3(const char *prio, const char *sprio, const gnutls_datum_t * user, } } -static -void run_test2(const char *prio, const char *sprio, const gnutls_datum_t * user, - const gnutls_datum_t * key, unsigned expect_hint, int exp_kx, - int expect_fail_cli, int expect_fail_serv, unsigned binary_user) +static void run_test2(const char *prio, const char *sprio, + const gnutls_datum_t *user, const gnutls_datum_t *key, + unsigned expect_hint, int exp_kx, int expect_fail_cli, + int expect_fail_serv, unsigned binary_user) { run_test3(prio, sprio, user, key, 0, expect_hint, exp_kx, expect_fail_cli, expect_fail_serv, binary_user); } -static -void run_test_ok(const char *prio, const gnutls_datum_t * user, - const gnutls_datum_t * key, unsigned expect_hint, - int expect_fail, unsigned binary_user) +static void run_test_ok(const char *prio, const gnutls_datum_t *user, + const gnutls_datum_t *key, unsigned expect_hint, + int expect_fail, unsigned binary_user) { run_test2(prio, NULL, user, key, expect_hint, GNUTLS_KX_PSK, expect_fail, expect_fail, binary_user); } -static -void run_ectest_ok(const char *prio, const gnutls_datum_t * user, - const gnutls_datum_t * key, unsigned expect_hint, - int expect_fail, unsigned binary_user) +static void run_ectest_ok(const char *prio, const gnutls_datum_t *user, + const gnutls_datum_t *key, unsigned expect_hint, + int expect_fail, unsigned binary_user) { run_test2(prio, NULL, user, key, expect_hint, GNUTLS_KX_ECDHE_PSK, expect_fail, expect_fail, binary_user); } -static -void run_dhtest_ok(const char *prio, const gnutls_datum_t * user, - const gnutls_datum_t * key, unsigned expect_hint, - int expect_fail, unsigned binary_user) +static void run_dhtest_ok(const char *prio, const gnutls_datum_t *user, + const gnutls_datum_t *key, unsigned expect_hint, + int expect_fail, unsigned binary_user) { run_test2(prio, NULL, user, key, expect_hint, GNUTLS_KX_DHE_PSK, expect_fail, expect_fail, binary_user); @@ -460,22 +460,23 @@ void run_dhtest_ok(const char *prio, const gnutls_datum_t * user, void doit(void) { - char hexuser[] = { 0xde, 0xad, 0xbe, 0xef }, - nulluser1[] = { 0 }, nulluser2[] = { 0, 0, 0xaa, 0 }; + char hexuser[] = { 0xde, 0xad, 0xbe, 0xef }, nulluser1[] = { 0 }, + nulluser2[] = { 0, 0, 0xaa, 0 }; const gnutls_datum_t user_jas = { (void *)"jas", strlen("jas") }; - const gnutls_datum_t user_unknown = - { (void *)"unknown", strlen("unknown") }; - const gnutls_datum_t user_nonhex = - { (void *)"non-hex", strlen("non-hex") }; + const gnutls_datum_t user_unknown = { (void *)"unknown", + strlen("unknown") }; + const gnutls_datum_t user_nonhex = { (void *)"non-hex", + strlen("non-hex") }; const gnutls_datum_t user_hex = { (void *)hexuser, sizeof(hexuser) }; - const gnutls_datum_t user_null_1 = - { (void *)nulluser1, sizeof(nulluser1) }; - const gnutls_datum_t user_null_2 = - { (void *)nulluser2, sizeof(nulluser2) }; - const gnutls_datum_t key = - { (void *)"9e32cf7786321a828ef7668f09fb35db", 32 }; - const gnutls_datum_t wrong_key = - { (void *)"9e31cf7786321a828ef7668f09fb35db", 32 }; + const gnutls_datum_t user_null_1 = { (void *)nulluser1, + sizeof(nulluser1) }; + const gnutls_datum_t user_null_2 = { (void *)nulluser2, + sizeof(nulluser2) }; + const gnutls_datum_t key = { (void *)"9e32cf7786321a828ef7668f09fb35db", + 32 }; + const gnutls_datum_t wrong_key = { + (void *)"9e31cf7786321a828ef7668f09fb35db", 32 + }; run_test_ok("NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+PSK", &user_jas, &key, 1, 0, 0); @@ -562,63 +563,63 @@ void doit(void) 0, 1); /* test priorities of DHE-PSK and PSK */ - run_ectest_ok - ("NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+DHE-PSK:+PSK:-GROUP-DH-ALL", - &user_jas, &key, 0, 0, 0); - run_ectest_ok - ("NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+DHE-PSK:+PSK:-GROUP-DH-ALL", - &user_hex, &key, 0, 0, 1); - run_ectest_ok - ("NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+DHE-PSK:+PSK:-GROUP-DH-ALL", - &user_null_1, &key, 0, 0, 1); - run_ectest_ok - ("NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+DHE-PSK:+PSK:-GROUP-DH-ALL", - &user_null_2, &key, 0, 0, 1); - run_test_ok - ("NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+PSK:+DHE-PSK:-GROUP-DH-ALL", - &user_jas, &key, 0, 0, 0); - run_test_ok - ("NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+PSK:+DHE-PSK:-GROUP-DH-ALL", - &user_hex, &key, 0, 0, 1); - run_test_ok - ("NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+PSK:+DHE-PSK:-GROUP-DH-ALL", - &user_null_1, &key, 0, 0, 1); - run_test_ok - ("NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+PSK:+DHE-PSK:-GROUP-DH-ALL", - &user_null_2, &key, 0, 0, 1); - run_test2 - ("NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+DHE-PSK:+PSK:-GROUP-DH-ALL", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+PSK:+DHE-PSK:%SERVER_PRECEDENCE:-GROUP-DH-ALL", - &user_jas, &key, 0, GNUTLS_KX_PSK, 0, 0, 0); - run_test2 - ("NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+DHE-PSK:+PSK:-GROUP-DH-ALL", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+PSK:+DHE-PSK:%SERVER_PRECEDENCE:-GROUP-DH-ALL", - &user_hex, &key, 0, GNUTLS_KX_PSK, 0, 0, 1); - run_test2 - ("NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+DHE-PSK:+PSK:-GROUP-DH-ALL", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+PSK:+DHE-PSK:%SERVER_PRECEDENCE:-GROUP-DH-ALL", - &user_null_1, &key, 0, GNUTLS_KX_PSK, 0, 0, 1); - run_test2 - ("NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+DHE-PSK:+PSK:-GROUP-DH-ALL", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+PSK:+DHE-PSK:%SERVER_PRECEDENCE:-GROUP-DH-ALL", - &user_null_2, &key, 0, GNUTLS_KX_PSK, 0, 0, 1); + run_ectest_ok( + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+DHE-PSK:+PSK:-GROUP-DH-ALL", + &user_jas, &key, 0, 0, 0); + run_ectest_ok( + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+DHE-PSK:+PSK:-GROUP-DH-ALL", + &user_hex, &key, 0, 0, 1); + run_ectest_ok( + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+DHE-PSK:+PSK:-GROUP-DH-ALL", + &user_null_1, &key, 0, 0, 1); + run_ectest_ok( + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+DHE-PSK:+PSK:-GROUP-DH-ALL", + &user_null_2, &key, 0, 0, 1); + run_test_ok( + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+PSK:+DHE-PSK:-GROUP-DH-ALL", + &user_jas, &key, 0, 0, 0); + run_test_ok( + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+PSK:+DHE-PSK:-GROUP-DH-ALL", + &user_hex, &key, 0, 0, 1); + run_test_ok( + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+PSK:+DHE-PSK:-GROUP-DH-ALL", + &user_null_1, &key, 0, 0, 1); + run_test_ok( + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+PSK:+DHE-PSK:-GROUP-DH-ALL", + &user_null_2, &key, 0, 0, 1); + run_test2( + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+DHE-PSK:+PSK:-GROUP-DH-ALL", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+PSK:+DHE-PSK:%SERVER_PRECEDENCE:-GROUP-DH-ALL", + &user_jas, &key, 0, GNUTLS_KX_PSK, 0, 0, 0); + run_test2( + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+DHE-PSK:+PSK:-GROUP-DH-ALL", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+PSK:+DHE-PSK:%SERVER_PRECEDENCE:-GROUP-DH-ALL", + &user_hex, &key, 0, GNUTLS_KX_PSK, 0, 0, 1); + run_test2( + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+DHE-PSK:+PSK:-GROUP-DH-ALL", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+PSK:+DHE-PSK:%SERVER_PRECEDENCE:-GROUP-DH-ALL", + &user_null_1, &key, 0, GNUTLS_KX_PSK, 0, 0, 1); + run_test2( + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+DHE-PSK:+PSK:-GROUP-DH-ALL", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM:+PSK:+DHE-PSK:%SERVER_PRECEDENCE:-GROUP-DH-ALL", + &user_null_2, &key, 0, GNUTLS_KX_PSK, 0, 0, 1); /* try with PRF that doesn't match binder (SHA256) */ - run_test2 - ("NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-256-GCM:+PSK:+DHE-PSK", - NULL, &user_jas, &key, 0, 0, GNUTLS_E_FATAL_ALERT_RECEIVED, - GNUTLS_E_NO_CIPHER_SUITES, 0); - run_test2 - ("NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-256-GCM:+PSK:+DHE-PSK", - NULL, &user_hex, &key, 0, 0, GNUTLS_E_FATAL_ALERT_RECEIVED, - GNUTLS_E_NO_CIPHER_SUITES, 1); - run_test2 - ("NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-256-GCM:+PSK:+DHE-PSK", - NULL, &user_null_1, &key, 0, 0, GNUTLS_E_FATAL_ALERT_RECEIVED, - GNUTLS_E_NO_CIPHER_SUITES, 1); - run_test2 - ("NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-256-GCM:+PSK:+DHE-PSK", - NULL, &user_null_2, &key, 0, 0, GNUTLS_E_FATAL_ALERT_RECEIVED, - GNUTLS_E_NO_CIPHER_SUITES, 1); + run_test2( + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-256-GCM:+PSK:+DHE-PSK", + NULL, &user_jas, &key, 0, 0, GNUTLS_E_FATAL_ALERT_RECEIVED, + GNUTLS_E_NO_CIPHER_SUITES, 0); + run_test2( + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-256-GCM:+PSK:+DHE-PSK", + NULL, &user_hex, &key, 0, 0, GNUTLS_E_FATAL_ALERT_RECEIVED, + GNUTLS_E_NO_CIPHER_SUITES, 1); + run_test2( + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-256-GCM:+PSK:+DHE-PSK", + NULL, &user_null_1, &key, 0, 0, GNUTLS_E_FATAL_ALERT_RECEIVED, + GNUTLS_E_NO_CIPHER_SUITES, 1); + run_test2( + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-256-GCM:+PSK:+DHE-PSK", + NULL, &user_null_2, &key, 0, 0, GNUTLS_E_FATAL_ALERT_RECEIVED, + GNUTLS_E_NO_CIPHER_SUITES, 1); /* try with no groups and PSK */ run_test_ok("NORMAL:-VERS-ALL:+VERS-TLS1.3:+PSK:-GROUP-ALL", &user_jas, &key, 0, 0, 0); @@ -683,22 +684,22 @@ void doit(void) GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER, 1); /* try with HelloRetryRequest and PSK */ - run_test2 - ("NORMAL:-VERS-ALL:+VERS-TLS1.3:+DHE-PSK:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-FFDHE4096", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:+DHE-PSK:-GROUP-ALL:+GROUP-FFDHE4096", - &user_jas, &key, 0, GNUTLS_KX_DHE_PSK, 0, 0, 0); - run_test2 - ("NORMAL:-VERS-ALL:+VERS-TLS1.3:+DHE-PSK:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-FFDHE4096", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:+DHE-PSK:-GROUP-ALL:+GROUP-FFDHE4096", - &user_hex, &key, 0, GNUTLS_KX_DHE_PSK, 0, 0, 1); - run_test2 - ("NORMAL:-VERS-ALL:+VERS-TLS1.3:+DHE-PSK:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-FFDHE4096", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:+DHE-PSK:-GROUP-ALL:+GROUP-FFDHE4096", - &user_null_1, &key, 0, GNUTLS_KX_DHE_PSK, 0, 0, 1); - run_test2 - ("NORMAL:-VERS-ALL:+VERS-TLS1.3:+DHE-PSK:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-FFDHE4096", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:+DHE-PSK:-GROUP-ALL:+GROUP-FFDHE4096", - &user_null_2, &key, 0, GNUTLS_KX_DHE_PSK, 0, 0, 1); + run_test2( + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+DHE-PSK:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-FFDHE4096", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+DHE-PSK:-GROUP-ALL:+GROUP-FFDHE4096", + &user_jas, &key, 0, GNUTLS_KX_DHE_PSK, 0, 0, 0); + run_test2( + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+DHE-PSK:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-FFDHE4096", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+DHE-PSK:-GROUP-ALL:+GROUP-FFDHE4096", + &user_hex, &key, 0, GNUTLS_KX_DHE_PSK, 0, 0, 1); + run_test2( + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+DHE-PSK:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-FFDHE4096", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+DHE-PSK:-GROUP-ALL:+GROUP-FFDHE4096", + &user_null_1, &key, 0, GNUTLS_KX_DHE_PSK, 0, 0, 1); + run_test2( + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+DHE-PSK:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-FFDHE4096", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+DHE-PSK:-GROUP-ALL:+GROUP-FFDHE4096", + &user_null_2, &key, 0, GNUTLS_KX_DHE_PSK, 0, 0, 1); /* try without server credentials */ run_test3("NORMAL:-VERS-ALL:+VERS-TLS1.3:+PSK:+DHE-PSK", NULL, @@ -715,4 +716,4 @@ void doit(void) GNUTLS_E_INSUFFICIENT_CREDENTIALS, 1); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/pskself.c b/tests/pskself.c index dd00009167..ae46d4221e 100644 --- a/tests/pskself.c +++ b/tests/pskself.c @@ -23,7 +23,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -39,16 +39,16 @@ int main(int argc, char **argv) #else -# include -# include -# include -# if !defined(_WIN32) -# include -# endif -# include -# include +#include +#include +#include +#if !defined(_WIN32) +#include +#endif +#include +#include -# include "utils.h" +#include "utils.h" /* A very basic TLS client, with PSK authentication. */ @@ -60,8 +60,8 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -# define MAX_BUF 1024 -# define MSG "Hello TLS" +#define MAX_BUF 1024 +#define MSG "Hello TLS" static void client(int sd, const char *prio, unsigned exp_hint) { @@ -142,7 +142,7 @@ static void client(int sd, const char *prio, unsigned exp_hint) gnutls_bye(session, GNUTLS_SHUT_RDWR); - end: +end: close(sd); @@ -156,12 +156,12 @@ static void client(int sd, const char *prio, unsigned exp_hint) /* This is a sample TLS 1.0 echo server, for PSK authentication. */ -# define MAX_BUF 1024 +#define MAX_BUF 1024 /* These are global */ -static int -pskfunc(gnutls_session_t session, const char *username, gnutls_datum_t * key) +static int pskfunc(gnutls_session_t session, const char *username, + gnutls_datum_t *key) { if (debug) printf("psk: username %s\n", username); @@ -242,11 +242,11 @@ static void server(int sd, const char *prio) if (ret == 0) { if (debug) - success - ("server: Peer has closed the GnuTLS connection\n"); + success("server: Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0) { - fail("server: Received corrupted data(%d). Closing...\n", ret); + fail("server: Received corrupted data(%d). Closing...\n", + ret); break; } else if (ret > 0) { /* echo data back to the client @@ -269,8 +269,7 @@ static void server(int sd, const char *prio) success("server: finished\n"); } -static -void run_test(const char *prio, unsigned exp_hint) +static void run_test(const char *prio, unsigned exp_hint) { pid_t child; int err; @@ -315,12 +314,12 @@ void doit(void) run_test("NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+DHE-PSK", 1); run_test("NORMAL:-VERS-ALL:+VERS-TLS1.3:+PSK", 0); - run_test - ("NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-FFDHE2048:+DHE-PSK", - 0); - run_test - ("NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP256R1:+ECDHE-PSK", - 0); + run_test( + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-FFDHE2048:+DHE-PSK", + 0); + run_test( + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP256R1:+ECDHE-PSK", + 0); /* the following should work once we support PSK without DH */ run_test("NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+PSK", 0); @@ -331,4 +330,4 @@ void doit(void) gnutls_dh_params_deinit(dh_params); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/pskself2.c b/tests/pskself2.c index b658ea67ba..4d9dc108fc 100644 --- a/tests/pskself2.c +++ b/tests/pskself2.c @@ -24,7 +24,7 @@ /* Parts copied from pskself.c. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -40,17 +40,17 @@ int main(int argc, char **argv) #else -# include -# include -# include -# if !defined(_WIN32) -# include -# endif -# include -# include +#include +#include +#include +#if !defined(_WIN32) +#include +#endif +#include +#include -# include "utils.h" -# include "extras/hex.h" +#include "utils.h" +#include "extras/hex.h" /* A very basic TLS client, with PSK authentication. */ @@ -62,8 +62,8 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -# define MAX_BUF 1024 -# define MSG "Hello TLS" +#define MAX_BUF 1024 +#define MSG "Hello TLS" static void client(int sd, const char *prio, unsigned exp_hint) { @@ -157,7 +157,7 @@ static void client(int sd, const char *prio, unsigned exp_hint) gnutls_bye(session, GNUTLS_SHUT_RDWR); - end: +end: close(sd); @@ -172,13 +172,12 @@ static void client(int sd, const char *prio, unsigned exp_hint) /* This is a sample TLS 1.0 echo server, for PSK authentication. */ -# define MAX_BUF 1024 +#define MAX_BUF 1024 /* These are global */ -static int -pskfunc(gnutls_session_t session, const gnutls_datum_t * username, - gnutls_datum_t * key) +static int pskfunc(gnutls_session_t session, const gnutls_datum_t *username, + gnutls_datum_t *key) { if (debug) printf("psk: Got username with length %d\n", username->size); @@ -199,8 +198,8 @@ static void server(int sd, const char *prio) int ret; gnutls_session_t session; gnutls_datum_t psk_username; - char buffer[MAX_BUF + 1], expected_psk_username[] = - { 0xDE, 0xAD, 0xBE, 0xEF }; + char buffer[MAX_BUF + 1], + expected_psk_username[] = { 0xDE, 0xAD, 0xBE, 0xEF }; /* this must be called once in the program */ @@ -242,8 +241,8 @@ static void server(int sd, const char *prio) if (gnutls_psk_server_get_username2(session, &psk_username) < 0) fail("server: Could not get PSK username\n"); - if (psk_username.size != 4 - || memcmp(psk_username.data, expected_psk_username, 4)) + if (psk_username.size != 4 || + memcmp(psk_username.data, expected_psk_username, 4)) fail("server: Unexpected PSK username\n"); success("server: PSK username length: %d\n", psk_username.size); @@ -259,11 +258,11 @@ static void server(int sd, const char *prio) if (ret == 0) { if (debug) - success - ("server: Peer has closed the GnuTLS connection\n"); + success("server: Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0) { - fail("server: Received corrupted data(%d). Closing...\n", ret); + fail("server: Received corrupted data(%d). Closing...\n", + ret); break; } else if (ret > 0) { /* echo data back to the client @@ -286,8 +285,7 @@ static void server(int sd, const char *prio) success("server: finished\n"); } -static -void run_test(const char *prio, unsigned exp_hint) +static void run_test(const char *prio, unsigned exp_hint) { pid_t child; int err; @@ -330,19 +328,19 @@ void doit(void) run_test("NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+DHE-PSK", 1); run_test("NORMAL:-VERS-ALL:+VERS-TLS1.2:+PSK", 0); - run_test - ("NORMAL:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE2048:+DHE-PSK", - 0); - run_test - ("NORMAL:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-SECP256R1:+ECDHE-PSK", - 0); + run_test( + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE2048:+DHE-PSK", + 0); + run_test( + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-SECP256R1:+ECDHE-PSK", + 0); run_test("NORMAL:-VERS-ALL:+VERS-TLS1.3:+PSK", 0); - run_test - ("NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-FFDHE2048:+DHE-PSK", - 0); - run_test - ("NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP256R1:+ECDHE-PSK", - 0); + run_test( + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-FFDHE2048:+DHE-PSK", + 0); + run_test( + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP256R1:+ECDHE-PSK", + 0); /* the following should work once we support PSK without DH */ run_test("NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+PSK", 0); @@ -351,4 +349,4 @@ void doit(void) run_test("NORMAL:-KX-ALL:+DHE-PSK", 0); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/pubkey-import-export.c b/tests/pubkey-import-export.c index 5986493c45..788e0b4c30 100644 --- a/tests/pubkey-import-export.c +++ b/tests/pubkey-import-export.c @@ -18,7 +18,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -34,25 +34,23 @@ #include "cert-common.h" static char rsa_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" - "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" - "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" - "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" - "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" - "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" - "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" - "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" - "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" - "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" - "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" - "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" - "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t rsa_key = { (void *)rsa_key_pem, - sizeof(rsa_key_pem) -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" + "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" + "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" + "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" + "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" + "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" + "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" + "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" + "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" + "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" + "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" + "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" + "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t rsa_key = { (void *)rsa_key_pem, sizeof(rsa_key_pem) }; static void dump(const char *name, unsigned char *buf, int buf_size) { @@ -64,45 +62,45 @@ static void dump(const char *name, unsigned char *buf, int buf_size) } unsigned char dsa_p[] = - "\x00\xb9\x84\xf5\x5a\x81\xbe\x1a\x0d\xc5\x8a\x73\x8f\x0c\x9b\x2f\x9b\xb6\x0e\x4b\xc3\x74\x1a\x7f\x64\xad\x9d\xf3\x28\xc5\xa0\x47\xbc\x9b\x57\x56\xf1\x97\xd5\x7e\x37\x03\xe9\xf2\x4c\xf4\xe3\x8b\x7f\x30\xa3\x5d\x2f\xbb\xa1\xa2\x37\xc2\xea\x35\x8f\x1f\xb1\x5f\xa6\xa2\x5f\x01\xf1\x23\x36\x2b\xe4\x4f\x2f\x2d\xdd\x9d\xd5\x3a\xa6\x39\xaf\x7a\x51\x7c\xd2\x25\x8e\x97\x74\xcf\x1e\xc5\x7b\x4b\x76\x43\x81\x07\x1f\x06\x14\xb8\x6e\x58\x12\xe1\x90\xe2\x37\x6f\xd2\x1b\xec\x68\xc5\x58\xe2\xe6\x30\xe0\x6a\x5e\x2c\x63\x78\xec\x07"; + "\x00\xb9\x84\xf5\x5a\x81\xbe\x1a\x0d\xc5\x8a\x73\x8f\x0c\x9b\x2f\x9b\xb6\x0e\x4b\xc3\x74\x1a\x7f\x64\xad\x9d\xf3\x28\xc5\xa0\x47\xbc\x9b\x57\x56\xf1\x97\xd5\x7e\x37\x03\xe9\xf2\x4c\xf4\xe3\x8b\x7f\x30\xa3\x5d\x2f\xbb\xa1\xa2\x37\xc2\xea\x35\x8f\x1f\xb1\x5f\xa6\xa2\x5f\x01\xf1\x23\x36\x2b\xe4\x4f\x2f\x2d\xdd\x9d\xd5\x3a\xa6\x39\xaf\x7a\x51\x7c\xd2\x25\x8e\x97\x74\xcf\x1e\xc5\x7b\x4b\x76\x43\x81\x07\x1f\x06\x14\xb8\x6e\x58\x12\xe1\x90\xe2\x37\x6f\xd2\x1b\xec\x68\xc5\x58\xe2\xe6\x30\xe0\x6a\x5e\x2c\x63\x78\xec\x07"; unsigned char dsa_q[] = - "\x00\x9f\x56\x8c\x48\x64\x2f\xfe\x8d\xaa\x7a\x6d\x96\xdb\x04\x5d\x16\xef\x08\xa5\x71"; + "\x00\x9f\x56\x8c\x48\x64\x2f\xfe\x8d\xaa\x7a\x6d\x96\xdb\x04\x5d\x16\xef\x08\xa5\x71"; unsigned char dsa_g[] = - "\x62\x06\x7e\xe4\x5c\x76\x08\xb7\x46\x1a\x5d\xd7\x97\xd4\x2a\x21\xfb\x1f\x31\xc9\xd2\xf4\xfa\x39\xd8\x27\xd1\x9b\xfc\x27\x5d\xa7\x0a\xa7\x1a\xfc\x53\xc1\x2f\x43\xc2\x37\xc8\x85\x7f\x3d\x4c\xab\x5d\x81\x32\xfb\x1d\x5e\x1e\x54\x11\x16\x20\xc6\x80\x5a\xd9\x8c\x9b\x43\xf0\xdd\x6b\xa0\xf4\xc3\xf2\x8a\x9c\x39\xd2\x1c\x7b\x0f\xef\xfa\x28\x93\x8f\xd2\xa1\x22\xeb\xdc\xe0\x8a\x8b\xad\x28\x0e\xcf\xef\x09\x85\xe9\x36\xbd\x8b\x7a\x50\xd5\x7b\xf7\x25\x0d\x6c\x60\x11\xc4\xef\x70\x90\xcf\xd6\x1b\xeb\xbb\x8e\xc6\x3e\x3a\x97"; + "\x62\x06\x7e\xe4\x5c\x76\x08\xb7\x46\x1a\x5d\xd7\x97\xd4\x2a\x21\xfb\x1f\x31\xc9\xd2\xf4\xfa\x39\xd8\x27\xd1\x9b\xfc\x27\x5d\xa7\x0a\xa7\x1a\xfc\x53\xc1\x2f\x43\xc2\x37\xc8\x85\x7f\x3d\x4c\xab\x5d\x81\x32\xfb\x1d\x5e\x1e\x54\x11\x16\x20\xc6\x80\x5a\xd9\x8c\x9b\x43\xf0\xdd\x6b\xa0\xf4\xc3\xf2\x8a\x9c\x39\xd2\x1c\x7b\x0f\xef\xfa\x28\x93\x8f\xd2\xa1\x22\xeb\xdc\xe0\x8a\x8b\xad\x28\x0e\xcf\xef\x09\x85\xe9\x36\xbd\x8b\x7a\x50\xd5\x7b\xf7\x25\x0d\x6c\x60\x11\xc4\xef\x70\x90\xcf\xd6\x1b\xeb\xbb\x8e\xc6\x3e\x3a\x97"; unsigned char dsa_y[] = - "\x0f\x8a\x87\x57\xf2\xd1\xc2\xdc\xac\xdf\x4b\x8b\x0f\x8b\xba\x29\xf7\xe1\x03\xe4\x55\xfa\xb2\x98\x07\xd6\xfd\x12\xb1\x80\xbc\xf5\xba\xb4\x50\xd4\x7f\xa0\x0e\x43\xe7\x9f\xc9\x78\x11\x5f\xe5\xe4\x0c\x2c\x6b\x6a\xa4\x35\xdc\xbd\x54\xe5\x60\x36\x9a\x31\xd1\x8a\x59\x6e\x6b\x1c\xba\xbd\x2e\xba\xeb\x7c\x87\xef\xda\xc8\xdd\xa1\xeb\xa4\x83\xe6\x8b\xad\xfa\xfa\x8e\x5b\xd7\x37\xc8\x32\x3e\x96\xc2\x3e\xf4\x43\xda\x7d\x91\x02\x0f\xb7\xbc\xf8\xef\x8f\xf7\x41\x00\x5e\x96\xdf\x0f\x08\x96\xdc\xea\xb2\xe9\x06\x82\xaf\xd2\x2f"; + "\x0f\x8a\x87\x57\xf2\xd1\xc2\xdc\xac\xdf\x4b\x8b\x0f\x8b\xba\x29\xf7\xe1\x03\xe4\x55\xfa\xb2\x98\x07\xd6\xfd\x12\xb1\x80\xbc\xf5\xba\xb4\x50\xd4\x7f\xa0\x0e\x43\xe7\x9f\xc9\x78\x11\x5f\xe5\xe4\x0c\x2c\x6b\x6a\xa4\x35\xdc\xbd\x54\xe5\x60\x36\x9a\x31\xd1\x8a\x59\x6e\x6b\x1c\xba\xbd\x2e\xba\xeb\x7c\x87\xef\xda\xc8\xdd\xa1\xeb\xa4\x83\xe6\x8b\xad\xfa\xfa\x8e\x5b\xd7\x37\xc8\x32\x3e\x96\xc2\x3e\xf4\x43\xda\x7d\x91\x02\x0f\xb7\xbc\xf8\xef\x8f\xf7\x41\x00\x5e\x96\xdf\x0f\x08\x96\xdc\xea\xb2\xe9\x06\x82\xaf\xd2\x2f"; unsigned char dsa_x[] = - "\x4b\x9f\xeb\xff\x6c\x9a\x02\x83\x41\x5e\x37\x81\x8e\x00\x86\x31\xe8\xb6\x9b\xc1"; + "\x4b\x9f\xeb\xff\x6c\x9a\x02\x83\x41\x5e\x37\x81\x8e\x00\x86\x31\xe8\xb6\x9b\xc1"; unsigned char rsa_m[] = - "\x00\xbb\x66\x43\xf5\xf2\xc5\xd7\xb6\x8c\xcc\xc5\xdf\xf5\x88\x3b\xb1\xc9\x4b\x6a\x0e\xa1\xad\x20\x50\x40\x08\x80\xa1\x4f\x5c\xa3\xd0\xf8\x6c\xcf\xe6\x3c\xf7\xec\x04\x76\x13\x17\x8b\x64\x89\x22\x5b\xc0\xdd\x53\x7c\x3b\xed\x7c\x04\xbb\x80\xb9\x28\xbe\x8e\x9b\xc6\x8e\xa0\xa5\x12\xcb\xf5\x57\x1e\xa2\xe7\xbb\xb7\x33\x49\x9f\xe3\xbb\x4a\xae\x6a\x4d\x68\xff\xc9\x11\xe2\x32\x8d\xce\x3d\x80\x0b\x8d\x75\xef\xd8\x00\x81\x8f\x28\x04\x03\xa0\x22\x8d\x61\x04\x07\xfa\xb6\x37\x7d\x21\x07\x49\xd2\x09\x61\x69\x98\x90\xa3\x58\xa9"; + "\x00\xbb\x66\x43\xf5\xf2\xc5\xd7\xb6\x8c\xcc\xc5\xdf\xf5\x88\x3b\xb1\xc9\x4b\x6a\x0e\xa1\xad\x20\x50\x40\x08\x80\xa1\x4f\x5c\xa3\xd0\xf8\x6c\xcf\xe6\x3c\xf7\xec\x04\x76\x13\x17\x8b\x64\x89\x22\x5b\xc0\xdd\x53\x7c\x3b\xed\x7c\x04\xbb\x80\xb9\x28\xbe\x8e\x9b\xc6\x8e\xa0\xa5\x12\xcb\xf5\x57\x1e\xa2\xe7\xbb\xb7\x33\x49\x9f\xe3\xbb\x4a\xae\x6a\x4d\x68\xff\xc9\x11\xe2\x32\x8d\xce\x3d\x80\x0b\x8d\x75\xef\xd8\x00\x81\x8f\x28\x04\x03\xa0\x22\x8d\x61\x04\x07\xfa\xb6\x37\x7d\x21\x07\x49\xd2\x09\x61\x69\x98\x90\xa3\x58\xa9"; unsigned char rsa_e[] = "\x01\x00\x01"; unsigned char rsa_d[] = - "\x0e\x99\x80\x44\x6e\x42\x43\x14\xbe\x01\xeb\x0d\x90\x69\xa9\x6a\xe7\xa9\x88\x2c\xf5\x24\x11\x7f\x27\x09\xf2\x89\x7e\xaf\x13\x35\x21\xd1\x8a\x5d\xdf\xd4\x99\xce\xdc\x2b\x0f\x1b\xc5\x3c\x98\xd0\x68\xa5\x65\x8e\x69\x75\xce\x42\x69\x20\x35\x6c\xaa\xf1\xdd\xc9\x57\x6c\x7b\xc3\x3e\x42\x7e\xa1\xc3\x8c\x76\xa7\x9a\xe8\x81\xdb\xe1\x84\x82\xf5\x99\xd5\xa8\xee\x35\x9e\x54\x94\xc5\x44\xa0\x7b\xcc\xb7\x4c\x3e\xcd\xf2\x49\xdb\x5c\x21\x06\x85\xf6\x75\x00\x43\x62\x89\x12\xf9\x5d\x90\xed\xe6\xfd\xb4\x49\x14\x4a\x79\xe2\x4d"; + "\x0e\x99\x80\x44\x6e\x42\x43\x14\xbe\x01\xeb\x0d\x90\x69\xa9\x6a\xe7\xa9\x88\x2c\xf5\x24\x11\x7f\x27\x09\xf2\x89\x7e\xaf\x13\x35\x21\xd1\x8a\x5d\xdf\xd4\x99\xce\xdc\x2b\x0f\x1b\xc5\x3c\x98\xd0\x68\xa5\x65\x8e\x69\x75\xce\x42\x69\x20\x35\x6c\xaa\xf1\xdd\xc9\x57\x6c\x7b\xc3\x3e\x42\x7e\xa1\xc3\x8c\x76\xa7\x9a\xe8\x81\xdb\xe1\x84\x82\xf5\x99\xd5\xa8\xee\x35\x9e\x54\x94\xc5\x44\xa0\x7b\xcc\xb7\x4c\x3e\xcd\xf2\x49\xdb\x5c\x21\x06\x85\xf6\x75\x00\x43\x62\x89\x12\xf9\x5d\x90\xed\xe6\xfd\xb4\x49\x14\x4a\x79\xe2\x4d"; unsigned char rsa_p[] = - "\x00\xd8\xcb\xe4\x65\x4e\x6c\x11\x0f\xa8\x72\xed\x4b\x4c\x8d\x1d\x07\xdc\x24\x99\x25\xe4\x3c\xb2\xf3\x02\xc4\x72\xe6\x3a\x5b\x86\xf4\x7d\x54\x2a\x4e\x79\x64\x16\x1f\x45\x3b\x17\x9e\x2a\x94\x90\x90\x59\xe7\x0b\x95\xd4\xbf\xa9\x47\xd1\x0a\x71\xaf\x3d\x6b\xed\x55"; + "\x00\xd8\xcb\xe4\x65\x4e\x6c\x11\x0f\xa8\x72\xed\x4b\x4c\x8d\x1d\x07\xdc\x24\x99\x25\xe4\x3c\xb2\xf3\x02\xc4\x72\xe6\x3a\x5b\x86\xf4\x7d\x54\x2a\x4e\x79\x64\x16\x1f\x45\x3b\x17\x9e\x2a\x94\x90\x90\x59\xe7\x0b\x95\xd4\xbf\xa9\x47\xd1\x0a\x71\xaf\x3d\x6b\xed\x55"; unsigned char rsa_q[] = - "\x00\xdd\x49\x81\x7a\x5c\x04\xbf\x6b\xbd\x70\x05\x35\x42\x32\xa3\x9b\x08\xee\xd4\x98\x17\x6e\xb8\xc4\xa2\x12\xbe\xdc\x1e\x72\xd0\x44\x84\x5c\xf0\x30\x35\x04\xfd\x4e\xb0\xcc\xd6\x6f\x40\xcb\x16\x13\x58\xbc\x57\xf7\x77\x48\xe5\x0c\x0d\x14\x9b\x66\x6e\xd8\xde\x05"; + "\x00\xdd\x49\x81\x7a\x5c\x04\xbf\x6b\xbd\x70\x05\x35\x42\x32\xa3\x9b\x08\xee\xd4\x98\x17\x6e\xb8\xc4\xa2\x12\xbe\xdc\x1e\x72\xd0\x44\x84\x5c\xf0\x30\x35\x04\xfd\x4e\xb0\xcc\xd6\x6f\x40\xcb\x16\x13\x58\xbc\x57\xf7\x77\x48\xe5\x0c\x0d\x14\x9b\x66\x6e\xd8\xde\x05"; unsigned char rsa_u[] = - "\x4a\x74\x5c\x95\x83\x54\xa3\xb0\x71\x35\xba\x02\x3a\x7d\x4a\x8c\x2d\x9a\x26\x77\x60\x36\x28\xd4\xb1\x7d\x8a\x06\xf8\x89\xa2\xef\xb1\x66\x46\x7d\xb9\xd4\xde\xbc\xa3\xbe\x46\xfa\x62\xe1\x63\x82\xdc\xdb\x64\x36\x47\x59\x00\xa8\xf3\xf7\x0e\xb4\xe0\x66\x3d\xd9"; + "\x4a\x74\x5c\x95\x83\x54\xa3\xb0\x71\x35\xba\x02\x3a\x7d\x4a\x8c\x2d\x9a\x26\x77\x60\x36\x28\xd4\xb1\x7d\x8a\x06\xf8\x89\xa2\xef\xb1\x66\x46\x7d\xb9\xd4\xde\xbc\xa3\xbe\x46\xfa\x62\xe1\x63\x82\xdc\xdb\x64\x36\x47\x59\x00\xa8\xf3\xf7\x0e\xb4\xe0\x66\x3d\xd9"; unsigned char rsa_e1[] = - "\x45\x20\x96\x5e\x1b\x28\x68\x34\x46\xf1\x06\x6b\x09\x28\xc1\xc5\xfc\xd3\x0a\xa6\x43\x65\x7b\x65\xf3\x4e\xf2\x98\x28\xa9\x80\x99\xba\xd0\xb8\x80\xb7\x42\x4b\xaf\x82\xe2\xb9\xc0\x2c\x31\x9c\xfa\xfa\x3f\xaa\xb9\x06\xd2\x6a\x46\xc5\x08\x00\x81\xf1\x22\xd5\xd5"; + "\x45\x20\x96\x5e\x1b\x28\x68\x34\x46\xf1\x06\x6b\x09\x28\xc1\xc5\xfc\xd3\x0a\xa6\x43\x65\x7b\x65\xf3\x4e\xf2\x98\x28\xa9\x80\x99\xba\xd0\xb8\x80\xb7\x42\x4b\xaf\x82\xe2\xb9\xc0\x2c\x31\x9c\xfa\xfa\x3f\xaa\xb9\x06\xd2\x6a\x46\xc5\x08\x00\x81\xf1\x22\xd5\xd5"; unsigned char rsa_e2[] = - "\x00\xa6\x50\x60\xa7\xfe\x10\xf3\x6d\x9e\x6b\x5a\xfe\xb4\x4a\x2a\xfc\x92\xb2\x2d\xc6\x41\x96\x4d\xf8\x3b\x77\xab\x4a\xf4\xf7\x85\xe0\x79\x3b\x00\xaa\xba\xae\x8d\x53\x5f\x3e\x14\xcc\x78\xfe\x2a\x11\x50\x57\xfe\x25\x57\xd9\xc9\x8c\x4d\x28\x77\xc3\x7c\xfc\x31\xa1"; + "\x00\xa6\x50\x60\xa7\xfe\x10\xf3\x6d\x9e\x6b\x5a\xfe\xb4\x4a\x2a\xfc\x92\xb2\x2d\xc6\x41\x96\x4d\xf8\x3b\x77\xab\x4a\xf4\xf7\x85\xe0\x79\x3b\x00\xaa\xba\xae\x8d\x53\x5f\x3e\x14\xcc\x78\xfe\x2a\x11\x50\x57\xfe\x25\x57\xd9\xc9\x8c\x4d\x28\x77\xc3\x7c\xfc\x31\xa1"; unsigned char ecc_x[] = - "\x3c\x15\x6f\x1d\x48\x3e\x64\x59\x13\x2c\x6d\x04\x1a\x38\x0d\x30\x5c\xe4\x3f\x55\xcb\xd9\x17\x15\x46\x72\x71\x92\xc1\xf8\xc6\x33"; + "\x3c\x15\x6f\x1d\x48\x3e\x64\x59\x13\x2c\x6d\x04\x1a\x38\x0d\x30\x5c\xe4\x3f\x55\xcb\xd9\x17\x15\x46\x72\x71\x92\xc1\xf8\xc6\x33"; unsigned char ecc_y[] = - "\x3d\x04\x2e\xc8\xc1\x0f\xc0\x50\x04\x7b\x9f\xc9\x48\xb5\x40\xfa\x6f\x93\x82\x59\x61\x5e\x72\x57\xcb\x83\x06\xbd\xcc\x82\x94\xc1"; + "\x3d\x04\x2e\xc8\xc1\x0f\xc0\x50\x04\x7b\x9f\xc9\x48\xb5\x40\xfa\x6f\x93\x82\x59\x61\x5e\x72\x57\xcb\x83\x06\xbd\xcc\x82\x94\xc1"; unsigned char ecc_k[] = - "\x00\xfd\x2b\x00\x80\xf3\x36\x5f\x11\x32\x65\xe3\x8d\x30\x33\x3b\x47\xf5\xce\xf8\x13\xe5\x4c\xc2\xcf\xfd\xe8\x05\x6a\xca\xc9\x41\xb1"; + "\x00\xfd\x2b\x00\x80\xf3\x36\x5f\x11\x32\x65\xe3\x8d\x30\x33\x3b\x47\xf5\xce\xf8\x13\xe5\x4c\xc2\xcf\xfd\xe8\x05\x6a\xca\xc9\x41\xb1"; unsigned char false_ed25519_x[] = - "\xac\xac\x9a\xb3\xc3\x41\x8d\x41\x22\x21\xc1\x84\xa7\xb8\x70\xfb\x44\x6e\xc7\x7e\x20\x87\x7b\xd9\x22\xa4\x5d\xd2\x97\x09\xd5\x48"; + "\xac\xac\x9a\xb3\xc3\x41\x8d\x41\x22\x21\xc1\x84\xa7\xb8\x70\xfb\x44\x6e\xc7\x7e\x20\x87\x7b\xd9\x22\xa4\x5d\xd2\x97\x09\xd5\x48"; unsigned char ed25519_x[] = - "\xab\xaf\x98\xb3\xc3\x41\x8d\x41\x22\x21\xc1\x86\xa7\xb8\x70\xfb\x44\x6e\xc7\x7e\x20\x87\x7b\xd9\x22\xa4\x5d\xd2\x97\x09\xd5\x48"; + "\xab\xaf\x98\xb3\xc3\x41\x8d\x41\x22\x21\xc1\x86\xa7\xb8\x70\xfb\x44\x6e\xc7\x7e\x20\x87\x7b\xd9\x22\xa4\x5d\xd2\x97\x09\xd5\x48"; unsigned char ed25519_k[] = - "\x1c\xa9\x23\xdc\x35\xa8\xfd\xd6\x2d\xa8\x98\xb9\x60\x7b\xce\x10\x3d\xf4\x64\xc6\xe5\x4b\x0a\x65\x56\x6a\x3c\x73\x65\x51\xa2\x2f"; + "\x1c\xa9\x23\xdc\x35\xa8\xfd\xd6\x2d\xa8\x98\xb9\x60\x7b\xce\x10\x3d\xf4\x64\xc6\xe5\x4b\x0a\x65\x56\x6a\x3c\x73\x65\x51\xa2\x2f"; gnutls_datum_t _dsa_p = { dsa_p, sizeof(dsa_p) - 1 }; gnutls_datum_t _dsa_q = { dsa_q, sizeof(dsa_q) - 1 }; @@ -123,17 +121,17 @@ gnutls_datum_t _ecc_x = { ecc_x, sizeof(ecc_x) - 1 }; gnutls_datum_t _ecc_y = { ecc_y, sizeof(ecc_y) - 1 }; gnutls_datum_t _ecc_k = { ecc_k, sizeof(ecc_k) - 1 }; -gnutls_datum_t _false_ed25519_x = - { false_ed25519_x, sizeof(false_ed25519_x) - 1 }; +gnutls_datum_t _false_ed25519_x = { false_ed25519_x, + sizeof(false_ed25519_x) - 1 }; gnutls_datum_t _ed25519_x = { ed25519_x, sizeof(ed25519_x) - 1 }; gnutls_datum_t _ed25519_k = { ed25519_k, sizeof(ed25519_k) - 1 }; unsigned char ecc_params[] = "\x06\x08\x2a\x86\x48\xce\x3d\x03\x01\x07"; unsigned char ecc_point[] = - "\x04\x41\x04\x3c\x15\x6f\x1d\x48\x3e\x64\x59\x13\x2c\x6d\x04\x1a\x38\x0d\x30\x5c\xe4\x3f\x55\xcb\xd9\x17\x15\x46\x72\x71\x92\xc1\xf8\xc6\x33\x3d\x04\x2e\xc8\xc1\x0f\xc0\x50\x04\x7b\x9f\xc9\x48\xb5\x40\xfa\x6f\x93\x82\x59\x61\x5e\x72\x57\xcb\x83\x06\xbd\xcc\x82\x94\xc1"; + "\x04\x41\x04\x3c\x15\x6f\x1d\x48\x3e\x64\x59\x13\x2c\x6d\x04\x1a\x38\x0d\x30\x5c\xe4\x3f\x55\xcb\xd9\x17\x15\x46\x72\x71\x92\xc1\xf8\xc6\x33\x3d\x04\x2e\xc8\xc1\x0f\xc0\x50\x04\x7b\x9f\xc9\x48\xb5\x40\xfa\x6f\x93\x82\x59\x61\x5e\x72\x57\xcb\x83\x06\xbd\xcc\x82\x94\xc1"; -#define CMP(name, dat, v) cmp(name, __LINE__, dat, v, sizeof(v)-1) -static int cmp(const char *name, int line, gnutls_datum_t * v1, +#define CMP(name, dat, v) cmp(name, __LINE__, dat, v, sizeof(v) - 1) +static int cmp(const char *name, int line, gnutls_datum_t *v1, unsigned char *v2, unsigned size) { if (size != v1->size) { @@ -153,8 +151,8 @@ static int cmp(const char *name, int line, gnutls_datum_t * v1, } /* leading zero on v2 is ignored */ -#define CMP_NO_LZ(name, dat, v) cmp_no_lz(name, __LINE__, dat, v, sizeof(v)-1) -static int cmp_no_lz(const char *name, int line, gnutls_datum_t * v1, +#define CMP_NO_LZ(name, dat, v) cmp_no_lz(name, __LINE__, dat, v, sizeof(v) - 1) +static int cmp_no_lz(const char *name, int line, gnutls_datum_t *v1, unsigned char *i2, unsigned size) { gnutls_datum_t v2; @@ -182,8 +180,7 @@ static int cmp_no_lz(const char *name, int line, gnutls_datum_t * v1, return 0; } -static -int check_pubkey_import_export(void) +static int check_pubkey_import_export(void) { gnutls_pubkey_t key; gnutls_datum_t p, q, g, y, x; @@ -198,9 +195,8 @@ int check_pubkey_import_export(void) if (ret < 0) fail("error\n"); - ret = - gnutls_pubkey_import_dsa_raw(key, &_dsa_p, &_dsa_q, &_dsa_g, - &_dsa_y); + ret = gnutls_pubkey_import_dsa_raw(key, &_dsa_p, &_dsa_q, &_dsa_g, + &_dsa_y); if (ret < 0) fail("error\n"); @@ -222,9 +218,8 @@ int check_pubkey_import_export(void) gnutls_free(g.data); gnutls_free(y.data); - ret = - gnutls_pubkey_export_dsa_raw2(key, &p, &q, &g, &y, - GNUTLS_EXPORT_FLAG_NO_LZ); + ret = gnutls_pubkey_export_dsa_raw2(key, &p, &q, &g, &y, + GNUTLS_EXPORT_FLAG_NO_LZ); if (ret < 0) fail("error: %s\n", gnutls_strerror(ret)); @@ -261,9 +256,8 @@ int check_pubkey_import_export(void) gnutls_free(m.data); gnutls_free(e.data); - ret = - gnutls_pubkey_export_rsa_raw2(key, &m, &e, - GNUTLS_EXPORT_FLAG_NO_LZ); + ret = gnutls_pubkey_export_rsa_raw2(key, &m, &e, + GNUTLS_EXPORT_FLAG_NO_LZ); if (ret < 0) fail("error\n"); @@ -278,9 +272,8 @@ int check_pubkey_import_export(void) if (ret < 0) fail("error\n"); - ret = - gnutls_pubkey_import_ecc_raw(key, GNUTLS_ECC_CURVE_SECP256R1, - &_ecc_x, &_ecc_y); + ret = gnutls_pubkey_import_ecc_raw(key, GNUTLS_ECC_CURVE_SECP256R1, + &_ecc_x, &_ecc_y); if (ret < 0) fail("error\n"); @@ -302,9 +295,8 @@ int check_pubkey_import_export(void) gnutls_free(x.data); gnutls_free(y.data); - ret = - gnutls_pubkey_export_ecc_raw2(key, &curve, &x, &y, - GNUTLS_EXPORT_FLAG_NO_LZ); + ret = gnutls_pubkey_export_ecc_raw2(key, &curve, &x, &y, + GNUTLS_EXPORT_FLAG_NO_LZ); if (ret < 0) fail("error\n"); @@ -324,15 +316,13 @@ int check_pubkey_import_export(void) fail("error\n"); /* test whether an invalid size would fail */ - ret = - gnutls_pubkey_import_ecc_raw(key, GNUTLS_ECC_CURVE_ED25519, &_rsa_m, - NULL); + ret = gnutls_pubkey_import_ecc_raw(key, GNUTLS_ECC_CURVE_ED25519, + &_rsa_m, NULL); if (ret != GNUTLS_E_INVALID_REQUEST) fail("error\n"); - ret = - gnutls_pubkey_import_ecc_raw(key, GNUTLS_ECC_CURVE_ED25519, - &_ed25519_x, NULL); + ret = gnutls_pubkey_import_ecc_raw(key, GNUTLS_ECC_CURVE_ED25519, + &_ed25519_x, NULL); if (ret < 0) fail("error\n"); diff --git a/tests/random-art.c b/tests/random-art.c index 8afa87aa9e..b730a45b5f 100644 --- a/tests/random-art.c +++ b/tests/random-art.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -42,9 +42,8 @@ static void encode(const char *test_name, const char *type, unsigned key_size, int ret; gnutls_datum_t out; - ret = - gnutls_random_art(GNUTLS_RANDOM_ART_OPENSSH, type, key_size, input, - input_size, &out); + ret = gnutls_random_art(GNUTLS_RANDOM_ART_OPENSSH, type, key_size, + input, input_size, &out); if (ret < 0) { fail("%s: gnutls_random_art: %s\n", test_name, gnutls_strerror(ret)); @@ -52,12 +51,14 @@ static void encode(const char *test_name, const char *type, unsigned key_size, } if (strlen(expected) != out.size) { - fail("%s: gnutls_random_art: output has incorrect size (%d, expected %d)\n%s\n", test_name, (int)out.size, (int)strlen(expected), out.data); + fail("%s: gnutls_random_art: output has incorrect size (%d, expected %d)\n%s\n", + test_name, (int)out.size, (int)strlen(expected), out.data); exit(1); } if (strncasecmp(expected, (char *)out.data, out.size) != 0) { - fail("%s: gnutls_random_art: output does not match the expected:\n%s\n", test_name, out.data); + fail("%s: gnutls_random_art: output does not match the expected:\n%s\n", + test_name, out.data); exit(1); } @@ -76,54 +77,54 @@ struct encode_tests_st { }; struct encode_tests_st encode_tests[] = { - { - .name = "key1", - .raw = (void *) - "\x38\x17\x0c\x08\xcb\x45\x8f\xd4\x87\x9c\x34\xb6\xf6\x08\x29\x4c\x50\x31\x2b\xbb", - .raw_size = 20, - .key_type = "RSA", - .key_size = 2048, - .art = "+--[ RSA 2048]----+\n" - "|.o*++==o |\n" - "| + *.===. |\n" - "|. * + +.o |\n" - "| o . o + . |\n" - "|. + S |\n" - "| . o |\n" - "|E |\n" - "| |\n" "| |\n" "+-----------------+"}, - { - .name = "key2", - .raw = (void *) - "\xf8\xa7\x1c\x08\x76\x47\x2c\x08\x38\x17\x0c\x08\x38\x17\x0c\x08\xcb\x45\x8f\xd4\x87\x9c\xa4\xb6\xf6\xf8\x29\xfc\x50\x3f\x2b\xbb", - .raw_size = 32, - .key_type = "RSA", - .key_size = 3072, - .art = "+--[ RSA 3072]----+\n" - "|@*=*+.o |\n" - "|O.B.+* o |\n" - "|.* +..o o |\n" - "| . . + |\n" - "| oo.o S |\n" - "| ..+o.+ |\n" - "| .o ..oo . |\n" - "| oo...o+ |\n" "| oE+.o |\n" "+-----------------+"}, - { - .name = "key3", - .raw = (void *) - "\x38\xf7\x0c\x08\xcb\x34\x8a\xd4\xb7\x9c\x34\xb4\xf6\x08\x29\x4c\x50\x3f\x2b\xbb", - .raw_size = 20, - .key_type = "ECDSA", - .key_size = 256, - .art = "+--[ECDSA 256]---+\n" - "|oo. . |\n" - "|o ..o . |\n" - "| + +** |\n" - "|...+***o |\n" - "|. o +=+.S |\n" - "| o o + |\n" - "| . o |\n" - "| . |\n" "| E |\n" "+-----------------+"} + { .name = "key1", + .raw = (void *)"\x38\x17\x0c\x08\xcb\x45\x8f\xd4\x87\x9c\x34\xb6\xf6\x08\x29\x4c\x50\x31\x2b\xbb", + .raw_size = 20, + .key_type = "RSA", + .key_size = 2048, + .art = "+--[ RSA 2048]----+\n" + "|.o*++==o |\n" + "| + *.===. |\n" + "|. * + +.o |\n" + "| o . o + . |\n" + "|. + S |\n" + "| . o |\n" + "|E |\n" + "| |\n" + "| |\n" + "+-----------------+" }, + { .name = "key2", + .raw = (void *)"\xf8\xa7\x1c\x08\x76\x47\x2c\x08\x38\x17\x0c\x08\x38\x17\x0c\x08\xcb\x45\x8f\xd4\x87\x9c\xa4\xb6\xf6\xf8\x29\xfc\x50\x3f\x2b\xbb", + .raw_size = 32, + .key_type = "RSA", + .key_size = 3072, + .art = "+--[ RSA 3072]----+\n" + "|@*=*+.o |\n" + "|O.B.+* o |\n" + "|.* +..o o |\n" + "| . . + |\n" + "| oo.o S |\n" + "| ..+o.+ |\n" + "| .o ..oo . |\n" + "| oo...o+ |\n" + "| oE+.o |\n" + "+-----------------+" }, + { .name = "key3", + .raw = (void *)"\x38\xf7\x0c\x08\xcb\x34\x8a\xd4\xb7\x9c\x34\xb4\xf6\x08\x29\x4c\x50\x3f\x2b\xbb", + .raw_size = 20, + .key_type = "ECDSA", + .key_size = 256, + .art = "+--[ECDSA 256]---+\n" + "|oo. . |\n" + "|o ..o . |\n" + "| + +** |\n" + "|...+***o |\n" + "|. o +=+.S |\n" + "| o o + |\n" + "| . o |\n" + "| . |\n" + "| E |\n" + "+-----------------+" } }; void doit(void) diff --git a/tests/rawpk-api.c b/tests/rawpk-api.c index 42ca87a013..a3607b964f 100644 --- a/tests/rawpk-api.c +++ b/tests/rawpk-api.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -62,14 +62,13 @@ void doit(void) assert(gnutls_certificate_allocate_credentials(&cred) >= 0); assert((pcert = gnutls_calloc(1, sizeof(*pcert))) != NULL); assert(gnutls_pubkey_init(&pubkey) >= 0); - assert(gnutls_pubkey_import - (pubkey, &rawpk_public_key1, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_pubkey_import(pubkey, &rawpk_public_key1, + GNUTLS_X509_FMT_PEM) >= 0); /* Tests for gnutls_certificate_set_rawpk_key_mem() */ success("Testing gnutls_certificate_set_rawpk_key_mem()...\n"); // Positive tests - ret = gnutls_certificate_set_rawpk_key_mem(cred, - &rawpk_public_key2, + ret = gnutls_certificate_set_rawpk_key_mem(cred, &rawpk_public_key2, &rawpk_private_key2, GNUTLS_X509_FMT_PEM, NULL, 0, NULL, 0, 0); @@ -77,18 +76,17 @@ void doit(void) fail("Failed to load credentials with error: %d\n", ret); } // Negative tests - ret = gnutls_certificate_set_rawpk_key_mem(cred, - NULL, &rawpk_private_key2, + ret = gnutls_certificate_set_rawpk_key_mem(cred, NULL, + &rawpk_private_key2, GNUTLS_X509_FMT_PEM, NULL, 0, NULL, 0, 0); if (ret != GNUTLS_E_INSUFFICIENT_CREDENTIALS) { fail("Failed to detect falsy input. Expected error: %d\n", GNUTLS_E_INSUFFICIENT_CREDENTIALS); } - ret = gnutls_certificate_set_rawpk_key_mem(cred, - &rawpk_public_key2, NULL, - GNUTLS_X509_FMT_PEM, NULL, 0, - NULL, 0, 0); + ret = gnutls_certificate_set_rawpk_key_mem(cred, &rawpk_public_key2, + NULL, GNUTLS_X509_FMT_PEM, + NULL, 0, NULL, 0, 0); if (ret != GNUTLS_E_INSUFFICIENT_CREDENTIALS) { fail("Failed to detect falsy input. Expected error: %d\n", GNUTLS_E_INSUFFICIENT_CREDENTIALS); @@ -97,27 +95,24 @@ void doit(void) /* Tests for gnutls_certificate_set_rawpk_key_file() */ success("Testing gnutls_certificate_set_rawpk_key_file()...\n"); // Positive tests - ret = - gnutls_certificate_set_rawpk_key_file(cred, rawpk_pub_path, - rawpk_priv_path, - GNUTLS_X509_FMT_PEM, NULL, 0, - NULL, 0, 0, 0); + ret = gnutls_certificate_set_rawpk_key_file(cred, rawpk_pub_path, + rawpk_priv_path, + GNUTLS_X509_FMT_PEM, NULL, + 0, NULL, 0, 0, 0); if (ret < 0) { fail("Failed to load credentials with error: %d\n", ret); } // Negative tests - ret = - gnutls_certificate_set_rawpk_key_file(cred, NULL, rawpk_priv_path, - GNUTLS_X509_FMT_PEM, NULL, 0, - NULL, 0, 0, 0); + ret = gnutls_certificate_set_rawpk_key_file(cred, NULL, rawpk_priv_path, + GNUTLS_X509_FMT_PEM, NULL, + 0, NULL, 0, 0, 0); if (ret != GNUTLS_E_INSUFFICIENT_CREDENTIALS) { fail("Failed to detect falsy input. Expected error: %d\n", GNUTLS_E_INSUFFICIENT_CREDENTIALS); } - ret = - gnutls_certificate_set_rawpk_key_file(cred, rawpk_pub_path, NULL, - GNUTLS_X509_FMT_PEM, NULL, 0, - NULL, 0, 0, 0); + ret = gnutls_certificate_set_rawpk_key_file(cred, rawpk_pub_path, NULL, + GNUTLS_X509_FMT_PEM, NULL, + 0, NULL, 0, 0, 0); if (ret != GNUTLS_E_INSUFFICIENT_CREDENTIALS) { fail("Failed to detect falsy input. Expected error: %d\n", GNUTLS_E_INSUFFICIENT_CREDENTIALS); @@ -128,7 +123,8 @@ void doit(void) // Positive tests ret = gnutls_pcert_import_rawpk(pcert, pubkey, 0); if (ret < 0) { - fail("Failed to import raw public-key into pcert with error: %d\n", ret); + fail("Failed to import raw public-key into pcert with error: %d\n", + ret); } // Negative tests ret = gnutls_pcert_import_rawpk(pcert, NULL, 0); @@ -142,16 +138,15 @@ void doit(void) /* Tests for gnutls_pcert_import_rawpk_raw() */ success("Testing gnutls_pcert_import_rawpk_raw()...\n"); // Positive tests - ret = - gnutls_pcert_import_rawpk_raw(pcert, &rawpk_public_key1, - GNUTLS_X509_FMT_PEM, 0, 0); + ret = gnutls_pcert_import_rawpk_raw(pcert, &rawpk_public_key1, + GNUTLS_X509_FMT_PEM, 0, 0); if (ret < 0) { - fail("Failed to import raw public-key into pcert with error: %d\n", ret); + fail("Failed to import raw public-key into pcert with error: %d\n", + ret); } // Negative tests - ret = - gnutls_pcert_import_rawpk_raw(pcert, NULL, GNUTLS_X509_FMT_PEM, 0, - 0); + ret = gnutls_pcert_import_rawpk_raw(pcert, NULL, GNUTLS_X509_FMT_PEM, 0, + 0); if (ret != GNUTLS_E_INSUFFICIENT_CREDENTIALS) { fail("Failed to detect falsy input. Expected error: %d\n", GNUTLS_E_INSUFFICIENT_CREDENTIALS); diff --git a/tests/record-pad.c b/tests/record-pad.c index 8eb00b0642..a38a73616f 100644 --- a/tests/record-pad.c +++ b/tests/record-pad.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,23 +35,23 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "cert-common.h" -# include "utils.h" - -# define MAX_BUF 1024 -# define HIGH(x) (3*x) +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cert-common.h" +#include "utils.h" + +#define MAX_BUF 1024 +#define HIGH(x) (3 * x) static void terminate(void); static size_t total; @@ -121,8 +121,7 @@ static void client(int fd, struct test_st *test) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -135,13 +134,13 @@ static void client(int fd, struct test_st *test) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { do { - ret = - gnutls_record_recv(session, buffer, sizeof(buffer)); + ret = gnutls_record_recv(session, buffer, + sizeof(buffer)); } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); } while (ret > 0); @@ -158,7 +157,7 @@ static void client(int fd, struct test_st *test) gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); @@ -216,8 +215,7 @@ static void server(int fd, struct test_st *test) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -230,8 +228,8 @@ static void server(int fd, struct test_st *test) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); gnutls_transport_set_push_function(session, push); @@ -239,16 +237,16 @@ static void server(int fd, struct test_st *test) total = 0; do { - ret = - gnutls_record_send2(session, buffer, - test->data, test->pad, 0); + ret = gnutls_record_send2(session, buffer, test->data, + test->pad, 0); } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (test->sret < 0) { if (ret >= 0) fail("server: expected failure got success!\n"); if (ret != test->sret) - fail("server: expected different failure: '%s', got: '%s'\n", gnutls_strerror(test->sret), gnutls_strerror(ret)); + fail("server: expected different failure: '%s', got: '%s'\n", + gnutls_strerror(test->sret), gnutls_strerror(ret)); goto finish; } @@ -258,14 +256,14 @@ static void server(int fd, struct test_st *test) } expected = - test->data + test->pad + gnutls_record_overhead_size(session); + test->data + test->pad + gnutls_record_overhead_size(session); if (total != expected) { fail("Sent data (%u) are lower than expected (%u)\n", (unsigned)total, (unsigned)expected); terminate(); } - finish: +finish: /* do not wait for the peer to close the connection. */ gnutls_bye(session, GNUTLS_SHUT_WR); @@ -314,7 +312,7 @@ static void start(struct test_st *test) } } -# define AES_GCM "NONE:+VERS-TLS1.3:+AES-256-GCM:+AEAD:+SIGN-ALL:+GROUP-ALL" +#define AES_GCM "NONE:+VERS-TLS1.3:+AES-256-GCM:+AEAD:+SIGN-ALL:+GROUP-ALL" static void ch_handler(int sig) { @@ -325,61 +323,52 @@ static void ch_handler(int sig) } struct test_st tests[] = { - { - .name = "AES-GCM with max pad", - .pad = HIGH(MAX_BUF + 1) - (MAX_BUF + 1), - .data = MAX_BUF, - .prio = AES_GCM, - .flags = 0}, - { - .name = "AES-GCM with zero pad", - .pad = 0, - .data = MAX_BUF, - .prio = AES_GCM, - .flags = 0}, - { - .name = "AES-GCM with 1-byte pad", - .pad = 1, - .data = MAX_BUF, - .prio = AES_GCM, - .flags = 0}, - { - .name = "AES-GCM with pad, but no data", - .pad = 16, - .data = 0, - .prio = AES_GCM, - .flags = 0}, - { - .name = "AES-GCM with max pad and safe padding check", - .pad = HIGH(MAX_BUF + 1) - (MAX_BUF + 1), - .data = MAX_BUF, - .prio = AES_GCM, - .flags = GNUTLS_SAFE_PADDING_CHECK}, - { - .name = "AES-GCM with zero pad and safe padding check", - .pad = 0, - .data = MAX_BUF, - .prio = AES_GCM, - .flags = GNUTLS_SAFE_PADDING_CHECK}, - { - .name = "AES-GCM with 1-byte pad and safe padding check", - .pad = 1, - .data = MAX_BUF, - .prio = AES_GCM, - .flags = GNUTLS_SAFE_PADDING_CHECK}, - { - .name = "AES-GCM with pad, but no data and safe padding check", - .pad = 16, - .data = 0, - .prio = AES_GCM, - .flags = GNUTLS_SAFE_PADDING_CHECK}, - { - .name = "AES-GCM with pad, but no data and no pad", - .pad = 0, - .data = 0, - .prio = AES_GCM, - .flags = GNUTLS_SAFE_PADDING_CHECK, - .sret = GNUTLS_E_INVALID_REQUEST}, + { .name = "AES-GCM with max pad", + .pad = HIGH(MAX_BUF + 1) - (MAX_BUF + 1), + .data = MAX_BUF, + .prio = AES_GCM, + .flags = 0 }, + { .name = "AES-GCM with zero pad", + .pad = 0, + .data = MAX_BUF, + .prio = AES_GCM, + .flags = 0 }, + { .name = "AES-GCM with 1-byte pad", + .pad = 1, + .data = MAX_BUF, + .prio = AES_GCM, + .flags = 0 }, + { .name = "AES-GCM with pad, but no data", + .pad = 16, + .data = 0, + .prio = AES_GCM, + .flags = 0 }, + { .name = "AES-GCM with max pad and safe padding check", + .pad = HIGH(MAX_BUF + 1) - (MAX_BUF + 1), + .data = MAX_BUF, + .prio = AES_GCM, + .flags = GNUTLS_SAFE_PADDING_CHECK }, + { .name = "AES-GCM with zero pad and safe padding check", + .pad = 0, + .data = MAX_BUF, + .prio = AES_GCM, + .flags = GNUTLS_SAFE_PADDING_CHECK }, + { .name = "AES-GCM with 1-byte pad and safe padding check", + .pad = 1, + .data = MAX_BUF, + .prio = AES_GCM, + .flags = GNUTLS_SAFE_PADDING_CHECK }, + { .name = "AES-GCM with pad, but no data and safe padding check", + .pad = 16, + .data = 0, + .prio = AES_GCM, + .flags = GNUTLS_SAFE_PADDING_CHECK }, + { .name = "AES-GCM with pad, but no data and no pad", + .pad = 0, + .data = 0, + .prio = AES_GCM, + .flags = GNUTLS_SAFE_PADDING_CHECK, + .sret = GNUTLS_E_INVALID_REQUEST }, }; void doit(void) @@ -392,4 +381,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/record-retvals.c b/tests/record-retvals.c index 827405b1d7..7b9a9cd9d6 100644 --- a/tests/record-retvals.c +++ b/tests/record-retvals.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,18 +35,18 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" static void terminate(void); @@ -65,50 +65,47 @@ static void client_log_func(int level, const char *str) } static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" - "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" - "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" - "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" - "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" - "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" - "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" - "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" - "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" - "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" - "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" - "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" + "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" + "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" + "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" + "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" + "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" + "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" + "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" + "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" + "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" + "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" + "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" - "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" - "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" - "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" - "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" - "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" - "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" - "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" - "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" - "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" - "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" - "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" - "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" + "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" + "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" + "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" + "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" + "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" + "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" + "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" + "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" + "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" + "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" + "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" + "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; /* A very basic TLS client, with anonymous authentication. */ -# define MAX_BUF 24*1024 +#define MAX_BUF 24 * 1024 static void client(int fd, const char *prio, int ign) { @@ -154,8 +151,7 @@ static void client(int fd, const char *prio, int ign) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client (%s): Handshake has failed (%s)\n\n", prio, @@ -168,8 +164,8 @@ static void client(int fd, const char *prio, int ign) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* Test sending */ for (i = 1; i < 16384; i++) { @@ -184,7 +180,8 @@ static void client(int fd, const char *prio, int ign) } if (ret > 0 && ret != (int)i) { - fail("server (%s): Error sending %d byte packet: sent: %d\n", prio, i, ret); + fail("server (%s): Error sending %d byte packet: sent: %d\n", + prio, i, ret); exit(1); } } @@ -196,19 +193,20 @@ static void client(int fd, const char *prio, int ign) } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) { - fail("server (%s): Error sending %d byte packet: %s\n", - prio, i, gnutls_strerror(ret)); + fail("server (%s): Error sending %d byte packet: %s\n", prio, i, + gnutls_strerror(ret)); exit(1); } else if (ign == 0 && ret != 16384) { - fail("server (%s): Error sending %d byte packet; sent %d bytes instead of 16384\n", prio, i, ret); + fail("server (%s): Error sending %d byte packet; sent %d bytes instead of 16384\n", + prio, i, ret); exit(1); } memset(buffer, 0xff, sizeof(buffer)); ret = gnutls_record_send(session, buffer, 4); if (ret < 0) { - fail("server (%s): Error sending 4 byte packet: %s\n", - prio, gnutls_strerror(ret)); + fail("server (%s): Error sending 4 byte packet: %s\n", prio, + gnutls_strerror(ret)); exit(1); } @@ -235,7 +233,7 @@ static void client(int fd, const char *prio, int ign) gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); @@ -301,8 +299,7 @@ static void server(int fd, const char *prio, int ign) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -315,8 +312,8 @@ static void server(int fd, const char *prio, int ign) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* Here we do both a receive and a send test because if valgrind * detects an error on the peer, the main process will never know. @@ -329,7 +326,7 @@ static void server(int fd, const char *prio, int ign) ret = gnutls_record_recv(session, buffer, MAX_BUF); } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret > 0 && ret != (int)i) { - if (ret == 4 && (uint8_t) buffer[0] == 0xff) { + if (ret == 4 && (uint8_t)buffer[0] == 0xff) { break; } else { fail("error receiving message[%d]: ret: %d\n", @@ -364,11 +361,12 @@ static void server(int fd, const char *prio, int ign) } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) { - fail("server (%s): Error sending %d byte packet: %s\n", - prio, i, gnutls_strerror(ret)); + fail("server (%s): Error sending %d byte packet: %s\n", prio, i, + gnutls_strerror(ret)); terminate(); } else if (ign == 0 && ret != 16384) { - fail("server (%s): Error sending %d byte packet; sent %d bytes instead of 16384\n", prio, i, ret); + fail("server (%s): Error sending %d byte packet; sent %d bytes instead of 16384\n", + prio, i, ret); terminate(); } @@ -417,15 +415,22 @@ static void start(const char *prio, int ign) } } -# define AES_CBC "NONE:+VERS-TLS1.0:-CIPHER-ALL:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" -# define AES_CBC_SHA256 "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-CBC:+AES-256-CBC:+SHA256:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" -# define AES_GCM "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-GCM:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" -# define TLS13_AES_GCM "NONE:+VERS-TLS1.3:-CIPHER-ALL:+RSA:+AES-128-GCM:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+CURVE-ALL" +#define AES_CBC \ + "NONE:+VERS-TLS1.0:-CIPHER-ALL:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" +#define AES_CBC_SHA256 \ + "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-CBC:+AES-256-CBC:+SHA256:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" +#define AES_GCM \ + "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-GCM:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" +#define TLS13_AES_GCM \ + "NONE:+VERS-TLS1.3:-CIPHER-ALL:+RSA:+AES-128-GCM:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+CURVE-ALL" -# define ARCFOUR_SHA1 "NONE:+VERS-TLS1.0:-CIPHER-ALL:+ARCFOUR-128:+SHA1:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" -# define ARCFOUR_MD5 "NONE:+VERS-TLS1.0:-CIPHER-ALL:+ARCFOUR-128:+MD5:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL:+RSA" +#define ARCFOUR_SHA1 \ + "NONE:+VERS-TLS1.0:-CIPHER-ALL:+ARCFOUR-128:+SHA1:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL" +#define ARCFOUR_MD5 \ + "NONE:+VERS-TLS1.0:-CIPHER-ALL:+ARCFOUR-128:+MD5:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+CURVE-ALL:+RSA" -# define NULL_SHA1 "NONE:+VERS-TLS1.0:-CIPHER-ALL:+NULL:+SHA1:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+RSA:+CURVE-ALL" +#define NULL_SHA1 \ + "NONE:+VERS-TLS1.0:-CIPHER-ALL:+NULL:+SHA1:+SIGN-ALL:+COMP-NULL:+ANON-ECDH:+RSA:+CURVE-ALL" static void ch_handler(int sig) { @@ -452,4 +457,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/record-sendfile.c b/tests/record-sendfile.c index aab7890cb4..9b02afb2ec 100644 --- a/tests/record-sendfile.c +++ b/tests/record-sendfile.c @@ -19,7 +19,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -34,23 +34,23 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "cert-common.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cert-common.h" +#include "utils.h" static void server_log_func(int level, const char *str) { @@ -62,9 +62,9 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define MAX_BUF 1024 -# define MSG "Hello world!" -# define OFFSET 2 +#define MAX_BUF 1024 +#define MSG "Hello world!" +#define OFFSET 2 static void client(int fd, const char *prio) { @@ -93,8 +93,7 @@ static void client(int fd, const char *prio) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -106,8 +105,7 @@ static void client(int fd, const char *prio) memset(buffer, 0, sizeof(buffer)); do { ret = gnutls_record_recv(session, buffer, sizeof(buffer)); - } - while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); + } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret == 0) { success("client: Peer has closed the TLS connection\n"); @@ -132,7 +130,7 @@ static void client(int fd, const char *prio) } ret = 0; - end: +end: close(fd); @@ -160,9 +158,8 @@ static void server(int fd, const char *prio) } gnutls_certificate_allocate_credentials(&x509_cred); - ret = gnutls_certificate_set_x509_key_mem(x509_cred, &server_cert, - &server_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + x509_cred, &server_cert, &server_key, GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -177,8 +174,7 @@ static void server(int fd, const char *prio) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("server: Handshake has failed (%s)\n\n", @@ -209,8 +205,8 @@ static void server(int fd, const char *prio) } do { - ret = - gnutls_record_send_file(session, fileno(fp), &offset, 512); + ret = gnutls_record_send_file(session, fileno(fp), &offset, + 512); } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) { @@ -225,7 +221,7 @@ static void server(int fd, const char *prio) gnutls_strerror(ret)); ret = 0; - end: +end: close(fd); gnutls_deinit(session); @@ -237,8 +233,7 @@ static void server(int fd, const char *prio) success("server: finished\n"); } -static -void run(const char *prio) +static void run(const char *prio) { int fd[2]; int ret; @@ -268,7 +263,6 @@ void run(const char *prio) client(fd[1], prio); exit(0); } - } void doit(void) @@ -278,4 +272,4 @@ void doit(void) run("NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM"); run("NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-256-GCM"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/record-sizes-range.c b/tests/record-sizes-range.c index 07cbcb3959..81452e2795 100644 --- a/tests/record-sizes-range.c +++ b/tests/record-sizes-range.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -42,22 +42,22 @@ static void tls_log_func(int level, const char *str) /* This test attempts to transfer various sizes using AES-128-CBC. */ -#define MAX_BUF 32*1024 +#define MAX_BUF 32 * 1024 #define MAX_SEND 16384 static char buffer1[MAX_BUF + 1]; static char buffer[MAX_BUF + 1]; -static void try_send(gnutls_session_t client, gnutls_session_t server, - void *b1, ssize_t b1_size, void *b2, ssize_t b2_size, - gnutls_range_st * range) +static void try_send(gnutls_session_t client, gnutls_session_t server, void *b1, + ssize_t b1_size, void *b2, ssize_t b2_size, + gnutls_range_st *range) { int ret, recvd; /* Try sending various other sizes */ ret = gnutls_record_send_range(client, b1, b1_size, range); if (ret < 0) { - fprintf(stderr, "Error sending %d bytes: %s\n", - (int)b1_size, gnutls_strerror(ret)); + fprintf(stderr, "Error sending %d bytes: %s\n", (int)b1_size, + gnutls_strerror(ret)); exit(1); } @@ -75,15 +75,13 @@ static void try_send(gnutls_session_t client, gnutls_session_t server, exit(1); } recvd += ret; - } - while (recvd < b1_size); + } while (recvd < b1_size); if (recvd != b1_size) { fprintf(stderr, "Couldn't receive %d bytes, received %d\n", (int)b1_size, recvd); exit(1); } - } void doit(void) @@ -113,9 +111,10 @@ void doit(void) gnutls_dh_params_import_pkcs3(dh_params, &p3, GNUTLS_X509_FMT_PEM); gnutls_anon_set_server_dh_params(s_anoncred, dh_params); gnutls_init(&server, GNUTLS_SERVER); - gnutls_priority_set_direct(server, - "NONE:+VERS-TLS1.2:+AES-128-CBC:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-DH", - NULL); + gnutls_priority_set_direct( + server, + "NONE:+VERS-TLS1.2:+AES-128-CBC:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-DH", + NULL); gnutls_credentials_set(server, GNUTLS_CRD_ANON, s_anoncred); gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); @@ -124,9 +123,10 @@ void doit(void) /* Init client */ gnutls_anon_allocate_client_credentials(&c_anoncred); gnutls_init(&client, GNUTLS_CLIENT); - gnutls_priority_set_direct(client, - "NONE:+VERS-TLS1.2:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-DH", - NULL); + gnutls_priority_set_direct( + client, + "NONE:+VERS-TLS1.2:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-DH", + NULL); gnutls_credentials_set(client, GNUTLS_CRD_ANON, c_anoncred); gnutls_transport_set_push_function(client, client_push); gnutls_transport_set_pull_function(client, client_pull); @@ -146,7 +146,7 @@ void doit(void) try_send(client, server, buffer1, MAX_SEND, buffer, MAX_BUF, &range); try_send(client, server, buffer1, 1024, buffer, MAX_BUF, &range); try_send(client, server, buffer1, 4096, buffer, MAX_BUF, &range); - /*try_send(client, server, buffer1, 128, buffer, MAX_BUF, &range) */ ; + /*try_send(client, server, buffer1, 128, buffer, MAX_BUF, &range) */; if (debug) fputs("\n", stdout); diff --git a/tests/record-sizes.c b/tests/record-sizes.c index 8961c7f17a..dc72a29b50 100644 --- a/tests/record-sizes.c +++ b/tests/record-sizes.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -77,9 +77,10 @@ void doit(void) gnutls_dh_params_import_pkcs3(dh_params, &p3, GNUTLS_X509_FMT_PEM); gnutls_anon_set_server_dh_params(s_anoncred, dh_params); gnutls_init(&server, GNUTLS_SERVER); - gnutls_priority_set_direct(server, - "NONE:+VERS-TLS1.2:+ARCFOUR-128:+MD5:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-DH", - NULL); + gnutls_priority_set_direct( + server, + "NONE:+VERS-TLS1.2:+ARCFOUR-128:+MD5:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-DH", + NULL); gnutls_credentials_set(server, GNUTLS_CRD_ANON, s_anoncred); gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); @@ -88,9 +89,10 @@ void doit(void) /* Init client */ gnutls_anon_allocate_client_credentials(&c_anoncred); gnutls_init(&client, GNUTLS_CLIENT); - gnutls_priority_set_direct(client, - "NONE:+VERS-TLS1.2:+CIPHER-ALL:+ARCFOUR-128:+MD5:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-DH", - NULL); + gnutls_priority_set_direct( + client, + "NONE:+VERS-TLS1.2:+CIPHER-ALL:+ARCFOUR-128:+MD5:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-DH", + NULL); gnutls_credentials_set(client, GNUTLS_CRD_ANON, c_anoncred); gnutls_transport_set_push_function(client, client_push); gnutls_transport_set_pull_function(client, client_pull); @@ -107,8 +109,8 @@ void doit(void) /* try the maximum allowed */ ret = gnutls_record_send(client, b1, MAX_BUF); if (ret < 0) { - fprintf(stderr, "Error sending %d bytes: %s\n", - (int)MAX_BUF, gnutls_strerror(ret)); + fprintf(stderr, "Error sending %d bytes: %s\n", (int)MAX_BUF, + gnutls_strerror(ret)); exit(1); } @@ -119,8 +121,8 @@ void doit(void) ret = gnutls_record_recv(server, buffer, MAX_BUF); if (ret < 0) { - fprintf(stderr, "Error receiving %d bytes: %s\n", - (int)MAX_BUF, gnutls_strerror(ret)); + fprintf(stderr, "Error receiving %d bytes: %s\n", (int)MAX_BUF, + gnutls_strerror(ret)); exit(1); } diff --git a/tests/record-timeouts.c b/tests/record-timeouts.c index 5a465a3793..aa9c1c805b 100644 --- a/tests/record-timeouts.c +++ b/tests/record-timeouts.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -89,9 +89,8 @@ static void start(const char *prio) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); diff --git a/tests/recv-data-before-handshake.c b/tests/recv-data-before-handshake.c index 9e0432235e..f1a0ba751b 100644 --- a/tests/recv-data-before-handshake.c +++ b/tests/recv-data-before-handshake.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,19 +35,19 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include "cert-common.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "cert-common.h" +#include "utils.h" static void terminate(void); @@ -68,7 +68,7 @@ static void client_log_func(int level, const char *str) static int handshake_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { int ret; char c = 0; @@ -94,7 +94,7 @@ static int handshake_callback(gnutls_session_t session, unsigned int htype, return 0; } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd, const char *prio) { @@ -130,8 +130,7 @@ static void client(int fd, const char *prio) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret == GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM) { /* success */ @@ -148,8 +147,8 @@ static void client(int fd, const char *prio) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { do { @@ -168,7 +167,7 @@ static void client(int fd, const char *prio) gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); @@ -235,14 +234,14 @@ static void server(int fd, const char *prio) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* do not wait for the peer to close the connection. */ gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); gnutls_deinit(session); @@ -259,8 +258,7 @@ static void ch_handler(int sig) return; } -static -void start(const char *prio) +static void start(const char *prio) { int fd[2]; int ret, status = 0; @@ -302,4 +300,4 @@ void doit(void) start("NORMAL"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/rehandshake-ext-secret.c b/tests/rehandshake-ext-secret.c index 93d26ca4c7..6906a0143e 100644 --- a/tests/rehandshake-ext-secret.c +++ b/tests/rehandshake-ext-secret.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -65,9 +65,8 @@ static void try(unsigned onclient) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); gnutls_priority_set_direct(server, "NORMAL:-VERS-ALL:+VERS-TLS1.2", @@ -98,26 +97,26 @@ static void try(unsigned onclient) onclient); } - if ((gnutls_session_get_flags(server) & GNUTLS_SFLAGS_EXT_MASTER_SECRET) - == 0) { + if ((gnutls_session_get_flags(server) & + GNUTLS_SFLAGS_EXT_MASTER_SECRET) == 0) { fail("%d: ext master secret was not detected by server\n", onclient); } - if ((gnutls_session_get_flags(client) & GNUTLS_SFLAGS_EXT_MASTER_SECRET) - == 0) { + if ((gnutls_session_get_flags(client) & + GNUTLS_SFLAGS_EXT_MASTER_SECRET) == 0) { fail("%d: ext master secret was not detected by client\n", onclient); } if (onclient) - gnutls_priority_set_direct(client, - "NORMAL:-VERS-ALL:+VERS-TLS1.2:%NO_SESSION_HASH", - NULL); + gnutls_priority_set_direct( + client, + "NORMAL:-VERS-ALL:+VERS-TLS1.2:%NO_SESSION_HASH", NULL); else - gnutls_priority_set_direct(server, - "NORMAL:-VERS-ALL:+VERS-TLS1.2:%NO_SESSION_HASH", - NULL); + gnutls_priority_set_direct( + server, + "NORMAL:-VERS-ALL:+VERS-TLS1.2:%NO_SESSION_HASH", NULL); sret = gnutls_rehandshake(server); if (debug) { diff --git a/tests/rehandshake-switch-cert-allow.c b/tests/rehandshake-switch-cert-allow.c index f7b497164c..53b565f18d 100644 --- a/tests/rehandshake-switch-cert-allow.c +++ b/tests/rehandshake-switch-cert-allow.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -66,12 +66,10 @@ static void try(void) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); gnutls_certificate_allocate_credentials(&serverx509cred2); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); - gnutls_certificate_set_x509_key_mem(serverx509cred2, - &server2_cert, &server2_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred2, &server2_cert, + &server2_key, GNUTLS_X509_FMT_PEM); gnutls_dh_params_init(&dh_params); gnutls_dh_params_import_pkcs3(dh_params, &p3, GNUTLS_X509_FMT_PEM); @@ -80,8 +78,8 @@ static void try(void) gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); - gnutls_priority_set_direct(server, - "NORMAL:-VERS-ALL:+VERS-TLS1.2", NULL); + gnutls_priority_set_direct(server, "NORMAL:-VERS-ALL:+VERS-TLS1.2", + NULL); gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); gnutls_transport_set_ptr(server, server); @@ -92,9 +90,8 @@ static void try(void) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -107,10 +104,8 @@ static void try(void) if (ret < 0) exit(1); - ret = - gnutls_priority_set_direct(client, - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+RSA", - NULL); + ret = gnutls_priority_set_direct( + client, "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+RSA", NULL); if (ret < 0) exit(1); @@ -121,7 +116,8 @@ static void try(void) HANDSHAKE(client, server); if (gnutls_kx_get(client) != GNUTLS_KX_RSA) { - fail("got unexpected key exchange algorithm: %s (expected RSA)\n", gnutls_kx_get_name(gnutls_kx_get(client))); + fail("got unexpected key exchange algorithm: %s (expected RSA)\n", + gnutls_kx_get_name(gnutls_kx_get(client))); exit(1); } diff --git a/tests/rehandshake-switch-cert-client-allow.c b/tests/rehandshake-switch-cert-client-allow.c index 8d21c6a100..626ccf96dd 100644 --- a/tests/rehandshake-switch-cert-client-allow.c +++ b/tests/rehandshake-switch-cert-client-allow.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -65,9 +65,8 @@ static void try(void) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_dh_params_init(&dh_params); gnutls_dh_params_import_pkcs3(dh_params, &p3, GNUTLS_X509_FMT_PEM); @@ -77,8 +76,8 @@ static void try(void) gnutls_certificate_server_set_request(server, GNUTLS_CERT_REQUEST); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); - gnutls_priority_set_direct(server, - "NORMAL:-VERS-ALL:+VERS-TLS1.2", NULL); + gnutls_priority_set_direct(server, "NORMAL:-VERS-ALL:+VERS-TLS1.2", + NULL); gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); gnutls_transport_set_ptr(server, server); @@ -89,15 +88,13 @@ static void try(void) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_key_mem(clientx509cred, &cli_cert, - &cli_key, GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + clientx509cred, &cli_cert, &cli_key, GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -105,16 +102,14 @@ static void try(void) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_key_mem(clientx509cred2, &server2_cert, - &server2_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem(clientx509cred2, + &server2_cert, &server2_key, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred2, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred2, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -127,10 +122,8 @@ static void try(void) if (ret < 0) exit(1); - ret = - gnutls_priority_set_direct(client, - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+RSA", - NULL); + ret = gnutls_priority_set_direct( + client, "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+RSA", NULL); if (ret < 0) exit(1); @@ -141,7 +134,8 @@ static void try(void) HANDSHAKE(client, server); if (gnutls_kx_get(client) != GNUTLS_KX_RSA) { - fail("got unexpected key exchange algorithm: %s (expected RSA)\n", gnutls_kx_get_name(gnutls_kx_get(client))); + fail("got unexpected key exchange algorithm: %s (expected RSA)\n", + gnutls_kx_get_name(gnutls_kx_get(client))); exit(1); } diff --git a/tests/rehandshake-switch-cert-client.c b/tests/rehandshake-switch-cert-client.c index 6d92e2a1b1..70f6cb5fd9 100644 --- a/tests/rehandshake-switch-cert-client.c +++ b/tests/rehandshake-switch-cert-client.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -65,9 +65,8 @@ static void try(void) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_dh_params_init(&dh_params); gnutls_dh_params_import_pkcs3(dh_params, &p3, GNUTLS_X509_FMT_PEM); @@ -77,8 +76,8 @@ static void try(void) gnutls_certificate_server_set_request(server, GNUTLS_CERT_REQUEST); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); - gnutls_priority_set_direct(server, - "NORMAL:-VERS-ALL:+VERS-TLS1.2", NULL); + gnutls_priority_set_direct(server, "NORMAL:-VERS-ALL:+VERS-TLS1.2", + NULL); gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); gnutls_transport_set_ptr(server, server); @@ -89,15 +88,13 @@ static void try(void) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_key_mem(clientx509cred, &cli_cert, - &cli_key, GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + clientx509cred, &cli_cert, &cli_key, GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -105,16 +102,14 @@ static void try(void) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_key_mem(clientx509cred2, &server2_cert, - &server2_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem(clientx509cred2, + &server2_cert, &server2_key, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred2, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred2, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -127,10 +122,8 @@ static void try(void) if (ret < 0) exit(1); - ret = - gnutls_priority_set_direct(client, - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+RSA", - NULL); + ret = gnutls_priority_set_direct( + client, "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+RSA", NULL); if (ret < 0) exit(1); @@ -141,7 +134,8 @@ static void try(void) HANDSHAKE(client, server); if (gnutls_kx_get(client) != GNUTLS_KX_RSA) { - fail("got unexpected key exchange algorithm: %s (expected RSA)\n", gnutls_kx_get_name(gnutls_kx_get(client))); + fail("got unexpected key exchange algorithm: %s (expected RSA)\n", + gnutls_kx_get_name(gnutls_kx_get(client))); exit(1); } diff --git a/tests/rehandshake-switch-cert.c b/tests/rehandshake-switch-cert.c index 5c161b8e70..d00c2e6ba6 100644 --- a/tests/rehandshake-switch-cert.c +++ b/tests/rehandshake-switch-cert.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -66,12 +66,10 @@ static void try(void) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); gnutls_certificate_allocate_credentials(&serverx509cred2); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); - gnutls_certificate_set_x509_key_mem(serverx509cred2, - &server2_cert, &server2_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred2, &server2_cert, + &server2_key, GNUTLS_X509_FMT_PEM); gnutls_dh_params_init(&dh_params); gnutls_dh_params_import_pkcs3(dh_params, &p3, GNUTLS_X509_FMT_PEM); @@ -80,8 +78,8 @@ static void try(void) gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); - gnutls_priority_set_direct(server, - "NORMAL:-VERS-ALL:+VERS-TLS1.2", NULL); + gnutls_priority_set_direct(server, "NORMAL:-VERS-ALL:+VERS-TLS1.2", + NULL); gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); gnutls_transport_set_ptr(server, server); @@ -92,9 +90,8 @@ static void try(void) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -107,10 +104,8 @@ static void try(void) if (ret < 0) exit(1); - ret = - gnutls_priority_set_direct(client, - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+RSA", - NULL); + ret = gnutls_priority_set_direct( + client, "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+RSA", NULL); if (ret < 0) exit(1); @@ -121,7 +116,8 @@ static void try(void) HANDSHAKE(client, server); if (gnutls_kx_get(client) != GNUTLS_KX_RSA) { - fail("got unexpected key exchange algorithm: %s (expected RSA)\n", gnutls_kx_get_name(gnutls_kx_get(client))); + fail("got unexpected key exchange algorithm: %s (expected RSA)\n", + gnutls_kx_get_name(gnutls_kx_get(client))); exit(1); } diff --git a/tests/rehandshake-switch-psk-id.c b/tests/rehandshake-switch-psk-id.c index b699940c0c..675aa8a7b7 100644 --- a/tests/rehandshake-switch-psk-id.c +++ b/tests/rehandshake-switch-psk-id.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -43,8 +43,8 @@ static void tls_log_func(int level, const char *str) #include "cert-common.h" -static int -pskfunc(gnutls_session_t session, const char *username, gnutls_datum_t * key) +static int pskfunc(gnutls_session_t session, const char *username, + gnutls_datum_t *key) { if (debug) printf("psk: username %s\n", username); @@ -134,7 +134,9 @@ static void try(const char *prio, gnutls_kx_algorithm_t kx, HANDSHAKE(client, server); if (gnutls_kx_get(client) != kx) { - fail("got unexpected key exchange algorithm: %s (expected %s)\n", gnutls_kx_get_name(gnutls_kx_get(client)), gnutls_kx_get_name(kx)); + fail("got unexpected key exchange algorithm: %s (expected %s)\n", + gnutls_kx_get_name(gnutls_kx_get(client)), + gnutls_kx_get_name(kx)); exit(1); } diff --git a/tests/rehandshake-switch-srp-id.c b/tests/rehandshake-switch-srp-id.c index 9aa8f371d2..769b2e63d5 100644 --- a/tests/rehandshake-switch-srp-id.c +++ b/tests/rehandshake-switch-srp-id.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -34,12 +34,12 @@ int main(void) #else -# include -# include -# include -# include -# include "utils.h" -# include "eagain-common.h" +#include +#include +#include +#include +#include "utils.h" +#include "eagain-common.h" /* This test checks whether the server switching certificates is detected * by the client */ @@ -51,44 +51,35 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -# include "cert-common.h" +#include "cert-common.h" -# define VERIF_TEST1 "CEqjUZBlkQCocfOR0E4AsPZKOFYPGjKFMHW7KDcnpE4sH4.iGMbkygb/bViRNjskF9/TQdD46Mvlt6pLs5MZoTn8mO3G.RGyXdWuIrhnVn29p41Cpc5RhTLaeUm3asW6LF60VTKnGERC0eB37xZUsaTpzmaTNdD4mOoYCN3bD9Y" -# define VERIF_TEST2 "EEbMk8afwXz/0oV5Yo9To7V6c6xkYid8meqEByxM33XjM4xeKUjeN7Ft2.xvjo4S6Js7mEs9Ov.uZtBp3ugCAbvl6G7bdfYF6z.tAD4mNYhH7iI7SwQy.ntmbJ3uJ1qB5MHW7ajSdWvA7l3SSsyyAVMe9HVQcxZKJRf4mzwm06s" +#define VERIF_TEST1 \ + "CEqjUZBlkQCocfOR0E4AsPZKOFYPGjKFMHW7KDcnpE4sH4.iGMbkygb/bViRNjskF9/TQdD46Mvlt6pLs5MZoTn8mO3G.RGyXdWuIrhnVn29p41Cpc5RhTLaeUm3asW6LF60VTKnGERC0eB37xZUsaTpzmaTNdD4mOoYCN3bD9Y" +#define VERIF_TEST2 \ + "EEbMk8afwXz/0oV5Yo9To7V6c6xkYid8meqEByxM33XjM4xeKUjeN7Ft2.xvjo4S6Js7mEs9Ov.uZtBp3ugCAbvl6G7bdfYF6z.tAD4mNYhH7iI7SwQy.ntmbJ3uJ1qB5MHW7ajSdWvA7l3SSsyyAVMe9HVQcxZKJRf4mzwm06s" -# define SALT_TEST1 "3a3xX3Myzb9YJn5X0R7sbx" -# define SALT_TEST2 "25J9FArvl1ZDrTSFsvZ4Jb" +#define SALT_TEST1 "3a3xX3Myzb9YJn5X0R7sbx" +#define SALT_TEST2 "25J9FArvl1ZDrTSFsvZ4Jb" -# define PRIME "Ewl2hcjiutMd3Fu2lgFnUXWSc67TVyy2vwYCKoS9MLsrdJVT9RgWTCuEqWJrfB6uE3LsE9GkOlaZabS7M29sj5TnzUqOLJMjiwEzArfiLr9WbMRANlF68N5AVLcPWvNx6Zjl3m5Scp0BzJBz9TkgfhzKJZ.WtP3Mv/67I/0wmRZ" -gnutls_datum_t tprime = { - .data = (void *)PRIME, - .size = sizeof(PRIME) - 1 -}; +#define PRIME \ + "Ewl2hcjiutMd3Fu2lgFnUXWSc67TVyy2vwYCKoS9MLsrdJVT9RgWTCuEqWJrfB6uE3LsE9GkOlaZabS7M29sj5TnzUqOLJMjiwEzArfiLr9WbMRANlF68N5AVLcPWvNx6Zjl3m5Scp0BzJBz9TkgfhzKJZ.WtP3Mv/67I/0wmRZ" +gnutls_datum_t tprime = { .data = (void *)PRIME, .size = sizeof(PRIME) - 1 }; -gnutls_datum_t test1_verif = { - .data = (void *)VERIF_TEST1, - .size = sizeof(VERIF_TEST1) - 1 -}; +gnutls_datum_t test1_verif = { .data = (void *)VERIF_TEST1, + .size = sizeof(VERIF_TEST1) - 1 }; -gnutls_datum_t test2_verif = { - .data = (void *)VERIF_TEST2, - .size = sizeof(VERIF_TEST2) - 1 -}; +gnutls_datum_t test2_verif = { .data = (void *)VERIF_TEST2, + .size = sizeof(VERIF_TEST2) - 1 }; -gnutls_datum_t test1_salt = { - .data = (void *)SALT_TEST1, - .size = sizeof(SALT_TEST1) - 1 -}; +gnutls_datum_t test1_salt = { .data = (void *)SALT_TEST1, + .size = sizeof(SALT_TEST1) - 1 }; -gnutls_datum_t test2_salt = { - .data = (void *)SALT_TEST2, - .size = sizeof(SALT_TEST2) - 1 -}; +gnutls_datum_t test2_salt = { .data = (void *)SALT_TEST2, + .size = sizeof(SALT_TEST2) - 1 }; -static int -srpfunc(gnutls_session_t session, const char *username, - gnutls_datum_t * salt, gnutls_datum_t * verifier, - gnutls_datum_t * generator, gnutls_datum_t * prime) +static int srpfunc(gnutls_session_t session, const char *username, + gnutls_datum_t *salt, gnutls_datum_t *verifier, + gnutls_datum_t *generator, gnutls_datum_t *prime) { int ret; if (debug) @@ -152,9 +143,8 @@ static void try(const char *prio, gnutls_kx_algorithm_t kx, gnutls_srp_allocate_server_credentials(&server_srp_cred); gnutls_certificate_allocate_credentials(&server_x509_cred); - gnutls_certificate_set_x509_key_mem(server_x509_cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(server_x509_cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_dh_params_init(&dh_params); gnutls_dh_params_import_pkcs3(dh_params, &p3, GNUTLS_X509_FMT_PEM); @@ -195,9 +185,8 @@ static void try(const char *prio, gnutls_kx_algorithm_t kx, if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(client_x509_cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(client_x509_cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -217,7 +206,9 @@ static void try(const char *prio, gnutls_kx_algorithm_t kx, HANDSHAKE(client, server); if (gnutls_kx_get(client) != kx) { - fail("got unexpected key exchange algorithm: %s (expected %s)\n", gnutls_kx_get_name(gnutls_kx_get(client)), gnutls_kx_get_name(kx)); + fail("got unexpected key exchange algorithm: %s (expected %s)\n", + gnutls_kx_get_name(gnutls_kx_get(client)), + gnutls_kx_get_name(kx)); exit(1); } diff --git a/tests/resume-dtls.c b/tests/resume-dtls.c index 1b3a0350ac..5eed31f814 100644 --- a/tests/resume-dtls.c +++ b/tests/resume-dtls.c @@ -23,7 +23,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -38,19 +38,19 @@ int main(int argc, char **argv) #else -# include -# include -# include -# if !defined(_WIN32) -# include -# endif -# include -# include -# include -# include -# include +#include +#include +#include +#if !defined(_WIN32) +#include +#endif +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" static void wrap_db_init(void); static void wrap_db_deinit(void); @@ -58,7 +58,7 @@ static int wrap_db_store(void *dbf, gnutls_datum_t key, gnutls_datum_t data); static gnutls_datum_t wrap_db_fetch(void *dbf, gnutls_datum_t key); static int wrap_db_delete(void *dbf, gnutls_datum_t key); -# define TLS_SESSION_CACHE 50 +#define TLS_SESSION_CACHE 50 struct params_res { const char *desc; @@ -71,19 +71,19 @@ struct params_res { pid_t child; struct params_res resume_tests[] = { - {"try to resume from db", 50, 0, 0, 1}, - {"try to resume from session ticket", 0, 1, 1, 1}, - {"try to resume from session ticket (server only)", 0, 1, 0, 0}, - {"try to resume from session ticket (client only)", 0, 0, 1, 0}, - {NULL, -1} + { "try to resume from db", 50, 0, 0, 1 }, + { "try to resume from session ticket", 0, 1, 1, 1 }, + { "try to resume from session ticket (server only)", 0, 1, 0, 0 }, + { "try to resume from session ticket (client only)", 0, 0, 1, 0 }, + { NULL, -1 } }; /* A very basic TLS client, with anonymous authentication. */ -# define SESSIONS 2 -# define MAX_BUF 5*1024 -# define MSG "Hello TLS" +#define SESSIONS 2 +#define MAX_BUF 5 * 1024 +#define MSG "Hello TLS" static void tls_log_func(int level, const char *str) { @@ -121,13 +121,15 @@ static void client(int sds[], struct params_res *params) /* Use default priorities */ if (params->enable_session_ticket_client) - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-DH", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-DH", + NULL); else - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-DH:%NO_TICKETS", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-DH:%NO_TICKETS", + NULL); /* put the anonymous credentials to the current session */ @@ -159,19 +161,18 @@ static void client(int sds[], struct params_res *params) success("client: Handshake was completed\n"); } - if (t == 0) { /* the first time we connect */ + if (t == 0) { /* the first time we connect */ /* get the session data size */ ret = gnutls_session_get_data2(session, &session_data); if (ret < 0) fail("Getting resume data failed\n"); - } else { /* the second time we connect */ + } else { /* the second time we connect */ /* check if we actually resumed the previous session */ if (gnutls_session_is_resumed(session) != 0) { if (params->expect_resume) { if (debug) - success - ("- Previous session was resumed\n"); + success("- Previous session was resumed\n"); } else fail("- Previous session was resumed\n"); } else { @@ -179,8 +180,7 @@ static void client(int sds[], struct params_res *params) fail("*** Previous session was NOT resumed\n"); } else { if (debug) - success - ("*** Previous session was NOT resumed (expected)\n"); + success("*** Previous session was NOT resumed (expected)\n"); } } } @@ -190,8 +190,7 @@ static void client(int sds[], struct params_res *params) ret = gnutls_record_recv(session, buffer, MAX_BUF); if (ret == 0) { if (debug) - success - ("client: Peer has closed the TLS connection\n"); + success("client: Peer has closed the TLS connection\n"); goto end; } else if (ret < 0) { fail("client: Error: %s\n", gnutls_strerror(ret)); @@ -213,14 +212,14 @@ static void client(int sds[], struct params_res *params) gnutls_deinit(session); } - end: +end: gnutls_anon_free_client_credentials(anoncred); } /* This is a sample TLS 1.0 echo server, for anonymous authentication only. */ -# define DH_BITS 1024 +#define DH_BITS 1024 /* These are global */ @@ -286,9 +285,10 @@ static void server(int sds[], struct params_res *params) gnutls_init(&session, GNUTLS_SERVER | GNUTLS_DATAGRAM); - gnutls_priority_set_direct(session, - "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-DH", - NULL); + gnutls_priority_set_direct( + session, + "NONE:+VERS-DTLS1.0:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-DH", + NULL); gnutls_credentials_set(session, GNUTLS_CRD_ANON, anoncred); gnutls_dh_set_prime_bits(session, DH_BITS); @@ -301,8 +301,8 @@ static void server(int sds[], struct params_res *params) } if (params->enable_session_ticket_server) - gnutls_session_ticket_enable_server(session, - &session_ticket_key); + gnutls_session_ticket_enable_server( + session, &session_ticket_key); gnutls_transport_set_int(session, sd); gnutls_dtls_set_timeouts(session, get_dtls_retransmit_timeout(), @@ -310,9 +310,8 @@ static void server(int sds[], struct params_res *params) do { ret = gnutls_handshake(session); - } while (ret < 0 - && (ret == GNUTLS_E_INTERRUPTED - || ret == GNUTLS_E_AGAIN)); + } while (ret < 0 && (ret == GNUTLS_E_INTERRUPTED || + ret == GNUTLS_E_AGAIN)); if (ret < 0) { close(sd); gnutls_deinit(session); @@ -333,12 +332,12 @@ static void server(int sds[], struct params_res *params) if (ret == 0) { if (debug) - success - ("server: Peer has closed the GnuTLS connection\n"); + success("server: Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0) { kill(child, SIGTERM); - fail("server: Received corrupted data(%d). Closing...\n", ret); + fail("server: Received corrupted data(%d). Closing...\n", + ret); break; } else if (ret > 0) { /* echo data back to the client @@ -427,8 +426,8 @@ void doit(void) * and session data. */ -# define MAX_SESSION_ID_SIZE 32 -# define MAX_SESSION_DATA_SIZE 1024 +#define MAX_SESSION_ID_SIZE 32 +#define MAX_SESSION_DATA_SIZE 1024 typedef struct { unsigned char session_id[MAX_SESSION_ID_SIZE]; @@ -443,7 +442,6 @@ static int cache_db_ptr = 0; static void wrap_db_init(void) { - /* allocate cache_db */ cache_db = calloc(1, TLS_SESSION_CACHE * sizeof(CACHE)); } @@ -563,7 +561,6 @@ static int wrap_db_delete(void *dbf, gnutls_datum_t key) for (i = 0; i < TLS_SESSION_CACHE; i++) { if (key.size == cache_db[i].session_id_size && memcmp(key.data, cache_db[i].session_id, key.size) == 0) { - cache_db[i].session_id_size = 0; cache_db[i].session_data_size = 0; @@ -572,7 +569,6 @@ static int wrap_db_delete(void *dbf, gnutls_datum_t key) } return -1; - } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/resume-lifetime.c b/tests/resume-lifetime.c index 4114251ed0..e655cec07c 100644 --- a/tests/resume-lifetime.c +++ b/tests/resume-lifetime.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -45,14 +45,13 @@ static void tls_log_func(int level, const char *str) } struct hsk_st { - unsigned sent_nst; /* whether the new session ticket was sent */ - unsigned sent_psk; /* whether the PSK extension was sent */ - unsigned sleep_at_finished; /* how long to wait at finished message reception */ - + unsigned sent_nst; /* whether the new session ticket was sent */ + unsigned sent_psk; /* whether the PSK extension was sent */ + unsigned sleep_at_finished; /* how long to wait at finished message reception */ }; -static int ext_hook_func(void *ctx, unsigned tls_id, - const unsigned char *data, unsigned size) +static int ext_hook_func(void *ctx, unsigned tls_id, const unsigned char *data, + unsigned size) { if (tls_id == 41) { struct hsk_st *h = ctx; @@ -63,7 +62,7 @@ static int ext_hook_func(void *ctx, unsigned tls_id, static int handshake_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { struct hsk_st *h = gnutls_session_get_ptr(session); @@ -86,8 +85,8 @@ static int handshake_callback(gnutls_session_t session, unsigned int htype, /* Returns true if resumed */ static unsigned handshake(const char *prio, unsigned t, - const gnutls_datum_t * sdata, gnutls_datum_t * ndata, - gnutls_datum_t * skey, struct hsk_st *h) + const gnutls_datum_t *sdata, gnutls_datum_t *ndata, + gnutls_datum_t *skey, struct hsk_st *h) { int ret; /* Server stuff. */ @@ -105,8 +104,8 @@ static unsigned handshake(const char *prio, unsigned t, gnutls_global_set_log_level(6); assert(gnutls_certificate_allocate_credentials(&serverx509cred) >= 0); - assert(gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, + assert(gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM) >= 0); assert(gnutls_init(&server, GNUTLS_SERVER) >= 0); @@ -120,13 +119,12 @@ static unsigned handshake(const char *prio, unsigned t, gnutls_db_set_cache_expiration(server, t); assert(gnutls_session_ticket_enable_server(server, skey) >= 0); - gnutls_handshake_set_hook_function(server, -1, - GNUTLS_HOOK_POST, + gnutls_handshake_set_hook_function(server, -1, GNUTLS_HOOK_POST, handshake_callback); assert(gnutls_certificate_allocate_credentials(&clientx509cred) >= 0); - assert(gnutls_certificate_set_x509_trust_mem - (clientx509cred, &ca_cert, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM) >= 0); assert(gnutls_init(&client, GNUTLS_CLIENT) >= 0); assert(gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, @@ -138,8 +136,8 @@ static unsigned handshake(const char *prio, unsigned t, gnutls_transport_set_ptr(client, client); if (sdata) { - assert(gnutls_session_set_data(client, sdata->data, sdata->size) - >= 0); + assert(gnutls_session_set_data(client, sdata->data, + sdata->size) >= 0); } memset(buf, 0, sizeof(buf)); diff --git a/tests/resume-with-false-start.c b/tests/resume-with-false-start.c index be8596ec03..bc5d93e0b9 100644 --- a/tests/resume-with-false-start.c +++ b/tests/resume-with-false-start.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -40,7 +40,7 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1461671166; @@ -74,9 +74,8 @@ void doit(void) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); @@ -90,9 +89,8 @@ void doit(void) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -105,8 +103,8 @@ void doit(void) if (ret < 0) exit(1); - assert(gnutls_priority_set_direct - (client, "NORMAL:-VERS-ALL:+VERS-TLS1.2", NULL) >= 0); + assert(gnutls_priority_set_direct( + client, "NORMAL:-VERS-ALL:+VERS-TLS1.2", NULL) >= 0); gnutls_transport_set_push_function(client, client_push); gnutls_transport_set_pull_function(client, client_pull); gnutls_transport_set_ptr(client, client); diff --git a/tests/resume-with-previous-stek.c b/tests/resume-with-previous-stek.c index 799d00db22..71d8a765a2 100644 --- a/tests/resume-with-previous-stek.c +++ b/tests/resume-with-previous-stek.c @@ -20,7 +20,7 @@ * */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,36 +33,35 @@ int main(int argc, char **argv) } #else -# include -# include -# include -# include -# include -# include -# include "utils.h" -# include "cert-common.h" -# include "virt-time.h" +#include +#include +#include +#include +#include +#include +#include "utils.h" +#include "cert-common.h" +#include "virt-time.h" -# define TICKET_EXPIRATION 1 /* seconds */ -# define TICKET_ROTATION_PERIOD 3 /* seconds */ +#define TICKET_EXPIRATION 1 /* seconds */ +#define TICKET_ROTATION_PERIOD 3 /* seconds */ unsigned num_stek_rotations; -static void stek_rotation_callback(const gnutls_datum_t * prev_key, - const gnutls_datum_t * new_key, uint64_t t) +static void stek_rotation_callback(const gnutls_datum_t *prev_key, + const gnutls_datum_t *new_key, uint64_t t) { num_stek_rotations++; success("STEK was rotated!\n"); } static int client_handshake(gnutls_session_t session, - gnutls_datum_t * session_data, int resume) + gnutls_datum_t *session_data, int resume) { int ret; if (resume) { - if ((ret = gnutls_session_set_data(session, - session_data->data, + if ((ret = gnutls_session_set_data(session, session_data->data, session_data->size)) < 0) { fail("client: Could not get session data\n"); } @@ -84,7 +83,8 @@ static int client_handshake(gnutls_session_t session, success("client: Success: Session was NOT resumed\n"); if (!resume) { - if ((ret = gnutls_session_get_data2(session, session_data)) < 0) { + if ((ret = gnutls_session_get_data2(session, session_data)) < + 0) { fail("client: Could not get session data\n"); } } @@ -103,8 +103,8 @@ static void client(int fd, int *resume, unsigned rounds, const char *prio) gnutls_certificate_credentials_t clientx509cred = NULL; for (unsigned i = 0; i < rounds; i++) { - assert(gnutls_certificate_allocate_credentials(&clientx509cred) - >= 0); + assert(gnutls_certificate_allocate_credentials( + &clientx509cred) >= 0); assert(gnutls_init(&session, GNUTLS_CLIENT) >= 0); assert(gnutls_priority_set_direct(session, prio, NULL) >= 0); @@ -130,12 +130,11 @@ static void client(int fd, int *resume, unsigned rounds, const char *prio) gnutls_free(session_data.data); } -typedef void (*gnutls_stek_rotation_callback_t)(const gnutls_datum_t * prev_key, - const gnutls_datum_t * new_key, +typedef void (*gnutls_stek_rotation_callback_t)(const gnutls_datum_t *prev_key, + const gnutls_datum_t *new_key, uint64_t t); -void _gnutls_set_session_ticket_key_rotation_callback(gnutls_session_t session, - gnutls_stek_rotation_callback_t - cb); +void _gnutls_set_session_ticket_key_rotation_callback( + gnutls_session_t session, gnutls_stek_rotation_callback_t cb); static void server(int fd, unsigned rounds, const char *prio) { @@ -153,13 +152,11 @@ static void server(int fd, unsigned rounds, const char *prio) for (unsigned i = 0; i < rounds; i++) { assert(gnutls_init(&session, GNUTLS_SERVER) >= 0); - assert(gnutls_certificate_allocate_credentials(&serverx509cred) - >= 0); - retval = - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, - &server_key, - GNUTLS_X509_FMT_PEM); + assert(gnutls_certificate_allocate_credentials( + &serverx509cred) >= 0); + retval = gnutls_certificate_set_x509_key_mem( + serverx509cred, &server_cert, &server_key, + GNUTLS_X509_FMT_PEM); if (retval < 0) fail("error setting key: %s\n", gnutls_strerror(retval)); @@ -169,11 +166,11 @@ static void server(int fd, unsigned rounds, const char *prio) serverx509cred); gnutls_db_set_cache_expiration(session, TICKET_EXPIRATION); - _gnutls_set_session_ticket_key_rotation_callback(session, - stek_rotation_callback); + _gnutls_set_session_ticket_key_rotation_callback( + session, stek_rotation_callback); - retval = gnutls_session_ticket_enable_server(session, - &session_ticket_key); + retval = gnutls_session_ticket_enable_server( + session, &session_ticket_key); if (retval != GNUTLS_E_SUCCESS) { fail("server: Could not enable session tickets: %s\n", gnutls_strerror(retval)); @@ -186,8 +183,8 @@ static void server(int fd, unsigned rounds, const char *prio) do { retval = gnutls_handshake(session); - } while (retval == GNUTLS_E_AGAIN - || retval == GNUTLS_E_INTERRUPTED); + } while (retval == GNUTLS_E_AGAIN || + retval == GNUTLS_E_INTERRUPTED); if (retval < 0) { fail("server: Handshake failed: %s\n", diff --git a/tests/resume-with-record-size-limit.c b/tests/resume-with-record-size-limit.c index 370130dfae..a323bdbefa 100644 --- a/tests/resume-with-record-size-limit.c +++ b/tests/resume-with-record-size-limit.c @@ -24,7 +24,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -40,31 +40,34 @@ int main(int argc, char **argv) #else -# ifndef _GNU_SOURCE -# define _GNU_SOURCE -# endif -# include -# include -# include -# include -# if !defined(_WIN32) -# include -# endif -# include -# include -# include -# include -# include -# include "utils.h" -# include "cert-common.h" -# include "virt-time.h" - -# define SKIP8(pos, total) { \ - uint8_t _s; \ - if (pos+1 > total) fail("error\n"); \ - _s = msg->data[pos]; \ - if ((size_t)(pos+1+_s) > total) fail("error\n"); \ - pos += 1+_s; \ +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif +#include +#include +#include +#include +#if !defined(_WIN32) +#include +#endif +#include +#include +#include +#include +#include +#include "utils.h" +#include "cert-common.h" +#include "virt-time.h" + +#define SKIP8(pos, total) \ + { \ + uint8_t _s; \ + if (pos + 1 > total) \ + fail("error\n"); \ + _s = msg->data[pos]; \ + if ((size_t)(pos + 1 + _s) > total) \ + fail("error\n"); \ + pos += 1 + _s; \ } pid_t child; @@ -72,14 +75,14 @@ pid_t child; /* A very basic TLS client, with anonymous authentication. */ -# define SESSIONS 2 -# define MAX_BUF 5*1024 -# define MSG "Hello TLS" +#define SESSIONS 2 +#define MAX_BUF 5 * 1024 +#define MSG "Hello TLS" /* 2^13, which is not supported by max_fragment_length */ -# define MAX_DATA_SIZE 8192 +#define MAX_DATA_SIZE 8192 -# define HANDSHAKE_SESSION_ID_POS (2+32) +#define HANDSHAKE_SESSION_ID_POS (2 + 32) static void tls_log_func(int level, const char *str) { @@ -90,7 +93,7 @@ static void tls_log_func(int level, const char *str) static int ext_callback(void *ctx, unsigned tls_id, const unsigned char *data, unsigned size) { - if (tls_id == 28) { /* record size limit */ + if (tls_id == 28) { /* record size limit */ uint16_t max_data_size; assert(size == 2); @@ -104,7 +107,7 @@ static int ext_callback(void *ctx, unsigned tls_id, const unsigned char *data, static int handshake_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { int ret; unsigned pos; @@ -154,8 +157,8 @@ static void client(int sds[], const char *prio) gnutls_certificate_allocate_credentials(&clientx509cred); - assert(gnutls_certificate_set_x509_key_mem(clientx509cred, - &cli_cert, &cli_key, + assert(gnutls_certificate_set_x509_key_mem(clientx509cred, &cli_cert, + &cli_key, GNUTLS_X509_FMT_PEM) >= 0); for (t = 0; t < SESSIONS; t++) { @@ -172,8 +175,8 @@ static void client(int sds[], const char *prio) clientx509cred); if (t == 0) { - ret = - gnutls_record_set_max_size(session, MAX_DATA_SIZE); + ret = gnutls_record_set_max_size(session, + MAX_DATA_SIZE); if (ret < 0) fail("gnutls_set_max_size: %s\n", gnutls_strerror(ret)); @@ -214,7 +217,7 @@ static void client(int sds[], const char *prio) if (ret < 0) fail("Getting resume data failed\n"); - } else { /* the second time we connect */ + } else { /* the second time we connect */ /* check if we actually resumed the previous session */ if (gnutls_session_is_resumed(session) == 0) { fail("- Previous session was resumed but NOT expected\n"); @@ -228,8 +231,7 @@ static void client(int sds[], const char *prio) } while (ret == GNUTLS_E_AGAIN); if (ret == 0) { if (debug) - success - ("client: Peer has closed the TLS connection\n"); + success("client: Peer has closed the TLS connection\n"); break; } else if (ret < 0) { fail("client: Error: %s\n", gnutls_strerror(ret)); @@ -285,8 +287,8 @@ static void server(int sds[], const char *prio) } gnutls_certificate_allocate_credentials(&serverx509cred); - assert(gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, + assert(gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM) >= 0); gnutls_session_ticket_key_generate(&session_ticket_key); @@ -340,12 +342,12 @@ static void server(int sds[], const char *prio) if (ret == 0) { if (debug) - success - ("server: Peer has closed the GnuTLS connection\n"); + success("server: Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0) { kill(child, SIGTERM); - fail("server: Received corrupted data(%d). Closing...\n", ret); + fail("server: Received corrupted data(%d). Closing...\n", + ret); break; } else if (ret > 0) { /* echo data back to the client @@ -424,4 +426,4 @@ void doit(void) run("NORMAL:-VERS-ALL:+VERS-TLS1.3"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/resume-with-stek-expiration.c b/tests/resume-with-stek-expiration.c index d1d4841624..3651c5577b 100644 --- a/tests/resume-with-stek-expiration.c +++ b/tests/resume-with-stek-expiration.c @@ -20,7 +20,7 @@ * */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,15 +33,15 @@ int main(int argc, char **argv) } #else -# include -# include -# include -# include -# include -# include -# include "utils.h" -# include "cert-common.h" -# include "virt-time.h" +#include +#include +#include +#include +#include +#include +#include "utils.h" +#include "cert-common.h" +#include "virt-time.h" /* * This will set the following values: @@ -49,25 +49,24 @@ int main(int argc, char **argv) * - Ticket key expiration: 1 second. * - Session ticket key rotation period: 3 seconds. */ -# define TICKET_EXPIRATION 1 /* seconds */ +#define TICKET_EXPIRATION 1 /* seconds */ unsigned num_stek_rotations; -static void stek_rotation_callback(const gnutls_datum_t * prev_key, - const gnutls_datum_t * new_key, uint64_t t) +static void stek_rotation_callback(const gnutls_datum_t *prev_key, + const gnutls_datum_t *new_key, uint64_t t) { num_stek_rotations++; success("STEK was rotated!\n"); } -typedef void (*gnutls_stek_rotation_callback_t)(const gnutls_datum_t * prev_key, - const gnutls_datum_t * new_key, +typedef void (*gnutls_stek_rotation_callback_t)(const gnutls_datum_t *prev_key, + const gnutls_datum_t *new_key, uint64_t t); -void _gnutls_set_session_ticket_key_rotation_callback(gnutls_session_t session, - gnutls_stek_rotation_callback_t - cb); +void _gnutls_set_session_ticket_key_rotation_callback( + gnutls_session_t session, gnutls_stek_rotation_callback_t cb); -static int handshake(gnutls_session_t session, gnutls_datum_t * session_data, +static int handshake(gnutls_session_t session, gnutls_datum_t *session_data, int resumption_should_succeed) { int ret; @@ -109,14 +108,13 @@ static int handshake(gnutls_session_t session, gnutls_datum_t * session_data, } static int resume_and_close(gnutls_session_t session, - gnutls_datum_t * session_data, + gnutls_datum_t *session_data, int resumption_should_succeed) { int ret; - ret = - gnutls_session_set_data(session, session_data->data, - session_data->size); + ret = gnutls_session_set_data(session, session_data->data, + session_data->size); if (ret < 0) { gnutls_perror(ret); fail("client: Could not get session data\n"); @@ -178,8 +176,8 @@ static void client(int fd, int *resumption_should_succeed, gnutls_deinit(session); for (unsigned i = 1; i < num_sessions; i++) { - assert(gnutls_certificate_allocate_credentials(&clientx509cred) - >= 0); + assert(gnutls_certificate_allocate_credentials( + &clientx509cred) >= 0); /* Initialize TLS layer */ assert(gnutls_init(&session, GNUTLS_CLIENT) >= 0); @@ -191,8 +189,8 @@ static void client(int fd, int *resumption_should_succeed, gnutls_transport_set_int(session, fd); - if (resume_and_close - (session, &session_data, resumption_should_succeed[i]) < 0) + if (resume_and_close(session, &session_data, + resumption_should_succeed[i]) < 0) return; if (clientx509cred) @@ -220,20 +218,19 @@ static void server(int fd, int *resumption_should_succeed, fail("gnutls_init() failed\n"); } - assert(gnutls_certificate_allocate_credentials(&serverx509cred) - >= 0); - assert(gnutls_certificate_set_x509_key_mem - (serverx509cred, &server_cert, &server_key, - GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_allocate_credentials( + &serverx509cred) >= 0); + assert(gnutls_certificate_set_x509_key_mem( + serverx509cred, &server_cert, &server_key, + GNUTLS_X509_FMT_PEM) >= 0); assert(gnutls_priority_set_direct(session, prio, NULL) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, serverx509cred); - retval = - gnutls_session_ticket_enable_server(session, - &session_ticket_key); + retval = gnutls_session_ticket_enable_server( + session, &session_ticket_key); if (retval != GNUTLS_E_SUCCESS) { gnutls_perror(retval); fail("server: Could not enable session tickets\n"); @@ -241,16 +238,16 @@ static void server(int fd, int *resumption_should_succeed, gnutls_db_set_cache_expiration(session, TICKET_EXPIRATION); - _gnutls_set_session_ticket_key_rotation_callback(session, - stek_rotation_callback); + _gnutls_set_session_ticket_key_rotation_callback( + session, stek_rotation_callback); gnutls_transport_set_int(session, fd); gnutls_handshake_set_timeout(session, get_timeout()); do { retval = gnutls_handshake(session); - } while (retval == GNUTLS_E_AGAIN - || retval == GNUTLS_E_INTERRUPTED); + } while (retval == GNUTLS_E_AGAIN || + retval == GNUTLS_E_INTERRUPTED); if (retval < 0) { fail("server: Handshake failed: %s\n", @@ -263,14 +260,12 @@ static void server(int fd, int *resumption_should_succeed, if (!resumption_should_succeed[i]) fail("server: Session was resumed (but should not)\n"); else - success - ("server: Success: Session was resumed\n"); + success("server: Success: Session was resumed\n"); } else { if (resumption_should_succeed[i]) fail("server: Session was not resumed (but should)\n"); else - success - ("server: Success: Session was NOT resumed\n"); + success("server: Success: Session was NOT resumed\n"); } gnutls_bye(session, GNUTLS_SHUT_RDWR); diff --git a/tests/resume.c b/tests/resume.c index 83e750af66..429453756c 100644 --- a/tests/resume.c +++ b/tests/resume.c @@ -24,7 +24,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -40,23 +40,23 @@ int main(int argc, char **argv) #else -# ifndef _GNU_SOURCE -# define _GNU_SOURCE -# endif -# include -# include -# include -# if !defined(_WIN32) -# include -# endif -# include -# include -# include -# include -# include -# include "utils.h" -# include "cert-common.h" -# include "virt-time.h" +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif +#include +#include +#include +#if !defined(_WIN32) +#include +#endif +#include +#include +#include +#include +#include +#include "utils.h" +#include "cert-common.h" +#include "virt-time.h" static void wrap_db_init(void); static void wrap_db_deinit(void); @@ -64,7 +64,7 @@ static int wrap_db_store(void *dbf, gnutls_datum_t key, gnutls_datum_t data); static gnutls_datum_t wrap_db_fetch(void *dbf, gnutls_datum_t key); static int wrap_db_delete(void *dbf, gnutls_datum_t key); -# define TLS_SESSION_CACHE 50 +#define TLS_SESSION_CACHE 50 enum session_ticket_enablement { ST_NONE = 0, @@ -96,185 +96,180 @@ struct params_res { pid_t child; struct params_res resume_tests[] = { -# ifndef TLS13 - {.desc = "try to resume from db", - .enable_db = 1, - .enable_session_ticket_server = ST_NONE, - .enable_session_ticket_client = ST_NONE, - .expect_resume = 1}, - {.desc = "try to resume from db with post_client_hello", - .enable_db = 1, - .enable_session_ticket_server = ST_NONE, - .enable_session_ticket_client = ST_NONE, - .call_post_client_hello = 1, - .expect_resume = 1}, - {.desc = "try to resume from db using resumed session's data", - .enable_db = 1, - .enable_session_ticket_server = ST_NONE, - .enable_session_ticket_client = ST_NONE, - .try_resumed_data = 1, - .expect_resume = 1}, - {.desc = "try to resume from db and check ALPN", - .enable_db = 1, - .enable_session_ticket_server = ST_NONE, - .enable_session_ticket_client = ST_NONE, - .try_alpn = 1, - .expect_resume = 1}, - {.desc = "try to resume from db (ext master secret -> none)", - .enable_db = 1, - .enable_session_ticket_server = ST_NONE, - .enable_session_ticket_client = ST_NONE, - .expect_resume = 0, - .first_no_ext_master = 0, - .second_no_ext_master = 1, - .no_fips = 1}, - {.desc = "try to resume from db (none -> ext master secret)", - .enable_db = 1, - .enable_session_ticket_server = ST_NONE, - .enable_session_ticket_client = ST_NONE, - .expect_resume = 0, - .first_no_ext_master = 1, - .second_no_ext_master = 0, - .no_fips = 1}, -# endif -# if defined(TLS13) +#ifndef TLS13 + { .desc = "try to resume from db", + .enable_db = 1, + .enable_session_ticket_server = ST_NONE, + .enable_session_ticket_client = ST_NONE, + .expect_resume = 1 }, + { .desc = "try to resume from db with post_client_hello", + .enable_db = 1, + .enable_session_ticket_server = ST_NONE, + .enable_session_ticket_client = ST_NONE, + .call_post_client_hello = 1, + .expect_resume = 1 }, + { .desc = "try to resume from db using resumed session's data", + .enable_db = 1, + .enable_session_ticket_server = ST_NONE, + .enable_session_ticket_client = ST_NONE, + .try_resumed_data = 1, + .expect_resume = 1 }, + { .desc = "try to resume from db and check ALPN", + .enable_db = 1, + .enable_session_ticket_server = ST_NONE, + .enable_session_ticket_client = ST_NONE, + .try_alpn = 1, + .expect_resume = 1 }, + { .desc = "try to resume from db (ext master secret -> none)", + .enable_db = 1, + .enable_session_ticket_server = ST_NONE, + .enable_session_ticket_client = ST_NONE, + .expect_resume = 0, + .first_no_ext_master = 0, + .second_no_ext_master = 1, + .no_fips = 1 }, + { .desc = "try to resume from db (none -> ext master secret)", + .enable_db = 1, + .enable_session_ticket_server = ST_NONE, + .enable_session_ticket_client = ST_NONE, + .expect_resume = 0, + .first_no_ext_master = 1, + .second_no_ext_master = 0, + .no_fips = 1 }, +#endif +#if defined(TLS13) /* only makes sense under TLS1.3 as negotiation involves a new * handshake with different parameters */ - {.desc = "try to resume from session ticket (different cipher order)", - .enable_db = 0, - .enable_session_ticket_server = ST_ALL, - .enable_session_ticket_client = ST_ALL, - .change_ciphersuite = 1, - .expect_resume = 1}, - {.desc = "try to resume from session ticket with post_client_hello", - .enable_db = 0, - .enable_session_ticket_server = ST_ALL, - .enable_session_ticket_client = ST_ALL, - .call_post_client_hello = 1, - .expect_resume = 1}, -# endif -# if defined(TLS13) && !defined(USE_PSK) - {.desc = "try to resume from session ticket (early start)", - .enable_db = 0, - .enable_session_ticket_server = ST_ALL, - .enable_session_ticket_client = ST_ALL, - .early_start = 1, - .expect_resume = 1}, -# endif -# if defined(TLS13) && defined(USE_PSK) + { .desc = "try to resume from session ticket (different cipher order)", + .enable_db = 0, + .enable_session_ticket_server = ST_ALL, + .enable_session_ticket_client = ST_ALL, + .change_ciphersuite = 1, + .expect_resume = 1 }, + { .desc = "try to resume from session ticket with post_client_hello", + .enable_db = 0, + .enable_session_ticket_server = ST_ALL, + .enable_session_ticket_client = ST_ALL, + .call_post_client_hello = 1, + .expect_resume = 1 }, +#endif +#if defined(TLS13) && !defined(USE_PSK) + { .desc = "try to resume from session ticket (early start)", + .enable_db = 0, + .enable_session_ticket_server = ST_ALL, + .enable_session_ticket_client = ST_ALL, + .early_start = 1, + .expect_resume = 1 }, +#endif +#if defined(TLS13) && defined(USE_PSK) /* early start should no happen on PSK. */ - {.desc = "try to resume from session ticket (early start)", - .enable_db = 0, - .enable_session_ticket_server = ST_ALL, - .enable_session_ticket_client = ST_ALL, - .no_early_start = 1, - .expect_resume = 1}, -# endif - {.desc = "try to resume from session ticket", - .enable_db = 0, - .enable_session_ticket_server = ST_ALL, - .enable_session_ticket_client = ST_ALL, - .expect_resume = 1}, -# ifdef TLS13 - {.desc = - "try to resume from session ticket (session ticket disabled for TLS 1.2)", - .enable_db = 0, - .enable_session_ticket_server = ST_TLS13_ONLY, - .enable_session_ticket_client = ST_TLS13_ONLY, - .expect_resume = 1}, -# else - {.desc = - "try to resume from session ticket (session ticket disabled for TLS 1.2)", - .enable_db = 0, - .enable_session_ticket_server = ST_TLS13_ONLY, - .enable_session_ticket_client = ST_TLS13_ONLY, - .expect_resume = 0}, -# endif - {.desc = "try to resume from session ticket (client cert)", - .enable_db = 0, - .client_cert = 1, - .enable_session_ticket_server = ST_ALL, - .enable_session_ticket_client = ST_ALL, - .expect_resume = 1}, - {.desc = "try to resume from session ticket (expired)", - .enable_db = 0, - .enable_session_ticket_server = ST_ALL, - .enable_session_ticket_client = ST_ALL, - .expire_ticket = 1, - .expect_resume = 0}, - {.desc = - "try to resume from session ticket using resumed session's data", - .enable_db = 0, - .enable_session_ticket_server = ST_ALL, - .enable_session_ticket_client = ST_ALL, - .try_resumed_data = 1, - .expect_resume = 1}, -# ifndef TLS13 - {.desc = - "try to resume from session ticket (ext master secret -> none)", - .enable_db = 0, - .enable_session_ticket_server = ST_ALL, - .enable_session_ticket_client = ST_ALL, - .expect_resume = 0, - .first_no_ext_master = 0, - .second_no_ext_master = 1, - .no_fips = 1}, - {.desc = - "try to resume from session ticket (none -> ext master secret)", - .enable_db = 0, - .enable_session_ticket_server = ST_ALL, - .enable_session_ticket_client = ST_ALL, - .expect_resume = 0, - .first_no_ext_master = 1, - .second_no_ext_master = 0, - .no_fips = 1}, - {.desc = "try to resume from session ticket (server only)", - .enable_db = 0, - .enable_session_ticket_server = ST_ALL, - .enable_session_ticket_client = ST_NONE, - .expect_resume = 0}, - {.desc = "try to resume from session ticket (client only)", - .enable_db = 0, - .enable_session_ticket_server = ST_NONE, - .enable_session_ticket_client = ST_ALL, - .expect_resume = 0}, - {.desc = "try to resume from db and ticket", - .enable_db = 1, - .enable_session_ticket_server = ST_ALL, - .enable_session_ticket_client = ST_ALL, - .expect_resume = 1}, - {.desc = "try to resume from db and different SNI", - .enable_db = 1, - .try_sni = 1, - .try_diff_sni = 1, - .expect_resume = 0}, - {.desc = "try to resume with ticket and different SNI", - .enable_session_ticket_server = ST_ALL, - .enable_session_ticket_client = ST_ALL, - .try_sni = 1, - .try_diff_sni = 1, - .expect_resume = 0}, - {.desc = "try to resume from db and same SNI", - .enable_db = 1, - .try_sni = 1, - .expect_resume = 1}, -# endif - {.desc = "try to resume with ticket and same SNI", - .enable_session_ticket_server = ST_ALL, - .enable_session_ticket_client = ST_ALL, - .try_sni = 1, - .expect_resume = 1}, - {NULL, -1} + { .desc = "try to resume from session ticket (early start)", + .enable_db = 0, + .enable_session_ticket_server = ST_ALL, + .enable_session_ticket_client = ST_ALL, + .no_early_start = 1, + .expect_resume = 1 }, +#endif + { .desc = "try to resume from session ticket", + .enable_db = 0, + .enable_session_ticket_server = ST_ALL, + .enable_session_ticket_client = ST_ALL, + .expect_resume = 1 }, +#ifdef TLS13 + { .desc = "try to resume from session ticket (session ticket disabled for TLS 1.2)", + .enable_db = 0, + .enable_session_ticket_server = ST_TLS13_ONLY, + .enable_session_ticket_client = ST_TLS13_ONLY, + .expect_resume = 1 }, +#else + { .desc = "try to resume from session ticket (session ticket disabled for TLS 1.2)", + .enable_db = 0, + .enable_session_ticket_server = ST_TLS13_ONLY, + .enable_session_ticket_client = ST_TLS13_ONLY, + .expect_resume = 0 }, +#endif + { .desc = "try to resume from session ticket (client cert)", + .enable_db = 0, + .client_cert = 1, + .enable_session_ticket_server = ST_ALL, + .enable_session_ticket_client = ST_ALL, + .expect_resume = 1 }, + { .desc = "try to resume from session ticket (expired)", + .enable_db = 0, + .enable_session_ticket_server = ST_ALL, + .enable_session_ticket_client = ST_ALL, + .expire_ticket = 1, + .expect_resume = 0 }, + { .desc = "try to resume from session ticket using resumed session's data", + .enable_db = 0, + .enable_session_ticket_server = ST_ALL, + .enable_session_ticket_client = ST_ALL, + .try_resumed_data = 1, + .expect_resume = 1 }, +#ifndef TLS13 + { .desc = "try to resume from session ticket (ext master secret -> none)", + .enable_db = 0, + .enable_session_ticket_server = ST_ALL, + .enable_session_ticket_client = ST_ALL, + .expect_resume = 0, + .first_no_ext_master = 0, + .second_no_ext_master = 1, + .no_fips = 1 }, + { .desc = "try to resume from session ticket (none -> ext master secret)", + .enable_db = 0, + .enable_session_ticket_server = ST_ALL, + .enable_session_ticket_client = ST_ALL, + .expect_resume = 0, + .first_no_ext_master = 1, + .second_no_ext_master = 0, + .no_fips = 1 }, + { .desc = "try to resume from session ticket (server only)", + .enable_db = 0, + .enable_session_ticket_server = ST_ALL, + .enable_session_ticket_client = ST_NONE, + .expect_resume = 0 }, + { .desc = "try to resume from session ticket (client only)", + .enable_db = 0, + .enable_session_ticket_server = ST_NONE, + .enable_session_ticket_client = ST_ALL, + .expect_resume = 0 }, + { .desc = "try to resume from db and ticket", + .enable_db = 1, + .enable_session_ticket_server = ST_ALL, + .enable_session_ticket_client = ST_ALL, + .expect_resume = 1 }, + { .desc = "try to resume from db and different SNI", + .enable_db = 1, + .try_sni = 1, + .try_diff_sni = 1, + .expect_resume = 0 }, + { .desc = "try to resume with ticket and different SNI", + .enable_session_ticket_server = ST_ALL, + .enable_session_ticket_client = ST_ALL, + .try_sni = 1, + .try_diff_sni = 1, + .expect_resume = 0 }, + { .desc = "try to resume from db and same SNI", + .enable_db = 1, + .try_sni = 1, + .expect_resume = 1 }, +#endif + { .desc = "try to resume with ticket and same SNI", + .enable_session_ticket_server = ST_ALL, + .enable_session_ticket_client = ST_ALL, + .try_sni = 1, + .expect_resume = 1 }, + { NULL, -1 } }; /* A very basic TLS client, with anonymous authentication. */ -# define SESSIONS 3 -# define MAX_BUF 5*1024 -# define MSG "Hello TLS" +#define SESSIONS 3 +#define MAX_BUF 5 * 1024 +#define MSG "Hello TLS" -# define HANDSHAKE_SESSION_ID_POS (2+32) +#define HANDSHAKE_SESSION_ID_POS (2 + 32) static void tls_log_func(int level, const char *str) { @@ -285,14 +280,14 @@ static void tls_log_func(int level, const char *str) static int post_client_hello_callback(gnutls_session_t session) { /* switches the supported ciphersuites to something compatible */ - assert(gnutls_priority_set_direct - (session, gnutls_session_get_ptr(session), NULL) >= 0); + assert(gnutls_priority_set_direct( + session, gnutls_session_get_ptr(session), NULL) >= 0); return 0; } static int hsk_hook_cb(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * _msg) + const gnutls_datum_t *_msg) { unsigned size; gnutls_datum_t msg = { _msg->data, _msg->size }; @@ -362,8 +357,8 @@ static void verify_alpn(gnutls_session_t session, struct params_res *params, exit(1); } - if (strlen(str) != selected.size - || memcmp(str, selected.data, selected.size) != 0) { + if (strlen(str) != selected.size || + memcmp(str, selected.data, selected.size) != 0) { fail("expected protocol %s, got %.*s\n", str, selected.size, selected.data); exit(1); @@ -373,7 +368,7 @@ static void verify_alpn(gnutls_session_t session, struct params_res *params, success("ALPN got: %s\n", str); } -static void verify_group(gnutls_session_t session, gnutls_group_t * group, +static void verify_group(gnutls_session_t session, gnutls_group_t *group, unsigned counter) { if (counter == 0) { @@ -393,7 +388,7 @@ static void verify_server_params(gnutls_session_t session, unsigned counter, { static char id[GNUTLS_MAX_SESSION_ID]; static size_t id_size = 0; -# if defined(USE_PSK) +#if defined(USE_PSK) const char *username; username = gnutls_psk_server_get_username(session); if (counter != 0) { @@ -403,12 +398,11 @@ static void verify_server_params(gnutls_session_t session, unsigned counter, if (strcmp(username, "test") != 0) fail("wrong username was returned on server side resumption\n"); } -# endif +#endif if (counter == 0 && params->early_start) { - if (! - (gnutls_session_get_flags(session) & - GNUTLS_SFLAGS_EARLY_START)) { + if (!(gnutls_session_get_flags(session) & + GNUTLS_SFLAGS_EARLY_START)) { fail("early start did not happen on %d!\n", counter); } } @@ -422,10 +416,11 @@ static void verify_server_params(gnutls_session_t session, unsigned counter, if (params->no_early_start) { if (gnutls_session_get_flags(session) & GNUTLS_SFLAGS_EARLY_START) { - fail("early start did happen on %d but was not expected!\n", counter); + fail("early start did happen on %d but was not expected!\n", + counter); } } -# if defined(USE_X509) +#if defined(USE_X509) unsigned int l; if (gnutls_certificate_type_get(session) != GNUTLS_CRT_X509) @@ -441,9 +436,10 @@ static void verify_server_params(gnutls_session_t session, unsigned counter, if (params->client_cert) { if (gnutls_certificate_get_peers(session, &l) == NULL || l < 1) - fail("no client certificate returned on server side (%s)\n", counter ? "resumed session" : "first session"); + fail("no client certificate returned on server side (%s)\n", + counter ? "resumed session" : "first session"); } -# endif +#endif /* verify whether the session ID remains the same between sessions */ if (counter == 0) { @@ -471,22 +467,22 @@ static void verify_server_params(gnutls_session_t session, unsigned counter, static void verify_client_params(gnutls_session_t session, unsigned counter) { -# if defined(USE_X509) +#if defined(USE_X509) unsigned int l; if (gnutls_certificate_get_peers(session, &l) == NULL || l < 1) fail("no server certificate returned on client side (%s)\n", counter ? "resumed session" : "first session"); -# else +#else return; -# endif +#endif } -# ifdef TLS12 -# define VERS_STR "+VERS-TLS1.2" -# endif -# ifdef TLS13 -# define VERS_STR "-VERS-ALL:+VERS-TLS1.3" -# endif +#ifdef TLS12 +#define VERS_STR "+VERS-TLS1.2" +#endif +#ifdef TLS13 +#define VERS_STR "-VERS-ALL:+VERS-TLS1.3" +#endif static void client(int sds[], struct params_res *params) { @@ -498,17 +494,23 @@ static void client(int sds[], struct params_res *params) char prio_str[256]; const char *dns_name1 = "example.com"; const char *dns_name2 = "www.example.com"; -# ifdef USE_PSK -# define PRIO_STR "NONE:"VERS_STR":+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+PSK:+CURVE-ALL" +#ifdef USE_PSK +#define PRIO_STR \ + "NONE:" VERS_STR \ + ":+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+PSK:+CURVE-ALL" const gnutls_datum_t pskkey = { (void *)"DEADBEEF", 8 }; gnutls_psk_client_credentials_t pskcred; -# elif defined(USE_ANON) -# define PRIO_STR "NONE:"VERS_STR":+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+ANON-DH:+CURVE-ALL" +#elif defined(USE_ANON) +#define PRIO_STR \ + "NONE:" VERS_STR \ + ":+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+ANON-DH:+CURVE-ALL" gnutls_anon_client_credentials_t anoncred; -# elif defined(USE_X509) -# define PRIO_STR "NONE:"VERS_STR":+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ECDHE-RSA:+RSA:+CURVE-ALL" +#elif defined(USE_X509) +#define PRIO_STR \ + "NONE:" VERS_STR \ + ":+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ECDHE-RSA:+RSA:+CURVE-ALL" gnutls_certificate_credentials_t clientx509cred; -# endif +#endif /* Need to enable anonymous KX specifically. */ @@ -521,22 +523,21 @@ static void client(int sds[], struct params_res *params) gnutls_global_set_log_function(tls_log_func); gnutls_global_set_log_level(4); } -# ifdef USE_PSK +#ifdef USE_PSK gnutls_psk_allocate_client_credentials(&pskcred); gnutls_psk_set_client_credentials(pskcred, "test", &pskkey, GNUTLS_PSK_KEY_HEX); -# elif defined(USE_ANON) +#elif defined(USE_ANON) gnutls_anon_allocate_client_credentials(&anoncred); -# elif defined(USE_X509) +#elif defined(USE_X509) gnutls_certificate_allocate_credentials(&clientx509cred); if (params->client_cert) { - assert(gnutls_certificate_set_x509_key_mem(clientx509cred, - &cli_cert, &cli_key, - GNUTLS_X509_FMT_PEM) - >= 0); + assert(gnutls_certificate_set_x509_key_mem( + clientx509cred, &cli_cert, &cli_key, + GNUTLS_X509_FMT_PEM) >= 0); } -# endif +#endif for (t = 0; t < SESSIONS; t++) { int sd = sds[t]; @@ -584,14 +585,14 @@ static void client(int sds[], struct params_res *params) /* put the anonymous credentials to the current session */ -# ifdef USE_PSK +#ifdef USE_PSK gnutls_credentials_set(session, GNUTLS_CRD_PSK, pskcred); -# elif defined(USE_ANON) +#elif defined(USE_ANON) gnutls_credentials_set(session, GNUTLS_CRD_ANON, anoncred); -# elif defined(USE_X509) +#elif defined(USE_X509) gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, clientx509cred); -# endif +#endif if (t > 0) { /* if this is not the first time we connect */ @@ -614,10 +615,9 @@ static void client(int sds[], struct params_res *params) } if (ext_master_secret_check) - gnutls_handshake_set_hook_function(session, - GNUTLS_HANDSHAKE_SERVER_HELLO, - GNUTLS_HOOK_PRE, - hsk_hook_cb); + gnutls_handshake_set_hook_function( + session, GNUTLS_HANDSHAKE_SERVER_HELLO, + GNUTLS_HOOK_PRE, hsk_hook_cb); gnutls_transport_set_int(session, sd); /* Perform the TLS handshake @@ -639,19 +639,19 @@ static void client(int sds[], struct params_res *params) ext_master_secret_check = 0; if (t == 0) { ext_master_secret_check = - gnutls_session_ext_master_secret_status(session); + gnutls_session_ext_master_secret_status( + session); /* get the session data size */ ret = gnutls_session_get_data2(session, &session_data); if (ret < 0) fail("Getting resume data failed\n"); - } else { /* the second time we connect */ + } else { /* the second time we connect */ if (params->try_resumed_data) { gnutls_free(session_data.data); - ret = - gnutls_session_get_data2(session, - &session_data); + ret = gnutls_session_get_data2(session, + &session_data); if (ret < 0) fail("Getting resume data failed\n"); } @@ -660,8 +660,7 @@ static void client(int sds[], struct params_res *params) if (gnutls_session_is_resumed(session) != 0) { if (params->expect_resume) { if (debug) - success - ("- Previous session was resumed\n"); + success("- Previous session was resumed\n"); } else fail("- Previous session was resumed but NOT expected\n"); } else { @@ -669,8 +668,7 @@ static void client(int sds[], struct params_res *params) fail("*** Previous session was NOT resumed\n"); } else { if (debug) - success - ("*** Previous session was NOT resumed (expected)\n"); + success("*** Previous session was NOT resumed (expected)\n"); } } @@ -678,7 +676,10 @@ static void client(int sds[], struct params_res *params) /* check if the expected cipher was negotiated */ if (gnutls_cipher_get(session) != GNUTLS_CIPHER_AES_128_GCM) { - fail("negotiated different cipher: %s\n", gnutls_cipher_get_name(gnutls_cipher_get(session))); + fail("negotiated different cipher: %s\n", + gnutls_cipher_get_name( + gnutls_cipher_get( + session))); } } } @@ -696,8 +697,7 @@ static void client(int sds[], struct params_res *params) } while (ret == GNUTLS_E_AGAIN); if (ret == 0) { if (debug) - success - ("client: Peer has closed the TLS connection\n"); + success("client: Peer has closed the TLS connection\n"); goto end; } else if (ret < 0) { fail("client: Error: %s\n", gnutls_strerror(ret)); @@ -720,30 +720,30 @@ static void client(int sds[], struct params_res *params) } gnutls_free(session_data.data); - end: -# ifdef USE_PSK +end: +#ifdef USE_PSK gnutls_psk_free_client_credentials(pskcred); -# elif defined(USE_ANON) +#elif defined(USE_ANON) gnutls_anon_free_client_credentials(anoncred); -# elif defined(USE_X509) +#elif defined(USE_X509) gnutls_certificate_free_credentials(clientx509cred); -# endif +#endif } -# define DH_BITS 1024 +#define DH_BITS 1024 /* These are global */ static gnutls_datum_t session_ticket_key = { NULL, 0 }; static gnutls_dh_params_t dh_params; -# ifdef USE_PSK +#ifdef USE_PSK gnutls_psk_server_credentials_t pskcred; -# elif defined(USE_ANON) +#elif defined(USE_ANON) gnutls_anon_server_credentials_t anoncred; -# elif defined(USE_X509) +#elif defined(USE_X509) gnutls_certificate_credentials_t serverx509cred; -# endif +#endif static int generate_dh_params(void) { @@ -763,19 +763,19 @@ static void global_stop(void) if (debug) success("global stop\n"); -# ifdef USE_PSK +#ifdef USE_PSK gnutls_psk_free_server_credentials(pskcred); -# elif defined(USE_ANON) +#elif defined(USE_ANON) gnutls_anon_free_server_credentials(anoncred); -# elif defined(USE_X509) +#elif defined(USE_X509) gnutls_certificate_free_credentials(serverx509cred); -# endif +#endif gnutls_dh_params_deinit(dh_params); } -# ifdef USE_PSK -static int -pskfunc(gnutls_session_t session, const char *username, gnutls_datum_t * key) +#ifdef USE_PSK +static int pskfunc(gnutls_session_t session, const char *username, + gnutls_datum_t *key) { if (debug) printf("psk: username %s\n", username); @@ -787,7 +787,7 @@ pskfunc(gnutls_session_t session, const char *username, gnutls_datum_t * key) key->size = 4; return 0; } -# endif +#endif static void server(int sds[], struct params_res *params) { @@ -809,26 +809,26 @@ static void server(int sds[], struct params_res *params) gnutls_global_set_log_function(tls_log_func); gnutls_global_set_log_level(4); } -# ifdef USE_PSK +#ifdef USE_PSK gnutls_psk_allocate_server_credentials(&pskcred); gnutls_psk_set_server_credentials_function(pskcred, pskfunc); -# elif defined(USE_ANON) +#elif defined(USE_ANON) gnutls_anon_allocate_server_credentials(&anoncred); -# elif defined(USE_X509) +#elif defined(USE_X509) gnutls_certificate_allocate_credentials(&serverx509cred); - assert(gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, + assert(gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM) >= 0); -# endif +#endif if (debug) success("Launched, generating DH parameters...\n"); generate_dh_params(); -# if USE_ANON +#if USE_ANON gnutls_anon_set_server_dh_params(anoncred, dh_params); -# endif +#endif if (params->enable_db) { wrap_db_init(); @@ -845,15 +845,15 @@ static void server(int sds[], struct params_res *params) /* avoid calling all the priority functions, since the defaults * are adequate. */ - assert(gnutls_priority_set_direct(session, - PRIO_STR, NULL) >= 0); + assert(gnutls_priority_set_direct(session, PRIO_STR, NULL) >= + 0); -# if defined(USE_X509) +#if defined(USE_X509) if (params->client_cert) { - gnutls_certificate_server_set_request(session, - GNUTLS_CERT_REQUIRE); + gnutls_certificate_server_set_request( + session, GNUTLS_CERT_REQUIRE); } -# endif +#endif gnutls_dh_set_prime_bits(session, DH_BITS); @@ -865,8 +865,8 @@ static void server(int sds[], struct params_res *params) } if (params->enable_session_ticket_server) - gnutls_session_ticket_enable_server(session, - &session_ticket_key); + gnutls_session_ticket_enable_server( + session, &session_ticket_key); append_alpn(session, params, t); @@ -874,21 +874,21 @@ static void server(int sds[], struct params_res *params) gnutls_db_set_cache_expiration(session, 45); virt_sec_sleep(60); } -# ifdef USE_PSK +#ifdef USE_PSK gnutls_credentials_set(session, GNUTLS_CRD_PSK, pskcred); -# elif defined(USE_ANON) +#elif defined(USE_ANON) gnutls_credentials_set(session, GNUTLS_CRD_ANON, anoncred); -# elif defined(USE_X509) +#elif defined(USE_X509) gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, serverx509cred); -# endif +#endif gnutls_transport_set_int(session, sd); gnutls_handshake_set_timeout(session, get_timeout()); if (params->call_post_client_hello) { gnutls_session_set_ptr(session, PRIO_STR); - gnutls_handshake_set_post_client_hello_function(session, - post_client_hello_callback); + gnutls_handshake_set_post_client_hello_function( + session, post_client_hello_callback); } do { @@ -928,12 +928,12 @@ static void server(int sds[], struct params_res *params) if (ret == 0) { if (debug) - success - ("server: Peer has closed the GnuTLS connection\n"); + success("server: Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0) { kill(child, SIGTERM); - fail("server: Received corrupted data(%d). Closing...\n", ret); + fail("server: Received corrupted data(%d). Closing...\n", + ret); break; } else if (ret > 0) { /* echo data back to the client @@ -1025,8 +1025,8 @@ void doit(void) * and session data. */ -# define MAX_SESSION_ID_SIZE 32 -# define MAX_SESSION_DATA_SIZE 1024 +#define MAX_SESSION_ID_SIZE 32 +#define MAX_SESSION_DATA_SIZE 1024 typedef struct { unsigned char session_id[MAX_SESSION_ID_SIZE]; @@ -1041,7 +1041,6 @@ static int cache_db_ptr = 0; static void wrap_db_init(void) { - /* allocate cache_db */ cache_db = calloc(1, TLS_SESSION_CACHE * sizeof(CACHE)); } @@ -1057,7 +1056,7 @@ static int wrap_db_store(void *dbf, gnutls_datum_t key, gnutls_datum_t data) { time_t t, e, now = time(0); -# ifdef DEBUG_CACHE +#ifdef DEBUG_CACHE if (debug) { unsigned int i; fprintf(stderr, "resume db storing (%d-%d): ", key.size, @@ -1072,7 +1071,7 @@ static int wrap_db_store(void *dbf, gnutls_datum_t key, gnutls_datum_t data) } fprintf(stderr, "\n"); } -# endif +#endif /* check the correctness of gnutls_db_check_entry_time() */ t = gnutls_db_check_entry_time(&data); @@ -1143,7 +1142,7 @@ static gnutls_datum_t wrap_db_fetch(void *dbf, gnutls_datum_t key) memcpy(res.data, cache_db[i].session_data, res.size); -# ifdef DEBUG_CACHE +#ifdef DEBUG_CACHE if (debug) { unsigned int j; printf("data:\n"); @@ -1154,7 +1153,7 @@ static gnutls_datum_t wrap_db_fetch(void *dbf, gnutls_datum_t key) } printf("\n"); } -# endif +#endif return res; } } @@ -1174,7 +1173,6 @@ static int wrap_db_delete(void *dbf, gnutls_datum_t key) for (i = 0; i < TLS_SESSION_CACHE; i++) { if (key.size == cache_db[i].session_id_size && memcmp(key.data, cache_db[i].session_id, key.size) == 0) { - cache_db[i].session_id_size = 0; cache_db[i].session_data_size = 0; @@ -1183,7 +1181,6 @@ static int wrap_db_delete(void *dbf, gnutls_datum_t key) } return -1; - } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/rfc7633-missing.c b/tests/rfc7633-missing.c index 5591f560e6..731151c1ba 100644 --- a/tests/rfc7633-missing.c +++ b/tests/rfc7633-missing.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,19 +35,19 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" /* This program tests that handshakes fail if the server does not include the * requested certificate status with the server certificate having @@ -58,7 +58,7 @@ int main(void) * Remark: Doesn't the MUST in section 4.3.3 para. 1 overrule the SHOULD of 4.2.3.1 para. 1? */ -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1464610242; if (t) @@ -78,57 +78,53 @@ static void client_log_func(int level, const char *str) } static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICBzCCAXCgAwIBAgIMVpjt8TL5Io/frpvkMA0GCSqGSIb3DQEBCwUAMCIxIDAe\n" - "BgNVBAMTF0dudVRMUyB0ZXN0IGNlcnRpZmljYXRlMB4XDTE2MDExNTEzMDI0MVoX\n" - "DTMyMDYxOTEzMDI0MVowIjEgMB4GA1UEAxMXR251VExTIHRlc3QgY2VydGlmaWNh\n" - "dGUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANe6XK+jDPAuqSdWqlOOqOt/\n" - "gXVMa5i+Suq3HvhLw2rE2g0AuOpMEx82FpPecu/GpF6ybrbKCohVdZCW7aZXvAw7\n" - "dg2XHr3p7H/Tqez7hWSga6BIznd+c5wxE/89yK6lYG7Ztoxamm+2vp9qvafwoDMn\n" - "9bcdkuWWnHNS1p/WyI6xAgMBAAGjQjBAMBEGCCsGAQUFBwEYBAUwAwIBBTAMBgNV\n" - "HRMBAf8EAjAAMB0GA1UdDgQWBBRTSzvcXshETAIgvzlIb0z+zSVSEDANBgkqhkiG\n" - "9w0BAQsFAAOBgQB+VcJuLPL2PMog0HZ8RRbqVvLU5d209ROg3s1oXUBFW8+AV+71\n" - "CsHg9Xx7vqKVwyKGI9ghds1B44lNPxGH2Sk1v2czjKbzwujo9+kLnDS6i0jyrDdn\n" - "um4ivpkwmlUFSQVXvENLwe9gTlIgN4+0I9WLcMTCDtHWkcxMRwCm2BMsXw==\n" - "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICBzCCAXCgAwIBAgIMVpjt8TL5Io/frpvkMA0GCSqGSIb3DQEBCwUAMCIxIDAe\n" + "BgNVBAMTF0dudVRMUyB0ZXN0IGNlcnRpZmljYXRlMB4XDTE2MDExNTEzMDI0MVoX\n" + "DTMyMDYxOTEzMDI0MVowIjEgMB4GA1UEAxMXR251VExTIHRlc3QgY2VydGlmaWNh\n" + "dGUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANe6XK+jDPAuqSdWqlOOqOt/\n" + "gXVMa5i+Suq3HvhLw2rE2g0AuOpMEx82FpPecu/GpF6ybrbKCohVdZCW7aZXvAw7\n" + "dg2XHr3p7H/Tqez7hWSga6BIznd+c5wxE/89yK6lYG7Ztoxamm+2vp9qvafwoDMn\n" + "9bcdkuWWnHNS1p/WyI6xAgMBAAGjQjBAMBEGCCsGAQUFBwEYBAUwAwIBBTAMBgNV\n" + "HRMBAf8EAjAAMB0GA1UdDgQWBBRTSzvcXshETAIgvzlIb0z+zSVSEDANBgkqhkiG\n" + "9w0BAQsFAAOBgQB+VcJuLPL2PMog0HZ8RRbqVvLU5d209ROg3s1oXUBFW8+AV+71\n" + "CsHg9Xx7vqKVwyKGI9ghds1B44lNPxGH2Sk1v2czjKbzwujo9+kLnDS6i0jyrDdn\n" + "um4ivpkwmlUFSQVXvENLwe9gTlIgN4+0I9WLcMTCDtHWkcxMRwCm2BMsXw==\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" - "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" - "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" - "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" - "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" - "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" - "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" - "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" - "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" - "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" - "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" - "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" - "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" + "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" + "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" + "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" + "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" + "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" + "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" + "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" + "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" + "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" + "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" + "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" + "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; static int received = 0; static int handshake_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { fail("received status request\n"); received = 1; return 0; } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd, const char *prio) { @@ -170,8 +166,7 @@ static void client(int fd, const char *prio) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret == GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM) { /* success */ @@ -187,8 +182,8 @@ static void client(int fd, const char *prio) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); if (received == 1) { fail("client: received certificate status when we shouldn't.\n"); @@ -200,16 +195,16 @@ static void client(int fd, const char *prio) gnutls_strerror(ret)); } else { if (status & GNUTLS_CERT_MISSING_OCSP_STATUS) { - success - ("client: Validation failed with GNUTLS_CERT_MISSING_OCSP_STATUS\n"); + success("client: Validation failed with GNUTLS_CERT_MISSING_OCSP_STATUS\n"); } else { - fail("client: Validation status does not include GNUTLS_CERT_MISSING_OCSP_STATUS. Status is %d\n", status); + fail("client: Validation status does not include GNUTLS_CERT_MISSING_OCSP_STATUS. Status is %d\n", + status); } } gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); @@ -266,14 +261,14 @@ static void server(int fd, const char *prio) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* do not wait for the peer to close the connection. */ gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); gnutls_deinit(session); @@ -337,4 +332,4 @@ void doit(void) start("default", "NORMAL"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/rfc7633-ok.c b/tests/rfc7633-ok.c index 71fc91a348..a7861e36af 100644 --- a/tests/rfc7633-ok.c +++ b/tests/rfc7633-ok.c @@ -22,7 +22,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -38,20 +38,20 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "utils.h" -# include "cert-common.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "utils.h" +#include "cert-common.h" /* This program tests that handshakes succeed if the server includes the * requested certificate status with the server certificate having @@ -60,7 +60,7 @@ int main(void) * See RFC 7633 */ -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1559941819; if (t) @@ -135,13 +135,13 @@ static int received = 0; static int handshake_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { received = 1; return 0; } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd, const char *prio) { @@ -159,8 +159,8 @@ static void client(int fd, const char *prio) } assert(gnutls_certificate_allocate_credentials(&x509_cred) >= 0); - assert(gnutls_certificate_set_x509_trust_mem - (x509_cred, &ca3_cert, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_trust_mem(x509_cred, &ca3_cert, + GNUTLS_X509_FMT_PEM) >= 0); assert(gnutls_init(&session, GNUTLS_CLIENT) >= 0); @@ -177,8 +177,7 @@ static void client(int fd, const char *prio) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed: %s\n", gnutls_strerror(ret)); } else { @@ -188,11 +187,11 @@ static void client(int fd, const char *prio) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); - if (received == 0 - && gnutls_protocol_get_version(session) == GNUTLS_TLS1_2) { + if (received == 0 && + gnutls_protocol_get_version(session) == GNUTLS_TLS1_2) { fail("client: did not receive certificate status when we should.\n"); } @@ -203,9 +202,10 @@ static void client(int fd, const char *prio) } else { if (status) { gnutls_datum_t tmp; - assert(gnutls_certificate_verification_status_print - (status, GNUTLS_CRT_X509, &tmp, 0) >= 0); - fail("client: Validation status is not success (%x: %s)\n", status, (char *)tmp.data); + assert(gnutls_certificate_verification_status_print( + status, GNUTLS_CRT_X509, &tmp, 0) >= 0); + fail("client: Validation status is not success (%x: %s)\n", + status, (char *)tmp.data); } } @@ -221,7 +221,7 @@ static void client(int fd, const char *prio) } static int status_func(gnutls_session_t session, void *ptr, - gnutls_datum_t * resp) + gnutls_datum_t *resp) { resp->data = gnutls_malloc(sizeof(ocsp_resp)); if (resp->data == NULL) @@ -250,9 +250,9 @@ static void server(int fd, const char *prio) } assert(gnutls_certificate_allocate_credentials(&x509_cred) >= 0); - assert(gnutls_certificate_set_x509_key_mem - (x509_cred, &server_ca3_tlsfeat_cert, &server_ca3_key, - GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem( + x509_cred, &server_ca3_tlsfeat_cert, &server_ca3_key, + GNUTLS_X509_FMT_PEM) >= 0); assert(gnutls_init(&session, GNUTLS_SERVER) >= 0); @@ -279,8 +279,8 @@ static void server(int fd, const char *prio) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* do not wait for the peer to close the connection. */ @@ -349,4 +349,4 @@ void doit(void) start("default", "NORMAL"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/rng-fork.c b/tests/rng-fork.c index 56ef086b01..dec5592be6 100644 --- a/tests/rng-fork.c +++ b/tests/rng-fork.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,7 +30,7 @@ #include #include #if !defined(_WIN32) -# include +#include #endif #include "utils.h" @@ -47,7 +47,7 @@ static void dump(const char *name, unsigned char *buf, int buf_size) printf("\n"); } -# define FILENAME "./rng-test" +#define FILENAME "./rng-test" void doit(void) { @@ -92,12 +92,14 @@ void doit(void) remove(FILENAME); if (ret != sizeof(buf1)) { - fail("error testing the random generator (%u).\n", i); + fail("error testing the random generator (%u).\n", + i); return; } if (memcmp(buf1, buf2, sizeof(buf1)) == 0) { - fail("error in the random generator (%u). Produces same valus after fork()\n", i); + fail("error in the random generator (%u). Produces same valus after fork()\n", + i); return; } if (debug) diff --git a/tests/rng-no-onload.c b/tests/rng-no-onload.c index 0b3b8da18c..77c1c5d59d 100644 --- a/tests/rng-no-onload.c +++ b/tests/rng-no-onload.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -47,7 +47,7 @@ static int _rnd_called = 0; * calls. */ int __attribute__((visibility("protected"))) - gnutls_rnd(gnutls_rnd_level_t level, void *data, size_t len) +gnutls_rnd(gnutls_rnd_level_t level, void *data, size_t len) { _rnd_called = 1; @@ -68,4 +68,4 @@ void doit(void) gnutls_global_deinit(); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/rng-op-key.c b/tests/rng-op-key.c index cfdc8a2529..28e7f71523 100644 --- a/tests/rng-op-key.c +++ b/tests/rng-op-key.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -29,7 +29,7 @@ #include #include #if !defined(_WIN32) -# include +#include #endif #include "utils.h" diff --git a/tests/rng-op-nonce.c b/tests/rng-op-nonce.c index eb23ed7d46..6602fd1383 100644 --- a/tests/rng-op-nonce.c +++ b/tests/rng-op-nonce.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -29,7 +29,7 @@ #include #include #if !defined(_WIN32) -# include +#include #endif #include "utils.h" diff --git a/tests/rng-op-random.c b/tests/rng-op-random.c index 7349fc4c2c..b2c7d79cba 100644 --- a/tests/rng-op-random.c +++ b/tests/rng-op-random.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -29,7 +29,7 @@ #include #include #if !defined(_WIN32) -# include +#include #endif #include "utils.h" diff --git a/tests/rng-op.c b/tests/rng-op.c index a765794fc0..fa3b8ee156 100644 --- a/tests/rng-op.c +++ b/tests/rng-op.c @@ -22,7 +22,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,7 +30,7 @@ #include #include #if !defined(_WIN32) -# include +#include #endif #include "utils.h" @@ -60,7 +60,7 @@ static void try(int rnd) } } -#define TMP_SIZE (65*1024) +#define TMP_SIZE (65 * 1024) tmp = malloc(TMP_SIZE); if (tmp == NULL) { fail("memory error\n"); @@ -70,7 +70,8 @@ static void try(int rnd) for (i = 0; i <= 65539; i++) { ret = gnutls_rnd(rnd, tmp, TMP_SIZE); if (ret < 0) { - fail("Error iterating RNG-%d more than %u times for %d data\n", rnd, i, TMP_SIZE); + fail("Error iterating RNG-%d more than %u times for %d data\n", + rnd, i, TMP_SIZE); exit(1); } } diff --git a/tests/rng-pthread.c b/tests/rng-pthread.c index 9c2f3932b7..345f25e25e 100644 --- a/tests/rng-pthread.c +++ b/tests/rng-pthread.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,11 +33,11 @@ #include #include #ifndef _WIN32 -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include #endif #include "utils.h" @@ -76,10 +76,9 @@ static void *start_thread(void *arg) pthread_exit(0); } -# define MAX_THREADS 48 +#define MAX_THREADS 48 -static -void do_thread_stuff(unsigned level) +static void do_thread_stuff(unsigned level) { int ret; thread_data_st *data; @@ -101,16 +100,15 @@ void do_thread_stuff(unsigned level) pthread_join(data[i].id, NULL); for (j = 0; j < MAX_THREADS; j++) { if (i != j) { - if (memcmp - (data[i].buf, data[j].buf, - sizeof(data[i].buf)) == 0) { - fail("identical data found in thread %d and %d\n", i, j); + if (memcmp(data[i].buf, data[j].buf, + sizeof(data[i].buf)) == 0) { + fail("identical data found in thread %d and %d\n", + i, j); } } } } free(data); - } void doit(void) @@ -124,4 +122,4 @@ void doit(void) gnutls_global_deinit(); } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/rng-sigint.c b/tests/rng-sigint.c index eae4c0972e..acc10f6a9d 100644 --- a/tests/rng-sigint.c +++ b/tests/rng-sigint.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -29,19 +29,20 @@ /* This program verifies whether the low-level random functions can operate * properly, even if interrupted by signals */ -#if defined(HAVE_SETITIMER) && (defined(HAVE_LINUX_GETRANDOM) || defined(__linux__)) +#if defined(HAVE_SETITIMER) && \ + (defined(HAVE_LINUX_GETRANDOM) || defined(__linux__)) -# include -# include -# include -# include -# include -# include -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include "utils.h" -# define _gnutls_debug_log printf -# define gnutls_assert() -# define gnutls_assert_val(val) val +#define _gnutls_debug_log printf +#define gnutls_assert() +#define gnutls_assert_val(val) val int _rnd_system_entropy_init(void); void _rnd_system_entropy_deinit(void); @@ -49,8 +50,8 @@ void _rnd_system_entropy_deinit(void); typedef int (*get_entropy_func)(void *rnd, size_t size); get_entropy_func _rnd_get_system_entropy; -# define RND_NO_INCLUDES -# include "../lib/nettle/sysrng-linux.c" +#define RND_NO_INCLUDES +#include "../lib/nettle/sysrng-linux.c" static volatile int stop_loop = 0; @@ -92,9 +93,8 @@ void doit(void) gnutls_strerror(ret)); } - if (memcmp - (empty, buf + sizeof(buf) - sizeof(empty) - 1, - sizeof(empty)) == 0) { + if (memcmp(empty, buf + sizeof(buf) - sizeof(empty) - 1, + sizeof(empty)) == 0) { fail("_rnd_get_system_entropy: did not fill buffer\n"); } } @@ -102,7 +102,7 @@ void doit(void) _rnd_system_entropy_deinit(); } #else -void doit(void); /* prototype to avoid warning with -Wmissing-prototypes */ +void doit(void); /* prototype to avoid warning with -Wmissing-prototypes */ void doit(void) { diff --git a/tests/rsa-encrypt-decrypt.c b/tests/rsa-encrypt-decrypt.c index 7676b0388a..795217e806 100644 --- a/tests/rsa-encrypt-decrypt.c +++ b/tests/rsa-encrypt-decrypt.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,9 +30,9 @@ #include #include #ifndef _WIN32 -# include -# include -# include +#include +#include +#include #endif #include #include @@ -43,56 +43,49 @@ /* sha1 hash of "hello" string */ const gnutls_datum_t hash_data = { - (void *) - "\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" - "\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", + (void *)"\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" + "\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", 20 }; -const gnutls_datum_t raw_data = { - (void *)"hello there", - 11 -}; +const gnutls_datum_t raw_data = { (void *)"hello there", 11 }; static char pem1_cert[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICHjCCAYmgAwIBAgIERiYdNzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTI3WhcNMDgwNDE3MTMyOTI3WjAdMRsw\n" - "GQYDVQQDExJHbnVUTFMgdGVzdCBjbGllbnQwgZwwCwYJKoZIhvcNAQEBA4GMADCB\n" - "iAKBgLtmQ/Xyxde2jMzF3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeL\n" - "ZIkiW8DdU3w77XwEu4C5KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKN\n" - "zj2AC41179gAgY8oBAOgIo1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjdjB0MAwG\n" - "A1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUDAweg\n" - "ADAdBgNVHQ4EFgQUTLkKm/odNON+3svSBxX+odrLaJEwHwYDVR0jBBgwFoAU6Twc\n" - "+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBALujmBJVZnvaTXr9cFRJ\n" - "jpfc/3X7sLUsMvumcDE01ls/cG5mIatmiyEU9qI3jbgUf82z23ON/acwJf875D3/\n" - "U7jyOsBJ44SEQITbin2yUeJMIm1tievvdNXBDfW95AM507ShzP12sfiJkJfjjdhy\n" - "dc8Siq5JojruiMizAf0pA7in\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIICHjCCAYmgAwIBAgIERiYdNzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTI3WhcNMDgwNDE3MTMyOTI3WjAdMRsw\n" + "GQYDVQQDExJHbnVUTFMgdGVzdCBjbGllbnQwgZwwCwYJKoZIhvcNAQEBA4GMADCB\n" + "iAKBgLtmQ/Xyxde2jMzF3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeL\n" + "ZIkiW8DdU3w77XwEu4C5KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKN\n" + "zj2AC41179gAgY8oBAOgIo1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjdjB0MAwG\n" + "A1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUDAweg\n" + "ADAdBgNVHQ4EFgQUTLkKm/odNON+3svSBxX+odrLaJEwHwYDVR0jBBgwFoAU6Twc\n" + "+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBALujmBJVZnvaTXr9cFRJ\n" + "jpfc/3X7sLUsMvumcDE01ls/cG5mIatmiyEU9qI3jbgUf82z23ON/acwJf875D3/\n" + "U7jyOsBJ44SEQITbin2yUeJMIm1tievvdNXBDfW95AM507ShzP12sfiJkJfjjdhy\n" + "dc8Siq5JojruiMizAf0pA7in\n" + "-----END CERTIFICATE-----\n"; static char pem1_key[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" - "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" - "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" - "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" - "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" - "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" - "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" - "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" - "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" - "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" - "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" - "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" - "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t cert_dat[] = { - {(void *)pem1_cert, sizeof(pem1_cert)} -}; - -const gnutls_datum_t key_dat[] = { - {(void *)pem1_key, sizeof(pem1_key)} -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" + "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" + "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" + "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" + "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" + "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" + "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" + "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" + "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" + "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" + "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" + "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" + "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t cert_dat[] = { { (void *)pem1_cert, sizeof(pem1_cert) } }; + +const gnutls_datum_t key_dat[] = { { (void *)pem1_key, sizeof(pem1_key) } }; void doit(void) { @@ -114,9 +107,8 @@ void doit(void) if (ret < 0) fail("gnutls_x509_privkey_init\n"); - ret = - gnutls_x509_privkey_import(key, &key_dat[i], - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_privkey_import(key, &key_dat[i], + GNUTLS_X509_FMT_PEM); if (ret < 0) fail("gnutls_x509_privkey_import\n"); @@ -136,9 +128,8 @@ void doit(void) if (ret < 0) fail("gnutls_x509_crt_init\n"); - ret = - gnutls_x509_crt_import(crt, &cert_dat[i], - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(crt, &cert_dat[i], + GNUTLS_X509_FMT_PEM); if (ret < 0) fail("gnutls_x509_crt_import\n"); @@ -162,9 +153,8 @@ void doit(void) /* try again with fixed length API */ memset(out2.data, 'A', out2.size); - ret = - gnutls_privkey_decrypt_data2(privkey, 0, &out, out2.data, - out2.size); + ret = gnutls_privkey_decrypt_data2(privkey, 0, &out, out2.data, + out2.size); if (ret < 0) fail("gnutls_privkey_decrypt_data\n"); @@ -190,9 +180,8 @@ void doit(void) /* try again with fixed length API */ memset(out2.data, 'A', out2.size); - ret = - gnutls_privkey_decrypt_data2(privkey, 0, &out, out2.data, - out2.size); + ret = gnutls_privkey_decrypt_data2(privkey, 0, &out, out2.data, + out2.size); if (ret < 0) fail("gnutls_privkey_decrypt_data\n"); diff --git a/tests/rsa-illegal-import.c b/tests/rsa-illegal-import.c index ca6e3301c8..86881a2e4d 100644 --- a/tests/rsa-illegal-import.c +++ b/tests/rsa-illegal-import.c @@ -18,7 +18,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -36,50 +36,46 @@ * on illegal key input */ static unsigned char rsa_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXQIBAAKBgQCpTrErF6KeHfaSBfQXLkw2AkrteEFca/jbWk2S0df5cRrsuC+R\n" - "nrpHnk4prJISVQZzF+s5qgzulvRaMD0vnlCDKPjDgRLkFyiT3pW5JZJqTKiILQBw\n" - "z6rqlQO7UWWqetc/gl9SHTq/vX5CDbA5Nxc9HJLkPX5Xl3wA12PAYmraugIDAQAB\n" - "AoGABMjQgOM+GTHHkgDREQah6LTP4T4QusfiVHCM2KVNcSMdG6tozLirkvKKSusx\n" - "hYsZj48ReqOvkd56MUJDuGDE7aQqhsrDnTgTnoYH7dFSY6acUucj5F6yeircFth4\n" - "lRko09HKZ5Fd1ngstPU35GsekUMq8vaHDrRzleydp+Z5lMECQQDP/cy68Jt7tMZT\n" - "oQQLhsddyoQG+2JiWz3PT9P9d5WdkMqzOYt6ADZ2m8HpmMcv32LQHtriSxy7JqXW\n" - "3uSnowkEAkEA0GMOXvV/8QnWKU2/byp3HVDQP57Vq/M37BhMbxoZDAHCaIz7v8k2\n" - "D7UBQdTeiUsm6gFJ1+E6YCnmTxdPRVuN6QJBALLLOQAGL5Jy/v4K7yA9dwpgOYiK\n" - "9rMYPhUFSXWdI+cz/Zt9vzFcF3V0RYhaRfgYLqg7retTqFoVSgBg0OxuUSMCQBtF\n" - "q37QAGOKVwXmz/P7icVDa024OtybIyl58J7luntwy4GlWdk6uyGJHdYAxvMO69Pa\n" - "QVDIgDxPn32gXlaEaekCQQCVhXc3zc+VX3nM4iCpXhlET2N75ULzsR+r6CdvtwSB\n" - "vXMBcuCE1aJHZDxqRx8XFZDZl+Ij/jrBMmtI15ebDuzH\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t rsa_key = { rsa_key_pem, - sizeof(rsa_key_pem) - 1 -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXQIBAAKBgQCpTrErF6KeHfaSBfQXLkw2AkrteEFca/jbWk2S0df5cRrsuC+R\n" + "nrpHnk4prJISVQZzF+s5qgzulvRaMD0vnlCDKPjDgRLkFyiT3pW5JZJqTKiILQBw\n" + "z6rqlQO7UWWqetc/gl9SHTq/vX5CDbA5Nxc9HJLkPX5Xl3wA12PAYmraugIDAQAB\n" + "AoGABMjQgOM+GTHHkgDREQah6LTP4T4QusfiVHCM2KVNcSMdG6tozLirkvKKSusx\n" + "hYsZj48ReqOvkd56MUJDuGDE7aQqhsrDnTgTnoYH7dFSY6acUucj5F6yeircFth4\n" + "lRko09HKZ5Fd1ngstPU35GsekUMq8vaHDrRzleydp+Z5lMECQQDP/cy68Jt7tMZT\n" + "oQQLhsddyoQG+2JiWz3PT9P9d5WdkMqzOYt6ADZ2m8HpmMcv32LQHtriSxy7JqXW\n" + "3uSnowkEAkEA0GMOXvV/8QnWKU2/byp3HVDQP57Vq/M37BhMbxoZDAHCaIz7v8k2\n" + "D7UBQdTeiUsm6gFJ1+E6YCnmTxdPRVuN6QJBALLLOQAGL5Jy/v4K7yA9dwpgOYiK\n" + "9rMYPhUFSXWdI+cz/Zt9vzFcF3V0RYhaRfgYLqg7retTqFoVSgBg0OxuUSMCQBtF\n" + "q37QAGOKVwXmz/P7icVDa024OtybIyl58J7luntwy4GlWdk6uyGJHdYAxvMO69Pa\n" + "QVDIgDxPn32gXlaEaekCQQCVhXc3zc+VX3nM4iCpXhlET2N75ULzsR+r6CdvtwSB\n" + "vXMBcuCE1aJHZDxqRx8XFZDZl+Ij/jrBMmtI15ebDuzH\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t rsa_key = { rsa_key_pem, sizeof(rsa_key_pem) - 1 }; static unsigned char p8_rsa_pem[] = - "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" - "MIICojAcBgoqhkiG9w0BDAEDMA4ECDxZ1/EW+8XWAgIUYASCAoBR6R3Z341vSRvs\n" - "/LMErKcKkAQ3THTZBpmYgR2mrJUjJBivzOuRTCRpgtjuQ4ht2Q7KV943mJXsqAFI\n" - "Jly5fuVQ5YmRGLW+LE5sv+AGwmsii/PvGfGa9al56tHLDSeXV2VH4fly45bQ7ipr\n" - "PZBiEgBToF/jqDFWleH2GTCnSLpc4B2cKkMO2c5RYrCCGNRK/jr1xVUDVzeiXZwE\n" - "dbdDaV2UG/Oeo7F48UmvuWgS9YSFSUJ4fKG1KLlAQMKtAQKX+B4oL6Jbeb1jwSCX\n" - "Q1H9hHXHTXbPGaIncPugotZNArwwrhesTszFE4NFMbg3QNKL1fabJJFIcOYIktwL\n" - "7HG3pSiU2rqUZgS59OMJgL4jJm1lipo8ruNIl/YCpZTombOAV2Wbvq/I0SbRRXbX\n" - "12lco8bQO1dgSkhhe58Vrs+ChaNajtNi8SjLS+Pi1tYYAVQjcQdxCGh4q8aZUhDv\n" - "5yRp/TUOMaZqkY6YzRAlERb9jzVeh97EsOURzLu8pQgVjcNDOUAZF67KSqlSGMh7\n" - "PdqknM/j8KaWmVMAUn4+PuWohkyjd1/1QhCnEtFZ1lbIfWrKXV76U7zyy0OTvFKw\n" - "qemHUbryOJu0dQHziWmdtJpS7abSuhoMnrByZD+jDfQoSX7BzmdmCQGinltITYY1\n" - "3iChqWC7jY02CiKZqTcdwkImvmDtDYOBr0uQSgBa4eh7nYmmcpdY4I6V5qAdo30w\n" - "oXNEMqM53Syx36Fp70/Vmy0KmK8+2T4UgxGVJEgTDsEhiwJtTXxdzgxc5npbTePa\n" - "abhFyIXIpqoUYZ9GPU8UjNEuF//wPY6klBp6VP0ixO6RqQKzbwr85EXbzoceBrLo\n" - "eng1/Czj\n" "-----END ENCRYPTED PRIVATE KEY-----\n"; - -const gnutls_datum_t p8_rsa_key = { p8_rsa_pem, - sizeof(p8_rsa_pem) - 1 -}; - -static -int check_x509_privkey(void) + "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" + "MIICojAcBgoqhkiG9w0BDAEDMA4ECDxZ1/EW+8XWAgIUYASCAoBR6R3Z341vSRvs\n" + "/LMErKcKkAQ3THTZBpmYgR2mrJUjJBivzOuRTCRpgtjuQ4ht2Q7KV943mJXsqAFI\n" + "Jly5fuVQ5YmRGLW+LE5sv+AGwmsii/PvGfGa9al56tHLDSeXV2VH4fly45bQ7ipr\n" + "PZBiEgBToF/jqDFWleH2GTCnSLpc4B2cKkMO2c5RYrCCGNRK/jr1xVUDVzeiXZwE\n" + "dbdDaV2UG/Oeo7F48UmvuWgS9YSFSUJ4fKG1KLlAQMKtAQKX+B4oL6Jbeb1jwSCX\n" + "Q1H9hHXHTXbPGaIncPugotZNArwwrhesTszFE4NFMbg3QNKL1fabJJFIcOYIktwL\n" + "7HG3pSiU2rqUZgS59OMJgL4jJm1lipo8ruNIl/YCpZTombOAV2Wbvq/I0SbRRXbX\n" + "12lco8bQO1dgSkhhe58Vrs+ChaNajtNi8SjLS+Pi1tYYAVQjcQdxCGh4q8aZUhDv\n" + "5yRp/TUOMaZqkY6YzRAlERb9jzVeh97EsOURzLu8pQgVjcNDOUAZF67KSqlSGMh7\n" + "PdqknM/j8KaWmVMAUn4+PuWohkyjd1/1QhCnEtFZ1lbIfWrKXV76U7zyy0OTvFKw\n" + "qemHUbryOJu0dQHziWmdtJpS7abSuhoMnrByZD+jDfQoSX7BzmdmCQGinltITYY1\n" + "3iChqWC7jY02CiKZqTcdwkImvmDtDYOBr0uQSgBa4eh7nYmmcpdY4I6V5qAdo30w\n" + "oXNEMqM53Syx36Fp70/Vmy0KmK8+2T4UgxGVJEgTDsEhiwJtTXxdzgxc5npbTePa\n" + "abhFyIXIpqoUYZ9GPU8UjNEuF//wPY6klBp6VP0ixO6RqQKzbwr85EXbzoceBrLo\n" + "eng1/Czj\n" + "-----END ENCRYPTED PRIVATE KEY-----\n"; + +const gnutls_datum_t p8_rsa_key = { p8_rsa_pem, sizeof(p8_rsa_pem) - 1 }; + +static int check_x509_privkey(void) { gnutls_x509_privkey_t key; int ret; @@ -99,8 +95,7 @@ int check_x509_privkey(void) return 0; } -static -int check_pkcs8_privkey1(void) +static int check_pkcs8_privkey1(void) { gnutls_x509_privkey_t key; int ret; @@ -111,9 +106,8 @@ int check_pkcs8_privkey1(void) if (ret < 0) fail("error: %s\n", gnutls_strerror(ret)); - ret = - gnutls_x509_privkey_import_pkcs8(key, &p8_rsa_key, - GNUTLS_X509_FMT_PEM, "1234", 0); + ret = gnutls_x509_privkey_import_pkcs8(key, &p8_rsa_key, + GNUTLS_X509_FMT_PEM, "1234", 0); if (ret != GNUTLS_E_PK_INVALID_PRIVKEY) fail("error: %s\n", gnutls_strerror(ret)); @@ -122,8 +116,7 @@ int check_pkcs8_privkey1(void) return 0; } -static -int check_pkcs8_privkey2(void) +static int check_pkcs8_privkey2(void) { gnutls_privkey_t key; int ret; @@ -134,9 +127,8 @@ int check_pkcs8_privkey2(void) if (ret < 0) fail("error: %s\n", gnutls_strerror(ret)); - ret = - gnutls_privkey_import_x509_raw(key, &p8_rsa_key, - GNUTLS_X509_FMT_PEM, "1234", 0); + ret = gnutls_privkey_import_x509_raw(key, &p8_rsa_key, + GNUTLS_X509_FMT_PEM, "1234", 0); if (ret != GNUTLS_E_PK_INVALID_PRIVKEY) fail("error: %s\n", gnutls_strerror(ret)); @@ -150,7 +142,8 @@ void doit(void) if (gnutls_fips140_mode_enabled()) exit(77); -#if NETTLE_VERSION_MAJOR < 3 || (NETTLE_VERSION_MAJOR == 3 && NETTLE_VERSION_MINOR <= 2) +#if NETTLE_VERSION_MAJOR < 3 || \ + (NETTLE_VERSION_MAJOR == 3 && NETTLE_VERSION_MINOR <= 2) /* These checks are enforced only on new versions of nettle */ exit(77); #else diff --git a/tests/rsa-psk-cb.c b/tests/rsa-psk-cb.c index c743491049..b84b7d415b 100644 --- a/tests/rsa-psk-cb.c +++ b/tests/rsa-psk-cb.c @@ -24,7 +24,7 @@ /* Tests the RSA-PSK ciphersuites under TLS1.2 */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -40,15 +40,15 @@ int main(int argc, char **argv) #else -# include -# include -# include -# include -# include -# include -# include -# include "cert-common.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include "cert-common.h" +#include "utils.h" /* A very basic TLS client, with PSK authentication. */ @@ -60,9 +60,8 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -static -int psk_cli_func(gnutls_session_t session, char **username, - gnutls_datum_t * key) +static int psk_cli_func(gnutls_session_t session, char **username, + gnutls_datum_t *key) { *username = gnutls_malloc(5); assert(*username != NULL); @@ -79,8 +78,8 @@ int psk_cli_func(gnutls_session_t session, char **username, return 0; } -# define MAX_BUF 1024 -# define MSG "Hello TLS" +#define MAX_BUF 1024 +#define MSG "Hello TLS" static void client(int sd) { @@ -108,9 +107,10 @@ static void client(int sd) gnutls_init(&session, GNUTLS_CLIENT); /* Use default priorities */ - assert(gnutls_priority_set_direct - (session, "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+RSA-PSK", - NULL) >= 0); + assert(gnutls_priority_set_direct( + session, + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+RSA-PSK", + NULL) >= 0); /* put the anonymous credentials to the current session */ @@ -155,7 +155,7 @@ static void client(int sd) gnutls_bye(session, GNUTLS_SHUT_RDWR); - end: +end: close(sd); @@ -170,11 +170,10 @@ static void client(int sd) /* This is a sample TLS 1.0 echo server, for PSK authentication. */ -# define MAX_BUF 1024 +#define MAX_BUF 1024 -static int -psk_server_func(gnutls_session_t session, const char *username, - gnutls_datum_t * key) +static int psk_server_func(gnutls_session_t session, const char *username, + gnutls_datum_t *key) { if (debug) printf("psk: username %s\n", username); @@ -218,18 +217,18 @@ static void server(int sd) psk_server_func); gnutls_psk_set_server_credentials_hint(server_pskcred, "hint"); gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&session, GNUTLS_SERVER); /* avoid calling all the priority functions, since the defaults * are adequate. */ - assert(gnutls_priority_set_direct - (session, "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+RSA-PSK", - NULL) >= 0); + assert(gnutls_priority_set_direct( + session, + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+RSA-PSK", + NULL) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_PSK, server_pskcred); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, serverx509cred); @@ -256,11 +255,11 @@ static void server(int sd) if (ret == 0) { if (debug) - success - ("server: Peer has closed the GnuTLS connection\n"); + success("server: Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0) { - fail("server: Received corrupted data(%d). Closing...\n", ret); + fail("server: Received corrupted data(%d). Closing...\n", + ret); break; } else if (ret > 0) { /* echo data back to the client @@ -317,4 +316,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/rsa-psk.c b/tests/rsa-psk.c index 78dd5f32d2..2ed463f3c3 100644 --- a/tests/rsa-psk.c +++ b/tests/rsa-psk.c @@ -24,7 +24,7 @@ /* Tests the RSA-PSK ciphersuites under TLS1.2 */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -40,15 +40,15 @@ int main(int argc, char **argv) #else -# include -# include -# include -# include -# include -# include -# include -# include "cert-common.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include "cert-common.h" +#include "utils.h" /* A very basic TLS client, with PSK authentication. */ @@ -60,8 +60,8 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -# define MAX_BUF 1024 -# define MSG "Hello TLS" +#define MAX_BUF 1024 +#define MSG "Hello TLS" static void client(int sd) { @@ -91,9 +91,9 @@ static void client(int sd) gnutls_init(&session, GNUTLS_CLIENT); /* Use default priorities */ - gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+RSA-PSK", - NULL); + gnutls_priority_set_direct( + session, "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+RSA-PSK", + NULL); /* put the anonymous credentials to the current session */ @@ -138,7 +138,7 @@ static void client(int sd) gnutls_bye(session, GNUTLS_SHUT_RDWR); - end: +end: close(sd); @@ -153,11 +153,10 @@ static void client(int sd) /* This is a sample TLS 1.0 echo server, for PSK authentication. */ -# define MAX_BUF 1024 +#define MAX_BUF 1024 -static int -psk_server_func(gnutls_session_t session, const char *username, - gnutls_datum_t * key) +static int psk_server_func(gnutls_session_t session, const char *username, + gnutls_datum_t *key) { if (debug) printf("psk: username %s\n", username); @@ -201,18 +200,17 @@ static void server(int sd) psk_server_func); gnutls_psk_set_server_credentials_hint(server_pskcred, "hint"); gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&session, GNUTLS_SERVER); /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+RSA-PSK", - NULL); + gnutls_priority_set_direct( + session, "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+RSA-PSK", + NULL); gnutls_credentials_set(session, GNUTLS_CRD_PSK, server_pskcred); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, serverx509cred); @@ -239,11 +237,11 @@ static void server(int sd) if (ret == 0) { if (debug) - success - ("server: Peer has closed the GnuTLS connection\n"); + success("server: Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0) { - fail("server: Received corrupted data(%d). Closing...\n", ret); + fail("server: Received corrupted data(%d). Closing...\n", + ret); break; } else if (ret > 0) { /* echo data back to the client @@ -300,4 +298,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/rsa-rsa-pss.c b/tests/rsa-rsa-pss.c index ec5e84c774..bced5cc1d2 100644 --- a/tests/rsa-rsa-pss.c +++ b/tests/rsa-rsa-pss.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -41,25 +41,22 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "<%d>| %s", level, str); } -const gnutls_datum_t raw_data = { - (void *)"hello there", - 11 -}; +const gnutls_datum_t raw_data = { (void *)"hello there", 11 }; static gnutls_fips140_context_t fips_context; -static void inv_sign_check(unsigned sigalgo, - gnutls_privkey_t privkey, int exp_error) +static void inv_sign_check(unsigned sigalgo, gnutls_privkey_t privkey, + int exp_error) { int ret; gnutls_datum_t signature; - ret = gnutls_privkey_sign_data2(privkey, sigalgo, 0, - &raw_data, &signature); + ret = gnutls_privkey_sign_data2(privkey, sigalgo, 0, &raw_data, + &signature); if (ret != exp_error) fail("gnutls_privkey_sign_data succeeded with %s and %s: %s\n", - gnutls_pk_get_name(gnutls_privkey_get_pk_algorithm - (privkey, NULL)), + gnutls_pk_get_name( + gnutls_privkey_get_pk_algorithm(privkey, NULL)), gnutls_sign_get_name(sigalgo), gnutls_strerror(ret)); if (ret == 0) @@ -85,7 +82,6 @@ static void inv_encryption_check(gnutls_pk_algorithm_t algorithm, gnutls_pk_get_name(algorithm), gnutls_strerror(ret)); gnutls_pubkey_deinit(pubkey); - } static void sign_verify_data(unsigned sigalgo, gnutls_privkey_t privkey, @@ -97,15 +93,15 @@ static void sign_verify_data(unsigned sigalgo, gnutls_privkey_t privkey, gnutls_datum_t signature = { NULL, 0 }; fips_push_context(fips_context); - ret = gnutls_privkey_sign_data2(privkey, sigalgo, sign_flags, - &raw_data, &signature); + ret = gnutls_privkey_sign_data2(privkey, sigalgo, sign_flags, &raw_data, + &signature); fips_pop_context(fips_context, sign_exp_state); if (ret != sign_exp_error) - fail("gnutls_x509_privkey_sign_data returned unexpected error: %s\n", gnutls_strerror(ret)); + fail("gnutls_x509_privkey_sign_data returned unexpected error: %s\n", + gnutls_strerror(ret)); if (ret < 0) { - success - ("skipping verification as signing is expected to fail\n"); + success("skipping verification as signing is expected to fail\n"); } else { gnutls_pubkey_t pubkey; @@ -116,11 +112,11 @@ static void sign_verify_data(unsigned sigalgo, gnutls_privkey_t privkey, if (ret < 0) fail("gnutls_pubkey_import_privkey\n"); - ret = gnutls_pubkey_verify_data2(pubkey, sigalgo, - verify_flags, &raw_data, - &signature); + ret = gnutls_pubkey_verify_data2(pubkey, sigalgo, verify_flags, + &raw_data, &signature); if (ret != verify_exp_error) - fail("gnutls_pubkey_verify_data2 returned unexpected error: %s\n", gnutls_strerror(ret)); + fail("gnutls_pubkey_verify_data2 returned unexpected error: %s\n", + gnutls_strerror(ret)); gnutls_pubkey_deinit(pubkey); } @@ -128,9 +124,9 @@ static void sign_verify_data(unsigned sigalgo, gnutls_privkey_t privkey, gnutls_free(signature.data); } -static void -prepare_keys(gnutls_privkey_t * pkey_rsa_pss, gnutls_privkey_t * pkey_rsa, - gnutls_digest_algorithm_t dig, size_t salt_size) +static void prepare_keys(gnutls_privkey_t *pkey_rsa_pss, + gnutls_privkey_t *pkey_rsa, + gnutls_digest_algorithm_t dig, size_t salt_size) { gnutls_privkey_t pkey; gnutls_x509_privkey_t tkey; @@ -158,16 +154,16 @@ prepare_keys(gnutls_privkey_t * pkey_rsa_pss, gnutls_privkey_t * pkey_rsa, /* import RSA-PSS version of key */ assert(gnutls_privkey_init(pkey_rsa_pss) >= 0); - assert(gnutls_privkey_import_x509_raw - (*pkey_rsa_pss, &tmp, GNUTLS_X509_FMT_PEM, NULL, 0) >= 0); + assert(gnutls_privkey_import_x509_raw( + *pkey_rsa_pss, &tmp, GNUTLS_X509_FMT_PEM, NULL, 0) >= 0); gnutls_free(tmp.data); /* import RSA version of key */ gnutls_x509_privkey_export2(tkey, GNUTLS_X509_FMT_PEM, &tmp); assert(gnutls_privkey_init(pkey_rsa) >= 0); - assert(gnutls_privkey_import_x509_raw - (*pkey_rsa, &tmp, GNUTLS_X509_FMT_PEM, NULL, 0) >= 0); + assert(gnutls_privkey_import_x509_raw( + *pkey_rsa, &tmp, GNUTLS_X509_FMT_PEM, NULL, 0) >= 0); gnutls_x509_privkey_deinit(tkey); gnutls_free(tmp.data); @@ -248,19 +244,17 @@ void doit(void) /* Use the mismatched salt length with the digest length */ prepare_keys(&pkey_rsa_pss, &pkey_rsa, GNUTLS_DIG_SHA256, 48); - sign_verify_data(GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, pkey_rsa_pss, - 0, 0, 0, 0, GNUTLS_FIPS140_OP_NOT_APPROVED); + sign_verify_data(GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, pkey_rsa_pss, 0, 0, 0, + 0, GNUTLS_FIPS140_OP_NOT_APPROVED); sign_verify_data(GNUTLS_SIGN_RSA_PSS_SHA256, pkey_rsa_pss, - GNUTLS_PRIVKEY_FLAG_RSA_PSS_FIXED_SALT_LENGTH, - 0, GNUTLS_E_CONSTRAINT_ERROR, 0, + GNUTLS_PRIVKEY_FLAG_RSA_PSS_FIXED_SALT_LENGTH, 0, + GNUTLS_E_CONSTRAINT_ERROR, 0, /* The error is caught before calling the actual * signing operation. */ GNUTLS_FIPS140_OP_INITIAL); - sign_verify_data(GNUTLS_SIGN_RSA_PSS_SHA256, pkey_rsa_pss, - 0, - GNUTLS_VERIFY_RSA_PSS_FIXED_SALT_LENGTH, - 0, + sign_verify_data(GNUTLS_SIGN_RSA_PSS_SHA256, pkey_rsa_pss, 0, + GNUTLS_VERIFY_RSA_PSS_FIXED_SALT_LENGTH, 0, GNUTLS_E_PK_SIG_VERIFY_FAILED, GNUTLS_FIPS140_OP_NOT_APPROVED); @@ -271,16 +265,14 @@ void doit(void) sign_verify_data(GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, pkey_rsa, 0, 0, 0, 0, GNUTLS_FIPS140_OP_NOT_APPROVED); sign_verify_data(GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, pkey_rsa, - GNUTLS_PRIVKEY_FLAG_RSA_PSS_FIXED_SALT_LENGTH, - 0, GNUTLS_E_CONSTRAINT_ERROR, 0, + GNUTLS_PRIVKEY_FLAG_RSA_PSS_FIXED_SALT_LENGTH, 0, + GNUTLS_E_CONSTRAINT_ERROR, 0, /* The error is caught before calling the actual * signing operation. */ GNUTLS_FIPS140_OP_INITIAL); - sign_verify_data(GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, pkey_rsa, - 0, - GNUTLS_VERIFY_RSA_PSS_FIXED_SALT_LENGTH, - 0, + sign_verify_data(GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, pkey_rsa, 0, + GNUTLS_VERIFY_RSA_PSS_FIXED_SALT_LENGTH, 0, GNUTLS_E_PK_SIG_VERIFY_FAILED, GNUTLS_FIPS140_OP_NOT_APPROVED); diff --git a/tests/safe-renegotiation/srn0.c b/tests/safe-renegotiation/srn0.c index 905aa2aed5..9521599e98 100644 --- a/tests/safe-renegotiation/srn0.c +++ b/tests/safe-renegotiation/srn0.c @@ -28,7 +28,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -47,45 +47,42 @@ static void tls_log_func(int level, const char *str) } static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" - "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" - "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" - "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" - "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" - "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" - "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" - "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" - "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" - "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" - "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" - "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" + "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" + "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" + "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" + "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" + "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" + "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" + "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" + "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" + "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" + "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" + "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" - "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" - "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" - "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" - "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" - "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" - "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" - "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" - "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" - "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" - "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" - "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" - "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" + "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" + "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" + "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" + "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" + "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" + "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" + "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" + "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" + "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" + "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" + "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" + "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; void doit(void) { @@ -106,9 +103,8 @@ void doit(void) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); gnutls_priority_set_direct(server, "NORMAL:-VERS-ALL:+VERS-TLS1.2", @@ -135,10 +131,10 @@ void doit(void) exit(1); } - if (! - (gnutls_session_get_flags(client) & - GNUTLS_SFLAGS_SAFE_RENEGOTIATION) -|| !(gnutls_session_get_flags(server) & GNUTLS_SFLAGS_SAFE_RENEGOTIATION)) { + if (!(gnutls_session_get_flags(client) & + GNUTLS_SFLAGS_SAFE_RENEGOTIATION) || + !(gnutls_session_get_flags(server) & + GNUTLS_SFLAGS_SAFE_RENEGOTIATION)) { tls_log_func(0, "Session not using safe renegotiation!\n"); exit(1); } @@ -162,17 +158,19 @@ void doit(void) if (!gnutls_safe_renegotiation_status(client) || !gnutls_safe_renegotiation_status(server)) { - tls_log_func(0, - "Rehandshaked session not using safe renegotiation!\n"); + tls_log_func( + 0, + "Rehandshaked session not using safe renegotiation!\n"); exit(1); } - if (! - (gnutls_session_get_flags(client) & - GNUTLS_SFLAGS_SAFE_RENEGOTIATION) -|| !(gnutls_session_get_flags(server) & GNUTLS_SFLAGS_SAFE_RENEGOTIATION)) { - tls_log_func(0, - "Rehandshaked session not using safe renegotiation!\n"); + if (!(gnutls_session_get_flags(client) & + GNUTLS_SFLAGS_SAFE_RENEGOTIATION) || + !(gnutls_session_get_flags(server) & + GNUTLS_SFLAGS_SAFE_RENEGOTIATION)) { + tls_log_func( + 0, + "Rehandshaked session not using safe renegotiation!\n"); exit(1); } diff --git a/tests/safe-renegotiation/srn1.c b/tests/safe-renegotiation/srn1.c index 3f29c051b9..fcf2541f37 100644 --- a/tests/safe-renegotiation/srn1.c +++ b/tests/safe-renegotiation/srn1.c @@ -27,7 +27,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -46,45 +46,42 @@ static void tls_log_func(int level, const char *str) } static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" - "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" - "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" - "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" - "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" - "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" - "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" - "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" - "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" - "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" - "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" - "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" + "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" + "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" + "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" + "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" + "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" + "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" + "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" + "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" + "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" + "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" + "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" - "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" - "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" - "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" - "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" - "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" - "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" - "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" - "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" - "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" - "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" - "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" - "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" + "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" + "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" + "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" + "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" + "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" + "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" + "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" + "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" + "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" + "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" + "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" + "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; void doit(void) { @@ -105,14 +102,13 @@ void doit(void) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); - gnutls_priority_set_direct(server, - "NORMAL:-VERS-ALL:+VERS-TLS1.2:%SAFE_RENEGOTIATION", - NULL); + gnutls_priority_set_direct( + server, "NORMAL:-VERS-ALL:+VERS-TLS1.2:%SAFE_RENEGOTIATION", + NULL); gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); gnutls_transport_set_ptr(server, server); @@ -121,24 +117,25 @@ void doit(void) gnutls_certificate_allocate_credentials(&clientx509cred); gnutls_init(&client, GNUTLS_CLIENT); gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, clientx509cred); - gnutls_priority_set_direct(client, - "NORMAL:-VERS-ALL:+VERS-TLS1.2:%DISABLE_SAFE_RENEGOTIATION", - NULL); + gnutls_priority_set_direct( + client, + "NORMAL:-VERS-ALL:+VERS-TLS1.2:%DISABLE_SAFE_RENEGOTIATION", + NULL); gnutls_transport_set_push_function(client, client_push); gnutls_transport_set_pull_function(client, client_pull); gnutls_transport_set_ptr(client, client); /* Check that initially no session use the extension. */ - if (gnutls_safe_renegotiation_status(server) - || gnutls_safe_renegotiation_status(client)) { + if (gnutls_safe_renegotiation_status(server) || + gnutls_safe_renegotiation_status(client)) { puts("Client or server using extension before handshake?"); abort(); } if ((gnutls_session_get_flags(client) & - GNUTLS_SFLAGS_SAFE_RENEGOTIATION) - || (gnutls_session_get_flags(server) & - GNUTLS_SFLAGS_SAFE_RENEGOTIATION)) { + GNUTLS_SFLAGS_SAFE_RENEGOTIATION) || + (gnutls_session_get_flags(server) & + GNUTLS_SFLAGS_SAFE_RENEGOTIATION)) { puts("Client or server using extension before handshake?"); abort(); } diff --git a/tests/safe-renegotiation/srn2.c b/tests/safe-renegotiation/srn2.c index 3857b000fe..b0bec754db 100644 --- a/tests/safe-renegotiation/srn2.c +++ b/tests/safe-renegotiation/srn2.c @@ -25,7 +25,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -44,45 +44,42 @@ static void tls_log_func(int level, const char *str) } static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" - "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" - "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" - "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" - "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" - "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" - "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" - "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" - "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" - "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" - "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" - "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" + "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" + "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" + "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" + "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" + "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" + "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" + "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" + "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" + "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" + "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" + "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" - "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" - "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" - "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" - "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" - "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" - "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" - "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" - "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" - "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" - "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" - "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" - "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" + "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" + "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" + "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" + "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" + "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" + "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" + "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" + "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" + "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" + "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" + "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" + "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; void doit(void) { @@ -103,9 +100,8 @@ void doit(void) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); gnutls_priority_set_direct(server, "NORMAL:-VERS-ALL:+VERS-TLS1.2", @@ -125,16 +121,16 @@ void doit(void) gnutls_transport_set_ptr(client, client); /* Check that initially no session use the extension. */ - if (gnutls_safe_renegotiation_status(server) - || gnutls_safe_renegotiation_status(client)) { + if (gnutls_safe_renegotiation_status(server) || + gnutls_safe_renegotiation_status(client)) { puts("Client or server using extension before handshake?"); abort(); } if ((gnutls_session_get_flags(client) & - GNUTLS_SFLAGS_SAFE_RENEGOTIATION) - || (gnutls_session_get_flags(server) & - GNUTLS_SFLAGS_SAFE_RENEGOTIATION)) { + GNUTLS_SFLAGS_SAFE_RENEGOTIATION) || + (gnutls_session_get_flags(server) & + GNUTLS_SFLAGS_SAFE_RENEGOTIATION)) { puts("Client or server using extension before handshake?"); abort(); } @@ -142,16 +138,16 @@ void doit(void) HANDSHAKE(client, server); /* Check that both sessions use the extension. */ - if (!gnutls_safe_renegotiation_status(server) - || !gnutls_safe_renegotiation_status(client)) { + if (!gnutls_safe_renegotiation_status(server) || + !gnutls_safe_renegotiation_status(client)) { puts("Client or server not using safe renegotiation extension?"); abort(); } - if (! - (gnutls_session_get_flags(client) & - GNUTLS_SFLAGS_SAFE_RENEGOTIATION) -|| !(gnutls_session_get_flags(server) & GNUTLS_SFLAGS_SAFE_RENEGOTIATION)) { + if (!(gnutls_session_get_flags(client) & + GNUTLS_SFLAGS_SAFE_RENEGOTIATION) || + !(gnutls_session_get_flags(server) & + GNUTLS_SFLAGS_SAFE_RENEGOTIATION)) { puts("Client or server not using safe renegotiation extension?"); abort(); } @@ -174,16 +170,16 @@ void doit(void) HANDSHAKE(client, server); /* Check that session still use the extension. */ - if (!gnutls_safe_renegotiation_status(server) - || !gnutls_safe_renegotiation_status(client)) { + if (!gnutls_safe_renegotiation_status(server) || + !gnutls_safe_renegotiation_status(client)) { puts("Client or server not using safe renegotiation extension?"); abort(); } - if (! - (gnutls_session_get_flags(client) & - GNUTLS_SFLAGS_SAFE_RENEGOTIATION) -|| !(gnutls_session_get_flags(server) & GNUTLS_SFLAGS_SAFE_RENEGOTIATION)) { + if (!(gnutls_session_get_flags(client) & + GNUTLS_SFLAGS_SAFE_RENEGOTIATION) || + !(gnutls_session_get_flags(server) & + GNUTLS_SFLAGS_SAFE_RENEGOTIATION)) { puts("Client or server not using safe renegotiation extension?"); abort(); } diff --git a/tests/safe-renegotiation/srn3.c b/tests/safe-renegotiation/srn3.c index 049c41f610..cd019e63f4 100644 --- a/tests/safe-renegotiation/srn3.c +++ b/tests/safe-renegotiation/srn3.c @@ -27,7 +27,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -46,45 +46,42 @@ static void tls_log_func(int level, const char *str) } static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" - "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" - "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" - "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" - "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" - "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" - "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" - "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" - "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" - "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" - "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" - "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" + "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" + "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" + "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" + "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" + "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" + "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" + "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" + "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" + "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" + "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" + "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" - "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" - "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" - "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" - "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" - "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" - "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" - "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" - "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" - "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" - "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" - "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" - "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" + "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" + "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" + "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" + "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" + "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" + "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" + "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" + "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" + "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" + "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" + "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" + "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; void doit(void) { @@ -105,14 +102,14 @@ void doit(void) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); - gnutls_priority_set_direct(server, - "NORMAL:-VERS-ALL:+VERS-TLS1.2:%DISABLE_SAFE_RENEGOTIATION", - NULL); + gnutls_priority_set_direct( + server, + "NORMAL:-VERS-ALL:+VERS-TLS1.2:%DISABLE_SAFE_RENEGOTIATION", + NULL); gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); gnutls_transport_set_ptr(server, server); @@ -121,30 +118,30 @@ void doit(void) gnutls_certificate_allocate_credentials(&clientx509cred); gnutls_init(&client, GNUTLS_CLIENT); gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, clientx509cred); - gnutls_priority_set_direct(client, - "NORMAL:-VERS-ALL:+VERS-TLS1.2:%SAFE_RENEGOTIATION", - NULL); + gnutls_priority_set_direct( + client, "NORMAL:-VERS-ALL:+VERS-TLS1.2:%SAFE_RENEGOTIATION", + NULL); gnutls_transport_set_push_function(client, client_push); gnutls_transport_set_pull_function(client, client_pull); gnutls_transport_set_ptr(client, client); /* Check that initially no session use the extension. */ - if (gnutls_safe_renegotiation_status(server) - || gnutls_safe_renegotiation_status(client)) { + if (gnutls_safe_renegotiation_status(server) || + gnutls_safe_renegotiation_status(client)) { puts("Client or server using extension before handshake?"); abort(); } if ((gnutls_session_get_flags(client) & - GNUTLS_SFLAGS_SAFE_RENEGOTIATION) - || (gnutls_session_get_flags(server) & - GNUTLS_SFLAGS_SAFE_RENEGOTIATION)) { + GNUTLS_SFLAGS_SAFE_RENEGOTIATION) || + (gnutls_session_get_flags(server) & + GNUTLS_SFLAGS_SAFE_RENEGOTIATION)) { puts("Client or server using extension before handshake?"); abort(); } - HANDSHAKE_EXPECT(client, server, - GNUTLS_E_SAFE_RENEGOTIATION_FAILED, GNUTLS_E_AGAIN); + HANDSHAKE_EXPECT(client, server, GNUTLS_E_SAFE_RENEGOTIATION_FAILED, + GNUTLS_E_AGAIN); gnutls_bye(client, GNUTLS_SHUT_RDWR); gnutls_bye(server, GNUTLS_SHUT_RDWR); diff --git a/tests/safe-renegotiation/srn4.c b/tests/safe-renegotiation/srn4.c index 685725262f..caa6baa9b1 100644 --- a/tests/safe-renegotiation/srn4.c +++ b/tests/safe-renegotiation/srn4.c @@ -27,7 +27,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -46,45 +46,42 @@ static void tls_log_func(int level, const char *str) } static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" - "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" - "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" - "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" - "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" - "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" - "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" - "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" - "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" - "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" - "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" - "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" + "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" + "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" + "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" + "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" + "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" + "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" + "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" + "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" + "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" + "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" + "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" - "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" - "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" - "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" - "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" - "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" - "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" - "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" - "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" - "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" - "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" - "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" - "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" + "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" + "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" + "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" + "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" + "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" + "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" + "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" + "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" + "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" + "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" + "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" + "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; void doit(void) { @@ -105,9 +102,8 @@ void doit(void) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); gnutls_priority_set_direct(server, "NORMAL:-VERS-ALL:+VERS-TLS1.2", @@ -120,9 +116,10 @@ void doit(void) gnutls_certificate_allocate_credentials(&clientx509cred); gnutls_init(&client, GNUTLS_CLIENT); gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, clientx509cred); - gnutls_priority_set_direct(client, - "NORMAL:-VERS-ALL:+VERS-TLS1.2:%DISABLE_SAFE_RENEGOTIATION", - NULL); + gnutls_priority_set_direct( + client, + "NORMAL:-VERS-ALL:+VERS-TLS1.2:%DISABLE_SAFE_RENEGOTIATION", + NULL); gnutls_transport_set_push_function(client, client_push); gnutls_transport_set_pull_function(client, client_pull); gnutls_transport_set_ptr(client, client); @@ -131,17 +128,17 @@ void doit(void) if (gnutls_safe_renegotiation_status(client) || gnutls_safe_renegotiation_status(server)) { - tls_log_func(0, - "Session using safe renegotiation but shouldn't!\n"); + tls_log_func( + 0, "Session using safe renegotiation but shouldn't!\n"); exit(1); } if ((gnutls_session_get_flags(client) & - GNUTLS_SFLAGS_SAFE_RENEGOTIATION) - || (gnutls_session_get_flags(server) & - GNUTLS_SFLAGS_SAFE_RENEGOTIATION)) { - tls_log_func(0, - "Session using safe renegotiation but shouldn't!\n"); + GNUTLS_SFLAGS_SAFE_RENEGOTIATION) || + (gnutls_session_get_flags(server) & + GNUTLS_SFLAGS_SAFE_RENEGOTIATION)) { + tls_log_func( + 0, "Session using safe renegotiation but shouldn't!\n"); exit(1); } @@ -165,17 +162,17 @@ void doit(void) if (gnutls_safe_renegotiation_status(client) || gnutls_safe_renegotiation_status(server)) { - tls_log_func(0, - "Rehandshaked session using safe renegotiation!\n"); + tls_log_func( + 0, "Rehandshaked session using safe renegotiation!\n"); exit(1); } if ((gnutls_session_get_flags(client) & - GNUTLS_SFLAGS_SAFE_RENEGOTIATION) - || (gnutls_session_get_flags(server) & - GNUTLS_SFLAGS_SAFE_RENEGOTIATION)) { - tls_log_func(0, - "Rehandshaked session using safe renegotiation!\n"); + GNUTLS_SFLAGS_SAFE_RENEGOTIATION) || + (gnutls_session_get_flags(server) & + GNUTLS_SFLAGS_SAFE_RENEGOTIATION)) { + tls_log_func( + 0, "Rehandshaked session using safe renegotiation!\n"); exit(1); } diff --git a/tests/safe-renegotiation/srn5.c b/tests/safe-renegotiation/srn5.c index 5f820b5cf0..57dbe143f4 100644 --- a/tests/safe-renegotiation/srn5.c +++ b/tests/safe-renegotiation/srn5.c @@ -28,7 +28,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -47,45 +47,42 @@ static void tls_log_func(int level, const char *str) } static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" - "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" - "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" - "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" - "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" - "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" - "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" - "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" - "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" - "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" - "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" - "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" + "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" + "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" + "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" + "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" + "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" + "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" + "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" + "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" + "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" + "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" + "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" - "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" - "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" - "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" - "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" - "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" - "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" - "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" - "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" - "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" - "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" - "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" - "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" + "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" + "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" + "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" + "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" + "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" + "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" + "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" + "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" + "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" + "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" + "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" + "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; void doit(void) { @@ -106,14 +103,14 @@ void doit(void) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); - gnutls_priority_set_direct(server, - "NORMAL:-VERS-ALL:+VERS-TLS1.2:%DISABLE_SAFE_RENEGOTIATION", - NULL); + gnutls_priority_set_direct( + server, + "NORMAL:-VERS-ALL:+VERS-TLS1.2:%DISABLE_SAFE_RENEGOTIATION", + NULL); gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); gnutls_transport_set_ptr(server, server); @@ -143,11 +140,12 @@ void doit(void) } if ((gnutls_session_get_flags(client) & - GNUTLS_SFLAGS_SAFE_RENEGOTIATION) - || (gnutls_session_get_flags(server) & - GNUTLS_SFLAGS_SAFE_RENEGOTIATION)) { - tls_log_func(0, - "Server or client thinks it is using safe renegotiation!\n"); + GNUTLS_SFLAGS_SAFE_RENEGOTIATION) || + (gnutls_session_get_flags(server) & + GNUTLS_SFLAGS_SAFE_RENEGOTIATION)) { + tls_log_func( + 0, + "Server or client thinks it is using safe renegotiation!\n"); exit(1); } @@ -166,22 +164,22 @@ void doit(void) abort(); } - HANDSHAKE_EXPECT(client, server, - GNUTLS_E_UNSAFE_RENEGOTIATION_DENIED, GNUTLS_E_AGAIN); + HANDSHAKE_EXPECT(client, server, GNUTLS_E_UNSAFE_RENEGOTIATION_DENIED, + GNUTLS_E_AGAIN); if (gnutls_safe_renegotiation_status(client) || gnutls_safe_renegotiation_status(server)) { - tls_log_func(0, - "Rehandshaked session using safe renegotiation!\n"); + tls_log_func( + 0, "Rehandshaked session using safe renegotiation!\n"); exit(1); } if ((gnutls_session_get_flags(client) & - GNUTLS_SFLAGS_SAFE_RENEGOTIATION) - || (gnutls_session_get_flags(server) & - GNUTLS_SFLAGS_SAFE_RENEGOTIATION)) { - tls_log_func(0, - "Rehandshaked session using safe renegotiation!\n"); + GNUTLS_SFLAGS_SAFE_RENEGOTIATION) || + (gnutls_session_get_flags(server) & + GNUTLS_SFLAGS_SAFE_RENEGOTIATION)) { + tls_log_func( + 0, "Rehandshaked session using safe renegotiation!\n"); exit(1); } diff --git a/tests/sec-params.c b/tests/sec-params.c index 5f41c0d8f2..8d7bac5c1c 100644 --- a/tests/sec-params.c +++ b/tests/sec-params.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include diff --git a/tests/seccomp.c b/tests/seccomp.c index a3148fea27..86442a543b 100644 --- a/tests/seccomp.c +++ b/tests/seccomp.c @@ -23,12 +23,12 @@ #ifdef HAVE_LIBSECCOMP -# include -# include -# include -# if defined(__linux__) -# include -# endif +#include +#include +#include +#if defined(__linux__) +#include +#endif int disable_system_calls(void) { @@ -41,13 +41,16 @@ int disable_system_calls(void) fprintf(stderr, "could not initialize seccomp"); return -1; } -# define ADD_SYSCALL(name, ...) \ - ret = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(name), __VA_ARGS__); \ - /* libseccomp returns EDOM for pseudo-syscalls due to a bug */ \ - if (ret < 0 && ret != -EDOM) { \ - fprintf(stderr, "could not add " #name " to seccomp filter: %s", strerror(-ret)); \ - ret = -1; \ - goto fail; \ +#define ADD_SYSCALL(name, ...) \ + ret = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(name), \ + __VA_ARGS__); \ + /* libseccomp returns EDOM for pseudo-syscalls due to a bug */ \ + if (ret < 0 && ret != -EDOM) { \ + fprintf(stderr, \ + "could not add " #name " to seccomp filter: %s", \ + strerror(-ret)); \ + ret = -1; \ + goto fail; \ } ADD_SYSCALL(nanosleep, 0); @@ -55,9 +58,9 @@ int disable_system_calls(void) ADD_SYSCALL(time, 0); ADD_SYSCALL(getpid, 0); ADD_SYSCALL(gettimeofday, 0); -# if defined(HAVE_CLOCK_GETTIME) +#if defined(HAVE_CLOCK_GETTIME) ADD_SYSCALL(clock_gettime, 0); -# endif +#endif ADD_SYSCALL(getrusage, 0); @@ -73,9 +76,9 @@ int disable_system_calls(void) /* to read from /dev/urandom */ ADD_SYSCALL(read, 0); -# ifdef SYS_getrandom +#ifdef SYS_getrandom ADD_SYSCALL(getrandom, 0); -# endif +#endif /* we use it in select */ ADD_SYSCALL(sigprocmask, 0); @@ -109,7 +112,7 @@ int disable_system_calls(void) ret = 0; - fail: +fail: seccomp_release(ctx); return ret; } diff --git a/tests/send-client-cert.c b/tests/send-client-cert.c index 27c4c4edb7..30e813a9a0 100644 --- a/tests/send-client-cert.c +++ b/tests/send-client-cert.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -89,15 +89,11 @@ static void try(const char *prio, unsigned expect, unsigned ca_type) gnutls_certificate_server_set_request(server, GNUTLS_CERT_REQUEST); if (ca_type == CORRECT_CA) { - ret = - gnutls_certificate_set_x509_trust_mem(serverx509cred, - &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem( + serverx509cred, &ca3_cert, GNUTLS_X509_FMT_PEM); } else if (ca_type == INCORRECT_CA || ca_type == INCORRECT_CA_FORCE) { - ret = - gnutls_certificate_set_x509_trust_mem(serverx509cred, - &unknown_ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem( + serverx509cred, &unknown_ca_cert, GNUTLS_X509_FMT_PEM); } else if (ca_type == NO_CA) { ret = 0; } else { @@ -127,9 +123,8 @@ static void try(const char *prio, unsigned expect, unsigned ca_type) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -167,7 +162,8 @@ static void try(const char *prio, unsigned expect, unsigned ca_type) } } else { if (gnutls_certificate_get_ours(client) != NULL) { - fail("Test %d: client sent a certificate, although not expected\n", ca_type); + fail("Test %d: client sent a certificate, although not expected\n", + ca_type); exit(1); } } diff --git a/tests/send-data-before-handshake.c b/tests/send-data-before-handshake.c index e932e14dc7..fe4c98b60e 100644 --- a/tests/send-data-before-handshake.c +++ b/tests/send-data-before-handshake.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,19 +35,19 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include "cert-common.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "cert-common.h" +#include "utils.h" /* This program tests that a client cannot send any unencrypted data * during the handshake process. That is to ensure we protect buggy clients @@ -66,7 +66,7 @@ static void client_log_func(int level, const char *str) static int handshake_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { int ret; char c = 0; @@ -88,7 +88,7 @@ static int handshake_callback(gnutls_session_t session, unsigned int htype, return 0; } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd, const char *prio) { @@ -124,8 +124,7 @@ static void client(int fd, const char *prio) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret == GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM) { /* success */ @@ -142,8 +141,8 @@ static void client(int fd, const char *prio) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { do { @@ -162,7 +161,7 @@ static void client(int fd, const char *prio) gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); @@ -219,14 +218,14 @@ static void server(int fd, const char *prio) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* do not wait for the peer to close the connection. */ gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); gnutls_deinit(session); @@ -243,8 +242,7 @@ static void ch_handler(int sig) return; } -static -void start(const char *prio) +static void start(const char *prio) { int fd[2]; int ret, status = 0; @@ -287,4 +285,4 @@ void doit(void) start("NORMAL"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/server-kx-neg-common.c b/tests/server-kx-neg-common.c index 42f71751cd..fac3302167 100644 --- a/tests/server-kx-neg-common.c +++ b/tests/server-kx-neg-common.c @@ -46,9 +46,8 @@ typedef struct test_case_st { const char *server_prio; } test_case_st; -static int -serv_psk_func(gnutls_session_t session, const char *username, - gnutls_datum_t * key) +static int serv_psk_func(gnutls_session_t session, const char *username, + gnutls_datum_t *key) { key->data = gnutls_malloc(4); assert(key->data != NULL); @@ -61,22 +60,17 @@ serv_psk_func(gnutls_session_t session, const char *username, } #define SALT_TEST1 "3a3xX3Myzb9YJn5X0R7sbx" -#define VERIF_TEST1 "CEqjUZBlkQCocfOR0E4AsPZKOFYPGjKFMHW7KDcnpE4sH4.iGMbkygb/bViRNjskF9/TQdD46Mvlt6pLs5MZoTn8mO3G.RGyXdWuIrhnVn29p41Cpc5RhTLaeUm3asW6LF60VTKnGERC0eB37xZUsaTpzmaTNdD4mOoYCN3bD9Y" -#define PRIME "Ewl2hcjiutMd3Fu2lgFnUXWSc67TVyy2vwYCKoS9MLsrdJVT9RgWTCuEqWJrfB6uE3LsE9GkOlaZabS7M29sj5TnzUqOLJMjiwEzArfiLr9WbMRANlF68N5AVLcPWvNx6Zjl3m5Scp0BzJBz9TkgfhzKJZ.WtP3Mv/67I/0wmRZ" -gnutls_datum_t tprime = { - .data = (void *)PRIME, - .size = sizeof(PRIME) - 1 -}; - -gnutls_datum_t test1_verif = { - .data = (void *)VERIF_TEST1, - .size = sizeof(VERIF_TEST1) - 1 -}; - -gnutls_datum_t test1_salt = { - .data = (void *)SALT_TEST1, - .size = sizeof(SALT_TEST1) - 1 -}; +#define VERIF_TEST1 \ + "CEqjUZBlkQCocfOR0E4AsPZKOFYPGjKFMHW7KDcnpE4sH4.iGMbkygb/bViRNjskF9/TQdD46Mvlt6pLs5MZoTn8mO3G.RGyXdWuIrhnVn29p41Cpc5RhTLaeUm3asW6LF60VTKnGERC0eB37xZUsaTpzmaTNdD4mOoYCN3bD9Y" +#define PRIME \ + "Ewl2hcjiutMd3Fu2lgFnUXWSc67TVyy2vwYCKoS9MLsrdJVT9RgWTCuEqWJrfB6uE3LsE9GkOlaZabS7M29sj5TnzUqOLJMjiwEzArfiLr9WbMRANlF68N5AVLcPWvNx6Zjl3m5Scp0BzJBz9TkgfhzKJZ.WtP3Mv/67I/0wmRZ" +gnutls_datum_t tprime = { .data = (void *)PRIME, .size = sizeof(PRIME) - 1 }; + +gnutls_datum_t test1_verif = { .data = (void *)VERIF_TEST1, + .size = sizeof(VERIF_TEST1) - 1 }; + +gnutls_datum_t test1_salt = { .data = (void *)SALT_TEST1, + .size = sizeof(SALT_TEST1) - 1 }; const char *side; #define switch_side(str) side = str @@ -87,10 +81,9 @@ static void tls_log_func(int level, const char *str) } #ifdef ENABLE_SRP -static int -serv_srp_func(gnutls_session_t session, const char *username, - gnutls_datum_t * salt, gnutls_datum_t * verifier, - gnutls_datum_t * generator, gnutls_datum_t * prime) +static int serv_srp_func(gnutls_session_t session, const char *username, + gnutls_datum_t *salt, gnutls_datum_t *verifier, + gnutls_datum_t *generator, gnutls_datum_t *prime) { int ret; if (debug) @@ -120,7 +113,7 @@ serv_srp_func(gnutls_session_t session, const char *username, } #endif -static void try(test_case_st * test) +static void try(test_case_st *test) { int sret, cret, ret; gnutls_anon_client_credentials_t c_anon_cred; @@ -133,8 +126,8 @@ static void try(test_case_st * test) gnutls_srp_server_credentials_t s_srp_cred; gnutls_srp_client_credentials_t c_srp_cred; #endif - const gnutls_datum_t p3_2048 = - { (void *)pkcs3_2048, strlen(pkcs3_2048) }; + const gnutls_datum_t p3_2048 = { (void *)pkcs3_2048, + strlen(pkcs3_2048) }; gnutls_dh_params_t dh_params = NULL; gnutls_session_t server, client; @@ -170,11 +163,11 @@ static void try(test_case_st * test) if (test->have_anon_cred) { gnutls_credentials_set(server, GNUTLS_CRD_ANON, s_anon_cred); if (test->have_anon_dh_params) - gnutls_anon_set_server_known_dh_params(s_anon_cred, - GNUTLS_SEC_PARAM_MEDIUM); + gnutls_anon_set_server_known_dh_params( + s_anon_cred, GNUTLS_SEC_PARAM_MEDIUM); else if (test->have_anon_exp_dh_params) { - ret = gnutls_dh_params_import_pkcs3(dh_params, &p3_2048, - GNUTLS_X509_FMT_PEM); + ret = gnutls_dh_params_import_pkcs3( + dh_params, &p3_2048, GNUTLS_X509_FMT_PEM); assert(ret >= 0); gnutls_anon_set_server_dh_params(s_anon_cred, dh_params); @@ -185,11 +178,11 @@ static void try(test_case_st * test) gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, s_cert_cred); if (test->have_cert_dh_params) - gnutls_certificate_set_known_dh_params(s_cert_cred, - GNUTLS_SEC_PARAM_MEDIUM); + gnutls_certificate_set_known_dh_params( + s_cert_cred, GNUTLS_SEC_PARAM_MEDIUM); else if (test->have_cert_exp_dh_params) { - ret = gnutls_dh_params_import_pkcs3(dh_params, &p3_2048, - GNUTLS_X509_FMT_PEM); + ret = gnutls_dh_params_import_pkcs3( + dh_params, &p3_2048, GNUTLS_X509_FMT_PEM); assert(ret >= 0); gnutls_certificate_set_dh_params(s_cert_cred, dh_params); @@ -199,11 +192,11 @@ static void try(test_case_st * test) if (test->have_psk_cred) { gnutls_credentials_set(server, GNUTLS_CRD_PSK, s_psk_cred); if (test->have_psk_dh_params) - gnutls_psk_set_server_known_dh_params(s_psk_cred, - GNUTLS_SEC_PARAM_MEDIUM); + gnutls_psk_set_server_known_dh_params( + s_psk_cred, GNUTLS_SEC_PARAM_MEDIUM); else if (test->have_psk_exp_dh_params) { - ret = gnutls_dh_params_import_pkcs3(dh_params, &p3_2048, - GNUTLS_X509_FMT_PEM); + ret = gnutls_dh_params_import_pkcs3( + dh_params, &p3_2048, GNUTLS_X509_FMT_PEM); assert(ret >= 0); gnutls_psk_set_server_dh_params(s_psk_cred, dh_params); } @@ -221,39 +214,43 @@ static void try(test_case_st * test) #endif if (test->have_rsa_decrypt_cert) { - assert(gnutls_certificate_set_x509_key_mem - (s_cert_cred, &server_ca3_localhost_rsa_decrypt_cert, - &server_ca3_key, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem( + s_cert_cred, + &server_ca3_localhost_rsa_decrypt_cert, + &server_ca3_key, GNUTLS_X509_FMT_PEM) >= 0); } if (test->have_ecc_sign_cert) { - assert(gnutls_certificate_set_x509_key_mem - (s_cert_cred, &server_ca3_localhost_ecc_cert, - &server_ca3_ecc_key, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem( + s_cert_cred, &server_ca3_localhost_ecc_cert, + &server_ca3_ecc_key, GNUTLS_X509_FMT_PEM) >= 0); } if (test->have_ed25519_sign_cert) { - assert(gnutls_certificate_set_x509_key_mem - (s_cert_cred, &server_ca3_eddsa_cert, - &server_ca3_eddsa_key, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem( + s_cert_cred, &server_ca3_eddsa_cert, + &server_ca3_eddsa_key, + GNUTLS_X509_FMT_PEM) >= 0); } if (test->have_rsa_sign_cert) { - assert(gnutls_certificate_set_x509_key_mem - (s_cert_cred, &server_ca3_localhost_rsa_sign_cert, - &server_ca3_key, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem( + s_cert_cred, &server_ca3_localhost_rsa_sign_cert, + &server_ca3_key, GNUTLS_X509_FMT_PEM) >= 0); } if (test->have_gost12_256_cert) { - assert(gnutls_certificate_set_x509_key_mem - (s_cert_cred, &server_ca3_gost12_256_cert, - &server_ca3_gost12_256_key, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem( + s_cert_cred, &server_ca3_gost12_256_cert, + &server_ca3_gost12_256_key, + GNUTLS_X509_FMT_PEM) >= 0); } if (test->have_gost12_512_cert) { - assert(gnutls_certificate_set_x509_key_mem - (s_cert_cred, &server_ca3_gost12_512_cert, - &server_ca3_gost12_512_key, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem( + s_cert_cred, &server_ca3_gost12_512_cert, + &server_ca3_gost12_512_key, + GNUTLS_X509_FMT_PEM) >= 0); } /* client does everything */ @@ -264,8 +261,8 @@ static void try(test_case_st * test) gnutls_credentials_set(client, GNUTLS_CRD_SRP, c_srp_cred); #endif - assert(gnutls_psk_set_client_credentials - (c_psk_cred, "psk", &pskkey, GNUTLS_PSK_KEY_HEX) >= 0); + assert(gnutls_psk_set_client_credentials(c_psk_cred, "psk", &pskkey, + GNUTLS_PSK_KEY_HEX) >= 0); #ifdef ENABLE_SRP assert(gnutls_srp_set_client_credentials(c_srp_cred, "test1", "test") >= @@ -284,12 +281,13 @@ static void try(test_case_st * test) HANDSHAKE_EXPECT(client, server, test->client_ret, test->server_ret); - if (test->client_ret == 0 && test->server_ret == 0 && test->exp_version) { + if (test->client_ret == 0 && test->server_ret == 0 && + test->exp_version) { if (gnutls_protocol_get_version(client) != test->exp_version) fail("expected version (%s) does not match %s\n", gnutls_protocol_get_name(test->exp_version), - gnutls_protocol_get_name - (gnutls_protocol_get_version(client))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(client))); } gnutls_deinit(server); diff --git a/tests/server-secrets.h b/tests/server-secrets.h index 6549e89a57..4f911adc37 100644 --- a/tests/server-secrets.h +++ b/tests/server-secrets.h @@ -22,345 +22,345 @@ */ #ifndef GNUTLS_TESTS_SERVER_SECRETS_H -# define GNUTLS_TESTS_SERVER_SECRETS_H +#define GNUTLS_TESTS_SERVER_SECRETS_H static const struct secret server_normal_0[] = { { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - (const uint8_t *) - "\x24\x24\xaf\xad\xa8\x0e\x40\xc6\xa1\xc3\x05\xff\x5a\xe5\x04\xb9\xc4\xc2\xff\xd6\x2b\x9a\xb8\x43\x85\x78\x92\x1e\x69\x44\x3d\xe2", - (const uint8_t *) - "\xdc\x47\xf1\x8b\x33\xd6\x08\x26\xa1\xad\xd9\xb0\x81\xee\x32\x01\xb6\xfc\xce\x9a\xa0\x35\xd1\x30\x61\x85\x2d\xff\x3d\xb1\xe5\x49", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - NULL, - (const uint8_t *) - "\x03\x38\xcf\x43\x68\x90\x01\x7a\xdb\x06\x7d\x92\x08\xcf\x67\x22\x41\xa7\xd3\xe7\x7e\x3a\xaf\x50\xd6\x5c\xaa\xfe\x90\xa4\x87\xa2", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - (const uint8_t *) - "\x5c\x6f\xe8\x8b\xac\x0a\x7b\x04\x76\x9f\xe8\x2a\x7c\x06\x19\x4c\xa7\x51\x5c\xfe\xb9\x31\x25\x0d\x3b\x07\x78\xa9\xdd\x2d\x27\x72", - NULL, - }, + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + (const uint8_t + *)"\x24\x24\xaf\xad\xa8\x0e\x40\xc6\xa1\xc3\x05\xff\x5a\xe5\x04\xb9\xc4\xc2\xff\xd6\x2b\x9a\xb8\x43\x85\x78\x92\x1e\x69\x44\x3d\xe2", + (const uint8_t + *)"\xdc\x47\xf1\x8b\x33\xd6\x08\x26\xa1\xad\xd9\xb0\x81\xee\x32\x01\xb6\xfc\xce\x9a\xa0\x35\xd1\x30\x61\x85\x2d\xff\x3d\xb1\xe5\x49", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + NULL, + (const uint8_t + *)"\x03\x38\xcf\x43\x68\x90\x01\x7a\xdb\x06\x7d\x92\x08\xcf\x67\x22\x41\xa7\xd3\xe7\x7e\x3a\xaf\x50\xd6\x5c\xaa\xfe\x90\xa4\x87\xa2", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + (const uint8_t + *)"\x5c\x6f\xe8\x8b\xac\x0a\x7b\x04\x76\x9f\xe8\x2a\x7c\x06\x19\x4c\xa7\x51\x5c\xfe\xb9\x31\x25\x0d\x3b\x07\x78\xa9\xdd\x2d\x27\x72", + NULL, + }, }; static const struct secret server_normal_1[] = { { - GNUTLS_ENCRYPTION_LEVEL_EARLY, - 32, - (const uint8_t *) - "\x6f\x16\x97\x8e\x90\x94\x77\x40\x0f\x00\xff\x79\x1c\x15\x20\x19\xeb\xc6\x10\x59\x8f\x92\xac\xab\xe6\xc8\x3c\x12\x30\x94\x91\x12", - NULL, - }, - { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - NULL, - (const uint8_t *) - "\xf0\x91\x46\x67\xe1\x36\xb5\xd2\x30\x71\xc9\x1d\xcc\x56\xc3\x9d\xee\xfa\x26\xdb\xe4\xe2\x17\xb7\x3d\xb9\x27\x6a\x7c\xa5\xe7\xa9", - }, - { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - (const uint8_t *) - "\xe7\xf5\x57\x48\x54\x71\xae\xc0\xba\x8d\x12\x90\xc5\x25\xef\xe3\xc7\xea\x39\x09\x24\xe8\x20\x6d\x03\x8d\x80\x1e\xdd\x24\xbb\x5a", - NULL, - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - NULL, - (const uint8_t *) - "\xf8\xa9\xd5\xe6\x18\xbb\xb7\x07\x1d\xb3\x8f\x78\x61\x30\x63\x01\xa5\x49\xc6\x05\x92\x7f\x67\x98\x72\x76\x75\xb1\x31\x1f\x14\xf9", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - (const uint8_t *) - "\xab\xa3\xf5\x4f\xcc\x3f\xd7\xb7\x23\x73\x51\x6e\x64\xc1\xaa\x6b\xa9\x77\x30\x58\xe6\xd4\xf5\xe9\xa5\xd2\x0d\x35\x42\x65\xda\xf1", - NULL, - }, + GNUTLS_ENCRYPTION_LEVEL_EARLY, + 32, + (const uint8_t + *)"\x6f\x16\x97\x8e\x90\x94\x77\x40\x0f\x00\xff\x79\x1c\x15\x20\x19\xeb\xc6\x10\x59\x8f\x92\xac\xab\xe6\xc8\x3c\x12\x30\x94\x91\x12", + NULL, + }, + { + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + NULL, + (const uint8_t + *)"\xf0\x91\x46\x67\xe1\x36\xb5\xd2\x30\x71\xc9\x1d\xcc\x56\xc3\x9d\xee\xfa\x26\xdb\xe4\xe2\x17\xb7\x3d\xb9\x27\x6a\x7c\xa5\xe7\xa9", + }, + { + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + (const uint8_t + *)"\xe7\xf5\x57\x48\x54\x71\xae\xc0\xba\x8d\x12\x90\xc5\x25\xef\xe3\xc7\xea\x39\x09\x24\xe8\x20\x6d\x03\x8d\x80\x1e\xdd\x24\xbb\x5a", + NULL, + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + NULL, + (const uint8_t + *)"\xf8\xa9\xd5\xe6\x18\xbb\xb7\x07\x1d\xb3\x8f\x78\x61\x30\x63\x01\xa5\x49\xc6\x05\x92\x7f\x67\x98\x72\x76\x75\xb1\x31\x1f\x14\xf9", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + (const uint8_t + *)"\xab\xa3\xf5\x4f\xcc\x3f\xd7\xb7\x23\x73\x51\x6e\x64\xc1\xaa\x6b\xa9\x77\x30\x58\xe6\xd4\xf5\xe9\xa5\xd2\x0d\x35\x42\x65\xda\xf1", + NULL, + }, }; static const struct secret server_normal_2[] = { { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - (const uint8_t *) - "\xe7\xf5\x57\x48\x54\x71\xae\xc0\xba\x8d\x12\x90\xc5\x25\xef\xe3\xc7\xea\x39\x09\x24\xe8\x20\x6d\x03\x8d\x80\x1e\xdd\x24\xbb\x5a", - (const uint8_t *) - "\xf0\x91\x46\x67\xe1\x36\xb5\xd2\x30\x71\xc9\x1d\xcc\x56\xc3\x9d\xee\xfa\x26\xdb\xe4\xe2\x17\xb7\x3d\xb9\x27\x6a\x7c\xa5\xe7\xa9", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - NULL, - (const uint8_t *) - "\xd8\xdf\x24\xd6\xe1\xdc\x86\x3b\x88\x3d\x2b\xad\x56\xec\x22\xd4\x5c\xaf\xa9\x24\xa3\x90\x20\xa1\xae\x77\x5c\x7d\xef\x3d\xcc\x5b", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - (const uint8_t *) - "\x8d\x02\xe0\xe8\x5f\x9a\xcc\xc7\x8c\x81\x3b\x58\x5f\xa9\xdb\xfd\x98\xb1\x1f\xcc\x3e\x7b\xca\xe7\xef\x05\x4c\x84\x6c\xe1\x11\x25", - NULL, - }, + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + (const uint8_t + *)"\xe7\xf5\x57\x48\x54\x71\xae\xc0\xba\x8d\x12\x90\xc5\x25\xef\xe3\xc7\xea\x39\x09\x24\xe8\x20\x6d\x03\x8d\x80\x1e\xdd\x24\xbb\x5a", + (const uint8_t + *)"\xf0\x91\x46\x67\xe1\x36\xb5\xd2\x30\x71\xc9\x1d\xcc\x56\xc3\x9d\xee\xfa\x26\xdb\xe4\xe2\x17\xb7\x3d\xb9\x27\x6a\x7c\xa5\xe7\xa9", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + NULL, + (const uint8_t + *)"\xd8\xdf\x24\xd6\xe1\xdc\x86\x3b\x88\x3d\x2b\xad\x56\xec\x22\xd4\x5c\xaf\xa9\x24\xa3\x90\x20\xa1\xae\x77\x5c\x7d\xef\x3d\xcc\x5b", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + (const uint8_t + *)"\x8d\x02\xe0\xe8\x5f\x9a\xcc\xc7\x8c\x81\x3b\x58\x5f\xa9\xdb\xfd\x98\xb1\x1f\xcc\x3e\x7b\xca\xe7\xef\x05\x4c\x84\x6c\xe1\x11\x25", + NULL, + }, }; static const struct secret server_small_0[] = { { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - (const uint8_t *) - "\x24\x24\xaf\xad\xa8\x0e\x40\xc6\xa1\xc3\x05\xff\x5a\xe5\x04\xb9\xc4\xc2\xff\xd6\x2b\x9a\xb8\x43\x85\x78\x92\x1e\x69\x44\x3d\xe2", - (const uint8_t *) - "\xdc\x47\xf1\x8b\x33\xd6\x08\x26\xa1\xad\xd9\xb0\x81\xee\x32\x01\xb6\xfc\xce\x9a\xa0\x35\xd1\x30\x61\x85\x2d\xff\x3d\xb1\xe5\x49", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - NULL, - (const uint8_t *) - "\x03\x38\xcf\x43\x68\x90\x01\x7a\xdb\x06\x7d\x92\x08\xcf\x67\x22\x41\xa7\xd3\xe7\x7e\x3a\xaf\x50\xd6\x5c\xaa\xfe\x90\xa4\x87\xa2", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - (const uint8_t *) - "\x5c\x6f\xe8\x8b\xac\x0a\x7b\x04\x76\x9f\xe8\x2a\x7c\x06\x19\x4c\xa7\x51\x5c\xfe\xb9\x31\x25\x0d\x3b\x07\x78\xa9\xdd\x2d\x27\x72", - NULL, - }, + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + (const uint8_t + *)"\x24\x24\xaf\xad\xa8\x0e\x40\xc6\xa1\xc3\x05\xff\x5a\xe5\x04\xb9\xc4\xc2\xff\xd6\x2b\x9a\xb8\x43\x85\x78\x92\x1e\x69\x44\x3d\xe2", + (const uint8_t + *)"\xdc\x47\xf1\x8b\x33\xd6\x08\x26\xa1\xad\xd9\xb0\x81\xee\x32\x01\xb6\xfc\xce\x9a\xa0\x35\xd1\x30\x61\x85\x2d\xff\x3d\xb1\xe5\x49", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + NULL, + (const uint8_t + *)"\x03\x38\xcf\x43\x68\x90\x01\x7a\xdb\x06\x7d\x92\x08\xcf\x67\x22\x41\xa7\xd3\xe7\x7e\x3a\xaf\x50\xd6\x5c\xaa\xfe\x90\xa4\x87\xa2", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + (const uint8_t + *)"\x5c\x6f\xe8\x8b\xac\x0a\x7b\x04\x76\x9f\xe8\x2a\x7c\x06\x19\x4c\xa7\x51\x5c\xfe\xb9\x31\x25\x0d\x3b\x07\x78\xa9\xdd\x2d\x27\x72", + NULL, + }, }; static const struct secret server_small_1[] = { { - GNUTLS_ENCRYPTION_LEVEL_EARLY, - 32, - (const uint8_t *) - "\x6f\x16\x97\x8e\x90\x94\x77\x40\x0f\x00\xff\x79\x1c\x15\x20\x19\xeb\xc6\x10\x59\x8f\x92\xac\xab\xe6\xc8\x3c\x12\x30\x94\x91\x12", - NULL, - }, - { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - NULL, - (const uint8_t *) - "\xf0\x91\x46\x67\xe1\x36\xb5\xd2\x30\x71\xc9\x1d\xcc\x56\xc3\x9d\xee\xfa\x26\xdb\xe4\xe2\x17\xb7\x3d\xb9\x27\x6a\x7c\xa5\xe7\xa9", - }, - { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - (const uint8_t *) - "\xe7\xf5\x57\x48\x54\x71\xae\xc0\xba\x8d\x12\x90\xc5\x25\xef\xe3\xc7\xea\x39\x09\x24\xe8\x20\x6d\x03\x8d\x80\x1e\xdd\x24\xbb\x5a", - NULL, - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - NULL, - (const uint8_t *) - "\xf8\xa9\xd5\xe6\x18\xbb\xb7\x07\x1d\xb3\x8f\x78\x61\x30\x63\x01\xa5\x49\xc6\x05\x92\x7f\x67\x98\x72\x76\x75\xb1\x31\x1f\x14\xf9", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - (const uint8_t *) - "\xab\xa3\xf5\x4f\xcc\x3f\xd7\xb7\x23\x73\x51\x6e\x64\xc1\xaa\x6b\xa9\x77\x30\x58\xe6\xd4\xf5\xe9\xa5\xd2\x0d\x35\x42\x65\xda\xf1", - NULL, - }, + GNUTLS_ENCRYPTION_LEVEL_EARLY, + 32, + (const uint8_t + *)"\x6f\x16\x97\x8e\x90\x94\x77\x40\x0f\x00\xff\x79\x1c\x15\x20\x19\xeb\xc6\x10\x59\x8f\x92\xac\xab\xe6\xc8\x3c\x12\x30\x94\x91\x12", + NULL, + }, + { + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + NULL, + (const uint8_t + *)"\xf0\x91\x46\x67\xe1\x36\xb5\xd2\x30\x71\xc9\x1d\xcc\x56\xc3\x9d\xee\xfa\x26\xdb\xe4\xe2\x17\xb7\x3d\xb9\x27\x6a\x7c\xa5\xe7\xa9", + }, + { + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + (const uint8_t + *)"\xe7\xf5\x57\x48\x54\x71\xae\xc0\xba\x8d\x12\x90\xc5\x25\xef\xe3\xc7\xea\x39\x09\x24\xe8\x20\x6d\x03\x8d\x80\x1e\xdd\x24\xbb\x5a", + NULL, + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + NULL, + (const uint8_t + *)"\xf8\xa9\xd5\xe6\x18\xbb\xb7\x07\x1d\xb3\x8f\x78\x61\x30\x63\x01\xa5\x49\xc6\x05\x92\x7f\x67\x98\x72\x76\x75\xb1\x31\x1f\x14\xf9", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + (const uint8_t + *)"\xab\xa3\xf5\x4f\xcc\x3f\xd7\xb7\x23\x73\x51\x6e\x64\xc1\xaa\x6b\xa9\x77\x30\x58\xe6\xd4\xf5\xe9\xa5\xd2\x0d\x35\x42\x65\xda\xf1", + NULL, + }, }; static const struct secret server_small_2[] = { { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - (const uint8_t *) - "\xe7\xf5\x57\x48\x54\x71\xae\xc0\xba\x8d\x12\x90\xc5\x25\xef\xe3\xc7\xea\x39\x09\x24\xe8\x20\x6d\x03\x8d\x80\x1e\xdd\x24\xbb\x5a", - (const uint8_t *) - "\xf0\x91\x46\x67\xe1\x36\xb5\xd2\x30\x71\xc9\x1d\xcc\x56\xc3\x9d\xee\xfa\x26\xdb\xe4\xe2\x17\xb7\x3d\xb9\x27\x6a\x7c\xa5\xe7\xa9", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - NULL, - (const uint8_t *) - "\xd8\xdf\x24\xd6\xe1\xdc\x86\x3b\x88\x3d\x2b\xad\x56\xec\x22\xd4\x5c\xaf\xa9\x24\xa3\x90\x20\xa1\xae\x77\x5c\x7d\xef\x3d\xcc\x5b", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - (const uint8_t *) - "\x8d\x02\xe0\xe8\x5f\x9a\xcc\xc7\x8c\x81\x3b\x58\x5f\xa9\xdb\xfd\x98\xb1\x1f\xcc\x3e\x7b\xca\xe7\xef\x05\x4c\x84\x6c\xe1\x11\x25", - NULL, - }, + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + (const uint8_t + *)"\xe7\xf5\x57\x48\x54\x71\xae\xc0\xba\x8d\x12\x90\xc5\x25\xef\xe3\xc7\xea\x39\x09\x24\xe8\x20\x6d\x03\x8d\x80\x1e\xdd\x24\xbb\x5a", + (const uint8_t + *)"\xf0\x91\x46\x67\xe1\x36\xb5\xd2\x30\x71\xc9\x1d\xcc\x56\xc3\x9d\xee\xfa\x26\xdb\xe4\xe2\x17\xb7\x3d\xb9\x27\x6a\x7c\xa5\xe7\xa9", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + NULL, + (const uint8_t + *)"\xd8\xdf\x24\xd6\xe1\xdc\x86\x3b\x88\x3d\x2b\xad\x56\xec\x22\xd4\x5c\xaf\xa9\x24\xa3\x90\x20\xa1\xae\x77\x5c\x7d\xef\x3d\xcc\x5b", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + (const uint8_t + *)"\x8d\x02\xe0\xe8\x5f\x9a\xcc\xc7\x8c\x81\x3b\x58\x5f\xa9\xdb\xfd\x98\xb1\x1f\xcc\x3e\x7b\xca\xe7\xef\x05\x4c\x84\x6c\xe1\x11\x25", + NULL, + }, }; static const struct secret server_empty_0[] = { { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - (const uint8_t *) - "\x24\x24\xaf\xad\xa8\x0e\x40\xc6\xa1\xc3\x05\xff\x5a\xe5\x04\xb9\xc4\xc2\xff\xd6\x2b\x9a\xb8\x43\x85\x78\x92\x1e\x69\x44\x3d\xe2", - (const uint8_t *) - "\xdc\x47\xf1\x8b\x33\xd6\x08\x26\xa1\xad\xd9\xb0\x81\xee\x32\x01\xb6\xfc\xce\x9a\xa0\x35\xd1\x30\x61\x85\x2d\xff\x3d\xb1\xe5\x49", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - NULL, - (const uint8_t *) - "\x03\x38\xcf\x43\x68\x90\x01\x7a\xdb\x06\x7d\x92\x08\xcf\x67\x22\x41\xa7\xd3\xe7\x7e\x3a\xaf\x50\xd6\x5c\xaa\xfe\x90\xa4\x87\xa2", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - (const uint8_t *) - "\x5c\x6f\xe8\x8b\xac\x0a\x7b\x04\x76\x9f\xe8\x2a\x7c\x06\x19\x4c\xa7\x51\x5c\xfe\xb9\x31\x25\x0d\x3b\x07\x78\xa9\xdd\x2d\x27\x72", - NULL, - }, + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + (const uint8_t + *)"\x24\x24\xaf\xad\xa8\x0e\x40\xc6\xa1\xc3\x05\xff\x5a\xe5\x04\xb9\xc4\xc2\xff\xd6\x2b\x9a\xb8\x43\x85\x78\x92\x1e\x69\x44\x3d\xe2", + (const uint8_t + *)"\xdc\x47\xf1\x8b\x33\xd6\x08\x26\xa1\xad\xd9\xb0\x81\xee\x32\x01\xb6\xfc\xce\x9a\xa0\x35\xd1\x30\x61\x85\x2d\xff\x3d\xb1\xe5\x49", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + NULL, + (const uint8_t + *)"\x03\x38\xcf\x43\x68\x90\x01\x7a\xdb\x06\x7d\x92\x08\xcf\x67\x22\x41\xa7\xd3\xe7\x7e\x3a\xaf\x50\xd6\x5c\xaa\xfe\x90\xa4\x87\xa2", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + (const uint8_t + *)"\x5c\x6f\xe8\x8b\xac\x0a\x7b\x04\x76\x9f\xe8\x2a\x7c\x06\x19\x4c\xa7\x51\x5c\xfe\xb9\x31\x25\x0d\x3b\x07\x78\xa9\xdd\x2d\x27\x72", + NULL, + }, }; static const struct secret server_empty_1[] = { { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - (const uint8_t *) - "\x87\x07\x01\xdc\x13\xdc\xb7\x93\x26\x53\xff\xa4\x2d\x28\xed\xca\xef\x5b\xa7\x94\x17\x26\xdf\x1f\x8c\x7b\x79\x32\x55\x5e\xcb\x79", - (const uint8_t *) - "\xac\xc2\x07\x48\xba\x3d\x59\x2f\x5f\xce\x79\xda\xa6\x04\x4b\x55\x06\x2c\x9f\x0e\xdf\xda\x42\x51\x9d\x0b\xd9\x39\x4b\x8c\xb2\x7e", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - NULL, - (const uint8_t *) - "\x73\x16\xe6\x0a\x66\xe1\x81\xd8\x74\xfa\x25\xe3\xf3\x1a\xf2\x4d\x84\xd6\xc6\x7a\x1b\x27\x79\x0a\x09\x9e\xd2\xd4\x1d\xdf\x0f\x53", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - (const uint8_t *) - "\x5f\x8e\xfe\x3e\xa0\x41\x27\x9e\xbb\xba\xf2\xa9\x22\xc6\x06\x58\xb5\xbf\x6e\x29\x3d\x84\x10\x4e\x3f\xe3\xc0\x1f\x7a\x2c\xf5\x21", - NULL, - }, + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + (const uint8_t + *)"\x87\x07\x01\xdc\x13\xdc\xb7\x93\x26\x53\xff\xa4\x2d\x28\xed\xca\xef\x5b\xa7\x94\x17\x26\xdf\x1f\x8c\x7b\x79\x32\x55\x5e\xcb\x79", + (const uint8_t + *)"\xac\xc2\x07\x48\xba\x3d\x59\x2f\x5f\xce\x79\xda\xa6\x04\x4b\x55\x06\x2c\x9f\x0e\xdf\xda\x42\x51\x9d\x0b\xd9\x39\x4b\x8c\xb2\x7e", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + NULL, + (const uint8_t + *)"\x73\x16\xe6\x0a\x66\xe1\x81\xd8\x74\xfa\x25\xe3\xf3\x1a\xf2\x4d\x84\xd6\xc6\x7a\x1b\x27\x79\x0a\x09\x9e\xd2\xd4\x1d\xdf\x0f\x53", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + (const uint8_t + *)"\x5f\x8e\xfe\x3e\xa0\x41\x27\x9e\xbb\xba\xf2\xa9\x22\xc6\x06\x58\xb5\xbf\x6e\x29\x3d\x84\x10\x4e\x3f\xe3\xc0\x1f\x7a\x2c\xf5\x21", + NULL, + }, }; static const struct secret server_empty_2[] = { { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - (const uint8_t *) - "\x87\x07\x01\xdc\x13\xdc\xb7\x93\x26\x53\xff\xa4\x2d\x28\xed\xca\xef\x5b\xa7\x94\x17\x26\xdf\x1f\x8c\x7b\x79\x32\x55\x5e\xcb\x79", - (const uint8_t *) - "\xac\xc2\x07\x48\xba\x3d\x59\x2f\x5f\xce\x79\xda\xa6\x04\x4b\x55\x06\x2c\x9f\x0e\xdf\xda\x42\x51\x9d\x0b\xd9\x39\x4b\x8c\xb2\x7e", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - NULL, - (const uint8_t *) - "\x73\x16\xe6\x0a\x66\xe1\x81\xd8\x74\xfa\x25\xe3\xf3\x1a\xf2\x4d\x84\xd6\xc6\x7a\x1b\x27\x79\x0a\x09\x9e\xd2\xd4\x1d\xdf\x0f\x53", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - (const uint8_t *) - "\x5f\x8e\xfe\x3e\xa0\x41\x27\x9e\xbb\xba\xf2\xa9\x22\xc6\x06\x58\xb5\xbf\x6e\x29\x3d\x84\x10\x4e\x3f\xe3\xc0\x1f\x7a\x2c\xf5\x21", - NULL, - }, + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + (const uint8_t + *)"\x87\x07\x01\xdc\x13\xdc\xb7\x93\x26\x53\xff\xa4\x2d\x28\xed\xca\xef\x5b\xa7\x94\x17\x26\xdf\x1f\x8c\x7b\x79\x32\x55\x5e\xcb\x79", + (const uint8_t + *)"\xac\xc2\x07\x48\xba\x3d\x59\x2f\x5f\xce\x79\xda\xa6\x04\x4b\x55\x06\x2c\x9f\x0e\xdf\xda\x42\x51\x9d\x0b\xd9\x39\x4b\x8c\xb2\x7e", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + NULL, + (const uint8_t + *)"\x73\x16\xe6\x0a\x66\xe1\x81\xd8\x74\xfa\x25\xe3\xf3\x1a\xf2\x4d\x84\xd6\xc6\x7a\x1b\x27\x79\x0a\x09\x9e\xd2\xd4\x1d\xdf\x0f\x53", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + (const uint8_t + *)"\x5f\x8e\xfe\x3e\xa0\x41\x27\x9e\xbb\xba\xf2\xa9\x22\xc6\x06\x58\xb5\xbf\x6e\x29\x3d\x84\x10\x4e\x3f\xe3\xc0\x1f\x7a\x2c\xf5\x21", + NULL, + }, }; static const struct secret server_explicit_0[] = { { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - (const uint8_t *) - "\x24\x24\xaf\xad\xa8\x0e\x40\xc6\xa1\xc3\x05\xff\x5a\xe5\x04\xb9\xc4\xc2\xff\xd6\x2b\x9a\xb8\x43\x85\x78\x92\x1e\x69\x44\x3d\xe2", - (const uint8_t *) - "\xdc\x47\xf1\x8b\x33\xd6\x08\x26\xa1\xad\xd9\xb0\x81\xee\x32\x01\xb6\xfc\xce\x9a\xa0\x35\xd1\x30\x61\x85\x2d\xff\x3d\xb1\xe5\x49", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - NULL, - (const uint8_t *) - "\x03\x38\xcf\x43\x68\x90\x01\x7a\xdb\x06\x7d\x92\x08\xcf\x67\x22\x41\xa7\xd3\xe7\x7e\x3a\xaf\x50\xd6\x5c\xaa\xfe\x90\xa4\x87\xa2", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - (const uint8_t *) - "\x5c\x6f\xe8\x8b\xac\x0a\x7b\x04\x76\x9f\xe8\x2a\x7c\x06\x19\x4c\xa7\x51\x5c\xfe\xb9\x31\x25\x0d\x3b\x07\x78\xa9\xdd\x2d\x27\x72", - NULL, - }, + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + (const uint8_t + *)"\x24\x24\xaf\xad\xa8\x0e\x40\xc6\xa1\xc3\x05\xff\x5a\xe5\x04\xb9\xc4\xc2\xff\xd6\x2b\x9a\xb8\x43\x85\x78\x92\x1e\x69\x44\x3d\xe2", + (const uint8_t + *)"\xdc\x47\xf1\x8b\x33\xd6\x08\x26\xa1\xad\xd9\xb0\x81\xee\x32\x01\xb6\xfc\xce\x9a\xa0\x35\xd1\x30\x61\x85\x2d\xff\x3d\xb1\xe5\x49", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + NULL, + (const uint8_t + *)"\x03\x38\xcf\x43\x68\x90\x01\x7a\xdb\x06\x7d\x92\x08\xcf\x67\x22\x41\xa7\xd3\xe7\x7e\x3a\xaf\x50\xd6\x5c\xaa\xfe\x90\xa4\x87\xa2", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + (const uint8_t + *)"\x5c\x6f\xe8\x8b\xac\x0a\x7b\x04\x76\x9f\xe8\x2a\x7c\x06\x19\x4c\xa7\x51\x5c\xfe\xb9\x31\x25\x0d\x3b\x07\x78\xa9\xdd\x2d\x27\x72", + NULL, + }, }; static const struct secret server_explicit_1[] = { { - GNUTLS_ENCRYPTION_LEVEL_EARLY, - 32, - (const uint8_t *) - "\x6f\x16\x97\x8e\x90\x94\x77\x40\x0f\x00\xff\x79\x1c\x15\x20\x19\xeb\xc6\x10\x59\x8f\x92\xac\xab\xe6\xc8\x3c\x12\x30\x94\x91\x12", - NULL, - }, - { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - NULL, - (const uint8_t *) - "\xf0\x91\x46\x67\xe1\x36\xb5\xd2\x30\x71\xc9\x1d\xcc\x56\xc3\x9d\xee\xfa\x26\xdb\xe4\xe2\x17\xb7\x3d\xb9\x27\x6a\x7c\xa5\xe7\xa9", - }, - { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - (const uint8_t *) - "\xe7\xf5\x57\x48\x54\x71\xae\xc0\xba\x8d\x12\x90\xc5\x25\xef\xe3\xc7\xea\x39\x09\x24\xe8\x20\x6d\x03\x8d\x80\x1e\xdd\x24\xbb\x5a", - NULL, - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - NULL, - (const uint8_t *) - "\xf8\xa9\xd5\xe6\x18\xbb\xb7\x07\x1d\xb3\x8f\x78\x61\x30\x63\x01\xa5\x49\xc6\x05\x92\x7f\x67\x98\x72\x76\x75\xb1\x31\x1f\x14\xf9", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - (const uint8_t *) - "\xab\xa3\xf5\x4f\xcc\x3f\xd7\xb7\x23\x73\x51\x6e\x64\xc1\xaa\x6b\xa9\x77\x30\x58\xe6\xd4\xf5\xe9\xa5\xd2\x0d\x35\x42\x65\xda\xf1", - NULL, - }, + GNUTLS_ENCRYPTION_LEVEL_EARLY, + 32, + (const uint8_t + *)"\x6f\x16\x97\x8e\x90\x94\x77\x40\x0f\x00\xff\x79\x1c\x15\x20\x19\xeb\xc6\x10\x59\x8f\x92\xac\xab\xe6\xc8\x3c\x12\x30\x94\x91\x12", + NULL, + }, + { + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + NULL, + (const uint8_t + *)"\xf0\x91\x46\x67\xe1\x36\xb5\xd2\x30\x71\xc9\x1d\xcc\x56\xc3\x9d\xee\xfa\x26\xdb\xe4\xe2\x17\xb7\x3d\xb9\x27\x6a\x7c\xa5\xe7\xa9", + }, + { + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + (const uint8_t + *)"\xe7\xf5\x57\x48\x54\x71\xae\xc0\xba\x8d\x12\x90\xc5\x25\xef\xe3\xc7\xea\x39\x09\x24\xe8\x20\x6d\x03\x8d\x80\x1e\xdd\x24\xbb\x5a", + NULL, + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + NULL, + (const uint8_t + *)"\xf8\xa9\xd5\xe6\x18\xbb\xb7\x07\x1d\xb3\x8f\x78\x61\x30\x63\x01\xa5\x49\xc6\x05\x92\x7f\x67\x98\x72\x76\x75\xb1\x31\x1f\x14\xf9", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + (const uint8_t + *)"\xab\xa3\xf5\x4f\xcc\x3f\xd7\xb7\x23\x73\x51\x6e\x64\xc1\xaa\x6b\xa9\x77\x30\x58\xe6\xd4\xf5\xe9\xa5\xd2\x0d\x35\x42\x65\xda\xf1", + NULL, + }, }; static const struct secret server_explicit_2[] = { { - GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, - 32, - (const uint8_t *) - "\xe7\xf5\x57\x48\x54\x71\xae\xc0\xba\x8d\x12\x90\xc5\x25\xef\xe3\xc7\xea\x39\x09\x24\xe8\x20\x6d\x03\x8d\x80\x1e\xdd\x24\xbb\x5a", - (const uint8_t *) - "\xf0\x91\x46\x67\xe1\x36\xb5\xd2\x30\x71\xc9\x1d\xcc\x56\xc3\x9d\xee\xfa\x26\xdb\xe4\xe2\x17\xb7\x3d\xb9\x27\x6a\x7c\xa5\xe7\xa9", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - NULL, - (const uint8_t *) - "\xd8\xdf\x24\xd6\xe1\xdc\x86\x3b\x88\x3d\x2b\xad\x56\xec\x22\xd4\x5c\xaf\xa9\x24\xa3\x90\x20\xa1\xae\x77\x5c\x7d\xef\x3d\xcc\x5b", - }, - { - GNUTLS_ENCRYPTION_LEVEL_APPLICATION, - 32, - (const uint8_t *) - "\x8d\x02\xe0\xe8\x5f\x9a\xcc\xc7\x8c\x81\x3b\x58\x5f\xa9\xdb\xfd\x98\xb1\x1f\xcc\x3e\x7b\xca\xe7\xef\x05\x4c\x84\x6c\xe1\x11\x25", - NULL, - }, + GNUTLS_ENCRYPTION_LEVEL_HANDSHAKE, + 32, + (const uint8_t + *)"\xe7\xf5\x57\x48\x54\x71\xae\xc0\xba\x8d\x12\x90\xc5\x25\xef\xe3\xc7\xea\x39\x09\x24\xe8\x20\x6d\x03\x8d\x80\x1e\xdd\x24\xbb\x5a", + (const uint8_t + *)"\xf0\x91\x46\x67\xe1\x36\xb5\xd2\x30\x71\xc9\x1d\xcc\x56\xc3\x9d\xee\xfa\x26\xdb\xe4\xe2\x17\xb7\x3d\xb9\x27\x6a\x7c\xa5\xe7\xa9", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + NULL, + (const uint8_t + *)"\xd8\xdf\x24\xd6\xe1\xdc\x86\x3b\x88\x3d\x2b\xad\x56\xec\x22\xd4\x5c\xaf\xa9\x24\xa3\x90\x20\xa1\xae\x77\x5c\x7d\xef\x3d\xcc\x5b", + }, + { + GNUTLS_ENCRYPTION_LEVEL_APPLICATION, + 32, + (const uint8_t + *)"\x8d\x02\xe0\xe8\x5f\x9a\xcc\xc7\x8c\x81\x3b\x58\x5f\xa9\xdb\xfd\x98\xb1\x1f\xcc\x3e\x7b\xca\xe7\xef\x05\x4c\x84\x6c\xe1\x11\x25", + NULL, + }, }; -#endif /* GNUTLS_TESTS_SERVER_SECRETS_H */ +#endif /* GNUTLS_TESTS_SERVER_SECRETS_H */ diff --git a/tests/server-sign-md5-rep.c b/tests/server-sign-md5-rep.c index c7f31c9e63..06dabf34ad 100644 --- a/tests/server-sign-md5-rep.c +++ b/tests/server-sign-md5-rep.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -40,20 +40,20 @@ int main(int argc, char **argv) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "utils.h" -# include "cert-common.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "utils.h" +#include "cert-common.h" pid_t child; @@ -65,50 +65,35 @@ static void tls_log_func(int level, const char *str) static unsigned char tls1_hello[] = { 0x16, 0x03, 0x01, 0x01, 0x5E, 0x01, 0x00, 0x01, 0x5A, 0x03, 0x03, 0x59, - 0x52, 0x41, 0x54, 0xD5, - 0x52, 0x62, 0x63, 0x69, 0x1B, 0x46, 0xBE, 0x33, 0xCC, 0xC4, 0xC3, 0xB3, - 0x6C, 0xCD, 0xEC, 0x96, - 0xF7, 0x7A, 0xCA, 0xE9, 0xFB, 0x85, 0x95, 0x83, 0x51, 0xE4, 0x69, 0x00, - 0x00, 0xD4, 0xC0, 0x30, + 0x52, 0x41, 0x54, 0xD5, 0x52, 0x62, 0x63, 0x69, 0x1B, 0x46, 0xBE, 0x33, + 0xCC, 0xC4, 0xC3, 0xB3, 0x6C, 0xCD, 0xEC, 0x96, 0xF7, 0x7A, 0xCA, 0xE9, + 0xFB, 0x85, 0x95, 0x83, 0x51, 0xE4, 0x69, 0x00, 0x00, 0xD4, 0xC0, 0x30, 0xCC, 0xA8, 0xC0, 0x8B, 0xC0, 0x14, 0xC0, 0x28, 0xC0, 0x77, 0xC0, 0x2F, - 0xC0, 0x8A, 0xC0, 0x13, - 0xC0, 0x27, 0xC0, 0x76, 0xC0, 0x12, 0xC0, 0x2C, 0xC0, 0xAD, 0xCC, 0xA9, - 0xC0, 0x87, 0xC0, 0x0A, - 0xC0, 0x24, 0xC0, 0x73, 0xC0, 0x2B, 0xC0, 0xAC, 0xC0, 0x86, 0xC0, 0x09, - 0xC0, 0x23, 0xC0, 0x72, + 0xC0, 0x8A, 0xC0, 0x13, 0xC0, 0x27, 0xC0, 0x76, 0xC0, 0x12, 0xC0, 0x2C, + 0xC0, 0xAD, 0xCC, 0xA9, 0xC0, 0x87, 0xC0, 0x0A, 0xC0, 0x24, 0xC0, 0x73, + 0xC0, 0x2B, 0xC0, 0xAC, 0xC0, 0x86, 0xC0, 0x09, 0xC0, 0x23, 0xC0, 0x72, 0xC0, 0x08, 0x00, 0x9D, 0xC0, 0x9D, 0xC0, 0x7B, 0x00, 0x35, 0x00, 0x3D, - 0x00, 0x84, 0x00, 0xC0, - 0x00, 0x9C, 0xC0, 0x9C, 0xC0, 0x7A, 0x00, 0x2F, 0x00, 0x3C, 0x00, 0x41, - 0x00, 0xBA, 0x00, 0x0A, - 0x00, 0x9F, 0xC0, 0x9F, 0xCC, 0xAA, 0xC0, 0x7D, 0x00, 0x39, 0x00, 0x6B, - 0x00, 0x88, 0x00, 0xC4, + 0x00, 0x84, 0x00, 0xC0, 0x00, 0x9C, 0xC0, 0x9C, 0xC0, 0x7A, 0x00, 0x2F, + 0x00, 0x3C, 0x00, 0x41, 0x00, 0xBA, 0x00, 0x0A, 0x00, 0x9F, 0xC0, 0x9F, + 0xCC, 0xAA, 0xC0, 0x7D, 0x00, 0x39, 0x00, 0x6B, 0x00, 0x88, 0x00, 0xC4, 0x00, 0x9E, 0xC0, 0x9E, 0xC0, 0x7C, 0x00, 0x33, 0x00, 0x67, 0x00, 0x45, - 0x00, 0xBE, 0x00, 0x16, - 0x00, 0xA3, 0xC0, 0x81, 0x00, 0x38, 0x00, 0x6A, 0x00, 0x87, 0x00, 0xC3, - 0x00, 0xA2, 0xC0, 0x80, - 0x00, 0x32, 0x00, 0x40, 0x00, 0x44, 0x00, 0xBD, 0x00, 0x13, 0x00, 0xA9, - 0xC0, 0xA5, 0xCC, 0xAB, + 0x00, 0xBE, 0x00, 0x16, 0x00, 0xA3, 0xC0, 0x81, 0x00, 0x38, 0x00, 0x6A, + 0x00, 0x87, 0x00, 0xC3, 0x00, 0xA2, 0xC0, 0x80, 0x00, 0x32, 0x00, 0x40, + 0x00, 0x44, 0x00, 0xBD, 0x00, 0x13, 0x00, 0xA9, 0xC0, 0xA5, 0xCC, 0xAB, 0xC0, 0x8F, 0x00, 0x8D, 0x00, 0xAF, 0xC0, 0x95, 0x00, 0xA8, 0xC0, 0xA4, - 0xC0, 0x8E, 0x00, 0x8C, - 0x00, 0xAE, 0xC0, 0x94, 0x00, 0x8B, 0x00, 0xAB, 0xC0, 0xA7, 0xCC, 0xAD, - 0xC0, 0x91, 0x00, 0x91, - 0x00, 0xB3, 0xC0, 0x97, 0x00, 0xAA, 0xC0, 0xA6, 0xC0, 0x90, 0x00, 0x90, - 0x00, 0xB2, 0xC0, 0x96, + 0xC0, 0x8E, 0x00, 0x8C, 0x00, 0xAE, 0xC0, 0x94, 0x00, 0x8B, 0x00, 0xAB, + 0xC0, 0xA7, 0xCC, 0xAD, 0xC0, 0x91, 0x00, 0x91, 0x00, 0xB3, 0xC0, 0x97, + 0x00, 0xAA, 0xC0, 0xA6, 0xC0, 0x90, 0x00, 0x90, 0x00, 0xB2, 0xC0, 0x96, 0x00, 0x8F, 0xCC, 0xAC, 0xC0, 0x36, 0xC0, 0x38, 0xC0, 0x9B, 0xC0, 0x35, - 0xC0, 0x37, 0xC0, 0x9A, - 0xC0, 0x34, 0x01, 0x00, 0x00, 0x5D, 0x00, 0x17, 0x00, 0x00, 0x00, 0x16, - 0x00, 0x00, 0x00, 0x05, - 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, - 0x11, 0x00, 0x00, 0x0E, + 0xC0, 0x37, 0xC0, 0x9A, 0xC0, 0x34, 0x01, 0x00, 0x00, 0x5D, 0x00, 0x17, + 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x11, 0x00, 0x00, 0x0E, 0x77, 0x77, 0x77, 0x2E, 0x67, 0x6F, 0x6F, 0x67, 0x6C, 0x65, 0x2E, 0x63, - 0x6F, 0x6D, 0xFF, 0x01, - 0x00, 0x01, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x08, 0x00, - 0x06, 0x00, 0x17, 0x00, - 0x18, 0x00, 0x19, 0x00, 0x0B, 0x00, 0x02, 0x01, 0x00, 0x00, 0x0D, 0x00, - 0x16, 0x00, 0x14, 0x01, + 0x6F, 0x6D, 0xFF, 0x01, 0x00, 0x01, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x0A, 0x00, 0x08, 0x00, 0x06, 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x00, + 0x0B, 0x00, 0x02, 0x01, 0x00, 0x00, 0x0D, 0x00, 0x16, 0x00, 0x14, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01 + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }; static void client(int sd) @@ -186,8 +171,9 @@ static void server(int sd) /* avoid calling all the priority functions, since the defaults * are adequate. */ - assert(gnutls_priority_set_direct - (session, "NORMAL:-VERS-ALL:+VERS-TLS1.2:-RSA", NULL) >= 0); + assert(gnutls_priority_set_direct(session, + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-RSA", + NULL) >= 0); gnutls_handshake_set_timeout(session, get_timeout()); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -250,4 +236,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/server_ecdsa_key.c b/tests/server_ecdsa_key.c index 633135ceeb..30b1057e8f 100644 --- a/tests/server_ecdsa_key.c +++ b/tests/server_ecdsa_key.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -28,10 +28,10 @@ #include #include #if !defined(_WIN32) -# include -# include -# include -# include +#include +#include +#include +#include #endif #include #include @@ -67,26 +67,22 @@ void doit(void) assert(gnutls_certificate_allocate_credentials(&cli_cred) >= 0); - ret = - gnutls_certificate_set_x509_trust_mem(cli_cred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(cli_cred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) fail("set_x509_trust_file failed: %s\n", gnutls_strerror(ret)); /* test gnutls_certificate_flags() */ gnutls_certificate_allocate_credentials(&serv_cred); - ret = - gnutls_certificate_set_x509_trust_mem(serv_cred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(serv_cred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) fail("set_x509_trust_file failed: %s\n", gnutls_strerror(ret)); - ret = - gnutls_certificate_set_x509_key_mem(serv_cred, - &server_ca3_localhost_ecc_cert, - &server_ca3_ecc_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + serv_cred, &server_ca3_localhost_ecc_cert, &server_ca3_ecc_key, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("error in error code\n"); exit(1); @@ -95,9 +91,10 @@ void doit(void) test_cli_serv_expect(serv_cred, cli_cred, "NORMAL", "NORMAL:-VERS-TLS1.1:+VERS-TLS1.2:-SIGN-ALL", NULL, 0, 0); - test_cli_serv_expect(serv_cred, cli_cred, "NORMAL", - "NORMAL:-SIGN-ECDSA-SHA224:-SIGN-ECDSA-SHA1:-SIGN-ECDSA-SHA256:-SIGN-ECDSA-SHA384:-SIGN-ECDSA-SHA512:-SIGN-ECDSA-SECP256R1-SHA256:-SIGN-ECDSA-SECP384R1-SHA384:-SIGN-ECDSA-SECP521R1-SHA512", - NULL, GNUTLS_E_NO_CIPHER_SUITES, GNUTLS_E_AGAIN); + test_cli_serv_expect( + serv_cred, cli_cred, "NORMAL", + "NORMAL:-SIGN-ECDSA-SHA224:-SIGN-ECDSA-SHA1:-SIGN-ECDSA-SHA256:-SIGN-ECDSA-SHA384:-SIGN-ECDSA-SHA512:-SIGN-ECDSA-SECP256R1-SHA256:-SIGN-ECDSA-SECP384R1-SHA384:-SIGN-ECDSA-SECP521R1-SHA512", + NULL, GNUTLS_E_NO_CIPHER_SUITES, GNUTLS_E_AGAIN); gnutls_certificate_free_credentials(serv_cred); gnutls_certificate_free_credentials(cli_cred); diff --git a/tests/session-export-funcs.c b/tests/session-export-funcs.c index 3a81b008cd..34b3c5ccaa 100644 --- a/tests/session-export-funcs.c +++ b/tests/session-export-funcs.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -44,8 +44,7 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -static -void start(const char *prio) +static void start(const char *prio) { int ret; /* Server stuff. */ @@ -74,9 +73,8 @@ void start(const char *prio) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server2_cert, &server2_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server2_cert, + &server2_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); @@ -94,9 +92,8 @@ void start(const char *prio) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca2_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca2_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -168,8 +165,8 @@ void start(const char *prio) fail("error in client's master secret\n"); } - if (v1.size != v2.size - || memcmp(v1.data, v2.data, v1.size) != 0) { + if (v1.size != v2.size || + memcmp(v1.data, v2.data, v1.size) != 0) { fail("master secret don't match!\n"); } } diff --git a/tests/session-rdn-read.c b/tests/session-rdn-read.c index 4c97769911..62e408a530 100644 --- a/tests/session-rdn-read.c +++ b/tests/session-rdn-read.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -52,12 +52,11 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -static int -cert_callback(gnutls_session_t session, - const gnutls_datum_t * req_ca_rdn, int nreqs, - const gnutls_pk_algorithm_t * pk_algos, - int pk_algos_length, gnutls_pcert_st ** pcert, - unsigned int *pcert_length, gnutls_privkey_t * pkey) +static int cert_callback(gnutls_session_t session, + const gnutls_datum_t *req_ca_rdn, int nreqs, + const gnutls_pk_algorithm_t *pk_algos, + int pk_algos_length, gnutls_pcert_st **pcert, + unsigned int *pcert_length, gnutls_privkey_t *pkey) { unsigned i; @@ -108,14 +107,14 @@ static void start(const char *prio) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - assert(gnutls_certificate_set_x509_key_mem - (serverx509cred, &server_cert, &server_key, - GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, + GNUTLS_X509_FMT_PEM) >= 0); - assert(gnutls_certificate_set_x509_trust_mem - (serverx509cred, CA1_PTR, GNUTLS_X509_FMT_PEM) >= 0); - assert(gnutls_certificate_set_x509_trust_mem - (serverx509cred, CA2_PTR, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_trust_mem(serverx509cred, CA1_PTR, + GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_trust_mem(serverx509cred, CA2_PTR, + GNUTLS_X509_FMT_PEM) >= 0); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); @@ -131,9 +130,8 @@ static void start(const char *prio) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -170,7 +168,7 @@ static void start(const char *prio) reset_buffers(); } -static void find_dn(const gnutls_datum_t * cert, gnutls_datum_t * dn) +static void find_dn(const gnutls_datum_t *cert, gnutls_datum_t *dn) { gnutls_x509_crt_t crt; diff --git a/tests/session-tickets-missing.c b/tests/session-tickets-missing.c index 0caca7528d..7bba7e3e7a 100644 --- a/tests/session-tickets-missing.c +++ b/tests/session-tickets-missing.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -36,21 +36,21 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "cert-common.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cert-common.h" +#include "utils.h" /* This program tests that handshakes do not include a session ticket * if the flag GNUTLS_NO_TICKETS is specified under TLS 1.2. @@ -59,7 +59,7 @@ int main(void) * result in a ticket being sent. */ -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1464610242; if (t) @@ -82,7 +82,7 @@ static int sent = 0; static int handshake_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { if (htype != GNUTLS_HANDSHAKE_NEW_SESSION_TICKET) return 0; @@ -91,7 +91,7 @@ static int handshake_callback(gnutls_session_t session, unsigned int htype, return 0; } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd, const char *prio, unsigned int flags) { @@ -128,8 +128,7 @@ static void client(int fd, const char *prio, unsigned int flags) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret == GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM) { /* success */ @@ -146,12 +145,12 @@ static void client(int fd, const char *prio, unsigned int flags) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); @@ -226,8 +225,8 @@ static void server(int fd, const char *prio, unsigned int flags) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); if (sent != 0) { fail("new session ticket was sent\n"); @@ -238,7 +237,7 @@ static void server(int fd, const char *prio, unsigned int flags) */ gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); gnutls_deinit(session); gnutls_free(skey.data); @@ -256,9 +255,8 @@ static void ch_handler(int sig) return; } -static -void start2(const char *prio, const char *sprio, unsigned int flags, - unsigned int sflags) +static void start2(const char *prio, const char *sprio, unsigned int flags, + unsigned int sflags) { int fd[2]; int ret, status = 0; @@ -297,8 +295,7 @@ void start2(const char *prio, const char *sprio, unsigned int flags, return; } -static -void start(const char *prio, unsigned int flags) +static void start(const char *prio, unsigned int flags) { start2(prio, prio, GNUTLS_NO_TICKETS, flags); } @@ -315,4 +312,4 @@ void doit(void) start("NORMAL", GNUTLS_NO_TICKETS); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/session-tickets-ok.c b/tests/session-tickets-ok.c index 4c1709411d..75cb2c1b99 100644 --- a/tests/session-tickets-ok.c +++ b/tests/session-tickets-ok.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,20 +35,20 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "cert-common.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cert-common.h" +#include "utils.h" static void terminate(void); @@ -69,7 +69,7 @@ static int sent = 0; static int handshake_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { if (htype != GNUTLS_HANDSHAKE_NEW_SESSION_TICKET) return 0; @@ -80,7 +80,7 @@ static int handshake_callback(gnutls_session_t session, unsigned int htype, return 0; } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd, const char *prio) { @@ -107,8 +107,7 @@ static void client(int fd, const char *prio) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed: %s\n", gnutls_strerror(ret)); @@ -120,8 +119,8 @@ static void client(int fd, const char *prio) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); gnutls_bye(session, GNUTLS_SHUT_WR); @@ -200,8 +199,8 @@ static void server(int fd, const char *prio) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); if (sent == 0) { fail("client: didn't send new sessiont ticket\n"); @@ -212,7 +211,7 @@ static void server(int fd, const char *prio) */ gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); gnutls_deinit(session); gnutls_free(skey.data); @@ -230,8 +229,7 @@ static void ch_handler(int sig) return; } -static -void start(const char *prio) +static void start(const char *prio) { int fd[2]; int ret, status = 0; @@ -276,4 +274,4 @@ void doit(void) start("NORMAL"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/set-default-prio.c b/tests/set-default-prio.c index 06c8a9ad2a..a8586b4f7f 100644 --- a/tests/set-default-prio.c +++ b/tests/set-default-prio.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -82,8 +82,8 @@ static void start(struct test_st *test) gnutls_global_set_log_level(6); assert(gnutls_certificate_allocate_credentials(&serverx509cred) >= 0); - assert(gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, + assert(gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM) >= 0); assert(gnutls_init(&server, GNUTLS_SERVER) >= 0); @@ -93,17 +93,18 @@ static void start(struct test_st *test) if (ret < 0) fail("error: %s\n", gnutls_strerror(ret)); } else { - ret = - gnutls_set_default_priority_append(server, test->add_prio, - &ep, 0); + ret = gnutls_set_default_priority_append(server, test->add_prio, + &ep, 0); if (ret < 0) { if (test->exp_err == ret) { /* the &ep value is only accurate when the default priorities are not overridden; * otherwise it should be a pointer to the start of the string */ - if (strchr(_gnutls_default_priority_string, '@') - != 0) { + if (strchr(_gnutls_default_priority_string, + '@') != 0) { if (ep != test->add_prio) { - fail("error expected error on start of string[%d]: %s\n", test->err_pos, test->add_prio); + fail("error expected error on start of string[%d]: %s\n", + test->err_pos, + test->add_prio); } } else { if (ep - test->add_prio != @@ -111,7 +112,9 @@ static void start(struct test_st *test) fprintf(stderr, "diff: %d\n", (int)(ep - test->add_prio)); - fail("error expected error on different position[%d]: %s\n", test->err_pos, test->add_prio); + fail("error expected error on different position[%d]: %s\n", + test->err_pos, + test->add_prio); } } goto cleanup; @@ -129,9 +132,8 @@ static void start(struct test_st *test) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -169,8 +171,8 @@ static void start(struct test_st *test) if (test->exp_vers != gnutls_protocol_get_version(server)) { fail("expected version %s, got %s\n", gnutls_protocol_get_name(test->exp_vers), - gnutls_protocol_get_name - (gnutls_protocol_get_version(server))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(server))); } } @@ -247,7 +249,7 @@ static void start(struct test_st *test) gnutls_deinit(client); gnutls_certificate_free_credentials(clientx509cred); - cleanup: +cleanup: gnutls_deinit(server); gnutls_certificate_free_credentials(serverx509cred); @@ -257,42 +259,36 @@ static void start(struct test_st *test) } struct test_st tests[] = { - { - .name = "additional flag", - .def_prio = "NORMAL", - .add_prio = "%FORCE_ETM", - .exp_err = 0}, - { - .name = "additional flag typo1", - .def_prio = "NORMAL", - .add_prio = ":%FORCE_ETM", - .exp_err = GNUTLS_E_INVALID_REQUEST, - .err_pos = 0}, - { - .name = "additional flag typo2", - .def_prio = "NORMAL", - .add_prio = "%FORCE_ETM::%NO_TICKETS", - .exp_err = GNUTLS_E_INVALID_REQUEST, - .err_pos = 11}, - { - .name = "additional flag typo3", - .def_prio = "NORMAL", - .add_prio = "%FORCE_ETM:%%NO_TICKETS", - .exp_err = GNUTLS_E_INVALID_REQUEST, - .err_pos = 11}, - { - .name = "additional flag typo3 (with resolved def prio)", - .def_prio = "@HELLO", - .add_prio = "%FORCE_ETM:%%NO_TICKETS", - .exp_err = GNUTLS_E_INVALID_REQUEST, - .err_pos = 0}, - { - .name = "additional flag for version (functional)", - .def_prio = "NORMAL", - .add_prio = "-VERS-ALL:+VERS-TLS1.1", - .exp_err = 0, - .exp_etm = 1, - .exp_vers = GNUTLS_TLS1_1} + { .name = "additional flag", + .def_prio = "NORMAL", + .add_prio = "%FORCE_ETM", + .exp_err = 0 }, + { .name = "additional flag typo1", + .def_prio = "NORMAL", + .add_prio = ":%FORCE_ETM", + .exp_err = GNUTLS_E_INVALID_REQUEST, + .err_pos = 0 }, + { .name = "additional flag typo2", + .def_prio = "NORMAL", + .add_prio = "%FORCE_ETM::%NO_TICKETS", + .exp_err = GNUTLS_E_INVALID_REQUEST, + .err_pos = 11 }, + { .name = "additional flag typo3", + .def_prio = "NORMAL", + .add_prio = "%FORCE_ETM:%%NO_TICKETS", + .exp_err = GNUTLS_E_INVALID_REQUEST, + .err_pos = 11 }, + { .name = "additional flag typo3 (with resolved def prio)", + .def_prio = "@HELLO", + .add_prio = "%FORCE_ETM:%%NO_TICKETS", + .exp_err = GNUTLS_E_INVALID_REQUEST, + .err_pos = 0 }, + { .name = "additional flag for version (functional)", + .def_prio = "NORMAL", + .add_prio = "-VERS-ALL:+VERS-TLS1.1", + .exp_err = 0, + .exp_etm = 1, + .exp_vers = GNUTLS_TLS1_1 } }; void doit(void) diff --git a/tests/set_key.c b/tests/set_key.c index 0ef21bde03..c2da806615 100644 --- a/tests/set_key.c +++ b/tests/set_key.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,10 +30,10 @@ #include #include #if !defined(_WIN32) -# include -# include -# include -# include +#include +#include +#include +#include #endif #include #include @@ -54,7 +54,7 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "<%d>| %s", level, str); } -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1473673819; if (t) @@ -64,8 +64,8 @@ static time_t mytime(time_t * t) } static unsigned import_key(gnutls_certificate_credentials_t xcred, - const gnutls_datum_t * skey, - const gnutls_datum_t * cert) + const gnutls_datum_t *skey, + const gnutls_datum_t *cert) { gnutls_pcert_st pcert_list[16]; gnutls_privkey_t key; @@ -84,9 +84,8 @@ static unsigned import_key(gnutls_certificate_credentials_t xcred, gnutls_strerror(ret)); } - ret = - gnutls_privkey_import_x509_raw(key, skey, GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_privkey_import_x509_raw(key, skey, GNUTLS_X509_FMT_PEM, + NULL, 0); if (ret < 0) { fail("error in key import: %s\n", gnutls_strerror(ret)); } @@ -111,9 +110,9 @@ static unsigned import_key(gnutls_certificate_credentials_t xcred, exit(1); } - if (tcert.size != pcert_list[i].cert.size - || memcmp(tcert.data, pcert_list[i].cert.data, - tcert.size) != 0) { + if (tcert.size != pcert_list[i].cert.size || + memcmp(tcert.data, pcert_list[i].cert.data, tcert.size) != + 0) { fail("error in %d: cert %d: %s\n", __LINE__, i, "ca cert don't match"); exit(1); @@ -145,9 +144,8 @@ static void basic(void) gnutls_certificate_set_flags(x509_cred, GNUTLS_CERTIFICATE_API_V2); - ret = - gnutls_certificate_set_x509_trust_mem(clicred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clicred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) fail("set_x509_trust_file failed: %s\n", gnutls_strerror(ret)); @@ -202,9 +200,8 @@ static void failure_mode(void) gnutls_strerror(ret)); } - ret = - gnutls_privkey_import_x509_raw(key, &server_ecc_key, - GNUTLS_X509_FMT_PEM, NULL, 0); + ret = gnutls_privkey_import_x509_raw(key, &server_ecc_key, + GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) { fail("error in key import: %s\n", gnutls_strerror(ret)); } @@ -219,7 +216,7 @@ static void failure_mode(void) fail("gnutls_certificate_set_key succeeded unexpectedly\n"); - cleanup: +cleanup: for (i = 0; i < pcert_list_size; i++) { gnutls_pcert_deinit(&pcert_list[i]); } @@ -257,24 +254,22 @@ static void auto_parse(void) assert(gnutls_certificate_allocate_credentials(&clicred) >= 0); - ret = - gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) fail("set_x509_trust_file failed: %s\n", gnutls_strerror(ret)); pcert_list_size = sizeof(pcert_list) / sizeof(pcert_list[0]); - ret = gnutls_pcert_list_import_x509_raw(pcert_list, &pcert_list_size, - &server_ca3_localhost_cert_chain, - GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_pcert_list_import_x509_raw( + pcert_list, &pcert_list_size, &server_ca3_localhost_cert_chain, + GNUTLS_X509_FMT_PEM, 0); if (ret < 0) { fail("error in gnutls_pcert_list_import_x509_raw: %s\n", gnutls_strerror(ret)); } - ret = - gnutls_privkey_import_x509_raw(key, &server_ca3_key, - GNUTLS_X509_FMT_PEM, NULL, 0); + ret = gnutls_privkey_import_x509_raw(key, &server_ca3_key, + GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) { fail("error in key import: %s\n", gnutls_strerror(ret)); } @@ -291,32 +286,34 @@ static void auto_parse(void) assert(gnutls_privkey_init(&second_key) >= 0); pcert_list_size = 2; - ret = gnutls_pcert_list_import_x509_raw(second_pcert, &pcert_list_size, - &server_ca3_localhost6_cert_chain, - GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_pcert_list_import_x509_raw( + second_pcert, &pcert_list_size, + &server_ca3_localhost6_cert_chain, GNUTLS_X509_FMT_PEM, 0); if (ret < 0) { fail("error in gnutls_pcert_list_import_x509_raw: %s\n", gnutls_strerror(ret)); } - ret = - gnutls_privkey_import_x509_raw(second_key, &server_ca3_key, - GNUTLS_X509_FMT_PEM, NULL, 0); + ret = gnutls_privkey_import_x509_raw(second_key, &server_ca3_key, + GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) { fail("error in key import: %s\n", gnutls_strerror(ret)); } - ret = gnutls_certificate_set_key(x509_cred, NULL, 0, second_pcert, - 2, second_key); + ret = gnutls_certificate_set_key(x509_cred, NULL, 0, second_pcert, 2, + second_key); if (ret < 0) { fail("error in gnutls_certificate_set_key: %s\n", gnutls_strerror(ret)); exit(1); } - test_cli_serv(x509_cred, clicred, "NORMAL", "localhost", NULL, NULL, NULL); /* the DNS name of the first cert */ - test_cli_serv(x509_cred, clicred, "NORMAL", "localhost6", NULL, NULL, NULL); /* the DNS name of ECC cert */ - test_cli_serv(x509_cred, clicred, "NORMAL", "www.none.org", NULL, NULL, NULL); /* the DNS name of ECC cert */ + test_cli_serv(x509_cred, clicred, "NORMAL", "localhost", NULL, NULL, + NULL); /* the DNS name of the first cert */ + test_cli_serv(x509_cred, clicred, "NORMAL", "localhost6", NULL, NULL, + NULL); /* the DNS name of ECC cert */ + test_cli_serv(x509_cred, clicred, "NORMAL", "www.none.org", NULL, NULL, + NULL); /* the DNS name of ECC cert */ gnutls_certificate_free_credentials(x509_cred); gnutls_certificate_free_credentials(clicred); diff --git a/tests/set_key_utf8.c b/tests/set_key_utf8.c index 5717f77816..3e7c6ccbb3 100644 --- a/tests/set_key_utf8.c +++ b/tests/set_key_utf8.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,10 +30,10 @@ #include #include #if !defined(_WIN32) -# include -# include -# include -# include +#include +#include +#include +#include #endif #include #include @@ -54,7 +54,7 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "<%d>| %s", level, str); } -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1473674242; if (t) @@ -88,24 +88,22 @@ static void auto_parse(void) assert(gnutls_certificate_allocate_credentials(&clicred) >= 0); - ret = - gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) fail("set_x509_trust_file failed: %s\n", gnutls_strerror(ret)); pcert_list_size = sizeof(pcert_list) / sizeof(pcert_list[0]); - ret = gnutls_pcert_list_import_x509_raw(pcert_list, &pcert_list_size, - &server_ca3_localhost_cert_chain, - GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_pcert_list_import_x509_raw( + pcert_list, &pcert_list_size, &server_ca3_localhost_cert_chain, + GNUTLS_X509_FMT_PEM, 0); if (ret < 0) { fail("error in gnutls_pcert_list_import_x509_raw: %s\n", gnutls_strerror(ret)); } - ret = - gnutls_privkey_import_x509_raw(key, &server_ca3_key, - GNUTLS_X509_FMT_PEM, NULL, 0); + ret = gnutls_privkey_import_x509_raw(key, &server_ca3_key, + GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) { fail("error in key import: %s\n", gnutls_strerror(ret)); } @@ -130,24 +128,27 @@ static void auto_parse(void) gnutls_strerror(ret)); } - ret = - gnutls_privkey_import_x509_raw(second_key, &server_ca3_key, - GNUTLS_X509_FMT_PEM, NULL, 0); + ret = gnutls_privkey_import_x509_raw(second_key, &server_ca3_key, + GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) { fail("error in key import: %s\n", gnutls_strerror(ret)); } - ret = gnutls_certificate_set_key(x509_cred, NULL, 0, second_pcert, - 1, second_key); + ret = gnutls_certificate_set_key(x509_cred, NULL, 0, second_pcert, 1, + second_key); if (ret < 0) { fail("error in gnutls_certificate_set_key: %s\n", gnutls_strerror(ret)); exit(1); } - test_cli_serv(x509_cred, clicred, "NORMAL", "localhost", NULL, NULL, NULL); /* the DNS name of the first cert */ - test_cli_serv(x509_cred, clicred, "NORMAL", "简体中文.εξτρα.com", NULL, NULL, NULL); /* the second DNS name of cert */ - test_cli_serv(x509_cred, clicred, "NORMAL", "xn--fiqu1az03c18t.xn--mxah1amo.com", NULL, NULL, NULL); /* its IDNA equivalent */ + test_cli_serv(x509_cred, clicred, "NORMAL", "localhost", NULL, NULL, + NULL); /* the DNS name of the first cert */ + test_cli_serv(x509_cred, clicred, "NORMAL", "简体中文.εξτρα.com", NULL, + NULL, NULL); /* the second DNS name of cert */ + test_cli_serv(x509_cred, clicred, "NORMAL", + "xn--fiqu1az03c18t.xn--mxah1amo.com", NULL, NULL, + NULL); /* its IDNA equivalent */ /* the raw DNS should result to verification failure as the advertized name should * not be considered and the first cert should be provided */ diff --git a/tests/set_known_dh_params_anon.c b/tests/set_known_dh_params_anon.c index 843e198105..03145239f6 100644 --- a/tests/set_known_dh_params_anon.c +++ b/tests/set_known_dh_params_anon.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,10 +30,10 @@ #include #include #if !defined(_WIN32) -# include -# include -# include -# include +#include +#include +#include +#include #endif #include #include @@ -68,25 +68,25 @@ void doit(void) assert(gnutls_anon_allocate_client_credentials(&clicred) >= 0); assert(gnutls_anon_allocate_server_credentials(&servcred) >= 0); - assert(gnutls_anon_set_server_known_dh_params - (servcred, GNUTLS_SEC_PARAM_LEGACY) >= 0); - assert(test_cli_serv_anon(servcred, clicred, "NORMAL:-KX-ALL:+ANON-DH") - >= 0); - - assert(gnutls_anon_set_server_known_dh_params - (servcred, GNUTLS_SEC_PARAM_NORMAL) >= 0); - assert(test_cli_serv_anon(servcred, clicred, "NORMAL:-KX-ALL:+ANON-DH") - >= 0); - - assert(gnutls_anon_set_server_known_dh_params - (servcred, GNUTLS_SEC_PARAM_HIGH) >= 0); - assert(test_cli_serv_anon(servcred, clicred, "NORMAL:-KX-ALL:+ANON-DH") - >= 0); - - assert(gnutls_anon_set_server_known_dh_params - (servcred, GNUTLS_SEC_PARAM_ULTRA) >= 0); - assert(test_cli_serv_anon(servcred, clicred, "NORMAL:-KX-ALL:+ANON-DH") - >= 0); + assert(gnutls_anon_set_server_known_dh_params( + servcred, GNUTLS_SEC_PARAM_LEGACY) >= 0); + assert(test_cli_serv_anon(servcred, clicred, + "NORMAL:-KX-ALL:+ANON-DH") >= 0); + + assert(gnutls_anon_set_server_known_dh_params( + servcred, GNUTLS_SEC_PARAM_NORMAL) >= 0); + assert(test_cli_serv_anon(servcred, clicred, + "NORMAL:-KX-ALL:+ANON-DH") >= 0); + + assert(gnutls_anon_set_server_known_dh_params( + servcred, GNUTLS_SEC_PARAM_HIGH) >= 0); + assert(test_cli_serv_anon(servcred, clicred, + "NORMAL:-KX-ALL:+ANON-DH") >= 0); + + assert(gnutls_anon_set_server_known_dh_params( + servcred, GNUTLS_SEC_PARAM_ULTRA) >= 0); + assert(test_cli_serv_anon(servcred, clicred, + "NORMAL:-KX-ALL:+ANON-DH") >= 0); gnutls_anon_free_server_credentials(servcred); gnutls_anon_free_client_credentials(clicred); diff --git a/tests/set_known_dh_params_psk.c b/tests/set_known_dh_params_psk.c index 92b12e5603..dc5661a9d8 100644 --- a/tests/set_known_dh_params_psk.c +++ b/tests/set_known_dh_params_psk.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,10 +30,10 @@ #include #include #if !defined(_WIN32) -# include -# include -# include -# include +#include +#include +#include +#include #endif #include #include @@ -52,8 +52,8 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "<%d>| %s", level, str); } -static int -pskfunc(gnutls_session_t session, const char *username, gnutls_datum_t * key) +static int pskfunc(gnutls_session_t session, const char *username, + gnutls_datum_t *key) { if (debug) printf("psk callback to get %s's password\n", username); @@ -88,25 +88,25 @@ void doit(void) assert(gnutls_psk_set_client_credentials(clicred, "test", &key, GNUTLS_PSK_KEY_HEX) >= 0); - assert(gnutls_psk_set_server_known_dh_params - (servcred, GNUTLS_SEC_PARAM_LEGACY) >= 0); - assert(test_cli_serv_psk(servcred, clicred, "NORMAL:-KX-ALL:+DHE-PSK") - >= 0); - - assert(gnutls_psk_set_server_known_dh_params - (servcred, GNUTLS_SEC_PARAM_NORMAL) >= 0); - assert(test_cli_serv_psk(servcred, clicred, "NORMAL:-KX-ALL:+DHE-PSK") - >= 0); - - assert(gnutls_psk_set_server_known_dh_params - (servcred, GNUTLS_SEC_PARAM_HIGH) >= 0); - assert(test_cli_serv_psk(servcred, clicred, "NORMAL:-KX-ALL:+DHE-PSK") - >= 0); - - assert(gnutls_psk_set_server_known_dh_params - (servcred, GNUTLS_SEC_PARAM_ULTRA) >= 0); - assert(test_cli_serv_psk(servcred, clicred, "NORMAL:-KX-ALL:+DHE-PSK") - >= 0); + assert(gnutls_psk_set_server_known_dh_params( + servcred, GNUTLS_SEC_PARAM_LEGACY) >= 0); + assert(test_cli_serv_psk(servcred, clicred, + "NORMAL:-KX-ALL:+DHE-PSK") >= 0); + + assert(gnutls_psk_set_server_known_dh_params( + servcred, GNUTLS_SEC_PARAM_NORMAL) >= 0); + assert(test_cli_serv_psk(servcred, clicred, + "NORMAL:-KX-ALL:+DHE-PSK") >= 0); + + assert(gnutls_psk_set_server_known_dh_params( + servcred, GNUTLS_SEC_PARAM_HIGH) >= 0); + assert(test_cli_serv_psk(servcred, clicred, + "NORMAL:-KX-ALL:+DHE-PSK") >= 0); + + assert(gnutls_psk_set_server_known_dh_params( + servcred, GNUTLS_SEC_PARAM_ULTRA) >= 0); + assert(test_cli_serv_psk(servcred, clicred, + "NORMAL:-KX-ALL:+DHE-PSK") >= 0); gnutls_psk_free_server_credentials(servcred); gnutls_psk_free_client_credentials(clicred); diff --git a/tests/set_known_dh_params_x509.c b/tests/set_known_dh_params_x509.c index d94ad5d2fc..bed6609010 100644 --- a/tests/set_known_dh_params_x509.c +++ b/tests/set_known_dh_params_x509.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,10 +30,10 @@ #include #include #if !defined(_WIN32) -# include -# include -# include -# include +#include +#include +#include +#include #endif #include #include @@ -69,39 +69,36 @@ void doit(void) assert(gnutls_certificate_allocate_credentials(&clicred) >= 0); assert(gnutls_certificate_allocate_credentials(&x509_cred) >= 0); - ret = - gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) fail("set_x509_trust_file failed: %s\n", gnutls_strerror(ret)); - ret = - gnutls_certificate_set_x509_key_mem(x509_cred, - &server_ca3_localhost_cert_chain, - &server_ca3_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + x509_cred, &server_ca3_localhost_cert_chain, &server_ca3_key, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("error in error code\n"); exit(1); } - assert(gnutls_certificate_set_known_dh_params - (x509_cred, GNUTLS_SEC_PARAM_LEGACY) >= 0); + assert(gnutls_certificate_set_known_dh_params( + x509_cred, GNUTLS_SEC_PARAM_LEGACY) >= 0); test_cli_serv(x509_cred, clicred, "NORMAL:-KX-ALL:+DHE-RSA", "localhost", NULL, NULL, NULL); - assert(gnutls_certificate_set_known_dh_params - (x509_cred, GNUTLS_SEC_PARAM_NORMAL) >= 0); + assert(gnutls_certificate_set_known_dh_params( + x509_cred, GNUTLS_SEC_PARAM_NORMAL) >= 0); test_cli_serv(x509_cred, clicred, "NORMAL:-KX-ALL:+DHE-RSA", "localhost", NULL, NULL, NULL); - assert(gnutls_certificate_set_known_dh_params - (x509_cred, GNUTLS_SEC_PARAM_HIGH) >= 0); + assert(gnutls_certificate_set_known_dh_params( + x509_cred, GNUTLS_SEC_PARAM_HIGH) >= 0); test_cli_serv(x509_cred, clicred, "NORMAL:-KX-ALL:+DHE-RSA", "localhost", NULL, NULL, NULL); - assert(gnutls_certificate_set_known_dh_params - (x509_cred, GNUTLS_SEC_PARAM_ULTRA) >= 0); + assert(gnutls_certificate_set_known_dh_params( + x509_cred, GNUTLS_SEC_PARAM_ULTRA) >= 0); test_cli_serv(x509_cred, clicred, "NORMAL:-KX-ALL:+DHE-RSA", "localhost", NULL, NULL, NULL); diff --git a/tests/set_pkcs12_cred.c b/tests/set_pkcs12_cred.c index f68daf4dd5..06082e3d65 100644 --- a/tests/set_pkcs12_cred.c +++ b/tests/set_pkcs12_cred.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -38,12 +38,10 @@ typedef struct { const char *pass; } files_st; -files_st files[] = { - {"client.p12", "foobar"}, - {"cert-ca.p12", "1234"}, /* 2 certs, one is a CA */ - {"pkcs12_2certs.p12", ""}, /* 2 certs, on is unrelated */ - {NULL, NULL} -}; +files_st files[] = { { "client.p12", "foobar" }, + { "cert-ca.p12", "1234" }, /* 2 certs, one is a CA */ + { "pkcs12_2certs.p12", "" }, /* 2 certs, on is unrelated */ + { NULL, NULL } }; void doit(void) { @@ -66,10 +64,10 @@ void doit(void) gnutls_global_set_log_level(4711); for (i = 0; files[i].file != NULL; i++) { - ret = gnutls_certificate_allocate_credentials(&x509cred); if (ret < 0) - fail("gnutls_certificate_allocate_credentials failed %d\n", ret); + fail("gnutls_certificate_allocate_credentials failed %d\n", + ret); path = getenv("PKCS12PATH"); if (!path) @@ -78,15 +76,10 @@ void doit(void) snprintf(file, sizeof(file), "%s/%s", path, files[i].file); if (debug) - success - ("Reading PKCS#12 blob from `%s' using password `%s'.\n", - file, files[i].pass); - ret = - gnutls_certificate_set_x509_simple_pkcs12_file(x509cred, - file, - GNUTLS_X509_FMT_DER, - files - [i].pass); + success("Reading PKCS#12 blob from `%s' using password `%s'.\n", + file, files[i].pass); + ret = gnutls_certificate_set_x509_simple_pkcs12_file( + x509cred, file, GNUTLS_X509_FMT_DER, files[i].pass); if (ret < 0) fail("x509_pkcs12 failed %d: %s\n", ret, gnutls_strerror(ret)); diff --git a/tests/set_x509_key.c b/tests/set_x509_key.c index 129ce2fdd5..698acc2126 100644 --- a/tests/set_x509_key.c +++ b/tests/set_x509_key.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,10 +30,10 @@ #include #include #if !defined(_WIN32) -# include -# include -# include -# include +#include +#include +#include +#include #endif #include #include @@ -44,7 +44,7 @@ #include "cert-common.h" #include "utils.h" -#define MIN(x,y) (((x)<(y))?(x):(y)) +#define MIN(x, y) (((x) < (y)) ? (x) : (y)) /* Test for gnutls_certificate_set_x509_key() * @@ -55,7 +55,7 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "<%d>| %s", level, str); } -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1461671166; if (t) @@ -64,7 +64,7 @@ static time_t mytime(time_t * t) return then; } -static void compare(const gnutls_datum_t * der, const void *ipem) +static void compare(const gnutls_datum_t *der, const void *ipem) { gnutls_datum_t pem = { (void *)ipem, strlen((char *)ipem) }; gnutls_datum_t new_der; @@ -75,8 +75,8 @@ static void compare(const gnutls_datum_t * der, const void *ipem) fail("error: %s\n", gnutls_strerror(ret)); } - if (der->size != new_der.size - || memcmp(der->data, new_der.data, der->size) != 0) { + if (der->size != new_der.size || + memcmp(der->data, new_der.data, der->size) != 0) { fail("error in %d: %s\n", __LINE__, "cert don't match"); exit(1); } @@ -85,7 +85,7 @@ static void compare(const gnutls_datum_t * der, const void *ipem) } static int import_key(gnutls_certificate_credentials_t xcred, - const gnutls_datum_t * skey, const gnutls_datum_t * cert) + const gnutls_datum_t *skey, const gnutls_datum_t *cert) { gnutls_x509_privkey_t key; gnutls_x509_crt_t *crt_list; @@ -95,9 +95,8 @@ static int import_key(gnutls_certificate_credentials_t xcred, assert(gnutls_x509_privkey_init(&key) >= 0); - ret = - gnutls_x509_crt_list_import2(&crt_list, &crt_list_size, cert, - GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_x509_crt_list_import2(&crt_list, &crt_list_size, cert, + GNUTLS_X509_FMT_PEM, 0); if (ret < 0) { fail("error in gnutls_x509_crt_list_import2: %s\n", gnutls_strerror(ret)); @@ -108,8 +107,8 @@ static int import_key(gnutls_certificate_credentials_t xcred, fail("error in key import: %s\n", gnutls_strerror(ret)); } - ret = gnutls_certificate_set_x509_key(xcred, crt_list, - crt_list_size, key); + ret = gnutls_certificate_set_x509_key(xcred, crt_list, crt_list_size, + key); if (ret < 0) { success("error in gnutls_certificate_set_x509_key: %s\n", gnutls_strerror(ret)); @@ -132,7 +131,7 @@ static int import_key(gnutls_certificate_credentials_t xcred, compare(&tcert, cert->data + i); } - cleanup: +cleanup: gnutls_x509_privkey_deinit(key); for (i = 0; i < crt_list_size; i++) { gnutls_x509_crt_deinit(crt_list[i]); @@ -164,9 +163,8 @@ static void basic(void) gnutls_certificate_set_flags(x509_cred, GNUTLS_CERTIFICATE_API_V2); - ret = - gnutls_certificate_set_x509_trust_mem(clicred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clicred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) fail("set_x509_trust_file failed: %s\n", gnutls_strerror(ret)); diff --git a/tests/set_x509_key_file-late.c b/tests/set_x509_key_file-late.c index bb7e5374e6..8609cd079d 100644 --- a/tests/set_x509_key_file-late.c +++ b/tests/set_x509_key_file-late.c @@ -25,7 +25,7 @@ * is called */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -40,8 +40,7 @@ #include "utils.h" static unsigned set_cert(gnutls_certificate_credentials_t xcred, - const gnutls_datum_t * key, - const gnutls_datum_t * cert) + const gnutls_datum_t *key, const gnutls_datum_t *cert) { const char *certfile; FILE *fp; @@ -56,9 +55,8 @@ static unsigned set_cert(gnutls_certificate_credentials_t xcred, assert(fwrite(key->data, 1, key->size, fp) > 0); fclose(fp); - ret = gnutls_certificate_set_x509_key_file2(xcred, certfile, certfile, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_certificate_set_x509_key_file2( + xcred, certfile, certfile, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) fail("set_x509_key_file failed: %s\n", gnutls_strerror(ret)); @@ -66,10 +64,9 @@ static unsigned set_cert(gnutls_certificate_credentials_t xcred, return ret; } -static -int handshake_hook_func(gnutls_session_t session, unsigned int htype, - unsigned when, unsigned int incoming, - const gnutls_datum_t * msg) +static int handshake_hook_func(gnutls_session_t session, unsigned int htype, + unsigned when, unsigned int incoming, + const gnutls_datum_t *msg) { gnutls_certificate_credentials_t xcred; int idx; @@ -79,8 +76,8 @@ int handshake_hook_func(gnutls_session_t session, unsigned int htype, assert(gnutls_certificate_allocate_credentials(&xcred) >= 0); gnutls_certificate_set_flags(xcred, GNUTLS_CERTIFICATE_API_V2); - idx = - set_cert(xcred, &server_ca3_key, &server_ca3_localhost6_cert_chain); + idx = set_cert(xcred, &server_ca3_key, + &server_ca3_localhost6_cert_chain); assert(idx == 0); idx = set_cert(xcred, &server_ca3_key, &server_ca3_localhost_cert); @@ -102,9 +99,8 @@ static void start(const char *prio) assert(gnutls_certificate_allocate_credentials(&clicred) >= 0); - ret = - gnutls_certificate_set_x509_trust_mem(clicred, &subca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clicred, &subca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) fail("set_x509_trust_file failed: %s\n", gnutls_strerror(ret)); @@ -134,8 +130,8 @@ static void start(const char *prio) HANDSHAKE(client, server); - assert(gnutls_credentials_get - (server, GNUTLS_CRD_CERTIFICATE, (void *)&xcred) >= 0); + assert(gnutls_credentials_get(server, GNUTLS_CRD_CERTIFICATE, + (void *)&xcred) >= 0); gnutls_deinit(client); gnutls_deinit(server); diff --git a/tests/set_x509_key_file.c b/tests/set_x509_key_file.c index 044149d11b..2cc4100b51 100644 --- a/tests/set_x509_key_file.c +++ b/tests/set_x509_key_file.c @@ -24,7 +24,7 @@ * when the GNUTLS_CERTIFICATE_API_V2 is set */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -36,7 +36,7 @@ #include "cert-common.h" #include "utils.h" -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1470002400; if (t) @@ -45,7 +45,7 @@ static time_t mytime(time_t * t) return then; } -static void compare(const gnutls_datum_t * der, const void *ipem) +static void compare(const gnutls_datum_t *der, const void *ipem) { gnutls_datum_t pem = { (void *)ipem, strlen((char *)ipem) }; gnutls_datum_t new_der; @@ -56,8 +56,8 @@ static void compare(const gnutls_datum_t * der, const void *ipem) fail("error: %s\n", gnutls_strerror(ret)); } - if (der->size != new_der.size - || memcmp(der->data, new_der.data, der->size) != 0) { + if (der->size != new_der.size || + memcmp(der->data, new_der.data, der->size) != 0) { fail("error in %d: %s\n", __LINE__, "cert don't match"); exit(1); } @@ -66,8 +66,7 @@ static void compare(const gnutls_datum_t * der, const void *ipem) } static unsigned set_cert(gnutls_certificate_credentials_t xcred, - const gnutls_datum_t * key, - const gnutls_datum_t * cert) + const gnutls_datum_t *key, const gnutls_datum_t *cert) { const char *certfile; FILE *fp; @@ -82,9 +81,8 @@ static unsigned set_cert(gnutls_certificate_credentials_t xcred, assert(fwrite(key->data, 1, key->size, fp) > 0); fclose(fp); - ret = gnutls_certificate_set_x509_key_file2(xcred, certfile, certfile, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_certificate_set_x509_key_file2( + xcred, certfile, certfile, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) fail("set_x509_key_file failed: %s\n", gnutls_strerror(ret)); @@ -93,7 +91,7 @@ static unsigned set_cert(gnutls_certificate_credentials_t xcred, } static void verify_written_cert(gnutls_certificate_credentials_t xcred, - unsigned idx, const gnutls_datum_t * cert, + unsigned idx, const gnutls_datum_t *cert, unsigned ncerts) { int ret; @@ -135,9 +133,8 @@ void doit(void) track_temp_files(); /* this will fail */ - ret = gnutls_certificate_set_x509_key_file2(xcred, certfile, keyfile, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_certificate_set_x509_key_file2( + xcred, certfile, keyfile, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret != GNUTLS_E_FILE_ERROR) fail("set_x509_key_file failed: %s\n", gnutls_strerror(ret)); @@ -148,16 +145,15 @@ void doit(void) gnutls_certificate_set_flags(xcred, GNUTLS_CERTIFICATE_API_V2); - ret = - gnutls_certificate_set_x509_trust_mem(clicred, &subca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clicred, &subca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) fail("set_x509_trust_file failed: %s\n", gnutls_strerror(ret)); success("Testing store of certificates\n"); - idx = - set_cert(xcred, &server_ca3_key, &server_ca3_localhost6_cert_chain); + idx = set_cert(xcred, &server_ca3_key, + &server_ca3_localhost6_cert_chain); verify_written_cert(xcred, idx, &server_ca3_localhost6_cert_chain, 2); assert(idx == 0); @@ -169,7 +165,8 @@ void doit(void) success("Tested store of %d\n", idx); - test_cli_serv(xcred, clicred, "NORMAL", "localhost", NULL, NULL, NULL); /* the DNS name of the first cert */ + test_cli_serv(xcred, clicred, "NORMAL", "localhost", NULL, NULL, + NULL); /* the DNS name of the first cert */ idx = set_cert(xcred, &server_key, &server_cert); verify_written_cert(xcred, idx, &server_cert, 2); diff --git a/tests/set_x509_key_file_der.c b/tests/set_x509_key_file_der.c index 32dfaede97..53dc30ced8 100644 --- a/tests/set_x509_key_file_der.c +++ b/tests/set_x509_key_file_der.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,7 +33,7 @@ #include "cert-common.h" #include "utils.h" -static void compare(const gnutls_datum_t * der, const void *ipem) +static void compare(const gnutls_datum_t *der, const void *ipem) { gnutls_datum_t pem = { (void *)ipem, strlen((char *)ipem) }; gnutls_datum_t new_der; @@ -44,8 +44,8 @@ static void compare(const gnutls_datum_t * der, const void *ipem) fail("error: %s\n", gnutls_strerror(ret)); } - if (der->size != new_der.size - || memcmp(der->data, new_der.data, der->size) != 0) { + if (der->size != new_der.size || + memcmp(der->data, new_der.data, der->size) != 0) { fail("error in %d: %s\n", __LINE__, "cert don't match"); exit(1); } @@ -91,9 +91,8 @@ void doit(void) assert(gnutls_certificate_allocate_credentials(&clicred) >= 0); - ret = - gnutls_certificate_set_x509_trust_mem(clicred, &ca2_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clicred, &ca2_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) fail("set_x509_trust_file failed: %s\n", gnutls_strerror(ret)); @@ -103,9 +102,8 @@ void doit(void) write_der(certfile, "CERTIFICATE", (char *)server2_cert_pem); write_der(keyfile, "RSA PRIVATE KEY", (char *)server2_key_pem); - ret = gnutls_certificate_set_x509_key_file2(xcred, certfile, keyfile, - GNUTLS_X509_FMT_DER, NULL, - 0); + ret = gnutls_certificate_set_x509_key_file2( + xcred, certfile, keyfile, GNUTLS_X509_FMT_DER, NULL, 0); if (ret < 0) fail("set_x509_key_file failed: %s\n", gnutls_strerror(ret)); @@ -121,7 +119,8 @@ void doit(void) remove(certfile); remove(keyfile); - test_cli_serv(xcred, clicred, "NORMAL", "localhost", NULL, NULL, NULL); /* the DNS name of the first cert */ + test_cli_serv(xcred, clicred, "NORMAL", "localhost", NULL, NULL, + NULL); /* the DNS name of the first cert */ gnutls_certificate_free_credentials(xcred); gnutls_certificate_free_credentials(clicred); diff --git a/tests/set_x509_key_file_legacy.c b/tests/set_x509_key_file_legacy.c index 84f6fda85c..5a1ce0ce31 100644 --- a/tests/set_x509_key_file_legacy.c +++ b/tests/set_x509_key_file_legacy.c @@ -24,7 +24,7 @@ * when the GNUTLS_CERTIFICATE_API_V2 is not set */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -36,7 +36,7 @@ #include "cert-common.h" #include "utils.h" -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1470002400; if (t) @@ -45,7 +45,7 @@ static time_t mytime(time_t * t) return then; } -static void compare(const gnutls_datum_t * der, const void *ipem) +static void compare(const gnutls_datum_t *der, const void *ipem) { gnutls_datum_t pem = { (void *)ipem, strlen((char *)ipem) }; gnutls_datum_t new_der; @@ -56,8 +56,8 @@ static void compare(const gnutls_datum_t * der, const void *ipem) fail("error: %s\n", gnutls_strerror(ret)); } - if (der->size != new_der.size - || memcmp(der->data, new_der.data, der->size) != 0) { + if (der->size != new_der.size || + memcmp(der->data, new_der.data, der->size) != 0) { fail("error in %d: %s\n", __LINE__, "cert don't match"); exit(1); } @@ -66,8 +66,7 @@ static void compare(const gnutls_datum_t * der, const void *ipem) } static unsigned set_cert(gnutls_certificate_credentials_t xcred, - const gnutls_datum_t * key, - const gnutls_datum_t * cert) + const gnutls_datum_t *key, const gnutls_datum_t *cert) { const char *certfile; FILE *fp; @@ -82,9 +81,8 @@ static unsigned set_cert(gnutls_certificate_credentials_t xcred, assert(fwrite(key->data, 1, key->size, fp) > 0); fclose(fp); - ret = gnutls_certificate_set_x509_key_file2(xcred, certfile, certfile, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_certificate_set_x509_key_file2( + xcred, certfile, certfile, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) fail("set_x509_key_file failed: %s\n", gnutls_strerror(ret)); @@ -93,7 +91,7 @@ static unsigned set_cert(gnutls_certificate_credentials_t xcred, } static void verify_written_cert(gnutls_certificate_credentials_t xcred, - unsigned idx, const gnutls_datum_t * cert, + unsigned idx, const gnutls_datum_t *cert, unsigned ncerts) { int ret; @@ -135,9 +133,8 @@ void doit(void) track_temp_files(); /* this will fail */ - ret = gnutls_certificate_set_x509_key_file2(xcred, certfile, keyfile, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_certificate_set_x509_key_file2( + xcred, certfile, keyfile, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret != GNUTLS_E_FILE_ERROR) fail("set_x509_key_file failed: %s\n", gnutls_strerror(ret)); @@ -146,16 +143,15 @@ void doit(void) assert(gnutls_certificate_allocate_credentials(&xcred) >= 0); assert(gnutls_certificate_allocate_credentials(&clicred) >= 0); - ret = - gnutls_certificate_set_x509_trust_mem(clicred, &subca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clicred, &subca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) fail("set_x509_trust_file failed: %s\n", gnutls_strerror(ret)); success("Testing store of certificates\n"); - idx = - set_cert(xcred, &server_ca3_key, &server_ca3_localhost6_cert_chain); + idx = set_cert(xcred, &server_ca3_key, + &server_ca3_localhost6_cert_chain); verify_written_cert(xcred, idx, &server_ca3_localhost6_cert_chain, 2); assert(idx == 0); @@ -166,7 +162,8 @@ void doit(void) success("Tested store of %d\n", idx); - test_cli_serv(xcred, clicred, "NORMAL", "localhost", NULL, NULL, NULL); /* the DNS name of the first cert */ + test_cli_serv(xcred, clicred, "NORMAL", "localhost", NULL, NULL, + NULL); /* the DNS name of the first cert */ idx = set_cert(xcred, &server_key, &server_cert); assert(idx == 0); diff --git a/tests/set_x509_key_file_ocsp.c b/tests/set_x509_key_file_ocsp.c index 69e9296f14..9ed5170584 100644 --- a/tests/set_x509_key_file_ocsp.c +++ b/tests/set_x509_key_file_ocsp.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -31,13 +31,13 @@ #ifdef ENABLE_OCSP -# include "cert-common.h" -# include "utils.h" +#include "cert-common.h" +#include "utils.h" /* Tests whether setting an OCSP response to a server * is working as expected */ -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1469186559; if (t) @@ -47,207 +47,140 @@ static time_t mytime(time_t * t) } static const unsigned char _resp[] = { - 0x30, 0x82, 0x06, 0x45, 0x0A, 0x01, 0x00, 0xA0, - 0x82, 0x06, 0x3E, 0x30, 0x82, 0x06, 0x3A, 0x06, - 0x09, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, - 0x01, 0x01, 0x04, 0x82, 0x06, 0x2B, 0x30, 0x82, - 0x06, 0x27, 0x30, 0x81, 0x9E, 0xA2, 0x16, 0x04, - 0x14, 0x1E, 0xA5, 0xBD, 0xCA, 0x59, 0x64, 0x55, - 0x85, 0xAC, 0xDA, 0x54, 0x34, 0x23, 0x40, 0xD1, - 0xF6, 0xBD, 0xC3, 0xB0, 0xF6, 0x18, 0x0F, 0x32, - 0x30, 0x31, 0x37, 0x31, 0x31, 0x31, 0x39, 0x30, - 0x39, 0x34, 0x33, 0x34, 0x37, 0x5A, 0x30, 0x73, - 0x30, 0x71, 0x30, 0x49, 0x30, 0x09, 0x06, 0x05, - 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0x04, - 0x14, 0xD1, 0xB1, 0x64, 0x8B, 0x8C, 0x9F, 0x0D, - 0xD1, 0x6B, 0xA3, 0x8A, 0xCD, 0x2B, 0x50, 0x17, - 0xD5, 0xF9, 0xCF, 0xC0, 0x64, 0x04, 0x14, 0x5F, - 0x60, 0xCF, 0x61, 0x90, 0x55, 0xDF, 0x84, 0x43, - 0x14, 0x8A, 0x60, 0x2A, 0xB2, 0xF5, 0x7A, 0xF4, - 0x43, 0x18, 0xEF, 0x02, 0x10, 0x28, 0x2E, 0x96, - 0xB3, 0x6B, 0x76, 0xD6, 0xD8, 0x52, 0x46, 0xED, - 0xBB, 0x31, 0xB2, 0x0C, 0x98, 0x80, 0x00, 0x18, - 0x0F, 0x32, 0x30, 0x31, 0x37, 0x31, 0x31, 0x31, - 0x39, 0x30, 0x39, 0x34, 0x33, 0x34, 0x37, 0x5A, - 0xA0, 0x11, 0x18, 0x0F, 0x32, 0x30, 0x31, 0x37, - 0x31, 0x31, 0x32, 0x36, 0x30, 0x39, 0x34, 0x33, - 0x34, 0x37, 0x5A, 0x30, 0x0D, 0x06, 0x09, 0x2A, - 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, - 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x54, - 0x66, 0x9D, 0x96, 0x6B, 0x9D, 0x71, 0x18, 0x86, - 0x90, 0x5D, 0xD9, 0x54, 0x9C, 0xC4, 0x7F, 0x18, - 0x51, 0xE9, 0xFE, 0xF3, 0xE6, 0x48, 0x60, 0x89, - 0x74, 0xFD, 0xF1, 0x6D, 0xDB, 0x1F, 0x5A, 0x28, - 0x3D, 0x16, 0xEA, 0xA6, 0xD6, 0xE0, 0xAA, 0x42, - 0xF9, 0x5B, 0x76, 0xA1, 0x59, 0xDA, 0x30, 0x8D, - 0x08, 0x18, 0xDD, 0x60, 0x39, 0x0B, 0x90, 0x64, - 0x11, 0x1E, 0x9D, 0xA2, 0x70, 0x18, 0xAD, 0xC6, - 0x27, 0xD3, 0xF1, 0xBA, 0x11, 0x4E, 0xF6, 0x9D, - 0x6C, 0xC5, 0xEB, 0xD6, 0xB7, 0x43, 0x9D, 0x32, - 0x31, 0xC9, 0x24, 0x19, 0xB9, 0x47, 0x1C, 0x61, - 0x09, 0x8F, 0xAA, 0x42, 0x5B, 0xAF, 0x66, 0x0F, - 0x23, 0xAA, 0x80, 0xC0, 0x85, 0x7F, 0x00, 0x08, - 0xCA, 0x30, 0xE4, 0xC8, 0xDA, 0x2F, 0xC4, 0xD2, - 0x7E, 0x86, 0xCC, 0xDA, 0x6D, 0xD4, 0x7E, 0x40, - 0x66, 0xD8, 0x5C, 0x27, 0x83, 0xDA, 0x10, 0x8F, - 0x91, 0xA8, 0xE6, 0x9D, 0x44, 0x13, 0xF1, 0x04, - 0x4E, 0xC9, 0xF9, 0xC8, 0xA2, 0xED, 0x9C, 0x9F, - 0x05, 0xDA, 0xFA, 0x4A, 0xEA, 0xD2, 0x72, 0xF9, - 0xF1, 0xF6, 0xDB, 0xFF, 0xF8, 0x55, 0x0E, 0x92, - 0x75, 0xD6, 0x83, 0xBC, 0x7A, 0x95, 0xBE, 0xBF, - 0x8D, 0xD5, 0xA3, 0x23, 0x02, 0x32, 0xF8, 0x60, - 0xF7, 0x7C, 0x46, 0xC6, 0x69, 0x7E, 0xB7, 0x23, - 0xE1, 0x36, 0xC2, 0xEE, 0xBD, 0xFF, 0x3C, 0x05, - 0x5E, 0x07, 0x0C, 0xA6, 0x64, 0x65, 0x82, 0x46, - 0xC9, 0x67, 0x73, 0xC9, 0x15, 0xC8, 0xFA, 0x0F, - 0x73, 0xB5, 0x48, 0x0F, 0x0E, 0x6F, 0x43, 0xE8, - 0x8D, 0x7A, 0x21, 0x88, 0x12, 0x08, 0x37, 0x18, - 0x67, 0x66, 0x05, 0xD1, 0x2C, 0x4D, 0xE8, 0xA6, - 0x1B, 0x4D, 0x29, 0xD4, 0xEF, 0x79, 0x83, 0xDB, - 0xCA, 0x6E, 0xBC, 0xE4, 0xCA, 0x50, 0xB0, 0x73, - 0xEF, 0xD6, 0xC7, 0x69, 0xF6, 0x16, 0x1E, 0xA0, - 0x82, 0x04, 0x6E, 0x30, 0x82, 0x04, 0x6A, 0x30, - 0x82, 0x04, 0x66, 0x30, 0x82, 0x03, 0x4E, 0xA0, - 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x6F, 0x93, - 0x87, 0x5C, 0x4B, 0x9E, 0x94, 0x93, 0xF8, 0x5F, - 0x16, 0xA7, 0x05, 0x86, 0x82, 0x8C, 0x30, 0x0D, - 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, - 0x01, 0x01, 0x0B, 0x05, 0x00, 0x30, 0x7E, 0x31, - 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, - 0x13, 0x02, 0x55, 0x53, 0x31, 0x1D, 0x30, 0x1B, - 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x14, 0x53, - 0x79, 0x6D, 0x61, 0x6E, 0x74, 0x65, 0x63, 0x20, - 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, - 0x69, 0x6F, 0x6E, 0x31, 0x1F, 0x30, 0x1D, 0x06, - 0x03, 0x55, 0x04, 0x0B, 0x13, 0x16, 0x53, 0x79, - 0x6D, 0x61, 0x6E, 0x74, 0x65, 0x63, 0x20, 0x54, - 0x72, 0x75, 0x73, 0x74, 0x20, 0x4E, 0x65, 0x74, - 0x77, 0x6F, 0x72, 0x6B, 0x31, 0x2F, 0x30, 0x2D, - 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x26, 0x53, - 0x79, 0x6D, 0x61, 0x6E, 0x74, 0x65, 0x63, 0x20, - 0x43, 0x6C, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, - 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, - 0x20, 0x2D, 0x20, 0x47, 0x34, 0x30, 0x1E, 0x17, - 0x0D, 0x31, 0x37, 0x31, 0x30, 0x31, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x5A, 0x17, 0x0D, - 0x31, 0x38, 0x30, 0x31, 0x30, 0x38, 0x32, 0x33, - 0x35, 0x39, 0x35, 0x39, 0x5A, 0x30, 0x40, 0x31, - 0x3E, 0x30, 0x3C, 0x06, 0x03, 0x55, 0x04, 0x03, - 0x13, 0x35, 0x53, 0x79, 0x6D, 0x61, 0x6E, 0x74, - 0x65, 0x63, 0x20, 0x43, 0x6C, 0x61, 0x73, 0x73, - 0x20, 0x33, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, - 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x43, 0x41, 0x20, 0x2D, 0x20, 0x47, 0x34, - 0x20, 0x4F, 0x43, 0x53, 0x50, 0x20, 0x52, 0x65, - 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x65, 0x72, 0x30, - 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, - 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, - 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, - 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, - 0xBA, 0xB1, 0x3E, 0xBD, 0xF0, 0x1E, 0x19, 0x16, - 0xEA, 0x20, 0x44, 0x73, 0x1F, 0xD8, 0x85, 0x17, - 0xC4, 0xBF, 0x86, 0xF0, 0x75, 0x46, 0x02, 0xA8, - 0x5B, 0x7F, 0xA8, 0xF8, 0xB2, 0x08, 0x08, 0x55, - 0x01, 0xDD, 0x5B, 0xA4, 0x0B, 0xBD, 0x8A, 0x0A, - 0x87, 0x90, 0x62, 0x21, 0x59, 0x67, 0x33, 0x36, - 0x77, 0x49, 0xAB, 0x69, 0x4B, 0xDB, 0xB8, 0xFC, - 0x27, 0xA9, 0x81, 0x4A, 0x1F, 0x5F, 0x7D, 0x5C, - 0xC2, 0xE6, 0x54, 0x12, 0xFB, 0xA7, 0xEB, 0x9F, - 0xB5, 0xAC, 0x05, 0xBE, 0xA9, 0x58, 0xAA, 0x49, - 0x32, 0xEE, 0x73, 0xE8, 0x2F, 0xB1, 0xD3, 0x2E, - 0x13, 0xBC, 0x26, 0x23, 0xA0, 0x82, 0xD4, 0x25, - 0x20, 0x34, 0xAE, 0x16, 0x48, 0xFB, 0x55, 0x2B, - 0x58, 0xC9, 0xC4, 0x84, 0xAC, 0xF7, 0xC4, 0x78, - 0x62, 0xB7, 0xBF, 0xA2, 0x32, 0xC7, 0x34, 0x1C, - 0xDF, 0x9E, 0xFE, 0xA8, 0x04, 0x85, 0xAF, 0xCB, - 0x5A, 0xD6, 0xC6, 0x68, 0x9F, 0x28, 0x03, 0xB7, - 0x98, 0x8E, 0xD4, 0xA5, 0xE1, 0x18, 0xD1, 0x64, - 0x79, 0x67, 0x04, 0x33, 0x6C, 0x4B, 0xE0, 0xCF, - 0x34, 0xFC, 0x81, 0x27, 0x98, 0x16, 0xBB, 0xA3, - 0x9F, 0xE1, 0x4D, 0x2B, 0x71, 0x21, 0x41, 0x90, - 0xFF, 0x20, 0xB8, 0x4A, 0xCF, 0xB2, 0x2D, 0xB1, - 0xF8, 0x89, 0x40, 0xBC, 0xB3, 0x9F, 0x94, 0x1C, - 0xF4, 0x68, 0xEA, 0x7B, 0x31, 0x29, 0xDA, 0x71, - 0xCC, 0x37, 0x9A, 0xF9, 0x36, 0x0B, 0x58, 0x11, - 0x6F, 0x28, 0x14, 0x6F, 0xAF, 0x57, 0x6B, 0xD7, - 0xBD, 0x36, 0x98, 0xF4, 0x6C, 0x84, 0xF8, 0x48, - 0xF1, 0xBF, 0x88, 0xEB, 0x5C, 0x06, 0x8B, 0x02, - 0xF1, 0xDF, 0x6A, 0xFD, 0x61, 0xCF, 0x05, 0x5E, - 0xB5, 0x99, 0x85, 0x31, 0x41, 0x1D, 0xE5, 0x67, - 0x5C, 0x83, 0xA2, 0xBA, 0x9C, 0x9C, 0x37, 0x44, - 0xEF, 0xBC, 0x0E, 0xDE, 0xBF, 0x91, 0x5B, 0x1F, - 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x01, - 0x1C, 0x30, 0x82, 0x01, 0x18, 0x30, 0x0F, 0x06, - 0x09, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, - 0x01, 0x05, 0x04, 0x02, 0x05, 0x00, 0x30, 0x22, - 0x06, 0x03, 0x55, 0x1D, 0x11, 0x04, 0x1B, 0x30, - 0x19, 0xA4, 0x17, 0x30, 0x15, 0x31, 0x13, 0x30, - 0x11, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0A, - 0x54, 0x47, 0x56, 0x2D, 0x45, 0x2D, 0x33, 0x32, - 0x35, 0x36, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, - 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x5F, - 0x60, 0xCF, 0x61, 0x90, 0x55, 0xDF, 0x84, 0x43, - 0x14, 0x8A, 0x60, 0x2A, 0xB2, 0xF5, 0x7A, 0xF4, - 0x43, 0x18, 0xEF, 0x30, 0x1D, 0x06, 0x03, 0x55, - 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x1E, 0xA5, - 0xBD, 0xCA, 0x59, 0x64, 0x55, 0x85, 0xAC, 0xDA, - 0x54, 0x34, 0x23, 0x40, 0xD1, 0xF6, 0xBD, 0xC3, - 0xB0, 0xF6, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, - 0x13, 0x01, 0x01, 0xFF, 0x04, 0x02, 0x30, 0x00, - 0x30, 0x6E, 0x06, 0x03, 0x55, 0x1D, 0x20, 0x04, - 0x67, 0x30, 0x65, 0x30, 0x63, 0x06, 0x0B, 0x60, - 0x86, 0x48, 0x01, 0x86, 0xF8, 0x45, 0x01, 0x07, - 0x17, 0x03, 0x30, 0x54, 0x30, 0x26, 0x06, 0x08, - 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, - 0x16, 0x1A, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, - 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x73, 0x79, 0x6D, - 0x61, 0x75, 0x74, 0x68, 0x2E, 0x63, 0x6F, 0x6D, - 0x2F, 0x63, 0x70, 0x73, 0x30, 0x2A, 0x06, 0x08, - 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x02, - 0x30, 0x1E, 0x1A, 0x1C, 0x20, 0x20, 0x68, 0x74, - 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, - 0x2E, 0x73, 0x79, 0x6D, 0x61, 0x75, 0x74, 0x68, - 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x72, 0x70, 0x61, - 0x30, 0x13, 0x06, 0x03, 0x55, 0x1D, 0x25, 0x04, - 0x0C, 0x30, 0x0A, 0x06, 0x08, 0x2B, 0x06, 0x01, - 0x05, 0x05, 0x07, 0x03, 0x09, 0x30, 0x0E, 0x06, - 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, - 0x04, 0x03, 0x02, 0x07, 0x80, 0x30, 0x0D, 0x06, - 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, - 0x01, 0x0B, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, - 0x00, 0x45, 0xFF, 0xCA, 0xD2, 0xAC, 0x71, 0xBE, - 0xA5, 0x62, 0x86, 0x93, 0x30, 0xD0, 0xE5, 0xE5, - 0x87, 0xFC, 0xAA, 0x29, 0x73, 0x36, 0xD6, 0x66, - 0x33, 0xC4, 0xCB, 0xC5, 0x6E, 0xC6, 0x2C, 0x8C, - 0x8E, 0xEE, 0x4D, 0xC2, 0xFA, 0xB3, 0xC0, 0xE7, - 0x11, 0x02, 0x69, 0x7A, 0xC5, 0x89, 0x28, 0x86, - 0x31, 0xD5, 0x14, 0x43, 0x5A, 0x20, 0xB7, 0xBD, - 0x1C, 0x0B, 0x1C, 0x3C, 0x84, 0x58, 0xBA, 0x56, - 0x14, 0x5B, 0xB8, 0x38, 0x97, 0x18, 0x66, 0xD6, - 0x12, 0x51, 0x4B, 0x5A, 0x2D, 0x0D, 0x00, 0xA7, - 0xBA, 0x5A, 0xC9, 0x0C, 0x4B, 0x10, 0xDE, 0xF5, - 0xAE, 0x56, 0xA5, 0x24, 0xC6, 0x3E, 0x5E, 0xD9, - 0xF1, 0x39, 0x76, 0x0C, 0xD7, 0x4A, 0xBF, 0x19, - 0x1F, 0x14, 0xA4, 0x18, 0xEC, 0x0F, 0x5D, 0x47, - 0x00, 0x75, 0xF0, 0x4E, 0xB3, 0xA1, 0xB4, 0x81, - 0x7B, 0x97, 0xAC, 0x0A, 0xA8, 0x5E, 0x92, 0xCC, - 0xB0, 0x80, 0x53, 0x66, 0xFF, 0xC6, 0x1B, 0x71, - 0xAF, 0xE3, 0x46, 0x55, 0x9D, 0x26, 0x51, 0x97, - 0xB0, 0x66, 0x9D, 0x06, 0x70, 0xC5, 0x04, 0x78, - 0xBC, 0x99, 0x42, 0xBA, 0x77, 0x82, 0x0E, 0xE8, - 0x92, 0x18, 0x4A, 0x72, 0x92, 0x13, 0x25, 0x7F, - 0x40, 0x15, 0xF7, 0xA8, 0x07, 0xA2, 0xAD, 0x03, - 0xBA, 0x1C, 0xF2, 0x93, 0xBE, 0x14, 0x72, 0x69, - 0x2B, 0x85, 0xAC, 0x2E, 0x2C, 0xBF, 0x1C, 0xC6, - 0x6C, 0x91, 0xF3, 0x2F, 0xF0, 0xB0, 0x8A, 0xC3, - 0xB8, 0xAC, 0x9B, 0xD1, 0xA1, 0x4C, 0xB7, 0x34, - 0xCA, 0xC6, 0x90, 0x15, 0xA7, 0x39, 0xB4, 0xF1, - 0xED, 0x54, 0x53, 0x5C, 0x29, 0x6F, 0xCE, 0x97, - 0x3E, 0x72, 0x79, 0x24, 0xEA, 0xC8, 0x87, 0x21, - 0x5F, 0x40, 0xBF, 0x53, 0x37, 0x8E, 0xCA, 0x0B, - 0x44, 0xD0, 0x4B, 0x6E, 0xAD, 0x94, 0xFB, 0x0F, - 0x33, 0xFE, 0x86, 0xDF, 0x4C, 0xE9, 0x94, 0xBB, + 0x30, 0x82, 0x06, 0x45, 0x0A, 0x01, 0x00, 0xA0, 0x82, 0x06, 0x3E, 0x30, + 0x82, 0x06, 0x3A, 0x06, 0x09, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, + 0x01, 0x01, 0x04, 0x82, 0x06, 0x2B, 0x30, 0x82, 0x06, 0x27, 0x30, 0x81, + 0x9E, 0xA2, 0x16, 0x04, 0x14, 0x1E, 0xA5, 0xBD, 0xCA, 0x59, 0x64, 0x55, + 0x85, 0xAC, 0xDA, 0x54, 0x34, 0x23, 0x40, 0xD1, 0xF6, 0xBD, 0xC3, 0xB0, + 0xF6, 0x18, 0x0F, 0x32, 0x30, 0x31, 0x37, 0x31, 0x31, 0x31, 0x39, 0x30, + 0x39, 0x34, 0x33, 0x34, 0x37, 0x5A, 0x30, 0x73, 0x30, 0x71, 0x30, 0x49, + 0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0x04, + 0x14, 0xD1, 0xB1, 0x64, 0x8B, 0x8C, 0x9F, 0x0D, 0xD1, 0x6B, 0xA3, 0x8A, + 0xCD, 0x2B, 0x50, 0x17, 0xD5, 0xF9, 0xCF, 0xC0, 0x64, 0x04, 0x14, 0x5F, + 0x60, 0xCF, 0x61, 0x90, 0x55, 0xDF, 0x84, 0x43, 0x14, 0x8A, 0x60, 0x2A, + 0xB2, 0xF5, 0x7A, 0xF4, 0x43, 0x18, 0xEF, 0x02, 0x10, 0x28, 0x2E, 0x96, + 0xB3, 0x6B, 0x76, 0xD6, 0xD8, 0x52, 0x46, 0xED, 0xBB, 0x31, 0xB2, 0x0C, + 0x98, 0x80, 0x00, 0x18, 0x0F, 0x32, 0x30, 0x31, 0x37, 0x31, 0x31, 0x31, + 0x39, 0x30, 0x39, 0x34, 0x33, 0x34, 0x37, 0x5A, 0xA0, 0x11, 0x18, 0x0F, + 0x32, 0x30, 0x31, 0x37, 0x31, 0x31, 0x32, 0x36, 0x30, 0x39, 0x34, 0x33, + 0x34, 0x37, 0x5A, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, + 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x54, + 0x66, 0x9D, 0x96, 0x6B, 0x9D, 0x71, 0x18, 0x86, 0x90, 0x5D, 0xD9, 0x54, + 0x9C, 0xC4, 0x7F, 0x18, 0x51, 0xE9, 0xFE, 0xF3, 0xE6, 0x48, 0x60, 0x89, + 0x74, 0xFD, 0xF1, 0x6D, 0xDB, 0x1F, 0x5A, 0x28, 0x3D, 0x16, 0xEA, 0xA6, + 0xD6, 0xE0, 0xAA, 0x42, 0xF9, 0x5B, 0x76, 0xA1, 0x59, 0xDA, 0x30, 0x8D, + 0x08, 0x18, 0xDD, 0x60, 0x39, 0x0B, 0x90, 0x64, 0x11, 0x1E, 0x9D, 0xA2, + 0x70, 0x18, 0xAD, 0xC6, 0x27, 0xD3, 0xF1, 0xBA, 0x11, 0x4E, 0xF6, 0x9D, + 0x6C, 0xC5, 0xEB, 0xD6, 0xB7, 0x43, 0x9D, 0x32, 0x31, 0xC9, 0x24, 0x19, + 0xB9, 0x47, 0x1C, 0x61, 0x09, 0x8F, 0xAA, 0x42, 0x5B, 0xAF, 0x66, 0x0F, + 0x23, 0xAA, 0x80, 0xC0, 0x85, 0x7F, 0x00, 0x08, 0xCA, 0x30, 0xE4, 0xC8, + 0xDA, 0x2F, 0xC4, 0xD2, 0x7E, 0x86, 0xCC, 0xDA, 0x6D, 0xD4, 0x7E, 0x40, + 0x66, 0xD8, 0x5C, 0x27, 0x83, 0xDA, 0x10, 0x8F, 0x91, 0xA8, 0xE6, 0x9D, + 0x44, 0x13, 0xF1, 0x04, 0x4E, 0xC9, 0xF9, 0xC8, 0xA2, 0xED, 0x9C, 0x9F, + 0x05, 0xDA, 0xFA, 0x4A, 0xEA, 0xD2, 0x72, 0xF9, 0xF1, 0xF6, 0xDB, 0xFF, + 0xF8, 0x55, 0x0E, 0x92, 0x75, 0xD6, 0x83, 0xBC, 0x7A, 0x95, 0xBE, 0xBF, + 0x8D, 0xD5, 0xA3, 0x23, 0x02, 0x32, 0xF8, 0x60, 0xF7, 0x7C, 0x46, 0xC6, + 0x69, 0x7E, 0xB7, 0x23, 0xE1, 0x36, 0xC2, 0xEE, 0xBD, 0xFF, 0x3C, 0x05, + 0x5E, 0x07, 0x0C, 0xA6, 0x64, 0x65, 0x82, 0x46, 0xC9, 0x67, 0x73, 0xC9, + 0x15, 0xC8, 0xFA, 0x0F, 0x73, 0xB5, 0x48, 0x0F, 0x0E, 0x6F, 0x43, 0xE8, + 0x8D, 0x7A, 0x21, 0x88, 0x12, 0x08, 0x37, 0x18, 0x67, 0x66, 0x05, 0xD1, + 0x2C, 0x4D, 0xE8, 0xA6, 0x1B, 0x4D, 0x29, 0xD4, 0xEF, 0x79, 0x83, 0xDB, + 0xCA, 0x6E, 0xBC, 0xE4, 0xCA, 0x50, 0xB0, 0x73, 0xEF, 0xD6, 0xC7, 0x69, + 0xF6, 0x16, 0x1E, 0xA0, 0x82, 0x04, 0x6E, 0x30, 0x82, 0x04, 0x6A, 0x30, + 0x82, 0x04, 0x66, 0x30, 0x82, 0x03, 0x4E, 0xA0, 0x03, 0x02, 0x01, 0x02, + 0x02, 0x10, 0x6F, 0x93, 0x87, 0x5C, 0x4B, 0x9E, 0x94, 0x93, 0xF8, 0x5F, + 0x16, 0xA7, 0x05, 0x86, 0x82, 0x8C, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, + 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x30, 0x7E, 0x31, + 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x1D, 0x30, 0x1B, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x14, 0x53, + 0x79, 0x6D, 0x61, 0x6E, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6F, 0x72, 0x70, + 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x31, 0x1F, 0x30, 0x1D, 0x06, + 0x03, 0x55, 0x04, 0x0B, 0x13, 0x16, 0x53, 0x79, 0x6D, 0x61, 0x6E, 0x74, + 0x65, 0x63, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4E, 0x65, 0x74, + 0x77, 0x6F, 0x72, 0x6B, 0x31, 0x2F, 0x30, 0x2D, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x26, 0x53, 0x79, 0x6D, 0x61, 0x6E, 0x74, 0x65, 0x63, 0x20, + 0x43, 0x6C, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x53, 0x65, 0x63, 0x75, + 0x72, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, + 0x20, 0x2D, 0x20, 0x47, 0x34, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x37, 0x31, + 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5A, 0x17, 0x0D, + 0x31, 0x38, 0x30, 0x31, 0x30, 0x38, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, + 0x5A, 0x30, 0x40, 0x31, 0x3E, 0x30, 0x3C, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x35, 0x53, 0x79, 0x6D, 0x61, 0x6E, 0x74, 0x65, 0x63, 0x20, 0x43, + 0x6C, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, + 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x20, + 0x2D, 0x20, 0x47, 0x34, 0x20, 0x4F, 0x43, 0x53, 0x50, 0x20, 0x52, 0x65, + 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x65, 0x72, 0x30, 0x82, 0x01, 0x22, 0x30, + 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, + 0x82, 0x01, 0x01, 0x00, 0xBA, 0xB1, 0x3E, 0xBD, 0xF0, 0x1E, 0x19, 0x16, + 0xEA, 0x20, 0x44, 0x73, 0x1F, 0xD8, 0x85, 0x17, 0xC4, 0xBF, 0x86, 0xF0, + 0x75, 0x46, 0x02, 0xA8, 0x5B, 0x7F, 0xA8, 0xF8, 0xB2, 0x08, 0x08, 0x55, + 0x01, 0xDD, 0x5B, 0xA4, 0x0B, 0xBD, 0x8A, 0x0A, 0x87, 0x90, 0x62, 0x21, + 0x59, 0x67, 0x33, 0x36, 0x77, 0x49, 0xAB, 0x69, 0x4B, 0xDB, 0xB8, 0xFC, + 0x27, 0xA9, 0x81, 0x4A, 0x1F, 0x5F, 0x7D, 0x5C, 0xC2, 0xE6, 0x54, 0x12, + 0xFB, 0xA7, 0xEB, 0x9F, 0xB5, 0xAC, 0x05, 0xBE, 0xA9, 0x58, 0xAA, 0x49, + 0x32, 0xEE, 0x73, 0xE8, 0x2F, 0xB1, 0xD3, 0x2E, 0x13, 0xBC, 0x26, 0x23, + 0xA0, 0x82, 0xD4, 0x25, 0x20, 0x34, 0xAE, 0x16, 0x48, 0xFB, 0x55, 0x2B, + 0x58, 0xC9, 0xC4, 0x84, 0xAC, 0xF7, 0xC4, 0x78, 0x62, 0xB7, 0xBF, 0xA2, + 0x32, 0xC7, 0x34, 0x1C, 0xDF, 0x9E, 0xFE, 0xA8, 0x04, 0x85, 0xAF, 0xCB, + 0x5A, 0xD6, 0xC6, 0x68, 0x9F, 0x28, 0x03, 0xB7, 0x98, 0x8E, 0xD4, 0xA5, + 0xE1, 0x18, 0xD1, 0x64, 0x79, 0x67, 0x04, 0x33, 0x6C, 0x4B, 0xE0, 0xCF, + 0x34, 0xFC, 0x81, 0x27, 0x98, 0x16, 0xBB, 0xA3, 0x9F, 0xE1, 0x4D, 0x2B, + 0x71, 0x21, 0x41, 0x90, 0xFF, 0x20, 0xB8, 0x4A, 0xCF, 0xB2, 0x2D, 0xB1, + 0xF8, 0x89, 0x40, 0xBC, 0xB3, 0x9F, 0x94, 0x1C, 0xF4, 0x68, 0xEA, 0x7B, + 0x31, 0x29, 0xDA, 0x71, 0xCC, 0x37, 0x9A, 0xF9, 0x36, 0x0B, 0x58, 0x11, + 0x6F, 0x28, 0x14, 0x6F, 0xAF, 0x57, 0x6B, 0xD7, 0xBD, 0x36, 0x98, 0xF4, + 0x6C, 0x84, 0xF8, 0x48, 0xF1, 0xBF, 0x88, 0xEB, 0x5C, 0x06, 0x8B, 0x02, + 0xF1, 0xDF, 0x6A, 0xFD, 0x61, 0xCF, 0x05, 0x5E, 0xB5, 0x99, 0x85, 0x31, + 0x41, 0x1D, 0xE5, 0x67, 0x5C, 0x83, 0xA2, 0xBA, 0x9C, 0x9C, 0x37, 0x44, + 0xEF, 0xBC, 0x0E, 0xDE, 0xBF, 0x91, 0x5B, 0x1F, 0x02, 0x03, 0x01, 0x00, + 0x01, 0xA3, 0x82, 0x01, 0x1C, 0x30, 0x82, 0x01, 0x18, 0x30, 0x0F, 0x06, + 0x09, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x05, 0x04, 0x02, + 0x05, 0x00, 0x30, 0x22, 0x06, 0x03, 0x55, 0x1D, 0x11, 0x04, 0x1B, 0x30, + 0x19, 0xA4, 0x17, 0x30, 0x15, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x0A, 0x54, 0x47, 0x56, 0x2D, 0x45, 0x2D, 0x33, 0x32, + 0x35, 0x36, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0x5F, 0x60, 0xCF, 0x61, 0x90, 0x55, 0xDF, 0x84, 0x43, + 0x14, 0x8A, 0x60, 0x2A, 0xB2, 0xF5, 0x7A, 0xF4, 0x43, 0x18, 0xEF, 0x30, + 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x1E, 0xA5, + 0xBD, 0xCA, 0x59, 0x64, 0x55, 0x85, 0xAC, 0xDA, 0x54, 0x34, 0x23, 0x40, + 0xD1, 0xF6, 0xBD, 0xC3, 0xB0, 0xF6, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, + 0x13, 0x01, 0x01, 0xFF, 0x04, 0x02, 0x30, 0x00, 0x30, 0x6E, 0x06, 0x03, + 0x55, 0x1D, 0x20, 0x04, 0x67, 0x30, 0x65, 0x30, 0x63, 0x06, 0x0B, 0x60, + 0x86, 0x48, 0x01, 0x86, 0xF8, 0x45, 0x01, 0x07, 0x17, 0x03, 0x30, 0x54, + 0x30, 0x26, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, + 0x16, 0x1A, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, + 0x2E, 0x73, 0x79, 0x6D, 0x61, 0x75, 0x74, 0x68, 0x2E, 0x63, 0x6F, 0x6D, + 0x2F, 0x63, 0x70, 0x73, 0x30, 0x2A, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x02, 0x02, 0x30, 0x1E, 0x1A, 0x1C, 0x20, 0x20, 0x68, 0x74, + 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x73, 0x79, 0x6D, + 0x61, 0x75, 0x74, 0x68, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x72, 0x70, 0x61, + 0x30, 0x13, 0x06, 0x03, 0x55, 0x1D, 0x25, 0x04, 0x0C, 0x30, 0x0A, 0x06, + 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x09, 0x30, 0x0E, 0x06, + 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x07, + 0x80, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, + 0x01, 0x0B, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x45, 0xFF, 0xCA, + 0xD2, 0xAC, 0x71, 0xBE, 0xA5, 0x62, 0x86, 0x93, 0x30, 0xD0, 0xE5, 0xE5, + 0x87, 0xFC, 0xAA, 0x29, 0x73, 0x36, 0xD6, 0x66, 0x33, 0xC4, 0xCB, 0xC5, + 0x6E, 0xC6, 0x2C, 0x8C, 0x8E, 0xEE, 0x4D, 0xC2, 0xFA, 0xB3, 0xC0, 0xE7, + 0x11, 0x02, 0x69, 0x7A, 0xC5, 0x89, 0x28, 0x86, 0x31, 0xD5, 0x14, 0x43, + 0x5A, 0x20, 0xB7, 0xBD, 0x1C, 0x0B, 0x1C, 0x3C, 0x84, 0x58, 0xBA, 0x56, + 0x14, 0x5B, 0xB8, 0x38, 0x97, 0x18, 0x66, 0xD6, 0x12, 0x51, 0x4B, 0x5A, + 0x2D, 0x0D, 0x00, 0xA7, 0xBA, 0x5A, 0xC9, 0x0C, 0x4B, 0x10, 0xDE, 0xF5, + 0xAE, 0x56, 0xA5, 0x24, 0xC6, 0x3E, 0x5E, 0xD9, 0xF1, 0x39, 0x76, 0x0C, + 0xD7, 0x4A, 0xBF, 0x19, 0x1F, 0x14, 0xA4, 0x18, 0xEC, 0x0F, 0x5D, 0x47, + 0x00, 0x75, 0xF0, 0x4E, 0xB3, 0xA1, 0xB4, 0x81, 0x7B, 0x97, 0xAC, 0x0A, + 0xA8, 0x5E, 0x92, 0xCC, 0xB0, 0x80, 0x53, 0x66, 0xFF, 0xC6, 0x1B, 0x71, + 0xAF, 0xE3, 0x46, 0x55, 0x9D, 0x26, 0x51, 0x97, 0xB0, 0x66, 0x9D, 0x06, + 0x70, 0xC5, 0x04, 0x78, 0xBC, 0x99, 0x42, 0xBA, 0x77, 0x82, 0x0E, 0xE8, + 0x92, 0x18, 0x4A, 0x72, 0x92, 0x13, 0x25, 0x7F, 0x40, 0x15, 0xF7, 0xA8, + 0x07, 0xA2, 0xAD, 0x03, 0xBA, 0x1C, 0xF2, 0x93, 0xBE, 0x14, 0x72, 0x69, + 0x2B, 0x85, 0xAC, 0x2E, 0x2C, 0xBF, 0x1C, 0xC6, 0x6C, 0x91, 0xF3, 0x2F, + 0xF0, 0xB0, 0x8A, 0xC3, 0xB8, 0xAC, 0x9B, 0xD1, 0xA1, 0x4C, 0xB7, 0x34, + 0xCA, 0xC6, 0x90, 0x15, 0xA7, 0x39, 0xB4, 0xF1, 0xED, 0x54, 0x53, 0x5C, + 0x29, 0x6F, 0xCE, 0x97, 0x3E, 0x72, 0x79, 0x24, 0xEA, 0xC8, 0x87, 0x21, + 0x5F, 0x40, 0xBF, 0x53, 0x37, 0x8E, 0xCA, 0x0B, 0x44, 0xD0, 0x4B, 0x6E, + 0xAD, 0x94, 0xFB, 0x0F, 0x33, 0xFE, 0x86, 0xDF, 0x4C, 0xE9, 0x94, 0xBB, 0x3F }; @@ -270,8 +203,8 @@ static void check_response(gnutls_session_t session, void *priv) fail("not expected response, but received one\n"); } - if (resp.size != exp_resp->size - || memcmp(resp.data, exp_resp->data, resp.size) != 0) { + if (resp.size != exp_resp->size || + memcmp(resp.data, exp_resp->data, resp.size) != 0) { fail("did not receive the expected response\n"); } @@ -281,9 +214,8 @@ static void check_response(gnutls_session_t session, void *priv) fail("did not receive the expected value (%d)\n", ret); } - ret = - gnutls_ocsp_status_request_is_checked(session, - GNUTLS_OCSP_SR_IS_AVAIL); + ret = gnutls_ocsp_status_request_is_checked(session, + GNUTLS_OCSP_SR_IS_AVAIL); if (ret == 0) { fail("did not receive the expected value (%d)\n", ret); } @@ -311,34 +243,29 @@ void doit(void) fp = fopen(certfile, "wb"); if (fp == NULL) fail("error in fopen\n"); - assert(fwrite - (server_localhost_ca3_cert_chain_pem, 1, - strlen(server_localhost_ca3_cert_chain_pem), fp) > 0); - assert(fwrite - (server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), - fp) > 0); + assert(fwrite(server_localhost_ca3_cert_chain_pem, 1, + strlen(server_localhost_ca3_cert_chain_pem), fp) > 0); + assert(fwrite(server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), + fp) > 0); fclose(fp); /* set cert with localhost name */ - ret = gnutls_certificate_set_x509_key_file2(xcred, certfile, certfile, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_certificate_set_x509_key_file2( + xcred, certfile, certfile, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) fail("set_x509_key_file failed: %s\n", gnutls_strerror(ret)); fp = fopen(certfile, "wb"); if (fp == NULL) fail("error in fopen\n"); - assert(fwrite - (server_localhost6_ca3_cert_chain_pem, 1, - strlen(server_localhost6_ca3_cert_chain_pem), fp) > 0); - assert(fwrite - (server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), - fp) > 0); + assert(fwrite(server_localhost6_ca3_cert_chain_pem, 1, + strlen(server_localhost6_ca3_cert_chain_pem), fp) > 0); + assert(fwrite(server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), + fp) > 0); fclose(fp); - gnutls_certificate_set_flags(xcred, - GNUTLS_CERTIFICATE_SKIP_OCSP_RESPONSE_CHECK); + gnutls_certificate_set_flags( + xcred, GNUTLS_CERTIFICATE_SKIP_OCSP_RESPONSE_CHECK); /* set OCSP response */ ocspfile1 = get_tmpname(ocspname1); @@ -348,9 +275,8 @@ void doit(void) assert(fwrite(ocsp_resp1.data, 1, ocsp_resp1.size, fp) > 0); fclose(fp); - ret = - gnutls_certificate_set_ocsp_status_request_file(xcred, ocspfile1, - 0); + ret = gnutls_certificate_set_ocsp_status_request_file(xcred, ocspfile1, + 0); if (ret < 0) fail("ocsp file set failed: %s\n", gnutls_strerror(ret)); @@ -374,16 +300,19 @@ void doit(void) GNUTLS_VERIFY_DISABLE_CRL_CHECKS) fail("error in gnutls_certificate_set_verify_flags\n"); - ret = - gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("error in setting trust cert: %s\n", gnutls_strerror(ret)); } - test_cli_serv(xcred, clicred, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.2", "localhost", &ocsp_resp1, check_response, NULL); /* the DNS name of the first cert */ + test_cli_serv(xcred, clicred, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.2", + "localhost", &ocsp_resp1, check_response, + NULL); /* the DNS name of the first cert */ - test_cli_serv(xcred, clicred, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", "localhost", &ocsp_resp1, check_response, NULL); /* the DNS name of the first cert */ + test_cli_serv(xcred, clicred, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", + "localhost", &ocsp_resp1, check_response, + NULL); /* the DNS name of the first cert */ gnutls_certificate_free_credentials(xcred); gnutls_certificate_free_credentials(clicred); diff --git a/tests/set_x509_key_file_ocsp_multi2.c b/tests/set_x509_key_file_ocsp_multi2.c index 1741cdc63b..3026bb48e3 100644 --- a/tests/set_x509_key_file_ocsp_multi2.c +++ b/tests/set_x509_key_file_ocsp_multi2.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -32,14 +32,14 @@ #ifdef ENABLE_OCSP -# include "cert-common.h" -# include "utils.h" +#include "cert-common.h" +#include "utils.h" /* Tests whether setting an OCSP response to a server with multiple * certificate sets, is working as expected. It tests * gnutls_certificate_set_ocsp_status_request_function2 */ -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1469186559; if (t) @@ -48,19 +48,22 @@ static time_t mytime(time_t * t) return then; } -# define RESP1 "\x30\x82\x06\x8C\x0A\x01\x00\xA0\x82\x06\x85\x30\x82\x06\x81\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x06\x72\x30\x82\x06\x6E\x30\x82\x01\x07\xA1\x69\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\x30\x64\x30\x62\x30\x3A\x30\x09\x06\x05\x2B\x0E\x03\x02\x1A\x05\x00\x04\x14\x13\x9D\xA0\x9E\xF4\x32\xAB\x8F\xE2\x89\x56\x67\xFA\xD0\xD4\xE3\x35\x86\x71\xB9\x04\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\x02\x01\x1D\x80\x00\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\xA0\x11\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x39\x32\x38\x5A\xA1\x23\x30\x21\x30\x1F\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x02\x04\x12\x04\x10\x16\x89\x7D\x91\x3A\xB5\x25\xA4\x45\xFE\xC9\xFD\xC2\xE5\x08\xA4\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x4E\xAD\x6B\x2B\xF7\xF2\xBF\xA9\x23\x1E\x3A\x0B\x06\xDB\x55\x53\x2B\x64\x54\x11\x32\xBF\x60\xF7\x4F\xE0\x8E\x9B\xA0\xA2\x4C\x79\xC3\x2A\xE0\x43\xF7\x40\x1A\xDC\xB9\xB4\x25\xEF\x48\x01\x97\x8C\xF5\x1E\xDB\xD1\x30\x37\x73\x69\xD6\xA7\x7A\x2D\x8E\xDE\x5C\xAA\xEA\x39\xB9\x52\xAA\x25\x1E\x74\x7D\xF9\x78\x95\x8A\x92\x1F\x98\x21\xF4\x60\x7F\xD3\x28\xEE\x47\x9C\xBF\xE2\x5D\xF6\x3F\x68\x0A\xD6\xFF\x08\xC1\xDC\x95\x1E\x29\xD7\x3E\x85\xD5\x65\xA4\x4B\xC0\xAF\xC3\x78\xAB\x06\x98\x88\x19\x8A\x64\xA6\x83\x91\x87\x13\xDB\x17\xCC\x46\xBD\xAB\x4E\xC7\x16\xD1\xF8\x35\xFD\x27\xC8\xF6\x6B\xEB\x37\xB8\x08\x6F\xE2\x6F\xB4\x7E\xD5\x68\xDB\x7F\x5D\x5E\x36\x38\xF2\x77\x59\x13\xE7\x3E\x4D\x67\x5F\xDB\xA2\xF5\x5D\x7C\xBF\xBD\xB5\x37\x33\x51\x36\x63\xF8\x21\x1E\xFC\x73\x8F\x32\x69\xBB\x97\xA7\xBD\xF1\xB6\xE0\x40\x09\x68\xEA\xD5\x93\xB8\xBB\x39\x8D\xA8\x16\x1B\xBF\x04\x7A\xBC\x18\x43\x01\xE9\x3C\x19\x5C\x4D\x4B\x98\xD8\x23\x37\x39\xA4\xC4\xDD\xED\x9C\xEC\x37\xAB\x66\x44\x9B\xE7\x5B\x5D\x32\xA2\xDB\xA6\x0B\x3B\x8C\xE1\xF5\xDB\xCB\x7D\x58\xA0\x82\x04\x4B\x30\x82\x04\x47\x30\x82\x04\x43\x30\x82\x03\x2B\xA0\x03\x02\x01\x02\x02\x01\x1E\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x30\x1E\x17\x0D\x30\x39\x31\x31\x32\x34\x31\x32\x35\x31\x35\x33\x5A\x17\x0D\x31\x34\x31\x31\x32\x33\x31\x32\x35\x31\x35\x33\x5A\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x82\x01\x22\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00\x03\x82\x01\x0F\x00\x30\x82\x01\x0A\x02\x82\x01\x01\x00\xBC\x05\x3E\x4B\xBE\xC6\xB1\x33\x48\x0E\xC3\xD4\x0C\xEF\x83\x0B\xBD\xBC\x57\x5F\x14\xEF\xF5\x6D\x0B\xFF\xFA\x01\x9C\xFA\x21\x6D\x5C\xAE\x79\x29\x74\xFE\xBD\xAB\x70\x87\x98\x6B\x48\x35\x79\xE3\xE0\xC1\x14\x41\x1F\x0A\xF7\xE7\xA3\xA6\xDA\x6B\xFF\xCD\x74\xE9\x95\x00\x38\xAA\xD6\x3A\x60\xC6\x64\xA1\xE6\x02\x39\x58\x4E\xFD\xF2\x78\x08\x63\xB6\xD7\x7A\x96\x79\x62\x18\x39\xEE\x27\x8D\x3B\xA2\x3D\x48\x88\xDB\x43\xD6\x6A\x77\x20\x6A\x27\x39\x50\xE0\x02\x50\x19\xF2\x7A\xCF\x78\x23\x99\x01\xD4\xE5\xB1\xD1\x31\xE6\x6B\x84\xAF\xD0\x77\x41\x46\x85\xB0\x3B\xE6\x6A\x00\x0F\x3B\x7E\x95\x7F\x59\xA8\x22\xE8\x49\x49\x05\xC8\xCB\x6C\xEE\x47\xA7\x2D\xC9\x74\x5B\xEB\x8C\xD5\x99\xC2\xE2\x70\xDB\xEA\x87\x43\x84\x0E\x4F\x83\x1C\xA6\xEB\x1F\x22\x38\x17\x69\x9B\x72\x12\x95\x48\x71\xB2\x7B\x92\x73\x52\xAB\xE3\x1A\xA5\xD3\xF4\x44\x14\xBA\xC3\x35\xDA\x91\x6C\x7D\xB4\xC2\x00\x07\xD8\x0A\x51\xF1\x0D\x4C\xD9\x7A\xD1\x99\xE6\xA8\x8D\x0A\x80\xA8\x91\xDD\x8A\xA2\x6B\xF6\xDB\xB0\x3E\xC9\x71\xA9\xE0\x39\xC3\xA3\x58\x0D\x87\xD0\xB2\xA7\x9C\xB7\x69\x02\x03\x01\x00\x01\xA3\x82\x01\x1A\x30\x82\x01\x16\x30\x09\x06\x03\x55\x1D\x13\x04\x02\x30\x00\x30\x0B\x06\x03\x55\x1D\x0F\x04\x04\x03\x02\x03\xA8\x30\x1D\x06\x03\x55\x1D\x0E\x04\x16\x04\x14\x34\x91\x6E\x91\x32\xBF\x35\x25\x43\xCC\x28\x74\xEF\x82\xC2\x57\x92\x79\x13\x73\x30\x6D\x06\x03\x55\x1D\x23\x04\x66\x30\x64\x80\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\xA1\x49\xA4\x47\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x82\x01\x00\x30\x1E\x06\x03\x55\x1D\x11\x04\x17\x30\x15\x82\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x13\x06\x03\x55\x1D\x25\x04\x0C\x30\x0A\x06\x08\x2B\x06\x01\x05\x05\x07\x03\x09\x30\x39\x06\x03\x55\x1D\x1F\x04\x32\x30\x30\x30\x2E\xA0\x2C\xA0\x2A\x86\x28\x68\x74\x74\x70\x3A\x2F\x2F\x63\x72\x6C\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x2F\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x63\x72\x6C\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x03\x82\x01\x01\x00\x6D\x78\xD7\x66\x90\xA6\xEB\xDD\xB5\x09\x48\xA4\xDA\x27\xFA\xAC\xB1\xBC\x8F\x8C\xBE\xCC\x8C\x09\xA2\x40\x0D\x6C\x4A\xAE\x72\x22\x1E\xC8\xAF\x6D\xF1\x12\xAF\xD7\x40\x51\x79\xD4\xDD\xB2\x0C\xDB\x97\x84\xB6\x24\xD5\xF5\xA8\xBB\xC0\x4B\xF9\x7F\x71\xF7\xB0\x65\x42\x4A\x7D\xFE\x76\x7E\x05\xD2\x46\xB8\x7D\xB3\x39\x4C\x5C\xB1\xFA\xB9\xEE\x3B\x70\x33\x39\x57\x1A\xB9\x95\x51\x33\x00\x25\x1B\x4C\xAA\xB4\xA7\x55\xAF\x63\x6D\x6F\x88\x17\x6A\x7F\xB0\x97\xDE\x49\x14\x6A\x27\x6A\xB0\x42\x80\xD6\xA6\x9B\xEF\x04\x5E\x11\x7D\xD5\x8E\x54\x20\xA2\x76\xD4\x66\x58\xAC\x9C\x12\xD3\xF5\xCA\x54\x98\xCA\x21\xEC\xC1\x55\xA1\x2F\x68\x0B\x5D\x04\x50\xD2\x5E\x70\x25\xD8\x13\xD9\x44\x51\x0E\x8A\x42\x08\x18\x84\xE6\x61\xCE\x5A\x7D\x7B\x81\x35\x90\xC3\xD4\x9D\x19\xB6\x37\xEE\x8F\x63\x5C\xDA\xD8\xF0\x64\x60\x39\xEB\x9B\x1C\x54\x66\x75\x76\xB5\x0A\x58\xB9\x3F\x91\xE1\x21\x9C\xA0\x50\x15\x97\xB6\x7E\x41\xBC\xD0\xC4\x21\x4C\xF5\xD7\xF0\x13\xF8\x77\xE9\x74\xC4\x8A\x0E\x20\x17\x32\xAE\x38\xC2\xA5\xA8\x62\x85\x17\xB1\xA2\xD3\x22\x9F\x95\xB7\xA3\x4C" +#define RESP1 \ + "\x30\x82\x06\x8C\x0A\x01\x00\xA0\x82\x06\x85\x30\x82\x06\x81\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x06\x72\x30\x82\x06\x6E\x30\x82\x01\x07\xA1\x69\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\x30\x64\x30\x62\x30\x3A\x30\x09\x06\x05\x2B\x0E\x03\x02\x1A\x05\x00\x04\x14\x13\x9D\xA0\x9E\xF4\x32\xAB\x8F\xE2\x89\x56\x67\xFA\xD0\xD4\xE3\x35\x86\x71\xB9\x04\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\x02\x01\x1D\x80\x00\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\xA0\x11\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x39\x32\x38\x5A\xA1\x23\x30\x21\x30\x1F\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x02\x04\x12\x04\x10\x16\x89\x7D\x91\x3A\xB5\x25\xA4\x45\xFE\xC9\xFD\xC2\xE5\x08\xA4\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x4E\xAD\x6B\x2B\xF7\xF2\xBF\xA9\x23\x1E\x3A\x0B\x06\xDB\x55\x53\x2B\x64\x54\x11\x32\xBF\x60\xF7\x4F\xE0\x8E\x9B\xA0\xA2\x4C\x79\xC3\x2A\xE0\x43\xF7\x40\x1A\xDC\xB9\xB4\x25\xEF\x48\x01\x97\x8C\xF5\x1E\xDB\xD1\x30\x37\x73\x69\xD6\xA7\x7A\x2D\x8E\xDE\x5C\xAA\xEA\x39\xB9\x52\xAA\x25\x1E\x74\x7D\xF9\x78\x95\x8A\x92\x1F\x98\x21\xF4\x60\x7F\xD3\x28\xEE\x47\x9C\xBF\xE2\x5D\xF6\x3F\x68\x0A\xD6\xFF\x08\xC1\xDC\x95\x1E\x29\xD7\x3E\x85\xD5\x65\xA4\x4B\xC0\xAF\xC3\x78\xAB\x06\x98\x88\x19\x8A\x64\xA6\x83\x91\x87\x13\xDB\x17\xCC\x46\xBD\xAB\x4E\xC7\x16\xD1\xF8\x35\xFD\x27\xC8\xF6\x6B\xEB\x37\xB8\x08\x6F\xE2\x6F\xB4\x7E\xD5\x68\xDB\x7F\x5D\x5E\x36\x38\xF2\x77\x59\x13\xE7\x3E\x4D\x67\x5F\xDB\xA2\xF5\x5D\x7C\xBF\xBD\xB5\x37\x33\x51\x36\x63\xF8\x21\x1E\xFC\x73\x8F\x32\x69\xBB\x97\xA7\xBD\xF1\xB6\xE0\x40\x09\x68\xEA\xD5\x93\xB8\xBB\x39\x8D\xA8\x16\x1B\xBF\x04\x7A\xBC\x18\x43\x01\xE9\x3C\x19\x5C\x4D\x4B\x98\xD8\x23\x37\x39\xA4\xC4\xDD\xED\x9C\xEC\x37\xAB\x66\x44\x9B\xE7\x5B\x5D\x32\xA2\xDB\xA6\x0B\x3B\x8C\xE1\xF5\xDB\xCB\x7D\x58\xA0\x82\x04\x4B\x30\x82\x04\x47\x30\x82\x04\x43\x30\x82\x03\x2B\xA0\x03\x02\x01\x02\x02\x01\x1E\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x30\x1E\x17\x0D\x30\x39\x31\x31\x32\x34\x31\x32\x35\x31\x35\x33\x5A\x17\x0D\x31\x34\x31\x31\x32\x33\x31\x32\x35\x31\x35\x33\x5A\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x82\x01\x22\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00\x03\x82\x01\x0F\x00\x30\x82\x01\x0A\x02\x82\x01\x01\x00\xBC\x05\x3E\x4B\xBE\xC6\xB1\x33\x48\x0E\xC3\xD4\x0C\xEF\x83\x0B\xBD\xBC\x57\x5F\x14\xEF\xF5\x6D\x0B\xFF\xFA\x01\x9C\xFA\x21\x6D\x5C\xAE\x79\x29\x74\xFE\xBD\xAB\x70\x87\x98\x6B\x48\x35\x79\xE3\xE0\xC1\x14\x41\x1F\x0A\xF7\xE7\xA3\xA6\xDA\x6B\xFF\xCD\x74\xE9\x95\x00\x38\xAA\xD6\x3A\x60\xC6\x64\xA1\xE6\x02\x39\x58\x4E\xFD\xF2\x78\x08\x63\xB6\xD7\x7A\x96\x79\x62\x18\x39\xEE\x27\x8D\x3B\xA2\x3D\x48\x88\xDB\x43\xD6\x6A\x77\x20\x6A\x27\x39\x50\xE0\x02\x50\x19\xF2\x7A\xCF\x78\x23\x99\x01\xD4\xE5\xB1\xD1\x31\xE6\x6B\x84\xAF\xD0\x77\x41\x46\x85\xB0\x3B\xE6\x6A\x00\x0F\x3B\x7E\x95\x7F\x59\xA8\x22\xE8\x49\x49\x05\xC8\xCB\x6C\xEE\x47\xA7\x2D\xC9\x74\x5B\xEB\x8C\xD5\x99\xC2\xE2\x70\xDB\xEA\x87\x43\x84\x0E\x4F\x83\x1C\xA6\xEB\x1F\x22\x38\x17\x69\x9B\x72\x12\x95\x48\x71\xB2\x7B\x92\x73\x52\xAB\xE3\x1A\xA5\xD3\xF4\x44\x14\xBA\xC3\x35\xDA\x91\x6C\x7D\xB4\xC2\x00\x07\xD8\x0A\x51\xF1\x0D\x4C\xD9\x7A\xD1\x99\xE6\xA8\x8D\x0A\x80\xA8\x91\xDD\x8A\xA2\x6B\xF6\xDB\xB0\x3E\xC9\x71\xA9\xE0\x39\xC3\xA3\x58\x0D\x87\xD0\xB2\xA7\x9C\xB7\x69\x02\x03\x01\x00\x01\xA3\x82\x01\x1A\x30\x82\x01\x16\x30\x09\x06\x03\x55\x1D\x13\x04\x02\x30\x00\x30\x0B\x06\x03\x55\x1D\x0F\x04\x04\x03\x02\x03\xA8\x30\x1D\x06\x03\x55\x1D\x0E\x04\x16\x04\x14\x34\x91\x6E\x91\x32\xBF\x35\x25\x43\xCC\x28\x74\xEF\x82\xC2\x57\x92\x79\x13\x73\x30\x6D\x06\x03\x55\x1D\x23\x04\x66\x30\x64\x80\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\xA1\x49\xA4\x47\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x82\x01\x00\x30\x1E\x06\x03\x55\x1D\x11\x04\x17\x30\x15\x82\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x13\x06\x03\x55\x1D\x25\x04\x0C\x30\x0A\x06\x08\x2B\x06\x01\x05\x05\x07\x03\x09\x30\x39\x06\x03\x55\x1D\x1F\x04\x32\x30\x30\x30\x2E\xA0\x2C\xA0\x2A\x86\x28\x68\x74\x74\x70\x3A\x2F\x2F\x63\x72\x6C\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x2F\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x63\x72\x6C\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x03\x82\x01\x01\x00\x6D\x78\xD7\x66\x90\xA6\xEB\xDD\xB5\x09\x48\xA4\xDA\x27\xFA\xAC\xB1\xBC\x8F\x8C\xBE\xCC\x8C\x09\xA2\x40\x0D\x6C\x4A\xAE\x72\x22\x1E\xC8\xAF\x6D\xF1\x12\xAF\xD7\x40\x51\x79\xD4\xDD\xB2\x0C\xDB\x97\x84\xB6\x24\xD5\xF5\xA8\xBB\xC0\x4B\xF9\x7F\x71\xF7\xB0\x65\x42\x4A\x7D\xFE\x76\x7E\x05\xD2\x46\xB8\x7D\xB3\x39\x4C\x5C\xB1\xFA\xB9\xEE\x3B\x70\x33\x39\x57\x1A\xB9\x95\x51\x33\x00\x25\x1B\x4C\xAA\xB4\xA7\x55\xAF\x63\x6D\x6F\x88\x17\x6A\x7F\xB0\x97\xDE\x49\x14\x6A\x27\x6A\xB0\x42\x80\xD6\xA6\x9B\xEF\x04\x5E\x11\x7D\xD5\x8E\x54\x20\xA2\x76\xD4\x66\x58\xAC\x9C\x12\xD3\xF5\xCA\x54\x98\xCA\x21\xEC\xC1\x55\xA1\x2F\x68\x0B\x5D\x04\x50\xD2\x5E\x70\x25\xD8\x13\xD9\x44\x51\x0E\x8A\x42\x08\x18\x84\xE6\x61\xCE\x5A\x7D\x7B\x81\x35\x90\xC3\xD4\x9D\x19\xB6\x37\xEE\x8F\x63\x5C\xDA\xD8\xF0\x64\x60\x39\xEB\x9B\x1C\x54\x66\x75\x76\xB5\x0A\x58\xB9\x3F\x91\xE1\x21\x9C\xA0\x50\x15\x97\xB6\x7E\x41\xBC\xD0\xC4\x21\x4C\xF5\xD7\xF0\x13\xF8\x77\xE9\x74\xC4\x8A\x0E\x20\x17\x32\xAE\x38\xC2\xA5\xA8\x62\x85\x17\xB1\xA2\xD3\x22\x9F\x95\xB7\xA3\x4C" -static gnutls_datum_t ocsp_resp1 = - { (unsigned char *)RESP1, sizeof(RESP1) - 1 }; +static gnutls_datum_t ocsp_resp1 = { (unsigned char *)RESP1, + sizeof(RESP1) - 1 }; -# define RESP2 "\x30\x82\x06\x8C\x0A\x01\x00\xA0\x82\x06\x85\x30\x82\x06\x81\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x06\x72\x30\x82\x06\x6E\x30\x82\x01\x07\xA1\x69\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\x30\x64\x30\x62\x30\x3A\x30\x09\x06\x05\x2B\x0E\x03\x02\x1A\x05\x00\x04\x14\x13\x9D\xA0\x9E\xF4\x32\xAB\x8F\xE2\x89\x56\x67\xFA\xD0\xD4\xE3\x35\x86\x71\xB9\x04\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\x02\x01\x1D\x80\x00\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\xA0\x11\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x39\x32\x38\x5A\xA1\x23\x30\x21\x30\x1F\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x02\x04\x12\x04\x10\x16\x89\x7D\x91\x3A\xB5\x25\xA4\x45\xFE\xC9\xFD\xC2\xE5\x08\xA4\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x4E\xAD\x6B\x2B\xF7\xF2\xBF\xA9\x23\x1E\x3A\x0B\x06\xDB\x55\x53\x2B\x64\x54\x11\x32\xBF\x60\xF7\x4F\xE0\x8E\x9B\xA0\xA2\x4C\x79\xC3\x2A\xE0\x43\xF7\x40\x1A\xDC\xB9\xB4\x25\xEF\x48\x01\x97\x8C\xF5\x1E\xDB\xD1\x30\x37\x73\x69\xD6\xA7\x7A\x2D\x8E\xDE\x5C\xAA\xEA\x39\xB9\x52\xAA\x25\x1E\x74\x7D\xF9\x78\x95\x8A\x92\x1F\x98\x21\xF4\x60\x7F\xD3\x28\xEE\x47\x9C\xBF\xE2\x5D\xF6\x3F\x68\x0A\xD6\xFF\x08\xC1\xDC\x95\x1E\x29\xD7\x3E\x85\xD5\x65\xA4\x4B\xC0\xAF\xC3\x78\xAB\x06\x98\x88\x19\x8A\x64\xA6\x83\x91\x87\x13\xDB\x17\xCC\x46\xBD\xAB\x4E\xC7\x16\xD1\xF8\x35\xFD\x27\xC8\xF6\x6B\xEB\x37\xB8\x08\x6F\xE2\x6F\xB4\x7E\xD5\x68\xDB\x7F\x5D\x5E\x36\x38\xF2\x77\x59\x13\xE7\x3E\x4D\x67\x5F\xDB\xA2\xF5\x5D\x7C\xBF\xBD\xB5\x37\x33\x51\x36\x63\xF8\x21\x1E\xFC\x73\x8F\x32\x69\xBB\x97\xA7\xBD\xF1\xB6\xE0\x40\x09\x68\xEA\xD5\x93\xB8\xBB\x39\x8D\xA8\x16\x1B\xBF\x04\x7A\xBC\x18\x43\x01\xE9\x3C\x19\x5C\x4D\x4B\x98\xD8\x23\x37\x39\xA4\xC4\xDD\xED\x9C\xEC\x37\xAB\x66\x44\x9B\xE7\x5B\x5D\x32\xA2\xDB\xA6\x0B\x3B\x8C\xE1\xF5\xDB\xCB\x7D\x58\xA0\x82\x04\x4B\x30\x82\x04\x47\x30\x82\x04\x43\x30\x82\x03\x2B\xA0\x03\x02\x01\x02\x02\x01\x1E\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x30\x1E\x17\x0D\x30\x39\x31\x31\x32\x34\x31\x32\x35\x31\x35\x33\x5A\x17\x0D\x31\x34\x31\x31\x32\x33\x31\x32\x35\x31\x35\x33\x5A\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x82\x01\x22\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00\x03\x82\x01\x0F\x00\x30\x82\x01\x0A\x02\x82\x01\x01\x00\xBC\x05\x3E\x4B\xBE\xC6\xB1\x33\x48\x0E\xC3\xD4\x0C\xEF\x83\x0B\xBD\xBC\x57\x5F\x14\xEF\xF5\x6D\x0B\xFF\xFA\x01\x9C\xFA\x21\x6D\x5C\xAE\x79\x29\x74\xFE\xBD\xAB\x70\x87\x98\x6B\x48\x35\x79\xE3\xE0\xC1\x14\x41\x1F\x0A\xF7\xE7\xA3\xA6\xDA\x6B\xFF\xCD\x74\xE9\x95\x00\x38\xAA\xD6\x3A\x60\xC6\x64\xA1\xE6\x02\x39\x58\x4E\xFD\xF2\x78\x08\x63\xB6\xD7\x7A\x96\x79\x62\x18\x39\xEE\x27\x8D\x3B\xA2\x3D\x48\x88\xDB\x43\xD6\x6A\x77\x20\x6A\x27\x39\x50\xE0\x02\x50\x19\xF2\x7A\xCF\x78\x23\x99\x01\xD4\xE5\xB1\xD1\x31\xE6\x6B\x84\xAF\xD0\x77\x41\x46\x85\xB0\x3B\xE6\x6A\x00\x0F\x3B\x7E\x95\x7F\x59\xA8\x22\xE8\x49\x49\x05\xC8\xCB\x6C\xEE\x47\xA7\x2D\xC9\x74\x5B\xEB\x8C\xD5\x99\xC2\xE2\x70\xDB\xEA\x87\x43\x84\x0E\x4F\x83\x1C\xA6\xEB\x1F\x22\x38\x17\x69\x9B\x72\x12\x95\x48\x71\xB2\x7B\x92\x73\x52\xAB\xE3\x1A\xA5\xD3\xF4\x44\x14\xBA\xC3\x35\xDA\x91\x6C\x7D\xB4\xC2\x00\x07\xD8\x0A\x51\xF1\x0D\x4C\xD9\x7A\xD1\x99\xE6\xA8\x8D\x0A\x80\xA8\x91\xDD\x8A\xA2\x6B\xF6\xDB\xB0\x3E\xC9\x71\xA9\xE0\x39\xC3\xA3\x58\x0D\x87\xD0\xB2\xA7\x9C\xB7\x69\x02\x03\x01\x00\x01\xA3\x82\x01\x1A\x30\x82\x01\x16\x30\x09\x06\x03\x55\x1D\x13\x04\x02\x30\x00\x30\x0B\x06\x03\x55\x1D\x0F\x04\x04\x03\x02\x03\xA8\x30\x1D\x06\x03\x55\x1D\x0E\x04\x16\x04\x14\x34\x91\x6E\x91\x32\xBF\x35\x25\x43\xCC\x28\x74\xEF\x82\xC2\x57\x92\x79\x13\x73\x30\x6D\x06\x03\x55\x1D\x23\x04\x66\x30\x64\x80\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\xA1\x49\xA4\x47\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x82\x01\x00\x30\x1E\x06\x03\x55\x1D\x11\x04\x17\x30\x15\x82\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x13\x06\x03\x55\x1D\x25\x04\x0C\x30\x0A\x06\x08\x2B\x06\x01\x05\x05\x07\x03\x09\x30\x39\x06\x03\x55\x1D\x1F\x04\x32\x30\x30\x30\x2E\xA0\x2C\xA0\x2A\x86\x28\x68\x74\x74\x70\x3A\x2F\x2F\x63\x72\x6C\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x2F\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x63\x72\x6C\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x03\x82\x01\x01\x00\x6D\x78\xD7\x66\x90\xA6\xEB\xDD\xB5\x09\x48\xA4\xDA\x27\xFA\xAC\xB1\xBC\x8F\x8C\xBE\xCC\x8C\x09\xA2\x40\x0D\x6C\x4A\xAE\x72\x22\x1E\xC8\xAF\x6D\xF1\x12\xAF\xD7\x40\x51\x79\xD4\xDD\xB2\x0C\xDB\x97\x84\xB6\x24\xD5\xF5\xA8\xBB\xC0\x4B\xF9\x7F\x71\xF7\xB0\x65\x42\x4A\x7D\xFE\x76\x7E\x05\xD2\x46\xB8\x7D\xB3\x39\x4C\x5C\xB1\xFA\xB9\xEE\x3B\x70\x33\x39\x57\x1A\xB9\x95\x51\x33\x00\x25\x1B\x4C\xAA\xB4\xA7\x55\xAF\x63\x6D\x6F\x88\x17\x6A\x7F\xB0\x97\xDE\x49\x14\x6A\x27\x6A\xB0\x42\x80\xD6\xA6\x9B\xEF\x04\x5E\x11\x7D\xD5\x8E\x54\x20\xA2\x76\xD4\x66\x58\xAC\x9C\x12\xD3\xF5\xCA\x54\x98\xCA\x21\xEC\xC1\x55\xA1\x2F\x68\x0B\x5D\x04\x50\xD2\x5E\x70\x25\xD8\x13\xD9\x44\x51\x0E\x8A\x42\x08\x18\x84\xE6\x61\xCE\x5A\x7D\x7B\x81\x35\x90\xC3\xD4\x9D\x19\xB6\x37\xEE\x8F\x63\x5C\xDA\xD8\xF0\x64\x60\x39\xEB\x9B\x1C\x54\x66\x75\x76\xB5\x0A\x58\xB9\x3F\x91\xE1\x21\x9C\xA0\x50\x15\x97\xB6\x7E\x41\xBC\xD0\xC4\x21\x4C\xF5\xD7\xF0\x13\xF8\x77\xE9\x74\xC4\x8A\x0E\x20\x17\x32\xAE\x38\xC2\xA5\xA8\x62\x85\x17\xB1\xA2\xD3\x22\x9F\x95\xB7\xA3\x4C" +#define RESP2 \ + "\x30\x82\x06\x8C\x0A\x01\x00\xA0\x82\x06\x85\x30\x82\x06\x81\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x06\x72\x30\x82\x06\x6E\x30\x82\x01\x07\xA1\x69\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\x30\x64\x30\x62\x30\x3A\x30\x09\x06\x05\x2B\x0E\x03\x02\x1A\x05\x00\x04\x14\x13\x9D\xA0\x9E\xF4\x32\xAB\x8F\xE2\x89\x56\x67\xFA\xD0\xD4\xE3\x35\x86\x71\xB9\x04\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\x02\x01\x1D\x80\x00\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\xA0\x11\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x39\x32\x38\x5A\xA1\x23\x30\x21\x30\x1F\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x02\x04\x12\x04\x10\x16\x89\x7D\x91\x3A\xB5\x25\xA4\x45\xFE\xC9\xFD\xC2\xE5\x08\xA4\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x4E\xAD\x6B\x2B\xF7\xF2\xBF\xA9\x23\x1E\x3A\x0B\x06\xDB\x55\x53\x2B\x64\x54\x11\x32\xBF\x60\xF7\x4F\xE0\x8E\x9B\xA0\xA2\x4C\x79\xC3\x2A\xE0\x43\xF7\x40\x1A\xDC\xB9\xB4\x25\xEF\x48\x01\x97\x8C\xF5\x1E\xDB\xD1\x30\x37\x73\x69\xD6\xA7\x7A\x2D\x8E\xDE\x5C\xAA\xEA\x39\xB9\x52\xAA\x25\x1E\x74\x7D\xF9\x78\x95\x8A\x92\x1F\x98\x21\xF4\x60\x7F\xD3\x28\xEE\x47\x9C\xBF\xE2\x5D\xF6\x3F\x68\x0A\xD6\xFF\x08\xC1\xDC\x95\x1E\x29\xD7\x3E\x85\xD5\x65\xA4\x4B\xC0\xAF\xC3\x78\xAB\x06\x98\x88\x19\x8A\x64\xA6\x83\x91\x87\x13\xDB\x17\xCC\x46\xBD\xAB\x4E\xC7\x16\xD1\xF8\x35\xFD\x27\xC8\xF6\x6B\xEB\x37\xB8\x08\x6F\xE2\x6F\xB4\x7E\xD5\x68\xDB\x7F\x5D\x5E\x36\x38\xF2\x77\x59\x13\xE7\x3E\x4D\x67\x5F\xDB\xA2\xF5\x5D\x7C\xBF\xBD\xB5\x37\x33\x51\x36\x63\xF8\x21\x1E\xFC\x73\x8F\x32\x69\xBB\x97\xA7\xBD\xF1\xB6\xE0\x40\x09\x68\xEA\xD5\x93\xB8\xBB\x39\x8D\xA8\x16\x1B\xBF\x04\x7A\xBC\x18\x43\x01\xE9\x3C\x19\x5C\x4D\x4B\x98\xD8\x23\x37\x39\xA4\xC4\xDD\xED\x9C\xEC\x37\xAB\x66\x44\x9B\xE7\x5B\x5D\x32\xA2\xDB\xA6\x0B\x3B\x8C\xE1\xF5\xDB\xCB\x7D\x58\xA0\x82\x04\x4B\x30\x82\x04\x47\x30\x82\x04\x43\x30\x82\x03\x2B\xA0\x03\x02\x01\x02\x02\x01\x1E\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x30\x1E\x17\x0D\x30\x39\x31\x31\x32\x34\x31\x32\x35\x31\x35\x33\x5A\x17\x0D\x31\x34\x31\x31\x32\x33\x31\x32\x35\x31\x35\x33\x5A\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x82\x01\x22\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00\x03\x82\x01\x0F\x00\x30\x82\x01\x0A\x02\x82\x01\x01\x00\xBC\x05\x3E\x4B\xBE\xC6\xB1\x33\x48\x0E\xC3\xD4\x0C\xEF\x83\x0B\xBD\xBC\x57\x5F\x14\xEF\xF5\x6D\x0B\xFF\xFA\x01\x9C\xFA\x21\x6D\x5C\xAE\x79\x29\x74\xFE\xBD\xAB\x70\x87\x98\x6B\x48\x35\x79\xE3\xE0\xC1\x14\x41\x1F\x0A\xF7\xE7\xA3\xA6\xDA\x6B\xFF\xCD\x74\xE9\x95\x00\x38\xAA\xD6\x3A\x60\xC6\x64\xA1\xE6\x02\x39\x58\x4E\xFD\xF2\x78\x08\x63\xB6\xD7\x7A\x96\x79\x62\x18\x39\xEE\x27\x8D\x3B\xA2\x3D\x48\x88\xDB\x43\xD6\x6A\x77\x20\x6A\x27\x39\x50\xE0\x02\x50\x19\xF2\x7A\xCF\x78\x23\x99\x01\xD4\xE5\xB1\xD1\x31\xE6\x6B\x84\xAF\xD0\x77\x41\x46\x85\xB0\x3B\xE6\x6A\x00\x0F\x3B\x7E\x95\x7F\x59\xA8\x22\xE8\x49\x49\x05\xC8\xCB\x6C\xEE\x47\xA7\x2D\xC9\x74\x5B\xEB\x8C\xD5\x99\xC2\xE2\x70\xDB\xEA\x87\x43\x84\x0E\x4F\x83\x1C\xA6\xEB\x1F\x22\x38\x17\x69\x9B\x72\x12\x95\x48\x71\xB2\x7B\x92\x73\x52\xAB\xE3\x1A\xA5\xD3\xF4\x44\x14\xBA\xC3\x35\xDA\x91\x6C\x7D\xB4\xC2\x00\x07\xD8\x0A\x51\xF1\x0D\x4C\xD9\x7A\xD1\x99\xE6\xA8\x8D\x0A\x80\xA8\x91\xDD\x8A\xA2\x6B\xF6\xDB\xB0\x3E\xC9\x71\xA9\xE0\x39\xC3\xA3\x58\x0D\x87\xD0\xB2\xA7\x9C\xB7\x69\x02\x03\x01\x00\x01\xA3\x82\x01\x1A\x30\x82\x01\x16\x30\x09\x06\x03\x55\x1D\x13\x04\x02\x30\x00\x30\x0B\x06\x03\x55\x1D\x0F\x04\x04\x03\x02\x03\xA8\x30\x1D\x06\x03\x55\x1D\x0E\x04\x16\x04\x14\x34\x91\x6E\x91\x32\xBF\x35\x25\x43\xCC\x28\x74\xEF\x82\xC2\x57\x92\x79\x13\x73\x30\x6D\x06\x03\x55\x1D\x23\x04\x66\x30\x64\x80\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\xA1\x49\xA4\x47\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x82\x01\x00\x30\x1E\x06\x03\x55\x1D\x11\x04\x17\x30\x15\x82\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x13\x06\x03\x55\x1D\x25\x04\x0C\x30\x0A\x06\x08\x2B\x06\x01\x05\x05\x07\x03\x09\x30\x39\x06\x03\x55\x1D\x1F\x04\x32\x30\x30\x30\x2E\xA0\x2C\xA0\x2A\x86\x28\x68\x74\x74\x70\x3A\x2F\x2F\x63\x72\x6C\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x2F\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x63\x72\x6C\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x03\x82\x01\x01\x00\x6D\x78\xD7\x66\x90\xA6\xEB\xDD\xB5\x09\x48\xA4\xDA\x27\xFA\xAC\xB1\xBC\x8F\x8C\xBE\xCC\x8C\x09\xA2\x40\x0D\x6C\x4A\xAE\x72\x22\x1E\xC8\xAF\x6D\xF1\x12\xAF\xD7\x40\x51\x79\xD4\xDD\xB2\x0C\xDB\x97\x84\xB6\x24\xD5\xF5\xA8\xBB\xC0\x4B\xF9\x7F\x71\xF7\xB0\x65\x42\x4A\x7D\xFE\x76\x7E\x05\xD2\x46\xB8\x7D\xB3\x39\x4C\x5C\xB1\xFA\xB9\xEE\x3B\x70\x33\x39\x57\x1A\xB9\x95\x51\x33\x00\x25\x1B\x4C\xAA\xB4\xA7\x55\xAF\x63\x6D\x6F\x88\x17\x6A\x7F\xB0\x97\xDE\x49\x14\x6A\x27\x6A\xB0\x42\x80\xD6\xA6\x9B\xEF\x04\x5E\x11\x7D\xD5\x8E\x54\x20\xA2\x76\xD4\x66\x58\xAC\x9C\x12\xD3\xF5\xCA\x54\x98\xCA\x21\xEC\xC1\x55\xA1\x2F\x68\x0B\x5D\x04\x50\xD2\x5E\x70\x25\xD8\x13\xD9\x44\x51\x0E\x8A\x42\x08\x18\x84\xE6\x61\xCE\x5A\x7D\x7B\x81\x35\x90\xC3\xD4\x9D\x19\xB6\x37\xEE\x8F\x63\x5C\xDA\xD8\xF0\x64\x60\x39\xEB\x9B\x1C\x54\x66\x75\x76\xB5\x0A\x58\xB9\x3F\x91\xE1\x21\x9C\xA0\x50\x15\x97\xB6\x7E\x41\xBC\xD0\xC4\x21\x4C\xF5\xD7\xF0\x13\xF8\x77\xE9\x74\xC4\x8A\x0E\x20\x17\x32\xAE\x38\xC2\xA5\xA8\x62\x85\x17\xB1\xA2\xD3\x22\x9F\x95\xB7\xA3\x4C" -static gnutls_datum_t ocsp_resp2 = - { (unsigned char *)RESP2, sizeof(RESP2) - 1 }; +static gnutls_datum_t ocsp_resp2 = { (unsigned char *)RESP2, + sizeof(RESP2) - 1 }; -# define RESP3 "\x30\x82\x01\xd3\x0a\x01\x00\xa0\x82\x01\xcc\x30\x82\x01\xc8\x06\x09\x2b\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x01\xb9\x30\x82\x01\xb5\x30\x81\x9e\xa2\x16\x04\x14\x50\xea\x73\x89\xdb\x29\xfb\x10\x8f\x9e\xe5\x01\x20\xd4\xde\x79\x99\x48\x83\xf7\x18\x0f\x32\x30\x31\x34\x30\x39\x30\x34\x30\x35\x34\x39\x30\x30\x5a\x30\x73\x30\x71\x30\x49\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04\x14\xed\x48\xad\xdd\xcb\x7b\x00\xe2\x0e\x84\x2a\xa9\xb4\x09\xf1\xac\x30\x34\xcf\x96\x04\x14\x50\xea\x73\x89\xdb\x29\xfb\x10\x8f\x9e\xe5\x01\x20\xd4\xde\x79\x99\x48\x83\xf7\x02\x10\x02\x01\x48\x91\x5d\xfd\x5e\xb6\xe0\x02\x90\xa9\x67\xb0\xe4\x64\x80\x00\x18\x0f\x32\x30\x31\x34\x30\x39\x30\x34\x30\x35\x34\x39\x30\x30\x5a\xa0\x11\x18\x0f\x32\x30\x31\x34\x30\x39\x31\x31\x30\x36\x30\x34\x30\x30\x5a\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x6e\x5e\x5e\x81\xff\x3f\x4d\xc7\x53\xc7\x1b\xf3\xd3\x1d\xdc\x9a\xc7\xce\x77\x2c\x67\x56\x13\x98\x91\x02\x01\x76\xdc\x48\xb2\x1f\x9b\x17\xea\xbf\x2c\x0a\xf5\x1d\x98\x90\x3c\x5f\x55\xc2\xff\x4b\x9a\xbc\xa6\x83\x9e\xab\x2b\xeb\x9d\x01\xea\x3b\x5f\xbe\x03\x29\x70\x63\x2a\xa4\x1d\xa8\xab\x69\xb2\x64\xba\x5d\x73\x91\x5c\x92\xf3\x69\xd4\xc9\x39\x9c\x7c\x7d\xa2\x47\x92\xc2\x56\xfe\xa1\x0d\x4a\x69\xff\xda\x48\xc5\x5e\xd8\xab\x39\x88\x6a\x06\xfa\x07\x57\xd6\x48\xb5\xce\xc9\x5f\xa5\x96\xfe\x37\x18\x5e\x7f\x35\x51\xc1\x9e\x79\x5a\x26\xba\x67\x67\x38\x2a\x80\x75\x42\x99\x68\x3e\xec\x2f\x7e\x2d\xa1\xa6\xbe\x9f\x01\x51\x22\x88\x3a\xc9\x9c\xed\x51\xef\x21\x66\x7e\xa9\xd0\x3f\x13\x9c\xbb\xd2\x94\x14\x6f\x4b\xd9\xc4\xf5\x2c\xf5\x7d\x07\x68\xf3\x51\xac\xda\xc2\x09\x66\xa9\x3d\xed\xad\x02\x4d\x9c\x11\x29\x1a\x54\xfb\x1e\x7e\x36\xf4\xbb\x0d\x08\x8c\x6a\x42\x08\x10\x29\x08\x7c\x56\x0b\x18\x47\xff\x87\x11\xfd\xb2\xfb\xc9\x22\x7f\xe3\x1f\x7b\xf9\x98\xaa\x3a\x32\xb6\x2f\x02\xba\xb6\xc1\xdc\xc3\x5d\xb5\x4b\xae\x5d\x29\x6a\x31\xde\xcd" -static gnutls_datum_t ocsp_resp3 = - { (unsigned char *)RESP3, sizeof(RESP3) - 1 }; +#define RESP3 \ + "\x30\x82\x01\xd3\x0a\x01\x00\xa0\x82\x01\xcc\x30\x82\x01\xc8\x06\x09\x2b\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x01\xb9\x30\x82\x01\xb5\x30\x81\x9e\xa2\x16\x04\x14\x50\xea\x73\x89\xdb\x29\xfb\x10\x8f\x9e\xe5\x01\x20\xd4\xde\x79\x99\x48\x83\xf7\x18\x0f\x32\x30\x31\x34\x30\x39\x30\x34\x30\x35\x34\x39\x30\x30\x5a\x30\x73\x30\x71\x30\x49\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04\x14\xed\x48\xad\xdd\xcb\x7b\x00\xe2\x0e\x84\x2a\xa9\xb4\x09\xf1\xac\x30\x34\xcf\x96\x04\x14\x50\xea\x73\x89\xdb\x29\xfb\x10\x8f\x9e\xe5\x01\x20\xd4\xde\x79\x99\x48\x83\xf7\x02\x10\x02\x01\x48\x91\x5d\xfd\x5e\xb6\xe0\x02\x90\xa9\x67\xb0\xe4\x64\x80\x00\x18\x0f\x32\x30\x31\x34\x30\x39\x30\x34\x30\x35\x34\x39\x30\x30\x5a\xa0\x11\x18\x0f\x32\x30\x31\x34\x30\x39\x31\x31\x30\x36\x30\x34\x30\x30\x5a\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x6e\x5e\x5e\x81\xff\x3f\x4d\xc7\x53\xc7\x1b\xf3\xd3\x1d\xdc\x9a\xc7\xce\x77\x2c\x67\x56\x13\x98\x91\x02\x01\x76\xdc\x48\xb2\x1f\x9b\x17\xea\xbf\x2c\x0a\xf5\x1d\x98\x90\x3c\x5f\x55\xc2\xff\x4b\x9a\xbc\xa6\x83\x9e\xab\x2b\xeb\x9d\x01\xea\x3b\x5f\xbe\x03\x29\x70\x63\x2a\xa4\x1d\xa8\xab\x69\xb2\x64\xba\x5d\x73\x91\x5c\x92\xf3\x69\xd4\xc9\x39\x9c\x7c\x7d\xa2\x47\x92\xc2\x56\xfe\xa1\x0d\x4a\x69\xff\xda\x48\xc5\x5e\xd8\xab\x39\x88\x6a\x06\xfa\x07\x57\xd6\x48\xb5\xce\xc9\x5f\xa5\x96\xfe\x37\x18\x5e\x7f\x35\x51\xc1\x9e\x79\x5a\x26\xba\x67\x67\x38\x2a\x80\x75\x42\x99\x68\x3e\xec\x2f\x7e\x2d\xa1\xa6\xbe\x9f\x01\x51\x22\x88\x3a\xc9\x9c\xed\x51\xef\x21\x66\x7e\xa9\xd0\x3f\x13\x9c\xbb\xd2\x94\x14\x6f\x4b\xd9\xc4\xf5\x2c\xf5\x7d\x07\x68\xf3\x51\xac\xda\xc2\x09\x66\xa9\x3d\xed\xad\x02\x4d\x9c\x11\x29\x1a\x54\xfb\x1e\x7e\x36\xf4\xbb\x0d\x08\x8c\x6a\x42\x08\x10\x29\x08\x7c\x56\x0b\x18\x47\xff\x87\x11\xfd\xb2\xfb\xc9\x22\x7f\xe3\x1f\x7b\xf9\x98\xaa\x3a\x32\xb6\x2f\x02\xba\xb6\xc1\xdc\xc3\x5d\xb5\x4b\xae\x5d\x29\x6a\x31\xde\xcd" +static gnutls_datum_t ocsp_resp3 = { (unsigned char *)RESP3, + sizeof(RESP3) - 1 }; static void check_response(gnutls_session_t session, void *priv) { @@ -79,14 +82,14 @@ static void check_response(gnutls_session_t session, void *priv) fail("not expected response, but received one\n"); } - if (resp.size != exp_resp->size - || memcmp(resp.data, exp_resp->data, resp.size) != 0) { + if (resp.size != exp_resp->size || + memcmp(resp.data, exp_resp->data, resp.size) != 0) { fail("did not receive the expected response\n"); } } static int ocsp_func(gnutls_session_t session, void *ptr, - gnutls_datum_t * ocsp_response) + gnutls_datum_t *ocsp_response) { gnutls_datum_t *c = ptr; ocsp_response->data = gnutls_malloc(c->size); @@ -115,7 +118,7 @@ void doit(void) char certname2[TMPNAME_SIZE]; char certname3[TMPNAME_SIZE]; FILE *fp; - unsigned index1, index2, index3; /* indexes of certs */ + unsigned index1, index2, index3; /* indexes of certs */ global_init(); gnutls_global_set_time_function(mytime); @@ -135,17 +138,14 @@ void doit(void) fp = fopen(certfile1, "wb"); if (fp == NULL) fail("error in fopen\n"); - assert(fwrite - (server_localhost_ca3_cert_chain_pem, 1, - strlen(server_localhost_ca3_cert_chain_pem), fp) > 0); - assert(fwrite - (server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), - fp) > 0); + assert(fwrite(server_localhost_ca3_cert_chain_pem, 1, + strlen(server_localhost_ca3_cert_chain_pem), fp) > 0); + assert(fwrite(server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), + fp) > 0); fclose(fp); - ret = gnutls_certificate_set_x509_key_file2(xcred, certfile1, certfile1, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_certificate_set_x509_key_file2( + xcred, certfile1, certfile1, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) fail("set_x509_key_file failed: %s\n", gnutls_strerror(ret)); index1 = ret; @@ -156,17 +156,14 @@ void doit(void) fp = fopen(certfile2, "wb"); if (fp == NULL) fail("error in fopen\n"); - assert(fwrite - (server_localhost6_ca3_cert_chain_pem, 1, - strlen(server_localhost6_ca3_cert_chain_pem), fp) > 0); - assert(fwrite - (server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), - fp) > 0); + assert(fwrite(server_localhost6_ca3_cert_chain_pem, 1, + strlen(server_localhost6_ca3_cert_chain_pem), fp) > 0); + assert(fwrite(server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), + fp) > 0); fclose(fp); - ret = gnutls_certificate_set_x509_key_file2(xcred, certfile2, certfile2, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_certificate_set_x509_key_file2( + xcred, certfile2, certfile2, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) fail("set_x509_key_file failed: %s\n", gnutls_strerror(ret)); index2 = ret; @@ -174,12 +171,10 @@ void doit(void) fp = fopen(certfile2, "wb"); if (fp == NULL) fail("error in fopen\n"); - assert(fwrite - (server_localhost6_ca3_cert_chain_pem, 1, - strlen(server_localhost6_ca3_cert_chain_pem), fp) > 0); - assert(fwrite - (server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), - fp) > 0); + assert(fwrite(server_localhost6_ca3_cert_chain_pem, 1, + strlen(server_localhost6_ca3_cert_chain_pem), fp) > 0); + assert(fwrite(server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), + fp) > 0); fclose(fp); /* set ECC cert */ @@ -192,9 +187,8 @@ void doit(void) assert(fwrite(ecc_key, 1, strlen(ecc_key), fp) > 0); fclose(fp); - ret = gnutls_certificate_set_x509_key_file2(xcred, certfile3, certfile3, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_certificate_set_x509_key_file2( + xcred, certfile3, certfile3, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) fail("set_x509_key_file failed: %s\n", gnutls_strerror(ret)); index3 = ret; @@ -202,42 +196,34 @@ void doit(void) fp = fopen(certfile3, "wb"); if (fp == NULL) fail("error in fopen\n"); - assert(fwrite - (server_localhost6_ca3_cert_chain_pem, 1, - strlen(server_localhost6_ca3_cert_chain_pem), fp) > 0); - assert(fwrite - (server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), - fp) > 0); + assert(fwrite(server_localhost6_ca3_cert_chain_pem, 1, + strlen(server_localhost6_ca3_cert_chain_pem), fp) > 0); + assert(fwrite(server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), + fp) > 0); fclose(fp); /* set OCSP response1 */ - ret = - gnutls_certificate_set_ocsp_status_request_function2(xcred, index1, - ocsp_func, - &ocsp_resp1); + ret = gnutls_certificate_set_ocsp_status_request_function2( + xcred, index1, ocsp_func, &ocsp_resp1); if (ret < 0) fail("ocsp file set failed: %s\n", gnutls_strerror(ret)); /* set OCSP response2 */ - ret = - gnutls_certificate_set_ocsp_status_request_function2(xcred, index2, - ocsp_func, - &ocsp_resp2); + ret = gnutls_certificate_set_ocsp_status_request_function2( + xcred, index2, ocsp_func, &ocsp_resp2); if (ret < 0) fail("ocsp file set failed: %s\n", gnutls_strerror(ret)); /* set OCSP response3 */ - ret = - gnutls_certificate_set_ocsp_status_request_function2(xcred, index3, - ocsp_func, - &ocsp_resp3); + ret = gnutls_certificate_set_ocsp_status_request_function2( + xcred, index3, ocsp_func, &ocsp_resp3); if (ret < 0) fail("ocsp file set failed: %s\n", gnutls_strerror(ret)); /* set an OCSP response outside the bounds */ - assert(gnutls_certificate_set_ocsp_status_request_function2 - (xcred, 34, ocsp_func, - NULL) == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); + assert(gnutls_certificate_set_ocsp_status_request_function2( + xcred, 34, ocsp_func, NULL) == + GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); /* make sure that our invalid OCSP responses are not considered in verification */ @@ -247,9 +233,8 @@ void doit(void) GNUTLS_VERIFY_DISABLE_CRL_CHECKS) fail("error in gnutls_certificate_set_verify_flags\n"); - ret = - gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("error in setting trust cert: %s\n", gnutls_strerror(ret)); } @@ -263,9 +248,10 @@ void doit(void) "NORMAL:-ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.2", "localhost6", &ocsp_resp2, check_response, NULL); success("TLS1.2 + resp3\n"); - test_cli_serv(xcred, clicred, - "NORMAL:-ECDHE-RSA:-RSA:-DHE-RSA:-VERS-TLS-ALL:+VERS-TLS1.2", - NULL, &ocsp_resp3, check_response, NULL); + test_cli_serv( + xcred, clicred, + "NORMAL:-ECDHE-RSA:-RSA:-DHE-RSA:-VERS-TLS-ALL:+VERS-TLS1.2", + NULL, &ocsp_resp3, check_response, NULL); success("TLS1.3 + resp1\n"); test_cli_serv(xcred, clicred, @@ -276,9 +262,10 @@ void doit(void) "NORMAL:-ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.3", "localhost6", &ocsp_resp2, check_response, NULL); success("TLS1.3 + resp3\n"); - test_cli_serv(xcred, clicred, - "NORMAL:-SIGN-ALL:+SIGN-ECDSA-SECP256R1-SHA256:-ECDHE-RSA:-RSA:-DHE-RSA:-VERS-TLS-ALL:+VERS-TLS1.3", - NULL, &ocsp_resp3, check_response, NULL); + test_cli_serv( + xcred, clicred, + "NORMAL:-SIGN-ALL:+SIGN-ECDSA-SECP256R1-SHA256:-ECDHE-RSA:-RSA:-DHE-RSA:-VERS-TLS-ALL:+VERS-TLS1.3", + NULL, &ocsp_resp3, check_response, NULL); gnutls_certificate_free_credentials(xcred); gnutls_certificate_free_credentials(clicred); diff --git a/tests/set_x509_key_mem.c b/tests/set_x509_key_mem.c index c63da9f48f..154f7a1269 100644 --- a/tests/set_x509_key_mem.c +++ b/tests/set_x509_key_mem.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,10 +30,10 @@ #include #include #if !defined(_WIN32) -# include -# include -# include -# include +#include +#include +#include +#include #endif #include #include @@ -69,15 +69,13 @@ void doit(void) assert(gnutls_certificate_allocate_credentials(&clicred) >= 0); gnutls_certificate_allocate_credentials(&x509_cred); - ret = - gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) fail("set_x509_trust_file failed: %s\n", gnutls_strerror(ret)); - ret = gnutls_certificate_set_x509_key_mem(x509_cred, &cli_cert, - &server_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + x509_cred, &cli_cert, &server_key, GNUTLS_X509_FMT_PEM); if (ret != GNUTLS_E_CERTIFICATE_KEY_MISMATCH) { fail("error in error code\n"); exit(1); @@ -90,21 +88,17 @@ void doit(void) gnutls_certificate_set_flags(x509_cred, GNUTLS_CERTIFICATE_SKIP_KEY_CERT_MATCH); - ret = - gnutls_certificate_set_x509_key_mem(x509_cred, - &server_ca3_localhost6_cert_chain, - &server_ca3_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + x509_cred, &server_ca3_localhost6_cert_chain, &server_ca3_key, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("error in error code\n"); exit(1); } - ret = - gnutls_certificate_set_x509_key_mem(x509_cred, - &server_ca3_localhost_cert_chain, - &server_ca3_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + x509_cred, &server_ca3_localhost_cert_chain, &server_ca3_key, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("error in error code\n"); exit(1); diff --git a/tests/set_x509_key_utf8.c b/tests/set_x509_key_utf8.c index c93f61eaa8..660a3f0d88 100644 --- a/tests/set_x509_key_utf8.c +++ b/tests/set_x509_key_utf8.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,10 +30,10 @@ #include #include #if !defined(_WIN32) -# include -# include -# include -# include +#include +#include +#include +#include #endif #include #include @@ -44,7 +44,7 @@ #include "cert-common.h" #include "utils.h" -#define MIN(x,y) (((x)<(y))?(x):(y)) +#define MIN(x, y) (((x) < (y)) ? (x) : (y)) /* Test for gnutls_certificate_set_x509_key() * @@ -55,7 +55,7 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "<%d>| %s", level, str); } -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1473674242; if (t) @@ -64,7 +64,7 @@ static time_t mytime(time_t * t) return then; } -static void compare(const gnutls_datum_t * der, const void *ipem) +static void compare(const gnutls_datum_t *der, const void *ipem) { gnutls_datum_t pem = { (void *)ipem, strlen((char *)ipem) }; gnutls_datum_t new_der; @@ -75,8 +75,8 @@ static void compare(const gnutls_datum_t * der, const void *ipem) fail("error: %s\n", gnutls_strerror(ret)); } - if (der->size != new_der.size - || memcmp(der->data, new_der.data, der->size) != 0) { + if (der->size != new_der.size || + memcmp(der->data, new_der.data, der->size) != 0) { fail("error in %d: %s\n", __LINE__, "cert don't match"); exit(1); } @@ -85,7 +85,7 @@ static void compare(const gnutls_datum_t * der, const void *ipem) } static int import_key(gnutls_certificate_credentials_t xcred, - const gnutls_datum_t * skey, const gnutls_datum_t * cert) + const gnutls_datum_t *skey, const gnutls_datum_t *cert) { gnutls_x509_privkey_t key; gnutls_x509_crt_t *crt_list; @@ -95,9 +95,8 @@ static int import_key(gnutls_certificate_credentials_t xcred, assert(gnutls_x509_privkey_init(&key) >= 0); - ret = - gnutls_x509_crt_list_import2(&crt_list, &crt_list_size, cert, - GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_x509_crt_list_import2(&crt_list, &crt_list_size, cert, + GNUTLS_X509_FMT_PEM, 0); if (ret < 0) { fail("error in gnutls_x509_crt_list_import2: %s\n", gnutls_strerror(ret)); @@ -108,8 +107,8 @@ static int import_key(gnutls_certificate_credentials_t xcred, fail("error in key import: %s\n", gnutls_strerror(ret)); } - ret = gnutls_certificate_set_x509_key(xcred, crt_list, - crt_list_size, key); + ret = gnutls_certificate_set_x509_key(xcred, crt_list, crt_list_size, + key); if (ret < 0) { success("error in gnutls_certificate_set_x509_key: %s\n", gnutls_strerror(ret)); @@ -132,7 +131,7 @@ static int import_key(gnutls_certificate_credentials_t xcred, compare(&tcert, cert->data + i); } - cleanup: +cleanup: gnutls_x509_privkey_deinit(key); for (i = 0; i < crt_list_size; i++) { gnutls_x509_crt_deinit(crt_list[i]); @@ -168,27 +167,28 @@ void doit(void) gnutls_certificate_set_flags(x509_cred, GNUTLS_CERTIFICATE_API_V2); - ret = - gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) fail("set_x509_trust_file failed: %s\n", gnutls_strerror(ret)); - idx = - import_key(x509_cred, &server_ca3_key, - &server_ca3_localhost_cert_chain); + idx = import_key(x509_cred, &server_ca3_key, + &server_ca3_localhost_cert_chain); assert(idx == 0); - idx = - import_key(x509_cred, &server_ca3_key, - &server_ca3_localhost_utf8_cert); + idx = import_key(x509_cred, &server_ca3_key, + &server_ca3_localhost_utf8_cert); assert(idx == 1); test_cli_serv(x509_cred, clicred, "NORMAL", "localhost", NULL, NULL, NULL); - test_cli_serv(x509_cred, clicred, "NORMAL", "www.xn--kxawhku.com", NULL, NULL, NULL); /* the previous name in IDNA format */ - test_cli_serv(x509_cred, clicred, "NORMAL", "简体中文.εξτρα.com", NULL, NULL, NULL); /* the second DNS name of cert */ - test_cli_serv(x509_cred, clicred, "NORMAL", "xn--fiqu1az03c18t.xn--mxah1amo.com", NULL, NULL, NULL); /* its IDNA equivalent */ + test_cli_serv(x509_cred, clicred, "NORMAL", "www.xn--kxawhku.com", NULL, + NULL, NULL); /* the previous name in IDNA format */ + test_cli_serv(x509_cred, clicred, "NORMAL", "简体中文.εξτρα.com", NULL, + NULL, NULL); /* the second DNS name of cert */ + test_cli_serv(x509_cred, clicred, "NORMAL", + "xn--fiqu1az03c18t.xn--mxah1amo.com", NULL, NULL, + NULL); /* its IDNA equivalent */ test_cli_serv_expect(x509_cred, clicred, "NORMAL", "NORMAL", "raw:简体中文.εξτρα.com", diff --git a/tests/set_x509_ocsp_multi_cli.c b/tests/set_x509_ocsp_multi_cli.c index a99ffb991e..7dda1cf21e 100644 --- a/tests/set_x509_ocsp_multi_cli.c +++ b/tests/set_x509_ocsp_multi_cli.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -31,14 +31,14 @@ #ifdef ENABLE_OCSP -# include "cert-common.h" -# include "ocsp-common.h" -# include "utils.h" +#include "cert-common.h" +#include "ocsp-common.h" +#include "utils.h" /* Tests whether setting an OCSP response to a client * is working as expected */ -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = OCSP_RESP_DATE; if (t) @@ -74,8 +74,8 @@ static void check_serv(gnutls_session_t session, void *priv) fail("not expected response, but received one\n"); } - if (resp.size != exp_resp->size - || memcmp(resp.data, exp_resp->data, resp.size) != 0) { + if (resp.size != exp_resp->size || + memcmp(resp.data, exp_resp->data, resp.size) != 0) { fail("did not receive the expected response\n"); } @@ -86,9 +86,9 @@ static void check_serv(gnutls_session_t session, void *priv) fail("no intermediate response was received\n"); } - if (resp.size != ocsp_subca3_unknown.size - || memcmp(resp.data, ocsp_subca3_unknown.data, - resp.size) != 0) { + if (resp.size != ocsp_subca3_unknown.size || + memcmp(resp.data, ocsp_subca3_unknown.data, resp.size) != + 0) { fail("did not receive the expected intermediate response\n"); } } @@ -97,9 +97,8 @@ static void check_serv(gnutls_session_t session, void *priv) if (ret != 0) fail("error in verification (%s)\n", gnutls_strerror(ret)); - ret = - gnutls_ocsp_status_request_is_checked(session, - GNUTLS_OCSP_SR_IS_AVAIL); + ret = gnutls_ocsp_status_request_is_checked(session, + GNUTLS_OCSP_SR_IS_AVAIL); if (ret == 0) { fail("did not receive the expected value (%d)\n", ret); } @@ -145,23 +144,19 @@ void doit(void) fp = fopen(certfile1, "wb"); if (fp == NULL) fail("error in fopen\n"); - assert(fwrite - (server_localhost_ca3_cert_chain_pem, 1, - strlen(server_localhost_ca3_cert_chain_pem), fp) > 0); - assert(fwrite - (server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), - fp) > 0); + assert(fwrite(server_localhost_ca3_cert_chain_pem, 1, + strlen(server_localhost_ca3_cert_chain_pem), fp) > 0); + assert(fwrite(server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), + fp) > 0); fclose(fp); - ret = gnutls_certificate_set_x509_key_file2(xcred, certfile1, certfile1, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_certificate_set_x509_key_file2( + xcred, certfile1, certfile1, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) fail("set_x509_key_file failed: %s\n", gnutls_strerror(ret)); - ret = - gnutls_certificate_set_x509_key_file2(clicred, certfile1, certfile1, - GNUTLS_X509_FMT_PEM, NULL, 0); + ret = gnutls_certificate_set_x509_key_file2( + clicred, certfile1, certfile1, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) fail("set_x509_key_file failed: %s\n", gnutls_strerror(ret)); index1 = ret; @@ -171,21 +166,16 @@ void doit(void) fp = fopen(ocspfile1, "wb"); if (fp == NULL) fail("error in fopen\n"); - assert(fwrite - (ocsp_subca3_unknown_pem.data, 1, ocsp_subca3_unknown_pem.size, - fp) > 0); - assert(fwrite - (ocsp_ca3_localhost_unknown_pem.data, 1, - ocsp_ca3_localhost_unknown_pem.size, fp) > 0); - assert(fwrite - (ocsp_ca3_localhost6_unknown_pem.data, 1, - ocsp_ca3_localhost6_unknown_pem.size, fp) > 0); + assert(fwrite(ocsp_subca3_unknown_pem.data, 1, + ocsp_subca3_unknown_pem.size, fp) > 0); + assert(fwrite(ocsp_ca3_localhost_unknown_pem.data, 1, + ocsp_ca3_localhost_unknown_pem.size, fp) > 0); + assert(fwrite(ocsp_ca3_localhost6_unknown_pem.data, 1, + ocsp_ca3_localhost6_unknown_pem.size, fp) > 0); fclose(fp); - ret = - gnutls_certificate_set_ocsp_status_request_file2(clicred, ocspfile1, - index1, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_ocsp_status_request_file2( + clicred, ocspfile1, index1, GNUTLS_X509_FMT_PEM); if (ret != GNUTLS_E_OCSP_MISMATCH_WITH_CERTS) fail("ocsp file set failed: %s\n", gnutls_strerror(ret)); @@ -194,24 +184,19 @@ void doit(void) fp = fopen(ocspfile1, "wb"); if (fp == NULL) fail("error in fopen\n"); - assert(fwrite - (ocsp_subca3_unknown_pem.data, 1, ocsp_subca3_unknown_pem.size, - fp) > 0); - assert(fwrite - (ocsp_ca3_localhost_unknown_pem.data, 1, - ocsp_ca3_localhost_unknown_pem.size, fp) > 0); + assert(fwrite(ocsp_subca3_unknown_pem.data, 1, + ocsp_subca3_unknown_pem.size, fp) > 0); + assert(fwrite(ocsp_ca3_localhost_unknown_pem.data, 1, + ocsp_ca3_localhost_unknown_pem.size, fp) > 0); fclose(fp); - ret = - gnutls_certificate_set_ocsp_status_request_file2(clicred, ocspfile1, - index1, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_ocsp_status_request_file2( + clicred, ocspfile1, index1, GNUTLS_X509_FMT_PEM); if (ret < 0) fail("ocsp file set failed: %s\n", gnutls_strerror(ret)); - ret = - gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("error in setting trust cert: %s\n", gnutls_strerror(ret)); } @@ -228,7 +213,7 @@ void doit(void) if (t != 1509625639) fail("error in OCSP validity time: %ld\n", (long int)t); -# define PRIO "NORMAL:-ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.3" +#define PRIO "NORMAL:-ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.3" _test_cli_serv(xcred, clicred, PRIO, PRIO, "localhost", &ocsp_ca3_localhost_unknown, check_cli, check_serv, 0, 1, 0, 0); diff --git a/tests/set_x509_ocsp_multi_invalid.c b/tests/set_x509_ocsp_multi_invalid.c index e590e75845..ba50560a4e 100644 --- a/tests/set_x509_ocsp_multi_invalid.c +++ b/tests/set_x509_ocsp_multi_invalid.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -31,13 +31,13 @@ #ifdef ENABLE_OCSP -# include "cert-common.h" -# include "utils.h" +#include "cert-common.h" +#include "utils.h" /* Tests whether setting an OCSP response to a server with multiple * certificate sets, is working as expected */ -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1469186559; if (t) @@ -46,19 +46,22 @@ static time_t mytime(time_t * t) return then; } -# define RESP1 "\x30\x82\x06\x8C\x0A\x01\x00\xA0\x82\x06\x85\x30\x82\x06\x81\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x06\x72\x30\x82\x06\x6E\x30\x82\x01\x07\xA1\x69\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\x30\x64\x30\x62\x30\x3A\x30\x09\x06\x05\x2B\x0E\x03\x02\x1A\x05\x00\x04\x14\x13\x9D\xA0\x9E\xF4\x32\xAB\x8F\xE2\x89\x56\x67\xFA\xD0\xD4\xE3\x35\x86\x71\xB9\x04\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\x02\x01\x1D\x80\x00\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\xA0\x11\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x39\x32\x38\x5A\xA1\x23\x30\x21\x30\x1F\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x02\x04\x12\x04\x10\x16\x89\x7D\x91\x3A\xB5\x25\xA4\x45\xFE\xC9\xFD\xC2\xE5\x08\xA4\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x4E\xAD\x6B\x2B\xF7\xF2\xBF\xA9\x23\x1E\x3A\x0B\x06\xDB\x55\x53\x2B\x64\x54\x11\x32\xBF\x60\xF7\x4F\xE0\x8E\x9B\xA0\xA2\x4C\x79\xC3\x2A\xE0\x43\xF7\x40\x1A\xDC\xB9\xB4\x25\xEF\x48\x01\x97\x8C\xF5\x1E\xDB\xD1\x30\x37\x73\x69\xD6\xA7\x7A\x2D\x8E\xDE\x5C\xAA\xEA\x39\xB9\x52\xAA\x25\x1E\x74\x7D\xF9\x78\x95\x8A\x92\x1F\x98\x21\xF4\x60\x7F\xD3\x28\xEE\x47\x9C\xBF\xE2\x5D\xF6\x3F\x68\x0A\xD6\xFF\x08\xC1\xDC\x95\x1E\x29\xD7\x3E\x85\xD5\x65\xA4\x4B\xC0\xAF\xC3\x78\xAB\x06\x98\x88\x19\x8A\x64\xA6\x83\x91\x87\x13\xDB\x17\xCC\x46\xBD\xAB\x4E\xC7\x16\xD1\xF8\x35\xFD\x27\xC8\xF6\x6B\xEB\x37\xB8\x08\x6F\xE2\x6F\xB4\x7E\xD5\x68\xDB\x7F\x5D\x5E\x36\x38\xF2\x77\x59\x13\xE7\x3E\x4D\x67\x5F\xDB\xA2\xF5\x5D\x7C\xBF\xBD\xB5\x37\x33\x51\x36\x63\xF8\x21\x1E\xFC\x73\x8F\x32\x69\xBB\x97\xA7\xBD\xF1\xB6\xE0\x40\x09\x68\xEA\xD5\x93\xB8\xBB\x39\x8D\xA8\x16\x1B\xBF\x04\x7A\xBC\x18\x43\x01\xE9\x3C\x19\x5C\x4D\x4B\x98\xD8\x23\x37\x39\xA4\xC4\xDD\xED\x9C\xEC\x37\xAB\x66\x44\x9B\xE7\x5B\x5D\x32\xA2\xDB\xA6\x0B\x3B\x8C\xE1\xF5\xDB\xCB\x7D\x58\xA0\x82\x04\x4B\x30\x82\x04\x47\x30\x82\x04\x43\x30\x82\x03\x2B\xA0\x03\x02\x01\x02\x02\x01\x1E\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x30\x1E\x17\x0D\x30\x39\x31\x31\x32\x34\x31\x32\x35\x31\x35\x33\x5A\x17\x0D\x31\x34\x31\x31\x32\x33\x31\x32\x35\x31\x35\x33\x5A\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x82\x01\x22\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00\x03\x82\x01\x0F\x00\x30\x82\x01\x0A\x02\x82\x01\x01\x00\xBC\x05\x3E\x4B\xBE\xC6\xB1\x33\x48\x0E\xC3\xD4\x0C\xEF\x83\x0B\xBD\xBC\x57\x5F\x14\xEF\xF5\x6D\x0B\xFF\xFA\x01\x9C\xFA\x21\x6D\x5C\xAE\x79\x29\x74\xFE\xBD\xAB\x70\x87\x98\x6B\x48\x35\x79\xE3\xE0\xC1\x14\x41\x1F\x0A\xF7\xE7\xA3\xA6\xDA\x6B\xFF\xCD\x74\xE9\x95\x00\x38\xAA\xD6\x3A\x60\xC6\x64\xA1\xE6\x02\x39\x58\x4E\xFD\xF2\x78\x08\x63\xB6\xD7\x7A\x96\x79\x62\x18\x39\xEE\x27\x8D\x3B\xA2\x3D\x48\x88\xDB\x43\xD6\x6A\x77\x20\x6A\x27\x39\x50\xE0\x02\x50\x19\xF2\x7A\xCF\x78\x23\x99\x01\xD4\xE5\xB1\xD1\x31\xE6\x6B\x84\xAF\xD0\x77\x41\x46\x85\xB0\x3B\xE6\x6A\x00\x0F\x3B\x7E\x95\x7F\x59\xA8\x22\xE8\x49\x49\x05\xC8\xCB\x6C\xEE\x47\xA7\x2D\xC9\x74\x5B\xEB\x8C\xD5\x99\xC2\xE2\x70\xDB\xEA\x87\x43\x84\x0E\x4F\x83\x1C\xA6\xEB\x1F\x22\x38\x17\x69\x9B\x72\x12\x95\x48\x71\xB2\x7B\x92\x73\x52\xAB\xE3\x1A\xA5\xD3\xF4\x44\x14\xBA\xC3\x35\xDA\x91\x6C\x7D\xB4\xC2\x00\x07\xD8\x0A\x51\xF1\x0D\x4C\xD9\x7A\xD1\x99\xE6\xA8\x8D\x0A\x80\xA8\x91\xDD\x8A\xA2\x6B\xF6\xDB\xB0\x3E\xC9\x71\xA9\xE0\x39\xC3\xA3\x58\x0D\x87\xD0\xB2\xA7\x9C\xB7\x69\x02\x03\x01\x00\x01\xA3\x82\x01\x1A\x30\x82\x01\x16\x30\x09\x06\x03\x55\x1D\x13\x04\x02\x30\x00\x30\x0B\x06\x03\x55\x1D\x0F\x04\x04\x03\x02\x03\xA8\x30\x1D\x06\x03\x55\x1D\x0E\x04\x16\x04\x14\x34\x91\x6E\x91\x32\xBF\x35\x25\x43\xCC\x28\x74\xEF\x82\xC2\x57\x92\x79\x13\x73\x30\x6D\x06\x03\x55\x1D\x23\x04\x66\x30\x64\x80\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\xA1\x49\xA4\x47\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x82\x01\x00\x30\x1E\x06\x03\x55\x1D\x11\x04\x17\x30\x15\x82\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x13\x06\x03\x55\x1D\x25\x04\x0C\x30\x0A\x06\x08\x2B\x06\x01\x05\x05\x07\x03\x09\x30\x39\x06\x03\x55\x1D\x1F\x04\x32\x30\x30\x30\x2E\xA0\x2C\xA0\x2A\x86\x28\x68\x74\x74\x70\x3A\x2F\x2F\x63\x72\x6C\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x2F\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x63\x72\x6C\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x03\x82\x01\x01\x00\x6D\x78\xD7\x66\x90\xA6\xEB\xDD\xB5\x09\x48\xA4\xDA\x27\xFA\xAC\xB1\xBC\x8F\x8C\xBE\xCC\x8C\x09\xA2\x40\x0D\x6C\x4A\xAE\x72\x22\x1E\xC8\xAF\x6D\xF1\x12\xAF\xD7\x40\x51\x79\xD4\xDD\xB2\x0C\xDB\x97\x84\xB6\x24\xD5\xF5\xA8\xBB\xC0\x4B\xF9\x7F\x71\xF7\xB0\x65\x42\x4A\x7D\xFE\x76\x7E\x05\xD2\x46\xB8\x7D\xB3\x39\x4C\x5C\xB1\xFA\xB9\xEE\x3B\x70\x33\x39\x57\x1A\xB9\x95\x51\x33\x00\x25\x1B\x4C\xAA\xB4\xA7\x55\xAF\x63\x6D\x6F\x88\x17\x6A\x7F\xB0\x97\xDE\x49\x14\x6A\x27\x6A\xB0\x42\x80\xD6\xA6\x9B\xEF\x04\x5E\x11\x7D\xD5\x8E\x54\x20\xA2\x76\xD4\x66\x58\xAC\x9C\x12\xD3\xF5\xCA\x54\x98\xCA\x21\xEC\xC1\x55\xA1\x2F\x68\x0B\x5D\x04\x50\xD2\x5E\x70\x25\xD8\x13\xD9\x44\x51\x0E\x8A\x42\x08\x18\x84\xE6\x61\xCE\x5A\x7D\x7B\x81\x35\x90\xC3\xD4\x9D\x19\xB6\x37\xEE\x8F\x63\x5C\xDA\xD8\xF0\x64\x60\x39\xEB\x9B\x1C\x54\x66\x75\x76\xB5\x0A\x58\xB9\x3F\x91\xE1\x21\x9C\xA0\x50\x15\x97\xB6\x7E\x41\xBC\xD0\xC4\x21\x4C\xF5\xD7\xF0\x13\xF8\x77\xE9\x74\xC4\x8A\x0E\x20\x17\x32\xAE\x38\xC2\xA5\xA8\x62\x85\x17\xB1\xA2\xD3\x22\x9F\x95\xB7\xA3\x4C" +#define RESP1 \ + "\x30\x82\x06\x8C\x0A\x01\x00\xA0\x82\x06\x85\x30\x82\x06\x81\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x06\x72\x30\x82\x06\x6E\x30\x82\x01\x07\xA1\x69\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\x30\x64\x30\x62\x30\x3A\x30\x09\x06\x05\x2B\x0E\x03\x02\x1A\x05\x00\x04\x14\x13\x9D\xA0\x9E\xF4\x32\xAB\x8F\xE2\x89\x56\x67\xFA\xD0\xD4\xE3\x35\x86\x71\xB9\x04\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\x02\x01\x1D\x80\x00\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\xA0\x11\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x39\x32\x38\x5A\xA1\x23\x30\x21\x30\x1F\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x02\x04\x12\x04\x10\x16\x89\x7D\x91\x3A\xB5\x25\xA4\x45\xFE\xC9\xFD\xC2\xE5\x08\xA4\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x4E\xAD\x6B\x2B\xF7\xF2\xBF\xA9\x23\x1E\x3A\x0B\x06\xDB\x55\x53\x2B\x64\x54\x11\x32\xBF\x60\xF7\x4F\xE0\x8E\x9B\xA0\xA2\x4C\x79\xC3\x2A\xE0\x43\xF7\x40\x1A\xDC\xB9\xB4\x25\xEF\x48\x01\x97\x8C\xF5\x1E\xDB\xD1\x30\x37\x73\x69\xD6\xA7\x7A\x2D\x8E\xDE\x5C\xAA\xEA\x39\xB9\x52\xAA\x25\x1E\x74\x7D\xF9\x78\x95\x8A\x92\x1F\x98\x21\xF4\x60\x7F\xD3\x28\xEE\x47\x9C\xBF\xE2\x5D\xF6\x3F\x68\x0A\xD6\xFF\x08\xC1\xDC\x95\x1E\x29\xD7\x3E\x85\xD5\x65\xA4\x4B\xC0\xAF\xC3\x78\xAB\x06\x98\x88\x19\x8A\x64\xA6\x83\x91\x87\x13\xDB\x17\xCC\x46\xBD\xAB\x4E\xC7\x16\xD1\xF8\x35\xFD\x27\xC8\xF6\x6B\xEB\x37\xB8\x08\x6F\xE2\x6F\xB4\x7E\xD5\x68\xDB\x7F\x5D\x5E\x36\x38\xF2\x77\x59\x13\xE7\x3E\x4D\x67\x5F\xDB\xA2\xF5\x5D\x7C\xBF\xBD\xB5\x37\x33\x51\x36\x63\xF8\x21\x1E\xFC\x73\x8F\x32\x69\xBB\x97\xA7\xBD\xF1\xB6\xE0\x40\x09\x68\xEA\xD5\x93\xB8\xBB\x39\x8D\xA8\x16\x1B\xBF\x04\x7A\xBC\x18\x43\x01\xE9\x3C\x19\x5C\x4D\x4B\x98\xD8\x23\x37\x39\xA4\xC4\xDD\xED\x9C\xEC\x37\xAB\x66\x44\x9B\xE7\x5B\x5D\x32\xA2\xDB\xA6\x0B\x3B\x8C\xE1\xF5\xDB\xCB\x7D\x58\xA0\x82\x04\x4B\x30\x82\x04\x47\x30\x82\x04\x43\x30\x82\x03\x2B\xA0\x03\x02\x01\x02\x02\x01\x1E\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x30\x1E\x17\x0D\x30\x39\x31\x31\x32\x34\x31\x32\x35\x31\x35\x33\x5A\x17\x0D\x31\x34\x31\x31\x32\x33\x31\x32\x35\x31\x35\x33\x5A\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x82\x01\x22\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00\x03\x82\x01\x0F\x00\x30\x82\x01\x0A\x02\x82\x01\x01\x00\xBC\x05\x3E\x4B\xBE\xC6\xB1\x33\x48\x0E\xC3\xD4\x0C\xEF\x83\x0B\xBD\xBC\x57\x5F\x14\xEF\xF5\x6D\x0B\xFF\xFA\x01\x9C\xFA\x21\x6D\x5C\xAE\x79\x29\x74\xFE\xBD\xAB\x70\x87\x98\x6B\x48\x35\x79\xE3\xE0\xC1\x14\x41\x1F\x0A\xF7\xE7\xA3\xA6\xDA\x6B\xFF\xCD\x74\xE9\x95\x00\x38\xAA\xD6\x3A\x60\xC6\x64\xA1\xE6\x02\x39\x58\x4E\xFD\xF2\x78\x08\x63\xB6\xD7\x7A\x96\x79\x62\x18\x39\xEE\x27\x8D\x3B\xA2\x3D\x48\x88\xDB\x43\xD6\x6A\x77\x20\x6A\x27\x39\x50\xE0\x02\x50\x19\xF2\x7A\xCF\x78\x23\x99\x01\xD4\xE5\xB1\xD1\x31\xE6\x6B\x84\xAF\xD0\x77\x41\x46\x85\xB0\x3B\xE6\x6A\x00\x0F\x3B\x7E\x95\x7F\x59\xA8\x22\xE8\x49\x49\x05\xC8\xCB\x6C\xEE\x47\xA7\x2D\xC9\x74\x5B\xEB\x8C\xD5\x99\xC2\xE2\x70\xDB\xEA\x87\x43\x84\x0E\x4F\x83\x1C\xA6\xEB\x1F\x22\x38\x17\x69\x9B\x72\x12\x95\x48\x71\xB2\x7B\x92\x73\x52\xAB\xE3\x1A\xA5\xD3\xF4\x44\x14\xBA\xC3\x35\xDA\x91\x6C\x7D\xB4\xC2\x00\x07\xD8\x0A\x51\xF1\x0D\x4C\xD9\x7A\xD1\x99\xE6\xA8\x8D\x0A\x80\xA8\x91\xDD\x8A\xA2\x6B\xF6\xDB\xB0\x3E\xC9\x71\xA9\xE0\x39\xC3\xA3\x58\x0D\x87\xD0\xB2\xA7\x9C\xB7\x69\x02\x03\x01\x00\x01\xA3\x82\x01\x1A\x30\x82\x01\x16\x30\x09\x06\x03\x55\x1D\x13\x04\x02\x30\x00\x30\x0B\x06\x03\x55\x1D\x0F\x04\x04\x03\x02\x03\xA8\x30\x1D\x06\x03\x55\x1D\x0E\x04\x16\x04\x14\x34\x91\x6E\x91\x32\xBF\x35\x25\x43\xCC\x28\x74\xEF\x82\xC2\x57\x92\x79\x13\x73\x30\x6D\x06\x03\x55\x1D\x23\x04\x66\x30\x64\x80\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\xA1\x49\xA4\x47\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x82\x01\x00\x30\x1E\x06\x03\x55\x1D\x11\x04\x17\x30\x15\x82\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x13\x06\x03\x55\x1D\x25\x04\x0C\x30\x0A\x06\x08\x2B\x06\x01\x05\x05\x07\x03\x09\x30\x39\x06\x03\x55\x1D\x1F\x04\x32\x30\x30\x30\x2E\xA0\x2C\xA0\x2A\x86\x28\x68\x74\x74\x70\x3A\x2F\x2F\x63\x72\x6C\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x2F\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x63\x72\x6C\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x03\x82\x01\x01\x00\x6D\x78\xD7\x66\x90\xA6\xEB\xDD\xB5\x09\x48\xA4\xDA\x27\xFA\xAC\xB1\xBC\x8F\x8C\xBE\xCC\x8C\x09\xA2\x40\x0D\x6C\x4A\xAE\x72\x22\x1E\xC8\xAF\x6D\xF1\x12\xAF\xD7\x40\x51\x79\xD4\xDD\xB2\x0C\xDB\x97\x84\xB6\x24\xD5\xF5\xA8\xBB\xC0\x4B\xF9\x7F\x71\xF7\xB0\x65\x42\x4A\x7D\xFE\x76\x7E\x05\xD2\x46\xB8\x7D\xB3\x39\x4C\x5C\xB1\xFA\xB9\xEE\x3B\x70\x33\x39\x57\x1A\xB9\x95\x51\x33\x00\x25\x1B\x4C\xAA\xB4\xA7\x55\xAF\x63\x6D\x6F\x88\x17\x6A\x7F\xB0\x97\xDE\x49\x14\x6A\x27\x6A\xB0\x42\x80\xD6\xA6\x9B\xEF\x04\x5E\x11\x7D\xD5\x8E\x54\x20\xA2\x76\xD4\x66\x58\xAC\x9C\x12\xD3\xF5\xCA\x54\x98\xCA\x21\xEC\xC1\x55\xA1\x2F\x68\x0B\x5D\x04\x50\xD2\x5E\x70\x25\xD8\x13\xD9\x44\x51\x0E\x8A\x42\x08\x18\x84\xE6\x61\xCE\x5A\x7D\x7B\x81\x35\x90\xC3\xD4\x9D\x19\xB6\x37\xEE\x8F\x63\x5C\xDA\xD8\xF0\x64\x60\x39\xEB\x9B\x1C\x54\x66\x75\x76\xB5\x0A\x58\xB9\x3F\x91\xE1\x21\x9C\xA0\x50\x15\x97\xB6\x7E\x41\xBC\xD0\xC4\x21\x4C\xF5\xD7\xF0\x13\xF8\x77\xE9\x74\xC4\x8A\x0E\x20\x17\x32\xAE\x38\xC2\xA5\xA8\x62\x85\x17\xB1\xA2\xD3\x22\x9F\x95\xB7\xA3\x4C" -static gnutls_datum_t ocsp_resp1 = - { (unsigned char *)RESP1, sizeof(RESP1) - 1 }; +static gnutls_datum_t ocsp_resp1 = { (unsigned char *)RESP1, + sizeof(RESP1) - 1 }; -# define RESP2 "\x30\x82\x06\x8C\x0A\x01\x00\xA0\x82\x06\x85\x30\x82\x06\x81\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x06\x72\x30\x82\x06\x6E\x30\x82\x01\x07\xA1\x69\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\x30\x64\x30\x62\x30\x3A\x30\x09\x06\x05\x2B\x0E\x03\x02\x1A\x05\x00\x04\x14\x13\x9D\xA0\x9E\xF4\x32\xAB\x8F\xE2\x89\x56\x67\xFA\xD0\xD4\xE3\x35\x86\x71\xB9\x04\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\x02\x01\x1D\x80\x00\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\xA0\x11\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x39\x32\x38\x5A\xA1\x23\x30\x21\x30\x1F\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x02\x04\x12\x04\x10\x16\x89\x7D\x91\x3A\xB5\x25\xA4\x45\xFE\xC9\xFD\xC2\xE5\x08\xA4\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x4E\xAD\x6B\x2B\xF7\xF2\xBF\xA9\x23\x1E\x3A\x0B\x06\xDB\x55\x53\x2B\x64\x54\x11\x32\xBF\x60\xF7\x4F\xE0\x8E\x9B\xA0\xA2\x4C\x79\xC3\x2A\xE0\x43\xF7\x40\x1A\xDC\xB9\xB4\x25\xEF\x48\x01\x97\x8C\xF5\x1E\xDB\xD1\x30\x37\x73\x69\xD6\xA7\x7A\x2D\x8E\xDE\x5C\xAA\xEA\x39\xB9\x52\xAA\x25\x1E\x74\x7D\xF9\x78\x95\x8A\x92\x1F\x98\x21\xF4\x60\x7F\xD3\x28\xEE\x47\x9C\xBF\xE2\x5D\xF6\x3F\x68\x0A\xD6\xFF\x08\xC1\xDC\x95\x1E\x29\xD7\x3E\x85\xD5\x65\xA4\x4B\xC0\xAF\xC3\x78\xAB\x06\x98\x88\x19\x8A\x64\xA6\x83\x91\x87\x13\xDB\x17\xCC\x46\xBD\xAB\x4E\xC7\x16\xD1\xF8\x35\xFD\x27\xC8\xF6\x6B\xEB\x37\xB8\x08\x6F\xE2\x6F\xB4\x7E\xD5\x68\xDB\x7F\x5D\x5E\x36\x38\xF2\x77\x59\x13\xE7\x3E\x4D\x67\x5F\xDB\xA2\xF5\x5D\x7C\xBF\xBD\xB5\x37\x33\x51\x36\x63\xF8\x21\x1E\xFC\x73\x8F\x32\x69\xBB\x97\xA7\xBD\xF1\xB6\xE0\x40\x09\x68\xEA\xD5\x93\xB8\xBB\x39\x8D\xA8\x16\x1B\xBF\x04\x7A\xBC\x18\x43\x01\xE9\x3C\x19\x5C\x4D\x4B\x98\xD8\x23\x37\x39\xA4\xC4\xDD\xED\x9C\xEC\x37\xAB\x66\x44\x9B\xE7\x5B\x5D\x32\xA2\xDB\xA6\x0B\x3B\x8C\xE1\xF5\xDB\xCB\x7D\x58\xA0\x82\x04\x4B\x30\x82\x04\x47\x30\x82\x04\x43\x30\x82\x03\x2B\xA0\x03\x02\x01\x02\x02\x01\x1E\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x30\x1E\x17\x0D\x30\x39\x31\x31\x32\x34\x31\x32\x35\x31\x35\x33\x5A\x17\x0D\x31\x34\x31\x31\x32\x33\x31\x32\x35\x31\x35\x33\x5A\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x82\x01\x22\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00\x03\x82\x01\x0F\x00\x30\x82\x01\x0A\x02\x82\x01\x01\x00\xBC\x05\x3E\x4B\xBE\xC6\xB1\x33\x48\x0E\xC3\xD4\x0C\xEF\x83\x0B\xBD\xBC\x57\x5F\x14\xEF\xF5\x6D\x0B\xFF\xFA\x01\x9C\xFA\x21\x6D\x5C\xAE\x79\x29\x74\xFE\xBD\xAB\x70\x87\x98\x6B\x48\x35\x79\xE3\xE0\xC1\x14\x41\x1F\x0A\xF7\xE7\xA3\xA6\xDA\x6B\xFF\xCD\x74\xE9\x95\x00\x38\xAA\xD6\x3A\x60\xC6\x64\xA1\xE6\x02\x39\x58\x4E\xFD\xF2\x78\x08\x63\xB6\xD7\x7A\x96\x79\x62\x18\x39\xEE\x27\x8D\x3B\xA2\x3D\x48\x88\xDB\x43\xD6\x6A\x77\x20\x6A\x27\x39\x50\xE0\x02\x50\x19\xF2\x7A\xCF\x78\x23\x99\x01\xD4\xE5\xB1\xD1\x31\xE6\x6B\x84\xAF\xD0\x77\x41\x46\x85\xB0\x3B\xE6\x6A\x00\x0F\x3B\x7E\x95\x7F\x59\xA8\x22\xE8\x49\x49\x05\xC8\xCB\x6C\xEE\x47\xA7\x2D\xC9\x74\x5B\xEB\x8C\xD5\x99\xC2\xE2\x70\xDB\xEA\x87\x43\x84\x0E\x4F\x83\x1C\xA6\xEB\x1F\x22\x38\x17\x69\x9B\x72\x12\x95\x48\x71\xB2\x7B\x92\x73\x52\xAB\xE3\x1A\xA5\xD3\xF4\x44\x14\xBA\xC3\x35\xDA\x91\x6C\x7D\xB4\xC2\x00\x07\xD8\x0A\x51\xF1\x0D\x4C\xD9\x7A\xD1\x99\xE6\xA8\x8D\x0A\x80\xA8\x91\xDD\x8A\xA2\x6B\xF6\xDB\xB0\x3E\xC9\x71\xA9\xE0\x39\xC3\xA3\x58\x0D\x87\xD0\xB2\xA7\x9C\xB7\x69\x02\x03\x01\x00\x01\xA3\x82\x01\x1A\x30\x82\x01\x16\x30\x09\x06\x03\x55\x1D\x13\x04\x02\x30\x00\x30\x0B\x06\x03\x55\x1D\x0F\x04\x04\x03\x02\x03\xA8\x30\x1D\x06\x03\x55\x1D\x0E\x04\x16\x04\x14\x34\x91\x6E\x91\x32\xBF\x35\x25\x43\xCC\x28\x74\xEF\x82\xC2\x57\x92\x79\x13\x73\x30\x6D\x06\x03\x55\x1D\x23\x04\x66\x30\x64\x80\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\xA1\x49\xA4\x47\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x82\x01\x00\x30\x1E\x06\x03\x55\x1D\x11\x04\x17\x30\x15\x82\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x13\x06\x03\x55\x1D\x25\x04\x0C\x30\x0A\x06\x08\x2B\x06\x01\x05\x05\x07\x03\x09\x30\x39\x06\x03\x55\x1D\x1F\x04\x32\x30\x30\x30\x2E\xA0\x2C\xA0\x2A\x86\x28\x68\x74\x74\x70\x3A\x2F\x2F\x63\x72\x6C\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x2F\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x63\x72\x6C\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x03\x82\x01\x01\x00\x6D\x78\xD7\x66\x90\xA6\xEB\xDD\xB5\x09\x48\xA4\xDA\x27\xFA\xAC\xB1\xBC\x8F\x8C\xBE\xCC\x8C\x09\xA2\x40\x0D\x6C\x4A\xAE\x72\x22\x1E\xC8\xAF\x6D\xF1\x12\xAF\xD7\x40\x51\x79\xD4\xDD\xB2\x0C\xDB\x97\x84\xB6\x24\xD5\xF5\xA8\xBB\xC0\x4B\xF9\x7F\x71\xF7\xB0\x65\x42\x4A\x7D\xFE\x76\x7E\x05\xD2\x46\xB8\x7D\xB3\x39\x4C\x5C\xB1\xFA\xB9\xEE\x3B\x70\x33\x39\x57\x1A\xB9\x95\x51\x33\x00\x25\x1B\x4C\xAA\xB4\xA7\x55\xAF\x63\x6D\x6F\x88\x17\x6A\x7F\xB0\x97\xDE\x49\x14\x6A\x27\x6A\xB0\x42\x80\xD6\xA6\x9B\xEF\x04\x5E\x11\x7D\xD5\x8E\x54\x20\xA2\x76\xD4\x66\x58\xAC\x9C\x12\xD3\xF5\xCA\x54\x98\xCA\x21\xEC\xC1\x55\xA1\x2F\x68\x0B\x5D\x04\x50\xD2\x5E\x70\x25\xD8\x13\xD9\x44\x51\x0E\x8A\x42\x08\x18\x84\xE6\x61\xCE\x5A\x7D\x7B\x81\x35\x90\xC3\xD4\x9D\x19\xB6\x37\xEE\x8F\x63\x5C\xDA\xD8\xF0\x64\x60\x39\xEB\x9B\x1C\x54\x66\x75\x76\xB5\x0A\x58\xB9\x3F\x91\xE1\x21\x9C\xA0\x50\x15\x97\xB6\x7E\x41\xBC\xD0\xC4\x21\x4C\xF5\xD7\xF0\x13\xF8\x77\xE9\x74\xC4\x8A\x0E\x20\x17\x32\xAE\x38\xC2\xA5\xA8\x62\x85\x17\xB1\xA2\xD3\x22\x9F\x95\xB7\xA3\x4C" +#define RESP2 \ + "\x30\x82\x06\x8C\x0A\x01\x00\xA0\x82\x06\x85\x30\x82\x06\x81\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x06\x72\x30\x82\x06\x6E\x30\x82\x01\x07\xA1\x69\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\x30\x64\x30\x62\x30\x3A\x30\x09\x06\x05\x2B\x0E\x03\x02\x1A\x05\x00\x04\x14\x13\x9D\xA0\x9E\xF4\x32\xAB\x8F\xE2\x89\x56\x67\xFA\xD0\xD4\xE3\x35\x86\x71\xB9\x04\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\x02\x01\x1D\x80\x00\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\xA0\x11\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x39\x32\x38\x5A\xA1\x23\x30\x21\x30\x1F\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x02\x04\x12\x04\x10\x16\x89\x7D\x91\x3A\xB5\x25\xA4\x45\xFE\xC9\xFD\xC2\xE5\x08\xA4\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x4E\xAD\x6B\x2B\xF7\xF2\xBF\xA9\x23\x1E\x3A\x0B\x06\xDB\x55\x53\x2B\x64\x54\x11\x32\xBF\x60\xF7\x4F\xE0\x8E\x9B\xA0\xA2\x4C\x79\xC3\x2A\xE0\x43\xF7\x40\x1A\xDC\xB9\xB4\x25\xEF\x48\x01\x97\x8C\xF5\x1E\xDB\xD1\x30\x37\x73\x69\xD6\xA7\x7A\x2D\x8E\xDE\x5C\xAA\xEA\x39\xB9\x52\xAA\x25\x1E\x74\x7D\xF9\x78\x95\x8A\x92\x1F\x98\x21\xF4\x60\x7F\xD3\x28\xEE\x47\x9C\xBF\xE2\x5D\xF6\x3F\x68\x0A\xD6\xFF\x08\xC1\xDC\x95\x1E\x29\xD7\x3E\x85\xD5\x65\xA4\x4B\xC0\xAF\xC3\x78\xAB\x06\x98\x88\x19\x8A\x64\xA6\x83\x91\x87\x13\xDB\x17\xCC\x46\xBD\xAB\x4E\xC7\x16\xD1\xF8\x35\xFD\x27\xC8\xF6\x6B\xEB\x37\xB8\x08\x6F\xE2\x6F\xB4\x7E\xD5\x68\xDB\x7F\x5D\x5E\x36\x38\xF2\x77\x59\x13\xE7\x3E\x4D\x67\x5F\xDB\xA2\xF5\x5D\x7C\xBF\xBD\xB5\x37\x33\x51\x36\x63\xF8\x21\x1E\xFC\x73\x8F\x32\x69\xBB\x97\xA7\xBD\xF1\xB6\xE0\x40\x09\x68\xEA\xD5\x93\xB8\xBB\x39\x8D\xA8\x16\x1B\xBF\x04\x7A\xBC\x18\x43\x01\xE9\x3C\x19\x5C\x4D\x4B\x98\xD8\x23\x37\x39\xA4\xC4\xDD\xED\x9C\xEC\x37\xAB\x66\x44\x9B\xE7\x5B\x5D\x32\xA2\xDB\xA6\x0B\x3B\x8C\xE1\xF5\xDB\xCB\x7D\x58\xA0\x82\x04\x4B\x30\x82\x04\x47\x30\x82\x04\x43\x30\x82\x03\x2B\xA0\x03\x02\x01\x02\x02\x01\x1E\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x30\x1E\x17\x0D\x30\x39\x31\x31\x32\x34\x31\x32\x35\x31\x35\x33\x5A\x17\x0D\x31\x34\x31\x31\x32\x33\x31\x32\x35\x31\x35\x33\x5A\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x82\x01\x22\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00\x03\x82\x01\x0F\x00\x30\x82\x01\x0A\x02\x82\x01\x01\x00\xBC\x05\x3E\x4B\xBE\xC6\xB1\x33\x48\x0E\xC3\xD4\x0C\xEF\x83\x0B\xBD\xBC\x57\x5F\x14\xEF\xF5\x6D\x0B\xFF\xFA\x01\x9C\xFA\x21\x6D\x5C\xAE\x79\x29\x74\xFE\xBD\xAB\x70\x87\x98\x6B\x48\x35\x79\xE3\xE0\xC1\x14\x41\x1F\x0A\xF7\xE7\xA3\xA6\xDA\x6B\xFF\xCD\x74\xE9\x95\x00\x38\xAA\xD6\x3A\x60\xC6\x64\xA1\xE6\x02\x39\x58\x4E\xFD\xF2\x78\x08\x63\xB6\xD7\x7A\x96\x79\x62\x18\x39\xEE\x27\x8D\x3B\xA2\x3D\x48\x88\xDB\x43\xD6\x6A\x77\x20\x6A\x27\x39\x50\xE0\x02\x50\x19\xF2\x7A\xCF\x78\x23\x99\x01\xD4\xE5\xB1\xD1\x31\xE6\x6B\x84\xAF\xD0\x77\x41\x46\x85\xB0\x3B\xE6\x6A\x00\x0F\x3B\x7E\x95\x7F\x59\xA8\x22\xE8\x49\x49\x05\xC8\xCB\x6C\xEE\x47\xA7\x2D\xC9\x74\x5B\xEB\x8C\xD5\x99\xC2\xE2\x70\xDB\xEA\x87\x43\x84\x0E\x4F\x83\x1C\xA6\xEB\x1F\x22\x38\x17\x69\x9B\x72\x12\x95\x48\x71\xB2\x7B\x92\x73\x52\xAB\xE3\x1A\xA5\xD3\xF4\x44\x14\xBA\xC3\x35\xDA\x91\x6C\x7D\xB4\xC2\x00\x07\xD8\x0A\x51\xF1\x0D\x4C\xD9\x7A\xD1\x99\xE6\xA8\x8D\x0A\x80\xA8\x91\xDD\x8A\xA2\x6B\xF6\xDB\xB0\x3E\xC9\x71\xA9\xE0\x39\xC3\xA3\x58\x0D\x87\xD0\xB2\xA7\x9C\xB7\x69\x02\x03\x01\x00\x01\xA3\x82\x01\x1A\x30\x82\x01\x16\x30\x09\x06\x03\x55\x1D\x13\x04\x02\x30\x00\x30\x0B\x06\x03\x55\x1D\x0F\x04\x04\x03\x02\x03\xA8\x30\x1D\x06\x03\x55\x1D\x0E\x04\x16\x04\x14\x34\x91\x6E\x91\x32\xBF\x35\x25\x43\xCC\x28\x74\xEF\x82\xC2\x57\x92\x79\x13\x73\x30\x6D\x06\x03\x55\x1D\x23\x04\x66\x30\x64\x80\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\xA1\x49\xA4\x47\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x82\x01\x00\x30\x1E\x06\x03\x55\x1D\x11\x04\x17\x30\x15\x82\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x13\x06\x03\x55\x1D\x25\x04\x0C\x30\x0A\x06\x08\x2B\x06\x01\x05\x05\x07\x03\x09\x30\x39\x06\x03\x55\x1D\x1F\x04\x32\x30\x30\x30\x2E\xA0\x2C\xA0\x2A\x86\x28\x68\x74\x74\x70\x3A\x2F\x2F\x63\x72\x6C\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x2F\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x63\x72\x6C\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x03\x82\x01\x01\x00\x6D\x78\xD7\x66\x90\xA6\xEB\xDD\xB5\x09\x48\xA4\xDA\x27\xFA\xAC\xB1\xBC\x8F\x8C\xBE\xCC\x8C\x09\xA2\x40\x0D\x6C\x4A\xAE\x72\x22\x1E\xC8\xAF\x6D\xF1\x12\xAF\xD7\x40\x51\x79\xD4\xDD\xB2\x0C\xDB\x97\x84\xB6\x24\xD5\xF5\xA8\xBB\xC0\x4B\xF9\x7F\x71\xF7\xB0\x65\x42\x4A\x7D\xFE\x76\x7E\x05\xD2\x46\xB8\x7D\xB3\x39\x4C\x5C\xB1\xFA\xB9\xEE\x3B\x70\x33\x39\x57\x1A\xB9\x95\x51\x33\x00\x25\x1B\x4C\xAA\xB4\xA7\x55\xAF\x63\x6D\x6F\x88\x17\x6A\x7F\xB0\x97\xDE\x49\x14\x6A\x27\x6A\xB0\x42\x80\xD6\xA6\x9B\xEF\x04\x5E\x11\x7D\xD5\x8E\x54\x20\xA2\x76\xD4\x66\x58\xAC\x9C\x12\xD3\xF5\xCA\x54\x98\xCA\x21\xEC\xC1\x55\xA1\x2F\x68\x0B\x5D\x04\x50\xD2\x5E\x70\x25\xD8\x13\xD9\x44\x51\x0E\x8A\x42\x08\x18\x84\xE6\x61\xCE\x5A\x7D\x7B\x81\x35\x90\xC3\xD4\x9D\x19\xB6\x37\xEE\x8F\x63\x5C\xDA\xD8\xF0\x64\x60\x39\xEB\x9B\x1C\x54\x66\x75\x76\xB5\x0A\x58\xB9\x3F\x91\xE1\x21\x9C\xA0\x50\x15\x97\xB6\x7E\x41\xBC\xD0\xC4\x21\x4C\xF5\xD7\xF0\x13\xF8\x77\xE9\x74\xC4\x8A\x0E\x20\x17\x32\xAE\x38\xC2\xA5\xA8\x62\x85\x17\xB1\xA2\xD3\x22\x9F\x95\xB7\xA3\x4C" -static gnutls_datum_t ocsp_resp2 = - { (unsigned char *)RESP2, sizeof(RESP2) - 1 }; +static gnutls_datum_t ocsp_resp2 = { (unsigned char *)RESP2, + sizeof(RESP2) - 1 }; -# define RESP3 "\x30\x82\x01\xd3\x0a\x01\x00\xa0\x82\x01\xcc\x30\x82\x01\xc8\x06\x09\x2b\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x01\xb9\x30\x82\x01\xb5\x30\x81\x9e\xa2\x16\x04\x14\x50\xea\x73\x89\xdb\x29\xfb\x10\x8f\x9e\xe5\x01\x20\xd4\xde\x79\x99\x48\x83\xf7\x18\x0f\x32\x30\x31\x34\x30\x39\x30\x34\x30\x35\x34\x39\x30\x30\x5a\x30\x73\x30\x71\x30\x49\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04\x14\xed\x48\xad\xdd\xcb\x7b\x00\xe2\x0e\x84\x2a\xa9\xb4\x09\xf1\xac\x30\x34\xcf\x96\x04\x14\x50\xea\x73\x89\xdb\x29\xfb\x10\x8f\x9e\xe5\x01\x20\xd4\xde\x79\x99\x48\x83\xf7\x02\x10\x02\x01\x48\x91\x5d\xfd\x5e\xb6\xe0\x02\x90\xa9\x67\xb0\xe4\x64\x80\x00\x18\x0f\x32\x30\x31\x34\x30\x39\x30\x34\x30\x35\x34\x39\x30\x30\x5a\xa0\x11\x18\x0f\x32\x30\x31\x34\x30\x39\x31\x31\x30\x36\x30\x34\x30\x30\x5a\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x6e\x5e\x5e\x81\xff\x3f\x4d\xc7\x53\xc7\x1b\xf3\xd3\x1d\xdc\x9a\xc7\xce\x77\x2c\x67\x56\x13\x98\x91\x02\x01\x76\xdc\x48\xb2\x1f\x9b\x17\xea\xbf\x2c\x0a\xf5\x1d\x98\x90\x3c\x5f\x55\xc2\xff\x4b\x9a\xbc\xa6\x83\x9e\xab\x2b\xeb\x9d\x01\xea\x3b\x5f\xbe\x03\x29\x70\x63\x2a\xa4\x1d\xa8\xab\x69\xb2\x64\xba\x5d\x73\x91\x5c\x92\xf3\x69\xd4\xc9\x39\x9c\x7c\x7d\xa2\x47\x92\xc2\x56\xfe\xa1\x0d\x4a\x69\xff\xda\x48\xc5\x5e\xd8\xab\x39\x88\x6a\x06\xfa\x07\x57\xd6\x48\xb5\xce\xc9\x5f\xa5\x96\xfe\x37\x18\x5e\x7f\x35\x51\xc1\x9e\x79\x5a\x26\xba\x67\x67\x38\x2a\x80\x75\x42\x99\x68\x3e\xec\x2f\x7e\x2d\xa1\xa6\xbe\x9f\x01\x51\x22\x88\x3a\xc9\x9c\xed\x51\xef\x21\x66\x7e\xa9\xd0\x3f\x13\x9c\xbb\xd2\x94\x14\x6f\x4b\xd9\xc4\xf5\x2c\xf5\x7d\x07\x68\xf3\x51\xac\xda\xc2\x09\x66\xa9\x3d\xed\xad\x02\x4d\x9c\x11\x29\x1a\x54\xfb\x1e\x7e\x36\xf4\xbb\x0d\x08\x8c\x6a\x42\x08\x10\x29\x08\x7c\x56\x0b\x18\x47\xff\x87\x11\xfd\xb2\xfb\xc9\x22\x7f\xe3\x1f\x7b\xf9\x98\xaa\x3a\x32\xb6\x2f\x02\xba\xb6\xc1\xdc\xc3\x5d\xb5\x4b\xae\x5d\x29\x6a\x31\xde\xcd" -static gnutls_datum_t ocsp_resp3 = - { (unsigned char *)RESP3, sizeof(RESP3) - 1 }; +#define RESP3 \ + "\x30\x82\x01\xd3\x0a\x01\x00\xa0\x82\x01\xcc\x30\x82\x01\xc8\x06\x09\x2b\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x01\xb9\x30\x82\x01\xb5\x30\x81\x9e\xa2\x16\x04\x14\x50\xea\x73\x89\xdb\x29\xfb\x10\x8f\x9e\xe5\x01\x20\xd4\xde\x79\x99\x48\x83\xf7\x18\x0f\x32\x30\x31\x34\x30\x39\x30\x34\x30\x35\x34\x39\x30\x30\x5a\x30\x73\x30\x71\x30\x49\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04\x14\xed\x48\xad\xdd\xcb\x7b\x00\xe2\x0e\x84\x2a\xa9\xb4\x09\xf1\xac\x30\x34\xcf\x96\x04\x14\x50\xea\x73\x89\xdb\x29\xfb\x10\x8f\x9e\xe5\x01\x20\xd4\xde\x79\x99\x48\x83\xf7\x02\x10\x02\x01\x48\x91\x5d\xfd\x5e\xb6\xe0\x02\x90\xa9\x67\xb0\xe4\x64\x80\x00\x18\x0f\x32\x30\x31\x34\x30\x39\x30\x34\x30\x35\x34\x39\x30\x30\x5a\xa0\x11\x18\x0f\x32\x30\x31\x34\x30\x39\x31\x31\x30\x36\x30\x34\x30\x30\x5a\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x6e\x5e\x5e\x81\xff\x3f\x4d\xc7\x53\xc7\x1b\xf3\xd3\x1d\xdc\x9a\xc7\xce\x77\x2c\x67\x56\x13\x98\x91\x02\x01\x76\xdc\x48\xb2\x1f\x9b\x17\xea\xbf\x2c\x0a\xf5\x1d\x98\x90\x3c\x5f\x55\xc2\xff\x4b\x9a\xbc\xa6\x83\x9e\xab\x2b\xeb\x9d\x01\xea\x3b\x5f\xbe\x03\x29\x70\x63\x2a\xa4\x1d\xa8\xab\x69\xb2\x64\xba\x5d\x73\x91\x5c\x92\xf3\x69\xd4\xc9\x39\x9c\x7c\x7d\xa2\x47\x92\xc2\x56\xfe\xa1\x0d\x4a\x69\xff\xda\x48\xc5\x5e\xd8\xab\x39\x88\x6a\x06\xfa\x07\x57\xd6\x48\xb5\xce\xc9\x5f\xa5\x96\xfe\x37\x18\x5e\x7f\x35\x51\xc1\x9e\x79\x5a\x26\xba\x67\x67\x38\x2a\x80\x75\x42\x99\x68\x3e\xec\x2f\x7e\x2d\xa1\xa6\xbe\x9f\x01\x51\x22\x88\x3a\xc9\x9c\xed\x51\xef\x21\x66\x7e\xa9\xd0\x3f\x13\x9c\xbb\xd2\x94\x14\x6f\x4b\xd9\xc4\xf5\x2c\xf5\x7d\x07\x68\xf3\x51\xac\xda\xc2\x09\x66\xa9\x3d\xed\xad\x02\x4d\x9c\x11\x29\x1a\x54\xfb\x1e\x7e\x36\xf4\xbb\x0d\x08\x8c\x6a\x42\x08\x10\x29\x08\x7c\x56\x0b\x18\x47\xff\x87\x11\xfd\xb2\xfb\xc9\x22\x7f\xe3\x1f\x7b\xf9\x98\xaa\x3a\x32\xb6\x2f\x02\xba\xb6\xc1\xdc\xc3\x5d\xb5\x4b\xae\x5d\x29\x6a\x31\xde\xcd" +static gnutls_datum_t ocsp_resp3 = { (unsigned char *)RESP3, + sizeof(RESP3) - 1 }; static void check_response(gnutls_session_t session, void *priv) { @@ -77,8 +80,8 @@ static void check_response(gnutls_session_t session, void *priv) fail("not expected response, but received one\n"); } - if (resp.size != exp_resp->size - || memcmp(resp.data, exp_resp->data, resp.size) != 0) { + if (resp.size != exp_resp->size || + memcmp(resp.data, exp_resp->data, resp.size) != 0) { fail("did not receive the expected response\n"); } } @@ -103,7 +106,7 @@ void doit(void) char certname2[TMPNAME_SIZE], ocspname2[TMPNAME_SIZE]; char certname3[TMPNAME_SIZE], ocspname3[TMPNAME_SIZE]; FILE *fp; - unsigned index1, index2, index3; /* indexes of certs */ + unsigned index1, index2, index3; /* indexes of certs */ global_init(); gnutls_global_set_time_function(mytime); @@ -123,17 +126,14 @@ void doit(void) fp = fopen(certfile1, "wb"); if (fp == NULL) fail("error in fopen\n"); - assert(fwrite - (server_localhost_ca3_cert_chain_pem, 1, - strlen(server_localhost_ca3_cert_chain_pem), fp) > 0); - assert(fwrite - (server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), - fp) > 0); + assert(fwrite(server_localhost_ca3_cert_chain_pem, 1, + strlen(server_localhost_ca3_cert_chain_pem), fp) > 0); + assert(fwrite(server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), + fp) > 0); fclose(fp); - ret = gnutls_certificate_set_x509_key_file2(xcred, certfile1, certfile1, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_certificate_set_x509_key_file2( + xcred, certfile1, certfile1, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) fail("set_x509_key_file failed: %s\n", gnutls_strerror(ret)); index1 = ret; @@ -144,17 +144,14 @@ void doit(void) fp = fopen(certfile2, "wb"); if (fp == NULL) fail("error in fopen\n"); - assert(fwrite - (server_localhost6_ca3_cert_chain_pem, 1, - strlen(server_localhost6_ca3_cert_chain_pem), fp) > 0); - assert(fwrite - (server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), - fp) > 0); + assert(fwrite(server_localhost6_ca3_cert_chain_pem, 1, + strlen(server_localhost6_ca3_cert_chain_pem), fp) > 0); + assert(fwrite(server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), + fp) > 0); fclose(fp); - ret = gnutls_certificate_set_x509_key_file2(xcred, certfile2, certfile2, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_certificate_set_x509_key_file2( + xcred, certfile2, certfile2, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) fail("set_x509_key_file failed: %s\n", gnutls_strerror(ret)); index2 = ret; @@ -162,12 +159,10 @@ void doit(void) fp = fopen(certfile2, "wb"); if (fp == NULL) fail("error in fopen\n"); - assert(fwrite - (server_localhost6_ca3_cert_chain_pem, 1, - strlen(server_localhost6_ca3_cert_chain_pem), fp) > 0); - assert(fwrite - (server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), - fp) > 0); + assert(fwrite(server_localhost6_ca3_cert_chain_pem, 1, + strlen(server_localhost6_ca3_cert_chain_pem), fp) > 0); + assert(fwrite(server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), + fp) > 0); fclose(fp); /* set ECC cert */ @@ -180,9 +175,8 @@ void doit(void) assert(fwrite(ecc_key, 1, strlen(ecc_key), fp) > 0); fclose(fp); - ret = gnutls_certificate_set_x509_key_file2(xcred, certfile3, certfile3, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_certificate_set_x509_key_file2( + xcred, certfile3, certfile3, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) fail("set_x509_key_file failed: %s\n", gnutls_strerror(ret)); index3 = ret; @@ -190,12 +184,10 @@ void doit(void) fp = fopen(certfile3, "wb"); if (fp == NULL) fail("error in fopen\n"); - assert(fwrite - (server_localhost6_ca3_cert_chain_pem, 1, - strlen(server_localhost6_ca3_cert_chain_pem), fp) > 0); - assert(fwrite - (server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), - fp) > 0); + assert(fwrite(server_localhost6_ca3_cert_chain_pem, 1, + strlen(server_localhost6_ca3_cert_chain_pem), fp) > 0); + assert(fwrite(server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), + fp) > 0); fclose(fp); /* set OCSP response1 */ @@ -206,20 +198,18 @@ void doit(void) assert(fwrite(ocsp_resp1.data, 1, ocsp_resp1.size, fp) > 0); fclose(fp); - ret = - gnutls_certificate_set_ocsp_status_request_file(xcred, ocspfile1, - index1); + ret = gnutls_certificate_set_ocsp_status_request_file(xcred, ocspfile1, + index1); if (ret != GNUTLS_E_OCSP_MISMATCH_WITH_CERTS) fail("unexpected error in setting invalid ocsp file: %s\n", gnutls_strerror(ret)); - gnutls_certificate_set_flags(xcred, - GNUTLS_CERTIFICATE_API_V2 | - GNUTLS_CERTIFICATE_SKIP_OCSP_RESPONSE_CHECK); + gnutls_certificate_set_flags( + xcred, GNUTLS_CERTIFICATE_API_V2 | + GNUTLS_CERTIFICATE_SKIP_OCSP_RESPONSE_CHECK); - ret = - gnutls_certificate_set_ocsp_status_request_file(xcred, ocspfile1, - index1); + ret = gnutls_certificate_set_ocsp_status_request_file(xcred, ocspfile1, + index1); if (ret < 0) fail("ocsp file set failed: %s\n", gnutls_strerror(ret)); @@ -231,9 +221,8 @@ void doit(void) assert(fwrite(ocsp_resp2.data, 1, ocsp_resp2.size, fp) > 0); fclose(fp); - ret = - gnutls_certificate_set_ocsp_status_request_file(xcred, ocspfile2, - index2); + ret = gnutls_certificate_set_ocsp_status_request_file(xcred, ocspfile2, + index2); if (ret < 0) fail("ocsp file set failed: %s\n", gnutls_strerror(ret)); @@ -245,15 +234,15 @@ void doit(void) assert(fwrite(ocsp_resp3.data, 1, ocsp_resp3.size, fp) > 0); fclose(fp); - ret = - gnutls_certificate_set_ocsp_status_request_file(xcred, ocspfile3, - index3); + ret = gnutls_certificate_set_ocsp_status_request_file(xcred, ocspfile3, + index3); if (ret < 0) fail("ocsp file set failed: %s\n", gnutls_strerror(ret)); /* set an OCSP response outside the bounds */ - assert(gnutls_certificate_set_ocsp_status_request_file - (xcred, ocspfile3, 34) == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); + assert(gnutls_certificate_set_ocsp_status_request_file(xcred, ocspfile3, + 34) == + GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); /* make sure that our invalid OCSP responses are not considered in verification */ @@ -263,9 +252,8 @@ void doit(void) GNUTLS_VERIFY_DISABLE_CRL_CHECKS) fail("error in gnutls_certificate_set_verify_flags\n"); - ret = - gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("error in setting trust cert: %s\n", gnutls_strerror(ret)); } @@ -276,9 +264,10 @@ void doit(void) test_cli_serv(xcred, clicred, "NORMAL:-ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.2", "localhost6", &ocsp_resp2, check_response, NULL); - test_cli_serv(xcred, clicred, - "NORMAL:-ECDHE-RSA:-RSA:-DHE-RSA:-VERS-TLS-ALL:+VERS-TLS1.2", - NULL, &ocsp_resp3, check_response, NULL); + test_cli_serv( + xcred, clicred, + "NORMAL:-ECDHE-RSA:-RSA:-DHE-RSA:-VERS-TLS-ALL:+VERS-TLS1.2", + NULL, &ocsp_resp3, check_response, NULL); test_cli_serv(xcred, clicred, "NORMAL:-ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.3", @@ -286,9 +275,10 @@ void doit(void) test_cli_serv(xcred, clicred, "NORMAL:-ECDHE-ECDSA:-VERS-TLS-ALL:+VERS-TLS1.3", "localhost6", &ocsp_resp2, check_response, NULL); - test_cli_serv(xcred, clicred, - "NORMAL:-SIGN-ALL:+SIGN-ECDSA-SECP256R1-SHA256:-ECDHE-RSA:-DHE-RSA:-RSA:-VERS-TLS-ALL:+VERS-TLS1.3", - NULL, &ocsp_resp3, check_response, NULL); + test_cli_serv( + xcred, clicred, + "NORMAL:-SIGN-ALL:+SIGN-ECDSA-SECP256R1-SHA256:-ECDHE-RSA:-DHE-RSA:-RSA:-VERS-TLS-ALL:+VERS-TLS1.3", + NULL, &ocsp_resp3, check_response, NULL); gnutls_certificate_free_credentials(xcred); gnutls_certificate_free_credentials(clicred); diff --git a/tests/set_x509_ocsp_multi_pem.c b/tests/set_x509_ocsp_multi_pem.c index 3deff6337a..a1fe5b717f 100644 --- a/tests/set_x509_ocsp_multi_pem.c +++ b/tests/set_x509_ocsp_multi_pem.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -31,14 +31,14 @@ #ifdef ENABLE_OCSP -# include "cert-common.h" -# include "ocsp-common.h" -# include "utils.h" +#include "cert-common.h" +#include "ocsp-common.h" +#include "utils.h" /* Tests whether setting an OCSP response to a server with multiple * certificate sets, is working as expected */ -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = OCSP_RESP_DATE; if (t) @@ -64,8 +64,8 @@ static void check_response(gnutls_session_t session, void *priv) fail("not expected response, but received one\n"); } - if (resp.size != exp_resp->size - || memcmp(resp.data, exp_resp->data, resp.size) != 0) { + if (resp.size != exp_resp->size || + memcmp(resp.data, exp_resp->data, resp.size) != 0) { fail("did not receive the expected response\n"); } @@ -76,9 +76,9 @@ static void check_response(gnutls_session_t session, void *priv) fail("no intermediate response was received\n"); } - if (resp.size != ocsp_subca3_unknown.size - || memcmp(resp.data, ocsp_subca3_unknown.data, - resp.size) != 0) { + if (resp.size != ocsp_subca3_unknown.size || + memcmp(resp.data, ocsp_subca3_unknown.data, resp.size) != + 0) { fail("did not receive the expected intermediate response\n"); } } @@ -88,9 +88,8 @@ static void check_response(gnutls_session_t session, void *priv) fail("did not receive the expected value (%d)\n", ret); } - ret = - gnutls_ocsp_status_request_is_checked(session, - GNUTLS_OCSP_SR_IS_AVAIL); + ret = gnutls_ocsp_status_request_is_checked(session, + GNUTLS_OCSP_SR_IS_AVAIL); if (ret == 0) { fail("did not receive the expected value (%d)\n", ret); } @@ -131,17 +130,14 @@ void doit(void) fp = fopen(certfile1, "wb"); if (fp == NULL) fail("error in fopen\n"); - assert(fwrite - (server_localhost_ca3_cert_chain_pem, 1, - strlen(server_localhost_ca3_cert_chain_pem), fp) > 0); - assert(fwrite - (server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), - fp) > 0); + assert(fwrite(server_localhost_ca3_cert_chain_pem, 1, + strlen(server_localhost_ca3_cert_chain_pem), fp) > 0); + assert(fwrite(server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), + fp) > 0); fclose(fp); - ret = gnutls_certificate_set_x509_key_file2(xcred, certfile1, certfile1, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_certificate_set_x509_key_file2( + xcred, certfile1, certfile1, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) fail("set_x509_key_file failed: %s\n", gnutls_strerror(ret)); index1 = ret; @@ -151,21 +147,16 @@ void doit(void) fp = fopen(ocspfile1, "wb"); if (fp == NULL) fail("error in fopen\n"); - assert(fwrite - (ocsp_subca3_unknown_pem.data, 1, ocsp_subca3_unknown_pem.size, - fp) > 0); - assert(fwrite - (ocsp_ca3_localhost_unknown_pem.data, 1, - ocsp_ca3_localhost_unknown_pem.size, fp) > 0); - assert(fwrite - (ocsp_ca3_localhost6_unknown_pem.data, 1, - ocsp_ca3_localhost6_unknown_pem.size, fp) > 0); + assert(fwrite(ocsp_subca3_unknown_pem.data, 1, + ocsp_subca3_unknown_pem.size, fp) > 0); + assert(fwrite(ocsp_ca3_localhost_unknown_pem.data, 1, + ocsp_ca3_localhost_unknown_pem.size, fp) > 0); + assert(fwrite(ocsp_ca3_localhost6_unknown_pem.data, 1, + ocsp_ca3_localhost6_unknown_pem.size, fp) > 0); fclose(fp); - ret = - gnutls_certificate_set_ocsp_status_request_file2(xcred, ocspfile1, - index1, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_ocsp_status_request_file2( + xcred, ocspfile1, index1, GNUTLS_X509_FMT_PEM); if (ret != GNUTLS_E_OCSP_MISMATCH_WITH_CERTS) fail("ocsp file set failed: %s\n", gnutls_strerror(ret)); @@ -174,24 +165,19 @@ void doit(void) fp = fopen(ocspfile1, "wb"); if (fp == NULL) fail("error in fopen\n"); - assert(fwrite - (ocsp_subca3_unknown_pem.data, 1, ocsp_subca3_unknown_pem.size, - fp) > 0); - assert(fwrite - (ocsp_ca3_localhost_unknown_pem.data, 1, - ocsp_ca3_localhost_unknown_pem.size, fp) > 0); + assert(fwrite(ocsp_subca3_unknown_pem.data, 1, + ocsp_subca3_unknown_pem.size, fp) > 0); + assert(fwrite(ocsp_ca3_localhost_unknown_pem.data, 1, + ocsp_ca3_localhost_unknown_pem.size, fp) > 0); fclose(fp); - ret = - gnutls_certificate_set_ocsp_status_request_file2(xcred, ocspfile1, - index1, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_ocsp_status_request_file2( + xcred, ocspfile1, index1, GNUTLS_X509_FMT_PEM); if (ret < 0) fail("ocsp file set failed: %s\n", gnutls_strerror(ret)); - ret = - gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("error in setting trust cert: %s\n", gnutls_strerror(ret)); } diff --git a/tests/set_x509_ocsp_multi_unknown.c b/tests/set_x509_ocsp_multi_unknown.c index ddff1128aa..f29d472f74 100644 --- a/tests/set_x509_ocsp_multi_unknown.c +++ b/tests/set_x509_ocsp_multi_unknown.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -31,14 +31,14 @@ #ifdef ENABLE_OCSP -# include "cert-common.h" -# include "ocsp-common.h" -# include "utils.h" +#include "cert-common.h" +#include "ocsp-common.h" +#include "utils.h" /* Tests whether setting an OCSP response to a server with multiple * certificate sets, is working as expected */ -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = OCSP_RESP_DATE; if (t) @@ -64,8 +64,8 @@ static void check_response(gnutls_session_t session, void *priv) fail("not expected response, but received one\n"); } - if (resp.size != exp_resp->size - || memcmp(resp.data, exp_resp->data, resp.size) != 0) { + if (resp.size != exp_resp->size || + memcmp(resp.data, exp_resp->data, resp.size) != 0) { fail("did not receive the expected response\n"); } @@ -76,9 +76,9 @@ static void check_response(gnutls_session_t session, void *priv) fail("no intermediate response was received\n"); } - if (resp.size != ocsp_subca3_unknown.size - || memcmp(resp.data, ocsp_subca3_unknown.data, - resp.size) != 0) { + if (resp.size != ocsp_subca3_unknown.size || + memcmp(resp.data, ocsp_subca3_unknown.data, resp.size) != + 0) { fail("did not receive the expected intermediate response\n"); } } @@ -103,7 +103,7 @@ void doit(void) char certname2[TMPNAME_SIZE], ocspname2[TMPNAME_SIZE]; char ocspname3[TMPNAME_SIZE]; FILE *fp; - unsigned index1, index2; /* indexes of certs */ + unsigned index1, index2; /* indexes of certs */ global_init(); gnutls_global_set_time_function(mytime); @@ -123,17 +123,14 @@ void doit(void) fp = fopen(certfile1, "wb"); if (fp == NULL) fail("error in fopen\n"); - assert(fwrite - (server_localhost_ca3_cert_chain_pem, 1, - strlen(server_localhost_ca3_cert_chain_pem), fp) > 0); - assert(fwrite - (server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), - fp) > 0); + assert(fwrite(server_localhost_ca3_cert_chain_pem, 1, + strlen(server_localhost_ca3_cert_chain_pem), fp) > 0); + assert(fwrite(server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), + fp) > 0); fclose(fp); - ret = gnutls_certificate_set_x509_key_file2(xcred, certfile1, certfile1, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_certificate_set_x509_key_file2( + xcred, certfile1, certfile1, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) fail("set_x509_key_file failed: %s\n", gnutls_strerror(ret)); index1 = ret; @@ -144,17 +141,14 @@ void doit(void) fp = fopen(certfile2, "wb"); if (fp == NULL) fail("error in fopen\n"); - assert(fwrite - (server_localhost6_ca3_cert_chain_pem, 1, - strlen(server_localhost6_ca3_cert_chain_pem), fp) > 0); - assert(fwrite - (server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), - fp) > 0); + assert(fwrite(server_localhost6_ca3_cert_chain_pem, 1, + strlen(server_localhost6_ca3_cert_chain_pem), fp) > 0); + assert(fwrite(server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), + fp) > 0); fclose(fp); - ret = gnutls_certificate_set_x509_key_file2(xcred, certfile2, certfile2, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_certificate_set_x509_key_file2( + xcred, certfile2, certfile2, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) fail("set_x509_key_file failed: %s\n", gnutls_strerror(ret)); index2 = ret; @@ -164,14 +158,12 @@ void doit(void) fp = fopen(ocspfile1, "wb"); if (fp == NULL) fail("error in fopen\n"); - assert(fwrite - (ocsp_ca3_localhost_unknown.data, 1, - ocsp_ca3_localhost_unknown.size, fp) > 0); + assert(fwrite(ocsp_ca3_localhost_unknown.data, 1, + ocsp_ca3_localhost_unknown.size, fp) > 0); fclose(fp); - ret = - gnutls_certificate_set_ocsp_status_request_file(xcred, ocspfile1, - index1); + ret = gnutls_certificate_set_ocsp_status_request_file(xcred, ocspfile1, + index1); if (ret < 0) fail("ocsp file set failed: %s\n", gnutls_strerror(ret)); @@ -180,14 +172,12 @@ void doit(void) fp = fopen(ocspfile2, "wb"); if (fp == NULL) fail("error in fopen\n"); - assert(fwrite - (ocsp_ca3_localhost6_unknown.data, 1, - ocsp_ca3_localhost6_unknown.size, fp) > 0); + assert(fwrite(ocsp_ca3_localhost6_unknown.data, 1, + ocsp_ca3_localhost6_unknown.size, fp) > 0); fclose(fp); - ret = - gnutls_certificate_set_ocsp_status_request_file(xcred, ocspfile2, - index2); + ret = gnutls_certificate_set_ocsp_status_request_file(xcred, ocspfile2, + index2); if (ret < 0) fail("ocsp file set failed: %s\n", gnutls_strerror(ret)); @@ -196,29 +186,25 @@ void doit(void) fp = fopen(ocspfile3, "wb"); if (fp == NULL) fail("error in fopen\n"); - assert(fwrite - (ocsp_ca3_localhost_unknown_sha1.data, 1, - ocsp_ca3_localhost_unknown_sha1.size, fp) > 0); + assert(fwrite(ocsp_ca3_localhost_unknown_sha1.data, 1, + ocsp_ca3_localhost_unknown_sha1.size, fp) > 0); fclose(fp); - ret = - gnutls_certificate_set_ocsp_status_request_file(xcred, ocspfile3, - index1); + ret = gnutls_certificate_set_ocsp_status_request_file(xcred, ocspfile3, + index1); if (ret != 0) fail("setting duplicate didn't succeed as expected: %s\n", gnutls_strerror(ret)); - ret = - gnutls_certificate_set_ocsp_status_request_file(xcred, ocspfile3, - index2); + ret = gnutls_certificate_set_ocsp_status_request_file(xcred, ocspfile3, + index2); if (ret != GNUTLS_E_OCSP_MISMATCH_WITH_CERTS) fail("setting invalid didn't fail as expected: %s\n", gnutls_strerror(ret)); /* re-set the previous duplicate set for index1 to the expected */ - ret = - gnutls_certificate_set_ocsp_status_request_file(xcred, ocspfile1, - index1); + ret = gnutls_certificate_set_ocsp_status_request_file(xcred, ocspfile1, + index1); if (ret < 0) fail("ocsp file set failed: %s\n", gnutls_strerror(ret)); @@ -226,25 +212,22 @@ void doit(void) fp = fopen(ocspfile3, "wb"); if (fp == NULL) fail("error in fopen\n"); - assert(fwrite(ocsp_subca3_unknown.data, 1, ocsp_subca3_unknown.size, fp) - > 0); + assert(fwrite(ocsp_subca3_unknown.data, 1, ocsp_subca3_unknown.size, + fp) > 0); fclose(fp); - ret = - gnutls_certificate_set_ocsp_status_request_file(xcred, ocspfile3, - index1); + ret = gnutls_certificate_set_ocsp_status_request_file(xcred, ocspfile3, + index1); if (ret < 0) fail("setting subCA failed: %s\n", gnutls_strerror(ret)); - ret = - gnutls_certificate_set_ocsp_status_request_file(xcred, ocspfile3, - index2); + ret = gnutls_certificate_set_ocsp_status_request_file(xcred, ocspfile3, + index2); if (ret < 0) fail("setting subCA failed: %s\n", gnutls_strerror(ret)); - ret = - gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("error in setting trust cert: %s\n", gnutls_strerror(ret)); } diff --git a/tests/set_x509_pkcs12_key.c b/tests/set_x509_pkcs12_key.c index 69ca38ddf8..0461a0d325 100644 --- a/tests/set_x509_pkcs12_key.c +++ b/tests/set_x509_pkcs12_key.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,7 +33,7 @@ #include "cert-common.h" #include "utils.h" -static void compare(const gnutls_datum_t * der, const void *ipem) +static void compare(const gnutls_datum_t *der, const void *ipem) { gnutls_datum_t pem = { (void *)ipem, strlen((char *)ipem) }; gnutls_datum_t new_der; @@ -44,8 +44,8 @@ static void compare(const gnutls_datum_t * der, const void *ipem) fail("error: %s\n", gnutls_strerror(ret)); } - if (der->size != new_der.size - || memcmp(der->data, new_der.data, der->size) != 0) { + if (der->size != new_der.size || + memcmp(der->data, new_der.data, der->size) != 0) { fail("error in %d: %s\n", __LINE__, "cert don't match"); exit(1); } @@ -70,20 +70,19 @@ void doit(void) assert(gnutls_certificate_allocate_credentials(&xcred) >= 0); /* this will fail */ - ret = gnutls_certificate_set_x509_simple_pkcs12_file(xcred, certfile, - GNUTLS_X509_FMT_PEM, - "1234"); + ret = gnutls_certificate_set_x509_simple_pkcs12_file( + xcred, certfile, GNUTLS_X509_FMT_PEM, "1234"); if (ret != GNUTLS_E_FILE_ERROR) - fail("gnutls_certificate_set_x509_simple_pkcs12_file failed: %s\n", gnutls_strerror(ret)); + fail("gnutls_certificate_set_x509_simple_pkcs12_file failed: %s\n", + gnutls_strerror(ret)); gnutls_certificate_free_credentials(xcred); assert(gnutls_certificate_allocate_credentials(&clicred) >= 0); assert(gnutls_certificate_allocate_credentials(&xcred) >= 0); - ret = - gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) fail("set_x509_trust_file failed: %s\n", gnutls_strerror(ret)); @@ -93,16 +92,15 @@ void doit(void) if (fp == NULL) fail("error in fopen\n"); - assert(fwrite - (server_ca3_pkcs12_pem, 1, strlen((char *)server_ca3_pkcs12_pem), - fp) > 0); + assert(fwrite(server_ca3_pkcs12_pem, 1, + strlen((char *)server_ca3_pkcs12_pem), fp) > 0); fclose(fp); - ret = gnutls_certificate_set_x509_simple_pkcs12_file(xcred, certfile, - GNUTLS_X509_FMT_PEM, - "1234"); + ret = gnutls_certificate_set_x509_simple_pkcs12_file( + xcred, certfile, GNUTLS_X509_FMT_PEM, "1234"); if (ret < 0) - fail("gnutls_certificate_set_x509_simple_pkcs12_file failed: %s\n", gnutls_strerror(ret)); + fail("gnutls_certificate_set_x509_simple_pkcs12_file failed: %s\n", + gnutls_strerror(ret)); /* verify whether the stored certificate match the ones we have */ ret = gnutls_certificate_get_crt_raw(xcred, 0, 0, &tcert); @@ -115,7 +113,8 @@ void doit(void) remove(certfile); - test_cli_serv(xcred, clicred, "NORMAL", "localhost", NULL, NULL, NULL); /* the DNS name of the first cert */ + test_cli_serv(xcred, clicred, "NORMAL", "localhost", NULL, NULL, + NULL); /* the DNS name of the first cert */ gnutls_certificate_free_credentials(xcred); gnutls_certificate_free_credentials(clicred); diff --git a/tests/setcredcrash.c b/tests/setcredcrash.c index 90a933f1ec..d88abd39d9 100644 --- a/tests/setcredcrash.c +++ b/tests/setcredcrash.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include diff --git a/tests/sign-is-secure.c b/tests/sign-is-secure.c index bb95ae55aa..924e51cdd5 100644 --- a/tests/sign-is-secure.c +++ b/tests/sign-is-secure.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -32,46 +32,46 @@ #include "utils.h" -#define CHECK_SECURE_SIG(sig) \ - ret = gnutls_sign_is_secure2(sig, 0); \ - if (ret == 0) { \ +#define CHECK_SECURE_SIG(sig) \ + ret = gnutls_sign_is_secure2(sig, 0); \ + if (ret == 0) { \ fail("error testing %d/%s\n", sig, gnutls_sign_get_name(sig)); \ - } \ - ret = gnutls_sign_is_secure(sig); \ - if (ret == 0) { \ + } \ + ret = gnutls_sign_is_secure(sig); \ + if (ret == 0) { \ fail("error testing %d/%s\n", sig, gnutls_sign_get_name(sig)); \ } -#define CHECK_INSECURE_SIG(sig) \ - ret = gnutls_sign_is_secure2(sig, 0); \ - if (ret != 0) { \ +#define CHECK_INSECURE_SIG(sig) \ + ret = gnutls_sign_is_secure2(sig, 0); \ + if (ret != 0) { \ fail("error testing %d/%s\n", sig, gnutls_sign_get_name(sig)); \ - } \ - ret = gnutls_sign_is_secure2(sig, GNUTLS_SIGN_FLAG_SECURE_FOR_CERTS); \ - if (ret != 0) { \ + } \ + ret = gnutls_sign_is_secure2(sig, GNUTLS_SIGN_FLAG_SECURE_FOR_CERTS); \ + if (ret != 0) { \ fail("error testing %d/%s\n", sig, gnutls_sign_get_name(sig)); \ - } \ - ret = gnutls_sign_is_secure(sig); \ - if (ret != 0) { \ + } \ + ret = gnutls_sign_is_secure(sig); \ + if (ret != 0) { \ fail("error testing %d/%s\n", sig, gnutls_sign_get_name(sig)); \ } #ifndef ALLOW_SHA1 -# define CHECK_INSECURE_FOR_CERTS_SIG(sig) \ - ret = gnutls_sign_is_secure2(sig, 0); \ - if (ret == 0) { \ +#define CHECK_INSECURE_FOR_CERTS_SIG(sig) \ + ret = gnutls_sign_is_secure2(sig, 0); \ + if (ret == 0) { \ fail("error testing %d/%s\n", sig, gnutls_sign_get_name(sig)); \ - } \ - ret = gnutls_sign_is_secure2(sig, GNUTLS_SIGN_FLAG_SECURE_FOR_CERTS); \ - if (ret != 0) { \ + } \ + ret = gnutls_sign_is_secure2(sig, GNUTLS_SIGN_FLAG_SECURE_FOR_CERTS); \ + if (ret != 0) { \ fail("error testing %d/%s\n", sig, gnutls_sign_get_name(sig)); \ - } \ - ret = gnutls_sign_is_secure(sig); \ - if (ret == 0) { \ + } \ + ret = gnutls_sign_is_secure(sig); \ + if (ret == 0) { \ fail("error testing %d/%s\n", sig, gnutls_sign_get_name(sig)); \ } #else -# define CHECK_INSECURE_FOR_CERTS_SIG(sig) +#define CHECK_INSECURE_FOR_CERTS_SIG(sig) #endif void doit(void) @@ -89,12 +89,12 @@ void doit(void) for (i = 1; i <= GNUTLS_SIGN_MAX; i++) { #ifndef ALLOW_SHA1 - if (i == GNUTLS_SIGN_RSA_SHA1 || i == GNUTLS_SIGN_DSA_SHA1 - || i == GNUTLS_SIGN_ECDSA_SHA1) + if (i == GNUTLS_SIGN_RSA_SHA1 || i == GNUTLS_SIGN_DSA_SHA1 || + i == GNUTLS_SIGN_ECDSA_SHA1) continue; #endif - if (i == GNUTLS_SIGN_GOST_94 || i == GNUTLS_SIGN_RSA_MD5 - || i == GNUTLS_SIGN_RSA_MD2 || i == GNUTLS_SIGN_UNKNOWN) + if (i == GNUTLS_SIGN_GOST_94 || i == GNUTLS_SIGN_RSA_MD5 || + i == GNUTLS_SIGN_RSA_MD2 || i == GNUTLS_SIGN_UNKNOWN) continue; /* skip any unused elements */ if (gnutls_sign_algorithm_get_name(i) == NULL) diff --git a/tests/sign-pk-api.c b/tests/sign-pk-api.c index bf8ad7b45f..89edca4c7c 100644 --- a/tests/sign-pk-api.c +++ b/tests/sign-pk-api.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -32,10 +32,11 @@ #include "utils.h" -#define ALGO_MATCHES(sig, pk, val) \ - ret = gnutls_sign_supports_pk_algorithm(sig, pk); \ - if (ret != val) { \ - fail("error testing %s with %s\n", gnutls_sign_get_name(sig), gnutls_pk_get_name(pk)); \ +#define ALGO_MATCHES(sig, pk, val) \ + ret = gnutls_sign_supports_pk_algorithm(sig, pk); \ + if (ret != val) { \ + fail("error testing %s with %s\n", gnutls_sign_get_name(sig), \ + gnutls_pk_get_name(pk)); \ } void doit(void) @@ -63,5 +64,4 @@ void doit(void) ALGO_MATCHES(GNUTLS_SIGN_RSA_SHA256, GNUTLS_PK_RSA_PSS, 0); ALGO_MATCHES(GNUTLS_SIGN_RSA_SHA384, GNUTLS_PK_RSA_PSS, 0); ALGO_MATCHES(GNUTLS_SIGN_RSA_SHA512, GNUTLS_PK_RSA_PSS, 0); - } diff --git a/tests/sign-verify-data-newapi.c b/tests/sign-verify-data-newapi.c index 2371fb3553..0a86e722d6 100644 --- a/tests/sign-verify-data-newapi.c +++ b/tests/sign-verify-data-newapi.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -29,9 +29,9 @@ #include #include #ifndef _WIN32 -# include -# include -# include +#include +#include +#include #endif #include #include @@ -50,22 +50,19 @@ static void tls_log_func(int level, const char *str) /* sha1 hash of "hello" string */ const gnutls_datum_t raw_data = { - (void *) - "\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" - "\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", + (void *)"\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" + "\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", 20 }; const gnutls_datum_t invalid_raw_data = { - (void *) - "\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" - "\xde\x0f\x3b\x48\x3c\xd9\xae\xa9\x43\x4d", + (void *)"\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" + "\xde\x0f\x3b\x48\x3c\xd9\xae\xa9\x43\x4d", 20 }; #define tests common_key_tests -#define testfail(fmt, ...) \ - fail("%s: "fmt, tests[i].name, ##__VA_ARGS__) +#define testfail(fmt, ...) fail("%s: " fmt, tests[i].name, ##__VA_ARGS__) void doit(void) { @@ -98,10 +95,8 @@ void doit(void) if (ret < 0) testfail("gnutls_pubkey_init\n"); - ret = - gnutls_privkey_import_x509_raw(privkey, &tests[i].key, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_privkey_import_x509_raw( + privkey, &tests[i].key, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) testfail("gnutls_privkey_import_x509\n"); @@ -114,9 +109,8 @@ void doit(void) if (ret < 0) testfail("gnutls_x509_crt_init\n"); - ret = - gnutls_x509_crt_import(crt, &tests[i].cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(crt, &tests[i].cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) testfail("gnutls_x509_crt_import\n"); @@ -124,45 +118,40 @@ void doit(void) if (ret < 0) testfail("gnutls_x509_pubkey_import\n"); - ret = - gnutls_pubkey_verify_data2(pubkey, tests[i].sigalgo, 0, - &raw_data, &signature); + ret = gnutls_pubkey_verify_data2(pubkey, tests[i].sigalgo, 0, + &raw_data, &signature); if (ret < 0) testfail("gnutls_x509_pubkey_verify_data2\n"); /* Test functionality of GNUTLS_VERIFY_DISABLE_CA_SIGN flag (see issue #754) */ - ret = - gnutls_pubkey_verify_data2(pubkey, tests[i].sigalgo, - GNUTLS_VERIFY_DISABLE_CA_SIGN, - &raw_data, &signature); + ret = gnutls_pubkey_verify_data2(pubkey, tests[i].sigalgo, + GNUTLS_VERIFY_DISABLE_CA_SIGN, + &raw_data, &signature); if (ret < 0) testfail("gnutls_x509_pubkey_verify_data2\n"); /* should fail */ - ret = - gnutls_pubkey_verify_data2(pubkey, tests[i].sigalgo, 0, - &invalid_raw_data, &signature); + ret = gnutls_pubkey_verify_data2(pubkey, tests[i].sigalgo, 0, + &invalid_raw_data, &signature); if (ret != GNUTLS_E_PK_SIG_VERIFY_FAILED) - testfail - ("gnutls_x509_pubkey_verify_data2-2 (hashed data)\n"); - - sign_algo = - gnutls_pk_to_sign(gnutls_pubkey_get_pk_algorithm - (pubkey, NULL), tests[i].digest); - ret = - gnutls_pubkey_verify_data2(pubkey, sign_algo, 0, - &raw_data, &signature); + testfail( + "gnutls_x509_pubkey_verify_data2-2 (hashed data)\n"); + + sign_algo = gnutls_pk_to_sign( + gnutls_pubkey_get_pk_algorithm(pubkey, NULL), + tests[i].digest); + ret = gnutls_pubkey_verify_data2(pubkey, sign_algo, 0, + &raw_data, &signature); if (ret < 0) - testfail - ("gnutls_x509_pubkey_verify_data2-1 (hashed data)\n"); + testfail( + "gnutls_x509_pubkey_verify_data2-1 (hashed data)\n"); /* should fail */ - ret = - gnutls_pubkey_verify_data2(pubkey, sign_algo, 0, - &invalid_raw_data, &signature); + ret = gnutls_pubkey_verify_data2(pubkey, sign_algo, 0, + &invalid_raw_data, &signature); if (ret != GNUTLS_E_PK_SIG_VERIFY_FAILED) - testfail - ("gnutls_x509_pubkey_verify_data2-2 (hashed data)\n"); + testfail( + "gnutls_x509_pubkey_verify_data2-2 (hashed data)\n"); /* test the raw interface */ gnutls_free(signature.data); diff --git a/tests/sign-verify-data.c b/tests/sign-verify-data.c index f358a38110..7422baca87 100644 --- a/tests/sign-verify-data.c +++ b/tests/sign-verify-data.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -28,9 +28,9 @@ #include #include #ifndef _WIN32 -# include -# include -# include +#include +#include +#include #endif #include #include @@ -49,22 +49,19 @@ static void tls_log_func(int level, const char *str) /* sha1 hash of "hello" string */ const gnutls_datum_t raw_data = { - (void *) - "\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" - "\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", + (void *)"\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" + "\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", 20 }; const gnutls_datum_t invalid_raw_data = { - (void *) - "\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" - "\xde\x0f\x3b\x48\x3c\xd9\xae\xa9\x43\x4d", + (void *)"\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" + "\xde\x0f\x3b\x48\x3c\xd9\xae\xa9\x43\x4d", 20 }; #define tests common_key_tests -#define testfail(fmt, ...) \ - fail("%s: "fmt, tests[i].name, ##__VA_ARGS__) +#define testfail(fmt, ...) fail("%s: " fmt, tests[i].name, ##__VA_ARGS__) void doit(void) { @@ -97,17 +94,14 @@ void doit(void) if (ret < 0) testfail("gnutls_pubkey_init\n"); - ret = - gnutls_privkey_import_x509_raw(privkey, &tests[i].key, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_privkey_import_x509_raw( + privkey, &tests[i].key, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) testfail("gnutls_privkey_import_x509\n"); - ret = - gnutls_privkey_sign_data(privkey, tests[i].digest, - tests[i].sign_flags, &raw_data, - &signature); + ret = gnutls_privkey_sign_data(privkey, tests[i].digest, + tests[i].sign_flags, &raw_data, + &signature); if (ret < 0) testfail("gnutls_x509_privkey_sign_hash\n"); @@ -115,9 +109,8 @@ void doit(void) if (ret < 0) testfail("gnutls_x509_crt_init\n"); - ret = - gnutls_x509_crt_import(crt, &tests[i].cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(crt, &tests[i].cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) testfail("gnutls_x509_crt_import\n"); @@ -125,37 +118,33 @@ void doit(void) if (ret < 0) testfail("gnutls_x509_pubkey_import\n"); - ret = - gnutls_pubkey_verify_data2(pubkey, tests[i].sigalgo, 0, - &raw_data, &signature); + ret = gnutls_pubkey_verify_data2(pubkey, tests[i].sigalgo, 0, + &raw_data, &signature); if (ret < 0) testfail("gnutls_x509_pubkey_verify_data2\n"); /* should fail */ - ret = - gnutls_pubkey_verify_data2(pubkey, tests[i].sigalgo, 0, - &invalid_raw_data, &signature); + ret = gnutls_pubkey_verify_data2(pubkey, tests[i].sigalgo, 0, + &invalid_raw_data, &signature); if (ret != GNUTLS_E_PK_SIG_VERIFY_FAILED) - testfail - ("gnutls_x509_pubkey_verify_data2-2 (hashed data)\n"); - - sign_algo = - gnutls_pk_to_sign(gnutls_pubkey_get_pk_algorithm - (pubkey, NULL), tests[i].digest); - ret = - gnutls_pubkey_verify_data2(pubkey, sign_algo, 0, - &raw_data, &signature); + testfail( + "gnutls_x509_pubkey_verify_data2-2 (hashed data)\n"); + + sign_algo = gnutls_pk_to_sign( + gnutls_pubkey_get_pk_algorithm(pubkey, NULL), + tests[i].digest); + ret = gnutls_pubkey_verify_data2(pubkey, sign_algo, 0, + &raw_data, &signature); if (ret < 0) - testfail - ("gnutls_x509_pubkey_verify_data2-1 (hashed data)\n"); + testfail( + "gnutls_x509_pubkey_verify_data2-1 (hashed data)\n"); /* should fail */ - ret = - gnutls_pubkey_verify_data2(pubkey, sign_algo, 0, - &invalid_raw_data, &signature); + ret = gnutls_pubkey_verify_data2(pubkey, sign_algo, 0, + &invalid_raw_data, &signature); if (ret != GNUTLS_E_PK_SIG_VERIFY_FAILED) - testfail - ("gnutls_x509_pubkey_verify_data2-2 (hashed data)\n"); + testfail( + "gnutls_x509_pubkey_verify_data2-2 (hashed data)\n"); /* test the raw interface */ gnutls_free(signature.data); diff --git a/tests/sign-verify-deterministic.c b/tests/sign-verify-deterministic.c index fa30ab2315..a41a04a921 100644 --- a/tests/sign-verify-deterministic.c +++ b/tests/sign-verify-deterministic.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -28,9 +28,9 @@ #include #include #ifndef _WIN32 -# include -# include -# include +#include +#include +#include #endif #include #include @@ -59,91 +59,82 @@ struct _key_tests_st { /* Test vectors from RFC 6979 */ static const char dsa_privkey_rfc6979[] = - "-----BEGIN DSA PRIVATE KEY-----\n" - "MIIBugIBAAKBgQCG9coD3P6yJQY/+DCgx2m53Z1hU62R184n94fEMni0R+ZTO4ax\n" - "i+1uiki3hKFMJSxb4Nv2C4bWOFvS8S+3Y+2Ic6v9P1ui4KjApZCC6sBWk15Sna98\n" - "YQRniZx3re38hGyIGHC3sZsrWPm+BSGhcALjvda4ZoXukLPZobAreCsXeQIVAJlv\n" - "ln9sjjiNnijQHiBfupV6VpixAoGAB7D5JUYVC2JRS7dx4qDAzjh/A72mxWtQUgn/\n" - "Jf08Ez2Ju82X6QTgkRTZp9796t/JB46lRNLkAa7sxAu5+794/YeZWhChwny3eJtZ\n" - "S6fvtcQyap/lmgcOE223cXVGStykF75dzi9A0QpGo6OUPyarf9nAOY/4x27gpWgm\n" - "qKiPHb0CgYBd9eAd7THQKX4nThaRwZL+WGj++eGahHdkVLEAzxb2U5IZWji5BSPi\n" - "VC7mGHHARAy4fDIvxLTS7F4efsdm4b6NTOk1Q33BHDyP1CYziTPr/nOcs0ZfTTZo\n" - "xeRzUIJTseaC9ly9xPrpPC6iEjkOVJBahuIiMXC0Tqp9pd2f/Pt/OwIUQRYCyxmm\n" - "zMNElNedmO8eftWvJfc=\n" "-----END DSA PRIVATE KEY-----\n"; + "-----BEGIN DSA PRIVATE KEY-----\n" + "MIIBugIBAAKBgQCG9coD3P6yJQY/+DCgx2m53Z1hU62R184n94fEMni0R+ZTO4ax\n" + "i+1uiki3hKFMJSxb4Nv2C4bWOFvS8S+3Y+2Ic6v9P1ui4KjApZCC6sBWk15Sna98\n" + "YQRniZx3re38hGyIGHC3sZsrWPm+BSGhcALjvda4ZoXukLPZobAreCsXeQIVAJlv\n" + "ln9sjjiNnijQHiBfupV6VpixAoGAB7D5JUYVC2JRS7dx4qDAzjh/A72mxWtQUgn/\n" + "Jf08Ez2Ju82X6QTgkRTZp9796t/JB46lRNLkAa7sxAu5+794/YeZWhChwny3eJtZ\n" + "S6fvtcQyap/lmgcOE223cXVGStykF75dzi9A0QpGo6OUPyarf9nAOY/4x27gpWgm\n" + "qKiPHb0CgYBd9eAd7THQKX4nThaRwZL+WGj++eGahHdkVLEAzxb2U5IZWji5BSPi\n" + "VC7mGHHARAy4fDIvxLTS7F4efsdm4b6NTOk1Q33BHDyP1CYziTPr/nOcs0ZfTTZo\n" + "xeRzUIJTseaC9ly9xPrpPC6iEjkOVJBahuIiMXC0Tqp9pd2f/Pt/OwIUQRYCyxmm\n" + "zMNElNedmO8eftWvJfc=\n" + "-----END DSA PRIVATE KEY-----\n"; static const char ecdsa_secp256r1_privkey_rfc6979[] = - "-----BEGIN EC PRIVATE KEY-----\n" - "MHgCAQEEIQDJr6nYRbp1FmtcIVdnsdaTTlDD2zbomxJ7imIrEg9nIaAKBggqhkjO\n" - "PQMBB6FEA0IABGD+1LolWp0xyWHrdMY1bWjASbiSO2H6bOZpYi5g8p+2eQP+EAi4\n" - "vJmkGunpVii8ZPLxsgwtfp9Rd6PClNRGIpk=\n" "-----END EC PRIVATE KEY-----\n"; + "-----BEGIN EC PRIVATE KEY-----\n" + "MHgCAQEEIQDJr6nYRbp1FmtcIVdnsdaTTlDD2zbomxJ7imIrEg9nIaAKBggqhkjO\n" + "PQMBB6FEA0IABGD+1LolWp0xyWHrdMY1bWjASbiSO2H6bOZpYi5g8p+2eQP+EAi4\n" + "vJmkGunpVii8ZPLxsgwtfp9Rd6PClNRGIpk=\n" + "-----END EC PRIVATE KEY-----\n"; static const char sample[] = "sample"; -static const -struct _key_tests_st tests[] = { - { - .name = "dsa key", - .key = {(void *)dsa_privkey_rfc6979, sizeof(dsa_privkey_rfc6979) - 1}, - .msg = {(void *)sample, sizeof(sample) - 1}, - .sig = {(void *) - "\x30\x2d\x02\x15\x00\x81\xf2\xf5\x85\x0b\xe5\xbc\x12\x3c\x43\xf7\x1a\x30\x33\xe9\x38\x46\x11\xc5\x45\x02\x14\x4c\xdd\x91\x4b\x65\xeb\x6c\x66\xa8\xaa\xad\x27\x29\x9b\xee\x6b\x03\x5f\x5e\x89", - 47}, - .pk = GNUTLS_PK_DSA, - .digest = GNUTLS_DIG_SHA256, - .sigalgo = GNUTLS_SIGN_DSA_SHA256, - .sign_flags = GNUTLS_PRIVKEY_FLAG_REPRODUCIBLE}, - { - .name = "ecdsa key", - .key = {(void *)ecdsa_secp256r1_privkey_rfc6979, - sizeof(ecdsa_secp256r1_privkey_rfc6979) - 1}, - .msg = {(void *)sample, sizeof(sample) - 1}, - .sig = {(void *) - "\x30\x46\x02\x21\x00\xef\xd4\x8b\x2a\xac\xb6\xa8\xfd\x11\x40\xdd\x9c\xd4\x5e\x81\xd6\x9d\x2c\x87\x7b\x56\xaa\xf9\x91\xc3\x4d\x0e\xa8\x4e\xaf\x37\x16\x02\x21\x00\xf7\xcb\x1c\x94\x2d\x65\x7c\x41\xd4\x36\xc7\xa1\xb6\xe2\x9f\x65\xf3\xe9\x00\xdb\xb9\xaf\xf4\x06\x4d\xc4\xab\x2f\x84\x3a\xcd\xa8", - 72}, - .pk = GNUTLS_PK_ECDSA, - .digest = GNUTLS_DIG_SHA256, - .sigalgo = GNUTLS_SIGN_ECDSA_SECP256R1_SHA256, - .sign_flags = GNUTLS_PRIVKEY_FLAG_REPRODUCIBLE}, - { - .name = "ecdsa key", - .key = {(void *)ecdsa_secp256r1_privkey_rfc6979, - sizeof(ecdsa_secp256r1_privkey_rfc6979) - 1}, - .msg = {(void *)sample, sizeof(sample) - 1}, - .sig = {(void *) - "\x30\x46\x02\x21\x00\xef\xd4\x8b\x2a\xac\xb6\xa8\xfd\x11\x40\xdd\x9c\xd4\x5e\x81\xd6\x9d\x2c\x87\x7b\x56\xaa\xf9\x91\xc3\x4d\x0e\xa8\x4e\xaf\x37\x16\x02\x21\x00\xf7\xcb\x1c\x94\x2d\x65\x7c\x41\xd4\x36\xc7\xa1\xb6\xe2\x9f\x65\xf3\xe9\x00\xdb\xb9\xaf\xf4\x06\x4d\xc4\xab\x2f\x84\x3a\xcd\xa8", - 72}, - .pk = GNUTLS_PK_ECDSA, - .digest = GNUTLS_DIG_SHA256, - .sigalgo = GNUTLS_SIGN_ECDSA_SHA256, - .sign_flags = GNUTLS_PRIVKEY_FLAG_REPRODUCIBLE}, - { - .name = "ecdsa key (q bits < h bits)", - .key = {(void *)ecdsa_secp256r1_privkey_rfc6979, - sizeof(ecdsa_secp256r1_privkey_rfc6979) - 1}, - .msg = {(void *)sample, sizeof(sample) - 1}, - .sig = {(void *) - "\x30\x44\x02\x20\x0e\xaf\xea\x03\x9b\x20\xe9\xb4\x23\x09\xfb\x1d\x89\xe2\x13\x05\x7c\xbf\x97\x3d\xc0\xcf\xc8\xf1\x29\xed\xdd\xc8\x00\xef\x77\x19\x02\x20\x48\x61\xf0\x49\x1e\x69\x98\xb9\x45\x51\x93\xe3\x4e\x7b\x0d\x28\x4d\xdd\x71\x49\xa7\x4b\x95\xb9\x26\x1f\x13\xab\xde\x94\x09\x54", - 70}, - .pk = GNUTLS_PK_ECDSA, - .digest = GNUTLS_DIG_SHA384, - .sigalgo = GNUTLS_SIGN_ECDSA_SHA384, - .sign_flags = GNUTLS_PRIVKEY_FLAG_REPRODUCIBLE}, - { - .name = "ecdsa key (q bits > h bits)", - .key = {(void *)ecdsa_secp256r1_privkey_rfc6979, - sizeof(ecdsa_secp256r1_privkey_rfc6979) - 1}, - .msg = {(void *)sample, sizeof(sample) - 1}, - .sig = {(void *) - "\x30\x45\x02\x20\x53\xb2\xff\xf5\xd1\x75\x2b\x2c\x68\x9d\xf2\x57\xc0\x4c\x40\xa5\x87\xfa\xba\xbb\x3f\x6f\xc2\x70\x2f\x13\x43\xaf\x7c\xa9\xaa\x3f\x02\x21\x00\xb9\xaf\xb6\x4f\xdc\x03\xdc\x1a\x13\x1c\x7d\x23\x86\xd1\x1e\x34\x9f\x07\x0a\xa4\x32\xa4\xac\xc9\x18\xbe\xa9\x88\xbf\x75\xc7\x4c", - 71}, - .pk = GNUTLS_PK_ECDSA, - .digest = GNUTLS_DIG_SHA224, - .sigalgo = GNUTLS_SIGN_ECDSA_SHA224, - .sign_flags = GNUTLS_PRIVKEY_FLAG_REPRODUCIBLE} +static const struct _key_tests_st tests[] = { + { .name = "dsa key", + .key = { (void *)dsa_privkey_rfc6979, + sizeof(dsa_privkey_rfc6979) - 1 }, + .msg = { (void *)sample, sizeof(sample) - 1 }, + .sig = { (void *)"\x30\x2d\x02\x15\x00\x81\xf2\xf5\x85\x0b\xe5\xbc\x12\x3c\x43\xf7\x1a\x30\x33\xe9\x38\x46\x11\xc5\x45\x02\x14\x4c\xdd\x91\x4b\x65\xeb\x6c\x66\xa8\xaa\xad\x27\x29\x9b\xee\x6b\x03\x5f\x5e\x89", + 47 }, + .pk = GNUTLS_PK_DSA, + .digest = GNUTLS_DIG_SHA256, + .sigalgo = GNUTLS_SIGN_DSA_SHA256, + .sign_flags = GNUTLS_PRIVKEY_FLAG_REPRODUCIBLE }, + { .name = "ecdsa key", + .key = { (void *)ecdsa_secp256r1_privkey_rfc6979, + sizeof(ecdsa_secp256r1_privkey_rfc6979) - 1 }, + .msg = { (void *)sample, sizeof(sample) - 1 }, + .sig = { (void *)"\x30\x46\x02\x21\x00\xef\xd4\x8b\x2a\xac\xb6\xa8\xfd\x11\x40\xdd\x9c\xd4\x5e\x81\xd6\x9d\x2c\x87\x7b\x56\xaa\xf9\x91\xc3\x4d\x0e\xa8\x4e\xaf\x37\x16\x02\x21\x00\xf7\xcb\x1c\x94\x2d\x65\x7c\x41\xd4\x36\xc7\xa1\xb6\xe2\x9f\x65\xf3\xe9\x00\xdb\xb9\xaf\xf4\x06\x4d\xc4\xab\x2f\x84\x3a\xcd\xa8", + 72 }, + .pk = GNUTLS_PK_ECDSA, + .digest = GNUTLS_DIG_SHA256, + .sigalgo = GNUTLS_SIGN_ECDSA_SECP256R1_SHA256, + .sign_flags = GNUTLS_PRIVKEY_FLAG_REPRODUCIBLE }, + { .name = "ecdsa key", + .key = { (void *)ecdsa_secp256r1_privkey_rfc6979, + sizeof(ecdsa_secp256r1_privkey_rfc6979) - 1 }, + .msg = { (void *)sample, sizeof(sample) - 1 }, + .sig = { (void *)"\x30\x46\x02\x21\x00\xef\xd4\x8b\x2a\xac\xb6\xa8\xfd\x11\x40\xdd\x9c\xd4\x5e\x81\xd6\x9d\x2c\x87\x7b\x56\xaa\xf9\x91\xc3\x4d\x0e\xa8\x4e\xaf\x37\x16\x02\x21\x00\xf7\xcb\x1c\x94\x2d\x65\x7c\x41\xd4\x36\xc7\xa1\xb6\xe2\x9f\x65\xf3\xe9\x00\xdb\xb9\xaf\xf4\x06\x4d\xc4\xab\x2f\x84\x3a\xcd\xa8", + 72 }, + .pk = GNUTLS_PK_ECDSA, + .digest = GNUTLS_DIG_SHA256, + .sigalgo = GNUTLS_SIGN_ECDSA_SHA256, + .sign_flags = GNUTLS_PRIVKEY_FLAG_REPRODUCIBLE }, + { .name = "ecdsa key (q bits < h bits)", + .key = { (void *)ecdsa_secp256r1_privkey_rfc6979, + sizeof(ecdsa_secp256r1_privkey_rfc6979) - 1 }, + .msg = { (void *)sample, sizeof(sample) - 1 }, + .sig = { (void *)"\x30\x44\x02\x20\x0e\xaf\xea\x03\x9b\x20\xe9\xb4\x23\x09\xfb\x1d\x89\xe2\x13\x05\x7c\xbf\x97\x3d\xc0\xcf\xc8\xf1\x29\xed\xdd\xc8\x00\xef\x77\x19\x02\x20\x48\x61\xf0\x49\x1e\x69\x98\xb9\x45\x51\x93\xe3\x4e\x7b\x0d\x28\x4d\xdd\x71\x49\xa7\x4b\x95\xb9\x26\x1f\x13\xab\xde\x94\x09\x54", + 70 }, + .pk = GNUTLS_PK_ECDSA, + .digest = GNUTLS_DIG_SHA384, + .sigalgo = GNUTLS_SIGN_ECDSA_SHA384, + .sign_flags = GNUTLS_PRIVKEY_FLAG_REPRODUCIBLE }, + { .name = "ecdsa key (q bits > h bits)", + .key = { (void *)ecdsa_secp256r1_privkey_rfc6979, + sizeof(ecdsa_secp256r1_privkey_rfc6979) - 1 }, + .msg = { (void *)sample, sizeof(sample) - 1 }, + .sig = { (void *)"\x30\x45\x02\x20\x53\xb2\xff\xf5\xd1\x75\x2b\x2c\x68\x9d\xf2\x57\xc0\x4c\x40\xa5\x87\xfa\xba\xbb\x3f\x6f\xc2\x70\x2f\x13\x43\xaf\x7c\xa9\xaa\x3f\x02\x21\x00\xb9\xaf\xb6\x4f\xdc\x03\xdc\x1a\x13\x1c\x7d\x23\x86\xd1\x1e\x34\x9f\x07\x0a\xa4\x32\xa4\xac\xc9\x18\xbe\xa9\x88\xbf\x75\xc7\x4c", + 71 }, + .pk = GNUTLS_PK_ECDSA, + .digest = GNUTLS_DIG_SHA224, + .sigalgo = GNUTLS_SIGN_ECDSA_SHA224, + .sign_flags = GNUTLS_PRIVKEY_FLAG_REPRODUCIBLE } }; -#define testfail(fmt, ...) \ - fail("%s: "fmt, tests[i].name, ##__VA_ARGS__) +#define testfail(fmt, ...) fail("%s: " fmt, tests[i].name, ##__VA_ARGS__) void doit(void) { @@ -174,22 +165,19 @@ void doit(void) signature.data = NULL; signature.size = 0; - ret = - gnutls_privkey_import_x509_raw(privkey, &tests[i].key, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_privkey_import_x509_raw( + privkey, &tests[i].key, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) testfail("gnutls_privkey_import_x509_raw\n"); - ret = - gnutls_privkey_sign_data(privkey, tests[i].digest, - tests[i].sign_flags, &tests[i].msg, - &signature); + ret = gnutls_privkey_sign_data(privkey, tests[i].digest, + tests[i].sign_flags, + &tests[i].msg, &signature); if (gnutls_fips140_mode_enabled()) { /* deterministic ECDSA/DSA is prohibited under FIPS */ if (ret != GNUTLS_E_INVALID_REQUEST) - testfail - ("gnutls_privkey_sign_data unexpectedly succeeds\n"); + testfail( + "gnutls_privkey_sign_data unexpectedly succeeds\n"); success(" - skipping\n"); goto next; } else { @@ -198,22 +186,21 @@ void doit(void) } if (signature.size != tests[i].sig.size || - memcmp(signature.data, tests[i].sig.data, - signature.size) != 0) + memcmp(signature.data, tests[i].sig.data, signature.size) != + 0) testfail("signature does not match"); ret = gnutls_pubkey_import_privkey(pubkey, privkey, 0, 0); if (ret < 0) testfail("gnutls_pubkey_import_privkey\n"); - ret = - gnutls_pubkey_verify_data2(pubkey, tests[i].sigalgo, 0, - &tests[i].msg, &signature); + ret = gnutls_pubkey_verify_data2(pubkey, tests[i].sigalgo, 0, + &tests[i].msg, &signature); if (ret < 0) testfail("gnutls_pubkey_verify_data2\n"); success(" - pass"); - next: + next: gnutls_free(signature.data); gnutls_privkey_deinit(privkey); gnutls_pubkey_deinit(pubkey); diff --git a/tests/sign-verify-ed25519-rfc8080.c b/tests/sign-verify-ed25519-rfc8080.c index 343af225c2..98ee231cd7 100644 --- a/tests/sign-verify-ed25519-rfc8080.c +++ b/tests/sign-verify-ed25519-rfc8080.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -28,9 +28,9 @@ #include #include #ifndef _WIN32 -# include -# include -# include +#include +#include +#include #endif #include #include @@ -48,25 +48,23 @@ static void tls_log_func(int level, const char *str) /* Values from RFC8080 */ static unsigned char ed25519_x[] = - "\x97\x4d\x96\xa2\x2d\x22\x4b\xc0\x1a\xdb\x91\x50\x91\x47\x7d\x44\xcc\xd9\x1c\x9a\x41\xa1\x14\x30\x01\x01\x17\xd5\x2c\x59\x24\x0e"; + "\x97\x4d\x96\xa2\x2d\x22\x4b\xc0\x1a\xdb\x91\x50\x91\x47\x7d\x44\xcc\xd9\x1c\x9a\x41\xa1\x14\x30\x01\x01\x17\xd5\x2c\x59\x24\x0e"; static unsigned char ed25519_k[] = - "\x38\x32\x32\x36\x30\x33\x38\x34\x36\x32\x38\x30\x38\x30\x31\x32\x32\x36\x34\x35\x31\x39\x30\x32\x30\x34\x31\x34\x32\x32\x36\x32"; + "\x38\x32\x32\x36\x30\x33\x38\x34\x36\x32\x38\x30\x38\x30\x31\x32\x32\x36\x34\x35\x31\x39\x30\x32\x30\x34\x31\x34\x32\x32\x36\x32"; static gnutls_datum_t _ed25519_x = { ed25519_x, sizeof(ed25519_x) - 1 }; static gnutls_datum_t _ed25519_k = { ed25519_k, sizeof(ed25519_k) - 1 }; /* sha1 hash of "hello" string */ const gnutls_datum_t raw_data = { - (void *) - "\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" - "\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", + (void *)"\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" + "\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", 20 }; const gnutls_datum_t invalid_raw_data = { - (void *) - "\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" - "\xde\x0f\x3b\x48\x3c\xd9\xae\xa9\x43\x4d", + (void *)"\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" + "\xde\x0f\x3b\x48\x3c\xd9\xae\xa9\x43\x4d", 20 }; @@ -87,9 +85,8 @@ void doit(void) if (ret < 0) fail("error\n"); - ret = - gnutls_privkey_import_ecc_raw(key, GNUTLS_ECC_CURVE_ED25519, - &_ed25519_x, NULL, &_ed25519_k); + ret = gnutls_privkey_import_ecc_raw(key, GNUTLS_ECC_CURVE_ED25519, + &_ed25519_x, NULL, &_ed25519_k); if (ret < 0) fail("error\n"); @@ -97,8 +94,8 @@ void doit(void) if (ret != 0) fail("error: %s\n", gnutls_strerror(ret)); - ret = gnutls_privkey_sign_data(key, GNUTLS_DIG_SHA512, 0, - &raw_data, &signature); + ret = gnutls_privkey_sign_data(key, GNUTLS_DIG_SHA512, 0, &raw_data, + &signature); if (ret < 0) fail("gnutls_x509_privkey_sign_hash\n"); @@ -111,9 +108,8 @@ void doit(void) if (ret < 0) fail("gnutls_x509_pubkey_import\n"); - ret = - gnutls_pubkey_verify_data2(pubkey, GNUTLS_SIGN_EDDSA_ED25519, 0, - &raw_data, &signature); + ret = gnutls_pubkey_verify_data2(pubkey, GNUTLS_SIGN_EDDSA_ED25519, 0, + &raw_data, &signature); if (ret < 0) fail("gnutls_x509_pubkey_verify_data2\n"); @@ -124,15 +120,13 @@ void doit(void) if (ret < 0) fail("gnutls_privkey_init\n"); - ret = - gnutls_pubkey_import_ecc_raw(pubkey, GNUTLS_ECC_CURVE_ED25519, - &_ed25519_x, NULL); + ret = gnutls_pubkey_import_ecc_raw(pubkey, GNUTLS_ECC_CURVE_ED25519, + &_ed25519_x, NULL); if (ret < 0) fail("gnutls_x509_pubkey_import_ecc_raw\n"); - ret = - gnutls_pubkey_verify_data2(pubkey, GNUTLS_SIGN_EDDSA_ED25519, 0, - &raw_data, &signature); + ret = gnutls_pubkey_verify_data2(pubkey, GNUTLS_SIGN_EDDSA_ED25519, 0, + &raw_data, &signature); if (ret < 0) fail("gnutls_x509_pubkey_verify_data2\n"); diff --git a/tests/sign-verify-ext.c b/tests/sign-verify-ext.c index 73ef50d8a6..6ae40ace1e 100644 --- a/tests/sign-verify-ext.c +++ b/tests/sign-verify-ext.c @@ -22,7 +22,7 @@ /* This tests the gnutls_privkey_import_ext2() APIs */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,9 +30,9 @@ #include #include #ifndef _WIN32 -# include -# include -# include +#include +#include +#include #endif #include #include @@ -48,37 +48,31 @@ static void tls_log_func(int level, const char *str) /* sha1 hash of "hello" string */ const gnutls_datum_t sha1_hash_data = { - (void *) - "\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" - "\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", + (void *)"\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" + "\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", 20 }; const gnutls_datum_t sha256_hash_data = { - (void *) - "\x2c\xf2\x4d\xba\x5f\xb0\xa3\x0e\x26\xe8\x3b\x2a\xc5\xb9\xe2\x9e" - "\x1b\x16\x1e\x5c\x1f\xa7\x42\x5e\x73\x04\x33\x62\x93\x8b\x98\x24", + (void *)"\x2c\xf2\x4d\xba\x5f\xb0\xa3\x0e\x26\xe8\x3b\x2a\xc5\xb9\xe2\x9e" + "\x1b\x16\x1e\x5c\x1f\xa7\x42\x5e\x73\x04\x33\x62\x93\x8b\x98\x24", 32 }; -const gnutls_datum_t raw_data = { - (void *)"hello", - 5 -}; +const gnutls_datum_t raw_data = { (void *)"hello", 5 }; struct key_cb_data { - gnutls_privkey_t rkey; /* the real thing */ + gnutls_privkey_t rkey; /* the real thing */ }; -static -int key_cb_sign_func(gnutls_privkey_t key, void *userdata, - const gnutls_datum_t * data, gnutls_datum_t * signature) +static int key_cb_sign_func(gnutls_privkey_t key, void *userdata, + const gnutls_datum_t *data, + gnutls_datum_t *signature) { struct key_cb_data *p = userdata; - return gnutls_privkey_sign_hash(p->rkey, 0, - GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, data, - signature); + return gnutls_privkey_sign_hash( + p->rkey, 0, GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, data, signature); } static void key_cb_deinit_func(gnutls_privkey_t key, void *userdata) @@ -88,7 +82,7 @@ static void key_cb_deinit_func(gnutls_privkey_t key, void *userdata) free(userdata); } -static gnutls_privkey_t load_virt_privkey(const gnutls_datum_t * txtkey, +static gnutls_privkey_t load_virt_privkey(const gnutls_datum_t *txtkey, gnutls_pk_algorithm_t pk) { gnutls_privkey_t privkey; @@ -108,16 +102,15 @@ static gnutls_privkey_t load_virt_privkey(const gnutls_datum_t * txtkey, if (ret < 0) fail("gnutls_privkey_init\n"); - ret = - gnutls_privkey_import_x509_raw(userdata->rkey, txtkey, - GNUTLS_X509_FMT_PEM, NULL, 0); + ret = gnutls_privkey_import_x509_raw(userdata->rkey, txtkey, + GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) fail("gnutls_privkey_import\n"); - ret = - gnutls_privkey_import_ext2(privkey, pk, userdata, key_cb_sign_func, - NULL, key_cb_deinit_func, - GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE); + ret = gnutls_privkey_import_ext2(privkey, pk, userdata, + key_cb_sign_func, NULL, + key_cb_deinit_func, + GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE); if (ret < 0) fail("gnutls_privkey_import_ext2\n"); @@ -125,8 +118,7 @@ static gnutls_privkey_t load_virt_privkey(const gnutls_datum_t * txtkey, } #define tests common_key_tests -#define testfail(fmt, ...) \ - fail("%s: "fmt, tests[i].name, ##__VA_ARGS__) +#define testfail(fmt, ...) fail("%s: " fmt, tests[i].name, ##__VA_ARGS__) void doit(void) { @@ -146,8 +138,8 @@ void doit(void) gnutls_global_set_log_level(6); for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++) { - if (tests[i].pk == GNUTLS_PK_RSA_PSS - || tests[i].pk == GNUTLS_PK_EDDSA_ED25519) + if (tests[i].pk == GNUTLS_PK_RSA_PSS || + tests[i].pk == GNUTLS_PK_EDDSA_ED25519) continue; success("testing: %s - %s\n", tests[i].name, @@ -165,40 +157,37 @@ void doit(void) if (ret < 0) testfail("gnutls_privkey_init\n"); - ret = - gnutls_privkey_sign_hash(privkey, tests[i].digest, - tests[i].sign_flags, hash_data, - &signature2); + ret = gnutls_privkey_sign_hash(privkey, tests[i].digest, + tests[i].sign_flags, hash_data, + &signature2); if (ret < 0) testfail("gnutls_privkey_sign_hash\n"); - ret = - gnutls_privkey_sign_data(privkey, tests[i].digest, - tests[i].sign_flags, &raw_data, - &signature); + ret = gnutls_privkey_sign_data(privkey, tests[i].digest, + tests[i].sign_flags, &raw_data, + &signature); if (ret < 0) testfail("gnutls_x509_privkey_sign_hash\n"); - ret = - gnutls_pubkey_import_x509_raw(pubkey, &tests[i].cert, - GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_pubkey_import_x509_raw(pubkey, &tests[i].cert, + GNUTLS_X509_FMT_PEM, 0); if (ret < 0) testfail("gnutls_x509_pubkey_import\n"); - ret = - gnutls_pubkey_verify_hash2(pubkey, tests[i].sigalgo, - GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, - hash_data, &signature); + ret = gnutls_pubkey_verify_hash2( + pubkey, tests[i].sigalgo, + GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, hash_data, + &signature); if (ret < 0) testfail("gnutls_pubkey_verify_hash2\n"); - ret = - gnutls_pubkey_verify_hash2(pubkey, tests[i].sigalgo, - GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, - hash_data, &signature2); + ret = gnutls_pubkey_verify_hash2( + pubkey, tests[i].sigalgo, + GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, hash_data, + &signature2); if (ret < 0) - testfail - ("gnutls_pubkey_verify_hash2-1 (hashed data)\n"); + testfail( + "gnutls_pubkey_verify_hash2-1 (hashed data)\n"); /* test the raw interface */ gnutls_free(signature.data); @@ -206,45 +195,41 @@ void doit(void) if (gnutls_pubkey_get_pk_algorithm(pubkey, NULL) == GNUTLS_PK_RSA) { - - ret = - gnutls_privkey_sign_hash(privkey, - tests[i].digest, - GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, - hash_data, &signature); + ret = gnutls_privkey_sign_hash( + privkey, tests[i].digest, + GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, hash_data, + &signature); if (ret < 0) testfail("gnutls_privkey_sign_hash: %s\n", gnutls_strerror(ret)); - sign_algo = - gnutls_pk_to_sign - (gnutls_pubkey_get_pk_algorithm(pubkey, NULL), - tests[i].digest); + sign_algo = gnutls_pk_to_sign( + gnutls_pubkey_get_pk_algorithm(pubkey, NULL), + tests[i].digest); - ret = - gnutls_pubkey_verify_hash2(pubkey, sign_algo, - GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA, - hash_data, &signature); + ret = gnutls_pubkey_verify_hash2( + pubkey, sign_algo, + GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA, hash_data, + &signature); if (ret < 0) - testfail - ("gnutls_pubkey_verify_hash-3 (raw hashed data)\n"); + testfail( + "gnutls_pubkey_verify_hash-3 (raw hashed data)\n"); gnutls_free(signature.data); /* test the legacy API */ - ret = - gnutls_privkey_sign_raw_data(privkey, 0, - hash_data, &signature); + ret = gnutls_privkey_sign_raw_data( + privkey, 0, hash_data, &signature); if (ret < 0) testfail("gnutls_privkey_sign_raw_data: %s\n", gnutls_strerror(ret)); - ret = - gnutls_pubkey_verify_hash2(pubkey, sign_algo, - GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA, - hash_data, &signature); + ret = gnutls_pubkey_verify_hash2( + pubkey, sign_algo, + GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA, hash_data, + &signature); if (ret < 0) - testfail - ("gnutls_pubkey_verify_hash-4 (legacy raw hashed data)\n"); + testfail( + "gnutls_pubkey_verify_hash-4 (legacy raw hashed data)\n"); } gnutls_free(signature.data); gnutls_free(signature2.data); diff --git a/tests/sign-verify-ext4.c b/tests/sign-verify-ext4.c index 1aba291b2e..4c0ab77b48 100644 --- a/tests/sign-verify-ext4.c +++ b/tests/sign-verify-ext4.c @@ -22,7 +22,7 @@ /* This tests the gnutls_privkey_import_ext4() APIs */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,9 +30,9 @@ #include #include #ifndef _WIN32 -# include -# include -# include +#include +#include +#include #endif #include #include @@ -48,26 +48,21 @@ static void tls_log_func(int level, const char *str) /* sha1 hash of "hello" string */ const gnutls_datum_t sha1_hash_data = { - (void *) - "\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" - "\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", + (void *)"\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" + "\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", 20 }; const gnutls_datum_t sha256_hash_data = { - (void *) - "\x2c\xf2\x4d\xba\x5f\xb0\xa3\x0e\x26\xe8\x3b\x2a\xc5\xb9\xe2\x9e" - "\x1b\x16\x1e\x5c\x1f\xa7\x42\x5e\x73\x04\x33\x62\x93\x8b\x98\x24", + (void *)"\x2c\xf2\x4d\xba\x5f\xb0\xa3\x0e\x26\xe8\x3b\x2a\xc5\xb9\xe2\x9e" + "\x1b\x16\x1e\x5c\x1f\xa7\x42\x5e\x73\x04\x33\x62\x93\x8b\x98\x24", 32 }; -const gnutls_datum_t raw_data = { - (void *)"hello", - 5 -}; +const gnutls_datum_t raw_data = { (void *)"hello", 5 }; struct key_cb_data { - gnutls_privkey_t rkey; /* the real thing */ + gnutls_privkey_t rkey; /* the real thing */ unsigned pk; unsigned sig; unsigned bits; @@ -94,11 +89,10 @@ static int key_cb_info_func(gnutls_privkey_t key, unsigned int flags, return -1; } -static -int key_cb_sign_data_func(gnutls_privkey_t key, gnutls_sign_algorithm_t sig, - void *userdata, unsigned int flags, - const gnutls_datum_t * data, - gnutls_datum_t * signature) +static int key_cb_sign_data_func(gnutls_privkey_t key, + gnutls_sign_algorithm_t sig, void *userdata, + unsigned int flags, const gnutls_datum_t *data, + gnutls_datum_t *signature) { struct key_cb_data *p = userdata; @@ -108,20 +102,19 @@ int key_cb_sign_data_func(gnutls_privkey_t key, gnutls_sign_algorithm_t sig, return gnutls_privkey_sign_data2(p->rkey, sig, 0, data, signature); } -static -int key_cb_sign_hash_func(gnutls_privkey_t key, gnutls_sign_algorithm_t sig, - void *userdata, unsigned int flags, - const gnutls_datum_t * data, - gnutls_datum_t * signature) +static int key_cb_sign_hash_func(gnutls_privkey_t key, + gnutls_sign_algorithm_t sig, void *userdata, + unsigned int flags, const gnutls_datum_t *data, + gnutls_datum_t *signature) { struct key_cb_data *p = userdata; if (sig == GNUTLS_SIGN_RSA_RAW) { if (debug) fprintf(stderr, "signing digestinfo with: raw RSA\n"); - return gnutls_privkey_sign_hash(p->rkey, 0, - GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, - data, signature); + return gnutls_privkey_sign_hash( + p->rkey, 0, GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, data, + signature); } else { if (debug) fprintf(stderr, "signing hash with: %s\n", @@ -138,7 +131,7 @@ static void key_cb_deinit_func(gnutls_privkey_t key, void *userdata) free(userdata); } -static gnutls_privkey_t load_virt_privkey(const gnutls_datum_t * txtkey, +static gnutls_privkey_t load_virt_privkey(const gnutls_datum_t *txtkey, gnutls_pk_algorithm_t pk, gnutls_sign_algorithm_t sig) { @@ -159,9 +152,8 @@ static gnutls_privkey_t load_virt_privkey(const gnutls_datum_t * txtkey, if (ret < 0) fail("gnutls_privkey_init\n"); - ret = - gnutls_privkey_import_x509_raw(userdata->rkey, txtkey, - GNUTLS_X509_FMT_PEM, NULL, 0); + ret = gnutls_privkey_import_x509_raw(userdata->rkey, txtkey, + GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) fail("gnutls_privkey_import\n"); @@ -172,8 +164,7 @@ static gnutls_privkey_t load_virt_privkey(const gnutls_datum_t * txtkey, ret = gnutls_privkey_import_ext4(privkey, userdata, key_cb_sign_data_func, - key_cb_sign_hash_func, - NULL, + key_cb_sign_hash_func, NULL, key_cb_deinit_func, key_cb_info_func, GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE); if (ret < 0) @@ -183,8 +174,7 @@ static gnutls_privkey_t load_virt_privkey(const gnutls_datum_t * txtkey, } #define tests common_key_tests -#define testfail(fmt, ...) \ - fail("%s: "fmt, tests[i].name, ##__VA_ARGS__) +#define testfail(fmt, ...) fail("%s: " fmt, tests[i].name, ##__VA_ARGS__) void doit(void) { @@ -213,96 +203,88 @@ void doit(void) hash_data = &sha256_hash_data; } - privkey = - load_virt_privkey(&tests[i].key, tests[i].pk, - tests[i].sigalgo); + privkey = load_virt_privkey(&tests[i].key, tests[i].pk, + tests[i].sigalgo); ret = gnutls_pubkey_init(&pubkey); if (ret < 0) testfail("gnutls_privkey_init\n"); - ret = - gnutls_privkey_sign_data2(privkey, tests[i].sigalgo, - tests[i].sign_flags, &raw_data, - &signature); + ret = gnutls_privkey_sign_data2(privkey, tests[i].sigalgo, + tests[i].sign_flags, &raw_data, + &signature); if (ret < 0) testfail("gnutls_x509_privkey_sign_hash\n"); - ret = - gnutls_pubkey_import_x509_raw(pubkey, &tests[i].cert, - GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_pubkey_import_x509_raw(pubkey, &tests[i].cert, + GNUTLS_X509_FMT_PEM, 0); if (ret < 0) testfail("gnutls_x509_pubkey_import\n"); - ret = - gnutls_pubkey_verify_data2(pubkey, tests[i].sigalgo, - GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, - &raw_data, &signature); + ret = gnutls_pubkey_verify_data2( + pubkey, tests[i].sigalgo, + GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, &raw_data, + &signature); if (ret < 0) testfail("gnutls_pubkey_verify_data2\n"); gnutls_free(signature.data); if (!tests[i].data_only) { - ret = - gnutls_privkey_sign_hash(privkey, tests[i].digest, - tests[i].sign_flags, - hash_data, &signature2); + ret = gnutls_privkey_sign_hash(privkey, tests[i].digest, + tests[i].sign_flags, + hash_data, &signature2); if (ret < 0) testfail("gnutls_privkey_sign_hash\n"); - ret = - gnutls_pubkey_verify_hash2(pubkey, tests[i].sigalgo, - GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, - hash_data, &signature2); + ret = gnutls_pubkey_verify_hash2( + pubkey, tests[i].sigalgo, + GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, hash_data, + &signature2); if (ret < 0) - testfail - ("gnutls_pubkey_verify_hash2-1 (hashed data)\n"); + testfail( + "gnutls_pubkey_verify_hash2-1 (hashed data)\n"); gnutls_free(signature2.data); } if (gnutls_pubkey_get_pk_algorithm(pubkey, NULL) == GNUTLS_PK_RSA) { - - ret = - gnutls_privkey_sign_hash(privkey, - tests[i].digest, - GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, - hash_data, &signature); + ret = gnutls_privkey_sign_hash( + privkey, tests[i].digest, + GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, hash_data, + &signature); if (ret < 0) testfail("gnutls_privkey_sign_hash: %s\n", gnutls_strerror(ret)); - sign_algo = - gnutls_pk_to_sign - (gnutls_pubkey_get_pk_algorithm(pubkey, NULL), - tests[i].digest); + sign_algo = gnutls_pk_to_sign( + gnutls_pubkey_get_pk_algorithm(pubkey, NULL), + tests[i].digest); - ret = - gnutls_pubkey_verify_hash2(pubkey, sign_algo, - GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA, - hash_data, &signature); + ret = gnutls_pubkey_verify_hash2( + pubkey, sign_algo, + GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA, hash_data, + &signature); if (ret < 0) - testfail - ("gnutls_pubkey_verify_hash-3 (raw hashed data)\n"); + testfail( + "gnutls_pubkey_verify_hash-3 (raw hashed data)\n"); gnutls_free(signature.data); /* test the legacy API */ - ret = - gnutls_privkey_sign_raw_data(privkey, 0, - hash_data, &signature); + ret = gnutls_privkey_sign_raw_data( + privkey, 0, hash_data, &signature); if (ret < 0) testfail("gnutls_privkey_sign_raw_data: %s\n", gnutls_strerror(ret)); - ret = - gnutls_pubkey_verify_hash2(pubkey, sign_algo, - GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA, - hash_data, &signature); + ret = gnutls_pubkey_verify_hash2( + pubkey, sign_algo, + GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA, hash_data, + &signature); if (ret < 0) - testfail - ("gnutls_pubkey_verify_hash-4 (legacy raw hashed data)\n"); + testfail( + "gnutls_pubkey_verify_hash-4 (legacy raw hashed data)\n"); } gnutls_free(signature.data); gnutls_free(signature2.data); diff --git a/tests/sign-verify-newapi.c b/tests/sign-verify-newapi.c index 68efe03e4d..ee3bddfe6c 100644 --- a/tests/sign-verify-newapi.c +++ b/tests/sign-verify-newapi.c @@ -22,7 +22,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,9 +30,9 @@ #include #include #ifndef _WIN32 -# include -# include -# include +#include +#include +#include #endif #include #include @@ -48,41 +48,33 @@ static void tls_log_func(int level, const char *str) /* sha1 hash of "hello" string */ const gnutls_datum_t sha1_hash_data = { - (void *) - "\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" - "\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", + (void *)"\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" + "\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", 20 }; const gnutls_datum_t sha256_hash_data = { - (void *) - "\x2c\xf2\x4d\xba\x5f\xb0\xa3\x0e\x26\xe8\x3b\x2a\xc5\xb9\xe2\x9e" - "\x1b\x16\x1e\x5c\x1f\xa7\x42\x5e\x73\x04\x33\x62\x93\x8b\x98\x24", + (void *)"\x2c\xf2\x4d\xba\x5f\xb0\xa3\x0e\x26\xe8\x3b\x2a\xc5\xb9\xe2\x9e" + "\x1b\x16\x1e\x5c\x1f\xa7\x42\x5e\x73\x04\x33\x62\x93\x8b\x98\x24", 32 }; const gnutls_datum_t sha256_invalid_hash_data = { - (void *) - "\x2c\xf2\x4d\xba\x5f\xb1\xa3\x0e\x26\xe8\x3b\x2a\xc5\xb9\xe2\x9e" - "\x1b\x16\x1e\x5c\x1f\xa3\x42\x5e\x73\x04\x33\x62\x93\x8b\x98\x24", + (void *)"\x2c\xf2\x4d\xba\x5f\xb1\xa3\x0e\x26\xe8\x3b\x2a\xc5\xb9\xe2\x9e" + "\x1b\x16\x1e\x5c\x1f\xa3\x42\x5e\x73\x04\x33\x62\x93\x8b\x98\x24", 32 }; const gnutls_datum_t sha1_invalid_hash_data = { - (void *) - "\xaa\xf4\xc6\x1d\xdc\xca\xe8\xa2\xda\xbe" - "\xde\x0f\x3b\x48\x2c\xb9\xae\xa9\x43\x4d", + (void *)"\xaa\xf4\xc6\x1d\xdc\xca\xe8\xa2\xda\xbe" + "\xde\x0f\x3b\x48\x2c\xb9\xae\xa9\x43\x4d", 20 }; -const gnutls_datum_t raw_data = { - (void *)"hello", - 5 -}; +const gnutls_datum_t raw_data = { (void *)"hello", 5 }; #define tests common_key_tests -#define testfail(fmt, ...) \ - fail("%s: "fmt, tests[i].name, ##__VA_ARGS__) +#define testfail(fmt, ...) fail("%s: " fmt, tests[i].name, ##__VA_ARGS__) void doit(void) { @@ -123,9 +115,8 @@ void doit(void) if (ret < 0) testfail("gnutls_x509_privkey_init\n"); - ret = - gnutls_x509_privkey_import(key, &tests[i].key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_privkey_import(key, &tests[i].key, + GNUTLS_X509_FMT_PEM); if (ret < 0) testfail("gnutls_x509_privkey_import\n"); @@ -155,9 +146,8 @@ void doit(void) if (ret < 0) testfail("gnutls_x509_crt_init\n"); - ret = - gnutls_x509_crt_import(crt, &tests[i].cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(crt, &tests[i].cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) testfail("gnutls_x509_crt_import\n"); @@ -165,59 +155,56 @@ void doit(void) if (ret < 0) testfail("gnutls_x509_pubkey_import\n"); - ret = - gnutls_pubkey_verify_hash2(pubkey, tests[i].sigalgo, - GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, - hash_data, &signature); + ret = gnutls_pubkey_verify_hash2( + pubkey, tests[i].sigalgo, + GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, hash_data, + &signature); if (ret < 0) testfail("gnutls_x509_pubkey_verify_hash2\n"); /* Test functionality of GNUTLS_VERIFY_DISABLE_CA_SIGN (see issue #754) */ - ret = - gnutls_pubkey_verify_hash2(pubkey, tests[i].sigalgo, - GNUTLS_VERIFY_DISABLE_CA_SIGN, - hash_data, &signature); + ret = gnutls_pubkey_verify_hash2(pubkey, tests[i].sigalgo, + GNUTLS_VERIFY_DISABLE_CA_SIGN, + hash_data, &signature); if (ret < 0) - testfail - ("gnutls_x509_pubkey_verify_hash2 with GNUTLS_VERIFY_DISABLE_CA_SIGN\n"); + testfail( + "gnutls_x509_pubkey_verify_hash2 with GNUTLS_VERIFY_DISABLE_CA_SIGN\n"); - ret = - gnutls_pubkey_verify_hash2(pubkey, tests[i].sigalgo, - GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, - hash_data, &signature2); + ret = gnutls_pubkey_verify_hash2( + pubkey, tests[i].sigalgo, + GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, hash_data, + &signature2); if (ret < 0) - testfail - ("gnutls_x509_pubkey_verify_hash-1 (hashed data)\n"); + testfail( + "gnutls_x509_pubkey_verify_hash-1 (hashed data)\n"); /* should fail */ - ret = - gnutls_pubkey_verify_hash2(pubkey, tests[i].sigalgo, - GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, - invalid_hash_data, &signature2); + ret = gnutls_pubkey_verify_hash2( + pubkey, tests[i].sigalgo, + GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, invalid_hash_data, + &signature2); if (ret != GNUTLS_E_PK_SIG_VERIFY_FAILED) - testfail - ("gnutls_x509_pubkey_verify_hash-2 (hashed data)\n"); + testfail( + "gnutls_x509_pubkey_verify_hash-2 (hashed data)\n"); - sign_algo = - gnutls_pk_to_sign(gnutls_pubkey_get_pk_algorithm - (pubkey, NULL), tests[i].digest); + sign_algo = gnutls_pk_to_sign( + gnutls_pubkey_get_pk_algorithm(pubkey, NULL), + tests[i].digest); - ret = - gnutls_pubkey_verify_hash2(pubkey, sign_algo, - GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, - hash_data, &signature2); + ret = gnutls_pubkey_verify_hash2( + pubkey, sign_algo, GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, + hash_data, &signature2); if (ret < 0) - testfail - ("gnutls_x509_pubkey_verify_hash2-1 (hashed data)\n"); + testfail( + "gnutls_x509_pubkey_verify_hash2-1 (hashed data)\n"); /* should fail */ - ret = - gnutls_pubkey_verify_hash2(pubkey, sign_algo, - GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, - invalid_hash_data, &signature2); + ret = gnutls_pubkey_verify_hash2( + pubkey, sign_algo, GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, + invalid_hash_data, &signature2); if (ret != GNUTLS_E_PK_SIG_VERIFY_FAILED) - testfail - ("gnutls_x509_pubkey_verify_hash2-2 (hashed data)\n"); + testfail( + "gnutls_x509_pubkey_verify_hash2-2 (hashed data)\n"); /* test the raw interface */ gnutls_free(signature.data); @@ -225,39 +212,36 @@ void doit(void) if (gnutls_pubkey_get_pk_algorithm(pubkey, NULL) == GNUTLS_PK_RSA) { - - ret = - gnutls_privkey_sign_hash2(privkey, - tests[i].sigalgo, - GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, - hash_data, &signature); + ret = gnutls_privkey_sign_hash2( + privkey, tests[i].sigalgo, + GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, hash_data, + &signature); if (ret < 0) testfail("gnutls_privkey_sign_hash: %s\n", gnutls_strerror(ret)); - ret = - gnutls_pubkey_verify_hash2(pubkey, tests[i].sigalgo, - GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA, - hash_data, &signature); + ret = gnutls_pubkey_verify_hash2( + pubkey, tests[i].sigalgo, + GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA, hash_data, + &signature); if (ret < 0) - testfail - ("gnutls_pubkey_verify_hash-3 (raw hashed data)\n"); + testfail( + "gnutls_pubkey_verify_hash-3 (raw hashed data)\n"); gnutls_free(signature.data); /* test the legacy API */ - ret = - gnutls_privkey_sign_raw_data(privkey, 0, - hash_data, &signature); + ret = gnutls_privkey_sign_raw_data( + privkey, 0, hash_data, &signature); if (ret < 0) testfail("gnutls_privkey_sign_raw_data: %s\n", gnutls_strerror(ret)); - ret = - gnutls_pubkey_verify_hash2(pubkey, sign_algo, - GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA, - hash_data, &signature); + ret = gnutls_pubkey_verify_hash2( + pubkey, sign_algo, + GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA, hash_data, + &signature); if (ret < 0) - testfail - ("gnutls_pubkey_verify_hash-4 (legacy raw hashed data)\n"); + testfail( + "gnutls_pubkey_verify_hash-4 (legacy raw hashed data)\n"); } gnutls_free(signature.data); gnutls_free(signature2.data); diff --git a/tests/sign-verify.c b/tests/sign-verify.c index b37c7eb74a..533a6c6a8b 100644 --- a/tests/sign-verify.c +++ b/tests/sign-verify.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,9 +30,9 @@ #include #include #ifndef _WIN32 -# include -# include -# include +#include +#include +#include #endif #include #include @@ -48,41 +48,33 @@ static void tls_log_func(int level, const char *str) /* sha1 hash of "hello" string */ const gnutls_datum_t sha1_hash_data = { - (void *) - "\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" - "\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", + (void *)"\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" + "\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", 20 }; const gnutls_datum_t sha256_hash_data = { - (void *) - "\x2c\xf2\x4d\xba\x5f\xb0\xa3\x0e\x26\xe8\x3b\x2a\xc5\xb9\xe2\x9e" - "\x1b\x16\x1e\x5c\x1f\xa7\x42\x5e\x73\x04\x33\x62\x93\x8b\x98\x24", + (void *)"\x2c\xf2\x4d\xba\x5f\xb0\xa3\x0e\x26\xe8\x3b\x2a\xc5\xb9\xe2\x9e" + "\x1b\x16\x1e\x5c\x1f\xa7\x42\x5e\x73\x04\x33\x62\x93\x8b\x98\x24", 32 }; const gnutls_datum_t sha256_invalid_hash_data = { - (void *) - "\x2c\xf2\x4d\xba\x5f\xb1\xa3\x0e\x26\xe8\x3b\x2a\xc5\xb9\xe2\x9e" - "\x1b\x16\x1e\x5c\x1f\xa3\x42\x5e\x73\x04\x33\x62\x93\x8b\x98\x24", + (void *)"\x2c\xf2\x4d\xba\x5f\xb1\xa3\x0e\x26\xe8\x3b\x2a\xc5\xb9\xe2\x9e" + "\x1b\x16\x1e\x5c\x1f\xa3\x42\x5e\x73\x04\x33\x62\x93\x8b\x98\x24", 32 }; const gnutls_datum_t sha1_invalid_hash_data = { - (void *) - "\xaa\xf4\xc6\x1d\xdc\xca\xe8\xa2\xda\xbe" - "\xde\x0f\x3b\x48\x2c\xb9\xae\xa9\x43\x4d", + (void *)"\xaa\xf4\xc6\x1d\xdc\xca\xe8\xa2\xda\xbe" + "\xde\x0f\x3b\x48\x2c\xb9\xae\xa9\x43\x4d", 20 }; -const gnutls_datum_t raw_data = { - (void *)"hello", - 5 -}; +const gnutls_datum_t raw_data = { (void *)"hello", 5 }; #define tests common_key_tests -#define testfail(fmt, ...) \ - fail("%s: "fmt, tests[i].name, ##__VA_ARGS__) +#define testfail(fmt, ...) fail("%s: " fmt, tests[i].name, ##__VA_ARGS__) void doit(void) { @@ -123,9 +115,8 @@ void doit(void) if (ret < 0) testfail("gnutls_x509_privkey_init\n"); - ret = - gnutls_x509_privkey_import(key, &tests[i].key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_privkey_import(key, &tests[i].key, + GNUTLS_X509_FMT_PEM); if (ret < 0) testfail("gnutls_x509_privkey_import\n"); @@ -141,17 +132,15 @@ void doit(void) if (ret < 0) testfail("gnutls_privkey_import_x509\n"); - ret = - gnutls_privkey_sign_hash(privkey, tests[i].digest, - tests[i].sign_flags, hash_data, - &signature2); + ret = gnutls_privkey_sign_hash(privkey, tests[i].digest, + tests[i].sign_flags, hash_data, + &signature2); if (ret < 0) testfail("gnutls_privkey_sign_hash\n"); - ret = - gnutls_privkey_sign_data(privkey, tests[i].digest, - tests[i].sign_flags, &raw_data, - &signature); + ret = gnutls_privkey_sign_data(privkey, tests[i].digest, + tests[i].sign_flags, &raw_data, + &signature); if (ret < 0) testfail("gnutls_x509_privkey_sign_hash\n"); @@ -159,9 +148,8 @@ void doit(void) if (ret < 0) testfail("gnutls_x509_crt_init\n"); - ret = - gnutls_x509_crt_import(crt, &tests[i].cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(crt, &tests[i].cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) testfail("gnutls_x509_crt_import\n"); @@ -169,95 +157,89 @@ void doit(void) if (ret < 0) testfail("gnutls_x509_pubkey_import\n"); - ret = - gnutls_pubkey_verify_hash2(pubkey, tests[i].sigalgo, - GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, - hash_data, &signature); + ret = gnutls_pubkey_verify_hash2( + pubkey, tests[i].sigalgo, + GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, hash_data, + &signature); if (ret < 0) testfail("gnutls_x509_pubkey_verify_hash2\n"); - ret = - gnutls_pubkey_verify_hash2(pubkey, tests[i].sigalgo, - GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, - hash_data, &signature2); + ret = gnutls_pubkey_verify_hash2( + pubkey, tests[i].sigalgo, + GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, hash_data, + &signature2); if (ret < 0) - testfail - ("gnutls_x509_pubkey_verify_hash-1 (hashed data)\n"); + testfail( + "gnutls_x509_pubkey_verify_hash-1 (hashed data)\n"); /* should fail */ - ret = - gnutls_pubkey_verify_hash2(pubkey, tests[i].sigalgo, - GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, - invalid_hash_data, &signature2); + ret = gnutls_pubkey_verify_hash2( + pubkey, tests[i].sigalgo, + GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, invalid_hash_data, + &signature2); if (ret != GNUTLS_E_PK_SIG_VERIFY_FAILED) - testfail - ("gnutls_x509_pubkey_verify_hash-2 (hashed data)\n"); + testfail( + "gnutls_x509_pubkey_verify_hash-2 (hashed data)\n"); - sign_algo = - gnutls_pk_to_sign(gnutls_pubkey_get_pk_algorithm - (pubkey, NULL), tests[i].digest); + sign_algo = gnutls_pk_to_sign( + gnutls_pubkey_get_pk_algorithm(pubkey, NULL), + tests[i].digest); - ret = - gnutls_pubkey_verify_hash2(pubkey, sign_algo, - GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, - hash_data, &signature2); + ret = gnutls_pubkey_verify_hash2( + pubkey, sign_algo, GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, + hash_data, &signature2); if (ret < 0) - testfail - ("gnutls_x509_pubkey_verify_hash2-1 (hashed data)\n"); + testfail( + "gnutls_x509_pubkey_verify_hash2-1 (hashed data)\n"); /* should fail */ - ret = - gnutls_pubkey_verify_hash2(pubkey, sign_algo, - GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, - invalid_hash_data, &signature2); + ret = gnutls_pubkey_verify_hash2( + pubkey, sign_algo, GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1, + invalid_hash_data, &signature2); if (ret != GNUTLS_E_PK_SIG_VERIFY_FAILED) - testfail - ("gnutls_x509_pubkey_verify_hash2-2 (hashed data)\n"); + testfail( + "gnutls_x509_pubkey_verify_hash2-2 (hashed data)\n"); /* test the raw interface */ gnutls_free(signature.data); if (gnutls_pubkey_get_pk_algorithm(pubkey, NULL) == GNUTLS_PK_RSA) { - - ret = - gnutls_privkey_sign_hash(privkey, - tests[i].digest, - GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, - hash_data, &signature); + ret = gnutls_privkey_sign_hash( + privkey, tests[i].digest, + GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, hash_data, + &signature); if (ret < 0) testfail("gnutls_privkey_sign_hash: %s\n", gnutls_strerror(ret)); - sign_algo = - gnutls_pk_to_sign - (gnutls_pubkey_get_pk_algorithm(pubkey, NULL), - tests[i].digest); + sign_algo = gnutls_pk_to_sign( + gnutls_pubkey_get_pk_algorithm(pubkey, NULL), + tests[i].digest); - ret = - gnutls_pubkey_verify_hash2(pubkey, sign_algo, - GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA, - hash_data, &signature); + ret = gnutls_pubkey_verify_hash2( + pubkey, sign_algo, + GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA, hash_data, + &signature); if (ret < 0) - testfail - ("gnutls_pubkey_verify_hash-3 (raw hashed data)\n"); + testfail( + "gnutls_pubkey_verify_hash-3 (raw hashed data)\n"); gnutls_free(signature.data); /* test the legacy API */ - ret = - gnutls_privkey_sign_raw_data(privkey, 0, - hash_data, &signature); + ret = gnutls_privkey_sign_raw_data( + privkey, 0, hash_data, &signature); if (ret < 0) testfail("gnutls_privkey_sign_raw_data: %s\n", gnutls_strerror(ret)); - ret = - gnutls_pubkey_verify_hash2(pubkey, sign_algo, - GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA, - hash_data, &signature); + ret = gnutls_pubkey_verify_hash2( + pubkey, sign_algo, + GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA, hash_data, + &signature); if (ret < 0) - testfail - ("gnutls_pubkey_verify_hash-4 (legacy raw hashed data)\n"); + testfail( + "gnutls_pubkey_verify_hash-4 (legacy raw hashed data)\n"); } gnutls_free(signature.data); gnutls_free(signature2.data); diff --git a/tests/simple.c b/tests/simple.c index 626d8714c5..98423f0272 100644 --- a/tests/simple.c +++ b/tests/simple.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -28,18 +28,20 @@ #include "utils.h" -#define CHECK_OK(x,y,z) \ - if (x >= 0 && y >= 0 && z >= 0) { \ - if (!gnutls_check_version_numeric(x, y, z)) { \ - fail("error in gnutls_check_version_numeric %d.%d.%d: %d\n", x, y, z, __LINE__); \ - exit(1); \ - } \ +#define CHECK_OK(x, y, z) \ + if (x >= 0 && y >= 0 && z >= 0) { \ + if (!gnutls_check_version_numeric(x, y, z)) { \ + fail("error in gnutls_check_version_numeric %d.%d.%d: %d\n", \ + x, y, z, __LINE__); \ + exit(1); \ + } \ } -#define CHECK_FAIL(x,y,z) \ - if (gnutls_check_version_numeric(x, y, z)) { \ - fail("error in neg gnutls_check_version_numeric %d.%d.%d: %d\n", x, y, z, __LINE__); \ - exit(1); \ +#define CHECK_FAIL(x, y, z) \ + if (gnutls_check_version_numeric(x, y, z)) { \ + fail("error in neg gnutls_check_version_numeric %d.%d.%d: %d\n", \ + x, y, z, __LINE__); \ + exit(1); \ } void doit(void) @@ -50,20 +52,20 @@ void doit(void) gnutls_check_version(NULL)); } - if (!gnutls_check_version_numeric - (GNUTLS_VERSION_MAJOR, GNUTLS_VERSION_MINOR, - GNUTLS_VERSION_PATCH)) { + if (!gnutls_check_version_numeric(GNUTLS_VERSION_MAJOR, + GNUTLS_VERSION_MINOR, + GNUTLS_VERSION_PATCH)) { fail("error in gnutls_check_version_numeric 1\n"); exit(1); } CHECK_FAIL(99, 9, 9) - CHECK_FAIL(90, 1, 0) - CHECK_FAIL(90, 0, 0) - CHECK_OK(2, 0, 0) - CHECK_OK(2, 99, 99) - CHECK_OK(3, 0, 0) - if (!gnutls_check_version(GNUTLS_VERSION)) + CHECK_FAIL(90, 1, 0) + CHECK_FAIL(90, 0, 0) + CHECK_OK(2, 0, 0) + CHECK_OK(2, 99, 99) + CHECK_OK(3, 0, 0) + if (!gnutls_check_version(GNUTLS_VERSION)) fail("gnutls_check_version ERROR\n"); { @@ -77,15 +79,14 @@ void doit(void) for (i = 0; algs[i]; i++) { if (debug) - printf("pk_list[%d] = %d = %s = %d\n", - (int)i, algs[i], - gnutls_pk_algorithm_get_name(algs - [i]), - gnutls_pk_get_id - (gnutls_pk_algorithm_get_name(algs[i]))); - if (gnutls_pk_get_id - (gnutls_pk_algorithm_get_name(algs[i])) - != algs[i]) + printf("pk_list[%d] = %d = %s = %d\n", (int)i, + algs[i], + gnutls_pk_algorithm_get_name(algs[i]), + gnutls_pk_get_id( + gnutls_pk_algorithm_get_name( + algs[i]))); + if (gnutls_pk_get_id(gnutls_pk_algorithm_get_name( + algs[i])) != algs[i]) fail("gnutls_pk id doesn't match\n"); } @@ -110,16 +111,14 @@ void doit(void) gnutls_digest_algorithm_t hash; if (debug) - printf("sign_list[%d] = %d = %s = %d\n", - (int)i, algs[i], - gnutls_sign_algorithm_get_name(algs - [i]), - gnutls_sign_get_id - (gnutls_sign_algorithm_get_name - (algs[i]))); - if (gnutls_sign_get_id - (gnutls_sign_algorithm_get_name(algs[i])) != - algs[i]) + printf("sign_list[%d] = %d = %s = %d\n", (int)i, + algs[i], + gnutls_sign_algorithm_get_name(algs[i]), + gnutls_sign_get_id( + gnutls_sign_algorithm_get_name( + algs[i]))); + if (gnutls_sign_get_id(gnutls_sign_algorithm_get_name( + algs[i])) != algs[i]) fail("gnutls_sign id for %s doesn't match\n", gnutls_sign_algorithm_get_name(algs[i])); @@ -127,14 +126,17 @@ void doit(void) if (hash != GNUTLS_DIG_UNKNOWN) { const char *name = gnutls_digest_get_name(hash); gnutls_digest_algorithm_t hash2 = - gnutls_digest_get_id(name); + gnutls_digest_get_id(name); /* gnutls_digest_get_id returns * GNUTLS_DIG_UNKNOWN if the algorithm is not * compiled in. */ - if (hash2 != GNUTLS_DIG_UNKNOWN - && hash2 != hash) - fail("gnutls_digest id for %s doesn't match %s\n", gnutls_sign_algorithm_get_name(algs[i]), name); + if (hash2 != GNUTLS_DIG_UNKNOWN && + hash2 != hash) + fail("gnutls_digest id for %s doesn't match %s\n", + gnutls_sign_algorithm_get_name( + algs[i]), + name); } } diff --git a/tests/slow/cipher-api-test.c b/tests/slow/cipher-api-test.c index 34d46d8e90..8485001db2 100644 --- a/tests/slow/cipher-api-test.c +++ b/tests/slow/cipher-api-test.c @@ -43,16 +43,16 @@ int main(int argc, char **argv) } #else -# include -# include -# include -# include -# include - -# define AES_GCM_ENCRYPT_PLAINTEXT_MAX ((1ULL << 36) - 32) -# if SIZE_MAX >= AES_GCM_ENCRYPT_PLAINTEXT_MAX -# define TEST_AES_GCM_ENCRYPT_PLAINTEXT_SIZE 1 -# endif +#include +#include +#include +#include +#include + +#define AES_GCM_ENCRYPT_PLAINTEXT_MAX ((1ULL << 36) - 32) +#if SIZE_MAX >= AES_GCM_ENCRYPT_PLAINTEXT_MAX +#define TEST_AES_GCM_ENCRYPT_PLAINTEXT_SIZE 1 +#endif static void tls_log_func(int level, const char *str) { @@ -131,12 +131,12 @@ static void test_cipher_invalid_partial(int algo) ret = global_init(); if (ret < 0) { - fail("Cannot initialize library\n"); /*errcode 1 */ + fail("Cannot initialize library\n"); /*errcode 1 */ } ret = gnutls_cipher_init(&ch, algo, &key, &iv); if (ret < 0) - fail("gnutls_cipher_init failed\n"); /*errcode 1 */ + fail("gnutls_cipher_init failed\n"); /*errcode 1 */ /* try encrypting in a way that violates nettle's block conventions */ ret = gnutls_cipher_encrypt(ch, data, sizeof(data) - 1); @@ -199,19 +199,18 @@ static void test_aead_happy(int algo) fail("gnutls_aead_cipher_init failed\n"); ctext_len = sizeof(ctext); - ret = gnutls_aead_cipher_encrypt(ch, iv.data, iv.size, - auth, sizeof(auth), tag_len, - ptext, sizeof(ptext), - ctext, &ctext_len); + ret = gnutls_aead_cipher_encrypt(ch, iv.data, iv.size, auth, + sizeof(auth), tag_len, ptext, + sizeof(ptext), ctext, &ctext_len); if (ret < 0) fail("could not encrypt data\n"); if (ctext_len != sizeof(ptext) + tag_len) fail("output ciphertext length mismatch\n"); - ret = gnutls_aead_cipher_decrypt(ch, iv.data, iv.size, - auth, sizeof(auth), tag_len, - ctext, ctext_len, ptext, &ptext_len); + ret = gnutls_aead_cipher_decrypt(ch, iv.data, iv.size, auth, + sizeof(auth), tag_len, ctext, + ctext_len, ptext, &ptext_len); if (ret < 0) fail("could not decrypt data: %s\n", gnutls_strerror(ret)); @@ -255,12 +254,12 @@ static void test_aead_invalid_add_auth(int algo) ret = global_init(); if (ret < 0) { - fail("Cannot initialize library\n"); /*errcode 1 */ + fail("Cannot initialize library\n"); /*errcode 1 */ } ret = gnutls_cipher_init(&ch, algo, &key, &iv); if (ret < 0) - fail("gnutls_cipher_init failed\n"); /*errcode 1 */ + fail("gnutls_cipher_init failed\n"); /*errcode 1 */ ret = gnutls_cipher_add_auth(ch, data, sizeof(data) - 1); if (ret < 0) @@ -308,12 +307,12 @@ static void test_aead_invalid_partial_encrypt(int algo) ret = global_init(); if (ret < 0) { - fail("Cannot initialize library\n"); /*errcode 1 */ + fail("Cannot initialize library\n"); /*errcode 1 */ } ret = gnutls_cipher_init(&ch, algo, &key, &iv); if (ret < 0) - fail("gnutls_cipher_init failed\n"); /*errcode 1 */ + fail("gnutls_cipher_init failed\n"); /*errcode 1 */ /* try encrypting in a way that violates nettle's AEAD conventions */ ret = gnutls_cipher_encrypt(ch, data, sizeof(data) - 1); @@ -378,10 +377,9 @@ static void test_aead_invalid_short_decrypt(int algo) fail("gnutls_aead_cipher_init failed\n"); ctext_len = sizeof(ctext); - ret = gnutls_aead_cipher_encrypt(ch, iv.data, iv.size, - auth, sizeof(auth), tag_len, - ptext, sizeof(ptext), - ctext, &ctext_len); + ret = gnutls_aead_cipher_encrypt(ch, iv.data, iv.size, auth, + sizeof(auth), tag_len, ptext, + sizeof(ptext), ctext, &ctext_len); if (ret < 0) fail("could not encrypt data\n"); @@ -389,9 +387,9 @@ static void test_aead_invalid_short_decrypt(int algo) fail("output ciphertext length mismatch\n"); ptext_len = 0; - ret = gnutls_aead_cipher_decrypt(ch, iv.data, iv.size, - auth, sizeof(auth), tag_len, - ctext, ctext_len, ptext, &ptext_len); + ret = gnutls_aead_cipher_decrypt(ch, iv.data, iv.size, auth, + sizeof(auth), tag_len, ctext, + ctext_len, ptext, &ptext_len); if (ret >= 0) fail("succeeded in decrypting data onto a short buffer\n"); if (ret != GNUTLS_E_SHORT_MEMORY_BUFFER) @@ -405,7 +403,7 @@ static void test_aead_invalid_short_decrypt(int algo) return; } -# ifdef TEST_AES_GCM_ENCRYPT_PLAINTEXT_SIZE +#ifdef TEST_AES_GCM_ENCRYPT_PLAINTEXT_SIZE /* Test whether an invalid call to gnutls_cipher_encrypt() with too * long message is caught */ static void test_aead_invalid_too_long_encrypt(int algo) @@ -441,12 +439,12 @@ static void test_aead_invalid_too_long_encrypt(int algo) ret = global_init(); if (ret < 0) { - fail("Cannot initialize library\n"); /*errcode 1 */ + fail("Cannot initialize library\n"); /*errcode 1 */ } ret = gnutls_cipher_init(&ch, algo, &key, &iv); if (ret < 0) - fail("gnutls_cipher_init failed\n"); /*errcode 1 */ + fail("gnutls_cipher_init failed\n"); /*errcode 1 */ /* Test exceeding AES-GCM plaintext limit */ ret = gnutls_cipher_encrypt(ch, data, sizeof(data)); @@ -471,7 +469,7 @@ static void test_aead_invalid_too_long_encrypt(int algo) gnutls_global_deinit(); return; } -# endif +#endif static void check_status(int status) { @@ -510,8 +508,7 @@ static void fork_subtest(subtest func, int algo) } }; -static -void start(const char *name, int algo, unsigned aead) +static void start(const char *name, int algo, unsigned aead) { success("trying %s\n", name); @@ -538,11 +535,11 @@ void start(const char *name, int algo, unsigned aead) success("trying %s: test_aead_invalid_short_decrypt\n", name); fork_subtest(test_aead_invalid_short_decrypt, algo); -# if TEST_AES_GCM_ENCRYPT_PLAINTEXT_SIZE +#if TEST_AES_GCM_ENCRYPT_PLAINTEXT_SIZE success("trying %s: test_aead_invalid_too_long_encrypt\n", name); fork_subtest(test_aead_invalid_too_long_encrypt, algo); -# endif +#endif } } diff --git a/tests/slow/cipher-openssl-compat.c b/tests/slow/cipher-openssl-compat.c index 663f73e0b1..108a7b02e1 100644 --- a/tests/slow/cipher-openssl-compat.c +++ b/tests/slow/cipher-openssl-compat.c @@ -14,11 +14,11 @@ * with openssl. */ -#define BSIZE (64*1024+12) -#define B2SIZE (1024+7) +#define BSIZE (64 * 1024 + 12) +#define B2SIZE (1024 + 7) static unsigned char buffer_auth[B2SIZE]; static unsigned char orig_plain_data[BSIZE]; -static unsigned char enc_data[BSIZE + 32]; /* allow for tag */ +static unsigned char enc_data[BSIZE + 32]; /* allow for tag */ static unsigned char dec_data[BSIZE]; static int cipher_test(const char *ocipher, gnutls_cipher_algorithm_t gcipher, @@ -52,13 +52,11 @@ static int cipher_test(const char *ocipher, gnutls_cipher_algorithm_t gcipher, #endif } - for (i = 0; i < 32; i++) { /* try with multiple keys and nonces */ - assert(gnutls_rnd - (GNUTLS_RND_NONCE, orig_plain_data, - sizeof(orig_plain_data)) >= 0); - assert(gnutls_rnd - (GNUTLS_RND_NONCE, buffer_auth, - sizeof(buffer_auth)) >= 0); + for (i = 0; i < 32; i++) { /* try with multiple keys and nonces */ + assert(gnutls_rnd(GNUTLS_RND_NONCE, orig_plain_data, + sizeof(orig_plain_data)) >= 0); + assert(gnutls_rnd(GNUTLS_RND_NONCE, buffer_auth, + sizeof(buffer_auth)) >= 0); assert(gnutls_rnd(GNUTLS_RND_NONCE, key, sizeof(key)) >= 0); assert(gnutls_rnd(GNUTLS_RND_NONCE, nonce, sizeof(nonce)) >= 0); @@ -70,13 +68,11 @@ static int cipher_test(const char *ocipher, gnutls_cipher_algorithm_t gcipher, dnonce.size = gnutls_cipher_get_iv_size(gcipher); enc_data_size = sizeof(enc_data); - assert(gnutls_aead_cipher_encrypt(hd, dnonce.data, dnonce.size, - buffer_auth, - sizeof(buffer_auth), tag_size, - orig_plain_data, - sizeof(orig_plain_data), - enc_data, - &enc_data_size) >= 0); + assert(gnutls_aead_cipher_encrypt( + hd, dnonce.data, dnonce.size, buffer_auth, + sizeof(buffer_auth), tag_size, orig_plain_data, + sizeof(orig_plain_data), enc_data, + &enc_data_size) >= 0); if (debug) success("encrypted %d bytes, to %d\n", @@ -94,10 +90,11 @@ static int cipher_test(const char *ocipher, gnutls_cipher_algorithm_t gcipher, ocipher, gnutls_strerror(ret)); } - if (dec_data_size != sizeof(orig_plain_data) - || memcmp(dec_data, orig_plain_data, - sizeof(orig_plain_data)) != 0) { - fail("gnutls encrypt-decrypt failed (got: %d, expected: %d)\n", (int)dec_data_size, (int)sizeof(orig_plain_data)); + if (dec_data_size != sizeof(orig_plain_data) || + memcmp(dec_data, orig_plain_data, + sizeof(orig_plain_data)) != 0) { + fail("gnutls encrypt-decrypt failed (got: %d, expected: %d)\n", + (int)dec_data_size, (int)sizeof(orig_plain_data)); } gnutls_aead_cipher_deinit(hd); @@ -105,82 +102,80 @@ static int cipher_test(const char *ocipher, gnutls_cipher_algorithm_t gcipher, ctx = EVP_CIPHER_CTX_new(); #if OPENSSL_VERSION_NUMBER >= 0x10100000L - if (gcipher == GNUTLS_CIPHER_AES_128_CCM - || gcipher == GNUTLS_CIPHER_AES_256_CCM) { + if (gcipher == GNUTLS_CIPHER_AES_128_CCM || + gcipher == GNUTLS_CIPHER_AES_256_CCM) { assert(EVP_CipherInit_ex(ctx, evp_cipher, 0, 0, 0, 0) > 0); - assert(EVP_CIPHER_CTX_ctrl - (ctx, EVP_CTRL_CCM_SET_IVLEN, dnonce.size, - 0) == 1); - assert(EVP_CIPHER_CTX_ctrl - (ctx, EVP_CTRL_CCM_SET_TAG, tag_size, - enc_data + enc_data_size - tag_size) == 1); + assert(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_CCM_SET_IVLEN, + dnonce.size, 0) == 1); + assert(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_CCM_SET_TAG, + tag_size, + enc_data + enc_data_size - + tag_size) == 1); assert(EVP_CipherInit_ex(ctx, 0, 0, key, nonce, 0) > 0); dec_data_size2 = sizeof(dec_data); /* Add plain size */ - assert(EVP_CipherUpdate - (ctx, NULL, &dec_data_size2, NULL, - enc_data_size - tag_size) > 0); + assert(EVP_CipherUpdate(ctx, NULL, &dec_data_size2, + NULL, + enc_data_size - tag_size) > 0); /* Add AAD */ - assert(EVP_CipherUpdate - (ctx, NULL, &dec_data_size2, buffer_auth, - sizeof(buffer_auth)) > 0); + assert(EVP_CipherUpdate(ctx, NULL, &dec_data_size2, + buffer_auth, + sizeof(buffer_auth)) > 0); /* Decrypt */ - assert(EVP_CipherUpdate - (ctx, dec_data, &dec_data_size2, enc_data, - enc_data_size - tag_size) > 0); + assert(EVP_CipherUpdate(ctx, dec_data, &dec_data_size2, + enc_data, + enc_data_size - tag_size) > 0); dec_data_size = dec_data_size2; dec_data_size2 = tag_size; - if (dec_data_size != sizeof(orig_plain_data) - || memcmp(dec_data, orig_plain_data, - sizeof(orig_plain_data)) != 0) { + if (dec_data_size != sizeof(orig_plain_data) || + memcmp(dec_data, orig_plain_data, + sizeof(orig_plain_data)) != 0) { fail("openssl decrypt failed for %s\n", ocipher); } } else #endif { - assert(EVP_CipherInit_ex - (ctx, evp_cipher, NULL, key, nonce, 0) > 0); + assert(EVP_CipherInit_ex(ctx, evp_cipher, NULL, key, + nonce, 0) > 0); EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GCM_SET_TAG, tag_size, enc_data + enc_data_size - - tag_size); + tag_size); dec_data_size2 = sizeof(dec_data); /* Add AAD */ - assert(EVP_CipherUpdate - (ctx, NULL, &dec_data_size2, buffer_auth, - sizeof(buffer_auth)) > 0); + assert(EVP_CipherUpdate(ctx, NULL, &dec_data_size2, + buffer_auth, + sizeof(buffer_auth)) > 0); /* Decrypt */ - assert(EVP_CipherUpdate - (ctx, dec_data, &dec_data_size2, enc_data, - enc_data_size - tag_size) > 0); + assert(EVP_CipherUpdate(ctx, dec_data, &dec_data_size2, + enc_data, + enc_data_size - tag_size) > 0); dec_data_size = dec_data_size2; dec_data_size2 = tag_size; assert(EVP_CipherFinal_ex(ctx, tag, &dec_data_size2) > 0); - if (dec_data_size != sizeof(orig_plain_data) - || memcmp(dec_data, orig_plain_data, - sizeof(orig_plain_data)) != 0) { + if (dec_data_size != sizeof(orig_plain_data) || + memcmp(dec_data, orig_plain_data, + sizeof(orig_plain_data)) != 0) { fail("openssl decrypt failed for %s\n", ocipher); } - } EVP_CIPHER_CTX_free(ctx); - } return 0; diff --git a/tests/slow/cipher-test.c b/tests/slow/cipher-test.c index da7e7e7673..9c7087d632 100644 --- a/tests/slow/cipher-test.c +++ b/tests/slow/cipher-test.c @@ -20,7 +20,7 @@ int main(int argc, char **argv) exit(77); } #else -# include +#include static void handle_sigill(int sig) { diff --git a/tests/slow/gendh.c b/tests/slow/gendh.c index 67fe722505..f90530508e 100644 --- a/tests/slow/gendh.c +++ b/tests/slow/gendh.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include diff --git a/tests/slow/hash-large.c b/tests/slow/hash-large.c index 3817e1c38b..0b350de9c7 100644 --- a/tests/slow/hash-large.c +++ b/tests/slow/hash-large.c @@ -19,7 +19,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,23 +35,23 @@ void doit(void) exit(77); } -#else /* working test */ +#else /* working test */ /* Test hashing on very large buffers >= 2^31 */ -# if !defined(_WIN32) -# include -# include +#if !defined(_WIN32) +#include +#include static void exit_77(int signo) { _exit(77); } -# endif +#endif -# define MIN(x,y) ((x)<(y))?(x):(y) +#define MIN(x, y) ((x) < (y)) ? (x) : (y) -# include +#include static size_t _mmap_size; static void *get_mem(size_t size) @@ -80,26 +80,27 @@ void doit(void) if (sizeof(size) <= 4) exit(77); -# if !defined(_WIN32) +#if !defined(_WIN32) signal(SIGSEGV, exit_77); signal(SIGBUS, exit_77); -# endif +#endif global_init(); - size = (ssize_t) UINT_MAX + (ssize_t) 64 *1024; + size = (ssize_t)UINT_MAX + (ssize_t)64 * 1024; buf = get_mem(size); if (buf == NULL) exit(77); - if (size < (ssize_t) UINT_MAX) + if (size < (ssize_t)UINT_MAX) exit(77); err = gnutls_hash_fast(GNUTLS_DIG_SHA256, buf, size, digest); if (err < 0) fail("gnutls_hash_fast(SHA256) failed: %d\n", err); else { -# define SHA256_HASH "\x80\x92\xd9\xbe\x54\xa0\xe9\xd7\x7c\xb8\xe4\x2d\xd3\x7c\x19\xfe\x4e\x68\x84\x33\x71\xef\x1c\x81\xd6\x44\x36\x52\x06\xd8\x4b\x8a" +#define SHA256_HASH \ + "\x80\x92\xd9\xbe\x54\xa0\xe9\xd7\x7c\xb8\xe4\x2d\xd3\x7c\x19\xfe\x4e\x68\x84\x33\x71\xef\x1c\x81\xd6\x44\x36\x52\x06\xd8\x4b\x8a" if (memcmp(digest, SHA256_HASH, 32) == 0) { if (debug) success("gnutls_hash_fast(SHA256) %lu OK\n", @@ -141,7 +142,8 @@ void doit(void) if (err < 0) fail("gnutls_hash_fast(SHA1) failed: %d\n", err); else { -# define SHA1_HASH "\x75\xd2\x67\x3f\xec\x73\xe4\x57\xb8\x40\xb3\xb5\xf1\xc7\xa8\x1a\x2d\x11\x7e\xd9" +#define SHA1_HASH \ + "\x75\xd2\x67\x3f\xec\x73\xe4\x57\xb8\x40\xb3\xb5\xf1\xc7\xa8\x1a\x2d\x11\x7e\xd9" if (memcmp(digest, SHA1_HASH, 20) == 0) { if (debug) success("gnutls_hash_fast(SHA1) OK\n"); @@ -151,13 +153,13 @@ void doit(void) } } - err = - gnutls_hmac_fast(GNUTLS_MAC_SHA1, "keykeykey", 9, buf, size, - digest); + err = gnutls_hmac_fast(GNUTLS_MAC_SHA1, "keykeykey", 9, buf, size, + digest); if (err < 0) fail("gnutls_hmac_fast(SHA1) failed: %d\n", err); else { -# define SHA1_MAC "\xe2\xe9\x84\x48\x53\xe3\x0b\xfe\x45\x04\xf6\x6b\x5b\x6d\x4d\x2c\xa3\x0f\xcf\x23" +#define SHA1_MAC \ + "\xe2\xe9\x84\x48\x53\xe3\x0b\xfe\x45\x04\xf6\x6b\x5b\x6d\x4d\x2c\xa3\x0f\xcf\x23" if (memcmp(digest, SHA1_MAC, 20) == 0) { if (debug) success("gnutls_hmac_fast(SHA1) OK\n"); diff --git a/tests/spki-abstract.c b/tests/spki-abstract.c index 60e9557375..110c60c13f 100644 --- a/tests/spki-abstract.c +++ b/tests/spki-abstract.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -55,17 +55,16 @@ static void pubkey_check(void) ret = gnutls_pubkey_init(&pubkey); if (ret < 0) { - fprintf(stderr, - "gnutls_pubkey_init: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_pubkey_init: %s\n", + gnutls_strerror(ret)); exit(1); } - ret = - gnutls_pubkey_import_x509_raw(pubkey, &server_ca3_rsa_pss2_cert, - GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_pubkey_import_x509_raw(pubkey, &server_ca3_rsa_pss2_cert, + GNUTLS_X509_FMT_PEM, 0); if (ret < 0) { - fprintf(stderr, - "gnutls_pubkey_import: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_pubkey_import: %s\n", + gnutls_strerror(ret)); exit(1); } @@ -101,17 +100,16 @@ static void key_check(void) ret = gnutls_privkey_init(&key); if (ret < 0) { - fprintf(stderr, - "gnutls_privkey_init: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_privkey_init: %s\n", + gnutls_strerror(ret)); exit(1); } - ret = - gnutls_privkey_import_x509_raw(key, &server_ca3_rsa_pss2_key, - GNUTLS_X509_FMT_PEM, NULL, 0); + ret = gnutls_privkey_import_x509_raw(key, &server_ca3_rsa_pss2_key, + GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) { - fprintf(stderr, - "gnutls_privkey_import: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_privkey_import: %s\n", + gnutls_strerror(ret)); exit(1); } diff --git a/tests/spki.c b/tests/spki.c index ff47ff3a4b..88d97e2b37 100644 --- a/tests/spki.c +++ b/tests/spki.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -63,8 +63,8 @@ static void crq_check(void) ret = gnutls_x509_crq_init(&crq); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crq_init: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_crq_init: %s\n", + gnutls_strerror(ret)); exit(1); } @@ -127,17 +127,16 @@ static void cert_check(void) ret = gnutls_x509_crt_init(&crt); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_init: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_crt_init: %s\n", + gnutls_strerror(ret)); exit(1); } - ret = - gnutls_x509_crt_import(crt, &server_ca3_rsa_pss2_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(crt, &server_ca3_rsa_pss2_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_import: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_crt_import: %s\n", + gnutls_strerror(ret)); exit(1); } @@ -185,17 +184,15 @@ static void key_check(void) ret = gnutls_x509_privkey_init(&key); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_privkey_init: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_privkey_init: %s\n", + gnutls_strerror(ret)); exit(1); } - ret = - gnutls_x509_privkey_import(key, &server_ca3_rsa_pss2_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_privkey_import(key, &server_ca3_rsa_pss2_key, + GNUTLS_X509_FMT_PEM); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_privkey_import: %s\n", + fprintf(stderr, "gnutls_x509_privkey_import: %s\n", gnutls_strerror(ret)); exit(1); } diff --git a/tests/srp.c b/tests/srp.c index 1fc582c901..d2b0689553 100644 --- a/tests/srp.c +++ b/tests/srp.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -36,17 +36,17 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" static void terminate(void); @@ -64,45 +64,42 @@ static void client_log_func(int level, const char *str) } static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" - "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" - "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" - "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" - "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" - "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" - "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" - "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" - "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" - "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" - "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" - "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" + "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" + "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" + "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" + "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" + "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" + "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" + "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" + "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" + "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" + "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" + "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" - "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" - "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" - "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" - "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" - "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" - "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" - "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" - "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" - "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" - "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" - "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" - "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" + "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" + "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" + "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" + "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" + "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" + "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" + "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" + "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" + "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" + "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" + "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" + "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; static void client(int fd, const char *prio, const char *user, const char *pass, int exp_err) @@ -144,8 +141,7 @@ static void client(int fd, const char *prio, const char *user, const char *pass, */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0 && ret == exp_err) { if (debug) @@ -164,11 +160,11 @@ static void client(int fd, const char *prio, const char *user, const char *pass, if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); gnutls_deinit(session); @@ -212,9 +208,8 @@ static void server(int fd, const char *prio) "tpasswd.conf"); gnutls_certificate_allocate_credentials(&s_x509_cred); - gnutls_certificate_set_x509_key_mem(s_x509_cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(s_x509_cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); assert(gnutls_init(&session, GNUTLS_SERVER) >= 0); @@ -231,8 +226,7 @@ static void server(int fd, const char *prio) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -245,8 +239,8 @@ static void server(int fd, const char *prio) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); kx = gnutls_kx_get(session); if (kx != GNUTLS_KX_SRP && kx != GNUTLS_KX_SRP_RSA && @@ -311,23 +305,23 @@ static void start(const char *name, const char *prio, const char *user, /* test1-7 are valid users, test9 uses parameter 9 which is disallowed by the RFC5054 spec */ const char *tpasswd_file = - "test:CsrY0PxYlYCAa8UuWUrcjpqBvG6ImlAdGwEUh3tN2DSDBbMWTvnUl7A8Hw7l0zFHwyLH5rh0llrmu/v.Df2FjDEGy0s0rYR5ARE2XlXPl66xhevHj5vitD0Qvq/J0x1v0zMWJSgq/Ah2MoOrw9aBEsQUgf9MddiHQKjE3Vetoq3:3h3cfS0WrBgPUsldDASSK0:1\n" - "test2:1J14yVX4iBa97cySs2/SduwnSbHxiz7WieE761psJQDxkc5flpumEwXbAgK5PrSZ0aZ6q7zyrAN1apJR1QQPAdyScJ6Jw4zjDP7AnezUVGbUNMJXhsI0NPwSc0c/415XfrnM1139yjWCr1qkcYMoN4bALppMMLB8glJkxy7t.3cmH9MkRRAjXXdUgAvHw2ZFLmB/8TlZDhnDS78xCSgLQs.oubZEEIgOWl7BT2.aW76fW3yKWdVrrHQDYPtR4hKx:11rUG9wSMLHe2Cu2p7dmFY:2\n" - "test3:LVJZDDuElMHuRt5/fcx64AhJ4erhFvbIhv/XCtD0tJI3OC6yEBzthZ1FSqblri9qtsvboPApbFHwP9WEluGtCOuzOON4LS8sSeQDBO.PaqjTnsmXKPYMKa.SuLXFuRTtdiFRwX2ZRy3GIWoCvxJtPDWCEYGBWfnjjGEYmQWvo534JVtVDyMaFItYlMTOtBSgsg488oJ5hIAU6jVyIQZGPVv8OHsPCpEt2UlTixzI9nAgQ0WL5ShKaAq0dksF/AY7UMKm0oHbtZeqAx6YcBzLbBhNvcEqYzH95ONpr.cUh91iRhVzdVscsFweSCtWsQrVT4zmSRwdsljeFQPqFbdeK:iWkELSVg3JxmyEq.XbjAW:3\n" - "test4:YziHBXMYwzekToUa6xL1Iq/4AXwpJWO9.Z6.Y6HHGt4eUcZEvVEw4eKEzPmj.K7US59u.X29F9D7xU62yiomPk5t8/3MzDCywlrAvcCVDhXwC3YpZEFl8OgAlp9izNrDErYY33cReBwH8ILHgFBJ2zo3xZqlWjWMrR50fW2J.MMitnx5GoR9dotZWLj9Zti0kODt5bUUeMcJmK/CJorwEtXz6OvuqGIdjrAZDp.5379KFO2smEVb7Qx6JiIDhEqODMMgXJZMSYSbKMgxXC9D.xN/IOn1/TnD.rNHN6LTrGChmbtKpCpuSJb2Bq2dwLFVxE/2UH4/ubYs/s5w9OcN60ypogvmtIWBqW2GyyfbLzHXiNDpJwV.tOktYEvRUG/fF59GF9hISbOIZ.7BhOK.z.iX4T7dEnHhDW16V.QScdOofcrhihb3Fi3Ym8ZpAqBlmlgLGsaGX23idkdF8xHZxJF1cuPosQ1jHjlrhcZotvChJdV3DZdl3m3isKK.bwF8:3QcZGdH5RkBBbB9R/cyNL4:4\n" - "test5:Ei8lv19Vi3.zrgd2DT6hHNVdd1FS2rTOg5N.ZHfIe6tsquMOQdP5JNVDqHaZL/Hr.ecaH5Y0fYCrdRby4iYWOvXvRadXBGP7noJl5II9qF84J8KUWGpdWOkKyIqXmRsdvafX2wB90JfMar7SyV0whR7taEV3fAWzQXVS7sHBA6Iyuj6qW1AIg/ObwYBR94xJuI8uKX4vGB0ptl90IS1nkI68OK.1PIt47IDdmJRxDxtbq3smZevPH9HxGCbWyPa7wp9GXmt7jjY/KhRnehLCaCWR3qpfTzqqYaohLFQ5KpkhCv0V5hFASioi1d5iVUsmJCCwWvHWf8fLKLSQ16D.yUNp6jH9AnrzBzybT5jdK647RxKpvogU67rDo4GQCMEjqoHfxExHz/LTN1mtDbX.MkphO71zGpE.bBMopQZvOzUJfpOjJwWADenalLvD6MXu4/.Hwf.cNH/cv/ueTRkXD8Fmsj0cmNkdLCel2qi3COWJxNP/B5ICQ5MnHg.S7qDSloYRcTvbU/FKGyoar8nhUdrl6w5sBwn1DKg3yijBucqEnOAPyLOmpAku8kTsbgoGVdQbEXdb7sUliLv9OnAARddRjIvAbO1mnWxHxFekBCmD5EtMVfGUUGM/ubQzjvH7PjsCCgBjo3nTPoCNGxzREich8/ChRdUvkzEuBvZXIc2:1nhQGuJI7yz9b0xtvpI87B:5\n" - "test7:6aCMlT0VUuuEnX.pn/K7cfQN1.EefEE9UiwzkBT2a4gdT4OY04pcl7kuKLEwvbb9bSfJWjAF8i8vMT.gg1ZSQTBAcWiBzAwHnnnKv4IgtsT0RAoAjYNjVxe26IMeE/XEdcS9OnOzSdEh2uy6.c9wqgzk0pph.KsQaMV4ivjeoUTdY8ccIiGGrLZcLaScCDeLMH.Ow7HFqMCIa07erJ7W2Xe/i7.0lm1p.oiTFbjNLv.6KXXihivldmz.ca9Dg2mqtp2SMCHul4wMDS3UFXka5/H/BwDFgT72OZpyy.wv9yL2ThHHiQtmc4.jkVutZUFH4gMxdln/3UyZDaXyj.UELFbRsA5VTrOcyqpg3nMqRLnBESC//fQjQPDzsIUG4TYeufCxfX6OK3BQq/KSYCIq08lIRRa1qoLE9FAcsnRO6PQXNtjatPJzgwW9mHZy32Bcy0dAu0mlR.35VGt9B72uAo3H8C6fzgLZHAQmAYvcz2b/LV4bT.FUeZz.D5XDIhxHDzLZOFgpZuYXivgf6B.1MgDd227L6AzVl.tfLF6Tr03Sfa5.FNoZLO.WHyHCje1GWGphLjg/C22QjBvV7NBwW50BkJBDO6HARaR/eZCE5qzmwAqrLbhd3DXYBD/0JSWysm3MO8u2Yhq47Vs8ZbcD835lIObjGOfzQL8iFQerO0H.pPQbwVewUg7fyP/TzSXsSQf0.7Otx6fUObWGEAJyY4Zk3YjBj0lwfQGDYuXjKnHxLgpWzWPtRvUbUxrPJMSFyJwGo8lJC5jZdfk/g/zShzgbib0LrYxwYoD1GvEcrLg/ylqEwDQh4/q7brzkpKUu.i4815rvCbPsqe7qFb6t4keDcNboSsFpRAiDttj8b8mcs/aq1YmPv/RKDO1DEu.QIabsJvdw7hw7sKz4m3OGdQEiFtktvihG0HDhY9UyfVTYm4WysZTx4Lf6WdwIFdkGLZJmhk8KdGPsHfSIo4fyIZieLkWa40e0ez5VevkcPN4C2AjXhVKUM5/9Cx09T38I8ZGIxGC.gF8JnXFarLcFjytuaNA7AlzuiEKlYKNf5AGNBXPoeScMJ.AghZLA0ZbsfbDbHUCSljnIuBhAFs8fL6ML/IqX59sORDYEiGKZnybedKYPgdZSRyy1T/qCDcDy6K/9sA4/gDzJ9ZdhUeasmn4GyXgJoHZ5VvT.ctilLkA36cAD8mHI1f8rcKAcsc5XtdQ5Mqqq6VkeXFAD37lnIc3/oVzBUKpHkyO.k0ibhKHkkmldQVpn1d/qUfhQxKq2S5FaOvqDUohERPoKLfEpsO8cd6NOUnwpGAx8wonNlNNIPaW2rJnRJc67zpznrzyXtTbbURl6eJJ/1nLtQy3xw:2Wva3rbYQapchVRUFxMTxT:7\n" - "test9:1UVtxG4aVjfnc6dPKMq6Cqin3rfrSoqOsGuD0Y6m4CnKqk190gb60JggCPwYbTgISssluub1TjmKlJeEfO18rXxyZgdn3KGJ3mBFLJ5x2t.kOyNRRpMGTK//7FMGiVQeJ12Mlh5p0faixLlHggR3P5e6LjpEZxsTTmU5d8pmACijdkOkuI8uDWKa4Aw.djIoAfUBhmgYGXCzx8axafeRJlZ/QYlx7tAAqdbIVrW2ES3cYTPCT/Yo8Le3IvjPH7Emw5TpIiQa/mcbEO043ewsUCEU9pSwQEyPj0ieXC5fGnTEk2KQ4ZzStgyUBDT4LgB8XGWT/DIQu13pIhwHy6yCuQ:3QFKSzbKxgN9qsll55ZlDu:9"; + "test:CsrY0PxYlYCAa8UuWUrcjpqBvG6ImlAdGwEUh3tN2DSDBbMWTvnUl7A8Hw7l0zFHwyLH5rh0llrmu/v.Df2FjDEGy0s0rYR5ARE2XlXPl66xhevHj5vitD0Qvq/J0x1v0zMWJSgq/Ah2MoOrw9aBEsQUgf9MddiHQKjE3Vetoq3:3h3cfS0WrBgPUsldDASSK0:1\n" + "test2:1J14yVX4iBa97cySs2/SduwnSbHxiz7WieE761psJQDxkc5flpumEwXbAgK5PrSZ0aZ6q7zyrAN1apJR1QQPAdyScJ6Jw4zjDP7AnezUVGbUNMJXhsI0NPwSc0c/415XfrnM1139yjWCr1qkcYMoN4bALppMMLB8glJkxy7t.3cmH9MkRRAjXXdUgAvHw2ZFLmB/8TlZDhnDS78xCSgLQs.oubZEEIgOWl7BT2.aW76fW3yKWdVrrHQDYPtR4hKx:11rUG9wSMLHe2Cu2p7dmFY:2\n" + "test3:LVJZDDuElMHuRt5/fcx64AhJ4erhFvbIhv/XCtD0tJI3OC6yEBzthZ1FSqblri9qtsvboPApbFHwP9WEluGtCOuzOON4LS8sSeQDBO.PaqjTnsmXKPYMKa.SuLXFuRTtdiFRwX2ZRy3GIWoCvxJtPDWCEYGBWfnjjGEYmQWvo534JVtVDyMaFItYlMTOtBSgsg488oJ5hIAU6jVyIQZGPVv8OHsPCpEt2UlTixzI9nAgQ0WL5ShKaAq0dksF/AY7UMKm0oHbtZeqAx6YcBzLbBhNvcEqYzH95ONpr.cUh91iRhVzdVscsFweSCtWsQrVT4zmSRwdsljeFQPqFbdeK:iWkELSVg3JxmyEq.XbjAW:3\n" + "test4:YziHBXMYwzekToUa6xL1Iq/4AXwpJWO9.Z6.Y6HHGt4eUcZEvVEw4eKEzPmj.K7US59u.X29F9D7xU62yiomPk5t8/3MzDCywlrAvcCVDhXwC3YpZEFl8OgAlp9izNrDErYY33cReBwH8ILHgFBJ2zo3xZqlWjWMrR50fW2J.MMitnx5GoR9dotZWLj9Zti0kODt5bUUeMcJmK/CJorwEtXz6OvuqGIdjrAZDp.5379KFO2smEVb7Qx6JiIDhEqODMMgXJZMSYSbKMgxXC9D.xN/IOn1/TnD.rNHN6LTrGChmbtKpCpuSJb2Bq2dwLFVxE/2UH4/ubYs/s5w9OcN60ypogvmtIWBqW2GyyfbLzHXiNDpJwV.tOktYEvRUG/fF59GF9hISbOIZ.7BhOK.z.iX4T7dEnHhDW16V.QScdOofcrhihb3Fi3Ym8ZpAqBlmlgLGsaGX23idkdF8xHZxJF1cuPosQ1jHjlrhcZotvChJdV3DZdl3m3isKK.bwF8:3QcZGdH5RkBBbB9R/cyNL4:4\n" + "test5:Ei8lv19Vi3.zrgd2DT6hHNVdd1FS2rTOg5N.ZHfIe6tsquMOQdP5JNVDqHaZL/Hr.ecaH5Y0fYCrdRby4iYWOvXvRadXBGP7noJl5II9qF84J8KUWGpdWOkKyIqXmRsdvafX2wB90JfMar7SyV0whR7taEV3fAWzQXVS7sHBA6Iyuj6qW1AIg/ObwYBR94xJuI8uKX4vGB0ptl90IS1nkI68OK.1PIt47IDdmJRxDxtbq3smZevPH9HxGCbWyPa7wp9GXmt7jjY/KhRnehLCaCWR3qpfTzqqYaohLFQ5KpkhCv0V5hFASioi1d5iVUsmJCCwWvHWf8fLKLSQ16D.yUNp6jH9AnrzBzybT5jdK647RxKpvogU67rDo4GQCMEjqoHfxExHz/LTN1mtDbX.MkphO71zGpE.bBMopQZvOzUJfpOjJwWADenalLvD6MXu4/.Hwf.cNH/cv/ueTRkXD8Fmsj0cmNkdLCel2qi3COWJxNP/B5ICQ5MnHg.S7qDSloYRcTvbU/FKGyoar8nhUdrl6w5sBwn1DKg3yijBucqEnOAPyLOmpAku8kTsbgoGVdQbEXdb7sUliLv9OnAARddRjIvAbO1mnWxHxFekBCmD5EtMVfGUUGM/ubQzjvH7PjsCCgBjo3nTPoCNGxzREich8/ChRdUvkzEuBvZXIc2:1nhQGuJI7yz9b0xtvpI87B:5\n" + "test7:6aCMlT0VUuuEnX.pn/K7cfQN1.EefEE9UiwzkBT2a4gdT4OY04pcl7kuKLEwvbb9bSfJWjAF8i8vMT.gg1ZSQTBAcWiBzAwHnnnKv4IgtsT0RAoAjYNjVxe26IMeE/XEdcS9OnOzSdEh2uy6.c9wqgzk0pph.KsQaMV4ivjeoUTdY8ccIiGGrLZcLaScCDeLMH.Ow7HFqMCIa07erJ7W2Xe/i7.0lm1p.oiTFbjNLv.6KXXihivldmz.ca9Dg2mqtp2SMCHul4wMDS3UFXka5/H/BwDFgT72OZpyy.wv9yL2ThHHiQtmc4.jkVutZUFH4gMxdln/3UyZDaXyj.UELFbRsA5VTrOcyqpg3nMqRLnBESC//fQjQPDzsIUG4TYeufCxfX6OK3BQq/KSYCIq08lIRRa1qoLE9FAcsnRO6PQXNtjatPJzgwW9mHZy32Bcy0dAu0mlR.35VGt9B72uAo3H8C6fzgLZHAQmAYvcz2b/LV4bT.FUeZz.D5XDIhxHDzLZOFgpZuYXivgf6B.1MgDd227L6AzVl.tfLF6Tr03Sfa5.FNoZLO.WHyHCje1GWGphLjg/C22QjBvV7NBwW50BkJBDO6HARaR/eZCE5qzmwAqrLbhd3DXYBD/0JSWysm3MO8u2Yhq47Vs8ZbcD835lIObjGOfzQL8iFQerO0H.pPQbwVewUg7fyP/TzSXsSQf0.7Otx6fUObWGEAJyY4Zk3YjBj0lwfQGDYuXjKnHxLgpWzWPtRvUbUxrPJMSFyJwGo8lJC5jZdfk/g/zShzgbib0LrYxwYoD1GvEcrLg/ylqEwDQh4/q7brzkpKUu.i4815rvCbPsqe7qFb6t4keDcNboSsFpRAiDttj8b8mcs/aq1YmPv/RKDO1DEu.QIabsJvdw7hw7sKz4m3OGdQEiFtktvihG0HDhY9UyfVTYm4WysZTx4Lf6WdwIFdkGLZJmhk8KdGPsHfSIo4fyIZieLkWa40e0ez5VevkcPN4C2AjXhVKUM5/9Cx09T38I8ZGIxGC.gF8JnXFarLcFjytuaNA7AlzuiEKlYKNf5AGNBXPoeScMJ.AghZLA0ZbsfbDbHUCSljnIuBhAFs8fL6ML/IqX59sORDYEiGKZnybedKYPgdZSRyy1T/qCDcDy6K/9sA4/gDzJ9ZdhUeasmn4GyXgJoHZ5VvT.ctilLkA36cAD8mHI1f8rcKAcsc5XtdQ5Mqqq6VkeXFAD37lnIc3/oVzBUKpHkyO.k0ibhKHkkmldQVpn1d/qUfhQxKq2S5FaOvqDUohERPoKLfEpsO8cd6NOUnwpGAx8wonNlNNIPaW2rJnRJc67zpznrzyXtTbbURl6eJJ/1nLtQy3xw:2Wva3rbYQapchVRUFxMTxT:7\n" + "test9:1UVtxG4aVjfnc6dPKMq6Cqin3rfrSoqOsGuD0Y6m4CnKqk190gb60JggCPwYbTgISssluub1TjmKlJeEfO18rXxyZgdn3KGJ3mBFLJ5x2t.kOyNRRpMGTK//7FMGiVQeJ12Mlh5p0faixLlHggR3P5e6LjpEZxsTTmU5d8pmACijdkOkuI8uDWKa4Aw.djIoAfUBhmgYGXCzx8axafeRJlZ/QYlx7tAAqdbIVrW2ES3cYTPCT/Yo8Le3IvjPH7Emw5TpIiQa/mcbEO043ewsUCEU9pSwQEyPj0ieXC5fGnTEk2KQ4ZzStgyUBDT4LgB8XGWT/DIQu13pIhwHy6yCuQ:3QFKSzbKxgN9qsll55ZlDu:9"; /* 1-7 are from SRP RFC5054 spec, and 9 is the FFDHE 2048-bit prime */ const char *tpasswd_conf_file = - "1:Ewl2hcjiutMd3Fu2lgFnUXWSc67TVyy2vwYCKoS9MLsrdJVT9RgWTCuEqWJrfB6uE3LsE9GkOlaZabS7M29sj5TnzUqOLJMjiwEzArfiLr9WbMRANlF68N5AVLcPWvNx6Zjl3m5Scp0BzJBz9TkgfhzKJZ.WtP3Mv/67I/0wmRZ:2\n" - "2:dUyyhxav9tgnyIg65wHxkzkb7VIPh4o0lkwfOKiPp4rVJrzLRYVBtb76gKlaO7ef5LYGEw3G.4E0jbMxcYBetDy2YdpiP/3GWJInoBbvYHIRO9uBuxgsFKTKWu7RnR7yTau/IrFTdQ4LY/q.AvoCzMxV0PKvD9Odso/LFIItn8PbTov3VMn/ZEH2SqhtpBUkWtmcIkEflhX/YY/fkBKfBbe27/zUaKUUZEUYZ2H2nlCL60.JIPeZJSzsu/xHDVcx:2\n" - "3:2iQzj1CagQc/5ctbuJYLWlhtAsPHc7xWVyCPAKFRLWKADpASkqe9djWPFWTNTdeJtL8nAhImCn3Sr/IAdQ1FrGw0WvQUstPx3FO9KNcXOwisOQ1VlL.gheAHYfbYyBaxXL.NcJx9TUwgWDT0hRzFzqSrdGGTN3FgSTA1v4QnHtEygNj3eZ.u0MThqWUaDiP87nqha7XnT66bkTCkQ8.7T8L4KZjIImrNrUftedTTBi.WCi.zlrBxDuOM0da0JbUkQlXqvp0yvJAPpC11nxmmZOAbQOywZGmu9nhZNuwTlxjfIro0FOdthaDTuZRL9VL7MRPUDo/DQEyW.d4H.UIlzp:2\n" - "4:///////////93zgY8MZ2DCJ6Oek0t1pHAG9E28fdp7G22xwcEnER8b5A27cED0JTxvKPiyqwGnimAmfjybyKDq/XDMrjKS95v8MrTc9UViRqJ4BffZVjQml/NBRq1hVjxZXh.rg9dwMkdoGHV4iVvaaePb7iv5izmW1ykA5ZlmMOsaWs75NJccaMFwZz9CzVWsLT8zoZhPOSOlDM88LIkvxLAGTmbfPjPmmrJagyc0JnT6m8oXWXV3AGNaOkDiuxuvvtB1WEXWER9uEYx0UYZxN5NV1lJ5B9tYlBzfLO5nWvbKbywfLgvHNI9XYO.WKG5NAEMeggn2sjCnSD151wCwXL8QlV7BfaxFk515ZRxmgAwd5NNGOCVREN3uMcuUJ7g/MkZDi9CzSUZ9JWIYLXdSxZqYOQqkvhyI/w1jcA26JOTW9pFiXgP58VAnWNUo0Ck.4NLtfXNMnt2OZ0kjb6uWZYJw1qvQinGzjR/E3z48vBWj4WgJhIol//////////:5\n" - "5:F//////////oG/QeY5emZJ4ncABWDmSqIa2JWYAPynq0Wk.fZiJco9HIWXvZZG4tU.L6RFDEaCRC2iARV9V53TFuJLjRL72HUI5jNPYNdx6z4n2wQOtxMiB/rosz0QtxUuuQ/jQYP.bhfya4NnB7.P9A6PHxEHRFS80VBYXOxy5cDf8DXnLqvff5Z.e/IJFNuDbNIFSewsM76BpLY25KhkUrIa7S9QMRMSCDKvAl9W4yNHi2CeO8Nmoa5v6BZREE.EUTomO3eO3coU3ekm7ee.rnLtmRqnIoTuho/QLM1SOEPL9VEgLQkKLqYOOcFe541LoZbgAgiGjhJCN3GHGUZEeLI6htnowPEpxXGHOs.yAYkfnLrq637spbm.5fk7anwlrhepR2JFN7eoKu4ebOPtEuz8c6jBkQ/4l.WRPYWXas7O2Spx8QcHI7oiO5tiW3BlX5rTwOLriTmc8mBhPHk88ua.WTEMhCKFRM/pW/H2EIuBH8AaX204QSZmIfuVcruXncX2zkbiccSCd66hquZmQb6WqjXKBsYM3wSegr4pesxl2smJUZlakZlmK7xxAfYXyMKTEQy1TcRAMJw2Gmw8ZEw66KLldxHzXAN3EujUlk1lTTY5mI1pG1f4drR1QgPEqwfYDZzt1Xl.tt92cm8zDz3N9D0OncV//////////:5\n" - "7:3//////////yaFsg8XQC8qnCPYYu3S7D4f0au8YcVCT08BlgOx4viYKKe8UOuq1DtlbHcppJf36p0h2ctoNnGtJ.4rRMrHmaNaXRLsObv.nlHCGkccD.rh2/zSjlG6j.tkE6lxMecVfQwV915yIn/cIIXcKUpaMpt207oueME/1PZQI3OSLTEQQHO/gFqapr.3PLqZtAEjbXnYyrOWXLAxdjKf1t2Mbcrd33LEIhoO1F5qR0ZA625yCf1UHYuspZlZddSi60w60vidWwBi1wAFjSLTy6zCKidUAylsbLWN63cLINpgbMhb5T8c69Zw1H0LSevQYgh4BQqp5mq4K7epg5KXgzySkcJi.uK4MDll2ehgSLTT1WnzivSFXQRXvCUhzQwCsmaprnwCbE1A9M6TpkFI9XhIxclnB/e6sOe8PDXs0dC.o6faKXyh61Tx80oxuHTNUc5TR7S9YC2wsKRY2E9Fe7Jbgp53srlyuFqGZak2qI2f8GW16d8y4gU7vjU8SPeGlRfR9fd39nXgzE8y6fHeDBOL2zebW.dAAjHCwDkxmji4texvBexy51..ogOeV5b7Jcl0NPcoba.WaCEY8pkXXb5Rv.qVOIbmpkBNhxWRtNOXS4WSq0QH9zMmMgcJjEgOZO/TmOR/jzoGfi2FJVGroJG2X98sm/gqqdnm9i7KtB9W9aRUoNKUTZswDxtu/vG6hPvJ3kNRE2z1C06ki6fJxP0ds34NboUmXbg96De.s.lFcnJjHCvikixKknlRVnH7vimbIpCWKL4hrwz2RxZq0JUCqhzPWye1nakIxF0owXNHSXq3z8BNpcvq/lRLNd0lHfWCWhMeG36G2noUMUV9Vxx7wFCZgNf.Dio8lWyTHRV/M5h5IzG7iYj1LAhCZsr.lqZXs1JCNj8FW3VWfvSLxlARuoW6eTMBjyNQTlLGgZsA7x/mwndCiQCJrLpQLidiBlAMCZX/wDTkF0He13wFPZz8OEuIlorR2tHqrkQK.HvjlX5PTAEIRnB.vUGuTtosgJBVZDY.nD1pkJ6wEyWojesTqm1q7wU/Yln7xILszfDhf2HcEgjZd5hazMWq8xHqA/79U2EF5ilZdMKju/sullo4YjaY8Yu4f0Dy1nFhLwWQ8/37D7FyP6pgC6jBoyY6BuE5tVgTIt.Ym8VeUMWp0.rRtJe6Appriw9ufcqg4/W/HFWjtp4Eu7IhQZP5b.YPe2LTmMJp7CK8HeKT.Qj86LtjVg6nrH2zVkTDS/hpQyCUpw9eDP16zEk7dv902KEBI1niruYQ02xLxZWhoHaDflm2RaULMEH7LdVfgfumKE9sLfJVo1zMw82vRd5WoO3TcEtJt///////////:J\n" - "9:3//////////wtuL5YYkqgQhznM82SzFF7OkSM3pYqsbQdXDa4KP3Fxp9ETpYIRFlbzB.DZOmnrsFQ1iWAkn65wqzyUrTNzPM4aC/KVNmPkq8LZPLKzxHhpjLSJNdzNoJMOJmnmuEQBT.AcYThpx.Xo7V5OeJQjvpKmhCfFI3fvUhmAiOAp9FjXqGYfIxB8u/kvQjgtODVqQ1rFGgFUEKtqhbRjvsDoknaB1wV8xWfjS9u2/E7Dz.Bim3G4pIWqBs6HSlwSwOM3/uvF4ZBkye63m/ux6qnlhNCxjVoyBi8W1SMEyODz5eEonlDA9i6ox/g8Qq8uOIXSb///////////:2\n"; + "1:Ewl2hcjiutMd3Fu2lgFnUXWSc67TVyy2vwYCKoS9MLsrdJVT9RgWTCuEqWJrfB6uE3LsE9GkOlaZabS7M29sj5TnzUqOLJMjiwEzArfiLr9WbMRANlF68N5AVLcPWvNx6Zjl3m5Scp0BzJBz9TkgfhzKJZ.WtP3Mv/67I/0wmRZ:2\n" + "2:dUyyhxav9tgnyIg65wHxkzkb7VIPh4o0lkwfOKiPp4rVJrzLRYVBtb76gKlaO7ef5LYGEw3G.4E0jbMxcYBetDy2YdpiP/3GWJInoBbvYHIRO9uBuxgsFKTKWu7RnR7yTau/IrFTdQ4LY/q.AvoCzMxV0PKvD9Odso/LFIItn8PbTov3VMn/ZEH2SqhtpBUkWtmcIkEflhX/YY/fkBKfBbe27/zUaKUUZEUYZ2H2nlCL60.JIPeZJSzsu/xHDVcx:2\n" + "3:2iQzj1CagQc/5ctbuJYLWlhtAsPHc7xWVyCPAKFRLWKADpASkqe9djWPFWTNTdeJtL8nAhImCn3Sr/IAdQ1FrGw0WvQUstPx3FO9KNcXOwisOQ1VlL.gheAHYfbYyBaxXL.NcJx9TUwgWDT0hRzFzqSrdGGTN3FgSTA1v4QnHtEygNj3eZ.u0MThqWUaDiP87nqha7XnT66bkTCkQ8.7T8L4KZjIImrNrUftedTTBi.WCi.zlrBxDuOM0da0JbUkQlXqvp0yvJAPpC11nxmmZOAbQOywZGmu9nhZNuwTlxjfIro0FOdthaDTuZRL9VL7MRPUDo/DQEyW.d4H.UIlzp:2\n" + "4:///////////93zgY8MZ2DCJ6Oek0t1pHAG9E28fdp7G22xwcEnER8b5A27cED0JTxvKPiyqwGnimAmfjybyKDq/XDMrjKS95v8MrTc9UViRqJ4BffZVjQml/NBRq1hVjxZXh.rg9dwMkdoGHV4iVvaaePb7iv5izmW1ykA5ZlmMOsaWs75NJccaMFwZz9CzVWsLT8zoZhPOSOlDM88LIkvxLAGTmbfPjPmmrJagyc0JnT6m8oXWXV3AGNaOkDiuxuvvtB1WEXWER9uEYx0UYZxN5NV1lJ5B9tYlBzfLO5nWvbKbywfLgvHNI9XYO.WKG5NAEMeggn2sjCnSD151wCwXL8QlV7BfaxFk515ZRxmgAwd5NNGOCVREN3uMcuUJ7g/MkZDi9CzSUZ9JWIYLXdSxZqYOQqkvhyI/w1jcA26JOTW9pFiXgP58VAnWNUo0Ck.4NLtfXNMnt2OZ0kjb6uWZYJw1qvQinGzjR/E3z48vBWj4WgJhIol//////////:5\n" + "5:F//////////oG/QeY5emZJ4ncABWDmSqIa2JWYAPynq0Wk.fZiJco9HIWXvZZG4tU.L6RFDEaCRC2iARV9V53TFuJLjRL72HUI5jNPYNdx6z4n2wQOtxMiB/rosz0QtxUuuQ/jQYP.bhfya4NnB7.P9A6PHxEHRFS80VBYXOxy5cDf8DXnLqvff5Z.e/IJFNuDbNIFSewsM76BpLY25KhkUrIa7S9QMRMSCDKvAl9W4yNHi2CeO8Nmoa5v6BZREE.EUTomO3eO3coU3ekm7ee.rnLtmRqnIoTuho/QLM1SOEPL9VEgLQkKLqYOOcFe541LoZbgAgiGjhJCN3GHGUZEeLI6htnowPEpxXGHOs.yAYkfnLrq637spbm.5fk7anwlrhepR2JFN7eoKu4ebOPtEuz8c6jBkQ/4l.WRPYWXas7O2Spx8QcHI7oiO5tiW3BlX5rTwOLriTmc8mBhPHk88ua.WTEMhCKFRM/pW/H2EIuBH8AaX204QSZmIfuVcruXncX2zkbiccSCd66hquZmQb6WqjXKBsYM3wSegr4pesxl2smJUZlakZlmK7xxAfYXyMKTEQy1TcRAMJw2Gmw8ZEw66KLldxHzXAN3EujUlk1lTTY5mI1pG1f4drR1QgPEqwfYDZzt1Xl.tt92cm8zDz3N9D0OncV//////////:5\n" + "7:3//////////yaFsg8XQC8qnCPYYu3S7D4f0au8YcVCT08BlgOx4viYKKe8UOuq1DtlbHcppJf36p0h2ctoNnGtJ.4rRMrHmaNaXRLsObv.nlHCGkccD.rh2/zSjlG6j.tkE6lxMecVfQwV915yIn/cIIXcKUpaMpt207oueME/1PZQI3OSLTEQQHO/gFqapr.3PLqZtAEjbXnYyrOWXLAxdjKf1t2Mbcrd33LEIhoO1F5qR0ZA625yCf1UHYuspZlZddSi60w60vidWwBi1wAFjSLTy6zCKidUAylsbLWN63cLINpgbMhb5T8c69Zw1H0LSevQYgh4BQqp5mq4K7epg5KXgzySkcJi.uK4MDll2ehgSLTT1WnzivSFXQRXvCUhzQwCsmaprnwCbE1A9M6TpkFI9XhIxclnB/e6sOe8PDXs0dC.o6faKXyh61Tx80oxuHTNUc5TR7S9YC2wsKRY2E9Fe7Jbgp53srlyuFqGZak2qI2f8GW16d8y4gU7vjU8SPeGlRfR9fd39nXgzE8y6fHeDBOL2zebW.dAAjHCwDkxmji4texvBexy51..ogOeV5b7Jcl0NPcoba.WaCEY8pkXXb5Rv.qVOIbmpkBNhxWRtNOXS4WSq0QH9zMmMgcJjEgOZO/TmOR/jzoGfi2FJVGroJG2X98sm/gqqdnm9i7KtB9W9aRUoNKUTZswDxtu/vG6hPvJ3kNRE2z1C06ki6fJxP0ds34NboUmXbg96De.s.lFcnJjHCvikixKknlRVnH7vimbIpCWKL4hrwz2RxZq0JUCqhzPWye1nakIxF0owXNHSXq3z8BNpcvq/lRLNd0lHfWCWhMeG36G2noUMUV9Vxx7wFCZgNf.Dio8lWyTHRV/M5h5IzG7iYj1LAhCZsr.lqZXs1JCNj8FW3VWfvSLxlARuoW6eTMBjyNQTlLGgZsA7x/mwndCiQCJrLpQLidiBlAMCZX/wDTkF0He13wFPZz8OEuIlorR2tHqrkQK.HvjlX5PTAEIRnB.vUGuTtosgJBVZDY.nD1pkJ6wEyWojesTqm1q7wU/Yln7xILszfDhf2HcEgjZd5hazMWq8xHqA/79U2EF5ilZdMKju/sullo4YjaY8Yu4f0Dy1nFhLwWQ8/37D7FyP6pgC6jBoyY6BuE5tVgTIt.Ym8VeUMWp0.rRtJe6Appriw9ufcqg4/W/HFWjtp4Eu7IhQZP5b.YPe2LTmMJp7CK8HeKT.Qj86LtjVg6nrH2zVkTDS/hpQyCUpw9eDP16zEk7dv902KEBI1niruYQ02xLxZWhoHaDflm2RaULMEH7LdVfgfumKE9sLfJVo1zMw82vRd5WoO3TcEtJt///////////:J\n" + "9:3//////////wtuL5YYkqgQhznM82SzFF7OkSM3pYqsbQdXDa4KP3Fxp9ETpYIRFlbzB.DZOmnrsFQ1iWAkn65wqzyUrTNzPM4aC/KVNmPkq8LZPLKzxHhpjLSJNdzNoJMOJmnmuEQBT.AcYThpx.Xo7V5OeJQjvpKmhCfFI3fvUhmAiOAp9FjXqGYfIxB8u/kvQjgtODVqQ1rFGgFUEKtqhbRjvsDoknaB1wV8xWfjS9u2/E7Dz.Bim3G4pIWqBs6HSlwSwOM3/uvF4ZBkye63m/ux6qnlhNCxjVoyBi8W1SMEyODz5eEonlDA9i6ox/g8Qq8uOIXSb///////////:2\n"; void doit(void) { @@ -378,4 +372,4 @@ void doit(void) remove("tpasswd.conf"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/srpbase64.c b/tests/srpbase64.c index 28a95fc4fc..3de3e2cedc 100644 --- a/tests/srpbase64.c +++ b/tests/srpbase64.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,7 +35,7 @@ #ifdef ENABLE_SRP -static void encode(const char *test_name, const gnutls_datum_t * raw, +static void encode(const char *test_name, const gnutls_datum_t *raw, const char *expected) { int ret; @@ -49,12 +49,14 @@ static void encode(const char *test_name, const gnutls_datum_t * raw, } if (strlen(expected) != out.size) { - fail("%s: gnutls_srp_base64_encode2: output has incorrect size (%d, expected %d)\n", test_name, (int)out.size, (int)strlen(expected)); + fail("%s: gnutls_srp_base64_encode2: output has incorrect size (%d, expected %d)\n", + test_name, (int)out.size, (int)strlen(expected)); exit(1); } if (strncasecmp(expected, (char *)out.data, out.size) != 0) { - fail("%s: gnutls_srp_base64_encode2: output does not match the expected\n", test_name); + fail("%s: gnutls_srp_base64_encode2: output does not match the expected\n", + test_name); exit(1); } @@ -70,12 +72,14 @@ static void encode(const char *test_name, const gnutls_datum_t * raw, } if (raw->size != out.size) { - fail("%s: gnutls_srp_base64_decode2: output has incorrect size (%d, expected %d)\n", test_name, out.size, raw->size); + fail("%s: gnutls_srp_base64_decode2: output has incorrect size (%d, expected %d)\n", + test_name, out.size, raw->size); exit(1); } if (memcmp(raw->data, out.data, out.size) != 0) { - fail("%s: gnutls_srp_base64_decode2: output does not match the expected\n", test_name); + fail("%s: gnutls_srp_base64_decode2: output does not match the expected\n", + test_name); exit(1); } @@ -84,7 +88,7 @@ static void encode(const char *test_name, const gnutls_datum_t * raw, return; } -static void decode(const char *test_name, const gnutls_datum_t * raw, +static void decode(const char *test_name, const gnutls_datum_t *raw, const char *hex, int res) { int ret; @@ -94,7 +98,7 @@ static void decode(const char *test_name, const gnutls_datum_t * raw, in.size = strlen(hex); ret = gnutls_srp_base64_decode2(&in, &out); if (ret < 0) { - if (res == ret) /* expected */ + if (res == ret) /* expected */ return; fail("%s: gnutls_srp_base64_decode2: %d/%s\n", test_name, ret, gnutls_strerror(ret)); @@ -102,17 +106,20 @@ static void decode(const char *test_name, const gnutls_datum_t * raw, } if (res != 0) { - fail("%s: gnutls_srp_base64_decode2: expected failure, but succeeded!\n", test_name); + fail("%s: gnutls_srp_base64_decode2: expected failure, but succeeded!\n", + test_name); exit(1); } if (raw->size != out.size) { - fail("%s: gnutls_srp_base64_decode2: output has incorrect size (%d, expected %d)\n", test_name, out.size, raw->size); + fail("%s: gnutls_srp_base64_decode2: output has incorrect size (%d, expected %d)\n", + test_name, out.size, raw->size); exit(1); } if (memcmp(raw->data, out.data, out.size) != 0) { - fail("%s: gnutls_srp_base64_decode2: output does not match the expected\n", test_name); + fail("%s: gnutls_srp_base64_decode2: output does not match the expected\n", + test_name); exit(1); } @@ -128,20 +135,14 @@ struct encode_tests_st { }; struct encode_tests_st encode_tests[] = { - { - .name = "rnd1", - .sb64 = "3scaQAX6bwA8FQKirWBpbu", - .raw = {(void *) - "\xf6\x9a\x46\x8a\x84\x69\x7a\x28\x83\xda\x52\xcd\x60\x2f\x39\x78", - 16} - }, - { - .name = "rnd2", - .sb64 = "id/k5HdTEqyZFPsLpdvYyGjxv", - .raw = {(void *) - "\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", - 19} - } + { .name = "rnd1", + .sb64 = "3scaQAX6bwA8FQKirWBpbu", + .raw = { (void *)"\xf6\x9a\x46\x8a\x84\x69\x7a\x28\x83\xda\x52\xcd\x60\x2f\x39\x78", + 16 } }, + { .name = "rnd2", + .sb64 = "id/k5HdTEqyZFPsLpdvYyGjxv", + .raw = { (void *)"\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", + 19 } } }; struct decode_tests_st { @@ -152,27 +153,21 @@ struct decode_tests_st { }; struct decode_tests_st decode_tests[] = { - { - .name = "dec-rnd1", - .sb64 = "3scaQAX6bwA8FQKirWBpbu", - .raw = {(void *) - "\xf6\x9a\x46\x8a\x84\x69\x7a\x28\x83\xda\x52\xcd\x60\x2f\x39\x78", - 16}, - .res = 0}, - { - .name = "dec-rnd2", - .sb64 = "id/k5HdTEqyZFPsLpdvYyGjxv", - .raw = {(void *) - "\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", - 19}, - .res = 0}, - { - .name = "dec-extra-chars", - .sb64 = " id/k5HdTEqyZFPsLpdvYyGjxv ", - .raw = {(void *) - "\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", - 19}, - .res = GNUTLS_E_BASE64_DECODING_ERROR} + { .name = "dec-rnd1", + .sb64 = "3scaQAX6bwA8FQKirWBpbu", + .raw = { (void *)"\xf6\x9a\x46\x8a\x84\x69\x7a\x28\x83\xda\x52\xcd\x60\x2f\x39\x78", + 16 }, + .res = 0 }, + { .name = "dec-rnd2", + .sb64 = "id/k5HdTEqyZFPsLpdvYyGjxv", + .raw = { (void *)"\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", + 19 }, + .res = 0 }, + { .name = "dec-extra-chars", + .sb64 = " id/k5HdTEqyZFPsLpdvYyGjxv ", + .raw = { (void *)"\x2c\x9f\xfb\x85\x46\x77\x4e\xd3\xc8\xcf\x67\x65\x73\x9f\x98\xbc\x42\xde\xf9", + 19 }, + .res = GNUTLS_E_BASE64_DECODING_ERROR } }; void doit(void) diff --git a/tests/ssl2-hello.c b/tests/ssl2-hello.c index 578cff6c10..7d4bb79fd7 100644 --- a/tests/ssl2-hello.c +++ b/tests/ssl2-hello.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -43,17 +43,17 @@ int main(int argc, char **argv) #else -# include -# include -# include -# if !defined(_WIN32) -# include -# endif -# include -# include +#include +#include +#include +#if !defined(_WIN32) +#include +#endif +#include +#include -# include "utils.h" -# include "cert-common.h" +#include "utils.h" +#include "cert-common.h" pid_t child; @@ -67,12 +67,12 @@ static void tls_log_func(int level, const char *str) */ static unsigned char ssl2_hello[] = - "\x80\x59\x01\x03\x01\x00\x30\x00\x00\x00\x20\x00\x00\x39\x00\x00" - "\x38\x00\x00\x35\x00\x00\x16\x00\x00\x13\x00\x00\x0a\x00\x00\x33" - "\x00\x00\x32\x00\x00\x2f\x00\x00\x07\x00\x00\x05\x00\x00\x04\x00" - "\x00\x15\x00\x00\x12\x00\x00\x09\x00\x00\xff\xb1\xc9\x95\x1a\x02" - "\x6c\xd6\x42\x11\x6e\x99\xe2\x84\x97\xc9\x17\x53\xaf\x53\xf7\xfc" - "\x8d\x1e\x72\x87\x18\x53\xee\xa6\x7d\x18\xc6"; + "\x80\x59\x01\x03\x01\x00\x30\x00\x00\x00\x20\x00\x00\x39\x00\x00" + "\x38\x00\x00\x35\x00\x00\x16\x00\x00\x13\x00\x00\x0a\x00\x00\x33" + "\x00\x00\x32\x00\x00\x2f\x00\x00\x07\x00\x00\x05\x00\x00\x04\x00" + "\x00\x15\x00\x00\x12\x00\x00\x09\x00\x00\xff\xb1\xc9\x95\x1a\x02" + "\x6c\xd6\x42\x11\x6e\x99\xe2\x84\x97\xc9\x17\x53\xaf\x53\xf7\xfc" + "\x8d\x1e\x72\x87\x18\x53\xee\xa6\x7d\x18\xc6"; static unsigned char tls_alert[] = "\x15\x03\x01\x00\x02\x02\x5A"; @@ -135,8 +135,8 @@ static void server(int sd) gnutls_transport_set_int(session, sd); ret = gnutls_handshake(session); - if (ret != GNUTLS_E_FATAL_ALERT_RECEIVED - || gnutls_alert_get(session) != GNUTLS_A_USER_CANCELED) { + if (ret != GNUTLS_E_FATAL_ALERT_RECEIVED || + gnutls_alert_get(session) != GNUTLS_A_USER_CANCELED) { fail("server: Handshake failed unexpectedly (%s)\n\n", gnutls_strerror(ret)); return; @@ -190,4 +190,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/ssl30-cert-key-exchange.c b/tests/ssl30-cert-key-exchange.c index c816445959..f6dc0b8d36 100644 --- a/tests/ssl30-cert-key-exchange.c +++ b/tests/ssl30-cert-key-exchange.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* This program tests the various certificate key exchange methods supported diff --git a/tests/ssl30-cipher-neg.c b/tests/ssl30-cipher-neg.c index af4d63ce1a..cda894ba9a 100644 --- a/tests/ssl30-cipher-neg.c +++ b/tests/ssl30-cipher-neg.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* This program tests the ciphersuite negotiation for various key exchange @@ -38,82 +38,70 @@ #include "cipher-neg-common.c" test_case_st tests[] = { - { - .name = "server SSL 3.0: AES-128-CBC (server)", - .cipher = GNUTLS_CIPHER_AES_128_CBC, - .server_prio = - "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-SSL3.0:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+VERS-SSL3.0:+AES-128-CBC"}, - { - .name = "both SSL 3.0: AES-128-CBC (server)", - .cipher = GNUTLS_CIPHER_AES_128_CBC, - .server_prio = - "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-SSL3.0:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+AES-128-CBC:+VERS-SSL3.0"}, - { - .name = "client SSL 3.0: AES-128-CBC (client)", - .cipher = GNUTLS_CIPHER_AES_128_CBC, - .server_prio = "NORMAL:+VERS-SSL3.0:+AES-128-CBC", - .client_prio = - "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-SSL3.0"}, - { - .name = "both SSL 3.0: AES-128-CBC (client)", - .cipher = GNUTLS_CIPHER_AES_128_CBC, - .server_prio = "NORMAL:+AES-128-CBC:+VERS-SSL3.0", - .client_prio = - "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-SSL3.0"}, - { - .name = "server SSL 3.0: 3DES-CBC (server)", - .cipher = GNUTLS_CIPHER_3DES_CBC, - .server_prio = - "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-SSL3.0:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+VERS-SSL3.0:+3DES-CBC"}, - { - .name = "both SSL 3.0: 3DES-CBC (server)", - .cipher = GNUTLS_CIPHER_3DES_CBC, - .server_prio = - "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-SSL3.0:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+3DES-CBC:+VERS-SSL3.0"}, - { - .name = "client SSL 3.0: 3DES-CBC (client)", - .cipher = GNUTLS_CIPHER_3DES_CBC, - .server_prio = "NORMAL:+VERS-SSL3.0:+3DES-CBC", - .client_prio = - "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-SSL3.0"}, - { - .name = "both SSL 3.0: 3DES-CBC (client)", - .cipher = GNUTLS_CIPHER_3DES_CBC, - .server_prio = "NORMAL:+3DES-CBC:+VERS-SSL3.0", - .client_prio = - "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-SSL3.0"}, - { - .name = "server SSL 3.0: ARCFOUR-128 (server)", - .cipher = GNUTLS_CIPHER_ARCFOUR_128, - .not_on_fips = 1, - .server_prio = - "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-SSL3.0:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+VERS-SSL3.0:+ARCFOUR-128"}, - { - .name = "both SSL 3.0: ARCFOUR-128 (server)", - .cipher = GNUTLS_CIPHER_ARCFOUR_128, - .not_on_fips = 1, - .server_prio = - "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-SSL3.0:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+ARCFOUR-128:+VERS-SSL3.0"}, - { - .name = "client SSL 3.0: ARCFOUR-128 (client)", - .cipher = GNUTLS_CIPHER_ARCFOUR_128, - .not_on_fips = 1, - .server_prio = "NORMAL:+VERS-SSL3.0:+ARCFOUR-128", - .client_prio = - "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-SSL3.0"}, - { - .name = "both SSL 3.0: ARCFOUR-128 (client)", - .cipher = GNUTLS_CIPHER_ARCFOUR_128, - .not_on_fips = 1, - .server_prio = "NORMAL:+ARCFOUR-128:+VERS-SSL3.0", - .client_prio = - "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-SSL3.0"} + { .name = "server SSL 3.0: AES-128-CBC (server)", + .cipher = GNUTLS_CIPHER_AES_128_CBC, + .server_prio = + "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-SSL3.0:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+VERS-SSL3.0:+AES-128-CBC" }, + { .name = "both SSL 3.0: AES-128-CBC (server)", + .cipher = GNUTLS_CIPHER_AES_128_CBC, + .server_prio = + "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-SSL3.0:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+AES-128-CBC:+VERS-SSL3.0" }, + { .name = "client SSL 3.0: AES-128-CBC (client)", + .cipher = GNUTLS_CIPHER_AES_128_CBC, + .server_prio = "NORMAL:+VERS-SSL3.0:+AES-128-CBC", + .client_prio = + "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-SSL3.0" }, + { .name = "both SSL 3.0: AES-128-CBC (client)", + .cipher = GNUTLS_CIPHER_AES_128_CBC, + .server_prio = "NORMAL:+AES-128-CBC:+VERS-SSL3.0", + .client_prio = + "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-SSL3.0" }, + { .name = "server SSL 3.0: 3DES-CBC (server)", + .cipher = GNUTLS_CIPHER_3DES_CBC, + .server_prio = + "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-SSL3.0:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+VERS-SSL3.0:+3DES-CBC" }, + { .name = "both SSL 3.0: 3DES-CBC (server)", + .cipher = GNUTLS_CIPHER_3DES_CBC, + .server_prio = + "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-SSL3.0:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+3DES-CBC:+VERS-SSL3.0" }, + { .name = "client SSL 3.0: 3DES-CBC (client)", + .cipher = GNUTLS_CIPHER_3DES_CBC, + .server_prio = "NORMAL:+VERS-SSL3.0:+3DES-CBC", + .client_prio = + "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-SSL3.0" }, + { .name = "both SSL 3.0: 3DES-CBC (client)", + .cipher = GNUTLS_CIPHER_3DES_CBC, + .server_prio = "NORMAL:+3DES-CBC:+VERS-SSL3.0", + .client_prio = + "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-SSL3.0" }, + { .name = "server SSL 3.0: ARCFOUR-128 (server)", + .cipher = GNUTLS_CIPHER_ARCFOUR_128, + .not_on_fips = 1, + .server_prio = + "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-SSL3.0:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+VERS-SSL3.0:+ARCFOUR-128" }, + { .name = "both SSL 3.0: ARCFOUR-128 (server)", + .cipher = GNUTLS_CIPHER_ARCFOUR_128, + .not_on_fips = 1, + .server_prio = + "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-SSL3.0:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+ARCFOUR-128:+VERS-SSL3.0" }, + { .name = "client SSL 3.0: ARCFOUR-128 (client)", + .cipher = GNUTLS_CIPHER_ARCFOUR_128, + .not_on_fips = 1, + .server_prio = "NORMAL:+VERS-SSL3.0:+ARCFOUR-128", + .client_prio = + "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-SSL3.0" }, + { .name = "both SSL 3.0: ARCFOUR-128 (client)", + .cipher = GNUTLS_CIPHER_ARCFOUR_128, + .not_on_fips = 1, + .server_prio = "NORMAL:+ARCFOUR-128:+VERS-SSL3.0", + .client_prio = + "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-SSL3.0" } }; void doit(void) diff --git a/tests/ssl30-server-kx-neg.c b/tests/ssl30-server-kx-neg.c index e8085e03e8..537f5a4c2f 100644 --- a/tests/ssl30-server-kx-neg.c +++ b/tests/ssl30-server-kx-neg.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* This program tests the ciphersuite negotiation for various key exchange @@ -38,108 +38,94 @@ #include "server-kx-neg-common.c" test_case_st tests[] = { - { - .name = "SSL 3.0 ANON-DH without cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-SSL3.0", - .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-SSL3.0"}, - { - .name = "SSL 3.0 ANON-DH with cred but no DH params", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_anon_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-SSL3.0", - .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-SSL3.0"}, - { - .name = "SSL 3.0 ANON-DH with cred and DH params", - .server_ret = 0, - .client_ret = 0, - .have_anon_cred = 1, - .have_anon_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-SSL3.0", - .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-SSL3.0"}, - { - .name = "SSL 3.0 DHE-RSA without cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0"}, - { - .name = "SSL 3.0 DHE-RSA with cred but no DH params or cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0"}, - { - .name = "SSL 3.0 DHE-RSA with cred and cert but no DH params", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0"}, - { - .name = "SSL 3.0 DHE-RSA with cred and DH params but no cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .have_cert_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0"}, - { - .name = - "SSL 3.0 DHE-RSA with cred and incompatible cert and DH params", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .have_rsa_decrypt_cert = 1, - .have_ecc_sign_cert = 1, - .have_cert_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0"}, - { - .name = "SSL 3.0 DHE-RSA with cred and cert and DH params", - .client_ret = 0, - .server_ret = 0, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .have_cert_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0"}, - { - .name = "SSL 3.0 DHE-RSA with cred and multiple certs and DH params", - .client_ret = 0, - .server_ret = 0, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .have_ecc_sign_cert = 1, - .have_rsa_decrypt_cert = 1, - .have_cert_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0"}, - { - .name = "SSL 3.0 DHE-PSK without cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-SSL3.0", - .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-SSL3.0"}, - { - .name = "SSL 3.0 DHE-PSK with cred but no DH params", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_psk_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-SSL3.0", - .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-SSL3.0"}, - { - .name = "SSL 3.0 DHE-PSK with cred DH params", - .client_ret = 0, - .server_ret = 0, - .have_psk_cred = 1, - .have_psk_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-SSL3.0", - .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-SSL3.0"} + { .name = "SSL 3.0 ANON-DH without cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-SSL3.0", + .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-SSL3.0" }, + { .name = "SSL 3.0 ANON-DH with cred but no DH params", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_anon_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-SSL3.0", + .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-SSL3.0" }, + { .name = "SSL 3.0 ANON-DH with cred and DH params", + .server_ret = 0, + .client_ret = 0, + .have_anon_cred = 1, + .have_anon_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-SSL3.0", + .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-SSL3.0" }, + { .name = "SSL 3.0 DHE-RSA without cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0" }, + { .name = "SSL 3.0 DHE-RSA with cred but no DH params or cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0" }, + { .name = "SSL 3.0 DHE-RSA with cred and cert but no DH params", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0" }, + { .name = "SSL 3.0 DHE-RSA with cred and DH params but no cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .have_cert_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0" }, + { .name = "SSL 3.0 DHE-RSA with cred and incompatible cert and DH params", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .have_rsa_decrypt_cert = 1, + .have_ecc_sign_cert = 1, + .have_cert_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0" }, + { .name = "SSL 3.0 DHE-RSA with cred and cert and DH params", + .client_ret = 0, + .server_ret = 0, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .have_cert_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0" }, + { .name = "SSL 3.0 DHE-RSA with cred and multiple certs and DH params", + .client_ret = 0, + .server_ret = 0, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .have_ecc_sign_cert = 1, + .have_rsa_decrypt_cert = 1, + .have_cert_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-SSL3.0" }, + { .name = "SSL 3.0 DHE-PSK without cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-SSL3.0", + .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-SSL3.0" }, + { .name = "SSL 3.0 DHE-PSK with cred but no DH params", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_psk_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-SSL3.0", + .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-SSL3.0" }, + { .name = "SSL 3.0 DHE-PSK with cred DH params", + .client_ret = 0, + .server_ret = 0, + .have_psk_cred = 1, + .have_psk_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-SSL3.0", + .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-SSL3.0" } }; void doit(void) diff --git a/tests/status-request-ext.c b/tests/status-request-ext.c index c4eb7b3491..4dedc0cd05 100644 --- a/tests/status-request-ext.c +++ b/tests/status-request-ext.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,18 +35,18 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include "cert-common.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "cert-common.h" +#include "utils.h" /* This program tests that the server does not send the * status request extension if no status response exists. That @@ -64,24 +64,30 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define SKIP16(pos, total) { \ - uint16_t _s; \ - if (pos+2 > total) fail("error\n"); \ - _s = (msg->data[pos] << 8) | msg->data[pos+1]; \ - if ((size_t)(pos+2+_s) > total) fail("error\n"); \ - pos += 2+_s; \ +#define SKIP16(pos, total) \ + { \ + uint16_t _s; \ + if (pos + 2 > total) \ + fail("error\n"); \ + _s = (msg->data[pos] << 8) | msg->data[pos + 1]; \ + if ((size_t)(pos + 2 + _s) > total) \ + fail("error\n"); \ + pos += 2 + _s; \ } -# define SKIP8(pos, total) { \ - uint8_t _s; \ - if (pos+1 > total) fail("error\n"); \ - _s = msg->data[pos]; \ - if ((size_t)(pos+1+_s) > total) fail("error\n"); \ - pos += 1+_s; \ +#define SKIP8(pos, total) \ + { \ + uint8_t _s; \ + if (pos + 1 > total) \ + fail("error\n"); \ + _s = msg->data[pos]; \ + if ((size_t)(pos + 1 + _s) > total) \ + fail("error\n"); \ + pos += 1 + _s; \ } -# define TLS_EXT_STATUS_REQUEST 5 -# define HANDSHAKE_SESSION_ID_POS 34 +#define TLS_EXT_STATUS_REQUEST 5 +#define HANDSHAKE_SESSION_ID_POS 34 /* This returns either the application-specific ID extension contents, * or the session ID contents. The former is used on the new protocol, @@ -106,7 +112,7 @@ static void client_log_func(int level, const char *str) */ static int handshake_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { size_t pos = 0; /* A client hello packet. We can get the session ID and figure @@ -142,7 +148,7 @@ static int handshake_callback(gnutls_session_t session, unsigned int htype, pos += 2; if (type != TLS_EXT_STATUS_REQUEST) { SKIP16(pos, msg->size); - } else { /* found */ + } else { /* found */ fail("found extension, although no status response\n"); break; } @@ -151,7 +157,7 @@ static int handshake_callback(gnutls_session_t session, unsigned int htype, return 0; } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd, const char *prio) { @@ -186,8 +192,7 @@ static void client(int fd, const char *prio) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret == GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM) { /* success */ @@ -203,12 +208,12 @@ static void client(int fd, const char *prio) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); @@ -270,14 +275,14 @@ static void server(int fd, const char *prio) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* do not wait for the peer to close the connection. */ gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); gnutls_deinit(session); @@ -338,4 +343,4 @@ void doit(void) start("default", "NORMAL"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/status-request-ok.c b/tests/status-request-ok.c index 3a324cef74..6310366336 100644 --- a/tests/status-request-ok.c +++ b/tests/status-request-ok.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,18 +35,18 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" /* This program tests the status request extension and that receiving the * certificate status works. @@ -63,63 +63,61 @@ static void client_log_func(int level, const char *str) } static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" - "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" - "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" - "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" - "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" - "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" - "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" - "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" - "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" - "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" - "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" - "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" + "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" + "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" + "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" + "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" + "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" + "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" + "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" + "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" + "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" + "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" + "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" - "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" - "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" - "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" - "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" - "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" - "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" - "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" - "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" - "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" - "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" - "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" - "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" + "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" + "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" + "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" + "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" + "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" + "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" + "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" + "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" + "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" + "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" + "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" + "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; static int sent = 0; static int received = 0; static int handshake_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { success("received status request\n"); received = 1; return 0; } -# define RESP "\x30\x82\x06\x8C\x0A\x01\x00\xA0\x82\x06\x85\x30\x82\x06\x81\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x06\x72\x30\x82\x06\x6E\x30\x82\x01\x07\xA1\x69\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\x30\x64\x30\x62\x30\x3A\x30\x09\x06\x05\x2B\x0E\x03\x02\x1A\x05\x00\x04\x14\x13\x9D\xA0\x9E\xF4\x32\xAB\x8F\xE2\x89\x56\x67\xFA\xD0\xD4\xE3\x35\x86\x71\xB9\x04\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\x02\x01\x1D\x80\x00\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\xA0\x11\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x39\x32\x38\x5A\xA1\x23\x30\x21\x30\x1F\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x02\x04\x12\x04\x10\x16\x89\x7D\x91\x3A\xB5\x25\xA4\x45\xFE\xC9\xFD\xC2\xE5\x08\xA4\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x4E\xAD\x6B\x2B\xF7\xF2\xBF\xA9\x23\x1E\x3A\x0B\x06\xDB\x55\x53\x2B\x64\x54\x11\x32\xBF\x60\xF7\x4F\xE0\x8E\x9B\xA0\xA2\x4C\x79\xC3\x2A\xE0\x43\xF7\x40\x1A\xDC\xB9\xB4\x25\xEF\x48\x01\x97\x8C\xF5\x1E\xDB\xD1\x30\x37\x73\x69\xD6\xA7\x7A\x2D\x8E\xDE\x5C\xAA\xEA\x39\xB9\x52\xAA\x25\x1E\x74\x7D\xF9\x78\x95\x8A\x92\x1F\x98\x21\xF4\x60\x7F\xD3\x28\xEE\x47\x9C\xBF\xE2\x5D\xF6\x3F\x68\x0A\xD6\xFF\x08\xC1\xDC\x95\x1E\x29\xD7\x3E\x85\xD5\x65\xA4\x4B\xC0\xAF\xC3\x78\xAB\x06\x98\x88\x19\x8A\x64\xA6\x83\x91\x87\x13\xDB\x17\xCC\x46\xBD\xAB\x4E\xC7\x16\xD1\xF8\x35\xFD\x27\xC8\xF6\x6B\xEB\x37\xB8\x08\x6F\xE2\x6F\xB4\x7E\xD5\x68\xDB\x7F\x5D\x5E\x36\x38\xF2\x77\x59\x13\xE7\x3E\x4D\x67\x5F\xDB\xA2\xF5\x5D\x7C\xBF\xBD\xB5\x37\x33\x51\x36\x63\xF8\x21\x1E\xFC\x73\x8F\x32\x69\xBB\x97\xA7\xBD\xF1\xB6\xE0\x40\x09\x68\xEA\xD5\x93\xB8\xBB\x39\x8D\xA8\x16\x1B\xBF\x04\x7A\xBC\x18\x43\x01\xE9\x3C\x19\x5C\x4D\x4B\x98\xD8\x23\x37\x39\xA4\xC4\xDD\xED\x9C\xEC\x37\xAB\x66\x44\x9B\xE7\x5B\x5D\x32\xA2\xDB\xA6\x0B\x3B\x8C\xE1\xF5\xDB\xCB\x7D\x58\xA0\x82\x04\x4B\x30\x82\x04\x47\x30\x82\x04\x43\x30\x82\x03\x2B\xA0\x03\x02\x01\x02\x02\x01\x1E\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x30\x1E\x17\x0D\x30\x39\x31\x31\x32\x34\x31\x32\x35\x31\x35\x33\x5A\x17\x0D\x31\x34\x31\x31\x32\x33\x31\x32\x35\x31\x35\x33\x5A\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x82\x01\x22\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00\x03\x82\x01\x0F\x00\x30\x82\x01\x0A\x02\x82\x01\x01\x00\xBC\x05\x3E\x4B\xBE\xC6\xB1\x33\x48\x0E\xC3\xD4\x0C\xEF\x83\x0B\xBD\xBC\x57\x5F\x14\xEF\xF5\x6D\x0B\xFF\xFA\x01\x9C\xFA\x21\x6D\x5C\xAE\x79\x29\x74\xFE\xBD\xAB\x70\x87\x98\x6B\x48\x35\x79\xE3\xE0\xC1\x14\x41\x1F\x0A\xF7\xE7\xA3\xA6\xDA\x6B\xFF\xCD\x74\xE9\x95\x00\x38\xAA\xD6\x3A\x60\xC6\x64\xA1\xE6\x02\x39\x58\x4E\xFD\xF2\x78\x08\x63\xB6\xD7\x7A\x96\x79\x62\x18\x39\xEE\x27\x8D\x3B\xA2\x3D\x48\x88\xDB\x43\xD6\x6A\x77\x20\x6A\x27\x39\x50\xE0\x02\x50\x19\xF2\x7A\xCF\x78\x23\x99\x01\xD4\xE5\xB1\xD1\x31\xE6\x6B\x84\xAF\xD0\x77\x41\x46\x85\xB0\x3B\xE6\x6A\x00\x0F\x3B\x7E\x95\x7F\x59\xA8\x22\xE8\x49\x49\x05\xC8\xCB\x6C\xEE\x47\xA7\x2D\xC9\x74\x5B\xEB\x8C\xD5\x99\xC2\xE2\x70\xDB\xEA\x87\x43\x84\x0E\x4F\x83\x1C\xA6\xEB\x1F\x22\x38\x17\x69\x9B\x72\x12\x95\x48\x71\xB2\x7B\x92\x73\x52\xAB\xE3\x1A\xA5\xD3\xF4\x44\x14\xBA\xC3\x35\xDA\x91\x6C\x7D\xB4\xC2\x00\x07\xD8\x0A\x51\xF1\x0D\x4C\xD9\x7A\xD1\x99\xE6\xA8\x8D\x0A\x80\xA8\x91\xDD\x8A\xA2\x6B\xF6\xDB\xB0\x3E\xC9\x71\xA9\xE0\x39\xC3\xA3\x58\x0D\x87\xD0\xB2\xA7\x9C\xB7\x69\x02\x03\x01\x00\x01\xA3\x82\x01\x1A\x30\x82\x01\x16\x30\x09\x06\x03\x55\x1D\x13\x04\x02\x30\x00\x30\x0B\x06\x03\x55\x1D\x0F\x04\x04\x03\x02\x03\xA8\x30\x1D\x06\x03\x55\x1D\x0E\x04\x16\x04\x14\x34\x91\x6E\x91\x32\xBF\x35\x25\x43\xCC\x28\x74\xEF\x82\xC2\x57\x92\x79\x13\x73\x30\x6D\x06\x03\x55\x1D\x23\x04\x66\x30\x64\x80\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\xA1\x49\xA4\x47\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x82\x01\x00\x30\x1E\x06\x03\x55\x1D\x11\x04\x17\x30\x15\x82\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x13\x06\x03\x55\x1D\x25\x04\x0C\x30\x0A\x06\x08\x2B\x06\x01\x05\x05\x07\x03\x09\x30\x39\x06\x03\x55\x1D\x1F\x04\x32\x30\x30\x30\x2E\xA0\x2C\xA0\x2A\x86\x28\x68\x74\x74\x70\x3A\x2F\x2F\x63\x72\x6C\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x2F\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x63\x72\x6C\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x03\x82\x01\x01\x00\x6D\x78\xD7\x66\x90\xA6\xEB\xDD\xB5\x09\x48\xA4\xDA\x27\xFA\xAC\xB1\xBC\x8F\x8C\xBE\xCC\x8C\x09\xA2\x40\x0D\x6C\x4A\xAE\x72\x22\x1E\xC8\xAF\x6D\xF1\x12\xAF\xD7\x40\x51\x79\xD4\xDD\xB2\x0C\xDB\x97\x84\xB6\x24\xD5\xF5\xA8\xBB\xC0\x4B\xF9\x7F\x71\xF7\xB0\x65\x42\x4A\x7D\xFE\x76\x7E\x05\xD2\x46\xB8\x7D\xB3\x39\x4C\x5C\xB1\xFA\xB9\xEE\x3B\x70\x33\x39\x57\x1A\xB9\x95\x51\x33\x00\x25\x1B\x4C\xAA\xB4\xA7\x55\xAF\x63\x6D\x6F\x88\x17\x6A\x7F\xB0\x97\xDE\x49\x14\x6A\x27\x6A\xB0\x42\x80\xD6\xA6\x9B\xEF\x04\x5E\x11\x7D\xD5\x8E\x54\x20\xA2\x76\xD4\x66\x58\xAC\x9C\x12\xD3\xF5\xCA\x54\x98\xCA\x21\xEC\xC1\x55\xA1\x2F\x68\x0B\x5D\x04\x50\xD2\x5E\x70\x25\xD8\x13\xD9\x44\x51\x0E\x8A\x42\x08\x18\x84\xE6\x61\xCE\x5A\x7D\x7B\x81\x35\x90\xC3\xD4\x9D\x19\xB6\x37\xEE\x8F\x63\x5C\xDA\xD8\xF0\x64\x60\x39\xEB\x9B\x1C\x54\x66\x75\x76\xB5\x0A\x58\xB9\x3F\x91\xE1\x21\x9C\xA0\x50\x15\x97\xB6\x7E\x41\xBC\xD0\xC4\x21\x4C\xF5\xD7\xF0\x13\xF8\x77\xE9\x74\xC4\x8A\x0E\x20\x17\x32\xAE\x38\xC2\xA5\xA8\x62\x85\x17\xB1\xA2\xD3\x22\x9F\x95\xB7\xA3\x4C" -# define RESP_SIZE (sizeof(RESP)-1) +#define RESP \ + "\x30\x82\x06\x8C\x0A\x01\x00\xA0\x82\x06\x85\x30\x82\x06\x81\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x06\x72\x30\x82\x06\x6E\x30\x82\x01\x07\xA1\x69\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\x30\x64\x30\x62\x30\x3A\x30\x09\x06\x05\x2B\x0E\x03\x02\x1A\x05\x00\x04\x14\x13\x9D\xA0\x9E\xF4\x32\xAB\x8F\xE2\x89\x56\x67\xFA\xD0\xD4\xE3\x35\x86\x71\xB9\x04\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\x02\x01\x1D\x80\x00\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\xA0\x11\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x39\x32\x38\x5A\xA1\x23\x30\x21\x30\x1F\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x02\x04\x12\x04\x10\x16\x89\x7D\x91\x3A\xB5\x25\xA4\x45\xFE\xC9\xFD\xC2\xE5\x08\xA4\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x4E\xAD\x6B\x2B\xF7\xF2\xBF\xA9\x23\x1E\x3A\x0B\x06\xDB\x55\x53\x2B\x64\x54\x11\x32\xBF\x60\xF7\x4F\xE0\x8E\x9B\xA0\xA2\x4C\x79\xC3\x2A\xE0\x43\xF7\x40\x1A\xDC\xB9\xB4\x25\xEF\x48\x01\x97\x8C\xF5\x1E\xDB\xD1\x30\x37\x73\x69\xD6\xA7\x7A\x2D\x8E\xDE\x5C\xAA\xEA\x39\xB9\x52\xAA\x25\x1E\x74\x7D\xF9\x78\x95\x8A\x92\x1F\x98\x21\xF4\x60\x7F\xD3\x28\xEE\x47\x9C\xBF\xE2\x5D\xF6\x3F\x68\x0A\xD6\xFF\x08\xC1\xDC\x95\x1E\x29\xD7\x3E\x85\xD5\x65\xA4\x4B\xC0\xAF\xC3\x78\xAB\x06\x98\x88\x19\x8A\x64\xA6\x83\x91\x87\x13\xDB\x17\xCC\x46\xBD\xAB\x4E\xC7\x16\xD1\xF8\x35\xFD\x27\xC8\xF6\x6B\xEB\x37\xB8\x08\x6F\xE2\x6F\xB4\x7E\xD5\x68\xDB\x7F\x5D\x5E\x36\x38\xF2\x77\x59\x13\xE7\x3E\x4D\x67\x5F\xDB\xA2\xF5\x5D\x7C\xBF\xBD\xB5\x37\x33\x51\x36\x63\xF8\x21\x1E\xFC\x73\x8F\x32\x69\xBB\x97\xA7\xBD\xF1\xB6\xE0\x40\x09\x68\xEA\xD5\x93\xB8\xBB\x39\x8D\xA8\x16\x1B\xBF\x04\x7A\xBC\x18\x43\x01\xE9\x3C\x19\x5C\x4D\x4B\x98\xD8\x23\x37\x39\xA4\xC4\xDD\xED\x9C\xEC\x37\xAB\x66\x44\x9B\xE7\x5B\x5D\x32\xA2\xDB\xA6\x0B\x3B\x8C\xE1\xF5\xDB\xCB\x7D\x58\xA0\x82\x04\x4B\x30\x82\x04\x47\x30\x82\x04\x43\x30\x82\x03\x2B\xA0\x03\x02\x01\x02\x02\x01\x1E\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x30\x1E\x17\x0D\x30\x39\x31\x31\x32\x34\x31\x32\x35\x31\x35\x33\x5A\x17\x0D\x31\x34\x31\x31\x32\x33\x31\x32\x35\x31\x35\x33\x5A\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x82\x01\x22\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00\x03\x82\x01\x0F\x00\x30\x82\x01\x0A\x02\x82\x01\x01\x00\xBC\x05\x3E\x4B\xBE\xC6\xB1\x33\x48\x0E\xC3\xD4\x0C\xEF\x83\x0B\xBD\xBC\x57\x5F\x14\xEF\xF5\x6D\x0B\xFF\xFA\x01\x9C\xFA\x21\x6D\x5C\xAE\x79\x29\x74\xFE\xBD\xAB\x70\x87\x98\x6B\x48\x35\x79\xE3\xE0\xC1\x14\x41\x1F\x0A\xF7\xE7\xA3\xA6\xDA\x6B\xFF\xCD\x74\xE9\x95\x00\x38\xAA\xD6\x3A\x60\xC6\x64\xA1\xE6\x02\x39\x58\x4E\xFD\xF2\x78\x08\x63\xB6\xD7\x7A\x96\x79\x62\x18\x39\xEE\x27\x8D\x3B\xA2\x3D\x48\x88\xDB\x43\xD6\x6A\x77\x20\x6A\x27\x39\x50\xE0\x02\x50\x19\xF2\x7A\xCF\x78\x23\x99\x01\xD4\xE5\xB1\xD1\x31\xE6\x6B\x84\xAF\xD0\x77\x41\x46\x85\xB0\x3B\xE6\x6A\x00\x0F\x3B\x7E\x95\x7F\x59\xA8\x22\xE8\x49\x49\x05\xC8\xCB\x6C\xEE\x47\xA7\x2D\xC9\x74\x5B\xEB\x8C\xD5\x99\xC2\xE2\x70\xDB\xEA\x87\x43\x84\x0E\x4F\x83\x1C\xA6\xEB\x1F\x22\x38\x17\x69\x9B\x72\x12\x95\x48\x71\xB2\x7B\x92\x73\x52\xAB\xE3\x1A\xA5\xD3\xF4\x44\x14\xBA\xC3\x35\xDA\x91\x6C\x7D\xB4\xC2\x00\x07\xD8\x0A\x51\xF1\x0D\x4C\xD9\x7A\xD1\x99\xE6\xA8\x8D\x0A\x80\xA8\x91\xDD\x8A\xA2\x6B\xF6\xDB\xB0\x3E\xC9\x71\xA9\xE0\x39\xC3\xA3\x58\x0D\x87\xD0\xB2\xA7\x9C\xB7\x69\x02\x03\x01\x00\x01\xA3\x82\x01\x1A\x30\x82\x01\x16\x30\x09\x06\x03\x55\x1D\x13\x04\x02\x30\x00\x30\x0B\x06\x03\x55\x1D\x0F\x04\x04\x03\x02\x03\xA8\x30\x1D\x06\x03\x55\x1D\x0E\x04\x16\x04\x14\x34\x91\x6E\x91\x32\xBF\x35\x25\x43\xCC\x28\x74\xEF\x82\xC2\x57\x92\x79\x13\x73\x30\x6D\x06\x03\x55\x1D\x23\x04\x66\x30\x64\x80\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\xA1\x49\xA4\x47\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x82\x01\x00\x30\x1E\x06\x03\x55\x1D\x11\x04\x17\x30\x15\x82\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x13\x06\x03\x55\x1D\x25\x04\x0C\x30\x0A\x06\x08\x2B\x06\x01\x05\x05\x07\x03\x09\x30\x39\x06\x03\x55\x1D\x1F\x04\x32\x30\x30\x30\x2E\xA0\x2C\xA0\x2A\x86\x28\x68\x74\x74\x70\x3A\x2F\x2F\x63\x72\x6C\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x2F\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x63\x72\x6C\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x03\x82\x01\x01\x00\x6D\x78\xD7\x66\x90\xA6\xEB\xDD\xB5\x09\x48\xA4\xDA\x27\xFA\xAC\xB1\xBC\x8F\x8C\xBE\xCC\x8C\x09\xA2\x40\x0D\x6C\x4A\xAE\x72\x22\x1E\xC8\xAF\x6D\xF1\x12\xAF\xD7\x40\x51\x79\xD4\xDD\xB2\x0C\xDB\x97\x84\xB6\x24\xD5\xF5\xA8\xBB\xC0\x4B\xF9\x7F\x71\xF7\xB0\x65\x42\x4A\x7D\xFE\x76\x7E\x05\xD2\x46\xB8\x7D\xB3\x39\x4C\x5C\xB1\xFA\xB9\xEE\x3B\x70\x33\x39\x57\x1A\xB9\x95\x51\x33\x00\x25\x1B\x4C\xAA\xB4\xA7\x55\xAF\x63\x6D\x6F\x88\x17\x6A\x7F\xB0\x97\xDE\x49\x14\x6A\x27\x6A\xB0\x42\x80\xD6\xA6\x9B\xEF\x04\x5E\x11\x7D\xD5\x8E\x54\x20\xA2\x76\xD4\x66\x58\xAC\x9C\x12\xD3\xF5\xCA\x54\x98\xCA\x21\xEC\xC1\x55\xA1\x2F\x68\x0B\x5D\x04\x50\xD2\x5E\x70\x25\xD8\x13\xD9\x44\x51\x0E\x8A\x42\x08\x18\x84\xE6\x61\xCE\x5A\x7D\x7B\x81\x35\x90\xC3\xD4\x9D\x19\xB6\x37\xEE\x8F\x63\x5C\xDA\xD8\xF0\x64\x60\x39\xEB\x9B\x1C\x54\x66\x75\x76\xB5\x0A\x58\xB9\x3F\x91\xE1\x21\x9C\xA0\x50\x15\x97\xB6\x7E\x41\xBC\xD0\xC4\x21\x4C\xF5\xD7\xF0\x13\xF8\x77\xE9\x74\xC4\x8A\x0E\x20\x17\x32\xAE\x38\xC2\xA5\xA8\x62\x85\x17\xB1\xA2\xD3\x22\x9F\x95\xB7\xA3\x4C" +#define RESP_SIZE (sizeof(RESP) - 1) static int status_func(gnutls_session_t session, void *ptr, - gnutls_datum_t * resp) + gnutls_datum_t *resp) { resp->data = gnutls_malloc(RESP_SIZE); if (resp->data == NULL) @@ -131,7 +129,7 @@ static int status_func(gnutls_session_t session, void *ptr, return 0; } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd) { @@ -171,8 +169,7 @@ static void client(int fd) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret == GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM) { /* success */ @@ -188,8 +185,8 @@ static void client(int fd) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); if (received == 0) { fail("client: didn't receive status request\n"); @@ -197,7 +194,7 @@ static void client(int fd) gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); @@ -258,8 +255,8 @@ static void server(int fd) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); if (sent == 0) { fail("status request was sent\n"); @@ -270,7 +267,7 @@ static void server(int fd) */ gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); gnutls_deinit(session); @@ -324,4 +321,4 @@ void doit(void) return; } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/status-request-revoked.c b/tests/status-request-revoked.c index 657dd9faf3..60abc688dd 100644 --- a/tests/status-request-revoked.c +++ b/tests/status-request-revoked.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -36,19 +36,19 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" /* This program tests that the client does not send the * status request extension if GNUTLS_NO_DEFAULT_EXTENSIONS is set. @@ -64,7 +64,7 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1586000000; @@ -75,174 +75,173 @@ static time_t mytime(time_t * t) } static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIEKjCCAhKgAwIBAgIIRiBQA6KFBj0wDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" - "AxMEaWNhMTAeFw0xOTEwMjQxNDA1MDBaFw0yMDEwMjQxNDAzMDBaMBoxGDAWBgNV\n" - "BAMTD3Rlc3Quc2VydmVyLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\n" - "ggEBAKgBiCBLx9eqe2tcCdkyDvQb3UZMR/Gs1mHaiW9zUbqnHkMD/N+0B+JRcfW2\n" - "P5WnQRTlSrWM/gFJh+va0Wtnu0VZWdBHhyR8Vq62DskNRSXUSTsQVqktaMmA/yPY\n" - "iYtY5069WUBoa1GD23BRaeoinLtmBEaUIvsAdCPQ5bCdaVSFOLlnuDxF6/bOAQAC\n" - "5EJ3UDAdqqGmHCQAJcKiCim2ttCIquLqAsgalHMKKBAdEm01o+LO6FOHK1OkwA1W\n" - "GiDNaojEojMS87x9VjmdiamvPuAALLAMMQ3fh8DxqAWA4pfkYWJKehnlPHdjPfkO\n" - "GjUvpezsWev5PBJKp5x6ce9vlgMCAwEAAaN/MH0wCQYDVR0TBAIwADALBgNVHQ8E\n" - "BAMCA4gwEwYDVR0lBAwwCgYIKwYBBQUHAwEwGgYDVR0RBBMwEYIPdGVzdC5zZXJ2\n" - "ZXIuY29tMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcwAYYWaHR0cDovLzEwLjEu\n" - "Mi4yNDI6ODg4ODANBgkqhkiG9w0BAQsFAAOCAgEAK9Bo7i8Mj7t8l+nZqQ6ezG6d\n" - "sq5FYkr2h+T5C0Pt2RscMYAKRdBjAXmCTy1jhaojUVIupm/pK1YQAOgSQF5PMhLl\n" - "3W1SiLl2aU1A0HjHpHvN81YP5VeceHgoJrA5VYGYQohIyH9zfSJNb5TyhQcIHiqZ\n" - "aSC64c7sSywHC4vEHYyYu0LVMic4y7EWM2Y5Vh3xhB28jq5ixChCxG/i6rHt1fC+\n" - "1YsKQaE+sAY4QVjMYE8g4SldqMDpnSCiHDFBfWMGD5hGvp4WMfNXpuiDG9M8wAcT\n" - "A93NxnZqmUdksK/waGS7/uj/eY1hMU2Z/TVhaCDk146hH+lOUf6CnwM3MXLOALaz\n" - "eHyfbm/P8XniWhzBQIiY+5wYVath9YlOkRZhAMKRglRNpwXoTKZiJNkqrwaz6RnB\n" - "S19QByi+L6tFP7AxLFd7DKv4FbI2FWh5GyCrqa8rNc3Bh/oxDR0iAUetEFQUjkxN\n" - "x5A0mOnKds0UoTq3nI5t6obgzAjFkiMgVMXyXo4HqfzpAtqIgZd+PJn5snFoJ6Xh\n" - "NPjCYbfBb9LQFlfodWVg0W4mjfp0HypFaBIudgw0ANdQUUOosWFi0H2msj7CJf4G\n" - "crMZmsCvD+xKfwKqph+tH0/e/xFeFmVOSVI78ESJhpRcQ9ODiOA98FTR4W1Nv9gd\n" - "2GOAQzJDUd051fcRBXQ=\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIEvzCCAqegAwIBAgIIV9UmBssMHTUwDQYJKoZIhvcNAQELBQAwETEPMA0GA1UE\n" - "AxMGcm9vdGNhMB4XDTE5MTAyNDE0MDQwMFoXDTIwMTAyNDE0MDMwMFowDzENMAsG\n" - "A1UEAxMEaWNhMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALY5o80n\n" - "QOQWNJnWOEL6Vg/UH84r9TP4ZWKlWmC4K+pi0S+8x7uFBUyxFffS/SaWeoxI2wBm\n" - "ezMjAl1gFQTCxsojxfgS9Ky9fbxdaADeLKW7B8UHRzrKO8I9Khhe82oU87vAYUFX\n" - "cC0ALIE4zpcdezmr53ACloYfTwDy4onl6VKVjwhfZ6PglwZRkOLjSRMbmSScJPGF\n" - "pMx29dhXEFeCyAdqU+H9Bhu0cIwHUeFp4BM1j8NsW6GHLIzioc5f70EX76M9FyRA\n" - "EB/csmEGX37vNjPmmyki6SJ2nFoa7C9o3ty7IzoUdrU8Cfj9o6WdEfCRlIuxLWra\n" - "LFQrduuhk3sZYU2adZa3hJJ3Y+jx0lUBO4TxtO1Maf39Rfp4BzK1WybjCpDnO/Xg\n" - "kU5hDjQX9zRWYPcwPMGEv3wJAezTsp/mx8UGtIlWVpd0z/oVoKvOrGaxx0RYq5SP\n" - "mutaKDCvQ0j6t9wc69fyG5d9iNA3INXLhkFiZqEKpwZsi7RaSjD615EX2GqdIoZ0\n" - "Ib4NEtpMv12/7ti1VFVxNNMaDNiOKRg7/Ha5SrRnCabyEuykSUnxjttNjBEazn1M\n" - "VWIel0scvDtRFDFGklFuABOJmoYGkAPnIpN+H/l17/VtSWBsPy1rnlfgK2ftm773\n" - "5kiEQJn42uh+jbgWaBdt9Q1B+VeV51pnjjc7AgMBAAGjHTAbMAwGA1UdEwQFMAMB\n" - "Af8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQBgm8eEsLeGo5eI4plQ\n" - "WtqvyKrrvpa9YachqmQfoARbMBJg4J0Eq3u3yjL1kUHZ5f0IkXeiaw/w5u2oxZTe\n" - "SHHJCCd54NhLzBeTV/GQuDnWqU+GZP3ay+SkzjAMbfkHibVlRZLkeVnDZLRGd5jb\n" - "RMXRj1LMVagI1xVM3Y4PEcDw+Bhp4XFHBUcxtcqFrjJQBbJJYE9A2QiPwoDQlYoy\n" - "gSvVffbb04bDM01pbYOfPL9t1IIiq7KHHOq0vWzvoU+hnAx+U30wNSaeshKuixNa\n" - "PpWKZ1hoejkhddeiypFqhS54oOxaCxArXPFIl/mLPJlztf/s1Xumi0W4fkIACtoY\n" - "SFilawtsf/vC/WesFsQ502IkFpjYCeUavk8nAfZPZg1BwQ+ZLcwZXBuCtqyn9Mk9\n" - "3UgHAiwMLDqeSQShjHWkBeLr5IOYMubT6SuLpd13rz2WOj6ETq7zizUanV8yAeaT\n" - "x/pn1/rVpbzrbEAL5RkYlUK0ZbwpKjTLygiHUXFqpiID4L1OXoJbtbgSQlXFTEXV\n" - "AnG40QNerXjQ8b+BlmFmCY2nxtNFgtVLUHb4vyG1mUcNIYafH+9TD5tUdzDVZP90\n" - "NnU+8i3Ah3qk9B4Cv9wdHY4Mq/m2jTZd060oGb5l5381Ju5tr2BE+xPXCzSk7TsL\n" - "tdq43/hGqq4D2YGCc9E0WnOVxw==\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIEwTCCAqmgAwIBAgIIFv+PS+AkgjowDQYJKoZIhvcNAQELBQAwETEPMA0GA1UE\n" - "AxMGcm9vdGNhMB4XDTE5MTAyNDE0MDMwMFoXDTIwMTAyNDE0MDMwMFowETEPMA0G\n" - "A1UEAxMGcm9vdGNhMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtjmj\n" - "zSdA5BY0mdY4QvpWD9Qfziv1M/hlYqVaYLgr6mLRL7zHu4UFTLEV99L9JpZ6jEjb\n" - "AGZ7MyMCXWAVBMLGyiPF+BL0rL19vF1oAN4spbsHxQdHOso7wj0qGF7zahTzu8Bh\n" - "QVdwLQAsgTjOlx17OavncAKWhh9PAPLiieXpUpWPCF9no+CXBlGQ4uNJExuZJJwk\n" - "8YWkzHb12FcQV4LIB2pT4f0GG7RwjAdR4WngEzWPw2xboYcsjOKhzl/vQRfvoz0X\n" - "JEAQH9yyYQZffu82M+abKSLpInacWhrsL2je3LsjOhR2tTwJ+P2jpZ0R8JGUi7Et\n" - "atosVCt266GTexlhTZp1lreEkndj6PHSVQE7hPG07Uxp/f1F+ngHMrVbJuMKkOc7\n" - "9eCRTmEONBf3NFZg9zA8wYS/fAkB7NOyn+bHxQa0iVZWl3TP+hWgq86sZrHHRFir\n" - "lI+a61ooMK9DSPq33Bzr1/Ibl32I0Dcg1cuGQWJmoQqnBmyLtFpKMPrXkRfYap0i\n" - "hnQhvg0S2ky/Xb/u2LVUVXE00xoM2I4pGDv8drlKtGcJpvIS7KRJSfGO202MERrO\n" - "fUxVYh6XSxy8O1EUMUaSUW4AE4mahgaQA+cik34f+XXv9W1JYGw/LWueV+ArZ+2b\n" - "vvfmSIRAmfja6H6NuBZoF231DUH5V5XnWmeONzsCAwEAAaMdMBswDAYDVR0TBAUw\n" - "AwEB/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIBAAk7UHoAWMRlcCtH\n" - "qPH4YOuqqhMEqrJ3nRrRffDmRNCy/R2OpYRmI37HItaWmAB/aGK6H3nQG5fHY1/e\n" - "Ypn/uwpYyvpMtYZgeNNFHckXcWQo3C7wOlCwQzWzI9po0zRp3EqTNBneKa4cZoe0\n" - "FxcMfLbHL4SRKE08PZ3NBRW4n01fjjSs3o4cXvhD6puMTwjL581tWhgmfTrYGMvH\n" - "i7/XSUuFKzj74dA1LioEvbi5qy4kCvy1zxLMySXRd8ZtdnlS/tP3dTx+f1qCZaH6\n" - "E3jE7pi24yRmQaiNaO8Ap4uKcPaMXCsqg+TNTID3QJx6hDgQYsD7P64cUJXXhT/S\n" - "bmdawUaWhwZXVCm2VIpYI3GYhnEVpovyqHOsopNfrabCzvuVB/d4wJBO9MJUk/0l\n" - "BBCTJx3DluvkjKlDWxVDgpofElbU+77mEKLLki4G0f12biJLXOoS+jYayHSKbNlT\n" - "5qzXO3swPMNyS1iBdJtmsh3d5JxHa96UlBgKa5pZY2vk+rHUP0j5aLPMqqCixOpE\n" - "rYX6hvg898wlR2enXY//dgnvgprDW9Fs1x/PdaFx6p1EFpGuJX/td7CK633MsRbu\n" - "dirhB+L70skZjiGGR/kY0i6edHFiMoqmyXm3ML9ID3ZWfQV9gDCCIKvz9SqpW08q\n" - "dZHbP85IPw8a3Lzour7HV3acvaKA\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIEKjCCAhKgAwIBAgIIRiBQA6KFBj0wDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE\n" + "AxMEaWNhMTAeFw0xOTEwMjQxNDA1MDBaFw0yMDEwMjQxNDAzMDBaMBoxGDAWBgNV\n" + "BAMTD3Rlc3Quc2VydmVyLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\n" + "ggEBAKgBiCBLx9eqe2tcCdkyDvQb3UZMR/Gs1mHaiW9zUbqnHkMD/N+0B+JRcfW2\n" + "P5WnQRTlSrWM/gFJh+va0Wtnu0VZWdBHhyR8Vq62DskNRSXUSTsQVqktaMmA/yPY\n" + "iYtY5069WUBoa1GD23BRaeoinLtmBEaUIvsAdCPQ5bCdaVSFOLlnuDxF6/bOAQAC\n" + "5EJ3UDAdqqGmHCQAJcKiCim2ttCIquLqAsgalHMKKBAdEm01o+LO6FOHK1OkwA1W\n" + "GiDNaojEojMS87x9VjmdiamvPuAALLAMMQ3fh8DxqAWA4pfkYWJKehnlPHdjPfkO\n" + "GjUvpezsWev5PBJKp5x6ce9vlgMCAwEAAaN/MH0wCQYDVR0TBAIwADALBgNVHQ8E\n" + "BAMCA4gwEwYDVR0lBAwwCgYIKwYBBQUHAwEwGgYDVR0RBBMwEYIPdGVzdC5zZXJ2\n" + "ZXIuY29tMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcwAYYWaHR0cDovLzEwLjEu\n" + "Mi4yNDI6ODg4ODANBgkqhkiG9w0BAQsFAAOCAgEAK9Bo7i8Mj7t8l+nZqQ6ezG6d\n" + "sq5FYkr2h+T5C0Pt2RscMYAKRdBjAXmCTy1jhaojUVIupm/pK1YQAOgSQF5PMhLl\n" + "3W1SiLl2aU1A0HjHpHvN81YP5VeceHgoJrA5VYGYQohIyH9zfSJNb5TyhQcIHiqZ\n" + "aSC64c7sSywHC4vEHYyYu0LVMic4y7EWM2Y5Vh3xhB28jq5ixChCxG/i6rHt1fC+\n" + "1YsKQaE+sAY4QVjMYE8g4SldqMDpnSCiHDFBfWMGD5hGvp4WMfNXpuiDG9M8wAcT\n" + "A93NxnZqmUdksK/waGS7/uj/eY1hMU2Z/TVhaCDk146hH+lOUf6CnwM3MXLOALaz\n" + "eHyfbm/P8XniWhzBQIiY+5wYVath9YlOkRZhAMKRglRNpwXoTKZiJNkqrwaz6RnB\n" + "S19QByi+L6tFP7AxLFd7DKv4FbI2FWh5GyCrqa8rNc3Bh/oxDR0iAUetEFQUjkxN\n" + "x5A0mOnKds0UoTq3nI5t6obgzAjFkiMgVMXyXo4HqfzpAtqIgZd+PJn5snFoJ6Xh\n" + "NPjCYbfBb9LQFlfodWVg0W4mjfp0HypFaBIudgw0ANdQUUOosWFi0H2msj7CJf4G\n" + "crMZmsCvD+xKfwKqph+tH0/e/xFeFmVOSVI78ESJhpRcQ9ODiOA98FTR4W1Nv9gd\n" + "2GOAQzJDUd051fcRBXQ=\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIEvzCCAqegAwIBAgIIV9UmBssMHTUwDQYJKoZIhvcNAQELBQAwETEPMA0GA1UE\n" + "AxMGcm9vdGNhMB4XDTE5MTAyNDE0MDQwMFoXDTIwMTAyNDE0MDMwMFowDzENMAsG\n" + "A1UEAxMEaWNhMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALY5o80n\n" + "QOQWNJnWOEL6Vg/UH84r9TP4ZWKlWmC4K+pi0S+8x7uFBUyxFffS/SaWeoxI2wBm\n" + "ezMjAl1gFQTCxsojxfgS9Ky9fbxdaADeLKW7B8UHRzrKO8I9Khhe82oU87vAYUFX\n" + "cC0ALIE4zpcdezmr53ACloYfTwDy4onl6VKVjwhfZ6PglwZRkOLjSRMbmSScJPGF\n" + "pMx29dhXEFeCyAdqU+H9Bhu0cIwHUeFp4BM1j8NsW6GHLIzioc5f70EX76M9FyRA\n" + "EB/csmEGX37vNjPmmyki6SJ2nFoa7C9o3ty7IzoUdrU8Cfj9o6WdEfCRlIuxLWra\n" + "LFQrduuhk3sZYU2adZa3hJJ3Y+jx0lUBO4TxtO1Maf39Rfp4BzK1WybjCpDnO/Xg\n" + "kU5hDjQX9zRWYPcwPMGEv3wJAezTsp/mx8UGtIlWVpd0z/oVoKvOrGaxx0RYq5SP\n" + "mutaKDCvQ0j6t9wc69fyG5d9iNA3INXLhkFiZqEKpwZsi7RaSjD615EX2GqdIoZ0\n" + "Ib4NEtpMv12/7ti1VFVxNNMaDNiOKRg7/Ha5SrRnCabyEuykSUnxjttNjBEazn1M\n" + "VWIel0scvDtRFDFGklFuABOJmoYGkAPnIpN+H/l17/VtSWBsPy1rnlfgK2ftm773\n" + "5kiEQJn42uh+jbgWaBdt9Q1B+VeV51pnjjc7AgMBAAGjHTAbMAwGA1UdEwQFMAMB\n" + "Af8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQBgm8eEsLeGo5eI4plQ\n" + "WtqvyKrrvpa9YachqmQfoARbMBJg4J0Eq3u3yjL1kUHZ5f0IkXeiaw/w5u2oxZTe\n" + "SHHJCCd54NhLzBeTV/GQuDnWqU+GZP3ay+SkzjAMbfkHibVlRZLkeVnDZLRGd5jb\n" + "RMXRj1LMVagI1xVM3Y4PEcDw+Bhp4XFHBUcxtcqFrjJQBbJJYE9A2QiPwoDQlYoy\n" + "gSvVffbb04bDM01pbYOfPL9t1IIiq7KHHOq0vWzvoU+hnAx+U30wNSaeshKuixNa\n" + "PpWKZ1hoejkhddeiypFqhS54oOxaCxArXPFIl/mLPJlztf/s1Xumi0W4fkIACtoY\n" + "SFilawtsf/vC/WesFsQ502IkFpjYCeUavk8nAfZPZg1BwQ+ZLcwZXBuCtqyn9Mk9\n" + "3UgHAiwMLDqeSQShjHWkBeLr5IOYMubT6SuLpd13rz2WOj6ETq7zizUanV8yAeaT\n" + "x/pn1/rVpbzrbEAL5RkYlUK0ZbwpKjTLygiHUXFqpiID4L1OXoJbtbgSQlXFTEXV\n" + "AnG40QNerXjQ8b+BlmFmCY2nxtNFgtVLUHb4vyG1mUcNIYafH+9TD5tUdzDVZP90\n" + "NnU+8i3Ah3qk9B4Cv9wdHY4Mq/m2jTZd060oGb5l5381Ju5tr2BE+xPXCzSk7TsL\n" + "tdq43/hGqq4D2YGCc9E0WnOVxw==\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIEwTCCAqmgAwIBAgIIFv+PS+AkgjowDQYJKoZIhvcNAQELBQAwETEPMA0GA1UE\n" + "AxMGcm9vdGNhMB4XDTE5MTAyNDE0MDMwMFoXDTIwMTAyNDE0MDMwMFowETEPMA0G\n" + "A1UEAxMGcm9vdGNhMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtjmj\n" + "zSdA5BY0mdY4QvpWD9Qfziv1M/hlYqVaYLgr6mLRL7zHu4UFTLEV99L9JpZ6jEjb\n" + "AGZ7MyMCXWAVBMLGyiPF+BL0rL19vF1oAN4spbsHxQdHOso7wj0qGF7zahTzu8Bh\n" + "QVdwLQAsgTjOlx17OavncAKWhh9PAPLiieXpUpWPCF9no+CXBlGQ4uNJExuZJJwk\n" + "8YWkzHb12FcQV4LIB2pT4f0GG7RwjAdR4WngEzWPw2xboYcsjOKhzl/vQRfvoz0X\n" + "JEAQH9yyYQZffu82M+abKSLpInacWhrsL2je3LsjOhR2tTwJ+P2jpZ0R8JGUi7Et\n" + "atosVCt266GTexlhTZp1lreEkndj6PHSVQE7hPG07Uxp/f1F+ngHMrVbJuMKkOc7\n" + "9eCRTmEONBf3NFZg9zA8wYS/fAkB7NOyn+bHxQa0iVZWl3TP+hWgq86sZrHHRFir\n" + "lI+a61ooMK9DSPq33Bzr1/Ibl32I0Dcg1cuGQWJmoQqnBmyLtFpKMPrXkRfYap0i\n" + "hnQhvg0S2ky/Xb/u2LVUVXE00xoM2I4pGDv8drlKtGcJpvIS7KRJSfGO202MERrO\n" + "fUxVYh6XSxy8O1EUMUaSUW4AE4mahgaQA+cik34f+XXv9W1JYGw/LWueV+ArZ+2b\n" + "vvfmSIRAmfja6H6NuBZoF231DUH5V5XnWmeONzsCAwEAAaMdMBswDAYDVR0TBAUw\n" + "AwEB/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIBAAk7UHoAWMRlcCtH\n" + "qPH4YOuqqhMEqrJ3nRrRffDmRNCy/R2OpYRmI37HItaWmAB/aGK6H3nQG5fHY1/e\n" + "Ypn/uwpYyvpMtYZgeNNFHckXcWQo3C7wOlCwQzWzI9po0zRp3EqTNBneKa4cZoe0\n" + "FxcMfLbHL4SRKE08PZ3NBRW4n01fjjSs3o4cXvhD6puMTwjL581tWhgmfTrYGMvH\n" + "i7/XSUuFKzj74dA1LioEvbi5qy4kCvy1zxLMySXRd8ZtdnlS/tP3dTx+f1qCZaH6\n" + "E3jE7pi24yRmQaiNaO8Ap4uKcPaMXCsqg+TNTID3QJx6hDgQYsD7P64cUJXXhT/S\n" + "bmdawUaWhwZXVCm2VIpYI3GYhnEVpovyqHOsopNfrabCzvuVB/d4wJBO9MJUk/0l\n" + "BBCTJx3DluvkjKlDWxVDgpofElbU+77mEKLLki4G0f12biJLXOoS+jYayHSKbNlT\n" + "5qzXO3swPMNyS1iBdJtmsh3d5JxHa96UlBgKa5pZY2vk+rHUP0j5aLPMqqCixOpE\n" + "rYX6hvg898wlR2enXY//dgnvgprDW9Fs1x/PdaFx6p1EFpGuJX/td7CK633MsRbu\n" + "dirhB+L70skZjiGGR/kY0i6edHFiMoqmyXm3ML9ID3ZWfQV9gDCCIKvz9SqpW08q\n" + "dZHbP85IPw8a3Lzour7HV3acvaKA\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) - 1 -}; + sizeof(server_cert_pem) - 1 }; static unsigned char ca_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIEwTCCAqmgAwIBAgIIFv+PS+AkgjowDQYJKoZIhvcNAQELBQAwETEPMA0GA1UE\n" - "AxMGcm9vdGNhMB4XDTE5MTAyNDE0MDMwMFoXDTIwMTAyNDE0MDMwMFowETEPMA0G\n" - "A1UEAxMGcm9vdGNhMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtjmj\n" - "zSdA5BY0mdY4QvpWD9Qfziv1M/hlYqVaYLgr6mLRL7zHu4UFTLEV99L9JpZ6jEjb\n" - "AGZ7MyMCXWAVBMLGyiPF+BL0rL19vF1oAN4spbsHxQdHOso7wj0qGF7zahTzu8Bh\n" - "QVdwLQAsgTjOlx17OavncAKWhh9PAPLiieXpUpWPCF9no+CXBlGQ4uNJExuZJJwk\n" - "8YWkzHb12FcQV4LIB2pT4f0GG7RwjAdR4WngEzWPw2xboYcsjOKhzl/vQRfvoz0X\n" - "JEAQH9yyYQZffu82M+abKSLpInacWhrsL2je3LsjOhR2tTwJ+P2jpZ0R8JGUi7Et\n" - "atosVCt266GTexlhTZp1lreEkndj6PHSVQE7hPG07Uxp/f1F+ngHMrVbJuMKkOc7\n" - "9eCRTmEONBf3NFZg9zA8wYS/fAkB7NOyn+bHxQa0iVZWl3TP+hWgq86sZrHHRFir\n" - "lI+a61ooMK9DSPq33Bzr1/Ibl32I0Dcg1cuGQWJmoQqnBmyLtFpKMPrXkRfYap0i\n" - "hnQhvg0S2ky/Xb/u2LVUVXE00xoM2I4pGDv8drlKtGcJpvIS7KRJSfGO202MERrO\n" - "fUxVYh6XSxy8O1EUMUaSUW4AE4mahgaQA+cik34f+XXv9W1JYGw/LWueV+ArZ+2b\n" - "vvfmSIRAmfja6H6NuBZoF231DUH5V5XnWmeONzsCAwEAAaMdMBswDAYDVR0TBAUw\n" - "AwEB/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIBAAk7UHoAWMRlcCtH\n" - "qPH4YOuqqhMEqrJ3nRrRffDmRNCy/R2OpYRmI37HItaWmAB/aGK6H3nQG5fHY1/e\n" - "Ypn/uwpYyvpMtYZgeNNFHckXcWQo3C7wOlCwQzWzI9po0zRp3EqTNBneKa4cZoe0\n" - "FxcMfLbHL4SRKE08PZ3NBRW4n01fjjSs3o4cXvhD6puMTwjL581tWhgmfTrYGMvH\n" - "i7/XSUuFKzj74dA1LioEvbi5qy4kCvy1zxLMySXRd8ZtdnlS/tP3dTx+f1qCZaH6\n" - "E3jE7pi24yRmQaiNaO8Ap4uKcPaMXCsqg+TNTID3QJx6hDgQYsD7P64cUJXXhT/S\n" - "bmdawUaWhwZXVCm2VIpYI3GYhnEVpovyqHOsopNfrabCzvuVB/d4wJBO9MJUk/0l\n" - "BBCTJx3DluvkjKlDWxVDgpofElbU+77mEKLLki4G0f12biJLXOoS+jYayHSKbNlT\n" - "5qzXO3swPMNyS1iBdJtmsh3d5JxHa96UlBgKa5pZY2vk+rHUP0j5aLPMqqCixOpE\n" - "rYX6hvg898wlR2enXY//dgnvgprDW9Fs1x/PdaFx6p1EFpGuJX/td7CK633MsRbu\n" - "dirhB+L70skZjiGGR/kY0i6edHFiMoqmyXm3ML9ID3ZWfQV9gDCCIKvz9SqpW08q\n" - "dZHbP85IPw8a3Lzour7HV3acvaKA\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t ca_cert = { ca_cert_pem, - sizeof(ca_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIIEwTCCAqmgAwIBAgIIFv+PS+AkgjowDQYJKoZIhvcNAQELBQAwETEPMA0GA1UE\n" + "AxMGcm9vdGNhMB4XDTE5MTAyNDE0MDMwMFoXDTIwMTAyNDE0MDMwMFowETEPMA0G\n" + "A1UEAxMGcm9vdGNhMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtjmj\n" + "zSdA5BY0mdY4QvpWD9Qfziv1M/hlYqVaYLgr6mLRL7zHu4UFTLEV99L9JpZ6jEjb\n" + "AGZ7MyMCXWAVBMLGyiPF+BL0rL19vF1oAN4spbsHxQdHOso7wj0qGF7zahTzu8Bh\n" + "QVdwLQAsgTjOlx17OavncAKWhh9PAPLiieXpUpWPCF9no+CXBlGQ4uNJExuZJJwk\n" + "8YWkzHb12FcQV4LIB2pT4f0GG7RwjAdR4WngEzWPw2xboYcsjOKhzl/vQRfvoz0X\n" + "JEAQH9yyYQZffu82M+abKSLpInacWhrsL2je3LsjOhR2tTwJ+P2jpZ0R8JGUi7Et\n" + "atosVCt266GTexlhTZp1lreEkndj6PHSVQE7hPG07Uxp/f1F+ngHMrVbJuMKkOc7\n" + "9eCRTmEONBf3NFZg9zA8wYS/fAkB7NOyn+bHxQa0iVZWl3TP+hWgq86sZrHHRFir\n" + "lI+a61ooMK9DSPq33Bzr1/Ibl32I0Dcg1cuGQWJmoQqnBmyLtFpKMPrXkRfYap0i\n" + "hnQhvg0S2ky/Xb/u2LVUVXE00xoM2I4pGDv8drlKtGcJpvIS7KRJSfGO202MERrO\n" + "fUxVYh6XSxy8O1EUMUaSUW4AE4mahgaQA+cik34f+XXv9W1JYGw/LWueV+ArZ+2b\n" + "vvfmSIRAmfja6H6NuBZoF231DUH5V5XnWmeONzsCAwEAAaMdMBswDAYDVR0TBAUw\n" + "AwEB/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIBAAk7UHoAWMRlcCtH\n" + "qPH4YOuqqhMEqrJ3nRrRffDmRNCy/R2OpYRmI37HItaWmAB/aGK6H3nQG5fHY1/e\n" + "Ypn/uwpYyvpMtYZgeNNFHckXcWQo3C7wOlCwQzWzI9po0zRp3EqTNBneKa4cZoe0\n" + "FxcMfLbHL4SRKE08PZ3NBRW4n01fjjSs3o4cXvhD6puMTwjL581tWhgmfTrYGMvH\n" + "i7/XSUuFKzj74dA1LioEvbi5qy4kCvy1zxLMySXRd8ZtdnlS/tP3dTx+f1qCZaH6\n" + "E3jE7pi24yRmQaiNaO8Ap4uKcPaMXCsqg+TNTID3QJx6hDgQYsD7P64cUJXXhT/S\n" + "bmdawUaWhwZXVCm2VIpYI3GYhnEVpovyqHOsopNfrabCzvuVB/d4wJBO9MJUk/0l\n" + "BBCTJx3DluvkjKlDWxVDgpofElbU+77mEKLLki4G0f12biJLXOoS+jYayHSKbNlT\n" + "5qzXO3swPMNyS1iBdJtmsh3d5JxHa96UlBgKa5pZY2vk+rHUP0j5aLPMqqCixOpE\n" + "rYX6hvg898wlR2enXY//dgnvgprDW9Fs1x/PdaFx6p1EFpGuJX/td7CK633MsRbu\n" + "dirhB+L70skZjiGGR/kY0i6edHFiMoqmyXm3ML9ID3ZWfQV9gDCCIKvz9SqpW08q\n" + "dZHbP85IPw8a3Lzour7HV3acvaKA\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t ca_cert = { ca_cert_pem, sizeof(ca_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIEogIBAAKCAQEAqAGIIEvH16p7a1wJ2TIO9BvdRkxH8azWYdqJb3NRuqceQwP8\n" - "37QH4lFx9bY/ladBFOVKtYz+AUmH69rRa2e7RVlZ0EeHJHxWrrYOyQ1FJdRJOxBW\n" - "qS1oyYD/I9iJi1jnTr1ZQGhrUYPbcFFp6iKcu2YERpQi+wB0I9DlsJ1pVIU4uWe4\n" - "PEXr9s4BAALkQndQMB2qoaYcJAAlwqIKKba20Iiq4uoCyBqUcwooEB0SbTWj4s7o\n" - "U4crU6TADVYaIM1qiMSiMxLzvH1WOZ2Jqa8+4AAssAwxDd+HwPGoBYDil+RhYkp6\n" - "GeU8d2M9+Q4aNS+l7OxZ6/k8EkqnnHpx72+WAwIDAQABAoIBAEw4Ba3BM3SgH0Xh\n" - "h4ZFs4sDaSuPR8RYiRnzrw4k3xsy3gPBN2O1pS4DjRPQDqCyNFBqha4/vKyQ010o\n" - "9IEpmkgn9RsMmD7xOdIhPivwHULAQEjPbMFrnHJuV1HH1v6k4qtSM7+In8dnbpJS\n" - "HR7ffQN3kNEEO6pr1kS5bLrnbvWsjpKcqELOMJfJY+uMS/GhITfrhWtm0PagZ1ze\n" - "w/WYHTkgzGOgBeJuOjb6jCfLOuNDsP/RKALnq7eGeHce8w1tRFkpnxHrCquisgaQ\n" - "ZpFIwG8r8VgwRgd/ydjD1+jMgIwx1NW2GBnX91uLCe6/hTMDAub6TPYZkqiHIlDZ\n" - "UcMg5eECgYEA0kdGFO4XjlpLg5y5FmZSNH0UhEYbn67PTb9DMi3ecDPH5zSjbiYa\n" - "0JCFYQqRTPBl6D/cRIIIaWJOBIg7DgzELFTqnZlpWuenSef9sHNIQp/6XhT75aLD\n" - "EUJgcP3oyV0MOhGp48ZnYgmbnBZuoQKpuWV39IqqgSlAUKjTcFQAV9UCgYEAzIk/\n" - "eTkd1tOh+K22pGBaz8hHi5+YJ/YpHKSjryI2I0PgtmrWL8S284pySkGU+oFV4N8Z\n" - "Ajh5+26DVWxQK8LAqRYlgrooF/+85FJuGx47BhnTCVxmypOZILJ0jeJk8StBrAUk\n" - "TvcEVcQr8kFSvUPyz1codEFTECsMYbKP37aeuncCgYBnOa3hoG/X5eOkHE+P+3Ln\n" - "aW+k73WoEfyaQgYOoA3OLt03VtPTwsjvEcMoPDPP/UNJm+/Zgav3b9a0ytuSrhmv\n" - "WZBDBYh+o7Gvyj7zW+RhMH+Lp+lwdVIlKtyFG2AnWZIi/4DS3BbsPaMyIKD2UYRY\n" - "CsO0PE4vUbzM29PQFKyGcQKBgG3hrf/p92XZ/EIk0OIuAZtu9UDFVHDjheKlcGo9\n" - "7uezJ53Yd4jiHYdo8U2DPg32PbS5Ji5TOPUiwdu6fLeFwQsVosFAURnTgh8HSa+3\n" - "5e25Ie79fRuHf9RZCtTOs3v8ySMpAACMJAAPi6xx+4lCX8eUA1+xWHZvKg+yZijB\n" - "azSxAoGABIvXwUi1NaRDF/fMDiwiwnlJf8FdfY3RBbM1X3ZJbhzqxGL3Hfc4vRcB\n" - "zl7xUnP5Ot9trof6AjHsYCRW+FFjrbUs0x56KoIDCTsd8uArmquyKnSrQb+Zu4FK\n" - "b9M8/NMq3h3Ub+yO/YBm1HOSWeJs8pNSMU72j3QhorNIjAsLGyE=\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIIEogIBAAKCAQEAqAGIIEvH16p7a1wJ2TIO9BvdRkxH8azWYdqJb3NRuqceQwP8\n" + "37QH4lFx9bY/ladBFOVKtYz+AUmH69rRa2e7RVlZ0EeHJHxWrrYOyQ1FJdRJOxBW\n" + "qS1oyYD/I9iJi1jnTr1ZQGhrUYPbcFFp6iKcu2YERpQi+wB0I9DlsJ1pVIU4uWe4\n" + "PEXr9s4BAALkQndQMB2qoaYcJAAlwqIKKba20Iiq4uoCyBqUcwooEB0SbTWj4s7o\n" + "U4crU6TADVYaIM1qiMSiMxLzvH1WOZ2Jqa8+4AAssAwxDd+HwPGoBYDil+RhYkp6\n" + "GeU8d2M9+Q4aNS+l7OxZ6/k8EkqnnHpx72+WAwIDAQABAoIBAEw4Ba3BM3SgH0Xh\n" + "h4ZFs4sDaSuPR8RYiRnzrw4k3xsy3gPBN2O1pS4DjRPQDqCyNFBqha4/vKyQ010o\n" + "9IEpmkgn9RsMmD7xOdIhPivwHULAQEjPbMFrnHJuV1HH1v6k4qtSM7+In8dnbpJS\n" + "HR7ffQN3kNEEO6pr1kS5bLrnbvWsjpKcqELOMJfJY+uMS/GhITfrhWtm0PagZ1ze\n" + "w/WYHTkgzGOgBeJuOjb6jCfLOuNDsP/RKALnq7eGeHce8w1tRFkpnxHrCquisgaQ\n" + "ZpFIwG8r8VgwRgd/ydjD1+jMgIwx1NW2GBnX91uLCe6/hTMDAub6TPYZkqiHIlDZ\n" + "UcMg5eECgYEA0kdGFO4XjlpLg5y5FmZSNH0UhEYbn67PTb9DMi3ecDPH5zSjbiYa\n" + "0JCFYQqRTPBl6D/cRIIIaWJOBIg7DgzELFTqnZlpWuenSef9sHNIQp/6XhT75aLD\n" + "EUJgcP3oyV0MOhGp48ZnYgmbnBZuoQKpuWV39IqqgSlAUKjTcFQAV9UCgYEAzIk/\n" + "eTkd1tOh+K22pGBaz8hHi5+YJ/YpHKSjryI2I0PgtmrWL8S284pySkGU+oFV4N8Z\n" + "Ajh5+26DVWxQK8LAqRYlgrooF/+85FJuGx47BhnTCVxmypOZILJ0jeJk8StBrAUk\n" + "TvcEVcQr8kFSvUPyz1codEFTECsMYbKP37aeuncCgYBnOa3hoG/X5eOkHE+P+3Ln\n" + "aW+k73WoEfyaQgYOoA3OLt03VtPTwsjvEcMoPDPP/UNJm+/Zgav3b9a0ytuSrhmv\n" + "WZBDBYh+o7Gvyj7zW+RhMH+Lp+lwdVIlKtyFG2AnWZIi/4DS3BbsPaMyIKD2UYRY\n" + "CsO0PE4vUbzM29PQFKyGcQKBgG3hrf/p92XZ/EIk0OIuAZtu9UDFVHDjheKlcGo9\n" + "7uezJ53Yd4jiHYdo8U2DPg32PbS5Ji5TOPUiwdu6fLeFwQsVosFAURnTgh8HSa+3\n" + "5e25Ie79fRuHf9RZCtTOs3v8ySMpAACMJAAPi6xx+4lCX8eUA1+xWHZvKg+yZijB\n" + "azSxAoGABIvXwUi1NaRDF/fMDiwiwnlJf8FdfY3RBbM1X3ZJbhzqxGL3Hfc4vRcB\n" + "zl7xUnP5Ot9trof6AjHsYCRW+FFjrbUs0x56KoIDCTsd8uArmquyKnSrQb+Zu4FK\n" + "b9M8/NMq3h3Ub+yO/YBm1HOSWeJs8pNSMU72j3QhorNIjAsLGyE=\n" + "-----END RSA PRIVATE KEY-----\n"; const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) - 1 -}; + sizeof(server_key_pem) - 1 }; static int sent = 0; static int received = 0; static int handshake_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { success("received status request\n"); received = 1; return 0; } -# define RESP "\x30\x82\x05\xa3\x0a\x01\x00\xa0\x82\x05\x9c\x30\x82\x05\x98\x06\x09\x2b\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x05\x89\x30\x82\x05\x85\x30\x81\x80\xa1\x02\x30\x00\x18\x0f\x32\x30\x31\x39\x31\x32\x30\x35\x31\x38\x30\x31\x30\x34\x5a\x30\x69\x30\x67\x30\x41\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04\x14\x46\x2c\x91\xc8\xd2\x57\xe2\xb8\xb1\xd3\xd0\x99\xc1\xfe\x38\x51\x0e\x17\xa9\x50\x04\x14\x11\x92\x6c\xe3\xa7\x50\x77\x21\xfe\x95\xfa\xca\x6d\x3f\xc7\xa9\xaf\xa4\x9e\x82\x02\x08\x46\x20\x50\x03\xa2\x85\x06\x3d\xa1\x11\x18\x0f\x32\x30\x31\x39\x31\x32\x30\x35\x31\x35\x32\x37\x35\x35\x5a\x18\x0f\x32\x30\x31\x39\x31\x32\x30\x35\x31\x38\x30\x31\x30\x34\x5a\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x03\x82\x01\x01\x00\x05\x88\x2c\x3d\x57\xf4\x75\xbf\x7f\xbe\x9e\x0f\xdf\x8f\x6c\x5f\x08\x56\xc4\x04\xc6\xd6\x3c\xfa\x33\x54\x3e\x42\x1c\x77\xda\x3a\x2a\x48\xcf\xfd\xf1\x6e\xb5\x1d\x94\x06\xfa\xfd\xf8\xba\xec\x66\xc3\x22\x7c\x43\xaa\x48\xaa\x58\x3a\xdc\x2a\x55\x44\x78\xc5\x6e\x0d\x1e\x66\xff\x79\x33\xb3\x26\x22\x86\xa0\x0a\xc0\x59\xb1\xdf\x6d\x07\x2d\x86\x2d\x5b\x0b\x29\x0f\xf3\xc1\x39\x21\x05\xf9\xdb\xdd\x47\x11\x6b\x83\xa0\xc7\x24\xbc\xaa\x42\x43\x9e\x20\x1f\x63\x10\x6c\xeb\x94\x7a\x9c\x44\xaa\x24\xfb\xde\x8f\x49\x92\x1c\xc7\x45\x21\xca\xf9\x1a\x11\x54\x4f\x68\xab\xf0\xce\xd3\x0a\xdc\x9f\xc3\x5d\x8d\x7e\xd4\x96\x30\x74\x31\x95\x04\x55\x8d\xf5\xdf\x3f\x34\x8b\x32\xfc\xf0\x4d\x10\xc6\xc4\x46\xfc\x6a\xb1\xa3\x5c\x9a\xde\xf2\x22\xc3\x5f\x08\x8a\x70\x65\xff\xaa\xf5\xc0\x14\x8b\x13\x47\xff\x0c\x72\x6a\x09\x51\xeb\xec\x92\xc5\xfd\x41\x37\x11\x12\x57\x7b\x47\x9e\x25\xd5\xf2\x10\xc2\xf7\xae\x0e\x72\xfb\x2d\x4f\x8d\x54\xe6\x5a\x71\x2b\xfa\x2b\x9c\xd7\x59\xe5\x31\x30\x21\x3f\x7f\xa7\x85\x07\x31\x93\x9d\x6d\x54\xb2\x40\xa9\x78\xef\x24\xc7\xa0\x82\x03\xea\x30\x82\x03\xe6\x30\x82\x03\xe2\x30\x82\x01\xca\xa0\x03\x02\x01\x02\x02\x08\x68\xfe\x28\x8e\x92\xfb\xa8\x37\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x30\x11\x31\x0f\x30\x0d\x06\x03\x55\x04\x03\x13\x06\x72\x6f\x6f\x74\x63\x61\x30\x1e\x17\x0d\x31\x39\x31\x31\x32\x30\x31\x36\x32\x34\x30\x30\x5a\x17\x0d\x32\x30\x31\x30\x32\x34\x31\x34\x30\x33\x30\x30\x5a\x30\x00\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xa8\x01\x88\x20\x4b\xc7\xd7\xaa\x7b\x6b\x5c\x09\xd9\x32\x0e\xf4\x1b\xdd\x46\x4c\x47\xf1\xac\xd6\x61\xda\x89\x6f\x73\x51\xba\xa7\x1e\x43\x03\xfc\xdf\xb4\x07\xe2\x51\x71\xf5\xb6\x3f\x95\xa7\x41\x14\xe5\x4a\xb5\x8c\xfe\x01\x49\x87\xeb\xda\xd1\x6b\x67\xbb\x45\x59\x59\xd0\x47\x87\x24\x7c\x56\xae\xb6\x0e\xc9\x0d\x45\x25\xd4\x49\x3b\x10\x56\xa9\x2d\x68\xc9\x80\xff\x23\xd8\x89\x8b\x58\xe7\x4e\xbd\x59\x40\x68\x6b\x51\x83\xdb\x70\x51\x69\xea\x22\x9c\xbb\x66\x04\x46\x94\x22\xfb\x00\x74\x23\xd0\xe5\xb0\x9d\x69\x54\x85\x38\xb9\x67\xb8\x3c\x45\xeb\xf6\xce\x01\x00\x02\xe4\x42\x77\x50\x30\x1d\xaa\xa1\xa6\x1c\x24\x00\x25\xc2\xa2\x0a\x29\xb6\xb6\xd0\x88\xaa\xe2\xea\x02\xc8\x1a\x94\x73\x0a\x28\x10\x1d\x12\x6d\x35\xa3\xe2\xce\xe8\x53\x87\x2b\x53\xa4\xc0\x0d\x56\x1a\x20\xcd\x6a\x88\xc4\xa2\x33\x12\xf3\xbc\x7d\x56\x39\x9d\x89\xa9\xaf\x3e\xe0\x00\x2c\xb0\x0c\x31\x0d\xdf\x87\xc0\xf1\xa8\x05\x80\xe2\x97\xe4\x61\x62\x4a\x7a\x19\xe5\x3c\x77\x63\x3d\xf9\x0e\x1a\x35\x2f\xa5\xec\xec\x59\xeb\xf9\x3c\x12\x4a\xa7\x9c\x7a\x71\xef\x6f\x96\x03\x02\x03\x01\x00\x01\xa3\x4f\x30\x4d\x30\x09\x06\x03\x55\x1d\x13\x04\x02\x30\x00\x30\x0b\x06\x03\x55\x1d\x0f\x04\x04\x03\x02\x07\x80\x30\x13\x06\x03\x55\x1d\x25\x04\x0c\x30\x0a\x06\x08\x2b\x06\x01\x05\x05\x07\x03\x09\x30\x1e\x06\x09\x60\x86\x48\x01\x86\xf8\x42\x01\x0d\x04\x11\x16\x0f\x78\x63\x61\x20\x63\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x03\x82\x02\x01\x00\x82\x9d\x8f\xa1\x17\x9b\x3b\xee\x86\x1c\xee\x33\xeb\x80\x71\xb5\x7e\x6b\xd7\xcf\x7d\x9a\x8b\x80\x2b\x3c\x65\xde\xe1\x65\x00\x3b\x4a\x27\x7a\x5d\x63\x19\x4e\x59\xde\xfa\x38\x01\x2b\x09\x91\xc1\x70\x81\x8c\x87\x9b\x17\x68\x22\x88\xf2\x57\x8f\x15\x52\x12\x0f\x1d\x43\x2b\xff\x83\x00\x2f\xd0\xf5\xc7\x93\xd4\xf2\x14\xfd\x94\xcc\x9f\x72\x75\x99\x44\x54\xdc\x6a\x39\x75\x80\xd7\x07\x9c\xb9\x67\xe3\xac\x4b\x72\x9f\xe0\x5d\x00\x6e\x60\xc5\x26\xaf\x9f\xf7\x94\xaa\xb1\xa2\x6f\xa0\xe4\xe8\x0d\x1c\x4e\x34\xe8\xa5\x06\x5c\x31\x64\x09\xf3\x67\xea\xe8\x45\x68\xc1\x13\x21\x41\x38\x9c\x2c\xf9\x6c\xb8\x79\xf4\xae\x8c\x27\x12\xa3\x0a\x0f\x12\x56\xbc\xda\x77\x23\xf0\xe2\xa2\x81\xf9\xdd\x0d\x69\x77\xc3\x3d\x08\x9d\xfe\xac\x18\x14\x83\x49\x67\xde\x85\x3a\x09\xd4\x4f\xec\x85\x85\xbc\xab\xd1\xc8\x01\x83\x74\x34\xc0\x03\x4e\x52\x3c\xb2\xed\x3b\xc0\x66\xa7\x41\xbf\x77\x3b\xcc\x12\xee\xf9\x2f\xd8\x50\x6d\x54\xc5\xf8\x5e\x14\x61\x81\x24\xdb\xcb\xf3\xb4\x25\x84\xc6\x3b\x99\x35\x07\x2e\xd0\xb3\x05\x38\xdf\x64\x21\x71\x9e\xe2\xf2\xce\xbc\x27\x80\x4e\x53\x97\xd3\xe1\xc1\x15\x46\x24\x0c\xc5\x86\x0e\x5b\xdf\x22\xb9\xfe\x35\xd6\xf0\x53\xda\x8f\x9b\x9c\x77\x7e\x9e\x41\x6f\x8e\xbc\x7b\xd4\xf0\x6c\x4f\xac\xe2\x91\x69\x8f\x67\x48\xb0\xc8\x80\x06\x10\xb1\x33\xf9\x8b\xf0\x01\x5d\x49\x9a\x5a\x59\xec\xc6\xb4\xad\x79\x9a\x32\x87\x81\x18\xce\x77\xf6\xc6\xa5\xce\x8b\x36\xee\xc6\xcc\x6b\xd7\x76\xbb\x99\xc1\x34\x2c\xda\x6a\x5f\x1d\x47\xc6\x9e\x98\xa0\x1d\xf0\xd4\x8b\x27\x8a\xa4\x7b\x56\xd8\x7c\x12\xa2\x51\x6e\xd1\x52\xa9\xa5\x31\x77\x9f\xf5\x06\xb4\xba\xb4\x60\x24\x55\xa2\x9d\x4b\x02\xcb\xa7\x62\xa5\x3d\x74\x9e\x47\x9e\x14\x84\x0b\x24\xe0\x01\x13\x9c\xf1\x62\xbd\x78\x18\x9b\xa5\xdf\xd8\x77\x7c\xa9\xc7\x09\x94\x61\x79\x41\x60\x2f\xcc\xe1\x15\x28\x3c\x17\x1d\xb6\x95\x78\x28\x91\x9e\xd1\xbc\xd6\x71\xff\x29\x2f\x22\xed\x24\x26\x81\xb8\xb6\x14\x80\x04\x00\x95\xdf\x50\x46\xe6\xa1\xff\x56\x94\xbc\x11\x48\x5c\xbf\xca\xb7\x4f\xac\xa1\x34\x40\x80\x0d\x88\x27\x73\x76\x24\x1a\xa9\x86\x36\x56\x3c\x84\xb8\x97\x38\xa8\x0e\x14\xab\x83\xca\x6b\x64\x7f\xa7\xfb\x86\x63\xc2\x40\xfc" -# define RESP_SIZE (sizeof(RESP)-1) +#define RESP \ + "\x30\x82\x05\xa3\x0a\x01\x00\xa0\x82\x05\x9c\x30\x82\x05\x98\x06\x09\x2b\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x05\x89\x30\x82\x05\x85\x30\x81\x80\xa1\x02\x30\x00\x18\x0f\x32\x30\x31\x39\x31\x32\x30\x35\x31\x38\x30\x31\x30\x34\x5a\x30\x69\x30\x67\x30\x41\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04\x14\x46\x2c\x91\xc8\xd2\x57\xe2\xb8\xb1\xd3\xd0\x99\xc1\xfe\x38\x51\x0e\x17\xa9\x50\x04\x14\x11\x92\x6c\xe3\xa7\x50\x77\x21\xfe\x95\xfa\xca\x6d\x3f\xc7\xa9\xaf\xa4\x9e\x82\x02\x08\x46\x20\x50\x03\xa2\x85\x06\x3d\xa1\x11\x18\x0f\x32\x30\x31\x39\x31\x32\x30\x35\x31\x35\x32\x37\x35\x35\x5a\x18\x0f\x32\x30\x31\x39\x31\x32\x30\x35\x31\x38\x30\x31\x30\x34\x5a\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x03\x82\x01\x01\x00\x05\x88\x2c\x3d\x57\xf4\x75\xbf\x7f\xbe\x9e\x0f\xdf\x8f\x6c\x5f\x08\x56\xc4\x04\xc6\xd6\x3c\xfa\x33\x54\x3e\x42\x1c\x77\xda\x3a\x2a\x48\xcf\xfd\xf1\x6e\xb5\x1d\x94\x06\xfa\xfd\xf8\xba\xec\x66\xc3\x22\x7c\x43\xaa\x48\xaa\x58\x3a\xdc\x2a\x55\x44\x78\xc5\x6e\x0d\x1e\x66\xff\x79\x33\xb3\x26\x22\x86\xa0\x0a\xc0\x59\xb1\xdf\x6d\x07\x2d\x86\x2d\x5b\x0b\x29\x0f\xf3\xc1\x39\x21\x05\xf9\xdb\xdd\x47\x11\x6b\x83\xa0\xc7\x24\xbc\xaa\x42\x43\x9e\x20\x1f\x63\x10\x6c\xeb\x94\x7a\x9c\x44\xaa\x24\xfb\xde\x8f\x49\x92\x1c\xc7\x45\x21\xca\xf9\x1a\x11\x54\x4f\x68\xab\xf0\xce\xd3\x0a\xdc\x9f\xc3\x5d\x8d\x7e\xd4\x96\x30\x74\x31\x95\x04\x55\x8d\xf5\xdf\x3f\x34\x8b\x32\xfc\xf0\x4d\x10\xc6\xc4\x46\xfc\x6a\xb1\xa3\x5c\x9a\xde\xf2\x22\xc3\x5f\x08\x8a\x70\x65\xff\xaa\xf5\xc0\x14\x8b\x13\x47\xff\x0c\x72\x6a\x09\x51\xeb\xec\x92\xc5\xfd\x41\x37\x11\x12\x57\x7b\x47\x9e\x25\xd5\xf2\x10\xc2\xf7\xae\x0e\x72\xfb\x2d\x4f\x8d\x54\xe6\x5a\x71\x2b\xfa\x2b\x9c\xd7\x59\xe5\x31\x30\x21\x3f\x7f\xa7\x85\x07\x31\x93\x9d\x6d\x54\xb2\x40\xa9\x78\xef\x24\xc7\xa0\x82\x03\xea\x30\x82\x03\xe6\x30\x82\x03\xe2\x30\x82\x01\xca\xa0\x03\x02\x01\x02\x02\x08\x68\xfe\x28\x8e\x92\xfb\xa8\x37\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x30\x11\x31\x0f\x30\x0d\x06\x03\x55\x04\x03\x13\x06\x72\x6f\x6f\x74\x63\x61\x30\x1e\x17\x0d\x31\x39\x31\x31\x32\x30\x31\x36\x32\x34\x30\x30\x5a\x17\x0d\x32\x30\x31\x30\x32\x34\x31\x34\x30\x33\x30\x30\x5a\x30\x00\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xa8\x01\x88\x20\x4b\xc7\xd7\xaa\x7b\x6b\x5c\x09\xd9\x32\x0e\xf4\x1b\xdd\x46\x4c\x47\xf1\xac\xd6\x61\xda\x89\x6f\x73\x51\xba\xa7\x1e\x43\x03\xfc\xdf\xb4\x07\xe2\x51\x71\xf5\xb6\x3f\x95\xa7\x41\x14\xe5\x4a\xb5\x8c\xfe\x01\x49\x87\xeb\xda\xd1\x6b\x67\xbb\x45\x59\x59\xd0\x47\x87\x24\x7c\x56\xae\xb6\x0e\xc9\x0d\x45\x25\xd4\x49\x3b\x10\x56\xa9\x2d\x68\xc9\x80\xff\x23\xd8\x89\x8b\x58\xe7\x4e\xbd\x59\x40\x68\x6b\x51\x83\xdb\x70\x51\x69\xea\x22\x9c\xbb\x66\x04\x46\x94\x22\xfb\x00\x74\x23\xd0\xe5\xb0\x9d\x69\x54\x85\x38\xb9\x67\xb8\x3c\x45\xeb\xf6\xce\x01\x00\x02\xe4\x42\x77\x50\x30\x1d\xaa\xa1\xa6\x1c\x24\x00\x25\xc2\xa2\x0a\x29\xb6\xb6\xd0\x88\xaa\xe2\xea\x02\xc8\x1a\x94\x73\x0a\x28\x10\x1d\x12\x6d\x35\xa3\xe2\xce\xe8\x53\x87\x2b\x53\xa4\xc0\x0d\x56\x1a\x20\xcd\x6a\x88\xc4\xa2\x33\x12\xf3\xbc\x7d\x56\x39\x9d\x89\xa9\xaf\x3e\xe0\x00\x2c\xb0\x0c\x31\x0d\xdf\x87\xc0\xf1\xa8\x05\x80\xe2\x97\xe4\x61\x62\x4a\x7a\x19\xe5\x3c\x77\x63\x3d\xf9\x0e\x1a\x35\x2f\xa5\xec\xec\x59\xeb\xf9\x3c\x12\x4a\xa7\x9c\x7a\x71\xef\x6f\x96\x03\x02\x03\x01\x00\x01\xa3\x4f\x30\x4d\x30\x09\x06\x03\x55\x1d\x13\x04\x02\x30\x00\x30\x0b\x06\x03\x55\x1d\x0f\x04\x04\x03\x02\x07\x80\x30\x13\x06\x03\x55\x1d\x25\x04\x0c\x30\x0a\x06\x08\x2b\x06\x01\x05\x05\x07\x03\x09\x30\x1e\x06\x09\x60\x86\x48\x01\x86\xf8\x42\x01\x0d\x04\x11\x16\x0f\x78\x63\x61\x20\x63\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x03\x82\x02\x01\x00\x82\x9d\x8f\xa1\x17\x9b\x3b\xee\x86\x1c\xee\x33\xeb\x80\x71\xb5\x7e\x6b\xd7\xcf\x7d\x9a\x8b\x80\x2b\x3c\x65\xde\xe1\x65\x00\x3b\x4a\x27\x7a\x5d\x63\x19\x4e\x59\xde\xfa\x38\x01\x2b\x09\x91\xc1\x70\x81\x8c\x87\x9b\x17\x68\x22\x88\xf2\x57\x8f\x15\x52\x12\x0f\x1d\x43\x2b\xff\x83\x00\x2f\xd0\xf5\xc7\x93\xd4\xf2\x14\xfd\x94\xcc\x9f\x72\x75\x99\x44\x54\xdc\x6a\x39\x75\x80\xd7\x07\x9c\xb9\x67\xe3\xac\x4b\x72\x9f\xe0\x5d\x00\x6e\x60\xc5\x26\xaf\x9f\xf7\x94\xaa\xb1\xa2\x6f\xa0\xe4\xe8\x0d\x1c\x4e\x34\xe8\xa5\x06\x5c\x31\x64\x09\xf3\x67\xea\xe8\x45\x68\xc1\x13\x21\x41\x38\x9c\x2c\xf9\x6c\xb8\x79\xf4\xae\x8c\x27\x12\xa3\x0a\x0f\x12\x56\xbc\xda\x77\x23\xf0\xe2\xa2\x81\xf9\xdd\x0d\x69\x77\xc3\x3d\x08\x9d\xfe\xac\x18\x14\x83\x49\x67\xde\x85\x3a\x09\xd4\x4f\xec\x85\x85\xbc\xab\xd1\xc8\x01\x83\x74\x34\xc0\x03\x4e\x52\x3c\xb2\xed\x3b\xc0\x66\xa7\x41\xbf\x77\x3b\xcc\x12\xee\xf9\x2f\xd8\x50\x6d\x54\xc5\xf8\x5e\x14\x61\x81\x24\xdb\xcb\xf3\xb4\x25\x84\xc6\x3b\x99\x35\x07\x2e\xd0\xb3\x05\x38\xdf\x64\x21\x71\x9e\xe2\xf2\xce\xbc\x27\x80\x4e\x53\x97\xd3\xe1\xc1\x15\x46\x24\x0c\xc5\x86\x0e\x5b\xdf\x22\xb9\xfe\x35\xd6\xf0\x53\xda\x8f\x9b\x9c\x77\x7e\x9e\x41\x6f\x8e\xbc\x7b\xd4\xf0\x6c\x4f\xac\xe2\x91\x69\x8f\x67\x48\xb0\xc8\x80\x06\x10\xb1\x33\xf9\x8b\xf0\x01\x5d\x49\x9a\x5a\x59\xec\xc6\xb4\xad\x79\x9a\x32\x87\x81\x18\xce\x77\xf6\xc6\xa5\xce\x8b\x36\xee\xc6\xcc\x6b\xd7\x76\xbb\x99\xc1\x34\x2c\xda\x6a\x5f\x1d\x47\xc6\x9e\x98\xa0\x1d\xf0\xd4\x8b\x27\x8a\xa4\x7b\x56\xd8\x7c\x12\xa2\x51\x6e\xd1\x52\xa9\xa5\x31\x77\x9f\xf5\x06\xb4\xba\xb4\x60\x24\x55\xa2\x9d\x4b\x02\xcb\xa7\x62\xa5\x3d\x74\x9e\x47\x9e\x14\x84\x0b\x24\xe0\x01\x13\x9c\xf1\x62\xbd\x78\x18\x9b\xa5\xdf\xd8\x77\x7c\xa9\xc7\x09\x94\x61\x79\x41\x60\x2f\xcc\xe1\x15\x28\x3c\x17\x1d\xb6\x95\x78\x28\x91\x9e\xd1\xbc\xd6\x71\xff\x29\x2f\x22\xed\x24\x26\x81\xb8\xb6\x14\x80\x04\x00\x95\xdf\x50\x46\xe6\xa1\xff\x56\x94\xbc\x11\x48\x5c\xbf\xca\xb7\x4f\xac\xa1\x34\x40\x80\x0d\x88\x27\x73\x76\x24\x1a\xa9\x86\x36\x56\x3c\x84\xb8\x97\x38\xa8\x0e\x14\xab\x83\xca\x6b\x64\x7f\xa7\xfb\x86\x63\xc2\x40\xfc" +#define RESP_SIZE (sizeof(RESP) - 1) static int status_func(gnutls_session_t session, void *ptr, - gnutls_datum_t * resp) + gnutls_datum_t *resp) { resp->data = gnutls_malloc(RESP_SIZE); if (resp->data == NULL) @@ -254,7 +253,7 @@ static int status_func(gnutls_session_t session, void *ptr, return 0; } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static int cert_verify_callback(gnutls_session_t session) { @@ -315,8 +314,7 @@ static void client(int fd, const char *prio) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed: %s\n", gnutls_strerror(ret)); @@ -327,8 +325,8 @@ static void client(int fd, const char *prio) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); if (received == 0) { fail("client: didn't receive status request\n"); @@ -395,8 +393,8 @@ static void server(int fd, const char *prio) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); if (sent == 0) { fail("status request was sent\n"); @@ -407,7 +405,7 @@ static void server(int fd, const char *prio) */ gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); gnutls_deinit(session); @@ -424,8 +422,7 @@ static void ch_handler(int sig) return; } -static -void start(const char *prio) +static void start(const char *prio) { pid_t child; int fd[2]; @@ -468,4 +465,4 @@ void doit(void) start("NORMAL:-VERS-ALL:+VERS-TLS1.3"); start("NORMAL"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/status-request.c b/tests/status-request.c index feb3530e17..49b0acd702 100644 --- a/tests/status-request.c +++ b/tests/status-request.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,20 +35,20 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "cert-common.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cert-common.h" +#include "utils.h" /* This program tests that the client does not send the * status request extension if GNUTLS_NO_DEFAULT_EXTENSIONS is set. @@ -66,17 +66,18 @@ static void client_log_func(int level, const char *str) static int handshake_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { fail("received status request\n"); exit(1); } -# define RESP "\x30\x82\x06\x8C\x0A\x01\x00\xA0\x82\x06\x85\x30\x82\x06\x81\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x06\x72\x30\x82\x06\x6E\x30\x82\x01\x07\xA1\x69\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\x30\x64\x30\x62\x30\x3A\x30\x09\x06\x05\x2B\x0E\x03\x02\x1A\x05\x00\x04\x14\x13\x9D\xA0\x9E\xF4\x32\xAB\x8F\xE2\x89\x56\x67\xFA\xD0\xD4\xE3\x35\x86\x71\xB9\x04\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\x02\x01\x1D\x80\x00\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\xA0\x11\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x39\x32\x38\x5A\xA1\x23\x30\x21\x30\x1F\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x02\x04\x12\x04\x10\x16\x89\x7D\x91\x3A\xB5\x25\xA4\x45\xFE\xC9\xFD\xC2\xE5\x08\xA4\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x4E\xAD\x6B\x2B\xF7\xF2\xBF\xA9\x23\x1E\x3A\x0B\x06\xDB\x55\x53\x2B\x64\x54\x11\x32\xBF\x60\xF7\x4F\xE0\x8E\x9B\xA0\xA2\x4C\x79\xC3\x2A\xE0\x43\xF7\x40\x1A\xDC\xB9\xB4\x25\xEF\x48\x01\x97\x8C\xF5\x1E\xDB\xD1\x30\x37\x73\x69\xD6\xA7\x7A\x2D\x8E\xDE\x5C\xAA\xEA\x39\xB9\x52\xAA\x25\x1E\x74\x7D\xF9\x78\x95\x8A\x92\x1F\x98\x21\xF4\x60\x7F\xD3\x28\xEE\x47\x9C\xBF\xE2\x5D\xF6\x3F\x68\x0A\xD6\xFF\x08\xC1\xDC\x95\x1E\x29\xD7\x3E\x85\xD5\x65\xA4\x4B\xC0\xAF\xC3\x78\xAB\x06\x98\x88\x19\x8A\x64\xA6\x83\x91\x87\x13\xDB\x17\xCC\x46\xBD\xAB\x4E\xC7\x16\xD1\xF8\x35\xFD\x27\xC8\xF6\x6B\xEB\x37\xB8\x08\x6F\xE2\x6F\xB4\x7E\xD5\x68\xDB\x7F\x5D\x5E\x36\x38\xF2\x77\x59\x13\xE7\x3E\x4D\x67\x5F\xDB\xA2\xF5\x5D\x7C\xBF\xBD\xB5\x37\x33\x51\x36\x63\xF8\x21\x1E\xFC\x73\x8F\x32\x69\xBB\x97\xA7\xBD\xF1\xB6\xE0\x40\x09\x68\xEA\xD5\x93\xB8\xBB\x39\x8D\xA8\x16\x1B\xBF\x04\x7A\xBC\x18\x43\x01\xE9\x3C\x19\x5C\x4D\x4B\x98\xD8\x23\x37\x39\xA4\xC4\xDD\xED\x9C\xEC\x37\xAB\x66\x44\x9B\xE7\x5B\x5D\x32\xA2\xDB\xA6\x0B\x3B\x8C\xE1\xF5\xDB\xCB\x7D\x58\xA0\x82\x04\x4B\x30\x82\x04\x47\x30\x82\x04\x43\x30\x82\x03\x2B\xA0\x03\x02\x01\x02\x02\x01\x1E\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x30\x1E\x17\x0D\x30\x39\x31\x31\x32\x34\x31\x32\x35\x31\x35\x33\x5A\x17\x0D\x31\x34\x31\x31\x32\x33\x31\x32\x35\x31\x35\x33\x5A\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x82\x01\x22\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00\x03\x82\x01\x0F\x00\x30\x82\x01\x0A\x02\x82\x01\x01\x00\xBC\x05\x3E\x4B\xBE\xC6\xB1\x33\x48\x0E\xC3\xD4\x0C\xEF\x83\x0B\xBD\xBC\x57\x5F\x14\xEF\xF5\x6D\x0B\xFF\xFA\x01\x9C\xFA\x21\x6D\x5C\xAE\x79\x29\x74\xFE\xBD\xAB\x70\x87\x98\x6B\x48\x35\x79\xE3\xE0\xC1\x14\x41\x1F\x0A\xF7\xE7\xA3\xA6\xDA\x6B\xFF\xCD\x74\xE9\x95\x00\x38\xAA\xD6\x3A\x60\xC6\x64\xA1\xE6\x02\x39\x58\x4E\xFD\xF2\x78\x08\x63\xB6\xD7\x7A\x96\x79\x62\x18\x39\xEE\x27\x8D\x3B\xA2\x3D\x48\x88\xDB\x43\xD6\x6A\x77\x20\x6A\x27\x39\x50\xE0\x02\x50\x19\xF2\x7A\xCF\x78\x23\x99\x01\xD4\xE5\xB1\xD1\x31\xE6\x6B\x84\xAF\xD0\x77\x41\x46\x85\xB0\x3B\xE6\x6A\x00\x0F\x3B\x7E\x95\x7F\x59\xA8\x22\xE8\x49\x49\x05\xC8\xCB\x6C\xEE\x47\xA7\x2D\xC9\x74\x5B\xEB\x8C\xD5\x99\xC2\xE2\x70\xDB\xEA\x87\x43\x84\x0E\x4F\x83\x1C\xA6\xEB\x1F\x22\x38\x17\x69\x9B\x72\x12\x95\x48\x71\xB2\x7B\x92\x73\x52\xAB\xE3\x1A\xA5\xD3\xF4\x44\x14\xBA\xC3\x35\xDA\x91\x6C\x7D\xB4\xC2\x00\x07\xD8\x0A\x51\xF1\x0D\x4C\xD9\x7A\xD1\x99\xE6\xA8\x8D\x0A\x80\xA8\x91\xDD\x8A\xA2\x6B\xF6\xDB\xB0\x3E\xC9\x71\xA9\xE0\x39\xC3\xA3\x58\x0D\x87\xD0\xB2\xA7\x9C\xB7\x69\x02\x03\x01\x00\x01\xA3\x82\x01\x1A\x30\x82\x01\x16\x30\x09\x06\x03\x55\x1D\x13\x04\x02\x30\x00\x30\x0B\x06\x03\x55\x1D\x0F\x04\x04\x03\x02\x03\xA8\x30\x1D\x06\x03\x55\x1D\x0E\x04\x16\x04\x14\x34\x91\x6E\x91\x32\xBF\x35\x25\x43\xCC\x28\x74\xEF\x82\xC2\x57\x92\x79\x13\x73\x30\x6D\x06\x03\x55\x1D\x23\x04\x66\x30\x64\x80\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\xA1\x49\xA4\x47\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x82\x01\x00\x30\x1E\x06\x03\x55\x1D\x11\x04\x17\x30\x15\x82\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x13\x06\x03\x55\x1D\x25\x04\x0C\x30\x0A\x06\x08\x2B\x06\x01\x05\x05\x07\x03\x09\x30\x39\x06\x03\x55\x1D\x1F\x04\x32\x30\x30\x30\x2E\xA0\x2C\xA0\x2A\x86\x28\x68\x74\x74\x70\x3A\x2F\x2F\x63\x72\x6C\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x2F\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x63\x72\x6C\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x03\x82\x01\x01\x00\x6D\x78\xD7\x66\x90\xA6\xEB\xDD\xB5\x09\x48\xA4\xDA\x27\xFA\xAC\xB1\xBC\x8F\x8C\xBE\xCC\x8C\x09\xA2\x40\x0D\x6C\x4A\xAE\x72\x22\x1E\xC8\xAF\x6D\xF1\x12\xAF\xD7\x40\x51\x79\xD4\xDD\xB2\x0C\xDB\x97\x84\xB6\x24\xD5\xF5\xA8\xBB\xC0\x4B\xF9\x7F\x71\xF7\xB0\x65\x42\x4A\x7D\xFE\x76\x7E\x05\xD2\x46\xB8\x7D\xB3\x39\x4C\x5C\xB1\xFA\xB9\xEE\x3B\x70\x33\x39\x57\x1A\xB9\x95\x51\x33\x00\x25\x1B\x4C\xAA\xB4\xA7\x55\xAF\x63\x6D\x6F\x88\x17\x6A\x7F\xB0\x97\xDE\x49\x14\x6A\x27\x6A\xB0\x42\x80\xD6\xA6\x9B\xEF\x04\x5E\x11\x7D\xD5\x8E\x54\x20\xA2\x76\xD4\x66\x58\xAC\x9C\x12\xD3\xF5\xCA\x54\x98\xCA\x21\xEC\xC1\x55\xA1\x2F\x68\x0B\x5D\x04\x50\xD2\x5E\x70\x25\xD8\x13\xD9\x44\x51\x0E\x8A\x42\x08\x18\x84\xE6\x61\xCE\x5A\x7D\x7B\x81\x35\x90\xC3\xD4\x9D\x19\xB6\x37\xEE\x8F\x63\x5C\xDA\xD8\xF0\x64\x60\x39\xEB\x9B\x1C\x54\x66\x75\x76\xB5\x0A\x58\xB9\x3F\x91\xE1\x21\x9C\xA0\x50\x15\x97\xB6\x7E\x41\xBC\xD0\xC4\x21\x4C\xF5\xD7\xF0\x13\xF8\x77\xE9\x74\xC4\x8A\x0E\x20\x17\x32\xAE\x38\xC2\xA5\xA8\x62\x85\x17\xB1\xA2\xD3\x22\x9F\x95\xB7\xA3\x4C" -# define RESP_SIZE (sizeof(RESP)-1) +#define RESP \ + "\x30\x82\x06\x8C\x0A\x01\x00\xA0\x82\x06\x85\x30\x82\x06\x81\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x06\x72\x30\x82\x06\x6E\x30\x82\x01\x07\xA1\x69\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\x30\x64\x30\x62\x30\x3A\x30\x09\x06\x05\x2B\x0E\x03\x02\x1A\x05\x00\x04\x14\x13\x9D\xA0\x9E\xF4\x32\xAB\x8F\xE2\x89\x56\x67\xFA\xD0\xD4\xE3\x35\x86\x71\xB9\x04\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\x02\x01\x1D\x80\x00\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\xA0\x11\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x39\x32\x38\x5A\xA1\x23\x30\x21\x30\x1F\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x02\x04\x12\x04\x10\x16\x89\x7D\x91\x3A\xB5\x25\xA4\x45\xFE\xC9\xFD\xC2\xE5\x08\xA4\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x4E\xAD\x6B\x2B\xF7\xF2\xBF\xA9\x23\x1E\x3A\x0B\x06\xDB\x55\x53\x2B\x64\x54\x11\x32\xBF\x60\xF7\x4F\xE0\x8E\x9B\xA0\xA2\x4C\x79\xC3\x2A\xE0\x43\xF7\x40\x1A\xDC\xB9\xB4\x25\xEF\x48\x01\x97\x8C\xF5\x1E\xDB\xD1\x30\x37\x73\x69\xD6\xA7\x7A\x2D\x8E\xDE\x5C\xAA\xEA\x39\xB9\x52\xAA\x25\x1E\x74\x7D\xF9\x78\x95\x8A\x92\x1F\x98\x21\xF4\x60\x7F\xD3\x28\xEE\x47\x9C\xBF\xE2\x5D\xF6\x3F\x68\x0A\xD6\xFF\x08\xC1\xDC\x95\x1E\x29\xD7\x3E\x85\xD5\x65\xA4\x4B\xC0\xAF\xC3\x78\xAB\x06\x98\x88\x19\x8A\x64\xA6\x83\x91\x87\x13\xDB\x17\xCC\x46\xBD\xAB\x4E\xC7\x16\xD1\xF8\x35\xFD\x27\xC8\xF6\x6B\xEB\x37\xB8\x08\x6F\xE2\x6F\xB4\x7E\xD5\x68\xDB\x7F\x5D\x5E\x36\x38\xF2\x77\x59\x13\xE7\x3E\x4D\x67\x5F\xDB\xA2\xF5\x5D\x7C\xBF\xBD\xB5\x37\x33\x51\x36\x63\xF8\x21\x1E\xFC\x73\x8F\x32\x69\xBB\x97\xA7\xBD\xF1\xB6\xE0\x40\x09\x68\xEA\xD5\x93\xB8\xBB\x39\x8D\xA8\x16\x1B\xBF\x04\x7A\xBC\x18\x43\x01\xE9\x3C\x19\x5C\x4D\x4B\x98\xD8\x23\x37\x39\xA4\xC4\xDD\xED\x9C\xEC\x37\xAB\x66\x44\x9B\xE7\x5B\x5D\x32\xA2\xDB\xA6\x0B\x3B\x8C\xE1\xF5\xDB\xCB\x7D\x58\xA0\x82\x04\x4B\x30\x82\x04\x47\x30\x82\x04\x43\x30\x82\x03\x2B\xA0\x03\x02\x01\x02\x02\x01\x1E\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x30\x1E\x17\x0D\x30\x39\x31\x31\x32\x34\x31\x32\x35\x31\x35\x33\x5A\x17\x0D\x31\x34\x31\x31\x32\x33\x31\x32\x35\x31\x35\x33\x5A\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x82\x01\x22\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00\x03\x82\x01\x0F\x00\x30\x82\x01\x0A\x02\x82\x01\x01\x00\xBC\x05\x3E\x4B\xBE\xC6\xB1\x33\x48\x0E\xC3\xD4\x0C\xEF\x83\x0B\xBD\xBC\x57\x5F\x14\xEF\xF5\x6D\x0B\xFF\xFA\x01\x9C\xFA\x21\x6D\x5C\xAE\x79\x29\x74\xFE\xBD\xAB\x70\x87\x98\x6B\x48\x35\x79\xE3\xE0\xC1\x14\x41\x1F\x0A\xF7\xE7\xA3\xA6\xDA\x6B\xFF\xCD\x74\xE9\x95\x00\x38\xAA\xD6\x3A\x60\xC6\x64\xA1\xE6\x02\x39\x58\x4E\xFD\xF2\x78\x08\x63\xB6\xD7\x7A\x96\x79\x62\x18\x39\xEE\x27\x8D\x3B\xA2\x3D\x48\x88\xDB\x43\xD6\x6A\x77\x20\x6A\x27\x39\x50\xE0\x02\x50\x19\xF2\x7A\xCF\x78\x23\x99\x01\xD4\xE5\xB1\xD1\x31\xE6\x6B\x84\xAF\xD0\x77\x41\x46\x85\xB0\x3B\xE6\x6A\x00\x0F\x3B\x7E\x95\x7F\x59\xA8\x22\xE8\x49\x49\x05\xC8\xCB\x6C\xEE\x47\xA7\x2D\xC9\x74\x5B\xEB\x8C\xD5\x99\xC2\xE2\x70\xDB\xEA\x87\x43\x84\x0E\x4F\x83\x1C\xA6\xEB\x1F\x22\x38\x17\x69\x9B\x72\x12\x95\x48\x71\xB2\x7B\x92\x73\x52\xAB\xE3\x1A\xA5\xD3\xF4\x44\x14\xBA\xC3\x35\xDA\x91\x6C\x7D\xB4\xC2\x00\x07\xD8\x0A\x51\xF1\x0D\x4C\xD9\x7A\xD1\x99\xE6\xA8\x8D\x0A\x80\xA8\x91\xDD\x8A\xA2\x6B\xF6\xDB\xB0\x3E\xC9\x71\xA9\xE0\x39\xC3\xA3\x58\x0D\x87\xD0\xB2\xA7\x9C\xB7\x69\x02\x03\x01\x00\x01\xA3\x82\x01\x1A\x30\x82\x01\x16\x30\x09\x06\x03\x55\x1D\x13\x04\x02\x30\x00\x30\x0B\x06\x03\x55\x1D\x0F\x04\x04\x03\x02\x03\xA8\x30\x1D\x06\x03\x55\x1D\x0E\x04\x16\x04\x14\x34\x91\x6E\x91\x32\xBF\x35\x25\x43\xCC\x28\x74\xEF\x82\xC2\x57\x92\x79\x13\x73\x30\x6D\x06\x03\x55\x1D\x23\x04\x66\x30\x64\x80\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\xA1\x49\xA4\x47\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x82\x01\x00\x30\x1E\x06\x03\x55\x1D\x11\x04\x17\x30\x15\x82\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x13\x06\x03\x55\x1D\x25\x04\x0C\x30\x0A\x06\x08\x2B\x06\x01\x05\x05\x07\x03\x09\x30\x39\x06\x03\x55\x1D\x1F\x04\x32\x30\x30\x30\x2E\xA0\x2C\xA0\x2A\x86\x28\x68\x74\x74\x70\x3A\x2F\x2F\x63\x72\x6C\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x2F\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x63\x72\x6C\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x03\x82\x01\x01\x00\x6D\x78\xD7\x66\x90\xA6\xEB\xDD\xB5\x09\x48\xA4\xDA\x27\xFA\xAC\xB1\xBC\x8F\x8C\xBE\xCC\x8C\x09\xA2\x40\x0D\x6C\x4A\xAE\x72\x22\x1E\xC8\xAF\x6D\xF1\x12\xAF\xD7\x40\x51\x79\xD4\xDD\xB2\x0C\xDB\x97\x84\xB6\x24\xD5\xF5\xA8\xBB\xC0\x4B\xF9\x7F\x71\xF7\xB0\x65\x42\x4A\x7D\xFE\x76\x7E\x05\xD2\x46\xB8\x7D\xB3\x39\x4C\x5C\xB1\xFA\xB9\xEE\x3B\x70\x33\x39\x57\x1A\xB9\x95\x51\x33\x00\x25\x1B\x4C\xAA\xB4\xA7\x55\xAF\x63\x6D\x6F\x88\x17\x6A\x7F\xB0\x97\xDE\x49\x14\x6A\x27\x6A\xB0\x42\x80\xD6\xA6\x9B\xEF\x04\x5E\x11\x7D\xD5\x8E\x54\x20\xA2\x76\xD4\x66\x58\xAC\x9C\x12\xD3\xF5\xCA\x54\x98\xCA\x21\xEC\xC1\x55\xA1\x2F\x68\x0B\x5D\x04\x50\xD2\x5E\x70\x25\xD8\x13\xD9\x44\x51\x0E\x8A\x42\x08\x18\x84\xE6\x61\xCE\x5A\x7D\x7B\x81\x35\x90\xC3\xD4\x9D\x19\xB6\x37\xEE\x8F\x63\x5C\xDA\xD8\xF0\x64\x60\x39\xEB\x9B\x1C\x54\x66\x75\x76\xB5\x0A\x58\xB9\x3F\x91\xE1\x21\x9C\xA0\x50\x15\x97\xB6\x7E\x41\xBC\xD0\xC4\x21\x4C\xF5\xD7\xF0\x13\xF8\x77\xE9\x74\xC4\x8A\x0E\x20\x17\x32\xAE\x38\xC2\xA5\xA8\x62\x85\x17\xB1\xA2\xD3\x22\x9F\x95\xB7\xA3\x4C" +#define RESP_SIZE (sizeof(RESP) - 1) static int status_func(gnutls_session_t session, void *ptr, - gnutls_datum_t * resp) + gnutls_datum_t *resp) { resp->data = gnutls_malloc(RESP_SIZE); if (resp->data == NULL) @@ -87,10 +88,10 @@ static int status_func(gnutls_session_t session, void *ptr, return 0; } -# define MAX_BUF 1024 +#define MAX_BUF 1024 /* Keep backward compatibility */ -# define GNUTLS_NO_EXTENSIONS GNUTLS_NO_DEFAULT_EXTENSIONS +#define GNUTLS_NO_EXTENSIONS GNUTLS_NO_DEFAULT_EXTENSIONS static void client(int fd, const char *prio) { @@ -110,8 +111,8 @@ static void client(int fd, const char *prio) /* Initialize TLS session */ - assert(gnutls_init - (&session, GNUTLS_CLIENT | GNUTLS_NO_DEFAULT_EXTENSIONS) >= 0); + assert(gnutls_init(&session, + GNUTLS_CLIENT | GNUTLS_NO_DEFAULT_EXTENSIONS) >= 0); assert(gnutls_priority_set_direct(session, prio, NULL) >= 0); @@ -125,8 +126,7 @@ static void client(int fd, const char *prio) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret == GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM) { /* success */ @@ -145,8 +145,8 @@ static void client(int fd, const char *prio) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { do { @@ -164,7 +164,7 @@ static void client(int fd, const char *prio) gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); @@ -228,14 +228,14 @@ static void server(int fd, const char *prio) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* do not wait for the peer to close the connection. */ gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); gnutls_deinit(session); @@ -252,8 +252,7 @@ static void ch_handler(int sig) return; } -static -void start(const char *prio) +static void start(const char *prio) { pid_t child; int fd[2]; @@ -302,4 +301,4 @@ void doit(void) start("NORMAL:-VERS-ALL:+VERS-TLS1.3"); start("NORMAL"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/str-idna.c b/tests/str-idna.c index bd7f9e21ed..a6d1a90360 100644 --- a/tests/str-idna.c +++ b/tests/str-idna.c @@ -33,38 +33,44 @@ #define GLOBAL_FLAGS 0 -#define MATCH_FUNC(fname, str, normalized) \ -static void fname(void **glob_state) \ -{ \ - gnutls_datum_t out; \ - int ret = gnutls_idna_map(str, strlen(str), &out, GLOBAL_FLAGS); \ - if (normalized == NULL) { /* expect failure */ \ - assert_int_not_equal(ret, 0); \ - return; \ - } else { \ - assert_int_equal(ret, 0); \ - } \ - assert_int_equal(strcmp((char*)out.data, (char*)normalized), 0); \ - gnutls_free(out.data); \ -} +#define MATCH_FUNC(fname, str, normalized) \ + static void fname(void **glob_state) \ + { \ + gnutls_datum_t out; \ + int ret = \ + gnutls_idna_map(str, strlen(str), &out, GLOBAL_FLAGS); \ + if (normalized == NULL) { /* expect failure */ \ + assert_int_not_equal(ret, 0); \ + return; \ + } else { \ + assert_int_equal(ret, 0); \ + } \ + assert_int_equal(strcmp((char *)out.data, (char *)normalized), \ + 0); \ + gnutls_free(out.data); \ + } -#define MATCH_FUNC_TWO_WAY(fname, str, normalized) \ -static void fname##_reverse(void **glob_state) \ -{ \ - gnutls_datum_t out; \ - int ret; \ - if (normalized == NULL) \ - return; \ - ret = gnutls_idna_reverse_map(normalized, strlen(normalized), &out, 0); \ - assert_int_equal(ret, 0); \ - \ - assert_int_equal(strcmp((char*)out.data, (char*)str), 0); \ - gnutls_free(out.data); \ -} \ -MATCH_FUNC(fname, str, normalized) +#define MATCH_FUNC_TWO_WAY(fname, str, normalized) \ + static void fname##_reverse(void **glob_state) \ + { \ + gnutls_datum_t out; \ + int ret; \ + if (normalized == NULL) \ + return; \ + ret = gnutls_idna_reverse_map(normalized, strlen(normalized), \ + &out, 0); \ + assert_int_equal(ret, 0); \ + \ + assert_int_equal(strcmp((char *)out.data, (char *)str), 0); \ + gnutls_free(out.data); \ + } \ + MATCH_FUNC(fname, str, normalized) -#define EMPTY_FUNC(name) static void name(void **glob_state) { \ - return; } +#define EMPTY_FUNC(name) \ + static void name(void **glob_state) \ + { \ + return; \ + } /* some vectors taken from: * https://www.unicode.org/Public/idna/9.0.0/IdnaTest.txt diff --git a/tests/str-unicode.c b/tests/str-unicode.c index d0601326bb..4f4c985ab3 100644 --- a/tests/str-unicode.c +++ b/tests/str-unicode.c @@ -30,35 +30,42 @@ #include #include -#define MATCH_FUNC(fname, password, normalized) \ -static void fname(void **glob_state) \ -{ \ - const char *pwd_normalized = normalized; \ - gnutls_datum_t out; \ - int ret = gnutls_utf8_password_normalize((uint8_t*)password, strlen(password), &out, 0); \ - if (pwd_normalized == NULL) { /* expect failure */ \ - assert_int_not_equal(ret, 0); \ - } else { \ - assert_int_equal(ret, 0); \ - assert_int_equal(strcmp((char*)out.data, (char*)pwd_normalized), 0); \ - gnutls_free(out.data); \ - } \ -} +#define MATCH_FUNC(fname, password, normalized) \ + static void fname(void **glob_state) \ + { \ + const char *pwd_normalized = normalized; \ + gnutls_datum_t out; \ + int ret = gnutls_utf8_password_normalize( \ + (uint8_t *)password, strlen(password), &out, 0); \ + if (pwd_normalized == NULL) { /* expect failure */ \ + assert_int_not_equal(ret, 0); \ + } else { \ + assert_int_equal(ret, 0); \ + assert_int_equal(strcmp((char *)out.data, \ + (char *)pwd_normalized), \ + 0); \ + gnutls_free(out.data); \ + } \ + } -#define INVALID_MATCH_FUNC(fname, password, normalized) \ -static void inv_##fname(void **glob_state) \ -{ \ - const char *pwd_normalized = normalized; \ - gnutls_datum_t out; \ - int ret = gnutls_utf8_password_normalize((uint8_t*)password, strlen(password), &out, GNUTLS_UTF8_IGNORE_ERRS); \ - if (pwd_normalized == NULL) { \ - assert_int_not_equal(ret, 0); \ - } else { \ - assert_int_equal(ret, 0); \ - assert_int_equal(strcmp((char*)out.data, (char*)pwd_normalized), 0); \ - gnutls_free(out.data); \ - } \ -} +#define INVALID_MATCH_FUNC(fname, password, normalized) \ + static void inv_##fname(void **glob_state) \ + { \ + const char *pwd_normalized = normalized; \ + gnutls_datum_t out; \ + int ret = gnutls_utf8_password_normalize( \ + (uint8_t *)password, strlen(password), &out, \ + GNUTLS_UTF8_IGNORE_ERRS); \ + if (pwd_normalized == NULL) { \ + assert_int_not_equal(ret, 0); \ + } else { \ + assert_int_equal(ret, 0); \ + assert_int_equal(strcmp((char *)out.data, \ + (char *)pwd_normalized), \ + 0); \ + gnutls_free(out.data); \ + } \ + } MATCH_FUNC(test_ascii, "correct horse battery staple", "correct horse battery staple"); @@ -79,10 +86,14 @@ MATCH_FUNC(test_compatibility, "char \xcf\x90\xe2\x84\xb5", MATCH_FUNC(test_invalid_ignorable1, "my ignorable char is \xe2\x80\x8f", NULL); MATCH_FUNC(test_invalid_ignorable2, "my ignorable char is \xe1\x85\x9f", NULL); MATCH_FUNC(test_invalid_ignorable3, "my ignorable char is \xef\xbf\xbf", NULL); -MATCH_FUNC(test_invalid_exception1, "my exception is \xc2\xb7", NULL); /* CONTEXTO - disallowed */ -MATCH_FUNC(test_invalid_exception2, "my exception is \xcf\x82", "my exception is ς"); /* PVALID */ -MATCH_FUNC(test_invalid_exception3, "my exception is \xd9\xa2", NULL); /* CONTEXT0/PVALID */ -MATCH_FUNC(test_invalid_exception4, "my exception is \xe3\x80\xae", NULL); /* CONTEXT0/DISALLOWED */ +MATCH_FUNC(test_invalid_exception1, "my exception is \xc2\xb7", + NULL); /* CONTEXTO - disallowed */ +MATCH_FUNC(test_invalid_exception2, "my exception is \xcf\x82", + "my exception is ς"); /* PVALID */ +MATCH_FUNC(test_invalid_exception3, "my exception is \xd9\xa2", + NULL); /* CONTEXT0/PVALID */ +MATCH_FUNC(test_invalid_exception4, "my exception is \xe3\x80\xae", + NULL); /* CONTEXT0/DISALLOWED */ MATCH_FUNC(test_invalid_join_control, "my exception is \xe2\x80\x8d", NULL); INVALID_MATCH_FUNC(test_ascii, "correct horse battery staple", @@ -95,7 +106,8 @@ INVALID_MATCH_FUNC(test_invalid_exception1, "my exception is \xc2\xb7", "my exception is ·"); INVALID_MATCH_FUNC(test_invalid_exception3, "my exception is \xd9\xa2", "my exception is \xd9\xa2"); -INVALID_MATCH_FUNC(test_invalid_exception4, "my exception is \xe3\x80\xae", "my exception is \xe3\x80\xae"); /* CONTEXT0/DISALLOWED */ +INVALID_MATCH_FUNC(test_invalid_exception4, "my exception is \xe3\x80\xae", + "my exception is \xe3\x80\xae"); /* CONTEXT0/DISALLOWED */ INVALID_MATCH_FUNC(test_invalid_join_control, "my exception is \xe2\x80\x8d", "my exception is \xe2\x80\x8d"); diff --git a/tests/strict-der.c b/tests/strict-der.c index e1cdd26b95..7dabb790e6 100644 --- a/tests/strict-der.c +++ b/tests/strict-der.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,10 +30,10 @@ #include #include #if !defined(_WIN32) -# include -# include -# include -# include +#include +#include +#include +#include #endif #include #include @@ -54,32 +54,33 @@ static void tls_log_func(int level, const char *str) * gnutls versions that would still be parsed and the wrong DER was * "corrected" but now we should reject these */ static unsigned char cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIFXzCCBEegAwIBAgIQHYWDpKNVUzEFx4Pq8yjxbTANBgkqhkiG9w0BAQUFADCBtTELMAkGA1UE\n" - "BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO\n" - "ZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29t\n" - "L3JwYSAoYykxMDEvMC0GA1UEAxMmVmVyaVNpZ24gQ2xhc3MgMyBTZWN1cmUgU2VydmVyIENBIC0g\n" - "RzMwHxcOMTQwMjI3MDAwMDAwWgAXDTE1MDIyODIzNTk1OVowZzELMAkGA1UEBhMCVVMxEzARBgNV\n" - "BAgTCldhc2hpbmd0b24xEDAOBgNVBAcUB1NlYXR0bGUxGDAWBgNVBAoUD0FtYXpvbi5jb20gSW5j\n" - "LjEXMBUGA1UEAxQOd3d3LmFtYXpvbi5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB\n" - "AQCXX4njj63+AK39SJXnf4ove+NO2Z46WgeccZuPUOD89/ucZg9C2K3uwo59QO1t2ZR5IucxVWaV\n" - "vSW/9z30hA2ObJco5Cw9o3ZdoFXn0rYUmbWMW+XmL+/bSBDdFPQGfP1WhsFKJJfJ9TIrXBAsTSzH\n" - "uC6qFZktvZ1yE0081+bdyOHVHjAQzSPsYFaSUqccMwPvy/sMaI+Um+GCf2PolJJwpI1+j6WmTEVg\n" - "RBNHarxtNqpcV3rAFdJ5imL427agMqFur4Iz/OYeoCRBEiKk02ctRzoBaTvF09OQqRg3I4T9bE71\n" - "xe1cdWo/sQ4nRiy1tfPBt+aBSiIRMh0Fdle780QFAgMBAAGjggG1MIIBsTBQBgNVHREESTBHghF1\n" - "ZWRhdGEuYW1hem9uLmNvbYIKYW1hem9uLmNvbYIIYW16bi5jb22CDHd3dy5hbXpuLmNvbYIOd3d3\n" - "LmFtYXpvbi5jb20wCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUH\n" - "AwEGCCsGAQUFBwMCMEMGA1UdIAQ8MDowOAYKYIZIAYb4RQEHNjAqMCgGCCsGAQUFBwIBFhxodHRw\n" - "czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMB8GA1UdIwQYMBaAFA1EXBZTRMGCfh0gqyX0AWPYvnml\n" - "MEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly9TVlJTZWN1cmUtRzMtY3JsLnZlcmlzaWduLmNvbS9T\n" - "VlJTZWN1cmVHMy5jcmwwdgYIKwYBBQUHAQEEajBoMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC52\n" - "ZXJpc2lnbi5jb20wQAYIKwYBBQUHMAKGNGh0dHA6Ly9TVlJTZWN1cmUtRzMtYWlhLnZlcmlzaWdu\n" - "LmNvbS9TVlJTZWN1cmVHMy5jZXIwDQYJKoZIhvcNAQEFBQADggEBADnmX45CNMkf57rQjB6ef7gf\n" - "3r5AfKiGMYdSim4TwU5qcpJicYiyqwQXAQbvZFuZTGzT0jXJROLAsjdHcQiR8D5u7mzVMbJg0kz0\n" - "yTsdDM5dFmVWme3l958NZI/I0qCtH+Z/O0cyivOTMARbBJ+92dqQ78U3He9gRNE9VCS3FNgObhwC\n" - "cr5tkKTlgSESpSRyBwnLucY4+ci5xjvYndHIzoxII/X9TKOIc2sC+b0H5KP8RcQLAO9G5Nra7+eJ\n" - "IC74ZgFvgejqTd2f8QeJljTsNxvG4P7vqQi73fCkTuVfCk5YDtTU2joGAujgBd1EjTIbjWYeoebV\n" - "gN5gPKxa/GbGsoQ=\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIFXzCCBEegAwIBAgIQHYWDpKNVUzEFx4Pq8yjxbTANBgkqhkiG9w0BAQUFADCBtTELMAkGA1UE\n" + "BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO\n" + "ZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29t\n" + "L3JwYSAoYykxMDEvMC0GA1UEAxMmVmVyaVNpZ24gQ2xhc3MgMyBTZWN1cmUgU2VydmVyIENBIC0g\n" + "RzMwHxcOMTQwMjI3MDAwMDAwWgAXDTE1MDIyODIzNTk1OVowZzELMAkGA1UEBhMCVVMxEzARBgNV\n" + "BAgTCldhc2hpbmd0b24xEDAOBgNVBAcUB1NlYXR0bGUxGDAWBgNVBAoUD0FtYXpvbi5jb20gSW5j\n" + "LjEXMBUGA1UEAxQOd3d3LmFtYXpvbi5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB\n" + "AQCXX4njj63+AK39SJXnf4ove+NO2Z46WgeccZuPUOD89/ucZg9C2K3uwo59QO1t2ZR5IucxVWaV\n" + "vSW/9z30hA2ObJco5Cw9o3ZdoFXn0rYUmbWMW+XmL+/bSBDdFPQGfP1WhsFKJJfJ9TIrXBAsTSzH\n" + "uC6qFZktvZ1yE0081+bdyOHVHjAQzSPsYFaSUqccMwPvy/sMaI+Um+GCf2PolJJwpI1+j6WmTEVg\n" + "RBNHarxtNqpcV3rAFdJ5imL427agMqFur4Iz/OYeoCRBEiKk02ctRzoBaTvF09OQqRg3I4T9bE71\n" + "xe1cdWo/sQ4nRiy1tfPBt+aBSiIRMh0Fdle780QFAgMBAAGjggG1MIIBsTBQBgNVHREESTBHghF1\n" + "ZWRhdGEuYW1hem9uLmNvbYIKYW1hem9uLmNvbYIIYW16bi5jb22CDHd3dy5hbXpuLmNvbYIOd3d3\n" + "LmFtYXpvbi5jb20wCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUH\n" + "AwEGCCsGAQUFBwMCMEMGA1UdIAQ8MDowOAYKYIZIAYb4RQEHNjAqMCgGCCsGAQUFBwIBFhxodHRw\n" + "czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMB8GA1UdIwQYMBaAFA1EXBZTRMGCfh0gqyX0AWPYvnml\n" + "MEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly9TVlJTZWN1cmUtRzMtY3JsLnZlcmlzaWduLmNvbS9T\n" + "VlJTZWN1cmVHMy5jcmwwdgYIKwYBBQUHAQEEajBoMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC52\n" + "ZXJpc2lnbi5jb20wQAYIKwYBBQUHMAKGNGh0dHA6Ly9TVlJTZWN1cmUtRzMtYWlhLnZlcmlzaWdu\n" + "LmNvbS9TVlJTZWN1cmVHMy5jZXIwDQYJKoZIhvcNAQEFBQADggEBADnmX45CNMkf57rQjB6ef7gf\n" + "3r5AfKiGMYdSim4TwU5qcpJicYiyqwQXAQbvZFuZTGzT0jXJROLAsjdHcQiR8D5u7mzVMbJg0kz0\n" + "yTsdDM5dFmVWme3l958NZI/I0qCtH+Z/O0cyivOTMARbBJ+92dqQ78U3He9gRNE9VCS3FNgObhwC\n" + "cr5tkKTlgSESpSRyBwnLucY4+ci5xjvYndHIzoxII/X9TKOIc2sC+b0H5KP8RcQLAO9G5Nra7+eJ\n" + "IC74ZgFvgejqTd2f8QeJljTsNxvG4P7vqQi73fCkTuVfCk5YDtTU2joGAujgBd1EjTIbjWYeoebV\n" + "gN5gPKxa/GbGsoQ=\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t cert = { cert_pem, sizeof(cert_pem) - 1 }; diff --git a/tests/suite/eagain-cli.c b/tests/suite/eagain-cli.c index 2d05dbccb3..b3de2b9702 100644 --- a/tests/suite/eagain-cli.c +++ b/tests/suite/eagain-cli.c @@ -41,8 +41,8 @@ EV_P; ev_io remote_w; gnutls_session_t session; -static const char -*SSL_GNUTLS_PRINT_HANDSHAKE_STATUS(gnutls_handshake_description_t status) +static const char * +SSL_GNUTLS_PRINT_HANDSHAKE_STATUS(gnutls_handshake_description_t status) { return gnutls_handshake_description_get_name(status); } @@ -53,7 +53,7 @@ static const char static int _tcp_connect_eagain(void) { const char *PORT = getenv("PORT"); - const char *SERVER = "127.0.0.1"; //verisign.com + const char *SERVER = "127.0.0.1"; //verisign.com int err, sd; int flag = 1, curstate = 0; struct sockaddr_in sa; @@ -76,8 +76,8 @@ static int _tcp_connect_eagain(void) } /* lower the send buffers to force EAGAIN */ - assert(setsockopt - (sd, IPPROTO_TCP, TCP_NODELAY, (char *)&flag, sizeof(int)) >= 0); + assert(setsockopt(sd, IPPROTO_TCP, TCP_NODELAY, (char *)&flag, + sizeof(int)) >= 0); assert(fcntl(sd, F_SETFL, O_NONBLOCK) >= 0); return sd; @@ -85,14 +85,14 @@ static int _tcp_connect_eagain(void) static void tcp_close(int sd) { - shutdown(sd, SHUT_RDWR); /* no more receptions */ + shutdown(sd, SHUT_RDWR); /* no more receptions */ close(sd); } /* We provide this helper to ensure that we test EAGAIN while writing * even on a reliable connection */ -static ssize_t -_client_push(gnutls_transport_ptr_t tr, const void *data, size_t len) +static ssize_t _client_push(gnutls_transport_ptr_t tr, const void *data, + size_t len) { struct timeval tv; @@ -125,7 +125,7 @@ static int _client_pull_timeout(gnutls_transport_ptr_t ptr, unsigned int ms) return gnutls_system_recv_timeout(ptr, ms); } -static void _process_data(EV_P_ ev_io * w, int revents) +static void _process_data(EV_P_ ev_io *w, int revents) { static int ret = -1, lastret = 0; static unsigned int count = 0; @@ -163,24 +163,23 @@ static void _process_data(EV_P_ ev_io * w, int revents) fprintf(stderr, "gnutls returned with: %s - %s\n", gnutls_strerror_name(ret), gnutls_strerror(ret)); - if ((ret == GNUTLS_E_WARNING_ALERT_RECEIVED) - || (ret == GNUTLS_E_FATAL_ALERT_RECEIVED)) + if ((ret == GNUTLS_E_WARNING_ALERT_RECEIVED) || + (ret == GNUTLS_E_FATAL_ALERT_RECEIVED)) fprintf(stderr, "Also received alert: %s\n", - gnutls_alert_get_name - (gnutls_alert_get(session))); + gnutls_alert_get_name( + gnutls_alert_get(session))); fprintf(stderr, "last out: %s\n", - SSL_GNUTLS_PRINT_HANDSHAKE_STATUS - (gnutls_handshake_get_last_out(session))); + SSL_GNUTLS_PRINT_HANDSHAKE_STATUS( + gnutls_handshake_get_last_out(session))); fprintf(stderr, "last in: %s\n", - SSL_GNUTLS_PRINT_HANDSHAKE_STATUS - (gnutls_handshake_get_last_in(session))); + SSL_GNUTLS_PRINT_HANDSHAKE_STATUS( + gnutls_handshake_get_last_in(session))); } if (gnutls_error_is_fatal(ret)) { fprintf(stderr, "yarrr this be an error!"); exit(1); } - } if (ret == GNUTLS_E_SUCCESS) { @@ -212,16 +211,16 @@ static void try(const char *name, const char *prio) assert(gnutls_init(&session, GNUTLS_CLIENT) >= 0); gnutls_transport_set_push_function(session, _client_push); gnutls_transport_set_pull_function(session, _client_pull); - gnutls_transport_set_pull_timeout_function(session, - _client_pull_timeout); + gnutls_transport_set_pull_timeout_function( + session, _client_pull_timeout); gnutls_handshake_set_timeout(session, GNUTLS_DEFAULT_HANDSHAKE_TIMEOUT); assert(gnutls_priority_set_direct(session, prio, NULL) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, c_certcred); - gnutls_server_name_set(session, GNUTLS_NAME_DNS, - "localhost", strlen("localhost")); + gnutls_server_name_set(session, GNUTLS_NAME_DNS, "localhost", + strlen("localhost")); sd = _tcp_connect_eagain(); diff --git a/tests/suite/mini-record-timing.c b/tests/suite/mini-record-timing.c index 01309c7680..b4b763a44f 100644 --- a/tests/suite/mini-record-timing.c +++ b/tests/suite/mini-record-timing.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,29 +35,29 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include //#define USE_RDTSC //#define TEST_ETM -# include -# include -# include -# ifdef USE_RDTSC -# include -# endif +#include +#include +#include +#ifdef USE_RDTSC +#include +#endif -# ifdef DEBUG +#ifdef DEBUG static void server_log_func(int level, const char *str) { fprintf(stderr, "server|<%d>| %s", level, str); @@ -67,22 +67,22 @@ static void client_log_func(int level, const char *str) { fprintf(stderr, "client|<%d>| %s", level, str); } -# endif +#endif -# ifndef _POSIX_TIMERS -# error need posix timers -# endif +#ifndef _POSIX_TIMERS +#error need posix timers +#endif -# define CLOCK_TO_USE CLOCK_MONOTONIC +#define CLOCK_TO_USE CLOCK_MONOTONIC //#define CLOCK_TO_USE CLOCK_MONOTONIC_RAW //#define CLOCK_TO_USE CLOCK_PROCESS_CPUTIME_ID /* This program tests the robustness of record * decoding. */ -# define MAX_PER_POINT (8*1024) -# define WARM_UP (2) -# define MAX_BUF 1024 +#define MAX_PER_POINT (8 * 1024) +#define WARM_UP (2) +#define MAX_BUF 1024 struct point_st { unsigned char byte1; @@ -113,8 +113,8 @@ static ssize_t push(gnutls_transport_ptr_t tr, const void *_data, size_t len) return send(fd, _data, len, 0); } -static ssize_t -push_crippled(gnutls_transport_ptr_t tr, const void *_data, size_t len) +static ssize_t push_crippled(gnutls_transport_ptr_t tr, const void *_data, + size_t len) { int fd = (long int)tr; unsigned char *data = (void *)_data; @@ -144,16 +144,16 @@ push_crippled(gnutls_transport_ptr_t tr, const void *_data, size_t len) return send(fd, data, len, 0); } -# ifndef USE_RDTSC +#ifndef USE_RDTSC static unsigned long timespec_sub_ns(struct timespec *a, struct timespec *b) { return (a->tv_sec - b->tv_sec) * 1000 * 1000 * 1000 + a->tv_nsec - - b->tv_nsec; + b->tv_nsec; } -# endif +#endif -static void -client(int fd, const char *prio, unsigned int text_size, struct test_st *test) +static void client(int fd, const char *prio, unsigned int text_size, + struct test_st *test) { int ret; char buffer[MAX_BUF + 1]; @@ -174,10 +174,10 @@ client(int fd, const char *prio, unsigned int text_size, struct test_st *test) memset(text, test->fill, text_size); -# ifdef DEBUG +#ifdef DEBUG gnutls_global_set_log_function(client_log_func); gnutls_global_set_log_level(6); -# endif +#endif gnutls_psk_allocate_client_credentials(&pskcred); gnutls_psk_set_client_credentials(pskcred, "test", &key, @@ -205,8 +205,7 @@ client(int fd, const char *prio, unsigned int text_size, struct test_st *test) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fprintf(stderr, "client: Handshake failed: %s\n", @@ -223,7 +222,7 @@ client(int fd, const char *prio, unsigned int text_size, struct test_st *test) gnutls_transport_set_push_function(session, push_crippled); - restart: +restart: do { ret = gnutls_record_send(session, text, text_size); } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); @@ -231,8 +230,8 @@ client(int fd, const char *prio, unsigned int text_size, struct test_st *test) do { ret = gnutls_record_recv(session, buffer, sizeof(buffer)); - } while (ret < 0 - && (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED)); + } while (ret < 0 && + (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED)); if (ret > 0) { struct point_st *point_ptr = NULL; @@ -256,7 +255,7 @@ client(int fd, const char *prio, unsigned int text_size, struct test_st *test) memcpy(&measurement, buffer, sizeof(measurement)); if (point_ptr->midx < MAX_PER_POINT) { point_ptr->smeasurements[point_ptr->midx] = - measurement; + measurement; point_ptr->midx++; point_idx++; @@ -270,7 +269,7 @@ client(int fd, const char *prio, unsigned int text_size, struct test_st *test) abort(); } - finish: +finish: fprintf(stderr, "\ntest completed\n"); gnutls_transport_set_push_function(session, push); @@ -294,10 +293,9 @@ client(int fd, const char *prio, unsigned int text_size, struct test_st *test) fprintf(fp, "%u,", (unsigned)test->points[i].byte1); for (j = 0; j < MAX_PER_POINT; j++) { fprintf(fp, "%u%s", - (unsigned)test-> - points[i].smeasurements[j], + (unsigned)test->points[i] + .smeasurements[j], (j != MAX_PER_POINT - 1) ? "," : ""); - } fprintf(fp, "\n"); } @@ -319,8 +317,8 @@ client(int fd, const char *prio, unsigned int text_size, struct test_st *test) free(text); } -static int -pskfunc(gnutls_session_t session, const char *username, gnutls_datum_t * key) +static int pskfunc(gnutls_session_t session, const char *username, + gnutls_datum_t *key) { key->data = gnutls_malloc(4); key->data[0] = 0xDE; @@ -338,12 +336,12 @@ static void server(int fd, const char *prio) gnutls_session_t session; gnutls_psk_server_credentials_t server_pskcred; const char *err; -# ifndef USE_RDTSC +#ifndef USE_RDTSC struct timespec start, stop; -# else +#else uint64_t c1, c2; unsigned int i1; -# endif +#endif static unsigned long measurement; setpriority(PRIO_PROCESS, getpid(), -15); @@ -351,10 +349,10 @@ static void server(int fd, const char *prio) gnutls_global_init(); memset(buffer, 0, sizeof(buffer)); -# ifdef DEBUG +#ifdef DEBUG gnutls_global_set_log_function(server_log_func); gnutls_global_set_log_level(6); -# endif +#endif assert(gnutls_psk_allocate_server_credentials(&server_pskcred) >= 0); gnutls_psk_set_server_credentials_function(server_pskcred, pskfunc); assert(gnutls_init(&session, GNUTLS_SERVER) >= 0); @@ -373,58 +371,55 @@ static void server(int fd, const char *prio) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { -# ifdef GNUTLS_E_PREMATURE_TERMINATION - if (ret != GNUTLS_E_PREMATURE_TERMINATION - && ret != GNUTLS_E_UNEXPECTED_PACKET_LENGTH) -# else +#ifdef GNUTLS_E_PREMATURE_TERMINATION + if (ret != GNUTLS_E_PREMATURE_TERMINATION && + ret != GNUTLS_E_UNEXPECTED_PACKET_LENGTH) +#else if (ret != GNUTLS_E_UNEXPECTED_PACKET_LENGTH) -# endif +#endif { - fprintf(stderr, - "server: Handshake has failed (%s)\n\n", + fprintf(stderr, "server: Handshake has failed (%s)\n\n", gnutls_strerror(ret)); exit(1); } goto finish; } -# ifdef TEST_ETM +#ifdef TEST_ETM assert(gnutls_session_etm_status(session) != 0); -# else +#else assert(gnutls_session_etm_status(session) == 0); -# endif +#endif - restart: +restart: do { ret = recv(fd, buffer, 1, MSG_PEEK); } while (ret == -1 && errno == EAGAIN); -# ifdef USE_RDTSC +#ifdef USE_RDTSC c1 = __rdtscp(&i1); -# else +#else clock_gettime(CLOCK_TO_USE, &start); -# endif +#endif do { ret = gnutls_record_recv(session, buffer, sizeof(buffer)); } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); -# ifdef USE_RDTSC +#ifdef USE_RDTSC c2 = __rdtscp(&i1); measurement = c2 - c1; -# else +#else clock_gettime(CLOCK_TO_USE, &stop); measurement = timespec_sub_ns(&stop, &start); -# endif +#endif if (ret == GNUTLS_E_DECRYPTION_FAILED) { gnutls_session_force_valid(session); do { - ret = - gnutls_record_send(session, &measurement, - sizeof(measurement)); + ret = gnutls_record_send(session, &measurement, + sizeof(measurement)); /* GNUTLS_AL_FATAL, GNUTLS_A_BAD_RECORD_MAC); */ } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); @@ -441,7 +436,7 @@ static void server(int fd, const char *prio) */ gnutls_bye(session, GNUTLS_SHUT_WR); - finish: +finish: close(fd); gnutls_deinit(session); @@ -516,7 +511,7 @@ static void ch_handler(int sig) return; } -# define NPOINTS 256 +#define NPOINTS 256 static struct point_st all_points[NPOINTS]; static struct point_st all_points_one[NPOINTS]; @@ -524,87 +519,73 @@ static struct point_st all_points_one[NPOINTS]; * when manipulating the last record byte (pad) * for AES-SHA1. */ -static struct test_st test_sha1 = { - .points = all_points, - .npoints = NPOINTS, - .text_size = 18 * 16, - .name = "sha1", - .file = "out-sha1.txt", - .fill = 0x00, - .desc = NULL -}; +static struct test_st test_sha1 = { .points = all_points, + .npoints = NPOINTS, + .text_size = 18 * 16, + .name = "sha1", + .file = "out-sha1.txt", + .fill = 0x00, + .desc = NULL }; /* Test that outputs a graph of the timings * when manipulating the last record byte (pad) * for AES-SHA256. */ -static struct test_st test_sha256 = { - .points = all_points, - .npoints = NPOINTS, - .text_size = 17 * 16, - .name = "sha256", - .file = "out-sha256.txt", - .fill = 0x00, - .desc = NULL -}; - -static struct test_st test_sha256_new = { - .points = all_points, - .npoints = NPOINTS, - .text_size = 1024 * 16, - .name = "sha256-new", - .file = "out-sha256-new.txt", - .fill = 0xff, - .desc = NULL -}; - -static struct test_st test_sha384 = { - .points = all_points, - .npoints = NPOINTS, - .text_size = 33 * 16, - .name = "sha384", - .file = "out-sha384.txt", - .fill = 0x00, - .desc = NULL -}; +static struct test_st test_sha256 = { .points = all_points, + .npoints = NPOINTS, + .text_size = 17 * 16, + .name = "sha256", + .file = "out-sha256.txt", + .fill = 0x00, + .desc = NULL }; + +static struct test_st test_sha256_new = { .points = all_points, + .npoints = NPOINTS, + .text_size = 1024 * 16, + .name = "sha256-new", + .file = "out-sha256-new.txt", + .fill = 0xff, + .desc = NULL }; + +static struct test_st test_sha384 = { .points = all_points, + .npoints = NPOINTS, + .text_size = 33 * 16, + .name = "sha384", + .file = "out-sha384.txt", + .fill = 0x00, + .desc = NULL }; /* Test that outputs a graph of the timings * when manipulating the last record byte (pad) * for AES-SHA1, on a short message. */ -static struct test_st test_sha1_short = { - .points = all_points, - .npoints = NPOINTS, - .text_size = 16 * 2, - .name = "sha1-short", - .file = "out-sha1-short.txt", - .fill = 0x00, - .desc = NULL -}; +static struct test_st test_sha1_short = { .points = all_points, + .npoints = NPOINTS, + .text_size = 16 * 2, + .name = "sha1-short", + .file = "out-sha1-short.txt", + .fill = 0x00, + .desc = NULL }; /* Test that outputs a graph of the timings * when manipulating the last record byte (pad) * for AES-SHA256. */ -static struct test_st test_sha256_short = { - .points = all_points, - .npoints = NPOINTS, - .text_size = 16 * 2, - .name = "sha256-short", - .file = "out-sha256-short.txt", - .fill = 0x00, - .desc = NULL -}; - -static struct test_st test_sha384_short = { - .points = all_points, - .npoints = NPOINTS, - .text_size = 16 * 2, - .name = "sha384-short", - .file = "out-sha384-short.txt", - .fill = 0x00, - .desc = NULL -}; +static struct test_st test_sha256_short = { .points = all_points, + .npoints = NPOINTS, + .text_size = 16 * 2, + .name = "sha256-short", + .file = "out-sha256-short.txt", + .fill = 0x00, + .desc = NULL }; + +static struct test_st test_sha384_short = { .points = all_points, + .npoints = NPOINTS, + .text_size = 16 * 2, + .name = "sha384-short", + .file = "out-sha384-short.txt", + .fill = 0x00, + .desc = NULL }; /* Test that outputs a graph of the timings * when manipulating the last record byte (pad) @@ -613,15 +594,13 @@ static struct test_st test_sha384_short = { * (i.e. we want to see whether the padding * [1,1] shows up in the measurements) */ -static struct test_st test_sha1_one = { - .points = all_points_one, - .npoints = NPOINTS, - .text_size = 16 * 2, - .name = "sha1-one", - .file = "out-sha1-one.txt", - .fill = 0x00, - .desc = NULL -}; +static struct test_st test_sha1_one = { .points = all_points_one, + .npoints = NPOINTS, + .text_size = 16 * 2, + .name = "sha1-one", + .file = "out-sha1-one.txt", + .fill = 0x00, + .desc = NULL }; int main(int argc, char **argv) { @@ -676,9 +655,8 @@ int main(int argc, char **argv) for (i = 0; i < 256; i++) { all_points[i].byte1 = i; all_points[i].byte2 = 0; - all_points[i].smeasurements = - malloc(MAX_PER_POINT * - sizeof(all_points[i].smeasurements[0])); + all_points[i].smeasurements = malloc( + MAX_PER_POINT * sizeof(all_points[i].smeasurements[0])); } memset(&all_points_one, 0, sizeof(all_points_one)); @@ -689,13 +667,14 @@ int main(int argc, char **argv) } remove(test->file); - snprintf(prio, sizeof(prio), -# ifdef TEST_ETM - "NONE:+COMP-NULL:+AES-128-CBC:+AES-256-CBC:+%s:+PSK:+VERS-TLS1.2:+VERS-TLS1.1:+SIGN-ALL:+CURVE-ALL", -# else - "NONE:+COMP-NULL:+AES-128-CBC:+AES-256-CBC:+%s:+PSK:%%NO_ETM:+VERS-TLS1.2:+VERS-TLS1.1:+SIGN-ALL:+CURVE-ALL", -# endif - hash); + snprintf( + prio, sizeof(prio), +#ifdef TEST_ETM + "NONE:+COMP-NULL:+AES-128-CBC:+AES-256-CBC:+%s:+PSK:+VERS-TLS1.2:+VERS-TLS1.1:+SIGN-ALL:+CURVE-ALL", +#else + "NONE:+COMP-NULL:+AES-128-CBC:+AES-256-CBC:+%s:+PSK:%%NO_ETM:+VERS-TLS1.2:+VERS-TLS1.1:+SIGN-ALL:+CURVE-ALL", +#endif + hash); printf("\nAES-%s (calculating different padding timings)\n", hash); start(prio, test->text_size, test); @@ -705,4 +684,4 @@ int main(int argc, char **argv) return 0; } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/suite/prime-check.c b/tests/suite/prime-check.c index 3482a4beb8..a298a89179 100644 --- a/tests/suite/prime-check.c +++ b/tests/suite/prime-check.c @@ -25,7 +25,7 @@ /* Tests whether the included parameters are indeed prime */ -static void test_prime(const gnutls_datum_t * prime, const gnutls_datum_t * _q) +static void test_prime(const gnutls_datum_t *prime, const gnutls_datum_t *_q) { mpz_t p; unsigned bits = prime->size * 8; diff --git a/tests/suite/rng.c b/tests/suite/rng.c index 6dcd4ca777..630c5646ea 100644 --- a/tests/suite/rng.c +++ b/tests/suite/rng.c @@ -19,7 +19,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include diff --git a/tests/system-override-curves-allowlist.c b/tests/system-override-curves-allowlist.c index 0ecf184533..551ba342b1 100644 --- a/tests/system-override-curves-allowlist.c +++ b/tests/system-override-curves-allowlist.c @@ -45,9 +45,12 @@ #include "utils.h" -#define _assert(cond, format, ...) if (!(cond)) \ +#define _assert(cond, format, ...) \ + if (!(cond)) \ _fail("Assertion `" #cond "` failed: " format "\n", ##__VA_ARGS__) -#define _check(cond) if (!(cond)) _fail("Assertion `" #cond "` failed.\n") +#define _check(cond) \ + if (!(cond)) \ + _fail("Assertion `" #cond "` failed.\n") gnutls_ecc_curve_t unlocked_ecc_curve_get_id(const char *curve); gnutls_pk_algorithm_t curve_name_to_pk(const char *curve); diff --git a/tests/system-override-hash.c b/tests/system-override-hash.c index 15af1e8880..6aa4936f4b 100644 --- a/tests/system-override-hash.c +++ b/tests/system-override-hash.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include diff --git a/tests/system-override-sig-tls.c b/tests/system-override-sig-tls.c index 8851c5d323..d0dbd29b1b 100644 --- a/tests/system-override-sig-tls.c +++ b/tests/system-override-sig-tls.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,20 +33,26 @@ #include #include "utils.h" -#define SKIP16(pos, total) { \ - uint16_t _s; \ - if (pos+2 > total) fail("error\n"); \ - _s = (msg->data[pos] << 8) | msg->data[pos+1]; \ - if ((size_t)(pos+2+_s) > total) fail("error\n"); \ - pos += 2+_s; \ +#define SKIP16(pos, total) \ + { \ + uint16_t _s; \ + if (pos + 2 > total) \ + fail("error\n"); \ + _s = (msg->data[pos] << 8) | msg->data[pos + 1]; \ + if ((size_t)(pos + 2 + _s) > total) \ + fail("error\n"); \ + pos += 2 + _s; \ } -#define SKIP8(pos, total) { \ - uint8_t _s; \ - if (pos+1 > total) fail("error\n"); \ - _s = msg->data[pos]; \ - if ((size_t)(pos+1+_s) > total) fail("error\n"); \ - pos += 1+_s; \ +#define SKIP8(pos, total) \ + { \ + uint8_t _s; \ + if (pos + 1 > total) \ + fail("error\n"); \ + _s = msg->data[pos]; \ + if ((size_t)(pos + 1 + _s) > total) \ + fail("error\n"); \ + pos += 1 + _s; \ } #define HANDSHAKE_SESSION_ID_POS 34 @@ -65,16 +71,16 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -#define PRIO "NORMAL:-VERS-ALL:+VERS-TLS1.3:-SIGN-ALL:" \ +#define PRIO \ + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-SIGN-ALL:" \ "+SIGN-RSA-PSS-RSAE-SHA256:+SIGN-RSA-PSS-RSAE-SHA384" /* rsa_pss_rsae_sha384 */ #define SIGALGS_EXP "\x00\x02\x08\x05" -static int -ext_callback(void *ctx, unsigned tls_id, - const unsigned char *data, unsigned size) +static int ext_callback(void *ctx, unsigned tls_id, const unsigned char *data, + unsigned size) { - if (tls_id == 13) { /* signature algorithms */ + if (tls_id == 13) { /* signature algorithms */ if (size != sizeof(SIGALGS_EXP) - 1) { fail("invalid signature_algorithms length: %u != 4\n", size); @@ -86,10 +92,9 @@ ext_callback(void *ctx, unsigned tls_id, return 0; } -static int -handshake_callback(gnutls_session_t session, unsigned int htype, - unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) +static int handshake_callback(gnutls_session_t session, unsigned int htype, + unsigned post, unsigned int incoming, + const gnutls_datum_t *msg) { assert(post); @@ -133,9 +138,8 @@ void doit(void) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server2_cert, &server2_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server2_cert, + &server2_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); @@ -153,9 +157,8 @@ void doit(void) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca2_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca2_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -178,8 +181,7 @@ void doit(void) client_pull_timeout_func); gnutls_transport_set_ptr(client, client); - gnutls_handshake_set_hook_function(client, - GNUTLS_HANDSHAKE_ANY, + gnutls_handshake_set_hook_function(client, GNUTLS_HANDSHAKE_ANY, GNUTLS_HOOK_POST, handshake_callback); diff --git a/tests/system-override-sig.c b/tests/system-override-sig.c index e0c933e3a8..4b797c29d4 100644 --- a/tests/system-override-sig.c +++ b/tests/system-override-sig.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -43,15 +43,13 @@ void doit(void) /* check whether the values set by the calling script are the expected */ assert(gnutls_sign_is_secure(GNUTLS_SIGN_RSA_SHA256) != 0); - assert(gnutls_sign_is_secure2 - (GNUTLS_SIGN_RSA_SHA256, - GNUTLS_SIGN_FLAG_SECURE_FOR_CERTS) == 0); + assert(gnutls_sign_is_secure2(GNUTLS_SIGN_RSA_SHA256, + GNUTLS_SIGN_FLAG_SECURE_FOR_CERTS) == 0); assert(gnutls_sign_is_secure(GNUTLS_SIGN_RSA_SHA1) == 0); - assert(gnutls_sign_is_secure2 - (GNUTLS_SIGN_RSA_SHA1, GNUTLS_SIGN_FLAG_SECURE_FOR_CERTS) == 0); + assert(gnutls_sign_is_secure2(GNUTLS_SIGN_RSA_SHA1, + GNUTLS_SIGN_FLAG_SECURE_FOR_CERTS) == 0); assert(gnutls_sign_is_secure(GNUTLS_SIGN_RSA_SHA512) == 0); - assert(gnutls_sign_is_secure2 - (GNUTLS_SIGN_RSA_SHA512, - GNUTLS_SIGN_FLAG_SECURE_FOR_CERTS) == 0); + assert(gnutls_sign_is_secure2(GNUTLS_SIGN_RSA_SHA512, + GNUTLS_SIGN_FLAG_SECURE_FOR_CERTS) == 0); assert(gnutls_sign_is_secure(GNUTLS_SIGN_RSA_MD5) == 0); } diff --git a/tests/system-prio-file.c b/tests/system-prio-file.c index 1aec0493d4..164c3fbf25 100644 --- a/tests/system-prio-file.c +++ b/tests/system-prio-file.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -58,7 +58,7 @@ static void try_prio(const char *prio, const char *expected_str) exit(1); } - ok: +ok: gnutls_free(p); gnutls_global_deinit(); } @@ -70,8 +70,9 @@ void doit(void) try_prio("@HELLO1", "NORMAL"); try_prio("@HELLO1:+AES-256-CBC:+AEAD", "NORMAL:+AES-256-CBC:+AEAD"); try_prio("@HELLO2", "NORMAL:+AES-128-CBC"); - try_prio("@HELLO3", - "NONE:+VERS-TLS-ALL:-VERS-SSL3.0:+AEAD:+SHA1:+SHA256:+SHA384:+ECDHE-RSA:+ECDHE-ECDSA:+RSA:+DHE-RSA:+DHE-DSS:+AES-256-GCM:+AES-256-CBC:+CAMELLIA-256-GCM:+CAMELLIA-256-CBC:+AES-128-GCM:+AES-128-CBC:+CAMELLIA-128-GCM:+CAMELLIA-128-CBC:+3DES-CBC:+SIGN-ALL:-SIGN-RSA-MD5:+CURVE-ALL:+COMP-NULL:%PROFILE_LOW"); + try_prio( + "@HELLO3", + "NONE:+VERS-TLS-ALL:-VERS-SSL3.0:+AEAD:+SHA1:+SHA256:+SHA384:+ECDHE-RSA:+ECDHE-ECDSA:+RSA:+DHE-RSA:+DHE-DSS:+AES-256-GCM:+AES-256-CBC:+CAMELLIA-256-GCM:+CAMELLIA-256-CBC:+AES-128-GCM:+AES-128-CBC:+CAMELLIA-128-GCM:+CAMELLIA-128-CBC:+3DES-CBC:+SIGN-ALL:-SIGN-RSA-MD5:+CURVE-ALL:+COMP-NULL:%PROFILE_LOW"); try_prio("@HELLO1,HELLO2", "NORMAL"); try_prio("@HELLO1,HELLO2:+AES-128-CBC", "NORMAL:+AES-128-CBC"); try_prio("@HELLO1,HELLO1", "NORMAL"); diff --git a/tests/test-chains-issuer-aia.h b/tests/test-chains-issuer-aia.h index 3bd8415a3d..59069567a3 100644 --- a/tests/test-chains-issuer-aia.h +++ b/tests/test-chains-issuer-aia.h @@ -21,7 +21,7 @@ */ #ifndef GNUTLS_TESTS_TEST_CHAINS_ISSUER_AIA_H -# define GNUTLS_TESTS_TEST_CHAINS_ISSUER_AIA_H +#define GNUTLS_TESTS_TEST_CHAINS_ISSUER_AIA_H #define MAX_CHAIN 1 @@ -127,7 +127,7 @@ static const char *missing_cert_aia_ca[] = { }; #if defined __clang__ || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) -# pragma GCC diagnostic pop +#pragma GCC diagnostic pop #endif -#endif /* GNUTLS_TESTS_TEST_CHAINS_ISSUER_AIA_H */ +#endif /* GNUTLS_TESTS_TEST_CHAINS_ISSUER_AIA_H */ diff --git a/tests/test-chains-issuer.h b/tests/test-chains-issuer.h index c612e7132e..00a29a22ba 100644 --- a/tests/test-chains-issuer.h +++ b/tests/test-chains-issuer.h @@ -22,11 +22,12 @@ */ #ifndef GNUTLS_TESTS_TEST_CHAINS_ISSUER_H -# define GNUTLS_TESTS_TEST_CHAINS_ISSUER_H +#define GNUTLS_TESTS_TEST_CHAINS_ISSUER_H -# define MAX_CHAIN 15 +#define MAX_CHAIN 15 -# define SERVER_CERT "-----BEGIN CERTIFICATE-----\n" \ +#define SERVER_CERT \ + "-----BEGIN CERTIFICATE-----\n" \ "MIIDATCCAbmgAwIBAgIUQdvdegP8JFszFHLfV4+lrEdafzAwPQYJKoZIhvcNAQEK\n" \ "MDCgDTALBglghkgBZQMEAgGhGjAYBgkqhkiG9w0BAQgwCwYJYIZIAWUDBAIBogMC\n" \ "AUAwDzENMAsGA1UEAxMEQ0EtNTAgFw0yMDA0MjAxMTI2NDFaGA85OTk5MTIzMTIz\n" \ @@ -43,10 +44,11 @@ "5woB5KENnYfoAWaYmXa1EPRh2xb2XDI0uCHg1bPljg61/T2cJZ4VfkOvsKgFAI4p\n" \ "lAKQCZSKbEY1oWDdDhVcSipYu2E88RXczvcnEQV3C3p6CGcf8xclZdZIwMAyXYAK\n" \ "oNccbSIfDlN4iD+2bztCRWHD6hWL1NJsFqmv3Ts8eYU8z8J8NdhtCXr76lFkFmDx\n" \ - "+lfZEv4=\n" \ + "+lfZEv4=\n" \ "-----END CERTIFICATE-----\n" -# define CA_CERT_5 "-----BEGIN CERTIFICATE-----\n" \ +#define CA_CERT_5 \ + "-----BEGIN CERTIFICATE-----\n" \ "MIIDojCCAlqgAwIBAgIUHRb3xJ2ZGqqgdC/pBq/sDtAwvtowPQYJKoZIhvcNAQEK\n" \ "MDCgDTALBglghkgBZQMEAgGhGjAYBgkqhkiG9w0BAQgwCwYJYIZIAWUDBAIBogMC\n" \ "AUAwDzENMAsGA1UEAxMEQ0EtNDAgFw0yMDA0MjAxMTI2NDFaGA85OTk5MTIzMTIz\n" \ @@ -66,10 +68,11 @@ "XveeQysCKsDEfdrfn1mACQj8eC4lL9KJcHptHdTSLfa58MV2Qe5smCIByXxendO5\n" \ "UQHZy5UrzWAdtO7y75vXeXynsXAqcE4TTNjdFiCnn6Q5/pVyW14kepfjaOzQFP7H\n" \ "QlnHtgQDRAlQuB1aGseb6jn2Joy33itpBthvtgBosZIqsMyPoX5YzjqZUSjfPZOP\n" \ - "/aOd/5HR4ZPDWfHdIWbXogYX0ndhNg==\n" \ + "/aOd/5HR4ZPDWfHdIWbXogYX0ndhNg==\n" \ "-----END CERTIFICATE-----\n" -# define CA_CERT_4 "-----BEGIN CERTIFICATE-----\n" \ +#define CA_CERT_4 \ + "-----BEGIN CERTIFICATE-----\n" \ "MIIDojCCAlqgAwIBAgIUGybZZ1e/iFUKafPdh8xUbh7YVnwwPQYJKoZIhvcNAQEK\n" \ "MDCgDTALBglghkgBZQMEAgGhGjAYBgkqhkiG9w0BAQgwCwYJYIZIAWUDBAIBogMC\n" \ "AUAwDzENMAsGA1UEAxMEQ0EtMzAgFw0yMDA0MjAxMTI2NDFaGA85OTk5MTIzMTIz\n" \ @@ -89,10 +92,11 @@ "wQ7s/JNNk/SZt4bKjX9GrTscZmOVtrwpZ6uQBHITScsr4V431G6wojZ09iEG0yFQ\n" \ "ZD8ECn2ZOPVQXIswa75NelcGKup838HoDIjQ3vIvrx8rqf5HRg4t9mXzjECzXHVy\n" \ "8wDamoE3fLAZZX2RxOWnHfjI8qB83qYyR5kN002EFJ/e060SPia1rTHyLqLngRtq\n" \ - "xgR9bRjZf++h/dg6L87b26J5KdDafw==\n" \ + "xgR9bRjZf++h/dg6L87b26J5KdDafw==\n" \ "-----END CERTIFICATE-----\n" -# define CA_CERT_3 "-----BEGIN CERTIFICATE-----\n" \ +#define CA_CERT_3 \ + "-----BEGIN CERTIFICATE-----\n" \ "MIIDojCCAlqgAwIBAgIUHRkWa8ZOaRrqjxigoEhxJHMLM2UwPQYJKoZIhvcNAQEK\n" \ "MDCgDTALBglghkgBZQMEAgGhGjAYBgkqhkiG9w0BAQgwCwYJYIZIAWUDBAIBogMC\n" \ "AUAwDzENMAsGA1UEAxMEQ0EtMjAgFw0yMDA0MjAxMTI2NDFaGA85OTk5MTIzMTIz\n" \ @@ -112,10 +116,11 @@ "jTu7jvLbRSHkBQFimWorPfgf15nlXSCBtejEwvDLXlptLbKEa3q7VFXDzCyeiKGb\n" \ "IHRozrAP5qiyIjYFJevXrZ/7bWDwMcJrB0uSQN9TD2mJjNXTCHu3GYnEmnu7KRpb\n" \ "M3OdswIyjIFYvwlYGe2+GbigSaMZY9KCHR7vkJ1JGdxfh+CADcbL4fwj3kOpyEoe\n" \ - "TTqtWQ93AfQnd2Vm3/SAr/+jSuMbSA==\n" \ + "TTqtWQ93AfQnd2Vm3/SAr/+jSuMbSA==\n" \ "-----END CERTIFICATE-----\n" -# define CA_CERT_2 "-----BEGIN CERTIFICATE-----\n" \ +#define CA_CERT_2 \ + "-----BEGIN CERTIFICATE-----\n" \ "MIIDojCCAlqgAwIBAgIUVd3TT33d1fy/8INiIKhudYmRE5swPQYJKoZIhvcNAQEK\n" \ "MDCgDTALBglghkgBZQMEAgGhGjAYBgkqhkiG9w0BAQgwCwYJYIZIAWUDBAIBogMC\n" \ "AUAwDzENMAsGA1UEAxMEQ0EtMTAgFw0yMDA0MjAxMTI2NDFaGA85OTk5MTIzMTIz\n" \ @@ -135,10 +140,11 @@ "FTYE+42MFBr6f5SNp9Q+ZUcjSK5DO7yNiyKDFfNffFGxHmnmGj2LhgyrvYA/aNyB\n" \ "2ichlfihcKkExGBN44ODoK+8/W8oiMt541AvPyJxTJjxWjeJ42EBXO+J5k8wRuCu\n" \ "nXCW5OjnEIExXGKZLlieH4t8kUyHlrTlHO7spiqA/QM7GUtBQfJTLdPFmvHU3Jtw\n" \ - "qGN2PrhXyLoaUfIpNbWO9Jmj2GYaWg==\n" \ + "qGN2PrhXyLoaUfIpNbWO9Jmj2GYaWg==\n" \ "-----END CERTIFICATE-----\n" -# define CA_CERT_1 "-----BEGIN CERTIFICATE-----\n" \ +#define CA_CERT_1 \ + "-----BEGIN CERTIFICATE-----\n" \ "MIICxjCCAiegAwIBAgIUKnsCQlR0jpxEnpzqxbi+Y2rqwpMwCgYIKoZIzj0EAwQw\n" \ "DzENMAsGA1UEAxMEQ0EtMDAgFw0yMDA0MjAxMTI2NDFaGA85OTk5MTIzMTIzNTk1\n" \ "OVowDzENMAsGA1UEAxMEQ0EtMTCCAVIwPQYJKoZIhvcNAQEKMDCgDTALBglghkgB\n" \ @@ -153,10 +159,11 @@ "BgNVHSMEGDAWgBRBWngghShY2X+P7m45LPH1V4p5czAKBggqhkjOPQQDBAOBjAAw\n" \ "gYgCQgHnvF1Dq32xBBEME4UlVsVeOflvGw5Sr/hVhbUZ1KfAQIV2ZuBuvJNMBrj8\n" \ "Pzi/nhRuV8vH5xabyQb9RYVcJ8oilQJCAdduIVVvL6DmUBOJfz1znsxPA5JCBBY2\n" \ - "pAOhFZBrNXE2zZrgttgR6TG4Obst1fQzL3RsmqAYAuWSpKPNz6Hdq+kl\n" \ + "pAOhFZBrNXE2zZrgttgR6TG4Obst1fQzL3RsmqAYAuWSpKPNz6Hdq+kl\n" \ "-----END CERTIFICATE-----\n" -# define CA_CERT_0 "-----BEGIN CERTIFICATE-----\n" \ +#define CA_CERT_0 \ + "-----BEGIN CERTIFICATE-----\n" \ "MIIB7TCCAU6gAwIBAgIUWmldb3tGP48wFh5P/cmVytYv5JcwCgYIKoZIzj0EAwQw\n" \ "DzENMAsGA1UEAxMEQ0EtMDAgFw0yMDA0MjAxMTI2NDFaGA85OTk5MTIzMTIzNTk1\n" \ "OVowDzENMAsGA1UEAxMEQ0EtMDCBmzAQBgcqhkjOPQIBBgUrgQQAIwOBhgAEAarU\n" \ @@ -167,10 +174,11 @@ "8fVXinlzMAoGCCqGSM49BAMEA4GMADCBiAJCAcmtP2IVnOTF2wHhfUn13qsUpqyc\n" \ "3kCI1ueg75NgR7xgpL9JQ1CnPaUbCp+5ROKf5IHn8f1jjZIu45WpiWhnZDkkAkIA\n" \ "pCTZn7t7memhMJUqrHGywx2gR9fgID/REZUZdVe9KcTzWvwSrbffDMCcf10SpM6C\n" \ - "/YXiDLiWNiK+WV8Z557eWKI=\n" \ + "/YXiDLiWNiK+WV8Z557eWKI=\n" \ "-----END CERTIFICATE-----\n" -# define UNRELATED "-----BEGIN CERTIFICATE-----\n" \ +#define UNRELATED \ + "-----BEGIN CERTIFICATE-----\n" \ "MIIEaDCCAqCgAwIBAgIMWXi5rBKSNwkPo4olMD0GCSqGSIb3DQEBCjAwoA0wCwYJ\n" \ "YIZIAWUDBAIDoRowGAYJKoZIhvcNAQEIMAsGCWCGSAFlAwQCA6IDAgFAMA8xDTAL\n" \ "BgNVBAMTBENBLTAwIBcNMTcwNzI2MTU0NzU2WhgPOTk5OTEyMzEyMzU5NTlaMA8x\n" \ @@ -194,16 +202,11 @@ "3eoeffRfWQXO2y0/K9TUqZM+6n10N32ZkR45I+XSQ13qS73l4QS4djay9z/bAMeb\n" \ "/zgaf6J790LULzDBEvhPZLNn4bBu/t7WVj2NI+frQvAHyQ9ZhBYkow84qF+//zK9\n" \ "d/VzQbBQOJFX9TWdWgUxklrWnXE0gmxzGBdq+cMQyHulVVbgShftCRJ8jn8e0Cl1\n" \ - "dl+Cpj08yyLpT9/ZmL8ytgD3Iobw0wPHppb/jQ==\n" \ + "dl+Cpj08yyLpT9/ZmL8ytgD3Iobw0wPHppb/jQ==\n" \ "-----END CERTIFICATE-----\n" static const char *missing_middle_single[] = { - SERVER_CERT, - CA_CERT_5, - CA_CERT_4, - CA_CERT_2, - CA_CERT_1, - NULL, + SERVER_CERT, CA_CERT_5, CA_CERT_4, CA_CERT_2, CA_CERT_1, NULL, }; static const char *missing_middle_single_insert[] = { @@ -212,11 +215,7 @@ static const char *missing_middle_single_insert[] = { }; static const char *missing_middle_multiple[] = { - SERVER_CERT, - CA_CERT_5, - CA_CERT_4, - CA_CERT_1, - NULL, + SERVER_CERT, CA_CERT_5, CA_CERT_4, CA_CERT_1, NULL, }; static const char *missing_middle_multiple_insert[] = { @@ -225,12 +224,7 @@ static const char *missing_middle_multiple_insert[] = { }; static const char *missing_last_single[] = { - SERVER_CERT, - CA_CERT_5, - CA_CERT_4, - CA_CERT_3, - CA_CERT_2, - NULL, + SERVER_CERT, CA_CERT_5, CA_CERT_4, CA_CERT_3, CA_CERT_2, NULL, }; static const char *missing_last_single_insert[] = { @@ -239,11 +233,7 @@ static const char *missing_last_single_insert[] = { }; static const char *missing_last_multiple[] = { - SERVER_CERT, - CA_CERT_5, - CA_CERT_4, - CA_CERT_3, - NULL, + SERVER_CERT, CA_CERT_5, CA_CERT_4, CA_CERT_3, NULL, }; static const char *missing_last_multiple_insert[] = { @@ -252,11 +242,7 @@ static const char *missing_last_multiple_insert[] = { }; static const char *missing_skip_single[] = { - SERVER_CERT, - CA_CERT_5, - CA_CERT_3, - CA_CERT_1, - NULL, + SERVER_CERT, CA_CERT_5, CA_CERT_3, CA_CERT_1, NULL, }; static const char *missing_skip_single_insert[] = { @@ -279,45 +265,23 @@ static const char *missing_skip_multiple_insert[] = { }; static const char *missing_middle_single_unsorted[] = { - SERVER_CERT, - CA_CERT_1, - CA_CERT_2, - CA_CERT_4, - CA_CERT_5, - NULL, + SERVER_CERT, CA_CERT_1, CA_CERT_2, CA_CERT_4, CA_CERT_5, NULL, }; static const char *missing_middle_multiple_unsorted[] = { - SERVER_CERT, - CA_CERT_1, - CA_CERT_4, - CA_CERT_5, - NULL, + SERVER_CERT, CA_CERT_1, CA_CERT_4, CA_CERT_5, NULL, }; static const char *missing_last_single_unsorted[] = { - SERVER_CERT, - CA_CERT_2, - CA_CERT_3, - CA_CERT_4, - CA_CERT_5, - NULL, + SERVER_CERT, CA_CERT_2, CA_CERT_3, CA_CERT_4, CA_CERT_5, NULL, }; static const char *missing_last_multiple_unsorted[] = { - SERVER_CERT, - CA_CERT_3, - CA_CERT_4, - CA_CERT_5, - NULL, + SERVER_CERT, CA_CERT_3, CA_CERT_4, CA_CERT_5, NULL, }; static const char *missing_skip_single_unsorted[] = { - SERVER_CERT, - CA_CERT_1, - CA_CERT_3, - CA_CERT_5, - NULL, + SERVER_CERT, CA_CERT_1, CA_CERT_3, CA_CERT_5, NULL, }; static const char *missing_skip_multiple_unsorted[] = { @@ -339,77 +303,33 @@ static const char *missing_middle_unrelated_extra_insert[] = { }; static const char *missing_middle_single_duplicate[] = { - SERVER_CERT, - SERVER_CERT, - CA_CERT_5, - CA_CERT_5, - CA_CERT_4, - CA_CERT_4, - CA_CERT_2, - CA_CERT_2, - CA_CERT_1, - CA_CERT_1, - NULL, + SERVER_CERT, SERVER_CERT, CA_CERT_5, CA_CERT_5, CA_CERT_4, CA_CERT_4, + CA_CERT_2, CA_CERT_2, CA_CERT_1, CA_CERT_1, NULL, }; static const char *missing_middle_multiple_duplicate[] = { - SERVER_CERT, - SERVER_CERT, - CA_CERT_5, - CA_CERT_5, - CA_CERT_4, - CA_CERT_4, - CA_CERT_1, - CA_CERT_1, - NULL, + SERVER_CERT, SERVER_CERT, CA_CERT_5, CA_CERT_5, CA_CERT_4, + CA_CERT_4, CA_CERT_1, CA_CERT_1, NULL, }; static const char *missing_last_single_duplicate[] = { - SERVER_CERT, - SERVER_CERT, - CA_CERT_5, - CA_CERT_5, - CA_CERT_4, - CA_CERT_4, - CA_CERT_3, - CA_CERT_3, - CA_CERT_2, - CA_CERT_2, - NULL, + SERVER_CERT, SERVER_CERT, CA_CERT_5, CA_CERT_5, CA_CERT_4, CA_CERT_4, + CA_CERT_3, CA_CERT_3, CA_CERT_2, CA_CERT_2, NULL, }; static const char *missing_last_multiple_duplicate[] = { - SERVER_CERT, - SERVER_CERT, - CA_CERT_5, - CA_CERT_5, - CA_CERT_4, - CA_CERT_4, - CA_CERT_3, - CA_CERT_3, - NULL, + SERVER_CERT, SERVER_CERT, CA_CERT_5, CA_CERT_5, CA_CERT_4, + CA_CERT_4, CA_CERT_3, CA_CERT_3, NULL, }; static const char *missing_skip_single_duplicate[] = { - SERVER_CERT, - SERVER_CERT, - CA_CERT_5, - CA_CERT_5, - CA_CERT_3, - CA_CERT_3, - CA_CERT_1, - CA_CERT_1, - NULL, + SERVER_CERT, SERVER_CERT, CA_CERT_5, CA_CERT_5, CA_CERT_3, + CA_CERT_3, CA_CERT_1, CA_CERT_1, NULL, }; static const char *missing_skip_multiple_duplicate[] = { - SERVER_CERT, - SERVER_CERT, - CA_CERT_5, - CA_CERT_5, - CA_CERT_3, - CA_CERT_3, - NULL, + SERVER_CERT, SERVER_CERT, CA_CERT_5, CA_CERT_5, + CA_CERT_3, CA_CERT_3, NULL, }; static const char *missing_ca[] = { @@ -418,15 +338,8 @@ static const char *missing_ca[] = { }; static const char *middle_single_duplicate_ca[] = { - SERVER_CERT, - CA_CERT_5, - CA_CERT_0, - CA_CERT_4, - CA_CERT_0, - CA_CERT_2, - CA_CERT_0, - CA_CERT_1, - NULL, + SERVER_CERT, CA_CERT_5, CA_CERT_0, CA_CERT_4, CA_CERT_0, + CA_CERT_2, CA_CERT_0, CA_CERT_1, NULL, }; static const char *missing_middle_single_duplicate_ca_unrelated_insert[] = { @@ -442,95 +355,95 @@ static struct chains { unsigned int verify_flags; unsigned int expected_verify_result; } chains[] = { - {"middle single - no sort", missing_middle_single, - missing_middle_single_insert, missing_ca, - GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN, 0}, - {"middle multiple - no sort", missing_middle_multiple, - missing_middle_multiple_insert, missing_ca, - GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN, 0}, - {"last single - no sort", missing_last_single, - missing_last_single_insert, missing_ca, - GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN, 0}, - {"last multiple - no sort", missing_last_multiple, - missing_last_multiple_insert, missing_ca, - GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN, 0}, - {"skip single - no sort", missing_skip_single, - missing_skip_single_insert, missing_ca, - GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN, 0}, - {"skip multiple - no sort", missing_skip_multiple, - missing_skip_multiple_insert, missing_ca, - GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN, 0}, - {"middle single unsorted - no sort", missing_middle_single_unsorted, - missing_middle_single_insert, missing_ca, - GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN, - GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_NOT_FOUND}, - {"middle multiple unsorted - no sort", missing_middle_multiple_unsorted, - missing_middle_multiple_insert, missing_ca, - GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN, - GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_NOT_FOUND}, - {"last single unsorted - no sort", missing_last_single_unsorted, - missing_last_single_insert, missing_ca, - GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN, - GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_NOT_FOUND}, - {"last multiple unsorted - no sort", missing_last_multiple_unsorted, - missing_last_multiple_insert, missing_ca, - GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN, - GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_NOT_FOUND}, - {"skip single unsorted - no sort", missing_skip_single_unsorted, - missing_skip_single_insert, missing_ca, - GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN, - GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_NOT_FOUND}, - {"skip multiple unsorted - no sort", missing_skip_multiple_unsorted, - missing_skip_multiple_insert, missing_ca, - GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN, - GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_NOT_FOUND}, - {"middle single", missing_middle_single, missing_middle_single_insert, - missing_ca, 0, 0}, - {"middle multiple", missing_middle_multiple, - missing_middle_multiple_insert, missing_ca, 0, 0}, - {"last single", missing_last_single, missing_last_single_insert, - missing_ca, 0, 0}, - {"last multiple", missing_last_multiple, missing_last_multiple_insert, - missing_ca, 0, 0}, - {"skip single", missing_skip_single, missing_skip_single_insert, - missing_ca, 0, 0}, - {"skip multiple", missing_skip_multiple, missing_skip_multiple_insert, - missing_ca, 0, 0}, - {"middle single unsorted", missing_middle_single_unsorted, - missing_middle_single_insert, missing_ca, 0, 0}, - {"middle multiple unsorted", missing_middle_multiple_unsorted, - missing_middle_multiple_insert, missing_ca, 0, 0}, - {"last single unsorted", missing_last_single_unsorted, - missing_last_single_insert, missing_ca, 0, 0}, - {"last multiple unsorted", missing_last_multiple_unsorted, - missing_last_multiple_insert, missing_ca, 0, 0}, - {"skip single unsorted", missing_skip_single_unsorted, - missing_skip_single_insert, missing_ca, 0, 0}, - {"skip multiple unsorted", missing_skip_multiple_unsorted, - missing_skip_multiple_insert, missing_ca, 0, 0}, - {"unrelated", missing_middle_single, missing_middle_unrelated_insert, - missing_ca, 0, GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_NOT_FOUND}, - {"unrelated extra", missing_middle_single, - missing_middle_unrelated_extra_insert, missing_ca, 0, 0}, - {"middle single duplicate", missing_middle_single_duplicate, - missing_middle_single_insert, missing_ca, 0, 0}, - {"middle multiple duplicate", missing_middle_multiple_duplicate, - missing_middle_multiple_insert, missing_ca, 0, 0}, - {"last single duplicate", missing_last_single_duplicate, - missing_last_single_insert, missing_ca, 0, 0}, - {"last multiple duplicate", missing_last_multiple_duplicate, - missing_last_multiple_insert, missing_ca, 0, 0}, - {"skip single duplicate", missing_skip_single_duplicate, - missing_skip_single_insert, missing_ca, 0, 0}, - {"skip multiple duplicate", missing_skip_multiple_duplicate, - missing_skip_multiple_insert, missing_ca, 0, 0}, - {"middle single duplicate ca", middle_single_duplicate_ca, - missing_middle_single_insert, missing_ca, 0, 0}, - {"middle single duplicate ca - insert unrelated", - middle_single_duplicate_ca, - missing_middle_single_duplicate_ca_unrelated_insert, missing_ca, 0, - GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_NOT_FOUND}, - {NULL, NULL, NULL, NULL}, + { "middle single - no sort", missing_middle_single, + missing_middle_single_insert, missing_ca, + GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN, 0 }, + { "middle multiple - no sort", missing_middle_multiple, + missing_middle_multiple_insert, missing_ca, + GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN, 0 }, + { "last single - no sort", missing_last_single, + missing_last_single_insert, missing_ca, + GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN, 0 }, + { "last multiple - no sort", missing_last_multiple, + missing_last_multiple_insert, missing_ca, + GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN, 0 }, + { "skip single - no sort", missing_skip_single, + missing_skip_single_insert, missing_ca, + GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN, 0 }, + { "skip multiple - no sort", missing_skip_multiple, + missing_skip_multiple_insert, missing_ca, + GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN, 0 }, + { "middle single unsorted - no sort", missing_middle_single_unsorted, + missing_middle_single_insert, missing_ca, + GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN, + GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_NOT_FOUND }, + { "middle multiple unsorted - no sort", + missing_middle_multiple_unsorted, missing_middle_multiple_insert, + missing_ca, GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN, + GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_NOT_FOUND }, + { "last single unsorted - no sort", missing_last_single_unsorted, + missing_last_single_insert, missing_ca, + GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN, + GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_NOT_FOUND }, + { "last multiple unsorted - no sort", missing_last_multiple_unsorted, + missing_last_multiple_insert, missing_ca, + GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN, + GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_NOT_FOUND }, + { "skip single unsorted - no sort", missing_skip_single_unsorted, + missing_skip_single_insert, missing_ca, + GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN, + GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_NOT_FOUND }, + { "skip multiple unsorted - no sort", missing_skip_multiple_unsorted, + missing_skip_multiple_insert, missing_ca, + GNUTLS_VERIFY_DO_NOT_ALLOW_UNSORTED_CHAIN, + GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_NOT_FOUND }, + { "middle single", missing_middle_single, missing_middle_single_insert, + missing_ca, 0, 0 }, + { "middle multiple", missing_middle_multiple, + missing_middle_multiple_insert, missing_ca, 0, 0 }, + { "last single", missing_last_single, missing_last_single_insert, + missing_ca, 0, 0 }, + { "last multiple", missing_last_multiple, missing_last_multiple_insert, + missing_ca, 0, 0 }, + { "skip single", missing_skip_single, missing_skip_single_insert, + missing_ca, 0, 0 }, + { "skip multiple", missing_skip_multiple, missing_skip_multiple_insert, + missing_ca, 0, 0 }, + { "middle single unsorted", missing_middle_single_unsorted, + missing_middle_single_insert, missing_ca, 0, 0 }, + { "middle multiple unsorted", missing_middle_multiple_unsorted, + missing_middle_multiple_insert, missing_ca, 0, 0 }, + { "last single unsorted", missing_last_single_unsorted, + missing_last_single_insert, missing_ca, 0, 0 }, + { "last multiple unsorted", missing_last_multiple_unsorted, + missing_last_multiple_insert, missing_ca, 0, 0 }, + { "skip single unsorted", missing_skip_single_unsorted, + missing_skip_single_insert, missing_ca, 0, 0 }, + { "skip multiple unsorted", missing_skip_multiple_unsorted, + missing_skip_multiple_insert, missing_ca, 0, 0 }, + { "unrelated", missing_middle_single, missing_middle_unrelated_insert, + missing_ca, 0, GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_NOT_FOUND }, + { "unrelated extra", missing_middle_single, + missing_middle_unrelated_extra_insert, missing_ca, 0, 0 }, + { "middle single duplicate", missing_middle_single_duplicate, + missing_middle_single_insert, missing_ca, 0, 0 }, + { "middle multiple duplicate", missing_middle_multiple_duplicate, + missing_middle_multiple_insert, missing_ca, 0, 0 }, + { "last single duplicate", missing_last_single_duplicate, + missing_last_single_insert, missing_ca, 0, 0 }, + { "last multiple duplicate", missing_last_multiple_duplicate, + missing_last_multiple_insert, missing_ca, 0, 0 }, + { "skip single duplicate", missing_skip_single_duplicate, + missing_skip_single_insert, missing_ca, 0, 0 }, + { "skip multiple duplicate", missing_skip_multiple_duplicate, + missing_skip_multiple_insert, missing_ca, 0, 0 }, + { "middle single duplicate ca", middle_single_duplicate_ca, + missing_middle_single_insert, missing_ca, 0, 0 }, + { "middle single duplicate ca - insert unrelated", + middle_single_duplicate_ca, + missing_middle_single_duplicate_ca_unrelated_insert, missing_ca, 0, + GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_NOT_FOUND }, + { NULL, NULL, NULL, NULL }, }; -#endif /* GNUTLS_TESTS_TEST_CHAINS_ISSUER_H */ +#endif /* GNUTLS_TESTS_TEST_CHAINS_ISSUER_H */ diff --git a/tests/test-chains.h b/tests/test-chains.h index 69d430e65f..9ce23764da 100644 --- a/tests/test-chains.h +++ b/tests/test-chains.h @@ -21,7 +21,7 @@ */ #ifndef GNUTLS_TESTS_TEST_CHAINS_H -# define GNUTLS_TESTS_TEST_CHAINS_H +#define GNUTLS_TESTS_TEST_CHAINS_H #define MAX_CHAIN 10 @@ -364,7 +364,6 @@ static const char *rsa_pss_chain_with_diff_mgf_oid_fail[] = { "-----END CERTIFICATE-----\n" }; - static const char *rsa_pss_chain_increasing_salt_size_ok[] = { "-----BEGIN CERTIFICATE-----\n" "MIIEsTCCAumgAwIBAgIMWXnOxy72g1dtZFCEMD0GCSqGSIb3DQEBCjAwoA0wCwYJ\n" @@ -1251,2185 +1250,2187 @@ static const char *unknown_critical_extension_on_root[] = { /* the key purpose in the intermediate certificate is not the expected one */ static const char *kp_fail1[] = { - "-----BEGIN CERTIFICATE-----\n" - "MIIDOjCCAiKgAwIBAgIMVB/VrzLxJphTIbssMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTEwIhgPMjAxNDA5MjIwNzU0MjNaGA85OTk5MTIzMTIzNTk1OVow\n" - "EzERMA8GA1UEAxMIc2VydmVyLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" - "AoIBAQCjtW076msqq69wke2Nc8NMD6UpxVQ1oteCh91lhIgGS+KBunt+C1Hfnipr\n" - "iTEC0A7/DWGynWZBcK8LHbVyG32fP45S7BcR1SimbE0HD1aWFSboQegghrF+NISG\n" - "HJgUTvTvUKn8pEUxowHfU3eGM3er4QZ7hyerijOb8/W2PFqkDjEZse6uPzKOoawL\n" - "Trm88cCuzSwKuE3Fftvc6tfzorXVKiFIGlbNBw+bpCVUMpjx4w5Ug4BbJpD/e7Hf\n" - "U+BCkjfKzWMDJ54rUQLbYUTh4QknHUoZ0W+RMKpeEM4esHt7HdJtZYKh/Lzi5GjB\n" - "VRAfAA+5khCRwC2uJv1cpzqVjDOHAgMBAAGjgY0wgYowDAYDVR0TAQH/BAIwADAU\n" - "BgNVHREEDTALgglsb2NhbGhvc3QwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYDVR0P\n" - "AQH/BAUDAwegADAdBgNVHQ4EFgQU7Vhq5oDQ/UgzdS+yRZGbBuD5GxcwHwYDVR0j\n" - "BBgwFoAUWXJAO7Nmy8yMdi66LZQGgaO+plkwDQYJKoZIhvcNAQELBQADggEBABSD\n" - "xzc5ZeUpD+6dvIwptMYLLL5qMI5/GmhSHRuI7pPkf7JMOrfOfPaDRKJY2HIoHRB+\n" - "68iUeE+C3I17lpuXcTGU4OvLrqBQ19orSfWvaQMl8yOR0Uzjn98jc4wuA2nMOnBu\n" - "nV8Yx/rJvBK/uJYBjDaMdKtddBvdUoaOco8tflOLDBz7aBKTO31qynKGWgtPDasG\n" - "DsshOcDgstMwhcBXbIrliDvDhBeWZnjG6E+9yf1ppUoVMp8UU6H12lA3en1GzI3v\n" - "E9NHhkJkFk6uUIp09sWLfw/MGiU/rIb9Kj7qjOoE0RAirOJdqSnb+XRwtD5U8u2Y\n" - "JcxB7MEBdJsNPbxRVtc=\n" - "-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\n" - "MIIDFjCCAf6gAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTQwOTIyMDc1NDIzWhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCyxSDH68ZW2CHV\n" - "6aozE8LMXnOZXDOuli49867VsS7SLr49jxL6jzLx/oJN3JfITcn+ohYNifnA7TBa\n" - "VeDSXMTG9tJrU8FlOTCk2Vsc939YiJ9tKNX4rPD+OeSbWgxOnVlkI5zZYnq/+i1E\n" - "UvahCHyP93GXl0zR9hsSptJPD27mX653clPqPoTNBA+qSDTb/GK0Yvgfioaqk0PO\n" - "q8pcKjZ2N+qg7st+y5Rj/92g9E6vpdHt9DBfL1THkeaJ0VKfvsea8fj1y1AwwWvT\n" - "9TWIYCLCiYYtMv2Oqsf3lMMU+Zs5DO1FqHglXrnwjGMN6tf57OYol72Pih3enejM\n" - "Syb2U2z3AgMBAAGjeTB3MA8GA1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYB\n" - "BQUHAwkwDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQUWXJAO7Nmy8yMdi66LZQG\n" - "gaO+plkwHwYDVR0jBBgwFoAU8DKVyOiO2uYcwEgw+8kRGgRXCPYwDQYJKoZIhvcN\n" - "AQELBQADggEBAHudcSXdtTdRoMkxRZUxPu3RaJFaFJr+y0SU+3gBBjbMuYIUD5b5\n" - "neTl5NDwtgPQS41ldf7oMVWaFGdV6OZzkfPqWgNCsDPy7xSGHXLQ11SSNsw+J9mW\n" - "zVdiM+BQOWvd4WJ0FKJ+pO1WVyTiIaqnSmETzgviX93YueV53h7Z02sGifp4X2Xh\n" - "aauF8xrG62ELNBC5kYFkAWrnNtSMuykbpfZT+l4nFI9ytxHLRFMaH2jpbfdL0pmQ\n" - "oktFJ1fln6N0S71doSUTvfy2iPcvVqjIKW6YD/Pyrr6ThEbVSGzY4FogzUMQf3fN\n" - "J2Q6Eb+S3ZB28Sm377QU5XKQ1ANpOa4ozHk=\n" - "-----END CERTIFICATE-----\n", - NULL, - "-----BEGIN CERTIFICATE-----\n" - "MIIC9TCCAd2gAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTQwOTIyMDc1NDIzWhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYp4Ek815xc7wy\n" - "5AEJ2AzJSyTnVWR4HTsaWBOVGCpE7Jrz3hHPUzE/9gRM1Oq5ROWJ7DUVFoD9pP8A\n" - "if2hRYwSqCNaMswMj3ReDLm2iKROrFhYR9Rr6kcucmRDcrN1SqmmIvZT80uxPXhT\n" - "TRVWYHc9kjGvgC3U16O+265d44mgxGw2UMwMirh5X5u6JFrfTShBXj08UJoNsj+1\n" - "6Tp/x6+vO8iaGWcRPetAWzwMGNSH4CanWuHZBdL7jLV/OamfvKhBHhEGF/JN1KDn\n" - "MSLrQJib8T2WVfVdmLWM6FbDiw2i1KeleCij354MNuI+Azr8aTJma5cI1BWU5Ndq\n" - "tbHShdCxAgMBAAGjWDBWMA8GA1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYB\n" - "BQUHAwEwDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQU8DKVyOiO2uYcwEgw+8kR\n" - "GgRXCPYwDQYJKoZIhvcNAQELBQADggEBAD4RUNg3EQ5yJ1LfXWKFTXIhSg6B92Y8\n" - "QTSq+1RWEDP51J7i60A0yTDZi0XZUrfNIv+0gzw8F9l/QEWM+IXXnHUhhluZW/xf\n" - "PiQPtz3Tv5uMIxs24vMIZYeMzXJ+N1rY2JbYsEWhkfSsJA8LD08gw0azlPKx/wXy\n" - "aBlknDfeCcrpXhnJdpMxj/N7nLPTQuPe7/VmZjYc8VkopjKMrZS+3KcEoXbr5Zjr\n" - "zm2mY/IHu6AZgtsWMhakONbH6I9rsZt5VlTPO72VmkjYtHhFfvjs2fPH1Gdu52y7\n" - "P4gcTXWeMficO8uzeHv17J0+qBBYxRe5Fkri1i1JRjJcBqVaK3JPUzQ=\n" - "-----END CERTIFICATE-----\n"}; + "-----BEGIN CERTIFICATE-----\n" + "MIIDOjCCAiKgAwIBAgIMVB/VrzLxJphTIbssMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTEwIhgPMjAxNDA5MjIwNzU0MjNaGA85OTk5MTIzMTIzNTk1OVow\n" + "EzERMA8GA1UEAxMIc2VydmVyLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" + "AoIBAQCjtW076msqq69wke2Nc8NMD6UpxVQ1oteCh91lhIgGS+KBunt+C1Hfnipr\n" + "iTEC0A7/DWGynWZBcK8LHbVyG32fP45S7BcR1SimbE0HD1aWFSboQegghrF+NISG\n" + "HJgUTvTvUKn8pEUxowHfU3eGM3er4QZ7hyerijOb8/W2PFqkDjEZse6uPzKOoawL\n" + "Trm88cCuzSwKuE3Fftvc6tfzorXVKiFIGlbNBw+bpCVUMpjx4w5Ug4BbJpD/e7Hf\n" + "U+BCkjfKzWMDJ54rUQLbYUTh4QknHUoZ0W+RMKpeEM4esHt7HdJtZYKh/Lzi5GjB\n" + "VRAfAA+5khCRwC2uJv1cpzqVjDOHAgMBAAGjgY0wgYowDAYDVR0TAQH/BAIwADAU\n" + "BgNVHREEDTALgglsb2NhbGhvc3QwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYDVR0P\n" + "AQH/BAUDAwegADAdBgNVHQ4EFgQU7Vhq5oDQ/UgzdS+yRZGbBuD5GxcwHwYDVR0j\n" + "BBgwFoAUWXJAO7Nmy8yMdi66LZQGgaO+plkwDQYJKoZIhvcNAQELBQADggEBABSD\n" + "xzc5ZeUpD+6dvIwptMYLLL5qMI5/GmhSHRuI7pPkf7JMOrfOfPaDRKJY2HIoHRB+\n" + "68iUeE+C3I17lpuXcTGU4OvLrqBQ19orSfWvaQMl8yOR0Uzjn98jc4wuA2nMOnBu\n" + "nV8Yx/rJvBK/uJYBjDaMdKtddBvdUoaOco8tflOLDBz7aBKTO31qynKGWgtPDasG\n" + "DsshOcDgstMwhcBXbIrliDvDhBeWZnjG6E+9yf1ppUoVMp8UU6H12lA3en1GzI3v\n" + "E9NHhkJkFk6uUIp09sWLfw/MGiU/rIb9Kj7qjOoE0RAirOJdqSnb+XRwtD5U8u2Y\n" + "JcxB7MEBdJsNPbxRVtc=\n" + "-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\n" + "MIIDFjCCAf6gAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwOTIyMDc1NDIzWhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCyxSDH68ZW2CHV\n" + "6aozE8LMXnOZXDOuli49867VsS7SLr49jxL6jzLx/oJN3JfITcn+ohYNifnA7TBa\n" + "VeDSXMTG9tJrU8FlOTCk2Vsc939YiJ9tKNX4rPD+OeSbWgxOnVlkI5zZYnq/+i1E\n" + "UvahCHyP93GXl0zR9hsSptJPD27mX653clPqPoTNBA+qSDTb/GK0Yvgfioaqk0PO\n" + "q8pcKjZ2N+qg7st+y5Rj/92g9E6vpdHt9DBfL1THkeaJ0VKfvsea8fj1y1AwwWvT\n" + "9TWIYCLCiYYtMv2Oqsf3lMMU+Zs5DO1FqHglXrnwjGMN6tf57OYol72Pih3enejM\n" + "Syb2U2z3AgMBAAGjeTB3MA8GA1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYB\n" + "BQUHAwkwDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQUWXJAO7Nmy8yMdi66LZQG\n" + "gaO+plkwHwYDVR0jBBgwFoAU8DKVyOiO2uYcwEgw+8kRGgRXCPYwDQYJKoZIhvcN\n" + "AQELBQADggEBAHudcSXdtTdRoMkxRZUxPu3RaJFaFJr+y0SU+3gBBjbMuYIUD5b5\n" + "neTl5NDwtgPQS41ldf7oMVWaFGdV6OZzkfPqWgNCsDPy7xSGHXLQ11SSNsw+J9mW\n" + "zVdiM+BQOWvd4WJ0FKJ+pO1WVyTiIaqnSmETzgviX93YueV53h7Z02sGifp4X2Xh\n" + "aauF8xrG62ELNBC5kYFkAWrnNtSMuykbpfZT+l4nFI9ytxHLRFMaH2jpbfdL0pmQ\n" + "oktFJ1fln6N0S71doSUTvfy2iPcvVqjIKW6YD/Pyrr6ThEbVSGzY4FogzUMQf3fN\n" + "J2Q6Eb+S3ZB28Sm377QU5XKQ1ANpOa4ozHk=\n" + "-----END CERTIFICATE-----\n", + NULL, + "-----BEGIN CERTIFICATE-----\n" + "MIIC9TCCAd2gAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwOTIyMDc1NDIzWhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYp4Ek815xc7wy\n" + "5AEJ2AzJSyTnVWR4HTsaWBOVGCpE7Jrz3hHPUzE/9gRM1Oq5ROWJ7DUVFoD9pP8A\n" + "if2hRYwSqCNaMswMj3ReDLm2iKROrFhYR9Rr6kcucmRDcrN1SqmmIvZT80uxPXhT\n" + "TRVWYHc9kjGvgC3U16O+265d44mgxGw2UMwMirh5X5u6JFrfTShBXj08UJoNsj+1\n" + "6Tp/x6+vO8iaGWcRPetAWzwMGNSH4CanWuHZBdL7jLV/OamfvKhBHhEGF/JN1KDn\n" + "MSLrQJib8T2WVfVdmLWM6FbDiw2i1KeleCij354MNuI+Azr8aTJma5cI1BWU5Ndq\n" + "tbHShdCxAgMBAAGjWDBWMA8GA1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYB\n" + "BQUHAwEwDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQU8DKVyOiO2uYcwEgw+8kR\n" + "GgRXCPYwDQYJKoZIhvcNAQELBQADggEBAD4RUNg3EQ5yJ1LfXWKFTXIhSg6B92Y8\n" + "QTSq+1RWEDP51J7i60A0yTDZi0XZUrfNIv+0gzw8F9l/QEWM+IXXnHUhhluZW/xf\n" + "PiQPtz3Tv5uMIxs24vMIZYeMzXJ+N1rY2JbYsEWhkfSsJA8LD08gw0azlPKx/wXy\n" + "aBlknDfeCcrpXhnJdpMxj/N7nLPTQuPe7/VmZjYc8VkopjKMrZS+3KcEoXbr5Zjr\n" + "zm2mY/IHu6AZgtsWMhakONbH6I9rsZt5VlTPO72VmkjYtHhFfvjs2fPH1Gdu52y7\n" + "P4gcTXWeMficO8uzeHv17J0+qBBYxRe5Fkri1i1JRjJcBqVaK3JPUzQ=\n" + "-----END CERTIFICATE-----\n" +}; /* the key purpose in the anchor certificate is not the expected one */ static const char *kp_fail2[] = { - "-----BEGIN CERTIFICATE-----\n" - "MIIDIzCCAgugAwIBAgIMVB/V7wN6fXUuqVU3MA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTEwIhgPMjAxNDA5MjIwNzU1MjdaGA85OTk5MTIzMTIzNTk1OVow\n" - "EzERMA8GA1UEAxMIc2VydmVyLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" - "AoIBAQDlUn8aFZ8w0fXI0ewO8+UQ0KKw1hUbH9A7DLJKj/bEyFepKh7JKnBTugs8\n" - "LEE0BKxMjC2smx5sbIKPGRljva6qST6j52HjWQfVMjL4u3M8eH9y+t/ltatMUZ6a\n" - "GFpchgNNp66/PW5F2aar73H+KpIBT+Lz0mfpjY48LS+c/ZaLfufbbJ49eNPIZPgk\n" - "nsrX+41YCC3axlUCXeBxdAkCaE3ff5G/pWBPKg+Mx7iS4bjvOAPgjX8cM/ZqLfP5\n" - "5o+AQqocXw1/uouvpO7rsww+0PgVQnZxoVX2QK3i8l2kIoIBLNaSLTx617tlKZgL\n" - "6KW+6B4BJePzNN5UsOgWMo4ZIq9pAgMBAAGjdzB1MAwGA1UdEwEB/wQCMAAwFAYD\n" - "VR0RBA0wC4IJbG9jYWxob3N0MA8GA1UdDwEB/wQFAwMHoAAwHQYDVR0OBBYEFJBE\n" - "Ci49lpyQRB7rCapUONuivibPMB8GA1UdIwQYMBaAFOjA+VXcj2Ujv5sKm7aczyNr\n" - "bTvOMA0GCSqGSIb3DQEBCwUAA4IBAQAUnlwhZzSUkD4IZ3g4HgfGD0Tlf7ZMZbUw\n" - "wtdM9sGzYS9n4r2Wn1pVHEzlzqyI1UCnZq2cqYcDfLUncIBYTOveGyrkzq791Mnx\n" - "1HbmcsjQbEWr/ywCEX55ZWGiDrLkK85TRS+BYNVA4sZnAzvzKwwKOMOGfiKcj7rq\n" - "XBWpUSbRua29uQOk+P1US10bxiD777OZtp+woJlAUPaB3U4XZsbCCbl/ln2BgpoP\n" - "61Qn3BdnfSrl+BsjlpDBUItnyVICCRRH109XpHmvXC0SnceGnl0S0rZhFXMZ5uhK\n" - "icfV5FLumEOPw+pmFIY9z1B/e/EQfbWuhycQT2J5R1RfrwMbRI8D\n" - "-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\n" - "MIIDFjCCAf6gAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTQwOTIyMDc1NTI2WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvp14uRd38IoFu\n" - "CW+O/T5k4eLDbll8hZkoJkV6fm7oGQ0LcZRvhvQaHRxO50QzzNYoLMpDVw9cMMJr\n" - "cyy0C7jehOOLX4JVTWPyoynOycHTmqs9BZmjx5H/cFZRxYg9MQFmIDVj7jjaLf6u\n" - "vqDR02ab+tHesT9Zc/r/0THAqPoFio3rVXNyQpMQbsywxFRqhG0X0JkQ63xBKJQ/\n" - "ZvlfNyLnM6D1cG2Kjq1hbjyTNdofGUHY+CGuuoEAqIRnKR80rpUw5cdxy2bAjBgN\n" - "ubCD7QQlxMUmARjwAgM6lhWB+EXhbcMqZ+dmL0elmST8E8Y5sY/UkEorzigIHjr2\n" - "Tyl0/LSzAgMBAAGjeTB3MA8GA1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYB\n" - "BQUHAwkwDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQU6MD5VdyPZSO/mwqbtpzP\n" - "I2ttO84wHwYDVR0jBBgwFoAUEjFgu7hCgPDa1wiPd0d1kW33LNIwDQYJKoZIhvcN\n" - "AQELBQADggEBALB1rjTwAzC0ZFSTyGg6wYo0S/zo+RKFbezHQf+TVQ6mUjbAs6Zs\n" - "KdTm5rvWXd669RqN9pVWZhlP4gBHAe/0koIjZQ92LOkqosEGsfWbzKfy0Ey3+MWs\n" - "2d5Qwunzm7D/PnsrYCtZoNIIr0KiAMjyfW3cBB/n1vcaZDAnHnkoUWLUfsgoBFxq\n" - "yGHJU966soKKl6yMAz8+pn8SDkXFjGXNCJSEcLFq2mwSVTJO2bLDKsnknAdkJr2A\n" - "1n3vudMERHj4IjXo798Qj/qGozYECDgKLBzBN6+8HUA2r+qelNl04EI+neFaQ5bb\n" - "nU6OfwULZEc+I9iucS+6I1hXmqqI/jcBIRM=\n" - "-----END CERTIFICATE-----\n", - NULL, - "-----BEGIN CERTIFICATE-----\n" - "MIIC9TCCAd2gAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTQwOTIyMDc1NTI2WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW9zXIvd+4Qf7Q\n" - "dzGbDAR+tc8rOac7FE+YJkWTx+fcIjtaiXaPRA5r7xCUawBAPaH4DvRqmqxwG+Js\n" - "CD3YMERMh184XHkPWX/s8P14lwmzm/k65GF7PLTcGEwQN67PgRkvV9l9iXq2Krgk\n" - "syfAd+7mTqkx63PPJgVqIa8Sk9Ljdp/GBlvAaFRpm8fvsKmRwDO+AjLTLw7Ou4kN\n" - "XQwPejnoreUb19dK5naA5ODrliv7mPc082g9o8NGULMcidGndBry5D/hYSY2zvUJ\n" - "lxy8M0LHQxdx1d3UIAY5i+sT5OUQBRvoXETZup7Ve6aoKfBc63PWiNAe7wuyGpWR\n" - "4dLskuZjAgMBAAGjWDBWMA8GA1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYB\n" - "BQUHAwEwDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUEjFgu7hCgPDa1wiPd0d1\n" - "kW33LNIwDQYJKoZIhvcNAQELBQADggEBAFePqEhyTZeZhm+1l10cre94O/0awOTk\n" - "mDLhJJY2AI9zqAgnaWXg7YAf7nz3Z1Jez02fu7F8c9r7E010YE1W+2kECuM4uN6r\n" - "9X7VnUW9VRXgiLFIi7mLFtqh+VnwR3xvnKYRFM12pXDFoWhyYfFWVUeNnXdKSN6E\n" - "4sMPBoyuSB47yit4BUkEanbnGbZG74G7ldRg9HXJqmkOJl+1HALpAstBE/MCM7TF\n" - "lXgkj8eCaQwOKcK6bl+BM7dExwmYbOY/ILsDHx3/AB/eT7K8kKwE+pAzmHPobX4A\n" - "np3FeZ2muHFtNx32NuatbIk1VI2pbskc0iQLwBl06SLDR/5Hq848MDM=\n" - "-----END CERTIFICATE-----\n"}; + "-----BEGIN CERTIFICATE-----\n" + "MIIDIzCCAgugAwIBAgIMVB/V7wN6fXUuqVU3MA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTEwIhgPMjAxNDA5MjIwNzU1MjdaGA85OTk5MTIzMTIzNTk1OVow\n" + "EzERMA8GA1UEAxMIc2VydmVyLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" + "AoIBAQDlUn8aFZ8w0fXI0ewO8+UQ0KKw1hUbH9A7DLJKj/bEyFepKh7JKnBTugs8\n" + "LEE0BKxMjC2smx5sbIKPGRljva6qST6j52HjWQfVMjL4u3M8eH9y+t/ltatMUZ6a\n" + "GFpchgNNp66/PW5F2aar73H+KpIBT+Lz0mfpjY48LS+c/ZaLfufbbJ49eNPIZPgk\n" + "nsrX+41YCC3axlUCXeBxdAkCaE3ff5G/pWBPKg+Mx7iS4bjvOAPgjX8cM/ZqLfP5\n" + "5o+AQqocXw1/uouvpO7rsww+0PgVQnZxoVX2QK3i8l2kIoIBLNaSLTx617tlKZgL\n" + "6KW+6B4BJePzNN5UsOgWMo4ZIq9pAgMBAAGjdzB1MAwGA1UdEwEB/wQCMAAwFAYD\n" + "VR0RBA0wC4IJbG9jYWxob3N0MA8GA1UdDwEB/wQFAwMHoAAwHQYDVR0OBBYEFJBE\n" + "Ci49lpyQRB7rCapUONuivibPMB8GA1UdIwQYMBaAFOjA+VXcj2Ujv5sKm7aczyNr\n" + "bTvOMA0GCSqGSIb3DQEBCwUAA4IBAQAUnlwhZzSUkD4IZ3g4HgfGD0Tlf7ZMZbUw\n" + "wtdM9sGzYS9n4r2Wn1pVHEzlzqyI1UCnZq2cqYcDfLUncIBYTOveGyrkzq791Mnx\n" + "1HbmcsjQbEWr/ywCEX55ZWGiDrLkK85TRS+BYNVA4sZnAzvzKwwKOMOGfiKcj7rq\n" + "XBWpUSbRua29uQOk+P1US10bxiD777OZtp+woJlAUPaB3U4XZsbCCbl/ln2BgpoP\n" + "61Qn3BdnfSrl+BsjlpDBUItnyVICCRRH109XpHmvXC0SnceGnl0S0rZhFXMZ5uhK\n" + "icfV5FLumEOPw+pmFIY9z1B/e/EQfbWuhycQT2J5R1RfrwMbRI8D\n" + "-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\n" + "MIIDFjCCAf6gAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwOTIyMDc1NTI2WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvp14uRd38IoFu\n" + "CW+O/T5k4eLDbll8hZkoJkV6fm7oGQ0LcZRvhvQaHRxO50QzzNYoLMpDVw9cMMJr\n" + "cyy0C7jehOOLX4JVTWPyoynOycHTmqs9BZmjx5H/cFZRxYg9MQFmIDVj7jjaLf6u\n" + "vqDR02ab+tHesT9Zc/r/0THAqPoFio3rVXNyQpMQbsywxFRqhG0X0JkQ63xBKJQ/\n" + "ZvlfNyLnM6D1cG2Kjq1hbjyTNdofGUHY+CGuuoEAqIRnKR80rpUw5cdxy2bAjBgN\n" + "ubCD7QQlxMUmARjwAgM6lhWB+EXhbcMqZ+dmL0elmST8E8Y5sY/UkEorzigIHjr2\n" + "Tyl0/LSzAgMBAAGjeTB3MA8GA1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYB\n" + "BQUHAwkwDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQU6MD5VdyPZSO/mwqbtpzP\n" + "I2ttO84wHwYDVR0jBBgwFoAUEjFgu7hCgPDa1wiPd0d1kW33LNIwDQYJKoZIhvcN\n" + "AQELBQADggEBALB1rjTwAzC0ZFSTyGg6wYo0S/zo+RKFbezHQf+TVQ6mUjbAs6Zs\n" + "KdTm5rvWXd669RqN9pVWZhlP4gBHAe/0koIjZQ92LOkqosEGsfWbzKfy0Ey3+MWs\n" + "2d5Qwunzm7D/PnsrYCtZoNIIr0KiAMjyfW3cBB/n1vcaZDAnHnkoUWLUfsgoBFxq\n" + "yGHJU966soKKl6yMAz8+pn8SDkXFjGXNCJSEcLFq2mwSVTJO2bLDKsnknAdkJr2A\n" + "1n3vudMERHj4IjXo798Qj/qGozYECDgKLBzBN6+8HUA2r+qelNl04EI+neFaQ5bb\n" + "nU6OfwULZEc+I9iucS+6I1hXmqqI/jcBIRM=\n" + "-----END CERTIFICATE-----\n", + NULL, + "-----BEGIN CERTIFICATE-----\n" + "MIIC9TCCAd2gAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwOTIyMDc1NTI2WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW9zXIvd+4Qf7Q\n" + "dzGbDAR+tc8rOac7FE+YJkWTx+fcIjtaiXaPRA5r7xCUawBAPaH4DvRqmqxwG+Js\n" + "CD3YMERMh184XHkPWX/s8P14lwmzm/k65GF7PLTcGEwQN67PgRkvV9l9iXq2Krgk\n" + "syfAd+7mTqkx63PPJgVqIa8Sk9Ljdp/GBlvAaFRpm8fvsKmRwDO+AjLTLw7Ou4kN\n" + "XQwPejnoreUb19dK5naA5ODrliv7mPc082g9o8NGULMcidGndBry5D/hYSY2zvUJ\n" + "lxy8M0LHQxdx1d3UIAY5i+sT5OUQBRvoXETZup7Ve6aoKfBc63PWiNAe7wuyGpWR\n" + "4dLskuZjAgMBAAGjWDBWMA8GA1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYB\n" + "BQUHAwEwDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUEjFgu7hCgPDa1wiPd0d1\n" + "kW33LNIwDQYJKoZIhvcNAQELBQADggEBAFePqEhyTZeZhm+1l10cre94O/0awOTk\n" + "mDLhJJY2AI9zqAgnaWXg7YAf7nz3Z1Jez02fu7F8c9r7E010YE1W+2kECuM4uN6r\n" + "9X7VnUW9VRXgiLFIi7mLFtqh+VnwR3xvnKYRFM12pXDFoWhyYfFWVUeNnXdKSN6E\n" + "4sMPBoyuSB47yit4BUkEanbnGbZG74G7ldRg9HXJqmkOJl+1HALpAstBE/MCM7TF\n" + "lXgkj8eCaQwOKcK6bl+BM7dExwmYbOY/ILsDHx3/AB/eT7K8kKwE+pAzmHPobX4A\n" + "np3FeZ2muHFtNx32NuatbIk1VI2pbskc0iQLwBl06SLDR/5Hq848MDM=\n" + "-----END CERTIFICATE-----\n" +}; /* the key purposes in all certificates match */ static const char *kp_ok[] = { - "-----BEGIN CERTIFICATE-----\n" - "MIIDIzCCAgugAwIBAgIMVB/WCA0b8cgGIwgHMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTEwIhgPMjAxNDA5MjIwNzU1NTJaGA85OTk5MTIzMTIzNTk1OVow\n" - "EzERMA8GA1UEAxMIc2VydmVyLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" - "AoIBAQDACAXnEalw36OPk35Kv8Goj7xRaeaAz4W4w1vUZ6IJCiNIzIknvlnU5vi8\n" - "MigzloHYXmhHRyfHGggoPZyGtDNiKIeZLRE81CVS9UzM4Uu5naKmU4zBMmmqEvvh\n" - "/IHHDXd+Ky89WXcI4rTFjzGzvViQinN+1E7BViFplOBvGHB0qa/v2saqyoD9HRJL\n" - "RKYbSGG85T1u8B7M7mdnBuQyk12r6lsxsNfScnkNH04jUtgL1i+Susd7zo1waqi+\n" - "lXvvW5P8gB9cfa32cXsBNGReOZoVk7G60JjLDmB+fWetVn7o42wG0gZ6TsSTsrqn\n" - "WLNMOxw3W8WLapR4vwU2BzjTZfRjAgMBAAGjdzB1MAwGA1UdEwEB/wQCMAAwFAYD\n" - "VR0RBA0wC4IJbG9jYWxob3N0MA8GA1UdDwEB/wQFAwMHoAAwHQYDVR0OBBYEFDL9\n" - "2DAwMqU6DnAE8/MOefs0AFO8MB8GA1UdIwQYMBaAFO47x5DoYJnwbtfPj/PIxKmH\n" - "JZQqMA0GCSqGSIb3DQEBCwUAA4IBAQBv3kR0R0VIu4mJ7oERxCPosJafnJPOGRMz\n" - "7F4zk3j7kwaP6OGHRJwcvxNLRAr+YIXheFDEJTwkEtA5pbir9wIG0fb+FT/o4ggs\n" - "4r2DqEZo9rZNatPMTKswbA3kmeKxRUe/AVsqeSz5Na5HNrHAGFZplUpyGMHT09f1\n" - "rHfOTlsq8dorGtE14UyJc9CY1GhHZVNFSPgyaKxSTVBr4qsD1WVKPcARWjL9Qp7E\n" - "0Gnh/O+eLdC4V7izmAfaS7kwyYiyJoWSvce4hMweEfWytOaBJMDg4pFDLabhfJpo\n" - "IZXCSc3/qHmf03lU+ntppPOXdl5niZ0YnwRmf8uYJb13EAepaiyQ\n" - "-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\n" - "MIIDFjCCAf6gAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTQwOTIyMDc1NTUyWhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCp39LwuWEO/TO7\n" - "0X9G8P3+EoWL8TDyGmAGST3+qM9pSunLkIeYnY9RtiT8/W5Tt1G7GD7RaU1J+IoL\n" - "UsEOpT/Apx2Pl3AcXLQlhrtSSZj+yBBWSvY2C+Affhr34sIEYXlE85DseSvotJb/\n" - "ebHoOFPziji95gR+l9L7aQe7RKaebTfNGbSuTzn1e1YYmnJqtNmfLcrgALblCYBm\n" - "XMlJRy5NCiWk1D/BNIGsp7Qqtx5yE/h+92bY7js7s/Vzmbhs3LmFYoKMvBOWqbrc\n" - "OQCFZxLX4jaNg64OEVOX+OqbAy+bssoMWiXAZfBz3018Xnf88lrsYVL1ZH6QDQL7\n" - "sEIZ/IBPAgMBAAGjeTB3MA8GA1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYB\n" - "BQUHAwkwDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQU7jvHkOhgmfBu18+P88jE\n" - "qYcllCowHwYDVR0jBBgwFoAU1fwQDT/4ciYUpHQqev0LK+2shjswDQYJKoZIhvcN\n" - "AQELBQADggEBABjGLC1H8oL/TjwBBbrFSwRtmbY1ElLO6lZvniWnfsOk7R/DdoBb\n" - "rzNcdUOcXoH6RbuZ4XA2ROqLb9RAor/V+A4CWHLLfToHKTYFE4vH7iN99gk+OEy6\n" - "G7CR2jYNHVikrX3eEUqdMby9+mY1K9GAz8+MojBUTPllc7Gzp0TsLzWXxvhSR84Z\n" - "zVJAS7bE605pKeABTD3b4aSskn0yt4UYEgVfw2hOnXDaZMfQLgp46z2PBuKXo+Xq\n" - "JpqbTJMuWA96J4A51RloNWBESzYhBCppeGIlGOhryqMDreVJ+MxZiuqgcbvm/7qc\n" - "QTLpHAc7dU1/X8/QgqKZIVnpWbmGRNsnTuU=\n" - "-----END CERTIFICATE-----\n", - NULL, - "-----BEGIN CERTIFICATE-----\n" - "MIIC9TCCAd2gAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTQwOTIyMDc1NTUyWhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCoyMH9n/NaDPOx\n" - "+LFRDvrIPyCpc1cCfq/CLjdcUYll6IYCDn/p2XTSFFCzeLY37yyAX7VuHcbfAQWD\n" - "0Ax8IL5EUBdQ0BVEkw5ck5pOsqbnLU991zAvUpN1C+u7ogB92atTaeDR9TUE4bMX\n" - "EW+k6us9WQQe9A/w5rnOr9baR+lvndQW6Mun+7bhhX0KdezUosTd6xfW9tOXSOso\n" - "jkk9wW+PKdRCmfmqENNLMAIkQ6RES5LTO9KFGlbaCfJjxPVmT7V53nRsY4j+v1rT\n" - "nNMK6JshtbjQCaVM3nvXXQCJ0nRtUGUcS2JeRpc1C6h+TsHPDo7kNPKGYLDi5Zps\n" - "9WOArkLVAgMBAAGjWDBWMA8GA1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYB\n" - "BQUHAwkwDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQU1fwQDT/4ciYUpHQqev0L\n" - "K+2shjswDQYJKoZIhvcNAQELBQADggEBABoD6Zl+A3DU4KTa4n+002J4ddl85O4+\n" - "Qj1NOFfGZ8qP8S5SuzlUIUzRMvIacCSXOwcBFer4UtKe5x/O5i9F1G4eKt09vGGF\n" - "+XZNjhBOOqqEVUEcwCMecdU5aDaFWx3g7ixrzOlA17Ida/j/QtJZVyhJJBm9wxfW\n" - "peFcl/aR3/PPn3eULbTTMK+mUe96PwW2FrEA7ecNBxhCkcIvt42IWqkqTD/1Mg6B\n" - "BukSgD3VAQumnglSuu+G+F+KJ0zFPdmu6IaudpQ92hM6NeK1vJiiP1Mv0ALsk04C\n" - "Byazcl/VWffXsBIE8OI3k25rFXGn5IAVxzLNGpRFhWfKXbREXICC868=\n" - "-----END CERTIFICATE-----\n"}; + "-----BEGIN CERTIFICATE-----\n" + "MIIDIzCCAgugAwIBAgIMVB/WCA0b8cgGIwgHMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTEwIhgPMjAxNDA5MjIwNzU1NTJaGA85OTk5MTIzMTIzNTk1OVow\n" + "EzERMA8GA1UEAxMIc2VydmVyLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" + "AoIBAQDACAXnEalw36OPk35Kv8Goj7xRaeaAz4W4w1vUZ6IJCiNIzIknvlnU5vi8\n" + "MigzloHYXmhHRyfHGggoPZyGtDNiKIeZLRE81CVS9UzM4Uu5naKmU4zBMmmqEvvh\n" + "/IHHDXd+Ky89WXcI4rTFjzGzvViQinN+1E7BViFplOBvGHB0qa/v2saqyoD9HRJL\n" + "RKYbSGG85T1u8B7M7mdnBuQyk12r6lsxsNfScnkNH04jUtgL1i+Susd7zo1waqi+\n" + "lXvvW5P8gB9cfa32cXsBNGReOZoVk7G60JjLDmB+fWetVn7o42wG0gZ6TsSTsrqn\n" + "WLNMOxw3W8WLapR4vwU2BzjTZfRjAgMBAAGjdzB1MAwGA1UdEwEB/wQCMAAwFAYD\n" + "VR0RBA0wC4IJbG9jYWxob3N0MA8GA1UdDwEB/wQFAwMHoAAwHQYDVR0OBBYEFDL9\n" + "2DAwMqU6DnAE8/MOefs0AFO8MB8GA1UdIwQYMBaAFO47x5DoYJnwbtfPj/PIxKmH\n" + "JZQqMA0GCSqGSIb3DQEBCwUAA4IBAQBv3kR0R0VIu4mJ7oERxCPosJafnJPOGRMz\n" + "7F4zk3j7kwaP6OGHRJwcvxNLRAr+YIXheFDEJTwkEtA5pbir9wIG0fb+FT/o4ggs\n" + "4r2DqEZo9rZNatPMTKswbA3kmeKxRUe/AVsqeSz5Na5HNrHAGFZplUpyGMHT09f1\n" + "rHfOTlsq8dorGtE14UyJc9CY1GhHZVNFSPgyaKxSTVBr4qsD1WVKPcARWjL9Qp7E\n" + "0Gnh/O+eLdC4V7izmAfaS7kwyYiyJoWSvce4hMweEfWytOaBJMDg4pFDLabhfJpo\n" + "IZXCSc3/qHmf03lU+ntppPOXdl5niZ0YnwRmf8uYJb13EAepaiyQ\n" + "-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\n" + "MIIDFjCCAf6gAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwOTIyMDc1NTUyWhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCp39LwuWEO/TO7\n" + "0X9G8P3+EoWL8TDyGmAGST3+qM9pSunLkIeYnY9RtiT8/W5Tt1G7GD7RaU1J+IoL\n" + "UsEOpT/Apx2Pl3AcXLQlhrtSSZj+yBBWSvY2C+Affhr34sIEYXlE85DseSvotJb/\n" + "ebHoOFPziji95gR+l9L7aQe7RKaebTfNGbSuTzn1e1YYmnJqtNmfLcrgALblCYBm\n" + "XMlJRy5NCiWk1D/BNIGsp7Qqtx5yE/h+92bY7js7s/Vzmbhs3LmFYoKMvBOWqbrc\n" + "OQCFZxLX4jaNg64OEVOX+OqbAy+bssoMWiXAZfBz3018Xnf88lrsYVL1ZH6QDQL7\n" + "sEIZ/IBPAgMBAAGjeTB3MA8GA1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYB\n" + "BQUHAwkwDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQU7jvHkOhgmfBu18+P88jE\n" + "qYcllCowHwYDVR0jBBgwFoAU1fwQDT/4ciYUpHQqev0LK+2shjswDQYJKoZIhvcN\n" + "AQELBQADggEBABjGLC1H8oL/TjwBBbrFSwRtmbY1ElLO6lZvniWnfsOk7R/DdoBb\n" + "rzNcdUOcXoH6RbuZ4XA2ROqLb9RAor/V+A4CWHLLfToHKTYFE4vH7iN99gk+OEy6\n" + "G7CR2jYNHVikrX3eEUqdMby9+mY1K9GAz8+MojBUTPllc7Gzp0TsLzWXxvhSR84Z\n" + "zVJAS7bE605pKeABTD3b4aSskn0yt4UYEgVfw2hOnXDaZMfQLgp46z2PBuKXo+Xq\n" + "JpqbTJMuWA96J4A51RloNWBESzYhBCppeGIlGOhryqMDreVJ+MxZiuqgcbvm/7qc\n" + "QTLpHAc7dU1/X8/QgqKZIVnpWbmGRNsnTuU=\n" + "-----END CERTIFICATE-----\n", + NULL, + "-----BEGIN CERTIFICATE-----\n" + "MIIC9TCCAd2gAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwOTIyMDc1NTUyWhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCoyMH9n/NaDPOx\n" + "+LFRDvrIPyCpc1cCfq/CLjdcUYll6IYCDn/p2XTSFFCzeLY37yyAX7VuHcbfAQWD\n" + "0Ax8IL5EUBdQ0BVEkw5ck5pOsqbnLU991zAvUpN1C+u7ogB92atTaeDR9TUE4bMX\n" + "EW+k6us9WQQe9A/w5rnOr9baR+lvndQW6Mun+7bhhX0KdezUosTd6xfW9tOXSOso\n" + "jkk9wW+PKdRCmfmqENNLMAIkQ6RES5LTO9KFGlbaCfJjxPVmT7V53nRsY4j+v1rT\n" + "nNMK6JshtbjQCaVM3nvXXQCJ0nRtUGUcS2JeRpc1C6h+TsHPDo7kNPKGYLDi5Zps\n" + "9WOArkLVAgMBAAGjWDBWMA8GA1UdEwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYB\n" + "BQUHAwkwDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQU1fwQDT/4ciYUpHQqev0L\n" + "K+2shjswDQYJKoZIhvcNAQELBQADggEBABoD6Zl+A3DU4KTa4n+002J4ddl85O4+\n" + "Qj1NOFfGZ8qP8S5SuzlUIUzRMvIacCSXOwcBFer4UtKe5x/O5i9F1G4eKt09vGGF\n" + "+XZNjhBOOqqEVUEcwCMecdU5aDaFWx3g7ixrzOlA17Ida/j/QtJZVyhJJBm9wxfW\n" + "peFcl/aR3/PPn3eULbTTMK+mUe96PwW2FrEA7ecNBxhCkcIvt42IWqkqTD/1Mg6B\n" + "BukSgD3VAQumnglSuu+G+F+KJ0zFPdmu6IaudpQ92hM6NeK1vJiiP1Mv0ALsk04C\n" + "Byazcl/VWffXsBIE8OI3k25rFXGn5IAVxzLNGpRFhWfKXbREXICC868=\n" + "-----END CERTIFICATE-----\n" +}; /* This is the same chain as modified1 but with no modification */ static const char *modified2[] = { - "-----BEGIN CERTIFICATE-----\n" - "MIIFXjCCBEagAwIBAgIQHYWDpKNVUzEFx4Pq8yjxbTANBgkqhkiG9w0BAQUFADCB\n" - "tTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" - "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n" - "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykxMDEvMC0GA1UEAxMm\n" - "VmVyaVNpZ24gQ2xhc3MgMyBTZWN1cmUgU2VydmVyIENBIC0gRzMwHhcNMTQwMjI3\n" - "MDAwMDAwWhcNMTUwMjI4MjM1OTU5WjBnMQswCQYDVQQGEwJVUzETMBEGA1UECBMK\n" - "V2FzaGluZ3RvbjEQMA4GA1UEBxQHU2VhdHRsZTEYMBYGA1UEChQPQW1hem9uLmNv\n" - "bSBJbmMuMRcwFQYDVQQDFA53d3cuYW1hem9uLmNvbTCCASIwDQYJKoZIhvcNAQEB\n" - "BQADggEPADCCAQoCggEBAJdfieOPrf4Arf1Iled/ii97407ZnjpaB5xxm49Q4Pz3\n" - "+5xmD0LYre7Cjn1A7W3ZlHki5zFVZpW9Jb/3PfSEDY5slyjkLD2jdl2gVefSthSZ\n" - "tYxb5eYv79tIEN0U9AZ8/VaGwUokl8n1MitcECxNLMe4LqoVmS29nXITTTzX5t3I\n" - "4dUeMBDNI+xgVpJSpxwzA+/L+wxoj5Sb4YJ/Y+iUknCkjX6PpaZMRWBEE0dqvG02\n" - "qlxXesAV0nmKYvjbtqAyoW6vgjP85h6gJEESIqTTZy1HOgFpO8XT05CpGDcjhP1s\n" - "TvXF7Vx1aj+xDidGLLW188G35oFKIhEyHQV2V7vzRAUCAwEAAaOCAbUwggGxMFAG\n" - "A1UdEQRJMEeCEXVlZGF0YS5hbWF6b24uY29tggphbWF6b24uY29tgghhbXpuLmNv\n" - "bYIMd3d3LmFtem4uY29tgg53d3cuYW1hem9uLmNvbTAJBgNVHRMEAjAAMA4GA1Ud\n" - "DwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwQwYDVR0g\n" - "BDwwOjA4BgpghkgBhvhFAQc2MCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZl\n" - "cmlzaWduLmNvbS9jcHMwHwYDVR0jBBgwFoAUDURcFlNEwYJ+HSCrJfQBY9i+eaUw\n" - "RQYDVR0fBD4wPDA6oDigNoY0aHR0cDovL1NWUlNlY3VyZS1HMy1jcmwudmVyaXNp\n" - "Z24uY29tL1NWUlNlY3VyZUczLmNybDB2BggrBgEFBQcBAQRqMGgwJAYIKwYBBQUH\n" - "MAGGGGh0dHA6Ly9vY3NwLnZlcmlzaWduLmNvbTBABggrBgEFBQcwAoY0aHR0cDov\n" - "L1NWUlNlY3VyZS1HMy1haWEudmVyaXNpZ24uY29tL1NWUlNlY3VyZUczLmNlcjAN\n" - "BgkqhkiG9w0BAQUFAAOCAQEAOeZfjkI0yR/nutCMHp5/uB/evkB8qIYxh1KKbhPB\n" - "TmpykmJxiLKrBBcBBu9kW5lMbNPSNclE4sCyN0dxCJHwPm7ubNUxsmDSTPTJOx0M\n" - "zl0WZVaZ7eX3nw1kj8jSoK0f5n87RzKK85MwBFsEn73Z2pDvxTcd72BE0T1UJLcU\n" - "2A5uHAJyvm2QpOWBIRKlJHIHCcu5xjj5yLnGO9id0cjOjEgj9f1Mo4hzawL5vQfk\n" - "o/xFxAsA70bk2trv54kgLvhmAW+B6OpN3Z/xB4mWNOw3G8bg/u+pCLvd8KRO5V8K\n" - "TlgO1NTaOgYC6OAF3USNMhuNZh6h5tWA3mA8rFr8ZsayhA==\n" - "-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\n" - "MIIF7DCCBNSgAwIBAgIQbsx6pacDIAm4zrz06VLUkTANBgkqhkiG9w0BAQUFADCB\n" - "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" - "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n" - "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n" - "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n" - "aG9yaXR5IC0gRzUwHhcNMTAwMjA4MDAwMDAwWhcNMjAwMjA3MjM1OTU5WjCBtTEL\n" - "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n" - "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n" - "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykxMDEvMC0GA1UEAxMmVmVy\n" - "aVNpZ24gQ2xhc3MgMyBTZWN1cmUgU2VydmVyIENBIC0gRzMwggEiMA0GCSqGSIb3\n" - "DQEBAQUAA4IBDwAwggEKAoIBAQCxh4QfwgxF9byrJZenraI+nLr2wTm4i8rCrFbG\n" - "5btljkRPTc5v7QlK1K9OEJxoiy6Ve4mbE8riNDTB81vzSXtig0iBdNGIeGwCU/m8\n" - "f0MmV1gzgzszChew0E6RJK2GfWQS3HRKNKEdCuqWHQsV/KNLO85jiND4LQyUhhDK\n" - "tpo9yus3nABINYYpUHjoRWPNGUFP9ZXse5jUxHGzUL4os4+guVOc9cosI6n9FAbo\n" - "GLSa6Dxugf3kzTU2s1HTaewSulZub5tXxYsU5w7HnO1KVGrJTcW/EbGuHGeBy0RV\n" - "M5l/JJs/U0V/hhrzPPptf4H1uErT9YU3HLWm0AnkGHs4TvoPAgMBAAGjggHfMIIB\n" - "2zA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLnZlcmlz\n" - "aWduLmNvbTASBgNVHRMBAf8ECDAGAQH/AgEAMHAGA1UdIARpMGcwZQYLYIZIAYb4\n" - "RQEHFwMwVjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2Nw\n" - "czAqBggrBgEFBQcCAjAeGhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMDQG\n" - "A1UdHwQtMCswKaAnoCWGI2h0dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUu\n" - "Y3JsMA4GA1UdDwEB/wQEAwIBBjBtBggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglp\n" - "bWFnZS9naWYwITAfMAcGBSsOAwIaBBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNo\n" - "dHRwOi8vbG9nby52ZXJpc2lnbi5jb20vdnNsb2dvLmdpZjAoBgNVHREEITAfpB0w\n" - "GzEZMBcGA1UEAxMQVmVyaVNpZ25NUEtJLTItNjAdBgNVHQ4EFgQUDURcFlNEwYJ+\n" - "HSCrJfQBY9i+eaUwHwYDVR0jBBgwFoAUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwDQYJ\n" - "KoZIhvcNAQEFBQADggEBAAyDJO/dwwzZWJz+NrbrioBL0aP3nfPMU++CnqOh5pfB\n" - "WJ11bOAdG0z60cEtBcDqbrIicFXZIDNAMwfCZYP6j0M3m+oOmmxw7vacgDvZN/R6\n" - "bezQGH1JSsqZxxkoor7YdyT3hSaGbYcFQEFn0Sc67dxIHSLNCwuLvPSxe/20majp\n" - "dirhGi2HbnTTiN0eIsbfFrYrghQKlFzyUOyvzv9iNw2tZdMGQVPtAhTItVgooazg\n" - "W+yzf5VK+wPIrSbb5mZ4EkrZn0L74ZjmQoObj49nJOhhGbXdzbULJgWOw27EyHW4\n" - "Rs/iGAZeqa6ogZpHFt4MKGwlJ7net4RYxh84HqTEy2Y=\n" - "-----END CERTIFICATE-----\n", - NULL, - "-----BEGIN CERTIFICATE-----\n" - "MIIExjCCBC+gAwIBAgIQNZcxh/OHOgcyfs5YDJt+2jANBgkqhkiG9w0BAQUFADBf\n" - "MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT\n" - "LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw\n" - "HhcNMDYxMTA4MDAwMDAwWhcNMjExMTA3MjM1OTU5WjCByjELMAkGA1UEBhMCVVMx\n" - "FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz\n" - "dCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZv\n" - "ciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAz\n" - "IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEi\n" - "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8\n" - "RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbext0uz/o9+B1fs70Pb\n" - "ZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhDY2pSS9KP6HBR\n" - "TdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/\n" - "Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNH\n" - "iDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMB\n" - "AAGjggGRMIIBjTAPBgNVHRMBAf8EBTADAQH/MDEGA1UdHwQqMCgwJqAkoCKGIGh0\n" - "dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA4GA1UdDwEB/wQEAwIBBjA9\n" - "BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVy\n" - "aXNpZ24uY29tL2NwczAdBgNVHQ4EFgQUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwNAYD\n" - "VR0lBC0wKwYJYIZIAYb4QgQBBgpghkgBhvhFAQgBBggrBgEFBQcDAQYIKwYBBQUH\n" - "AwIwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUr\n" - "DgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNp\n" - "Z24uY29tL3ZzbG9nby5naWYwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhho\n" - "dHRwOi8vb2NzcC52ZXJpc2lnbi5jb20wDQYJKoZIhvcNAQEFBQADgYEADyWuSO0b\n" - "M4VMDLXC1/5N1oMoTEFlYAALd0hxgv5/21oOIMzS6ke8ZEJhRDR0MIGBJopK90Rd\n" - "fjSAqLiD4gnXbSPdie0oCL1jWhFXCMSe2uJoKK/dUDzsgiHYAMJVRFBwQa2DF3m6\n" - "CPMr3u00HUSe0gST9MsFFy0JLS1j7/YmC3s=\n" - "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIFXjCCBEagAwIBAgIQHYWDpKNVUzEFx4Pq8yjxbTANBgkqhkiG9w0BAQUFADCB\n" + "tTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" + "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n" + "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykxMDEvMC0GA1UEAxMm\n" + "VmVyaVNpZ24gQ2xhc3MgMyBTZWN1cmUgU2VydmVyIENBIC0gRzMwHhcNMTQwMjI3\n" + "MDAwMDAwWhcNMTUwMjI4MjM1OTU5WjBnMQswCQYDVQQGEwJVUzETMBEGA1UECBMK\n" + "V2FzaGluZ3RvbjEQMA4GA1UEBxQHU2VhdHRsZTEYMBYGA1UEChQPQW1hem9uLmNv\n" + "bSBJbmMuMRcwFQYDVQQDFA53d3cuYW1hem9uLmNvbTCCASIwDQYJKoZIhvcNAQEB\n" + "BQADggEPADCCAQoCggEBAJdfieOPrf4Arf1Iled/ii97407ZnjpaB5xxm49Q4Pz3\n" + "+5xmD0LYre7Cjn1A7W3ZlHki5zFVZpW9Jb/3PfSEDY5slyjkLD2jdl2gVefSthSZ\n" + "tYxb5eYv79tIEN0U9AZ8/VaGwUokl8n1MitcECxNLMe4LqoVmS29nXITTTzX5t3I\n" + "4dUeMBDNI+xgVpJSpxwzA+/L+wxoj5Sb4YJ/Y+iUknCkjX6PpaZMRWBEE0dqvG02\n" + "qlxXesAV0nmKYvjbtqAyoW6vgjP85h6gJEESIqTTZy1HOgFpO8XT05CpGDcjhP1s\n" + "TvXF7Vx1aj+xDidGLLW188G35oFKIhEyHQV2V7vzRAUCAwEAAaOCAbUwggGxMFAG\n" + "A1UdEQRJMEeCEXVlZGF0YS5hbWF6b24uY29tggphbWF6b24uY29tgghhbXpuLmNv\n" + "bYIMd3d3LmFtem4uY29tgg53d3cuYW1hem9uLmNvbTAJBgNVHRMEAjAAMA4GA1Ud\n" + "DwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwQwYDVR0g\n" + "BDwwOjA4BgpghkgBhvhFAQc2MCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZl\n" + "cmlzaWduLmNvbS9jcHMwHwYDVR0jBBgwFoAUDURcFlNEwYJ+HSCrJfQBY9i+eaUw\n" + "RQYDVR0fBD4wPDA6oDigNoY0aHR0cDovL1NWUlNlY3VyZS1HMy1jcmwudmVyaXNp\n" + "Z24uY29tL1NWUlNlY3VyZUczLmNybDB2BggrBgEFBQcBAQRqMGgwJAYIKwYBBQUH\n" + "MAGGGGh0dHA6Ly9vY3NwLnZlcmlzaWduLmNvbTBABggrBgEFBQcwAoY0aHR0cDov\n" + "L1NWUlNlY3VyZS1HMy1haWEudmVyaXNpZ24uY29tL1NWUlNlY3VyZUczLmNlcjAN\n" + "BgkqhkiG9w0BAQUFAAOCAQEAOeZfjkI0yR/nutCMHp5/uB/evkB8qIYxh1KKbhPB\n" + "TmpykmJxiLKrBBcBBu9kW5lMbNPSNclE4sCyN0dxCJHwPm7ubNUxsmDSTPTJOx0M\n" + "zl0WZVaZ7eX3nw1kj8jSoK0f5n87RzKK85MwBFsEn73Z2pDvxTcd72BE0T1UJLcU\n" + "2A5uHAJyvm2QpOWBIRKlJHIHCcu5xjj5yLnGO9id0cjOjEgj9f1Mo4hzawL5vQfk\n" + "o/xFxAsA70bk2trv54kgLvhmAW+B6OpN3Z/xB4mWNOw3G8bg/u+pCLvd8KRO5V8K\n" + "TlgO1NTaOgYC6OAF3USNMhuNZh6h5tWA3mA8rFr8ZsayhA==\n" + "-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\n" + "MIIF7DCCBNSgAwIBAgIQbsx6pacDIAm4zrz06VLUkTANBgkqhkiG9w0BAQUFADCB\n" + "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" + "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n" + "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n" + "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n" + "aG9yaXR5IC0gRzUwHhcNMTAwMjA4MDAwMDAwWhcNMjAwMjA3MjM1OTU5WjCBtTEL\n" + "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n" + "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n" + "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykxMDEvMC0GA1UEAxMmVmVy\n" + "aVNpZ24gQ2xhc3MgMyBTZWN1cmUgU2VydmVyIENBIC0gRzMwggEiMA0GCSqGSIb3\n" + "DQEBAQUAA4IBDwAwggEKAoIBAQCxh4QfwgxF9byrJZenraI+nLr2wTm4i8rCrFbG\n" + "5btljkRPTc5v7QlK1K9OEJxoiy6Ve4mbE8riNDTB81vzSXtig0iBdNGIeGwCU/m8\n" + "f0MmV1gzgzszChew0E6RJK2GfWQS3HRKNKEdCuqWHQsV/KNLO85jiND4LQyUhhDK\n" + "tpo9yus3nABINYYpUHjoRWPNGUFP9ZXse5jUxHGzUL4os4+guVOc9cosI6n9FAbo\n" + "GLSa6Dxugf3kzTU2s1HTaewSulZub5tXxYsU5w7HnO1KVGrJTcW/EbGuHGeBy0RV\n" + "M5l/JJs/U0V/hhrzPPptf4H1uErT9YU3HLWm0AnkGHs4TvoPAgMBAAGjggHfMIIB\n" + "2zA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLnZlcmlz\n" + "aWduLmNvbTASBgNVHRMBAf8ECDAGAQH/AgEAMHAGA1UdIARpMGcwZQYLYIZIAYb4\n" + "RQEHFwMwVjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2Nw\n" + "czAqBggrBgEFBQcCAjAeGhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMDQG\n" + "A1UdHwQtMCswKaAnoCWGI2h0dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUu\n" + "Y3JsMA4GA1UdDwEB/wQEAwIBBjBtBggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglp\n" + "bWFnZS9naWYwITAfMAcGBSsOAwIaBBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNo\n" + "dHRwOi8vbG9nby52ZXJpc2lnbi5jb20vdnNsb2dvLmdpZjAoBgNVHREEITAfpB0w\n" + "GzEZMBcGA1UEAxMQVmVyaVNpZ25NUEtJLTItNjAdBgNVHQ4EFgQUDURcFlNEwYJ+\n" + "HSCrJfQBY9i+eaUwHwYDVR0jBBgwFoAUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwDQYJ\n" + "KoZIhvcNAQEFBQADggEBAAyDJO/dwwzZWJz+NrbrioBL0aP3nfPMU++CnqOh5pfB\n" + "WJ11bOAdG0z60cEtBcDqbrIicFXZIDNAMwfCZYP6j0M3m+oOmmxw7vacgDvZN/R6\n" + "bezQGH1JSsqZxxkoor7YdyT3hSaGbYcFQEFn0Sc67dxIHSLNCwuLvPSxe/20majp\n" + "dirhGi2HbnTTiN0eIsbfFrYrghQKlFzyUOyvzv9iNw2tZdMGQVPtAhTItVgooazg\n" + "W+yzf5VK+wPIrSbb5mZ4EkrZn0L74ZjmQoObj49nJOhhGbXdzbULJgWOw27EyHW4\n" + "Rs/iGAZeqa6ogZpHFt4MKGwlJ7net4RYxh84HqTEy2Y=\n" + "-----END CERTIFICATE-----\n", + NULL, + "-----BEGIN CERTIFICATE-----\n" + "MIIExjCCBC+gAwIBAgIQNZcxh/OHOgcyfs5YDJt+2jANBgkqhkiG9w0BAQUFADBf\n" + "MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT\n" + "LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw\n" + "HhcNMDYxMTA4MDAwMDAwWhcNMjExMTA3MjM1OTU5WjCByjELMAkGA1UEBhMCVVMx\n" + "FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz\n" + "dCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZv\n" + "ciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAz\n" + "IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEi\n" + "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8\n" + "RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbext0uz/o9+B1fs70Pb\n" + "ZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhDY2pSS9KP6HBR\n" + "TdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/\n" + "Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNH\n" + "iDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMB\n" + "AAGjggGRMIIBjTAPBgNVHRMBAf8EBTADAQH/MDEGA1UdHwQqMCgwJqAkoCKGIGh0\n" + "dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA4GA1UdDwEB/wQEAwIBBjA9\n" + "BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVy\n" + "aXNpZ24uY29tL2NwczAdBgNVHQ4EFgQUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwNAYD\n" + "VR0lBC0wKwYJYIZIAYb4QgQBBgpghkgBhvhFAQgBBggrBgEFBQcDAQYIKwYBBQUH\n" + "AwIwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUr\n" + "DgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNp\n" + "Z24uY29tL3ZzbG9nby5naWYwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhho\n" + "dHRwOi8vb2NzcC52ZXJpc2lnbi5jb20wDQYJKoZIhvcNAQEFBQADgYEADyWuSO0b\n" + "M4VMDLXC1/5N1oMoTEFlYAALd0hxgv5/21oOIMzS6ke8ZEJhRDR0MIGBJopK90Rd\n" + "fjSAqLiD4gnXbSPdie0oCL1jWhFXCMSe2uJoKK/dUDzsgiHYAMJVRFBwQa2DF3m6\n" + "CPMr3u00HUSe0gST9MsFFy0JLS1j7/YmC3s=\n" + "-----END CERTIFICATE-----\n" }; /* Empty intersection of 2 permitted DNS names, * non-intuitive constraints order (more specific higher) */ static const char *nc_bad0[] = { - /* Alternative DNSname: two.example.org */ - "-----BEGIN CERTIFICATE-----\n" - "MIIEJzCCAo+gAwIBAgIMV4T0BxqceieCt/KBMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTIwIBcNMTYwNzEyMTM0MzM1WhgPOTk5OTEyMzEyMzU5NTlaMBMx\n" - "ETAPBgNVBAMTCHNlcnZlci0zMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKC\n" - "AYEAm1IOBuzu9Pya9O3FKhQKus22xPlm+fVex8EV+p3IymnZGZUlDeTX5OcxCOm4\n" - "G87KNl/UQjgCB6n2FPiIYFbH9skxyvW8ZlG+M4so5yg7mwRjB8QPe0yEOLyxaLaa\n" - "uNp9icjtPJgPpIrEgppevfiP4iXrRGakzpjayazVCDTp9+XAhdWEi43mN6fgpM8V\n" - "Yc5sstkEueCjIfhApBzReMTvEUs3jCtmpqIvm07zVLpCh3sWh5MPSZtcw6UiKZdb\n" - "rRoaypznSkQDGQXCTZ92gSnkg0m86OIOHNQcxLXqfbrNJ7QZBf1wpi04s4DHNHSC\n" - "k9TpKe/dbDO4vgMgBNrcZ/9B7y95Pe+XJawG3klGhz2zGG7DmvWNygtUcM9nqk/P\n" - "f7TQhwsU4McmyxvVb09OVwk/2zEaPswv6MFvoxOskcQ5aYhJZs6wLDG3hh8yE4fr\n" - "BBvJb53flMnuSIWLfzeGUg4eeS8xP7ORApwLM0K0VGLaT4V9lpmWFLot0hv7XAcH\n" - "jeTVAgMBAAGjfTB7MAwGA1UdEwEB/wQCMAAwGgYDVR0RBBMwEYIPdHdvLmV4YW1w\n" - "bGUub3JnMA8GA1UdDwEB/wQFAwMHoAAwHQYDVR0OBBYEFERr13TeLMJ3q5QS2W4O\n" - "HiqwpM0RMB8GA1UdIwQYMBaAFDTfJRBdiC6+QinO/HA/E7TWxeHrMA0GCSqGSIb3\n" - "DQEBCwUAA4IBgQAiOgI7RgzjDBHgliXb2Q9iuCq/o/08Fz2he8AzTJ0fw+Xd+g40\n" - "HWnhZZxlnSq/XFircrHwLuMyG2B6HJ9gXWg7SI/5PG9fVz0USC0tcxKzA87iB2sx\n" - "KWzdfmzBM32ioTFEisH9YQqCVXc3Umol15r3dAZsKGRKQzYjVG8APJS4LYZTX918\n" - "Yg06jCmp+ZhyRHVhQ1NbrX9geOK8tuZoTQ/10iI1+eIF50a43qA0H8YDuyQbrZA3\n" - "ECdVIQVCUQTVlTx+JMl7DoZnm+m+BrisAAuq/4TeJwm2Es3IF4SPB/pwaZyx8YnK\n" - "xqne/auI6Rq7nfsi3owxBjjX1YamlmM6UWdvIsejsy92im2G0+J5s55yw+fCGXE5\n" - "5mItHVWOiviaPa95NU3NeD8RkUUFI568GM8GnIcSfJi1yxed8UApbCiZMbIIN8fl\n" - "5mMgyZv2QJXbJxhIiCQixn8nYsj2iaJu9Ns6zd5cFaQSmQxIEUfCiNZ9kO0xwpor\n" - "tHWgZdawxv2CfGg=\n" - "-----END CERTIFICATE-----\n", - /* Name Constraints (critical): + /* Alternative DNSname: two.example.org */ + "-----BEGIN CERTIFICATE-----\n" + "MIIEJzCCAo+gAwIBAgIMV4T0BxqceieCt/KBMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTIwIBcNMTYwNzEyMTM0MzM1WhgPOTk5OTEyMzEyMzU5NTlaMBMx\n" + "ETAPBgNVBAMTCHNlcnZlci0zMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKC\n" + "AYEAm1IOBuzu9Pya9O3FKhQKus22xPlm+fVex8EV+p3IymnZGZUlDeTX5OcxCOm4\n" + "G87KNl/UQjgCB6n2FPiIYFbH9skxyvW8ZlG+M4so5yg7mwRjB8QPe0yEOLyxaLaa\n" + "uNp9icjtPJgPpIrEgppevfiP4iXrRGakzpjayazVCDTp9+XAhdWEi43mN6fgpM8V\n" + "Yc5sstkEueCjIfhApBzReMTvEUs3jCtmpqIvm07zVLpCh3sWh5MPSZtcw6UiKZdb\n" + "rRoaypznSkQDGQXCTZ92gSnkg0m86OIOHNQcxLXqfbrNJ7QZBf1wpi04s4DHNHSC\n" + "k9TpKe/dbDO4vgMgBNrcZ/9B7y95Pe+XJawG3klGhz2zGG7DmvWNygtUcM9nqk/P\n" + "f7TQhwsU4McmyxvVb09OVwk/2zEaPswv6MFvoxOskcQ5aYhJZs6wLDG3hh8yE4fr\n" + "BBvJb53flMnuSIWLfzeGUg4eeS8xP7ORApwLM0K0VGLaT4V9lpmWFLot0hv7XAcH\n" + "jeTVAgMBAAGjfTB7MAwGA1UdEwEB/wQCMAAwGgYDVR0RBBMwEYIPdHdvLmV4YW1w\n" + "bGUub3JnMA8GA1UdDwEB/wQFAwMHoAAwHQYDVR0OBBYEFERr13TeLMJ3q5QS2W4O\n" + "HiqwpM0RMB8GA1UdIwQYMBaAFDTfJRBdiC6+QinO/HA/E7TWxeHrMA0GCSqGSIb3\n" + "DQEBCwUAA4IBgQAiOgI7RgzjDBHgliXb2Q9iuCq/o/08Fz2he8AzTJ0fw+Xd+g40\n" + "HWnhZZxlnSq/XFircrHwLuMyG2B6HJ9gXWg7SI/5PG9fVz0USC0tcxKzA87iB2sx\n" + "KWzdfmzBM32ioTFEisH9YQqCVXc3Umol15r3dAZsKGRKQzYjVG8APJS4LYZTX918\n" + "Yg06jCmp+ZhyRHVhQ1NbrX9geOK8tuZoTQ/10iI1+eIF50a43qA0H8YDuyQbrZA3\n" + "ECdVIQVCUQTVlTx+JMl7DoZnm+m+BrisAAuq/4TeJwm2Es3IF4SPB/pwaZyx8YnK\n" + "xqne/auI6Rq7nfsi3owxBjjX1YamlmM6UWdvIsejsy92im2G0+J5s55yw+fCGXE5\n" + "5mItHVWOiviaPa95NU3NeD8RkUUFI568GM8GnIcSfJi1yxed8UApbCiZMbIIN8fl\n" + "5mMgyZv2QJXbJxhIiCQixn8nYsj2iaJu9Ns6zd5cFaQSmQxIEUfCiNZ9kO0xwpor\n" + "tHWgZdawxv2CfGg=\n" + "-----END CERTIFICATE-----\n", + /* Name Constraints (critical): Permitted: DNSname: example.org */ - "-----BEGIN CERTIFICATE-----\n" - "MIIEIDCCAoigAwIBAgIBAjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0x\n" - "MCAXDTE2MDcxMjEzNDMzNVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" - "QS0yMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAtpx8p5POIgdnDbBr\n" - "fH1kByvm2PP+iN4UJhJYY1V7EMiucC/CU5HoYhi/KpBwoY+28oaISEMr0KEf/3rv\n" - "CTZRBxuqxCboK6+u/dDOlyYeM0dU57jpKmgCrETLMq92QaIEhNzv88cTaWP0OGzv\n" - "2klLqim5AJC2J/XWqHGprfdhf9GCWurMT+km7LPIClDHfwnmrPHuNhelfPCVzKpO\n" - "9S9+Lq5KpaV45DRQtMve5NjUju1q9LotEeEdlu5bnomIK3SyfS+n5AZnLNVAqmMg\n" - "kSB1ymtWqn4wiw3hCBz8biSlkeowdh37cm3j0za27R3IjFnIQLD44Ena3pTU8v+P\n" - "4/k1OML8UWXpigP5QuTSASx0fXiShHf3baY1HnEqULfYvi+IUb6wMs/3f13NVVBE\n" - "z+LsjiWlwqB0fK5lefO32cEDvtSMlIxgt3FUDCo3/rLAh4ZorURONh4MUWiODTSl\n" - "417JOLB/miH37jodViv6zfbtTvw/+GbZM9TnvHlzqvZj5nLFAgMBAAGjgYQwgYEw\n" - "DwYDVR0TAQH/BAUwAwEB/zAdBgNVHR4BAf8EEzARoA8wDYILZXhhbXBsZS5vcmcw\n" - "DwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQUNN8lEF2ILr5CKc78cD8TtNbF4esw\n" - "HwYDVR0jBBgwFoAU4SfGxDtCWqGQsk7xBIooEZNCoMYwDQYJKoZIhvcNAQELBQAD\n" - "ggGBABJZw4MHkE+8Fg+r/ET/kJ0n0NtsB57O3ogPpe/0/EWpsEJsjnRzimfu5NjS\n" - "PIcEKk/l2Ij8vbmDxb1uNsZmeYphdjb+w/D44OnxahxeLELwZPHWpJLvuf5S8bsz\n" - "Z0bZFNkDUXYbKDX8kWr1gNCKURBS344fRfe8HzZsG68stouvCuOh5pvre7mGGMJI\n" - "5/OMISmQiKIGLpUi1YOSRM25VMZ6GnzgYiN/bcZU1ph+R0lQv7/RRZ7oiaYmFBTi\n" - "FfWIE2hsJla3mbhCnUUp18MpRu4+gPirCVhNQ+ii9FPklcIhXxOrq6cqfX/YAcWO\n" - "uF70tZK/+Z7UXqGYJeQ8pdmlzjNGSH7Q6D+QKNAjZ+Ovb7zEh3NmyTT2XEykMR6+\n" - "bQYaGGcRu8Uvz4wHDaqeUuF/vgTiFaJ8kwNGX8Xb1x+ok5QrJAKZzvy59kojz8L0\n" - "ukQ6SqsvZ6SkJRbHHEh39YPNdC66O58KTiayjKgxQmVHsMOhraI1+YmPntCNBqNN\n" - "AvhLDg==\n" - "-----END CERTIFICATE-----\n", - /* Name Constraints (critical): + "-----BEGIN CERTIFICATE-----\n" + "MIIEIDCCAoigAwIBAgIBAjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0x\n" + "MCAXDTE2MDcxMjEzNDMzNVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0yMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAtpx8p5POIgdnDbBr\n" + "fH1kByvm2PP+iN4UJhJYY1V7EMiucC/CU5HoYhi/KpBwoY+28oaISEMr0KEf/3rv\n" + "CTZRBxuqxCboK6+u/dDOlyYeM0dU57jpKmgCrETLMq92QaIEhNzv88cTaWP0OGzv\n" + "2klLqim5AJC2J/XWqHGprfdhf9GCWurMT+km7LPIClDHfwnmrPHuNhelfPCVzKpO\n" + "9S9+Lq5KpaV45DRQtMve5NjUju1q9LotEeEdlu5bnomIK3SyfS+n5AZnLNVAqmMg\n" + "kSB1ymtWqn4wiw3hCBz8biSlkeowdh37cm3j0za27R3IjFnIQLD44Ena3pTU8v+P\n" + "4/k1OML8UWXpigP5QuTSASx0fXiShHf3baY1HnEqULfYvi+IUb6wMs/3f13NVVBE\n" + "z+LsjiWlwqB0fK5lefO32cEDvtSMlIxgt3FUDCo3/rLAh4ZorURONh4MUWiODTSl\n" + "417JOLB/miH37jodViv6zfbtTvw/+GbZM9TnvHlzqvZj5nLFAgMBAAGjgYQwgYEw\n" + "DwYDVR0TAQH/BAUwAwEB/zAdBgNVHR4BAf8EEzARoA8wDYILZXhhbXBsZS5vcmcw\n" + "DwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQUNN8lEF2ILr5CKc78cD8TtNbF4esw\n" + "HwYDVR0jBBgwFoAU4SfGxDtCWqGQsk7xBIooEZNCoMYwDQYJKoZIhvcNAQELBQAD\n" + "ggGBABJZw4MHkE+8Fg+r/ET/kJ0n0NtsB57O3ogPpe/0/EWpsEJsjnRzimfu5NjS\n" + "PIcEKk/l2Ij8vbmDxb1uNsZmeYphdjb+w/D44OnxahxeLELwZPHWpJLvuf5S8bsz\n" + "Z0bZFNkDUXYbKDX8kWr1gNCKURBS344fRfe8HzZsG68stouvCuOh5pvre7mGGMJI\n" + "5/OMISmQiKIGLpUi1YOSRM25VMZ6GnzgYiN/bcZU1ph+R0lQv7/RRZ7oiaYmFBTi\n" + "FfWIE2hsJla3mbhCnUUp18MpRu4+gPirCVhNQ+ii9FPklcIhXxOrq6cqfX/YAcWO\n" + "uF70tZK/+Z7UXqGYJeQ8pdmlzjNGSH7Q6D+QKNAjZ+Ovb7zEh3NmyTT2XEykMR6+\n" + "bQYaGGcRu8Uvz4wHDaqeUuF/vgTiFaJ8kwNGX8Xb1x+ok5QrJAKZzvy59kojz8L0\n" + "ukQ6SqsvZ6SkJRbHHEh39YPNdC66O58KTiayjKgxQmVHsMOhraI1+YmPntCNBqNN\n" + "AvhLDg==\n" + "-----END CERTIFICATE-----\n", + /* Name Constraints (critical): Permitted: DNSname: one.example.com */ - "-----BEGIN CERTIFICATE-----\n" - "MIIEJDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCAXDTE2MDcxMjEzNDMzNFoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" - "QS0xMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAt7EPrrm4e4JEPXVI\n" - "3s6eNQCyQv24LU9HD+7hDMEOFf//DoHeb8QqSDJdiCk+Hax5ydKZR2h4HZRmj5HO\n" - "s6nxh0AWL645fKcvfk9Oj3r1roLWxH9Kk/UR246s7FcujhDzEz3LEOZUedeMY2CS\n" - "tyjPLsKoP0jiDslRk0Yt4m7OfayB71B26qq92SzRr2YlMvf6AWHEiZhCRqVNidDV\n" - "LxdMwqIkO8s93DN8Kw74X8U5o5vTjmmDiW1HVrqsxOuImnjQ4qTUiDv0JbzTQbTp\n" - "uPOlJ5u/qMTK1jsGDcgfnojHLrsyuuTPR4v6Rmebpi0HHrT2PkxLeGtQEUxM7TeS\n" - "Ccq+eva9zm4UngonS2/nkfYawLDkP3XQ7cJQueNKLC5etDr9NqhFaD624InblWGy\n" - "V7jtEJRwRPH9FeMG7HyWb4BHYz36dCsMLbsCrCLIH8H7r/1nswVxlL5SRwiL06fK\n" - "11pwae1uyNgQuvjno4zHKM5V+mJe1Tz//2X3bfb7crFPQgsxAgMBAAGjgYgwgYUw\n" - "DwYDVR0TAQH/BAUwAwEB/zAhBgNVHR4BAf8EFzAVoBMwEYIPb25lLmV4YW1wbGUu\n" - "Y29tMA8GA1UdDwEB/wQFAwMHBAAwHQYDVR0OBBYEFOEnxsQ7QlqhkLJO8QSKKBGT\n" - "QqDGMB8GA1UdIwQYMBaAFJm3gYrByx1mGmb4CnWXtNzxwGapMA0GCSqGSIb3DQEB\n" - "CwUAA4IBgQAU53SjH5nO+ah/pAQaIDuxaJ6yaFWt1ZuW8riu/dTqn9vI0R4K6WCh\n" - "EZ/rf4Z4YWMLm0+wI/+1CbFHtuZ9savA4qx7rtXQw5mF1JTEBsBM/chiXZ50euKW\n" - "DRE2e8egOESxDQWk5cnaAxtbiRYXu/KYGqFcGeRvSoy85gIwfjBtweYn+rOwM9Yi\n" - "9JsrKwsdFlzvzB6+ozDMCHncqtkU3DqI9QD80oP033z45EJxWxOhd6YhnrZN9SKp\n" - "E/lnc/XuY3NflVE5PGT5efrfGkAfbp2fWPfvc2PP0Lh172zoPy3mBwcXpWdij+H2\n" - "JCzwEqzxQzLpACtFy0kwq9HhzfgcdbbFmUbNweIf30eVG0XQ35myZy9Q1LQINhaj\n" - "UN0Ao7qtLUtC8z5DlUFMuEHQBLhFkmuRHJHCkFRqLO0nHFYmKxtQ2nNmbHt1909s\n" - "I20OEegNTFV8luCbFahoILckFlsbep9P4d0wOMjZuJkLyModK7Yx+CdOpq6/Cegg\n" - "gt+aIvJzHEY=\n" - "-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\n" - "MIID3jCCAkagAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCAXDTE2MDcxMjEzNDMzM1oYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" - "QS0wMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAmmrn3nN2bIFYipZN\n" - "ED4nbWSc0ZYDbo8VzqjCKNVhMbYJlu07tV0qDK/1IDHf9awo5AladB4NEH3oJi9c\n" - "sCtiBtJ9UnqD+gxsJFNtpOfNRfelOE8R7suXAxDxJto7YLtXnLCcMx+UMkhlDfVi\n" - "Yy5Hqua//+EFyffokOPJ0/JCxFvTd9ldbNnxgLL27yDJBL1e4SMSw03/wKoLS0nW\n" - "Sjzcu1+Y2sdj6CNVDtZjGmDLMNtyykX4BDz71PrlR1euktkuHS1HMthQdj3rSWjU\n" - "Rehe7LxjYG548SpnIVA93EOfDyqLhjpKUL8+rA0cKBIsaJK+TyUNQ8XYa98djBAj\n" - "gjRYRsPkZt/FH2BTg+4XSHWMrmfEbxyxqAf6euUkY4Z+Y2xkUHQl5GdYk44Rb/+4\n" - "NxSBBKSj+6SqK2f0o3WTHXwJTeX+B0rV2x507hFqf6lRGzwzffrXKqH3yxfqbycl\n" - "XlahOiBJ1xKNrR0XGeq9yPcrWv/RYvYt4JJp9OV1U2Mz3DRRAgMBAAGjQzBBMA8G\n" - "A1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQUmbeBisHL\n" - "HWYaZvgKdZe03PHAZqkwDQYJKoZIhvcNAQELBQADggGBABaf05+i07lJI74gv87t\n" - "87BuaYEvySlQuUqycCvEs31RXFxJQhpHS7RvqPw6vqDv418SZwd/hNaC7a1JU0gL\n" - "Zuha61y9u6/HbmeCBSgXYcd+4M/2oPz6WcJ9uoOZk8D2NxafubVtyXH26O6tMEnK\n" - "0JJuV6q7fsqvIHf+tvRs/fTD7gKtyAsj1OoO3EjkRRQPnHOR4anXr1jxDFvldHEs\n" - "qhlibWotfyvS4BvSk8nEo+/hrXs86cQDqCg1bbbz04sTQVHW1/kCKYl7c/HQGnTT\n" - "I3Yc7pFq7n5sNP31XN1a8VaGiKseNXmxjhS9XlIvQ1qB5ObE+Dm0tWQbrDo73udb\n" - "dW+I2/Pcij0tGBi8Cxe/PZKv5wio4NpWGTNiF6PMSaUp+lqX2iLYfjjl7osr3Hph\n" - "gnwxlST3q0Av0+91jCfj6IZ9YRHLakceaRxcj8zLoVGpQqTdJjuH4Sy7nKoL58G1\n" - "96Asqk2NsUztvRfw5pYFoe7ZUgsa4M+0/nZxOPd2UeodMA==\n" - "-----END CERTIFICATE-----\n", - NULL + "-----BEGIN CERTIFICATE-----\n" + "MIIEJDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCAXDTE2MDcxMjEzNDMzNFoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0xMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAt7EPrrm4e4JEPXVI\n" + "3s6eNQCyQv24LU9HD+7hDMEOFf//DoHeb8QqSDJdiCk+Hax5ydKZR2h4HZRmj5HO\n" + "s6nxh0AWL645fKcvfk9Oj3r1roLWxH9Kk/UR246s7FcujhDzEz3LEOZUedeMY2CS\n" + "tyjPLsKoP0jiDslRk0Yt4m7OfayB71B26qq92SzRr2YlMvf6AWHEiZhCRqVNidDV\n" + "LxdMwqIkO8s93DN8Kw74X8U5o5vTjmmDiW1HVrqsxOuImnjQ4qTUiDv0JbzTQbTp\n" + "uPOlJ5u/qMTK1jsGDcgfnojHLrsyuuTPR4v6Rmebpi0HHrT2PkxLeGtQEUxM7TeS\n" + "Ccq+eva9zm4UngonS2/nkfYawLDkP3XQ7cJQueNKLC5etDr9NqhFaD624InblWGy\n" + "V7jtEJRwRPH9FeMG7HyWb4BHYz36dCsMLbsCrCLIH8H7r/1nswVxlL5SRwiL06fK\n" + "11pwae1uyNgQuvjno4zHKM5V+mJe1Tz//2X3bfb7crFPQgsxAgMBAAGjgYgwgYUw\n" + "DwYDVR0TAQH/BAUwAwEB/zAhBgNVHR4BAf8EFzAVoBMwEYIPb25lLmV4YW1wbGUu\n" + "Y29tMA8GA1UdDwEB/wQFAwMHBAAwHQYDVR0OBBYEFOEnxsQ7QlqhkLJO8QSKKBGT\n" + "QqDGMB8GA1UdIwQYMBaAFJm3gYrByx1mGmb4CnWXtNzxwGapMA0GCSqGSIb3DQEB\n" + "CwUAA4IBgQAU53SjH5nO+ah/pAQaIDuxaJ6yaFWt1ZuW8riu/dTqn9vI0R4K6WCh\n" + "EZ/rf4Z4YWMLm0+wI/+1CbFHtuZ9savA4qx7rtXQw5mF1JTEBsBM/chiXZ50euKW\n" + "DRE2e8egOESxDQWk5cnaAxtbiRYXu/KYGqFcGeRvSoy85gIwfjBtweYn+rOwM9Yi\n" + "9JsrKwsdFlzvzB6+ozDMCHncqtkU3DqI9QD80oP033z45EJxWxOhd6YhnrZN9SKp\n" + "E/lnc/XuY3NflVE5PGT5efrfGkAfbp2fWPfvc2PP0Lh172zoPy3mBwcXpWdij+H2\n" + "JCzwEqzxQzLpACtFy0kwq9HhzfgcdbbFmUbNweIf30eVG0XQ35myZy9Q1LQINhaj\n" + "UN0Ao7qtLUtC8z5DlUFMuEHQBLhFkmuRHJHCkFRqLO0nHFYmKxtQ2nNmbHt1909s\n" + "I20OEegNTFV8luCbFahoILckFlsbep9P4d0wOMjZuJkLyModK7Yx+CdOpq6/Cegg\n" + "gt+aIvJzHEY=\n" + "-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\n" + "MIID3jCCAkagAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCAXDTE2MDcxMjEzNDMzM1oYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0wMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAmmrn3nN2bIFYipZN\n" + "ED4nbWSc0ZYDbo8VzqjCKNVhMbYJlu07tV0qDK/1IDHf9awo5AladB4NEH3oJi9c\n" + "sCtiBtJ9UnqD+gxsJFNtpOfNRfelOE8R7suXAxDxJto7YLtXnLCcMx+UMkhlDfVi\n" + "Yy5Hqua//+EFyffokOPJ0/JCxFvTd9ldbNnxgLL27yDJBL1e4SMSw03/wKoLS0nW\n" + "Sjzcu1+Y2sdj6CNVDtZjGmDLMNtyykX4BDz71PrlR1euktkuHS1HMthQdj3rSWjU\n" + "Rehe7LxjYG548SpnIVA93EOfDyqLhjpKUL8+rA0cKBIsaJK+TyUNQ8XYa98djBAj\n" + "gjRYRsPkZt/FH2BTg+4XSHWMrmfEbxyxqAf6euUkY4Z+Y2xkUHQl5GdYk44Rb/+4\n" + "NxSBBKSj+6SqK2f0o3WTHXwJTeX+B0rV2x507hFqf6lRGzwzffrXKqH3yxfqbycl\n" + "XlahOiBJ1xKNrR0XGeq9yPcrWv/RYvYt4JJp9OV1U2Mz3DRRAgMBAAGjQzBBMA8G\n" + "A1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQUmbeBisHL\n" + "HWYaZvgKdZe03PHAZqkwDQYJKoZIhvcNAQELBQADggGBABaf05+i07lJI74gv87t\n" + "87BuaYEvySlQuUqycCvEs31RXFxJQhpHS7RvqPw6vqDv418SZwd/hNaC7a1JU0gL\n" + "Zuha61y9u6/HbmeCBSgXYcd+4M/2oPz6WcJ9uoOZk8D2NxafubVtyXH26O6tMEnK\n" + "0JJuV6q7fsqvIHf+tvRs/fTD7gKtyAsj1OoO3EjkRRQPnHOR4anXr1jxDFvldHEs\n" + "qhlibWotfyvS4BvSk8nEo+/hrXs86cQDqCg1bbbz04sTQVHW1/kCKYl7c/HQGnTT\n" + "I3Yc7pFq7n5sNP31XN1a8VaGiKseNXmxjhS9XlIvQ1qB5ObE+Dm0tWQbrDo73udb\n" + "dW+I2/Pcij0tGBi8Cxe/PZKv5wio4NpWGTNiF6PMSaUp+lqX2iLYfjjl7osr3Hph\n" + "gnwxlST3q0Av0+91jCfj6IZ9YRHLakceaRxcj8zLoVGpQqTdJjuH4Sy7nKoL58G1\n" + "96Asqk2NsUztvRfw5pYFoe7ZUgsa4M+0/nZxOPd2UeodMA==\n" + "-----END CERTIFICATE-----\n", + NULL }; /* Name constraints: Empty excluded DNSname, empty Common name */ static const char *nc_bad1[] = { -/* DNSname: localhost + /* DNSname: localhost DNSname: www.example.com Common name: (empty) */ -"-----BEGIN CERTIFICATE-----\n" -"MIIDSzCCAjOgAwIBAgIMU/xqxDpxZ3J5cUcrMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" -"BgNVBAMTBENBLTEwIhgPMjAxNDA4MjYxMTA4NTJaGA85OTk5MTIzMTIzNTk1OVow\n" -"EzERMA8GA1UEChMIc2VydmVyLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" -"AoIBAQDP3GV/JSLCCmx09hJINJZC8fSUBE1IVbZsY/q00rZOw5KwPioLiMOIup7W\n" -"na8YJ2ama0GJjU86PlJDhBH6soaY24ZCW5kKhvfnSw2TkpW6umL7psvuBslRoMxA\n" -"t12MpapZDFZixZjV44Bstuyt9sI1ze3au+5C7E4+z40o/3uvbIiN2iz4bPgwPIMu\n" -"5V/bVTei6uAcu4fNHh/AGnAUJa201QsUhM4+VRFc0XmanjSulySD3obwERDneqab\n" -"77gnIP6zwuFXxHgucbmzU8DIgVhes2k4v6AB1nPxlpUL5+E+W4XDg4ckGGkfxgcn\n" -"dGYvuv3pwIyHvb7Z0A8D6bE435cnAgMBAAGjgZ4wgZswDAYDVR0TAQH/BAIwADAl\n" -"BgNVHREEHjAcgglsb2NhbGhvc3SCD3d3dy5leGFtcGxlLmNvbTATBgNVHSUEDDAK\n" -"BggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQWBBS5dbTqiPbhe7Fg\n" -"e/Bs92qsNgWSzjAfBgNVHSMEGDAWgBSgAJcc9Q5KDpAhkrMORPJSboq3vzANBgkq\n" -"hkiG9w0BAQsFAAOCAQEAdkVCQQ5mCuV5WTqCeH7AtXxYM7IV7q6O7uqirKwDUzGD\n" -"wB5shurAPMn9IG46O68P+BPLMfwszFDgszNrjuMsKb7hLT5+pVsd6XRQeimPJ5rN\n" -"/szMfALLAcw8Yxt+1YbxlgUgybFsiK2zdBpAshU+FzMRvFfq9rnqW/VXM0J6ghz3\n" -"VqLbviOY5KpCLzfG0yM+CTcKXVFau9QZK962AfXzUwaCymw1cRHzQlpdMQtTtcIp\n" -"nci6MKXViEdeHbPLcZe9+vzSSpFh5u/l47w+2B1oz7mndFFpxkw37zDaVH5yAFxK\n" -"+5VijiKxH6nmniLUX8Zsv82YBaO0liNb2fOZopxQGQ==\n" -"-----END CERTIFICATE-----\n", -/* Name Constraints (critical): + "-----BEGIN CERTIFICATE-----\n" + "MIIDSzCCAjOgAwIBAgIMU/xqxDpxZ3J5cUcrMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTEwIhgPMjAxNDA4MjYxMTA4NTJaGA85OTk5MTIzMTIzNTk1OVow\n" + "EzERMA8GA1UEChMIc2VydmVyLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" + "AoIBAQDP3GV/JSLCCmx09hJINJZC8fSUBE1IVbZsY/q00rZOw5KwPioLiMOIup7W\n" + "na8YJ2ama0GJjU86PlJDhBH6soaY24ZCW5kKhvfnSw2TkpW6umL7psvuBslRoMxA\n" + "t12MpapZDFZixZjV44Bstuyt9sI1ze3au+5C7E4+z40o/3uvbIiN2iz4bPgwPIMu\n" + "5V/bVTei6uAcu4fNHh/AGnAUJa201QsUhM4+VRFc0XmanjSulySD3obwERDneqab\n" + "77gnIP6zwuFXxHgucbmzU8DIgVhes2k4v6AB1nPxlpUL5+E+W4XDg4ckGGkfxgcn\n" + "dGYvuv3pwIyHvb7Z0A8D6bE435cnAgMBAAGjgZ4wgZswDAYDVR0TAQH/BAIwADAl\n" + "BgNVHREEHjAcgglsb2NhbGhvc3SCD3d3dy5leGFtcGxlLmNvbTATBgNVHSUEDDAK\n" + "BggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQWBBS5dbTqiPbhe7Fg\n" + "e/Bs92qsNgWSzjAfBgNVHSMEGDAWgBSgAJcc9Q5KDpAhkrMORPJSboq3vzANBgkq\n" + "hkiG9w0BAQsFAAOCAQEAdkVCQQ5mCuV5WTqCeH7AtXxYM7IV7q6O7uqirKwDUzGD\n" + "wB5shurAPMn9IG46O68P+BPLMfwszFDgszNrjuMsKb7hLT5+pVsd6XRQeimPJ5rN\n" + "/szMfALLAcw8Yxt+1YbxlgUgybFsiK2zdBpAshU+FzMRvFfq9rnqW/VXM0J6ghz3\n" + "VqLbviOY5KpCLzfG0yM+CTcKXVFau9QZK962AfXzUwaCymw1cRHzQlpdMQtTtcIp\n" + "nci6MKXViEdeHbPLcZe9+vzSSpFh5u/l47w+2B1oz7mndFFpxkw37zDaVH5yAFxK\n" + "+5VijiKxH6nmniLUX8Zsv82YBaO0liNb2fOZopxQGQ==\n" + "-----END CERTIFICATE-----\n", + /* Name Constraints (critical): * Excluded DNSname: (empty) */ -"-----BEGIN CERTIFICATE-----\n" -"MIIDFTCCAf2gAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" -"MCIYDzIwMTQwODI2MTEwODUyWhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" -"BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+iPUnEs+qmj2U\n" -"Rz8plNAE/CpeUxUfNNVonluu4DzulsxAJMN78g+Oqx+ggdkECZxHLISkzErMgiuv\n" -"bG+nr9yxjyHH2YoOAgzgknar5JkOBkKp1bIvyA950ZSygMFEHX1qoaM+F/1/DKjG\n" -"NmMCNUpR0c4m+K22s72LnrpMLMmCZU0fnqngb1+F+iZE6emhcX5Z5D0QTJTAeiYK\n" -"ArnO0rpVEvU0o3nwe3dDrT0YyoCYrzCsCOKUa2wFtkOzLZKJbMBRMflL+fBmtj/Q\n" -"7xUe7ox62ZEqSD7W+Po48/mIuSOhx7u+yToBZ60wKGz9OkQ/JwykkK5ZgI+nPWGT\n" -"1au1K4V7AgMBAAGjeDB2MA8GA1UdEwEB/wQFMAMBAf8wEgYDVR0eAQH/BAgwBqEE\n" -"MAKCADAPBgNVHQ8BAf8EBQMDBwQAMB0GA1UdDgQWBBSgAJcc9Q5KDpAhkrMORPJS\n" -"boq3vzAfBgNVHSMEGDAWgBQ/lKQpHoyEFz7J+Wn6eT5qxgYQpjANBgkqhkiG9w0B\n" -"AQsFAAOCAQEAoMeZ0cnHes8bWRHLvrGc6wpwVnxYx2CBF9Xd3k4YMNunwBF9oM+T\n" -"ZYSMo4k7C1XZ154avBIyiCne3eU7/oHG1nkqY9ndN5LMyL8KFOniETBY3BdKtlGA\n" -"N+pDiQsrWG6mtqQ+kHFJICnGEDDByGB2eH+oAS+8gNtSfamLuTWYMI6ANjA9OWan\n" -"rkIA7ta97UiH2flvKRctqvZ0n6Vp3n3aUc53FkAbTnxOCBNCBx/veCgD/r74WbcY\n" -"jiwh2RE//3D3Oo7zhUlwQEWQSa/7poG5e6bl7oj4JYjpwSmESCYokT83Iqeb9lwO\n" -"D+dr9zs1tCudW9xz3sUg6IBXhZ4UvegTNg==\n" -"-----END CERTIFICATE-----\n", -"-----BEGIN CERTIFICATE-----\n" -"MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" -"MCIYDzIwMTQwODI2MTEwODUyWhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" -"BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2cd2vlg/9nuzi\n" -"6S6/qyJRnaUoFutajTwGqfQKZpbqXI7TcFZwKidzAZlZiU+sAvkY8d/9cadlbrde\n" -"S9HGv31QmexWjgWAMGNpeyiPlXIN8xGzIbZRM3FCih0bnIyibdwgAuU14dUrChGD\n" -"sQ4SAmRUpThkB8anvC10PIsxfnifBwJI6dGQZb1KOxVOIWg7Gb5tNFkZILBGv8wk\n" -"cbycIBYC3lRX8svUj9mMiro53f+4ZGbi4DcSLIdw4ebAczfBd+uHM2jkHFZUNuAY\n" -"7rGZAAuqEh5IE0QHS9CV6mg6Pf9+sLGMBZUbix2sxRntAEyz8+kO7W2zgmKPla4+\n" -"y54cIUmBAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" -"ADAdBgNVHQ4EFgQUP5SkKR6MhBc+yflp+nk+asYGEKYwDQYJKoZIhvcNAQELBQAD\n" -"ggEBAC4N4dUoGDTGf93DtjEcZzqGoAd6TsCYy6k5zeYMZFwogfArg0IMurcFDLeN\n" -"PXe3xl9RiUjbiZMaHWju81kIO34z0NLd705XR9QFEc+xiuZOMmm4SxciAF5xo+Hh\n" -"Fhc9cVa8Icm2ju86Q4yhJziYrElH8VwHTBE0k+RE1cK65F5PQFGGBlpGm9EMcYTv\n" -"EQQATPLuWwKRAFNJBx2t3DAeMseo/Iq6Snd/UfdqgLkV61YtbzqL8bu+a8rgMAYz\n" -"ovgORsI48TlbU4H7YI+vzPO33tRV2m4dOxppMHzv8Ie2LIIfqYn0HRd87c06djEA\n" -"EpXfXGqxjX5vAtNPO5fGGzghol4=\n" -"-----END CERTIFICATE-----", -NULL + "-----BEGIN CERTIFICATE-----\n" + "MIIDFTCCAf2gAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwODI2MTEwODUyWhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+iPUnEs+qmj2U\n" + "Rz8plNAE/CpeUxUfNNVonluu4DzulsxAJMN78g+Oqx+ggdkECZxHLISkzErMgiuv\n" + "bG+nr9yxjyHH2YoOAgzgknar5JkOBkKp1bIvyA950ZSygMFEHX1qoaM+F/1/DKjG\n" + "NmMCNUpR0c4m+K22s72LnrpMLMmCZU0fnqngb1+F+iZE6emhcX5Z5D0QTJTAeiYK\n" + "ArnO0rpVEvU0o3nwe3dDrT0YyoCYrzCsCOKUa2wFtkOzLZKJbMBRMflL+fBmtj/Q\n" + "7xUe7ox62ZEqSD7W+Po48/mIuSOhx7u+yToBZ60wKGz9OkQ/JwykkK5ZgI+nPWGT\n" + "1au1K4V7AgMBAAGjeDB2MA8GA1UdEwEB/wQFMAMBAf8wEgYDVR0eAQH/BAgwBqEE\n" + "MAKCADAPBgNVHQ8BAf8EBQMDBwQAMB0GA1UdDgQWBBSgAJcc9Q5KDpAhkrMORPJS\n" + "boq3vzAfBgNVHSMEGDAWgBQ/lKQpHoyEFz7J+Wn6eT5qxgYQpjANBgkqhkiG9w0B\n" + "AQsFAAOCAQEAoMeZ0cnHes8bWRHLvrGc6wpwVnxYx2CBF9Xd3k4YMNunwBF9oM+T\n" + "ZYSMo4k7C1XZ154avBIyiCne3eU7/oHG1nkqY9ndN5LMyL8KFOniETBY3BdKtlGA\n" + "N+pDiQsrWG6mtqQ+kHFJICnGEDDByGB2eH+oAS+8gNtSfamLuTWYMI6ANjA9OWan\n" + "rkIA7ta97UiH2flvKRctqvZ0n6Vp3n3aUc53FkAbTnxOCBNCBx/veCgD/r74WbcY\n" + "jiwh2RE//3D3Oo7zhUlwQEWQSa/7poG5e6bl7oj4JYjpwSmESCYokT83Iqeb9lwO\n" + "D+dr9zs1tCudW9xz3sUg6IBXhZ4UvegTNg==\n" + "-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\n" + "MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwODI2MTEwODUyWhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2cd2vlg/9nuzi\n" + "6S6/qyJRnaUoFutajTwGqfQKZpbqXI7TcFZwKidzAZlZiU+sAvkY8d/9cadlbrde\n" + "S9HGv31QmexWjgWAMGNpeyiPlXIN8xGzIbZRM3FCih0bnIyibdwgAuU14dUrChGD\n" + "sQ4SAmRUpThkB8anvC10PIsxfnifBwJI6dGQZb1KOxVOIWg7Gb5tNFkZILBGv8wk\n" + "cbycIBYC3lRX8svUj9mMiro53f+4ZGbi4DcSLIdw4ebAczfBd+uHM2jkHFZUNuAY\n" + "7rGZAAuqEh5IE0QHS9CV6mg6Pf9+sLGMBZUbix2sxRntAEyz8+kO7W2zgmKPla4+\n" + "y54cIUmBAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" + "ADAdBgNVHQ4EFgQUP5SkKR6MhBc+yflp+nk+asYGEKYwDQYJKoZIhvcNAQELBQAD\n" + "ggEBAC4N4dUoGDTGf93DtjEcZzqGoAd6TsCYy6k5zeYMZFwogfArg0IMurcFDLeN\n" + "PXe3xl9RiUjbiZMaHWju81kIO34z0NLd705XR9QFEc+xiuZOMmm4SxciAF5xo+Hh\n" + "Fhc9cVa8Icm2ju86Q4yhJziYrElH8VwHTBE0k+RE1cK65F5PQFGGBlpGm9EMcYTv\n" + "EQQATPLuWwKRAFNJBx2t3DAeMseo/Iq6Snd/UfdqgLkV61YtbzqL8bu+a8rgMAYz\n" + "ovgORsI48TlbU4H7YI+vzPO33tRV2m4dOxppMHzv8Ie2LIIfqYn0HRd87c06djEA\n" + "EpXfXGqxjX5vAtNPO5fGGzghol4=\n" + "-----END CERTIFICATE-----", + NULL }; /* Name constraints: Multiple-level constraints, intersection empty */ static const char *nc_bad2[] = { -/* DNSname: www.example.com */ -"-----BEGIN CERTIFICATE-----\n" -"MIIDQDCCAiigAwIBAgIMU/x5DBI1pGSO2eYZMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" -"BgNVBAMTBENBLTMwIhgPMjAxNDA4MjYxMjA5NDhaGA85OTk5MTIzMTIzNTk1OVow\n" -"EzERMA8GA1UEChMIc2VydmVyLTQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" -"AoIBAQDL/hbj+RVDQ5sA4VR2FZ+P+/jju7jkUFUovwhCrWpGXFs0WDokcOkcXc3f\n" -"0yturFWazVEKaaZECiDpGf6iXmNoJA6fPT+G0gPlIL6wh4wKQG+vwVYsX5ZkXOMR\n" -"sl7BqCpeCChkth54mClEwOYW3WohdXqiJfxoFVdgnisbqkxYtz9aXzYE71cZIFAx\n" -"nL7V/gY+G/m0iZCdfh7YEDlT+qtLkGyHsyyTxwUH4yyqcsFl4WWG6wAdKF5U69yw\n" -"uo61J5wpE+yDyS0u4Cjw67d29OIHsT7GAq+fP69vMoEHPvPUM/aA68AycybV2OYt\n" -"8OJAyZqf/6zvnlrbLuk08kWf1TD3AgMBAAGjgZMwgZAwDAYDVR0TAQH/BAIwADAa\n" -"BgNVHREEEzARgg93d3cuZXhhbXBsZS5jb20wEwYDVR0lBAwwCgYIKwYBBQUHAwEw\n" -"DwYDVR0PAQH/BAUDAwegADAdBgNVHQ4EFgQUz+XUeM8bwvK3BD7NVRRYSeZSlA0w\n" -"HwYDVR0jBBgwFoAU/n2NeCCnwHQwFpKwi42A3H+w9W8wDQYJKoZIhvcNAQELBQAD\n" -"ggEBAPJZO19PhmxQ1ZRDLQWZWxuQgD2Wwy8sS+wnlUo/TZM7+pT5ICjLdEKgETPd\n" -"HOqgAMQFaUpp5vx1jUBmmKdPOmwEnV/2zbw3GrYwAQjxunXD66iHjYbodl9zBumM\n" -"NXDGsHnKYNu9sPdQSMLC7OEOrKvEhH2afOvYDORQbSGXh7+3js7Mzggy0NoYtxnK\n" -"4wqt6g73SFkV82mTQpUBK218ROjuWVBUmWxq2JU+qvsAKbhz+Tjr9+kmFcNBRgmA\n" -"Zga26uoQhd6YP9DKbCvf3sK4bi6A5NROeLf9BzJHWkGani4F9wOjRmLVnLlB3BPi\n" -"tHZaLDU9fUnf6I6p3nu6LPTH3JU=\n" -"-----END CERTIFICATE-----\n", -/* Name Constraints (critical): + /* DNSname: www.example.com */ + "-----BEGIN CERTIFICATE-----\n" + "MIIDQDCCAiigAwIBAgIMU/x5DBI1pGSO2eYZMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTMwIhgPMjAxNDA4MjYxMjA5NDhaGA85OTk5MTIzMTIzNTk1OVow\n" + "EzERMA8GA1UEChMIc2VydmVyLTQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" + "AoIBAQDL/hbj+RVDQ5sA4VR2FZ+P+/jju7jkUFUovwhCrWpGXFs0WDokcOkcXc3f\n" + "0yturFWazVEKaaZECiDpGf6iXmNoJA6fPT+G0gPlIL6wh4wKQG+vwVYsX5ZkXOMR\n" + "sl7BqCpeCChkth54mClEwOYW3WohdXqiJfxoFVdgnisbqkxYtz9aXzYE71cZIFAx\n" + "nL7V/gY+G/m0iZCdfh7YEDlT+qtLkGyHsyyTxwUH4yyqcsFl4WWG6wAdKF5U69yw\n" + "uo61J5wpE+yDyS0u4Cjw67d29OIHsT7GAq+fP69vMoEHPvPUM/aA68AycybV2OYt\n" + "8OJAyZqf/6zvnlrbLuk08kWf1TD3AgMBAAGjgZMwgZAwDAYDVR0TAQH/BAIwADAa\n" + "BgNVHREEEzARgg93d3cuZXhhbXBsZS5jb20wEwYDVR0lBAwwCgYIKwYBBQUHAwEw\n" + "DwYDVR0PAQH/BAUDAwegADAdBgNVHQ4EFgQUz+XUeM8bwvK3BD7NVRRYSeZSlA0w\n" + "HwYDVR0jBBgwFoAU/n2NeCCnwHQwFpKwi42A3H+w9W8wDQYJKoZIhvcNAQELBQAD\n" + "ggEBAPJZO19PhmxQ1ZRDLQWZWxuQgD2Wwy8sS+wnlUo/TZM7+pT5ICjLdEKgETPd\n" + "HOqgAMQFaUpp5vx1jUBmmKdPOmwEnV/2zbw3GrYwAQjxunXD66iHjYbodl9zBumM\n" + "NXDGsHnKYNu9sPdQSMLC7OEOrKvEhH2afOvYDORQbSGXh7+3js7Mzggy0NoYtxnK\n" + "4wqt6g73SFkV82mTQpUBK218ROjuWVBUmWxq2JU+qvsAKbhz+Tjr9+kmFcNBRgmA\n" + "Zga26uoQhd6YP9DKbCvf3sK4bi6A5NROeLf9BzJHWkGani4F9wOjRmLVnLlB3BPi\n" + "tHZaLDU9fUnf6I6p3nu6LPTH3JU=\n" + "-----END CERTIFICATE-----\n", + /* Name Constraints (critical): Permitted: DNSname: example.com */ -"-----BEGIN CERTIFICATE-----\n" -"MIIDIjCCAgqgAwIBAgIBAzANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0y\n" -"MCIYDzIwMTQwODI2MTIwOTQ4WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" -"BENBLTMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD6kCE6KmDCkagX\n" -"fvq0rx73h7zn23phJYBmugfp5fPQYIJ1463dGmlFK4Lfkz2V4StgM2mbFFEkcyVC\n" -"pz+PyeSDgyWJJ/RwG690lLfu5JfNLvwxj/rFNK6rS7EpADew6RgURCpEMt6z1uEk\n" -"+IQsxKoXQmAcdtc/ubPFWInotg7Avoid0sG69s/+hq/nlGE9A8JMFnsLh/n01d+F\n" -"9dWsjrNiZ+mfTE8w0MVTq4+8mvmPmnjKsiu0rgqaVTmYpZW5chz9gGrZCr/Wr5CL\n" -"zPsAYaWie+wo8cR5qMEoX+JPHqM8eP9K1v+uYc03aD3u1/QYdxY73OLn31+jYAqq\n" -"tRJjgSERAgMBAAGjgYQwgYEwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHR4BAf8EEzAR\n" -"oA8wDYILZXhhbXBsZS5jb20wDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQU/n2N\n" -"eCCnwHQwFpKwi42A3H+w9W8wHwYDVR0jBBgwFoAUJ2ngSf1CqeYVG3eUNcH7Lt6/\n" -"ECUwDQYJKoZIhvcNAQELBQADggEBAIQruSBUyQ268Js61XT3nlr1Y9HxmKA2DIuM\n" -"WcAicE1XIpuxDpZ/VmKH0/o2JVR1A7uwSMEnHdShHixMbpYrHRDnZITxs2lsJijE\n" -"r7YdqadH7EbjDIXv1DJcPnNaeqFPbyXEWqLYoQf6UPBLVRWeKISPN0hMaIZv4Y/X\n" -"OcBceajAr0XGxASRFDky26M01AVPZoYjgT7vLp835yk9BY5+q0GxlSJl6HbQ5ESA\n" -"IoC3Limt72niobmvEryQDq7qUUoR7hB1SMKfyX/qktxT3UCBLKXHsp80ECJ2A7Sd\n" -"YrHjFE6LnWHwGJFYZ1eYKiOjglVRGv3+bNX07bQBWKzRbLWYM+0=\n" -"-----END CERTIFICATE-----\n", -/* Name Constraints (critical): + "-----BEGIN CERTIFICATE-----\n" + "MIIDIjCCAgqgAwIBAgIBAzANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0y\n" + "MCIYDzIwMTQwODI2MTIwOTQ4WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD6kCE6KmDCkagX\n" + "fvq0rx73h7zn23phJYBmugfp5fPQYIJ1463dGmlFK4Lfkz2V4StgM2mbFFEkcyVC\n" + "pz+PyeSDgyWJJ/RwG690lLfu5JfNLvwxj/rFNK6rS7EpADew6RgURCpEMt6z1uEk\n" + "+IQsxKoXQmAcdtc/ubPFWInotg7Avoid0sG69s/+hq/nlGE9A8JMFnsLh/n01d+F\n" + "9dWsjrNiZ+mfTE8w0MVTq4+8mvmPmnjKsiu0rgqaVTmYpZW5chz9gGrZCr/Wr5CL\n" + "zPsAYaWie+wo8cR5qMEoX+JPHqM8eP9K1v+uYc03aD3u1/QYdxY73OLn31+jYAqq\n" + "tRJjgSERAgMBAAGjgYQwgYEwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHR4BAf8EEzAR\n" + "oA8wDYILZXhhbXBsZS5jb20wDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQU/n2N\n" + "eCCnwHQwFpKwi42A3H+w9W8wHwYDVR0jBBgwFoAUJ2ngSf1CqeYVG3eUNcH7Lt6/\n" + "ECUwDQYJKoZIhvcNAQELBQADggEBAIQruSBUyQ268Js61XT3nlr1Y9HxmKA2DIuM\n" + "WcAicE1XIpuxDpZ/VmKH0/o2JVR1A7uwSMEnHdShHixMbpYrHRDnZITxs2lsJijE\n" + "r7YdqadH7EbjDIXv1DJcPnNaeqFPbyXEWqLYoQf6UPBLVRWeKISPN0hMaIZv4Y/X\n" + "OcBceajAr0XGxASRFDky26M01AVPZoYjgT7vLp835yk9BY5+q0GxlSJl6HbQ5ESA\n" + "IoC3Limt72niobmvEryQDq7qUUoR7hB1SMKfyX/qktxT3UCBLKXHsp80ECJ2A7Sd\n" + "YrHjFE6LnWHwGJFYZ1eYKiOjglVRGv3+bNX07bQBWKzRbLWYM+0=\n" + "-----END CERTIFICATE-----\n", + /* Name Constraints (critical): Excluded: DNSname: example.com */ -"-----BEGIN CERTIFICATE-----\n" -"MIIDIjCCAgqgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0x\n" -"MCIYDzIwMTQwODI2MTIwOTQ4WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" -"BENBLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDUbGpRRMdnTzbG\n" -"R7J9qYJoHOhgRp3lEa9sBP7/pNNIsEhXmvzBu5J0buJpAfRPmWcoZauKsVrKnE69\n" -"CFlTDVCIahQ5gtJkGdjrDrQDFFCMnKC04Lhq+EmbASBTn5GRQwJqEUi9xRpj0yOL\n" -"0XGlMp4JS44eAL4giywzPtOAZaJlr4kdOnSPK2SHFVwQGfQiNmzD5ajmsjM3k4o3\n" -"R2gXAsudyasQzRAjFyeo2ry7klPUPS5RHJ6B2n87e9kLGrYb8+O9I9FNc/w4J49W\n" -"AovVr5vcs9Km25jLUn43KDprDhpXddEraz6WyZJRMTZVRRUizET3gmojZFFD4zOQ\n" -"mneVYerpAgMBAAGjgYQwgYEwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHR4BAf8EEzAR\n" -"oQ8wDYILZXhhbXBsZS5jb20wDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQUJ2ng\n" -"Sf1CqeYVG3eUNcH7Lt6/ECUwHwYDVR0jBBgwFoAUyFGHFFLCWYOQTLmh8jJpGyxS\n" -"bSUwDQYJKoZIhvcNAQELBQADggEBALGFCZXC1KPBBPMtLJNfhNBtBBC4i5q+1Qeo\n" -"aJL7dKVuBn79WAuND8rvJvrPKpGTmyxkcnqRXSBVH3c+Xi+v5ykLrtHJ2x4TOrmg\n" -"RBAaBqDuecQ9Ec0dCc5ODKwjdI/wEOGAS4sfrMXzQCv+UJqi2lE0fo/xDmS/azCc\n" -"WUjFSQOuWnCJIIAIyWlF2bPtdtiaydHKkTcG7c/zwrxRaWE2Q2G+dm+itpJ7sCtx\n" -"ZFfGMLUl7mDadhiYrxq1SnwrObMwbngPNZyUBi2G7jnXlyFc9X/w6fVIULLxN+bn\n" -"IzHWcRrBZ/ShdvCStmgbTlKNtvg0LWAk7QWzy2ibaXS5jp2r+Fc=\n" -"-----END CERTIFICATE-----\n", -/* Name Constraints (critical): + "-----BEGIN CERTIFICATE-----\n" + "MIIDIjCCAgqgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0x\n" + "MCIYDzIwMTQwODI2MTIwOTQ4WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDUbGpRRMdnTzbG\n" + "R7J9qYJoHOhgRp3lEa9sBP7/pNNIsEhXmvzBu5J0buJpAfRPmWcoZauKsVrKnE69\n" + "CFlTDVCIahQ5gtJkGdjrDrQDFFCMnKC04Lhq+EmbASBTn5GRQwJqEUi9xRpj0yOL\n" + "0XGlMp4JS44eAL4giywzPtOAZaJlr4kdOnSPK2SHFVwQGfQiNmzD5ajmsjM3k4o3\n" + "R2gXAsudyasQzRAjFyeo2ry7klPUPS5RHJ6B2n87e9kLGrYb8+O9I9FNc/w4J49W\n" + "AovVr5vcs9Km25jLUn43KDprDhpXddEraz6WyZJRMTZVRRUizET3gmojZFFD4zOQ\n" + "mneVYerpAgMBAAGjgYQwgYEwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHR4BAf8EEzAR\n" + "oQ8wDYILZXhhbXBsZS5jb20wDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQUJ2ng\n" + "Sf1CqeYVG3eUNcH7Lt6/ECUwHwYDVR0jBBgwFoAUyFGHFFLCWYOQTLmh8jJpGyxS\n" + "bSUwDQYJKoZIhvcNAQELBQADggEBALGFCZXC1KPBBPMtLJNfhNBtBBC4i5q+1Qeo\n" + "aJL7dKVuBn79WAuND8rvJvrPKpGTmyxkcnqRXSBVH3c+Xi+v5ykLrtHJ2x4TOrmg\n" + "RBAaBqDuecQ9Ec0dCc5ODKwjdI/wEOGAS4sfrMXzQCv+UJqi2lE0fo/xDmS/azCc\n" + "WUjFSQOuWnCJIIAIyWlF2bPtdtiaydHKkTcG7c/zwrxRaWE2Q2G+dm+itpJ7sCtx\n" + "ZFfGMLUl7mDadhiYrxq1SnwrObMwbngPNZyUBi2G7jnXlyFc9X/w6fVIULLxN+bn\n" + "IzHWcRrBZ/ShdvCStmgbTlKNtvg0LWAk7QWzy2ibaXS5jp2r+Fc=\n" + "-----END CERTIFICATE-----\n", + /* Name Constraints (critical): Excluded: DNSname: example.net Excluded: DNSname: example.org */ -"-----BEGIN CERTIFICATE-----\n" -"MIIDMTCCAhmgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" -"MCIYDzIwMTQwODI2MTIwOTQ3WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" -"BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDsnSNH0g4bvAXx\n" -"zJAfs+XFWpNIpJtD/1H3Ei0ezfH5Ug7GNpHKlYKLCIShqCFj9WSwzSyKNGCHafdt\n" -"PPhKo9uAo2bSaBZjmzxfqSOGDEXZ+4LlRgSPX2Arc0i97ZsPf0nkWLfrxlTOAQIm\n" -"DxDNrWlGrCl1dfPiB+EyMzo+++MCdTGEsdEdRFm85QNjOOTiaTeUpUh5G27+hbuk\n" -"PaRlZ1GHJYlrLHK/2qw9/Mw+gNnfn/Efw+lNeYuQ3tco8IAMN0jB8x1hDfOxTx93\n" -"mrFzAdGTfsYZc31YapATk2re8IJGeKSCY4XP2HvYZEE1fYdw8ZcqZ/Gv1RdXyxvc\n" -"6oT5r/PNAgMBAAGjgZMwgZAwDwYDVR0TAQH/BAUwAwEB/zAsBgNVHR4BAf8EIjAg\n" -"oR4wDYILZXhhbXBsZS5uZXQwDYILZXhhbXBsZS5vcmcwDwYDVR0PAQH/BAUDAwcE\n" -"ADAdBgNVHQ4EFgQUyFGHFFLCWYOQTLmh8jJpGyxSbSUwHwYDVR0jBBgwFoAUTBVq\n" -"WCSLkLZte75Q9bgKeM851qowDQYJKoZIhvcNAQELBQADggEBAGKVEQfAzrWj8wmQ\n" -"l4sm+i/pgK0I07jNMvgUDsvAmjlkndWxoX1ROe0Nd2I3d5te0+G9MR6CTOByr8VE\n" -"NLyXEsrk++BsfLk/0UNFHwq97QLTzzyEXQYQnDza8R1jdlr7XpGZOoWczi08yMAk\n" -"UiJyq2xaqerTlIYp01T9a3Nb5tWFyUVekJeyJQakj2VLaKkl4hCfK3h/HFBNJ3yf\n" -"AvBu77wQeh6n8osNDCpW9e1KRAGisDCFrTMUlyxQIK/OXhjLzu7qDKShdNnfNRmc\n" -"H4W9ODLIm8AX1S0udg9OebPhNWfM2bDFzI/dIX+yHp6q0oepbT11rKG8G+5M25uU\n" -"AUhTFC4=\n" -"-----END CERTIFICATE-----\n", -"-----BEGIN CERTIFICATE-----\n" -"MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" -"MCIYDzIwMTQwODI2MTIwOTQ3WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" -"BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCZSS6SaBALkN4W\n" -"Tao6pqaDmi1edtBskNHdO/lYomElQtIkw6wQHlJjIdjF3vnhEWU9+HOIZrWKth4X\n" -"u+naDZquOb4GWPq/X6/KBoQ4hq/XZJaFEDPeciNcVeylWVlHi1OeGm8uHZxAK/6d\n" -"wpGoe/0K+QaLFdbm/srw1LGvCwbLwNDKePX9TgOfVKdZtGZUdDDo6TXUmhNG+QeP\n" -"7Fv1n2PjQFkXiRwVLgJj06DvR+ft81x2gjEVS+vxWg0+cbJvBI2ItpNGnIWvbwl7\n" -"BTyNRjvsi7ljFn+SfaRBLXE4aygQFQ9UCHNNYtkBO73BXv/SgcFXzSDDN5ZMfpg9\n" -"SSWkEApFAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" -"ADAdBgNVHQ4EFgQUTBVqWCSLkLZte75Q9bgKeM851qowDQYJKoZIhvcNAQELBQAD\n" -"ggEBAH3bezfaVpnyqZRJsZ8sHAIpJWa03mHl/mqRpT0qg45Agzwo7yb5dubiHUBJ\n" -"BK/kAMhICjHAH+6E5XubGVSFvbzBX1FeKQQgzghN4niosOCLZPUtl8gJGZlsOoCy\n" -"6HldkxXa26GBZR0NvJb/p83VA7w5Zlp5j7Rp2VkWwRniaPex39dogDX3IwnoZKzL\n" -"ogyeNQPG2qLDBdZRAVng0eJK1Ml5PHxoEkcFwFsxd4B1cJV0VCMk7X7oEc9qBtUB\n" -"Ye/bst72puWDK1lBhT6EFhDDbY9xKm7pvUkGx80gWm9JZ0xGCaoM4tyEAaCd9tYZ\n" -"JFvnIEGJGeGjlRLJZGS4mZ/Q5mI=\n" -"-----END CERTIFICATE-----\n", -NULL + "-----BEGIN CERTIFICATE-----\n" + "MIIDMTCCAhmgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwODI2MTIwOTQ3WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDsnSNH0g4bvAXx\n" + "zJAfs+XFWpNIpJtD/1H3Ei0ezfH5Ug7GNpHKlYKLCIShqCFj9WSwzSyKNGCHafdt\n" + "PPhKo9uAo2bSaBZjmzxfqSOGDEXZ+4LlRgSPX2Arc0i97ZsPf0nkWLfrxlTOAQIm\n" + "DxDNrWlGrCl1dfPiB+EyMzo+++MCdTGEsdEdRFm85QNjOOTiaTeUpUh5G27+hbuk\n" + "PaRlZ1GHJYlrLHK/2qw9/Mw+gNnfn/Efw+lNeYuQ3tco8IAMN0jB8x1hDfOxTx93\n" + "mrFzAdGTfsYZc31YapATk2re8IJGeKSCY4XP2HvYZEE1fYdw8ZcqZ/Gv1RdXyxvc\n" + "6oT5r/PNAgMBAAGjgZMwgZAwDwYDVR0TAQH/BAUwAwEB/zAsBgNVHR4BAf8EIjAg\n" + "oR4wDYILZXhhbXBsZS5uZXQwDYILZXhhbXBsZS5vcmcwDwYDVR0PAQH/BAUDAwcE\n" + "ADAdBgNVHQ4EFgQUyFGHFFLCWYOQTLmh8jJpGyxSbSUwHwYDVR0jBBgwFoAUTBVq\n" + "WCSLkLZte75Q9bgKeM851qowDQYJKoZIhvcNAQELBQADggEBAGKVEQfAzrWj8wmQ\n" + "l4sm+i/pgK0I07jNMvgUDsvAmjlkndWxoX1ROe0Nd2I3d5te0+G9MR6CTOByr8VE\n" + "NLyXEsrk++BsfLk/0UNFHwq97QLTzzyEXQYQnDza8R1jdlr7XpGZOoWczi08yMAk\n" + "UiJyq2xaqerTlIYp01T9a3Nb5tWFyUVekJeyJQakj2VLaKkl4hCfK3h/HFBNJ3yf\n" + "AvBu77wQeh6n8osNDCpW9e1KRAGisDCFrTMUlyxQIK/OXhjLzu7qDKShdNnfNRmc\n" + "H4W9ODLIm8AX1S0udg9OebPhNWfM2bDFzI/dIX+yHp6q0oepbT11rKG8G+5M25uU\n" + "AUhTFC4=\n" + "-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\n" + "MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwODI2MTIwOTQ3WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCZSS6SaBALkN4W\n" + "Tao6pqaDmi1edtBskNHdO/lYomElQtIkw6wQHlJjIdjF3vnhEWU9+HOIZrWKth4X\n" + "u+naDZquOb4GWPq/X6/KBoQ4hq/XZJaFEDPeciNcVeylWVlHi1OeGm8uHZxAK/6d\n" + "wpGoe/0K+QaLFdbm/srw1LGvCwbLwNDKePX9TgOfVKdZtGZUdDDo6TXUmhNG+QeP\n" + "7Fv1n2PjQFkXiRwVLgJj06DvR+ft81x2gjEVS+vxWg0+cbJvBI2ItpNGnIWvbwl7\n" + "BTyNRjvsi7ljFn+SfaRBLXE4aygQFQ9UCHNNYtkBO73BXv/SgcFXzSDDN5ZMfpg9\n" + "SSWkEApFAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" + "ADAdBgNVHQ4EFgQUTBVqWCSLkLZte75Q9bgKeM851qowDQYJKoZIhvcNAQELBQAD\n" + "ggEBAH3bezfaVpnyqZRJsZ8sHAIpJWa03mHl/mqRpT0qg45Agzwo7yb5dubiHUBJ\n" + "BK/kAMhICjHAH+6E5XubGVSFvbzBX1FeKQQgzghN4niosOCLZPUtl8gJGZlsOoCy\n" + "6HldkxXa26GBZR0NvJb/p83VA7w5Zlp5j7Rp2VkWwRniaPex39dogDX3IwnoZKzL\n" + "ogyeNQPG2qLDBdZRAVng0eJK1Ml5PHxoEkcFwFsxd4B1cJV0VCMk7X7oEc9qBtUB\n" + "Ye/bst72puWDK1lBhT6EFhDDbY9xKm7pvUkGx80gWm9JZ0xGCaoM4tyEAaCd9tYZ\n" + "JFvnIEGJGeGjlRLJZGS4mZ/Q5mI=\n" + "-----END CERTIFICATE-----\n", + NULL }; /* Name constraints: DNSname in excluded range */ static const char *nc_bad3[] = { -/* CN=www.example.com */ -"-----BEGIN CERTIFICATE-----\n" -"MIIDPDCCAiSgAwIBAgIMU/xvqR+qZTQTaWIIMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" -"BgNVBAMTBENBLTEwIhgPMjAxNDA4MjYxMTI5NDVaGA85OTk5MTIzMTIzNTk1OVow\n" -"LTEYMBYGA1UEAxMPd3d3LmV4YW1wbGUuY29tMREwDwYDVQQKEwhzZXJ2ZXItMjCC\n" -"ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ46qo4PFrBfYlQXSgtbk/rO\n" -"0aO8/Gh/bIh4c/JX0RfqC55bnfbkO9SwwR+eU76INyVb1exmd7qsl4R2EgS8V3Gf\n" -"3K5k4tNecMfxT98MWiuSSp8Q8+affUF5t9TSLujL1dckMlPfH9hdxCYhJGH51mkf\n" -"wr3oEmwNXsA9OQ8oxq2i8WxQTJGUXkwx/k2L2NRF3L8vjRnXRfKSISkkDXeKYMvo\n" -"V5ElQwlKo0sonttUIGOVav8Cf4GnFQzSJW+RfANTniGIq16jE+flKz1kQYRLLoeA\n" -"fgH/1vI1v5xqMURNW/BQlawAE0HGj4MAyfebhsWmhqmcNqGBf1OfHMNdB1vamGkC\n" -"AwEAAaN2MHQwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNV\n" -"HQ8BAf8EBQMDB6AAMB0GA1UdDgQWBBRiCra2BJERmr2/+Klot32criLTbTAfBgNV\n" -"HSMEGDAWgBToCEW507CZ42L/fn7H+DLcx+zW/DANBgkqhkiG9w0BAQsFAAOCAQEA\n" -"fsG45/VuJzw5DRbrE6o67T3EgFfPCzr+xc0JmTJSCHvWIx+2O1VspmJiArNTwQ5O\n" -"l8Hq2Sag9Wi0cyRC8lVKPbC7Im2fZ4m4endOhiEmaOHBCru5bIFRwDvtG3u+yEYI\n" -"rzRU+6PdwmLYwc+ks8qEqACw772nElJxOWXmYEMtFpYh8eujfzjmUGIJyTotrm72\n" -"WX8phKA/xogZaSLD21t8u77PE/JEcJ2LXAa9dq6pGYru1vyuRqq8ZeWiVAAqD6hZ\n" -"cglKk8dLi6esywQMGEGqhRx9y1A0mPZO+M599GOgWTbShUB3pUyaLLLLnD9Dciwq\n" -"4E4iP9rdfgStOfz12BsKOw==\n" -"-----END CERTIFICATE-----\n", -/* Name Constraints (critical): + /* CN=www.example.com */ + "-----BEGIN CERTIFICATE-----\n" + "MIIDPDCCAiSgAwIBAgIMU/xvqR+qZTQTaWIIMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTEwIhgPMjAxNDA4MjYxMTI5NDVaGA85OTk5MTIzMTIzNTk1OVow\n" + "LTEYMBYGA1UEAxMPd3d3LmV4YW1wbGUuY29tMREwDwYDVQQKEwhzZXJ2ZXItMjCC\n" + "ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ46qo4PFrBfYlQXSgtbk/rO\n" + "0aO8/Gh/bIh4c/JX0RfqC55bnfbkO9SwwR+eU76INyVb1exmd7qsl4R2EgS8V3Gf\n" + "3K5k4tNecMfxT98MWiuSSp8Q8+affUF5t9TSLujL1dckMlPfH9hdxCYhJGH51mkf\n" + "wr3oEmwNXsA9OQ8oxq2i8WxQTJGUXkwx/k2L2NRF3L8vjRnXRfKSISkkDXeKYMvo\n" + "V5ElQwlKo0sonttUIGOVav8Cf4GnFQzSJW+RfANTniGIq16jE+flKz1kQYRLLoeA\n" + "fgH/1vI1v5xqMURNW/BQlawAE0HGj4MAyfebhsWmhqmcNqGBf1OfHMNdB1vamGkC\n" + "AwEAAaN2MHQwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNV\n" + "HQ8BAf8EBQMDB6AAMB0GA1UdDgQWBBRiCra2BJERmr2/+Klot32criLTbTAfBgNV\n" + "HSMEGDAWgBToCEW507CZ42L/fn7H+DLcx+zW/DANBgkqhkiG9w0BAQsFAAOCAQEA\n" + "fsG45/VuJzw5DRbrE6o67T3EgFfPCzr+xc0JmTJSCHvWIx+2O1VspmJiArNTwQ5O\n" + "l8Hq2Sag9Wi0cyRC8lVKPbC7Im2fZ4m4endOhiEmaOHBCru5bIFRwDvtG3u+yEYI\n" + "rzRU+6PdwmLYwc+ks8qEqACw772nElJxOWXmYEMtFpYh8eujfzjmUGIJyTotrm72\n" + "WX8phKA/xogZaSLD21t8u77PE/JEcJ2LXAa9dq6pGYru1vyuRqq8ZeWiVAAqD6hZ\n" + "cglKk8dLi6esywQMGEGqhRx9y1A0mPZO+M599GOgWTbShUB3pUyaLLLLnD9Dciwq\n" + "4E4iP9rdfgStOfz12BsKOw==\n" + "-----END CERTIFICATE-----\n", + /* Name Constraints (critical): Excluded: DNSname: example.com */ -"-----BEGIN CERTIFICATE-----\n" -"MIIDIjCCAgqgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" -"MCIYDzIwMTQwODI2MTEyOTQ1WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" -"BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW2Z64Ax+MNj1j\n" -"2QM9hjP4ybs+mz51vfDAlDVVdh2bzJOHyjTIlzI71QloH9aPuv5d92tTxe7/7afY\n" -"fWC61AF0WKj7x8h570IW0Zye4ITEnDLlqk5Bn46IP9fWDq5xYVEGMaYT4l409Fyw\n" -"JUZjfXqMefAXhj55wZoz+WMM0AB5LABlojLkV+iPMVJgfYWhcVijd92Yebp8R2/+\n" -"z1nF0vQtV01tatWTEiJajPRHZCwVe71rXEf02nYiqCw5RwLZrsug5LZ+K8LoBbeE\n" -"ezcJT5y8uf4mpTmTj2Po7Kby22yl1wkVV925a2Of7ufDL3d56SIM1foNXAAmlFar\n" -"M5Y9hIZLAgMBAAGjgYQwgYEwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHR4BAf8EEzAR\n" -"oQ8wDYILZXhhbXBsZS5jb20wDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQU6AhF\n" -"udOwmeNi/35+x/gy3Mfs1vwwHwYDVR0jBBgwFoAUWU1t/YrnYJGhEfuoDj42A4ui\n" -"j0gwDQYJKoZIhvcNAQELBQADggEBAMj2jjHmYLWxGMkLOIQ/MGtvchZ+v6vmEl7m\n" -"GaoHkz0sxFeJqs7mwcybvwG4tlHB/PhaLTH4HfN6PLNbRA4oamr3gFsEtd/JRihw\n" -"X/5CvdJdu/d7uN36yrD5ZTJmt5v1sAXqzkVYXHUSQLOLTIVfwQfUv8IrxTWgbhNI\n" -"mIi55bjCyOWYzZsZ5kTDNFcBkoYiMks2fVuUdP8xrxoweedVswUdkwg1TyWLikG3\n" -"47VuQP3eA7+zEkFUeywG89DTOpDURAlvBzaVTjKn++3RgH/A4Wa+MX6HTHXjxBIU\n" -"1uGcMjhPjc99F81RaYdIlFsQiQ74b5RwdSvGo0e67ssgar0XKgw=\n" -"-----END CERTIFICATE-----\n", -"-----BEGIN CERTIFICATE-----\n" -"MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" -"MCIYDzIwMTQwODI2MTEyOTQ1WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" -"BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDYTAYDM0lZ+RMg\n" -"M1M3q4n6H/VebQ1CG1ztkinGzj7eH+fNyi9Wq5EqB/0S7jVPEuD0o5jBrwI6XFoS\n" -"MQiWtqWHGh47qijX8y/oc75Sn/2b1gGF3zDWM9LygZZW2+QOIrvK5TcU+rAmXKsA\n" -"765z0nTIbL3vNr9n0yEM3E13tk3Qjqx+OLhJ/ZyLKW+w+BuhLp79LcVtjNnlVfvC\n" -"nVgLvo69YGdJxhPUjjVqKwTlvptyzELQSSQMenPmvhz2kRXjQ/6jog4tb1qkzfpP\n" -"eYB0MVgSLeWBgNF3VLTSH06RHvXEQcdP2e3AR67sJxd6UJ4vOo1widQs0yWTZpCB\n" -"ZJawOPqDAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" -"ADAdBgNVHQ4EFgQUWU1t/YrnYJGhEfuoDj42A4uij0gwDQYJKoZIhvcNAQELBQAD\n" -"ggEBACUbydVQKZi5ulzn/lQK5x/DZySJflrevZ1plV7BVBhZhlvBO0VARGNn+NW5\n" -"G9RqY+itmyBbW/Fl43gWiHQynYneK9tYBub7WeJqr9iTX4zvI7V8fk/vbyfVRODX\n" -"cJ8JzeLYqi6Hm1PK7Q9dz0rgyulXeuCyDeQ4jzoGIm2l7atUoGZB0f9YCJyeV2ew\n" -"t8jMZr2sSVMgvT87S/EHMe5q5YAJQzDBAadH64icaxW3e03UeH6JYblohsZVQTIE\n" -"wl60jozIStml73oyocfytsErDdKArrSSHxHaygAqoVu+9O5U90vwK6VDuGF0YzZj\n" -"ZKOAu2HuFHpCMbYzUYi3FMOUU5k=\n" -"-----END CERTIFICATE-----\n", -NULL + "-----BEGIN CERTIFICATE-----\n" + "MIIDIjCCAgqgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwODI2MTEyOTQ1WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW2Z64Ax+MNj1j\n" + "2QM9hjP4ybs+mz51vfDAlDVVdh2bzJOHyjTIlzI71QloH9aPuv5d92tTxe7/7afY\n" + "fWC61AF0WKj7x8h570IW0Zye4ITEnDLlqk5Bn46IP9fWDq5xYVEGMaYT4l409Fyw\n" + "JUZjfXqMefAXhj55wZoz+WMM0AB5LABlojLkV+iPMVJgfYWhcVijd92Yebp8R2/+\n" + "z1nF0vQtV01tatWTEiJajPRHZCwVe71rXEf02nYiqCw5RwLZrsug5LZ+K8LoBbeE\n" + "ezcJT5y8uf4mpTmTj2Po7Kby22yl1wkVV925a2Of7ufDL3d56SIM1foNXAAmlFar\n" + "M5Y9hIZLAgMBAAGjgYQwgYEwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHR4BAf8EEzAR\n" + "oQ8wDYILZXhhbXBsZS5jb20wDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQU6AhF\n" + "udOwmeNi/35+x/gy3Mfs1vwwHwYDVR0jBBgwFoAUWU1t/YrnYJGhEfuoDj42A4ui\n" + "j0gwDQYJKoZIhvcNAQELBQADggEBAMj2jjHmYLWxGMkLOIQ/MGtvchZ+v6vmEl7m\n" + "GaoHkz0sxFeJqs7mwcybvwG4tlHB/PhaLTH4HfN6PLNbRA4oamr3gFsEtd/JRihw\n" + "X/5CvdJdu/d7uN36yrD5ZTJmt5v1sAXqzkVYXHUSQLOLTIVfwQfUv8IrxTWgbhNI\n" + "mIi55bjCyOWYzZsZ5kTDNFcBkoYiMks2fVuUdP8xrxoweedVswUdkwg1TyWLikG3\n" + "47VuQP3eA7+zEkFUeywG89DTOpDURAlvBzaVTjKn++3RgH/A4Wa+MX6HTHXjxBIU\n" + "1uGcMjhPjc99F81RaYdIlFsQiQ74b5RwdSvGo0e67ssgar0XKgw=\n" + "-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\n" + "MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwODI2MTEyOTQ1WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDYTAYDM0lZ+RMg\n" + "M1M3q4n6H/VebQ1CG1ztkinGzj7eH+fNyi9Wq5EqB/0S7jVPEuD0o5jBrwI6XFoS\n" + "MQiWtqWHGh47qijX8y/oc75Sn/2b1gGF3zDWM9LygZZW2+QOIrvK5TcU+rAmXKsA\n" + "765z0nTIbL3vNr9n0yEM3E13tk3Qjqx+OLhJ/ZyLKW+w+BuhLp79LcVtjNnlVfvC\n" + "nVgLvo69YGdJxhPUjjVqKwTlvptyzELQSSQMenPmvhz2kRXjQ/6jog4tb1qkzfpP\n" + "eYB0MVgSLeWBgNF3VLTSH06RHvXEQcdP2e3AR67sJxd6UJ4vOo1widQs0yWTZpCB\n" + "ZJawOPqDAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" + "ADAdBgNVHQ4EFgQUWU1t/YrnYJGhEfuoDj42A4uij0gwDQYJKoZIhvcNAQELBQAD\n" + "ggEBACUbydVQKZi5ulzn/lQK5x/DZySJflrevZ1plV7BVBhZhlvBO0VARGNn+NW5\n" + "G9RqY+itmyBbW/Fl43gWiHQynYneK9tYBub7WeJqr9iTX4zvI7V8fk/vbyfVRODX\n" + "cJ8JzeLYqi6Hm1PK7Q9dz0rgyulXeuCyDeQ4jzoGIm2l7atUoGZB0f9YCJyeV2ew\n" + "t8jMZr2sSVMgvT87S/EHMe5q5YAJQzDBAadH64icaxW3e03UeH6JYblohsZVQTIE\n" + "wl60jozIStml73oyocfytsErDdKArrSSHxHaygAqoVu+9O5U90vwK6VDuGF0YzZj\n" + "ZKOAu2HuFHpCMbYzUYi3FMOUU5k=\n" + "-----END CERTIFICATE-----\n", + NULL }; /* Name constraints: Multiple-level constraints, different subdomains */ static const char *nc_bad4[] = { -/* DNSname: sub2.example.org */ -"-----BEGIN CERTIFICATE-----\n" -"MIIDMjCCAhqgAwIBAgIBBzANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0y\n" -"MCAXDTA0MDIyOTA3MjE0MloYDzk5OTkxMjMxMjM1OTU5WjARMQ8wDQYDVQQDEwZz\n" -"ZXJ2ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtq4QWPb53ClQL\n" -"hpCyCf2oX/WnrX2FaPv8m4J29fpkSTn7uuasEjLzwKvltXPJp5fE9jJnX2JyrS5z\n" -"tBGcH7/OnxEOGtZN19gLQLRPqCjzGkez7moQEbpnO/M8xeUuil4CbuhcnTA93vjf\n" -"i2mxQMgjS/Ffblbbv5QR6R97Eu01w2gbar7S0nj3ctl2lYiBWFIcBVbunVgtlC8L\n" -"JgW6tv6jay/GZSUBTw8ijh0o0S1ZEVqoOBszDdLHFwO6m3XpMNocYKh2Eva9LcA+\n" -"NmVWywaAk84RiMttMjlc+Y3Q3UhEemgh0RTE5oEIFjV9Am4uBM8LcwvmIat2oYtM\n" -"rbhczTG9AgMBAAGjgZQwgZEwDAYDVR0TAQH/BAIwADAbBgNVHREEFDASghBzdWIy\n" -"LmV4YW1wbGUub3JnMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA8GA1UdDwEB/wQFAwMH\n" -"oAAwHQYDVR0OBBYEFM2roPUnRWzJSXG+5jGoBJDX5ZshMB8GA1UdIwQYMBaAFM2r\n" -"oPUnRWzJSXG+5jGoBJDX5ZshMA0GCSqGSIb3DQEBCwUAA4IBAQARXEGjiewd62mb\n" -"kiJ5ezzxgsnfLBlhBdrt6bTEWS1Ehnnx1HMfnerFuSmjk8SGsVXgHsqmzY5cg3Sy\n" -"449+VqkMESOiQRmj4DmNNLu25ShLWlcfDPXBFZavPtNKUrBEWfthI7ZvHBeNe18O\n" -"kkgYJGKLmMm5+Bz2uDOTBTPUmZkX98sUZgdcFyN8OI2q22MLWed0a+ZNZFRUN/Iw\n" -"9gg6fzSmMBShAIxei04CZE2Wx32a9tr+mNqHa+Puch2s2EqlYJBlDGa2QgMWA8IP\n" -"09CHQRxeICqV+cX6zJP4znQFqySX5rWWeD4FKkdQr8T1IX1bCcGKCkj1ulEntOjK\n" -"8ZOkdWuv\n" -"-----END CERTIFICATE-----\n", -/* Name Constraints (critical): + /* DNSname: sub2.example.org */ + "-----BEGIN CERTIFICATE-----\n" + "MIIDMjCCAhqgAwIBAgIBBzANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0y\n" + "MCAXDTA0MDIyOTA3MjE0MloYDzk5OTkxMjMxMjM1OTU5WjARMQ8wDQYDVQQDEwZz\n" + "ZXJ2ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtq4QWPb53ClQL\n" + "hpCyCf2oX/WnrX2FaPv8m4J29fpkSTn7uuasEjLzwKvltXPJp5fE9jJnX2JyrS5z\n" + "tBGcH7/OnxEOGtZN19gLQLRPqCjzGkez7moQEbpnO/M8xeUuil4CbuhcnTA93vjf\n" + "i2mxQMgjS/Ffblbbv5QR6R97Eu01w2gbar7S0nj3ctl2lYiBWFIcBVbunVgtlC8L\n" + "JgW6tv6jay/GZSUBTw8ijh0o0S1ZEVqoOBszDdLHFwO6m3XpMNocYKh2Eva9LcA+\n" + "NmVWywaAk84RiMttMjlc+Y3Q3UhEemgh0RTE5oEIFjV9Am4uBM8LcwvmIat2oYtM\n" + "rbhczTG9AgMBAAGjgZQwgZEwDAYDVR0TAQH/BAIwADAbBgNVHREEFDASghBzdWIy\n" + "LmV4YW1wbGUub3JnMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA8GA1UdDwEB/wQFAwMH\n" + "oAAwHQYDVR0OBBYEFM2roPUnRWzJSXG+5jGoBJDX5ZshMB8GA1UdIwQYMBaAFM2r\n" + "oPUnRWzJSXG+5jGoBJDX5ZshMA0GCSqGSIb3DQEBCwUAA4IBAQARXEGjiewd62mb\n" + "kiJ5ezzxgsnfLBlhBdrt6bTEWS1Ehnnx1HMfnerFuSmjk8SGsVXgHsqmzY5cg3Sy\n" + "449+VqkMESOiQRmj4DmNNLu25ShLWlcfDPXBFZavPtNKUrBEWfthI7ZvHBeNe18O\n" + "kkgYJGKLmMm5+Bz2uDOTBTPUmZkX98sUZgdcFyN8OI2q22MLWed0a+ZNZFRUN/Iw\n" + "9gg6fzSmMBShAIxei04CZE2Wx32a9tr+mNqHa+Puch2s2EqlYJBlDGa2QgMWA8IP\n" + "09CHQRxeICqV+cX6zJP4znQFqySX5rWWeD4FKkdQr8T1IX1bCcGKCkj1ulEntOjK\n" + "8ZOkdWuv\n" + "-----END CERTIFICATE-----\n", + /* Name Constraints (critical): Permitted: DNSname: sub1.example.org */ -"-----BEGIN CERTIFICATE-----\n" -"MIIDQjCCAiqgAwIBAgIBBzANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0x\n" -"MCAXDTA0MDIyOTA3MjE0MloYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" -"QS0yMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArauEFj2+dwpUC4aQ\n" -"sgn9qF/1p619hWj7/JuCdvX6ZEk5+7rmrBIy88Cr5bVzyaeXxPYyZ19icq0uc7QR\n" -"nB+/zp8RDhrWTdfYC0C0T6go8xpHs+5qEBG6ZzvzPMXlLopeAm7oXJ0wPd7434tp\n" -"sUDII0vxX25W27+UEekfexLtNcNoG2q+0tJ493LZdpWIgVhSHAVW7p1YLZQvCyYF\n" -"urb+o2svxmUlAU8PIo4dKNEtWRFaqDgbMw3SxxcDupt16TDaHGCodhL2vS3APjZl\n" -"VssGgJPOEYjLbTI5XPmN0N1IRHpoIdEUxOaBCBY1fQJuLgTPC3ML5iGrdqGLTK24\n" -"XM0xvQIDAQABo4GmMIGjMA8GA1UdEwEB/wQFMAMBAf8wGwYDVR0RBBQwEoIQc3Vi\n" -"MS5leGFtcGxlLm9yZzAiBgNVHR4BAf8EGDAWoBQwEoIQc3ViMS5leGFtcGxlLm9y\n" -"ZzAPBgNVHQ8BAf8EBQMDBwQAMB0GA1UdDgQWBBTNq6D1J0VsyUlxvuYxqASQ1+Wb\n" -"ITAfBgNVHSMEGDAWgBTNq6D1J0VsyUlxvuYxqASQ1+WbITANBgkqhkiG9w0BAQsF\n" -"AAOCAQEAR8wKnufviUhLtx0og+P/F52BcdQGgVoBdIpix57DeBQTn9PXuF70hPjg\n" -"a/ZeSR2b65JnyO49i9bBX8ctg/FR+LBHdxMRcIN+VxyKFBtyFc2cxW5a4BWaD9SG\n" -"hW6gzWviV3XwTfTKuY8h710cEP73Yyu1FOuejI34Jiz0sNXqhPc+08k9maFicjfk\n" -"Ftpft0y0YM1DJmUMDMQkpShb4kojLwsSYTxU8DTRHXvBHrAdH4Np50tm6FYIXUNS\n" -"iXlrg/c4VPwEsf5/sR+Ga60LPejZsrvhtvimUsGdNNVVWRtsgcT2jHXxyR1N1vJx\n" -"qPlLDNLLWp9nfCk/55QqSf34dcKomg==\n" -"-----END CERTIFICATE-----\n", -/* Name Constraints (critical): + "-----BEGIN CERTIFICATE-----\n" + "MIIDQjCCAiqgAwIBAgIBBzANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0x\n" + "MCAXDTA0MDIyOTA3MjE0MloYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0yMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArauEFj2+dwpUC4aQ\n" + "sgn9qF/1p619hWj7/JuCdvX6ZEk5+7rmrBIy88Cr5bVzyaeXxPYyZ19icq0uc7QR\n" + "nB+/zp8RDhrWTdfYC0C0T6go8xpHs+5qEBG6ZzvzPMXlLopeAm7oXJ0wPd7434tp\n" + "sUDII0vxX25W27+UEekfexLtNcNoG2q+0tJ493LZdpWIgVhSHAVW7p1YLZQvCyYF\n" + "urb+o2svxmUlAU8PIo4dKNEtWRFaqDgbMw3SxxcDupt16TDaHGCodhL2vS3APjZl\n" + "VssGgJPOEYjLbTI5XPmN0N1IRHpoIdEUxOaBCBY1fQJuLgTPC3ML5iGrdqGLTK24\n" + "XM0xvQIDAQABo4GmMIGjMA8GA1UdEwEB/wQFMAMBAf8wGwYDVR0RBBQwEoIQc3Vi\n" + "MS5leGFtcGxlLm9yZzAiBgNVHR4BAf8EGDAWoBQwEoIQc3ViMS5leGFtcGxlLm9y\n" + "ZzAPBgNVHQ8BAf8EBQMDBwQAMB0GA1UdDgQWBBTNq6D1J0VsyUlxvuYxqASQ1+Wb\n" + "ITAfBgNVHSMEGDAWgBTNq6D1J0VsyUlxvuYxqASQ1+WbITANBgkqhkiG9w0BAQsF\n" + "AAOCAQEAR8wKnufviUhLtx0og+P/F52BcdQGgVoBdIpix57DeBQTn9PXuF70hPjg\n" + "a/ZeSR2b65JnyO49i9bBX8ctg/FR+LBHdxMRcIN+VxyKFBtyFc2cxW5a4BWaD9SG\n" + "hW6gzWviV3XwTfTKuY8h710cEP73Yyu1FOuejI34Jiz0sNXqhPc+08k9maFicjfk\n" + "Ftpft0y0YM1DJmUMDMQkpShb4kojLwsSYTxU8DTRHXvBHrAdH4Np50tm6FYIXUNS\n" + "iXlrg/c4VPwEsf5/sR+Ga60LPejZsrvhtvimUsGdNNVVWRtsgcT2jHXxyR1N1vJx\n" + "qPlLDNLLWp9nfCk/55QqSf34dcKomg==\n" + "-----END CERTIFICATE-----\n", + /* Name Constraints (critical): Permitted: DNSname: example.org */ -"-----BEGIN CERTIFICATE-----\n" -"MIIDIDCCAgigAwIBAgIBBzANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" -"MCAXDTA0MDIyOTA3MjE0MloYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" -"QS0xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArauEFj2+dwpUC4aQ\n" -"sgn9qF/1p619hWj7/JuCdvX6ZEk5+7rmrBIy88Cr5bVzyaeXxPYyZ19icq0uc7QR\n" -"nB+/zp8RDhrWTdfYC0C0T6go8xpHs+5qEBG6ZzvzPMXlLopeAm7oXJ0wPd7434tp\n" -"sUDII0vxX25W27+UEekfexLtNcNoG2q+0tJ493LZdpWIgVhSHAVW7p1YLZQvCyYF\n" -"urb+o2svxmUlAU8PIo4dKNEtWRFaqDgbMw3SxxcDupt16TDaHGCodhL2vS3APjZl\n" -"VssGgJPOEYjLbTI5XPmN0N1IRHpoIdEUxOaBCBY1fQJuLgTPC3ML5iGrdqGLTK24\n" -"XM0xvQIDAQABo4GEMIGBMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0eAQH/BBMwEaAP\n" -"MA2CC2V4YW1wbGUub3JnMA8GA1UdDwEB/wQFAwMHBAAwHQYDVR0OBBYEFM2roPUn\n" -"RWzJSXG+5jGoBJDX5ZshMB8GA1UdIwQYMBaAFM2roPUnRWzJSXG+5jGoBJDX5Zsh\n" -"MA0GCSqGSIb3DQEBCwUAA4IBAQBr5K+BzFT2skeVkZ0fR8g6KcevlvAP7sOm8Ktm\n" -"nINBFi9ercrD4XAqkRTCYxDZ/6D9s10lf+CW4QLw2GOQer1D+znBzZZCqFfZ2+uL\n" -"ibQ+pth5IgsSxkxctowv7x3Y4C95TNAcWs9bWIHKgLqXhotk6mccEvxkyaPIL5yX\n" -"U2bs+tNpaqiwdCNjTJCo1+xdQwWZfk/oOMBn6Fihuc6eGP6L6Zj2J7TqO2hafrs4\n" -"lg1rYDU+cTtDy/eVt2UoYXLDnIm2EPcnTAaR6K3cLlh1HbeaUTDU2nE04riE8ntA\n" -"Mpu+t5TUUq+Zcx17zn54/W5oLC0wCGzzyLhh3/mLh6RLDYub\n" -"-----END CERTIFICATE-----\n", -"-----BEGIN CERTIFICATE-----\n" -"MIIC3jCCAcagAwIBAgIBBzANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" -"MCAXDTA0MDIyOTA3MjE0MloYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" -"QS0wMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArauEFj2+dwpUC4aQ\n" -"sgn9qF/1p619hWj7/JuCdvX6ZEk5+7rmrBIy88Cr5bVzyaeXxPYyZ19icq0uc7QR\n" -"nB+/zp8RDhrWTdfYC0C0T6go8xpHs+5qEBG6ZzvzPMXlLopeAm7oXJ0wPd7434tp\n" -"sUDII0vxX25W27+UEekfexLtNcNoG2q+0tJ493LZdpWIgVhSHAVW7p1YLZQvCyYF\n" -"urb+o2svxmUlAU8PIo4dKNEtWRFaqDgbMw3SxxcDupt16TDaHGCodhL2vS3APjZl\n" -"VssGgJPOEYjLbTI5XPmN0N1IRHpoIdEUxOaBCBY1fQJuLgTPC3ML5iGrdqGLTK24\n" -"XM0xvQIDAQABo0MwQTAPBgNVHRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBAAw\n" -"HQYDVR0OBBYEFM2roPUnRWzJSXG+5jGoBJDX5ZshMA0GCSqGSIb3DQEBCwUAA4IB\n" -"AQBtm548YFAtyKUyUyfz/iDPwgFq3PtxN0gfA2ZgrHG0vXDq49eDv7sQueTjY21T\n" -"GGkgyEEOlcbPzDC7hMrfaYSEGwrwbTkrWnrqk0rorFjjkjlKkx/9EuDQ/gjyQGrn\n" -"EvnFWwmxq+vambeRGxPWFRR9r+ugbL/xciZfT6OyoU8SZY4EpFu3e4ydmskdkt7R\n" -"qRPOpaHBuKygw4Uq5mhNaZDMy3FjtP+wt84UOOZbjqFQ8K8AZdAaDp3TDBtzoHED\n" -"lgv+PQMzYNnSsPVdvBC2fkgIWzZlyjeGMMtkUp3E7FeyFU1302g3xINRBmUcoO0c\n" -"jo6K7k6FZy3n6DsJ0q/os2wA\n" -"-----END CERTIFICATE-----\n", -NULL + "-----BEGIN CERTIFICATE-----\n" + "MIIDIDCCAgigAwIBAgIBBzANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCAXDTA0MDIyOTA3MjE0MloYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArauEFj2+dwpUC4aQ\n" + "sgn9qF/1p619hWj7/JuCdvX6ZEk5+7rmrBIy88Cr5bVzyaeXxPYyZ19icq0uc7QR\n" + "nB+/zp8RDhrWTdfYC0C0T6go8xpHs+5qEBG6ZzvzPMXlLopeAm7oXJ0wPd7434tp\n" + "sUDII0vxX25W27+UEekfexLtNcNoG2q+0tJ493LZdpWIgVhSHAVW7p1YLZQvCyYF\n" + "urb+o2svxmUlAU8PIo4dKNEtWRFaqDgbMw3SxxcDupt16TDaHGCodhL2vS3APjZl\n" + "VssGgJPOEYjLbTI5XPmN0N1IRHpoIdEUxOaBCBY1fQJuLgTPC3ML5iGrdqGLTK24\n" + "XM0xvQIDAQABo4GEMIGBMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0eAQH/BBMwEaAP\n" + "MA2CC2V4YW1wbGUub3JnMA8GA1UdDwEB/wQFAwMHBAAwHQYDVR0OBBYEFM2roPUn\n" + "RWzJSXG+5jGoBJDX5ZshMB8GA1UdIwQYMBaAFM2roPUnRWzJSXG+5jGoBJDX5Zsh\n" + "MA0GCSqGSIb3DQEBCwUAA4IBAQBr5K+BzFT2skeVkZ0fR8g6KcevlvAP7sOm8Ktm\n" + "nINBFi9ercrD4XAqkRTCYxDZ/6D9s10lf+CW4QLw2GOQer1D+znBzZZCqFfZ2+uL\n" + "ibQ+pth5IgsSxkxctowv7x3Y4C95TNAcWs9bWIHKgLqXhotk6mccEvxkyaPIL5yX\n" + "U2bs+tNpaqiwdCNjTJCo1+xdQwWZfk/oOMBn6Fihuc6eGP6L6Zj2J7TqO2hafrs4\n" + "lg1rYDU+cTtDy/eVt2UoYXLDnIm2EPcnTAaR6K3cLlh1HbeaUTDU2nE04riE8ntA\n" + "Mpu+t5TUUq+Zcx17zn54/W5oLC0wCGzzyLhh3/mLh6RLDYub\n" + "-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\n" + "MIIC3jCCAcagAwIBAgIBBzANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCAXDTA0MDIyOTA3MjE0MloYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0wMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArauEFj2+dwpUC4aQ\n" + "sgn9qF/1p619hWj7/JuCdvX6ZEk5+7rmrBIy88Cr5bVzyaeXxPYyZ19icq0uc7QR\n" + "nB+/zp8RDhrWTdfYC0C0T6go8xpHs+5qEBG6ZzvzPMXlLopeAm7oXJ0wPd7434tp\n" + "sUDII0vxX25W27+UEekfexLtNcNoG2q+0tJ493LZdpWIgVhSHAVW7p1YLZQvCyYF\n" + "urb+o2svxmUlAU8PIo4dKNEtWRFaqDgbMw3SxxcDupt16TDaHGCodhL2vS3APjZl\n" + "VssGgJPOEYjLbTI5XPmN0N1IRHpoIdEUxOaBCBY1fQJuLgTPC3ML5iGrdqGLTK24\n" + "XM0xvQIDAQABo0MwQTAPBgNVHRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBAAw\n" + "HQYDVR0OBBYEFM2roPUnRWzJSXG+5jGoBJDX5ZshMA0GCSqGSIb3DQEBCwUAA4IB\n" + "AQBtm548YFAtyKUyUyfz/iDPwgFq3PtxN0gfA2ZgrHG0vXDq49eDv7sQueTjY21T\n" + "GGkgyEEOlcbPzDC7hMrfaYSEGwrwbTkrWnrqk0rorFjjkjlKkx/9EuDQ/gjyQGrn\n" + "EvnFWwmxq+vambeRGxPWFRR9r+ugbL/xciZfT6OyoU8SZY4EpFu3e4ydmskdkt7R\n" + "qRPOpaHBuKygw4Uq5mhNaZDMy3FjtP+wt84UOOZbjqFQ8K8AZdAaDp3TDBtzoHED\n" + "lgv+PQMzYNnSsPVdvBC2fkgIWzZlyjeGMMtkUp3E7FeyFU1302g3xINRBmUcoO0c\n" + "jo6K7k6FZy3n6DsJ0q/os2wA\n" + "-----END CERTIFICATE-----\n", + NULL }; /* Name constraints: IPAddress_v4 in excluded range */ static const char *nc_bad5[] = { - /* IPAddress: 203.0.113.10 */ - "-----BEGIN CERTIFICATE-----\n" - "MIIEHDCCAoSgAwIBAgIMV3OYdiegYYrQTBXhMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTEwIBcNMTYwNjI5MDk0NDIyWhgPOTk5OTEyMzEyMzU5NTlaMBMx\n" - "ETAPBgNVBAMTCHNlcnZlci0yMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKC\n" - "AYEA3Gp+KHwqvpNlEVkKyW1etHhOCXJPde/OJ7INv5RAd2xH5pQJI/mY7ET8RAz3\n" - "oh4t9Ev65yljuhE1Q5qDGkjZrAhSpY8OwIQ7ZKtxH6zdKTsegAr60cfShgk2bDef\n" - "wxbz92UBccyqzTQqWdi0Xvt9nVOkNL6EJWJ9eOW7s5fQgeEBlHYIzZyZs8ndiYqw\n" - "Hpy6gg4XG777A0pgq96o8ybNBIHALV9aq1UGLWXGvEbi+yc6pQMYCg7OMcZq9aVO\n" - "KBlR6HIxEohhFIWctmQDwd6ey73YV5XrDTRB7Qpe66/pqygQZNqMSaa4KL4z9KcL\n" - "YNUtIFC39ivNBGT1gM5V3c69mkR38kYwRy0UU7C84/8t45+e6ZmSqe63RKKioaJU\n" - "LlTCgHXwI1oeYlt7Pnm0kaWgArDJxBk5n1YxEoqkVXJ+lFy/qIF67Dosv3bNh2PU\n" - "iPpLmbuFmdqq+E9DENeqji21CcPkvY1ekdib4JLolNJCVaRLnXPc5o0UEZrhCqfq\n" - "UYfBAgMBAAGjcjBwMAwGA1UdEwEB/wQCMAAwDwYDVR0RBAgwBocEywBxCjAPBgNV\n" - "HQ8BAf8EBQMDB6AAMB0GA1UdDgQWBBRcj6YutTxQa7DfoqMSjPPQgv+p0TAfBgNV\n" - "HSMEGDAWgBSSabOPqlecJ2jDyxpE3oaYyIBWBDANBgkqhkiG9w0BAQsFAAOCAYEA\n" - "OyCT0ywwikYVSKEK2npyzAx7mkbkfrAHmkcCnVEgRonXKIWOL8lbRQp0m85ynVea\n" - "aTfAVc0SNc7DMPR4tw+1gCpgsqhGEuip2Ltol9bhUovzfIpveUdJgeCI/NHBPAHH\n" - "kwYgua8dcOwjb2SDCieXvWlE5DZUHWHNYxgTKQVB/WfAjmQbuF5olusFc2UtSk3z\n" - "cnpBDb0+jUHfqCo8On+Wk5cc76mCvrcl9DLRFvPWN6T5IhisGVA93M1lIMQ9J9jN\n" - "Q8SxZ7OeNaOXhBX2j27KzV7IXy0vqajdQDui1XV3Cos+EUFAt4Es8gUg5I8gNETl\n" - "DqGglGUz2fVnLAQLClnVkZ0ExF3kDao7JwU2nl2XbzPcwwGGqLf06s5sEWinAZ2x\n" - "k4L6YBjhauxndIkk0567/+GVeUaJxtruYA9rn/vJO6kEZXUy9eY0BF3GXQ4CKYG/\n" - "FmFqfCwQ71LshpMsKncFp66QESAwmq9qaUqXoWSYtRABJKb9gYH42Fx0EY7QFjhq\n" - "-----END CERTIFICATE-----\n", - /* Name Constraints (critical): + /* IPAddress: 203.0.113.10 */ + "-----BEGIN CERTIFICATE-----\n" + "MIIEHDCCAoSgAwIBAgIMV3OYdiegYYrQTBXhMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTEwIBcNMTYwNjI5MDk0NDIyWhgPOTk5OTEyMzEyMzU5NTlaMBMx\n" + "ETAPBgNVBAMTCHNlcnZlci0yMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKC\n" + "AYEA3Gp+KHwqvpNlEVkKyW1etHhOCXJPde/OJ7INv5RAd2xH5pQJI/mY7ET8RAz3\n" + "oh4t9Ev65yljuhE1Q5qDGkjZrAhSpY8OwIQ7ZKtxH6zdKTsegAr60cfShgk2bDef\n" + "wxbz92UBccyqzTQqWdi0Xvt9nVOkNL6EJWJ9eOW7s5fQgeEBlHYIzZyZs8ndiYqw\n" + "Hpy6gg4XG777A0pgq96o8ybNBIHALV9aq1UGLWXGvEbi+yc6pQMYCg7OMcZq9aVO\n" + "KBlR6HIxEohhFIWctmQDwd6ey73YV5XrDTRB7Qpe66/pqygQZNqMSaa4KL4z9KcL\n" + "YNUtIFC39ivNBGT1gM5V3c69mkR38kYwRy0UU7C84/8t45+e6ZmSqe63RKKioaJU\n" + "LlTCgHXwI1oeYlt7Pnm0kaWgArDJxBk5n1YxEoqkVXJ+lFy/qIF67Dosv3bNh2PU\n" + "iPpLmbuFmdqq+E9DENeqji21CcPkvY1ekdib4JLolNJCVaRLnXPc5o0UEZrhCqfq\n" + "UYfBAgMBAAGjcjBwMAwGA1UdEwEB/wQCMAAwDwYDVR0RBAgwBocEywBxCjAPBgNV\n" + "HQ8BAf8EBQMDB6AAMB0GA1UdDgQWBBRcj6YutTxQa7DfoqMSjPPQgv+p0TAfBgNV\n" + "HSMEGDAWgBSSabOPqlecJ2jDyxpE3oaYyIBWBDANBgkqhkiG9w0BAQsFAAOCAYEA\n" + "OyCT0ywwikYVSKEK2npyzAx7mkbkfrAHmkcCnVEgRonXKIWOL8lbRQp0m85ynVea\n" + "aTfAVc0SNc7DMPR4tw+1gCpgsqhGEuip2Ltol9bhUovzfIpveUdJgeCI/NHBPAHH\n" + "kwYgua8dcOwjb2SDCieXvWlE5DZUHWHNYxgTKQVB/WfAjmQbuF5olusFc2UtSk3z\n" + "cnpBDb0+jUHfqCo8On+Wk5cc76mCvrcl9DLRFvPWN6T5IhisGVA93M1lIMQ9J9jN\n" + "Q8SxZ7OeNaOXhBX2j27KzV7IXy0vqajdQDui1XV3Cos+EUFAt4Es8gUg5I8gNETl\n" + "DqGglGUz2fVnLAQLClnVkZ0ExF3kDao7JwU2nl2XbzPcwwGGqLf06s5sEWinAZ2x\n" + "k4L6YBjhauxndIkk0567/+GVeUaJxtruYA9rn/vJO6kEZXUy9eY0BF3GXQ4CKYG/\n" + "FmFqfCwQ71LshpMsKncFp66QESAwmq9qaUqXoWSYtRABJKb9gYH42Fx0EY7QFjhq\n" + "-----END CERTIFICATE-----\n", + /* Name Constraints (critical): Permitted: IPAddress: 203.0.113.0/24 Excluded: IPAddress: 203.0.113.0/26 */ - "-----BEGIN CERTIFICATE-----\n" - "MIIEKzCCApOgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCAXDTE2MDYyOTA5NDQyMVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" - "QS0xMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA33/Xbt7c8Y+UxoU3\n" - "4O0f+OTJF59lqe4UJK9owqXpiyt4d4hWwZV9EkPT9ZaysPaL05+AXdfXsfUz3ClE\n" - "RPvK1zjR7WBqhu7dQ8RGNomaP0gY7eVqa0/OcDe1Z4ogmf27WbAUVR4xDZP18Qqy\n" - "HB9BDStOJ24wbVfYgbJq3djb886yHDch5/mtdI4/C6aZqayaLjmoNs7UovuRlQV/\n" - "Tdid3rleUeoH9xFD3CeI+PZMIbhyQww66qMiCkrTtUN3EOtrsvWwuxUTH1dedEI3\n" - "tboI8UO+e2VJsDjbdzGIV0+HnvwoPQHYRlrog4RW9pNSTst+DeA4XY8+/FVnfhdT\n" - "vDdbcmit4BxdtZf9npP5iaIQTOHNntdAAPOFCoALiCMF0parEKNwNFHa98hXr+Nj\n" - "u4/oQM57fMcOC1z4y1pt6HK0zzFNhwHUrZUlAgcnXJ9bW510m6vu2LEFgJb7mM3L\n" - "ku+ddujNOoL0BxsaaUJCh2IP2xC0rXGi6tNwR1Bv5RBnenDxAgMBAAGjgY8wgYww\n" - "DwYDVR0TAQH/BAUwAwEB/zAoBgNVHR4BAf8EHjAcoAwwCocIywBxAP///wChDDAK\n" - "hwjLAHEA////wDAPBgNVHQ8BAf8EBQMDBwQAMB0GA1UdDgQWBBSSabOPqlecJ2jD\n" - "yxpE3oaYyIBWBDAfBgNVHSMEGDAWgBTAJHQ/p0WPW1fW+sKB5zbefu6HDTANBgkq\n" - "hkiG9w0BAQsFAAOCAYEAbPahfACWMab9ccrS+pBdz+4hiy+LmvOP4FRFDz/zOCsG\n" - "iZc61cYPWmRYWGsyWz2CksTg+Ktx/85PPvKTmEctK9NSehUgKESur3CPTp32k8YZ\n" - "4NMXYXtwNYLPe5F6uehdPst5h7lg3Rz2pPqKopQ8lfv2qYTjtNCJFZ9wCtijqWwJ\n" - "gZA9kFfPlHeY7kdnTY/Uhw1UVC0ty6daWXkKq4fhiiCXqcIO81GQHwOYySQSJef+\n" - "KQ3m7QHascLKSzAISbK9Ncy/C/fIcM7pQmODKPwY/K3V1CQky6jmoZQ5LUbpXEW3\n" - "qOjCElV2WMnkj5WuxDUeoVEKtnFGXI0UY5EY1z89GP7BatbNKLyodfp9qgjuXgr9\n" - "DacHAUWOH6sH/wg4d5pgySVJeos5l6DzwgkyECaAGFM2t08waO2Xk9SgpmfMCxCM\n" - "Gop4d5bIEMC8qScQmA4S1wfuoQQRRZiy2A4QckXoJ1OxLj1XVgossO21h8f9uNFJ\n" - "nfnYYSRbIp+X0mo7JjHO\n" - "-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\n" - "MIID3jCCAkagAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCAXDTE2MDYyOTA5NDQyMVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" - "QS0wMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAs4uT4SEkVU0hdD6p\n" - "aAkXBPeVl2y37jNB88rwam6kbHKfTQ/JpTpiXULo/dCmw0fr8np/FfoMZTUk8DMm\n" - "zIsPjgx0yDx/PeUeA1Jw+KA60rApvxhtHhw2XLkF9hkU3YVwdcKfe1Cy3ZUT+3Xr\n" - "rfoLLyRTR8qhj2wS/ARTx989cGbOpMGgFQxOrFZhm8N2/ORYDYJQYNTeqjEmHsuu\n" - "wR0lvKj81hVe3mu6OsK4THbVpfeNW52zWW1FXwE3xbEXuckhzs2ZAc7t7SWzqD0u\n" - "8lVWb6vXI7LGv217EpIRwtqa9zUHXLt4UqV+kqiUxLUOjxfitJI8CPYGPhc7aocC\n" - "popaFqZJcLYvSJJY6Ya2ihZ4VyXQoXD+N8nQsFIm6dernNYQH2rB8plknAWbQqUG\n" - "bhjTKX/oF2LCk8ow0KumqQre1UgcPLNiLQRAhyVdXgCMQ1bd0mFrwXUT2m2X+0sn\n" - "DmW1by2bH2cevKtVaVMHq1Y6K7mcMb7pyQak7gFYAdu3D1u5AgMBAAGjQzBBMA8G\n" - "A1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQUwCR0P6dF\n" - "j1tX1vrCgec23n7uhw0wDQYJKoZIhvcNAQELBQADggGBABfMsNqRJrgIsQdneT1B\n" - "s6fXdAlPkvbRvnScn+i/OOQxolgDQwge9A+0JxqTMtvxs+X5ahi79pPzqqzH1iYV\n" - "2eBY1JpmYbdOYBVoLUQG7GG6ZRJWcDtAjGhnxgoc+lxVePpSsiZWpXFzAYbV7jQa\n" - "2BXvzAk+uuBCUqKhrkmGZ+ZdQ8SlDjrQyblhKLy3vPi2LhfeNwTWAv2Qx8V2XRyB\n" - "BQSchuMBq19mSppzjN+e5ixiRoNx02fH8dfZ0bu4ONUZcoECwuCmKW6UchQTL8Yf\n" - "GJH9beqEAHevvE8Qn5aZcpX/BPBpx5jzOFXAD4Oqg+tY9T/vfgdElD2fQOI0gJQV\n" - "bzC83bbAkqrjeZXyn0srzegPRyVczuv26SYGjhBsLVk5pAt6Msfnu5g3MC3BjKgc\n" - "/gYV2bFtj3NMu8bAPYkKE9G/+0PT/a3/B5k3iw9FMxuZD/vjYIdSo/oloM+Ht9WG\n" - "EYaTPDOTm4sXdqMVlPIyhwxADNrPnlAke68rKN7H5ChozQ==\n" - "-----END CERTIFICATE-----\n", - NULL + "-----BEGIN CERTIFICATE-----\n" + "MIIEKzCCApOgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCAXDTE2MDYyOTA5NDQyMVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0xMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA33/Xbt7c8Y+UxoU3\n" + "4O0f+OTJF59lqe4UJK9owqXpiyt4d4hWwZV9EkPT9ZaysPaL05+AXdfXsfUz3ClE\n" + "RPvK1zjR7WBqhu7dQ8RGNomaP0gY7eVqa0/OcDe1Z4ogmf27WbAUVR4xDZP18Qqy\n" + "HB9BDStOJ24wbVfYgbJq3djb886yHDch5/mtdI4/C6aZqayaLjmoNs7UovuRlQV/\n" + "Tdid3rleUeoH9xFD3CeI+PZMIbhyQww66qMiCkrTtUN3EOtrsvWwuxUTH1dedEI3\n" + "tboI8UO+e2VJsDjbdzGIV0+HnvwoPQHYRlrog4RW9pNSTst+DeA4XY8+/FVnfhdT\n" + "vDdbcmit4BxdtZf9npP5iaIQTOHNntdAAPOFCoALiCMF0parEKNwNFHa98hXr+Nj\n" + "u4/oQM57fMcOC1z4y1pt6HK0zzFNhwHUrZUlAgcnXJ9bW510m6vu2LEFgJb7mM3L\n" + "ku+ddujNOoL0BxsaaUJCh2IP2xC0rXGi6tNwR1Bv5RBnenDxAgMBAAGjgY8wgYww\n" + "DwYDVR0TAQH/BAUwAwEB/zAoBgNVHR4BAf8EHjAcoAwwCocIywBxAP///wChDDAK\n" + "hwjLAHEA////wDAPBgNVHQ8BAf8EBQMDBwQAMB0GA1UdDgQWBBSSabOPqlecJ2jD\n" + "yxpE3oaYyIBWBDAfBgNVHSMEGDAWgBTAJHQ/p0WPW1fW+sKB5zbefu6HDTANBgkq\n" + "hkiG9w0BAQsFAAOCAYEAbPahfACWMab9ccrS+pBdz+4hiy+LmvOP4FRFDz/zOCsG\n" + "iZc61cYPWmRYWGsyWz2CksTg+Ktx/85PPvKTmEctK9NSehUgKESur3CPTp32k8YZ\n" + "4NMXYXtwNYLPe5F6uehdPst5h7lg3Rz2pPqKopQ8lfv2qYTjtNCJFZ9wCtijqWwJ\n" + "gZA9kFfPlHeY7kdnTY/Uhw1UVC0ty6daWXkKq4fhiiCXqcIO81GQHwOYySQSJef+\n" + "KQ3m7QHascLKSzAISbK9Ncy/C/fIcM7pQmODKPwY/K3V1CQky6jmoZQ5LUbpXEW3\n" + "qOjCElV2WMnkj5WuxDUeoVEKtnFGXI0UY5EY1z89GP7BatbNKLyodfp9qgjuXgr9\n" + "DacHAUWOH6sH/wg4d5pgySVJeos5l6DzwgkyECaAGFM2t08waO2Xk9SgpmfMCxCM\n" + "Gop4d5bIEMC8qScQmA4S1wfuoQQRRZiy2A4QckXoJ1OxLj1XVgossO21h8f9uNFJ\n" + "nfnYYSRbIp+X0mo7JjHO\n" + "-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\n" + "MIID3jCCAkagAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCAXDTE2MDYyOTA5NDQyMVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0wMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAs4uT4SEkVU0hdD6p\n" + "aAkXBPeVl2y37jNB88rwam6kbHKfTQ/JpTpiXULo/dCmw0fr8np/FfoMZTUk8DMm\n" + "zIsPjgx0yDx/PeUeA1Jw+KA60rApvxhtHhw2XLkF9hkU3YVwdcKfe1Cy3ZUT+3Xr\n" + "rfoLLyRTR8qhj2wS/ARTx989cGbOpMGgFQxOrFZhm8N2/ORYDYJQYNTeqjEmHsuu\n" + "wR0lvKj81hVe3mu6OsK4THbVpfeNW52zWW1FXwE3xbEXuckhzs2ZAc7t7SWzqD0u\n" + "8lVWb6vXI7LGv217EpIRwtqa9zUHXLt4UqV+kqiUxLUOjxfitJI8CPYGPhc7aocC\n" + "popaFqZJcLYvSJJY6Ya2ihZ4VyXQoXD+N8nQsFIm6dernNYQH2rB8plknAWbQqUG\n" + "bhjTKX/oF2LCk8ow0KumqQre1UgcPLNiLQRAhyVdXgCMQ1bd0mFrwXUT2m2X+0sn\n" + "DmW1by2bH2cevKtVaVMHq1Y6K7mcMb7pyQak7gFYAdu3D1u5AgMBAAGjQzBBMA8G\n" + "A1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQUwCR0P6dF\n" + "j1tX1vrCgec23n7uhw0wDQYJKoZIhvcNAQELBQADggGBABfMsNqRJrgIsQdneT1B\n" + "s6fXdAlPkvbRvnScn+i/OOQxolgDQwge9A+0JxqTMtvxs+X5ahi79pPzqqzH1iYV\n" + "2eBY1JpmYbdOYBVoLUQG7GG6ZRJWcDtAjGhnxgoc+lxVePpSsiZWpXFzAYbV7jQa\n" + "2BXvzAk+uuBCUqKhrkmGZ+ZdQ8SlDjrQyblhKLy3vPi2LhfeNwTWAv2Qx8V2XRyB\n" + "BQSchuMBq19mSppzjN+e5ixiRoNx02fH8dfZ0bu4ONUZcoECwuCmKW6UchQTL8Yf\n" + "GJH9beqEAHevvE8Qn5aZcpX/BPBpx5jzOFXAD4Oqg+tY9T/vfgdElD2fQOI0gJQV\n" + "bzC83bbAkqrjeZXyn0srzegPRyVczuv26SYGjhBsLVk5pAt6Msfnu5g3MC3BjKgc\n" + "/gYV2bFtj3NMu8bAPYkKE9G/+0PT/a3/B5k3iw9FMxuZD/vjYIdSo/oloM+Ht9WG\n" + "EYaTPDOTm4sXdqMVlPIyhwxADNrPnlAke68rKN7H5ChozQ==\n" + "-----END CERTIFICATE-----\n", + NULL }; - /* Different name constraint types (testing symmetry of merging) */ static const char *nc_bad6[] = { - /* Subject alternative name (not critical): + /* Subject alternative name (not critical): DNSname: ddd.com */ - "-----BEGIN CERTIFICATE-----\n" - "MIIEHzCCAoegAwIBAgIMV5diNwZSNyHAsK8oMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTIwIBcNMTYwNzI2MTMxNDMxWhgPOTk5OTEyMzEyMzU5NTlaMBMx\n" - "ETAPBgNVBAMTCHNlcnZlci0zMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKC\n" - "AYEAv27tPNVuhJu/74JaGtQH4s4ZWnIsvEiqVCUveI3YCZYNTeE0FC5fzyqcsx3Z\n" - "K9R8WVlF7SCadNY8E7aTjFiO7x3vcHvwW6eWY7kb0ZwUlzrvaqXp8BlpwpWUP0wq\n" - "da8TZ5S2qrYC/itHHr8Xwo3Ec3rwj8ZO/96JjDKUgbkQVGoXR85+oWdABTSZcpbL\n" - "T4UwCkBeYbkOD2jejMlaOHy+128mYeqW8Nh+bhF9EFVWFWr9XBSpfpCguD4JvsAf\n" - "1zFWmgZOIosLWoLg5O4Po2i4rZCQLGxSKanvHR7npfpqbUgGKHHIGVQNHeLWz4f6\n" - "D/VwRyxiZ1+VhR9kRvcQ3SD86QAInoEPQf1F1QnFqq76mfSobjKhQC5utg6DdMvH\n" - "GU+smT24nRtx0Q7nILWzDPr/DdvpVPpFOP58thPLB3PJnc/dobwadsi6IslvdZ+/\n" - "K/e2Ec4G9sOTMN++0+WM60wPula7t5GTr6SAmxZbrYXZlQH0jy75DBxThO1fMDn5\n" - "pMa3AgMBAAGjdTBzMAwGA1UdEwEB/wQCMAAwEgYDVR0RBAswCYIHZGRkLmNvbTAP\n" - "BgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQWBBQyjEcacSHAUrf91hhII8DfODB1ozAf\n" - "BgNVHSMEGDAWgBR0larTRnVL1RZtrqpleTpk+hEkqzANBgkqhkiG9w0BAQsFAAOC\n" - "AYEADwaR444xUTrdl/WYBrPF69SXw7Plw7d4fh/65417wiEr4mjX3pfH6owVKGgq\n" - "dzBjtkq8+MKV5W11L/S4tpVtUJt3AVrOCQKUiQiHuB4LSKX99YBBlZ9GYSeRgp2n\n" - "iPqaAlREizXBJyPAH6tpuEyUp0rwP5qFjDj+Ks32jJUmoiJ/rnBMFBIdlWHpan0a\n" - "7lIQi1uKIzQBELHmb13Yk/K99ilYaT5V/hPFRI02Q6/nLCTyuL7jLBijB8o8nwzp\n" - "crXGwROBXKdn8NE+SrLPALM1/Hms/KANzLI6CjjZrO88YyNvWjCs8K8/sags8XiJ\n" - "bxEIM/sEMV0I28E3T7kDywdf8OUvADYQIJidsrwv+n+UcI3MTZjax/295afjgBYF\n" - "Zn1wEB/N2t22XlXvkbefYRaYvv1rCb7WaSvvzUaNsq2CL0uG353roiuti++MM1Cf\n" - "wraL3SaauiI5gIjF03wElMyuAnKctk5cig7YVrhWAUx6fP5IOQdczRhP5SeUQBNX\n" - "sEnr\n" - "-----END CERTIFICATE-----\n", - /* Name Constraints (critical): + "-----BEGIN CERTIFICATE-----\n" + "MIIEHzCCAoegAwIBAgIMV5diNwZSNyHAsK8oMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTIwIBcNMTYwNzI2MTMxNDMxWhgPOTk5OTEyMzEyMzU5NTlaMBMx\n" + "ETAPBgNVBAMTCHNlcnZlci0zMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKC\n" + "AYEAv27tPNVuhJu/74JaGtQH4s4ZWnIsvEiqVCUveI3YCZYNTeE0FC5fzyqcsx3Z\n" + "K9R8WVlF7SCadNY8E7aTjFiO7x3vcHvwW6eWY7kb0ZwUlzrvaqXp8BlpwpWUP0wq\n" + "da8TZ5S2qrYC/itHHr8Xwo3Ec3rwj8ZO/96JjDKUgbkQVGoXR85+oWdABTSZcpbL\n" + "T4UwCkBeYbkOD2jejMlaOHy+128mYeqW8Nh+bhF9EFVWFWr9XBSpfpCguD4JvsAf\n" + "1zFWmgZOIosLWoLg5O4Po2i4rZCQLGxSKanvHR7npfpqbUgGKHHIGVQNHeLWz4f6\n" + "D/VwRyxiZ1+VhR9kRvcQ3SD86QAInoEPQf1F1QnFqq76mfSobjKhQC5utg6DdMvH\n" + "GU+smT24nRtx0Q7nILWzDPr/DdvpVPpFOP58thPLB3PJnc/dobwadsi6IslvdZ+/\n" + "K/e2Ec4G9sOTMN++0+WM60wPula7t5GTr6SAmxZbrYXZlQH0jy75DBxThO1fMDn5\n" + "pMa3AgMBAAGjdTBzMAwGA1UdEwEB/wQCMAAwEgYDVR0RBAswCYIHZGRkLmNvbTAP\n" + "BgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQWBBQyjEcacSHAUrf91hhII8DfODB1ozAf\n" + "BgNVHSMEGDAWgBR0larTRnVL1RZtrqpleTpk+hEkqzANBgkqhkiG9w0BAQsFAAOC\n" + "AYEADwaR444xUTrdl/WYBrPF69SXw7Plw7d4fh/65417wiEr4mjX3pfH6owVKGgq\n" + "dzBjtkq8+MKV5W11L/S4tpVtUJt3AVrOCQKUiQiHuB4LSKX99YBBlZ9GYSeRgp2n\n" + "iPqaAlREizXBJyPAH6tpuEyUp0rwP5qFjDj+Ks32jJUmoiJ/rnBMFBIdlWHpan0a\n" + "7lIQi1uKIzQBELHmb13Yk/K99ilYaT5V/hPFRI02Q6/nLCTyuL7jLBijB8o8nwzp\n" + "crXGwROBXKdn8NE+SrLPALM1/Hms/KANzLI6CjjZrO88YyNvWjCs8K8/sags8XiJ\n" + "bxEIM/sEMV0I28E3T7kDywdf8OUvADYQIJidsrwv+n+UcI3MTZjax/295afjgBYF\n" + "Zn1wEB/N2t22XlXvkbefYRaYvv1rCb7WaSvvzUaNsq2CL0uG353roiuti++MM1Cf\n" + "wraL3SaauiI5gIjF03wElMyuAnKctk5cig7YVrhWAUx6fP5IOQdczRhP5SeUQBNX\n" + "sEnr\n" + "-----END CERTIFICATE-----\n", + /* Name Constraints (critical): Permitted: DNSname: ccc.com */ - "-----BEGIN CERTIFICATE-----\n" - "MIIEGjCCAoKgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0x\n" - "MCAXDTE2MDcyNjEzMTQzMFoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" - "QS0yMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAo48gh92ygu5fGfzP\n" - "nVwd8wLN8+1+k2WKOWupimwHdNG34KGKABlnjEjTZWuzZD05xf4V879YO8fiEWCT\n" - "Nty70MmFyGXp9iCQpjIyTHhPVIIXfHKH1FbMvTiCicTtgFlcxFS5XnlhfN9H3Js1\n" - "o0IA7Zyoq28s/Jkv6+b2YEr9OyNc4tMu6vLmEEnaDYwa0uLr7Tut6bTt+46bP1//\n" - "d75xRsidnAM2tbYrhJ7MgTVTPYt9ewr8JcL0LDb4wH26fitddGAKQUE3VCQ/anyi\n" - "PeOjoKryRaAsMtzDTfBRAx9eKIkKSYdA9c/dQmPO33Gxp2XctllVwPav5PDRSCdO\n" - "F0dUJ0fqSNm95rpwCHw1B/MfSug1ye2AG3F8L+NX8SAqOgFgeZmukscrty3mwqOH\n" - "sQRnSuu1+x6jUypwGoNifWuAZjdUiNflC6JfXwuZ8lS8xdvEkFSyK52xkcrWdvFu\n" - "FNh8WsnpWkbBwaY1Y0nD1RY1thgMcbcJWtOiUTDOJKtNbQP5AgMBAAGjfzB9MA8G\n" - "A1UdEwEB/wQFMAMBAf8wGQYDVR0eAQH/BA8wDaALMAmCB2NjYy5jb20wDwYDVR0P\n" - "AQH/BAUDAwcEADAdBgNVHQ4EFgQUdJWq00Z1S9UWba6qZXk6ZPoRJKswHwYDVR0j\n" - "BBgwFoAUjuF/dTI8YtA8wD+BlmP2MTUZNTwwDQYJKoZIhvcNAQELBQADggGBAIe7\n" - "7o7DdYEj1mj5HU38fJ+8Dbugya98LODWSXXDpyxmFdn/A/poARj4DovFwXJ/0K+I\n" - "BQ3jDvoJu6sV3/V2WKL613euX7vIK1sahbzlVHtBWxUAvCyg05ZOFp59ZxahHLO7\n" - "6BF1QQK/PKtABTijCtcsoEGU7Smntn1mu5pMXoUHb8Sm+kkR7Wwm/z93lnHASG5B\n" - "uGPQaXnZ4cMFa7+4tBe8Dz4huSQObye+iHVnkizQmEighHVK+4qKExMOTwJB5ba0\n" - "6K8mKY7YAGDGUgjJzXVmGJPp7mb74AEJiyGobYB+Om9kPkWyAZW09EYl9GnCDl7u\n" - "kiI8IqfoA6yvxHerQTsjS55TXTPmOl9dvYpnF07QxK8UwtZvf55zniKHjsP7TBoe\n" - "9IJt7xxMeYbv6eDbxIpUp8HiljTTxKPKFZaFEOCFBjk4G/yUQNNiNUYdvsRdhvq2\n" - "v7o3zwatl2i87lXGD7C78o2jqZDHoZI49XKN6ZW6dw3tpnjrEJeom8MwJfjHww==\n" - "-----END CERTIFICATE-----\n", - /* Name Constraints (critical): + "-----BEGIN CERTIFICATE-----\n" + "MIIEGjCCAoKgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0x\n" + "MCAXDTE2MDcyNjEzMTQzMFoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0yMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAo48gh92ygu5fGfzP\n" + "nVwd8wLN8+1+k2WKOWupimwHdNG34KGKABlnjEjTZWuzZD05xf4V879YO8fiEWCT\n" + "Nty70MmFyGXp9iCQpjIyTHhPVIIXfHKH1FbMvTiCicTtgFlcxFS5XnlhfN9H3Js1\n" + "o0IA7Zyoq28s/Jkv6+b2YEr9OyNc4tMu6vLmEEnaDYwa0uLr7Tut6bTt+46bP1//\n" + "d75xRsidnAM2tbYrhJ7MgTVTPYt9ewr8JcL0LDb4wH26fitddGAKQUE3VCQ/anyi\n" + "PeOjoKryRaAsMtzDTfBRAx9eKIkKSYdA9c/dQmPO33Gxp2XctllVwPav5PDRSCdO\n" + "F0dUJ0fqSNm95rpwCHw1B/MfSug1ye2AG3F8L+NX8SAqOgFgeZmukscrty3mwqOH\n" + "sQRnSuu1+x6jUypwGoNifWuAZjdUiNflC6JfXwuZ8lS8xdvEkFSyK52xkcrWdvFu\n" + "FNh8WsnpWkbBwaY1Y0nD1RY1thgMcbcJWtOiUTDOJKtNbQP5AgMBAAGjfzB9MA8G\n" + "A1UdEwEB/wQFMAMBAf8wGQYDVR0eAQH/BA8wDaALMAmCB2NjYy5jb20wDwYDVR0P\n" + "AQH/BAUDAwcEADAdBgNVHQ4EFgQUdJWq00Z1S9UWba6qZXk6ZPoRJKswHwYDVR0j\n" + "BBgwFoAUjuF/dTI8YtA8wD+BlmP2MTUZNTwwDQYJKoZIhvcNAQELBQADggGBAIe7\n" + "7o7DdYEj1mj5HU38fJ+8Dbugya98LODWSXXDpyxmFdn/A/poARj4DovFwXJ/0K+I\n" + "BQ3jDvoJu6sV3/V2WKL613euX7vIK1sahbzlVHtBWxUAvCyg05ZOFp59ZxahHLO7\n" + "6BF1QQK/PKtABTijCtcsoEGU7Smntn1mu5pMXoUHb8Sm+kkR7Wwm/z93lnHASG5B\n" + "uGPQaXnZ4cMFa7+4tBe8Dz4huSQObye+iHVnkizQmEighHVK+4qKExMOTwJB5ba0\n" + "6K8mKY7YAGDGUgjJzXVmGJPp7mb74AEJiyGobYB+Om9kPkWyAZW09EYl9GnCDl7u\n" + "kiI8IqfoA6yvxHerQTsjS55TXTPmOl9dvYpnF07QxK8UwtZvf55zniKHjsP7TBoe\n" + "9IJt7xxMeYbv6eDbxIpUp8HiljTTxKPKFZaFEOCFBjk4G/yUQNNiNUYdvsRdhvq2\n" + "v7o3zwatl2i87lXGD7C78o2jqZDHoZI49XKN6ZW6dw3tpnjrEJeom8MwJfjHww==\n" + "-----END CERTIFICATE-----\n", + /* Name Constraints (critical): Permitted: RFC822Name: eee.com */ - "-----BEGIN CERTIFICATE-----\n" - "MIIEGjCCAoKgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCAXDTE2MDcyNjEzMTQyOVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" - "QS0xMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAwoXjtDX6uN+SF7qF\n" - "dEWvxYb9Q3gu0PT0N7a17FaystBIGmw5lT9PnMUJKHPxNwrn+QdD1ReEmf6K4D8q\n" - "vQzIzbCSBIV8bBZLA1/iH/hRaYvCvQLIaSnDEiDkkswkOyu/k7RDdB5H8q8Ey5x+\n" - "udlqQGDsjHVQCKeWfAHXl+NRQ7ONj69cVbI1qz4r1KhnVt9BsxSmXw5n2BBul3Ns\n" - "BY6yD8WD7js2sGxSMuv8hjFozc1t2u6APmkEJwiGx0fe+0Wu2HHNOUu+oyeiuPLq\n" - "6G/Nz1B15E15iY+Fi6g7Qa9k97UuLPiIzjqD4JtnSerBxhkossWa7KrOw7no5Ws+\n" - "d1lpZ92zGt8kTpi7KxQIV/zxvaXVBKv3br/FmKYxswFrbkXoYaFXrdsPs49B9OyX\n" - "WY1zMWhbU4uddPG964yxDz2oTehRjvvxF+1oSAaoLn4chlPpx8p3unj5Y/h8xr/+\n" - "Ciwblu3LE/1boa1zS/wM89UwysakVsaAxO3XjZyJPAJsTndTAgMBAAGjfzB9MA8G\n" - "A1UdEwEB/wQFMAMBAf8wGQYDVR0eAQH/BA8wDaALMAmBB2VlZS5jb20wDwYDVR0P\n" - "AQH/BAUDAwcEADAdBgNVHQ4EFgQUjuF/dTI8YtA8wD+BlmP2MTUZNTwwHwYDVR0j\n" - "BBgwFoAU12oooOGTdVttQK9BdMpkS9Ch5Y0wDQYJKoZIhvcNAQELBQADggGBAEN8\n" - "7Uou6LgI5RKyRL8UB4pLs53+mkUPoXCkCbv9mdFAqoi9OP89ALrF11tlME9PQZFj\n" - "90sxnK4S7ZTDBeS12AUlEEQLCTIrqTMVTyiiklS4bSck4TOGFCaQhrsh7ZliEqkm\n" - "oVsxYs0DYW66lVam/+K+5i6mO7Z4HGo5GDbU8nhMNHlighURfmzJ10xh6Z5s6uSA\n" - "K16OzIOiSqUXp+nT7/NmWSzVgegCqScXLHZ6VDHDzfjURHrqnNTGg4ByMJo1R9DF\n" - "Ne6khju2qP5j71Fwxz3RyZwwdhrPN3QSmMGyuFK3GS5WOYTeg35/Fa54UGVCKSM9\n" - "Dsdg2lHS4+Bxkcj6fSj++5RE2CILOP2vV08VdV5IVFNWSNXhNM4JPOaSjKzIXNuq\n" - "VdXTXxYBn90WA4/WNvUiUaVSioLvf/8Fv57/5JVwTsqM/I5TKZm/sbVePdX/3G/O\n" - "7AmDbp8t5zInW1EUev7ThIRWlr2Jr4NivzeHcjRwdQW0HT0kwJfJSTzH/4RzAg==\n" - "-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\n" - "MIID3jCCAkagAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCAXDTE2MDcyNjEzMTQyOVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" - "QS0wMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAzipouUl1Uqxd0TpN\n" - "JO8syBj5zG5Rasydf5ucdnu5P1gjRvoHulrlYy5/NUA+7N3QLN6fo4cjRZ890p18\n" - "7xqp/EdPUaFhv8bgyiaB8pXuQWTldqcuPSwUzXBHAmqhQ5lE7oomyGA4nqEJreas\n" - "ishVn8v1M3FS6woAiJAxP5vbUOMkoxmoGZy6KkHNGZI+GUSDkoZBWTod8fFSMDYg\n" - "kQk8QAGctCAG6Ms9NWKQpNHbTmz9478AC4phZR5QzvstzD6WpEvnXTI7K3ByoSN2\n" - "0OeQzl5u3HbNJYDydOZbYuSnbADGL/QpBqirmcMUi28lXuSJ6c6jdvnOODqbahvr\n" - "zvJDw6FQtn3OMdZnnSvWhkg6SxvImi99ABpS7SLNHDxm6CWrvbuZVFR21Tl/uxZl\n" - "4je2QW6WaFQRO2J7iVWY2YJtDHLAGA7esfofnvRNSHEh1e5n8G67X5xGGFIIvBu9\n" - "YSFmwTYZcu+DOa5DOU4tAQtftuWcK3XdcRJBn0X0NbBG13YxAgMBAAGjQzBBMA8G\n" - "A1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQU12oooOGT\n" - "dVttQK9BdMpkS9Ch5Y0wDQYJKoZIhvcNAQELBQADggGBABVza/dPn0VSs8frs2nw\n" - "Pd3QoclMKNJ+myDtn5P4q4X0MNKVUQqz7HZ2RPa4UH5PDRp1PbYP45z56wIoYfJb\n" - "i/sdDax0Nd0w6rmpl+koP0m24p8asxt0KenGQiBYfeEy2pxFn5aEKoDnyNAdhZRQ\n" - "2Ug+pp9OMJoTqAPcDGbooHs5j5wHcIfO0bRhl7/QnDc5HK6ll4SmOrfJ8LpkO0BY\n" - "vQK9zWC5Y3zck5uz8tNSCiGgt6y8MZQisC3JYWkzXE9xOjNfUBN+KhdF8ETgaBMZ\n" - "QxguU5VbKtzqG8cpl+6tgW/Otrarirov4EVGhn2B9gwy8cIBe5Q6hXhnzYCpJjVq\n" - "NWGSJ8T0gD+KZt/zxIAWWaYdMUXR7nQ5S+gY3Kn/OoTBZMrKJ3LSEQW42USrQwAl\n" - "p6YA+vX9EI4B1r5uGDoxklkxAAOrO4sddw7MuncjeQzahqbI4IQmxj+GfjTXZ5Df\n" - "gmQvlqt9tOTE0uIbWQT+iaXo28yZ+D0ymU8QazjG7UX9dg==\n" - "-----END CERTIFICATE-----\n", - NULL + "-----BEGIN CERTIFICATE-----\n" + "MIIEGjCCAoKgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCAXDTE2MDcyNjEzMTQyOVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0xMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAwoXjtDX6uN+SF7qF\n" + "dEWvxYb9Q3gu0PT0N7a17FaystBIGmw5lT9PnMUJKHPxNwrn+QdD1ReEmf6K4D8q\n" + "vQzIzbCSBIV8bBZLA1/iH/hRaYvCvQLIaSnDEiDkkswkOyu/k7RDdB5H8q8Ey5x+\n" + "udlqQGDsjHVQCKeWfAHXl+NRQ7ONj69cVbI1qz4r1KhnVt9BsxSmXw5n2BBul3Ns\n" + "BY6yD8WD7js2sGxSMuv8hjFozc1t2u6APmkEJwiGx0fe+0Wu2HHNOUu+oyeiuPLq\n" + "6G/Nz1B15E15iY+Fi6g7Qa9k97UuLPiIzjqD4JtnSerBxhkossWa7KrOw7no5Ws+\n" + "d1lpZ92zGt8kTpi7KxQIV/zxvaXVBKv3br/FmKYxswFrbkXoYaFXrdsPs49B9OyX\n" + "WY1zMWhbU4uddPG964yxDz2oTehRjvvxF+1oSAaoLn4chlPpx8p3unj5Y/h8xr/+\n" + "Ciwblu3LE/1boa1zS/wM89UwysakVsaAxO3XjZyJPAJsTndTAgMBAAGjfzB9MA8G\n" + "A1UdEwEB/wQFMAMBAf8wGQYDVR0eAQH/BA8wDaALMAmBB2VlZS5jb20wDwYDVR0P\n" + "AQH/BAUDAwcEADAdBgNVHQ4EFgQUjuF/dTI8YtA8wD+BlmP2MTUZNTwwHwYDVR0j\n" + "BBgwFoAU12oooOGTdVttQK9BdMpkS9Ch5Y0wDQYJKoZIhvcNAQELBQADggGBAEN8\n" + "7Uou6LgI5RKyRL8UB4pLs53+mkUPoXCkCbv9mdFAqoi9OP89ALrF11tlME9PQZFj\n" + "90sxnK4S7ZTDBeS12AUlEEQLCTIrqTMVTyiiklS4bSck4TOGFCaQhrsh7ZliEqkm\n" + "oVsxYs0DYW66lVam/+K+5i6mO7Z4HGo5GDbU8nhMNHlighURfmzJ10xh6Z5s6uSA\n" + "K16OzIOiSqUXp+nT7/NmWSzVgegCqScXLHZ6VDHDzfjURHrqnNTGg4ByMJo1R9DF\n" + "Ne6khju2qP5j71Fwxz3RyZwwdhrPN3QSmMGyuFK3GS5WOYTeg35/Fa54UGVCKSM9\n" + "Dsdg2lHS4+Bxkcj6fSj++5RE2CILOP2vV08VdV5IVFNWSNXhNM4JPOaSjKzIXNuq\n" + "VdXTXxYBn90WA4/WNvUiUaVSioLvf/8Fv57/5JVwTsqM/I5TKZm/sbVePdX/3G/O\n" + "7AmDbp8t5zInW1EUev7ThIRWlr2Jr4NivzeHcjRwdQW0HT0kwJfJSTzH/4RzAg==\n" + "-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\n" + "MIID3jCCAkagAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCAXDTE2MDcyNjEzMTQyOVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0wMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAzipouUl1Uqxd0TpN\n" + "JO8syBj5zG5Rasydf5ucdnu5P1gjRvoHulrlYy5/NUA+7N3QLN6fo4cjRZ890p18\n" + "7xqp/EdPUaFhv8bgyiaB8pXuQWTldqcuPSwUzXBHAmqhQ5lE7oomyGA4nqEJreas\n" + "ishVn8v1M3FS6woAiJAxP5vbUOMkoxmoGZy6KkHNGZI+GUSDkoZBWTod8fFSMDYg\n" + "kQk8QAGctCAG6Ms9NWKQpNHbTmz9478AC4phZR5QzvstzD6WpEvnXTI7K3ByoSN2\n" + "0OeQzl5u3HbNJYDydOZbYuSnbADGL/QpBqirmcMUi28lXuSJ6c6jdvnOODqbahvr\n" + "zvJDw6FQtn3OMdZnnSvWhkg6SxvImi99ABpS7SLNHDxm6CWrvbuZVFR21Tl/uxZl\n" + "4je2QW6WaFQRO2J7iVWY2YJtDHLAGA7esfofnvRNSHEh1e5n8G67X5xGGFIIvBu9\n" + "YSFmwTYZcu+DOa5DOU4tAQtftuWcK3XdcRJBn0X0NbBG13YxAgMBAAGjQzBBMA8G\n" + "A1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQU12oooOGT\n" + "dVttQK9BdMpkS9Ch5Y0wDQYJKoZIhvcNAQELBQADggGBABVza/dPn0VSs8frs2nw\n" + "Pd3QoclMKNJ+myDtn5P4q4X0MNKVUQqz7HZ2RPa4UH5PDRp1PbYP45z56wIoYfJb\n" + "i/sdDax0Nd0w6rmpl+koP0m24p8asxt0KenGQiBYfeEy2pxFn5aEKoDnyNAdhZRQ\n" + "2Ug+pp9OMJoTqAPcDGbooHs5j5wHcIfO0bRhl7/QnDc5HK6ll4SmOrfJ8LpkO0BY\n" + "vQK9zWC5Y3zck5uz8tNSCiGgt6y8MZQisC3JYWkzXE9xOjNfUBN+KhdF8ETgaBMZ\n" + "QxguU5VbKtzqG8cpl+6tgW/Otrarirov4EVGhn2B9gwy8cIBe5Q6hXhnzYCpJjVq\n" + "NWGSJ8T0gD+KZt/zxIAWWaYdMUXR7nQ5S+gY3Kn/OoTBZMrKJ3LSEQW42USrQwAl\n" + "p6YA+vX9EI4B1r5uGDoxklkxAAOrO4sddw7MuncjeQzahqbI4IQmxj+GfjTXZ5Df\n" + "gmQvlqt9tOTE0uIbWQT+iaXo28yZ+D0ymU8QazjG7UX9dg==\n" + "-----END CERTIFICATE-----\n", + NULL }; /* This chain has name constraints on the CA but the end certificate * has no name on CN or subjectAltname. */ static const char *nc_good0[] = { - /* empty CN, empty SAN */ - "-----BEGIN CERTIFICATE-----\n" - "MIIDIjCCAgqgAwIBAgIMVRJquRMxIN9nRLG4MA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTAwIhgPMjAxNTAzMjUwNzU4NDlaGA85OTk5MTIzMTIzNTk1OVow\n" - "EzERMA8GA1UEChMIc2VydmVyLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" - "AoIBAQDEiLbqiSgPhAlwQXdn6Z7EoYMRiNHX+6cnlI195lv5LPdupiZ7EPF6y8rs\n" - "H/PyRwLhOuhfyAbBibBTWKt1n100UqAcr0Z/l2+zBorc/APhKrysDlWyYUjs/Ly1\n" - "pNQ4V9POpuCqEcPsGWcSr3ULqdRH2PoguWoF0el59fOyioUV+PbKAHPxs342fqu0\n" - "Plk3Bru4kf4R0U3L1r0DogFUYmjhGyhxKAezEikQGgrwlo30LD/31uuzJWs5x1+l\n" - "sGOKHIfxiWlBS8781QKuIWHT8Z+qsnPXobQ4ss2jF4qHjwIesJr8vq0OP2mQ/Ilh\n" - "WwcNJJtWwHE6O6Vj1kWUQ9kDuWQ3AgMBAAGjdjB0MAwGA1UdEwEB/wQCMAAwEwYD\n" - "VR0lBAwwCgYIKwYBBQUHAwEwDwYDVR0PAQH/BAUDAwegADAdBgNVHQ4EFgQU8U1K\n" - "y6Tq/tczkOCK7CZhUAiuUcwwHwYDVR0jBBgwFoAUvSbAZPs2w5eQBjoLYPh+uKyj\n" - "ZzswDQYJKoZIhvcNAQELBQADggEBAG2H5HeItTKZVgNd2hFPfi0QUvheX8mjMniV\n" - "uaS/1zDSvAJOJue2GEpiYeTLvjd4WA5J09ZRSAuVWR9hg44m17TF2pod3YFBfGwx\n" - "8RkEp5W8LBdwPzcgbLVxkWmwZTo1v4Xv679uyVTeB306vfkTrsa0C82S5zJd1Wyt\n" - "/bFaNnxxb6KzVhFEctaVPVZdwrj7Q6XASH1oCfe/l50UcUkK853cXhV3CNJ8OUOY\n" - "h8O7FN/s5oZ23R9eX2D9mHJ/ccucv46ofAmQ9TjLZIACp89IfoMf61MOUG51BIlt\n" - "t494m704KMI2Y4hci5fHZ4UbcykjNpwkAMnCuk0K8K4gAFT6SZ8=\n" - "-----END CERTIFICATE-----\n", - NULL, - /* Name constraints (critical): + /* empty CN, empty SAN */ + "-----BEGIN CERTIFICATE-----\n" + "MIIDIjCCAgqgAwIBAgIMVRJquRMxIN9nRLG4MA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTAwIhgPMjAxNTAzMjUwNzU4NDlaGA85OTk5MTIzMTIzNTk1OVow\n" + "EzERMA8GA1UEChMIc2VydmVyLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" + "AoIBAQDEiLbqiSgPhAlwQXdn6Z7EoYMRiNHX+6cnlI195lv5LPdupiZ7EPF6y8rs\n" + "H/PyRwLhOuhfyAbBibBTWKt1n100UqAcr0Z/l2+zBorc/APhKrysDlWyYUjs/Ly1\n" + "pNQ4V9POpuCqEcPsGWcSr3ULqdRH2PoguWoF0el59fOyioUV+PbKAHPxs342fqu0\n" + "Plk3Bru4kf4R0U3L1r0DogFUYmjhGyhxKAezEikQGgrwlo30LD/31uuzJWs5x1+l\n" + "sGOKHIfxiWlBS8781QKuIWHT8Z+qsnPXobQ4ss2jF4qHjwIesJr8vq0OP2mQ/Ilh\n" + "WwcNJJtWwHE6O6Vj1kWUQ9kDuWQ3AgMBAAGjdjB0MAwGA1UdEwEB/wQCMAAwEwYD\n" + "VR0lBAwwCgYIKwYBBQUHAwEwDwYDVR0PAQH/BAUDAwegADAdBgNVHQ4EFgQU8U1K\n" + "y6Tq/tczkOCK7CZhUAiuUcwwHwYDVR0jBBgwFoAUvSbAZPs2w5eQBjoLYPh+uKyj\n" + "ZzswDQYJKoZIhvcNAQELBQADggEBAG2H5HeItTKZVgNd2hFPfi0QUvheX8mjMniV\n" + "uaS/1zDSvAJOJue2GEpiYeTLvjd4WA5J09ZRSAuVWR9hg44m17TF2pod3YFBfGwx\n" + "8RkEp5W8LBdwPzcgbLVxkWmwZTo1v4Xv679uyVTeB306vfkTrsa0C82S5zJd1Wyt\n" + "/bFaNnxxb6KzVhFEctaVPVZdwrj7Q6XASH1oCfe/l50UcUkK853cXhV3CNJ8OUOY\n" + "h8O7FN/s5oZ23R9eX2D9mHJ/ccucv46ofAmQ9TjLZIACp89IfoMf61MOUG51BIlt\n" + "t494m704KMI2Y4hci5fHZ4UbcykjNpwkAMnCuk0K8K4gAFT6SZ8=\n" + "-----END CERTIFICATE-----\n", + NULL, + /* Name constraints (critical): Permitted: DNSname: example.com */ - "-----BEGIN CERTIFICATE-----\n" - "MIIC/zCCAeegAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTUwMzI1MDc1ODQ5WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDUEBLGhjEj8pLO\n" - "cU3UVmC+FcN3OKXH5lqm4pdxP6rbk0C9WKgavGV9MfEali767BaLHaEzxdCpcbxr\n" - "YdBKFcij7ucF9YqpoDD5HnMLhOEHKnQD0nk5wWYw7Q9ULy0wqEy15nfDdunDbYK5\n" - "TG7K2nsKcyPkEs637bJPBSOVSpn7mT49OnpSNpZcD361SqRh+OY8Iorr1m9DsrfW\n" - "8J9JCf4VlaL821PzoA/EEReabPI9TM10QYpN4J0JQsQnmuU/0WdaEJtq4pFZIZfJ\n" - "WtGGS6GX5faOkyMj5SuunZIjLal/+GRSVk1m3vfmDUp4MVKAqfqQ068Ix/aLEipX\n" - "8mNnyp95AgMBAAGjYjBgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0eAQH/BBMwEaAP\n" - "MA2CC2V4YW1wbGUuY29tMA8GA1UdDwEB/wQFAwMHBAAwHQYDVR0OBBYEFL0mwGT7\n" - "NsOXkAY6C2D4friso2c7MA0GCSqGSIb3DQEBCwUAA4IBAQBSfcTha0878cAy3Peg\n" - "V9z+5rNr7/3Awf5HRTRr2VAATloXJ7iyvuvWmPlIKek40W+Xh4aHjZLjdfuPWyeV\n" - "EXAcEEwhxY4t8NRATzgBy8WyP64LRQnFsmo4p5VbT0ddcqUqwDDYgbNPdLmfLUwV\n" - "JS5DNFSsDco5Ng1DoQCLoIkuLMwD7g7YfMyUq8HupEI9TuhcXC5FUZbt0KjkQk9c\n" - "fbBiEvZcxlmLQRiC0sWFmuBteMyrnw3Y68jpl12ORyB/oVpCvXlYm4ViCCh5uyx3\n" - "Ml+FbR8ws+dEvGKmer50Lfw6/WSyEb/zWlLUUqClbJChLVnGMjgvwUqrLSKUcUw6\n" - "DsYI\n" - "-----END CERTIFICATE-----\n", - NULL + "-----BEGIN CERTIFICATE-----\n" + "MIIC/zCCAeegAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTUwMzI1MDc1ODQ5WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDUEBLGhjEj8pLO\n" + "cU3UVmC+FcN3OKXH5lqm4pdxP6rbk0C9WKgavGV9MfEali767BaLHaEzxdCpcbxr\n" + "YdBKFcij7ucF9YqpoDD5HnMLhOEHKnQD0nk5wWYw7Q9ULy0wqEy15nfDdunDbYK5\n" + "TG7K2nsKcyPkEs637bJPBSOVSpn7mT49OnpSNpZcD361SqRh+OY8Iorr1m9DsrfW\n" + "8J9JCf4VlaL821PzoA/EEReabPI9TM10QYpN4J0JQsQnmuU/0WdaEJtq4pFZIZfJ\n" + "WtGGS6GX5faOkyMj5SuunZIjLal/+GRSVk1m3vfmDUp4MVKAqfqQ068Ix/aLEipX\n" + "8mNnyp95AgMBAAGjYjBgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0eAQH/BBMwEaAP\n" + "MA2CC2V4YW1wbGUuY29tMA8GA1UdDwEB/wQFAwMHBAAwHQYDVR0OBBYEFL0mwGT7\n" + "NsOXkAY6C2D4friso2c7MA0GCSqGSIb3DQEBCwUAA4IBAQBSfcTha0878cAy3Peg\n" + "V9z+5rNr7/3Awf5HRTRr2VAATloXJ7iyvuvWmPlIKek40W+Xh4aHjZLjdfuPWyeV\n" + "EXAcEEwhxY4t8NRATzgBy8WyP64LRQnFsmo4p5VbT0ddcqUqwDDYgbNPdLmfLUwV\n" + "JS5DNFSsDco5Ng1DoQCLoIkuLMwD7g7YfMyUq8HupEI9TuhcXC5FUZbt0KjkQk9c\n" + "fbBiEvZcxlmLQRiC0sWFmuBteMyrnw3Y68jpl12ORyB/oVpCvXlYm4ViCCh5uyx3\n" + "Ml+FbR8ws+dEvGKmer50Lfw6/WSyEb/zWlLUUqClbJChLVnGMjgvwUqrLSKUcUw6\n" + "DsYI\n" + "-----END CERTIFICATE-----\n", + NULL }; /* Name constraints: DNSname in permitted range, intermediate certs without constraints */ static const char *nc_good1[] = { -/* DNSname: www.example.com */ -"-----BEGIN CERTIFICATE-----\n" -"MIIDQDCCAiigAwIBAgIMU/xyoxPcYVSaqH7/MA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" -"BgNVBAMTBENBLTMwIhgPMjAxNDA4MjYxMTQyMjdaGA85OTk5MTIzMTIzNTk1OVow\n" -"EzERMA8GA1UEChMIc2VydmVyLTQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" -"AoIBAQDkemVOFdbhBX1qwjxQHr3LmPktNEVBmXjrIvyp++dN7gCYzubnpiLcBE+B\n" -"S2b+ppxBYm9ynKijhGrO+lZPCQRXWmqUg4YDfvnEqM4n04dCE98jN4IhwvWZyP3p\n" -"+U8Ra9mVIBAY2MReo1dcJQHNmo560xzxioHsGNQHAfYgVRHiE5hIXchYbWCkBrKt\n" -"XOoSSTmfgCF3L22p6S1q143VoKUr/C9zqinZo6feGAiTprj6YH0tHswjGBbxTFLb\n" -"q3ThbGDR5FNYL5q0FvQRNbjoF4oFitZ3P1Qkrzq7VIJd9k8J1C3g/16U2dDTKqRX\n" -"ejX7maFZ6oRZJASsRSowEs4wTfRpAgMBAAGjgZMwgZAwDAYDVR0TAQH/BAIwADAa\n" -"BgNVHREEEzARgg93d3cuZXhhbXBsZS5jb20wEwYDVR0lBAwwCgYIKwYBBQUHAwEw\n" -"DwYDVR0PAQH/BAUDAwegADAdBgNVHQ4EFgQUAEYPmcA7S/KChiet+Z6+RRmogiww\n" -"HwYDVR0jBBgwFoAUjxZogHO3y4VdOLuibQHsQYdsGgwwDQYJKoZIhvcNAQELBQAD\n" -"ggEBABlA3npOWwl3eBycaLVOsmdPS+fUwhLnF8hxoyKpHe/33k1nIxd7iiqNZ3iw\n" -"6pAjnuRUCjajU+mlx6ekrmga8mpmeD6JH0I3lq+mrPeCeFXm8gc1yJpcFJ/C2l4o\n" -"+3HNY7RJKcfoQxIbiKOtZ6x9E0aYuk3s1Um3Pf8GLwENoou7Stg5qHsLbkN/GBuP\n" -"n3p/4iqik2k7VblldDe3oCob5vMp0qrAEhlNl2Fn65rcB4+bp1EiC1Z+y6X8DpRb\n" -"NomKUsOiGcbFjQ4ptT6fePmPHX1mgDCx+5/22cyBUYElefYP7Xzr+C8tqqO3JFKe\n" -"hqEmQRsll9bkqpu2dh83c3i9u4g=\n" -"-----END CERTIFICATE-----\n", -/* - */ -"-----BEGIN CERTIFICATE-----\n" -"MIIDATCCAemgAwIBAgIBAzANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0y\n" -"MCIYDzIwMTQwODI2MTE0MjI3WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" -"BENBLTMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC/4ofaL+ilmmM+\n" -"bGaFRy5GYQXtkD8sA3+/GWsunR928fQS68Zh6iWU+gPm52i7Gfbh7piKWA5Tb63w\n" -"unbS6dPsfPSvgRMZGKJpzxqVcBQAnTS4MuDPlXNg3K3HMyVtbxekII8jFeGEJuCL\n" -"mBMT4dI48IZRzj+2mir38w2cQPfomaKtjg2jMokG8Z9/4+SU9VJCcY1/yZk8fCbS\n" -"dBbwhnDq10yvhPCHgX6KMYmoJr28CYgH29Q9sDP1XN3VvAx5X+PtW/6pyF0U5E2e\n" -"gRzVv7Hr3FJKvytbNxRMCoy2YOyvsTP0fIhiXdtkulTKXyiq4cxA+aYByOu1FjU4\n" -"NicWbiZ/AgMBAAGjZDBiMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" -"ADAdBgNVHQ4EFgQUjxZogHO3y4VdOLuibQHsQYdsGgwwHwYDVR0jBBgwFoAUwAx0\n" -"aL2SrsoSZcZUuFlq0O17BSgwDQYJKoZIhvcNAQELBQADggEBAGQvj8SquT31w8JK\n" -"tHDL4hWOU0EwVwWl4aYsvP17WspiFIIHKApPFfQOD0/Wg9zB48ble5ZSwKA3Vc3B\n" -"DJgd77HgVAd/Nu1TS5TFDKhpuvFPJVpJ3cqt3pTsVGMzf6GRz5kG3Ly/pBgkqiMG\n" -"gv6vTlEvzNe4FcnhNBEaRKpK5Hc5+GnxtfVoki3tjG5u+oa9/OwzAT+7IOyiIKHw\n" -"7F4Cm56QAWMJgVNm329AjZrJLeNuKoQWGueNew4dOe/zlYEaVMG4So74twXQwIAB\n" -"Zko7+wk6eI4CkI4Zair36s1jLkCF8xnL8FExTT3sg6B6KBHaNUuwc67WPILVuFuc\n" -"VfVBOd8=\n" -"-----END CERTIFICATE-----\n", -/* Name Constraints (critical): + /* DNSname: www.example.com */ + "-----BEGIN CERTIFICATE-----\n" + "MIIDQDCCAiigAwIBAgIMU/xyoxPcYVSaqH7/MA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTMwIhgPMjAxNDA4MjYxMTQyMjdaGA85OTk5MTIzMTIzNTk1OVow\n" + "EzERMA8GA1UEChMIc2VydmVyLTQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" + "AoIBAQDkemVOFdbhBX1qwjxQHr3LmPktNEVBmXjrIvyp++dN7gCYzubnpiLcBE+B\n" + "S2b+ppxBYm9ynKijhGrO+lZPCQRXWmqUg4YDfvnEqM4n04dCE98jN4IhwvWZyP3p\n" + "+U8Ra9mVIBAY2MReo1dcJQHNmo560xzxioHsGNQHAfYgVRHiE5hIXchYbWCkBrKt\n" + "XOoSSTmfgCF3L22p6S1q143VoKUr/C9zqinZo6feGAiTprj6YH0tHswjGBbxTFLb\n" + "q3ThbGDR5FNYL5q0FvQRNbjoF4oFitZ3P1Qkrzq7VIJd9k8J1C3g/16U2dDTKqRX\n" + "ejX7maFZ6oRZJASsRSowEs4wTfRpAgMBAAGjgZMwgZAwDAYDVR0TAQH/BAIwADAa\n" + "BgNVHREEEzARgg93d3cuZXhhbXBsZS5jb20wEwYDVR0lBAwwCgYIKwYBBQUHAwEw\n" + "DwYDVR0PAQH/BAUDAwegADAdBgNVHQ4EFgQUAEYPmcA7S/KChiet+Z6+RRmogiww\n" + "HwYDVR0jBBgwFoAUjxZogHO3y4VdOLuibQHsQYdsGgwwDQYJKoZIhvcNAQELBQAD\n" + "ggEBABlA3npOWwl3eBycaLVOsmdPS+fUwhLnF8hxoyKpHe/33k1nIxd7iiqNZ3iw\n" + "6pAjnuRUCjajU+mlx6ekrmga8mpmeD6JH0I3lq+mrPeCeFXm8gc1yJpcFJ/C2l4o\n" + "+3HNY7RJKcfoQxIbiKOtZ6x9E0aYuk3s1Um3Pf8GLwENoou7Stg5qHsLbkN/GBuP\n" + "n3p/4iqik2k7VblldDe3oCob5vMp0qrAEhlNl2Fn65rcB4+bp1EiC1Z+y6X8DpRb\n" + "NomKUsOiGcbFjQ4ptT6fePmPHX1mgDCx+5/22cyBUYElefYP7Xzr+C8tqqO3JFKe\n" + "hqEmQRsll9bkqpu2dh83c3i9u4g=\n" + "-----END CERTIFICATE-----\n", + /* - */ + "-----BEGIN CERTIFICATE-----\n" + "MIIDATCCAemgAwIBAgIBAzANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0y\n" + "MCIYDzIwMTQwODI2MTE0MjI3WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC/4ofaL+ilmmM+\n" + "bGaFRy5GYQXtkD8sA3+/GWsunR928fQS68Zh6iWU+gPm52i7Gfbh7piKWA5Tb63w\n" + "unbS6dPsfPSvgRMZGKJpzxqVcBQAnTS4MuDPlXNg3K3HMyVtbxekII8jFeGEJuCL\n" + "mBMT4dI48IZRzj+2mir38w2cQPfomaKtjg2jMokG8Z9/4+SU9VJCcY1/yZk8fCbS\n" + "dBbwhnDq10yvhPCHgX6KMYmoJr28CYgH29Q9sDP1XN3VvAx5X+PtW/6pyF0U5E2e\n" + "gRzVv7Hr3FJKvytbNxRMCoy2YOyvsTP0fIhiXdtkulTKXyiq4cxA+aYByOu1FjU4\n" + "NicWbiZ/AgMBAAGjZDBiMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" + "ADAdBgNVHQ4EFgQUjxZogHO3y4VdOLuibQHsQYdsGgwwHwYDVR0jBBgwFoAUwAx0\n" + "aL2SrsoSZcZUuFlq0O17BSgwDQYJKoZIhvcNAQELBQADggEBAGQvj8SquT31w8JK\n" + "tHDL4hWOU0EwVwWl4aYsvP17WspiFIIHKApPFfQOD0/Wg9zB48ble5ZSwKA3Vc3B\n" + "DJgd77HgVAd/Nu1TS5TFDKhpuvFPJVpJ3cqt3pTsVGMzf6GRz5kG3Ly/pBgkqiMG\n" + "gv6vTlEvzNe4FcnhNBEaRKpK5Hc5+GnxtfVoki3tjG5u+oa9/OwzAT+7IOyiIKHw\n" + "7F4Cm56QAWMJgVNm329AjZrJLeNuKoQWGueNew4dOe/zlYEaVMG4So74twXQwIAB\n" + "Zko7+wk6eI4CkI4Zair36s1jLkCF8xnL8FExTT3sg6B6KBHaNUuwc67WPILVuFuc\n" + "VfVBOd8=\n" + "-----END CERTIFICATE-----\n", + /* Name Constraints (critical): Permitted: DNSname: example.com Excluded: DNSname: example.org */ -"-----BEGIN CERTIFICATE-----\n" -"MIIDMzCCAhugAwIBAgIBAjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0x\n" -"MCIYDzIwMTQwODI2MTE0MjI3WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" -"BENBLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIf3as4EONSgWu\n" -"Mbm9w3DbKd/su1UWlrYrcpVqmU3MKD5jXBxyoThSBWxmq1+wcNDmE1on6pHY1aad\n" -"k3188JKMC83wEcyQXaiH3DlTYFXXkkI+JJNUGlfAMSoXG248SpoCIOhCETUG03iP\n" -"Z3AZludaHYsv4akAh1Kl6qn66+bKM53l/YhoQDxhoGaYvO8ZSwKnx5DEiq447jpW\n" -"M+sUFe38RPaMjHpyc1GRctvQDzJGm+8ZRujYDH+fGNzVDDlRyRnsVanFGNdyfhmy\n" -"BN2D2+2VEvzAWlaGg2wQN8gF3+luavIVEgETXODZPa5FF7ulmQmhqGrZcw6WtDmY\n" -"hUbNmbL7AgMBAAGjgZUwgZIwDwYDVR0TAQH/BAUwAwEB/zAuBgNVHR4BAf8EJDAi\n" -"oA8wDYILZXhhbXBsZS5jb22hDzANggtleGFtcGxlLm9yZzAPBgNVHQ8BAf8EBQMD\n" -"BwQAMB0GA1UdDgQWBBTADHRovZKuyhJlxlS4WWrQ7XsFKDAfBgNVHSMEGDAWgBTg\n" -"+khaP8UOjcwSKVxgT+zhh0aWPDANBgkqhkiG9w0BAQsFAAOCAQEASq5yBiib8FPk\n" -"oRONZ4COgGqjXvigeOBRgbHf9AfagpoYDbOKDQS8Iwt9VHZfJxdcJ1OuM1aQqXlN\n" -"dUyf+JdR/24Nv1yrhL+dEfRGka6Db96YuPsbetVhNIiMm2teXDIPgGzAKuTm4xPA\n" -"6zyNVy5AwfDQ5hIZ+EUsfOoerIElNyAbh66law4MWuiv4oyX4u49m5lxLuL6mFpR\n" -"CIZYWjZMa0MJvWMKGm/AhpfEOkbT58Fg5YmxhnKMk6ps1eR6mh3NgH1IbUqvEYNC\n" -"eS42X3kAMxEDseBOMths0gxeLL+IHdQpXnAjZppW8zEIcN3yfknul35r8R6Qt9aK\n" -"q5+/m1ADBw==\n" -"-----END CERTIFICATE-----\n", -"-----BEGIN CERTIFICATE-----\n" -"MIIDATCCAemgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" -"MCIYDzIwMTQwODI2MTE0MjI2WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" -"BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIe0eOnLaV750K\n" -"4+mVaAftRrJp8t68KJivcRFpkl0ucQs6gwNf9EsVkHineOR3RXypjJ7Hsv+4PIKp\n" -"BhEOTprYUKcBaxHK/NIezV6NrO1AwuD6MtJDQF9jGpSy0F3eRUoBCjVYhTl+JxcZ\n" -"hGHPJd8WMeanQWY4xG4gTwtpjF3tPU5+JGQwLk5SbcLicM2QMG3CapZinOGK3/XC\n" -"Fjsvf5ZhxnixayhfiX/n9BmeP1yxz7YORNYPlL8z1CcLZqJsyjZnNkVwNvl4ft9I\n" -"FOKBLoOTSGocHFIFXh5b50GG6QHgvN+TiAwdpfRTUskWVg8VVIh7ymgDoI2jQhk4\n" -"EeMaZHd/AgMBAAGjZDBiMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" -"ADAdBgNVHQ4EFgQU4PpIWj/FDo3MEilcYE/s4YdGljwwHwYDVR0jBBgwFoAU6XJK\n" -"EOUYTuioWHG+1YBuz0yPFmowDQYJKoZIhvcNAQELBQADggEBAJOCrGvbeRqPj+uL\n" -"2FIfbkYZAx2nGl3RVv5ZK2YeDpU1udxLihc6Sr67OZbiA4QMKxwgI7pupuwXmyql\n" -"vs9dWnNpjzgfc0OqqzVdOFlfw8ew2DQb2sUXCcIkwqXb/pBQ9BvcgdDASu+rm74j\n" -"JWDZlhcqeVhZROKfpsjsl+lHgZ7kANwHtUJg/WvK8J971hgElqeBO1O97cGkw/in\n" -"e8ooK9Lxk3Td+WdI8C7juCYiwsGqFEKuj7b6937uzvpFmm1fYDdOHhTMcHTHIVTr\n" -"uxSSurQ4XSDF6Iuel3+IdpLL79UYJ7Cf4IhBWj0EloF6xWTA6nUYl3gzKpx1Tg1U\n" -"x2+26YY=\n" -"-----END CERTIFICATE-----\n", -"-----BEGIN CERTIFICATE-----\n" -"MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" -"MCIYDzIwMTQwODI2MTE0MjI2WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" -"BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqLuVrTyiqz+Zs\n" -"9Qw5V2Z1y1YSWU6aRDMs+34rP2gwT41C69HBh2LLRS04iJUVQydwnEJukwKlTNRn\n" -"1lEpvWgtYmySWA2SyI4xkVzCXgwv0k7WyLwa39hfNY1rXAqhDTL8VO0nXxi8hCMW\n" -"ohaXcvsieglhN5uwu6voEdY3Gwtx4V8ysDJ2P9EBo49ZHdpBOv+3YLDxbWZuL/tI\n" -"nYkBUHHfWGhUHsRsu0EGob3SFnfiooCbE/vtmn9rUuBEQDqOjOg3el/aTPJzcMi/\n" -"RTz+8ho17ZrQRKHZGKWq9Skank+2X9FZoYKFCUlBm6RVud1R54QYZEIj7W9ujQLN\n" -"LJrcIwBDAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" -"ADAdBgNVHQ4EFgQU6XJKEOUYTuioWHG+1YBuz0yPFmowDQYJKoZIhvcNAQELBQAD\n" -"ggEBAEeXYGhZ8fWDpCGfSGEDX8FTqLwfDXxw18ZJjQJwus7bsJ9K/hAXnasXrn0f\n" -"TJ+uJi8muqzP1V376mSUzlwXIzLZCtbwRdDhJJYRrLvf5zfHxHeDgvDALn+1AduF\n" -"G/GzCVIFsYNSMdKGwNRp6Ucgl43BPZs6Swn2DXrxxW7Gng+8dvUS2XGLLdH6q1O3\n" -"U1EgJilng+VXx9Rg3yCs5xDiehASySsM6MN/+v+Ouf9lkoQCEgrtlW5Lb/neOBlA\n" -"aS8PPQuKkIEggNd8hW88YWQOJXMiCAgFppVp5B1Vbghn9IDJQISx/AXAoDXQvQfE\n" -"bdOzcKFyDuklHl2IQPnYTFxm/G8=\n" -"-----END CERTIFICATE-----\n", -NULL + "-----BEGIN CERTIFICATE-----\n" + "MIIDMzCCAhugAwIBAgIBAjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0x\n" + "MCIYDzIwMTQwODI2MTE0MjI3WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIf3as4EONSgWu\n" + "Mbm9w3DbKd/su1UWlrYrcpVqmU3MKD5jXBxyoThSBWxmq1+wcNDmE1on6pHY1aad\n" + "k3188JKMC83wEcyQXaiH3DlTYFXXkkI+JJNUGlfAMSoXG248SpoCIOhCETUG03iP\n" + "Z3AZludaHYsv4akAh1Kl6qn66+bKM53l/YhoQDxhoGaYvO8ZSwKnx5DEiq447jpW\n" + "M+sUFe38RPaMjHpyc1GRctvQDzJGm+8ZRujYDH+fGNzVDDlRyRnsVanFGNdyfhmy\n" + "BN2D2+2VEvzAWlaGg2wQN8gF3+luavIVEgETXODZPa5FF7ulmQmhqGrZcw6WtDmY\n" + "hUbNmbL7AgMBAAGjgZUwgZIwDwYDVR0TAQH/BAUwAwEB/zAuBgNVHR4BAf8EJDAi\n" + "oA8wDYILZXhhbXBsZS5jb22hDzANggtleGFtcGxlLm9yZzAPBgNVHQ8BAf8EBQMD\n" + "BwQAMB0GA1UdDgQWBBTADHRovZKuyhJlxlS4WWrQ7XsFKDAfBgNVHSMEGDAWgBTg\n" + "+khaP8UOjcwSKVxgT+zhh0aWPDANBgkqhkiG9w0BAQsFAAOCAQEASq5yBiib8FPk\n" + "oRONZ4COgGqjXvigeOBRgbHf9AfagpoYDbOKDQS8Iwt9VHZfJxdcJ1OuM1aQqXlN\n" + "dUyf+JdR/24Nv1yrhL+dEfRGka6Db96YuPsbetVhNIiMm2teXDIPgGzAKuTm4xPA\n" + "6zyNVy5AwfDQ5hIZ+EUsfOoerIElNyAbh66law4MWuiv4oyX4u49m5lxLuL6mFpR\n" + "CIZYWjZMa0MJvWMKGm/AhpfEOkbT58Fg5YmxhnKMk6ps1eR6mh3NgH1IbUqvEYNC\n" + "eS42X3kAMxEDseBOMths0gxeLL+IHdQpXnAjZppW8zEIcN3yfknul35r8R6Qt9aK\n" + "q5+/m1ADBw==\n" + "-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\n" + "MIIDATCCAemgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwODI2MTE0MjI2WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIe0eOnLaV750K\n" + "4+mVaAftRrJp8t68KJivcRFpkl0ucQs6gwNf9EsVkHineOR3RXypjJ7Hsv+4PIKp\n" + "BhEOTprYUKcBaxHK/NIezV6NrO1AwuD6MtJDQF9jGpSy0F3eRUoBCjVYhTl+JxcZ\n" + "hGHPJd8WMeanQWY4xG4gTwtpjF3tPU5+JGQwLk5SbcLicM2QMG3CapZinOGK3/XC\n" + "Fjsvf5ZhxnixayhfiX/n9BmeP1yxz7YORNYPlL8z1CcLZqJsyjZnNkVwNvl4ft9I\n" + "FOKBLoOTSGocHFIFXh5b50GG6QHgvN+TiAwdpfRTUskWVg8VVIh7ymgDoI2jQhk4\n" + "EeMaZHd/AgMBAAGjZDBiMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" + "ADAdBgNVHQ4EFgQU4PpIWj/FDo3MEilcYE/s4YdGljwwHwYDVR0jBBgwFoAU6XJK\n" + "EOUYTuioWHG+1YBuz0yPFmowDQYJKoZIhvcNAQELBQADggEBAJOCrGvbeRqPj+uL\n" + "2FIfbkYZAx2nGl3RVv5ZK2YeDpU1udxLihc6Sr67OZbiA4QMKxwgI7pupuwXmyql\n" + "vs9dWnNpjzgfc0OqqzVdOFlfw8ew2DQb2sUXCcIkwqXb/pBQ9BvcgdDASu+rm74j\n" + "JWDZlhcqeVhZROKfpsjsl+lHgZ7kANwHtUJg/WvK8J971hgElqeBO1O97cGkw/in\n" + "e8ooK9Lxk3Td+WdI8C7juCYiwsGqFEKuj7b6937uzvpFmm1fYDdOHhTMcHTHIVTr\n" + "uxSSurQ4XSDF6Iuel3+IdpLL79UYJ7Cf4IhBWj0EloF6xWTA6nUYl3gzKpx1Tg1U\n" + "x2+26YY=\n" + "-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\n" + "MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwODI2MTE0MjI2WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqLuVrTyiqz+Zs\n" + "9Qw5V2Z1y1YSWU6aRDMs+34rP2gwT41C69HBh2LLRS04iJUVQydwnEJukwKlTNRn\n" + "1lEpvWgtYmySWA2SyI4xkVzCXgwv0k7WyLwa39hfNY1rXAqhDTL8VO0nXxi8hCMW\n" + "ohaXcvsieglhN5uwu6voEdY3Gwtx4V8ysDJ2P9EBo49ZHdpBOv+3YLDxbWZuL/tI\n" + "nYkBUHHfWGhUHsRsu0EGob3SFnfiooCbE/vtmn9rUuBEQDqOjOg3el/aTPJzcMi/\n" + "RTz+8ho17ZrQRKHZGKWq9Skank+2X9FZoYKFCUlBm6RVud1R54QYZEIj7W9ujQLN\n" + "LJrcIwBDAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" + "ADAdBgNVHQ4EFgQU6XJKEOUYTuioWHG+1YBuz0yPFmowDQYJKoZIhvcNAQELBQAD\n" + "ggEBAEeXYGhZ8fWDpCGfSGEDX8FTqLwfDXxw18ZJjQJwus7bsJ9K/hAXnasXrn0f\n" + "TJ+uJi8muqzP1V376mSUzlwXIzLZCtbwRdDhJJYRrLvf5zfHxHeDgvDALn+1AduF\n" + "G/GzCVIFsYNSMdKGwNRp6Ucgl43BPZs6Swn2DXrxxW7Gng+8dvUS2XGLLdH6q1O3\n" + "U1EgJilng+VXx9Rg3yCs5xDiehASySsM6MN/+v+Ouf9lkoQCEgrtlW5Lb/neOBlA\n" + "aS8PPQuKkIEggNd8hW88YWQOJXMiCAgFppVp5B1Vbghn9IDJQISx/AXAoDXQvQfE\n" + "bdOzcKFyDuklHl2IQPnYTFxm/G8=\n" + "-----END CERTIFICATE-----\n", + NULL }; /* Name constraints: IPAddress_v6 in permitted range, intermediate certs without constraints */ static const char *nc_good2[] = { - /* IPAddress: 2001:db8:4000:: */ - "-----BEGIN CERTIFICATE-----\n" - "MIIEKDCCApCgAwIBAgIMV3OWtCJqV9nu6MtYMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTMwIBcNMTYwNjI5MDkzNjUyWhgPOTk5OTEyMzEyMzU5NTlaMBMx\n" - "ETAPBgNVBAMTCHNlcnZlci00MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKC\n" - "AYEA34kB6fm9NLwz3CGzya+pVo6qWXVxkaXiKnKYk7nzcT5nozZYERR8gd3FWmAX\n" - "T1lzNC92Yxbz7zvonD8cxmRqMNGXqNrHrGmO9u0pr8eFnIRhSEscSWv3gwoMKH+C\n" - "+FajvWM9XK7+ndiXLL4ReFtrPcryrN3B0duMX+l2vgIBlBsIoj6m/n6ExQ8uyE3a\n" - "VyzM2gZgvjX3hw3ieLcOURRVRSsINlNcDZeUB/oGNkWKECUAEbmarutqeoYDZOyI\n" - "LBxcFhZ3/l2khMHuU5G/uQlBVuR45LqEk2LkRtG3MiidmFOnvHbFwFucT1JexwAs\n" - "5YAeBVfIkO/ZaHTnfL4d/z2GKniNyCmbwQ6kBqG8kK/EGWkpPwIHu8KRap8LmrrS\n" - "YY2pRT7L5UCmsFsWyTm3N4n6QYImCnn8h9IY4zKtQfzfbh10wWgd4tqtJZELQjgL\n" - "DvxNsv443bqJ1vWvwmV9X8O0G4nSjcMsgQQCPYWTfnNpcVVOa80n2p23xyG58hdl\n" - "hQ0HAgMBAAGjfjB8MAwGA1UdEwEB/wQCMAAwGwYDVR0RBBQwEocQIAENuEAAAAAA\n" - "AAAAAAAAADAPBgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQWBBSRsZYeRAUgOYrmLOR7\n" - "W7JTQVTJ5TAfBgNVHSMEGDAWgBQVna/6ANq7at0JSC476WWFVlOauzANBgkqhkiG\n" - "9w0BAQsFAAOCAYEAZ/NaFq9GGqsXyIB8Lgmf8GqmHCq5EC3qPijOf34McVtAfZU8\n" - "0q2ZNkBlV+P14n4DUdNKoLwjZ9jL33IiyRWPNdz2SgqOgu0rdN2xXc/Hq5Wu/bBw\n" - "ZtASxQBV1crYvtoRCTBmei8j+WJ1Qfh+1QNar1mgofCR99Sqx+x0HWC9nAF6aAMd\n" - "6t4GS+E3Cmpu/MzgCHHr7yT0XkltJ7m/oLjSwR4RFepNAc5zMOD2ujxwB+5t+mnE\n" - "fO5i3SF8OZEnq0c8LtiZvn0bbVtRMcRFpi5kLzV+5b4J4y2BocR8cSvbp/GOvyYi\n" - "AYKfwboXK9nJmaxsYdT9zKSp5sPETMMXD7ZDtaM0jKunb9sUF98FsK1j1I416cQI\n" - "ChBUCeANDhHTAmaxPKpyjnHsEtbA27z5l5bQmUXSTc5vVYEj4HhNAE89T/4AbMbH\n" - "6hvlsD0t9cq9nWly0CC7UIoI1Llv7TVgIKVieLQ5DIZHGL/VuPFHNqfFZDzPByjf\n" - "kU9hILqMbOM6P182\n" - "-----END CERTIFICATE-----\n", - /* (no name constraints set) */ - "-----BEGIN CERTIFICATE-----\n" - "MIID/zCCAmegAwIBAgIBAzANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0y\n" - "MCAXDTE2MDYyOTA5MzY1MloYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" - "QS0zMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAxCKO/30Vk2JmTvrV\n" - "j/yi2Bi2rx+SQbIwJRmpGXedQfO90q9EXXZ7INQzo+xhk3dsuzkgTxeVnf7ONJwh\n" - "r6KoEgoUXSH+R2MaX1+LjrD2MU3zDO11DE+nAv8hgOZJqYawmgve9RMsVREUcnCu\n" - "85pT7bIsNqtuaXG7/mkMib1YfHwiMCl3u0jwhTWf0FuSRqe9ozqHo8DR89vHyrjl\n" - "t7FsrUnECJLZtDlf0VUG0lekZIY+WL7w54j4C9z+e8ZnKPpGIJyTgS4W/yXslyNR\n" - "VECiQHKW/gwSJBDMLODesJsSpgwh2NZ7VmreWTGSoFgS84Hteogj8jY0C7Ky6DHo\n" - "kYLpHcWo3FBIZ6oSiWR49zcJ1r26+JnHQEE1Kxt9Rpn6m6E2k4yW6hBFIZcWnFSQ\n" - "LKPtHMQS+soqC/qj4fFNqm7/OJof33LAG6T3cC8wtgtom7n9Jd1RZvkGtlAbNzzm\n" - "Wwh4SUyMyq9/dQ3WkJ1RVzVLhqYi9+QiHuVrqVSFO8dmL1/zAgMBAAGjZDBiMA8G\n" - "A1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQUFZ2v+gDa\n" - "u2rdCUguO+llhVZTmrswHwYDVR0jBBgwFoAU2X5m+TBOqGUVhmhVmzQagc4mEqEw\n" - "DQYJKoZIhvcNAQELBQADggGBAHbh1c2UYg23aHZN/cVkAD6fqOykWqF9ZeqI9r0c\n" - "BGpvnhcVMOdGitpIYk3cW5a2UYmo6SkfOHos6yB3fZKHz525YhS7Tg96t+c4es8D\n" - "GlbJdr/O2vwPVsBseyvk+AHPBrcJDooiqD1rXeJWUiIREVBC1hICYaEDTSdPKxRX\n" - "93sRnfEFpZMcWd2dsqOUwwwN6VIeZAxoeysM2O6qkqDIjIVOK613oMYUEKBSyZ+w\n" - "d9Ds5sStkaLXxNJ06q3Mst5rE+IgpznpYvJBtpp6HQQeqiTXI9lIoU2oZda8UChA\n" - "Tc6iNFl+oQVvaMMUo2YlbEKbQ4UPbxT6wx5LfF3imbReMtRQCbs7uvCkTNTkY2mf\n" - "LFTMPMBjbLaY5ogx3vRZQd3833vC9iUcgBewyJc81BcEzI6F9rcg9quzkAnXdUsV\n" - "zcMfadJlDrnPm/n3mNiHZs70MQ/dXQtbaD5H6T9BME5sRwAmW7VJ/ySeytkoUw8z\n" - "leNeFV8T+J9lz0g5hWY78QJaTQ==\n" - "-----END CERTIFICATE-----\n", - /* Name Constraints (critical): + /* IPAddress: 2001:db8:4000:: */ + "-----BEGIN CERTIFICATE-----\n" + "MIIEKDCCApCgAwIBAgIMV3OWtCJqV9nu6MtYMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTMwIBcNMTYwNjI5MDkzNjUyWhgPOTk5OTEyMzEyMzU5NTlaMBMx\n" + "ETAPBgNVBAMTCHNlcnZlci00MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKC\n" + "AYEA34kB6fm9NLwz3CGzya+pVo6qWXVxkaXiKnKYk7nzcT5nozZYERR8gd3FWmAX\n" + "T1lzNC92Yxbz7zvonD8cxmRqMNGXqNrHrGmO9u0pr8eFnIRhSEscSWv3gwoMKH+C\n" + "+FajvWM9XK7+ndiXLL4ReFtrPcryrN3B0duMX+l2vgIBlBsIoj6m/n6ExQ8uyE3a\n" + "VyzM2gZgvjX3hw3ieLcOURRVRSsINlNcDZeUB/oGNkWKECUAEbmarutqeoYDZOyI\n" + "LBxcFhZ3/l2khMHuU5G/uQlBVuR45LqEk2LkRtG3MiidmFOnvHbFwFucT1JexwAs\n" + "5YAeBVfIkO/ZaHTnfL4d/z2GKniNyCmbwQ6kBqG8kK/EGWkpPwIHu8KRap8LmrrS\n" + "YY2pRT7L5UCmsFsWyTm3N4n6QYImCnn8h9IY4zKtQfzfbh10wWgd4tqtJZELQjgL\n" + "DvxNsv443bqJ1vWvwmV9X8O0G4nSjcMsgQQCPYWTfnNpcVVOa80n2p23xyG58hdl\n" + "hQ0HAgMBAAGjfjB8MAwGA1UdEwEB/wQCMAAwGwYDVR0RBBQwEocQIAENuEAAAAAA\n" + "AAAAAAAAADAPBgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQWBBSRsZYeRAUgOYrmLOR7\n" + "W7JTQVTJ5TAfBgNVHSMEGDAWgBQVna/6ANq7at0JSC476WWFVlOauzANBgkqhkiG\n" + "9w0BAQsFAAOCAYEAZ/NaFq9GGqsXyIB8Lgmf8GqmHCq5EC3qPijOf34McVtAfZU8\n" + "0q2ZNkBlV+P14n4DUdNKoLwjZ9jL33IiyRWPNdz2SgqOgu0rdN2xXc/Hq5Wu/bBw\n" + "ZtASxQBV1crYvtoRCTBmei8j+WJ1Qfh+1QNar1mgofCR99Sqx+x0HWC9nAF6aAMd\n" + "6t4GS+E3Cmpu/MzgCHHr7yT0XkltJ7m/oLjSwR4RFepNAc5zMOD2ujxwB+5t+mnE\n" + "fO5i3SF8OZEnq0c8LtiZvn0bbVtRMcRFpi5kLzV+5b4J4y2BocR8cSvbp/GOvyYi\n" + "AYKfwboXK9nJmaxsYdT9zKSp5sPETMMXD7ZDtaM0jKunb9sUF98FsK1j1I416cQI\n" + "ChBUCeANDhHTAmaxPKpyjnHsEtbA27z5l5bQmUXSTc5vVYEj4HhNAE89T/4AbMbH\n" + "6hvlsD0t9cq9nWly0CC7UIoI1Llv7TVgIKVieLQ5DIZHGL/VuPFHNqfFZDzPByjf\n" + "kU9hILqMbOM6P182\n" + "-----END CERTIFICATE-----\n", + /* (no name constraints set) */ + "-----BEGIN CERTIFICATE-----\n" + "MIID/zCCAmegAwIBAgIBAzANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0y\n" + "MCAXDTE2MDYyOTA5MzY1MloYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0zMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAxCKO/30Vk2JmTvrV\n" + "j/yi2Bi2rx+SQbIwJRmpGXedQfO90q9EXXZ7INQzo+xhk3dsuzkgTxeVnf7ONJwh\n" + "r6KoEgoUXSH+R2MaX1+LjrD2MU3zDO11DE+nAv8hgOZJqYawmgve9RMsVREUcnCu\n" + "85pT7bIsNqtuaXG7/mkMib1YfHwiMCl3u0jwhTWf0FuSRqe9ozqHo8DR89vHyrjl\n" + "t7FsrUnECJLZtDlf0VUG0lekZIY+WL7w54j4C9z+e8ZnKPpGIJyTgS4W/yXslyNR\n" + "VECiQHKW/gwSJBDMLODesJsSpgwh2NZ7VmreWTGSoFgS84Hteogj8jY0C7Ky6DHo\n" + "kYLpHcWo3FBIZ6oSiWR49zcJ1r26+JnHQEE1Kxt9Rpn6m6E2k4yW6hBFIZcWnFSQ\n" + "LKPtHMQS+soqC/qj4fFNqm7/OJof33LAG6T3cC8wtgtom7n9Jd1RZvkGtlAbNzzm\n" + "Wwh4SUyMyq9/dQ3WkJ1RVzVLhqYi9+QiHuVrqVSFO8dmL1/zAgMBAAGjZDBiMA8G\n" + "A1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQUFZ2v+gDa\n" + "u2rdCUguO+llhVZTmrswHwYDVR0jBBgwFoAU2X5m+TBOqGUVhmhVmzQagc4mEqEw\n" + "DQYJKoZIhvcNAQELBQADggGBAHbh1c2UYg23aHZN/cVkAD6fqOykWqF9ZeqI9r0c\n" + "BGpvnhcVMOdGitpIYk3cW5a2UYmo6SkfOHos6yB3fZKHz525YhS7Tg96t+c4es8D\n" + "GlbJdr/O2vwPVsBseyvk+AHPBrcJDooiqD1rXeJWUiIREVBC1hICYaEDTSdPKxRX\n" + "93sRnfEFpZMcWd2dsqOUwwwN6VIeZAxoeysM2O6qkqDIjIVOK613oMYUEKBSyZ+w\n" + "d9Ds5sStkaLXxNJ06q3Mst5rE+IgpznpYvJBtpp6HQQeqiTXI9lIoU2oZda8UChA\n" + "Tc6iNFl+oQVvaMMUo2YlbEKbQ4UPbxT6wx5LfF3imbReMtRQCbs7uvCkTNTkY2mf\n" + "LFTMPMBjbLaY5ogx3vRZQd3833vC9iUcgBewyJc81BcEzI6F9rcg9quzkAnXdUsV\n" + "zcMfadJlDrnPm/n3mNiHZs70MQ/dXQtbaD5H6T9BME5sRwAmW7VJ/ySeytkoUw8z\n" + "leNeFV8T+J9lz0g5hWY78QJaTQ==\n" + "-----END CERTIFICATE-----\n", + /* Name Constraints (critical): Permitted: IPAddress: 2001:db8::/32 Excluded: IPAddress: 2001:db8::/34 */ - "-----BEGIN CERTIFICATE-----\n" - "MIIEWzCCAsOgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0x\n" - "MCAXDTE2MDYyOTA5MzY1MVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" - "QS0yMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAq03TF1WvguiqwoZG\n" - "XbM/lSligqO1tCd8dhAsa1lZmuHqcZRsQLs4Dq4Ffh00AVWDnn734hGzyvBA2LNj\n" - "tSH+slECZ55lVWKvJ0D8ip481YFP4CTWcJbM4cvkZdM82+ygYERy/WfR9cJqyrLX\n" - "tYvvs1b15fb7s0alE0gJK4j0RbzDjp1DsHFKzG2bNJxJ39xnfa6h4zwDJ+NgJAQN\n" - "z84OEw5ECZlKp2HbZZdTx0rXFYiyucao/Ugs1rZ3SPzcPg+EJJMSTdxypD8qWaGg\n" - "xP0UrmYxl0D9+m+pV8YftD3h9yFDB0DC0eaXyST224mJDUYR4E6tBSFetWgLkc6l\n" - "+1os8Ys6SvrlKvtxr0xQFxV1LhMX/gZgntyflljj/DWYpo+uaA74bkhOzIxEpa1Z\n" - "BXMLauKJ7dzm2aHYIgFlYxu1TIjib0D/UaEp3wmoZ6pDUpxjoiqjfDc6WxV5b2Gj\n" - "TIZ6qwLcADF90estBeLEtkcf8xk71JzFe0FGL4bDkPPKax0jAgMBAAGjgb8wgbww\n" - "DwYDVR0TAQH/BAUwAwEB/zBYBgNVHR4BAf8ETjBMoCQwIocgIAENuAAAAAAAAAAA\n" - "AAAAAP////8AAAAAAAAAAAAAAAChJDAihyAgAQ24AAAAAAAAAAAAAAAA/////8AA\n" - "AAAAAAAAAAAAADAPBgNVHQ8BAf8EBQMDBwQAMB0GA1UdDgQWBBTZfmb5ME6oZRWG\n" - "aFWbNBqBziYSoTAfBgNVHSMEGDAWgBQZXWHEGPF89Ep5BX76GGJZxvxVQDANBgkq\n" - "hkiG9w0BAQsFAAOCAYEAl5x0spmwJ0kKiVOLu8WRRtHb6DK6pSu+jGxGh4GNwCFw\n" - "bvX8u6QBlCu9xW4afd6/a1PduPtoRQltWeZaB2SDWnnjclKpaG8A9736YV9XKHdL\n" - "QX6GZcKSa2r81aAaHSZqxo60HfMPbCLWiWwWDX6O284kLumq7m2Z+pTKmb/Fmdqc\n" - "i292pyamXuj8eMsYNGvxzknwe3jr4HZhNfdjRvsLTI6ovEGsa6tdIgszSOrLT/kh\n" - "yu8zt9gljas6aBJ2rzT1OECaHQ74IkVZkhA6C4tSf2grH4yDZ4oZrcgJFHF/saC6\n" - "5uj5niAxmJrlaBeb+dwl+c5aNFo51zZRYktoQuvCGykWwqc8XwZBKu8MGNsEjEo7\n" - "wtfgu/bzXrLUJluXnzVBNCcXwDzsgIxlpJcFZ5aqaVhfYrl8cd5Wa3FrkHvkGyBP\n" - "aXS1nd/tvl96i6p60w/VkX6FlSknXh8IdkjcChckJv3AukUrV0U1ViTaVkWpVhQL\n" - "JKM8n9POeVPK4pUlaXAd\n" - "-----END CERTIFICATE-----\n", - /* (no name constraints set) */ - "-----BEGIN CERTIFICATE-----\n" - "MIID/zCCAmegAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCAXDTE2MDYyOTA5MzY1MVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" - "QS0xMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAnf+axUDkYDVQNCvR\n" - "hvLcW2nWKZo3g2JciS/h+V2gKWjDDNWxg6luyxlCFsDCaNx+t3j2YJECRZvNMLDP\n" - "QiE7U8+GKtJgR3FhHnA5xu/IbBWbNYUO08Q1s+w82dfy6QxRRDOXXh0fjAbd153J\n" - "K/9FDpyCuJ/RC9RKphwOz5YsSlMbUpYCCm0pten44HzyT/F2hwVLEEnLn1uuM8x2\n" - "HggBYH6WHFiGJLZH6h9ajt04JjyvcTDIaGw4ttET1doBnnRU+6CDiFYeYFqzUDkG\n" - "4lKKPxyXsqC0B20vV/N03c5DnODkMnTGPQ696HuhNtf4+i6PRhTieX2iu8uDOPcF\n" - "aOfokwfuUx3Ws4dShfvSMN/jFpdpOVn41dceY1Dbqy3tMF0YVFY6SSvRtvUQAvmz\n" - "KYmaYwKKpe/yMDqICAdE3fjkHHkQeQri6FP7RrLfbsprLtQlS/1ZclT9CnIz3uES\n" - "7C4a9OVvxIz+RZoIps/q94PB5fqvzXsmDIukV9VFKpAjrXWVAgMBAAGjZDBiMA8G\n" - "A1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQUGV1hxBjx\n" - "fPRKeQV++hhiWcb8VUAwHwYDVR0jBBgwFoAU5xR9/WMP7pTmHW6KSB7HSeK6exkw\n" - "DQYJKoZIhvcNAQELBQADggGBABBXBE8psujTJ83QlsnyQYUk2MPfvm5CuJGuC4rr\n" - "uc3FFNi1A9h1XR44J5iDf84SZcaNZgYag79SHaQ0OdHHYPdJ6Yc+59IIf8PncoGd\n" - "wgeU61u8uIZL53yfDSE7o0t0UrJpBNb7oGF2adRJs7ZqyUZyN6A9+74jcrxllpjI\n" - "oha9WgugzP9CUqWYgv/MDNuwAtv+1znNFgv8C8mkhbr8wmf737XsQzfrYFK1ibhw\n" - "8rBGJLnLT+Xh+CgaDYeZrnS/oSMXCJETTbnPWfJGacX6FtB829fYhO6VMDqTy74p\n" - "k04UcXRxH7ZnRXbCImqnGTfNZtXYLu1oCDC/Ubi08ev2r8Lxrg8B/F6ME0hihiHh\n" - "8X1ggr2fDll2mUwBnalRgRYfYc3MRfQv1oy/lQDp0A2rpbKQiX8ji8r1y9xDcu/B\n" - "ERwaNiUxyK+Tx3BiMIN4EP7+yGh/f71PDvlZYBkXNYrQBaCpW8fj2hr6N/B4kCPr\n" - "/AJhLcEQybcD4IKiqywx8kx3Ig==\n" - "-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\n" - "MIID3jCCAkagAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCAXDTE2MDYyOTA5MzY1MFoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" - "QS0wMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEApAgApH8PdlQKWr+K\n" - "ja6KYXYYNxdhs4JoiOBxr3OQuS/ocqp1HU5vVRXKiu0XpqkB631wmC1tTk7N4LYZ\n" - "+4ffM82JhkK0y1FwV4soqeuwYraF//8ekgmCxi7tqie0WDmXc+aO2O8pruFHTjCV\n" - "TCMAer+wspFEQgHVsbFRAr+zyZpz8bn3Ywy801aM+807sEyNeeIMR0UnM5uELKvF\n" - "iHXJwdPdXM48sGe6DHJtSw4OLx3+xqRMlhVBAb0/yYLv1HDFwul0IRBfjj96rXgc\n" - "bWLiKIjZCl64+Y+UbbHp71pT09T/tzu15tvjHoIGLudWIaZHCnU10fQS1ySL/Xjm\n" - "n0xxze2AVSzoYoiw3ldkTvik9gqESC+uu+QXhzhxKe+GKEd6oGE+8KOxAkTJT6BO\n" - "vXKa6R7XDgI4AXeNlTgOZXDAqmhPFjARaLS8jdUIKJLHSaqlzX0+XLilgTGMNaXA\n" - "4Sm5pKnJcoCpL4OisgiJnuIRshO10IKgM5YqeytbkjeJzqX9AgMBAAGjQzBBMA8G\n" - "A1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQU5xR9/WMP\n" - "7pTmHW6KSB7HSeK6exkwDQYJKoZIhvcNAQELBQADggGBAARJRZIqmdoMRq3iYxh9\n" - "vApIvuQ8cImjusmIaYzZpAvjcOiX5RGuN/69e7Os6QxnN+H6TAj3IX+a0Msu+P/c\n" - "NrrQWttd+uR2xZic+dNXzhsEI5+o4G7W9srnDLU01FmlytvH1CSgLYm8uv3Q8G3/\n" - "RVEYmOphvHUUDYJeFIUDyaC88k52tyZ1SeSkveLRy+vf7GkHicVVMAOuyiQV3aQD\n" - "M8o3QFyrncw5i608d8JArJZ7LXhx+S+37rMsBGHnXAyKjv8zNt/YW3IjAA4ifr+m\n" - "rbTurPyCNxKFdhTBQaF1ofQaKVNEIdSjNCB+5RXUXmoAELsiRQS4LGN6NhMfBlbu\n" - "YAMUmDjwu/LkDGLbZHX0cGiDuLc/qefVc1QBAQZ2zoCAnYZU6itnzqlayOijNj8n\n" - "0aHMa8P8rb9gzOKcNOz147lLK5oHjYgeYOy3hpUDT/k7wyELWb20GKaaWLgGqWS0\n" - "W5U6UgHQoBLyOvHIOkbCRVyIPLh9ijufA0LpUdk2Lf1Sww==\n" - "-----END CERTIFICATE-----\n", - NULL + "-----BEGIN CERTIFICATE-----\n" + "MIIEWzCCAsOgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0x\n" + "MCAXDTE2MDYyOTA5MzY1MVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0yMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAq03TF1WvguiqwoZG\n" + "XbM/lSligqO1tCd8dhAsa1lZmuHqcZRsQLs4Dq4Ffh00AVWDnn734hGzyvBA2LNj\n" + "tSH+slECZ55lVWKvJ0D8ip481YFP4CTWcJbM4cvkZdM82+ygYERy/WfR9cJqyrLX\n" + "tYvvs1b15fb7s0alE0gJK4j0RbzDjp1DsHFKzG2bNJxJ39xnfa6h4zwDJ+NgJAQN\n" + "z84OEw5ECZlKp2HbZZdTx0rXFYiyucao/Ugs1rZ3SPzcPg+EJJMSTdxypD8qWaGg\n" + "xP0UrmYxl0D9+m+pV8YftD3h9yFDB0DC0eaXyST224mJDUYR4E6tBSFetWgLkc6l\n" + "+1os8Ys6SvrlKvtxr0xQFxV1LhMX/gZgntyflljj/DWYpo+uaA74bkhOzIxEpa1Z\n" + "BXMLauKJ7dzm2aHYIgFlYxu1TIjib0D/UaEp3wmoZ6pDUpxjoiqjfDc6WxV5b2Gj\n" + "TIZ6qwLcADF90estBeLEtkcf8xk71JzFe0FGL4bDkPPKax0jAgMBAAGjgb8wgbww\n" + "DwYDVR0TAQH/BAUwAwEB/zBYBgNVHR4BAf8ETjBMoCQwIocgIAENuAAAAAAAAAAA\n" + "AAAAAP////8AAAAAAAAAAAAAAAChJDAihyAgAQ24AAAAAAAAAAAAAAAA/////8AA\n" + "AAAAAAAAAAAAADAPBgNVHQ8BAf8EBQMDBwQAMB0GA1UdDgQWBBTZfmb5ME6oZRWG\n" + "aFWbNBqBziYSoTAfBgNVHSMEGDAWgBQZXWHEGPF89Ep5BX76GGJZxvxVQDANBgkq\n" + "hkiG9w0BAQsFAAOCAYEAl5x0spmwJ0kKiVOLu8WRRtHb6DK6pSu+jGxGh4GNwCFw\n" + "bvX8u6QBlCu9xW4afd6/a1PduPtoRQltWeZaB2SDWnnjclKpaG8A9736YV9XKHdL\n" + "QX6GZcKSa2r81aAaHSZqxo60HfMPbCLWiWwWDX6O284kLumq7m2Z+pTKmb/Fmdqc\n" + "i292pyamXuj8eMsYNGvxzknwe3jr4HZhNfdjRvsLTI6ovEGsa6tdIgszSOrLT/kh\n" + "yu8zt9gljas6aBJ2rzT1OECaHQ74IkVZkhA6C4tSf2grH4yDZ4oZrcgJFHF/saC6\n" + "5uj5niAxmJrlaBeb+dwl+c5aNFo51zZRYktoQuvCGykWwqc8XwZBKu8MGNsEjEo7\n" + "wtfgu/bzXrLUJluXnzVBNCcXwDzsgIxlpJcFZ5aqaVhfYrl8cd5Wa3FrkHvkGyBP\n" + "aXS1nd/tvl96i6p60w/VkX6FlSknXh8IdkjcChckJv3AukUrV0U1ViTaVkWpVhQL\n" + "JKM8n9POeVPK4pUlaXAd\n" + "-----END CERTIFICATE-----\n", + /* (no name constraints set) */ + "-----BEGIN CERTIFICATE-----\n" + "MIID/zCCAmegAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCAXDTE2MDYyOTA5MzY1MVoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0xMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAnf+axUDkYDVQNCvR\n" + "hvLcW2nWKZo3g2JciS/h+V2gKWjDDNWxg6luyxlCFsDCaNx+t3j2YJECRZvNMLDP\n" + "QiE7U8+GKtJgR3FhHnA5xu/IbBWbNYUO08Q1s+w82dfy6QxRRDOXXh0fjAbd153J\n" + "K/9FDpyCuJ/RC9RKphwOz5YsSlMbUpYCCm0pten44HzyT/F2hwVLEEnLn1uuM8x2\n" + "HggBYH6WHFiGJLZH6h9ajt04JjyvcTDIaGw4ttET1doBnnRU+6CDiFYeYFqzUDkG\n" + "4lKKPxyXsqC0B20vV/N03c5DnODkMnTGPQ696HuhNtf4+i6PRhTieX2iu8uDOPcF\n" + "aOfokwfuUx3Ws4dShfvSMN/jFpdpOVn41dceY1Dbqy3tMF0YVFY6SSvRtvUQAvmz\n" + "KYmaYwKKpe/yMDqICAdE3fjkHHkQeQri6FP7RrLfbsprLtQlS/1ZclT9CnIz3uES\n" + "7C4a9OVvxIz+RZoIps/q94PB5fqvzXsmDIukV9VFKpAjrXWVAgMBAAGjZDBiMA8G\n" + "A1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQUGV1hxBjx\n" + "fPRKeQV++hhiWcb8VUAwHwYDVR0jBBgwFoAU5xR9/WMP7pTmHW6KSB7HSeK6exkw\n" + "DQYJKoZIhvcNAQELBQADggGBABBXBE8psujTJ83QlsnyQYUk2MPfvm5CuJGuC4rr\n" + "uc3FFNi1A9h1XR44J5iDf84SZcaNZgYag79SHaQ0OdHHYPdJ6Yc+59IIf8PncoGd\n" + "wgeU61u8uIZL53yfDSE7o0t0UrJpBNb7oGF2adRJs7ZqyUZyN6A9+74jcrxllpjI\n" + "oha9WgugzP9CUqWYgv/MDNuwAtv+1znNFgv8C8mkhbr8wmf737XsQzfrYFK1ibhw\n" + "8rBGJLnLT+Xh+CgaDYeZrnS/oSMXCJETTbnPWfJGacX6FtB829fYhO6VMDqTy74p\n" + "k04UcXRxH7ZnRXbCImqnGTfNZtXYLu1oCDC/Ubi08ev2r8Lxrg8B/F6ME0hihiHh\n" + "8X1ggr2fDll2mUwBnalRgRYfYc3MRfQv1oy/lQDp0A2rpbKQiX8ji8r1y9xDcu/B\n" + "ERwaNiUxyK+Tx3BiMIN4EP7+yGh/f71PDvlZYBkXNYrQBaCpW8fj2hr6N/B4kCPr\n" + "/AJhLcEQybcD4IKiqywx8kx3Ig==\n" + "-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\n" + "MIID3jCCAkagAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCAXDTE2MDYyOTA5MzY1MFoYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRD\n" + "QS0wMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEApAgApH8PdlQKWr+K\n" + "ja6KYXYYNxdhs4JoiOBxr3OQuS/ocqp1HU5vVRXKiu0XpqkB631wmC1tTk7N4LYZ\n" + "+4ffM82JhkK0y1FwV4soqeuwYraF//8ekgmCxi7tqie0WDmXc+aO2O8pruFHTjCV\n" + "TCMAer+wspFEQgHVsbFRAr+zyZpz8bn3Ywy801aM+807sEyNeeIMR0UnM5uELKvF\n" + "iHXJwdPdXM48sGe6DHJtSw4OLx3+xqRMlhVBAb0/yYLv1HDFwul0IRBfjj96rXgc\n" + "bWLiKIjZCl64+Y+UbbHp71pT09T/tzu15tvjHoIGLudWIaZHCnU10fQS1ySL/Xjm\n" + "n0xxze2AVSzoYoiw3ldkTvik9gqESC+uu+QXhzhxKe+GKEd6oGE+8KOxAkTJT6BO\n" + "vXKa6R7XDgI4AXeNlTgOZXDAqmhPFjARaLS8jdUIKJLHSaqlzX0+XLilgTGMNaXA\n" + "4Sm5pKnJcoCpL4OisgiJnuIRshO10IKgM5YqeytbkjeJzqX9AgMBAAGjQzBBMA8G\n" + "A1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcEADAdBgNVHQ4EFgQU5xR9/WMP\n" + "7pTmHW6KSB7HSeK6exkwDQYJKoZIhvcNAQELBQADggGBAARJRZIqmdoMRq3iYxh9\n" + "vApIvuQ8cImjusmIaYzZpAvjcOiX5RGuN/69e7Os6QxnN+H6TAj3IX+a0Msu+P/c\n" + "NrrQWttd+uR2xZic+dNXzhsEI5+o4G7W9srnDLU01FmlytvH1CSgLYm8uv3Q8G3/\n" + "RVEYmOphvHUUDYJeFIUDyaC88k52tyZ1SeSkveLRy+vf7GkHicVVMAOuyiQV3aQD\n" + "M8o3QFyrncw5i608d8JArJZ7LXhx+S+37rMsBGHnXAyKjv8zNt/YW3IjAA4ifr+m\n" + "rbTurPyCNxKFdhTBQaF1ofQaKVNEIdSjNCB+5RXUXmoAELsiRQS4LGN6NhMfBlbu\n" + "YAMUmDjwu/LkDGLbZHX0cGiDuLc/qefVc1QBAQZ2zoCAnYZU6itnzqlayOijNj8n\n" + "0aHMa8P8rb9gzOKcNOz147lLK5oHjYgeYOy3hpUDT/k7wyELWb20GKaaWLgGqWS0\n" + "W5U6UgHQoBLyOvHIOkbCRVyIPLh9ijufA0LpUdk2Lf1Sww==\n" + "-----END CERTIFICATE-----\n", + NULL }; static const char *v1_intermed_check[] = { - "-----BEGIN CERTIFICATE-----\n" - "MIIDGzCCAgOgAwIBAgIIUvuL4ymDgpEwDQYJKoZIhvcNAQELBQAwDjEMMAoGA1UE\n" - "AxMDQ0ExMCIYDzIwMTQwMjEyMTQ1NzQwWhgPOTk5OTEyMzEyMzU5NTlaMBExDzAN\n" - "BgNVBAMTBnNlcnZlcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALkh\n" - "OTKvbV/OQcP9fn02UGzWNLGwS06248rOo+fHqCngf3nl/IefzktuI4Al5Qq9pq42\n" - "X2oLn/zr8kaO3L0rDcc54nVRuipfsw5nxAmwmjpfwnDgyla4Y88n57dhia/tmFlL\n" - "rpspg4YJ8Jt4/tGaNVS0OZ57LEoW7/OrqoGM7U3Xxa2QbzaNYMGcSt2ePvccCg13\n" - "+CJcXxOQcr/cUxyuk9neATJoulFtO8ycpmkLFUdi0WoThBjNCCJ8s7ZuvnGpF4vD\n" - "3fuvyM2ftiS08B2c5cv6FH9+4I7Elrb++TdVf43F0Awc2pLhm8L1fAuTtMjtbd9w\n" - "pxs0yaWR8IvQYbWM/XUCAwEAAaN2MHQwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAK\n" - "BggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQWBBTlqmq9/mceVMMP\n" - "Z0HtoWZvHDc/tTAfBgNVHSMEGDAWgBRq1Eg1exmWS45j+lFklVwTQe5NsjANBgkq\n" - "hkiG9w0BAQsFAAOCAQEAAWX2f1XE/bR+DYCMaNAFpTjOFZ54eCBdazUqfVamPRoP\n" - "/8qyEYpMaA+IpHkJ5tXsx/rdKLgg1kNv/6bXyCwVgVcNBxpt05WUxqFG9xxLLz1K\n" - "UkbOZUA0/P9GqjRt9HeodP0Hqog1c1d4jgU3Ng7FIn5JXmLNVfl5qXfXCJ2S9WKu\n" - "pHw0M9TLOKUD2DD2T5K/iZAU0AXGRVUH39e+xsFIoawPWflfN5eNz8uikMQc+kxt\n" - "DdEMfPZidecToAcMolle53F7zZvqQswfla/3esb/bnndFAqIsnXRpi6Oj06ajzwE\n" - "TKP745KouHnNPZ3Hz1mPeusn4EJkLfTb5aBT3nJ+Kw==\n" - "-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\n" - "MIICmzCCAYMCCFL7i7wg78R3MA0GCSqGSIb3DQEBCwUAMA4xDDAKBgNVBAMTA0NB\n" - "MjAiGA8yMDE0MDIxMjE0NTcwMloYDzk5OTkxMjMxMjM1OTU5WjAOMQwwCgYDVQQD\n" - "EwNDQTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDDS0OoKnGy/0Ju\n" - "U/Q+T3b5RR53oe24OoISkKE4Sia50aHeQZbYitIsQUEvMq06kdjaSA2p8qT29p9n\n" - "feDYsrhgZkWm4stp2EMkbbkB6k0hBobo4YQiQRa4ttYIsOWLMk/xR0z5ST+UoUv6\n" - "L/5IOxxJzdpUEbMJpM0Zp8AUZRKnXTc88a/zpPbYiO+LicdhlIKiUvIlnVTlvHOz\n" - "yN9y5o0Dry9i3IlDSTK8Ls54Nm6v7Z+1F1UwIXkYJCX0WxJ6w/4jHmbiRSitbH9s\n" - "UqSUm9sHCUakBJA3Y9/9K2SVWNJrG/G4LmZ+Zwr8NdZN3RrxQnWnudL4bTtM0WgY\n" - "QynV12XDAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAGJbRVVxERtx5Li15n1bdAzW\n" - "HaDNKt/TkUcZvnfdtggvZLkKhPiNWksQ+9jk1RS71dSZHT9Kb9bIVhaYzaHdI+hG\n" - "7coftkY66wjD9xLv2DyqnwvuR0S8Uhj9jas5xf/P9S79ZDk61Afg7yX8aLBJpJIH\n" - "citi1c65C8rYwB8zsF1Zbbh2/6Enty+eFhS1JOuEgUFP1oO2Nj2vh4IqR3yEGdGt\n" - "Tr57CD/C97fcaeRE4LlHJIMQ9toeZ5Fc9avnOzNIxJd7BPqWWvOnu3TWufj7uaq+\n" - "CcHTlq9h0NKf9dI1GsxbscJbO3+I+hzOwYfFcNrQ+8BFGbcwx9ZcS2xO3Rx9dbc=\n" - "-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\n" - "MIIC3jCCAcagAwIBAgIBATANBgkqhkiG9w0BAQsFADAOMQwwCgYDVQQDEwNDQTIw\n" - "IhgPMjAxNDAyMTIxNDU0NTJaGA85OTk5MTIzMTIzNTk1OVowDjEMMAoGA1UEAxMD\n" - "Q0EyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwZPztwmz136OBSTT\n" - "t4pXys9dTfaOBajrO2s4JcPa0C+7D2wfWD941q1q01TV5+QgLDTF7OO5VSXt2W3p\n" - "cKlXS/Ll2N8sxTaULcVCodFrHOdfHV1V65VlWhJOnPdpboBtM2V8Iory+d2mNXZT\n" - "wkcNJ/Z8YBUZCTeR1zaLjq0GAITyJoMiI4+x9Djc+iBDGJarRW7A/JyDN4EFjDzw\n" - "svdWpHg710I+qtKnlMO/whEmw9r3L486JTSlrrrruUSVGY9UWJpv62az1jbu63d8\n" - "6/PBp0xbBpiv1xA0qSSquN/THurTZ0Y0MS0vbpnAYkws8YxnFAV1TU4B7AZ0IQId\n" - "Zjo6HQIDAQABo0MwQTAPBgNVHRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBAAw\n" - "HQYDVR0OBBYEFNVrkTf8WoQKImozc6dBqx8J8tvhMA0GCSqGSIb3DQEBCwUAA4IB\n" - "AQBpX+j6Fd5aLnMs55qqbFBTWU9bH4/fGh6OVcJztZyvRTOQMLoha9Lsa2C1c1u0\n" - "kjj3coRWIq8YH8FbOhu0x3pij5dcnn1FQCKcwEmjdDf6ltxplkZXpR86yW2ZyR2W\n" - "WmIPUrMPJNFkBbgVKFyYoj+9QUyoWHAWNSLJhqBI5v5CRNYIIat1Nt5SuTDm3ggw\n" - "GUfMH/snytxVq23tj+02pBCdahTqN1w83W1yFX39URChPpl9RZ6HcIg3DFrXhXte\n" - "lA+/t8l+o7w7POJ4xMyRtbTuGpGHQac+VJBWKFkduY3sbXN2GdQPL6/VvKH115Tr\n" - "Bos85afmGYPR/gUP0hVSlFzj\n" - "-----END CERTIFICATE-----\n", - NULL + "-----BEGIN CERTIFICATE-----\n" + "MIIDGzCCAgOgAwIBAgIIUvuL4ymDgpEwDQYJKoZIhvcNAQELBQAwDjEMMAoGA1UE\n" + "AxMDQ0ExMCIYDzIwMTQwMjEyMTQ1NzQwWhgPOTk5OTEyMzEyMzU5NTlaMBExDzAN\n" + "BgNVBAMTBnNlcnZlcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALkh\n" + "OTKvbV/OQcP9fn02UGzWNLGwS06248rOo+fHqCngf3nl/IefzktuI4Al5Qq9pq42\n" + "X2oLn/zr8kaO3L0rDcc54nVRuipfsw5nxAmwmjpfwnDgyla4Y88n57dhia/tmFlL\n" + "rpspg4YJ8Jt4/tGaNVS0OZ57LEoW7/OrqoGM7U3Xxa2QbzaNYMGcSt2ePvccCg13\n" + "+CJcXxOQcr/cUxyuk9neATJoulFtO8ycpmkLFUdi0WoThBjNCCJ8s7ZuvnGpF4vD\n" + "3fuvyM2ftiS08B2c5cv6FH9+4I7Elrb++TdVf43F0Awc2pLhm8L1fAuTtMjtbd9w\n" + "pxs0yaWR8IvQYbWM/XUCAwEAAaN2MHQwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAK\n" + "BggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQWBBTlqmq9/mceVMMP\n" + "Z0HtoWZvHDc/tTAfBgNVHSMEGDAWgBRq1Eg1exmWS45j+lFklVwTQe5NsjANBgkq\n" + "hkiG9w0BAQsFAAOCAQEAAWX2f1XE/bR+DYCMaNAFpTjOFZ54eCBdazUqfVamPRoP\n" + "/8qyEYpMaA+IpHkJ5tXsx/rdKLgg1kNv/6bXyCwVgVcNBxpt05WUxqFG9xxLLz1K\n" + "UkbOZUA0/P9GqjRt9HeodP0Hqog1c1d4jgU3Ng7FIn5JXmLNVfl5qXfXCJ2S9WKu\n" + "pHw0M9TLOKUD2DD2T5K/iZAU0AXGRVUH39e+xsFIoawPWflfN5eNz8uikMQc+kxt\n" + "DdEMfPZidecToAcMolle53F7zZvqQswfla/3esb/bnndFAqIsnXRpi6Oj06ajzwE\n" + "TKP745KouHnNPZ3Hz1mPeusn4EJkLfTb5aBT3nJ+Kw==\n" + "-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\n" + "MIICmzCCAYMCCFL7i7wg78R3MA0GCSqGSIb3DQEBCwUAMA4xDDAKBgNVBAMTA0NB\n" + "MjAiGA8yMDE0MDIxMjE0NTcwMloYDzk5OTkxMjMxMjM1OTU5WjAOMQwwCgYDVQQD\n" + "EwNDQTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDDS0OoKnGy/0Ju\n" + "U/Q+T3b5RR53oe24OoISkKE4Sia50aHeQZbYitIsQUEvMq06kdjaSA2p8qT29p9n\n" + "feDYsrhgZkWm4stp2EMkbbkB6k0hBobo4YQiQRa4ttYIsOWLMk/xR0z5ST+UoUv6\n" + "L/5IOxxJzdpUEbMJpM0Zp8AUZRKnXTc88a/zpPbYiO+LicdhlIKiUvIlnVTlvHOz\n" + "yN9y5o0Dry9i3IlDSTK8Ls54Nm6v7Z+1F1UwIXkYJCX0WxJ6w/4jHmbiRSitbH9s\n" + "UqSUm9sHCUakBJA3Y9/9K2SVWNJrG/G4LmZ+Zwr8NdZN3RrxQnWnudL4bTtM0WgY\n" + "QynV12XDAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAGJbRVVxERtx5Li15n1bdAzW\n" + "HaDNKt/TkUcZvnfdtggvZLkKhPiNWksQ+9jk1RS71dSZHT9Kb9bIVhaYzaHdI+hG\n" + "7coftkY66wjD9xLv2DyqnwvuR0S8Uhj9jas5xf/P9S79ZDk61Afg7yX8aLBJpJIH\n" + "citi1c65C8rYwB8zsF1Zbbh2/6Enty+eFhS1JOuEgUFP1oO2Nj2vh4IqR3yEGdGt\n" + "Tr57CD/C97fcaeRE4LlHJIMQ9toeZ5Fc9avnOzNIxJd7BPqWWvOnu3TWufj7uaq+\n" + "CcHTlq9h0NKf9dI1GsxbscJbO3+I+hzOwYfFcNrQ+8BFGbcwx9ZcS2xO3Rx9dbc=\n" + "-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\n" + "MIIC3jCCAcagAwIBAgIBATANBgkqhkiG9w0BAQsFADAOMQwwCgYDVQQDEwNDQTIw\n" + "IhgPMjAxNDAyMTIxNDU0NTJaGA85OTk5MTIzMTIzNTk1OVowDjEMMAoGA1UEAxMD\n" + "Q0EyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwZPztwmz136OBSTT\n" + "t4pXys9dTfaOBajrO2s4JcPa0C+7D2wfWD941q1q01TV5+QgLDTF7OO5VSXt2W3p\n" + "cKlXS/Ll2N8sxTaULcVCodFrHOdfHV1V65VlWhJOnPdpboBtM2V8Iory+d2mNXZT\n" + "wkcNJ/Z8YBUZCTeR1zaLjq0GAITyJoMiI4+x9Djc+iBDGJarRW7A/JyDN4EFjDzw\n" + "svdWpHg710I+qtKnlMO/whEmw9r3L486JTSlrrrruUSVGY9UWJpv62az1jbu63d8\n" + "6/PBp0xbBpiv1xA0qSSquN/THurTZ0Y0MS0vbpnAYkws8YxnFAV1TU4B7AZ0IQId\n" + "Zjo6HQIDAQABo0MwQTAPBgNVHRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBAAw\n" + "HQYDVR0OBBYEFNVrkTf8WoQKImozc6dBqx8J8tvhMA0GCSqGSIb3DQEBCwUAA4IB\n" + "AQBpX+j6Fd5aLnMs55qqbFBTWU9bH4/fGh6OVcJztZyvRTOQMLoha9Lsa2C1c1u0\n" + "kjj3coRWIq8YH8FbOhu0x3pij5dcnn1FQCKcwEmjdDf6ltxplkZXpR86yW2ZyR2W\n" + "WmIPUrMPJNFkBbgVKFyYoj+9QUyoWHAWNSLJhqBI5v5CRNYIIat1Nt5SuTDm3ggw\n" + "GUfMH/snytxVq23tj+02pBCdahTqN1w83W1yFX39URChPpl9RZ6HcIg3DFrXhXte\n" + "lA+/t8l+o7w7POJ4xMyRtbTuGpGHQac+VJBWKFkduY3sbXN2GdQPL6/VvKH115Tr\n" + "Bos85afmGYPR/gUP0hVSlFzj\n" + "-----END CERTIFICATE-----\n", + NULL }; static const char *v1_root_check[] = { - "-----BEGIN CERTIFICATE-----\n" - "MIIDAjCCAeqgAwIBAgIMVDP8wwGyCHAlXREsMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTAwIhgPMjAxNDEwMDcxNDQ2MjdaGA85OTk5MTIzMTIzNTk1OVow\n" - "EzERMA8GA1UEAxMIc2VydmVyLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" - "AoIBAQCp7I46Ga7QxXCq6SegwcKCbnMeIG2P5IaJXknjBy4rq7P3dqEdEmm/UdwS\n" - "Wp2jH+k+OFvzFe2FR1fY7UBSFdpLTaMz8YIQ1ESPu2afAxWCE1drJnphVCZyMskp\n" - "d9P9p+TXE4Y7ppxPRTvp2D/chfIcByIKPKwsjU37hrgFehb7Jolq3Er0pOPitSPj\n" - "KFVKNAktu8Z411S1hQdO7+jjr8pbFoROm2VDbYRpowCHw9ZhlC51SFKeqPTslUdv\n" - "53pmq1p02d3WMvKWuFRAIMs1UPba5prN9UI7jZztR0o7xnHm3KtWk+o4+YSDCM5R\n" - "EoiGvyhKgDoM3B/KQG+1rin2/uMdAgMBAAGjVjBUMAwGA1UdEwEB/wQCMAAwFAYD\n" - "VR0RBA0wC4IJbG9jYWxob3N0MA8GA1UdDwEB/wQFAwMHoAAwHQYDVR0OBBYEFDoL\n" - "zL5Pd48Psh5oe9VGrkmXclumMA0GCSqGSIb3DQEBCwUAA4IBAQA21lKw/Vr7P4hl\n" - "VBY27GOGIh7Tw0dFN8HiYX0jFRlyn7zgoRYfJMuLxtC+jJl02s+iljl9gdTlcAgt\n" - "dWs74QdKUIMHfoT12WOcIwAIMZLBspbUjn6+eoVPE6zCOfrChRCv4dM4BCz/kg6w\n" - "MqxM/UE+OS+AgO8hHN1boMbBWMcMR/ylpJE2P3nHGgTg6xsZrEn9aH8y+uqUuScn\n" - "P13H74zV1f1tTi2QT7Y/lpNKuB8vvqJgcUdxGaVQhz3q+YooSwmkDaWTz9HIAqpr\n" - "77BBxvr5eok6o528h4qJ5nA3NgLw8nIgyBP2vN/N4CsmRAZ/vHVbGEOeWRkH0rGE\n" - "SemQfe/B\n" - "-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\n" - "MIICljCCAX4CAQAwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAxMEQ0EtMDAiGA8y\n" - "MDE0MTAwNzE0NDYyNloYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRDQS0w\n" - "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnTMg33+4Q3ULz+//A9Wn\n" - "m0DCq9X1ne0q8TfCriOo4Zc2VuFsR3Bm90btX9KqVEfByD8Ba4fb/oF0F6+sb4Ej\n" - "imPI6PSwHXEX0BPSHcmv6lb+iXHRwpqsx+r9GIuPS+0vuTu07sj1yjszlx7aNXOx\n" - "hsDAFaedzO8/9nCjbrQ79cLcGusPETjGFAD9vDfBTUNtebPiW9CCNsmRUVWOm6/s\n" - "5kfy1AfcH6FZCoqvmoELz55JWzYHrWSQhgIopJ0DLfYoF8fg3XeIMUNLk+Lrcoe6\n" - "ZDCxDxGwXReNfIWnf1l1OnZAdMAt/egr9jeQR+l9y4jBhcssW7Wb8M6+wvinsMOG\n" - "MQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBosiz3l31++ZErMs09bnGe+DEQfL+t\n" - "iWRmhzLC7kF64+O4Eu+IkWvEUv+LEhHm2GLrqaKu7FAlWUMWRX3GHHxAOtNeLR7U\n" - "qXBZtq56wHA+fMv8+lqLQuT6eKLNbbuxVWZ/E1qaMax7rlQrtEpAC9ruuafcPlC5\n" - "U4YbJ4VOhfBnJzQ6KlFtbqOkGr7v/l2d9NRxorAWawPVhIteZv1Ahiu++5g+dn/R\n" - "z8ehN9SEm+c6C5mWrqHiQka3yi060gO8kBcumM/cE6BxffiOUxy2gsPC2ZrI8xkB\n" - "ghrpQ87AmWXsvVk03U1l0vHpiE3kXb5FIAbWW7In1mfULqLKgeqllMhD\n" - "-----END CERTIFICATE-----\n", - NULL + "-----BEGIN CERTIFICATE-----\n" + "MIIDAjCCAeqgAwIBAgIMVDP8wwGyCHAlXREsMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTAwIhgPMjAxNDEwMDcxNDQ2MjdaGA85OTk5MTIzMTIzNTk1OVow\n" + "EzERMA8GA1UEAxMIc2VydmVyLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" + "AoIBAQCp7I46Ga7QxXCq6SegwcKCbnMeIG2P5IaJXknjBy4rq7P3dqEdEmm/UdwS\n" + "Wp2jH+k+OFvzFe2FR1fY7UBSFdpLTaMz8YIQ1ESPu2afAxWCE1drJnphVCZyMskp\n" + "d9P9p+TXE4Y7ppxPRTvp2D/chfIcByIKPKwsjU37hrgFehb7Jolq3Er0pOPitSPj\n" + "KFVKNAktu8Z411S1hQdO7+jjr8pbFoROm2VDbYRpowCHw9ZhlC51SFKeqPTslUdv\n" + "53pmq1p02d3WMvKWuFRAIMs1UPba5prN9UI7jZztR0o7xnHm3KtWk+o4+YSDCM5R\n" + "EoiGvyhKgDoM3B/KQG+1rin2/uMdAgMBAAGjVjBUMAwGA1UdEwEB/wQCMAAwFAYD\n" + "VR0RBA0wC4IJbG9jYWxob3N0MA8GA1UdDwEB/wQFAwMHoAAwHQYDVR0OBBYEFDoL\n" + "zL5Pd48Psh5oe9VGrkmXclumMA0GCSqGSIb3DQEBCwUAA4IBAQA21lKw/Vr7P4hl\n" + "VBY27GOGIh7Tw0dFN8HiYX0jFRlyn7zgoRYfJMuLxtC+jJl02s+iljl9gdTlcAgt\n" + "dWs74QdKUIMHfoT12WOcIwAIMZLBspbUjn6+eoVPE6zCOfrChRCv4dM4BCz/kg6w\n" + "MqxM/UE+OS+AgO8hHN1boMbBWMcMR/ylpJE2P3nHGgTg6xsZrEn9aH8y+uqUuScn\n" + "P13H74zV1f1tTi2QT7Y/lpNKuB8vvqJgcUdxGaVQhz3q+YooSwmkDaWTz9HIAqpr\n" + "77BBxvr5eok6o528h4qJ5nA3NgLw8nIgyBP2vN/N4CsmRAZ/vHVbGEOeWRkH0rGE\n" + "SemQfe/B\n" + "-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\n" + "MIICljCCAX4CAQAwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAxMEQ0EtMDAiGA8y\n" + "MDE0MTAwNzE0NDYyNloYDzk5OTkxMjMxMjM1OTU5WjAPMQ0wCwYDVQQDEwRDQS0w\n" + "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnTMg33+4Q3ULz+//A9Wn\n" + "m0DCq9X1ne0q8TfCriOo4Zc2VuFsR3Bm90btX9KqVEfByD8Ba4fb/oF0F6+sb4Ej\n" + "imPI6PSwHXEX0BPSHcmv6lb+iXHRwpqsx+r9GIuPS+0vuTu07sj1yjszlx7aNXOx\n" + "hsDAFaedzO8/9nCjbrQ79cLcGusPETjGFAD9vDfBTUNtebPiW9CCNsmRUVWOm6/s\n" + "5kfy1AfcH6FZCoqvmoELz55JWzYHrWSQhgIopJ0DLfYoF8fg3XeIMUNLk+Lrcoe6\n" + "ZDCxDxGwXReNfIWnf1l1OnZAdMAt/egr9jeQR+l9y4jBhcssW7Wb8M6+wvinsMOG\n" + "MQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBosiz3l31++ZErMs09bnGe+DEQfL+t\n" + "iWRmhzLC7kF64+O4Eu+IkWvEUv+LEhHm2GLrqaKu7FAlWUMWRX3GHHxAOtNeLR7U\n" + "qXBZtq56wHA+fMv8+lqLQuT6eKLNbbuxVWZ/E1qaMax7rlQrtEpAC9ruuafcPlC5\n" + "U4YbJ4VOhfBnJzQ6KlFtbqOkGr7v/l2d9NRxorAWawPVhIteZv1Ahiu++5g+dn/R\n" + "z8ehN9SEm+c6C5mWrqHiQka3yi060gO8kBcumM/cE6BxffiOUxy2gsPC2ZrI8xkB\n" + "ghrpQ87AmWXsvVk03U1l0vHpiE3kXb5FIAbWW7In1mfULqLKgeqllMhD\n" + "-----END CERTIFICATE-----\n", + NULL }; static const char *pathlen_check[] = { - "-----BEGIN CERTIFICATE-----\n" - "MIIDGzCCAgOgAwIBAgIIUvuL4ymDgpEwDQYJKoZIhvcNAQELBQAwDjEMMAoGA1UE\n" - "AxMDQ0ExMCIYDzIwMTQwMjEyMTQ1NzQwWhgPOTk5OTEyMzEyMzU5NTlaMBExDzAN\n" - "BgNVBAMTBnNlcnZlcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALkh\n" - "OTKvbV/OQcP9fn02UGzWNLGwS06248rOo+fHqCngf3nl/IefzktuI4Al5Qq9pq42\n" - "X2oLn/zr8kaO3L0rDcc54nVRuipfsw5nxAmwmjpfwnDgyla4Y88n57dhia/tmFlL\n" - "rpspg4YJ8Jt4/tGaNVS0OZ57LEoW7/OrqoGM7U3Xxa2QbzaNYMGcSt2ePvccCg13\n" - "+CJcXxOQcr/cUxyuk9neATJoulFtO8ycpmkLFUdi0WoThBjNCCJ8s7ZuvnGpF4vD\n" - "3fuvyM2ftiS08B2c5cv6FH9+4I7Elrb++TdVf43F0Awc2pLhm8L1fAuTtMjtbd9w\n" - "pxs0yaWR8IvQYbWM/XUCAwEAAaN2MHQwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAK\n" - "BggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQWBBTlqmq9/mceVMMP\n" - "Z0HtoWZvHDc/tTAfBgNVHSMEGDAWgBRq1Eg1exmWS45j+lFklVwTQe5NsjANBgkq\n" - "hkiG9w0BAQsFAAOCAQEAAWX2f1XE/bR+DYCMaNAFpTjOFZ54eCBdazUqfVamPRoP\n" - "/8qyEYpMaA+IpHkJ5tXsx/rdKLgg1kNv/6bXyCwVgVcNBxpt05WUxqFG9xxLLz1K\n" - "UkbOZUA0/P9GqjRt9HeodP0Hqog1c1d4jgU3Ng7FIn5JXmLNVfl5qXfXCJ2S9WKu\n" - "pHw0M9TLOKUD2DD2T5K/iZAU0AXGRVUH39e+xsFIoawPWflfN5eNz8uikMQc+kxt\n" - "DdEMfPZidecToAcMolle53F7zZvqQswfla/3esb/bnndFAqIsnXRpi6Oj06ajzwE\n" - "TKP745KouHnNPZ3Hz1mPeusn4EJkLfTb5aBT3nJ+Kw==\n" - "-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\n" - "MIICmzCCAYMCCFL7i7wg78R3MA0GCSqGSIb3DQEBCwUAMA4xDDAKBgNVBAMTA0NB\n" - "MjAiGA8yMDE0MDIxMjE0NTcwMloYDzk5OTkxMjMxMjM1OTU5WjAOMQwwCgYDVQQD\n" - "EwNDQTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDDS0OoKnGy/0Ju\n" - "U/Q+T3b5RR53oe24OoISkKE4Sia50aHeQZbYitIsQUEvMq06kdjaSA2p8qT29p9n\n" - "feDYsrhgZkWm4stp2EMkbbkB6k0hBobo4YQiQRa4ttYIsOWLMk/xR0z5ST+UoUv6\n" - "L/5IOxxJzdpUEbMJpM0Zp8AUZRKnXTc88a/zpPbYiO+LicdhlIKiUvIlnVTlvHOz\n" - "yN9y5o0Dry9i3IlDSTK8Ls54Nm6v7Z+1F1UwIXkYJCX0WxJ6w/4jHmbiRSitbH9s\n" - "UqSUm9sHCUakBJA3Y9/9K2SVWNJrG/G4LmZ+Zwr8NdZN3RrxQnWnudL4bTtM0WgY\n" - "QynV12XDAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAGJbRVVxERtx5Li15n1bdAzW\n" - "HaDNKt/TkUcZvnfdtggvZLkKhPiNWksQ+9jk1RS71dSZHT9Kb9bIVhaYzaHdI+hG\n" - "7coftkY66wjD9xLv2DyqnwvuR0S8Uhj9jas5xf/P9S79ZDk61Afg7yX8aLBJpJIH\n" - "citi1c65C8rYwB8zsF1Zbbh2/6Enty+eFhS1JOuEgUFP1oO2Nj2vh4IqR3yEGdGt\n" - "Tr57CD/C97fcaeRE4LlHJIMQ9toeZ5Fc9avnOzNIxJd7BPqWWvOnu3TWufj7uaq+\n" - "CcHTlq9h0NKf9dI1GsxbscJbO3+I+hzOwYfFcNrQ+8BFGbcwx9ZcS2xO3Rx9dbc=\n" - "-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\n" - "MIIC6DCCAdCgAwIBAgIIUvuTdCOiZ3IwDQYJKoZIhvcNAQELBQAwDjEMMAoGA1UE\n" - "AxMDQ0EyMCIYDzIwMTQwMjEyMTUyOTU3WhgPOTk5OTEyMzEyMzU5NTlaMA4xDDAK\n" - "BgNVBAMTA0NBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMGT87cJ\n" - "s9d+jgUk07eKV8rPXU32jgWo6ztrOCXD2tAvuw9sH1g/eNatatNU1efkICw0xezj\n" - "uVUl7dlt6XCpV0vy5djfLMU2lC3FQqHRaxznXx1dVeuVZVoSTpz3aW6AbTNlfCKK\n" - "8vndpjV2U8JHDSf2fGAVGQk3kdc2i46tBgCE8iaDIiOPsfQ43PogQxiWq0VuwPyc\n" - "gzeBBYw88LL3VqR4O9dCPqrSp5TDv8IRJsPa9y+POiU0pa6667lElRmPVFiab+tm\n" - "s9Y27ut3fOvzwadMWwaYr9cQNKkkqrjf0x7q02dGNDEtL26ZwGJMLPGMZxQFdU1O\n" - "AewGdCECHWY6Oh0CAwEAAaNGMEQwEgYDVR0TAQH/BAgwBgEB/wIBADAPBgNVHQ8B\n" - "Af8EBQMDBwQAMB0GA1UdDgQWBBTVa5E3/FqECiJqM3OnQasfCfLb4TANBgkqhkiG\n" - "9w0BAQsFAAOCAQEAtQudk32tQ30ldwLy5QyNzwpxTq1izycXGMkh3LvNUQrxmwzl\n" - "8EPi1d4bxdAi3ghwppImJPZ1aWOrSl9cxl7kH4clq/QdG6bKhhr/40ImZctV35fA\n" - "Kd1/aDlUUNQIv7cD/T8fb8rMmZ7RPoLsgLcVfodKwafY+X/y4ZacA2uF2L2dX37T\n" - "etQprA+hjeKu6rej9eb+ERZqYChDvp7FNbJ5fOnIZ9iG1Z714fUeuRDzvosJl6n8\n" - "aVIRHXdZbhCgKdJTR4bvFPGVFL86xLMkV7jhCImNBN9rmd59wD6g79nTUUoPDM3r\n" - "rpNkoLGmlBhUorRWbx0YAz9UojNdd4GWMefwZw==\n" - "-----END CERTIFICATE-----\n", - NULL + "-----BEGIN CERTIFICATE-----\n" + "MIIDGzCCAgOgAwIBAgIIUvuL4ymDgpEwDQYJKoZIhvcNAQELBQAwDjEMMAoGA1UE\n" + "AxMDQ0ExMCIYDzIwMTQwMjEyMTQ1NzQwWhgPOTk5OTEyMzEyMzU5NTlaMBExDzAN\n" + "BgNVBAMTBnNlcnZlcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALkh\n" + "OTKvbV/OQcP9fn02UGzWNLGwS06248rOo+fHqCngf3nl/IefzktuI4Al5Qq9pq42\n" + "X2oLn/zr8kaO3L0rDcc54nVRuipfsw5nxAmwmjpfwnDgyla4Y88n57dhia/tmFlL\n" + "rpspg4YJ8Jt4/tGaNVS0OZ57LEoW7/OrqoGM7U3Xxa2QbzaNYMGcSt2ePvccCg13\n" + "+CJcXxOQcr/cUxyuk9neATJoulFtO8ycpmkLFUdi0WoThBjNCCJ8s7ZuvnGpF4vD\n" + "3fuvyM2ftiS08B2c5cv6FH9+4I7Elrb++TdVf43F0Awc2pLhm8L1fAuTtMjtbd9w\n" + "pxs0yaWR8IvQYbWM/XUCAwEAAaN2MHQwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAK\n" + "BggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQWBBTlqmq9/mceVMMP\n" + "Z0HtoWZvHDc/tTAfBgNVHSMEGDAWgBRq1Eg1exmWS45j+lFklVwTQe5NsjANBgkq\n" + "hkiG9w0BAQsFAAOCAQEAAWX2f1XE/bR+DYCMaNAFpTjOFZ54eCBdazUqfVamPRoP\n" + "/8qyEYpMaA+IpHkJ5tXsx/rdKLgg1kNv/6bXyCwVgVcNBxpt05WUxqFG9xxLLz1K\n" + "UkbOZUA0/P9GqjRt9HeodP0Hqog1c1d4jgU3Ng7FIn5JXmLNVfl5qXfXCJ2S9WKu\n" + "pHw0M9TLOKUD2DD2T5K/iZAU0AXGRVUH39e+xsFIoawPWflfN5eNz8uikMQc+kxt\n" + "DdEMfPZidecToAcMolle53F7zZvqQswfla/3esb/bnndFAqIsnXRpi6Oj06ajzwE\n" + "TKP745KouHnNPZ3Hz1mPeusn4EJkLfTb5aBT3nJ+Kw==\n" + "-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\n" + "MIICmzCCAYMCCFL7i7wg78R3MA0GCSqGSIb3DQEBCwUAMA4xDDAKBgNVBAMTA0NB\n" + "MjAiGA8yMDE0MDIxMjE0NTcwMloYDzk5OTkxMjMxMjM1OTU5WjAOMQwwCgYDVQQD\n" + "EwNDQTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDDS0OoKnGy/0Ju\n" + "U/Q+T3b5RR53oe24OoISkKE4Sia50aHeQZbYitIsQUEvMq06kdjaSA2p8qT29p9n\n" + "feDYsrhgZkWm4stp2EMkbbkB6k0hBobo4YQiQRa4ttYIsOWLMk/xR0z5ST+UoUv6\n" + "L/5IOxxJzdpUEbMJpM0Zp8AUZRKnXTc88a/zpPbYiO+LicdhlIKiUvIlnVTlvHOz\n" + "yN9y5o0Dry9i3IlDSTK8Ls54Nm6v7Z+1F1UwIXkYJCX0WxJ6w/4jHmbiRSitbH9s\n" + "UqSUm9sHCUakBJA3Y9/9K2SVWNJrG/G4LmZ+Zwr8NdZN3RrxQnWnudL4bTtM0WgY\n" + "QynV12XDAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAGJbRVVxERtx5Li15n1bdAzW\n" + "HaDNKt/TkUcZvnfdtggvZLkKhPiNWksQ+9jk1RS71dSZHT9Kb9bIVhaYzaHdI+hG\n" + "7coftkY66wjD9xLv2DyqnwvuR0S8Uhj9jas5xf/P9S79ZDk61Afg7yX8aLBJpJIH\n" + "citi1c65C8rYwB8zsF1Zbbh2/6Enty+eFhS1JOuEgUFP1oO2Nj2vh4IqR3yEGdGt\n" + "Tr57CD/C97fcaeRE4LlHJIMQ9toeZ5Fc9avnOzNIxJd7BPqWWvOnu3TWufj7uaq+\n" + "CcHTlq9h0NKf9dI1GsxbscJbO3+I+hzOwYfFcNrQ+8BFGbcwx9ZcS2xO3Rx9dbc=\n" + "-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\n" + "MIIC6DCCAdCgAwIBAgIIUvuTdCOiZ3IwDQYJKoZIhvcNAQELBQAwDjEMMAoGA1UE\n" + "AxMDQ0EyMCIYDzIwMTQwMjEyMTUyOTU3WhgPOTk5OTEyMzEyMzU5NTlaMA4xDDAK\n" + "BgNVBAMTA0NBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMGT87cJ\n" + "s9d+jgUk07eKV8rPXU32jgWo6ztrOCXD2tAvuw9sH1g/eNatatNU1efkICw0xezj\n" + "uVUl7dlt6XCpV0vy5djfLMU2lC3FQqHRaxznXx1dVeuVZVoSTpz3aW6AbTNlfCKK\n" + "8vndpjV2U8JHDSf2fGAVGQk3kdc2i46tBgCE8iaDIiOPsfQ43PogQxiWq0VuwPyc\n" + "gzeBBYw88LL3VqR4O9dCPqrSp5TDv8IRJsPa9y+POiU0pa6667lElRmPVFiab+tm\n" + "s9Y27ut3fOvzwadMWwaYr9cQNKkkqrjf0x7q02dGNDEtL26ZwGJMLPGMZxQFdU1O\n" + "AewGdCECHWY6Oh0CAwEAAaNGMEQwEgYDVR0TAQH/BAgwBgEB/wIBADAPBgNVHQ8B\n" + "Af8EBQMDBwQAMB0GA1UdDgQWBBTVa5E3/FqECiJqM3OnQasfCfLb4TANBgkqhkiG\n" + "9w0BAQsFAAOCAQEAtQudk32tQ30ldwLy5QyNzwpxTq1izycXGMkh3LvNUQrxmwzl\n" + "8EPi1d4bxdAi3ghwppImJPZ1aWOrSl9cxl7kH4clq/QdG6bKhhr/40ImZctV35fA\n" + "Kd1/aDlUUNQIv7cD/T8fb8rMmZ7RPoLsgLcVfodKwafY+X/y4ZacA2uF2L2dX37T\n" + "etQprA+hjeKu6rej9eb+ERZqYChDvp7FNbJ5fOnIZ9iG1Z714fUeuRDzvosJl6n8\n" + "aVIRHXdZbhCgKdJTR4bvFPGVFL86xLMkV7jhCImNBN9rmd59wD6g79nTUUoPDM3r\n" + "rpNkoLGmlBhUorRWbx0YAz9UojNdd4GWMefwZw==\n" + "-----END CERTIFICATE-----\n", + NULL }; static const char *cve_2014_0092_check[] = { - "-----BEGIN CERTIFICATE-----\n" - "MIIDtDCCAmygAwIBAgIETeC0yjANBgkqhkiG9w0BAQsFADAZMRcwFQYDVQQDEw5H\n" - "bnVUTFMgVGVzdCBDQTAeFw0xMTA1MjgwODM5MzlaFw0zODEwMTIwODM5NDBaMC8x\n" - "LTArBgNVBAMTJEdudUFBQSBUZXN0IFNlcnZlciAoUlNBIGNlcnRpZmljYXRlKTCC\n" - "AVIwDQYJKoZIhvcNAQEBBQADggE/ADCCAToCggExALRrJ5glr8H/HsqwfvTYvO1D\n" - "hmdUXdq0HsKQX4M8AhH8E3KFsoikZUELdl8jvoqf/nlLczsux0s8vxbJl1U1F/Oh\n" - "ckswwuAnlBLzVgDmzoJLEV2kHpv6+rkbKk0Ytbql5gzHqKihbaqIhNyWDrJsHDWq\n" - "58eUPfnVx8KiDUuzbnr3CF/FCc0Vkxr3mN8qTGaJJO0f0BZjgWWlWDuhzSVim5mB\n" - "VAgXGOx8LwiiOyhXMp0XRwqG+2KxQZnm+96o6iB+8xvuuuqaIWQpkvKtc+UZBZ03\n" - "U+IRnxhfIrriiw0AjJ4vp4c9QL5KoqWSCAwuYcBYfJqZ4dasgzklzz4b7eujbZ3L\n" - "xTjewcdumzQUvjA+gpAeuUqaduTvMwxGojFy9sNhC/iqZ4n0peV2N6Epn4B5qnUC\n" - "AwEAAaOBjTCBijAMBgNVHRMBAf8EAjAAMBQGA1UdEQQNMAuCCWxvY2FsaG9zdDAT\n" - "BgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQWBBR2\n" - "B1hM6rUp9S2ABoyDSoINCeyT3jAfBgNVHSMEGDAWgBRNVrdqAFjxZ5L0pnVVG45T\n" - "AQPvzzANBgkqhkiG9w0BAQsFAAOCATEBdNWmTsh5uIfngyhOWwm7pK2+vgUMY8nH\n" - "gMoMFHt0yuxuImcUMXu3LRS1dZSoCJACBpTFGi/Dg2U0qvOHQcEmc3OwNqHB90R3\n" - "LG5jUSCtq/bYW7h/6Gd9KeWCgZczaHbQ9IPTjLH1dLswVPt+fXKB6Eh0ggSrGATE\n" - "/wRZT/XgDCW8t4C+2+TmJ8ZEzvU87KAPQ9rUBS1+p3EUAR/FfMApApsEig1IZ+ZD\n" - "5joaGBW7zh1H0B9mEKidRvD7yuRJyzAcvD25nT15NLW0QR3dEeXosLc720xxJl1h\n" - "h8NJ7YOvn323mOjR9er4i4D6iJlXmJ8tvN9vakCankWvBzb7plFn2sfMQqICFpRc\n" - "w075D8hdQxfpGffL2tEeKSgjyNHXS7x3dFhUpN3IQjUi2x4f2e/ZXg==\n" - "-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\n" - "MIIDUDCCAgigAwIBAgIBADANBgkqhkiG9w0BAQsFADAZMRcwFQYDVQQDEw5HbnVU\n" - "TFMgVGVzdCBDQTAeFw0xMTA1MjgwODM2MzBaFw0zODEwMTIwODM2MzNaMBkxFzAV\n" - "BgNVBAMTDkdudVRMUyBUZXN0IENBMIIBUjANBgkqhkiG9w0BAQEFAAOCAT8AMIIB\n" - "OgKCATEAnORCsX1unl//fy2d1054XduIg/3CqVBaT3Hca65SEoDwh0KiPtQoOgZL\n" - "dKY2cobGs/ojYtOjcs0KnlPYdmtjEh6WEhuJU95v4TQdC4OLMiE56eIGq252hZAb\n" - "HoTL84Q14DxQWGuzQK830iml7fbw2WcIcRQ8vFGs8SzfXw63+MI6Fq6iMAQIqP08\n" - "WzGmRRzL5wvCiPhCVkrPmwbXoABub6AAsYwWPJB91M9/lx5gFH5k9/iPfi3s2Kg3\n" - "F8MOcppqFYjxDSnsfiz6eMh1+bYVIAo367vGVYHigXMEZC2FezlwIHaZzpEoFlY3\n" - "a7LFJ00yrjQ910r8UE+CEMTYzE40D0olCMo7FA9RCjeO3bUIoYaIdVTUGWEGHWSe\n" - "oxGei9Gkm6u+ASj8f+i0jxdD2qXsewIDAQABo0MwQTAPBgNVHRMBAf8EBTADAQH/\n" - "MA8GA1UdDwEB/wQFAwMHBgAwHQYDVR0OBBYEFE1Wt2oAWPFnkvSmdVUbjlMBA+/P\n" - "MA0GCSqGSIb3DQEBCwUAA4IBMQAesOgjGFi1zOYpA/N3gkUVRcBHDxmN7g2yOcqH\n" - "VfhFc+e4zhOehR11WCt2RgzNlnYVmV5zBmQBdTAt8Po/MVhLCDW1BULHlLvL0DFc\n" - "4sB1RlcGeQcCKQa4b+Q9VWf4f6TfuEWZQC5j5stiXjVgOqrOMrzKZ2eKWA4JsL9s\n" - "V+7ANSZE+hOt1X1mA8moyqe95U2Ecih+nFJSWSBd1WFiEzVnXv4FVWPXbH9HERDK\n" - "VbasjofWWmQO1YlQPishLgm1IbwqOkOk4sDgoLuUZ4GgP0DDeN6EmRDOzByrv+9u\n" - "f45Bl9IQf4IJNPLU9lEqjyMOydqT6kBi7fjV5ICuQZ4EeVJsOGuX7PqNyoDzJHLv\n" - "ferRfNLr6eQSHSxBhS0cVyDjb5gCawK6u7xTU+b7xikEie9k\n" - "-----END CERTIFICATE-----\n", - NULL + "-----BEGIN CERTIFICATE-----\n" + "MIIDtDCCAmygAwIBAgIETeC0yjANBgkqhkiG9w0BAQsFADAZMRcwFQYDVQQDEw5H\n" + "bnVUTFMgVGVzdCBDQTAeFw0xMTA1MjgwODM5MzlaFw0zODEwMTIwODM5NDBaMC8x\n" + "LTArBgNVBAMTJEdudUFBQSBUZXN0IFNlcnZlciAoUlNBIGNlcnRpZmljYXRlKTCC\n" + "AVIwDQYJKoZIhvcNAQEBBQADggE/ADCCAToCggExALRrJ5glr8H/HsqwfvTYvO1D\n" + "hmdUXdq0HsKQX4M8AhH8E3KFsoikZUELdl8jvoqf/nlLczsux0s8vxbJl1U1F/Oh\n" + "ckswwuAnlBLzVgDmzoJLEV2kHpv6+rkbKk0Ytbql5gzHqKihbaqIhNyWDrJsHDWq\n" + "58eUPfnVx8KiDUuzbnr3CF/FCc0Vkxr3mN8qTGaJJO0f0BZjgWWlWDuhzSVim5mB\n" + "VAgXGOx8LwiiOyhXMp0XRwqG+2KxQZnm+96o6iB+8xvuuuqaIWQpkvKtc+UZBZ03\n" + "U+IRnxhfIrriiw0AjJ4vp4c9QL5KoqWSCAwuYcBYfJqZ4dasgzklzz4b7eujbZ3L\n" + "xTjewcdumzQUvjA+gpAeuUqaduTvMwxGojFy9sNhC/iqZ4n0peV2N6Epn4B5qnUC\n" + "AwEAAaOBjTCBijAMBgNVHRMBAf8EAjAAMBQGA1UdEQQNMAuCCWxvY2FsaG9zdDAT\n" + "BgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQWBBR2\n" + "B1hM6rUp9S2ABoyDSoINCeyT3jAfBgNVHSMEGDAWgBRNVrdqAFjxZ5L0pnVVG45T\n" + "AQPvzzANBgkqhkiG9w0BAQsFAAOCATEBdNWmTsh5uIfngyhOWwm7pK2+vgUMY8nH\n" + "gMoMFHt0yuxuImcUMXu3LRS1dZSoCJACBpTFGi/Dg2U0qvOHQcEmc3OwNqHB90R3\n" + "LG5jUSCtq/bYW7h/6Gd9KeWCgZczaHbQ9IPTjLH1dLswVPt+fXKB6Eh0ggSrGATE\n" + "/wRZT/XgDCW8t4C+2+TmJ8ZEzvU87KAPQ9rUBS1+p3EUAR/FfMApApsEig1IZ+ZD\n" + "5joaGBW7zh1H0B9mEKidRvD7yuRJyzAcvD25nT15NLW0QR3dEeXosLc720xxJl1h\n" + "h8NJ7YOvn323mOjR9er4i4D6iJlXmJ8tvN9vakCankWvBzb7plFn2sfMQqICFpRc\n" + "w075D8hdQxfpGffL2tEeKSgjyNHXS7x3dFhUpN3IQjUi2x4f2e/ZXg==\n" + "-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\n" + "MIIDUDCCAgigAwIBAgIBADANBgkqhkiG9w0BAQsFADAZMRcwFQYDVQQDEw5HbnVU\n" + "TFMgVGVzdCBDQTAeFw0xMTA1MjgwODM2MzBaFw0zODEwMTIwODM2MzNaMBkxFzAV\n" + "BgNVBAMTDkdudVRMUyBUZXN0IENBMIIBUjANBgkqhkiG9w0BAQEFAAOCAT8AMIIB\n" + "OgKCATEAnORCsX1unl//fy2d1054XduIg/3CqVBaT3Hca65SEoDwh0KiPtQoOgZL\n" + "dKY2cobGs/ojYtOjcs0KnlPYdmtjEh6WEhuJU95v4TQdC4OLMiE56eIGq252hZAb\n" + "HoTL84Q14DxQWGuzQK830iml7fbw2WcIcRQ8vFGs8SzfXw63+MI6Fq6iMAQIqP08\n" + "WzGmRRzL5wvCiPhCVkrPmwbXoABub6AAsYwWPJB91M9/lx5gFH5k9/iPfi3s2Kg3\n" + "F8MOcppqFYjxDSnsfiz6eMh1+bYVIAo367vGVYHigXMEZC2FezlwIHaZzpEoFlY3\n" + "a7LFJ00yrjQ910r8UE+CEMTYzE40D0olCMo7FA9RCjeO3bUIoYaIdVTUGWEGHWSe\n" + "oxGei9Gkm6u+ASj8f+i0jxdD2qXsewIDAQABo0MwQTAPBgNVHRMBAf8EBTADAQH/\n" + "MA8GA1UdDwEB/wQFAwMHBgAwHQYDVR0OBBYEFE1Wt2oAWPFnkvSmdVUbjlMBA+/P\n" + "MA0GCSqGSIb3DQEBCwUAA4IBMQAesOgjGFi1zOYpA/N3gkUVRcBHDxmN7g2yOcqH\n" + "VfhFc+e4zhOehR11WCt2RgzNlnYVmV5zBmQBdTAt8Po/MVhLCDW1BULHlLvL0DFc\n" + "4sB1RlcGeQcCKQa4b+Q9VWf4f6TfuEWZQC5j5stiXjVgOqrOMrzKZ2eKWA4JsL9s\n" + "V+7ANSZE+hOt1X1mA8moyqe95U2Ecih+nFJSWSBd1WFiEzVnXv4FVWPXbH9HERDK\n" + "VbasjofWWmQO1YlQPishLgm1IbwqOkOk4sDgoLuUZ4GgP0DDeN6EmRDOzByrv+9u\n" + "f45Bl9IQf4IJNPLU9lEqjyMOydqT6kBi7fjV5ICuQZ4EeVJsOGuX7PqNyoDzJHLv\n" + "ferRfNLr6eQSHSxBhS0cVyDjb5gCawK6u7xTU+b7xikEie9k\n" + "-----END CERTIFICATE-----\n", + NULL }; /* Triggers incorrect verification success on older versions */ static const char *cve_2008_4989_chain[] = { - /* chain[0] */ - "-----BEGIN CERTIFICATE-----\n" - "MIIB6zCCAVQCCQCgwnB/k0WZrDANBgkqhkiG9w0BAQUFADA9MQswCQYDVQQGEwJE\n" - "RTEXMBUGA1UEChMOR05VIFRMUyBBdHRhY2sxFTATBgNVBAMTDGludGVybWVkaWF0\n" - "ZTAeFw0wODExMDMxMjA1MDRaFw0wODEyMDMxMjA1MDRaMDcxCzAJBgNVBAYTAkRF\n" - "MRcwFQYDVQQKEw5HTlUgVExTIEF0dGFjazEPMA0GA1UEAxMGc2VydmVyMIGfMA0G\n" - "CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDKdL9g5ErMLOLRCjiomZlNLhy0moWGaKIW\n" - "aX6vyUIfh8d6FcArHoKoqhmX7ckvod50sOYPojQesDpl7gVaQNA6Ntr1VCcuNPef\n" - "UKWtEwL0Qu9JbPnUoIYd7mAaqVQgFp6W6yzV/dp63LH4XSdzBMhpZ/EU6vZoE8Sv\n" - "VLdqj5r6jwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAH4QRR7sZEbjW00tXYk/3O/Z\n" - "96AxJNg0F78W5B68gaJrLJ7DTE2RTglscuEq1+2Jyb4AIziwXpYqxgwcP91QpH97\n" - "XfwdXIcyjYvVLHiKmkQj2zJTY7MeyiEQQ2it8VstZG2fYmi2EiMZIEnyJ2JJ7bA7\n" - "bF7pG7Cg3oEHUM0H5KUU\n" - "-----END CERTIFICATE-----\n", - /* chain[1] (not signed by next cert) */ - "-----BEGIN CERTIFICATE-----\n" - "MIICADCCAWmgAwIBAgIJAIZ4nkHQAqTFMA0GCSqGSIb3DQEBBQUAMDUxCzAJBgNV\n" - "BAYTAkRFMRcwFQYDVQQKEw5HTlUgVExTIEF0dGFjazENMAsGA1UEAxMEcm9vdDAe\n" - "Fw0wODExMDMxMjA0NDVaFw0wODEyMDMxMjA0NDVaMD0xCzAJBgNVBAYTAkRFMRcw\n" - "FQYDVQQKEw5HTlUgVExTIEF0dGFjazEVMBMGA1UEAxMMaW50ZXJtZWRpYXRlMIGf\n" - "MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDvBpW8sAhIuUmNvcBE6wv/q7MtM1Z9\n" - "2I1SDL8eJ8I2nPg6BlCX+OIqNruynj8J7uPEQ04ZLwLxNXoyZa8057YFyrKLOvoj\n" - "5IfBtidsLWYv6PO3qqHJXVvwGdS7PKMuUlsjucCRyXVgQ07ODF7piqoVFi9KD99w\n" - "AU5+9plGrZNP/wIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUA\n" - "A4GBAGPg+M+8MsB6zHN2o+jAtyqovrTTwmzVWEgfEH/aHC9+imGZRQ5lFNc2vdny\n" - "AgaJ9/izO5S6Ibb5zUowN2WhoUJOVipuQa2m9AviOgheoU7tmANC9ylm/pRkKy/0\n" - "n5UVzlKxDhRp/xBb7MWOw3KEQjiAf2Z3wCLcCPUqcJUdJC4v\n" - "-----END CERTIFICATE-----\n", - /* chain[2] (trusted CA cert) */ - "-----BEGIN CERTIFICATE-----\n" - "MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUF\n" - "ADCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYG\n" - "A1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UE\n" - "CxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl\n" - "IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYx\n" - "MTE3MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTAT\n" - "BgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT\n" - "ZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJ\n" - "bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0\n" - "ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" - "AoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQ\n" - "LZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29\n" - "dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk6KHYcWUNo1F7\n" - "7rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/KaAcd\n" - "HJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR3\n" - "2HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA\n" - "MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7\n" - "W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7OR\n" - "tvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE\n" - "uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQ\n" - "aEfZYGDm/Ac9IiAXxPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqd\n" - "E8hhuvU5HIe6uL17In/2/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+\n" - "MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+\n" - "fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA==\n" - "-----END CERTIFICATE-----\n", - NULL + /* chain[0] */ + "-----BEGIN CERTIFICATE-----\n" + "MIIB6zCCAVQCCQCgwnB/k0WZrDANBgkqhkiG9w0BAQUFADA9MQswCQYDVQQGEwJE\n" + "RTEXMBUGA1UEChMOR05VIFRMUyBBdHRhY2sxFTATBgNVBAMTDGludGVybWVkaWF0\n" + "ZTAeFw0wODExMDMxMjA1MDRaFw0wODEyMDMxMjA1MDRaMDcxCzAJBgNVBAYTAkRF\n" + "MRcwFQYDVQQKEw5HTlUgVExTIEF0dGFjazEPMA0GA1UEAxMGc2VydmVyMIGfMA0G\n" + "CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDKdL9g5ErMLOLRCjiomZlNLhy0moWGaKIW\n" + "aX6vyUIfh8d6FcArHoKoqhmX7ckvod50sOYPojQesDpl7gVaQNA6Ntr1VCcuNPef\n" + "UKWtEwL0Qu9JbPnUoIYd7mAaqVQgFp6W6yzV/dp63LH4XSdzBMhpZ/EU6vZoE8Sv\n" + "VLdqj5r6jwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAH4QRR7sZEbjW00tXYk/3O/Z\n" + "96AxJNg0F78W5B68gaJrLJ7DTE2RTglscuEq1+2Jyb4AIziwXpYqxgwcP91QpH97\n" + "XfwdXIcyjYvVLHiKmkQj2zJTY7MeyiEQQ2it8VstZG2fYmi2EiMZIEnyJ2JJ7bA7\n" + "bF7pG7Cg3oEHUM0H5KUU\n" + "-----END CERTIFICATE-----\n", + /* chain[1] (not signed by next cert) */ + "-----BEGIN CERTIFICATE-----\n" + "MIICADCCAWmgAwIBAgIJAIZ4nkHQAqTFMA0GCSqGSIb3DQEBBQUAMDUxCzAJBgNV\n" + "BAYTAkRFMRcwFQYDVQQKEw5HTlUgVExTIEF0dGFjazENMAsGA1UEAxMEcm9vdDAe\n" + "Fw0wODExMDMxMjA0NDVaFw0wODEyMDMxMjA0NDVaMD0xCzAJBgNVBAYTAkRFMRcw\n" + "FQYDVQQKEw5HTlUgVExTIEF0dGFjazEVMBMGA1UEAxMMaW50ZXJtZWRpYXRlMIGf\n" + "MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDvBpW8sAhIuUmNvcBE6wv/q7MtM1Z9\n" + "2I1SDL8eJ8I2nPg6BlCX+OIqNruynj8J7uPEQ04ZLwLxNXoyZa8057YFyrKLOvoj\n" + "5IfBtidsLWYv6PO3qqHJXVvwGdS7PKMuUlsjucCRyXVgQ07ODF7piqoVFi9KD99w\n" + "AU5+9plGrZNP/wIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUA\n" + "A4GBAGPg+M+8MsB6zHN2o+jAtyqovrTTwmzVWEgfEH/aHC9+imGZRQ5lFNc2vdny\n" + "AgaJ9/izO5S6Ibb5zUowN2WhoUJOVipuQa2m9AviOgheoU7tmANC9ylm/pRkKy/0\n" + "n5UVzlKxDhRp/xBb7MWOw3KEQjiAf2Z3wCLcCPUqcJUdJC4v\n" + "-----END CERTIFICATE-----\n", + /* chain[2] (trusted CA cert) */ + "-----BEGIN CERTIFICATE-----\n" + "MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUF\n" + "ADCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYG\n" + "A1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UE\n" + "CxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl\n" + "IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYx\n" + "MTE3MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTAT\n" + "BgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT\n" + "ZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJ\n" + "bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0\n" + "ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" + "AoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQ\n" + "LZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29\n" + "dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk6KHYcWUNo1F7\n" + "7rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/KaAcd\n" + "HJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR3\n" + "2HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA\n" + "MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7\n" + "W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7OR\n" + "tvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE\n" + "uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQ\n" + "aEfZYGDm/Ac9IiAXxPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqd\n" + "E8hhuvU5HIe6uL17In/2/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+\n" + "MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+\n" + "fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA==\n" + "-----END CERTIFICATE-----\n", + NULL }; /* Chain length 3 ends with trusted v1 RSA-MD2 chain */ static const char *verisign_com_chain[] = { - /* chain[0] */ - "-----BEGIN CERTIFICATE-----\n" - "MIIGCDCCBPCgAwIBAgIQakrDGzEQ5utI8PxRo5oXHzANBgkqhkiG9w0BAQUFADCB\n" - "vjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" - "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n" - "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMv\n" - "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0Ew\n" - "HhcNMDcwNTA5MDAwMDAwWhcNMDkwNTA4MjM1OTU5WjCCAUAxEDAOBgNVBAUTBzI0\n" - "OTc4ODYxEzARBgsrBgEEAYI3PAIBAxMCVVMxGTAXBgsrBgEEAYI3PAIBAhMIRGVs\n" - "YXdhcmUxCzAJBgNVBAYTAlVTMQ4wDAYDVQQRFAU5NDA0MzETMBEGA1UECBMKQ2Fs\n" - "aWZvcm5pYTEWMBQGA1UEBxQNTW91bnRhaW4gVmlldzEiMCAGA1UECRQZNDg3IEVh\n" - "c3QgTWlkZGxlZmllbGQgUm9hZDEXMBUGA1UEChQOVmVyaVNpZ24sIEluYy4xJTAj\n" - "BgNVBAsUHFByb2R1Y3Rpb24gU2VjdXJpdHkgU2VydmljZXMxMzAxBgNVBAsUKlRl\n" - "cm1zIG9mIHVzZSBhdCB3d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjEZMBcGA1UE\n" - "AxQQd3d3LnZlcmlzaWduLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA\n" - "xxA35ev879drgQCpENGRQ3ARaCPz/WneT9dtMe3qGNvzXQJs6cjm1Bx8XegyW1gB\n" - "jJX5Zl4WWbr9wpAWZ1YyJ0bEyShIGmkU8fPfbcXYwSyWoWwvE5NRaUB2ztmfAVdv\n" - "OaGMUKxny2Dnj3tAdaQ+FOeRDJJYg6K1hzczq/otOfsCAwEAAaOCAf8wggH7MAkG\n" - "A1UdEwQCMAAwHQYDVR0OBBYEFPFaiZNVR0u6UfVO4MsWVfTXzDhnMAsGA1UdDwQE\n" - "AwIFoDA+BgNVHR8ENzA1MDOgMaAvhi1odHRwOi8vRVZJbnRsLWNybC52ZXJpc2ln\n" - "bi5jb20vRVZJbnRsMjAwNi5jcmwwRAYDVR0gBD0wOzA5BgtghkgBhvhFAQcXBjAq\n" - "MCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMDQGA1Ud\n" - "JQQtMCsGCCsGAQUFBwMBBggrBgEFBQcDAgYJYIZIAYb4QgQBBgorBgEEAYI3CgMD\n" - "MB8GA1UdIwQYMBaAFE5DyB127zdTek/yWG+U8zji1b3fMHYGCCsGAQUFBwEBBGow\n" - "aDArBggrBgEFBQcwAYYfaHR0cDovL0VWSW50bC1vY3NwLnZlcmlzaWduLmNvbTA5\n" - "BggrBgEFBQcwAoYtaHR0cDovL0VWSW50bC1haWEudmVyaXNpZ24uY29tL0VWSW50\n" - "bDIwMDYuY2VyMG0GCCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAh\n" - "MB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dv\n" - "LnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMA0GCSqGSIb3DQEBBQUAA4IBAQBEueAg\n" - "xZJrjGPKAZk1NT8VtTn0yi87i9XUnSOnkFkAuI3THDd+cWbNSUzc5uFJg42GhMK7\n" - "S1Rojm8FHxESovLvimH/w111BKF9wNU2XSOb9KohfYq3GRiQG8O7v9JwIjjLepkc\n" - "iyITx7sYiJ+kwZlrNBwN6TwVHrONg6NzyzSnxCg+XgKRbJu2PqEQb6uQVkYhb+Oq\n" - "Vi9d4by9YqpnuXImSffQ0OZ/6s3Rl6vY08zIPqa6OVfjGs/H45ETblzezcUKpX0L\n" - "cqnOwUB9dVuPhtlX3X/hgz/ROxz96NBwwzha58HUgfEfkVtm+piI6TTI7XxS/7Av\n" - "nKMfhbyFQYPQ6J9g\n" - "-----END CERTIFICATE-----\n", - /* chain[1] */ - "-----BEGIN CERTIFICATE-----\n" - "MIIGCjCCBPKgAwIBAgIQESoAbTflEG/WynzD77rMGDANBgkqhkiG9w0BAQUFADCB\n" - "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" - "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n" - "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n" - "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n" - "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBvjEL\n" - "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n" - "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n" - "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMvVmVy\n" - "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0EwggEi\n" - "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9Voi6iDRkZM/NyrDu5xlzxXLZ\n" - "u0W8taj/g74cA9vtibcuEBolvFXKQaGfC88ZXnC5XjlLnjEcX4euKqqoK6IbOxAj\n" - "XxOx3QiMThTag4HjtYzjaO0kZ85Wtqybc5ZE24qMs9bwcZOO23FUSutzWWqPcFEs\n" - "A5+X0cwRerxiDZUqyRx1V+n1x+q6hDXLx4VafuRN4RGXfQ4gNEXb8aIJ6+s9nriW\n" - "Q140SwglHkMaotm3igE0PcP45a9PjP/NZfAjTsWXs1zakByChQ0GDcEitnsopAPD\n" - "TFPRWLxyvAg5/KB2qKjpS26IPeOzMSWMcylIDjJ5Bu09Q/T25On8fb6OCNUfAgMB\n" - "AAGjggH0MIIB8DAdBgNVHQ4EFgQUTkPIHXbvN1N6T/JYb5TzOOLVvd8wEgYDVR0T\n" - "AQH/BAgwBgEB/wIBADA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYc\n" - "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2NwczA9BgNVHR8ENjA0MDKgMKAuhixo\n" - "dHRwOi8vRVZTZWN1cmUtY3JsLnZlcmlzaWduLmNvbS9wY2EzLWc1LmNybDAgBgNV\n" - "HSUEGTAXBglghkgBhvhCBAEGCmCGSAGG+EUBCAEwDgYDVR0PAQH/BAQDAgEGMBEG\n" - "CWCGSAGG+EIBAQQEAwIBBjBtBggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglpbWFn\n" - "ZS9naWYwITAfMAcGBSsOAwIaBBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRw\n" - "Oi8vbG9nby52ZXJpc2lnbi5jb20vdnNsb2dvLmdpZjApBgNVHREEIjAgpB4wHDEa\n" - "MBgGA1UEAxMRQ2xhc3MzQ0EyMDQ4LTEtNDgwPQYIKwYBBQUHAQEEMTAvMC0GCCsG\n" - "AQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5jb20wHwYDVR0j\n" - "BBgwFoAUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwDQYJKoZIhvcNAQEFBQADggEBAFqi\n" - "sb/rjdQ4qIBywtw4Lqyncfkro7tHu21pbxA2mIzHVi67vKtKm3rW8oKT4BT+is6D\n" - "t4Pbk4errGV5Sf1XqbHOCR+6EBXECQ5i4/kKJdVkmPDyqA92Mn6R5hjuvOfa0E6N\n" - "eLvincBZK8DOlQ0kDHLKNF5wIokrSrDxaIfz7kSNKEB3OW5IckUxXWs5DoYC6maZ\n" - "kzEP32fepp+MnUzOcW86Ifa5ND/5btia9z7a84Ffelxtj3z2mXS3/+QXXe1hXqtI\n" - "u5aNZkU5tBIK9nDpnHYiS2DpKhs0Sfei1GfAsSatE7rZhAHBq+GObXAWO3eskZq7\n" - "Gh/aWKfkT8Fhrryi/ks=\n" - "-----END CERTIFICATE-----\n", - /* chain[2] */ - "-----BEGIN CERTIFICATE-----\n" - "MIIE/zCCBGigAwIBAgIQY5Jrio9Agv2swDvTeCmmwDANBgkqhkiG9w0BAQUFADBf\n" - "MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT\n" - "LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw\n" - "HhcNMDYxMTA4MDAwMDAwWhcNMjExMTA3MjM1OTU5WjCByjELMAkGA1UEBhMCVVMx\n" - "FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz\n" - "dCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZv\n" - "ciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAz\n" - "IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEi\n" - "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8\n" - "RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbext0uz/o9+B1fs70Pb\n" - "ZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhDY2pSS9KP6HBR\n" - "TdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/\n" - "Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNH\n" - "iDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMB\n" - "AAGjggHKMIIBxjAPBgNVHRMBAf8EBTADAQH/MDEGA1UdHwQqMCgwJqAkoCKGIGh0\n" - "dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA4GA1UdDwEB/wQEAwIBBjBt\n" - "BggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglpbWFnZS9naWYwITAfMAcGBSsOAwIa\n" - "BBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRwOi8vbG9nby52ZXJpc2lnbi5j\n" - "b20vdnNsb2dvLmdpZjA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYc\n" - "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2NwczAdBgNVHQ4EFgQUf9Nlp8Ld7Lvw\n" - "MAnzQzn6Aq8zMTMwgYAGA1UdIwR5MHehY6RhMF8xCzAJBgNVBAYTAlVTMRcwFQYD\n" - "VQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMyBQdWJsaWMgUHJp\n" - "bWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eYIQcLrkHRDZKTS2OMp7A8y6vzAg\n" - "BgNVHSUEGTAXBglghkgBhvhCBAEGCmCGSAGG+EUBCAEwDQYJKoZIhvcNAQEFBQAD\n" - "gYEAUNfnArcMK6xK11/59ADJdeNqKOck4skH3qw6WCAYQxfrcn4eobTInOn5G3Gu\n" - "39g6DapSHmBex2UtZSxvKnJVlWYQgE4P4wGoXdzV69YdCNssXNVVc59DYhDH05dZ\n" - "P4sJH99fucYDkJjUgRUYw35ww0OFwKgUp3CxiizbXxCqEQc=\n" - "-----END CERTIFICATE-----\n", - /* chain[3] (CA) */ - "-----BEGIN CERTIFICATE-----\n" - "MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG\n" - "A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz\n" - "cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2\n" - "MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV\n" - "BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt\n" - "YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN\n" - "ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE\n" - "BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is\n" - "I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G\n" - "CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do\n" - "lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc\n" - "AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k\n" - "-----END CERTIFICATE-----\n", - NULL + /* chain[0] */ + "-----BEGIN CERTIFICATE-----\n" + "MIIGCDCCBPCgAwIBAgIQakrDGzEQ5utI8PxRo5oXHzANBgkqhkiG9w0BAQUFADCB\n" + "vjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" + "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n" + "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMv\n" + "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0Ew\n" + "HhcNMDcwNTA5MDAwMDAwWhcNMDkwNTA4MjM1OTU5WjCCAUAxEDAOBgNVBAUTBzI0\n" + "OTc4ODYxEzARBgsrBgEEAYI3PAIBAxMCVVMxGTAXBgsrBgEEAYI3PAIBAhMIRGVs\n" + "YXdhcmUxCzAJBgNVBAYTAlVTMQ4wDAYDVQQRFAU5NDA0MzETMBEGA1UECBMKQ2Fs\n" + "aWZvcm5pYTEWMBQGA1UEBxQNTW91bnRhaW4gVmlldzEiMCAGA1UECRQZNDg3IEVh\n" + "c3QgTWlkZGxlZmllbGQgUm9hZDEXMBUGA1UEChQOVmVyaVNpZ24sIEluYy4xJTAj\n" + "BgNVBAsUHFByb2R1Y3Rpb24gU2VjdXJpdHkgU2VydmljZXMxMzAxBgNVBAsUKlRl\n" + "cm1zIG9mIHVzZSBhdCB3d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjEZMBcGA1UE\n" + "AxQQd3d3LnZlcmlzaWduLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA\n" + "xxA35ev879drgQCpENGRQ3ARaCPz/WneT9dtMe3qGNvzXQJs6cjm1Bx8XegyW1gB\n" + "jJX5Zl4WWbr9wpAWZ1YyJ0bEyShIGmkU8fPfbcXYwSyWoWwvE5NRaUB2ztmfAVdv\n" + "OaGMUKxny2Dnj3tAdaQ+FOeRDJJYg6K1hzczq/otOfsCAwEAAaOCAf8wggH7MAkG\n" + "A1UdEwQCMAAwHQYDVR0OBBYEFPFaiZNVR0u6UfVO4MsWVfTXzDhnMAsGA1UdDwQE\n" + "AwIFoDA+BgNVHR8ENzA1MDOgMaAvhi1odHRwOi8vRVZJbnRsLWNybC52ZXJpc2ln\n" + "bi5jb20vRVZJbnRsMjAwNi5jcmwwRAYDVR0gBD0wOzA5BgtghkgBhvhFAQcXBjAq\n" + "MCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMDQGA1Ud\n" + "JQQtMCsGCCsGAQUFBwMBBggrBgEFBQcDAgYJYIZIAYb4QgQBBgorBgEEAYI3CgMD\n" + "MB8GA1UdIwQYMBaAFE5DyB127zdTek/yWG+U8zji1b3fMHYGCCsGAQUFBwEBBGow\n" + "aDArBggrBgEFBQcwAYYfaHR0cDovL0VWSW50bC1vY3NwLnZlcmlzaWduLmNvbTA5\n" + "BggrBgEFBQcwAoYtaHR0cDovL0VWSW50bC1haWEudmVyaXNpZ24uY29tL0VWSW50\n" + "bDIwMDYuY2VyMG0GCCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAh\n" + "MB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dv\n" + "LnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMA0GCSqGSIb3DQEBBQUAA4IBAQBEueAg\n" + "xZJrjGPKAZk1NT8VtTn0yi87i9XUnSOnkFkAuI3THDd+cWbNSUzc5uFJg42GhMK7\n" + "S1Rojm8FHxESovLvimH/w111BKF9wNU2XSOb9KohfYq3GRiQG8O7v9JwIjjLepkc\n" + "iyITx7sYiJ+kwZlrNBwN6TwVHrONg6NzyzSnxCg+XgKRbJu2PqEQb6uQVkYhb+Oq\n" + "Vi9d4by9YqpnuXImSffQ0OZ/6s3Rl6vY08zIPqa6OVfjGs/H45ETblzezcUKpX0L\n" + "cqnOwUB9dVuPhtlX3X/hgz/ROxz96NBwwzha58HUgfEfkVtm+piI6TTI7XxS/7Av\n" + "nKMfhbyFQYPQ6J9g\n" + "-----END CERTIFICATE-----\n", + /* chain[1] */ + "-----BEGIN CERTIFICATE-----\n" + "MIIGCjCCBPKgAwIBAgIQESoAbTflEG/WynzD77rMGDANBgkqhkiG9w0BAQUFADCB\n" + "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" + "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n" + "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n" + "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n" + "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBvjEL\n" + "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n" + "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n" + "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMvVmVy\n" + "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0EwggEi\n" + "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9Voi6iDRkZM/NyrDu5xlzxXLZ\n" + "u0W8taj/g74cA9vtibcuEBolvFXKQaGfC88ZXnC5XjlLnjEcX4euKqqoK6IbOxAj\n" + "XxOx3QiMThTag4HjtYzjaO0kZ85Wtqybc5ZE24qMs9bwcZOO23FUSutzWWqPcFEs\n" + "A5+X0cwRerxiDZUqyRx1V+n1x+q6hDXLx4VafuRN4RGXfQ4gNEXb8aIJ6+s9nriW\n" + "Q140SwglHkMaotm3igE0PcP45a9PjP/NZfAjTsWXs1zakByChQ0GDcEitnsopAPD\n" + "TFPRWLxyvAg5/KB2qKjpS26IPeOzMSWMcylIDjJ5Bu09Q/T25On8fb6OCNUfAgMB\n" + "AAGjggH0MIIB8DAdBgNVHQ4EFgQUTkPIHXbvN1N6T/JYb5TzOOLVvd8wEgYDVR0T\n" + "AQH/BAgwBgEB/wIBADA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYc\n" + "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2NwczA9BgNVHR8ENjA0MDKgMKAuhixo\n" + "dHRwOi8vRVZTZWN1cmUtY3JsLnZlcmlzaWduLmNvbS9wY2EzLWc1LmNybDAgBgNV\n" + "HSUEGTAXBglghkgBhvhCBAEGCmCGSAGG+EUBCAEwDgYDVR0PAQH/BAQDAgEGMBEG\n" + "CWCGSAGG+EIBAQQEAwIBBjBtBggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglpbWFn\n" + "ZS9naWYwITAfMAcGBSsOAwIaBBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRw\n" + "Oi8vbG9nby52ZXJpc2lnbi5jb20vdnNsb2dvLmdpZjApBgNVHREEIjAgpB4wHDEa\n" + "MBgGA1UEAxMRQ2xhc3MzQ0EyMDQ4LTEtNDgwPQYIKwYBBQUHAQEEMTAvMC0GCCsG\n" + "AQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5jb20wHwYDVR0j\n" + "BBgwFoAUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwDQYJKoZIhvcNAQEFBQADggEBAFqi\n" + "sb/rjdQ4qIBywtw4Lqyncfkro7tHu21pbxA2mIzHVi67vKtKm3rW8oKT4BT+is6D\n" + "t4Pbk4errGV5Sf1XqbHOCR+6EBXECQ5i4/kKJdVkmPDyqA92Mn6R5hjuvOfa0E6N\n" + "eLvincBZK8DOlQ0kDHLKNF5wIokrSrDxaIfz7kSNKEB3OW5IckUxXWs5DoYC6maZ\n" + "kzEP32fepp+MnUzOcW86Ifa5ND/5btia9z7a84Ffelxtj3z2mXS3/+QXXe1hXqtI\n" + "u5aNZkU5tBIK9nDpnHYiS2DpKhs0Sfei1GfAsSatE7rZhAHBq+GObXAWO3eskZq7\n" + "Gh/aWKfkT8Fhrryi/ks=\n" + "-----END CERTIFICATE-----\n", + /* chain[2] */ + "-----BEGIN CERTIFICATE-----\n" + "MIIE/zCCBGigAwIBAgIQY5Jrio9Agv2swDvTeCmmwDANBgkqhkiG9w0BAQUFADBf\n" + "MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT\n" + "LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw\n" + "HhcNMDYxMTA4MDAwMDAwWhcNMjExMTA3MjM1OTU5WjCByjELMAkGA1UEBhMCVVMx\n" + "FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz\n" + "dCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZv\n" + "ciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAz\n" + "IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEi\n" + "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8\n" + "RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbext0uz/o9+B1fs70Pb\n" + "ZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhDY2pSS9KP6HBR\n" + "TdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/\n" + "Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNH\n" + "iDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMB\n" + "AAGjggHKMIIBxjAPBgNVHRMBAf8EBTADAQH/MDEGA1UdHwQqMCgwJqAkoCKGIGh0\n" + "dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA4GA1UdDwEB/wQEAwIBBjBt\n" + "BggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglpbWFnZS9naWYwITAfMAcGBSsOAwIa\n" + "BBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNodHRwOi8vbG9nby52ZXJpc2lnbi5j\n" + "b20vdnNsb2dvLmdpZjA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYc\n" + "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2NwczAdBgNVHQ4EFgQUf9Nlp8Ld7Lvw\n" + "MAnzQzn6Aq8zMTMwgYAGA1UdIwR5MHehY6RhMF8xCzAJBgNVBAYTAlVTMRcwFQYD\n" + "VQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMyBQdWJsaWMgUHJp\n" + "bWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eYIQcLrkHRDZKTS2OMp7A8y6vzAg\n" + "BgNVHSUEGTAXBglghkgBhvhCBAEGCmCGSAGG+EUBCAEwDQYJKoZIhvcNAQEFBQAD\n" + "gYEAUNfnArcMK6xK11/59ADJdeNqKOck4skH3qw6WCAYQxfrcn4eobTInOn5G3Gu\n" + "39g6DapSHmBex2UtZSxvKnJVlWYQgE4P4wGoXdzV69YdCNssXNVVc59DYhDH05dZ\n" + "P4sJH99fucYDkJjUgRUYw35ww0OFwKgUp3CxiizbXxCqEQc=\n" + "-----END CERTIFICATE-----\n", + /* chain[3] (CA) */ + "-----BEGIN CERTIFICATE-----\n" + "MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG\n" + "A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz\n" + "cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2\n" + "MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV\n" + "BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt\n" + "YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN\n" + "ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE\n" + "BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is\n" + "I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G\n" + "CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do\n" + "lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc\n" + "AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k\n" + "-----END CERTIFICATE-----\n", + NULL }; /* Chain length 2 ends with trusted v1 RSA-MD2 cert */ static const char *citibank_com_chain[] = { - /* chain[0] */ - "-----BEGIN CERTIFICATE-----\n" - "MIIENDCCA52gAwIBAgIQauOJMlH5Ob2tFZ6rJMBdjjANBgkqhkiG9w0BAQUFADCB\n" - "ujEfMB0GA1UEChMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazEXMBUGA1UECxMOVmVy\n" - "aVNpZ24sIEluYy4xMzAxBgNVBAsTKlZlcmlTaWduIEludGVybmF0aW9uYWwgU2Vy\n" - "dmVyIENBIC0gQ2xhc3MgMzFJMEcGA1UECxNAd3d3LnZlcmlzaWduLmNvbS9DUFMg\n" - "SW5jb3JwLmJ5IFJlZi4gTElBQklMSVRZIExURC4oYyk5NyBWZXJpU2lnbjAeFw0w\n" - "ODA4MjkwMDAwMDBaFw0xMDA4MjkyMzU5NTlaMHgxCzAJBgNVBAYTAlVTMRMwEQYD\n" - "VQQIEwpOZXcgSmVyc2V5MRIwEAYDVQQHFAlXZWVoYXdrZW4xEjAQBgNVBAoUCUNp\n" - "dGlncm91cDERMA8GA1UECxQId2hnLW9hazYxGTAXBgNVBAMUEHd3dy5jaXRpYmFu\n" - "ay5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALQJbSYtbndsIlslFveP\n" - "IlVNE38HnUD56BHcwfvcb8rQItXeHzYmgOf/RgHPTKG3LEZOxKqM0QpcZtEJ6xwV\n" - "cTG7Wjw/FrMisN8aO4JWaxe8dFGajstlEMxz43G5zlprb9jzjnbIvvcnz0ILikOQ\n" - "qmcThopBTs1+d4j7w/yEJo1zAgMBAAGjggF6MIIBdjAJBgNVHRMEAjAAMAsGA1Ud\n" - "DwQEAwIFoDBGBgNVHR8EPzA9MDugOaA3hjVodHRwOi8vY3JsLnZlcmlzaWduLmNv\n" - "bS9DbGFzczNJbnRlcm5hdGlvbmFsU2VydmVyLmNybDBEBgNVHSAEPTA7MDkGC2CG\n" - "SAGG+EUBBxcDMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNv\n" - "bS9ycGEwKAYDVR0lBCEwHwYJYIZIAYb4QgQBBggrBgEFBQcDAQYIKwYBBQUHAwIw\n" - "NAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC52ZXJpc2ln\n" - "bi5jb20wbgYIKwYBBQUHAQwEYjBgoV6gXDBaMFgwVhYJaW1hZ2UvZ2lmMCEwHzAH\n" - "BgUrDgMCGgQUS2u5KJYGDLvQUjibKaxLB4shBRgwJhYkaHR0cDovL2xvZ28udmVy\n" - "aXNpZ24uY29tL3ZzbG9nbzEuZ2lmMA0GCSqGSIb3DQEBBQUAA4GBAFDXKsxtWkoo\n" - "HBkNjcCvcnjNAo3Pe+eOtLHb39e5qhkNQLPGA/1/7AofY9KmEtSV2LVGeuuJI4Pi\n" - "Lg7fPl9Q0OE/oHJpj5JkObBP9Wo1vbrDR2nGWUlCRWm20rH81dTn7OcDxarwGWsR\n" - "ewTCNmpKYaMx8Q1dyMYunHJApu+fbrHu\n" - "-----END CERTIFICATE-----\n", - /* chain[1] */ - "-----BEGIN CERTIFICATE-----\n" - "MIIDgzCCAuygAwIBAgIQJUuKhThCzONY+MXdriJupDANBgkqhkiG9w0BAQUFADBf\n" - "MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT\n" - "LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw\n" - "HhcNOTcwNDE3MDAwMDAwWhcNMTExMDI0MjM1OTU5WjCBujEfMB0GA1UEChMWVmVy\n" - "aVNpZ24gVHJ1c3QgTmV0d29yazEXMBUGA1UECxMOVmVyaVNpZ24sIEluYy4xMzAx\n" - "BgNVBAsTKlZlcmlTaWduIEludGVybmF0aW9uYWwgU2VydmVyIENBIC0gQ2xhc3Mg\n" - "MzFJMEcGA1UECxNAd3d3LnZlcmlzaWduLmNvbS9DUFMgSW5jb3JwLmJ5IFJlZi4g\n" - "TElBQklMSVRZIExURC4oYyk5NyBWZXJpU2lnbjCBnzANBgkqhkiG9w0BAQEFAAOB\n" - "jQAwgYkCgYEA2IKA6NYZAn0fhRg5JaJlK+G/1AXTvOY2O6rwTGxbtueqPHNFVbLx\n" - "veqXQu2aNAoV1Klc9UAl3dkHwTKydWzEyruj/lYncUOqY/UwPpMo5frxCTvzt01O\n" - "OfdcSVq4wR3Tsor+cDCVQsv+K1GLWjw6+SJPkLICp1OcTzTnqwSye28CAwEAAaOB\n" - "4zCB4DAPBgNVHRMECDAGAQH/AgEAMEQGA1UdIAQ9MDswOQYLYIZIAYb4RQEHAQEw\n" - "KjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL0NQUzA0BgNV\n" - "HSUELTArBggrBgEFBQcDAQYIKwYBBQUHAwIGCWCGSAGG+EIEAQYKYIZIAYb4RQEI\n" - "ATALBgNVHQ8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgEGMDEGA1UdHwQqMCgwJqAk\n" - "oCKGIGh0dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA0GCSqGSIb3DQEB\n" - "BQUAA4GBAAgB7ORolANC8XPxI6I63unx2sZUxCM+hurPajozq+qcBBQHNgYL+Yhv\n" - "1RPuKSvD5HKNRO3RrCAJLeH24RkFOLA9D59/+J4C3IYChmFOJl9en5IeDCSk9dBw\n" - "E88mw0M9SR2egi5SX7w+xmYpAY5Okiy8RnUDgqxz6dl+C2fvVFIa\n" - "-----END CERTIFICATE-----\n", - /* chain[2] (CA) */ - "-----BEGIN CERTIFICATE-----\n" - "MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG\n" - "A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz\n" - "cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2\n" - "MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV\n" - "BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt\n" - "YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN\n" - "ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE\n" - "BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is\n" - "I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G\n" - "CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do\n" - "lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc\n" - "AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k\n" - "-----END CERTIFICATE-----\n", - NULL + /* chain[0] */ + "-----BEGIN CERTIFICATE-----\n" + "MIIENDCCA52gAwIBAgIQauOJMlH5Ob2tFZ6rJMBdjjANBgkqhkiG9w0BAQUFADCB\n" + "ujEfMB0GA1UEChMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazEXMBUGA1UECxMOVmVy\n" + "aVNpZ24sIEluYy4xMzAxBgNVBAsTKlZlcmlTaWduIEludGVybmF0aW9uYWwgU2Vy\n" + "dmVyIENBIC0gQ2xhc3MgMzFJMEcGA1UECxNAd3d3LnZlcmlzaWduLmNvbS9DUFMg\n" + "SW5jb3JwLmJ5IFJlZi4gTElBQklMSVRZIExURC4oYyk5NyBWZXJpU2lnbjAeFw0w\n" + "ODA4MjkwMDAwMDBaFw0xMDA4MjkyMzU5NTlaMHgxCzAJBgNVBAYTAlVTMRMwEQYD\n" + "VQQIEwpOZXcgSmVyc2V5MRIwEAYDVQQHFAlXZWVoYXdrZW4xEjAQBgNVBAoUCUNp\n" + "dGlncm91cDERMA8GA1UECxQId2hnLW9hazYxGTAXBgNVBAMUEHd3dy5jaXRpYmFu\n" + "ay5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALQJbSYtbndsIlslFveP\n" + "IlVNE38HnUD56BHcwfvcb8rQItXeHzYmgOf/RgHPTKG3LEZOxKqM0QpcZtEJ6xwV\n" + "cTG7Wjw/FrMisN8aO4JWaxe8dFGajstlEMxz43G5zlprb9jzjnbIvvcnz0ILikOQ\n" + "qmcThopBTs1+d4j7w/yEJo1zAgMBAAGjggF6MIIBdjAJBgNVHRMEAjAAMAsGA1Ud\n" + "DwQEAwIFoDBGBgNVHR8EPzA9MDugOaA3hjVodHRwOi8vY3JsLnZlcmlzaWduLmNv\n" + "bS9DbGFzczNJbnRlcm5hdGlvbmFsU2VydmVyLmNybDBEBgNVHSAEPTA7MDkGC2CG\n" + "SAGG+EUBBxcDMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNv\n" + "bS9ycGEwKAYDVR0lBCEwHwYJYIZIAYb4QgQBBggrBgEFBQcDAQYIKwYBBQUHAwIw\n" + "NAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC52ZXJpc2ln\n" + "bi5jb20wbgYIKwYBBQUHAQwEYjBgoV6gXDBaMFgwVhYJaW1hZ2UvZ2lmMCEwHzAH\n" + "BgUrDgMCGgQUS2u5KJYGDLvQUjibKaxLB4shBRgwJhYkaHR0cDovL2xvZ28udmVy\n" + "aXNpZ24uY29tL3ZzbG9nbzEuZ2lmMA0GCSqGSIb3DQEBBQUAA4GBAFDXKsxtWkoo\n" + "HBkNjcCvcnjNAo3Pe+eOtLHb39e5qhkNQLPGA/1/7AofY9KmEtSV2LVGeuuJI4Pi\n" + "Lg7fPl9Q0OE/oHJpj5JkObBP9Wo1vbrDR2nGWUlCRWm20rH81dTn7OcDxarwGWsR\n" + "ewTCNmpKYaMx8Q1dyMYunHJApu+fbrHu\n" + "-----END CERTIFICATE-----\n", + /* chain[1] */ + "-----BEGIN CERTIFICATE-----\n" + "MIIDgzCCAuygAwIBAgIQJUuKhThCzONY+MXdriJupDANBgkqhkiG9w0BAQUFADBf\n" + "MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT\n" + "LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw\n" + "HhcNOTcwNDE3MDAwMDAwWhcNMTExMDI0MjM1OTU5WjCBujEfMB0GA1UEChMWVmVy\n" + "aVNpZ24gVHJ1c3QgTmV0d29yazEXMBUGA1UECxMOVmVyaVNpZ24sIEluYy4xMzAx\n" + "BgNVBAsTKlZlcmlTaWduIEludGVybmF0aW9uYWwgU2VydmVyIENBIC0gQ2xhc3Mg\n" + "MzFJMEcGA1UECxNAd3d3LnZlcmlzaWduLmNvbS9DUFMgSW5jb3JwLmJ5IFJlZi4g\n" + "TElBQklMSVRZIExURC4oYyk5NyBWZXJpU2lnbjCBnzANBgkqhkiG9w0BAQEFAAOB\n" + "jQAwgYkCgYEA2IKA6NYZAn0fhRg5JaJlK+G/1AXTvOY2O6rwTGxbtueqPHNFVbLx\n" + "veqXQu2aNAoV1Klc9UAl3dkHwTKydWzEyruj/lYncUOqY/UwPpMo5frxCTvzt01O\n" + "OfdcSVq4wR3Tsor+cDCVQsv+K1GLWjw6+SJPkLICp1OcTzTnqwSye28CAwEAAaOB\n" + "4zCB4DAPBgNVHRMECDAGAQH/AgEAMEQGA1UdIAQ9MDswOQYLYIZIAYb4RQEHAQEw\n" + "KjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL0NQUzA0BgNV\n" + "HSUELTArBggrBgEFBQcDAQYIKwYBBQUHAwIGCWCGSAGG+EIEAQYKYIZIAYb4RQEI\n" + "ATALBgNVHQ8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgEGMDEGA1UdHwQqMCgwJqAk\n" + "oCKGIGh0dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA0GCSqGSIb3DQEB\n" + "BQUAA4GBAAgB7ORolANC8XPxI6I63unx2sZUxCM+hurPajozq+qcBBQHNgYL+Yhv\n" + "1RPuKSvD5HKNRO3RrCAJLeH24RkFOLA9D59/+J4C3IYChmFOJl9en5IeDCSk9dBw\n" + "E88mw0M9SR2egi5SX7w+xmYpAY5Okiy8RnUDgqxz6dl+C2fvVFIa\n" + "-----END CERTIFICATE-----\n", + /* chain[2] (CA) */ + "-----BEGIN CERTIFICATE-----\n" + "MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG\n" + "A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz\n" + "cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2\n" + "MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV\n" + "BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt\n" + "YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN\n" + "ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE\n" + "BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is\n" + "I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G\n" + "CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do\n" + "lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc\n" + "AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k\n" + "-----END CERTIFICATE-----\n", + NULL }; /* Self-signed certificate */ static const char *pem_self_cert[] = { - "-----BEGIN CERTIFICATE-----\n" - "MIIDgjCCAmygAwIBAgIBADALBgkqhkiG9w0BAQUwSzELMAkGA1UEBhMCQlIxFDAS\n" - "BgNVBAoTC01pbmFzIExpdnJlMSYwJAYDVQQDEx1UaGFkZXUgTGltYSBkZSBTb3V6\n" - "YSBDYXNjYXJkbzAeFw0wODA1MzAxOTUzNDNaFw0wODExMjYxOTUzNDNaMEsxCzAJ\n" - "BgNVBAYTAkJSMRQwEgYDVQQKEwtNaW5hcyBMaXZyZTEmMCQGA1UEAxMdVGhhZGV1\n" - "IExpbWEgZGUgU291emEgQ2FzY2FyZG8wggEfMAsGCSqGSIb3DQEBAQOCAQ4AMIIB\n" - "CQKCAQC4D934O6wrXJbMyu1w8gu6nN0aNUDGqrX9UgaB/4xVuYhPlhjH0z9Dqic9\n" - "0pEZmyNCjQmzDSg/hnlY3fBG0i9Iel2oYn1UB4SdcJ2qGkLS87y2ZbMTS1oyMR7/\n" - "y9l3WGEWqwgjIvOjGstcZo0rCIF8Qr21QGX22KWg2HXlMaZyA9bGtJ+L+x6f2hoo\n" - "yIPCA30VMvIgHjOSPQJF3iJFE4Uxq1PQ65W91NyI6/bRKFOmFdCUJW8tqqvntYP8\n" - "hEE08wGlKimFNv7CqZuRI8QuOnhZ7pBXkyvQpW8yHrORlOHxSjkNQKjddt92TCJb\n" - "1q6eKv2CtCuDLgCuIy0Onr4U9n+hAgMBAAGjeDB2MA8GA1UdEwEB/wQFMAMBAf8w\n" - "HgYDVR0RBBcwFYITbWFpbC5taW5hc2xpdnJlLm9yZzATBgNVHSUEDDAKBggrBgEF\n" - "BQcDATAPBgNVHQ8BAf8EBQMDB6QAMB0GA1UdDgQWBBQ/5v42y0jBHUKEfqpPmr5a\n" - "WsjCGjALBgkqhkiG9w0BAQUDggEBAC/WfO2yK3vM9bG0qFEj8sd0cWiapMhf5PtH\n" - "jigcPb/OKqSFQVXpAdNiUclPRP79Ih3CuWiXfZ/CW0+k2Z8tyy6AnEQItWvoVh/b\n" - "8lS7Ph/f9JUYHp2DtgsQWcNQbrUZOPFBu8J4MD6cDWG5Uxwl3YASg30ZdmMDNT8B\n" - "HshYz0HUOAhYwVSI3J/f7LFhD5OpjSroHgE7wA9UJrerAp9f7e3e9D7kNQ8DlvLP\n" - "kz6Jh+5M/xD3JO1yl+evaCp3LA+z4M2xiNvtzkAEgj3t6RaJ81Sh5XGiooDYZ14R\n" - "DgEBYLTUfBYBPzoaahPEdG/f0kUjUBJ34fkBUSjJKURPTHJfDfA=\n" - "-----END CERTIFICATE-----\n", - NULL + "-----BEGIN CERTIFICATE-----\n" + "MIIDgjCCAmygAwIBAgIBADALBgkqhkiG9w0BAQUwSzELMAkGA1UEBhMCQlIxFDAS\n" + "BgNVBAoTC01pbmFzIExpdnJlMSYwJAYDVQQDEx1UaGFkZXUgTGltYSBkZSBTb3V6\n" + "YSBDYXNjYXJkbzAeFw0wODA1MzAxOTUzNDNaFw0wODExMjYxOTUzNDNaMEsxCzAJ\n" + "BgNVBAYTAkJSMRQwEgYDVQQKEwtNaW5hcyBMaXZyZTEmMCQGA1UEAxMdVGhhZGV1\n" + "IExpbWEgZGUgU291emEgQ2FzY2FyZG8wggEfMAsGCSqGSIb3DQEBAQOCAQ4AMIIB\n" + "CQKCAQC4D934O6wrXJbMyu1w8gu6nN0aNUDGqrX9UgaB/4xVuYhPlhjH0z9Dqic9\n" + "0pEZmyNCjQmzDSg/hnlY3fBG0i9Iel2oYn1UB4SdcJ2qGkLS87y2ZbMTS1oyMR7/\n" + "y9l3WGEWqwgjIvOjGstcZo0rCIF8Qr21QGX22KWg2HXlMaZyA9bGtJ+L+x6f2hoo\n" + "yIPCA30VMvIgHjOSPQJF3iJFE4Uxq1PQ65W91NyI6/bRKFOmFdCUJW8tqqvntYP8\n" + "hEE08wGlKimFNv7CqZuRI8QuOnhZ7pBXkyvQpW8yHrORlOHxSjkNQKjddt92TCJb\n" + "1q6eKv2CtCuDLgCuIy0Onr4U9n+hAgMBAAGjeDB2MA8GA1UdEwEB/wQFMAMBAf8w\n" + "HgYDVR0RBBcwFYITbWFpbC5taW5hc2xpdnJlLm9yZzATBgNVHSUEDDAKBggrBgEF\n" + "BQcDATAPBgNVHQ8BAf8EBQMDB6QAMB0GA1UdDgQWBBQ/5v42y0jBHUKEfqpPmr5a\n" + "WsjCGjALBgkqhkiG9w0BAQUDggEBAC/WfO2yK3vM9bG0qFEj8sd0cWiapMhf5PtH\n" + "jigcPb/OKqSFQVXpAdNiUclPRP79Ih3CuWiXfZ/CW0+k2Z8tyy6AnEQItWvoVh/b\n" + "8lS7Ph/f9JUYHp2DtgsQWcNQbrUZOPFBu8J4MD6cDWG5Uxwl3YASg30ZdmMDNT8B\n" + "HshYz0HUOAhYwVSI3J/f7LFhD5OpjSroHgE7wA9UJrerAp9f7e3e9D7kNQ8DlvLP\n" + "kz6Jh+5M/xD3JO1yl+evaCp3LA+z4M2xiNvtzkAEgj3t6RaJ81Sh5XGiooDYZ14R\n" + "DgEBYLTUfBYBPzoaahPEdG/f0kUjUBJ34fkBUSjJKURPTHJfDfA=\n" + "-----END CERTIFICATE-----\n", + NULL }; /* Chain length 2, CA constraint FALSE in v3 CA cert)*/ static const char *thea_chain[] = { - /* chain[0] */ - "-----BEGIN CERTIFICATE-----\n" - "MIIC7DCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJERTEM\n" - "MAoGA1UECBMDUkxQMSAwHgYDVQQKExdUZWNobmlzY2hlIFVuaXZlcnNpdGFldDEb\n" - "MBkGA1UECxMSRmFjaGJlcmVpY2ggUGh5c2lrMQswCQYDVQQDEwJDQTAeFw0wODA5\n" - "MTExMDUyMDdaFw0xODA5MDkxMDUyMDdaMIGTMQswCQYDVQQGEwJERTEMMAoGA1UE\n" - "CBMDUkxQMRcwFQYDVQQHEw5LYWlzZXJzbGF1dGVybjEgMB4GA1UEChMXVGVjaG5p\n" - "c2NoZSBVbml2ZXJzaXRhZXQxGzAZBgNVBAsTEkZhY2hiZXJlaWNoIFBoeXNpazEe\n" - "MBwGA1UEAxMVdGhlYS5waHlzaWsudW5pLWtsLmRlMIGfMA0GCSqGSIb3DQEBAQUA\n" - "A4GNADCBiQKBgQC/gTUrXSeNvuRH+ibdR7zvlCGs+66C6tDaq14SpEDiY/FEw/S4\n" - "mkhsHohiQkmqpcPJ0FONok7bvJryKZwwhGFHeESvvWjFVNIdxFgf6Jx2McKsRzBD\n" - "nbgVNeK6bywh2L5WgOeckRm0vUxCwX+jWtETorNHSYnZI9smmBtJ1FIPkQIDAQAB\n" - "o3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRl\n" - "ZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUS0IiRshnnlH2bneYeCn6OkY9nZAwHwYD\n" - "VR0jBBgwFoAU+rCwSUUzK53X9W5otZG4okyY/rswDQYJKoZIhvcNAQEFBQADgYEA\n" - "g0f6XFxpUL2hncpQcnKorNYdOkZkZHiKqu2SINtla+IbLZFO4nVVO+LKt+RCo2o7\n" - "tZIMLEU3aCeH5dgSEKQeyL5MPMg3MbA6ezjOBTkT/YgngzM4CMLOKcvAMLncfH/z\n" - "GYBW1DXijIy1r/SxO0k9zy8OEtKeOOUO0GqQTWuTOOg=\n" - "-----END CERTIFICATE-----\n", - /* chain[1] (CA) */ - "-----BEGIN CERTIFICATE-----\n" - "MIICvzCCAiigAwIBAgIBADANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJERTEM\n" - "MAoGA1UECBMDUkxQMSAwHgYDVQQKExdUZWNobmlzY2hlIFVuaXZlcnNpdGFldDEb\n" - "MBkGA1UECxMSRmFjaGJlcmVpY2ggUGh5c2lrMQswCQYDVQQDEwJDQTAeFw0wODA5\n" - "MTExMDQ3NDRaFw0xODA5MDkxMDQ3NDRaMGcxCzAJBgNVBAYTAkRFMQwwCgYDVQQI\n" - "EwNSTFAxIDAeBgNVBAoTF1RlY2huaXNjaGUgVW5pdmVyc2l0YWV0MRswGQYDVQQL\n" - "ExJGYWNoYmVyZWljaCBQaHlzaWsxCzAJBgNVBAMTAkNBMIGfMA0GCSqGSIb3DQEB\n" - "AQUAA4GNADCBiQKBgQC76RbqsB5J+VvU1KbBCrkIL3lgY8BxgFvYF3HiHgxtCdqq\n" - "BmRpAaDBcVAuEb1ihhP68181sYQ1UPMY+zwBwXVNSVvjeBba1JjGmagwPnJXOCay\n" - "7Cw5orY8KB7U33neEOGrlz1EKQGVaPsr993wGD/7AmntuVuxrRVpzoDP5s0PIwID\n" - "AQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVy\n" - "YXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+rCwSUUzK53X9W5otZG4okyY/rsw\n" - "HwYDVR0jBBgwFoAU+rCwSUUzK53X9W5otZG4okyY/rswDQYJKoZIhvcNAQEFBQAD\n" - "gYEAUT+LmosiDHGuLAZmY40obam0eexJzn/g++mDy3FMh3WmMBKSsfwFsFsQ4k7N\n" - "lv1SCfTYeh2hpw/DQzkiYZUkcQI4mBR4hG5Zv56AfYQLGeLtN4VOOCMxguftvzv0\n" - "kziQa2QW+VzVJqV1gpRCRT30Jaa9s4u6ipO9DT5N03F4CcI=\n" - "-----END CERTIFICATE-----\n", - NULL + /* chain[0] */ + "-----BEGIN CERTIFICATE-----\n" + "MIIC7DCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJERTEM\n" + "MAoGA1UECBMDUkxQMSAwHgYDVQQKExdUZWNobmlzY2hlIFVuaXZlcnNpdGFldDEb\n" + "MBkGA1UECxMSRmFjaGJlcmVpY2ggUGh5c2lrMQswCQYDVQQDEwJDQTAeFw0wODA5\n" + "MTExMDUyMDdaFw0xODA5MDkxMDUyMDdaMIGTMQswCQYDVQQGEwJERTEMMAoGA1UE\n" + "CBMDUkxQMRcwFQYDVQQHEw5LYWlzZXJzbGF1dGVybjEgMB4GA1UEChMXVGVjaG5p\n" + "c2NoZSBVbml2ZXJzaXRhZXQxGzAZBgNVBAsTEkZhY2hiZXJlaWNoIFBoeXNpazEe\n" + "MBwGA1UEAxMVdGhlYS5waHlzaWsudW5pLWtsLmRlMIGfMA0GCSqGSIb3DQEBAQUA\n" + "A4GNADCBiQKBgQC/gTUrXSeNvuRH+ibdR7zvlCGs+66C6tDaq14SpEDiY/FEw/S4\n" + "mkhsHohiQkmqpcPJ0FONok7bvJryKZwwhGFHeESvvWjFVNIdxFgf6Jx2McKsRzBD\n" + "nbgVNeK6bywh2L5WgOeckRm0vUxCwX+jWtETorNHSYnZI9smmBtJ1FIPkQIDAQAB\n" + "o3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRl\n" + "ZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUS0IiRshnnlH2bneYeCn6OkY9nZAwHwYD\n" + "VR0jBBgwFoAU+rCwSUUzK53X9W5otZG4okyY/rswDQYJKoZIhvcNAQEFBQADgYEA\n" + "g0f6XFxpUL2hncpQcnKorNYdOkZkZHiKqu2SINtla+IbLZFO4nVVO+LKt+RCo2o7\n" + "tZIMLEU3aCeH5dgSEKQeyL5MPMg3MbA6ezjOBTkT/YgngzM4CMLOKcvAMLncfH/z\n" + "GYBW1DXijIy1r/SxO0k9zy8OEtKeOOUO0GqQTWuTOOg=\n" + "-----END CERTIFICATE-----\n", + /* chain[1] (CA) */ + "-----BEGIN CERTIFICATE-----\n" + "MIICvzCCAiigAwIBAgIBADANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJERTEM\n" + "MAoGA1UECBMDUkxQMSAwHgYDVQQKExdUZWNobmlzY2hlIFVuaXZlcnNpdGFldDEb\n" + "MBkGA1UECxMSRmFjaGJlcmVpY2ggUGh5c2lrMQswCQYDVQQDEwJDQTAeFw0wODA5\n" + "MTExMDQ3NDRaFw0xODA5MDkxMDQ3NDRaMGcxCzAJBgNVBAYTAkRFMQwwCgYDVQQI\n" + "EwNSTFAxIDAeBgNVBAoTF1RlY2huaXNjaGUgVW5pdmVyc2l0YWV0MRswGQYDVQQL\n" + "ExJGYWNoYmVyZWljaCBQaHlzaWsxCzAJBgNVBAMTAkNBMIGfMA0GCSqGSIb3DQEB\n" + "AQUAA4GNADCBiQKBgQC76RbqsB5J+VvU1KbBCrkIL3lgY8BxgFvYF3HiHgxtCdqq\n" + "BmRpAaDBcVAuEb1ihhP68181sYQ1UPMY+zwBwXVNSVvjeBba1JjGmagwPnJXOCay\n" + "7Cw5orY8KB7U33neEOGrlz1EKQGVaPsr993wGD/7AmntuVuxrRVpzoDP5s0PIwID\n" + "AQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVy\n" + "YXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+rCwSUUzK53X9W5otZG4okyY/rsw\n" + "HwYDVR0jBBgwFoAU+rCwSUUzK53X9W5otZG4okyY/rswDQYJKoZIhvcNAQEFBQAD\n" + "gYEAUT+LmosiDHGuLAZmY40obam0eexJzn/g++mDy3FMh3WmMBKSsfwFsFsQ4k7N\n" + "lv1SCfTYeh2hpw/DQzkiYZUkcQI4mBR4hG5Zv56AfYQLGeLtN4VOOCMxguftvzv0\n" + "kziQa2QW+VzVJqV1gpRCRT30Jaa9s4u6ipO9DT5N03F4CcI=\n" + "-----END CERTIFICATE-----\n", + NULL }; /* Chain length 3 ends with trusted v1 RSA-MD2 cert, similar to verisign_com_chain above */ static const char *hbci_chain[] = { - /* chain[0] */ - "-----BEGIN CERTIFICATE-----\n" - "MIIEczCCA9ygAwIBAgIQeODCPg2RbK2r7/1KoWjWZzANBgkqhkiG9w0BAQUFADCB\n" - "ujEfMB0GA1UEChMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazEXMBUGA1UECxMOVmVy\n" - "aVNpZ24sIEluYy4xMzAxBgNVBAsTKlZlcmlTaWduIEludGVybmF0aW9uYWwgU2Vy\n" - "dmVyIENBIC0gQ2xhc3MgMzFJMEcGA1UECxNAd3d3LnZlcmlzaWduLmNvbS9DUFMg\n" - "SW5jb3JwLmJ5IFJlZi4gTElBQklMSVRZIExURC4oYyk5NyBWZXJpU2lnbjAeFw0w\n" - "ODA2MTAwMDAwMDBaFw0wOTA3MzAyMzU5NTlaMIG2MQswCQYDVQQGEwJERTEPMA0G\n" - "A1UECBMGSGVzc2VuMRowGAYDVQQHFBFGcmFua2Z1cnQgYW0gTWFpbjEsMCoGA1UE\n" - "ChQjU3Bhcmthc3NlbiBJbmZvcm1hdGlrIEdtYkggJiBDby4gS0cxKTAnBgNVBAsU\n" - "IFRlcm1zIG9mIHVzZSBhdCB3d3cudmVyaXNpZ24uY29tMSEwHwYDVQQDFBhoYmNp\n" - "LXBpbnRhbi1ycC5zLWhiY2kuZGUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB\n" - "AK1CdQ9lqmChZWaRAInimuK7I36VImTuAVU0N6BIS4a2BbblkiekbVf15GVHGb6e\n" - "QV06ANN6Nd8XIdfoxi3LoAs8sa+Ku7eoEsRFi/XIU96GgtFlxf3EsVA9RbGdtfer\n" - "9iJGIBae2mJTlk+5LVg2EQr50PJlBuTgiYFc41xs9O2RAgMBAAGjggF6MIIBdjAJ\n" - "BgNVHRMEAjAAMAsGA1UdDwQEAwIFoDBGBgNVHR8EPzA9MDugOaA3hjVodHRwOi8v\n" - "Y3JsLnZlcmlzaWduLmNvbS9DbGFzczNJbnRlcm5hdGlvbmFsU2VydmVyLmNybDBE\n" - "BgNVHSAEPTA7MDkGC2CGSAGG+EUBBxcDMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v\n" - "d3d3LnZlcmlzaWduLmNvbS9ycGEwKAYDVR0lBCEwHwYJYIZIAYb4QgQBBggrBgEF\n" - "BQcDAQYIKwYBBQUHAwIwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRw\n" - "Oi8vb2NzcC52ZXJpc2lnbi5jb20wbgYIKwYBBQUHAQwEYjBgoV6gXDBaMFgwVhYJ\n" - "aW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUS2u5KJYGDLvQUjibKaxLB4shBRgwJhYk\n" - "aHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nbzEuZ2lmMA0GCSqGSIb3DQEB\n" - "BQUAA4GBAJ03R0YAjYzlWm54gMSn6MqJi0mHdLCO2lk3CARwjbg7TEYAZvDsKqTd\n" - "cRuhNk079BqrQ3QapffeN55SAVrc3mzHO54Nla4n5y6x3XIQXVvRjbJGwmWXsdvr\n" - "W899F/pBEN30Tgdbmn7JR/iZlGhIJpY9Us1i7rwQhKYir9ZQBdj3\n" - "-----END CERTIFICATE-----\n", - /* chain[1] */ - "-----BEGIN CERTIFICATE-----\n" - "MIIDgzCCAuygAwIBAgIQJUuKhThCzONY+MXdriJupDANBgkqhkiG9w0BAQUFADBf\n" - "MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT\n" - "LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw\n" - "HhcNOTcwNDE3MDAwMDAwWhcNMTExMDI0MjM1OTU5WjCBujEfMB0GA1UEChMWVmVy\n" - "aVNpZ24gVHJ1c3QgTmV0d29yazEXMBUGA1UECxMOVmVyaVNpZ24sIEluYy4xMzAx\n" - "BgNVBAsTKlZlcmlTaWduIEludGVybmF0aW9uYWwgU2VydmVyIENBIC0gQ2xhc3Mg\n" - "MzFJMEcGA1UECxNAd3d3LnZlcmlzaWduLmNvbS9DUFMgSW5jb3JwLmJ5IFJlZi4g\n" - "TElBQklMSVRZIExURC4oYyk5NyBWZXJpU2lnbjCBnzANBgkqhkiG9w0BAQEFAAOB\n" - "jQAwgYkCgYEA2IKA6NYZAn0fhRg5JaJlK+G/1AXTvOY2O6rwTGxbtueqPHNFVbLx\n" - "veqXQu2aNAoV1Klc9UAl3dkHwTKydWzEyruj/lYncUOqY/UwPpMo5frxCTvzt01O\n" - "OfdcSVq4wR3Tsor+cDCVQsv+K1GLWjw6+SJPkLICp1OcTzTnqwSye28CAwEAAaOB\n" - "4zCB4DAPBgNVHRMECDAGAQH/AgEAMEQGA1UdIAQ9MDswOQYLYIZIAYb4RQEHAQEw\n" - "KjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL0NQUzA0BgNV\n" - "HSUELTArBggrBgEFBQcDAQYIKwYBBQUHAwIGCWCGSAGG+EIEAQYKYIZIAYb4RQEI\n" - "ATALBgNVHQ8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgEGMDEGA1UdHwQqMCgwJqAk\n" - "oCKGIGh0dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA0GCSqGSIb3DQEB\n" - "BQUAA4GBAAgB7ORolANC8XPxI6I63unx2sZUxCM+hurPajozq+qcBBQHNgYL+Yhv\n" - "1RPuKSvD5HKNRO3RrCAJLeH24RkFOLA9D59/+J4C3IYChmFOJl9en5IeDCSk9dBw\n" - "E88mw0M9SR2egi5SX7w+xmYpAY5Okiy8RnUDgqxz6dl+C2fvVFIa\n" - "-----END CERTIFICATE-----\n", - /* chain[2] */ - "-----BEGIN CERTIFICATE-----\n" - "MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG\n" - "A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz\n" - "cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2\n" - "MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV\n" - "BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt\n" - "YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN\n" - "ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE\n" - "BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is\n" - "I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G\n" - "CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do\n" - "lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc\n" - "AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k\n" - "-----END CERTIFICATE-----\n", - NULL + /* chain[0] */ + "-----BEGIN CERTIFICATE-----\n" + "MIIEczCCA9ygAwIBAgIQeODCPg2RbK2r7/1KoWjWZzANBgkqhkiG9w0BAQUFADCB\n" + "ujEfMB0GA1UEChMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazEXMBUGA1UECxMOVmVy\n" + "aVNpZ24sIEluYy4xMzAxBgNVBAsTKlZlcmlTaWduIEludGVybmF0aW9uYWwgU2Vy\n" + "dmVyIENBIC0gQ2xhc3MgMzFJMEcGA1UECxNAd3d3LnZlcmlzaWduLmNvbS9DUFMg\n" + "SW5jb3JwLmJ5IFJlZi4gTElBQklMSVRZIExURC4oYyk5NyBWZXJpU2lnbjAeFw0w\n" + "ODA2MTAwMDAwMDBaFw0wOTA3MzAyMzU5NTlaMIG2MQswCQYDVQQGEwJERTEPMA0G\n" + "A1UECBMGSGVzc2VuMRowGAYDVQQHFBFGcmFua2Z1cnQgYW0gTWFpbjEsMCoGA1UE\n" + "ChQjU3Bhcmthc3NlbiBJbmZvcm1hdGlrIEdtYkggJiBDby4gS0cxKTAnBgNVBAsU\n" + "IFRlcm1zIG9mIHVzZSBhdCB3d3cudmVyaXNpZ24uY29tMSEwHwYDVQQDFBhoYmNp\n" + "LXBpbnRhbi1ycC5zLWhiY2kuZGUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB\n" + "AK1CdQ9lqmChZWaRAInimuK7I36VImTuAVU0N6BIS4a2BbblkiekbVf15GVHGb6e\n" + "QV06ANN6Nd8XIdfoxi3LoAs8sa+Ku7eoEsRFi/XIU96GgtFlxf3EsVA9RbGdtfer\n" + "9iJGIBae2mJTlk+5LVg2EQr50PJlBuTgiYFc41xs9O2RAgMBAAGjggF6MIIBdjAJ\n" + "BgNVHRMEAjAAMAsGA1UdDwQEAwIFoDBGBgNVHR8EPzA9MDugOaA3hjVodHRwOi8v\n" + "Y3JsLnZlcmlzaWduLmNvbS9DbGFzczNJbnRlcm5hdGlvbmFsU2VydmVyLmNybDBE\n" + "BgNVHSAEPTA7MDkGC2CGSAGG+EUBBxcDMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v\n" + "d3d3LnZlcmlzaWduLmNvbS9ycGEwKAYDVR0lBCEwHwYJYIZIAYb4QgQBBggrBgEF\n" + "BQcDAQYIKwYBBQUHAwIwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRw\n" + "Oi8vb2NzcC52ZXJpc2lnbi5jb20wbgYIKwYBBQUHAQwEYjBgoV6gXDBaMFgwVhYJ\n" + "aW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUS2u5KJYGDLvQUjibKaxLB4shBRgwJhYk\n" + "aHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nbzEuZ2lmMA0GCSqGSIb3DQEB\n" + "BQUAA4GBAJ03R0YAjYzlWm54gMSn6MqJi0mHdLCO2lk3CARwjbg7TEYAZvDsKqTd\n" + "cRuhNk079BqrQ3QapffeN55SAVrc3mzHO54Nla4n5y6x3XIQXVvRjbJGwmWXsdvr\n" + "W899F/pBEN30Tgdbmn7JR/iZlGhIJpY9Us1i7rwQhKYir9ZQBdj3\n" + "-----END CERTIFICATE-----\n", + /* chain[1] */ + "-----BEGIN CERTIFICATE-----\n" + "MIIDgzCCAuygAwIBAgIQJUuKhThCzONY+MXdriJupDANBgkqhkiG9w0BAQUFADBf\n" + "MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT\n" + "LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw\n" + "HhcNOTcwNDE3MDAwMDAwWhcNMTExMDI0MjM1OTU5WjCBujEfMB0GA1UEChMWVmVy\n" + "aVNpZ24gVHJ1c3QgTmV0d29yazEXMBUGA1UECxMOVmVyaVNpZ24sIEluYy4xMzAx\n" + "BgNVBAsTKlZlcmlTaWduIEludGVybmF0aW9uYWwgU2VydmVyIENBIC0gQ2xhc3Mg\n" + "MzFJMEcGA1UECxNAd3d3LnZlcmlzaWduLmNvbS9DUFMgSW5jb3JwLmJ5IFJlZi4g\n" + "TElBQklMSVRZIExURC4oYyk5NyBWZXJpU2lnbjCBnzANBgkqhkiG9w0BAQEFAAOB\n" + "jQAwgYkCgYEA2IKA6NYZAn0fhRg5JaJlK+G/1AXTvOY2O6rwTGxbtueqPHNFVbLx\n" + "veqXQu2aNAoV1Klc9UAl3dkHwTKydWzEyruj/lYncUOqY/UwPpMo5frxCTvzt01O\n" + "OfdcSVq4wR3Tsor+cDCVQsv+K1GLWjw6+SJPkLICp1OcTzTnqwSye28CAwEAAaOB\n" + "4zCB4DAPBgNVHRMECDAGAQH/AgEAMEQGA1UdIAQ9MDswOQYLYIZIAYb4RQEHAQEw\n" + "KjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL0NQUzA0BgNV\n" + "HSUELTArBggrBgEFBQcDAQYIKwYBBQUHAwIGCWCGSAGG+EIEAQYKYIZIAYb4RQEI\n" + "ATALBgNVHQ8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgEGMDEGA1UdHwQqMCgwJqAk\n" + "oCKGIGh0dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA0GCSqGSIb3DQEB\n" + "BQUAA4GBAAgB7ORolANC8XPxI6I63unx2sZUxCM+hurPajozq+qcBBQHNgYL+Yhv\n" + "1RPuKSvD5HKNRO3RrCAJLeH24RkFOLA9D59/+J4C3IYChmFOJl9en5IeDCSk9dBw\n" + "E88mw0M9SR2egi5SX7w+xmYpAY5Okiy8RnUDgqxz6dl+C2fvVFIa\n" + "-----END CERTIFICATE-----\n", + /* chain[2] */ + "-----BEGIN CERTIFICATE-----\n" + "MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG\n" + "A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz\n" + "cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2\n" + "MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV\n" + "BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt\n" + "YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN\n" + "ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE\n" + "BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is\n" + "I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G\n" + "CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do\n" + "lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc\n" + "AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k\n" + "-----END CERTIFICATE-----\n", + NULL }; /* End-entity cert signed using RSA-MD5. */ static const char *mayfirst_chain[] = { - /* chain[0] */ - "-----BEGIN CERTIFICATE-----\n" - "MIIDVTCCAr6gAwIBAgIDCHp1MA0GCSqGSIb3DQEBBAUAMFoxCzAJBgNVBAYTAlVT\n" - "MRwwGgYDVQQKExNFcXVpZmF4IFNlY3VyZSBJbmMuMS0wKwYDVQQDEyRFcXVpZmF4\n" - "IFNlY3VyZSBHbG9iYWwgZUJ1c2luZXNzIENBLTEwHhcNMDgwNTE5MDUyOTE5WhcN\n" - "MDkxMDE5MDUyOTE5WjCBxDELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFHN1cHBvcnQu\n" - "bWF5Zmlyc3Qub3JnMRMwEQYDVQQLEwpHVDY5MDc5ODgwMTEwLwYDVQQLEyhTZWUg\n" - "d3d3LnJhcGlkc3NsLmNvbS9yZXNvdXJjZXMvY3BzIChjKTA3MS8wLQYDVQQLEyZE\n" - "b21haW4gQ29udHJvbCBWYWxpZGF0ZWQgLSBSYXBpZFNTTChSKTEdMBsGA1UEAxMU\n" - "c3VwcG9ydC5tYXlmaXJzdC5vcmcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB\n" - "AN0TWIZwJ/hIfMHc08/bBMlzZ5WucJqEvxU/ZnxPo/H6V/m4v1iLpM2hip2c5cg0\n" - "BcEMc/TBHQ1UEV8sb0Lh91kWfiMB1Sp+L2Fpz/wnhsivXC5j6jq9IcPqmOZOXBYX\n" - "k04W1B6FKTvk9KrZJ0at2J44hp4SsAfWQI0eCKuas+R1AgMBAAGjgb0wgbowDgYD\n" - "VR0PAQH/BAQDAgTwMB0GA1UdDgQWBBS0D4iuCxp35TLADTkINq2AhgTYVTA7BgNV\n" - "HR8ENDAyMDCgLqAshipodHRwOi8vY3JsLmdlb3RydXN0LmNvbS9jcmxzL2dsb2Jh\n" - "bGNhMS5jcmwwHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0l\n" - "BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcN\n" - "AQEEBQADgYEAXNWYnrO1mZgBSCwPlWhVa2aOKGCFmehLIcAPEBN+8xhXuOeigYBm\n" - "ic5ShCO583ttgHNCV3Y5dW9sNhv1US4vSb6soKjgUlG11fJKUqU8mwFKvbs7TUSq\n" - "j6h+1uvlfFI34WzODjJloY4QSM7FmbnW+HCiFKYyvra3iUqjcl9AeR4=\n" - "-----END CERTIFICATE-----\n", - /* chain[1] (CA) */ - "-----BEGIN CERTIFICATE-----\n" - "MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJV\n" - "UzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1\n" - "aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0\n" - "MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoT\n" - "E0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJl\n" - "IEdsb2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAw\n" - "gYkCgYEAuucXkAJlsTRVPEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQy\n" - "td4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORR\n" - "OhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxnhcXIw2EC\n" - "AwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8w\n" - "HwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6o\n" - "oHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf\n" - "2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkAZ70Br83gcfxa\n" - "z2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIYNMR1\n" - "pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV\n" - "-----END CERTIFICATE-----\n", - NULL + /* chain[0] */ + "-----BEGIN CERTIFICATE-----\n" + "MIIDVTCCAr6gAwIBAgIDCHp1MA0GCSqGSIb3DQEBBAUAMFoxCzAJBgNVBAYTAlVT\n" + "MRwwGgYDVQQKExNFcXVpZmF4IFNlY3VyZSBJbmMuMS0wKwYDVQQDEyRFcXVpZmF4\n" + "IFNlY3VyZSBHbG9iYWwgZUJ1c2luZXNzIENBLTEwHhcNMDgwNTE5MDUyOTE5WhcN\n" + "MDkxMDE5MDUyOTE5WjCBxDELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFHN1cHBvcnQu\n" + "bWF5Zmlyc3Qub3JnMRMwEQYDVQQLEwpHVDY5MDc5ODgwMTEwLwYDVQQLEyhTZWUg\n" + "d3d3LnJhcGlkc3NsLmNvbS9yZXNvdXJjZXMvY3BzIChjKTA3MS8wLQYDVQQLEyZE\n" + "b21haW4gQ29udHJvbCBWYWxpZGF0ZWQgLSBSYXBpZFNTTChSKTEdMBsGA1UEAxMU\n" + "c3VwcG9ydC5tYXlmaXJzdC5vcmcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB\n" + "AN0TWIZwJ/hIfMHc08/bBMlzZ5WucJqEvxU/ZnxPo/H6V/m4v1iLpM2hip2c5cg0\n" + "BcEMc/TBHQ1UEV8sb0Lh91kWfiMB1Sp+L2Fpz/wnhsivXC5j6jq9IcPqmOZOXBYX\n" + "k04W1B6FKTvk9KrZJ0at2J44hp4SsAfWQI0eCKuas+R1AgMBAAGjgb0wgbowDgYD\n" + "VR0PAQH/BAQDAgTwMB0GA1UdDgQWBBS0D4iuCxp35TLADTkINq2AhgTYVTA7BgNV\n" + "HR8ENDAyMDCgLqAshipodHRwOi8vY3JsLmdlb3RydXN0LmNvbS9jcmxzL2dsb2Jh\n" + "bGNhMS5jcmwwHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0l\n" + "BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcN\n" + "AQEEBQADgYEAXNWYnrO1mZgBSCwPlWhVa2aOKGCFmehLIcAPEBN+8xhXuOeigYBm\n" + "ic5ShCO583ttgHNCV3Y5dW9sNhv1US4vSb6soKjgUlG11fJKUqU8mwFKvbs7TUSq\n" + "j6h+1uvlfFI34WzODjJloY4QSM7FmbnW+HCiFKYyvra3iUqjcl9AeR4=\n" + "-----END CERTIFICATE-----\n", + /* chain[1] (CA) */ + "-----BEGIN CERTIFICATE-----\n" + "MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJV\n" + "UzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1\n" + "aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0\n" + "MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoT\n" + "E0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJl\n" + "IEdsb2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAw\n" + "gYkCgYEAuucXkAJlsTRVPEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQy\n" + "td4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORR\n" + "OhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxnhcXIw2EC\n" + "AwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8w\n" + "HwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6o\n" + "oHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf\n" + "2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkAZ70Br83gcfxa\n" + "z2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIYNMR1\n" + "pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV\n" + "-----END CERTIFICATE-----\n", + NULL }; /* Test V1 CA without basicConstraint. */ static const char *v1ca[] = { - /* chain[0] */ - "-----BEGIN CERTIFICATE-----\n" - "MIIE/zCCA+egAwIBAgIQBSsgZODO6vk6ayagofBQJDANBgkqhkiG9w0BAQUFADCB\n" - "sDELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" - "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n" - "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNTEqMCgGA1UEAxMh\n" - "VmVyaVNpZ24gQ2xhc3MgMyBTZWN1cmUgU2VydmVyIENBMB4XDTA4MDUwNTAwMDAw\n" - "MFoXDTA5MDUyMjIzNTk1OVowczELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlu\n" - "b2lzMRAwDgYDVQQHFAdEdSBQYWdlMSQwIgYDVQQKFBtBcmdvbm5lIE5hdGlvbmFs\n" - "IExhYm9yYXRvcnkxGTAXBgNVBAMUEGF1dGgyLml0LmFubC5nb3YwgZ8wDQYJKoZI\n" - "hvcNAQEBBQADgY0AMIGJAoGBAMg6YPOXsPQedkLUug3RoMjv/OB+SfuDgGXxtef5\n" - "iE0SjCcsKT5v+bfxt2+ccs7IN7kWn1luJ5NTb0ZrdE6LQoYp9oLsaX/ukOnxKUMY\n" - "YhJJyHgutPtwyPvfZTZPpATWycJnZGIehY1S6thwxeofUyE3ykec2lalULzwXgel\n" - "iC97AgMBAAGjggHTMIIBzzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIFoDBEBgNVHR8E\n" - "PTA7MDmgN6A1hjNodHRwOi8vU1ZSU2VjdXJlLWNybC52ZXJpc2lnbi5jb20vU1ZS\n" - "U2VjdXJlMjAwNS5jcmwwRAYDVR0gBD0wOzA5BgtghkgBhvhFAQcXAzAqMCgGCCsG\n" - "AQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMB0GA1UdJQQWMBQG\n" - "CCsGAQUFBwMBBggrBgEFBQcDAjAfBgNVHSMEGDAWgBRv7K+g3Yqk7/UqEGctP1WC\n" - "vNfvJTB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLnZl\n" - "cmlzaWduLmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL1NWUlNlY3VyZS1haWEudmVy\n" - "aXNpZ24uY29tL1NWUlNlY3VyZTIwMDUtYWlhLmNlcjBuBggrBgEFBQcBDARiMGCh\n" - "XqBcMFowWDBWFglpbWFnZS9naWYwITAfMAcGBSsOAwIaBBRLa7kolgYMu9BSOJsp\n" - "rEsHiyEFGDAmFiRodHRwOi8vbG9nby52ZXJpc2lnbi5jb20vdnNsb2dvMS5naWYw\n" - "DQYJKoZIhvcNAQEFBQADggEBAEAKzE4gXeyjRDBSgAgWIaCozbWK+b1ct4aZhWZt\n" - "ihAyASxsNgDjDJzkInINjXoO5FWuJHDuoyyWHBQBb7t96+KgFu/4ye90VUDNTuin\n" - "mmqdOKeLSHVnlhfvGLCdrhWSWg/jZmAjYrXYRwkvxehl9IcHmOgNrHV3INdrSTdZ\n" - "ZCVLL74tuMqhMMm/NJ0tdEmWgpJe+/0dky2F2gAB+mFXlyzFvCLoyS2Vl0PW/BxM\n" - "Ly5t+scmAbgni9gzmFTNhbKHd0s2UE395z4ra6fUdZ0BClFgMDvUnb6kJ/uyKRSa\n" - "h7uQbWFJbA8aNgGLvfTf6o9n+GwbZkcgtBgIVENt8wzqg2I=\n" - "-----END CERTIFICATE-----\n", - /* chain[1] */ - "-----BEGIN CERTIFICATE-----\n" - "MIIEnDCCBAWgAwIBAgIQdTN9mrDhIzuuLX3kRpFi1DANBgkqhkiG9w0BAQUFADBf\n" - "MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT\n" - "LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw\n" - "HhcNMDUwMTE5MDAwMDAwWhcNMTUwMTE4MjM1OTU5WjCBsDELMAkGA1UEBhMCVVMx\n" - "FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz\n" - "dCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQgaHR0cHM6Ly93d3cu\n" - "dmVyaXNpZ24uY29tL3JwYSAoYykwNTEqMCgGA1UEAxMhVmVyaVNpZ24gQ2xhc3Mg\n" - "MyBTZWN1cmUgU2VydmVyIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC\n" - "AQEAlcMhEo5AxQ0BX3ZeZpTZcyxYGSK4yfx6OZAqd3J8HT732FXjr0LLhzAC3Fus\n" - "cOa4RLQrNeuT0hcFfstG1lxToDJRnXRkWPkMmgDqXkRJZHL0zRDihQr5NO6ziGap\n" - "paRa0A6Yf1gNK1K7hql+LvqySHyN2y1fAXWijQY7i7RhB8m+Ipn4G9G1V2YETTX0\n" - "kXGWtZkIJZuXyDrzILHdnpgMSmO3ps6wAc74k2rzDG6fsemEe4GYQeaB3D0s57Rr\n" - "4578CBbXs9W5ZhKZfG1xyE2+xw/j+zet1XWHIWuG0EQUWlR5OZZpVsm5Mc2JYVjh\n" - "2XYFBa33uQKvp/1HkaIiNFox0QIDAQABo4IBgTCCAX0wEgYDVR0TAQH/BAgwBgEB\n" - "/wIBADBEBgNVHSAEPTA7MDkGC2CGSAGG+EUBBxcDMCowKAYIKwYBBQUHAgEWHGh0\n" - "dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9ycGEwMQYDVR0fBCowKDAmoCSgIoYgaHR0\n" - "cDovL2NybC52ZXJpc2lnbi5jb20vcGNhMy5jcmwwDgYDVR0PAQH/BAQDAgEGMBEG\n" - "CWCGSAGG+EIBAQQEAwIBBjApBgNVHREEIjAgpB4wHDEaMBgGA1UEAxMRQ2xhc3Mz\n" - "Q0EyMDQ4LTEtNDUwHQYDVR0OBBYEFG/sr6DdiqTv9SoQZy0/VYK81+8lMIGABgNV\n" - "HSMEeTB3oWOkYTBfMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIElu\n" - "Yy4xNzA1BgNVBAsTLkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlv\n" - "biBBdXRob3JpdHmCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQEFBQADgYEA\n" - "w34IRl2RNs9n3Nenr6+4IsOLBHTTsWC85v63RBKBWzFzFGNWxnIu0RoDQ1w4ClBK\n" - "Tc3athmo9JkNr+P32PF1KGX2av6b9L1S2T/L2hbLpZ4ujmZSeD0m+v6UNohKlV4q\n" - "TBnvbvqCPy0D79YoszcYz0KyNCFkR9MgazpM3OYDkAw=\n" - "-----END CERTIFICATE-----\n", - /* chain[2] (CA) */ - "-----BEGIN CERTIFICATE-----\n" - "MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzEL\n" - "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQL\n" - "Ey5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y\n" - "aXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UE\n" - "BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz\n" - "cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGf\n" - "MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69q\n" - "RUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94f56TuZoAqiN91qyFomNFx3In\n" - "zPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Olhec9vn2a\n" - "/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtM\n" - "EivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPw\n" - "TtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzk\n" - "uxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k\n" - "-----END CERTIFICATE-----\n", - NULL + /* chain[0] */ + "-----BEGIN CERTIFICATE-----\n" + "MIIE/zCCA+egAwIBAgIQBSsgZODO6vk6ayagofBQJDANBgkqhkiG9w0BAQUFADCB\n" + "sDELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" + "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n" + "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNTEqMCgGA1UEAxMh\n" + "VmVyaVNpZ24gQ2xhc3MgMyBTZWN1cmUgU2VydmVyIENBMB4XDTA4MDUwNTAwMDAw\n" + "MFoXDTA5MDUyMjIzNTk1OVowczELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlu\n" + "b2lzMRAwDgYDVQQHFAdEdSBQYWdlMSQwIgYDVQQKFBtBcmdvbm5lIE5hdGlvbmFs\n" + "IExhYm9yYXRvcnkxGTAXBgNVBAMUEGF1dGgyLml0LmFubC5nb3YwgZ8wDQYJKoZI\n" + "hvcNAQEBBQADgY0AMIGJAoGBAMg6YPOXsPQedkLUug3RoMjv/OB+SfuDgGXxtef5\n" + "iE0SjCcsKT5v+bfxt2+ccs7IN7kWn1luJ5NTb0ZrdE6LQoYp9oLsaX/ukOnxKUMY\n" + "YhJJyHgutPtwyPvfZTZPpATWycJnZGIehY1S6thwxeofUyE3ykec2lalULzwXgel\n" + "iC97AgMBAAGjggHTMIIBzzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIFoDBEBgNVHR8E\n" + "PTA7MDmgN6A1hjNodHRwOi8vU1ZSU2VjdXJlLWNybC52ZXJpc2lnbi5jb20vU1ZS\n" + "U2VjdXJlMjAwNS5jcmwwRAYDVR0gBD0wOzA5BgtghkgBhvhFAQcXAzAqMCgGCCsG\n" + "AQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMB0GA1UdJQQWMBQG\n" + "CCsGAQUFBwMBBggrBgEFBQcDAjAfBgNVHSMEGDAWgBRv7K+g3Yqk7/UqEGctP1WC\n" + "vNfvJTB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLnZl\n" + "cmlzaWduLmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL1NWUlNlY3VyZS1haWEudmVy\n" + "aXNpZ24uY29tL1NWUlNlY3VyZTIwMDUtYWlhLmNlcjBuBggrBgEFBQcBDARiMGCh\n" + "XqBcMFowWDBWFglpbWFnZS9naWYwITAfMAcGBSsOAwIaBBRLa7kolgYMu9BSOJsp\n" + "rEsHiyEFGDAmFiRodHRwOi8vbG9nby52ZXJpc2lnbi5jb20vdnNsb2dvMS5naWYw\n" + "DQYJKoZIhvcNAQEFBQADggEBAEAKzE4gXeyjRDBSgAgWIaCozbWK+b1ct4aZhWZt\n" + "ihAyASxsNgDjDJzkInINjXoO5FWuJHDuoyyWHBQBb7t96+KgFu/4ye90VUDNTuin\n" + "mmqdOKeLSHVnlhfvGLCdrhWSWg/jZmAjYrXYRwkvxehl9IcHmOgNrHV3INdrSTdZ\n" + "ZCVLL74tuMqhMMm/NJ0tdEmWgpJe+/0dky2F2gAB+mFXlyzFvCLoyS2Vl0PW/BxM\n" + "Ly5t+scmAbgni9gzmFTNhbKHd0s2UE395z4ra6fUdZ0BClFgMDvUnb6kJ/uyKRSa\n" + "h7uQbWFJbA8aNgGLvfTf6o9n+GwbZkcgtBgIVENt8wzqg2I=\n" + "-----END CERTIFICATE-----\n", + /* chain[1] */ + "-----BEGIN CERTIFICATE-----\n" + "MIIEnDCCBAWgAwIBAgIQdTN9mrDhIzuuLX3kRpFi1DANBgkqhkiG9w0BAQUFADBf\n" + "MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT\n" + "LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw\n" + "HhcNMDUwMTE5MDAwMDAwWhcNMTUwMTE4MjM1OTU5WjCBsDELMAkGA1UEBhMCVVMx\n" + "FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz\n" + "dCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQgaHR0cHM6Ly93d3cu\n" + "dmVyaXNpZ24uY29tL3JwYSAoYykwNTEqMCgGA1UEAxMhVmVyaVNpZ24gQ2xhc3Mg\n" + "MyBTZWN1cmUgU2VydmVyIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC\n" + "AQEAlcMhEo5AxQ0BX3ZeZpTZcyxYGSK4yfx6OZAqd3J8HT732FXjr0LLhzAC3Fus\n" + "cOa4RLQrNeuT0hcFfstG1lxToDJRnXRkWPkMmgDqXkRJZHL0zRDihQr5NO6ziGap\n" + "paRa0A6Yf1gNK1K7hql+LvqySHyN2y1fAXWijQY7i7RhB8m+Ipn4G9G1V2YETTX0\n" + "kXGWtZkIJZuXyDrzILHdnpgMSmO3ps6wAc74k2rzDG6fsemEe4GYQeaB3D0s57Rr\n" + "4578CBbXs9W5ZhKZfG1xyE2+xw/j+zet1XWHIWuG0EQUWlR5OZZpVsm5Mc2JYVjh\n" + "2XYFBa33uQKvp/1HkaIiNFox0QIDAQABo4IBgTCCAX0wEgYDVR0TAQH/BAgwBgEB\n" + "/wIBADBEBgNVHSAEPTA7MDkGC2CGSAGG+EUBBxcDMCowKAYIKwYBBQUHAgEWHGh0\n" + "dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9ycGEwMQYDVR0fBCowKDAmoCSgIoYgaHR0\n" + "cDovL2NybC52ZXJpc2lnbi5jb20vcGNhMy5jcmwwDgYDVR0PAQH/BAQDAgEGMBEG\n" + "CWCGSAGG+EIBAQQEAwIBBjApBgNVHREEIjAgpB4wHDEaMBgGA1UEAxMRQ2xhc3Mz\n" + "Q0EyMDQ4LTEtNDUwHQYDVR0OBBYEFG/sr6DdiqTv9SoQZy0/VYK81+8lMIGABgNV\n" + "HSMEeTB3oWOkYTBfMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIElu\n" + "Yy4xNzA1BgNVBAsTLkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlv\n" + "biBBdXRob3JpdHmCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQEFBQADgYEA\n" + "w34IRl2RNs9n3Nenr6+4IsOLBHTTsWC85v63RBKBWzFzFGNWxnIu0RoDQ1w4ClBK\n" + "Tc3athmo9JkNr+P32PF1KGX2av6b9L1S2T/L2hbLpZ4ujmZSeD0m+v6UNohKlV4q\n" + "TBnvbvqCPy0D79YoszcYz0KyNCFkR9MgazpM3OYDkAw=\n" + "-----END CERTIFICATE-----\n", + /* chain[2] (CA) */ + "-----BEGIN CERTIFICATE-----\n" + "MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzEL\n" + "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQL\n" + "Ey5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y\n" + "aXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UE\n" + "BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz\n" + "cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGf\n" + "MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69q\n" + "RUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94f56TuZoAqiN91qyFomNFx3In\n" + "zPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Olhec9vn2a\n" + "/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtM\n" + "EivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPw\n" + "TtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzk\n" + "uxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k\n" + "-----END CERTIFICATE-----\n", + NULL }; /* Test CACert chain with RSA-MD5 signature. */ static const char *cacertrsamd5[] = { - /* chain[0] (EE cert) */ - "-----BEGIN CERTIFICATE-----\n" - "MIIE3zCCAsegAwIBAgICbmgwDQYJKoZIhvcNAQEFBQAwVDEUMBIGA1UEChMLQ0Fj\n" - "ZXJ0IEluYy4xHjAcBgNVBAsTFWh0dHA6Ly93d3cuQ0FjZXJ0Lm9yZzEcMBoGA1UE\n" - "AxMTQ0FjZXJ0IENsYXNzIDMgUm9vdDAeFw0wOTAxMTYyMjI5NDdaFw0xMTAxMTYy\n" - "MjI5NDdaMBsxGTAXBgNVBAMTEGZyeS5zZXJ2ZXJhbWEuZGUwgZ8wDQYJKoZIhvcN\n" - "AQEBBQADgY0AMIGJAoGBAMh3WSR8Dxw/zDAZpHMjA1To0HJIaoyR9TqzQfLgn7Yr\n" - "sQFrRMefVMWYHiEFAVJTRcO5GuUtkw3IxALLlyNMl7xJbZESzRKw3Tz3NtM3DopB\n" - "8L7rI8ANy7Hh6P5QRMWJ9OJyiLhSpAi0TuJeGr+kKovHRj64V2/NtoPgDsytHMt9\n" - "AgMBAAGjggF2MIIBcjAMBgNVHRMBAf8EAjAAMDQGA1UdJQQtMCsGCCsGAQUFBwMC\n" - "BggrBgEFBQcDAQYJYIZIAYb4QgQBBgorBgEEAYI3CgMDMAsGA1UdDwQEAwIFoDAz\n" - "BggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmNhY2VydC5v\n" - "cmcvMIHpBgNVHREEgeEwgd6CEGZyeS5zZXJ2ZXJhbWEuZGWgHgYIKwYBBQUHCAWg\n" - "EgwQZnJ5LnNlcnZlcmFtYS5kZYIQZnJ5LnNlcnZlcmFtYS5kZaAeBggrBgEFBQcI\n" - "BaASDBBmcnkuc2VydmVyYW1hLmRlghIqLmZyeS5zZXJ2ZXJhbWEuZGWgIAYIKwYB\n" - "BQUHCAWgFAwSKi5mcnkuc2VydmVyYW1hLmRlggd6cHViLmRloBUGCCsGAQUFBwgF\n" - "oAkMB3pwdWIuZGWCCSouenB1Yi5kZaAXBggrBgEFBQcIBaALDAkqLnpwdWIuZGUw\n" - "DQYJKoZIhvcNAQEFBQADggIBAEWSsOlLbjdRjijMmOnDc2RcLQ5PQC9pjUW+bzGR\n" - "KTJbf8Hf/wSdmHAam+UsIM6HzdQVi058dGyb8/NJQJD+9Dgv1m57x1prLerkt6xq\n" - "UQCYmOpMxCJOykLqzEUnou9WtL5FaD+wBlOuqWFy0Cy2O3LHXkSkaMR+gdxC4pkI\n" - "wSkI2SDdC0juvnoVI7iBaaIhYI/1FwV56hc6lxsAslf0NbtiiwhneVbHm5XRK1d4\n" - "tabVKwOHnEuDyAnZd1yM1EqXKz+NwBlhoKWhC0fVUByID5A2WGEejBJcW/lVrYft\n" - "4+sJpnwS+/VDS5yrDXMqMdYGE8TVMy7RsaoUdaeFQYv4Go48BBGDJB5uEkBJiSq8\n" - "ViZA4iEKujBa5zKJ+CZXy3D/eHLBKUL+ayc9dLeeFTPZU0jYb83kE1wtlnWwF4J1\n" - "8lUQI10nLFg+ALoZoAmFZej19XgbyG6im+ZRFuwrpV6F3HJRP+AMNInsLoQTuD9I\n" - "l2gftVaIU1MqUmVMBcUeeNXG1BZ9vRonKzAC4Otfk1B6aW4Lz0E+sZ+HfCMicD3j\n" - "N01KAeNZ64j8emgnLffurb7qUWbanTpMEzxrelBRufxJkXcn6BcFcxPBVgFnsMgF\n" - "tP7e7N/cm55pI8Et+Gjp+ORJetSio118yu9bf7etSAJWOS6tQ2Ac7JeKP+a8jsvq\n" - "Uyx7\n" - "-----END CERTIFICATE-----\n", - /* chain[1] (Class 3 CA) */ - "-----BEGIN CERTIFICATE-----\n" - "MIIGCDCCA/CgAwIBAgIBATANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290\n" - "IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB\n" - "IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA\n" - "Y2FjZXJ0Lm9yZzAeFw0wNTEwMTQwNzM2NTVaFw0zMzAzMjgwNzM2NTVaMFQxFDAS\n" - "BgNVBAoTC0NBY2VydCBJbmMuMR4wHAYDVQQLExVodHRwOi8vd3d3LkNBY2VydC5v\n" - "cmcxHDAaBgNVBAMTE0NBY2VydCBDbGFzcyAzIFJvb3QwggIiMA0GCSqGSIb3DQEB\n" - "AQUAA4ICDwAwggIKAoICAQCrSTURSHzSJn5TlM9Dqd0o10Iqi/OHeBlYfA+e2ol9\n" - "4fvrcpANdKGWZKufoCSZc9riVXbHF3v1BKxGuMO+f2SNEGwk82GcwPKQ+lHm9WkB\n" - "Y8MPVuJKQs/iRIwlKKjFeQl9RrmK8+nzNCkIReQcn8uUBByBqBSzmGXEQ+xOgo0J\n" - "0b2qW42S0OzekMV/CsLj6+YxWl50PpczWejDAz1gM7/30W9HxM3uYoNSbi4ImqTZ\n" - "FRiRpoWSR7CuSOtttyHshRpocjWr//AQXcD0lKdq1TuSfkyQBX6TwSyLpI5idBVx\n" - "bgtxA+qvFTia1NIFcm+M+SvrWnIl+TlG43IbPgTDZCciECqKT1inA62+tC4T7V2q\n" - "SNfVfdQqe1z6RgRQ5MwOQluM7dvyz/yWk+DbETZUYjQ4jwxgmzuXVjit89Jbi6Bb\n" - "6k6WuHzX1aCGcEDTkSm3ojyt9Yy7zxqSiuQ0e8DYbF/pCsLDpyCaWt8sXVJcukfV\n" - "m+8kKHA4IC/VfynAskEDaJLM4JzMl0tF7zoQCqtwOpiVcK01seqFK6QcgCExqa5g\n" - "eoAmSAC4AcCTY1UikTxW56/bOiXzjzFU6iaLgVn5odFTEcV7nQP2dBHgbbEsPyyG\n" - "kZlxmqZ3izRg0RS0LKydr4wQ05/EavhvE/xzWfdmQnQeiuP43NJvmJzLR5iVQAX7\n" - "6QIDAQABo4G/MIG8MA8GA1UdEwEB/wQFMAMBAf8wXQYIKwYBBQUHAQEEUTBPMCMG\n" - "CCsGAQUFBzABhhdodHRwOi8vb2NzcC5DQWNlcnQub3JnLzAoBggrBgEFBQcwAoYc\n" - "aHR0cDovL3d3dy5DQWNlcnQub3JnL2NhLmNydDBKBgNVHSAEQzBBMD8GCCsGAQQB\n" - "gZBKMDMwMQYIKwYBBQUHAgEWJWh0dHA6Ly93d3cuQ0FjZXJ0Lm9yZy9pbmRleC5w\n" - "aHA/aWQ9MTAwDQYJKoZIhvcNAQEEBQADggIBAH8IiKHaGlBJ2on7oQhy84r3HsQ6\n" - "tHlbIDCxRd7CXdNlafHCXVRUPIVfuXtCkcKZ/RtRm6tGpaEQU55tiKxzbiwzpvD0\n" - "nuB1wT6IRanhZkP+VlrRekF490DaSjrxC1uluxYG5sLnk7mFTZdPsR44Q4Dvmw2M\n" - "77inYACHV30eRBzLI++bPJmdr7UpHEV5FpZNJ23xHGzDwlVks7wU4vOkHx4y/CcV\n" - "Bc/dLq4+gmF78CEQGPZE6lM5+dzQmiDgxrvgu1pPxJnIB721vaLbLmINQjRBvP+L\n" - "ivVRIqqIMADisNS8vmW61QNXeZvo3MhN+FDtkaVSKKKs+zZYPumUK5FQhxvWXtaM\n" - "zPcPEAxSTtAWYeXlCmy/F8dyRlecmPVsYGN6b165Ti/Iubm7aoW8mA3t+T6XhDSU\n" - "rgCvoeXnkm5OvfPi2RSLXNLrAWygF6UtEOucekq9ve7O/e0iQKtwOIj1CodqwqsF\n" - "YMlIBdpTwd5Ed2qz8zw87YC8pjhKKSRf/lk7myV6VmMAZLldpGJ9VzZPrYPvH5JT\n" - "oI53V93lYRE9IwCQTDz6o2CTBKOvNfYOao9PSmCnhQVsRqGP9Md246FZV/dxssRu\n" - "FFxtbUFm3xuTsdQAw+7Lzzw9IYCpX2Nl/N3gX6T0K/CFcUHUZyX7GrGXrtaZghNB\n" - "0m6lG5kngOcLqagA\n" - "-----END CERTIFICATE-----\n", - /* chain[2] (Root CA) */ - "-----BEGIN CERTIFICATE-----\n" - "MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290\n" - "IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB\n" - "IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA\n" - "Y2FjZXJ0Lm9yZzAeFw0wMzAzMzAxMjI5NDlaFw0zMzAzMjkxMjI5NDlaMHkxEDAO\n" - "BgNVBAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEi\n" - "MCAGA1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJ\n" - "ARYSc3VwcG9ydEBjYWNlcnQub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC\n" - "CgKCAgEAziLA4kZ97DYoB1CW8qAzQIxL8TtmPzHlawI229Z89vGIj053NgVBlfkJ\n" - "8BLPRoZzYLdufujAWGSuzbCtRRcMY/pnCujW0r8+55jE8Ez64AO7NV1sId6eINm6\n" - "zWYyN3L69wj1x81YyY7nDl7qPv4coRQKFWyGhFtkZip6qUtTefWIonvuLwphK42y\n" - "fk1WpRPs6tqSnqxEQR5YYGUFZvjARL3LlPdCfgv3ZWiYUQXw8wWRBB0bF4LsyFe7\n" - "w2t6iPGwcswlWyCR7BYCEo8y6RcYSNDHBS4CMEK4JZwFaz+qOqfrU0j36NK2B5jc\n" - "G8Y0f3/JHIJ6BVgrCFvzOKKrF11myZjXnhCLotLddJr3cQxyYN/Nb5gznZY0dj4k\n" - "epKwDpUeb+agRThHqtdB7Uq3EvbXG4OKDy7YCbZZ16oE/9KTfWgu3YtLq1i6L43q\n" - "laegw1SJpfvbi1EinbLDvhG+LJGGi5Z4rSDTii8aP8bQUWWHIbEZAWV/RRyH9XzQ\n" - "QUxPKZgh/TMfdQwEUfoZd9vUFBzugcMd9Zi3aQaRIt0AUMyBMawSB3s42mhb5ivU\n" - "fslfrejrckzzAeVLIL+aplfKkQABi6F1ITe1Yw1nPkZPcCBnzsXWWdsC4PDSy826\n" - "YreQQejdIOQpvGQpQsgi3Hia/0PsmBsJUUtaWsJx8cTLc6nloQsCAwEAAaOCAc4w\n" - "ggHKMB0GA1UdDgQWBBQWtTIb1Mfz4OaO873SsDrusjkY0TCBowYDVR0jBIGbMIGY\n" - "gBQWtTIb1Mfz4OaO873SsDrusjkY0aF9pHsweTEQMA4GA1UEChMHUm9vdCBDQTEe\n" - "MBwGA1UECxMVaHR0cDovL3d3dy5jYWNlcnQub3JnMSIwIAYDVQQDExlDQSBDZXJ0\n" - "IFNpZ25pbmcgQXV0aG9yaXR5MSEwHwYJKoZIhvcNAQkBFhJzdXBwb3J0QGNhY2Vy\n" - "dC5vcmeCAQAwDwYDVR0TAQH/BAUwAwEB/zAyBgNVHR8EKzApMCegJaAjhiFodHRw\n" - "czovL3d3dy5jYWNlcnQub3JnL3Jldm9rZS5jcmwwMAYJYIZIAYb4QgEEBCMWIWh0\n" - "dHBzOi8vd3d3LmNhY2VydC5vcmcvcmV2b2tlLmNybDA0BglghkgBhvhCAQgEJxYl\n" - "aHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4LnBocD9pZD0xMDBWBglghkgBhvhC\n" - "AQ0ESRZHVG8gZ2V0IHlvdXIgb3duIGNlcnRpZmljYXRlIGZvciBGUkVFIGhlYWQg\n" - "b3ZlciB0byBodHRwOi8vd3d3LmNhY2VydC5vcmcwDQYJKoZIhvcNAQEEBQADggIB\n" - "ACjH7pyCArpcgBLKNQodgW+JapnM8mgPf6fhjViVPr3yBsOQWqy1YPaZQwGjiHCc\n" - "nWKdpIevZ1gNMDY75q1I08t0AoZxPuIrA2jxNGJARjtT6ij0rPtmlVOKTV39O9lg\n" - "18p5aTuxZZKmxoGCXJzN600BiqXfEVWqFcofN8CCmHBh22p8lqOOLlQ+TyGpkO/c\n" - "gr/c6EWtTZBzCDyUZbAEmXZ/4rzCahWqlwQ3JNgelE5tDlG+1sSPypZt90Pf6DBl\n" - "Jzt7u0NDY8RD97LsaMzhGY4i+5jhe1o+ATc7iwiwovOVThrLm82asduycPAtStvY\n" - "sONvRUgzEv/+PDIqVPfE94rwiCPCR/5kenHA0R6mY7AHfqQv0wGP3J8rtsYIqQ+T\n" - "SCX8Ev2fQtzzxD72V7DX3WnRBnc0CkvSyqD/HMaMyRa+xMwyN2hzXwj7UfdJUzYF\n" - "CpUCTPJ5GhD22Dp1nPMd8aINcGeGG7MW9S/lpOt5hvk9C8JzC6WZrG/8Z7jlLwum\n" - "GCSNe9FINSkYQKyTYOGWhlC0elnYjyELn8+CkcY7v2vcB5G5l1YjqrZslMZIBjzk\n" - "zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW\n" - "omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD\n" - "-----END CERTIFICATE-----\n", - NULL + /* chain[0] (EE cert) */ + "-----BEGIN CERTIFICATE-----\n" + "MIIE3zCCAsegAwIBAgICbmgwDQYJKoZIhvcNAQEFBQAwVDEUMBIGA1UEChMLQ0Fj\n" + "ZXJ0IEluYy4xHjAcBgNVBAsTFWh0dHA6Ly93d3cuQ0FjZXJ0Lm9yZzEcMBoGA1UE\n" + "AxMTQ0FjZXJ0IENsYXNzIDMgUm9vdDAeFw0wOTAxMTYyMjI5NDdaFw0xMTAxMTYy\n" + "MjI5NDdaMBsxGTAXBgNVBAMTEGZyeS5zZXJ2ZXJhbWEuZGUwgZ8wDQYJKoZIhvcN\n" + "AQEBBQADgY0AMIGJAoGBAMh3WSR8Dxw/zDAZpHMjA1To0HJIaoyR9TqzQfLgn7Yr\n" + "sQFrRMefVMWYHiEFAVJTRcO5GuUtkw3IxALLlyNMl7xJbZESzRKw3Tz3NtM3DopB\n" + "8L7rI8ANy7Hh6P5QRMWJ9OJyiLhSpAi0TuJeGr+kKovHRj64V2/NtoPgDsytHMt9\n" + "AgMBAAGjggF2MIIBcjAMBgNVHRMBAf8EAjAAMDQGA1UdJQQtMCsGCCsGAQUFBwMC\n" + "BggrBgEFBQcDAQYJYIZIAYb4QgQBBgorBgEEAYI3CgMDMAsGA1UdDwQEAwIFoDAz\n" + "BggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmNhY2VydC5v\n" + "cmcvMIHpBgNVHREEgeEwgd6CEGZyeS5zZXJ2ZXJhbWEuZGWgHgYIKwYBBQUHCAWg\n" + "EgwQZnJ5LnNlcnZlcmFtYS5kZYIQZnJ5LnNlcnZlcmFtYS5kZaAeBggrBgEFBQcI\n" + "BaASDBBmcnkuc2VydmVyYW1hLmRlghIqLmZyeS5zZXJ2ZXJhbWEuZGWgIAYIKwYB\n" + "BQUHCAWgFAwSKi5mcnkuc2VydmVyYW1hLmRlggd6cHViLmRloBUGCCsGAQUFBwgF\n" + "oAkMB3pwdWIuZGWCCSouenB1Yi5kZaAXBggrBgEFBQcIBaALDAkqLnpwdWIuZGUw\n" + "DQYJKoZIhvcNAQEFBQADggIBAEWSsOlLbjdRjijMmOnDc2RcLQ5PQC9pjUW+bzGR\n" + "KTJbf8Hf/wSdmHAam+UsIM6HzdQVi058dGyb8/NJQJD+9Dgv1m57x1prLerkt6xq\n" + "UQCYmOpMxCJOykLqzEUnou9WtL5FaD+wBlOuqWFy0Cy2O3LHXkSkaMR+gdxC4pkI\n" + "wSkI2SDdC0juvnoVI7iBaaIhYI/1FwV56hc6lxsAslf0NbtiiwhneVbHm5XRK1d4\n" + "tabVKwOHnEuDyAnZd1yM1EqXKz+NwBlhoKWhC0fVUByID5A2WGEejBJcW/lVrYft\n" + "4+sJpnwS+/VDS5yrDXMqMdYGE8TVMy7RsaoUdaeFQYv4Go48BBGDJB5uEkBJiSq8\n" + "ViZA4iEKujBa5zKJ+CZXy3D/eHLBKUL+ayc9dLeeFTPZU0jYb83kE1wtlnWwF4J1\n" + "8lUQI10nLFg+ALoZoAmFZej19XgbyG6im+ZRFuwrpV6F3HJRP+AMNInsLoQTuD9I\n" + "l2gftVaIU1MqUmVMBcUeeNXG1BZ9vRonKzAC4Otfk1B6aW4Lz0E+sZ+HfCMicD3j\n" + "N01KAeNZ64j8emgnLffurb7qUWbanTpMEzxrelBRufxJkXcn6BcFcxPBVgFnsMgF\n" + "tP7e7N/cm55pI8Et+Gjp+ORJetSio118yu9bf7etSAJWOS6tQ2Ac7JeKP+a8jsvq\n" + "Uyx7\n" + "-----END CERTIFICATE-----\n", + /* chain[1] (Class 3 CA) */ + "-----BEGIN CERTIFICATE-----\n" + "MIIGCDCCA/CgAwIBAgIBATANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290\n" + "IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB\n" + "IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA\n" + "Y2FjZXJ0Lm9yZzAeFw0wNTEwMTQwNzM2NTVaFw0zMzAzMjgwNzM2NTVaMFQxFDAS\n" + "BgNVBAoTC0NBY2VydCBJbmMuMR4wHAYDVQQLExVodHRwOi8vd3d3LkNBY2VydC5v\n" + "cmcxHDAaBgNVBAMTE0NBY2VydCBDbGFzcyAzIFJvb3QwggIiMA0GCSqGSIb3DQEB\n" + "AQUAA4ICDwAwggIKAoICAQCrSTURSHzSJn5TlM9Dqd0o10Iqi/OHeBlYfA+e2ol9\n" + "4fvrcpANdKGWZKufoCSZc9riVXbHF3v1BKxGuMO+f2SNEGwk82GcwPKQ+lHm9WkB\n" + "Y8MPVuJKQs/iRIwlKKjFeQl9RrmK8+nzNCkIReQcn8uUBByBqBSzmGXEQ+xOgo0J\n" + "0b2qW42S0OzekMV/CsLj6+YxWl50PpczWejDAz1gM7/30W9HxM3uYoNSbi4ImqTZ\n" + "FRiRpoWSR7CuSOtttyHshRpocjWr//AQXcD0lKdq1TuSfkyQBX6TwSyLpI5idBVx\n" + "bgtxA+qvFTia1NIFcm+M+SvrWnIl+TlG43IbPgTDZCciECqKT1inA62+tC4T7V2q\n" + "SNfVfdQqe1z6RgRQ5MwOQluM7dvyz/yWk+DbETZUYjQ4jwxgmzuXVjit89Jbi6Bb\n" + "6k6WuHzX1aCGcEDTkSm3ojyt9Yy7zxqSiuQ0e8DYbF/pCsLDpyCaWt8sXVJcukfV\n" + "m+8kKHA4IC/VfynAskEDaJLM4JzMl0tF7zoQCqtwOpiVcK01seqFK6QcgCExqa5g\n" + "eoAmSAC4AcCTY1UikTxW56/bOiXzjzFU6iaLgVn5odFTEcV7nQP2dBHgbbEsPyyG\n" + "kZlxmqZ3izRg0RS0LKydr4wQ05/EavhvE/xzWfdmQnQeiuP43NJvmJzLR5iVQAX7\n" + "6QIDAQABo4G/MIG8MA8GA1UdEwEB/wQFMAMBAf8wXQYIKwYBBQUHAQEEUTBPMCMG\n" + "CCsGAQUFBzABhhdodHRwOi8vb2NzcC5DQWNlcnQub3JnLzAoBggrBgEFBQcwAoYc\n" + "aHR0cDovL3d3dy5DQWNlcnQub3JnL2NhLmNydDBKBgNVHSAEQzBBMD8GCCsGAQQB\n" + "gZBKMDMwMQYIKwYBBQUHAgEWJWh0dHA6Ly93d3cuQ0FjZXJ0Lm9yZy9pbmRleC5w\n" + "aHA/aWQ9MTAwDQYJKoZIhvcNAQEEBQADggIBAH8IiKHaGlBJ2on7oQhy84r3HsQ6\n" + "tHlbIDCxRd7CXdNlafHCXVRUPIVfuXtCkcKZ/RtRm6tGpaEQU55tiKxzbiwzpvD0\n" + "nuB1wT6IRanhZkP+VlrRekF490DaSjrxC1uluxYG5sLnk7mFTZdPsR44Q4Dvmw2M\n" + "77inYACHV30eRBzLI++bPJmdr7UpHEV5FpZNJ23xHGzDwlVks7wU4vOkHx4y/CcV\n" + "Bc/dLq4+gmF78CEQGPZE6lM5+dzQmiDgxrvgu1pPxJnIB721vaLbLmINQjRBvP+L\n" + "ivVRIqqIMADisNS8vmW61QNXeZvo3MhN+FDtkaVSKKKs+zZYPumUK5FQhxvWXtaM\n" + "zPcPEAxSTtAWYeXlCmy/F8dyRlecmPVsYGN6b165Ti/Iubm7aoW8mA3t+T6XhDSU\n" + "rgCvoeXnkm5OvfPi2RSLXNLrAWygF6UtEOucekq9ve7O/e0iQKtwOIj1CodqwqsF\n" + "YMlIBdpTwd5Ed2qz8zw87YC8pjhKKSRf/lk7myV6VmMAZLldpGJ9VzZPrYPvH5JT\n" + "oI53V93lYRE9IwCQTDz6o2CTBKOvNfYOao9PSmCnhQVsRqGP9Md246FZV/dxssRu\n" + "FFxtbUFm3xuTsdQAw+7Lzzw9IYCpX2Nl/N3gX6T0K/CFcUHUZyX7GrGXrtaZghNB\n" + "0m6lG5kngOcLqagA\n" + "-----END CERTIFICATE-----\n", + /* chain[2] (Root CA) */ + "-----BEGIN CERTIFICATE-----\n" + "MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290\n" + "IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB\n" + "IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA\n" + "Y2FjZXJ0Lm9yZzAeFw0wMzAzMzAxMjI5NDlaFw0zMzAzMjkxMjI5NDlaMHkxEDAO\n" + "BgNVBAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEi\n" + "MCAGA1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJ\n" + "ARYSc3VwcG9ydEBjYWNlcnQub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC\n" + "CgKCAgEAziLA4kZ97DYoB1CW8qAzQIxL8TtmPzHlawI229Z89vGIj053NgVBlfkJ\n" + "8BLPRoZzYLdufujAWGSuzbCtRRcMY/pnCujW0r8+55jE8Ez64AO7NV1sId6eINm6\n" + "zWYyN3L69wj1x81YyY7nDl7qPv4coRQKFWyGhFtkZip6qUtTefWIonvuLwphK42y\n" + "fk1WpRPs6tqSnqxEQR5YYGUFZvjARL3LlPdCfgv3ZWiYUQXw8wWRBB0bF4LsyFe7\n" + "w2t6iPGwcswlWyCR7BYCEo8y6RcYSNDHBS4CMEK4JZwFaz+qOqfrU0j36NK2B5jc\n" + "G8Y0f3/JHIJ6BVgrCFvzOKKrF11myZjXnhCLotLddJr3cQxyYN/Nb5gznZY0dj4k\n" + "epKwDpUeb+agRThHqtdB7Uq3EvbXG4OKDy7YCbZZ16oE/9KTfWgu3YtLq1i6L43q\n" + "laegw1SJpfvbi1EinbLDvhG+LJGGi5Z4rSDTii8aP8bQUWWHIbEZAWV/RRyH9XzQ\n" + "QUxPKZgh/TMfdQwEUfoZd9vUFBzugcMd9Zi3aQaRIt0AUMyBMawSB3s42mhb5ivU\n" + "fslfrejrckzzAeVLIL+aplfKkQABi6F1ITe1Yw1nPkZPcCBnzsXWWdsC4PDSy826\n" + "YreQQejdIOQpvGQpQsgi3Hia/0PsmBsJUUtaWsJx8cTLc6nloQsCAwEAAaOCAc4w\n" + "ggHKMB0GA1UdDgQWBBQWtTIb1Mfz4OaO873SsDrusjkY0TCBowYDVR0jBIGbMIGY\n" + "gBQWtTIb1Mfz4OaO873SsDrusjkY0aF9pHsweTEQMA4GA1UEChMHUm9vdCBDQTEe\n" + "MBwGA1UECxMVaHR0cDovL3d3dy5jYWNlcnQub3JnMSIwIAYDVQQDExlDQSBDZXJ0\n" + "IFNpZ25pbmcgQXV0aG9yaXR5MSEwHwYJKoZIhvcNAQkBFhJzdXBwb3J0QGNhY2Vy\n" + "dC5vcmeCAQAwDwYDVR0TAQH/BAUwAwEB/zAyBgNVHR8EKzApMCegJaAjhiFodHRw\n" + "czovL3d3dy5jYWNlcnQub3JnL3Jldm9rZS5jcmwwMAYJYIZIAYb4QgEEBCMWIWh0\n" + "dHBzOi8vd3d3LmNhY2VydC5vcmcvcmV2b2tlLmNybDA0BglghkgBhvhCAQgEJxYl\n" + "aHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4LnBocD9pZD0xMDBWBglghkgBhvhC\n" + "AQ0ESRZHVG8gZ2V0IHlvdXIgb3duIGNlcnRpZmljYXRlIGZvciBGUkVFIGhlYWQg\n" + "b3ZlciB0byBodHRwOi8vd3d3LmNhY2VydC5vcmcwDQYJKoZIhvcNAQEEBQADggIB\n" + "ACjH7pyCArpcgBLKNQodgW+JapnM8mgPf6fhjViVPr3yBsOQWqy1YPaZQwGjiHCc\n" + "nWKdpIevZ1gNMDY75q1I08t0AoZxPuIrA2jxNGJARjtT6ij0rPtmlVOKTV39O9lg\n" + "18p5aTuxZZKmxoGCXJzN600BiqXfEVWqFcofN8CCmHBh22p8lqOOLlQ+TyGpkO/c\n" + "gr/c6EWtTZBzCDyUZbAEmXZ/4rzCahWqlwQ3JNgelE5tDlG+1sSPypZt90Pf6DBl\n" + "Jzt7u0NDY8RD97LsaMzhGY4i+5jhe1o+ATc7iwiwovOVThrLm82asduycPAtStvY\n" + "sONvRUgzEv/+PDIqVPfE94rwiCPCR/5kenHA0R6mY7AHfqQv0wGP3J8rtsYIqQ+T\n" + "SCX8Ev2fQtzzxD72V7DX3WnRBnc0CkvSyqD/HMaMyRa+xMwyN2hzXwj7UfdJUzYF\n" + "CpUCTPJ5GhD22Dp1nPMd8aINcGeGG7MW9S/lpOt5hvk9C8JzC6WZrG/8Z7jlLwum\n" + "GCSNe9FINSkYQKyTYOGWhlC0elnYjyELn8+CkcY7v2vcB5G5l1YjqrZslMZIBjzk\n" + "zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW\n" + "omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD\n" + "-----END CERTIFICATE-----\n", + NULL }; /* Test Certicom cert with ECC-SHA256 signature. */ static const char *ecc_cert[] = { - /* chain[0] (ECC cert) */ -"-----BEGIN CERTIFICATE-----\n" -"MIICbzCCAhSgAwIBAgIIZLkW6EZO5PQwCgYIKoZIzj0EAwIwgZsxFDASBgNVBAsT\n" -"C1NBTVBMRSBPTkxZMRcwFQYDVQQKEw5DZXJ0aWNvbSBDb3JwLjEQMA4GA1UEBxMH\n" -"VG9yb250bzEQMA4GA1UEBBMHT250YXJpbzE5MDcGA1UEAxMwdGxzLnNlY2cub3Jn\n" -"IEVDQyBzZWNwMjU2cjEgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQswCQYDVQQGEwJD\n" -"QTAeFw0wOTA1MDcwMDAwMDBaFw0xNTA1MDEwMDAwMDBaMIGYMRQwEgYDVQQLEwtT\n" -"QU1QTEUgT05MWTEXMBUGA1UEChMOQ2VydGljb20gQ29ycC4xEDAOBgNVBAcTB1Rv\n" -"cm9udG8xEDAOBgNVBAgTB09udGFyaW8xNjA0BgNVBAMTLXRscy5zZWNnLm9yZyBF\n" -"Q0Mgc2VjcDI1NnIxIFNlcnZlciBDZXJ0aWZpY2F0ZTELMAkGA1UEBhMCQ0EwWTAT\n" -"BgcqhkjOPQIBBggqhkjOPQMBBwNCAATf63kPhr3D6a2scrHWVr0oOXQMnBDT6Jv/\n" -"ifqzt4/xTbXsZNEyD96nyh82sk0tM+FVfBlsIwGc7vqBfyq0mC/Io0MwQTAOBgNV\n" -"HQ8BAf8EBAMCA4gwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwEwFwYDVR0RBBAwDoIM\n" -"dGxzLnNlY2cub3JnMAoGCCqGSM49BAMCA0kAMEYCIQDfacZHsdsj6SXQ2hyJS4Do\n" -"SMclqGLo2Sop7hfAeEJA+wIhAOMo7eLya44SIcuzrLBpg29g5ZzYOeuEzRcg9mch\n" -"AB1w\n" -"-----END CERTIFICATE-----\n", -"-----BEGIN CERTIFICATE-----\n" -"MIICTjCCAfagAwIBAgIICvq6Bj3Av6EwCQYHKoZIzj0EATCBmzEUMBIGA1UECxML\n" -"U0FNUExFIE9OTFkxFzAVBgNVBAoTDkNlcnRpY29tIENvcnAuMRAwDgYDVQQHEwdU\n" -"b3JvbnRvMRAwDgYDVQQEEwdPbnRhcmlvMTkwNwYDVQQDEzB0bHMuc2VjZy5vcmcg\n" -"RUNDIHNlY3AyNTZyMSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxCzAJBgNVBAYTAkNB\n" -"MB4XDTA2MDUwMTAwMDAwMFoXDTE1MDUwMTAwMDAwMFowgZsxFDASBgNVBAsTC1NB\n" -"TVBMRSBPTkxZMRcwFQYDVQQKEw5DZXJ0aWNvbSBDb3JwLjEQMA4GA1UEBxMHVG9y\n" -"b250bzEQMA4GA1UEBBMHT250YXJpbzE5MDcGA1UEAxMwdGxzLnNlY2cub3JnIEVD\n" -"QyBzZWNwMjU2cjEgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQswCQYDVQQGEwJDQTBZ\n" -"MBMGByqGSM49AgEGCCqGSM49AwEHA0IABB2oofFVa6akTK6hpaJLs+6skdhn0sQp\n" -"uJwVwG99T0VZY8v7q6NMIWrpYQFmOxQyVVNlxWWyr2cLYJTyqx/zuDejIzAhMA4G\n" -"A1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MAkGByqGSM49BAEDRwAwRAIg\n" -"W2KAhfAKWFoh47A7muk8K10cGqOKRtb9lCgdOltj19oCIG+ZJQv5m+RnL4X2Ti0y\n" -"ZJzOOuzBQVGiUFwZdn1dLv4X\n" -"-----END CERTIFICATE-----\n", - NULL + /* chain[0] (ECC cert) */ + "-----BEGIN CERTIFICATE-----\n" + "MIICbzCCAhSgAwIBAgIIZLkW6EZO5PQwCgYIKoZIzj0EAwIwgZsxFDASBgNVBAsT\n" + "C1NBTVBMRSBPTkxZMRcwFQYDVQQKEw5DZXJ0aWNvbSBDb3JwLjEQMA4GA1UEBxMH\n" + "VG9yb250bzEQMA4GA1UEBBMHT250YXJpbzE5MDcGA1UEAxMwdGxzLnNlY2cub3Jn\n" + "IEVDQyBzZWNwMjU2cjEgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQswCQYDVQQGEwJD\n" + "QTAeFw0wOTA1MDcwMDAwMDBaFw0xNTA1MDEwMDAwMDBaMIGYMRQwEgYDVQQLEwtT\n" + "QU1QTEUgT05MWTEXMBUGA1UEChMOQ2VydGljb20gQ29ycC4xEDAOBgNVBAcTB1Rv\n" + "cm9udG8xEDAOBgNVBAgTB09udGFyaW8xNjA0BgNVBAMTLXRscy5zZWNnLm9yZyBF\n" + "Q0Mgc2VjcDI1NnIxIFNlcnZlciBDZXJ0aWZpY2F0ZTELMAkGA1UEBhMCQ0EwWTAT\n" + "BgcqhkjOPQIBBggqhkjOPQMBBwNCAATf63kPhr3D6a2scrHWVr0oOXQMnBDT6Jv/\n" + "ifqzt4/xTbXsZNEyD96nyh82sk0tM+FVfBlsIwGc7vqBfyq0mC/Io0MwQTAOBgNV\n" + "HQ8BAf8EBAMCA4gwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwEwFwYDVR0RBBAwDoIM\n" + "dGxzLnNlY2cub3JnMAoGCCqGSM49BAMCA0kAMEYCIQDfacZHsdsj6SXQ2hyJS4Do\n" + "SMclqGLo2Sop7hfAeEJA+wIhAOMo7eLya44SIcuzrLBpg29g5ZzYOeuEzRcg9mch\n" + "AB1w\n" + "-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\n" + "MIICTjCCAfagAwIBAgIICvq6Bj3Av6EwCQYHKoZIzj0EATCBmzEUMBIGA1UECxML\n" + "U0FNUExFIE9OTFkxFzAVBgNVBAoTDkNlcnRpY29tIENvcnAuMRAwDgYDVQQHEwdU\n" + "b3JvbnRvMRAwDgYDVQQEEwdPbnRhcmlvMTkwNwYDVQQDEzB0bHMuc2VjZy5vcmcg\n" + "RUNDIHNlY3AyNTZyMSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxCzAJBgNVBAYTAkNB\n" + "MB4XDTA2MDUwMTAwMDAwMFoXDTE1MDUwMTAwMDAwMFowgZsxFDASBgNVBAsTC1NB\n" + "TVBMRSBPTkxZMRcwFQYDVQQKEw5DZXJ0aWNvbSBDb3JwLjEQMA4GA1UEBxMHVG9y\n" + "b250bzEQMA4GA1UEBBMHT250YXJpbzE5MDcGA1UEAxMwdGxzLnNlY2cub3JnIEVD\n" + "QyBzZWNwMjU2cjEgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQswCQYDVQQGEwJDQTBZ\n" + "MBMGByqGSM49AgEGCCqGSM49AwEHA0IABB2oofFVa6akTK6hpaJLs+6skdhn0sQp\n" + "uJwVwG99T0VZY8v7q6NMIWrpYQFmOxQyVVNlxWWyr2cLYJTyqx/zuDejIzAhMA4G\n" + "A1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MAkGByqGSM49BAEDRwAwRAIg\n" + "W2KAhfAKWFoh47A7muk8K10cGqOKRtb9lCgdOltj19oCIG+ZJQv5m+RnL4X2Ti0y\n" + "ZJzOOuzBQVGiUFwZdn1dLv4X\n" + "-----END CERTIFICATE-----\n", + NULL }; static const char *verisign_com_chain_g5[] = { - /* chain[0] */ - "-----BEGIN CERTIFICATE-----\n" - "MIIFXjCCBEagAwIBAgIQHYWDpKNVUzEFx4Pq8yjxbTANBgkqhkiG9w0BAQUFADCB\n" - "tTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" - "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n" - "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykxMDEvMC0GA1UEAxMm\n" - "VmVyaVNpZ24gQ2xhc3MgMyBTZWN1cmUgU2VydmVyIENBIC0gRzMwHhcNMTQwMjI3\n" - "MDAwMDAwWhcNMTUwMjI4MjM1OTU5WjBnMQswCQYDVQQGEwJVUzETMBEGA1UECBMK\n" - "V2FzaGluZ3RvbjEQMA4GA1UEBxQHU2VhdHRsZTEYMBYGA1UEChQPQW1hem9uLmNv\n" - "bSBJbmMuMRcwFQYDVQQDFA53d3cuYW1hem9uLmNvbTCCASIwDQYJKoZIhvcNAQEB\n" - "BQADggEPADCCAQoCggEBAJdfieOPrf4Arf1Iled/ii97407ZnjpaB5xxm49Q4Pz3\n" - "+5xmD0LYre7Cjn1A7W3ZlHki5zFVZpW9Jb/3PfSEDY5slyjkLD2jdl2gVefSthSZ\n" - "tYxb5eYv79tIEN0U9AZ8/VaGwUokl8n1MitcECxNLMe4LqoVmS29nXITTTzX5t3I\n" - "4dUeMBDNI+xgVpJSpxwzA+/L+wxoj5Sb4YJ/Y+iUknCkjX6PpaZMRWBEE0dqvG02\n" - "qlxXesAV0nmKYvjbtqAyoW6vgjP85h6gJEESIqTTZy1HOgFpO8XT05CpGDcjhP1s\n" - "TvXF7Vx1aj+xDidGLLW188G35oFKIhEyHQV2V7vzRAUCAwEAAaOCAbUwggGxMFAG\n" - "A1UdEQRJMEeCEXVlZGF0YS5hbWF6b24uY29tggphbWF6b24uY29tgghhbXpuLmNv\n" - "bYIMd3d3LmFtem4uY29tgg53d3cuYW1hem9uLmNvbTAJBgNVHRMEAjAAMA4GA1Ud\n" - "DwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwQwYDVR0g\n" - "BDwwOjA4BgpghkgBhvhFAQc2MCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZl\n" - "cmlzaWduLmNvbS9jcHMwHwYDVR0jBBgwFoAUDURcFlNEwYJ+HSCrJfQBY9i+eaUw\n" - "RQYDVR0fBD4wPDA6oDigNoY0aHR0cDovL1NWUlNlY3VyZS1HMy1jcmwudmVyaXNp\n" - "Z24uY29tL1NWUlNlY3VyZUczLmNybDB2BggrBgEFBQcBAQRqMGgwJAYIKwYBBQUH\n" - "MAGGGGh0dHA6Ly9vY3NwLnZlcmlzaWduLmNvbTBABggrBgEFBQcwAoY0aHR0cDov\n" - "L1NWUlNlY3VyZS1HMy1haWEudmVyaXNpZ24uY29tL1NWUlNlY3VyZUczLmNlcjAN\n" - "BgkqhkiG9w0BAQUFAAOCAQEAOeZfjkI0yR/nutCMHp5/uB/evkB8qIYxh1KKbhPB\n" - "TmpykmJxiLKrBBcBBu9kW5lMbNPSNclE4sCyN0dxCJHwPm7ubNUxsmDSTPTJOx0M\n" - "zl0WZVaZ7eX3nw1kj8jSoK0f5n87RzKK85MwBFsEn73Z2pDvxTcd72BE0T1UJLcU\n" - "2A5uHAJyvm2QpOWBIRKlJHIHCcu5xjj5yLnGO9id0cjOjEgj9f1Mo4hzawL5vQfk\n" - "o/xFxAsA70bk2trv54kgLvhmAW+B6OpN3Z/xB4mWNOw3G8bg/u+pCLvd8KRO5V8K\n" - "TlgO1NTaOgYC6OAF3USNMhuNZh6h5tWA3mA8rFr8ZsayhA==\n" - "-----END CERTIFICATE-----\n", - /* chain[1] */ - "-----BEGIN CERTIFICATE-----\n" - "MIIF7DCCBNSgAwIBAgIQbsx6pacDIAm4zrz06VLUkTANBgkqhkiG9w0BAQUFADCB\n" - "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" - "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n" - "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n" - "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n" - "aG9yaXR5IC0gRzUwHhcNMTAwMjA4MDAwMDAwWhcNMjAwMjA3MjM1OTU5WjCBtTEL\n" - "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n" - "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n" - "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykxMDEvMC0GA1UEAxMmVmVy\n" - "aVNpZ24gQ2xhc3MgMyBTZWN1cmUgU2VydmVyIENBIC0gRzMwggEiMA0GCSqGSIb3\n" - "DQEBAQUAA4IBDwAwggEKAoIBAQCxh4QfwgxF9byrJZenraI+nLr2wTm4i8rCrFbG\n" - "5btljkRPTc5v7QlK1K9OEJxoiy6Ve4mbE8riNDTB81vzSXtig0iBdNGIeGwCU/m8\n" - "f0MmV1gzgzszChew0E6RJK2GfWQS3HRKNKEdCuqWHQsV/KNLO85jiND4LQyUhhDK\n" - "tpo9yus3nABINYYpUHjoRWPNGUFP9ZXse5jUxHGzUL4os4+guVOc9cosI6n9FAbo\n" - "GLSa6Dxugf3kzTU2s1HTaewSulZub5tXxYsU5w7HnO1KVGrJTcW/EbGuHGeBy0RV\n" - "M5l/JJs/U0V/hhrzPPptf4H1uErT9YU3HLWm0AnkGHs4TvoPAgMBAAGjggHfMIIB\n" - "2zA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLnZlcmlz\n" - "aWduLmNvbTASBgNVHRMBAf8ECDAGAQH/AgEAMHAGA1UdIARpMGcwZQYLYIZIAYb4\n" - "RQEHFwMwVjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2Nw\n" - "czAqBggrBgEFBQcCAjAeGhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMDQG\n" - "A1UdHwQtMCswKaAnoCWGI2h0dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUu\n" - "Y3JsMA4GA1UdDwEB/wQEAwIBBjBtBggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglp\n" - "bWFnZS9naWYwITAfMAcGBSsOAwIaBBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNo\n" - "dHRwOi8vbG9nby52ZXJpc2lnbi5jb20vdnNsb2dvLmdpZjAoBgNVHREEITAfpB0w\n" - "GzEZMBcGA1UEAxMQVmVyaVNpZ25NUEtJLTItNjAdBgNVHQ4EFgQUDURcFlNEwYJ+\n" - "HSCrJfQBY9i+eaUwHwYDVR0jBBgwFoAUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwDQYJ\n" - "KoZIhvcNAQEFBQADggEBAAyDJO/dwwzZWJz+NrbrioBL0aP3nfPMU++CnqOh5pfB\n" - "WJ11bOAdG0z60cEtBcDqbrIicFXZIDNAMwfCZYP6j0M3m+oOmmxw7vacgDvZN/R6\n" - "bezQGH1JSsqZxxkoor7YdyT3hSaGbYcFQEFn0Sc67dxIHSLNCwuLvPSxe/20majp\n" - "dirhGi2HbnTTiN0eIsbfFrYrghQKlFzyUOyvzv9iNw2tZdMGQVPtAhTItVgooazg\n" - "W+yzf5VK+wPIrSbb5mZ4EkrZn0L74ZjmQoObj49nJOhhGbXdzbULJgWOw27EyHW4\n" - "Rs/iGAZeqa6ogZpHFt4MKGwlJ7net4RYxh84HqTEy2Y=\n" - "-----END CERTIFICATE-----\n", - /* chain[2] */ - "-----BEGIN CERTIFICATE-----\n" - "MIIExjCCBC+gAwIBAgIQNZcxh/OHOgcyfs5YDJt+2jANBgkqhkiG9w0BAQUFADBf\n" - "MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT\n" - "LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw\n" - "HhcNMDYxMTA4MDAwMDAwWhcNMjExMTA3MjM1OTU5WjCByjELMAkGA1UEBhMCVVMx\n" - "FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz\n" - "dCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZv\n" - "ciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAz\n" - "IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEi\n" - "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8\n" - "RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbext0uz/o9+B1fs70Pb\n" - "ZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhDY2pSS9KP6HBR\n" - "TdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/\n" - "Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNH\n" - "iDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMB\n" - "AAGjggGRMIIBjTAPBgNVHRMBAf8EBTADAQH/MDEGA1UdHwQqMCgwJqAkoCKGIGh0\n" - "dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA4GA1UdDwEB/wQEAwIBBjA9\n" - "BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVy\n" - "aXNpZ24uY29tL2NwczAdBgNVHQ4EFgQUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwNAYD\n" - "VR0lBC0wKwYJYIZIAYb4QgQBBgpghkgBhvhFAQgBBggrBgEFBQcDAQYIKwYBBQUH\n" - "AwIwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUr\n" - "DgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNp\n" - "Z24uY29tL3ZzbG9nby5naWYwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhho\n" - "dHRwOi8vb2NzcC52ZXJpc2lnbi5jb20wDQYJKoZIhvcNAQEFBQADgYEADyWuSO0b\n" - "M4VMDLXC1/5N1oMoTEFlYAALd0hxgv5/21oOIMzS6ke8ZEJhRDR0MIGBJopK90Rd\n" - "fjSAqLiD4gnXbSPdie0oCL1jWhFXCMSe2uJoKK/dUDzsgiHYAMJVRFBwQa2DF3m6\n" - "CPMr3u00HUSe0gST9MsFFy0JLS1j7/YmC3s=\n" - "-----END CERTIFICATE-----\n", - NULL, - /* chain[4] - alt CA */ - "-----BEGIN CERTIFICATE-----\n" - "MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB\n" - "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" - "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n" - "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n" - "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n" - "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL\n" - "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n" - "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln\n" - "biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp\n" - "U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y\n" - "aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1\n" - "nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex\n" - "t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz\n" - "SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG\n" - "BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+\n" - "rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/\n" - "NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E\n" - "BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH\n" - "BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy\n" - "aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv\n" - "MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE\n" - "p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y\n" - "5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK\n" - "WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ\n" - "4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N\n" - "hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq\n" - "-----END CERTIFICATE-----\n", - NULL + /* chain[0] */ + "-----BEGIN CERTIFICATE-----\n" + "MIIFXjCCBEagAwIBAgIQHYWDpKNVUzEFx4Pq8yjxbTANBgkqhkiG9w0BAQUFADCB\n" + "tTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" + "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n" + "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykxMDEvMC0GA1UEAxMm\n" + "VmVyaVNpZ24gQ2xhc3MgMyBTZWN1cmUgU2VydmVyIENBIC0gRzMwHhcNMTQwMjI3\n" + "MDAwMDAwWhcNMTUwMjI4MjM1OTU5WjBnMQswCQYDVQQGEwJVUzETMBEGA1UECBMK\n" + "V2FzaGluZ3RvbjEQMA4GA1UEBxQHU2VhdHRsZTEYMBYGA1UEChQPQW1hem9uLmNv\n" + "bSBJbmMuMRcwFQYDVQQDFA53d3cuYW1hem9uLmNvbTCCASIwDQYJKoZIhvcNAQEB\n" + "BQADggEPADCCAQoCggEBAJdfieOPrf4Arf1Iled/ii97407ZnjpaB5xxm49Q4Pz3\n" + "+5xmD0LYre7Cjn1A7W3ZlHki5zFVZpW9Jb/3PfSEDY5slyjkLD2jdl2gVefSthSZ\n" + "tYxb5eYv79tIEN0U9AZ8/VaGwUokl8n1MitcECxNLMe4LqoVmS29nXITTTzX5t3I\n" + "4dUeMBDNI+xgVpJSpxwzA+/L+wxoj5Sb4YJ/Y+iUknCkjX6PpaZMRWBEE0dqvG02\n" + "qlxXesAV0nmKYvjbtqAyoW6vgjP85h6gJEESIqTTZy1HOgFpO8XT05CpGDcjhP1s\n" + "TvXF7Vx1aj+xDidGLLW188G35oFKIhEyHQV2V7vzRAUCAwEAAaOCAbUwggGxMFAG\n" + "A1UdEQRJMEeCEXVlZGF0YS5hbWF6b24uY29tggphbWF6b24uY29tgghhbXpuLmNv\n" + "bYIMd3d3LmFtem4uY29tgg53d3cuYW1hem9uLmNvbTAJBgNVHRMEAjAAMA4GA1Ud\n" + "DwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwQwYDVR0g\n" + "BDwwOjA4BgpghkgBhvhFAQc2MCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZl\n" + "cmlzaWduLmNvbS9jcHMwHwYDVR0jBBgwFoAUDURcFlNEwYJ+HSCrJfQBY9i+eaUw\n" + "RQYDVR0fBD4wPDA6oDigNoY0aHR0cDovL1NWUlNlY3VyZS1HMy1jcmwudmVyaXNp\n" + "Z24uY29tL1NWUlNlY3VyZUczLmNybDB2BggrBgEFBQcBAQRqMGgwJAYIKwYBBQUH\n" + "MAGGGGh0dHA6Ly9vY3NwLnZlcmlzaWduLmNvbTBABggrBgEFBQcwAoY0aHR0cDov\n" + "L1NWUlNlY3VyZS1HMy1haWEudmVyaXNpZ24uY29tL1NWUlNlY3VyZUczLmNlcjAN\n" + "BgkqhkiG9w0BAQUFAAOCAQEAOeZfjkI0yR/nutCMHp5/uB/evkB8qIYxh1KKbhPB\n" + "TmpykmJxiLKrBBcBBu9kW5lMbNPSNclE4sCyN0dxCJHwPm7ubNUxsmDSTPTJOx0M\n" + "zl0WZVaZ7eX3nw1kj8jSoK0f5n87RzKK85MwBFsEn73Z2pDvxTcd72BE0T1UJLcU\n" + "2A5uHAJyvm2QpOWBIRKlJHIHCcu5xjj5yLnGO9id0cjOjEgj9f1Mo4hzawL5vQfk\n" + "o/xFxAsA70bk2trv54kgLvhmAW+B6OpN3Z/xB4mWNOw3G8bg/u+pCLvd8KRO5V8K\n" + "TlgO1NTaOgYC6OAF3USNMhuNZh6h5tWA3mA8rFr8ZsayhA==\n" + "-----END CERTIFICATE-----\n", + /* chain[1] */ + "-----BEGIN CERTIFICATE-----\n" + "MIIF7DCCBNSgAwIBAgIQbsx6pacDIAm4zrz06VLUkTANBgkqhkiG9w0BAQUFADCB\n" + "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" + "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n" + "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n" + "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n" + "aG9yaXR5IC0gRzUwHhcNMTAwMjA4MDAwMDAwWhcNMjAwMjA3MjM1OTU5WjCBtTEL\n" + "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n" + "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n" + "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykxMDEvMC0GA1UEAxMmVmVy\n" + "aVNpZ24gQ2xhc3MgMyBTZWN1cmUgU2VydmVyIENBIC0gRzMwggEiMA0GCSqGSIb3\n" + "DQEBAQUAA4IBDwAwggEKAoIBAQCxh4QfwgxF9byrJZenraI+nLr2wTm4i8rCrFbG\n" + "5btljkRPTc5v7QlK1K9OEJxoiy6Ve4mbE8riNDTB81vzSXtig0iBdNGIeGwCU/m8\n" + "f0MmV1gzgzszChew0E6RJK2GfWQS3HRKNKEdCuqWHQsV/KNLO85jiND4LQyUhhDK\n" + "tpo9yus3nABINYYpUHjoRWPNGUFP9ZXse5jUxHGzUL4os4+guVOc9cosI6n9FAbo\n" + "GLSa6Dxugf3kzTU2s1HTaewSulZub5tXxYsU5w7HnO1KVGrJTcW/EbGuHGeBy0RV\n" + "M5l/JJs/U0V/hhrzPPptf4H1uErT9YU3HLWm0AnkGHs4TvoPAgMBAAGjggHfMIIB\n" + "2zA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLnZlcmlz\n" + "aWduLmNvbTASBgNVHRMBAf8ECDAGAQH/AgEAMHAGA1UdIARpMGcwZQYLYIZIAYb4\n" + "RQEHFwMwVjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2Nw\n" + "czAqBggrBgEFBQcCAjAeGhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMDQG\n" + "A1UdHwQtMCswKaAnoCWGI2h0dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUu\n" + "Y3JsMA4GA1UdDwEB/wQEAwIBBjBtBggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglp\n" + "bWFnZS9naWYwITAfMAcGBSsOAwIaBBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNo\n" + "dHRwOi8vbG9nby52ZXJpc2lnbi5jb20vdnNsb2dvLmdpZjAoBgNVHREEITAfpB0w\n" + "GzEZMBcGA1UEAxMQVmVyaVNpZ25NUEtJLTItNjAdBgNVHQ4EFgQUDURcFlNEwYJ+\n" + "HSCrJfQBY9i+eaUwHwYDVR0jBBgwFoAUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwDQYJ\n" + "KoZIhvcNAQEFBQADggEBAAyDJO/dwwzZWJz+NrbrioBL0aP3nfPMU++CnqOh5pfB\n" + "WJ11bOAdG0z60cEtBcDqbrIicFXZIDNAMwfCZYP6j0M3m+oOmmxw7vacgDvZN/R6\n" + "bezQGH1JSsqZxxkoor7YdyT3hSaGbYcFQEFn0Sc67dxIHSLNCwuLvPSxe/20majp\n" + "dirhGi2HbnTTiN0eIsbfFrYrghQKlFzyUOyvzv9iNw2tZdMGQVPtAhTItVgooazg\n" + "W+yzf5VK+wPIrSbb5mZ4EkrZn0L74ZjmQoObj49nJOhhGbXdzbULJgWOw27EyHW4\n" + "Rs/iGAZeqa6ogZpHFt4MKGwlJ7net4RYxh84HqTEy2Y=\n" + "-----END CERTIFICATE-----\n", + /* chain[2] */ + "-----BEGIN CERTIFICATE-----\n" + "MIIExjCCBC+gAwIBAgIQNZcxh/OHOgcyfs5YDJt+2jANBgkqhkiG9w0BAQUFADBf\n" + "MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT\n" + "LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw\n" + "HhcNMDYxMTA4MDAwMDAwWhcNMjExMTA3MjM1OTU5WjCByjELMAkGA1UEBhMCVVMx\n" + "FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz\n" + "dCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZv\n" + "ciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAz\n" + "IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEi\n" + "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8\n" + "RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbext0uz/o9+B1fs70Pb\n" + "ZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhDY2pSS9KP6HBR\n" + "TdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/\n" + "Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNH\n" + "iDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMB\n" + "AAGjggGRMIIBjTAPBgNVHRMBAf8EBTADAQH/MDEGA1UdHwQqMCgwJqAkoCKGIGh0\n" + "dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA4GA1UdDwEB/wQEAwIBBjA9\n" + "BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVy\n" + "aXNpZ24uY29tL2NwczAdBgNVHQ4EFgQUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwNAYD\n" + "VR0lBC0wKwYJYIZIAYb4QgQBBgpghkgBhvhFAQgBBggrBgEFBQcDAQYIKwYBBQUH\n" + "AwIwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUr\n" + "DgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNp\n" + "Z24uY29tL3ZzbG9nby5naWYwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhho\n" + "dHRwOi8vb2NzcC52ZXJpc2lnbi5jb20wDQYJKoZIhvcNAQEFBQADgYEADyWuSO0b\n" + "M4VMDLXC1/5N1oMoTEFlYAALd0hxgv5/21oOIMzS6ke8ZEJhRDR0MIGBJopK90Rd\n" + "fjSAqLiD4gnXbSPdie0oCL1jWhFXCMSe2uJoKK/dUDzsgiHYAMJVRFBwQa2DF3m6\n" + "CPMr3u00HUSe0gST9MsFFy0JLS1j7/YmC3s=\n" + "-----END CERTIFICATE-----\n", + NULL, + /* chain[4] - alt CA */ + "-----BEGIN CERTIFICATE-----\n" + "MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB\n" + "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n" + "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n" + "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n" + "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n" + "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL\n" + "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n" + "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln\n" + "biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp\n" + "U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y\n" + "aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1\n" + "nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex\n" + "t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz\n" + "SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG\n" + "BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+\n" + "rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/\n" + "NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E\n" + "BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH\n" + "BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy\n" + "aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv\n" + "MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE\n" + "p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y\n" + "5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK\n" + "WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ\n" + "4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N\n" + "hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq\n" + "-----END CERTIFICATE-----\n", + NULL }; /* TLS feature extension chains */ @@ -3592,7 +3593,6 @@ static const char *tls_feat_no_ext[] = { NULL }; - /* Intermediate has a subset of the CA's list */ static const char *tls_feat_inter_subset_fail[] = { "-----BEGIN CERTIFICATE-----\n" @@ -3672,7 +3672,6 @@ static const char *tls_feat_inter_subset_fail[] = { NULL }; - /* Intermediate has unrelated values to the CA's */ static const char *tls_feat_inter_unrelated_fail[] = { "-----BEGIN CERTIFICATE-----\n" @@ -3752,7 +3751,7 @@ static const char *tls_feat_inter_unrelated_fail[] = { NULL }; - /* All feat extensions ok */ +/* All feat extensions ok */ static const char *tls_feat_ok[] = { "-----BEGIN CERTIFICATE-----\n" "MIIEPzCCAqegAwIBAgIMV2q1gxhOXfKDif2GMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" @@ -4262,189 +4261,321 @@ static const char *rsa_sha1_not_in_trusted_ca[] = { }; #if defined __clang__ || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-variable" +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunused-variable" #endif -static struct -{ - const char *name; - const char **chain; - const char **ca; - unsigned int verify_flags; - unsigned int expected_verify_result; - const char *purpose; - time_t expected_time; - unsigned notfips; -} chains[] = -{ - { "CVE-2014-0092", cve_2014_0092_check, &cve_2014_0092_check[1], - 0, - GNUTLS_CERT_SIGNER_NOT_CA | GNUTLS_CERT_INVALID, NULL, 1412850586}, - { "CVE-2008-4989", cve_2008_4989_chain, &cve_2008_4989_chain[2], - GNUTLS_VERIFY_ALLOW_BROKEN, - GNUTLS_CERT_SIGNER_NOT_FOUND | GNUTLS_CERT_EXPIRED | GNUTLS_CERT_INVALID, NULL}, - { "amazon.com ok", verisign_com_chain_g5, &verisign_com_chain_g5[4], - GNUTLS_VERIFY_ALLOW_BROKEN | GNUTLS_VERIFY_DISABLE_TIME_CHECKS | GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_LOW), - 0, NULL}, - { "verisign.com v1 fail", verisign_com_chain, &verisign_com_chain[3], - GNUTLS_VERIFY_ALLOW_BROKEN, - GNUTLS_CERT_EXPIRED | GNUTLS_CERT_INVALID, NULL}, - { "verisign.com v1 ok", verisign_com_chain, &verisign_com_chain[3], - GNUTLS_VERIFY_ALLOW_BROKEN | GNUTLS_VERIFY_DISABLE_TIME_CHECKS | GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_LOW), - 0, NULL}, - { "verisign.com v1 not ok due to profile", verisign_com_chain, &verisign_com_chain[3], - GNUTLS_VERIFY_DISABLE_TIME_CHECKS | GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_LEGACY), - GNUTLS_CERT_INSECURE_ALGORITHM | GNUTLS_CERT_INVALID, NULL}, - { "verisign.com v1 not ok due to profile", verisign_com_chain, &verisign_com_chain[3], - GNUTLS_VERIFY_DISABLE_TIME_CHECKS | GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_HIGH), - GNUTLS_CERT_INSECURE_ALGORITHM | GNUTLS_CERT_INVALID, NULL}, - { "citibank.com v1 fail", citibank_com_chain, &citibank_com_chain[2], - GNUTLS_VERIFY_ALLOW_BROKEN | GNUTLS_VERIFY_DO_NOT_ALLOW_X509_V1_CA_CRT, GNUTLS_CERT_SIGNER_NOT_CA | GNUTLS_CERT_INVALID, NULL}, - { "expired self signed", pem_self_cert, &pem_self_cert[0], - 0, GNUTLS_CERT_EXPIRED | GNUTLS_CERT_INVALID, NULL}, - { "self signed", pem_self_cert, &pem_self_cert[0], - GNUTLS_VERIFY_DISABLE_TIME_CHECKS, 0, NULL}, - { "ca=false", thea_chain, &thea_chain[1], - GNUTLS_VERIFY_ALLOW_BROKEN, - GNUTLS_CERT_SIGNER_NOT_CA | GNUTLS_CERT_INVALID, NULL}, - { "ca=false2", thea_chain, &thea_chain[1], - GNUTLS_VERIFY_ALLOW_BROKEN, GNUTLS_CERT_SIGNER_NOT_CA | GNUTLS_CERT_INVALID, NULL}, - { "hbci v1 fail", hbci_chain, &hbci_chain[2], - GNUTLS_VERIFY_ALLOW_BROKEN | GNUTLS_VERIFY_DO_NOT_ALLOW_X509_V1_CA_CRT, GNUTLS_CERT_SIGNER_NOT_CA | GNUTLS_CERT_INVALID, NULL}, - { "hbci v1 ok expired", hbci_chain, &hbci_chain[2], - GNUTLS_VERIFY_ALLOW_BROKEN, - GNUTLS_CERT_EXPIRED | GNUTLS_CERT_INVALID, NULL}, - { "hbci v1 ok", hbci_chain, &hbci_chain[2], - GNUTLS_VERIFY_ALLOW_BROKEN|GNUTLS_VERIFY_DISABLE_TIME_CHECKS, - 0, NULL}, - { "rsa-md5 fail", mayfirst_chain, &mayfirst_chain[1], - GNUTLS_VERIFY_DISABLE_TIME_CHECKS, - GNUTLS_CERT_INSECURE_ALGORITHM | GNUTLS_CERT_INVALID, NULL}, - { "rsa-md5 not ok", mayfirst_chain, &mayfirst_chain[1], - GNUTLS_VERIFY_DISABLE_TIME_CHECKS | GNUTLS_VERIFY_ALLOW_SIGN_RSA_MD2, - GNUTLS_CERT_INSECURE_ALGORITHM | GNUTLS_CERT_INVALID, NULL}, - { "rsa-md5 not ok2", mayfirst_chain, &mayfirst_chain[1], - GNUTLS_VERIFY_ALLOW_SIGN_RSA_MD5, - GNUTLS_CERT_EXPIRED | GNUTLS_CERT_INVALID, NULL}, - { "rsa-md5 ok", mayfirst_chain, &mayfirst_chain[1], - GNUTLS_VERIFY_DISABLE_TIME_CHECKS | GNUTLS_VERIFY_ALLOW_SIGN_RSA_MD5, 0, NULL}, - { "rsa-md5 ok - allow broken", mayfirst_chain, &mayfirst_chain[1], - GNUTLS_VERIFY_DISABLE_TIME_CHECKS | GNUTLS_VERIFY_ALLOW_BROKEN, 0, NULL}, - { "v1ca fail", v1ca, &v1ca[2], - GNUTLS_VERIFY_ALLOW_BROKEN|GNUTLS_VERIFY_DO_NOT_ALLOW_X509_V1_CA_CRT, GNUTLS_CERT_SIGNER_NOT_CA | GNUTLS_CERT_INVALID, NULL}, +static struct { + const char *name; + const char **chain; + const char **ca; + unsigned int verify_flags; + unsigned int expected_verify_result; + const char *purpose; + time_t expected_time; + unsigned notfips; +} chains[] = { + { "CVE-2014-0092", cve_2014_0092_check, &cve_2014_0092_check[1], 0, + GNUTLS_CERT_SIGNER_NOT_CA | GNUTLS_CERT_INVALID, NULL, 1412850586 }, + { "CVE-2008-4989", cve_2008_4989_chain, &cve_2008_4989_chain[2], + GNUTLS_VERIFY_ALLOW_BROKEN, + GNUTLS_CERT_SIGNER_NOT_FOUND | GNUTLS_CERT_EXPIRED | + GNUTLS_CERT_INVALID, + NULL }, + { "amazon.com ok", verisign_com_chain_g5, &verisign_com_chain_g5[4], + GNUTLS_VERIFY_ALLOW_BROKEN | GNUTLS_VERIFY_DISABLE_TIME_CHECKS | + GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_LOW), + 0, NULL }, + { "verisign.com v1 fail", verisign_com_chain, &verisign_com_chain[3], + GNUTLS_VERIFY_ALLOW_BROKEN, GNUTLS_CERT_EXPIRED | GNUTLS_CERT_INVALID, + NULL }, + { "verisign.com v1 ok", verisign_com_chain, &verisign_com_chain[3], + GNUTLS_VERIFY_ALLOW_BROKEN | GNUTLS_VERIFY_DISABLE_TIME_CHECKS | + GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_LOW), + 0, NULL }, + { "verisign.com v1 not ok due to profile", verisign_com_chain, + &verisign_com_chain[3], + GNUTLS_VERIFY_DISABLE_TIME_CHECKS | + GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_LEGACY), + GNUTLS_CERT_INSECURE_ALGORITHM | GNUTLS_CERT_INVALID, NULL }, + { "verisign.com v1 not ok due to profile", verisign_com_chain, + &verisign_com_chain[3], + GNUTLS_VERIFY_DISABLE_TIME_CHECKS | + GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_HIGH), + GNUTLS_CERT_INSECURE_ALGORITHM | GNUTLS_CERT_INVALID, NULL }, + { "citibank.com v1 fail", citibank_com_chain, &citibank_com_chain[2], + GNUTLS_VERIFY_ALLOW_BROKEN | + GNUTLS_VERIFY_DO_NOT_ALLOW_X509_V1_CA_CRT, + GNUTLS_CERT_SIGNER_NOT_CA | GNUTLS_CERT_INVALID, NULL }, + { "expired self signed", pem_self_cert, &pem_self_cert[0], 0, + GNUTLS_CERT_EXPIRED | GNUTLS_CERT_INVALID, NULL }, + { "self signed", pem_self_cert, &pem_self_cert[0], + GNUTLS_VERIFY_DISABLE_TIME_CHECKS, 0, NULL }, + { "ca=false", thea_chain, &thea_chain[1], GNUTLS_VERIFY_ALLOW_BROKEN, + GNUTLS_CERT_SIGNER_NOT_CA | GNUTLS_CERT_INVALID, NULL }, + { "ca=false2", thea_chain, &thea_chain[1], GNUTLS_VERIFY_ALLOW_BROKEN, + GNUTLS_CERT_SIGNER_NOT_CA | GNUTLS_CERT_INVALID, NULL }, + { "hbci v1 fail", hbci_chain, &hbci_chain[2], + GNUTLS_VERIFY_ALLOW_BROKEN | + GNUTLS_VERIFY_DO_NOT_ALLOW_X509_V1_CA_CRT, + GNUTLS_CERT_SIGNER_NOT_CA | GNUTLS_CERT_INVALID, NULL }, + { "hbci v1 ok expired", hbci_chain, &hbci_chain[2], + GNUTLS_VERIFY_ALLOW_BROKEN, GNUTLS_CERT_EXPIRED | GNUTLS_CERT_INVALID, + NULL }, + { "hbci v1 ok", hbci_chain, &hbci_chain[2], + GNUTLS_VERIFY_ALLOW_BROKEN | GNUTLS_VERIFY_DISABLE_TIME_CHECKS, 0, + NULL }, + { "rsa-md5 fail", mayfirst_chain, &mayfirst_chain[1], + GNUTLS_VERIFY_DISABLE_TIME_CHECKS, + GNUTLS_CERT_INSECURE_ALGORITHM | GNUTLS_CERT_INVALID, NULL }, + { "rsa-md5 not ok", mayfirst_chain, &mayfirst_chain[1], + GNUTLS_VERIFY_DISABLE_TIME_CHECKS | GNUTLS_VERIFY_ALLOW_SIGN_RSA_MD2, + GNUTLS_CERT_INSECURE_ALGORITHM | GNUTLS_CERT_INVALID, NULL }, + { "rsa-md5 not ok2", mayfirst_chain, &mayfirst_chain[1], + GNUTLS_VERIFY_ALLOW_SIGN_RSA_MD5, + GNUTLS_CERT_EXPIRED | GNUTLS_CERT_INVALID, NULL }, + { "rsa-md5 ok", mayfirst_chain, &mayfirst_chain[1], + GNUTLS_VERIFY_DISABLE_TIME_CHECKS | GNUTLS_VERIFY_ALLOW_SIGN_RSA_MD5, + 0, NULL }, + { "rsa-md5 ok - allow broken", mayfirst_chain, &mayfirst_chain[1], + GNUTLS_VERIFY_DISABLE_TIME_CHECKS | GNUTLS_VERIFY_ALLOW_BROKEN, 0, + NULL }, + { "v1ca fail", v1ca, &v1ca[2], + GNUTLS_VERIFY_ALLOW_BROKEN | + GNUTLS_VERIFY_DO_NOT_ALLOW_X509_V1_CA_CRT, + GNUTLS_CERT_SIGNER_NOT_CA | GNUTLS_CERT_INVALID, NULL }, - { "pathlen fail", pathlen_check, &pathlen_check[2], - GNUTLS_VERIFY_ALLOW_ANY_X509_V1_CA_CRT | GNUTLS_VERIFY_DISABLE_TIME_CHECKS, GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE, NULL}, + { "pathlen fail", pathlen_check, &pathlen_check[2], + GNUTLS_VERIFY_ALLOW_ANY_X509_V1_CA_CRT | + GNUTLS_VERIFY_DISABLE_TIME_CHECKS, + GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE, NULL }, - /* Test whether a V1 root certificate is correctly accepted */ - { "v1root fail", v1_root_check, &v1_root_check[1], - GNUTLS_VERIFY_DO_NOT_ALLOW_X509_V1_CA_CRT | GNUTLS_VERIFY_DISABLE_TIME_CHECKS, GNUTLS_CERT_SIGNER_NOT_CA | GNUTLS_CERT_INVALID, NULL}, - { "v1root ok", v1_root_check, &v1_root_check[1], - GNUTLS_VERIFY_DISABLE_TIME_CHECKS, 0, NULL}, + /* Test whether a V1 root certificate is correctly accepted */ + { "v1root fail", v1_root_check, &v1_root_check[1], + GNUTLS_VERIFY_DO_NOT_ALLOW_X509_V1_CA_CRT | + GNUTLS_VERIFY_DISABLE_TIME_CHECKS, + GNUTLS_CERT_SIGNER_NOT_CA | GNUTLS_CERT_INVALID, NULL }, + { "v1root ok", v1_root_check, &v1_root_check[1], + GNUTLS_VERIFY_DISABLE_TIME_CHECKS, 0, NULL }, - /* test whether a v1 intermediate certificate is rejected */ - { "v1invalid fail", v1_intermed_check, &v1_intermed_check[2], - GNUTLS_VERIFY_DISABLE_TIME_CHECKS, GNUTLS_CERT_SIGNER_NOT_CA | GNUTLS_CERT_INVALID, NULL}, - { "v1 leaf ok", &v1_intermed_check[1], &v1_intermed_check[2], - GNUTLS_VERIFY_DISABLE_TIME_CHECKS, 0, NULL}, + /* test whether a v1 intermediate certificate is rejected */ + { "v1invalid fail", v1_intermed_check, &v1_intermed_check[2], + GNUTLS_VERIFY_DISABLE_TIME_CHECKS, + GNUTLS_CERT_SIGNER_NOT_CA | GNUTLS_CERT_INVALID, NULL }, + { "v1 leaf ok", &v1_intermed_check[1], &v1_intermed_check[2], + GNUTLS_VERIFY_DISABLE_TIME_CHECKS, 0, NULL }, - { "v1ca expired", v1ca, &v1ca[2], - GNUTLS_VERIFY_ALLOW_BROKEN, - GNUTLS_CERT_EXPIRED | GNUTLS_CERT_INVALID , NULL}, - { "v1ca (sha1) ok - allow broken", v1ca, &v1ca[2], /* check GNUTLS_VERIFY_ALLOW_BROKEN */ - GNUTLS_VERIFY_ALLOW_BROKEN|GNUTLS_VERIFY_DISABLE_TIME_CHECKS, - 0, NULL}, - { "v1ca (sha1) ok - allow sha1", v1ca, &v1ca[2], /* check GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1 */ - GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1|GNUTLS_VERIFY_DISABLE_TIME_CHECKS, - 0, NULL}, - { "v1ca2 expired", v1ca, &v1ca[2], - GNUTLS_VERIFY_ALLOW_BROKEN|GNUTLS_VERIFY_ALLOW_ANY_X509_V1_CA_CRT, - GNUTLS_CERT_EXPIRED | GNUTLS_CERT_INVALID, NULL}, - { "v1ca2 ok", v1ca, &v1ca[2], - GNUTLS_VERIFY_ALLOW_BROKEN|GNUTLS_VERIFY_DISABLE_TIME_CHECKS | GNUTLS_VERIFY_ALLOW_ANY_X509_V1_CA_CRT, - 0, NULL}, - { "cacertrsamd5 fail", cacertrsamd5, &cacertrsamd5[2], - 0, GNUTLS_CERT_INSECURE_ALGORITHM | GNUTLS_CERT_INVALID, NULL}, - { "cacertrsamd5 ok", cacertrsamd5, &cacertrsamd5[2], - GNUTLS_VERIFY_ALLOW_BROKEN, 0, NULL}, - { "cacertrsamd5 short-cut not ok", cacertrsamd5, &cacertrsamd5[0], - GNUTLS_VERIFY_DO_NOT_ALLOW_SAME, - GNUTLS_CERT_SIGNER_NOT_FOUND | GNUTLS_CERT_INSECURE_ALGORITHM | GNUTLS_CERT_INVALID, NULL}, - { "cacertrsamd5 short-cut ok", cacertrsamd5, &cacertrsamd5[1], - GNUTLS_VERIFY_ALLOW_BROKEN, 0, NULL}, - { "ecc cert ok", ecc_cert, &ecc_cert[1], GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_HIGH), 0, NULL}, - { "ecc cert ok", ecc_cert, &ecc_cert[1], GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_SUITEB128), 0, NULL}, - { "ecc cert not ok (due to profile)", ecc_cert, &ecc_cert[1], GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_ULTRA), - GNUTLS_CERT_INSECURE_ALGORITHM | GNUTLS_CERT_INVALID, NULL}, - { "ecc cert not ok (due to profile)", ecc_cert, &ecc_cert[1], GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_SUITEB192), - GNUTLS_CERT_INSECURE_ALGORITHM | GNUTLS_CERT_INVALID, NULL}, - { "name constraints: empty CN, empty SAN, permitted dns range", nc_good0, &nc_good0[2], 0, 0, 0, 1427270515}, - { "name constraints: dns in permitted range", nc_good1, &nc_good1[4], 0, 0, NULL, 1412850586}, - { "name constraints: ipv6 in permitted range", nc_good2, &nc_good2[4], 0, 0, NULL, 1467193927}, - { "name constraints: 2 constraints (dns, dns), non-intuitive order", nc_bad0, &nc_bad0[3], 0, GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE, NULL, 1468920734}, - { "name constraints: empty CN, empty excluded dns", nc_bad1, &nc_bad1[2], 0, GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE, NULL, 1412850586}, - { "name constraints: multiple dns constraints, empty intersection", nc_bad2, &nc_bad2[4], 0, GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE, NULL, 1412850586}, - { "name constraints: dns excluded range", nc_bad3, &nc_bad3[2], 0, GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE, NULL, 1412850586}, - { "name constraints: basic dns intersection", nc_bad4, &nc_bad4[3], 0, GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE, NULL, 1412850586}, - { "name constraints: IP in excluded range", nc_bad5, &nc_bad5[2], 0, GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE, NULL, 1469540953}, - { "name constraints: 2 constraints (dns, email), non-intuitive order", nc_bad6, &nc_bad6[3], 0, GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE, NULL, 1469540953}, - { "not-modified", modified2, &modified2[3], GNUTLS_VERIFY_ALLOW_BROKEN, 0, NULL, 1412850586}, - { "kp-interm", kp_fail1, &kp_fail1[3], 0, GNUTLS_CERT_INVALID | GNUTLS_CERT_PURPOSE_MISMATCH, GNUTLS_KP_TLS_WWW_SERVER, 1412850586}, - { "kp-fin", kp_fail2, &kp_fail2[3], 0, GNUTLS_CERT_INVALID | GNUTLS_CERT_PURPOSE_MISMATCH, GNUTLS_KP_TLS_WWW_SERVER, 1412850586}, - { "kp-ok", kp_ok, &kp_ok[3], 0, 0, GNUTLS_KP_OCSP_SIGNING, 1412850586}, - { "tls features - intermediate no ext", tls_feat_inter_no_ext, &tls_feat_inter_no_ext[3], 0, GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE|GNUTLS_CERT_INVALID, 0, 1466612070}, - { "tls features - end no ext", tls_feat_no_ext, &tls_feat_no_ext[3], 0, GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE|GNUTLS_CERT_INVALID, 0, 1466612070}, - { "tls features - intermediate is subset", tls_feat_inter_subset_fail, &tls_feat_inter_subset_fail[3], 0, GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE|GNUTLS_CERT_INVALID, 0, 1466612070}, - { "tls features - intermediate has unrelated vals", tls_feat_inter_unrelated_fail, &tls_feat_inter_unrelated_fail[3], 0, GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE|GNUTLS_CERT_INVALID, 0, 1466612070}, - { "tls features - end is superset", tls_feat_superset, &tls_feat_superset[3], 0, 0, 0, 1466612070}, - { "tls features - ok", tls_feat_ok, &tls_feat_ok[3], 0, 0, 0, 1466612070}, - { "unknown crit extension on root - fail", unknown_critical_extension_on_root, &unknown_critical_extension_on_root[3], 0, GNUTLS_CERT_INVALID | GNUTLS_CERT_UNKNOWN_CRIT_EXTENSIONS, GNUTLS_KP_TLS_WWW_SERVER, 1488365541}, - { "unknown crit extension on root - success", unknown_critical_extension_on_root, &unknown_critical_extension_on_root[3], GNUTLS_VERIFY_IGNORE_UNKNOWN_CRIT_EXTENSIONS, 0, GNUTLS_KP_TLS_WWW_SERVER, 1488365541}, - { "unknown crit extension on intermediate - fail", unknown_critical_extension_on_intermediate, &unknown_critical_extension_on_intermediate[3], 0, GNUTLS_CERT_INVALID | GNUTLS_CERT_UNKNOWN_CRIT_EXTENSIONS, GNUTLS_KP_TLS_WWW_SERVER, 1488365541}, - { "unknown crit extension on intermediate - success", unknown_critical_extension_on_intermediate, &unknown_critical_extension_on_intermediate[3], GNUTLS_VERIFY_IGNORE_UNKNOWN_CRIT_EXTENSIONS, 0, GNUTLS_KP_TLS_WWW_SERVER, 1488365541}, - { "unknown crit extension on endcert - fail", unknown_critical_extension_on_endcert, &unknown_critical_extension_on_endcert[3], 0, GNUTLS_CERT_INVALID | GNUTLS_CERT_UNKNOWN_CRIT_EXTENSIONS, GNUTLS_KP_TLS_WWW_SERVER, 1488365541}, - { "unknown crit extension on endcert - success", unknown_critical_extension_on_endcert, &unknown_critical_extension_on_endcert[3], GNUTLS_VERIFY_IGNORE_UNKNOWN_CRIT_EXTENSIONS, 0, GNUTLS_KP_TLS_WWW_SERVER, 1488365541}, - { "rsa pss: invalid self sig - fail", rsa_pss_invalid_self_sig, &rsa_pss_invalid_self_sig[0], GNUTLS_VERIFY_DO_NOT_ALLOW_SAME, GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE, 0, 1501138253}, - { "rsa pss: invalid chain with pkcs#1 1.5 sig - fail", rsa_pss_invalid_chain_with_pkcs1_sig, &rsa_pss_invalid_chain_with_pkcs1_sig[2], 0, GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE, 0, 1501138253}, - { "rsa pss: invalid chain with wrong hash (sha384-sha256) - fail", rsa_pss_invalid_chain_with_wrong_hash, &rsa_pss_invalid_chain_with_wrong_hash[3], 0, GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE, 0, 1501138253}, - { "rsa pss: smaller salt in sig than spki - fail", rsa_pss_chain_smaller_salt_in_sig_fail, &rsa_pss_chain_smaller_salt_in_sig_fail[3], 0, GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE, 0, 1550005473}, - { "rsa pss: chain with sha1 hash - fail", rsa_pss_chain_with_sha1_fail, &rsa_pss_chain_with_sha1_fail[3], 0, GNUTLS_CERT_INVALID, 0, 1501159136}, - { "rsa pss: chain with different mgf hash - fail", rsa_pss_chain_with_diff_mgf_oid_fail, &rsa_pss_chain_with_diff_mgf_oid_fail[3], 0, GNUTLS_CERT_INVALID, 0, 1501159136}, - { "rsa pss: chain with sha256 - ok", rsa_pss_chain_sha256_ok, &rsa_pss_chain_sha256_ok[3], 0, 0, 0, 1501138253}, - { "rsa pss: chain with sha384 - ok", rsa_pss_chain_sha384_ok, &rsa_pss_chain_sha384_ok[3], 0, 0, 0, 1501138253}, - { "rsa pss: chain with sha512 - ok", rsa_pss_chain_sha512_ok, &rsa_pss_chain_sha512_ok[3], 0, 0, 0, 1501138253}, - { "rsa pss: chain with increasing salt size - ok", rsa_pss_chain_increasing_salt_size_ok, &rsa_pss_chain_increasing_salt_size_ok[3], 0, 0, 0, 1501159136}, - { "rsa pss: chain with alternating signatures - ok", rsa_pss_chain_pkcs11_pss_pkcs1_ok, &rsa_pss_chain_pkcs11_pss_pkcs1_ok[3], 0, 0, 0, 1501159136}, - { "rsa pss: chain with changing hashes - ok", rsa_pss_chain_sha512_sha384_sha256_ok, &rsa_pss_chain_sha512_sha384_sha256_ok[3], 0, 0, 0, 1501159136}, - { "no subject id: chain with missing subject id, but valid auth id - ok", chain_with_no_subject_id_in_ca_ok, &chain_with_no_subject_id_in_ca_ok[4], 0, 0, 0, 1537518468}, + { "v1ca expired", v1ca, &v1ca[2], GNUTLS_VERIFY_ALLOW_BROKEN, + GNUTLS_CERT_EXPIRED | GNUTLS_CERT_INVALID, NULL }, + { "v1ca (sha1) ok - allow broken", v1ca, + &v1ca[2], /* check GNUTLS_VERIFY_ALLOW_BROKEN */ + GNUTLS_VERIFY_ALLOW_BROKEN | GNUTLS_VERIFY_DISABLE_TIME_CHECKS, 0, + NULL }, + { "v1ca (sha1) ok - allow sha1", v1ca, + &v1ca[2], /* check GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1 */ + GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1 | + GNUTLS_VERIFY_DISABLE_TIME_CHECKS, + 0, NULL }, + { "v1ca2 expired", v1ca, &v1ca[2], + GNUTLS_VERIFY_ALLOW_BROKEN | GNUTLS_VERIFY_ALLOW_ANY_X509_V1_CA_CRT, + GNUTLS_CERT_EXPIRED | GNUTLS_CERT_INVALID, NULL }, + { "v1ca2 ok", v1ca, &v1ca[2], + GNUTLS_VERIFY_ALLOW_BROKEN | GNUTLS_VERIFY_DISABLE_TIME_CHECKS | + GNUTLS_VERIFY_ALLOW_ANY_X509_V1_CA_CRT, + 0, NULL }, + { "cacertrsamd5 fail", cacertrsamd5, &cacertrsamd5[2], 0, + GNUTLS_CERT_INSECURE_ALGORITHM | GNUTLS_CERT_INVALID, NULL }, + { "cacertrsamd5 ok", cacertrsamd5, &cacertrsamd5[2], + GNUTLS_VERIFY_ALLOW_BROKEN, 0, NULL }, + { "cacertrsamd5 short-cut not ok", cacertrsamd5, &cacertrsamd5[0], + GNUTLS_VERIFY_DO_NOT_ALLOW_SAME, + GNUTLS_CERT_SIGNER_NOT_FOUND | GNUTLS_CERT_INSECURE_ALGORITHM | + GNUTLS_CERT_INVALID, + NULL }, + { "cacertrsamd5 short-cut ok", cacertrsamd5, &cacertrsamd5[1], + GNUTLS_VERIFY_ALLOW_BROKEN, 0, NULL }, + { "ecc cert ok", ecc_cert, &ecc_cert[1], + GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_HIGH), 0, NULL }, + { "ecc cert ok", ecc_cert, &ecc_cert[1], + GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_SUITEB128), 0, NULL }, + { "ecc cert not ok (due to profile)", ecc_cert, &ecc_cert[1], + GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_ULTRA), + GNUTLS_CERT_INSECURE_ALGORITHM | GNUTLS_CERT_INVALID, NULL }, + { "ecc cert not ok (due to profile)", ecc_cert, &ecc_cert[1], + GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_SUITEB192), + GNUTLS_CERT_INSECURE_ALGORITHM | GNUTLS_CERT_INVALID, NULL }, + { "name constraints: empty CN, empty SAN, permitted dns range", + nc_good0, &nc_good0[2], 0, 0, 0, 1427270515 }, + { "name constraints: dns in permitted range", nc_good1, &nc_good1[4], 0, + 0, NULL, 1412850586 }, + { "name constraints: ipv6 in permitted range", nc_good2, &nc_good2[4], + 0, 0, NULL, 1467193927 }, + { "name constraints: 2 constraints (dns, dns), non-intuitive order", + nc_bad0, &nc_bad0[3], 0, + GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE, NULL, + 1468920734 }, + { "name constraints: empty CN, empty excluded dns", nc_bad1, + &nc_bad1[2], 0, + GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE, NULL, + 1412850586 }, + { "name constraints: multiple dns constraints, empty intersection", + nc_bad2, &nc_bad2[4], 0, + GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE, NULL, + 1412850586 }, + { "name constraints: dns excluded range", nc_bad3, &nc_bad3[2], 0, + GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE, NULL, + 1412850586 }, + { "name constraints: basic dns intersection", nc_bad4, &nc_bad4[3], 0, + GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE, NULL, + 1412850586 }, + { "name constraints: IP in excluded range", nc_bad5, &nc_bad5[2], 0, + GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE, NULL, + 1469540953 }, + { "name constraints: 2 constraints (dns, email), non-intuitive order", + nc_bad6, &nc_bad6[3], 0, + GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE, NULL, + 1469540953 }, + { "not-modified", modified2, &modified2[3], GNUTLS_VERIFY_ALLOW_BROKEN, + 0, NULL, 1412850586 }, + { "kp-interm", kp_fail1, &kp_fail1[3], 0, + GNUTLS_CERT_INVALID | GNUTLS_CERT_PURPOSE_MISMATCH, + GNUTLS_KP_TLS_WWW_SERVER, 1412850586 }, + { "kp-fin", kp_fail2, &kp_fail2[3], 0, + GNUTLS_CERT_INVALID | GNUTLS_CERT_PURPOSE_MISMATCH, + GNUTLS_KP_TLS_WWW_SERVER, 1412850586 }, + { "kp-ok", kp_ok, &kp_ok[3], 0, 0, GNUTLS_KP_OCSP_SIGNING, 1412850586 }, + { "tls features - intermediate no ext", tls_feat_inter_no_ext, + &tls_feat_inter_no_ext[3], 0, + GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE | GNUTLS_CERT_INVALID, 0, + 1466612070 }, + { "tls features - end no ext", tls_feat_no_ext, &tls_feat_no_ext[3], 0, + GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE | GNUTLS_CERT_INVALID, 0, + 1466612070 }, + { "tls features - intermediate is subset", tls_feat_inter_subset_fail, + &tls_feat_inter_subset_fail[3], 0, + GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE | GNUTLS_CERT_INVALID, 0, + 1466612070 }, + { "tls features - intermediate has unrelated vals", + tls_feat_inter_unrelated_fail, &tls_feat_inter_unrelated_fail[3], 0, + GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE | GNUTLS_CERT_INVALID, 0, + 1466612070 }, + { "tls features - end is superset", tls_feat_superset, + &tls_feat_superset[3], 0, 0, 0, 1466612070 }, + { "tls features - ok", tls_feat_ok, &tls_feat_ok[3], 0, 0, 0, + 1466612070 }, + { "unknown crit extension on root - fail", + unknown_critical_extension_on_root, + &unknown_critical_extension_on_root[3], 0, + GNUTLS_CERT_INVALID | GNUTLS_CERT_UNKNOWN_CRIT_EXTENSIONS, + GNUTLS_KP_TLS_WWW_SERVER, 1488365541 }, + { "unknown crit extension on root - success", + unknown_critical_extension_on_root, + &unknown_critical_extension_on_root[3], + GNUTLS_VERIFY_IGNORE_UNKNOWN_CRIT_EXTENSIONS, 0, + GNUTLS_KP_TLS_WWW_SERVER, 1488365541 }, + { "unknown crit extension on intermediate - fail", + unknown_critical_extension_on_intermediate, + &unknown_critical_extension_on_intermediate[3], 0, + GNUTLS_CERT_INVALID | GNUTLS_CERT_UNKNOWN_CRIT_EXTENSIONS, + GNUTLS_KP_TLS_WWW_SERVER, 1488365541 }, + { "unknown crit extension on intermediate - success", + unknown_critical_extension_on_intermediate, + &unknown_critical_extension_on_intermediate[3], + GNUTLS_VERIFY_IGNORE_UNKNOWN_CRIT_EXTENSIONS, 0, + GNUTLS_KP_TLS_WWW_SERVER, 1488365541 }, + { "unknown crit extension on endcert - fail", + unknown_critical_extension_on_endcert, + &unknown_critical_extension_on_endcert[3], 0, + GNUTLS_CERT_INVALID | GNUTLS_CERT_UNKNOWN_CRIT_EXTENSIONS, + GNUTLS_KP_TLS_WWW_SERVER, 1488365541 }, + { "unknown crit extension on endcert - success", + unknown_critical_extension_on_endcert, + &unknown_critical_extension_on_endcert[3], + GNUTLS_VERIFY_IGNORE_UNKNOWN_CRIT_EXTENSIONS, 0, + GNUTLS_KP_TLS_WWW_SERVER, 1488365541 }, + { "rsa pss: invalid self sig - fail", rsa_pss_invalid_self_sig, + &rsa_pss_invalid_self_sig[0], GNUTLS_VERIFY_DO_NOT_ALLOW_SAME, + GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE, 0, + 1501138253 }, + { "rsa pss: invalid chain with pkcs#1 1.5 sig - fail", + rsa_pss_invalid_chain_with_pkcs1_sig, + &rsa_pss_invalid_chain_with_pkcs1_sig[2], 0, + GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE, 0, + 1501138253 }, + { "rsa pss: invalid chain with wrong hash (sha384-sha256) - fail", + rsa_pss_invalid_chain_with_wrong_hash, + &rsa_pss_invalid_chain_with_wrong_hash[3], 0, + GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE, 0, + 1501138253 }, + { "rsa pss: smaller salt in sig than spki - fail", + rsa_pss_chain_smaller_salt_in_sig_fail, + &rsa_pss_chain_smaller_salt_in_sig_fail[3], 0, + GNUTLS_CERT_INVALID | GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE, 0, + 1550005473 }, + { "rsa pss: chain with sha1 hash - fail", rsa_pss_chain_with_sha1_fail, + &rsa_pss_chain_with_sha1_fail[3], 0, GNUTLS_CERT_INVALID, 0, + 1501159136 }, + { "rsa pss: chain with different mgf hash - fail", + rsa_pss_chain_with_diff_mgf_oid_fail, + &rsa_pss_chain_with_diff_mgf_oid_fail[3], 0, GNUTLS_CERT_INVALID, 0, + 1501159136 }, + { "rsa pss: chain with sha256 - ok", rsa_pss_chain_sha256_ok, + &rsa_pss_chain_sha256_ok[3], 0, 0, 0, 1501138253 }, + { "rsa pss: chain with sha384 - ok", rsa_pss_chain_sha384_ok, + &rsa_pss_chain_sha384_ok[3], 0, 0, 0, 1501138253 }, + { "rsa pss: chain with sha512 - ok", rsa_pss_chain_sha512_ok, + &rsa_pss_chain_sha512_ok[3], 0, 0, 0, 1501138253 }, + { "rsa pss: chain with increasing salt size - ok", + rsa_pss_chain_increasing_salt_size_ok, + &rsa_pss_chain_increasing_salt_size_ok[3], 0, 0, 0, 1501159136 }, + { "rsa pss: chain with alternating signatures - ok", + rsa_pss_chain_pkcs11_pss_pkcs1_ok, + &rsa_pss_chain_pkcs11_pss_pkcs1_ok[3], 0, 0, 0, 1501159136 }, + { "rsa pss: chain with changing hashes - ok", + rsa_pss_chain_sha512_sha384_sha256_ok, + &rsa_pss_chain_sha512_sha384_sha256_ok[3], 0, 0, 0, 1501159136 }, + { "no subject id: chain with missing subject id, but valid auth id - ok", + chain_with_no_subject_id_in_ca_ok, + &chain_with_no_subject_id_in_ca_ok[4], 0, 0, 0, 1537518468 }, #ifdef ENABLE_GOST - { "gost 34.10-01 - ok", gost01, &gost01[2], GNUTLS_VERIFY_ALLOW_BROKEN, 0, 0, 1466612070, 1}, - { "gost 34.10-01 - not ok (due to gostr94)", gost01, &gost01[2], 0, - GNUTLS_CERT_INSECURE_ALGORITHM | GNUTLS_CERT_INVALID, NULL, 1466612070, 1}, - { "gost 34.10-01 - not ok (due to profile)", gost01, &gost01[2], GNUTLS_VERIFY_ALLOW_BROKEN|GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_ULTRA), - GNUTLS_CERT_INSECURE_ALGORITHM | GNUTLS_CERT_INVALID, NULL, 1466612070, 1}, - { "gost 34.10-12-256 - ok", gost12_256, &gost12_256[0], 0, 0, 0, 1466612070, 1}, - { "gost 34.10-12-512 - ok", gost12_512, &gost12_512[0], 0, 0, 0, 1466612070, 1}, + { "gost 34.10-01 - ok", gost01, &gost01[2], GNUTLS_VERIFY_ALLOW_BROKEN, + 0, 0, 1466612070, 1 }, + { "gost 34.10-01 - not ok (due to gostr94)", gost01, &gost01[2], 0, + GNUTLS_CERT_INSECURE_ALGORITHM | GNUTLS_CERT_INVALID, NULL, + 1466612070, 1 }, + { "gost 34.10-01 - not ok (due to profile)", gost01, &gost01[2], + GNUTLS_VERIFY_ALLOW_BROKEN | + GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_ULTRA), + GNUTLS_CERT_INSECURE_ALGORITHM | GNUTLS_CERT_INVALID, NULL, + 1466612070, 1 }, + { "gost 34.10-12-256 - ok", gost12_256, &gost12_256[0], 0, 0, 0, + 1466612070, 1 }, + { "gost 34.10-12-512 - ok", gost12_512, &gost12_512[0], 0, 0, 0, + 1466612070, 1 }, #endif - { "rsa-512 - not ok (due to profile)", rsa_512, &rsa_512[0], GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_MEDIUM), - GNUTLS_CERT_INSECURE_ALGORITHM | GNUTLS_CERT_INVALID, NULL, 1576759855, 1}, - { "ed448 - ok", ed448, &ed448[0], GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_ULTRA), - 0, NULL, 1584352960, 1}, - { "superseding - ok", superseding, superseding_ca, 0, 0, 0, 1590928011 }, - { "rsa-sha1 in trusted - ok", - rsa_sha1_in_trusted, rsa_sha1_in_trusted_ca, - GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_MEDIUM), - 0, NULL, 1620052390, 1}, - { "rsa-sha1 not in trusted - not ok", - rsa_sha1_not_in_trusted, rsa_sha1_not_in_trusted_ca, - GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_MEDIUM), - GNUTLS_CERT_INSECURE_ALGORITHM | GNUTLS_CERT_INVALID, NULL, 1620118136, 1}, - { NULL, NULL, NULL, 0, 0} + { "rsa-512 - not ok (due to profile)", rsa_512, &rsa_512[0], + GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_MEDIUM), + GNUTLS_CERT_INSECURE_ALGORITHM | GNUTLS_CERT_INVALID, NULL, + 1576759855, 1 }, + { "ed448 - ok", ed448, &ed448[0], + GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_ULTRA), 0, NULL, 1584352960, + 1 }, + { "superseding - ok", superseding, superseding_ca, 0, 0, 0, + 1590928011 }, + { "rsa-sha1 in trusted - ok", rsa_sha1_in_trusted, + rsa_sha1_in_trusted_ca, + GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_MEDIUM), 0, NULL, 1620052390, + 1 }, + { "rsa-sha1 not in trusted - not ok", rsa_sha1_not_in_trusted, + rsa_sha1_not_in_trusted_ca, + GNUTLS_PROFILE_TO_VFLAGS(GNUTLS_PROFILE_MEDIUM), + GNUTLS_CERT_INSECURE_ALGORITHM | GNUTLS_CERT_INVALID, NULL, + 1620118136, 1 }, + { NULL, NULL, NULL, 0, 0 } }; #if defined __clang__ || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) -# pragma GCC diagnostic pop +#pragma GCC diagnostic pop #endif -#endif /* GNUTLS_TESTS_TEST_CHAINS_H */ +#endif /* GNUTLS_TESTS_TEST_CHAINS_H */ diff --git a/tests/time.c b/tests/time.c index b97befed61..5415bfd6fe 100644 --- a/tests/time.c +++ b/tests/time.c @@ -24,7 +24,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -44,24 +44,14 @@ struct time_tests_st { }; struct time_tests_st general_time_tests[] = { - { - .time_str = "20190520133237Z", - .utime = 1558359157}, - { - .time_str = "20170101000000Z", - .utime = 1483228800}, - { - .time_str = "19700101000000Z", - .utime = 0}, + { .time_str = "20190520133237Z", .utime = 1558359157 }, + { .time_str = "20170101000000Z", .utime = 1483228800 }, + { .time_str = "19700101000000Z", .utime = 0 }, }; struct time_tests_st utc_time_tests[] = { - { - .time_str = "190520133237", - .utime = 1558359157}, - { - .time_str = "170101000000Z", - .utime = 1483228800}, + { .time_str = "190520133237", .utime = 1558359157 }, + { .time_str = "170101000000Z", .utime = 1483228800 }, }; void doit(void) @@ -72,8 +62,8 @@ void doit(void) for (i = 0; i < sizeof(general_time_tests) / sizeof(general_time_tests[0]); i++) { - t = _gnutls_x509_generalTime2gtime(general_time_tests - [i].time_str); + t = _gnutls_x509_generalTime2gtime( + general_time_tests[i].time_str); if (t != general_time_tests[i].utime) { fprintf(stderr, "%s: Error in GeneralTime conversion\n", general_time_tests[i].time_str); @@ -82,7 +72,8 @@ void doit(void) } } - for (i = 0; i < sizeof(utc_time_tests) / sizeof(utc_time_tests[0]); i++) { + for (i = 0; i < sizeof(utc_time_tests) / sizeof(utc_time_tests[0]); + i++) { t = _gnutls_utcTime2gtime(utc_time_tests[i].time_str); if (t != utc_time_tests[i].utime) { fprintf(stderr, "%s: Error in utcTime conversion\n", diff --git a/tests/tls-channel-binding.c b/tests/tls-channel-binding.c index 311e39f8cf..2b81f8c42b 100644 --- a/tests/tls-channel-binding.c +++ b/tests/tls-channel-binding.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -46,15 +46,14 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -static int -check_binding_data(gnutls_session_t client, gnutls_session_t server, - int cbtype, const char *cbname, int negative) +static int check_binding_data(gnutls_session_t client, gnutls_session_t server, + int cbtype, const char *cbname, int negative) { gnutls_datum_t client_cb = { 0 }; gnutls_datum_t server_cb = { 0 }; - if (gnutls_session_channel_binding(client, cbtype, &client_cb) - != GNUTLS_E_SUCCESS) { + if (gnutls_session_channel_binding(client, cbtype, &client_cb) != + GNUTLS_E_SUCCESS) { if (negative == 0) { fail("Cannot get client binding %s\n", cbname); return 1; @@ -63,8 +62,8 @@ check_binding_data(gnutls_session_t client, gnutls_session_t server, fail("Client retrieval of %s was supposed to fail\n", cbname); return 1; } - if (gnutls_session_channel_binding(server, cbtype, &server_cb) - != GNUTLS_E_SUCCESS) { + if (gnutls_session_channel_binding(server, cbtype, &server_cb) != + GNUTLS_E_SUCCESS) { if (negative == 0) { fail("Cannot get server binding %s\n", cbname); return -1; @@ -78,11 +77,12 @@ check_binding_data(gnutls_session_t client, gnutls_session_t server, return 0; if (server_cb.size != client_cb.size && client_cb.size > 0) { - fail("%s wrong binding data length: %d:%d\n", - cbname, client_cb.size, server_cb.size); + fail("%s wrong binding data length: %d:%d\n", cbname, + client_cb.size, server_cb.size); return 2; } - if (gnutls_memcmp(client_cb.data, server_cb.data, client_cb.size) != 0) { + if (gnutls_memcmp(client_cb.data, server_cb.data, client_cb.size) != + 0) { fail("%s wrong binding data content\n", cbname); return -2; } @@ -91,8 +91,8 @@ check_binding_data(gnutls_session_t client, gnutls_session_t server, return 0; } -static int -serv_psk_func(gnutls_session_t session, const char *user, gnutls_datum_t * pass) +static int serv_psk_func(gnutls_session_t session, const char *user, + gnutls_datum_t *pass) { pass->size = 4; pass->data = gnutls_malloc(pass->size); @@ -103,9 +103,8 @@ serv_psk_func(gnutls_session_t session, const char *user, gnutls_datum_t * pass) return 0; } -static void -tls_setup_peers(gnutls_session_t * client, gnutls_session_t * server, - const char *cprio, const char *sprio, int raw) +static void tls_setup_peers(gnutls_session_t *client, gnutls_session_t *server, + const char *cprio, const char *sprio, int raw) { gnutls_certificate_credentials_t clientx509cred; gnutls_certificate_credentials_t serverx509cred; @@ -126,11 +125,9 @@ tls_setup_peers(gnutls_session_t * client, gnutls_session_t * server, /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); if (raw) - gnutls_certificate_set_rawpk_key_mem(serverx509cred, - &rawpk_public_key1, - &rawpk_private_key1, - GNUTLS_X509_FMT_PEM, NULL, - 0, NULL, 0, 0); + gnutls_certificate_set_rawpk_key_mem( + serverx509cred, &rawpk_public_key1, &rawpk_private_key1, + GNUTLS_X509_FMT_PEM, NULL, 0, NULL, 0, 0); else gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, &server_key, @@ -206,8 +203,7 @@ static void tlsv13_binding(void) success("testing TLSv1.3 x509 channel binding\n"); - tls_setup_peers(&client, &server, - "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", + tls_setup_peers(&client, &server, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", "NORMAL:+VERS-TLS1.3", 0); if (gnutls_protocol_get_version(client) != GNUTLS_TLS1_3) @@ -246,10 +242,11 @@ static void rawv13_binding(void) success("testing TLSv1.3 RAWPK channel binding\n"); - tls_setup_peers(&client, &server, - "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519:+CTYPE-ALL", - "NORMAL:+VERS-TLS1.3:+ANON-ECDH:+ANON-DH:+ECDHE-RSA:+DHE-RSA:+RSA:+ECDHE-ECDSA:+CURVE-X25519:+SIGN-EDDSA-ED25519:+CTYPE-ALL", - 1); + tls_setup_peers( + &client, &server, + "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519:+CTYPE-ALL", + "NORMAL:+VERS-TLS1.3:+ANON-ECDH:+ANON-DH:+ECDHE-RSA:+DHE-RSA:+RSA:+ECDHE-ECDSA:+CURVE-X25519:+SIGN-EDDSA-ED25519:+CTYPE-ALL", + 1); if (gnutls_protocol_get_version(client) != GNUTLS_TLS1_3) fail("TLS1.3 was not negotiated\n"); @@ -268,8 +265,7 @@ static void rawv13_binding(void) /* tls-server-end-point testing, undefined for anon and psk */ if (check_binding_data(client, server, GNUTLS_CB_TLS_SERVER_END_POINT, "tls-server-end-point", 1) == 0) - success - ("binding fail: tls-server-end-point invalid for rawpk\n"); + success("binding fail: tls-server-end-point invalid for rawpk\n"); /* tls-exporter testing, take both sides and compare */ if (check_binding_data(client, server, GNUTLS_CB_TLS_EXPORTER, @@ -309,8 +305,7 @@ static void pskv13_binding(void) /* tls-server-end-point testing, undefined for anon and psk */ if (check_binding_data(client, server, GNUTLS_CB_TLS_SERVER_END_POINT, "tls-server-end-point", 1) == 0) - success - ("binding fail: tls-server-end-point invalid for anon\n"); + success("binding fail: tls-server-end-point invalid for anon\n"); /* tls-exporter testing, take both sides and compare */ if (check_binding_data(client, server, GNUTLS_CB_TLS_EXPORTER, @@ -390,8 +385,7 @@ static void anon12_binding(void) /* tls-server-end-point testing, undefined for anon and psk */ if (check_binding_data(client, server, GNUTLS_CB_TLS_SERVER_END_POINT, "tls-server-end-point", 1) == 0) - success - ("binding fail: tls-server-end-point invalid for anon\n"); + success("binding fail: tls-server-end-point invalid for anon\n"); /* tls-exporter testing, take both sides and compare */ if (check_binding_data(client, server, GNUTLS_CB_TLS_EXPORTER, @@ -431,8 +425,7 @@ static void pskv12_binding(void) /* tls-server-end-point testing, undefined for anon and psk */ if (check_binding_data(client, server, GNUTLS_CB_TLS_SERVER_END_POINT, "tls-server-end-point", 1) == 0) - success - ("binding fail: tls-server-end-point invalid for anon\n"); + success("binding fail: tls-server-end-point invalid for anon\n"); /* tls-exporter testing, take both sides and compare */ if (check_binding_data(client, server, GNUTLS_CB_TLS_EXPORTER, diff --git a/tests/tls-client-with-seccomp.c b/tests/tls-client-with-seccomp.c index a51df74c2f..0d04d71ba1 100644 --- a/tests/tls-client-with-seccomp.c +++ b/tests/tls-client-with-seccomp.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,19 +35,19 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include "cert-common.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "cert-common.h" +#include "utils.h" static void terminate(void); @@ -61,7 +61,7 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd, const char *prio) { @@ -101,8 +101,7 @@ static void client(int fd, const char *prio) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -115,8 +114,8 @@ static void client(int fd, const char *prio) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { ret = gnutls_record_recv(session, buffer, sizeof(buffer) - 1); @@ -137,7 +136,7 @@ static void client(int fd, const char *prio) gnutls_strerror(ret)); } - end: +end: close(fd); @@ -178,9 +177,8 @@ static void server(int fd, const char *prio) gnutls_certificate_allocate_credentials(&xcred); - ret = gnutls_certificate_set_x509_key_mem(xcred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + xcred, &server_cert, &server_key, GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -198,8 +196,7 @@ static void server(int fd, const char *prio) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -212,8 +209,8 @@ static void server(int fd, const char *prio) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* see the Getting peer's information example */ /* print_info(session); */ @@ -248,8 +245,7 @@ static void server(int fd, const char *prio) success("server: finished\n"); } -static -void run(const char *name, const char *prio) +static void run(const char *name, const char *prio) { int fd[2]; int ret; @@ -291,4 +287,4 @@ void doit(void) run("tls1.3", "NORMAL:-VERS-ALL:+VERS-TLS1.3"); run("default", "NORMAL"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls-crt_type-neg.c b/tests/tls-crt_type-neg.c index 74be3fcba2..a67905bac3 100644 --- a/tests/tls-crt_type-neg.c +++ b/tests/tls-crt_type-neg.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* This program tests the certificate type negotiation mechanism for @@ -40,8 +40,7 @@ test_case_st tests[] = { /* Tests with only a single credential set for client/server. * Tests for X.509 cases. */ - { - /* Default case A + { /* Default case A * * Priority cli: NORMAL * Priority srv: NORMAL @@ -50,15 +49,14 @@ test_case_st tests[] = { * Handshake: should complete without errors * Negotiation: cert types should default to X.509 */ - .name = "Default case A. Creds set (CLI/SRV): None/X509.", - .client_prio = "NORMAL", - .server_prio = "NORMAL", - .set_cli_creds = CRED_EMPTY, - .set_srv_creds = CRED_X509, - .expected_cli_ctype = GNUTLS_CRT_X509, - .expected_srv_ctype = GNUTLS_CRT_X509}, - { - /* Default case B + .name = "Default case A. Creds set (CLI/SRV): None/X509.", + .client_prio = "NORMAL", + .server_prio = "NORMAL", + .set_cli_creds = CRED_EMPTY, + .set_srv_creds = CRED_X509, + .expected_cli_ctype = GNUTLS_CRT_X509, + .expected_srv_ctype = GNUTLS_CRT_X509 }, + { /* Default case B * * Priority: NORMAL * Cli creds: X.509 @@ -66,16 +64,14 @@ test_case_st tests[] = { * Handshake: should complete without errors * Negotiation: cert types should default to X.509 */ - .name = - "Default case B. Creds set (CLI/SRV): X509/X509. No cli cert asked.", - .client_prio = "NORMAL", - .server_prio = "NORMAL", - .set_cli_creds = CRED_X509, - .set_srv_creds = CRED_X509, - .expected_cli_ctype = GNUTLS_CRT_X509, - .expected_srv_ctype = GNUTLS_CRT_X509}, - { - /* Default case C + .name = "Default case B. Creds set (CLI/SRV): X509/X509. No cli cert asked.", + .client_prio = "NORMAL", + .server_prio = "NORMAL", + .set_cli_creds = CRED_X509, + .set_srv_creds = CRED_X509, + .expected_cli_ctype = GNUTLS_CRT_X509, + .expected_srv_ctype = GNUTLS_CRT_X509 }, + { /* Default case C * * Priority: NORMAL * Cli creds: X.509 @@ -83,17 +79,15 @@ test_case_st tests[] = { * Handshake: should complete without errors * Negotiation: cert types should default to X.509 */ - .name = - "Default case C. Creds set (CLI/SRV): X509/X509. Cli cert asked.", - .client_prio = "NORMAL", - .server_prio = "NORMAL", - .set_cli_creds = CRED_X509, - .set_srv_creds = CRED_X509, - .expected_cli_ctype = GNUTLS_CRT_X509, - .expected_srv_ctype = GNUTLS_CRT_X509, - .request_cli_crt = true}, - { - /* No server credentials + .name = "Default case C. Creds set (CLI/SRV): X509/X509. Cli cert asked.", + .client_prio = "NORMAL", + .server_prio = "NORMAL", + .set_cli_creds = CRED_X509, + .set_srv_creds = CRED_X509, + .expected_cli_ctype = GNUTLS_CRT_X509, + .expected_srv_ctype = GNUTLS_CRT_X509, + .request_cli_crt = true }, + { /* No server credentials * * Priority: NORMAL * Cli creds: None @@ -101,15 +95,14 @@ test_case_st tests[] = { * Handshake: results in errors * Negotiation: cert types are not evaluated */ - .name = "No server creds. Creds set (CLI/SRV): None/None.", - .client_prio = "NORMAL", - .server_prio = "NORMAL", - .set_cli_creds = CRED_EMPTY, - .set_srv_creds = CRED_EMPTY, - .client_err = GNUTLS_E_AGAIN, - .server_err = GNUTLS_E_NO_CIPHER_SUITES}, - { - /* Explicit cli/srv ctype negotiation, cli creds x509, srv creds x509 + .name = "No server creds. Creds set (CLI/SRV): None/None.", + .client_prio = "NORMAL", + .server_prio = "NORMAL", + .set_cli_creds = CRED_EMPTY, + .set_srv_creds = CRED_EMPTY, + .client_err = GNUTLS_E_AGAIN, + .server_err = GNUTLS_E_NO_CIPHER_SUITES }, + { /* Explicit cli/srv ctype negotiation, cli creds x509, srv creds x509 * * Priority: NORMAL + request x509 for cli and srv * Cli creds: X.509 @@ -119,16 +112,14 @@ test_case_st tests[] = { * we advertise with only the cert type defaults. Extensions * will therefore not be activated. */ - .name = - "Negotiate CLI X.509 + SRV X.509. Creds set (CLI/SRV): X.509/X.509.", - .client_prio = "NORMAL:+CTYPE-CLI-X509:+CTYPE-SRV-X509", - .server_prio = "NORMAL:+CTYPE-CLI-X509:+CTYPE-SRV-X509", - .set_cli_creds = CRED_X509, - .set_srv_creds = CRED_X509, - .expected_cli_ctype = GNUTLS_CRT_X509, - .expected_srv_ctype = GNUTLS_CRT_X509}, - { - /* Explicit cli/srv ctype negotiation, cli creds x509, srv creds x509, no cli cert asked + .name = "Negotiate CLI X.509 + SRV X.509. Creds set (CLI/SRV): X.509/X.509.", + .client_prio = "NORMAL:+CTYPE-CLI-X509:+CTYPE-SRV-X509", + .server_prio = "NORMAL:+CTYPE-CLI-X509:+CTYPE-SRV-X509", + .set_cli_creds = CRED_X509, + .set_srv_creds = CRED_X509, + .expected_cli_ctype = GNUTLS_CRT_X509, + .expected_srv_ctype = GNUTLS_CRT_X509 }, + { /* Explicit cli/srv ctype negotiation, cli creds x509, srv creds x509, no cli cert asked * * Priority: NORMAL + request x509 for cli * Cli creds: X.509 @@ -138,15 +129,14 @@ test_case_st tests[] = { * we advertise with only the cert type defaults. Extensions * will therefore not be activated. */ - .name = "Negotiate CLI X.509. Creds set (CLI/SRV): X.509/X.509.", - .client_prio = "NORMAL:+CTYPE-CLI-X509", - .server_prio = "NORMAL:+CTYPE-CLI-X509", - .set_cli_creds = CRED_X509, - .set_srv_creds = CRED_X509, - .expected_cli_ctype = GNUTLS_CRT_X509, - .expected_srv_ctype = GNUTLS_CRT_X509}, - { - /* Explicit cli/srv ctype negotiation, cli creds x509, srv creds x509, cli cert asked + .name = "Negotiate CLI X.509. Creds set (CLI/SRV): X.509/X.509.", + .client_prio = "NORMAL:+CTYPE-CLI-X509", + .server_prio = "NORMAL:+CTYPE-CLI-X509", + .set_cli_creds = CRED_X509, + .set_srv_creds = CRED_X509, + .expected_cli_ctype = GNUTLS_CRT_X509, + .expected_srv_ctype = GNUTLS_CRT_X509 }, + { /* Explicit cli/srv ctype negotiation, cli creds x509, srv creds x509, cli cert asked * * Priority: NORMAL + request x509 for cli * Cli creds: X.509 @@ -156,16 +146,15 @@ test_case_st tests[] = { * we advertise with only the cert type defaults. Extensions * will therefore not be activated. */ - .name = "Negotiate CLI X.509. Creds set (CLI/SRV): X.509/X.509.", - .client_prio = "NORMAL:+CTYPE-CLI-X509", - .server_prio = "NORMAL:+CTYPE-CLI-X509", - .set_cli_creds = CRED_X509, - .set_srv_creds = CRED_X509, - .expected_cli_ctype = GNUTLS_CRT_X509, - .expected_srv_ctype = GNUTLS_CRT_X509, - .request_cli_crt = true}, - { - /* Explicit cli/srv ctype negotiation, cli creds x509, srv creds x509 + .name = "Negotiate CLI X.509. Creds set (CLI/SRV): X.509/X.509.", + .client_prio = "NORMAL:+CTYPE-CLI-X509", + .server_prio = "NORMAL:+CTYPE-CLI-X509", + .set_cli_creds = CRED_X509, + .set_srv_creds = CRED_X509, + .expected_cli_ctype = GNUTLS_CRT_X509, + .expected_srv_ctype = GNUTLS_CRT_X509, + .request_cli_crt = true }, + { /* Explicit cli/srv ctype negotiation, cli creds x509, srv creds x509 * * Priority: NORMAL + request x509 for srv * Cli creds: X.509 @@ -175,15 +164,14 @@ test_case_st tests[] = { * we advertise with only the cert type defaults. Extensions * will therefore not be activated. */ - .name = "Negotiate SRV X.509. Creds set (CLI/SRV): X.509/X.509.", - .client_prio = "NORMAL:+CTYPE-SRV-X509", - .server_prio = "NORMAL:+CTYPE-SRV-X509", - .set_cli_creds = CRED_X509, - .set_srv_creds = CRED_X509, - .expected_cli_ctype = GNUTLS_CRT_X509, - .expected_srv_ctype = GNUTLS_CRT_X509}, - { - /* Explicit cli/srv ctype negotiation, all types allowed for CLI, cli creds x509, srv creds x509 + .name = "Negotiate SRV X.509. Creds set (CLI/SRV): X.509/X.509.", + .client_prio = "NORMAL:+CTYPE-SRV-X509", + .server_prio = "NORMAL:+CTYPE-SRV-X509", + .set_cli_creds = CRED_X509, + .set_srv_creds = CRED_X509, + .expected_cli_ctype = GNUTLS_CRT_X509, + .expected_srv_ctype = GNUTLS_CRT_X509 }, + { /* Explicit cli/srv ctype negotiation, all types allowed for CLI, cli creds x509, srv creds x509 * * Priority: NORMAL + allow all client cert types * Cli creds: X.509 @@ -192,15 +180,14 @@ test_case_st tests[] = { * Negotiation: cli X.509 and srv X.509 because * we only have X.509 credentials set. */ - .name = "Negotiate CLI all. Creds set (CLI/SRV): X.509/X.509.", - .client_prio = "NORMAL:+CTYPE-CLI-ALL", - .server_prio = "NORMAL:+CTYPE-CLI-ALL", - .set_cli_creds = CRED_X509, - .set_srv_creds = CRED_X509, - .expected_cli_ctype = GNUTLS_CRT_X509, - .expected_srv_ctype = GNUTLS_CRT_X509}, - { - /* Explicit cli/srv ctype negotiation, all types allowed for SRV, cli creds x509, srv creds x509 + .name = "Negotiate CLI all. Creds set (CLI/SRV): X.509/X.509.", + .client_prio = "NORMAL:+CTYPE-CLI-ALL", + .server_prio = "NORMAL:+CTYPE-CLI-ALL", + .set_cli_creds = CRED_X509, + .set_srv_creds = CRED_X509, + .expected_cli_ctype = GNUTLS_CRT_X509, + .expected_srv_ctype = GNUTLS_CRT_X509 }, + { /* Explicit cli/srv ctype negotiation, all types allowed for SRV, cli creds x509, srv creds x509 * * Priority: NORMAL + allow all server cert types * Cli creds: X.509 @@ -209,15 +196,14 @@ test_case_st tests[] = { * Negotiation: cli X.509 and srv X.509 because * we only have X.509 credentials set. */ - .name = "Negotiate SRV all. Creds set (CLI/SRV): X.509/X.509.", - .client_prio = "NORMAL:+CTYPE-SRV-ALL", - .server_prio = "NORMAL:+CTYPE-SRV-ALL", - .set_cli_creds = CRED_X509, - .set_srv_creds = CRED_X509, - .expected_cli_ctype = GNUTLS_CRT_X509, - .expected_srv_ctype = GNUTLS_CRT_X509}, - { - /* Explicit cli/srv ctype negotiation, all types allowed for CLI/SRV, cli creds x509, srv creds x509 + .name = "Negotiate SRV all. Creds set (CLI/SRV): X.509/X.509.", + .client_prio = "NORMAL:+CTYPE-SRV-ALL", + .server_prio = "NORMAL:+CTYPE-SRV-ALL", + .set_cli_creds = CRED_X509, + .set_srv_creds = CRED_X509, + .expected_cli_ctype = GNUTLS_CRT_X509, + .expected_srv_ctype = GNUTLS_CRT_X509 }, + { /* Explicit cli/srv ctype negotiation, all types allowed for CLI/SRV, cli creds x509, srv creds x509 * * Priority: NORMAL + allow all client and server cert types * Cli creds: X.509 @@ -226,19 +212,18 @@ test_case_st tests[] = { * Negotiation: cli X.509 and srv X.509 because * we only have X.509 credentials set. */ - .name = "Negotiate CLI/SRV all. Creds set (CLI/SRV): X.509/X.509.", - .client_prio = "NORMAL:+CTYPE-CLI-ALL:+CTYPE-SRV-ALL", - .server_prio = "NORMAL:+CTYPE-CLI-ALL:+CTYPE-SRV-ALL", - .set_cli_creds = CRED_X509, - .set_srv_creds = CRED_X509, - .expected_cli_ctype = GNUTLS_CRT_X509, - .expected_srv_ctype = GNUTLS_CRT_X509}, + .name = "Negotiate CLI/SRV all. Creds set (CLI/SRV): X.509/X.509.", + .client_prio = "NORMAL:+CTYPE-CLI-ALL:+CTYPE-SRV-ALL", + .server_prio = "NORMAL:+CTYPE-CLI-ALL:+CTYPE-SRV-ALL", + .set_cli_creds = CRED_X509, + .set_srv_creds = CRED_X509, + .expected_cli_ctype = GNUTLS_CRT_X509, + .expected_srv_ctype = GNUTLS_CRT_X509 }, /* Tests with only a single credential set for client/server. * Tests for Raw public-key cases. */ - { - /* Explicit cli/srv ctype negotiation, cli creds Raw PK, srv creds Raw PK, Req. cli cert. + { /* Explicit cli/srv ctype negotiation, cli creds Raw PK, srv creds Raw PK, Req. cli cert. * * Priority: NORMAL + request rawpk for cli and srv * Cli creds: Raw PK @@ -247,19 +232,17 @@ test_case_st tests[] = { * Handshake: should complete without errors * Negotiation: both parties should have a Raw PK cert negotiated */ - .name = - "Negotiate CLI Raw PK + SRV Raw PK. Creds set (CLI/SRV): RawPK/RawPK. Cert req.", - .client_prio = "NORMAL:+CTYPE-CLI-RAWPK:+CTYPE-SRV-RAWPK", - .server_prio = "NORMAL:+CTYPE-CLI-RAWPK:+CTYPE-SRV-RAWPK", - .set_cli_creds = CRED_RAWPK, - .set_srv_creds = CRED_RAWPK, - .expected_cli_ctype = GNUTLS_CRT_RAWPK, - .expected_srv_ctype = GNUTLS_CRT_RAWPK, - .init_flags_cli = GNUTLS_ENABLE_RAWPK, - .init_flags_srv = GNUTLS_ENABLE_RAWPK, - .request_cli_crt = true}, - { - /* Explicit cli/srv ctype negotiation (TLS 1.2), cli creds Raw PK, srv creds Raw PK + .name = "Negotiate CLI Raw PK + SRV Raw PK. Creds set (CLI/SRV): RawPK/RawPK. Cert req.", + .client_prio = "NORMAL:+CTYPE-CLI-RAWPK:+CTYPE-SRV-RAWPK", + .server_prio = "NORMAL:+CTYPE-CLI-RAWPK:+CTYPE-SRV-RAWPK", + .set_cli_creds = CRED_RAWPK, + .set_srv_creds = CRED_RAWPK, + .expected_cli_ctype = GNUTLS_CRT_RAWPK, + .expected_srv_ctype = GNUTLS_CRT_RAWPK, + .init_flags_cli = GNUTLS_ENABLE_RAWPK, + .init_flags_srv = GNUTLS_ENABLE_RAWPK, + .request_cli_crt = true }, + { /* Explicit cli/srv ctype negotiation (TLS 1.2), cli creds Raw PK, srv creds Raw PK * * Priority: NORMAL + request rawpk for cli and srv * Cli creds: Raw PK @@ -270,24 +253,22 @@ test_case_st tests[] = { * cert type. The server picks Raw PK but does not send a response * to the client (under TLS 1.2). The client therefore falls back to default (X.509). */ - .name = - "Negotiate CLI Raw PK + SRV Raw PK. Creds set (CLI/SRV): RawPK/RawPK.", - .client_prio = - "NORMAL:-VERS-ALL:+VERS-TLS1.2:+CTYPE-CLI-RAWPK:+CTYPE-SRV-RAWPK", - .server_prio = - "NORMAL:-VERS-ALL:+VERS-TLS1.2:+CTYPE-CLI-RAWPK:+CTYPE-SRV-RAWPK", - .set_cli_creds = CRED_RAWPK, - .set_srv_creds = CRED_RAWPK, - .expected_cli_cli_ctype = GNUTLS_CRT_X509, - .expected_srv_cli_ctype = GNUTLS_CRT_RAWPK, - .expected_cli_srv_ctype = GNUTLS_CRT_RAWPK, - .expected_srv_srv_ctype = GNUTLS_CRT_RAWPK, - .init_flags_cli = GNUTLS_ENABLE_RAWPK, - .init_flags_srv = GNUTLS_ENABLE_RAWPK, - .request_cli_crt = false, - .cli_srv_may_diverge = true}, - { - /* Explicit cli/srv ctype negotiation (TLS 1.3), cli creds Raw PK, srv creds Raw PK + .name = "Negotiate CLI Raw PK + SRV Raw PK. Creds set (CLI/SRV): RawPK/RawPK.", + .client_prio = + "NORMAL:-VERS-ALL:+VERS-TLS1.2:+CTYPE-CLI-RAWPK:+CTYPE-SRV-RAWPK", + .server_prio = + "NORMAL:-VERS-ALL:+VERS-TLS1.2:+CTYPE-CLI-RAWPK:+CTYPE-SRV-RAWPK", + .set_cli_creds = CRED_RAWPK, + .set_srv_creds = CRED_RAWPK, + .expected_cli_cli_ctype = GNUTLS_CRT_X509, + .expected_srv_cli_ctype = GNUTLS_CRT_RAWPK, + .expected_cli_srv_ctype = GNUTLS_CRT_RAWPK, + .expected_srv_srv_ctype = GNUTLS_CRT_RAWPK, + .init_flags_cli = GNUTLS_ENABLE_RAWPK, + .init_flags_srv = GNUTLS_ENABLE_RAWPK, + .request_cli_crt = false, + .cli_srv_may_diverge = true }, + { /* Explicit cli/srv ctype negotiation (TLS 1.3), cli creds Raw PK, srv creds Raw PK * * Priority: NORMAL + request rawpk for cli and srv * Cli creds: Raw PK @@ -299,24 +280,22 @@ test_case_st tests[] = { * cert is requested. This is necessary for post-handshake authentication * to work. */ - .name = - "Negotiate CLI Raw PK + SRV Raw PK. Creds set (CLI/SRV): RawPK/RawPK.", - .client_prio = - "NORMAL:-VERS-ALL:+VERS-TLS1.3:+CTYPE-CLI-RAWPK:+CTYPE-SRV-RAWPK", - .server_prio = - "NORMAL:-VERS-ALL:+VERS-TLS1.3:+CTYPE-CLI-RAWPK:+CTYPE-SRV-RAWPK", - .set_cli_creds = CRED_RAWPK, - .set_srv_creds = CRED_RAWPK, - .expected_cli_cli_ctype = GNUTLS_CRT_RAWPK, - .expected_srv_cli_ctype = GNUTLS_CRT_RAWPK, - .expected_cli_srv_ctype = GNUTLS_CRT_RAWPK, - .expected_srv_srv_ctype = GNUTLS_CRT_RAWPK, - .init_flags_cli = GNUTLS_ENABLE_RAWPK, - .init_flags_srv = GNUTLS_ENABLE_RAWPK, - .request_cli_crt = false, - .cli_srv_may_diverge = true}, - { - /* Explicit cli/srv ctype negotiation, cli creds Raw PK, srv creds Raw PK + .name = "Negotiate CLI Raw PK + SRV Raw PK. Creds set (CLI/SRV): RawPK/RawPK.", + .client_prio = + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+CTYPE-CLI-RAWPK:+CTYPE-SRV-RAWPK", + .server_prio = + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+CTYPE-CLI-RAWPK:+CTYPE-SRV-RAWPK", + .set_cli_creds = CRED_RAWPK, + .set_srv_creds = CRED_RAWPK, + .expected_cli_cli_ctype = GNUTLS_CRT_RAWPK, + .expected_srv_cli_ctype = GNUTLS_CRT_RAWPK, + .expected_cli_srv_ctype = GNUTLS_CRT_RAWPK, + .expected_srv_srv_ctype = GNUTLS_CRT_RAWPK, + .init_flags_cli = GNUTLS_ENABLE_RAWPK, + .init_flags_srv = GNUTLS_ENABLE_RAWPK, + .request_cli_crt = false, + .cli_srv_may_diverge = true }, + { /* Explicit cli/srv ctype negotiation, cli creds Raw PK, srv creds Raw PK * * Priority: NORMAL + request rawpk for cli * Cli creds: Raw PK @@ -325,17 +304,16 @@ test_case_st tests[] = { * Handshake: fails because no valid cred (X.509) can be found for the server. * Negotiation: - */ - .name = "Negotiate CLI Raw PK. Creds set (CLI/SRV): RawPK/RawPK.", - .client_prio = "NORMAL:+CTYPE-CLI-RAWPK", - .server_prio = "NORMAL:+CTYPE-CLI-RAWPK", - .set_cli_creds = CRED_RAWPK, - .set_srv_creds = CRED_RAWPK, - .init_flags_cli = GNUTLS_ENABLE_RAWPK, - .init_flags_srv = GNUTLS_ENABLE_RAWPK, - .client_err = GNUTLS_E_AGAIN, - .server_err = GNUTLS_E_NO_CIPHER_SUITES}, - { - /* Explicit cli/srv ctype negotiation, cli creds Raw PK, srv creds Raw PK, request cli cert. + .name = "Negotiate CLI Raw PK. Creds set (CLI/SRV): RawPK/RawPK.", + .client_prio = "NORMAL:+CTYPE-CLI-RAWPK", + .server_prio = "NORMAL:+CTYPE-CLI-RAWPK", + .set_cli_creds = CRED_RAWPK, + .set_srv_creds = CRED_RAWPK, + .init_flags_cli = GNUTLS_ENABLE_RAWPK, + .init_flags_srv = GNUTLS_ENABLE_RAWPK, + .client_err = GNUTLS_E_AGAIN, + .server_err = GNUTLS_E_NO_CIPHER_SUITES }, + { /* Explicit cli/srv ctype negotiation, cli creds Raw PK, srv creds Raw PK, request cli cert. * * Priority: NORMAL + request rawpk for srv * Cli creds: Raw PK @@ -345,18 +323,17 @@ test_case_st tests[] = { * Negotiation: Raw PK will be negotiated for server. Client will * default to X.509. */ - .name = "Negotiate SRV Raw PK. Creds set (CLI/SRV): RawPK/RawPK.", - .client_prio = "NORMAL:+CTYPE-SRV-RAWPK", - .server_prio = "NORMAL:+CTYPE-SRV-RAWPK", - .set_cli_creds = CRED_RAWPK, - .set_srv_creds = CRED_RAWPK, - .expected_cli_ctype = GNUTLS_CRT_X509, - .expected_srv_ctype = GNUTLS_CRT_RAWPK, - .init_flags_cli = GNUTLS_ENABLE_RAWPK, - .init_flags_srv = GNUTLS_ENABLE_RAWPK, - .request_cli_crt = true}, - { - /* Explicit cli/srv ctype negotiation, cli creds Raw PK, srv creds X.509, Request cli cert. + .name = "Negotiate SRV Raw PK. Creds set (CLI/SRV): RawPK/RawPK.", + .client_prio = "NORMAL:+CTYPE-SRV-RAWPK", + .server_prio = "NORMAL:+CTYPE-SRV-RAWPK", + .set_cli_creds = CRED_RAWPK, + .set_srv_creds = CRED_RAWPK, + .expected_cli_ctype = GNUTLS_CRT_X509, + .expected_srv_ctype = GNUTLS_CRT_RAWPK, + .init_flags_cli = GNUTLS_ENABLE_RAWPK, + .init_flags_srv = GNUTLS_ENABLE_RAWPK, + .request_cli_crt = true }, + { /* Explicit cli/srv ctype negotiation, cli creds Raw PK, srv creds X.509, Request cli cert. * * Priority: NORMAL + request rawpk for cli and srv * Cli creds: Raw PK @@ -366,19 +343,17 @@ test_case_st tests[] = { * Negotiation: Raw PK will be negotiated for client. Server will * default to X.509. */ - .name = - "Negotiate CLI and SRV Raw PK. Creds set (CLI/SRV): RawPK/X.509.", - .client_prio = "NORMAL:+CTYPE-CLI-RAWPK:+CTYPE-SRV-RAWPK", - .server_prio = "NORMAL:+CTYPE-CLI-RAWPK:+CTYPE-SRV-RAWPK", - .set_cli_creds = CRED_RAWPK, - .set_srv_creds = CRED_X509, - .expected_cli_ctype = GNUTLS_CRT_RAWPK, - .expected_srv_ctype = GNUTLS_CRT_X509, - .init_flags_cli = GNUTLS_ENABLE_RAWPK, - .init_flags_srv = GNUTLS_ENABLE_RAWPK, - .request_cli_crt = true}, - { - /* All types allowed for CLI, cli creds Raw PK, srv creds X.509 + .name = "Negotiate CLI and SRV Raw PK. Creds set (CLI/SRV): RawPK/X.509.", + .client_prio = "NORMAL:+CTYPE-CLI-RAWPK:+CTYPE-SRV-RAWPK", + .server_prio = "NORMAL:+CTYPE-CLI-RAWPK:+CTYPE-SRV-RAWPK", + .set_cli_creds = CRED_RAWPK, + .set_srv_creds = CRED_X509, + .expected_cli_ctype = GNUTLS_CRT_RAWPK, + .expected_srv_ctype = GNUTLS_CRT_X509, + .init_flags_cli = GNUTLS_ENABLE_RAWPK, + .init_flags_srv = GNUTLS_ENABLE_RAWPK, + .request_cli_crt = true }, + { /* All types allowed for CLI, cli creds Raw PK, srv creds X.509 * * Priority: NORMAL + allow all client cert types * Cli creds: Raw PK @@ -387,18 +362,17 @@ test_case_st tests[] = { * Negotiation: cli Raw PK and srv X.509 because * that are the only credentials set. */ - .name = "Negotiate CLI all. Creds set (CLI/SRV): Raw PK/X.509.", - .client_prio = "NORMAL:+CTYPE-CLI-ALL", - .server_prio = "NORMAL:+CTYPE-CLI-ALL", - .set_cli_creds = CRED_RAWPK, - .set_srv_creds = CRED_X509, - .expected_cli_ctype = GNUTLS_CRT_RAWPK, - .expected_srv_ctype = GNUTLS_CRT_X509, - .init_flags_cli = GNUTLS_ENABLE_RAWPK, - .init_flags_srv = GNUTLS_ENABLE_RAWPK, - .request_cli_crt = true}, - { - /* All types allowed for SRV, cli creds x509, srv creds Raw PK + .name = "Negotiate CLI all. Creds set (CLI/SRV): Raw PK/X.509.", + .client_prio = "NORMAL:+CTYPE-CLI-ALL", + .server_prio = "NORMAL:+CTYPE-CLI-ALL", + .set_cli_creds = CRED_RAWPK, + .set_srv_creds = CRED_X509, + .expected_cli_ctype = GNUTLS_CRT_RAWPK, + .expected_srv_ctype = GNUTLS_CRT_X509, + .init_flags_cli = GNUTLS_ENABLE_RAWPK, + .init_flags_srv = GNUTLS_ENABLE_RAWPK, + .request_cli_crt = true }, + { /* All types allowed for SRV, cli creds x509, srv creds Raw PK * * Priority: NORMAL + allow all server cert types * Cli creds: X.509 @@ -407,18 +381,17 @@ test_case_st tests[] = { * Negotiation: cli X.509 and srv Raw PK because * that are the only credentials set. */ - .name = "Negotiate SRV all. Creds set (CLI/SRV): X.509/Raw PK.", - .client_prio = "NORMAL:+CTYPE-SRV-ALL", - .server_prio = "NORMAL:+CTYPE-SRV-ALL", - .set_cli_creds = CRED_X509, - .set_srv_creds = CRED_RAWPK, - .expected_cli_ctype = GNUTLS_CRT_X509, - .expected_srv_ctype = GNUTLS_CRT_RAWPK, - .init_flags_cli = GNUTLS_ENABLE_RAWPK, - .init_flags_srv = GNUTLS_ENABLE_RAWPK, - .request_cli_crt = true}, - { - /* All types allowed for CLI/SRV, cli creds Raw PK, srv creds Raw PK + .name = "Negotiate SRV all. Creds set (CLI/SRV): X.509/Raw PK.", + .client_prio = "NORMAL:+CTYPE-SRV-ALL", + .server_prio = "NORMAL:+CTYPE-SRV-ALL", + .set_cli_creds = CRED_X509, + .set_srv_creds = CRED_RAWPK, + .expected_cli_ctype = GNUTLS_CRT_X509, + .expected_srv_ctype = GNUTLS_CRT_RAWPK, + .init_flags_cli = GNUTLS_ENABLE_RAWPK, + .init_flags_srv = GNUTLS_ENABLE_RAWPK, + .request_cli_crt = true }, + { /* All types allowed for CLI/SRV, cli creds Raw PK, srv creds Raw PK * * Priority: NORMAL + allow all client and server cert types * Cli creds: Raw PK @@ -427,16 +400,16 @@ test_case_st tests[] = { * Negotiation: cli Raw PK and srv Raw PK because * that are the only credentials set. */ - .name = "Negotiate CLI/SRV all. Creds set (CLI/SRV): Raw PK/Raw PK.", - .client_prio = "NORMAL:+CTYPE-CLI-ALL:+CTYPE-SRV-ALL", - .server_prio = "NORMAL:+CTYPE-CLI-ALL:+CTYPE-SRV-ALL", - .set_cli_creds = CRED_RAWPK, - .set_srv_creds = CRED_RAWPK, - .expected_cli_ctype = GNUTLS_CRT_RAWPK, - .expected_srv_ctype = GNUTLS_CRT_RAWPK, - .init_flags_cli = GNUTLS_ENABLE_RAWPK, - .init_flags_srv = GNUTLS_ENABLE_RAWPK, - .request_cli_crt = true}, + .name = "Negotiate CLI/SRV all. Creds set (CLI/SRV): Raw PK/Raw PK.", + .client_prio = "NORMAL:+CTYPE-CLI-ALL:+CTYPE-SRV-ALL", + .server_prio = "NORMAL:+CTYPE-CLI-ALL:+CTYPE-SRV-ALL", + .set_cli_creds = CRED_RAWPK, + .set_srv_creds = CRED_RAWPK, + .expected_cli_ctype = GNUTLS_CRT_RAWPK, + .expected_srv_ctype = GNUTLS_CRT_RAWPK, + .init_flags_cli = GNUTLS_ENABLE_RAWPK, + .init_flags_srv = GNUTLS_ENABLE_RAWPK, + .request_cli_crt = true }, }; diff --git a/tests/tls-etm.c b/tests/tls-etm.c index 1e3c054a4e..0b6719345c 100644 --- a/tests/tls-etm.c +++ b/tests/tls-etm.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,20 +35,20 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "utils.h" -# include "cert-common.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "utils.h" +#include "cert-common.h" static void terminate(void); @@ -68,7 +68,7 @@ static void client_log_func(int level, const char *str) /* A very basic TLS client, with anonymous authentication. */ -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd, const char *prio, unsigned etm) { @@ -107,8 +107,7 @@ static void client(int fd, const char *prio, unsigned etm) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -121,8 +120,8 @@ static void client(int fd, const char *prio, unsigned etm) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); if (etm != 0 && gnutls_session_etm_status(session) == 0) { fail("client: EtM was not negotiated with %s!\n", prio); @@ -132,13 +131,12 @@ static void client(int fd, const char *prio, unsigned etm) exit(1); } - if (etm != 0 - && ((gnutls_session_get_flags(session) & GNUTLS_SFLAGS_ETM) == 0)) { + if (etm != 0 && + ((gnutls_session_get_flags(session) & GNUTLS_SFLAGS_ETM) == 0)) { fail("client: EtM was not negotiated with %s!\n", prio); exit(1); - } else if (etm == 0 - && ((gnutls_session_get_flags(session) & GNUTLS_SFLAGS_ETM) - != 0)) { + } else if (etm == 0 && ((gnutls_session_get_flags(session) & + GNUTLS_SFLAGS_ETM) != 0)) { fail("client: EtM was negotiated with %s!\n", prio); exit(1); } @@ -162,7 +160,7 @@ static void client(int fd, const char *prio, unsigned etm) gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); @@ -240,13 +238,12 @@ static void server(int fd, const char *prio, unsigned etm) exit(1); } - if (etm != 0 - && ((gnutls_session_get_flags(session) & GNUTLS_SFLAGS_ETM) == 0)) { + if (etm != 0 && + ((gnutls_session_get_flags(session) & GNUTLS_SFLAGS_ETM) == 0)) { fail("server: EtM was not negotiated with %s!\n", prio); exit(1); - } else if (etm == 0 - && ((gnutls_session_get_flags(session) & GNUTLS_SFLAGS_ETM) - != 0)) { + } else if (etm == 0 && ((gnutls_session_get_flags(session) & + GNUTLS_SFLAGS_ETM) != 0)) { fail("server: EtM was negotiated with %s!\n", prio); exit(1); } @@ -256,13 +253,13 @@ static void server(int fd, const char *prio, unsigned etm) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { do { - ret = - gnutls_record_send(session, buffer, sizeof(buffer)); + ret = gnutls_record_send(session, buffer, + sizeof(buffer)); } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) { @@ -271,8 +268,7 @@ static void server(int fd, const char *prio, unsigned etm) terminate(); } to_send++; - } - while (to_send < 64); + } while (to_send < 64); to_send = -1; /* do not wait for the peer to close the connection. @@ -321,9 +317,12 @@ static void start(const char *prio, unsigned etm) } } -# define AES_CBC "NONE:+VERS-TLS1.0:-CIPHER-ALL:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" -# define AES_CBC_SHA256 "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-CBC:+AES-256-CBC:+SHA256:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" -# define AES_GCM "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-GCM:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" +#define AES_CBC \ + "NONE:+VERS-TLS1.0:-CIPHER-ALL:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" +#define AES_CBC_SHA256 \ + "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-CBC:+AES-256-CBC:+SHA256:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" +#define AES_GCM \ + "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-GCM:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" static void ch_handler(int sig) { @@ -342,4 +341,4 @@ void doit(void) start(AES_GCM, 0); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls-ext-not-in-dtls.c b/tests/tls-ext-not-in-dtls.c index 54cfb5ff00..2e94a925de 100644 --- a/tests/tls-ext-not-in-dtls.c +++ b/tests/tls-ext-not-in-dtls.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,21 +35,21 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "utils.h" -# include "cert-common.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "utils.h" +#include "cert-common.h" enum { TEST_DEF_HANDHAKE, @@ -84,8 +84,8 @@ static int ext_recv(gnutls_session_t session, const unsigned char *buf, return 0; } -# define TLS_EXT_IMPL_DTLS 0xfeee -# define TLS_EXT_EXPL_TLS 0xfeea +#define TLS_EXT_IMPL_DTLS 0xfeee +#define TLS_EXT_EXPL_TLS 0xfeea static void client(int fd, int type) { @@ -102,27 +102,30 @@ static void client(int fd, int type) assert(gnutls_init(&session, GNUTLS_CLIENT | GNUTLS_DATAGRAM) >= 0); if (type == TEST_CUSTOM_EXT) { - assert(gnutls_session_ext_register - (session, "implicit-dtls", TLS_EXT_IMPL_DTLS, - GNUTLS_EXT_TLS, ext_recv, ext_send, NULL, NULL, NULL, - GNUTLS_EXT_FLAG_CLIENT_HELLO | - GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO | - GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO) >= 0); - assert(gnutls_session_ext_register - (session, "explicit-tls", TLS_EXT_EXPL_TLS, - GNUTLS_EXT_TLS, ext_recv, ext_send, NULL, NULL, NULL, - GNUTLS_EXT_FLAG_CLIENT_HELLO | - GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO | - GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO | - GNUTLS_EXT_FLAG_TLS) >= 0); + assert(gnutls_session_ext_register( + session, "implicit-dtls", TLS_EXT_IMPL_DTLS, + GNUTLS_EXT_TLS, ext_recv, ext_send, NULL, NULL, + NULL, + GNUTLS_EXT_FLAG_CLIENT_HELLO | + GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO | + GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO) >= + 0); + assert(gnutls_session_ext_register( + session, "explicit-tls", TLS_EXT_EXPL_TLS, + GNUTLS_EXT_TLS, ext_recv, ext_send, NULL, NULL, + NULL, + GNUTLS_EXT_FLAG_CLIENT_HELLO | + GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO | + GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO | + GNUTLS_EXT_FLAG_TLS) >= 0); } gnutls_handshake_set_timeout(session, get_timeout()); - assert(gnutls_priority_set_direct - (session, - "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.0", - NULL) >= 0); + assert(gnutls_priority_set_direct( + session, + "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.0", + NULL) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -130,8 +133,7 @@ static void client(int fd, int type) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) fail("handshake: %s\n", gnutls_strerror(ret)); @@ -145,8 +147,8 @@ static void client(int fd, int type) gnutls_global_deinit(); } -# define TLS_EXT_KEY_SHARE 51 -# define TLS_EXT_POST_HANDSHAKE 49 +#define TLS_EXT_KEY_SHARE 51 +#define TLS_EXT_POST_HANDSHAKE 49 struct ext_ctx_st { int extno; @@ -164,7 +166,7 @@ static int parse_ext(void *ctx, unsigned tls_id, const unsigned char *data, return 0; } -static unsigned find_client_extension(const gnutls_datum_t * msg, int extno) +static unsigned find_client_extension(const gnutls_datum_t *msg, int extno) { int ret; struct ext_ctx_st s; @@ -172,9 +174,8 @@ static unsigned find_client_extension(const gnutls_datum_t * msg, int extno) memset(&s, 0, sizeof(s)); s.extno = extno; - ret = - gnutls_ext_raw_parse(&s, parse_ext, msg, - GNUTLS_EXT_RAW_FLAG_DTLS_CLIENT_HELLO); + ret = gnutls_ext_raw_parse(&s, parse_ext, msg, + GNUTLS_EXT_RAW_FLAG_DTLS_CLIENT_HELLO); assert(ret >= 0); if (s.found) @@ -185,7 +186,7 @@ static unsigned find_client_extension(const gnutls_datum_t * msg, int extno) static int hellos_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { int *type; @@ -226,19 +227,19 @@ static void server(int fd, int type) &server_key, GNUTLS_X509_FMT_PEM) >= 0); - assert(gnutls_init - (&session, - GNUTLS_SERVER | GNUTLS_POST_HANDSHAKE_AUTH | GNUTLS_DATAGRAM) >= - 0); + assert(gnutls_init(&session, GNUTLS_SERVER | + GNUTLS_POST_HANDSHAKE_AUTH | + GNUTLS_DATAGRAM) >= 0); gnutls_handshake_set_timeout(session, get_timeout()); gnutls_handshake_set_hook_function(session, GNUTLS_HANDSHAKE_ANY, GNUTLS_HOOK_BOTH, hellos_callback); gnutls_session_set_ptr(session, &type); - assert(gnutls_priority_set_direct - (session, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3:+VERS-TLS1.2", - NULL) >= 0); + assert(gnutls_priority_set_direct( + session, + "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3:+VERS-TLS1.2", + NULL) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -267,8 +268,7 @@ static void ch_handler(int sig) return; } -static -void start(const char *name, int type) +static void start(const char *name, int type) { int fd[2]; int ret; @@ -300,7 +300,6 @@ void start(const char *name, int type) client(fd[1], type); exit(0); } - } void doit(void) @@ -309,4 +308,4 @@ void doit(void) start("check registered extensions", TEST_CUSTOM_EXT); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls-ext-register.c b/tests/tls-ext-register.c index 5fdfde23fb..950de1aa80 100644 --- a/tests/tls-ext-register.c +++ b/tests/tls-ext-register.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -38,18 +38,18 @@ int main(int argc, char **argv) #else -# include -# include -# include -# if !defined(_WIN32) -# include -# include -# endif -# include -# include -# include +#include +#include +#include +#if !defined(_WIN32) +#include +#include +#endif +#include +#include +#include -# include "utils.h" +#include "utils.h" /* A very basic TLS client, with extension */ @@ -61,17 +61,14 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -# define TLSEXT_TYPE_SAMPLE 0xF1 +#define TLSEXT_TYPE_SAMPLE 0xF1 static int TLSEXT_TYPE_client_sent = 0; static int TLSEXT_TYPE_client_received = 0; static int TLSEXT_TYPE_server_sent = 0; static int TLSEXT_TYPE_server_received = 0; -static const unsigned char ext_data[] = { - 0xFE, - 0xED -}; +static const unsigned char ext_data[] = { 0xFE, 0xED }; static int ext_recv_client_params(gnutls_session_t session, const unsigned char *buf, size_t buflen) @@ -86,7 +83,7 @@ static int ext_recv_client_params(gnutls_session_t session, gnutls_ext_set_data(session, TLSEXT_TYPE_SAMPLE, session); - return 0; //Success + return 0; //Success } static int ext_send_client_params(gnutls_session_t session, @@ -108,7 +105,7 @@ static int ext_recv_server_params(gnutls_session_t session, TLSEXT_TYPE_server_received = 1; - return 0; //Success + return 0; //Success } static int ext_send_server_params(gnutls_session_t session, @@ -133,10 +130,9 @@ static void client(int sd, const char *prio) side = "client"; /* extensions are registered globally */ - ret = - gnutls_ext_register("ext_client", TLSEXT_TYPE_SAMPLE, - GNUTLS_EXT_TLS, ext_recv_client_params, - ext_send_client_params, NULL, NULL, NULL); + ret = gnutls_ext_register("ext_client", TLSEXT_TYPE_SAMPLE, + GNUTLS_EXT_TLS, ext_recv_client_params, + ext_send_client_params, NULL, NULL, NULL); assert(ret >= 0); gnutls_certificate_allocate_credentials(&clientx509cred); @@ -181,7 +177,7 @@ static void client(int sd, const char *prio) gnutls_bye(session, GNUTLS_SHUT_RDWR); - end: +end: close(sd); gnutls_deinit(session); @@ -193,45 +189,42 @@ static void client(int sd, const char *prio) */ static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" - "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" - "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" - "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" - "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" - "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" - "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" - "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" - "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" - "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" - "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" - "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" + "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" + "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" + "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" + "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" + "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" + "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" + "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" + "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" + "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" + "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" + "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" - "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" - "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" - "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" - "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" - "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" - "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" - "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" - "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" - "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" - "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" - "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" - "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" + "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" + "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" + "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" + "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" + "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" + "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" + "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" + "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" + "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" + "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" + "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" + "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; static void server(int sd, const char *prio) { @@ -248,9 +241,8 @@ static void server(int sd, const char *prio) side = "server"; gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&session, GNUTLS_SERVER); @@ -258,10 +250,10 @@ static void server(int sd, const char *prio) gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, serverx509cred); - assert(gnutls_ext_register - ("ext_server", TLSEXT_TYPE_SAMPLE, GNUTLS_EXT_TLS, - ext_recv_server_params, ext_send_server_params, NULL, NULL, - NULL) >= 0); + assert(gnutls_ext_register("ext_server", TLSEXT_TYPE_SAMPLE, + GNUTLS_EXT_TLS, ext_recv_server_params, + ext_send_server_params, NULL, NULL, + NULL) >= 0); gnutls_transport_set_int(session, sd); gnutls_handshake_set_timeout(session, get_timeout()); @@ -293,8 +285,7 @@ static void server(int sd, const char *prio) success("server: finished\n"); } -static -void start(const char *prio) +static void start(const char *prio) { pid_t child1, child2; int sockets[2]; @@ -360,19 +351,16 @@ void doit(void) /* check whether we can crash the library by adding many extensions */ for (i = 0; i < 64; i++) { - ret = - gnutls_ext_register("ext_serverxx", - TLSEXT_TYPE_SAMPLE + i + 1, - GNUTLS_EXT_TLS, ext_recv_server_params, - ext_send_server_params, NULL, NULL, - NULL); + ret = gnutls_ext_register( + "ext_serverxx", TLSEXT_TYPE_SAMPLE + i + 1, + GNUTLS_EXT_TLS, ext_recv_server_params, + ext_send_server_params, NULL, NULL, NULL); if (ret < 0) { - success - ("failed registering extension no %d (expected)\n", - i + 1); + success("failed registering extension no %d (expected)\n", + i + 1); break; } } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls-force-ems.c b/tests/tls-force-ems.c index 89b5acf62e..06bebe25e5 100644 --- a/tests/tls-force-ems.c +++ b/tests/tls-force-ems.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -41,8 +41,8 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -static void -try(const char *name, const char *sprio, const char *cprio, int serr, int cerr) +static void try(const char *name, const char *sprio, const char *cprio, + int serr, int cerr) { int sret, cret; gnutls_certificate_credentials_t scred, ccred; @@ -52,14 +52,14 @@ try(const char *name, const char *sprio, const char *cprio, int serr, int cerr) assert(gnutls_certificate_allocate_credentials(&scred) >= 0); - assert(gnutls_certificate_set_x509_key_mem - (scred, &server_ca3_localhost_cert, - &server_ca3_key, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem( + scred, &server_ca3_localhost_cert, &server_ca3_key, + GNUTLS_X509_FMT_PEM) >= 0); assert(gnutls_certificate_allocate_credentials(&ccred) >= 0); - assert(gnutls_certificate_set_x509_trust_mem - (ccred, &ca3_cert, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_trust_mem(ccred, &ca3_cert, + GNUTLS_X509_FMT_PEM) >= 0); assert(gnutls_init(&server, GNUTLS_SERVER) >= 0); assert(gnutls_init(&client, GNUTLS_CLIENT) >= 0); diff --git a/tests/tls-force-etm.c b/tests/tls-force-etm.c index d7509b6edc..67be1934fb 100644 --- a/tests/tls-force-etm.c +++ b/tests/tls-force-etm.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,20 +35,20 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "utils.h" -# include "cert-common.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "utils.h" +#include "cert-common.h" /* This program tests whether forced EtM is negotiated as expected. */ @@ -63,7 +63,7 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd, const char *prio, unsigned etm, int eret) { @@ -101,12 +101,12 @@ static void client(int fd, const char *prio, unsigned etm, int eret) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (eret < 0) { if (eret != ret) { - fail("client: Handshake failed with unexpected error: %s\n", gnutls_strerror(ret)); + fail("client: Handshake failed with unexpected error: %s\n", + gnutls_strerror(ret)); } goto end; } @@ -120,8 +120,8 @@ static void client(int fd, const char *prio, unsigned etm, int eret) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); if (etm != 0 && gnutls_session_etm_status(session) == 0) { fail("client: EtM was not negotiated with %s!\n", prio); @@ -131,13 +131,12 @@ static void client(int fd, const char *prio, unsigned etm, int eret) exit(1); } - if (etm != 0 - && ((gnutls_session_get_flags(session) & GNUTLS_SFLAGS_ETM) == 0)) { + if (etm != 0 && + ((gnutls_session_get_flags(session) & GNUTLS_SFLAGS_ETM) == 0)) { fail("client: EtM was not negotiated with %s!\n", prio); exit(1); - } else if (etm == 0 - && ((gnutls_session_get_flags(session) & GNUTLS_SFLAGS_ETM) - != 0)) { + } else if (etm == 0 && ((gnutls_session_get_flags(session) & + GNUTLS_SFLAGS_ETM) != 0)) { fail("client: EtM was negotiated with %s!\n", prio); exit(1); } @@ -161,7 +160,7 @@ static void client(int fd, const char *prio, unsigned etm, int eret) gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); @@ -217,7 +216,8 @@ static void server(int fd, const char *prio, unsigned etm, int eret) if (eret < 0) { if (eret != -1 && eret != ret) { - fail("server: Handshake failed with unexpected error: %s\n", gnutls_strerror(ret)); + fail("server: Handshake failed with unexpected error: %s\n", + gnutls_strerror(ret)); } goto end; } @@ -237,13 +237,12 @@ static void server(int fd, const char *prio, unsigned etm, int eret) exit(1); } - if (etm != 0 - && ((gnutls_session_get_flags(session) & GNUTLS_SFLAGS_ETM) == 0)) { + if (etm != 0 && + ((gnutls_session_get_flags(session) & GNUTLS_SFLAGS_ETM) == 0)) { fail("server: EtM was not negotiated with %s!\n", prio); exit(1); - } else if (etm == 0 - && ((gnutls_session_get_flags(session) & GNUTLS_SFLAGS_ETM) - != 0)) { + } else if (etm == 0 && ((gnutls_session_get_flags(session) & + GNUTLS_SFLAGS_ETM) != 0)) { fail("server: EtM was negotiated with %s!\n", prio); exit(1); } @@ -253,13 +252,13 @@ static void server(int fd, const char *prio, unsigned etm, int eret) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { do { - ret = - gnutls_record_send(session, buffer, sizeof(buffer)); + ret = gnutls_record_send(session, buffer, + sizeof(buffer)); } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) { @@ -267,14 +266,13 @@ static void server(int fd, const char *prio, unsigned etm, int eret) gnutls_strerror(ret)); } to_send++; - } - while (to_send < 64); + } while (to_send < 64); to_send = -1; /* do not wait for the peer to close the connection. */ gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(fd); gnutls_deinit(session); @@ -329,11 +327,15 @@ static void start(struct test_st *test) } } -# define AES_CBC "NONE:+VERS-TLS1.0:-CIPHER-ALL:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" -# define AES_CBC_SHA256 "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-CBC:+AES-256-CBC:+SHA256:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" -# define AES_GCM "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-GCM:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" +#define AES_CBC \ + "NONE:+VERS-TLS1.0:-CIPHER-ALL:+AES-128-CBC:+SHA1:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" +#define AES_CBC_SHA256 \ + "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-CBC:+AES-256-CBC:+SHA256:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" +#define AES_GCM \ + "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-GCM:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" -# define AES_CBC_TLS12 "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-CBC:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" +#define AES_CBC_TLS12 \ + "NONE:+VERS-TLS1.2:-CIPHER-ALL:+RSA:+AES-128-CBC:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-ECDH:+CURVE-ALL" static void ch_handler(int sig) { @@ -341,40 +343,34 @@ static void ch_handler(int sig) } static struct test_st tests[] = { - { - .name = "aes-cbc-hmac-sha1 with force etm", - .server_prio = AES_CBC ":%FORCE_ETM", - .client_prio = AES_CBC ":%FORCE_ETM", - .etm = 1}, - { - .name = "aes-cbc-hmac-sha256 with force etm", - .server_prio = AES_CBC_SHA256 ":%FORCE_ETM", - .client_prio = AES_CBC_SHA256 ":%FORCE_ETM", - .etm = 1}, - { - .name = "server aes-cbc-hmac-sha1 with force etm, gcm fallback", - .server_prio = AES_CBC_TLS12 ":+AES-128-GCM:%FORCE_ETM", - .client_prio = AES_CBC_TLS12 ":+AES-128-GCM:%NO_ETM", - .etm = 0}, - { - .name = "aes-gcm with force etm", - .server_prio = AES_GCM ":%FORCE_ETM", - .client_prio = AES_GCM ":%FORCE_ETM", - .etm = 0}, - { - .name = "server aes-cbc-hmac-sha1 with force etm failure", - .server_prio = AES_CBC ":%FORCE_ETM", - .client_prio = AES_CBC ":%NO_ETM", - .etm = 0, - .client_err = GNUTLS_E_PREMATURE_TERMINATION, - .server_err = GNUTLS_E_NO_CIPHER_SUITES}, - { - .name = "client aes-cbc-hmac-sha1 with force etm failure", - .server_prio = AES_CBC ":%NO_ETM", - .client_prio = AES_CBC ":%FORCE_ETM", - .etm = 0, - .client_err = GNUTLS_E_UNWANTED_ALGORITHM, - .server_err = -1} + { .name = "aes-cbc-hmac-sha1 with force etm", + .server_prio = AES_CBC ":%FORCE_ETM", + .client_prio = AES_CBC ":%FORCE_ETM", + .etm = 1 }, + { .name = "aes-cbc-hmac-sha256 with force etm", + .server_prio = AES_CBC_SHA256 ":%FORCE_ETM", + .client_prio = AES_CBC_SHA256 ":%FORCE_ETM", + .etm = 1 }, + { .name = "server aes-cbc-hmac-sha1 with force etm, gcm fallback", + .server_prio = AES_CBC_TLS12 ":+AES-128-GCM:%FORCE_ETM", + .client_prio = AES_CBC_TLS12 ":+AES-128-GCM:%NO_ETM", + .etm = 0 }, + { .name = "aes-gcm with force etm", + .server_prio = AES_GCM ":%FORCE_ETM", + .client_prio = AES_GCM ":%FORCE_ETM", + .etm = 0 }, + { .name = "server aes-cbc-hmac-sha1 with force etm failure", + .server_prio = AES_CBC ":%FORCE_ETM", + .client_prio = AES_CBC ":%NO_ETM", + .etm = 0, + .client_err = GNUTLS_E_PREMATURE_TERMINATION, + .server_err = GNUTLS_E_NO_CIPHER_SUITES }, + { .name = "client aes-cbc-hmac-sha1 with force etm failure", + .server_prio = AES_CBC ":%NO_ETM", + .client_prio = AES_CBC ":%FORCE_ETM", + .etm = 0, + .client_err = GNUTLS_E_UNWANTED_ALGORITHM, + .server_err = -1 } }; void doit(void) @@ -386,4 +382,4 @@ void doit(void) start(&tests[i]); } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls-neg-ext-key.c b/tests/tls-neg-ext-key.c index 2bc5607df2..2b1ee93585 100644 --- a/tests/tls-neg-ext-key.c +++ b/tests/tls-neg-ext-key.c @@ -22,7 +22,7 @@ /* This tests TLS negotiation using the gnutls_privkey_import_ext2() APIs */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,9 +30,9 @@ #include #include #ifndef _WIN32 -# include -# include -# include +#include +#include +#include #endif #include #include @@ -50,37 +50,31 @@ static void tls_log_func(int level, const char *str) /* sha1 hash of "hello" string */ const gnutls_datum_t sha1_hash_data = { - (void *) - "\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" - "\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", + (void *)"\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" + "\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", 20 }; const gnutls_datum_t sha256_hash_data = { - (void *) - "\x2c\xf2\x4d\xba\x5f\xb0\xa3\x0e\x26\xe8\x3b\x2a\xc5\xb9\xe2\x9e" - "\x1b\x16\x1e\x5c\x1f\xa7\x42\x5e\x73\x04\x33\x62\x93\x8b\x98\x24", + (void *)"\x2c\xf2\x4d\xba\x5f\xb0\xa3\x0e\x26\xe8\x3b\x2a\xc5\xb9\xe2\x9e" + "\x1b\x16\x1e\x5c\x1f\xa7\x42\x5e\x73\x04\x33\x62\x93\x8b\x98\x24", 32 }; -const gnutls_datum_t raw_data = { - (void *)"hello", - 5 -}; +const gnutls_datum_t raw_data = { (void *)"hello", 5 }; struct key_cb_data { - gnutls_privkey_t rkey; /* the real thing */ + gnutls_privkey_t rkey; /* the real thing */ }; -static -int key_cb_sign_func(gnutls_privkey_t key, void *userdata, - const gnutls_datum_t * data, gnutls_datum_t * signature) +static int key_cb_sign_func(gnutls_privkey_t key, void *userdata, + const gnutls_datum_t *data, + gnutls_datum_t *signature) { struct key_cb_data *p = userdata; - return gnutls_privkey_sign_hash(p->rkey, 0, - GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, data, - signature); + return gnutls_privkey_sign_hash( + p->rkey, 0, GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, data, signature); } static void key_cb_deinit_func(gnutls_privkey_t key, void *userdata) @@ -90,11 +84,10 @@ static void key_cb_deinit_func(gnutls_privkey_t key, void *userdata) free(userdata); } -#define testfail(fmt, ...) \ - fail("%s: "fmt, name, ##__VA_ARGS__) +#define testfail(fmt, ...) fail("%s: " fmt, name, ##__VA_ARGS__) static gnutls_privkey_t load_virt_privkey(const char *name, - const gnutls_datum_t * txtkey, + const gnutls_datum_t *txtkey, gnutls_pk_algorithm_t pk, int exp_ret) { gnutls_privkey_t privkey; @@ -114,16 +107,15 @@ static gnutls_privkey_t load_virt_privkey(const char *name, if (ret < 0) testfail("gnutls_privkey_init\n"); - ret = - gnutls_privkey_import_x509_raw(userdata->rkey, txtkey, - GNUTLS_X509_FMT_PEM, NULL, 0); + ret = gnutls_privkey_import_x509_raw(userdata->rkey, txtkey, + GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) testfail("gnutls_privkey_import\n"); - ret = - gnutls_privkey_import_ext2(privkey, pk, userdata, key_cb_sign_func, - NULL, key_cb_deinit_func, - GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE); + ret = gnutls_privkey_import_ext2(privkey, pk, userdata, + key_cb_sign_func, NULL, + key_cb_deinit_func, + GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE); if (ret < 0) { if (ret == exp_ret) { gnutls_privkey_deinit(userdata->rkey); @@ -138,13 +130,12 @@ static gnutls_privkey_t load_virt_privkey(const char *name, return privkey; } -static -void try_with_key(const char *name, const char *client_prio, - gnutls_kx_algorithm_t client_kx, - gnutls_sign_algorithm_t server_sign_algo, - gnutls_sign_algorithm_t client_sign_algo, - const gnutls_datum_t * serv_cert, - gnutls_privkey_t key, int exp_serv_err) +static void try_with_key(const char *name, const char *client_prio, + gnutls_kx_algorithm_t client_kx, + gnutls_sign_algorithm_t server_sign_algo, + gnutls_sign_algorithm_t client_sign_algo, + const gnutls_datum_t *serv_cert, gnutls_privkey_t key, + int exp_serv_err) { int ret; gnutls_pcert_st pcert_list[4]; @@ -186,9 +177,10 @@ void try_with_key(const char *name, const char *client_prio, assert(gnutls_init(&server, GNUTLS_SERVER) >= 0); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, s_xcred); - assert(gnutls_priority_set_direct(server, - "NORMAL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0:+VERS-SSL3.0:+ANON-ECDH:+ANON-DH:+ECDHE-RSA:+DHE-RSA:+RSA:+ECDHE-ECDSA:+CURVE-X25519:+SIGN-EDDSA-ED25519", - NULL) >= 0); + assert(gnutls_priority_set_direct( + server, + "NORMAL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0:+VERS-SSL3.0:+ANON-ECDH:+ANON-DH:+ECDHE-RSA:+DHE-RSA:+RSA:+ECDHE-ECDSA:+CURVE-X25519:+SIGN-EDDSA-ED25519", + NULL) >= 0); gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); gnutls_transport_set_ptr(server, server); @@ -232,10 +224,10 @@ void try_with_key(const char *name, const char *client_prio, } if (gnutls_kx_get(client) != client_kx) { - testfail - ("%s: got unexpected key exchange algorithm: %s (expected %s)\n", - name, gnutls_kx_get_name(gnutls_kx_get(client)), - gnutls_kx_get_name(client_kx)); + testfail( + "%s: got unexpected key exchange algorithm: %s (expected %s)\n", + name, gnutls_kx_get_name(gnutls_kx_get(client)), + gnutls_kx_get_name(client_kx)); exit(1); } @@ -244,33 +236,33 @@ void try_with_key(const char *name, const char *client_prio, if (version >= GNUTLS_TLS1_2) { ret = gnutls_sign_algorithm_get(server); if (ret != (int)server_sign_algo && server_sign_algo != 0) { - testfail - ("%s: got unexpected server signature algorithm: %d/%s\n", - name, ret, gnutls_sign_get_name(ret)); + testfail( + "%s: got unexpected server signature algorithm: %d/%s\n", + name, ret, gnutls_sign_get_name(ret)); exit(1); } ret = gnutls_sign_algorithm_get_client(server); if (ret != (int)client_sign_algo && client_sign_algo != 0) { - testfail - ("%s: got unexpected client signature algorithm: %d/%s\n", - name, ret, gnutls_sign_get_name(ret)); + testfail( + "%s: got unexpected client signature algorithm: %d/%s\n", + name, ret, gnutls_sign_get_name(ret)); exit(1); } ret = gnutls_sign_algorithm_get(client); if (ret != (int)server_sign_algo && server_sign_algo != 0) { - testfail - ("%s: cl: got unexpected server signature algorithm: %d/%s\n", - name, ret, gnutls_sign_get_name(ret)); + testfail( + "%s: cl: got unexpected server signature algorithm: %d/%s\n", + name, ret, gnutls_sign_get_name(ret)); exit(1); } ret = gnutls_sign_algorithm_get_client(client); if (ret != (int)client_sign_algo && client_sign_algo != 0) { - testfail - ("%s: cl: got unexpected client signature algorithm: %d/%s\n", - name, ret, gnutls_sign_get_name(ret)); + testfail( + "%s: cl: got unexpected client signature algorithm: %d/%s\n", + name, ret, gnutls_sign_get_name(ret)); exit(1); } } @@ -278,7 +270,7 @@ void try_with_key(const char *name, const char *client_prio, gnutls_bye(client, GNUTLS_SHUT_RDWR); gnutls_bye(server, GNUTLS_SHUT_RDWR); - cleanup: +cleanup: gnutls_deinit(client); gnutls_deinit(server); @@ -298,64 +290,58 @@ typedef struct test_st { } test_st; static const test_st tests[] = { - {.name = "TLS1.2 ecc key", - .pk = GNUTLS_PK_ECDSA, - .prio = - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:+ECDHE-ECDSA", - .cert = &server_ca3_localhost_ecc_cert, - .key = &server_ca3_ecc_key, - .exp_kx = GNUTLS_KX_ECDHE_ECDSA}, - {.name = "TLS1.3 ecc key", - .pk = GNUTLS_PK_ECDSA, - .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3", - .cert = &server_ca3_localhost_ecc_cert, - .key = &server_ca3_ecc_key, - .exp_kx = GNUTLS_KX_ECDHE_RSA}, - {.name = "rsa-sign key", - .pk = GNUTLS_PK_RSA, - .prio = - "NORMAL:-VERS-ALL:+VERS-TLS1.2:+VERS-TLS1.1:+ECDHE-RSA:+ECDHE-ECDSA", - .cert = &server_ca3_localhost_cert, - .key = &server_ca3_key, - .exp_kx = GNUTLS_KX_ECDHE_RSA}, - {.name = "rsa-sign key with rsa-pss sigs prioritized", - .pk = GNUTLS_PK_RSA, - .prio = - "NORMAL:-VERS-ALL:+VERS-TLS1.2:+VERS-TLS1.1:+ECDHE-RSA:+ECDHE-ECDSA:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA256:+SIGN-RSA-PSS-RSAE-SHA384:+SIGN-RSA-PSS-RSAE-SHA512:+SIGN-RSA-SHA256:+SIGN-RSA-SHA384:+SIGN-RSA-SHA512", - .cert = &server_ca3_localhost_cert, - .key = &server_ca3_key, - .exp_kx = GNUTLS_KX_ECDHE_RSA}, - {.name = "TLS 1.2 rsa-pss-sign key", - .pk = GNUTLS_PK_RSA_PSS, - .prio = - "NORMAL:-VERS-ALL:+VERS-TLS1.2:+VERS-TLS1.1:+ECDHE-RSA:+ECDHE-ECDSA", - .cert = &server_ca3_rsa_pss2_cert, - .key = &server_ca3_rsa_pss2_key, - .exp_kx = GNUTLS_KX_ECDHE_RSA, - .exp_key_err = GNUTLS_E_INVALID_REQUEST}, - {.name = "TLS 1.3 rsa-pss-sign key", - .pk = GNUTLS_PK_RSA_PSS, - .prio = - "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+ECDHE-RSA:+ECDHE-ECDSA", - .cert = &server_ca3_rsa_pss2_cert, - .key = &server_ca3_rsa_pss2_key, - .exp_kx = GNUTLS_KX_ECDHE_RSA, - .exp_key_err = GNUTLS_E_INVALID_REQUEST}, - {.name = "rsa-pss cert, rsa-sign key, no rsa-pss-rsae sigs", /* we expect the server to refuse negotiating */ - .pk = GNUTLS_PK_RSA, - .prio = - "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-SIGN-ALL:+SIGN-RSA-PSS-SHA256:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA512:+SIGN-RSA-SHA256:+SIGN-RSA-SHA384:+SIGN-RSA-SHA512", - .cert = &server_ca3_rsa_pss_cert, - .key = &server_ca3_rsa_pss_key, - .exp_kx = GNUTLS_KX_ECDHE_RSA, - .exp_serv_err = GNUTLS_E_NO_CIPHER_SUITES}, - {.name = "ed25519 cert, ed25519 key", /* we expect the server to refuse negotiating */ - .pk = GNUTLS_PK_EDDSA_ED25519, - .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA", - .cert = &server_ca3_eddsa_cert, - .key = &server_ca3_eddsa_key, - .exp_kx = GNUTLS_KX_ECDHE_RSA, - .exp_key_err = GNUTLS_E_INVALID_REQUEST} + { .name = "TLS1.2 ecc key", + .pk = GNUTLS_PK_ECDSA, + .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:+ECDHE-ECDSA", + .cert = &server_ca3_localhost_ecc_cert, + .key = &server_ca3_ecc_key, + .exp_kx = GNUTLS_KX_ECDHE_ECDSA }, + { .name = "TLS1.3 ecc key", + .pk = GNUTLS_PK_ECDSA, + .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3", + .cert = &server_ca3_localhost_ecc_cert, + .key = &server_ca3_ecc_key, + .exp_kx = GNUTLS_KX_ECDHE_RSA }, + { .name = "rsa-sign key", + .pk = GNUTLS_PK_RSA, + .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.2:+VERS-TLS1.1:+ECDHE-RSA:+ECDHE-ECDSA", + .cert = &server_ca3_localhost_cert, + .key = &server_ca3_key, + .exp_kx = GNUTLS_KX_ECDHE_RSA }, + { .name = "rsa-sign key with rsa-pss sigs prioritized", + .pk = GNUTLS_PK_RSA, + .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.2:+VERS-TLS1.1:+ECDHE-RSA:+ECDHE-ECDSA:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA256:+SIGN-RSA-PSS-RSAE-SHA384:+SIGN-RSA-PSS-RSAE-SHA512:+SIGN-RSA-SHA256:+SIGN-RSA-SHA384:+SIGN-RSA-SHA512", + .cert = &server_ca3_localhost_cert, + .key = &server_ca3_key, + .exp_kx = GNUTLS_KX_ECDHE_RSA }, + { .name = "TLS 1.2 rsa-pss-sign key", + .pk = GNUTLS_PK_RSA_PSS, + .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.2:+VERS-TLS1.1:+ECDHE-RSA:+ECDHE-ECDSA", + .cert = &server_ca3_rsa_pss2_cert, + .key = &server_ca3_rsa_pss2_key, + .exp_kx = GNUTLS_KX_ECDHE_RSA, + .exp_key_err = GNUTLS_E_INVALID_REQUEST }, + { .name = "TLS 1.3 rsa-pss-sign key", + .pk = GNUTLS_PK_RSA_PSS, + .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+ECDHE-RSA:+ECDHE-ECDSA", + .cert = &server_ca3_rsa_pss2_cert, + .key = &server_ca3_rsa_pss2_key, + .exp_kx = GNUTLS_KX_ECDHE_RSA, + .exp_key_err = GNUTLS_E_INVALID_REQUEST }, + { .name = "rsa-pss cert, rsa-sign key, no rsa-pss-rsae sigs", /* we expect the server to refuse negotiating */ + .pk = GNUTLS_PK_RSA, + .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-SIGN-ALL:+SIGN-RSA-PSS-SHA256:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA512:+SIGN-RSA-SHA256:+SIGN-RSA-SHA384:+SIGN-RSA-SHA512", + .cert = &server_ca3_rsa_pss_cert, + .key = &server_ca3_rsa_pss_key, + .exp_kx = GNUTLS_KX_ECDHE_RSA, + .exp_serv_err = GNUTLS_E_NO_CIPHER_SUITES }, + { .name = "ed25519 cert, ed25519 key", /* we expect the server to refuse negotiating */ + .pk = GNUTLS_PK_EDDSA_ED25519, + .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA", + .cert = &server_ca3_eddsa_cert, + .key = &server_ca3_eddsa_key, + .exp_kx = GNUTLS_KX_ECDHE_RSA, + .exp_key_err = GNUTLS_E_INVALID_REQUEST } }; void doit(void) @@ -372,16 +358,14 @@ void doit(void) for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++) { success("checking: %s\n", tests[i].name); - privkey = - load_virt_privkey(tests[i].name, tests[i].key, tests[i].pk, - tests[i].exp_key_err); + privkey = load_virt_privkey(tests[i].name, tests[i].key, + tests[i].pk, tests[i].exp_key_err); if (privkey == NULL && tests[i].exp_key_err < 0) continue; assert(privkey != 0); - try_with_key(tests[i].name, tests[i].prio, - tests[i].exp_kx, 0, 0, - tests[i].cert, privkey, tests[i].exp_serv_err); + try_with_key(tests[i].name, tests[i].prio, tests[i].exp_kx, 0, + 0, tests[i].cert, privkey, tests[i].exp_serv_err); } gnutls_global_deinit(); diff --git a/tests/tls-neg-ext4-key.c b/tests/tls-neg-ext4-key.c index 04218777ea..004d3e39f2 100644 --- a/tests/tls-neg-ext4-key.c +++ b/tests/tls-neg-ext4-key.c @@ -22,7 +22,7 @@ /* This tests TLS negotiation using the gnutls_privkey_import_ext2() APIs */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,9 +30,9 @@ #include #include #ifndef _WIN32 -# include -# include -# include +#include +#include +#include #endif #include #include @@ -48,13 +48,10 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "<%d> %s", level, str); } -const gnutls_datum_t raw_data = { - (void *)"hello", - 5 -}; +const gnutls_datum_t raw_data = { (void *)"hello", 5 }; struct key_cb_data { - gnutls_privkey_t rkey; /* the real thing */ + gnutls_privkey_t rkey; /* the real thing */ unsigned pk; unsigned sig; unsigned bits; @@ -81,11 +78,10 @@ static int key_cb_info_func(gnutls_privkey_t key, unsigned int flags, return -1; } -static -int key_cb_sign_data_func(gnutls_privkey_t key, gnutls_sign_algorithm_t sig, - void *userdata, unsigned int flags, - const gnutls_datum_t * data, - gnutls_datum_t * signature) +static int key_cb_sign_data_func(gnutls_privkey_t key, + gnutls_sign_algorithm_t sig, void *userdata, + unsigned int flags, const gnutls_datum_t *data, + gnutls_datum_t *signature) { struct key_cb_data *p = userdata; @@ -95,20 +91,19 @@ int key_cb_sign_data_func(gnutls_privkey_t key, gnutls_sign_algorithm_t sig, return gnutls_privkey_sign_data2(p->rkey, sig, 0, data, signature); } -static -int key_cb_sign_hash_func(gnutls_privkey_t key, gnutls_sign_algorithm_t sig, - void *userdata, unsigned int flags, - const gnutls_datum_t * data, - gnutls_datum_t * signature) +static int key_cb_sign_hash_func(gnutls_privkey_t key, + gnutls_sign_algorithm_t sig, void *userdata, + unsigned int flags, const gnutls_datum_t *data, + gnutls_datum_t *signature) { struct key_cb_data *p = userdata; if (sig == GNUTLS_SIGN_RSA_RAW) { if (debug) fprintf(stderr, "signing digestinfo with: raw RSA\n"); - return gnutls_privkey_sign_hash(p->rkey, 0, - GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, - data, signature); + return gnutls_privkey_sign_hash( + p->rkey, 0, GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, data, + signature); } else { if (debug) fprintf(stderr, "signing hash with: %s\n", @@ -118,10 +113,9 @@ int key_cb_sign_hash_func(gnutls_privkey_t key, gnutls_sign_algorithm_t sig, } } -static -int key_cb_decrypt_func(gnutls_privkey_t key, void *userdata, - const gnutls_datum_t * ciphertext, - gnutls_datum_t * plaintext) +static int key_cb_decrypt_func(gnutls_privkey_t key, void *userdata, + const gnutls_datum_t *ciphertext, + gnutls_datum_t *plaintext) { struct key_cb_data *p = userdata; @@ -135,11 +129,10 @@ static void key_cb_deinit_func(gnutls_privkey_t key, void *userdata) free(userdata); } -#define testfail(fmt, ...) \ - fail("%s: "fmt, name, ##__VA_ARGS__) +#define testfail(fmt, ...) fail("%s: " fmt, name, ##__VA_ARGS__) static gnutls_privkey_t load_virt_privkey(const char *name, - const gnutls_datum_t * txtkey, + const gnutls_datum_t *txtkey, gnutls_pk_algorithm_t pk, gnutls_sign_algorithm_t sig, int exp_ret) @@ -161,9 +154,8 @@ static gnutls_privkey_t load_virt_privkey(const char *name, if (ret < 0) testfail("gnutls_privkey_init\n"); - ret = - gnutls_privkey_import_x509_raw(userdata->rkey, txtkey, - GNUTLS_X509_FMT_PEM, NULL, 0); + ret = gnutls_privkey_import_x509_raw(userdata->rkey, txtkey, + GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) testfail("gnutls_privkey_import\n"); @@ -172,12 +164,10 @@ static gnutls_privkey_t load_virt_privkey(const char *name, userdata->pk = pk; userdata->sig = sig; - ret = - gnutls_privkey_import_ext4(privkey, userdata, key_cb_sign_data_func, - key_cb_sign_hash_func, - key_cb_decrypt_func, key_cb_deinit_func, - key_cb_info_func, - GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE); + ret = gnutls_privkey_import_ext4( + privkey, userdata, key_cb_sign_data_func, key_cb_sign_hash_func, + key_cb_decrypt_func, key_cb_deinit_func, key_cb_info_func, + GNUTLS_PRIVKEY_IMPORT_AUTO_RELEASE); if (ret < 0) { if (ret == exp_ret) { gnutls_privkey_deinit(userdata->rkey); @@ -192,13 +182,12 @@ static gnutls_privkey_t load_virt_privkey(const char *name, return privkey; } -static -void try_with_key(const char *name, const char *client_prio, - gnutls_kx_algorithm_t client_kx, - gnutls_sign_algorithm_t server_sign_algo, - gnutls_sign_algorithm_t client_sign_algo, - const gnutls_datum_t * serv_cert, - gnutls_privkey_t key, int exp_serv_err) +static void try_with_key(const char *name, const char *client_prio, + gnutls_kx_algorithm_t client_kx, + gnutls_sign_algorithm_t server_sign_algo, + gnutls_sign_algorithm_t client_sign_algo, + const gnutls_datum_t *serv_cert, gnutls_privkey_t key, + int exp_serv_err) { int ret; gnutls_pcert_st pcert_list[4]; @@ -284,10 +273,10 @@ void try_with_key(const char *name, const char *client_prio, } if (gnutls_kx_get(client) != client_kx) { - testfail - ("got unexpected key exchange algorithm: %s (expected %s)\n", - gnutls_kx_get_name(gnutls_kx_get(client)), - gnutls_kx_get_name(client_kx)); + testfail( + "got unexpected key exchange algorithm: %s (expected %s)\n", + gnutls_kx_get_name(gnutls_kx_get(client)), + gnutls_kx_get_name(client_kx)); exit(1); } @@ -296,33 +285,33 @@ void try_with_key(const char *name, const char *client_prio, if (version >= GNUTLS_TLS1_2) { ret = gnutls_sign_algorithm_get(server); if (ret != (int)server_sign_algo && server_sign_algo != 0) { - testfail - ("got unexpected server signature algorithm: %d/%s\n", - ret, gnutls_sign_get_name(ret)); + testfail( + "got unexpected server signature algorithm: %d/%s\n", + ret, gnutls_sign_get_name(ret)); exit(1); } ret = gnutls_sign_algorithm_get_client(server); if (ret != (int)client_sign_algo && client_sign_algo != 0) { - testfail - ("got unexpected client signature algorithm: %d/%s\n", - ret, gnutls_sign_get_name(ret)); + testfail( + "got unexpected client signature algorithm: %d/%s\n", + ret, gnutls_sign_get_name(ret)); exit(1); } ret = gnutls_sign_algorithm_get(client); if (ret != (int)server_sign_algo && server_sign_algo != 0) { - testfail - ("cl: got unexpected server signature algorithm: %d/%s\n", - ret, gnutls_sign_get_name(ret)); + testfail( + "cl: got unexpected server signature algorithm: %d/%s\n", + ret, gnutls_sign_get_name(ret)); exit(1); } ret = gnutls_sign_algorithm_get_client(client); if (ret != (int)client_sign_algo && client_sign_algo != 0) { - testfail - ("cl: got unexpected client signature algorithm: %d/%s\n", - ret, gnutls_sign_get_name(ret)); + testfail( + "cl: got unexpected client signature algorithm: %d/%s\n", + ret, gnutls_sign_get_name(ret)); exit(1); } } @@ -330,7 +319,7 @@ void try_with_key(const char *name, const char *client_prio, gnutls_bye(client, GNUTLS_SHUT_RDWR); gnutls_bye(server, GNUTLS_SHUT_RDWR); - cleanup: +cleanup: gnutls_deinit(client); gnutls_deinit(server); @@ -351,140 +340,140 @@ typedef struct test_st { } test_st; static const test_st tests[] = { - {.name = "tls1.2 ecc key", - .pk = GNUTLS_PK_ECDSA, - .prio = - "NORMAL:-KX-ALL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2", - .cert = &server_ca3_localhost_ecc_cert, - .key = &server_ca3_ecc_key, - .sig = GNUTLS_SIGN_ECDSA_SHA256, - .exp_kx = GNUTLS_KX_ECDHE_ECDSA}, - {.name = "tls1.0 ecc key", - .pk = GNUTLS_PK_ECDSA, - .prio = - "NORMAL:-KX-ALL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0", - .cert = &server_ca3_localhost_ecc_cert, - .key = &server_ca3_ecc_key, - .sig = GNUTLS_SIGN_ECDSA_SHA256, - .exp_kx = GNUTLS_KX_ECDHE_ECDSA}, - {.name = "tls1.1 ecc key", - .pk = GNUTLS_PK_ECDSA, - .prio = - "NORMAL:-KX-ALL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1", - .cert = &server_ca3_localhost_ecc_cert, - .key = &server_ca3_ecc_key, - .sig = GNUTLS_SIGN_ECDSA_SHA256, - .exp_kx = GNUTLS_KX_ECDHE_ECDSA}, - {.name = "tls1.2 rsa-sign key", - .pk = GNUTLS_PK_RSA, - .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2", - .cert = &server_ca3_localhost_cert, - .key = &server_ca3_key, - .sig = GNUTLS_SIGN_RSA_SHA256, - .exp_kx = GNUTLS_KX_ECDHE_RSA}, - {.name = "tls1.0 rsa-sign key", - .pk = GNUTLS_PK_RSA, - .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0", - .cert = &server_ca3_localhost_cert, - .key = &server_ca3_key, - .sig = GNUTLS_SIGN_RSA_SHA256, - .exp_kx = GNUTLS_KX_ECDHE_RSA}, - {.name = "tls1.0 rsa-decrypt key", - .pk = GNUTLS_PK_RSA, - .prio = "NORMAL:-KX-ALL:+RSA:-VERS-ALL:+VERS-TLS1.0", - .cert = &server_ca3_localhost_cert, - .key = &server_ca3_key, - .exp_kx = GNUTLS_KX_RSA}, - {.name = "tls1.1 rsa-sign key", - .pk = GNUTLS_PK_RSA, - .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1", - .cert = &server_ca3_localhost_cert, - .key = &server_ca3_key, - .sig = GNUTLS_SIGN_RSA_SHA256, - .exp_kx = GNUTLS_KX_ECDHE_RSA}, - {.name = "tls1.2 rsa-sign key with rsa-pss sigs prioritized", - .pk = GNUTLS_PK_RSA, - .prio = - "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-SIGN-ALL:+SIGN-RSA-PSS-SHA256:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA512:+SIGN-RSA-SHA256:+SIGN-RSA-SHA384:+SIGN-RSA-SHA512:-VERS-ALL:+VERS-TLS1.2", - .cert = &server_ca3_localhost_cert, - .key = &server_ca3_key, - .sig = GNUTLS_SIGN_RSA_SHA256, - .exp_kx = GNUTLS_KX_ECDHE_RSA}, - {.name = "tls1.2 rsa-pss-sign key", - .pk = GNUTLS_PK_RSA_PSS, - .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2", - .cert = &server_ca3_rsa_pss2_cert, - .key = &server_ca3_rsa_pss2_key, - .sig = GNUTLS_SIGN_RSA_PSS_SHA256, - .exp_kx = GNUTLS_KX_ECDHE_RSA, - }, - {.name = "tls1.2 rsa-pss cert, rsa-sign key", /* we expect the server to refuse negotiating */ - .pk = GNUTLS_PK_RSA, - .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2", - .cert = &server_ca3_rsa_pss_cert, - .key = &server_ca3_rsa_pss_key, - .exp_kx = GNUTLS_KX_ECDHE_RSA, - .exp_serv_err = GNUTLS_E_NO_CIPHER_SUITES}, - {.name = "tls1.2 ed25519 cert, ed25519 key", - .pk = GNUTLS_PK_EDDSA_ED25519, - .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2", - .cert = &server_ca3_eddsa_cert, - .key = &server_ca3_eddsa_key, - .sig = GNUTLS_SIGN_EDDSA_ED25519, - .exp_kx = GNUTLS_KX_ECDHE_ECDSA, - }, - {.name = "tls1.2 rsa-decrypt key", - .pk = GNUTLS_PK_RSA, - .prio = "NORMAL:-KX-ALL:+RSA:-VERS-ALL:+VERS-TLS1.2", - .cert = &server_ca3_localhost_cert, - .key = &server_ca3_key, - .exp_kx = GNUTLS_KX_RSA}, - {.name = "tls1.3 ecc key", - .pk = GNUTLS_PK_ECDSA, - .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3", - .cert = &server_ca3_localhost_ecc_cert, - .key = &server_ca3_ecc_key, - .sig = GNUTLS_SIGN_ECDSA_SECP256R1_SHA256, - .exp_kx = GNUTLS_KX_ECDHE_RSA}, - {.name = "tls1.3 rsa-sign key", - .pk = GNUTLS_PK_RSA, - .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3", - .cert = &server_ca3_localhost_cert, - .key = &server_ca3_key, - .sig = GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, - .exp_kx = GNUTLS_KX_ECDHE_RSA}, - {.name = "tls1.3 rsa-pss-sign key", - .pk = GNUTLS_PK_RSA_PSS, - .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3", - .cert = &server_ca3_rsa_pss2_cert, - .key = &server_ca3_rsa_pss2_key, - .sig = GNUTLS_SIGN_RSA_PSS_SHA256, - .exp_kx = GNUTLS_KX_ECDHE_RSA, - }, - {.name = "tls1.3 rsa-pss cert, rsa-sign key", /* we expect the server to attempt to downgrade to TLS 1.2, but it is not possible because it is not enabled */ - .pk = GNUTLS_PK_RSA, - .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3", - .cert = &server_ca3_rsa_pss_cert, - .key = &server_ca3_rsa_pss_key, - .sig = GNUTLS_SIGN_RSA_SHA256, - .exp_kx = GNUTLS_KX_ECDHE_RSA, - .exp_serv_err = GNUTLS_E_NO_CIPHER_SUITES}, - {.name = "tls1.3 rsa-pss cert, rsa-sign key, downgrade to tls1.2", /* we expect the server to downgrade to TLS 1.2 and refuse negotiating */ - .pk = GNUTLS_PK_RSA, - .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2", - .cert = &server_ca3_rsa_pss_cert, - .key = &server_ca3_rsa_pss_key, - .sig = GNUTLS_SIGN_RSA_SHA256, - .exp_kx = GNUTLS_KX_ECDHE_RSA, - .exp_serv_err = GNUTLS_E_NO_CIPHER_SUITES}, - {.name = "tls1.3 ed25519 cert, ed25519 key", - .pk = GNUTLS_PK_EDDSA_ED25519, - .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3", - .cert = &server_ca3_eddsa_cert, - .key = &server_ca3_eddsa_key, - .sig = GNUTLS_SIGN_EDDSA_ED25519, - .exp_kx = GNUTLS_KX_ECDHE_RSA, - } + { .name = "tls1.2 ecc key", + .pk = GNUTLS_PK_ECDSA, + .prio = "NORMAL:-KX-ALL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2", + .cert = &server_ca3_localhost_ecc_cert, + .key = &server_ca3_ecc_key, + .sig = GNUTLS_SIGN_ECDSA_SHA256, + .exp_kx = GNUTLS_KX_ECDHE_ECDSA }, + { .name = "tls1.0 ecc key", + .pk = GNUTLS_PK_ECDSA, + .prio = "NORMAL:-KX-ALL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0", + .cert = &server_ca3_localhost_ecc_cert, + .key = &server_ca3_ecc_key, + .sig = GNUTLS_SIGN_ECDSA_SHA256, + .exp_kx = GNUTLS_KX_ECDHE_ECDSA }, + { .name = "tls1.1 ecc key", + .pk = GNUTLS_PK_ECDSA, + .prio = "NORMAL:-KX-ALL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1", + .cert = &server_ca3_localhost_ecc_cert, + .key = &server_ca3_ecc_key, + .sig = GNUTLS_SIGN_ECDSA_SHA256, + .exp_kx = GNUTLS_KX_ECDHE_ECDSA }, + { .name = "tls1.2 rsa-sign key", + .pk = GNUTLS_PK_RSA, + .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2", + .cert = &server_ca3_localhost_cert, + .key = &server_ca3_key, + .sig = GNUTLS_SIGN_RSA_SHA256, + .exp_kx = GNUTLS_KX_ECDHE_RSA }, + { .name = "tls1.0 rsa-sign key", + .pk = GNUTLS_PK_RSA, + .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0", + .cert = &server_ca3_localhost_cert, + .key = &server_ca3_key, + .sig = GNUTLS_SIGN_RSA_SHA256, + .exp_kx = GNUTLS_KX_ECDHE_RSA }, + { .name = "tls1.0 rsa-decrypt key", + .pk = GNUTLS_PK_RSA, + .prio = "NORMAL:-KX-ALL:+RSA:-VERS-ALL:+VERS-TLS1.0", + .cert = &server_ca3_localhost_cert, + .key = &server_ca3_key, + .exp_kx = GNUTLS_KX_RSA }, + { .name = "tls1.1 rsa-sign key", + .pk = GNUTLS_PK_RSA, + .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1", + .cert = &server_ca3_localhost_cert, + .key = &server_ca3_key, + .sig = GNUTLS_SIGN_RSA_SHA256, + .exp_kx = GNUTLS_KX_ECDHE_RSA }, + { .name = "tls1.2 rsa-sign key with rsa-pss sigs prioritized", + .pk = GNUTLS_PK_RSA, + .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-SIGN-ALL:+SIGN-RSA-PSS-SHA256:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA512:+SIGN-RSA-SHA256:+SIGN-RSA-SHA384:+SIGN-RSA-SHA512:-VERS-ALL:+VERS-TLS1.2", + .cert = &server_ca3_localhost_cert, + .key = &server_ca3_key, + .sig = GNUTLS_SIGN_RSA_SHA256, + .exp_kx = GNUTLS_KX_ECDHE_RSA }, + { + .name = "tls1.2 rsa-pss-sign key", + .pk = GNUTLS_PK_RSA_PSS, + .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2", + .cert = &server_ca3_rsa_pss2_cert, + .key = &server_ca3_rsa_pss2_key, + .sig = GNUTLS_SIGN_RSA_PSS_SHA256, + .exp_kx = GNUTLS_KX_ECDHE_RSA, + }, + { .name = "tls1.2 rsa-pss cert, rsa-sign key", /* we expect the server to refuse negotiating */ + .pk = GNUTLS_PK_RSA, + .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2", + .cert = &server_ca3_rsa_pss_cert, + .key = &server_ca3_rsa_pss_key, + .exp_kx = GNUTLS_KX_ECDHE_RSA, + .exp_serv_err = GNUTLS_E_NO_CIPHER_SUITES }, + { + .name = "tls1.2 ed25519 cert, ed25519 key", + .pk = GNUTLS_PK_EDDSA_ED25519, + .prio = "NORMAL:+ECDHE-RSA:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2", + .cert = &server_ca3_eddsa_cert, + .key = &server_ca3_eddsa_key, + .sig = GNUTLS_SIGN_EDDSA_ED25519, + .exp_kx = GNUTLS_KX_ECDHE_ECDSA, + }, + { .name = "tls1.2 rsa-decrypt key", + .pk = GNUTLS_PK_RSA, + .prio = "NORMAL:-KX-ALL:+RSA:-VERS-ALL:+VERS-TLS1.2", + .cert = &server_ca3_localhost_cert, + .key = &server_ca3_key, + .exp_kx = GNUTLS_KX_RSA }, + { .name = "tls1.3 ecc key", + .pk = GNUTLS_PK_ECDSA, + .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3", + .cert = &server_ca3_localhost_ecc_cert, + .key = &server_ca3_ecc_key, + .sig = GNUTLS_SIGN_ECDSA_SECP256R1_SHA256, + .exp_kx = GNUTLS_KX_ECDHE_RSA }, + { .name = "tls1.3 rsa-sign key", + .pk = GNUTLS_PK_RSA, + .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3", + .cert = &server_ca3_localhost_cert, + .key = &server_ca3_key, + .sig = GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, + .exp_kx = GNUTLS_KX_ECDHE_RSA }, + { + .name = "tls1.3 rsa-pss-sign key", + .pk = GNUTLS_PK_RSA_PSS, + .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3", + .cert = &server_ca3_rsa_pss2_cert, + .key = &server_ca3_rsa_pss2_key, + .sig = GNUTLS_SIGN_RSA_PSS_SHA256, + .exp_kx = GNUTLS_KX_ECDHE_RSA, + }, + { .name = "tls1.3 rsa-pss cert, rsa-sign key", /* we expect the server to attempt to downgrade to TLS 1.2, but it is not possible because it is not enabled */ + .pk = GNUTLS_PK_RSA, + .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3", + .cert = &server_ca3_rsa_pss_cert, + .key = &server_ca3_rsa_pss_key, + .sig = GNUTLS_SIGN_RSA_SHA256, + .exp_kx = GNUTLS_KX_ECDHE_RSA, + .exp_serv_err = GNUTLS_E_NO_CIPHER_SUITES }, + { .name = "tls1.3 rsa-pss cert, rsa-sign key, downgrade to tls1.2", /* we expect the server to downgrade to TLS 1.2 and refuse negotiating */ + .pk = GNUTLS_PK_RSA, + .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2", + .cert = &server_ca3_rsa_pss_cert, + .key = &server_ca3_rsa_pss_key, + .sig = GNUTLS_SIGN_RSA_SHA256, + .exp_kx = GNUTLS_KX_ECDHE_RSA, + .exp_serv_err = GNUTLS_E_NO_CIPHER_SUITES }, + { + .name = "tls1.3 ed25519 cert, ed25519 key", + .pk = GNUTLS_PK_EDDSA_ED25519, + .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3", + .cert = &server_ca3_eddsa_cert, + .key = &server_ca3_eddsa_key, + .sig = GNUTLS_SIGN_EDDSA_ED25519, + .exp_kx = GNUTLS_KX_ECDHE_RSA, + } }; void doit(void) @@ -501,16 +490,15 @@ void doit(void) for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++) { success("checking: %s\n", tests[i].name); - privkey = - load_virt_privkey(tests[i].name, tests[i].key, tests[i].pk, - tests[i].sig, tests[i].exp_key_err); + privkey = load_virt_privkey(tests[i].name, tests[i].key, + tests[i].pk, tests[i].sig, + tests[i].exp_key_err); if (privkey == NULL && tests[i].exp_key_err < 0) continue; assert(privkey != 0); - try_with_key(tests[i].name, tests[i].prio, - tests[i].exp_kx, 0, 0, - tests[i].cert, privkey, tests[i].exp_serv_err); + try_with_key(tests[i].name, tests[i].prio, tests[i].exp_kx, 0, + 0, tests[i].cert, privkey, tests[i].exp_serv_err); } gnutls_global_deinit(); diff --git a/tests/tls-pthread.c b/tests/tls-pthread.c index 5c7ac08490..52e20b1405 100644 --- a/tests/tls-pthread.c +++ b/tests/tls-pthread.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,11 +33,11 @@ #include #include #ifndef _WIN32 -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include #endif #include #include "utils.h" @@ -68,10 +68,10 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -# define MSG "hello1111" -# define MSG2 "xxxxxxxxxxxx" +#define MSG "hello1111" +#define MSG2 "xxxxxxxxxxxx" -# define NO_MSGS 128 +#define NO_MSGS 128 static void *recv_thread(void *arg) { @@ -82,8 +82,8 @@ static void *recv_thread(void *arg) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); for (i = 0; i < NO_MSGS; i++) { /* the peer should reflect our messages */ @@ -92,9 +92,10 @@ static void *recv_thread(void *arg) } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) fail("client: recv failed: %s\n", gnutls_strerror(ret)); - if (ret != sizeof(MSG) - 1 - || memcmp(buf, MSG, sizeof(MSG) - 1) != 0) { - fail("client: recv failed; not the expected values (got: %d, exp: %d)\n", ret, (int)sizeof(MSG) - 1); + if (ret != sizeof(MSG) - 1 || + memcmp(buf, MSG, sizeof(MSG) - 1) != 0) { + fail("client: recv failed; not the expected values (got: %d, exp: %d)\n", + ret, (int)sizeof(MSG) - 1); } if (debug) @@ -108,7 +109,8 @@ static void *recv_thread(void *arg) if (ret < 0) fail("client: recv2 failed: %s\n", gnutls_strerror(ret)); - if (ret != sizeof(MSG2) - 1 || memcmp(buf, MSG2, sizeof(MSG2) - 1) != 0) { + if (ret != sizeof(MSG2) - 1 || + memcmp(buf, MSG2, sizeof(MSG2) - 1) != 0) { fail("client: recv2 failed; not the expected values\n"); } @@ -126,8 +128,7 @@ static void *recv_thread(void *arg) pthread_exit(0); } -static -void do_thread_stuff(gnutls_session_t session) +static void do_thread_stuff(gnutls_session_t session) { int ret; unsigned i; @@ -168,7 +169,6 @@ void do_thread_stuff(gnutls_session_t session) assert(pthread_join(id, &rval) == 0); assert(rval == 0); - } static void do_reflect_stuff(gnutls_session_t session) @@ -234,8 +234,8 @@ static void client(int fd, const char *prio, unsigned flags) assert(gnutls_priority_set_direct(session, prio, NULL) >= 0); - assert(gnutls_credentials_set - (session, GNUTLS_CRD_CERTIFICATE, x509_cred) >= 0); + assert(gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, + x509_cred) >= 0); gnutls_transport_set_int(session, fd); @@ -243,8 +243,7 @@ static void client(int fd, const char *prio, unsigned flags) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed: %s\n", gnutls_strerror(ret)); @@ -278,13 +277,13 @@ static void server(int fd, const char *prio, unsigned flags) */ global_init(); -# if 0 +#if 0 if (debug) { side = "server"; gnutls_global_set_log_function(tls_log_func); gnutls_global_set_log_level(4711); } -# endif +#endif assert(gnutls_certificate_allocate_credentials(&x509_cred) >= 0); assert(gnutls_certificate_set_x509_key_mem(x509_cred, &server_cert, @@ -317,8 +316,8 @@ static void server(int fd, const char *prio, unsigned flags) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); if (flags & FLAG_CLI_DO_THREADS) do_reflect_stuff(session); @@ -336,8 +335,7 @@ static void server(int fd, const char *prio, unsigned flags) success("server: finished\n"); } -static -void run(const char *str, const char *prio, unsigned flags) +static void run(const char *str, const char *prio, unsigned flags) { int fd[2]; int ret; @@ -392,4 +390,4 @@ void doit(void) run("tls1.3 early start, threaded server", "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", FLAG_EARLY_START); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls-record-size-limit-asym.c b/tests/tls-record-size-limit-asym.c index b51e30150f..67a9d009ec 100644 --- a/tests/tls-record-size-limit-asym.c +++ b/tests/tls-record-size-limit-asym.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -112,8 +112,8 @@ static void start(const struct test_st *test) /* Init client */ assert(gnutls_certificate_allocate_credentials(&clientx509cred) >= 0); - assert(gnutls_certificate_set_x509_trust_mem - (clientx509cred, &ca2_cert, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca2_cert, + GNUTLS_X509_FMT_PEM) >= 0); assert(gnutls_init(&client, GNUTLS_CLIENT) >= 0); @@ -141,8 +141,8 @@ static void start(const struct test_st *test) exit(1); } if (ret != (int)test->server_exp.size) - fail("server: unexpected record size sent: %d (%d)\n", - ret, (int)test->server_exp.size); + fail("server: unexpected record size sent: %d (%d)\n", ret, + (int)test->server_exp.size); success("server: did not send a %d-byte packet\n", (int)test->server_exp.size); @@ -160,8 +160,8 @@ static void start(const struct test_st *test) exit(1); } if (ret != (int)test->client_exp.size) - fail("client: unexpected record size sent: %d (%d)\n", - ret, (int)test->client_exp.size); + fail("client: unexpected record size sent: %d (%d)\n", ret, + (int)test->client_exp.size); success("client: did not send a %d-byte packet\n", (int)test->server_max_size + 1); diff --git a/tests/tls-record-size-limit.c b/tests/tls-record-size-limit.c index 557a94569a..d4d73fa1c3 100644 --- a/tests/tls-record-size-limit.c +++ b/tests/tls-record-size-limit.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,20 +33,26 @@ #include #include "utils.h" -#define SKIP16(pos, total) { \ - uint16_t _s; \ - if (pos+2 > total) fail("error\n"); \ - _s = (msg->data[pos] << 8) | msg->data[pos+1]; \ - if ((size_t)(pos+2+_s) > total) fail("error\n"); \ - pos += 2+_s; \ +#define SKIP16(pos, total) \ + { \ + uint16_t _s; \ + if (pos + 2 > total) \ + fail("error\n"); \ + _s = (msg->data[pos] << 8) | msg->data[pos + 1]; \ + if ((size_t)(pos + 2 + _s) > total) \ + fail("error\n"); \ + pos += 2 + _s; \ } -#define SKIP8(pos, total) { \ - uint8_t _s; \ - if (pos+1 > total) fail("error\n"); \ - _s = msg->data[pos]; \ - if ((size_t)(pos+1+_s) > total) fail("error\n"); \ - pos += 1+_s; \ +#define SKIP8(pos, total) \ + { \ + uint8_t _s; \ + if (pos + 1 > total) \ + fail("error\n"); \ + _s = msg->data[pos]; \ + if ((size_t)(pos + 1 + _s) > total) \ + fail("error\n"); \ + pos += 1 + _s; \ } #define HANDSHAKE_SESSION_ID_POS 34 @@ -54,7 +60,10 @@ static size_t server_max_send_size; static size_t client_max_send_size; -#define SERVER_PUSH_ADD if (len > server_max_send_size + 5+32) fail("max record set to %d, len: %d\n", (int)server_max_send_size, (int)len); +#define SERVER_PUSH_ADD \ + if (len > server_max_send_size + 5 + 32) \ + fail("max record set to %d, len: %d\n", \ + (int)server_max_send_size, (int)len); #include "eagain-common.h" #include "cert-common.h" @@ -82,9 +91,9 @@ static int ext_callback(void *ctx, unsigned tls_id, const unsigned char *data, unsigned size) { struct handshake_cb_data_st *cb_data = ctx; - if (tls_id == 1) { /* max record size */ + if (tls_id == 1) { /* max record size */ cb_data->found_max_record_size = 1; - } else if (tls_id == 28) { /* record size limit */ + } else if (tls_id == 28) { /* record size limit */ cb_data->found_record_size_limit = 1; } return 0; @@ -92,7 +101,7 @@ static int ext_callback(void *ctx, unsigned tls_id, const unsigned char *data, static int handshake_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { int ret; unsigned pos; @@ -111,15 +120,13 @@ static int handshake_callback(gnutls_session_t session, unsigned int htype, mmsg.data = &msg->data[pos]; mmsg.size = msg->size - pos; - ret = - gnutls_ext_raw_parse(&server_handshake_cb_data, - ext_callback, &mmsg, 0); + ret = gnutls_ext_raw_parse(&server_handshake_cb_data, + ext_callback, &mmsg, 0); assert(ret >= 0); break; case GNUTLS_HANDSHAKE_ENCRYPTED_EXTENSIONS: - ret = - gnutls_ext_raw_parse(&client_handshake_cb_data, - ext_callback, msg, 0); + ret = gnutls_ext_raw_parse(&client_handshake_cb_data, + ext_callback, msg, 0); assert(ret >= 0); break; case GNUTLS_HANDSHAKE_SERVER_HELLO: @@ -130,9 +137,8 @@ static int handshake_callback(gnutls_session_t session, unsigned int htype, mmsg.data = &msg->data[pos]; mmsg.size = msg->size - pos; - ret = - gnutls_ext_raw_parse(&client_handshake_cb_data, - ext_callback, &mmsg, 0); + ret = gnutls_ext_raw_parse(&client_handshake_cb_data, + ext_callback, &mmsg, 0); assert(ret >= 0); break; default: @@ -198,9 +204,8 @@ static void start(const struct test_st *test) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server2_cert, &server2_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server2_cert, + &server2_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); @@ -232,9 +237,8 @@ static void start(const struct test_st *test) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca2_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca2_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -266,8 +270,7 @@ static void start(const struct test_st *test) gnutls_transport_set_ptr(client, client); client_handshake_cb_data.session = client; - gnutls_handshake_set_hook_function(client, - GNUTLS_HANDSHAKE_ANY, + gnutls_handshake_set_hook_function(client, GNUTLS_HANDSHAKE_ANY, GNUTLS_HOOK_POST, handshake_callback); @@ -280,8 +283,8 @@ static void start(const struct test_st *test) exit(1); } if (ret != (int)test->server_exp.size) - fail("server: unexpected record size sent: %d (%d)\n", - ret, (int)test->server_exp.size); + fail("server: unexpected record size sent: %d (%d)\n", ret, + (int)test->server_exp.size); success("server: did not send a %d-byte packet\n", (int)server_max_send_size + 1); @@ -299,8 +302,8 @@ static void start(const struct test_st *test) exit(1); } if (ret != (int)test->client_exp.size) - fail("client: unexpected record size sent: %d (%d)\n", - ret, (int)test->client_exp.size); + fail("client: unexpected record size sent: %d (%d)\n", ret, + (int)test->client_exp.size); success("client: did not send a %d-byte packet\n", (int)client_max_send_size + 1); @@ -330,172 +333,128 @@ static void start(const struct test_st *test) } static const struct test_st tests[] = { - { - .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.2", - .server_max_size = 511, - .client_max_size = 511, - .server_exp = { - .error = GNUTLS_E_INVALID_REQUEST, - .size = 16384, - .max_record_size = 0, - .record_size_limit = 1}, - .client_exp = { - .error = GNUTLS_E_INVALID_REQUEST, - .size = 16384, - .max_record_size = 0, - .record_size_limit = 1} - }, - { - .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.2", - .server_max_size = 512, - .client_max_size = 512, - .server_exp = { - .error = 0, - .size = 512, - .max_record_size = 1, - .record_size_limit = 1}, - .client_exp = { - .error = 0, - .size = 512, - .max_record_size = 0, - .record_size_limit = 1} - }, - { - .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.2", - .server_max_size = 8192, - .client_max_size = 8192, - .server_exp = { - .error = 0, - .size = 8192, - .max_record_size = 0, - .record_size_limit = 1}, - .client_exp = { - .error = 0, - .size = 8192, - .max_record_size = 0, - .record_size_limit = 1} - }, - { - .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.2", - .server_max_size = 16384, - .client_max_size = 16384, - .server_exp = { - .error = 0, - .size = 16384, - .max_record_size = 0, - .record_size_limit = 1}, - .client_exp = { - .error = 0, - .size = 16384, - .max_record_size = 0, - .record_size_limit = 1} - }, - { - .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.2", - .server_max_size = 16385, - .client_max_size = 16385, - .server_exp = { - .error = GNUTLS_E_INVALID_REQUEST, - .size = 16384, - .max_record_size = 0, - .record_size_limit = 1}, - .client_exp = { - .error = GNUTLS_E_INVALID_REQUEST, - .size = 16384, - .max_record_size = 0, - .record_size_limit = 1} - }, - - { - .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3", - .server_max_size = 511, - .client_max_size = 511, - .server_exp = { - .error = GNUTLS_E_INVALID_REQUEST, - .size = 16384, - .max_record_size = 0, - .record_size_limit = 1}, - .client_exp = { - .error = GNUTLS_E_INVALID_REQUEST, - .size = 16384, - .max_record_size = 0, - .record_size_limit = 1} - }, - { - .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3", - .server_max_size = 512, - .client_max_size = 512, - .server_exp = { - .error = 0, - .size = 512, - .max_record_size = 1, - .record_size_limit = 1}, - .client_exp = { - .error = 0, - .size = 512, - .max_record_size = 0, - .record_size_limit = 1} - }, - { - .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3", - .server_max_size = 8192, - .client_max_size = 8192, - .server_exp = { - .error = 0, - .size = 8192, - .max_record_size = 0, - .record_size_limit = 1}, - .client_exp = { - .error = 0, - .size = 8192, - .max_record_size = 0, - .record_size_limit = 1} - }, - { - .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3", - .server_max_size = 16384, - .client_max_size = 16384, - .server_exp = { - .error = 0, - .size = 16384, - .max_record_size = 0, - .record_size_limit = 1}, - .client_exp = { - .error = 0, - .size = 16384, - .max_record_size = 0, - .record_size_limit = 1} - }, - { - .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3", - .server_max_size = 16383, - .client_max_size = 16384, - .server_exp = { - .error = 0, - .size = 16383, - .max_record_size = 0, - .record_size_limit = 1}, - .client_exp = { - .error = 0, - .size = 16383, - .max_record_size = 0, - .record_size_limit = 1} - }, - { - .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3", - .server_max_size = 16385, - .client_max_size = 16385, - .server_exp = { - .error = GNUTLS_E_INVALID_REQUEST, - .size = 16384, - .max_record_size = 0, - .record_size_limit = 1}, - .client_exp = { - .error = GNUTLS_E_INVALID_REQUEST, - .size = 16384, - .max_record_size = 0, - .record_size_limit = 1} - } + { .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.2", + .server_max_size = 511, + .client_max_size = 511, + .server_exp = { .error = GNUTLS_E_INVALID_REQUEST, + .size = 16384, + .max_record_size = 0, + .record_size_limit = 1 }, + .client_exp = { .error = GNUTLS_E_INVALID_REQUEST, + .size = 16384, + .max_record_size = 0, + .record_size_limit = 1 } }, + { .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.2", + .server_max_size = 512, + .client_max_size = 512, + .server_exp = { .error = 0, + .size = 512, + .max_record_size = 1, + .record_size_limit = 1 }, + .client_exp = { .error = 0, + .size = 512, + .max_record_size = 0, + .record_size_limit = 1 } }, + { .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.2", + .server_max_size = 8192, + .client_max_size = 8192, + .server_exp = { .error = 0, + .size = 8192, + .max_record_size = 0, + .record_size_limit = 1 }, + .client_exp = { .error = 0, + .size = 8192, + .max_record_size = 0, + .record_size_limit = 1 } }, + { .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.2", + .server_max_size = 16384, + .client_max_size = 16384, + .server_exp = { .error = 0, + .size = 16384, + .max_record_size = 0, + .record_size_limit = 1 }, + .client_exp = { .error = 0, + .size = 16384, + .max_record_size = 0, + .record_size_limit = 1 } }, + { .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.2", + .server_max_size = 16385, + .client_max_size = 16385, + .server_exp = { .error = GNUTLS_E_INVALID_REQUEST, + .size = 16384, + .max_record_size = 0, + .record_size_limit = 1 }, + .client_exp = { .error = GNUTLS_E_INVALID_REQUEST, + .size = 16384, + .max_record_size = 0, + .record_size_limit = 1 } }, + + { .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3", + .server_max_size = 511, + .client_max_size = 511, + .server_exp = { .error = GNUTLS_E_INVALID_REQUEST, + .size = 16384, + .max_record_size = 0, + .record_size_limit = 1 }, + .client_exp = { .error = GNUTLS_E_INVALID_REQUEST, + .size = 16384, + .max_record_size = 0, + .record_size_limit = 1 } }, + { .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3", + .server_max_size = 512, + .client_max_size = 512, + .server_exp = { .error = 0, + .size = 512, + .max_record_size = 1, + .record_size_limit = 1 }, + .client_exp = { .error = 0, + .size = 512, + .max_record_size = 0, + .record_size_limit = 1 } }, + { .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3", + .server_max_size = 8192, + .client_max_size = 8192, + .server_exp = { .error = 0, + .size = 8192, + .max_record_size = 0, + .record_size_limit = 1 }, + .client_exp = { .error = 0, + .size = 8192, + .max_record_size = 0, + .record_size_limit = 1 } }, + { .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3", + .server_max_size = 16384, + .client_max_size = 16384, + .server_exp = { .error = 0, + .size = 16384, + .max_record_size = 0, + .record_size_limit = 1 }, + .client_exp = { .error = 0, + .size = 16384, + .max_record_size = 0, + .record_size_limit = 1 } }, + { .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3", + .server_max_size = 16383, + .client_max_size = 16384, + .server_exp = { .error = 0, + .size = 16383, + .max_record_size = 0, + .record_size_limit = 1 }, + .client_exp = { .error = 0, + .size = 16383, + .max_record_size = 0, + .record_size_limit = 1 } }, + { .prio = "NORMAL:-VERS-ALL:+VERS-TLS1.3", + .server_max_size = 16385, + .client_max_size = 16385, + .server_exp = { .error = GNUTLS_E_INVALID_REQUEST, + .size = 16384, + .max_record_size = 0, + .record_size_limit = 1 }, + .client_exp = { .error = GNUTLS_E_INVALID_REQUEST, + .size = 16384, + .max_record_size = 0, + .record_size_limit = 1 } } }; void doit(void) diff --git a/tests/tls-session-ext-override.c b/tests/tls-session-ext-override.c index 81edbe0ce1..cd931e47d3 100644 --- a/tests/tls-session-ext-override.c +++ b/tests/tls-session-ext-override.c @@ -24,7 +24,7 @@ * at the session level */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -40,18 +40,18 @@ int main(int argc, char **argv) #else -# include -# include -# include -# if !defined(_WIN32) -# include -# include -# endif -# include -# include +#include +#include +#include +#if !defined(_WIN32) +#include +#include +#endif +#include +#include -# include "utils.h" -# include "cert-common.h" +#include "utils.h" +#include "cert-common.h" const char *side = ""; @@ -66,10 +66,7 @@ static int TLSEXT_TYPE_server_sent = 0; static int TLSEXT_TYPE_server_received = 0; static int overridden_extension = -1; -static const unsigned char ext_data[] = { - 0xFE, - 0xED -}; +static const unsigned char ext_data[] = { 0xFE, 0xED }; static int ext_recv_client_params(gnutls_session_t session, const unsigned char *buf, size_t buflen) @@ -84,7 +81,7 @@ static int ext_recv_client_params(gnutls_session_t session, gnutls_ext_set_data(session, overridden_extension, session); - return 0; //Success + return 0; //Success } static int ext_send_client_params(gnutls_session_t session, @@ -106,7 +103,7 @@ static int ext_recv_server_params(gnutls_session_t session, TLSEXT_TYPE_server_received = 1; - return 0; //Success + return 0; //Success } static int ext_send_server_params(gnutls_session_t session, @@ -148,32 +145,26 @@ static void client(int sd) gnutls_transport_set_int(session, sd); gnutls_handshake_set_timeout(session, get_timeout()); - ret = - gnutls_session_ext_register(session, "ext_client", - overridden_extension, GNUTLS_EXT_TLS, - ext_recv_client_params, - ext_send_client_params, NULL, NULL, - NULL, 0); + ret = gnutls_session_ext_register(session, "ext_client", + overridden_extension, GNUTLS_EXT_TLS, + ext_recv_client_params, + ext_send_client_params, NULL, NULL, + NULL, 0); if (ret != GNUTLS_E_ALREADY_REGISTERED) fail("client: register existing extension (%d)\n", overridden_extension); - ret = - gnutls_session_ext_register(session, "ext_client", 0, - GNUTLS_EXT_TLS, ext_recv_client_params, - ext_send_client_params, NULL, NULL, - NULL, - GNUTLS_EXT_FLAG_OVERRIDE_INTERNAL); + ret = gnutls_session_ext_register( + session, "ext_client", 0, GNUTLS_EXT_TLS, + ext_recv_client_params, ext_send_client_params, NULL, NULL, + NULL, GNUTLS_EXT_FLAG_OVERRIDE_INTERNAL); if (ret != GNUTLS_E_ALREADY_REGISTERED) fail("client: register extension %d\n", 0); - ret = - gnutls_session_ext_register(session, "ext_client", - overridden_extension, GNUTLS_EXT_TLS, - ext_recv_client_params, - ext_send_client_params, NULL, NULL, - NULL, - GNUTLS_EXT_FLAG_OVERRIDE_INTERNAL); + ret = gnutls_session_ext_register( + session, "ext_client", overridden_extension, GNUTLS_EXT_TLS, + ext_recv_client_params, ext_send_client_params, NULL, NULL, + NULL, GNUTLS_EXT_FLAG_OVERRIDE_INTERNAL); if (ret < 0) fail("client: register extension (%d)\n", overridden_extension); @@ -204,7 +195,7 @@ static void client(int sd) gnutls_bye(session, GNUTLS_SHUT_RDWR); - end: +end: close(sd); gnutls_deinit(session); @@ -230,9 +221,8 @@ static void server(int sd) side = "server"; gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&session, GNUTLS_SERVER); @@ -244,22 +234,18 @@ static void server(int sd) gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, serverx509cred); - ret = - gnutls_session_ext_register(session, "ext_server", - overridden_extension, GNUTLS_EXT_TLS, - ext_recv_server_params, - ext_send_server_params, NULL, NULL, - NULL, 0); + ret = gnutls_session_ext_register(session, "ext_server", + overridden_extension, GNUTLS_EXT_TLS, + ext_recv_server_params, + ext_send_server_params, NULL, NULL, + NULL, 0); if (ret != GNUTLS_E_ALREADY_REGISTERED) fail("client: register existing extension\n"); - ret = - gnutls_session_ext_register(session, "ext_server", - overridden_extension, GNUTLS_EXT_TLS, - ext_recv_server_params, - ext_send_server_params, NULL, NULL, - NULL, - GNUTLS_EXT_FLAG_OVERRIDE_INTERNAL); + ret = gnutls_session_ext_register( + session, "ext_server", overridden_extension, GNUTLS_EXT_TLS, + ext_recv_server_params, ext_send_server_params, NULL, NULL, + NULL, GNUTLS_EXT_FLAG_OVERRIDE_INTERNAL); if (ret < 0) fail("client: register extension\n"); @@ -343,4 +329,4 @@ void doit(void) override_ext(21); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls-session-ext-register.c b/tests/tls-session-ext-register.c index 3aefbafe1d..e739bdda5d 100644 --- a/tests/tls-session-ext-register.c +++ b/tests/tls-session-ext-register.c @@ -23,7 +23,7 @@ * at the session level */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -39,19 +39,19 @@ int main(int argc, char **argv) #else -# include -# include -# include -# if !defined(_WIN32) -# include -# include -# endif -# include -# include -# include +#include +#include +#include +#if !defined(_WIN32) +#include +#include +#endif +#include +#include +#include -# include "utils.h" -# include "cert-common.h" +#include "utils.h" +#include "cert-common.h" const char *side = ""; @@ -60,8 +60,8 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -# define TLSEXT_TYPE_SAMPLE 0xF1 -# define TLSEXT_TYPE_IGN 0xF2 +#define TLSEXT_TYPE_SAMPLE 0xF1 +#define TLSEXT_TYPE_IGN 0xF2 static int TLSEXT_TYPE_client_sent = 0; static int TLSEXT_TYPE_client_received = 0; @@ -78,13 +78,9 @@ static void reset_vars(void) ign_extension_called = 0; } -static const unsigned char ext_data[] = { - 0xFE, - 0xED -}; +static const unsigned char ext_data[] = { 0xFE, 0xED }; -# define myfail(fmt, ...) \ - fail("%s: "fmt, name, ##__VA_ARGS__) +#define myfail(fmt, ...) fail("%s: " fmt, name, ##__VA_ARGS__) static int ext_recv_client_params(gnutls_session_t session, const unsigned char *buf, size_t buflen) @@ -102,7 +98,7 @@ static int ext_recv_client_params(gnutls_session_t session, gnutls_ext_set_data(session, TLSEXT_TYPE_SAMPLE, session); - return 0; //Success + return 0; //Success } static int ext_send_client_params(gnutls_session_t session, @@ -141,7 +137,7 @@ static int ext_recv_server_params(gnutls_session_t session, TLSEXT_TYPE_server_received = 1; - return 0; //Success + return 0; //Success } static int ext_send_server_params(gnutls_session_t session, @@ -180,35 +176,31 @@ static void client(int sd, const char *name, const char *prio, unsigned flags, gnutls_transport_set_int(session, sd); gnutls_handshake_set_timeout(session, get_timeout()); - ret = - gnutls_session_ext_register(session, "ext_ign", TLSEXT_TYPE_IGN, - GNUTLS_EXT_TLS, - ext_recv_client_ign_params, - ext_send_client_ign_params, NULL, NULL, - NULL, flags); + ret = gnutls_session_ext_register(session, "ext_ign", TLSEXT_TYPE_IGN, + GNUTLS_EXT_TLS, + ext_recv_client_ign_params, + ext_send_client_ign_params, NULL, + NULL, NULL, flags); if (ret < 0) myfail("client: register extension\n"); ext_name = - gnutls_ext_get_name2(session, TLSEXT_TYPE_IGN, GNUTLS_EXT_ANY); + gnutls_ext_get_name2(session, TLSEXT_TYPE_IGN, GNUTLS_EXT_ANY); if (ext_name == NULL || strcmp(ext_name, "ext_ign")) myfail("client: retrieve name of extension %u\n", TLSEXT_TYPE_IGN); - ext_name = - gnutls_ext_get_name2(session, TLSEXT_TYPE_IGN, - GNUTLS_EXT_APPLICATION); + ext_name = gnutls_ext_get_name2(session, TLSEXT_TYPE_IGN, + GNUTLS_EXT_APPLICATION); if (ext_name) - myfail - ("client: retrieve name of extension %u (expected none)\n", - TLSEXT_TYPE_IGN); - - ret = - gnutls_session_ext_register(session, "ext_client", - TLSEXT_TYPE_SAMPLE, GNUTLS_EXT_TLS, - ext_recv_client_params, - ext_send_client_params, NULL, NULL, - NULL, flags); + myfail("client: retrieve name of extension %u (expected none)\n", + TLSEXT_TYPE_IGN); + + ret = gnutls_session_ext_register(session, "ext_client", + TLSEXT_TYPE_SAMPLE, GNUTLS_EXT_TLS, + ext_recv_client_params, + ext_send_client_params, NULL, NULL, + NULL, flags); if (ret < 0) myfail("client: register extension\n"); @@ -219,9 +211,8 @@ static void client(int sd, const char *name, const char *prio, unsigned flags, if (ret < 0) { if (!expected_ok) { if (debug) - success - ("client: handshake failed as expected: %s\n", - gnutls_strerror(ret)); + success("client: handshake failed as expected: %s\n", + gnutls_strerror(ret)); } else { myfail("client: Handshake failed: %s\n", gnutls_strerror(ret)); @@ -234,8 +225,7 @@ static void client(int sd, const char *name, const char *prio, unsigned flags, if (TLSEXT_TYPE_client_sent != 1 || TLSEXT_TYPE_client_received != 1) { if (expected_ok) { - myfail - ("client: extension not properly sent/received\n"); + myfail("client: extension not properly sent/received\n"); } else { goto end; } @@ -259,7 +249,7 @@ static void client(int sd, const char *name, const char *prio, unsigned flags, if (!expected_ok) myfail("client: expected failure but succeeded!\n"); - end: +end: close(sd); gnutls_deinit(session); @@ -277,8 +267,8 @@ static void server(int sd, const char *name, const char *prio, unsigned flags, side = "server"; assert(gnutls_certificate_allocate_credentials(&serverx509cred) >= 0); - assert(gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, + assert(gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM) >= 0); assert(gnutls_init(&session, GNUTLS_SERVER) >= 0); @@ -291,10 +281,10 @@ static void server(int sd, const char *name, const char *prio, unsigned flags, gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, serverx509cred); - assert(gnutls_session_ext_register - (session, "ext_server", TLSEXT_TYPE_SAMPLE, GNUTLS_EXT_TLS, - ext_recv_server_params, ext_send_server_params, NULL, NULL, - NULL, flags) >= 0); + assert(gnutls_session_ext_register( + session, "ext_server", TLSEXT_TYPE_SAMPLE, + GNUTLS_EXT_TLS, ext_recv_server_params, + ext_send_server_params, NULL, NULL, NULL, flags) >= 0); gnutls_transport_set_int(session, sd); gnutls_handshake_set_timeout(session, get_timeout()); @@ -303,9 +293,8 @@ static void server(int sd, const char *name, const char *prio, unsigned flags, if (ret < 0) { if (!expected_ok) { if (debug) - success - ("server: handshake failed as expected: %s\n", - gnutls_strerror(ret)); + success("server: handshake failed as expected: %s\n", + gnutls_strerror(ret)); goto cleanup; } else { close(sd); @@ -320,8 +309,7 @@ static void server(int sd, const char *name, const char *prio, unsigned flags, if (TLSEXT_TYPE_server_sent != 1 || TLSEXT_TYPE_server_received != 1) { if (expected_ok) - myfail - ("server: extension not properly sent/received\n"); + myfail("server: extension not properly sent/received\n"); else goto cleanup; } @@ -333,7 +321,7 @@ static void server(int sd, const char *name, const char *prio, unsigned flags, if (!expected_ok) myfail("server: expected failure but succeeded!\n"); - cleanup: +cleanup: close(sd); gnutls_deinit(session); @@ -343,7 +331,7 @@ static void server(int sd, const char *name, const char *prio, unsigned flags, success("server: finished\n"); } -# define try_common(name, prio, flags, sok, cok) \ +#define try_common(name, prio, flags, sok, cok) \ try(name, prio, flags, flags, sok, cok) static void try(const char *name, const char *prio, unsigned server_flags, @@ -404,7 +392,8 @@ void doit(void) try_common("TLS1.2 both ways", "NORMAL:+ANON-ECDH:-VERS-TLS-ALL:+VERS-TLS1.2", GNUTLS_EXT_FLAG_CLIENT_HELLO | - GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, 1, 1); + GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, + 1, 1); try_common("TLS1.2 client only", "NORMAL:+ANON-ECDH:-VERS-TLS-ALL:+VERS-TLS1.2", @@ -412,7 +401,8 @@ void doit(void) try_common("TLS1.2 client and TLS 1.3 server", "NORMAL:+ANON-ECDH:-VERS-TLS-ALL:+VERS-TLS1.2", GNUTLS_EXT_FLAG_CLIENT_HELLO | - GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO, 0, 0); + GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO, + 0, 0); try_common("TLS1.2 server only", "NORMAL:+ANON-ECDH:-VERS-TLS-ALL:+VERS-TLS1.2", GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO, 0, 0); @@ -429,16 +419,13 @@ void doit(void) /* check whether we can crash the library by adding many extensions */ success("Testing: register many global extensions\n"); for (i = 0; i < 64; i++) { - ret = - gnutls_ext_register("ext_serverxx", - TLSEXT_TYPE_SAMPLE + i + 1, - GNUTLS_EXT_TLS, ext_recv_server_params, - ext_send_server_params, NULL, NULL, - NULL); + ret = gnutls_ext_register( + "ext_serverxx", TLSEXT_TYPE_SAMPLE + i + 1, + GNUTLS_EXT_TLS, ext_recv_server_params, + ext_send_server_params, NULL, NULL, NULL); if (ret < 0) { - success - ("failed registering extension no %d (expected)\n", - i + 1); + success("failed registering extension no %d (expected)\n", + i + 1); break; } } @@ -446,4 +433,4 @@ void doit(void) gnutls_global_deinit(); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls-session-supplemental.c b/tests/tls-session-supplemental.c index e71780c457..f300505481 100644 --- a/tests/tls-session-supplemental.c +++ b/tests/tls-session-supplemental.c @@ -22,7 +22,7 @@ /* This tests the supplemental data extension under TLS1.2 */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -38,18 +38,18 @@ int main(int argc, char **argv) #else -# include -# include -# include -# include -# if !defined(_WIN32) -# include -# endif -# include -# include +#include +#include +#include +#include +#if !defined(_WIN32) +#include +#endif +#include +#include -# include "cert-common.h" -# include "utils.h" +#include "cert-common.h" +#include "utils.h" const char *side = ""; @@ -58,21 +58,17 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -# define TLS_SUPPLEMENTALDATATYPE_SAMPLE 0xBABE +#define TLS_SUPPLEMENTALDATATYPE_SAMPLE 0xBABE static int TLS_SUPPLEMENTALDATA_client_sent = 0; static int TLS_SUPPLEMENTALDATA_client_received = 0; static int TLS_SUPPLEMENTALDATA_server_sent = 0; static int TLS_SUPPLEMENTALDATA_server_received = 0; -static const unsigned char supp_data[] = { - 0xFE, - 0xED -}; +static const unsigned char supp_data[] = { 0xFE, 0xED }; -static -int supp_client_recv_func(gnutls_session_t session, const unsigned char *buf, - size_t buflen) +static int supp_client_recv_func(gnutls_session_t session, + const unsigned char *buf, size_t buflen) { TLS_SUPPLEMENTALDATA_client_received = 1; @@ -85,17 +81,15 @@ int supp_client_recv_func(gnutls_session_t session, const unsigned char *buf, return GNUTLS_E_SUCCESS; } -static -int supp_client_send_func(gnutls_session_t session, gnutls_buffer_t buf) +static int supp_client_send_func(gnutls_session_t session, gnutls_buffer_t buf) { TLS_SUPPLEMENTALDATA_client_sent = 1; gnutls_buffer_append_data(buf, supp_data, sizeof(supp_data)); return GNUTLS_E_SUCCESS; } -static -int supp_server_recv_func(gnutls_session_t session, const unsigned char *buf, - size_t buflen) +static int supp_server_recv_func(gnutls_session_t session, + const unsigned char *buf, size_t buflen) { TLS_SUPPLEMENTALDATA_server_received = 1; @@ -108,8 +102,7 @@ int supp_server_recv_func(gnutls_session_t session, const unsigned char *buf, return GNUTLS_E_SUCCESS; } -static -int supp_server_send_func(gnutls_session_t session, gnutls_buffer_t buf) +static int supp_server_send_func(gnutls_session_t session, gnutls_buffer_t buf) { TLS_SUPPLEMENTALDATA_server_sent = 1; gnutls_buffer_append_data(buf, supp_data, sizeof(supp_data)); @@ -148,11 +141,10 @@ static void client(int sd, const char *prio, unsigned server_only) gnutls_supplemental_recv(session, 1); gnutls_supplemental_send(session, 1); - gnutls_session_supplemental_register(session, - "supplemental_client", - TLS_SUPPLEMENTALDATATYPE_SAMPLE, - supp_client_recv_func, - supp_client_send_func, 0); + gnutls_session_supplemental_register( + session, "supplemental_client", + TLS_SUPPLEMENTALDATATYPE_SAMPLE, supp_client_recv_func, + supp_client_send_func, 0); } /* Perform the TLS handshake @@ -169,8 +161,8 @@ static void client(int sd, const char *prio, unsigned server_only) } if (!server_only) { - if (TLS_SUPPLEMENTALDATA_client_sent != 1 - || TLS_SUPPLEMENTALDATA_client_received != 1) + if (TLS_SUPPLEMENTALDATA_client_sent != 1 || + TLS_SUPPLEMENTALDATA_client_received != 1) fail("client: extension not properly sent/received\n"); } else { /* we expect TLS1.2 handshake as TLS1.3 is not (yet) defined @@ -180,7 +172,7 @@ static void client(int sd, const char *prio, unsigned server_only) gnutls_bye(session, GNUTLS_SHUT_RDWR); - end: +end: close(sd); gnutls_deinit(session); @@ -206,9 +198,8 @@ static void server(int sd, const char *prio, unsigned server_only) side = "server"; gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&session, GNUTLS_SERVER); gnutls_handshake_set_timeout(session, get_timeout()); @@ -240,8 +231,8 @@ static void server(int sd, const char *prio, unsigned server_only) success("server: Handshake was completed\n"); if (!server_only) { - if (TLS_SUPPLEMENTALDATA_server_sent != 1 - || TLS_SUPPLEMENTALDATA_server_received != 1) + if (TLS_SUPPLEMENTALDATA_server_sent != 1 || + TLS_SUPPLEMENTALDATA_server_received != 1) fail("server: extension not properly sent/received\n"); } @@ -260,8 +251,7 @@ static void server(int sd, const char *prio, unsigned server_only) success("server: finished\n"); } -static -void start(const char *prio, unsigned server_only) +static void start(const char *prio, unsigned server_only) { pid_t child; int sockets[2], err; @@ -312,4 +302,4 @@ void doit(void) start("NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2", 1); start("NORMAL", 1); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls-supplemental.c b/tests/tls-supplemental.c index 8dfd2c91b5..d6c428ce20 100644 --- a/tests/tls-supplemental.c +++ b/tests/tls-supplemental.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -39,17 +39,17 @@ int main(int argc, char **argv) #else -# include -# include -# include -# if !defined(_WIN32) -# include -# endif -# include -# include +#include +#include +#include +#if !defined(_WIN32) +#include +#endif +#include +#include -# include "utils.h" -# include "cert-common.h" +#include "utils.h" +#include "cert-common.h" /* A very basic TLS client, with supplemental data */ @@ -63,21 +63,17 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -# define TLS_SUPPLEMENTALDATATYPE_SAMPLE 0xBABE +#define TLS_SUPPLEMENTALDATATYPE_SAMPLE 0xBABE static int TLS_SUPPLEMENTALDATA_client_sent = 0; static int TLS_SUPPLEMENTALDATA_client_received = 0; static int TLS_SUPPLEMENTALDATA_server_sent = 0; static int TLS_SUPPLEMENTALDATA_server_received = 0; -static const unsigned char supp_data[] = { - 0xFE, - 0xED -}; +static const unsigned char supp_data[] = { 0xFE, 0xED }; -static -int supp_client_recv_func(gnutls_session_t session, const unsigned char *buf, - size_t buflen) +static int supp_client_recv_func(gnutls_session_t session, + const unsigned char *buf, size_t buflen) { TLS_SUPPLEMENTALDATA_client_received = 1; @@ -90,17 +86,15 @@ int supp_client_recv_func(gnutls_session_t session, const unsigned char *buf, return GNUTLS_E_SUCCESS; } -static -int supp_client_send_func(gnutls_session_t session, gnutls_buffer_t buf) +static int supp_client_send_func(gnutls_session_t session, gnutls_buffer_t buf) { TLS_SUPPLEMENTALDATA_client_sent = 1; gnutls_buffer_append_data(buf, supp_data, sizeof(supp_data)); return GNUTLS_E_SUCCESS; } -static -int supp_server_recv_func(gnutls_session_t session, const unsigned char *buf, - size_t buflen) +static int supp_server_recv_func(gnutls_session_t session, + const unsigned char *buf, size_t buflen) { TLS_SUPPLEMENTALDATA_server_received = 1; @@ -113,8 +107,7 @@ int supp_server_recv_func(gnutls_session_t session, const unsigned char *buf, return GNUTLS_E_SUCCESS; } -static -int supp_server_send_func(gnutls_session_t session, gnutls_buffer_t buf) +static int supp_server_send_func(gnutls_session_t session, gnutls_buffer_t buf) { TLS_SUPPLEMENTALDATA_server_sent = 1; gnutls_buffer_append_data(buf, supp_data, sizeof(supp_data)); @@ -128,9 +121,11 @@ static void client(int sd, const char *prio, unsigned server_only) gnutls_certificate_credentials_t clientx509cred; if (!server_only) { - assert(gnutls_supplemental_register - ("supplemental_client", TLS_SUPPLEMENTALDATATYPE_SAMPLE, - supp_client_recv_func, supp_client_send_func) >= 0); + assert(gnutls_supplemental_register( + "supplemental_client", + TLS_SUPPLEMENTALDATATYPE_SAMPLE, + supp_client_recv_func, + supp_client_send_func) >= 0); } side = "client"; @@ -165,9 +160,11 @@ static void client(int sd, const char *prio, unsigned server_only) } if (!server_only) { - if (TLS_SUPPLEMENTALDATA_client_sent != 1 - || TLS_SUPPLEMENTALDATA_client_received != 1) - fail("client: extension not properly sent/received (%d.%d)\n", TLS_SUPPLEMENTALDATA_client_sent, TLS_SUPPLEMENTALDATA_client_received); + if (TLS_SUPPLEMENTALDATA_client_sent != 1 || + TLS_SUPPLEMENTALDATA_client_received != 1) + fail("client: extension not properly sent/received (%d.%d)\n", + TLS_SUPPLEMENTALDATA_client_sent, + TLS_SUPPLEMENTALDATA_client_received); } else { /* we expect TLS1.2 handshake as TLS1.3 is not (yet) defined * with supplemental data */ @@ -176,7 +173,7 @@ static void client(int sd, const char *prio, unsigned server_only) gnutls_bye(session, GNUTLS_SHUT_RDWR); - end: +end: close(sd); gnutls_deinit(session); @@ -194,16 +191,17 @@ static void server(int sd, const char *prio, unsigned server_only) side = "server"; if (!registered) { - assert(gnutls_supplemental_register - ("supplemental_server", TLS_SUPPLEMENTALDATATYPE_SAMPLE, - supp_server_recv_func, supp_server_send_func) >= 0); + assert(gnutls_supplemental_register( + "supplemental_server", + TLS_SUPPLEMENTALDATATYPE_SAMPLE, + supp_server_recv_func, + supp_server_send_func) >= 0); registered = 0; } gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&session, GNUTLS_SERVER); @@ -229,8 +227,8 @@ static void server(int sd, const char *prio, unsigned server_only) success("server: Handshake was completed\n"); if (!server_only) { - if (TLS_SUPPLEMENTALDATA_server_sent != 1 - || TLS_SUPPLEMENTALDATA_server_received != 1) + if (TLS_SUPPLEMENTALDATA_server_sent != 1 || + TLS_SUPPLEMENTALDATA_server_received != 1) fail("server: extension not properly sent/received\n"); } @@ -249,8 +247,7 @@ static void server(int sd, const char *prio, unsigned server_only) _gnutls_supplemental_deinit(); } -static -void start(const char *prio, unsigned server_only) +static void start(const char *prio, unsigned server_only) { pid_t child; int sockets[2], err; @@ -305,4 +302,4 @@ void doit(void) start("NORMAL", 1); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls-with-seccomp.c b/tests/tls-with-seccomp.c index a7f6ef27c8..f24ce0fb48 100644 --- a/tests/tls-with-seccomp.c +++ b/tests/tls-with-seccomp.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,20 +35,20 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "cert-common.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cert-common.h" +#include "utils.h" static void terminate(void); @@ -62,7 +62,7 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd, const char *prio) { @@ -95,8 +95,7 @@ static void client(int fd, const char *prio) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -109,8 +108,8 @@ static void client(int fd, const char *prio) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { ret = gnutls_record_recv(session, buffer, sizeof(buffer) - 1); @@ -131,7 +130,7 @@ static void client(int fd, const char *prio) gnutls_strerror(ret)); } - end: +end: close(fd); @@ -172,9 +171,8 @@ static void server(int fd, const char *prio) gnutls_certificate_allocate_credentials(&xcred); - ret = gnutls_certificate_set_x509_key_mem(xcred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + xcred, &server_cert, &server_key, GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -195,8 +193,7 @@ static void server(int fd, const char *prio) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -209,8 +206,8 @@ static void server(int fd, const char *prio) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* see the Getting peer's information example */ /* print_info(session); */ @@ -245,8 +242,7 @@ static void server(int fd, const char *prio) success("server: finished\n"); } -static -void run(const char *name, const char *prio) +static void run(const char *name, const char *prio) { int fd[2]; int ret; @@ -290,4 +286,4 @@ void doit(void) run("default", "NORMAL"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls10-cert-key-exchange.c b/tests/tls10-cert-key-exchange.c index 75a23e15da..96ecb772d4 100644 --- a/tests/tls10-cert-key-exchange.c +++ b/tests/tls10-cert-key-exchange.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* This program tests the various certificate key exchange methods supported @@ -48,9 +48,10 @@ void doit(void) try_x509("TLS 1.0 with dhe-rsa no cert", "NORMAL:-VERS-ALL:+VERS-TLS1.0:-KX-ALL:+DHE-RSA", GNUTLS_KX_DHE_RSA, GNUTLS_SIGN_UNKNOWN, GNUTLS_SIGN_UNKNOWN); - try_x509("TLS 1.0 with ecdhe x25519 rsa no cert", - "NORMAL:-VERS-ALL:+VERS-TLS1.0:-KX-ALL:+ECDHE-RSA:-CURVE-ALL:+CURVE-X25519", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_UNKNOWN, GNUTLS_SIGN_UNKNOWN); + try_x509( + "TLS 1.0 with ecdhe x25519 rsa no cert", + "NORMAL:-VERS-ALL:+VERS-TLS1.0:-KX-ALL:+ECDHE-RSA:-CURVE-ALL:+CURVE-X25519", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_UNKNOWN, GNUTLS_SIGN_UNKNOWN); try_x509("TLS 1.0 with ecdhe rsa no cert", "NORMAL:-VERS-ALL:+VERS-TLS1.0:-KX-ALL:+ECDHE-RSA", GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_UNKNOWN, GNUTLS_SIGN_UNKNOWN); diff --git a/tests/tls10-cipher-neg.c b/tests/tls10-cipher-neg.c index fb53b7e0fa..34cd2bcc9c 100644 --- a/tests/tls10-cipher-neg.c +++ b/tests/tls10-cipher-neg.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* This program tests the ciphersuite negotiation for various key exchange @@ -38,86 +38,74 @@ #include "cipher-neg-common.c" test_case_st tests[] = { - { - .name = "server TLS 1.0: AES-128-CBC (server)", - .cipher = GNUTLS_CIPHER_AES_128_CBC, - .server_prio = - "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+AES-128-CBC"}, - { - .name = "both TLS 1.0: AES-128-CBC (server)", - .cipher = GNUTLS_CIPHER_AES_128_CBC, - .server_prio = - "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+AES-128-CBC:+VERS-TLS1.0"}, - { - .name = "client TLS 1.0: AES-128-CBC (client)", - .cipher = GNUTLS_CIPHER_AES_128_CBC, - .server_prio = "NORMAL:+AES-128-CBC", - .client_prio = - "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "both TLS 1.0: AES-128-CBC (client)", - .cipher = GNUTLS_CIPHER_AES_128_CBC, - .server_prio = "NORMAL:+AES-128-CBC:+VERS-TLS1.0", - .client_prio = - "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "server TLS 1.0: 3DES-CBC (server)", - .cipher = GNUTLS_CIPHER_3DES_CBC, - .not_on_fips = 1, - .server_prio = - "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+3DES-CBC"}, - { - .name = "both TLS 1.0: 3DES-CBC (server)", - .cipher = GNUTLS_CIPHER_3DES_CBC, - .not_on_fips = 1, - .server_prio = - "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+3DES-CBC:+VERS-TLS1.0"}, - { - .name = "client TLS 1.0: 3DES-CBC (client)", - .cipher = GNUTLS_CIPHER_3DES_CBC, - .not_on_fips = 1, - .server_prio = "NORMAL:+3DES-CBC", - .client_prio = - "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "both TLS 1.0: 3DES-CBC (client)", - .cipher = GNUTLS_CIPHER_3DES_CBC, - .not_on_fips = 1, - .server_prio = "NORMAL:+3DES-CBC:+VERS-TLS1.0", - .client_prio = - "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "server TLS 1.0: ARCFOUR-128 (server)", - .cipher = GNUTLS_CIPHER_ARCFOUR_128, - .not_on_fips = 1, - .server_prio = - "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+ARCFOUR-128"}, - { - .name = "both TLS 1.0: ARCFOUR-128 (server)", - .cipher = GNUTLS_CIPHER_ARCFOUR_128, - .not_on_fips = 1, - .server_prio = - "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+ARCFOUR-128:+VERS-TLS1.0"}, - { - .name = "client TLS 1.0: ARCFOUR-128 (client)", - .cipher = GNUTLS_CIPHER_ARCFOUR_128, - .not_on_fips = 1, - .server_prio = "NORMAL:+ARCFOUR-128", - .client_prio = - "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "both TLS 1.0: ARCFOUR-128 (client)", - .cipher = GNUTLS_CIPHER_ARCFOUR_128, - .not_on_fips = 1, - .server_prio = "NORMAL:+ARCFOUR-128:+VERS-TLS1.0", - .client_prio = - "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0"} + { .name = "server TLS 1.0: AES-128-CBC (server)", + .cipher = GNUTLS_CIPHER_AES_128_CBC, + .server_prio = + "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+AES-128-CBC" }, + { .name = "both TLS 1.0: AES-128-CBC (server)", + .cipher = GNUTLS_CIPHER_AES_128_CBC, + .server_prio = + "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+AES-128-CBC:+VERS-TLS1.0" }, + { .name = "client TLS 1.0: AES-128-CBC (client)", + .cipher = GNUTLS_CIPHER_AES_128_CBC, + .server_prio = "NORMAL:+AES-128-CBC", + .client_prio = + "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "both TLS 1.0: AES-128-CBC (client)", + .cipher = GNUTLS_CIPHER_AES_128_CBC, + .server_prio = "NORMAL:+AES-128-CBC:+VERS-TLS1.0", + .client_prio = + "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "server TLS 1.0: 3DES-CBC (server)", + .cipher = GNUTLS_CIPHER_3DES_CBC, + .not_on_fips = 1, + .server_prio = + "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+3DES-CBC" }, + { .name = "both TLS 1.0: 3DES-CBC (server)", + .cipher = GNUTLS_CIPHER_3DES_CBC, + .not_on_fips = 1, + .server_prio = + "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+3DES-CBC:+VERS-TLS1.0" }, + { .name = "client TLS 1.0: 3DES-CBC (client)", + .cipher = GNUTLS_CIPHER_3DES_CBC, + .not_on_fips = 1, + .server_prio = "NORMAL:+3DES-CBC", + .client_prio = + "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "both TLS 1.0: 3DES-CBC (client)", + .cipher = GNUTLS_CIPHER_3DES_CBC, + .not_on_fips = 1, + .server_prio = "NORMAL:+3DES-CBC:+VERS-TLS1.0", + .client_prio = + "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "server TLS 1.0: ARCFOUR-128 (server)", + .cipher = GNUTLS_CIPHER_ARCFOUR_128, + .not_on_fips = 1, + .server_prio = + "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+ARCFOUR-128" }, + { .name = "both TLS 1.0: ARCFOUR-128 (server)", + .cipher = GNUTLS_CIPHER_ARCFOUR_128, + .not_on_fips = 1, + .server_prio = + "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+ARCFOUR-128:+VERS-TLS1.0" }, + { .name = "client TLS 1.0: ARCFOUR-128 (client)", + .cipher = GNUTLS_CIPHER_ARCFOUR_128, + .not_on_fips = 1, + .server_prio = "NORMAL:+ARCFOUR-128", + .client_prio = + "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "both TLS 1.0: ARCFOUR-128 (client)", + .cipher = GNUTLS_CIPHER_ARCFOUR_128, + .not_on_fips = 1, + .server_prio = "NORMAL:+ARCFOUR-128:+VERS-TLS1.0", + .client_prio = + "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.0" } }; void doit(void) diff --git a/tests/tls10-prf.c b/tests/tls10-prf.c index c09cbbc9a8..4a2a03d669 100644 --- a/tests/tls10-prf.c +++ b/tests/tls10-prf.c @@ -31,51 +31,50 @@ #include #include "hex.h" -int -_gnutls_prf_raw(gnutls_mac_algorithm_t mac, - size_t master_size, const void *master, - size_t label_size, const char *label, - size_t seed_size, const uint8_t * seed, size_t outsize, - char *out); +int _gnutls_prf_raw(gnutls_mac_algorithm_t mac, size_t master_size, + const void *master, size_t label_size, const char *label, + size_t seed_size, const uint8_t *seed, size_t outsize, + char *out); -#define MATCH_FUNC(fname, dsecret, dseed, dlabel, doutput) \ -static void fname(void **glob_state) \ -{ \ - char tmp[512]; \ - gnutls_datum_t secret = dsecret; \ - gnutls_datum_t seed = dseed; \ - gnutls_datum_t label = dlabel; \ - gnutls_datum_t output = doutput; \ - int _rval; \ - _rval = _gnutls_prf_raw(GNUTLS_MAC_MD5_SHA1, secret.size, secret.data, \ - label.size, (char*)label.data, seed.size, seed.data, output.size, tmp); \ - assert_int_equal(_rval, 0); \ - assert_int_equal(memcmp(tmp, output.data, output.size), 0); \ - gnutls_free(secret.data); \ - gnutls_free(label.data); \ - gnutls_free(seed.data); \ - gnutls_free(output.data); \ -} +#define MATCH_FUNC(fname, dsecret, dseed, dlabel, doutput) \ + static void fname(void **glob_state) \ + { \ + char tmp[512]; \ + gnutls_datum_t secret = dsecret; \ + gnutls_datum_t seed = dseed; \ + gnutls_datum_t label = dlabel; \ + gnutls_datum_t output = doutput; \ + int _rval; \ + _rval = _gnutls_prf_raw(GNUTLS_MAC_MD5_SHA1, secret.size, \ + secret.data, label.size, \ + (char *)label.data, seed.size, \ + seed.data, output.size, tmp); \ + assert_int_equal(_rval, 0); \ + assert_int_equal(memcmp(tmp, output.data, output.size), 0); \ + gnutls_free(secret.data); \ + gnutls_free(label.data); \ + gnutls_free(seed.data); \ + gnutls_free(output.data); \ + } -MATCH_FUNC(test1, SHEX("263bdbbb6f6d4c664e058d0aa9d321be"), - SHEX("b920573b199601024f04d6dc61966e65"), SDATA("test label"), - SHEX - ("6617993765fa6ca703d19ec70dd5dd160ffcc07725fafb714a9f815a2a30bfb7e3bbfb7eee574b3b613eb7fe80eec9691d8c1b0e2d9b3c8b4b02b6b6d6db88e2094623ef6240607eda7abe3c846e82a3")); +MATCH_FUNC( + test1, SHEX("263bdbbb6f6d4c664e058d0aa9d321be"), + SHEX("b920573b199601024f04d6dc61966e65"), SDATA("test label"), + SHEX("6617993765fa6ca703d19ec70dd5dd160ffcc07725fafb714a9f815a2a30bfb7e3bbfb7eee574b3b613eb7fe80eec9691d8c1b0e2d9b3c8b4b02b6b6d6db88e2094623ef6240607eda7abe3c846e82a3")); MATCH_FUNC(test2, SHEX("bf31fe6c78ebf0ff9ce8bb5dd9d1f83d"), SHEX("7fc4583d19871d962760f358a18696c8"), SDATA("test label"), SHEX("8318f382c49fd5af7d6fdb4cbb31dfef")); -MATCH_FUNC(test3, - SHEX - ("0addfc84435b9ac1ef523ef44791a784bf55757dea17837c1a72beec1bdb1850"), - SHEX("74e849d11ad8a98d9bc2291dbceec26ff9"), SDATA("test label"), - SHEX("3c221520c48bcb3a0eb3734a")); -MATCH_FUNC(test4, - SHEX - ("4074939b440a08a285bc7208485c531f0bbd4c101d71bdba33ec066791e4678c"), - SHEX("8aff0c770c1d60455ee48f220c9adb471e5fee27c88c1f33"), - SDATA("test label"), - SHEX - ("3a9aee040bbf3cf7009210e64bbdad1775ccf1b46b3a965d5f15168e9ddaa7cc6a7c0c117848")); +MATCH_FUNC( + test3, + SHEX("0addfc84435b9ac1ef523ef44791a784bf55757dea17837c1a72beec1bdb1850"), + SHEX("74e849d11ad8a98d9bc2291dbceec26ff9"), SDATA("test label"), + SHEX("3c221520c48bcb3a0eb3734a")); +MATCH_FUNC( + test4, + SHEX("4074939b440a08a285bc7208485c531f0bbd4c101d71bdba33ec066791e4678c"), + SHEX("8aff0c770c1d60455ee48f220c9adb471e5fee27c88c1f33"), + SDATA("test label"), + SHEX("3a9aee040bbf3cf7009210e64bbdad1775ccf1b46b3a965d5f15168e9ddaa7cc6a7c0c117848")); int main(void) { diff --git a/tests/tls10-server-kx-neg.c b/tests/tls10-server-kx-neg.c index e9e8c47730..0ef2439fea 100644 --- a/tests/tls10-server-kx-neg.c +++ b/tests/tls10-server-kx-neg.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* This program tests the ciphersuite negotiation for various key exchange @@ -38,359 +38,312 @@ #include "server-kx-neg-common.c" test_case_st tests[] = { - { - .name = "TLS 1.0 ANON-DH without cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 ANON-DH with cred but no DH params", - .client_ret = 0, - .server_ret = 0, - .have_anon_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 ANON-DH with cred and DH params", - .server_ret = 0, - .client_ret = 0, - .have_anon_cred = 1, - .have_anon_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 DHE-RSA without cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 DHE-RSA with cred but no DH params or cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 DHE-RSA with cred and cert but no DH params", - .client_ret = 0, - .server_ret = 0, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 DHE-RSA with cred and DH params but no cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .have_cert_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = - "TLS 1.0 DHE-RSA with cred and incompatible cert and DH params", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .have_rsa_decrypt_cert = 1, - .have_ecc_sign_cert = 1, - .have_cert_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 DHE-RSA with cred and cert and DH params", - .client_ret = 0, - .server_ret = 0, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .have_cert_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 DHE-RSA with cred and multiple certs and DH params", - .client_ret = 0, - .server_ret = 0, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .have_ecc_sign_cert = 1, - .have_rsa_decrypt_cert = 1, - .have_cert_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 DHE-PSK without cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 DHE-PSK with cred but no DH params", - .client_ret = 0, - .server_ret = 0, - .have_psk_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 DHE-PSK with cred DH params", - .client_ret = 0, - .server_ret = 0, - .have_psk_cred = 1, - .have_psk_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 ECDHE-RSA without cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 ECDHE-RSA with cred but no common curve or cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .server_prio = - "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0:-CURVE-ALL:+CURVE-SECP256R1", - .client_prio = - "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0:-CURVE-ALL:+CURVE-SECP384R1"}, - { - .name = "TLS 1.0 ECDHE-RSA with cred and cert but no common curve", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .server_prio = - "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0:-CURVE-ALL:+CURVE-SECP256R1", - .client_prio = - "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0:-CURVE-ALL:+CURVE-SECP384R1"}, - { - .name = "TLS 1.0 ECDHE-RSA with cred and common curve but no cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = - "TLS 1.0 ECDHE-RSA with cred and incompatible cert and common curve", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .have_rsa_decrypt_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 ECDHE-RSA with cred and cert and common curve", - .server_ret = 0, - .client_ret = 0, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = - "TLS 1.0 ECDHE-RSA with cred and multiple certs and common curve", - .server_ret = 0, - .client_ret = 0, - .have_cert_cred = 1, - .have_rsa_decrypt_cert = 1, - .have_rsa_sign_cert = 1, - .have_ecc_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0"}, + { .name = "TLS 1.0 ANON-DH without cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 ANON-DH with cred but no DH params", + .client_ret = 0, + .server_ret = 0, + .have_anon_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 ANON-DH with cred and DH params", + .server_ret = 0, + .client_ret = 0, + .have_anon_cred = 1, + .have_anon_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 DHE-RSA without cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 DHE-RSA with cred but no DH params or cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 DHE-RSA with cred and cert but no DH params", + .client_ret = 0, + .server_ret = 0, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 DHE-RSA with cred and DH params but no cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .have_cert_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 DHE-RSA with cred and incompatible cert and DH params", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .have_rsa_decrypt_cert = 1, + .have_ecc_sign_cert = 1, + .have_cert_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 DHE-RSA with cred and cert and DH params", + .client_ret = 0, + .server_ret = 0, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .have_cert_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 DHE-RSA with cred and multiple certs and DH params", + .client_ret = 0, + .server_ret = 0, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .have_ecc_sign_cert = 1, + .have_rsa_decrypt_cert = 1, + .have_cert_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 DHE-PSK without cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 DHE-PSK with cred but no DH params", + .client_ret = 0, + .server_ret = 0, + .have_psk_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 DHE-PSK with cred DH params", + .client_ret = 0, + .server_ret = 0, + .have_psk_cred = 1, + .have_psk_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 ECDHE-RSA without cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 ECDHE-RSA with cred but no common curve or cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .server_prio = + "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0:-CURVE-ALL:+CURVE-SECP256R1", + .client_prio = + "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0:-CURVE-ALL:+CURVE-SECP384R1" }, + { .name = "TLS 1.0 ECDHE-RSA with cred and cert but no common curve", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .server_prio = + "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0:-CURVE-ALL:+CURVE-SECP256R1", + .client_prio = + "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0:-CURVE-ALL:+CURVE-SECP384R1" }, + { .name = "TLS 1.0 ECDHE-RSA with cred and common curve but no cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 ECDHE-RSA with cred and incompatible cert and common curve", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .have_rsa_decrypt_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 ECDHE-RSA with cred and cert and common curve", + .server_ret = 0, + .client_ret = 0, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 ECDHE-RSA with cred and multiple certs and common curve", + .server_ret = 0, + .client_ret = 0, + .have_cert_cred = 1, + .have_rsa_decrypt_cert = 1, + .have_rsa_sign_cert = 1, + .have_ecc_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.0" }, - { - .name = "TLS 1.0 ECDHE-ECDSA without cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 ECDHE-ECDSA with cred but no common curve or cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .server_prio = - "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0:-CURVE-ALL:+CURVE-SECP256R1", - .client_prio = - "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0:-CURVE-ALL:+CURVE-SECP384R1"}, - { - .name = "TLS 1.0 ECDHE-ECDSA with cred and cert but no common curve", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .have_ecc_sign_cert = 1, - .server_prio = - "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0:-CURVE-ALL:+CURVE-SECP256R1", - .client_prio = - "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0:-CURVE-ALL:+CURVE-SECP384R1"}, - { - .name = - "TLS 1.0 ECDHE-ECDSA with cred and common curve but no ECDSA cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .have_rsa_decrypt_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 ECDHE-ECDSA with cred and common curve but no cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 ECDHE-ECDSA with cred and cert and common curve", - .server_ret = 0, - .client_ret = 0, - .have_cert_cred = 1, - .have_ecc_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = - "TLS 1.0 ECDHE-ECDSA with cred and multiple certs and common curve", - .server_ret = 0, - .client_ret = 0, - .have_cert_cred = 1, - .have_ecc_sign_cert = 1, - .have_rsa_sign_cert = 1, - .have_rsa_decrypt_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0"}, + { .name = "TLS 1.0 ECDHE-ECDSA without cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 ECDHE-ECDSA with cred but no common curve or cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .server_prio = + "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0:-CURVE-ALL:+CURVE-SECP256R1", + .client_prio = + "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0:-CURVE-ALL:+CURVE-SECP384R1" }, + { .name = "TLS 1.0 ECDHE-ECDSA with cred and cert but no common curve", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .have_ecc_sign_cert = 1, + .server_prio = + "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0:-CURVE-ALL:+CURVE-SECP256R1", + .client_prio = + "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0:-CURVE-ALL:+CURVE-SECP384R1" }, + { .name = "TLS 1.0 ECDHE-ECDSA with cred and common curve but no ECDSA cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .have_rsa_decrypt_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 ECDHE-ECDSA with cred and common curve but no cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 ECDHE-ECDSA with cred and cert and common curve", + .server_ret = 0, + .client_ret = 0, + .have_cert_cred = 1, + .have_ecc_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 ECDHE-ECDSA with cred and multiple certs and common curve", + .server_ret = 0, + .client_ret = 0, + .have_cert_cred = 1, + .have_ecc_sign_cert = 1, + .have_rsa_sign_cert = 1, + .have_rsa_decrypt_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.0" }, - { - .name = "TLS 1.0 ECDHE-PSK without cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 ECDHE-PSK with cred but no common curve", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_psk_cred = 1, - .server_prio = - "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.0:-CURVE-ALL:+CURVE-SECP256R1", - .client_prio = - "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.0:-CURVE-ALL:+CURVE-SECP384R1"}, - { - .name = "TLS 1.0 ECDHE-PSK with cred and common curve", - .client_ret = 0, - .server_ret = 0, - .have_psk_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 RSA-PSK without cert cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .have_psk_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 RSA-PSK without psk cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_psk_cred = 0, - .have_cert_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 RSA-PSK with cred but invalid cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_psk_cred = 1, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .have_ecc_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 RSA-PSK with cred", - .server_ret = 0, - .client_ret = 0, - .have_psk_cred = 1, - .have_cert_cred = 1, - .have_rsa_decrypt_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 RSA-PSK with cred and multiple certs", - .server_ret = 0, - .client_ret = 0, - .have_psk_cred = 1, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .have_ecc_sign_cert = 1, - .have_rsa_decrypt_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.0"}, + { .name = "TLS 1.0 ECDHE-PSK without cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 ECDHE-PSK with cred but no common curve", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_psk_cred = 1, + .server_prio = + "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.0:-CURVE-ALL:+CURVE-SECP256R1", + .client_prio = + "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.0:-CURVE-ALL:+CURVE-SECP384R1" }, + { .name = "TLS 1.0 ECDHE-PSK with cred and common curve", + .client_ret = 0, + .server_ret = 0, + .have_psk_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 RSA-PSK without cert cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .have_psk_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 RSA-PSK without psk cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_psk_cred = 0, + .have_cert_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 RSA-PSK with cred but invalid cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_psk_cred = 1, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .have_ecc_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 RSA-PSK with cred", + .server_ret = 0, + .client_ret = 0, + .have_psk_cred = 1, + .have_cert_cred = 1, + .have_rsa_decrypt_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 RSA-PSK with cred and multiple certs", + .server_ret = 0, + .client_ret = 0, + .have_psk_cred = 1, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .have_ecc_sign_cert = 1, + .have_rsa_decrypt_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.0" }, #ifdef ENABLE_SRP - { - .name = "TLS 1.0 SRP-RSA without cert cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .have_srp_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 SRP-RSA without srp cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_srp_cred = 0, - .have_cert_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 SRP-RSA with cred but invalid cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_srp_cred = 1, - .have_cert_cred = 1, - .have_rsa_decrypt_cert = 1, - .have_ecc_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 SRP-RSA with cred", - .server_ret = 0, - .client_ret = 0, - .have_srp_cred = 1, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 SRP-RSA with cred and multiple certs", - .server_ret = 0, - .client_ret = 0, - .have_srp_cred = 1, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .have_ecc_sign_cert = 1, - .have_rsa_decrypt_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 SRP without srp cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .have_srp_cred = 0, - .have_cert_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+SRP:-VERS-ALL:+VERS-TLS1.0"}, - { - .name = "TLS 1.0 SRP with cred", - .server_ret = 0, - .client_ret = 0, - .have_srp_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP:-VERS-ALL:+VERS-TLS1.0", - .client_prio = "NORMAL:-KX-ALL:+SRP:-VERS-ALL:+VERS-TLS1.0"} + { .name = "TLS 1.0 SRP-RSA without cert cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .have_srp_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 SRP-RSA without srp cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_srp_cred = 0, + .have_cert_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 SRP-RSA with cred but invalid cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_srp_cred = 1, + .have_cert_cred = 1, + .have_rsa_decrypt_cert = 1, + .have_ecc_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 SRP-RSA with cred", + .server_ret = 0, + .client_ret = 0, + .have_srp_cred = 1, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 SRP-RSA with cred and multiple certs", + .server_ret = 0, + .client_ret = 0, + .have_srp_cred = 1, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .have_ecc_sign_cert = 1, + .have_rsa_decrypt_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 SRP without srp cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .have_srp_cred = 0, + .have_cert_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+SRP:-VERS-ALL:+VERS-TLS1.0" }, + { .name = "TLS 1.0 SRP with cred", + .server_ret = 0, + .client_ret = 0, + .have_srp_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP:-VERS-ALL:+VERS-TLS1.0", + .client_prio = "NORMAL:-KX-ALL:+SRP:-VERS-ALL:+VERS-TLS1.0" } #endif }; diff --git a/tests/tls11-cert-key-exchange.c b/tests/tls11-cert-key-exchange.c index 69115cd873..8f0daec628 100644 --- a/tests/tls11-cert-key-exchange.c +++ b/tests/tls11-cert-key-exchange.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* This program tests the various certificate key exchange methods supported @@ -48,9 +48,10 @@ void doit(void) try_x509("TLS 1.1 with dhe-rsa no cert", "NORMAL:-VERS-ALL:+VERS-TLS1.1:-KX-ALL:+DHE-RSA", GNUTLS_KX_DHE_RSA, GNUTLS_SIGN_UNKNOWN, GNUTLS_SIGN_UNKNOWN); - try_x509("TLS 1.1 with ecdhe x25519 rsa no cert", - "NORMAL:-VERS-ALL:+VERS-TLS1.1:-KX-ALL:+ECDHE-RSA:-CURVE-ALL:+CURVE-X25519", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_UNKNOWN, GNUTLS_SIGN_UNKNOWN); + try_x509( + "TLS 1.1 with ecdhe x25519 rsa no cert", + "NORMAL:-VERS-ALL:+VERS-TLS1.1:-KX-ALL:+ECDHE-RSA:-CURVE-ALL:+CURVE-X25519", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_UNKNOWN, GNUTLS_SIGN_UNKNOWN); try_x509("TLS 1.1 with ecdhe rsa no cert", "NORMAL:-VERS-ALL:+VERS-TLS1.1:-KX-ALL:+ECDHE-RSA", GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_UNKNOWN, GNUTLS_SIGN_UNKNOWN); @@ -105,11 +106,11 @@ void doit(void) /* illegal setups */ server_priority = NULL; - try_with_key_fail("TLS 1.1 with rsa-pss cert and no cli cert", - "NORMAL:-VERS-ALL:+VERS-TLS1.1:-KX-ALL:+DHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-SHA256:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA512", - GNUTLS_E_UNWANTED_ALGORITHM, GNUTLS_E_AGAIN, - &server_ca3_rsa_pss_cert, &server_ca3_rsa_pss_key, - NULL, NULL); + try_with_key_fail( + "TLS 1.1 with rsa-pss cert and no cli cert", + "NORMAL:-VERS-ALL:+VERS-TLS1.1:-KX-ALL:+DHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-SHA256:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA512", + GNUTLS_E_UNWANTED_ALGORITHM, GNUTLS_E_AGAIN, + &server_ca3_rsa_pss_cert, &server_ca3_rsa_pss_key, NULL, NULL); gnutls_global_deinit(); } diff --git a/tests/tls11-cipher-neg.c b/tests/tls11-cipher-neg.c index fb4371a6e3..b1b4ee9e6c 100644 --- a/tests/tls11-cipher-neg.c +++ b/tests/tls11-cipher-neg.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* This program tests the ciphersuite negotiation for various key exchange @@ -38,86 +38,74 @@ #include "cipher-neg-common.c" test_case_st tests[] = { - { - .name = "server TLS 1.1: AES-128-CBC (server)", - .cipher = GNUTLS_CIPHER_AES_128_CBC, - .server_prio = - "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+AES-128-CBC"}, - { - .name = "both TLS 1.1: AES-128-CBC (server)", - .cipher = GNUTLS_CIPHER_AES_128_CBC, - .server_prio = - "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+AES-128-CBC:+VERS-TLS1.1"}, - { - .name = "client TLS 1.1: AES-128-CBC (client)", - .cipher = GNUTLS_CIPHER_AES_128_CBC, - .server_prio = "NORMAL:+AES-128-CBC", - .client_prio = - "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "both TLS 1.1: AES-128-CBC (client)", - .cipher = GNUTLS_CIPHER_AES_128_CBC, - .server_prio = "NORMAL:+AES-128-CBC:+VERS-TLS1.1", - .client_prio = - "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "server TLS 1.1: 3DES-CBC (server)", - .cipher = GNUTLS_CIPHER_3DES_CBC, - .not_on_fips = 1, - .server_prio = - "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+3DES-CBC"}, - { - .name = "both TLS 1.1: 3DES-CBC (server)", - .cipher = GNUTLS_CIPHER_3DES_CBC, - .not_on_fips = 1, - .server_prio = - "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+3DES-CBC:+VERS-TLS1.1"}, - { - .name = "client TLS 1.1: 3DES-CBC (client)", - .cipher = GNUTLS_CIPHER_3DES_CBC, - .not_on_fips = 1, - .server_prio = "NORMAL:+3DES-CBC", - .client_prio = - "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "both TLS 1.1: 3DES-CBC (client)", - .cipher = GNUTLS_CIPHER_3DES_CBC, - .not_on_fips = 1, - .server_prio = "NORMAL:+3DES-CBC:+VERS-TLS1.1", - .client_prio = - "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "server TLS 1.1: ARCFOUR-128 (server)", - .cipher = GNUTLS_CIPHER_ARCFOUR_128, - .not_on_fips = 1, - .server_prio = - "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+ARCFOUR-128"}, - { - .name = "both TLS 1.1: ARCFOUR-128 (server)", - .cipher = GNUTLS_CIPHER_ARCFOUR_128, - .not_on_fips = 1, - .server_prio = - "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+ARCFOUR-128:+VERS-TLS1.1"}, - { - .name = "client TLS 1.1: ARCFOUR-128 (client)", - .cipher = GNUTLS_CIPHER_ARCFOUR_128, - .not_on_fips = 1, - .server_prio = "NORMAL:+ARCFOUR-128", - .client_prio = - "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "both TLS 1.1: ARCFOUR-128 (client)", - .cipher = GNUTLS_CIPHER_ARCFOUR_128, - .not_on_fips = 1, - .server_prio = "NORMAL:+ARCFOUR-128:+VERS-TLS1.1", - .client_prio = - "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1"} + { .name = "server TLS 1.1: AES-128-CBC (server)", + .cipher = GNUTLS_CIPHER_AES_128_CBC, + .server_prio = + "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+AES-128-CBC" }, + { .name = "both TLS 1.1: AES-128-CBC (server)", + .cipher = GNUTLS_CIPHER_AES_128_CBC, + .server_prio = + "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+AES-128-CBC:+VERS-TLS1.1" }, + { .name = "client TLS 1.1: AES-128-CBC (client)", + .cipher = GNUTLS_CIPHER_AES_128_CBC, + .server_prio = "NORMAL:+AES-128-CBC", + .client_prio = + "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "both TLS 1.1: AES-128-CBC (client)", + .cipher = GNUTLS_CIPHER_AES_128_CBC, + .server_prio = "NORMAL:+AES-128-CBC:+VERS-TLS1.1", + .client_prio = + "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "server TLS 1.1: 3DES-CBC (server)", + .cipher = GNUTLS_CIPHER_3DES_CBC, + .not_on_fips = 1, + .server_prio = + "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+3DES-CBC" }, + { .name = "both TLS 1.1: 3DES-CBC (server)", + .cipher = GNUTLS_CIPHER_3DES_CBC, + .not_on_fips = 1, + .server_prio = + "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+3DES-CBC:+VERS-TLS1.1" }, + { .name = "client TLS 1.1: 3DES-CBC (client)", + .cipher = GNUTLS_CIPHER_3DES_CBC, + .not_on_fips = 1, + .server_prio = "NORMAL:+3DES-CBC", + .client_prio = + "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "both TLS 1.1: 3DES-CBC (client)", + .cipher = GNUTLS_CIPHER_3DES_CBC, + .not_on_fips = 1, + .server_prio = "NORMAL:+3DES-CBC:+VERS-TLS1.1", + .client_prio = + "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "server TLS 1.1: ARCFOUR-128 (server)", + .cipher = GNUTLS_CIPHER_ARCFOUR_128, + .not_on_fips = 1, + .server_prio = + "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+ARCFOUR-128" }, + { .name = "both TLS 1.1: ARCFOUR-128 (server)", + .cipher = GNUTLS_CIPHER_ARCFOUR_128, + .not_on_fips = 1, + .server_prio = + "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+ARCFOUR-128:+VERS-TLS1.1" }, + { .name = "client TLS 1.1: ARCFOUR-128 (client)", + .cipher = GNUTLS_CIPHER_ARCFOUR_128, + .not_on_fips = 1, + .server_prio = "NORMAL:+ARCFOUR-128", + .client_prio = + "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "both TLS 1.1: ARCFOUR-128 (client)", + .cipher = GNUTLS_CIPHER_ARCFOUR_128, + .not_on_fips = 1, + .server_prio = "NORMAL:+ARCFOUR-128:+VERS-TLS1.1", + .client_prio = + "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.1" } }; void doit(void) diff --git a/tests/tls11-server-kx-neg.c b/tests/tls11-server-kx-neg.c index 6c300ab5f3..dc10ae7f97 100644 --- a/tests/tls11-server-kx-neg.c +++ b/tests/tls11-server-kx-neg.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* This program tests the ciphersuite negotiation for various key exchange @@ -38,359 +38,312 @@ #include "server-kx-neg-common.c" test_case_st tests[] = { - { - .name = "TLS 1.1 ANON-DH without cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 ANON-DH with cred but no DH params", - .server_ret = 0, - .client_ret = 0, - .have_anon_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 ANON-DH with cred and DH params", - .server_ret = 0, - .client_ret = 0, - .have_anon_cred = 1, - .have_anon_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 DHE-RSA without cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 DHE-RSA with cred but no DH params or cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 DHE-RSA with cred and cert but no DH params", - .server_ret = 0, - .client_ret = 0, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 DHE-RSA with cred and DH params but no cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .have_cert_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = - "TLS 1.1 DHE-RSA with cred and incompatible cert and DH params", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .have_rsa_decrypt_cert = 1, - .have_ecc_sign_cert = 1, - .have_cert_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 DHE-RSA with cred and cert and DH params", - .client_ret = 0, - .server_ret = 0, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .have_cert_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 DHE-RSA with cred and multiple certs and DH params", - .client_ret = 0, - .server_ret = 0, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .have_ecc_sign_cert = 1, - .have_rsa_decrypt_cert = 1, - .have_cert_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 DHE-PSK without cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 DHE-PSK with cred but no DH params", - .server_ret = 0, - .client_ret = 0, - .have_psk_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 DHE-PSK with cred DH params", - .client_ret = 0, - .server_ret = 0, - .have_psk_cred = 1, - .have_psk_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 ECDHE-RSA without cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 ECDHE-RSA with cred but no common curve or cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .server_prio = - "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1:-CURVE-ALL:+CURVE-SECP256R1", - .client_prio = - "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1:-CURVE-ALL:+CURVE-SECP384R1"}, - { - .name = "TLS 1.1 ECDHE-RSA with cred and cert but no common curve", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .server_prio = - "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1:-CURVE-ALL:+CURVE-SECP256R1", - .client_prio = - "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1:-CURVE-ALL:+CURVE-SECP384R1"}, - { - .name = "TLS 1.1 ECDHE-RSA with cred and common curve but no cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = - "TLS 1.1 ECDHE-RSA with cred and incompatible cert and common curve", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .have_rsa_decrypt_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 ECDHE-RSA with cred and cert and common curve", - .server_ret = 0, - .client_ret = 0, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = - "TLS 1.1 ECDHE-RSA with cred and multiple certs and common curve", - .server_ret = 0, - .client_ret = 0, - .have_cert_cred = 1, - .have_rsa_decrypt_cert = 1, - .have_rsa_sign_cert = 1, - .have_ecc_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1"}, + { .name = "TLS 1.1 ANON-DH without cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 ANON-DH with cred but no DH params", + .server_ret = 0, + .client_ret = 0, + .have_anon_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 ANON-DH with cred and DH params", + .server_ret = 0, + .client_ret = 0, + .have_anon_cred = 1, + .have_anon_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 DHE-RSA without cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 DHE-RSA with cred but no DH params or cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 DHE-RSA with cred and cert but no DH params", + .server_ret = 0, + .client_ret = 0, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 DHE-RSA with cred and DH params but no cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .have_cert_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 DHE-RSA with cred and incompatible cert and DH params", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .have_rsa_decrypt_cert = 1, + .have_ecc_sign_cert = 1, + .have_cert_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 DHE-RSA with cred and cert and DH params", + .client_ret = 0, + .server_ret = 0, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .have_cert_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 DHE-RSA with cred and multiple certs and DH params", + .client_ret = 0, + .server_ret = 0, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .have_ecc_sign_cert = 1, + .have_rsa_decrypt_cert = 1, + .have_cert_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 DHE-PSK without cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 DHE-PSK with cred but no DH params", + .server_ret = 0, + .client_ret = 0, + .have_psk_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 DHE-PSK with cred DH params", + .client_ret = 0, + .server_ret = 0, + .have_psk_cred = 1, + .have_psk_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 ECDHE-RSA without cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 ECDHE-RSA with cred but no common curve or cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .server_prio = + "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1:-CURVE-ALL:+CURVE-SECP256R1", + .client_prio = + "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1:-CURVE-ALL:+CURVE-SECP384R1" }, + { .name = "TLS 1.1 ECDHE-RSA with cred and cert but no common curve", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .server_prio = + "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1:-CURVE-ALL:+CURVE-SECP256R1", + .client_prio = + "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1:-CURVE-ALL:+CURVE-SECP384R1" }, + { .name = "TLS 1.1 ECDHE-RSA with cred and common curve but no cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 ECDHE-RSA with cred and incompatible cert and common curve", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .have_rsa_decrypt_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 ECDHE-RSA with cred and cert and common curve", + .server_ret = 0, + .client_ret = 0, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 ECDHE-RSA with cred and multiple certs and common curve", + .server_ret = 0, + .client_ret = 0, + .have_cert_cred = 1, + .have_rsa_decrypt_cert = 1, + .have_rsa_sign_cert = 1, + .have_ecc_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.1" }, - { - .name = "TLS 1.1 ECDHE-ECDSA without cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 ECDHE-ECDSA with cred but no common curve or cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .server_prio = - "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1:-CURVE-ALL:+CURVE-SECP256R1", - .client_prio = - "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1:-CURVE-ALL:+CURVE-SECP384R1"}, - { - .name = "TLS 1.1 ECDHE-ECDSA with cred and cert but no common curve", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .have_ecc_sign_cert = 1, - .server_prio = - "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1:-CURVE-ALL:+CURVE-SECP256R1", - .client_prio = - "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1:-CURVE-ALL:+CURVE-SECP384R1"}, - { - .name = - "TLS 1.1 ECDHE-ECDSA with cred and common curve but no ECDSA cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .have_rsa_decrypt_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 ECDHE-ECDSA with cred and common curve but no cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 ECDHE-ECDSA with cred and cert and common curve", - .server_ret = 0, - .client_ret = 0, - .have_cert_cred = 1, - .have_ecc_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = - "TLS 1.1 ECDHE-ECDSA with cred and multiple certs and common curve", - .server_ret = 0, - .client_ret = 0, - .have_cert_cred = 1, - .have_ecc_sign_cert = 1, - .have_rsa_sign_cert = 1, - .have_rsa_decrypt_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1"}, + { .name = "TLS 1.1 ECDHE-ECDSA without cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 ECDHE-ECDSA with cred but no common curve or cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .server_prio = + "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1:-CURVE-ALL:+CURVE-SECP256R1", + .client_prio = + "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1:-CURVE-ALL:+CURVE-SECP384R1" }, + { .name = "TLS 1.1 ECDHE-ECDSA with cred and cert but no common curve", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .have_ecc_sign_cert = 1, + .server_prio = + "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1:-CURVE-ALL:+CURVE-SECP256R1", + .client_prio = + "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1:-CURVE-ALL:+CURVE-SECP384R1" }, + { .name = "TLS 1.1 ECDHE-ECDSA with cred and common curve but no ECDSA cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .have_rsa_decrypt_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 ECDHE-ECDSA with cred and common curve but no cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 ECDHE-ECDSA with cred and cert and common curve", + .server_ret = 0, + .client_ret = 0, + .have_cert_cred = 1, + .have_ecc_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 ECDHE-ECDSA with cred and multiple certs and common curve", + .server_ret = 0, + .client_ret = 0, + .have_cert_cred = 1, + .have_ecc_sign_cert = 1, + .have_rsa_sign_cert = 1, + .have_rsa_decrypt_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.1" }, - { - .name = "TLS 1.1 ECDHE-PSK without cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 ECDHE-PSK with cred but no common curve", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_psk_cred = 1, - .server_prio = - "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.1:-CURVE-ALL:+CURVE-SECP256R1", - .client_prio = - "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.1:-CURVE-ALL:+CURVE-SECP384R1"}, - { - .name = "TLS 1.1 ECDHE-PSK with cred and common curve", - .client_ret = 0, - .server_ret = 0, - .have_psk_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 RSA-PSK without cert cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .have_psk_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 RSA-PSK without psk cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_psk_cred = 0, - .have_cert_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 RSA-PSK with cred but invalid cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_psk_cred = 1, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .have_ecc_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 RSA-PSK with cred", - .server_ret = 0, - .client_ret = 0, - .have_psk_cred = 1, - .have_cert_cred = 1, - .have_rsa_decrypt_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 RSA-PSK with cred and multiple certs", - .server_ret = 0, - .client_ret = 0, - .have_psk_cred = 1, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .have_ecc_sign_cert = 1, - .have_rsa_decrypt_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.1"}, + { .name = "TLS 1.1 ECDHE-PSK without cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 ECDHE-PSK with cred but no common curve", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_psk_cred = 1, + .server_prio = + "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.1:-CURVE-ALL:+CURVE-SECP256R1", + .client_prio = + "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.1:-CURVE-ALL:+CURVE-SECP384R1" }, + { .name = "TLS 1.1 ECDHE-PSK with cred and common curve", + .client_ret = 0, + .server_ret = 0, + .have_psk_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 RSA-PSK without cert cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .have_psk_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 RSA-PSK without psk cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_psk_cred = 0, + .have_cert_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 RSA-PSK with cred but invalid cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_psk_cred = 1, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .have_ecc_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 RSA-PSK with cred", + .server_ret = 0, + .client_ret = 0, + .have_psk_cred = 1, + .have_cert_cred = 1, + .have_rsa_decrypt_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 RSA-PSK with cred and multiple certs", + .server_ret = 0, + .client_ret = 0, + .have_psk_cred = 1, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .have_ecc_sign_cert = 1, + .have_rsa_decrypt_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.1" }, #ifdef ENABLE_SRP - { - .name = "TLS 1.1 SRP-RSA without cert cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .have_srp_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 SRP-RSA without srp cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_srp_cred = 0, - .have_cert_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 SRP-RSA with cred but invalid cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_srp_cred = 1, - .have_cert_cred = 1, - .have_rsa_decrypt_cert = 1, - .have_ecc_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 SRP-RSA with cred", - .server_ret = 0, - .client_ret = 0, - .have_srp_cred = 1, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 SRP-RSA with cred and multiple certs", - .server_ret = 0, - .client_ret = 0, - .have_srp_cred = 1, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .have_ecc_sign_cert = 1, - .have_rsa_decrypt_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 SRP without srp cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .have_srp_cred = 0, - .have_cert_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+SRP:-VERS-ALL:+VERS-TLS1.1"}, - { - .name = "TLS 1.1 SRP with cred", - .server_ret = 0, - .client_ret = 0, - .have_srp_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP:-VERS-ALL:+VERS-TLS1.1", - .client_prio = "NORMAL:-KX-ALL:+SRP:-VERS-ALL:+VERS-TLS1.1"} + { .name = "TLS 1.1 SRP-RSA without cert cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .have_srp_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 SRP-RSA without srp cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_srp_cred = 0, + .have_cert_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 SRP-RSA with cred but invalid cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_srp_cred = 1, + .have_cert_cred = 1, + .have_rsa_decrypt_cert = 1, + .have_ecc_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 SRP-RSA with cred", + .server_ret = 0, + .client_ret = 0, + .have_srp_cred = 1, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 SRP-RSA with cred and multiple certs", + .server_ret = 0, + .client_ret = 0, + .have_srp_cred = 1, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .have_ecc_sign_cert = 1, + .have_rsa_decrypt_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 SRP without srp cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .have_srp_cred = 0, + .have_cert_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+SRP:-VERS-ALL:+VERS-TLS1.1" }, + { .name = "TLS 1.1 SRP with cred", + .server_ret = 0, + .client_ret = 0, + .have_srp_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP:-VERS-ALL:+VERS-TLS1.1", + .client_prio = "NORMAL:-KX-ALL:+SRP:-VERS-ALL:+VERS-TLS1.1" } #endif }; diff --git a/tests/tls12-anon-upgrade.c b/tests/tls12-anon-upgrade.c index 932951d4e9..e3ffec15eb 100644 --- a/tests/tls12-anon-upgrade.c +++ b/tests/tls12-anon-upgrade.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -42,103 +42,99 @@ static void tls_log_func(int level, const char *str) } static unsigned char ca_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTQwNDA0MTk1OTA1WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD46JAPKrTsNTHl\n" - "zD06eIYBF/8Z+TR0wukp9Cdh8Sw77dODLjy/QrVKiDgDZZdyUc8Agsdr86i95O0p\n" - "w19Np3a0wja0VC9uwppZrpuHsrWukwxIBXoViyBc20Y6Ce8j0scCbR10SP565qXC\n" - "i8vr86S4xmQMRZMtwohP/GWQzt45jqkHPYHjdKzwo2b2XI7joDq0dvbr3MSONkGs\n" - "z7A/1Bl3iH5keDTWjqpJRWqXE79IhGOhELy+gG4VLJDGHWCr2mq24b9Kirp+TTxl\n" - "lUwJRbchqUqerlFdt1NgDoGaJyd73Sh0qcZzmEiOI2hGvBtG86tdQ6veC9dl05et\n" - "pM+6RMABAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" - "ADAdBgNVHQ4EFgQUGD0RYr2H7kfjQUcBMxSTCDQnhu0wDQYJKoZIhvcNAQELBQAD\n" - "ggEBALnHMubZ6WJ/XOFyDuo0imwg2onrPas3MuKT4+y0aHY943BgAOEc3jKitRjc\n" - "qhb0IUD+NS7itRwNtCgI3v5Ym5nnQoVk+aOD/D724TjJ9XaPQJzOnuGaZX99VN2F\n" - "sgwAtDXedlDQ+I6KLzLd6VW+UyWTG4qiRjOGDnG2kM1wAEOM27TzHV/YWleGjhtA\n" - "bRHxkioOni5goNlTzazxF4v9VD2uinWrIFyZmF6vQuMm6rKFgq6higAU8uesFo7+\n" - "3qpeRjNrPC4fNJUBvv+PC0WnP0PLnD/rY/ZcTYjLb/vJp1fiMJ5fU7jJklBhX2TE\n" - "tstcP7FUV5HA/s9BxgAh0Z2wyyY=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t ca_cert = { ca_cert_pem, - sizeof(ca_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIIC4DCCAcigAwIBAgIBADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwNDA0MTk1OTA1WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD46JAPKrTsNTHl\n" + "zD06eIYBF/8Z+TR0wukp9Cdh8Sw77dODLjy/QrVKiDgDZZdyUc8Agsdr86i95O0p\n" + "w19Np3a0wja0VC9uwppZrpuHsrWukwxIBXoViyBc20Y6Ce8j0scCbR10SP565qXC\n" + "i8vr86S4xmQMRZMtwohP/GWQzt45jqkHPYHjdKzwo2b2XI7joDq0dvbr3MSONkGs\n" + "z7A/1Bl3iH5keDTWjqpJRWqXE79IhGOhELy+gG4VLJDGHWCr2mq24b9Kirp+TTxl\n" + "lUwJRbchqUqerlFdt1NgDoGaJyd73Sh0qcZzmEiOI2hGvBtG86tdQ6veC9dl05et\n" + "pM+6RMABAgMBAAGjQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" + "ADAdBgNVHQ4EFgQUGD0RYr2H7kfjQUcBMxSTCDQnhu0wDQYJKoZIhvcNAQELBQAD\n" + "ggEBALnHMubZ6WJ/XOFyDuo0imwg2onrPas3MuKT4+y0aHY943BgAOEc3jKitRjc\n" + "qhb0IUD+NS7itRwNtCgI3v5Ym5nnQoVk+aOD/D724TjJ9XaPQJzOnuGaZX99VN2F\n" + "sgwAtDXedlDQ+I6KLzLd6VW+UyWTG4qiRjOGDnG2kM1wAEOM27TzHV/YWleGjhtA\n" + "bRHxkioOni5goNlTzazxF4v9VD2uinWrIFyZmF6vQuMm6rKFgq6higAU8uesFo7+\n" + "3qpeRjNrPC4fNJUBvv+PC0WnP0PLnD/rY/ZcTYjLb/vJp1fiMJ5fU7jJklBhX2TE\n" + "tstcP7FUV5HA/s9BxgAh0Z2wyyY=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t ca_cert = { ca_cert_pem, sizeof(ca_cert_pem) }; static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIDIzCCAgugAwIBAgIMUz8PCR2sdRK56V6OMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" - "BgNVBAMTBENBLTEwIhgPMjAxNDA0MDQxOTU5MDVaGA85OTk5MTIzMTIzNTk1OVow\n" - "EzERMA8GA1UEAxMIc2VydmVyLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" - "AoIBAQDZ3dCzh9gOTOiOb2dtrPu91fYYgC/ey0ACYjQxaru7FZwnuXPhQK9KHsIV\n" - "YRIyo49wjKZddkHet2sbpFAAeETZh8UUWLRb/mupyaSJMycaYCNjLZCUJTztvXxJ\n" - "CCNfbtgvKC+Vu1mu94KBPatslgvnsamH7AiL5wmwRRqdH/Z93XaEvuRG6Zk0Sh9q\n" - "ZMdCboGfjtmGEJ1V+z5CR+IyH4sckzd8WJW6wBSEwgliGaXnc75xKtFWBZV2njNr\n" - "8V1TOYOdLEbiF4wduVExL5TKq2ywNkRpUfK2I1BcWS5D9Te/QT7aSdE08rL6ztmZ\n" - "IhILSrMOfoLnJ4lzXspz3XLlEuhnAgMBAAGjdzB1MAwGA1UdEwEB/wQCMAAwFAYD\n" - "VR0RBA0wC4IJbG9jYWxob3N0MA8GA1UdDwEB/wQFAwMHoAAwHQYDVR0OBBYEFJXR\n" - "raRS5MVhEqaRE42A3S2BIj7UMB8GA1UdIwQYMBaAFP6S7AyMRO2RfkANgo8YsCl8\n" - "JfJkMA0GCSqGSIb3DQEBCwUAA4IBAQCQ62+skMVZYrGbpab8RI9IG6xH8kEndvFj\n" - "J7wBBZCOlcjOj+HQ7a2buF5zGKRwAOSznKcmvZ7l5DPdsd0t5/VT9LKSbQ6+CfGr\n" - "Xs5qPaDJnRhZkOILCvXJ9qyO+79WNMsg9pWnxkTK7aWR5OYE+1Qw1jG681HMkWTm\n" - "nt7et9bdiNNpvA+L55569XKbdtJLs3hn5gEQFgS7EaEj59aC4vzSTFcidowCoa43\n" - "7JmfSfC9YaAIFH2vriyU0QNf2y7cG5Hpkge+U7uMzQrsT77Q3SDB9WkyPAFNSB4Q\n" - "B/r+OtZXOnQhLlMV7h4XGlWruFEaOBVjFHSdMGUh+DtaLvd1bVXI\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIDATCCAemgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" - "MCIYDzIwMTQwNDA0MTk1OTA1WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" - "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDvhyQfsUm3T0xK\n" - "jiBXO3H6Y27b7lmCRYZQCmXCl2sUsGDL7V9biavTt3+sorWtH542/cTGDh5n8591\n" - "7rVxAB/VASmN55O3fjZyFGrjusjhXBla0Yxe5rZ/7/Pjrq84T7gc/IXiX9Sums/c\n" - "o9AeoykfhsjV2ubhh4h+8uPsHDTcAFTxq3mQaoldwnW2nmjDFzaKLtQdnyFf41o6\n" - "nsJCK/J9PtpdCID5Zb+eQfu5Yhk1iUHe8a9TOstCHtgBq61YzufDHUQk3zsT+VZM\n" - "20lDvSBnHdWLjxoea587JbkvtH8xRR8ThwABSb98qPnhJ8+A7mpO89QO1wxZM85A\n" - "xEweQlMHAgMBAAGjZDBiMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" - "ADAdBgNVHQ4EFgQU/pLsDIxE7ZF+QA2CjxiwKXwl8mQwHwYDVR0jBBgwFoAUGD0R\n" - "Yr2H7kfjQUcBMxSTCDQnhu0wDQYJKoZIhvcNAQELBQADggEBANEXLUV+Z1PGTn7M\n" - "3rPT/m/EamcrZJ3vFWrnfN91ws5llyRUKNhx6222HECh3xRSxH9YJONsbv2zY6sd\n" - "ztY7lvckL4xOgWAjoCVTx3hqbZjDxpLRsvraw1PlqBHlRQVWLKlEQ55+tId2zgMX\n" - "Z+wxM7FlU/6yWVPODIxrqYQd2KqaEp4aLIklw6Hi4HD6DnQJikjsJ6Noe0qyX1Tx\n" - "uZ8mgP/G47Fe2d2H29kJ1iJ6hp1XOqyWrVIh/jONcnTvWS8aMqS3MU0EJH2Pb1Qa\n" - "KGIvbd/3H9LykFTP/b7Imdv2fZxXIK8jC+jbF1w6rdBCVNA0p30X/jonoC3vynEK\n" - "5cK0cgs=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIIDIzCCAgugAwIBAgIMUz8PCR2sdRK56V6OMA0GCSqGSIb3DQEBCwUAMA8xDTAL\n" + "BgNVBAMTBENBLTEwIhgPMjAxNDA0MDQxOTU5MDVaGA85OTk5MTIzMTIzNTk1OVow\n" + "EzERMA8GA1UEAxMIc2VydmVyLTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" + "AoIBAQDZ3dCzh9gOTOiOb2dtrPu91fYYgC/ey0ACYjQxaru7FZwnuXPhQK9KHsIV\n" + "YRIyo49wjKZddkHet2sbpFAAeETZh8UUWLRb/mupyaSJMycaYCNjLZCUJTztvXxJ\n" + "CCNfbtgvKC+Vu1mu94KBPatslgvnsamH7AiL5wmwRRqdH/Z93XaEvuRG6Zk0Sh9q\n" + "ZMdCboGfjtmGEJ1V+z5CR+IyH4sckzd8WJW6wBSEwgliGaXnc75xKtFWBZV2njNr\n" + "8V1TOYOdLEbiF4wduVExL5TKq2ywNkRpUfK2I1BcWS5D9Te/QT7aSdE08rL6ztmZ\n" + "IhILSrMOfoLnJ4lzXspz3XLlEuhnAgMBAAGjdzB1MAwGA1UdEwEB/wQCMAAwFAYD\n" + "VR0RBA0wC4IJbG9jYWxob3N0MA8GA1UdDwEB/wQFAwMHoAAwHQYDVR0OBBYEFJXR\n" + "raRS5MVhEqaRE42A3S2BIj7UMB8GA1UdIwQYMBaAFP6S7AyMRO2RfkANgo8YsCl8\n" + "JfJkMA0GCSqGSIb3DQEBCwUAA4IBAQCQ62+skMVZYrGbpab8RI9IG6xH8kEndvFj\n" + "J7wBBZCOlcjOj+HQ7a2buF5zGKRwAOSznKcmvZ7l5DPdsd0t5/VT9LKSbQ6+CfGr\n" + "Xs5qPaDJnRhZkOILCvXJ9qyO+79WNMsg9pWnxkTK7aWR5OYE+1Qw1jG681HMkWTm\n" + "nt7et9bdiNNpvA+L55569XKbdtJLs3hn5gEQFgS7EaEj59aC4vzSTFcidowCoa43\n" + "7JmfSfC9YaAIFH2vriyU0QNf2y7cG5Hpkge+U7uMzQrsT77Q3SDB9WkyPAFNSB4Q\n" + "B/r+OtZXOnQhLlMV7h4XGlWruFEaOBVjFHSdMGUh+DtaLvd1bVXI\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIDATCCAemgAwIBAgIBATANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRDQS0w\n" + "MCIYDzIwMTQwNDA0MTk1OTA1WhgPOTk5OTEyMzEyMzU5NTlaMA8xDTALBgNVBAMT\n" + "BENBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDvhyQfsUm3T0xK\n" + "jiBXO3H6Y27b7lmCRYZQCmXCl2sUsGDL7V9biavTt3+sorWtH542/cTGDh5n8591\n" + "7rVxAB/VASmN55O3fjZyFGrjusjhXBla0Yxe5rZ/7/Pjrq84T7gc/IXiX9Sums/c\n" + "o9AeoykfhsjV2ubhh4h+8uPsHDTcAFTxq3mQaoldwnW2nmjDFzaKLtQdnyFf41o6\n" + "nsJCK/J9PtpdCID5Zb+eQfu5Yhk1iUHe8a9TOstCHtgBq61YzufDHUQk3zsT+VZM\n" + "20lDvSBnHdWLjxoea587JbkvtH8xRR8ThwABSb98qPnhJ8+A7mpO89QO1wxZM85A\n" + "xEweQlMHAgMBAAGjZDBiMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcE\n" + "ADAdBgNVHQ4EFgQU/pLsDIxE7ZF+QA2CjxiwKXwl8mQwHwYDVR0jBBgwFoAUGD0R\n" + "Yr2H7kfjQUcBMxSTCDQnhu0wDQYJKoZIhvcNAQELBQADggEBANEXLUV+Z1PGTn7M\n" + "3rPT/m/EamcrZJ3vFWrnfN91ws5llyRUKNhx6222HECh3xRSxH9YJONsbv2zY6sd\n" + "ztY7lvckL4xOgWAjoCVTx3hqbZjDxpLRsvraw1PlqBHlRQVWLKlEQ55+tId2zgMX\n" + "Z+wxM7FlU/6yWVPODIxrqYQd2KqaEp4aLIklw6Hi4HD6DnQJikjsJ6Noe0qyX1Tx\n" + "uZ8mgP/G47Fe2d2H29kJ1iJ6hp1XOqyWrVIh/jONcnTvWS8aMqS3MU0EJH2Pb1Qa\n" + "KGIvbd/3H9LykFTP/b7Imdv2fZxXIK8jC+jbF1w6rdBCVNA0p30X/jonoC3vynEK\n" + "5cK0cgs=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIEpQIBAAKCAQEA2d3Qs4fYDkzojm9nbaz7vdX2GIAv3stAAmI0MWq7uxWcJ7lz\n" - "4UCvSh7CFWESMqOPcIymXXZB3rdrG6RQAHhE2YfFFFi0W/5rqcmkiTMnGmAjYy2Q\n" - "lCU87b18SQgjX27YLygvlbtZrveCgT2rbJYL57Gph+wIi+cJsEUanR/2fd12hL7k\n" - "RumZNEofamTHQm6Bn47ZhhCdVfs+QkfiMh+LHJM3fFiVusAUhMIJYhml53O+cSrR\n" - "VgWVdp4za/FdUzmDnSxG4heMHblRMS+UyqtssDZEaVHytiNQXFkuQ/U3v0E+2knR\n" - "NPKy+s7ZmSISC0qzDn6C5yeJc17Kc91y5RLoZwIDAQABAoIBAQCRXAu5HPOsZufq\n" - "0K2DYZz9BdqSckR+M8HbVUZZiksDAeIUJwoHyi6qF2eK+B86JiK4Bz+gsBw2ys3t\n" - "vW2bQqM9N/boIl8D2fZfbCgZWkXGtUonC+mgzk+el4Rq/cEMFVqr6/YDwuKNeJpc\n" - "PJc5dcsvpTvlcjgpj9bJAvJEz2SYiIUpvtG4WNMGGapVZZPDvWn4/isY+75T5oDf\n" - "1X5jG0lN9uoUjcuGuThN7gxjwlRkcvEOPHjXc6rxfrWIDdiz/91V46PwpqVDpRrg\n" - "ig6U7+ckS0Oy2v32x0DaDhwAfDJ2RNc9az6Z+11lmY3LPkjG/p8Klcmgvt4/lwkD\n" - "OYRC5QGRAoGBAPFdud6nmVt9h1DL0o4R6snm6P3K81Ds765VWVmpzJkK3+bwe4PQ\n" - "GQQ0I0zN4hXkDMwHETS+EVWllqkK/d4dsE3volYtyTti8zthIATlgSEJ81x/ChAQ\n" - "vvXxgx+zPUnb1mUwy+X+6urTHe4bxN2ypg6ROIUmT+Hx1ITG40LRRiPTAoGBAOcT\n" - "WR8DTrj42xbxAUpz9vxJ15ZMwuIpk3ShE6+CWqvaXHF22Ju4WFwRNlW2zVLH6UMt\n" - "nNfOzyDoryoiu0+0mg0wSmgdJbtCSHoI2GeiAnjGn5i8flQlPQ8bdwwmU6g6I/EU\n" - "QRbGK/2XLmlrGN52gVy9UX0NsAA5fEOsAJiFj1CdAoGBAN9i3nbq6O2bNVSa/8mL\n" - "XaD1vGe/oQgh8gaIaYSpuXlfbjCAG+C4BZ81XgJkfj3CbfGbDNqimsqI0fKsAJ/F\n" - "HHpVMgrOn3L+Np2bW5YMj0Fzwy+1SCvsQ8C+gJwjOLMV6syGp/+6udMSB55rRv3k\n" - "rPnIf+YDumUke4tTw9wAcgkPAoGASHMkiji7QfuklbjSsslRMyDj21gN8mMevH6U\n" - "cX7pduBsA5dDqu9NpPAwnQdHsSDE3i868d8BykuqQAfLut3hPylY6vPYlLHfj4Oe\n" - "dj+xjrSX7YeMBE34qvfth32s1R4FjtzO25keyc/Q2XSew4FcZftlxVO5Txi3AXC4\n" - "bxnRKXECgYEAva+og7/rK+ZjboJVNxhFrwHp9bXhz4tzrUaWNvJD2vKJ5ZcThHcX\n" - "zCig8W7eXHLPLDhi9aWZ3kUZ1RLhrFc/6dujtVtU9z2w1tmn1I+4Zi6D6L4DzKdg\n" - "nMRLFoXufs/qoaJTqa8sQvKa+ceJAF04+gGtw617cuaZdZ3SYRLR2dk=\n" - "-----END RSA PRIVATE KEY-----\n"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIIEpQIBAAKCAQEA2d3Qs4fYDkzojm9nbaz7vdX2GIAv3stAAmI0MWq7uxWcJ7lz\n" + "4UCvSh7CFWESMqOPcIymXXZB3rdrG6RQAHhE2YfFFFi0W/5rqcmkiTMnGmAjYy2Q\n" + "lCU87b18SQgjX27YLygvlbtZrveCgT2rbJYL57Gph+wIi+cJsEUanR/2fd12hL7k\n" + "RumZNEofamTHQm6Bn47ZhhCdVfs+QkfiMh+LHJM3fFiVusAUhMIJYhml53O+cSrR\n" + "VgWVdp4za/FdUzmDnSxG4heMHblRMS+UyqtssDZEaVHytiNQXFkuQ/U3v0E+2knR\n" + "NPKy+s7ZmSISC0qzDn6C5yeJc17Kc91y5RLoZwIDAQABAoIBAQCRXAu5HPOsZufq\n" + "0K2DYZz9BdqSckR+M8HbVUZZiksDAeIUJwoHyi6qF2eK+B86JiK4Bz+gsBw2ys3t\n" + "vW2bQqM9N/boIl8D2fZfbCgZWkXGtUonC+mgzk+el4Rq/cEMFVqr6/YDwuKNeJpc\n" + "PJc5dcsvpTvlcjgpj9bJAvJEz2SYiIUpvtG4WNMGGapVZZPDvWn4/isY+75T5oDf\n" + "1X5jG0lN9uoUjcuGuThN7gxjwlRkcvEOPHjXc6rxfrWIDdiz/91V46PwpqVDpRrg\n" + "ig6U7+ckS0Oy2v32x0DaDhwAfDJ2RNc9az6Z+11lmY3LPkjG/p8Klcmgvt4/lwkD\n" + "OYRC5QGRAoGBAPFdud6nmVt9h1DL0o4R6snm6P3K81Ds765VWVmpzJkK3+bwe4PQ\n" + "GQQ0I0zN4hXkDMwHETS+EVWllqkK/d4dsE3volYtyTti8zthIATlgSEJ81x/ChAQ\n" + "vvXxgx+zPUnb1mUwy+X+6urTHe4bxN2ypg6ROIUmT+Hx1ITG40LRRiPTAoGBAOcT\n" + "WR8DTrj42xbxAUpz9vxJ15ZMwuIpk3ShE6+CWqvaXHF22Ju4WFwRNlW2zVLH6UMt\n" + "nNfOzyDoryoiu0+0mg0wSmgdJbtCSHoI2GeiAnjGn5i8flQlPQ8bdwwmU6g6I/EU\n" + "QRbGK/2XLmlrGN52gVy9UX0NsAA5fEOsAJiFj1CdAoGBAN9i3nbq6O2bNVSa/8mL\n" + "XaD1vGe/oQgh8gaIaYSpuXlfbjCAG+C4BZ81XgJkfj3CbfGbDNqimsqI0fKsAJ/F\n" + "HHpVMgrOn3L+Np2bW5YMj0Fzwy+1SCvsQ8C+gJwjOLMV6syGp/+6udMSB55rRv3k\n" + "rPnIf+YDumUke4tTw9wAcgkPAoGASHMkiji7QfuklbjSsslRMyDj21gN8mMevH6U\n" + "cX7pduBsA5dDqu9NpPAwnQdHsSDE3i868d8BykuqQAfLut3hPylY6vPYlLHfj4Oe\n" + "dj+xjrSX7YeMBE34qvfth32s1R4FjtzO25keyc/Q2XSew4FcZftlxVO5Txi3AXC4\n" + "bxnRKXECgYEAva+og7/rK+ZjboJVNxhFrwHp9bXhz4tzrUaWNvJD2vKJ5ZcThHcX\n" + "zCig8W7eXHLPLDhi9aWZ3kUZ1RLhrFc/6dujtVtU9z2w1tmn1I+4Zi6D6L4DzKdg\n" + "nMRLFoXufs/qoaJTqa8sQvKa+ceJAF04+gGtw617cuaZdZ3SYRLR2dk=\n" + "-----END RSA PRIVATE KEY-----\n"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; #define MSG "hello there ppl" @@ -167,9 +163,8 @@ static void try(const char *client_prio, gnutls_kx_algorithm_t client_kx) /* Init server */ gnutls_anon_allocate_server_credentials(&s_anoncred); gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_dh_params_init(&dh_params); gnutls_dh_params_import_pkcs3(dh_params, &p3, GNUTLS_X509_FMT_PEM); @@ -179,9 +174,10 @@ static void try(const char *client_prio, gnutls_kx_algorithm_t client_kx) gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); gnutls_credentials_set(server, GNUTLS_CRD_ANON, s_anoncred); - gnutls_priority_set_direct(server, - "NORMAL:-VERS-ALL:+VERS-TLS1.2:+ANON-ECDH:+ECDHE-RSA:+DHE-RSA", - NULL); + gnutls_priority_set_direct( + server, + "NORMAL:-VERS-ALL:+VERS-TLS1.2:+ANON-ECDH:+ECDHE-RSA:+DHE-RSA", + NULL); gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); gnutls_transport_set_ptr(server, server); @@ -192,9 +188,8 @@ static void try(const char *client_prio, gnutls_kx_algorithm_t client_kx) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -209,10 +204,10 @@ static void try(const char *client_prio, gnutls_kx_algorithm_t client_kx) if (ret < 0) exit(1); - ret = - gnutls_priority_set_direct(client, - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ARCFOUR-128:+ANON-ECDH", - NULL); + ret = gnutls_priority_set_direct( + client, + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ARCFOUR-128:+ANON-ECDH", + NULL); if (ret < 0) exit(1); @@ -223,7 +218,8 @@ static void try(const char *client_prio, gnutls_kx_algorithm_t client_kx) HANDSHAKE(client, server); if (gnutls_kx_get(client) != GNUTLS_KX_ANON_ECDH) { - fail("got unexpected key exchange algorithm: %s (expected ANON-ECDH)\n", gnutls_kx_get_name(gnutls_kx_get(client))); + fail("got unexpected key exchange algorithm: %s (expected ANON-ECDH)\n", + gnutls_kx_get_name(gnutls_kx_get(client))); exit(1); } @@ -235,7 +231,9 @@ static void try(const char *client_prio, gnutls_kx_algorithm_t client_kx) HANDSHAKE(client, server); if (gnutls_kx_get(client) != client_kx) { - fail("got unexpected key exchange algorithm: %s (expected %s)\n", gnutls_kx_get_name(gnutls_kx_get(client)), gnutls_kx_get_name(client_kx)); + fail("got unexpected key exchange algorithm: %s (expected %s)\n", + gnutls_kx_get_name(gnutls_kx_get(client)), + gnutls_kx_get_name(client_kx)); exit(1); } diff --git a/tests/tls12-cert-key-exchange.c b/tests/tls12-cert-key-exchange.c index 51aeed1e9f..5ef87bcf1d 100644 --- a/tests/tls12-cert-key-exchange.c +++ b/tests/tls12-cert-key-exchange.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* This program tests the various certificate key exchange methods supported @@ -50,10 +50,11 @@ void doit(void) "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+DHE-RSA", GNUTLS_KX_DHE_RSA, GNUTLS_SIGN_RSA_SHA256, GNUTLS_SIGN_UNKNOWN); - try_x509("TLS 1.2 with ecdhe x25519 rsa no-cli-cert (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-CURVE-ALL:+CURVE-X25519", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_SHA256, - GNUTLS_SIGN_UNKNOWN); + try_x509( + "TLS 1.2 with ecdhe x25519 rsa no-cli-cert (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-CURVE-ALL:+CURVE-X25519", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_SHA256, + GNUTLS_SIGN_UNKNOWN); try_x509("TLS 1.2 with ecdhe rsa no-cli-cert (ctype X.509)", "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA", GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_SHA256, @@ -64,61 +65,64 @@ void doit(void) GNUTLS_SIGN_UNKNOWN, &server_ca3_localhost_ecc_cert, &server_ca3_ecc_key, NULL, NULL, 0, GNUTLS_CRT_X509, GNUTLS_CRT_UNKNOWN); - try_x509("TLS 1.2 with ecdhe rsa-pss sig no-cli-cert (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA256", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, - GNUTLS_SIGN_UNKNOWN); + try_x509( + "TLS 1.2 with ecdhe rsa-pss sig no-cli-cert (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA256", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, + GNUTLS_SIGN_UNKNOWN); /* Test RSA-PSS cert/key combo issues */ - try_with_key - ("TLS 1.2 with ecdhe with rsa-pss-sha256 key no-cli-cert (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, - GNUTLS_SIGN_UNKNOWN, &server_ca3_rsa_pss2_cert, - &server_ca3_rsa_pss2_key, NULL, NULL, 0, GNUTLS_CRT_X509, - GNUTLS_CRT_UNKNOWN); - try_with_key - ("TLS 1.2 with ecdhe with rsa-pss-sha256 key and 1 sig no-cli-cert (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-SHA256", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, - GNUTLS_SIGN_UNKNOWN, &server_ca3_rsa_pss2_cert, - &server_ca3_rsa_pss2_key, NULL, NULL, 0, GNUTLS_CRT_X509, - GNUTLS_CRT_UNKNOWN); - try_with_key - ("TLS 1.2 with ecdhe with rsa-pss-sha256 key and rsa-pss-sha384 first sig no-cli-cert (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA256", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, - GNUTLS_SIGN_UNKNOWN, &server_ca3_rsa_pss2_cert, - &server_ca3_rsa_pss2_key, NULL, NULL, 0, GNUTLS_CRT_X509, - GNUTLS_CRT_UNKNOWN); - try_with_key - ("TLS 1.2 with ecdhe with rsa-pss-sha256 key and rsa-pss-sha512 first sig no-cli-cert (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-SHA512:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA256", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, - GNUTLS_SIGN_UNKNOWN, &server_ca3_rsa_pss2_cert, - &server_ca3_rsa_pss2_key, NULL, NULL, 0, GNUTLS_CRT_X509, - GNUTLS_CRT_UNKNOWN); + try_with_key( + "TLS 1.2 with ecdhe with rsa-pss-sha256 key no-cli-cert (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, + GNUTLS_SIGN_UNKNOWN, &server_ca3_rsa_pss2_cert, + &server_ca3_rsa_pss2_key, NULL, NULL, 0, GNUTLS_CRT_X509, + GNUTLS_CRT_UNKNOWN); + try_with_key( + "TLS 1.2 with ecdhe with rsa-pss-sha256 key and 1 sig no-cli-cert (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-SHA256", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, + GNUTLS_SIGN_UNKNOWN, &server_ca3_rsa_pss2_cert, + &server_ca3_rsa_pss2_key, NULL, NULL, 0, GNUTLS_CRT_X509, + GNUTLS_CRT_UNKNOWN); + try_with_key( + "TLS 1.2 with ecdhe with rsa-pss-sha256 key and rsa-pss-sha384 first sig no-cli-cert (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA256", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, + GNUTLS_SIGN_UNKNOWN, &server_ca3_rsa_pss2_cert, + &server_ca3_rsa_pss2_key, NULL, NULL, 0, GNUTLS_CRT_X509, + GNUTLS_CRT_UNKNOWN); + try_with_key( + "TLS 1.2 with ecdhe with rsa-pss-sha256 key and rsa-pss-sha512 first sig no-cli-cert (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-SHA512:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA256", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, + GNUTLS_SIGN_UNKNOWN, &server_ca3_rsa_pss2_cert, + &server_ca3_rsa_pss2_key, NULL, NULL, 0, GNUTLS_CRT_X509, + GNUTLS_CRT_UNKNOWN); - try_x509("TLS 1.2 with ecdhe rsa-pss no-cli-cert (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA256", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, - GNUTLS_SIGN_UNKNOWN); - try_with_key - ("TLS 1.2 with ecdhe rsa-pss/rsa-pss no-cli-cert (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-SHA256", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, - GNUTLS_SIGN_UNKNOWN, &server_ca3_rsa_pss_cert, - &server_ca3_rsa_pss_key, NULL, NULL, 0, GNUTLS_CRT_X509, - GNUTLS_CRT_UNKNOWN); + try_x509( + "TLS 1.2 with ecdhe rsa-pss no-cli-cert (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA256", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, + GNUTLS_SIGN_UNKNOWN); + try_with_key( + "TLS 1.2 with ecdhe rsa-pss/rsa-pss no-cli-cert (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-SHA256", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, + GNUTLS_SIGN_UNKNOWN, &server_ca3_rsa_pss_cert, + &server_ca3_rsa_pss_key, NULL, NULL, 0, GNUTLS_CRT_X509, + GNUTLS_CRT_UNKNOWN); try_x509("TLS 1.2 with rsa no-cli-cert (ctype X.509)", "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+RSA", GNUTLS_KX_RSA, GNUTLS_SIGN_UNKNOWN, GNUTLS_SIGN_UNKNOWN); - try_with_key - ("TLS 1.2 with ecdhe x25519 ed25519 no-cli-cert (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-ECDSA:-CURVE-ALL:+CURVE-X25519:-SIGN-ALL:+SIGN-EDDSA-ED25519", - GNUTLS_KX_ECDHE_ECDSA, GNUTLS_SIGN_EDDSA_ED25519, - GNUTLS_SIGN_UNKNOWN, &server_ca3_eddsa_cert, &server_ca3_eddsa_key, - NULL, NULL, 0, GNUTLS_CRT_X509, GNUTLS_CRT_UNKNOWN); + try_with_key( + "TLS 1.2 with ecdhe x25519 ed25519 no-cli-cert (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-ECDSA:-CURVE-ALL:+CURVE-X25519:-SIGN-ALL:+SIGN-EDDSA-ED25519", + GNUTLS_KX_ECDHE_ECDSA, GNUTLS_SIGN_EDDSA_ED25519, + GNUTLS_SIGN_UNKNOWN, &server_ca3_eddsa_cert, + &server_ca3_eddsa_key, NULL, NULL, 0, GNUTLS_CRT_X509, + GNUTLS_CRT_UNKNOWN); try_x509_cli("TLS 1.2 with dhe-rsa cli-cert (ctype X.509)", "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+DHE-RSA", @@ -138,25 +142,28 @@ void doit(void) GNUTLS_SIGN_RSA_SHA256, &server_ca3_localhost_ecc_cert, &server_ca3_ecc_key, &cli_ca3_cert, &cli_ca3_key, USE_CERT, GNUTLS_CRT_X509, GNUTLS_CRT_X509); - try_x509_cli("TLS 1.2 with ecdhe-rsa-pss cli-cert (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA256", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, - GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, USE_CERT); - try_with_key - ("TLS 1.2 with ecdhe-rsa-pss/rsa-pss cli-cert (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-SHA256", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, - GNUTLS_SIGN_RSA_PSS_SHA256, &server_ca3_rsa_pss_cert, - &server_ca3_rsa_pss_key, &cli_ca3_rsa_pss_cert, - &cli_ca3_rsa_pss_key, USE_CERT, GNUTLS_CRT_X509, GNUTLS_CRT_X509); + try_x509_cli( + "TLS 1.2 with ecdhe-rsa-pss cli-cert (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA256", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, + GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, USE_CERT); + try_with_key( + "TLS 1.2 with ecdhe-rsa-pss/rsa-pss cli-cert (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-SHA256", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, + GNUTLS_SIGN_RSA_PSS_SHA256, &server_ca3_rsa_pss_cert, + &server_ca3_rsa_pss_key, &cli_ca3_rsa_pss_cert, + &cli_ca3_rsa_pss_key, USE_CERT, GNUTLS_CRT_X509, + GNUTLS_CRT_X509); - try_with_key("TLS 1.2 with ecdhe x25519 ed25519 cli-cert (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-ECDSA:-CURVE-ALL:+CURVE-X25519:-SIGN-ALL:+SIGN-EDDSA-ED25519", - GNUTLS_KX_ECDHE_ECDSA, GNUTLS_SIGN_EDDSA_ED25519, - GNUTLS_SIGN_EDDSA_ED25519, &server_ca3_eddsa_cert, - &server_ca3_eddsa_key, &server_ca3_eddsa_cert, - &server_ca3_eddsa_key, USE_CERT, GNUTLS_CRT_X509, - GNUTLS_CRT_X509); + try_with_key( + "TLS 1.2 with ecdhe x25519 ed25519 cli-cert (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-ECDSA:-CURVE-ALL:+CURVE-X25519:-SIGN-ALL:+SIGN-EDDSA-ED25519", + GNUTLS_KX_ECDHE_ECDSA, GNUTLS_SIGN_EDDSA_ED25519, + GNUTLS_SIGN_EDDSA_ED25519, &server_ca3_eddsa_cert, + &server_ca3_eddsa_key, &server_ca3_eddsa_cert, + &server_ca3_eddsa_key, USE_CERT, GNUTLS_CRT_X509, + GNUTLS_CRT_X509); try_x509_cli("TLS 1.2 with dhe-rsa ask cli-cert (ctype X.509)", "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+DHE-RSA", @@ -182,50 +189,58 @@ void doit(void) "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+DHE-RSA:+CTYPE-ALL", GNUTLS_KX_DHE_RSA, GNUTLS_SIGN_RSA_SHA256, GNUTLS_SIGN_UNKNOWN); - try_rawpk("TLS 1.2 with ecdhe x25519 rsa no-cli-cert (ctype Raw PK)", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-CURVE-ALL:+CURVE-X25519:+CTYPE-ALL", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_SHA256, - GNUTLS_SIGN_UNKNOWN); + try_rawpk( + "TLS 1.2 with ecdhe x25519 rsa no-cli-cert (ctype Raw PK)", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-CURVE-ALL:+CURVE-X25519:+CTYPE-ALL", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_SHA256, + GNUTLS_SIGN_UNKNOWN); try_rawpk("TLS 1.2 with ecdhe rsa no-cli-cert (ctype Raw PK)", "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:+CTYPE-ALL", GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_SHA256, GNUTLS_SIGN_UNKNOWN); - try_rawpk("TLS 1.2 with ecdhe rsa-pss sig no-cli-cert (ctype Raw PK)", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA256:+CTYPE-ALL", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, - GNUTLS_SIGN_UNKNOWN); - try_rawpk("TLS 1.2 with ecdhe rsa-pss no-cli-cert (ctype Raw PK)", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA256:+CTYPE-ALL", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, - GNUTLS_SIGN_UNKNOWN); + try_rawpk( + "TLS 1.2 with ecdhe rsa-pss sig no-cli-cert (ctype Raw PK)", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA256:+CTYPE-ALL", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, + GNUTLS_SIGN_UNKNOWN); + try_rawpk( + "TLS 1.2 with ecdhe rsa-pss no-cli-cert (ctype Raw PK)", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA256:+CTYPE-ALL", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, + GNUTLS_SIGN_UNKNOWN); try_rawpk("TLS 1.2 with rsa no-cli-cert (ctype Raw PK)", "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+RSA:+CTYPE-ALL", GNUTLS_KX_RSA, GNUTLS_SIGN_UNKNOWN, GNUTLS_SIGN_UNKNOWN); - try_rawpk_cli("TLS 1.2 with dhe-rsa cli-cert (ctype Raw PK)", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+DHE-RSA:+CTYPE-ALL", - GNUTLS_KX_DHE_RSA, GNUTLS_SIGN_RSA_SHA256, - GNUTLS_SIGN_RSA_SHA256, USE_CERT); - try_rawpk_cli("TLS 1.2 with ecdhe-rsa cli-cert (ctype Raw PK)", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:+CTYPE-ALL", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_SHA256, - GNUTLS_SIGN_RSA_SHA256, USE_CERT); + try_rawpk_cli( + "TLS 1.2 with dhe-rsa cli-cert (ctype Raw PK)", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+DHE-RSA:+CTYPE-ALL", + GNUTLS_KX_DHE_RSA, GNUTLS_SIGN_RSA_SHA256, + GNUTLS_SIGN_RSA_SHA256, USE_CERT); + try_rawpk_cli( + "TLS 1.2 with ecdhe-rsa cli-cert (ctype Raw PK)", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:+CTYPE-ALL", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_SHA256, + GNUTLS_SIGN_RSA_SHA256, USE_CERT); try_rawpk_cli("TLS 1.2 with rsa cli-cert (ctype Raw PK)", "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+RSA:+CTYPE-ALL", GNUTLS_KX_RSA, GNUTLS_SIGN_UNKNOWN, GNUTLS_SIGN_RSA_SHA256, USE_CERT); - try_rawpk_cli("TLS 1.2 with ecdhe-rsa-pss cli-cert (ctype Raw PK)", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA256:+CTYPE-ALL", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, - GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, USE_CERT); - try_rawpk_cli("TLS 1.2 with dhe-rsa ask cli-cert (ctype Raw PK)", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+DHE-RSA:+CTYPE-ALL", - GNUTLS_KX_DHE_RSA, GNUTLS_SIGN_RSA_SHA256, - GNUTLS_SIGN_UNKNOWN, ASK_CERT); - try_rawpk_cli("TLS 1.2 with ecdhe-rsa ask cli-cert (ctype Raw PK)", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:+CTYPE-ALL", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_SHA256, - GNUTLS_SIGN_UNKNOWN, ASK_CERT); + try_rawpk_cli( + "TLS 1.2 with ecdhe-rsa-pss cli-cert (ctype Raw PK)", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA256:+CTYPE-ALL", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, + GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, USE_CERT); + try_rawpk_cli( + "TLS 1.2 with dhe-rsa ask cli-cert (ctype Raw PK)", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+DHE-RSA:+CTYPE-ALL", + GNUTLS_KX_DHE_RSA, GNUTLS_SIGN_RSA_SHA256, GNUTLS_SIGN_UNKNOWN, + ASK_CERT); + try_rawpk_cli( + "TLS 1.2 with ecdhe-rsa ask cli-cert (ctype Raw PK)", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:+CTYPE-ALL", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_SHA256, + GNUTLS_SIGN_UNKNOWN, ASK_CERT); try_rawpk_cli("TLS 1.2 with rsa ask cli-cert (ctype Raw PK)", "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+RSA:+CTYPE-ALL", GNUTLS_KX_RSA, GNUTLS_SIGN_UNKNOWN, GNUTLS_SIGN_UNKNOWN, @@ -233,25 +248,25 @@ void doit(void) /** Illegal setups **/ server_priority = "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA"; - try_with_key_fail - ("TLS 1.2 with rsa cert and only RSA-PSS sig algos in client", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-SIGN-ALL:+SIGN-RSA-PSS-SHA256:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA512", - GNUTLS_E_NO_CIPHER_SUITES, GNUTLS_E_AGAIN, - &server_ca3_localhost_cert, &server_ca3_key, NULL, NULL); + try_with_key_fail( + "TLS 1.2 with rsa cert and only RSA-PSS sig algos in client", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-SIGN-ALL:+SIGN-RSA-PSS-SHA256:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA512", + GNUTLS_E_NO_CIPHER_SUITES, GNUTLS_E_AGAIN, + &server_ca3_localhost_cert, &server_ca3_key, NULL, NULL); server_priority = NULL; - try_with_key_fail("TLS 1.2 with rsa cert and only RSA-PSS sig algos", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-SHA256:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA512", - GNUTLS_E_NO_CIPHER_SUITES, GNUTLS_E_AGAIN, - &server_ca3_localhost_cert, &server_ca3_key, NULL, - NULL); + try_with_key_fail( + "TLS 1.2 with rsa cert and only RSA-PSS sig algos", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-RSA:-SIGN-ALL:+SIGN-RSA-PSS-SHA256:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA512", + GNUTLS_E_NO_CIPHER_SUITES, GNUTLS_E_AGAIN, + &server_ca3_localhost_cert, &server_ca3_key, NULL, NULL); - try_with_key_fail - ("TLS 1.2 with rsa-pss cert and rsa cli cert with only RSA-PSS sig algos", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-SIGN-ALL:+SIGN-RSA-PSS-SHA256:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA512", - GNUTLS_E_AGAIN, GNUTLS_E_UNWANTED_ALGORITHM, - &server_ca3_rsa_pss_cert, &server_ca3_rsa_pss_key, &cli_ca3_cert, - &cli_ca3_key); + try_with_key_fail( + "TLS 1.2 with rsa-pss cert and rsa cli cert with only RSA-PSS sig algos", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-SIGN-ALL:+SIGN-RSA-PSS-SHA256:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA512", + GNUTLS_E_AGAIN, GNUTLS_E_UNWANTED_ALGORITHM, + &server_ca3_rsa_pss_cert, &server_ca3_rsa_pss_key, + &cli_ca3_cert, &cli_ca3_key); try_with_key_fail("TLS 1.2 with rsa encryption cert without RSA", "NORMAL:-VERS-ALL:+VERS-TLS1.2:-RSA", @@ -259,93 +274,96 @@ void doit(void) &server_ca3_localhost_rsa_decrypt_cert, &server_ca3_key, NULL, NULL); - try_with_key_fail - ("TLS 1.2 with (forced) rsa encryption cert and no RSA - client should detect", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-RSA:%DEBUG_ALLOW_KEY_USAGE_VIOLATIONS", - GNUTLS_E_AGAIN, GNUTLS_E_KEY_USAGE_VIOLATION, - &server_ca3_localhost_rsa_decrypt_cert, &server_ca3_key, NULL, - NULL); + try_with_key_fail( + "TLS 1.2 with (forced) rsa encryption cert and no RSA - client should detect", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-RSA:%DEBUG_ALLOW_KEY_USAGE_VIOLATIONS", + GNUTLS_E_AGAIN, GNUTLS_E_KEY_USAGE_VIOLATION, + &server_ca3_localhost_rsa_decrypt_cert, &server_ca3_key, NULL, + NULL); try_with_key_fail("TLS 1.2 with client rsa encryption cert", - "NORMAL:-VERS-ALL:+VERS-TLS1.2", - GNUTLS_E_AGAIN, GNUTLS_E_KEY_USAGE_VIOLATION, + "NORMAL:-VERS-ALL:+VERS-TLS1.2", GNUTLS_E_AGAIN, + GNUTLS_E_KEY_USAGE_VIOLATION, &server_ca3_rsa_pss_cert, &server_ca3_rsa_pss_key, &server_ca3_localhost_rsa_decrypt_cert, &server_ca3_key); - try_with_key_fail - ("TLS 1.2 with (forced) client rsa encryption cert - server should detect", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:%DEBUG_ALLOW_KEY_USAGE_VIOLATIONS", - GNUTLS_E_KEY_USAGE_VIOLATION, GNUTLS_E_AGAIN, - &server_ca3_rsa_pss_cert, &server_ca3_rsa_pss_key, - &server_ca3_localhost_rsa_decrypt_cert, &server_ca3_key); + try_with_key_fail( + "TLS 1.2 with (forced) client rsa encryption cert - server should detect", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:%DEBUG_ALLOW_KEY_USAGE_VIOLATIONS", + GNUTLS_E_KEY_USAGE_VIOLATION, GNUTLS_E_AGAIN, + &server_ca3_rsa_pss_cert, &server_ca3_rsa_pss_key, + &server_ca3_localhost_rsa_decrypt_cert, &server_ca3_key); - try_with_rawpk_key_fail - ("rawpk TLS 1.2 with rsa encryption cert without KX-RSA", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:+CTYPE-RAWPK:-RSA", - GNUTLS_E_NO_CIPHER_SUITES, GNUTLS_E_AGAIN, &rawpk_public_key1, - &rawpk_private_key1, GNUTLS_KEY_KEY_ENCIPHERMENT, NULL, NULL, 0); + try_with_rawpk_key_fail( + "rawpk TLS 1.2 with rsa encryption cert without KX-RSA", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:+CTYPE-RAWPK:-RSA", + GNUTLS_E_NO_CIPHER_SUITES, GNUTLS_E_AGAIN, &rawpk_public_key1, + &rawpk_private_key1, GNUTLS_KEY_KEY_ENCIPHERMENT, NULL, NULL, + 0); - try_with_rawpk_key_fail - ("rawpk TLS 1.2 with client rsa encryption cert without KX-RSA", - "NORMAL:-VERS-ALL:+VERS-TLS1.2:+CTYPE-RAWPK:-RSA", GNUTLS_E_AGAIN, - GNUTLS_E_KEY_USAGE_VIOLATION, &rawpk_public_key2, - &rawpk_private_key2, 0, &rawpk_public_key1, &rawpk_private_key1, - GNUTLS_KEY_KEY_ENCIPHERMENT); + try_with_rawpk_key_fail( + "rawpk TLS 1.2 with client rsa encryption cert without KX-RSA", + "NORMAL:-VERS-ALL:+VERS-TLS1.2:+CTYPE-RAWPK:-RSA", + GNUTLS_E_AGAIN, GNUTLS_E_KEY_USAGE_VIOLATION, + &rawpk_public_key2, &rawpk_private_key2, 0, &rawpk_public_key1, + &rawpk_private_key1, GNUTLS_KEY_KEY_ENCIPHERMENT); #ifdef ENABLE_GOST if (!gnutls_fips140_mode_enabled()) { server_priority = "NORMAL:+CTYPE-ALL" - ":+VKO-GOST-12" - ":+GROUP-GOST-ALL" - ":+CIPHER-GOST-ALL" ":+MAC-GOST-ALL" ":+SIGN-GOST-ALL"; + ":+VKO-GOST-12" + ":+GROUP-GOST-ALL" + ":+CIPHER-GOST-ALL" + ":+MAC-GOST-ALL" + ":+SIGN-GOST-ALL"; const char *gost_client_prio = - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL"; - try_with_key - ("TLS 1.2 with gost12 256 no-cli-cert (ctype X.509)", - gost_client_prio, GNUTLS_KX_VKO_GOST_12, - GNUTLS_SIGN_GOST_256, GNUTLS_SIGN_UNKNOWN, - &server_ca3_gost12_256_cert, &server_ca3_gost12_256_key, - NULL, NULL, 0, GNUTLS_CRT_X509, GNUTLS_CRT_UNKNOWN); - try_with_key - ("TLS 1.2 with gost12 256 ask cli-cert (ctype X.509)", - gost_client_prio, GNUTLS_KX_VKO_GOST_12, - GNUTLS_SIGN_GOST_256, GNUTLS_SIGN_UNKNOWN, - &server_ca3_gost12_256_cert, &server_ca3_gost12_256_key, - NULL, NULL, ASK_CERT, GNUTLS_CRT_X509, GNUTLS_CRT_X509); - try_with_key - ("TLS 1.2 with gost12 256 use cli-cert (ctype X.509)", - gost_client_prio, GNUTLS_KX_VKO_GOST_12, - GNUTLS_SIGN_GOST_256, GNUTLS_SIGN_GOST_256, - &server_ca3_gost12_256_cert, &server_ca3_gost12_256_key, - &cligost12_256_ca3_cert, &cligost12_256_ca3_key, USE_CERT, - GNUTLS_CRT_X509, GNUTLS_CRT_X509); - try_with_key - ("TLS 1.2 with gost12 512 no-cli-cert (ctype X.509)", - gost_client_prio, GNUTLS_KX_VKO_GOST_12, - GNUTLS_SIGN_GOST_512, GNUTLS_SIGN_UNKNOWN, - &server_ca3_gost12_512_cert, &server_ca3_gost12_512_key, - NULL, NULL, 0, GNUTLS_CRT_X509, GNUTLS_CRT_UNKNOWN); - try_with_key - ("TLS 1.2 with gost12 512 ask cli-cert (ctype X.509)", - gost_client_prio, GNUTLS_KX_VKO_GOST_12, - GNUTLS_SIGN_GOST_512, GNUTLS_SIGN_UNKNOWN, - &server_ca3_gost12_512_cert, &server_ca3_gost12_512_key, - NULL, NULL, ASK_CERT, GNUTLS_CRT_X509, GNUTLS_CRT_X509); - try_with_key - ("TLS 1.2 with gost12 512 use cli-cert (ctype X.509)", - gost_client_prio, GNUTLS_KX_VKO_GOST_12, - GNUTLS_SIGN_GOST_512, GNUTLS_SIGN_GOST_512, - &server_ca3_gost12_512_cert, &server_ca3_gost12_512_key, - &cligost12_512_ca3_cert, &cligost12_512_ca3_key, USE_CERT, - GNUTLS_CRT_X509, GNUTLS_CRT_X509); - try_with_key - ("TLS 1.2 with gost12 512 use cli-cert gost12 256 (ctype X.509)", - gost_client_prio, GNUTLS_KX_VKO_GOST_12, - GNUTLS_SIGN_GOST_512, GNUTLS_SIGN_GOST_256, - &server_ca3_gost12_512_cert, &server_ca3_gost12_512_key, - &cligost12_256_ca3_cert, &cligost12_256_ca3_key, USE_CERT, - GNUTLS_CRT_X509, GNUTLS_CRT_X509); + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL"; + try_with_key( + "TLS 1.2 with gost12 256 no-cli-cert (ctype X.509)", + gost_client_prio, GNUTLS_KX_VKO_GOST_12, + GNUTLS_SIGN_GOST_256, GNUTLS_SIGN_UNKNOWN, + &server_ca3_gost12_256_cert, &server_ca3_gost12_256_key, + NULL, NULL, 0, GNUTLS_CRT_X509, GNUTLS_CRT_UNKNOWN); + try_with_key( + "TLS 1.2 with gost12 256 ask cli-cert (ctype X.509)", + gost_client_prio, GNUTLS_KX_VKO_GOST_12, + GNUTLS_SIGN_GOST_256, GNUTLS_SIGN_UNKNOWN, + &server_ca3_gost12_256_cert, &server_ca3_gost12_256_key, + NULL, NULL, ASK_CERT, GNUTLS_CRT_X509, GNUTLS_CRT_X509); + try_with_key( + "TLS 1.2 with gost12 256 use cli-cert (ctype X.509)", + gost_client_prio, GNUTLS_KX_VKO_GOST_12, + GNUTLS_SIGN_GOST_256, GNUTLS_SIGN_GOST_256, + &server_ca3_gost12_256_cert, &server_ca3_gost12_256_key, + &cligost12_256_ca3_cert, &cligost12_256_ca3_key, + USE_CERT, GNUTLS_CRT_X509, GNUTLS_CRT_X509); + try_with_key( + "TLS 1.2 with gost12 512 no-cli-cert (ctype X.509)", + gost_client_prio, GNUTLS_KX_VKO_GOST_12, + GNUTLS_SIGN_GOST_512, GNUTLS_SIGN_UNKNOWN, + &server_ca3_gost12_512_cert, &server_ca3_gost12_512_key, + NULL, NULL, 0, GNUTLS_CRT_X509, GNUTLS_CRT_UNKNOWN); + try_with_key( + "TLS 1.2 with gost12 512 ask cli-cert (ctype X.509)", + gost_client_prio, GNUTLS_KX_VKO_GOST_12, + GNUTLS_SIGN_GOST_512, GNUTLS_SIGN_UNKNOWN, + &server_ca3_gost12_512_cert, &server_ca3_gost12_512_key, + NULL, NULL, ASK_CERT, GNUTLS_CRT_X509, GNUTLS_CRT_X509); + try_with_key( + "TLS 1.2 with gost12 512 use cli-cert (ctype X.509)", + gost_client_prio, GNUTLS_KX_VKO_GOST_12, + GNUTLS_SIGN_GOST_512, GNUTLS_SIGN_GOST_512, + &server_ca3_gost12_512_cert, &server_ca3_gost12_512_key, + &cligost12_512_ca3_cert, &cligost12_512_ca3_key, + USE_CERT, GNUTLS_CRT_X509, GNUTLS_CRT_X509); + try_with_key( + "TLS 1.2 with gost12 512 use cli-cert gost12 256 (ctype X.509)", + gost_client_prio, GNUTLS_KX_VKO_GOST_12, + GNUTLS_SIGN_GOST_512, GNUTLS_SIGN_GOST_256, + &server_ca3_gost12_512_cert, &server_ca3_gost12_512_key, + &cligost12_256_ca3_cert, &cligost12_256_ca3_key, + USE_CERT, GNUTLS_CRT_X509, GNUTLS_CRT_X509); server_priority = NULL; } #endif diff --git a/tests/tls12-cipher-neg.c b/tests/tls12-cipher-neg.c index 501c2b9b76..23e6bc902c 100644 --- a/tests/tls12-cipher-neg.c +++ b/tests/tls12-cipher-neg.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* This program tests the ciphersuite negotiation for various key exchange @@ -39,215 +39,179 @@ test_case_st tests[] = { { - .name = "server TLS 1.2: NULL (server)", - .not_on_fips = 1, - .cipher = GNUTLS_CIPHER_NULL, - .server_prio = - "NORMAL:-CIPHER-ALL:+NULL:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+NULL", - .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(NULL)-(SHA1)", - }, - { - .name = "client TLS 1.2: NULL (client)", - .not_on_fips = 1, - .cipher = GNUTLS_CIPHER_NULL, - .server_prio = "NORMAL:+NULL", - .client_prio = - "NORMAL:-CIPHER-ALL:+NULL:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", - .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(NULL)-(SHA1)", - }, - { - .name = "server TLS 1.2: AES-128-GCM (server)", - .cipher = GNUTLS_CIPHER_AES_128_GCM, - .server_prio = - "NORMAL:-CIPHER-ALL:+AES-128-GCM:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+AES-128-GCM", - .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(AES-128-GCM)"}, - { - .name = "both TLS 1.2: AES-128-GCM (server)", - .cipher = GNUTLS_CIPHER_AES_128_GCM, - .server_prio = - "NORMAL:-CIPHER-ALL:+AES-128-GCM:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+AES-128-GCM:+VERS-TLS1.2", - .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(AES-128-GCM)"}, - { - .name = "client TLS 1.2: AES-128-GCM (client)", - .cipher = GNUTLS_CIPHER_AES_128_GCM, - .server_prio = "NORMAL:+AES-128-GCM", - .client_prio = - "NORMAL:-CIPHER-ALL:+AES-128-GCM:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", - .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(AES-128-GCM)"}, - { - .name = "both TLS 1.2: AES-128-GCM (client)", - .cipher = GNUTLS_CIPHER_AES_128_GCM, - .server_prio = "NORMAL:+AES-128-GCM:+VERS-TLS1.2", - .client_prio = - "NORMAL:-CIPHER-ALL:+AES-128-GCM:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", - .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(AES-128-GCM)"}, - { - .name = "server TLS 1.2: AES-128-CCM (server)", - .cipher = GNUTLS_CIPHER_AES_128_CCM, - .server_prio = - "NORMAL:-CIPHER-ALL:+AES-128-CCM:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+AES-128-CCM", - .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(AES-128-CCM)"}, - { - .name = "both TLS 1.2: AES-128-CCM (server)", - .cipher = GNUTLS_CIPHER_AES_128_CCM, - .server_prio = - "NORMAL:-CIPHER-ALL:+AES-128-CCM:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+AES-128-CCM:+VERS-TLS1.2", - .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(AES-128-CCM)"}, - { - .name = "client TLS 1.2: AES-128-CCM (client)", - .cipher = GNUTLS_CIPHER_AES_128_CCM, - .server_prio = "NORMAL:+AES-128-CCM", - .client_prio = - "NORMAL:-CIPHER-ALL:+AES-128-CCM:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", - .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(AES-128-CCM)"}, - { - .name = "both TLS 1.2: AES-128-CCM (client)", - .cipher = GNUTLS_CIPHER_AES_128_CCM, - .server_prio = "NORMAL:+AES-128-CCM:+VERS-TLS1.2", - .client_prio = - "NORMAL:-CIPHER-ALL:+AES-128-CCM:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", - .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(AES-128-CCM)"}, - { - .name = "server TLS 1.2: CHACHA20-POLY (server)", - .cipher = GNUTLS_CIPHER_CHACHA20_POLY1305, - .not_on_fips = 1, - .server_prio = - "NORMAL:-CIPHER-ALL:+CHACHA20-POLY1305:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+CHACHA20-POLY1305", - .desc = - "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(CHACHA20-POLY1305)"}, - { - .name = "both TLS 1.2: CHACHA20-POLY (server)", - .cipher = GNUTLS_CIPHER_CHACHA20_POLY1305, - .not_on_fips = 1, - .server_prio = - "NORMAL:-CIPHER-ALL:+CHACHA20-POLY1305:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+CHACHA20-POLY1305:+VERS-TLS1.2", - .desc = - "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(CHACHA20-POLY1305)"}, - { - .name = "client TLS 1.2: CHACHA20-POLY (client)", - .cipher = GNUTLS_CIPHER_CHACHA20_POLY1305, - .not_on_fips = 1, - .server_prio = "NORMAL:+CHACHA20-POLY1305", - .client_prio = - "NORMAL:-CIPHER-ALL:+CHACHA20-POLY1305:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", - .desc = - "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(CHACHA20-POLY1305)"}, - { - .name = "both TLS 1.2: CHACHA20-POLY (client)", - .cipher = GNUTLS_CIPHER_CHACHA20_POLY1305, - .not_on_fips = 1, - .server_prio = "NORMAL:+CHACHA20-POLY1305:+VERS-TLS1.2", - .client_prio = - "NORMAL:-CIPHER-ALL:+CHACHA20-POLY1305:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", - .desc = - "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(CHACHA20-POLY1305)"}, - { - .name = "server TLS 1.2: AES-128-CBC (server)", - .cipher = GNUTLS_CIPHER_AES_128_CBC, - .server_prio = - "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+AES-128-CBC", - .desc = - "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(AES-128-CBC)-(SHA1)"}, - { - .name = "both TLS 1.2: AES-128-CBC (server)", - .cipher = GNUTLS_CIPHER_AES_128_CBC, - .server_prio = - "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+AES-128-CBC:+VERS-TLS1.2", - .desc = - "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(AES-128-CBC)-(SHA1)"}, - { - .name = "client TLS 1.2: AES-128-CBC (client)", - .cipher = GNUTLS_CIPHER_AES_128_CBC, - .server_prio = "NORMAL:+AES-128-CBC", - .client_prio = - "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", - .desc = - "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(AES-128-CBC)-(SHA1)"}, - { - .name = "both TLS 1.2: AES-128-CBC (client)", - .cipher = GNUTLS_CIPHER_AES_128_CBC, - .server_prio = "NORMAL:+AES-128-CBC:+VERS-TLS1.2", - .client_prio = - "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", - .desc = - "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(AES-128-CBC)-(SHA1)"}, - { - .name = "server TLS 1.2: 3DES-CBC (server)", - .cipher = GNUTLS_CIPHER_3DES_CBC, - .not_on_fips = 1, - .server_prio = - "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+3DES-CBC", - .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(3DES-CBC)-(SHA1)"}, - { - .name = "both TLS 1.2: 3DES-CBC (server)", - .cipher = GNUTLS_CIPHER_3DES_CBC, - .not_on_fips = 1, - .server_prio = - "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+3DES-CBC:+VERS-TLS1.2", - .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(3DES-CBC)-(SHA1)"}, - { - .name = "client TLS 1.2: 3DES-CBC (client)", - .cipher = GNUTLS_CIPHER_3DES_CBC, - .not_on_fips = 1, - .server_prio = "NORMAL:+3DES-CBC", - .client_prio = - "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", - .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(3DES-CBC)-(SHA1)"}, - { - .name = "both TLS 1.2: 3DES-CBC (client)", - .cipher = GNUTLS_CIPHER_3DES_CBC, - .not_on_fips = 1, - .server_prio = "NORMAL:+3DES-CBC:+VERS-TLS1.2", - .client_prio = - "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", - .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(3DES-CBC)-(SHA1)"}, - { - .name = "server TLS 1.2: ARCFOUR-128 (server)", - .cipher = GNUTLS_CIPHER_ARCFOUR_128, - .not_on_fips = 1, - .server_prio = - "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+ARCFOUR-128", - .desc = - "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(ARCFOUR-128)-(SHA1)"}, - { - .name = "both TLS 1.2: ARCFOUR-128 (server)", - .cipher = GNUTLS_CIPHER_ARCFOUR_128, - .not_on_fips = 1, - .server_prio = - "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", - .client_prio = "NORMAL:+ARCFOUR-128:+VERS-TLS1.2", - .desc = - "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(ARCFOUR-128)-(SHA1)"}, - { - .name = "client TLS 1.2: ARCFOUR-128 (client)", - .cipher = GNUTLS_CIPHER_ARCFOUR_128, - .not_on_fips = 1, - .server_prio = "NORMAL:+ARCFOUR-128", - .client_prio = - "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", - .desc = - "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(ARCFOUR-128)-(SHA1)"}, - { - .name = "both TLS 1.2: ARCFOUR-128 (client)", - .cipher = GNUTLS_CIPHER_ARCFOUR_128, - .not_on_fips = 1, - .server_prio = "NORMAL:+ARCFOUR-128:+VERS-TLS1.2", - .client_prio = - "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", - .desc = - "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(ARCFOUR-128)-(SHA1)"} + .name = "server TLS 1.2: NULL (server)", + .not_on_fips = 1, + .cipher = GNUTLS_CIPHER_NULL, + .server_prio = + "NORMAL:-CIPHER-ALL:+NULL:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+NULL", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(NULL)-(SHA1)", + }, + { + .name = "client TLS 1.2: NULL (client)", + .not_on_fips = 1, + .cipher = GNUTLS_CIPHER_NULL, + .server_prio = "NORMAL:+NULL", + .client_prio = + "NORMAL:-CIPHER-ALL:+NULL:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(NULL)-(SHA1)", + }, + { .name = "server TLS 1.2: AES-128-GCM (server)", + .cipher = GNUTLS_CIPHER_AES_128_GCM, + .server_prio = + "NORMAL:-CIPHER-ALL:+AES-128-GCM:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+AES-128-GCM", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(AES-128-GCM)" }, + { .name = "both TLS 1.2: AES-128-GCM (server)", + .cipher = GNUTLS_CIPHER_AES_128_GCM, + .server_prio = + "NORMAL:-CIPHER-ALL:+AES-128-GCM:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+AES-128-GCM:+VERS-TLS1.2", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(AES-128-GCM)" }, + { .name = "client TLS 1.2: AES-128-GCM (client)", + .cipher = GNUTLS_CIPHER_AES_128_GCM, + .server_prio = "NORMAL:+AES-128-GCM", + .client_prio = + "NORMAL:-CIPHER-ALL:+AES-128-GCM:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(AES-128-GCM)" }, + { .name = "both TLS 1.2: AES-128-GCM (client)", + .cipher = GNUTLS_CIPHER_AES_128_GCM, + .server_prio = "NORMAL:+AES-128-GCM:+VERS-TLS1.2", + .client_prio = + "NORMAL:-CIPHER-ALL:+AES-128-GCM:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(AES-128-GCM)" }, + { .name = "server TLS 1.2: AES-128-CCM (server)", + .cipher = GNUTLS_CIPHER_AES_128_CCM, + .server_prio = + "NORMAL:-CIPHER-ALL:+AES-128-CCM:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+AES-128-CCM", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(AES-128-CCM)" }, + { .name = "both TLS 1.2: AES-128-CCM (server)", + .cipher = GNUTLS_CIPHER_AES_128_CCM, + .server_prio = + "NORMAL:-CIPHER-ALL:+AES-128-CCM:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+AES-128-CCM:+VERS-TLS1.2", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(AES-128-CCM)" }, + { .name = "client TLS 1.2: AES-128-CCM (client)", + .cipher = GNUTLS_CIPHER_AES_128_CCM, + .server_prio = "NORMAL:+AES-128-CCM", + .client_prio = + "NORMAL:-CIPHER-ALL:+AES-128-CCM:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(AES-128-CCM)" }, + { .name = "both TLS 1.2: AES-128-CCM (client)", + .cipher = GNUTLS_CIPHER_AES_128_CCM, + .server_prio = "NORMAL:+AES-128-CCM:+VERS-TLS1.2", + .client_prio = + "NORMAL:-CIPHER-ALL:+AES-128-CCM:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(AES-128-CCM)" }, + { .name = "server TLS 1.2: CHACHA20-POLY (server)", + .cipher = GNUTLS_CIPHER_CHACHA20_POLY1305, + .not_on_fips = 1, + .server_prio = + "NORMAL:-CIPHER-ALL:+CHACHA20-POLY1305:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+CHACHA20-POLY1305", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(CHACHA20-POLY1305)" }, + { .name = "both TLS 1.2: CHACHA20-POLY (server)", + .cipher = GNUTLS_CIPHER_CHACHA20_POLY1305, + .not_on_fips = 1, + .server_prio = + "NORMAL:-CIPHER-ALL:+CHACHA20-POLY1305:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+CHACHA20-POLY1305:+VERS-TLS1.2", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(CHACHA20-POLY1305)" }, + { .name = "client TLS 1.2: CHACHA20-POLY (client)", + .cipher = GNUTLS_CIPHER_CHACHA20_POLY1305, + .not_on_fips = 1, + .server_prio = "NORMAL:+CHACHA20-POLY1305", + .client_prio = + "NORMAL:-CIPHER-ALL:+CHACHA20-POLY1305:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(CHACHA20-POLY1305)" }, + { .name = "both TLS 1.2: CHACHA20-POLY (client)", + .cipher = GNUTLS_CIPHER_CHACHA20_POLY1305, + .not_on_fips = 1, + .server_prio = "NORMAL:+CHACHA20-POLY1305:+VERS-TLS1.2", + .client_prio = + "NORMAL:-CIPHER-ALL:+CHACHA20-POLY1305:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(CHACHA20-POLY1305)" }, + { .name = "server TLS 1.2: AES-128-CBC (server)", + .cipher = GNUTLS_CIPHER_AES_128_CBC, + .server_prio = + "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+AES-128-CBC", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(AES-128-CBC)-(SHA1)" }, + { .name = "both TLS 1.2: AES-128-CBC (server)", + .cipher = GNUTLS_CIPHER_AES_128_CBC, + .server_prio = + "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+AES-128-CBC:+VERS-TLS1.2", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(AES-128-CBC)-(SHA1)" }, + { .name = "client TLS 1.2: AES-128-CBC (client)", + .cipher = GNUTLS_CIPHER_AES_128_CBC, + .server_prio = "NORMAL:+AES-128-CBC", + .client_prio = + "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(AES-128-CBC)-(SHA1)" }, + { .name = "both TLS 1.2: AES-128-CBC (client)", + .cipher = GNUTLS_CIPHER_AES_128_CBC, + .server_prio = "NORMAL:+AES-128-CBC:+VERS-TLS1.2", + .client_prio = + "NORMAL:-CIPHER-ALL:+AES-128-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(AES-128-CBC)-(SHA1)" }, + { .name = "server TLS 1.2: 3DES-CBC (server)", + .cipher = GNUTLS_CIPHER_3DES_CBC, + .not_on_fips = 1, + .server_prio = + "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+3DES-CBC", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(3DES-CBC)-(SHA1)" }, + { .name = "both TLS 1.2: 3DES-CBC (server)", + .cipher = GNUTLS_CIPHER_3DES_CBC, + .not_on_fips = 1, + .server_prio = + "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+3DES-CBC:+VERS-TLS1.2", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(3DES-CBC)-(SHA1)" }, + { .name = "client TLS 1.2: 3DES-CBC (client)", + .cipher = GNUTLS_CIPHER_3DES_CBC, + .not_on_fips = 1, + .server_prio = "NORMAL:+3DES-CBC", + .client_prio = + "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(3DES-CBC)-(SHA1)" }, + { .name = "both TLS 1.2: 3DES-CBC (client)", + .cipher = GNUTLS_CIPHER_3DES_CBC, + .not_on_fips = 1, + .server_prio = "NORMAL:+3DES-CBC:+VERS-TLS1.2", + .client_prio = + "NORMAL:-CIPHER-ALL:+3DES-CBC:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(3DES-CBC)-(SHA1)" }, + { .name = "server TLS 1.2: ARCFOUR-128 (server)", + .cipher = GNUTLS_CIPHER_ARCFOUR_128, + .not_on_fips = 1, + .server_prio = + "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+ARCFOUR-128", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(ARCFOUR-128)-(SHA1)" }, + { .name = "both TLS 1.2: ARCFOUR-128 (server)", + .cipher = GNUTLS_CIPHER_ARCFOUR_128, + .not_on_fips = 1, + .server_prio = + "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE", + .client_prio = "NORMAL:+ARCFOUR-128:+VERS-TLS1.2", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(ARCFOUR-128)-(SHA1)" }, + { .name = "client TLS 1.2: ARCFOUR-128 (client)", + .cipher = GNUTLS_CIPHER_ARCFOUR_128, + .not_on_fips = 1, + .server_prio = "NORMAL:+ARCFOUR-128", + .client_prio = + "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(ARCFOUR-128)-(SHA1)" }, + { .name = "both TLS 1.2: ARCFOUR-128 (client)", + .cipher = GNUTLS_CIPHER_ARCFOUR_128, + .not_on_fips = 1, + .server_prio = "NORMAL:+ARCFOUR-128:+VERS-TLS1.2", + .client_prio = + "NORMAL:-CIPHER-ALL:+ARCFOUR-128:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.2", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(ARCFOUR-128)-(SHA1)" } }; void doit(void) diff --git a/tests/tls12-ffdhe.c b/tests/tls12-ffdhe.c index 08747620af..9a182c017f 100644 --- a/tests/tls12-ffdhe.c +++ b/tests/tls12-ffdhe.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* This program tests the various certificate key exchange methods supported @@ -48,14 +48,13 @@ typedef struct test_case_st { unsigned have_ecc_sign_cert; unsigned have_rsa_decrypt_cert; unsigned not_on_fips; - unsigned group; /* expected */ + unsigned group; /* expected */ const char *client_prio; const char *server_prio; } test_case_st; -static int -serv_psk_func(gnutls_session_t session, const char *username, - gnutls_datum_t * key) +static int serv_psk_func(gnutls_session_t session, const char *username, + gnutls_datum_t *key) { key->data = gnutls_malloc(4); assert(key->data != NULL); @@ -67,7 +66,7 @@ serv_psk_func(gnutls_session_t session, const char *username, return 0; } -static void try(test_case_st * test) +static void try(test_case_st *test) { int sret, cret; gnutls_anon_client_credentials_t c_anon_cred; @@ -114,21 +113,22 @@ static void try(test_case_st * test) } if (test->have_rsa_decrypt_cert) { - assert(gnutls_certificate_set_x509_key_mem - (s_cert_cred, &server_ca3_localhost_rsa_decrypt_cert, - &server_ca3_key, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem( + s_cert_cred, + &server_ca3_localhost_rsa_decrypt_cert, + &server_ca3_key, GNUTLS_X509_FMT_PEM) >= 0); } if (test->have_ecc_sign_cert) { - assert(gnutls_certificate_set_x509_key_mem - (s_cert_cred, &server_ca3_localhost_ecc_cert, - &server_ca3_ecc_key, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem( + s_cert_cred, &server_ca3_localhost_ecc_cert, + &server_ca3_ecc_key, GNUTLS_X509_FMT_PEM) >= 0); } if (test->have_rsa_sign_cert) { - assert(gnutls_certificate_set_x509_key_mem - (s_cert_cred, &server_ca3_localhost_rsa_sign_cert, - &server_ca3_key, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem( + s_cert_cred, &server_ca3_localhost_rsa_sign_cert, + &server_ca3_key, GNUTLS_X509_FMT_PEM) >= 0); } /* client does everything */ @@ -136,8 +136,8 @@ static void try(test_case_st * test) gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, c_cert_cred); gnutls_credentials_set(client, GNUTLS_CRD_PSK, c_psk_cred); - assert(gnutls_psk_set_client_credentials - (c_psk_cred, "psk", &pskkey, GNUTLS_PSK_KEY_HEX) >= 0); + assert(gnutls_psk_set_client_credentials(c_psk_cred, "psk", &pskkey, + GNUTLS_PSK_KEY_HEX) >= 0); gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); @@ -160,21 +160,21 @@ static void try(test_case_st * test) } if (test->group) { - if (test->group == GNUTLS_GROUP_FFDHE2048 - || test->group == GNUTLS_GROUP_FFDHE3072 - || test->group == GNUTLS_GROUP_FFDHE4096 - || test->group == GNUTLS_GROUP_FFDHE6144 - || test->group == GNUTLS_GROUP_FFDHE8192) { - if (! - (gnutls_session_get_flags(client) & - GNUTLS_SFLAGS_RFC7919)) { - fail("%s: gnutls_session_get_flags(client) reports that no RFC7919 negotiation was performed!\n", test->name); + if (test->group == GNUTLS_GROUP_FFDHE2048 || + test->group == GNUTLS_GROUP_FFDHE3072 || + test->group == GNUTLS_GROUP_FFDHE4096 || + test->group == GNUTLS_GROUP_FFDHE6144 || + test->group == GNUTLS_GROUP_FFDHE8192) { + if (!(gnutls_session_get_flags(client) & + GNUTLS_SFLAGS_RFC7919)) { + fail("%s: gnutls_session_get_flags(client) reports that no RFC7919 negotiation was performed!\n", + test->name); } - if (! - (gnutls_session_get_flags(server) & - GNUTLS_SFLAGS_RFC7919)) { - fail("%s: gnutls_session_get_flags(server) reports that no RFC7919 negotiation was performed!\n", test->name); + if (!(gnutls_session_get_flags(server) & + GNUTLS_SFLAGS_RFC7919)) { + fail("%s: gnutls_session_get_flags(server) reports that no RFC7919 negotiation was performed!\n", + test->name); } } } @@ -191,226 +191,204 @@ static void try(test_case_st * test) } test_case_st tests[] = { - { - .name = "TLS 1.2 ANON-DH (defaults)", - .client_ret = 0, - .server_ret = 0, - .have_anon_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 ANON-DH (FFDHE2048)", - .group = GNUTLS_GROUP_FFDHE2048, - .client_ret = 0, - .server_ret = 0, - .have_anon_cred = 1, - .server_prio = - "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE2048", - .client_prio = - "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE2048"}, - { - .name = "TLS 1.2 ANON-DH (FFDHE3072)", - .group = GNUTLS_GROUP_FFDHE3072, - .client_ret = 0, - .server_ret = 0, - .have_anon_cred = 1, - .server_prio = - "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE3072", - .client_prio = - "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE3072"}, - { - .name = "TLS 1.2 ANON-DH (FFDHE4096)", - .group = GNUTLS_GROUP_FFDHE4096, - .client_ret = 0, - .server_ret = 0, - .have_anon_cred = 1, - .server_prio = - "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE4096", - .client_prio = - "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE4096"}, - { - .name = "TLS 1.2 ANON-DH (FFDHE6144)", - .group = GNUTLS_GROUP_FFDHE6144, - .client_ret = 0, - .server_ret = 0, - .have_anon_cred = 1, - .server_prio = - "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE6144", - .client_prio = - "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE6144"}, - { - .name = "TLS 1.2 ANON-DH (FFDHE8192)", - .group = GNUTLS_GROUP_FFDHE8192, - .client_ret = 0, - .server_ret = 0, - .have_anon_cred = 1, - .server_prio = - "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE8192", - .client_prio = - "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE8192"}, - { - .name = "TLS 1.2 DHE-PSK (defaults)", - .client_ret = 0, - .server_ret = 0, - .have_psk_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 DHE-PSK (FFDHE2048)", - .client_ret = 0, - .server_ret = 0, - .group = GNUTLS_GROUP_FFDHE2048, - .have_psk_cred = 1, - .server_prio = - "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE2048", - .client_prio = - "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE2048"}, - { - .name = "TLS 1.2 DHE-PSK (FFDHE3072)", - .group = GNUTLS_GROUP_FFDHE3072, - .client_ret = 0, - .server_ret = 0, - .have_psk_cred = 1, - .server_prio = - "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE3072", - .client_prio = - "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE3072"}, - { - .name = "TLS 1.2 DHE-PSK (FFDHE4096)", - .group = GNUTLS_GROUP_FFDHE4096, - .client_ret = 0, - .server_ret = 0, - .have_psk_cred = 1, - .server_prio = - "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE4096", - .client_prio = - "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE4096"}, - { - .name = "TLS 1.2 DHE-PSK (FFDHE6144)", - .client_ret = 0, - .server_ret = 0, - .group = GNUTLS_GROUP_FFDHE6144, - .have_psk_cred = 1, - .server_prio = - "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE6144", - .client_prio = - "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE6144"}, - { - .name = "TLS 1.2 DHE-PSK (FFDHE8192)", - .group = GNUTLS_GROUP_FFDHE8192, - .client_ret = 0, - .server_ret = 0, - .have_psk_cred = 1, - .server_prio = - "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE8192", - .client_prio = - "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE8192"}, - { - .name = "TLS 1.2 DHE-RSA (defaults)", - .client_ret = 0, - .server_ret = 0, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 DHE-RSA (FFDHE2048)", - .group = GNUTLS_GROUP_FFDHE2048, - .client_ret = 0, - .server_ret = 0, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .server_prio = - "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE2048", - .client_prio = - "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE2048"}, - { - .name = "TLS 1.2 DHE-RSA (FFDHE3072)", - .group = GNUTLS_GROUP_FFDHE3072, - .client_ret = 0, - .server_ret = 0, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .server_prio = - "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE3072", - .client_prio = - "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE3072"}, - { - .name = "TLS 1.2 DHE-RSA (FFDHE4096)", - .group = GNUTLS_GROUP_FFDHE4096, - .client_ret = 0, - .server_ret = 0, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .server_prio = - "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE4096", - .client_prio = - "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE4096"}, - { - .name = "TLS 1.2 DHE-RSA (FFDHE6144)", - .group = GNUTLS_GROUP_FFDHE6144, - .client_ret = 0, - .server_ret = 0, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .server_prio = - "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE6144", - .client_prio = - "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE6144"}, - { - .name = "TLS 1.2 DHE-RSA (FFDHE8192)", - .group = GNUTLS_GROUP_FFDHE8192, - .client_ret = 0, - .server_ret = 0, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .server_prio = - "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE8192", - .client_prio = - "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE8192"}, - { - .name = "TLS 1.2 DHE-RSA (incompatible options)", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .server_prio = - "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE8192", - .client_prio = - "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE3072"}, - { - .name = "TLS 1.2 DHE-RSA (complex neg)", - .group = GNUTLS_GROUP_FFDHE3072, - .client_ret = 0, - .server_ret = 0, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .server_prio = - "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE8192:+GROUP-FFDHE2048:+GROUP-FFDHE3072", - .client_prio = - "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE3072"}, - { - .name = "TLS 1.2 DHE-RSA (negotiation over ECDHE)", - .group = GNUTLS_GROUP_FFDHE3072, - .client_ret = 0, - .server_ret = 0, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .server_prio = - "NORMAL:-KX-ALL:+DHE-RSA:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-FFDHE8192:+GROUP-FFDHE2048:+GROUP-FFDHE3072", - .client_prio = - "NORMAL:-KX-ALL:+DHE-RSA:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-FFDHE3072"}, - { - .name = "TLS 1.2 DHE-RSA (negotiation over ECDHE - prio on ECDHE)", - .group = GNUTLS_GROUP_SECP256R1, - .client_ret = 0, - .server_ret = 0, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .server_prio = - "NORMAL:-KX-ALL:+ECDHE-RSA:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE8192:+GROUP-FFDHE2048:+GROUP-FFDHE3072:+GROUP-SECP256R1", - .client_prio = - "NORMAL:-KX-ALL:+ECDHE-RSA:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE3072:+GROUP-SECP256R1"} + { .name = "TLS 1.2 ANON-DH (defaults)", + .client_ret = 0, + .server_ret = 0, + .have_anon_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 ANON-DH (FFDHE2048)", + .group = GNUTLS_GROUP_FFDHE2048, + .client_ret = 0, + .server_ret = 0, + .have_anon_cred = 1, + .server_prio = + "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE2048", + .client_prio = + "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE2048" }, + { .name = "TLS 1.2 ANON-DH (FFDHE3072)", + .group = GNUTLS_GROUP_FFDHE3072, + .client_ret = 0, + .server_ret = 0, + .have_anon_cred = 1, + .server_prio = + "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE3072", + .client_prio = + "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE3072" }, + { .name = "TLS 1.2 ANON-DH (FFDHE4096)", + .group = GNUTLS_GROUP_FFDHE4096, + .client_ret = 0, + .server_ret = 0, + .have_anon_cred = 1, + .server_prio = + "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE4096", + .client_prio = + "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE4096" }, + { .name = "TLS 1.2 ANON-DH (FFDHE6144)", + .group = GNUTLS_GROUP_FFDHE6144, + .client_ret = 0, + .server_ret = 0, + .have_anon_cred = 1, + .server_prio = + "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE6144", + .client_prio = + "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE6144" }, + { .name = "TLS 1.2 ANON-DH (FFDHE8192)", + .group = GNUTLS_GROUP_FFDHE8192, + .client_ret = 0, + .server_ret = 0, + .have_anon_cred = 1, + .server_prio = + "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE8192", + .client_prio = + "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE8192" }, + { .name = "TLS 1.2 DHE-PSK (defaults)", + .client_ret = 0, + .server_ret = 0, + .have_psk_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 DHE-PSK (FFDHE2048)", + .client_ret = 0, + .server_ret = 0, + .group = GNUTLS_GROUP_FFDHE2048, + .have_psk_cred = 1, + .server_prio = + "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE2048", + .client_prio = + "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE2048" }, + { .name = "TLS 1.2 DHE-PSK (FFDHE3072)", + .group = GNUTLS_GROUP_FFDHE3072, + .client_ret = 0, + .server_ret = 0, + .have_psk_cred = 1, + .server_prio = + "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE3072", + .client_prio = + "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE3072" }, + { .name = "TLS 1.2 DHE-PSK (FFDHE4096)", + .group = GNUTLS_GROUP_FFDHE4096, + .client_ret = 0, + .server_ret = 0, + .have_psk_cred = 1, + .server_prio = + "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE4096", + .client_prio = + "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE4096" }, + { .name = "TLS 1.2 DHE-PSK (FFDHE6144)", + .client_ret = 0, + .server_ret = 0, + .group = GNUTLS_GROUP_FFDHE6144, + .have_psk_cred = 1, + .server_prio = + "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE6144", + .client_prio = + "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE6144" }, + { .name = "TLS 1.2 DHE-PSK (FFDHE8192)", + .group = GNUTLS_GROUP_FFDHE8192, + .client_ret = 0, + .server_ret = 0, + .have_psk_cred = 1, + .server_prio = + "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE8192", + .client_prio = + "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE8192" }, + { .name = "TLS 1.2 DHE-RSA (defaults)", + .client_ret = 0, + .server_ret = 0, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 DHE-RSA (FFDHE2048)", + .group = GNUTLS_GROUP_FFDHE2048, + .client_ret = 0, + .server_ret = 0, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .server_prio = + "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE2048", + .client_prio = + "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE2048" }, + { .name = "TLS 1.2 DHE-RSA (FFDHE3072)", + .group = GNUTLS_GROUP_FFDHE3072, + .client_ret = 0, + .server_ret = 0, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .server_prio = + "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE3072", + .client_prio = + "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE3072" }, + { .name = "TLS 1.2 DHE-RSA (FFDHE4096)", + .group = GNUTLS_GROUP_FFDHE4096, + .client_ret = 0, + .server_ret = 0, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .server_prio = + "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE4096", + .client_prio = + "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE4096" }, + { .name = "TLS 1.2 DHE-RSA (FFDHE6144)", + .group = GNUTLS_GROUP_FFDHE6144, + .client_ret = 0, + .server_ret = 0, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .server_prio = + "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE6144", + .client_prio = + "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE6144" }, + { .name = "TLS 1.2 DHE-RSA (FFDHE8192)", + .group = GNUTLS_GROUP_FFDHE8192, + .client_ret = 0, + .server_ret = 0, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .server_prio = + "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE8192", + .client_prio = + "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE8192" }, + { .name = "TLS 1.2 DHE-RSA (incompatible options)", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .server_prio = + "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE8192", + .client_prio = + "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE3072" }, + { .name = "TLS 1.2 DHE-RSA (complex neg)", + .group = GNUTLS_GROUP_FFDHE3072, + .client_ret = 0, + .server_ret = 0, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .server_prio = + "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE8192:+GROUP-FFDHE2048:+GROUP-FFDHE3072", + .client_prio = + "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE3072" }, + { .name = "TLS 1.2 DHE-RSA (negotiation over ECDHE)", + .group = GNUTLS_GROUP_FFDHE3072, + .client_ret = 0, + .server_ret = 0, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .server_prio = + "NORMAL:-KX-ALL:+DHE-RSA:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-FFDHE8192:+GROUP-FFDHE2048:+GROUP-FFDHE3072", + .client_prio = + "NORMAL:-KX-ALL:+DHE-RSA:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-FFDHE3072" }, + { .name = "TLS 1.2 DHE-RSA (negotiation over ECDHE - prio on ECDHE)", + .group = GNUTLS_GROUP_SECP256R1, + .client_ret = 0, + .server_ret = 0, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .server_prio = + "NORMAL:-KX-ALL:+ECDHE-RSA:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE8192:+GROUP-FFDHE2048:+GROUP-FFDHE3072:+GROUP-SECP256R1", + .client_prio = + "NORMAL:-KX-ALL:+ECDHE-RSA:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-FFDHE3072:+GROUP-SECP256R1" } }; void doit(void) diff --git a/tests/tls12-invalid-key-exchanges.c b/tests/tls12-invalid-key-exchanges.c index a21ed76280..f49604a54d 100644 --- a/tests/tls12-invalid-key-exchanges.c +++ b/tests/tls12-invalid-key-exchanges.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* This program tests the various certificate key exchange methods supported @@ -43,16 +43,13 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -static -void try_with_key(const char *name, - const char *server_prio, - const char *client_prio, - const gnutls_datum_t * serv_cert, - const gnutls_datum_t * serv_key, - const gnutls_datum_t * client_cert, - const gnutls_datum_t * client_key, - unsigned cert_flags, - int exp_error_server, int exp_error_client) +static void try_with_key(const char *name, const char *server_prio, + const char *client_prio, + const gnutls_datum_t *serv_cert, + const gnutls_datum_t *serv_key, + const gnutls_datum_t *client_cert, + const gnutls_datum_t *client_key, unsigned cert_flags, + int exp_error_server, int exp_error_client) { int ret; /* Server stuff. */ @@ -74,9 +71,8 @@ void try_with_key(const char *name, gnutls_anon_allocate_server_credentials(&s_anoncred); gnutls_certificate_allocate_credentials(&serverx509cred); - ret = gnutls_certificate_set_x509_key_mem(serverx509cred, - serv_cert, serv_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + serverx509cred, serv_cert, serv_key, GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("Could not set key/cert: %s\n", gnutls_strerror(ret)); } @@ -108,8 +104,8 @@ void try_with_key(const char *name, exit(1); if (cert_flags == USE_CERT) { - gnutls_certificate_set_x509_key_mem(clientx509cred, - client_cert, client_key, + gnutls_certificate_set_x509_key_mem(clientx509cred, client_cert, + client_key, GNUTLS_X509_FMT_PEM); gnutls_certificate_server_set_request(server, GNUTLS_CERT_REQUIRE); @@ -168,17 +164,17 @@ void doit(void) /* check compatibility and handling of SIGN-ECDSA-SECP256R1-SHA256 which * is available under TLS1.3 but not TLS1.2 */ - try_with_key("TLS 1.2 with ecdhe ecdsa with ECDSA-SECP256R1-SHA256", - NULL, - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-ECDSA:-SIGN-ALL:+SIGN-ECDSA-SECP256R1-SHA256:+SIGN-ECDSA-SECP384R1-SHA384:+SIGN-ECDSA-SECP521R1-SHA512:+SIGN-RSA-SHA256", - &server_ca3_localhost_ecc_cert, &server_ca3_ecc_key, NULL, - NULL, 0, GNUTLS_E_NO_CIPHER_SUITES, GNUTLS_E_AGAIN); - - try_with_key("TLS 1.2 with ecdhe ecdsa with ECDSA-SHA256", - NULL, - "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-ECDSA:-SIGN-ALL:+SIGN-ECDSA-SHA256:+SIGN-RSA-SHA256", - &server_ca3_localhost_ecc_cert, &server_ca3_ecc_key, NULL, - NULL, 0, 0, 0); + try_with_key( + "TLS 1.2 with ecdhe ecdsa with ECDSA-SECP256R1-SHA256", NULL, + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-ECDSA:-SIGN-ALL:+SIGN-ECDSA-SECP256R1-SHA256:+SIGN-ECDSA-SECP384R1-SHA384:+SIGN-ECDSA-SECP521R1-SHA512:+SIGN-RSA-SHA256", + &server_ca3_localhost_ecc_cert, &server_ca3_ecc_key, NULL, NULL, + 0, GNUTLS_E_NO_CIPHER_SUITES, GNUTLS_E_AGAIN); + + try_with_key( + "TLS 1.2 with ecdhe ecdsa with ECDSA-SHA256", NULL, + "NORMAL:-VERS-ALL:+VERS-TLS1.2:-KX-ALL:+ECDHE-ECDSA:-SIGN-ALL:+SIGN-ECDSA-SHA256:+SIGN-RSA-SHA256", + &server_ca3_localhost_ecc_cert, &server_ca3_ecc_key, NULL, NULL, + 0, 0, 0); gnutls_global_deinit(); } diff --git a/tests/tls12-max-record.c b/tests/tls12-max-record.c index 1d2a0e2ca9..cdf700c387 100644 --- a/tests/tls12-max-record.c +++ b/tests/tls12-max-record.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,7 +30,9 @@ #include #include "utils.h" -#define SERVER_PUSH_ADD if (len > 512 + 5+32) fail("max record set to 512, len: %d\n", (int)len); +#define SERVER_PUSH_ADD \ + if (len > 512 + 5 + 32) \ + fail("max record set to 512, len: %d\n", (int)len); #include "eagain-common.h" #include "cert-common.h" @@ -67,15 +69,14 @@ void doit(void) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server2_cert, &server2_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server2_cert, + &server2_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); - gnutls_priority_set_direct(server, - "NORMAL:-VERS-ALL:+VERS-TLS1.2", NULL); + gnutls_priority_set_direct(server, "NORMAL:-VERS-ALL:+VERS-TLS1.2", + NULL); gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); gnutls_transport_set_pull_timeout_function(server, @@ -88,9 +89,8 @@ void doit(void) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca2_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca2_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -103,9 +103,8 @@ void doit(void) if (ret < 0) exit(1); - ret = - gnutls_priority_set_direct(client, "NORMAL:-VERS-ALL:+VERS-TLS1.2", - NULL); + ret = gnutls_priority_set_direct(client, + "NORMAL:-VERS-ALL:+VERS-TLS1.2", NULL); if (ret < 0) exit(1); diff --git a/tests/tls12-prf.c b/tests/tls12-prf.c index fd80cf64d3..7ebf19491c 100644 --- a/tests/tls12-prf.c +++ b/tests/tls12-prf.c @@ -31,43 +31,42 @@ #include #include "hex.h" -int -_gnutls_prf_raw(gnutls_mac_algorithm_t mac, - size_t master_size, const void *master, - size_t label_size, const char *label, - size_t seed_size, const uint8_t * seed, size_t outsize, - char *out); +int _gnutls_prf_raw(gnutls_mac_algorithm_t mac, size_t master_size, + const void *master, size_t label_size, const char *label, + size_t seed_size, const uint8_t *seed, size_t outsize, + char *out); -#define MATCH_FUNC(fname, mac, dsecret, dseed, dlabel, doutput) \ -static void fname(void **glob_state) \ -{ \ - char tmp[512]; \ - gnutls_datum_t secret = dsecret; \ - gnutls_datum_t seed = dseed; \ - gnutls_datum_t label = dlabel; \ - gnutls_datum_t output = doutput; \ - int _rval; \ - _rval = _gnutls_prf_raw(mac, secret.size, secret.data, \ - label.size, (char*)label.data, seed.size, seed.data, output.size, tmp); \ - assert_int_equal(_rval, 0); \ - assert_int_equal(memcmp(tmp, output.data, output.size), 0); \ - gnutls_free(secret.data); \ - gnutls_free(label.data); \ - gnutls_free(seed.data); \ - gnutls_free(output.data); \ -} +#define MATCH_FUNC(fname, mac, dsecret, dseed, dlabel, doutput) \ + static void fname(void **glob_state) \ + { \ + char tmp[512]; \ + gnutls_datum_t secret = dsecret; \ + gnutls_datum_t seed = dseed; \ + gnutls_datum_t label = dlabel; \ + gnutls_datum_t output = doutput; \ + int _rval; \ + _rval = _gnutls_prf_raw(mac, secret.size, secret.data, \ + label.size, (char *)label.data, \ + seed.size, seed.data, output.size, \ + tmp); \ + assert_int_equal(_rval, 0); \ + assert_int_equal(memcmp(tmp, output.data, output.size), 0); \ + gnutls_free(secret.data); \ + gnutls_free(label.data); \ + gnutls_free(seed.data); \ + gnutls_free(output.data); \ + } MATCH_FUNC(sha256_test1, GNUTLS_MAC_SHA256, SHEX("0450b0ea9ecd3602ee0d76c5c3c86f4a"), - SHEX("207acc0254b867f5b925b45a33601d8b"), - SDATA("test label"), SHEX("ae679e0e714f5975763768b166979e1d")); + SHEX("207acc0254b867f5b925b45a33601d8b"), SDATA("test label"), + SHEX("ae679e0e714f5975763768b166979e1d")); -MATCH_FUNC(sha256_test2, GNUTLS_MAC_SHA256, - SHEX("34204a9df0be6eb4e925a8027cf6c602"), - SHEX("98b2c40bcd664c83bb920c18201a6395"), - SDATA("test label"), - SHEX - ("afa9312453c22fa83d2b511b372d73a402a2a62873239a51fade45082faf3fd2bb7ffb3e9bf36e28b3141aaba484005332a9f9e388a4d329f1587a4b317da07708ea1ba95a53f8786724bd83ce4b03af")); +MATCH_FUNC( + sha256_test2, GNUTLS_MAC_SHA256, + SHEX("34204a9df0be6eb4e925a8027cf6c602"), + SHEX("98b2c40bcd664c83bb920c18201a6395"), SDATA("test label"), + SHEX("afa9312453c22fa83d2b511b372d73a402a2a62873239a51fade45082faf3fd2bb7ffb3e9bf36e28b3141aaba484005332a9f9e388a4d329f1587a4b317da07708ea1ba95a53f8786724bd83ce4b03af")); MATCH_FUNC(sha256_test3, GNUTLS_MAC_SHA256, SHEX("a3691aa1f6814b80592bf1cf2acf1697"), @@ -75,41 +74,35 @@ MATCH_FUNC(sha256_test3, GNUTLS_MAC_SHA256, SDATA("test label"), SHEX("6ad0984fa06f78fe161bd46d7c261de43340d728dddc3d0ff0dd7e0d")); -MATCH_FUNC(sha256_test4, GNUTLS_MAC_SHA256, - SHEX - ("210ec937069707e5465bc46bf779e104108b18fdb793be7b218dbf145c8641f3"), - SHEX("1e351a0baf35c79945924394b881cfe31dae8f1c1ed54d3b"), - SDATA("test label"), - SHEX - ("7653fa809cde3b553c4a17e2cdbcc918f36527f22219a7d7f95d97243ff2d5dee8265ef0af03")); +MATCH_FUNC( + sha256_test4, GNUTLS_MAC_SHA256, + SHEX("210ec937069707e5465bc46bf779e104108b18fdb793be7b218dbf145c8641f3"), + SHEX("1e351a0baf35c79945924394b881cfe31dae8f1c1ed54d3b"), + SDATA("test label"), + SHEX("7653fa809cde3b553c4a17e2cdbcc918f36527f22219a7d7f95d97243ff2d5dee8265ef0af03")); /* https://www.ietf.org/mail-archive/web/tls/current/msg03416.html */ -MATCH_FUNC(sha384_test1, GNUTLS_MAC_SHA384, - SHEX("b80b733d6ceefcdc71566ea48e5567df"), - SHEX("cd665cf6a8447dd6ff8b27555edb7465"), - SDATA("test label"), - SHEX - ("7b0c18e9ced410ed1804f2cfa34a336a1c14dffb4900bb5fd7942107e81c83cde9ca0faa60be9fe34f82b1233c9146a0e534cb400fed2700884f9dc236f80edd8bfa961144c9e8d792eca722a7b32fc3d416d473ebc2c5fd4abfdad05d9184259b5bf8cd4d90fa0d31e2dec479e4f1a26066f2eea9a69236a3e52655c9e9aee691c8f3a26854308d5eaa3be85e0990703d73e56f")); +MATCH_FUNC( + sha384_test1, GNUTLS_MAC_SHA384, + SHEX("b80b733d6ceefcdc71566ea48e5567df"), + SHEX("cd665cf6a8447dd6ff8b27555edb7465"), SDATA("test label"), + SHEX("7b0c18e9ced410ed1804f2cfa34a336a1c14dffb4900bb5fd7942107e81c83cde9ca0faa60be9fe34f82b1233c9146a0e534cb400fed2700884f9dc236f80edd8bfa961144c9e8d792eca722a7b32fc3d416d473ebc2c5fd4abfdad05d9184259b5bf8cd4d90fa0d31e2dec479e4f1a26066f2eea9a69236a3e52655c9e9aee691c8f3a26854308d5eaa3be85e0990703d73e56f")); #if ENABLE_GOST /*https://tools.ietf.org/html/rfc7836 */ -MATCH_FUNC(streebog256_test1, GNUTLS_MAC_STREEBOG_256, - SHEX - ("000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f"), - SHEX - ("18471d622dc655c4d2d2269691ca4a560b50aba663553af241f1ada882c9f29a"), - SHEX("1122334455"), - SHEX - ("ff09664a44745865944f839ebb48965f1544ff1cc8e8f16f247ee5f8a9ebe97fc4e3c7900e46cad3db6a01643063040ec67fc0fd5cd9f90465235237bdff2c02")); +MATCH_FUNC( + streebog256_test1, GNUTLS_MAC_STREEBOG_256, + SHEX("000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f"), + SHEX("18471d622dc655c4d2d2269691ca4a560b50aba663553af241f1ada882c9f29a"), + SHEX("1122334455"), + SHEX("ff09664a44745865944f839ebb48965f1544ff1cc8e8f16f247ee5f8a9ebe97fc4e3c7900e46cad3db6a01643063040ec67fc0fd5cd9f90465235237bdff2c02")); -MATCH_FUNC(streebog512_test1, GNUTLS_MAC_STREEBOG_512, - SHEX - ("000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f"), - SHEX - ("18471d622dc655c4d2d2269691ca4a560b50aba663553af241f1ada882c9f29a"), - SHEX("1122334455"), - SHEX - ("f35187a3dc9655113a0e84d06fd7526c5fc1fbdec1a0e4673dd6d79d0b920e65ad1bc47bb083b3851cb7cd8e7e6a911a626cf02b29e9e4a58ed766a449a7296de61a7a26c4d1caeecfd80cca65c71f0f88c1f822c0e8c0ad949d03fee139579f72ba0c3d32c5f954f1cccd54081fc7440278cba1fe7b7a17a986fdff5bd15d1f")); +MATCH_FUNC( + streebog512_test1, GNUTLS_MAC_STREEBOG_512, + SHEX("000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f"), + SHEX("18471d622dc655c4d2d2269691ca4a560b50aba663553af241f1ada882c9f29a"), + SHEX("1122334455"), + SHEX("f35187a3dc9655113a0e84d06fd7526c5fc1fbdec1a0e4673dd6d79d0b920e65ad1bc47bb083b3851cb7cd8e7e6a911a626cf02b29e9e4a58ed766a449a7296de61a7a26c4d1caeecfd80cca65c71f0f88c1f822c0e8c0ad949d03fee139579f72ba0c3d32c5f954f1cccd54081fc7440278cba1fe7b7a17a986fdff5bd15d1f")); #endif int main(void) diff --git a/tests/tls12-rehandshake-cert-2.c b/tests/tls12-rehandshake-cert-2.c index 9dcb270485..58aedd547f 100644 --- a/tests/tls12-rehandshake-cert-2.c +++ b/tests/tls12-rehandshake-cert-2.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,19 +35,19 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" -# include "cert-common.h" +#include "utils.h" +#include "cert-common.h" static void terminate(void); @@ -65,7 +65,7 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd, unsigned test) { @@ -93,9 +93,9 @@ static void client(int fd, unsigned test) gnutls_handshake_set_timeout(session, get_timeout()); /* Use default priorities */ - gnutls_priority_set_direct(session, - "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1:+VERS-TLS1.2", - NULL); + gnutls_priority_set_direct( + session, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1:+VERS-TLS1.2", + NULL); /* put the anonymous credentials to the current session */ @@ -108,8 +108,7 @@ static void client(int fd, unsigned test) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -122,8 +121,8 @@ static void client(int fd, unsigned test) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); if (debug) success("client: test %d\n", test); @@ -138,21 +137,19 @@ static void client(int fd, unsigned test) do { do { - ret = - gnutls_record_recv(session, buffer, - MAX_BUF); - } while (ret == GNUTLS_E_AGAIN - || ret == GNUTLS_E_INTERRUPTED); + ret = gnutls_record_recv(session, buffer, + MAX_BUF); + } while (ret == GNUTLS_E_AGAIN || + ret == GNUTLS_E_INTERRUPTED); } while (ret > 0); } else { do { do { - ret = - gnutls_record_recv(session, buffer, - MAX_BUF); - } while (ret == GNUTLS_E_AGAIN - || ret == GNUTLS_E_INTERRUPTED); + ret = gnutls_record_recv(session, buffer, + MAX_BUF); + } while (ret == GNUTLS_E_AGAIN || + ret == GNUTLS_E_INTERRUPTED); } while (ret > 0); if (ret != GNUTLS_E_REHANDSHAKE) { @@ -162,8 +159,8 @@ static void client(int fd, unsigned test) } do { - ret = - gnutls_record_send(session, buffer, sizeof(buffer)); + ret = gnutls_record_send(session, buffer, + sizeof(buffer)); } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) { @@ -173,8 +170,8 @@ static void client(int fd, unsigned test) } do { - ret = - gnutls_record_send(session, buffer, sizeof(buffer)); + ret = gnutls_record_send(session, buffer, + sizeof(buffer)); } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) { @@ -182,7 +179,6 @@ static void client(int fd, unsigned test) (int)sizeof(buffer), gnutls_strerror(ret)); exit(1); } - } gnutls_bye(session, GNUTLS_SHUT_WR); @@ -237,9 +233,9 @@ static void server(int fd, unsigned test) /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1:+VERS-TLS1.2", - NULL); + gnutls_priority_set_direct( + session, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1:+VERS-TLS1.2", + NULL); gnutls_credentials_set(session, GNUTLS_CRD_ANON, anoncred); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -248,8 +244,7 @@ static void server(int fd, unsigned test) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -262,31 +257,30 @@ static void server(int fd, unsigned test) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); if (debug) success("server: test %d\n", test); if (test != 0) { - do { do { - ret = - gnutls_record_recv(session, buffer, - MAX_BUF); - } while (ret == GNUTLS_E_AGAIN - || ret == GNUTLS_E_INTERRUPTED); + ret = gnutls_record_recv(session, buffer, + MAX_BUF); + } while (ret == GNUTLS_E_AGAIN || + ret == GNUTLS_E_INTERRUPTED); } while (ret > 0); if (ret != GNUTLS_E_REHANDSHAKE) { - fail("server: Error receiving client handshake request: %s\n", gnutls_strerror(ret)); + fail("server: Error receiving client handshake request: %s\n", + gnutls_strerror(ret)); terminate(); } do { - ret = - gnutls_record_send(session, buffer, sizeof(buffer)); + ret = gnutls_record_send(session, buffer, + sizeof(buffer)); } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) { @@ -312,7 +306,8 @@ static void server(int fd, unsigned test) ret = gnutls_handshake(session); if (ret != GNUTLS_E_GOT_APPLICATION_DATA) { - fail("server: didn't receive GNUTLS_E_GOT_APPLICATION_DATA: %s\n", gnutls_strerror(ret)); + fail("server: didn't receive GNUTLS_E_GOT_APPLICATION_DATA: %s\n", + gnutls_strerror(ret)); terminate(); } @@ -322,11 +317,10 @@ static void server(int fd, unsigned test) do { do { - ret = - gnutls_record_recv(session, buffer, - MAX_BUF); - } while (ret == GNUTLS_E_AGAIN - || ret == GNUTLS_E_INTERRUPTED); + ret = gnutls_record_recv(session, buffer, + MAX_BUF); + } while (ret == GNUTLS_E_AGAIN || + ret == GNUTLS_E_INTERRUPTED); } while (ret > 0); if (debug) @@ -338,7 +332,6 @@ static void server(int fd, unsigned test) gnutls_strerror(ret)); terminate(); } - } /* do not wait for the peer to close the connection. @@ -403,4 +396,4 @@ void doit(void) start(1); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls12-rehandshake-cert-3.c b/tests/tls12-rehandshake-cert-3.c index 1a217107ff..e90e4d0cdc 100644 --- a/tests/tls12-rehandshake-cert-3.c +++ b/tests/tls12-rehandshake-cert-3.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -36,19 +36,19 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" -# include "cert-common.h" +#include "utils.h" +#include "cert-common.h" static void terminate(void); @@ -67,8 +67,8 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define MAX_BUF 1024 -# define MAX_REHANDSHAKES 16 +#define MAX_BUF 1024 +#define MAX_REHANDSHAKES 16 static void client(int fd) { @@ -87,8 +87,8 @@ static void client(int fd) } gnutls_certificate_allocate_credentials(&x509_cred); - gnutls_certificate_set_x509_key_mem(x509_cred, &cli_cert, - &cli_key, GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(x509_cred, &cli_cert, &cli_key, + GNUTLS_X509_FMT_PEM); /* Initialize TLS session */ @@ -96,9 +96,9 @@ static void client(int fd) gnutls_handshake_set_timeout(session, get_timeout()); /* Use default priorities */ - gnutls_priority_set_direct(session, - "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.2:+VERS-TLS1.1", - NULL); + gnutls_priority_set_direct( + session, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.2:+VERS-TLS1.1", + NULL); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -108,8 +108,7 @@ static void client(int fd) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -122,8 +121,8 @@ static void client(int fd) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); for (i = 0; i < MAX_REHANDSHAKES; i++) { do { @@ -134,7 +133,6 @@ static void client(int fd) gnutls_strerror(ret)); exit(1); } - } do { @@ -197,9 +195,9 @@ static void server(int fd) /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.2:+VERS-TLS1.1", - NULL); + gnutls_priority_set_direct( + session, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.2:+VERS-TLS1.1", + NULL); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); gnutls_certificate_server_set_request(session, GNUTLS_CERT_REQUIRE); @@ -208,8 +206,7 @@ static void server(int fd) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -222,8 +219,8 @@ static void server(int fd) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); gnutls_certificate_server_set_request(session, GNUTLS_CERT_IGNORE); @@ -232,18 +229,18 @@ static void server(int fd) do { do { - ret = - gnutls_record_recv(session, buffer, - MAX_BUF); - } while (ret == GNUTLS_E_AGAIN - || ret == GNUTLS_E_INTERRUPTED); + ret = gnutls_record_recv(session, buffer, + MAX_BUF); + } while (ret == GNUTLS_E_AGAIN || + ret == GNUTLS_E_INTERRUPTED); } while (ret > 0); if (ret == 0) break; if (ret != GNUTLS_E_REHANDSHAKE) { - fail("server: Error receiving client handshake request: %s\n", gnutls_strerror(ret)); + fail("server: Error receiving client handshake request: %s\n", + gnutls_strerror(ret)); terminate(); } @@ -330,4 +327,4 @@ void doit(void) start(); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls12-rehandshake-cert-auto.c b/tests/tls12-rehandshake-cert-auto.c index 1d02fa4b18..e706746b67 100644 --- a/tests/tls12-rehandshake-cert-auto.c +++ b/tests/tls12-rehandshake-cert-auto.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,20 +35,20 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "utils.h" -# include "cert-common.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "utils.h" +#include "cert-common.h" /* This program tests server initiated rehandshake when * handled transparently by the client. @@ -64,7 +64,7 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd) { @@ -92,9 +92,9 @@ static void client(int fd) gnutls_handshake_set_timeout(session, get_timeout()); /* Use default priorities */ - gnutls_priority_set_direct(session, - "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1:+VERS-TLS1.2", - NULL); + gnutls_priority_set_direct( + session, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1:+VERS-TLS1.2", + NULL); /* put the anonymous credentials to the current session */ @@ -107,8 +107,7 @@ static void client(int fd) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -121,8 +120,8 @@ static void client(int fd) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); do { ret = gnutls_record_recv(session, buffer, MAX_BUF); @@ -174,9 +173,9 @@ static void server(int fd) /* avoid calling all the priority functions, since the defaults * are adequate. */ - gnutls_priority_set_direct(session, - "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1:+VERS-TLS1.2", - NULL); + gnutls_priority_set_direct( + session, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1:+VERS-TLS1.2", + NULL); gnutls_credentials_set(session, GNUTLS_CRD_ANON, anoncred); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -185,8 +184,7 @@ static void server(int fd) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -198,8 +196,8 @@ static void server(int fd) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); if (debug) success("server: sending rehandshake request\n"); @@ -208,8 +206,8 @@ static void server(int fd) ret = gnutls_rehandshake(session); } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) { - fail("Error sending %d byte packet: %s\n", - (int)sizeof(buffer), gnutls_strerror(ret)); + fail("Error sending %d byte packet: %s\n", (int)sizeof(buffer), + gnutls_strerror(ret)); } if (debug) @@ -275,4 +273,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls12-rehandshake-cert.c b/tests/tls12-rehandshake-cert.c index 46610bcbdb..e266a01e77 100644 --- a/tests/tls12-rehandshake-cert.c +++ b/tests/tls12-rehandshake-cert.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -67,9 +67,8 @@ static void test_rehandshake(void **glob_state, unsigned appdata) ret = gnutls_certificate_allocate_credentials(&serverx509cred); assert_return_code(ret, 0); - ret = gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + serverx509cred, &server_cert, &server_key, GNUTLS_X509_FMT_PEM); assert_return_code(ret, 0); ret = gnutls_init(&server, GNUTLS_SERVER); @@ -79,10 +78,8 @@ static void test_rehandshake(void **glob_state, unsigned appdata) serverx509cred); assert_return_code(ret, 0); - ret = - gnutls_priority_set_direct(server, - "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1:+VERS-TLS1.2", - NULL); + ret = gnutls_priority_set_direct( + server, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1:+VERS-TLS1.2", NULL); assert_return_code(ret, 0); gnutls_transport_set_push_function(server, server_push); @@ -100,10 +97,8 @@ static void test_rehandshake(void **glob_state, unsigned appdata) clientx509cred); assert_return_code(ret, 0); - ret = - gnutls_priority_set_direct(client, - "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1:+VERS-TLS1.2", - NULL); + ret = gnutls_priority_set_direct( + client, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1:+VERS-TLS1.2", NULL); assert_return_code(ret, 0); gnutls_transport_set_push_function(client, client_push); diff --git a/tests/tls12-rehandshake-set-prio.c b/tests/tls12-rehandshake-set-prio.c index 26494e72a5..602f86567b 100644 --- a/tests/tls12-rehandshake-set-prio.c +++ b/tests/tls12-rehandshake-set-prio.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -69,8 +69,8 @@ static void test_rehandshake(void) /* Init server */ assert(gnutls_certificate_allocate_credentials(&serverx509cred) >= 0); - assert(gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, + assert(gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM) >= 0); assert(gnutls_init(&server, GNUTLS_SERVER) >= 0); @@ -78,9 +78,9 @@ static void test_rehandshake(void) assert(gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred) >= 0); - assert(gnutls_priority_set_direct - (server, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1:+VERS-TLS1.2", - NULL) >= 0); + assert(gnutls_priority_set_direct( + server, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1:+VERS-TLS1.2", + NULL) >= 0); gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); @@ -94,9 +94,9 @@ static void test_rehandshake(void) assert(gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, clientx509cred) >= 0); - assert(gnutls_priority_set_direct - (client, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1:+VERS-TLS1.2", - NULL) >= 0); + assert(gnutls_priority_set_direct( + client, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1:+VERS-TLS1.2", + NULL) >= 0); gnutls_transport_set_push_function(client, client_push); gnutls_transport_set_pull_function(client, client_pull); @@ -115,8 +115,8 @@ static void test_rehandshake(void) assert(n == GNUTLS_E_REHANDSHAKE); /* includes TLS1.3 */ - assert(gnutls_priority_set_direct - (client, "NORMAL", NULL) >= 0); + assert(gnutls_priority_set_direct(client, "NORMAL", + NULL) >= 0); HANDSHAKE(client, server); } diff --git a/tests/tls12-rehandshake-ticket.c b/tests/tls12-rehandshake-ticket.c index 4df3d9a31e..202272cf37 100644 --- a/tests/tls12-rehandshake-ticket.c +++ b/tests/tls12-rehandshake-ticket.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -62,19 +62,17 @@ static void run(void) /* Init server */ assert(gnutls_certificate_allocate_credentials(&scred) >= 0); - assert(gnutls_certificate_set_x509_key_mem(scred, - &server_ca3_localhost_cert, - &server_ca3_key, - GNUTLS_X509_FMT_PEM) >= 0); - assert(gnutls_certificate_set_x509_trust_mem(scred, - &ca3_cert, + assert(gnutls_certificate_set_x509_key_mem( + scred, &server_ca3_localhost_cert, &server_ca3_key, + GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_trust_mem(scred, &ca3_cert, GNUTLS_X509_FMT_PEM) >= 0); assert(gnutls_init(&server, GNUTLS_SERVER) >= 0); gnutls_certificate_server_set_request(server, GNUTLS_CERT_REQUEST); - assert(gnutls_priority_set_direct(server, - "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1:+VERS-TLS1.2", - NULL) >= 0); + assert(gnutls_priority_set_direct( + server, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1:+VERS-TLS1.2", + NULL) >= 0); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, scred); gnutls_transport_set_push_function(server, server_push); @@ -86,16 +84,16 @@ static void run(void) /* Init client */ assert(gnutls_certificate_allocate_credentials(&ccred) >= 0); - assert(gnutls_certificate_set_x509_key_mem - (ccred, &cli_ca3_cert_chain, &cli_ca3_key, - GNUTLS_X509_FMT_PEM) >= 0); - assert(gnutls_certificate_set_x509_trust_mem - (ccred, &ca3_cert, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem(ccred, &cli_ca3_cert_chain, + &cli_ca3_key, + GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_trust_mem(ccred, &ca3_cert, + GNUTLS_X509_FMT_PEM) >= 0); gnutls_init(&client, GNUTLS_CLIENT); - assert(gnutls_priority_set_direct(client, - "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1:+VERS-TLS1.2", - NULL) >= 0); + assert(gnutls_priority_set_direct( + client, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1:+VERS-TLS1.2", + NULL) >= 0); assert(gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, ccred) >= 0); @@ -110,8 +108,8 @@ static void run(void) switch_side("server"); sret = gnutls_rehandshake(server); if (sret < 0) { - fail("Error sending %d byte packet: %s\n", - (int)sizeof(buffer), gnutls_strerror(sret)); + fail("Error sending %d byte packet: %s\n", (int)sizeof(buffer), + gnutls_strerror(sret)); } else if (debug) success("server: starting rehandshake\n"); @@ -123,8 +121,8 @@ static void run(void) do { do { cret = gnutls_record_recv(client, buffer, MAX_BUF); - } while (cret == GNUTLS_E_AGAIN - || cret == GNUTLS_E_INTERRUPTED); + } while (cret == GNUTLS_E_AGAIN || + cret == GNUTLS_E_INTERRUPTED); } while (cret > 0); if (cret != GNUTLS_E_REHANDSHAKE) { diff --git a/tests/tls12-server-kx-neg.c b/tests/tls12-server-kx-neg.c index f74c56a704..a2853d33d7 100644 --- a/tests/tls12-server-kx-neg.c +++ b/tests/tls12-server-kx-neg.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* This program tests the ciphersuite negotiation for various key exchange @@ -38,496 +38,433 @@ #include "server-kx-neg-common.c" test_case_st tests[] = { - { - .name = "TLS 1.2 ANON-DH without cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 ANON-DH with cred but no DH params", - .client_ret = 0, - .server_ret = 0, - .have_anon_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 ANON-DH with cred and DH params (level)", - .server_ret = 0, - .client_ret = 0, - .have_anon_cred = 1, - .have_anon_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 ANON-DH with cred and DH params (explicit)", - .server_ret = 0, - .client_ret = 0, - .have_anon_cred = 1, - .have_anon_exp_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 DHE-RSA without cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 DHE-RSA with cred but no DH params or cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 DHE-RSA with cred and cert but no DH params", - .client_ret = 0, - .server_ret = 0, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 DHE-RSA with cred and DH params but no cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .have_cert_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = - "TLS 1.2 DHE-RSA with cred and incompatible cert and DH params", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .have_rsa_decrypt_cert = 1, - .have_ecc_sign_cert = 1, - .have_cert_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 DHE-RSA with cred and cert and DH params (level)", - .client_ret = 0, - .server_ret = 0, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .have_cert_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 DHE-RSA with cred and cert and DH params (explicit)", - .client_ret = 0, - .server_ret = 0, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .have_cert_exp_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 DHE-RSA with cred and multiple certs and DH params", - .client_ret = 0, - .server_ret = 0, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .have_ecc_sign_cert = 1, - .have_rsa_decrypt_cert = 1, - .have_cert_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 DHE-PSK without cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 DHE-PSK with cred but no DH params", - .client_ret = 0, - .server_ret = 0, - .have_psk_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 DHE-PSK with cred and DH params (level)", - .client_ret = 0, - .server_ret = 0, - .have_psk_cred = 1, - .have_psk_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 DHE-PSK with cred and DH params (explicit)", - .client_ret = 0, - .server_ret = 0, - .have_psk_cred = 1, - .have_psk_exp_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 ECDHE-RSA without cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 ECDHE-RSA with cred but no common curve or cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .server_prio = - "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2:-CURVE-ALL:+CURVE-SECP256R1", - .client_prio = - "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2:-CURVE-ALL:+CURVE-SECP384R1"}, - { - .name = "TLS 1.2 ECDHE-RSA with cred and cert but no common curve", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .server_prio = - "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2:-CURVE-ALL:+CURVE-SECP256R1", - .client_prio = - "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2:-CURVE-ALL:+CURVE-SECP384R1"}, - { - .name = "TLS 1.2 ECDHE-RSA with cred and common curve but no cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = - "TLS 1.2 ECDHE-RSA with cred and incompatible cert and common curve", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .have_rsa_decrypt_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 ECDHE-RSA with cred and cert and common curve", - .server_ret = 0, - .client_ret = 0, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = - "TLS 1.2 ECDHE-RSA with cred and multiple certs and common curve", - .server_ret = 0, - .client_ret = 0, - .have_cert_cred = 1, - .have_rsa_decrypt_cert = 1, - .have_rsa_sign_cert = 1, - .have_ecc_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2"}, + { .name = "TLS 1.2 ANON-DH without cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 ANON-DH with cred but no DH params", + .client_ret = 0, + .server_ret = 0, + .have_anon_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 ANON-DH with cred and DH params (level)", + .server_ret = 0, + .client_ret = 0, + .have_anon_cred = 1, + .have_anon_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 ANON-DH with cred and DH params (explicit)", + .server_ret = 0, + .client_ret = 0, + .have_anon_cred = 1, + .have_anon_exp_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+ANON-DH:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 DHE-RSA without cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 DHE-RSA with cred but no DH params or cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 DHE-RSA with cred and cert but no DH params", + .client_ret = 0, + .server_ret = 0, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 DHE-RSA with cred and DH params but no cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .have_cert_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 DHE-RSA with cred and incompatible cert and DH params", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .have_rsa_decrypt_cert = 1, + .have_ecc_sign_cert = 1, + .have_cert_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 DHE-RSA with cred and cert and DH params (level)", + .client_ret = 0, + .server_ret = 0, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .have_cert_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 DHE-RSA with cred and cert and DH params (explicit)", + .client_ret = 0, + .server_ret = 0, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .have_cert_exp_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 DHE-RSA with cred and multiple certs and DH params", + .client_ret = 0, + .server_ret = 0, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .have_ecc_sign_cert = 1, + .have_rsa_decrypt_cert = 1, + .have_cert_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+DHE-RSA:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 DHE-PSK without cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 DHE-PSK with cred but no DH params", + .client_ret = 0, + .server_ret = 0, + .have_psk_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 DHE-PSK with cred and DH params (level)", + .client_ret = 0, + .server_ret = 0, + .have_psk_cred = 1, + .have_psk_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 DHE-PSK with cred and DH params (explicit)", + .client_ret = 0, + .server_ret = 0, + .have_psk_cred = 1, + .have_psk_exp_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 ECDHE-RSA without cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 ECDHE-RSA with cred but no common curve or cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .server_prio = + "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2:-CURVE-ALL:+CURVE-SECP256R1", + .client_prio = + "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2:-CURVE-ALL:+CURVE-SECP384R1" }, + { .name = "TLS 1.2 ECDHE-RSA with cred and cert but no common curve", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .server_prio = + "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2:-CURVE-ALL:+CURVE-SECP256R1", + .client_prio = + "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2:-CURVE-ALL:+CURVE-SECP384R1" }, + { .name = "TLS 1.2 ECDHE-RSA with cred and common curve but no cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 ECDHE-RSA with cred and incompatible cert and common curve", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .have_rsa_decrypt_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 ECDHE-RSA with cred and cert and common curve", + .server_ret = 0, + .client_ret = 0, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 ECDHE-RSA with cred and multiple certs and common curve", + .server_ret = 0, + .client_ret = 0, + .have_cert_cred = 1, + .have_rsa_decrypt_cert = 1, + .have_rsa_sign_cert = 1, + .have_ecc_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-RSA:-VERS-ALL:+VERS-TLS1.2" }, - { - .name = "TLS 1.2 ECDHE-ECDSA without cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 ECDHE-ECDSA with cred but no common curve or cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .server_prio = - "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2:-CURVE-ALL:+CURVE-SECP256R1", - .client_prio = - "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2:-CURVE-ALL:+CURVE-SECP384R1"}, - { - .name = "TLS 1.2 ECDHE-ECDSA with cred and cert but no common curve", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .have_ecc_sign_cert = 1, - .server_prio = - "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2:-CURVE-ALL:+CURVE-SECP256R1", - .client_prio = - "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2:-CURVE-ALL:+CURVE-SECP384R1"}, - { - .name = - "TLS 1.2 ECDHE-ECDSA with cred and common curve but no ECDSA cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .have_rsa_decrypt_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 ECDHE-ECDSA with cred and common curve but no cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 ECDHE-ECDSA with cred and cert and common curve", - .server_ret = 0, - .client_ret = 0, - .have_cert_cred = 1, - .have_ecc_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = - "TLS 1.2 ECDHE-ECDSA with cred and multiple certs and common curve", - .server_ret = 0, - .client_ret = 0, - .have_cert_cred = 1, - .have_ecc_sign_cert = 1, - .have_rsa_sign_cert = 1, - .have_rsa_decrypt_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 ECDHE-ECDSA with cred and ed25519 cert", - .server_ret = 0, - .client_ret = 0, - .have_cert_cred = 1, - .have_ed25519_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = - "TLS 1.2 ECDHE-ECDSA with cred and cert but incompatible (ed25519) curves", - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .client_ret = GNUTLS_E_AGAIN, - .have_cert_cred = 1, - .have_ed25519_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = - "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2:-CURVE-ED25519:-SIGN-EDDSA-ED25519"}, - { - .name = "TLS 1.2 ECDHE-PSK without cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 ECDHE-PSK with cred but no common curve", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_psk_cred = 1, - .server_prio = - "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.2:-CURVE-ALL:+CURVE-SECP256R1", - .client_prio = - "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.2:-CURVE-ALL:+CURVE-SECP384R1"}, - { - .name = "TLS 1.2 ECDHE-PSK with cred and common curve", - .client_ret = 0, - .server_ret = 0, - .have_psk_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 RSA-PSK without cert cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .have_psk_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 RSA-PSK without psk cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_psk_cred = 0, - .have_cert_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 RSA-PSK with cred but invalid cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_psk_cred = 1, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .have_ecc_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 RSA-PSK with cred", - .server_ret = 0, - .client_ret = 0, - .have_psk_cred = 1, - .have_cert_cred = 1, - .have_rsa_decrypt_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 RSA-PSK with cred and multiple certs", - .server_ret = 0, - .client_ret = 0, - .have_psk_cred = 1, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .have_ecc_sign_cert = 1, - .have_rsa_decrypt_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.2"}, + { .name = "TLS 1.2 ECDHE-ECDSA without cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 ECDHE-ECDSA with cred but no common curve or cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .server_prio = + "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2:-CURVE-ALL:+CURVE-SECP256R1", + .client_prio = + "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2:-CURVE-ALL:+CURVE-SECP384R1" }, + { .name = "TLS 1.2 ECDHE-ECDSA with cred and cert but no common curve", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .have_ecc_sign_cert = 1, + .server_prio = + "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2:-CURVE-ALL:+CURVE-SECP256R1", + .client_prio = + "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2:-CURVE-ALL:+CURVE-SECP384R1" }, + { .name = "TLS 1.2 ECDHE-ECDSA with cred and common curve but no ECDSA cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .have_rsa_decrypt_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 ECDHE-ECDSA with cred and common curve but no cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 ECDHE-ECDSA with cred and cert and common curve", + .server_ret = 0, + .client_ret = 0, + .have_cert_cred = 1, + .have_ecc_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 ECDHE-ECDSA with cred and multiple certs and common curve", + .server_ret = 0, + .client_ret = 0, + .have_cert_cred = 1, + .have_ecc_sign_cert = 1, + .have_rsa_sign_cert = 1, + .have_rsa_decrypt_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 ECDHE-ECDSA with cred and ed25519 cert", + .server_ret = 0, + .client_ret = 0, + .have_cert_cred = 1, + .have_ed25519_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 ECDHE-ECDSA with cred and cert but incompatible (ed25519) curves", + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .client_ret = GNUTLS_E_AGAIN, + .have_cert_cred = 1, + .have_ed25519_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = + "NORMAL:-KX-ALL:+ECDHE-ECDSA:-VERS-ALL:+VERS-TLS1.2:-CURVE-ED25519:-SIGN-EDDSA-ED25519" }, + { .name = "TLS 1.2 ECDHE-PSK without cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 ECDHE-PSK with cred but no common curve", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_psk_cred = 1, + .server_prio = + "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.2:-CURVE-ALL:+CURVE-SECP256R1", + .client_prio = + "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.2:-CURVE-ALL:+CURVE-SECP384R1" }, + { .name = "TLS 1.2 ECDHE-PSK with cred and common curve", + .client_ret = 0, + .server_ret = 0, + .have_psk_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 RSA-PSK without cert cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .have_psk_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 RSA-PSK without psk cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_psk_cred = 0, + .have_cert_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 RSA-PSK with cred but invalid cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_psk_cred = 1, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .have_ecc_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 RSA-PSK with cred", + .server_ret = 0, + .client_ret = 0, + .have_psk_cred = 1, + .have_cert_cred = 1, + .have_rsa_decrypt_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 RSA-PSK with cred and multiple certs", + .server_ret = 0, + .client_ret = 0, + .have_psk_cred = 1, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .have_ecc_sign_cert = 1, + .have_rsa_decrypt_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:-VERS-ALL:+VERS-TLS1.2" }, #ifdef ENABLE_SRP - { - .name = "TLS 1.2 SRP-RSA without cert cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .have_srp_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 SRP-RSA without srp cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_srp_cred = 0, - .have_cert_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 SRP-RSA with cred but invalid cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_srp_cred = 1, - .have_cert_cred = 1, - .have_rsa_decrypt_cert = 1, - .have_ecc_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 SRP-RSA with cred", - .server_ret = 0, - .client_ret = 0, - .have_srp_cred = 1, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 SRP-RSA with cred and multiple certs", - .server_ret = 0, - .client_ret = 0, - .have_srp_cred = 1, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .have_ecc_sign_cert = 1, - .have_rsa_decrypt_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 SRP without srp cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .have_srp_cred = 0, - .have_cert_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+SRP:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 SRP with cred", - .server_ret = 0, - .client_ret = 0, - .have_srp_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP:-VERS-ALL:+VERS-TLS1.2", - .client_prio = "NORMAL:-KX-ALL:+SRP:-VERS-ALL:+VERS-TLS1.2"}, + { .name = "TLS 1.2 SRP-RSA without cert cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .have_srp_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 SRP-RSA without srp cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_srp_cred = 0, + .have_cert_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 SRP-RSA with cred but invalid cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_srp_cred = 1, + .have_cert_cred = 1, + .have_rsa_decrypt_cert = 1, + .have_ecc_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 SRP-RSA with cred", + .server_ret = 0, + .client_ret = 0, + .have_srp_cred = 1, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 SRP-RSA with cred and multiple certs", + .server_ret = 0, + .client_ret = 0, + .have_srp_cred = 1, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .have_ecc_sign_cert = 1, + .have_rsa_decrypt_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 SRP without srp cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .have_srp_cred = 0, + .have_cert_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+SRP:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 SRP with cred", + .server_ret = 0, + .client_ret = 0, + .have_srp_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP:-VERS-ALL:+VERS-TLS1.2", + .client_prio = "NORMAL:-KX-ALL:+SRP:-VERS-ALL:+VERS-TLS1.2" }, #endif #ifdef ENABLE_GOST - { - .name = "TLS 1.2 VKO-GOST-12 without cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .not_on_fips = 1, - .server_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2", - .client_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 VKO-GOST-12 with cred but no cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .not_on_fips = 1, - .server_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2", - .client_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 VKO-GOST-12 with cred but no GOST cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .have_rsa_decrypt_cert = 1, - .not_on_fips = 1, - .server_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2", - .client_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 VKO-GOST-12 with cred and GOST12-256 cert", - .server_ret = 0, - .client_ret = 0, - .have_cert_cred = 1, - .have_gost12_256_cert = 1, - .not_on_fips = 1, - .server_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2", - .client_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 VKO-GOST-12 with cred and GOST12-512 cert", - .server_ret = 0, - .client_ret = 0, - .have_cert_cred = 1, - .have_gost12_512_cert = 1, - .not_on_fips = 1, - .server_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2", - .client_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = "TLS 1.2 VKO-GOST-12 with cred and multiple certs", - .server_ret = 0, - .client_ret = 0, - .have_cert_cred = 1, - .have_ecc_sign_cert = 1, - .have_rsa_sign_cert = 1, - .have_rsa_decrypt_cert = 1, - .have_gost12_256_cert = 1, - .have_gost12_512_cert = 1, - .not_on_fips = 1, - .server_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2", - .client_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2"}, - { - .name = - "TLS 1.2 VKO-GOST-12 with cred and GOST12-256 cert client lacking signature algs (like SChannel)", - .server_ret = 0, - .client_ret = 0, - .have_cert_cred = 1, - .have_gost12_256_cert = 1, - .not_on_fips = 1, - .server_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2", - .client_prio = - "NONE:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+VERS-TLS1.2:+SIGN-RSA-SHA256"}, - { - .name = - "TLS 1.2 VKO-GOST-12 with cred and GOST12-512 cert client lacking signature algs (like SChannel)", - .server_ret = 0, - .client_ret = 0, - .have_cert_cred = 1, - .have_gost12_512_cert = 1, - .not_on_fips = 1, - .server_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2", - .client_prio = - "NONE:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+VERS-TLS1.2:+SIGN-RSA-SHA256"}, + { .name = "TLS 1.2 VKO-GOST-12 without cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .not_on_fips = 1, + .server_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2", + .client_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 VKO-GOST-12 with cred but no cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .not_on_fips = 1, + .server_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2", + .client_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 VKO-GOST-12 with cred but no GOST cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .have_rsa_decrypt_cert = 1, + .not_on_fips = 1, + .server_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2", + .client_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 VKO-GOST-12 with cred and GOST12-256 cert", + .server_ret = 0, + .client_ret = 0, + .have_cert_cred = 1, + .have_gost12_256_cert = 1, + .not_on_fips = 1, + .server_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2", + .client_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 VKO-GOST-12 with cred and GOST12-512 cert", + .server_ret = 0, + .client_ret = 0, + .have_cert_cred = 1, + .have_gost12_512_cert = 1, + .not_on_fips = 1, + .server_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2", + .client_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 VKO-GOST-12 with cred and multiple certs", + .server_ret = 0, + .client_ret = 0, + .have_cert_cred = 1, + .have_ecc_sign_cert = 1, + .have_rsa_sign_cert = 1, + .have_rsa_decrypt_cert = 1, + .have_gost12_256_cert = 1, + .have_gost12_512_cert = 1, + .not_on_fips = 1, + .server_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2", + .client_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2" }, + { .name = "TLS 1.2 VKO-GOST-12 with cred and GOST12-256 cert client lacking signature algs (like SChannel)", + .server_ret = 0, + .client_ret = 0, + .have_cert_cred = 1, + .have_gost12_256_cert = 1, + .not_on_fips = 1, + .server_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2", + .client_prio = + "NONE:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+VERS-TLS1.2:+SIGN-RSA-SHA256" }, + { .name = "TLS 1.2 VKO-GOST-12 with cred and GOST12-512 cert client lacking signature algs (like SChannel)", + .server_ret = 0, + .client_ret = 0, + .have_cert_cred = 1, + .have_gost12_512_cert = 1, + .not_on_fips = 1, + .server_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:-VERS-ALL:+VERS-TLS1.2", + .client_prio = + "NONE:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+VERS-TLS1.2:+SIGN-RSA-SHA256" }, #endif }; diff --git a/tests/tls13-cert-key-exchange.c b/tests/tls13-cert-key-exchange.c index 5b93dc6a07..874fab8e58 100644 --- a/tests/tls13-cert-key-exchange.c +++ b/tests/tls13-cert-key-exchange.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* This program tests the various certificate key exchange methods supported @@ -40,7 +40,7 @@ void doit(void) global_init(); server_priority = - "NORMAL:+ANON-DH:+ANON-ECDH:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0:+ECDHE-RSA:+DHE-RSA:+RSA:+ECDHE-ECDSA:+CURVE-X25519:+SIGN-EDDSA-ED25519"; + "NORMAL:+ANON-DH:+ANON-ECDH:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0:+ECDHE-RSA:+DHE-RSA:+RSA:+ECDHE-ECDSA:+CURVE-X25519:+SIGN-EDDSA-ED25519"; try_x509("TLS 1.3 with ffdhe2048 rsa no-cli-cert / anon on server", "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-FFDHE2048", GNUTLS_KX_DHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, @@ -48,7 +48,7 @@ void doit(void) /** X.509 tests **/ server_priority = - "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0:+ECDHE-RSA:+DHE-RSA:+RSA:+ECDHE-ECDSA:+CURVE-X25519:+SIGN-EDDSA-ED25519"; + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0:+ECDHE-RSA:+DHE-RSA:+RSA:+ECDHE-ECDSA:+CURVE-X25519:+SIGN-EDDSA-ED25519"; /* TLS 1.3 no client cert */ try_x509("TLS 1.3 with ffdhe2048 rsa no-cli-cert (ctype X.509)", @@ -80,58 +80,58 @@ void doit(void) GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, GNUTLS_SIGN_UNKNOWN); - try_with_key_ks - ("TLS 1.3 with secp256r1 ecdsa no-cli-cert (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP256R1", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_ECDSA_SECP256R1_SHA256, - GNUTLS_SIGN_UNKNOWN, &server_ca3_localhost_ecc_cert, - &server_ca3_ecc_key, NULL, NULL, 0, GNUTLS_GROUP_SECP256R1, - GNUTLS_CRT_X509, GNUTLS_CRT_UNKNOWN); + try_with_key_ks( + "TLS 1.3 with secp256r1 ecdsa no-cli-cert (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP256R1", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_ECDSA_SECP256R1_SHA256, + GNUTLS_SIGN_UNKNOWN, &server_ca3_localhost_ecc_cert, + &server_ca3_ecc_key, NULL, NULL, 0, GNUTLS_GROUP_SECP256R1, + GNUTLS_CRT_X509, GNUTLS_CRT_UNKNOWN); /* Test RSA-PSS cert/key combo issues */ - try_with_key_ks - ("TLS 1.3 with x25519 with rsa-pss-sha256 key no-cli-cert (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, - GNUTLS_SIGN_UNKNOWN, &server_ca3_rsa_pss2_cert, - &server_ca3_rsa_pss2_key, NULL, NULL, 0, GNUTLS_GROUP_X25519, - GNUTLS_CRT_X509, GNUTLS_CRT_UNKNOWN); - try_with_key_ks - ("TLS 1.3 with x25519 with rsa-pss-sha256 key and 1 sig no-cli-cert (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519:-SIGN-ALL:+SIGN-RSA-PSS-SHA256", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, - GNUTLS_SIGN_UNKNOWN, &server_ca3_rsa_pss2_cert, - &server_ca3_rsa_pss2_key, NULL, NULL, 0, GNUTLS_GROUP_X25519, - GNUTLS_CRT_X509, GNUTLS_CRT_UNKNOWN); - try_with_key_ks - ("TLS 1.3 with x25519 with rsa-pss-sha256 key and rsa-pss-sha384 first sig no-cli-cert (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519:-SIGN-ALL:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA256", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, - GNUTLS_SIGN_UNKNOWN, &server_ca3_rsa_pss2_cert, - &server_ca3_rsa_pss2_key, NULL, NULL, 0, GNUTLS_GROUP_X25519, - GNUTLS_CRT_X509, GNUTLS_CRT_UNKNOWN); - try_with_key_ks - ("TLS 1.3 with x25519 with rsa-pss-sha256 key and rsa-pss-sha512 first sig no-cli-cert (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519:-SIGN-ALL:+SIGN-RSA-PSS-SHA512:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA256", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, - GNUTLS_SIGN_UNKNOWN, &server_ca3_rsa_pss2_cert, - &server_ca3_rsa_pss2_key, NULL, NULL, 0, GNUTLS_GROUP_X25519, - GNUTLS_CRT_X509, GNUTLS_CRT_UNKNOWN); + try_with_key_ks( + "TLS 1.3 with x25519 with rsa-pss-sha256 key no-cli-cert (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, + GNUTLS_SIGN_UNKNOWN, &server_ca3_rsa_pss2_cert, + &server_ca3_rsa_pss2_key, NULL, NULL, 0, GNUTLS_GROUP_X25519, + GNUTLS_CRT_X509, GNUTLS_CRT_UNKNOWN); + try_with_key_ks( + "TLS 1.3 with x25519 with rsa-pss-sha256 key and 1 sig no-cli-cert (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519:-SIGN-ALL:+SIGN-RSA-PSS-SHA256", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, + GNUTLS_SIGN_UNKNOWN, &server_ca3_rsa_pss2_cert, + &server_ca3_rsa_pss2_key, NULL, NULL, 0, GNUTLS_GROUP_X25519, + GNUTLS_CRT_X509, GNUTLS_CRT_UNKNOWN); + try_with_key_ks( + "TLS 1.3 with x25519 with rsa-pss-sha256 key and rsa-pss-sha384 first sig no-cli-cert (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519:-SIGN-ALL:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA256", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, + GNUTLS_SIGN_UNKNOWN, &server_ca3_rsa_pss2_cert, + &server_ca3_rsa_pss2_key, NULL, NULL, 0, GNUTLS_GROUP_X25519, + GNUTLS_CRT_X509, GNUTLS_CRT_UNKNOWN); + try_with_key_ks( + "TLS 1.3 with x25519 with rsa-pss-sha256 key and rsa-pss-sha512 first sig no-cli-cert (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519:-SIGN-ALL:+SIGN-RSA-PSS-SHA512:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA256", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, + GNUTLS_SIGN_UNKNOWN, &server_ca3_rsa_pss2_cert, + &server_ca3_rsa_pss2_key, NULL, NULL, 0, GNUTLS_GROUP_X25519, + GNUTLS_CRT_X509, GNUTLS_CRT_UNKNOWN); - try_with_key_ks - ("TLS 1.3 with x25519 rsa-pss/rsa-pss no-cli-cert (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519:-SIGN-ALL:+SIGN-RSA-PSS-SHA256", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, - GNUTLS_SIGN_UNKNOWN, &server_ca3_rsa_pss_cert, - &server_ca3_rsa_pss_key, NULL, NULL, 0, GNUTLS_GROUP_X25519, - GNUTLS_CRT_X509, GNUTLS_CRT_UNKNOWN); - try_with_key_ks("TLS 1.3 with x25519 ed25519 no-cli-cert (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-KX-ALL:+ECDHE-ECDSA:-CURVE-ALL:+CURVE-X25519:-SIGN-ALL:+SIGN-EDDSA-ED25519", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_EDDSA_ED25519, - GNUTLS_SIGN_UNKNOWN, &server_ca3_eddsa_cert, - &server_ca3_eddsa_key, NULL, NULL, 0, - GNUTLS_GROUP_X25519, GNUTLS_CRT_X509, - GNUTLS_CRT_UNKNOWN); + try_with_key_ks( + "TLS 1.3 with x25519 rsa-pss/rsa-pss no-cli-cert (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519:-SIGN-ALL:+SIGN-RSA-PSS-SHA256", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_SHA256, + GNUTLS_SIGN_UNKNOWN, &server_ca3_rsa_pss_cert, + &server_ca3_rsa_pss_key, NULL, NULL, 0, GNUTLS_GROUP_X25519, + GNUTLS_CRT_X509, GNUTLS_CRT_UNKNOWN); + try_with_key_ks( + "TLS 1.3 with x25519 ed25519 no-cli-cert (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-KX-ALL:+ECDHE-ECDSA:-CURVE-ALL:+CURVE-X25519:-SIGN-ALL:+SIGN-EDDSA-ED25519", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_EDDSA_ED25519, + GNUTLS_SIGN_UNKNOWN, &server_ca3_eddsa_cert, + &server_ca3_eddsa_key, NULL, NULL, 0, GNUTLS_GROUP_X25519, + GNUTLS_CRT_X509, GNUTLS_CRT_UNKNOWN); /* client authentication */ try_with_key("TLS 1.3 with rsa-pss cli-cert (ctype X.509)", @@ -155,119 +155,136 @@ void doit(void) &server_ca3_localhost_ecc_cert, &server_ca3_ecc_key, &server_ca3_localhost_ecc_cert, &server_ca3_ecc_key, USE_CERT, GNUTLS_CRT_X509, GNUTLS_CRT_X509); - try_with_key("TLS 1.3 with x25519 ed25519 cli-cert (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-KX-ALL:+ECDHE-RSA:-CURVE-ALL:+CURVE-X25519:-SIGN-ALL:+SIGN-EDDSA-ED25519", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_EDDSA_ED25519, - GNUTLS_SIGN_EDDSA_ED25519, &server_ca3_eddsa_cert, - &server_ca3_eddsa_key, &server_ca3_eddsa_cert, - &server_ca3_eddsa_key, USE_CERT, GNUTLS_CRT_X509, - GNUTLS_CRT_X509); + try_with_key( + "TLS 1.3 with x25519 ed25519 cli-cert (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-KX-ALL:+ECDHE-RSA:-CURVE-ALL:+CURVE-X25519:-SIGN-ALL:+SIGN-EDDSA-ED25519", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_EDDSA_ED25519, + GNUTLS_SIGN_EDDSA_ED25519, &server_ca3_eddsa_cert, + &server_ca3_eddsa_key, &server_ca3_eddsa_cert, + &server_ca3_eddsa_key, USE_CERT, GNUTLS_CRT_X509, + GNUTLS_CRT_X509); /* TLS 1.3 mis-matching groups */ /* Our policy is to send a key share for the first of each type of groups, so make sure * the server doesn't support them */ server_priority = - "NORMAL:-GROUP-ALL:-VERS-TLS-ALL:+VERS-TLS1.3:+GROUP-FFDHE3072:+GROUP-SECP521R1", - try_x509_ks("TLS 1.3 with default key share (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-FFDHE3072", - GNUTLS_KX_DHE_RSA, GNUTLS_GROUP_FFDHE3072); - try_x509_ks("TLS 1.3 with ffdhe2048 key share (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-FFDHE3072", - GNUTLS_KX_DHE_RSA, GNUTLS_GROUP_FFDHE3072); - try_x509_ks("TLS 1.3 with ffdhe4096 key share (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-FFDHE4096:+GROUP-FFDHE3072", - GNUTLS_KX_DHE_RSA, GNUTLS_GROUP_FFDHE3072); - try_x509_ks("TLS 1.3 with secp256r1 key share (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-SECP384R1:+GROUP-SECP521R1", - GNUTLS_KX_ECDHE_RSA, GNUTLS_GROUP_SECP521R1); - try_x509_ks("TLS 1.3 with secp384r1 key share (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP384R1:+GROUP-SECP521R1", - GNUTLS_KX_ECDHE_RSA, GNUTLS_GROUP_SECP521R1); + "NORMAL:-GROUP-ALL:-VERS-TLS-ALL:+VERS-TLS1.3:+GROUP-FFDHE3072:+GROUP-SECP521R1", + try_x509_ks( + "TLS 1.3 with default key share (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-FFDHE3072", + GNUTLS_KX_DHE_RSA, GNUTLS_GROUP_FFDHE3072); + try_x509_ks( + "TLS 1.3 with ffdhe2048 key share (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-FFDHE3072", + GNUTLS_KX_DHE_RSA, GNUTLS_GROUP_FFDHE3072); + try_x509_ks( + "TLS 1.3 with ffdhe4096 key share (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-FFDHE4096:+GROUP-FFDHE3072", + GNUTLS_KX_DHE_RSA, GNUTLS_GROUP_FFDHE3072); + try_x509_ks( + "TLS 1.3 with secp256r1 key share (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-SECP384R1:+GROUP-SECP521R1", + GNUTLS_KX_ECDHE_RSA, GNUTLS_GROUP_SECP521R1); + try_x509_ks( + "TLS 1.3 with secp384r1 key share (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP384R1:+GROUP-SECP521R1", + GNUTLS_KX_ECDHE_RSA, GNUTLS_GROUP_SECP521R1); try_x509_ks("TLS 1.3 with secp521r1 key share (ctype X.509)", "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP521R1", GNUTLS_KX_ECDHE_RSA, GNUTLS_GROUP_SECP521R1); - try_x509_ks("TLS 1.3 with x25519 -> ffdhe3072 key share (ctype X.509)", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519:+GROUP-SECP384R1:+GROUP-FFDHE3072", - GNUTLS_KX_DHE_RSA, GNUTLS_GROUP_FFDHE3072); + try_x509_ks( + "TLS 1.3 with x25519 -> ffdhe3072 key share (ctype X.509)", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519:+GROUP-SECP384R1:+GROUP-FFDHE3072", + GNUTLS_KX_DHE_RSA, GNUTLS_GROUP_FFDHE3072); /* TLS 1.2 fallback */ server_priority = - "NORMAL:-VERS-ALL:+VERS-TLS1.2:+ECDHE-RSA:+DHE-RSA:+RSA:+ECDHE-ECDSA:+CURVE-X25519:+SIGN-EDDSA-ED25519", - try_with_key_ks("TLS 1.2 fallback with x25519 ed25519 no-cli-cert", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:-KX-ALL:+ECDHE-ECDSA:-CURVE-ALL:+CURVE-X25519:-SIGN-ALL:+SIGN-EDDSA-ED25519", - GNUTLS_KX_ECDHE_ECDSA, GNUTLS_SIGN_EDDSA_ED25519, - GNUTLS_SIGN_UNKNOWN, &server_ca3_eddsa_cert, - &server_ca3_eddsa_key, NULL, NULL, 0, 0, - GNUTLS_CRT_X509, GNUTLS_CRT_UNKNOWN); - try_x509("TLS 1.2 fallback with secp521r1 rsa no-cli-cert", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:-GROUP-ALL:+GROUP-SECP521R1", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_SHA256, - GNUTLS_SIGN_UNKNOWN); - try_x509("TLS 1.2 fallback with ffdhe2048 rsa no-cli-cert", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:-KX-ALL:+DHE-RSA:-GROUP-ALL:+GROUP-FFDHE2048", - GNUTLS_KX_DHE_RSA, GNUTLS_SIGN_RSA_SHA256, - GNUTLS_SIGN_UNKNOWN); + "NORMAL:-VERS-ALL:+VERS-TLS1.2:+ECDHE-RSA:+DHE-RSA:+RSA:+ECDHE-ECDSA:+CURVE-X25519:+SIGN-EDDSA-ED25519", + try_with_key_ks( + "TLS 1.2 fallback with x25519 ed25519 no-cli-cert", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:-KX-ALL:+ECDHE-ECDSA:-CURVE-ALL:+CURVE-X25519:-SIGN-ALL:+SIGN-EDDSA-ED25519", + GNUTLS_KX_ECDHE_ECDSA, GNUTLS_SIGN_EDDSA_ED25519, + GNUTLS_SIGN_UNKNOWN, &server_ca3_eddsa_cert, + &server_ca3_eddsa_key, NULL, NULL, 0, 0, GNUTLS_CRT_X509, + GNUTLS_CRT_UNKNOWN); + try_x509( + "TLS 1.2 fallback with secp521r1 rsa no-cli-cert", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:-GROUP-ALL:+GROUP-SECP521R1", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_SHA256, + GNUTLS_SIGN_UNKNOWN); + try_x509( + "TLS 1.2 fallback with ffdhe2048 rsa no-cli-cert", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:-KX-ALL:+DHE-RSA:-GROUP-ALL:+GROUP-FFDHE2048", + GNUTLS_KX_DHE_RSA, GNUTLS_SIGN_RSA_SHA256, GNUTLS_SIGN_UNKNOWN); /** Raw public-key tests **/ server_priority = - "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0:+ECDHE-RSA:+DHE-RSA:+RSA:+ECDHE-ECDSA:+CURVE-X25519:+SIGN-EDDSA-ED25519:+CTYPE-ALL"; + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0:+ECDHE-RSA:+DHE-RSA:+RSA:+ECDHE-ECDSA:+CURVE-X25519:+SIGN-EDDSA-ED25519:+CTYPE-ALL"; - try_rawpk("TLS 1.3 with ffdhe2048 rsa no-cli-cert (ctype Raw PK)", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-FFDHE2048:+CTYPE-ALL", - GNUTLS_KX_DHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, - GNUTLS_SIGN_UNKNOWN); - try_rawpk("TLS 1.3 with ffdhe3072 rsa no-cli-cert (ctype Raw PK)", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-FFDHE3072:+CTYPE-ALL", - GNUTLS_KX_DHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, - GNUTLS_SIGN_UNKNOWN); - try_rawpk("TLS 1.3 with ffdhe4096 rsa no-cli-cert (ctype Raw PK)", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-FFDHE4096:+CTYPE-ALL", - GNUTLS_KX_DHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, - GNUTLS_SIGN_UNKNOWN); - try_rawpk("TLS 1.3 with secp256r1 rsa no-cli-cert (ctype Raw PK)", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP256R1:+CTYPE-ALL", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, - GNUTLS_SIGN_UNKNOWN); - try_rawpk("TLS 1.3 with secp384r1 rsa no-cli-cert (ctype Raw PK)", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP384R1:+CTYPE-ALL", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, - GNUTLS_SIGN_UNKNOWN); - try_rawpk("TLS 1.3 with secp521r1 rsa no-cli-cert (ctype Raw PK)", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP521R1:+CTYPE-ALL", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, - GNUTLS_SIGN_UNKNOWN); - try_rawpk("TLS 1.3 with x25519 rsa no-cli-cert (ctype Raw PK)", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519:+CTYPE-ALL", - GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, - GNUTLS_SIGN_UNKNOWN); + try_rawpk( + "TLS 1.3 with ffdhe2048 rsa no-cli-cert (ctype Raw PK)", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-FFDHE2048:+CTYPE-ALL", + GNUTLS_KX_DHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, + GNUTLS_SIGN_UNKNOWN); + try_rawpk( + "TLS 1.3 with ffdhe3072 rsa no-cli-cert (ctype Raw PK)", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-FFDHE3072:+CTYPE-ALL", + GNUTLS_KX_DHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, + GNUTLS_SIGN_UNKNOWN); + try_rawpk( + "TLS 1.3 with ffdhe4096 rsa no-cli-cert (ctype Raw PK)", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-FFDHE4096:+CTYPE-ALL", + GNUTLS_KX_DHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, + GNUTLS_SIGN_UNKNOWN); + try_rawpk( + "TLS 1.3 with secp256r1 rsa no-cli-cert (ctype Raw PK)", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP256R1:+CTYPE-ALL", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, + GNUTLS_SIGN_UNKNOWN); + try_rawpk( + "TLS 1.3 with secp384r1 rsa no-cli-cert (ctype Raw PK)", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP384R1:+CTYPE-ALL", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, + GNUTLS_SIGN_UNKNOWN); + try_rawpk( + "TLS 1.3 with secp521r1 rsa no-cli-cert (ctype Raw PK)", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP521R1:+CTYPE-ALL", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, + GNUTLS_SIGN_UNKNOWN); + try_rawpk( + "TLS 1.3 with x25519 rsa no-cli-cert (ctype Raw PK)", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519:+CTYPE-ALL", + GNUTLS_KX_ECDHE_RSA, GNUTLS_SIGN_RSA_PSS_RSAE_SHA256, + GNUTLS_SIGN_UNKNOWN); /** Illegal setups **/ server_priority = "NORMAL:-VERS-ALL:+VERS-TLS1.3"; - try_with_key_fail - ("TLS 1.3 with rsa cert and only RSA-PSS sig algos in client", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-SIGN-ALL:+SIGN-RSA-PSS-SHA256:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA512", - GNUTLS_E_NO_CIPHER_SUITES, GNUTLS_E_AGAIN, - &server_ca3_localhost_cert, &server_ca3_key, NULL, NULL); + try_with_key_fail( + "TLS 1.3 with rsa cert and only RSA-PSS sig algos in client", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-SIGN-ALL:+SIGN-RSA-PSS-SHA256:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA512", + GNUTLS_E_NO_CIPHER_SUITES, GNUTLS_E_AGAIN, + &server_ca3_localhost_cert, &server_ca3_key, NULL, NULL); - try_with_key_fail - ("TLS 1.3 with x25519 with rsa-pss cert and RSAE signatures", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA256:+SIGN-RSA-PSS-RSAE-SHA384", - GNUTLS_E_NO_CIPHER_SUITES, GNUTLS_E_AGAIN, - &server_ca3_rsa_pss2_cert, &server_ca3_rsa_pss2_key, NULL, NULL); + try_with_key_fail( + "TLS 1.3 with x25519 with rsa-pss cert and RSAE signatures", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA256:+SIGN-RSA-PSS-RSAE-SHA384", + GNUTLS_E_NO_CIPHER_SUITES, GNUTLS_E_AGAIN, + &server_ca3_rsa_pss2_cert, &server_ca3_rsa_pss2_key, NULL, + NULL); server_priority = NULL; - try_with_key_fail("TLS 1.3 with rsa cert and only RSA-PSS sig algos", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-SIGN-ALL:+SIGN-RSA-PSS-SHA256:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA512", - GNUTLS_E_NO_CIPHER_SUITES, GNUTLS_E_AGAIN, - &server_ca3_localhost_cert, &server_ca3_key, NULL, - NULL); + try_with_key_fail( + "TLS 1.3 with rsa cert and only RSA-PSS sig algos", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-SIGN-ALL:+SIGN-RSA-PSS-SHA256:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA512", + GNUTLS_E_NO_CIPHER_SUITES, GNUTLS_E_AGAIN, + &server_ca3_localhost_cert, &server_ca3_key, NULL, NULL); - try_with_key_fail - ("TLS 1.3 with rsa-pss cert and rsa cli cert with only RSA-PSS sig algos", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-SIGN-ALL:+SIGN-RSA-PSS-SHA256:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA512", - GNUTLS_E_CERTIFICATE_REQUIRED, GNUTLS_E_SUCCESS, - &server_ca3_rsa_pss_cert, &server_ca3_rsa_pss_key, &cli_ca3_cert, - &cli_ca3_key); + try_with_key_fail( + "TLS 1.3 with rsa-pss cert and rsa cli cert with only RSA-PSS sig algos", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-SIGN-ALL:+SIGN-RSA-PSS-SHA256:+SIGN-RSA-PSS-SHA384:+SIGN-RSA-PSS-SHA512", + GNUTLS_E_CERTIFICATE_REQUIRED, GNUTLS_E_SUCCESS, + &server_ca3_rsa_pss_cert, &server_ca3_rsa_pss_key, + &cli_ca3_cert, &cli_ca3_key); try_with_key_fail("TLS 1.3 with rsa encryption cert", "NORMAL:-VERS-ALL:+VERS-TLS1.3", @@ -281,26 +298,26 @@ void doit(void) &server_ca3_localhost_rsa_decrypt_cert, &server_ca3_key, NULL, NULL); - try_with_key_fail - ("TLS 1.3 with (forced) rsa encryption cert - client should detect", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:%DEBUG_ALLOW_KEY_USAGE_VIOLATIONS", - GNUTLS_E_AGAIN, GNUTLS_E_KEY_USAGE_VIOLATION, - &server_ca3_localhost_rsa_decrypt_cert, &server_ca3_key, NULL, - NULL); + try_with_key_fail( + "TLS 1.3 with (forced) rsa encryption cert - client should detect", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:%DEBUG_ALLOW_KEY_USAGE_VIOLATIONS", + GNUTLS_E_AGAIN, GNUTLS_E_KEY_USAGE_VIOLATION, + &server_ca3_localhost_rsa_decrypt_cert, &server_ca3_key, NULL, + NULL); try_with_key_fail("TLS 1.3 with client rsa encryption cert", - "NORMAL:-VERS-ALL:+VERS-TLS1.3", - GNUTLS_E_AGAIN, GNUTLS_E_INSUFFICIENT_CREDENTIALS, + "NORMAL:-VERS-ALL:+VERS-TLS1.3", GNUTLS_E_AGAIN, + GNUTLS_E_INSUFFICIENT_CREDENTIALS, &server_ca3_rsa_pss_cert, &server_ca3_rsa_pss_key, &server_ca3_localhost_rsa_decrypt_cert, &server_ca3_key); - try_with_key_fail - ("TLS 1.3 with (forced) client rsa encryption cert - server should detect", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:%DEBUG_ALLOW_KEY_USAGE_VIOLATIONS", - GNUTLS_E_KEY_USAGE_VIOLATION, GNUTLS_E_SUCCESS, - &server_ca3_rsa_pss_cert, &server_ca3_rsa_pss_key, - &server_ca3_localhost_rsa_decrypt_cert, &server_ca3_key); + try_with_key_fail( + "TLS 1.3 with (forced) client rsa encryption cert - server should detect", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:%DEBUG_ALLOW_KEY_USAGE_VIOLATIONS", + GNUTLS_E_KEY_USAGE_VIOLATION, GNUTLS_E_SUCCESS, + &server_ca3_rsa_pss_cert, &server_ca3_rsa_pss_key, + &server_ca3_localhost_rsa_decrypt_cert, &server_ca3_key); try_with_rawpk_key_fail("rawpk TLS 1.3 with rsa encryption cert", "NORMAL:-VERS-ALL:+VERS-TLS1.3:+CTYPE-RAWPK", @@ -308,11 +325,12 @@ void doit(void) &rawpk_public_key1, &rawpk_private_key1, GNUTLS_KEY_KEY_ENCIPHERMENT, NULL, NULL, 0); - try_with_rawpk_key_fail - ("rawpk TLS 1.3 and TLS 1.2 with rsa encryption cert", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+CTYPE-RAWPK", - GNUTLS_E_SUCCESS, GNUTLS_E_SUCCESS, &rawpk_public_key1, - &rawpk_private_key1, GNUTLS_KEY_KEY_ENCIPHERMENT, NULL, NULL, 0); + try_with_rawpk_key_fail( + "rawpk TLS 1.3 and TLS 1.2 with rsa encryption cert", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+CTYPE-RAWPK", + GNUTLS_E_SUCCESS, GNUTLS_E_SUCCESS, &rawpk_public_key1, + &rawpk_private_key1, GNUTLS_KEY_KEY_ENCIPHERMENT, NULL, NULL, + 0); try_with_rawpk_key_fail("rawpk TLS 1.3 with client rsa encryption cert", "NORMAL:-VERS-ALL:+VERS-TLS1.3:+CTYPE-RAWPK", diff --git a/tests/tls13-cipher-neg.c b/tests/tls13-cipher-neg.c index f9be6f530c..d537538a34 100644 --- a/tests/tls13-cipher-neg.c +++ b/tests/tls13-cipher-neg.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* This program tests the ciphersuite negotiation for various key exchange @@ -45,157 +45,137 @@ test_case_st tests[] = { { - .name = "server TLS 1.3: NULL (server - exp fallback)", - .not_on_fips = 1, - .cipher = GNUTLS_CIPHER_NULL, - .server_prio = - SPRIO - ":+VERS-TLS1.2:-CIPHER-ALL:+NULL:+CIPHER-ALL:%SERVER_PRECEDENCE:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-ALL", - .client_prio = - CPRIO - ":+VERS-TLS1.2:+NULL:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-SECP384R1:+GROUP-SECP521R1:+GROUP-SECP256R1", - .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(NULL)-(SHA1)", - }, + .name = "server TLS 1.3: NULL (server - exp fallback)", + .not_on_fips = 1, + .cipher = GNUTLS_CIPHER_NULL, + .server_prio = SPRIO + ":+VERS-TLS1.2:-CIPHER-ALL:+NULL:+CIPHER-ALL:%SERVER_PRECEDENCE:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-ALL", + .client_prio = CPRIO + ":+VERS-TLS1.2:+NULL:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-SECP384R1:+GROUP-SECP521R1:+GROUP-SECP256R1", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(NULL)-(SHA1)", + }, { - .name = "client TLS 1.3: NULL (client)", - .not_on_fips = 1, - .cipher = GNUTLS_CIPHER_NULL, - .server_prio = - SPRIO - ":+VERS-TLS1.2:+NULL:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-SECP384R1:+GROUP-SECP521R1:+GROUP-SECP256R1", - .client_prio = - CPRIO - ":-CIPHER-ALL:+NULL:+CIPHER-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-ALL", - .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(NULL)-(SHA1)", - }, + .name = "client TLS 1.3: NULL (client)", + .not_on_fips = 1, + .cipher = GNUTLS_CIPHER_NULL, + .server_prio = SPRIO + ":+VERS-TLS1.2:+NULL:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-SECP384R1:+GROUP-SECP521R1:+GROUP-SECP256R1", + .client_prio = CPRIO + ":-CIPHER-ALL:+NULL:+CIPHER-ALL:+VERS-TLS1.2:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-ALL", + .desc = "(TLS1.2)-(ECDHE-SECP256R1)-(ECDSA-SHA256)-(NULL)-(SHA1)", + }, { - .name = "server TLS 1.3: AES-128-GCM with SECP256R1 (server)", - .cipher = GNUTLS_CIPHER_AES_128_GCM, - .group = GNUTLS_GROUP_SECP256R1, - .server_prio = - SPRIO - ":-CIPHER-ALL:+AES-128-GCM:+CIPHER-ALL:%SERVER_PRECEDENCE:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-ALL", - .client_prio = - CPRIO - ":+AES-128-GCM:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-SECP384R1:+GROUP-SECP521R1:+GROUP-SECP256R1", - .desc = - "(TLS1.3)-(ECDHE-SECP256R1)-(RSA-PSS-RSAE-SHA256)-(AES-128-GCM)", - }, + .name = "server TLS 1.3: AES-128-GCM with SECP256R1 (server)", + .cipher = GNUTLS_CIPHER_AES_128_GCM, + .group = GNUTLS_GROUP_SECP256R1, + .server_prio = SPRIO + ":-CIPHER-ALL:+AES-128-GCM:+CIPHER-ALL:%SERVER_PRECEDENCE:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-ALL", + .client_prio = CPRIO + ":+AES-128-GCM:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-SECP384R1:+GROUP-SECP521R1:+GROUP-SECP256R1", + .desc = "(TLS1.3)-(ECDHE-SECP256R1)-(RSA-PSS-RSAE-SHA256)-(AES-128-GCM)", + }, { - .name = "both TLS 1.3: AES-128-GCM with X25519 (server)", - .cipher = GNUTLS_CIPHER_AES_128_GCM, - .group = GNUTLS_GROUP_X25519, - .server_prio = - SPRIO - ":-CIPHER-ALL:+AES-128-GCM:+CIPHER-ALL:%SERVER_PRECEDENCE:-GROUP-ALL:+GROUP-X25519:+GROUP-ALL", - .client_prio = - CPRIO - ":+AES-128-GCM:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-SECP384R1:+GROUP-SECP521R1:+GROUP-SECP256R1:+GROUP-ALL", - .desc = "(TLS1.3)-(ECDHE-X25519)-(RSA-PSS-RSAE-SHA256)-(AES-128-GCM)", - }, + .name = "both TLS 1.3: AES-128-GCM with X25519 (server)", + .cipher = GNUTLS_CIPHER_AES_128_GCM, + .group = GNUTLS_GROUP_X25519, + .server_prio = SPRIO + ":-CIPHER-ALL:+AES-128-GCM:+CIPHER-ALL:%SERVER_PRECEDENCE:-GROUP-ALL:+GROUP-X25519:+GROUP-ALL", + .client_prio = CPRIO + ":+AES-128-GCM:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-SECP384R1:+GROUP-SECP521R1:+GROUP-SECP256R1:+GROUP-ALL", + .desc = "(TLS1.3)-(ECDHE-X25519)-(RSA-PSS-RSAE-SHA256)-(AES-128-GCM)", + }, { - .name = "client TLS 1.3: AES-128-GCM with SECP256R1 (client)", - .cipher = GNUTLS_CIPHER_AES_128_GCM, - .group = GNUTLS_GROUP_SECP256R1, - .server_prio = - SPRIO - ":+AES-128-GCM:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-SECP384R1:+GROUP-SECP521R1:+GROUP-SECP256R1", - .client_prio = - CPRIO - ":-CIPHER-ALL:+AES-128-GCM:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-ALL", - .desc = - "(TLS1.3)-(ECDHE-SECP256R1)-(RSA-PSS-RSAE-SHA256)-(AES-128-GCM)", - }, + .name = "client TLS 1.3: AES-128-GCM with SECP256R1 (client)", + .cipher = GNUTLS_CIPHER_AES_128_GCM, + .group = GNUTLS_GROUP_SECP256R1, + .server_prio = SPRIO + ":+AES-128-GCM:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-SECP384R1:+GROUP-SECP521R1:+GROUP-SECP256R1", + .client_prio = CPRIO + ":-CIPHER-ALL:+AES-128-GCM:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-ALL", + .desc = "(TLS1.3)-(ECDHE-SECP256R1)-(RSA-PSS-RSAE-SHA256)-(AES-128-GCM)", + }, { - .name = "both TLS 1.3: AES-128-GCM with X25519 (client)", - .cipher = GNUTLS_CIPHER_AES_128_GCM, - .group = GNUTLS_GROUP_X25519, - .server_prio = - SPRIO - ":+AES-128-GCM:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-SECP384R1:+GROUP-SECP521R1:+GROUP-SECP256R1:+GROUP-ALL", - .client_prio = - CPRIO - ":-CIPHER-ALL:+AES-128-GCM:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519:+GROUP-ALL", - .desc = "(TLS1.3)-(ECDHE-X25519)-(RSA-PSS-RSAE-SHA256)-(AES-128-GCM)", - }, + .name = "both TLS 1.3: AES-128-GCM with X25519 (client)", + .cipher = GNUTLS_CIPHER_AES_128_GCM, + .group = GNUTLS_GROUP_X25519, + .server_prio = SPRIO + ":+AES-128-GCM:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-SECP384R1:+GROUP-SECP521R1:+GROUP-SECP256R1:+GROUP-ALL", + .client_prio = CPRIO + ":-CIPHER-ALL:+AES-128-GCM:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519:+GROUP-ALL", + .desc = "(TLS1.3)-(ECDHE-X25519)-(RSA-PSS-RSAE-SHA256)-(AES-128-GCM)", + }, { - .name = "server TLS 1.3: AES-128-CCM and FFDHE2048 (server)", - .cipher = GNUTLS_CIPHER_AES_128_CCM, - .group = GNUTLS_GROUP_FFDHE2048, - .server_prio = - SPRIO - ":-CIPHER-ALL:+AES-128-CCM:+CIPHER-ALL:%SERVER_PRECEDENCE:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-ALL", - .client_prio = CPRIO ":+AES-128-CCM", - .desc = "(TLS1.3)-(DHE-FFDHE2048)-(RSA-PSS-RSAE-SHA256)-(AES-128-CCM)", - }, + .name = "server TLS 1.3: AES-128-CCM and FFDHE2048 (server)", + .cipher = GNUTLS_CIPHER_AES_128_CCM, + .group = GNUTLS_GROUP_FFDHE2048, + .server_prio = SPRIO + ":-CIPHER-ALL:+AES-128-CCM:+CIPHER-ALL:%SERVER_PRECEDENCE:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-ALL", + .client_prio = CPRIO ":+AES-128-CCM", + .desc = "(TLS1.3)-(DHE-FFDHE2048)-(RSA-PSS-RSAE-SHA256)-(AES-128-CCM)", + }, { - .name = "both TLS 1.3: AES-128-CCM and FFDHE 2048 (server)", - .cipher = GNUTLS_CIPHER_AES_128_CCM, - .group = GNUTLS_GROUP_FFDHE2048, - .server_prio = - SPRIO - ":-CIPHER-ALL:+AES-128-CCM:+CIPHER-ALL:%SERVER_PRECEDENCE:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-ALL", - .client_prio = CPRIO ":+AES-128-CCM:+VERS-TLS1.3", - .desc = "(TLS1.3)-(DHE-FFDHE2048)-(RSA-PSS-RSAE-SHA256)-(AES-128-CCM)", - }, + .name = "both TLS 1.3: AES-128-CCM and FFDHE 2048 (server)", + .cipher = GNUTLS_CIPHER_AES_128_CCM, + .group = GNUTLS_GROUP_FFDHE2048, + .server_prio = SPRIO + ":-CIPHER-ALL:+AES-128-CCM:+CIPHER-ALL:%SERVER_PRECEDENCE:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-ALL", + .client_prio = CPRIO ":+AES-128-CCM:+VERS-TLS1.3", + .desc = "(TLS1.3)-(DHE-FFDHE2048)-(RSA-PSS-RSAE-SHA256)-(AES-128-CCM)", + }, { - .name = "client TLS 1.3: AES-128-CCM and FFDHE 2048 (client)", - .cipher = GNUTLS_CIPHER_AES_128_CCM, - .group = GNUTLS_GROUP_FFDHE2048, - .server_prio = SPRIO ":+AES-128-CCM", - .client_prio = - CPRIO - ":-CIPHER-ALL:+AES-128-CCM:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-ALL", - .desc = "(TLS1.3)-(DHE-FFDHE2048)-(RSA-PSS-RSAE-SHA256)-(AES-128-CCM)", - }, + .name = "client TLS 1.3: AES-128-CCM and FFDHE 2048 (client)", + .cipher = GNUTLS_CIPHER_AES_128_CCM, + .group = GNUTLS_GROUP_FFDHE2048, + .server_prio = SPRIO ":+AES-128-CCM", + .client_prio = CPRIO + ":-CIPHER-ALL:+AES-128-CCM:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-ALL", + .desc = "(TLS1.3)-(DHE-FFDHE2048)-(RSA-PSS-RSAE-SHA256)-(AES-128-CCM)", + }, { - .name = "both TLS 1.3: AES-128-CCM and FFDHE 2048 (client)", - .cipher = GNUTLS_CIPHER_AES_128_CCM, - .group = GNUTLS_GROUP_FFDHE2048, - .server_prio = SPRIO ":+AES-128-CCM:+VERS-TLS1.3", - .client_prio = - CPRIO - ":-CIPHER-ALL:+AES-128-CCM:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-ALL", - .desc = "(TLS1.3)-(DHE-FFDHE2048)-(RSA-PSS-RSAE-SHA256)-(AES-128-CCM)", - }, + .name = "both TLS 1.3: AES-128-CCM and FFDHE 2048 (client)", + .cipher = GNUTLS_CIPHER_AES_128_CCM, + .group = GNUTLS_GROUP_FFDHE2048, + .server_prio = SPRIO ":+AES-128-CCM:+VERS-TLS1.3", + .client_prio = CPRIO + ":-CIPHER-ALL:+AES-128-CCM:+CIPHER-ALL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-FFDHE2048:+GROUP-ALL", + .desc = "(TLS1.3)-(DHE-FFDHE2048)-(RSA-PSS-RSAE-SHA256)-(AES-128-CCM)", + }, { - .name = "server TLS 1.3: CHACHA20-POLY (server)", - .cipher = GNUTLS_CIPHER_CHACHA20_POLY1305, - .not_on_fips = 1, - .server_prio = - SPRIO ":-CIPHER-ALL:+CHACHA20-POLY1305:+CIPHER-ALL:%SERVER_PRECEDENCE", - .client_prio = CPRIO ":+CHACHA20-POLY1305", - .desc = - "(TLS1.3)-(ECDHE-SECP256R1)-(RSA-PSS-RSAE-SHA256)-(CHACHA20-POLY1305)", - }, + .name = "server TLS 1.3: CHACHA20-POLY (server)", + .cipher = GNUTLS_CIPHER_CHACHA20_POLY1305, + .not_on_fips = 1, + .server_prio = SPRIO + ":-CIPHER-ALL:+CHACHA20-POLY1305:+CIPHER-ALL:%SERVER_PRECEDENCE", + .client_prio = CPRIO ":+CHACHA20-POLY1305", + .desc = "(TLS1.3)-(ECDHE-SECP256R1)-(RSA-PSS-RSAE-SHA256)-(CHACHA20-POLY1305)", + }, { - .name = "both TLS 1.3: CHACHA20-POLY (server)", - .cipher = GNUTLS_CIPHER_CHACHA20_POLY1305, - .not_on_fips = 1, - .server_prio = - SPRIO ":-CIPHER-ALL:+CHACHA20-POLY1305:+CIPHER-ALL:%SERVER_PRECEDENCE", - .client_prio = CPRIO ":+CHACHA20-POLY1305:+VERS-TLS1.3", - .desc = - "(TLS1.3)-(ECDHE-SECP256R1)-(RSA-PSS-RSAE-SHA256)-(CHACHA20-POLY1305)", - }, + .name = "both TLS 1.3: CHACHA20-POLY (server)", + .cipher = GNUTLS_CIPHER_CHACHA20_POLY1305, + .not_on_fips = 1, + .server_prio = SPRIO + ":-CIPHER-ALL:+CHACHA20-POLY1305:+CIPHER-ALL:%SERVER_PRECEDENCE", + .client_prio = CPRIO ":+CHACHA20-POLY1305:+VERS-TLS1.3", + .desc = "(TLS1.3)-(ECDHE-SECP256R1)-(RSA-PSS-RSAE-SHA256)-(CHACHA20-POLY1305)", + }, { - .name = "client TLS 1.3: CHACHA20-POLY (client)", - .cipher = GNUTLS_CIPHER_CHACHA20_POLY1305, - .not_on_fips = 1, - .server_prio = SPRIO ":+CHACHA20-POLY1305", - .client_prio = CPRIO ":-CIPHER-ALL:+CHACHA20-POLY1305:+CIPHER-ALL", - .desc = - "(TLS1.3)-(ECDHE-SECP256R1)-(RSA-PSS-RSAE-SHA256)-(CHACHA20-POLY1305)", - }, + .name = "client TLS 1.3: CHACHA20-POLY (client)", + .cipher = GNUTLS_CIPHER_CHACHA20_POLY1305, + .not_on_fips = 1, + .server_prio = SPRIO ":+CHACHA20-POLY1305", + .client_prio = CPRIO + ":-CIPHER-ALL:+CHACHA20-POLY1305:+CIPHER-ALL", + .desc = "(TLS1.3)-(ECDHE-SECP256R1)-(RSA-PSS-RSAE-SHA256)-(CHACHA20-POLY1305)", + }, { - .name = "both TLS 1.3: CHACHA20-POLY (client)", - .cipher = GNUTLS_CIPHER_CHACHA20_POLY1305, - .not_on_fips = 1, - .server_prio = SPRIO ":+CHACHA20-POLY1305", - .client_prio = CPRIO ":-CIPHER-ALL:+CHACHA20-POLY1305:+CIPHER-ALL", - .desc = - "(TLS1.3)-(ECDHE-SECP256R1)-(RSA-PSS-RSAE-SHA256)-(CHACHA20-POLY1305)", - } + .name = "both TLS 1.3: CHACHA20-POLY (client)", + .cipher = GNUTLS_CIPHER_CHACHA20_POLY1305, + .not_on_fips = 1, + .server_prio = SPRIO ":+CHACHA20-POLY1305", + .client_prio = CPRIO + ":-CIPHER-ALL:+CHACHA20-POLY1305:+CIPHER-ALL", + .desc = "(TLS1.3)-(ECDHE-SECP256R1)-(RSA-PSS-RSAE-SHA256)-(CHACHA20-POLY1305)", + } }; void doit(void) diff --git a/tests/tls13-compat-mode.c b/tests/tls13-compat-mode.c index ec391e17dc..f5b18b30b7 100644 --- a/tests/tls13-compat-mode.c +++ b/tests/tls13-compat-mode.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -44,10 +44,9 @@ struct data { bool compat; }; -static int -handshake_callback(gnutls_session_t session, unsigned int htype, - unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) +static int handshake_callback(gnutls_session_t session, unsigned int htype, + unsigned post, unsigned int incoming, + const gnutls_datum_t *msg) { unsigned pos; struct data *data; @@ -88,16 +87,15 @@ static void test(const char *name, bool client_compat, bool server_compat) /* Init server */ assert(gnutls_certificate_allocate_credentials(&serverx509cred) >= 0); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); assert(gnutls_init(&server, GNUTLS_SERVER) >= 0); - assert(gnutls_credentials_set - (server, GNUTLS_CRD_CERTIFICATE, serverx509cred) >= 0); - assert(gnutls_priority_set_direct - (server, server_compat ? COMPAT_PRIO : NO_COMPAT_PRIO, - NULL) >= 0); + assert(gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, + serverx509cred) >= 0); + assert(gnutls_priority_set_direct( + server, server_compat ? COMPAT_PRIO : NO_COMPAT_PRIO, + NULL) >= 0); gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); gnutls_transport_set_ptr(server, server); @@ -108,10 +106,9 @@ static void test(const char *name, bool client_compat, bool server_compat) assert(gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, clientx509cred) >= 0); - assert(gnutls_priority_set_direct(client, - client_compat ? - COMPAT_PRIO : NO_COMPAT_PRIO, - NULL) >= 0); + assert(gnutls_priority_set_direct( + client, client_compat ? COMPAT_PRIO : NO_COMPAT_PRIO, + NULL) >= 0); gnutls_transport_set_push_function(client, client_push); gnutls_transport_set_pull_function(client, client_pull); gnutls_transport_set_ptr(client, client); diff --git a/tests/tls13-early-data-neg.c b/tests/tls13-early-data-neg.c index 0312bbab8b..7492bfe112 100644 --- a/tests/tls13-early-data-neg.c +++ b/tests/tls13-early-data-neg.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,23 +35,23 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "cert-common.h" -# include "utils.h" -# include "virt-time.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cert-common.h" +#include "utils.h" +#include "virt-time.h" /* This program tests the robustness of record sending with padding. */ @@ -66,22 +66,21 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define SESSIONS 3 -# define MAX_BUF 1024 -# define MSG "Hello TLS" -# define EARLY_MSG "Hello TLS, it's early" -# define PRIORITY "NORMAL:-VERS-ALL:+VERS-TLS1.3" +#define SESSIONS 3 +#define MAX_BUF 1024 +#define MSG "Hello TLS" +#define EARLY_MSG "Hello TLS, it's early" +#define PRIORITY "NORMAL:-VERS-ALL:+VERS-TLS1.3" -static const -gnutls_datum_t hrnd = { (void *) - "\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", +static const gnutls_datum_t hrnd = { + (void *)"\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 32 }; static int gnutls_rnd_works; int __attribute__((visibility("protected"))) - gnutls_rnd(gnutls_rnd_level_t level, void *data, size_t len) +gnutls_rnd(gnutls_rnd_level_t level, void *data, size_t len) { gnutls_rnd_works = 1; @@ -98,7 +97,7 @@ gnutls_datum_t client_hello_msg = { NULL, 0 }; static int handshake_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { assert(client_hello_msg.data == NULL); @@ -155,18 +154,18 @@ static void client(int sds[]) gnutls_transport_set_int(session, sd); if (t > 0) { - assert(gnutls_session_set_data - (session, session_data.data, - session_data.size) >= 0); - assert(gnutls_record_send_early_data - (session, EARLY_MSG, sizeof(EARLY_MSG)) >= 0); + assert(gnutls_session_set_data(session, + session_data.data, + session_data.size) >= 0); + assert(gnutls_record_send_early_data( + session, EARLY_MSG, sizeof(EARLY_MSG)) >= + 0); assert(gnutls_handshake_set_random(session, &hrnd) >= 0); - gnutls_handshake_set_hook_function(session, - GNUTLS_HANDSHAKE_CLIENT_HELLO, - GNUTLS_HOOK_POST, - handshake_callback); + gnutls_handshake_set_hook_function( + session, GNUTLS_HANDSHAKE_CLIENT_HELLO, + GNUTLS_HOOK_POST, handshake_callback); } /* Perform the TLS handshake @@ -174,8 +173,7 @@ static void client(int sds[]) gnutls_handshake_set_timeout(session, get_timeout()); do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed\n"); @@ -203,13 +201,12 @@ static void client(int sds[]) gnutls_record_send(session, MSG, strlen(MSG)); do { - ret = - gnutls_record_recv(session, buffer, sizeof(buffer)); + ret = gnutls_record_recv(session, buffer, + sizeof(buffer)); } while (ret == GNUTLS_E_AGAIN); if (ret == 0) { if (debug) - success - ("client: Peer has closed the TLS connection\n"); + success("client: Peer has closed the TLS connection\n"); goto end; } else if (ret < 0) { fail("client: Error: %s\n", gnutls_strerror(ret)); @@ -225,12 +222,11 @@ static void client(int sds[]) assert(client_hello_msg.data != NULL); - ret = - send(sds[SESSIONS - 1], client_hello_msg.data, - client_hello_msg.size, 0); + ret = send(sds[SESSIONS - 1], client_hello_msg.data, + client_hello_msg.size, 0); assert(ret == (int)client_hello_msg.size); - end: +end: gnutls_free(client_hello_msg.data); gnutls_free(session_data.data); gnutls_certificate_free_credentials(x509_cred); @@ -238,16 +234,15 @@ static void client(int sds[]) static pid_t child; -# define MAX_CLIENT_HELLO_RECORDED 10 +#define MAX_CLIENT_HELLO_RECORDED 10 struct storage_st { gnutls_datum_t entries[MAX_CLIENT_HELLO_RECORDED]; size_t num_entries; }; -static int -storage_add(void *ptr, time_t expires, const gnutls_datum_t * key, - const gnutls_datum_t * value) +static int storage_add(void *ptr, time_t expires, const gnutls_datum_t *key, + const gnutls_datum_t *value) { struct storage_st *storage = ptr; gnutls_datum_t *datum; @@ -255,8 +250,8 @@ storage_add(void *ptr, time_t expires, const gnutls_datum_t * key, for (i = 0; i < storage->num_entries; i++) { if (key->size == storage->entries[i].size && - memcmp(storage->entries[i].data, key->data, - key->size) == 0) { + memcmp(storage->entries[i].data, key->data, key->size) == + 0) { return GNUTLS_E_DB_ENTRY_EXISTS; } } @@ -327,9 +322,9 @@ static void server(int sds[]) success("=== session %d ===\n", t); - assert(gnutls_init - (&session, - GNUTLS_SERVER | GNUTLS_ENABLE_EARLY_DATA) >= 0); + assert(gnutls_init(&session, + GNUTLS_SERVER | GNUTLS_ENABLE_EARLY_DATA) >= + 0); assert(gnutls_priority_set_direct(session, PRIORITY, NULL) >= 0); @@ -350,23 +345,23 @@ static void server(int sds[]) if (t == SESSIONS - 1) { /* duplicate data expected */ - if (ret < 0 - && !(gnutls_session_get_flags(session) & - GNUTLS_SFLAGS_EARLY_DATA)) { + if (ret < 0 && !(gnutls_session_get_flags(session) & + GNUTLS_SFLAGS_EARLY_DATA)) { success("we detected the duplicate data!\n"); close(sd); gnutls_deinit(session); goto cleanup; } else { - fail("server: duplicate early data was not detected (%d)\n", t); + fail("server: duplicate early data was not detected (%d)\n", + t); } } if (ret < 0) { close(sd); gnutls_deinit(session); - fail("server[%d]: Handshake has failed (%s)\n\n", - t, gnutls_strerror(ret)); + fail("server[%d]: Handshake has failed (%s)\n\n", t, + gnutls_strerror(ret)); return; } if (debug) @@ -382,39 +377,36 @@ static void server(int sds[]) * early data only on the first resumption */ if (t == 1) { if (gnutls_rnd_works) { - if (! - (gnutls_session_get_flags(session) & - GNUTLS_SFLAGS_EARLY_DATA)) { - fail("server: early data is not received (%d)\n", t); + if (!(gnutls_session_get_flags(session) & + GNUTLS_SFLAGS_EARLY_DATA)) { + fail("server: early data is not received (%d)\n", + t); } } else { - success - ("server: gnutls_rnd() could not be overridden, skip checking replay (%d)\n", - t); + success("server: gnutls_rnd() could not be overridden, skip checking replay (%d)\n", + t); } - ret = - gnutls_record_recv_early_data(session, - buffer, - sizeof - (buffer)); + ret = gnutls_record_recv_early_data( + session, buffer, sizeof(buffer)); if (ret < 0) { - fail("server: failed to retrieve early data: %s\n", gnutls_strerror(ret)); + fail("server: failed to retrieve early data: %s\n", + gnutls_strerror(ret)); } - if (ret != sizeof(EARLY_MSG) - || memcmp(buffer, EARLY_MSG, ret)) + if (ret != sizeof(EARLY_MSG) || + memcmp(buffer, EARLY_MSG, ret)) fail("server: early data mismatch\n"); } else { if (gnutls_rnd_works) { if (gnutls_session_get_flags(session) & GNUTLS_SFLAGS_EARLY_DATA) { - fail("server: early data is not rejected (%d)\n", t); + fail("server: early data is not rejected (%d)\n", + t); } } else { - success - ("server: gnutls_rnd() could not be overridden, skip checking replay (%d)\n", - t); + success("server: gnutls_rnd() could not be overridden, skip checking replay (%d)\n", + t); } } } @@ -425,12 +417,12 @@ static void server(int sds[]) if (ret == 0) { if (debug) - success - ("server: Peer has closed the GnuTLS connection\n"); + success("server: Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0) { kill(child, SIGTERM); - fail("server: Received corrupted data(%d). Closing...\n", ret); + fail("server: Received corrupted data(%d). Closing...\n", + ret); break; } else if (ret > 0) { /* echo data back to the client @@ -448,7 +440,7 @@ static void server(int sds[]) gnutls_deinit(session); } - cleanup: +cleanup: gnutls_anti_replay_deinit(anti_replay); storage_clear(&storage); @@ -505,4 +497,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls13-early-data-neg2.c b/tests/tls13-early-data-neg2.c index ea71a3d36c..0c5232faf6 100644 --- a/tests/tls13-early-data-neg2.c +++ b/tests/tls13-early-data-neg2.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,23 +35,23 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "cert-common.h" -# include "utils.h" -# include "virt-time.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cert-common.h" +#include "utils.h" +#include "virt-time.h" /* This program checks that early data is refused upon resumption failure. */ @@ -66,11 +66,11 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define SESSIONS 2 -# define MAX_BUF 1024 -# define MSG "Hello TLS" -# define EARLY_MSG "Hello TLS, it's early" -# define PRIORITY "NORMAL:-VERS-ALL:+VERS-TLS1.3" +#define SESSIONS 2 +#define MAX_BUF 1024 +#define MSG "Hello TLS" +#define EARLY_MSG "Hello TLS, it's early" +#define PRIORITY "NORMAL:-VERS-ALL:+VERS-TLS1.3" static void client(int sds[]) { @@ -106,11 +106,12 @@ static void client(int sds[]) gnutls_transport_set_int(session, sd); if (t > 0) { - assert(gnutls_session_set_data - (session, session_data.data, - session_data.size) >= 0); - assert(gnutls_record_send_early_data - (session, EARLY_MSG, sizeof(EARLY_MSG)) >= 0); + assert(gnutls_session_set_data(session, + session_data.data, + session_data.size) >= 0); + assert(gnutls_record_send_early_data( + session, EARLY_MSG, sizeof(EARLY_MSG)) >= + 0); } /* Perform the TLS handshake @@ -118,8 +119,7 @@ static void client(int sds[]) gnutls_handshake_set_timeout(session, get_timeout()); do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed: %s\n", @@ -143,13 +143,12 @@ static void client(int sds[]) gnutls_record_send(session, MSG, strlen(MSG)); do { - ret = - gnutls_record_recv(session, buffer, sizeof(buffer)); + ret = gnutls_record_recv(session, buffer, + sizeof(buffer)); } while (ret == GNUTLS_E_AGAIN); if (ret == 0) { if (debug) - success - ("client: Peer has closed the TLS connection\n"); + success("client: Peer has closed the TLS connection\n"); goto end; } else if (ret < 0) { fail("client: Error: %s\n", gnutls_strerror(ret)); @@ -162,23 +161,22 @@ static void client(int sds[]) gnutls_deinit(session); } - end: +end: gnutls_free(session_data.data); gnutls_certificate_free_credentials(x509_cred); } static pid_t child; -# define MAX_CLIENT_HELLO_RECORDED 10 +#define MAX_CLIENT_HELLO_RECORDED 10 struct storage_st { gnutls_datum_t entries[MAX_CLIENT_HELLO_RECORDED]; size_t num_entries; }; -static int -storage_add(void *ptr, time_t expires, const gnutls_datum_t * key, - const gnutls_datum_t * value) +static int storage_add(void *ptr, time_t expires, const gnutls_datum_t *key, + const gnutls_datum_t *value) { struct storage_st *storage = ptr; gnutls_datum_t *datum; @@ -186,8 +184,8 @@ storage_add(void *ptr, time_t expires, const gnutls_datum_t * key, for (i = 0; i < storage->num_entries; i++) { if (key->size == storage->entries[i].size && - memcmp(storage->entries[i].data, key->data, - key->size) == 0) { + memcmp(storage->entries[i].data, key->data, key->size) == + 0) { return GNUTLS_E_DB_ENTRY_EXISTS; } } @@ -256,9 +254,9 @@ static void server(int sds[]) success("=== session %d ===\n", t); - assert(gnutls_init - (&session, - GNUTLS_SERVER | GNUTLS_ENABLE_EARLY_DATA) >= 0); + assert(gnutls_init(&session, + GNUTLS_SERVER | GNUTLS_ENABLE_EARLY_DATA) >= + 0); assert(gnutls_priority_set_direct(session, PRIORITY, NULL) >= 0); @@ -283,8 +281,8 @@ static void server(int sds[]) if (ret < 0) { gnutls_deinit(session); - fail("server[%d]: Handshake has failed (%s)\n\n", - t, gnutls_strerror(ret)); + fail("server[%d]: Handshake has failed (%s)\n\n", t, + gnutls_strerror(ret)); } if (debug) success("server: Handshake was completed\n"); @@ -305,12 +303,12 @@ static void server(int sds[]) if (ret == 0) { if (debug) - success - ("server: Peer has closed the GnuTLS connection\n"); + success("server: Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0) { kill(child, SIGTERM); - fail("server: Received corrupted data(%d). Closing...\n", ret); + fail("server: Received corrupted data(%d). Closing...\n", + ret); } else if (ret > 0) { /* echo data back to the client */ @@ -383,4 +381,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls13-early-data.c b/tests/tls13-early-data.c index 0676dc2002..8768d33ee2 100644 --- a/tests/tls13-early-data.c +++ b/tests/tls13-early-data.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -36,31 +36,31 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "cert-common.h" -# include "utils.h" -# include "virt-time.h" -# define MIN(x,y) (((x)<(y))?(x):(y)) - -# define TRACE_CLIENT 1 -# define TRACE_SERVER 2 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cert-common.h" +#include "utils.h" +#include "virt-time.h" +#define MIN(x, y) (((x) < (y)) ? (x) : (y)) + +#define TRACE_CLIENT 1 +#define TRACE_SERVER 2 /* To reproduce the entries in {client,server}-secrets.h, set this to * either TRACE_CLIENT or TRACE_SERVER. */ -# define TRACE 0 +#define TRACE 0 /* This program tests the robustness of record sending with padding. */ @@ -78,9 +78,9 @@ static void client_log_func(int level, const char *str) /* A very basic TLS client. */ -# define MAX_BUF 1024 -# define MSG "Hello TLS" -# define EARLY_MSG "Hello TLS, it's early" +#define MAX_BUF 1024 +#define MSG "Hello TLS" +#define EARLY_MSG "Hello TLS, it's early" extern unsigned int _gnutls_global_version; @@ -90,26 +90,26 @@ extern unsigned int _gnutls_global_version; * is to check that the early data is encrypted with the ciphersuite * selected during the initial handshake, not the resuming handshakes. */ -# define SESSIONS 3 -# define TLS13_AES_128_GCM "NONE:+VERS-TLS1.3:+AES-128-GCM:+AEAD:+SIGN-RSA-PSS-RSAE-SHA384:+GROUP-SECP256R1:%NO_SHUFFLE_EXTENSIONS" -# define TLS13_CHACHA20_POLY1305 "NONE:+VERS-TLS1.3:+CHACHA20-POLY1305:+AEAD:+SIGN-RSA-PSS-RSAE-SHA384:+GROUP-SECP256R1:%NO_SHUFFLE_EXTENSIONS" - -static const -gnutls_datum_t hrnd = { (void *) - "\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", +#define SESSIONS 3 +#define TLS13_AES_128_GCM \ + "NONE:+VERS-TLS1.3:+AES-128-GCM:+AEAD:+SIGN-RSA-PSS-RSAE-SHA384:+GROUP-SECP256R1:%NO_SHUFFLE_EXTENSIONS" +#define TLS13_CHACHA20_POLY1305 \ + "NONE:+VERS-TLS1.3:+CHACHA20-POLY1305:+AEAD:+SIGN-RSA-PSS-RSAE-SHA384:+GROUP-SECP256R1:%NO_SHUFFLE_EXTENSIONS" + +static const gnutls_datum_t hrnd = { + (void *)"\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 32 }; -static const -gnutls_datum_t hsrnd = { (void *) - "\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", +static const gnutls_datum_t hsrnd = { + (void *)"\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 32 }; static int gnutls_rnd_works; int __attribute__((visibility("protected"))) - gnutls_rnd(gnutls_rnd_level_t level, void *data, size_t len) +gnutls_rnd(gnutls_rnd_level_t level, void *data, size_t len) { gnutls_rnd_works = 1; @@ -122,8 +122,8 @@ int __attribute__((visibility("protected"))) return 0; } -# define MAX_SECRET_SIZE 64 -# define MAX_SECRET_COUNT 10 +#define MAX_SECRET_SIZE 64 +#define MAX_SECRET_COUNT 10 struct secret { gnutls_record_encryption_level_t level; @@ -134,62 +134,62 @@ struct secret { uint8_t secret_write_buf[MAX_SECRET_SIZE]; }; -# include "client-secrets.h" -# include "server-secrets.h" +#include "client-secrets.h" +#include "server-secrets.h" struct secrets_expected { const struct secret *secrets; size_t count; }; -# define SIZEOF(array) (sizeof(array) / sizeof(array[0])) +#define SIZEOF(array) (sizeof(array) / sizeof(array[0])) static const struct secrets_expected client_normal[SESSIONS] = { - {client_normal_0, SIZEOF(client_normal_0)}, - {client_normal_1, SIZEOF(client_normal_1)}, - {client_normal_2, SIZEOF(client_normal_2)}, + { client_normal_0, SIZEOF(client_normal_0) }, + { client_normal_1, SIZEOF(client_normal_1) }, + { client_normal_2, SIZEOF(client_normal_2) }, }; static const struct secrets_expected client_small[SESSIONS] = { - {client_small_0, SIZEOF(client_small_0)}, - {client_small_1, SIZEOF(client_small_1)}, - {client_small_2, SIZEOF(client_small_2)}, + { client_small_0, SIZEOF(client_small_0) }, + { client_small_1, SIZEOF(client_small_1) }, + { client_small_2, SIZEOF(client_small_2) }, }; static const struct secrets_expected client_empty[SESSIONS] = { - {client_empty_0, SIZEOF(client_empty_0)}, - {client_empty_1, SIZEOF(client_empty_1)}, - {client_empty_2, SIZEOF(client_empty_2)}, + { client_empty_0, SIZEOF(client_empty_0) }, + { client_empty_1, SIZEOF(client_empty_1) }, + { client_empty_2, SIZEOF(client_empty_2) }, }; static const struct secrets_expected client_explicit[SESSIONS] = { - {client_explicit_0, SIZEOF(client_explicit_0)}, - {client_explicit_1, SIZEOF(client_explicit_1)}, - {client_explicit_2, SIZEOF(client_explicit_2)}, + { client_explicit_0, SIZEOF(client_explicit_0) }, + { client_explicit_1, SIZEOF(client_explicit_1) }, + { client_explicit_2, SIZEOF(client_explicit_2) }, }; static const struct secrets_expected server_normal[SESSIONS] = { - {server_normal_0, SIZEOF(server_normal_0)}, - {server_normal_1, SIZEOF(server_normal_1)}, - {server_normal_2, SIZEOF(server_normal_2)}, + { server_normal_0, SIZEOF(server_normal_0) }, + { server_normal_1, SIZEOF(server_normal_1) }, + { server_normal_2, SIZEOF(server_normal_2) }, }; static const struct secrets_expected server_small[SESSIONS] = { - {server_small_0, SIZEOF(server_small_0)}, - {server_small_1, SIZEOF(server_small_1)}, - {server_small_2, SIZEOF(server_small_2)}, + { server_small_0, SIZEOF(server_small_0) }, + { server_small_1, SIZEOF(server_small_1) }, + { server_small_2, SIZEOF(server_small_2) }, }; static const struct secrets_expected server_empty[SESSIONS] = { - {server_empty_0, SIZEOF(server_empty_0)}, - {server_empty_1, SIZEOF(server_empty_1)}, - {server_empty_2, SIZEOF(server_empty_2)}, + { server_empty_0, SIZEOF(server_empty_0) }, + { server_empty_1, SIZEOF(server_empty_1) }, + { server_empty_2, SIZEOF(server_empty_2) }, }; static const struct secrets_expected server_explicit[SESSIONS] = { - {server_explicit_0, SIZEOF(server_explicit_0)}, - {server_explicit_1, SIZEOF(server_explicit_1)}, - {server_explicit_2, SIZEOF(server_explicit_2)}, + { server_explicit_0, SIZEOF(server_explicit_0) }, + { server_explicit_1, SIZEOF(server_explicit_1) }, + { server_explicit_2, SIZEOF(server_explicit_2) }, }; struct fixture { @@ -205,49 +205,49 @@ struct fixture { static const struct fixture fixtures[] = { { - .name = "normal", - .cflags = 0, - .sflags = 0, - .early_data = {(uint8_t *) EARLY_MSG, sizeof(EARLY_MSG)}, - .max_early_data_size = MAX_BUF, - .expect_early_data = true, - .client_secrets = client_normal, - .server_secrets = server_normal, - }, + .name = "normal", + .cflags = 0, + .sflags = 0, + .early_data = { (uint8_t *)EARLY_MSG, sizeof(EARLY_MSG) }, + .max_early_data_size = MAX_BUF, + .expect_early_data = true, + .client_secrets = client_normal, + .server_secrets = server_normal, + }, { - .name = "small", - .cflags = 0, - .sflags = 0, - .early_data = {(uint8_t *) EARLY_MSG, sizeof(EARLY_MSG)}, - .max_early_data_size = 10, - .expect_early_data = true, - .client_secrets = client_small, - .server_secrets = server_small, - }, + .name = "small", + .cflags = 0, + .sflags = 0, + .early_data = { (uint8_t *)EARLY_MSG, sizeof(EARLY_MSG) }, + .max_early_data_size = 10, + .expect_early_data = true, + .client_secrets = client_small, + .server_secrets = server_small, + }, { - .name = "empty", - .cflags = 0, - .sflags = 0, - .early_data = {NULL, 0}, - .max_early_data_size = MAX_BUF, - .expect_early_data = false, - .client_secrets = client_empty, - .server_secrets = server_empty, - }, + .name = "empty", + .cflags = 0, + .sflags = 0, + .early_data = { NULL, 0 }, + .max_early_data_size = MAX_BUF, + .expect_early_data = false, + .client_secrets = client_empty, + .server_secrets = server_empty, + }, { - .name = "explicit", - .cflags = GNUTLS_ENABLE_EARLY_DATA, - .sflags = 0, - .early_data = {NULL, 0}, - .max_early_data_size = MAX_BUF, - .expect_early_data = false, - .client_secrets = client_explicit, - .server_secrets = server_explicit, - }, + .name = "explicit", + .cflags = GNUTLS_ENABLE_EARLY_DATA, + .sflags = 0, + .early_data = { NULL, 0 }, + .max_early_data_size = MAX_BUF, + .expect_early_data = false, + .client_secrets = client_explicit, + .server_secrets = server_explicit, + }, }; -# if TRACE -static void print_secret(FILE * out, struct secret *secret) +#if TRACE +static void print_secret(FILE *out, struct secret *secret) { const char *level; @@ -291,14 +291,13 @@ static void print_secret(FILE * out, struct secret *secret) } } -static void -print_secrets(FILE * out, const char *side, const char *name, int t, - struct secret *secrets, size_t count) +static void print_secrets(FILE *out, const char *side, const char *name, int t, + struct secret *secrets, size_t count) { size_t i; - fprintf(out, "static const struct secret %s_%s_%d[] = {\n", - side, name, t); + fprintf(out, "static const struct secret %s_%s_%d[] = {\n", side, name, + t); for (i = 0; i < count; i++) { fputs("\t{\n", out); print_secret(out, &secrets[i]); @@ -306,17 +305,16 @@ print_secrets(FILE * out, const char *side, const char *name, int t, } fputs("};\n\n", out); } -# endif +#endif -static void -check_secrets(const struct secret *secrets, size_t count, - const struct secrets_expected *expected) +static void check_secrets(const struct secret *secrets, size_t count, + const struct secrets_expected *expected) { size_t i; if (count != expected->count) { - fail("unexpected number of secrets: %zu != %zu\n", - count, expected->count); + fail("unexpected number of secrets: %zu != %zu\n", count, + expected->count); } for (i = 0; i < count; i++) { @@ -324,7 +322,8 @@ check_secrets(const struct secret *secrets, size_t count, fail("unexpected secret level: %d != %d\n", secrets[i].level, expected->secrets[i].level); } - if (secrets[i].secret_size != expected->secrets[i].secret_size) { + if (secrets[i].secret_size != + expected->secrets[i].secret_size) { fail("unexpected secret size: %zu != %zu\n", secrets[i].secret_size, expected->secrets[i].secret_size); @@ -362,11 +361,10 @@ struct callback_data { struct secret secrets[MAX_SECRET_COUNT]; }; -static int -secret_callback(gnutls_session_t session, - gnutls_record_encryption_level_t level, - const void *secret_read, - const void *secret_write, size_t secret_size) +static int secret_callback(gnutls_session_t session, + gnutls_record_encryption_level_t level, + const void *secret_read, const void *secret_write, + size_t secret_size) { struct callback_data *data = gnutls_session_get_ptr(session); struct secret *secret = &data->secrets[data->secret_callback_called]; @@ -382,12 +380,17 @@ secret_callback(gnutls_session_t session, cipher_algo = gnutls_early_cipher_get(session); if (cipher_algo != GNUTLS_CIPHER_AES_128_GCM) { - fail("unexpected cipher used for early data: %s != %s\n", gnutls_cipher_get_name(cipher_algo), gnutls_cipher_get_name(GNUTLS_CIPHER_AES_128_GCM)); + fail("unexpected cipher used for early data: %s != %s\n", + gnutls_cipher_get_name(cipher_algo), + gnutls_cipher_get_name( + GNUTLS_CIPHER_AES_128_GCM)); } digest_algo = gnutls_early_prf_hash_get(session); if (digest_algo != GNUTLS_DIG_SHA256) { - fail("unexpected PRF hash used for early data: %s != %s\n", gnutls_digest_get_name(digest_algo), gnutls_digest_get_name(GNUTLS_DIG_SHA256)); + fail("unexpected PRF hash used for early data: %s != %s\n", + gnutls_digest_get_name(digest_algo), + gnutls_digest_get_name(GNUTLS_DIG_SHA256)); } } } @@ -442,10 +445,11 @@ static void client(int sds[], const struct fixture *fixture) assert(gnutls_init(&session, GNUTLS_CLIENT | fixture->cflags) >= 0); - assert(gnutls_priority_set_direct - (session, - t == 0 ? TLS13_AES_128_GCM : TLS13_CHACHA20_POLY1305, - NULL) >= 0); + assert(gnutls_priority_set_direct( + session, + t == 0 ? TLS13_AES_128_GCM : + TLS13_CHACHA20_POLY1305, + NULL) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -459,20 +463,20 @@ static void client(int sds[], const struct fixture *fixture) gnutls_handshake_set_secret_function(session, secret_callback); if (t > 0) { - assert(gnutls_session_set_data - (session, session_data.data, - session_data.size) >= 0); + assert(gnutls_session_set_data(session, + session_data.data, + session_data.size) >= 0); /* The server should have advertised the same maximum. */ if (gnutls_record_get_max_early_data_size(session) != fixture->max_early_data_size) - fail("client: max_early_data_size mismatch %d != %d\n", (int)gnutls_record_get_max_early_data_size(session), (int)fixture->max_early_data_size); - assert(gnutls_record_send_early_data(session, - fixture->early_data. - data, - MIN - (fixture->early_data.size, - fixture->max_early_data_size)) - >= 0); + fail("client: max_early_data_size mismatch %d != %d\n", + (int)gnutls_record_get_max_early_data_size( + session), + (int)fixture->max_early_data_size); + assert(gnutls_record_send_early_data( + session, fixture->early_data.data, + MIN(fixture->early_data.size, + fixture->max_early_data_size)) >= 0); } /* Perform the TLS handshake @@ -480,8 +484,7 @@ static void client(int sds[], const struct fixture *fixture) gnutls_handshake_set_timeout(session, get_timeout()); do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed: %s\n", @@ -492,14 +495,13 @@ static void client(int sds[], const struct fixture *fixture) } if (!gnutls_rnd_works) { - success - ("client: gnutls_rnd() could not be overridden\n"); + success("client: gnutls_rnd() could not be overridden\n"); } else { -# if TRACE == TRACE_CLIENT +#if TRACE == TRACE_CLIENT print_secrets(stderr, "client", fixture->name, t, callback_data.secrets, callback_data.secret_callback_called); -# endif +#endif check_secrets(callback_data.secrets, callback_data.secret_callback_called, &fixture->client_secrets[t]); @@ -529,13 +531,12 @@ static void client(int sds[], const struct fixture *fixture) gnutls_record_send(session, MSG, strlen(MSG)); do { - ret = - gnutls_record_recv(session, buffer, sizeof(buffer)); + ret = gnutls_record_recv(session, buffer, + sizeof(buffer)); } while (ret == GNUTLS_E_AGAIN); if (ret == 0) { if (debug) - success - ("client: Peer has closed the TLS connection\n"); + success("client: Peer has closed the TLS connection\n"); goto end; } else if (ret < 0) { fail("client: Error: %s\n", gnutls_strerror(ret)); @@ -548,7 +549,7 @@ static void client(int sds[], const struct fixture *fixture) gnutls_deinit(session); } - end: +end: gnutls_free(session_data.data); gnutls_certificate_free_credentials(x509_cred); @@ -557,16 +558,15 @@ static void client(int sds[], const struct fixture *fixture) static pid_t child; -# define MAX_CLIENT_HELLO_RECORDED 10 +#define MAX_CLIENT_HELLO_RECORDED 10 struct storage_st { gnutls_datum_t entries[MAX_CLIENT_HELLO_RECORDED]; size_t num_entries; }; -static int -storage_add(void *ptr, time_t expires, const gnutls_datum_t * key, - const gnutls_datum_t * value) +static int storage_add(void *ptr, time_t expires, const gnutls_datum_t *key, + const gnutls_datum_t *value) { struct storage_st *storage = ptr; gnutls_datum_t *datum; @@ -574,8 +574,8 @@ storage_add(void *ptr, time_t expires, const gnutls_datum_t * key, for (i = 0; i < storage->num_entries; i++) { if (key->size == storage->entries[i].size && - memcmp(storage->entries[i].data, key->data, - key->size) == 0) { + memcmp(storage->entries[i].data, key->data, key->size) == + 0) { return GNUTLS_E_DB_ENTRY_EXISTS; } } @@ -650,14 +650,15 @@ static void server(int sds[], const struct fixture *fixture) int sd = sds[t]; struct callback_data callback_data; - assert(gnutls_init - (&session, - GNUTLS_SERVER | GNUTLS_ENABLE_EARLY_DATA) >= 0); + assert(gnutls_init(&session, + GNUTLS_SERVER | GNUTLS_ENABLE_EARLY_DATA) >= + 0); - assert(gnutls_priority_set_direct - (session, - t == 0 ? TLS13_AES_128_GCM : TLS13_CHACHA20_POLY1305, - NULL) >= 0); + assert(gnutls_priority_set_direct( + session, + t == 0 ? TLS13_AES_128_GCM : + TLS13_CHACHA20_POLY1305, + NULL) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -671,8 +672,8 @@ static void server(int sds[], const struct fixture *fixture) * until max_early_data_size without decryption */ if (t < 2) - (void)gnutls_record_set_max_early_data_size(session, - fixture->max_early_data_size); + (void)gnutls_record_set_max_early_data_size( + session, fixture->max_early_data_size); assert(gnutls_handshake_set_random(session, &hsrnd) >= 0); gnutls_transport_set_int(session, sd); @@ -684,8 +685,7 @@ static void server(int sds[], const struct fixture *fixture) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(sd); gnutls_deinit(session); @@ -703,8 +703,7 @@ static void server(int sds[], const struct fixture *fixture) } if (!gnutls_rnd_works) { - success - ("server: gnutls_rnd() could not be overridden\n"); + success("server: gnutls_rnd() could not be overridden\n"); goto skip_early_data; } @@ -714,11 +713,11 @@ static void server(int sds[], const struct fixture *fixture) fail("negotiated unexpected cipher: %s\n", gnutls_cipher_get_name(ret)); } -# if TRACE == TRACE_SERVER +#if TRACE == TRACE_SERVER print_secrets(stderr, "server", fixture->name, t, callback_data.secrets, callback_data.secret_callback_called); -# endif +#endif check_secrets(callback_data.secrets, callback_data.secret_callback_called, &fixture->server_secrets[t]); @@ -729,45 +728,48 @@ static void server(int sds[], const struct fixture *fixture) if (fixture->expect_early_data && !(gnutls_session_get_flags(session) & GNUTLS_SFLAGS_EARLY_DATA)) { - fail("server: early data is not received (%d)\n", t); + fail("server: early data is not received (%d)\n", + t); } - ret = - gnutls_record_recv_early_data(session, buffer, - sizeof(buffer)); + ret = gnutls_record_recv_early_data(session, buffer, + sizeof(buffer)); if (ret < 0) { if (fixture->early_data.size == 0 || fixture->max_early_data_size == 0) { if (ret != - GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) - { - fail("server: unexpected error code when retrieving empty early data: %s\n", gnutls_strerror(ret)); + GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { + fail("server: unexpected error code when retrieving empty early data: %s\n", + gnutls_strerror(ret)); } } else { - fail("server: failed to retrieve early data: %s\n", gnutls_strerror(ret)); + fail("server: failed to retrieve early data: %s\n", + gnutls_strerror(ret)); } } else { if (fixture->early_data.size == 0 || fixture->max_early_data_size == 0) { - fail("server: unexpected early data received: %d\n", ret); + fail("server: unexpected early data received: %d\n", + ret); } else if ((size_t)ret != - MIN(fixture->early_data.size, - fixture->max_early_data_size) - || memcmp(buffer, - fixture->early_data.data, - ret)) { + MIN(fixture->early_data.size, + fixture->max_early_data_size) || + memcmp(buffer, + fixture->early_data.data, + ret)) { fail("server: early data mismatch\n"); } } } else if (t == 2) { if (fixture->expect_early_data && gnutls_session_get_flags(session) & - GNUTLS_SFLAGS_EARLY_DATA) { - fail("server: early data is not rejected (%d)\n", t); + GNUTLS_SFLAGS_EARLY_DATA) { + fail("server: early data is not rejected (%d)\n", + t); } } - skip_early_data: + skip_early_data: /* see the Getting peer's information example */ /* print_info(session); */ @@ -777,8 +779,7 @@ static void server(int sds[], const struct fixture *fixture) if (ret == 0) { if (debug) - success - ("server: Peer has closed the GnuTLS connection\n"); + success("server: Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0) { kill(child, SIGTERM); @@ -875,4 +876,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls13-early-start.c b/tests/tls13-early-start.c index 41002668a2..9f4a3e3214 100644 --- a/tests/tls13-early-start.c +++ b/tests/tls13-early-start.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* This program tests support for early start in TLS1.3 handshake */ @@ -44,18 +44,18 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -#define try_ok(name, client_prio) \ - try_with_key(name, client_prio, \ - &server_ca3_localhost_cert, &server_ca3_key, NULL, NULL, 0) +#define try_ok(name, client_prio) \ + try_with_key(name, client_prio, &server_ca3_localhost_cert, \ + &server_ca3_key, NULL, NULL, 0) #define MSG "hello there ppl" -static -void try_with_key_fail(const char *name, const char *client_prio, - const gnutls_datum_t * serv_cert, - const gnutls_datum_t * serv_key, - const gnutls_datum_t * cli_cert, - const gnutls_datum_t * cli_key, unsigned init_flags) +static void try_with_key_fail(const char *name, const char *client_prio, + const gnutls_datum_t *serv_cert, + const gnutls_datum_t *serv_key, + const gnutls_datum_t *cli_cert, + const gnutls_datum_t *cli_key, + unsigned init_flags) { int ret; char buffer[256]; @@ -76,9 +76,8 @@ void try_with_key_fail(const char *name, const char *client_prio, /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - ret = gnutls_certificate_set_x509_key_mem(serverx509cred, - serv_cert, serv_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + serverx509cred, serv_cert, serv_key, GNUTLS_X509_FMT_PEM); if (ret < 0) fail("Could not set key/cert: %s\n", gnutls_strerror(ret)); @@ -97,9 +96,8 @@ void try_with_key_fail(const char *name, const char *client_prio, exit(1); if (cli_cert) { - gnutls_certificate_set_x509_key_mem(clientx509cred, - cli_cert, cli_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem( + clientx509cred, cli_cert, cli_key, GNUTLS_X509_FMT_PEM); gnutls_certificate_server_set_request(server, GNUTLS_CERT_REQUIRE); } @@ -174,13 +172,12 @@ void try_with_key_fail(const char *name, const char *client_prio, gnutls_certificate_free_credentials(clientx509cred); } -static -void try_with_key_ks(const char *name, const char *client_prio, - const gnutls_datum_t * serv_cert, - const gnutls_datum_t * serv_key, - const gnutls_datum_t * client_cert, - const gnutls_datum_t * client_key, - unsigned cert_flags, unsigned init_flags) +static void try_with_key_ks(const char *name, const char *client_prio, + const gnutls_datum_t *serv_cert, + const gnutls_datum_t *serv_key, + const gnutls_datum_t *client_cert, + const gnutls_datum_t *client_key, + unsigned cert_flags, unsigned init_flags) { int ret; char buffer[256]; @@ -203,9 +200,8 @@ void try_with_key_ks(const char *name, const char *client_prio, /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - ret = gnutls_certificate_set_x509_key_mem(serverx509cred, - serv_cert, serv_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + serverx509cred, serv_cert, serv_key, GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("Could not set key/cert: %s\n", gnutls_strerror(ret)); } @@ -213,9 +209,8 @@ void try_with_key_ks(const char *name, const char *client_prio, assert(gnutls_init(&server, GNUTLS_SERVER | init_flags) >= 0); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); - assert(gnutls_priority_set_direct(server, - "NORMAL:-VERS-ALL:+VERS-TLS1.3", - NULL) >= 0); + assert(gnutls_priority_set_direct( + server, "NORMAL:-VERS-ALL:+VERS-TLS1.3", NULL) >= 0); gnutls_transport_set_push_function(server, server_push); gnutls_transport_set_pull_function(server, server_pull); gnutls_transport_set_ptr(server, server); @@ -227,8 +222,8 @@ void try_with_key_ks(const char *name, const char *client_prio, exit(1); if (cert_flags == USE_CERT) { - gnutls_certificate_set_x509_key_mem(clientx509cred, - client_cert, client_key, + gnutls_certificate_set_x509_key_mem(clientx509cred, client_cert, + client_key, GNUTLS_X509_FMT_PEM); gnutls_certificate_server_set_request(server, GNUTLS_CERT_REQUIRE); @@ -309,16 +304,14 @@ void try_with_key_ks(const char *name, const char *client_prio, gnutls_certificate_free_credentials(clientx509cred); } -static -void try_with_key(const char *name, const char *client_prio, - const gnutls_datum_t * serv_cert, - const gnutls_datum_t * serv_key, - const gnutls_datum_t * cli_cert, - const gnutls_datum_t * cli_key, unsigned cert_flags) +static void try_with_key(const char *name, const char *client_prio, + const gnutls_datum_t *serv_cert, + const gnutls_datum_t *serv_key, + const gnutls_datum_t *cli_cert, + const gnutls_datum_t *cli_key, unsigned cert_flags) { - return try_with_key_ks(name, client_prio, - serv_cert, serv_key, cli_cert, cli_key, - cert_flags, GNUTLS_ENABLE_EARLY_START); + return try_with_key_ks(name, client_prio, serv_cert, serv_key, cli_cert, + cli_key, cert_flags, GNUTLS_ENABLE_EARLY_START); } #include "cert-common.h" @@ -333,10 +326,11 @@ void doit(void) try_ok("TLS 1.3 with x25519 rsa no-cli-cert", "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519"); - try_with_key_ks("TLS 1.3 with secp256r1 ecdsa no-cli-cert", - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP256R1", - &server_ca3_localhost_ecc_cert, &server_ca3_ecc_key, - NULL, NULL, 0, GNUTLS_ENABLE_EARLY_START); + try_with_key_ks( + "TLS 1.3 with secp256r1 ecdsa no-cli-cert", + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP256R1", + &server_ca3_localhost_ecc_cert, &server_ca3_ecc_key, NULL, NULL, + 0, GNUTLS_ENABLE_EARLY_START); /* client authentication: no early start possible */ try_with_key_fail("TLS 1.3 with rsa-pss cli-cert", diff --git a/tests/tls13-rehandshake-cert.c b/tests/tls13-rehandshake-cert.c index 06f169c31e..180e2a894c 100644 --- a/tests/tls13-rehandshake-cert.c +++ b/tests/tls13-rehandshake-cert.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -44,8 +44,7 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -static -void server_initiated_handshake(void) +static void server_initiated_handshake(void) { /* Server stuff. */ gnutls_certificate_credentials_t serverx509cred; @@ -68,9 +67,8 @@ void server_initiated_handshake(void) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); gnutls_priority_set_direct(server, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", @@ -126,8 +124,7 @@ void server_initiated_handshake(void) reset_buffers(); } -static -void client_initiated_handshake(void) +static void client_initiated_handshake(void) { /* Server stuff. */ gnutls_certificate_credentials_t serverx509cred; @@ -150,9 +147,8 @@ void client_initiated_handshake(void) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&server, GNUTLS_SERVER); gnutls_credentials_set(server, GNUTLS_CRD_CERTIFICATE, serverx509cred); gnutls_priority_set_direct(server, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", diff --git a/tests/tls13-server-kx-neg.c b/tests/tls13-server-kx-neg.c index c2e987a1fa..2fecbd25a1 100644 --- a/tests/tls13-server-kx-neg.c +++ b/tests/tls13-server-kx-neg.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif /* This program tests the negotiation for various key exchange @@ -41,292 +41,279 @@ test_case_st tests[] = { { - .name = "TLS 1.3 DHE-PSK without cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:" PVERSION, - .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:" PVERSION, - .exp_version = GNUTLS_TLS1_3, - }, + .name = "TLS 1.3 DHE-PSK without cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:" PVERSION, + .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:" PVERSION, + .exp_version = GNUTLS_TLS1_3, + }, { - .name = "TLS 1.3 DHE-PSK with cred but no DH params", - .client_ret = 0, - .server_ret = 0, - .have_psk_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:" PVERSION, - .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:" PVERSION, - .exp_version = GNUTLS_TLS1_3, - }, + .name = "TLS 1.3 DHE-PSK with cred but no DH params", + .client_ret = 0, + .server_ret = 0, + .have_psk_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:" PVERSION, + .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:" PVERSION, + .exp_version = GNUTLS_TLS1_3, + }, { - .name = "TLS 1.3 DHE-PSK with cred and DH params (level)", - .client_ret = 0, - .server_ret = 0, - .have_psk_cred = 1, - .have_psk_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:" PVERSION, - .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:" PVERSION, - .exp_version = GNUTLS_TLS1_3, - }, + .name = "TLS 1.3 DHE-PSK with cred and DH params (level)", + .client_ret = 0, + .server_ret = 0, + .have_psk_cred = 1, + .have_psk_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:" PVERSION, + .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:" PVERSION, + .exp_version = GNUTLS_TLS1_3, + }, { - .name = "TLS 1.3 DHE-PSK with cred and DH params (explicit)", - .client_ret = 0, - .server_ret = 0, - .have_psk_cred = 1, - .have_psk_exp_dh_params = 1, - .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:" PVERSION, - .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:" PVERSION, - .exp_version = GNUTLS_TLS1_3, - }, + .name = "TLS 1.3 DHE-PSK with cred and DH params (explicit)", + .client_ret = 0, + .server_ret = 0, + .have_psk_cred = 1, + .have_psk_exp_dh_params = 1, + .server_prio = "NORMAL:-KX-ALL:+DHE-PSK:" PVERSION, + .client_prio = "NORMAL:-KX-ALL:+DHE-PSK:" PVERSION, + .exp_version = GNUTLS_TLS1_3, + }, { - .name = "TLS 1.3 ECDHE-PSK with cred but no common curve", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_COMMON_KEY_SHARE, - .have_psk_cred = 1, - .server_prio = - "NORMAL:-KX-ALL:+ECDHE-PSK:-CURVE-ALL:+CURVE-SECP256R1:" PVERSION, - .client_prio = - "NORMAL:-KX-ALL:+ECDHE-PSK:-CURVE-ALL:+CURVE-SECP384R1:" PVERSION, - .exp_version = GNUTLS_TLS1_3, - }, + .name = "TLS 1.3 ECDHE-PSK with cred but no common curve", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_COMMON_KEY_SHARE, + .have_psk_cred = 1, + .server_prio = + "NORMAL:-KX-ALL:+ECDHE-PSK:-CURVE-ALL:+CURVE-SECP256R1:" PVERSION, + .client_prio = + "NORMAL:-KX-ALL:+ECDHE-PSK:-CURVE-ALL:+CURVE-SECP384R1:" PVERSION, + .exp_version = GNUTLS_TLS1_3, + }, { - .name = "TLS 1.3 ECDHE-PSK with cred and common curve", - .client_ret = 0, - .server_ret = 0, - .have_psk_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:" PVERSION, - .client_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:" PVERSION, - .exp_version = GNUTLS_TLS1_3, - }, + .name = "TLS 1.3 ECDHE-PSK with cred and common curve", + .client_ret = 0, + .server_ret = 0, + .have_psk_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:" PVERSION, + .client_prio = "NORMAL:-KX-ALL:+ECDHE-PSK:" PVERSION, + .exp_version = GNUTLS_TLS1_3, + }, { - .name = "TLS 1.3 RSA-PSK without cert cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .have_psk_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:" PVERSION, - .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:" PVERSION, - .exp_version = GNUTLS_TLS1_2, - }, + .name = "TLS 1.3 RSA-PSK without cert cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .have_psk_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:" PVERSION, + .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:" PVERSION, + .exp_version = GNUTLS_TLS1_2, + }, { - .name = "TLS 1.3 RSA-PSK without psk cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_psk_cred = 0, - .have_cert_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:" PVERSION, - .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:" PVERSION, - .exp_version = GNUTLS_TLS1_2, - }, + .name = "TLS 1.3 RSA-PSK without psk cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_psk_cred = 0, + .have_cert_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:" PVERSION, + .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:" PVERSION, + .exp_version = GNUTLS_TLS1_2, + }, { - .name = "TLS 1.3 RSA-PSK with cred but invalid cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_psk_cred = 1, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .have_ecc_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:" PVERSION, - .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:" PVERSION, - .exp_version = GNUTLS_TLS1_2, - }, + .name = "TLS 1.3 RSA-PSK with cred but invalid cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_psk_cred = 1, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .have_ecc_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:" PVERSION, + .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:" PVERSION, + .exp_version = GNUTLS_TLS1_2, + }, { - .name = "TLS 1.3 RSA-PSK with cred", - .server_ret = 0, - .client_ret = 0, - .have_psk_cred = 1, - .have_cert_cred = 1, - .have_rsa_decrypt_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:" PVERSION, - .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:" PVERSION, - .exp_version = GNUTLS_TLS1_2, - }, + .name = "TLS 1.3 RSA-PSK with cred", + .server_ret = 0, + .client_ret = 0, + .have_psk_cred = 1, + .have_cert_cred = 1, + .have_rsa_decrypt_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:" PVERSION, + .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:" PVERSION, + .exp_version = GNUTLS_TLS1_2, + }, { - .name = "TLS 1.3 RSA-PSK with cred and multiple certs", - .server_ret = 0, - .client_ret = 0, - .have_psk_cred = 1, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .have_ecc_sign_cert = 1, - .have_rsa_decrypt_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:" PVERSION, - .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:" PVERSION, - .exp_version = GNUTLS_TLS1_2, - }, + .name = "TLS 1.3 RSA-PSK with cred and multiple certs", + .server_ret = 0, + .client_ret = 0, + .have_psk_cred = 1, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .have_ecc_sign_cert = 1, + .have_rsa_decrypt_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+RSA-PSK:" PVERSION, + .client_prio = "NORMAL:-KX-ALL:+RSA-PSK:" PVERSION, + .exp_version = GNUTLS_TLS1_2, + }, #ifdef ENABLE_SRP { - .name = "TLS 1.3 SRP-RSA without cert cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .have_srp_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:" PVERSION, - .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:" PVERSION, - .exp_version = GNUTLS_TLS1_2, - }, + .name = "TLS 1.3 SRP-RSA without cert cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .have_srp_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:" PVERSION, + .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:" PVERSION, + .exp_version = GNUTLS_TLS1_2, + }, { - .name = "TLS 1.3 SRP-RSA without srp cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_srp_cred = 0, - .have_cert_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:" PVERSION, - .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:" PVERSION, - .exp_version = GNUTLS_TLS1_2, - }, + .name = "TLS 1.3 SRP-RSA without srp cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_srp_cred = 0, + .have_cert_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:" PVERSION, + .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:" PVERSION, + .exp_version = GNUTLS_TLS1_2, + }, { - .name = "TLS 1.3 SRP-RSA with cred but invalid cert", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .have_srp_cred = 1, - .have_cert_cred = 1, - .have_rsa_decrypt_cert = 1, - .have_ecc_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:" PVERSION, - .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:" PVERSION, - .exp_version = GNUTLS_TLS1_2, - }, + .name = "TLS 1.3 SRP-RSA with cred but invalid cert", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .have_srp_cred = 1, + .have_cert_cred = 1, + .have_rsa_decrypt_cert = 1, + .have_ecc_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:" PVERSION, + .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:" PVERSION, + .exp_version = GNUTLS_TLS1_2, + }, { - .name = "TLS 1.3 SRP-RSA with cred", - .server_ret = 0, - .client_ret = 0, - .have_srp_cred = 1, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:" PVERSION, - .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:" PVERSION, - .exp_version = GNUTLS_TLS1_2, - }, + .name = "TLS 1.3 SRP-RSA with cred", + .server_ret = 0, + .client_ret = 0, + .have_srp_cred = 1, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:" PVERSION, + .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:" PVERSION, + .exp_version = GNUTLS_TLS1_2, + }, { - .name = "TLS 1.3 SRP-RSA with cred and multiple certs", - .server_ret = 0, - .client_ret = 0, - .have_srp_cred = 1, - .have_cert_cred = 1, - .have_rsa_sign_cert = 1, - .have_ecc_sign_cert = 1, - .have_rsa_decrypt_cert = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:" PVERSION, - .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:" PVERSION, - .exp_version = GNUTLS_TLS1_2, - }, + .name = "TLS 1.3 SRP-RSA with cred and multiple certs", + .server_ret = 0, + .client_ret = 0, + .have_srp_cred = 1, + .have_cert_cred = 1, + .have_rsa_sign_cert = 1, + .have_ecc_sign_cert = 1, + .have_rsa_decrypt_cert = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP-RSA:" PVERSION, + .client_prio = "NORMAL:-KX-ALL:+SRP-RSA:" PVERSION, + .exp_version = GNUTLS_TLS1_2, + }, { - .name = "TLS 1.3 SRP without srp cred", - .client_ret = GNUTLS_E_AGAIN, - .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, - .have_srp_cred = 0, - .have_cert_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP:" PVERSION, - .client_prio = "NORMAL:-KX-ALL:+SRP:" PVERSION, - .exp_version = GNUTLS_TLS1_2, - }, + .name = "TLS 1.3 SRP without srp cred", + .client_ret = GNUTLS_E_AGAIN, + .server_ret = GNUTLS_E_INSUFFICIENT_CREDENTIALS, + .have_srp_cred = 0, + .have_cert_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP:" PVERSION, + .client_prio = "NORMAL:-KX-ALL:+SRP:" PVERSION, + .exp_version = GNUTLS_TLS1_2, + }, { - .name = "TLS 1.3 SRP with cred", - .server_ret = 0, - .client_ret = 0, - .have_srp_cred = 1, - .server_prio = "NORMAL:-KX-ALL:+SRP:" PVERSION, - .client_prio = "NORMAL:-KX-ALL:+SRP:" PVERSION, - .exp_version = GNUTLS_TLS1_2, - }, + .name = "TLS 1.3 SRP with cred", + .server_ret = 0, + .client_ret = 0, + .have_srp_cred = 1, + .server_prio = "NORMAL:-KX-ALL:+SRP:" PVERSION, + .client_prio = "NORMAL:-KX-ALL:+SRP:" PVERSION, + .exp_version = GNUTLS_TLS1_2, + }, #endif #ifdef ENABLE_GOST { - .name = - "TLS 1.3 server, TLS 1.2 client VKO-GOST-12 with cred and GOST-256 cert", - .server_ret = 0, - .client_ret = 0, - .have_cert_cred = 1, - .have_gost12_256_cert = 1, - .not_on_fips = 1, - .server_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:" - PVERSION, - .client_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:" - "-VERS-ALL:+VERS-TLS1.2", - .exp_version = GNUTLS_TLS1_2, - }, + .name = "TLS 1.3 server, TLS 1.2 client VKO-GOST-12 with cred and GOST-256 cert", + .server_ret = 0, + .client_ret = 0, + .have_cert_cred = 1, + .have_gost12_256_cert = 1, + .not_on_fips = 1, + .server_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:" PVERSION, + .client_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:" + "-VERS-ALL:+VERS-TLS1.2", + .exp_version = GNUTLS_TLS1_2, + }, { - .name = - "TLS 1.3 server, TLS 1.2 client VKO-GOST-12 with cred and GOST-512 cert", - .server_ret = 0, - .client_ret = 0, - .have_cert_cred = 1, - .have_gost12_512_cert = 1, - .not_on_fips = 1, - .server_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:" - PVERSION, - .client_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:" - "-VERS-ALL:+VERS-TLS1.2", - .exp_version = GNUTLS_TLS1_2, - }, + .name = "TLS 1.3 server, TLS 1.2 client VKO-GOST-12 with cred and GOST-512 cert", + .server_ret = 0, + .client_ret = 0, + .have_cert_cred = 1, + .have_gost12_512_cert = 1, + .not_on_fips = 1, + .server_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:" PVERSION, + .client_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:" + "-VERS-ALL:+VERS-TLS1.2", + .exp_version = GNUTLS_TLS1_2, + }, { - .name = - "TLS 1.2 server TLS 1.3 client VKO-GOST-12 with cred and GOST-256 cert", - .server_ret = 0, - .client_ret = 0, - .have_cert_cred = 1, - .have_gost12_256_cert = 1, - .not_on_fips = 1, - .server_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:" - "-VERS-ALL:+VERS-TLS1.2", - .client_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:" - PVERSION, - .exp_version = GNUTLS_TLS1_2, - }, + .name = "TLS 1.2 server TLS 1.3 client VKO-GOST-12 with cred and GOST-256 cert", + .server_ret = 0, + .client_ret = 0, + .have_cert_cred = 1, + .have_gost12_256_cert = 1, + .not_on_fips = 1, + .server_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:" + "-VERS-ALL:+VERS-TLS1.2", + .client_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:" PVERSION, + .exp_version = GNUTLS_TLS1_2, + }, { - .name = "TLS 1.2 server TLS 1.3 client with cred and GOST-512 cert", - .server_ret = 0, - .client_ret = 0, - .have_cert_cred = 1, - .have_gost12_512_cert = 1, - .not_on_fips = 1, - .server_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:" - "-VERS-ALL:+VERS-TLS1.2", - .client_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:" - PVERSION, - .exp_version = GNUTLS_TLS1_2, - }, + .name = "TLS 1.2 server TLS 1.3 client with cred and GOST-512 cert", + .server_ret = 0, + .client_ret = 0, + .have_cert_cred = 1, + .have_gost12_512_cert = 1, + .not_on_fips = 1, + .server_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:" + "-VERS-ALL:+VERS-TLS1.2", + .client_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:" PVERSION, + .exp_version = GNUTLS_TLS1_2, + }, /* Ideally for the next two test cases we should fallback to TLS 1.2 + GOST * but this is unsuppored for now */ { - .name = - "TLS 1.3 server and client VKO-GOST-12 with cred and GOST-256 cert", - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .client_ret = GNUTLS_E_AGAIN, - .have_cert_cred = 1, - .have_gost12_256_cert = 1, - .not_on_fips = 1, - .server_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:" - PVERSION, - .client_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:" - PVERSION, - .exp_version = GNUTLS_TLS1_2, - }, + .name = "TLS 1.3 server and client VKO-GOST-12 with cred and GOST-256 cert", + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .client_ret = GNUTLS_E_AGAIN, + .have_cert_cred = 1, + .have_gost12_256_cert = 1, + .not_on_fips = 1, + .server_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:" PVERSION, + .client_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:" PVERSION, + .exp_version = GNUTLS_TLS1_2, + }, { - .name = - "TLS 1.3 server and client VKO-GOST-12 with cred and GOST-512 cert", - .server_ret = GNUTLS_E_NO_CIPHER_SUITES, - .client_ret = GNUTLS_E_AGAIN, - .have_cert_cred = 1, - .have_gost12_512_cert = 1, - .not_on_fips = 1, - .server_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:" - PVERSION, - .client_prio = - "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:" - PVERSION, - .exp_version = GNUTLS_TLS1_2, - }, + .name = "TLS 1.3 server and client VKO-GOST-12 with cred and GOST-512 cert", + .server_ret = GNUTLS_E_NO_CIPHER_SUITES, + .client_ret = GNUTLS_E_AGAIN, + .have_cert_cred = 1, + .have_gost12_512_cert = 1, + .not_on_fips = 1, + .server_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:" PVERSION, + .client_prio = + "NORMAL:-KX-ALL:+VKO-GOST-12:+GROUP-GOST-ALL:+CIPHER-GOST-ALL:+MAC-GOST-ALL:+SIGN-GOST-ALL:" PVERSION, + .exp_version = GNUTLS_TLS1_2, + }, #endif }; diff --git a/tests/tls13-without-timeout-func.c b/tests/tls13-without-timeout-func.c index e3d17e2e09..c8cc2e165b 100644 --- a/tests/tls13-without-timeout-func.c +++ b/tests/tls13-without-timeout-func.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -45,7 +45,7 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1461671166; @@ -55,8 +55,8 @@ static time_t mytime(time_t * t) return then; } -static ssize_t -server_pull_fail(gnutls_transport_ptr_t tr, void *data, size_t len) +static ssize_t server_pull_fail(gnutls_transport_ptr_t tr, void *data, + size_t len) { fail("unexpected call to pull callback detected\n"); return -1; @@ -85,8 +85,8 @@ void doit(void) gnutls_global_set_time_function(mytime); assert(gnutls_certificate_allocate_credentials(&serverx509cred) >= 0); - assert(gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, + assert(gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM) >= 0); assert(gnutls_init(&server, GNUTLS_SERVER) >= 0); @@ -98,16 +98,16 @@ void doit(void) assert(gnutls_certificate_allocate_credentials(&clientx509cred) >= 0); - assert(gnutls_certificate_set_x509_trust_mem - (clientx509cred, &ca_cert, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM) >= 0); assert(gnutls_init(&client, GNUTLS_CLIENT) >= 0); assert(gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, clientx509cred) >= 0); - assert(gnutls_priority_set_direct - (client, "NORMAL:-VERS-ALL:+VERS-TLS1.3", NULL) >= 0); + assert(gnutls_priority_set_direct( + client, "NORMAL:-VERS-ALL:+VERS-TLS1.3", NULL) >= 0); gnutls_transport_set_push_function(client, client_push); gnutls_transport_set_pull_function(client, client_pull); gnutls_transport_set_ptr(client, client); diff --git a/tests/tls13/anti_replay.c b/tests/tls13/anti_replay.c index 0db6bab60f..81544f0d6c 100644 --- a/tests/tls13/anti_replay.c +++ b/tests/tls13/anti_replay.c @@ -18,7 +18,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -39,9 +39,8 @@ struct storage_st { size_t num_entries; }; -static int -storage_add(void *ptr, time_t expires, const gnutls_datum_t * key, - const gnutls_datum_t * value) +static int storage_add(void *ptr, time_t expires, const gnutls_datum_t *key, + const gnutls_datum_t *value) { struct storage_st *storage = ptr; gnutls_datum_t *datum; @@ -49,8 +48,8 @@ storage_add(void *ptr, time_t expires, const gnutls_datum_t * key, for (i = 0; i < storage->num_entries; i++) { if (key->size == storage->entries[i].size && - memcmp(storage->entries[i].data, key->data, - key->size) == 0) { + memcmp(storage->entries[i].data, key->data, key->size) == + 0) { return GNUTLS_E_DB_ENTRY_EXISTS; } } @@ -100,8 +99,8 @@ void doit(void) gnutls_anti_replay_set_add_function(anti_replay, storage_add); gnutls_anti_replay_set_ptr(anti_replay, &storage); mygettime(&creation_time); - ret = - _gnutls_anti_replay_check(anti_replay, 10000, &creation_time, &key); + ret = _gnutls_anti_replay_check(anti_replay, 10000, &creation_time, + &key); if (ret != GNUTLS_E_ILLEGAL_PARAMETER) fail("error is not returned, while server_ticket_age < client_ticket_age\n"); gnutls_anti_replay_deinit(anti_replay); @@ -115,8 +114,8 @@ void doit(void) gnutls_anti_replay_set_window(anti_replay, 10000); mygettime(&creation_time); virt_sec_sleep(30); - ret = - _gnutls_anti_replay_check(anti_replay, 10000, &creation_time, &key); + ret = _gnutls_anti_replay_check(anti_replay, 10000, &creation_time, + &key); if (ret != GNUTLS_E_EARLY_DATA_REJECTED) fail("early data is NOT rejected, while freshness check fails\n"); gnutls_anti_replay_deinit(anti_replay); @@ -130,12 +129,12 @@ void doit(void) gnutls_anti_replay_set_window(anti_replay, 10000); mygettime(&creation_time); virt_sec_sleep(15); - ret = - _gnutls_anti_replay_check(anti_replay, 10000, &creation_time, &key); + ret = _gnutls_anti_replay_check(anti_replay, 10000, &creation_time, + &key); if (ret != 0) fail("early data is rejected, while freshness check succeeds\n"); - ret = - _gnutls_anti_replay_check(anti_replay, 10000, &creation_time, &key); + ret = _gnutls_anti_replay_check(anti_replay, 10000, &creation_time, + &key); if (ret != GNUTLS_E_EARLY_DATA_REJECTED) fail("early data is NOT rejected for a duplicate key\n"); gnutls_anti_replay_deinit(anti_replay); diff --git a/tests/tls13/change_cipher_spec.c b/tests/tls13/change_cipher_spec.c index 276b40ed7d..5e8e5646af 100644 --- a/tests/tls13/change_cipher_spec.c +++ b/tests/tls13/change_cipher_spec.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,21 +35,21 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "cert-common.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cert-common.h" +#include "utils.h" /* This program tests whether the ChangeCipherSpec message * is ignored during handshake. @@ -70,7 +70,7 @@ static unsigned server_sent_ccs = 0; static int cli_hsk_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg); + const gnutls_datum_t *msg); static void client(int fd, unsigned ccs_check) { @@ -103,10 +103,10 @@ static void client(int fd, unsigned ccs_check) cli_hsk_callback); } - ret = - gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.0", - NULL); + ret = gnutls_priority_set_direct( + session, + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.0", + NULL); if (ret < 0) fail("cannot set TLS 1.3 priorities\n"); @@ -123,8 +123,7 @@ static void client(int fd, unsigned ccs_check) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret != 0) fail("handshake failed: %s\n", gnutls_strerror(ret)); @@ -160,7 +159,7 @@ static void client(int fd, unsigned ccs_check) static int cli_hsk_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { unsigned *p; unsigned ccs_check; @@ -175,14 +174,13 @@ static int cli_hsk_callback(gnutls_session_t session, unsigned int htype, if (htype == GNUTLS_HANDSHAKE_CLIENT_HELLO && !incoming) { hello_received = 1; - gnutls_handshake_set_hook_function(session, - GNUTLS_HANDSHAKE_CHANGE_CIPHER_SPEC, - GNUTLS_HOOK_PRE, - cli_hsk_callback); + gnutls_handshake_set_hook_function( + session, GNUTLS_HANDSHAKE_CHANGE_CIPHER_SPEC, + GNUTLS_HOOK_PRE, cli_hsk_callback); } - if (htype == GNUTLS_HANDSHAKE_CHANGE_CIPHER_SPEC && !incoming - && hello_received) { + if (htype == GNUTLS_HANDSHAKE_CHANGE_CIPHER_SPEC && !incoming && + hello_received) { client_sent_ccs++; assert(msg->size == 1 && msg->data[0] == 0x01); } @@ -192,7 +190,7 @@ static int cli_hsk_callback(gnutls_session_t session, unsigned int htype, static int hsk_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { int ret; int fd; @@ -215,7 +213,7 @@ static int hsk_callback(gnutls_session_t session, unsigned int htype, do { ret = send(fd, "\x14\x03\x03\x00\x01\x01", 6, 0); } while (ret == -1 && (errno == EINTR || errno == EAGAIN)); - } else { /* checking whether server received it */ + } else { /* checking whether server received it */ if (htype == GNUTLS_HANDSHAKE_CHANGE_CIPHER_SPEC && !incoming) { server_sent_ccs++; assert(msg->size == 1 && msg->data[0] == 0x01); @@ -252,10 +250,9 @@ static void server(int fd, unsigned ccs_check) gnutls_handshake_set_timeout(session, get_timeout()); if (ccs_check) - gnutls_handshake_set_hook_function(session, - GNUTLS_HANDSHAKE_CHANGE_CIPHER_SPEC, - GNUTLS_HOOK_PRE, - hsk_callback); + gnutls_handshake_set_hook_function( + session, GNUTLS_HANDSHAKE_CHANGE_CIPHER_SPEC, + GNUTLS_HOOK_PRE, hsk_callback); else gnutls_handshake_set_hook_function(session, GNUTLS_HANDSHAKE_ANY, @@ -265,8 +262,8 @@ static void server(int fd, unsigned ccs_check) /* avoid calling all the priority functions, since the defaults * are adequate. */ - assert(gnutls_priority_set_direct(session, "NORMAL:+VERS-TLS1.3", NULL) - >= 0); + assert(gnutls_priority_set_direct(session, "NORMAL:+VERS-TLS1.3", + NULL) >= 0); gnutls_session_set_ptr(session, &ccs_check); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -289,7 +286,8 @@ static void server(int fd, unsigned ccs_check) } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) - fail("server: gnutls_record_send did not succeed as expected: %s\n", gnutls_strerror(ret)); + fail("server: gnutls_record_send did not succeed as expected: %s\n", + gnutls_strerror(ret)); /* receive CCS and fail */ do { @@ -297,8 +295,8 @@ static void server(int fd, unsigned ccs_check) } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret != GNUTLS_E_UNEXPECTED_PACKET) - fail("server: incorrect alert sent: %d != %d\n", - ret, GNUTLS_E_UNEXPECTED_PACKET); + fail("server: incorrect alert sent: %d != %d\n", ret, + GNUTLS_E_UNEXPECTED_PACKET); close(fd); gnutls_deinit(session); @@ -325,8 +323,7 @@ static void ch_handler(int sig) return; } -static -void start(unsigned ccs_check) +static void start(unsigned ccs_check) { int fd[2]; int ret; @@ -366,4 +363,4 @@ void doit(void) start(1); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls13/compress-cert-cli.c b/tests/tls13/compress-cert-cli.c index 0dd11924e4..c7d3ed3026 100644 --- a/tests/tls13/compress-cert-cli.c +++ b/tests/tls13/compress-cert-cli.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -55,24 +55,26 @@ static int ext_callback(void *ctx, unsigned tls_id, const unsigned char *data, unsigned size) { struct handshake_cb_data_st *cb_data = ctx; - if (tls_id == 27) { /* compress_certificate */ + if (tls_id == 27) { /* compress_certificate */ cb_data->found_compress_certificate = 1; } return 0; } -#define SKIP8(pos, total) { \ - uint8_t _s; \ - if (pos+1 > total) fail("error\n"); \ - _s = msg->data[pos]; \ - if ((size_t)(pos+1+_s) > total) fail("error\n"); \ - pos += 1+_s; \ +#define SKIP8(pos, total) \ + { \ + uint8_t _s; \ + if (pos + 1 > total) \ + fail("error\n"); \ + _s = msg->data[pos]; \ + if ((size_t)(pos + 1 + _s) > total) \ + fail("error\n"); \ + pos += 1 + _s; \ } -static int -handshake_callback(gnutls_session_t session, unsigned int htype, - unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) +static int handshake_callback(gnutls_session_t session, unsigned int htype, + unsigned post, unsigned int incoming, + const gnutls_datum_t *msg) { struct handshake_cb_data_st *data = gnutls_session_get_ptr(session); unsigned pos = 0; @@ -110,17 +112,16 @@ static void run(void) /* Server stuff. */ gnutls_certificate_credentials_t scred; gnutls_session_t server; - gnutls_compression_method_t smethods[] = { - GNUTLS_COMP_ZSTD, GNUTLS_COMP_BROTLI, GNUTLS_COMP_ZLIB - }; + gnutls_compression_method_t smethods[] = { GNUTLS_COMP_ZSTD, + GNUTLS_COMP_BROTLI, + GNUTLS_COMP_ZLIB }; struct handshake_cb_data_st sdata = { 0, false, false, false }; int sret; /* Client stuff. */ gnutls_certificate_credentials_t ccred; gnutls_session_t client; - gnutls_compression_method_t cmethods[] = { - GNUTLS_COMP_ZLIB, GNUTLS_COMP_BROTLI - }; + gnutls_compression_method_t cmethods[] = { GNUTLS_COMP_ZLIB, + GNUTLS_COMP_BROTLI }; struct handshake_cb_data_st cdata = { 0, false, false, false }; int cret; /* Need to enable anonymous KX specifically. */ @@ -134,27 +135,21 @@ static void run(void) /* Init server */ assert(gnutls_certificate_allocate_credentials(&scred) >= 0); - assert(gnutls_certificate_set_x509_key_mem(scred, - &server_ca3_localhost_cert, - &server_ca3_key, - GNUTLS_X509_FMT_PEM) >= 0); - assert(gnutls_certificate_set_x509_trust_mem(scred, - &ca3_cert, + assert(gnutls_certificate_set_x509_key_mem( + scred, &server_ca3_localhost_cert, &server_ca3_key, + GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_trust_mem(scred, &ca3_cert, GNUTLS_X509_FMT_PEM) >= 0); assert(gnutls_init(&server, GNUTLS_SERVER) >= 0); gnutls_certificate_server_set_request(server, GNUTLS_CERT_REQUEST); - ret = - gnutls_priority_set_direct(server, - "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", - NULL); + ret = gnutls_priority_set_direct( + server, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", NULL); if (ret < 0) exit(1); - ret = - gnutls_compress_certificate_set_methods(server, smethods, - sizeof(smethods) / - sizeof(*smethods)); + ret = gnutls_compress_certificate_set_methods( + server, smethods, sizeof(smethods) / sizeof(*smethods)); if (ret < 0) { fail("server: setting compression method failed (%s)\n", gnutls_strerror(ret)); @@ -172,27 +167,23 @@ static void run(void) /* Init client */ assert(gnutls_certificate_allocate_credentials(&ccred) >= 0); - assert(gnutls_certificate_set_x509_key_mem - (ccred, &cli_ca3_cert_chain, &cli_ca3_key, - GNUTLS_X509_FMT_PEM) >= 0); - assert(gnutls_certificate_set_x509_trust_mem - (ccred, &ca3_cert, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem(ccred, &cli_ca3_cert_chain, + &cli_ca3_key, + GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_trust_mem(ccred, &ca3_cert, + GNUTLS_X509_FMT_PEM) >= 0); gnutls_init(&client, GNUTLS_CLIENT); - ret = - gnutls_priority_set_direct(client, - "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", - NULL); + ret = gnutls_priority_set_direct( + client, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", NULL); assert(ret >= 0); ret = gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, ccred); if (ret < 0) exit(1); - ret = - gnutls_compress_certificate_set_methods(client, cmethods, - sizeof(cmethods) / - sizeof(*cmethods)); + ret = gnutls_compress_certificate_set_methods( + client, cmethods, sizeof(cmethods) / sizeof(*cmethods)); if (ret < 0) { fail("client: setting compression method failed (%s)\n", gnutls_strerror(ret)); diff --git a/tests/tls13/compress-cert-neg.c b/tests/tls13/compress-cert-neg.c index 9f3a28070f..bac991542b 100644 --- a/tests/tls13/compress-cert-neg.c +++ b/tests/tls13/compress-cert-neg.c @@ -20,14 +20,14 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include #include -#if defined(_WIN32) || !defined(HAVE_LIBZ) || \ - !defined(HAVE_LIBBROTLI) || !defined(HAVE_LIBZSTD) +#if defined(_WIN32) || !defined(HAVE_LIBZ) || !defined(HAVE_LIBBROTLI) || \ + !defined(HAVE_LIBZSTD) int main(int argc, char **argv) { @@ -36,19 +36,19 @@ int main(int argc, char **argv) #else -# include -# include -# include -# include +#include +#include +#include +#include -# include "cert-common.h" -# include "utils.h" +#include "cert-common.h" +#include "utils.h" /* This program tests whether the compress_certificate extensions is disabled * when client and server have incompatible compression methods set */ -# define PRIO "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3" -# define CHECK(X) assert((X)>=0) +#define PRIO "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3" +#define CHECK(X) assert((X) >= 0) static pid_t child; int client_bad; @@ -77,7 +77,7 @@ static void server_log_func(int level, const char *str) static int client_callback(gnutls_session_t session, unsigned htype, unsigned post, unsigned incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { client_bad = 1; return 0; @@ -85,7 +85,7 @@ static int client_callback(gnutls_session_t session, unsigned htype, static int server_callback(gnutls_session_t session, unsigned htype, unsigned post, unsigned incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { server_bad = 1; return 0; @@ -98,10 +98,10 @@ static void client(int fd) gnutls_session_t session; gnutls_certificate_credentials_t x509_cred; gnutls_compression_method_t method; - gnutls_compression_method_t methods[] = - { GNUTLS_COMP_BROTLI, GNUTLS_COMP_ZSTD }; + gnutls_compression_method_t methods[] = { GNUTLS_COMP_BROTLI, + GNUTLS_COMP_ZSTD }; size_t methods_len = - sizeof(methods) / sizeof(gnutls_compression_method_t); + sizeof(methods) / sizeof(gnutls_compression_method_t); global_init(); @@ -111,34 +111,32 @@ static void client(int fd) } CHECK(gnutls_certificate_allocate_credentials(&x509_cred)); - CHECK(gnutls_certificate_set_x509_trust_mem - (x509_cred, &ca3_cert, GNUTLS_X509_FMT_PEM)); - CHECK(gnutls_certificate_set_x509_key_mem - (x509_cred, &cli_ca3_cert_chain, &cli_ca3_key, - GNUTLS_X509_FMT_PEM)); + CHECK(gnutls_certificate_set_x509_trust_mem(x509_cred, &ca3_cert, + GNUTLS_X509_FMT_PEM)); + CHECK(gnutls_certificate_set_x509_key_mem( + x509_cred, &cli_ca3_cert_chain, &cli_ca3_key, + GNUTLS_X509_FMT_PEM)); CHECK(gnutls_init(&session, GNUTLS_CLIENT)); - CHECK(gnutls_credentials_set - (session, GNUTLS_CRD_CERTIFICATE, x509_cred)); + CHECK(gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, + x509_cred)); CHECK(gnutls_priority_set_direct(session, PRIO, NULL)); - ret = - gnutls_compress_certificate_set_methods(session, methods, - methods_len); + ret = gnutls_compress_certificate_set_methods(session, methods, + methods_len); if (ret < 0) { fail("client: setting compression method failed (%s)\n\n", gnutls_strerror(ret)); terminate(); } - gnutls_handshake_set_hook_function(session, - GNUTLS_HANDSHAKE_COMPRESSED_CERTIFICATE_PKT, - GNUTLS_HOOK_PRE, client_callback); + gnutls_handshake_set_hook_function( + session, GNUTLS_HANDSHAKE_COMPRESSED_CERTIFICATE_PKT, + GNUTLS_HOOK_PRE, client_callback); gnutls_transport_set_int(session, fd); do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed: %s\n", strerror(ret)); goto cleanup; @@ -147,8 +145,8 @@ static void client(int fd) success("client: Handshake was completed\n"); if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); method = gnutls_compress_certificate_get_selected_method(session); if (method != GNUTLS_COMP_UNKNOWN) @@ -169,7 +167,7 @@ static void client(int fd) if (debug) success("client: finished\n"); - cleanup: +cleanup: close(fd); gnutls_deinit(session); gnutls_certificate_free_credentials(x509_cred); @@ -185,7 +183,7 @@ static void server(int fd) gnutls_compression_method_t method; gnutls_compression_method_t methods[] = { GNUTLS_COMP_ZLIB }; size_t methods_len = - sizeof(methods) / sizeof(gnutls_compression_method_t); + sizeof(methods) / sizeof(gnutls_compression_method_t); global_init(); @@ -195,35 +193,33 @@ static void server(int fd) } CHECK(gnutls_certificate_allocate_credentials(&x509_cred)); - CHECK(gnutls_certificate_set_x509_trust_mem - (x509_cred, &ca3_cert, GNUTLS_X509_FMT_PEM)); - CHECK(gnutls_certificate_set_x509_key_mem - (x509_cred, &server_ca3_localhost_cert_chain, &server_ca3_key, - GNUTLS_X509_FMT_PEM)); + CHECK(gnutls_certificate_set_x509_trust_mem(x509_cred, &ca3_cert, + GNUTLS_X509_FMT_PEM)); + CHECK(gnutls_certificate_set_x509_key_mem( + x509_cred, &server_ca3_localhost_cert_chain, &server_ca3_key, + GNUTLS_X509_FMT_PEM)); CHECK(gnutls_init(&session, GNUTLS_SERVER)); - CHECK(gnutls_credentials_set - (session, GNUTLS_CRD_CERTIFICATE, x509_cred)); + CHECK(gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, + x509_cred)); CHECK(gnutls_priority_set_direct(session, PRIO, NULL)); - ret = - gnutls_compress_certificate_set_methods(session, methods, - methods_len); + ret = gnutls_compress_certificate_set_methods(session, methods, + methods_len); if (ret < 0) { fail("server: setting compression method failed (%s)\n\n", gnutls_strerror(ret)); terminate(); } - gnutls_handshake_set_hook_function(session, - GNUTLS_HANDSHAKE_COMPRESSED_CERTIFICATE_PKT, - GNUTLS_HOOK_PRE, server_callback); + gnutls_handshake_set_hook_function( + session, GNUTLS_HANDSHAKE_COMPRESSED_CERTIFICATE_PKT, + GNUTLS_HOOK_PRE, server_callback); gnutls_certificate_server_set_request(session, GNUTLS_CERT_REQUEST); gnutls_transport_set_int(session, fd); do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("server: Handshake has failed (%s)\n\n", gnutls_strerror(ret)); @@ -233,8 +229,8 @@ static void server(int fd) success("server: Handshake was completed\n"); if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name(gnutls_protocol_get_version - (session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); method = gnutls_compress_certificate_get_selected_method(session); if (method != GNUTLS_COMP_UNKNOWN) @@ -255,7 +251,7 @@ static void server(int fd) if (debug) success("server: finished\n"); - cleanup: +cleanup: close(fd); gnutls_deinit(session); gnutls_certificate_free_credentials(x509_cred); @@ -295,4 +291,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls13/compress-cert-neg2.c b/tests/tls13/compress-cert-neg2.c index 0d92b202b5..4fe7770679 100644 --- a/tests/tls13/compress-cert-neg2.c +++ b/tests/tls13/compress-cert-neg2.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,19 +35,19 @@ int main(int argc, char **argv) #else -# include -# include -# include -# include +#include +#include +#include +#include -# include "cert-common.h" -# include "utils.h" +#include "cert-common.h" +#include "utils.h" /* This program tests whether the compress_certificate extension correctly fails * in the case of compression/decompression failure */ -# define PRIO "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3" -# define CHECK(X) assert((X)>=0) +#define PRIO "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3" +#define CHECK(X) assert((X) >= 0) static pid_t child; @@ -74,7 +74,7 @@ static void server_log_func(int level, const char *str) static int client_callback(gnutls_session_t session, unsigned htype, unsigned post, unsigned incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { /* change compression method to BROTLI */ msg->data[1] = 0x02; @@ -88,7 +88,7 @@ static void client(int fd) gnutls_certificate_credentials_t x509_cred; gnutls_compression_method_t methods[] = { GNUTLS_COMP_ZLIB }; size_t methods_len = - sizeof(methods) / sizeof(gnutls_compression_method_t); + sizeof(methods) / sizeof(gnutls_compression_method_t); global_init(); @@ -98,34 +98,32 @@ static void client(int fd) } CHECK(gnutls_certificate_allocate_credentials(&x509_cred)); - CHECK(gnutls_certificate_set_x509_trust_mem - (x509_cred, &ca3_cert, GNUTLS_X509_FMT_PEM)); - CHECK(gnutls_certificate_set_x509_key_mem - (x509_cred, &cli_ca3_cert_chain, &cli_ca3_key, - GNUTLS_X509_FMT_PEM)); + CHECK(gnutls_certificate_set_x509_trust_mem(x509_cred, &ca3_cert, + GNUTLS_X509_FMT_PEM)); + CHECK(gnutls_certificate_set_x509_key_mem( + x509_cred, &cli_ca3_cert_chain, &cli_ca3_key, + GNUTLS_X509_FMT_PEM)); CHECK(gnutls_init(&session, GNUTLS_CLIENT)); - CHECK(gnutls_credentials_set - (session, GNUTLS_CRD_CERTIFICATE, x509_cred)); + CHECK(gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, + x509_cred)); CHECK(gnutls_priority_set_direct(session, PRIO, NULL)); - ret = - gnutls_compress_certificate_set_methods(session, methods, - methods_len); + ret = gnutls_compress_certificate_set_methods(session, methods, + methods_len); if (ret < 0) { fail("client: setting compression method failed (%s)\n\n", gnutls_strerror(ret)); terminate(); } - gnutls_handshake_set_hook_function(session, - GNUTLS_HANDSHAKE_COMPRESSED_CERTIFICATE_PKT, - GNUTLS_HOOK_PRE, client_callback); + gnutls_handshake_set_hook_function( + session, GNUTLS_HANDSHAKE_COMPRESSED_CERTIFICATE_PKT, + GNUTLS_HOOK_PRE, client_callback); gnutls_transport_set_int(session, fd); do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret >= 0) fail("client: handshake should have failed\n"); @@ -144,7 +142,7 @@ static void server(int fd) gnutls_compression_method_t method; gnutls_compression_method_t methods[] = { GNUTLS_COMP_ZLIB }; size_t methods_len = - sizeof(methods) / sizeof(gnutls_compression_method_t); + sizeof(methods) / sizeof(gnutls_compression_method_t); global_init(); @@ -154,19 +152,18 @@ static void server(int fd) } CHECK(gnutls_certificate_allocate_credentials(&x509_cred)); - CHECK(gnutls_certificate_set_x509_trust_mem - (x509_cred, &ca3_cert, GNUTLS_X509_FMT_PEM)); - CHECK(gnutls_certificate_set_x509_key_mem - (x509_cred, &server_ca3_localhost_cert_chain, &server_ca3_key, - GNUTLS_X509_FMT_PEM)); + CHECK(gnutls_certificate_set_x509_trust_mem(x509_cred, &ca3_cert, + GNUTLS_X509_FMT_PEM)); + CHECK(gnutls_certificate_set_x509_key_mem( + x509_cred, &server_ca3_localhost_cert_chain, &server_ca3_key, + GNUTLS_X509_FMT_PEM)); CHECK(gnutls_init(&session, GNUTLS_SERVER)); - CHECK(gnutls_credentials_set - (session, GNUTLS_CRD_CERTIFICATE, x509_cred)); + CHECK(gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, + x509_cred)); CHECK(gnutls_priority_set_direct(session, PRIO, NULL)); - ret = - gnutls_compress_certificate_set_methods(session, methods, - methods_len); + ret = gnutls_compress_certificate_set_methods(session, methods, + methods_len); if (ret < 0) { fail("server: setting compression method failed (%s)\n\n", gnutls_strerror(ret)); @@ -177,8 +174,7 @@ static void server(int fd) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret >= 0) fail("server: handshake should have failed\n"); @@ -229,4 +225,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls13/compress-cert.c b/tests/tls13/compress-cert.c index 6f7b4a9152..1b7d1370b4 100644 --- a/tests/tls13/compress-cert.c +++ b/tests/tls13/compress-cert.c @@ -20,14 +20,14 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include #include -#if defined(_WIN32) || !defined(HAVE_LIBZ) || \ - !defined(HAVE_LIBBROTLI) || !defined(HAVE_LIBZSTD) +#if defined(_WIN32) || !defined(HAVE_LIBZ) || !defined(HAVE_LIBBROTLI) || \ + !defined(HAVE_LIBZSTD) int main(int argc, char **argv) { @@ -36,18 +36,18 @@ int main(int argc, char **argv) #else -# include -# include -# include -# include +#include +#include +#include +#include -# include "cert-common.h" -# include "utils.h" +#include "cert-common.h" +#include "utils.h" /* This program tests whether the compress_certificate extensions works as expected */ -# define PRIO "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3" -# define CHECK(X) assert((X)>=0) +#define PRIO "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3" +#define CHECK(X) assert((X) >= 0) static pid_t child; int client_ok; @@ -76,7 +76,7 @@ static void server_log_func(int level, const char *str) static int client_callback(gnutls_session_t session, unsigned htype, unsigned post, unsigned incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { if (incoming == 0) return 0; @@ -90,7 +90,7 @@ static int client_callback(gnutls_session_t session, unsigned htype, static int server_callback(gnutls_session_t session, unsigned htype, unsigned post, unsigned incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { if (incoming == 0) return 0; @@ -109,10 +109,10 @@ static void client(int fd) gnutls_session_t session; gnutls_certificate_credentials_t x509_cred; gnutls_compression_method_t method; - gnutls_compression_method_t methods[] = - { GNUTLS_COMP_ZLIB, GNUTLS_COMP_BROTLI }; + gnutls_compression_method_t methods[] = { GNUTLS_COMP_ZLIB, + GNUTLS_COMP_BROTLI }; size_t methods_len = - sizeof(methods) / sizeof(gnutls_compression_method_t); + sizeof(methods) / sizeof(gnutls_compression_method_t); global_init(); @@ -122,34 +122,32 @@ static void client(int fd) } CHECK(gnutls_certificate_allocate_credentials(&x509_cred)); - CHECK(gnutls_certificate_set_x509_trust_mem - (x509_cred, &ca3_cert, GNUTLS_X509_FMT_PEM)); - CHECK(gnutls_certificate_set_x509_key_mem - (x509_cred, &cli_ca3_cert_chain, &cli_ca3_key, - GNUTLS_X509_FMT_PEM)); + CHECK(gnutls_certificate_set_x509_trust_mem(x509_cred, &ca3_cert, + GNUTLS_X509_FMT_PEM)); + CHECK(gnutls_certificate_set_x509_key_mem( + x509_cred, &cli_ca3_cert_chain, &cli_ca3_key, + GNUTLS_X509_FMT_PEM)); CHECK(gnutls_init(&session, GNUTLS_CLIENT)); - CHECK(gnutls_credentials_set - (session, GNUTLS_CRD_CERTIFICATE, x509_cred)); + CHECK(gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, + x509_cred)); CHECK(gnutls_priority_set_direct(session, PRIO, NULL)); - ret = - gnutls_compress_certificate_set_methods(session, methods, - methods_len); + ret = gnutls_compress_certificate_set_methods(session, methods, + methods_len); if (ret < 0) { fail("client: setting compression method failed (%s)\n\n", gnutls_strerror(ret)); terminate(); } - gnutls_handshake_set_hook_function(session, - GNUTLS_HANDSHAKE_COMPRESSED_CERTIFICATE_PKT, - GNUTLS_HOOK_PRE, client_callback); + gnutls_handshake_set_hook_function( + session, GNUTLS_HANDSHAKE_COMPRESSED_CERTIFICATE_PKT, + GNUTLS_HOOK_PRE, client_callback); gnutls_transport_set_int(session, fd); do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed: %s\n", strerror(ret)); goto cleanup; @@ -158,8 +156,8 @@ static void client(int fd) success("client: Handshake was completed\n"); if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); method = gnutls_compress_certificate_get_selected_method(session); if (method != GNUTLS_COMP_BROTLI) @@ -180,7 +178,7 @@ static void client(int fd) if (debug) success("client: finished\n"); - cleanup: +cleanup: close(fd); gnutls_deinit(session); gnutls_certificate_free_credentials(x509_cred); @@ -194,10 +192,11 @@ static void server(int fd) gnutls_session_t session; gnutls_certificate_credentials_t x509_cred; gnutls_compression_method_t method; - gnutls_compression_method_t methods[] = - { GNUTLS_COMP_ZSTD, GNUTLS_COMP_BROTLI, GNUTLS_COMP_ZLIB }; + gnutls_compression_method_t methods[] = { GNUTLS_COMP_ZSTD, + GNUTLS_COMP_BROTLI, + GNUTLS_COMP_ZLIB }; size_t methods_len = - sizeof(methods) / sizeof(gnutls_compression_method_t); + sizeof(methods) / sizeof(gnutls_compression_method_t); global_init(); @@ -207,35 +206,33 @@ static void server(int fd) } CHECK(gnutls_certificate_allocate_credentials(&x509_cred)); - CHECK(gnutls_certificate_set_x509_trust_mem - (x509_cred, &ca3_cert, GNUTLS_X509_FMT_PEM)); - CHECK(gnutls_certificate_set_x509_key_mem - (x509_cred, &server_ca3_localhost_cert_chain, &server_ca3_key, - GNUTLS_X509_FMT_PEM)); + CHECK(gnutls_certificate_set_x509_trust_mem(x509_cred, &ca3_cert, + GNUTLS_X509_FMT_PEM)); + CHECK(gnutls_certificate_set_x509_key_mem( + x509_cred, &server_ca3_localhost_cert_chain, &server_ca3_key, + GNUTLS_X509_FMT_PEM)); CHECK(gnutls_init(&session, GNUTLS_SERVER)); - CHECK(gnutls_credentials_set - (session, GNUTLS_CRD_CERTIFICATE, x509_cred)); + CHECK(gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, + x509_cred)); CHECK(gnutls_priority_set_direct(session, PRIO, NULL)); - ret = - gnutls_compress_certificate_set_methods(session, methods, - methods_len); + ret = gnutls_compress_certificate_set_methods(session, methods, + methods_len); if (ret < 0) { fail("server: setting compression method failed (%s)\n\n", gnutls_strerror(ret)); terminate(); } - gnutls_handshake_set_hook_function(session, - GNUTLS_HANDSHAKE_COMPRESSED_CERTIFICATE_PKT, - GNUTLS_HOOK_PRE, server_callback); + gnutls_handshake_set_hook_function( + session, GNUTLS_HANDSHAKE_COMPRESSED_CERTIFICATE_PKT, + GNUTLS_HOOK_PRE, server_callback); gnutls_certificate_server_set_request(session, GNUTLS_CERT_REQUEST); gnutls_transport_set_int(session, fd); do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("server: Handshake has failed (%s)\n\n", gnutls_strerror(ret)); @@ -245,8 +242,8 @@ static void server(int fd) success("server: Handshake was completed\n"); if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name(gnutls_protocol_get_version - (session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); method = gnutls_compress_certificate_get_selected_method(session); if (method != GNUTLS_COMP_ZLIB) @@ -267,7 +264,7 @@ static void server(int fd) if (debug) success("server: finished\n"); - cleanup: +cleanup: close(fd); gnutls_deinit(session); gnutls_certificate_free_credentials(x509_cred); @@ -307,4 +304,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls13/cookie.c b/tests/tls13/cookie.c index 54a6f8ee4c..e331bcd67a 100644 --- a/tests/tls13/cookie.c +++ b/tests/tls13/cookie.c @@ -23,7 +23,7 @@ * by the gnutls client. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -39,19 +39,19 @@ int main(int argc, char **argv) #else -# include -# include -# include -# if !defined(_WIN32) -# include -# include -# endif -# include -# include -# include +#include +#include +#include +#if !defined(_WIN32) +#include +#include +#endif +#include +#include +#include -# include "utils.h" -# include "cert-common.h" +#include "utils.h" +#include "cert-common.h" const char *side = ""; @@ -63,13 +63,7 @@ static void tls_log_func(int level, const char *str) static int TLSEXT_TYPE_server_sent = 0; static int TLSEXT_TYPE_server_received = 0; -static const unsigned char ext_data[] = { - 0x00, - 0x03, - 0xFE, - 0xED, - 0xFF -}; +static const unsigned char ext_data[] = { 0x00, 0x03, 0xFE, 0xED, 0xFF }; static int ext_recv_server_cookie(gnutls_session_t session, const unsigned char *buf, size_t buflen) @@ -82,7 +76,7 @@ static int ext_recv_server_cookie(gnutls_session_t session, TLSEXT_TYPE_server_received = 1; - return 0; //Success + return 0; //Success } static int ext_send_server_cookie(gnutls_session_t session, @@ -117,8 +111,8 @@ static void client(int sd) gnutls_init(&session, GNUTLS_CLIENT); /* Use default priorities */ - assert(gnutls_priority_set_direct - (session, "NORMAL:-VERS-ALL:+VERS-TLS1.3", NULL) >= 0); + assert(gnutls_priority_set_direct( + session, "NORMAL:-VERS-ALL:+VERS-TLS1.3", NULL) >= 0); /* put the anonymous credentials to the current session */ @@ -141,7 +135,7 @@ static void client(int sd) gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(sd); gnutls_deinit(session); @@ -167,30 +161,28 @@ static void server(int sd) side = "server"; gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_init(&session, GNUTLS_SERVER); /* force a hello retry request by disabling all the groups that are * enabled by default. */ - assert(gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.3:" - "-GROUP-SECP256R1:-GROUP-X25519:-GROUP-FFDHE2048", - NULL) >= 0); + assert(gnutls_priority_set_direct( + session, + "NORMAL:-VERS-ALL:+VERS-TLS1.3:" + "-GROUP-SECP256R1:-GROUP-X25519:-GROUP-FFDHE2048", + NULL) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, serverx509cred); - ret = - gnutls_session_ext_register(session, "cookie_server", 44, - GNUTLS_EXT_TLS, ext_recv_server_cookie, - ext_send_server_cookie, NULL, NULL, - NULL, - GNUTLS_EXT_FLAG_CLIENT_HELLO | - GNUTLS_EXT_FLAG_HRR | - GNUTLS_EXT_FLAG_OVERRIDE_INTERNAL | - GNUTLS_EXT_FLAG_IGNORE_CLIENT_REQUEST); + ret = gnutls_session_ext_register( + session, "cookie_server", 44, GNUTLS_EXT_TLS, + ext_recv_server_cookie, ext_send_server_cookie, NULL, NULL, + NULL, + GNUTLS_EXT_FLAG_CLIENT_HELLO | GNUTLS_EXT_FLAG_HRR | + GNUTLS_EXT_FLAG_OVERRIDE_INTERNAL | + GNUTLS_EXT_FLAG_IGNORE_CLIENT_REQUEST); if (ret != 0) fail("server: cannot register: %s", gnutls_strerror(ret)); @@ -216,7 +208,7 @@ static void server(int sd) */ gnutls_bye(session, GNUTLS_SHUT_WR); - end: +end: close(sd); gnutls_deinit(session); @@ -266,4 +258,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls13/ext-parse.h b/tests/tls13/ext-parse.h index c3dd7c41b0..4f8ce1c7cb 100644 --- a/tests/tls13/ext-parse.h +++ b/tests/tls13/ext-parse.h @@ -24,36 +24,42 @@ #define TLS_EXT_SUPPORTED_VERSIONS 43 #define TLS_EXT_POST_HANDSHAKE 49 -#define SKIP16(pos, _total) { \ - uint16_t _s; \ - if ((size_t)pos+2 > (size_t)_total) fail("error0: at %d total: %d\n", pos+2, _total); \ - _s = (msg->data[pos] << 8) | msg->data[pos+1]; \ - if ((size_t)(pos+2+_s) > (size_t)_total) fail("error1: at %d field: %d, total: %d\n", pos+2, (int)_s, _total); \ - pos += 2+_s; \ +#define SKIP16(pos, _total) \ + { \ + uint16_t _s; \ + if ((size_t)pos + 2 > (size_t)_total) \ + fail("error0: at %d total: %d\n", pos + 2, _total); \ + _s = (msg->data[pos] << 8) | msg->data[pos + 1]; \ + if ((size_t)(pos + 2 + _s) > (size_t)_total) \ + fail("error1: at %d field: %d, total: %d\n", pos + 2, \ + (int)_s, _total); \ + pos += 2 + _s; \ } -#define SKIP8(pos, _total) { \ - uint8_t _s; \ - if ((size_t)pos+1 > (size_t)_total) fail("error\n"); \ - _s = msg->data[pos]; \ - if ((size_t)(pos+1+_s) > (size_t)_total) fail("error\n"); \ - pos += 1+_s; \ +#define SKIP8(pos, _total) \ + { \ + uint8_t _s; \ + if ((size_t)pos + 1 > (size_t)_total) \ + fail("error\n"); \ + _s = msg->data[pos]; \ + if ((size_t)(pos + 1 + _s) > (size_t)_total) \ + fail("error\n"); \ + pos += 1 + _s; \ } -typedef void (*ext_parse_func)(void *priv, gnutls_datum_t * extdata); +typedef void (*ext_parse_func)(void *priv, gnutls_datum_t *extdata); #define HANDSHAKE_SESSION_ID_POS 34 #if defined __clang__ || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunused-function" #endif /* Returns 0 if the extension was not found, 1 otherwise. */ -static unsigned find_client_extension(const gnutls_datum_t * msg, - unsigned extnr, void *priv, - ext_parse_func cb) +static unsigned find_client_extension(const gnutls_datum_t *msg, unsigned extnr, + void *priv, ext_parse_func cb) { unsigned pos; @@ -93,14 +99,15 @@ static unsigned find_client_extension(const gnutls_datum_t * msg, if (type != extnr) { SKIP16(pos, msg->size); - } else { /* found */ - ssize_t size = - (msg->data[pos] << 8) | msg->data[pos + 1]; + } else { /* found */ + ssize_t size = (msg->data[pos] << 8) | + msg->data[pos + 1]; gnutls_datum_t data; pos += 2; if (pos + size > msg->size) { - fail("error in extension length (pos: %d, ext: %d, total: %d)\n", pos, (int)size, msg->size); + fail("error in extension length (pos: %d, ext: %d, total: %d)\n", + pos, (int)size, msg->size); } data.data = &msg->data[pos]; data.size = size; @@ -112,7 +119,7 @@ static unsigned find_client_extension(const gnutls_datum_t * msg, return 0; } -static unsigned is_client_extension_last(const gnutls_datum_t * msg, +static unsigned is_client_extension_last(const gnutls_datum_t *msg, unsigned extnr) { unsigned pos, found = 0; @@ -158,7 +165,7 @@ static unsigned is_client_extension_last(const gnutls_datum_t * msg, return 0; } SKIP16(pos, msg->size); - } else { /* found */ + } else { /* found */ found = 1; SKIP16(pos, msg->size); } @@ -171,9 +178,8 @@ static unsigned is_client_extension_last(const gnutls_datum_t * msg, #define TLS_RANDOM_SIZE 32 -static unsigned find_server_extension(const gnutls_datum_t * msg, - unsigned extnr, void *priv, - ext_parse_func cb) +static unsigned find_server_extension(const gnutls_datum_t *msg, unsigned extnr, + void *priv, ext_parse_func cb) { unsigned pos = 0; @@ -186,9 +192,8 @@ static unsigned find_server_extension(const gnutls_datum_t * msg, } if (msg->data[1] >= 0x04) { - success - ("assuming TLS 1.3 or better hello format (seen %d.%d)\n", - (int)msg->data[0], (int)msg->data[1]); + success("assuming TLS 1.3 or better hello format (seen %d.%d)\n", + (int)msg->data[0], (int)msg->data[1]); } pos += 2 + TLS_RANDOM_SIZE; @@ -217,14 +222,15 @@ static unsigned find_server_extension(const gnutls_datum_t * msg, if (type != extnr) { SKIP16(pos, msg->size); - } else { /* found */ - ssize_t size = - (msg->data[pos] << 8) | msg->data[pos + 1]; + } else { /* found */ + ssize_t size = (msg->data[pos] << 8) | + msg->data[pos + 1]; gnutls_datum_t data; pos += 2; if (pos + size < msg->size) { - fail("error in server extension length (pos: %d, total: %d)\n", pos, msg->size); + fail("error in server extension length (pos: %d, total: %d)\n", + pos, msg->size); } data.data = &msg->data[pos]; data.size = size; @@ -238,5 +244,5 @@ static unsigned find_server_extension(const gnutls_datum_t * msg, } #if defined __clang__ || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) -# pragma GCC diagnostic pop +#pragma GCC diagnostic pop #endif diff --git a/tests/tls13/hello_retry_request.c b/tests/tls13/hello_retry_request.c index 72451c2b67..f9ef3e9986 100644 --- a/tests/tls13/hello_retry_request.c +++ b/tests/tls13/hello_retry_request.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,29 +35,28 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "cert-common.h" -# include "utils.h" -# include "tls13/ext-parse.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cert-common.h" +#include "utils.h" +#include "tls13/ext-parse.h" /* This program tests whether the version in Hello Retry Request message * is the expected */ const char *testname = ""; -# define myfail(fmt, ...) \ - fail("%s: "fmt, testname, ##__VA_ARGS__) +#define myfail(fmt, ...) fail("%s: " fmt, testname, ##__VA_ARGS__) static void server_log_func(int level, const char *str) { @@ -69,7 +68,7 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define HANDSHAKE_SESSION_ID_POS 34 +#define HANDSHAKE_SESSION_ID_POS 34 struct ctx_st { unsigned hrr_seen; @@ -80,7 +79,7 @@ struct ctx_st { static int hello_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { struct ctx_st *ctx = gnutls_session_get_ptr(session); assert(ctx != NULL); @@ -88,7 +87,8 @@ static int hello_callback(gnutls_session_t session, unsigned int htype, if (htype == GNUTLS_HANDSHAKE_HELLO_RETRY_REQUEST) ctx->hrr_seen = 1; - if (htype == GNUTLS_HANDSHAKE_CLIENT_HELLO && post == GNUTLS_HOOK_POST) { + if (htype == GNUTLS_HANDSHAKE_CLIENT_HELLO && + post == GNUTLS_HOOK_POST) { size_t session_id_len; uint8_t *session_id; @@ -141,10 +141,10 @@ static void client(int fd) gnutls_handshake_set_timeout(session, get_timeout()); gnutls_session_set_ptr(session, &ctx); - ret = - gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-X25519", - NULL); + ret = gnutls_priority_set_direct( + session, + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-X25519", + NULL); if (ret < 0) myfail("cannot set TLS 1.3 priorities\n"); @@ -157,8 +157,7 @@ static void client(int fd) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); assert(ctx.hrr_seen != 0); @@ -190,10 +189,10 @@ static void server(int fd) gnutls_handshake_set_timeout(session, get_timeout()); /* server only supports x25519, client advertises secp256r1 */ - assert(gnutls_priority_set_direct - (session, - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519", - NULL) >= 0); + assert(gnutls_priority_set_direct( + session, + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519", + NULL) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -201,7 +200,7 @@ static void server(int fd) do { ret = gnutls_handshake(session); - if (ret == GNUTLS_E_INTERRUPTED) { /* expected */ + if (ret == GNUTLS_E_INTERRUPTED) { /* expected */ break; } } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); @@ -261,4 +260,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls13/hello_retry_request_resume.c b/tests/tls13/hello_retry_request_resume.c index aad2388ae5..d6059fe2ff 100644 --- a/tests/tls13/hello_retry_request_resume.c +++ b/tests/tls13/hello_retry_request_resume.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,20 +35,20 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "../lib/handshake-defs.h" -# include "cert-common.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../lib/handshake-defs.h" +#include "cert-common.h" +#include "utils.h" /* This program tests whether the certificate seen in Post Handshake Auth * is found in a resumed session under TLS 1.3. @@ -66,7 +66,7 @@ static void client_log_func(int level, const char *str) static int ticket_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { gnutls_datum *d; int ret; @@ -105,29 +105,28 @@ static void client(int fd) assert(gnutls_certificate_allocate_credentials(&x509_cred) >= 0); - retry: +retry: /* Initialize TLS session */ assert(gnutls_init(&session, GNUTLS_CLIENT) >= 0); gnutls_handshake_set_timeout(session, get_timeout()); - ret = - gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-X25519", - NULL); + ret = gnutls_priority_set_direct( + session, + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-X25519", + NULL); if (ret < 0) fail("cannot set TLS 1.3 priorities\n"); if (try == 0) { gnutls_session_set_ptr(session, &session_data); - gnutls_handshake_set_hook_function(session, - GNUTLS_HANDSHAKE_NEW_SESSION_TICKET, - GNUTLS_HOOK_BOTH, - ticket_callback); + gnutls_handshake_set_hook_function( + session, GNUTLS_HANDSHAKE_NEW_SESSION_TICKET, + GNUTLS_HOOK_BOTH, ticket_callback); } else { - assert(gnutls_session_set_data - (session, session_data.data, session_data.size) >= 0); + assert(gnutls_session_set_data(session, session_data.data, + session_data.size) >= 0); } gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -138,8 +137,7 @@ static void client(int fd) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret != 0) fail("handshake failed: %s\n", gnutls_strerror(ret)); @@ -166,11 +164,11 @@ static void client(int fd) gnutls_global_deinit(); } -# define HANDSHAKE_SESSION_ID_POS 34 +#define HANDSHAKE_SESSION_ID_POS 34 static int client_hello_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { gnutls_datum *d; @@ -210,17 +208,17 @@ static void server(int fd) gnutls_certificate_set_x509_key_mem(x509_cred, &server_cert, &server_key, GNUTLS_X509_FMT_PEM); - retry: +retry: assert(gnutls_init(&session, GNUTLS_SERVER) >= 0); assert(gnutls_session_ticket_enable_server(session, &skey) >= 0); gnutls_handshake_set_timeout(session, get_timeout()); /* server only supports x25519, client advertises secp256r1 */ - assert(gnutls_priority_set_direct - (session, - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519", - NULL) >= 0); + assert(gnutls_priority_set_direct( + session, + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-GROUP-ALL:+GROUP-X25519", + NULL) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -255,7 +253,8 @@ static void server(int fd) session_id.size != retry_session_id.size || memcmp(session_id.data, retry_session_id.data, session_id.size)) { - fail("session ids are different after resumption: %u, %u\n", session_id.size, retry_session_id.size); + fail("session ids are different after resumption: %u, %u\n", + session_id.size, retry_session_id.size); } } @@ -321,6 +320,5 @@ void doit(void) client(fd[1]); exit(0); } - } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls13/key_limits.c b/tests/tls13/key_limits.c index 3c5eda8fef..c7ea50b225 100644 --- a/tests/tls13/key_limits.c +++ b/tests/tls13/key_limits.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -71,8 +71,7 @@ static void start(const char *name, const char *prio, unsigned exp_update) /* Init Server */ assert(gnutls_certificate_allocate_credentials(&scred) >= 0); - assert(gnutls_certificate_set_x509_key_mem(scred, - &server_cert, + assert(gnutls_certificate_set_x509_key_mem(scred, &server_cert, &server_key, GNUTLS_X509_FMT_PEM) >= 0); @@ -94,8 +93,8 @@ static void start(const char *name, const char *prio, unsigned exp_update) /* Init client */ gnutls_certificate_allocate_credentials(&ccred); - assert(gnutls_certificate_set_x509_trust_mem - (ccred, &ca3_cert, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_trust_mem(ccred, &ca3_cert, + GNUTLS_X509_FMT_PEM) >= 0); gnutls_init(&client, GNUTLS_CLIENT); @@ -115,22 +114,24 @@ static void start(const char *name, const char *prio, unsigned exp_update) success("Handshake established\n"); assert(gnutls_record_get_state(server, 0, NULL, NULL, NULL, seq) >= 0); - assert(gnutls_record_set_state - (server, 0, (void *)"\x00\x00\x00\x00\x00\xff\xff\xfa") >= 0); + assert(gnutls_record_set_state( + server, 0, (void *)"\x00\x00\x00\x00\x00\xff\xff\xfa") >= + 0); assert(gnutls_record_get_state(client, 1, NULL, NULL, NULL, seq) >= 0); - assert(gnutls_record_set_state - (client, 1, (void *)"\x00\x00\x00\x00\x00\xff\xff\xfa") >= 0); + assert(gnutls_record_set_state( + client, 1, (void *)"\x00\x00\x00\x00\x00\xff\xff\xfa") >= + 0); memset(buffer, 1, sizeof(buffer)); for (i = 0; i < 32; i++) { - usleep(10000); /* some systems like FreeBSD have their buffers full during this send */ + usleep(10000); /* some systems like FreeBSD have their buffers full during this send */ do { - sret = - gnutls_record_send(server, buffer, sizeof(buffer)); - } while (sret == GNUTLS_E_AGAIN - || sret == GNUTLS_E_INTERRUPTED); + sret = gnutls_record_send(server, buffer, + sizeof(buffer)); + } while (sret == GNUTLS_E_AGAIN || + sret == GNUTLS_E_INTERRUPTED); if (sret < 0) { fail("Error sending %d byte packet: %s\n", @@ -142,11 +143,10 @@ static void start(const char *name, const char *prio, unsigned exp_update) (int)sizeof(buffer), sret); } do { - cret = - gnutls_record_recv_seq(client, buffer, MAX_BUF, - seq); - } while (cret == GNUTLS_E_AGAIN - || cret == GNUTLS_E_INTERRUPTED); + cret = gnutls_record_recv_seq(client, buffer, MAX_BUF, + seq); + } while (cret == GNUTLS_E_AGAIN || + cret == GNUTLS_E_INTERRUPTED); if (memcmp(seq, "\x00\x00\x00\x00\x00\x00\x00\x01", 8) == 0) { update_happened = 1; @@ -176,11 +176,11 @@ static void start(const char *name, const char *prio, unsigned exp_update) } #define AES_GCM "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-128-GCM" -#define CHACHA_POLY1305 "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+CHACHA20-POLY1305" +#define CHACHA_POLY1305 \ + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+CHACHA20-POLY1305" void doit(void) { - start("aes-gcm", AES_GCM, 1); if (!gnutls_fips140_mode_enabled()) { start("chacha20", CHACHA_POLY1305, 0); diff --git a/tests/tls13/key_share.c b/tests/tls13/key_share.c index f8afa73ef1..87e0425c82 100644 --- a/tests/tls13/key_share.c +++ b/tests/tls13/key_share.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -40,8 +40,7 @@ const char *testname = ""; -#define myfail(fmt, ...) \ - fail("%s: "fmt, testname, ##__VA_ARGS__) +#define myfail(fmt, ...) fail("%s: " fmt, testname, ##__VA_ARGS__) const char *side = ""; @@ -51,12 +50,9 @@ static void tls_log_func(int level, const char *str) } unsigned int tls_id_to_group[] = { - [23] = GNUTLS_GROUP_SECP256R1, - [24] = GNUTLS_GROUP_SECP384R1, - [29] = GNUTLS_GROUP_X25519, - [30] = GNUTLS_GROUP_X448, - [0x100] = GNUTLS_GROUP_FFDHE2048, - [0x101] = GNUTLS_GROUP_FFDHE3072 + [23] = GNUTLS_GROUP_SECP256R1, [24] = GNUTLS_GROUP_SECP384R1, + [29] = GNUTLS_GROUP_X25519, [30] = GNUTLS_GROUP_X448, + [0x100] = GNUTLS_GROUP_FFDHE2048, [0x101] = GNUTLS_GROUP_FFDHE3072 }; #define TLS_EXT_KEY_SHARE 51 @@ -66,8 +62,7 @@ typedef struct ctx_st { unsigned ngroups; } ctx_st; -static -void check_ks_contents(void *priv, gnutls_datum_t * msg) +static void check_ks_contents(void *priv, gnutls_datum_t *msg) { ctx_st *ctx; int len; @@ -112,11 +107,12 @@ void check_ks_contents(void *priv, gnutls_datum_t * msg) static int client_hello_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { - if (htype == GNUTLS_HANDSHAKE_CLIENT_HELLO && post == GNUTLS_HOOK_POST) { - if (find_client_extension - (msg, TLS_EXT_KEY_SHARE, session, check_ks_contents) == 0) + if (htype == GNUTLS_HANDSHAKE_CLIENT_HELLO && + post == GNUTLS_HOOK_POST) { + if (find_client_extension(msg, TLS_EXT_KEY_SHARE, session, + check_ks_contents) == 0) fail("Could not find key share extension!\n"); } @@ -141,8 +137,7 @@ static void start(const char *name, const char *prio, unsigned flag, /* Init server */ assert(gnutls_certificate_allocate_credentials(&scred) >= 0); - assert(gnutls_certificate_set_x509_key_mem(scred, - &server_cert, + assert(gnutls_certificate_set_x509_key_mem(scred, &server_cert, &server_key, GNUTLS_X509_FMT_PEM) >= 0); @@ -167,8 +162,8 @@ static void start(const char *name, const char *prio, unsigned flag, /* Init client */ gnutls_certificate_allocate_credentials(&ccred); - assert(gnutls_certificate_set_x509_trust_mem - (ccred, &ca3_cert, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_trust_mem(ccred, &ca3_cert, + GNUTLS_X509_FMT_PEM) >= 0); gnutls_init(&client, GNUTLS_CLIENT | flag); diff --git a/tests/tls13/key_update.c b/tests/tls13/key_update.c index 93b9ee9bbc..c6a95c1770 100644 --- a/tests/tls13/key_update.c +++ b/tests/tls13/key_update.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -44,14 +44,15 @@ static void tls_log_func(int level, const char *str) } #define MAX_BUF 1024 -#define MSG "Hello TLS, and hi and how are you and more data here... and more... and even more and even more more data..." +#define MSG \ + "Hello TLS, and hi and how are you and more data here... and more... and even more and even more more data..." static unsigned key_update_msg_inc = 0; static unsigned key_update_msg_out = 0; static int hsk_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { assert(post == GNUTLS_HOOK_PRE); @@ -88,16 +89,13 @@ static void run(const char *name, unsigned test) /* Init server */ assert(gnutls_certificate_allocate_credentials(&scred) >= 0); - assert(gnutls_certificate_set_x509_key_mem(scred, - &server_ca3_localhost_cert, - &server_ca3_key, - GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem( + scred, &server_ca3_localhost_cert, &server_ca3_key, + GNUTLS_X509_FMT_PEM) >= 0); assert(gnutls_init(&server, GNUTLS_SERVER) >= 0); - ret = - gnutls_priority_set_direct(server, - "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", - NULL); + ret = gnutls_priority_set_direct( + server, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", NULL); if (ret < 0) exit(1); @@ -108,14 +106,12 @@ static void run(const char *name, unsigned test) /* Init client */ assert(gnutls_certificate_allocate_credentials(&ccred) >= 0); - assert(gnutls_certificate_set_x509_trust_mem - (ccred, &ca3_cert, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_trust_mem(ccred, &ca3_cert, + GNUTLS_X509_FMT_PEM) >= 0); gnutls_init(&client, GNUTLS_CLIENT); - ret = - gnutls_priority_set_direct(client, - "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", - NULL); + ret = gnutls_priority_set_direct( + client, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", NULL); assert(ret >= 0); ret = gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, ccred); @@ -273,5 +269,5 @@ void doit(void) run("single", 4); run("single", 5); run("single", 6); - run("all", 0); /* all one after each other */ + run("all", 0); /* all one after each other */ } diff --git a/tests/tls13/key_update_multiple.c b/tests/tls13/key_update_multiple.c index 06c63d5d44..19eafea4bd 100644 --- a/tests/tls13/key_update_multiple.c +++ b/tests/tls13/key_update_multiple.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -49,7 +49,8 @@ static void tls_log_func(int level, const char *str) } #define MAX_BUF 1024 -#define MSG "Hello TLS, and hi and how are you and more data here... and more... and even more and even more more data..." +#define MSG \ + "Hello TLS, and hi and how are you and more data here... and more... and even more and even more more data..." /* These must match the definitions in lib/tls13/key_update.c. */ #define KEY_UPDATES_WINDOW 1000 @@ -60,7 +61,7 @@ static unsigned key_update_msg_out = 0; static int hsk_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { assert(post == GNUTLS_HOOK_PRE); @@ -100,16 +101,13 @@ static void run(const char *name, bool exceed_limit) /* Init server */ assert(gnutls_certificate_allocate_credentials(&scred) >= 0); - assert(gnutls_certificate_set_x509_key_mem(scred, - &server_ca3_localhost_cert, - &server_ca3_key, - GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem( + scred, &server_ca3_localhost_cert, &server_ca3_key, + GNUTLS_X509_FMT_PEM) >= 0); assert(gnutls_init(&server, GNUTLS_SERVER) >= 0); - ret = - gnutls_priority_set_direct(server, - "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", - NULL); + ret = gnutls_priority_set_direct( + server, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", NULL); if (ret < 0) exit(1); @@ -120,14 +118,12 @@ static void run(const char *name, bool exceed_limit) /* Init client */ assert(gnutls_certificate_allocate_credentials(&ccred) >= 0); - assert(gnutls_certificate_set_x509_trust_mem - (ccred, &ca3_cert, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_trust_mem(ccred, &ca3_cert, + GNUTLS_X509_FMT_PEM) >= 0); gnutls_init(&client, GNUTLS_CLIENT); - ret = - gnutls_priority_set_direct(client, - "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", - NULL); + ret = gnutls_priority_set_direct( + client, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", NULL); assert(ret >= 0); ret = gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, ccred); @@ -193,8 +189,7 @@ static void run(const char *name, bool exceed_limit) fail("server didn't reject excessive number of key updates\n"); else { if (debug) - success - ("server rejected excessive number of key updates\n"); + success("server rejected excessive number of key updates\n"); } } else { virt_sec_sleep(KEY_UPDATES_WINDOW / 1000 + 1); diff --git a/tests/tls13/multi-ocsp.c b/tests/tls13/multi-ocsp.c index 4d9ae660be..4ce885c701 100644 --- a/tests/tls13/multi-ocsp.c +++ b/tests/tls13/multi-ocsp.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -32,15 +32,15 @@ #ifdef ENABLE_OCSP -# include "ocsp-common.h" -# include "cert-common.h" -# include "utils.h" +#include "ocsp-common.h" +#include "cert-common.h" +#include "utils.h" /* Tests whether we can send and receive multiple OCSP responses * one for each certificate in a chain under TLS 1.3. */ -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1469186559; if (t) @@ -50,15 +50,15 @@ static time_t mytime(time_t * t) } static const gnutls_datum_t ocsp_resp_localhost[] = { - {(void *)_ocsp_ca3_localhost_unknown, - sizeof(_ocsp_ca3_localhost_unknown)}, - {NULL, 0} + { (void *)_ocsp_ca3_localhost_unknown, + sizeof(_ocsp_ca3_localhost_unknown) }, + { NULL, 0 } }; static const gnutls_datum_t ocsp_resp_localhost6[] = { - {(void *)_ocsp_ca3_localhost6_unknown, - sizeof(_ocsp_ca3_localhost6_unknown)}, - {(void *)_ocsp_subca3_unknown, sizeof(_ocsp_subca3_unknown)} + { (void *)_ocsp_ca3_localhost6_unknown, + sizeof(_ocsp_ca3_localhost6_unknown) }, + { (void *)_ocsp_subca3_unknown, sizeof(_ocsp_subca3_unknown) } }; typedef struct ctx_st { @@ -70,8 +70,7 @@ typedef struct ctx_st { static ctx_st test_localhost = { "single response", ocsp_resp_localhost, 1 }; static ctx_st test_localhost6 = { "two responses", ocsp_resp_localhost6, 2 }; -# define myfail(fmt, ...) \ - fail("%s: "fmt, test->name, ##__VA_ARGS__) +#define myfail(fmt, ...) fail("%s: " fmt, test->name, ##__VA_ARGS__) static void check_response(gnutls_session_t session, void *priv) { @@ -97,9 +96,8 @@ static void check_response(gnutls_session_t session, void *priv) } if (resp.size != test->ocsp[i].size) { - myfail - ("did not receive the expected response size for %d\n", - i); + myfail("did not receive the expected response size for %d\n", + i); } if (memcmp(resp.data, test->ocsp[i].data, resp.size) != 0) { @@ -109,11 +107,9 @@ static void check_response(gnutls_session_t session, void *priv) } if (i != test->nocsp) { - myfail - ("The number of OCSP responses received (%d) does not match the expected (%d)\n", - i, test->nocsp); + myfail("The number of OCSP responses received (%d) does not match the expected (%d)\n", + i, test->nocsp); } - } static void tls_log_func(int level, const char *str) @@ -131,7 +127,7 @@ void doit(void) char certname1[TMPNAME_SIZE]; char certname2[TMPNAME_SIZE]; FILE *fp; - unsigned index1, index2; /* indexes of certs */ + unsigned index1, index2; /* indexes of certs */ global_init(); gnutls_global_set_time_function(mytime); @@ -151,17 +147,14 @@ void doit(void) fp = fopen(certfile1, "wb"); if (fp == NULL) fail("error in fopen\n"); - assert(fwrite - (server_localhost_ca3_cert_chain_pem, 1, - strlen(server_localhost_ca3_cert_chain_pem), fp) > 0); - assert(fwrite - (server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), - fp) > 0); + assert(fwrite(server_localhost_ca3_cert_chain_pem, 1, + strlen(server_localhost_ca3_cert_chain_pem), fp) > 0); + assert(fwrite(server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), + fp) > 0); fclose(fp); - ret = gnutls_certificate_set_x509_key_file2(xcred, certfile1, certfile1, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_certificate_set_x509_key_file2( + xcred, certfile1, certfile1, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) fail("set_x509_key_file failed: %s\n", gnutls_strerror(ret)); index1 = ret; @@ -172,44 +165,32 @@ void doit(void) fp = fopen(certfile2, "wb"); if (fp == NULL) fail("error in fopen\n"); - assert(fwrite - (server_localhost6_ca3_cert_chain_pem, 1, - strlen(server_localhost6_ca3_cert_chain_pem), fp) > 0); - assert(fwrite - (server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), - fp) > 0); + assert(fwrite(server_localhost6_ca3_cert_chain_pem, 1, + strlen(server_localhost6_ca3_cert_chain_pem), fp) > 0); + assert(fwrite(server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), + fp) > 0); fclose(fp); - ret = gnutls_certificate_set_x509_key_file2(xcred, certfile2, certfile2, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_certificate_set_x509_key_file2( + xcred, certfile2, certfile2, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) fail("set_x509_key_file failed: %s\n", gnutls_strerror(ret)); index2 = ret; /* set OCSP response1 */ - ret = - gnutls_certificate_set_ocsp_status_request_mem(xcred, - &test_localhost.ocsp - [0], index1, - GNUTLS_X509_FMT_DER); + ret = gnutls_certificate_set_ocsp_status_request_mem( + xcred, &test_localhost.ocsp[0], index1, GNUTLS_X509_FMT_DER); if (ret < 0) fail("ocsp file set failed: %s\n", gnutls_strerror(ret)); /* set OCSP response2 */ - ret = - gnutls_certificate_set_ocsp_status_request_mem(xcred, - &test_localhost6.ocsp - [0], index2, - GNUTLS_X509_FMT_DER); + ret = gnutls_certificate_set_ocsp_status_request_mem( + xcred, &test_localhost6.ocsp[0], index2, GNUTLS_X509_FMT_DER); if (ret < 0) fail("ocsp file set failed: %s\n", gnutls_strerror(ret)); - ret = - gnutls_certificate_set_ocsp_status_request_mem(xcred, - &test_localhost6.ocsp - [1], index2, - GNUTLS_X509_FMT_DER); + ret = gnutls_certificate_set_ocsp_status_request_mem( + xcred, &test_localhost6.ocsp[1], index2, GNUTLS_X509_FMT_DER); if (ret < 0) fail("ocsp file set failed: %s\n", gnutls_strerror(ret)); @@ -221,9 +202,8 @@ void doit(void) GNUTLS_VERIFY_DISABLE_CRL_CHECKS) fail("error in gnutls_certificate_set_verify_flags\n"); - ret = - gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("error in setting trust cert: %s\n", gnutls_strerror(ret)); } diff --git a/tests/tls13/no-auto-send-ticket.c b/tests/tls13/no-auto-send-ticket.c index 5e9cfa44b6..cd82b8d6af 100644 --- a/tests/tls13/no-auto-send-ticket.c +++ b/tests/tls13/no-auto-send-ticket.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,20 +35,20 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "../lib/handshake-defs.h" -# include "cert-common.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../lib/handshake-defs.h" +#include "cert-common.h" +#include "utils.h" /* This program tests whether the certificate seen in Post Handshake Auth * is found in a resumed session under TLS 1.3. @@ -67,7 +67,7 @@ static void client_log_func(int level, const char *str) static unsigned tickets_seen = 0; static int ticket_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { gnutls_datum *d; int ret; @@ -108,29 +108,28 @@ static void client(int fd, unsigned flags, unsigned tickets) assert(gnutls_certificate_allocate_credentials(&x509_cred) >= 0); - retry: +retry: /* Initialize TLS session */ assert(gnutls_init(&session, GNUTLS_CLIENT | flags) >= 0); gnutls_handshake_set_timeout(session, get_timeout()); - ret = - gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.0", - NULL); + ret = gnutls_priority_set_direct( + session, + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.0", + NULL); if (ret < 0) fail("cannot set TLS 1.3 priorities\n"); if (try == 0) { gnutls_session_set_ptr(session, &session_data); - gnutls_handshake_set_hook_function(session, - GNUTLS_HANDSHAKE_NEW_SESSION_TICKET, - GNUTLS_HOOK_BOTH, - ticket_callback); + gnutls_handshake_set_hook_function( + session, GNUTLS_HANDSHAKE_NEW_SESSION_TICKET, + GNUTLS_HOOK_BOTH, ticket_callback); } else { - assert(gnutls_session_set_data - (session, session_data.data, session_data.size) >= 0); + assert(gnutls_session_set_data(session, session_data.data, + session_data.size) >= 0); } gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -141,8 +140,7 @@ static void client(int fd, unsigned flags, unsigned tickets) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret != 0) fail("handshake failed: %s\n", gnutls_strerror(ret)); @@ -173,8 +171,8 @@ static void client(int fd, unsigned flags, unsigned tickets) gnutls_global_deinit(); } -static void server(int fd, unsigned flags, - unsigned tickets_sent, unsigned tickets_expected) +static void server(int fd, unsigned flags, unsigned tickets_sent, + unsigned tickets_expected) { int ret; gnutls_session_t session; @@ -201,8 +199,8 @@ static void server(int fd, unsigned flags, assert(gnutls_session_ticket_enable_server(session, &skey) >= 0); gnutls_handshake_set_timeout(session, get_timeout()); - assert(gnutls_priority_set_direct(session, "NORMAL:+VERS-TLS1.3", NULL) - >= 0); + assert(gnutls_priority_set_direct(session, "NORMAL:+VERS-TLS1.3", + NULL) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -217,9 +215,8 @@ static void server(int fd, unsigned flags, if (tickets_sent > 0) { do { - ret = - gnutls_session_ticket_send(session, tickets_sent, - 0); + ret = gnutls_session_ticket_send(session, tickets_sent, + 0); } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); } @@ -236,8 +233,8 @@ static void server(int fd, unsigned flags, assert(gnutls_session_ticket_enable_server(session, &skey) >= 0); gnutls_handshake_set_timeout(session, get_timeout()); - assert(gnutls_priority_set_direct - (session, "NORMAL:+VERS-TLS1.3", NULL) >= 0); + assert(gnutls_priority_set_direct( + session, "NORMAL:+VERS-TLS1.3", NULL) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -275,9 +272,8 @@ static void ch_handler(int sig) return; } -static void start(const char *name, - unsigned flags, - unsigned tickets_sent, unsigned tickets_expected) +static void start(const char *name, unsigned flags, unsigned tickets_sent, + unsigned tickets_expected) { int fd[2]; int ret; @@ -308,7 +304,6 @@ static void start(const char *name, client(fd[1], flags, tickets_expected); exit(0); } - } void doit(void) @@ -321,4 +316,4 @@ void doit(void) start("no auto send ticket 0", GNUTLS_NO_AUTO_SEND_TICKET, 0, 0); start("no auto send ticket 1", GNUTLS_NO_AUTO_SEND_TICKET, 1, 1); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls13/no-psk-exts.c b/tests/tls13/no-psk-exts.c index 55b9ccccd0..c91be81477 100644 --- a/tests/tls13/no-psk-exts.c +++ b/tests/tls13/no-psk-exts.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,20 +35,20 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "cert-common.h" -# include "tls13/ext-parse.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cert-common.h" +#include "tls13/ext-parse.h" +#include "utils.h" /* This program tests whether a connection without the PSK priority * options, will contain PSK extensions */ @@ -63,7 +63,7 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd) { @@ -88,10 +88,10 @@ static void client(int fd) gnutls_handshake_set_timeout(session, get_timeout()); - ret = - gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.0", - NULL); + ret = gnutls_priority_set_direct( + session, + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.0", + NULL); if (ret < 0) fail("cannot set TLS 1.3 priorities\n"); @@ -106,8 +106,7 @@ static void client(int fd) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); /* try if gnutls_reauth() would fail as expected */ ret = gnutls_reauth(session, 0); @@ -127,14 +126,15 @@ static void client(int fd) static unsigned server_hello_ok = 0; -# define TLS_EXT_PSK 41 -# define TLS_EXT_PSK_KE 45 +#define TLS_EXT_PSK 41 +#define TLS_EXT_PSK_KE 45 static int hellos_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { - if (htype == GNUTLS_HANDSHAKE_SERVER_HELLO && post == GNUTLS_HOOK_POST) { + if (htype == GNUTLS_HANDSHAKE_SERVER_HELLO && + post == GNUTLS_HOOK_POST) { if (find_server_extension(msg, TLS_EXT_PSK_KE, NULL, NULL)) { fail("PSK KE extension seen on server (illegal)!\n"); } @@ -196,7 +196,7 @@ static void server(int fd) do { ret = gnutls_handshake(session); - if (ret == GNUTLS_E_INTERRUPTED) { /* expected */ + if (ret == GNUTLS_E_INTERRUPTED) { /* expected */ break; } } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); @@ -258,4 +258,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls13/ocsp-client.c b/tests/tls13/ocsp-client.c index d91febe43e..023393c4c9 100644 --- a/tests/tls13/ocsp-client.c +++ b/tests/tls13/ocsp-client.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -32,8 +32,8 @@ #ifdef ENABLE_OCSP -# include "cert-common.h" -# include "utils.h" +#include "cert-common.h" +#include "utils.h" /* Tests whether we can send and receive multiple OCSP responses * one for each certificate in a chain under TLS 1.3, but unrelated @@ -41,7 +41,7 @@ * flag). */ -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1469186559; if (t) @@ -50,14 +50,16 @@ static time_t mytime(time_t * t) return then; } -# define RESP1 "\x30\x82\x06\x8C\x0A\x01\x00\xA0\x82\x06\x85\x30\x82\x06\x81\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x06\x72\x30\x82\x06\x6E\x30\x82\x01\x07\xA1\x69\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\x30\x64\x30\x62\x30\x3A\x30\x09\x06\x05\x2B\x0E\x03\x02\x1A\x05\x00\x04\x14\x13\x9D\xA0\x9E\xF4\x32\xAB\x8F\xE2\x89\x56\x67\xFA\xD0\xD4\xE3\x35\x86\x71\xB9\x04\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\x02\x01\x1D\x80\x00\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\xA0\x11\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x39\x32\x38\x5A\xA1\x23\x30\x21\x30\x1F\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x02\x04\x12\x04\x10\x16\x89\x7D\x91\x3A\xB5\x25\xA4\x45\xFE\xC9\xFD\xC2\xE5\x08\xA4\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x4E\xAD\x6B\x2B\xF7\xF2\xBF\xA9\x23\x1E\x3A\x0B\x06\xDB\x55\x53\x2B\x64\x54\x11\x32\xBF\x60\xF7\x4F\xE0\x8E\x9B\xA0\xA2\x4C\x79\xC3\x2A\xE0\x43\xF7\x40\x1A\xDC\xB9\xB4\x25\xEF\x48\x01\x97\x8C\xF5\x1E\xDB\xD1\x30\x37\x73\x69\xD6\xA7\x7A\x2D\x8E\xDE\x5C\xAA\xEA\x39\xB9\x52\xAA\x25\x1E\x74\x7D\xF9\x78\x95\x8A\x92\x1F\x98\x21\xF4\x60\x7F\xD3\x28\xEE\x47\x9C\xBF\xE2\x5D\xF6\x3F\x68\x0A\xD6\xFF\x08\xC1\xDC\x95\x1E\x29\xD7\x3E\x85\xD5\x65\xA4\x4B\xC0\xAF\xC3\x78\xAB\x06\x98\x88\x19\x8A\x64\xA6\x83\x91\x87\x13\xDB\x17\xCC\x46\xBD\xAB\x4E\xC7\x16\xD1\xF8\x35\xFD\x27\xC8\xF6\x6B\xEB\x37\xB8\x08\x6F\xE2\x6F\xB4\x7E\xD5\x68\xDB\x7F\x5D\x5E\x36\x38\xF2\x77\x59\x13\xE7\x3E\x4D\x67\x5F\xDB\xA2\xF5\x5D\x7C\xBF\xBD\xB5\x37\x33\x51\x36\x63\xF8\x21\x1E\xFC\x73\x8F\x32\x69\xBB\x97\xA7\xBD\xF1\xB6\xE0\x40\x09\x68\xEA\xD5\x93\xB8\xBB\x39\x8D\xA8\x16\x1B\xBF\x04\x7A\xBC\x18\x43\x01\xE9\x3C\x19\x5C\x4D\x4B\x98\xD8\x23\x37\x39\xA4\xC4\xDD\xED\x9C\xEC\x37\xAB\x66\x44\x9B\xE7\x5B\x5D\x32\xA2\xDB\xA6\x0B\x3B\x8C\xE1\xF5\xDB\xCB\x7D\x58\xA0\x82\x04\x4B\x30\x82\x04\x47\x30\x82\x04\x43\x30\x82\x03\x2B\xA0\x03\x02\x01\x02\x02\x01\x1E\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x30\x1E\x17\x0D\x30\x39\x31\x31\x32\x34\x31\x32\x35\x31\x35\x33\x5A\x17\x0D\x31\x34\x31\x31\x32\x33\x31\x32\x35\x31\x35\x33\x5A\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x82\x01\x22\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00\x03\x82\x01\x0F\x00\x30\x82\x01\x0A\x02\x82\x01\x01\x00\xBC\x05\x3E\x4B\xBE\xC6\xB1\x33\x48\x0E\xC3\xD4\x0C\xEF\x83\x0B\xBD\xBC\x57\x5F\x14\xEF\xF5\x6D\x0B\xFF\xFA\x01\x9C\xFA\x21\x6D\x5C\xAE\x79\x29\x74\xFE\xBD\xAB\x70\x87\x98\x6B\x48\x35\x79\xE3\xE0\xC1\x14\x41\x1F\x0A\xF7\xE7\xA3\xA6\xDA\x6B\xFF\xCD\x74\xE9\x95\x00\x38\xAA\xD6\x3A\x60\xC6\x64\xA1\xE6\x02\x39\x58\x4E\xFD\xF2\x78\x08\x63\xB6\xD7\x7A\x96\x79\x62\x18\x39\xEE\x27\x8D\x3B\xA2\x3D\x48\x88\xDB\x43\xD6\x6A\x77\x20\x6A\x27\x39\x50\xE0\x02\x50\x19\xF2\x7A\xCF\x78\x23\x99\x01\xD4\xE5\xB1\xD1\x31\xE6\x6B\x84\xAF\xD0\x77\x41\x46\x85\xB0\x3B\xE6\x6A\x00\x0F\x3B\x7E\x95\x7F\x59\xA8\x22\xE8\x49\x49\x05\xC8\xCB\x6C\xEE\x47\xA7\x2D\xC9\x74\x5B\xEB\x8C\xD5\x99\xC2\xE2\x70\xDB\xEA\x87\x43\x84\x0E\x4F\x83\x1C\xA6\xEB\x1F\x22\x38\x17\x69\x9B\x72\x12\x95\x48\x71\xB2\x7B\x92\x73\x52\xAB\xE3\x1A\xA5\xD3\xF4\x44\x14\xBA\xC3\x35\xDA\x91\x6C\x7D\xB4\xC2\x00\x07\xD8\x0A\x51\xF1\x0D\x4C\xD9\x7A\xD1\x99\xE6\xA8\x8D\x0A\x80\xA8\x91\xDD\x8A\xA2\x6B\xF6\xDB\xB0\x3E\xC9\x71\xA9\xE0\x39\xC3\xA3\x58\x0D\x87\xD0\xB2\xA7\x9C\xB7\x69\x02\x03\x01\x00\x01\xA3\x82\x01\x1A\x30\x82\x01\x16\x30\x09\x06\x03\x55\x1D\x13\x04\x02\x30\x00\x30\x0B\x06\x03\x55\x1D\x0F\x04\x04\x03\x02\x03\xA8\x30\x1D\x06\x03\x55\x1D\x0E\x04\x16\x04\x14\x34\x91\x6E\x91\x32\xBF\x35\x25\x43\xCC\x28\x74\xEF\x82\xC2\x57\x92\x79\x13\x73\x30\x6D\x06\x03\x55\x1D\x23\x04\x66\x30\x64\x80\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\xA1\x49\xA4\x47\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x82\x01\x00\x30\x1E\x06\x03\x55\x1D\x11\x04\x17\x30\x15\x82\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x13\x06\x03\x55\x1D\x25\x04\x0C\x30\x0A\x06\x08\x2B\x06\x01\x05\x05\x07\x03\x09\x30\x39\x06\x03\x55\x1D\x1F\x04\x32\x30\x30\x30\x2E\xA0\x2C\xA0\x2A\x86\x28\x68\x74\x74\x70\x3A\x2F\x2F\x63\x72\x6C\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x2F\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x63\x72\x6C\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x03\x82\x01\x01\x00\x6D\x78\xD7\x66\x90\xA6\xEB\xDD\xB5\x09\x48\xA4\xDA\x27\xFA\xAC\xB1\xBC\x8F\x8C\xBE\xCC\x8C\x09\xA2\x40\x0D\x6C\x4A\xAE\x72\x22\x1E\xC8\xAF\x6D\xF1\x12\xAF\xD7\x40\x51\x79\xD4\xDD\xB2\x0C\xDB\x97\x84\xB6\x24\xD5\xF5\xA8\xBB\xC0\x4B\xF9\x7F\x71\xF7\xB0\x65\x42\x4A\x7D\xFE\x76\x7E\x05\xD2\x46\xB8\x7D\xB3\x39\x4C\x5C\xB1\xFA\xB9\xEE\x3B\x70\x33\x39\x57\x1A\xB9\x95\x51\x33\x00\x25\x1B\x4C\xAA\xB4\xA7\x55\xAF\x63\x6D\x6F\x88\x17\x6A\x7F\xB0\x97\xDE\x49\x14\x6A\x27\x6A\xB0\x42\x80\xD6\xA6\x9B\xEF\x04\x5E\x11\x7D\xD5\x8E\x54\x20\xA2\x76\xD4\x66\x58\xAC\x9C\x12\xD3\xF5\xCA\x54\x98\xCA\x21\xEC\xC1\x55\xA1\x2F\x68\x0B\x5D\x04\x50\xD2\x5E\x70\x25\xD8\x13\xD9\x44\x51\x0E\x8A\x42\x08\x18\x84\xE6\x61\xCE\x5A\x7D\x7B\x81\x35\x90\xC3\xD4\x9D\x19\xB6\x37\xEE\x8F\x63\x5C\xDA\xD8\xF0\x64\x60\x39\xEB\x9B\x1C\x54\x66\x75\x76\xB5\x0A\x58\xB9\x3F\x91\xE1\x21\x9C\xA0\x50\x15\x97\xB6\x7E\x41\xBC\xD0\xC4\x21\x4C\xF5\xD7\xF0\x13\xF8\x77\xE9\x74\xC4\x8A\x0E\x20\x17\x32\xAE\x38\xC2\xA5\xA8\x62\x85\x17\xB1\xA2\xD3\x22\x9F\x95\xB7\xA3\x4C" +#define RESP1 \ + "\x30\x82\x06\x8C\x0A\x01\x00\xA0\x82\x06\x85\x30\x82\x06\x81\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x06\x72\x30\x82\x06\x6E\x30\x82\x01\x07\xA1\x69\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\x30\x64\x30\x62\x30\x3A\x30\x09\x06\x05\x2B\x0E\x03\x02\x1A\x05\x00\x04\x14\x13\x9D\xA0\x9E\xF4\x32\xAB\x8F\xE2\x89\x56\x67\xFA\xD0\xD4\xE3\x35\x86\x71\xB9\x04\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\x02\x01\x1D\x80\x00\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x34\x32\x38\x5A\xA0\x11\x18\x0F\x32\x30\x31\x31\x30\x39\x32\x37\x30\x39\x35\x39\x32\x38\x5A\xA1\x23\x30\x21\x30\x1F\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x02\x04\x12\x04\x10\x16\x89\x7D\x91\x3A\xB5\x25\xA4\x45\xFE\xC9\xFD\xC2\xE5\x08\xA4\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x4E\xAD\x6B\x2B\xF7\xF2\xBF\xA9\x23\x1E\x3A\x0B\x06\xDB\x55\x53\x2B\x64\x54\x11\x32\xBF\x60\xF7\x4F\xE0\x8E\x9B\xA0\xA2\x4C\x79\xC3\x2A\xE0\x43\xF7\x40\x1A\xDC\xB9\xB4\x25\xEF\x48\x01\x97\x8C\xF5\x1E\xDB\xD1\x30\x37\x73\x69\xD6\xA7\x7A\x2D\x8E\xDE\x5C\xAA\xEA\x39\xB9\x52\xAA\x25\x1E\x74\x7D\xF9\x78\x95\x8A\x92\x1F\x98\x21\xF4\x60\x7F\xD3\x28\xEE\x47\x9C\xBF\xE2\x5D\xF6\x3F\x68\x0A\xD6\xFF\x08\xC1\xDC\x95\x1E\x29\xD7\x3E\x85\xD5\x65\xA4\x4B\xC0\xAF\xC3\x78\xAB\x06\x98\x88\x19\x8A\x64\xA6\x83\x91\x87\x13\xDB\x17\xCC\x46\xBD\xAB\x4E\xC7\x16\xD1\xF8\x35\xFD\x27\xC8\xF6\x6B\xEB\x37\xB8\x08\x6F\xE2\x6F\xB4\x7E\xD5\x68\xDB\x7F\x5D\x5E\x36\x38\xF2\x77\x59\x13\xE7\x3E\x4D\x67\x5F\xDB\xA2\xF5\x5D\x7C\xBF\xBD\xB5\x37\x33\x51\x36\x63\xF8\x21\x1E\xFC\x73\x8F\x32\x69\xBB\x97\xA7\xBD\xF1\xB6\xE0\x40\x09\x68\xEA\xD5\x93\xB8\xBB\x39\x8D\xA8\x16\x1B\xBF\x04\x7A\xBC\x18\x43\x01\xE9\x3C\x19\x5C\x4D\x4B\x98\xD8\x23\x37\x39\xA4\xC4\xDD\xED\x9C\xEC\x37\xAB\x66\x44\x9B\xE7\x5B\x5D\x32\xA2\xDB\xA6\x0B\x3B\x8C\xE1\xF5\xDB\xCB\x7D\x58\xA0\x82\x04\x4B\x30\x82\x04\x47\x30\x82\x04\x43\x30\x82\x03\x2B\xA0\x03\x02\x01\x02\x02\x01\x1E\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x30\x1E\x17\x0D\x30\x39\x31\x31\x32\x34\x31\x32\x35\x31\x35\x33\x5A\x17\x0D\x31\x34\x31\x31\x32\x33\x31\x32\x35\x31\x35\x33\x5A\x30\x67\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1F\x30\x1D\x06\x03\x55\x04\x0B\x13\x16\x4F\x43\x53\x50\x20\x53\x69\x67\x6E\x69\x6E\x67\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x31\x1C\x30\x1A\x06\x03\x55\x04\x03\x13\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x82\x01\x22\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00\x03\x82\x01\x0F\x00\x30\x82\x01\x0A\x02\x82\x01\x01\x00\xBC\x05\x3E\x4B\xBE\xC6\xB1\x33\x48\x0E\xC3\xD4\x0C\xEF\x83\x0B\xBD\xBC\x57\x5F\x14\xEF\xF5\x6D\x0B\xFF\xFA\x01\x9C\xFA\x21\x6D\x5C\xAE\x79\x29\x74\xFE\xBD\xAB\x70\x87\x98\x6B\x48\x35\x79\xE3\xE0\xC1\x14\x41\x1F\x0A\xF7\xE7\xA3\xA6\xDA\x6B\xFF\xCD\x74\xE9\x95\x00\x38\xAA\xD6\x3A\x60\xC6\x64\xA1\xE6\x02\x39\x58\x4E\xFD\xF2\x78\x08\x63\xB6\xD7\x7A\x96\x79\x62\x18\x39\xEE\x27\x8D\x3B\xA2\x3D\x48\x88\xDB\x43\xD6\x6A\x77\x20\x6A\x27\x39\x50\xE0\x02\x50\x19\xF2\x7A\xCF\x78\x23\x99\x01\xD4\xE5\xB1\xD1\x31\xE6\x6B\x84\xAF\xD0\x77\x41\x46\x85\xB0\x3B\xE6\x6A\x00\x0F\x3B\x7E\x95\x7F\x59\xA8\x22\xE8\x49\x49\x05\xC8\xCB\x6C\xEE\x47\xA7\x2D\xC9\x74\x5B\xEB\x8C\xD5\x99\xC2\xE2\x70\xDB\xEA\x87\x43\x84\x0E\x4F\x83\x1C\xA6\xEB\x1F\x22\x38\x17\x69\x9B\x72\x12\x95\x48\x71\xB2\x7B\x92\x73\x52\xAB\xE3\x1A\xA5\xD3\xF4\x44\x14\xBA\xC3\x35\xDA\x91\x6C\x7D\xB4\xC2\x00\x07\xD8\x0A\x51\xF1\x0D\x4C\xD9\x7A\xD1\x99\xE6\xA8\x8D\x0A\x80\xA8\x91\xDD\x8A\xA2\x6B\xF6\xDB\xB0\x3E\xC9\x71\xA9\xE0\x39\xC3\xA3\x58\x0D\x87\xD0\xB2\xA7\x9C\xB7\x69\x02\x03\x01\x00\x01\xA3\x82\x01\x1A\x30\x82\x01\x16\x30\x09\x06\x03\x55\x1D\x13\x04\x02\x30\x00\x30\x0B\x06\x03\x55\x1D\x0F\x04\x04\x03\x02\x03\xA8\x30\x1D\x06\x03\x55\x1D\x0E\x04\x16\x04\x14\x34\x91\x6E\x91\x32\xBF\x35\x25\x43\xCC\x28\x74\xEF\x82\xC2\x57\x92\x79\x13\x73\x30\x6D\x06\x03\x55\x1D\x23\x04\x66\x30\x64\x80\x14\x5D\xA7\xDD\x70\x06\x51\x32\x7E\xE7\xB6\x6D\xB3\xB5\xE5\xE0\x60\xEA\x2E\x4D\xEF\xA1\x49\xA4\x47\x30\x45\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x48\x31\x19\x30\x17\x06\x03\x55\x04\x0A\x13\x10\x4C\x69\x6E\x75\x78\x20\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x31\x1B\x30\x19\x06\x03\x55\x04\x03\x13\x12\x73\x74\x72\x6F\x6E\x67\x53\x77\x61\x6E\x20\x52\x6F\x6F\x74\x20\x43\x41\x82\x01\x00\x30\x1E\x06\x03\x55\x1D\x11\x04\x17\x30\x15\x82\x13\x6F\x63\x73\x70\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x30\x13\x06\x03\x55\x1D\x25\x04\x0C\x30\x0A\x06\x08\x2B\x06\x01\x05\x05\x07\x03\x09\x30\x39\x06\x03\x55\x1D\x1F\x04\x32\x30\x30\x30\x2E\xA0\x2C\xA0\x2A\x86\x28\x68\x74\x74\x70\x3A\x2F\x2F\x63\x72\x6C\x2E\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x6F\x72\x67\x2F\x73\x74\x72\x6F\x6E\x67\x73\x77\x61\x6E\x2E\x63\x72\x6C\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x0B\x05\x00\x03\x82\x01\x01\x00\x6D\x78\xD7\x66\x90\xA6\xEB\xDD\xB5\x09\x48\xA4\xDA\x27\xFA\xAC\xB1\xBC\x8F\x8C\xBE\xCC\x8C\x09\xA2\x40\x0D\x6C\x4A\xAE\x72\x22\x1E\xC8\xAF\x6D\xF1\x12\xAF\xD7\x40\x51\x79\xD4\xDD\xB2\x0C\xDB\x97\x84\xB6\x24\xD5\xF5\xA8\xBB\xC0\x4B\xF9\x7F\x71\xF7\xB0\x65\x42\x4A\x7D\xFE\x76\x7E\x05\xD2\x46\xB8\x7D\xB3\x39\x4C\x5C\xB1\xFA\xB9\xEE\x3B\x70\x33\x39\x57\x1A\xB9\x95\x51\x33\x00\x25\x1B\x4C\xAA\xB4\xA7\x55\xAF\x63\x6D\x6F\x88\x17\x6A\x7F\xB0\x97\xDE\x49\x14\x6A\x27\x6A\xB0\x42\x80\xD6\xA6\x9B\xEF\x04\x5E\x11\x7D\xD5\x8E\x54\x20\xA2\x76\xD4\x66\x58\xAC\x9C\x12\xD3\xF5\xCA\x54\x98\xCA\x21\xEC\xC1\x55\xA1\x2F\x68\x0B\x5D\x04\x50\xD2\x5E\x70\x25\xD8\x13\xD9\x44\x51\x0E\x8A\x42\x08\x18\x84\xE6\x61\xCE\x5A\x7D\x7B\x81\x35\x90\xC3\xD4\x9D\x19\xB6\x37\xEE\x8F\x63\x5C\xDA\xD8\xF0\x64\x60\x39\xEB\x9B\x1C\x54\x66\x75\x76\xB5\x0A\x58\xB9\x3F\x91\xE1\x21\x9C\xA0\x50\x15\x97\xB6\x7E\x41\xBC\xD0\xC4\x21\x4C\xF5\xD7\xF0\x13\xF8\x77\xE9\x74\xC4\x8A\x0E\x20\x17\x32\xAE\x38\xC2\xA5\xA8\x62\x85\x17\xB1\xA2\xD3\x22\x9F\x95\xB7\xA3\x4C" -static gnutls_datum_t ocsp_resp1 = - { (unsigned char *)RESP1, sizeof(RESP1) - 1 }; +static gnutls_datum_t ocsp_resp1 = { (unsigned char *)RESP1, + sizeof(RESP1) - 1 }; -# define RESP3 "\x30\x82\x01\xd3\x0a\x01\x00\xa0\x82\x01\xcc\x30\x82\x01\xc8\x06\x09\x2b\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x01\xb9\x30\x82\x01\xb5\x30\x81\x9e\xa2\x16\x04\x14\x50\xea\x73\x89\xdb\x29\xfb\x10\x8f\x9e\xe5\x01\x20\xd4\xde\x79\x99\x48\x83\xf7\x18\x0f\x32\x30\x31\x34\x30\x39\x30\x34\x30\x35\x34\x39\x30\x30\x5a\x30\x73\x30\x71\x30\x49\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04\x14\xed\x48\xad\xdd\xcb\x7b\x00\xe2\x0e\x84\x2a\xa9\xb4\x09\xf1\xac\x30\x34\xcf\x96\x04\x14\x50\xea\x73\x89\xdb\x29\xfb\x10\x8f\x9e\xe5\x01\x20\xd4\xde\x79\x99\x48\x83\xf7\x02\x10\x02\x01\x48\x91\x5d\xfd\x5e\xb6\xe0\x02\x90\xa9\x67\xb0\xe4\x64\x80\x00\x18\x0f\x32\x30\x31\x34\x30\x39\x30\x34\x30\x35\x34\x39\x30\x30\x5a\xa0\x11\x18\x0f\x32\x30\x31\x34\x30\x39\x31\x31\x30\x36\x30\x34\x30\x30\x5a\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x6e\x5e\x5e\x81\xff\x3f\x4d\xc7\x53\xc7\x1b\xf3\xd3\x1d\xdc\x9a\xc7\xce\x77\x2c\x67\x56\x13\x98\x91\x02\x01\x76\xdc\x48\xb2\x1f\x9b\x17\xea\xbf\x2c\x0a\xf5\x1d\x98\x90\x3c\x5f\x55\xc2\xff\x4b\x9a\xbc\xa6\x83\x9e\xab\x2b\xeb\x9d\x01\xea\x3b\x5f\xbe\x03\x29\x70\x63\x2a\xa4\x1d\xa8\xab\x69\xb2\x64\xba\x5d\x73\x91\x5c\x92\xf3\x69\xd4\xc9\x39\x9c\x7c\x7d\xa2\x47\x92\xc2\x56\xfe\xa1\x0d\x4a\x69\xff\xda\x48\xc5\x5e\xd8\xab\x39\x88\x6a\x06\xfa\x07\x57\xd6\x48\xb5\xce\xc9\x5f\xa5\x96\xfe\x37\x18\x5e\x7f\x35\x51\xc1\x9e\x79\x5a\x26\xba\x67\x67\x38\x2a\x80\x75\x42\x99\x68\x3e\xec\x2f\x7e\x2d\xa1\xa6\xbe\x9f\x01\x51\x22\x88\x3a\xc9\x9c\xed\x51\xef\x21\x66\x7e\xa9\xd0\x3f\x13\x9c\xbb\xd2\x94\x14\x6f\x4b\xd9\xc4\xf5\x2c\xf5\x7d\x07\x68\xf3\x51\xac\xda\xc2\x09\x66\xa9\x3d\xed\xad\x02\x4d\x9c\x11\x29\x1a\x54\xfb\x1e\x7e\x36\xf4\xbb\x0d\x08\x8c\x6a\x42\x08\x10\x29\x08\x7c\x56\x0b\x18\x47\xff\x87\x11\xfd\xb2\xfb\xc9\x22\x7f\xe3\x1f\x7b\xf9\x98\xaa\x3a\x32\xb6\x2f\x02\xba\xb6\xc1\xdc\xc3\x5d\xb5\x4b\xae\x5d\x29\x6a\x31\xde\xcd" -static gnutls_datum_t ocsp_resp2 = - { (unsigned char *)RESP3, sizeof(RESP3) - 1 }; +#define RESP3 \ + "\x30\x82\x01\xd3\x0a\x01\x00\xa0\x82\x01\xcc\x30\x82\x01\xc8\x06\x09\x2b\x06\x01\x05\x05\x07\x30\x01\x01\x04\x82\x01\xb9\x30\x82\x01\xb5\x30\x81\x9e\xa2\x16\x04\x14\x50\xea\x73\x89\xdb\x29\xfb\x10\x8f\x9e\xe5\x01\x20\xd4\xde\x79\x99\x48\x83\xf7\x18\x0f\x32\x30\x31\x34\x30\x39\x30\x34\x30\x35\x34\x39\x30\x30\x5a\x30\x73\x30\x71\x30\x49\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04\x14\xed\x48\xad\xdd\xcb\x7b\x00\xe2\x0e\x84\x2a\xa9\xb4\x09\xf1\xac\x30\x34\xcf\x96\x04\x14\x50\xea\x73\x89\xdb\x29\xfb\x10\x8f\x9e\xe5\x01\x20\xd4\xde\x79\x99\x48\x83\xf7\x02\x10\x02\x01\x48\x91\x5d\xfd\x5e\xb6\xe0\x02\x90\xa9\x67\xb0\xe4\x64\x80\x00\x18\x0f\x32\x30\x31\x34\x30\x39\x30\x34\x30\x35\x34\x39\x30\x30\x5a\xa0\x11\x18\x0f\x32\x30\x31\x34\x30\x39\x31\x31\x30\x36\x30\x34\x30\x30\x5a\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x6e\x5e\x5e\x81\xff\x3f\x4d\xc7\x53\xc7\x1b\xf3\xd3\x1d\xdc\x9a\xc7\xce\x77\x2c\x67\x56\x13\x98\x91\x02\x01\x76\xdc\x48\xb2\x1f\x9b\x17\xea\xbf\x2c\x0a\xf5\x1d\x98\x90\x3c\x5f\x55\xc2\xff\x4b\x9a\xbc\xa6\x83\x9e\xab\x2b\xeb\x9d\x01\xea\x3b\x5f\xbe\x03\x29\x70\x63\x2a\xa4\x1d\xa8\xab\x69\xb2\x64\xba\x5d\x73\x91\x5c\x92\xf3\x69\xd4\xc9\x39\x9c\x7c\x7d\xa2\x47\x92\xc2\x56\xfe\xa1\x0d\x4a\x69\xff\xda\x48\xc5\x5e\xd8\xab\x39\x88\x6a\x06\xfa\x07\x57\xd6\x48\xb5\xce\xc9\x5f\xa5\x96\xfe\x37\x18\x5e\x7f\x35\x51\xc1\x9e\x79\x5a\x26\xba\x67\x67\x38\x2a\x80\x75\x42\x99\x68\x3e\xec\x2f\x7e\x2d\xa1\xa6\xbe\x9f\x01\x51\x22\x88\x3a\xc9\x9c\xed\x51\xef\x21\x66\x7e\xa9\xd0\x3f\x13\x9c\xbb\xd2\x94\x14\x6f\x4b\xd9\xc4\xf5\x2c\xf5\x7d\x07\x68\xf3\x51\xac\xda\xc2\x09\x66\xa9\x3d\xed\xad\x02\x4d\x9c\x11\x29\x1a\x54\xfb\x1e\x7e\x36\xf4\xbb\x0d\x08\x8c\x6a\x42\x08\x10\x29\x08\x7c\x56\x0b\x18\x47\xff\x87\x11\xfd\xb2\xfb\xc9\x22\x7f\xe3\x1f\x7b\xf9\x98\xaa\x3a\x32\xb6\x2f\x02\xba\xb6\xc1\xdc\xc3\x5d\xb5\x4b\xae\x5d\x29\x6a\x31\xde\xcd" +static gnutls_datum_t ocsp_resp2 = { (unsigned char *)RESP3, + sizeof(RESP3) - 1 }; static void check_response(gnutls_session_t session, void *priv) { @@ -84,7 +86,8 @@ static void check_response(gnutls_session_t session, void *priv) } if (resp.size != ocsp->size) { - fail("did not receive the expected response size for %d\n", i); + fail("did not receive the expected response size for %d\n", + i); } if (memcmp(resp.data, ocsp->data, resp.size) != 0) { @@ -94,7 +97,8 @@ static void check_response(gnutls_session_t session, void *priv) } if (i != 1) { - fail("The number of OCSP responses received (%d) does not match the expected (%d)\n", i, 1); + fail("The number of OCSP responses received (%d) does not match the expected (%d)\n", + i, 1); } } @@ -115,7 +119,7 @@ void doit(void) char certname2[TMPNAME_SIZE]; char certname3[TMPNAME_SIZE]; FILE *fp; - unsigned index1, index2; /* indexes of certs */ + unsigned index1, index2; /* indexes of certs */ global_init(); gnutls_global_set_time_function(mytime); @@ -135,17 +139,14 @@ void doit(void) fp = fopen(certfile1, "wb"); if (fp == NULL) fail("error in fopen\n"); - assert(fwrite - (server_localhost_ca3_cert_chain_pem, 1, - strlen(server_localhost_ca3_cert_chain_pem), fp) > 0); - assert(fwrite - (server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), - fp) > 0); + assert(fwrite(server_localhost_ca3_cert_chain_pem, 1, + strlen(server_localhost_ca3_cert_chain_pem), fp) > 0); + assert(fwrite(server_ca3_key_pem, 1, strlen((char *)server_ca3_key_pem), + fp) > 0); fclose(fp); - ret = gnutls_certificate_set_x509_key_file2(xcred, certfile1, certfile1, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_certificate_set_x509_key_file2( + xcred, certfile1, certfile1, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) fail("set_x509_key_file failed: %s\n", gnutls_strerror(ret)); @@ -158,9 +159,8 @@ void doit(void) assert(fwrite(cli_ca3_cert_pem, 1, strlen(cli_ca3_cert_pem), fp) > 0); assert(fwrite(cli_ca3_key_pem, 1, strlen(cli_ca3_key_pem), fp) > 0); fclose(fp); - ret = - gnutls_certificate_set_x509_key_file2(clicred, certfile2, certfile2, - GNUTLS_X509_FMT_PEM, NULL, 0); + ret = gnutls_certificate_set_x509_key_file2( + clicred, certfile2, certfile2, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) fail("set_x509_key_file failed: %s\n", gnutls_strerror(ret)); index1 = ret; @@ -173,28 +173,23 @@ void doit(void) assert(fwrite(key_pem, 1, strlen((char *)key_pem), fp) > 0); fclose(fp); - ret = - gnutls_certificate_set_x509_key_file2(clicred, certfile3, certfile3, - GNUTLS_X509_FMT_PEM, NULL, 0); + ret = gnutls_certificate_set_x509_key_file2( + clicred, certfile3, certfile3, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) fail("set_x509_key_file failed: %s\n", gnutls_strerror(ret)); index2 = ret; - gnutls_certificate_set_flags(clicred, - GNUTLS_CERTIFICATE_SKIP_OCSP_RESPONSE_CHECK); + gnutls_certificate_set_flags( + clicred, GNUTLS_CERTIFICATE_SKIP_OCSP_RESPONSE_CHECK); /* set OCSP response1 */ - ret = - gnutls_certificate_set_ocsp_status_request_mem(clicred, &ocsp_resp2, - index2, - GNUTLS_X509_FMT_DER); + ret = gnutls_certificate_set_ocsp_status_request_mem( + clicred, &ocsp_resp2, index2, GNUTLS_X509_FMT_DER); if (ret < 0) fail("ocsp file set failed: %s\n", gnutls_strerror(ret)); /* set OCSP response2 */ - ret = - gnutls_certificate_set_ocsp_status_request_mem(clicred, &ocsp_resp1, - index1, - GNUTLS_X509_FMT_DER); + ret = gnutls_certificate_set_ocsp_status_request_mem( + clicred, &ocsp_resp1, index1, GNUTLS_X509_FMT_DER); if (ret < 0) fail("ocsp file set failed: %s\n", gnutls_strerror(ret)); @@ -206,23 +201,20 @@ void doit(void) GNUTLS_VERIFY_DISABLE_CRL_CHECKS) fail("error in gnutls_certificate_set_verify_flags\n"); - ret = - gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("error in setting trust cert: %s\n", gnutls_strerror(ret)); } - ret = - gnutls_certificate_set_x509_trust_mem(xcred, &subca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(xcred, &subca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("error in setting trust cert: %s\n", gnutls_strerror(ret)); } _test_cli_serv(xcred, clicred, "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", - "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", - "localhost", + "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3", "localhost", &ocsp_resp1, NULL, check_response, 0, 1, 0, 0); gnutls_certificate_free_credentials(xcred); diff --git a/tests/tls13/post-handshake-with-cert-auto.c b/tests/tls13/post-handshake-with-cert-auto.c index 6d98af34e5..77539d9f39 100644 --- a/tests/tls13/post-handshake-with-cert-auto.c +++ b/tests/tls13/post-handshake-with-cert-auto.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,23 +35,23 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "cert-common.h" -# include "tls13/ext-parse.h" -# include "utils.h" +#include "cert-common.h" +#include "tls13/ext-parse.h" +#include "utils.h" -# define MAX_AUTHS 4 +#define MAX_AUTHS 4 /* This program tests whether the Post Handshake Auth extension is * present in the client hello, and whether it is missing from server @@ -69,8 +69,8 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define MAX_BUF 1024 -# define MAX_APP_DATA 3 +#define MAX_BUF 1024 +#define MAX_APP_DATA 3 static void client(int fd, unsigned send_cert, unsigned max_auths) { @@ -91,24 +91,23 @@ static void client(int fd, unsigned send_cert, unsigned max_auths) /* Initialize TLS session */ - assert(gnutls_init - (&session, - GNUTLS_CLIENT | GNUTLS_POST_HANDSHAKE_AUTH | GNUTLS_AUTO_REAUTH) - >= 0); + assert(gnutls_init(&session, GNUTLS_CLIENT | + GNUTLS_POST_HANDSHAKE_AUTH | + GNUTLS_AUTO_REAUTH) >= 0); gnutls_handshake_set_timeout(session, get_timeout()); - ret = - gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.0", - NULL); + ret = gnutls_priority_set_direct( + session, + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.0", + NULL); if (ret < 0) fail("cannot set TLS 1.3 priorities\n"); if (send_cert) { - assert(gnutls_certificate_set_x509_key_mem - (x509_cred, &cli_ca3_cert, &cli_ca3_key, - GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem( + x509_cred, &cli_ca3_cert, &cli_ca3_key, + GNUTLS_X509_FMT_PEM) >= 0); } gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -119,8 +118,7 @@ static void client(int fd, unsigned send_cert, unsigned max_auths) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret != 0) fail("handshake failed: %s\n", gnutls_strerror(ret)); @@ -139,7 +137,8 @@ static void client(int fd, unsigned send_cert, unsigned max_auths) } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret < 0) - fail("client: gnutls_record_recv did not succeed as expected: %s\n", gnutls_strerror(ret)); + fail("client: gnutls_record_recv did not succeed as expected: %s\n", + gnutls_strerror(ret)); } assert(ret == 0); @@ -160,9 +159,9 @@ static void client(int fd, unsigned send_cert, unsigned max_auths) static unsigned client_hello_ok = 0; static unsigned server_hello_ok = 0; -# define TLS_EXT_POST_HANDSHAKE 49 +#define TLS_EXT_POST_HANDSHAKE 49 -static void parse_ext(void *priv, gnutls_datum_t * msg) +static void parse_ext(void *priv, gnutls_datum_t *msg) { if (msg->size != 0) { fail("error in extension length: %d\n", (int)msg->size); @@ -171,11 +170,12 @@ static void parse_ext(void *priv, gnutls_datum_t * msg) static int hellos_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { - if (htype == GNUTLS_HANDSHAKE_SERVER_HELLO && post == GNUTLS_HOOK_POST) { - if (find_server_extension - (msg, TLS_EXT_POST_HANDSHAKE, NULL, NULL)) { + if (htype == GNUTLS_HANDSHAKE_SERVER_HELLO && + post == GNUTLS_HOOK_POST) { + if (find_server_extension(msg, TLS_EXT_POST_HANDSHAKE, NULL, + NULL)) { fail("Post handshake extension seen in server hello!\n"); } server_hello_ok = 1; @@ -238,9 +238,8 @@ static void server(int fd, int err, int type, unsigned max_auths) if (ret != 0) fail("handshake failed: %s\n", gnutls_strerror(ret)); - if (! - (gnutls_session_get_flags(session) & - GNUTLS_SFLAGS_POST_HANDSHAKE_AUTH)) { + if (!(gnutls_session_get_flags(session) & + GNUTLS_SFLAGS_POST_HANDSHAKE_AUTH)) { fail("server: session flags did not contain GNUTLS_SFLAGS_POST_HANDSHAKE_AUTH\n"); } @@ -268,18 +267,17 @@ static void server(int fd, int err, int type, unsigned max_auths) if (ret == GNUTLS_E_GOT_APPLICATION_DATA) { int ret2; do { - ret2 = - gnutls_record_recv(session, buffer, - sizeof(buffer)); - } while (ret2 == GNUTLS_E_AGAIN - || ret2 == GNUTLS_E_INTERRUPTED); + ret2 = gnutls_record_recv(session, buffer, + sizeof(buffer)); + } while (ret2 == GNUTLS_E_AGAIN || + ret2 == GNUTLS_E_INTERRUPTED); if (ret2 < 0) fail("error receiving app data: %s\n", gnutls_strerror(ret2)); /* sender memsets the message with the retry attempt */ - assert((uint8_t) buffer[0] == retries); + assert((uint8_t)buffer[0] == retries); assert(retries < MAX_APP_DATA); } @@ -306,7 +304,8 @@ static void server(int fd, int err, int type, unsigned max_auths) gnutls_strerror(err), gnutls_strerror(ret)); } else if (ret != 0) - fail("server: gnutls_reauth did not succeed as expected: %s\n", gnutls_strerror(ret)); + fail("server: gnutls_reauth did not succeed as expected: %s\n", + gnutls_strerror(ret)); } do { @@ -324,9 +323,8 @@ static void server(int fd, int err, int type, unsigned max_auths) success("server: client/server hello were verified\n"); } -static -void start(const char *name, int err, int type, unsigned max_auths, - unsigned send_cert) +static void start(const char *name, int err, int type, unsigned max_auths, + unsigned send_cert) { int fd[2]; int ret; @@ -366,7 +364,6 @@ void start(const char *name, int err, int type, unsigned max_auths, client(fd[1], send_cert, max_auths); exit(0); } - } void doit(void) @@ -376,4 +373,4 @@ void doit(void) GNUTLS_CERT_REQUIRE, 1, 0); start("reauth-request with no-cert", 0, GNUTLS_CERT_REQUEST, 1, 0); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls13/post-handshake-with-cert-pkcs11.c b/tests/tls13/post-handshake-with-cert-pkcs11.c index 8361008fc8..5edaff8c45 100644 --- a/tests/tls13/post-handshake-with-cert-pkcs11.c +++ b/tests/tls13/post-handshake-with-cert-pkcs11.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,22 +35,22 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "cert-common.h" -# include "tls13/ext-parse.h" -# include "pkcs11/softhsm.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cert-common.h" +#include "tls13/ext-parse.h" +#include "pkcs11/softhsm.h" +#include "utils.h" /* This program tests whether the Post Handshake Auth extension is * present in the client hello, and whether it is missing from server @@ -68,18 +68,18 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define MAX_BUF 1024 +#define MAX_BUF 1024 -# define P11LIB "libpkcs11mock2.so" +#define P11LIB "libpkcs11mock2.so" -# define PIN "1234" +#define PIN "1234" -# define CONFIG_NAME "softhsm-post-handshake-with-cert-pkcs11" -# define CONFIG CONFIG_NAME".config" +#define CONFIG_NAME "softhsm-post-handshake-with-cert-pkcs11" +#define CONFIG CONFIG_NAME ".config" -static -int pin_func(void *userdata, int attempt, const char *url, const char *label, - unsigned flags, char *pin, size_t pin_max) +static int pin_func(void *userdata, int attempt, const char *url, + const char *label, unsigned flags, char *pin, + size_t pin_max) { if (attempt == 0) { strcpy(pin, PIN); @@ -129,15 +129,15 @@ static void client(int fd, int err) ret = gnutls_x509_crt_init(&crt); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_init: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_crt_init: %s\n", + gnutls_strerror(ret)); exit(1); } ret = gnutls_x509_crt_import(crt, &cli_ca3_cert, GNUTLS_X509_FMT_PEM); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_crt_import: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_crt_import: %s\n", + gnutls_strerror(ret)); exit(1); } @@ -150,16 +150,15 @@ static void client(int fd, int err) ret = gnutls_x509_privkey_init(&key); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_privkey_init: %s\n", gnutls_strerror(ret)); + fprintf(stderr, "gnutls_x509_privkey_init: %s\n", + gnutls_strerror(ret)); exit(1); } - ret = - gnutls_x509_privkey_import(key, &cli_ca3_key, GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_privkey_import(key, &cli_ca3_key, + GNUTLS_X509_FMT_PEM); if (ret < 0) { - fprintf(stderr, - "gnutls_x509_privkey_import: %s\n", + fprintf(stderr, "gnutls_x509_privkey_import: %s\n", gnutls_strerror(ret)); exit(1); } @@ -171,9 +170,8 @@ static void client(int fd, int err) exit(1); } - ret = - gnutls_pkcs11_token_set_pin(SOFTHSM_URL, NULL, PIN, - GNUTLS_PIN_USER); + ret = gnutls_pkcs11_token_set_pin(SOFTHSM_URL, NULL, PIN, + GNUTLS_PIN_USER); if (ret < 0) { fail("gnutls_pkcs11_token_set_pin: %s\n", gnutls_strerror(ret)); exit(1); @@ -181,20 +179,18 @@ static void client(int fd, int err) ret = gnutls_pkcs11_copy_x509_crt(SOFTHSM_URL, crt, "cert", GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE | - GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { fail("gnutls_pkcs11_copy_x509_crt: %s\n", gnutls_strerror(ret)); exit(1); } - ret = - gnutls_pkcs11_copy_x509_privkey(SOFTHSM_URL, key, "cert", - GNUTLS_KEY_DIGITAL_SIGNATURE | - GNUTLS_KEY_KEY_ENCIPHERMENT, - GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE - | - GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE - | GNUTLS_PKCS11_OBJ_FLAG_LOGIN); + ret = gnutls_pkcs11_copy_x509_privkey( + SOFTHSM_URL, key, "cert", + GNUTLS_KEY_DIGITAL_SIGNATURE | GNUTLS_KEY_KEY_ENCIPHERMENT, + GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE | + GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE | + GNUTLS_PKCS11_OBJ_FLAG_LOGIN); if (ret < 0) { fail("gnutls_pkcs11_copy_x509_privkey: %s\n", gnutls_strerror(ret)); @@ -208,27 +204,23 @@ static void client(int fd, int err) /* Initialize TLS session */ - assert(gnutls_init - (&session, - GNUTLS_CLIENT | GNUTLS_POST_HANDSHAKE_AUTH | GNUTLS_AUTO_REAUTH) - >= 0); + assert(gnutls_init(&session, GNUTLS_CLIENT | + GNUTLS_POST_HANDSHAKE_AUTH | + GNUTLS_AUTO_REAUTH) >= 0); gnutls_handshake_set_timeout(session, get_timeout()); - ret = - gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-SIGN-RSA-SHA256", - NULL); + ret = gnutls_priority_set_direct( + session, "NORMAL:-VERS-ALL:+VERS-TLS1.3:-SIGN-RSA-SHA256", + NULL); if (ret < 0) fail("cannot set TLS 1.3 priorities\n"); - assert(gnutls_certificate_set_x509_key_file(x509_cred, - SOFTHSM_URL - ";object=cert;object-type=cert", - SOFTHSM_URL - ";object=cert;object-type=private;pin-value=" - PIN, - GNUTLS_X509_FMT_DER) >= 0); + assert(gnutls_certificate_set_x509_key_file( + x509_cred, SOFTHSM_URL ";object=cert;object-type=cert", + SOFTHSM_URL + ";object=cert;object-type=private;pin-value=" PIN, + GNUTLS_X509_FMT_DER) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -238,8 +230,7 @@ static void client(int fd, int err) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret != 0) fail("handshake failed: %s\n", gnutls_strerror(ret)); @@ -261,7 +252,8 @@ static void client(int fd, int err) fail("client: expected error %s, got: %s\n", gnutls_strerror(err), gnutls_strerror(ret)); } else if (ret < 0) - fail("client: gnutls_record_recv did not succeed as expected: %s\n", gnutls_strerror(ret)); + fail("client: gnutls_record_recv did not succeed as expected: %s\n", + gnutls_strerror(ret)); do { ret = gnutls_bye(session, GNUTLS_SHUT_WR); @@ -279,9 +271,9 @@ static void client(int fd, int err) static unsigned client_hello_ok = 0; static unsigned server_hello_ok = 0; -# define TLS_EXT_POST_HANDSHAKE 49 +#define TLS_EXT_POST_HANDSHAKE 49 -static void parse_ext(void *priv, gnutls_datum_t * msg) +static void parse_ext(void *priv, gnutls_datum_t *msg) { if (msg->size != 0) { fail("error in extension length: %d\n", (int)msg->size); @@ -290,11 +282,12 @@ static void parse_ext(void *priv, gnutls_datum_t * msg) static int hellos_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { - if (htype == GNUTLS_HANDSHAKE_SERVER_HELLO && post == GNUTLS_HOOK_POST) { - if (find_server_extension - (msg, TLS_EXT_POST_HANDSHAKE, NULL, NULL)) { + if (htype == GNUTLS_HANDSHAKE_SERVER_HELLO && + post == GNUTLS_HOOK_POST) { + if (find_server_extension(msg, TLS_EXT_POST_HANDSHAKE, NULL, + NULL)) { fail("Post handshake extension seen in server hello!\n"); } server_hello_ok = 1; @@ -357,9 +350,8 @@ static void server(int fd, int err, int type) if (ret != 0) fail("handshake failed: %s\n", gnutls_strerror(ret)); - if (! - (gnutls_session_get_flags(session) & - GNUTLS_SFLAGS_POST_HANDSHAKE_AUTH)) { + if (!(gnutls_session_get_flags(session) & + GNUTLS_SFLAGS_POST_HANDSHAKE_AUTH)) { fail("server: session flags did not contain GNUTLS_SFLAGS_POST_HANDSHAKE_AUTH\n"); } @@ -404,8 +396,7 @@ static void server(int fd, int err, int type) success("server: client/server hello were verified\n"); } -static -void start(const char *name, int err, int cli_err, int type) +static void start(const char *name, int err, int cli_err, int type) { int fd[2]; int ret; @@ -445,7 +436,6 @@ void start(const char *name, int err, int cli_err, int type) client(fd[1], cli_err); exit(0); } - } void doit(void) @@ -464,12 +454,13 @@ void doit(void) set_softhsm_conf(CONFIG); snprintf(buf, sizeof(buf), - "%s --init-token --slot 0 --label test --so-pin " PIN " --pin " - PIN, bin); + "%s --init-token --slot 0 --label test --so-pin " PIN + " --pin " PIN, + bin); system(buf); start("reauth-require", GNUTLS_E_CERTIFICATE_REQUIRED, GNUTLS_E_SUCCESS, GNUTLS_CERT_REQUIRE); start("reauth-request", 0, GNUTLS_E_SUCCESS, GNUTLS_CERT_REQUEST); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls13/post-handshake-with-cert-ticket.c b/tests/tls13/post-handshake-with-cert-ticket.c index 2d4f4c3a52..127ca8a17b 100644 --- a/tests/tls13/post-handshake-with-cert-ticket.c +++ b/tests/tls13/post-handshake-with-cert-ticket.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,21 +35,21 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "../lib/handshake-defs.h" -# include "cert-common.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../lib/handshake-defs.h" +#include "cert-common.h" +#include "utils.h" /* This program tests whether the certificate seen in Post Handshake Auth * is found in a resumed session under TLS 1.3. @@ -68,7 +68,7 @@ static void client_log_func(int level, const char *str) static unsigned tickets_seen = 0; static int ticket_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { gnutls_datum *d; static int counter = 0; @@ -77,7 +77,8 @@ static int ticket_callback(gnutls_session_t session, unsigned int htype, assert(htype == GNUTLS_HANDSHAKE_NEW_SESSION_TICKET); counter++; - if (counter <= TLS13_TICKETS_TO_SEND) /* ignore the default tickets sent */ + if (counter <= + TLS13_TICKETS_TO_SEND) /* ignore the default tickets sent */ return 0; d = gnutls_session_get_ptr(session); @@ -115,30 +116,29 @@ static void client(int fd, unsigned tickets) assert(gnutls_certificate_allocate_credentials(&x509_cred) >= 0); - retry: +retry: /* Initialize TLS session */ - assert(gnutls_init(&session, GNUTLS_CLIENT | GNUTLS_POST_HANDSHAKE_AUTH) - >= 0); + assert(gnutls_init(&session, + GNUTLS_CLIENT | GNUTLS_POST_HANDSHAKE_AUTH) >= 0); gnutls_handshake_set_timeout(session, get_timeout()); - ret = - gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.0", - NULL); + ret = gnutls_priority_set_direct( + session, + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.0", + NULL); if (ret < 0) fail("cannot set TLS 1.3 priorities\n"); if (try == 0) { gnutls_session_set_ptr(session, &session_data); - gnutls_handshake_set_hook_function(session, - GNUTLS_HANDSHAKE_NEW_SESSION_TICKET, - GNUTLS_HOOK_BOTH, - ticket_callback); + gnutls_handshake_set_hook_function( + session, GNUTLS_HANDSHAKE_NEW_SESSION_TICKET, + GNUTLS_HOOK_BOTH, ticket_callback); } else { - assert(gnutls_session_set_data - (session, session_data.data, session_data.size) >= 0); + assert(gnutls_session_set_data(session, session_data.data, + session_data.size) >= 0); } gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -149,16 +149,15 @@ static void client(int fd, unsigned tickets) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret != 0) fail("handshake failed: %s\n", gnutls_strerror(ret)); if (try == 0) { - assert(gnutls_certificate_set_x509_key_mem - (x509_cred, &cli_ca3_cert, &cli_ca3_key, - GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem( + x509_cred, &cli_ca3_cert, &cli_ca3_key, + GNUTLS_X509_FMT_PEM) >= 0); do { ret = gnutls_record_recv(session, buf, sizeof(buf)); @@ -176,7 +175,8 @@ static void client(int fd, unsigned tickets) } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret != 0) - fail("client: gnutls_reauth did not succeed as expected: %s\n", gnutls_strerror(ret)); + fail("client: gnutls_reauth did not succeed as expected: %s\n", + gnutls_strerror(ret)); } else { assert(gnutls_session_is_resumed(session) != 0); } @@ -206,7 +206,7 @@ static void client(int fd, unsigned tickets) gnutls_global_deinit(); } -static void compare(const gnutls_datum_t * der, const void *ipem) +static void compare(const gnutls_datum_t *der, const void *ipem) { gnutls_datum_t pem = { (void *)ipem, strlen((char *)ipem) }; gnutls_datum_t new_der; @@ -217,8 +217,8 @@ static void compare(const gnutls_datum_t * der, const void *ipem) fail("error: %s\n", gnutls_strerror(ret)); } - if (der->size != new_der.size - || memcmp(der->data, new_der.data, der->size) != 0) { + if (der->size != new_der.size || + memcmp(der->data, new_der.data, der->size) != 0) { fail("error in %d: %s\n", __LINE__, "cert don't match"); exit(1); } @@ -250,14 +250,14 @@ static void server(int fd, unsigned tickets) gnutls_certificate_set_x509_key_mem(x509_cred, &server_cert, &server_key, GNUTLS_X509_FMT_PEM); - assert(gnutls_init(&session, GNUTLS_SERVER | GNUTLS_POST_HANDSHAKE_AUTH) - >= 0); + assert(gnutls_init(&session, + GNUTLS_SERVER | GNUTLS_POST_HANDSHAKE_AUTH) >= 0); assert(gnutls_session_ticket_enable_server(session, &skey) >= 0); gnutls_handshake_set_timeout(session, get_timeout()); - assert(gnutls_priority_set_direct(session, "NORMAL:+VERS-TLS1.3", NULL) - >= 0); + assert(gnutls_priority_set_direct(session, "NORMAL:+VERS-TLS1.3", + NULL) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -299,13 +299,13 @@ static void server(int fd, unsigned tickets) /* resume session */ - assert(gnutls_init(&session, GNUTLS_SERVER | GNUTLS_POST_HANDSHAKE_AUTH) - >= 0); + assert(gnutls_init(&session, + GNUTLS_SERVER | GNUTLS_POST_HANDSHAKE_AUTH) >= 0); assert(gnutls_session_ticket_enable_server(session, &skey) >= 0); gnutls_handshake_set_timeout(session, get_timeout()); - assert(gnutls_priority_set_direct(session, "NORMAL:+VERS-TLS1.3", NULL) - >= 0); + assert(gnutls_priority_set_direct(session, "NORMAL:+VERS-TLS1.3", + NULL) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -381,7 +381,6 @@ static void start(const char *name, unsigned tickets) client(fd[1], tickets); exit(0); } - } void doit(void) @@ -394,4 +393,4 @@ void doit(void) start("8 tickets", 8); start("16 tickets", 16); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls13/post-handshake-with-cert.c b/tests/tls13/post-handshake-with-cert.c index 4256594eb1..e6f1c1ad39 100644 --- a/tests/tls13/post-handshake-with-cert.c +++ b/tests/tls13/post-handshake-with-cert.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,23 +35,23 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "cert-common.h" -# include "tls13/ext-parse.h" -# include "utils.h" +#include "cert-common.h" +#include "tls13/ext-parse.h" +#include "utils.h" -# define MAX_AUTHS 4 +#define MAX_AUTHS 4 /* This program tests whether the Post Handshake Auth extension is * present in the client hello, and whether it is missing from server @@ -69,8 +69,8 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define MAX_BUF 1024 -# define MAX_APP_DATA 3 +#define MAX_BUF 1024 +#define MAX_APP_DATA 3 static void client(int fd, unsigned send_cert, unsigned max_auths) { @@ -91,22 +91,22 @@ static void client(int fd, unsigned send_cert, unsigned max_auths) /* Initialize TLS session */ - assert(gnutls_init(&session, GNUTLS_CLIENT | GNUTLS_POST_HANDSHAKE_AUTH) - >= 0); + assert(gnutls_init(&session, + GNUTLS_CLIENT | GNUTLS_POST_HANDSHAKE_AUTH) >= 0); gnutls_handshake_set_timeout(session, get_timeout()); - ret = - gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.0", - NULL); + ret = gnutls_priority_set_direct( + session, + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.0", + NULL); if (ret < 0) fail("cannot set TLS 1.3 priorities\n"); if (send_cert) { - assert(gnutls_certificate_set_x509_key_mem - (x509_cred, &cli_ca3_cert, &cli_ca3_key, - GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem( + x509_cred, &cli_ca3_cert, &cli_ca3_key, + GNUTLS_X509_FMT_PEM) >= 0); } gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -117,8 +117,7 @@ static void client(int fd, unsigned send_cert, unsigned max_auths) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret != 0) fail("handshake failed: %s\n", gnutls_strerror(ret)); @@ -146,11 +145,10 @@ static void client(int fd, unsigned send_cert, unsigned max_auths) for (j = 0; j < MAX_APP_DATA; j++) { memset(buf, j, sizeof(buf)); do { - ret = - gnutls_record_send(session, buf, - sizeof(buf)); - } while (ret == GNUTLS_E_AGAIN - || ret == GNUTLS_E_INTERRUPTED); + ret = gnutls_record_send(session, buf, + sizeof(buf)); + } while (ret == GNUTLS_E_AGAIN || + ret == GNUTLS_E_INTERRUPTED); assert(ret >= 0); } } @@ -162,7 +160,8 @@ static void client(int fd, unsigned send_cert, unsigned max_auths) } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret != 0) - fail("client: gnutls_reauth %d did not succeed as expected: %s\n", i, gnutls_strerror(ret)); + fail("client: gnutls_reauth %d did not succeed as expected: %s\n", + i, gnutls_strerror(ret)); } close(fd); @@ -177,9 +176,9 @@ static void client(int fd, unsigned send_cert, unsigned max_auths) static unsigned client_hello_ok = 0; static unsigned server_hello_ok = 0; -# define TLS_EXT_POST_HANDSHAKE 49 +#define TLS_EXT_POST_HANDSHAKE 49 -static void parse_ext(void *priv, gnutls_datum_t * msg) +static void parse_ext(void *priv, gnutls_datum_t *msg) { if (msg->size != 0) { fail("error in extension length: %d\n", (int)msg->size); @@ -188,11 +187,12 @@ static void parse_ext(void *priv, gnutls_datum_t * msg) static int hellos_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { - if (htype == GNUTLS_HANDSHAKE_SERVER_HELLO && post == GNUTLS_HOOK_POST) { - if (find_server_extension - (msg, TLS_EXT_POST_HANDSHAKE, NULL, NULL)) { + if (htype == GNUTLS_HANDSHAKE_SERVER_HELLO && + post == GNUTLS_HOOK_POST) { + if (find_server_extension(msg, TLS_EXT_POST_HANDSHAKE, NULL, + NULL)) { fail("Post handshake extension seen in server hello!\n"); } server_hello_ok = 1; @@ -255,9 +255,8 @@ static void server(int fd, int err, int type, unsigned max_auths, int child) if (ret != 0) fail("handshake failed: %s\n", gnutls_strerror(ret)); - if (! - (gnutls_session_get_flags(session) & - GNUTLS_SFLAGS_POST_HANDSHAKE_AUTH)) { + if (!(gnutls_session_get_flags(session) & + GNUTLS_SFLAGS_POST_HANDSHAKE_AUTH)) { fail("server: session flags did not contain GNUTLS_SFLAGS_POST_HANDSHAKE_AUTH\n"); } @@ -285,18 +284,17 @@ static void server(int fd, int err, int type, unsigned max_auths, int child) if (ret == GNUTLS_E_GOT_APPLICATION_DATA) { int ret2; do { - ret2 = - gnutls_record_recv(session, buffer, - sizeof(buffer)); - } while (ret2 == GNUTLS_E_AGAIN - || ret2 == GNUTLS_E_INTERRUPTED); + ret2 = gnutls_record_recv(session, buffer, + sizeof(buffer)); + } while (ret2 == GNUTLS_E_AGAIN || + ret2 == GNUTLS_E_INTERRUPTED); if (ret2 < 0) fail("error receiving app data: %s\n", gnutls_strerror(ret2)); /* sender memsets the message with the retry attempt */ - assert((uint8_t) buffer[0] == retries); + assert((uint8_t)buffer[0] == retries); assert(retries < MAX_APP_DATA); } @@ -323,7 +321,8 @@ static void server(int fd, int err, int type, unsigned max_auths, int child) gnutls_strerror(err), gnutls_strerror(ret)); } else if (ret != 0) - fail("server: gnutls_reauth did not succeed as expected: %s\n", gnutls_strerror(ret)); + fail("server: gnutls_reauth did not succeed as expected: %s\n", + gnutls_strerror(ret)); } waitpid(child, NULL, 0); @@ -347,9 +346,8 @@ static void ch_handler(int sig) return; } -static -void start(const char *name, int err, int type, unsigned max_auths, - unsigned send_cert) +static void start(const char *name, int err, int type, unsigned max_auths, + unsigned send_cert) { int fd[2]; int ret; @@ -385,7 +383,6 @@ void start(const char *name, int err, int type, unsigned max_auths, client(fd[1], send_cert, max_auths); exit(0); } - } void doit(void) @@ -395,4 +392,4 @@ void doit(void) GNUTLS_CERT_REQUIRE, 1, 0); start("reauth-request with no-cert", 0, GNUTLS_CERT_REQUEST, 1, 0); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls13/post-handshake-with-psk.c b/tests/tls13/post-handshake-with-psk.c index 6981bee7af..2333bd3ff6 100644 --- a/tests/tls13/post-handshake-with-psk.c +++ b/tests/tls13/post-handshake-with-psk.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,23 +35,23 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "cert-common.h" -# include "tls13/ext-parse.h" -# include "utils.h" +#include "cert-common.h" +#include "tls13/ext-parse.h" +#include "utils.h" -# define MAX_AUTHS 4 +#define MAX_AUTHS 4 /* This program tests whether the Post Handshake Auth would work * under PSK authentication. */ @@ -66,7 +66,7 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd, unsigned send_cert, unsigned max_auths) { @@ -93,22 +93,22 @@ static void client(int fd, unsigned send_cert, unsigned max_auths) /* Initialize TLS session */ - assert(gnutls_init(&session, GNUTLS_CLIENT | GNUTLS_POST_HANDSHAKE_AUTH) - >= 0); + assert(gnutls_init(&session, + GNUTLS_CLIENT | GNUTLS_POST_HANDSHAKE_AUTH) >= 0); gnutls_handshake_set_timeout(session, get_timeout()); - ret = - gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.0:+ECDHE-PSK:+PSK", - NULL); + ret = gnutls_priority_set_direct( + session, + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.0:+ECDHE-PSK:+PSK", + NULL); if (ret < 0) fail("cannot set TLS 1.3 priorities\n"); if (send_cert) { - assert(gnutls_certificate_set_x509_key_mem - (x509_cred, &cli_ca3_cert, &cli_ca3_key, - GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_key_mem( + x509_cred, &cli_ca3_cert, &cli_ca3_key, + GNUTLS_X509_FMT_PEM) >= 0); } gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -120,8 +120,7 @@ static void client(int fd, unsigned send_cert, unsigned max_auths) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret != 0) fail("handshake failed: %s\n", gnutls_strerror(ret)); @@ -152,7 +151,8 @@ static void client(int fd, unsigned send_cert, unsigned max_auths) } while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED); if (ret != 0) - fail("client: gnutls_reauth did not succeed as expected: %s\n", gnutls_strerror(ret)); + fail("client: gnutls_reauth did not succeed as expected: %s\n", + gnutls_strerror(ret)); } close(fd); @@ -168,9 +168,9 @@ static void client(int fd, unsigned send_cert, unsigned max_auths) static unsigned client_hello_ok = 0; static unsigned server_hello_ok = 0; -# define TLS_EXT_POST_HANDSHAKE 49 +#define TLS_EXT_POST_HANDSHAKE 49 -static void parse_ext(void *priv, gnutls_datum_t * msg) +static void parse_ext(void *priv, gnutls_datum_t *msg) { if (msg->size != 0) { fail("error in extension length: %d\n", (int)msg->size); @@ -179,11 +179,12 @@ static void parse_ext(void *priv, gnutls_datum_t * msg) static int hellos_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { - if (htype == GNUTLS_HANDSHAKE_SERVER_HELLO && post == GNUTLS_HOOK_POST) { - if (find_server_extension - (msg, TLS_EXT_POST_HANDSHAKE, NULL, NULL)) { + if (htype == GNUTLS_HANDSHAKE_SERVER_HELLO && + post == GNUTLS_HOOK_POST) { + if (find_server_extension(msg, TLS_EXT_POST_HANDSHAKE, NULL, + NULL)) { fail("Post handshake extension seen in server hello!\n"); } server_hello_ok = 1; @@ -202,8 +203,8 @@ static int hellos_callback(gnutls_session_t session, unsigned int htype, return 0; } -static int -pskfunc(gnutls_session_t session, const char *username, gnutls_datum_t * key) +static int pskfunc(gnutls_session_t session, const char *username, + gnutls_datum_t *key) { if (debug) printf("psk: username %s\n", username); @@ -243,16 +244,16 @@ static void server(int fd, int err, int type, unsigned max_auths) &server_key, GNUTLS_X509_FMT_PEM) >= 0); - assert(gnutls_init(&session, GNUTLS_SERVER | GNUTLS_POST_HANDSHAKE_AUTH) - >= 0); + assert(gnutls_init(&session, + GNUTLS_SERVER | GNUTLS_POST_HANDSHAKE_AUTH) >= 0); gnutls_handshake_set_timeout(session, get_timeout()); gnutls_handshake_set_hook_function(session, GNUTLS_HANDSHAKE_ANY, GNUTLS_HOOK_BOTH, hellos_callback); - assert(gnutls_priority_set_direct - (session, "NORMAL:-VERS-ALL:+VERS-TLS1.3:+PSK:+ECDHE-PSK", - NULL) >= 0); + assert(gnutls_priority_set_direct( + session, "NORMAL:-VERS-ALL:+VERS-TLS1.3:+PSK:+ECDHE-PSK", + NULL) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_PSK, server_pskcred); @@ -265,9 +266,8 @@ static void server(int fd, int err, int type, unsigned max_auths) if (ret != 0) fail("handshake failed: %s\n", gnutls_strerror(ret)); - if (! - (gnutls_session_get_flags(session) & - GNUTLS_SFLAGS_POST_HANDSHAKE_AUTH)) { + if (!(gnutls_session_get_flags(session) & + GNUTLS_SFLAGS_POST_HANDSHAKE_AUTH)) { fail("server: session flags did not contain GNUTLS_SFLAGS_POST_HANDSHAKE_AUTH\n"); } @@ -297,7 +297,8 @@ static void server(int fd, int err, int type, unsigned max_auths) gnutls_strerror(err), gnutls_strerror(ret)); } else if (ret != 0) { - fail("server: gnutls_reauth did not succeed as expected: %s\n", gnutls_strerror(ret)); + fail("server: gnutls_reauth did not succeed as expected: %s\n", + gnutls_strerror(ret)); } if (debug) @@ -324,9 +325,8 @@ static void ch_handler(int sig) return; } -static -void start(const char *name, int err, int type, unsigned max_auths, - unsigned send_cert) +static void start(const char *name, int err, int type, unsigned max_auths, + unsigned send_cert) { int fd[2]; int ret; @@ -363,7 +363,6 @@ void start(const char *name, int err, int type, unsigned max_auths, client(fd[1], send_cert, max_auths); exit(0); } - } void doit(void) @@ -373,4 +372,4 @@ void doit(void) GNUTLS_CERT_REQUIRE, 1, 0); start("reauth-request with no-cert", 0, GNUTLS_CERT_REQUEST, 1, 0); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls13/post-handshake-without-cert.c b/tests/tls13/post-handshake-without-cert.c index 67507d261f..a5a858d194 100644 --- a/tests/tls13/post-handshake-without-cert.c +++ b/tests/tls13/post-handshake-without-cert.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,21 +35,21 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "cert-common.h" -# include "tls13/ext-parse.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cert-common.h" +#include "tls13/ext-parse.h" +#include "utils.h" /* This program tests whether the Post Handshake Auth extension is missing * from both hellos, when not enabled by client. @@ -65,7 +65,7 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd) { @@ -92,10 +92,10 @@ static void client(int fd) gnutls_handshake_set_timeout(session, get_timeout()); - ret = - gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.0", - NULL); + ret = gnutls_priority_set_direct( + session, + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.0", + NULL); if (ret < 0) fail("cannot set TLS 1.3 priorities\n"); @@ -109,8 +109,7 @@ static void client(int fd) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); /* try if gnutls_reauth() would fail as expected */ ret = gnutls_reauth(session, 0); @@ -129,15 +128,16 @@ static void client(int fd) static unsigned server_hello_ok = 0; -# define TLS_EXT_POST_HANDSHAKE 49 +#define TLS_EXT_POST_HANDSHAKE 49 static int hellos_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { - if (htype == GNUTLS_HANDSHAKE_SERVER_HELLO && post == GNUTLS_HOOK_POST) { - if (find_server_extension - (msg, TLS_EXT_POST_HANDSHAKE, NULL, NULL)) { + if (htype == GNUTLS_HANDSHAKE_SERVER_HELLO && + post == GNUTLS_HOOK_POST) { + if (find_server_extension(msg, TLS_EXT_POST_HANDSHAKE, NULL, + NULL)) { fail("Post handshake extension seen in server hello!\n"); } server_hello_ok = 1; @@ -192,7 +192,7 @@ static void server(int fd) do { ret = gnutls_handshake(session); - if (ret == GNUTLS_E_INTERRUPTED) { /* expected */ + if (ret == GNUTLS_E_INTERRUPTED) { /* expected */ break; } } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); @@ -265,4 +265,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls13/prf-early.c b/tests/tls13/prf-early.c index a55970cf3c..205b8f44fe 100644 --- a/tests/tls13/prf-early.c +++ b/tests/tls13/prf-early.c @@ -18,7 +18,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -34,25 +34,25 @@ int main(int argc, char **argv) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "cert-common.h" -# include "utils.h" -# include "virt-time.h" +#include "cert-common.h" +#include "utils.h" +#include "virt-time.h" static void terminate(void); -# define SESSIONS 2 -# define MAX_BUF 5*1024 -# define MSG "Hello TLS" +#define SESSIONS 2 +#define MAX_BUF 5 * 1024 +#define MSG "Hello TLS" extern unsigned int _gnutls_global_version; @@ -73,22 +73,20 @@ static void client_log_func(int level, const char *str) /* These are global */ static pid_t child; -static const -gnutls_datum_t hrnd = { (void *) - "\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", +static const gnutls_datum_t hrnd = { + (void *)"\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 32 }; -static const -gnutls_datum_t hsrnd = { (void *) - "\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", +static const gnutls_datum_t hsrnd = { + (void *)"\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 32 }; static int gnutls_rnd_works; int __attribute__((visibility("protected"))) - gnutls_rnd(gnutls_rnd_level_t level, void *data, size_t len) +gnutls_rnd(gnutls_rnd_level_t level, void *data, size_t len) { gnutls_rnd_works = 1; @@ -103,7 +101,7 @@ int __attribute__((visibility("protected"))) static gnutls_datum_t session_ticket_key = { NULL, 0 }; -static void dump(const char *name, const uint8_t * data, unsigned data_size) +static void dump(const char *name, const uint8_t *data, unsigned data_size) { unsigned i; @@ -113,33 +111,40 @@ static void dump(const char *name, const uint8_t * data, unsigned data_size) fprintf(stderr, "\n"); } -# define TRY(label_size, label, extra_size, extra, size, exp) \ - { \ - ret = gnutls_prf_early(session, label_size, label, extra_size, extra, size, \ - (void*)key_material); \ - if (ret < 0) { \ - fprintf(stderr, "gnutls_prf_early: error in %d\n", __LINE__); \ - gnutls_perror(ret); \ - exit(1); \ - } \ - if (memcmp(key_material, exp, size) != 0) { \ - fprintf(stderr, "gnutls_prf_early: output doesn't match for '%s'\n", label); \ - dump("got ", key_material, size); \ - dump("expected ", exp, size); \ - exit(1); \ - } \ +#define TRY(label_size, label, extra_size, extra, size, exp) \ + { \ + ret = gnutls_prf_early(session, label_size, label, extra_size, \ + extra, size, (void *)key_material); \ + if (ret < 0) { \ + fprintf(stderr, "gnutls_prf_early: error in %d\n", \ + __LINE__); \ + gnutls_perror(ret); \ + exit(1); \ + } \ + if (memcmp(key_material, exp, size) != 0) { \ + fprintf(stderr, \ + "gnutls_prf_early: output doesn't match for '%s'\n", \ + label); \ + dump("got ", key_material, size); \ + dump("expected ", exp, size); \ + exit(1); \ + } \ } -# define KEY_EXP_VALUE "\xec\xc2\x4a\x6b\x07\x89\xd9\x19\xd9\x73\x6d\xd0\x00\x73\xc9\x7a\xd7\x92\xef\x56\x91\x61\xb4\xff\x5f\xef\x81\xc1\x98\x68\x4e\xdf\xd7\x7e" -# define HELLO_VALUE "\x4f\x85\x33\x64\x48\xff\x0d\x8b\xd5\x50\x0f\x97\x91\x5b\x7d\x8d\xc9\x05\x91\x45\x4f\xb9\x4b\x4b\xbc\xbf\x58\x84\x1a\x46\xe3" -# define CONTEXT_VALUE "\x11\x8d\x85\xa8\x91\xe5\x50\x75\x44\x88\x69\xaf\x95\x9a\xb0\x29\xd4\xae\xcd\x11\xcb\x1d\x29\x7c\xe6\x24\xd4\x7c\x95\xdb\x5c" -# define NULL_CONTEXT_VALUE "\x56\x99\x41\x73\x5e\x73\x34\x7f\x3d\x69\x9f\xc0\x3b\x8b\x86\x33\xc6\xc3\x97\x46\x61\x62\x3f\x55\xab\x39\x60\xa5\xeb\xfe\x37" +#define KEY_EXP_VALUE \ + "\xec\xc2\x4a\x6b\x07\x89\xd9\x19\xd9\x73\x6d\xd0\x00\x73\xc9\x7a\xd7\x92\xef\x56\x91\x61\xb4\xff\x5f\xef\x81\xc1\x98\x68\x4e\xdf\xd7\x7e" +#define HELLO_VALUE \ + "\x4f\x85\x33\x64\x48\xff\x0d\x8b\xd5\x50\x0f\x97\x91\x5b\x7d\x8d\xc9\x05\x91\x45\x4f\xb9\x4b\x4b\xbc\xbf\x58\x84\x1a\x46\xe3" +#define CONTEXT_VALUE \ + "\x11\x8d\x85\xa8\x91\xe5\x50\x75\x44\x88\x69\xaf\x95\x9a\xb0\x29\xd4\xae\xcd\x11\xcb\x1d\x29\x7c\xe6\x24\xd4\x7c\x95\xdb\x5c" +#define NULL_CONTEXT_VALUE \ + "\x56\x99\x41\x73\x5e\x73\x34\x7f\x3d\x69\x9f\xc0\x3b\x8b\x86\x33\xc6\xc3\x97\x46\x61\x62\x3f\x55\xab\x39\x60\xa5\xeb\xfe\x37" static int handshake_callback_called; static int handshake_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { unsigned char key_material[512]; int ret; @@ -148,10 +153,10 @@ static int handshake_callback(gnutls_session_t session, unsigned int htype, handshake_callback_called++; - TRY(13, "key expansion", 0, NULL, 34, (uint8_t *) KEY_EXP_VALUE); - TRY(6, "hello", 0, NULL, 31, (uint8_t *) HELLO_VALUE); - TRY(7, "context", 5, "abcd\xfa", 31, (uint8_t *) CONTEXT_VALUE); - TRY(12, "null-context", 0, "", 31, (uint8_t *) NULL_CONTEXT_VALUE); + TRY(13, "key expansion", 0, NULL, 34, (uint8_t *)KEY_EXP_VALUE); + TRY(6, "hello", 0, NULL, 31, (uint8_t *)HELLO_VALUE); + TRY(7, "context", 5, "abcd\xfa", 31, (uint8_t *)CONTEXT_VALUE); + TRY(12, "null-context", 0, "", 31, (uint8_t *)NULL_CONTEXT_VALUE); return 0; } @@ -184,9 +189,10 @@ static void client(int sds[]) gnutls_init(&session, GNUTLS_CLIENT); /* Use default priorities, sets %NO_SHUFFLE_EXTENSIONS */ - ret = gnutls_priority_set_direct(session, - "NONE:+VERS-TLS1.3:+AES-256-GCM:+AEAD:+SIGN-RSA-PSS-RSAE-SHA384:+GROUP-SECP256R1:%NO_SHUFFLE_EXTENSIONS", - &err); + ret = gnutls_priority_set_direct( + session, + "NONE:+VERS-TLS1.3:+AES-256-GCM:+AEAD:+SIGN-RSA-PSS-RSAE-SHA384:+GROUP-SECP256R1:%NO_SHUFFLE_EXTENSIONS", + &err); if (ret < 0) { fail("client: priority set failed (%s): %s\n", gnutls_strerror(ret), err); @@ -204,18 +210,16 @@ static void client(int sds[]) if (t > 0) { gnutls_session_set_data(session, session_data.data, session_data.size); - gnutls_handshake_set_hook_function(session, - GNUTLS_HANDSHAKE_CLIENT_HELLO, - GNUTLS_HOOK_POST, - handshake_callback); + gnutls_handshake_set_hook_function( + session, GNUTLS_HANDSHAKE_CLIENT_HELLO, + GNUTLS_HOOK_POST, handshake_callback); } /* Perform the TLS handshake */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed: %s\n", strerror(ret)); @@ -227,8 +231,8 @@ static void client(int sds[]) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); ret = gnutls_cipher_get(session); if (ret != GNUTLS_CIPHER_AES_256_GCM) { @@ -264,8 +268,7 @@ static void client(int sds[]) } while (ret == GNUTLS_E_AGAIN); if (ret == 0) { if (debug) - success - ("client: Peer has closed the TLS connection\n"); + success("client: Peer has closed the TLS connection\n"); } else if (ret < 0) { fail("client: Error: %s\n", gnutls_strerror(ret)); } @@ -335,9 +338,10 @@ static void server(int sds[]) /* avoid calling all the priority functions, since the defaults * are adequate. */ - ret = gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-KX-ALL:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA384:-GROUP-ALL:+GROUP-SECP256R1", - NULL); + ret = gnutls_priority_set_direct( + session, + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-KX-ALL:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA384:-GROUP-ALL:+GROUP-SECP256R1", + NULL); if (ret < 0) { fail("server: priority set failed (%s)\n\n", gnutls_strerror(ret)); @@ -359,17 +363,15 @@ static void server(int sds[]) "gnutls_rnd() could not be overridden, skipping prf checks see #584\n"); exit(77); } else { - gnutls_handshake_set_hook_function(session, - GNUTLS_HANDSHAKE_CLIENT_HELLO, - GNUTLS_HOOK_POST, - handshake_callback); + gnutls_handshake_set_hook_function( + session, GNUTLS_HANDSHAKE_CLIENT_HELLO, + GNUTLS_HOOK_POST, handshake_callback); } } do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(sds[t]); gnutls_deinit(session); @@ -382,8 +384,8 @@ static void server(int sds[]) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); if (t == 0) { if (handshake_callback_called != 0) @@ -399,12 +401,12 @@ static void server(int sds[]) if (ret == 0) { if (debug) - success - ("server: Peer has closed the GnuTLS connection\n"); + success("server: Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0) { kill(child, SIGTERM); - fail("server: Received corrupted data(%d). Closing...\n", ret); + fail("server: Received corrupted data(%d). Closing...\n", + ret); break; } else if (ret > 0) { /* echo data back to the client @@ -480,4 +482,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls13/prf.c b/tests/tls13/prf.c index 877f45867e..d8c6e4e807 100644 --- a/tests/tls13/prf.c +++ b/tests/tls13/prf.c @@ -18,7 +18,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,18 +33,18 @@ int main(int argc, char **argv) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "cert-common.h" -# include "utils.h" +#include "cert-common.h" +#include "utils.h" static void terminate(void); @@ -65,22 +65,20 @@ static void client_log_func(int level, const char *str) /* These are global */ static pid_t child; -static const -gnutls_datum_t hrnd = { (void *) - "\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", +static const gnutls_datum_t hrnd = { + (void *)"\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 32 }; -static const -gnutls_datum_t hsrnd = { (void *) - "\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", +static const gnutls_datum_t hsrnd = { + (void *)"\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 32 }; static int gnutls_rnd_works; int __attribute__((visibility("protected"))) - gnutls_rnd(gnutls_rnd_level_t level, void *data, size_t len) +gnutls_rnd(gnutls_rnd_level_t level, void *data, size_t len) { gnutls_rnd_works = 1; @@ -93,7 +91,7 @@ int __attribute__((visibility("protected"))) return 0; } -static void dump(const char *name, const uint8_t * data, unsigned data_size) +static void dump(const char *name, const uint8_t *data, unsigned data_size) { unsigned i; @@ -103,44 +101,55 @@ static void dump(const char *name, const uint8_t * data, unsigned data_size) fprintf(stderr, "\n"); } -# define TRY(label_size, label, extra_size, extra, size, exp) \ - { \ - ret = gnutls_prf_rfc5705(session, label_size, label, extra_size, extra, size, \ - (void*)key_material); \ - if (ret < 0) { \ - fprintf(stderr, "gnutls_prf_rfc5705: error in %d\n", __LINE__); \ - gnutls_perror(ret); \ - exit(1); \ - } \ - if (memcmp(key_material, exp, size) != 0) { \ - fprintf(stderr, "gnutls_prf_rfc5705: output doesn't match for '%s'\n", label); \ - dump("got ", key_material, size); \ - dump("expected ", exp, size); \ - exit(1); \ - } \ +#define TRY(label_size, label, extra_size, extra, size, exp) \ + { \ + ret = gnutls_prf_rfc5705(session, label_size, label, \ + extra_size, extra, size, \ + (void *)key_material); \ + if (ret < 0) { \ + fprintf(stderr, "gnutls_prf_rfc5705: error in %d\n", \ + __LINE__); \ + gnutls_perror(ret); \ + exit(1); \ + } \ + if (memcmp(key_material, exp, size) != 0) { \ + fprintf(stderr, \ + "gnutls_prf_rfc5705: output doesn't match for '%s'\n", \ + label); \ + dump("got ", key_material, size); \ + dump("expected ", exp, size); \ + exit(1); \ + } \ } -# define TRY_OLD(label_size, label, size, exp) \ - { \ - ret = gnutls_prf(session, label_size, label, 0, 0, NULL, size, \ - (void*)key_material); \ - if (ret < 0) { \ - fprintf(stderr, "gnutls_prf: error in %d\n", __LINE__); \ - gnutls_perror(ret); \ - exit(1); \ - } \ - if (memcmp(key_material, exp, size) != 0) { \ - fprintf(stderr, "gnutls_prf: output doesn't match for '%s'\n", label); \ - dump("got ", key_material, size); \ - dump("expected ", exp, size); \ - exit(1); \ - } \ +#define TRY_OLD(label_size, label, size, exp) \ + { \ + ret = gnutls_prf(session, label_size, label, 0, 0, NULL, size, \ + (void *)key_material); \ + if (ret < 0) { \ + fprintf(stderr, "gnutls_prf: error in %d\n", \ + __LINE__); \ + gnutls_perror(ret); \ + exit(1); \ + } \ + if (memcmp(key_material, exp, size) != 0) { \ + fprintf(stderr, \ + "gnutls_prf: output doesn't match for '%s'\n", \ + label); \ + dump("got ", key_material, size); \ + dump("expected ", exp, size); \ + exit(1); \ + } \ } -# define KEY_EXP_VALUE "\x28\x70\xa8\x34\xd4\x43\x85\xfd\x55\xe0\x13\x78\x75\xa3\x25\xa7\xfd\x0b\x6b\x68\x5d\x62\x72\x02\xdf\x3d\x79\xca\x55\xab\xea\x24\xf3\x4d" -# define HELLO_VALUE "\xd8\xcb\x72\x1e\x24\x2d\x79\x11\x41\x38\x05\x2b\x1b\x5d\x60\x12\x30\x0a\xf7\x1e\x23\x90\x4d\x64\xf8\xf5\x23\xea\xbf\xa3\x24" -# define CONTEXT_VALUE "\xe6\xc0\x57\xbe\xda\x28\x9c\xc7\xf6\x4f\xb6\x18\x92\xce\x10\xf6\xe1\x5e\xab\x10\xc8\xd1\x94\xf8\xac\xc7\x3e\x93\xde\x57\x12" -# define NULL_CONTEXT_VALUE "\xaf\xea\xd2\x64\xc9\x42\xbd\xe7\xdb\xf0\xd3\x16\x84\x39\xf3\xdb\x5d\x4f\x0e\x5e\x71\x1e\xc0\xd7\x23\xde\x8b\x1e\x80\xa1\xca" +#define KEY_EXP_VALUE \ + "\x28\x70\xa8\x34\xd4\x43\x85\xfd\x55\xe0\x13\x78\x75\xa3\x25\xa7\xfd\x0b\x6b\x68\x5d\x62\x72\x02\xdf\x3d\x79\xca\x55\xab\xea\x24\xf3\x4d" +#define HELLO_VALUE \ + "\xd8\xcb\x72\x1e\x24\x2d\x79\x11\x41\x38\x05\x2b\x1b\x5d\x60\x12\x30\x0a\xf7\x1e\x23\x90\x4d\x64\xf8\xf5\x23\xea\xbf\xa3\x24" +#define CONTEXT_VALUE \ + "\xe6\xc0\x57\xbe\xda\x28\x9c\xc7\xf6\x4f\xb6\x18\x92\xce\x10\xf6\xe1\x5e\xab\x10\xc8\xd1\x94\xf8\xac\xc7\x3e\x93\xde\x57\x12" +#define NULL_CONTEXT_VALUE \ + "\xaf\xea\xd2\x64\xc9\x42\xbd\xe7\xdb\xf0\xd3\x16\x84\x39\xf3\xdb\x5d\x4f\x0e\x5e\x71\x1e\xc0\xd7\x23\xde\x8b\x1e\x80\xa1\xca" static void check_prfs(gnutls_session_t session) { unsigned char key_material[512]; @@ -152,25 +161,23 @@ static void check_prfs(gnutls_session_t session) exit(77); } - TRY_OLD(13, "key expansion", 34, (uint8_t *) KEY_EXP_VALUE); - TRY_OLD(6, "hello", 31, (uint8_t *) HELLO_VALUE); + TRY_OLD(13, "key expansion", 34, (uint8_t *)KEY_EXP_VALUE); + TRY_OLD(6, "hello", 31, (uint8_t *)HELLO_VALUE); - TRY(13, "key expansion", 0, NULL, 34, (uint8_t *) KEY_EXP_VALUE); - TRY(6, "hello", 0, NULL, 31, (uint8_t *) HELLO_VALUE); - TRY(7, "context", 5, "abcd\xfa", 31, (uint8_t *) CONTEXT_VALUE); - TRY(12, "null-context", 0, "", 31, (uint8_t *) NULL_CONTEXT_VALUE); + TRY(13, "key expansion", 0, NULL, 34, (uint8_t *)KEY_EXP_VALUE); + TRY(6, "hello", 0, NULL, 31, (uint8_t *)HELLO_VALUE); + TRY(7, "context", 5, "abcd\xfa", 31, (uint8_t *)CONTEXT_VALUE); + TRY(12, "null-context", 0, "", 31, (uint8_t *)NULL_CONTEXT_VALUE); /* Try whether calling gnutls_prf() with non-null context or server-first * param, will fail */ - ret = - gnutls_prf(session, 3, (void *)"xxx", 0, 3, (void *)"yyy", 16, - (void *)key_material); + ret = gnutls_prf(session, 3, (void *)"xxx", 0, 3, (void *)"yyy", 16, + (void *)key_material); if (ret != GNUTLS_E_INVALID_REQUEST) fail("gnutls_prf: succeeded under TLS1.3!\n"); - ret = - gnutls_prf(session, 3, (void *)"xxx", 1, 0, NULL, 16, - (void *)key_material); + ret = gnutls_prf(session, 3, (void *)"xxx", 1, 0, NULL, 16, + (void *)key_material); if (ret != GNUTLS_E_INVALID_REQUEST) fail("gnutls_prf: succeeded under TLS1.3!\n"); } @@ -197,9 +204,10 @@ static void client(int fd) gnutls_init(&session, GNUTLS_CLIENT); /* Use default priorities, sets %NO_SHUFFLE_EXTENSIONS */ - ret = gnutls_priority_set_direct(session, - "NONE:+VERS-TLS1.3:+AES-256-GCM:+AEAD:+SIGN-RSA-PSS-RSAE-SHA384:+GROUP-SECP256R1:%NO_SHUFFLE_EXTENSIONS", - &err); + ret = gnutls_priority_set_direct( + session, + "NONE:+VERS-TLS1.3:+AES-256-GCM:+AEAD:+SIGN-RSA-PSS-RSAE-SHA384:+GROUP-SECP256R1:%NO_SHUFFLE_EXTENSIONS", + &err); if (ret < 0) { fail("client: priority set failed (%s): %s\n", @@ -219,8 +227,7 @@ static void client(int fd) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("client: Handshake failed: %s\n", strerror(ret)); @@ -232,8 +239,8 @@ static void client(int fd) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); ret = gnutls_cipher_get(session); if (ret != GNUTLS_CIPHER_AES_256_GCM) { @@ -302,18 +309,18 @@ static void server(int fd) /* avoid calling all the priority functions, since the defaults * are adequate. */ - ret = gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.3:-KX-ALL:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA384:-GROUP-ALL:+GROUP-SECP256R1", - NULL); + ret = gnutls_priority_set_direct( + session, + "NORMAL:-VERS-ALL:+VERS-TLS1.3:-KX-ALL:-SIGN-ALL:+SIGN-RSA-PSS-RSAE-SHA384:-GROUP-ALL:+GROUP-SECP256R1", + NULL); if (ret < 0) { fail("server: priority set failed (%s)\n\n", gnutls_strerror(ret)); terminate(); } - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, serverx509cred); gnutls_handshake_set_random(session, &hsrnd); @@ -321,8 +328,7 @@ static void server(int fd) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { close(fd); gnutls_deinit(session); @@ -335,8 +341,8 @@ static void server(int fd) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); check_prfs(session); @@ -389,4 +395,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls13/psk-dumbfw.c b/tests/tls13/psk-dumbfw.c index ec8c23afce..e884ec4665 100644 --- a/tests/tls13/psk-dumbfw.c +++ b/tests/tls13/psk-dumbfw.c @@ -22,7 +22,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -39,20 +39,20 @@ int main(int argc, char **argv) #else -# include -# include -# include -# if !defined(_WIN32) -# include -# endif -# include -# include -# include -# include +#include +#include +#include +#if !defined(_WIN32) +#include +#endif +#include +#include +#include +#include -# include "tls13/ext-parse.h" +#include "tls13/ext-parse.h" -# include "utils.h" +#include "utils.h" /* Tests whether the pre-shared key extension will always be last * even if the dumbfw extension is present. @@ -65,8 +65,8 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -# define MAX_BUF 1024 -# define MSG "Hello TLS" +#define MAX_BUF 1024 +#define MSG "Hello TLS" static void client(int sd, const char *prio) { @@ -131,7 +131,7 @@ static void client(int sd, const char *prio) gnutls_bye(session, GNUTLS_SHUT_RDWR); - end: +end: close(sd); @@ -142,8 +142,8 @@ static void client(int sd, const char *prio) gnutls_global_deinit(); } -static int -pskfunc(gnutls_session_t session, const char *username, gnutls_datum_t * key) +static int pskfunc(gnutls_session_t session, const char *username, + gnutls_datum_t *key) { if (debug) printf("psk: username %s\n", username); @@ -156,16 +156,15 @@ pskfunc(gnutls_session_t session, const char *username, gnutls_datum_t * key) return 0; } -# define EXT_CLIENTHELLO_PADDING 21 -# define EXT_PRE_SHARED_KEY 41 +#define EXT_CLIENTHELLO_PADDING 21 +#define EXT_PRE_SHARED_KEY 41 struct ctx_st { unsigned long pos; void *base; }; -static -void check_ext_pos(void *priv, gnutls_datum_t * msg) +static void check_ext_pos(void *priv, gnutls_datum_t *msg) { struct ctx_st *ctx = priv; @@ -174,23 +173,24 @@ void check_ext_pos(void *priv, gnutls_datum_t * msg) static int client_hello_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { unsigned long pos_psk; unsigned long pos_pad; - if (htype == GNUTLS_HANDSHAKE_CLIENT_HELLO && post == GNUTLS_HOOK_POST) { + if (htype == GNUTLS_HANDSHAKE_CLIENT_HELLO && + post == GNUTLS_HOOK_POST) { struct ctx_st ctx; ctx.base = msg->data; - if (find_client_extension - (msg, EXT_CLIENTHELLO_PADDING, &ctx, check_ext_pos) == 0) + if (find_client_extension(msg, EXT_CLIENTHELLO_PADDING, &ctx, + check_ext_pos) == 0) fail("Could not find dumbfw/client hello padding extension!\n"); pos_pad = ctx.pos; ctx.base = msg->data; - if (find_client_extension - (msg, EXT_PRE_SHARED_KEY, &ctx, check_ext_pos) == 0) + if (find_client_extension(msg, EXT_PRE_SHARED_KEY, &ctx, + check_ext_pos) == 0) fail("Could not find psk extension!\n"); pos_psk = ctx.pos; @@ -252,11 +252,11 @@ static void server(int sd, const char *prio) if (ret == 0) { if (debug) - success - ("server: Peer has closed the GnuTLS connection\n"); + success("server: Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0) { - fail("server: Received corrupted data(%d). Closing...\n", ret); + fail("server: Received corrupted data(%d). Closing...\n", + ret); break; } else if (ret > 0) { /* echo data back to the client @@ -286,8 +286,7 @@ static void ch_handler(int sig) return; } -static -void run_test(const char *prio) +static void run_test(const char *prio) { pid_t child; int err; @@ -328,8 +327,8 @@ void run_test(const char *prio) void doit(void) { - run_test - ("NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+PSK:%DUMBFW:-GROUP-ALL:+GROUP-FFDHE2048"); + run_test( + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+PSK:%DUMBFW:-GROUP-ALL:+GROUP-FFDHE2048"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls13/psk-ext.c b/tests/tls13/psk-ext.c index 25d0a2c0d2..de9da1904a 100644 --- a/tests/tls13/psk-ext.c +++ b/tests/tls13/psk-ext.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,8 +35,8 @@ /* Tests the PSK-extension decoding part */ -static void decode(const char *test_name, const gnutls_datum_t * raw, - const gnutls_datum_t * id, const gnutls_datum_t * b, +static void decode(const char *test_name, const gnutls_datum_t *raw, + const gnutls_datum_t *id, const gnutls_datum_t *b, unsigned idx, int res) { int ret; @@ -49,7 +49,7 @@ static void decode(const char *test_name, const gnutls_datum_t * raw, ret = _gnutls13_psk_ext_parser_init(&p, raw->data, raw->size); if (ret < 0) { - if (res == ret) /* expected */ + if (res == ret) /* expected */ return; fail("%s: _gnutls13_psk_ext_parser_init: %d/%s\n", test_name, ret, gnutls_strerror(ret)); @@ -62,13 +62,13 @@ static void decode(const char *test_name, const gnutls_datum_t * raw, if (ret < 0) { if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) break; - if (res == ret) /* expected */ + if (res == ret) /* expected */ return; } if (i == idx) { - if (psk.identity.size == id->size - && memcmp(psk.identity.data, id->data, - id->size) == 0) { + if (psk.identity.size == id->size && + memcmp(psk.identity.data, id->data, id->size) == + 0) { if (debug) success("%s: found id\n", test_name); found = 1; @@ -87,18 +87,18 @@ static void decode(const char *test_name, const gnutls_datum_t * raw, for (j = 0; j <= i; j++) { ret = _gnutls13_psk_ext_iter_next_binder(&iter, &binder); if (ret < 0) { - if (res == ret) /* expected */ + if (res == ret) /* expected */ return; - fail("%s: could not extract binder: %s\n", - test_name, gnutls_strerror(ret)); + fail("%s: could not extract binder: %s\n", test_name, + gnutls_strerror(ret)); } } if (debug) success("%s: found binder\n", test_name); - if (binder.size != b->size - || memcmp(binder.data, b->data, b->size) != 0) { + if (binder.size != b->size || + memcmp(binder.data, b->data, b->size) != 0) { hexprint(binder.data, binder.size); fail("%s: did not match binder on index %d\n", test_name, idx); } @@ -109,103 +109,102 @@ static void decode(const char *test_name, const gnutls_datum_t * raw, struct decode_tests_st { const char *name; gnutls_datum_t psk; - unsigned idx; /* the ID index */ + unsigned idx; /* the ID index */ gnutls_datum_t id; gnutls_datum_t binder; int res; }; struct decode_tests_st decode_tests[] = { - { - .name = "single PSK", - .psk = {(unsigned char *) - "\x00\x0a\x00\x04\x6e\x6d\x61\x76\x00\x00\x00\x00\x00\x21\x20\xc4\xda\xe5\x7e\x05\x59\xf7\xae\x9b\xba\x90\xd2\x6e\x12\x68\xf6\xc1\xc7\xb9\x7e\xdc\xed\x9e\x67\x4e\xa5\x91\x2d\x7c\xb4\xf0\xab", - 47}, - .id = {(unsigned char *)"nmav", 4}, - .binder = {(unsigned char *) - "\xc4\xda\xe5\x7e\x05\x59\xf7\xae\x9b\xba\x90\xd2\x6e\x12\x68\xf6\xc1\xc7\xb9\x7e\xdc\xed\x9e\x67\x4e\xa5\x91\x2d\x7c\xb4\xf0\xab", - 32}, - .idx = 0, - .res = 0}, - { - .name = "multiple psks id0", - .psk = - {(unsigned char *)"\x00\x20\x00\x04\x70\x73\x6b\x31\x00\x00\x00\x00" - "\x00\x06\x70\x73\x6b\x69\x64\x00\x00\x00\x00\x00" - "\x00\x04\x74\x65\x73\x74\x00\x00\x00\x00\x00\x63" - "\x20\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x01\x00" - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - "\x00\x00\x00\x00\x00\x00\x20\x71\x83\x89\x3d\xcc" - "\x46\xad\x83\x18\x98\x59\x46\x0b\xb2\x51\x24\x53" - "\x41\xb4\x35\x04\x22\x90\x02\xac\x5e\xc1\xe7\xbc" "\xca\x52\x16", - 135}, - .id = {(unsigned char *)"psk1", 4}, - .binder = {(unsigned char *) - "\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", - 32}, - .idx = 0, - .res = 0}, - { - .name = "multiple psks id1", - .psk = - {(unsigned char *)"\x00\x20\x00\x04\x70\x73\x6b\x31\x00\x00\x00\x00" - "\x00\x06\x70\x73\x6b\x69\x64\x00\x00\x00\x00\x00" - "\x00\x04\x74\x65\x73\x74\x00\x00\x00\x00\x00\x63" - "\x20\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x01\x00" - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - "\x00\x00\x00\x00\x00\x00\x20\x71\x83\x89\x3d\xcc" - "\x46\xad\x83\x18\x98\x59\x46\x0b\xb2\x51\x24\x53" - "\x41\xb4\x35\x04\x22\x90\x02\xac\x5e\xc1\xe7\xbc" "\xca\x52\x16", - 135}, - .id = {(unsigned char *)"pskid", 6}, - .binder = {(unsigned char *) - "\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", - 32}, - .idx = 1, - .res = 0}, - { - .name = "multiple psks id2", - .psk = - {(unsigned char *)"\x00\x20\x00\x04\x70\x73\x6b\x31\x00\x00\x00\x00" - "\x00\x06\x70\x73\x6b\x69\x64\x00\x00\x00\x00\x00" - "\x00\x04\x74\x65\x73\x74\x00\x00\x00\x00\x00\x63" - "\x20\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x01\x00" - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - "\x00\x00\x00\x00\x00\x00\x20\x71\x83\x89\x3d\xcc" - "\x46\xad\x83\x18\x98\x59\x46\x0b\xb2\x51\x24\x53" - "\x41\xb4\x35\x04\x22\x90\x02\xac\x5e\xc1\xe7\xbc" "\xca\x52\x16", - 135}, - .id = {(unsigned char *)"test", 4}, - .binder = {(unsigned char *) - "\x71\x83\x89\x3d\xcc\x46\xad\x83\x18\x98\x59\x46\x0b\xb2\x51\x24\x53\x41\xb4\x35\x04\x22\x90\x02\xac\x5e\xc1\xe7\xbc\xca\x52\x16", - 32}, - .idx = 2, - .res = 0}, - { - .name = "multiple psks id3", - .psk = - {(unsigned char *)"\x00\x20\x00\x04\x70\x73\x6b\x31\x00\x00\x00\x00" - "\x00\x06\x70\x73\x6b\x69\x64\x00\x00\x00\x00\x00" - "\x00\x04\x74\x65\x73\x74\x00\x00\x00\x00\x00\x42" - "\x20\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x01\x00" - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - "\x00\x00\x00\x00\x00\x00", 102}, - .id = {(unsigned char *)"test", 4}, - .binder = {NULL, 0}, - .idx = 2, - .res = GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE} + { .name = "single PSK", + .psk = { (unsigned char + *)"\x00\x0a\x00\x04\x6e\x6d\x61\x76\x00\x00\x00\x00\x00\x21\x20\xc4\xda\xe5\x7e\x05\x59\xf7\xae\x9b\xba\x90\xd2\x6e\x12\x68\xf6\xc1\xc7\xb9\x7e\xdc\xed\x9e\x67\x4e\xa5\x91\x2d\x7c\xb4\xf0\xab", + 47 }, + .id = { (unsigned char *)"nmav", 4 }, + .binder = { (unsigned char + *)"\xc4\xda\xe5\x7e\x05\x59\xf7\xae\x9b\xba\x90\xd2\x6e\x12\x68\xf6\xc1\xc7\xb9\x7e\xdc\xed\x9e\x67\x4e\xa5\x91\x2d\x7c\xb4\xf0\xab", + 32 }, + .idx = 0, + .res = 0 }, + { .name = "multiple psks id0", + .psk = { (unsigned char + *)"\x00\x20\x00\x04\x70\x73\x6b\x31\x00\x00\x00\x00" + "\x00\x06\x70\x73\x6b\x69\x64\x00\x00\x00\x00\x00" + "\x00\x04\x74\x65\x73\x74\x00\x00\x00\x00\x00\x63" + "\x20\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x01\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x20\x71\x83\x89\x3d\xcc" + "\x46\xad\x83\x18\x98\x59\x46\x0b\xb2\x51\x24\x53" + "\x41\xb4\x35\x04\x22\x90\x02\xac\x5e\xc1\xe7\xbc" + "\xca\x52\x16", + 135 }, + .id = { (unsigned char *)"psk1", 4 }, + .binder = { (unsigned char + *)"\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + 32 }, + .idx = 0, + .res = 0 }, + { .name = "multiple psks id1", + .psk = { (unsigned char + *)"\x00\x20\x00\x04\x70\x73\x6b\x31\x00\x00\x00\x00" + "\x00\x06\x70\x73\x6b\x69\x64\x00\x00\x00\x00\x00" + "\x00\x04\x74\x65\x73\x74\x00\x00\x00\x00\x00\x63" + "\x20\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x01\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x20\x71\x83\x89\x3d\xcc" + "\x46\xad\x83\x18\x98\x59\x46\x0b\xb2\x51\x24\x53" + "\x41\xb4\x35\x04\x22\x90\x02\xac\x5e\xc1\xe7\xbc" + "\xca\x52\x16", + 135 }, + .id = { (unsigned char *)"pskid", 6 }, + .binder = { (unsigned char + *)"\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + 32 }, + .idx = 1, + .res = 0 }, + { .name = "multiple psks id2", + .psk = { (unsigned char + *)"\x00\x20\x00\x04\x70\x73\x6b\x31\x00\x00\x00\x00" + "\x00\x06\x70\x73\x6b\x69\x64\x00\x00\x00\x00\x00" + "\x00\x04\x74\x65\x73\x74\x00\x00\x00\x00\x00\x63" + "\x20\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x01\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x20\x71\x83\x89\x3d\xcc" + "\x46\xad\x83\x18\x98\x59\x46\x0b\xb2\x51\x24\x53" + "\x41\xb4\x35\x04\x22\x90\x02\xac\x5e\xc1\xe7\xbc" + "\xca\x52\x16", + 135 }, + .id = { (unsigned char *)"test", 4 }, + .binder = { (unsigned char + *)"\x71\x83\x89\x3d\xcc\x46\xad\x83\x18\x98\x59\x46\x0b\xb2\x51\x24\x53\x41\xb4\x35\x04\x22\x90\x02\xac\x5e\xc1\xe7\xbc\xca\x52\x16", + 32 }, + .idx = 2, + .res = 0 }, + { .name = "multiple psks id3", + .psk = { (unsigned char + *)"\x00\x20\x00\x04\x70\x73\x6b\x31\x00\x00\x00\x00" + "\x00\x06\x70\x73\x6b\x69\x64\x00\x00\x00\x00\x00" + "\x00\x04\x74\x65\x73\x74\x00\x00\x00\x00\x00\x42" + "\x20\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x01\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00", + 102 }, + .id = { (unsigned char *)"test", 4 }, + .binder = { NULL, 0 }, + .idx = 2, + .res = GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE } }; void doit(void) diff --git a/tests/tls13/psk-ke-modes.c b/tests/tls13/psk-ke-modes.c index c02c6672d5..75231295bc 100644 --- a/tests/tls13/psk-ke-modes.c +++ b/tests/tls13/psk-ke-modes.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -49,8 +49,7 @@ const char *testname = ""; -#define myfail(fmt, ...) \ - fail("%s: "fmt, testname, ##__VA_ARGS__) +#define myfail(fmt, ...) fail("%s: " fmt, testname, ##__VA_ARGS__) const char *side = ""; @@ -59,10 +58,10 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -static int -new_session_ticket_callback(gnutls_session_t session, unsigned int htype, - unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) +static int new_session_ticket_callback(gnutls_session_t session, + unsigned int htype, unsigned post, + unsigned int incoming, + const gnutls_datum_t *msg) { bool *new_session_ticket_sent = gnutls_session_get_ptr(session); *new_session_ticket_sent = true; @@ -70,7 +69,8 @@ new_session_ticket_callback(gnutls_session_t session, unsigned int htype, } #define MAX_BUF 1024 -#define MSG "Hello TLS, and hi and how are you and more data here... and more... and even more and even more more data..." +#define MSG \ + "Hello TLS, and hi and how are you and more data here... and more... and even more and even more more data..." static void start(const char *name, const char *prio, const char *sprio) { @@ -92,8 +92,7 @@ static void start(const char *name, const char *prio, const char *sprio) /* Init server */ assert(gnutls_certificate_allocate_credentials(&scred) >= 0); - assert(gnutls_certificate_set_x509_key_mem(scred, - &server_cert, + assert(gnutls_certificate_set_x509_key_mem(scred, &server_cert, &server_key, GNUTLS_X509_FMT_PEM) >= 0); @@ -117,8 +116,8 @@ static void start(const char *name, const char *prio, const char *sprio) /* Init client */ gnutls_certificate_allocate_credentials(&ccred); - assert(gnutls_certificate_set_x509_trust_mem - (ccred, &ca3_cert, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_trust_mem(ccred, &ca3_cert, + GNUTLS_X509_FMT_PEM) >= 0); gnutls_init(&client, GNUTLS_CLIENT); diff --git a/tests/tls13/rnd-check-rollback-val.c b/tests/tls13/rnd-check-rollback-val.c index 8958959c48..493bc405cc 100644 --- a/tests/tls13/rnd-check-rollback-val.c +++ b/tests/tls13/rnd-check-rollback-val.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,20 +35,20 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "cert-common.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cert-common.h" +#include "utils.h" /* This program checks whether a TLS 1.3 client will detect * a TLS 1.2 rollback attempt via the server random value. @@ -64,25 +64,21 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# ifdef TLS12 -# define name "TLS1.2" -# define RND tls12_rnd -# define PRIO "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.2" -# elif TLS11 -# define name "TLS1.1" -# define RND tls11_rnd -# define PRIO "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1:+VERS-TLS1.0" -# else -# error unknown version to test -# endif - -gnutls_datum_t tls12_rnd = { (void *)"\x44\x4F\x57\x4E\x47\x52\x44\x01", - 8 -}; - -gnutls_datum_t tls11_rnd = { (void *)"\x44\x4F\x57\x4E\x47\x52\x44\x00", - 8 -}; +#ifdef TLS12 +#define name "TLS1.2" +#define RND tls12_rnd +#define PRIO "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.2" +#elif TLS11 +#define name "TLS1.1" +#define RND tls11_rnd +#define PRIO "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1:+VERS-TLS1.0" +#else +#error unknown version to test +#endif + +gnutls_datum_t tls12_rnd = { (void *)"\x44\x4F\x57\x4E\x47\x52\x44\x01", 8 }; + +gnutls_datum_t tls11_rnd = { (void *)"\x44\x4F\x57\x4E\x47\x52\x44\x00", 8 }; static void client(int fd) { @@ -104,7 +100,7 @@ static void client(int fd) gnutls_certificate_set_x509_key_mem(x509_cred, &cli_ca3_cert, &cli_ca3_key, GNUTLS_X509_FMT_PEM); - retry: +retry: /* Initialize TLS session */ gnutls_init(&session, GNUTLS_CLIENT); @@ -129,8 +125,7 @@ static void client(int fd) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret < 0) { fail("error in handshake: %s\n", gnutls_strerror(ret)); @@ -208,15 +203,15 @@ static void server(int fd) assert(gnutls_session_ticket_key_generate(&skey) >= 0); - retry: +retry: gnutls_init(&session, GNUTLS_SERVER); gnutls_handshake_set_timeout(session, get_timeout()); - assert(gnutls_priority_set_direct - (session, - "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0", - NULL) >= 0); + assert(gnutls_priority_set_direct( + session, + "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0", + NULL) >= 0); gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred); @@ -226,7 +221,7 @@ static void server(int fd) do { ret = gnutls_handshake(session); - if (ret == GNUTLS_E_INTERRUPTED) { /* expected */ + if (ret == GNUTLS_E_INTERRUPTED) { /* expected */ break; } } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); @@ -305,4 +300,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls13/rnd-rollback-detection.c b/tests/tls13/rnd-rollback-detection.c index 06f65a9edc..eaa9d62a4b 100644 --- a/tests/tls13/rnd-rollback-detection.c +++ b/tests/tls13/rnd-rollback-detection.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,20 +35,20 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "cert-common.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cert-common.h" +#include "utils.h" /* This program checks whether a TLS 1.3 client will detect * a TLS 1.2 rollback attempt via the server random value. @@ -87,10 +87,10 @@ static void client(int fd) gnutls_handshake_set_timeout(session, get_timeout()); - ret = - gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0", - NULL); + ret = gnutls_priority_set_direct( + session, + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0", + NULL); if (ret < 0) fail("cannot set TLS 1.2 priorities\n"); @@ -104,8 +104,7 @@ static void client(int fd) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret != GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER) { fail("unexpected error during rollback: %s\n", @@ -121,29 +120,27 @@ static void client(int fd) gnutls_global_deinit(); } -# ifdef TLS12 -# define RND tls12_rnd -# define PRIO "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.2" -# elif TLS11 -# define RND tls11_rnd -# define PRIO "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1:+VERS-TLS1.0" -# else -# error unknown version to test -# endif +#ifdef TLS12 +#define RND tls12_rnd +#define PRIO "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.2" +#elif TLS11 +#define RND tls11_rnd +#define PRIO "NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1:+VERS-TLS1.0" +#else +#error unknown version to test +#endif gnutls_datum_t tls12_rnd = { (void *)"\x00\x00\x00\x04\x00\x00\x00\x04" - "\x00\x00\x00\x04\x00\x00\x00\x04" - "\x00\x00\x00\x04\x00\x00\x00\x04" - "\x44\x4F\x57\x4E\x47\x52\x44\x01", - 32 -}; + "\x00\x00\x00\x04\x00\x00\x00\x04" + "\x00\x00\x00\x04\x00\x00\x00\x04" + "\x44\x4F\x57\x4E\x47\x52\x44\x01", + 32 }; gnutls_datum_t tls11_rnd = { (void *)"\x00\x00\x00\x04\x00\x00\x00\x04" - "\x00\x00\x00\x04\x00\x00\x00\x04" - "\x00\x00\x00\x04\x00\x00\x00\x04" - "\x44\x4F\x57\x4E\x47\x52\x44\x00", - 32 -}; + "\x00\x00\x00\x04\x00\x00\x00\x04" + "\x00\x00\x00\x04\x00\x00\x00\x04" + "\x44\x4F\x57\x4E\x47\x52\x44\x00", + 32 }; static void server(int fd) { @@ -177,7 +174,7 @@ static void server(int fd) do { ret = gnutls_handshake(session); - if (ret == GNUTLS_E_INTERRUPTED) { /* expected */ + if (ret == GNUTLS_E_INTERRUPTED) { /* expected */ break; } } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); @@ -235,4 +232,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls13/supported_versions.c b/tests/tls13/supported_versions.c index fbc270202e..f0f485f695 100644 --- a/tests/tls13/supported_versions.c +++ b/tests/tls13/supported_versions.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,19 +35,19 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "cert-common.h" -# include "utils.h" +#include "cert-common.h" +#include "utils.h" /* This program tests the ProtocolVersion of Client Hello * and whether the supported_versions extension is present and @@ -64,7 +64,7 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void client(int fd) { @@ -87,10 +87,10 @@ static void client(int fd) gnutls_handshake_set_timeout(session, get_timeout()); - ret = - gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.0", - NULL); + ret = gnutls_priority_set_direct( + session, + "NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.0", + NULL); if (ret < 0) fail("cannot set TLS 1.3 priorities\n"); @@ -104,8 +104,7 @@ static void client(int fd) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); close(fd); @@ -119,43 +118,51 @@ static void client(int fd) static unsigned client_hello_ok = 0; static unsigned server_hello_ok = 0; -# define HANDSHAKE_SESSION_ID_POS 34 -# define TLS_EXT_SUPPORTED_VERSIONS 43 - -# define SKIP16(pos, total) { \ - uint16_t _s; \ - if (pos+2 > total) fail("error\n"); \ - _s = (msg->data[pos] << 8) | msg->data[pos+1]; \ - if ((size_t)(pos+2+_s) > total) fail("error\n"); \ - pos += 2+_s; \ +#define HANDSHAKE_SESSION_ID_POS 34 +#define TLS_EXT_SUPPORTED_VERSIONS 43 + +#define SKIP16(pos, total) \ + { \ + uint16_t _s; \ + if (pos + 2 > total) \ + fail("error\n"); \ + _s = (msg->data[pos] << 8) | msg->data[pos + 1]; \ + if ((size_t)(pos + 2 + _s) > total) \ + fail("error\n"); \ + pos += 2 + _s; \ } -# define SKIP8(pos, total) { \ - uint8_t _s; \ - if (pos+1 > total) fail("error\n"); \ - _s = msg->data[pos]; \ - if ((size_t)(pos+1+_s) > total) fail("error\n"); \ - pos += 1+_s; \ +#define SKIP8(pos, total) \ + { \ + uint8_t _s; \ + if (pos + 1 > total) \ + fail("error\n"); \ + _s = msg->data[pos]; \ + if ((size_t)(pos + 1 + _s) > total) \ + fail("error\n"); \ + pos += 1 + _s; \ } static int client_hello_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { ssize_t pos; - if (htype == GNUTLS_HANDSHAKE_SERVER_HELLO && post == GNUTLS_HOOK_POST) { + if (htype == GNUTLS_HANDSHAKE_SERVER_HELLO && + post == GNUTLS_HOOK_POST) { /* check whether TLS 1.3 is negotiated */ pos = 0; if (msg->size < 2) { fail("error in server hello size\n"); } - success("server hello:\n\t%d.%d\n", - (int)msg->data[pos], (int)msg->data[pos + 1]); + success("server hello:\n\t%d.%d\n", (int)msg->data[pos], + (int)msg->data[pos + 1]); if (msg->data[pos] != 0x03 || msg->data[pos + 1] != 0x03) { - fail("fail expected TLS 1.2 in server hello, got %d.%d\n", (int)msg->data[pos], (int)msg->data[pos + 1]); + fail("fail expected TLS 1.2 in server hello, got %d.%d\n", + (int)msg->data[pos], (int)msg->data[pos + 1]); } server_hello_ok = 1; @@ -200,9 +207,9 @@ static int client_hello_callback(gnutls_session_t session, unsigned int htype, if (type != TLS_EXT_SUPPORTED_VERSIONS) { SKIP16(pos, msg->size); - } else { /* found */ - ssize_t size = - (msg->data[pos] << 8) | msg->data[pos + 1]; + } else { /* found */ + ssize_t size = (msg->data[pos] << 8) | + msg->data[pos + 1]; pos += 2; size = msg->data[pos]; @@ -228,24 +235,24 @@ static int client_hello_callback(gnutls_session_t session, unsigned int htype, (int)msg->data[pos + 4], (int)msg->data[pos + 5]); - if (msg->data[pos] != 0x03 - || msg->data[pos + 1] != 0x04) { + if (msg->data[pos] != 0x03 || + msg->data[pos + 1] != 0x04) { fail("fail expected TLS 1.3, got %d.%d\n", (int)msg->data[pos], (int)msg->data[pos + 1]); } pos += 2; - if (msg->data[pos] != 0x03 - || msg->data[pos + 1] != 0x03) { + if (msg->data[pos] != 0x03 || + msg->data[pos + 1] != 0x03) { fail("fail expected TLS 1.2, got %d.%d\n", (int)msg->data[pos], (int)msg->data[pos + 1]); } pos += 2; - if (msg->data[pos] != 0x03 - || msg->data[pos + 1] != 0x01) { + if (msg->data[pos] != 0x03 || + msg->data[pos + 1] != 0x01) { fail("fail expected TLS 1.0, got %d.%d\n", (int)msg->data[pos], (int)msg->data[pos + 1]); @@ -298,7 +305,7 @@ static void server(int fd) do { ret = gnutls_handshake(session); - if (ret == GNUTLS_E_INTERRUPTED) { /* expected */ + if (ret == GNUTLS_E_INTERRUPTED) { /* expected */ break; } } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); @@ -364,4 +371,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tls13/tls12-no-tls13-exts.c b/tests/tls13/tls12-no-tls13-exts.c index 3f0b6be72b..79179e33e3 100644 --- a/tests/tls13/tls12-no-tls13-exts.c +++ b/tests/tls13/tls12-no-tls13-exts.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,20 +35,20 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# include "cert-common.h" -# include "tls13/ext-parse.h" -# include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cert-common.h" +#include "tls13/ext-parse.h" +#include "utils.h" /* This program checks whether any TLS 1.3 extensions are * present when TLS 1.2 is the only protocol supported by @@ -88,10 +88,8 @@ static void client(int fd) gnutls_handshake_set_timeout(session, get_timeout()); - ret = - gnutls_priority_set_direct(session, - "NORMAL:-VERS-ALL:+VERS-TLS1.2:+VERS-TLS1.0", - NULL); + ret = gnutls_priority_set_direct( + session, "NORMAL:-VERS-ALL:+VERS-TLS1.2:+VERS-TLS1.0", NULL); if (ret < 0) fail("cannot set TLS 1.2 priorities\n"); @@ -105,8 +103,7 @@ static void client(int fd) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); close(fd); @@ -121,12 +118,13 @@ static unsigned client_hello_ok = 0; static int client_hello_callback(gnutls_session_t session, unsigned int htype, unsigned post, unsigned int incoming, - const gnutls_datum_t * msg) + const gnutls_datum_t *msg) { if (htype != GNUTLS_HANDSHAKE_CLIENT_HELLO || post != GNUTLS_HOOK_PRE) return 0; - if (find_client_extension(msg, TLS_EXT_SUPPORTED_VERSIONS, NULL, NULL)) { + if (find_client_extension(msg, TLS_EXT_SUPPORTED_VERSIONS, NULL, + NULL)) { fail("Found TLS 1.3 supported versions extension in TLS 1.2!\n"); } @@ -176,7 +174,7 @@ static void server(int fd) do { ret = gnutls_handshake(session); - if (ret == GNUTLS_E_INTERRUPTED) { /* expected */ + if (ret == GNUTLS_E_INTERRUPTED) { /* expected */ break; } } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); @@ -238,4 +236,4 @@ void doit(void) } } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tlsext-decoding.c b/tests/tlsext-decoding.c index d5267e031e..bd0de486fb 100644 --- a/tests/tlsext-decoding.c +++ b/tests/tlsext-decoding.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -39,18 +39,18 @@ int main(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" static void terminate(void); static unsigned reduce = 0; @@ -68,8 +68,8 @@ static void client_log_func(int level, const char *str) fprintf(stderr, "client|<%d>| %s", level, str); } -# define RECORD_PAYLOAD_POS 5 -# define HANDSHAKE_ID_POS (38) +#define RECORD_PAYLOAD_POS 5 +#define HANDSHAKE_ID_POS (38) static ssize_t odd_push(gnutls_transport_ptr_t tr, const void *data, size_t len) { uint8_t *d = (void *)data; @@ -85,19 +85,16 @@ static ssize_t odd_push(gnutls_transport_ptr_t tr, const void *data, size_t len) isize += 1; /* skip ciphersuites */ - csize = - d[RECORD_PAYLOAD_POS + HANDSHAKE_ID_POS + isize + 1] + - (d[RECORD_PAYLOAD_POS + HANDSHAKE_ID_POS + isize] << 8); + csize = d[RECORD_PAYLOAD_POS + HANDSHAKE_ID_POS + isize + 1] + + (d[RECORD_PAYLOAD_POS + HANDSHAKE_ID_POS + isize] << 8); csize += 2; /* skip compression methods */ - osize = - d[RECORD_PAYLOAD_POS + HANDSHAKE_ID_POS + isize + csize]; + osize = d[RECORD_PAYLOAD_POS + HANDSHAKE_ID_POS + isize + csize]; osize += 1; - pos = - RECORD_PAYLOAD_POS + HANDSHAKE_ID_POS + isize + csize + - osize; + pos = RECORD_PAYLOAD_POS + HANDSHAKE_ID_POS + isize + csize + + osize; if (reduce) { if (d[pos + 1] != 0x00) { @@ -113,7 +110,6 @@ static ssize_t odd_push(gnutls_transport_ptr_t tr, const void *data, size_t len) d[pos] = d[pos] + 1; d[pos + 1] = 0x00; } - } } @@ -154,8 +150,7 @@ static void client(int fd, const char *prio) */ do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret >= 0) { fail("client: Handshake succeeded!\n"); @@ -200,9 +195,8 @@ static void server(int fd, const char *prio) gnutls_certificate_allocate_credentials(&xcred); - ret = gnutls_certificate_set_x509_key_mem(xcred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_key_mem( + xcred, &server_cert, &server_key, GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -220,13 +214,13 @@ static void server(int fd, const char *prio) do { ret = gnutls_handshake(session); - } - while (ret < 0 && gnutls_error_is_fatal(ret) == 0); + } while (ret < 0 && gnutls_error_is_fatal(ret) == 0); if (ret != GNUTLS_E_UNEXPECTED_EXTENSIONS_LENGTH) { close(fd); gnutls_deinit(session); - fail("server: Handshake did not fail with GNUTLS_E_UNEXPECTED_EXTENSIONS_LENGTH (%s)\n\n", gnutls_strerror(ret)); + fail("server: Handshake did not fail with GNUTLS_E_UNEXPECTED_EXTENSIONS_LENGTH (%s)\n\n", + gnutls_strerror(ret)); terminate(); } @@ -292,4 +286,4 @@ void doit(void) start("NORMAL:-VERS-ALL:+VERS-TLS1.3"); start("NORMAL"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/tlsfeature-crt.c b/tests/tlsfeature-crt.c index fbc1f0069a..35b229cbdd 100644 --- a/tests/tlsfeature-crt.c +++ b/tests/tlsfeature-crt.c @@ -18,7 +18,7 @@ */ #ifdef HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include @@ -30,23 +30,21 @@ #include "utils.h" static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICBzCCAXCgAwIBAgIMVpjt8TL5Io/frpvkMA0GCSqGSIb3DQEBCwUAMCIxIDAe\n" - "BgNVBAMTF0dudVRMUyB0ZXN0IGNlcnRpZmljYXRlMB4XDTE2MDExNTEzMDI0MVoX\n" - "DTMyMDYxOTEzMDI0MVowIjEgMB4GA1UEAxMXR251VExTIHRlc3QgY2VydGlmaWNh\n" - "dGUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANe6XK+jDPAuqSdWqlOOqOt/\n" - "gXVMa5i+Suq3HvhLw2rE2g0AuOpMEx82FpPecu/GpF6ybrbKCohVdZCW7aZXvAw7\n" - "dg2XHr3p7H/Tqez7hWSga6BIznd+c5wxE/89yK6lYG7Ztoxamm+2vp9qvafwoDMn\n" - "9bcdkuWWnHNS1p/WyI6xAgMBAAGjQjBAMBEGCCsGAQUFBwEYBAUwAwIBBTAMBgNV\n" - "HRMBAf8EAjAAMB0GA1UdDgQWBBRTSzvcXshETAIgvzlIb0z+zSVSEDANBgkqhkiG\n" - "9w0BAQsFAAOBgQB+VcJuLPL2PMog0HZ8RRbqVvLU5d209ROg3s1oXUBFW8+AV+71\n" - "CsHg9Xx7vqKVwyKGI9ghds1B44lNPxGH2Sk1v2czjKbzwujo9+kLnDS6i0jyrDdn\n" - "um4ivpkwmlUFSQVXvENLwe9gTlIgN4+0I9WLcMTCDtHWkcxMRwCm2BMsXw==\n" - "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICBzCCAXCgAwIBAgIMVpjt8TL5Io/frpvkMA0GCSqGSIb3DQEBCwUAMCIxIDAe\n" + "BgNVBAMTF0dudVRMUyB0ZXN0IGNlcnRpZmljYXRlMB4XDTE2MDExNTEzMDI0MVoX\n" + "DTMyMDYxOTEzMDI0MVowIjEgMB4GA1UEAxMXR251VExTIHRlc3QgY2VydGlmaWNh\n" + "dGUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANe6XK+jDPAuqSdWqlOOqOt/\n" + "gXVMa5i+Suq3HvhLw2rE2g0AuOpMEx82FpPecu/GpF6ybrbKCohVdZCW7aZXvAw7\n" + "dg2XHr3p7H/Tqez7hWSga6BIznd+c5wxE/89yK6lYG7Ztoxamm+2vp9qvafwoDMn\n" + "9bcdkuWWnHNS1p/WyI6xAgMBAAGjQjBAMBEGCCsGAQUFBwEYBAUwAwIBBTAMBgNV\n" + "HRMBAf8EAjAAMB0GA1UdDgQWBBRTSzvcXshETAIgvzlIb0z+zSVSEDANBgkqhkiG\n" + "9w0BAQsFAAOBgQB+VcJuLPL2PMog0HZ8RRbqVvLU5d209ROg3s1oXUBFW8+AV+71\n" + "CsHg9Xx7vqKVwyKGI9ghds1B44lNPxGH2Sk1v2czjKbzwujo9+kLnDS6i0jyrDdn\n" + "um4ivpkwmlUFSQVXvENLwe9gTlIgN4+0I9WLcMTCDtHWkcxMRwCm2BMsXw==\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; void doit(void) { diff --git a/tests/tlsfeature-ext.c b/tests/tlsfeature-ext.c index 71c0fd022d..31a402dff1 100644 --- a/tests/tlsfeature-ext.c +++ b/tests/tlsfeature-ext.c @@ -18,7 +18,7 @@ */ #ifdef HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include @@ -30,31 +30,31 @@ #include "utils.h" unsigned char der_feat_long[] = - "\x30\x82\x01\x80\x02\x01\x00\x02\x01\x01\x02\x01\x02\x02\x01\x03" - "\x02\x01\x04\x02\x01\x05\x02\x01\x06\x02\x01\x07\x02\x01\x08\x02" - "\x01\x09\x02\x01\x0A\x02\x01\x0B\x02\x01\x0C\x02\x01\x0D\x02\x01" - "\x0E\x02\x01\x0F\x02\x01\x10\x02\x01\x11\x02\x01\x12\x02\x01\x13" - "\x02\x01\x14\x02\x01\x15\x02\x01\x16\x02\x01\x17\x02\x01\x18\x02" - "\x01\x19\x02\x01\x1A\x02\x01\x1B\x02\x01\x1C\x02\x01\x1D\x02\x01" - "\x1E\x02\x01\x1F\x02\x01\x20\x02\x01\x21\x02\x01\x22\x02\x01\x23" - "\x02\x01\x24\x02\x01\x25\x02\x01\x26\x02\x01\x27\x02\x01\x28\x02" - "\x01\x29\x02\x01\x2A\x02\x01\x2B\x02\x01\x2C\x02\x01\x2D\x02\x01" - "\x2E\x02\x01\x2F\x02\x01\x30\x02\x01\x31\x02\x01\x32\x02\x01\x33" - "\x02\x01\x34\x02\x01\x35\x02\x01\x36\x02\x01\x37\x02\x01\x38\x02" - "\x01\x39\x02\x01\x3A\x02\x01\x3B\x02\x01\x3C\x02\x01\x3D\x02\x01" - "\x3E\x02\x01\x3F\x02\x01\x40\x02\x01\x41\x02\x01\x42\x02\x01\x43" - "\x02\x01\x44\x02\x01\x45\x02\x01\x46\x02\x01\x47\x02\x01\x48\x02" - "\x01\x49\x02\x01\x4A\x02\x01\x4B\x02\x01\x4C\x02\x01\x4D\x02\x01" - "\x4E\x02\x01\x4F\x02\x01\x50\x02\x01\x51\x02\x01\x52\x02\x01\x53" - "\x02\x01\x54\x02\x01\x55\x02\x01\x56\x02\x01\x57\x02\x01\x58\x02" - "\x01\x59\x02\x01\x5A\x02\x01\x5B\x02\x01\x5C\x02\x01\x5D\x02\x01" - "\x5E\x02\x01\x5F\x02\x01\x60\x02\x01\x61\x02\x01\x62\x02\x01\x63" - "\x02\x01\x64\x02\x01\x65\x02\x01\x66\x02\x01\x67\x02\x01\x68\x02" - "\x01\x69\x02\x01\x6A\x02\x01\x6B\x02\x01\x6C\x02\x01\x6D\x02\x01" - "\x6E\x02\x01\x6F\x02\x01\x70\x02\x01\x71\x02\x01\x72\x02\x01\x73" - "\x02\x01\x74\x02\x01\x75\x02\x01\x76\x02\x01\x77\x02\x01\x78\x02" - "\x01\x79\x02\x01\x7A\x02\x01\x7B\x02\x01\x7C\x02\x01\x7D\x02\x01" - "\x7E\x02\x01\x7F"; + "\x30\x82\x01\x80\x02\x01\x00\x02\x01\x01\x02\x01\x02\x02\x01\x03" + "\x02\x01\x04\x02\x01\x05\x02\x01\x06\x02\x01\x07\x02\x01\x08\x02" + "\x01\x09\x02\x01\x0A\x02\x01\x0B\x02\x01\x0C\x02\x01\x0D\x02\x01" + "\x0E\x02\x01\x0F\x02\x01\x10\x02\x01\x11\x02\x01\x12\x02\x01\x13" + "\x02\x01\x14\x02\x01\x15\x02\x01\x16\x02\x01\x17\x02\x01\x18\x02" + "\x01\x19\x02\x01\x1A\x02\x01\x1B\x02\x01\x1C\x02\x01\x1D\x02\x01" + "\x1E\x02\x01\x1F\x02\x01\x20\x02\x01\x21\x02\x01\x22\x02\x01\x23" + "\x02\x01\x24\x02\x01\x25\x02\x01\x26\x02\x01\x27\x02\x01\x28\x02" + "\x01\x29\x02\x01\x2A\x02\x01\x2B\x02\x01\x2C\x02\x01\x2D\x02\x01" + "\x2E\x02\x01\x2F\x02\x01\x30\x02\x01\x31\x02\x01\x32\x02\x01\x33" + "\x02\x01\x34\x02\x01\x35\x02\x01\x36\x02\x01\x37\x02\x01\x38\x02" + "\x01\x39\x02\x01\x3A\x02\x01\x3B\x02\x01\x3C\x02\x01\x3D\x02\x01" + "\x3E\x02\x01\x3F\x02\x01\x40\x02\x01\x41\x02\x01\x42\x02\x01\x43" + "\x02\x01\x44\x02\x01\x45\x02\x01\x46\x02\x01\x47\x02\x01\x48\x02" + "\x01\x49\x02\x01\x4A\x02\x01\x4B\x02\x01\x4C\x02\x01\x4D\x02\x01" + "\x4E\x02\x01\x4F\x02\x01\x50\x02\x01\x51\x02\x01\x52\x02\x01\x53" + "\x02\x01\x54\x02\x01\x55\x02\x01\x56\x02\x01\x57\x02\x01\x58\x02" + "\x01\x59\x02\x01\x5A\x02\x01\x5B\x02\x01\x5C\x02\x01\x5D\x02\x01" + "\x5E\x02\x01\x5F\x02\x01\x60\x02\x01\x61\x02\x01\x62\x02\x01\x63" + "\x02\x01\x64\x02\x01\x65\x02\x01\x66\x02\x01\x67\x02\x01\x68\x02" + "\x01\x69\x02\x01\x6A\x02\x01\x6B\x02\x01\x6C\x02\x01\x6D\x02\x01" + "\x6E\x02\x01\x6F\x02\x01\x70\x02\x01\x71\x02\x01\x72\x02\x01\x73" + "\x02\x01\x74\x02\x01\x75\x02\x01\x76\x02\x01\x77\x02\x01\x78\x02" + "\x01\x79\x02\x01\x7A\x02\x01\x7B\x02\x01\x7C\x02\x01\x7D\x02\x01" + "\x7E\x02\x01\x7F"; static gnutls_datum_t der_long = { der_feat_long, sizeof(der_feat_long) - 1 }; diff --git a/tests/trust-store.c b/tests/trust-store.c index 6490bed273..4f81abcd80 100644 --- a/tests/trust-store.c +++ b/tests/trust-store.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include diff --git a/tests/trustdb-tofu.c b/tests/trustdb-tofu.c index f26d388805..b88b849063 100644 --- a/tests/trustdb-tofu.c +++ b/tests/trustdb-tofu.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -41,46 +41,48 @@ static void tls_log_func(int level, const char *str) } static unsigned char tofu_server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" - "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" - "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" - "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" - "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" - "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" - "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" - "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" - "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" - "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" - "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" - "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" + "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" + "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" + "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" + "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" + "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" + "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" + "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" + "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" + "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" + "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" + "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t tofu_server_cert = { tofu_server_cert_pem, - sizeof(tofu_server_cert_pem) -}; + sizeof(tofu_server_cert_pem) }; static char client_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICHjCCAYmgAwIBAgIERiYdNzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTI3WhcNMDgwNDE3MTMyOTI3WjAdMRsw\n" - "GQYDVQQDExJHbnVUTFMgdGVzdCBjbGllbnQwgZwwCwYJKoZIhvcNAQEBA4GMADCB\n" - "iAKBgLtmQ/Xyxde2jMzF3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeL\n" - "ZIkiW8DdU3w77XwEu4C5KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKN\n" - "zj2AC41179gAgY8oBAOgIo1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjdjB0MAwG\n" - "A1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUDAweg\n" - "ADAdBgNVHQ4EFgQUTLkKm/odNON+3svSBxX+odrLaJEwHwYDVR0jBBgwFoAU6Twc\n" - "+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBALujmBJVZnvaTXr9cFRJ\n" - "jpfc/3X7sLUsMvumcDE01ls/cG5mIatmiyEU9qI3jbgUf82z23ON/acwJf875D3/\n" - "U7jyOsBJ44SEQITbin2yUeJMIm1tievvdNXBDfW95AM507ShzP12sfiJkJfjjdhy\n" - "dc8Siq5JojruiMizAf0pA7in\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIICHjCCAYmgAwIBAgIERiYdNzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTI3WhcNMDgwNDE3MTMyOTI3WjAdMRsw\n" + "GQYDVQQDExJHbnVUTFMgdGVzdCBjbGllbnQwgZwwCwYJKoZIhvcNAQEBA4GMADCB\n" + "iAKBgLtmQ/Xyxde2jMzF3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeL\n" + "ZIkiW8DdU3w77XwEu4C5KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKN\n" + "zj2AC41179gAgY8oBAOgIo1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjdjB0MAwG\n" + "A1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUDAweg\n" + "ADAdBgNVHQ4EFgQUTLkKm/odNON+3svSBxX+odrLaJEwHwYDVR0jBBgwFoAU6Twc\n" + "+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBALujmBJVZnvaTXr9cFRJ\n" + "jpfc/3X7sLUsMvumcDE01ls/cG5mIatmiyEU9qI3jbgUf82z23ON/acwJf875D3/\n" + "U7jyOsBJ44SEQITbin2yUeJMIm1tievvdNXBDfW95AM507ShzP12sfiJkJfjjdhy\n" + "dc8Siq5JojruiMizAf0pA7in\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t client_cert = { (void *)client_pem, sizeof(client_pem) }; #define TMP_FILE "mini-tdb.tmp" #define HOSTS_DIR ".gnutls/" -#define HOSTS_FILE HOSTS_DIR"known_hosts" +#define HOSTS_FILE HOSTS_DIR "known_hosts" -#define SHA1_HASH "\x53\x4b\x3b\xdc\x5e\xc8\x44\x4c\x02\x20\xbf\x39\x48\x6f\x4c\xfe\xcd\x25\x52\x10" +#define SHA1_HASH \ + "\x53\x4b\x3b\xdc\x5e\xc8\x44\x4c\x02\x20\xbf\x39\x48\x6f\x4c\xfe\xcd\x25\x52\x10" void doit(void) { @@ -101,33 +103,29 @@ void doit(void) gnutls_global_set_log_level(2); // X.509 certificates - ret = - gnutls_pem_base64_decode_alloc("CERTIFICATE", &tofu_server_cert, - &der_cert); + ret = gnutls_pem_base64_decode_alloc("CERTIFICATE", &tofu_server_cert, + &der_cert); if (ret < 0) { fail("base64 decoding\n"); goto fail; } - ret = - gnutls_pem_base64_decode_alloc("CERTIFICATE", &client_cert, - &der_cert2); + ret = gnutls_pem_base64_decode_alloc("CERTIFICATE", &client_cert, + &der_cert2); if (ret < 0) { fail("base64 decoding\n"); goto fail; } // Raw public keys - ret = - gnutls_pem_base64_decode_alloc("PUBLIC KEY", &rawpk_public_key1, - &der_rawpk); + ret = gnutls_pem_base64_decode_alloc("PUBLIC KEY", &rawpk_public_key1, + &der_rawpk); if (ret < 0) { fail("base64 decoding\n"); goto fail; } - ret = - gnutls_pem_base64_decode_alloc("PUBLIC KEY", &rawpk_public_key2, - &der_rawpk2); + ret = gnutls_pem_base64_decode_alloc("PUBLIC KEY", &rawpk_public_key2, + &der_rawpk2); if (ret < 0) { fail("base64 decoding\n"); goto fail; @@ -148,9 +146,8 @@ void doit(void) if (debug) success("Commitment storage: passed\n"); - ret = - gnutls_verify_stored_pubkey(TMP_FILE, NULL, "localhost", - "https", GNUTLS_CRT_X509, &der_cert, 0); + ret = gnutls_verify_stored_pubkey(TMP_FILE, NULL, "localhost", "https", + GNUTLS_CRT_X509, &der_cert, 0); remove(TMP_FILE); if (ret != 0) { @@ -161,7 +158,7 @@ void doit(void) if (debug) success("Commitment verification: passed\n"); - /* Verify access to home dir */ + /* Verify access to home dir */ #ifndef _WIN32 setenv("HOME", getcwd(path, sizeof(path)), 1); @@ -177,9 +174,8 @@ void doit(void) if (debug) success("Commitment storage: passed\n"); - ret = - gnutls_verify_stored_pubkey(NULL, NULL, "localhost", - "https", GNUTLS_CRT_X509, &der_cert, 0); + ret = gnutls_verify_stored_pubkey(NULL, NULL, "localhost", "https", + GNUTLS_CRT_X509, &der_cert, 0); if (ret != 0) { fail("commitment verification: %s\n", gnutls_strerror(ret)); @@ -202,19 +198,16 @@ void doit(void) if (debug) success("Public key storage (from cert): passed\n"); - ret = - gnutls_verify_stored_pubkey(TMP_FILE, NULL, "localhost", - "https", GNUTLS_CRT_X509, &der_cert, 0); + ret = gnutls_verify_stored_pubkey(TMP_FILE, NULL, "localhost", "https", + GNUTLS_CRT_X509, &der_cert, 0); if (ret != 0) { fail("pubkey verification (from cert): %s\n", gnutls_strerror(ret)); goto fail; } - ret = - gnutls_verify_stored_pubkey(TMP_FILE, NULL, "localhost", - "https", GNUTLS_CRT_X509, - &der_cert2, 0); + ret = gnutls_verify_stored_pubkey(TMP_FILE, NULL, "localhost", "https", + GNUTLS_CRT_X509, &der_cert2, 0); if (ret == 0) { fail("verification succeeded when shouldn't!\n"); goto fail; @@ -238,20 +231,16 @@ void doit(void) if (debug) success("Public key storage (from raw pk): passed\n"); - ret = - gnutls_verify_stored_pubkey(TMP_FILE, NULL, "localhost", - "https", GNUTLS_CRT_RAWPK, - &der_rawpk, 0); + ret = gnutls_verify_stored_pubkey(TMP_FILE, NULL, "localhost", "https", + GNUTLS_CRT_RAWPK, &der_rawpk, 0); if (ret != 0) { fail("pubkey verification (from raw pk): %s\n", gnutls_strerror(ret)); goto fail; } - ret = - gnutls_verify_stored_pubkey(TMP_FILE, NULL, "localhost", - "https", GNUTLS_CRT_RAWPK, - &der_rawpk2, 0); + ret = gnutls_verify_stored_pubkey(TMP_FILE, NULL, "localhost", "https", + GNUTLS_CRT_RAWPK, &der_rawpk2, 0); if (ret == 0) { fail("verification succeeded when shouldn't!\n"); goto fail; @@ -275,7 +264,7 @@ void doit(void) gnutls_free(der_rawpk2.data); return; - fail: +fail: remove(HOSTS_FILE); remove(TMP_FILE); rmdir(HOSTS_DIR); diff --git a/tests/urls.c b/tests/urls.c index 821f08f868..a2a5cfd450 100644 --- a/tests/urls.c +++ b/tests/urls.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include diff --git a/tests/utils-adv.c b/tests/utils-adv.c index 4f915a919a..d439cbb2e4 100644 --- a/tests/utils-adv.c +++ b/tests/utils-adv.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -41,14 +41,13 @@ int _gnutls_server_name_set_raw(gnutls_session_t session, const char *side = NULL; /* if @host is NULL certificate check is skipped */ -int -_test_cli_serv(gnutls_certificate_credentials_t server_cred, - gnutls_certificate_credentials_t client_cred, - const char *serv_prio, const char *cli_prio, - const char *host, - void *priv, callback_func * client_cb, callback_func * server_cb, - unsigned expect_verification_failure, - unsigned require_cert, int serv_err, int cli_err) +int _test_cli_serv(gnutls_certificate_credentials_t server_cred, + gnutls_certificate_credentials_t client_cred, + const char *serv_prio, const char *cli_prio, + const char *host, void *priv, callback_func *client_cb, + callback_func *server_cb, + unsigned expect_verification_failure, unsigned require_cert, + int serv_err, int cli_err) { int ret; /* Server stuff. */ @@ -82,14 +81,13 @@ _test_cli_serv(gnutls_certificate_credentials_t server_cred, if (host) { if (strncmp(host, "raw:", 4) == 0) { - assert(_gnutls_server_name_set_raw - (client, GNUTLS_NAME_DNS, host + 4, - strlen(host + 4)) >= 0); + assert(_gnutls_server_name_set_raw( + client, GNUTLS_NAME_DNS, host + 4, + strlen(host + 4)) >= 0); host += 4; } else { - assert(gnutls_server_name_set - (client, GNUTLS_NAME_DNS, host, - strlen(host)) >= 0); + assert(gnutls_server_name_set(client, GNUTLS_NAME_DNS, + host, strlen(host)) >= 0); } } @@ -142,9 +140,10 @@ _test_cli_serv(gnutls_certificate_credentials_t server_cred, if (status != 0) { gnutls_datum_t t; - assert(gnutls_certificate_verification_status_print - (status, GNUTLS_CRT_X509, &t, 0) >= 0); - fail("could not verify certificate for '%s': %.4x: %s\n", host, status, t.data); + assert(gnutls_certificate_verification_status_print( + status, GNUTLS_CRT_X509, &t, 0) >= 0); + fail("could not verify certificate for '%s': %.4x: %s\n", + host, status, t.data); gnutls_free(t.data); exit(1); } @@ -159,8 +158,8 @@ _test_cli_serv(gnutls_certificate_credentials_t server_cred, if (status != 0) { gnutls_datum_t t; - assert(gnutls_certificate_verification_status_print - (status, GNUTLS_CRT_X509, &t, 0) >= 0); + assert(gnutls_certificate_verification_status_print( + status, GNUTLS_CRT_X509, &t, 0) >= 0); fail("could not verify certificate3: %.4x: %s\n", status, t.data); gnutls_free(t.data); @@ -174,7 +173,7 @@ _test_cli_serv(gnutls_certificate_credentials_t server_cred, gnutls_bye(server, GNUTLS_SHUT_RDWR); ret = 0; - cleanup: +cleanup: if (client_cb) client_cb(client, priv); if (server_cb) @@ -187,20 +186,18 @@ _test_cli_serv(gnutls_certificate_credentials_t server_cred, } /* An expected to succeed run */ -void -test_cli_serv(gnutls_certificate_credentials_t server_cred, - gnutls_certificate_credentials_t client_cred, - const char *prio, const char *host, - void *priv, callback_func * client_cb, callback_func * server_cb) +void test_cli_serv(gnutls_certificate_credentials_t server_cred, + gnutls_certificate_credentials_t client_cred, + const char *prio, const char *host, void *priv, + callback_func *client_cb, callback_func *server_cb) { _test_cli_serv(server_cred, client_cred, prio, prio, host, priv, client_cb, server_cb, 0, 0, 0, 0); } -int -test_cli_serv_anon(gnutls_anon_server_credentials_t server_cred, - gnutls_anon_client_credentials_t client_cred, - const char *prio) +int test_cli_serv_anon(gnutls_anon_server_credentials_t server_cred, + gnutls_anon_client_credentials_t client_cred, + const char *prio) { int ret; /* Server stuff. */ @@ -247,9 +244,9 @@ test_cli_serv_anon(gnutls_anon_server_credentials_t server_cred, return ret; } -int -test_cli_serv_psk(gnutls_psk_server_credentials_t server_cred, - gnutls_psk_client_credentials_t client_cred, const char *prio) +int test_cli_serv_psk(gnutls_psk_server_credentials_t server_cred, + gnutls_psk_client_credentials_t client_cred, + const char *prio) { int ret; /* Server stuff. */ @@ -296,31 +293,28 @@ test_cli_serv_psk(gnutls_psk_server_credentials_t server_cred, return ret; } -void -test_cli_serv_cert(gnutls_certificate_credentials_t server_cred, - gnutls_certificate_credentials_t client_cred, - const char *serv_prio, const char *cli_prio, - const char *host) +void test_cli_serv_cert(gnutls_certificate_credentials_t server_cred, + gnutls_certificate_credentials_t client_cred, + const char *serv_prio, const char *cli_prio, + const char *host) { _test_cli_serv(server_cred, client_cred, serv_prio, cli_prio, host, NULL, NULL, NULL, 0, 1, 0, 0); } -void -test_cli_serv_expect(gnutls_certificate_credentials_t server_cred, - gnutls_certificate_credentials_t client_cred, - const char *serv_prio, const char *cli_prio, - const char *host, int serv_err, int cli_err) +void test_cli_serv_expect(gnutls_certificate_credentials_t server_cred, + gnutls_certificate_credentials_t client_cred, + const char *serv_prio, const char *cli_prio, + const char *host, int serv_err, int cli_err) { _test_cli_serv(server_cred, client_cred, serv_prio, cli_prio, host, NULL, NULL, NULL, 0, 0, serv_err, cli_err); } /* An expected to fail verification run. Returns verification status */ -unsigned -test_cli_serv_vf(gnutls_certificate_credentials_t server_cred, - gnutls_certificate_credentials_t client_cred, - const char *prio, const char *host) +unsigned test_cli_serv_vf(gnutls_certificate_credentials_t server_cred, + gnutls_certificate_credentials_t client_cred, + const char *prio, const char *host) { return _test_cli_serv(server_cred, client_cred, prio, prio, host, NULL, NULL, NULL, 1, 0, 0, 0); diff --git a/tests/utils.c b/tests/utils.c index 66fc7f7897..00bada578e 100644 --- a/tests/utils.c +++ b/tests/utils.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -31,12 +31,12 @@ #include #include #ifndef _WIN32 -# include -# include -# include +#include +#include +#include #else -# include /* for Sleep */ -# include +#include /* for Sleep */ +#include #endif #include @@ -52,38 +52,39 @@ int break_on_error = 0; /* doc/credentials/dhparams/rfc3526-group-14-2048.pem */ const char *pkcs3 = - "-----BEGIN DH PARAMETERS-----\n" - "MIIBCAKCAQEA///////////JD9qiIWjCNMTGYouA3BzRKQJOCIpnzHQCC76mOxOb\n" - "IlFKCHmONATd75UZs806QxswKwpt8l8UN0/hNW1tUcJF5IW1dmJefsb0TELppjft\n" - "awv/XLb0Brft7jhr+1qJn6WunyQRfEsf5kkoZlHs5Fs9wgB8uKFjvwWY2kg2HFXT\n" - "mmkWP6j9JM9fg2VdI9yjrZYcYvNWIIVSu57VKQdwlpZtZww1Tkq8mATxdGwIyhgh\n" - "fDKQXkYuNs474553LBgOhgObJ4Oi7Aeij7XFXfBvTFLJ3ivL9pVYFxg5lUl86pVq\n" - "5RXSJhiY+gUQFXKOWoqsqmj//////////wIBAg==\n" - "-----END DH PARAMETERS-----\n"; + "-----BEGIN DH PARAMETERS-----\n" + "MIIBCAKCAQEA///////////JD9qiIWjCNMTGYouA3BzRKQJOCIpnzHQCC76mOxOb\n" + "IlFKCHmONATd75UZs806QxswKwpt8l8UN0/hNW1tUcJF5IW1dmJefsb0TELppjft\n" + "awv/XLb0Brft7jhr+1qJn6WunyQRfEsf5kkoZlHs5Fs9wgB8uKFjvwWY2kg2HFXT\n" + "mmkWP6j9JM9fg2VdI9yjrZYcYvNWIIVSu57VKQdwlpZtZww1Tkq8mATxdGwIyhgh\n" + "fDKQXkYuNs474553LBgOhgObJ4Oi7Aeij7XFXfBvTFLJ3ivL9pVYFxg5lUl86pVq\n" + "5RXSJhiY+gUQFXKOWoqsqmj//////////wIBAg==\n" + "-----END DH PARAMETERS-----\n"; /* doc/credentials/dhparams/rfc7919-ffdhe2048.pem */ const char *pkcs3_2048 = - "-----BEGIN DH PARAMETERS-----\n" - "MIIBCAKCAQEA//////////+t+FRYortKmq/cViAnPTzx2LnFg84tNpWp4TZBFGQz\n" - "+8yTnc4kmz75fS/jY2MMddj2gbICrsRhetPfHtXV/WVhJDP1H18GbtCFY2VVPe0a\n" - "87VXE15/V8k1mE8McODmi3fipona8+/och3xWKE2rec1MKzKT0g6eXq8CrGCsyT7\n" - "YdEIqUuyyOP7uWrat2DX9GgdT0Kj3jlN9K5W7edjcrsZCwenyO4KbXCeAvzhzffi\n" - "7MA0BM0oNC9hkXL+nOmFg/+OTxIy7vKBg8P+OxtMb61zO7X8vC7CIAXFjvGDfRaD\n" - "ssbzSibBsu/6iGtCOGEoXJf//////////wIBAg==\n" - "-----END DH PARAMETERS-----\n"; + "-----BEGIN DH PARAMETERS-----\n" + "MIIBCAKCAQEA//////////+t+FRYortKmq/cViAnPTzx2LnFg84tNpWp4TZBFGQz\n" + "+8yTnc4kmz75fS/jY2MMddj2gbICrsRhetPfHtXV/WVhJDP1H18GbtCFY2VVPe0a\n" + "87VXE15/V8k1mE8McODmi3fipona8+/och3xWKE2rec1MKzKT0g6eXq8CrGCsyT7\n" + "YdEIqUuyyOP7uWrat2DX9GgdT0Kj3jlN9K5W7edjcrsZCwenyO4KbXCeAvzhzffi\n" + "7MA0BM0oNC9hkXL+nOmFg/+OTxIy7vKBg8P+OxtMb61zO7X8vC7CIAXFjvGDfRaD\n" + "ssbzSibBsu/6iGtCOGEoXJf//////////wIBAg==\n" + "-----END DH PARAMETERS-----\n"; /* doc/credentials/dhparams/rfc7919-ffdhe3072.pem */ const char *pkcs3_3072 = - "-----BEGIN DH PARAMETERS-----\n" - "MIIBiAKCAYEA//////////+t+FRYortKmq/cViAnPTzx2LnFg84tNpWp4TZBFGQz\n" - "+8yTnc4kmz75fS/jY2MMddj2gbICrsRhetPfHtXV/WVhJDP1H18GbtCFY2VVPe0a\n" - "87VXE15/V8k1mE8McODmi3fipona8+/och3xWKE2rec1MKzKT0g6eXq8CrGCsyT7\n" - "YdEIqUuyyOP7uWrat2DX9GgdT0Kj3jlN9K5W7edjcrsZCwenyO4KbXCeAvzhzffi\n" - "7MA0BM0oNC9hkXL+nOmFg/+OTxIy7vKBg8P+OxtMb61zO7X8vC7CIAXFjvGDfRaD\n" - "ssbzSibBsu/6iGtCOGEfz9zeNVs7ZRkDW7w09N75nAI4YbRvydbmyQd62R0mkff3\n" - "7lmMsPrBhtkcrv4TCYUTknC0EwyTvEN5RPT9RFLi103TZPLiHnH1S/9croKrnJ32\n" - "nuhtK8UiNjoNq8Uhl5sN6todv5pC1cRITgq80Gv6U93vPBsg7j/VnXwl5B0rZsYu\n" - "N///////////AgEC\n" "-----END DH PARAMETERS-----\n"; + "-----BEGIN DH PARAMETERS-----\n" + "MIIBiAKCAYEA//////////+t+FRYortKmq/cViAnPTzx2LnFg84tNpWp4TZBFGQz\n" + "+8yTnc4kmz75fS/jY2MMddj2gbICrsRhetPfHtXV/WVhJDP1H18GbtCFY2VVPe0a\n" + "87VXE15/V8k1mE8McODmi3fipona8+/och3xWKE2rec1MKzKT0g6eXq8CrGCsyT7\n" + "YdEIqUuyyOP7uWrat2DX9GgdT0Kj3jlN9K5W7edjcrsZCwenyO4KbXCeAvzhzffi\n" + "7MA0BM0oNC9hkXL+nOmFg/+OTxIy7vKBg8P+OxtMb61zO7X8vC7CIAXFjvGDfRaD\n" + "ssbzSibBsu/6iGtCOGEfz9zeNVs7ZRkDW7w09N75nAI4YbRvydbmyQd62R0mkff3\n" + "7lmMsPrBhtkcrv4TCYUTknC0EwyTvEN5RPT9RFLi103TZPLiHnH1S/9croKrnJ32\n" + "nuhtK8UiNjoNq8Uhl5sN6todv5pC1cRITgq80Gv6U93vPBsg7j/VnXwl5B0rZsYu\n" + "N///////////AgEC\n" + "-----END DH PARAMETERS-----\n"; void _fail(const char *format, ...) { @@ -161,8 +162,8 @@ void escapeprint(const char *str, size_t len) for (i = 0; i < len; i++) { if (((str[i] & 0xFF) >= 'A' && (str[i] & 0xFF) <= 'Z') || ((str[i] & 0xFF) >= 'a' && (str[i] & 0xFF) <= 'z') || - ((str[i] & 0xFF) >= '0' && (str[i] & 0xFF) <= '9') - || (str[i] & 0xFF) == ' ' || (str[i] & 0xFF) == '.') + ((str[i] & 0xFF) >= '0' && (str[i] & 0xFF) <= '9') || + (str[i] & 0xFF) == ' ' || (str[i] & 0xFF) == '.') printf("%c", (str[i] & 0xFF)); else printf("\\x%02X", (str[i] & 0xFF)); @@ -208,8 +209,7 @@ void binprint(const void *_str, size_t len) printf("\t;; "); for (i = 0; i < len; i++) { - printf("%d%d%d%d%d%d%d%d ", - (str[i] & 0xFF) & 0x80 ? 1 : 0, + printf("%d%d%d%d%d%d%d%d ", (str[i] & 0xFF) & 0x80 ? 1 : 0, (str[i] & 0xFF) & 0x40 ? 1 : 0, (str[i] & 0xFF) & 0x20 ? 1 : 0, (str[i] & 0xFF) & 0x10 ? 1 : 0, @@ -237,12 +237,11 @@ int main(int argc, char *argv[]) else if (strcmp(argv[argc - 1], "-h") == 0 || strcmp(argv[argc - 1], "-?") == 0 || strcmp(argv[argc - 1], "--help") == 0) { - printf - ("Usage: %s [-vbh?] [--verbose] [--break-on-error] [--help]\n", - argv[0]); + printf("Usage: %s [-vbh?] [--verbose] [--break-on-error] [--help]\n", + argv[0]); return 1; } - while (argc-- > 1) ; + while (argc-- > 1); doit(); diff --git a/tests/utils.h b/tests/utils.h index 0c228060e9..92c473fa7f 100644 --- a/tests/utils.h +++ b/tests/utils.h @@ -21,45 +21,45 @@ */ #ifndef GNUTLS_TESTS_UTILS_H -# define GNUTLS_TESTS_UTILS_H - -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# ifndef __attribute__ -# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) -# define __attribute__(Spec) /* empty */ -# endif -# endif - -# ifdef NDEBUG -# error tests cannot be compiled with NDEBUG defined -# endif - -# ifndef FALLTHROUGH -# if _GNUTLS_GCC_VERSION >= 70100 -# define FALLTHROUGH __attribute__ ((fallthrough)) -# else -# define FALLTHROUGH -# endif -# endif +#define GNUTLS_TESTS_UTILS_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef __attribute__ +#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) +#define __attribute__(Spec) /* empty */ +#endif +#endif + +#ifdef NDEBUG +#error tests cannot be compiled with NDEBUG defined +#endif + +#ifndef FALLTHROUGH +#if _GNUTLS_GCC_VERSION >= 70100 +#define FALLTHROUGH __attribute__((fallthrough)) +#else +#define FALLTHROUGH +#endif +#endif /* number of elements within an array */ -# define countof(a) (sizeof(a)/sizeof(*(a))) +#define countof(a) (sizeof(a) / sizeof(*(a))) inline static int global_init(void) { -# ifdef ENABLE_PKCS11 +#ifdef ENABLE_PKCS11 gnutls_pkcs11_init(GNUTLS_PKCS11_FLAG_MANUAL, NULL); -# endif +#endif return gnutls_global_init(); } @@ -71,22 +71,20 @@ extern const char *pkcs3; extern const char *pkcs3_2048; extern const char *pkcs3_3072; -# define fail(format, ...) \ - _fail("%s:%d: "format, __func__, __LINE__, ##__VA_ARGS__) +#define fail(format, ...) \ + _fail("%s:%d: " format, __func__, __LINE__, ##__VA_ARGS__) -extern void _fail(const char *format, ...) - __attribute__((format(printf, 1, 2))) __attribute__((__noreturn__)); +extern void _fail(const char *format, ...) __attribute__((format(printf, 1, 2))) +__attribute__((__noreturn__)); extern void fail_ignore(const char *format, ...) - __attribute__((format(printf, 1, 2))) __attribute__((__noreturn__)); + __attribute__((format(printf, 1, 2))) __attribute__((__noreturn__)); extern void success(const char *format, ...) - __attribute__((format(printf, 1, 2))); + __attribute__((format(printf, 1, 2))); /* assumes test_name is defined */ -# define test_fail(fmt, ...) \ - fail("%s: "fmt, test_name, ##__VA_ARGS__) +#define test_fail(fmt, ...) fail("%s: " fmt, test_name, ##__VA_ARGS__) -# define test_success(fmt, ...) \ - success("%s: "fmt, test_name, ##__VA_ARGS__) +#define test_success(fmt, ...) success("%s: " fmt, test_name, ##__VA_ARGS__) extern void c_print(const unsigned char *str, size_t len); extern void escapeprint(const char *str, size_t len); @@ -95,53 +93,46 @@ extern void binprint(const void *str, size_t len); int disable_system_calls(void); void sec_sleep(int sec); -int -test_cli_serv_anon(gnutls_anon_server_credentials_t server_cred, - gnutls_anon_client_credentials_t client_cred, - const char *prio); +int test_cli_serv_anon(gnutls_anon_server_credentials_t server_cred, + gnutls_anon_client_credentials_t client_cred, + const char *prio); -int -test_cli_serv_psk(gnutls_psk_server_credentials_t server_cred, - gnutls_psk_client_credentials_t client_cred, - const char *prio); +int test_cli_serv_psk(gnutls_psk_server_credentials_t server_cred, + gnutls_psk_client_credentials_t client_cred, + const char *prio); typedef void callback_func(gnutls_session_t, void *priv); void test_cli_serv(gnutls_certificate_credentials_t server_cred, gnutls_certificate_credentials_t client_cred, - const char *prio, const char *host, - void *priv, - callback_func * client_cb, callback_func * server_cb); - -int -_test_cli_serv(gnutls_certificate_credentials_t server_cred, - gnutls_certificate_credentials_t client_cred, - const char *serv_prio, const char *cli_prio, - const char *host, - void *priv, callback_func * client_cb, callback_func * server_cb, - unsigned expect_verification_failure, - unsigned require_cert, int serv_err, int cli_err); + const char *prio, const char *host, void *priv, + callback_func *client_cb, callback_func *server_cb); -void print_dh_params_info(gnutls_session_t); - -void -test_cli_serv_cert(gnutls_certificate_credentials_t server_cred, +int _test_cli_serv(gnutls_certificate_credentials_t server_cred, gnutls_certificate_credentials_t client_cred, const char *serv_prio, const char *cli_prio, - const char *host); + const char *host, void *priv, callback_func *client_cb, + callback_func *server_cb, + unsigned expect_verification_failure, unsigned require_cert, + int serv_err, int cli_err); + +void print_dh_params_info(gnutls_session_t); + +void test_cli_serv_cert(gnutls_certificate_credentials_t server_cred, + gnutls_certificate_credentials_t client_cred, + const char *serv_prio, const char *cli_prio, + const char *host); -void -test_cli_serv_expect(gnutls_certificate_credentials_t server_cred, - gnutls_certificate_credentials_t client_cred, - const char *serv_prio, const char *cli_prio, - const char *host, int serv_err, int cli_err); +void test_cli_serv_expect(gnutls_certificate_credentials_t server_cred, + gnutls_certificate_credentials_t client_cred, + const char *serv_prio, const char *cli_prio, + const char *host, int serv_err, int cli_err); /* verification failed */ -unsigned -test_cli_serv_vf(gnutls_certificate_credentials_t server_cred, - gnutls_certificate_credentials_t client_cred, - const char *prio, const char *host); +unsigned test_cli_serv_vf(gnutls_certificate_credentials_t server_cred, + gnutls_certificate_credentials_t client_cred, + const char *prio, const char *host); -# define TMPNAME_SIZE 128 +#define TMPNAME_SIZE 128 char *get_tmpname(char s[TMPNAME_SIZE]); void track_temp_files(void); void delete_temp_files(void); @@ -154,7 +145,7 @@ extern void doit(void); /* calls fail() if status indicates an error */ inline static void _check_wait_status(int status, unsigned sigonly) { -# if defined WEXITSTATUS && defined WIFSIGNALED +#if defined WEXITSTATUS && defined WIFSIGNALED if (WEXITSTATUS(status) != 0 || (WIFSIGNALED(status) && WTERMSIG(status) != SIGTERM)) { if (WIFSIGNALED(status)) { @@ -168,7 +159,7 @@ inline static void _check_wait_status(int status, unsigned sigonly) } } } -# endif +#endif } inline static void check_wait_status(int status) @@ -211,8 +202,8 @@ inline static unsigned int get_dtls_retransmit_timeout(void) return (unsigned int)ul; } -static inline const char -*fips_operation_state_to_string(gnutls_fips140_operation_state_t state) +static inline const char * +fips_operation_state_to_string(gnutls_fips140_operation_state_t state) { switch (state) { case GNUTLS_FIPS140_OP_INITIAL: @@ -224,7 +215,7 @@ static inline const char case GNUTLS_FIPS140_OP_ERROR: return "ERROR"; default: - /*NOTREACHED*/ assert(0); + /*NOTREACHED*/ assert(0); return NULL; } } @@ -264,7 +255,8 @@ fips_pop_context(gnutls_fips140_context_t context, } /* To use those convenient macros, define fips_context variable. */ -# define FIPS_PUSH_CONTEXT() fips_push_context(fips_context) -# define FIPS_POP_CONTEXT(state) fips_pop_context(fips_context, GNUTLS_FIPS140_OP_ ## state) +#define FIPS_PUSH_CONTEXT() fips_push_context(fips_context) +#define FIPS_POP_CONTEXT(state) \ + fips_pop_context(fips_context, GNUTLS_FIPS140_OP_##state) -#endif /* GNUTLS_TESTS_UTILS_H */ +#endif /* GNUTLS_TESTS_UTILS_H */ diff --git a/tests/version-checks.c b/tests/version-checks.c index 1ef1abaa9c..383b64e7b0 100644 --- a/tests/version-checks.c +++ b/tests/version-checks.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -60,8 +60,8 @@ static void try(const char *client_prio, int expected) unsigned dtls = 0; const char *server_prio = "NORMAL:+VERS-TLS-ALL"; - if (expected >= GNUTLS_DTLS_VERSION_MIN - && expected <= GNUTLS_DTLS_VERSION_MAX) { + if (expected >= GNUTLS_DTLS_VERSION_MIN && + expected <= GNUTLS_DTLS_VERSION_MAX) { dtls = 1; /* we do not really do negotiation in that version */ if (expected == GNUTLS_DTLS0_9) @@ -75,9 +75,8 @@ static void try(const char *client_prio, int expected) /* Init server */ gnutls_certificate_allocate_credentials(&serverx509cred); - gnutls_certificate_set_x509_key_mem(serverx509cred, - &server_cert, &server_key, - GNUTLS_X509_FMT_PEM); + gnutls_certificate_set_x509_key_mem(serverx509cred, &server_cert, + &server_key, GNUTLS_X509_FMT_PEM); if (dtls) flags |= (GNUTLS_DATAGRAM | GNUTLS_NONBLOCK); @@ -98,9 +97,8 @@ static void try(const char *client_prio, int expected) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -135,7 +133,9 @@ static void try(const char *client_prio, int expected) ret = gnutls_protocol_get_version(client); if (ret != expected) { - fail("unexpected negotiated protocol %s (expected %s)\n", gnutls_protocol_get_name(ret), gnutls_protocol_get_name(expected)); + fail("unexpected negotiated protocol %s (expected %s)\n", + gnutls_protocol_get_name(ret), + gnutls_protocol_get_name(expected)); exit(1); } } else { diff --git a/tests/virt-time.h b/tests/virt-time.h index c7d4aada96..928737b825 100644 --- a/tests/virt-time.h +++ b/tests/virt-time.h @@ -20,20 +20,20 @@ */ #ifndef GNUTLS_TESTS_VIRT_TIME_H -# define GNUTLS_TESTS_VIRT_TIME_H +#define GNUTLS_TESTS_VIRT_TIME_H -# ifdef HAVE_CONFIG_H -# include -# endif +#ifdef HAVE_CONFIG_H +#include +#endif -# include -# include +#include +#include /* copied from ../lib/system.h so not to include that header from * every test program */ typedef void (*gnutls_gettime_func)(struct timespec *); -extern void _gnutls_global_set_gettime_function(gnutls_gettime_func - gettime_func); +extern void +_gnutls_global_set_gettime_function(gnutls_gettime_func gettime_func); /* virtualize time in a test. This freezes the time in the test, except for * the advances due to calls to virt_sleep_sec(). This makes the test @@ -41,22 +41,24 @@ extern void _gnutls_global_set_gettime_function(gnutls_gettime_func static time_t _now; static struct timespec _now_ts; -# define virt_sec_sleep(s) { \ - _now += s; \ +#define virt_sec_sleep(s) \ + { \ + _now += s; \ _now_ts.tv_sec += s; \ } -# define virt_time_init_at(d) { \ - _now = (d); \ - gnutls_global_set_time_function(mytime); \ - _now_ts.tv_sec = _now; \ - _now_ts.tv_nsec = 0; \ +#define virt_time_init_at(d) \ + { \ + _now = (d); \ + gnutls_global_set_time_function(mytime); \ + _now_ts.tv_sec = _now; \ + _now_ts.tv_nsec = 0; \ _gnutls_global_set_gettime_function(mygettime); \ } -# define virt_time_init() virt_time_init_at(time(0)) +#define virt_time_init() virt_time_init_at(time(0)) -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { if (t) *t = _now; @@ -70,4 +72,4 @@ static void mygettime(struct timespec *t) *t = _now_ts; } -#endif /* GNUTLS_TESTS_VIRT_TIME_H */ +#endif /* GNUTLS_TESTS_VIRT_TIME_H */ diff --git a/tests/win-certopenstore.c b/tests/win-certopenstore.c index 1dba3e63db..118982c6f4 100644 --- a/tests/win-certopenstore.c +++ b/tests/win-certopenstore.c @@ -25,11 +25,11 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #ifndef _WIN32 -# error "This test shouldn't have been included" +#error "This test shouldn't have been included" #endif #include diff --git a/tests/windows/cng-windows.c b/tests/windows/cng-windows.c index 588f641d9e..9db5699195 100644 --- a/tests/windows/cng-windows.c +++ b/tests/windows/cng-windows.c @@ -25,12 +25,12 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #ifndef _WIN32 -# include +#include void doit(void) { @@ -39,21 +39,21 @@ void doit(void) #else -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include "../cert-common.h" -# include "ncrypt-int.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../cert-common.h" +#include "ncrypt-int.h" static void tls_log_func(int level, const char *str) { @@ -62,34 +62,28 @@ static void tls_log_func(int level, const char *str) /* sha1 hash of "hello" string */ const gnutls_datum_t sha256_hash_data = { - (void *) - "\x2c\xf2\x4d\xba\x5f\xb0\xa3\x0e\x26\xe8" - "\x3b\x2a\xc5\xb9\xe2\x9e\x1b\x16\x1e\x5c" - "\x1f\xa7\x42\x5e\x73\x04\x33\x62\x93\x8b" "\x98\x24", + (void *)"\x2c\xf2\x4d\xba\x5f\xb0\xa3\x0e\x26\xe8" + "\x3b\x2a\xc5\xb9\xe2\x9e\x1b\x16\x1e\x5c" + "\x1f\xa7\x42\x5e\x73\x04\x33\x62\x93\x8b" + "\x98\x24", 32 }; const gnutls_datum_t md5sha1_hash_data = { - (void *) - "\x5d\x41\x40\x2a\xbc\x4b\x2a\x76\xb9\x71\x9d\x91\x10\x17\xc5\x92" - "\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", + (void *)"\x5d\x41\x40\x2a\xbc\x4b\x2a\x76\xb9\x71\x9d\x91\x10\x17\xc5\x92" + "\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", 36 }; const gnutls_datum_t invalid_hash_data = { - (void *) - "\xaa\xf4\xc6\x1d\xdc\xca\xe8\xa2\xda\xbe" - "\xde\x0f\x3b\x48\x2c\xb9\xae\xa9\x43\x4d", + (void *)"\xaa\xf4\xc6\x1d\xdc\xca\xe8\xa2\xda\xbe" + "\xde\x0f\x3b\x48\x2c\xb9\xae\xa9\x43\x4d", 20 }; -const gnutls_datum_t raw_data = { - (void *)"hello", - 5 -}; +const gnutls_datum_t raw_data = { (void *)"hello", 5 }; -static -void test_sig(void) +static void test_sig(void) { gnutls_pubkey_t pubkey; gnutls_privkey_t privkey; @@ -101,45 +95,40 @@ void test_sig(void) assert_int_nequal(gnutls_privkey_init(&privkey), 0); - assert_int_nequal(gnutls_privkey_import_url - (privkey, "system:win:id=123456", 0), 0); + assert_int_nequal(gnutls_privkey_import_url(privkey, + "system:win:id=123456", 0), + 0); - assert_int_nequal(gnutls_pubkey_import_x509_raw - (pubkey, &cert_dat, GNUTLS_X509_FMT_PEM, 0), 0); + assert_int_nequal(gnutls_pubkey_import_x509_raw(pubkey, &cert_dat, + GNUTLS_X509_FMT_PEM, 0), + 0); assert_int_nequal(gnutls_privkey_sign_hash(privkey, GNUTLS_DIG_SHA256, 0, &sha256_hash_data, - &signature), 0); + &signature), + 0); - ret = - gnutls_pubkey_verify_hash2(pubkey, - sign_algo, 0, - &sha256_hash_data, &signature); + ret = gnutls_pubkey_verify_hash2(pubkey, sign_algo, 0, + &sha256_hash_data, &signature); assert(ret >= 0); /* should fail */ - ret = - gnutls_pubkey_verify_hash2(pubkey, - sign_algo, 0, - &invalid_hash_data, &signature); + ret = gnutls_pubkey_verify_hash2(pubkey, sign_algo, 0, + &invalid_hash_data, &signature); assert(ret == GNUTLS_E_PK_SIG_VERIFY_FAILED); gnutls_free(signature.data); signature.data = NULL; /* test the raw interface (MD5+SHA1) */ - ret = - gnutls_privkey_sign_hash(privkey, - 0, - GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, - &md5sha1_hash_data, &signature); + ret = gnutls_privkey_sign_hash(privkey, 0, + GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, + &md5sha1_hash_data, &signature); assert(ret >= 0); - ret = - gnutls_pubkey_verify_hash2(pubkey, - 0, - GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA, - &md5sha1_hash_data, &signature); + ret = gnutls_pubkey_verify_hash2(pubkey, 0, + GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA, + &md5sha1_hash_data, &signature); assert(ret >= 0); gnutls_free(signature.data); @@ -147,23 +136,18 @@ void test_sig(void) /* test the raw interface DigestInfo */ - ret = - gnutls_encode_ber_digest_info(GNUTLS_DIG_SHA256, &sha256_hash_data, - &digest_info); + ret = gnutls_encode_ber_digest_info(GNUTLS_DIG_SHA256, + &sha256_hash_data, &digest_info); assert(ret >= 0); - ret = - gnutls_privkey_sign_hash(privkey, - 0, - GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, - &digest_info, &signature); + ret = gnutls_privkey_sign_hash(privkey, 0, + GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, + &digest_info, &signature); assert(ret >= 0); - ret = - gnutls_pubkey_verify_hash2(pubkey, - 0, - GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA, - &digest_info, &signature); + ret = gnutls_pubkey_verify_hash2(pubkey, 0, + GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA, + &digest_info, &signature); assert(ret >= 0); gnutls_free(signature.data); diff --git a/tests/windows/crypt32.c b/tests/windows/crypt32.c index c2296e2f0d..bd98fba23d 100644 --- a/tests/windows/crypt32.c +++ b/tests/windows/crypt32.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #undef DECLSPEC_IMPORT @@ -41,43 +41,39 @@ #include "ncrypt-int.h" #include -#define VALID_PTR (void*)0x0001 +#define VALID_PTR (void *)0x0001 /* This is dummy crypt32 replacement with stub functions. It pretends * to load the key store and find a single certificate in the store * of which it will return some arbitrary but valid values in CertGetCertificateContextProperty. */ -__declspec(dllexport) -HCERTSTORE WINAPI CertOpenSystemStore(HCRYPTPROV_LEGACY hprov, - LPCSTR szSubsystemProtocol) +__declspec(dllexport) HCERTSTORE WINAPI + CertOpenSystemStore(HCRYPTPROV_LEGACY hprov, LPCSTR szSubsystemProtocol) { return VALID_PTR; } -__declspec(dllexport) -HCERTSTORE WINAPI CertOpenStore(LPCSTR lpszStoreProvider, DWORD dwEncodingType, - HCRYPTPROV_LEGACY hCryptProv, DWORD dwFlags, - const void *pvPara) +__declspec(dllexport) HCERTSTORE WINAPI + CertOpenStore(LPCSTR lpszStoreProvider, DWORD dwEncodingType, + HCRYPTPROV_LEGACY hCryptProv, DWORD dwFlags, + const void *pvPara) { return VALID_PTR; } -__declspec(dllexport) -BOOL WINAPI CertCloseStore(HCERTSTORE hCertStore, DWORD dwFlags) +__declspec(dllexport) BOOL WINAPI + CertCloseStore(HCERTSTORE hCertStore, DWORD dwFlags) { assert_int_nequal(hCertStore, VALID_PTR); return 1; } -__declspec(dllexport) -PCCERT_CONTEXT WINAPI CertFindCertificateInStore(HCERTSTORE hCertStore, - DWORD dwCertEncodingType, - DWORD dwFindFlags, - DWORD dwFindType, - const void *pvFindPara, - PCCERT_CONTEXT - pPrevCertContext) +__declspec(dllexport) PCCERT_CONTEXT WINAPI + CertFindCertificateInStore(HCERTSTORE hCertStore, + DWORD dwCertEncodingType, DWORD dwFindFlags, + DWORD dwFindType, const void *pvFindPara, + PCCERT_CONTEXT pPrevCertContext) { //CRYPT_HASH_BLOB *blob = (void*)pvFindPara; @@ -89,10 +85,10 @@ PCCERT_CONTEXT WINAPI CertFindCertificateInStore(HCERTSTORE hCertStore, return VALID_PTR; } -__declspec(dllexport) -BOOL WINAPI CertGetCertificateContextProperty(PCCERT_CONTEXT pCertContext, - DWORD dwPropId, void *pvData, - DWORD * pcbData) +__declspec(dllexport) BOOL WINAPI + CertGetCertificateContextProperty(PCCERT_CONTEXT pCertContext, + DWORD dwPropId, void *pvData, + DWORD *pcbData) { if (dwPropId == CERT_FRIENDLY_NAME_PROP_ID) { *pcbData = snprintf(pvData, *pcbData, "friendly"); @@ -125,95 +121,91 @@ BOOL WINAPI CertGetCertificateContextProperty(PCCERT_CONTEXT pCertContext, return 0; } -__declspec(dllexport) -PCCRL_CONTEXT WINAPI CertEnumCRLsInStore(HCERTSTORE hCertStore, - PCCRL_CONTEXT pPrevCrlContext) +__declspec(dllexport) PCCRL_CONTEXT WINAPI + CertEnumCRLsInStore(HCERTSTORE hCertStore, + PCCRL_CONTEXT pPrevCrlContext) { return NULL; } -__declspec(dllexport) -BOOL WINAPI CertDeleteCertificateFromStore(PCCERT_CONTEXT pCertContext) +__declspec(dllexport) BOOL WINAPI + CertDeleteCertificateFromStore(PCCERT_CONTEXT pCertContext) { return 1; } -__declspec(dllexport) -HCERTSTORE WINAPI PFXImportCertStore(CRYPT_DATA_BLOB * pPFX, LPCWSTR szPassword, - DWORD dwFlags) +__declspec(dllexport) HCERTSTORE WINAPI + PFXImportCertStore(CRYPT_DATA_BLOB *pPFX, LPCWSTR szPassword, + DWORD dwFlags) { return NULL; } -__declspec(dllexport) -PCCERT_CONTEXT WINAPI CertEnumCertificatesInStore(HCERTSTORE hCertStore, - PCCERT_CONTEXT - pPrevCertContext) +__declspec(dllexport) PCCERT_CONTEXT WINAPI + CertEnumCertificatesInStore(HCERTSTORE hCertStore, + PCCERT_CONTEXT pPrevCertContext) { return NULL; } -__declspec(dllexport) -BOOL WINAPI CertFreeCertificateContext(PCCERT_CONTEXT pCertContext) +__declspec(dllexport) BOOL WINAPI + CertFreeCertificateContext(PCCERT_CONTEXT pCertContext) { return 1; } /* These are for CAPI, and are placeholders */ -__declspec(dllexport) -BOOL WINAPI CryptGetProvParam(HCRYPTPROV hProv, DWORD dwParam, - BYTE * pbData, DWORD * pdwDataLen, DWORD dwFlags) +__declspec(dllexport) BOOL WINAPI + CryptGetProvParam(HCRYPTPROV hProv, DWORD dwParam, BYTE *pbData, + DWORD *pdwDataLen, DWORD dwFlags) { return 0; } -__declspec(dllexport) -BOOL WINAPI CryptAcquireContextW(HCRYPTPROV * phProv, LPCWSTR szContainer, - LPCWSTR szProvider, DWORD dwProvType, - DWORD dwFlags) +__declspec(dllexport) BOOL WINAPI + CryptAcquireContextW(HCRYPTPROV *phProv, LPCWSTR szContainer, + LPCWSTR szProvider, DWORD dwProvType, + DWORD dwFlags) { return 0; } -__declspec(dllexport) -BOOL WINAPI CryptDecrypt(HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, - DWORD dwFlags, BYTE * pbData, DWORD * pdwDataLen) +__declspec(dllexport) BOOL WINAPI + CryptDecrypt(HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, + DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen) { return 0; } -__declspec(dllexport) -BOOL WINAPI CryptDestroyHash(HCRYPTHASH hHash) +__declspec(dllexport) BOOL WINAPI CryptDestroyHash(HCRYPTHASH hHash) { return 1; } -__declspec(dllexport) -BOOL WINAPI CryptSignHash(HCRYPTHASH hHash, - DWORD dwKeySpec, - LPCTSTR sDescription, - DWORD dwFlags, BYTE * pbSignature, DWORD * pdwSigLen) +__declspec(dllexport) BOOL WINAPI + CryptSignHash(HCRYPTHASH hHash, DWORD dwKeySpec, LPCTSTR sDescription, + DWORD dwFlags, BYTE *pbSignature, DWORD *pdwSigLen) { return 0; } -__declspec(dllexport) -BOOL WINAPI CryptGetHashParam(HCRYPTHASH hHash, DWORD dwParam, - BYTE * pbData, DWORD * pdwDataLen, DWORD dwFlags) +__declspec(dllexport) BOOL WINAPI + CryptGetHashParam(HCRYPTHASH hHash, DWORD dwParam, BYTE *pbData, + DWORD *pdwDataLen, DWORD dwFlags) { return 0; } -__declspec(dllexport) -BOOL WINAPI CryptSetHashParam(HCRYPTHASH hHash, DWORD dwParam, - const BYTE * pbData, DWORD dwFlags) +__declspec(dllexport) BOOL WINAPI + CryptSetHashParam(HCRYPTHASH hHash, DWORD dwParam, const BYTE *pbData, + DWORD dwFlags) { return 0; } -__declspec(dllexport) -BOOL WINAPI CryptCreateHash(HCRYPTPROV hProv, ALG_ID Algid, HCRYPTKEY hKey, - DWORD dwFlags, HCRYPTHASH * phHash) +__declspec(dllexport) BOOL WINAPI + CryptCreateHash(HCRYPTPROV hProv, ALG_ID Algid, HCRYPTKEY hKey, + DWORD dwFlags, HCRYPTHASH *phHash) { return 0; } diff --git a/tests/windows/ncrypt-int.h b/tests/windows/ncrypt-int.h index a4762bd8cf..abe18d1e47 100644 --- a/tests/windows/ncrypt-int.h +++ b/tests/windows/ncrypt-int.h @@ -1 +1 @@ -#define assert_int_nequal(x,y) assert((x)==(y)) +#define assert_int_nequal(x, y) assert((x) == (y)) diff --git a/tests/windows/ncrypt.c b/tests/windows/ncrypt.c index bc3e630305..b7d1690652 100644 --- a/tests/windows/ncrypt.c +++ b/tests/windows/ncrypt.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -46,47 +46,43 @@ #define debug_func() fprintf(stderr, "%s: %d\n", __func__, __LINE__); -__declspec(dllexport) -SECURITY_STATUS WINAPI NCryptDeleteKey(NCRYPT_KEY_HANDLE hKey, DWORD dwFlags) +__declspec(dllexport) SECURITY_STATUS WINAPI + NCryptDeleteKey(NCRYPT_KEY_HANDLE hKey, DWORD dwFlags) { debug_func(); return 0; } -__declspec(dllexport) -SECURITY_STATUS WINAPI NCryptOpenStorageProvider(NCRYPT_PROV_HANDLE * - phProvider, - LPCWSTR pszProviderName, - DWORD dwFlags) +__declspec(dllexport) SECURITY_STATUS WINAPI + NCryptOpenStorageProvider(NCRYPT_PROV_HANDLE *phProvider, + LPCWSTR pszProviderName, DWORD dwFlags) { debug_func(); *phProvider = 0; return 0x0000ffff; } -__declspec(dllexport) -SECURITY_STATUS WINAPI NCryptOpenKey(NCRYPT_PROV_HANDLE hProvider, - NCRYPT_KEY_HANDLE * phKey, - LPCWSTR pszKeyName, DWORD dwLegacyKeySpec, - DWORD dwFlags) +__declspec(dllexport) SECURITY_STATUS WINAPI + NCryptOpenKey(NCRYPT_PROV_HANDLE hProvider, NCRYPT_KEY_HANDLE *phKey, + LPCWSTR pszKeyName, DWORD dwLegacyKeySpec, DWORD dwFlags) { gnutls_privkey_t p; debug_func(); assert_int_nequal(gnutls_privkey_init(&p), 0); - assert_int_nequal(gnutls_privkey_import_x509_raw - (p, &key_dat, GNUTLS_X509_FMT_PEM, NULL, 0), 0); + assert_int_nequal(gnutls_privkey_import_x509_raw( + p, &key_dat, GNUTLS_X509_FMT_PEM, NULL, 0), + 0); - *phKey = (NCRYPT_KEY_HANDLE) p; + *phKey = (NCRYPT_KEY_HANDLE)p; return 1; } -__declspec(dllexport) -SECURITY_STATUS WINAPI NCryptGetProperty(NCRYPT_HANDLE hObject, - LPCWSTR pszProperty, PBYTE pbOutput, - DWORD cbOutput, DWORD * pcbResult, - DWORD dwFlags) +__declspec(dllexport) SECURITY_STATUS WINAPI + NCryptGetProperty(NCRYPT_HANDLE hObject, LPCWSTR pszProperty, + PBYTE pbOutput, DWORD cbOutput, DWORD *pcbResult, + DWORD dwFlags) { debug_func(); //assert_int_nequal(pszProperty, NCRYPT_ALGORITHM_PROPERTY); @@ -95,20 +91,19 @@ SECURITY_STATUS WINAPI NCryptGetProperty(NCRYPT_HANDLE hObject, return 1; } -__declspec(dllexport) -SECURITY_STATUS WINAPI NCryptFreeObject(NCRYPT_HANDLE hObject) +__declspec(dllexport) SECURITY_STATUS WINAPI + NCryptFreeObject(NCRYPT_HANDLE hObject) { debug_func(); if (hObject != 0) - gnutls_privkey_deinit((gnutls_privkey_t) hObject); + gnutls_privkey_deinit((gnutls_privkey_t)hObject); return 1; } -__declspec(dllexport) -SECURITY_STATUS WINAPI NCryptDecrypt(NCRYPT_KEY_HANDLE hKey, PBYTE pbInput, - DWORD cbInput, VOID * pPaddingInfo, - PBYTE pbOutput, DWORD cbOutput, - DWORD * pcbResult, DWORD dwFlags) +__declspec(dllexport) SECURITY_STATUS WINAPI + NCryptDecrypt(NCRYPT_KEY_HANDLE hKey, PBYTE pbInput, DWORD cbInput, + VOID *pPaddingInfo, PBYTE pbOutput, DWORD cbOutput, + DWORD *pcbResult, DWORD dwFlags) { gnutls_datum_t c, p; assert_int_nequal(dwFlags, NCRYPT_PAD_PKCS1_FLAG); @@ -121,8 +116,9 @@ SECURITY_STATUS WINAPI NCryptDecrypt(NCRYPT_KEY_HANDLE hKey, PBYTE pbInput, return 1; } - assert_int_nequal(gnutls_privkey_decrypt_data - ((gnutls_privkey_t) hKey, 0, &c, &p), 0); + assert_int_nequal(gnutls_privkey_decrypt_data((gnutls_privkey_t)hKey, 0, + &c, &p), + 0); *pcbResult = p.size; memcpy(pbOutput, p.data, p.size); @@ -131,7 +127,7 @@ SECURITY_STATUS WINAPI NCryptDecrypt(NCRYPT_KEY_HANDLE hKey, PBYTE pbInput, return 1; } -static int StrCmpW(const WCHAR * str1, const WCHAR * str2) +static int StrCmpW(const WCHAR *str1, const WCHAR *str2) { while (*str1 && (*str1 == *str2)) { str1++; @@ -140,28 +136,25 @@ static int StrCmpW(const WCHAR * str1, const WCHAR * str2) return *str1 - *str2; } -__declspec(dllexport) -SECURITY_STATUS WINAPI NCryptSignHash(NCRYPT_KEY_HANDLE hKey, - VOID * pPaddingInfo, PBYTE pbHashValue, - DWORD cbHashValue, PBYTE pbSignature, - DWORD cbSignature, DWORD * pcbResult, - DWORD dwFlags) +__declspec(dllexport) SECURITY_STATUS WINAPI + NCryptSignHash(NCRYPT_KEY_HANDLE hKey, VOID *pPaddingInfo, + PBYTE pbHashValue, DWORD cbHashValue, PBYTE pbSignature, + DWORD cbSignature, DWORD *pcbResult, DWORD dwFlags) { BCRYPT_PKCS1_PADDING_INFO *info; int hash = 0; - gnutls_privkey_t p = (gnutls_privkey_t) hKey; + gnutls_privkey_t p = (gnutls_privkey_t)hKey; gnutls_datum_t v = { pbHashValue, cbHashValue }, s; debug_func(); info = pPaddingInfo; if (info != NULL) { - if (info->pszAlgId - && StrCmpW(info->pszAlgId, NCRYPT_SHA1_ALGORITHM) == 0) + if (info->pszAlgId && + StrCmpW(info->pszAlgId, NCRYPT_SHA1_ALGORITHM) == 0) hash = GNUTLS_DIG_SHA1; - else if (info->pszAlgId - && StrCmpW(info->pszAlgId, - NCRYPT_SHA256_ALGORITHM) == 0) + else if (info->pszAlgId && + StrCmpW(info->pszAlgId, NCRYPT_SHA256_ALGORITHM) == 0) hash = GNUTLS_DIG_SHA256; else if (info->pszAlgId != NULL) { assert(0); @@ -176,9 +169,11 @@ SECURITY_STATUS WINAPI NCryptSignHash(NCRYPT_KEY_HANDLE hKey, assert(p != NULL); if (info == NULL || info->pszAlgId == NULL) { - assert_int_nequal(gnutls_privkey_sign_hash - (p, 0, GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, &v, - &s), 0); + assert_int_nequal(gnutls_privkey_sign_hash( + p, 0, + GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, &v, + &s), + 0); } else if (info != NULL) { assert_int_nequal(gnutls_privkey_sign_hash(p, hash, 0, &v, &s), 0); diff --git a/tests/x509-cert-callback-legacy.c b/tests/x509-cert-callback-legacy.c index 0f761ce99b..c227840c6d 100644 --- a/tests/x509-cert-callback-legacy.c +++ b/tests/x509-cert-callback-legacy.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -44,11 +44,10 @@ static void tls_log_func(int level, const char *str) fprintf(stderr, "%s|<%d>| %s", side, level, str); } -static int -cert_callback(gnutls_session_t session, - const gnutls_datum_t * req_ca_rdn, int nreqs, - const gnutls_pk_algorithm_t * pk_algos, - int pk_algos_length, gnutls_retr2_st * st) +static int cert_callback(gnutls_session_t session, + const gnutls_datum_t *req_ca_rdn, int nreqs, + const gnutls_pk_algorithm_t *pk_algos, + int pk_algos_length, gnutls_retr2_st *st) { int ret; gnutls_x509_crt_t *crts; @@ -62,10 +61,9 @@ cert_callback(gnutls_session_t session, st->cert_type = GNUTLS_CRT_X509; - ret = - gnutls_x509_crt_list_import2(&crts, &crts_size, &cli_ca3_cert_chain, - GNUTLS_X509_FMT_PEM, - GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED); + ret = gnutls_x509_crt_list_import2( + &crts, &crts_size, &cli_ca3_cert_chain, GNUTLS_X509_FMT_PEM, + GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED); if (ret < 0) { fail("error: %s\n", gnutls_strerror(ret)); exit(1); @@ -77,8 +75,8 @@ cert_callback(gnutls_session_t session, exit(1); } - ret = - gnutls_x509_privkey_import(pkey, &cli_ca3_key, GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_privkey_import(pkey, &cli_ca3_key, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("error: %s\n", gnutls_strerror(ret)); exit(1); @@ -93,11 +91,10 @@ cert_callback(gnutls_session_t session, return 0; } -static int -server_cert_callback(gnutls_session_t session, - const gnutls_datum_t * req_ca_rdn, int nreqs, - const gnutls_pk_algorithm_t * pk_algos, - int pk_algos_length, gnutls_retr2_st * st) +static int server_cert_callback(gnutls_session_t session, + const gnutls_datum_t *req_ca_rdn, int nreqs, + const gnutls_pk_algorithm_t *pk_algos, + int pk_algos_length, gnutls_retr2_st *st) { int ret; gnutls_x509_crt_t *crts; @@ -106,11 +103,9 @@ server_cert_callback(gnutls_session_t session, st->cert_type = GNUTLS_CRT_X509; - ret = - gnutls_x509_crt_list_import2(&crts, &crts_size, - &server_ca3_cert_chain, - GNUTLS_X509_FMT_PEM, - GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED); + ret = gnutls_x509_crt_list_import2( + &crts, &crts_size, &server_ca3_cert_chain, GNUTLS_X509_FMT_PEM, + GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED); if (ret < 0) { fail("error: %s\n", gnutls_strerror(ret)); exit(1); @@ -122,9 +117,8 @@ server_cert_callback(gnutls_session_t session, exit(1); } - ret = - gnutls_x509_privkey_import(pkey, &server_ca3_key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_privkey_import(pkey, &server_ca3_key, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("error: %s\n", gnutls_strerror(ret)); exit(1); @@ -179,9 +173,8 @@ static void start(const char *prio) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -221,10 +214,9 @@ static void start(const char *prio) } gnutls_x509_crt_init(&crt); - ret = - gnutls_x509_crt_import(crt, - &server_ca3_localhost_cert_chain, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(crt, + &server_ca3_localhost_cert_chain, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("gnutls_x509_crt_import: %s\n", gnutls_strerror(ret)); @@ -239,8 +231,8 @@ static void start(const char *prio) } gnutls_x509_crt_deinit(crt); - if (scert.size != mcert->size - || memcmp(scert.data, mcert->data, mcert->size) != 0) { + if (scert.size != mcert->size || + memcmp(scert.data, mcert->data, mcert->size) != 0) { fail("gnutls_certificate_get_ours output doesn't match cert\n"); exit(1); } @@ -260,9 +252,8 @@ static void start(const char *prio) } gnutls_x509_crt_init(&crt); - ret = - gnutls_x509_crt_import(crt, &cli_ca3_cert_chain, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(crt, &cli_ca3_cert_chain, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("gnutls_x509_crt_import: %s\n", gnutls_strerror(ret)); @@ -277,8 +268,8 @@ static void start(const char *prio) } gnutls_x509_crt_deinit(crt); - if (ccert.size != mcert->size - || memcmp(ccert.data, mcert->data, mcert->size) != 0) { + if (ccert.size != mcert->size || + memcmp(ccert.data, mcert->data, mcert->size) != 0) { fail("gnutls_certificate_get_ours output doesn't match cert\n"); exit(1); } diff --git a/tests/x509-cert-callback-ocsp.c b/tests/x509-cert-callback-ocsp.c index 4e862d3d5f..370a94f113 100644 --- a/tests/x509-cert-callback-ocsp.c +++ b/tests/x509-cert-callback-ocsp.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -49,16 +49,16 @@ static gnutls_pcert_st *server_pcert = NULL; static gnutls_ocsp_data_st ocspdata[2]; #define OCSP_SIZE 16 -#define OCSP_DATA "\xff\xff\xf0\xf0\xff\xff\xf0\xf0\xff\xff\xf0\xf0\xff\xff\xf0\xf0" - -static int -server_cert_callback(gnutls_session_t session, - const struct gnutls_cert_retr_st *info, - gnutls_pcert_st ** pcert, - unsigned int *pcert_length, - gnutls_ocsp_data_st ** ocsp, - unsigned int *ocsp_length, - gnutls_privkey_t * pkey, unsigned int *flags) +#define OCSP_DATA \ + "\xff\xff\xf0\xf0\xff\xff\xf0\xf0\xff\xff\xf0\xf0\xff\xff\xf0\xf0" + +static int server_cert_callback(gnutls_session_t session, + const struct gnutls_cert_retr_st *info, + gnutls_pcert_st **pcert, + unsigned int *pcert_length, + gnutls_ocsp_data_st **ocsp, + unsigned int *ocsp_length, + gnutls_privkey_t *pkey, unsigned int *flags) { int ret; gnutls_pcert_st *p; @@ -79,9 +79,9 @@ server_cert_callback(gnutls_session_t session, ocspdata[1].response.size = OCSP_SIZE; ocspdata[1].exptime = 0; - ret = gnutls_x509_crt_list_import2(&certs, &certs_size, - &server_ca3_localhost_cert_chain, - GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_x509_crt_list_import2( + &certs, &certs_size, &server_ca3_localhost_cert_chain, + GNUTLS_X509_FMT_PEM, 0); if (ret < 0) return -1; ret = gnutls_pcert_import_x509_list(p, certs, &certs_size, 0); @@ -95,10 +95,8 @@ server_cert_callback(gnutls_session_t session, if (ret < 0) return -1; - ret = - gnutls_privkey_import_x509_raw(lkey, &server_ca3_key, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_privkey_import_x509_raw( + lkey, &server_ca3_key, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) return -1; @@ -163,9 +161,8 @@ static void start(const char *prio) gnutls_certificate_set_verify_flags(ccred, GNUTLS_VERIFY_DISABLE_CRL_CHECKS); - ret = - gnutls_certificate_set_x509_trust_mem(ccred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(ccred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); diff --git a/tests/x509-cert-callback.c b/tests/x509-cert-callback.c index 8baa22ba95..92ac6ab88a 100644 --- a/tests/x509-cert-callback.c +++ b/tests/x509-cert-callback.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -47,12 +47,11 @@ static void tls_log_func(int level, const char *str) static gnutls_privkey_t g_pkey = NULL; static gnutls_pcert_st *g_pcert = NULL; -static int -cert_callback(gnutls_session_t session, - const gnutls_datum_t * req_ca_rdn, int nreqs, - const gnutls_pk_algorithm_t * sign_algos, - int sign_algos_length, gnutls_pcert_st ** pcert, - unsigned int *pcert_length, gnutls_privkey_t * pkey) +static int cert_callback(gnutls_session_t session, + const gnutls_datum_t *req_ca_rdn, int nreqs, + const gnutls_pk_algorithm_t *sign_algos, + int sign_algos_length, gnutls_pcert_st **pcert, + unsigned int *pcert_length, gnutls_privkey_t *pkey) { int ret; gnutls_pcert_st *p; @@ -86,10 +85,8 @@ cert_callback(gnutls_session_t session, if (ret < 0) return -1; - ret = - gnutls_privkey_import_x509_raw(lkey, &cli_ca3_key, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_privkey_import_x509_raw( + lkey, &cli_ca3_key, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) return -1; @@ -102,7 +99,8 @@ cert_callback(gnutls_session_t session, } else { *pcert = g_pcert; *pcert_length = 2; - if (gnutls_certificate_client_get_request_status(session) == 0) { + if (gnutls_certificate_client_get_request_status(session) == + 0) { fail("gnutls_certificate_client_get_request_status failed\n"); return -1; } @@ -115,12 +113,12 @@ cert_callback(gnutls_session_t session, static gnutls_privkey_t server_pkey = NULL; static gnutls_pcert_st *server_pcert = NULL; -static int -server_cert_callback(gnutls_session_t session, - const gnutls_datum_t * req_ca_rdn, int nreqs, - const gnutls_pk_algorithm_t * sign_algos, - int sign_algos_length, gnutls_pcert_st ** pcert, - unsigned int *pcert_length, gnutls_privkey_t * pkey) +static int server_cert_callback(gnutls_session_t session, + const gnutls_datum_t *req_ca_rdn, int nreqs, + const gnutls_pk_algorithm_t *sign_algos, + int sign_algos_length, gnutls_pcert_st **pcert, + unsigned int *pcert_length, + gnutls_privkey_t *pkey) { int ret; gnutls_pcert_st *p; @@ -133,9 +131,9 @@ server_cert_callback(gnutls_session_t session, if (p == NULL) return -1; - ret = gnutls_x509_crt_list_import2(&certs, &certs_size, - &server_ca3_localhost_cert_chain, - GNUTLS_X509_FMT_PEM, 0); + ret = gnutls_x509_crt_list_import2( + &certs, &certs_size, &server_ca3_localhost_cert_chain, + GNUTLS_X509_FMT_PEM, 0); if (ret < 0) return -1; ret = gnutls_pcert_import_x509_list(p, certs, &certs_size, 0); @@ -149,10 +147,8 @@ server_cert_callback(gnutls_session_t session, if (ret < 0) return -1; - ret = - gnutls_privkey_import_x509_raw(lkey, &server_ca3_key, - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_privkey_import_x509_raw( + lkey, &server_ca3_key, GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) return -1; @@ -211,9 +207,8 @@ static void start(const char *prio) if (ret < 0) exit(1); - ret = - gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) exit(1); @@ -254,9 +249,8 @@ static void start(const char *prio) } gnutls_x509_crt_init(&crt); - ret = - gnutls_x509_crt_import(crt, &server_ca3_localhost_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(crt, &server_ca3_localhost_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("gnutls_x509_crt_import: %s\n", gnutls_strerror(ret)); @@ -271,8 +265,8 @@ static void start(const char *prio) } gnutls_x509_crt_deinit(crt); - if (scert.size != mcert->size - || memcmp(scert.data, mcert->data, mcert->size) != 0) { + if (scert.size != mcert->size || + memcmp(scert.data, mcert->data, mcert->size) != 0) { fail("gnutls_certificate_get_ours output doesn't match cert\n"); exit(1); } @@ -292,9 +286,8 @@ static void start(const char *prio) } gnutls_x509_crt_init(&crt); - ret = - gnutls_x509_crt_import(crt, &cli_ca3_cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(crt, &cli_ca3_cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) { fail("gnutls_x509_crt_import: %s\n", gnutls_strerror(ret)); @@ -309,8 +302,8 @@ static void start(const char *prio) } gnutls_x509_crt_deinit(crt); - if (ccert.size != mcert->size - || memcmp(ccert.data, mcert->data, mcert->size) != 0) { + if (ccert.size != mcert->size || + memcmp(ccert.data, mcert->data, mcert->size) != 0) { fail("gnutls_certificate_get_ours output doesn't match cert\n"); exit(1); } diff --git a/tests/x509-dn-decode-compat.c b/tests/x509-dn-decode-compat.c index 9d4d45bace..d6c554ee82 100644 --- a/tests/x509-dn-decode-compat.c +++ b/tests/x509-dn-decode-compat.c @@ -22,7 +22,7 @@ /* This checks the old low level DN encoding and decoding routines */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -35,7 +35,7 @@ static char buf[32 * 1024]; -static void decode(const char *test_name, const gnutls_datum_t * raw, +static void decode(const char *test_name, const gnutls_datum_t *raw, const char *expected, const char *expected_compat) { int ret; @@ -48,15 +48,15 @@ static void decode(const char *test_name, const gnutls_datum_t * raw, } if (out.size != strlen(expected)) { - test_fail - ("The length of the output (%d) doesn't match the expected (%d)\n", - (int)out.size, (int)strlen(expected)); + test_fail( + "The length of the output (%d) doesn't match the expected (%d)\n", + (int)out.size, (int)strlen(expected)); } if (memcmp(out.data, expected, out.size) != 0) { - test_fail - ("The string output (%s) doesn't match the expected (%s)\n", - (char *)out.data, expected); + test_fail( + "The string output (%s) doesn't match the expected (%s)\n", + (char *)out.data, expected); } if (out.data[out.size] != 0) { @@ -72,15 +72,15 @@ static void decode(const char *test_name, const gnutls_datum_t * raw, } if (out.size != strlen(expected_compat)) { - test_fail - ("The length of the output (%d) doesn't match the expected (%d)\n", - (int)out.size, (int)strlen(expected_compat)); + test_fail( + "The length of the output (%d) doesn't match the expected (%d)\n", + (int)out.size, (int)strlen(expected_compat)); } if (memcmp(out.data, expected_compat, out.size) != 0) { - test_fail - ("The string output (%s) doesn't match the expected (%s)\n", - (char *)out.data, expected_compat); + test_fail( + "The string output (%s) doesn't match the expected (%s)\n", + (char *)out.data, expected_compat); } if (out.data[out.size] != 0) { @@ -99,15 +99,15 @@ static void decode(const char *test_name, const gnutls_datum_t * raw, out.size = bsize; if (out.size != strlen(expected_compat)) { - test_fail - ("The length of the output (%d) doesn't match the expected (%d)\n", - (int)out.size, (int)strlen(expected_compat)); + test_fail( + "The length of the output (%d) doesn't match the expected (%d)\n", + (int)out.size, (int)strlen(expected_compat)); } if (memcmp(out.data, expected_compat, out.size) != 0) { - test_fail - ("The string output (%s) doesn't match the expected (%s)\n", - (char *)out.data, expected_compat); + test_fail( + "The string output (%s) doesn't match the expected (%s)\n", + (char *)out.data, expected_compat); } if (out.data[out.size] != 0) { @@ -121,48 +121,41 @@ struct tests_st { const char *name; gnutls_datum_t raw; const char *str; - const char *compat_str; /* GNUTLS_X509_DN_FLAG_COMPAT */ + const char *compat_str; /* GNUTLS_X509_DN_FLAG_COMPAT */ unsigned can_encode; }; struct tests_st tests[] = { { - .name = "simple DN", - .str = - "C=GR,ST=Attiki,O=Koko inc.,OU=sleeping dept.,UID=clauper,CN=Cindy Lauper", - .compat_str = - "CN=Cindy Lauper,UID=clauper,OU=sleeping dept.,O=Koko inc.,ST=Attiki,C=GR", - .raw = {(void *) - "\x30\x7b\x31\x15\x30\x13\x06\x03\x55\x04\x03\x13\x0c\x43\x69\x6e\x64\x79\x20\x4c\x61\x75\x70\x65\x72\x31\x17\x30\x15\x06\x0a\x09\x92\x26\x89\x93\xf2\x2c\x64\x01\x01\x13\x07\x63\x6c\x61\x75\x70\x65\x72\x31\x17\x30\x15\x06\x03\x55\x04\x0b\x13\x0e\x73\x6c\x65\x65\x70\x69\x6e\x67\x20\x64\x65\x70\x74\x2e\x31\x12\x30\x10\x06\x03\x55\x04\x0a\x13\x09\x4b\x6f\x6b\x6f\x20\x69\x6e\x63\x2e\x31\x0f\x30\x0d\x06\x03\x55\x04\x08\x13\x06\x41\x74\x74\x69\x6b\x69\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x47\x52", - 125}, - }, + .name = "simple DN", + .str = "C=GR,ST=Attiki,O=Koko inc.,OU=sleeping dept.,UID=clauper,CN=Cindy Lauper", + .compat_str = + "CN=Cindy Lauper,UID=clauper,OU=sleeping dept.,O=Koko inc.,ST=Attiki,C=GR", + .raw = { (void *)"\x30\x7b\x31\x15\x30\x13\x06\x03\x55\x04\x03\x13\x0c\x43\x69\x6e\x64\x79\x20\x4c\x61\x75\x70\x65\x72\x31\x17\x30\x15\x06\x0a\x09\x92\x26\x89\x93\xf2\x2c\x64\x01\x01\x13\x07\x63\x6c\x61\x75\x70\x65\x72\x31\x17\x30\x15\x06\x03\x55\x04\x0b\x13\x0e\x73\x6c\x65\x65\x70\x69\x6e\x67\x20\x64\x65\x70\x74\x2e\x31\x12\x30\x10\x06\x03\x55\x04\x0a\x13\x09\x4b\x6f\x6b\x6f\x20\x69\x6e\x63\x2e\x31\x0f\x30\x0d\x06\x03\x55\x04\x08\x13\x06\x41\x74\x74\x69\x6b\x69\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x47\x52", + 125 }, + }, { - .name = "UTF8 DN", - .str = "C=GR,ST=Αττική,O=Μεγάλη εταιρία,CN=🐨", - .compat_str = - "CN=🐨,O=Μεγάλη εταιρία,ST=Αττική,C=GR", - .raw = {(void *) - "\x30\x59\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x0c\x04\xf0\x9f\x90\xa8\x31\x24\x30\x22\x06\x03\x55\x04\x0a\x0c\x1b\xce\x9c\xce\xb5\xce\xb3\xce\xac\xce\xbb\xce\xb7\x20\xce\xb5\xcf\x84\xce\xb1\xce\xb9\xcf\x81\xce\xaf\xce\xb1\x31\x15\x30\x13\x06\x03\x55\x04\x08\x0c\x0c\xce\x91\xcf\x84\xcf\x84\xce\xb9\xce\xba\xce\xae\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x47\x52", - 91}, - }, + .name = "UTF8 DN", + .str = "C=GR,ST=Αττική,O=Μεγάλη εταιρία,CN=🐨", + .compat_str = "CN=🐨,O=Μεγάλη εταιρία,ST=Αττική,C=GR", + .raw = { (void *)"\x30\x59\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x0c\x04\xf0\x9f\x90\xa8\x31\x24\x30\x22\x06\x03\x55\x04\x0a\x0c\x1b\xce\x9c\xce\xb5\xce\xb3\xce\xac\xce\xbb\xce\xb7\x20\xce\xb5\xcf\x84\xce\xb1\xce\xb9\xcf\x81\xce\xaf\xce\xb1\x31\x15\x30\x13\x06\x03\x55\x04\x08\x0c\x0c\xce\x91\xcf\x84\xcf\x84\xce\xb9\xce\xba\xce\xae\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x47\x52", + 91 }, + }, { - .name = "combo DN", - .compat_str = "C=\\,\\ ,OU=\\ X\\ ,CN=\\#XXX", - .str = "CN=\\#XXX,OU=\\ X\\ ,C=\\,\\ ", - .raw = {(void *) - "\x30\x2b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x2c\x20\x31\x0d\x30\x0b\x06\x03\x55\x04\x0b\x13\x04\x20\x20\x58\x20\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x0c\x04\x23\x58\x58\x58", - 45}, - }, + .name = "combo DN", + .compat_str = "C=\\,\\ ,OU=\\ X\\ ,CN=\\#XXX", + .str = "CN=\\#XXX,OU=\\ X\\ ,C=\\,\\ ", + .raw = { (void *)"\x30\x2b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x2c\x20\x31\x0d\x30\x0b\x06\x03\x55\x04\x0b\x13\x04\x20\x20\x58\x20\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x0c\x04\x23\x58\x58\x58", + 45 }, + }, { - .name = "very long DN", - .compat_str = - "C=ES,ST=CACERES,L=CACERES,O=DIPUTACION PROVINCIAL DE CACERES,OU=DIPUTACION PROVINCIAL DE CACERES,CN=www.dip-caceres.es,EMAIL=webmaster@dip-caceres.es,2.5.29.17=#1382304b444e532e313d6162616469612e65732c444e532e323d61626572747572612e65732c444e532e333d616365626f2e65732c444e532e343d61636568756368652e65732c444e532e353d6163656974756e612e65732c444e532e363d61686967616c2e65732c444e532e373d616c61676f6e64656c72696f2e65732c444e532e383d616c636f6c6c6172696e2e65732c444e532e393d6179746f616c62616c612e65732c444e532e31303d6179746f616c63616e746172612e65732c444e532e31313d616c637565736361722e65732c444e532e31323d616c64656163656e74656e6572612e65732c444e532e31333d616c64656164656c63616e6f2e65732c444e532e31343d6c61616c64656164656c6f626973706f2e65732c444e532e31353d616c6465616e7565766164656c61766572612e65732c444e532e31363d616c6465616e7565766164656c63616d696e6f2e65732c444e532e31373d616c64656875656c6164656c6a657274652e65732c444e532e31383d6179746f616c69612e65732c444e532e31393d616c69736564612e65732c444e532e32303d616c6d6172617a2e65732c444e532e32313d616c6d6f686172696e2e65732c444e532e32323d6179746f6172726f796f64656c616c757a2e65732c444e532e32333d6172726f796f6d6f6c696e6f732e65732c444e532e32343d6172726f796f6d6f6c696e6f7364656c61766572612e65732c444e532e32353d62616e6f7364656d6f6e74656d61796f722e65732c444e532e32363d6261727261646f2e65732c444e532e32373d62656c76697364656d6f6e726f792e65732c444e532e32383d62656e71756572656e6369612e65732c444e532e32393d626572726f63616c656a6f2e65732c444e532e33303d6265727a6f63616e612e65732c444e532e33313d626f686f6e616c646569626f722e65732c444e532e33323d626f74696a612e65732c444e532e33333d62726f7a61732e65732c444e532e33343d636162616e617364656c63617374696c6c6f2e65732c444e532e33353d636162657a6162656c6c6f73612e65732c444e532e33363d636162657a75656c6164656c76616c6c652e65732c444e532e33373d6361627265726f2e65732c444e532e33383d636163686f7272696c6c612e65732c444e532e33393d636164616c736f2e65732c444e532e34303d63616c7a6164696c6c612e65732c444e532e34313d63616d696e6f6d6f726973636f2e65732c444e532e34323d63616d70696c6c6f646564656c6569746f73612e65732c444e532e34333d63616d706f6c756761722e65732c444e532e34343d63616e616d65726f2e65732c444e532e34353d63616e61766572616c2e65732c444e532e34363d63617262616a6f2e65732c444e532e34373d6361726361626f736f2e65732c444e532e34383d63617272617363616c656a6f2e65732c444e532e34393d63617361726465636163657265732e65732c444e532e35303d6361736172646570616c6f6d65726f2e65732c444e532e35313d6361736172657364656c61736875726465732e65732c444e532e35323d63617361736465646f6e616e746f6e696f2e65732c444e532e35333d63617361736465646f6e676f6d657a2e65732c444e532e35343d636173617364656c63617374616e61722e65732c444e532e35353d636173617364656c6d6f6e74652e65732c444e532e35363d636173617364656d696c6c616e2e65732c444e532e35373d636173617364656d697261766574652e65732c444e532e35383d6361736174656a6164612e65732c444e532e35393d636173696c6c61736465636f7269612e65732c444e532e36303d63617374616e6172646569626f722e65732c444e532e36313d6365636c6176696e2e65732c444e532e36323d636564696c6c6f2e65732c444e532e36333d636572657a6f2e65732c444e532e36343d63696c6c65726f732e65732c444e532e36353d636f6c6c61646f2e65732c444e532e36363d636f6e71756973746164656c617369657272612e65732c444e532e36373d636f7269612e65732c444e532e36383d637561636f73646579757374652e65732c444e532e36393d6c6163756d6272652e65732c444e532e37303d64656c6569746f73612e65732c444e532e37313d64657363617267616d617269612e65732c444e532e37323d656c6a61732e65732c444e532e37333d657363757269616c2e65732c444e532e37343d667265736e65646f736f646569626f722e65732c444e532e37353d67616c697374656f2e65732c444e532e37363d6761726369617a2e65732c444e532e37373d6c6167617267616e74612e65732c444e532e37383d67617267616e74616c616f6c6c612e65732c444e532e37393d67617267616e74696c6c612e65732c444e532e38303d67617267756572612e65732c444e532e38313d676172726f76696c6c61736465616c636f6e657461722e65732c444e532e38323d67617276696e2e65732c444e532e38333d676174612e65732c444e532e38343d6179746f656c676f72646f2e65732c444e532e38353d6c616772616e6a612e65732c444e532e38363d6c616772616e6a6164656772616e6164696c6c612e65732c444e532e38373d6179756e74616d69656e746f646567756164616c7570652e65732c444e532e38383d6775696a6f6465636f7269612e65732c444e532e38393d6775696a6f646567616c697374656f2e65732c444e532e39303d6775696a6f64656772616e6164696c6c612e65732c444e532e39313d6775696a6f646573616e7461626172626172612e65732c444e532e39323d6865726775696a75656c612e65732c444e532e39333d6865726e616e706572657a2e65732c444e532e39343d686572726572616465616c63616e746172612e65732c444e532e39353d68657272657275656c612e65732c444e532e39363d6865727661732e65732c444e532e39373d686967756572612e65732c444e532e39383d68696e6f6a616c2e65732c444e532e39393d686f6c67756572612e65732c444e532e3130303d686f796f732e65732c444e532e3130313d6875656c6167612e65732c444e532e3130323d6962616865726e616e646f2e65732c444e532e3130333d6a6172616963656a6f2e65732c444e532e3130343d6a617261697a64656c61766572612e65732c444e532e3130353d6a6172616e64696c6c6164656c61766572612e65732c444e532e3130363d6a6172696c6c612e65732c444e532e3130373d6a657274652e65732c444e532e3130383d6c616472696c6c61722e65732c444e532e3130393d6c6f67726f73616e2e65732c444e532e3131303d6c6f73617264656c61766572612e65732c444e532e3131313d6d6164726967616c656a6f2e65732c444e532e3131323d6d6164726967616c64656c61766572612e65732c444e532e3131333d6d6164726f6e6572612e65732c444e532e3131343d6d616a616461732e65732c444e532e3131353d6d616c706172746964616465636163657265732e65732c444e532e3131363d6d616c706172746964616465706c6173656e6369612e65732c444e532e3131373d6d617263686167617a2e65732c444e532e3131383d6d6174616465616c63616e746172612e65732c444e532e3131393d6d656d6272696f2e65732c444e532e3132303d6d65736173646569626f722e65732c444e532e3132313d6d69616a616461732e65732c444e532e3132323d6d696c6c616e65732e65732c444e532e3132333d6d69726162656c2e65732c444e532e3132343d6d6f686564617364656772616e6164696c6c612e65732c444e532e3132353d6d6f6e726f792e65732c444e532e3132363d6d6f6e74616e6368657a2e65732c444e532e3132373d6d6f6e74656865726d6f736f2e65732c444e532e3132383d6d6f72616c656a612e65732c444e532e3132393d6d6f7263696c6c6f2e65732c444e532e3133303d6e617661636f6e63656a6f2e65732c444e532e3133313d6e6176616c76696c6c6172646569626f722e65732c444e532e3133323d6e6176616c6d6f72616c64656c616d6174612e65732c444e532e3133333d6e6176617364656c6d6164726f6e6f2e65732c444e532e3133343d6e6176617472617369657272612e65732c444e532e3133353d6e6176657a75656c61732e65732c444e532e3133363d6e756e6f6d6f72616c2e65732c444e532e3133373d6f6c6976616465706c6173656e6369612e65732c444e532e3133383d70616c6f6d65726f2e65732c444e532e3133393d70617361726f6e64656c61766572612e65732c444e532e3134303d706564726f736f64656163696d2e65732c444e532e3134313d706572616c65646164656c616d6174612e65732c444e532e3134323d706572616c656461646573616e726f6d616e2e65732c444e532e3134333d706572616c657364656c70756572746f2e65732c444e532e3134343d7065736375657a612e65732c444e532e3134353d6c6170657367612e65732c444e532e3134363d70696564726173616c6261732e65732c444e532e3134373d70696e6f6672616e71756561646f2e65732c444e532e3134383d70696f726e616c2e65732c444e532e3134393d706c6173656e7a75656c612e65732c444e532e3135303d706f7274616a652e65732c444e532e3135313d706f7274657a75656c6f2e65732c444e532e3135323d706f7a75656c6f64657a61727a6f6e2e65732c444e532e3135333d707565626c6f6e7565766f64656d6972616d6f6e7465732e65732c444e532e3135343d70756572746f646573616e74616372757a2e65732c444e532e3135353d7265626f6c6c61722e65732c444e532e3135363d72696f6c6f626f732e65732c444e532e3135373d726f626c6564696c6c6f6465676174612e65732c444e532e3135383d726f626c6564696c6c6f64656c61766572612e65732c444e532e3135393d726f626c6564696c6c6f64657472756a696c6c6f2c444e532e3136303d726f626c65646f6c6c616e6f2e65732c444e532e3136313d726f6d616e676f72646f2e65732c444e532e3136323d7275616e65732e65732c444e532e3136333d73616c6f72696e6f2e65732c444e532e3136343d73616c7661746965727261646573616e746961676f2e65732c444e532e3136353d73616e6d617274696e646574726576656a6f2e65732c444e532e3136363d6179746f73616e7461616e612e65732c444e532e3136373d73616e74616372757a64656c617369657272612e65732c444e532e3136383d73616e74616372757a646570616e69616775612e65732c444e532e3136393d73616e74616d6172746164656d6167617363612e65732c444e532e3137303d73616e746961676f64656c63616d706f2e65732c444e532e3137313d73616e746962616e657a656c616c746f2e65732c444e532e3137323d73616e746962616e657a656c62616a6f2e65732c444e532e3137333d736175636564696c6c612e65732c444e532e3137343d7365677572616465746f726f2e65732c444e532e3137353d736572726164696c6c612e65732c444e532e3137363d73657272656a6f6e2e65732c444e532e3137373d73696572726164656675656e7465732e65732c444e532e3137383d74616c6176616e2e65732c444e532e3137393d74616c6176657275656c6164656c61766572612e65732c444e532e3138303d74616c617975656c612e65732c444e532e3138313d74656a65646164657469657461722e65732c444e532e3138323d746f72696c2e65732c444e532e3138333d746f726e6176616361732e65732c444e532e3138343d6179746f656c746f726e6f2e65732c444e532e3138353d746f72726563696c6c6164656c6f73616e67656c65732e65732c444e532e3138363d746f72726563696c6c617364656c6174696573612e65732c444e532e3138373d746f7272656465646f6e6d696775656c2e65732c444e532e3138383d746f727265646573616e74616d617269612e65732c444e532e3138393d746f7272656a6f6e656c727562696f2e65732c444e532e3139303d746f7272656a6f6e63696c6c6f2e65732c444e532e3139313d746f7272656d656e67612e65732c444e532e3139323d746f7272656d6f6368612e65732c444e532e3139333d746f7272656f7267617a2e65732c444e532e3139343d746f7272657175656d6164612e65732c444e532e3139353d76616c64617374696c6c61732e65732c444e532e3139363d76616c646563616e6173646574616a6f2e65732c444e532e3139373d76616c64656675656e7465732e65732c444e532e3139383d76616c646568756e6361722e65732c444e532e3139393d76616c6465696e69676f732e65732c444e532e3230303d76616c64656c6163617361646574616a6f2e65732c444e532e3230313d76616c64656d6f72616c65732e65732c444e532e3230323d76616c64656f626973706f2e65732c444e532e3230333d76616c646573616c6f722e65732c444e532e3230343d76616c72696f2e65732c444e532e3230353d76616c656e6369616465616c63616e746172612e65732c444e532e3230363d76616c766572646564656c61766572612e65732c444e532e3230373d76616c766572646564656c667265736e6f2e65732c444e532e3230383d766567617669616e612e65732c444e532e3230393d7669616e64617264656c61766572612e65732c444e532e3231303d76696c6c6164656c63616d706f2e65732c444e532e3231313d76696c6c6164656c7265792e65732c444e532e3231323d76696c6c616d65736961732e65732c444e532e3231333d76696c6c616d69656c2e65732c444e532e3231343d76696c6c616e7565766164656c617369657272612e65732c444e532e3231353d76696c6c617264656c706564726f736f2e65732c444e532e3231363d76696c6c61726465706c6173656e6369612e65732c444e532e3231373d76696c6c61736275656e61736465676174612e65732c444e532e3231383d7a61727a6164656772616e6164696c6c612e65732c444e532e3231393d7a61727a6164656d6f6e74616e6368657a2e65732c444e532e3232303d7a61727a616c616d61796f722e65732c444e532e3232313d7a6f726974612e65732c444e532e3232323d726f73616c656a6f2e65732c444e532e3232333d766567617669616e612e65732c444e532e3232343d616c61676f6e64656c72696f2e65732c444e532e3232353d7469657461722e65732c444e532e3232363d76616c646573616c6f722e65732c444e532e3232373d6e6176617472617369657272612e65732c444e532e3232383d7269766572616465667265736e65646f73612e65732c444e532e3232393d656c6d73616e67696c2e65732c444e532e3233303d74616a6f73616c6f722e65732c444e532e3233313d76616c6c65616d62726f7a2e65732c444e532e3233323d6d616e636f6d756e6964616476616c6c6564656c616c61676f6e2e65732c444e532e3233333d6d616e636f6d756e6964616476616c6c6564656c6a657274652e65732c444e532e3233343d6d616e636f6d756e696461647665676173616c7461732e65732c444e532e3233353d6d616e636f6d756e6964616464656c61766572612e65732c444e532e3233363d6d616e636f6d756e696461647a6f6e6163656e74726f2e65732c444e532e3233373d76696c6c7565726361732d69626f7265732d6a6172612e65732c444e532e3233383d7777772e6162616469612e65732c444e532e3233393d7777772e61626572747572612e65732c444e532e3234303d7777772e616365626f2e65732c444e532e3234313d7777772e61636568756368652e65732c444e532e3234323d7777772e6163656974756e612e65732c444e532e3234333d7777772e61686967616c2e65732c444e532e3234343d7777772e616c61676f6e64656c72696f2e65732c444e532e3234353d7777772e616c636f6c6c6172696e2e65732c444e532e3234363d7777772e6179746f616c62616c612e65732c444e532e3234373d7777772e6179746f616c63616e746172612e65732c444e532e3234383d7777772e616c637565736361722e65732c444e532e3234393d7777772e616c64656163656e74656e6572612e65732c444e532e3235303d7777772e616c64656164656c63616e6f2e65732c444e532e3235313d7777772e6c61616c64656164656c6f626973706f2e65732c444e532e3235323d7777772e616c6465616e7565766164656c61766572612e65732c444e532e3235333d7777772e616c6465616e7565766164656c63616d696e6f2e65732c444e532e3235343d7777772e616c64656875656c6164656c6a657274652e65732c444e532e3235353d7777772e6179746f616c69612e65732c444e532e3235363d7777772e616c69736564612e65732c444e532e3235373d7777772e616c6d6172617a2e65732c444e532e3235383d7777772e616c6d6f686172696e2e65732c444e532e3235393d7777772e6179746f6172726f796f64656c616c757a2e65732c444e532e3236303d7777772e6172726f796f6d6f6c696e6f732e65732c444e532e3236313d7777772e6172726f796f6d6f6c696e6f7364656c61766572612e65732c444e532e3236323d7777772e62616e6f7364656d6f6e74656d61796f722e65732c444e532e3236333d7777772e6261727261646f2e65732c444e532e3236343d7777772e62656c76697364656d6f6e726f792e65732c444e532e3236353d7777772e62656e71756572656e6369612e65732c444e532e3236363d7777772e626572726f63616c656a6f2e65732c444e532e3236373d7777772e6265727a6f63616e612e65732c444e532e3236383d7777772e626f686f6e616c646569626f722e65732c444e532e3236393d7777772e626f74696a612e65732c444e532e3237303d7777772e62726f7a61732e65732c444e532e3237313d7777772e636162616e617364656c63617374696c6c6f2e65732c444e532e3237323d7777772e636162657a6162656c6c6f73612e65732c444e532e3237333d7777772e636162657a75656c6164656c76616c6c652e65732c444e532e3237343d7777772e6361627265726f2e65732c444e532e3237353d7777772e636163686f7272696c6c612e65732c444e532e3237363d7777772e636164616c736f2e65732c444e532e3237373d7777772e63616c7a6164696c6c612e65732c444e532e3237383d7777772e63616d696e6f6d6f726973636f2e65732c444e532e3237393d7777772e63616d70696c6c6f646564656c6569746f73612e65732c444e532e3238303d7777772e63616d706f6c756761722e65732c444e532e3238313d7777772e63616e616d65726f2e65732c444e532e3238323d7777772e63616e61766572616c2e65732c444e532e3238333d7777772e63617262616a6f2e65732c444e532e3238343d7777772e6361726361626f736f2e65732c444e532e3238353d7777772e63617272617363616c656a6f2e65732c444e532e3238363d7777772e63617361726465636163657265732e65732c444e532e3238373d7777772e6361736172646570616c6f6d65726f2e65732c444e532e3238383d7777772e6361736172657364656c61736875726465732e65732c444e532e3238393d7777772e63617361736465646f6e616e746f6e696f2e65732c444e532e3239303d7777772e63617361736465646f6e676f6d657a2e65732c444e532e3239313d7777772e636173617364656c63617374616e61722e65732c444e532e3239323d7777772e636173617364656c6d6f6e74652e65732c444e532e3239333d7777772e636173617364656d696c6c616e2e65732c444e532e3239343d7777772e636173617364656d697261766574652e65732c444e532e3239353d7777772e6361736174656a6164612e65732c444e532e3239363d7777772e636173696c6c61736465636f7269612e65732c444e532e3239373d7777772e63617374616e6172646569626f722e65732c444e532e3239383d7777772e6365636c6176696e2e65732c444e532e3239393d7777772e636564696c6c6f2e65732c444e532e3330303d7777772e636572657a6f2e65732c444e532e3330313d7777772e63696c6c65726f732e65732c444e532e3330323d7777772e636f6c6c61646f2e65732c444e532e3330333d7777772e636f6e71756973746164656c617369657272612e65732c444e532e3330343d7777772e636f7269612e65732c444e532e3330353d7777772e637561636f73646579757374652e65732c444e532e3330363d7777772e6c6163756d6272652e65732c444e532e3330373d7777772e64656c6569746f73612e65732c444e532e3330383d7777772e64657363617267616d617269612e65732c444e532e3330393d7777772e656c6a61732e65732c444e532e3331303d7777772e657363757269616c2e65732c444e532e3331313d7777772e667265736e65646f736f646569626f722e65732c444e532e3331323d7777772e67616c697374656f2e65732c444e532e3331333d7777772e6761726369617a2e65732c444e532e3331343d7777772e6c6167617267616e74612e65732c444e532e3331353d7777772e67617267616e74616c616f6c6c612e65732c444e532e3331363d7777772e67617267616e74696c6c612e65732c444e532e3331373d7777772e67617267756572612e65732c444e532e3331383d7777772e676172726f76696c6c61736465616c636f6e657461722e65732c444e532e3331393d7777772e67617276696e2e65732c444e532e3332303d7777772e676174612e65732c444e532e3332313d7777772e6179746f656c676f72646f2e65732c444e532e3332323d7777772e6c616772616e6a612e65732c444e532e3332333d7777772e6c616772616e6a6164656772616e6164696c6c612e65732c444e532e3332343d7777772e6179756e74616d69656e746f646567756164616c7570652e65732c444e532e3332353d7777772e6775696a6f6465636f7269612e65732c444e532e3332363d7777772e6775696a6f646567616c697374656f2e65732c444e532e3332373d7777772e6775696a6f64656772616e6164696c6c612e65732c444e532e3332383d7777772e6775696a6f646573616e7461626172626172612e65732c444e532e3332393d7777772e6865726775696a75656c612e65732c444e532e3333303d7777772e6865726e616e706572657a2e65732c444e532e3333313d7777772e686572726572616465616c63616e746172612e65732c444e532e3333323d7777772e68657272657275656c612e65732c444e532e3333333d7777772e6865727661732e65732c444e532e3333343d7777772e686967756572612e65732c444e532e3333353d7777772e68696e6f6a616c2e65732c444e532e3333363d7777772e686f6c67756572612e65732c444e532e3333373d7777772e686f796f732e65732c444e532e3333383d7777772e6875656c6167612e65732c444e532e3333393d7777772e6962616865726e616e646f2e65732c444e532e3334303d7777772e6a6172616963656a6f2e65732c444e532e3334313d7777772e6a617261697a64656c61766572612e65732c444e532e3334323d7777772e6a6172616e64696c6c6164656c61766572612e65732c444e532e3334333d7777772e6a6172696c6c612e65732c444e532e3334343d7777772e6a657274652e65732c444e532e3334353d7777772e6c616472696c6c61722e65732c444e532e3334363d7777772e6c6f67726f73616e2e65732c444e532e3334373d7777772e6c6f73617264656c61766572612e65732c444e532e3334383d7777772e6d6164726967616c656a6f2e65732c444e532e3334393d7777772e6d6164726967616c64656c61766572612e65732c444e532e3335303d7777772e6d6164726f6e6572612e65732c444e532e3335313d7777772e6d616a616461732e65732c444e532e3335323d7777772e6d616c706172746964616465636163657265732e65732c444e532e3335333d7777772e6d616c706172746964616465706c6173656e6369612e65732c444e532e3335343d7777772e6d617263686167617a2e65732c444e532e3335353d7777772e6d6174616465616c63616e746172612e65732c444e532e3335363d7777772e6d656d6272696f2e65732c444e532e3335373d7777772e6d65736173646569626f722e65732c444e532e3335383d7777772e6d69616a616461732e65732c444e532e3335393d7777772e6d696c6c616e65732e65732c444e532e3336303d7777772e6d69726162656c2e65732c444e532e3336313d7777772e6d6f686564617364656772616e6164696c6c612e65732c444e532e3336323d7777772e6d6f6e726f792e65732c444e532e3336333d7777772e6d6f6e74616e6368657a2e65732c444e532e3336343d7777772e6d6f6e74656865726d6f736f2e65732c444e532e3336353d7777772e6d6f72616c656a612e65732c444e532e3336363d7777772e6d6f7263696c6c6f2e65732c444e532e3336373d7777772e6e617661636f6e63656a6f2e65732c444e532e3336383d7777772e6e6176616c76696c6c6172646569626f722e65732c444e532e3336393d7777772e6e6176616c6d6f72616c64656c616d6174612e65732c444e532e3337303d7777772e6e6176617364656c6d6164726f6e6f2e65732c444e532e3337313d7777772e6e6176617472617369657272612e65732c444e532e3337323d7777772e6e6176657a75656c61732e65732c444e532e3337333d7777772e6e756e6f6d6f72616c2e65732c444e532e3337343d7777772e6f6c6976616465706c6173656e6369612e65732c444e532e3337353d7777772e70616c6f6d65726f2e65732c444e532e3337363d7777772e70617361726f6e64656c61766572612e65732c444e532e3337373d7777772e706564726f736f64656163696d2e65732c444e532e3337383d7777772e706572616c65646164656c616d6174612e65732c444e532e3337393d7777772e706572616c656461646573616e726f6d616e2e65732c444e532e3338303d7777772e706572616c657364656c70756572746f2e65732c444e532e3338313d7777772e7065736375657a612e65732c444e532e3338323d7777772e6c6170657367612e65732c444e532e3338333d7777772e70696564726173616c6261732e65732c444e532e3338343d7777772e70696e6f6672616e71756561646f2e65732c444e532e3338353d7777772e70696f726e616c2e65732c444e532e3338363d7777772e706c6173656e7a75656c612e65732c444e532e3338373d7777772e706f7274616a652e65732c444e532e3338383d7777772e706f7274657a75656c6f2e65732c444e532e3338393d7777772e706f7a75656c6f64657a61727a6f6e2e65732c444e532e3339303d7777772e707565626c6f6e7565766f64656d6972616d6f6e7465732e65732c444e532e3339313d7777772e70756572746f646573616e74616372757a2e65732c444e532e3339323d7777772e7265626f6c6c61722e65732c444e532e3339333d7777772e72696f6c6f626f732e65732c444e532e3339343d7777772e726f626c6564696c6c6f6465676174612e65732c444e532e3339353d7777772e726f626c6564696c6c6f64656c61766572612e65732c444e532e3339363d7777772e726f626c6564696c6c6f64657472756a696c6c6f2c444e532e3339373d7777772e726f626c65646f6c6c616e6f2e65732c444e532e3339383d7777772e726f6d616e676f72646f2e65732c444e532e3339393d7777772e7275616e65732e65732c444e532e3430303d7777772e73616c6f72696e6f2e65732c444e532e3430313d7777772e73616c7661746965727261646573616e746961676f2e65732c444e532e3430323d7777772e73616e6d617274696e646574726576656a6f2e65732c444e532e3430333d7777772e6179746f73616e7461616e612e65732c444e532e3430343d7777772e73616e74616372757a64656c617369657272612e65732c444e532e3430353d7777772e73616e74616372757a646570616e69616775612e65732c444e532e3430363d7777772e73616e74616d6172746164656d6167617363612e65732c444e532e3430373d7777772e73616e746961676f64656c63616d706f2e65732c444e532e3430383d7777772e73616e746962616e657a656c616c746f2e65732c444e532e3430393d7777772e73616e746962616e657a656c62616a6f2e65732c444e532e3431303d7777772e736175636564696c6c612e65732c444e532e3431313d7777772e7365677572616465746f726f2e65732c444e532e3431323d7777772e736572726164696c6c612e65732c444e532e3431333d7777772e73657272656a6f6e2e65732c444e532e3431343d7777772e73696572726164656675656e7465732e65732c444e532e3431353d7777772e74616c6176616e2e65732c444e532e3431363d7777772e74616c6176657275656c6164656c61766572612e65732c444e532e3431373d7777772e74616c617975656c612e65732c444e532e3431383d7777772e74656a65646164657469657461722e65732c444e532e3431393d7777772e746f72696c2e65732c444e532e3432303d7777772e746f726e6176616361732e65732c444e532e3432313d7777772e6179746f656c746f726e6f2e65732c444e532e3432323d7777772e746f72726563696c6c6164656c6f73616e67656c65732e65732c444e532e3432333d7777772e746f72726563696c6c617364656c6174696573612e65732c444e532e3432343d7777772e746f7272656465646f6e6d696775656c2e65732c444e532e3432353d7777772e746f727265646573616e74616d617269612e65732c444e532e3432363d7777772e746f7272656a6f6e656c727562696f2e65732c444e532e3432373d7777772e746f7272656a6f6e63696c6c6f2e65732c444e532e3432383d7777772e746f7272656d656e67612e65732c444e532e3432393d7777772e746f7272656d6f6368612e65732c444e532e3433303d7777772e746f7272656f7267617a2e65732c444e532e3433313d7777772e746f7272657175656d6164612e65732c444e532e3433323d7777772e76616c64617374696c6c61732e65732c444e532e3433333d7777772e76616c646563616e6173646574616a6f2e65732c444e532e3433343d7777772e76616c64656675656e7465732e65732c444e532e3433353d7777772e76616c646568756e6361722e65732c444e532e3433363d7777772e76616c6465696e69676f732e65732c444e532e3433373d7777772e76616c64656c6163617361646574616a6f2e65732c444e532e3433383d7777772e76616c64656d6f72616c65732e65732c444e532e3433393d7777772e76616c64656f626973706f2e65732c444e532e3434303d7777772e76616c646573616c6f722e65732c444e532e3434313d7777772e76616c72696f2e65732c444e532e3434323d7777772e76616c656e6369616465616c63616e746172612e65732c444e532e3434333d7777772e76616c766572646564656c61766572612e65732c444e532e3434343d7777772e76616c766572646564656c667265736e6f2e65732c444e532e3434353d7777772e766567617669616e612e65732c444e532e3434363d7777772e7669616e64617264656c61766572612e65732c444e532e3434373d7777772e76696c6c6164656c63616d706f2e65732c444e532e3434383d7777772e76696c6c6164656c7265792e65732c444e532e3434393d7777772e76696c6c616d65736961732e65732c444e532e3435303d7777772e76696c6c616d69656c2e65732c444e532e3435313d7777772e76696c6c616e7565766164656c617369657272612e65732c444e532e3435323d7777772e76696c6c617264656c706564726f736f2e65732c444e532e3435333d7777772e76696c6c61726465706c6173656e6369612e65732c444e532e3435343d7777772e76696c6c61736275656e61736465676174612e65732c444e532e3435353d7777772e7a61727a6164656772616e6164696c6c612e65732c444e532e3435363d7777772e7a61727a6164656d6f6e74616e6368657a2e65732c444e532e3435373d7777772e7a61727a616c616d61796f722e65732c444e532e3435383d7777772e7a6f726974612e65732c444e532e3435393d7777772e726f73616c656a6f2e65732c444e532e3436303d7777772e766567617669616e612e65732c444e532e3436313d7777772e616c61676f6e64656c72696f2e65732c444e532e3436323d7777772e7469657461722e65732c444e532e3436333d7777772e76616c646573616c6f722e65732c444e532e3436343d7777772e6e6176617472617369657272612e65732c444e532e3436353d7777772e7269766572616465667265736e65646f73612e65732c444e532e3436363d7777772e656c6d73616e67696c2e65732c444e532e3436373d7777772e74616a6f73616c6f722e65732c444e532e3436383d7777772e76616c6c65616d62726f7a2e65732c444e532e3436393d7777772e6d616e636f6d756e6964616476616c6c6564656c616c61676f6e2e65732c444e532e3437303d7777772e6d616e636f6d756e6964616476616c6c6564656c6a657274652e65732c444e532e3437313d7777772e6d616e636f6d756e696461647665676173616c7461732e65732c444e532e3437323d7777772e6d616e636f6d756e6964616464656c61766572612e65732c444e532e3437333d7777772e6d616e636f6d756e696461647a6f6e6163656e74726f2e65732c444e532e3437343d7777772e76696c6c7565726361732d69626f7265732d6a6172612e6573", - .str = - "2.5.29.17=#1382304b444e532e313d6162616469612e65732c444e532e323d61626572747572612e65732c444e532e333d616365626f2e65732c444e532e343d61636568756368652e65732c444e532e353d6163656974756e612e65732c444e532e363d61686967616c2e65732c444e532e373d616c61676f6e64656c72696f2e65732c444e532e383d616c636f6c6c6172696e2e65732c444e532e393d6179746f616c62616c612e65732c444e532e31303d6179746f616c63616e746172612e65732c444e532e31313d616c637565736361722e65732c444e532e31323d616c64656163656e74656e6572612e65732c444e532e31333d616c64656164656c63616e6f2e65732c444e532e31343d6c61616c64656164656c6f626973706f2e65732c444e532e31353d616c6465616e7565766164656c61766572612e65732c444e532e31363d616c6465616e7565766164656c63616d696e6f2e65732c444e532e31373d616c64656875656c6164656c6a657274652e65732c444e532e31383d6179746f616c69612e65732c444e532e31393d616c69736564612e65732c444e532e32303d616c6d6172617a2e65732c444e532e32313d616c6d6f686172696e2e65732c444e532e32323d6179746f6172726f796f64656c616c757a2e65732c444e532e32333d6172726f796f6d6f6c696e6f732e65732c444e532e32343d6172726f796f6d6f6c696e6f7364656c61766572612e65732c444e532e32353d62616e6f7364656d6f6e74656d61796f722e65732c444e532e32363d6261727261646f2e65732c444e532e32373d62656c76697364656d6f6e726f792e65732c444e532e32383d62656e71756572656e6369612e65732c444e532e32393d626572726f63616c656a6f2e65732c444e532e33303d6265727a6f63616e612e65732c444e532e33313d626f686f6e616c646569626f722e65732c444e532e33323d626f74696a612e65732c444e532e33333d62726f7a61732e65732c444e532e33343d636162616e617364656c63617374696c6c6f2e65732c444e532e33353d636162657a6162656c6c6f73612e65732c444e532e33363d636162657a75656c6164656c76616c6c652e65732c444e532e33373d6361627265726f2e65732c444e532e33383d636163686f7272696c6c612e65732c444e532e33393d636164616c736f2e65732c444e532e34303d63616c7a6164696c6c612e65732c444e532e34313d63616d696e6f6d6f726973636f2e65732c444e532e34323d63616d70696c6c6f646564656c6569746f73612e65732c444e532e34333d63616d706f6c756761722e65732c444e532e34343d63616e616d65726f2e65732c444e532e34353d63616e61766572616c2e65732c444e532e34363d63617262616a6f2e65732c444e532e34373d6361726361626f736f2e65732c444e532e34383d63617272617363616c656a6f2e65732c444e532e34393d63617361726465636163657265732e65732c444e532e35303d6361736172646570616c6f6d65726f2e65732c444e532e35313d6361736172657364656c61736875726465732e65732c444e532e35323d63617361736465646f6e616e746f6e696f2e65732c444e532e35333d63617361736465646f6e676f6d657a2e65732c444e532e35343d636173617364656c63617374616e61722e65732c444e532e35353d636173617364656c6d6f6e74652e65732c444e532e35363d636173617364656d696c6c616e2e65732c444e532e35373d636173617364656d697261766574652e65732c444e532e35383d6361736174656a6164612e65732c444e532e35393d636173696c6c61736465636f7269612e65732c444e532e36303d63617374616e6172646569626f722e65732c444e532e36313d6365636c6176696e2e65732c444e532e36323d636564696c6c6f2e65732c444e532e36333d636572657a6f2e65732c444e532e36343d63696c6c65726f732e65732c444e532e36353d636f6c6c61646f2e65732c444e532e36363d636f6e71756973746164656c617369657272612e65732c444e532e36373d636f7269612e65732c444e532e36383d637561636f73646579757374652e65732c444e532e36393d6c6163756d6272652e65732c444e532e37303d64656c6569746f73612e65732c444e532e37313d64657363617267616d617269612e65732c444e532e37323d656c6a61732e65732c444e532e37333d657363757269616c2e65732c444e532e37343d667265736e65646f736f646569626f722e65732c444e532e37353d67616c697374656f2e65732c444e532e37363d6761726369617a2e65732c444e532e37373d6c6167617267616e74612e65732c444e532e37383d67617267616e74616c616f6c6c612e65732c444e532e37393d67617267616e74696c6c612e65732c444e532e38303d67617267756572612e65732c444e532e38313d676172726f76696c6c61736465616c636f6e657461722e65732c444e532e38323d67617276696e2e65732c444e532e38333d676174612e65732c444e532e38343d6179746f656c676f72646f2e65732c444e532e38353d6c616772616e6a612e65732c444e532e38363d6c616772616e6a6164656772616e6164696c6c612e65732c444e532e38373d6179756e74616d69656e746f646567756164616c7570652e65732c444e532e38383d6775696a6f6465636f7269612e65732c444e532e38393d6775696a6f646567616c697374656f2e65732c444e532e39303d6775696a6f64656772616e6164696c6c612e65732c444e532e39313d6775696a6f646573616e7461626172626172612e65732c444e532e39323d6865726775696a75656c612e65732c444e532e39333d6865726e616e706572657a2e65732c444e532e39343d686572726572616465616c63616e746172612e65732c444e532e39353d68657272657275656c612e65732c444e532e39363d6865727661732e65732c444e532e39373d686967756572612e65732c444e532e39383d68696e6f6a616c2e65732c444e532e39393d686f6c67756572612e65732c444e532e3130303d686f796f732e65732c444e532e3130313d6875656c6167612e65732c444e532e3130323d6962616865726e616e646f2e65732c444e532e3130333d6a6172616963656a6f2e65732c444e532e3130343d6a617261697a64656c61766572612e65732c444e532e3130353d6a6172616e64696c6c6164656c61766572612e65732c444e532e3130363d6a6172696c6c612e65732c444e532e3130373d6a657274652e65732c444e532e3130383d6c616472696c6c61722e65732c444e532e3130393d6c6f67726f73616e2e65732c444e532e3131303d6c6f73617264656c61766572612e65732c444e532e3131313d6d6164726967616c656a6f2e65732c444e532e3131323d6d6164726967616c64656c61766572612e65732c444e532e3131333d6d6164726f6e6572612e65732c444e532e3131343d6d616a616461732e65732c444e532e3131353d6d616c706172746964616465636163657265732e65732c444e532e3131363d6d616c706172746964616465706c6173656e6369612e65732c444e532e3131373d6d617263686167617a2e65732c444e532e3131383d6d6174616465616c63616e746172612e65732c444e532e3131393d6d656d6272696f2e65732c444e532e3132303d6d65736173646569626f722e65732c444e532e3132313d6d69616a616461732e65732c444e532e3132323d6d696c6c616e65732e65732c444e532e3132333d6d69726162656c2e65732c444e532e3132343d6d6f686564617364656772616e6164696c6c612e65732c444e532e3132353d6d6f6e726f792e65732c444e532e3132363d6d6f6e74616e6368657a2e65732c444e532e3132373d6d6f6e74656865726d6f736f2e65732c444e532e3132383d6d6f72616c656a612e65732c444e532e3132393d6d6f7263696c6c6f2e65732c444e532e3133303d6e617661636f6e63656a6f2e65732c444e532e3133313d6e6176616c76696c6c6172646569626f722e65732c444e532e3133323d6e6176616c6d6f72616c64656c616d6174612e65732c444e532e3133333d6e6176617364656c6d6164726f6e6f2e65732c444e532e3133343d6e6176617472617369657272612e65732c444e532e3133353d6e6176657a75656c61732e65732c444e532e3133363d6e756e6f6d6f72616c2e65732c444e532e3133373d6f6c6976616465706c6173656e6369612e65732c444e532e3133383d70616c6f6d65726f2e65732c444e532e3133393d70617361726f6e64656c61766572612e65732c444e532e3134303d706564726f736f64656163696d2e65732c444e532e3134313d706572616c65646164656c616d6174612e65732c444e532e3134323d706572616c656461646573616e726f6d616e2e65732c444e532e3134333d706572616c657364656c70756572746f2e65732c444e532e3134343d7065736375657a612e65732c444e532e3134353d6c6170657367612e65732c444e532e3134363d70696564726173616c6261732e65732c444e532e3134373d70696e6f6672616e71756561646f2e65732c444e532e3134383d70696f726e616c2e65732c444e532e3134393d706c6173656e7a75656c612e65732c444e532e3135303d706f7274616a652e65732c444e532e3135313d706f7274657a75656c6f2e65732c444e532e3135323d706f7a75656c6f64657a61727a6f6e2e65732c444e532e3135333d707565626c6f6e7565766f64656d6972616d6f6e7465732e65732c444e532e3135343d70756572746f646573616e74616372757a2e65732c444e532e3135353d7265626f6c6c61722e65732c444e532e3135363d72696f6c6f626f732e65732c444e532e3135373d726f626c6564696c6c6f6465676174612e65732c444e532e3135383d726f626c6564696c6c6f64656c61766572612e65732c444e532e3135393d726f626c6564696c6c6f64657472756a696c6c6f2c444e532e3136303d726f626c65646f6c6c616e6f2e65732c444e532e3136313d726f6d616e676f72646f2e65732c444e532e3136323d7275616e65732e65732c444e532e3136333d73616c6f72696e6f2e65732c444e532e3136343d73616c7661746965727261646573616e746961676f2e65732c444e532e3136353d73616e6d617274696e646574726576656a6f2e65732c444e532e3136363d6179746f73616e7461616e612e65732c444e532e3136373d73616e74616372757a64656c617369657272612e65732c444e532e3136383d73616e74616372757a646570616e69616775612e65732c444e532e3136393d73616e74616d6172746164656d6167617363612e65732c444e532e3137303d73616e746961676f64656c63616d706f2e65732c444e532e3137313d73616e746962616e657a656c616c746f2e65732c444e532e3137323d73616e746962616e657a656c62616a6f2e65732c444e532e3137333d736175636564696c6c612e65732c444e532e3137343d7365677572616465746f726f2e65732c444e532e3137353d736572726164696c6c612e65732c444e532e3137363d73657272656a6f6e2e65732c444e532e3137373d73696572726164656675656e7465732e65732c444e532e3137383d74616c6176616e2e65732c444e532e3137393d74616c6176657275656c6164656c61766572612e65732c444e532e3138303d74616c617975656c612e65732c444e532e3138313d74656a65646164657469657461722e65732c444e532e3138323d746f72696c2e65732c444e532e3138333d746f726e6176616361732e65732c444e532e3138343d6179746f656c746f726e6f2e65732c444e532e3138353d746f72726563696c6c6164656c6f73616e67656c65732e65732c444e532e3138363d746f72726563696c6c617364656c6174696573612e65732c444e532e3138373d746f7272656465646f6e6d696775656c2e65732c444e532e3138383d746f727265646573616e74616d617269612e65732c444e532e3138393d746f7272656a6f6e656c727562696f2e65732c444e532e3139303d746f7272656a6f6e63696c6c6f2e65732c444e532e3139313d746f7272656d656e67612e65732c444e532e3139323d746f7272656d6f6368612e65732c444e532e3139333d746f7272656f7267617a2e65732c444e532e3139343d746f7272657175656d6164612e65732c444e532e3139353d76616c64617374696c6c61732e65732c444e532e3139363d76616c646563616e6173646574616a6f2e65732c444e532e3139373d76616c64656675656e7465732e65732c444e532e3139383d76616c646568756e6361722e65732c444e532e3139393d76616c6465696e69676f732e65732c444e532e3230303d76616c64656c6163617361646574616a6f2e65732c444e532e3230313d76616c64656d6f72616c65732e65732c444e532e3230323d76616c64656f626973706f2e65732c444e532e3230333d76616c646573616c6f722e65732c444e532e3230343d76616c72696f2e65732c444e532e3230353d76616c656e6369616465616c63616e746172612e65732c444e532e3230363d76616c766572646564656c61766572612e65732c444e532e3230373d76616c766572646564656c667265736e6f2e65732c444e532e3230383d766567617669616e612e65732c444e532e3230393d7669616e64617264656c61766572612e65732c444e532e3231303d76696c6c6164656c63616d706f2e65732c444e532e3231313d76696c6c6164656c7265792e65732c444e532e3231323d76696c6c616d65736961732e65732c444e532e3231333d76696c6c616d69656c2e65732c444e532e3231343d76696c6c616e7565766164656c617369657272612e65732c444e532e3231353d76696c6c617264656c706564726f736f2e65732c444e532e3231363d76696c6c61726465706c6173656e6369612e65732c444e532e3231373d76696c6c61736275656e61736465676174612e65732c444e532e3231383d7a61727a6164656772616e6164696c6c612e65732c444e532e3231393d7a61727a6164656d6f6e74616e6368657a2e65732c444e532e3232303d7a61727a616c616d61796f722e65732c444e532e3232313d7a6f726974612e65732c444e532e3232323d726f73616c656a6f2e65732c444e532e3232333d766567617669616e612e65732c444e532e3232343d616c61676f6e64656c72696f2e65732c444e532e3232353d7469657461722e65732c444e532e3232363d76616c646573616c6f722e65732c444e532e3232373d6e6176617472617369657272612e65732c444e532e3232383d7269766572616465667265736e65646f73612e65732c444e532e3232393d656c6d73616e67696c2e65732c444e532e3233303d74616a6f73616c6f722e65732c444e532e3233313d76616c6c65616d62726f7a2e65732c444e532e3233323d6d616e636f6d756e6964616476616c6c6564656c616c61676f6e2e65732c444e532e3233333d6d616e636f6d756e6964616476616c6c6564656c6a657274652e65732c444e532e3233343d6d616e636f6d756e696461647665676173616c7461732e65732c444e532e3233353d6d616e636f6d756e6964616464656c61766572612e65732c444e532e3233363d6d616e636f6d756e696461647a6f6e6163656e74726f2e65732c444e532e3233373d76696c6c7565726361732d69626f7265732d6a6172612e65732c444e532e3233383d7777772e6162616469612e65732c444e532e3233393d7777772e61626572747572612e65732c444e532e3234303d7777772e616365626f2e65732c444e532e3234313d7777772e61636568756368652e65732c444e532e3234323d7777772e6163656974756e612e65732c444e532e3234333d7777772e61686967616c2e65732c444e532e3234343d7777772e616c61676f6e64656c72696f2e65732c444e532e3234353d7777772e616c636f6c6c6172696e2e65732c444e532e3234363d7777772e6179746f616c62616c612e65732c444e532e3234373d7777772e6179746f616c63616e746172612e65732c444e532e3234383d7777772e616c637565736361722e65732c444e532e3234393d7777772e616c64656163656e74656e6572612e65732c444e532e3235303d7777772e616c64656164656c63616e6f2e65732c444e532e3235313d7777772e6c61616c64656164656c6f626973706f2e65732c444e532e3235323d7777772e616c6465616e7565766164656c61766572612e65732c444e532e3235333d7777772e616c6465616e7565766164656c63616d696e6f2e65732c444e532e3235343d7777772e616c64656875656c6164656c6a657274652e65732c444e532e3235353d7777772e6179746f616c69612e65732c444e532e3235363d7777772e616c69736564612e65732c444e532e3235373d7777772e616c6d6172617a2e65732c444e532e3235383d7777772e616c6d6f686172696e2e65732c444e532e3235393d7777772e6179746f6172726f796f64656c616c757a2e65732c444e532e3236303d7777772e6172726f796f6d6f6c696e6f732e65732c444e532e3236313d7777772e6172726f796f6d6f6c696e6f7364656c61766572612e65732c444e532e3236323d7777772e62616e6f7364656d6f6e74656d61796f722e65732c444e532e3236333d7777772e6261727261646f2e65732c444e532e3236343d7777772e62656c76697364656d6f6e726f792e65732c444e532e3236353d7777772e62656e71756572656e6369612e65732c444e532e3236363d7777772e626572726f63616c656a6f2e65732c444e532e3236373d7777772e6265727a6f63616e612e65732c444e532e3236383d7777772e626f686f6e616c646569626f722e65732c444e532e3236393d7777772e626f74696a612e65732c444e532e3237303d7777772e62726f7a61732e65732c444e532e3237313d7777772e636162616e617364656c63617374696c6c6f2e65732c444e532e3237323d7777772e636162657a6162656c6c6f73612e65732c444e532e3237333d7777772e636162657a75656c6164656c76616c6c652e65732c444e532e3237343d7777772e6361627265726f2e65732c444e532e3237353d7777772e636163686f7272696c6c612e65732c444e532e3237363d7777772e636164616c736f2e65732c444e532e3237373d7777772e63616c7a6164696c6c612e65732c444e532e3237383d7777772e63616d696e6f6d6f726973636f2e65732c444e532e3237393d7777772e63616d70696c6c6f646564656c6569746f73612e65732c444e532e3238303d7777772e63616d706f6c756761722e65732c444e532e3238313d7777772e63616e616d65726f2e65732c444e532e3238323d7777772e63616e61766572616c2e65732c444e532e3238333d7777772e63617262616a6f2e65732c444e532e3238343d7777772e6361726361626f736f2e65732c444e532e3238353d7777772e63617272617363616c656a6f2e65732c444e532e3238363d7777772e63617361726465636163657265732e65732c444e532e3238373d7777772e6361736172646570616c6f6d65726f2e65732c444e532e3238383d7777772e6361736172657364656c61736875726465732e65732c444e532e3238393d7777772e63617361736465646f6e616e746f6e696f2e65732c444e532e3239303d7777772e63617361736465646f6e676f6d657a2e65732c444e532e3239313d7777772e636173617364656c63617374616e61722e65732c444e532e3239323d7777772e636173617364656c6d6f6e74652e65732c444e532e3239333d7777772e636173617364656d696c6c616e2e65732c444e532e3239343d7777772e636173617364656d697261766574652e65732c444e532e3239353d7777772e6361736174656a6164612e65732c444e532e3239363d7777772e636173696c6c61736465636f7269612e65732c444e532e3239373d7777772e63617374616e6172646569626f722e65732c444e532e3239383d7777772e6365636c6176696e2e65732c444e532e3239393d7777772e636564696c6c6f2e65732c444e532e3330303d7777772e636572657a6f2e65732c444e532e3330313d7777772e63696c6c65726f732e65732c444e532e3330323d7777772e636f6c6c61646f2e65732c444e532e3330333d7777772e636f6e71756973746164656c617369657272612e65732c444e532e3330343d7777772e636f7269612e65732c444e532e3330353d7777772e637561636f73646579757374652e65732c444e532e3330363d7777772e6c6163756d6272652e65732c444e532e3330373d7777772e64656c6569746f73612e65732c444e532e3330383d7777772e64657363617267616d617269612e65732c444e532e3330393d7777772e656c6a61732e65732c444e532e3331303d7777772e657363757269616c2e65732c444e532e3331313d7777772e667265736e65646f736f646569626f722e65732c444e532e3331323d7777772e67616c697374656f2e65732c444e532e3331333d7777772e6761726369617a2e65732c444e532e3331343d7777772e6c6167617267616e74612e65732c444e532e3331353d7777772e67617267616e74616c616f6c6c612e65732c444e532e3331363d7777772e67617267616e74696c6c612e65732c444e532e3331373d7777772e67617267756572612e65732c444e532e3331383d7777772e676172726f76696c6c61736465616c636f6e657461722e65732c444e532e3331393d7777772e67617276696e2e65732c444e532e3332303d7777772e676174612e65732c444e532e3332313d7777772e6179746f656c676f72646f2e65732c444e532e3332323d7777772e6c616772616e6a612e65732c444e532e3332333d7777772e6c616772616e6a6164656772616e6164696c6c612e65732c444e532e3332343d7777772e6179756e74616d69656e746f646567756164616c7570652e65732c444e532e3332353d7777772e6775696a6f6465636f7269612e65732c444e532e3332363d7777772e6775696a6f646567616c697374656f2e65732c444e532e3332373d7777772e6775696a6f64656772616e6164696c6c612e65732c444e532e3332383d7777772e6775696a6f646573616e7461626172626172612e65732c444e532e3332393d7777772e6865726775696a75656c612e65732c444e532e3333303d7777772e6865726e616e706572657a2e65732c444e532e3333313d7777772e686572726572616465616c63616e746172612e65732c444e532e3333323d7777772e68657272657275656c612e65732c444e532e3333333d7777772e6865727661732e65732c444e532e3333343d7777772e686967756572612e65732c444e532e3333353d7777772e68696e6f6a616c2e65732c444e532e3333363d7777772e686f6c67756572612e65732c444e532e3333373d7777772e686f796f732e65732c444e532e3333383d7777772e6875656c6167612e65732c444e532e3333393d7777772e6962616865726e616e646f2e65732c444e532e3334303d7777772e6a6172616963656a6f2e65732c444e532e3334313d7777772e6a617261697a64656c61766572612e65732c444e532e3334323d7777772e6a6172616e64696c6c6164656c61766572612e65732c444e532e3334333d7777772e6a6172696c6c612e65732c444e532e3334343d7777772e6a657274652e65732c444e532e3334353d7777772e6c616472696c6c61722e65732c444e532e3334363d7777772e6c6f67726f73616e2e65732c444e532e3334373d7777772e6c6f73617264656c61766572612e65732c444e532e3334383d7777772e6d6164726967616c656a6f2e65732c444e532e3334393d7777772e6d6164726967616c64656c61766572612e65732c444e532e3335303d7777772e6d6164726f6e6572612e65732c444e532e3335313d7777772e6d616a616461732e65732c444e532e3335323d7777772e6d616c706172746964616465636163657265732e65732c444e532e3335333d7777772e6d616c706172746964616465706c6173656e6369612e65732c444e532e3335343d7777772e6d617263686167617a2e65732c444e532e3335353d7777772e6d6174616465616c63616e746172612e65732c444e532e3335363d7777772e6d656d6272696f2e65732c444e532e3335373d7777772e6d65736173646569626f722e65732c444e532e3335383d7777772e6d69616a616461732e65732c444e532e3335393d7777772e6d696c6c616e65732e65732c444e532e3336303d7777772e6d69726162656c2e65732c444e532e3336313d7777772e6d6f686564617364656772616e6164696c6c612e65732c444e532e3336323d7777772e6d6f6e726f792e65732c444e532e3336333d7777772e6d6f6e74616e6368657a2e65732c444e532e3336343d7777772e6d6f6e74656865726d6f736f2e65732c444e532e3336353d7777772e6d6f72616c656a612e65732c444e532e3336363d7777772e6d6f7263696c6c6f2e65732c444e532e3336373d7777772e6e617661636f6e63656a6f2e65732c444e532e3336383d7777772e6e6176616c76696c6c6172646569626f722e65732c444e532e3336393d7777772e6e6176616c6d6f72616c64656c616d6174612e65732c444e532e3337303d7777772e6e6176617364656c6d6164726f6e6f2e65732c444e532e3337313d7777772e6e6176617472617369657272612e65732c444e532e3337323d7777772e6e6176657a75656c61732e65732c444e532e3337333d7777772e6e756e6f6d6f72616c2e65732c444e532e3337343d7777772e6f6c6976616465706c6173656e6369612e65732c444e532e3337353d7777772e70616c6f6d65726f2e65732c444e532e3337363d7777772e70617361726f6e64656c61766572612e65732c444e532e3337373d7777772e706564726f736f64656163696d2e65732c444e532e3337383d7777772e706572616c65646164656c616d6174612e65732c444e532e3337393d7777772e706572616c656461646573616e726f6d616e2e65732c444e532e3338303d7777772e706572616c657364656c70756572746f2e65732c444e532e3338313d7777772e7065736375657a612e65732c444e532e3338323d7777772e6c6170657367612e65732c444e532e3338333d7777772e70696564726173616c6261732e65732c444e532e3338343d7777772e70696e6f6672616e71756561646f2e65732c444e532e3338353d7777772e70696f726e616c2e65732c444e532e3338363d7777772e706c6173656e7a75656c612e65732c444e532e3338373d7777772e706f7274616a652e65732c444e532e3338383d7777772e706f7274657a75656c6f2e65732c444e532e3338393d7777772e706f7a75656c6f64657a61727a6f6e2e65732c444e532e3339303d7777772e707565626c6f6e7565766f64656d6972616d6f6e7465732e65732c444e532e3339313d7777772e70756572746f646573616e74616372757a2e65732c444e532e3339323d7777772e7265626f6c6c61722e65732c444e532e3339333d7777772e72696f6c6f626f732e65732c444e532e3339343d7777772e726f626c6564696c6c6f6465676174612e65732c444e532e3339353d7777772e726f626c6564696c6c6f64656c61766572612e65732c444e532e3339363d7777772e726f626c6564696c6c6f64657472756a696c6c6f2c444e532e3339373d7777772e726f626c65646f6c6c616e6f2e65732c444e532e3339383d7777772e726f6d616e676f72646f2e65732c444e532e3339393d7777772e7275616e65732e65732c444e532e3430303d7777772e73616c6f72696e6f2e65732c444e532e3430313d7777772e73616c7661746965727261646573616e746961676f2e65732c444e532e3430323d7777772e73616e6d617274696e646574726576656a6f2e65732c444e532e3430333d7777772e6179746f73616e7461616e612e65732c444e532e3430343d7777772e73616e74616372757a64656c617369657272612e65732c444e532e3430353d7777772e73616e74616372757a646570616e69616775612e65732c444e532e3430363d7777772e73616e74616d6172746164656d6167617363612e65732c444e532e3430373d7777772e73616e746961676f64656c63616d706f2e65732c444e532e3430383d7777772e73616e746962616e657a656c616c746f2e65732c444e532e3430393d7777772e73616e746962616e657a656c62616a6f2e65732c444e532e3431303d7777772e736175636564696c6c612e65732c444e532e3431313d7777772e7365677572616465746f726f2e65732c444e532e3431323d7777772e736572726164696c6c612e65732c444e532e3431333d7777772e73657272656a6f6e2e65732c444e532e3431343d7777772e73696572726164656675656e7465732e65732c444e532e3431353d7777772e74616c6176616e2e65732c444e532e3431363d7777772e74616c6176657275656c6164656c61766572612e65732c444e532e3431373d7777772e74616c617975656c612e65732c444e532e3431383d7777772e74656a65646164657469657461722e65732c444e532e3431393d7777772e746f72696c2e65732c444e532e3432303d7777772e746f726e6176616361732e65732c444e532e3432313d7777772e6179746f656c746f726e6f2e65732c444e532e3432323d7777772e746f72726563696c6c6164656c6f73616e67656c65732e65732c444e532e3432333d7777772e746f72726563696c6c617364656c6174696573612e65732c444e532e3432343d7777772e746f7272656465646f6e6d696775656c2e65732c444e532e3432353d7777772e746f727265646573616e74616d617269612e65732c444e532e3432363d7777772e746f7272656a6f6e656c727562696f2e65732c444e532e3432373d7777772e746f7272656a6f6e63696c6c6f2e65732c444e532e3432383d7777772e746f7272656d656e67612e65732c444e532e3432393d7777772e746f7272656d6f6368612e65732c444e532e3433303d7777772e746f7272656f7267617a2e65732c444e532e3433313d7777772e746f7272657175656d6164612e65732c444e532e3433323d7777772e76616c64617374696c6c61732e65732c444e532e3433333d7777772e76616c646563616e6173646574616a6f2e65732c444e532e3433343d7777772e76616c64656675656e7465732e65732c444e532e3433353d7777772e76616c646568756e6361722e65732c444e532e3433363d7777772e76616c6465696e69676f732e65732c444e532e3433373d7777772e76616c64656c6163617361646574616a6f2e65732c444e532e3433383d7777772e76616c64656d6f72616c65732e65732c444e532e3433393d7777772e76616c64656f626973706f2e65732c444e532e3434303d7777772e76616c646573616c6f722e65732c444e532e3434313d7777772e76616c72696f2e65732c444e532e3434323d7777772e76616c656e6369616465616c63616e746172612e65732c444e532e3434333d7777772e76616c766572646564656c61766572612e65732c444e532e3434343d7777772e76616c766572646564656c667265736e6f2e65732c444e532e3434353d7777772e766567617669616e612e65732c444e532e3434363d7777772e7669616e64617264656c61766572612e65732c444e532e3434373d7777772e76696c6c6164656c63616d706f2e65732c444e532e3434383d7777772e76696c6c6164656c7265792e65732c444e532e3434393d7777772e76696c6c616d65736961732e65732c444e532e3435303d7777772e76696c6c616d69656c2e65732c444e532e3435313d7777772e76696c6c616e7565766164656c617369657272612e65732c444e532e3435323d7777772e76696c6c617264656c706564726f736f2e65732c444e532e3435333d7777772e76696c6c61726465706c6173656e6369612e65732c444e532e3435343d7777772e76696c6c61736275656e61736465676174612e65732c444e532e3435353d7777772e7a61727a6164656772616e6164696c6c612e65732c444e532e3435363d7777772e7a61727a6164656d6f6e74616e6368657a2e65732c444e532e3435373d7777772e7a61727a616c616d61796f722e65732c444e532e3435383d7777772e7a6f726974612e65732c444e532e3435393d7777772e726f73616c656a6f2e65732c444e532e3436303d7777772e766567617669616e612e65732c444e532e3436313d7777772e616c61676f6e64656c72696f2e65732c444e532e3436323d7777772e7469657461722e65732c444e532e3436333d7777772e76616c646573616c6f722e65732c444e532e3436343d7777772e6e6176617472617369657272612e65732c444e532e3436353d7777772e7269766572616465667265736e65646f73612e65732c444e532e3436363d7777772e656c6d73616e67696c2e65732c444e532e3436373d7777772e74616a6f73616c6f722e65732c444e532e3436383d7777772e76616c6c65616d62726f7a2e65732c444e532e3436393d7777772e6d616e636f6d756e6964616476616c6c6564656c616c61676f6e2e65732c444e532e3437303d7777772e6d616e636f6d756e6964616476616c6c6564656c6a657274652e65732c444e532e3437313d7777772e6d616e636f6d756e696461647665676173616c7461732e65732c444e532e3437323d7777772e6d616e636f6d756e6964616464656c61766572612e65732c444e532e3437333d7777772e6d616e636f6d756e696461647a6f6e6163656e74726f2e65732c444e532e3437343d7777772e76696c6c7565726361732d69626f7265732d6a6172612e6573,EMAIL=webmaster@dip-caceres.es,CN=www.dip-caceres.es,OU=DIPUTACION PROVINCIAL DE CACERES,O=DIPUTACION PROVINCIAL DE CACERES,L=CACERES,ST=CACERES,C=ES", - .raw = {(void *) - "\x30\x82\x31\x29\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x45\x53\x31\x10\x30\x0e\x06\x03\x55\x04\x08\x13\x07\x43\x41\x43\x45\x52\x45\x53\x31\x10\x30\x0e\x06\x03\x55\x04\x07\x13\x07\x43\x41\x43\x45\x52\x45\x53\x31\x29\x30\x27\x06\x03\x55\x04\x0a\x13\x20\x44\x49\x50\x55\x54\x41\x43\x49\x4f\x4e\x20\x50\x52\x4f\x56\x49\x4e\x43\x49\x41\x4c\x20\x44\x45\x20\x43\x41\x43\x45\x52\x45\x53\x31\x29\x30\x27\x06\x03\x55\x04\x0b\x13\x20\x44\x49\x50\x55\x54\x41\x43\x49\x4f\x4e\x20\x50\x52\x4f\x56\x49\x4e\x43\x49\x41\x4c\x20\x44\x45\x20\x43\x41\x43\x45\x52\x45\x53\x31\x1b\x30\x19\x06\x03\x55\x04\x03\x13\x12\x77\x77\x77\x2e\x64\x69\x70\x2d\x63\x61\x63\x65\x72\x65\x73\x2e\x65\x73\x31\x27\x30\x25\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x09\x01\x16\x18\x77\x65\x62\x6d\x61\x73\x74\x65\x72\x40\x64\x69\x70\x2d\x63\x61\x63\x65\x72\x65\x73\x2e\x65\x73\x31\x82\x30\x58\x30\x82\x30\x54\x06\x03\x55\x1d\x11\x13\x82\x30\x4b\x44\x4e\x53\x2e\x31\x3d\x61\x62\x61\x64\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x3d\x61\x62\x65\x72\x74\x75\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x3d\x61\x63\x65\x62\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x3d\x61\x63\x65\x68\x75\x63\x68\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x3d\x61\x63\x65\x69\x74\x75\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x3d\x61\x68\x69\x67\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x3d\x61\x6c\x61\x67\x6f\x6e\x64\x65\x6c\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x3d\x61\x6c\x63\x6f\x6c\x6c\x61\x72\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x3d\x61\x79\x74\x6f\x61\x6c\x62\x61\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x3d\x61\x79\x74\x6f\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x3d\x61\x6c\x63\x75\x65\x73\x63\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x3d\x61\x6c\x64\x65\x61\x63\x65\x6e\x74\x65\x6e\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x3d\x61\x6c\x64\x65\x61\x64\x65\x6c\x63\x61\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x3d\x6c\x61\x61\x6c\x64\x65\x61\x64\x65\x6c\x6f\x62\x69\x73\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x3d\x61\x6c\x64\x65\x61\x6e\x75\x65\x76\x61\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x3d\x61\x6c\x64\x65\x61\x6e\x75\x65\x76\x61\x64\x65\x6c\x63\x61\x6d\x69\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x3d\x61\x6c\x64\x65\x68\x75\x65\x6c\x61\x64\x65\x6c\x6a\x65\x72\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x3d\x61\x79\x74\x6f\x61\x6c\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x3d\x61\x6c\x69\x73\x65\x64\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x3d\x61\x6c\x6d\x61\x72\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x3d\x61\x6c\x6d\x6f\x68\x61\x72\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x3d\x61\x79\x74\x6f\x61\x72\x72\x6f\x79\x6f\x64\x65\x6c\x61\x6c\x75\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x3d\x61\x72\x72\x6f\x79\x6f\x6d\x6f\x6c\x69\x6e\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x3d\x61\x72\x72\x6f\x79\x6f\x6d\x6f\x6c\x69\x6e\x6f\x73\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x3d\x62\x61\x6e\x6f\x73\x64\x65\x6d\x6f\x6e\x74\x65\x6d\x61\x79\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x3d\x62\x61\x72\x72\x61\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x3d\x62\x65\x6c\x76\x69\x73\x64\x65\x6d\x6f\x6e\x72\x6f\x79\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x3d\x62\x65\x6e\x71\x75\x65\x72\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x3d\x62\x65\x72\x72\x6f\x63\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x3d\x62\x65\x72\x7a\x6f\x63\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x3d\x62\x6f\x68\x6f\x6e\x61\x6c\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x3d\x62\x6f\x74\x69\x6a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x3d\x62\x72\x6f\x7a\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x3d\x63\x61\x62\x61\x6e\x61\x73\x64\x65\x6c\x63\x61\x73\x74\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x3d\x63\x61\x62\x65\x7a\x61\x62\x65\x6c\x6c\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x3d\x63\x61\x62\x65\x7a\x75\x65\x6c\x61\x64\x65\x6c\x76\x61\x6c\x6c\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x3d\x63\x61\x62\x72\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x3d\x63\x61\x63\x68\x6f\x72\x72\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x3d\x63\x61\x64\x61\x6c\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x3d\x63\x61\x6c\x7a\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x3d\x63\x61\x6d\x69\x6e\x6f\x6d\x6f\x72\x69\x73\x63\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x3d\x63\x61\x6d\x70\x69\x6c\x6c\x6f\x64\x65\x64\x65\x6c\x65\x69\x74\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x3d\x63\x61\x6d\x70\x6f\x6c\x75\x67\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x3d\x63\x61\x6e\x61\x6d\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x3d\x63\x61\x6e\x61\x76\x65\x72\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x3d\x63\x61\x72\x62\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x37\x3d\x63\x61\x72\x63\x61\x62\x6f\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x38\x3d\x63\x61\x72\x72\x61\x73\x63\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x39\x3d\x63\x61\x73\x61\x72\x64\x65\x63\x61\x63\x65\x72\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x30\x3d\x63\x61\x73\x61\x72\x64\x65\x70\x61\x6c\x6f\x6d\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x31\x3d\x63\x61\x73\x61\x72\x65\x73\x64\x65\x6c\x61\x73\x68\x75\x72\x64\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x32\x3d\x63\x61\x73\x61\x73\x64\x65\x64\x6f\x6e\x61\x6e\x74\x6f\x6e\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x33\x3d\x63\x61\x73\x61\x73\x64\x65\x64\x6f\x6e\x67\x6f\x6d\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x34\x3d\x63\x61\x73\x61\x73\x64\x65\x6c\x63\x61\x73\x74\x61\x6e\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x35\x3d\x63\x61\x73\x61\x73\x64\x65\x6c\x6d\x6f\x6e\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x36\x3d\x63\x61\x73\x61\x73\x64\x65\x6d\x69\x6c\x6c\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x37\x3d\x63\x61\x73\x61\x73\x64\x65\x6d\x69\x72\x61\x76\x65\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x38\x3d\x63\x61\x73\x61\x74\x65\x6a\x61\x64\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x39\x3d\x63\x61\x73\x69\x6c\x6c\x61\x73\x64\x65\x63\x6f\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x30\x3d\x63\x61\x73\x74\x61\x6e\x61\x72\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x31\x3d\x63\x65\x63\x6c\x61\x76\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x32\x3d\x63\x65\x64\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x33\x3d\x63\x65\x72\x65\x7a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x34\x3d\x63\x69\x6c\x6c\x65\x72\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x35\x3d\x63\x6f\x6c\x6c\x61\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x36\x3d\x63\x6f\x6e\x71\x75\x69\x73\x74\x61\x64\x65\x6c\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x37\x3d\x63\x6f\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x38\x3d\x63\x75\x61\x63\x6f\x73\x64\x65\x79\x75\x73\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x39\x3d\x6c\x61\x63\x75\x6d\x62\x72\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x30\x3d\x64\x65\x6c\x65\x69\x74\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x31\x3d\x64\x65\x73\x63\x61\x72\x67\x61\x6d\x61\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x32\x3d\x65\x6c\x6a\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x33\x3d\x65\x73\x63\x75\x72\x69\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x34\x3d\x66\x72\x65\x73\x6e\x65\x64\x6f\x73\x6f\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x35\x3d\x67\x61\x6c\x69\x73\x74\x65\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x36\x3d\x67\x61\x72\x63\x69\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x37\x3d\x6c\x61\x67\x61\x72\x67\x61\x6e\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x38\x3d\x67\x61\x72\x67\x61\x6e\x74\x61\x6c\x61\x6f\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x39\x3d\x67\x61\x72\x67\x61\x6e\x74\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x30\x3d\x67\x61\x72\x67\x75\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x31\x3d\x67\x61\x72\x72\x6f\x76\x69\x6c\x6c\x61\x73\x64\x65\x61\x6c\x63\x6f\x6e\x65\x74\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x32\x3d\x67\x61\x72\x76\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x33\x3d\x67\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x34\x3d\x61\x79\x74\x6f\x65\x6c\x67\x6f\x72\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x35\x3d\x6c\x61\x67\x72\x61\x6e\x6a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x36\x3d\x6c\x61\x67\x72\x61\x6e\x6a\x61\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x37\x3d\x61\x79\x75\x6e\x74\x61\x6d\x69\x65\x6e\x74\x6f\x64\x65\x67\x75\x61\x64\x61\x6c\x75\x70\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x38\x3d\x67\x75\x69\x6a\x6f\x64\x65\x63\x6f\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x39\x3d\x67\x75\x69\x6a\x6f\x64\x65\x67\x61\x6c\x69\x73\x74\x65\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x30\x3d\x67\x75\x69\x6a\x6f\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x31\x3d\x67\x75\x69\x6a\x6f\x64\x65\x73\x61\x6e\x74\x61\x62\x61\x72\x62\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x32\x3d\x68\x65\x72\x67\x75\x69\x6a\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x33\x3d\x68\x65\x72\x6e\x61\x6e\x70\x65\x72\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x34\x3d\x68\x65\x72\x72\x65\x72\x61\x64\x65\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x35\x3d\x68\x65\x72\x72\x65\x72\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x36\x3d\x68\x65\x72\x76\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x37\x3d\x68\x69\x67\x75\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x38\x3d\x68\x69\x6e\x6f\x6a\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x39\x3d\x68\x6f\x6c\x67\x75\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x30\x3d\x68\x6f\x79\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x31\x3d\x68\x75\x65\x6c\x61\x67\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x32\x3d\x69\x62\x61\x68\x65\x72\x6e\x61\x6e\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x33\x3d\x6a\x61\x72\x61\x69\x63\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x34\x3d\x6a\x61\x72\x61\x69\x7a\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x35\x3d\x6a\x61\x72\x61\x6e\x64\x69\x6c\x6c\x61\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x36\x3d\x6a\x61\x72\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x37\x3d\x6a\x65\x72\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x38\x3d\x6c\x61\x64\x72\x69\x6c\x6c\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x39\x3d\x6c\x6f\x67\x72\x6f\x73\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x30\x3d\x6c\x6f\x73\x61\x72\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x31\x3d\x6d\x61\x64\x72\x69\x67\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x32\x3d\x6d\x61\x64\x72\x69\x67\x61\x6c\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x33\x3d\x6d\x61\x64\x72\x6f\x6e\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x34\x3d\x6d\x61\x6a\x61\x64\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x35\x3d\x6d\x61\x6c\x70\x61\x72\x74\x69\x64\x61\x64\x65\x63\x61\x63\x65\x72\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x36\x3d\x6d\x61\x6c\x70\x61\x72\x74\x69\x64\x61\x64\x65\x70\x6c\x61\x73\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x37\x3d\x6d\x61\x72\x63\x68\x61\x67\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x38\x3d\x6d\x61\x74\x61\x64\x65\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x39\x3d\x6d\x65\x6d\x62\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x30\x3d\x6d\x65\x73\x61\x73\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x31\x3d\x6d\x69\x61\x6a\x61\x64\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x32\x3d\x6d\x69\x6c\x6c\x61\x6e\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x33\x3d\x6d\x69\x72\x61\x62\x65\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x34\x3d\x6d\x6f\x68\x65\x64\x61\x73\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x35\x3d\x6d\x6f\x6e\x72\x6f\x79\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x36\x3d\x6d\x6f\x6e\x74\x61\x6e\x63\x68\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x37\x3d\x6d\x6f\x6e\x74\x65\x68\x65\x72\x6d\x6f\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x38\x3d\x6d\x6f\x72\x61\x6c\x65\x6a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x39\x3d\x6d\x6f\x72\x63\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x30\x3d\x6e\x61\x76\x61\x63\x6f\x6e\x63\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x31\x3d\x6e\x61\x76\x61\x6c\x76\x69\x6c\x6c\x61\x72\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x32\x3d\x6e\x61\x76\x61\x6c\x6d\x6f\x72\x61\x6c\x64\x65\x6c\x61\x6d\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x33\x3d\x6e\x61\x76\x61\x73\x64\x65\x6c\x6d\x61\x64\x72\x6f\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x34\x3d\x6e\x61\x76\x61\x74\x72\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x35\x3d\x6e\x61\x76\x65\x7a\x75\x65\x6c\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x36\x3d\x6e\x75\x6e\x6f\x6d\x6f\x72\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x37\x3d\x6f\x6c\x69\x76\x61\x64\x65\x70\x6c\x61\x73\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x38\x3d\x70\x61\x6c\x6f\x6d\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x39\x3d\x70\x61\x73\x61\x72\x6f\x6e\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x30\x3d\x70\x65\x64\x72\x6f\x73\x6f\x64\x65\x61\x63\x69\x6d\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x31\x3d\x70\x65\x72\x61\x6c\x65\x64\x61\x64\x65\x6c\x61\x6d\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x32\x3d\x70\x65\x72\x61\x6c\x65\x64\x61\x64\x65\x73\x61\x6e\x72\x6f\x6d\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x33\x3d\x70\x65\x72\x61\x6c\x65\x73\x64\x65\x6c\x70\x75\x65\x72\x74\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x34\x3d\x70\x65\x73\x63\x75\x65\x7a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x35\x3d\x6c\x61\x70\x65\x73\x67\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x36\x3d\x70\x69\x65\x64\x72\x61\x73\x61\x6c\x62\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x37\x3d\x70\x69\x6e\x6f\x66\x72\x61\x6e\x71\x75\x65\x61\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x38\x3d\x70\x69\x6f\x72\x6e\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x39\x3d\x70\x6c\x61\x73\x65\x6e\x7a\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x30\x3d\x70\x6f\x72\x74\x61\x6a\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x31\x3d\x70\x6f\x72\x74\x65\x7a\x75\x65\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x32\x3d\x70\x6f\x7a\x75\x65\x6c\x6f\x64\x65\x7a\x61\x72\x7a\x6f\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x33\x3d\x70\x75\x65\x62\x6c\x6f\x6e\x75\x65\x76\x6f\x64\x65\x6d\x69\x72\x61\x6d\x6f\x6e\x74\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x34\x3d\x70\x75\x65\x72\x74\x6f\x64\x65\x73\x61\x6e\x74\x61\x63\x72\x75\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x35\x3d\x72\x65\x62\x6f\x6c\x6c\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x36\x3d\x72\x69\x6f\x6c\x6f\x62\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x37\x3d\x72\x6f\x62\x6c\x65\x64\x69\x6c\x6c\x6f\x64\x65\x67\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x38\x3d\x72\x6f\x62\x6c\x65\x64\x69\x6c\x6c\x6f\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x39\x3d\x72\x6f\x62\x6c\x65\x64\x69\x6c\x6c\x6f\x64\x65\x74\x72\x75\x6a\x69\x6c\x6c\x6f\x2c\x44\x4e\x53\x2e\x31\x36\x30\x3d\x72\x6f\x62\x6c\x65\x64\x6f\x6c\x6c\x61\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x31\x3d\x72\x6f\x6d\x61\x6e\x67\x6f\x72\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x32\x3d\x72\x75\x61\x6e\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x33\x3d\x73\x61\x6c\x6f\x72\x69\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x34\x3d\x73\x61\x6c\x76\x61\x74\x69\x65\x72\x72\x61\x64\x65\x73\x61\x6e\x74\x69\x61\x67\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x35\x3d\x73\x61\x6e\x6d\x61\x72\x74\x69\x6e\x64\x65\x74\x72\x65\x76\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x36\x3d\x61\x79\x74\x6f\x73\x61\x6e\x74\x61\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x37\x3d\x73\x61\x6e\x74\x61\x63\x72\x75\x7a\x64\x65\x6c\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x38\x3d\x73\x61\x6e\x74\x61\x63\x72\x75\x7a\x64\x65\x70\x61\x6e\x69\x61\x67\x75\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x39\x3d\x73\x61\x6e\x74\x61\x6d\x61\x72\x74\x61\x64\x65\x6d\x61\x67\x61\x73\x63\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x30\x3d\x73\x61\x6e\x74\x69\x61\x67\x6f\x64\x65\x6c\x63\x61\x6d\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x31\x3d\x73\x61\x6e\x74\x69\x62\x61\x6e\x65\x7a\x65\x6c\x61\x6c\x74\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x32\x3d\x73\x61\x6e\x74\x69\x62\x61\x6e\x65\x7a\x65\x6c\x62\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x33\x3d\x73\x61\x75\x63\x65\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x34\x3d\x73\x65\x67\x75\x72\x61\x64\x65\x74\x6f\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x35\x3d\x73\x65\x72\x72\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x36\x3d\x73\x65\x72\x72\x65\x6a\x6f\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x37\x3d\x73\x69\x65\x72\x72\x61\x64\x65\x66\x75\x65\x6e\x74\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x38\x3d\x74\x61\x6c\x61\x76\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x39\x3d\x74\x61\x6c\x61\x76\x65\x72\x75\x65\x6c\x61\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x30\x3d\x74\x61\x6c\x61\x79\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x31\x3d\x74\x65\x6a\x65\x64\x61\x64\x65\x74\x69\x65\x74\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x32\x3d\x74\x6f\x72\x69\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x33\x3d\x74\x6f\x72\x6e\x61\x76\x61\x63\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x34\x3d\x61\x79\x74\x6f\x65\x6c\x74\x6f\x72\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x35\x3d\x74\x6f\x72\x72\x65\x63\x69\x6c\x6c\x61\x64\x65\x6c\x6f\x73\x61\x6e\x67\x65\x6c\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x36\x3d\x74\x6f\x72\x72\x65\x63\x69\x6c\x6c\x61\x73\x64\x65\x6c\x61\x74\x69\x65\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x37\x3d\x74\x6f\x72\x72\x65\x64\x65\x64\x6f\x6e\x6d\x69\x67\x75\x65\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x38\x3d\x74\x6f\x72\x72\x65\x64\x65\x73\x61\x6e\x74\x61\x6d\x61\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x39\x3d\x74\x6f\x72\x72\x65\x6a\x6f\x6e\x65\x6c\x72\x75\x62\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x30\x3d\x74\x6f\x72\x72\x65\x6a\x6f\x6e\x63\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x31\x3d\x74\x6f\x72\x72\x65\x6d\x65\x6e\x67\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x32\x3d\x74\x6f\x72\x72\x65\x6d\x6f\x63\x68\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x33\x3d\x74\x6f\x72\x72\x65\x6f\x72\x67\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x34\x3d\x74\x6f\x72\x72\x65\x71\x75\x65\x6d\x61\x64\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x35\x3d\x76\x61\x6c\x64\x61\x73\x74\x69\x6c\x6c\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x36\x3d\x76\x61\x6c\x64\x65\x63\x61\x6e\x61\x73\x64\x65\x74\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x37\x3d\x76\x61\x6c\x64\x65\x66\x75\x65\x6e\x74\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x38\x3d\x76\x61\x6c\x64\x65\x68\x75\x6e\x63\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x39\x3d\x76\x61\x6c\x64\x65\x69\x6e\x69\x67\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x30\x3d\x76\x61\x6c\x64\x65\x6c\x61\x63\x61\x73\x61\x64\x65\x74\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x31\x3d\x76\x61\x6c\x64\x65\x6d\x6f\x72\x61\x6c\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x32\x3d\x76\x61\x6c\x64\x65\x6f\x62\x69\x73\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x33\x3d\x76\x61\x6c\x64\x65\x73\x61\x6c\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x34\x3d\x76\x61\x6c\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x35\x3d\x76\x61\x6c\x65\x6e\x63\x69\x61\x64\x65\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x36\x3d\x76\x61\x6c\x76\x65\x72\x64\x65\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x37\x3d\x76\x61\x6c\x76\x65\x72\x64\x65\x64\x65\x6c\x66\x72\x65\x73\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x38\x3d\x76\x65\x67\x61\x76\x69\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x39\x3d\x76\x69\x61\x6e\x64\x61\x72\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x30\x3d\x76\x69\x6c\x6c\x61\x64\x65\x6c\x63\x61\x6d\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x31\x3d\x76\x69\x6c\x6c\x61\x64\x65\x6c\x72\x65\x79\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x32\x3d\x76\x69\x6c\x6c\x61\x6d\x65\x73\x69\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x33\x3d\x76\x69\x6c\x6c\x61\x6d\x69\x65\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x34\x3d\x76\x69\x6c\x6c\x61\x6e\x75\x65\x76\x61\x64\x65\x6c\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x35\x3d\x76\x69\x6c\x6c\x61\x72\x64\x65\x6c\x70\x65\x64\x72\x6f\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x36\x3d\x76\x69\x6c\x6c\x61\x72\x64\x65\x70\x6c\x61\x73\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x37\x3d\x76\x69\x6c\x6c\x61\x73\x62\x75\x65\x6e\x61\x73\x64\x65\x67\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x38\x3d\x7a\x61\x72\x7a\x61\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x39\x3d\x7a\x61\x72\x7a\x61\x64\x65\x6d\x6f\x6e\x74\x61\x6e\x63\x68\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x30\x3d\x7a\x61\x72\x7a\x61\x6c\x61\x6d\x61\x79\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x31\x3d\x7a\x6f\x72\x69\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x32\x3d\x72\x6f\x73\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x33\x3d\x76\x65\x67\x61\x76\x69\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x34\x3d\x61\x6c\x61\x67\x6f\x6e\x64\x65\x6c\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x35\x3d\x74\x69\x65\x74\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x36\x3d\x76\x61\x6c\x64\x65\x73\x61\x6c\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x37\x3d\x6e\x61\x76\x61\x74\x72\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x38\x3d\x72\x69\x76\x65\x72\x61\x64\x65\x66\x72\x65\x73\x6e\x65\x64\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x39\x3d\x65\x6c\x6d\x73\x61\x6e\x67\x69\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x30\x3d\x74\x61\x6a\x6f\x73\x61\x6c\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x31\x3d\x76\x61\x6c\x6c\x65\x61\x6d\x62\x72\x6f\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x32\x3d\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x76\x61\x6c\x6c\x65\x64\x65\x6c\x61\x6c\x61\x67\x6f\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x33\x3d\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x76\x61\x6c\x6c\x65\x64\x65\x6c\x6a\x65\x72\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x34\x3d\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x76\x65\x67\x61\x73\x61\x6c\x74\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x35\x3d\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x36\x3d\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x7a\x6f\x6e\x61\x63\x65\x6e\x74\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x37\x3d\x76\x69\x6c\x6c\x75\x65\x72\x63\x61\x73\x2d\x69\x62\x6f\x72\x65\x73\x2d\x6a\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x38\x3d\x77\x77\x77\x2e\x61\x62\x61\x64\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x39\x3d\x77\x77\x77\x2e\x61\x62\x65\x72\x74\x75\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x30\x3d\x77\x77\x77\x2e\x61\x63\x65\x62\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x31\x3d\x77\x77\x77\x2e\x61\x63\x65\x68\x75\x63\x68\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x32\x3d\x77\x77\x77\x2e\x61\x63\x65\x69\x74\x75\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x33\x3d\x77\x77\x77\x2e\x61\x68\x69\x67\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x34\x3d\x77\x77\x77\x2e\x61\x6c\x61\x67\x6f\x6e\x64\x65\x6c\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x35\x3d\x77\x77\x77\x2e\x61\x6c\x63\x6f\x6c\x6c\x61\x72\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x36\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x61\x6c\x62\x61\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x37\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x38\x3d\x77\x77\x77\x2e\x61\x6c\x63\x75\x65\x73\x63\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x39\x3d\x77\x77\x77\x2e\x61\x6c\x64\x65\x61\x63\x65\x6e\x74\x65\x6e\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x30\x3d\x77\x77\x77\x2e\x61\x6c\x64\x65\x61\x64\x65\x6c\x63\x61\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x31\x3d\x77\x77\x77\x2e\x6c\x61\x61\x6c\x64\x65\x61\x64\x65\x6c\x6f\x62\x69\x73\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x32\x3d\x77\x77\x77\x2e\x61\x6c\x64\x65\x61\x6e\x75\x65\x76\x61\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x33\x3d\x77\x77\x77\x2e\x61\x6c\x64\x65\x61\x6e\x75\x65\x76\x61\x64\x65\x6c\x63\x61\x6d\x69\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x34\x3d\x77\x77\x77\x2e\x61\x6c\x64\x65\x68\x75\x65\x6c\x61\x64\x65\x6c\x6a\x65\x72\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x35\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x61\x6c\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x36\x3d\x77\x77\x77\x2e\x61\x6c\x69\x73\x65\x64\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x37\x3d\x77\x77\x77\x2e\x61\x6c\x6d\x61\x72\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x38\x3d\x77\x77\x77\x2e\x61\x6c\x6d\x6f\x68\x61\x72\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x39\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x61\x72\x72\x6f\x79\x6f\x64\x65\x6c\x61\x6c\x75\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x30\x3d\x77\x77\x77\x2e\x61\x72\x72\x6f\x79\x6f\x6d\x6f\x6c\x69\x6e\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x31\x3d\x77\x77\x77\x2e\x61\x72\x72\x6f\x79\x6f\x6d\x6f\x6c\x69\x6e\x6f\x73\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x32\x3d\x77\x77\x77\x2e\x62\x61\x6e\x6f\x73\x64\x65\x6d\x6f\x6e\x74\x65\x6d\x61\x79\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x33\x3d\x77\x77\x77\x2e\x62\x61\x72\x72\x61\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x34\x3d\x77\x77\x77\x2e\x62\x65\x6c\x76\x69\x73\x64\x65\x6d\x6f\x6e\x72\x6f\x79\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x35\x3d\x77\x77\x77\x2e\x62\x65\x6e\x71\x75\x65\x72\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x36\x3d\x77\x77\x77\x2e\x62\x65\x72\x72\x6f\x63\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x37\x3d\x77\x77\x77\x2e\x62\x65\x72\x7a\x6f\x63\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x38\x3d\x77\x77\x77\x2e\x62\x6f\x68\x6f\x6e\x61\x6c\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x39\x3d\x77\x77\x77\x2e\x62\x6f\x74\x69\x6a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x30\x3d\x77\x77\x77\x2e\x62\x72\x6f\x7a\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x31\x3d\x77\x77\x77\x2e\x63\x61\x62\x61\x6e\x61\x73\x64\x65\x6c\x63\x61\x73\x74\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x32\x3d\x77\x77\x77\x2e\x63\x61\x62\x65\x7a\x61\x62\x65\x6c\x6c\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x33\x3d\x77\x77\x77\x2e\x63\x61\x62\x65\x7a\x75\x65\x6c\x61\x64\x65\x6c\x76\x61\x6c\x6c\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x34\x3d\x77\x77\x77\x2e\x63\x61\x62\x72\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x35\x3d\x77\x77\x77\x2e\x63\x61\x63\x68\x6f\x72\x72\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x36\x3d\x77\x77\x77\x2e\x63\x61\x64\x61\x6c\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x37\x3d\x77\x77\x77\x2e\x63\x61\x6c\x7a\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x38\x3d\x77\x77\x77\x2e\x63\x61\x6d\x69\x6e\x6f\x6d\x6f\x72\x69\x73\x63\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x39\x3d\x77\x77\x77\x2e\x63\x61\x6d\x70\x69\x6c\x6c\x6f\x64\x65\x64\x65\x6c\x65\x69\x74\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x30\x3d\x77\x77\x77\x2e\x63\x61\x6d\x70\x6f\x6c\x75\x67\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x31\x3d\x77\x77\x77\x2e\x63\x61\x6e\x61\x6d\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x32\x3d\x77\x77\x77\x2e\x63\x61\x6e\x61\x76\x65\x72\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x33\x3d\x77\x77\x77\x2e\x63\x61\x72\x62\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x34\x3d\x77\x77\x77\x2e\x63\x61\x72\x63\x61\x62\x6f\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x35\x3d\x77\x77\x77\x2e\x63\x61\x72\x72\x61\x73\x63\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x36\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x72\x64\x65\x63\x61\x63\x65\x72\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x37\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x72\x64\x65\x70\x61\x6c\x6f\x6d\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x38\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x72\x65\x73\x64\x65\x6c\x61\x73\x68\x75\x72\x64\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x39\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x73\x64\x65\x64\x6f\x6e\x61\x6e\x74\x6f\x6e\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x30\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x73\x64\x65\x64\x6f\x6e\x67\x6f\x6d\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x31\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x73\x64\x65\x6c\x63\x61\x73\x74\x61\x6e\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x32\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x73\x64\x65\x6c\x6d\x6f\x6e\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x33\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x73\x64\x65\x6d\x69\x6c\x6c\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x34\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x73\x64\x65\x6d\x69\x72\x61\x76\x65\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x35\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x74\x65\x6a\x61\x64\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x36\x3d\x77\x77\x77\x2e\x63\x61\x73\x69\x6c\x6c\x61\x73\x64\x65\x63\x6f\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x37\x3d\x77\x77\x77\x2e\x63\x61\x73\x74\x61\x6e\x61\x72\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x38\x3d\x77\x77\x77\x2e\x63\x65\x63\x6c\x61\x76\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x39\x3d\x77\x77\x77\x2e\x63\x65\x64\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x30\x3d\x77\x77\x77\x2e\x63\x65\x72\x65\x7a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x31\x3d\x77\x77\x77\x2e\x63\x69\x6c\x6c\x65\x72\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x32\x3d\x77\x77\x77\x2e\x63\x6f\x6c\x6c\x61\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x33\x3d\x77\x77\x77\x2e\x63\x6f\x6e\x71\x75\x69\x73\x74\x61\x64\x65\x6c\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x34\x3d\x77\x77\x77\x2e\x63\x6f\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x35\x3d\x77\x77\x77\x2e\x63\x75\x61\x63\x6f\x73\x64\x65\x79\x75\x73\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x36\x3d\x77\x77\x77\x2e\x6c\x61\x63\x75\x6d\x62\x72\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x37\x3d\x77\x77\x77\x2e\x64\x65\x6c\x65\x69\x74\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x38\x3d\x77\x77\x77\x2e\x64\x65\x73\x63\x61\x72\x67\x61\x6d\x61\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x39\x3d\x77\x77\x77\x2e\x65\x6c\x6a\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x30\x3d\x77\x77\x77\x2e\x65\x73\x63\x75\x72\x69\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x31\x3d\x77\x77\x77\x2e\x66\x72\x65\x73\x6e\x65\x64\x6f\x73\x6f\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x32\x3d\x77\x77\x77\x2e\x67\x61\x6c\x69\x73\x74\x65\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x33\x3d\x77\x77\x77\x2e\x67\x61\x72\x63\x69\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x34\x3d\x77\x77\x77\x2e\x6c\x61\x67\x61\x72\x67\x61\x6e\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x35\x3d\x77\x77\x77\x2e\x67\x61\x72\x67\x61\x6e\x74\x61\x6c\x61\x6f\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x36\x3d\x77\x77\x77\x2e\x67\x61\x72\x67\x61\x6e\x74\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x37\x3d\x77\x77\x77\x2e\x67\x61\x72\x67\x75\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x38\x3d\x77\x77\x77\x2e\x67\x61\x72\x72\x6f\x76\x69\x6c\x6c\x61\x73\x64\x65\x61\x6c\x63\x6f\x6e\x65\x74\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x39\x3d\x77\x77\x77\x2e\x67\x61\x72\x76\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x30\x3d\x77\x77\x77\x2e\x67\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x31\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x65\x6c\x67\x6f\x72\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x32\x3d\x77\x77\x77\x2e\x6c\x61\x67\x72\x61\x6e\x6a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x33\x3d\x77\x77\x77\x2e\x6c\x61\x67\x72\x61\x6e\x6a\x61\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x34\x3d\x77\x77\x77\x2e\x61\x79\x75\x6e\x74\x61\x6d\x69\x65\x6e\x74\x6f\x64\x65\x67\x75\x61\x64\x61\x6c\x75\x70\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x35\x3d\x77\x77\x77\x2e\x67\x75\x69\x6a\x6f\x64\x65\x63\x6f\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x36\x3d\x77\x77\x77\x2e\x67\x75\x69\x6a\x6f\x64\x65\x67\x61\x6c\x69\x73\x74\x65\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x37\x3d\x77\x77\x77\x2e\x67\x75\x69\x6a\x6f\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x38\x3d\x77\x77\x77\x2e\x67\x75\x69\x6a\x6f\x64\x65\x73\x61\x6e\x74\x61\x62\x61\x72\x62\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x39\x3d\x77\x77\x77\x2e\x68\x65\x72\x67\x75\x69\x6a\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x30\x3d\x77\x77\x77\x2e\x68\x65\x72\x6e\x61\x6e\x70\x65\x72\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x31\x3d\x77\x77\x77\x2e\x68\x65\x72\x72\x65\x72\x61\x64\x65\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x32\x3d\x77\x77\x77\x2e\x68\x65\x72\x72\x65\x72\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x33\x3d\x77\x77\x77\x2e\x68\x65\x72\x76\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x34\x3d\x77\x77\x77\x2e\x68\x69\x67\x75\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x35\x3d\x77\x77\x77\x2e\x68\x69\x6e\x6f\x6a\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x36\x3d\x77\x77\x77\x2e\x68\x6f\x6c\x67\x75\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x37\x3d\x77\x77\x77\x2e\x68\x6f\x79\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x38\x3d\x77\x77\x77\x2e\x68\x75\x65\x6c\x61\x67\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x39\x3d\x77\x77\x77\x2e\x69\x62\x61\x68\x65\x72\x6e\x61\x6e\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x30\x3d\x77\x77\x77\x2e\x6a\x61\x72\x61\x69\x63\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x31\x3d\x77\x77\x77\x2e\x6a\x61\x72\x61\x69\x7a\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x32\x3d\x77\x77\x77\x2e\x6a\x61\x72\x61\x6e\x64\x69\x6c\x6c\x61\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x33\x3d\x77\x77\x77\x2e\x6a\x61\x72\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x34\x3d\x77\x77\x77\x2e\x6a\x65\x72\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x35\x3d\x77\x77\x77\x2e\x6c\x61\x64\x72\x69\x6c\x6c\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x36\x3d\x77\x77\x77\x2e\x6c\x6f\x67\x72\x6f\x73\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x37\x3d\x77\x77\x77\x2e\x6c\x6f\x73\x61\x72\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x38\x3d\x77\x77\x77\x2e\x6d\x61\x64\x72\x69\x67\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x39\x3d\x77\x77\x77\x2e\x6d\x61\x64\x72\x69\x67\x61\x6c\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x30\x3d\x77\x77\x77\x2e\x6d\x61\x64\x72\x6f\x6e\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x31\x3d\x77\x77\x77\x2e\x6d\x61\x6a\x61\x64\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x32\x3d\x77\x77\x77\x2e\x6d\x61\x6c\x70\x61\x72\x74\x69\x64\x61\x64\x65\x63\x61\x63\x65\x72\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x33\x3d\x77\x77\x77\x2e\x6d\x61\x6c\x70\x61\x72\x74\x69\x64\x61\x64\x65\x70\x6c\x61\x73\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x34\x3d\x77\x77\x77\x2e\x6d\x61\x72\x63\x68\x61\x67\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x35\x3d\x77\x77\x77\x2e\x6d\x61\x74\x61\x64\x65\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x36\x3d\x77\x77\x77\x2e\x6d\x65\x6d\x62\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x37\x3d\x77\x77\x77\x2e\x6d\x65\x73\x61\x73\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x38\x3d\x77\x77\x77\x2e\x6d\x69\x61\x6a\x61\x64\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x39\x3d\x77\x77\x77\x2e\x6d\x69\x6c\x6c\x61\x6e\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x30\x3d\x77\x77\x77\x2e\x6d\x69\x72\x61\x62\x65\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x31\x3d\x77\x77\x77\x2e\x6d\x6f\x68\x65\x64\x61\x73\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x32\x3d\x77\x77\x77\x2e\x6d\x6f\x6e\x72\x6f\x79\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x33\x3d\x77\x77\x77\x2e\x6d\x6f\x6e\x74\x61\x6e\x63\x68\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x34\x3d\x77\x77\x77\x2e\x6d\x6f\x6e\x74\x65\x68\x65\x72\x6d\x6f\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x35\x3d\x77\x77\x77\x2e\x6d\x6f\x72\x61\x6c\x65\x6a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x36\x3d\x77\x77\x77\x2e\x6d\x6f\x72\x63\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x37\x3d\x77\x77\x77\x2e\x6e\x61\x76\x61\x63\x6f\x6e\x63\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x38\x3d\x77\x77\x77\x2e\x6e\x61\x76\x61\x6c\x76\x69\x6c\x6c\x61\x72\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x39\x3d\x77\x77\x77\x2e\x6e\x61\x76\x61\x6c\x6d\x6f\x72\x61\x6c\x64\x65\x6c\x61\x6d\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x30\x3d\x77\x77\x77\x2e\x6e\x61\x76\x61\x73\x64\x65\x6c\x6d\x61\x64\x72\x6f\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x31\x3d\x77\x77\x77\x2e\x6e\x61\x76\x61\x74\x72\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x32\x3d\x77\x77\x77\x2e\x6e\x61\x76\x65\x7a\x75\x65\x6c\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x33\x3d\x77\x77\x77\x2e\x6e\x75\x6e\x6f\x6d\x6f\x72\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x34\x3d\x77\x77\x77\x2e\x6f\x6c\x69\x76\x61\x64\x65\x70\x6c\x61\x73\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x35\x3d\x77\x77\x77\x2e\x70\x61\x6c\x6f\x6d\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x36\x3d\x77\x77\x77\x2e\x70\x61\x73\x61\x72\x6f\x6e\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x37\x3d\x77\x77\x77\x2e\x70\x65\x64\x72\x6f\x73\x6f\x64\x65\x61\x63\x69\x6d\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x38\x3d\x77\x77\x77\x2e\x70\x65\x72\x61\x6c\x65\x64\x61\x64\x65\x6c\x61\x6d\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x39\x3d\x77\x77\x77\x2e\x70\x65\x72\x61\x6c\x65\x64\x61\x64\x65\x73\x61\x6e\x72\x6f\x6d\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x30\x3d\x77\x77\x77\x2e\x70\x65\x72\x61\x6c\x65\x73\x64\x65\x6c\x70\x75\x65\x72\x74\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x31\x3d\x77\x77\x77\x2e\x70\x65\x73\x63\x75\x65\x7a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x32\x3d\x77\x77\x77\x2e\x6c\x61\x70\x65\x73\x67\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x33\x3d\x77\x77\x77\x2e\x70\x69\x65\x64\x72\x61\x73\x61\x6c\x62\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x34\x3d\x77\x77\x77\x2e\x70\x69\x6e\x6f\x66\x72\x61\x6e\x71\x75\x65\x61\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x35\x3d\x77\x77\x77\x2e\x70\x69\x6f\x72\x6e\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x36\x3d\x77\x77\x77\x2e\x70\x6c\x61\x73\x65\x6e\x7a\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x37\x3d\x77\x77\x77\x2e\x70\x6f\x72\x74\x61\x6a\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x38\x3d\x77\x77\x77\x2e\x70\x6f\x72\x74\x65\x7a\x75\x65\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x39\x3d\x77\x77\x77\x2e\x70\x6f\x7a\x75\x65\x6c\x6f\x64\x65\x7a\x61\x72\x7a\x6f\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x30\x3d\x77\x77\x77\x2e\x70\x75\x65\x62\x6c\x6f\x6e\x75\x65\x76\x6f\x64\x65\x6d\x69\x72\x61\x6d\x6f\x6e\x74\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x31\x3d\x77\x77\x77\x2e\x70\x75\x65\x72\x74\x6f\x64\x65\x73\x61\x6e\x74\x61\x63\x72\x75\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x32\x3d\x77\x77\x77\x2e\x72\x65\x62\x6f\x6c\x6c\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x33\x3d\x77\x77\x77\x2e\x72\x69\x6f\x6c\x6f\x62\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x34\x3d\x77\x77\x77\x2e\x72\x6f\x62\x6c\x65\x64\x69\x6c\x6c\x6f\x64\x65\x67\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x35\x3d\x77\x77\x77\x2e\x72\x6f\x62\x6c\x65\x64\x69\x6c\x6c\x6f\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x36\x3d\x77\x77\x77\x2e\x72\x6f\x62\x6c\x65\x64\x69\x6c\x6c\x6f\x64\x65\x74\x72\x75\x6a\x69\x6c\x6c\x6f\x2c\x44\x4e\x53\x2e\x33\x39\x37\x3d\x77\x77\x77\x2e\x72\x6f\x62\x6c\x65\x64\x6f\x6c\x6c\x61\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x38\x3d\x77\x77\x77\x2e\x72\x6f\x6d\x61\x6e\x67\x6f\x72\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x39\x3d\x77\x77\x77\x2e\x72\x75\x61\x6e\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x30\x3d\x77\x77\x77\x2e\x73\x61\x6c\x6f\x72\x69\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x31\x3d\x77\x77\x77\x2e\x73\x61\x6c\x76\x61\x74\x69\x65\x72\x72\x61\x64\x65\x73\x61\x6e\x74\x69\x61\x67\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x32\x3d\x77\x77\x77\x2e\x73\x61\x6e\x6d\x61\x72\x74\x69\x6e\x64\x65\x74\x72\x65\x76\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x33\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x73\x61\x6e\x74\x61\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x34\x3d\x77\x77\x77\x2e\x73\x61\x6e\x74\x61\x63\x72\x75\x7a\x64\x65\x6c\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x35\x3d\x77\x77\x77\x2e\x73\x61\x6e\x74\x61\x63\x72\x75\x7a\x64\x65\x70\x61\x6e\x69\x61\x67\x75\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x36\x3d\x77\x77\x77\x2e\x73\x61\x6e\x74\x61\x6d\x61\x72\x74\x61\x64\x65\x6d\x61\x67\x61\x73\x63\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x37\x3d\x77\x77\x77\x2e\x73\x61\x6e\x74\x69\x61\x67\x6f\x64\x65\x6c\x63\x61\x6d\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x38\x3d\x77\x77\x77\x2e\x73\x61\x6e\x74\x69\x62\x61\x6e\x65\x7a\x65\x6c\x61\x6c\x74\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x39\x3d\x77\x77\x77\x2e\x73\x61\x6e\x74\x69\x62\x61\x6e\x65\x7a\x65\x6c\x62\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x30\x3d\x77\x77\x77\x2e\x73\x61\x75\x63\x65\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x31\x3d\x77\x77\x77\x2e\x73\x65\x67\x75\x72\x61\x64\x65\x74\x6f\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x32\x3d\x77\x77\x77\x2e\x73\x65\x72\x72\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x33\x3d\x77\x77\x77\x2e\x73\x65\x72\x72\x65\x6a\x6f\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x34\x3d\x77\x77\x77\x2e\x73\x69\x65\x72\x72\x61\x64\x65\x66\x75\x65\x6e\x74\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x35\x3d\x77\x77\x77\x2e\x74\x61\x6c\x61\x76\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x36\x3d\x77\x77\x77\x2e\x74\x61\x6c\x61\x76\x65\x72\x75\x65\x6c\x61\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x37\x3d\x77\x77\x77\x2e\x74\x61\x6c\x61\x79\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x38\x3d\x77\x77\x77\x2e\x74\x65\x6a\x65\x64\x61\x64\x65\x74\x69\x65\x74\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x39\x3d\x77\x77\x77\x2e\x74\x6f\x72\x69\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x30\x3d\x77\x77\x77\x2e\x74\x6f\x72\x6e\x61\x76\x61\x63\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x31\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x65\x6c\x74\x6f\x72\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x32\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x63\x69\x6c\x6c\x61\x64\x65\x6c\x6f\x73\x61\x6e\x67\x65\x6c\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x33\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x63\x69\x6c\x6c\x61\x73\x64\x65\x6c\x61\x74\x69\x65\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x34\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x64\x65\x64\x6f\x6e\x6d\x69\x67\x75\x65\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x35\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x64\x65\x73\x61\x6e\x74\x61\x6d\x61\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x36\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x6a\x6f\x6e\x65\x6c\x72\x75\x62\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x37\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x6a\x6f\x6e\x63\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x38\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x6d\x65\x6e\x67\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x39\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x6d\x6f\x63\x68\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x30\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x6f\x72\x67\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x31\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x71\x75\x65\x6d\x61\x64\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x32\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x61\x73\x74\x69\x6c\x6c\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x33\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x63\x61\x6e\x61\x73\x64\x65\x74\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x34\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x66\x75\x65\x6e\x74\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x35\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x68\x75\x6e\x63\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x36\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x69\x6e\x69\x67\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x37\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x6c\x61\x63\x61\x73\x61\x64\x65\x74\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x38\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x6d\x6f\x72\x61\x6c\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x39\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x6f\x62\x69\x73\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x30\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x73\x61\x6c\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x31\x3d\x77\x77\x77\x2e\x76\x61\x6c\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x32\x3d\x77\x77\x77\x2e\x76\x61\x6c\x65\x6e\x63\x69\x61\x64\x65\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x33\x3d\x77\x77\x77\x2e\x76\x61\x6c\x76\x65\x72\x64\x65\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x34\x3d\x77\x77\x77\x2e\x76\x61\x6c\x76\x65\x72\x64\x65\x64\x65\x6c\x66\x72\x65\x73\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x35\x3d\x77\x77\x77\x2e\x76\x65\x67\x61\x76\x69\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x36\x3d\x77\x77\x77\x2e\x76\x69\x61\x6e\x64\x61\x72\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x37\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x64\x65\x6c\x63\x61\x6d\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x38\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x64\x65\x6c\x72\x65\x79\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x39\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x6d\x65\x73\x69\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x30\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x6d\x69\x65\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x31\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x6e\x75\x65\x76\x61\x64\x65\x6c\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x32\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x72\x64\x65\x6c\x70\x65\x64\x72\x6f\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x33\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x72\x64\x65\x70\x6c\x61\x73\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x34\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x73\x62\x75\x65\x6e\x61\x73\x64\x65\x67\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x35\x3d\x77\x77\x77\x2e\x7a\x61\x72\x7a\x61\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x36\x3d\x77\x77\x77\x2e\x7a\x61\x72\x7a\x61\x64\x65\x6d\x6f\x6e\x74\x61\x6e\x63\x68\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x37\x3d\x77\x77\x77\x2e\x7a\x61\x72\x7a\x61\x6c\x61\x6d\x61\x79\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x38\x3d\x77\x77\x77\x2e\x7a\x6f\x72\x69\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x39\x3d\x77\x77\x77\x2e\x72\x6f\x73\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x30\x3d\x77\x77\x77\x2e\x76\x65\x67\x61\x76\x69\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x31\x3d\x77\x77\x77\x2e\x61\x6c\x61\x67\x6f\x6e\x64\x65\x6c\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x32\x3d\x77\x77\x77\x2e\x74\x69\x65\x74\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x33\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x73\x61\x6c\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x34\x3d\x77\x77\x77\x2e\x6e\x61\x76\x61\x74\x72\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x35\x3d\x77\x77\x77\x2e\x72\x69\x76\x65\x72\x61\x64\x65\x66\x72\x65\x73\x6e\x65\x64\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x36\x3d\x77\x77\x77\x2e\x65\x6c\x6d\x73\x61\x6e\x67\x69\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x37\x3d\x77\x77\x77\x2e\x74\x61\x6a\x6f\x73\x61\x6c\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x38\x3d\x77\x77\x77\x2e\x76\x61\x6c\x6c\x65\x61\x6d\x62\x72\x6f\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x39\x3d\x77\x77\x77\x2e\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x76\x61\x6c\x6c\x65\x64\x65\x6c\x61\x6c\x61\x67\x6f\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x37\x30\x3d\x77\x77\x77\x2e\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x76\x61\x6c\x6c\x65\x64\x65\x6c\x6a\x65\x72\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x37\x31\x3d\x77\x77\x77\x2e\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x76\x65\x67\x61\x73\x61\x6c\x74\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x37\x32\x3d\x77\x77\x77\x2e\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x37\x33\x3d\x77\x77\x77\x2e\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x7a\x6f\x6e\x61\x63\x65\x6e\x74\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x37\x34\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x75\x65\x72\x63\x61\x73\x2d\x69\x62\x6f\x72\x65\x73\x2d\x6a\x61\x72\x61\x2e\x65\x73", - 12589}, - } + .name = "very long DN", + .compat_str = + "C=ES,ST=CACERES,L=CACERES,O=DIPUTACION PROVINCIAL DE CACERES,OU=DIPUTACION PROVINCIAL DE CACERES,CN=www.dip-caceres.es,EMAIL=webmaster@dip-caceres.es,2.5.29.17=#1382304b444e532e313d6162616469612e65732c444e532e323d61626572747572612e65732c444e532e333d616365626f2e65732c444e532e343d61636568756368652e65732c444e532e353d6163656974756e612e65732c444e532e363d61686967616c2e65732c444e532e373d616c61676f6e64656c72696f2e65732c444e532e383d616c636f6c6c6172696e2e65732c444e532e393d6179746f616c62616c612e65732c444e532e31303d6179746f616c63616e746172612e65732c444e532e31313d616c637565736361722e65732c444e532e31323d616c64656163656e74656e6572612e65732c444e532e31333d616c64656164656c63616e6f2e65732c444e532e31343d6c61616c64656164656c6f626973706f2e65732c444e532e31353d616c6465616e7565766164656c61766572612e65732c444e532e31363d616c6465616e7565766164656c63616d696e6f2e65732c444e532e31373d616c64656875656c6164656c6a657274652e65732c444e532e31383d6179746f616c69612e65732c444e532e31393d616c69736564612e65732c444e532e32303d616c6d6172617a2e65732c444e532e32313d616c6d6f686172696e2e65732c444e532e32323d6179746f6172726f796f64656c616c757a2e65732c444e532e32333d6172726f796f6d6f6c696e6f732e65732c444e532e32343d6172726f796f6d6f6c696e6f7364656c61766572612e65732c444e532e32353d62616e6f7364656d6f6e74656d61796f722e65732c444e532e32363d6261727261646f2e65732c444e532e32373d62656c76697364656d6f6e726f792e65732c444e532e32383d62656e71756572656e6369612e65732c444e532e32393d626572726f63616c656a6f2e65732c444e532e33303d6265727a6f63616e612e65732c444e532e33313d626f686f6e616c646569626f722e65732c444e532e33323d626f74696a612e65732c444e532e33333d62726f7a61732e65732c444e532e33343d636162616e617364656c63617374696c6c6f2e65732c444e532e33353d636162657a6162656c6c6f73612e65732c444e532e33363d636162657a75656c6164656c76616c6c652e65732c444e532e33373d6361627265726f2e65732c444e532e33383d636163686f7272696c6c612e65732c444e532e33393d636164616c736f2e65732c444e532e34303d63616c7a6164696c6c612e65732c444e532e34313d63616d696e6f6d6f726973636f2e65732c444e532e34323d63616d70696c6c6f646564656c6569746f73612e65732c444e532e34333d63616d706f6c756761722e65732c444e532e34343d63616e616d65726f2e65732c444e532e34353d63616e61766572616c2e65732c444e532e34363d63617262616a6f2e65732c444e532e34373d6361726361626f736f2e65732c444e532e34383d63617272617363616c656a6f2e65732c444e532e34393d63617361726465636163657265732e65732c444e532e35303d6361736172646570616c6f6d65726f2e65732c444e532e35313d6361736172657364656c61736875726465732e65732c444e532e35323d63617361736465646f6e616e746f6e696f2e65732c444e532e35333d63617361736465646f6e676f6d657a2e65732c444e532e35343d636173617364656c63617374616e61722e65732c444e532e35353d636173617364656c6d6f6e74652e65732c444e532e35363d636173617364656d696c6c616e2e65732c444e532e35373d636173617364656d697261766574652e65732c444e532e35383d6361736174656a6164612e65732c444e532e35393d636173696c6c61736465636f7269612e65732c444e532e36303d63617374616e6172646569626f722e65732c444e532e36313d6365636c6176696e2e65732c444e532e36323d636564696c6c6f2e65732c444e532e36333d636572657a6f2e65732c444e532e36343d63696c6c65726f732e65732c444e532e36353d636f6c6c61646f2e65732c444e532e36363d636f6e71756973746164656c617369657272612e65732c444e532e36373d636f7269612e65732c444e532e36383d637561636f73646579757374652e65732c444e532e36393d6c6163756d6272652e65732c444e532e37303d64656c6569746f73612e65732c444e532e37313d64657363617267616d617269612e65732c444e532e37323d656c6a61732e65732c444e532e37333d657363757269616c2e65732c444e532e37343d667265736e65646f736f646569626f722e65732c444e532e37353d67616c697374656f2e65732c444e532e37363d6761726369617a2e65732c444e532e37373d6c6167617267616e74612e65732c444e532e37383d67617267616e74616c616f6c6c612e65732c444e532e37393d67617267616e74696c6c612e65732c444e532e38303d67617267756572612e65732c444e532e38313d676172726f76696c6c61736465616c636f6e657461722e65732c444e532e38323d67617276696e2e65732c444e532e38333d676174612e65732c444e532e38343d6179746f656c676f72646f2e65732c444e532e38353d6c616772616e6a612e65732c444e532e38363d6c616772616e6a6164656772616e6164696c6c612e65732c444e532e38373d6179756e74616d69656e746f646567756164616c7570652e65732c444e532e38383d6775696a6f6465636f7269612e65732c444e532e38393d6775696a6f646567616c697374656f2e65732c444e532e39303d6775696a6f64656772616e6164696c6c612e65732c444e532e39313d6775696a6f646573616e7461626172626172612e65732c444e532e39323d6865726775696a75656c612e65732c444e532e39333d6865726e616e706572657a2e65732c444e532e39343d686572726572616465616c63616e746172612e65732c444e532e39353d68657272657275656c612e65732c444e532e39363d6865727661732e65732c444e532e39373d686967756572612e65732c444e532e39383d68696e6f6a616c2e65732c444e532e39393d686f6c67756572612e65732c444e532e3130303d686f796f732e65732c444e532e3130313d6875656c6167612e65732c444e532e3130323d6962616865726e616e646f2e65732c444e532e3130333d6a6172616963656a6f2e65732c444e532e3130343d6a617261697a64656c61766572612e65732c444e532e3130353d6a6172616e64696c6c6164656c61766572612e65732c444e532e3130363d6a6172696c6c612e65732c444e532e3130373d6a657274652e65732c444e532e3130383d6c616472696c6c61722e65732c444e532e3130393d6c6f67726f73616e2e65732c444e532e3131303d6c6f73617264656c61766572612e65732c444e532e3131313d6d6164726967616c656a6f2e65732c444e532e3131323d6d6164726967616c64656c61766572612e65732c444e532e3131333d6d6164726f6e6572612e65732c444e532e3131343d6d616a616461732e65732c444e532e3131353d6d616c706172746964616465636163657265732e65732c444e532e3131363d6d616c706172746964616465706c6173656e6369612e65732c444e532e3131373d6d617263686167617a2e65732c444e532e3131383d6d6174616465616c63616e746172612e65732c444e532e3131393d6d656d6272696f2e65732c444e532e3132303d6d65736173646569626f722e65732c444e532e3132313d6d69616a616461732e65732c444e532e3132323d6d696c6c616e65732e65732c444e532e3132333d6d69726162656c2e65732c444e532e3132343d6d6f686564617364656772616e6164696c6c612e65732c444e532e3132353d6d6f6e726f792e65732c444e532e3132363d6d6f6e74616e6368657a2e65732c444e532e3132373d6d6f6e74656865726d6f736f2e65732c444e532e3132383d6d6f72616c656a612e65732c444e532e3132393d6d6f7263696c6c6f2e65732c444e532e3133303d6e617661636f6e63656a6f2e65732c444e532e3133313d6e6176616c76696c6c6172646569626f722e65732c444e532e3133323d6e6176616c6d6f72616c64656c616d6174612e65732c444e532e3133333d6e6176617364656c6d6164726f6e6f2e65732c444e532e3133343d6e6176617472617369657272612e65732c444e532e3133353d6e6176657a75656c61732e65732c444e532e3133363d6e756e6f6d6f72616c2e65732c444e532e3133373d6f6c6976616465706c6173656e6369612e65732c444e532e3133383d70616c6f6d65726f2e65732c444e532e3133393d70617361726f6e64656c61766572612e65732c444e532e3134303d706564726f736f64656163696d2e65732c444e532e3134313d706572616c65646164656c616d6174612e65732c444e532e3134323d706572616c656461646573616e726f6d616e2e65732c444e532e3134333d706572616c657364656c70756572746f2e65732c444e532e3134343d7065736375657a612e65732c444e532e3134353d6c6170657367612e65732c444e532e3134363d70696564726173616c6261732e65732c444e532e3134373d70696e6f6672616e71756561646f2e65732c444e532e3134383d70696f726e616c2e65732c444e532e3134393d706c6173656e7a75656c612e65732c444e532e3135303d706f7274616a652e65732c444e532e3135313d706f7274657a75656c6f2e65732c444e532e3135323d706f7a75656c6f64657a61727a6f6e2e65732c444e532e3135333d707565626c6f6e7565766f64656d6972616d6f6e7465732e65732c444e532e3135343d70756572746f646573616e74616372757a2e65732c444e532e3135353d7265626f6c6c61722e65732c444e532e3135363d72696f6c6f626f732e65732c444e532e3135373d726f626c6564696c6c6f6465676174612e65732c444e532e3135383d726f626c6564696c6c6f64656c61766572612e65732c444e532e3135393d726f626c6564696c6c6f64657472756a696c6c6f2c444e532e3136303d726f626c65646f6c6c616e6f2e65732c444e532e3136313d726f6d616e676f72646f2e65732c444e532e3136323d7275616e65732e65732c444e532e3136333d73616c6f72696e6f2e65732c444e532e3136343d73616c7661746965727261646573616e746961676f2e65732c444e532e3136353d73616e6d617274696e646574726576656a6f2e65732c444e532e3136363d6179746f73616e7461616e612e65732c444e532e3136373d73616e74616372757a64656c617369657272612e65732c444e532e3136383d73616e74616372757a646570616e69616775612e65732c444e532e3136393d73616e74616d6172746164656d6167617363612e65732c444e532e3137303d73616e746961676f64656c63616d706f2e65732c444e532e3137313d73616e746962616e657a656c616c746f2e65732c444e532e3137323d73616e746962616e657a656c62616a6f2e65732c444e532e3137333d736175636564696c6c612e65732c444e532e3137343d7365677572616465746f726f2e65732c444e532e3137353d736572726164696c6c612e65732c444e532e3137363d73657272656a6f6e2e65732c444e532e3137373d73696572726164656675656e7465732e65732c444e532e3137383d74616c6176616e2e65732c444e532e3137393d74616c6176657275656c6164656c61766572612e65732c444e532e3138303d74616c617975656c612e65732c444e532e3138313d74656a65646164657469657461722e65732c444e532e3138323d746f72696c2e65732c444e532e3138333d746f726e6176616361732e65732c444e532e3138343d6179746f656c746f726e6f2e65732c444e532e3138353d746f72726563696c6c6164656c6f73616e67656c65732e65732c444e532e3138363d746f72726563696c6c617364656c6174696573612e65732c444e532e3138373d746f7272656465646f6e6d696775656c2e65732c444e532e3138383d746f727265646573616e74616d617269612e65732c444e532e3138393d746f7272656a6f6e656c727562696f2e65732c444e532e3139303d746f7272656a6f6e63696c6c6f2e65732c444e532e3139313d746f7272656d656e67612e65732c444e532e3139323d746f7272656d6f6368612e65732c444e532e3139333d746f7272656f7267617a2e65732c444e532e3139343d746f7272657175656d6164612e65732c444e532e3139353d76616c64617374696c6c61732e65732c444e532e3139363d76616c646563616e6173646574616a6f2e65732c444e532e3139373d76616c64656675656e7465732e65732c444e532e3139383d76616c646568756e6361722e65732c444e532e3139393d76616c6465696e69676f732e65732c444e532e3230303d76616c64656c6163617361646574616a6f2e65732c444e532e3230313d76616c64656d6f72616c65732e65732c444e532e3230323d76616c64656f626973706f2e65732c444e532e3230333d76616c646573616c6f722e65732c444e532e3230343d76616c72696f2e65732c444e532e3230353d76616c656e6369616465616c63616e746172612e65732c444e532e3230363d76616c766572646564656c61766572612e65732c444e532e3230373d76616c766572646564656c667265736e6f2e65732c444e532e3230383d766567617669616e612e65732c444e532e3230393d7669616e64617264656c61766572612e65732c444e532e3231303d76696c6c6164656c63616d706f2e65732c444e532e3231313d76696c6c6164656c7265792e65732c444e532e3231323d76696c6c616d65736961732e65732c444e532e3231333d76696c6c616d69656c2e65732c444e532e3231343d76696c6c616e7565766164656c617369657272612e65732c444e532e3231353d76696c6c617264656c706564726f736f2e65732c444e532e3231363d76696c6c61726465706c6173656e6369612e65732c444e532e3231373d76696c6c61736275656e61736465676174612e65732c444e532e3231383d7a61727a6164656772616e6164696c6c612e65732c444e532e3231393d7a61727a6164656d6f6e74616e6368657a2e65732c444e532e3232303d7a61727a616c616d61796f722e65732c444e532e3232313d7a6f726974612e65732c444e532e3232323d726f73616c656a6f2e65732c444e532e3232333d766567617669616e612e65732c444e532e3232343d616c61676f6e64656c72696f2e65732c444e532e3232353d7469657461722e65732c444e532e3232363d76616c646573616c6f722e65732c444e532e3232373d6e6176617472617369657272612e65732c444e532e3232383d7269766572616465667265736e65646f73612e65732c444e532e3232393d656c6d73616e67696c2e65732c444e532e3233303d74616a6f73616c6f722e65732c444e532e3233313d76616c6c65616d62726f7a2e65732c444e532e3233323d6d616e636f6d756e6964616476616c6c6564656c616c61676f6e2e65732c444e532e3233333d6d616e636f6d756e6964616476616c6c6564656c6a657274652e65732c444e532e3233343d6d616e636f6d756e696461647665676173616c7461732e65732c444e532e3233353d6d616e636f6d756e6964616464656c61766572612e65732c444e532e3233363d6d616e636f6d756e696461647a6f6e6163656e74726f2e65732c444e532e3233373d76696c6c7565726361732d69626f7265732d6a6172612e65732c444e532e3233383d7777772e6162616469612e65732c444e532e3233393d7777772e61626572747572612e65732c444e532e3234303d7777772e616365626f2e65732c444e532e3234313d7777772e61636568756368652e65732c444e532e3234323d7777772e6163656974756e612e65732c444e532e3234333d7777772e61686967616c2e65732c444e532e3234343d7777772e616c61676f6e64656c72696f2e65732c444e532e3234353d7777772e616c636f6c6c6172696e2e65732c444e532e3234363d7777772e6179746f616c62616c612e65732c444e532e3234373d7777772e6179746f616c63616e746172612e65732c444e532e3234383d7777772e616c637565736361722e65732c444e532e3234393d7777772e616c64656163656e74656e6572612e65732c444e532e3235303d7777772e616c64656164656c63616e6f2e65732c444e532e3235313d7777772e6c61616c64656164656c6f626973706f2e65732c444e532e3235323d7777772e616c6465616e7565766164656c61766572612e65732c444e532e3235333d7777772e616c6465616e7565766164656c63616d696e6f2e65732c444e532e3235343d7777772e616c64656875656c6164656c6a657274652e65732c444e532e3235353d7777772e6179746f616c69612e65732c444e532e3235363d7777772e616c69736564612e65732c444e532e3235373d7777772e616c6d6172617a2e65732c444e532e3235383d7777772e616c6d6f686172696e2e65732c444e532e3235393d7777772e6179746f6172726f796f64656c616c757a2e65732c444e532e3236303d7777772e6172726f796f6d6f6c696e6f732e65732c444e532e3236313d7777772e6172726f796f6d6f6c696e6f7364656c61766572612e65732c444e532e3236323d7777772e62616e6f7364656d6f6e74656d61796f722e65732c444e532e3236333d7777772e6261727261646f2e65732c444e532e3236343d7777772e62656c76697364656d6f6e726f792e65732c444e532e3236353d7777772e62656e71756572656e6369612e65732c444e532e3236363d7777772e626572726f63616c656a6f2e65732c444e532e3236373d7777772e6265727a6f63616e612e65732c444e532e3236383d7777772e626f686f6e616c646569626f722e65732c444e532e3236393d7777772e626f74696a612e65732c444e532e3237303d7777772e62726f7a61732e65732c444e532e3237313d7777772e636162616e617364656c63617374696c6c6f2e65732c444e532e3237323d7777772e636162657a6162656c6c6f73612e65732c444e532e3237333d7777772e636162657a75656c6164656c76616c6c652e65732c444e532e3237343d7777772e6361627265726f2e65732c444e532e3237353d7777772e636163686f7272696c6c612e65732c444e532e3237363d7777772e636164616c736f2e65732c444e532e3237373d7777772e63616c7a6164696c6c612e65732c444e532e3237383d7777772e63616d696e6f6d6f726973636f2e65732c444e532e3237393d7777772e63616d70696c6c6f646564656c6569746f73612e65732c444e532e3238303d7777772e63616d706f6c756761722e65732c444e532e3238313d7777772e63616e616d65726f2e65732c444e532e3238323d7777772e63616e61766572616c2e65732c444e532e3238333d7777772e63617262616a6f2e65732c444e532e3238343d7777772e6361726361626f736f2e65732c444e532e3238353d7777772e63617272617363616c656a6f2e65732c444e532e3238363d7777772e63617361726465636163657265732e65732c444e532e3238373d7777772e6361736172646570616c6f6d65726f2e65732c444e532e3238383d7777772e6361736172657364656c61736875726465732e65732c444e532e3238393d7777772e63617361736465646f6e616e746f6e696f2e65732c444e532e3239303d7777772e63617361736465646f6e676f6d657a2e65732c444e532e3239313d7777772e636173617364656c63617374616e61722e65732c444e532e3239323d7777772e636173617364656c6d6f6e74652e65732c444e532e3239333d7777772e636173617364656d696c6c616e2e65732c444e532e3239343d7777772e636173617364656d697261766574652e65732c444e532e3239353d7777772e6361736174656a6164612e65732c444e532e3239363d7777772e636173696c6c61736465636f7269612e65732c444e532e3239373d7777772e63617374616e6172646569626f722e65732c444e532e3239383d7777772e6365636c6176696e2e65732c444e532e3239393d7777772e636564696c6c6f2e65732c444e532e3330303d7777772e636572657a6f2e65732c444e532e3330313d7777772e63696c6c65726f732e65732c444e532e3330323d7777772e636f6c6c61646f2e65732c444e532e3330333d7777772e636f6e71756973746164656c617369657272612e65732c444e532e3330343d7777772e636f7269612e65732c444e532e3330353d7777772e637561636f73646579757374652e65732c444e532e3330363d7777772e6c6163756d6272652e65732c444e532e3330373d7777772e64656c6569746f73612e65732c444e532e3330383d7777772e64657363617267616d617269612e65732c444e532e3330393d7777772e656c6a61732e65732c444e532e3331303d7777772e657363757269616c2e65732c444e532e3331313d7777772e667265736e65646f736f646569626f722e65732c444e532e3331323d7777772e67616c697374656f2e65732c444e532e3331333d7777772e6761726369617a2e65732c444e532e3331343d7777772e6c6167617267616e74612e65732c444e532e3331353d7777772e67617267616e74616c616f6c6c612e65732c444e532e3331363d7777772e67617267616e74696c6c612e65732c444e532e3331373d7777772e67617267756572612e65732c444e532e3331383d7777772e676172726f76696c6c61736465616c636f6e657461722e65732c444e532e3331393d7777772e67617276696e2e65732c444e532e3332303d7777772e676174612e65732c444e532e3332313d7777772e6179746f656c676f72646f2e65732c444e532e3332323d7777772e6c616772616e6a612e65732c444e532e3332333d7777772e6c616772616e6a6164656772616e6164696c6c612e65732c444e532e3332343d7777772e6179756e74616d69656e746f646567756164616c7570652e65732c444e532e3332353d7777772e6775696a6f6465636f7269612e65732c444e532e3332363d7777772e6775696a6f646567616c697374656f2e65732c444e532e3332373d7777772e6775696a6f64656772616e6164696c6c612e65732c444e532e3332383d7777772e6775696a6f646573616e7461626172626172612e65732c444e532e3332393d7777772e6865726775696a75656c612e65732c444e532e3333303d7777772e6865726e616e706572657a2e65732c444e532e3333313d7777772e686572726572616465616c63616e746172612e65732c444e532e3333323d7777772e68657272657275656c612e65732c444e532e3333333d7777772e6865727661732e65732c444e532e3333343d7777772e686967756572612e65732c444e532e3333353d7777772e68696e6f6a616c2e65732c444e532e3333363d7777772e686f6c67756572612e65732c444e532e3333373d7777772e686f796f732e65732c444e532e3333383d7777772e6875656c6167612e65732c444e532e3333393d7777772e6962616865726e616e646f2e65732c444e532e3334303d7777772e6a6172616963656a6f2e65732c444e532e3334313d7777772e6a617261697a64656c61766572612e65732c444e532e3334323d7777772e6a6172616e64696c6c6164656c61766572612e65732c444e532e3334333d7777772e6a6172696c6c612e65732c444e532e3334343d7777772e6a657274652e65732c444e532e3334353d7777772e6c616472696c6c61722e65732c444e532e3334363d7777772e6c6f67726f73616e2e65732c444e532e3334373d7777772e6c6f73617264656c61766572612e65732c444e532e3334383d7777772e6d6164726967616c656a6f2e65732c444e532e3334393d7777772e6d6164726967616c64656c61766572612e65732c444e532e3335303d7777772e6d6164726f6e6572612e65732c444e532e3335313d7777772e6d616a616461732e65732c444e532e3335323d7777772e6d616c706172746964616465636163657265732e65732c444e532e3335333d7777772e6d616c706172746964616465706c6173656e6369612e65732c444e532e3335343d7777772e6d617263686167617a2e65732c444e532e3335353d7777772e6d6174616465616c63616e746172612e65732c444e532e3335363d7777772e6d656d6272696f2e65732c444e532e3335373d7777772e6d65736173646569626f722e65732c444e532e3335383d7777772e6d69616a616461732e65732c444e532e3335393d7777772e6d696c6c616e65732e65732c444e532e3336303d7777772e6d69726162656c2e65732c444e532e3336313d7777772e6d6f686564617364656772616e6164696c6c612e65732c444e532e3336323d7777772e6d6f6e726f792e65732c444e532e3336333d7777772e6d6f6e74616e6368657a2e65732c444e532e3336343d7777772e6d6f6e74656865726d6f736f2e65732c444e532e3336353d7777772e6d6f72616c656a612e65732c444e532e3336363d7777772e6d6f7263696c6c6f2e65732c444e532e3336373d7777772e6e617661636f6e63656a6f2e65732c444e532e3336383d7777772e6e6176616c76696c6c6172646569626f722e65732c444e532e3336393d7777772e6e6176616c6d6f72616c64656c616d6174612e65732c444e532e3337303d7777772e6e6176617364656c6d6164726f6e6f2e65732c444e532e3337313d7777772e6e6176617472617369657272612e65732c444e532e3337323d7777772e6e6176657a75656c61732e65732c444e532e3337333d7777772e6e756e6f6d6f72616c2e65732c444e532e3337343d7777772e6f6c6976616465706c6173656e6369612e65732c444e532e3337353d7777772e70616c6f6d65726f2e65732c444e532e3337363d7777772e70617361726f6e64656c61766572612e65732c444e532e3337373d7777772e706564726f736f64656163696d2e65732c444e532e3337383d7777772e706572616c65646164656c616d6174612e65732c444e532e3337393d7777772e706572616c656461646573616e726f6d616e2e65732c444e532e3338303d7777772e706572616c657364656c70756572746f2e65732c444e532e3338313d7777772e7065736375657a612e65732c444e532e3338323d7777772e6c6170657367612e65732c444e532e3338333d7777772e70696564726173616c6261732e65732c444e532e3338343d7777772e70696e6f6672616e71756561646f2e65732c444e532e3338353d7777772e70696f726e616c2e65732c444e532e3338363d7777772e706c6173656e7a75656c612e65732c444e532e3338373d7777772e706f7274616a652e65732c444e532e3338383d7777772e706f7274657a75656c6f2e65732c444e532e3338393d7777772e706f7a75656c6f64657a61727a6f6e2e65732c444e532e3339303d7777772e707565626c6f6e7565766f64656d6972616d6f6e7465732e65732c444e532e3339313d7777772e70756572746f646573616e74616372757a2e65732c444e532e3339323d7777772e7265626f6c6c61722e65732c444e532e3339333d7777772e72696f6c6f626f732e65732c444e532e3339343d7777772e726f626c6564696c6c6f6465676174612e65732c444e532e3339353d7777772e726f626c6564696c6c6f64656c61766572612e65732c444e532e3339363d7777772e726f626c6564696c6c6f64657472756a696c6c6f2c444e532e3339373d7777772e726f626c65646f6c6c616e6f2e65732c444e532e3339383d7777772e726f6d616e676f72646f2e65732c444e532e3339393d7777772e7275616e65732e65732c444e532e3430303d7777772e73616c6f72696e6f2e65732c444e532e3430313d7777772e73616c7661746965727261646573616e746961676f2e65732c444e532e3430323d7777772e73616e6d617274696e646574726576656a6f2e65732c444e532e3430333d7777772e6179746f73616e7461616e612e65732c444e532e3430343d7777772e73616e74616372757a64656c617369657272612e65732c444e532e3430353d7777772e73616e74616372757a646570616e69616775612e65732c444e532e3430363d7777772e73616e74616d6172746164656d6167617363612e65732c444e532e3430373d7777772e73616e746961676f64656c63616d706f2e65732c444e532e3430383d7777772e73616e746962616e657a656c616c746f2e65732c444e532e3430393d7777772e73616e746962616e657a656c62616a6f2e65732c444e532e3431303d7777772e736175636564696c6c612e65732c444e532e3431313d7777772e7365677572616465746f726f2e65732c444e532e3431323d7777772e736572726164696c6c612e65732c444e532e3431333d7777772e73657272656a6f6e2e65732c444e532e3431343d7777772e73696572726164656675656e7465732e65732c444e532e3431353d7777772e74616c6176616e2e65732c444e532e3431363d7777772e74616c6176657275656c6164656c61766572612e65732c444e532e3431373d7777772e74616c617975656c612e65732c444e532e3431383d7777772e74656a65646164657469657461722e65732c444e532e3431393d7777772e746f72696c2e65732c444e532e3432303d7777772e746f726e6176616361732e65732c444e532e3432313d7777772e6179746f656c746f726e6f2e65732c444e532e3432323d7777772e746f72726563696c6c6164656c6f73616e67656c65732e65732c444e532e3432333d7777772e746f72726563696c6c617364656c6174696573612e65732c444e532e3432343d7777772e746f7272656465646f6e6d696775656c2e65732c444e532e3432353d7777772e746f727265646573616e74616d617269612e65732c444e532e3432363d7777772e746f7272656a6f6e656c727562696f2e65732c444e532e3432373d7777772e746f7272656a6f6e63696c6c6f2e65732c444e532e3432383d7777772e746f7272656d656e67612e65732c444e532e3432393d7777772e746f7272656d6f6368612e65732c444e532e3433303d7777772e746f7272656f7267617a2e65732c444e532e3433313d7777772e746f7272657175656d6164612e65732c444e532e3433323d7777772e76616c64617374696c6c61732e65732c444e532e3433333d7777772e76616c646563616e6173646574616a6f2e65732c444e532e3433343d7777772e76616c64656675656e7465732e65732c444e532e3433353d7777772e76616c646568756e6361722e65732c444e532e3433363d7777772e76616c6465696e69676f732e65732c444e532e3433373d7777772e76616c64656c6163617361646574616a6f2e65732c444e532e3433383d7777772e76616c64656d6f72616c65732e65732c444e532e3433393d7777772e76616c64656f626973706f2e65732c444e532e3434303d7777772e76616c646573616c6f722e65732c444e532e3434313d7777772e76616c72696f2e65732c444e532e3434323d7777772e76616c656e6369616465616c63616e746172612e65732c444e532e3434333d7777772e76616c766572646564656c61766572612e65732c444e532e3434343d7777772e76616c766572646564656c667265736e6f2e65732c444e532e3434353d7777772e766567617669616e612e65732c444e532e3434363d7777772e7669616e64617264656c61766572612e65732c444e532e3434373d7777772e76696c6c6164656c63616d706f2e65732c444e532e3434383d7777772e76696c6c6164656c7265792e65732c444e532e3434393d7777772e76696c6c616d65736961732e65732c444e532e3435303d7777772e76696c6c616d69656c2e65732c444e532e3435313d7777772e76696c6c616e7565766164656c617369657272612e65732c444e532e3435323d7777772e76696c6c617264656c706564726f736f2e65732c444e532e3435333d7777772e76696c6c61726465706c6173656e6369612e65732c444e532e3435343d7777772e76696c6c61736275656e61736465676174612e65732c444e532e3435353d7777772e7a61727a6164656772616e6164696c6c612e65732c444e532e3435363d7777772e7a61727a6164656d6f6e74616e6368657a2e65732c444e532e3435373d7777772e7a61727a616c616d61796f722e65732c444e532e3435383d7777772e7a6f726974612e65732c444e532e3435393d7777772e726f73616c656a6f2e65732c444e532e3436303d7777772e766567617669616e612e65732c444e532e3436313d7777772e616c61676f6e64656c72696f2e65732c444e532e3436323d7777772e7469657461722e65732c444e532e3436333d7777772e76616c646573616c6f722e65732c444e532e3436343d7777772e6e6176617472617369657272612e65732c444e532e3436353d7777772e7269766572616465667265736e65646f73612e65732c444e532e3436363d7777772e656c6d73616e67696c2e65732c444e532e3436373d7777772e74616a6f73616c6f722e65732c444e532e3436383d7777772e76616c6c65616d62726f7a2e65732c444e532e3436393d7777772e6d616e636f6d756e6964616476616c6c6564656c616c61676f6e2e65732c444e532e3437303d7777772e6d616e636f6d756e6964616476616c6c6564656c6a657274652e65732c444e532e3437313d7777772e6d616e636f6d756e696461647665676173616c7461732e65732c444e532e3437323d7777772e6d616e636f6d756e6964616464656c61766572612e65732c444e532e3437333d7777772e6d616e636f6d756e696461647a6f6e6163656e74726f2e65732c444e532e3437343d7777772e76696c6c7565726361732d69626f7265732d6a6172612e6573", + .str = "2.5.29.17=#1382304b444e532e313d6162616469612e65732c444e532e323d61626572747572612e65732c444e532e333d616365626f2e65732c444e532e343d61636568756368652e65732c444e532e353d6163656974756e612e65732c444e532e363d61686967616c2e65732c444e532e373d616c61676f6e64656c72696f2e65732c444e532e383d616c636f6c6c6172696e2e65732c444e532e393d6179746f616c62616c612e65732c444e532e31303d6179746f616c63616e746172612e65732c444e532e31313d616c637565736361722e65732c444e532e31323d616c64656163656e74656e6572612e65732c444e532e31333d616c64656164656c63616e6f2e65732c444e532e31343d6c61616c64656164656c6f626973706f2e65732c444e532e31353d616c6465616e7565766164656c61766572612e65732c444e532e31363d616c6465616e7565766164656c63616d696e6f2e65732c444e532e31373d616c64656875656c6164656c6a657274652e65732c444e532e31383d6179746f616c69612e65732c444e532e31393d616c69736564612e65732c444e532e32303d616c6d6172617a2e65732c444e532e32313d616c6d6f686172696e2e65732c444e532e32323d6179746f6172726f796f64656c616c757a2e65732c444e532e32333d6172726f796f6d6f6c696e6f732e65732c444e532e32343d6172726f796f6d6f6c696e6f7364656c61766572612e65732c444e532e32353d62616e6f7364656d6f6e74656d61796f722e65732c444e532e32363d6261727261646f2e65732c444e532e32373d62656c76697364656d6f6e726f792e65732c444e532e32383d62656e71756572656e6369612e65732c444e532e32393d626572726f63616c656a6f2e65732c444e532e33303d6265727a6f63616e612e65732c444e532e33313d626f686f6e616c646569626f722e65732c444e532e33323d626f74696a612e65732c444e532e33333d62726f7a61732e65732c444e532e33343d636162616e617364656c63617374696c6c6f2e65732c444e532e33353d636162657a6162656c6c6f73612e65732c444e532e33363d636162657a75656c6164656c76616c6c652e65732c444e532e33373d6361627265726f2e65732c444e532e33383d636163686f7272696c6c612e65732c444e532e33393d636164616c736f2e65732c444e532e34303d63616c7a6164696c6c612e65732c444e532e34313d63616d696e6f6d6f726973636f2e65732c444e532e34323d63616d70696c6c6f646564656c6569746f73612e65732c444e532e34333d63616d706f6c756761722e65732c444e532e34343d63616e616d65726f2e65732c444e532e34353d63616e61766572616c2e65732c444e532e34363d63617262616a6f2e65732c444e532e34373d6361726361626f736f2e65732c444e532e34383d63617272617363616c656a6f2e65732c444e532e34393d63617361726465636163657265732e65732c444e532e35303d6361736172646570616c6f6d65726f2e65732c444e532e35313d6361736172657364656c61736875726465732e65732c444e532e35323d63617361736465646f6e616e746f6e696f2e65732c444e532e35333d63617361736465646f6e676f6d657a2e65732c444e532e35343d636173617364656c63617374616e61722e65732c444e532e35353d636173617364656c6d6f6e74652e65732c444e532e35363d636173617364656d696c6c616e2e65732c444e532e35373d636173617364656d697261766574652e65732c444e532e35383d6361736174656a6164612e65732c444e532e35393d636173696c6c61736465636f7269612e65732c444e532e36303d63617374616e6172646569626f722e65732c444e532e36313d6365636c6176696e2e65732c444e532e36323d636564696c6c6f2e65732c444e532e36333d636572657a6f2e65732c444e532e36343d63696c6c65726f732e65732c444e532e36353d636f6c6c61646f2e65732c444e532e36363d636f6e71756973746164656c617369657272612e65732c444e532e36373d636f7269612e65732c444e532e36383d637561636f73646579757374652e65732c444e532e36393d6c6163756d6272652e65732c444e532e37303d64656c6569746f73612e65732c444e532e37313d64657363617267616d617269612e65732c444e532e37323d656c6a61732e65732c444e532e37333d657363757269616c2e65732c444e532e37343d667265736e65646f736f646569626f722e65732c444e532e37353d67616c697374656f2e65732c444e532e37363d6761726369617a2e65732c444e532e37373d6c6167617267616e74612e65732c444e532e37383d67617267616e74616c616f6c6c612e65732c444e532e37393d67617267616e74696c6c612e65732c444e532e38303d67617267756572612e65732c444e532e38313d676172726f76696c6c61736465616c636f6e657461722e65732c444e532e38323d67617276696e2e65732c444e532e38333d676174612e65732c444e532e38343d6179746f656c676f72646f2e65732c444e532e38353d6c616772616e6a612e65732c444e532e38363d6c616772616e6a6164656772616e6164696c6c612e65732c444e532e38373d6179756e74616d69656e746f646567756164616c7570652e65732c444e532e38383d6775696a6f6465636f7269612e65732c444e532e38393d6775696a6f646567616c697374656f2e65732c444e532e39303d6775696a6f64656772616e6164696c6c612e65732c444e532e39313d6775696a6f646573616e7461626172626172612e65732c444e532e39323d6865726775696a75656c612e65732c444e532e39333d6865726e616e706572657a2e65732c444e532e39343d686572726572616465616c63616e746172612e65732c444e532e39353d68657272657275656c612e65732c444e532e39363d6865727661732e65732c444e532e39373d686967756572612e65732c444e532e39383d68696e6f6a616c2e65732c444e532e39393d686f6c67756572612e65732c444e532e3130303d686f796f732e65732c444e532e3130313d6875656c6167612e65732c444e532e3130323d6962616865726e616e646f2e65732c444e532e3130333d6a6172616963656a6f2e65732c444e532e3130343d6a617261697a64656c61766572612e65732c444e532e3130353d6a6172616e64696c6c6164656c61766572612e65732c444e532e3130363d6a6172696c6c612e65732c444e532e3130373d6a657274652e65732c444e532e3130383d6c616472696c6c61722e65732c444e532e3130393d6c6f67726f73616e2e65732c444e532e3131303d6c6f73617264656c61766572612e65732c444e532e3131313d6d6164726967616c656a6f2e65732c444e532e3131323d6d6164726967616c64656c61766572612e65732c444e532e3131333d6d6164726f6e6572612e65732c444e532e3131343d6d616a616461732e65732c444e532e3131353d6d616c706172746964616465636163657265732e65732c444e532e3131363d6d616c706172746964616465706c6173656e6369612e65732c444e532e3131373d6d617263686167617a2e65732c444e532e3131383d6d6174616465616c63616e746172612e65732c444e532e3131393d6d656d6272696f2e65732c444e532e3132303d6d65736173646569626f722e65732c444e532e3132313d6d69616a616461732e65732c444e532e3132323d6d696c6c616e65732e65732c444e532e3132333d6d69726162656c2e65732c444e532e3132343d6d6f686564617364656772616e6164696c6c612e65732c444e532e3132353d6d6f6e726f792e65732c444e532e3132363d6d6f6e74616e6368657a2e65732c444e532e3132373d6d6f6e74656865726d6f736f2e65732c444e532e3132383d6d6f72616c656a612e65732c444e532e3132393d6d6f7263696c6c6f2e65732c444e532e3133303d6e617661636f6e63656a6f2e65732c444e532e3133313d6e6176616c76696c6c6172646569626f722e65732c444e532e3133323d6e6176616c6d6f72616c64656c616d6174612e65732c444e532e3133333d6e6176617364656c6d6164726f6e6f2e65732c444e532e3133343d6e6176617472617369657272612e65732c444e532e3133353d6e6176657a75656c61732e65732c444e532e3133363d6e756e6f6d6f72616c2e65732c444e532e3133373d6f6c6976616465706c6173656e6369612e65732c444e532e3133383d70616c6f6d65726f2e65732c444e532e3133393d70617361726f6e64656c61766572612e65732c444e532e3134303d706564726f736f64656163696d2e65732c444e532e3134313d706572616c65646164656c616d6174612e65732c444e532e3134323d706572616c656461646573616e726f6d616e2e65732c444e532e3134333d706572616c657364656c70756572746f2e65732c444e532e3134343d7065736375657a612e65732c444e532e3134353d6c6170657367612e65732c444e532e3134363d70696564726173616c6261732e65732c444e532e3134373d70696e6f6672616e71756561646f2e65732c444e532e3134383d70696f726e616c2e65732c444e532e3134393d706c6173656e7a75656c612e65732c444e532e3135303d706f7274616a652e65732c444e532e3135313d706f7274657a75656c6f2e65732c444e532e3135323d706f7a75656c6f64657a61727a6f6e2e65732c444e532e3135333d707565626c6f6e7565766f64656d6972616d6f6e7465732e65732c444e532e3135343d70756572746f646573616e74616372757a2e65732c444e532e3135353d7265626f6c6c61722e65732c444e532e3135363d72696f6c6f626f732e65732c444e532e3135373d726f626c6564696c6c6f6465676174612e65732c444e532e3135383d726f626c6564696c6c6f64656c61766572612e65732c444e532e3135393d726f626c6564696c6c6f64657472756a696c6c6f2c444e532e3136303d726f626c65646f6c6c616e6f2e65732c444e532e3136313d726f6d616e676f72646f2e65732c444e532e3136323d7275616e65732e65732c444e532e3136333d73616c6f72696e6f2e65732c444e532e3136343d73616c7661746965727261646573616e746961676f2e65732c444e532e3136353d73616e6d617274696e646574726576656a6f2e65732c444e532e3136363d6179746f73616e7461616e612e65732c444e532e3136373d73616e74616372757a64656c617369657272612e65732c444e532e3136383d73616e74616372757a646570616e69616775612e65732c444e532e3136393d73616e74616d6172746164656d6167617363612e65732c444e532e3137303d73616e746961676f64656c63616d706f2e65732c444e532e3137313d73616e746962616e657a656c616c746f2e65732c444e532e3137323d73616e746962616e657a656c62616a6f2e65732c444e532e3137333d736175636564696c6c612e65732c444e532e3137343d7365677572616465746f726f2e65732c444e532e3137353d736572726164696c6c612e65732c444e532e3137363d73657272656a6f6e2e65732c444e532e3137373d73696572726164656675656e7465732e65732c444e532e3137383d74616c6176616e2e65732c444e532e3137393d74616c6176657275656c6164656c61766572612e65732c444e532e3138303d74616c617975656c612e65732c444e532e3138313d74656a65646164657469657461722e65732c444e532e3138323d746f72696c2e65732c444e532e3138333d746f726e6176616361732e65732c444e532e3138343d6179746f656c746f726e6f2e65732c444e532e3138353d746f72726563696c6c6164656c6f73616e67656c65732e65732c444e532e3138363d746f72726563696c6c617364656c6174696573612e65732c444e532e3138373d746f7272656465646f6e6d696775656c2e65732c444e532e3138383d746f727265646573616e74616d617269612e65732c444e532e3138393d746f7272656a6f6e656c727562696f2e65732c444e532e3139303d746f7272656a6f6e63696c6c6f2e65732c444e532e3139313d746f7272656d656e67612e65732c444e532e3139323d746f7272656d6f6368612e65732c444e532e3139333d746f7272656f7267617a2e65732c444e532e3139343d746f7272657175656d6164612e65732c444e532e3139353d76616c64617374696c6c61732e65732c444e532e3139363d76616c646563616e6173646574616a6f2e65732c444e532e3139373d76616c64656675656e7465732e65732c444e532e3139383d76616c646568756e6361722e65732c444e532e3139393d76616c6465696e69676f732e65732c444e532e3230303d76616c64656c6163617361646574616a6f2e65732c444e532e3230313d76616c64656d6f72616c65732e65732c444e532e3230323d76616c64656f626973706f2e65732c444e532e3230333d76616c646573616c6f722e65732c444e532e3230343d76616c72696f2e65732c444e532e3230353d76616c656e6369616465616c63616e746172612e65732c444e532e3230363d76616c766572646564656c61766572612e65732c444e532e3230373d76616c766572646564656c667265736e6f2e65732c444e532e3230383d766567617669616e612e65732c444e532e3230393d7669616e64617264656c61766572612e65732c444e532e3231303d76696c6c6164656c63616d706f2e65732c444e532e3231313d76696c6c6164656c7265792e65732c444e532e3231323d76696c6c616d65736961732e65732c444e532e3231333d76696c6c616d69656c2e65732c444e532e3231343d76696c6c616e7565766164656c617369657272612e65732c444e532e3231353d76696c6c617264656c706564726f736f2e65732c444e532e3231363d76696c6c61726465706c6173656e6369612e65732c444e532e3231373d76696c6c61736275656e61736465676174612e65732c444e532e3231383d7a61727a6164656772616e6164696c6c612e65732c444e532e3231393d7a61727a6164656d6f6e74616e6368657a2e65732c444e532e3232303d7a61727a616c616d61796f722e65732c444e532e3232313d7a6f726974612e65732c444e532e3232323d726f73616c656a6f2e65732c444e532e3232333d766567617669616e612e65732c444e532e3232343d616c61676f6e64656c72696f2e65732c444e532e3232353d7469657461722e65732c444e532e3232363d76616c646573616c6f722e65732c444e532e3232373d6e6176617472617369657272612e65732c444e532e3232383d7269766572616465667265736e65646f73612e65732c444e532e3232393d656c6d73616e67696c2e65732c444e532e3233303d74616a6f73616c6f722e65732c444e532e3233313d76616c6c65616d62726f7a2e65732c444e532e3233323d6d616e636f6d756e6964616476616c6c6564656c616c61676f6e2e65732c444e532e3233333d6d616e636f6d756e6964616476616c6c6564656c6a657274652e65732c444e532e3233343d6d616e636f6d756e696461647665676173616c7461732e65732c444e532e3233353d6d616e636f6d756e6964616464656c61766572612e65732c444e532e3233363d6d616e636f6d756e696461647a6f6e6163656e74726f2e65732c444e532e3233373d76696c6c7565726361732d69626f7265732d6a6172612e65732c444e532e3233383d7777772e6162616469612e65732c444e532e3233393d7777772e61626572747572612e65732c444e532e3234303d7777772e616365626f2e65732c444e532e3234313d7777772e61636568756368652e65732c444e532e3234323d7777772e6163656974756e612e65732c444e532e3234333d7777772e61686967616c2e65732c444e532e3234343d7777772e616c61676f6e64656c72696f2e65732c444e532e3234353d7777772e616c636f6c6c6172696e2e65732c444e532e3234363d7777772e6179746f616c62616c612e65732c444e532e3234373d7777772e6179746f616c63616e746172612e65732c444e532e3234383d7777772e616c637565736361722e65732c444e532e3234393d7777772e616c64656163656e74656e6572612e65732c444e532e3235303d7777772e616c64656164656c63616e6f2e65732c444e532e3235313d7777772e6c61616c64656164656c6f626973706f2e65732c444e532e3235323d7777772e616c6465616e7565766164656c61766572612e65732c444e532e3235333d7777772e616c6465616e7565766164656c63616d696e6f2e65732c444e532e3235343d7777772e616c64656875656c6164656c6a657274652e65732c444e532e3235353d7777772e6179746f616c69612e65732c444e532e3235363d7777772e616c69736564612e65732c444e532e3235373d7777772e616c6d6172617a2e65732c444e532e3235383d7777772e616c6d6f686172696e2e65732c444e532e3235393d7777772e6179746f6172726f796f64656c616c757a2e65732c444e532e3236303d7777772e6172726f796f6d6f6c696e6f732e65732c444e532e3236313d7777772e6172726f796f6d6f6c696e6f7364656c61766572612e65732c444e532e3236323d7777772e62616e6f7364656d6f6e74656d61796f722e65732c444e532e3236333d7777772e6261727261646f2e65732c444e532e3236343d7777772e62656c76697364656d6f6e726f792e65732c444e532e3236353d7777772e62656e71756572656e6369612e65732c444e532e3236363d7777772e626572726f63616c656a6f2e65732c444e532e3236373d7777772e6265727a6f63616e612e65732c444e532e3236383d7777772e626f686f6e616c646569626f722e65732c444e532e3236393d7777772e626f74696a612e65732c444e532e3237303d7777772e62726f7a61732e65732c444e532e3237313d7777772e636162616e617364656c63617374696c6c6f2e65732c444e532e3237323d7777772e636162657a6162656c6c6f73612e65732c444e532e3237333d7777772e636162657a75656c6164656c76616c6c652e65732c444e532e3237343d7777772e6361627265726f2e65732c444e532e3237353d7777772e636163686f7272696c6c612e65732c444e532e3237363d7777772e636164616c736f2e65732c444e532e3237373d7777772e63616c7a6164696c6c612e65732c444e532e3237383d7777772e63616d696e6f6d6f726973636f2e65732c444e532e3237393d7777772e63616d70696c6c6f646564656c6569746f73612e65732c444e532e3238303d7777772e63616d706f6c756761722e65732c444e532e3238313d7777772e63616e616d65726f2e65732c444e532e3238323d7777772e63616e61766572616c2e65732c444e532e3238333d7777772e63617262616a6f2e65732c444e532e3238343d7777772e6361726361626f736f2e65732c444e532e3238353d7777772e63617272617363616c656a6f2e65732c444e532e3238363d7777772e63617361726465636163657265732e65732c444e532e3238373d7777772e6361736172646570616c6f6d65726f2e65732c444e532e3238383d7777772e6361736172657364656c61736875726465732e65732c444e532e3238393d7777772e63617361736465646f6e616e746f6e696f2e65732c444e532e3239303d7777772e63617361736465646f6e676f6d657a2e65732c444e532e3239313d7777772e636173617364656c63617374616e61722e65732c444e532e3239323d7777772e636173617364656c6d6f6e74652e65732c444e532e3239333d7777772e636173617364656d696c6c616e2e65732c444e532e3239343d7777772e636173617364656d697261766574652e65732c444e532e3239353d7777772e6361736174656a6164612e65732c444e532e3239363d7777772e636173696c6c61736465636f7269612e65732c444e532e3239373d7777772e63617374616e6172646569626f722e65732c444e532e3239383d7777772e6365636c6176696e2e65732c444e532e3239393d7777772e636564696c6c6f2e65732c444e532e3330303d7777772e636572657a6f2e65732c444e532e3330313d7777772e63696c6c65726f732e65732c444e532e3330323d7777772e636f6c6c61646f2e65732c444e532e3330333d7777772e636f6e71756973746164656c617369657272612e65732c444e532e3330343d7777772e636f7269612e65732c444e532e3330353d7777772e637561636f73646579757374652e65732c444e532e3330363d7777772e6c6163756d6272652e65732c444e532e3330373d7777772e64656c6569746f73612e65732c444e532e3330383d7777772e64657363617267616d617269612e65732c444e532e3330393d7777772e656c6a61732e65732c444e532e3331303d7777772e657363757269616c2e65732c444e532e3331313d7777772e667265736e65646f736f646569626f722e65732c444e532e3331323d7777772e67616c697374656f2e65732c444e532e3331333d7777772e6761726369617a2e65732c444e532e3331343d7777772e6c6167617267616e74612e65732c444e532e3331353d7777772e67617267616e74616c616f6c6c612e65732c444e532e3331363d7777772e67617267616e74696c6c612e65732c444e532e3331373d7777772e67617267756572612e65732c444e532e3331383d7777772e676172726f76696c6c61736465616c636f6e657461722e65732c444e532e3331393d7777772e67617276696e2e65732c444e532e3332303d7777772e676174612e65732c444e532e3332313d7777772e6179746f656c676f72646f2e65732c444e532e3332323d7777772e6c616772616e6a612e65732c444e532e3332333d7777772e6c616772616e6a6164656772616e6164696c6c612e65732c444e532e3332343d7777772e6179756e74616d69656e746f646567756164616c7570652e65732c444e532e3332353d7777772e6775696a6f6465636f7269612e65732c444e532e3332363d7777772e6775696a6f646567616c697374656f2e65732c444e532e3332373d7777772e6775696a6f64656772616e6164696c6c612e65732c444e532e3332383d7777772e6775696a6f646573616e7461626172626172612e65732c444e532e3332393d7777772e6865726775696a75656c612e65732c444e532e3333303d7777772e6865726e616e706572657a2e65732c444e532e3333313d7777772e686572726572616465616c63616e746172612e65732c444e532e3333323d7777772e68657272657275656c612e65732c444e532e3333333d7777772e6865727661732e65732c444e532e3333343d7777772e686967756572612e65732c444e532e3333353d7777772e68696e6f6a616c2e65732c444e532e3333363d7777772e686f6c67756572612e65732c444e532e3333373d7777772e686f796f732e65732c444e532e3333383d7777772e6875656c6167612e65732c444e532e3333393d7777772e6962616865726e616e646f2e65732c444e532e3334303d7777772e6a6172616963656a6f2e65732c444e532e3334313d7777772e6a617261697a64656c61766572612e65732c444e532e3334323d7777772e6a6172616e64696c6c6164656c61766572612e65732c444e532e3334333d7777772e6a6172696c6c612e65732c444e532e3334343d7777772e6a657274652e65732c444e532e3334353d7777772e6c616472696c6c61722e65732c444e532e3334363d7777772e6c6f67726f73616e2e65732c444e532e3334373d7777772e6c6f73617264656c61766572612e65732c444e532e3334383d7777772e6d6164726967616c656a6f2e65732c444e532e3334393d7777772e6d6164726967616c64656c61766572612e65732c444e532e3335303d7777772e6d6164726f6e6572612e65732c444e532e3335313d7777772e6d616a616461732e65732c444e532e3335323d7777772e6d616c706172746964616465636163657265732e65732c444e532e3335333d7777772e6d616c706172746964616465706c6173656e6369612e65732c444e532e3335343d7777772e6d617263686167617a2e65732c444e532e3335353d7777772e6d6174616465616c63616e746172612e65732c444e532e3335363d7777772e6d656d6272696f2e65732c444e532e3335373d7777772e6d65736173646569626f722e65732c444e532e3335383d7777772e6d69616a616461732e65732c444e532e3335393d7777772e6d696c6c616e65732e65732c444e532e3336303d7777772e6d69726162656c2e65732c444e532e3336313d7777772e6d6f686564617364656772616e6164696c6c612e65732c444e532e3336323d7777772e6d6f6e726f792e65732c444e532e3336333d7777772e6d6f6e74616e6368657a2e65732c444e532e3336343d7777772e6d6f6e74656865726d6f736f2e65732c444e532e3336353d7777772e6d6f72616c656a612e65732c444e532e3336363d7777772e6d6f7263696c6c6f2e65732c444e532e3336373d7777772e6e617661636f6e63656a6f2e65732c444e532e3336383d7777772e6e6176616c76696c6c6172646569626f722e65732c444e532e3336393d7777772e6e6176616c6d6f72616c64656c616d6174612e65732c444e532e3337303d7777772e6e6176617364656c6d6164726f6e6f2e65732c444e532e3337313d7777772e6e6176617472617369657272612e65732c444e532e3337323d7777772e6e6176657a75656c61732e65732c444e532e3337333d7777772e6e756e6f6d6f72616c2e65732c444e532e3337343d7777772e6f6c6976616465706c6173656e6369612e65732c444e532e3337353d7777772e70616c6f6d65726f2e65732c444e532e3337363d7777772e70617361726f6e64656c61766572612e65732c444e532e3337373d7777772e706564726f736f64656163696d2e65732c444e532e3337383d7777772e706572616c65646164656c616d6174612e65732c444e532e3337393d7777772e706572616c656461646573616e726f6d616e2e65732c444e532e3338303d7777772e706572616c657364656c70756572746f2e65732c444e532e3338313d7777772e7065736375657a612e65732c444e532e3338323d7777772e6c6170657367612e65732c444e532e3338333d7777772e70696564726173616c6261732e65732c444e532e3338343d7777772e70696e6f6672616e71756561646f2e65732c444e532e3338353d7777772e70696f726e616c2e65732c444e532e3338363d7777772e706c6173656e7a75656c612e65732c444e532e3338373d7777772e706f7274616a652e65732c444e532e3338383d7777772e706f7274657a75656c6f2e65732c444e532e3338393d7777772e706f7a75656c6f64657a61727a6f6e2e65732c444e532e3339303d7777772e707565626c6f6e7565766f64656d6972616d6f6e7465732e65732c444e532e3339313d7777772e70756572746f646573616e74616372757a2e65732c444e532e3339323d7777772e7265626f6c6c61722e65732c444e532e3339333d7777772e72696f6c6f626f732e65732c444e532e3339343d7777772e726f626c6564696c6c6f6465676174612e65732c444e532e3339353d7777772e726f626c6564696c6c6f64656c61766572612e65732c444e532e3339363d7777772e726f626c6564696c6c6f64657472756a696c6c6f2c444e532e3339373d7777772e726f626c65646f6c6c616e6f2e65732c444e532e3339383d7777772e726f6d616e676f72646f2e65732c444e532e3339393d7777772e7275616e65732e65732c444e532e3430303d7777772e73616c6f72696e6f2e65732c444e532e3430313d7777772e73616c7661746965727261646573616e746961676f2e65732c444e532e3430323d7777772e73616e6d617274696e646574726576656a6f2e65732c444e532e3430333d7777772e6179746f73616e7461616e612e65732c444e532e3430343d7777772e73616e74616372757a64656c617369657272612e65732c444e532e3430353d7777772e73616e74616372757a646570616e69616775612e65732c444e532e3430363d7777772e73616e74616d6172746164656d6167617363612e65732c444e532e3430373d7777772e73616e746961676f64656c63616d706f2e65732c444e532e3430383d7777772e73616e746962616e657a656c616c746f2e65732c444e532e3430393d7777772e73616e746962616e657a656c62616a6f2e65732c444e532e3431303d7777772e736175636564696c6c612e65732c444e532e3431313d7777772e7365677572616465746f726f2e65732c444e532e3431323d7777772e736572726164696c6c612e65732c444e532e3431333d7777772e73657272656a6f6e2e65732c444e532e3431343d7777772e73696572726164656675656e7465732e65732c444e532e3431353d7777772e74616c6176616e2e65732c444e532e3431363d7777772e74616c6176657275656c6164656c61766572612e65732c444e532e3431373d7777772e74616c617975656c612e65732c444e532e3431383d7777772e74656a65646164657469657461722e65732c444e532e3431393d7777772e746f72696c2e65732c444e532e3432303d7777772e746f726e6176616361732e65732c444e532e3432313d7777772e6179746f656c746f726e6f2e65732c444e532e3432323d7777772e746f72726563696c6c6164656c6f73616e67656c65732e65732c444e532e3432333d7777772e746f72726563696c6c617364656c6174696573612e65732c444e532e3432343d7777772e746f7272656465646f6e6d696775656c2e65732c444e532e3432353d7777772e746f727265646573616e74616d617269612e65732c444e532e3432363d7777772e746f7272656a6f6e656c727562696f2e65732c444e532e3432373d7777772e746f7272656a6f6e63696c6c6f2e65732c444e532e3432383d7777772e746f7272656d656e67612e65732c444e532e3432393d7777772e746f7272656d6f6368612e65732c444e532e3433303d7777772e746f7272656f7267617a2e65732c444e532e3433313d7777772e746f7272657175656d6164612e65732c444e532e3433323d7777772e76616c64617374696c6c61732e65732c444e532e3433333d7777772e76616c646563616e6173646574616a6f2e65732c444e532e3433343d7777772e76616c64656675656e7465732e65732c444e532e3433353d7777772e76616c646568756e6361722e65732c444e532e3433363d7777772e76616c6465696e69676f732e65732c444e532e3433373d7777772e76616c64656c6163617361646574616a6f2e65732c444e532e3433383d7777772e76616c64656d6f72616c65732e65732c444e532e3433393d7777772e76616c64656f626973706f2e65732c444e532e3434303d7777772e76616c646573616c6f722e65732c444e532e3434313d7777772e76616c72696f2e65732c444e532e3434323d7777772e76616c656e6369616465616c63616e746172612e65732c444e532e3434333d7777772e76616c766572646564656c61766572612e65732c444e532e3434343d7777772e76616c766572646564656c667265736e6f2e65732c444e532e3434353d7777772e766567617669616e612e65732c444e532e3434363d7777772e7669616e64617264656c61766572612e65732c444e532e3434373d7777772e76696c6c6164656c63616d706f2e65732c444e532e3434383d7777772e76696c6c6164656c7265792e65732c444e532e3434393d7777772e76696c6c616d65736961732e65732c444e532e3435303d7777772e76696c6c616d69656c2e65732c444e532e3435313d7777772e76696c6c616e7565766164656c617369657272612e65732c444e532e3435323d7777772e76696c6c617264656c706564726f736f2e65732c444e532e3435333d7777772e76696c6c61726465706c6173656e6369612e65732c444e532e3435343d7777772e76696c6c61736275656e61736465676174612e65732c444e532e3435353d7777772e7a61727a6164656772616e6164696c6c612e65732c444e532e3435363d7777772e7a61727a6164656d6f6e74616e6368657a2e65732c444e532e3435373d7777772e7a61727a616c616d61796f722e65732c444e532e3435383d7777772e7a6f726974612e65732c444e532e3435393d7777772e726f73616c656a6f2e65732c444e532e3436303d7777772e766567617669616e612e65732c444e532e3436313d7777772e616c61676f6e64656c72696f2e65732c444e532e3436323d7777772e7469657461722e65732c444e532e3436333d7777772e76616c646573616c6f722e65732c444e532e3436343d7777772e6e6176617472617369657272612e65732c444e532e3436353d7777772e7269766572616465667265736e65646f73612e65732c444e532e3436363d7777772e656c6d73616e67696c2e65732c444e532e3436373d7777772e74616a6f73616c6f722e65732c444e532e3436383d7777772e76616c6c65616d62726f7a2e65732c444e532e3436393d7777772e6d616e636f6d756e6964616476616c6c6564656c616c61676f6e2e65732c444e532e3437303d7777772e6d616e636f6d756e6964616476616c6c6564656c6a657274652e65732c444e532e3437313d7777772e6d616e636f6d756e696461647665676173616c7461732e65732c444e532e3437323d7777772e6d616e636f6d756e6964616464656c61766572612e65732c444e532e3437333d7777772e6d616e636f6d756e696461647a6f6e6163656e74726f2e65732c444e532e3437343d7777772e76696c6c7565726361732d69626f7265732d6a6172612e6573,EMAIL=webmaster@dip-caceres.es,CN=www.dip-caceres.es,OU=DIPUTACION PROVINCIAL DE CACERES,O=DIPUTACION PROVINCIAL DE CACERES,L=CACERES,ST=CACERES,C=ES", + .raw = { (void *)"\x30\x82\x31\x29\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x45\x53\x31\x10\x30\x0e\x06\x03\x55\x04\x08\x13\x07\x43\x41\x43\x45\x52\x45\x53\x31\x10\x30\x0e\x06\x03\x55\x04\x07\x13\x07\x43\x41\x43\x45\x52\x45\x53\x31\x29\x30\x27\x06\x03\x55\x04\x0a\x13\x20\x44\x49\x50\x55\x54\x41\x43\x49\x4f\x4e\x20\x50\x52\x4f\x56\x49\x4e\x43\x49\x41\x4c\x20\x44\x45\x20\x43\x41\x43\x45\x52\x45\x53\x31\x29\x30\x27\x06\x03\x55\x04\x0b\x13\x20\x44\x49\x50\x55\x54\x41\x43\x49\x4f\x4e\x20\x50\x52\x4f\x56\x49\x4e\x43\x49\x41\x4c\x20\x44\x45\x20\x43\x41\x43\x45\x52\x45\x53\x31\x1b\x30\x19\x06\x03\x55\x04\x03\x13\x12\x77\x77\x77\x2e\x64\x69\x70\x2d\x63\x61\x63\x65\x72\x65\x73\x2e\x65\x73\x31\x27\x30\x25\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x09\x01\x16\x18\x77\x65\x62\x6d\x61\x73\x74\x65\x72\x40\x64\x69\x70\x2d\x63\x61\x63\x65\x72\x65\x73\x2e\x65\x73\x31\x82\x30\x58\x30\x82\x30\x54\x06\x03\x55\x1d\x11\x13\x82\x30\x4b\x44\x4e\x53\x2e\x31\x3d\x61\x62\x61\x64\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x3d\x61\x62\x65\x72\x74\x75\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x3d\x61\x63\x65\x62\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x3d\x61\x63\x65\x68\x75\x63\x68\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x3d\x61\x63\x65\x69\x74\x75\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x3d\x61\x68\x69\x67\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x3d\x61\x6c\x61\x67\x6f\x6e\x64\x65\x6c\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x3d\x61\x6c\x63\x6f\x6c\x6c\x61\x72\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x3d\x61\x79\x74\x6f\x61\x6c\x62\x61\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x3d\x61\x79\x74\x6f\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x3d\x61\x6c\x63\x75\x65\x73\x63\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x3d\x61\x6c\x64\x65\x61\x63\x65\x6e\x74\x65\x6e\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x3d\x61\x6c\x64\x65\x61\x64\x65\x6c\x63\x61\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x3d\x6c\x61\x61\x6c\x64\x65\x61\x64\x65\x6c\x6f\x62\x69\x73\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x3d\x61\x6c\x64\x65\x61\x6e\x75\x65\x76\x61\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x3d\x61\x6c\x64\x65\x61\x6e\x75\x65\x76\x61\x64\x65\x6c\x63\x61\x6d\x69\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x3d\x61\x6c\x64\x65\x68\x75\x65\x6c\x61\x64\x65\x6c\x6a\x65\x72\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x3d\x61\x79\x74\x6f\x61\x6c\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x3d\x61\x6c\x69\x73\x65\x64\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x3d\x61\x6c\x6d\x61\x72\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x3d\x61\x6c\x6d\x6f\x68\x61\x72\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x3d\x61\x79\x74\x6f\x61\x72\x72\x6f\x79\x6f\x64\x65\x6c\x61\x6c\x75\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x3d\x61\x72\x72\x6f\x79\x6f\x6d\x6f\x6c\x69\x6e\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x3d\x61\x72\x72\x6f\x79\x6f\x6d\x6f\x6c\x69\x6e\x6f\x73\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x3d\x62\x61\x6e\x6f\x73\x64\x65\x6d\x6f\x6e\x74\x65\x6d\x61\x79\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x3d\x62\x61\x72\x72\x61\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x3d\x62\x65\x6c\x76\x69\x73\x64\x65\x6d\x6f\x6e\x72\x6f\x79\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x3d\x62\x65\x6e\x71\x75\x65\x72\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x3d\x62\x65\x72\x72\x6f\x63\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x3d\x62\x65\x72\x7a\x6f\x63\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x3d\x62\x6f\x68\x6f\x6e\x61\x6c\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x3d\x62\x6f\x74\x69\x6a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x3d\x62\x72\x6f\x7a\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x3d\x63\x61\x62\x61\x6e\x61\x73\x64\x65\x6c\x63\x61\x73\x74\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x3d\x63\x61\x62\x65\x7a\x61\x62\x65\x6c\x6c\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x3d\x63\x61\x62\x65\x7a\x75\x65\x6c\x61\x64\x65\x6c\x76\x61\x6c\x6c\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x3d\x63\x61\x62\x72\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x3d\x63\x61\x63\x68\x6f\x72\x72\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x3d\x63\x61\x64\x61\x6c\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x3d\x63\x61\x6c\x7a\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x3d\x63\x61\x6d\x69\x6e\x6f\x6d\x6f\x72\x69\x73\x63\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x3d\x63\x61\x6d\x70\x69\x6c\x6c\x6f\x64\x65\x64\x65\x6c\x65\x69\x74\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x3d\x63\x61\x6d\x70\x6f\x6c\x75\x67\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x3d\x63\x61\x6e\x61\x6d\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x3d\x63\x61\x6e\x61\x76\x65\x72\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x3d\x63\x61\x72\x62\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x37\x3d\x63\x61\x72\x63\x61\x62\x6f\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x38\x3d\x63\x61\x72\x72\x61\x73\x63\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x39\x3d\x63\x61\x73\x61\x72\x64\x65\x63\x61\x63\x65\x72\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x30\x3d\x63\x61\x73\x61\x72\x64\x65\x70\x61\x6c\x6f\x6d\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x31\x3d\x63\x61\x73\x61\x72\x65\x73\x64\x65\x6c\x61\x73\x68\x75\x72\x64\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x32\x3d\x63\x61\x73\x61\x73\x64\x65\x64\x6f\x6e\x61\x6e\x74\x6f\x6e\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x33\x3d\x63\x61\x73\x61\x73\x64\x65\x64\x6f\x6e\x67\x6f\x6d\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x34\x3d\x63\x61\x73\x61\x73\x64\x65\x6c\x63\x61\x73\x74\x61\x6e\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x35\x3d\x63\x61\x73\x61\x73\x64\x65\x6c\x6d\x6f\x6e\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x36\x3d\x63\x61\x73\x61\x73\x64\x65\x6d\x69\x6c\x6c\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x37\x3d\x63\x61\x73\x61\x73\x64\x65\x6d\x69\x72\x61\x76\x65\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x38\x3d\x63\x61\x73\x61\x74\x65\x6a\x61\x64\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x39\x3d\x63\x61\x73\x69\x6c\x6c\x61\x73\x64\x65\x63\x6f\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x30\x3d\x63\x61\x73\x74\x61\x6e\x61\x72\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x31\x3d\x63\x65\x63\x6c\x61\x76\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x32\x3d\x63\x65\x64\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x33\x3d\x63\x65\x72\x65\x7a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x34\x3d\x63\x69\x6c\x6c\x65\x72\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x35\x3d\x63\x6f\x6c\x6c\x61\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x36\x3d\x63\x6f\x6e\x71\x75\x69\x73\x74\x61\x64\x65\x6c\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x37\x3d\x63\x6f\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x38\x3d\x63\x75\x61\x63\x6f\x73\x64\x65\x79\x75\x73\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x39\x3d\x6c\x61\x63\x75\x6d\x62\x72\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x30\x3d\x64\x65\x6c\x65\x69\x74\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x31\x3d\x64\x65\x73\x63\x61\x72\x67\x61\x6d\x61\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x32\x3d\x65\x6c\x6a\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x33\x3d\x65\x73\x63\x75\x72\x69\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x34\x3d\x66\x72\x65\x73\x6e\x65\x64\x6f\x73\x6f\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x35\x3d\x67\x61\x6c\x69\x73\x74\x65\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x36\x3d\x67\x61\x72\x63\x69\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x37\x3d\x6c\x61\x67\x61\x72\x67\x61\x6e\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x38\x3d\x67\x61\x72\x67\x61\x6e\x74\x61\x6c\x61\x6f\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x39\x3d\x67\x61\x72\x67\x61\x6e\x74\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x30\x3d\x67\x61\x72\x67\x75\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x31\x3d\x67\x61\x72\x72\x6f\x76\x69\x6c\x6c\x61\x73\x64\x65\x61\x6c\x63\x6f\x6e\x65\x74\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x32\x3d\x67\x61\x72\x76\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x33\x3d\x67\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x34\x3d\x61\x79\x74\x6f\x65\x6c\x67\x6f\x72\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x35\x3d\x6c\x61\x67\x72\x61\x6e\x6a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x36\x3d\x6c\x61\x67\x72\x61\x6e\x6a\x61\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x37\x3d\x61\x79\x75\x6e\x74\x61\x6d\x69\x65\x6e\x74\x6f\x64\x65\x67\x75\x61\x64\x61\x6c\x75\x70\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x38\x3d\x67\x75\x69\x6a\x6f\x64\x65\x63\x6f\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x39\x3d\x67\x75\x69\x6a\x6f\x64\x65\x67\x61\x6c\x69\x73\x74\x65\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x30\x3d\x67\x75\x69\x6a\x6f\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x31\x3d\x67\x75\x69\x6a\x6f\x64\x65\x73\x61\x6e\x74\x61\x62\x61\x72\x62\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x32\x3d\x68\x65\x72\x67\x75\x69\x6a\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x33\x3d\x68\x65\x72\x6e\x61\x6e\x70\x65\x72\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x34\x3d\x68\x65\x72\x72\x65\x72\x61\x64\x65\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x35\x3d\x68\x65\x72\x72\x65\x72\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x36\x3d\x68\x65\x72\x76\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x37\x3d\x68\x69\x67\x75\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x38\x3d\x68\x69\x6e\x6f\x6a\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x39\x3d\x68\x6f\x6c\x67\x75\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x30\x3d\x68\x6f\x79\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x31\x3d\x68\x75\x65\x6c\x61\x67\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x32\x3d\x69\x62\x61\x68\x65\x72\x6e\x61\x6e\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x33\x3d\x6a\x61\x72\x61\x69\x63\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x34\x3d\x6a\x61\x72\x61\x69\x7a\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x35\x3d\x6a\x61\x72\x61\x6e\x64\x69\x6c\x6c\x61\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x36\x3d\x6a\x61\x72\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x37\x3d\x6a\x65\x72\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x38\x3d\x6c\x61\x64\x72\x69\x6c\x6c\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x39\x3d\x6c\x6f\x67\x72\x6f\x73\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x30\x3d\x6c\x6f\x73\x61\x72\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x31\x3d\x6d\x61\x64\x72\x69\x67\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x32\x3d\x6d\x61\x64\x72\x69\x67\x61\x6c\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x33\x3d\x6d\x61\x64\x72\x6f\x6e\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x34\x3d\x6d\x61\x6a\x61\x64\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x35\x3d\x6d\x61\x6c\x70\x61\x72\x74\x69\x64\x61\x64\x65\x63\x61\x63\x65\x72\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x36\x3d\x6d\x61\x6c\x70\x61\x72\x74\x69\x64\x61\x64\x65\x70\x6c\x61\x73\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x37\x3d\x6d\x61\x72\x63\x68\x61\x67\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x38\x3d\x6d\x61\x74\x61\x64\x65\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x39\x3d\x6d\x65\x6d\x62\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x30\x3d\x6d\x65\x73\x61\x73\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x31\x3d\x6d\x69\x61\x6a\x61\x64\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x32\x3d\x6d\x69\x6c\x6c\x61\x6e\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x33\x3d\x6d\x69\x72\x61\x62\x65\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x34\x3d\x6d\x6f\x68\x65\x64\x61\x73\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x35\x3d\x6d\x6f\x6e\x72\x6f\x79\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x36\x3d\x6d\x6f\x6e\x74\x61\x6e\x63\x68\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x37\x3d\x6d\x6f\x6e\x74\x65\x68\x65\x72\x6d\x6f\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x38\x3d\x6d\x6f\x72\x61\x6c\x65\x6a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x39\x3d\x6d\x6f\x72\x63\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x30\x3d\x6e\x61\x76\x61\x63\x6f\x6e\x63\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x31\x3d\x6e\x61\x76\x61\x6c\x76\x69\x6c\x6c\x61\x72\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x32\x3d\x6e\x61\x76\x61\x6c\x6d\x6f\x72\x61\x6c\x64\x65\x6c\x61\x6d\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x33\x3d\x6e\x61\x76\x61\x73\x64\x65\x6c\x6d\x61\x64\x72\x6f\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x34\x3d\x6e\x61\x76\x61\x74\x72\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x35\x3d\x6e\x61\x76\x65\x7a\x75\x65\x6c\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x36\x3d\x6e\x75\x6e\x6f\x6d\x6f\x72\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x37\x3d\x6f\x6c\x69\x76\x61\x64\x65\x70\x6c\x61\x73\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x38\x3d\x70\x61\x6c\x6f\x6d\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x39\x3d\x70\x61\x73\x61\x72\x6f\x6e\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x30\x3d\x70\x65\x64\x72\x6f\x73\x6f\x64\x65\x61\x63\x69\x6d\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x31\x3d\x70\x65\x72\x61\x6c\x65\x64\x61\x64\x65\x6c\x61\x6d\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x32\x3d\x70\x65\x72\x61\x6c\x65\x64\x61\x64\x65\x73\x61\x6e\x72\x6f\x6d\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x33\x3d\x70\x65\x72\x61\x6c\x65\x73\x64\x65\x6c\x70\x75\x65\x72\x74\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x34\x3d\x70\x65\x73\x63\x75\x65\x7a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x35\x3d\x6c\x61\x70\x65\x73\x67\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x36\x3d\x70\x69\x65\x64\x72\x61\x73\x61\x6c\x62\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x37\x3d\x70\x69\x6e\x6f\x66\x72\x61\x6e\x71\x75\x65\x61\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x38\x3d\x70\x69\x6f\x72\x6e\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x39\x3d\x70\x6c\x61\x73\x65\x6e\x7a\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x30\x3d\x70\x6f\x72\x74\x61\x6a\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x31\x3d\x70\x6f\x72\x74\x65\x7a\x75\x65\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x32\x3d\x70\x6f\x7a\x75\x65\x6c\x6f\x64\x65\x7a\x61\x72\x7a\x6f\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x33\x3d\x70\x75\x65\x62\x6c\x6f\x6e\x75\x65\x76\x6f\x64\x65\x6d\x69\x72\x61\x6d\x6f\x6e\x74\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x34\x3d\x70\x75\x65\x72\x74\x6f\x64\x65\x73\x61\x6e\x74\x61\x63\x72\x75\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x35\x3d\x72\x65\x62\x6f\x6c\x6c\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x36\x3d\x72\x69\x6f\x6c\x6f\x62\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x37\x3d\x72\x6f\x62\x6c\x65\x64\x69\x6c\x6c\x6f\x64\x65\x67\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x38\x3d\x72\x6f\x62\x6c\x65\x64\x69\x6c\x6c\x6f\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x39\x3d\x72\x6f\x62\x6c\x65\x64\x69\x6c\x6c\x6f\x64\x65\x74\x72\x75\x6a\x69\x6c\x6c\x6f\x2c\x44\x4e\x53\x2e\x31\x36\x30\x3d\x72\x6f\x62\x6c\x65\x64\x6f\x6c\x6c\x61\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x31\x3d\x72\x6f\x6d\x61\x6e\x67\x6f\x72\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x32\x3d\x72\x75\x61\x6e\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x33\x3d\x73\x61\x6c\x6f\x72\x69\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x34\x3d\x73\x61\x6c\x76\x61\x74\x69\x65\x72\x72\x61\x64\x65\x73\x61\x6e\x74\x69\x61\x67\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x35\x3d\x73\x61\x6e\x6d\x61\x72\x74\x69\x6e\x64\x65\x74\x72\x65\x76\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x36\x3d\x61\x79\x74\x6f\x73\x61\x6e\x74\x61\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x37\x3d\x73\x61\x6e\x74\x61\x63\x72\x75\x7a\x64\x65\x6c\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x38\x3d\x73\x61\x6e\x74\x61\x63\x72\x75\x7a\x64\x65\x70\x61\x6e\x69\x61\x67\x75\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x39\x3d\x73\x61\x6e\x74\x61\x6d\x61\x72\x74\x61\x64\x65\x6d\x61\x67\x61\x73\x63\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x30\x3d\x73\x61\x6e\x74\x69\x61\x67\x6f\x64\x65\x6c\x63\x61\x6d\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x31\x3d\x73\x61\x6e\x74\x69\x62\x61\x6e\x65\x7a\x65\x6c\x61\x6c\x74\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x32\x3d\x73\x61\x6e\x74\x69\x62\x61\x6e\x65\x7a\x65\x6c\x62\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x33\x3d\x73\x61\x75\x63\x65\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x34\x3d\x73\x65\x67\x75\x72\x61\x64\x65\x74\x6f\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x35\x3d\x73\x65\x72\x72\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x36\x3d\x73\x65\x72\x72\x65\x6a\x6f\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x37\x3d\x73\x69\x65\x72\x72\x61\x64\x65\x66\x75\x65\x6e\x74\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x38\x3d\x74\x61\x6c\x61\x76\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x39\x3d\x74\x61\x6c\x61\x76\x65\x72\x75\x65\x6c\x61\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x30\x3d\x74\x61\x6c\x61\x79\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x31\x3d\x74\x65\x6a\x65\x64\x61\x64\x65\x74\x69\x65\x74\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x32\x3d\x74\x6f\x72\x69\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x33\x3d\x74\x6f\x72\x6e\x61\x76\x61\x63\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x34\x3d\x61\x79\x74\x6f\x65\x6c\x74\x6f\x72\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x35\x3d\x74\x6f\x72\x72\x65\x63\x69\x6c\x6c\x61\x64\x65\x6c\x6f\x73\x61\x6e\x67\x65\x6c\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x36\x3d\x74\x6f\x72\x72\x65\x63\x69\x6c\x6c\x61\x73\x64\x65\x6c\x61\x74\x69\x65\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x37\x3d\x74\x6f\x72\x72\x65\x64\x65\x64\x6f\x6e\x6d\x69\x67\x75\x65\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x38\x3d\x74\x6f\x72\x72\x65\x64\x65\x73\x61\x6e\x74\x61\x6d\x61\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x39\x3d\x74\x6f\x72\x72\x65\x6a\x6f\x6e\x65\x6c\x72\x75\x62\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x30\x3d\x74\x6f\x72\x72\x65\x6a\x6f\x6e\x63\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x31\x3d\x74\x6f\x72\x72\x65\x6d\x65\x6e\x67\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x32\x3d\x74\x6f\x72\x72\x65\x6d\x6f\x63\x68\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x33\x3d\x74\x6f\x72\x72\x65\x6f\x72\x67\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x34\x3d\x74\x6f\x72\x72\x65\x71\x75\x65\x6d\x61\x64\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x35\x3d\x76\x61\x6c\x64\x61\x73\x74\x69\x6c\x6c\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x36\x3d\x76\x61\x6c\x64\x65\x63\x61\x6e\x61\x73\x64\x65\x74\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x37\x3d\x76\x61\x6c\x64\x65\x66\x75\x65\x6e\x74\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x38\x3d\x76\x61\x6c\x64\x65\x68\x75\x6e\x63\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x39\x3d\x76\x61\x6c\x64\x65\x69\x6e\x69\x67\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x30\x3d\x76\x61\x6c\x64\x65\x6c\x61\x63\x61\x73\x61\x64\x65\x74\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x31\x3d\x76\x61\x6c\x64\x65\x6d\x6f\x72\x61\x6c\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x32\x3d\x76\x61\x6c\x64\x65\x6f\x62\x69\x73\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x33\x3d\x76\x61\x6c\x64\x65\x73\x61\x6c\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x34\x3d\x76\x61\x6c\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x35\x3d\x76\x61\x6c\x65\x6e\x63\x69\x61\x64\x65\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x36\x3d\x76\x61\x6c\x76\x65\x72\x64\x65\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x37\x3d\x76\x61\x6c\x76\x65\x72\x64\x65\x64\x65\x6c\x66\x72\x65\x73\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x38\x3d\x76\x65\x67\x61\x76\x69\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x39\x3d\x76\x69\x61\x6e\x64\x61\x72\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x30\x3d\x76\x69\x6c\x6c\x61\x64\x65\x6c\x63\x61\x6d\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x31\x3d\x76\x69\x6c\x6c\x61\x64\x65\x6c\x72\x65\x79\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x32\x3d\x76\x69\x6c\x6c\x61\x6d\x65\x73\x69\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x33\x3d\x76\x69\x6c\x6c\x61\x6d\x69\x65\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x34\x3d\x76\x69\x6c\x6c\x61\x6e\x75\x65\x76\x61\x64\x65\x6c\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x35\x3d\x76\x69\x6c\x6c\x61\x72\x64\x65\x6c\x70\x65\x64\x72\x6f\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x36\x3d\x76\x69\x6c\x6c\x61\x72\x64\x65\x70\x6c\x61\x73\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x37\x3d\x76\x69\x6c\x6c\x61\x73\x62\x75\x65\x6e\x61\x73\x64\x65\x67\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x38\x3d\x7a\x61\x72\x7a\x61\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x39\x3d\x7a\x61\x72\x7a\x61\x64\x65\x6d\x6f\x6e\x74\x61\x6e\x63\x68\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x30\x3d\x7a\x61\x72\x7a\x61\x6c\x61\x6d\x61\x79\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x31\x3d\x7a\x6f\x72\x69\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x32\x3d\x72\x6f\x73\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x33\x3d\x76\x65\x67\x61\x76\x69\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x34\x3d\x61\x6c\x61\x67\x6f\x6e\x64\x65\x6c\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x35\x3d\x74\x69\x65\x74\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x36\x3d\x76\x61\x6c\x64\x65\x73\x61\x6c\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x37\x3d\x6e\x61\x76\x61\x74\x72\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x38\x3d\x72\x69\x76\x65\x72\x61\x64\x65\x66\x72\x65\x73\x6e\x65\x64\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x39\x3d\x65\x6c\x6d\x73\x61\x6e\x67\x69\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x30\x3d\x74\x61\x6a\x6f\x73\x61\x6c\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x31\x3d\x76\x61\x6c\x6c\x65\x61\x6d\x62\x72\x6f\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x32\x3d\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x76\x61\x6c\x6c\x65\x64\x65\x6c\x61\x6c\x61\x67\x6f\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x33\x3d\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x76\x61\x6c\x6c\x65\x64\x65\x6c\x6a\x65\x72\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x34\x3d\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x76\x65\x67\x61\x73\x61\x6c\x74\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x35\x3d\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x36\x3d\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x7a\x6f\x6e\x61\x63\x65\x6e\x74\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x37\x3d\x76\x69\x6c\x6c\x75\x65\x72\x63\x61\x73\x2d\x69\x62\x6f\x72\x65\x73\x2d\x6a\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x38\x3d\x77\x77\x77\x2e\x61\x62\x61\x64\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x39\x3d\x77\x77\x77\x2e\x61\x62\x65\x72\x74\x75\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x30\x3d\x77\x77\x77\x2e\x61\x63\x65\x62\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x31\x3d\x77\x77\x77\x2e\x61\x63\x65\x68\x75\x63\x68\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x32\x3d\x77\x77\x77\x2e\x61\x63\x65\x69\x74\x75\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x33\x3d\x77\x77\x77\x2e\x61\x68\x69\x67\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x34\x3d\x77\x77\x77\x2e\x61\x6c\x61\x67\x6f\x6e\x64\x65\x6c\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x35\x3d\x77\x77\x77\x2e\x61\x6c\x63\x6f\x6c\x6c\x61\x72\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x36\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x61\x6c\x62\x61\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x37\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x38\x3d\x77\x77\x77\x2e\x61\x6c\x63\x75\x65\x73\x63\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x39\x3d\x77\x77\x77\x2e\x61\x6c\x64\x65\x61\x63\x65\x6e\x74\x65\x6e\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x30\x3d\x77\x77\x77\x2e\x61\x6c\x64\x65\x61\x64\x65\x6c\x63\x61\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x31\x3d\x77\x77\x77\x2e\x6c\x61\x61\x6c\x64\x65\x61\x64\x65\x6c\x6f\x62\x69\x73\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x32\x3d\x77\x77\x77\x2e\x61\x6c\x64\x65\x61\x6e\x75\x65\x76\x61\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x33\x3d\x77\x77\x77\x2e\x61\x6c\x64\x65\x61\x6e\x75\x65\x76\x61\x64\x65\x6c\x63\x61\x6d\x69\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x34\x3d\x77\x77\x77\x2e\x61\x6c\x64\x65\x68\x75\x65\x6c\x61\x64\x65\x6c\x6a\x65\x72\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x35\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x61\x6c\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x36\x3d\x77\x77\x77\x2e\x61\x6c\x69\x73\x65\x64\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x37\x3d\x77\x77\x77\x2e\x61\x6c\x6d\x61\x72\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x38\x3d\x77\x77\x77\x2e\x61\x6c\x6d\x6f\x68\x61\x72\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x39\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x61\x72\x72\x6f\x79\x6f\x64\x65\x6c\x61\x6c\x75\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x30\x3d\x77\x77\x77\x2e\x61\x72\x72\x6f\x79\x6f\x6d\x6f\x6c\x69\x6e\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x31\x3d\x77\x77\x77\x2e\x61\x72\x72\x6f\x79\x6f\x6d\x6f\x6c\x69\x6e\x6f\x73\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x32\x3d\x77\x77\x77\x2e\x62\x61\x6e\x6f\x73\x64\x65\x6d\x6f\x6e\x74\x65\x6d\x61\x79\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x33\x3d\x77\x77\x77\x2e\x62\x61\x72\x72\x61\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x34\x3d\x77\x77\x77\x2e\x62\x65\x6c\x76\x69\x73\x64\x65\x6d\x6f\x6e\x72\x6f\x79\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x35\x3d\x77\x77\x77\x2e\x62\x65\x6e\x71\x75\x65\x72\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x36\x3d\x77\x77\x77\x2e\x62\x65\x72\x72\x6f\x63\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x37\x3d\x77\x77\x77\x2e\x62\x65\x72\x7a\x6f\x63\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x38\x3d\x77\x77\x77\x2e\x62\x6f\x68\x6f\x6e\x61\x6c\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x39\x3d\x77\x77\x77\x2e\x62\x6f\x74\x69\x6a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x30\x3d\x77\x77\x77\x2e\x62\x72\x6f\x7a\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x31\x3d\x77\x77\x77\x2e\x63\x61\x62\x61\x6e\x61\x73\x64\x65\x6c\x63\x61\x73\x74\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x32\x3d\x77\x77\x77\x2e\x63\x61\x62\x65\x7a\x61\x62\x65\x6c\x6c\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x33\x3d\x77\x77\x77\x2e\x63\x61\x62\x65\x7a\x75\x65\x6c\x61\x64\x65\x6c\x76\x61\x6c\x6c\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x34\x3d\x77\x77\x77\x2e\x63\x61\x62\x72\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x35\x3d\x77\x77\x77\x2e\x63\x61\x63\x68\x6f\x72\x72\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x36\x3d\x77\x77\x77\x2e\x63\x61\x64\x61\x6c\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x37\x3d\x77\x77\x77\x2e\x63\x61\x6c\x7a\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x38\x3d\x77\x77\x77\x2e\x63\x61\x6d\x69\x6e\x6f\x6d\x6f\x72\x69\x73\x63\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x39\x3d\x77\x77\x77\x2e\x63\x61\x6d\x70\x69\x6c\x6c\x6f\x64\x65\x64\x65\x6c\x65\x69\x74\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x30\x3d\x77\x77\x77\x2e\x63\x61\x6d\x70\x6f\x6c\x75\x67\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x31\x3d\x77\x77\x77\x2e\x63\x61\x6e\x61\x6d\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x32\x3d\x77\x77\x77\x2e\x63\x61\x6e\x61\x76\x65\x72\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x33\x3d\x77\x77\x77\x2e\x63\x61\x72\x62\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x34\x3d\x77\x77\x77\x2e\x63\x61\x72\x63\x61\x62\x6f\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x35\x3d\x77\x77\x77\x2e\x63\x61\x72\x72\x61\x73\x63\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x36\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x72\x64\x65\x63\x61\x63\x65\x72\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x37\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x72\x64\x65\x70\x61\x6c\x6f\x6d\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x38\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x72\x65\x73\x64\x65\x6c\x61\x73\x68\x75\x72\x64\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x39\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x73\x64\x65\x64\x6f\x6e\x61\x6e\x74\x6f\x6e\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x30\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x73\x64\x65\x64\x6f\x6e\x67\x6f\x6d\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x31\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x73\x64\x65\x6c\x63\x61\x73\x74\x61\x6e\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x32\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x73\x64\x65\x6c\x6d\x6f\x6e\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x33\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x73\x64\x65\x6d\x69\x6c\x6c\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x34\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x73\x64\x65\x6d\x69\x72\x61\x76\x65\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x35\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x74\x65\x6a\x61\x64\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x36\x3d\x77\x77\x77\x2e\x63\x61\x73\x69\x6c\x6c\x61\x73\x64\x65\x63\x6f\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x37\x3d\x77\x77\x77\x2e\x63\x61\x73\x74\x61\x6e\x61\x72\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x38\x3d\x77\x77\x77\x2e\x63\x65\x63\x6c\x61\x76\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x39\x3d\x77\x77\x77\x2e\x63\x65\x64\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x30\x3d\x77\x77\x77\x2e\x63\x65\x72\x65\x7a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x31\x3d\x77\x77\x77\x2e\x63\x69\x6c\x6c\x65\x72\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x32\x3d\x77\x77\x77\x2e\x63\x6f\x6c\x6c\x61\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x33\x3d\x77\x77\x77\x2e\x63\x6f\x6e\x71\x75\x69\x73\x74\x61\x64\x65\x6c\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x34\x3d\x77\x77\x77\x2e\x63\x6f\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x35\x3d\x77\x77\x77\x2e\x63\x75\x61\x63\x6f\x73\x64\x65\x79\x75\x73\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x36\x3d\x77\x77\x77\x2e\x6c\x61\x63\x75\x6d\x62\x72\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x37\x3d\x77\x77\x77\x2e\x64\x65\x6c\x65\x69\x74\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x38\x3d\x77\x77\x77\x2e\x64\x65\x73\x63\x61\x72\x67\x61\x6d\x61\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x39\x3d\x77\x77\x77\x2e\x65\x6c\x6a\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x30\x3d\x77\x77\x77\x2e\x65\x73\x63\x75\x72\x69\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x31\x3d\x77\x77\x77\x2e\x66\x72\x65\x73\x6e\x65\x64\x6f\x73\x6f\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x32\x3d\x77\x77\x77\x2e\x67\x61\x6c\x69\x73\x74\x65\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x33\x3d\x77\x77\x77\x2e\x67\x61\x72\x63\x69\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x34\x3d\x77\x77\x77\x2e\x6c\x61\x67\x61\x72\x67\x61\x6e\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x35\x3d\x77\x77\x77\x2e\x67\x61\x72\x67\x61\x6e\x74\x61\x6c\x61\x6f\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x36\x3d\x77\x77\x77\x2e\x67\x61\x72\x67\x61\x6e\x74\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x37\x3d\x77\x77\x77\x2e\x67\x61\x72\x67\x75\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x38\x3d\x77\x77\x77\x2e\x67\x61\x72\x72\x6f\x76\x69\x6c\x6c\x61\x73\x64\x65\x61\x6c\x63\x6f\x6e\x65\x74\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x39\x3d\x77\x77\x77\x2e\x67\x61\x72\x76\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x30\x3d\x77\x77\x77\x2e\x67\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x31\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x65\x6c\x67\x6f\x72\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x32\x3d\x77\x77\x77\x2e\x6c\x61\x67\x72\x61\x6e\x6a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x33\x3d\x77\x77\x77\x2e\x6c\x61\x67\x72\x61\x6e\x6a\x61\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x34\x3d\x77\x77\x77\x2e\x61\x79\x75\x6e\x74\x61\x6d\x69\x65\x6e\x74\x6f\x64\x65\x67\x75\x61\x64\x61\x6c\x75\x70\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x35\x3d\x77\x77\x77\x2e\x67\x75\x69\x6a\x6f\x64\x65\x63\x6f\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x36\x3d\x77\x77\x77\x2e\x67\x75\x69\x6a\x6f\x64\x65\x67\x61\x6c\x69\x73\x74\x65\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x37\x3d\x77\x77\x77\x2e\x67\x75\x69\x6a\x6f\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x38\x3d\x77\x77\x77\x2e\x67\x75\x69\x6a\x6f\x64\x65\x73\x61\x6e\x74\x61\x62\x61\x72\x62\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x39\x3d\x77\x77\x77\x2e\x68\x65\x72\x67\x75\x69\x6a\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x30\x3d\x77\x77\x77\x2e\x68\x65\x72\x6e\x61\x6e\x70\x65\x72\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x31\x3d\x77\x77\x77\x2e\x68\x65\x72\x72\x65\x72\x61\x64\x65\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x32\x3d\x77\x77\x77\x2e\x68\x65\x72\x72\x65\x72\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x33\x3d\x77\x77\x77\x2e\x68\x65\x72\x76\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x34\x3d\x77\x77\x77\x2e\x68\x69\x67\x75\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x35\x3d\x77\x77\x77\x2e\x68\x69\x6e\x6f\x6a\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x36\x3d\x77\x77\x77\x2e\x68\x6f\x6c\x67\x75\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x37\x3d\x77\x77\x77\x2e\x68\x6f\x79\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x38\x3d\x77\x77\x77\x2e\x68\x75\x65\x6c\x61\x67\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x39\x3d\x77\x77\x77\x2e\x69\x62\x61\x68\x65\x72\x6e\x61\x6e\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x30\x3d\x77\x77\x77\x2e\x6a\x61\x72\x61\x69\x63\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x31\x3d\x77\x77\x77\x2e\x6a\x61\x72\x61\x69\x7a\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x32\x3d\x77\x77\x77\x2e\x6a\x61\x72\x61\x6e\x64\x69\x6c\x6c\x61\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x33\x3d\x77\x77\x77\x2e\x6a\x61\x72\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x34\x3d\x77\x77\x77\x2e\x6a\x65\x72\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x35\x3d\x77\x77\x77\x2e\x6c\x61\x64\x72\x69\x6c\x6c\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x36\x3d\x77\x77\x77\x2e\x6c\x6f\x67\x72\x6f\x73\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x37\x3d\x77\x77\x77\x2e\x6c\x6f\x73\x61\x72\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x38\x3d\x77\x77\x77\x2e\x6d\x61\x64\x72\x69\x67\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x39\x3d\x77\x77\x77\x2e\x6d\x61\x64\x72\x69\x67\x61\x6c\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x30\x3d\x77\x77\x77\x2e\x6d\x61\x64\x72\x6f\x6e\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x31\x3d\x77\x77\x77\x2e\x6d\x61\x6a\x61\x64\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x32\x3d\x77\x77\x77\x2e\x6d\x61\x6c\x70\x61\x72\x74\x69\x64\x61\x64\x65\x63\x61\x63\x65\x72\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x33\x3d\x77\x77\x77\x2e\x6d\x61\x6c\x70\x61\x72\x74\x69\x64\x61\x64\x65\x70\x6c\x61\x73\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x34\x3d\x77\x77\x77\x2e\x6d\x61\x72\x63\x68\x61\x67\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x35\x3d\x77\x77\x77\x2e\x6d\x61\x74\x61\x64\x65\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x36\x3d\x77\x77\x77\x2e\x6d\x65\x6d\x62\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x37\x3d\x77\x77\x77\x2e\x6d\x65\x73\x61\x73\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x38\x3d\x77\x77\x77\x2e\x6d\x69\x61\x6a\x61\x64\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x39\x3d\x77\x77\x77\x2e\x6d\x69\x6c\x6c\x61\x6e\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x30\x3d\x77\x77\x77\x2e\x6d\x69\x72\x61\x62\x65\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x31\x3d\x77\x77\x77\x2e\x6d\x6f\x68\x65\x64\x61\x73\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x32\x3d\x77\x77\x77\x2e\x6d\x6f\x6e\x72\x6f\x79\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x33\x3d\x77\x77\x77\x2e\x6d\x6f\x6e\x74\x61\x6e\x63\x68\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x34\x3d\x77\x77\x77\x2e\x6d\x6f\x6e\x74\x65\x68\x65\x72\x6d\x6f\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x35\x3d\x77\x77\x77\x2e\x6d\x6f\x72\x61\x6c\x65\x6a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x36\x3d\x77\x77\x77\x2e\x6d\x6f\x72\x63\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x37\x3d\x77\x77\x77\x2e\x6e\x61\x76\x61\x63\x6f\x6e\x63\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x38\x3d\x77\x77\x77\x2e\x6e\x61\x76\x61\x6c\x76\x69\x6c\x6c\x61\x72\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x39\x3d\x77\x77\x77\x2e\x6e\x61\x76\x61\x6c\x6d\x6f\x72\x61\x6c\x64\x65\x6c\x61\x6d\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x30\x3d\x77\x77\x77\x2e\x6e\x61\x76\x61\x73\x64\x65\x6c\x6d\x61\x64\x72\x6f\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x31\x3d\x77\x77\x77\x2e\x6e\x61\x76\x61\x74\x72\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x32\x3d\x77\x77\x77\x2e\x6e\x61\x76\x65\x7a\x75\x65\x6c\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x33\x3d\x77\x77\x77\x2e\x6e\x75\x6e\x6f\x6d\x6f\x72\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x34\x3d\x77\x77\x77\x2e\x6f\x6c\x69\x76\x61\x64\x65\x70\x6c\x61\x73\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x35\x3d\x77\x77\x77\x2e\x70\x61\x6c\x6f\x6d\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x36\x3d\x77\x77\x77\x2e\x70\x61\x73\x61\x72\x6f\x6e\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x37\x3d\x77\x77\x77\x2e\x70\x65\x64\x72\x6f\x73\x6f\x64\x65\x61\x63\x69\x6d\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x38\x3d\x77\x77\x77\x2e\x70\x65\x72\x61\x6c\x65\x64\x61\x64\x65\x6c\x61\x6d\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x39\x3d\x77\x77\x77\x2e\x70\x65\x72\x61\x6c\x65\x64\x61\x64\x65\x73\x61\x6e\x72\x6f\x6d\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x30\x3d\x77\x77\x77\x2e\x70\x65\x72\x61\x6c\x65\x73\x64\x65\x6c\x70\x75\x65\x72\x74\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x31\x3d\x77\x77\x77\x2e\x70\x65\x73\x63\x75\x65\x7a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x32\x3d\x77\x77\x77\x2e\x6c\x61\x70\x65\x73\x67\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x33\x3d\x77\x77\x77\x2e\x70\x69\x65\x64\x72\x61\x73\x61\x6c\x62\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x34\x3d\x77\x77\x77\x2e\x70\x69\x6e\x6f\x66\x72\x61\x6e\x71\x75\x65\x61\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x35\x3d\x77\x77\x77\x2e\x70\x69\x6f\x72\x6e\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x36\x3d\x77\x77\x77\x2e\x70\x6c\x61\x73\x65\x6e\x7a\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x37\x3d\x77\x77\x77\x2e\x70\x6f\x72\x74\x61\x6a\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x38\x3d\x77\x77\x77\x2e\x70\x6f\x72\x74\x65\x7a\x75\x65\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x39\x3d\x77\x77\x77\x2e\x70\x6f\x7a\x75\x65\x6c\x6f\x64\x65\x7a\x61\x72\x7a\x6f\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x30\x3d\x77\x77\x77\x2e\x70\x75\x65\x62\x6c\x6f\x6e\x75\x65\x76\x6f\x64\x65\x6d\x69\x72\x61\x6d\x6f\x6e\x74\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x31\x3d\x77\x77\x77\x2e\x70\x75\x65\x72\x74\x6f\x64\x65\x73\x61\x6e\x74\x61\x63\x72\x75\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x32\x3d\x77\x77\x77\x2e\x72\x65\x62\x6f\x6c\x6c\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x33\x3d\x77\x77\x77\x2e\x72\x69\x6f\x6c\x6f\x62\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x34\x3d\x77\x77\x77\x2e\x72\x6f\x62\x6c\x65\x64\x69\x6c\x6c\x6f\x64\x65\x67\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x35\x3d\x77\x77\x77\x2e\x72\x6f\x62\x6c\x65\x64\x69\x6c\x6c\x6f\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x36\x3d\x77\x77\x77\x2e\x72\x6f\x62\x6c\x65\x64\x69\x6c\x6c\x6f\x64\x65\x74\x72\x75\x6a\x69\x6c\x6c\x6f\x2c\x44\x4e\x53\x2e\x33\x39\x37\x3d\x77\x77\x77\x2e\x72\x6f\x62\x6c\x65\x64\x6f\x6c\x6c\x61\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x38\x3d\x77\x77\x77\x2e\x72\x6f\x6d\x61\x6e\x67\x6f\x72\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x39\x3d\x77\x77\x77\x2e\x72\x75\x61\x6e\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x30\x3d\x77\x77\x77\x2e\x73\x61\x6c\x6f\x72\x69\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x31\x3d\x77\x77\x77\x2e\x73\x61\x6c\x76\x61\x74\x69\x65\x72\x72\x61\x64\x65\x73\x61\x6e\x74\x69\x61\x67\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x32\x3d\x77\x77\x77\x2e\x73\x61\x6e\x6d\x61\x72\x74\x69\x6e\x64\x65\x74\x72\x65\x76\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x33\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x73\x61\x6e\x74\x61\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x34\x3d\x77\x77\x77\x2e\x73\x61\x6e\x74\x61\x63\x72\x75\x7a\x64\x65\x6c\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x35\x3d\x77\x77\x77\x2e\x73\x61\x6e\x74\x61\x63\x72\x75\x7a\x64\x65\x70\x61\x6e\x69\x61\x67\x75\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x36\x3d\x77\x77\x77\x2e\x73\x61\x6e\x74\x61\x6d\x61\x72\x74\x61\x64\x65\x6d\x61\x67\x61\x73\x63\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x37\x3d\x77\x77\x77\x2e\x73\x61\x6e\x74\x69\x61\x67\x6f\x64\x65\x6c\x63\x61\x6d\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x38\x3d\x77\x77\x77\x2e\x73\x61\x6e\x74\x69\x62\x61\x6e\x65\x7a\x65\x6c\x61\x6c\x74\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x39\x3d\x77\x77\x77\x2e\x73\x61\x6e\x74\x69\x62\x61\x6e\x65\x7a\x65\x6c\x62\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x30\x3d\x77\x77\x77\x2e\x73\x61\x75\x63\x65\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x31\x3d\x77\x77\x77\x2e\x73\x65\x67\x75\x72\x61\x64\x65\x74\x6f\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x32\x3d\x77\x77\x77\x2e\x73\x65\x72\x72\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x33\x3d\x77\x77\x77\x2e\x73\x65\x72\x72\x65\x6a\x6f\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x34\x3d\x77\x77\x77\x2e\x73\x69\x65\x72\x72\x61\x64\x65\x66\x75\x65\x6e\x74\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x35\x3d\x77\x77\x77\x2e\x74\x61\x6c\x61\x76\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x36\x3d\x77\x77\x77\x2e\x74\x61\x6c\x61\x76\x65\x72\x75\x65\x6c\x61\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x37\x3d\x77\x77\x77\x2e\x74\x61\x6c\x61\x79\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x38\x3d\x77\x77\x77\x2e\x74\x65\x6a\x65\x64\x61\x64\x65\x74\x69\x65\x74\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x39\x3d\x77\x77\x77\x2e\x74\x6f\x72\x69\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x30\x3d\x77\x77\x77\x2e\x74\x6f\x72\x6e\x61\x76\x61\x63\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x31\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x65\x6c\x74\x6f\x72\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x32\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x63\x69\x6c\x6c\x61\x64\x65\x6c\x6f\x73\x61\x6e\x67\x65\x6c\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x33\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x63\x69\x6c\x6c\x61\x73\x64\x65\x6c\x61\x74\x69\x65\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x34\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x64\x65\x64\x6f\x6e\x6d\x69\x67\x75\x65\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x35\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x64\x65\x73\x61\x6e\x74\x61\x6d\x61\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x36\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x6a\x6f\x6e\x65\x6c\x72\x75\x62\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x37\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x6a\x6f\x6e\x63\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x38\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x6d\x65\x6e\x67\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x39\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x6d\x6f\x63\x68\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x30\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x6f\x72\x67\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x31\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x71\x75\x65\x6d\x61\x64\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x32\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x61\x73\x74\x69\x6c\x6c\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x33\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x63\x61\x6e\x61\x73\x64\x65\x74\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x34\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x66\x75\x65\x6e\x74\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x35\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x68\x75\x6e\x63\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x36\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x69\x6e\x69\x67\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x37\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x6c\x61\x63\x61\x73\x61\x64\x65\x74\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x38\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x6d\x6f\x72\x61\x6c\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x39\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x6f\x62\x69\x73\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x30\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x73\x61\x6c\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x31\x3d\x77\x77\x77\x2e\x76\x61\x6c\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x32\x3d\x77\x77\x77\x2e\x76\x61\x6c\x65\x6e\x63\x69\x61\x64\x65\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x33\x3d\x77\x77\x77\x2e\x76\x61\x6c\x76\x65\x72\x64\x65\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x34\x3d\x77\x77\x77\x2e\x76\x61\x6c\x76\x65\x72\x64\x65\x64\x65\x6c\x66\x72\x65\x73\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x35\x3d\x77\x77\x77\x2e\x76\x65\x67\x61\x76\x69\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x36\x3d\x77\x77\x77\x2e\x76\x69\x61\x6e\x64\x61\x72\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x37\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x64\x65\x6c\x63\x61\x6d\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x38\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x64\x65\x6c\x72\x65\x79\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x39\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x6d\x65\x73\x69\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x30\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x6d\x69\x65\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x31\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x6e\x75\x65\x76\x61\x64\x65\x6c\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x32\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x72\x64\x65\x6c\x70\x65\x64\x72\x6f\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x33\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x72\x64\x65\x70\x6c\x61\x73\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x34\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x73\x62\x75\x65\x6e\x61\x73\x64\x65\x67\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x35\x3d\x77\x77\x77\x2e\x7a\x61\x72\x7a\x61\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x36\x3d\x77\x77\x77\x2e\x7a\x61\x72\x7a\x61\x64\x65\x6d\x6f\x6e\x74\x61\x6e\x63\x68\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x37\x3d\x77\x77\x77\x2e\x7a\x61\x72\x7a\x61\x6c\x61\x6d\x61\x79\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x38\x3d\x77\x77\x77\x2e\x7a\x6f\x72\x69\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x39\x3d\x77\x77\x77\x2e\x72\x6f\x73\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x30\x3d\x77\x77\x77\x2e\x76\x65\x67\x61\x76\x69\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x31\x3d\x77\x77\x77\x2e\x61\x6c\x61\x67\x6f\x6e\x64\x65\x6c\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x32\x3d\x77\x77\x77\x2e\x74\x69\x65\x74\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x33\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x73\x61\x6c\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x34\x3d\x77\x77\x77\x2e\x6e\x61\x76\x61\x74\x72\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x35\x3d\x77\x77\x77\x2e\x72\x69\x76\x65\x72\x61\x64\x65\x66\x72\x65\x73\x6e\x65\x64\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x36\x3d\x77\x77\x77\x2e\x65\x6c\x6d\x73\x61\x6e\x67\x69\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x37\x3d\x77\x77\x77\x2e\x74\x61\x6a\x6f\x73\x61\x6c\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x38\x3d\x77\x77\x77\x2e\x76\x61\x6c\x6c\x65\x61\x6d\x62\x72\x6f\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x39\x3d\x77\x77\x77\x2e\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x76\x61\x6c\x6c\x65\x64\x65\x6c\x61\x6c\x61\x67\x6f\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x37\x30\x3d\x77\x77\x77\x2e\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x76\x61\x6c\x6c\x65\x64\x65\x6c\x6a\x65\x72\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x37\x31\x3d\x77\x77\x77\x2e\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x76\x65\x67\x61\x73\x61\x6c\x74\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x37\x32\x3d\x77\x77\x77\x2e\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x37\x33\x3d\x77\x77\x77\x2e\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x7a\x6f\x6e\x61\x63\x65\x6e\x74\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x37\x34\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x75\x65\x72\x63\x61\x73\x2d\x69\x62\x6f\x72\x65\x73\x2d\x6a\x61\x72\x61\x2e\x65\x73", + 12589 }, + } }; void doit(void) diff --git a/tests/x509-dn-decode.c b/tests/x509-dn-decode.c index 18ac58f593..31ebcc4ee0 100644 --- a/tests/x509-dn-decode.c +++ b/tests/x509-dn-decode.c @@ -22,7 +22,7 @@ /* This checks the low level DN encoding and decoding routines */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -33,7 +33,7 @@ #include "utils.h" -static void decode(const char *test_name, const gnutls_datum_t * raw, +static void decode(const char *test_name, const gnutls_datum_t *raw, const char *expected, const char *expected_compat) { int ret; @@ -56,15 +56,15 @@ static void decode(const char *test_name, const gnutls_datum_t * raw, } if (out.size != strlen(expected)) { - test_fail - ("The length of the output (%d) doesn't match the expected (%d)\n", - (int)out.size, (int)strlen(expected)); + test_fail( + "The length of the output (%d) doesn't match the expected (%d)\n", + (int)out.size, (int)strlen(expected)); } if (memcmp(out.data, expected, out.size) != 0) { - test_fail - ("The string output (%s) doesn't match the expected (%s)\n", - (char *)out.data, expected); + test_fail( + "The string output (%s) doesn't match the expected (%s)\n", + (char *)out.data, expected); } if (out.data[out.size] != 0) { @@ -80,15 +80,15 @@ static void decode(const char *test_name, const gnutls_datum_t * raw, } if (out.size != strlen(expected_compat)) { - test_fail - ("The length of the output (%d) doesn't match the expected (%d)\n", - (int)out.size, (int)strlen(expected_compat)); + test_fail( + "The length of the output (%d) doesn't match the expected (%d)\n", + (int)out.size, (int)strlen(expected_compat)); } if (memcmp(out.data, expected_compat, out.size) != 0) { - test_fail - ("The string output (%s) doesn't match the expected (%s)\n", - (char *)out.data, expected_compat); + test_fail( + "The string output (%s) doesn't match the expected (%s)\n", + (char *)out.data, expected_compat); } if (out.data[out.size] != 0) { @@ -101,7 +101,7 @@ static void decode(const char *test_name, const gnutls_datum_t * raw, return; } -static void encode(const char *test_name, const gnutls_datum_t * raw, +static void encode(const char *test_name, const gnutls_datum_t *raw, const char *str, int exp_error) { int ret; @@ -145,9 +145,9 @@ static void encode(const char *test_name, const gnutls_datum_t * raw, (unsigned)out.data[i]); fprintf(stderr, "\n"); } - test_fail - ("The length of the output (%d) doesn't match the expected (%d)\n", - (int)out.size, (int)raw->size); + test_fail( + "The length of the output (%d) doesn't match the expected (%d)\n", + (int)out.size, (int)raw->size); } if (memcmp(out.data, raw->data, out.size) != 0) { @@ -163,7 +163,7 @@ static void encode(const char *test_name, const gnutls_datum_t * raw, } gnutls_free(out.data); - cleanup: +cleanup: gnutls_x509_dn_deinit(dn); return; @@ -173,48 +173,37 @@ struct tests_st { const char *name; gnutls_datum_t raw; const char *str; - const char *compat_str; /* GNUTLS_X509_DN_FLAG_COMPAT */ + const char *compat_str; /* GNUTLS_X509_DN_FLAG_COMPAT */ unsigned can_encode; }; struct tests_st tests[] = { - { - .name = "simple DN", - .str = - "C=GR,ST=Attiki,O=Koko inc.,OU=sleeping dept.,UID=clauper,CN=Cindy Lauper", - .compat_str = - "CN=Cindy Lauper,UID=clauper,OU=sleeping dept.,O=Koko inc.,ST=Attiki,C=GR", - .raw = {(void *) - "\x30\x7b\x31\x15\x30\x13\x06\x03\x55\x04\x03\x13\x0c\x43\x69\x6e\x64\x79\x20\x4c\x61\x75\x70\x65\x72\x31\x17\x30\x15\x06\x0a\x09\x92\x26\x89\x93\xf2\x2c\x64\x01\x01\x13\x07\x63\x6c\x61\x75\x70\x65\x72\x31\x17\x30\x15\x06\x03\x55\x04\x0b\x13\x0e\x73\x6c\x65\x65\x70\x69\x6e\x67\x20\x64\x65\x70\x74\x2e\x31\x12\x30\x10\x06\x03\x55\x04\x0a\x13\x09\x4b\x6f\x6b\x6f\x20\x69\x6e\x63\x2e\x31\x0f\x30\x0d\x06\x03\x55\x04\x08\x13\x06\x41\x74\x74\x69\x6b\x69\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x47\x52", - 125}, - .can_encode = 1}, - { - .name = "UTF8 DN", - .str = "C=GR,ST=Αττική,O=Μεγάλη εταιρία,CN=🐨", - .compat_str = - "CN=🐨,O=Μεγάλη εταιρία,ST=Αττική,C=GR", - .raw = {(void *) - "\x30\x59\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x0c\x04\xf0\x9f\x90\xa8\x31\x24\x30\x22\x06\x03\x55\x04\x0a\x0c\x1b\xce\x9c\xce\xb5\xce\xb3\xce\xac\xce\xbb\xce\xb7\x20\xce\xb5\xcf\x84\xce\xb1\xce\xb9\xcf\x81\xce\xaf\xce\xb1\x31\x15\x30\x13\x06\x03\x55\x04\x08\x0c\x0c\xce\x91\xcf\x84\xcf\x84\xce\xb9\xce\xba\xce\xae\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x47\x52", - 91}, - .can_encode = 1}, - { - .name = "combo DN", - .compat_str = "C=\\,\\ ,OU=\\ X\\ ,CN=\\#XXX", - .str = "CN=\\#XXX,OU=\\ X\\ ,C=\\,\\ ", - .raw = {(void *) - "\x30\x2b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x2c\x20\x31\x0d\x30\x0b\x06\x03\x55\x04\x0b\x13\x04\x20\x20\x58\x20\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x0c\x04\x23\x58\x58\x58", - 45}, - .can_encode = 1}, - { - .name = "very long DN", - .compat_str = - "C=ES,ST=CACERES,L=CACERES,O=DIPUTACION PROVINCIAL DE CACERES,OU=DIPUTACION PROVINCIAL DE CACERES,CN=www.dip-caceres.es,EMAIL=webmaster@dip-caceres.es,2.5.29.17=#1382304b444e532e313d6162616469612e65732c444e532e323d61626572747572612e65732c444e532e333d616365626f2e65732c444e532e343d61636568756368652e65732c444e532e353d6163656974756e612e65732c444e532e363d61686967616c2e65732c444e532e373d616c61676f6e64656c72696f2e65732c444e532e383d616c636f6c6c6172696e2e65732c444e532e393d6179746f616c62616c612e65732c444e532e31303d6179746f616c63616e746172612e65732c444e532e31313d616c637565736361722e65732c444e532e31323d616c64656163656e74656e6572612e65732c444e532e31333d616c64656164656c63616e6f2e65732c444e532e31343d6c61616c64656164656c6f626973706f2e65732c444e532e31353d616c6465616e7565766164656c61766572612e65732c444e532e31363d616c6465616e7565766164656c63616d696e6f2e65732c444e532e31373d616c64656875656c6164656c6a657274652e65732c444e532e31383d6179746f616c69612e65732c444e532e31393d616c69736564612e65732c444e532e32303d616c6d6172617a2e65732c444e532e32313d616c6d6f686172696e2e65732c444e532e32323d6179746f6172726f796f64656c616c757a2e65732c444e532e32333d6172726f796f6d6f6c696e6f732e65732c444e532e32343d6172726f796f6d6f6c696e6f7364656c61766572612e65732c444e532e32353d62616e6f7364656d6f6e74656d61796f722e65732c444e532e32363d6261727261646f2e65732c444e532e32373d62656c76697364656d6f6e726f792e65732c444e532e32383d62656e71756572656e6369612e65732c444e532e32393d626572726f63616c656a6f2e65732c444e532e33303d6265727a6f63616e612e65732c444e532e33313d626f686f6e616c646569626f722e65732c444e532e33323d626f74696a612e65732c444e532e33333d62726f7a61732e65732c444e532e33343d636162616e617364656c63617374696c6c6f2e65732c444e532e33353d636162657a6162656c6c6f73612e65732c444e532e33363d636162657a75656c6164656c76616c6c652e65732c444e532e33373d6361627265726f2e65732c444e532e33383d636163686f7272696c6c612e65732c444e532e33393d636164616c736f2e65732c444e532e34303d63616c7a6164696c6c612e65732c444e532e34313d63616d696e6f6d6f726973636f2e65732c444e532e34323d63616d70696c6c6f646564656c6569746f73612e65732c444e532e34333d63616d706f6c756761722e65732c444e532e34343d63616e616d65726f2e65732c444e532e34353d63616e61766572616c2e65732c444e532e34363d63617262616a6f2e65732c444e532e34373d6361726361626f736f2e65732c444e532e34383d63617272617363616c656a6f2e65732c444e532e34393d63617361726465636163657265732e65732c444e532e35303d6361736172646570616c6f6d65726f2e65732c444e532e35313d6361736172657364656c61736875726465732e65732c444e532e35323d63617361736465646f6e616e746f6e696f2e65732c444e532e35333d63617361736465646f6e676f6d657a2e65732c444e532e35343d636173617364656c63617374616e61722e65732c444e532e35353d636173617364656c6d6f6e74652e65732c444e532e35363d636173617364656d696c6c616e2e65732c444e532e35373d636173617364656d697261766574652e65732c444e532e35383d6361736174656a6164612e65732c444e532e35393d636173696c6c61736465636f7269612e65732c444e532e36303d63617374616e6172646569626f722e65732c444e532e36313d6365636c6176696e2e65732c444e532e36323d636564696c6c6f2e65732c444e532e36333d636572657a6f2e65732c444e532e36343d63696c6c65726f732e65732c444e532e36353d636f6c6c61646f2e65732c444e532e36363d636f6e71756973746164656c617369657272612e65732c444e532e36373d636f7269612e65732c444e532e36383d637561636f73646579757374652e65732c444e532e36393d6c6163756d6272652e65732c444e532e37303d64656c6569746f73612e65732c444e532e37313d64657363617267616d617269612e65732c444e532e37323d656c6a61732e65732c444e532e37333d657363757269616c2e65732c444e532e37343d667265736e65646f736f646569626f722e65732c444e532e37353d67616c697374656f2e65732c444e532e37363d6761726369617a2e65732c444e532e37373d6c6167617267616e74612e65732c444e532e37383d67617267616e74616c616f6c6c612e65732c444e532e37393d67617267616e74696c6c612e65732c444e532e38303d67617267756572612e65732c444e532e38313d676172726f76696c6c61736465616c636f6e657461722e65732c444e532e38323d67617276696e2e65732c444e532e38333d676174612e65732c444e532e38343d6179746f656c676f72646f2e65732c444e532e38353d6c616772616e6a612e65732c444e532e38363d6c616772616e6a6164656772616e6164696c6c612e65732c444e532e38373d6179756e74616d69656e746f646567756164616c7570652e65732c444e532e38383d6775696a6f6465636f7269612e65732c444e532e38393d6775696a6f646567616c697374656f2e65732c444e532e39303d6775696a6f64656772616e6164696c6c612e65732c444e532e39313d6775696a6f646573616e7461626172626172612e65732c444e532e39323d6865726775696a75656c612e65732c444e532e39333d6865726e616e706572657a2e65732c444e532e39343d686572726572616465616c63616e746172612e65732c444e532e39353d68657272657275656c612e65732c444e532e39363d6865727661732e65732c444e532e39373d686967756572612e65732c444e532e39383d68696e6f6a616c2e65732c444e532e39393d686f6c67756572612e65732c444e532e3130303d686f796f732e65732c444e532e3130313d6875656c6167612e65732c444e532e3130323d6962616865726e616e646f2e65732c444e532e3130333d6a6172616963656a6f2e65732c444e532e3130343d6a617261697a64656c61766572612e65732c444e532e3130353d6a6172616e64696c6c6164656c61766572612e65732c444e532e3130363d6a6172696c6c612e65732c444e532e3130373d6a657274652e65732c444e532e3130383d6c616472696c6c61722e65732c444e532e3130393d6c6f67726f73616e2e65732c444e532e3131303d6c6f73617264656c61766572612e65732c444e532e3131313d6d6164726967616c656a6f2e65732c444e532e3131323d6d6164726967616c64656c61766572612e65732c444e532e3131333d6d6164726f6e6572612e65732c444e532e3131343d6d616a616461732e65732c444e532e3131353d6d616c706172746964616465636163657265732e65732c444e532e3131363d6d616c706172746964616465706c6173656e6369612e65732c444e532e3131373d6d617263686167617a2e65732c444e532e3131383d6d6174616465616c63616e746172612e65732c444e532e3131393d6d656d6272696f2e65732c444e532e3132303d6d65736173646569626f722e65732c444e532e3132313d6d69616a616461732e65732c444e532e3132323d6d696c6c616e65732e65732c444e532e3132333d6d69726162656c2e65732c444e532e3132343d6d6f686564617364656772616e6164696c6c612e65732c444e532e3132353d6d6f6e726f792e65732c444e532e3132363d6d6f6e74616e6368657a2e65732c444e532e3132373d6d6f6e74656865726d6f736f2e65732c444e532e3132383d6d6f72616c656a612e65732c444e532e3132393d6d6f7263696c6c6f2e65732c444e532e3133303d6e617661636f6e63656a6f2e65732c444e532e3133313d6e6176616c76696c6c6172646569626f722e65732c444e532e3133323d6e6176616c6d6f72616c64656c616d6174612e65732c444e532e3133333d6e6176617364656c6d6164726f6e6f2e65732c444e532e3133343d6e6176617472617369657272612e65732c444e532e3133353d6e6176657a75656c61732e65732c444e532e3133363d6e756e6f6d6f72616c2e65732c444e532e3133373d6f6c6976616465706c6173656e6369612e65732c444e532e3133383d70616c6f6d65726f2e65732c444e532e3133393d70617361726f6e64656c61766572612e65732c444e532e3134303d706564726f736f64656163696d2e65732c444e532e3134313d706572616c65646164656c616d6174612e65732c444e532e3134323d706572616c656461646573616e726f6d616e2e65732c444e532e3134333d706572616c657364656c70756572746f2e65732c444e532e3134343d7065736375657a612e65732c444e532e3134353d6c6170657367612e65732c444e532e3134363d70696564726173616c6261732e65732c444e532e3134373d70696e6f6672616e71756561646f2e65732c444e532e3134383d70696f726e616c2e65732c444e532e3134393d706c6173656e7a75656c612e65732c444e532e3135303d706f7274616a652e65732c444e532e3135313d706f7274657a75656c6f2e65732c444e532e3135323d706f7a75656c6f64657a61727a6f6e2e65732c444e532e3135333d707565626c6f6e7565766f64656d6972616d6f6e7465732e65732c444e532e3135343d70756572746f646573616e74616372757a2e65732c444e532e3135353d7265626f6c6c61722e65732c444e532e3135363d72696f6c6f626f732e65732c444e532e3135373d726f626c6564696c6c6f6465676174612e65732c444e532e3135383d726f626c6564696c6c6f64656c61766572612e65732c444e532e3135393d726f626c6564696c6c6f64657472756a696c6c6f2c444e532e3136303d726f626c65646f6c6c616e6f2e65732c444e532e3136313d726f6d616e676f72646f2e65732c444e532e3136323d7275616e65732e65732c444e532e3136333d73616c6f72696e6f2e65732c444e532e3136343d73616c7661746965727261646573616e746961676f2e65732c444e532e3136353d73616e6d617274696e646574726576656a6f2e65732c444e532e3136363d6179746f73616e7461616e612e65732c444e532e3136373d73616e74616372757a64656c617369657272612e65732c444e532e3136383d73616e74616372757a646570616e69616775612e65732c444e532e3136393d73616e74616d6172746164656d6167617363612e65732c444e532e3137303d73616e746961676f64656c63616d706f2e65732c444e532e3137313d73616e746962616e657a656c616c746f2e65732c444e532e3137323d73616e746962616e657a656c62616a6f2e65732c444e532e3137333d736175636564696c6c612e65732c444e532e3137343d7365677572616465746f726f2e65732c444e532e3137353d736572726164696c6c612e65732c444e532e3137363d73657272656a6f6e2e65732c444e532e3137373d73696572726164656675656e7465732e65732c444e532e3137383d74616c6176616e2e65732c444e532e3137393d74616c6176657275656c6164656c61766572612e65732c444e532e3138303d74616c617975656c612e65732c444e532e3138313d74656a65646164657469657461722e65732c444e532e3138323d746f72696c2e65732c444e532e3138333d746f726e6176616361732e65732c444e532e3138343d6179746f656c746f726e6f2e65732c444e532e3138353d746f72726563696c6c6164656c6f73616e67656c65732e65732c444e532e3138363d746f72726563696c6c617364656c6174696573612e65732c444e532e3138373d746f7272656465646f6e6d696775656c2e65732c444e532e3138383d746f727265646573616e74616d617269612e65732c444e532e3138393d746f7272656a6f6e656c727562696f2e65732c444e532e3139303d746f7272656a6f6e63696c6c6f2e65732c444e532e3139313d746f7272656d656e67612e65732c444e532e3139323d746f7272656d6f6368612e65732c444e532e3139333d746f7272656f7267617a2e65732c444e532e3139343d746f7272657175656d6164612e65732c444e532e3139353d76616c64617374696c6c61732e65732c444e532e3139363d76616c646563616e6173646574616a6f2e65732c444e532e3139373d76616c64656675656e7465732e65732c444e532e3139383d76616c646568756e6361722e65732c444e532e3139393d76616c6465696e69676f732e65732c444e532e3230303d76616c64656c6163617361646574616a6f2e65732c444e532e3230313d76616c64656d6f72616c65732e65732c444e532e3230323d76616c64656f626973706f2e65732c444e532e3230333d76616c646573616c6f722e65732c444e532e3230343d76616c72696f2e65732c444e532e3230353d76616c656e6369616465616c63616e746172612e65732c444e532e3230363d76616c766572646564656c61766572612e65732c444e532e3230373d76616c766572646564656c667265736e6f2e65732c444e532e3230383d766567617669616e612e65732c444e532e3230393d7669616e64617264656c61766572612e65732c444e532e3231303d76696c6c6164656c63616d706f2e65732c444e532e3231313d76696c6c6164656c7265792e65732c444e532e3231323d76696c6c616d65736961732e65732c444e532e3231333d76696c6c616d69656c2e65732c444e532e3231343d76696c6c616e7565766164656c617369657272612e65732c444e532e3231353d76696c6c617264656c706564726f736f2e65732c444e532e3231363d76696c6c61726465706c6173656e6369612e65732c444e532e3231373d76696c6c61736275656e61736465676174612e65732c444e532e3231383d7a61727a6164656772616e6164696c6c612e65732c444e532e3231393d7a61727a6164656d6f6e74616e6368657a2e65732c444e532e3232303d7a61727a616c616d61796f722e65732c444e532e3232313d7a6f726974612e65732c444e532e3232323d726f73616c656a6f2e65732c444e532e3232333d766567617669616e612e65732c444e532e3232343d616c61676f6e64656c72696f2e65732c444e532e3232353d7469657461722e65732c444e532e3232363d76616c646573616c6f722e65732c444e532e3232373d6e6176617472617369657272612e65732c444e532e3232383d7269766572616465667265736e65646f73612e65732c444e532e3232393d656c6d73616e67696c2e65732c444e532e3233303d74616a6f73616c6f722e65732c444e532e3233313d76616c6c65616d62726f7a2e65732c444e532e3233323d6d616e636f6d756e6964616476616c6c6564656c616c61676f6e2e65732c444e532e3233333d6d616e636f6d756e6964616476616c6c6564656c6a657274652e65732c444e532e3233343d6d616e636f6d756e696461647665676173616c7461732e65732c444e532e3233353d6d616e636f6d756e6964616464656c61766572612e65732c444e532e3233363d6d616e636f6d756e696461647a6f6e6163656e74726f2e65732c444e532e3233373d76696c6c7565726361732d69626f7265732d6a6172612e65732c444e532e3233383d7777772e6162616469612e65732c444e532e3233393d7777772e61626572747572612e65732c444e532e3234303d7777772e616365626f2e65732c444e532e3234313d7777772e61636568756368652e65732c444e532e3234323d7777772e6163656974756e612e65732c444e532e3234333d7777772e61686967616c2e65732c444e532e3234343d7777772e616c61676f6e64656c72696f2e65732c444e532e3234353d7777772e616c636f6c6c6172696e2e65732c444e532e3234363d7777772e6179746f616c62616c612e65732c444e532e3234373d7777772e6179746f616c63616e746172612e65732c444e532e3234383d7777772e616c637565736361722e65732c444e532e3234393d7777772e616c64656163656e74656e6572612e65732c444e532e3235303d7777772e616c64656164656c63616e6f2e65732c444e532e3235313d7777772e6c61616c64656164656c6f626973706f2e65732c444e532e3235323d7777772e616c6465616e7565766164656c61766572612e65732c444e532e3235333d7777772e616c6465616e7565766164656c63616d696e6f2e65732c444e532e3235343d7777772e616c64656875656c6164656c6a657274652e65732c444e532e3235353d7777772e6179746f616c69612e65732c444e532e3235363d7777772e616c69736564612e65732c444e532e3235373d7777772e616c6d6172617a2e65732c444e532e3235383d7777772e616c6d6f686172696e2e65732c444e532e3235393d7777772e6179746f6172726f796f64656c616c757a2e65732c444e532e3236303d7777772e6172726f796f6d6f6c696e6f732e65732c444e532e3236313d7777772e6172726f796f6d6f6c696e6f7364656c61766572612e65732c444e532e3236323d7777772e62616e6f7364656d6f6e74656d61796f722e65732c444e532e3236333d7777772e6261727261646f2e65732c444e532e3236343d7777772e62656c76697364656d6f6e726f792e65732c444e532e3236353d7777772e62656e71756572656e6369612e65732c444e532e3236363d7777772e626572726f63616c656a6f2e65732c444e532e3236373d7777772e6265727a6f63616e612e65732c444e532e3236383d7777772e626f686f6e616c646569626f722e65732c444e532e3236393d7777772e626f74696a612e65732c444e532e3237303d7777772e62726f7a61732e65732c444e532e3237313d7777772e636162616e617364656c63617374696c6c6f2e65732c444e532e3237323d7777772e636162657a6162656c6c6f73612e65732c444e532e3237333d7777772e636162657a75656c6164656c76616c6c652e65732c444e532e3237343d7777772e6361627265726f2e65732c444e532e3237353d7777772e636163686f7272696c6c612e65732c444e532e3237363d7777772e636164616c736f2e65732c444e532e3237373d7777772e63616c7a6164696c6c612e65732c444e532e3237383d7777772e63616d696e6f6d6f726973636f2e65732c444e532e3237393d7777772e63616d70696c6c6f646564656c6569746f73612e65732c444e532e3238303d7777772e63616d706f6c756761722e65732c444e532e3238313d7777772e63616e616d65726f2e65732c444e532e3238323d7777772e63616e61766572616c2e65732c444e532e3238333d7777772e63617262616a6f2e65732c444e532e3238343d7777772e6361726361626f736f2e65732c444e532e3238353d7777772e63617272617363616c656a6f2e65732c444e532e3238363d7777772e63617361726465636163657265732e65732c444e532e3238373d7777772e6361736172646570616c6f6d65726f2e65732c444e532e3238383d7777772e6361736172657364656c61736875726465732e65732c444e532e3238393d7777772e63617361736465646f6e616e746f6e696f2e65732c444e532e3239303d7777772e63617361736465646f6e676f6d657a2e65732c444e532e3239313d7777772e636173617364656c63617374616e61722e65732c444e532e3239323d7777772e636173617364656c6d6f6e74652e65732c444e532e3239333d7777772e636173617364656d696c6c616e2e65732c444e532e3239343d7777772e636173617364656d697261766574652e65732c444e532e3239353d7777772e6361736174656a6164612e65732c444e532e3239363d7777772e636173696c6c61736465636f7269612e65732c444e532e3239373d7777772e63617374616e6172646569626f722e65732c444e532e3239383d7777772e6365636c6176696e2e65732c444e532e3239393d7777772e636564696c6c6f2e65732c444e532e3330303d7777772e636572657a6f2e65732c444e532e3330313d7777772e63696c6c65726f732e65732c444e532e3330323d7777772e636f6c6c61646f2e65732c444e532e3330333d7777772e636f6e71756973746164656c617369657272612e65732c444e532e3330343d7777772e636f7269612e65732c444e532e3330353d7777772e637561636f73646579757374652e65732c444e532e3330363d7777772e6c6163756d6272652e65732c444e532e3330373d7777772e64656c6569746f73612e65732c444e532e3330383d7777772e64657363617267616d617269612e65732c444e532e3330393d7777772e656c6a61732e65732c444e532e3331303d7777772e657363757269616c2e65732c444e532e3331313d7777772e667265736e65646f736f646569626f722e65732c444e532e3331323d7777772e67616c697374656f2e65732c444e532e3331333d7777772e6761726369617a2e65732c444e532e3331343d7777772e6c6167617267616e74612e65732c444e532e3331353d7777772e67617267616e74616c616f6c6c612e65732c444e532e3331363d7777772e67617267616e74696c6c612e65732c444e532e3331373d7777772e67617267756572612e65732c444e532e3331383d7777772e676172726f76696c6c61736465616c636f6e657461722e65732c444e532e3331393d7777772e67617276696e2e65732c444e532e3332303d7777772e676174612e65732c444e532e3332313d7777772e6179746f656c676f72646f2e65732c444e532e3332323d7777772e6c616772616e6a612e65732c444e532e3332333d7777772e6c616772616e6a6164656772616e6164696c6c612e65732c444e532e3332343d7777772e6179756e74616d69656e746f646567756164616c7570652e65732c444e532e3332353d7777772e6775696a6f6465636f7269612e65732c444e532e3332363d7777772e6775696a6f646567616c697374656f2e65732c444e532e3332373d7777772e6775696a6f64656772616e6164696c6c612e65732c444e532e3332383d7777772e6775696a6f646573616e7461626172626172612e65732c444e532e3332393d7777772e6865726775696a75656c612e65732c444e532e3333303d7777772e6865726e616e706572657a2e65732c444e532e3333313d7777772e686572726572616465616c63616e746172612e65732c444e532e3333323d7777772e68657272657275656c612e65732c444e532e3333333d7777772e6865727661732e65732c444e532e3333343d7777772e686967756572612e65732c444e532e3333353d7777772e68696e6f6a616c2e65732c444e532e3333363d7777772e686f6c67756572612e65732c444e532e3333373d7777772e686f796f732e65732c444e532e3333383d7777772e6875656c6167612e65732c444e532e3333393d7777772e6962616865726e616e646f2e65732c444e532e3334303d7777772e6a6172616963656a6f2e65732c444e532e3334313d7777772e6a617261697a64656c61766572612e65732c444e532e3334323d7777772e6a6172616e64696c6c6164656c61766572612e65732c444e532e3334333d7777772e6a6172696c6c612e65732c444e532e3334343d7777772e6a657274652e65732c444e532e3334353d7777772e6c616472696c6c61722e65732c444e532e3334363d7777772e6c6f67726f73616e2e65732c444e532e3334373d7777772e6c6f73617264656c61766572612e65732c444e532e3334383d7777772e6d6164726967616c656a6f2e65732c444e532e3334393d7777772e6d6164726967616c64656c61766572612e65732c444e532e3335303d7777772e6d6164726f6e6572612e65732c444e532e3335313d7777772e6d616a616461732e65732c444e532e3335323d7777772e6d616c706172746964616465636163657265732e65732c444e532e3335333d7777772e6d616c706172746964616465706c6173656e6369612e65732c444e532e3335343d7777772e6d617263686167617a2e65732c444e532e3335353d7777772e6d6174616465616c63616e746172612e65732c444e532e3335363d7777772e6d656d6272696f2e65732c444e532e3335373d7777772e6d65736173646569626f722e65732c444e532e3335383d7777772e6d69616a616461732e65732c444e532e3335393d7777772e6d696c6c616e65732e65732c444e532e3336303d7777772e6d69726162656c2e65732c444e532e3336313d7777772e6d6f686564617364656772616e6164696c6c612e65732c444e532e3336323d7777772e6d6f6e726f792e65732c444e532e3336333d7777772e6d6f6e74616e6368657a2e65732c444e532e3336343d7777772e6d6f6e74656865726d6f736f2e65732c444e532e3336353d7777772e6d6f72616c656a612e65732c444e532e3336363d7777772e6d6f7263696c6c6f2e65732c444e532e3336373d7777772e6e617661636f6e63656a6f2e65732c444e532e3336383d7777772e6e6176616c76696c6c6172646569626f722e65732c444e532e3336393d7777772e6e6176616c6d6f72616c64656c616d6174612e65732c444e532e3337303d7777772e6e6176617364656c6d6164726f6e6f2e65732c444e532e3337313d7777772e6e6176617472617369657272612e65732c444e532e3337323d7777772e6e6176657a75656c61732e65732c444e532e3337333d7777772e6e756e6f6d6f72616c2e65732c444e532e3337343d7777772e6f6c6976616465706c6173656e6369612e65732c444e532e3337353d7777772e70616c6f6d65726f2e65732c444e532e3337363d7777772e70617361726f6e64656c61766572612e65732c444e532e3337373d7777772e706564726f736f64656163696d2e65732c444e532e3337383d7777772e706572616c65646164656c616d6174612e65732c444e532e3337393d7777772e706572616c656461646573616e726f6d616e2e65732c444e532e3338303d7777772e706572616c657364656c70756572746f2e65732c444e532e3338313d7777772e7065736375657a612e65732c444e532e3338323d7777772e6c6170657367612e65732c444e532e3338333d7777772e70696564726173616c6261732e65732c444e532e3338343d7777772e70696e6f6672616e71756561646f2e65732c444e532e3338353d7777772e70696f726e616c2e65732c444e532e3338363d7777772e706c6173656e7a75656c612e65732c444e532e3338373d7777772e706f7274616a652e65732c444e532e3338383d7777772e706f7274657a75656c6f2e65732c444e532e3338393d7777772e706f7a75656c6f64657a61727a6f6e2e65732c444e532e3339303d7777772e707565626c6f6e7565766f64656d6972616d6f6e7465732e65732c444e532e3339313d7777772e70756572746f646573616e74616372757a2e65732c444e532e3339323d7777772e7265626f6c6c61722e65732c444e532e3339333d7777772e72696f6c6f626f732e65732c444e532e3339343d7777772e726f626c6564696c6c6f6465676174612e65732c444e532e3339353d7777772e726f626c6564696c6c6f64656c61766572612e65732c444e532e3339363d7777772e726f626c6564696c6c6f64657472756a696c6c6f2c444e532e3339373d7777772e726f626c65646f6c6c616e6f2e65732c444e532e3339383d7777772e726f6d616e676f72646f2e65732c444e532e3339393d7777772e7275616e65732e65732c444e532e3430303d7777772e73616c6f72696e6f2e65732c444e532e3430313d7777772e73616c7661746965727261646573616e746961676f2e65732c444e532e3430323d7777772e73616e6d617274696e646574726576656a6f2e65732c444e532e3430333d7777772e6179746f73616e7461616e612e65732c444e532e3430343d7777772e73616e74616372757a64656c617369657272612e65732c444e532e3430353d7777772e73616e74616372757a646570616e69616775612e65732c444e532e3430363d7777772e73616e74616d6172746164656d6167617363612e65732c444e532e3430373d7777772e73616e746961676f64656c63616d706f2e65732c444e532e3430383d7777772e73616e746962616e657a656c616c746f2e65732c444e532e3430393d7777772e73616e746962616e657a656c62616a6f2e65732c444e532e3431303d7777772e736175636564696c6c612e65732c444e532e3431313d7777772e7365677572616465746f726f2e65732c444e532e3431323d7777772e736572726164696c6c612e65732c444e532e3431333d7777772e73657272656a6f6e2e65732c444e532e3431343d7777772e73696572726164656675656e7465732e65732c444e532e3431353d7777772e74616c6176616e2e65732c444e532e3431363d7777772e74616c6176657275656c6164656c61766572612e65732c444e532e3431373d7777772e74616c617975656c612e65732c444e532e3431383d7777772e74656a65646164657469657461722e65732c444e532e3431393d7777772e746f72696c2e65732c444e532e3432303d7777772e746f726e6176616361732e65732c444e532e3432313d7777772e6179746f656c746f726e6f2e65732c444e532e3432323d7777772e746f72726563696c6c6164656c6f73616e67656c65732e65732c444e532e3432333d7777772e746f72726563696c6c617364656c6174696573612e65732c444e532e3432343d7777772e746f7272656465646f6e6d696775656c2e65732c444e532e3432353d7777772e746f727265646573616e74616d617269612e65732c444e532e3432363d7777772e746f7272656a6f6e656c727562696f2e65732c444e532e3432373d7777772e746f7272656a6f6e63696c6c6f2e65732c444e532e3432383d7777772e746f7272656d656e67612e65732c444e532e3432393d7777772e746f7272656d6f6368612e65732c444e532e3433303d7777772e746f7272656f7267617a2e65732c444e532e3433313d7777772e746f7272657175656d6164612e65732c444e532e3433323d7777772e76616c64617374696c6c61732e65732c444e532e3433333d7777772e76616c646563616e6173646574616a6f2e65732c444e532e3433343d7777772e76616c64656675656e7465732e65732c444e532e3433353d7777772e76616c646568756e6361722e65732c444e532e3433363d7777772e76616c6465696e69676f732e65732c444e532e3433373d7777772e76616c64656c6163617361646574616a6f2e65732c444e532e3433383d7777772e76616c64656d6f72616c65732e65732c444e532e3433393d7777772e76616c64656f626973706f2e65732c444e532e3434303d7777772e76616c646573616c6f722e65732c444e532e3434313d7777772e76616c72696f2e65732c444e532e3434323d7777772e76616c656e6369616465616c63616e746172612e65732c444e532e3434333d7777772e76616c766572646564656c61766572612e65732c444e532e3434343d7777772e76616c766572646564656c667265736e6f2e65732c444e532e3434353d7777772e766567617669616e612e65732c444e532e3434363d7777772e7669616e64617264656c61766572612e65732c444e532e3434373d7777772e76696c6c6164656c63616d706f2e65732c444e532e3434383d7777772e76696c6c6164656c7265792e65732c444e532e3434393d7777772e76696c6c616d65736961732e65732c444e532e3435303d7777772e76696c6c616d69656c2e65732c444e532e3435313d7777772e76696c6c616e7565766164656c617369657272612e65732c444e532e3435323d7777772e76696c6c617264656c706564726f736f2e65732c444e532e3435333d7777772e76696c6c61726465706c6173656e6369612e65732c444e532e3435343d7777772e76696c6c61736275656e61736465676174612e65732c444e532e3435353d7777772e7a61727a6164656772616e6164696c6c612e65732c444e532e3435363d7777772e7a61727a6164656d6f6e74616e6368657a2e65732c444e532e3435373d7777772e7a61727a616c616d61796f722e65732c444e532e3435383d7777772e7a6f726974612e65732c444e532e3435393d7777772e726f73616c656a6f2e65732c444e532e3436303d7777772e766567617669616e612e65732c444e532e3436313d7777772e616c61676f6e64656c72696f2e65732c444e532e3436323d7777772e7469657461722e65732c444e532e3436333d7777772e76616c646573616c6f722e65732c444e532e3436343d7777772e6e6176617472617369657272612e65732c444e532e3436353d7777772e7269766572616465667265736e65646f73612e65732c444e532e3436363d7777772e656c6d73616e67696c2e65732c444e532e3436373d7777772e74616a6f73616c6f722e65732c444e532e3436383d7777772e76616c6c65616d62726f7a2e65732c444e532e3436393d7777772e6d616e636f6d756e6964616476616c6c6564656c616c61676f6e2e65732c444e532e3437303d7777772e6d616e636f6d756e6964616476616c6c6564656c6a657274652e65732c444e532e3437313d7777772e6d616e636f6d756e696461647665676173616c7461732e65732c444e532e3437323d7777772e6d616e636f6d756e6964616464656c61766572612e65732c444e532e3437333d7777772e6d616e636f6d756e696461647a6f6e6163656e74726f2e65732c444e532e3437343d7777772e76696c6c7565726361732d69626f7265732d6a6172612e6573", - .str = - "2.5.29.17=#1382304b444e532e313d6162616469612e65732c444e532e323d61626572747572612e65732c444e532e333d616365626f2e65732c444e532e343d61636568756368652e65732c444e532e353d6163656974756e612e65732c444e532e363d61686967616c2e65732c444e532e373d616c61676f6e64656c72696f2e65732c444e532e383d616c636f6c6c6172696e2e65732c444e532e393d6179746f616c62616c612e65732c444e532e31303d6179746f616c63616e746172612e65732c444e532e31313d616c637565736361722e65732c444e532e31323d616c64656163656e74656e6572612e65732c444e532e31333d616c64656164656c63616e6f2e65732c444e532e31343d6c61616c64656164656c6f626973706f2e65732c444e532e31353d616c6465616e7565766164656c61766572612e65732c444e532e31363d616c6465616e7565766164656c63616d696e6f2e65732c444e532e31373d616c64656875656c6164656c6a657274652e65732c444e532e31383d6179746f616c69612e65732c444e532e31393d616c69736564612e65732c444e532e32303d616c6d6172617a2e65732c444e532e32313d616c6d6f686172696e2e65732c444e532e32323d6179746f6172726f796f64656c616c757a2e65732c444e532e32333d6172726f796f6d6f6c696e6f732e65732c444e532e32343d6172726f796f6d6f6c696e6f7364656c61766572612e65732c444e532e32353d62616e6f7364656d6f6e74656d61796f722e65732c444e532e32363d6261727261646f2e65732c444e532e32373d62656c76697364656d6f6e726f792e65732c444e532e32383d62656e71756572656e6369612e65732c444e532e32393d626572726f63616c656a6f2e65732c444e532e33303d6265727a6f63616e612e65732c444e532e33313d626f686f6e616c646569626f722e65732c444e532e33323d626f74696a612e65732c444e532e33333d62726f7a61732e65732c444e532e33343d636162616e617364656c63617374696c6c6f2e65732c444e532e33353d636162657a6162656c6c6f73612e65732c444e532e33363d636162657a75656c6164656c76616c6c652e65732c444e532e33373d6361627265726f2e65732c444e532e33383d636163686f7272696c6c612e65732c444e532e33393d636164616c736f2e65732c444e532e34303d63616c7a6164696c6c612e65732c444e532e34313d63616d696e6f6d6f726973636f2e65732c444e532e34323d63616d70696c6c6f646564656c6569746f73612e65732c444e532e34333d63616d706f6c756761722e65732c444e532e34343d63616e616d65726f2e65732c444e532e34353d63616e61766572616c2e65732c444e532e34363d63617262616a6f2e65732c444e532e34373d6361726361626f736f2e65732c444e532e34383d63617272617363616c656a6f2e65732c444e532e34393d63617361726465636163657265732e65732c444e532e35303d6361736172646570616c6f6d65726f2e65732c444e532e35313d6361736172657364656c61736875726465732e65732c444e532e35323d63617361736465646f6e616e746f6e696f2e65732c444e532e35333d63617361736465646f6e676f6d657a2e65732c444e532e35343d636173617364656c63617374616e61722e65732c444e532e35353d636173617364656c6d6f6e74652e65732c444e532e35363d636173617364656d696c6c616e2e65732c444e532e35373d636173617364656d697261766574652e65732c444e532e35383d6361736174656a6164612e65732c444e532e35393d636173696c6c61736465636f7269612e65732c444e532e36303d63617374616e6172646569626f722e65732c444e532e36313d6365636c6176696e2e65732c444e532e36323d636564696c6c6f2e65732c444e532e36333d636572657a6f2e65732c444e532e36343d63696c6c65726f732e65732c444e532e36353d636f6c6c61646f2e65732c444e532e36363d636f6e71756973746164656c617369657272612e65732c444e532e36373d636f7269612e65732c444e532e36383d637561636f73646579757374652e65732c444e532e36393d6c6163756d6272652e65732c444e532e37303d64656c6569746f73612e65732c444e532e37313d64657363617267616d617269612e65732c444e532e37323d656c6a61732e65732c444e532e37333d657363757269616c2e65732c444e532e37343d667265736e65646f736f646569626f722e65732c444e532e37353d67616c697374656f2e65732c444e532e37363d6761726369617a2e65732c444e532e37373d6c6167617267616e74612e65732c444e532e37383d67617267616e74616c616f6c6c612e65732c444e532e37393d67617267616e74696c6c612e65732c444e532e38303d67617267756572612e65732c444e532e38313d676172726f76696c6c61736465616c636f6e657461722e65732c444e532e38323d67617276696e2e65732c444e532e38333d676174612e65732c444e532e38343d6179746f656c676f72646f2e65732c444e532e38353d6c616772616e6a612e65732c444e532e38363d6c616772616e6a6164656772616e6164696c6c612e65732c444e532e38373d6179756e74616d69656e746f646567756164616c7570652e65732c444e532e38383d6775696a6f6465636f7269612e65732c444e532e38393d6775696a6f646567616c697374656f2e65732c444e532e39303d6775696a6f64656772616e6164696c6c612e65732c444e532e39313d6775696a6f646573616e7461626172626172612e65732c444e532e39323d6865726775696a75656c612e65732c444e532e39333d6865726e616e706572657a2e65732c444e532e39343d686572726572616465616c63616e746172612e65732c444e532e39353d68657272657275656c612e65732c444e532e39363d6865727661732e65732c444e532e39373d686967756572612e65732c444e532e39383d68696e6f6a616c2e65732c444e532e39393d686f6c67756572612e65732c444e532e3130303d686f796f732e65732c444e532e3130313d6875656c6167612e65732c444e532e3130323d6962616865726e616e646f2e65732c444e532e3130333d6a6172616963656a6f2e65732c444e532e3130343d6a617261697a64656c61766572612e65732c444e532e3130353d6a6172616e64696c6c6164656c61766572612e65732c444e532e3130363d6a6172696c6c612e65732c444e532e3130373d6a657274652e65732c444e532e3130383d6c616472696c6c61722e65732c444e532e3130393d6c6f67726f73616e2e65732c444e532e3131303d6c6f73617264656c61766572612e65732c444e532e3131313d6d6164726967616c656a6f2e65732c444e532e3131323d6d6164726967616c64656c61766572612e65732c444e532e3131333d6d6164726f6e6572612e65732c444e532e3131343d6d616a616461732e65732c444e532e3131353d6d616c706172746964616465636163657265732e65732c444e532e3131363d6d616c706172746964616465706c6173656e6369612e65732c444e532e3131373d6d617263686167617a2e65732c444e532e3131383d6d6174616465616c63616e746172612e65732c444e532e3131393d6d656d6272696f2e65732c444e532e3132303d6d65736173646569626f722e65732c444e532e3132313d6d69616a616461732e65732c444e532e3132323d6d696c6c616e65732e65732c444e532e3132333d6d69726162656c2e65732c444e532e3132343d6d6f686564617364656772616e6164696c6c612e65732c444e532e3132353d6d6f6e726f792e65732c444e532e3132363d6d6f6e74616e6368657a2e65732c444e532e3132373d6d6f6e74656865726d6f736f2e65732c444e532e3132383d6d6f72616c656a612e65732c444e532e3132393d6d6f7263696c6c6f2e65732c444e532e3133303d6e617661636f6e63656a6f2e65732c444e532e3133313d6e6176616c76696c6c6172646569626f722e65732c444e532e3133323d6e6176616c6d6f72616c64656c616d6174612e65732c444e532e3133333d6e6176617364656c6d6164726f6e6f2e65732c444e532e3133343d6e6176617472617369657272612e65732c444e532e3133353d6e6176657a75656c61732e65732c444e532e3133363d6e756e6f6d6f72616c2e65732c444e532e3133373d6f6c6976616465706c6173656e6369612e65732c444e532e3133383d70616c6f6d65726f2e65732c444e532e3133393d70617361726f6e64656c61766572612e65732c444e532e3134303d706564726f736f64656163696d2e65732c444e532e3134313d706572616c65646164656c616d6174612e65732c444e532e3134323d706572616c656461646573616e726f6d616e2e65732c444e532e3134333d706572616c657364656c70756572746f2e65732c444e532e3134343d7065736375657a612e65732c444e532e3134353d6c6170657367612e65732c444e532e3134363d70696564726173616c6261732e65732c444e532e3134373d70696e6f6672616e71756561646f2e65732c444e532e3134383d70696f726e616c2e65732c444e532e3134393d706c6173656e7a75656c612e65732c444e532e3135303d706f7274616a652e65732c444e532e3135313d706f7274657a75656c6f2e65732c444e532e3135323d706f7a75656c6f64657a61727a6f6e2e65732c444e532e3135333d707565626c6f6e7565766f64656d6972616d6f6e7465732e65732c444e532e3135343d70756572746f646573616e74616372757a2e65732c444e532e3135353d7265626f6c6c61722e65732c444e532e3135363d72696f6c6f626f732e65732c444e532e3135373d726f626c6564696c6c6f6465676174612e65732c444e532e3135383d726f626c6564696c6c6f64656c61766572612e65732c444e532e3135393d726f626c6564696c6c6f64657472756a696c6c6f2c444e532e3136303d726f626c65646f6c6c616e6f2e65732c444e532e3136313d726f6d616e676f72646f2e65732c444e532e3136323d7275616e65732e65732c444e532e3136333d73616c6f72696e6f2e65732c444e532e3136343d73616c7661746965727261646573616e746961676f2e65732c444e532e3136353d73616e6d617274696e646574726576656a6f2e65732c444e532e3136363d6179746f73616e7461616e612e65732c444e532e3136373d73616e74616372757a64656c617369657272612e65732c444e532e3136383d73616e74616372757a646570616e69616775612e65732c444e532e3136393d73616e74616d6172746164656d6167617363612e65732c444e532e3137303d73616e746961676f64656c63616d706f2e65732c444e532e3137313d73616e746962616e657a656c616c746f2e65732c444e532e3137323d73616e746962616e657a656c62616a6f2e65732c444e532e3137333d736175636564696c6c612e65732c444e532e3137343d7365677572616465746f726f2e65732c444e532e3137353d736572726164696c6c612e65732c444e532e3137363d73657272656a6f6e2e65732c444e532e3137373d73696572726164656675656e7465732e65732c444e532e3137383d74616c6176616e2e65732c444e532e3137393d74616c6176657275656c6164656c61766572612e65732c444e532e3138303d74616c617975656c612e65732c444e532e3138313d74656a65646164657469657461722e65732c444e532e3138323d746f72696c2e65732c444e532e3138333d746f726e6176616361732e65732c444e532e3138343d6179746f656c746f726e6f2e65732c444e532e3138353d746f72726563696c6c6164656c6f73616e67656c65732e65732c444e532e3138363d746f72726563696c6c617364656c6174696573612e65732c444e532e3138373d746f7272656465646f6e6d696775656c2e65732c444e532e3138383d746f727265646573616e74616d617269612e65732c444e532e3138393d746f7272656a6f6e656c727562696f2e65732c444e532e3139303d746f7272656a6f6e63696c6c6f2e65732c444e532e3139313d746f7272656d656e67612e65732c444e532e3139323d746f7272656d6f6368612e65732c444e532e3139333d746f7272656f7267617a2e65732c444e532e3139343d746f7272657175656d6164612e65732c444e532e3139353d76616c64617374696c6c61732e65732c444e532e3139363d76616c646563616e6173646574616a6f2e65732c444e532e3139373d76616c64656675656e7465732e65732c444e532e3139383d76616c646568756e6361722e65732c444e532e3139393d76616c6465696e69676f732e65732c444e532e3230303d76616c64656c6163617361646574616a6f2e65732c444e532e3230313d76616c64656d6f72616c65732e65732c444e532e3230323d76616c64656f626973706f2e65732c444e532e3230333d76616c646573616c6f722e65732c444e532e3230343d76616c72696f2e65732c444e532e3230353d76616c656e6369616465616c63616e746172612e65732c444e532e3230363d76616c766572646564656c61766572612e65732c444e532e3230373d76616c766572646564656c667265736e6f2e65732c444e532e3230383d766567617669616e612e65732c444e532e3230393d7669616e64617264656c61766572612e65732c444e532e3231303d76696c6c6164656c63616d706f2e65732c444e532e3231313d76696c6c6164656c7265792e65732c444e532e3231323d76696c6c616d65736961732e65732c444e532e3231333d76696c6c616d69656c2e65732c444e532e3231343d76696c6c616e7565766164656c617369657272612e65732c444e532e3231353d76696c6c617264656c706564726f736f2e65732c444e532e3231363d76696c6c61726465706c6173656e6369612e65732c444e532e3231373d76696c6c61736275656e61736465676174612e65732c444e532e3231383d7a61727a6164656772616e6164696c6c612e65732c444e532e3231393d7a61727a6164656d6f6e74616e6368657a2e65732c444e532e3232303d7a61727a616c616d61796f722e65732c444e532e3232313d7a6f726974612e65732c444e532e3232323d726f73616c656a6f2e65732c444e532e3232333d766567617669616e612e65732c444e532e3232343d616c61676f6e64656c72696f2e65732c444e532e3232353d7469657461722e65732c444e532e3232363d76616c646573616c6f722e65732c444e532e3232373d6e6176617472617369657272612e65732c444e532e3232383d7269766572616465667265736e65646f73612e65732c444e532e3232393d656c6d73616e67696c2e65732c444e532e3233303d74616a6f73616c6f722e65732c444e532e3233313d76616c6c65616d62726f7a2e65732c444e532e3233323d6d616e636f6d756e6964616476616c6c6564656c616c61676f6e2e65732c444e532e3233333d6d616e636f6d756e6964616476616c6c6564656c6a657274652e65732c444e532e3233343d6d616e636f6d756e696461647665676173616c7461732e65732c444e532e3233353d6d616e636f6d756e6964616464656c61766572612e65732c444e532e3233363d6d616e636f6d756e696461647a6f6e6163656e74726f2e65732c444e532e3233373d76696c6c7565726361732d69626f7265732d6a6172612e65732c444e532e3233383d7777772e6162616469612e65732c444e532e3233393d7777772e61626572747572612e65732c444e532e3234303d7777772e616365626f2e65732c444e532e3234313d7777772e61636568756368652e65732c444e532e3234323d7777772e6163656974756e612e65732c444e532e3234333d7777772e61686967616c2e65732c444e532e3234343d7777772e616c61676f6e64656c72696f2e65732c444e532e3234353d7777772e616c636f6c6c6172696e2e65732c444e532e3234363d7777772e6179746f616c62616c612e65732c444e532e3234373d7777772e6179746f616c63616e746172612e65732c444e532e3234383d7777772e616c637565736361722e65732c444e532e3234393d7777772e616c64656163656e74656e6572612e65732c444e532e3235303d7777772e616c64656164656c63616e6f2e65732c444e532e3235313d7777772e6c61616c64656164656c6f626973706f2e65732c444e532e3235323d7777772e616c6465616e7565766164656c61766572612e65732c444e532e3235333d7777772e616c6465616e7565766164656c63616d696e6f2e65732c444e532e3235343d7777772e616c64656875656c6164656c6a657274652e65732c444e532e3235353d7777772e6179746f616c69612e65732c444e532e3235363d7777772e616c69736564612e65732c444e532e3235373d7777772e616c6d6172617a2e65732c444e532e3235383d7777772e616c6d6f686172696e2e65732c444e532e3235393d7777772e6179746f6172726f796f64656c616c757a2e65732c444e532e3236303d7777772e6172726f796f6d6f6c696e6f732e65732c444e532e3236313d7777772e6172726f796f6d6f6c696e6f7364656c61766572612e65732c444e532e3236323d7777772e62616e6f7364656d6f6e74656d61796f722e65732c444e532e3236333d7777772e6261727261646f2e65732c444e532e3236343d7777772e62656c76697364656d6f6e726f792e65732c444e532e3236353d7777772e62656e71756572656e6369612e65732c444e532e3236363d7777772e626572726f63616c656a6f2e65732c444e532e3236373d7777772e6265727a6f63616e612e65732c444e532e3236383d7777772e626f686f6e616c646569626f722e65732c444e532e3236393d7777772e626f74696a612e65732c444e532e3237303d7777772e62726f7a61732e65732c444e532e3237313d7777772e636162616e617364656c63617374696c6c6f2e65732c444e532e3237323d7777772e636162657a6162656c6c6f73612e65732c444e532e3237333d7777772e636162657a75656c6164656c76616c6c652e65732c444e532e3237343d7777772e6361627265726f2e65732c444e532e3237353d7777772e636163686f7272696c6c612e65732c444e532e3237363d7777772e636164616c736f2e65732c444e532e3237373d7777772e63616c7a6164696c6c612e65732c444e532e3237383d7777772e63616d696e6f6d6f726973636f2e65732c444e532e3237393d7777772e63616d70696c6c6f646564656c6569746f73612e65732c444e532e3238303d7777772e63616d706f6c756761722e65732c444e532e3238313d7777772e63616e616d65726f2e65732c444e532e3238323d7777772e63616e61766572616c2e65732c444e532e3238333d7777772e63617262616a6f2e65732c444e532e3238343d7777772e6361726361626f736f2e65732c444e532e3238353d7777772e63617272617363616c656a6f2e65732c444e532e3238363d7777772e63617361726465636163657265732e65732c444e532e3238373d7777772e6361736172646570616c6f6d65726f2e65732c444e532e3238383d7777772e6361736172657364656c61736875726465732e65732c444e532e3238393d7777772e63617361736465646f6e616e746f6e696f2e65732c444e532e3239303d7777772e63617361736465646f6e676f6d657a2e65732c444e532e3239313d7777772e636173617364656c63617374616e61722e65732c444e532e3239323d7777772e636173617364656c6d6f6e74652e65732c444e532e3239333d7777772e636173617364656d696c6c616e2e65732c444e532e3239343d7777772e636173617364656d697261766574652e65732c444e532e3239353d7777772e6361736174656a6164612e65732c444e532e3239363d7777772e636173696c6c61736465636f7269612e65732c444e532e3239373d7777772e63617374616e6172646569626f722e65732c444e532e3239383d7777772e6365636c6176696e2e65732c444e532e3239393d7777772e636564696c6c6f2e65732c444e532e3330303d7777772e636572657a6f2e65732c444e532e3330313d7777772e63696c6c65726f732e65732c444e532e3330323d7777772e636f6c6c61646f2e65732c444e532e3330333d7777772e636f6e71756973746164656c617369657272612e65732c444e532e3330343d7777772e636f7269612e65732c444e532e3330353d7777772e637561636f73646579757374652e65732c444e532e3330363d7777772e6c6163756d6272652e65732c444e532e3330373d7777772e64656c6569746f73612e65732c444e532e3330383d7777772e64657363617267616d617269612e65732c444e532e3330393d7777772e656c6a61732e65732c444e532e3331303d7777772e657363757269616c2e65732c444e532e3331313d7777772e667265736e65646f736f646569626f722e65732c444e532e3331323d7777772e67616c697374656f2e65732c444e532e3331333d7777772e6761726369617a2e65732c444e532e3331343d7777772e6c6167617267616e74612e65732c444e532e3331353d7777772e67617267616e74616c616f6c6c612e65732c444e532e3331363d7777772e67617267616e74696c6c612e65732c444e532e3331373d7777772e67617267756572612e65732c444e532e3331383d7777772e676172726f76696c6c61736465616c636f6e657461722e65732c444e532e3331393d7777772e67617276696e2e65732c444e532e3332303d7777772e676174612e65732c444e532e3332313d7777772e6179746f656c676f72646f2e65732c444e532e3332323d7777772e6c616772616e6a612e65732c444e532e3332333d7777772e6c616772616e6a6164656772616e6164696c6c612e65732c444e532e3332343d7777772e6179756e74616d69656e746f646567756164616c7570652e65732c444e532e3332353d7777772e6775696a6f6465636f7269612e65732c444e532e3332363d7777772e6775696a6f646567616c697374656f2e65732c444e532e3332373d7777772e6775696a6f64656772616e6164696c6c612e65732c444e532e3332383d7777772e6775696a6f646573616e7461626172626172612e65732c444e532e3332393d7777772e6865726775696a75656c612e65732c444e532e3333303d7777772e6865726e616e706572657a2e65732c444e532e3333313d7777772e686572726572616465616c63616e746172612e65732c444e532e3333323d7777772e68657272657275656c612e65732c444e532e3333333d7777772e6865727661732e65732c444e532e3333343d7777772e686967756572612e65732c444e532e3333353d7777772e68696e6f6a616c2e65732c444e532e3333363d7777772e686f6c67756572612e65732c444e532e3333373d7777772e686f796f732e65732c444e532e3333383d7777772e6875656c6167612e65732c444e532e3333393d7777772e6962616865726e616e646f2e65732c444e532e3334303d7777772e6a6172616963656a6f2e65732c444e532e3334313d7777772e6a617261697a64656c61766572612e65732c444e532e3334323d7777772e6a6172616e64696c6c6164656c61766572612e65732c444e532e3334333d7777772e6a6172696c6c612e65732c444e532e3334343d7777772e6a657274652e65732c444e532e3334353d7777772e6c616472696c6c61722e65732c444e532e3334363d7777772e6c6f67726f73616e2e65732c444e532e3334373d7777772e6c6f73617264656c61766572612e65732c444e532e3334383d7777772e6d6164726967616c656a6f2e65732c444e532e3334393d7777772e6d6164726967616c64656c61766572612e65732c444e532e3335303d7777772e6d6164726f6e6572612e65732c444e532e3335313d7777772e6d616a616461732e65732c444e532e3335323d7777772e6d616c706172746964616465636163657265732e65732c444e532e3335333d7777772e6d616c706172746964616465706c6173656e6369612e65732c444e532e3335343d7777772e6d617263686167617a2e65732c444e532e3335353d7777772e6d6174616465616c63616e746172612e65732c444e532e3335363d7777772e6d656d6272696f2e65732c444e532e3335373d7777772e6d65736173646569626f722e65732c444e532e3335383d7777772e6d69616a616461732e65732c444e532e3335393d7777772e6d696c6c616e65732e65732c444e532e3336303d7777772e6d69726162656c2e65732c444e532e3336313d7777772e6d6f686564617364656772616e6164696c6c612e65732c444e532e3336323d7777772e6d6f6e726f792e65732c444e532e3336333d7777772e6d6f6e74616e6368657a2e65732c444e532e3336343d7777772e6d6f6e74656865726d6f736f2e65732c444e532e3336353d7777772e6d6f72616c656a612e65732c444e532e3336363d7777772e6d6f7263696c6c6f2e65732c444e532e3336373d7777772e6e617661636f6e63656a6f2e65732c444e532e3336383d7777772e6e6176616c76696c6c6172646569626f722e65732c444e532e3336393d7777772e6e6176616c6d6f72616c64656c616d6174612e65732c444e532e3337303d7777772e6e6176617364656c6d6164726f6e6f2e65732c444e532e3337313d7777772e6e6176617472617369657272612e65732c444e532e3337323d7777772e6e6176657a75656c61732e65732c444e532e3337333d7777772e6e756e6f6d6f72616c2e65732c444e532e3337343d7777772e6f6c6976616465706c6173656e6369612e65732c444e532e3337353d7777772e70616c6f6d65726f2e65732c444e532e3337363d7777772e70617361726f6e64656c61766572612e65732c444e532e3337373d7777772e706564726f736f64656163696d2e65732c444e532e3337383d7777772e706572616c65646164656c616d6174612e65732c444e532e3337393d7777772e706572616c656461646573616e726f6d616e2e65732c444e532e3338303d7777772e706572616c657364656c70756572746f2e65732c444e532e3338313d7777772e7065736375657a612e65732c444e532e3338323d7777772e6c6170657367612e65732c444e532e3338333d7777772e70696564726173616c6261732e65732c444e532e3338343d7777772e70696e6f6672616e71756561646f2e65732c444e532e3338353d7777772e70696f726e616c2e65732c444e532e3338363d7777772e706c6173656e7a75656c612e65732c444e532e3338373d7777772e706f7274616a652e65732c444e532e3338383d7777772e706f7274657a75656c6f2e65732c444e532e3338393d7777772e706f7a75656c6f64657a61727a6f6e2e65732c444e532e3339303d7777772e707565626c6f6e7565766f64656d6972616d6f6e7465732e65732c444e532e3339313d7777772e70756572746f646573616e74616372757a2e65732c444e532e3339323d7777772e7265626f6c6c61722e65732c444e532e3339333d7777772e72696f6c6f626f732e65732c444e532e3339343d7777772e726f626c6564696c6c6f6465676174612e65732c444e532e3339353d7777772e726f626c6564696c6c6f64656c61766572612e65732c444e532e3339363d7777772e726f626c6564696c6c6f64657472756a696c6c6f2c444e532e3339373d7777772e726f626c65646f6c6c616e6f2e65732c444e532e3339383d7777772e726f6d616e676f72646f2e65732c444e532e3339393d7777772e7275616e65732e65732c444e532e3430303d7777772e73616c6f72696e6f2e65732c444e532e3430313d7777772e73616c7661746965727261646573616e746961676f2e65732c444e532e3430323d7777772e73616e6d617274696e646574726576656a6f2e65732c444e532e3430333d7777772e6179746f73616e7461616e612e65732c444e532e3430343d7777772e73616e74616372757a64656c617369657272612e65732c444e532e3430353d7777772e73616e74616372757a646570616e69616775612e65732c444e532e3430363d7777772e73616e74616d6172746164656d6167617363612e65732c444e532e3430373d7777772e73616e746961676f64656c63616d706f2e65732c444e532e3430383d7777772e73616e746962616e657a656c616c746f2e65732c444e532e3430393d7777772e73616e746962616e657a656c62616a6f2e65732c444e532e3431303d7777772e736175636564696c6c612e65732c444e532e3431313d7777772e7365677572616465746f726f2e65732c444e532e3431323d7777772e736572726164696c6c612e65732c444e532e3431333d7777772e73657272656a6f6e2e65732c444e532e3431343d7777772e73696572726164656675656e7465732e65732c444e532e3431353d7777772e74616c6176616e2e65732c444e532e3431363d7777772e74616c6176657275656c6164656c61766572612e65732c444e532e3431373d7777772e74616c617975656c612e65732c444e532e3431383d7777772e74656a65646164657469657461722e65732c444e532e3431393d7777772e746f72696c2e65732c444e532e3432303d7777772e746f726e6176616361732e65732c444e532e3432313d7777772e6179746f656c746f726e6f2e65732c444e532e3432323d7777772e746f72726563696c6c6164656c6f73616e67656c65732e65732c444e532e3432333d7777772e746f72726563696c6c617364656c6174696573612e65732c444e532e3432343d7777772e746f7272656465646f6e6d696775656c2e65732c444e532e3432353d7777772e746f727265646573616e74616d617269612e65732c444e532e3432363d7777772e746f7272656a6f6e656c727562696f2e65732c444e532e3432373d7777772e746f7272656a6f6e63696c6c6f2e65732c444e532e3432383d7777772e746f7272656d656e67612e65732c444e532e3432393d7777772e746f7272656d6f6368612e65732c444e532e3433303d7777772e746f7272656f7267617a2e65732c444e532e3433313d7777772e746f7272657175656d6164612e65732c444e532e3433323d7777772e76616c64617374696c6c61732e65732c444e532e3433333d7777772e76616c646563616e6173646574616a6f2e65732c444e532e3433343d7777772e76616c64656675656e7465732e65732c444e532e3433353d7777772e76616c646568756e6361722e65732c444e532e3433363d7777772e76616c6465696e69676f732e65732c444e532e3433373d7777772e76616c64656c6163617361646574616a6f2e65732c444e532e3433383d7777772e76616c64656d6f72616c65732e65732c444e532e3433393d7777772e76616c64656f626973706f2e65732c444e532e3434303d7777772e76616c646573616c6f722e65732c444e532e3434313d7777772e76616c72696f2e65732c444e532e3434323d7777772e76616c656e6369616465616c63616e746172612e65732c444e532e3434333d7777772e76616c766572646564656c61766572612e65732c444e532e3434343d7777772e76616c766572646564656c667265736e6f2e65732c444e532e3434353d7777772e766567617669616e612e65732c444e532e3434363d7777772e7669616e64617264656c61766572612e65732c444e532e3434373d7777772e76696c6c6164656c63616d706f2e65732c444e532e3434383d7777772e76696c6c6164656c7265792e65732c444e532e3434393d7777772e76696c6c616d65736961732e65732c444e532e3435303d7777772e76696c6c616d69656c2e65732c444e532e3435313d7777772e76696c6c616e7565766164656c617369657272612e65732c444e532e3435323d7777772e76696c6c617264656c706564726f736f2e65732c444e532e3435333d7777772e76696c6c61726465706c6173656e6369612e65732c444e532e3435343d7777772e76696c6c61736275656e61736465676174612e65732c444e532e3435353d7777772e7a61727a6164656772616e6164696c6c612e65732c444e532e3435363d7777772e7a61727a6164656d6f6e74616e6368657a2e65732c444e532e3435373d7777772e7a61727a616c616d61796f722e65732c444e532e3435383d7777772e7a6f726974612e65732c444e532e3435393d7777772e726f73616c656a6f2e65732c444e532e3436303d7777772e766567617669616e612e65732c444e532e3436313d7777772e616c61676f6e64656c72696f2e65732c444e532e3436323d7777772e7469657461722e65732c444e532e3436333d7777772e76616c646573616c6f722e65732c444e532e3436343d7777772e6e6176617472617369657272612e65732c444e532e3436353d7777772e7269766572616465667265736e65646f73612e65732c444e532e3436363d7777772e656c6d73616e67696c2e65732c444e532e3436373d7777772e74616a6f73616c6f722e65732c444e532e3436383d7777772e76616c6c65616d62726f7a2e65732c444e532e3436393d7777772e6d616e636f6d756e6964616476616c6c6564656c616c61676f6e2e65732c444e532e3437303d7777772e6d616e636f6d756e6964616476616c6c6564656c6a657274652e65732c444e532e3437313d7777772e6d616e636f6d756e696461647665676173616c7461732e65732c444e532e3437323d7777772e6d616e636f6d756e6964616464656c61766572612e65732c444e532e3437333d7777772e6d616e636f6d756e696461647a6f6e6163656e74726f2e65732c444e532e3437343d7777772e76696c6c7565726361732d69626f7265732d6a6172612e6573,EMAIL=webmaster@dip-caceres.es,CN=www.dip-caceres.es,OU=DIPUTACION PROVINCIAL DE CACERES,O=DIPUTACION PROVINCIAL DE CACERES,L=CACERES,ST=CACERES,C=ES", - .raw = {(void *) - "\x30\x82\x31\x29\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x45\x53\x31\x10\x30\x0e\x06\x03\x55\x04\x08\x13\x07\x43\x41\x43\x45\x52\x45\x53\x31\x10\x30\x0e\x06\x03\x55\x04\x07\x13\x07\x43\x41\x43\x45\x52\x45\x53\x31\x29\x30\x27\x06\x03\x55\x04\x0a\x13\x20\x44\x49\x50\x55\x54\x41\x43\x49\x4f\x4e\x20\x50\x52\x4f\x56\x49\x4e\x43\x49\x41\x4c\x20\x44\x45\x20\x43\x41\x43\x45\x52\x45\x53\x31\x29\x30\x27\x06\x03\x55\x04\x0b\x13\x20\x44\x49\x50\x55\x54\x41\x43\x49\x4f\x4e\x20\x50\x52\x4f\x56\x49\x4e\x43\x49\x41\x4c\x20\x44\x45\x20\x43\x41\x43\x45\x52\x45\x53\x31\x1b\x30\x19\x06\x03\x55\x04\x03\x13\x12\x77\x77\x77\x2e\x64\x69\x70\x2d\x63\x61\x63\x65\x72\x65\x73\x2e\x65\x73\x31\x27\x30\x25\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x09\x01\x16\x18\x77\x65\x62\x6d\x61\x73\x74\x65\x72\x40\x64\x69\x70\x2d\x63\x61\x63\x65\x72\x65\x73\x2e\x65\x73\x31\x82\x30\x58\x30\x82\x30\x54\x06\x03\x55\x1d\x11\x13\x82\x30\x4b\x44\x4e\x53\x2e\x31\x3d\x61\x62\x61\x64\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x3d\x61\x62\x65\x72\x74\x75\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x3d\x61\x63\x65\x62\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x3d\x61\x63\x65\x68\x75\x63\x68\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x3d\x61\x63\x65\x69\x74\x75\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x3d\x61\x68\x69\x67\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x3d\x61\x6c\x61\x67\x6f\x6e\x64\x65\x6c\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x3d\x61\x6c\x63\x6f\x6c\x6c\x61\x72\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x3d\x61\x79\x74\x6f\x61\x6c\x62\x61\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x3d\x61\x79\x74\x6f\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x3d\x61\x6c\x63\x75\x65\x73\x63\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x3d\x61\x6c\x64\x65\x61\x63\x65\x6e\x74\x65\x6e\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x3d\x61\x6c\x64\x65\x61\x64\x65\x6c\x63\x61\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x3d\x6c\x61\x61\x6c\x64\x65\x61\x64\x65\x6c\x6f\x62\x69\x73\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x3d\x61\x6c\x64\x65\x61\x6e\x75\x65\x76\x61\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x3d\x61\x6c\x64\x65\x61\x6e\x75\x65\x76\x61\x64\x65\x6c\x63\x61\x6d\x69\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x3d\x61\x6c\x64\x65\x68\x75\x65\x6c\x61\x64\x65\x6c\x6a\x65\x72\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x3d\x61\x79\x74\x6f\x61\x6c\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x3d\x61\x6c\x69\x73\x65\x64\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x3d\x61\x6c\x6d\x61\x72\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x3d\x61\x6c\x6d\x6f\x68\x61\x72\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x3d\x61\x79\x74\x6f\x61\x72\x72\x6f\x79\x6f\x64\x65\x6c\x61\x6c\x75\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x3d\x61\x72\x72\x6f\x79\x6f\x6d\x6f\x6c\x69\x6e\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x3d\x61\x72\x72\x6f\x79\x6f\x6d\x6f\x6c\x69\x6e\x6f\x73\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x3d\x62\x61\x6e\x6f\x73\x64\x65\x6d\x6f\x6e\x74\x65\x6d\x61\x79\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x3d\x62\x61\x72\x72\x61\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x3d\x62\x65\x6c\x76\x69\x73\x64\x65\x6d\x6f\x6e\x72\x6f\x79\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x3d\x62\x65\x6e\x71\x75\x65\x72\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x3d\x62\x65\x72\x72\x6f\x63\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x3d\x62\x65\x72\x7a\x6f\x63\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x3d\x62\x6f\x68\x6f\x6e\x61\x6c\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x3d\x62\x6f\x74\x69\x6a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x3d\x62\x72\x6f\x7a\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x3d\x63\x61\x62\x61\x6e\x61\x73\x64\x65\x6c\x63\x61\x73\x74\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x3d\x63\x61\x62\x65\x7a\x61\x62\x65\x6c\x6c\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x3d\x63\x61\x62\x65\x7a\x75\x65\x6c\x61\x64\x65\x6c\x76\x61\x6c\x6c\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x3d\x63\x61\x62\x72\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x3d\x63\x61\x63\x68\x6f\x72\x72\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x3d\x63\x61\x64\x61\x6c\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x3d\x63\x61\x6c\x7a\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x3d\x63\x61\x6d\x69\x6e\x6f\x6d\x6f\x72\x69\x73\x63\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x3d\x63\x61\x6d\x70\x69\x6c\x6c\x6f\x64\x65\x64\x65\x6c\x65\x69\x74\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x3d\x63\x61\x6d\x70\x6f\x6c\x75\x67\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x3d\x63\x61\x6e\x61\x6d\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x3d\x63\x61\x6e\x61\x76\x65\x72\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x3d\x63\x61\x72\x62\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x37\x3d\x63\x61\x72\x63\x61\x62\x6f\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x38\x3d\x63\x61\x72\x72\x61\x73\x63\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x39\x3d\x63\x61\x73\x61\x72\x64\x65\x63\x61\x63\x65\x72\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x30\x3d\x63\x61\x73\x61\x72\x64\x65\x70\x61\x6c\x6f\x6d\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x31\x3d\x63\x61\x73\x61\x72\x65\x73\x64\x65\x6c\x61\x73\x68\x75\x72\x64\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x32\x3d\x63\x61\x73\x61\x73\x64\x65\x64\x6f\x6e\x61\x6e\x74\x6f\x6e\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x33\x3d\x63\x61\x73\x61\x73\x64\x65\x64\x6f\x6e\x67\x6f\x6d\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x34\x3d\x63\x61\x73\x61\x73\x64\x65\x6c\x63\x61\x73\x74\x61\x6e\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x35\x3d\x63\x61\x73\x61\x73\x64\x65\x6c\x6d\x6f\x6e\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x36\x3d\x63\x61\x73\x61\x73\x64\x65\x6d\x69\x6c\x6c\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x37\x3d\x63\x61\x73\x61\x73\x64\x65\x6d\x69\x72\x61\x76\x65\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x38\x3d\x63\x61\x73\x61\x74\x65\x6a\x61\x64\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x39\x3d\x63\x61\x73\x69\x6c\x6c\x61\x73\x64\x65\x63\x6f\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x30\x3d\x63\x61\x73\x74\x61\x6e\x61\x72\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x31\x3d\x63\x65\x63\x6c\x61\x76\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x32\x3d\x63\x65\x64\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x33\x3d\x63\x65\x72\x65\x7a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x34\x3d\x63\x69\x6c\x6c\x65\x72\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x35\x3d\x63\x6f\x6c\x6c\x61\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x36\x3d\x63\x6f\x6e\x71\x75\x69\x73\x74\x61\x64\x65\x6c\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x37\x3d\x63\x6f\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x38\x3d\x63\x75\x61\x63\x6f\x73\x64\x65\x79\x75\x73\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x39\x3d\x6c\x61\x63\x75\x6d\x62\x72\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x30\x3d\x64\x65\x6c\x65\x69\x74\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x31\x3d\x64\x65\x73\x63\x61\x72\x67\x61\x6d\x61\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x32\x3d\x65\x6c\x6a\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x33\x3d\x65\x73\x63\x75\x72\x69\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x34\x3d\x66\x72\x65\x73\x6e\x65\x64\x6f\x73\x6f\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x35\x3d\x67\x61\x6c\x69\x73\x74\x65\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x36\x3d\x67\x61\x72\x63\x69\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x37\x3d\x6c\x61\x67\x61\x72\x67\x61\x6e\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x38\x3d\x67\x61\x72\x67\x61\x6e\x74\x61\x6c\x61\x6f\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x39\x3d\x67\x61\x72\x67\x61\x6e\x74\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x30\x3d\x67\x61\x72\x67\x75\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x31\x3d\x67\x61\x72\x72\x6f\x76\x69\x6c\x6c\x61\x73\x64\x65\x61\x6c\x63\x6f\x6e\x65\x74\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x32\x3d\x67\x61\x72\x76\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x33\x3d\x67\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x34\x3d\x61\x79\x74\x6f\x65\x6c\x67\x6f\x72\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x35\x3d\x6c\x61\x67\x72\x61\x6e\x6a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x36\x3d\x6c\x61\x67\x72\x61\x6e\x6a\x61\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x37\x3d\x61\x79\x75\x6e\x74\x61\x6d\x69\x65\x6e\x74\x6f\x64\x65\x67\x75\x61\x64\x61\x6c\x75\x70\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x38\x3d\x67\x75\x69\x6a\x6f\x64\x65\x63\x6f\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x39\x3d\x67\x75\x69\x6a\x6f\x64\x65\x67\x61\x6c\x69\x73\x74\x65\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x30\x3d\x67\x75\x69\x6a\x6f\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x31\x3d\x67\x75\x69\x6a\x6f\x64\x65\x73\x61\x6e\x74\x61\x62\x61\x72\x62\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x32\x3d\x68\x65\x72\x67\x75\x69\x6a\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x33\x3d\x68\x65\x72\x6e\x61\x6e\x70\x65\x72\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x34\x3d\x68\x65\x72\x72\x65\x72\x61\x64\x65\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x35\x3d\x68\x65\x72\x72\x65\x72\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x36\x3d\x68\x65\x72\x76\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x37\x3d\x68\x69\x67\x75\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x38\x3d\x68\x69\x6e\x6f\x6a\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x39\x3d\x68\x6f\x6c\x67\x75\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x30\x3d\x68\x6f\x79\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x31\x3d\x68\x75\x65\x6c\x61\x67\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x32\x3d\x69\x62\x61\x68\x65\x72\x6e\x61\x6e\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x33\x3d\x6a\x61\x72\x61\x69\x63\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x34\x3d\x6a\x61\x72\x61\x69\x7a\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x35\x3d\x6a\x61\x72\x61\x6e\x64\x69\x6c\x6c\x61\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x36\x3d\x6a\x61\x72\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x37\x3d\x6a\x65\x72\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x38\x3d\x6c\x61\x64\x72\x69\x6c\x6c\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x39\x3d\x6c\x6f\x67\x72\x6f\x73\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x30\x3d\x6c\x6f\x73\x61\x72\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x31\x3d\x6d\x61\x64\x72\x69\x67\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x32\x3d\x6d\x61\x64\x72\x69\x67\x61\x6c\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x33\x3d\x6d\x61\x64\x72\x6f\x6e\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x34\x3d\x6d\x61\x6a\x61\x64\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x35\x3d\x6d\x61\x6c\x70\x61\x72\x74\x69\x64\x61\x64\x65\x63\x61\x63\x65\x72\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x36\x3d\x6d\x61\x6c\x70\x61\x72\x74\x69\x64\x61\x64\x65\x70\x6c\x61\x73\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x37\x3d\x6d\x61\x72\x63\x68\x61\x67\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x38\x3d\x6d\x61\x74\x61\x64\x65\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x39\x3d\x6d\x65\x6d\x62\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x30\x3d\x6d\x65\x73\x61\x73\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x31\x3d\x6d\x69\x61\x6a\x61\x64\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x32\x3d\x6d\x69\x6c\x6c\x61\x6e\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x33\x3d\x6d\x69\x72\x61\x62\x65\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x34\x3d\x6d\x6f\x68\x65\x64\x61\x73\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x35\x3d\x6d\x6f\x6e\x72\x6f\x79\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x36\x3d\x6d\x6f\x6e\x74\x61\x6e\x63\x68\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x37\x3d\x6d\x6f\x6e\x74\x65\x68\x65\x72\x6d\x6f\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x38\x3d\x6d\x6f\x72\x61\x6c\x65\x6a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x39\x3d\x6d\x6f\x72\x63\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x30\x3d\x6e\x61\x76\x61\x63\x6f\x6e\x63\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x31\x3d\x6e\x61\x76\x61\x6c\x76\x69\x6c\x6c\x61\x72\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x32\x3d\x6e\x61\x76\x61\x6c\x6d\x6f\x72\x61\x6c\x64\x65\x6c\x61\x6d\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x33\x3d\x6e\x61\x76\x61\x73\x64\x65\x6c\x6d\x61\x64\x72\x6f\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x34\x3d\x6e\x61\x76\x61\x74\x72\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x35\x3d\x6e\x61\x76\x65\x7a\x75\x65\x6c\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x36\x3d\x6e\x75\x6e\x6f\x6d\x6f\x72\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x37\x3d\x6f\x6c\x69\x76\x61\x64\x65\x70\x6c\x61\x73\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x38\x3d\x70\x61\x6c\x6f\x6d\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x39\x3d\x70\x61\x73\x61\x72\x6f\x6e\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x30\x3d\x70\x65\x64\x72\x6f\x73\x6f\x64\x65\x61\x63\x69\x6d\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x31\x3d\x70\x65\x72\x61\x6c\x65\x64\x61\x64\x65\x6c\x61\x6d\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x32\x3d\x70\x65\x72\x61\x6c\x65\x64\x61\x64\x65\x73\x61\x6e\x72\x6f\x6d\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x33\x3d\x70\x65\x72\x61\x6c\x65\x73\x64\x65\x6c\x70\x75\x65\x72\x74\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x34\x3d\x70\x65\x73\x63\x75\x65\x7a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x35\x3d\x6c\x61\x70\x65\x73\x67\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x36\x3d\x70\x69\x65\x64\x72\x61\x73\x61\x6c\x62\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x37\x3d\x70\x69\x6e\x6f\x66\x72\x61\x6e\x71\x75\x65\x61\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x38\x3d\x70\x69\x6f\x72\x6e\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x39\x3d\x70\x6c\x61\x73\x65\x6e\x7a\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x30\x3d\x70\x6f\x72\x74\x61\x6a\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x31\x3d\x70\x6f\x72\x74\x65\x7a\x75\x65\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x32\x3d\x70\x6f\x7a\x75\x65\x6c\x6f\x64\x65\x7a\x61\x72\x7a\x6f\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x33\x3d\x70\x75\x65\x62\x6c\x6f\x6e\x75\x65\x76\x6f\x64\x65\x6d\x69\x72\x61\x6d\x6f\x6e\x74\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x34\x3d\x70\x75\x65\x72\x74\x6f\x64\x65\x73\x61\x6e\x74\x61\x63\x72\x75\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x35\x3d\x72\x65\x62\x6f\x6c\x6c\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x36\x3d\x72\x69\x6f\x6c\x6f\x62\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x37\x3d\x72\x6f\x62\x6c\x65\x64\x69\x6c\x6c\x6f\x64\x65\x67\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x38\x3d\x72\x6f\x62\x6c\x65\x64\x69\x6c\x6c\x6f\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x39\x3d\x72\x6f\x62\x6c\x65\x64\x69\x6c\x6c\x6f\x64\x65\x74\x72\x75\x6a\x69\x6c\x6c\x6f\x2c\x44\x4e\x53\x2e\x31\x36\x30\x3d\x72\x6f\x62\x6c\x65\x64\x6f\x6c\x6c\x61\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x31\x3d\x72\x6f\x6d\x61\x6e\x67\x6f\x72\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x32\x3d\x72\x75\x61\x6e\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x33\x3d\x73\x61\x6c\x6f\x72\x69\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x34\x3d\x73\x61\x6c\x76\x61\x74\x69\x65\x72\x72\x61\x64\x65\x73\x61\x6e\x74\x69\x61\x67\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x35\x3d\x73\x61\x6e\x6d\x61\x72\x74\x69\x6e\x64\x65\x74\x72\x65\x76\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x36\x3d\x61\x79\x74\x6f\x73\x61\x6e\x74\x61\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x37\x3d\x73\x61\x6e\x74\x61\x63\x72\x75\x7a\x64\x65\x6c\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x38\x3d\x73\x61\x6e\x74\x61\x63\x72\x75\x7a\x64\x65\x70\x61\x6e\x69\x61\x67\x75\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x39\x3d\x73\x61\x6e\x74\x61\x6d\x61\x72\x74\x61\x64\x65\x6d\x61\x67\x61\x73\x63\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x30\x3d\x73\x61\x6e\x74\x69\x61\x67\x6f\x64\x65\x6c\x63\x61\x6d\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x31\x3d\x73\x61\x6e\x74\x69\x62\x61\x6e\x65\x7a\x65\x6c\x61\x6c\x74\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x32\x3d\x73\x61\x6e\x74\x69\x62\x61\x6e\x65\x7a\x65\x6c\x62\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x33\x3d\x73\x61\x75\x63\x65\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x34\x3d\x73\x65\x67\x75\x72\x61\x64\x65\x74\x6f\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x35\x3d\x73\x65\x72\x72\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x36\x3d\x73\x65\x72\x72\x65\x6a\x6f\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x37\x3d\x73\x69\x65\x72\x72\x61\x64\x65\x66\x75\x65\x6e\x74\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x38\x3d\x74\x61\x6c\x61\x76\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x39\x3d\x74\x61\x6c\x61\x76\x65\x72\x75\x65\x6c\x61\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x30\x3d\x74\x61\x6c\x61\x79\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x31\x3d\x74\x65\x6a\x65\x64\x61\x64\x65\x74\x69\x65\x74\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x32\x3d\x74\x6f\x72\x69\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x33\x3d\x74\x6f\x72\x6e\x61\x76\x61\x63\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x34\x3d\x61\x79\x74\x6f\x65\x6c\x74\x6f\x72\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x35\x3d\x74\x6f\x72\x72\x65\x63\x69\x6c\x6c\x61\x64\x65\x6c\x6f\x73\x61\x6e\x67\x65\x6c\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x36\x3d\x74\x6f\x72\x72\x65\x63\x69\x6c\x6c\x61\x73\x64\x65\x6c\x61\x74\x69\x65\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x37\x3d\x74\x6f\x72\x72\x65\x64\x65\x64\x6f\x6e\x6d\x69\x67\x75\x65\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x38\x3d\x74\x6f\x72\x72\x65\x64\x65\x73\x61\x6e\x74\x61\x6d\x61\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x39\x3d\x74\x6f\x72\x72\x65\x6a\x6f\x6e\x65\x6c\x72\x75\x62\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x30\x3d\x74\x6f\x72\x72\x65\x6a\x6f\x6e\x63\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x31\x3d\x74\x6f\x72\x72\x65\x6d\x65\x6e\x67\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x32\x3d\x74\x6f\x72\x72\x65\x6d\x6f\x63\x68\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x33\x3d\x74\x6f\x72\x72\x65\x6f\x72\x67\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x34\x3d\x74\x6f\x72\x72\x65\x71\x75\x65\x6d\x61\x64\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x35\x3d\x76\x61\x6c\x64\x61\x73\x74\x69\x6c\x6c\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x36\x3d\x76\x61\x6c\x64\x65\x63\x61\x6e\x61\x73\x64\x65\x74\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x37\x3d\x76\x61\x6c\x64\x65\x66\x75\x65\x6e\x74\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x38\x3d\x76\x61\x6c\x64\x65\x68\x75\x6e\x63\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x39\x3d\x76\x61\x6c\x64\x65\x69\x6e\x69\x67\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x30\x3d\x76\x61\x6c\x64\x65\x6c\x61\x63\x61\x73\x61\x64\x65\x74\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x31\x3d\x76\x61\x6c\x64\x65\x6d\x6f\x72\x61\x6c\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x32\x3d\x76\x61\x6c\x64\x65\x6f\x62\x69\x73\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x33\x3d\x76\x61\x6c\x64\x65\x73\x61\x6c\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x34\x3d\x76\x61\x6c\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x35\x3d\x76\x61\x6c\x65\x6e\x63\x69\x61\x64\x65\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x36\x3d\x76\x61\x6c\x76\x65\x72\x64\x65\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x37\x3d\x76\x61\x6c\x76\x65\x72\x64\x65\x64\x65\x6c\x66\x72\x65\x73\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x38\x3d\x76\x65\x67\x61\x76\x69\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x39\x3d\x76\x69\x61\x6e\x64\x61\x72\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x30\x3d\x76\x69\x6c\x6c\x61\x64\x65\x6c\x63\x61\x6d\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x31\x3d\x76\x69\x6c\x6c\x61\x64\x65\x6c\x72\x65\x79\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x32\x3d\x76\x69\x6c\x6c\x61\x6d\x65\x73\x69\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x33\x3d\x76\x69\x6c\x6c\x61\x6d\x69\x65\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x34\x3d\x76\x69\x6c\x6c\x61\x6e\x75\x65\x76\x61\x64\x65\x6c\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x35\x3d\x76\x69\x6c\x6c\x61\x72\x64\x65\x6c\x70\x65\x64\x72\x6f\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x36\x3d\x76\x69\x6c\x6c\x61\x72\x64\x65\x70\x6c\x61\x73\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x37\x3d\x76\x69\x6c\x6c\x61\x73\x62\x75\x65\x6e\x61\x73\x64\x65\x67\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x38\x3d\x7a\x61\x72\x7a\x61\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x39\x3d\x7a\x61\x72\x7a\x61\x64\x65\x6d\x6f\x6e\x74\x61\x6e\x63\x68\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x30\x3d\x7a\x61\x72\x7a\x61\x6c\x61\x6d\x61\x79\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x31\x3d\x7a\x6f\x72\x69\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x32\x3d\x72\x6f\x73\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x33\x3d\x76\x65\x67\x61\x76\x69\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x34\x3d\x61\x6c\x61\x67\x6f\x6e\x64\x65\x6c\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x35\x3d\x74\x69\x65\x74\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x36\x3d\x76\x61\x6c\x64\x65\x73\x61\x6c\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x37\x3d\x6e\x61\x76\x61\x74\x72\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x38\x3d\x72\x69\x76\x65\x72\x61\x64\x65\x66\x72\x65\x73\x6e\x65\x64\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x39\x3d\x65\x6c\x6d\x73\x61\x6e\x67\x69\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x30\x3d\x74\x61\x6a\x6f\x73\x61\x6c\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x31\x3d\x76\x61\x6c\x6c\x65\x61\x6d\x62\x72\x6f\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x32\x3d\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x76\x61\x6c\x6c\x65\x64\x65\x6c\x61\x6c\x61\x67\x6f\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x33\x3d\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x76\x61\x6c\x6c\x65\x64\x65\x6c\x6a\x65\x72\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x34\x3d\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x76\x65\x67\x61\x73\x61\x6c\x74\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x35\x3d\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x36\x3d\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x7a\x6f\x6e\x61\x63\x65\x6e\x74\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x37\x3d\x76\x69\x6c\x6c\x75\x65\x72\x63\x61\x73\x2d\x69\x62\x6f\x72\x65\x73\x2d\x6a\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x38\x3d\x77\x77\x77\x2e\x61\x62\x61\x64\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x39\x3d\x77\x77\x77\x2e\x61\x62\x65\x72\x74\x75\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x30\x3d\x77\x77\x77\x2e\x61\x63\x65\x62\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x31\x3d\x77\x77\x77\x2e\x61\x63\x65\x68\x75\x63\x68\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x32\x3d\x77\x77\x77\x2e\x61\x63\x65\x69\x74\x75\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x33\x3d\x77\x77\x77\x2e\x61\x68\x69\x67\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x34\x3d\x77\x77\x77\x2e\x61\x6c\x61\x67\x6f\x6e\x64\x65\x6c\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x35\x3d\x77\x77\x77\x2e\x61\x6c\x63\x6f\x6c\x6c\x61\x72\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x36\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x61\x6c\x62\x61\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x37\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x38\x3d\x77\x77\x77\x2e\x61\x6c\x63\x75\x65\x73\x63\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x39\x3d\x77\x77\x77\x2e\x61\x6c\x64\x65\x61\x63\x65\x6e\x74\x65\x6e\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x30\x3d\x77\x77\x77\x2e\x61\x6c\x64\x65\x61\x64\x65\x6c\x63\x61\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x31\x3d\x77\x77\x77\x2e\x6c\x61\x61\x6c\x64\x65\x61\x64\x65\x6c\x6f\x62\x69\x73\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x32\x3d\x77\x77\x77\x2e\x61\x6c\x64\x65\x61\x6e\x75\x65\x76\x61\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x33\x3d\x77\x77\x77\x2e\x61\x6c\x64\x65\x61\x6e\x75\x65\x76\x61\x64\x65\x6c\x63\x61\x6d\x69\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x34\x3d\x77\x77\x77\x2e\x61\x6c\x64\x65\x68\x75\x65\x6c\x61\x64\x65\x6c\x6a\x65\x72\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x35\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x61\x6c\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x36\x3d\x77\x77\x77\x2e\x61\x6c\x69\x73\x65\x64\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x37\x3d\x77\x77\x77\x2e\x61\x6c\x6d\x61\x72\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x38\x3d\x77\x77\x77\x2e\x61\x6c\x6d\x6f\x68\x61\x72\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x39\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x61\x72\x72\x6f\x79\x6f\x64\x65\x6c\x61\x6c\x75\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x30\x3d\x77\x77\x77\x2e\x61\x72\x72\x6f\x79\x6f\x6d\x6f\x6c\x69\x6e\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x31\x3d\x77\x77\x77\x2e\x61\x72\x72\x6f\x79\x6f\x6d\x6f\x6c\x69\x6e\x6f\x73\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x32\x3d\x77\x77\x77\x2e\x62\x61\x6e\x6f\x73\x64\x65\x6d\x6f\x6e\x74\x65\x6d\x61\x79\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x33\x3d\x77\x77\x77\x2e\x62\x61\x72\x72\x61\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x34\x3d\x77\x77\x77\x2e\x62\x65\x6c\x76\x69\x73\x64\x65\x6d\x6f\x6e\x72\x6f\x79\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x35\x3d\x77\x77\x77\x2e\x62\x65\x6e\x71\x75\x65\x72\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x36\x3d\x77\x77\x77\x2e\x62\x65\x72\x72\x6f\x63\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x37\x3d\x77\x77\x77\x2e\x62\x65\x72\x7a\x6f\x63\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x38\x3d\x77\x77\x77\x2e\x62\x6f\x68\x6f\x6e\x61\x6c\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x39\x3d\x77\x77\x77\x2e\x62\x6f\x74\x69\x6a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x30\x3d\x77\x77\x77\x2e\x62\x72\x6f\x7a\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x31\x3d\x77\x77\x77\x2e\x63\x61\x62\x61\x6e\x61\x73\x64\x65\x6c\x63\x61\x73\x74\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x32\x3d\x77\x77\x77\x2e\x63\x61\x62\x65\x7a\x61\x62\x65\x6c\x6c\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x33\x3d\x77\x77\x77\x2e\x63\x61\x62\x65\x7a\x75\x65\x6c\x61\x64\x65\x6c\x76\x61\x6c\x6c\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x34\x3d\x77\x77\x77\x2e\x63\x61\x62\x72\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x35\x3d\x77\x77\x77\x2e\x63\x61\x63\x68\x6f\x72\x72\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x36\x3d\x77\x77\x77\x2e\x63\x61\x64\x61\x6c\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x37\x3d\x77\x77\x77\x2e\x63\x61\x6c\x7a\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x38\x3d\x77\x77\x77\x2e\x63\x61\x6d\x69\x6e\x6f\x6d\x6f\x72\x69\x73\x63\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x39\x3d\x77\x77\x77\x2e\x63\x61\x6d\x70\x69\x6c\x6c\x6f\x64\x65\x64\x65\x6c\x65\x69\x74\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x30\x3d\x77\x77\x77\x2e\x63\x61\x6d\x70\x6f\x6c\x75\x67\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x31\x3d\x77\x77\x77\x2e\x63\x61\x6e\x61\x6d\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x32\x3d\x77\x77\x77\x2e\x63\x61\x6e\x61\x76\x65\x72\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x33\x3d\x77\x77\x77\x2e\x63\x61\x72\x62\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x34\x3d\x77\x77\x77\x2e\x63\x61\x72\x63\x61\x62\x6f\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x35\x3d\x77\x77\x77\x2e\x63\x61\x72\x72\x61\x73\x63\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x36\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x72\x64\x65\x63\x61\x63\x65\x72\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x37\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x72\x64\x65\x70\x61\x6c\x6f\x6d\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x38\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x72\x65\x73\x64\x65\x6c\x61\x73\x68\x75\x72\x64\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x39\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x73\x64\x65\x64\x6f\x6e\x61\x6e\x74\x6f\x6e\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x30\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x73\x64\x65\x64\x6f\x6e\x67\x6f\x6d\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x31\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x73\x64\x65\x6c\x63\x61\x73\x74\x61\x6e\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x32\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x73\x64\x65\x6c\x6d\x6f\x6e\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x33\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x73\x64\x65\x6d\x69\x6c\x6c\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x34\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x73\x64\x65\x6d\x69\x72\x61\x76\x65\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x35\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x74\x65\x6a\x61\x64\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x36\x3d\x77\x77\x77\x2e\x63\x61\x73\x69\x6c\x6c\x61\x73\x64\x65\x63\x6f\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x37\x3d\x77\x77\x77\x2e\x63\x61\x73\x74\x61\x6e\x61\x72\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x38\x3d\x77\x77\x77\x2e\x63\x65\x63\x6c\x61\x76\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x39\x3d\x77\x77\x77\x2e\x63\x65\x64\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x30\x3d\x77\x77\x77\x2e\x63\x65\x72\x65\x7a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x31\x3d\x77\x77\x77\x2e\x63\x69\x6c\x6c\x65\x72\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x32\x3d\x77\x77\x77\x2e\x63\x6f\x6c\x6c\x61\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x33\x3d\x77\x77\x77\x2e\x63\x6f\x6e\x71\x75\x69\x73\x74\x61\x64\x65\x6c\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x34\x3d\x77\x77\x77\x2e\x63\x6f\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x35\x3d\x77\x77\x77\x2e\x63\x75\x61\x63\x6f\x73\x64\x65\x79\x75\x73\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x36\x3d\x77\x77\x77\x2e\x6c\x61\x63\x75\x6d\x62\x72\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x37\x3d\x77\x77\x77\x2e\x64\x65\x6c\x65\x69\x74\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x38\x3d\x77\x77\x77\x2e\x64\x65\x73\x63\x61\x72\x67\x61\x6d\x61\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x39\x3d\x77\x77\x77\x2e\x65\x6c\x6a\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x30\x3d\x77\x77\x77\x2e\x65\x73\x63\x75\x72\x69\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x31\x3d\x77\x77\x77\x2e\x66\x72\x65\x73\x6e\x65\x64\x6f\x73\x6f\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x32\x3d\x77\x77\x77\x2e\x67\x61\x6c\x69\x73\x74\x65\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x33\x3d\x77\x77\x77\x2e\x67\x61\x72\x63\x69\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x34\x3d\x77\x77\x77\x2e\x6c\x61\x67\x61\x72\x67\x61\x6e\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x35\x3d\x77\x77\x77\x2e\x67\x61\x72\x67\x61\x6e\x74\x61\x6c\x61\x6f\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x36\x3d\x77\x77\x77\x2e\x67\x61\x72\x67\x61\x6e\x74\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x37\x3d\x77\x77\x77\x2e\x67\x61\x72\x67\x75\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x38\x3d\x77\x77\x77\x2e\x67\x61\x72\x72\x6f\x76\x69\x6c\x6c\x61\x73\x64\x65\x61\x6c\x63\x6f\x6e\x65\x74\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x39\x3d\x77\x77\x77\x2e\x67\x61\x72\x76\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x30\x3d\x77\x77\x77\x2e\x67\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x31\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x65\x6c\x67\x6f\x72\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x32\x3d\x77\x77\x77\x2e\x6c\x61\x67\x72\x61\x6e\x6a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x33\x3d\x77\x77\x77\x2e\x6c\x61\x67\x72\x61\x6e\x6a\x61\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x34\x3d\x77\x77\x77\x2e\x61\x79\x75\x6e\x74\x61\x6d\x69\x65\x6e\x74\x6f\x64\x65\x67\x75\x61\x64\x61\x6c\x75\x70\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x35\x3d\x77\x77\x77\x2e\x67\x75\x69\x6a\x6f\x64\x65\x63\x6f\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x36\x3d\x77\x77\x77\x2e\x67\x75\x69\x6a\x6f\x64\x65\x67\x61\x6c\x69\x73\x74\x65\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x37\x3d\x77\x77\x77\x2e\x67\x75\x69\x6a\x6f\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x38\x3d\x77\x77\x77\x2e\x67\x75\x69\x6a\x6f\x64\x65\x73\x61\x6e\x74\x61\x62\x61\x72\x62\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x39\x3d\x77\x77\x77\x2e\x68\x65\x72\x67\x75\x69\x6a\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x30\x3d\x77\x77\x77\x2e\x68\x65\x72\x6e\x61\x6e\x70\x65\x72\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x31\x3d\x77\x77\x77\x2e\x68\x65\x72\x72\x65\x72\x61\x64\x65\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x32\x3d\x77\x77\x77\x2e\x68\x65\x72\x72\x65\x72\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x33\x3d\x77\x77\x77\x2e\x68\x65\x72\x76\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x34\x3d\x77\x77\x77\x2e\x68\x69\x67\x75\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x35\x3d\x77\x77\x77\x2e\x68\x69\x6e\x6f\x6a\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x36\x3d\x77\x77\x77\x2e\x68\x6f\x6c\x67\x75\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x37\x3d\x77\x77\x77\x2e\x68\x6f\x79\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x38\x3d\x77\x77\x77\x2e\x68\x75\x65\x6c\x61\x67\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x39\x3d\x77\x77\x77\x2e\x69\x62\x61\x68\x65\x72\x6e\x61\x6e\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x30\x3d\x77\x77\x77\x2e\x6a\x61\x72\x61\x69\x63\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x31\x3d\x77\x77\x77\x2e\x6a\x61\x72\x61\x69\x7a\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x32\x3d\x77\x77\x77\x2e\x6a\x61\x72\x61\x6e\x64\x69\x6c\x6c\x61\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x33\x3d\x77\x77\x77\x2e\x6a\x61\x72\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x34\x3d\x77\x77\x77\x2e\x6a\x65\x72\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x35\x3d\x77\x77\x77\x2e\x6c\x61\x64\x72\x69\x6c\x6c\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x36\x3d\x77\x77\x77\x2e\x6c\x6f\x67\x72\x6f\x73\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x37\x3d\x77\x77\x77\x2e\x6c\x6f\x73\x61\x72\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x38\x3d\x77\x77\x77\x2e\x6d\x61\x64\x72\x69\x67\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x39\x3d\x77\x77\x77\x2e\x6d\x61\x64\x72\x69\x67\x61\x6c\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x30\x3d\x77\x77\x77\x2e\x6d\x61\x64\x72\x6f\x6e\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x31\x3d\x77\x77\x77\x2e\x6d\x61\x6a\x61\x64\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x32\x3d\x77\x77\x77\x2e\x6d\x61\x6c\x70\x61\x72\x74\x69\x64\x61\x64\x65\x63\x61\x63\x65\x72\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x33\x3d\x77\x77\x77\x2e\x6d\x61\x6c\x70\x61\x72\x74\x69\x64\x61\x64\x65\x70\x6c\x61\x73\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x34\x3d\x77\x77\x77\x2e\x6d\x61\x72\x63\x68\x61\x67\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x35\x3d\x77\x77\x77\x2e\x6d\x61\x74\x61\x64\x65\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x36\x3d\x77\x77\x77\x2e\x6d\x65\x6d\x62\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x37\x3d\x77\x77\x77\x2e\x6d\x65\x73\x61\x73\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x38\x3d\x77\x77\x77\x2e\x6d\x69\x61\x6a\x61\x64\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x39\x3d\x77\x77\x77\x2e\x6d\x69\x6c\x6c\x61\x6e\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x30\x3d\x77\x77\x77\x2e\x6d\x69\x72\x61\x62\x65\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x31\x3d\x77\x77\x77\x2e\x6d\x6f\x68\x65\x64\x61\x73\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x32\x3d\x77\x77\x77\x2e\x6d\x6f\x6e\x72\x6f\x79\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x33\x3d\x77\x77\x77\x2e\x6d\x6f\x6e\x74\x61\x6e\x63\x68\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x34\x3d\x77\x77\x77\x2e\x6d\x6f\x6e\x74\x65\x68\x65\x72\x6d\x6f\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x35\x3d\x77\x77\x77\x2e\x6d\x6f\x72\x61\x6c\x65\x6a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x36\x3d\x77\x77\x77\x2e\x6d\x6f\x72\x63\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x37\x3d\x77\x77\x77\x2e\x6e\x61\x76\x61\x63\x6f\x6e\x63\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x38\x3d\x77\x77\x77\x2e\x6e\x61\x76\x61\x6c\x76\x69\x6c\x6c\x61\x72\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x39\x3d\x77\x77\x77\x2e\x6e\x61\x76\x61\x6c\x6d\x6f\x72\x61\x6c\x64\x65\x6c\x61\x6d\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x30\x3d\x77\x77\x77\x2e\x6e\x61\x76\x61\x73\x64\x65\x6c\x6d\x61\x64\x72\x6f\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x31\x3d\x77\x77\x77\x2e\x6e\x61\x76\x61\x74\x72\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x32\x3d\x77\x77\x77\x2e\x6e\x61\x76\x65\x7a\x75\x65\x6c\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x33\x3d\x77\x77\x77\x2e\x6e\x75\x6e\x6f\x6d\x6f\x72\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x34\x3d\x77\x77\x77\x2e\x6f\x6c\x69\x76\x61\x64\x65\x70\x6c\x61\x73\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x35\x3d\x77\x77\x77\x2e\x70\x61\x6c\x6f\x6d\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x36\x3d\x77\x77\x77\x2e\x70\x61\x73\x61\x72\x6f\x6e\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x37\x3d\x77\x77\x77\x2e\x70\x65\x64\x72\x6f\x73\x6f\x64\x65\x61\x63\x69\x6d\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x38\x3d\x77\x77\x77\x2e\x70\x65\x72\x61\x6c\x65\x64\x61\x64\x65\x6c\x61\x6d\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x39\x3d\x77\x77\x77\x2e\x70\x65\x72\x61\x6c\x65\x64\x61\x64\x65\x73\x61\x6e\x72\x6f\x6d\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x30\x3d\x77\x77\x77\x2e\x70\x65\x72\x61\x6c\x65\x73\x64\x65\x6c\x70\x75\x65\x72\x74\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x31\x3d\x77\x77\x77\x2e\x70\x65\x73\x63\x75\x65\x7a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x32\x3d\x77\x77\x77\x2e\x6c\x61\x70\x65\x73\x67\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x33\x3d\x77\x77\x77\x2e\x70\x69\x65\x64\x72\x61\x73\x61\x6c\x62\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x34\x3d\x77\x77\x77\x2e\x70\x69\x6e\x6f\x66\x72\x61\x6e\x71\x75\x65\x61\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x35\x3d\x77\x77\x77\x2e\x70\x69\x6f\x72\x6e\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x36\x3d\x77\x77\x77\x2e\x70\x6c\x61\x73\x65\x6e\x7a\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x37\x3d\x77\x77\x77\x2e\x70\x6f\x72\x74\x61\x6a\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x38\x3d\x77\x77\x77\x2e\x70\x6f\x72\x74\x65\x7a\x75\x65\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x39\x3d\x77\x77\x77\x2e\x70\x6f\x7a\x75\x65\x6c\x6f\x64\x65\x7a\x61\x72\x7a\x6f\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x30\x3d\x77\x77\x77\x2e\x70\x75\x65\x62\x6c\x6f\x6e\x75\x65\x76\x6f\x64\x65\x6d\x69\x72\x61\x6d\x6f\x6e\x74\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x31\x3d\x77\x77\x77\x2e\x70\x75\x65\x72\x74\x6f\x64\x65\x73\x61\x6e\x74\x61\x63\x72\x75\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x32\x3d\x77\x77\x77\x2e\x72\x65\x62\x6f\x6c\x6c\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x33\x3d\x77\x77\x77\x2e\x72\x69\x6f\x6c\x6f\x62\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x34\x3d\x77\x77\x77\x2e\x72\x6f\x62\x6c\x65\x64\x69\x6c\x6c\x6f\x64\x65\x67\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x35\x3d\x77\x77\x77\x2e\x72\x6f\x62\x6c\x65\x64\x69\x6c\x6c\x6f\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x36\x3d\x77\x77\x77\x2e\x72\x6f\x62\x6c\x65\x64\x69\x6c\x6c\x6f\x64\x65\x74\x72\x75\x6a\x69\x6c\x6c\x6f\x2c\x44\x4e\x53\x2e\x33\x39\x37\x3d\x77\x77\x77\x2e\x72\x6f\x62\x6c\x65\x64\x6f\x6c\x6c\x61\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x38\x3d\x77\x77\x77\x2e\x72\x6f\x6d\x61\x6e\x67\x6f\x72\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x39\x3d\x77\x77\x77\x2e\x72\x75\x61\x6e\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x30\x3d\x77\x77\x77\x2e\x73\x61\x6c\x6f\x72\x69\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x31\x3d\x77\x77\x77\x2e\x73\x61\x6c\x76\x61\x74\x69\x65\x72\x72\x61\x64\x65\x73\x61\x6e\x74\x69\x61\x67\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x32\x3d\x77\x77\x77\x2e\x73\x61\x6e\x6d\x61\x72\x74\x69\x6e\x64\x65\x74\x72\x65\x76\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x33\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x73\x61\x6e\x74\x61\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x34\x3d\x77\x77\x77\x2e\x73\x61\x6e\x74\x61\x63\x72\x75\x7a\x64\x65\x6c\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x35\x3d\x77\x77\x77\x2e\x73\x61\x6e\x74\x61\x63\x72\x75\x7a\x64\x65\x70\x61\x6e\x69\x61\x67\x75\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x36\x3d\x77\x77\x77\x2e\x73\x61\x6e\x74\x61\x6d\x61\x72\x74\x61\x64\x65\x6d\x61\x67\x61\x73\x63\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x37\x3d\x77\x77\x77\x2e\x73\x61\x6e\x74\x69\x61\x67\x6f\x64\x65\x6c\x63\x61\x6d\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x38\x3d\x77\x77\x77\x2e\x73\x61\x6e\x74\x69\x62\x61\x6e\x65\x7a\x65\x6c\x61\x6c\x74\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x39\x3d\x77\x77\x77\x2e\x73\x61\x6e\x74\x69\x62\x61\x6e\x65\x7a\x65\x6c\x62\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x30\x3d\x77\x77\x77\x2e\x73\x61\x75\x63\x65\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x31\x3d\x77\x77\x77\x2e\x73\x65\x67\x75\x72\x61\x64\x65\x74\x6f\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x32\x3d\x77\x77\x77\x2e\x73\x65\x72\x72\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x33\x3d\x77\x77\x77\x2e\x73\x65\x72\x72\x65\x6a\x6f\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x34\x3d\x77\x77\x77\x2e\x73\x69\x65\x72\x72\x61\x64\x65\x66\x75\x65\x6e\x74\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x35\x3d\x77\x77\x77\x2e\x74\x61\x6c\x61\x76\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x36\x3d\x77\x77\x77\x2e\x74\x61\x6c\x61\x76\x65\x72\x75\x65\x6c\x61\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x37\x3d\x77\x77\x77\x2e\x74\x61\x6c\x61\x79\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x38\x3d\x77\x77\x77\x2e\x74\x65\x6a\x65\x64\x61\x64\x65\x74\x69\x65\x74\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x39\x3d\x77\x77\x77\x2e\x74\x6f\x72\x69\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x30\x3d\x77\x77\x77\x2e\x74\x6f\x72\x6e\x61\x76\x61\x63\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x31\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x65\x6c\x74\x6f\x72\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x32\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x63\x69\x6c\x6c\x61\x64\x65\x6c\x6f\x73\x61\x6e\x67\x65\x6c\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x33\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x63\x69\x6c\x6c\x61\x73\x64\x65\x6c\x61\x74\x69\x65\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x34\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x64\x65\x64\x6f\x6e\x6d\x69\x67\x75\x65\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x35\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x64\x65\x73\x61\x6e\x74\x61\x6d\x61\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x36\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x6a\x6f\x6e\x65\x6c\x72\x75\x62\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x37\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x6a\x6f\x6e\x63\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x38\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x6d\x65\x6e\x67\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x39\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x6d\x6f\x63\x68\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x30\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x6f\x72\x67\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x31\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x71\x75\x65\x6d\x61\x64\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x32\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x61\x73\x74\x69\x6c\x6c\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x33\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x63\x61\x6e\x61\x73\x64\x65\x74\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x34\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x66\x75\x65\x6e\x74\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x35\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x68\x75\x6e\x63\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x36\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x69\x6e\x69\x67\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x37\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x6c\x61\x63\x61\x73\x61\x64\x65\x74\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x38\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x6d\x6f\x72\x61\x6c\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x39\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x6f\x62\x69\x73\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x30\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x73\x61\x6c\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x31\x3d\x77\x77\x77\x2e\x76\x61\x6c\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x32\x3d\x77\x77\x77\x2e\x76\x61\x6c\x65\x6e\x63\x69\x61\x64\x65\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x33\x3d\x77\x77\x77\x2e\x76\x61\x6c\x76\x65\x72\x64\x65\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x34\x3d\x77\x77\x77\x2e\x76\x61\x6c\x76\x65\x72\x64\x65\x64\x65\x6c\x66\x72\x65\x73\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x35\x3d\x77\x77\x77\x2e\x76\x65\x67\x61\x76\x69\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x36\x3d\x77\x77\x77\x2e\x76\x69\x61\x6e\x64\x61\x72\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x37\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x64\x65\x6c\x63\x61\x6d\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x38\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x64\x65\x6c\x72\x65\x79\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x39\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x6d\x65\x73\x69\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x30\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x6d\x69\x65\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x31\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x6e\x75\x65\x76\x61\x64\x65\x6c\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x32\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x72\x64\x65\x6c\x70\x65\x64\x72\x6f\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x33\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x72\x64\x65\x70\x6c\x61\x73\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x34\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x73\x62\x75\x65\x6e\x61\x73\x64\x65\x67\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x35\x3d\x77\x77\x77\x2e\x7a\x61\x72\x7a\x61\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x36\x3d\x77\x77\x77\x2e\x7a\x61\x72\x7a\x61\x64\x65\x6d\x6f\x6e\x74\x61\x6e\x63\x68\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x37\x3d\x77\x77\x77\x2e\x7a\x61\x72\x7a\x61\x6c\x61\x6d\x61\x79\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x38\x3d\x77\x77\x77\x2e\x7a\x6f\x72\x69\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x39\x3d\x77\x77\x77\x2e\x72\x6f\x73\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x30\x3d\x77\x77\x77\x2e\x76\x65\x67\x61\x76\x69\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x31\x3d\x77\x77\x77\x2e\x61\x6c\x61\x67\x6f\x6e\x64\x65\x6c\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x32\x3d\x77\x77\x77\x2e\x74\x69\x65\x74\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x33\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x73\x61\x6c\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x34\x3d\x77\x77\x77\x2e\x6e\x61\x76\x61\x74\x72\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x35\x3d\x77\x77\x77\x2e\x72\x69\x76\x65\x72\x61\x64\x65\x66\x72\x65\x73\x6e\x65\x64\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x36\x3d\x77\x77\x77\x2e\x65\x6c\x6d\x73\x61\x6e\x67\x69\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x37\x3d\x77\x77\x77\x2e\x74\x61\x6a\x6f\x73\x61\x6c\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x38\x3d\x77\x77\x77\x2e\x76\x61\x6c\x6c\x65\x61\x6d\x62\x72\x6f\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x39\x3d\x77\x77\x77\x2e\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x76\x61\x6c\x6c\x65\x64\x65\x6c\x61\x6c\x61\x67\x6f\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x37\x30\x3d\x77\x77\x77\x2e\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x76\x61\x6c\x6c\x65\x64\x65\x6c\x6a\x65\x72\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x37\x31\x3d\x77\x77\x77\x2e\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x76\x65\x67\x61\x73\x61\x6c\x74\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x37\x32\x3d\x77\x77\x77\x2e\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x37\x33\x3d\x77\x77\x77\x2e\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x7a\x6f\x6e\x61\x63\x65\x6e\x74\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x37\x34\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x75\x65\x72\x63\x61\x73\x2d\x69\x62\x6f\x72\x65\x73\x2d\x6a\x61\x72\x61\x2e\x65\x73", - 12589}, - .can_encode = 1} + { .name = "simple DN", + .str = "C=GR,ST=Attiki,O=Koko inc.,OU=sleeping dept.,UID=clauper,CN=Cindy Lauper", + .compat_str = + "CN=Cindy Lauper,UID=clauper,OU=sleeping dept.,O=Koko inc.,ST=Attiki,C=GR", + .raw = { (void *)"\x30\x7b\x31\x15\x30\x13\x06\x03\x55\x04\x03\x13\x0c\x43\x69\x6e\x64\x79\x20\x4c\x61\x75\x70\x65\x72\x31\x17\x30\x15\x06\x0a\x09\x92\x26\x89\x93\xf2\x2c\x64\x01\x01\x13\x07\x63\x6c\x61\x75\x70\x65\x72\x31\x17\x30\x15\x06\x03\x55\x04\x0b\x13\x0e\x73\x6c\x65\x65\x70\x69\x6e\x67\x20\x64\x65\x70\x74\x2e\x31\x12\x30\x10\x06\x03\x55\x04\x0a\x13\x09\x4b\x6f\x6b\x6f\x20\x69\x6e\x63\x2e\x31\x0f\x30\x0d\x06\x03\x55\x04\x08\x13\x06\x41\x74\x74\x69\x6b\x69\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x47\x52", + 125 }, + .can_encode = 1 }, + { .name = "UTF8 DN", + .str = "C=GR,ST=Αττική,O=Μεγάλη εταιρία,CN=🐨", + .compat_str = "CN=🐨,O=Μεγάλη εταιρία,ST=Αττική,C=GR", + .raw = { (void *)"\x30\x59\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x0c\x04\xf0\x9f\x90\xa8\x31\x24\x30\x22\x06\x03\x55\x04\x0a\x0c\x1b\xce\x9c\xce\xb5\xce\xb3\xce\xac\xce\xbb\xce\xb7\x20\xce\xb5\xcf\x84\xce\xb1\xce\xb9\xcf\x81\xce\xaf\xce\xb1\x31\x15\x30\x13\x06\x03\x55\x04\x08\x0c\x0c\xce\x91\xcf\x84\xcf\x84\xce\xb9\xce\xba\xce\xae\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x47\x52", + 91 }, + .can_encode = 1 }, + { .name = "combo DN", + .compat_str = "C=\\,\\ ,OU=\\ X\\ ,CN=\\#XXX", + .str = "CN=\\#XXX,OU=\\ X\\ ,C=\\,\\ ", + .raw = { (void *)"\x30\x2b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x2c\x20\x31\x0d\x30\x0b\x06\x03\x55\x04\x0b\x13\x04\x20\x20\x58\x20\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x0c\x04\x23\x58\x58\x58", + 45 }, + .can_encode = 1 }, + { .name = "very long DN", + .compat_str = + "C=ES,ST=CACERES,L=CACERES,O=DIPUTACION PROVINCIAL DE CACERES,OU=DIPUTACION PROVINCIAL DE CACERES,CN=www.dip-caceres.es,EMAIL=webmaster@dip-caceres.es,2.5.29.17=#1382304b444e532e313d6162616469612e65732c444e532e323d61626572747572612e65732c444e532e333d616365626f2e65732c444e532e343d61636568756368652e65732c444e532e353d6163656974756e612e65732c444e532e363d61686967616c2e65732c444e532e373d616c61676f6e64656c72696f2e65732c444e532e383d616c636f6c6c6172696e2e65732c444e532e393d6179746f616c62616c612e65732c444e532e31303d6179746f616c63616e746172612e65732c444e532e31313d616c637565736361722e65732c444e532e31323d616c64656163656e74656e6572612e65732c444e532e31333d616c64656164656c63616e6f2e65732c444e532e31343d6c61616c64656164656c6f626973706f2e65732c444e532e31353d616c6465616e7565766164656c61766572612e65732c444e532e31363d616c6465616e7565766164656c63616d696e6f2e65732c444e532e31373d616c64656875656c6164656c6a657274652e65732c444e532e31383d6179746f616c69612e65732c444e532e31393d616c69736564612e65732c444e532e32303d616c6d6172617a2e65732c444e532e32313d616c6d6f686172696e2e65732c444e532e32323d6179746f6172726f796f64656c616c757a2e65732c444e532e32333d6172726f796f6d6f6c696e6f732e65732c444e532e32343d6172726f796f6d6f6c696e6f7364656c61766572612e65732c444e532e32353d62616e6f7364656d6f6e74656d61796f722e65732c444e532e32363d6261727261646f2e65732c444e532e32373d62656c76697364656d6f6e726f792e65732c444e532e32383d62656e71756572656e6369612e65732c444e532e32393d626572726f63616c656a6f2e65732c444e532e33303d6265727a6f63616e612e65732c444e532e33313d626f686f6e616c646569626f722e65732c444e532e33323d626f74696a612e65732c444e532e33333d62726f7a61732e65732c444e532e33343d636162616e617364656c63617374696c6c6f2e65732c444e532e33353d636162657a6162656c6c6f73612e65732c444e532e33363d636162657a75656c6164656c76616c6c652e65732c444e532e33373d6361627265726f2e65732c444e532e33383d636163686f7272696c6c612e65732c444e532e33393d636164616c736f2e65732c444e532e34303d63616c7a6164696c6c612e65732c444e532e34313d63616d696e6f6d6f726973636f2e65732c444e532e34323d63616d70696c6c6f646564656c6569746f73612e65732c444e532e34333d63616d706f6c756761722e65732c444e532e34343d63616e616d65726f2e65732c444e532e34353d63616e61766572616c2e65732c444e532e34363d63617262616a6f2e65732c444e532e34373d6361726361626f736f2e65732c444e532e34383d63617272617363616c656a6f2e65732c444e532e34393d63617361726465636163657265732e65732c444e532e35303d6361736172646570616c6f6d65726f2e65732c444e532e35313d6361736172657364656c61736875726465732e65732c444e532e35323d63617361736465646f6e616e746f6e696f2e65732c444e532e35333d63617361736465646f6e676f6d657a2e65732c444e532e35343d636173617364656c63617374616e61722e65732c444e532e35353d636173617364656c6d6f6e74652e65732c444e532e35363d636173617364656d696c6c616e2e65732c444e532e35373d636173617364656d697261766574652e65732c444e532e35383d6361736174656a6164612e65732c444e532e35393d636173696c6c61736465636f7269612e65732c444e532e36303d63617374616e6172646569626f722e65732c444e532e36313d6365636c6176696e2e65732c444e532e36323d636564696c6c6f2e65732c444e532e36333d636572657a6f2e65732c444e532e36343d63696c6c65726f732e65732c444e532e36353d636f6c6c61646f2e65732c444e532e36363d636f6e71756973746164656c617369657272612e65732c444e532e36373d636f7269612e65732c444e532e36383d637561636f73646579757374652e65732c444e532e36393d6c6163756d6272652e65732c444e532e37303d64656c6569746f73612e65732c444e532e37313d64657363617267616d617269612e65732c444e532e37323d656c6a61732e65732c444e532e37333d657363757269616c2e65732c444e532e37343d667265736e65646f736f646569626f722e65732c444e532e37353d67616c697374656f2e65732c444e532e37363d6761726369617a2e65732c444e532e37373d6c6167617267616e74612e65732c444e532e37383d67617267616e74616c616f6c6c612e65732c444e532e37393d67617267616e74696c6c612e65732c444e532e38303d67617267756572612e65732c444e532e38313d676172726f76696c6c61736465616c636f6e657461722e65732c444e532e38323d67617276696e2e65732c444e532e38333d676174612e65732c444e532e38343d6179746f656c676f72646f2e65732c444e532e38353d6c616772616e6a612e65732c444e532e38363d6c616772616e6a6164656772616e6164696c6c612e65732c444e532e38373d6179756e74616d69656e746f646567756164616c7570652e65732c444e532e38383d6775696a6f6465636f7269612e65732c444e532e38393d6775696a6f646567616c697374656f2e65732c444e532e39303d6775696a6f64656772616e6164696c6c612e65732c444e532e39313d6775696a6f646573616e7461626172626172612e65732c444e532e39323d6865726775696a75656c612e65732c444e532e39333d6865726e616e706572657a2e65732c444e532e39343d686572726572616465616c63616e746172612e65732c444e532e39353d68657272657275656c612e65732c444e532e39363d6865727661732e65732c444e532e39373d686967756572612e65732c444e532e39383d68696e6f6a616c2e65732c444e532e39393d686f6c67756572612e65732c444e532e3130303d686f796f732e65732c444e532e3130313d6875656c6167612e65732c444e532e3130323d6962616865726e616e646f2e65732c444e532e3130333d6a6172616963656a6f2e65732c444e532e3130343d6a617261697a64656c61766572612e65732c444e532e3130353d6a6172616e64696c6c6164656c61766572612e65732c444e532e3130363d6a6172696c6c612e65732c444e532e3130373d6a657274652e65732c444e532e3130383d6c616472696c6c61722e65732c444e532e3130393d6c6f67726f73616e2e65732c444e532e3131303d6c6f73617264656c61766572612e65732c444e532e3131313d6d6164726967616c656a6f2e65732c444e532e3131323d6d6164726967616c64656c61766572612e65732c444e532e3131333d6d6164726f6e6572612e65732c444e532e3131343d6d616a616461732e65732c444e532e3131353d6d616c706172746964616465636163657265732e65732c444e532e3131363d6d616c706172746964616465706c6173656e6369612e65732c444e532e3131373d6d617263686167617a2e65732c444e532e3131383d6d6174616465616c63616e746172612e65732c444e532e3131393d6d656d6272696f2e65732c444e532e3132303d6d65736173646569626f722e65732c444e532e3132313d6d69616a616461732e65732c444e532e3132323d6d696c6c616e65732e65732c444e532e3132333d6d69726162656c2e65732c444e532e3132343d6d6f686564617364656772616e6164696c6c612e65732c444e532e3132353d6d6f6e726f792e65732c444e532e3132363d6d6f6e74616e6368657a2e65732c444e532e3132373d6d6f6e74656865726d6f736f2e65732c444e532e3132383d6d6f72616c656a612e65732c444e532e3132393d6d6f7263696c6c6f2e65732c444e532e3133303d6e617661636f6e63656a6f2e65732c444e532e3133313d6e6176616c76696c6c6172646569626f722e65732c444e532e3133323d6e6176616c6d6f72616c64656c616d6174612e65732c444e532e3133333d6e6176617364656c6d6164726f6e6f2e65732c444e532e3133343d6e6176617472617369657272612e65732c444e532e3133353d6e6176657a75656c61732e65732c444e532e3133363d6e756e6f6d6f72616c2e65732c444e532e3133373d6f6c6976616465706c6173656e6369612e65732c444e532e3133383d70616c6f6d65726f2e65732c444e532e3133393d70617361726f6e64656c61766572612e65732c444e532e3134303d706564726f736f64656163696d2e65732c444e532e3134313d706572616c65646164656c616d6174612e65732c444e532e3134323d706572616c656461646573616e726f6d616e2e65732c444e532e3134333d706572616c657364656c70756572746f2e65732c444e532e3134343d7065736375657a612e65732c444e532e3134353d6c6170657367612e65732c444e532e3134363d70696564726173616c6261732e65732c444e532e3134373d70696e6f6672616e71756561646f2e65732c444e532e3134383d70696f726e616c2e65732c444e532e3134393d706c6173656e7a75656c612e65732c444e532e3135303d706f7274616a652e65732c444e532e3135313d706f7274657a75656c6f2e65732c444e532e3135323d706f7a75656c6f64657a61727a6f6e2e65732c444e532e3135333d707565626c6f6e7565766f64656d6972616d6f6e7465732e65732c444e532e3135343d70756572746f646573616e74616372757a2e65732c444e532e3135353d7265626f6c6c61722e65732c444e532e3135363d72696f6c6f626f732e65732c444e532e3135373d726f626c6564696c6c6f6465676174612e65732c444e532e3135383d726f626c6564696c6c6f64656c61766572612e65732c444e532e3135393d726f626c6564696c6c6f64657472756a696c6c6f2c444e532e3136303d726f626c65646f6c6c616e6f2e65732c444e532e3136313d726f6d616e676f72646f2e65732c444e532e3136323d7275616e65732e65732c444e532e3136333d73616c6f72696e6f2e65732c444e532e3136343d73616c7661746965727261646573616e746961676f2e65732c444e532e3136353d73616e6d617274696e646574726576656a6f2e65732c444e532e3136363d6179746f73616e7461616e612e65732c444e532e3136373d73616e74616372757a64656c617369657272612e65732c444e532e3136383d73616e74616372757a646570616e69616775612e65732c444e532e3136393d73616e74616d6172746164656d6167617363612e65732c444e532e3137303d73616e746961676f64656c63616d706f2e65732c444e532e3137313d73616e746962616e657a656c616c746f2e65732c444e532e3137323d73616e746962616e657a656c62616a6f2e65732c444e532e3137333d736175636564696c6c612e65732c444e532e3137343d7365677572616465746f726f2e65732c444e532e3137353d736572726164696c6c612e65732c444e532e3137363d73657272656a6f6e2e65732c444e532e3137373d73696572726164656675656e7465732e65732c444e532e3137383d74616c6176616e2e65732c444e532e3137393d74616c6176657275656c6164656c61766572612e65732c444e532e3138303d74616c617975656c612e65732c444e532e3138313d74656a65646164657469657461722e65732c444e532e3138323d746f72696c2e65732c444e532e3138333d746f726e6176616361732e65732c444e532e3138343d6179746f656c746f726e6f2e65732c444e532e3138353d746f72726563696c6c6164656c6f73616e67656c65732e65732c444e532e3138363d746f72726563696c6c617364656c6174696573612e65732c444e532e3138373d746f7272656465646f6e6d696775656c2e65732c444e532e3138383d746f727265646573616e74616d617269612e65732c444e532e3138393d746f7272656a6f6e656c727562696f2e65732c444e532e3139303d746f7272656a6f6e63696c6c6f2e65732c444e532e3139313d746f7272656d656e67612e65732c444e532e3139323d746f7272656d6f6368612e65732c444e532e3139333d746f7272656f7267617a2e65732c444e532e3139343d746f7272657175656d6164612e65732c444e532e3139353d76616c64617374696c6c61732e65732c444e532e3139363d76616c646563616e6173646574616a6f2e65732c444e532e3139373d76616c64656675656e7465732e65732c444e532e3139383d76616c646568756e6361722e65732c444e532e3139393d76616c6465696e69676f732e65732c444e532e3230303d76616c64656c6163617361646574616a6f2e65732c444e532e3230313d76616c64656d6f72616c65732e65732c444e532e3230323d76616c64656f626973706f2e65732c444e532e3230333d76616c646573616c6f722e65732c444e532e3230343d76616c72696f2e65732c444e532e3230353d76616c656e6369616465616c63616e746172612e65732c444e532e3230363d76616c766572646564656c61766572612e65732c444e532e3230373d76616c766572646564656c667265736e6f2e65732c444e532e3230383d766567617669616e612e65732c444e532e3230393d7669616e64617264656c61766572612e65732c444e532e3231303d76696c6c6164656c63616d706f2e65732c444e532e3231313d76696c6c6164656c7265792e65732c444e532e3231323d76696c6c616d65736961732e65732c444e532e3231333d76696c6c616d69656c2e65732c444e532e3231343d76696c6c616e7565766164656c617369657272612e65732c444e532e3231353d76696c6c617264656c706564726f736f2e65732c444e532e3231363d76696c6c61726465706c6173656e6369612e65732c444e532e3231373d76696c6c61736275656e61736465676174612e65732c444e532e3231383d7a61727a6164656772616e6164696c6c612e65732c444e532e3231393d7a61727a6164656d6f6e74616e6368657a2e65732c444e532e3232303d7a61727a616c616d61796f722e65732c444e532e3232313d7a6f726974612e65732c444e532e3232323d726f73616c656a6f2e65732c444e532e3232333d766567617669616e612e65732c444e532e3232343d616c61676f6e64656c72696f2e65732c444e532e3232353d7469657461722e65732c444e532e3232363d76616c646573616c6f722e65732c444e532e3232373d6e6176617472617369657272612e65732c444e532e3232383d7269766572616465667265736e65646f73612e65732c444e532e3232393d656c6d73616e67696c2e65732c444e532e3233303d74616a6f73616c6f722e65732c444e532e3233313d76616c6c65616d62726f7a2e65732c444e532e3233323d6d616e636f6d756e6964616476616c6c6564656c616c61676f6e2e65732c444e532e3233333d6d616e636f6d756e6964616476616c6c6564656c6a657274652e65732c444e532e3233343d6d616e636f6d756e696461647665676173616c7461732e65732c444e532e3233353d6d616e636f6d756e6964616464656c61766572612e65732c444e532e3233363d6d616e636f6d756e696461647a6f6e6163656e74726f2e65732c444e532e3233373d76696c6c7565726361732d69626f7265732d6a6172612e65732c444e532e3233383d7777772e6162616469612e65732c444e532e3233393d7777772e61626572747572612e65732c444e532e3234303d7777772e616365626f2e65732c444e532e3234313d7777772e61636568756368652e65732c444e532e3234323d7777772e6163656974756e612e65732c444e532e3234333d7777772e61686967616c2e65732c444e532e3234343d7777772e616c61676f6e64656c72696f2e65732c444e532e3234353d7777772e616c636f6c6c6172696e2e65732c444e532e3234363d7777772e6179746f616c62616c612e65732c444e532e3234373d7777772e6179746f616c63616e746172612e65732c444e532e3234383d7777772e616c637565736361722e65732c444e532e3234393d7777772e616c64656163656e74656e6572612e65732c444e532e3235303d7777772e616c64656164656c63616e6f2e65732c444e532e3235313d7777772e6c61616c64656164656c6f626973706f2e65732c444e532e3235323d7777772e616c6465616e7565766164656c61766572612e65732c444e532e3235333d7777772e616c6465616e7565766164656c63616d696e6f2e65732c444e532e3235343d7777772e616c64656875656c6164656c6a657274652e65732c444e532e3235353d7777772e6179746f616c69612e65732c444e532e3235363d7777772e616c69736564612e65732c444e532e3235373d7777772e616c6d6172617a2e65732c444e532e3235383d7777772e616c6d6f686172696e2e65732c444e532e3235393d7777772e6179746f6172726f796f64656c616c757a2e65732c444e532e3236303d7777772e6172726f796f6d6f6c696e6f732e65732c444e532e3236313d7777772e6172726f796f6d6f6c696e6f7364656c61766572612e65732c444e532e3236323d7777772e62616e6f7364656d6f6e74656d61796f722e65732c444e532e3236333d7777772e6261727261646f2e65732c444e532e3236343d7777772e62656c76697364656d6f6e726f792e65732c444e532e3236353d7777772e62656e71756572656e6369612e65732c444e532e3236363d7777772e626572726f63616c656a6f2e65732c444e532e3236373d7777772e6265727a6f63616e612e65732c444e532e3236383d7777772e626f686f6e616c646569626f722e65732c444e532e3236393d7777772e626f74696a612e65732c444e532e3237303d7777772e62726f7a61732e65732c444e532e3237313d7777772e636162616e617364656c63617374696c6c6f2e65732c444e532e3237323d7777772e636162657a6162656c6c6f73612e65732c444e532e3237333d7777772e636162657a75656c6164656c76616c6c652e65732c444e532e3237343d7777772e6361627265726f2e65732c444e532e3237353d7777772e636163686f7272696c6c612e65732c444e532e3237363d7777772e636164616c736f2e65732c444e532e3237373d7777772e63616c7a6164696c6c612e65732c444e532e3237383d7777772e63616d696e6f6d6f726973636f2e65732c444e532e3237393d7777772e63616d70696c6c6f646564656c6569746f73612e65732c444e532e3238303d7777772e63616d706f6c756761722e65732c444e532e3238313d7777772e63616e616d65726f2e65732c444e532e3238323d7777772e63616e61766572616c2e65732c444e532e3238333d7777772e63617262616a6f2e65732c444e532e3238343d7777772e6361726361626f736f2e65732c444e532e3238353d7777772e63617272617363616c656a6f2e65732c444e532e3238363d7777772e63617361726465636163657265732e65732c444e532e3238373d7777772e6361736172646570616c6f6d65726f2e65732c444e532e3238383d7777772e6361736172657364656c61736875726465732e65732c444e532e3238393d7777772e63617361736465646f6e616e746f6e696f2e65732c444e532e3239303d7777772e63617361736465646f6e676f6d657a2e65732c444e532e3239313d7777772e636173617364656c63617374616e61722e65732c444e532e3239323d7777772e636173617364656c6d6f6e74652e65732c444e532e3239333d7777772e636173617364656d696c6c616e2e65732c444e532e3239343d7777772e636173617364656d697261766574652e65732c444e532e3239353d7777772e6361736174656a6164612e65732c444e532e3239363d7777772e636173696c6c61736465636f7269612e65732c444e532e3239373d7777772e63617374616e6172646569626f722e65732c444e532e3239383d7777772e6365636c6176696e2e65732c444e532e3239393d7777772e636564696c6c6f2e65732c444e532e3330303d7777772e636572657a6f2e65732c444e532e3330313d7777772e63696c6c65726f732e65732c444e532e3330323d7777772e636f6c6c61646f2e65732c444e532e3330333d7777772e636f6e71756973746164656c617369657272612e65732c444e532e3330343d7777772e636f7269612e65732c444e532e3330353d7777772e637561636f73646579757374652e65732c444e532e3330363d7777772e6c6163756d6272652e65732c444e532e3330373d7777772e64656c6569746f73612e65732c444e532e3330383d7777772e64657363617267616d617269612e65732c444e532e3330393d7777772e656c6a61732e65732c444e532e3331303d7777772e657363757269616c2e65732c444e532e3331313d7777772e667265736e65646f736f646569626f722e65732c444e532e3331323d7777772e67616c697374656f2e65732c444e532e3331333d7777772e6761726369617a2e65732c444e532e3331343d7777772e6c6167617267616e74612e65732c444e532e3331353d7777772e67617267616e74616c616f6c6c612e65732c444e532e3331363d7777772e67617267616e74696c6c612e65732c444e532e3331373d7777772e67617267756572612e65732c444e532e3331383d7777772e676172726f76696c6c61736465616c636f6e657461722e65732c444e532e3331393d7777772e67617276696e2e65732c444e532e3332303d7777772e676174612e65732c444e532e3332313d7777772e6179746f656c676f72646f2e65732c444e532e3332323d7777772e6c616772616e6a612e65732c444e532e3332333d7777772e6c616772616e6a6164656772616e6164696c6c612e65732c444e532e3332343d7777772e6179756e74616d69656e746f646567756164616c7570652e65732c444e532e3332353d7777772e6775696a6f6465636f7269612e65732c444e532e3332363d7777772e6775696a6f646567616c697374656f2e65732c444e532e3332373d7777772e6775696a6f64656772616e6164696c6c612e65732c444e532e3332383d7777772e6775696a6f646573616e7461626172626172612e65732c444e532e3332393d7777772e6865726775696a75656c612e65732c444e532e3333303d7777772e6865726e616e706572657a2e65732c444e532e3333313d7777772e686572726572616465616c63616e746172612e65732c444e532e3333323d7777772e68657272657275656c612e65732c444e532e3333333d7777772e6865727661732e65732c444e532e3333343d7777772e686967756572612e65732c444e532e3333353d7777772e68696e6f6a616c2e65732c444e532e3333363d7777772e686f6c67756572612e65732c444e532e3333373d7777772e686f796f732e65732c444e532e3333383d7777772e6875656c6167612e65732c444e532e3333393d7777772e6962616865726e616e646f2e65732c444e532e3334303d7777772e6a6172616963656a6f2e65732c444e532e3334313d7777772e6a617261697a64656c61766572612e65732c444e532e3334323d7777772e6a6172616e64696c6c6164656c61766572612e65732c444e532e3334333d7777772e6a6172696c6c612e65732c444e532e3334343d7777772e6a657274652e65732c444e532e3334353d7777772e6c616472696c6c61722e65732c444e532e3334363d7777772e6c6f67726f73616e2e65732c444e532e3334373d7777772e6c6f73617264656c61766572612e65732c444e532e3334383d7777772e6d6164726967616c656a6f2e65732c444e532e3334393d7777772e6d6164726967616c64656c61766572612e65732c444e532e3335303d7777772e6d6164726f6e6572612e65732c444e532e3335313d7777772e6d616a616461732e65732c444e532e3335323d7777772e6d616c706172746964616465636163657265732e65732c444e532e3335333d7777772e6d616c706172746964616465706c6173656e6369612e65732c444e532e3335343d7777772e6d617263686167617a2e65732c444e532e3335353d7777772e6d6174616465616c63616e746172612e65732c444e532e3335363d7777772e6d656d6272696f2e65732c444e532e3335373d7777772e6d65736173646569626f722e65732c444e532e3335383d7777772e6d69616a616461732e65732c444e532e3335393d7777772e6d696c6c616e65732e65732c444e532e3336303d7777772e6d69726162656c2e65732c444e532e3336313d7777772e6d6f686564617364656772616e6164696c6c612e65732c444e532e3336323d7777772e6d6f6e726f792e65732c444e532e3336333d7777772e6d6f6e74616e6368657a2e65732c444e532e3336343d7777772e6d6f6e74656865726d6f736f2e65732c444e532e3336353d7777772e6d6f72616c656a612e65732c444e532e3336363d7777772e6d6f7263696c6c6f2e65732c444e532e3336373d7777772e6e617661636f6e63656a6f2e65732c444e532e3336383d7777772e6e6176616c76696c6c6172646569626f722e65732c444e532e3336393d7777772e6e6176616c6d6f72616c64656c616d6174612e65732c444e532e3337303d7777772e6e6176617364656c6d6164726f6e6f2e65732c444e532e3337313d7777772e6e6176617472617369657272612e65732c444e532e3337323d7777772e6e6176657a75656c61732e65732c444e532e3337333d7777772e6e756e6f6d6f72616c2e65732c444e532e3337343d7777772e6f6c6976616465706c6173656e6369612e65732c444e532e3337353d7777772e70616c6f6d65726f2e65732c444e532e3337363d7777772e70617361726f6e64656c61766572612e65732c444e532e3337373d7777772e706564726f736f64656163696d2e65732c444e532e3337383d7777772e706572616c65646164656c616d6174612e65732c444e532e3337393d7777772e706572616c656461646573616e726f6d616e2e65732c444e532e3338303d7777772e706572616c657364656c70756572746f2e65732c444e532e3338313d7777772e7065736375657a612e65732c444e532e3338323d7777772e6c6170657367612e65732c444e532e3338333d7777772e70696564726173616c6261732e65732c444e532e3338343d7777772e70696e6f6672616e71756561646f2e65732c444e532e3338353d7777772e70696f726e616c2e65732c444e532e3338363d7777772e706c6173656e7a75656c612e65732c444e532e3338373d7777772e706f7274616a652e65732c444e532e3338383d7777772e706f7274657a75656c6f2e65732c444e532e3338393d7777772e706f7a75656c6f64657a61727a6f6e2e65732c444e532e3339303d7777772e707565626c6f6e7565766f64656d6972616d6f6e7465732e65732c444e532e3339313d7777772e70756572746f646573616e74616372757a2e65732c444e532e3339323d7777772e7265626f6c6c61722e65732c444e532e3339333d7777772e72696f6c6f626f732e65732c444e532e3339343d7777772e726f626c6564696c6c6f6465676174612e65732c444e532e3339353d7777772e726f626c6564696c6c6f64656c61766572612e65732c444e532e3339363d7777772e726f626c6564696c6c6f64657472756a696c6c6f2c444e532e3339373d7777772e726f626c65646f6c6c616e6f2e65732c444e532e3339383d7777772e726f6d616e676f72646f2e65732c444e532e3339393d7777772e7275616e65732e65732c444e532e3430303d7777772e73616c6f72696e6f2e65732c444e532e3430313d7777772e73616c7661746965727261646573616e746961676f2e65732c444e532e3430323d7777772e73616e6d617274696e646574726576656a6f2e65732c444e532e3430333d7777772e6179746f73616e7461616e612e65732c444e532e3430343d7777772e73616e74616372757a64656c617369657272612e65732c444e532e3430353d7777772e73616e74616372757a646570616e69616775612e65732c444e532e3430363d7777772e73616e74616d6172746164656d6167617363612e65732c444e532e3430373d7777772e73616e746961676f64656c63616d706f2e65732c444e532e3430383d7777772e73616e746962616e657a656c616c746f2e65732c444e532e3430393d7777772e73616e746962616e657a656c62616a6f2e65732c444e532e3431303d7777772e736175636564696c6c612e65732c444e532e3431313d7777772e7365677572616465746f726f2e65732c444e532e3431323d7777772e736572726164696c6c612e65732c444e532e3431333d7777772e73657272656a6f6e2e65732c444e532e3431343d7777772e73696572726164656675656e7465732e65732c444e532e3431353d7777772e74616c6176616e2e65732c444e532e3431363d7777772e74616c6176657275656c6164656c61766572612e65732c444e532e3431373d7777772e74616c617975656c612e65732c444e532e3431383d7777772e74656a65646164657469657461722e65732c444e532e3431393d7777772e746f72696c2e65732c444e532e3432303d7777772e746f726e6176616361732e65732c444e532e3432313d7777772e6179746f656c746f726e6f2e65732c444e532e3432323d7777772e746f72726563696c6c6164656c6f73616e67656c65732e65732c444e532e3432333d7777772e746f72726563696c6c617364656c6174696573612e65732c444e532e3432343d7777772e746f7272656465646f6e6d696775656c2e65732c444e532e3432353d7777772e746f727265646573616e74616d617269612e65732c444e532e3432363d7777772e746f7272656a6f6e656c727562696f2e65732c444e532e3432373d7777772e746f7272656a6f6e63696c6c6f2e65732c444e532e3432383d7777772e746f7272656d656e67612e65732c444e532e3432393d7777772e746f7272656d6f6368612e65732c444e532e3433303d7777772e746f7272656f7267617a2e65732c444e532e3433313d7777772e746f7272657175656d6164612e65732c444e532e3433323d7777772e76616c64617374696c6c61732e65732c444e532e3433333d7777772e76616c646563616e6173646574616a6f2e65732c444e532e3433343d7777772e76616c64656675656e7465732e65732c444e532e3433353d7777772e76616c646568756e6361722e65732c444e532e3433363d7777772e76616c6465696e69676f732e65732c444e532e3433373d7777772e76616c64656c6163617361646574616a6f2e65732c444e532e3433383d7777772e76616c64656d6f72616c65732e65732c444e532e3433393d7777772e76616c64656f626973706f2e65732c444e532e3434303d7777772e76616c646573616c6f722e65732c444e532e3434313d7777772e76616c72696f2e65732c444e532e3434323d7777772e76616c656e6369616465616c63616e746172612e65732c444e532e3434333d7777772e76616c766572646564656c61766572612e65732c444e532e3434343d7777772e76616c766572646564656c667265736e6f2e65732c444e532e3434353d7777772e766567617669616e612e65732c444e532e3434363d7777772e7669616e64617264656c61766572612e65732c444e532e3434373d7777772e76696c6c6164656c63616d706f2e65732c444e532e3434383d7777772e76696c6c6164656c7265792e65732c444e532e3434393d7777772e76696c6c616d65736961732e65732c444e532e3435303d7777772e76696c6c616d69656c2e65732c444e532e3435313d7777772e76696c6c616e7565766164656c617369657272612e65732c444e532e3435323d7777772e76696c6c617264656c706564726f736f2e65732c444e532e3435333d7777772e76696c6c61726465706c6173656e6369612e65732c444e532e3435343d7777772e76696c6c61736275656e61736465676174612e65732c444e532e3435353d7777772e7a61727a6164656772616e6164696c6c612e65732c444e532e3435363d7777772e7a61727a6164656d6f6e74616e6368657a2e65732c444e532e3435373d7777772e7a61727a616c616d61796f722e65732c444e532e3435383d7777772e7a6f726974612e65732c444e532e3435393d7777772e726f73616c656a6f2e65732c444e532e3436303d7777772e766567617669616e612e65732c444e532e3436313d7777772e616c61676f6e64656c72696f2e65732c444e532e3436323d7777772e7469657461722e65732c444e532e3436333d7777772e76616c646573616c6f722e65732c444e532e3436343d7777772e6e6176617472617369657272612e65732c444e532e3436353d7777772e7269766572616465667265736e65646f73612e65732c444e532e3436363d7777772e656c6d73616e67696c2e65732c444e532e3436373d7777772e74616a6f73616c6f722e65732c444e532e3436383d7777772e76616c6c65616d62726f7a2e65732c444e532e3436393d7777772e6d616e636f6d756e6964616476616c6c6564656c616c61676f6e2e65732c444e532e3437303d7777772e6d616e636f6d756e6964616476616c6c6564656c6a657274652e65732c444e532e3437313d7777772e6d616e636f6d756e696461647665676173616c7461732e65732c444e532e3437323d7777772e6d616e636f6d756e6964616464656c61766572612e65732c444e532e3437333d7777772e6d616e636f6d756e696461647a6f6e6163656e74726f2e65732c444e532e3437343d7777772e76696c6c7565726361732d69626f7265732d6a6172612e6573", + .str = "2.5.29.17=#1382304b444e532e313d6162616469612e65732c444e532e323d61626572747572612e65732c444e532e333d616365626f2e65732c444e532e343d61636568756368652e65732c444e532e353d6163656974756e612e65732c444e532e363d61686967616c2e65732c444e532e373d616c61676f6e64656c72696f2e65732c444e532e383d616c636f6c6c6172696e2e65732c444e532e393d6179746f616c62616c612e65732c444e532e31303d6179746f616c63616e746172612e65732c444e532e31313d616c637565736361722e65732c444e532e31323d616c64656163656e74656e6572612e65732c444e532e31333d616c64656164656c63616e6f2e65732c444e532e31343d6c61616c64656164656c6f626973706f2e65732c444e532e31353d616c6465616e7565766164656c61766572612e65732c444e532e31363d616c6465616e7565766164656c63616d696e6f2e65732c444e532e31373d616c64656875656c6164656c6a657274652e65732c444e532e31383d6179746f616c69612e65732c444e532e31393d616c69736564612e65732c444e532e32303d616c6d6172617a2e65732c444e532e32313d616c6d6f686172696e2e65732c444e532e32323d6179746f6172726f796f64656c616c757a2e65732c444e532e32333d6172726f796f6d6f6c696e6f732e65732c444e532e32343d6172726f796f6d6f6c696e6f7364656c61766572612e65732c444e532e32353d62616e6f7364656d6f6e74656d61796f722e65732c444e532e32363d6261727261646f2e65732c444e532e32373d62656c76697364656d6f6e726f792e65732c444e532e32383d62656e71756572656e6369612e65732c444e532e32393d626572726f63616c656a6f2e65732c444e532e33303d6265727a6f63616e612e65732c444e532e33313d626f686f6e616c646569626f722e65732c444e532e33323d626f74696a612e65732c444e532e33333d62726f7a61732e65732c444e532e33343d636162616e617364656c63617374696c6c6f2e65732c444e532e33353d636162657a6162656c6c6f73612e65732c444e532e33363d636162657a75656c6164656c76616c6c652e65732c444e532e33373d6361627265726f2e65732c444e532e33383d636163686f7272696c6c612e65732c444e532e33393d636164616c736f2e65732c444e532e34303d63616c7a6164696c6c612e65732c444e532e34313d63616d696e6f6d6f726973636f2e65732c444e532e34323d63616d70696c6c6f646564656c6569746f73612e65732c444e532e34333d63616d706f6c756761722e65732c444e532e34343d63616e616d65726f2e65732c444e532e34353d63616e61766572616c2e65732c444e532e34363d63617262616a6f2e65732c444e532e34373d6361726361626f736f2e65732c444e532e34383d63617272617363616c656a6f2e65732c444e532e34393d63617361726465636163657265732e65732c444e532e35303d6361736172646570616c6f6d65726f2e65732c444e532e35313d6361736172657364656c61736875726465732e65732c444e532e35323d63617361736465646f6e616e746f6e696f2e65732c444e532e35333d63617361736465646f6e676f6d657a2e65732c444e532e35343d636173617364656c63617374616e61722e65732c444e532e35353d636173617364656c6d6f6e74652e65732c444e532e35363d636173617364656d696c6c616e2e65732c444e532e35373d636173617364656d697261766574652e65732c444e532e35383d6361736174656a6164612e65732c444e532e35393d636173696c6c61736465636f7269612e65732c444e532e36303d63617374616e6172646569626f722e65732c444e532e36313d6365636c6176696e2e65732c444e532e36323d636564696c6c6f2e65732c444e532e36333d636572657a6f2e65732c444e532e36343d63696c6c65726f732e65732c444e532e36353d636f6c6c61646f2e65732c444e532e36363d636f6e71756973746164656c617369657272612e65732c444e532e36373d636f7269612e65732c444e532e36383d637561636f73646579757374652e65732c444e532e36393d6c6163756d6272652e65732c444e532e37303d64656c6569746f73612e65732c444e532e37313d64657363617267616d617269612e65732c444e532e37323d656c6a61732e65732c444e532e37333d657363757269616c2e65732c444e532e37343d667265736e65646f736f646569626f722e65732c444e532e37353d67616c697374656f2e65732c444e532e37363d6761726369617a2e65732c444e532e37373d6c6167617267616e74612e65732c444e532e37383d67617267616e74616c616f6c6c612e65732c444e532e37393d67617267616e74696c6c612e65732c444e532e38303d67617267756572612e65732c444e532e38313d676172726f76696c6c61736465616c636f6e657461722e65732c444e532e38323d67617276696e2e65732c444e532e38333d676174612e65732c444e532e38343d6179746f656c676f72646f2e65732c444e532e38353d6c616772616e6a612e65732c444e532e38363d6c616772616e6a6164656772616e6164696c6c612e65732c444e532e38373d6179756e74616d69656e746f646567756164616c7570652e65732c444e532e38383d6775696a6f6465636f7269612e65732c444e532e38393d6775696a6f646567616c697374656f2e65732c444e532e39303d6775696a6f64656772616e6164696c6c612e65732c444e532e39313d6775696a6f646573616e7461626172626172612e65732c444e532e39323d6865726775696a75656c612e65732c444e532e39333d6865726e616e706572657a2e65732c444e532e39343d686572726572616465616c63616e746172612e65732c444e532e39353d68657272657275656c612e65732c444e532e39363d6865727661732e65732c444e532e39373d686967756572612e65732c444e532e39383d68696e6f6a616c2e65732c444e532e39393d686f6c67756572612e65732c444e532e3130303d686f796f732e65732c444e532e3130313d6875656c6167612e65732c444e532e3130323d6962616865726e616e646f2e65732c444e532e3130333d6a6172616963656a6f2e65732c444e532e3130343d6a617261697a64656c61766572612e65732c444e532e3130353d6a6172616e64696c6c6164656c61766572612e65732c444e532e3130363d6a6172696c6c612e65732c444e532e3130373d6a657274652e65732c444e532e3130383d6c616472696c6c61722e65732c444e532e3130393d6c6f67726f73616e2e65732c444e532e3131303d6c6f73617264656c61766572612e65732c444e532e3131313d6d6164726967616c656a6f2e65732c444e532e3131323d6d6164726967616c64656c61766572612e65732c444e532e3131333d6d6164726f6e6572612e65732c444e532e3131343d6d616a616461732e65732c444e532e3131353d6d616c706172746964616465636163657265732e65732c444e532e3131363d6d616c706172746964616465706c6173656e6369612e65732c444e532e3131373d6d617263686167617a2e65732c444e532e3131383d6d6174616465616c63616e746172612e65732c444e532e3131393d6d656d6272696f2e65732c444e532e3132303d6d65736173646569626f722e65732c444e532e3132313d6d69616a616461732e65732c444e532e3132323d6d696c6c616e65732e65732c444e532e3132333d6d69726162656c2e65732c444e532e3132343d6d6f686564617364656772616e6164696c6c612e65732c444e532e3132353d6d6f6e726f792e65732c444e532e3132363d6d6f6e74616e6368657a2e65732c444e532e3132373d6d6f6e74656865726d6f736f2e65732c444e532e3132383d6d6f72616c656a612e65732c444e532e3132393d6d6f7263696c6c6f2e65732c444e532e3133303d6e617661636f6e63656a6f2e65732c444e532e3133313d6e6176616c76696c6c6172646569626f722e65732c444e532e3133323d6e6176616c6d6f72616c64656c616d6174612e65732c444e532e3133333d6e6176617364656c6d6164726f6e6f2e65732c444e532e3133343d6e6176617472617369657272612e65732c444e532e3133353d6e6176657a75656c61732e65732c444e532e3133363d6e756e6f6d6f72616c2e65732c444e532e3133373d6f6c6976616465706c6173656e6369612e65732c444e532e3133383d70616c6f6d65726f2e65732c444e532e3133393d70617361726f6e64656c61766572612e65732c444e532e3134303d706564726f736f64656163696d2e65732c444e532e3134313d706572616c65646164656c616d6174612e65732c444e532e3134323d706572616c656461646573616e726f6d616e2e65732c444e532e3134333d706572616c657364656c70756572746f2e65732c444e532e3134343d7065736375657a612e65732c444e532e3134353d6c6170657367612e65732c444e532e3134363d70696564726173616c6261732e65732c444e532e3134373d70696e6f6672616e71756561646f2e65732c444e532e3134383d70696f726e616c2e65732c444e532e3134393d706c6173656e7a75656c612e65732c444e532e3135303d706f7274616a652e65732c444e532e3135313d706f7274657a75656c6f2e65732c444e532e3135323d706f7a75656c6f64657a61727a6f6e2e65732c444e532e3135333d707565626c6f6e7565766f64656d6972616d6f6e7465732e65732c444e532e3135343d70756572746f646573616e74616372757a2e65732c444e532e3135353d7265626f6c6c61722e65732c444e532e3135363d72696f6c6f626f732e65732c444e532e3135373d726f626c6564696c6c6f6465676174612e65732c444e532e3135383d726f626c6564696c6c6f64656c61766572612e65732c444e532e3135393d726f626c6564696c6c6f64657472756a696c6c6f2c444e532e3136303d726f626c65646f6c6c616e6f2e65732c444e532e3136313d726f6d616e676f72646f2e65732c444e532e3136323d7275616e65732e65732c444e532e3136333d73616c6f72696e6f2e65732c444e532e3136343d73616c7661746965727261646573616e746961676f2e65732c444e532e3136353d73616e6d617274696e646574726576656a6f2e65732c444e532e3136363d6179746f73616e7461616e612e65732c444e532e3136373d73616e74616372757a64656c617369657272612e65732c444e532e3136383d73616e74616372757a646570616e69616775612e65732c444e532e3136393d73616e74616d6172746164656d6167617363612e65732c444e532e3137303d73616e746961676f64656c63616d706f2e65732c444e532e3137313d73616e746962616e657a656c616c746f2e65732c444e532e3137323d73616e746962616e657a656c62616a6f2e65732c444e532e3137333d736175636564696c6c612e65732c444e532e3137343d7365677572616465746f726f2e65732c444e532e3137353d736572726164696c6c612e65732c444e532e3137363d73657272656a6f6e2e65732c444e532e3137373d73696572726164656675656e7465732e65732c444e532e3137383d74616c6176616e2e65732c444e532e3137393d74616c6176657275656c6164656c61766572612e65732c444e532e3138303d74616c617975656c612e65732c444e532e3138313d74656a65646164657469657461722e65732c444e532e3138323d746f72696c2e65732c444e532e3138333d746f726e6176616361732e65732c444e532e3138343d6179746f656c746f726e6f2e65732c444e532e3138353d746f72726563696c6c6164656c6f73616e67656c65732e65732c444e532e3138363d746f72726563696c6c617364656c6174696573612e65732c444e532e3138373d746f7272656465646f6e6d696775656c2e65732c444e532e3138383d746f727265646573616e74616d617269612e65732c444e532e3138393d746f7272656a6f6e656c727562696f2e65732c444e532e3139303d746f7272656a6f6e63696c6c6f2e65732c444e532e3139313d746f7272656d656e67612e65732c444e532e3139323d746f7272656d6f6368612e65732c444e532e3139333d746f7272656f7267617a2e65732c444e532e3139343d746f7272657175656d6164612e65732c444e532e3139353d76616c64617374696c6c61732e65732c444e532e3139363d76616c646563616e6173646574616a6f2e65732c444e532e3139373d76616c64656675656e7465732e65732c444e532e3139383d76616c646568756e6361722e65732c444e532e3139393d76616c6465696e69676f732e65732c444e532e3230303d76616c64656c6163617361646574616a6f2e65732c444e532e3230313d76616c64656d6f72616c65732e65732c444e532e3230323d76616c64656f626973706f2e65732c444e532e3230333d76616c646573616c6f722e65732c444e532e3230343d76616c72696f2e65732c444e532e3230353d76616c656e6369616465616c63616e746172612e65732c444e532e3230363d76616c766572646564656c61766572612e65732c444e532e3230373d76616c766572646564656c667265736e6f2e65732c444e532e3230383d766567617669616e612e65732c444e532e3230393d7669616e64617264656c61766572612e65732c444e532e3231303d76696c6c6164656c63616d706f2e65732c444e532e3231313d76696c6c6164656c7265792e65732c444e532e3231323d76696c6c616d65736961732e65732c444e532e3231333d76696c6c616d69656c2e65732c444e532e3231343d76696c6c616e7565766164656c617369657272612e65732c444e532e3231353d76696c6c617264656c706564726f736f2e65732c444e532e3231363d76696c6c61726465706c6173656e6369612e65732c444e532e3231373d76696c6c61736275656e61736465676174612e65732c444e532e3231383d7a61727a6164656772616e6164696c6c612e65732c444e532e3231393d7a61727a6164656d6f6e74616e6368657a2e65732c444e532e3232303d7a61727a616c616d61796f722e65732c444e532e3232313d7a6f726974612e65732c444e532e3232323d726f73616c656a6f2e65732c444e532e3232333d766567617669616e612e65732c444e532e3232343d616c61676f6e64656c72696f2e65732c444e532e3232353d7469657461722e65732c444e532e3232363d76616c646573616c6f722e65732c444e532e3232373d6e6176617472617369657272612e65732c444e532e3232383d7269766572616465667265736e65646f73612e65732c444e532e3232393d656c6d73616e67696c2e65732c444e532e3233303d74616a6f73616c6f722e65732c444e532e3233313d76616c6c65616d62726f7a2e65732c444e532e3233323d6d616e636f6d756e6964616476616c6c6564656c616c61676f6e2e65732c444e532e3233333d6d616e636f6d756e6964616476616c6c6564656c6a657274652e65732c444e532e3233343d6d616e636f6d756e696461647665676173616c7461732e65732c444e532e3233353d6d616e636f6d756e6964616464656c61766572612e65732c444e532e3233363d6d616e636f6d756e696461647a6f6e6163656e74726f2e65732c444e532e3233373d76696c6c7565726361732d69626f7265732d6a6172612e65732c444e532e3233383d7777772e6162616469612e65732c444e532e3233393d7777772e61626572747572612e65732c444e532e3234303d7777772e616365626f2e65732c444e532e3234313d7777772e61636568756368652e65732c444e532e3234323d7777772e6163656974756e612e65732c444e532e3234333d7777772e61686967616c2e65732c444e532e3234343d7777772e616c61676f6e64656c72696f2e65732c444e532e3234353d7777772e616c636f6c6c6172696e2e65732c444e532e3234363d7777772e6179746f616c62616c612e65732c444e532e3234373d7777772e6179746f616c63616e746172612e65732c444e532e3234383d7777772e616c637565736361722e65732c444e532e3234393d7777772e616c64656163656e74656e6572612e65732c444e532e3235303d7777772e616c64656164656c63616e6f2e65732c444e532e3235313d7777772e6c61616c64656164656c6f626973706f2e65732c444e532e3235323d7777772e616c6465616e7565766164656c61766572612e65732c444e532e3235333d7777772e616c6465616e7565766164656c63616d696e6f2e65732c444e532e3235343d7777772e616c64656875656c6164656c6a657274652e65732c444e532e3235353d7777772e6179746f616c69612e65732c444e532e3235363d7777772e616c69736564612e65732c444e532e3235373d7777772e616c6d6172617a2e65732c444e532e3235383d7777772e616c6d6f686172696e2e65732c444e532e3235393d7777772e6179746f6172726f796f64656c616c757a2e65732c444e532e3236303d7777772e6172726f796f6d6f6c696e6f732e65732c444e532e3236313d7777772e6172726f796f6d6f6c696e6f7364656c61766572612e65732c444e532e3236323d7777772e62616e6f7364656d6f6e74656d61796f722e65732c444e532e3236333d7777772e6261727261646f2e65732c444e532e3236343d7777772e62656c76697364656d6f6e726f792e65732c444e532e3236353d7777772e62656e71756572656e6369612e65732c444e532e3236363d7777772e626572726f63616c656a6f2e65732c444e532e3236373d7777772e6265727a6f63616e612e65732c444e532e3236383d7777772e626f686f6e616c646569626f722e65732c444e532e3236393d7777772e626f74696a612e65732c444e532e3237303d7777772e62726f7a61732e65732c444e532e3237313d7777772e636162616e617364656c63617374696c6c6f2e65732c444e532e3237323d7777772e636162657a6162656c6c6f73612e65732c444e532e3237333d7777772e636162657a75656c6164656c76616c6c652e65732c444e532e3237343d7777772e6361627265726f2e65732c444e532e3237353d7777772e636163686f7272696c6c612e65732c444e532e3237363d7777772e636164616c736f2e65732c444e532e3237373d7777772e63616c7a6164696c6c612e65732c444e532e3237383d7777772e63616d696e6f6d6f726973636f2e65732c444e532e3237393d7777772e63616d70696c6c6f646564656c6569746f73612e65732c444e532e3238303d7777772e63616d706f6c756761722e65732c444e532e3238313d7777772e63616e616d65726f2e65732c444e532e3238323d7777772e63616e61766572616c2e65732c444e532e3238333d7777772e63617262616a6f2e65732c444e532e3238343d7777772e6361726361626f736f2e65732c444e532e3238353d7777772e63617272617363616c656a6f2e65732c444e532e3238363d7777772e63617361726465636163657265732e65732c444e532e3238373d7777772e6361736172646570616c6f6d65726f2e65732c444e532e3238383d7777772e6361736172657364656c61736875726465732e65732c444e532e3238393d7777772e63617361736465646f6e616e746f6e696f2e65732c444e532e3239303d7777772e63617361736465646f6e676f6d657a2e65732c444e532e3239313d7777772e636173617364656c63617374616e61722e65732c444e532e3239323d7777772e636173617364656c6d6f6e74652e65732c444e532e3239333d7777772e636173617364656d696c6c616e2e65732c444e532e3239343d7777772e636173617364656d697261766574652e65732c444e532e3239353d7777772e6361736174656a6164612e65732c444e532e3239363d7777772e636173696c6c61736465636f7269612e65732c444e532e3239373d7777772e63617374616e6172646569626f722e65732c444e532e3239383d7777772e6365636c6176696e2e65732c444e532e3239393d7777772e636564696c6c6f2e65732c444e532e3330303d7777772e636572657a6f2e65732c444e532e3330313d7777772e63696c6c65726f732e65732c444e532e3330323d7777772e636f6c6c61646f2e65732c444e532e3330333d7777772e636f6e71756973746164656c617369657272612e65732c444e532e3330343d7777772e636f7269612e65732c444e532e3330353d7777772e637561636f73646579757374652e65732c444e532e3330363d7777772e6c6163756d6272652e65732c444e532e3330373d7777772e64656c6569746f73612e65732c444e532e3330383d7777772e64657363617267616d617269612e65732c444e532e3330393d7777772e656c6a61732e65732c444e532e3331303d7777772e657363757269616c2e65732c444e532e3331313d7777772e667265736e65646f736f646569626f722e65732c444e532e3331323d7777772e67616c697374656f2e65732c444e532e3331333d7777772e6761726369617a2e65732c444e532e3331343d7777772e6c6167617267616e74612e65732c444e532e3331353d7777772e67617267616e74616c616f6c6c612e65732c444e532e3331363d7777772e67617267616e74696c6c612e65732c444e532e3331373d7777772e67617267756572612e65732c444e532e3331383d7777772e676172726f76696c6c61736465616c636f6e657461722e65732c444e532e3331393d7777772e67617276696e2e65732c444e532e3332303d7777772e676174612e65732c444e532e3332313d7777772e6179746f656c676f72646f2e65732c444e532e3332323d7777772e6c616772616e6a612e65732c444e532e3332333d7777772e6c616772616e6a6164656772616e6164696c6c612e65732c444e532e3332343d7777772e6179756e74616d69656e746f646567756164616c7570652e65732c444e532e3332353d7777772e6775696a6f6465636f7269612e65732c444e532e3332363d7777772e6775696a6f646567616c697374656f2e65732c444e532e3332373d7777772e6775696a6f64656772616e6164696c6c612e65732c444e532e3332383d7777772e6775696a6f646573616e7461626172626172612e65732c444e532e3332393d7777772e6865726775696a75656c612e65732c444e532e3333303d7777772e6865726e616e706572657a2e65732c444e532e3333313d7777772e686572726572616465616c63616e746172612e65732c444e532e3333323d7777772e68657272657275656c612e65732c444e532e3333333d7777772e6865727661732e65732c444e532e3333343d7777772e686967756572612e65732c444e532e3333353d7777772e68696e6f6a616c2e65732c444e532e3333363d7777772e686f6c67756572612e65732c444e532e3333373d7777772e686f796f732e65732c444e532e3333383d7777772e6875656c6167612e65732c444e532e3333393d7777772e6962616865726e616e646f2e65732c444e532e3334303d7777772e6a6172616963656a6f2e65732c444e532e3334313d7777772e6a617261697a64656c61766572612e65732c444e532e3334323d7777772e6a6172616e64696c6c6164656c61766572612e65732c444e532e3334333d7777772e6a6172696c6c612e65732c444e532e3334343d7777772e6a657274652e65732c444e532e3334353d7777772e6c616472696c6c61722e65732c444e532e3334363d7777772e6c6f67726f73616e2e65732c444e532e3334373d7777772e6c6f73617264656c61766572612e65732c444e532e3334383d7777772e6d6164726967616c656a6f2e65732c444e532e3334393d7777772e6d6164726967616c64656c61766572612e65732c444e532e3335303d7777772e6d6164726f6e6572612e65732c444e532e3335313d7777772e6d616a616461732e65732c444e532e3335323d7777772e6d616c706172746964616465636163657265732e65732c444e532e3335333d7777772e6d616c706172746964616465706c6173656e6369612e65732c444e532e3335343d7777772e6d617263686167617a2e65732c444e532e3335353d7777772e6d6174616465616c63616e746172612e65732c444e532e3335363d7777772e6d656d6272696f2e65732c444e532e3335373d7777772e6d65736173646569626f722e65732c444e532e3335383d7777772e6d69616a616461732e65732c444e532e3335393d7777772e6d696c6c616e65732e65732c444e532e3336303d7777772e6d69726162656c2e65732c444e532e3336313d7777772e6d6f686564617364656772616e6164696c6c612e65732c444e532e3336323d7777772e6d6f6e726f792e65732c444e532e3336333d7777772e6d6f6e74616e6368657a2e65732c444e532e3336343d7777772e6d6f6e74656865726d6f736f2e65732c444e532e3336353d7777772e6d6f72616c656a612e65732c444e532e3336363d7777772e6d6f7263696c6c6f2e65732c444e532e3336373d7777772e6e617661636f6e63656a6f2e65732c444e532e3336383d7777772e6e6176616c76696c6c6172646569626f722e65732c444e532e3336393d7777772e6e6176616c6d6f72616c64656c616d6174612e65732c444e532e3337303d7777772e6e6176617364656c6d6164726f6e6f2e65732c444e532e3337313d7777772e6e6176617472617369657272612e65732c444e532e3337323d7777772e6e6176657a75656c61732e65732c444e532e3337333d7777772e6e756e6f6d6f72616c2e65732c444e532e3337343d7777772e6f6c6976616465706c6173656e6369612e65732c444e532e3337353d7777772e70616c6f6d65726f2e65732c444e532e3337363d7777772e70617361726f6e64656c61766572612e65732c444e532e3337373d7777772e706564726f736f64656163696d2e65732c444e532e3337383d7777772e706572616c65646164656c616d6174612e65732c444e532e3337393d7777772e706572616c656461646573616e726f6d616e2e65732c444e532e3338303d7777772e706572616c657364656c70756572746f2e65732c444e532e3338313d7777772e7065736375657a612e65732c444e532e3338323d7777772e6c6170657367612e65732c444e532e3338333d7777772e70696564726173616c6261732e65732c444e532e3338343d7777772e70696e6f6672616e71756561646f2e65732c444e532e3338353d7777772e70696f726e616c2e65732c444e532e3338363d7777772e706c6173656e7a75656c612e65732c444e532e3338373d7777772e706f7274616a652e65732c444e532e3338383d7777772e706f7274657a75656c6f2e65732c444e532e3338393d7777772e706f7a75656c6f64657a61727a6f6e2e65732c444e532e3339303d7777772e707565626c6f6e7565766f64656d6972616d6f6e7465732e65732c444e532e3339313d7777772e70756572746f646573616e74616372757a2e65732c444e532e3339323d7777772e7265626f6c6c61722e65732c444e532e3339333d7777772e72696f6c6f626f732e65732c444e532e3339343d7777772e726f626c6564696c6c6f6465676174612e65732c444e532e3339353d7777772e726f626c6564696c6c6f64656c61766572612e65732c444e532e3339363d7777772e726f626c6564696c6c6f64657472756a696c6c6f2c444e532e3339373d7777772e726f626c65646f6c6c616e6f2e65732c444e532e3339383d7777772e726f6d616e676f72646f2e65732c444e532e3339393d7777772e7275616e65732e65732c444e532e3430303d7777772e73616c6f72696e6f2e65732c444e532e3430313d7777772e73616c7661746965727261646573616e746961676f2e65732c444e532e3430323d7777772e73616e6d617274696e646574726576656a6f2e65732c444e532e3430333d7777772e6179746f73616e7461616e612e65732c444e532e3430343d7777772e73616e74616372757a64656c617369657272612e65732c444e532e3430353d7777772e73616e74616372757a646570616e69616775612e65732c444e532e3430363d7777772e73616e74616d6172746164656d6167617363612e65732c444e532e3430373d7777772e73616e746961676f64656c63616d706f2e65732c444e532e3430383d7777772e73616e746962616e657a656c616c746f2e65732c444e532e3430393d7777772e73616e746962616e657a656c62616a6f2e65732c444e532e3431303d7777772e736175636564696c6c612e65732c444e532e3431313d7777772e7365677572616465746f726f2e65732c444e532e3431323d7777772e736572726164696c6c612e65732c444e532e3431333d7777772e73657272656a6f6e2e65732c444e532e3431343d7777772e73696572726164656675656e7465732e65732c444e532e3431353d7777772e74616c6176616e2e65732c444e532e3431363d7777772e74616c6176657275656c6164656c61766572612e65732c444e532e3431373d7777772e74616c617975656c612e65732c444e532e3431383d7777772e74656a65646164657469657461722e65732c444e532e3431393d7777772e746f72696c2e65732c444e532e3432303d7777772e746f726e6176616361732e65732c444e532e3432313d7777772e6179746f656c746f726e6f2e65732c444e532e3432323d7777772e746f72726563696c6c6164656c6f73616e67656c65732e65732c444e532e3432333d7777772e746f72726563696c6c617364656c6174696573612e65732c444e532e3432343d7777772e746f7272656465646f6e6d696775656c2e65732c444e532e3432353d7777772e746f727265646573616e74616d617269612e65732c444e532e3432363d7777772e746f7272656a6f6e656c727562696f2e65732c444e532e3432373d7777772e746f7272656a6f6e63696c6c6f2e65732c444e532e3432383d7777772e746f7272656d656e67612e65732c444e532e3432393d7777772e746f7272656d6f6368612e65732c444e532e3433303d7777772e746f7272656f7267617a2e65732c444e532e3433313d7777772e746f7272657175656d6164612e65732c444e532e3433323d7777772e76616c64617374696c6c61732e65732c444e532e3433333d7777772e76616c646563616e6173646574616a6f2e65732c444e532e3433343d7777772e76616c64656675656e7465732e65732c444e532e3433353d7777772e76616c646568756e6361722e65732c444e532e3433363d7777772e76616c6465696e69676f732e65732c444e532e3433373d7777772e76616c64656c6163617361646574616a6f2e65732c444e532e3433383d7777772e76616c64656d6f72616c65732e65732c444e532e3433393d7777772e76616c64656f626973706f2e65732c444e532e3434303d7777772e76616c646573616c6f722e65732c444e532e3434313d7777772e76616c72696f2e65732c444e532e3434323d7777772e76616c656e6369616465616c63616e746172612e65732c444e532e3434333d7777772e76616c766572646564656c61766572612e65732c444e532e3434343d7777772e76616c766572646564656c667265736e6f2e65732c444e532e3434353d7777772e766567617669616e612e65732c444e532e3434363d7777772e7669616e64617264656c61766572612e65732c444e532e3434373d7777772e76696c6c6164656c63616d706f2e65732c444e532e3434383d7777772e76696c6c6164656c7265792e65732c444e532e3434393d7777772e76696c6c616d65736961732e65732c444e532e3435303d7777772e76696c6c616d69656c2e65732c444e532e3435313d7777772e76696c6c616e7565766164656c617369657272612e65732c444e532e3435323d7777772e76696c6c617264656c706564726f736f2e65732c444e532e3435333d7777772e76696c6c61726465706c6173656e6369612e65732c444e532e3435343d7777772e76696c6c61736275656e61736465676174612e65732c444e532e3435353d7777772e7a61727a6164656772616e6164696c6c612e65732c444e532e3435363d7777772e7a61727a6164656d6f6e74616e6368657a2e65732c444e532e3435373d7777772e7a61727a616c616d61796f722e65732c444e532e3435383d7777772e7a6f726974612e65732c444e532e3435393d7777772e726f73616c656a6f2e65732c444e532e3436303d7777772e766567617669616e612e65732c444e532e3436313d7777772e616c61676f6e64656c72696f2e65732c444e532e3436323d7777772e7469657461722e65732c444e532e3436333d7777772e76616c646573616c6f722e65732c444e532e3436343d7777772e6e6176617472617369657272612e65732c444e532e3436353d7777772e7269766572616465667265736e65646f73612e65732c444e532e3436363d7777772e656c6d73616e67696c2e65732c444e532e3436373d7777772e74616a6f73616c6f722e65732c444e532e3436383d7777772e76616c6c65616d62726f7a2e65732c444e532e3436393d7777772e6d616e636f6d756e6964616476616c6c6564656c616c61676f6e2e65732c444e532e3437303d7777772e6d616e636f6d756e6964616476616c6c6564656c6a657274652e65732c444e532e3437313d7777772e6d616e636f6d756e696461647665676173616c7461732e65732c444e532e3437323d7777772e6d616e636f6d756e6964616464656c61766572612e65732c444e532e3437333d7777772e6d616e636f6d756e696461647a6f6e6163656e74726f2e65732c444e532e3437343d7777772e76696c6c7565726361732d69626f7265732d6a6172612e6573,EMAIL=webmaster@dip-caceres.es,CN=www.dip-caceres.es,OU=DIPUTACION PROVINCIAL DE CACERES,O=DIPUTACION PROVINCIAL DE CACERES,L=CACERES,ST=CACERES,C=ES", + .raw = { (void *)"\x30\x82\x31\x29\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x45\x53\x31\x10\x30\x0e\x06\x03\x55\x04\x08\x13\x07\x43\x41\x43\x45\x52\x45\x53\x31\x10\x30\x0e\x06\x03\x55\x04\x07\x13\x07\x43\x41\x43\x45\x52\x45\x53\x31\x29\x30\x27\x06\x03\x55\x04\x0a\x13\x20\x44\x49\x50\x55\x54\x41\x43\x49\x4f\x4e\x20\x50\x52\x4f\x56\x49\x4e\x43\x49\x41\x4c\x20\x44\x45\x20\x43\x41\x43\x45\x52\x45\x53\x31\x29\x30\x27\x06\x03\x55\x04\x0b\x13\x20\x44\x49\x50\x55\x54\x41\x43\x49\x4f\x4e\x20\x50\x52\x4f\x56\x49\x4e\x43\x49\x41\x4c\x20\x44\x45\x20\x43\x41\x43\x45\x52\x45\x53\x31\x1b\x30\x19\x06\x03\x55\x04\x03\x13\x12\x77\x77\x77\x2e\x64\x69\x70\x2d\x63\x61\x63\x65\x72\x65\x73\x2e\x65\x73\x31\x27\x30\x25\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x09\x01\x16\x18\x77\x65\x62\x6d\x61\x73\x74\x65\x72\x40\x64\x69\x70\x2d\x63\x61\x63\x65\x72\x65\x73\x2e\x65\x73\x31\x82\x30\x58\x30\x82\x30\x54\x06\x03\x55\x1d\x11\x13\x82\x30\x4b\x44\x4e\x53\x2e\x31\x3d\x61\x62\x61\x64\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x3d\x61\x62\x65\x72\x74\x75\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x3d\x61\x63\x65\x62\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x3d\x61\x63\x65\x68\x75\x63\x68\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x3d\x61\x63\x65\x69\x74\x75\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x3d\x61\x68\x69\x67\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x3d\x61\x6c\x61\x67\x6f\x6e\x64\x65\x6c\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x3d\x61\x6c\x63\x6f\x6c\x6c\x61\x72\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x3d\x61\x79\x74\x6f\x61\x6c\x62\x61\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x3d\x61\x79\x74\x6f\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x3d\x61\x6c\x63\x75\x65\x73\x63\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x3d\x61\x6c\x64\x65\x61\x63\x65\x6e\x74\x65\x6e\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x3d\x61\x6c\x64\x65\x61\x64\x65\x6c\x63\x61\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x3d\x6c\x61\x61\x6c\x64\x65\x61\x64\x65\x6c\x6f\x62\x69\x73\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x3d\x61\x6c\x64\x65\x61\x6e\x75\x65\x76\x61\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x3d\x61\x6c\x64\x65\x61\x6e\x75\x65\x76\x61\x64\x65\x6c\x63\x61\x6d\x69\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x3d\x61\x6c\x64\x65\x68\x75\x65\x6c\x61\x64\x65\x6c\x6a\x65\x72\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x3d\x61\x79\x74\x6f\x61\x6c\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x3d\x61\x6c\x69\x73\x65\x64\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x3d\x61\x6c\x6d\x61\x72\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x3d\x61\x6c\x6d\x6f\x68\x61\x72\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x3d\x61\x79\x74\x6f\x61\x72\x72\x6f\x79\x6f\x64\x65\x6c\x61\x6c\x75\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x3d\x61\x72\x72\x6f\x79\x6f\x6d\x6f\x6c\x69\x6e\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x3d\x61\x72\x72\x6f\x79\x6f\x6d\x6f\x6c\x69\x6e\x6f\x73\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x3d\x62\x61\x6e\x6f\x73\x64\x65\x6d\x6f\x6e\x74\x65\x6d\x61\x79\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x3d\x62\x61\x72\x72\x61\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x3d\x62\x65\x6c\x76\x69\x73\x64\x65\x6d\x6f\x6e\x72\x6f\x79\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x3d\x62\x65\x6e\x71\x75\x65\x72\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x3d\x62\x65\x72\x72\x6f\x63\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x3d\x62\x65\x72\x7a\x6f\x63\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x3d\x62\x6f\x68\x6f\x6e\x61\x6c\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x3d\x62\x6f\x74\x69\x6a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x3d\x62\x72\x6f\x7a\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x3d\x63\x61\x62\x61\x6e\x61\x73\x64\x65\x6c\x63\x61\x73\x74\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x3d\x63\x61\x62\x65\x7a\x61\x62\x65\x6c\x6c\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x3d\x63\x61\x62\x65\x7a\x75\x65\x6c\x61\x64\x65\x6c\x76\x61\x6c\x6c\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x3d\x63\x61\x62\x72\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x3d\x63\x61\x63\x68\x6f\x72\x72\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x3d\x63\x61\x64\x61\x6c\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x3d\x63\x61\x6c\x7a\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x3d\x63\x61\x6d\x69\x6e\x6f\x6d\x6f\x72\x69\x73\x63\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x3d\x63\x61\x6d\x70\x69\x6c\x6c\x6f\x64\x65\x64\x65\x6c\x65\x69\x74\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x3d\x63\x61\x6d\x70\x6f\x6c\x75\x67\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x3d\x63\x61\x6e\x61\x6d\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x3d\x63\x61\x6e\x61\x76\x65\x72\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x3d\x63\x61\x72\x62\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x37\x3d\x63\x61\x72\x63\x61\x62\x6f\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x38\x3d\x63\x61\x72\x72\x61\x73\x63\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x39\x3d\x63\x61\x73\x61\x72\x64\x65\x63\x61\x63\x65\x72\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x30\x3d\x63\x61\x73\x61\x72\x64\x65\x70\x61\x6c\x6f\x6d\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x31\x3d\x63\x61\x73\x61\x72\x65\x73\x64\x65\x6c\x61\x73\x68\x75\x72\x64\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x32\x3d\x63\x61\x73\x61\x73\x64\x65\x64\x6f\x6e\x61\x6e\x74\x6f\x6e\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x33\x3d\x63\x61\x73\x61\x73\x64\x65\x64\x6f\x6e\x67\x6f\x6d\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x34\x3d\x63\x61\x73\x61\x73\x64\x65\x6c\x63\x61\x73\x74\x61\x6e\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x35\x3d\x63\x61\x73\x61\x73\x64\x65\x6c\x6d\x6f\x6e\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x36\x3d\x63\x61\x73\x61\x73\x64\x65\x6d\x69\x6c\x6c\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x37\x3d\x63\x61\x73\x61\x73\x64\x65\x6d\x69\x72\x61\x76\x65\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x38\x3d\x63\x61\x73\x61\x74\x65\x6a\x61\x64\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x35\x39\x3d\x63\x61\x73\x69\x6c\x6c\x61\x73\x64\x65\x63\x6f\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x30\x3d\x63\x61\x73\x74\x61\x6e\x61\x72\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x31\x3d\x63\x65\x63\x6c\x61\x76\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x32\x3d\x63\x65\x64\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x33\x3d\x63\x65\x72\x65\x7a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x34\x3d\x63\x69\x6c\x6c\x65\x72\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x35\x3d\x63\x6f\x6c\x6c\x61\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x36\x3d\x63\x6f\x6e\x71\x75\x69\x73\x74\x61\x64\x65\x6c\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x37\x3d\x63\x6f\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x38\x3d\x63\x75\x61\x63\x6f\x73\x64\x65\x79\x75\x73\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x36\x39\x3d\x6c\x61\x63\x75\x6d\x62\x72\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x30\x3d\x64\x65\x6c\x65\x69\x74\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x31\x3d\x64\x65\x73\x63\x61\x72\x67\x61\x6d\x61\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x32\x3d\x65\x6c\x6a\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x33\x3d\x65\x73\x63\x75\x72\x69\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x34\x3d\x66\x72\x65\x73\x6e\x65\x64\x6f\x73\x6f\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x35\x3d\x67\x61\x6c\x69\x73\x74\x65\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x36\x3d\x67\x61\x72\x63\x69\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x37\x3d\x6c\x61\x67\x61\x72\x67\x61\x6e\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x38\x3d\x67\x61\x72\x67\x61\x6e\x74\x61\x6c\x61\x6f\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x37\x39\x3d\x67\x61\x72\x67\x61\x6e\x74\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x30\x3d\x67\x61\x72\x67\x75\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x31\x3d\x67\x61\x72\x72\x6f\x76\x69\x6c\x6c\x61\x73\x64\x65\x61\x6c\x63\x6f\x6e\x65\x74\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x32\x3d\x67\x61\x72\x76\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x33\x3d\x67\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x34\x3d\x61\x79\x74\x6f\x65\x6c\x67\x6f\x72\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x35\x3d\x6c\x61\x67\x72\x61\x6e\x6a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x36\x3d\x6c\x61\x67\x72\x61\x6e\x6a\x61\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x37\x3d\x61\x79\x75\x6e\x74\x61\x6d\x69\x65\x6e\x74\x6f\x64\x65\x67\x75\x61\x64\x61\x6c\x75\x70\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x38\x3d\x67\x75\x69\x6a\x6f\x64\x65\x63\x6f\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x38\x39\x3d\x67\x75\x69\x6a\x6f\x64\x65\x67\x61\x6c\x69\x73\x74\x65\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x30\x3d\x67\x75\x69\x6a\x6f\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x31\x3d\x67\x75\x69\x6a\x6f\x64\x65\x73\x61\x6e\x74\x61\x62\x61\x72\x62\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x32\x3d\x68\x65\x72\x67\x75\x69\x6a\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x33\x3d\x68\x65\x72\x6e\x61\x6e\x70\x65\x72\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x34\x3d\x68\x65\x72\x72\x65\x72\x61\x64\x65\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x35\x3d\x68\x65\x72\x72\x65\x72\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x36\x3d\x68\x65\x72\x76\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x37\x3d\x68\x69\x67\x75\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x38\x3d\x68\x69\x6e\x6f\x6a\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x39\x39\x3d\x68\x6f\x6c\x67\x75\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x30\x3d\x68\x6f\x79\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x31\x3d\x68\x75\x65\x6c\x61\x67\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x32\x3d\x69\x62\x61\x68\x65\x72\x6e\x61\x6e\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x33\x3d\x6a\x61\x72\x61\x69\x63\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x34\x3d\x6a\x61\x72\x61\x69\x7a\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x35\x3d\x6a\x61\x72\x61\x6e\x64\x69\x6c\x6c\x61\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x36\x3d\x6a\x61\x72\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x37\x3d\x6a\x65\x72\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x38\x3d\x6c\x61\x64\x72\x69\x6c\x6c\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x30\x39\x3d\x6c\x6f\x67\x72\x6f\x73\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x30\x3d\x6c\x6f\x73\x61\x72\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x31\x3d\x6d\x61\x64\x72\x69\x67\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x32\x3d\x6d\x61\x64\x72\x69\x67\x61\x6c\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x33\x3d\x6d\x61\x64\x72\x6f\x6e\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x34\x3d\x6d\x61\x6a\x61\x64\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x35\x3d\x6d\x61\x6c\x70\x61\x72\x74\x69\x64\x61\x64\x65\x63\x61\x63\x65\x72\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x36\x3d\x6d\x61\x6c\x70\x61\x72\x74\x69\x64\x61\x64\x65\x70\x6c\x61\x73\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x37\x3d\x6d\x61\x72\x63\x68\x61\x67\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x38\x3d\x6d\x61\x74\x61\x64\x65\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x31\x39\x3d\x6d\x65\x6d\x62\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x30\x3d\x6d\x65\x73\x61\x73\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x31\x3d\x6d\x69\x61\x6a\x61\x64\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x32\x3d\x6d\x69\x6c\x6c\x61\x6e\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x33\x3d\x6d\x69\x72\x61\x62\x65\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x34\x3d\x6d\x6f\x68\x65\x64\x61\x73\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x35\x3d\x6d\x6f\x6e\x72\x6f\x79\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x36\x3d\x6d\x6f\x6e\x74\x61\x6e\x63\x68\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x37\x3d\x6d\x6f\x6e\x74\x65\x68\x65\x72\x6d\x6f\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x38\x3d\x6d\x6f\x72\x61\x6c\x65\x6a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x32\x39\x3d\x6d\x6f\x72\x63\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x30\x3d\x6e\x61\x76\x61\x63\x6f\x6e\x63\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x31\x3d\x6e\x61\x76\x61\x6c\x76\x69\x6c\x6c\x61\x72\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x32\x3d\x6e\x61\x76\x61\x6c\x6d\x6f\x72\x61\x6c\x64\x65\x6c\x61\x6d\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x33\x3d\x6e\x61\x76\x61\x73\x64\x65\x6c\x6d\x61\x64\x72\x6f\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x34\x3d\x6e\x61\x76\x61\x74\x72\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x35\x3d\x6e\x61\x76\x65\x7a\x75\x65\x6c\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x36\x3d\x6e\x75\x6e\x6f\x6d\x6f\x72\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x37\x3d\x6f\x6c\x69\x76\x61\x64\x65\x70\x6c\x61\x73\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x38\x3d\x70\x61\x6c\x6f\x6d\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x33\x39\x3d\x70\x61\x73\x61\x72\x6f\x6e\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x30\x3d\x70\x65\x64\x72\x6f\x73\x6f\x64\x65\x61\x63\x69\x6d\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x31\x3d\x70\x65\x72\x61\x6c\x65\x64\x61\x64\x65\x6c\x61\x6d\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x32\x3d\x70\x65\x72\x61\x6c\x65\x64\x61\x64\x65\x73\x61\x6e\x72\x6f\x6d\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x33\x3d\x70\x65\x72\x61\x6c\x65\x73\x64\x65\x6c\x70\x75\x65\x72\x74\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x34\x3d\x70\x65\x73\x63\x75\x65\x7a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x35\x3d\x6c\x61\x70\x65\x73\x67\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x36\x3d\x70\x69\x65\x64\x72\x61\x73\x61\x6c\x62\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x37\x3d\x70\x69\x6e\x6f\x66\x72\x61\x6e\x71\x75\x65\x61\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x38\x3d\x70\x69\x6f\x72\x6e\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x34\x39\x3d\x70\x6c\x61\x73\x65\x6e\x7a\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x30\x3d\x70\x6f\x72\x74\x61\x6a\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x31\x3d\x70\x6f\x72\x74\x65\x7a\x75\x65\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x32\x3d\x70\x6f\x7a\x75\x65\x6c\x6f\x64\x65\x7a\x61\x72\x7a\x6f\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x33\x3d\x70\x75\x65\x62\x6c\x6f\x6e\x75\x65\x76\x6f\x64\x65\x6d\x69\x72\x61\x6d\x6f\x6e\x74\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x34\x3d\x70\x75\x65\x72\x74\x6f\x64\x65\x73\x61\x6e\x74\x61\x63\x72\x75\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x35\x3d\x72\x65\x62\x6f\x6c\x6c\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x36\x3d\x72\x69\x6f\x6c\x6f\x62\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x37\x3d\x72\x6f\x62\x6c\x65\x64\x69\x6c\x6c\x6f\x64\x65\x67\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x38\x3d\x72\x6f\x62\x6c\x65\x64\x69\x6c\x6c\x6f\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x35\x39\x3d\x72\x6f\x62\x6c\x65\x64\x69\x6c\x6c\x6f\x64\x65\x74\x72\x75\x6a\x69\x6c\x6c\x6f\x2c\x44\x4e\x53\x2e\x31\x36\x30\x3d\x72\x6f\x62\x6c\x65\x64\x6f\x6c\x6c\x61\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x31\x3d\x72\x6f\x6d\x61\x6e\x67\x6f\x72\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x32\x3d\x72\x75\x61\x6e\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x33\x3d\x73\x61\x6c\x6f\x72\x69\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x34\x3d\x73\x61\x6c\x76\x61\x74\x69\x65\x72\x72\x61\x64\x65\x73\x61\x6e\x74\x69\x61\x67\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x35\x3d\x73\x61\x6e\x6d\x61\x72\x74\x69\x6e\x64\x65\x74\x72\x65\x76\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x36\x3d\x61\x79\x74\x6f\x73\x61\x6e\x74\x61\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x37\x3d\x73\x61\x6e\x74\x61\x63\x72\x75\x7a\x64\x65\x6c\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x38\x3d\x73\x61\x6e\x74\x61\x63\x72\x75\x7a\x64\x65\x70\x61\x6e\x69\x61\x67\x75\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x36\x39\x3d\x73\x61\x6e\x74\x61\x6d\x61\x72\x74\x61\x64\x65\x6d\x61\x67\x61\x73\x63\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x30\x3d\x73\x61\x6e\x74\x69\x61\x67\x6f\x64\x65\x6c\x63\x61\x6d\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x31\x3d\x73\x61\x6e\x74\x69\x62\x61\x6e\x65\x7a\x65\x6c\x61\x6c\x74\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x32\x3d\x73\x61\x6e\x74\x69\x62\x61\x6e\x65\x7a\x65\x6c\x62\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x33\x3d\x73\x61\x75\x63\x65\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x34\x3d\x73\x65\x67\x75\x72\x61\x64\x65\x74\x6f\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x35\x3d\x73\x65\x72\x72\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x36\x3d\x73\x65\x72\x72\x65\x6a\x6f\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x37\x3d\x73\x69\x65\x72\x72\x61\x64\x65\x66\x75\x65\x6e\x74\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x38\x3d\x74\x61\x6c\x61\x76\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x37\x39\x3d\x74\x61\x6c\x61\x76\x65\x72\x75\x65\x6c\x61\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x30\x3d\x74\x61\x6c\x61\x79\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x31\x3d\x74\x65\x6a\x65\x64\x61\x64\x65\x74\x69\x65\x74\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x32\x3d\x74\x6f\x72\x69\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x33\x3d\x74\x6f\x72\x6e\x61\x76\x61\x63\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x34\x3d\x61\x79\x74\x6f\x65\x6c\x74\x6f\x72\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x35\x3d\x74\x6f\x72\x72\x65\x63\x69\x6c\x6c\x61\x64\x65\x6c\x6f\x73\x61\x6e\x67\x65\x6c\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x36\x3d\x74\x6f\x72\x72\x65\x63\x69\x6c\x6c\x61\x73\x64\x65\x6c\x61\x74\x69\x65\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x37\x3d\x74\x6f\x72\x72\x65\x64\x65\x64\x6f\x6e\x6d\x69\x67\x75\x65\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x38\x3d\x74\x6f\x72\x72\x65\x64\x65\x73\x61\x6e\x74\x61\x6d\x61\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x38\x39\x3d\x74\x6f\x72\x72\x65\x6a\x6f\x6e\x65\x6c\x72\x75\x62\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x30\x3d\x74\x6f\x72\x72\x65\x6a\x6f\x6e\x63\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x31\x3d\x74\x6f\x72\x72\x65\x6d\x65\x6e\x67\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x32\x3d\x74\x6f\x72\x72\x65\x6d\x6f\x63\x68\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x33\x3d\x74\x6f\x72\x72\x65\x6f\x72\x67\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x34\x3d\x74\x6f\x72\x72\x65\x71\x75\x65\x6d\x61\x64\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x35\x3d\x76\x61\x6c\x64\x61\x73\x74\x69\x6c\x6c\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x36\x3d\x76\x61\x6c\x64\x65\x63\x61\x6e\x61\x73\x64\x65\x74\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x37\x3d\x76\x61\x6c\x64\x65\x66\x75\x65\x6e\x74\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x38\x3d\x76\x61\x6c\x64\x65\x68\x75\x6e\x63\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x31\x39\x39\x3d\x76\x61\x6c\x64\x65\x69\x6e\x69\x67\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x30\x3d\x76\x61\x6c\x64\x65\x6c\x61\x63\x61\x73\x61\x64\x65\x74\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x31\x3d\x76\x61\x6c\x64\x65\x6d\x6f\x72\x61\x6c\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x32\x3d\x76\x61\x6c\x64\x65\x6f\x62\x69\x73\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x33\x3d\x76\x61\x6c\x64\x65\x73\x61\x6c\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x34\x3d\x76\x61\x6c\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x35\x3d\x76\x61\x6c\x65\x6e\x63\x69\x61\x64\x65\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x36\x3d\x76\x61\x6c\x76\x65\x72\x64\x65\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x37\x3d\x76\x61\x6c\x76\x65\x72\x64\x65\x64\x65\x6c\x66\x72\x65\x73\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x38\x3d\x76\x65\x67\x61\x76\x69\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x30\x39\x3d\x76\x69\x61\x6e\x64\x61\x72\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x30\x3d\x76\x69\x6c\x6c\x61\x64\x65\x6c\x63\x61\x6d\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x31\x3d\x76\x69\x6c\x6c\x61\x64\x65\x6c\x72\x65\x79\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x32\x3d\x76\x69\x6c\x6c\x61\x6d\x65\x73\x69\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x33\x3d\x76\x69\x6c\x6c\x61\x6d\x69\x65\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x34\x3d\x76\x69\x6c\x6c\x61\x6e\x75\x65\x76\x61\x64\x65\x6c\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x35\x3d\x76\x69\x6c\x6c\x61\x72\x64\x65\x6c\x70\x65\x64\x72\x6f\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x36\x3d\x76\x69\x6c\x6c\x61\x72\x64\x65\x70\x6c\x61\x73\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x37\x3d\x76\x69\x6c\x6c\x61\x73\x62\x75\x65\x6e\x61\x73\x64\x65\x67\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x38\x3d\x7a\x61\x72\x7a\x61\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x31\x39\x3d\x7a\x61\x72\x7a\x61\x64\x65\x6d\x6f\x6e\x74\x61\x6e\x63\x68\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x30\x3d\x7a\x61\x72\x7a\x61\x6c\x61\x6d\x61\x79\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x31\x3d\x7a\x6f\x72\x69\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x32\x3d\x72\x6f\x73\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x33\x3d\x76\x65\x67\x61\x76\x69\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x34\x3d\x61\x6c\x61\x67\x6f\x6e\x64\x65\x6c\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x35\x3d\x74\x69\x65\x74\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x36\x3d\x76\x61\x6c\x64\x65\x73\x61\x6c\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x37\x3d\x6e\x61\x76\x61\x74\x72\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x38\x3d\x72\x69\x76\x65\x72\x61\x64\x65\x66\x72\x65\x73\x6e\x65\x64\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x32\x39\x3d\x65\x6c\x6d\x73\x61\x6e\x67\x69\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x30\x3d\x74\x61\x6a\x6f\x73\x61\x6c\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x31\x3d\x76\x61\x6c\x6c\x65\x61\x6d\x62\x72\x6f\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x32\x3d\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x76\x61\x6c\x6c\x65\x64\x65\x6c\x61\x6c\x61\x67\x6f\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x33\x3d\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x76\x61\x6c\x6c\x65\x64\x65\x6c\x6a\x65\x72\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x34\x3d\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x76\x65\x67\x61\x73\x61\x6c\x74\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x35\x3d\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x36\x3d\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x7a\x6f\x6e\x61\x63\x65\x6e\x74\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x37\x3d\x76\x69\x6c\x6c\x75\x65\x72\x63\x61\x73\x2d\x69\x62\x6f\x72\x65\x73\x2d\x6a\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x38\x3d\x77\x77\x77\x2e\x61\x62\x61\x64\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x33\x39\x3d\x77\x77\x77\x2e\x61\x62\x65\x72\x74\x75\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x30\x3d\x77\x77\x77\x2e\x61\x63\x65\x62\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x31\x3d\x77\x77\x77\x2e\x61\x63\x65\x68\x75\x63\x68\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x32\x3d\x77\x77\x77\x2e\x61\x63\x65\x69\x74\x75\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x33\x3d\x77\x77\x77\x2e\x61\x68\x69\x67\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x34\x3d\x77\x77\x77\x2e\x61\x6c\x61\x67\x6f\x6e\x64\x65\x6c\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x35\x3d\x77\x77\x77\x2e\x61\x6c\x63\x6f\x6c\x6c\x61\x72\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x36\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x61\x6c\x62\x61\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x37\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x38\x3d\x77\x77\x77\x2e\x61\x6c\x63\x75\x65\x73\x63\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x34\x39\x3d\x77\x77\x77\x2e\x61\x6c\x64\x65\x61\x63\x65\x6e\x74\x65\x6e\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x30\x3d\x77\x77\x77\x2e\x61\x6c\x64\x65\x61\x64\x65\x6c\x63\x61\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x31\x3d\x77\x77\x77\x2e\x6c\x61\x61\x6c\x64\x65\x61\x64\x65\x6c\x6f\x62\x69\x73\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x32\x3d\x77\x77\x77\x2e\x61\x6c\x64\x65\x61\x6e\x75\x65\x76\x61\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x33\x3d\x77\x77\x77\x2e\x61\x6c\x64\x65\x61\x6e\x75\x65\x76\x61\x64\x65\x6c\x63\x61\x6d\x69\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x34\x3d\x77\x77\x77\x2e\x61\x6c\x64\x65\x68\x75\x65\x6c\x61\x64\x65\x6c\x6a\x65\x72\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x35\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x61\x6c\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x36\x3d\x77\x77\x77\x2e\x61\x6c\x69\x73\x65\x64\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x37\x3d\x77\x77\x77\x2e\x61\x6c\x6d\x61\x72\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x38\x3d\x77\x77\x77\x2e\x61\x6c\x6d\x6f\x68\x61\x72\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x35\x39\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x61\x72\x72\x6f\x79\x6f\x64\x65\x6c\x61\x6c\x75\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x30\x3d\x77\x77\x77\x2e\x61\x72\x72\x6f\x79\x6f\x6d\x6f\x6c\x69\x6e\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x31\x3d\x77\x77\x77\x2e\x61\x72\x72\x6f\x79\x6f\x6d\x6f\x6c\x69\x6e\x6f\x73\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x32\x3d\x77\x77\x77\x2e\x62\x61\x6e\x6f\x73\x64\x65\x6d\x6f\x6e\x74\x65\x6d\x61\x79\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x33\x3d\x77\x77\x77\x2e\x62\x61\x72\x72\x61\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x34\x3d\x77\x77\x77\x2e\x62\x65\x6c\x76\x69\x73\x64\x65\x6d\x6f\x6e\x72\x6f\x79\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x35\x3d\x77\x77\x77\x2e\x62\x65\x6e\x71\x75\x65\x72\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x36\x3d\x77\x77\x77\x2e\x62\x65\x72\x72\x6f\x63\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x37\x3d\x77\x77\x77\x2e\x62\x65\x72\x7a\x6f\x63\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x38\x3d\x77\x77\x77\x2e\x62\x6f\x68\x6f\x6e\x61\x6c\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x36\x39\x3d\x77\x77\x77\x2e\x62\x6f\x74\x69\x6a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x30\x3d\x77\x77\x77\x2e\x62\x72\x6f\x7a\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x31\x3d\x77\x77\x77\x2e\x63\x61\x62\x61\x6e\x61\x73\x64\x65\x6c\x63\x61\x73\x74\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x32\x3d\x77\x77\x77\x2e\x63\x61\x62\x65\x7a\x61\x62\x65\x6c\x6c\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x33\x3d\x77\x77\x77\x2e\x63\x61\x62\x65\x7a\x75\x65\x6c\x61\x64\x65\x6c\x76\x61\x6c\x6c\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x34\x3d\x77\x77\x77\x2e\x63\x61\x62\x72\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x35\x3d\x77\x77\x77\x2e\x63\x61\x63\x68\x6f\x72\x72\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x36\x3d\x77\x77\x77\x2e\x63\x61\x64\x61\x6c\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x37\x3d\x77\x77\x77\x2e\x63\x61\x6c\x7a\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x38\x3d\x77\x77\x77\x2e\x63\x61\x6d\x69\x6e\x6f\x6d\x6f\x72\x69\x73\x63\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x37\x39\x3d\x77\x77\x77\x2e\x63\x61\x6d\x70\x69\x6c\x6c\x6f\x64\x65\x64\x65\x6c\x65\x69\x74\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x30\x3d\x77\x77\x77\x2e\x63\x61\x6d\x70\x6f\x6c\x75\x67\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x31\x3d\x77\x77\x77\x2e\x63\x61\x6e\x61\x6d\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x32\x3d\x77\x77\x77\x2e\x63\x61\x6e\x61\x76\x65\x72\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x33\x3d\x77\x77\x77\x2e\x63\x61\x72\x62\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x34\x3d\x77\x77\x77\x2e\x63\x61\x72\x63\x61\x62\x6f\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x35\x3d\x77\x77\x77\x2e\x63\x61\x72\x72\x61\x73\x63\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x36\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x72\x64\x65\x63\x61\x63\x65\x72\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x37\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x72\x64\x65\x70\x61\x6c\x6f\x6d\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x38\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x72\x65\x73\x64\x65\x6c\x61\x73\x68\x75\x72\x64\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x38\x39\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x73\x64\x65\x64\x6f\x6e\x61\x6e\x74\x6f\x6e\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x30\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x73\x64\x65\x64\x6f\x6e\x67\x6f\x6d\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x31\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x73\x64\x65\x6c\x63\x61\x73\x74\x61\x6e\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x32\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x73\x64\x65\x6c\x6d\x6f\x6e\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x33\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x73\x64\x65\x6d\x69\x6c\x6c\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x34\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x73\x64\x65\x6d\x69\x72\x61\x76\x65\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x35\x3d\x77\x77\x77\x2e\x63\x61\x73\x61\x74\x65\x6a\x61\x64\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x36\x3d\x77\x77\x77\x2e\x63\x61\x73\x69\x6c\x6c\x61\x73\x64\x65\x63\x6f\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x37\x3d\x77\x77\x77\x2e\x63\x61\x73\x74\x61\x6e\x61\x72\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x38\x3d\x77\x77\x77\x2e\x63\x65\x63\x6c\x61\x76\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x32\x39\x39\x3d\x77\x77\x77\x2e\x63\x65\x64\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x30\x3d\x77\x77\x77\x2e\x63\x65\x72\x65\x7a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x31\x3d\x77\x77\x77\x2e\x63\x69\x6c\x6c\x65\x72\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x32\x3d\x77\x77\x77\x2e\x63\x6f\x6c\x6c\x61\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x33\x3d\x77\x77\x77\x2e\x63\x6f\x6e\x71\x75\x69\x73\x74\x61\x64\x65\x6c\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x34\x3d\x77\x77\x77\x2e\x63\x6f\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x35\x3d\x77\x77\x77\x2e\x63\x75\x61\x63\x6f\x73\x64\x65\x79\x75\x73\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x36\x3d\x77\x77\x77\x2e\x6c\x61\x63\x75\x6d\x62\x72\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x37\x3d\x77\x77\x77\x2e\x64\x65\x6c\x65\x69\x74\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x38\x3d\x77\x77\x77\x2e\x64\x65\x73\x63\x61\x72\x67\x61\x6d\x61\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x30\x39\x3d\x77\x77\x77\x2e\x65\x6c\x6a\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x30\x3d\x77\x77\x77\x2e\x65\x73\x63\x75\x72\x69\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x31\x3d\x77\x77\x77\x2e\x66\x72\x65\x73\x6e\x65\x64\x6f\x73\x6f\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x32\x3d\x77\x77\x77\x2e\x67\x61\x6c\x69\x73\x74\x65\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x33\x3d\x77\x77\x77\x2e\x67\x61\x72\x63\x69\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x34\x3d\x77\x77\x77\x2e\x6c\x61\x67\x61\x72\x67\x61\x6e\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x35\x3d\x77\x77\x77\x2e\x67\x61\x72\x67\x61\x6e\x74\x61\x6c\x61\x6f\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x36\x3d\x77\x77\x77\x2e\x67\x61\x72\x67\x61\x6e\x74\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x37\x3d\x77\x77\x77\x2e\x67\x61\x72\x67\x75\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x38\x3d\x77\x77\x77\x2e\x67\x61\x72\x72\x6f\x76\x69\x6c\x6c\x61\x73\x64\x65\x61\x6c\x63\x6f\x6e\x65\x74\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x31\x39\x3d\x77\x77\x77\x2e\x67\x61\x72\x76\x69\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x30\x3d\x77\x77\x77\x2e\x67\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x31\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x65\x6c\x67\x6f\x72\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x32\x3d\x77\x77\x77\x2e\x6c\x61\x67\x72\x61\x6e\x6a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x33\x3d\x77\x77\x77\x2e\x6c\x61\x67\x72\x61\x6e\x6a\x61\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x34\x3d\x77\x77\x77\x2e\x61\x79\x75\x6e\x74\x61\x6d\x69\x65\x6e\x74\x6f\x64\x65\x67\x75\x61\x64\x61\x6c\x75\x70\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x35\x3d\x77\x77\x77\x2e\x67\x75\x69\x6a\x6f\x64\x65\x63\x6f\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x36\x3d\x77\x77\x77\x2e\x67\x75\x69\x6a\x6f\x64\x65\x67\x61\x6c\x69\x73\x74\x65\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x37\x3d\x77\x77\x77\x2e\x67\x75\x69\x6a\x6f\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x38\x3d\x77\x77\x77\x2e\x67\x75\x69\x6a\x6f\x64\x65\x73\x61\x6e\x74\x61\x62\x61\x72\x62\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x32\x39\x3d\x77\x77\x77\x2e\x68\x65\x72\x67\x75\x69\x6a\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x30\x3d\x77\x77\x77\x2e\x68\x65\x72\x6e\x61\x6e\x70\x65\x72\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x31\x3d\x77\x77\x77\x2e\x68\x65\x72\x72\x65\x72\x61\x64\x65\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x32\x3d\x77\x77\x77\x2e\x68\x65\x72\x72\x65\x72\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x33\x3d\x77\x77\x77\x2e\x68\x65\x72\x76\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x34\x3d\x77\x77\x77\x2e\x68\x69\x67\x75\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x35\x3d\x77\x77\x77\x2e\x68\x69\x6e\x6f\x6a\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x36\x3d\x77\x77\x77\x2e\x68\x6f\x6c\x67\x75\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x37\x3d\x77\x77\x77\x2e\x68\x6f\x79\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x38\x3d\x77\x77\x77\x2e\x68\x75\x65\x6c\x61\x67\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x33\x39\x3d\x77\x77\x77\x2e\x69\x62\x61\x68\x65\x72\x6e\x61\x6e\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x30\x3d\x77\x77\x77\x2e\x6a\x61\x72\x61\x69\x63\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x31\x3d\x77\x77\x77\x2e\x6a\x61\x72\x61\x69\x7a\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x32\x3d\x77\x77\x77\x2e\x6a\x61\x72\x61\x6e\x64\x69\x6c\x6c\x61\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x33\x3d\x77\x77\x77\x2e\x6a\x61\x72\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x34\x3d\x77\x77\x77\x2e\x6a\x65\x72\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x35\x3d\x77\x77\x77\x2e\x6c\x61\x64\x72\x69\x6c\x6c\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x36\x3d\x77\x77\x77\x2e\x6c\x6f\x67\x72\x6f\x73\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x37\x3d\x77\x77\x77\x2e\x6c\x6f\x73\x61\x72\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x38\x3d\x77\x77\x77\x2e\x6d\x61\x64\x72\x69\x67\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x34\x39\x3d\x77\x77\x77\x2e\x6d\x61\x64\x72\x69\x67\x61\x6c\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x30\x3d\x77\x77\x77\x2e\x6d\x61\x64\x72\x6f\x6e\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x31\x3d\x77\x77\x77\x2e\x6d\x61\x6a\x61\x64\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x32\x3d\x77\x77\x77\x2e\x6d\x61\x6c\x70\x61\x72\x74\x69\x64\x61\x64\x65\x63\x61\x63\x65\x72\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x33\x3d\x77\x77\x77\x2e\x6d\x61\x6c\x70\x61\x72\x74\x69\x64\x61\x64\x65\x70\x6c\x61\x73\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x34\x3d\x77\x77\x77\x2e\x6d\x61\x72\x63\x68\x61\x67\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x35\x3d\x77\x77\x77\x2e\x6d\x61\x74\x61\x64\x65\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x36\x3d\x77\x77\x77\x2e\x6d\x65\x6d\x62\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x37\x3d\x77\x77\x77\x2e\x6d\x65\x73\x61\x73\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x38\x3d\x77\x77\x77\x2e\x6d\x69\x61\x6a\x61\x64\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x35\x39\x3d\x77\x77\x77\x2e\x6d\x69\x6c\x6c\x61\x6e\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x30\x3d\x77\x77\x77\x2e\x6d\x69\x72\x61\x62\x65\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x31\x3d\x77\x77\x77\x2e\x6d\x6f\x68\x65\x64\x61\x73\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x32\x3d\x77\x77\x77\x2e\x6d\x6f\x6e\x72\x6f\x79\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x33\x3d\x77\x77\x77\x2e\x6d\x6f\x6e\x74\x61\x6e\x63\x68\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x34\x3d\x77\x77\x77\x2e\x6d\x6f\x6e\x74\x65\x68\x65\x72\x6d\x6f\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x35\x3d\x77\x77\x77\x2e\x6d\x6f\x72\x61\x6c\x65\x6a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x36\x3d\x77\x77\x77\x2e\x6d\x6f\x72\x63\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x37\x3d\x77\x77\x77\x2e\x6e\x61\x76\x61\x63\x6f\x6e\x63\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x38\x3d\x77\x77\x77\x2e\x6e\x61\x76\x61\x6c\x76\x69\x6c\x6c\x61\x72\x64\x65\x69\x62\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x36\x39\x3d\x77\x77\x77\x2e\x6e\x61\x76\x61\x6c\x6d\x6f\x72\x61\x6c\x64\x65\x6c\x61\x6d\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x30\x3d\x77\x77\x77\x2e\x6e\x61\x76\x61\x73\x64\x65\x6c\x6d\x61\x64\x72\x6f\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x31\x3d\x77\x77\x77\x2e\x6e\x61\x76\x61\x74\x72\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x32\x3d\x77\x77\x77\x2e\x6e\x61\x76\x65\x7a\x75\x65\x6c\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x33\x3d\x77\x77\x77\x2e\x6e\x75\x6e\x6f\x6d\x6f\x72\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x34\x3d\x77\x77\x77\x2e\x6f\x6c\x69\x76\x61\x64\x65\x70\x6c\x61\x73\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x35\x3d\x77\x77\x77\x2e\x70\x61\x6c\x6f\x6d\x65\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x36\x3d\x77\x77\x77\x2e\x70\x61\x73\x61\x72\x6f\x6e\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x37\x3d\x77\x77\x77\x2e\x70\x65\x64\x72\x6f\x73\x6f\x64\x65\x61\x63\x69\x6d\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x38\x3d\x77\x77\x77\x2e\x70\x65\x72\x61\x6c\x65\x64\x61\x64\x65\x6c\x61\x6d\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x37\x39\x3d\x77\x77\x77\x2e\x70\x65\x72\x61\x6c\x65\x64\x61\x64\x65\x73\x61\x6e\x72\x6f\x6d\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x30\x3d\x77\x77\x77\x2e\x70\x65\x72\x61\x6c\x65\x73\x64\x65\x6c\x70\x75\x65\x72\x74\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x31\x3d\x77\x77\x77\x2e\x70\x65\x73\x63\x75\x65\x7a\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x32\x3d\x77\x77\x77\x2e\x6c\x61\x70\x65\x73\x67\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x33\x3d\x77\x77\x77\x2e\x70\x69\x65\x64\x72\x61\x73\x61\x6c\x62\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x34\x3d\x77\x77\x77\x2e\x70\x69\x6e\x6f\x66\x72\x61\x6e\x71\x75\x65\x61\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x35\x3d\x77\x77\x77\x2e\x70\x69\x6f\x72\x6e\x61\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x36\x3d\x77\x77\x77\x2e\x70\x6c\x61\x73\x65\x6e\x7a\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x37\x3d\x77\x77\x77\x2e\x70\x6f\x72\x74\x61\x6a\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x38\x3d\x77\x77\x77\x2e\x70\x6f\x72\x74\x65\x7a\x75\x65\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x38\x39\x3d\x77\x77\x77\x2e\x70\x6f\x7a\x75\x65\x6c\x6f\x64\x65\x7a\x61\x72\x7a\x6f\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x30\x3d\x77\x77\x77\x2e\x70\x75\x65\x62\x6c\x6f\x6e\x75\x65\x76\x6f\x64\x65\x6d\x69\x72\x61\x6d\x6f\x6e\x74\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x31\x3d\x77\x77\x77\x2e\x70\x75\x65\x72\x74\x6f\x64\x65\x73\x61\x6e\x74\x61\x63\x72\x75\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x32\x3d\x77\x77\x77\x2e\x72\x65\x62\x6f\x6c\x6c\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x33\x3d\x77\x77\x77\x2e\x72\x69\x6f\x6c\x6f\x62\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x34\x3d\x77\x77\x77\x2e\x72\x6f\x62\x6c\x65\x64\x69\x6c\x6c\x6f\x64\x65\x67\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x35\x3d\x77\x77\x77\x2e\x72\x6f\x62\x6c\x65\x64\x69\x6c\x6c\x6f\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x36\x3d\x77\x77\x77\x2e\x72\x6f\x62\x6c\x65\x64\x69\x6c\x6c\x6f\x64\x65\x74\x72\x75\x6a\x69\x6c\x6c\x6f\x2c\x44\x4e\x53\x2e\x33\x39\x37\x3d\x77\x77\x77\x2e\x72\x6f\x62\x6c\x65\x64\x6f\x6c\x6c\x61\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x38\x3d\x77\x77\x77\x2e\x72\x6f\x6d\x61\x6e\x67\x6f\x72\x64\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x33\x39\x39\x3d\x77\x77\x77\x2e\x72\x75\x61\x6e\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x30\x3d\x77\x77\x77\x2e\x73\x61\x6c\x6f\x72\x69\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x31\x3d\x77\x77\x77\x2e\x73\x61\x6c\x76\x61\x74\x69\x65\x72\x72\x61\x64\x65\x73\x61\x6e\x74\x69\x61\x67\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x32\x3d\x77\x77\x77\x2e\x73\x61\x6e\x6d\x61\x72\x74\x69\x6e\x64\x65\x74\x72\x65\x76\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x33\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x73\x61\x6e\x74\x61\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x34\x3d\x77\x77\x77\x2e\x73\x61\x6e\x74\x61\x63\x72\x75\x7a\x64\x65\x6c\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x35\x3d\x77\x77\x77\x2e\x73\x61\x6e\x74\x61\x63\x72\x75\x7a\x64\x65\x70\x61\x6e\x69\x61\x67\x75\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x36\x3d\x77\x77\x77\x2e\x73\x61\x6e\x74\x61\x6d\x61\x72\x74\x61\x64\x65\x6d\x61\x67\x61\x73\x63\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x37\x3d\x77\x77\x77\x2e\x73\x61\x6e\x74\x69\x61\x67\x6f\x64\x65\x6c\x63\x61\x6d\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x38\x3d\x77\x77\x77\x2e\x73\x61\x6e\x74\x69\x62\x61\x6e\x65\x7a\x65\x6c\x61\x6c\x74\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x30\x39\x3d\x77\x77\x77\x2e\x73\x61\x6e\x74\x69\x62\x61\x6e\x65\x7a\x65\x6c\x62\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x30\x3d\x77\x77\x77\x2e\x73\x61\x75\x63\x65\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x31\x3d\x77\x77\x77\x2e\x73\x65\x67\x75\x72\x61\x64\x65\x74\x6f\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x32\x3d\x77\x77\x77\x2e\x73\x65\x72\x72\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x33\x3d\x77\x77\x77\x2e\x73\x65\x72\x72\x65\x6a\x6f\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x34\x3d\x77\x77\x77\x2e\x73\x69\x65\x72\x72\x61\x64\x65\x66\x75\x65\x6e\x74\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x35\x3d\x77\x77\x77\x2e\x74\x61\x6c\x61\x76\x61\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x36\x3d\x77\x77\x77\x2e\x74\x61\x6c\x61\x76\x65\x72\x75\x65\x6c\x61\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x37\x3d\x77\x77\x77\x2e\x74\x61\x6c\x61\x79\x75\x65\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x38\x3d\x77\x77\x77\x2e\x74\x65\x6a\x65\x64\x61\x64\x65\x74\x69\x65\x74\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x31\x39\x3d\x77\x77\x77\x2e\x74\x6f\x72\x69\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x30\x3d\x77\x77\x77\x2e\x74\x6f\x72\x6e\x61\x76\x61\x63\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x31\x3d\x77\x77\x77\x2e\x61\x79\x74\x6f\x65\x6c\x74\x6f\x72\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x32\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x63\x69\x6c\x6c\x61\x64\x65\x6c\x6f\x73\x61\x6e\x67\x65\x6c\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x33\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x63\x69\x6c\x6c\x61\x73\x64\x65\x6c\x61\x74\x69\x65\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x34\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x64\x65\x64\x6f\x6e\x6d\x69\x67\x75\x65\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x35\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x64\x65\x73\x61\x6e\x74\x61\x6d\x61\x72\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x36\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x6a\x6f\x6e\x65\x6c\x72\x75\x62\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x37\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x6a\x6f\x6e\x63\x69\x6c\x6c\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x38\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x6d\x65\x6e\x67\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x32\x39\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x6d\x6f\x63\x68\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x30\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x6f\x72\x67\x61\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x31\x3d\x77\x77\x77\x2e\x74\x6f\x72\x72\x65\x71\x75\x65\x6d\x61\x64\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x32\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x61\x73\x74\x69\x6c\x6c\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x33\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x63\x61\x6e\x61\x73\x64\x65\x74\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x34\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x66\x75\x65\x6e\x74\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x35\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x68\x75\x6e\x63\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x36\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x69\x6e\x69\x67\x6f\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x37\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x6c\x61\x63\x61\x73\x61\x64\x65\x74\x61\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x38\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x6d\x6f\x72\x61\x6c\x65\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x33\x39\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x6f\x62\x69\x73\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x30\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x73\x61\x6c\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x31\x3d\x77\x77\x77\x2e\x76\x61\x6c\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x32\x3d\x77\x77\x77\x2e\x76\x61\x6c\x65\x6e\x63\x69\x61\x64\x65\x61\x6c\x63\x61\x6e\x74\x61\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x33\x3d\x77\x77\x77\x2e\x76\x61\x6c\x76\x65\x72\x64\x65\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x34\x3d\x77\x77\x77\x2e\x76\x61\x6c\x76\x65\x72\x64\x65\x64\x65\x6c\x66\x72\x65\x73\x6e\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x35\x3d\x77\x77\x77\x2e\x76\x65\x67\x61\x76\x69\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x36\x3d\x77\x77\x77\x2e\x76\x69\x61\x6e\x64\x61\x72\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x37\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x64\x65\x6c\x63\x61\x6d\x70\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x38\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x64\x65\x6c\x72\x65\x79\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x34\x39\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x6d\x65\x73\x69\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x30\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x6d\x69\x65\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x31\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x6e\x75\x65\x76\x61\x64\x65\x6c\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x32\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x72\x64\x65\x6c\x70\x65\x64\x72\x6f\x73\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x33\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x72\x64\x65\x70\x6c\x61\x73\x65\x6e\x63\x69\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x34\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x61\x73\x62\x75\x65\x6e\x61\x73\x64\x65\x67\x61\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x35\x3d\x77\x77\x77\x2e\x7a\x61\x72\x7a\x61\x64\x65\x67\x72\x61\x6e\x61\x64\x69\x6c\x6c\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x36\x3d\x77\x77\x77\x2e\x7a\x61\x72\x7a\x61\x64\x65\x6d\x6f\x6e\x74\x61\x6e\x63\x68\x65\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x37\x3d\x77\x77\x77\x2e\x7a\x61\x72\x7a\x61\x6c\x61\x6d\x61\x79\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x38\x3d\x77\x77\x77\x2e\x7a\x6f\x72\x69\x74\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x35\x39\x3d\x77\x77\x77\x2e\x72\x6f\x73\x61\x6c\x65\x6a\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x30\x3d\x77\x77\x77\x2e\x76\x65\x67\x61\x76\x69\x61\x6e\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x31\x3d\x77\x77\x77\x2e\x61\x6c\x61\x67\x6f\x6e\x64\x65\x6c\x72\x69\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x32\x3d\x77\x77\x77\x2e\x74\x69\x65\x74\x61\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x33\x3d\x77\x77\x77\x2e\x76\x61\x6c\x64\x65\x73\x61\x6c\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x34\x3d\x77\x77\x77\x2e\x6e\x61\x76\x61\x74\x72\x61\x73\x69\x65\x72\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x35\x3d\x77\x77\x77\x2e\x72\x69\x76\x65\x72\x61\x64\x65\x66\x72\x65\x73\x6e\x65\x64\x6f\x73\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x36\x3d\x77\x77\x77\x2e\x65\x6c\x6d\x73\x61\x6e\x67\x69\x6c\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x37\x3d\x77\x77\x77\x2e\x74\x61\x6a\x6f\x73\x61\x6c\x6f\x72\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x38\x3d\x77\x77\x77\x2e\x76\x61\x6c\x6c\x65\x61\x6d\x62\x72\x6f\x7a\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x36\x39\x3d\x77\x77\x77\x2e\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x76\x61\x6c\x6c\x65\x64\x65\x6c\x61\x6c\x61\x67\x6f\x6e\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x37\x30\x3d\x77\x77\x77\x2e\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x76\x61\x6c\x6c\x65\x64\x65\x6c\x6a\x65\x72\x74\x65\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x37\x31\x3d\x77\x77\x77\x2e\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x76\x65\x67\x61\x73\x61\x6c\x74\x61\x73\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x37\x32\x3d\x77\x77\x77\x2e\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x64\x65\x6c\x61\x76\x65\x72\x61\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x37\x33\x3d\x77\x77\x77\x2e\x6d\x61\x6e\x63\x6f\x6d\x75\x6e\x69\x64\x61\x64\x7a\x6f\x6e\x61\x63\x65\x6e\x74\x72\x6f\x2e\x65\x73\x2c\x44\x4e\x53\x2e\x34\x37\x34\x3d\x77\x77\x77\x2e\x76\x69\x6c\x6c\x75\x65\x72\x63\x61\x73\x2d\x69\x62\x6f\x72\x65\x73\x2d\x6a\x61\x72\x61\x2e\x65\x73", + 12589 }, + .can_encode = 1 } }; struct encode_tests_st { @@ -226,95 +215,75 @@ struct encode_tests_st { struct encode_tests_st encode_tests[] = { { - .name = "invalid DN", - .str = - "CDD=Cindy Lauper,UID=clauper,OU=sleeping dept.,O=Koko inc.,ST=Attiki,C=GR", - .failure = GNUTLS_E_PARSING_ERROR, - }, - { - .name = "invalid DN2", - .str = "CD,O=Koko", - .failure = GNUTLS_E_PARSING_ERROR, - }, - { - .name = "invalid DN3", - .str = "CN,O=Koko", - .failure = GNUTLS_E_PARSING_ERROR, - }, - { - .name = "DN containing '+'", - .str = - "CN=Cindy Lauper,UID=clauper+OU=sleeping dept.,O=Koko inc.,ST=Attiki,C=GR", - .failure = GNUTLS_E_PARSING_ERROR, - }, - { - .name = "DN containing unsupported escaped chars", - .str = "CN=\\CD\\AB\\19", - .failure = GNUTLS_E_PARSING_ERROR, - }, - { - .name = "encode C", - .str = "C=ES", - .raw = {(void *) - "\x30\x0d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x45\x53", - 15}, - .failure = GNUTLS_E_SUCCESS}, - { - .name = "encode raw C", - .str = "C=#13024553", - .raw = {(void *) - "\x30\x0d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x45\x53", - 15}, - .failure = 0}, - { - .name = "encode with slash #", - .str = "C=\\#S", - .raw = {(void *) - "\x30\x0d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x23\x53", - 15}, - .failure = 0}, - { - .name = "encode with spaces", - .str = "C=\\ \\ ", - .raw = {(void *) - "\x30\x0d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x20\x20", - 15}, - .failure = 0}, - { - .name = "encode with comma", - .str = "C=\\,\\ ", - .raw = {(void *) - "\x30\x0d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x2c\x20", - 15}, - .failure = 0}, + .name = "invalid DN", + .str = "CDD=Cindy Lauper,UID=clauper,OU=sleeping dept.,O=Koko inc.,ST=Attiki,C=GR", + .failure = GNUTLS_E_PARSING_ERROR, + }, { - .name = "encode with escaped plus", - .str = "C=\\+\\ ", - .raw = {(void *) - "\x30\x0d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x2b\x20", - 15}, - .failure = 0}, + .name = "invalid DN2", + .str = "CD,O=Koko", + .failure = GNUTLS_E_PARSING_ERROR, + }, { - .name = "encode with escaped string", - .str = "C=\\,\\+\\;\\<\\>\\\\", - .raw = {(void *) - "\x30\x11\x31\x0f\x30\x0d\x06\x03\x55\x04\x06\x13\x06\x2c\x2b\x3b\x3c\x3e\x5c", - 19}, - .failure = 0}, + .name = "invalid DN3", + .str = "CN,O=Koko", + .failure = GNUTLS_E_PARSING_ERROR, + }, { - .name = "encode with combo", - .str = "CN=\\#XXX,OU=\\ X\\ ,C=\\,\\ ", - .raw = {(void *) - "\x30\x2b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x2c\x20\x31\x0d\x30\x0b\x06\x03\x55\x04\x0b\x13\x04\x20\x20\x58\x20\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x0c\x04\x23\x58\x58\x58", - 45}, - .failure = 0}, + .name = "DN containing '+'", + .str = "CN=Cindy Lauper,UID=clauper+OU=sleeping dept.,O=Koko inc.,ST=Attiki,C=GR", + .failure = GNUTLS_E_PARSING_ERROR, + }, { - .name = "encode invalid hex raw C", - .str = "C=#1302455", - .raw = {(void *) - "\x30\x0d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x45\x53", - 15}, - .failure = GNUTLS_E_PARSING_ERROR} + .name = "DN containing unsupported escaped chars", + .str = "CN=\\CD\\AB\\19", + .failure = GNUTLS_E_PARSING_ERROR, + }, + { .name = "encode C", + .str = "C=ES", + .raw = { (void *)"\x30\x0d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x45\x53", + 15 }, + .failure = GNUTLS_E_SUCCESS }, + { .name = "encode raw C", + .str = "C=#13024553", + .raw = { (void *)"\x30\x0d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x45\x53", + 15 }, + .failure = 0 }, + { .name = "encode with slash #", + .str = "C=\\#S", + .raw = { (void *)"\x30\x0d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x23\x53", + 15 }, + .failure = 0 }, + { .name = "encode with spaces", + .str = "C=\\ \\ ", + .raw = { (void *)"\x30\x0d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x20\x20", + 15 }, + .failure = 0 }, + { .name = "encode with comma", + .str = "C=\\,\\ ", + .raw = { (void *)"\x30\x0d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x2c\x20", + 15 }, + .failure = 0 }, + { .name = "encode with escaped plus", + .str = "C=\\+\\ ", + .raw = { (void *)"\x30\x0d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x2b\x20", + 15 }, + .failure = 0 }, + { .name = "encode with escaped string", + .str = "C=\\,\\+\\;\\<\\>\\\\", + .raw = { (void *)"\x30\x11\x31\x0f\x30\x0d\x06\x03\x55\x04\x06\x13\x06\x2c\x2b\x3b\x3c\x3e\x5c", + 19 }, + .failure = 0 }, + { .name = "encode with combo", + .str = "CN=\\#XXX,OU=\\ X\\ ,C=\\,\\ ", + .raw = { (void *)"\x30\x2b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x2c\x20\x31\x0d\x30\x0b\x06\x03\x55\x04\x0b\x13\x04\x20\x20\x58\x20\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x0c\x04\x23\x58\x58\x58", + 45 }, + .failure = 0 }, + { .name = "encode invalid hex raw C", + .str = "C=#1302455", + .raw = { (void *)"\x30\x0d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x45\x53", + 15 }, + .failure = GNUTLS_E_PARSING_ERROR } }; void doit(void) diff --git a/tests/x509-dn.c b/tests/x509-dn.c index 5f0ede618c..bf38dcf957 100644 --- a/tests/x509-dn.c +++ b/tests/x509-dn.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -37,22 +37,22 @@ #include "utils.h" static const char cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICHjCCAYmgAwIBAgIERiYdNzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTI3WhcNMDgwNDE3MTMyOTI3WjAdMRsw\n" - "GQYDVQQDExJHbnVUTFMgdGVzdCBjbGllbnQwgZwwCwYJKoZIhvcNAQEBA4GMADCB\n" - "iAKBgLtmQ/Xyxde2jMzF3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeL\n" - "ZIkiW8DdU3w77XwEu4C5KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKN\n" - "zj2AC41179gAgY8oBAOgIo1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjdjB0MAwG\n" - "A1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUDAweg\n" - "ADAdBgNVHQ4EFgQUTLkKm/odNON+3svSBxX+odrLaJEwHwYDVR0jBBgwFoAU6Twc\n" - "+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBALujmBJVZnvaTXr9cFRJ\n" - "jpfc/3X7sLUsMvumcDE01ls/cG5mIatmiyEU9qI3jbgUf82z23ON/acwJf875D3/\n" - "U7jyOsBJ44SEQITbin2yUeJMIm1tievvdNXBDfW95AM507ShzP12sfiJkJfjjdhy\n" - "dc8Siq5JojruiMizAf0pA7in\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIICHjCCAYmgAwIBAgIERiYdNzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTI3WhcNMDgwNDE3MTMyOTI3WjAdMRsw\n" + "GQYDVQQDExJHbnVUTFMgdGVzdCBjbGllbnQwgZwwCwYJKoZIhvcNAQEBA4GMADCB\n" + "iAKBgLtmQ/Xyxde2jMzF3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeL\n" + "ZIkiW8DdU3w77XwEu4C5KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKN\n" + "zj2AC41179gAgY8oBAOgIo1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjdjB0MAwG\n" + "A1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUDAweg\n" + "ADAdBgNVHQ4EFgQUTLkKm/odNON+3svSBxX+odrLaJEwHwYDVR0jBBgwFoAU6Twc\n" + "+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBALujmBJVZnvaTXr9cFRJ\n" + "jpfc/3X7sLUsMvumcDE01ls/cG5mIatmiyEU9qI3jbgUf82z23ON/acwJf875D3/\n" + "U7jyOsBJ44SEQITbin2yUeJMIm1tievvdNXBDfW95AM507ShzP12sfiJkJfjjdhy\n" + "dc8Siq5JojruiMizAf0pA7in\n" + "-----END CERTIFICATE-----\n"; static const gnutls_datum_t cert_datum = { (unsigned char *)cert_pem, - sizeof(cert_pem) -}; + sizeof(cert_pem) }; void doit(void) { @@ -68,8 +68,7 @@ void doit(void) if (gnutls_x509_crt_init(&cert) != 0) fail("cert init failure\n"); - if (gnutls_x509_crt_import(cert, &cert_datum, GNUTLS_X509_FMT_PEM) - != 0) + if (gnutls_x509_crt_import(cert, &cert_datum, GNUTLS_X509_FMT_PEM) != 0) fail("FAIL: could not import PEM cert\n"); if (gnutls_x509_crt_get_subject(cert, &sdn) != 0) diff --git a/tests/x509-extensions.c b/tests/x509-extensions.c index 5494324d8e..0be6716e3e 100644 --- a/tests/x509-extensions.c +++ b/tests/x509-extensions.c @@ -19,7 +19,7 @@ */ #ifdef HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include @@ -29,63 +29,64 @@ #include #include "utils.h" -static char invalid_cert[] = /* v1 certificate with extensions */ - "-----BEGIN CERTIFICATE-----\n" - "MIIDHjCCAgYCDFQ7zlUDsihSxVF4mDANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQD\n" - "EwRDQS0wMCIYDzIwMTQxMDEzMTMwNjI5WhgPOTk5OTEyMzEyMzU5NTlaMBMxETAP\n" - "BgNVBAMTCHNlcnZlci0xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n" - "zoG3/1YtwGHh/5u3ex6xAmwO0/H4gdIy/yiYLxqWcy+HzyMBBZHNXuV7W0z7x+Qo\n" - "qCGtenWkzIQSgeYKyzdcpPDscZIYOgwHWUFczxgVGdLsBKPSczgqMHpSCLgMgnDM\n" - "RaN6SNQeTQdftkLt5wdBSzNaxhhPYsCEbopSeZ8250FCLS3gRpoMtYCBiy7cjSJB\n" - "zv6zmZStXNgTYr8pLwI0nyxPyRdB+TZyqAC6r9W154y51vsqUCGmC0I9hn1A5kkD\n" - "5057x+Ho1kDwPxOfObdOR+AJSAw/FeGuStzViJY0I68B90sEo/HD+h7mB+CwJ2Yf\n" - "64/xVdh+D8L65eYkM9z88wIDAQABo3cwdTAMBgNVHRMBAf8EAjAAMBQGA1UdEQQN\n" - "MAuCCWxvY2FsaG9zdDAPBgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQWBBT7Gk/u95zI\n" - "JTM89CXJ70IxxqhegDAfBgNVHSMEGDAWgBQ9X77/zddjG9ob2zrR/WuGmxwFGDAN\n" - "BgkqhkiG9w0BAQsFAAOCAQEAaTrAcTkQ7yqf6afoTkFXZuZ+jJXYNGkubxs8Jo/z\n" - "srJk/WWVGAKuxiBDumk88Gjm+WXGyIDA7Hq9fhGaklJV2PGRfNVx9No51HXeAToT\n" - "sHs2XKhk9SdKKR4UJkuX3U2malMlCpmFMtm3EieDVZLxeukhODJQtRa3vGg8QWoz\n" - "ODlewHSmQiXhnqq52fLCbdVUaBnaRGOIwNZ0FcBWv9n0ZCuhjg9908rUVH9/OjI3\n" - "AGVZcbN9Jac2ZO8NTxP5vS1hrG2wT9+sVRh1sD5ISZSM4gWdq9sK8d7j+SwOPBWY\n" - "3dcxQlfvWw2Dt876XYoyUZuKirmASVlMw+hkm1WXM7Svsw==\n" - "-----END CERTIFICATE-----\n"; +static char invalid_cert[] = /* v1 certificate with extensions */ + "-----BEGIN CERTIFICATE-----\n" + "MIIDHjCCAgYCDFQ7zlUDsihSxVF4mDANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQD\n" + "EwRDQS0wMCIYDzIwMTQxMDEzMTMwNjI5WhgPOTk5OTEyMzEyMzU5NTlaMBMxETAP\n" + "BgNVBAMTCHNlcnZlci0xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n" + "zoG3/1YtwGHh/5u3ex6xAmwO0/H4gdIy/yiYLxqWcy+HzyMBBZHNXuV7W0z7x+Qo\n" + "qCGtenWkzIQSgeYKyzdcpPDscZIYOgwHWUFczxgVGdLsBKPSczgqMHpSCLgMgnDM\n" + "RaN6SNQeTQdftkLt5wdBSzNaxhhPYsCEbopSeZ8250FCLS3gRpoMtYCBiy7cjSJB\n" + "zv6zmZStXNgTYr8pLwI0nyxPyRdB+TZyqAC6r9W154y51vsqUCGmC0I9hn1A5kkD\n" + "5057x+Ho1kDwPxOfObdOR+AJSAw/FeGuStzViJY0I68B90sEo/HD+h7mB+CwJ2Yf\n" + "64/xVdh+D8L65eYkM9z88wIDAQABo3cwdTAMBgNVHRMBAf8EAjAAMBQGA1UdEQQN\n" + "MAuCCWxvY2FsaG9zdDAPBgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQWBBT7Gk/u95zI\n" + "JTM89CXJ70IxxqhegDAfBgNVHSMEGDAWgBQ9X77/zddjG9ob2zrR/WuGmxwFGDAN\n" + "BgkqhkiG9w0BAQsFAAOCAQEAaTrAcTkQ7yqf6afoTkFXZuZ+jJXYNGkubxs8Jo/z\n" + "srJk/WWVGAKuxiBDumk88Gjm+WXGyIDA7Hq9fhGaklJV2PGRfNVx9No51HXeAToT\n" + "sHs2XKhk9SdKKR4UJkuX3U2malMlCpmFMtm3EieDVZLxeukhODJQtRa3vGg8QWoz\n" + "ODlewHSmQiXhnqq52fLCbdVUaBnaRGOIwNZ0FcBWv9n0ZCuhjg9908rUVH9/OjI3\n" + "AGVZcbN9Jac2ZO8NTxP5vS1hrG2wT9+sVRh1sD5ISZSM4gWdq9sK8d7j+SwOPBWY\n" + "3dcxQlfvWw2Dt876XYoyUZuKirmASVlMw+hkm1WXM7Svsw==\n" + "-----END CERTIFICATE-----\n"; static char pem[] = - "-----BEGIN CERTIFICATE-----" - "MIIFdDCCBN2gAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBkzEVMBMGA1UEAxMMQ2lu" - "ZHkgTGF1cGVyMRcwFQYKCZImiZPyLGQBARMHY2xhdXBlcjERMA8GA1UECxMIQ0Eg" - "ZGVwdC4xEjAQBgNVBAoTCUtva28gaW5jLjEPMA0GA1UECBMGQXR0aWtpMQswCQYD" - "VQQGEwJHUjEcMBoGCSqGSIb3DQEJARYNbm9uZUBub25lLm9yZzAiGA8yMDA3MDQy" - "MTIyMDAwMFoYDzk5OTkxMjMxMjM1OTU5WjCBkzEVMBMGA1UEAxMMQ2luZHkgTGF1" - "cGVyMRcwFQYKCZImiZPyLGQBARMHY2xhdXBlcjERMA8GA1UECxMIQ0EgZGVwdC4x" - "EjAQBgNVBAoTCUtva28gaW5jLjEPMA0GA1UECBMGQXR0aWtpMQswCQYDVQQGEwJH" - "UjEcMBoGCSqGSIb3DQEJARYNbm9uZUBub25lLm9yZzCBnzANBgkqhkiG9w0BAQEF" - "AAOBjQAwgYkCgYEApcbOdUOEv2SeAicT8QNZ93ktku18L1CkA/EtebmGiwV+OrtE" - "qq+EzxOYHhxKOPczLXqfctRrbSawMTdwEPtC6didGGV+GUn8BZYEaIMed4a/7fXl" - "EjsT/jMYnBp6HWmvRwJgeh+56M/byDQwUZY9jJZcALxh3ggPsTYhf6kA4wUCAwEA" - "AaOCAtAwggLMMBIGA1UdEwEB/wQIMAYBAf8CAQQwagYDVR0RBGMwYYIMd3d3Lm5v" - "bmUub3JnghN3d3cubW9yZXRoYW5vbmUub3Jnghd3d3cuZXZlbm1vcmV0aGFub25l" - "Lm9yZ4cEwKgBAYENbm9uZUBub25lLm9yZ4EOd2hlcmVAbm9uZS5vcmcwgfcGA1Ud" - "IASB7zCB7DB3BgwrBgEEAapsAQpjAQAwZzAwBggrBgEFBQcCAjAkDCJUaGlzIGlz" - "IGEgbG9uZyBwb2xpY3kgdG8gc3VtbWFyaXplMDMGCCsGAQUFBwIBFidodHRwOi8v" - "d3d3LmV4YW1wbGUuY29tL2EtcG9saWN5LXRvLXJlYWQwcQYMKwYBBAGqbAEKYwEB" - "MGEwJAYIKwYBBQUHAgIwGAwWVGhpcyBpcyBhIHNob3J0IHBvbGljeTA5BggrBgEF" - "BQcCARYtaHR0cDovL3d3dy5leGFtcGxlLmNvbS9hbm90aGVyLXBvbGljeS10by1y" - "ZWFkMB0GA1UdJQQWMBQGCCsGAQUFBwMDBggrBgEFBQcDCTBYBgNVHR4BAf8ETjBM" - "oCQwDYILZXhhbXBsZS5jb20wE4ERbm1hdkBAZXhhbXBsZS5uZXShJDASghB0ZXN0" - "LmV4YW1wbGUuY29tMA6BDC5leGFtcGxlLmNvbTA2BggrBgEFBQcBAQQqMCgwJgYI" - "KwYBBQUHMAGGGmh0dHA6Ly9teS5vY3NwLnNlcnZlci9vY3NwMA8GA1UdDwEB/wQF" - "AwMHBgAwHQYDVR0OBBYEFF1ArfDOlECVi36ZlB2SVCLKcjZfMG8GA1UdHwRoMGYw" - "ZKBioGCGHmh0dHA6Ly93d3cuZ2V0Y3JsLmNybC9nZXRjcmwxL4YeaHR0cDovL3d3" - "dy5nZXRjcmwuY3JsL2dldGNybDIvhh5odHRwOi8vd3d3LmdldGNybC5jcmwvZ2V0" - "Y3JsMy8wDQYJKoZIhvcNAQELBQADgYEAdacOt4/Vgc9Y3pSkik3HBifDeK2OtiW0" - "BZ7xOXqXtL8Uwx6wx/DybZsUbzuR55GLUROYAc3cio5M/0pTwjqmmQ8vuHIt2p8A" - "2fegFcBbNLX38XxACQh4TDAT/4ftPwOtEol4UR4ItZ1d7faDzDXNpmGE+sp5s6ii" - "3cIIpInMKE8=" "-----END CERTIFICATE-----"; + "-----BEGIN CERTIFICATE-----" + "MIIFdDCCBN2gAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBkzEVMBMGA1UEAxMMQ2lu" + "ZHkgTGF1cGVyMRcwFQYKCZImiZPyLGQBARMHY2xhdXBlcjERMA8GA1UECxMIQ0Eg" + "ZGVwdC4xEjAQBgNVBAoTCUtva28gaW5jLjEPMA0GA1UECBMGQXR0aWtpMQswCQYD" + "VQQGEwJHUjEcMBoGCSqGSIb3DQEJARYNbm9uZUBub25lLm9yZzAiGA8yMDA3MDQy" + "MTIyMDAwMFoYDzk5OTkxMjMxMjM1OTU5WjCBkzEVMBMGA1UEAxMMQ2luZHkgTGF1" + "cGVyMRcwFQYKCZImiZPyLGQBARMHY2xhdXBlcjERMA8GA1UECxMIQ0EgZGVwdC4x" + "EjAQBgNVBAoTCUtva28gaW5jLjEPMA0GA1UECBMGQXR0aWtpMQswCQYDVQQGEwJH" + "UjEcMBoGCSqGSIb3DQEJARYNbm9uZUBub25lLm9yZzCBnzANBgkqhkiG9w0BAQEF" + "AAOBjQAwgYkCgYEApcbOdUOEv2SeAicT8QNZ93ktku18L1CkA/EtebmGiwV+OrtE" + "qq+EzxOYHhxKOPczLXqfctRrbSawMTdwEPtC6didGGV+GUn8BZYEaIMed4a/7fXl" + "EjsT/jMYnBp6HWmvRwJgeh+56M/byDQwUZY9jJZcALxh3ggPsTYhf6kA4wUCAwEA" + "AaOCAtAwggLMMBIGA1UdEwEB/wQIMAYBAf8CAQQwagYDVR0RBGMwYYIMd3d3Lm5v" + "bmUub3JnghN3d3cubW9yZXRoYW5vbmUub3Jnghd3d3cuZXZlbm1vcmV0aGFub25l" + "Lm9yZ4cEwKgBAYENbm9uZUBub25lLm9yZ4EOd2hlcmVAbm9uZS5vcmcwgfcGA1Ud" + "IASB7zCB7DB3BgwrBgEEAapsAQpjAQAwZzAwBggrBgEFBQcCAjAkDCJUaGlzIGlz" + "IGEgbG9uZyBwb2xpY3kgdG8gc3VtbWFyaXplMDMGCCsGAQUFBwIBFidodHRwOi8v" + "d3d3LmV4YW1wbGUuY29tL2EtcG9saWN5LXRvLXJlYWQwcQYMKwYBBAGqbAEKYwEB" + "MGEwJAYIKwYBBQUHAgIwGAwWVGhpcyBpcyBhIHNob3J0IHBvbGljeTA5BggrBgEF" + "BQcCARYtaHR0cDovL3d3dy5leGFtcGxlLmNvbS9hbm90aGVyLXBvbGljeS10by1y" + "ZWFkMB0GA1UdJQQWMBQGCCsGAQUFBwMDBggrBgEFBQcDCTBYBgNVHR4BAf8ETjBM" + "oCQwDYILZXhhbXBsZS5jb20wE4ERbm1hdkBAZXhhbXBsZS5uZXShJDASghB0ZXN0" + "LmV4YW1wbGUuY29tMA6BDC5leGFtcGxlLmNvbTA2BggrBgEFBQcBAQQqMCgwJgYI" + "KwYBBQUHMAGGGmh0dHA6Ly9teS5vY3NwLnNlcnZlci9vY3NwMA8GA1UdDwEB/wQF" + "AwMHBgAwHQYDVR0OBBYEFF1ArfDOlECVi36ZlB2SVCLKcjZfMG8GA1UdHwRoMGYw" + "ZKBioGCGHmh0dHA6Ly93d3cuZ2V0Y3JsLmNybC9nZXRjcmwxL4YeaHR0cDovL3d3" + "dy5nZXRjcmwuY3JsL2dldGNybDIvhh5odHRwOi8vd3d3LmdldGNybC5jcmwvZ2V0" + "Y3JsMy8wDQYJKoZIhvcNAQELBQADgYEAdacOt4/Vgc9Y3pSkik3HBifDeK2OtiW0" + "BZ7xOXqXtL8Uwx6wx/DybZsUbzuR55GLUROYAc3cio5M/0pTwjqmmQ8vuHIt2p8A" + "2fegFcBbNLX38XxACQh4TDAT/4ftPwOtEol4UR4ItZ1d7faDzDXNpmGE+sp5s6ii" + "3cIIpInMKE8=" + "-----END CERTIFICATE-----"; #define MAX_DATA_SIZE 1024 -typedef int (*ext_parse_func)(const gnutls_datum_t * der); +typedef int (*ext_parse_func)(const gnutls_datum_t *der); struct ext_handler_st { const char *oid; @@ -93,12 +94,12 @@ struct ext_handler_st { unsigned critical; }; -static int basic_constraints(const gnutls_datum_t * der) +static int basic_constraints(const gnutls_datum_t *der) { int ret, pathlen; unsigned ca; -/* + /* Basic Constraints (critical): Certificate Authority (CA): TRUE Path Length Constraint: 4 @@ -122,8 +123,8 @@ static int basic_constraints(const gnutls_datum_t * der) return 0; } -static int cmp_name(unsigned type, gnutls_datum_t * name, - unsigned expected_type, const char *expected_name) +static int cmp_name(unsigned type, gnutls_datum_t *name, unsigned expected_type, + const char *expected_name) { if (type != expected_type) { fprintf(stderr, "error in %d\n", __LINE__); @@ -142,7 +143,7 @@ static int cmp_name(unsigned type, gnutls_datum_t * name, return 0; } -static int subject_alt_name(const gnutls_datum_t * der) +static int subject_alt_name(const gnutls_datum_t *der) { int ret; gnutls_subject_alt_names_t san; @@ -168,7 +169,7 @@ static int subject_alt_name(const gnutls_datum_t * der) return ret; } -/* + /* Subject Alternative Name (not critical): DNSname: www.none.org DNSname: www.morethanone.org @@ -199,9 +200,8 @@ static int subject_alt_name(const gnutls_datum_t * der) fprintf(stderr, "error in %d\n", __LINE__); return ret; } - ret = - cmp_name(type, &name, GNUTLS_SAN_DNSNAME, - "www.evenmorethanone.org"); + ret = cmp_name(type, &name, GNUTLS_SAN_DNSNAME, + "www.evenmorethanone.org"); if (ret < 0) { fprintf(stderr, "error in %d\n", __LINE__); return ret; @@ -250,9 +250,9 @@ static int subject_alt_name(const gnutls_datum_t * der) return 0; } -static int ext_key_usage(const gnutls_datum_t * der) +static int ext_key_usage(const gnutls_datum_t *der) { -/* + /* Key Purpose (not critical): OCSP signing. */ @@ -308,7 +308,7 @@ static int ext_key_usage(const gnutls_datum_t * der) return 0; } -static int crt_policies(const gnutls_datum_t * der) +static int crt_policies(const gnutls_datum_t *der) { int ret; gnutls_x509_policies_t policies; @@ -332,7 +332,7 @@ static int crt_policies(const gnutls_datum_t * der) fprintf(stderr, "error in %d\n", __LINE__); return ret; } -/* + /* Certificate Policies (not critical): 1.3.6.1.4.1.5484.1.10.99.1.0 Note: This is a long policy to summarize @@ -341,8 +341,8 @@ static int crt_policies(const gnutls_datum_t * der) Note: This is a short policy URI: http://www.example.com/another-policy-to-read */ - if (strcmp(policy.oid, "1.3.6.1.4.1.5484.1.10.99.1.0") != 0 - || policy.qualifiers != 2) { + if (strcmp(policy.oid, "1.3.6.1.4.1.5484.1.10.99.1.0") != 0 || + policy.qualifiers != 2) { fprintf(stderr, "error in %d\n", __LINE__); return -1; } @@ -355,9 +355,9 @@ static int crt_policies(const gnutls_datum_t * der) if (policy.qualifier[1].type != GNUTLS_X509_QUALIFIER_URI || policy.qualifier[1].size != - strlen("http://www.example.com/a-policy-to-read") - || strcmp("http://www.example.com/a-policy-to-read", - policy.qualifier[1].data) != 0) { + strlen("http://www.example.com/a-policy-to-read") || + strcmp("http://www.example.com/a-policy-to-read", + policy.qualifier[1].data) != 0) { fprintf(stderr, "error in %d\n", __LINE__); return -1; } @@ -368,8 +368,8 @@ static int crt_policies(const gnutls_datum_t * der) fprintf(stderr, "error in %d\n", __LINE__); return ret; } - if (strcmp(policy.oid, "1.3.6.1.4.1.5484.1.10.99.1.1") != 0 - || policy.qualifiers != 2) { + if (strcmp(policy.oid, "1.3.6.1.4.1.5484.1.10.99.1.1") != 0 || + policy.qualifiers != 2) { fprintf(stderr, "error in %d\n", __LINE__); return -1; } @@ -382,9 +382,9 @@ static int crt_policies(const gnutls_datum_t * der) if (policy.qualifier[1].type != GNUTLS_X509_QUALIFIER_URI || policy.qualifier[1].size != - strlen("http://www.example.com/another-policy-to-read") - || strcmp("http://www.example.com/another-policy-to-read", - policy.qualifier[1].data) != 0) { + strlen("http://www.example.com/another-policy-to-read") || + strcmp("http://www.example.com/another-policy-to-read", + policy.qualifier[1].data) != 0) { fprintf(stderr, "error in %d\n", __LINE__); return -1; } @@ -400,9 +400,9 @@ static int crt_policies(const gnutls_datum_t * der) return 0; } -static int key_usage(const gnutls_datum_t * der) +static int key_usage(const gnutls_datum_t *der) { -/* + /* Key Usage (critical): Certificate signing. */ @@ -423,9 +423,9 @@ static int key_usage(const gnutls_datum_t * der) return 0; } -static int subject_key_id(const gnutls_datum_t * der) +static int subject_key_id(const gnutls_datum_t *der) { -/* + /* Subject Key Identifier (not critical): 5d40adf0ce9440958b7e99941d925422ca72365f */ @@ -450,7 +450,7 @@ static int subject_key_id(const gnutls_datum_t * der) return 0; } -static int crl_dist_points(const gnutls_datum_t * der) +static int crl_dist_points(const gnutls_datum_t *der) { int ret; gnutls_x509_crl_dist_points_t dp = NULL; @@ -459,7 +459,7 @@ static int crl_dist_points(const gnutls_datum_t * der) gnutls_datum_t url; unsigned type; -/* + /* CRL Distribution points (not critical): URI: http://www.getcrl.crl/getcrl1/ URI: http://www.getcrl.crl/getcrl2/ @@ -525,7 +525,7 @@ static int crl_dist_points(const gnutls_datum_t * der) return 0; } -static int name_constraints(const gnutls_datum_t * der) +static int name_constraints(const gnutls_datum_t *der) { int ret; gnutls_x509_name_constraints_t nc = NULL; @@ -533,7 +533,7 @@ static int name_constraints(const gnutls_datum_t * der) gnutls_datum_t name; unsigned type; -/* + /* Name Constraints (critical): Permitted: DNSname: example.com @@ -621,7 +621,7 @@ static int name_constraints(const gnutls_datum_t * der) return 0; } -static int ext_aia(const gnutls_datum_t * der) +static int ext_aia(const gnutls_datum_t *der) { int ret; gnutls_x509_aia_t aia = NULL; @@ -630,7 +630,7 @@ static int ext_aia(const gnutls_datum_t * der) gnutls_datum_t name; unsigned type; -/* Authority Information Access (not critical): + /* Authority Information Access (not critical): Access Method: 1.3.6.1.5.5.7.48.1 (id-ad-ocsp) Access Location URI: http://my.ocsp.server/ocsp */ @@ -675,24 +675,24 @@ static int ext_aia(const gnutls_datum_t * der) } struct ext_handler_st handlers[] = { - {GNUTLS_X509EXT_OID_BASIC_CONSTRAINTS, basic_constraints, 1}, - {GNUTLS_X509EXT_OID_SAN, subject_alt_name, 0}, - {GNUTLS_X509EXT_OID_CRT_POLICY, crt_policies, 0}, - {GNUTLS_X509EXT_OID_EXTENDED_KEY_USAGE, ext_key_usage, 0}, - {GNUTLS_X509EXT_OID_KEY_USAGE, key_usage, 1}, - {GNUTLS_X509EXT_OID_SUBJECT_KEY_ID, subject_key_id, 0}, - {GNUTLS_X509EXT_OID_CRL_DIST_POINTS, crl_dist_points, 0}, - {GNUTLS_X509EXT_OID_NAME_CONSTRAINTS, name_constraints, 1}, - {GNUTLS_X509EXT_OID_AUTHORITY_INFO_ACCESS, ext_aia, 0}, - {NULL, NULL} + { GNUTLS_X509EXT_OID_BASIC_CONSTRAINTS, basic_constraints, 1 }, + { GNUTLS_X509EXT_OID_SAN, subject_alt_name, 0 }, + { GNUTLS_X509EXT_OID_CRT_POLICY, crt_policies, 0 }, + { GNUTLS_X509EXT_OID_EXTENDED_KEY_USAGE, ext_key_usage, 0 }, + { GNUTLS_X509EXT_OID_KEY_USAGE, key_usage, 1 }, + { GNUTLS_X509EXT_OID_SUBJECT_KEY_ID, subject_key_id, 0 }, + { GNUTLS_X509EXT_OID_CRL_DIST_POINTS, crl_dist_points, 0 }, + { GNUTLS_X509EXT_OID_NAME_CONSTRAINTS, name_constraints, 1 }, + { GNUTLS_X509EXT_OID_AUTHORITY_INFO_ACCESS, ext_aia, 0 }, + { NULL, NULL } }; void doit(void) { int ret; gnutls_datum_t derCert = { (void *)pem, sizeof(pem) - 1 }; - gnutls_datum_t v1Cert = - { (void *)invalid_cert, sizeof(invalid_cert) - 1 }; + gnutls_datum_t v1Cert = { (void *)invalid_cert, + sizeof(invalid_cert) - 1 }; gnutls_x509_crt_t cert; size_t oid_len = MAX_DATA_SIZE; gnutls_datum_t ext; @@ -710,7 +710,8 @@ void doit(void) ret = gnutls_x509_crt_import(cert, &v1Cert, GNUTLS_X509_FMT_PEM); if (ret >= 0) - fail("crt_import of v1 cert with extensions should have failed: %d\n", ret); + fail("crt_import of v1 cert with extensions should have failed: %d\n", + ret); gnutls_x509_crt_deinit(cert); ret = gnutls_x509_crt_init(&cert); @@ -723,9 +724,8 @@ void doit(void) for (i = 0;; i++) { oid_len = sizeof(oid); - ret = - gnutls_x509_crt_get_extension_info(cert, i, oid, &oid_len, - &critical); + ret = gnutls_x509_crt_get_extension_info(cert, i, oid, &oid_len, + &critical); if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { if (i != 9) { fail("unexpected number of extensions: %d\n", @@ -748,7 +748,8 @@ void doit(void) /* find the handler for this extension and run it */ for (j = 0;; j++) { if (handlers[j].oid == NULL) { - fail("could not find handler for extension %s\n", oid); + fail("could not find handler for extension %s\n", + oid); break; } diff --git a/tests/x509-server-verify.c b/tests/x509-server-verify.c index b2685e114d..61f2bb2b06 100644 --- a/tests/x509-server-verify.c +++ b/tests/x509-server-verify.c @@ -21,7 +21,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -69,19 +69,15 @@ static void start(const char *prio) gnutls_global_set_log_level(2); assert(gnutls_certificate_allocate_credentials(&serverx509cred) >= 0); - ret = - gnutls_certificate_set_x509_key_mem2(serverx509cred, - &server_ca3_localhost6_cert, - &server_ca3_key, - GNUTLS_X509_FMT_PEM, NULL, 0); + ret = gnutls_certificate_set_x509_key_mem2( + serverx509cred, &server_ca3_localhost6_cert, &server_ca3_key, + GNUTLS_X509_FMT_PEM, NULL, 0); assert(ret >= 0); index1 = ret; - ret = - gnutls_certificate_set_ocsp_status_request_mem(serverx509cred, - &ocsp_ca3_localhost6_unknown_pem, - index1, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_ocsp_status_request_mem( + serverx509cred, &ocsp_ca3_localhost6_unknown_pem, index1, + GNUTLS_X509_FMT_PEM); assert(ret >= 0); assert(gnutls_init(&server, GNUTLS_SERVER) >= 0); @@ -96,19 +92,15 @@ static void start(const char *prio) assert(gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca3_cert, GNUTLS_X509_FMT_PEM) >= 0); - ret = - gnutls_certificate_set_x509_key_mem2(clientx509cred, - &cli_ca3_cert_chain, - &cli_ca3_key, - GNUTLS_X509_FMT_PEM, NULL, 0); + ret = gnutls_certificate_set_x509_key_mem2( + clientx509cred, &cli_ca3_cert_chain, &cli_ca3_key, + GNUTLS_X509_FMT_PEM, NULL, 0); assert(ret >= 0); index1 = ret; - ret = - gnutls_certificate_set_ocsp_status_request_mem(clientx509cred, - &ocsp_cli_ca3_good_pem, - index1, - GNUTLS_X509_FMT_PEM); + ret = gnutls_certificate_set_ocsp_status_request_mem( + clientx509cred, &ocsp_cli_ca3_good_pem, index1, + GNUTLS_X509_FMT_PEM); assert(ret >= 0); assert(gnutls_certificate_set_x509_trust_mem(clientx509cred, &ca3_cert, @@ -139,8 +131,9 @@ static void start(const char *prio) if (status == 0) fail("No CAs present but succeeded!\n"); - assert(gnutls_certificate_set_x509_trust_mem - (serverx509cred, &ca3_cert, GNUTLS_X509_FMT_PEM) >= 0); + assert(gnutls_certificate_set_x509_trust_mem( + serverx509cred, &ca3_cert, + GNUTLS_X509_FMT_PEM) >= 0); ret = gnutls_certificate_verify_peers2(server, &status); if (ret < 0) { @@ -153,17 +146,15 @@ static void start(const char *prio) /* under TLS1.3 the client can send OCSP responses too */ if (gnutls_protocol_get_version(server) == GNUTLS_TLS1_3) { - ret = - gnutls_ocsp_status_request_is_checked(server, - GNUTLS_OCSP_SR_IS_AVAIL); + ret = gnutls_ocsp_status_request_is_checked( + server, GNUTLS_OCSP_SR_IS_AVAIL); assert(ret >= 0); ret = gnutls_ocsp_status_request_is_checked(server, 0); assert(ret >= 0); } else { - ret = - gnutls_ocsp_status_request_is_checked(server, - GNUTLS_OCSP_SR_IS_AVAIL); + ret = gnutls_ocsp_status_request_is_checked( + server, GNUTLS_OCSP_SR_IS_AVAIL); assert(ret == 0); ret = gnutls_ocsp_status_request_is_checked(server, 0); diff --git a/tests/x509-upnconstraint.c b/tests/x509-upnconstraint.c index 24f0078667..61ec078105 100644 --- a/tests/x509-upnconstraint.c +++ b/tests/x509-upnconstraint.c @@ -39,64 +39,64 @@ void verify_non_upn_leaf(gnutls_x509_name_constraints_t); static const char _domaincontroller[] = { "-----BEGIN CERTIFICATE-----\n" - "MIIEqTCCA5GgAwIBAgITQAAAAAPX0eQxgcZpHAAAAAAAAzANBgkqhkiG9w0BAQsF\n" - "ADA0MRUwEwYDVQQKEwxFeGFtcGxlIEluYy4xGzAZBgNVBAMTEkV4YW1wbGUgQ29y\n" - "cCBBRCBDQTAeFw0yMjA0MTIxNjUzMTFaFw0yNzA0MTExNjUzMTFaMCIxIDAeBgNV\n" - "BAMTF2V4YW1wbGVkYzAxLmV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOC\n" - "AQ8AMIIBCgKCAQEAtnYFOqZas9U9GX87w2bvyQh6l3fWJ83JHEHAwP11j9dQu/sa\n" - "qgMYr/OqH+5tCvsDLt9sI35RCuF+6San3P1m56G+iYaawE46UrbHSYC4PyhinOXx\n" - "X3xXzaxjTDYhz46Fvfmoqa732zPYG3QQplPsjQbRx96iXOSkdWt8g4mbTJ/eyYdG\n" - "uXt1mlvL+USz5b39trOgSgTC60cdneBrQsBh7o80rHvaprvjTY5mHS7JNHcsr9Hs\n" - "xjOOq9t3LdWehXYshINZ6ChxaHipbBUF+0CTvwJW8wvQtSV6MYDl+cbS/47OwJG0\n" - "OXJxFVQofJWNi4/IrTC42d3fyEWA2ZnP898GeQIDAQABo4IBxDCCAcAwPQYJKwYB\n" - "BAGCNxUHBDAwLgYmKwYBBAGCNxUIg/iOToSq0GWEhZMhhZ3KIoKY1VocgufIbYTY\n" - "+3sCAWQCAQIwMgYDVR0lBCswKQYHKwYBBQIDBQYKKwYBBAGCNxQCAgYIKwYBBQUH\n" - "AwEGCCsGAQUFBwMCMA4GA1UdDwEB/wQEAwIFoDBABgkrBgEEAYI3FQoEMzAxMAkG\n" - "BysGAQUCAwUwDAYKKwYBBAGCNxQCAjAKBggrBgEFBQcDATAKBggrBgEFBQcDAjAd\n" - "BgNVHQ4EFgQUjaBu4CsVk5gng+ACWTSqsj1gmVQwNAYDVR0RBC0wK4IXZXhhbXBs\n" - "ZWRjMDEuZXhhbXBsZS5jb22CEGxkYXAuZXhhbXBsZS5jb20wHwYDVR0jBBgwFoAU\n" - "aRL34OyTRJUSVVfxMiMjBFHk/WowOwYDVR0fBDQwMjAwoC6gLIYqaHR0cDovL3Br\n" - "aS5leGFtcGxlLmNvbS9jZHAvRXhhbXBsZUFEQ0EuY3JsMEYGCCsGAQUFBwEBBDow\n" - "ODA2BggrBgEFBQcwAoYqaHR0cDovL3BraS5leGFtcGxlLmNvbS9haWEvRXhhbXBs\n" - "ZUFEQ0EuY2VyMA0GCSqGSIb3DQEBCwUAA4IBAQCKr0WQYujcyUOUZp63i27dMihf\n" - "z+WKd2G+dyGzmNTabFlZSfquFo+MWmSM04UOEYS45tyFZhWEXXaz4OfilelKy5XI\n" - "tiZRGDvzNzxfb7GQSWDO1mxLHW2yEH+1Cyu/Km0PRhDl1Vy0DFyrdGh/w7qTM7eG\n" - "BjD0bBtk9/M58IYlnzx7CM53CRGhPHUygontN1vbWf42gDdu+5d+tnls86gTzuRs\n" - "su4BReayHU9aFqorWhvxCQhgnLx98Ei2BsJe5nbSzjVA5ZhPcL9WDC76aDPEDaZg\n" - "GnNu9kZJV/UrCaulu0COhJfNocd/LWXZbUStUCenRX01GHCP+4mNmPLJkVh2\n" - "-----END CERTIFICATE-----" + "MIIEqTCCA5GgAwIBAgITQAAAAAPX0eQxgcZpHAAAAAAAAzANBgkqhkiG9w0BAQsF\n" + "ADA0MRUwEwYDVQQKEwxFeGFtcGxlIEluYy4xGzAZBgNVBAMTEkV4YW1wbGUgQ29y\n" + "cCBBRCBDQTAeFw0yMjA0MTIxNjUzMTFaFw0yNzA0MTExNjUzMTFaMCIxIDAeBgNV\n" + "BAMTF2V4YW1wbGVkYzAxLmV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOC\n" + "AQ8AMIIBCgKCAQEAtnYFOqZas9U9GX87w2bvyQh6l3fWJ83JHEHAwP11j9dQu/sa\n" + "qgMYr/OqH+5tCvsDLt9sI35RCuF+6San3P1m56G+iYaawE46UrbHSYC4PyhinOXx\n" + "X3xXzaxjTDYhz46Fvfmoqa732zPYG3QQplPsjQbRx96iXOSkdWt8g4mbTJ/eyYdG\n" + "uXt1mlvL+USz5b39trOgSgTC60cdneBrQsBh7o80rHvaprvjTY5mHS7JNHcsr9Hs\n" + "xjOOq9t3LdWehXYshINZ6ChxaHipbBUF+0CTvwJW8wvQtSV6MYDl+cbS/47OwJG0\n" + "OXJxFVQofJWNi4/IrTC42d3fyEWA2ZnP898GeQIDAQABo4IBxDCCAcAwPQYJKwYB\n" + "BAGCNxUHBDAwLgYmKwYBBAGCNxUIg/iOToSq0GWEhZMhhZ3KIoKY1VocgufIbYTY\n" + "+3sCAWQCAQIwMgYDVR0lBCswKQYHKwYBBQIDBQYKKwYBBAGCNxQCAgYIKwYBBQUH\n" + "AwEGCCsGAQUFBwMCMA4GA1UdDwEB/wQEAwIFoDBABgkrBgEEAYI3FQoEMzAxMAkG\n" + "BysGAQUCAwUwDAYKKwYBBAGCNxQCAjAKBggrBgEFBQcDATAKBggrBgEFBQcDAjAd\n" + "BgNVHQ4EFgQUjaBu4CsVk5gng+ACWTSqsj1gmVQwNAYDVR0RBC0wK4IXZXhhbXBs\n" + "ZWRjMDEuZXhhbXBsZS5jb22CEGxkYXAuZXhhbXBsZS5jb20wHwYDVR0jBBgwFoAU\n" + "aRL34OyTRJUSVVfxMiMjBFHk/WowOwYDVR0fBDQwMjAwoC6gLIYqaHR0cDovL3Br\n" + "aS5leGFtcGxlLmNvbS9jZHAvRXhhbXBsZUFEQ0EuY3JsMEYGCCsGAQUFBwEBBDow\n" + "ODA2BggrBgEFBQcwAoYqaHR0cDovL3BraS5leGFtcGxlLmNvbS9haWEvRXhhbXBs\n" + "ZUFEQ0EuY2VyMA0GCSqGSIb3DQEBCwUAA4IBAQCKr0WQYujcyUOUZp63i27dMihf\n" + "z+WKd2G+dyGzmNTabFlZSfquFo+MWmSM04UOEYS45tyFZhWEXXaz4OfilelKy5XI\n" + "tiZRGDvzNzxfb7GQSWDO1mxLHW2yEH+1Cyu/Km0PRhDl1Vy0DFyrdGh/w7qTM7eG\n" + "BjD0bBtk9/M58IYlnzx7CM53CRGhPHUygontN1vbWf42gDdu+5d+tnls86gTzuRs\n" + "su4BReayHU9aFqorWhvxCQhgnLx98Ei2BsJe5nbSzjVA5ZhPcL9WDC76aDPEDaZg\n" + "GnNu9kZJV/UrCaulu0COhJfNocd/LWXZbUStUCenRX01GHCP+4mNmPLJkVh2\n" + "-----END CERTIFICATE-----" }; static const char _issuingca[] = { -/* The intermediate CA with name constraints */ + /* The intermediate CA with name constraints */ "-----BEGIN CERTIFICATE-----\n" - "MIIE0jCCA7qgAwIBAgITLgAAAAK9f34egj9VJAAAAAAAAjANBgkqhkiG9w0BAQsF\n" - "ADA2MRUwEwYDVQQKEwxFeGFtcGxlIEluYy4xHTAbBgNVBAMTFEV4YW1wbGUgQ29y\n" - "cCBSb290IENBMCAXDTIyMDQxMjE2Mzk0M1oYDzIwNjcwNDEyMTY0OTQzWjA0MRUw\n" - "EwYDVQQKEwxFeGFtcGxlIEluYy4xGzAZBgNVBAMTEkV4YW1wbGUgQ29ycCBBRCBD\n" - "QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALs2TqehwJfMyrU77MRv\n" - "4jgwgnsruZMexMGwT6A5oxdjKNhyXnsdiYiH3nFEgrHSCOAxgoCDJYlDLn0jZYdS\n" - "3j7hMrhzAwHzwUgTrruHaTZ2tShxbfvUAGuuOroSVB4+XzS22RKdgh7g1cv3scWI\n" - "62M2vfV8iBpehD5xhmqfu2Z9ChNTR32HLHdFdsMFuS+t0Zktszk1qE9AClFa7ttr\n" - "VKgOyEmjgXlhX/Qld4zgCvxvI/jMPbEKrU2ZFeRV160vGaraAVjF0Oxe9TFH9fLZ\n" - "E+ERghmfdzzbNOXikgExrsveALNRsbTyIhKmEDRGMN/y12htghHvBamwGDt/gj9q\n" - "3fECAwEAAaOCAdcwggHTMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBRpEvfg\n" - "7JNElRJVV/EyIyMEUeT9ajAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNV\n" - "HQ8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNVHSMEGDAWgBQlQb5lkuye\n" - "IfoJIi/ctatOBUANSDA7BgNVHR8ENDAyMDCgLqAshipodHRwOi8vcGtpLmV4YW1w\n" - "bGUuY29tL2NkcC9FeGFtcGxlUm9vdC5jcmwwggEEBgNVHR4BAf8EgfkwgfagajAN\n" - "ggtleGFtcGxlLmNvbTAOggwuZXhhbXBsZS5jb20wCYIHRVhBTVBMRTAeoBwGCisG\n" - "AQQBgjcUAgOgDgwMQGV4YW1wbGUuY29tMB6gHAYKKwYBBAGCNxQCA6AODAwuZXhh\n" - "bXBsZS5jb22hgYcwF4IVc3ViZG9tYWluLmV4YW1wbGUuY29tMBiCFi5zdWJkb21h\n" - "aW4uZXhhbXBsZS5jb20wKKAmBgorBgEEAYI3FAIDoBgMFkBzdWJkb21haW4uZXhh\n" - "bXBsZS5jb20wKKAmBgorBgEEAYI3FAIDoBgMFi5zdWJkb21haW4uZXhhbXBsZS5j\n" - "b20wDQYJKoZIhvcNAQELBQADggEBAG+gD/ZNEaoukBt/U+7tGOwx5bTAdNChYZEU\n" - "Wzt5XoJ0ZgClfgtKk/hmDxPsUEVOzaYEtUrj8V0qJun5YwEzZsZbHAkbkTOcQ2tC\n" - "5Jv7czs0IYrSCJIgz7PdNSxTaXyCpipzUvSdZxQj3Bjj+MiYiReEwxhAb6bI/D8h\n" - "HXk9T5iHiw9f7P6ZTBvx5keUjAePO8sc0CtefOIH+tyRY1oEHAzMSDzqhpeZDAtM\n" - "N93KZkhnx/kmQhqLXhrck9Ubozw++e2iP83bTojTFSodRiKWPtUKOHAlPvIWQURc\n" - "YP0dQUsv1tMnNjJgA7COp1+mmqfEUVQqmBwRbJ26ve2iwS/SAgI=\n" - "-----END CERTIFICATE-----" + "MIIE0jCCA7qgAwIBAgITLgAAAAK9f34egj9VJAAAAAAAAjANBgkqhkiG9w0BAQsF\n" + "ADA2MRUwEwYDVQQKEwxFeGFtcGxlIEluYy4xHTAbBgNVBAMTFEV4YW1wbGUgQ29y\n" + "cCBSb290IENBMCAXDTIyMDQxMjE2Mzk0M1oYDzIwNjcwNDEyMTY0OTQzWjA0MRUw\n" + "EwYDVQQKEwxFeGFtcGxlIEluYy4xGzAZBgNVBAMTEkV4YW1wbGUgQ29ycCBBRCBD\n" + "QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALs2TqehwJfMyrU77MRv\n" + "4jgwgnsruZMexMGwT6A5oxdjKNhyXnsdiYiH3nFEgrHSCOAxgoCDJYlDLn0jZYdS\n" + "3j7hMrhzAwHzwUgTrruHaTZ2tShxbfvUAGuuOroSVB4+XzS22RKdgh7g1cv3scWI\n" + "62M2vfV8iBpehD5xhmqfu2Z9ChNTR32HLHdFdsMFuS+t0Zktszk1qE9AClFa7ttr\n" + "VKgOyEmjgXlhX/Qld4zgCvxvI/jMPbEKrU2ZFeRV160vGaraAVjF0Oxe9TFH9fLZ\n" + "E+ERghmfdzzbNOXikgExrsveALNRsbTyIhKmEDRGMN/y12htghHvBamwGDt/gj9q\n" + "3fECAwEAAaOCAdcwggHTMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBRpEvfg\n" + "7JNElRJVV/EyIyMEUeT9ajAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNV\n" + "HQ8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNVHSMEGDAWgBQlQb5lkuye\n" + "IfoJIi/ctatOBUANSDA7BgNVHR8ENDAyMDCgLqAshipodHRwOi8vcGtpLmV4YW1w\n" + "bGUuY29tL2NkcC9FeGFtcGxlUm9vdC5jcmwwggEEBgNVHR4BAf8EgfkwgfagajAN\n" + "ggtleGFtcGxlLmNvbTAOggwuZXhhbXBsZS5jb20wCYIHRVhBTVBMRTAeoBwGCisG\n" + "AQQBgjcUAgOgDgwMQGV4YW1wbGUuY29tMB6gHAYKKwYBBAGCNxQCA6AODAwuZXhh\n" + "bXBsZS5jb22hgYcwF4IVc3ViZG9tYWluLmV4YW1wbGUuY29tMBiCFi5zdWJkb21h\n" + "aW4uZXhhbXBsZS5jb20wKKAmBgorBgEEAYI3FAIDoBgMFkBzdWJkb21haW4uZXhh\n" + "bXBsZS5jb20wKKAmBgorBgEEAYI3FAIDoBgMFi5zdWJkb21haW4uZXhhbXBsZS5j\n" + "b20wDQYJKoZIhvcNAQELBQADggEBAG+gD/ZNEaoukBt/U+7tGOwx5bTAdNChYZEU\n" + "Wzt5XoJ0ZgClfgtKk/hmDxPsUEVOzaYEtUrj8V0qJun5YwEzZsZbHAkbkTOcQ2tC\n" + "5Jv7czs0IYrSCJIgz7PdNSxTaXyCpipzUvSdZxQj3Bjj+MiYiReEwxhAb6bI/D8h\n" + "HXk9T5iHiw9f7P6ZTBvx5keUjAePO8sc0CtefOIH+tyRY1oEHAzMSDzqhpeZDAtM\n" + "N93KZkhnx/kmQhqLXhrck9Ubozw++e2iP83bTojTFSodRiKWPtUKOHAlPvIWQURc\n" + "YP0dQUsv1tMnNjJgA7COp1+mmqfEUVQqmBwRbJ26ve2iwS/SAgI=\n" + "-----END CERTIFICATE-----" }; const unsigned char example3[] = "@example.com"; @@ -118,13 +118,15 @@ void verify_upn_constraints(gnutls_x509_name_constraints_t name_constraints) } if (type != GNUTLS_SAN_OTHERNAME_MSUSERPRINCIPAL) { - fail("Error permitted constraint 3 is not UPN line: %d Found: %u\n", __LINE__, type); + fail("Error permitted constraint 3 is not UPN line: %d Found: %u\n", + __LINE__, type); exit(1); } if ((constraint.size != sizeof(example3) - 1) || memcmp(constraint.data, example3, sizeof(example3) - 1) != 0) { - fail("Error permitted constraint 3 was %s expected %s line: %d\n", constraint.data, example3, __LINE__); + fail("Error permitted constraint 3 was %s expected %s line: %d\n", + constraint.data, example3, __LINE__); exit(1); } @@ -137,13 +139,15 @@ void verify_upn_constraints(gnutls_x509_name_constraints_t name_constraints) } if (type != GNUTLS_SAN_OTHERNAME_MSUSERPRINCIPAL) { - fail("Error permitted constraint 4 is not UPN line: %d Found: %u\n", __LINE__, type); + fail("Error permitted constraint 4 is not UPN line: %d Found: %u\n", + __LINE__, type); exit(1); } if ((constraint.size != sizeof(example4) - 1) || memcmp(constraint.data, example4, sizeof(example4) - 1) != 0) { - fail("Error permitted constraint 4 was %s expected %s line: %d\n", constraint.data, example4, __LINE__); + fail("Error permitted constraint 4 was %s expected %s line: %d\n", + constraint.data, example4, __LINE__); exit(1); } @@ -156,13 +160,15 @@ void verify_upn_constraints(gnutls_x509_name_constraints_t name_constraints) } if (type != GNUTLS_SAN_OTHERNAME_MSUSERPRINCIPAL) { - fail("Error excluded constraint 2 is not UPN line: %d Found %u\n", __LINE__, type); + fail("Error excluded constraint 2 is not UPN line: %d Found %u\n", + __LINE__, type); exit(1); } if ((constraint.size != sizeof(subdomain2) - 1) || memcmp(constraint.data, subdomain2, sizeof(subdomain2) - 1) != 0) { - fail("Error excluded constraint 2 was %s expected %s line: %d\n", constraint.data, subdomain2, __LINE__); + fail("Error excluded constraint 2 was %s expected %s line: %d\n", + constraint.data, subdomain2, __LINE__); exit(1); } @@ -175,13 +181,15 @@ void verify_upn_constraints(gnutls_x509_name_constraints_t name_constraints) } if (type != GNUTLS_SAN_OTHERNAME_MSUSERPRINCIPAL) { - fail("Error excluded constraint 3 is not UPN line: %d Found %u\n", __LINE__, type); + fail("Error excluded constraint 3 is not UPN line: %d Found %u\n", + __LINE__, type); exit(1); } if ((constraint.size != sizeof(subdomain3) - 1) || memcmp(constraint.data, subdomain3, sizeof(subdomain3) - 1) != 0) { - fail("Error excluded constraint 3 was %s expected %s line: %d\n", constraint.data, subdomain3, __LINE__); + fail("Error excluded constraint 3 was %s expected %s line: %d\n", + constraint.data, subdomain3, __LINE__); exit(1); } } @@ -191,8 +199,8 @@ void verify_non_upn_leaf(gnutls_x509_name_constraints_t name_constraints) // This test specifically checks for resolution of issue 1132 int ret = 0; gnutls_x509_crt_t domaincontroller; - gnutls_datum_t domaincontroller_datum = { (void *)_domaincontroller, - sizeof(_domaincontroller) - 1 + gnutls_datum_t domaincontroller_datum = { + (void *)_domaincontroller, sizeof(_domaincontroller) - 1 }; gnutls_x509_crt_init(&domaincontroller); @@ -205,11 +213,11 @@ void verify_non_upn_leaf(gnutls_x509_name_constraints_t name_constraints) exit(1); } - ret = gnutls_x509_name_constraints_check_crt(name_constraints, - GNUTLS_SAN_DNSNAME, - domaincontroller); + ret = gnutls_x509_name_constraints_check_crt( + name_constraints, GNUTLS_SAN_DNSNAME, domaincontroller); if (ret < 0) { - fail("Error failed to verify leaf cert against constraints line: %d\n", __LINE__); + fail("Error failed to verify leaf cert against constraints line: %d\n", + __LINE__); exit(1); } @@ -221,8 +229,8 @@ void doit(void) int ret; unsigned int critical = 0; gnutls_x509_crt_t issuingca; - gnutls_datum_t issuingca_datum = - { (void *)_issuingca, sizeof(_issuingca) - 1 }; + gnutls_datum_t issuingca_datum = { (void *)_issuingca, + sizeof(_issuingca) - 1 }; gnutls_x509_crt_init(&issuingca); @@ -243,9 +251,8 @@ void doit(void) exit(1); } - ret = - gnutls_x509_crt_get_name_constraints(issuingca, name_constraints, 0, - &critical); + ret = gnutls_x509_crt_get_name_constraints(issuingca, name_constraints, + 0, &critical); if (ret < 0) { // Failure here is potentially a regression to issue 1132 behavior fail("Error loading constraints line: %d\n", __LINE__); diff --git a/tests/x509-verify-duplicate.c b/tests/x509-verify-duplicate.c index 1a2906c817..0cf6abd1f0 100644 --- a/tests/x509-verify-duplicate.c +++ b/tests/x509-verify-duplicate.c @@ -20,160 +20,161 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include #include "utils.h" -#define CHECK(X)\ -{\ - r = X;\ - if (r < 0)\ - fail("error in %d: %s\n", __LINE__, gnutls_strerror(r));\ -}\ +#define CHECK(X) \ + { \ + r = X; \ + if (r < 0) \ + fail("error in %d: %s\n", __LINE__, \ + gnutls_strerror(r)); \ + } static char cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIFLzCCBBegAwIBAgISAycvItcPAZ5yClzMOYYcod4cMA0GCSqGSIb3DQEBCwUA\n" - "MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD\n" - "EwJSMzAeFw0yMjA4MjMwNjMzMjlaFw0yMjExMjEwNjMzMjhaMBcxFTATBgNVBAMT\n" - "DHZvaWRwb2ludC5pbzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANSt\n" - "AazUWttuU/swyEdt70bpod6knYDJavnFUwicpT4ZfPh84Y2ci9Ay9oTVR8LzVq+o\n" - "3FIGxXlBFhCtoGA5k5Soao/JB40+gsY+O8LgcNAdejU78m5W4e2qXq4eu/4tFUCw\n" - "GkcRmqitnc5Jy0bEM+wCZKa42Lx0+WAhNRd/70yWIbzXOrXDnLgGc221JeYJ4it0\n" - "ajYcf3AZuSHhL3qsTLLzuYorPqWmDy27psUiDDJOIjxVbBCRL+AY40TsQm7CZZhZ\n" - "8sCkZU7rIvuDv7nf3QpUsF9Zqk9B3F4tTg0vsVuYeL1XCHGwpVeUS83MsZiLP8Zj\n" - "XGQTM6GiWuOAZ9JJjrsCAwEAAaOCAlgwggJUMA4GA1UdDwEB/wQEAwIFoDAdBgNV\n" - "HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4E\n" - "FgQUlw1h3ZwSMKRwkrQ+F4XT3QV/tn8wHwYDVR0jBBgwFoAUFC6zF7dYVsuuUAlA\n" - "5h+vnYsUwsYwVQYIKwYBBQUHAQEESTBHMCEGCCsGAQUFBzABhhVodHRwOi8vcjMu\n" - "by5sZW5jci5vcmcwIgYIKwYBBQUHMAKGFmh0dHA6Ly9yMy5pLmxlbmNyLm9yZy8w\n" - "JwYDVR0RBCAwHoIOKi52b2lkcG9pbnQuaW+CDHZvaWRwb2ludC5pbzBMBgNVHSAE\n" - "RTBDMAgGBmeBDAECATA3BgsrBgEEAYLfEwEBATAoMCYGCCsGAQUFBwIBFhpodHRw\n" - "Oi8vY3BzLmxldHNlbmNyeXB0Lm9yZzCCAQUGCisGAQQB1nkCBAIEgfYEgfMA8QB2\n" - "AN+lXqtogk8fbK3uuF9OPlrqzaISpGpejjsSwCBEXCpzAAABgsme4hAAAAQDAEcw\n" - "RQIhAP6sPHv1PJez/VRMw5xmAAkNU/q9ydq1mTgp7j5uBB9AAiAxm+teG9utZCLP\n" - "TTTv89FHwFV9omfZzDNAiNgg8METHwB3ACl5vvCeOTkh8FZzn2Old+W+V32cYAr4\n" - "+U1dJlwlXceEAAABgsme4gUAAAQDAEgwRgIhAPKWJ7WeuBUSnDqabTAVLKU+PpzA\n" - "bJJ9sehaCKW9AicZAiEAqphpC0lF4/iz2Gkxgd/DEkl9SyyAmR/lEJ7cWDMFhz8w\n" - "DQYJKoZIhvcNAQELBQADggEBAC0aCscObAdTerzGUrDsuQR5FuCTAmvdk3Isqjw1\n" - "dG3WuiwW1Z4ecpqCdvDSIv3toQDWVk6g/oa3fHDnY0/tu//vCwdneDdjK3gCM6cj\n" - "/q0cwj+rGFx/bEVz8PR5kc3DOHGKkmHPN1BNxeLBVpk4jxziXryAVbIvxq9JrGTE\n" - "SfWbWcMkHHw/QzpUfyD3B/GI8qw6XhdaNNkLDEDNV0sCPCuZYc5FBZzU4ExB2vMG\n" - "QVnPfxzKWmxHs10uxXyRZJlOrrbTGU8gi0vnOQZK290dtLzEyU2sdkic1ZSn+fCo\n" - "k++37mNDkiTnIQa3olRqHkypWqGfj8OyqU4XBV2Mmu4UATc=\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIFLzCCBBegAwIBAgISAycvItcPAZ5yClzMOYYcod4cMA0GCSqGSIb3DQEBCwUA\n" - "MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD\n" - "EwJSMzAeFw0yMjA4MjMwNjMzMjlaFw0yMjExMjEwNjMzMjhaMBcxFTATBgNVBAMT\n" - "DHZvaWRwb2ludC5pbzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANSt\n" - "AazUWttuU/swyEdt70bpod6knYDJavnFUwicpT4ZfPh84Y2ci9Ay9oTVR8LzVq+o\n" - "3FIGxXlBFhCtoGA5k5Soao/JB40+gsY+O8LgcNAdejU78m5W4e2qXq4eu/4tFUCw\n" - "GkcRmqitnc5Jy0bEM+wCZKa42Lx0+WAhNRd/70yWIbzXOrXDnLgGc221JeYJ4it0\n" - "ajYcf3AZuSHhL3qsTLLzuYorPqWmDy27psUiDDJOIjxVbBCRL+AY40TsQm7CZZhZ\n" - "8sCkZU7rIvuDv7nf3QpUsF9Zqk9B3F4tTg0vsVuYeL1XCHGwpVeUS83MsZiLP8Zj\n" - "XGQTM6GiWuOAZ9JJjrsCAwEAAaOCAlgwggJUMA4GA1UdDwEB/wQEAwIFoDAdBgNV\n" - "HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4E\n" - "FgQUlw1h3ZwSMKRwkrQ+F4XT3QV/tn8wHwYDVR0jBBgwFoAUFC6zF7dYVsuuUAlA\n" - "5h+vnYsUwsYwVQYIKwYBBQUHAQEESTBHMCEGCCsGAQUFBzABhhVodHRwOi8vcjMu\n" - "by5sZW5jci5vcmcwIgYIKwYBBQUHMAKGFmh0dHA6Ly9yMy5pLmxlbmNyLm9yZy8w\n" - "JwYDVR0RBCAwHoIOKi52b2lkcG9pbnQuaW+CDHZvaWRwb2ludC5pbzBMBgNVHSAE\n" - "RTBDMAgGBmeBDAECATA3BgsrBgEEAYLfEwEBATAoMCYGCCsGAQUFBwIBFhpodHRw\n" - "Oi8vY3BzLmxldHNlbmNyeXB0Lm9yZzCCAQUGCisGAQQB1nkCBAIEgfYEgfMA8QB2\n" - "AN+lXqtogk8fbK3uuF9OPlrqzaISpGpejjsSwCBEXCpzAAABgsme4hAAAAQDAEcw\n" - "RQIhAP6sPHv1PJez/VRMw5xmAAkNU/q9ydq1mTgp7j5uBB9AAiAxm+teG9utZCLP\n" - "TTTv89FHwFV9omfZzDNAiNgg8METHwB3ACl5vvCeOTkh8FZzn2Old+W+V32cYAr4\n" - "+U1dJlwlXceEAAABgsme4gUAAAQDAEgwRgIhAPKWJ7WeuBUSnDqabTAVLKU+PpzA\n" - "bJJ9sehaCKW9AicZAiEAqphpC0lF4/iz2Gkxgd/DEkl9SyyAmR/lEJ7cWDMFhz8w\n" - "DQYJKoZIhvcNAQELBQADggEBAC0aCscObAdTerzGUrDsuQR5FuCTAmvdk3Isqjw1\n" - "dG3WuiwW1Z4ecpqCdvDSIv3toQDWVk6g/oa3fHDnY0/tu//vCwdneDdjK3gCM6cj\n" - "/q0cwj+rGFx/bEVz8PR5kc3DOHGKkmHPN1BNxeLBVpk4jxziXryAVbIvxq9JrGTE\n" - "SfWbWcMkHHw/QzpUfyD3B/GI8qw6XhdaNNkLDEDNV0sCPCuZYc5FBZzU4ExB2vMG\n" - "QVnPfxzKWmxHs10uxXyRZJlOrrbTGU8gi0vnOQZK290dtLzEyU2sdkic1ZSn+fCo\n" - "k++37mNDkiTnIQa3olRqHkypWqGfj8OyqU4XBV2Mmu4UATc=\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw\n" - "TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\n" - "cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw\n" - "WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg\n" - "RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" - "AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP\n" - "R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx\n" - "sxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8Zutm\n" - "NHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxg\n" - "Z3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG\n" - "/kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMC\n" - "AYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYB\n" - "Af8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaA\n" - "FHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcw\n" - "AoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRw\n" - "Oi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAQQB\n" - "gt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6W\n" - "PTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wl\n" - "ikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2QQz\n" - "CkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BIm\n" - "lJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4\n" - "avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2\n" - "yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1O\n" - "yK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90Ids\n" - "hCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+\n" - "HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6Zv\n" - "MldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqX\n" - "nLRbwHOoq7hHwg==\n" - "-----END CERTIFICATE-----\n" - "-----BEGIN CERTIFICATE-----\n" - "MIIFYDCCBEigAwIBAgIQQAF3ITfU6UK47naqPGQKtzANBgkqhkiG9w0BAQsFADA/\n" - "MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT\n" - "DkRTVCBSb290IENBIFgzMB4XDTIxMDEyMDE5MTQwM1oXDTI0MDkzMDE4MTQwM1ow\n" - "TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\n" - "cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwggIiMA0GCSqGSIb3DQEB\n" - "AQUAA4ICDwAwggIKAoICAQCt6CRz9BQ385ueK1coHIe+3LffOJCMbjzmV6B493XC\n" - "ov71am72AE8o295ohmxEk7axY/0UEmu/H9LqMZshftEzPLpI9d1537O4/xLxIZpL\n" - "wYqGcWlKZmZsj348cL+tKSIG8+TA5oCu4kuPt5l+lAOf00eXfJlII1PoOK5PCm+D\n" - "LtFJV4yAdLbaL9A4jXsDcCEbdfIwPPqPrt3aY6vrFk/CjhFLfs8L6P+1dy70sntK\n" - "4EwSJQxwjQMpoOFTJOwT2e4ZvxCzSow/iaNhUd6shweU9GNx7C7ib1uYgeGJXDR5\n" - "bHbvO5BieebbpJovJsXQEOEO3tkQjhb7t/eo98flAgeYjzYIlefiN5YNNnWe+w5y\n" - "sR2bvAP5SQXYgd0FtCrWQemsAXaVCg/Y39W9Eh81LygXbNKYwagJZHduRze6zqxZ\n" - "Xmidf3LWicUGQSk+WT7dJvUkyRGnWqNMQB9GoZm1pzpRboY7nn1ypxIFeFntPlF4\n" - "FQsDj43QLwWyPntKHEtzBRL8xurgUBN8Q5N0s8p0544fAQjQMNRbcTa0B7rBMDBc\n" - "SLeCO5imfWCKoqMpgsy6vYMEG6KDA0Gh1gXxG8K28Kh8hjtGqEgqiNx2mna/H2ql\n" - "PRmP6zjzZN7IKw0KKP/32+IVQtQi0Cdd4Xn+GOdwiK1O5tmLOsbdJ1Fu/7xk9TND\n" - "TwIDAQABo4IBRjCCAUIwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw\n" - "SwYIKwYBBQUHAQEEPzA9MDsGCCsGAQUFBzAChi9odHRwOi8vYXBwcy5pZGVudHJ1\n" - "c3QuY29tL3Jvb3RzL2RzdHJvb3RjYXgzLnA3YzAfBgNVHSMEGDAWgBTEp7Gkeyxx\n" - "+tvhS5B1/8QVYIWJEDBUBgNVHSAETTBLMAgGBmeBDAECATA/BgsrBgEEAYLfEwEB\n" - "ATAwMC4GCCsGAQUFBwIBFiJodHRwOi8vY3BzLnJvb3QteDEubGV0c2VuY3J5cHQu\n" - "b3JnMDwGA1UdHwQ1MDMwMaAvoC2GK2h0dHA6Ly9jcmwuaWRlbnRydXN0LmNvbS9E\n" - "U1RST09UQ0FYM0NSTC5jcmwwHQYDVR0OBBYEFHm0WeZ7tuXkAXOACIjIGlj26Ztu\n" - "MA0GCSqGSIb3DQEBCwUAA4IBAQAKcwBslm7/DlLQrt2M51oGrS+o44+/yQoDFVDC\n" - "5WxCu2+b9LRPwkSICHXM6webFGJueN7sJ7o5XPWioW5WlHAQU7G75K/QosMrAdSW\n" - "9MUgNTP52GE24HGNtLi1qoJFlcDyqSMo59ahy2cI2qBDLKobkx/J3vWraV0T9VuG\n" - "WCLKTVXkcGdtwlfFRjlBz4pYg1htmf5X6DYO8A4jqv2Il9DjXA6USbW1FzXSLr9O\n" - "he8Y4IWS6wY7bCkjCWDcRQJMEhg76fsO3txE+FiYruq9RUWhiF1myv4Q6W+CyBFC\n" - "Dfvp7OOGAN6dEOM4+qR9sdjoSYKEBpsr6GtPAQw4dy753ec5\n" - "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIFLzCCBBegAwIBAgISAycvItcPAZ5yClzMOYYcod4cMA0GCSqGSIb3DQEBCwUA\n" + "MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD\n" + "EwJSMzAeFw0yMjA4MjMwNjMzMjlaFw0yMjExMjEwNjMzMjhaMBcxFTATBgNVBAMT\n" + "DHZvaWRwb2ludC5pbzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANSt\n" + "AazUWttuU/swyEdt70bpod6knYDJavnFUwicpT4ZfPh84Y2ci9Ay9oTVR8LzVq+o\n" + "3FIGxXlBFhCtoGA5k5Soao/JB40+gsY+O8LgcNAdejU78m5W4e2qXq4eu/4tFUCw\n" + "GkcRmqitnc5Jy0bEM+wCZKa42Lx0+WAhNRd/70yWIbzXOrXDnLgGc221JeYJ4it0\n" + "ajYcf3AZuSHhL3qsTLLzuYorPqWmDy27psUiDDJOIjxVbBCRL+AY40TsQm7CZZhZ\n" + "8sCkZU7rIvuDv7nf3QpUsF9Zqk9B3F4tTg0vsVuYeL1XCHGwpVeUS83MsZiLP8Zj\n" + "XGQTM6GiWuOAZ9JJjrsCAwEAAaOCAlgwggJUMA4GA1UdDwEB/wQEAwIFoDAdBgNV\n" + "HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4E\n" + "FgQUlw1h3ZwSMKRwkrQ+F4XT3QV/tn8wHwYDVR0jBBgwFoAUFC6zF7dYVsuuUAlA\n" + "5h+vnYsUwsYwVQYIKwYBBQUHAQEESTBHMCEGCCsGAQUFBzABhhVodHRwOi8vcjMu\n" + "by5sZW5jci5vcmcwIgYIKwYBBQUHMAKGFmh0dHA6Ly9yMy5pLmxlbmNyLm9yZy8w\n" + "JwYDVR0RBCAwHoIOKi52b2lkcG9pbnQuaW+CDHZvaWRwb2ludC5pbzBMBgNVHSAE\n" + "RTBDMAgGBmeBDAECATA3BgsrBgEEAYLfEwEBATAoMCYGCCsGAQUFBwIBFhpodHRw\n" + "Oi8vY3BzLmxldHNlbmNyeXB0Lm9yZzCCAQUGCisGAQQB1nkCBAIEgfYEgfMA8QB2\n" + "AN+lXqtogk8fbK3uuF9OPlrqzaISpGpejjsSwCBEXCpzAAABgsme4hAAAAQDAEcw\n" + "RQIhAP6sPHv1PJez/VRMw5xmAAkNU/q9ydq1mTgp7j5uBB9AAiAxm+teG9utZCLP\n" + "TTTv89FHwFV9omfZzDNAiNgg8METHwB3ACl5vvCeOTkh8FZzn2Old+W+V32cYAr4\n" + "+U1dJlwlXceEAAABgsme4gUAAAQDAEgwRgIhAPKWJ7WeuBUSnDqabTAVLKU+PpzA\n" + "bJJ9sehaCKW9AicZAiEAqphpC0lF4/iz2Gkxgd/DEkl9SyyAmR/lEJ7cWDMFhz8w\n" + "DQYJKoZIhvcNAQELBQADggEBAC0aCscObAdTerzGUrDsuQR5FuCTAmvdk3Isqjw1\n" + "dG3WuiwW1Z4ecpqCdvDSIv3toQDWVk6g/oa3fHDnY0/tu//vCwdneDdjK3gCM6cj\n" + "/q0cwj+rGFx/bEVz8PR5kc3DOHGKkmHPN1BNxeLBVpk4jxziXryAVbIvxq9JrGTE\n" + "SfWbWcMkHHw/QzpUfyD3B/GI8qw6XhdaNNkLDEDNV0sCPCuZYc5FBZzU4ExB2vMG\n" + "QVnPfxzKWmxHs10uxXyRZJlOrrbTGU8gi0vnOQZK290dtLzEyU2sdkic1ZSn+fCo\n" + "k++37mNDkiTnIQa3olRqHkypWqGfj8OyqU4XBV2Mmu4UATc=\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIFLzCCBBegAwIBAgISAycvItcPAZ5yClzMOYYcod4cMA0GCSqGSIb3DQEBCwUA\n" + "MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD\n" + "EwJSMzAeFw0yMjA4MjMwNjMzMjlaFw0yMjExMjEwNjMzMjhaMBcxFTATBgNVBAMT\n" + "DHZvaWRwb2ludC5pbzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANSt\n" + "AazUWttuU/swyEdt70bpod6knYDJavnFUwicpT4ZfPh84Y2ci9Ay9oTVR8LzVq+o\n" + "3FIGxXlBFhCtoGA5k5Soao/JB40+gsY+O8LgcNAdejU78m5W4e2qXq4eu/4tFUCw\n" + "GkcRmqitnc5Jy0bEM+wCZKa42Lx0+WAhNRd/70yWIbzXOrXDnLgGc221JeYJ4it0\n" + "ajYcf3AZuSHhL3qsTLLzuYorPqWmDy27psUiDDJOIjxVbBCRL+AY40TsQm7CZZhZ\n" + "8sCkZU7rIvuDv7nf3QpUsF9Zqk9B3F4tTg0vsVuYeL1XCHGwpVeUS83MsZiLP8Zj\n" + "XGQTM6GiWuOAZ9JJjrsCAwEAAaOCAlgwggJUMA4GA1UdDwEB/wQEAwIFoDAdBgNV\n" + "HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4E\n" + "FgQUlw1h3ZwSMKRwkrQ+F4XT3QV/tn8wHwYDVR0jBBgwFoAUFC6zF7dYVsuuUAlA\n" + "5h+vnYsUwsYwVQYIKwYBBQUHAQEESTBHMCEGCCsGAQUFBzABhhVodHRwOi8vcjMu\n" + "by5sZW5jci5vcmcwIgYIKwYBBQUHMAKGFmh0dHA6Ly9yMy5pLmxlbmNyLm9yZy8w\n" + "JwYDVR0RBCAwHoIOKi52b2lkcG9pbnQuaW+CDHZvaWRwb2ludC5pbzBMBgNVHSAE\n" + "RTBDMAgGBmeBDAECATA3BgsrBgEEAYLfEwEBATAoMCYGCCsGAQUFBwIBFhpodHRw\n" + "Oi8vY3BzLmxldHNlbmNyeXB0Lm9yZzCCAQUGCisGAQQB1nkCBAIEgfYEgfMA8QB2\n" + "AN+lXqtogk8fbK3uuF9OPlrqzaISpGpejjsSwCBEXCpzAAABgsme4hAAAAQDAEcw\n" + "RQIhAP6sPHv1PJez/VRMw5xmAAkNU/q9ydq1mTgp7j5uBB9AAiAxm+teG9utZCLP\n" + "TTTv89FHwFV9omfZzDNAiNgg8METHwB3ACl5vvCeOTkh8FZzn2Old+W+V32cYAr4\n" + "+U1dJlwlXceEAAABgsme4gUAAAQDAEgwRgIhAPKWJ7WeuBUSnDqabTAVLKU+PpzA\n" + "bJJ9sehaCKW9AicZAiEAqphpC0lF4/iz2Gkxgd/DEkl9SyyAmR/lEJ7cWDMFhz8w\n" + "DQYJKoZIhvcNAQELBQADggEBAC0aCscObAdTerzGUrDsuQR5FuCTAmvdk3Isqjw1\n" + "dG3WuiwW1Z4ecpqCdvDSIv3toQDWVk6g/oa3fHDnY0/tu//vCwdneDdjK3gCM6cj\n" + "/q0cwj+rGFx/bEVz8PR5kc3DOHGKkmHPN1BNxeLBVpk4jxziXryAVbIvxq9JrGTE\n" + "SfWbWcMkHHw/QzpUfyD3B/GI8qw6XhdaNNkLDEDNV0sCPCuZYc5FBZzU4ExB2vMG\n" + "QVnPfxzKWmxHs10uxXyRZJlOrrbTGU8gi0vnOQZK290dtLzEyU2sdkic1ZSn+fCo\n" + "k++37mNDkiTnIQa3olRqHkypWqGfj8OyqU4XBV2Mmu4UATc=\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw\n" + "TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\n" + "cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw\n" + "WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg\n" + "RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" + "AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP\n" + "R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx\n" + "sxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8Zutm\n" + "NHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxg\n" + "Z3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG\n" + "/kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMC\n" + "AYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYB\n" + "Af8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaA\n" + "FHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcw\n" + "AoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRw\n" + "Oi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAQQB\n" + "gt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6W\n" + "PTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wl\n" + "ikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2QQz\n" + "CkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BIm\n" + "lJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4\n" + "avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2\n" + "yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1O\n" + "yK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90Ids\n" + "hCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+\n" + "HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6Zv\n" + "MldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqX\n" + "nLRbwHOoq7hHwg==\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIFYDCCBEigAwIBAgIQQAF3ITfU6UK47naqPGQKtzANBgkqhkiG9w0BAQsFADA/\n" + "MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT\n" + "DkRTVCBSb290IENBIFgzMB4XDTIxMDEyMDE5MTQwM1oXDTI0MDkzMDE4MTQwM1ow\n" + "TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\n" + "cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwggIiMA0GCSqGSIb3DQEB\n" + "AQUAA4ICDwAwggIKAoICAQCt6CRz9BQ385ueK1coHIe+3LffOJCMbjzmV6B493XC\n" + "ov71am72AE8o295ohmxEk7axY/0UEmu/H9LqMZshftEzPLpI9d1537O4/xLxIZpL\n" + "wYqGcWlKZmZsj348cL+tKSIG8+TA5oCu4kuPt5l+lAOf00eXfJlII1PoOK5PCm+D\n" + "LtFJV4yAdLbaL9A4jXsDcCEbdfIwPPqPrt3aY6vrFk/CjhFLfs8L6P+1dy70sntK\n" + "4EwSJQxwjQMpoOFTJOwT2e4ZvxCzSow/iaNhUd6shweU9GNx7C7ib1uYgeGJXDR5\n" + "bHbvO5BieebbpJovJsXQEOEO3tkQjhb7t/eo98flAgeYjzYIlefiN5YNNnWe+w5y\n" + "sR2bvAP5SQXYgd0FtCrWQemsAXaVCg/Y39W9Eh81LygXbNKYwagJZHduRze6zqxZ\n" + "Xmidf3LWicUGQSk+WT7dJvUkyRGnWqNMQB9GoZm1pzpRboY7nn1ypxIFeFntPlF4\n" + "FQsDj43QLwWyPntKHEtzBRL8xurgUBN8Q5N0s8p0544fAQjQMNRbcTa0B7rBMDBc\n" + "SLeCO5imfWCKoqMpgsy6vYMEG6KDA0Gh1gXxG8K28Kh8hjtGqEgqiNx2mna/H2ql\n" + "PRmP6zjzZN7IKw0KKP/32+IVQtQi0Cdd4Xn+GOdwiK1O5tmLOsbdJ1Fu/7xk9TND\n" + "TwIDAQABo4IBRjCCAUIwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw\n" + "SwYIKwYBBQUHAQEEPzA9MDsGCCsGAQUFBzAChi9odHRwOi8vYXBwcy5pZGVudHJ1\n" + "c3QuY29tL3Jvb3RzL2RzdHJvb3RjYXgzLnA3YzAfBgNVHSMEGDAWgBTEp7Gkeyxx\n" + "+tvhS5B1/8QVYIWJEDBUBgNVHSAETTBLMAgGBmeBDAECATA/BgsrBgEEAYLfEwEB\n" + "ATAwMC4GCCsGAQUFBwIBFiJodHRwOi8vY3BzLnJvb3QteDEubGV0c2VuY3J5cHQu\n" + "b3JnMDwGA1UdHwQ1MDMwMaAvoC2GK2h0dHA6Ly9jcmwuaWRlbnRydXN0LmNvbS9E\n" + "U1RST09UQ0FYM0NSTC5jcmwwHQYDVR0OBBYEFHm0WeZ7tuXkAXOACIjIGlj26Ztu\n" + "MA0GCSqGSIb3DQEBCwUAA4IBAQAKcwBslm7/DlLQrt2M51oGrS+o44+/yQoDFVDC\n" + "5WxCu2+b9LRPwkSICHXM6webFGJueN7sJ7o5XPWioW5WlHAQU7G75K/QosMrAdSW\n" + "9MUgNTP52GE24HGNtLi1qoJFlcDyqSMo59ahy2cI2qBDLKobkx/J3vWraV0T9VuG\n" + "WCLKTVXkcGdtwlfFRjlBz4pYg1htmf5X6DYO8A4jqv2Il9DjXA6USbW1FzXSLr9O\n" + "he8Y4IWS6wY7bCkjCWDcRQJMEhg76fsO3txE+FiYruq9RUWhiF1myv4Q6W+CyBFC\n" + "Dfvp7OOGAN6dEOM4+qR9sdjoSYKEBpsr6GtPAQw4dy753ec5\n" + "-----END CERTIFICATE-----\n"; void doit(void) { int r; unsigned i, certs_size, out; - unsigned flags = - GNUTLS_VERIFY_DO_NOT_ALLOW_SAME | GNUTLS_VERIFY_DISABLE_TIME_CHECKS; + unsigned flags = GNUTLS_VERIFY_DO_NOT_ALLOW_SAME | + GNUTLS_VERIFY_DISABLE_TIME_CHECKS; gnutls_x509_trust_list_t tl; gnutls_x509_crt_t *certs = NULL; - gnutls_datum_t cert = - { (unsigned char *)cert_pem, sizeof(cert_pem) - 1 }; + gnutls_datum_t cert = { (unsigned char *)cert_pem, + sizeof(cert_pem) - 1 }; - CHECK(gnutls_x509_crt_list_import2 - (&certs, &certs_size, &cert, GNUTLS_X509_FMT_PEM, 0)); + CHECK(gnutls_x509_crt_list_import2(&certs, &certs_size, &cert, + GNUTLS_X509_FMT_PEM, 0)); CHECK(gnutls_x509_trust_list_init(&tl, 0)); CHECK(gnutls_x509_trust_list_add_cas(tl, certs + certs_size - 1, 1, 0)); - CHECK(gnutls_x509_trust_list_verify_crt - (tl, certs, certs_size, flags, &out, NULL)); + CHECK(gnutls_x509_trust_list_verify_crt(tl, certs, certs_size, flags, + &out, NULL)); if (out) fail("Not verified\n"); diff --git a/tests/x509-verify-with-crl.c b/tests/x509-verify-with-crl.c index 3d9884b768..9b16cf91be 100644 --- a/tests/x509-verify-with-crl.c +++ b/tests/x509-verify-with-crl.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -37,78 +37,83 @@ */ static const char _ca[] = { -/* CRL */ + /* CRL */ "-----BEGIN CERTIFICATE-----\n" - "MIIBfTCCASSgAwIBAgIBATAKBggqhkjOPQQDAjAkMQ8wDQYDVQQDEwZWUE4gQ0Ex\n" - "ETAPBgNVBAoTCEJpZyBDb3JwMCIYDzIwMTQxMTMwMjA1NDQ1WhgPOTk5OTEyMzEy\n" - "MzU5NTlaMCQxDzANBgNVBAMTBlZQTiBDQTERMA8GA1UEChMIQmlnIENvcnAwWTAT\n" - "BgcqhkjOPQIBBggqhkjOPQMBBwNCAASvDJl26Hzb47Xi+Wx6uJY0NUD+Bij+PJ9l\n" - "mmS2wbLaLNyga5aRvf+s7HKq9o+7+CE6E0t8fuCe0j8nLN64iAZlo0MwQTAPBgNV\n" - "HRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwHQYDVR0OBBYEFFJATAcyatKW\n" - "ionSww8obkh7JKCYMAoGCCqGSM49BAMCA0cAMEQCIDPmWRvQAUbnSrnh79DM46/l\n" - "My88UjFi2+ZhmIwufLP7AiBB9eeXKUmtWXuXAar0vHNH6edgEcggHgfOOHekukOr\n" - "hw==\n" "-----END CERTIFICATE-----\n" + "MIIBfTCCASSgAwIBAgIBATAKBggqhkjOPQQDAjAkMQ8wDQYDVQQDEwZWUE4gQ0Ex\n" + "ETAPBgNVBAoTCEJpZyBDb3JwMCIYDzIwMTQxMTMwMjA1NDQ1WhgPOTk5OTEyMzEy\n" + "MzU5NTlaMCQxDzANBgNVBAMTBlZQTiBDQTERMA8GA1UEChMIQmlnIENvcnAwWTAT\n" + "BgcqhkjOPQIBBggqhkjOPQMBBwNCAASvDJl26Hzb47Xi+Wx6uJY0NUD+Bij+PJ9l\n" + "mmS2wbLaLNyga5aRvf+s7HKq9o+7+CE6E0t8fuCe0j8nLN64iAZlo0MwQTAPBgNV\n" + "HRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwHQYDVR0OBBYEFFJATAcyatKW\n" + "ionSww8obkh7JKCYMAoGCCqGSM49BAMCA0cAMEQCIDPmWRvQAUbnSrnh79DM46/l\n" + "My88UjFi2+ZhmIwufLP7AiBB9eeXKUmtWXuXAar0vHNH6edgEcggHgfOOHekukOr\n" + "hw==\n" + "-----END CERTIFICATE-----\n" }; gnutls_datum_t ca = { (void *)_ca, sizeof(_ca) - 1 }; static const char _server1[] = { "-----BEGIN CERTIFICATE-----\n" - "MIIBvzCCAWWgAwIBAgIMVHuEbjXPSvP+nSDXMAoGCCqGSM49BAMCMCQxDzANBgNV\n" - "BAMTBlZQTiBDQTERMA8GA1UEChMIQmlnIENvcnAwIhgPMjAxNDExMzAyMDU2MTRa\n" - "GA85OTk5MTIzMTIzNTk1OVowJzERMA8GA1UEAwwIc2VydmVyMQ0xEjAQBgNVBAoT\n" - "CU15Q29tcGFueTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLViTN5K7scNWH0u\n" - "wLvlDj6nJdZ76sP+oZoev+gYMyV42JqG/60S2VizrAIcmQA9QFfGlZz2GpE641Gd\n" - "HiH09dajdjB0MAwGA1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYD\n" - "VR0PAQH/BAUDAweAADAdBgNVHQ4EFgQUNWE8WZGVgvhyw/56sMSCuyXhBjMwHwYD\n" - "VR0jBBgwFoAUUkBMBzJq0paKidLDDyhuSHskoJgwCgYIKoZIzj0EAwIDSAAwRQIh\n" - "AKk+TA7XgvPwo6oDcAWUYgQbnKWEh5xO55nvNf6TVgMrAiAEI+w6IVJbXgtmskIJ\n" - "gedi4kA4sDjRKtTzfxlIdaZhuA==\n" "-----END CERTIFICATE-----\n" + "MIIBvzCCAWWgAwIBAgIMVHuEbjXPSvP+nSDXMAoGCCqGSM49BAMCMCQxDzANBgNV\n" + "BAMTBlZQTiBDQTERMA8GA1UEChMIQmlnIENvcnAwIhgPMjAxNDExMzAyMDU2MTRa\n" + "GA85OTk5MTIzMTIzNTk1OVowJzERMA8GA1UEAwwIc2VydmVyMQ0xEjAQBgNVBAoT\n" + "CU15Q29tcGFueTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLViTN5K7scNWH0u\n" + "wLvlDj6nJdZ76sP+oZoev+gYMyV42JqG/60S2VizrAIcmQA9QFfGlZz2GpE641Gd\n" + "HiH09dajdjB0MAwGA1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYD\n" + "VR0PAQH/BAUDAweAADAdBgNVHQ4EFgQUNWE8WZGVgvhyw/56sMSCuyXhBjMwHwYD\n" + "VR0jBBgwFoAUUkBMBzJq0paKidLDDyhuSHskoJgwCgYIKoZIzj0EAwIDSAAwRQIh\n" + "AKk+TA7XgvPwo6oDcAWUYgQbnKWEh5xO55nvNf6TVgMrAiAEI+w6IVJbXgtmskIJ\n" + "gedi4kA4sDjRKtTzfxlIdaZhuA==\n" + "-----END CERTIFICATE-----\n" }; gnutls_datum_t server1 = { (void *)_server1, sizeof(_server1) - 1 }; static const char _server2[] = { "-----BEGIN CERTIFICATE-----\n" - "MIIBvzCCAWWgAwIBAgIMVHuEfQn9F35YK44BMAoGCCqGSM49BAMCMCQxDzANBgNV\n" - "BAMTBlZQTiBDQTERMA8GA1UEChMIQmlnIENvcnAwIhgPMjAxNDExMzAyMDU2Mjla\n" - "GA85OTk5MTIzMTIzNTk1OVowJzERMA8GA1UEAwwIc2VydmVyMg0xEjAQBgNVBAoT\n" - "CU15Q29tcGFueTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBfy/l8rtthQYHRA\n" - "sWoY3E7HHM2eP0RyNrusfh6Okl4TN8D1jlmx3yc+9h4RqIvC6dHhSS/mio8fjZpU\n" - "aXzv7dujdjB0MAwGA1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYD\n" - "VR0PAQH/BAUDAweAADAdBgNVHQ4EFgQUee5izg6T1FxiNtJbWBz90d20GVYwHwYD\n" - "VR0jBBgwFoAUUkBMBzJq0paKidLDDyhuSHskoJgwCgYIKoZIzj0EAwIDSAAwRQIh\n" - "AKMgl86d4ENyrpqkXR7pN8FN/Pd1Hji6Usnm536zuFjIAiA9RRxtPQXjrk3Sx8QR\n" - "c0NrnBYRCM24FXMHSWOL1YUb7w==\n" "-----END CERTIFICATE-----\n" + "MIIBvzCCAWWgAwIBAgIMVHuEfQn9F35YK44BMAoGCCqGSM49BAMCMCQxDzANBgNV\n" + "BAMTBlZQTiBDQTERMA8GA1UEChMIQmlnIENvcnAwIhgPMjAxNDExMzAyMDU2Mjla\n" + "GA85OTk5MTIzMTIzNTk1OVowJzERMA8GA1UEAwwIc2VydmVyMg0xEjAQBgNVBAoT\n" + "CU15Q29tcGFueTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBfy/l8rtthQYHRA\n" + "sWoY3E7HHM2eP0RyNrusfh6Okl4TN8D1jlmx3yc+9h4RqIvC6dHhSS/mio8fjZpU\n" + "aXzv7dujdjB0MAwGA1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYD\n" + "VR0PAQH/BAUDAweAADAdBgNVHQ4EFgQUee5izg6T1FxiNtJbWBz90d20GVYwHwYD\n" + "VR0jBBgwFoAUUkBMBzJq0paKidLDDyhuSHskoJgwCgYIKoZIzj0EAwIDSAAwRQIh\n" + "AKMgl86d4ENyrpqkXR7pN8FN/Pd1Hji6Usnm536zuFjIAiA9RRxtPQXjrk3Sx8QR\n" + "c0NrnBYRCM24FXMHSWOL1YUb7w==\n" + "-----END CERTIFICATE-----\n" }; gnutls_datum_t server2 = { (void *)_server2, sizeof(_server2) - 1 }; static const char _server3[] = { "-----BEGIN CERTIFICATE-----\n" - "MIIBvjCCAWWgAwIBAgIMVHuEhyM4BCuvifY3MAoGCCqGSM49BAMCMCQxDzANBgNV\n" - "BAMTBlZQTiBDQTERMA8GA1UEChMIQmlnIENvcnAwIhgPMjAxNDExMzAyMDU2Mzla\n" - "GA85OTk5MTIzMTIzNTk1OVowJzERMA8GA1UEAwwIc2VydmVyMw0xEjAQBgNVBAoT\n" - "CU15Q29tcGFueTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLKjVDVHPM7sK8Gr\n" - "+eUTmT1sQSVhUr4znBEkiccPlGTN30m5KoaM1cflRxb+p/pYk6xFfAZW/33XmWON\n" - "IjwygACjdjB0MAwGA1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYD\n" - "VR0PAQH/BAUDAweAADAdBgNVHQ4EFgQU3TmVO7uyA1t4+tbbmTbKoXiHP1QwHwYD\n" - "VR0jBBgwFoAUUkBMBzJq0paKidLDDyhuSHskoJgwCgYIKoZIzj0EAwIDRwAwRAIg\n" - "RI1GVQ/ol9Es0niE3Ex/X+2a5tEVBOECLO3+Vr6rPs0CIHSxEksboGo8qJzESmjY\n" - "If7aJsOFgpBmGKWGf+dVDjjg\n" "-----END CERTIFICATE-----\n" + "MIIBvjCCAWWgAwIBAgIMVHuEhyM4BCuvifY3MAoGCCqGSM49BAMCMCQxDzANBgNV\n" + "BAMTBlZQTiBDQTERMA8GA1UEChMIQmlnIENvcnAwIhgPMjAxNDExMzAyMDU2Mzla\n" + "GA85OTk5MTIzMTIzNTk1OVowJzERMA8GA1UEAwwIc2VydmVyMw0xEjAQBgNVBAoT\n" + "CU15Q29tcGFueTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLKjVDVHPM7sK8Gr\n" + "+eUTmT1sQSVhUr4znBEkiccPlGTN30m5KoaM1cflRxb+p/pYk6xFfAZW/33XmWON\n" + "IjwygACjdjB0MAwGA1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYD\n" + "VR0PAQH/BAUDAweAADAdBgNVHQ4EFgQU3TmVO7uyA1t4+tbbmTbKoXiHP1QwHwYD\n" + "VR0jBBgwFoAUUkBMBzJq0paKidLDDyhuSHskoJgwCgYIKoZIzj0EAwIDRwAwRAIg\n" + "RI1GVQ/ol9Es0niE3Ex/X+2a5tEVBOECLO3+Vr6rPs0CIHSxEksboGo8qJzESmjY\n" + "If7aJsOFgpBmGKWGf+dVDjjg\n" + "-----END CERTIFICATE-----\n" }; gnutls_datum_t server3 = { (void *)_server3, sizeof(_server3) - 1 }; static const char _crl[] = { "-----BEGIN X509 CRL-----\n" - "MIIBJTCBzAIBATAKBggqhkjOPQQDAjAkMQ8wDQYDVQQDEwZWUE4gQ0ExETAPBgNV\n" - "BAoTCEJpZyBDb3JwGA8yMDE0MTEzMDIxMTkwNFoYDzk5OTkxMjMxMjM1OTU5WjBC\n" - "MB8CDFR7hnMaGdABn3iWABgPMjAxNDExMzAyMTE5MDRaMB8CDFR7hH0J/Rd+WCuO\n" - "ARgPMjAxNDExMzAyMTE5MDRaoC8wLTAfBgNVHSMEGDAWgBRSQEwHMmrSloqJ0sMP\n" - "KG5IeySgmDAKBgNVHRQEAwIBATAKBggqhkjOPQQDAgNIADBFAiEAt3Ks2JNhxuuT\n" - "nzok7rYbi+p6dWiPj7mWNawba2+xjYwCIGpTiTU1ssn5Fa70j7S+PjmnN4fuyjXh\n" - "AuXYcsNpjsPz\n" "-----END X509 CRL-----\n" + "MIIBJTCBzAIBATAKBggqhkjOPQQDAjAkMQ8wDQYDVQQDEwZWUE4gQ0ExETAPBgNV\n" + "BAoTCEJpZyBDb3JwGA8yMDE0MTEzMDIxMTkwNFoYDzk5OTkxMjMxMjM1OTU5WjBC\n" + "MB8CDFR7hnMaGdABn3iWABgPMjAxNDExMzAyMTE5MDRaMB8CDFR7hH0J/Rd+WCuO\n" + "ARgPMjAxNDExMzAyMTE5MDRaoC8wLTAfBgNVHSMEGDAWgBRSQEwHMmrSloqJ0sMP\n" + "KG5IeySgmDAKBgNVHRQEAwIBATAKBggqhkjOPQQDAgNIADBFAiEAt3Ks2JNhxuuT\n" + "nzok7rYbi+p6dWiPj7mWNawba2+xjYwCIGpTiTU1ssn5Fa70j7S+PjmnN4fuyjXh\n" + "AuXYcsNpjsPz\n" + "-----END X509 CRL-----\n" }; gnutls_datum_t crl = { (void *)_crl, sizeof(_crl) - 1 }; @@ -117,7 +122,7 @@ gnutls_datum_t crl = { (void *)_crl, sizeof(_crl) - 1 }; verifying certificates. To avoid a time bomb, we hard code the current time. This should work fine on systems where the library call to time is resolved at run-time. */ -static time_t mytime(time_t * t) +static time_t mytime(time_t *t) { time_t then = 1417381345; @@ -180,45 +185,40 @@ void doit(void) exit(1); } - ret = - gnutls_x509_trust_list_add_trust_mem(tl, &ca, NULL, - GNUTLS_X509_FMT_PEM, 0, 0); + ret = gnutls_x509_trust_list_add_trust_mem(tl, &ca, NULL, + GNUTLS_X509_FMT_PEM, 0, 0); if (ret != 1) { fail("error in %d: (%d) %s\n", __LINE__, ret, gnutls_strerror(ret)); exit(1); } - ret = - gnutls_x509_trust_list_add_trust_mem(tl, NULL, &crl, - GNUTLS_X509_FMT_PEM, 0, 0); + ret = gnutls_x509_trust_list_add_trust_mem(tl, NULL, &crl, + GNUTLS_X509_FMT_PEM, 0, 0); if (ret < 0) { fail("error in %d: (%d) %s\n", __LINE__, ret, gnutls_strerror(ret)); exit(1); } - ret = - gnutls_x509_trust_list_verify_crt2(tl, &s1, 1, NULL, 0, 0, &status, - NULL); + ret = gnutls_x509_trust_list_verify_crt2(tl, &s1, 1, NULL, 0, 0, + &status, NULL); if (ret < 0 || status != 0) { fail("error in %d: (status: 0x%x) %s\n", __LINE__, status, gnutls_strerror(ret)); exit(1); } - ret = - gnutls_x509_trust_list_verify_crt2(tl, &s2, 1, NULL, 0, 0, &status, - NULL); + ret = gnutls_x509_trust_list_verify_crt2(tl, &s2, 1, NULL, 0, 0, + &status, NULL); if (ret < 0 || status != (GNUTLS_CERT_INVALID | GNUTLS_CERT_REVOKED)) { fail("error in %d: (status: 0x%x) %s\n", __LINE__, status, gnutls_strerror(ret)); exit(1); } - ret = - gnutls_x509_trust_list_verify_crt2(tl, &s3, 1, NULL, 0, 0, &status, - NULL); + ret = gnutls_x509_trust_list_verify_crt2(tl, &s3, 1, NULL, 0, 0, + &status, NULL); if (ret < 0 || status != 0) { fail("error in %d: (status: 0x%x) %s\n", __LINE__, status, gnutls_strerror(ret)); diff --git a/tests/x509_altname.c b/tests/x509_altname.c index b8af3c2df0..a33d080e3b 100644 --- a/tests/x509_altname.c +++ b/tests/x509_altname.c @@ -19,7 +19,7 @@ */ #ifdef HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include @@ -29,34 +29,35 @@ #include "utils.h" static char pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIE6zCCA9OgAwIBAgIBdjANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJTRTEf\n" - "MB0GA1UEChMWU3RvY2tob2xtcyB1bml2ZXJzaXRldDEgMB4GA1UEAxMXU3RvY2to\n" - "b2xtIFVuaXZlcnNpdHkgQ0EwHhcNMDYwMzIyMDkxNTI4WhcNMDcwMzIyMDkxNTI4\n" - "WjBDMQswCQYDVQQGEwJTRTEfMB0GA1UEChMWU3RvY2tob2xtcyB1bml2ZXJzaXRl\n" - "dDETMBEGA1UEAxMKc2lwMS5zdS5zZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC\n" - "gYEArUzXTD36ZK7CwZJH/faUNTcdaqM7JyiZsfrO703d7cT/bJ3wKxT8trOOh/Ou\n" - "WwgGFX2+r7ykun3aIUXUuD13Yle/yHqH/4g9vWX7UeFCBlSI0tAxnlqt0QqlPgSd\n" - "GLHcoO4PPyjon9jj0A/zpJGZHiRUCooo63YqE9MYfr5HBfkCAwEAAaOCAl8wggJb\n" - "MAsGA1UdDwQEAwIF4DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHQYD\n" - "VR0OBBYEFDpcXNHMLJ7fc/c72BtZseq4MDXFMH8GA1UdIwR4MHaAFJ4uMLo32VFE\n" - "yZ2/GCHxvX7utYZIoVukWTBXMQswCQYDVQQGEwJTRTEYMBYGA1UEChMPVW1lYSBV\n" - "bml2ZXJzaXR5MRMwEQYDVQQLEwpTd1VQS0ktUENBMRkwFwYDVQQDExBTd1VQS0kg\n" - "UG9saWN5IENBggEQMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jYS5zdS5zZS8y\n" - "MDA1LTEvY3JsLXYyLmNybDB5BgNVHSAEcjBwMG4GCCqFcCsCAQEBMGIwHwYIKwYB\n" - "BQUHAgEWE2h0dHA6Ly9jYS5zdS5zZS9DUFMwPwYIKwYBBQUHAgIwMxoxTGltaXRl\n" - "ZCBMaWFiaWxpdHksIHNlZSBodHRwOi8vd3d3LnN3dXBraS5zdS5zZS9DUDAkBgNV\n" - "HRIEHTAbgQhjYUBzdS5zZYYPaHR0cDovL2NhLnN1LnNlMIG3BgNVHREEga8wgayC\n" - "F2luY29taW5ncHJveHkuc2lwLnN1LnNlghhpbmNvbWluZ3Byb3h5MS5zaXAuc3Uu\n" - "c2WCF291dGdvaW5ncHJveHkuc2lwLnN1LnNlghhvdXRnb2luZ3Byb3h5MS5zaXAu\n" - "c3Uuc2WCDW91dC5zaXAuc3Uuc2WCE2FwcHNlcnZlci5zaXAuc3Uuc2WCFGFwcHNl\n" - "cnZlcjEuc2lwLnN1LnNlggpzaXAxLnN1LnNlMA0GCSqGSIb3DQEBBQUAA4IBAQAR\n" - "FYg7ytcph0E7WmvM44AN/8qru7tRX6aSFWrjLyVr/1Wk4prCK4y5JpfNw5dh9Z8f\n" - "/gyFsr1iFsb6fS3nJTTd3fVlWRfcNCGIx5g8KuSb3u6f7VznkGOeiRMRESQc1G8B\n" - "eh0zbdZS7BYO2g9EKlbGST5PwQnc4g9K7pqPyKSNVkzb60Nujg/+qYje7MCcN+ZR\n" - "nUBo6U2NZ06/QEUFm+uUIhZ8IGM1gLehC7Q3G4+d4c38CDJxQnSPOgWiXuSvhhQm\n" - "KDsbrKzRaeBRh5eEJbTkA8Dp0Emb0UrkRVhixeg97stxUcATAjdGljJ9MLnuHXnI\n" - "7ihGdUfg5q/105vpsQpO\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIE6zCCA9OgAwIBAgIBdjANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJTRTEf\n" + "MB0GA1UEChMWU3RvY2tob2xtcyB1bml2ZXJzaXRldDEgMB4GA1UEAxMXU3RvY2to\n" + "b2xtIFVuaXZlcnNpdHkgQ0EwHhcNMDYwMzIyMDkxNTI4WhcNMDcwMzIyMDkxNTI4\n" + "WjBDMQswCQYDVQQGEwJTRTEfMB0GA1UEChMWU3RvY2tob2xtcyB1bml2ZXJzaXRl\n" + "dDETMBEGA1UEAxMKc2lwMS5zdS5zZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC\n" + "gYEArUzXTD36ZK7CwZJH/faUNTcdaqM7JyiZsfrO703d7cT/bJ3wKxT8trOOh/Ou\n" + "WwgGFX2+r7ykun3aIUXUuD13Yle/yHqH/4g9vWX7UeFCBlSI0tAxnlqt0QqlPgSd\n" + "GLHcoO4PPyjon9jj0A/zpJGZHiRUCooo63YqE9MYfr5HBfkCAwEAAaOCAl8wggJb\n" + "MAsGA1UdDwQEAwIF4DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHQYD\n" + "VR0OBBYEFDpcXNHMLJ7fc/c72BtZseq4MDXFMH8GA1UdIwR4MHaAFJ4uMLo32VFE\n" + "yZ2/GCHxvX7utYZIoVukWTBXMQswCQYDVQQGEwJTRTEYMBYGA1UEChMPVW1lYSBV\n" + "bml2ZXJzaXR5MRMwEQYDVQQLEwpTd1VQS0ktUENBMRkwFwYDVQQDExBTd1VQS0kg\n" + "UG9saWN5IENBggEQMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jYS5zdS5zZS8y\n" + "MDA1LTEvY3JsLXYyLmNybDB5BgNVHSAEcjBwMG4GCCqFcCsCAQEBMGIwHwYIKwYB\n" + "BQUHAgEWE2h0dHA6Ly9jYS5zdS5zZS9DUFMwPwYIKwYBBQUHAgIwMxoxTGltaXRl\n" + "ZCBMaWFiaWxpdHksIHNlZSBodHRwOi8vd3d3LnN3dXBraS5zdS5zZS9DUDAkBgNV\n" + "HRIEHTAbgQhjYUBzdS5zZYYPaHR0cDovL2NhLnN1LnNlMIG3BgNVHREEga8wgayC\n" + "F2luY29taW5ncHJveHkuc2lwLnN1LnNlghhpbmNvbWluZ3Byb3h5MS5zaXAuc3Uu\n" + "c2WCF291dGdvaW5ncHJveHkuc2lwLnN1LnNlghhvdXRnb2luZ3Byb3h5MS5zaXAu\n" + "c3Uuc2WCDW91dC5zaXAuc3Uuc2WCE2FwcHNlcnZlci5zaXAuc3Uuc2WCFGFwcHNl\n" + "cnZlcjEuc2lwLnN1LnNlggpzaXAxLnN1LnNlMA0GCSqGSIb3DQEBBQUAA4IBAQAR\n" + "FYg7ytcph0E7WmvM44AN/8qru7tRX6aSFWrjLyVr/1Wk4prCK4y5JpfNw5dh9Z8f\n" + "/gyFsr1iFsb6fS3nJTTd3fVlWRfcNCGIx5g8KuSb3u6f7VznkGOeiRMRESQc1G8B\n" + "eh0zbdZS7BYO2g9EKlbGST5PwQnc4g9K7pqPyKSNVkzb60Nujg/+qYje7MCcN+ZR\n" + "nUBo6U2NZ06/QEUFm+uUIhZ8IGM1gLehC7Q3G4+d4c38CDJxQnSPOgWiXuSvhhQm\n" + "KDsbrKzRaeBRh5eEJbTkA8Dp0Emb0UrkRVhixeg97stxUcATAjdGljJ9MLnuHXnI\n" + "7ihGdUfg5q/105vpsQpO\n" + "-----END CERTIFICATE-----\n"; #define MAX_DATA_SIZE 1024 @@ -83,11 +84,8 @@ void doit(void) fail("crt_import %d\n", ret); for (alt_name_count = 0;; ++alt_name_count) { - ret = - gnutls_x509_crt_get_issuer_alt_name(cert, - alt_name_count, - data, &data_len, - &critical); + ret = gnutls_x509_crt_get_issuer_alt_name( + cert, alt_name_count, data, &data_len, &critical); if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) break; @@ -102,7 +100,8 @@ void doit(void) } } else if (GNUTLS_SAN_RFC822NAME == ret) { if (strcmp(data, "ca@su.se") != 0) { - fail("unexpected issuer GNUTLS_SAN_RFC822NAME: %s\n", data); + fail("unexpected issuer GNUTLS_SAN_RFC822NAME: %s\n", + data); } } else { fail("unexpected alt name type: %d\n", ret); diff --git a/tests/x509cert-ct.c b/tests/x509cert-ct.c index 559a58366f..7483b1c6b1 100644 --- a/tests/x509cert-ct.c +++ b/tests/x509cert-ct.c @@ -22,7 +22,7 @@ /* Parts copied from other tests */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -38,45 +38,46 @@ #include "utils.h" static char pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIG+jCCBeKgAwIBAgIQPurql+NcbKQ/8rR9djN5DDANBgkqhkiG9w0BAQsFADCB\n" - "hDELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5bWFudGVjIENvcnBvcmF0aW9uMR8w\n" - "HQYDVQQLExZTeW1hbnRlYyBUcnVzdCBOZXR3b3JrMTUwMwYDVQQDEyxTeW1hbnRl\n" - "YyBDbGFzcyAzIFNlY3VyZSBTZXJ2ZXIgU0hBMjU2IFNTTCBDQTAeFw0xNzAzMjAw\n" - "MDAwMDBaFw0yMDAzMjQyMzU5NTlaMHMxCzAJBgNVBAYTAlVTMREwDwYDVQQIDAhO\n" - "ZXcgWW9yazERMA8GA1UEBwwITmV3IFlvcmsxJzAlBgNVBAoMHkFtZXJpY2FuIENp\n" - "dmlsIExpYmVydGllcyBVbmlvbjEVMBMGA1UEAwwMd3d3LmFjbHUub3JnMIIBIjAN\n" - "BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAui9XzdLmI2JH+05y4WAV7jHn2Vyk\n" - "k+92pm/mdQcfJDyNR6gotaLBvBy9n9SeDj03eGlYUKZ1lgBeHhM17FMWuWoazETl\n" - "EU2Iq1ugHn3V+Rr2IkQ8f00RcNXRlYCQOiL0WYrrXPHZUNh1aQ4kwFaFGT0iNsKS\n" - "kGwf56b1goJujqwtLIBzRdHOLzWGCq1Kn/VeDTi2QQyTVQLWsDZzZApUXMyoc1xv\n" - "go7r1lvHWbJ04up0YwXssC67lw4SKK+/2lZF0Fu0baooHQOlQ5jk0DQhQ6Hsgp/t\n" - "UYhrv56cVf9MWrBEbVBg79yiyWb+rrXhk9KeMbFFsxNEWiA5TREejEhVXwIDAQAB\n" - "o4IDdjCCA3IwMgYDVR0RBCswKYIPYWN0aW9uLmFjbHUub3Jnggx3d3cuYWNsdS5v\n" - "cmeCCGFjbHUub3JnMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMGEGA1UdIARa\n" - "MFgwVgYGZ4EMAQICMEwwIwYIKwYBBQUHAgEWF2h0dHBzOi8vZC5zeW1jYi5jb20v\n" - "Y3BzMCUGCCsGAQUFBwICMBkMF2h0dHBzOi8vZC5zeW1jYi5jb20vcnBhMCsGA1Ud\n" - "HwQkMCIwIKAeoByGGmh0dHA6Ly9zZy5zeW1jYi5jb20vc2cuY3JsMB0GA1UdJQQW\n" - "MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAfBgNVHSMEGDAWgBTbYiD7fQKJfNI7b8fk\n" - "MmwFUh2tsTBXBggrBgEFBQcBAQRLMEkwHwYIKwYBBQUHMAGGE2h0dHA6Ly9zZy5z\n" - "eW1jZC5jb20wJgYIKwYBBQUHMAKGGmh0dHA6Ly9zZy5zeW1jYi5jb20vc2cuY3J0\n" - "MIIB9gYKKwYBBAHWeQIEAgSCAeYEggHiAeAAdQDd6x0reg1PpiCLga2BaHB+Lo6d\n" - "AdVciI09EcTNtuy+zAAAAVrspLZKAAAEAwBGMEQCIEuVHq0xyXfN8XP0Ly8eTEJB\n" - "3XMAKhaercn0EqjtgNUPAiBN+/pUJ9EwF4yh2hRU1U3KkdzTI+KDerLZCl004ADF\n" - "cgB3AKS5CZC0GFgUh7sTosxncAo8NZgE+RvfuON3zQ7IDdwQAAABWuyktugAAAQD\n" - "AEgwRgIhAPoMU/iz0Ne4vgM4cQol7zLVS8xEc18natc9EgLpOqvvAiEAtyt6nMg7\n" - "18/axecg1fk2dcDKCP8EpEJWnabnDRwMb00AdgDuS723dc5guuFCaR+r4Z5mow9+\n" - "X7By2IMAxHuJeqj9ywAAAVrspLadAAAEAwBHMEUCIH8pZN5die2lOt6i2NS57xxd\n" - "uo12mGZ4Xt6cPARVZCipAiEAxOGXK63gCml0jZnlBAN/41YMCNF0cCl9rMIRmEOe\n" - "ffYAdgC8eOHfxfY8aEZJM02hD6FfCXlpIAnAgbTz9pF/Ptm4pQAAAVrspLdAAAAE\n" - "AwBHMEUCIDtHn+q93n/mGGzdFZb9PImevE3t8yi4FpEKQh3fN+HdAiEA618tN/lR\n" - "9m8dh0BVfHAJ9o3CAT53sWjO37sFhHPNOT4wDQYJKoZIhvcNAQELBQADggEBALEV\n" - "pKCM+njCWn74ThjbBEH23rWDYNU3Dl4O5J1U0wJdp4uTvZQbTHlvuAYnQr2WUBX5\n" - "OOvZdVLKDZJqZ/KJ2TLjBUQGWHylu6kE2PWuOTrJ6eC2UnR8zj0RavELHXuGUmQt\n" - "p5UESDjGI6IUDfI6IdxIKydnIStQLuKlaGsz3bsD1yc8XfCNjkmxf3DfC2qnnO6q\n" - "0i2o1SkjCesCqrgPQuVM95vF5I+dRcrk1nHOLCgDLYeoOSFpkPzk5EF7gDrfuLHn\n" - "a7MqZSlOcbf6XcGmsOPH0SCYLyNiJwuBX2W3fw2rP9adpWniGK5kyIEU6Nrkgc31\n" - "ESMyYNL3A9igh1jySzg=\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIG+jCCBeKgAwIBAgIQPurql+NcbKQ/8rR9djN5DDANBgkqhkiG9w0BAQsFADCB\n" + "hDELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5bWFudGVjIENvcnBvcmF0aW9uMR8w\n" + "HQYDVQQLExZTeW1hbnRlYyBUcnVzdCBOZXR3b3JrMTUwMwYDVQQDEyxTeW1hbnRl\n" + "YyBDbGFzcyAzIFNlY3VyZSBTZXJ2ZXIgU0hBMjU2IFNTTCBDQTAeFw0xNzAzMjAw\n" + "MDAwMDBaFw0yMDAzMjQyMzU5NTlaMHMxCzAJBgNVBAYTAlVTMREwDwYDVQQIDAhO\n" + "ZXcgWW9yazERMA8GA1UEBwwITmV3IFlvcmsxJzAlBgNVBAoMHkFtZXJpY2FuIENp\n" + "dmlsIExpYmVydGllcyBVbmlvbjEVMBMGA1UEAwwMd3d3LmFjbHUub3JnMIIBIjAN\n" + "BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAui9XzdLmI2JH+05y4WAV7jHn2Vyk\n" + "k+92pm/mdQcfJDyNR6gotaLBvBy9n9SeDj03eGlYUKZ1lgBeHhM17FMWuWoazETl\n" + "EU2Iq1ugHn3V+Rr2IkQ8f00RcNXRlYCQOiL0WYrrXPHZUNh1aQ4kwFaFGT0iNsKS\n" + "kGwf56b1goJujqwtLIBzRdHOLzWGCq1Kn/VeDTi2QQyTVQLWsDZzZApUXMyoc1xv\n" + "go7r1lvHWbJ04up0YwXssC67lw4SKK+/2lZF0Fu0baooHQOlQ5jk0DQhQ6Hsgp/t\n" + "UYhrv56cVf9MWrBEbVBg79yiyWb+rrXhk9KeMbFFsxNEWiA5TREejEhVXwIDAQAB\n" + "o4IDdjCCA3IwMgYDVR0RBCswKYIPYWN0aW9uLmFjbHUub3Jnggx3d3cuYWNsdS5v\n" + "cmeCCGFjbHUub3JnMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMGEGA1UdIARa\n" + "MFgwVgYGZ4EMAQICMEwwIwYIKwYBBQUHAgEWF2h0dHBzOi8vZC5zeW1jYi5jb20v\n" + "Y3BzMCUGCCsGAQUFBwICMBkMF2h0dHBzOi8vZC5zeW1jYi5jb20vcnBhMCsGA1Ud\n" + "HwQkMCIwIKAeoByGGmh0dHA6Ly9zZy5zeW1jYi5jb20vc2cuY3JsMB0GA1UdJQQW\n" + "MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAfBgNVHSMEGDAWgBTbYiD7fQKJfNI7b8fk\n" + "MmwFUh2tsTBXBggrBgEFBQcBAQRLMEkwHwYIKwYBBQUHMAGGE2h0dHA6Ly9zZy5z\n" + "eW1jZC5jb20wJgYIKwYBBQUHMAKGGmh0dHA6Ly9zZy5zeW1jYi5jb20vc2cuY3J0\n" + "MIIB9gYKKwYBBAHWeQIEAgSCAeYEggHiAeAAdQDd6x0reg1PpiCLga2BaHB+Lo6d\n" + "AdVciI09EcTNtuy+zAAAAVrspLZKAAAEAwBGMEQCIEuVHq0xyXfN8XP0Ly8eTEJB\n" + "3XMAKhaercn0EqjtgNUPAiBN+/pUJ9EwF4yh2hRU1U3KkdzTI+KDerLZCl004ADF\n" + "cgB3AKS5CZC0GFgUh7sTosxncAo8NZgE+RvfuON3zQ7IDdwQAAABWuyktugAAAQD\n" + "AEgwRgIhAPoMU/iz0Ne4vgM4cQol7zLVS8xEc18natc9EgLpOqvvAiEAtyt6nMg7\n" + "18/axecg1fk2dcDKCP8EpEJWnabnDRwMb00AdgDuS723dc5guuFCaR+r4Z5mow9+\n" + "X7By2IMAxHuJeqj9ywAAAVrspLadAAAEAwBHMEUCIH8pZN5die2lOt6i2NS57xxd\n" + "uo12mGZ4Xt6cPARVZCipAiEAxOGXK63gCml0jZnlBAN/41YMCNF0cCl9rMIRmEOe\n" + "ffYAdgC8eOHfxfY8aEZJM02hD6FfCXlpIAnAgbTz9pF/Ptm4pQAAAVrspLdAAAAE\n" + "AwBHMEUCIDtHn+q93n/mGGzdFZb9PImevE3t8yi4FpEKQh3fN+HdAiEA618tN/lR\n" + "9m8dh0BVfHAJ9o3CAT53sWjO37sFhHPNOT4wDQYJKoZIhvcNAQELBQADggEBALEV\n" + "pKCM+njCWn74ThjbBEH23rWDYNU3Dl4O5J1U0wJdp4uTvZQbTHlvuAYnQr2WUBX5\n" + "OOvZdVLKDZJqZ/KJ2TLjBUQGWHylu6kE2PWuOTrJ6eC2UnR8zj0RavELHXuGUmQt\n" + "p5UESDjGI6IUDfI6IdxIKydnIStQLuKlaGsz3bsD1yc8XfCNjkmxf3DfC2qnnO6q\n" + "0i2o1SkjCesCqrgPQuVM95vF5I+dRcrk1nHOLCgDLYeoOSFpkPzk5EF7gDrfuLHn\n" + "a7MqZSlOcbf6XcGmsOPH0SCYLyNiJwuBX2W3fw2rP9adpWniGK5kyIEU6Nrkgc31\n" + "ESMyYNL3A9igh1jySzg=\n" + "-----END CERTIFICATE-----\n"; static unsigned char ct_extension_der[486] = { 0x04, 0x82, 0x01, 0xe2, 0x01, 0xe0, 0x00, 0x75, 0x00, 0xdd, 0xeb, 0x1d, @@ -122,7 +123,7 @@ static unsigned char ct_extension_der[486] = { 0x05, 0x84, 0x73, 0xcd, 0x39, 0x3e }; -static void check_scts(const gnutls_datum_t * ext) +static void check_scts(const gnutls_datum_t *ext) { int ret; unsigned int i, version; @@ -138,46 +139,50 @@ static void check_scts(const gnutls_datum_t * ext) gnutls_sign_algorithm_t sigalg; gnutls_datum_t sig; } expected_data[NUM_EXPECTED_SCTS] = { - { - .logid = - "\xdd\xeb\x1d\x2b\x7a\x0d\x4f\xa6\x20\x8b\x81\xad\x81\x68\x70\x7e" - "\x2e\x8e\x9d\x01\xd5\x5c\x88\x8d\x3d\x11\xc4\xcd\xb6\xec\xbe\xcc", - .sigalg = GNUTLS_SIGN_ECDSA_SHA256, - .sig = { - .size = 70, - .data = (unsigned char *) - "\x30\x44\x02\x20\x4b\x95\x1e\xad\x31\xc9\x77\xcd\xf1\x73\xf4\x2f" "\x2f\x1e\x4c\x42\x41\xdd\x73\x00\x2a\x16\x9e\xad\xc9\xf4\x12\xa8" "\xed\x80\xd5\x0f\x02\x20\x4d\xfb\xfa\x54\x27\xd1\x30\x17\x8c\xa1" "\xda\x14\x54\xd5\x4d\xca\x91\xdc\xd3\x23\xe2\x83\x7a\xb2\xd9\x0a" "\x5d\x34\xe0\x00\xc5\x72"} - }, - { - .logid = - "\xa4\xb9\x09\x90\xb4\x18\x58\x14\x87\xbb\x13\xa2\xcc\x67\x70\x0a" - "\x3c\x35\x98\x04\xf9\x1b\xdf\xb8\xe3\x77\xcd\x0e\xc8\x0d\xdc\x10", - .sigalg = GNUTLS_SIGN_ECDSA_SHA256, - .sig = { - .size = 72, - .data = (unsigned char *) - "\x30\x46\x02\x21\x00\xfa\x0c\x53\xf8\xb3\xd0\xd7\xb8\xbe\x03\x38" "\x71\x0a\x25\xef\x32\xd5\x4b\xcc\x44\x73\x5f\x27\x6a\xd7\x3d\x12" "\x02\xe9\x3a\xab\xef\x02\x21\x00\xb7\x2b\x7a\x9c\xc8\x3b\xd7\xcf" "\xda\xc5\xe7\x20\xd5\xf9\x36\x75\xc0\xca\x08\xff\x04\xa4\x42\x56" "\x9d\xa6\xe7\x0d\x1c\x0c\x6f\x4d"} - }, - { - .logid = - "\xee\x4b\xbd\xb7\x75\xce\x60\xba\xe1\x42\x69\x1f\xab\xe1\x9e\x66" - "\xa3\x0f\x7e\x5f\xb0\x72\xd8\x83\x00\xc4\x7b\x89\x7a\xa8\xfd\xcb", - .sigalg = GNUTLS_SIGN_ECDSA_SHA256, - .sig = { - .size = 71, - .data = (unsigned char *) - "\x30\x45\x02\x20\x7f\x29\x64\xde\x5d\x89\xed\xa5\x3a\xde\xa2\xd8" "\xd4\xb9\xef\x1c\x5d\xba\x8d\x76\x98\x66\x78\x5e\xde\x9c\x3c\x04" "\x55\x64\x28\xa9\x02\x21\x00\xc4\xe1\x97\x2b\xad\xe0\x0a\x69\x74" "\x8d\x99\xe5\x04\x03\x7f\xe3\x56\x0c\x08\xd1\x74\x70\x29\x7d\xac" "\xc2\x11\x98\x43\x9e\x7d\xf6"} - }, - { - .logid = - "\xbc\x78\xe1\xdf\xc5\xf6\x3c\x68\x46\x49\x33\x4d\xa1\x0f\xa1\x5f" - "\x09\x79\x69\x20\x09\xc0\x81\xb4\xf3\xf6\x91\x7f\x3e\xd9\xb8\xa5", - .sigalg = GNUTLS_SIGN_ECDSA_SHA256, - .sig = { - .size = 71, - .data = (unsigned char *) - "\x30\x45\x02\x20\x3b\x47\x9f\xea\xbd\xde\x7f\xe6\x18\x6c\xdd\x15" "\x96\xfd\x3c\x89\x9e\xbc\x4d\xed\xf3\x28\xb8\x16\x91\x0a\x42\x1d" "\xdf\x37\xe1\xdd\x02\x21\x00\xeb\x5f\x2d\x37\xf9\x51\xf6\x6f\x1d" "\x87\x40\x55\x7c\x70\x09\xf6\x8d\xc2\x01\x3e\x77\xb1\x68\xce\xdf" "\xbb\x05\x84\x73\xcd\x39\x3e"} - } + { .logid = + "\xdd\xeb\x1d\x2b\x7a\x0d\x4f\xa6\x20\x8b\x81\xad\x81\x68\x70\x7e" + "\x2e\x8e\x9d\x01\xd5\x5c\x88\x8d\x3d\x11\xc4\xcd\xb6\xec\xbe\xcc", + .sigalg = GNUTLS_SIGN_ECDSA_SHA256, + .sig = { .size = 70, + .data = (unsigned char + *)"\x30\x44\x02\x20\x4b\x95\x1e\xad\x31\xc9\x77\xcd\xf1\x73\xf4\x2f" + "\x2f\x1e\x4c\x42\x41\xdd\x73\x00\x2a\x16\x9e\xad\xc9\xf4\x12\xa8" + "\xed\x80\xd5\x0f\x02\x20\x4d\xfb\xfa\x54\x27\xd1\x30\x17\x8c\xa1" + "\xda\x14\x54\xd5\x4d\xca\x91\xdc\xd3\x23\xe2\x83\x7a\xb2\xd9\x0a" + "\x5d\x34\xe0\x00\xc5\x72" } }, + { .logid = + "\xa4\xb9\x09\x90\xb4\x18\x58\x14\x87\xbb\x13\xa2\xcc\x67\x70\x0a" + "\x3c\x35\x98\x04\xf9\x1b\xdf\xb8\xe3\x77\xcd\x0e\xc8\x0d\xdc\x10", + .sigalg = GNUTLS_SIGN_ECDSA_SHA256, + .sig = { .size = 72, + .data = (unsigned char + *)"\x30\x46\x02\x21\x00\xfa\x0c\x53\xf8\xb3\xd0\xd7\xb8\xbe\x03\x38" + "\x71\x0a\x25\xef\x32\xd5\x4b\xcc\x44\x73\x5f\x27\x6a\xd7\x3d\x12" + "\x02\xe9\x3a\xab\xef\x02\x21\x00\xb7\x2b\x7a\x9c\xc8\x3b\xd7\xcf" + "\xda\xc5\xe7\x20\xd5\xf9\x36\x75\xc0\xca\x08\xff\x04\xa4\x42\x56" + "\x9d\xa6\xe7\x0d\x1c\x0c\x6f\x4d" } }, + { .logid = + "\xee\x4b\xbd\xb7\x75\xce\x60\xba\xe1\x42\x69\x1f\xab\xe1\x9e\x66" + "\xa3\x0f\x7e\x5f\xb0\x72\xd8\x83\x00\xc4\x7b\x89\x7a\xa8\xfd\xcb", + .sigalg = GNUTLS_SIGN_ECDSA_SHA256, + .sig = { .size = 71, + .data = (unsigned char + *)"\x30\x45\x02\x20\x7f\x29\x64\xde\x5d\x89\xed\xa5\x3a\xde\xa2\xd8" + "\xd4\xb9\xef\x1c\x5d\xba\x8d\x76\x98\x66\x78\x5e\xde\x9c\x3c\x04" + "\x55\x64\x28\xa9\x02\x21\x00\xc4\xe1\x97\x2b\xad\xe0\x0a\x69\x74" + "\x8d\x99\xe5\x04\x03\x7f\xe3\x56\x0c\x08\xd1\x74\x70\x29\x7d\xac" + "\xc2\x11\x98\x43\x9e\x7d\xf6" } }, + { .logid = + "\xbc\x78\xe1\xdf\xc5\xf6\x3c\x68\x46\x49\x33\x4d\xa1\x0f\xa1\x5f" + "\x09\x79\x69\x20\x09\xc0\x81\xb4\xf3\xf6\x91\x7f\x3e\xd9\xb8\xa5", + .sigalg = GNUTLS_SIGN_ECDSA_SHA256, + .sig = { .size = 71, + .data = (unsigned char + *)"\x30\x45\x02\x20\x3b\x47\x9f\xea\xbd\xde\x7f\xe6\x18\x6c\xdd\x15" + "\x96\xfd\x3c\x89\x9e\xbc\x4d\xed\xf3\x28\xb8\x16\x91\x0a\x42\x1d" + "\xdf\x37\xe1\xdd\x02\x21\x00\xeb\x5f\x2d\x37\xf9\x51\xf6\x6f\x1d" + "\x87\x40\x55\x7c\x70\x09\xf6\x8d\xc2\x01\x3e\x77\xb1\x68\xce\xdf" + "\xbb\x05\x84\x73\xcd\x39\x3e" } } }; ret = gnutls_x509_ext_ct_scts_init(&scts); @@ -196,15 +201,13 @@ static void check_scts(const gnutls_datum_t * ext) fail("gnutls_x509_ct_sct_get_version"); if (version != 1) fail("invalid version"); - if (gnutls_x509_ct_sct_get(scts, i, - ×tamp, - &logid, &sigalg, &sig) < 0) + if (gnutls_x509_ct_sct_get(scts, i, ×tamp, &logid, &sigalg, + &sig) < 0) fail("gnutls_x509_ct_sct_v1_get"); if (logid.size != EXPECTED_LOGID_SIZE) fail("Log ID sizes do not match for SCT %d", i); - if (memcmp - (logid.data, expected_data[i].logid, - EXPECTED_LOGID_SIZE) != 0) + if (memcmp(logid.data, expected_data[i].logid, + EXPECTED_LOGID_SIZE) != 0) fail("Log IDs do not match for SCT %d", i); if (sigalg != expected_data[i].sigalg) fail("Signature algorithms for SCT %d do not match", i); @@ -269,8 +272,8 @@ void doit(void) fail("gnutls_x509_crt_get_extension_oid"); if (strcmp(oid, GNUTLS_X509EXT_OID_CT_SCT_V1) == 0) { - ret = - gnutls_x509_crt_get_extension_data2(cert, i, &ext); + ret = gnutls_x509_crt_get_extension_data2(cert, i, + &ext); if (ret < 0) fail("gnutls_x509_crt_get_extension_data2"); check_scts(&ext); diff --git a/tests/x509cert-dntypes.c b/tests/x509cert-dntypes.c index 291d760455..a2d1dfeac5 100644 --- a/tests/x509cert-dntypes.c +++ b/tests/x509cert-dntypes.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -42,51 +42,52 @@ static void tls_log_func(int level, const char *str) * cert uses different ASN.1 types, which is uncommon but allowed */ static unsigned char server_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIDZTCCAc2gAwIBAgIUB7aVTQvtbBpOEtKELkBkLViM0eIwDQYJKoZIhvcNAQEL\n" - "BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAeFw0yMDAzMjYxMDE4NTdaFw0yMTAzMjYx\n" - "MDE4NTdaMBYxFDASBgNVBAMMC1Rlc3QgY2xpZW50MIIBIjANBgkqhkiG9w0BAQEF\n" - "AAOCAQ8AMIIBCgKCAQEAviqj5S/xe39agbMnq/oPAQmdIhalB17Ewc3AZlD8n+zQ\n" - "scPDNvnk4gxSeSXePtXmh0OaGcBKbMAkjiyo2gPBmV3ay34LQuk97nJxE2TUAWMm\n" - "S8yFwP3yoE+GZ5eYjv+HGQxeAP9uHLjho/jHjVGgUOCVv1QjsKyRx8Tuvy9TH3ON\n" - "DuMPw3Jmnq0OhLy2+SjU0ug5jxfWJvnfeGoFzRgalmWGyoAQsH9bqha/D44QSen+\n" - "Zbbt/A4uNIILAENYuHXEfvpmBuZPpocOb6h2huGbp6iHZfdZUHso37UmWT6PXh+2\n" - "dASPaCpAr3bURBhnEsQM43njb8METZewMeoQxwZC0QIDAQABoy8wLTAMBgNVHRMB\n" - "Af8EAjAAMB0GA1UdDgQWBBSb3h7ZbajS/2RWx2a7hTVSkur0FDANBgkqhkiG9w0B\n" - "AQsFAAOCAYEAPfwyvOwNEjIvlifjBVhiWmrtZAS2YaY9jqFnaA2PvYY2FVyC3AMu\n" - "3BGAorau/4DL3P92/9SlygEmBQpqCq+AJnQRH6WKFT4avAOmw3yc0++st+DhGK0I\n" - "6Cr69WccVi0Kmxi1XP4dpPDWSuVCOP6rGc3ulgEH83xF4ZL+3qVA9Fihsie3ZZme\n" - "7mqWOznVO1MZHLDFIUEoRdOSin5bIkl7FPOCZqMsWRM41GuA1h4aX/X5dLeqRW1c\n" - "mJ5CNRWwPIPcwgqeldFnx07svCv9QseUDaIw+C9vZOlgfIgp0qeYoR6fsD38WcUC\n" - "eJPsOUwhdhMcw+/PM16iwzd89dI+PCecFY9FeLh9YeihZm0DnG8L0To1Y2ry+WRf\n" - "w5knR3FReHPcelymvSKZSEG0d/KKHXBeKWgcrCrdnn4ya71eblsNzO3vnxB5k0Zj\n" - "WcQ3wfeftQKDEIuaRHUP6B4zx2teJWMWvJLcXuavoqo0z3L5EN74RztCpnP9ykSH\n" - "ZsYWoJ3aelFv\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIDZTCCAc2gAwIBAgIUB7aVTQvtbBpOEtKELkBkLViM0eIwDQYJKoZIhvcNAQEL\n" + "BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAeFw0yMDAzMjYxMDE4NTdaFw0yMTAzMjYx\n" + "MDE4NTdaMBYxFDASBgNVBAMMC1Rlc3QgY2xpZW50MIIBIjANBgkqhkiG9w0BAQEF\n" + "AAOCAQ8AMIIBCgKCAQEAviqj5S/xe39agbMnq/oPAQmdIhalB17Ewc3AZlD8n+zQ\n" + "scPDNvnk4gxSeSXePtXmh0OaGcBKbMAkjiyo2gPBmV3ay34LQuk97nJxE2TUAWMm\n" + "S8yFwP3yoE+GZ5eYjv+HGQxeAP9uHLjho/jHjVGgUOCVv1QjsKyRx8Tuvy9TH3ON\n" + "DuMPw3Jmnq0OhLy2+SjU0ug5jxfWJvnfeGoFzRgalmWGyoAQsH9bqha/D44QSen+\n" + "Zbbt/A4uNIILAENYuHXEfvpmBuZPpocOb6h2huGbp6iHZfdZUHso37UmWT6PXh+2\n" + "dASPaCpAr3bURBhnEsQM43njb8METZewMeoQxwZC0QIDAQABoy8wLTAMBgNVHRMB\n" + "Af8EAjAAMB0GA1UdDgQWBBSb3h7ZbajS/2RWx2a7hTVSkur0FDANBgkqhkiG9w0B\n" + "AQsFAAOCAYEAPfwyvOwNEjIvlifjBVhiWmrtZAS2YaY9jqFnaA2PvYY2FVyC3AMu\n" + "3BGAorau/4DL3P92/9SlygEmBQpqCq+AJnQRH6WKFT4avAOmw3yc0++st+DhGK0I\n" + "6Cr69WccVi0Kmxi1XP4dpPDWSuVCOP6rGc3ulgEH83xF4ZL+3qVA9Fihsie3ZZme\n" + "7mqWOznVO1MZHLDFIUEoRdOSin5bIkl7FPOCZqMsWRM41GuA1h4aX/X5dLeqRW1c\n" + "mJ5CNRWwPIPcwgqeldFnx07svCv9QseUDaIw+C9vZOlgfIgp0qeYoR6fsD38WcUC\n" + "eJPsOUwhdhMcw+/PM16iwzd89dI+PCecFY9FeLh9YeihZm0DnG8L0To1Y2ry+WRf\n" + "w5knR3FReHPcelymvSKZSEG0d/KKHXBeKWgcrCrdnn4ya71eblsNzO3vnxB5k0Zj\n" + "WcQ3wfeftQKDEIuaRHUP6B4zx2teJWMWvJLcXuavoqo0z3L5EN74RztCpnP9ykSH\n" + "ZsYWoJ3aelFv\n" + "-----END CERTIFICATE-----\n"; static unsigned char ca_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIID5DCCAkygAwIBAgIUB4lnLAeQ20wlYbqt5ykgvWOPNzgwDQYJKoZIhvcNAQEL\n" - "BQAwEjEQMA4GA1UEAxMHVGVzdCBDQTAeFw0yMDAzMjYxMDI0MjhaFw0yMDAzMjcx\n" - "MDI0MjhaMBIxEDAOBgNVBAMTB1Rlc3QgQ0EwggGiMA0GCSqGSIb3DQEBAQUAA4IB\n" - "jwAwggGKAoIBgQCt9z/noU7qCPquzzgwNvu/rwXyIvxmqdWhpfpBOmVq8wpgUDUU\n" - "cQ94F65UfTo3EcYXCoDs43E4Wo8KmF5YQM2xK+LrH28XmpL3z+NoQGaZoUVrMWp6\n" - "rbIeoGZvITaaGn2uEbGT7iRkBUdS4wOjUT13IxpG8cM4d0i0DIsqSlUPnQCfyMqf\n" - "jsVhO9IQsn7qMo0+2nNCI5JqblEXRvL39hHzJMOsq1NRqZO1Zjt9HCIB7m7Q42Jx\n" - "e8zm7RzTiBFVKecxb5h4mmt3tUZQ0Kjd94yE6ARSE0rULmO+6H7hgI6sU8vqfSFe\n" - "DimQ5mPReumBRDcErX+c7bRGPRul41kAB8XvPmAHG8xCepjH8xrgY/FeVBQT74xm\n" - "MEYQaxdGpa8Azx6MZCrZOI0rzu+zI0CBQGE1h1Xk8HBozrn/G2OOAZcXyzHzq56R\n" - "Z52zEQYFZmKH9tHTDI6fMfo8clr7esb/wmgEOt/lJYE9IMJrzUh+IwWuowdYaDVj\n" - "nMrboUBVepmBKSUCAwEAAaMyMDAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU\n" - "rhkYiczAkbCcVfNr67VGGaqilbgwDQYJKoZIhvcNAQELBQADggGBAGYiUTKdYBXk\n" - "lZFIhZkCc33/lCgJw2mSrdAd+xJmJonRPy3qmYy3HniOmQdRVqResLALubz89VjJ\n" - "dSeokujFrlNtb4CygojseqTsxWgeZlKjLU3tJ/Xn+DFIiP7k9+WPW7KFIIW0fq61\n" - "MAI0lKjqpC8sJTlXoJemDw9MW/380nKr+K1YY3arRzsSHEIeA54xOggKEwvgz11A\n" - "47xT83WoLwFQ4e9LZfCsL/M51lsLHAlJzDKyTTeSxCi/C6kUIzx8QyxHKYgBuNxz\n" - "8vVLY/YzUv/l5ELYQ9gkAX0vZWdw7pqASUY8yvbzImrWqjFAHeN3zK687Ke9uppS\n" - "dmjvPwvTK+SKm++NR8YCwb3xqHQHMYHV3lxjlOhaN6rxBW0l4gtvb2FMlhcljiZ+\n" - "tF2ObVwEs6nqJSGrzubp0os+WmnbVSCaHz9jnRWb68C87mXCZkbA7FTSKJOVuqRM\n" - "vVTcHQ7jwGQ2/SvikndFQ53zi2j9o/jTOiFv29rEOeHu67UAiFSi2A==\n" - "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIID5DCCAkygAwIBAgIUB4lnLAeQ20wlYbqt5ykgvWOPNzgwDQYJKoZIhvcNAQEL\n" + "BQAwEjEQMA4GA1UEAxMHVGVzdCBDQTAeFw0yMDAzMjYxMDI0MjhaFw0yMDAzMjcx\n" + "MDI0MjhaMBIxEDAOBgNVBAMTB1Rlc3QgQ0EwggGiMA0GCSqGSIb3DQEBAQUAA4IB\n" + "jwAwggGKAoIBgQCt9z/noU7qCPquzzgwNvu/rwXyIvxmqdWhpfpBOmVq8wpgUDUU\n" + "cQ94F65UfTo3EcYXCoDs43E4Wo8KmF5YQM2xK+LrH28XmpL3z+NoQGaZoUVrMWp6\n" + "rbIeoGZvITaaGn2uEbGT7iRkBUdS4wOjUT13IxpG8cM4d0i0DIsqSlUPnQCfyMqf\n" + "jsVhO9IQsn7qMo0+2nNCI5JqblEXRvL39hHzJMOsq1NRqZO1Zjt9HCIB7m7Q42Jx\n" + "e8zm7RzTiBFVKecxb5h4mmt3tUZQ0Kjd94yE6ARSE0rULmO+6H7hgI6sU8vqfSFe\n" + "DimQ5mPReumBRDcErX+c7bRGPRul41kAB8XvPmAHG8xCepjH8xrgY/FeVBQT74xm\n" + "MEYQaxdGpa8Azx6MZCrZOI0rzu+zI0CBQGE1h1Xk8HBozrn/G2OOAZcXyzHzq56R\n" + "Z52zEQYFZmKH9tHTDI6fMfo8clr7esb/wmgEOt/lJYE9IMJrzUh+IwWuowdYaDVj\n" + "nMrboUBVepmBKSUCAwEAAaMyMDAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU\n" + "rhkYiczAkbCcVfNr67VGGaqilbgwDQYJKoZIhvcNAQELBQADggGBAGYiUTKdYBXk\n" + "lZFIhZkCc33/lCgJw2mSrdAd+xJmJonRPy3qmYy3HniOmQdRVqResLALubz89VjJ\n" + "dSeokujFrlNtb4CygojseqTsxWgeZlKjLU3tJ/Xn+DFIiP7k9+WPW7KFIIW0fq61\n" + "MAI0lKjqpC8sJTlXoJemDw9MW/380nKr+K1YY3arRzsSHEIeA54xOggKEwvgz11A\n" + "47xT83WoLwFQ4e9LZfCsL/M51lsLHAlJzDKyTTeSxCi/C6kUIzx8QyxHKYgBuNxz\n" + "8vVLY/YzUv/l5ELYQ9gkAX0vZWdw7pqASUY8yvbzImrWqjFAHeN3zK687Ke9uppS\n" + "dmjvPwvTK+SKm++NR8YCwb3xqHQHMYHV3lxjlOhaN6rxBW0l4gtvb2FMlhcljiZ+\n" + "tF2ObVwEs6nqJSGrzubp0os+WmnbVSCaHz9jnRWb68C87mXCZkbA7FTSKJOVuqRM\n" + "vVTcHQ7jwGQ2/SvikndFQ53zi2j9o/jTOiFv29rEOeHu67UAiFSi2A==\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t server = { server_pem, sizeof(server_pem) - 1 }; const gnutls_datum_t ca = { ca_pem, sizeof(ca_pem) - 1 }; diff --git a/tests/x509cert-invalid.c b/tests/x509cert-invalid.c index fb2bd845af..0c666e420c 100644 --- a/tests/x509cert-invalid.c +++ b/tests/x509cert-invalid.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -44,51 +44,52 @@ static void tls_log_func(int level, const char *str) /* this has a different signature algorithm in tbsCertificate and signatureAlgorithm. * the algorithm in signatureAlgorithm is wrong */ static unsigned char inconsistent_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICwzCCAXugAwIBAgIIVOei+gI+zMYwDQYJKoZIhvcNAQELBQAwGTEXMBUGA1UE\n" - "AxMOR251VExTIFRlc3QgQ0EwIhgPMjAxNTAyMjAyMTExMjJaGA85OTk5MTIzMTIz\n" - "NTk1OVowFzEVMBMGA1UEAxMMV3Jvbmcgc2lnYWxnMIGfMA0GCSqGSIb3DQEBAQUA\n" - "A4GNADCBiQKBgQDKivjLpeml2GINsAimC6xwTxj44mLcxS+u69yFXFg2Z/AepUU+\n" - "IvfqVOeRVgg1WHrh+DZLuoC6kwn7a2afUTzytrITKni+J14ENa/ZcF2MrhSM8WZ1\n" - "NWrmvUltjkbJQIwyVPuIweRH1ECqSFxVqBT8RwYZ27FzTL8WF1JnlSlKuQIDAQAB\n" - "o2EwXzAMBgNVHRMBAf8EAjAAMA8GA1UdDwEB/wQFAwMHoAAwHQYDVR0OBBYEFK9V\n" - "bbSoqbHWgZwkzN57nbmAyyTwMB8GA1UdIwQYMBaAFE1Wt2oAWPFnkvSmdVUbjlMB\n" - "A+/PMA0GCSqGSIb3DQEBBAUAA4IBMQCT2A88WEahnJgfXTjLbThqc/ICOg4dnk61\n" - "zhaTkgK3is7T8gQrTqEbaVF4qu5gOLN6Z+xluii+ApZKKpKSyYLXS6MS3nJ6xGTi\n" - "SOqixmPv7qfQnkUvUTagZymnWQ3GxRxjAv65YpmGyti+/TdkYWDQ9R/D/sWPJO8o\n" - "YrFNw1ZXAaNMg4EhhGZ4likMlww+e5NPfJsJ32AovveTFKqSrvabb4UtrUJTwsC4\n" - "Bd018g2MEhTkxeTQTqzIL98CoSBJjbbZD/YW13J/3xU590QpHTgni5hAni27IFLr\n" - "1V+UJAglBs8qYiUzv/GjwbRt8TDzYVjvc+5MvPaGpoTcmdQyi9/L+3s8J6dX3i93\n" - "TneIXeExwjTmXKL7NG+KQz9/F4FJChRXR6X1zsSB45DzoCoGMmzD\n" - "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIICwzCCAXugAwIBAgIIVOei+gI+zMYwDQYJKoZIhvcNAQELBQAwGTEXMBUGA1UE\n" + "AxMOR251VExTIFRlc3QgQ0EwIhgPMjAxNTAyMjAyMTExMjJaGA85OTk5MTIzMTIz\n" + "NTk1OVowFzEVMBMGA1UEAxMMV3Jvbmcgc2lnYWxnMIGfMA0GCSqGSIb3DQEBAQUA\n" + "A4GNADCBiQKBgQDKivjLpeml2GINsAimC6xwTxj44mLcxS+u69yFXFg2Z/AepUU+\n" + "IvfqVOeRVgg1WHrh+DZLuoC6kwn7a2afUTzytrITKni+J14ENa/ZcF2MrhSM8WZ1\n" + "NWrmvUltjkbJQIwyVPuIweRH1ECqSFxVqBT8RwYZ27FzTL8WF1JnlSlKuQIDAQAB\n" + "o2EwXzAMBgNVHRMBAf8EAjAAMA8GA1UdDwEB/wQFAwMHoAAwHQYDVR0OBBYEFK9V\n" + "bbSoqbHWgZwkzN57nbmAyyTwMB8GA1UdIwQYMBaAFE1Wt2oAWPFnkvSmdVUbjlMB\n" + "A+/PMA0GCSqGSIb3DQEBBAUAA4IBMQCT2A88WEahnJgfXTjLbThqc/ICOg4dnk61\n" + "zhaTkgK3is7T8gQrTqEbaVF4qu5gOLN6Z+xluii+ApZKKpKSyYLXS6MS3nJ6xGTi\n" + "SOqixmPv7qfQnkUvUTagZymnWQ3GxRxjAv65YpmGyti+/TdkYWDQ9R/D/sWPJO8o\n" + "YrFNw1ZXAaNMg4EhhGZ4likMlww+e5NPfJsJ32AovveTFKqSrvabb4UtrUJTwsC4\n" + "Bd018g2MEhTkxeTQTqzIL98CoSBJjbbZD/YW13J/3xU590QpHTgni5hAni27IFLr\n" + "1V+UJAglBs8qYiUzv/GjwbRt8TDzYVjvc+5MvPaGpoTcmdQyi9/L+3s8J6dX3i93\n" + "TneIXeExwjTmXKL7NG+KQz9/F4FJChRXR6X1zsSB45DzoCoGMmzD\n" + "-----END CERTIFICATE-----\n"; /* this has a different signature algorithm in tbsCertificate and signatureAlgorithm. * the algorithm in tbsCertificate is wrong */ static unsigned char inconsistent2_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIC1DCCAYygAwIBAgIIVOem0AaBE/EwDQYJKoZIhvcNAQEEBQAwGTEXMBUGA1UE\n" - "AxMOR251VExTIFRlc3QgQ0EwIhgPMjAxNTAyMjAyMTI3NDRaGA85OTk5MTIzMTIz\n" - "NTk1OVowKDEmMCQGA1UEAxMdSW52YWxpZCB0YnNDZXJ0aWZpY2F0ZSBzaWdhbGcw\n" - "gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMqK+Mul6aXYYg2wCKYLrHBPGPji\n" - "YtzFL67r3IVcWDZn8B6lRT4i9+pU55FWCDVYeuH4Nku6gLqTCftrZp9RPPK2shMq\n" - "eL4nXgQ1r9lwXYyuFIzxZnU1aua9SW2ORslAjDJU+4jB5EfUQKpIXFWoFPxHBhnb\n" - "sXNMvxYXUmeVKUq5AgMBAAGjYTBfMAwGA1UdEwEB/wQCMAAwDwYDVR0PAQH/BAUD\n" - "AwegADAdBgNVHQ4EFgQUr1VttKipsdaBnCTM3nuduYDLJPAwHwYDVR0jBBgwFoAU\n" - "TVa3agBY8WeS9KZ1VRuOUwED788wDQYJKoZIhvcNAQELBQADggExAEsjzyOB8ntk\n" - "1BW4UhHdDSOZNrR4Ep0y2B3tjoOlXmcQD50WQb7NF/vYGeZN/y+WHEF9OAnneEIi\n" - "5wRHLnm1jP/bXd5Po3EsaTLmpE7rW99DYlHaNRcF5z+a+qTdj7mRsnUtv6o2ItNT\n" - "m81yQr0Lw0D31agU9IAzeXZy+Dm6dQnO1GAaHlOJQR1PZIOzOtYxqodla0qxuvga\n" - "nL+quIR29t8nb7j+n8l1+2WxCUoxEO0wv37t3MQxjXUxzGfo5NDcXqH1364UBzdM\n" - "rOBPX50B4LUyV5gNdWMIGVSMX3fTE+j3b+60w6NALXDzGoSGLQH48hpi/Mxzqctt\n" - "gl58/RqS+nTNQ7c6QMhTj+dgaCE/DUGJJf0354dYp7p43nabr+ZtaMPUaGUQ/1UC\n" - "C5/QFweC23w=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t inconsistent = - { inconsistent_pem, sizeof(inconsistent_pem) - 1 }; -const gnutls_datum_t inconsistent2 = - { inconsistent2_pem, sizeof(inconsistent2_pem) - 1 }; - -static time_t mytime(time_t * t) + "-----BEGIN CERTIFICATE-----\n" + "MIIC1DCCAYygAwIBAgIIVOem0AaBE/EwDQYJKoZIhvcNAQEEBQAwGTEXMBUGA1UE\n" + "AxMOR251VExTIFRlc3QgQ0EwIhgPMjAxNTAyMjAyMTI3NDRaGA85OTk5MTIzMTIz\n" + "NTk1OVowKDEmMCQGA1UEAxMdSW52YWxpZCB0YnNDZXJ0aWZpY2F0ZSBzaWdhbGcw\n" + "gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMqK+Mul6aXYYg2wCKYLrHBPGPji\n" + "YtzFL67r3IVcWDZn8B6lRT4i9+pU55FWCDVYeuH4Nku6gLqTCftrZp9RPPK2shMq\n" + "eL4nXgQ1r9lwXYyuFIzxZnU1aua9SW2ORslAjDJU+4jB5EfUQKpIXFWoFPxHBhnb\n" + "sXNMvxYXUmeVKUq5AgMBAAGjYTBfMAwGA1UdEwEB/wQCMAAwDwYDVR0PAQH/BAUD\n" + "AwegADAdBgNVHQ4EFgQUr1VttKipsdaBnCTM3nuduYDLJPAwHwYDVR0jBBgwFoAU\n" + "TVa3agBY8WeS9KZ1VRuOUwED788wDQYJKoZIhvcNAQELBQADggExAEsjzyOB8ntk\n" + "1BW4UhHdDSOZNrR4Ep0y2B3tjoOlXmcQD50WQb7NF/vYGeZN/y+WHEF9OAnneEIi\n" + "5wRHLnm1jP/bXd5Po3EsaTLmpE7rW99DYlHaNRcF5z+a+qTdj7mRsnUtv6o2ItNT\n" + "m81yQr0Lw0D31agU9IAzeXZy+Dm6dQnO1GAaHlOJQR1PZIOzOtYxqodla0qxuvga\n" + "nL+quIR29t8nb7j+n8l1+2WxCUoxEO0wv37t3MQxjXUxzGfo5NDcXqH1364UBzdM\n" + "rOBPX50B4LUyV5gNdWMIGVSMX3fTE+j3b+60w6NALXDzGoSGLQH48hpi/Mxzqctt\n" + "gl58/RqS+nTNQ7c6QMhTj+dgaCE/DUGJJf0354dYp7p43nabr+ZtaMPUaGUQ/1UC\n" + "C5/QFweC23w=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t inconsistent = { inconsistent_pem, + sizeof(inconsistent_pem) - 1 }; +const gnutls_datum_t inconsistent2 = { inconsistent2_pem, + sizeof(inconsistent2_pem) - 1 }; + +static time_t mytime(time_t *t) { time_t then = 1424466893; diff --git a/tests/x509cert-tl.c b/tests/x509cert-tl.c index f4b15bad56..2b542461a7 100644 --- a/tests/x509cert-tl.c +++ b/tests/x509cert-tl.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -44,136 +44,135 @@ static void tls_log_func(int level, const char *str) } static unsigned char ca_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIB5zCCAVKgAwIBAgIERiYdJzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTExWhcNMDgwNDE3MTMyOTExWjAZMRcw\n" - "FQYDVQQDEw5HbnVUTFMgdGVzdCBDQTCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA\n" - "vuyYeh1vfmslnuggeEKgZAVmQ5ltSdUY7H25WGSygKMUYZ0KT74v8C780qtcNt9T\n" - "7EPH/N6RvB4BprdssgcQLsthR3XKA84jbjjxNCcaGs33lvOz8A1nf8p3hD+cKfRi\n" - "kfYSW2JazLrtCC4yRCas/SPOUxu78of+3HiTfFm/oXUCAwEAAaNDMEEwDwYDVR0T\n" - "AQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwQAMB0GA1UdDgQWBBTpPBz7rZJu5gak\n" - "Viyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAiaIRqGfp1jPpNeVhABK60SU0KIAy\n" - "njuu7kHq5peUgYn8Jd9zNzExBOEp1VOipGsf6G66oQAhDFp2o8zkz7ZH71zR4HEW\n" - "KoX6n5Emn6DvcEH/9pAhnGxNHJAoS7czTKv/JDZJhkqHxyrE1fuLsg5Qv25DTw7+\n" - "PfqUpIhz5Bbm7J4=\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIB5zCCAVKgAwIBAgIERiYdJzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTExWhcNMDgwNDE3MTMyOTExWjAZMRcw\n" + "FQYDVQQDEw5HbnVUTFMgdGVzdCBDQTCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA\n" + "vuyYeh1vfmslnuggeEKgZAVmQ5ltSdUY7H25WGSygKMUYZ0KT74v8C780qtcNt9T\n" + "7EPH/N6RvB4BprdssgcQLsthR3XKA84jbjjxNCcaGs33lvOz8A1nf8p3hD+cKfRi\n" + "kfYSW2JazLrtCC4yRCas/SPOUxu78of+3HiTfFm/oXUCAwEAAaNDMEEwDwYDVR0T\n" + "AQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwQAMB0GA1UdDgQWBBTpPBz7rZJu5gak\n" + "Viyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAiaIRqGfp1jPpNeVhABK60SU0KIAy\n" + "njuu7kHq5peUgYn8Jd9zNzExBOEp1VOipGsf6G66oQAhDFp2o8zkz7ZH71zR4HEW\n" + "KoX6n5Emn6DvcEH/9pAhnGxNHJAoS7czTKv/JDZJhkqHxyrE1fuLsg5Qv25DTw7+\n" + "PfqUpIhz5Bbm7J4=\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t ca = { ca_pem, sizeof(ca_pem) }; static unsigned char cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICHjCCAYmgAwIBAgIERiYdNzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTI3WhcNMDgwNDE3MTMyOTI3WjAdMRsw\n" - "GQYDVQQDExJHbnVUTFMgdGVzdCBjbGllbnQwgZwwCwYJKoZIhvcNAQEBA4GMADCB\n" - "iAKBgLtmQ/Xyxde2jMzF3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeL\n" - "ZIkiW8DdU3w77XwEu4C5KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKN\n" - "zj2AC41179gAgY8oBAOgIo1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjdjB0MAwG\n" - "A1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUDAweg\n" - "ADAdBgNVHQ4EFgQUTLkKm/odNON+3svSBxX+odrLaJEwHwYDVR0jBBgwFoAU6Twc\n" - "+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBALujmBJVZnvaTXr9cFRJ\n" - "jpfc/3X7sLUsMvumcDE01ls/cG5mIatmiyEU9qI3jbgUf82z23ON/acwJf875D3/\n" - "U7jyOsBJ44SEQITbin2yUeJMIm1tievvdNXBDfW95AM507ShzP12sfiJkJfjjdhy\n" - "dc8Siq5JojruiMizAf0pA7in\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIICHjCCAYmgAwIBAgIERiYdNzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTI3WhcNMDgwNDE3MTMyOTI3WjAdMRsw\n" + "GQYDVQQDExJHbnVUTFMgdGVzdCBjbGllbnQwgZwwCwYJKoZIhvcNAQEBA4GMADCB\n" + "iAKBgLtmQ/Xyxde2jMzF3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeL\n" + "ZIkiW8DdU3w77XwEu4C5KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKN\n" + "zj2AC41179gAgY8oBAOgIo1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjdjB0MAwG\n" + "A1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUDAweg\n" + "ADAdBgNVHQ4EFgQUTLkKm/odNON+3svSBxX+odrLaJEwHwYDVR0jBBgwFoAU6Twc\n" + "+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBALujmBJVZnvaTXr9cFRJ\n" + "jpfc/3X7sLUsMvumcDE01ls/cG5mIatmiyEU9qI3jbgUf82z23ON/acwJf875D3/\n" + "U7jyOsBJ44SEQITbin2yUeJMIm1tievvdNXBDfW95AM507ShzP12sfiJkJfjjdhy\n" + "dc8Siq5JojruiMizAf0pA7in\n" + "-----END CERTIFICATE-----\n"; const gnutls_datum_t cert = { cert_pem, sizeof(cert_pem) }; static unsigned char key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" - "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" - "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" - "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" - "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" - "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" - "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" - "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" - "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" - "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" - "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" - "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" - "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" + "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" + "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" + "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" + "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" + "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" + "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" + "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" + "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" + "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" + "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" + "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" + "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" + "-----END RSA PRIVATE KEY-----\n"; const gnutls_datum_t key = { key_pem, sizeof(key_pem) }; static unsigned char server_cert_pem[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" - "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" - "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" - "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" - "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" - "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" - "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" - "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" - "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" - "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" - "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" - "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" "-----END CERTIFICATE-----\n"; - -const gnutls_datum_t server_cert = { server_cert_pem, - sizeof(server_cert_pem) -}; + "-----BEGIN CERTIFICATE-----\n" + "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTIxWhcNMDgwNDE3MTMyOTIxWjA3MRsw\n" + "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" + "Lm9yZzCBnDALBgkqhkiG9w0BAQEDgYwAMIGIAoGA17pcr6MM8C6pJ1aqU46o63+B\n" + "dUxrmL5K6rce+EvDasTaDQC46kwTHzYWk95y78akXrJutsoKiFV1kJbtple8DDt2\n" + "DZcevensf9Op7PuFZKBroEjOd35znDET/z3IrqVgbtm2jFqab7a+n2q9p/CgMyf1\n" + "tx2S5Zacc1LWn9bIjrECAwEAAaOBkzCBkDAMBgNVHRMBAf8EAjAAMBoGA1UdEQQT\n" + "MBGCD3Rlc3QuZ251dGxzLm9yZzATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHQ8B\n" + "Af8EBQMDB6AAMB0GA1UdDgQWBBTrx0Vu5fglyoyNgw106YbU3VW0dTAfBgNVHSME\n" + "GDAWgBTpPBz7rZJu5gakViyi4cBTJ8jylTALBgkqhkiG9w0BAQUDgYEAaFEPTt+7\n" + "bzvBuOf7+QmeQcn29kT6Bsyh1RHJXf8KTk5QRfwp6ogbp94JQWcNQ/S7YDFHglD1\n" + "AwUNBRXwd3riUsMnsxgeSDxYBfJYbDLeohNBsqaPDJb7XailWbMQKfAbFQ8cnOxg\n" + "rOKLUQRWJ0K3HyXRMhbqjdLIaQiCvQLuizo=\n" + "-----END CERTIFICATE-----\n"; + +const gnutls_datum_t server_cert = { server_cert_pem, sizeof(server_cert_pem) }; static unsigned char server_key_pem[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" - "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" - "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" - "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" - "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" - "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" - "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" - "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" - "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" - "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" - "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" - "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" - "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQDXulyvowzwLqknVqpTjqjrf4F1TGuYvkrqtx74S8NqxNoNALjq\n" + "TBMfNhaT3nLvxqResm62ygqIVXWQlu2mV7wMO3YNlx696ex/06ns+4VkoGugSM53\n" + "fnOcMRP/PciupWBu2baMWppvtr6far2n8KAzJ/W3HZLllpxzUtaf1siOsQIDAQAB\n" + "AoGAYAFyKkAYC/PYF8e7+X+tsVCHXppp8AoP8TEZuUqOZz/AArVlle/ROrypg5kl\n" + "8YunrvUdzH9R/KZ7saNZlAPLjZyFG9beL/am6Ai7q7Ma5HMqjGU8kTEGwD7K+lbG\n" + "iomokKMOl+kkbY/2sI5Czmbm+/PqLXOjtVc5RAsdbgvtmvkCQQDdV5QuU8jap8Hs\n" + "Eodv/tLJ2z4+SKCV2k/7FXSKWe0vlrq0cl2qZfoTUYRnKRBcWxc9o92DxK44wgPi\n" + "oMQS+O7fAkEA+YG+K9e60sj1K4NYbMPAbYILbZxORDecvP8lcphvwkOVUqbmxOGh\n" + "XRmTZUuhBrJhJKKf6u7gf3KWlPl6ShKEbwJASC118cF6nurTjuLf7YKARDjNTEws\n" + "qZEeQbdWYINAmCMj0RH2P0mvybrsXSOD5UoDAyO7aWuqkHGcCLv6FGG+qwJAOVqq\n" + "tXdUucl6GjOKKw5geIvRRrQMhb/m5scb+5iw8A4LEEHPgGiBaF5NtJZLALgWfo5n\n" + "hmC8+G8F0F78znQtPwJBANexu+Tg5KfOnzSILJMo3oXiXhf5PqXIDmbN0BKyCKAQ\n" + "LfkcEcUbVfmDaHpvzwY9VEaoMOKVLitETXdNSxVpvWM=\n" + "-----END RSA PRIVATE KEY-----\n"; static unsigned char cert_der[602] = - "\x30\x82\x02\x56\x30\x82\x01\xc1\xa0\x03\x02\x01\x02\x02\x04\x46" - "\x26\x1d\x31\x30\x0b\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05" - "\x30\x19\x31\x17\x30\x15\x06\x03\x55\x04\x03\x13\x0e\x47\x6e\x75" - "\x54\x4c\x53\x20\x74\x65\x73\x74\x20\x43\x41\x30\x1e\x17\x0d\x30" - "\x37\x30\x34\x31\x38\x31\x33\x32\x39\x32\x31\x5a\x17\x0d\x30\x38" - "\x30\x34\x31\x37\x31\x33\x32\x39\x32\x31\x5a\x30\x37\x31\x1b\x30" - "\x19\x06\x03\x55\x04\x0a\x13\x12\x47\x6e\x75\x54\x4c\x53\x20\x74" - "\x65\x73\x74\x20\x73\x65\x72\x76\x65\x72\x31\x18\x30\x16\x06\x03" - "\x55\x04\x03\x13\x0f\x74\x65\x73\x74\x2e\x67\x6e\x75\x74\x6c\x73" - "\x2e\x6f\x72\x67\x30\x81\x9c\x30\x0b\x06\x09\x2a\x86\x48\x86\xf7" - "\x0d\x01\x01\x01\x03\x81\x8c\x00\x30\x81\x88\x02\x81\x80\xd7\xba" - "\x5c\xaf\xa3\x0c\xf0\x2e\xa9\x27\x56\xaa\x53\x8e\xa8\xeb\x7f\x81" - "\x75\x4c\x6b\x98\xbe\x4a\xea\xb7\x1e\xf8\x4b\xc3\x6a\xc4\xda\x0d" - "\x00\xb8\xea\x4c\x13\x1f\x36\x16\x93\xde\x72\xef\xc6\xa4\x5e\xb2" - "\x6e\xb6\xca\x0a\x88\x55\x75\x90\x96\xed\xa6\x57\xbc\x0c\x3b\x76" - "\x0d\x97\x1e\xbd\xe9\xec\x7f\xd3\xa9\xec\xfb\x85\x64\xa0\x6b\xa0" - "\x48\xce\x77\x7e\x73\x9c\x31\x13\xff\x3d\xc8\xae\xa5\x60\x6e\xd9" - "\xb6\x8c\x5a\x9a\x6f\xb6\xbe\x9f\x6a\xbd\xa7\xf0\xa0\x33\x27\xf5" - "\xb7\x1d\x92\xe5\x96\x9c\x73\x52\xd6\x9f\xd6\xc8\x8e\xb1\x02\x03" - "\x01\x00\x01\xa3\x81\x93\x30\x81\x90\x30\x0c\x06\x03\x55\x1d\x13" - "\x01\x01\xff\x04\x02\x30\x00\x30\x1a\x06\x03\x55\x1d\x11\x04\x13" - "\x30\x11\x82\x0f\x74\x65\x73\x74\x2e\x67\x6e\x75\x74\x6c\x73\x2e" - "\x6f\x72\x67\x30\x13\x06\x03\x55\x1d\x25\x04\x0c\x30\x0a\x06\x08" - "\x2b\x06\x01\x05\x05\x07\x03\x01\x30\x0f\x06\x03\x55\x1d\x0f\x01" - "\x01\xff\x04\x05\x03\x03\x07\xa0\x00\x30\x1d\x06\x03\x55\x1d\x0e" - "\x04\x16\x04\x14\xeb\xc7\x45\x6e\xe5\xf8\x25\xca\x8c\x8d\x83\x0d" - "\x74\xe9\x86\xd4\xdd\x55\xb4\x75\x30\x1f\x06\x03\x55\x1d\x23\x04" - "\x18\x30\x16\x80\x14\xe9\x3c\x1c\xfb\xad\x92\x6e\xe6\x06\xa4\x56" - "\x2c\xa2\xe1\xc0\x53\x27\xc8\xf2\x95\x30\x0b\x06\x09\x2a\x86\x48" - "\x86\xf7\x0d\x01\x01\x05\x03\x81\x81\x00\x68\x51\x0f\x4e\xdf\xbb" - "\x6f\x3b\xc1\xb8\xe7\xfb\xf9\x09\x9e\x41\xc9\xf6\xf6\x44\xfa\x06" - "\xcc\xa1\xd5\x11\xc9\x5d\xff\x0a\x4e\x4e\x50\x45\xfc\x29\xea\x88" - "\x1b\xa7\xde\x09\x41\x67\x0d\x43\xf4\xbb\x60\x31\x47\x82\x50\xf5" - "\x03\x05\x0d\x05\x15\xf0\x77\x7a\xe2\x52\xc3\x27\xb3\x18\x1e\x48" - "\x3c\x58\x05\xf2\x58\x6c\x32\xde\xa2\x13\x41\xb2\xa6\x8f\x0c\x96" - "\xfb\x5d\xa8\xa5\x59\xb3\x10\x29\xf0\x1b\x15\x0f\x1c\x9c\xec\x60" - "\xac\xe2\x8b\x51\x04\x56\x27\x42\xb7\x1f\x25\xd1\x32\x16\xea\x8d" - "\xd2\xc8\x69\x08\x82\xbd\x02\xee\x8b\x3a"; - -const gnutls_datum_t server_key = { server_key_pem, - sizeof(server_key_pem) -}; - -static time_t mytime(time_t * t) + "\x30\x82\x02\x56\x30\x82\x01\xc1\xa0\x03\x02\x01\x02\x02\x04\x46" + "\x26\x1d\x31\x30\x0b\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05" + "\x30\x19\x31\x17\x30\x15\x06\x03\x55\x04\x03\x13\x0e\x47\x6e\x75" + "\x54\x4c\x53\x20\x74\x65\x73\x74\x20\x43\x41\x30\x1e\x17\x0d\x30" + "\x37\x30\x34\x31\x38\x31\x33\x32\x39\x32\x31\x5a\x17\x0d\x30\x38" + "\x30\x34\x31\x37\x31\x33\x32\x39\x32\x31\x5a\x30\x37\x31\x1b\x30" + "\x19\x06\x03\x55\x04\x0a\x13\x12\x47\x6e\x75\x54\x4c\x53\x20\x74" + "\x65\x73\x74\x20\x73\x65\x72\x76\x65\x72\x31\x18\x30\x16\x06\x03" + "\x55\x04\x03\x13\x0f\x74\x65\x73\x74\x2e\x67\x6e\x75\x74\x6c\x73" + "\x2e\x6f\x72\x67\x30\x81\x9c\x30\x0b\x06\x09\x2a\x86\x48\x86\xf7" + "\x0d\x01\x01\x01\x03\x81\x8c\x00\x30\x81\x88\x02\x81\x80\xd7\xba" + "\x5c\xaf\xa3\x0c\xf0\x2e\xa9\x27\x56\xaa\x53\x8e\xa8\xeb\x7f\x81" + "\x75\x4c\x6b\x98\xbe\x4a\xea\xb7\x1e\xf8\x4b\xc3\x6a\xc4\xda\x0d" + "\x00\xb8\xea\x4c\x13\x1f\x36\x16\x93\xde\x72\xef\xc6\xa4\x5e\xb2" + "\x6e\xb6\xca\x0a\x88\x55\x75\x90\x96\xed\xa6\x57\xbc\x0c\x3b\x76" + "\x0d\x97\x1e\xbd\xe9\xec\x7f\xd3\xa9\xec\xfb\x85\x64\xa0\x6b\xa0" + "\x48\xce\x77\x7e\x73\x9c\x31\x13\xff\x3d\xc8\xae\xa5\x60\x6e\xd9" + "\xb6\x8c\x5a\x9a\x6f\xb6\xbe\x9f\x6a\xbd\xa7\xf0\xa0\x33\x27\xf5" + "\xb7\x1d\x92\xe5\x96\x9c\x73\x52\xd6\x9f\xd6\xc8\x8e\xb1\x02\x03" + "\x01\x00\x01\xa3\x81\x93\x30\x81\x90\x30\x0c\x06\x03\x55\x1d\x13" + "\x01\x01\xff\x04\x02\x30\x00\x30\x1a\x06\x03\x55\x1d\x11\x04\x13" + "\x30\x11\x82\x0f\x74\x65\x73\x74\x2e\x67\x6e\x75\x74\x6c\x73\x2e" + "\x6f\x72\x67\x30\x13\x06\x03\x55\x1d\x25\x04\x0c\x30\x0a\x06\x08" + "\x2b\x06\x01\x05\x05\x07\x03\x01\x30\x0f\x06\x03\x55\x1d\x0f\x01" + "\x01\xff\x04\x05\x03\x03\x07\xa0\x00\x30\x1d\x06\x03\x55\x1d\x0e" + "\x04\x16\x04\x14\xeb\xc7\x45\x6e\xe5\xf8\x25\xca\x8c\x8d\x83\x0d" + "\x74\xe9\x86\xd4\xdd\x55\xb4\x75\x30\x1f\x06\x03\x55\x1d\x23\x04" + "\x18\x30\x16\x80\x14\xe9\x3c\x1c\xfb\xad\x92\x6e\xe6\x06\xa4\x56" + "\x2c\xa2\xe1\xc0\x53\x27\xc8\xf2\x95\x30\x0b\x06\x09\x2a\x86\x48" + "\x86\xf7\x0d\x01\x01\x05\x03\x81\x81\x00\x68\x51\x0f\x4e\xdf\xbb" + "\x6f\x3b\xc1\xb8\xe7\xfb\xf9\x09\x9e\x41\xc9\xf6\xf6\x44\xfa\x06" + "\xcc\xa1\xd5\x11\xc9\x5d\xff\x0a\x4e\x4e\x50\x45\xfc\x29\xea\x88" + "\x1b\xa7\xde\x09\x41\x67\x0d\x43\xf4\xbb\x60\x31\x47\x82\x50\xf5" + "\x03\x05\x0d\x05\x15\xf0\x77\x7a\xe2\x52\xc3\x27\xb3\x18\x1e\x48" + "\x3c\x58\x05\xf2\x58\x6c\x32\xde\xa2\x13\x41\xb2\xa6\x8f\x0c\x96" + "\xfb\x5d\xa8\xa5\x59\xb3\x10\x29\xf0\x1b\x15\x0f\x1c\x9c\xec\x60" + "\xac\xe2\x8b\x51\x04\x56\x27\x42\xb7\x1f\x25\xd1\x32\x16\xea\x8d" + "\xd2\xc8\x69\x08\x82\xbd\x02\xee\x8b\x3a"; + +const gnutls_datum_t server_key = { server_key_pem, sizeof(server_key_pem) }; + +static time_t mytime(time_t *t) { time_t then = 1207000800; @@ -228,11 +227,10 @@ static void check_stored_algos(gnutls_x509_crt_t server_crt) gnutls_pk_get_name(ret)); exit(1); } - } #define NAME "localhost" -#define NAME_SIZE (sizeof(NAME)-1) +#define NAME_SIZE (sizeof(NAME) - 1) void doit(void) { int ret; @@ -270,16 +268,17 @@ void doit(void) check_stored_algos(server_crt); - ret = - gnutls_x509_crt_get_preferred_hash_algorithm(server_crt, &hash, - &mand); + ret = gnutls_x509_crt_get_preferred_hash_algorithm(server_crt, &hash, + &mand); if (ret < 0) { - fail("error in gnutls_x509_crt_get_preferred_hash_algorithm: %s\n", gnutls_strerror(ret)); + fail("error in gnutls_x509_crt_get_preferred_hash_algorithm: %s\n", + gnutls_strerror(ret)); exit(1); } if (mand != 0 || hash != GNUTLS_DIG_SHA256) { - fail("gnutls_x509_crt_get_preferred_hash_algorithm returned: %s/%d\n", gnutls_digest_get_name(hash), mand); + fail("gnutls_x509_crt_get_preferred_hash_algorithm returned: %s/%d\n", + gnutls_digest_get_name(hash), mand); exit(1); } @@ -287,30 +286,23 @@ void doit(void) if (ret < 0) fail("gnutls_x509_crt_import"); - ret = - gnutls_x509_trust_list_add_named_crt(tl, server_crt, NAME, - NAME_SIZE, 0); + ret = gnutls_x509_trust_list_add_named_crt(tl, server_crt, NAME, + NAME_SIZE, 0); if (ret < 0) fail("gnutls_x509_trust_list_add_named_crt"); - ret = - gnutls_x509_trust_list_verify_named_crt(tl, server_crt, NAME, - NAME_SIZE, 0, &status, - NULL); + ret = gnutls_x509_trust_list_verify_named_crt( + tl, server_crt, NAME, NAME_SIZE, 0, &status, NULL); if (ret < 0 || status != 0) fail("gnutls_x509_trust_list_verify_named_crt: %d\n", __LINE__); - ret = - gnutls_x509_trust_list_verify_named_crt(tl, server_crt, NAME, - NAME_SIZE - 1, 0, - &status, NULL); + ret = gnutls_x509_trust_list_verify_named_crt( + tl, server_crt, NAME, NAME_SIZE - 1, 0, &status, NULL); if (ret < 0 || status == 0) fail("gnutls_x509_trust_list_verify_named_crt: %d\n", __LINE__); - ret = - gnutls_x509_trust_list_verify_named_crt(tl, server_crt, - "other", 5, 0, &status, - NULL); + ret = gnutls_x509_trust_list_verify_named_crt(tl, server_crt, "other", + 5, 0, &status, NULL); if (ret < 0 || status == 0) fail("gnutls_x509_trust_list_verify_named_crt: %d\n", __LINE__); @@ -318,10 +310,9 @@ void doit(void) vdata.type = GNUTLS_DT_DNS_HOSTNAME; vdata.data = (void *)NAME; vdata.size = NAME_SIZE; - ret = - gnutls_x509_trust_list_verify_crt2(tl, &server_crt, 1, &vdata, 1, - GNUTLS_VERIFY_ALLOW_BROKEN, - &status, NULL); + ret = gnutls_x509_trust_list_verify_crt2(tl, &server_crt, 1, &vdata, 1, + GNUTLS_VERIFY_ALLOW_BROKEN, + &status, NULL); if (ret < 0 || status != 0) fail("gnutls_x509_trust_list_verify_crt2 - 1: status: %x\n", status); @@ -329,56 +320,48 @@ void doit(void) vdata.type = GNUTLS_DT_DNS_HOSTNAME; vdata.data = (void *)NAME; vdata.size = NAME_SIZE - 2; - ret = - gnutls_x509_trust_list_verify_crt2(tl, &server_crt, 1, &vdata, 1, - 0, &status, NULL); + ret = gnutls_x509_trust_list_verify_crt2(tl, &server_crt, 1, &vdata, 1, + 0, &status, NULL); if (ret < 0 || status == 0) fail("gnutls_x509_trust_list_verify_crt2 - 2: status: %x\n", status); /* check whether the key verification works */ - ret = - gnutls_x509_trust_list_add_trust_dir(tl, path, NULL, - GNUTLS_X509_FMT_PEM, 0, 0); + ret = gnutls_x509_trust_list_add_trust_dir(tl, path, NULL, + GNUTLS_X509_FMT_PEM, 0, 0); if (ret != 1) fail("gnutls_x509_trust_list_add_trust_dir: %d\n", ret); - ret = - gnutls_x509_trust_list_verify_crt(tl, &server_crt, 1, - GNUTLS_VERIFY_ALLOW_BROKEN, - &status, NULL); + ret = gnutls_x509_trust_list_verify_crt( + tl, &server_crt, 1, GNUTLS_VERIFY_ALLOW_BROKEN, &status, NULL); if (ret < 0 || status != 0) fail("gnutls_x509_trust_list_verify_crt\n"); /* test convenience functions in verify-high2.c */ data.data = cert_pem; data.size = strlen((char *)cert_pem); - ret = - gnutls_x509_trust_list_add_trust_mem(tl, &data, NULL, - GNUTLS_X509_FMT_PEM, 0, 0); + ret = gnutls_x509_trust_list_add_trust_mem(tl, &data, NULL, + GNUTLS_X509_FMT_PEM, 0, 0); if (ret < 1) fail("gnutls_x509_trust_list_add_trust_mem: %d (%s)\n", __LINE__, gnutls_strerror(ret)); - ret = - gnutls_x509_trust_list_remove_trust_mem(tl, &data, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_trust_list_remove_trust_mem(tl, &data, + GNUTLS_X509_FMT_PEM); if (ret < 1) fail("gnutls_x509_trust_list_add_trust_mem: %d (%s)\n", __LINE__, gnutls_strerror(ret)); data.data = cert_der; data.size = sizeof(cert_der); - ret = - gnutls_x509_trust_list_add_trust_mem(tl, &data, NULL, - GNUTLS_X509_FMT_DER, 0, 0); + ret = gnutls_x509_trust_list_add_trust_mem(tl, &data, NULL, + GNUTLS_X509_FMT_DER, 0, 0); if (ret < 1) fail("gnutls_x509_trust_list_add_trust_mem: %d (%s)\n", __LINE__, gnutls_strerror(ret)); - ret = - gnutls_x509_trust_list_remove_trust_mem(tl, &data, - GNUTLS_X509_FMT_DER); + ret = gnutls_x509_trust_list_remove_trust_mem(tl, &data, + GNUTLS_X509_FMT_DER); if (ret < 1) fail("gnutls_x509_trust_list_add_trust_mem: %d (%s)\n", __LINE__, gnutls_strerror(ret)); @@ -387,9 +370,8 @@ void doit(void) if (ret < 1) fail("gnutls_x509_trust_list_add_cas"); - ret = - gnutls_x509_trust_list_verify_crt(tl, &server_crt, 1, 0, - &status, NULL); + ret = gnutls_x509_trust_list_verify_crt(tl, &server_crt, 1, 0, &status, + NULL); if (ret == 0 && status == 0) fail("gnutls_x509_trust_list_verify_crt\n"); diff --git a/tests/x509cert.c b/tests/x509cert.c index 70fc2f34fa..bb13caa17e 100644 --- a/tests/x509cert.c +++ b/tests/x509cert.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -30,10 +30,10 @@ #include #include #if !defined(_WIN32) -# include -# include -# include -# include +#include +#include +#include +#include #endif #include #include @@ -69,8 +69,8 @@ void doit(void) gnutls_x509_privkey_t get_key; gnutls_x509_crt_t *get_crts; unsigned n_get_crts; - gnutls_datum_t get_datum, chain_datum[2] = - { server_ca3_cert, subca3_cert }; + gnutls_datum_t get_datum, + chain_datum[2] = { server_ca3_cert, subca3_cert }; gnutls_x509_trust_list_t trust_list; gnutls_x509_trust_list_iter_t trust_iter; gnutls_x509_crt_t get_ca_crt; @@ -97,31 +97,27 @@ void doit(void) /* check whether gnutls_x509_crt_list_import will fail if given a single * certificate */ list_size = LIST_SIZE; - ret = - gnutls_x509_crt_list_import(list, &list_size, &ca3_cert, - GNUTLS_X509_FMT_PEM, - GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED); + ret = gnutls_x509_crt_list_import( + list, &list_size, &ca3_cert, GNUTLS_X509_FMT_PEM, + GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED); if (ret < 0) fail("gnutls_x509_crt_list_import (failed with a single cert)"); gnutls_x509_crt_deinit(list[0]); list_size = LIST_SIZE; - ret = - gnutls_x509_crt_list_import(list, &list_size, &cli_ca3_cert_chain, - GNUTLS_X509_FMT_PEM, - GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED); + ret = gnutls_x509_crt_list_import( + list, &list_size, &cli_ca3_cert_chain, GNUTLS_X509_FMT_PEM, + GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED); if (ret < 0) fail("gnutls_x509_crt_list_import"); - ret = - gnutls_certificate_get_issuer(x509_cred, list[list_size - 1], - &issuer, 0); + ret = gnutls_certificate_get_issuer(x509_cred, list[list_size - 1], + &issuer, 0); if (ret < 0) fail("gnutls_certificate_get_isser"); - ret = - gnutls_certificate_get_issuer(x509_cred, list[list_size - 1], - &issuer, GNUTLS_TL_GET_COPY); + ret = gnutls_certificate_get_issuer(x509_cred, list[list_size - 1], + &issuer, GNUTLS_TL_GET_COPY); if (ret < 0) fail("gnutls_certificate_get_isser"); @@ -145,61 +141,56 @@ void doit(void) if (ret < 0) fail("gnutls_certificate_get_x509_key"); - ret = - gnutls_x509_privkey_export2(get_key, - GNUTLS_X509_FMT_PEM, &get_datum); + ret = gnutls_x509_privkey_export2(get_key, GNUTLS_X509_FMT_PEM, + &get_datum); if (ret < 0) fail("gnutls_x509_privkey_export2"); if (get_datum.size != server_ca3_key.size || memcmp(get_datum.data, server_ca3_key.data, get_datum.size) != 0) { fail("exported key %u vs. %u\n\n%s\n\nvs.\n\n%s", - get_datum.size, server_ca3_key.size, - get_datum.data, server_ca3_key.data); + get_datum.size, server_ca3_key.size, get_datum.data, + server_ca3_key.data); } if (strlen((char *)get_datum.data) != get_datum.size) { - fail("exported key %u vs. %u\n\n%s\n", - get_datum.size, (unsigned)strlen((char *)get_datum.data), - get_datum.data); + fail("exported key %u vs. %u\n\n%s\n", get_datum.size, + (unsigned)strlen((char *)get_datum.data), get_datum.data); } gnutls_free(get_datum.data); buf_size = sizeof(buf); - ret = - gnutls_x509_privkey_export(get_key, - GNUTLS_X509_FMT_PEM, buf, &buf_size); + ret = gnutls_x509_privkey_export(get_key, GNUTLS_X509_FMT_PEM, buf, + &buf_size); if (ret < 0) fail("gnutls_x509_privkey_export"); - if (buf_size != get_datum.size || - buf_size != strlen(buf) || + if (buf_size != get_datum.size || buf_size != strlen(buf) || memcmp(buf, server_ca3_key.data, buf_size) != 0) { - fail("exported key %u vs. %u\n\n%s\n\nvs.\n\n%s", - (int)buf_size, server_ca3_key.size, - buf, server_ca3_key.data); + fail("exported key %u vs. %u\n\n%s\n\nvs.\n\n%s", (int)buf_size, + server_ca3_key.size, buf, server_ca3_key.data); } - ret = - gnutls_certificate_get_x509_crt(x509_cred, 0, &get_crts, - &n_get_crts); + ret = gnutls_certificate_get_x509_crt(x509_cred, 0, &get_crts, + &n_get_crts); if (ret < 0) fail("gnutls_certificate_get_x509_crt"); if (n_get_crts != 2) fail("gnutls_certificate_get_x509_crt: n_crts != 2"); for (i = 0; i < n_get_crts; i++) { - ret = - gnutls_x509_crt_export2(get_crts[i], - GNUTLS_X509_FMT_PEM, &get_datum); + ret = gnutls_x509_crt_export2(get_crts[i], GNUTLS_X509_FMT_PEM, + &get_datum); if (ret < 0) fail("gnutls_x509_crt_export2"); if (get_datum.size != chain_datum[i].size || memcmp(get_datum.data, chain_datum[i].data, get_datum.size) != 0) { - fail("exported certificate %u vs. %u\n\n%s\n\nvs.\n\n%s", get_datum.size, chain_datum[i].size, get_datum.data, chain_datum[i].data); + fail("exported certificate %u vs. %u\n\n%s\n\nvs.\n\n%s", + get_datum.size, chain_datum[i].size, + get_datum.data, chain_datum[i].data); } gnutls_free(get_datum.data); @@ -209,20 +200,20 @@ void doit(void) n_get_ca_crts = 0; trust_iter = NULL; - while (gnutls_x509_trust_list_iter_get_ca(trust_list, - &trust_iter, + while (gnutls_x509_trust_list_iter_get_ca(trust_list, &trust_iter, &get_ca_crt) != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { - ret = - gnutls_x509_crt_export2(get_ca_crt, - GNUTLS_X509_FMT_PEM, &get_datum); + ret = gnutls_x509_crt_export2(get_ca_crt, GNUTLS_X509_FMT_PEM, + &get_datum); if (ret < 0) fail("gnutls_x509_crt_export2"); if (get_datum.size != ca3_cert.size || - memcmp(get_datum.data, ca3_cert.data, - get_datum.size) != 0) { - fail("exported CA certificate %u vs. %u\n\n%s\n\nvs.\n\n%s", get_datum.size, ca3_cert.size, get_datum.data, ca3_cert.data); + memcmp(get_datum.data, ca3_cert.data, get_datum.size) != + 0) { + fail("exported CA certificate %u vs. %u\n\n%s\n\nvs.\n\n%s", + get_datum.size, ca3_cert.size, get_datum.data, + ca3_cert.data); } gnutls_x509_crt_deinit(get_ca_crt); @@ -248,10 +239,9 @@ void doit(void) /* test for gnutls_certificate_set_x509_trust */ gnutls_certificate_allocate_credentials(&x509_cred); list_size = LIST_SIZE; - ret = - gnutls_x509_crt_list_import(list, &list_size, &ca3_cert, - GNUTLS_X509_FMT_PEM, - GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED); + ret = gnutls_x509_crt_list_import( + list, &list_size, &ca3_cert, GNUTLS_X509_FMT_PEM, + GNUTLS_X509_CRT_LIST_FAIL_IF_UNSORTED); if (ret < 0 || (unsigned int)ret != list_size) { fail("gnutls_x509_crt_list_import\n"); } @@ -262,16 +252,15 @@ void doit(void) } gnutls_certificate_get_trust_list(x509_cred, &trust_list); - ret = gnutls_x509_trust_list_iter_get_ca(trust_list, - &trust_iter, &get_ca_crt); + ret = gnutls_x509_trust_list_iter_get_ca(trust_list, &trust_iter, + &get_ca_crt); if (ret < 0) { fail("gnutls_x509_trust_list_iter_get_ca\n"); } gnutls_x509_trust_list_iter_deinit(trust_iter); - ret = - gnutls_x509_crt_export2(get_ca_crt, GNUTLS_X509_FMT_PEM, - &get_datum); + ret = gnutls_x509_crt_export2(get_ca_crt, GNUTLS_X509_FMT_PEM, + &get_datum); if (ret < 0) { fail("gnutls_x509_crt_export2\n"); } diff --git a/tests/x509dn.c b/tests/x509dn.c index cd2b9234a8..84191a978a 100644 --- a/tests/x509dn.c +++ b/tests/x509dn.c @@ -23,7 +23,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -40,22 +40,22 @@ int main(int argc, char **argv) #else -# include -# include -# include -# if !defined(_WIN32) -# include -# endif -# include -# include -# include -# include -# include +#include +#include +#include +#if !defined(_WIN32) +#include +#endif +#include +#include +#include +#include +#include -# include "utils.h" +#include "utils.h" -# include "ex-session-info.c" -# include "ex-x509-info.c" +#include "ex-session-info.c" +#include "ex-x509-info.c" pid_t child; @@ -65,23 +65,23 @@ static void tls_log_func(int level, const char *str) str); } -# define MAX_BUF 1024 -# define MSG "Hello TLS" +#define MAX_BUF 1024 +#define MSG "Hello TLS" -# define EXPECT_RDN0 "CA-3" +#define EXPECT_RDN0 "CA-3" -static int -cert_callback(gnutls_session_t session, - const gnutls_datum_t * req_ca_rdn, int nreqs, - const gnutls_pk_algorithm_t * sign_algos, - int sign_algos_length, gnutls_pcert_st ** pcert, - unsigned int *pcert_length, gnutls_privkey_t * pkey) +static int cert_callback(gnutls_session_t session, + const gnutls_datum_t *req_ca_rdn, int nreqs, + const gnutls_pk_algorithm_t *sign_algos, + int sign_algos_length, gnutls_pcert_st **pcert, + unsigned int *pcert_length, gnutls_privkey_t *pkey) { int result; gnutls_x509_dn_t dn; if (nreqs != 1) { - fail("client: invoked to provide client cert, but %d CAs are requested by server.\n", nreqs); + fail("client: invoked to provide client cert, but %d CAs are requested by server.\n", + nreqs); return -1; } @@ -105,9 +105,9 @@ cert_callback(gnutls_session_t session, if (debug) success("client: got RDN 0.\n"); - if (val.value.size == strlen(EXPECT_RDN0) - && strncmp((char *)val.value.data, - EXPECT_RDN0, val.value.size) == 0) { + if (val.value.size == strlen(EXPECT_RDN0) && + strncmp((char *)val.value.data, EXPECT_RDN0, + val.value.size) == 0) { if (debug) success("client: RND 0 correct.\n"); } else { @@ -182,8 +182,8 @@ static void client(int sd, const char *prio) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* see the Getting peer's information example */ if (debug) @@ -211,7 +211,7 @@ static void client(int sd, const char *prio) gnutls_bye(session, GNUTLS_SHUT_RDWR); - end: +end: close(sd); @@ -225,7 +225,7 @@ static void client(int sd, const char *prio) /* This is a sample TLS 1.0 echo server, using X.509 authentication. */ -# define MAX_BUF 1024 +#define MAX_BUF 1024 static void server(int sd, const char *prio) { @@ -279,8 +279,8 @@ static void server(int sd, const char *prio) if (debug) success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* see the Getting peer's information example */ if (debug) @@ -292,11 +292,11 @@ static void server(int sd, const char *prio) if (ret == 0) { if (debug) - success - ("server: Peer has closed the GnuTLS connection\n"); + success("server: Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0) { - fail("server: Received corrupted data(%d). Closing...\n", ret); + fail("server: Received corrupted data(%d). Closing...\n", + ret); break; } else if (ret > 0) { /* echo data back to the client @@ -319,8 +319,7 @@ static void server(int sd, const char *prio) success("server: finished\n"); } -static -void start(const char *prio) +static void start(const char *prio) { int sockets[2]; int err; @@ -364,4 +363,4 @@ void doit(void) start("NORMAL"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/x509self.c b/tests/x509self.c index 86219cd8d6..afc1975280 100644 --- a/tests/x509self.c +++ b/tests/x509self.c @@ -23,7 +23,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -41,19 +41,19 @@ int main(int argc, char **argv) #else -# include -# include -# include -# if !defined(_WIN32) -# include -# endif -# include -# include +#include +#include +#include +#if !defined(_WIN32) +#include +#endif +#include +#include -# include "utils.h" +#include "utils.h" -# include "ex-session-info.c" -# include "ex-x509-info.c" +#include "ex-session-info.c" +#include "ex-x509-info.c" pid_t child; @@ -63,8 +63,8 @@ static void tls_log_func(int level, const char *str) str); } -# define MAX_BUF 1024 -# define MSG "Hello TLS" +#define MAX_BUF 1024 +#define MSG "Hello TLS" static void client(int sd, const char *prio) { @@ -115,16 +115,15 @@ static void client(int sd, const char *prio) if (debug) success("client: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); /* see the Getting peer's information example */ if (debug) print_info(session); - ret = - gnutls_credentials_get(session, GNUTLS_CRD_CERTIFICATE, - (void **)&tst_cred); + ret = gnutls_credentials_get(session, GNUTLS_CRD_CERTIFICATE, + (void **)&tst_cred); if (ret < 0) { fail("client: gnutls_credentials_get failed: %s\n", gnutls_strerror(ret)); @@ -157,8 +156,7 @@ static void client(int sd, const char *prio) ret = gnutls_handshake(session); if (ret == 0) { if (debug) - success - ("client: handshake complete, reading again.\n"); + success("client: handshake complete, reading again.\n"); ret = gnutls_record_recv(session, buffer, MAX_BUF); } else { fail("client: handshake failed.\n"); @@ -184,7 +182,7 @@ static void client(int sd, const char *prio) gnutls_bye(session, GNUTLS_SHUT_RDWR); - end: +end: close(sd); @@ -198,8 +196,8 @@ static void client(int sd, const char *prio) /* This is a sample TLS 1.0 echo server, using X.509 authentication. */ -# define MAX_BUF 1024 -# define DH_BITS 1024 +#define MAX_BUF 1024 +#define DH_BITS 1024 static void server(int sd, const char *prio) { @@ -251,8 +249,8 @@ static void server(int sd, const char *prio) if (debug) { success("server: Handshake was completed\n"); success("server: TLS version is: %s\n", - gnutls_protocol_get_name - (gnutls_protocol_get_version(session))); + gnutls_protocol_get_name( + gnutls_protocol_get_version(session))); } /* see the Getting peer's information example */ @@ -267,19 +265,18 @@ static void server(int sd, const char *prio) if (ret == 0) { if (debug) - success - ("server: Peer has closed the GnuTLS connection\n"); + success("server: Peer has closed the GnuTLS connection\n"); break; } else if (ret < 0) { - fail("server: Received corrupted data(%s). Closing...\n", gnutls_strerror(ret)); + fail("server: Received corrupted data(%s). Closing...\n", + gnutls_strerror(ret)); break; } else if (ret > 0) { - gnutls_certificate_server_set_request(session, - GNUTLS_CERT_REQUEST); + gnutls_certificate_server_set_request( + session, GNUTLS_CERT_REQUEST); if (debug) - success - ("server: got data, forcing rehandshake.\n"); + success("server: got data, forcing rehandshake.\n"); ret = gnutls_rehandshake(session); if (ret < 0) { @@ -318,8 +315,7 @@ static void server(int sd, const char *prio) success("server: finished\n"); } -static -void start(const char *prio) +static void start(const char *prio) { int sockets[2]; int err; @@ -363,4 +359,4 @@ void doit(void) start("NORMAL"); } -#endif /* _WIN32 */ +#endif /* _WIN32 */ diff --git a/tests/x509sign-verify-common.h b/tests/x509sign-verify-common.h index fd1ee4de0c..e66ea7f891 100644 --- a/tests/x509sign-verify-common.h +++ b/tests/x509sign-verify-common.h @@ -1,5 +1,5 @@ #ifndef GNUTLS_TESTS_X509SIGN_VERIFY_COMMON_H -# define GNUTLS_TESTS_X509SIGN_VERIFY_COMMON_H +#define GNUTLS_TESTS_X509SIGN_VERIFY_COMMON_H static void tls_log_func(int level, const char *str) { @@ -8,62 +8,57 @@ static void tls_log_func(int level, const char *str) /* sha1 hash of "hello" string */ const gnutls_datum_t sha1_data = { - (void *) - "\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" - "\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", + (void *)"\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" + "\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", 20 }; /* sha1 hash of "hello" string */ const gnutls_datum_t sha256_data = { - (void *) - "\x2c\xf2\x4d\xba\x5f\xb0\xa3\x0e\x26\xe8" - "\x3b\x2a\xc5\xb9\xe2\x9e\x1b\x16\x1e\x5c" - "\x1f\xa7\x42\x5e\x73\x04\x33\x62\x93\x8b" "\x98\x24", + (void *)"\x2c\xf2\x4d\xba\x5f\xb0\xa3\x0e\x26\xe8" + "\x3b\x2a\xc5\xb9\xe2\x9e\x1b\x16\x1e\x5c" + "\x1f\xa7\x42\x5e\x73\x04\x33\x62\x93\x8b" + "\x98\x24", 32 }; /* gost r 34.11-94 hash of "hello" string */ const gnutls_datum_t gostr94_data = { - (void *) - "\x92\xea\x6d\xdb\xaf\x40\x02\x0d\xf3\x65" - "\x1f\x27\x8f\xd7\x15\x12\x17\xa2\x4a\xa8" - "\xd2\x2e\xbd\x25\x19\xcf\xd4\xd8\x9e\x64" "\x50\xea", + (void *)"\x92\xea\x6d\xdb\xaf\x40\x02\x0d\xf3\x65" + "\x1f\x27\x8f\xd7\x15\x12\x17\xa2\x4a\xa8" + "\xd2\x2e\xbd\x25\x19\xcf\xd4\xd8\x9e\x64" + "\x50\xea", 32 }; /* Streebog-256 hash of "hello" string */ const gnutls_datum_t streebog256_data = { - (void *) - "\x3f\xb0\x70\x0a\x41\xce\x6e\x41\x41\x3b" - "\xa7\x64\xf9\x8b\xf2\x13\x5b\xa6\xde\xd5" - "\x16\xbe\xa2\xfa\xe8\x42\x9c\xc5\xbd\xd4" "\x6d\x6d", + (void *)"\x3f\xb0\x70\x0a\x41\xce\x6e\x41\x41\x3b" + "\xa7\x64\xf9\x8b\xf2\x13\x5b\xa6\xde\xd5" + "\x16\xbe\xa2\xfa\xe8\x42\x9c\xc5\xbd\xd4" + "\x6d\x6d", 32 }; /* Streebog-512 hash of "hello" string */ const gnutls_datum_t streebog512_data = { - (void *) - "\x8d\xf4\x14\x26\x09\x66\xbe\xb7\xb3\x4d" - "\x92\x07\x63\x07\x9e\x15\xdf\x1f\x63\x29" - "\x7e\xb3\xdd\x43\x11\xe8\xb5\x85\xd4\xbf" - "\x2f\x59\x23\x21\x4f\x1d\xfe\xd3\xfd\xee" - "\x4a\xaf\x01\x83\x30\xa1\x2a\xcd\xe0\xef" - "\xcc\x33\x8e\xb5\x29\x22\xf3\xe5\x71\x21" "\x2d\x42\xc8\xde", + (void *)"\x8d\xf4\x14\x26\x09\x66\xbe\xb7\xb3\x4d" + "\x92\x07\x63\x07\x9e\x15\xdf\x1f\x63\x29" + "\x7e\xb3\xdd\x43\x11\xe8\xb5\x85\xd4\xbf" + "\x2f\x59\x23\x21\x4f\x1d\xfe\xd3\xfd\xee" + "\x4a\xaf\x01\x83\x30\xa1\x2a\xcd\xe0\xef" + "\xcc\x33\x8e\xb5\x29\x22\xf3\xe5\x71\x21" + "\x2d\x42\xc8\xde", 64 }; const gnutls_datum_t invalid_hash_data = { - (void *) - "\xaa\xf4\xc6\x1d\xdc\xca\xe8\xa2\xda\xbe" - "\xde\x0f\x3b\x48\x2c\xb9\xae\xa9\x43\x4d", + (void *)"\xaa\xf4\xc6\x1d\xdc\xca\xe8\xa2\xda\xbe" + "\xde\x0f\x3b\x48\x2c\xb9\xae\xa9\x43\x4d", 20 }; -const gnutls_datum_t raw_data = { - (void *)"hello", - 5 -}; +const gnutls_datum_t raw_data = { (void *)"hello", 5 }; static void print_keys(gnutls_privkey_t privkey, gnutls_pubkey_t pubkey) { @@ -91,9 +86,11 @@ static void print_keys(gnutls_privkey_t privkey, gnutls_pubkey_t pubkey) gnutls_x509_privkey_deinit(xkey); } -# define ERR fail("Failure at: %s (%s-%s) (iter: %d)\n", gnutls_sign_get_name(sign_algo), gnutls_pk_get_name(pk), gnutls_digest_get_name(hash), j); -static -void test_sig(gnutls_pk_algorithm_t pk, unsigned hash, unsigned bits) +#define ERR \ + fail("Failure at: %s (%s-%s) (iter: %d)\n", \ + gnutls_sign_get_name(sign_algo), gnutls_pk_get_name(pk), \ + gnutls_digest_get_name(hash), j); +static void test_sig(gnutls_pk_algorithm_t pk, unsigned hash, unsigned bits) { gnutls_pubkey_t pubkey; gnutls_privkey_t privkey; @@ -134,52 +131,44 @@ void test_sig(gnutls_pk_algorithm_t pk, unsigned hash, unsigned bits) if (ret < 0) ERR; - ret = - gnutls_privkey_sign_hash(privkey, hash, - 0, hash_data, &signature); + ret = gnutls_privkey_sign_hash(privkey, hash, 0, hash_data, + &signature); if (ret < 0) ERR; - ret = - gnutls_pubkey_import_privkey(pubkey, privkey, - GNUTLS_KEY_DIGITAL_SIGNATURE, - 0); + ret = gnutls_pubkey_import_privkey( + pubkey, privkey, GNUTLS_KEY_DIGITAL_SIGNATURE, 0); if (ret < 0) ERR; - ret = - gnutls_pubkey_verify_hash2(pubkey, - sign_algo, vflags, - hash_data, &signature); + ret = gnutls_pubkey_verify_hash2(pubkey, sign_algo, vflags, + hash_data, &signature); if (ret < 0) { print_keys(privkey, pubkey); ERR; } /* should fail */ - ret = - gnutls_pubkey_verify_hash2(pubkey, - sign_algo, vflags, - &invalid_hash_data, &signature); + ret = gnutls_pubkey_verify_hash2(pubkey, sign_algo, vflags, + &invalid_hash_data, + &signature); if (ret != GNUTLS_E_PK_SIG_VERIFY_FAILED) { print_keys(privkey, pubkey); ERR; } - sign_algo = - gnutls_pk_to_sign(gnutls_pubkey_get_pk_algorithm - (pubkey, NULL), hash); + sign_algo = gnutls_pk_to_sign( + gnutls_pubkey_get_pk_algorithm(pubkey, NULL), hash); - ret = - gnutls_pubkey_verify_hash2(pubkey, sign_algo, vflags, - hash_data, &signature); + ret = gnutls_pubkey_verify_hash2(pubkey, sign_algo, vflags, + hash_data, &signature); if (ret < 0) ERR; /* should fail */ - ret = - gnutls_pubkey_verify_hash2(pubkey, sign_algo, vflags, - &invalid_hash_data, &signature); + ret = gnutls_pubkey_verify_hash2(pubkey, sign_algo, vflags, + &invalid_hash_data, + &signature); if (ret != GNUTLS_E_PK_SIG_VERIFY_FAILED) { print_keys(privkey, pubkey); ERR; @@ -190,30 +179,25 @@ void test_sig(gnutls_pk_algorithm_t pk, unsigned hash, unsigned bits) signature.data = NULL; if (pk == GNUTLS_PK_RSA) { - ret = - gnutls_privkey_sign_hash(privkey, - hash, - GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, - hash_data, &signature); + ret = gnutls_privkey_sign_hash( + privkey, hash, + GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA, hash_data, + &signature); if (ret < 0) ERR; - sign_algo = - gnutls_pk_to_sign - (gnutls_pubkey_get_pk_algorithm - (pubkey, NULL), hash); - - ret = - gnutls_pubkey_verify_hash2(pubkey, - sign_algo, - vflags | - GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA, - hash_data, &signature); + sign_algo = gnutls_pk_to_sign( + gnutls_pubkey_get_pk_algorithm(pubkey, NULL), + hash); + + ret = gnutls_pubkey_verify_hash2( + pubkey, sign_algo, + vflags | GNUTLS_PUBKEY_VERIFY_FLAG_TLS1_RSA, + hash_data, &signature); if (ret < 0) { print_keys(privkey, pubkey); ERR; } - } gnutls_free(signature.data); gnutls_privkey_deinit(privkey); @@ -221,4 +205,4 @@ void test_sig(gnutls_pk_algorithm_t pk, unsigned hash, unsigned bits) } } -#endif /* GNUTLS_TESTS_X509SIGN_VERIFY_COMMON_H */ +#endif /* GNUTLS_TESTS_X509SIGN_VERIFY_COMMON_H */ diff --git a/tests/x509sign-verify-ecdsa.c b/tests/x509sign-verify-ecdsa.c index ad63d6513c..f943b64829 100644 --- a/tests/x509sign-verify-ecdsa.c +++ b/tests/x509sign-verify-ecdsa.c @@ -22,18 +22,18 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include #include #include #ifndef _WIN32 -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include #endif #include #include diff --git a/tests/x509sign-verify-error.c b/tests/x509sign-verify-error.c index 6046e44711..db8c931ed5 100644 --- a/tests/x509sign-verify-error.c +++ b/tests/x509sign-verify-error.c @@ -22,7 +22,7 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -47,102 +47,94 @@ static void tls_log_func(int level, const char *str) /* sha1 hash of "hello" string */ const gnutls_datum_t hash_data = { - (void *) - "\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" - "\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", + (void *)"\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" + "\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", 20 }; const gnutls_datum_t invalid_hash_data = { - (void *) - "\xaa\xf4\xc6\x1d\xdc\xca\xe8\xa2\xda\xbe" - "\xde\x0f\x3b\x48\x2c\xb9\xae\xa9\x43\x4d", + (void *)"\xaa\xf4\xc6\x1d\xdc\xca\xe8\xa2\xda\xbe" + "\xde\x0f\x3b\x48\x2c\xb9\xae\xa9\x43\x4d", 20 }; -const gnutls_datum_t raw_data = { - (void *)"hello", - 5 -}; +const gnutls_datum_t raw_data = { (void *)"hello", 5 }; static char pem1_cert[] = - "-----BEGIN CERTIFICATE-----\n" - "MIICHjCCAYmgAwIBAgIERiYdNzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTI3WhcNMDgwNDE3MTMyOTI3WjAdMRsw\n" - "GQYDVQQDExJHbnVUTFMgdGVzdCBjbGllbnQwgZwwCwYJKoZIhvcNAQEBA4GMADCB\n" - "iAKBgLtmQ/Xyxde2jMzF3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeL\n" - "ZIkiW8DdU3w77XwEu4C5KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKN\n" - "zj2AC41179gAgY8oBAOgIo1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjdjB0MAwG\n" - "A1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUDAweg\n" - "ADAdBgNVHQ4EFgQUTLkKm/odNON+3svSBxX+odrLaJEwHwYDVR0jBBgwFoAU6Twc\n" - "+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBALujmBJVZnvaTXr9cFRJ\n" - "jpfc/3X7sLUsMvumcDE01ls/cG5mIatmiyEU9qI3jbgUf82z23ON/acwJf875D3/\n" - "U7jyOsBJ44SEQITbin2yUeJMIm1tievvdNXBDfW95AM507ShzP12sfiJkJfjjdhy\n" - "dc8Siq5JojruiMizAf0pA7in\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIICHjCCAYmgAwIBAgIERiYdNzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTI3WhcNMDgwNDE3MTMyOTI3WjAdMRsw\n" + "GQYDVQQDExJHbnVUTFMgdGVzdCBjbGllbnQwgZwwCwYJKoZIhvcNAQEBA4GMADCB\n" + "iAKBgLtmQ/Xyxde2jMzF3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeL\n" + "ZIkiW8DdU3w77XwEu4C5KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKN\n" + "zj2AC41179gAgY8oBAOgIo1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjdjB0MAwG\n" + "A1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUDAweg\n" + "ADAdBgNVHQ4EFgQUTLkKm/odNON+3svSBxX+odrLaJEwHwYDVR0jBBgwFoAU6Twc\n" + "+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBALujmBJVZnvaTXr9cFRJ\n" + "jpfc/3X7sLUsMvumcDE01ls/cG5mIatmiyEU9qI3jbgUf82z23ON/acwJf875D3/\n" + "U7jyOsBJ44SEQITbin2yUeJMIm1tievvdNXBDfW95AM507ShzP12sfiJkJfjjdhy\n" + "dc8Siq5JojruiMizAf0pA7in\n" + "-----END CERTIFICATE-----\n"; static char pem1_key[] = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" - "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" - "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" - "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" - "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" - "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" - "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" - "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" - "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" - "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" - "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" - "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" - "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" - "-----END RSA PRIVATE KEY-----\n"; + "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8\n" + "9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN\n" + "aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB\n" + "AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF\n" + "PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF\n" + "RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy\n" + "7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK\n" + "ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9\n" + "TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD\n" + "ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ\n" + "YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX\n" + "/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv\n" + "sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=\n" + "-----END RSA PRIVATE KEY-----\n"; static char pem2_cert[] = - "-----BEGIN CERTIFICATE-----\n" - "MIIDbzCCAtqgAwIBAgIERiYdRTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" - "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTQxWhcNMDgwNDE3MTMyOTQxWjA3MRsw\n" - "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" - "Lm9yZzCCAbQwggEpBgcqhkjOOAQBMIIBHAKBgLmE9VqBvhoNxYpzjwybL5u2DkvD\n" - "dBp/ZK2d8yjFoEe8m1dW8ZfVfjcD6fJM9OOLfzCjXS+7oaI3wuo1jx+xX6aiXwHx\n" - "IzYr5E8vLd2d1TqmOa96UXzSJY6XdM8exXtLdkOBBx8GFLhuWBLhkOI3b9Ib7GjF\n" - "WOLmMOBqXixjeOwHAhSfVoxIZC/+jap6bZbbBF0W7wilcQKBgGIGfuRcdgi3Rhpd\n" - "15fUKiH7HzHJ0vT6Odgn0Zv8J12nCqca/FPBL0PCN8iFfz1Mq12BMvsdXh5UERYg\n" - "xoBa2YybQ/Dda6D0w/KKnDnSHHsP7/ook4/SoSLr3OCKi60oDs/vCYXpNr2LelDV\n" - "e/clDWxgEcTvcJDP1hvru47GPjqXA4GEAAKBgA+Kh1fy0cLcrN9Liw+Luin34QPk\n" - "VfqymAfW/RKxgLz1urRQ1H+gDkPnn8l4EV/l5Awsa2qkNdy9VOVgNpox0YpZbmsc\n" - "ur0uuut8h+/ayN2h66SD5out+vqOW9c3yDI+lsI+9EPafZECD7e8+O+P90EAXpbf\n" - "DwiW3Oqy6QaCr9Ivo4GTMIGQMAwGA1UdEwEB/wQCMAAwGgYDVR0RBBMwEYIPdGVz\n" - "dC5nbnV0bHMub3JnMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA8GA1UdDwEB/wQFAwMH\n" - "gAAwHQYDVR0OBBYEFL/su87Y6HtwVuzz0SuS1tSZClvzMB8GA1UdIwQYMBaAFOk8\n" - "HPutkm7mBqRWLKLhwFMnyPKVMAsGCSqGSIb3DQEBBQOBgQBCsrnfD1xzh8/Eih1f\n" - "x+M0lPoX1Re5L2ElHI6DJpHYOBPwf9glwxnet2+avzgUQDUFwUSxOhodpyeaACXD\n" - "o0gGVpcH8sOBTQ+aTdM37hGkPxoXjtIkR/LgG5nP2H2JRd5TkW8l13JdM4MJFB4W\n" - "QcDzQ8REwidsfh9uKAluk1c/KQ==\n" "-----END CERTIFICATE-----\n"; + "-----BEGIN CERTIFICATE-----\n" + "MIIDbzCCAtqgAwIBAgIERiYdRTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" + "VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTQxWhcNMDgwNDE3MTMyOTQxWjA3MRsw\n" + "GQYDVQQKExJHbnVUTFMgdGVzdCBzZXJ2ZXIxGDAWBgNVBAMTD3Rlc3QuZ251dGxz\n" + "Lm9yZzCCAbQwggEpBgcqhkjOOAQBMIIBHAKBgLmE9VqBvhoNxYpzjwybL5u2DkvD\n" + "dBp/ZK2d8yjFoEe8m1dW8ZfVfjcD6fJM9OOLfzCjXS+7oaI3wuo1jx+xX6aiXwHx\n" + "IzYr5E8vLd2d1TqmOa96UXzSJY6XdM8exXtLdkOBBx8GFLhuWBLhkOI3b9Ib7GjF\n" + "WOLmMOBqXixjeOwHAhSfVoxIZC/+jap6bZbbBF0W7wilcQKBgGIGfuRcdgi3Rhpd\n" + "15fUKiH7HzHJ0vT6Odgn0Zv8J12nCqca/FPBL0PCN8iFfz1Mq12BMvsdXh5UERYg\n" + "xoBa2YybQ/Dda6D0w/KKnDnSHHsP7/ook4/SoSLr3OCKi60oDs/vCYXpNr2LelDV\n" + "e/clDWxgEcTvcJDP1hvru47GPjqXA4GEAAKBgA+Kh1fy0cLcrN9Liw+Luin34QPk\n" + "VfqymAfW/RKxgLz1urRQ1H+gDkPnn8l4EV/l5Awsa2qkNdy9VOVgNpox0YpZbmsc\n" + "ur0uuut8h+/ayN2h66SD5out+vqOW9c3yDI+lsI+9EPafZECD7e8+O+P90EAXpbf\n" + "DwiW3Oqy6QaCr9Ivo4GTMIGQMAwGA1UdEwEB/wQCMAAwGgYDVR0RBBMwEYIPdGVz\n" + "dC5nbnV0bHMub3JnMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA8GA1UdDwEB/wQFAwMH\n" + "gAAwHQYDVR0OBBYEFL/su87Y6HtwVuzz0SuS1tSZClvzMB8GA1UdIwQYMBaAFOk8\n" + "HPutkm7mBqRWLKLhwFMnyPKVMAsGCSqGSIb3DQEBBQOBgQBCsrnfD1xzh8/Eih1f\n" + "x+M0lPoX1Re5L2ElHI6DJpHYOBPwf9glwxnet2+avzgUQDUFwUSxOhodpyeaACXD\n" + "o0gGVpcH8sOBTQ+aTdM37hGkPxoXjtIkR/LgG5nP2H2JRd5TkW8l13JdM4MJFB4W\n" + "QcDzQ8REwidsfh9uKAluk1c/KQ==\n" + "-----END CERTIFICATE-----\n"; static char pem2_key[] = - "-----BEGIN DSA PRIVATE KEY-----\n" - "MIIBugIBAAKBgQC5hPVagb4aDcWKc48Mmy+btg5Lw3Qaf2StnfMoxaBHvJtXVvGX\n" - "1X43A+nyTPTji38wo10vu6GiN8LqNY8fsV+mol8B8SM2K+RPLy3dndU6pjmvelF8\n" - "0iWOl3TPHsV7S3ZDgQcfBhS4blgS4ZDiN2/SG+xoxVji5jDgal4sY3jsBwIVAJ9W\n" - "jEhkL/6NqnptltsEXRbvCKVxAoGAYgZ+5Fx2CLdGGl3Xl9QqIfsfMcnS9Po52CfR\n" - "m/wnXacKpxr8U8EvQ8I3yIV/PUyrXYEy+x1eHlQRFiDGgFrZjJtD8N1roPTD8oqc\n" - "OdIcew/v+iiTj9KhIuvc4IqLrSgOz+8Jhek2vYt6UNV79yUNbGARxO9wkM/WG+u7\n" - "jsY+OpcCgYAPiodX8tHC3KzfS4sPi7op9+ED5FX6spgH1v0SsYC89bq0UNR/oA5D\n" - "55/JeBFf5eQMLGtqpDXcvVTlYDaaMdGKWW5rHLq9LrrrfIfv2sjdoeukg+aLrfr6\n" - "jlvXN8gyPpbCPvRD2n2RAg+3vPjvj/dBAF6W3w8IltzqsukGgq/SLwIUS5/r/2ya\n" - "AoNBXjeBjgCGMei2m8E=\n" "-----END DSA PRIVATE KEY-----\n"; - -const gnutls_datum_t cert_dat[] = { - {(void *)pem1_cert, sizeof(pem1_cert)} - , - {(void *)pem2_cert, sizeof(pem2_cert)} -}; - -const gnutls_datum_t key_dat[] = { - {(void *)pem1_key, sizeof(pem1_key)} - , - {(void *)pem2_key, sizeof(pem2_key)} -}; + "-----BEGIN DSA PRIVATE KEY-----\n" + "MIIBugIBAAKBgQC5hPVagb4aDcWKc48Mmy+btg5Lw3Qaf2StnfMoxaBHvJtXVvGX\n" + "1X43A+nyTPTji38wo10vu6GiN8LqNY8fsV+mol8B8SM2K+RPLy3dndU6pjmvelF8\n" + "0iWOl3TPHsV7S3ZDgQcfBhS4blgS4ZDiN2/SG+xoxVji5jDgal4sY3jsBwIVAJ9W\n" + "jEhkL/6NqnptltsEXRbvCKVxAoGAYgZ+5Fx2CLdGGl3Xl9QqIfsfMcnS9Po52CfR\n" + "m/wnXacKpxr8U8EvQ8I3yIV/PUyrXYEy+x1eHlQRFiDGgFrZjJtD8N1roPTD8oqc\n" + "OdIcew/v+iiTj9KhIuvc4IqLrSgOz+8Jhek2vYt6UNV79yUNbGARxO9wkM/WG+u7\n" + "jsY+OpcCgYAPiodX8tHC3KzfS4sPi7op9+ED5FX6spgH1v0SsYC89bq0UNR/oA5D\n" + "55/JeBFf5eQMLGtqpDXcvVTlYDaaMdGKWW5rHLq9LrrrfIfv2sjdoeukg+aLrfr6\n" + "jlvXN8gyPpbCPvRD2n2RAg+3vPjvj/dBAF6W3w8IltzqsukGgq/SLwIUS5/r/2ya\n" + "AoNBXjeBjgCGMei2m8E=\n" + "-----END DSA PRIVATE KEY-----\n"; + +const gnutls_datum_t cert_dat[] = { { (void *)pem1_cert, sizeof(pem1_cert) }, + { (void *)pem2_cert, sizeof(pem2_cert) } }; + +const gnutls_datum_t key_dat[] = { { (void *)pem1_key, sizeof(pem1_key) }, + { (void *)pem2_key, sizeof(pem2_key) } }; void _gnutls_lib_simulate_error(void); void _gnutls_lib_force_operational(void); @@ -168,10 +160,8 @@ void doit(void) if (ret < 0) fail("gnutls_privkey_init\n"); - ret = - gnutls_privkey_import_x509_raw(privkey, &key_dat[i], - GNUTLS_X509_FMT_PEM, NULL, - 0); + ret = gnutls_privkey_import_x509_raw( + privkey, &key_dat[i], GNUTLS_X509_FMT_PEM, NULL, 0); if (ret < 0) fail("gnutls_privkey_import\n"); diff --git a/tests/x509sign-verify-gost.c b/tests/x509sign-verify-gost.c index 2cb5ebd03e..d01dec27d3 100644 --- a/tests/x509sign-verify-gost.c +++ b/tests/x509sign-verify-gost.c @@ -23,18 +23,18 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include #include #include #ifndef _WIN32 -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include #endif #include #include diff --git a/tests/x509sign-verify-rsa.c b/tests/x509sign-verify-rsa.c index 4d3d4ce433..200c827eef 100644 --- a/tests/x509sign-verify-rsa.c +++ b/tests/x509sign-verify-rsa.c @@ -22,18 +22,18 @@ /* Parts copied from GnuTLS example programs. */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include #include #include #ifndef _WIN32 -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include #endif #include #include @@ -52,8 +52,8 @@ void doit(void) gnutls_global_set_log_level(6); if (gnutls_fips140_mode_enabled()) { - rsa_size1 = 2048; /* minimum allowed */ - rsa_size2 = 2048; /* minimum allowed */ + rsa_size1 = 2048; /* minimum allowed */ + rsa_size2 = 2048; /* minimum allowed */ } else { rsa_size1 = 512; rsa_size2 = 1024; diff --git a/tests/x509sign-verify.c b/tests/x509sign-verify.c index 8e84fb004d..5da019b262 100644 --- a/tests/x509sign-verify.c +++ b/tests/x509sign-verify.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -28,9 +28,9 @@ #include #include #ifndef _WIN32 -# include -# include -# include +#include +#include +#include #endif #include #include @@ -49,22 +49,19 @@ static void tls_log_func(int level, const char *str) /* sha1 hash of "hello" string */ const gnutls_datum_t raw_data = { - (void *) - "\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" - "\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", + (void *)"\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" + "\xde\x0f\x3b\x48\x2c\xd9\xae\xa9\x43\x4d", 20 }; const gnutls_datum_t invalid_raw_data = { - (void *) - "\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" - "\xde\x0f\x3b\x48\x3c\xd9\xae\xa9\x43\x4d", + (void *)"\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe" + "\xde\x0f\x3b\x48\x3c\xd9\xae\xa9\x43\x4d", 20 }; #define tests common_key_tests -#define testfail(fmt, ...) \ - fail("%s: "fmt, tests[i].name, ##__VA_ARGS__) +#define testfail(fmt, ...) fail("%s: " fmt, tests[i].name, ##__VA_ARGS__) void doit(void) { @@ -84,8 +81,8 @@ void doit(void) gnutls_global_set_log_level(6); for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++) { - if (tests[i].pk == GNUTLS_PK_DSA - || tests[i].pk == GNUTLS_PK_EDDSA_ED25519) + if (tests[i].pk == GNUTLS_PK_DSA || + tests[i].pk == GNUTLS_PK_EDDSA_ED25519) continue; success("testing: %s - %s\n", tests[i].name, @@ -95,18 +92,16 @@ void doit(void) if (ret < 0) testfail("gnutls_pubkey_init\n"); - ret = - gnutls_x509_privkey_import(privkey, &tests[i].key, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_privkey_import(privkey, &tests[i].key, + GNUTLS_X509_FMT_PEM); if (ret < 0) testfail("gnutls_privkey_import_x509\n"); signature_size = sizeof(signature_data); - ret = - gnutls_x509_privkey_sign_data(privkey, tests[i].digest, - tests[i].sign_flags, - &raw_data, signature_data, - &signature_size); + ret = gnutls_x509_privkey_sign_data(privkey, tests[i].digest, + tests[i].sign_flags, + &raw_data, signature_data, + &signature_size); if (ret < 0) testfail("gnutls_x509_privkey_sign_data\n"); @@ -114,46 +109,42 @@ void doit(void) if (ret < 0) testfail("gnutls_x509_crt_init\n"); - ret = - gnutls_x509_crt_import(crt, &tests[i].cert, - GNUTLS_X509_FMT_PEM); + ret = gnutls_x509_crt_import(crt, &tests[i].cert, + GNUTLS_X509_FMT_PEM); if (ret < 0) testfail("gnutls_x509_crt_import\n"); signature.data = (unsigned char *)signature_data; signature.size = signature_size; - ret = - gnutls_x509_crt_verify_data2(crt, tests[i].sigalgo, 0, - &raw_data, &signature); + ret = gnutls_x509_crt_verify_data2(crt, tests[i].sigalgo, 0, + &raw_data, &signature); if (ret < 0) testfail("gnutls_x509_crt_verify_data2\n"); /* should fail */ - ret = - gnutls_x509_crt_verify_data2(crt, tests[i].sigalgo, 0, - &invalid_raw_data, &signature); + ret = gnutls_x509_crt_verify_data2(crt, tests[i].sigalgo, 0, + &invalid_raw_data, + &signature); if (ret != GNUTLS_E_PK_SIG_VERIFY_FAILED) - testfail - ("gnutls_x509_crt_verify_data2-2 (hashed data)\n"); - - sign_algo = - gnutls_pk_to_sign(gnutls_x509_crt_get_pk_algorithm - (crt, NULL), tests[i].digest); - ret = - gnutls_x509_crt_verify_data2(crt, sign_algo, 0, - &raw_data, &signature); + testfail( + "gnutls_x509_crt_verify_data2-2 (hashed data)\n"); + + sign_algo = gnutls_pk_to_sign( + gnutls_x509_crt_get_pk_algorithm(crt, NULL), + tests[i].digest); + ret = gnutls_x509_crt_verify_data2(crt, sign_algo, 0, &raw_data, + &signature); if (ret < 0) - testfail - ("gnutls_x509_crt_verify_data2-1 (hashed data)\n"); + testfail( + "gnutls_x509_crt_verify_data2-1 (hashed data)\n"); /* should fail */ - ret = - gnutls_x509_crt_verify_data2(crt, sign_algo, 0, - &invalid_raw_data, &signature); + ret = gnutls_x509_crt_verify_data2( + crt, sign_algo, 0, &invalid_raw_data, &signature); if (ret != GNUTLS_E_PK_SIG_VERIFY_FAILED) - testfail - ("gnutls_x509_crt_verify_data2-2 (hashed data)\n"); + testfail( + "gnutls_x509_crt_verify_data2-2 (hashed data)\n"); gnutls_x509_crt_deinit(crt); gnutls_x509_privkey_deinit(privkey); diff --git a/tests/xts-key-check.c b/tests/xts-key-check.c index 5d510d2937..5ea8076137 100644 --- a/tests/xts-key-check.c +++ b/tests/xts-key-check.c @@ -20,7 +20,7 @@ */ #ifdef HAVE_CONFIG_H -# include +#include #endif #include @@ -65,7 +65,8 @@ static void test_xts_check(gnutls_cipher_algorithm_t alg) gnutls_cipher_deinit(ctx); else fail("cipher initialization should succeed with key1 != key2" - "\n%s\n", gnutls_strerror(ret)); + "\n%s\n", + gnutls_strerror(ret)); } void doit(void)